ZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vMDAtSU5ERVggYi9Eb2N1bWVudGF0aW9uLzAwLUlOREVYCmluZGV4IDA0MjA3M2YuLmU4ZmIyNDYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vMDAtSU5ERVgKKysrIGIvRG9jdW1lbnRhdGlvbi8wMC1JTkRFWApAQCAtMjI1LDggKzIyNSw2IEBACiAJLSBkb2N1bWVudHMgdGhlIGtlcm5lbCBwcm9iZXMgZGVidWdnaW5nIGZlYXR1cmUuCiBrcmVmLnR4dAogCS0gZG9jcyBvbiBhZGRpbmcgcmVmZXJlbmNlIGNvdW50ZXJzIChrcmVmcykgdG8ga2VybmVsIG9iamVjdHMuCi1sYXB0b3AtbW9kZS50eHQKLQktIGhvdyB0byBjb25zZXJ2ZSBiYXR0ZXJ5IHBvd2VyIHVzaW5nIGxhcHRvcC1tb2RlLgogbGFwdG9wcy8KIAktIGRpcmVjdG9yeSB3aXRoIGxhcHRvcCByZWxhdGVkIGluZm8gYW5kIGxhcHRvcCBkcml2ZXIgZG9jdW1lbnRhdGlvbi4KIGxkbS50eHQKQEAgLTI3Myw4ICsyNzEsNiBAQAogCS0gZGlyZWN0b3J5IHdpdGggaW5mb3JtYXRpb24gb24gdGhlIE5ldExhYmVsIHN1YnN5c3RlbS4KIG5ldHdvcmtpbmcvCiAJLSBkaXJlY3Rvcnkgd2l0aCBpbmZvIG9uIHZhcmlvdXMgYXNwZWN0cyBvZiBuZXR3b3JraW5nIHdpdGggTGludXguCi1uZnNyb290LnR4dAotCS0gc2hvcnQgZ3VpZGUgb24gc2V0dGluZyB1cCBhIGRpc2tsZXNzIGJveCB3aXRoIE5GUyByb290IGZpbGVzeXN0ZW0uCiBubWlfd2F0Y2hkb2cudHh0CiAJLSBpbmZvIG9uIE5NSSB3YXRjaGRvZyBmb3IgU01QIHN5c3RlbXMuCiBub21tdS1tbWFwLnR4dApAQCAtMzAxLDEyICsyOTcsOCBAQAogCS0gaW5mbyBvbiB0aGUgTGludXggUENNQ0lBIGRyaXZlci4KIHBpLWZ1dGV4LnR4dAogCS0gZG9jdW1lbnRhdGlvbiBvbiBsaWdodHdlaWdodCBQSS1mdXRleGVzLgotcG0udHh0Ci0JLSBpbmZvIG9uIExpbnV4IHBvd2VyIG1hbmFnZW1lbnQgc3VwcG9ydC4KIHBucC50eHQKIAktIExpbnV4IFBsdWcgYW5kIFBsYXkgZG9jdW1lbnRhdGlvbi4KLXBvd2VyX3N1cHBseV9jbGFzcy50eHQKLQktIFRlbGxzIHVzZXJzcGFjZSBhYm91dCBiYXR0ZXJ5LCBVUFMsIEFDIG9yIERDIHBvd2VyIHN1cHBseSBwcm9wZXJ0aWVzCiBwb3dlci8KIAktIGRpcmVjdG9yeSB3aXRoIGluZm8gb24gTGludXggUENJIHBvd2VyIG1hbmFnZW1lbnQuCiBwb3dlcnBjLwpAQCAtMzI3LDggKzMxOSw2IEBACiAJLSBhIGRlc2NyaXB0aW9uIG9mIHdoYXQgcm9idXN0IGZ1dGV4ZXMgYXJlLgogcm9ja2V0LnR4dAogCS0gaW5mbyBvbiB0aGUgQ29tdHJvbCBSb2NrZXRQb3J0IG11bHRpcG9ydCBzZXJpYWwgZHJpdmVyLgotcnBjLWNhY2hlLnR4dAotCS0gaW50cm9kdWN0aW9uIHRvIHRoZSBjYWNoaW5nIG1lY2hhbmlzbXMgaW4gdGhlIHN1bnJwYyBsYXllci4KIHJ0LW11dGV4LWRlc2lnbi50eHQKIAktIGRlc2NyaXB0aW9uIG9mIHRoZSBSZWFsVGltZSBtdXRleCBpbXBsZW1lbnRhdGlvbiBkZXNpZ24uCiBydC1tdXRleC50eHQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vU3VibWl0dGluZ1BhdGNoZXMgYi9Eb2N1bWVudGF0aW9uL1N1Ym1pdHRpbmdQYXRjaGVzCmluZGV4IDA4YTFlZDEuLjFmYzRlNzEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vU3VibWl0dGluZ1BhdGNoZXMKKysrIGIvRG9jdW1lbnRhdGlvbi9TdWJtaXR0aW5nUGF0Y2hlcwpAQCAtMzI4LDcgKzMyOCw3IEBACiBwb2ludCBvdXQgc29tZSBzcGVjaWFsIGRldGFpbCBhYm91dCB0aGUgc2lnbi1vZmYuIAogCiAKLTEzKSBXaGVuIHRvIHVzZSBBY2tlZC1ieToKKzEzKSBXaGVuIHRvIHVzZSBBY2tlZC1ieTogYW5kIENjOgogCiBUaGUgU2lnbmVkLW9mZi1ieTogdGFnIGluZGljYXRlcyB0aGF0IHRoZSBzaWduZXIgd2FzIGludm9sdmVkIGluIHRoZQogZGV2ZWxvcG1lbnQgb2YgdGhlIHBhdGNoLCBvciB0aGF0IGhlL3NoZSB3YXMgaW4gdGhlIHBhdGNoJ3MgZGVsaXZlcnkgcGF0aC4KQEAgLTM0OSwxMSArMzQ5LDU5IEBACiBGb3IgZXhhbXBsZSwgaWYgYSBwYXRjaCBhZmZlY3RzIG11bHRpcGxlIHN1YnN5c3RlbXMgYW5kIGhhcyBhbiBBY2tlZC1ieTogZnJvbQogb25lIHN1YnN5c3RlbSBtYWludGFpbmVyIHRoZW4gdGhpcyB1c3VhbGx5IGluZGljYXRlcyBhY2tub3dsZWRnZW1lbnQgb2YganVzdAogdGhlIHBhcnQgd2hpY2ggYWZmZWN0cyB0aGF0IG1haW50YWluZXIncyBjb2RlLiAgSnVkZ2VtZW50IHNob3VsZCBiZSB1c2VkIGhlcmUuCi0gV2hlbiBpbiBkb3VidCBwZW9wbGUgc2hvdWxkIHJlZmVyIHRvIHRoZSBvcmlnaW5hbCBkaXNjdXNzaW9uIGluIHRoZSBtYWlsaW5nCitXaGVuIGluIGRvdWJ0IHBlb3BsZSBzaG91bGQgcmVmZXIgdG8gdGhlIG9yaWdpbmFsIGRpc2N1c3Npb24gaW4gdGhlIG1haWxpbmcKIGxpc3QgYXJjaGl2ZXMuCiAKK0lmIGEgcGVyc29uIGhhcyBoYWQgdGhlIG9wcG9ydHVuaXR5IHRvIGNvbW1lbnQgb24gYSBwYXRjaCwgYnV0IGhhcyBub3QKK3Byb3ZpZGVkIHN1Y2ggY29tbWVudHMsIHlvdSBtYXkgb3B0aW9uYWxseSBhZGQgYSAiQ2M6IiB0YWcgdG8gdGhlIHBhdGNoLgorVGhpcyBpcyB0aGUgb25seSB0YWcgd2hpY2ggbWlnaHQgYmUgYWRkZWQgd2l0aG91dCBhbiBleHBsaWNpdCBhY3Rpb24gYnkgdGhlCitwZXJzb24gaXQgbmFtZXMuICBUaGlzIHRhZyBkb2N1bWVudHMgdGhhdCBwb3RlbnRpYWxseSBpbnRlcmVzdGVkIHBhcnRpZXMKK2hhdmUgYmVlbiBpbmNsdWRlZCBpbiB0aGUgZGlzY3Vzc2lvbgogCi0xNCkgVGhlIGNhbm9uaWNhbCBwYXRjaCBmb3JtYXQKKworMTQpIFVzaW5nIFRlc3QtYnk6IGFuZCBSZXZpZXdlZC1ieToKKworQSBUZXN0ZWQtYnk6IHRhZyBpbmRpY2F0ZXMgdGhhdCB0aGUgcGF0Y2ggaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IHRlc3RlZCAoaW4KK3NvbWUgZW52aXJvbm1lbnQpIGJ5IHRoZSBwZXJzb24gbmFtZWQuICBUaGlzIHRhZyBpbmZvcm1zIG1haW50YWluZXJzIHRoYXQKK3NvbWUgdGVzdGluZyBoYXMgYmVlbiBwZXJmb3JtZWQsIHByb3ZpZGVzIGEgbWVhbnMgdG8gbG9jYXRlIHRlc3RlcnMgZm9yCitmdXR1cmUgcGF0Y2hlcywgYW5kIGVuc3VyZXMgY3JlZGl0IGZvciB0aGUgdGVzdGVycy4KKworUmV2aWV3ZWQtYnk6LCBpbnN0ZWFkLCBpbmRpY2F0ZXMgdGhhdCB0aGUgcGF0Y2ggaGFzIGJlZW4gcmV2aWV3ZWQgYW5kIGZvdW5kCithY2NlcHRhYmxlIGFjY29yZGluZyB0byB0aGUgUmV2aWV3ZXIncyBTdGF0ZW1lbnQ6CisKKwlSZXZpZXdlcidzIHN0YXRlbWVudCBvZiBvdmVyc2lnaHQKKworCUJ5IG9mZmVyaW5nIG15IFJldmlld2VkLWJ5OiB0YWcsIEkgc3RhdGUgdGhhdDoKKworIAkgKGEpIEkgaGF2ZSBjYXJyaWVkIG91dCBhIHRlY2huaWNhbCByZXZpZXcgb2YgdGhpcyBwYXRjaCB0bworCSAgICAgZXZhbHVhdGUgaXRzIGFwcHJvcHJpYXRlbmVzcyBhbmQgcmVhZGluZXNzIGZvciBpbmNsdXNpb24gaW50bworCSAgICAgdGhlIG1haW5saW5lIGtlcm5lbC4KKworCSAoYikgQW55IHByb2JsZW1zLCBjb25jZXJucywgb3IgcXVlc3Rpb25zIHJlbGF0aW5nIHRvIHRoZSBwYXRjaAorCSAgICAgaGF2ZSBiZWVuIGNvbW11bmljYXRlZCBiYWNrIHRvIHRoZSBzdWJtaXR0ZXIuICBJIGFtIHNhdGlzZmllZAorCSAgICAgd2l0aCB0aGUgc3VibWl0dGVyJ3MgcmVzcG9uc2UgdG8gbXkgY29tbWVudHMuCisKKwkgKGMpIFdoaWxlIHRoZXJlIG1heSBiZSB0aGluZ3MgdGhhdCBjb3VsZCBiZSBpbXByb3ZlZCB3aXRoIHRoaXMKKwkgICAgIHN1Ym1pc3Npb24sIEkgYmVsaWV2ZSB0aGF0IGl0IGlzLCBhdCB0aGlzIHRpbWUsICgxKSBhCisJICAgICB3b3J0aHdoaWxlIG1vZGlmaWNhdGlvbiB0byB0aGUga2VybmVsLCBhbmQgKDIpIGZyZWUgb2Yga25vd24KKwkgICAgIGlzc3VlcyB3aGljaCB3b3VsZCBhcmd1ZSBhZ2FpbnN0IGl0cyBpbmNsdXNpb24uCisKKwkgKGQpIFdoaWxlIEkgaGF2ZSByZXZpZXdlZCB0aGUgcGF0Y2ggYW5kIGJlbGlldmUgaXQgdG8gYmUgc291bmQsIEkKKwkgICAgIGRvIG5vdCAodW5sZXNzIGV4cGxpY2l0bHkgc3RhdGVkIGVsc2V3aGVyZSkgbWFrZSBhbnkKKwkgICAgIHdhcnJhbnRpZXMgb3IgZ3VhcmFudGVlcyB0aGF0IGl0IHdpbGwgYWNoaWV2ZSBpdHMgc3RhdGVkCisJICAgICBwdXJwb3NlIG9yIGZ1bmN0aW9uIHByb3Blcmx5IGluIGFueSBnaXZlbiBzaXR1YXRpb24uCisKK0EgUmV2aWV3ZWQtYnkgdGFnIGlzIGEgc3RhdGVtZW50IG9mIG9waW5pb24gdGhhdCB0aGUgcGF0Y2ggaXMgYW4KK2FwcHJvcHJpYXRlIG1vZGlmaWNhdGlvbiBvZiB0aGUga2VybmVsIHdpdGhvdXQgYW55IHJlbWFpbmluZyBzZXJpb3VzCit0ZWNobmljYWwgaXNzdWVzLiAgQW55IGludGVyZXN0ZWQgcmV2aWV3ZXIgKHdobyBoYXMgZG9uZSB0aGUgd29yaykgY2FuCitvZmZlciBhIFJldmlld2VkLWJ5IHRhZyBmb3IgYSBwYXRjaC4gIFRoaXMgdGFnIHNlcnZlcyB0byBnaXZlIGNyZWRpdCB0bworcmV2aWV3ZXJzIGFuZCB0byBpbmZvcm0gbWFpbnRhaW5lcnMgb2YgdGhlIGRlZ3JlZSBvZiByZXZpZXcgd2hpY2ggaGFzIGJlZW4KK2RvbmUgb24gdGhlIHBhdGNoLiAgUmV2aWV3ZWQtYnk6IHRhZ3MsIHdoZW4gc3VwcGxpZWQgYnkgcmV2aWV3ZXJzIGtub3duIHRvCit1bmRlcnN0YW5kIHRoZSBzdWJqZWN0IGFyZWEgYW5kIHRvIHBlcmZvcm0gdGhvcm91Z2ggcmV2aWV3cywgd2lsbCBub3JtYWxseQoraW5jcmVhc2UgdGhlIGxpa2xpaG9vZCBvZiB5b3VyIHBhdGNoIGdldHRpbmcgaW50byB0aGUga2VybmVsLgorCisKKzE1KSBUaGUgY2Fub25pY2FsIHBhdGNoIGZvcm1hdAogCiBUaGUgY2Fub25pY2FsIHBhdGNoIHN1YmplY3QgbGluZSBpczoKIApAQCAtNTEyLDcgKzU2MCw3IEBACiBsaW1pdGF0aW9ucywgYW5kIHVuZGVyIGdjYyB0aGV5IGFyZSBhcyBjaGVhcCBhcyBtYWNyb3MuCiAKIE1hY3JvcyBzaG91bGQgb25seSBiZSB1c2VkIGZvciBjYXNlcyB3aGVyZSBhIHN0YXRpYyBpbmxpbmUgaXMgY2xlYXJseQotc3Vib3B0aW1hbCBbdGhlcmUgYSBmZXcsIGlzb2xhdGVkIGNhc2VzIG9mIHRoaXMgaW4gZmFzdCBwYXRoc10sCitzdWJvcHRpbWFsIFt0aGVyZSBhcmUgYSBmZXcsIGlzb2xhdGVkIGNhc2VzIG9mIHRoaXMgaW4gZmFzdCBwYXRoc10sCiBvciB3aGVyZSBpdCBpcyBpbXBvc3NpYmxlIHRvIHVzZSBhIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb24gW3N1Y2ggYXMKIHN0cmluZy1pemluZ10uCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYWNwaS9kc2R0LW92ZXJyaWRlLnR4dCBiL0RvY3VtZW50YXRpb24vYWNwaS9kc2R0LW92ZXJyaWRlLnR4dAppbmRleCA1MDA4ZjI1Li5mZWJiYjFiIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2FjcGkvZHNkdC1vdmVycmlkZS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9hY3BpL2RzZHQtb3ZlcnJpZGUudHh0CkBAIC0xLDE1ICsxLDcgQEAKLUxpbnV4IHN1cHBvcnRzIHR3byBtZXRob2RzIG9mIG92ZXJyaWRpbmcgdGhlIEJJT1MgRFNEVDoKK0xpbnV4IHN1cHBvcnRzIGEgbWV0aG9kIG9mIG92ZXJyaWRpbmcgdGhlIEJJT1MgRFNEVDoKIAogQ09ORklHX0FDUElfQ1VTVE9NX0RTRFQgYnVpbGRzIHRoZSBpbWFnZSBpbnRvIHRoZSBrZXJuZWwuCiAKLUNPTkZJR19BQ1BJX0NVU1RPTV9EU0RUX0lOSVRSRCBhZGRzIHRoZSBpbWFnZSB0byB0aGUgaW5pdHJkLgotCi1XaGVuIHRvIHVzZSB0aGVzZSBtZXRob2RzIGlzIGRlc2NyaWJlZCBpbiBkZXRhaWwgb24gdGhlCitXaGVuIHRvIHVzZSB0aGlzIG1ldGhvZCBpcyBkZXNjcmliZWQgaW4gZGV0YWlsIG9uIHRoZQogTGludXgvQUNQSSBob21lIHBhZ2U6CiBodHRwOi8vd3d3Lmxlc3N3YXR0cy5vcmcvcHJvamVjdHMvYWNwaS9vdmVycmlkaW5nRFNEVC5waHAKLQotTm90ZSB0aGF0IGlmIGJvdGggb3B0aW9ucyBhcmUgdXNlZCwgdGhlIERTRFQgc3VwcGxpZWQKLWJ5IHRoZSBJTklUUkQgbWV0aG9kIHRha2VzIHByZWNlZGVuY2UuCi0KLURvY3VtZW50YXRpb24vaW5pdHJhbWZzLWFkZC1kc2R0LnNoIGlzIHByb3ZpZGVkIGZvciBjb252ZW5pZW5jZQotZm9yIHVzZSB3aXRoIHRoZSBDT05GSUdfQUNQSV9DVVNUT01fRFNEVF9JTklUUkQgbWV0aG9kLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hY3BpL2luaXRyYW1mcy1hZGQtZHNkdC5zaCBiL0RvY3VtZW50YXRpb24vYWNwaS9pbml0cmFtZnMtYWRkLWRzZHQuc2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDE3ZWY2ZTguLjAwMDAwMDAKLS0tIGEvRG9jdW1lbnRhdGlvbi9hY3BpL2luaXRyYW1mcy1hZGQtZHNkdC5zaAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLSMhL2Jpbi9iYXNoCi0jIEFkZHMgYSBEU0RUIGZpbGUgdG8gdGhlIGluaXRyZCAoaWYgaXQncyBhbiBpbml0cmFtZnMpCi0jIGZpcnN0IGFyZ3VtZW50IGlzIHRoZSBuYW1lIG9mIGFyY2hpdmUKLSMgc2Vjb25kIGFyZ3VtZW50IGlzIHRoZSBuYW1lIG9mIHRoZSBmaWxlIHRvIGFkZAotIyBUaGUgZmlsZSB3aWxsIGJlIGNvcGllZCBhcyAvRFNEVC5hbWwKLQotIyAyMDA2MDEyNjogZml4ICJQcmVtYXR1cmUgZW5kIG9mIGZpbGUiIHdpdGggc29tZSBvbGQgY3BpbyAoUm9sYW5kIFJvYmljKQotIyAyMDA2MDIwNTogdGhpcyB0aW1lIGl0IHNob3VsZCByZWFsbHkgd29yawotCi0jIGNoZWNrIHRoZSBhcmd1bWVudHMKLWlmIFsgJCMgLW5lIDIgXTsgdGhlbgotCXByb2dyYW1fbmFtZT0kKGJhc2VuYW1lICQwKQotCWVjaG8gIlwKLSRwcm9ncmFtX25hbWU6IHRvbyBmZXcgYXJndW1lbnRzCi1Vc2FnZTogJHByb2dyYW1fbmFtZSBpbml0cmQtbmFtZS5pbWcgRFNEVC10by1hZGQuYW1sCi1BZGRzIGEgRFNEVCBmaWxlIHRvIGFuIGluaXRyZCAoaW4gaW5pdHJhbWZzIGZvcm1hdCkKLQotICBpbml0cmQtbmFtZS5pbWc6IGZpbGVuYW1lIG9mIHRoZSBpbml0cmQgaW4gaW5pdHJhbWZzIGZvcm1hdAotICBEU0RULXRvLWFkZC5hbWw6IGZpbGVuYW1lIG9mIHRoZSBEU0RUIGZpbGUgdG8gYWRkCi0gICIgMT4mMgotICAgIGV4aXQgMQotZmkKLQotIyB3ZSBzaG91bGQgY2hlY2sgaXQncyBhbiBpbml0cmFtZnMKLQotdGVtcGNwaW89JChta3RlbXAgLWQpCi0jIGNsZWFudXAgb24gZXhpdCwgaGFuZ3VwLCBpbnRlcnJ1cHQsIHF1aXQsIHRlcm1pbmF0aW9uCi10cmFwICdybSAtcmYgJHRlbXBjcGlvJyAwIDEgMiAzIDE1Ci0KLSMgZXh0cmFjdCB0aGUgYXJjaGl2ZQotZ3VuemlwIC1jICIkMSIgPiAiJHRlbXBjcGlvIi9pbml0cmFtZnMuY3BpbyB8fCBleGl0IDEKLQotIyBjb3B5IHRoZSBEU0RUIGZpbGUgYXQgdGhlIHJvb3Qgb2YgdGhlIGRpcmVjdG9yeSBzbyB0aGF0IHdlIGNhbiBjYWxsIGl0ICIvRFNEVC5hbWwiCi1jcCAtZiAiJDIiICIkdGVtcGNwaW8iL0RTRFQuYW1sCi0KLSMgYWRkIHRoZSBmaWxlCi1jZCAiJHRlbXBjcGlvIgotKGVjaG8gRFNEVC5hbWwgfCBjcGlvIC0tcXVpZXQgLUggbmV3YyAtbyAtQSAtTyAiJHRlbXBjcGlvIi9pbml0cmFtZnMuY3BpbykgfHwgZXhpdCAxCi1jZCAiJE9MRFBXRCIKLQotIyByZS1jb21wcmVzcyB0aGUgYXJjaGl2ZQotZ3ppcCAtYyAiJHRlbXBjcGlvIi9pbml0cmFtZnMuY3BpbyA+ICIkMSIKLQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9mYi9jbWFwX3hmYmRldi50eHQgYi9Eb2N1bWVudGF0aW9uL2ZiL2NtYXBfeGZiZGV2LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NWUxZjBhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9mYi9jbWFwX3hmYmRldi50eHQKQEAgLTAsMCArMSw1MyBAQAorVW5kZXJzdGFuZGluZyBmYmRldidzIGNtYXAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZXNlIG5vdGVzIGV4cGxhaW4gaG93IFgncyBkaXggbGF5ZXIgdXNlcyBmYmRldidzIGNtYXAgc3RydWN0dXJlcy4KKworKi4gZXhhbXBsZSBvZiByZWxldmFudCBzdHJ1Y3R1cmVzIGluIGZiZGV2IGFzIHVzZWQgZm9yIGEgMy1iaXQgZ3JheXNjYWxlIGNtYXAKK3N0cnVjdCBmYl92YXJfc2NyZWVuaW5mbyB7CisgICAgICAgIC5iaXRzX3Blcl9waXhlbCA9IDgsCisgICAgICAgIC5ncmF5c2NhbGUgICAgICA9IDEsCisgICAgICAgIC5yZWQgPSAgICAgICAgICB7IDQsIDMsIDAgfSwKKyAgICAgICAgLmdyZWVuID0gICAgICAgIHsgMCwgMCwgMCB9LAorICAgICAgICAuYmx1ZSA9ICAgICAgICAgeyAwLCAwLCAwIH0sCit9CitzdHJ1Y3QgZmJfZml4X3NjcmVlbmluZm8geworICAgICAgICAudmlzdWFsID0gICAgICAgRkJfVklTVUFMX1NUQVRJQ19QU0VVRE9DT0xPUiwKK30KK2ZvciAoaSA9IDA7IGkgPCA4OyBpKyspCisJaW5mby0+Y21hcC5yZWRbaV0gPSAoKCgyKmkpKzEpKigweEZGRkYpKS8xNjsKK21lbWNweShpbmZvLT5jbWFwLmdyZWVuLCBpbmZvLT5jbWFwLnJlZCwgc2l6ZW9mKHUxNikqOCk7CittZW1jcHkoaW5mby0+Y21hcC5ibHVlLCBpbmZvLT5jbWFwLnJlZCwgc2l6ZW9mKHUxNikqOCk7CisKKyouIFgxMSBhcHBzIGRvIHNvbWV0aGluZyBsaWtlIHRoZSBmb2xsb3dpbmcgd2hlbiB0cnlpbmcgdG8gdXNlIGdyYXlzY2FsZS4KK2ZvciAoaT0wOyBpIDwgODsgaSsrKSB7CisJY2hhciBjb2xvcnNwZWNbNjRdOworCW1lbXNldChjb2xvcnNwZWMsMCw2NCk7CisJc3ByaW50Zihjb2xvcnNwZWMsICJyZ2I6JXgvJXgvJXgiLCBpKjM2LGkqMzYsaSozNik7CisJaWYgKCFYUGFyc2VDb2xvcihvdXRwdXREaXNwbGF5LCB0ZXN0Q29sb3JtYXAsIGNvbG9yc3BlYywgJndhbnRlZENvbG9yKSkKKwkJcHJpbnRmKCJDYW4ndCBnZXQgY29sb3IgJXNcbiIsY29sb3JzcGVjKTsKKwlYQWxsb2NDb2xvcihvdXRwdXREaXNwbGF5LCB0ZXN0Q29sb3JtYXAsICZ3YW50ZWRDb2xvcik7CisJZ3JheXNbaV0gPSB3YW50ZWRDb2xvcjsKK30KK1RoZXJlJ3MgYWxzbyBuYW1lZCBlcXVpdmFsZW50cyBsaWtlIGdyYXkxLi54IHByb3ZpZGVkIHlvdSBoYXZlIGFuIHJnYi50eHQuCisKK1NvbWV3aGVyZSBpbiBYJ3MgY2FsbGNoYWluLCB0aGlzIHJlc3VsdHMgaW4gYSBjYWxsIHRvIFggY29kZSB0aGF0IGhhbmRsZXMgdGhlCitjb2xvcm1hcC4gRm9yIGV4YW1wbGUsIFhmYmRldiBoaXRzIHRoZSBmb2xsb3dpbmc6CisKK3hjLTAxMTAxMC9wcm9ncmFtcy9Yc2VydmVyL2RpeC9jb2xvcm1hcC5jOgorCitGaW5kQmVzdFBpeGVsKHBlbnRGaXJzdCwgc2l6ZSwgcHJnYiwgY2hhbm5lbCkKKworZHIgPSAobG9uZykgcGVudC0+Y28ubG9jYWwucmVkIC0gcHJnYi0+cmVkOworZGcgPSAobG9uZykgcGVudC0+Y28ubG9jYWwuZ3JlZW4gLSBwcmdiLT5ncmVlbjsKK2RiID0gKGxvbmcpIHBlbnQtPmNvLmxvY2FsLmJsdWUgLSBwcmdiLT5ibHVlOworc3EgPSBkciAqIGRyOworVW5zaWduZWRUb0JpZ051bSAoc3EsICZzdW0pOworQmlnTnVtQWRkICgmc3VtLCAmdGVtcCwgJnN1bSk7CisKK2NvLmxvY2FsLnJlZCBhcmUgZW50cmllcyB0aGF0IHdlcmUgYnJvdWdodCBpbiB0aHJvdWdoIEZCSU9HRVRDTUFQIHdoaWNoIGNvbWUKK2RpcmVjdGx5IGZyb20gdGhlIGluZm8tPmNtYXAucmVkIHRoYXQgd2FzIGxpc3RlZCBhYm92ZS4gVGhlIHByZ2IgaXMgdGhlIHJnYgordGhhdCB0aGUgYXBwIHdhbnRzIHRvIG1hdGNoIHRvLiBUaGUgYWJvdmUgY29kZSBpcyBkb2luZyB3aGF0IGxvb2tzIGxpa2UgYSBsZWFzdAorc3F1YXJlcyBtYXRjaGluZyBmdW5jdGlvbi4gVGhhdCdzIHdoeSB0aGUgY21hcCBlbnRyaWVzIGNhbid0IGJlIHNldCB0byB0aGUgbGVmdAoraGFuZCBzaWRlIGJvdW5kYXJpZXMgb2YgYSBjb2xvciByYW5nZS4KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9mYi9tZXRyb25vbWVmYi50eHQgYi9Eb2N1bWVudGF0aW9uL2ZiL21ldHJvbm9tZWZiLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOWEyZTdiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9mYi9tZXRyb25vbWVmYi50eHQKQEAgLTAsMCArMSwzOCBAQAorCQkJTWV0cm9ub21lZmIKKwkJCS0tLS0tLS0tLS0tCitNYWludGFpbmVkIGJ5IEpheWEgS3VtYXIgPGpheWFrdW1hci5sa21sLmdtYWlsLmNvbT4KK0xhc3QgcmV2aXNlZDogTm92IDIwLCAyMDA3CisKK01ldHJvbm9tZWZiIGlzIGEgZHJpdmVyIGZvciB0aGUgTWV0cm9ub21lIGRpc3BsYXkgY29udHJvbGxlci4gVGhlIGNvbnRyb2xsZXIKK2lzIGZyb20gRS1JbmsgQ29ycG9yYXRpb24uIEl0IGlzIGludGVuZGVkIHRvIGJlIHVzZWQgdG8gZHJpdmUgdGhlIEUtSW5rCitWaXpwbGV4IGRpc3BsYXkgbWVkaWEuIEUtSW5rIGhvc3RzIHNvbWUgZGV0YWlscyBvZiB0aGlzIGNvbnRyb2xsZXIgYW5kIHRoZQorZGlzcGxheSBtZWRpYSBoZXJlIGh0dHA6Ly93d3cuZS1pbmsuY29tL3Byb2R1Y3RzL21hdHJpeC9tZXRyb25vbWUuaHRtbCAuCisKK01ldHJvbm9tZSBpcyBpbnRlcmZhY2VkIHRvIHRoZSBob3N0IENQVSB0aHJvdWdoIHRoZSBBTUxDRCBpbnRlcmZhY2UuIFRoZQoraG9zdCBDUFUgZ2VuZXJhdGVzIHRoZSBjb250cm9sIGluZm9ybWF0aW9uIGFuZCB0aGUgaW1hZ2UgaW4gYSBmcmFtZWJ1ZmZlcgord2hpY2ggaXMgdGhlbiBkZWxpdmVyZWQgdG8gdGhlIEFNTENEIGludGVyZmFjZSBieSBhIGhvc3Qgc3BlY2lmaWMgbWV0aG9kLgorQ3VycmVudGx5LCB0aGF0J3MgaW1wbGVtZW50ZWQgZm9yIHRoZSBQWEEncyBMQ0RDIGNvbnRyb2xsZXIuIFRoZSBkaXNwbGF5IGFuZAorZXJyb3Igc3RhdHVzIGFyZSBlYWNoIHB1bGxlZCB0aHJvdWdoIGluZGl2aWR1YWwgR1BJT3MuCisKK01ldHJvbm9tZWZiIHdhcyB3cml0dGVuIGZvciB0aGUgUFhBMjU1L2d1bXN0aXgvbHlyZSBjb21iaW5hdGlvbiBhbmQKK3RoZXJlZm9yZSBjdXJyZW50bHkgaGFzIGJvYXJkIHNldCBzcGVjaWZpYyBjb2RlIGluIGl0LiBJZiBvdGhlciBib2FyZHMgYmFzZWQgb24KK290aGVyIGFyY2hpdGVjdHVyZXMgYXJlIGF2YWlsYWJsZSwgdGhlbiB0aGUgaG9zdCBzcGVjaWZpYyBjb2RlIGNhbiBiZSBzZXBhcmF0ZWQKK2FuZCBhYnN0cmFjdGVkIG91dC4KKworTWV0cm9ub21lZmIgcmVxdWlyZXMgd2F2ZWZvcm0gaW5mb3JtYXRpb24gd2hpY2ggaXMgZGVsaXZlcmVkIHZpYSB0aGUgQU1MQ0QKK2ludGVyZmFjZSB0byB0aGUgbWV0cm9ub21lIGNvbnRyb2xsZXIuIFRoZSB3YXZlZm9ybSBpbmZvcm1hdGlvbiBpcyBleHBlY3RlZCB0bworYmUgZGVsaXZlcmVkIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgZmlybXdhcmUgY2xhc3MgaW50ZXJmYWNlLiBUaGUgd2F2ZWZvcm0gZmlsZQorY2FuIGJlIGNvbXByZXNzZWQgYXMgbG9uZyBhcyB5b3VyIHVkZXYgb3IgaG90cGx1ZyBzY3JpcHQgaXMgYXdhcmUgb2YgdGhlIG5lZWQKK3RvIHVuY29tcHJlc3MgaXQgYmVmb3JlIGRlbGl2ZXJpbmcgaXQuIG1ldHJvbm9tZWZiIHdpbGwgYXNrIGZvciB3YXZlZm9ybS53YmYKK3doaWNoIHdvdWxkIHR5cGljYWxseSBnbyBpbnRvIC9saWIvZmlybXdhcmUvd2F2ZWZvcm0ud2JmIGRlcGVuZGluZyBvbiB5b3VyCit1ZGV2L2hvdHBsdWcgc2V0dXAuIEkgaGF2ZSBvbmx5IHRlc3RlZCB3aXRoIGEgc2luZ2xlIHdhdmVmb3JtIGZpbGUgd2hpY2ggd2FzCitvcmlnaW5hbGx5IGxhYmVsZWQgMjNQMDEyMDFfNjBfV1QwMTA3X01UQy4gSSBkbyBub3Qga25vdyB3aGF0IGl0IHN0YW5kcyBmb3IuCitDYXV0aW9uIHNob3VsZCBiZSBleGVyY2lzZWQgd2hlbiBtYW5pcHVsYXRpbmcgdGhlIHdhdmVmb3JtIGFzIHRoZXJlIG1heSBiZQorYSBwb3NzaWJpbGl0eSB0aGF0IGl0IGNvdWxkIGhhdmUgc29tZSBwZXJtYW5lbnQgZWZmZWN0cyBvbiB0aGUgZGlzcGxheSBtZWRpYS4KK0kgbmVpdGhlciBoYXZlIGFjY2VzcyB0byBub3Iga25vdyBleGFjdGx5IHdoYXQgdGhlIHdhdmVmb3JtIGRvZXMgaW4gdGVybXMgb2YKK3RoZSBwaHlzaWNhbCBtZWRpYS4KKworTWV0cm9ub21lZmIgdXNlcyB0aGUgZGVmZXJyZWQgSU8gaW50ZXJmYWNlIHNvIHRoYXQgaXQgY2FuIHByb3ZpZGUgYSBtZW1vcnkKK21hcHBhYmxlIGZyYW1lIGJ1ZmZlci4gSXQgaGFzIGJlZW4gdGVzdGVkIHdpdGggdGlueXggKFhmYmRldikuIEl0IGlzIGtub3duCit0byB3b3JrIGF0IHRoaXMgdGltZSB3aXRoIHhleWVzLCB4Y2xvY2ssIHhsb2FkaW1hZ2UsIHhwZGYuCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmVhdHVyZS1yZW1vdmFsLXNjaGVkdWxlLnR4dCBiL0RvY3VtZW50YXRpb24vZmVhdHVyZS1yZW1vdmFsLXNjaGVkdWxlLnR4dAppbmRleCBjMWQxZmQwLi5iZjBlM2RmIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2ZlYXR1cmUtcmVtb3ZhbC1zY2hlZHVsZS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9mZWF0dXJlLXJlbW92YWwtc2NoZWR1bGUudHh0CkBAIC0xNzIsMTYgKzE3Miw2IEBACiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1XaGF0OglpZGUtdGFwZSBkcml2ZXIKLVdoZW46CUp1bHkgMjAwOAotRmlsZXM6CWRyaXZlcnMvaWRlL2lkZS10YXBlLmMKLVdoeToJVGhpcyBkcml2ZXIgbWlnaHQgbm90IGhhdmUgYW55IHVzZXJzIGFueW1vcmUgYW5kIG1haW50YWluaW5nIGl0IGZvciBubwotCXJlYXNvbiBpcyBhbiBlZmZvcnQgbm8gb25lIHdhbnRzIHRvIG1ha2UuCi1XaG86CUJhcnRsb21pZWogWm9sbmllcmtpZXdpY3ogPGJ6b2xuaWVyQGdtYWlsLmNvbT4sIEJvcmlzbGF2IFBldGtvdgotCTxwZXRrb3ZiYkBnb29nbGVtYWlsLmNvbT4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KIFdoYXQ6IGxpYmF0YSBzcGluZG93biBza2lwcGluZyBhbmQgd2FybmluZwogV2hlbjogRGVjIDIwMDgKIFdoeTogIFNvbWUgaGFsdCg4KSBpbXBsZW1lbnRhdGlvbnMgc3luY2hyb25pemUgY2FjaGVzIGZvciBhbmQgc3BpbgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy8wMC1JTkRFWCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvMDAtSU5ERVgKaW5kZXggZTY4MDIxYy4uNTJjZDYxMSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy8wMC1JTkRFWAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zLzAwLUlOREVYCkBAIC02Niw2ICs2Niw4IEBACiAJLSBpbmZvIG9uIHRoZSBMaW51eCBpbXBsZW1lbnRhdGlvbiBvZiBTeXMgViBtYW5kYXRvcnkgZmlsZSBsb2NraW5nLgogbmNwZnMudHh0CiAJLSBpbmZvIG9uIE5vdmVsbCBOZXR3YXJlKHRtKSBmaWxlc3lzdGVtIHVzaW5nIE5DUCBwcm90b2NvbC4KK25mc3Jvb3QudHh0CisJLSBzaG9ydCBndWlkZSBvbiBzZXR0aW5nIHVwIGEgZGlza2xlc3MgYm94IHdpdGggTkZTIHJvb3QgZmlsZXN5c3RlbS4KIG50ZnMudHh0CiAJLSBpbmZvIGFuZCBtb3VudCBvcHRpb25zIGZvciB0aGUgTlRGUyBmaWxlc3lzdGVtIChXaW5kb3dzIE5UKS4KIG9jZnMyLnR4dApAQCAtODIsNiArODQsMTAgQEAKIAktIGluZm8gb24gcmVsYXksIGZvciBlZmZpY2llbnQgc3RyZWFtaW5nIGZyb20ga2VybmVsIHRvIHVzZXIgc3BhY2UuCiByb21mcy50eHQKIAktIGRlc2NyaXB0aW9uIG9mIHRoZSBST01GUyBmaWxlc3lzdGVtLgorcnBjLWNhY2hlLnR4dAorCS0gaW50cm9kdWN0aW9uIHRvIHRoZSBjYWNoaW5nIG1lY2hhbmlzbXMgaW4gdGhlIHN1bnJwYyBsYXllci4KK3NlcV9maWxlLnR4dAorCS0gaG93IHRvIHVzZSB0aGUgc2VxX2ZpbGUgQVBJCiBzaGFyZWRzdWJ0cmVlLnR4dAogCS0gYSBkZXNjcmlwdGlvbiBvZiBzaGFyZWQgc3VidHJlZXMgZm9yIG5hbWVzcGFjZXMuCiBzbWJmcy50eHQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmZzcm9vdC50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL25mc3Jvb3QudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBEb2N1bWVudGF0aW9uL25mc3Jvb3QudHh0CnJlbmFtZSB0byBEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL25mc3Jvb3QudHh0CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3Byb2MudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9wcm9jLnR4dAppbmRleCA1NjgxZTJmLi41MThlYmU2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3Byb2MudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcHJvYy50eHQKQEAgLTE1MDYsMTMgKzE1MDYsMTMgQEAKIC0tLS0tLS0tLS0tCiAKIGxhcHRvcF9tb2RlIGlzIGEga25vYiB0aGF0IGNvbnRyb2xzICJsYXB0b3AgbW9kZSIuIEFsbCB0aGUgdGhpbmdzIHRoYXQgYXJlCi1jb250cm9sbGVkIGJ5IHRoaXMga25vYiBhcmUgZGlzY3Vzc2VkIGluIERvY3VtZW50YXRpb24vbGFwdG9wLW1vZGUudHh0LgorY29udHJvbGxlZCBieSB0aGlzIGtub2IgYXJlIGRpc2N1c3NlZCBpbiBEb2N1bWVudGF0aW9uL2xhcHRvcHMvbGFwdG9wLW1vZGUudHh0LgogCiBibG9ja19kdW1wCiAtLS0tLS0tLS0tCiAKIGJsb2NrX2R1bXAgZW5hYmxlcyBibG9jayBJL08gZGVidWdnaW5nIHdoZW4gc2V0IHRvIGEgbm9uemVybyB2YWx1ZS4gTW9yZQotaW5mb3JtYXRpb24gb24gYmxvY2sgSS9PIGRlYnVnZ2luZyBpcyBpbiBEb2N1bWVudGF0aW9uL2xhcHRvcC1tb2RlLnR4dC4KK2luZm9ybWF0aW9uIG9uIGJsb2NrIEkvTyBkZWJ1Z2dpbmcgaXMgaW4gRG9jdW1lbnRhdGlvbi9sYXB0b3BzL2xhcHRvcC1tb2RlLnR4dC4KIAogc3dhcF90b2tlbl90aW1lb3V0CiAtLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcnBjLWNhY2hlLnR4dCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcnBjLWNhY2hlLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gRG9jdW1lbnRhdGlvbi9ycGMtY2FjaGUudHh0CnJlbmFtZSB0byBEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3JwYy1jYWNoZS50eHQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvc2VxX2ZpbGUudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9zZXFfZmlsZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2ZiOGU2ZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvc2VxX2ZpbGUudHh0CkBAIC0wLDAgKzEsMjgzIEBACitUaGUgc2VxX2ZpbGUgaW50ZXJmYWNlCisKKwlDb3B5cmlnaHQgMjAwMyBKb25hdGhhbiBDb3JiZXQgPGNvcmJldEBsd24ubmV0PgorCVRoaXMgZmlsZSBpcyBvcmlnaW5hbGx5IGZyb20gdGhlIExXTi5uZXQgRHJpdmVyIFBvcnRpbmcgc2VyaWVzIGF0CisJaHR0cDovL2x3bi5uZXQvQXJ0aWNsZXMvZHJpdmVyLXBvcnRpbmcvCisKKworVGhlcmUgYXJlIG51bWVyb3VzIHdheXMgZm9yIGEgZGV2aWNlIGRyaXZlciAob3Igb3RoZXIga2VybmVsIGNvbXBvbmVudCkgdG8KK3Byb3ZpZGUgaW5mb3JtYXRpb24gdG8gdGhlIHVzZXIgb3Igc3lzdGVtIGFkbWluaXN0cmF0b3IuICBPbmUgdXNlZnVsCit0ZWNobmlxdWUgaXMgdGhlIGNyZWF0aW9uIG9mIHZpcnR1YWwgZmlsZXMsIGluIGRlYnVnZnMsIC9wcm9jIG9yIGVsc2V3aGVyZS4KK1ZpcnR1YWwgZmlsZXMgY2FuIHByb3ZpZGUgaHVtYW4tcmVhZGFibGUgb3V0cHV0IHRoYXQgaXMgZWFzeSB0byBnZXQgYXQKK3dpdGhvdXQgYW55IHNwZWNpYWwgdXRpbGl0eSBwcm9ncmFtczsgdGhleSBjYW4gYWxzbyBtYWtlIGxpZmUgZWFzaWVyIGZvcgorc2NyaXB0IHdyaXRlcnMuIEl0IGlzIG5vdCBzdXJwcmlzaW5nIHRoYXQgdGhlIHVzZSBvZiB2aXJ0dWFsIGZpbGVzIGhhcworZ3Jvd24gb3ZlciB0aGUgeWVhcnMuCisKK0NyZWF0aW5nIHRob3NlIGZpbGVzIGNvcnJlY3RseSBoYXMgYWx3YXlzIGJlZW4gYSBiaXQgb2YgYSBjaGFsbGVuZ2UsCitob3dldmVyLiBJdCBpcyBub3QgdGhhdCBoYXJkIHRvIG1ha2UgYSB2aXJ0dWFsIGZpbGUgd2hpY2ggcmV0dXJucyBhCitzdHJpbmcuIEJ1dCBsaWZlIGdldHMgdHJpY2tpZXIgaWYgdGhlIG91dHB1dCBpcyBsb25nIC0gYW55dGhpbmcgZ3JlYXRlcgordGhhbiBhbiBhcHBsaWNhdGlvbiBpcyBsaWtlbHkgdG8gcmVhZCBpbiBhIHNpbmdsZSBvcGVyYXRpb24uICBIYW5kbGluZworbXVsdGlwbGUgcmVhZHMgKGFuZCBzZWVrcykgcmVxdWlyZXMgY2FyZWZ1bCBhdHRlbnRpb24gdG8gdGhlIHJlYWRlcidzCitwb3NpdGlvbiB3aXRoaW4gdGhlIHZpcnR1YWwgZmlsZSAtIHRoYXQgcG9zaXRpb24gaXMsIGxpa2VseSBhcyBub3QsIGluIHRoZQorbWlkZGxlIG9mIGEgbGluZSBvZiBvdXRwdXQuIFRoZSBrZXJuZWwgaGFzIHRyYWRpdGlvbmFsbHkgaGFkIGEgbnVtYmVyIG9mCitpbXBsZW1lbnRhdGlvbnMgdGhhdCBnb3QgdGhpcyB3cm9uZy4KKworVGhlIDIuNiBrZXJuZWwgY29udGFpbnMgYSBzZXQgb2YgZnVuY3Rpb25zIChpbXBsZW1lbnRlZCBieSBBbGV4YW5kZXIgVmlybykKK3doaWNoIGFyZSBkZXNpZ25lZCB0byBtYWtlIGl0IGVhc3kgZm9yIHZpcnR1YWwgZmlsZSBjcmVhdG9ycyB0byBnZXQgaXQKK3JpZ2h0LgorCitUaGUgc2VxX2ZpbGUgaW50ZXJmYWNlIGlzIGF2YWlsYWJsZSB2aWEgPGxpbnV4L3NlcV9maWxlLmg+LiBUaGVyZSBhcmUKK3RocmVlIGFzcGVjdHMgdG8gc2VxX2ZpbGU6CisKKyAgICAgKiBBbiBpdGVyYXRvciBpbnRlcmZhY2Ugd2hpY2ggbGV0cyBhIHZpcnR1YWwgZmlsZSBpbXBsZW1lbnRhdGlvbgorICAgICAgIHN0ZXAgdGhyb3VnaCB0aGUgb2JqZWN0cyBpdCBpcyBwcmVzZW50aW5nLgorCisgICAgICogU29tZSB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgZm9ybWF0dGluZyBvYmplY3RzIGZvciBvdXRwdXQgd2l0aG91dAorICAgICAgIG5lZWRpbmcgdG8gd29ycnkgYWJvdXQgdGhpbmdzIGxpa2Ugb3V0cHV0IGJ1ZmZlcnMuCisKKyAgICAgKiBBIHNldCBvZiBjYW5uZWQgZmlsZV9vcGVyYXRpb25zIHdoaWNoIGltcGxlbWVudCBtb3N0IG9wZXJhdGlvbnMgb24KKyAgICAgICB0aGUgdmlydHVhbCBmaWxlLgorCitXZSdsbCBsb29rIGF0IHRoZSBzZXFfZmlsZSBpbnRlcmZhY2UgdmlhIGFuIGV4dHJlbWVseSBzaW1wbGUgZXhhbXBsZTogYQorbG9hZGFibGUgbW9kdWxlIHdoaWNoIGNyZWF0ZXMgYSBmaWxlIGNhbGxlZCAvcHJvYy9zZXF1ZW5jZS4gVGhlIGZpbGUsIHdoZW4KK3JlYWQsIHNpbXBseSBwcm9kdWNlcyBhIHNldCBvZiBpbmNyZWFzaW5nIGludGVnZXIgdmFsdWVzLCBvbmUgcGVyIGxpbmUuIFRoZQorc2VxdWVuY2Ugd2lsbCBjb250aW51ZSB1bnRpbCB0aGUgdXNlciBsb3NlcyBwYXRpZW5jZSBhbmQgZmluZHMgc29tZXRoaW5nCitiZXR0ZXIgdG8gZG8uIFRoZSBmaWxlIGlzIHNlZWthYmxlLCBpbiB0aGF0IG9uZSBjYW4gZG8gc29tZXRoaW5nIGxpa2UgdGhlCitmb2xsb3dpbmc6CisKKyAgICBkZCBpZj0vcHJvYy9zZXF1ZW5jZSBvZj1vdXQxIGNvdW50PTEKKyAgICBkZCBpZj0vcHJvYy9zZXF1ZW5jZSBza2lwPTEgb3V0PW91dDIgY291bnQ9MQorCitUaGVuIGNvbmNhdGVuYXRlIHRoZSBvdXRwdXQgZmlsZXMgb3V0MSBhbmQgb3V0MiBhbmQgZ2V0IHRoZSByaWdodAorcmVzdWx0LiBZZXMsIGl0IGlzIGEgdGhvcm91Z2hseSB1c2VsZXNzIG1vZHVsZSwgYnV0IHRoZSBwb2ludCBpcyB0byBzaG93Citob3cgdGhlIG1lY2hhbmlzbSB3b3JrcyB3aXRob3V0IGdldHRpbmcgbG9zdCBpbiBvdGhlciBkZXRhaWxzLiAgKFRob3NlCit3YW50aW5nIHRvIHNlZSB0aGUgZnVsbCBzb3VyY2UgZm9yIHRoaXMgbW9kdWxlIGNhbiBmaW5kIGl0IGF0CitodHRwOi8vbHduLm5ldC9BcnRpY2xlcy8yMjM1OS8pLgorCisKK1RoZSBpdGVyYXRvciBpbnRlcmZhY2UKKworTW9kdWxlcyBpbXBsZW1lbnRpbmcgYSB2aXJ0dWFsIGZpbGUgd2l0aCBzZXFfZmlsZSBtdXN0IGltcGxlbWVudCBhIHNpbXBsZQoraXRlcmF0b3Igb2JqZWN0IHRoYXQgYWxsb3dzIHN0ZXBwaW5nIHRocm91Z2ggdGhlIGRhdGEgb2YgaW50ZXJlc3QuCitJdGVyYXRvcnMgbXVzdCBiZSBhYmxlIHRvIG1vdmUgdG8gYSBzcGVjaWZpYyBwb3NpdGlvbiAtIGxpa2UgdGhlIGZpbGUgdGhleQoraW1wbGVtZW50IC0gYnV0IHRoZSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHBvc2l0aW9uIGlzIHVwIHRvIHRoZSBpdGVyYXRvcgoraXRzZWxmLiBBIHNlcV9maWxlIGltcGxlbWVudGF0aW9uIHRoYXQgaXMgZm9ybWF0dGluZyBmaXJld2FsbCBydWxlcywgZm9yCitleGFtcGxlLCBjb3VsZCBpbnRlcnByZXQgcG9zaXRpb24gTiBhcyB0aGUgTnRoIHJ1bGUgaW4gdGhlIGNoYWluLgorUG9zaXRpb25pbmcgY2FuIHRodXMgYmUgZG9uZSBpbiB3aGF0ZXZlciB3YXkgbWFrZXMgdGhlIG1vc3Qgc2Vuc2UgZm9yIHRoZQorZ2VuZXJhdG9yIG9mIHRoZSBkYXRhLCB3aGljaCBuZWVkIG5vdCBiZSBhd2FyZSBvZiBob3cgYSBwb3NpdGlvbiB0cmFuc2xhdGVzCit0byBhbiBvZmZzZXQgaW4gdGhlIHZpcnR1YWwgZmlsZS4gVGhlIG9uZSBvYnZpb3VzIGV4Y2VwdGlvbiBpcyB0aGF0IGEKK3Bvc2l0aW9uIG9mIHplcm8gc2hvdWxkIGluZGljYXRlIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGUuCisKK1RoZSAvcHJvYy9zZXF1ZW5jZSBpdGVyYXRvciBqdXN0IHVzZXMgdGhlIGNvdW50IG9mIHRoZSBuZXh0IG51bWJlciBpdAord2lsbCBvdXRwdXQgYXMgaXRzIHBvc2l0aW9uLgorCitGb3VyIGZ1bmN0aW9ucyBtdXN0IGJlIGltcGxlbWVudGVkIHRvIG1ha2UgdGhlIGl0ZXJhdG9yIHdvcmsuIFRoZSBmaXJzdCwKK2NhbGxlZCBzdGFydCgpIHRha2VzIGEgcG9zaXRpb24gYXMgYW4gYXJndW1lbnQgYW5kIHJldHVybnMgYW4gaXRlcmF0b3IKK3doaWNoIHdpbGwgc3RhcnQgcmVhZGluZyBhdCB0aGF0IHBvc2l0aW9uLiBGb3Igb3VyIHNpbXBsZSBzZXF1ZW5jZSBleGFtcGxlLAordGhlIHN0YXJ0KCkgZnVuY3Rpb24gbG9va3MgbGlrZToKKworCXN0YXRpYyB2b2lkICpjdF9zZXFfc3RhcnQoc3RydWN0IHNlcV9maWxlICpzLCBsb2ZmX3QgKnBvcykKKwl7CisJICAgICAgICBsb2ZmX3QgKnNwb3MgPSBrbWFsbG9jKHNpemVvZihsb2ZmX3QpLCBHRlBfS0VSTkVMKTsKKwkgICAgICAgIGlmICghIHNwb3MpCisJICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworCSAgICAgICAgKnNwb3MgPSAqcG9zOworCSAgICAgICAgcmV0dXJuIHNwb3M7CisJfQorCitUaGUgZW50aXJlIGRhdGEgc3RydWN0dXJlIGZvciB0aGlzIGl0ZXJhdG9yIGlzIGEgc2luZ2xlIGxvZmZfdCB2YWx1ZQoraG9sZGluZyB0aGUgY3VycmVudCBwb3NpdGlvbi4gVGhlcmUgaXMgbm8gdXBwZXIgYm91bmQgZm9yIHRoZSBzZXF1ZW5jZQoraXRlcmF0b3IsIGJ1dCB0aGF0IHdpbGwgbm90IGJlIHRoZSBjYXNlIGZvciBtb3N0IG90aGVyIHNlcV9maWxlCitpbXBsZW1lbnRhdGlvbnM7IGluIG1vc3QgY2FzZXMgdGhlIHN0YXJ0KCkgZnVuY3Rpb24gc2hvdWxkIGNoZWNrIGZvciBhCisicGFzdCBlbmQgb2YgZmlsZSIgY29uZGl0aW9uIGFuZCByZXR1cm4gTlVMTCBpZiBuZWVkIGJlLgorCitGb3IgbW9yZSBjb21wbGljYXRlZCBhcHBsaWNhdGlvbnMsIHRoZSBwcml2YXRlIGZpZWxkIG9mIHRoZSBzZXFfZmlsZQorc3RydWN0dXJlIGNhbiBiZSB1c2VkLiBUaGVyZSBpcyBhbHNvIGEgc3BlY2lhbCB2YWx1ZSB3aGljaCBjYW4gYmUgcmV0dXJuZWQKK2J5IHRoZSBzdGFydCgpIGZ1bmN0aW9uIGNhbGxlZCBTRVFfU1RBUlRfVE9LRU47IGl0IGNhbiBiZSB1c2VkIGlmIHlvdSB3aXNoCit0byBpbnN0cnVjdCB5b3VyIHNob3coKSBmdW5jdGlvbiAoZGVzY3JpYmVkIGJlbG93KSB0byBwcmludCBhIGhlYWRlciBhdCB0aGUKK3RvcCBvZiB0aGUgb3V0cHV0LiBTRVFfU1RBUlRfVE9LRU4gc2hvdWxkIG9ubHkgYmUgdXNlZCBpZiB0aGUgb2Zmc2V0IGlzCit6ZXJvLCBob3dldmVyLgorCitUaGUgbmV4dCBmdW5jdGlvbiB0byBpbXBsZW1lbnQgaXMgY2FsbGVkLCBhbWF6aW5nbHksIG5leHQoKTsgaXRzIGpvYiBpcyB0bworbW92ZSB0aGUgaXRlcmF0b3IgZm9yd2FyZCB0byB0aGUgbmV4dCBwb3NpdGlvbiBpbiB0aGUgc2VxdWVuY2UuICBUaGUKK2V4YW1wbGUgbW9kdWxlIGNhbiBzaW1wbHkgaW5jcmVtZW50IHRoZSBwb3NpdGlvbiBieSBvbmU7IG1vcmUgdXNlZnVsCittb2R1bGVzIHdpbGwgZG8gd2hhdCBpcyBuZWVkZWQgdG8gc3RlcCB0aHJvdWdoIHNvbWUgZGF0YSBzdHJ1Y3R1cmUuIFRoZQorbmV4dCgpIGZ1bmN0aW9uIHJldHVybnMgYSBuZXcgaXRlcmF0b3IsIG9yIE5VTEwgaWYgdGhlIHNlcXVlbmNlIGlzCitjb21wbGV0ZS4gSGVyZSdzIHRoZSBleGFtcGxlIHZlcnNpb246CisKKwlzdGF0aWMgdm9pZCAqY3Rfc2VxX25leHQoc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICp2LCBsb2ZmX3QgKnBvcykKKwl7CisJICAgICAgICBsb2ZmX3QgKnNwb3MgPSB2OworCSAgICAgICAgKnBvcyA9ICsrKnNwb3M7CisJICAgICAgICByZXR1cm4gc3BvczsKKwl9CisKK1RoZSBzdG9wKCkgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gaXRlcmF0aW9uIGlzIGNvbXBsZXRlOyBpdHMgam9iLCBvZgorY291cnNlLCBpcyB0byBjbGVhbiB1cC4gSWYgZHluYW1pYyBtZW1vcnkgaXMgYWxsb2NhdGVkIGZvciB0aGUgaXRlcmF0b3IsCitzdG9wKCkgaXMgdGhlIHBsYWNlIHRvIGZyZWUgaXQuCisKKwlzdGF0aWMgdm9pZCBjdF9zZXFfc3RvcChzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKnYpCisJeworCSAgICAgICAga2ZyZWUodik7CisJfQorCitGaW5hbGx5LCB0aGUgc2hvdygpIGZ1bmN0aW9uIHNob3VsZCBmb3JtYXQgdGhlIG9iamVjdCBjdXJyZW50bHkgcG9pbnRlZCB0bworYnkgdGhlIGl0ZXJhdG9yIGZvciBvdXRwdXQuIEl0IHNob3VsZCByZXR1cm4gemVybywgb3IgYW4gZXJyb3IgY29kZSBpZgorc29tZXRoaW5nIGdvZXMgd3JvbmcuIFRoZSBleGFtcGxlIG1vZHVsZSdzIHNob3coKSBmdW5jdGlvbiBpczoKKworCXN0YXRpYyBpbnQgY3Rfc2VxX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICp2KQorCXsKKwkgICAgICAgIGxvZmZfdCAqc3BvcyA9IHY7CisJICAgICAgICBzZXFfcHJpbnRmKHMsICIlbGxkXG4iLCAobG9uZyBsb25nKSpzcG9zKTsKKwkgICAgICAgIHJldHVybiAwOworCX0KKworV2Ugd2lsbCBsb29rIGF0IHNlcV9wcmludGYoKSBpbiBhIG1vbWVudC4gQnV0IGZpcnN0LCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUKK3NlcV9maWxlIGl0ZXJhdG9yIGlzIGZpbmlzaGVkIGJ5IGNyZWF0aW5nIGEgc2VxX29wZXJhdGlvbnMgc3RydWN0dXJlIHdpdGgKK3RoZSBmb3VyIGZ1bmN0aW9ucyB3ZSBoYXZlIGp1c3QgZGVmaW5lZDoKKworCXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc2VxX29wZXJhdGlvbnMgY3Rfc2VxX29wcyA9IHsKKwkgICAgICAgIC5zdGFydCA9IGN0X3NlcV9zdGFydCwKKwkgICAgICAgIC5uZXh0ICA9IGN0X3NlcV9uZXh0LAorCSAgICAgICAgLnN0b3AgID0gY3Rfc2VxX3N0b3AsCisJICAgICAgICAuc2hvdyAgPSBjdF9zZXFfc2hvdworCX07CisKK1RoaXMgc3RydWN0dXJlIHdpbGwgYmUgbmVlZGVkIHRvIHRpZSBvdXIgaXRlcmF0b3IgdG8gdGhlIC9wcm9jIGZpbGUgaW4KK2EgbGl0dGxlIGJpdC4KKworSXQncyB3b3J0aCBub3RpbmcgdGhhdCB0aGUgaXRlcmF0b3IgdmFsdWUgcmV0dXJuZWQgYnkgc3RhcnQoKSBhbmQKK21hbmlwdWxhdGVkIGJ5IHRoZSBvdGhlciBmdW5jdGlvbnMgaXMgY29uc2lkZXJlZCB0byBiZSBjb21wbGV0ZWx5IG9wYXF1ZSBieQordGhlIHNlcV9maWxlIGNvZGUuIEl0IGNhbiB0aHVzIGJlIGFueXRoaW5nIHRoYXQgaXMgdXNlZnVsIGluIHN0ZXBwaW5nCit0aHJvdWdoIHRoZSBkYXRhIHRvIGJlIG91dHB1dC4gQ291bnRlcnMgY2FuIGJlIHVzZWZ1bCwgYnV0IGl0IGNvdWxkIGFsc28gYmUKK2EgZGlyZWN0IHBvaW50ZXIgaW50byBhbiBhcnJheSBvciBsaW5rZWQgbGlzdC4gQW55dGhpbmcgZ29lcywgYXMgbG9uZyBhcwordGhlIHByb2dyYW1tZXIgaXMgYXdhcmUgdGhhdCB0aGluZ3MgY2FuIGhhcHBlbiBiZXR3ZWVuIGNhbGxzIHRvIHRoZQoraXRlcmF0b3IgZnVuY3Rpb24uIEhvd2V2ZXIsIHRoZSBzZXFfZmlsZSBjb2RlIChieSBkZXNpZ24pIHdpbGwgbm90IHNsZWVwCitiZXR3ZWVuIHRoZSBjYWxscyB0byBzdGFydCgpIGFuZCBzdG9wKCksIHNvIGhvbGRpbmcgYSBsb2NrIGR1cmluZyB0aGF0IHRpbWUKK2lzIGEgcmVhc29uYWJsZSB0aGluZyB0byBkby4gVGhlIHNlcV9maWxlIGNvZGUgd2lsbCBhbHNvIGF2b2lkIHRha2luZyBhbnkKK290aGVyIGxvY2tzIHdoaWxlIHRoZSBpdGVyYXRvciBpcyBhY3RpdmUuCisKKworRm9ybWF0dGVkIG91dHB1dAorCitUaGUgc2VxX2ZpbGUgY29kZSBtYW5hZ2VzIHBvc2l0aW9uaW5nIHdpdGhpbiB0aGUgb3V0cHV0IGNyZWF0ZWQgYnkgdGhlCitpdGVyYXRvciBhbmQgZ2V0dGluZyBpdCBpbnRvIHRoZSB1c2VyJ3MgYnVmZmVyLiBCdXQsIGZvciB0aGF0IHRvIHdvcmssIHRoYXQKK291dHB1dCBtdXN0IGJlIHBhc3NlZCB0byB0aGUgc2VxX2ZpbGUgY29kZS4gU29tZSB1dGlsaXR5IGZ1bmN0aW9ucyBoYXZlCitiZWVuIGRlZmluZWQgd2hpY2ggbWFrZSB0aGlzIHRhc2sgZWFzeS4KKworTW9zdCBjb2RlIHdpbGwgc2ltcGx5IHVzZSBzZXFfcHJpbnRmKCksIHdoaWNoIHdvcmtzIHByZXR0eSBtdWNoIGxpa2UKK3ByaW50aygpLCBidXQgd2hpY2ggcmVxdWlyZXMgdGhlIHNlcV9maWxlIHBvaW50ZXIgYXMgYW4gYXJndW1lbnQuIEl0IGlzCitjb21tb24gdG8gaWdub3JlIHRoZSByZXR1cm4gdmFsdWUgZnJvbSBzZXFfcHJpbnRmKCksIGJ1dCBhIGZ1bmN0aW9uCitwcm9kdWNpbmcgY29tcGxpY2F0ZWQgb3V0cHV0IG1heSB3YW50IHRvIGNoZWNrIHRoYXQgdmFsdWUgYW5kIHF1aXQgaWYKK3NvbWV0aGluZyBub24temVybyBpcyByZXR1cm5lZDsgYW4gZXJyb3IgcmV0dXJuIG1lYW5zIHRoYXQgdGhlIHNlcV9maWxlCitidWZmZXIgaGFzIGJlZW4gZmlsbGVkIGFuZCBmdXJ0aGVyIG91dHB1dCB3aWxsIGJlIGRpc2NhcmRlZC4KKworRm9yIHN0cmFpZ2h0IGNoYXJhY3RlciBvdXRwdXQsIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIG1heSBiZSB1c2VkOgorCisJaW50IHNlcV9wdXRjKHN0cnVjdCBzZXFfZmlsZSAqbSwgY2hhciBjKTsKKwlpbnQgc2VxX3B1dHMoc3RydWN0IHNlcV9maWxlICptLCBjb25zdCBjaGFyICpzKTsKKwlpbnQgc2VxX2VzY2FwZShzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIGNvbnN0IGNoYXIgKnMsIGNvbnN0IGNoYXIgKmVzYyk7CisKK1RoZSBmaXJzdCB0d28gb3V0cHV0IGEgc2luZ2xlIGNoYXJhY3RlciBhbmQgYSBzdHJpbmcsIGp1c3QgbGlrZSBvbmUgd291bGQKK2V4cGVjdC4gc2VxX2VzY2FwZSgpIGlzIGxpa2Ugc2VxX3B1dHMoKSwgZXhjZXB0IHRoYXQgYW55IGNoYXJhY3RlciBpbiBzCit3aGljaCBpcyBpbiB0aGUgc3RyaW5nIGVzYyB3aWxsIGJlIHJlcHJlc2VudGVkIGluIG9jdGFsIGZvcm0gaW4gdGhlIG91dHB1dC4KKworVGhlcmUgaXMgYWxzbyBhIGZ1bmN0aW9uIGZvciBwcmludGluZyBmaWxlbmFtZXM6CisKKwlpbnQgc2VxX3BhdGgoc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgcGF0aCAqcGF0aCwgY2hhciAqZXNjKTsKKworSGVyZSwgcGF0aCBpbmRpY2F0ZXMgdGhlIGZpbGUgb2YgaW50ZXJlc3QsIGFuZCBlc2MgaXMgYSBzZXQgb2YgY2hhcmFjdGVycword2hpY2ggc2hvdWxkIGJlIGVzY2FwZWQgaW4gdGhlIG91dHB1dC4KKworCitNYWtpbmcgaXQgYWxsIHdvcmsKKworU28gZmFyLCB3ZSBoYXZlIGEgbmljZSBzZXQgb2YgZnVuY3Rpb25zIHdoaWNoIGNhbiBwcm9kdWNlIG91dHB1dCB3aXRoaW4gdGhlCitzZXFfZmlsZSBzeXN0ZW0sIGJ1dCB3ZSBoYXZlIG5vdCB5ZXQgdHVybmVkIHRoZW0gaW50byBhIGZpbGUgdGhhdCBhIHVzZXIKK2NhbiBzZWUuIENyZWF0aW5nIGEgZmlsZSB3aXRoaW4gdGhlIGtlcm5lbCByZXF1aXJlcywgb2YgY291cnNlLCB0aGUKK2NyZWF0aW9uIG9mIGEgc2V0IG9mIGZpbGVfb3BlcmF0aW9ucyB3aGljaCBpbXBsZW1lbnQgdGhlIG9wZXJhdGlvbnMgb24gdGhhdAorZmlsZS4gVGhlIHNlcV9maWxlIGludGVyZmFjZSBwcm92aWRlcyBhIHNldCBvZiBjYW5uZWQgb3BlcmF0aW9ucyB3aGljaCBkbworbW9zdCBvZiB0aGUgd29yay4gVGhlIHZpcnR1YWwgZmlsZSBhdXRob3Igc3RpbGwgbXVzdCBpbXBsZW1lbnQgdGhlIG9wZW4oKQorbWV0aG9kLCBob3dldmVyLCB0byBob29rIGV2ZXJ5dGhpbmcgdXAuIFRoZSBvcGVuIGZ1bmN0aW9uIGlzIG9mdGVuIGEgc2luZ2xlCitsaW5lLCBhcyBpbiB0aGUgZXhhbXBsZSBtb2R1bGU6CisKKwlzdGF0aWMgaW50IGN0X29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpCisJeworCQlyZXR1cm4gc2VxX29wZW4oZmlsZSwgJmN0X3NlcV9vcHMpOworCX0KKworSGVyZSwgdGhlIGNhbGwgdG8gc2VxX29wZW4oKSB0YWtlcyB0aGUgc2VxX29wZXJhdGlvbnMgc3RydWN0dXJlIHdlIGNyZWF0ZWQKK2JlZm9yZSwgYW5kIGdldHMgc2V0IHVwIHRvIGl0ZXJhdGUgdGhyb3VnaCB0aGUgdmlydHVhbCBmaWxlLgorCitPbiBhIHN1Y2Nlc3NmdWwgb3Blbiwgc2VxX29wZW4oKSBzdG9yZXMgdGhlIHN0cnVjdCBzZXFfZmlsZSBwb2ludGVyIGluCitmaWxlLT5wcml2YXRlX2RhdGEuIElmIHlvdSBoYXZlIGFuIGFwcGxpY2F0aW9uIHdoZXJlIHRoZSBzYW1lIGl0ZXJhdG9yIGNhbgorYmUgdXNlZCBmb3IgbW9yZSB0aGFuIG9uZSBmaWxlLCB5b3UgY2FuIHN0b3JlIGFuIGFyYml0cmFyeSBwb2ludGVyIGluIHRoZQorcHJpdmF0ZSBmaWVsZCBvZiB0aGUgc2VxX2ZpbGUgc3RydWN0dXJlOyB0aGF0IHZhbHVlIGNhbiB0aGVuIGJlIHJldHJpZXZlZAorYnkgdGhlIGl0ZXJhdG9yIGZ1bmN0aW9ucy4KKworVGhlIG90aGVyIG9wZXJhdGlvbnMgb2YgaW50ZXJlc3QgLSByZWFkKCksIGxsc2VlaygpLCBhbmQgcmVsZWFzZSgpIC0gYXJlCithbGwgaW1wbGVtZW50ZWQgYnkgdGhlIHNlcV9maWxlIGNvZGUgaXRzZWxmLiBTbyBhIHZpcnR1YWwgZmlsZSdzCitmaWxlX29wZXJhdGlvbnMgc3RydWN0dXJlIHdpbGwgbG9vayBsaWtlOgorCisJc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgY3RfZmlsZV9vcHMgPSB7CisJICAgICAgICAub3duZXIgICA9IFRISVNfTU9EVUxFLAorCSAgICAgICAgLm9wZW4gICAgPSBjdF9vcGVuLAorCSAgICAgICAgLnJlYWQgICAgPSBzZXFfcmVhZCwKKwkgICAgICAgIC5sbHNlZWsgID0gc2VxX2xzZWVrLAorCSAgICAgICAgLnJlbGVhc2UgPSBzZXFfcmVsZWFzZQorCX07CisKK1RoZXJlIGlzIGFsc28gYSBzZXFfcmVsZWFzZV9wcml2YXRlKCkgd2hpY2ggcGFzc2VzIHRoZSBjb250ZW50cyBvZiB0aGUKK3NlcV9maWxlIHByaXZhdGUgZmllbGQgdG8ga2ZyZWUoKSBiZWZvcmUgcmVsZWFzaW5nIHRoZSBzdHJ1Y3R1cmUuCisKK1RoZSBmaW5hbCBzdGVwIGlzIHRoZSBjcmVhdGlvbiBvZiB0aGUgL3Byb2MgZmlsZSBpdHNlbGYuIEluIHRoZSBleGFtcGxlCitjb2RlLCB0aGF0IGlzIGRvbmUgaW4gdGhlIGluaXRpYWxpemF0aW9uIGNvZGUgaW4gdGhlIHVzdWFsIHdheToKKworCXN0YXRpYyBpbnQgY3RfaW5pdCh2b2lkKQorCXsKKwkgICAgICAgIHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqZW50cnk7CisKKwkgICAgICAgIGVudHJ5ID0gY3JlYXRlX3Byb2NfZW50cnkoInNlcXVlbmNlIiwgMCwgTlVMTCk7CisJICAgICAgICBpZiAoZW50cnkpCisJICAgICAgICAgICAgICAgIGVudHJ5LT5wcm9jX2ZvcHMgPSAmY3RfZmlsZV9vcHM7CisJICAgICAgICByZXR1cm4gMDsKKwl9CisKKwltb2R1bGVfaW5pdChjdF9pbml0KTsKKworQW5kIHRoYXQgaXMgcHJldHR5IG11Y2ggaXQuCisKKworc2VxX2xpc3QKKworSWYgeW91ciBmaWxlIHdpbGwgYmUgaXRlcmF0aW5nIHRocm91Z2ggYSBsaW5rZWQgbGlzdCwgeW91IG1heSBmaW5kIHRoZXNlCityb3V0aW5lcyB1c2VmdWw6CisKKwlzdHJ1Y3QgbGlzdF9oZWFkICpzZXFfbGlzdF9zdGFydChzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkLAorCSAgICAgICAJCSAJCSBsb2ZmX3QgcG9zKTsKKwlzdHJ1Y3QgbGlzdF9oZWFkICpzZXFfbGlzdF9zdGFydF9oZWFkKHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsCisJCQkgCQkgICAgICBsb2ZmX3QgcG9zKTsKKwlzdHJ1Y3QgbGlzdF9oZWFkICpzZXFfbGlzdF9uZXh0KHZvaWQgKnYsIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsCisJCQkJCWxvZmZfdCAqcHBvcyk7CisKK1RoZXNlIGhlbHBlcnMgd2lsbCBpbnRlcnByZXQgcG9zIGFzIGEgcG9zaXRpb24gd2l0aGluIHRoZSBsaXN0IGFuZCBpdGVyYXRlCithY2NvcmRpbmdseS4gIFlvdXIgc3RhcnQoKSBhbmQgbmV4dCgpIGZ1bmN0aW9ucyBuZWVkIG9ubHkgaW52b2tlIHRoZQorc2VxX2xpc3RfKiBoZWxwZXJzIHdpdGggYSBwb2ludGVyIHRvIHRoZSBhcHByb3ByaWF0ZSBsaXN0X2hlYWQgc3RydWN0dXJlLgorCisKK1RoZSBleHRyYS1zaW1wbGUgdmVyc2lvbgorCitGb3IgZXh0cmVtZWx5IHNpbXBsZSB2aXJ0dWFsIGZpbGVzLCB0aGVyZSBpcyBhbiBldmVuIGVhc2llciBpbnRlcmZhY2UuICBBCittb2R1bGUgY2FuIGRlZmluZSBvbmx5IHRoZSBzaG93KCkgZnVuY3Rpb24sIHdoaWNoIHNob3VsZCBjcmVhdGUgYWxsIHRoZQorb3V0cHV0IHRoYXQgdGhlIHZpcnR1YWwgZmlsZSB3aWxsIGNvbnRhaW4uIFRoZSBmaWxlJ3Mgb3BlbigpIG1ldGhvZCB0aGVuCitjYWxsczoKKworCWludCBzaW5nbGVfb3BlbihzdHJ1Y3QgZmlsZSAqZmlsZSwKKwkgICAgICAgICAgICAgICAgaW50ICgqc2hvdykoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpwKSwKKwkgICAgICAgICAgICAgICAgdm9pZCAqZGF0YSk7CisKK1doZW4gb3V0cHV0IHRpbWUgY29tZXMsIHRoZSBzaG93KCkgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgb25jZS4gVGhlIGRhdGEKK3ZhbHVlIGdpdmVuIHRvIHNpbmdsZV9vcGVuKCkgY2FuIGJlIGZvdW5kIGluIHRoZSBwcml2YXRlIGZpZWxkIG9mIHRoZQorc2VxX2ZpbGUgc3RydWN0dXJlLiBXaGVuIHVzaW5nIHNpbmdsZV9vcGVuKCksIHRoZSBwcm9ncmFtbWVyIHNob3VsZCB1c2UKK3NpbmdsZV9yZWxlYXNlKCkgaW5zdGVhZCBvZiBzZXFfcmVsZWFzZSgpIGluIHRoZSBmaWxlX29wZXJhdGlvbnMgc3RydWN0dXJlCit0byBhdm9pZCBhIG1lbW9yeSBsZWFrLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ocnRpbWVycy9oaWdocmVzLnR4dCBiL0RvY3VtZW50YXRpb24vaHJ0aW1lcnMvaGlnaHJlcy50eHQKaW5kZXggY2UwZTlhOS4uYTczZWNmNSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9ocnRpbWVycy9oaWdocmVzLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2hydGltZXJzL2hpZ2hyZXMudHh0CkBAIC05OCw3ICs5OCw3IEBACiBldmVudCBkZXZpY2VzIGFyZSB1c2VkIHRvIHByb3ZpZGUgbG9jYWwgQ1BVIGZ1bmN0aW9uYWxpdHkgc3VjaCBhcyBwcm9jZXNzCiBhY2NvdW50aW5nLCBwcm9maWxpbmcsIGFuZCBoaWdoIHJlc29sdXRpb24gdGltZXJzLgogCi1UaGUgbWFuYWdlbWVudCBsYXllciBhc3NpZ25lcyBvbmUgb3IgbW9yZSBvZiB0aGUgZm9sbGl3aW5nIGZ1bmN0aW9ucyB0byBhIGNsb2NrCitUaGUgbWFuYWdlbWVudCBsYXllciBhc3NpZ25zIG9uZSBvciBtb3JlIG9mIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHRvIGEgY2xvY2sKIGV2ZW50IGRldmljZToKICAgICAgIC0gc3lzdGVtIGdsb2JhbCBwZXJpb2RpYyB0aWNrIChqaWZmaWVzIHVwZGF0ZSkKICAgICAgIC0gY3B1IGxvY2FsIHVwZGF0ZV9wcm9jZXNzX3RpbWVzCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3X3JhbmRvbS50eHQgYi9Eb2N1bWVudGF0aW9uL2h3X3JhbmRvbS50eHQKaW5kZXggYmI1OGMzNi4uNjkwZjUyNSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9od19yYW5kb20udHh0CisrKyBiL0RvY3VtZW50YXRpb24vaHdfcmFuZG9tLnR4dApAQCAtMSwyMCArMSw1NCBAQAotCUhhcmR3YXJlIGRyaXZlciBmb3IgSW50ZWwvQU1EL1ZJQSBSYW5kb20gTnVtYmVyIEdlbmVyYXRvcnMgKFJORykKLQlDb3B5cmlnaHQgMjAwMCwyMDAxIEplZmYgR2FyemlrIDxqZ2FyemlrQHBvYm94LmNvbT4KLQlDb3B5cmlnaHQgMjAwMCwyMDAxIFBoaWxpcHAgUnVtcGYgPHBydW1wZkBtYW5kcmFrZXNvZnQuY29tPgotCiBJbnRyb2R1Y3Rpb246CiAKLQlUaGUgaHdfcmFuZG9tIGRldmljZSBkcml2ZXIgaXMgc29mdHdhcmUgdGhhdCBtYWtlcyB1c2Ugb2YgYQorCVRoZSBod19yYW5kb20gZnJhbWV3b3JrIGlzIHNvZnR3YXJlIHRoYXQgbWFrZXMgdXNlIG9mIGEKIAlzcGVjaWFsIGhhcmR3YXJlIGZlYXR1cmUgb24geW91ciBDUFUgb3IgbW90aGVyYm9hcmQsCi0JYSBSYW5kb20gTnVtYmVyIEdlbmVyYXRvciAoUk5HKS4KKwlhIFJhbmRvbSBOdW1iZXIgR2VuZXJhdG9yIChSTkcpLiAgVGhlIHNvZnR3YXJlIGhhcyB0d28gcGFydHM6CisJYSBjb3JlIHByb3ZpZGluZyB0aGUgL2Rldi9od19yYW5kb20gY2hhcmFjdGVyIGRldmljZSBhbmQgaXRzCisJc3lzZnMgc3VwcG9ydCwgcGx1cyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciB0aGF0IHBsdWdzCisJaW50byB0aGF0IGNvcmUuCiAKLQlJbiBvcmRlciB0byBtYWtlIGVmZmVjdGl2ZSB1c2Ugb2YgdGhpcyBkZXZpY2UgZHJpdmVyLCB5b3UKKwlUbyBtYWtlIHRoZSBtb3N0IGVmZmVjdGl2ZSB1c2Ugb2YgdGhlc2UgbWVjaGFuaXNtcywgeW91CiAJc2hvdWxkIGRvd25sb2FkIHRoZSBzdXBwb3J0IHNvZnR3YXJlIGFzIHdlbGwuICBEb3dubG9hZCB0aGUKIAlsYXRlc3QgdmVyc2lvbiBvZiB0aGUgInJuZy10b29scyIgcGFja2FnZSBmcm9tIHRoZQogCWh3X3JhbmRvbSBkcml2ZXIncyBvZmZpY2lhbCBXZWIgc2l0ZToKIAogCQlodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2drZXJuZWwvCiAKKwlUaG9zZSB0b29scyB1c2UgL2Rldi9od19yYW5kb20gdG8gZmlsbCB0aGUga2VybmVsIGVudHJvcHkgcG9vbCwKKwl3aGljaCBpcyB1c2VkIGludGVybmFsbHkgYW5kIGV4cG9ydGVkIGJ5IHRoZSAvZGV2L3VyYW5kb20gYW5kCisJL2Rldi9yYW5kb20gc3BlY2lhbCBmaWxlcy4KKworVGhlb3J5IG9mIG9wZXJhdGlvbjoKKworCUNIQVJBQ1RFUiBERVZJQ0UuICBVc2luZyB0aGUgc3RhbmRhcmQgb3BlbigpCisJYW5kIHJlYWQoKSBzeXN0ZW0gY2FsbHMsIHlvdSBjYW4gcmVhZCByYW5kb20gZGF0YSBmcm9tCisJdGhlIGhhcmR3YXJlIFJORyBkZXZpY2UuICBUaGlzIGRhdGEgaXMgTk9UIENIRUNLRUQgYnkgYW55CisJZml0bmVzcyB0ZXN0cywgYW5kIGNvdWxkIHBvdGVudGlhbGx5IGJlIGJvZ3VzIChpZiB0aGUKKwloYXJkd2FyZSBpcyBmYXVsdHkgb3IgaGFzIGJlZW4gdGFtcGVyZWQgd2l0aCkuICBEYXRhIGlzIG9ubHkKKwlvdXRwdXQgaWYgdGhlIGhhcmR3YXJlICJoYXMtZGF0YSIgZmxhZyBpcyBzZXQsIGJ1dCBuZXZlcnRoZWxlc3MKKwlhIHNlY3VyaXR5LWNvbnNjaW91cyBwZXJzb24gd291bGQgcnVuIGZpdG5lc3MgdGVzdHMgb24gdGhlCisJZGF0YSBiZWZvcmUgYXNzdW1pbmcgaXQgaXMgdHJ1bHkgcmFuZG9tLgorCisJVGhlIHJuZy10b29scyBwYWNrYWdlIHVzZXMgc3VjaCB0ZXN0cyBpbiAicm5nZCIsIGFuZCBsZXRzIHlvdQorCXJ1biB0aGVtIGJ5IGhhbmQgd2l0aCBhICJybmd0ZXN0IiB1dGlsaXR5LgorCisJL2Rldi9od19yYW5kb20gaXMgY2hhciBkZXZpY2UgbWFqb3IgMTAsIG1pbm9yIDE4My4KKworCUNMQVNTIERFVklDRS4gIFRoZXJlIGlzIGEgL3N5cy9jbGFzcy9taXNjL2h3X3JhbmRvbSBub2RlIHdpdGgKKwl0d28gdW5pcXVlIGF0dHJpYnV0ZXMsICJybmdfYXZhaWxhYmxlIiBhbmQgInJuZ19jdXJyZW50Ii4gIFRoZQorCSJybmdfYXZhaWxhYmxlIiBhdHRyaWJ1dGUgbGlzdHMgdGhlIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlcnMKKwlhdmFpbGFibGUsIHdoaWxlICJybmdfY3VycmVudCIgbGlzdHMgdGhlIG9uZSB3aGljaCBpcyBjdXJyZW50bHkKKwljb25uZWN0ZWQgdG8gL2Rldi9od19yYW5kb20uICBJZiB5b3VyIHN5c3RlbSBoYXMgbW9yZSB0aGFuIG9uZQorCVJORyBhdmFpbGFibGUsIHlvdSBtYXkgY2hhbmdlIHRoZSBvbmUgdXNlZCBieSB3cml0aW5nIGEgbmFtZSBmcm9tCisJdGhlIGxpc3QgaW4gInJuZ19hdmFpbGFibGUiIGludG8gInJuZ19jdXJyZW50Ii4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworCUhhcmR3YXJlIGRyaXZlciBmb3IgSW50ZWwvQU1EL1ZJQSBSYW5kb20gTnVtYmVyIEdlbmVyYXRvcnMgKFJORykKKwlDb3B5cmlnaHQgMjAwMCwyMDAxIEplZmYgR2FyemlrIDxqZ2FyemlrQHBvYm94LmNvbT4KKwlDb3B5cmlnaHQgMjAwMCwyMDAxIFBoaWxpcHAgUnVtcGYgPHBydW1wZkBtYW5kcmFrZXNvZnQuY29tPgorCisKIEFib3V0IHRoZSBJbnRlbCBSTkcgaGFyZHdhcmUsIGZyb20gdGhlIGZpcm13YXJlIGh1YiBkYXRhc2hlZXQ6CiAKIAlUaGUgRmlybXdhcmUgSHViIGludGVncmF0ZXMgYSBSYW5kb20gTnVtYmVyIEdlbmVyYXRvciAoUk5HKQpAQCAtMjUsMjAgKzU5LDcgQEAKIAlhY2Nlc3MgdG8gb3VyIFJORyBmb3IgdXNlIGFzIGEgc2VjdXJpdHkgZmVhdHVyZS4gQXQgdGhpcyB0aW1lLAogCXRoZSBSTkcgaXMgb25seSB0byBiZSB1c2VkIHdpdGggYSBzeXN0ZW0gaW4gYW4gT1MtcHJlc2VudCBzdGF0ZS4KIAotVGhlb3J5IG9mIG9wZXJhdGlvbjoKLQotCUNoYXJhY3RlciBkcml2ZXIuICBVc2luZyB0aGUgc3RhbmRhcmQgb3BlbigpCi0JYW5kIHJlYWQoKSBzeXN0ZW0gY2FsbHMsIHlvdSBjYW4gcmVhZCByYW5kb20gZGF0YSBmcm9tCi0JdGhlIGhhcmR3YXJlIFJORyBkZXZpY2UuICBUaGlzIGRhdGEgaXMgTk9UIENIRUNLRUQgYnkgYW55Ci0JZml0bmVzcyB0ZXN0cywgYW5kIGNvdWxkIHBvdGVudGlhbGx5IGJlIGJvZ3VzIChpZiB0aGUKLQloYXJkd2FyZSBpcyBmYXVsdHkgb3IgaGFzIGJlZW4gdGFtcGVyZWQgd2l0aCkuICBEYXRhIGlzIG9ubHkKLQlvdXRwdXQgaWYgdGhlIGhhcmR3YXJlICJoYXMtZGF0YSIgZmxhZyBpcyBzZXQsIGJ1dCBuZXZlcnRoZWxlc3MKLQlhIHNlY3VyaXR5LWNvbnNjaW91cyBwZXJzb24gd291bGQgcnVuIGZpdG5lc3MgdGVzdHMgb24gdGhlCi0JZGF0YSBiZWZvcmUgYXNzdW1pbmcgaXQgaXMgdHJ1bHkgcmFuZG9tLgotCi0JL2Rldi9od3JhbmRvbSBpcyBjaGFyIGRldmljZSBtYWpvciAxMCwgbWlub3IgMTgzLgotCi1Ecml2ZXIgbm90ZXM6CitJbnRlbCBSTkcgRHJpdmVyIG5vdGVzOgogCiAJKiBGSVhNRTogc3VwcG9ydCBwb2xsKDIpCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaTM4Ni9JTy1BUElDLnR4dCBiL0RvY3VtZW50YXRpb24vaTM4Ni9JTy1BUElDLnR4dAppbmRleCBmOTUxNjY2Li4zMGI0YzcxIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2kzODYvSU8tQVBJQy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9pMzg2L0lPLUFQSUMudHh0CkBAIC03MCw3ICs3MCw3IEBACiAKIFRoZXNlIElOVEEtRCBQQ0kgSVJRcyBhcmUgYWx3YXlzICdsb2NhbCB0byB0aGUgY2FyZCcsIHRoZWlyIHJlYWwgbWVhbmluZwogZGVwZW5kcyBvbiB3aGljaCBzbG90IHRoZXkgYXJlIGluLiBJZiB5b3UgbG9vayBhdCB0aGUgZGFpc3kgY2hhaW5pbmcgZGlhZ3JhbSwKLWEgY2FyZCBpbiBzbG90NCwgaXNzdWluZyBJTlRBIElSUSwgaXQgd2lsbCBlbmQgdXAgYXMgYSBzaWduYWwgb24gUElSUTIgb2YKK2EgY2FyZCBpbiBzbG90NCwgaXNzdWluZyBJTlRBIElSUSwgaXQgd2lsbCBlbmQgdXAgYXMgYSBzaWduYWwgb24gUElSUTQgb2YKIHRoZSBQQ0kgY2hpcHNldC4gTW9zdCBjYXJkcyBpc3N1ZSBJTlRBLCB0aGlzIGNyZWF0ZXMgb3B0aW1hbCBkaXN0cmlidXRpb24KIGJldHdlZW4gdGhlIFBJUlEgbGluZXMuIChkaXN0cmlidXRpbmcgSVJRIHNvdXJjZXMgcHJvcGVybHkgaXMgbm90IGEKIG5lY2Vzc2l0eSwgUENJIElSUXMgY2FuIGJlIHNoYXJlZCBhdCB3aWxsLCBidXQgaXQncyBhIGdvb2QgZm9yIHBlcmZvcm1hbmNlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2lkZS9pZGUudHh0IGIvRG9jdW1lbnRhdGlvbi9pZGUvaWRlLnR4dAppbmRleCBlM2IzNDI1Li44MTg2NzZhIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2lkZS9pZGUudHh0CisrKyBiL0RvY3VtZW50YXRpb24vaWRlL2lkZS50eHQKQEAgLTEwNSw3ICsxMDUsNyBAQAogRm9yIHJlYWxseSB3ZWlyZCBzaXR1YXRpb25zLCB0aGUgYXBwYXJlbnQgKGZkaXNrKSBnZW9tZXRyeSBjYW4gYWxzbyBiZSBzcGVjaWZpZWQKIG9uIHRoZSBrZXJuZWwgImNvbW1hbmQgbGluZSIgdXNpbmcgTElMTy4gIFRoZSBmb3JtYXQgb2Ygc3VjaCBsaW5lcyBpczoKIAotCWhkeD1jeWxzLGhlYWRzLHNlY3RzLHdwY29tLGlycQorCWhkeD1jeWxzLGhlYWRzLHNlY3RzCiBvcgloZHg9Y2Ryb20KIAogd2hlcmUgaGR4IGNhbiBiZSBhbnkgb2YgaGRhIHRocm91Z2ggaGRoLCBUaHJlZSB2YWx1ZXMgYXJlIHJlcXVpcmVkCkBAIC0yMTQsOSArMjE0LDkgQEAKIFN1bW1hcnkgb2YgaWRlIGRyaXZlciBwYXJhbWV0ZXJzIGZvciBrZXJuZWwgY29tbWFuZCBsaW5lCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0gImhkeD0iICBpcyByZWNvZ25pemVkIGZvciBhbGwgIngiIGZyb20gImEiIHRvICJoIiwgc3VjaCBhcyAiaGRjIi4KKyAiaGR4PSIgIGlzIHJlY29nbml6ZWQgZm9yIGFsbCAieCIgZnJvbSAiYSIgdG8gInUiLCBzdWNoIGFzICJoZGMiLgogCi0gImlkZXg9IiBpcyByZWNvZ25pemVkIGZvciBhbGwgIngiIGZyb20gIjAiIHRvICIzIiwgc3VjaCBhcyAiaWRlMSIuCisgImlkZXg9IiBpcyByZWNvZ25pemVkIGZvciBhbGwgIngiIGZyb20gIjAiIHRvICI5Iiwgc3VjaCBhcyAiaWRlMSIuCiAKICAiaGR4PW5vcHJvYmUiCQk6IGRyaXZlIG1heSBiZSBwcmVzZW50LCBidXQgZG8gbm90IHByb2JlIGZvciBpdAogCkBAIC0yMjgsMTMgKzIyOCw2IEBACiAKICAiaGR4PWN5bCxoZWFkLHNlY3QiCTogZGlzayBkcml2ZSBpcyBwcmVzZW50LCB3aXRoIHNwZWNpZmllZCBnZW9tZXRyeQogCi0gImhkeD1yZW1hcCIJCTogcmVtYXAgYWNjZXNzIG9mIHNlY3RvciAwIHRvIHNlY3RvciAxIChmb3IgRVpEcml2ZSkKLQotICJoZHg9cmVtYXA2MyIJCTogcmVtYXAgdGhlIGRyaXZlOiBhZGQgNjMgdG8gYWxsIHNlY3RvciBudW1iZXJzCi0JCQkgIChmb3IgRE0gT25UcmFjaykKLQotICJpZGV4PW5vYXV0b3R1bmUiCTogZHJpdmVyIHdpbGwgTk9UIGF0dGVtcHQgdG8gdHVuZSBpbnRlcmZhY2Ugc3BlZWQKLQogICJoZHg9YXV0b3R1bmUiCQk6IGRyaXZlciB3aWxsIGF0dGVtcHQgdG8gdHVuZSBpbnRlcmZhY2Ugc3BlZWQKIAkJCSAgdG8gdGhlIGZhc3Rlc3QgUElPIG1vZGUgc3VwcG9ydGVkLAogCQkJICBpZiBwb3NzaWJsZSBmb3IgdGhpcyBkcml2ZSBvbmx5LgpAQCAtMjQ0LDEwICsyMzcsNiBAQAogCiAgImhkeD1ub2RtYSIJCTogZGlzYWxsb3cgRE1BCiAKLSAiaGR4PXNjc2kiCQk6IHRoZSByZXR1cm4gb2YgdGhlIGlkZS1zY3NpIGZsYWcsIHRoaXMgaXMgdXNlZnVsIGZvcgotIAkJCSAgYWxsb3dpbmcgaWRlLWZsb3BweSwgaWRlLXRhcGUsIGFuZCBpZGUtY2Ryb218d3JpdGVycwotIAkJCSAgdG8gdXNlIGlkZS1zY3NpIGVtdWxhdGlvbiBvbiBhIGRldmljZSBzcGVjaWZpYyBvcHRpb24uCi0KICAiaWRlYnVzPXh4IgkJOiBpbmZvcm0gSURFIGRyaXZlciBvZiBWRVNBL1BDSSBidXMgc3BlZWQgaW4gTUh6LAogCQkJICB3aGVyZSAieHgiIGlzIGJldHdlZW4gMjAgYW5kIDY2IGluY2x1c2l2ZSwKIAkJCSAgdXNlZCB3aGVuIHR1bmluZyBjaGlwc2V0IFBJTyBtb2Rlcy4KQEAgLTI4MiwxMCArMjcxLDYgQEAKIAogICJpZGU9cmV2ZXJzZSIJCTogZm9ybWVybHkgY2FsbGVkIHRvIHBjaSBzdWItc3lzdGVtLCBidXQgbm93IGxvY2FsLgogCi1UaGUgZm9sbG93aW5nIGFyZSB2YWxpZCBPTkxZIG9uIGlkZTAsIHdoaWNoIHVzdWFsbHkgY29ycmVzcG9uZHMKLXRvIHRoZSBmaXJzdCBBVEEgaW50ZXJmYWNlIGZvdW5kIG9uIHRoZSBwYXJ0aWN1bGFyIGhvc3QsIGFuZCB0aGUgZGVmYXVsdHMgZm9yCi10aGUgYmFzZSxjdGwgcG9ydHMgbXVzdCBub3QgYmUgYWx0ZXJlZC4KLQogICJpZGU9ZG91YmxlciIJCTogcHJvYmUvc3VwcG9ydCBJREUgZG91YmxlcnMgb24gQW1pZ2EKIAogVGhlcmUgbWF5IGJlIG1vcmUgb3B0aW9ucyB0aGFuIHNob3duIC0tIHVzZSB0aGUgc291cmNlLCBMdWtlIQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pbnB1dC9ub3RpZmllci50eHQgYi9Eb2N1bWVudGF0aW9uL2lucHV0L25vdGlmaWVyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTE3MmNhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9pbnB1dC9ub3RpZmllci50eHQKQEAgLTAsMCArMSw1MiBAQAorS2V5Ym9hcmQgbm90aWZpZXIKKworT25lIGNhbiB1c2UgcmVnaXN0ZXJfa2V5Ym9hcmRfbm90aWZpZXIgdG8gZ2V0IGNhbGxlZCBiYWNrIG9uIGtleWJvYXJkCitldmVudHMgKHNlZSBrYmRfa2V5Y29kZSgpIGZ1bmN0aW9uIGZvciBkZXRhaWxzKS4gIFRoZSBwYXNzZWQgc3RydWN0dXJlIGlzCitrZXlib2FyZF9ub3RpZmllcl9wYXJhbToKKworLSAndmMnIGFsd2F5cyBwcm92aWRlIHRoZSBWQyBmb3Igd2hpY2ggdGhlIGtleWJvYXJkIGV2ZW50IGFwcGxpZXM7CistICdkb3duJyBpcyAxIGZvciBhIGtleSBwcmVzcyBldmVudCwgMCBmb3IgYSBrZXkgcmVsZWFzZTsKKy0gJ3NoaWZ0JyBpcyB0aGUgY3VycmVudCBtb2RpZmllciBzdGF0ZSwgbWFzayBiaXQgaW5kZXhlcyBhcmUgS0dfKjsKKy0gJ3ZhbHVlJyBkZXBlbmRzIG9uIHRoZSB0eXBlIG9mIGV2ZW50LgorCistIEtCRF9LRVlDT0RFIGV2ZW50cyBhcmUgYWx3YXlzIHNlbnQgYmVmb3JlIG90aGVyIGV2ZW50cywgdmFsdWUgaXMgdGhlIGtleWNvZGUuCistIEtCRF9VTkJPVU5EX0tFWUNPREUgZXZlbnRzIGFyZSBzZW50IGlmIHRoZSBrZXljb2RlIGlzIG5vdCBib3VuZCB0byBhIGtleXN5bS4KKyAgdmFsdWUgaXMgdGhlIGtleWNvZGUuCistIEtCRF9VTklDT0RFIGV2ZW50cyBhcmUgc2VudCBpZiB0aGUga2V5Y29kZSAtPiBrZXlzeW0gdHJhbnNsYXRpb24gcHJvZHVjZWQgYQorICB1bmljb2RlIGNoYXJhY3Rlci4gdmFsdWUgaXMgdGhlIHVuaWNvZGUgdmFsdWUuCistIEtCRF9LRVlTWU0gZXZlbnRzIGFyZSBzZW50IGlmIHRoZSBrZXljb2RlIC0+IGtleXN5bSB0cmFuc2xhdGlvbiBwcm9kdWNlZCBhCisgIG5vbi11bmljb2RlIGNoYXJhY3Rlci4gdmFsdWUgaXMgdGhlIGtleXN5bS4KKy0gS0JEX1BPU1RfS0VZU1lNIGV2ZW50cyBhcmUgc2VudCBhZnRlciB0aGUgdHJlYXRtZW50IG9mIG5vbi11bmljb2RlIGtleXN5bXMuCisgIFRoYXQgcGVybWl0cyBvbmUgdG8gaW5zcGVjdCB0aGUgcmVzdWx0aW5nIExFRHMgZm9yIGluc3RhbmNlLgorCitGb3IgZWFjaCBraW5kIG9mIGV2ZW50IGJ1dCB0aGUgbGFzdCwgdGhlIGNhbGxiYWNrIG1heSByZXR1cm4gTk9USUZZX1NUT1AgaW4KK29yZGVyIHRvICJlYXQiIHRoZSBldmVudDogdGhlIG5vdGlmeSBsb29wIGlzIHN0b3BwZWQgYW5kIHRoZSBrZXlib2FyZCBldmVudCBpcworZHJvcHBlZC4KKworSW4gYSByb3VnaCBDIHNuaXBwZXQsIHdlIGhhdmU6CisKK2tiZF9rZXljb2RlKGtleWNvZGUpIHsKKwkuLi4KKwlwYXJhbXMudmFsdWUgPSBrZXljb2RlOworCWlmIChub3RpZmllcl9jYWxsX2NoYWluKEtCRF9LRVlDT0RFLCZwYXJhbXMpID09IE5PVElGWV9TVE9QKQorCSAgICB8fCAhYm91bmQpIHsKKwkJbm90aWZpZXJfY2FsbF9jaGFpbihLQkRfVU5CT1VORF9LRVlDT0RFLCZwYXJhbXMpOworCQlyZXR1cm47CisJfQorCisJaWYgKHVuaWNvZGUpIHsKKwkJcGFyYW0udmFsdWUgPSB1bmljb2RlOworCQlpZiAobm90aWZpZXJfY2FsbF9jaGFpbihLQkRfVU5JQ09ERSwmcGFyYW1zKSA9PSBOT1RJRllfU1RPUCkKKwkJCXJldHVybjsKKwkJZW1pdCB1bmljb2RlOworCQlyZXR1cm47CisJfQorCisJcGFyYW1zLnZhbHVlID0ga2V5c3ltOworCWlmIChub3RpZmllcl9jYWxsX2NoYWluKEtCRF9LRVlTWU0sJnBhcmFtcykgPT0gTk9USUZZX1NUT1ApCisJCXJldHVybjsKKwlhcHBseSBrZXlzeW07CisJbm90aWZpZXJfY2FsbF9jaGFpbihLQkRfUE9TVF9LRVlTWU0sJnBhcmFtcyk7Cit9CisKK05PVEU6IFRoaXMgbm90aWZpZXIgaXMgdXN1YWxseSBjYWxsZWQgZnJvbSBpbnRlcnJ1cHQgY29udGV4dC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24va2VybmVsLXBhcmFtZXRlcnMudHh0IGIvRG9jdW1lbnRhdGlvbi9rZXJuZWwtcGFyYW1ldGVycy50eHQKaW5kZXggNTMzZTY3Zi4uZGFmZDAwMSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9rZXJuZWwtcGFyYW1ldGVycy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9rZXJuZWwtcGFyYW1ldGVycy50eHQKQEAgLTEzOCw3ICsxMzgsNyBAQAogCQkJc3RyaWN0IC0tIEJlIGxlc3MgdG9sZXJhbnQgb2YgcGxhdGZvcm1zIHRoYXQgYXJlIG5vdAogCQkJCXN0cmljdGx5IEFDUEkgc3BlY2lmaWNhdGlvbiBjb21wbGlhbnQuCiAKLQkJCVNlZSBhbHNvIERvY3VtZW50YXRpb24vcG0udHh0LCBwY2k9bm9hY3BpCisJCQlTZWUgYWxzbyBEb2N1bWVudGF0aW9uL3Bvd2VyL3BtLnR4dCwgcGNpPW5vYWNwaQogCiAJYWNwaV9hcGljX2luc3RhbmNlPQlbQUNQSSwgSU9BUElDXQogCQkJRm9ybWF0OiA8aW50PgpAQCAtMTcwLDE2ICsxNzAsOCBAQAogCWFjcGlfaXJxX2lzYT0JW0hXLEFDUEldIElmIGlycV9iYWxhbmNlLCBtYXJrIGxpc3RlZCBJUlFzIHVzZWQgYnkgSVNBCiAJCQlGb3JtYXQ6IDxpcnE+LDxpcnE+Li4uCiAKLQlhY3BpX25ld19wdHNfb3JkZXJpbmcgW0hXLEFDUEldCi0JCQlFbmZvcmNlIHRoZSBBQ1BJIDIuMCBvcmRlcmluZyBvZiB0aGUgX1BUUyBjb250cm9sCi0JCQltZXRob2Qgd3J0IHB1dHRpbmcgZGV2aWNlcyBpbnRvIGxvdyBwb3dlciBzdGF0ZXMKLQkJCWRlZmF1bHQ6IHByZSBBQ1BJIDIuMCBvcmRlcmluZyBvZiBfUFRTCi0KIAlhY3BpX25vX2F1dG9fc3NkdAlbSFcsQUNQSV0gRGlzYWJsZSBhdXRvbWF0aWMgbG9hZGluZyBvZiBTU0RUCiAKLQlhY3BpX25vX2luaXRyZF9vdmVycmlkZQlbS05MLEFDUEldCi0JCQlEaXNhYmxlIGxvYWRpbmcgY3VzdG9tIEFDUEkgdGFibGVzIGZyb20gdGhlIGluaXRyYW1mcwotCiAJYWNwaV9vc19uYW1lPQlbSFcsQUNQSV0gVGVsbCBBQ1BJIEJJT1MgdGhlIG5hbWUgb2YgdGhlIE9TCiAJCQlGb3JtYXQ6IFRvIHNwb29mIGFzIFdpbmRvd3MgOTg6ID0iTWljcm9zb2Z0IFdpbmRvd3MiCiAKQEAgLTM4Myw2ICszNzUsMTAgQEAKIAljY3dfdGltZW91dF9sb2cgW1MzOTBdCiAJCQlTZWUgRG9jdW1lbnRhdGlvbi9zMzkwL0NvbW1vbklPIGZvciBkZXRhaWxzLgogCisJY2dyb3VwX2Rpc2FibGU9IFtLTkxdIERpc2FibGUgYSBwYXJ0aWN1bGFyIGNvbnRyb2xsZXIKKwkJCUZvcm1hdDoge25hbWUgb2YgdGhlIGNvbnRyb2xsZXIocykgdG8gZGlzYWJsZX0KKwkJCQl7Q3VycmVudGx5IHN1cHBvcnRlZCBjb250cm9sbGVycyAtICJtZW1vcnkifQorCiAJY2hlY2tyZXFwcm90CVtTRUxJTlVYXSBTZXQgaW5pdGlhbCBjaGVja3JlcXByb3QgZmxhZyB2YWx1ZS4KIAkJCUZvcm1hdDogeyAiMCIgfCAiMSIgfQogCQkJU2VlIHNlY3VyaXR5L3NlbGludXgvS2NvbmZpZyBoZWxwIHRleHQuCkBAIC03MzUsNiArNzMxLDggQEAKIAkJCSAgICAgKERvbid0IGF0dGVtcHQgdG8gYmxpbmsgdGhlIGxlZHMpCiAJaTgwNDIubm9hdXgJW0hXXSBEb24ndCBjaGVjayBmb3IgYXV4aWxpYXJ5ICg9PSBtb3VzZSkgcG9ydAogCWk4MDQyLm5va2JkCVtIV10gRG9uJ3QgY2hlY2svY3JlYXRlIGtleWJvYXJkIHBvcnQKKwlpODA0Mi5ub2xvb3AJW0hXXSBEaXNhYmxlIHRoZSBBVVggTG9vcGJhY2sgY29tbWFuZCB3aGlsZSBwcm9iaW5nCisJCQkgICAgIGZvciB0aGUgQVVYIHBvcnQKIAlpODA0Mi5ub211eAlbSFddIERvbid0IGNoZWNrIHByZXNlbmNlIG9mIGFuIGFjdGl2ZSBtdWx0aXBsZXhpbmcKIAkJCSAgICAgY29udHJvbGxlcgogCWk4MDQyLm5vcG5wCVtIV10gRG9uJ3QgdXNlIEFDUElQblAgLyBQblBCSU9TIHRvIGRpc2NvdmVyIEtCRC9BVVgKQEAgLTg0Niw3ICs4NDQsNyBAQAogCQkJYXJjaC9hbHBoYS9rZXJuZWwvY29yZV9tYXJ2ZWwuYy4KIAogCWlwPQkJW0lQX1BOUF0KLQkJCVNlZSBEb2N1bWVudGF0aW9uL25mc3Jvb3QudHh0LgorCQkJU2VlIERvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvbmZzcm9vdC50eHQuCiAKIAlpcDI9CQlbSFddIFNldCBJTy9JUlEgcGFpcnMgZm9yIHVwIHRvIDQgSW50ZWxsaVBvcnQgYm9hcmRzCiAJCQlTZWUgY29tbWVudCBiZWZvcmUgaXAyX3NldHVwKCkgaW4KQEAgLTExMzEsNiArMTEyOSwxMCBAQAogCW1lbW1hcD1ubltLTUddJHNzW0tNR10KIAkJCVtLTkwsQUNQSV0gTWFyayBzcGVjaWZpYyBtZW1vcnkgYXMgcmVzZXJ2ZWQuCiAJCQlSZWdpb24gb2YgbWVtb3J5IHRvIGJlIHVzZWQsIGZyb20gc3MgdG8gc3Mrbm4uCisJCQlFeGFtcGxlOiBFeGNsdWRlIG1lbW9yeSBmcm9tIDB4MTg2OTAwMDAtMHgxODY5ZmZmZgorCQkJICAgICAgICAgbWVtbWFwPTY0SyQweDE4NjkwMDAwCisJCQkgICAgICAgICBvcgorCQkJICAgICAgICAgbWVtbWFwPTB4MTAwMDAkMHgxODY5MDAwMAogCiAJbWV5ZS4qPQkJW0hXXSBTZXQgTW90aW9uRXllIENhbWVyYSBwYXJhbWV0ZXJzCiAJCQlTZWUgRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9tZXllLnR4dC4KQEAgLTExOTYsMTAgKzExOTgsMTAgQEAKIAkJCWZpbGUgaWYgYXQgYWxsLgogCiAJbmZzYWRkcnM9CVtORlNdCi0JCQlTZWUgRG9jdW1lbnRhdGlvbi9uZnNyb290LnR4dC4KKwkJCVNlZSBEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL25mc3Jvb3QudHh0LgogCiAJbmZzcm9vdD0JW05GU10gbmZzIHJvb3QgZmlsZXN5c3RlbSBmb3IgZGlzay1sZXNzIGJveGVzLgotCQkJU2VlIERvY3VtZW50YXRpb24vbmZzcm9vdC50eHQuCisJCQlTZWUgRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9uZnNyb290LnR4dC4KIAogCW5mcy5jYWxsYmFja190Y3Bwb3J0PQogCQkJW05GU10gc2V0IHRoZSBUQ1AgcG9ydCBvbiB3aGljaCB0aGUgTkZTdjQgY2FsbGJhY2sKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbGFwdG9wcy8wMC1JTkRFWCBiL0RvY3VtZW50YXRpb24vbGFwdG9wcy8wMC1JTkRFWAppbmRleCA3MjljMmMwLi5lZTU2OTJiIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2xhcHRvcHMvMDAtSU5ERVgKKysrIGIvRG9jdW1lbnRhdGlvbi9sYXB0b3BzLzAwLUlOREVYCkBAIC0yLDYgKzIsOCBAQAogCS0gVGhpcyBmaWxlCiBhY2VyLXdtaS50eHQKIAktIGluZm9ybWF0aW9uIG9uIHRoZSBBY2VyIExhcHRvcCBXTUkgRXh0cmFzIGRyaXZlci4KK2xhcHRvcC1tb2RlLnR4dAorCS0gaG93IHRvIGNvbnNlcnZlIGJhdHRlcnkgcG93ZXIgdXNpbmcgbGFwdG9wLW1vZGUuCiBzb255LWxhcHRvcC50eHQKIAktIFNvbnkgTm90ZWJvb2sgQ29udHJvbCBEcml2ZXIgKFNOQykgUmVhZG1lLgogc29ueXBpLnR4dApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9sYXB0b3BzL2FjZXItd21pLnR4dCBiL0RvY3VtZW50YXRpb24vbGFwdG9wcy9hY2VyLXdtaS50eHQKaW5kZXggYjA2Njk2My4uMjNkZjA1MSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9sYXB0b3BzL2FjZXItd21pLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2xhcHRvcHMvYWNlci13bWkudHh0CkBAIC00OCw3ICs0OCw3IEBACiAKIFRvIHNlbmQgbWUgdGhlIERTRFQsIGFzIHJvb3Qvc3VkbzoKIAotY2F0IC9zeXMvZmlybXdhcmUvYWNwaS9EU0RUID4gZHNkdAorY2F0IC9zeXMvZmlybXdhcmUvYWNwaS90YWJsZXMvRFNEVCA+IGRzZHQKIAogQW5kIHNlbmQgbWUgdGhlIHJlc3VsdGluZyAnZHNkdCcgZmlsZS4KIApAQCAtMTY5LDcgKzE2OSw3IEBACiAKIFRoZSBMRUQgaXMgZXhwb3NlZCB0aHJvdWdoIHRoZSBMRUQgc3Vic3lzdGVtLCBhbmQgY2FuIGJlIGZvdW5kIGluOgogCi0vc3lzL2RldmljZXMvcGxhdGZvcm0vYWNlci13bWkvbGVkcy9hY2VyLW1haWw6Z3JlZW4vCisvc3lzL2RldmljZXMvcGxhdGZvcm0vYWNlci13bWkvbGVkcy9hY2VyLXdtaTo6bWFpbC8KIAogVGhlIG1haWwgTEVEIGlzIGF1dG9kZXRlY3RlZCwgc28gaWYgeW91IGRvbid0IGhhdmUgb25lLCB0aGUgTEVEIGRldmljZSB3b24ndAogYmUgcmVnaXN0ZXJlZC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbGFwdG9wLW1vZGUudHh0IGIvRG9jdW1lbnRhdGlvbi9sYXB0b3BzL2xhcHRvcC1tb2RlLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gRG9jdW1lbnRhdGlvbi9sYXB0b3AtbW9kZS50eHQKcmVuYW1lIHRvIERvY3VtZW50YXRpb24vbGFwdG9wcy9sYXB0b3AtbW9kZS50eHQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbGd1ZXN0L2xndWVzdC5jIGIvRG9jdW1lbnRhdGlvbi9sZ3Vlc3QvbGd1ZXN0LmMKaW5kZXggYmVjNWEzMi4uNGMxZmM2NSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9sZ3Vlc3QvbGd1ZXN0LmMKKysrIGIvRG9jdW1lbnRhdGlvbi9sZ3Vlc3QvbGd1ZXN0LmMKQEAgLTEsNyArMSw3IEBACiAvKlA6MTAwIFRoaXMgaXMgdGhlIExhdW5jaGVyIGNvZGUsIGEgc2ltcGxlIHByb2dyYW0gd2hpY2ggbGF5cyBvdXQgdGhlCi0gKiAicGh5c2ljYWwiIG1lbW9yeSBmb3IgdGhlIG5ldyBHdWVzdCBieSBtYXBwaW5nIHRoZSBrZXJuZWwgaW1hZ2UgYW5kIHRoZQotICogdmlydHVhbCBkZXZpY2VzLCB0aGVuIHJlYWRzIHJlcGVhdGVkbHkgZnJvbSAvZGV2L2xndWVzdCB0byBydW4gdGhlIEd1ZXN0LgotOiovCisgKiAicGh5c2ljYWwiIG1lbW9yeSBmb3IgdGhlIG5ldyBHdWVzdCBieSBtYXBwaW5nIHRoZSBrZXJuZWwgaW1hZ2UgYW5kCisgKiB0aGUgdmlydHVhbCBkZXZpY2VzLCB0aGVuIG9wZW5zIC9kZXYvbGd1ZXN0IHRvIHRlbGwgdGhlIGtlcm5lbAorICogYWJvdXQgdGhlIEd1ZXN0IGFuZCBjb250cm9sIGl0LiA6Ki8KICNkZWZpbmUgX0xBUkdFRklMRTY0X1NPVVJDRQogI2RlZmluZSBfR05VX1NPVVJDRQogI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC00Myw3ICs0Myw3IEBACiAjaW5jbHVkZSAibGludXgvdmlydGlvX2NvbnNvbGUuaCIKICNpbmNsdWRlICJsaW51eC92aXJ0aW9fcmluZy5oIgogI2luY2x1ZGUgImFzbS14ODYvYm9vdHBhcmFtLmgiCi0vKkw6MTEwIFdlIGNhbiBpZ25vcmUgdGhlIDM4IGluY2x1ZGUgZmlsZXMgd2UgbmVlZCBmb3IgdGhpcyBwcm9ncmFtLCBidXQgSSBkbworLypMOjExMCBXZSBjYW4gaWdub3JlIHRoZSAzOSBpbmNsdWRlIGZpbGVzIHdlIG5lZWQgZm9yIHRoaXMgcHJvZ3JhbSwgYnV0IEkgZG8KICAqIHdhbnQgdG8gZHJhdyBhdHRlbnRpb24gdG8gdGhlIHVzZSBvZiBrZXJuZWwtc3R5bGUgdHlwZXMuCiAgKgogICogQXMgTGludXMgc2FpZCwgIkMgaXMgYSBTcGFydGFuIGxhbmd1YWdlLCBhbmQgc28gc2hvdWxkIHlvdXIgbmFtaW5nIGJlLiIgIEkKQEAgLTMyMCw3ICszMjAsNyBAQAogCQllcnIoMSwgIlJlYWRpbmcgcHJvZ3JhbSBoZWFkZXJzIik7CiAKIAkvKiBUcnkgYWxsIHRoZSBoZWFkZXJzOiB0aGVyZSBhcmUgdXN1YWxseSBvbmx5IHRocmVlLiAgQSByZWFkLW9ubHkgb25lLAotCSAqIGEgcmVhZC13cml0ZSBvbmUsIGFuZCBhICJub3RlIiBzZWN0aW9uIHdoaWNoIGlzbid0IGxvYWRhYmxlLiAqLworCSAqIGEgcmVhZC13cml0ZSBvbmUsIGFuZCBhICJub3RlIiBzZWN0aW9uIHdoaWNoIHdlIGRvbid0IGxvYWQuICovCiAJZm9yIChpID0gMDsgaSA8IGVoZHItPmVfcGhudW07IGkrKykgewogCQkvKiBJZiB0aGlzIGlzbid0IGEgbG9hZGFibGUgc2VnbWVudCwgd2UgaWdub3JlIGl0ICovCiAJCWlmIChwaGRyW2ldLnBfdHlwZSAhPSBQVF9MT0FEKQpAQCAtMzg3LDcgKzM4Nyw3IEBACiAJaWYgKG1lbWNtcChoZHIuZV9pZGVudCwgRUxGTUFHLCBTRUxGTUFHKSA9PSAwKQogCQlyZXR1cm4gbWFwX2VsZihmZCwgJmhkcik7CiAKLQkvKiBPdGhlcndpc2Ugd2UgYXNzdW1lIGl0J3MgYSBiekltYWdlLCBhbmQgdHJ5IHRvIHVucGFjayBpdCAqLworCS8qIE90aGVyd2lzZSB3ZSBhc3N1bWUgaXQncyBhIGJ6SW1hZ2UsIGFuZCB0cnkgdG8gbG9hZCBpdC4gKi8KIAlyZXR1cm4gbG9hZF9iemltYWdlKGZkKTsKIH0KIApAQCAtNDMzLDEyICs0MzMsMTIgQEAKIAlyZXR1cm4gbGVuOwogfQogCi0vKiBPbmNlIHdlIGtub3cgaG93IG11Y2ggbWVtb3J5IHdlIGhhdmUsIHdlIGNhbiBjb25zdHJ1Y3Qgc2ltcGxlIGxpbmVhciBwYWdlCisvKiBPbmNlIHdlIGtub3cgaG93IG11Y2ggbWVtb3J5IHdlIGhhdmUgd2UgY2FuIGNvbnN0cnVjdCBzaW1wbGUgbGluZWFyIHBhZ2UKICAqIHRhYmxlcyB3aGljaCBzZXQgdmlydHVhbCA9PSBwaHlzaWNhbCB3aGljaCB3aWxsIGdldCB0aGUgR3Vlc3QgZmFyIGVub3VnaAogICogaW50byB0aGUgYm9vdCB0byBjcmVhdGUgaXRzIG93bi4KICAqCiAgKiBXZSBsYXkgdGhlbSBvdXQgb2YgdGhlIHdheSwganVzdCBiZWxvdyB0aGUgaW5pdHJkICh3aGljaCBpcyB3aHkgd2UgbmVlZCB0bwotICoga25vdyBpdHMgc2l6ZSkuICovCisgKiBrbm93IGl0cyBzaXplIGhlcmUpLiAqLwogc3RhdGljIHVuc2lnbmVkIGxvbmcgc2V0dXBfcGFnZXRhYmxlcyh1bnNpZ25lZCBsb25nIG1lbSwKIAkJCQkgICAgICB1bnNpZ25lZCBsb25nIGluaXRyZF9zaXplKQogewpAQCAtODUwLDcgKzg1MCw4IEBACiAgKgogICogSGFuZGxpbmcgb3V0cHV0IGZvciBuZXR3b3JrIGlzIGFsc28gc2ltcGxlOiB3ZSBnZXQgYWxsIHRoZSBvdXRwdXQgYnVmZmVycwogICogYW5kIHdyaXRlIHRoZW0gKGlnbm9yaW5nIHRoZSBmaXJzdCBlbGVtZW50KSB0byB0aGlzIGRldmljZSdzIGZpbGUgZGVzY3JpcHRvcgotICogKHN0ZG91dCkuICovCisgKiAoL2Rldi9uZXQvdHVuKS4KKyAqLwogc3RhdGljIHZvaWQgaGFuZGxlX25ldF9vdXRwdXQoaW50IGZkLCBzdHJ1Y3QgdmlydHF1ZXVlICp2cSkKIHsKIAl1bnNpZ25lZCBpbnQgaGVhZCwgb3V0LCBpbjsKQEAgLTkyNCw3ICs5MjUsNyBAQAogCXdyaXRlKHdha2VyX2ZkLCAmdnEtPmRldi0+ZmQsIHNpemVvZih2cS0+ZGV2LT5mZCkpOwogfQogCi0vKiBSZXNldHRpbmcgYSBkZXZpY2UgaXMgZmFpcmx5IGVhc3kuICovCisvKiBXaGVuIHRoZSBHdWVzdCBhc2tzIHVzIHRvIHJlc2V0IGEgZGV2aWNlLCBpdCdzIGlzIGZhaXJseSBlYXN5LiAqLwogc3RhdGljIHZvaWQgcmVzZXRfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3QgdmlydHF1ZXVlICp2cTsKQEAgLTEwMDMsOCArMTAwNCw4IEBACiAJCWlmIChzZWxlY3QoZGV2aWNlcy5tYXhfaW5mZCsxLCAmZmRzLCBOVUxMLCBOVUxMLCAmcG9sbCkgPT0gMCkKIAkJCWJyZWFrOwogCi0JCS8qIE90aGVyd2lzZSwgY2FsbCB0aGUgZGV2aWNlKHMpIHdoaWNoIGhhdmUgcmVhZGFibGUKLQkJICogZmlsZSBkZXNjcmlwdG9ycyBhbmQgYSBtZXRob2Qgb2YgaGFuZGxpbmcgdGhlbS4gICovCisJCS8qIE90aGVyd2lzZSwgY2FsbCB0aGUgZGV2aWNlKHMpIHdoaWNoIGhhdmUgcmVhZGFibGUgZmlsZQorCQkgKiBkZXNjcmlwdG9ycyBhbmQgYSBtZXRob2Qgb2YgaGFuZGxpbmcgdGhlbS4gICovCiAJCWZvciAoaSA9IGRldmljZXMuZGV2OyBpOyBpID0gaS0+bmV4dCkgewogCQkJaWYgKGktPmhhbmRsZV9pbnB1dCAmJiBGRF9JU1NFVChpLT5mZCwgJmZkcykpIHsKIAkJCQlpbnQgZGV2X2ZkOwpAQCAtMTAxNSw4ICsxMDE2LDcgQEAKIAkJCQkgKiBzaG91bGQgbm8gbG9uZ2VyIHNlcnZpY2UgaXQuICBOZXR3b3JraW5nIGFuZAogCQkJCSAqIGNvbnNvbGUgZG8gdGhpcyB3aGVuIHRoZXJlJ3Mgbm8gaW5wdXQKIAkJCQkgKiBidWZmZXJzIHRvIGRlbGl2ZXIgaW50by4gIENvbnNvbGUgYWxzbyB1c2VzCi0JCQkJICogaXQgd2hlbiBpdCBkaXNjb3ZlcnMgdGhhdCBzdGRpbiBpcwotCQkJCSAqIGNsb3NlZC4gKi8KKwkJCQkgKiBpdCB3aGVuIGl0IGRpc2NvdmVycyB0aGF0IHN0ZGluIGlzIGNsb3NlZC4gKi8KIAkJCQlGRF9DTFIoaS0+ZmQsICZkZXZpY2VzLmluZmRzKTsKIAkJCQkvKiBUZWxsIHdha2VyIHRvIGlnbm9yZSBpdCB0b28sIGJ5IHNlbmRpbmcgYQogCQkJCSAqIG5lZ2F0aXZlIGZkIG51bWJlciAoLTEsIHNpbmNlIDAgaXMgYSB2YWxpZApAQCAtMTAzMyw3ICsxMDMzLDggQEAKICAqCiAgKiBBbGwgZGV2aWNlcyBuZWVkIGEgZGVzY3JpcHRvciBzbyB0aGUgR3Vlc3Qga25vd3MgaXQgZXhpc3RzLCBhbmQgYSAic3RydWN0CiAgKiBkZXZpY2UiIHNvIHRoZSBMYXVuY2hlciBjYW4ga2VlcCB0cmFjayBvZiBpdC4gIFdlIGhhdmUgY29tbW9uIGhlbHBlcgotICogcm91dGluZXMgdG8gYWxsb2NhdGUgYW5kIG1hbmFnZSB0aGVtLiAqLworICogcm91dGluZXMgdG8gYWxsb2NhdGUgYW5kIG1hbmFnZSB0aGVtLgorICovCiAKIC8qIFRoZSBsYXlvdXQgb2YgdGhlIGRldmljZSBwYWdlIGlzIGEgInN0cnVjdCBsZ3Vlc3RfZGV2aWNlX2Rlc2MiIGZvbGxvd2VkIGJ5IGEKICAqIG51bWJlciBvZiB2aXJ0cXVldWUgZGVzY3JpcHRvcnMsIHRoZW4gdHdvIHNldHMgb2YgZmVhdHVyZSBiaXRzLCB0aGVuIGFuCkBAIC0xMDc4LDcgKzEwNzksNyBAQAogCXN0cnVjdCB2aXJ0cXVldWUgKippLCAqdnEgPSBtYWxsb2Moc2l6ZW9mKCp2cSkpOwogCXZvaWQgKnA7CiAKLQkvKiBGaXJzdCB3ZSBuZWVkIHNvbWUgcGFnZXMgZm9yIHRoaXMgdmlydHF1ZXVlLiAqLworCS8qIEZpcnN0IHdlIG5lZWQgc29tZSBtZW1vcnkgZm9yIHRoaXMgdmlydHF1ZXVlLiAqLwogCXBhZ2VzID0gKHZyaW5nX3NpemUobnVtX2Rlc2NzLCBnZXRwYWdlc2l6ZSgpKSArIGdldHBhZ2VzaXplKCkgLSAxKQogCQkvIGdldHBhZ2VzaXplKCk7CiAJcCA9IGdldF9wYWdlcyhwYWdlcyk7CkBAIC0xMTIyLDcgKzExMjMsNyBAQAogfQogCiAvKiBUaGUgZmlyc3QgaGFsZiBvZiB0aGUgZmVhdHVyZSBiaXRtYXNrIGlzIGZvciB1cyB0byBhZHZlcnRpc2UgZmVhdHVyZXMuICBUaGUKLSAqIHNlY29uZCBoYWxmIGlmIGZvciB0aGUgR3Vlc3QgdG8gYWNjZXB0IGZlYXR1cmVzLiAqLworICogc2Vjb25kIGhhbGYgaXMgZm9yIHRoZSBHdWVzdCB0byBhY2NlcHQgZmVhdHVyZXMuICovCiBzdGF0aWMgdm9pZCBhZGRfZmVhdHVyZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHVuc2lnbmVkIGJpdCkKIHsKIAl1OCAqZmVhdHVyZXMgPSBnZXRfZmVhdHVyZV9iaXRzKGRldik7CkBAIC0xMTUxLDcgKzExNTIsOSBAQAogfQogCiAvKiBUaGlzIHJvdXRpbmUgZG9lcyBhbGwgdGhlIGNyZWF0aW9uIGFuZCBzZXR1cCBvZiBhIG5ldyBkZXZpY2UsIGluY2x1ZGluZwotICogY2FsbGluZyBuZXdfZGV2X2Rlc2MoKSB0byBhbGxvY2F0ZSB0aGUgZGVzY3JpcHRvciBhbmQgZGV2aWNlIG1lbW9yeS4gKi8KKyAqIGNhbGxpbmcgbmV3X2Rldl9kZXNjKCkgdG8gYWxsb2NhdGUgdGhlIGRlc2NyaXB0b3IgYW5kIGRldmljZSBtZW1vcnkuCisgKgorICogU2VlIHdoYXQgSSBtZWFuIGFib3V0IHVzZXJzcGFjZSBiZWluZyBib3Jpbmc/ICovCiBzdGF0aWMgc3RydWN0IGRldmljZSAqbmV3X2RldmljZShjb25zdCBjaGFyICpuYW1lLCB1MTYgdHlwZSwgaW50IGZkLAogCQkJCSBib29sICgqaGFuZGxlX2lucHV0KShpbnQsIHN0cnVjdCBkZXZpY2UgKikpCiB7CkBAIC0xMzgzLDcgKzEzODYsNiBAQAogCSAqIExhdW5jaGVyIHRyaWdnZXJzIGludGVycnVwdCB0byBHdWVzdC4gKi8KIAlpbnQgZG9uZV9mZDsKIH07Ci0vKjoqLwogCiAvKkw6MjEwCiAgKiBUaGUgRGlzawpAQCAtMTQ5Myw3ICsxNDk1LDEwIEBACiAJd2hpbGUgKHJlYWQodmJsay0+d29ya3BpcGVbMF0sICZjLCAxKSA9PSAxKSB7CiAJCS8qIFdlIGFja25vd2xlZGdlIGVhY2ggcmVxdWVzdCBpbW1lZGlhdGVseSB0byByZWR1Y2UgbGF0ZW5jeSwKIAkJICogcmF0aGVyIHRoYW4gd2FpdGluZyB1bnRpbCB3ZSd2ZSBkb25lIHRoZW0gYWxsLiAgSSBoYXZlbid0Ci0JCSAqIG1lYXN1cmVkIHRvIHNlZSBpZiBpdCBtYWtlcyBhbnkgZGlmZmVyZW5jZS4gKi8KKwkJICogbWVhc3VyZWQgdG8gc2VlIGlmIGl0IG1ha2VzIGFueSBkaWZmZXJlbmNlLgorCQkgKgorCQkgKiBUaGF0IHdvdWxkIGJlIGFuIGludGVyZXN0aW5nIHRlc3QsIHdvdWxkbid0IGl0PyAgWW91IGNvdWxkCisJCSAqIGFsc28gdHJ5IGhhdmluZyBtb3JlIHRoYW4gb25lIEkvTyB0aHJlYWQuICovCiAJCXdoaWxlIChzZXJ2aWNlX2lvKGRldikpCiAJCQl3cml0ZSh2YmxrLT5kb25lX2ZkLCAmYywgMSk7CiAJfQpAQCAtMTUwMSw3ICsxNTA2LDcgQEAKIH0KIAogLyogTm93IHdlJ3ZlIHNlZW4gdGhlIEkvTyB0aHJlYWQsIHdlIHJldHVybiB0byB0aGUgTGF1bmNoZXIgdG8gc2VlIHdoYXQgaGFwcGVucwotICogd2hlbiB0aGUgdGhyZWFkIHRlbGxzIHVzIGl0J3MgY29tcGxldGVkIHNvbWUgSS9PLiAqLworICogd2hlbiB0aGF0IHRocmVhZCB0ZWxscyB1cyBpdCdzIGNvbXBsZXRlZCBzb21lIEkvTy4gKi8KIHN0YXRpYyBib29sIGhhbmRsZV9pb19maW5pc2goaW50IGZkLCBzdHJ1Y3QgZGV2aWNlICpkZXYpCiB7CiAJY2hhciBjOwpAQCAtMTU3MywxMSArMTU3OCwxMiBAQAogCSAqIG1vcmUgd29yay4gKi8KIAlwaXBlKHZibGstPndvcmtwaXBlKTsKIAotCS8qIENyZWF0ZSBzdGFjayBmb3IgdGhyZWFkIGFuZCBydW4gaXQgKi8KKwkvKiBDcmVhdGUgc3RhY2sgZm9yIHRocmVhZCBhbmQgcnVuIGl0LiAgU2luY2Ugc3RhY2sgZ3Jvd3MgdXB3YXJkcywgd2UKKwkgKiBwb2ludCB0aGUgc3RhY2sgcG9pbnRlciB0byB0aGUgZW5kIG9mIHRoaXMgcmVnaW9uLiAqLwogCXN0YWNrID0gbWFsbG9jKDMyNzY4KTsKIAkvKiBTSUdDSExEIC0gV2UgZG9udCAid2FpdCIgZm9yIG91ciBjbG9uZWQgdGhyZWFkLCBzbyBwcmV2ZW50IGl0IGZyb20KIAkgKiBiZWNvbWluZyBhIHpvbWJpZS4gKi8KLQlpZiAoY2xvbmUoaW9fdGhyZWFkLCBzdGFjayArIDMyNzY4LCAgQ0xPTkVfVk0gfCBTSUdDSExELCBkZXYpID09IC0xKQorCWlmIChjbG9uZShpb190aHJlYWQsIHN0YWNrICsgMzI3NjgsIENMT05FX1ZNIHwgU0lHQ0hMRCwgZGV2KSA9PSAtMSkKIAkJZXJyKDEsICJDcmVhdGluZyBjbG9uZSIpOwogCiAJLyogV2UgZG9uJ3QgbmVlZCB0byBrZWVwIHRoZSBJL08gdGhyZWFkJ3MgZW5kIG9mIHRoZSBwaXBlcyBvcGVuLiAqLwpAQCAtMTU4NywxNCArMTU5MywxNCBAQAogCXZlcmJvc2UoImRldmljZSAldTogdmlydGJsb2NrICVsbHUgc2VjdG9yc1xuIiwKIAkJZGV2aWNlcy5kZXZpY2VfbnVtLCBsZTY0X3RvX2NwdShjb25mLmNhcGFjaXR5KSk7CiB9Ci0vKiBUaGF0J3MgdGhlIGVuZCBvZiBkZXZpY2Ugc2V0dXAuIDoqLworLyogVGhhdCdzIHRoZSBlbmQgb2YgZGV2aWNlIHNldHVwLiAqLwogCi0vKiBSZWJvb3QgKi8KKy8qTDoyMzAgUmVib290IGlzIHByZXR0eSBlYXN5OiBjbGVhbiB1cCBhbmQgZXhlYygpIHRoZSBMYXVuY2hlciBhZnJlc2guICovCiBzdGF0aWMgdm9pZCBfX2F0dHJpYnV0ZV9fKChub3JldHVybikpIHJlc3RhcnRfZ3Vlc3Qodm9pZCkKIHsKIAl1bnNpZ25lZCBpbnQgaTsKIAotCS8qIENsb3NpbmcgcGlwZXMgY2F1c2VzIHRoZSB3YWtlciB0aHJlYWQgYW5kIGlvX3RocmVhZHMgdG8gZGllLCBhbmQKKwkvKiBDbG9zaW5nIHBpcGVzIGNhdXNlcyB0aGUgV2FrZXIgdGhyZWFkIGFuZCBpb190aHJlYWRzIHRvIGRpZSwgYW5kCiAJICogY2xvc2luZyAvZGV2L2xndWVzdCBjbGVhbnMgdXAgdGhlIEd1ZXN0LiAgU2luY2Ugd2UgZG9uJ3QgdHJhY2sgYWxsCiAJICogb3BlbiBmZHMsIHdlIHNpbXBseSBjbG9zZSBldmVyeXRoaW5nIGJleW9uZCBzdGRlcnIuICovCiAJZm9yIChpID0gMzsgaSA8IEZEX1NFVFNJWkU7IGkrKykKQEAgLTE2MDMsNyArMTYwOSw3IEBACiAJZXJyKDEsICJDb3VsZCBub3QgZXhlYyAlcyIsIG1haW5fYXJnc1swXSk7CiB9CiAKLS8qTDoyMjAgRmluYWxseSB3ZSByZWFjaCB0aGUgY29yZSBvZiB0aGUgTGF1bmNoZXIsIHdoaWNoIHJ1bnMgdGhlIEd1ZXN0LCBzZXJ2ZXMKKy8qTDoyMjAgRmluYWxseSB3ZSByZWFjaCB0aGUgY29yZSBvZiB0aGUgTGF1bmNoZXIgd2hpY2ggcnVucyB0aGUgR3Vlc3QsIHNlcnZlcwogICogaXRzIGlucHV0IGFuZCBvdXRwdXQsIGFuZCBmaW5hbGx5LCBsYXlzIGl0IHRvIHJlc3QuICovCiBzdGF0aWMgdm9pZCBfX2F0dHJpYnV0ZV9fKChub3JldHVybikpIHJ1bl9ndWVzdChpbnQgbGd1ZXN0X2ZkKQogewpAQCAtMTY0NCw3ICsxNjUwLDcgQEAKIAkJCWVycigxLCAiUmVzZXR0aW5nIGJyZWFrIik7CiAJfQogfQotLyoKKy8qTDoyNDAKICAqIFRoaXMgaXMgdGhlIGVuZCBvZiB0aGUgTGF1bmNoZXIuICBUaGUgZ29vZCBuZXdzOiB3ZSBhcmUgb3ZlciBoYWxmd2F5CiAgKiB0aHJvdWdoISAgVGhlIGJhZCBuZXdzOiB0aGUgbW9zdCBmaWVuZGlzaCBwYXJ0IG9mIHRoZSBjb2RlIHN0aWxsIGxpZXMgYWhlYWQKICAqIG9mIHVzLgpAQCAtMTY5MSw4ICsxNjk3LDggQEAKIAkgKiBkZXZpY2UgcmVjZWl2ZSBpbnB1dCBmcm9tIGEgZmlsZSBkZXNjcmlwdG9yLCB3ZSBrZWVwIGFuIGZkc2V0CiAJICogKGluZmRzKSBhbmQgdGhlIG1heGltdW0gZmQgbnVtYmVyIChtYXhfaW5mZCkgd2l0aCB0aGUgaGVhZCBvZiB0aGUKIAkgKiBsaXN0LiAgV2UgYWxzbyBrZWVwIGEgcG9pbnRlciB0byB0aGUgbGFzdCBkZXZpY2UuICBGaW5hbGx5LCB3ZSBrZWVwCi0JICogdGhlIG5leHQgaW50ZXJydXB0IG51bWJlciB0byBoYW5kIG91dCAoMTogcmVtZW1iZXIgdGhhdCAwIGlzIHVzZWQgYnkKLQkgKiB0aGUgdGltZXIpLiAqLworCSAqIHRoZSBuZXh0IGludGVycnVwdCBudW1iZXIgdG8gdXNlIGZvciBkZXZpY2VzICgxOiByZW1lbWJlciB0aGF0IDAgaXMKKwkgKiB1c2VkIGJ5IHRoZSB0aW1lcikuICovCiAJRkRfWkVSTygmZGV2aWNlcy5pbmZkcyk7CiAJZGV2aWNlcy5tYXhfaW5mZCA9IC0xOwogCWRldmljZXMubGFzdGRldiA9IE5VTEw7CkBAIC0xNzkzLDggKzE3OTksOCBAQAogCWxndWVzdF9mZCA9IHRlbGxfa2VybmVsKHBnZGlyLCBzdGFydCk7CiAKIAkvKiBXZSBmb3JrIG9mZiBhIGNoaWxkIHByb2Nlc3MsIHdoaWNoIHdha2VzIHRoZSBMYXVuY2hlciB3aGVuZXZlciBvbmUKLQkgKiBvZiB0aGUgaW5wdXQgZmlsZSBkZXNjcmlwdG9ycyBuZWVkcyBhdHRlbnRpb24uICBPdGhlcndpc2Ugd2Ugd291bGQKLQkgKiBydW4gdGhlIEd1ZXN0IHVudGlsIGl0IHRyaWVzIHRvIG91dHB1dCBzb21ldGhpbmcuICovCisJICogb2YgdGhlIGlucHV0IGZpbGUgZGVzY3JpcHRvcnMgbmVlZHMgYXR0ZW50aW9uLiAgV2UgY2FsbCB0aGlzIHRoZQorCSAqIFdha2VyLCBhbmQgd2UnbGwgY292ZXIgaXQgaW4gYSBtb21lbnQuICovCiAJd2FrZXJfZmQgPSBzZXR1cF93YWtlcihsZ3Vlc3RfZmQpOwogCiAJLyogRmluYWxseSwgcnVuIHRoZSBHdWVzdC4gIFRoaXMgZG9lc24ndCByZXR1cm4uICovCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2xndWVzdC9sZ3Vlc3QudHh0IGIvRG9jdW1lbnRhdGlvbi9sZ3Vlc3QvbGd1ZXN0LnR4dAppbmRleCA3MjJkNGU3Li4yOTUxMGRjIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2xndWVzdC9sZ3Vlc3QudHh0CisrKyBiL0RvY3VtZW50YXRpb24vbGd1ZXN0L2xndWVzdC50eHQKQEAgLTEsNiArMSw3IEBACi1SdXN0eSdzIFJlbWFya2FibHkgVW5yZWxpYWJsZSBHdWlkZSB0byBMZ3Vlc3QKLQktIG9yLCBBIFlvdW5nIENvZGVyJ3MgSWxsdXN0cmF0ZWQgSHlwZXJ2aXNvcgotaHR0cDovL2xndWVzdC5vemxhYnMub3JnCisgICAgICBfXworIChfX18oKSdgOyAgUnVzdHkncyBSZW1hcmthYmx5IFVucmVsaWFibGUgR3VpZGUgdG8gTGd1ZXN0CisgLywgICAgL2AgICAgICAtIG9yLCBBIFlvdW5nIENvZGVyJ3MgSWxsdXN0cmF0ZWQgSHlwZXJ2aXNvcgorIFxcIi0tXFwgICAgaHR0cDovL2xndWVzdC5vemxhYnMub3JnCiAKIExndWVzdCBpcyBkZXNpZ25lZCB0byBiZSBhIG1pbmltYWwgaHlwZXJ2aXNvciBmb3IgdGhlIExpbnV4IGtlcm5lbCwgZm9yCiBMaW51eCBkZXZlbG9wZXJzIGFuZCB1c2VycyB0byBleHBlcmltZW50IHdpdGggdmlydHVhbGl6YXRpb24gd2l0aCB0aGUKQEAgLTQxLDEyICs0MiwxNiBAQAogICAgICAgICAgQ09ORklHX1BIWVNJQ0FMX0FMSUdOPTB4MTAwMDAwKQogCiAgICJEZXZpY2UgRHJpdmVycyI6CisgICAgICJCbG9jayBkZXZpY2VzIgorICAgICAgICAiVmlydGlvIGJsb2NrIGRyaXZlciAoRVhQRVJJTUVOVEFMKSIgPSBNL1kKICAgICAgIk5ldHdvcmsgZGV2aWNlIHN1cHBvcnQiCiAgICAgICAgICJVbml2ZXJzYWwgVFVOL1RBUCBkZXZpY2UgZHJpdmVyIHN1cHBvcnQiID0gTS9ZCi0gICAgICAgICAgIChDT05GSUdfVFVOPW0pCi0gICAgICJWaXJ0dWFsaXphdGlvbiIKLSAgICAgICAgIkxpbnV4IGh5cGVydmlzb3IgZXhhbXBsZSBjb2RlIiA9IE0vWQotICAgICAgICAgICAoQ09ORklHX0xHVUVTVD1tKQorICAgICAgICAiVmlydGlvIG5ldHdvcmsgZHJpdmVyIChFWFBFUklNRU5UQUwpIiA9IE0vWQorICAgICAgICAgICAoQ09ORklHX1ZJUlRJT19CTEs9bSwgQ09ORklHX1ZJUlRJT19ORVQ9bSBhbmQgQ09ORklHX1RVTj1tKQorCisgICJWaXJ0dWFsaXphdGlvbiIKKyAgICAgIkxpbnV4IGh5cGVydmlzb3IgZXhhbXBsZSBjb2RlIiA9IE0vWQorICAgICAgICAoQ09ORklHX0xHVUVTVD1tKQogCiAtIEEgdG9vbCBjYWxsZWQgImxndWVzdCIgaXMgYXZhaWxhYmxlIGluIHRoaXMgZGlyZWN0b3J5OiB0eXBlICJtYWtlIgogICB0byBidWlsZCBpdC4gIElmIHlvdSBkaWRuJ3QgYnVpbGQgeW91ciBrZXJuZWwgaW4tdHJlZSwgdXNlICJtYWtlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL21jYS50eHQgYi9Eb2N1bWVudGF0aW9uL21jYS50eHQKaW5kZXggYWFiY2U0YS4uNTEwMzc1ZCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9tY2EudHh0CisrKyBiL0RvY3VtZW50YXRpb24vbWNhLnR4dApAQCAtMTQzLDE0ICsxNDMsNyBAQAogCiBDdXJyZW50bHksIHRoZXJlIGFyZSBhIG51bWJlciBvZiBNQ0Etc3BlY2lmaWMgZGV2aWNlIGRyaXZlcnMuCiAKLTEpIFBTLzIgRVNESQotCWRyaXZlcnMvYmxvY2svcHMyZXNkaS5jCi0JaW5jbHVkZS9saW51eC9wczJlc2RpLmgKLSAgIFVzZXMgbWFqb3IgbnVtYmVyIDM2LCBhbmQgc2hvdWxkIHVzZSAvZGV2IGZpbGVzIC9kZXYvZWRhLCAvZGV2L2VkYi4KLSAgIFN1cHBvcnRzIHR3byBkcml2ZXMsIGJ1dCBvbmx5IG9uZSBjb250cm9sbGVyLiAgTWF5IHVzZSB0aGUKLSAgIGNvbW1hbmQtbGluZSBhcmdzICJlZD1jeWwsaGVhZCxzZWMiIGFuZCAidHA3MjAiLgotCi0yKSBQUy8yIFNDU0kKKzEpIFBTLzIgU0NTSQogCWRyaXZlcnMvc2NzaS9pYm1tY2EuYwogCWRyaXZlcnMvc2NzaS9pYm1tY2EuaAogICAgVGhlIGRyaXZlciBmb3IgdGhlIElCTSBTQ1NJIHN1YnN5c3RlbS4gIEluY2x1ZGVzIGJvdGggaW50ZWdyYXRlZApAQCAtMTU5LDI1ICsxNTIsMjUgQEAKICAgIG1hY2hpbmUgd2l0aCBhIGZyb250LXBhbmVsIGRpc3BsYXkgKGkuZS4gbW9kZWwgOTUpLCB5b3UgY2FuIHVzZQogICAgImlibW1jYXNjc2k9ZGlzcGxheSIgdG8gZW5hYmxlIGEgZHJpdmUgYWN0aXZpdHkgaW5kaWNhdG9yLgogCi0zKSAzYzUyMworMikgM2M1MjMKIAlkcml2ZXJzL25ldC8zYzUyMy5jCiAJZHJpdmVycy9uZXQvM2M1MjMuaAogICAgM0NvbSAzYzUyMyBFdGhlcmxpbmsvTUMgZXRoZXJuZXQgZHJpdmVyLgogCi00KSBTTUMgVWx0cmEvTUNBIGFuZCBJQk0gQWRhcHRlci9BCiszKSBTTUMgVWx0cmEvTUNBIGFuZCBJQk0gQWRhcHRlci9BCiAJZHJpdmVycy9uZXQvc21jLW1jYS5jCiAJZHJpdmVycy9uZXQvc21jLW1jYS5oCiAJRHJpdmVyIGZvciB0aGUgTUNBIHZlcnNpb24gb2YgdGhlIFNNQyBVbHRyYSBhbmQgdmFyaW91cyBvdGhlcgogCU9FTSdlZCBhbmQgd29yay1hbGlrZSBjYXJkcyAoRWxpdGUsIEFkYXB0ZXIvQSwgZXRjKS4KIAotNSkgTkUvMgorNCkgTkUvMgogCWRyaXZlci9uZXQvbmUyLmMKIAlkcml2ZXIvbmV0L25lMi5oCiAJVGhlIE5FLzIgaXMgdGhlIE1DQSB2ZXJzaW9uIG9mIHRoZSBORTIwMDAuICBUaGlzIG1heSBub3Qgd29yawogCXdpdGggY2xvbmVzIHRoYXQgaGF2ZSBhIGRpZmZlcmVudCBhZGFwdGVyIGlkIHRoYW4gdGhlIG9yaWdpbmFsCiAJTkUvMi4KIAotNikgRnV0dXJlIERvbWFpbiBNQ1MtNjAwLzcwMCwgT0VNJ2QgSUJNIEZhc3QgU0NTSSBBZGFwdGVyL0EgYW5kCis1KSBGdXR1cmUgRG9tYWluIE1DUy02MDAvNzAwLCBPRU0nZCBJQk0gRmFzdCBTQ1NJIEFkYXB0ZXIvQSBhbmQKICAgIFJlcGx5IFNvdW5kIEJsYXN0ZXIvU0NTSSAoU0NTSSBwYXJ0KQogCUJldHRlciBzdXBwb3J0IGZvciB0aGVzZSBjYXJkcyB0aGFuIHRoZSBkcml2ZXIgZm9yIElTQS4KICAgIFN1cHBvcnRzIG11bHRpcGxlIGNhcmRzIHdpdGggSVJRIHNoYXJpbmcuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvMDAtSU5ERVggYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvMDAtSU5ERVgKaW5kZXggMDJlNTZkNC4uYzQ4NWVlMCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nLzAwLUlOREVYCisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy8wMC1JTkRFWApAQCAtODQsOSArODQsNiBAQAogCS0gSVAgcG9saWN5LWJhc2VkIHJvdXRpbmcKIHJheV9jcy50eHQKIAktIFJheWxpbmsgV2lyZWxlc3MgTEFOIGNhcmQgZHJpdmVyIGluZm8uCi1zazk4bGluLnR4dAotCS0gTWFydmVsbCBZdWtvbiBDaGlwc2V0IC8gU3lzS29ubmVjdCBTSy05OHh4IGNvbXBsaWFudCBHaWdhYml0Ci0JICBFdGhlcm5ldCBBZGFwdGVyIGZhbWlseSBkcml2ZXIgaW5mbwogc2tmcC50eHQKIAktIFN5c0tvbm5lY3QgRkRESSAoU0stNXh4eCwgQ29tcGFxIE5ldGVsbGlnZW50KSBkcml2ZXIgaW5mby4KIHNtYzkudHh0CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvY2FuLnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9jYW4udHh0CmluZGV4IGYxYjJkZTEuLjY0MWQyYWYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9jYW4udHh0CisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9jYW4udHh0CkBAIC0yODEsMTAgKzI4MSwxMCBAQAogICAgICAgICAgICAgc2FfZmFtaWx5X3QgY2FuX2ZhbWlseTsKICAgICAgICAgICAgIGludCAgICAgICAgIGNhbl9pZmluZGV4OwogICAgICAgICAgICAgdW5pb24gewotICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyBjYW5pZF90IHJ4X2lkLCB0eF9pZDsgfSB0cDE2OwotICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyBjYW5pZF90IHJ4X2lkLCB0eF9pZDsgfSB0cDIwOwotICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyBjYW5pZF90IHJ4X2lkLCB0eF9pZDsgfSBtY25ldDsKLSAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsgY2FuaWRfdCByeF9pZCwgdHhfaWQ7IH0gaXNvdHA7CisgICAgICAgICAgICAgICAgICAgIC8qIHRyYW5zcG9ydCBwcm90b2NvbCBjbGFzcyBhZGRyZXNzIGluZm8gKGUuZy4gSVNPVFApICovCisgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7IGNhbmlkX3QgcnhfaWQsIHR4X2lkOyB9IHRwOworCisgICAgICAgICAgICAgICAgICAgIC8qIHJlc2VydmVkIGZvciBmdXR1cmUgQ0FOIHByb3RvY29scyBhZGRyZXNzIGluZm9ybWF0aW9uICovCiAgICAgICAgICAgICB9IGNhbl9hZGRyOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9zazk4bGluLnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9zazk4bGluLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODU5MGE5NS4uMDAwMDAwMAotLS0gYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2s5OGxpbi50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1NjggKzAsMCBAQAotKEMpQ29weXJpZ2h0IDE5OTktMjAwNCBNYXJ2ZWxsKFIpLgotQWxsIHJpZ2h0cyByZXNlcnZlZAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLXNrOThsaW4udHh0IGNyZWF0ZWQgMTMtRmViLTIwMDQKLQotUmVhZG1lIEZpbGUgZm9yIHNrOThsaW4gdjYuMjMKLU1hcnZlbGwgWXVrb24vU3lzS29ubmVjdCBTSy05OHh4IEdpZ2FiaXQgRXRoZXJuZXQgQWRhcHRlciBmYW1pbHkgZHJpdmVyIGZvciBMSU5VWAotCi1UaGlzIGZpbGUgY29udGFpbnMKLSAxICBPdmVydmlldwotIDIgIFJlcXVpcmVkIEZpbGVzCi0gMyAgSW5zdGFsbGF0aW9uCi0gICAgMy4xICBEcml2ZXIgSW5zdGFsbGF0aW9uCi0gICAgMy4yICBJbmNsdXNpb24gb2YgYWRhcHRlciBhdCBzeXN0ZW0gc3RhcnQKLSA0ICBEcml2ZXIgUGFyYW1ldGVycwotICAgIDQuMSAgUGVyLVBvcnQgUGFyYW1ldGVycwotICAgIDQuMiAgQWRhcHRlciBQYXJhbWV0ZXJzCi0gNSAgTGFyZ2UgRnJhbWUgU3VwcG9ydAotIDYgIFZMQU4gYW5kIExpbmsgQWdncmVnYXRpb24gU3VwcG9ydCAoSUVFRSA4MDIuMSwgODAyLjFxLCA4MDIuM2FkKQotIDcgIFRyb3VibGVzaG9vdGluZwotCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotCi0xICBPdmVydmlldwotPT09PT09PT09PT0KLQotVGhlIHNrOThsaW4gZHJpdmVyIHN1cHBvcnRzIHRoZSBNYXJ2ZWxsIFl1a29uIGFuZCBTeXNLb25uZWN0IAotU0stOTh4eC9TSy05NXh4IGNvbXBsaWFudCBHaWdhYml0IEV0aGVybmV0IEFkYXB0ZXIgb24gTGludXguIEl0IGhhcyAKLWJlZW4gdGVzdGVkIHdpdGggTGludXggb24gSW50ZWwveDg2IG1hY2hpbmVzLgotKioqCi0KLQotMiAgUmVxdWlyZWQgRmlsZXMKLT09PT09PT09PT09PT09PT09Ci0KLVRoZSBsaW51eCBrZXJuZWwgc291cmNlLgotTm8gYWRkaXRpb25hbCBmaWxlcyByZXF1aXJlZC4KLSoqKgotCi0KLTMgIEluc3RhbGxhdGlvbgotPT09PT09PT09PT09PT09Ci0KLUl0IGlzIHJlY29tbWVuZGVkIHRvIGRvd25sb2FkIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgZHJpdmVyIGZyb20gdGhlIAotU3lzS29ubmVjdCB3ZWIgc2l0ZSB3d3cuc3lza29ubmVjdC5jb20uIElmIHlvdSBoYXZlIGRvd25sb2FkZWQgdGhlIGxhdGVzdAotZHJpdmVyLCB0aGUgTGludXgga2VybmVsIGhhcyB0byBiZSBwYXRjaGVkIGJlZm9yZSB0aGUgZHJpdmVyIGNhbiBiZSAKLWluc3RhbGxlZC4gRm9yIGRldGFpbHMgb24gaG93IHRvIHBhdGNoIGEgTGludXgga2VybmVsLCByZWZlciB0byB0aGUgCi1wYXRjaC50eHQgZmlsZS4KLQotMy4xICBEcml2ZXIgSW5zdGFsbGF0aW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotVGhlIGZvbGxvd2luZyBzdGVwcyBkZXNjcmliZSB0aGUgYWN0aW9ucyB0aGF0IGFyZSByZXF1aXJlZCB0byBpbnN0YWxsCi10aGUgZHJpdmVyIGFuZCB0byBzdGFydCBpdCBtYW51YWxseS4gVGhlc2Ugc3RlcHMgc2hvdWxkIGJlIGNhcnJpZWQKLW91dCBmb3IgdGhlIGluaXRpYWwgZHJpdmVyIHNldHVwLiBPbmNlIGNvbmZpcm1lZCB0byBiZSBvaywgdGhleSBjYW4KLWJlIGluY2x1ZGVkIGluIHRoZSBzeXN0ZW0gc3RhcnQuCi0KLU5PVEUgMTogVG8gcGVyZm9ybSB0aGUgZm9sbG93aW5nIHRhc2tzIHlvdSBuZWVkICdyb290JyBhY2Nlc3MuCi0KLU5PVEUgMjogSW4gY2FzZSBvZiBwcm9ibGVtcywgcGxlYXNlIHJlYWQgdGhlIHNlY3Rpb24gIlRyb3VibGVzaG9vdGluZyIgCi0gICAgICAgIGJlbG93LgotCi1UaGUgZHJpdmVyIGNhbiBlaXRoZXIgYmUgaW50ZWdyYXRlZCBpbnRvIHRoZSBrZXJuZWwgb3IgaXQgY2FuIGJlIGNvbXBpbGVkIAotYXMgYSBtb2R1bGUuIFNlbGVjdCB0aGUgYXBwcm9wcmlhdGUgb3B0aW9uIGR1cmluZyB0aGUga2VybmVsIAotY29uZmlndXJhdGlvbi4KLQotQ29tcGlsZS91c2UgdGhlIGRyaXZlciBhcyBhIG1vZHVsZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotVG8gY29tcGlsZSB0aGUgZHJpdmVyLCBnbyB0byB0aGUgZGlyZWN0b3J5IC91c3Ivc3JjL2xpbnV4IGFuZAotZXhlY3V0ZSB0aGUgY29tbWFuZCAibWFrZSBtZW51Y29uZmlnIiBvciAibWFrZSB4Y29uZmlnIiBhbmQgcHJvY2VlZCBhcyAKLWZvbGxvd3M6Ci0KLVRvIGludGVncmF0ZSB0aGUgZHJpdmVyIHBlcm1hbmVudGx5IGludG8gdGhlIGtlcm5lbCwgcHJvY2VlZCBhcyBmb2xsb3dzOgotCi0xLiBTZWxlY3QgdGhlIG1lbnUgIk5ldHdvcmsgZGV2aWNlIHN1cHBvcnQiIGFuZCB0aGVuICJFdGhlcm5ldCgxMDAwTWJpdCkiCi0yLiBNYXJrICJNYXJ2ZWxsIFl1a29uIENoaXBzZXQgLyBTeXNLb25uZWN0IFNLLTk4eHggZmFtaWx5IHN1cHBvcnQiIAotICAgd2l0aCAoKikgCi0zLiBCdWlsZCBhIG5ldyBrZXJuZWwgd2hlbiB0aGUgY29uZmlndXJhdGlvbiBvZiB0aGUgYWJvdmUgb3B0aW9ucyBpcyAKLSAgIGZpbmlzaGVkLgotNC4gSW5zdGFsbCB0aGUgbmV3IGtlcm5lbC4KLTUuIFJlYm9vdCB5b3VyIHN5c3RlbS4KLQotVG8gdXNlIHRoZSBkcml2ZXIgYXMgYSBtb2R1bGUsIHByb2NlZWQgYXMgZm9sbG93czoKLQotMS4gRW5hYmxlICdsb2FkYWJsZSBtb2R1bGUgc3VwcG9ydCcgaW4gdGhlIGtlcm5lbC4KLTIuIEZvciBhdXRvbWF0aWMgZHJpdmVyIHN0YXJ0LCBlbmFibGUgdGhlICdLZXJuZWwgbW9kdWxlIGxvYWRlcicuCi0zLiBTZWxlY3QgdGhlIG1lbnUgIk5ldHdvcmsgZGV2aWNlIHN1cHBvcnQiIGFuZCB0aGVuICJFdGhlcm5ldCgxMDAwTWJpdCkiCi00LiBNYXJrICJNYXJ2ZWxsIFl1a29uIENoaXBzZXQgLyBTeXNLb25uZWN0IFNLLTk4eHggZmFtaWx5IHN1cHBvcnQiIAotICAgd2l0aCAoTSkKLTUuIEV4ZWN1dGUgdGhlIGNvbW1hbmQgIm1ha2UgbW9kdWxlcyIuCi02LiBFeGVjdXRlIHRoZSBjb21tYW5kICJtYWtlIG1vZHVsZXNfaW5zdGFsbCIuCi0gICBUaGUgYXBwcm9wcmlhdGUgbW9kdWxlcyB3aWxsIGJlIGluc3RhbGxlZC4KLTcuIFJlYm9vdCB5b3VyIHN5c3RlbS4KLQotCi1Mb2FkIHRoZSBtb2R1bGUgbWFudWFsbHkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotVG8gbG9hZCB0aGUgbW9kdWxlIG1hbnVhbGx5LCBwcm9jZWVkIGFzIGZvbGxvd3M6Ci0KLTEuIEVudGVyICJtb2Rwcm9iZSBzazk4bGluIi4KLTIuIElmIGEgTWFydmVsbCBZdWtvbiBvciBTeXNLb25uZWN0IFNLLTk4eHggYWRhcHRlciBpcyBpbnN0YWxsZWQgaW4gCi0gICB5b3VyIGNvbXB1dGVyIGFuZCB5b3UgaGF2ZSBhIC9wcm9jIGZpbGUgc3lzdGVtLCBleGVjdXRlIHRoZSBjb21tYW5kOgotICAgImxzIC9wcm9jL25ldC9zazk4bGluLyIgCi0gICBUaGlzIHNob3VsZCBwcm9kdWNlIGFuIG91dHB1dCBjb250YWluaW5nIGEgbGluZSB3aXRoIHRoZSBmb2xsb3dpbmcgCi0gICBmb3JtYXQ6Ci0gICBldGgwICAgZXRoMSAgLi4uCi0gICB3aGljaCBpbmRpY2F0ZXMgdGhhdCB5b3VyIGFkYXB0ZXIgaGFzIGJlZW4gZm91bmQgYW5kIGluaXRpYWxpemVkLgotICAgCi0gICBOT1RFIDE6IElmIHlvdSBoYXZlIG1vcmUgdGhhbiBvbmUgTWFydmVsbCBZdWtvbiBvciBTeXNLb25uZWN0IFNLLTk4eHggCi0gICAgICAgICAgIGFkYXB0ZXIgaW5zdGFsbGVkLCB0aGUgYWRhcHRlcnMgd2lsbCBiZSBsaXN0ZWQgYXMgJ2V0aDAnLCAKLSAgICAgICAgICAgICAgICAgICAnZXRoMScsICdldGgyJywgZXRjLgotICAgICAgICAgICAgICAgICAgIEZvciBlYWNoIGFkYXB0ZXIsIHJlcGVhdCBzdGVwcyAzIGFuZCA0IGJlbG93LgotCi0gICBOT1RFIDI6IElmIHlvdSBoYXZlIG90aGVyIEV0aGVybmV0IGFkYXB0ZXJzIGluc3RhbGxlZCwgeW91ciBNYXJ2ZWxsCi0gICAgICAgICAgIFl1a29uIG9yIFN5c0tvbm5lY3QgU0stOTh4eCBhZGFwdGVyIHdpbGwgYmUgbWFwcGVkIHRvIHRoZSAKLSAgICAgICAgICAgICAgICAgICBuZXh0IGF2YWlsYWJsZSBudW1iZXIsIGUuZy4gJ2V0aDEnLiBUaGUgbWFwcGluZyBpcyBleGVjdXRlZCAKLSAgICAgICAgICAgICAgICAgICBhdXRvbWF0aWNhbGx5LgotICAgICAgICAgICBUaGUgbW9kdWxlIGluc3RhbGxhdGlvbiBtZXNzYWdlIChkaXNwbGF5ZWQgZWl0aGVyIGluIGEgc3lzdGVtCi0gICAgICAgICAgIGxvZyBmaWxlIG9yIG9uIHRoZSBjb25zb2xlKSBwcmludHMgYSBsaW5lIGZvciBlYWNoIGFkYXB0ZXIgCi0gICAgICAgICAgIGZvdW5kIGNvbnRhaW5pbmcgdGhlIGNvcnJlc3BvbmRpbmcgJ2V0aFgnLgotCi0zLiBTZWxlY3QgYW4gSVAgYWRkcmVzcyBhbmQgYXNzaWduIGl0IHRvIHRoZSByZXNwZWN0aXZlIGFkYXB0ZXIgYnkgCi0gICBlbnRlcmluZzoKLSAgIGlmY29uZmlnIGV0aDAgPGlwLWFkZHJlc3M+Ci0gICBXaXRoIHRoaXMgY29tbWFuZCwgdGhlIGFkYXB0ZXIgaXMgY29ubmVjdGVkIHRvIHRoZSBFdGhlcm5ldC4gCi0gICAKLSAgIFNLLTk4eHggR2lnYWJpdCBFdGhlcm5ldCBTZXJ2ZXIgQWRhcHRlcnM6IFRoZSB5ZWxsb3cgTEVEIG9uIHRoZSBhZGFwdGVyIAotICAgaXMgbm93IGFjdGl2ZSwgdGhlIGxpbmsgc3RhdHVzIExFRCBvZiB0aGUgcHJpbWFyeSBwb3J0IGlzIGFjdGl2ZSBhbmQgCi0gICB0aGUgbGluayBzdGF0dXMgTEVEIG9mIHRoZSBzZWNvbmRhcnkgcG9ydCAob24gZHVhbCBwb3J0IGFkYXB0ZXJzKSBpcyAKLSAgIGJsaW5raW5nIChpZiB0aGUgcG9ydHMgYXJlIGNvbm5lY3RlZCB0byBhIHN3aXRjaCBvciBodWIpLgotICAgU0stOTh4eCBWMi4wIEdpZ2FiaXQgRXRoZXJuZXQgQWRhcHRlcnM6IFRoZSBsaW5rIHN0YXR1cyBMRUQgaXMgYWN0aXZlLgotICAgSW4gYWRkaXRpb24sIHlvdSB3aWxsIHJlY2VpdmUgYSBzdGF0dXMgbWVzc2FnZSBvbiB0aGUgY29uc29sZSBzdGF0aW5nCi0gICAiZXRoWDogbmV0d29yayBjb25uZWN0aW9uIHVwIHVzaW5nIHBvcnQgWSIgYW5kIHNob3dpbmcgdGhlIHNlbGVjdGVkIAotICAgY29ubmVjdGlvbiBwYXJhbWV0ZXJzICh4IHN0YW5kcyBmb3IgdGhlIGV0aGVybmV0IGRldmljZSBudW1iZXIgCi0gICAoMCwxLDIsIGV0YyksIHkgc3RhbmRzIGZvciB0aGUgcG9ydCBuYW1lIChBIG9yIEIpKS4KLQotICAgTk9URTogSWYgeW91IGFyZSBpbiBkb3VidCBhYm91dCBJUCBhZGRyZXNzZXMsIGFzayB5b3VyIG5ldHdvcmsKLSAgICAgICAgIGFkbWluaXN0cmF0b3IgZm9yIGFzc2lzdGFuY2UuCi0gIAotNC4gWW91ciBhZGFwdGVyIHNob3VsZCBub3cgYmUgZnVsbHkgb3BlcmF0aW9uYWwuCi0gICBVc2UgJ3BpbmcgPG90aGVyc3RhdGlvbj4nIHRvIHZlcmlmeSB0aGUgY29ubmVjdGlvbiB0byBvdGhlciBjb21wdXRlcnMgCi0gICBvbiB5b3VyIG5ldHdvcmsuCi01LiBUbyBjaGVjayB0aGUgYWRhcHRlciBjb25maWd1cmF0aW9uIHZpZXcgL3Byb2MvbmV0L3NrOThsaW4vW2RldmljZW5hbWVdLgotICAgRm9yIGV4YW1wbGUgYnkgZXhlY3V0aW5nOiAgICAKLSAgICJjYXQgL3Byb2MvbmV0L3NrOThsaW4vZXRoMCIgCi0KLVVubG9hZCB0aGUgbW9kdWxlCi0tLS0tLS0tLS0tLS0tLS0tLQotVG8gc3RvcCBhbmQgdW5sb2FkIHRoZSBkcml2ZXIgbW9kdWxlcywgcHJvY2VlZCBhcyBmb2xsb3dzOgotCi0xLiBFeGVjdXRlIHRoZSBjb21tYW5kICJpZmNvbmZpZyBldGgwIGRvd24iLgotMi4gRXhlY3V0ZSB0aGUgY29tbWFuZCAicm1tb2Qgc2s5OGxpbiIuCi0KLTMuMiAgSW5jbHVzaW9uIG9mIGFkYXB0ZXIgYXQgc3lzdGVtIHN0YXJ0Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1TaW5jZSBhIGxhcmdlIG51bWJlciBvZiBkaWZmZXJlbnQgTGludXggZGlzdHJpYnV0aW9ucyBhcmUgCi1hdmFpbGFibGUsIHdlIGFyZSB1bmFibGUgdG8gZGVzY3JpYmUgYSBnZW5lcmFsIGluc3RhbGxhdGlvbiBwcm9jZWR1cmUKLWZvciB0aGUgZHJpdmVyIG1vZHVsZS4KLUJlY2F1c2UgdGhlIGRyaXZlciBpcyBub3cgaW50ZWdyYXRlZCBpbiB0aGUga2VybmVsLCBpbnN0YWxsYXRpb24gc2hvdWxkCi1iZSBlYXN5LCB1c2luZyB0aGUgc3RhbmRhcmQgbWVjaGFuaXNtIG9mIHlvdXIgZGlzdHJpYnV0aW9uLgotUmVmZXIgdG8gdGhlIGRpc3RyaWJ1dGlvbidzIG1hbnVhbCBmb3IgaW5zdGFsbGF0aW9uIG9mIGV0aGVybmV0IGFkYXB0ZXJzLgotCi0qKioKLQotNCAgRHJpdmVyIFBhcmFtZXRlcnMKLT09PT09PT09PT09PT09PT09PT09Ci0KLVBhcmFtZXRlcnMgY2FuIGJlIHNldCBhdCB0aGUgY29tbWFuZCBsaW5lIGFmdGVyIHRoZSBtb2R1bGUgaGFzIGJlZW4gCi1sb2FkZWQgd2l0aCB0aGUgY29tbWFuZCAnbW9kcHJvYmUnLgotSW4gc29tZSBkaXN0cmlidXRpb25zLCB0aGUgY29uZmlndXJhdGlvbiB0b29scyBhcmUgYWJsZSB0byBwYXNzIHBhcmFtZXRlcnMKLXRvIHRoZSBkcml2ZXIgbW9kdWxlLgotCi1JZiB5b3UgdXNlIHRoZSBrZXJuZWwgbW9kdWxlIGxvYWRlciwgeW91IGNhbiBzZXQgZHJpdmVyIHBhcmFtZXRlcnMKLWluIHRoZSBmaWxlIC9ldGMvbW9kcHJvYmUuY29uZiAob3IgL2V0Yy9tb2R1bGVzLmNvbmYgaW4gMi40IG9yIGVhcmxpZXIpLgotVG8gc2V0IHRoZSBkcml2ZXIgcGFyYW1ldGVycyBpbiB0aGlzIGZpbGUsIHByb2NlZWQgYXMgZm9sbG93czoKLQotMS4gSW5zZXJ0IGEgbGluZSBvZiB0aGUgZm9ybSA6Ci0gICBvcHRpb25zIHNrOThsaW4gLi4uCi0gICBGb3IgIi4uLiIsIHRoZSBzYW1lIHN5bnRheCBpcyByZXF1aXJlZCBhcyBkZXNjcmliZWQgZm9yIHRoZSBjb21tYW5kCi0gICBsaW5lIHBhcmFtZXRlcnMgb2YgbW9kcHJvYmUgYmVsb3cuCi0yLiBUbyBhY3RpdmF0ZSB0aGUgbmV3IHBhcmFtZXRlcnMsIGVpdGhlciByZWJvb3QgeW91ciBjb21wdXRlcgotICAgb3IgCi0gICB1bmxvYWQgYW5kIHJlbG9hZCB0aGUgZHJpdmVyLgotICAgVGhlIHN5bnRheCBvZiB0aGUgZHJpdmVyIHBhcmFtZXRlcnMgaXM6Ci0KLSAgICAgICAgbW9kcHJvYmUgc2s5OGxpbiBwYXJhbWV0ZXI9dmFsdWUxWyx2YWx1ZTJbLHZhbHVlMy4uLl1dCi0KLSAgIHdoZXJlIHZhbHVlMSByZWZlcnMgdG8gdGhlIGZpcnN0IGFkYXB0ZXIsIHZhbHVlMiB0byB0aGUgc2Vjb25kIGV0Yy4KLQotTk9URTogQWxsIHBhcmFtZXRlcnMgYXJlIGNhc2Ugc2Vuc2l0aXZlLiBXcml0ZSB0aGVtIGV4YWN0bHkgYXMgc2hvd24gCi0gICAgICBiZWxvdy4KLQotRXhhbXBsZToKLVN1cHBvc2UgeW91IGhhdmUgdHdvIGFkYXB0ZXJzLiBZb3Ugd2FudCB0byBzZXQgYXV0by1uZWdvdGlhdGlvbgotb24gdGhlIGZpcnN0IGFkYXB0ZXIgdG8gT04gYW5kIG9uIHRoZSBzZWNvbmQgYWRhcHRlciB0byBPRkYuCi1Zb3UgYWxzbyB3YW50IHRvIHNldCBEdXBsZXhDYXBhYmlsaXRpZXMgb24gdGhlIGZpcnN0IGFkYXB0ZXIKLXRvIEZVTEwsIGFuZCBvbiB0aGUgc2Vjb25kIGFkYXB0ZXIgdG8gSEFMRi4KLVRoZW4sIHlvdSBtdXN0IGVudGVyOgotCi0gICAgICAgIG1vZHByb2JlIHNrOThsaW4gQXV0b05lZ19BPU9uLE9mZiBEdXBDYXBfQT1GdWxsLEhhbGYKLQotTk9URTogVGhlIG51bWJlciBvZiBhZGFwdGVycyB0aGF0IGNhbiBiZSBjb25maWd1cmVkIHRoaXMgd2F5IGlzCi0gICAgICBsaW1pdGVkIGluIHRoZSBkcml2ZXIgKGZpbGUgc2tnZS5jLCBjb25zdGFudCBTS19NQVhfQ0FSRF9QQVJBTSkuCi0gICAgICBUaGUgY3VycmVudCBsaW1pdCBpcyAxNi4gSWYgeW91IGhhcHBlbiB0byBpbnN0YWxsCi0gICAgICBtb3JlIGFkYXB0ZXJzLCBhZGp1c3QgdGhpcyBhbmQgcmVjb21waWxlLgotCi0KLTQuMSAgUGVyLVBvcnQgUGFyYW1ldGVycwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVRoZXNlIHNldHRpbmdzIGFyZSBhdmFpbGFibGUgZm9yIGVhY2ggcG9ydCBvbiB0aGUgYWRhcHRlci4KLUluIHRoZSBmb2xsb3dpbmcgZGVzY3JpcHRpb24sICc/JyBzdGFuZHMgZm9yIHRoZSBwb3J0IGZvcgotd2hpY2ggeW91IHNldCB0aGUgcGFyYW1ldGVyIChBIG9yIEIpLgotCi1TcGVlZAotLS0tLS0KLVBhcmFtZXRlcjogICAgU3BlZWRfPwotVmFsdWVzOiAgICAgICAxMCwgMTAwLCAxMDAwLCBBdXRvCi1EZWZhdWx0OiAgICAgIEF1dG8KLQotVGhpcyBwYXJhbWV0ZXIgaXMgdXNlZCB0byBzZXQgdGhlIHNwZWVkIGNhcGFiaWxpdGllcy4gSXQgaXMgb25seSB2YWxpZCAKLWZvciB0aGUgU0stOTh4eCBWMi4wIGNvcHBlciBhZGFwdGVycy4KLVVzdWFsbHksIHRoZSBzcGVlZCBpcyBuZWdvdGlhdGVkIGJldHdlZW4gdGhlIHR3byBwb3J0cyBkdXJpbmcgbGluayAKLWVzdGFibGlzaG1lbnQuIElmIHRoaXMgZmFpbHMsIGEgcG9ydCBjYW4gYmUgZm9yY2VkIHRvIGEgc3BlY2lmaWMgc2V0dGluZwotd2l0aCB0aGlzIHBhcmFtZXRlci4KLQotQXV0by1OZWdvdGlhdGlvbgotLS0tLS0tLS0tLS0tLS0tLQotUGFyYW1ldGVyOiAgICBBdXRvTmVnXz8KLVZhbHVlczogICAgICAgT24sIE9mZiwgU2Vuc2UKLURlZmF1bHQ6ICAgICAgT24KLSAgCi1UaGUgIlNlbnNlIi1tb2RlIGF1dG9tYXRpY2FsbHkgZGV0ZWN0cyB3aGV0aGVyIHRoZSBsaW5rIHBhcnRuZXIgc3VwcG9ydHMKLWF1dG8tbmVnb3RpYXRpb24gb3Igbm90LgotCi1EdXBsZXggQ2FwYWJpbGl0aWVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tCi1QYXJhbWV0ZXI6ICAgIER1cENhcF8/Ci1WYWx1ZXM6ICAgICAgIEhhbGYsIEZ1bGwsIEJvdGgKLURlZmF1bHQ6ICAgICAgQm90aAotCi1UaGlzIHBhcmFtZXRlcnMgaXMgb25seSByZWxldmFudCBpZiBhdXRvLW5lZ290aWF0aW9uIGZvciB0aGlzIHBvcnQgaXMgCi1ub3Qgc2V0IHRvICJTZW5zZSIuIElmIGF1dG8tbmVnb3RpYXRpb24gaXMgc2V0IHRvICJPbiIsIGFsbCB0aHJlZSB2YWx1ZXMKLWFyZSBwb3NzaWJsZS4gSWYgaXQgaXMgc2V0IHRvICJPZmYiLCBvbmx5ICJGdWxsIiBhbmQgIkhhbGYiIGFyZSBhbGxvd2VkLgotVGhpcyBwYXJhbWV0ZXIgaXMgdXNlZnVsIGlmIHlvdXIgbGluayBwYXJ0bmVyIGRvZXMgbm90IHN1cHBvcnQgYWxsCi1wb3NzaWJsZSBjb21iaW5hdGlvbnMuCi0KLUZsb3cgQ29udHJvbAotLS0tLS0tLS0tLS0tCi1QYXJhbWV0ZXI6ICAgIEZsb3dDdHJsXz8KLVZhbHVlczogICAgICAgU3ltLCBTeW1PclJlbSwgTG9jU2VuZCwgTm9uZQotRGVmYXVsdDogICAgICBTeW1PclJlbQotCi1UaGlzIHBhcmFtZXRlciBjYW4gYmUgdXNlZCB0byBzZXQgdGhlIGZsb3cgY29udHJvbCBjYXBhYmlsaXRpZXMgdGhlIAotcG9ydCByZXBvcnRzIGR1cmluZyBhdXRvLW5lZ290aWF0aW9uLiBJdCBjYW4gYmUgc2V0IGZvciBlYWNoIHBvcnQgCi1pbmRpdmlkdWFsbHkuCi1Qb3NzaWJsZSBtb2RlczoKLSAgIC0tIFN5bSAgICAgID0gU3ltbWV0cmljOiBib3RoIGxpbmsgcGFydG5lcnMgYXJlIGFsbG93ZWQgdG8gc2VuZCAKLSAgICAgICAgICAgICAgICAgIFBBVVNFIGZyYW1lcwotICAgLS0gU3ltT3JSZW0gPSBTeW1tZXRyaWNPclJlbW90ZTogYm90aCBvciBvbmx5IHJlbW90ZSBwYXJ0bmVyIAotICAgICAgICAgICAgICAgICAgYXJlIGFsbG93ZWQgdG8gc2VuZCBQQVVTRSBmcmFtZXMKLSAgIC0tIExvY1NlbmQgID0gTG9jYWxTZW5kOiBvbmx5IGxvY2FsIGxpbmsgcGFydG5lciBpcyBhbGxvd2VkIAotICAgICAgICAgICAgICAgICAgdG8gc2VuZCBQQVVTRSBmcmFtZXMKLSAgIC0tIE5vbmUgICAgID0gbm8gbGluayBwYXJ0bmVyIGlzIGFsbG93ZWQgdG8gc2VuZCBQQVVTRSBmcmFtZXMKLSAgCi1OT1RFOiBUaGlzIHBhcmFtZXRlciBpcyBpZ25vcmVkIGlmIGF1dG8tbmVnb3RpYXRpb24gaXMgc2V0IHRvICJPZmYiLgotCi1Sb2xlIGluIE1hc3Rlci1TbGF2ZS1OZWdvdGlhdGlvbiAoMTAwMEJhc2UtVCBvbmx5KQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVBhcmFtZXRlcjogICAgUm9sZV8/Ci1WYWx1ZXM6ICAgICAgIEF1dG8sIE1hc3RlciwgU2xhdmUKLURlZmF1bHQ6ICAgICAgQXV0bwotCi1UaGlzIHBhcmFtZXRlciBpcyBvbmx5IHZhbGlkIGZvciB0aGUgU0stOTgyMSBhbmQgU0stOTgyMiBhZGFwdGVycy4KLUZvciB0d28gMTAwMEJhc2UtVCBwb3J0cyB0byBjb21tdW5pY2F0ZSwgb25lIG11c3QgdGFrZSB0aGUgcm9sZSBvZiB0aGUKLW1hc3RlciAocHJvdmlkaW5nIHRpbWluZyBpbmZvcm1hdGlvbiksIHdoaWxlIHRoZSBvdGhlciBtdXN0IGJlIHRoZSAKLXNsYXZlLiBVc3VhbGx5LCB0aGlzIGlzIG5lZ290aWF0ZWQgYmV0d2VlbiB0aGUgdHdvIHBvcnRzIGR1cmluZyBsaW5rIAotZXN0YWJsaXNobWVudC4gSWYgdGhpcyBmYWlscywgYSBwb3J0IGNhbiBiZSBmb3JjZWQgdG8gYSBzcGVjaWZpYyBzZXR0aW5nCi13aXRoIHRoaXMgcGFyYW1ldGVyLgotCi0KLTQuMiAgQWRhcHRlciBQYXJhbWV0ZXJzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1Db25uZWN0aW9uIFR5cGUgKFNLLTk4eHggVjIuMCBjb3BwZXIgYWRhcHRlcnMgb25seSkKLS0tLS0tLS0tLS0tLS0tLQotUGFyYW1ldGVyOiAgICBDb25UeXBlCi1WYWx1ZXM6ICAgICAgIEF1dG8sIDEwMEZELCAxMDBIRCwgMTBGRCwgMTBIRAotRGVmYXVsdDogICAgICBBdXRvCi0KLVRoZSBwYXJhbWV0ZXIgJ0NvblR5cGUnIGlzIGEgY29tYmluYXRpb24gb2YgYWxsIGZpdmUgcGVyLXBvcnQgcGFyYW1ldGVycwotd2l0aGluIG9uZSBzaW5nbGUgcGFyYW1ldGVyLiBUaGlzIHNpbXBsaWZpZXMgdGhlIGNvbmZpZ3VyYXRpb24gb2YgYm90aCBwb3J0cwotb2YgYW4gYWRhcHRlciBjYXJkISBUaGUgZGlmZmVyZW50IHZhbHVlcyBvZiB0aGlzIHZhcmlhYmxlIHJlZmxlY3QgdGhlIG1vc3QgCi1tZWFuaW5nZnVsIGNvbWJpbmF0aW9ucyBvZiBwb3J0IHBhcmFtZXRlcnMuCi0KLVRoZSBmb2xsb3dpbmcgdGFibGUgc2hvd3MgdGhlIHZhbHVlcyBvZiAnQ29uVHlwZScgYW5kIHRoZSBjb3JyZXNwb25kaW5nCi1jb21iaW5hdGlvbnMgb2YgdGhlIHBlci1wb3J0IHBhcmFtZXRlcnM6Ci0KLSAgICBDb25UeXBlICAgfCAgRHVwQ2FwICAgQXV0b05lZyAgIEZsb3dDdHJsICAgUm9sZSAgICAgICAgICAgICBTcGVlZAotICAgIC0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgQXV0byAgICAgIHwgIEJvdGggICAgIE9uICAgICAgICBTeW1PclJlbSAgIEF1dG8gICAgICAgICAgICAgQXV0bwotICAgIDEwMEZEICAgICB8ICBGdWxsICAgICBPZmYgICAgICAgTm9uZSAgICAgICBBdXRvIChpZ25vcmVkKSAgIDEwMAotICAgIDEwMEhEICAgICB8ICBIYWxmICAgICBPZmYgICAgICAgTm9uZSAgICAgICBBdXRvIChpZ25vcmVkKSAgIDEwMAotICAgIDEwRkQgICAgICB8ICBGdWxsICAgICBPZmYgICAgICAgTm9uZSAgICAgICBBdXRvIChpZ25vcmVkKSAgIDEwCi0gICAgMTBIRCAgICAgIHwgIEhhbGYgICAgIE9mZiAgICAgICBOb25lICAgICAgIEF1dG8gKGlnbm9yZWQpICAgMTAKLQotU3RhdGluZyBhbnkgb3RoZXIgcG9ydCBwYXJhbWV0ZXIgdG9nZXRoZXIgd2l0aCB0aGlzICdDb25UeXBlJyB2YXJpYWJsZQotd2lsbCByZXN1bHQgaW4gYSBtZXJnZWQgY29uZmlndXJhdGlvbiBvZiB0aG9zZSBzZXR0aW5ncy4gVGhpcyBkdWUgdG8gCi10aGUgZmFjdCwgdGhhdCB0aGUgcGVyLXBvcnQgcGFyYW1ldGVycyAoZS5nLiBTcGVlZF8/ICkgaGF2ZSBhIGhpZ2hlcgotcHJpb3JpdHkgdGhhbiB0aGUgY29tYmluZWQgdmFyaWFibGUgJ0NvblR5cGUnLgotCi1OT1RFOiBUaGlzIHBhcmFtZXRlciBpcyBhbHdheXMgdXNlZCBvbiBib3RoIHBvcnRzIG9mIHRoZSBhZGFwdGVyIGNhcmQuCi0KLUludGVycnVwdCBNb2RlcmF0aW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUGFyYW1ldGVyOiAgICBNb2RlcmF0aW9uCi1WYWx1ZXM6ICAgICAgIE5vbmUsIFN0YXRpYywgRHluYW1pYwotRGVmYXVsdDogICAgICBOb25lCi0KLUludGVycnVwdCBtb2RlcmF0aW9uIGlzIGVtcGxveWVkIHRvIGxpbWl0IHRoZSBtYXhpbXVtIG51bWJlciBvZiBpbnRlcnJ1cHRzCi10aGUgZHJpdmVyIGhhcyB0byBzZXJ2ZS4gVGhhdCBpcywgb25lIG9yIG1vcmUgaW50ZXJydXB0cyAod2hpY2ggaW5kaWNhdGUgYW55Ci10cmFuc21pdCBvciByZWNlaXZlIHBhY2tldCB0byBiZSBwcm9jZXNzZWQpIGFyZSBxdWV1ZWQgdW50aWwgdGhlIGRyaXZlciAKLXByb2Nlc3NlcyB0aGVtLiBXaGVuIHF1ZXVlZCBpbnRlcnJ1cHRzIGFyZSB0byBiZSBzZXJ2ZWQsIGlzIGRldGVybWluZWQgYnkgdGhlCi0nSW50c1BlclNlYycgcGFyYW1ldGVyLCB3aGljaCBpcyBleHBsYWluZWQgbGF0ZXIgYmVsb3cuCi0KLVBvc3NpYmxlIG1vZGVzOgotCi0gICAtLSBOb25lIC0gTm8gaW50ZXJydXB0IG1vZGVyYXRpb24gaXMgYXBwbGllZCBvbiB0aGUgYWRhcHRlciBjYXJkLiAKLSAgICAgIFRoZXJlZm9yZSwgZWFjaCB0cmFuc21pdCBvciByZWNlaXZlIGludGVycnVwdCBpcyBzZXJ2ZWQgaW1tZWRpYXRlbHkKLSAgICAgIGFzIHNvb24gYXMgaXQgYXBwZWFycyBvbiB0aGUgaW50ZXJydXB0IGxpbmUgb2YgdGhlIGFkYXB0ZXIgY2FyZC4KLQotICAgLS0gU3RhdGljIC0gSW50ZXJydXB0IG1vZGVyYXRpb24gaXMgYXBwbGllZCBvbiB0aGUgYWRhcHRlciBjYXJkLiAKLSAgICAgIEFsbCB0cmFuc21pdCBhbmQgcmVjZWl2ZSBpbnRlcnJ1cHRzIGFyZSBxdWV1ZWQgdW50aWwgYSBjb21wbGV0ZQotICAgICAgbW9kZXJhdGlvbiBpbnRlcnZhbCBlbmRzLiBJZiBzdWNoIGEgbW9kZXJhdGlvbiBpbnRlcnZhbCBlbmRzLCBhbGwKLSAgICAgIHF1ZXVlZCBpbnRlcnJ1cHRzIGFyZSBwcm9jZXNzZWQgaW4gb25lIGJpZyBidW5jaCB3aXRob3V0IGFueSBkZWxheS4KLSAgICAgIFRoZSB0ZXJtICdzdGF0aWMnIHJlZmxlY3RzIHRoZSBmYWN0LCB0aGF0IGludGVycnVwdCBtb2RlcmF0aW9uIGlzCi0gICAgICBhbHdheXMgZW5hYmxlZCwgcmVnYXJkbGVzcyBob3cgbXVjaCBuZXR3b3JrIGxvYWQgaXMgY3VycmVudGx5IAotICAgICAgcGFzc2luZyB2aWEgYSBwYXJ0aWN1bGFyIGludGVyZmFjZS4gSW4gYWRkaXRpb24sIHRoZSBkdXJhdGlvbiBvZgotICAgICAgdGhlIG1vZGVyYXRpb24gaW50ZXJ2YWwgaGFzIGEgZml4ZWQgbGVuZ3RoIHRoYXQgbmV2ZXIgY2hhbmdlcyB3aGlsZQotICAgICAgdGhlIGRyaXZlciBpcyBvcGVyYXRpb25hbC4KLQotICAgLS0gRHluYW1pYyAtIEludGVycnVwdCBtb2RlcmF0aW9uIG1pZ2h0IGJlIGFwcGxpZWQgb24gdGhlIGFkYXB0ZXIgY2FyZCwKLSAgICAgIGRlcGVuZGluZyBvbiB0aGUgbG9hZCBvZiB0aGUgc3lzdGVtLiBJZiB0aGUgZHJpdmVyIGRldGVjdHMgdGhhdCB0aGUKLSAgICAgIHN5c3RlbSBsb2FkIGlzIHRvbyBoaWdoLCB0aGUgZHJpdmVyIHRyaWVzIHRvIHNoaWVsZCB0aGUgc3lzdGVtIGFnYWluc3QgCi0gICAgICB0b28gbXVjaCBuZXR3b3JrIGxvYWQgYnkgZW5hYmxpbmcgaW50ZXJydXB0IG1vZGVyYXRpb24uIElmIC0gYXQgYSBsYXRlcgotICAgICAgdGltZSAtIHRoZSBDUFUgdXRpbGl6YXRpb24gZGVjcmVhc2VzIGFnYWluIChvciBpZiB0aGUgbmV0d29yayBsb2FkIGlzIAotICAgICAgbmVnbGlnaWJsZSkgdGhlIGludGVycnVwdCBtb2RlcmF0aW9uIHdpbGwgYXV0b21hdGljYWxseSBiZSBkaXNhYmxlZC4KLQotSW50ZXJydXB0IG1vZGVyYXRpb24gc2hvdWxkIGJlIHVzZWQgd2hlbiB0aGUgZHJpdmVyIGhhcyB0byBoYW5kbGUgb25lIG9yIG1vcmUKLWludGVyZmFjZXMgd2l0aCBhIGhpZ2ggbmV0d29yayBsb2FkLCB3aGljaCAtIGFzIGEgY29uc2VxdWVuY2UgLSBsZWFkcyBhbHNvIHRvIGEKLWhpZ2ggQ1BVIHV0aWxpemF0aW9uLiBXaGVuIG1vZGVyYXRpb24gaXMgYXBwbGllZCBpbiBzdWNoIGhpZ2ggbmV0d29yayBsb2FkIAotc2l0dWF0aW9ucywgQ1BVIGxvYWQgbWlnaHQgYmUgcmVkdWNlZCBieSAyMC0zMCUuCi0KLU5PVEU6IFRoZSBkcmF3YmFjayBvZiB1c2luZyBpbnRlcnJ1cHQgbW9kZXJhdGlvbiBpcyBhbiBpbmNyZWFzZSBvZiB0aGUgcm91bmQtCi10cmlwLXRpbWUgKFJUVCksIGR1ZSB0byB0aGUgcXVldWVpbmcgYW5kIHNlcnZpbmcgb2YgaW50ZXJydXB0cyBhdCBkZWRpY2F0ZWQKLW1vZGVyYXRpb24gdGltZXMuCi0KLUludGVycnVwdHMgcGVyIHNlY29uZAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1QYXJhbWV0ZXI6ICAgIEludHNQZXJTZWMKLVZhbHVlczogICAgICAgMzAuLi40MDAwMCAoaW50ZXJydXB0cyBwZXIgc2Vjb25kKQotRGVmYXVsdDogICAgICAyMDAwCi0KLVRoaXMgcGFyYW1ldGVyIGlzIG9ubHkgdXNlZCBpZiBlaXRoZXIgc3RhdGljIG9yIGR5bmFtaWMgaW50ZXJydXB0IG1vZGVyYXRpb24KLWlzIHVzZWQgb24gYSBuZXR3b3JrIGFkYXB0ZXIgY2FyZC4gVXNpbmcgdGhpcyBwYXJhbWV0ZXIgaWYgbm8gbW9kZXJhdGlvbiBpcwotYXBwbGllZCB3aWxsIGxlYWQgdG8gbm8gYWN0aW9uIHBlcmZvcm1lZC4KLQotVGhpcyBwYXJhbWV0ZXIgZGV0ZXJtaW5lcyB0aGUgbGVuZ3RoIG9mIGFueSBpbnRlcnJ1cHQgbW9kZXJhdGlvbiBpbnRlcnZhbC4gCi1Bc3N1bWluZyB0aGF0IHN0YXRpYyBpbnRlcnJ1cHQgbW9kZXJhdGlvbiBpcyB0byBiZSB1c2VkLCBhbiAnSW50c1BlclNlYycgCi1wYXJhbWV0ZXIgdmFsdWUgb2YgMjAwMCB3aWxsIGxlYWQgdG8gYW4gaW50ZXJydXB0IG1vZGVyYXRpb24gaW50ZXJ2YWwgb2YKLTUwMCBtaWNyb3NlY29uZHMuIAotCi1OT1RFOiBUaGUgZHVyYXRpb24gb2YgdGhlIG1vZGVyYXRpb24gaW50ZXJ2YWwgaXMgdG8gYmUgY2hvc2VuIHdpdGggY2FyZS4KLUF0IGZpcnN0IGdsYW5jZSwgc2VsZWN0aW5nIGEgdmVyeSBsb25nIGR1cmF0aW9uIChlLmcuIG9ubHkgMTAwIGludGVycnVwdHMgcGVyIAotc2Vjb25kKSBzZWVtcyB0byBiZSBtZWFuaW5nZnVsLCBidXQgdGhlIGluY3JlYXNlIG9mIHBhY2tldC1wcm9jZXNzaW5nIGRlbGF5IAotaXMgdHJlbWVuZG91cy4gT24gdGhlIG90aGVyIGhhbmQsIHNlbGVjdGluZyBhIHZlcnkgc2hvcnQgbW9kZXJhdGlvbiB0aW1lIG1pZ2h0Ci1jb21wZW5zYXRlIHRoZSB1c2Ugb2YgYW55IG1vZGVyYXRpb24gYmVpbmcgYXBwbGllZC4KLQotCi1QcmVmZXJyZWQgUG9ydAotLS0tLS0tLS0tLS0tLS0KLVBhcmFtZXRlcjogICAgUHJlZlBvcnQKLVZhbHVlczogICAgICAgQSwgQgotRGVmYXVsdDogICAgICBBCi0KLVRoaXMgaXMgdXNlZCB0byBmb3JjZSB0aGUgcHJlZmVycmVkIHBvcnQgdG8gQSBvciBCIChvbiBkdWFsLXBvcnQgbmV0d29yayAKLWFkYXB0ZXJzKS4gVGhlIHByZWZlcnJlZCBwb3J0IGlzIHRoZSBvbmUgdGhhdCBpcyB1c2VkIGlmIGJvdGggYXJlIGRldGVjdGVkCi1hcyBmdWxseSBmdW5jdGlvbmFsLgotCi1STE1UIE1vZGUgKFJlZHVuZGFudCBMaW5rIE1hbmFnZW1lbnQgVGVjaG5vbG9neSkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUGFyYW1ldGVyOiAgICBSbG10TW9kZQotVmFsdWVzOiAgICAgICBDaGVja0xpbmtTdGF0ZSxDaGVja0xvY2FsUG9ydCwgQ2hlY2tTZWcsIER1YWxOZXQKLURlZmF1bHQ6ICAgICAgQ2hlY2tMaW5rU3RhdGUKLQotUkxNVCBtb25pdG9ycyB0aGUgc3RhdHVzIG9mIHRoZSBwb3J0LiBJZiB0aGUgbGluayBvZiB0aGUgYWN0aXZlIHBvcnQgCi1mYWlscywgUkxNVCBzd2l0Y2hlcyBpbW1lZGlhdGVseSB0byB0aGUgc3RhbmRieSBsaW5rLiBUaGUgdmlydHVhbCBsaW5rIGlzIAotbWFpbnRhaW5lZCBhcyBsb25nIGFzIGF0IGxlYXN0IG9uZSAncGh5c2ljYWwnIGxpbmsgaXMgdXAuIAotCi1Qb3NzaWJsZSBtb2RlczoKLQotICAgLS0gQ2hlY2tMaW5rU3RhdGUgLSBDaGVjayBsaW5rIHN0YXRlIG9ubHk6IFJMTVQgdXNlcyB0aGUgbGluayBzdGF0ZQotICAgICAgcmVwb3J0ZWQgYnkgdGhlIGFkYXB0ZXIgaGFyZHdhcmUgZm9yIGVhY2ggaW5kaXZpZHVhbCBwb3J0IHRvIAotICAgICAgZGV0ZXJtaW5lIHdoZXRoZXIgYSBwb3J0IGNhbiBiZSB1c2VkIGZvciBhbGwgbmV0d29yayB0cmFmZmljIG9yIAotICAgICAgbm90LgotCi0gICAtLSBDaGVja0xvY2FsUG9ydCAtIEluIHRoaXMgbW9kZSwgUkxNVCBtb25pdG9ycyB0aGUgbmV0d29yayBwYXRoIAotICAgICAgYmV0d2VlbiB0aGUgdHdvIHBvcnRzIG9mIGFuIGFkYXB0ZXIgYnkgcmVndWxhcmx5IGV4Y2hhbmdpbmcgcGFja2V0cwotICAgICAgYmV0d2VlbiB0aGVtLiBUaGlzIG1vZGUgcmVxdWlyZXMgYSBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gaW4gd2hpY2ggCi0gICAgICB0aGUgdHdvIHBvcnRzIGFyZSBhYmxlIHRvICJzZWUiIGVhY2ggb3RoZXIgKGkuZS4gdGhlcmUgbXVzdCBub3QgYmUgCi0gICAgICBhbnkgcm91dGVyIGJldHdlZW4gdGhlIHBvcnRzKS4KLQotICAgLS0gQ2hlY2tTZWcgLSBDaGVjayBsb2NhbCBwb3J0IGFuZCBzZWdtZW50YXRpb246IFRoaXMgbW9kZSBzdXBwb3J0cyB0aGUKLSAgICAgIHNhbWUgZnVuY3Rpb25zIGFzIHRoZSBDaGVja0xvY2FsUG9ydCBtb2RlIGFuZCBhZGRpdGlvbmFsbHkgY2hlY2tzIAotICAgICAgbmV0d29yayBzZWdtZW50YXRpb24gYmV0d2VlbiB0aGUgcG9ydHMuIFRoZXJlZm9yZSwgdGhpcyBtb2RlIGlzIG9ubHkKLSAgICAgIHRvIGJlIHVzZWQgaWYgR2lnYWJpdCBFdGhlcm5ldCBzd2l0Y2hlcyBhcmUgaW5zdGFsbGVkIG9uIHRoZSBuZXR3b3JrCi0gICAgICB0aGF0IGhhdmUgYmVlbiBjb25maWd1cmVkIHRvIHVzZSB0aGUgU3Bhbm5pbmcgVHJlZSBwcm90b2NvbC4gCi0KLSAgIC0tIER1YWxOZXQgLSBJbiB0aGlzIG1vZGUsIHBvcnRzIEEgYW5kIEIgYXJlIHVzZWQgYXMgc2VwYXJhdGUgZGV2aWNlcy4gCi0gICAgICBJZiB5b3UgaGF2ZSBhIGR1YWwgcG9ydCBhZGFwdGVyLCBwb3J0IEEgd2lsbCBiZSBjb25maWd1cmVkIGFzIGV0aDAgCi0gICAgICBhbmQgcG9ydCBCIGFzIGV0aDEuIEJvdGggcG9ydHMgY2FuIGJlIHVzZWQgaW5kZXBlbmRlbnRseSB3aXRoIAotICAgICAgZGlzdGluY3QgSVAgYWRkcmVzc2VzLiBUaGUgcHJlZmVycmVkIHBvcnQgc2V0dGluZyBpcyBub3QgdXNlZC4gCi0gICAgICBSTE1UIGlzIHR1cm5lZCBvZmYuCi0gICAKLU5PVEU6IFJMTVQgbW9kZXMgQ0xQIGFuZCBDTFBTUyBhcmUgZGVzaWduZWQgdG8gb3BlcmF0ZSBpbiBjb25maWd1cmF0aW9ucyAKLSAgICAgIHdoZXJlIGEgbmV0d29yayBwYXRoIGJldHdlZW4gdGhlIHBvcnRzIG9uIG9uZSBhZGFwdGVyIGV4aXN0cy4gCi0gICAgICBNb3Jlb3ZlciwgdGhleSBhcmUgbm90IGRlc2lnbmVkIHRvIHdvcmsgd2hlcmUgYWRhcHRlcnMgYXJlIGNvbm5lY3RlZAotICAgICAgYmFjay10by1iYWNrLgotKioqCi0KLQotNSAgTGFyZ2UgRnJhbWUgU3VwcG9ydAotPT09PT09PT09PT09PT09PT09PT09PQotCi1UaGUgZHJpdmVyIHN1cHBvcnRzIGxhcmdlIGZyYW1lcyAoYWxzbyBjYWxsZWQganVtYm8gZnJhbWVzKS4gVXNpbmcgbGFyZ2UgCi1mcmFtZXMgY2FuIHJlc3VsdCBpbiBhbiBpbXByb3ZlZCB0aHJvdWdocHV0IGlmIHRyYW5zZmVycmluZyBsYXJnZSBhbW91bnRzIAotb2YgZGF0YS4KLVRvIGVuYWJsZSBsYXJnZSBmcmFtZXMsIHNldCB0aGUgTVRVIChtYXhpbXVtIHRyYW5zZmVyIHVuaXQpIG9mIHRoZSAKLWludGVyZmFjZSB0byB0aGUgZGVzaXJlZCB2YWx1ZSAodXAgdG8gOTAwMCksIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyAKLWNvbW1hbmQ6Ci0gICAgICBpZmNvbmZpZyBldGgwIG10dSA5MDAwCi1UaGlzIHdpbGwgb25seSB3b3JrIGlmIHlvdSBoYXZlIHR3byBhZGFwdGVycyBjb25uZWN0ZWQgYmFjay10by1iYWNrCi1vciBpZiB5b3UgdXNlIGEgc3dpdGNoIHRoYXQgc3VwcG9ydHMgbGFyZ2UgZnJhbWVzLiBXaGVuIHVzaW5nIGEgc3dpdGNoLCAKLWl0IHNob3VsZCBiZSBjb25maWd1cmVkIHRvIGFsbG93IGxhcmdlIGZyYW1lcyBhbmQgYXV0by1uZWdvdGlhdGlvbiBzaG91bGQgIAotYmUgc2V0IHRvIE9GRi4gVGhlIHNldHRpbmcgbXVzdCBiZSBjb25maWd1cmVkIG9uIGFsbCBhZGFwdGVycyB0aGF0IGNhbiBiZSAKLXJlYWNoZWQgYnkgdGhlIGxhcmdlIGZyYW1lcy4gSWYgb25lIGFkYXB0ZXIgaXMgbm90IHNldCB0byByZWNlaXZlIGxhcmdlIAotZnJhbWVzLCBpdCB3aWxsIHNpbXBseSBkcm9wIHRoZW0uCi0KLVlvdSBjYW4gc3dpdGNoIGJhY2sgdG8gdGhlIHN0YW5kYXJkIGV0aGVybmV0IGZyYW1lIHNpemUgYnkgZXhlY3V0aW5nIHRoZSAKLWZvbGxvd2luZyBjb21tYW5kOgotICAgICAgaWZjb25maWcgZXRoMCBtdHUgMTUwMAotCi1UbyBwZXJtYW5lbnRseSBjb25maWd1cmUgdGhpcyBzZXR0aW5nLCBhZGQgYSBzY3JpcHQgd2l0aCB0aGUgJ2lmY29uZmlnJyAKLWxpbmUgdG8gdGhlIHN5c3RlbSBzdGFydHVwIHNlcXVlbmNlIChuYW1lZCBzb21ldGhpbmcgbGlrZSAiUzk5c2s5OGxpbiIgCi1pbiAvZXRjL3JjLmQvcmMyLmQpLgotKioqCi0KLQotNiAgVkxBTiBhbmQgTGluayBBZ2dyZWdhdGlvbiBTdXBwb3J0IChJRUVFIDgwMi4xLCA4MDIuMXEsIDgwMi4zYWQpCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotVGhlIE1hcnZlbGwgWXVrb24vU3lzS29ubmVjdCBMaW51eCBkcml2ZXJzIGFyZSBhYmxlIHRvIHN1cHBvcnQgVkxBTiBhbmQgCi1MaW5rIEFnZ3JlZ2F0aW9uIGFjY29yZGluZyB0byBJRUVFIHN0YW5kYXJkcyA4MDIuMSwgODAyLjFxLCBhbmQgODAyLjNhZC4gCi1UaGVzZSBmZWF0dXJlcyBhcmUgb25seSBhdmFpbGFibGUgYWZ0ZXIgaW5zdGFsbGF0aW9uIG9mIG9wZW4gc291cmNlIAotbW9kdWxlcyBhdmFpbGFibGUgb24gdGhlIEludGVybmV0OgotRm9yIFZMQU4gZ28gdG86IGh0dHA6Ly93d3cuY2FuZGVsYXRlY2guY29tL35ncmVlYXIvdmxhbi5odG1sCi1Gb3IgTGluayBBZ2dyZWdhdGlvbiBnbyB0bzogaHR0cDovL3d3dy5zdC5yaW0ub3IuanAvfnl1bW8KLQotTk9URTogU3lzS29ubmVjdCBHbWJIIGRvZXMgbm90IG9mZmVyIGFueSBzdXBwb3J0IGZvciB0aGVzZSBvcGVuIHNvdXJjZSAKLSAgICAgIG1vZHVsZXMgYW5kIGRvZXMgbm90IHRha2UgdGhlIHJlc3BvbnNpYmlsaXR5IGZvciBhbnkga2luZCBvZiAKLSAgICAgIGZhaWx1cmVzIG9yIHByb2JsZW1zIGFyaXNpbmcgaW4gY29ubmVjdGlvbiB3aXRoIHRoZXNlIG1vZHVsZXMuCi0KLU5PVEU6IENvbmZpZ3VyaW5nIExpbmsgQWdncmVnYXRpb24gb24gYSBTeXNLb25uZWN0IGR1YWwgbGluayBhZGFwdGVyIG1heSAKLSAgICAgIGNhdXNlIHByb2JsZW1zIHdoZW4gdW5sb2FkaW5nIHRoZSBkcml2ZXIuCi0KLQotNyAgVHJvdWJsZXNob290aW5nCi09PT09PT09PT09PT09PT09PT0KLQotSWYgYW55IHByb2JsZW1zIG9jY3VyIGR1cmluZyB0aGUgaW5zdGFsbGF0aW9uIHByb2Nlc3MsIGNoZWNrIHRoZSAKLWZvbGxvd2luZyBsaXN0OgotCi0KLVByb2JsZW06ICBUaGUgU0stOTh4eCBhZGFwdGVyIGNhbm5vdCBiZSBmb3VuZCBieSB0aGUgZHJpdmVyLgotU29sdXRpb246IEluIC9wcm9jL3BjaSBzZWFyY2ggZm9yIHRoZSBmb2xsb3dpbmcgZW50cnk6Ci0gICAgICAgICAgICAgJ0V0aGVybmV0IGNvbnRyb2xsZXI6IFN5c0tvbm5lY3QgU0stOTh4eCAuLi4nCi0gICAgICAgICAgSWYgdGhpcyBlbnRyeSBleGlzdHMsIHRoZSBTSy05OHh4IG9yIFNLLTk4eHggVjIuMCBhZGFwdGVyIGhhcyAKLSAgICAgICAgICBiZWVuIGZvdW5kIGJ5IHRoZSBzeXN0ZW0gYW5kIHNob3VsZCBiZSBvcGVyYXRpb25hbC4KLSAgICAgICAgICBJZiB0aGlzIGVudHJ5IGRvZXMgbm90IGV4aXN0IG9yIGlmIHRoZSBmaWxlICcvcHJvYy9wY2knIGlzIG5vdCAKLSAgICAgICAgICBmb3VuZCwgdGhlcmUgbWF5IGJlIGEgaGFyZHdhcmUgcHJvYmxlbSBvciB0aGUgUENJIHN1cHBvcnQgbWF5IAotICAgICAgICAgIG5vdCBiZSBlbmFibGVkIGluIHlvdXIga2VybmVsLgotICAgICAgICAgIFRoZSBhZGFwdGVyIGNhbiBiZSBjaGVja2VkIHVzaW5nIHRoZSBkaWFnbm9zdGljcyBwcm9ncmFtIHdoaWNoIAotICAgICAgICAgIGlzIGF2YWlsYWJsZSBvbiB0aGUgU3lzS29ubmVjdCB3ZWIgc2l0ZToKLSAgICAgICAgICB3d3cuc3lza29ubmVjdC5jb20KLSAgICAgICAgICAKLSAgICAgICAgICBTb21lIENPTVBBUSBtYWNoaW5lcyBoYXZlIHByb2JsZW1zIGRlYWxpbmcgd2l0aCBQQ0kgdW5kZXIgTGludXguCi0gICAgICAgICAgVGhpcyBwcm9ibGVtIGlzIGRlc2NyaWJlZCBpbiB0aGUgJ1BDSSBob3d0bycgZG9jdW1lbnQKLSAgICAgICAgICAoaW5jbHVkZWQgaW4gc29tZSBkaXN0cmlidXRpb25zIG9yIGF2YWlsYWJsZSBmcm9tIHRoZQotICAgICAgICAgIHdlYiwgZS5nLiBhdCAnd3d3LmxpbnV4Lm9yZycpLiAKLQotCi1Qcm9ibGVtOiAgUHJvZ3JhbXMgc3VjaCBhcyAnaWZjb25maWcnIG9yICdyb3V0ZScgY2Fubm90IGJlIGZvdW5kIG9yIHRoZSAKLSAgICAgICAgICBlcnJvciBtZXNzYWdlICdPcGVyYXRpb24gbm90IHBlcm1pdHRlZCcgaXMgZGlzcGxheWVkLgotUmVhc29uOiAgIFlvdSBhcmUgbm90IGxvZ2dlZCBpbiBhcyB1c2VyICdyb290Jy4KLVNvbHV0aW9uOiBMb2dvdXQgYW5kIGxvZ2luIGFzICdyb290JyBvciBjaGFuZ2UgdG8gJ3Jvb3QnIHZpYSAnc3UnLgotCi0KLVByb2JsZW06ICBVcG9uIHVzZSBvZiB0aGUgY29tbWFuZCAncGluZyA8YWRkcmVzcz4nIHRoZSBtZXNzYWdlCi0gICAgICAgICAgInBpbmc6IHNlbmR0bzogTmV0d29yayBpcyB1bnJlYWNoYWJsZSIgaXMgZGlzcGxheWVkLgotUmVhc29uOiAgIFlvdXIgcm91dGUgaXMgbm90IHNldCBjb3JyZWN0bHkuCi1Tb2x1dGlvbjogSWYgeW91IGFyZSB1c2luZyBSZWRIYXQsIHlvdSBwcm9iYWJseSBmb3Jnb3QgdG8gc2V0IHVwIHRoZSAKLSAgICAgICAgICByb3V0ZSBpbiB0aGUgJ25ldHdvcmsgY29uZmlndXJhdGlvbicuCi0gICAgICAgICAgQ2hlY2sgdGhlIGV4aXN0aW5nIHJvdXRlcyB3aXRoIHRoZSAncm91dGUnIGNvbW1hbmQgYW5kIGNoZWNrIAotICAgICAgICAgIGlmIGFuIGVudHJ5IGZvciAnZXRoMCcgZXhpc3RzLCBhbmQgaWYgc28sIGlmIGl0IGlzIHNldCBjb3JyZWN0bHkuCi0KLQotUHJvYmxlbTogIFRoZSBkcml2ZXIgY2FuIGJlIHN0YXJ0ZWQsIHRoZSBhZGFwdGVyIGlzIGNvbm5lY3RlZCB0byB0aGUgCi0gICAgICAgICAgbmV0d29yaywgYnV0IHlvdSBjYW5ub3QgcmVjZWl2ZSBvciB0cmFuc21pdCBhbnkgcGFja2V0czsgCi0gICAgICAgICAgZS5nLiAncGluZycgZG9lcyBub3Qgd29yay4KLVJlYXNvbjogICBUaGVyZSBpcyBhbiBpbmNvcnJlY3Qgcm91dGUgaW4geW91ciByb3V0aW5nIHRhYmxlLgotU29sdXRpb246IENoZWNrIHRoZSByb3V0aW5nIHRhYmxlIHdpdGggdGhlIGNvbW1hbmQgJ3JvdXRlJyBhbmQgcmVhZCB0aGUgCi0gICAgICAgICAgbWFudWFsIGhlbHAgcGFnZXMgZGVhbGluZyB3aXRoIHJvdXRlcyAoZW50ZXIgJ21hbiByb3V0ZScpLgotCi1OT1RFOiBBbHRob3VnaCB0aGUgMi4yLngga2VybmVsIHZlcnNpb25zIGdlbmVyYXRlIHRoZSByb3V0aW5nIGVudHJ5IAotICAgICAgYXV0b21hdGljYWxseSwgcHJvYmxlbXMgb2YgdGhpcyBraW5kIG1heSBvY2N1ciBoZXJlIGFzIHdlbGwuIFdlJ3ZlIAotICAgICAgY29tZSBhY3Jvc3MgYSBzaXR1YXRpb24gaW4gd2hpY2ggdGhlIGRyaXZlciBzdGFydGVkIGNvcnJlY3RseSBhdCAKLSAgICAgIHN5c3RlbSBzdGFydCwgYnV0IGFmdGVyIHRoZSBkcml2ZXIgaGFzIGJlZW4gcmVtb3ZlZCBhbmQgcmVsb2FkZWQsCi0gICAgICB0aGUgcm91dGUgb2YgdGhlIGFkYXB0ZXIncyBuZXR3b3JrIHBvaW50ZWQgdG8gdGhlICdkdW1teTAnZGV2aWNlIAotICAgICAgYW5kIGhhZCB0byBiZSBjb3JyZWN0ZWQgbWFudWFsbHkuCi0KLQotUHJvYmxlbTogIFlvdXIgY29tcHV0ZXIgc2hvdWxkIGFjdCBhcyBhIHJvdXRlciBiZXR3ZWVuIG11bHRpcGxlIAotICAgICAgICAgIElQIHN1Ym5ldHdvcmtzICh1c2luZyBtdWx0aXBsZSBhZGFwdGVycyksIGJ1dCBjb21wdXRlcnMgaW4gCi0gICAgICAgICAgb3RoZXIgc3VibmV0d29ya3MgY2Fubm90IGJlIHJlYWNoZWQuCi1SZWFzb246ICAgRWl0aGVyIHRoZSByb3V0ZXIncyBrZXJuZWwgaXMgbm90IGNvbmZpZ3VyZWQgZm9yIElQIGZvcndhcmRpbmcgCi0gICAgICAgICAgb3IgdGhlIHJvdXRpbmcgdGFibGUgYW5kIGdhdGV3YXkgY29uZmlndXJhdGlvbiBvZiBhdCBsZWFzdCBvbmUgCi0gICAgICAgICAgY29tcHV0ZXIgaXMgbm90IHdvcmtpbmcuCi0KLVByb2JsZW06ICBVcG9uIGRyaXZlciBzdGFydCwgdGhlIGZvbGxvd2luZyBlcnJvciBtZXNzYWdlIGlzIGRpc3BsYXllZDoKLSAgICAgICAgICAiZXRoMDogLS0gRVJST1IgLS0KLSAgICAgICAgICBDbGFzczogaW50ZXJuYWwgU29mdHdhcmUgZXJyb3IKLSAgICAgICAgICBOcjogICAgMHhjYwotICAgICAgICAgIE1zZzogICBTa0dlSW5pdFBvcnQoKSBjYW5ub3QgaW5pdCBydW5uaW5nIHBvcnRzIgotUmVhc29uOiAgIFlvdSBhcmUgdXNpbmcgYSBkcml2ZXIgY29tcGlsZWQgZm9yIHNpbmdsZSBwcm9jZXNzb3IgbWFjaGluZXMgCi0gICAgICAgICAgb24gYSBtdWx0aXByb2Nlc3NvciBtYWNoaW5lIHdpdGggU01QIChTeW1tZXRyaWMgTXVsdGlQcm9jZXNzb3IpIAotICAgICAgICAgIGtlcm5lbC4KLVNvbHV0aW9uOiBDb25maWd1cmUgeW91ciBrZXJuZWwgYXBwcm9wcmlhdGVseSBhbmQgcmVjb21waWxlIHRoZSBrZXJuZWwgb3IKLSAgICAgICAgICB0aGUgbW9kdWxlcy4KLQotCi0KLUlmIHlvdXIgcHJvYmxlbSBpcyBub3QgbGlzdGVkIGhlcmUsIHBsZWFzZSBjb250YWN0IFN5c0tvbm5lY3QncyB0ZWNobmljYWwKLXN1cHBvcnQgZm9yIGhlbHAgKGxpbnV4QHN5c2tvbm5lY3QuZGUpLgotV2hlbiBjb250YWN0aW5nIG91ciB0ZWNobmljYWwgc3VwcG9ydCwgcGxlYXNlIGVuc3VyZSB0aGF0IHRoZSBmb2xsb3dpbmcgCi1pbmZvcm1hdGlvbiBpcyBhdmFpbGFibGU6Ci0tIFN5c3RlbSBNYW51ZmFjdHVyZXIgYW5kIEhXIEluZm9ybWF0aW9ucyAoQ1BVLCBNZW1vcnkuLi4gKQotLSBQQ0ktQm9hcmRzIGluIHlvdXIgc3lzdGVtCi0tIERpc3RyaWJ1dGlvbgotLSBLZXJuZWwgdmVyc2lvbgotLSBEcml2ZXIgdmVyc2lvbgotKioqCi0KLQotCi0qKipFbmQgb2YgUmVhZG1lIEZpbGUqKioKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbm1pX3dhdGNoZG9nLnR4dCBiL0RvY3VtZW50YXRpb24vbm1pX3dhdGNoZG9nLnR4dAppbmRleCBjMDI1YTQ1Li43NTdjNzI5IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL25taV93YXRjaGRvZy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9ubWlfd2F0Y2hkb2cudHh0CkBAIC0yMyw4ICsyMyw3IEBACiBtYXkgaW1wbGljaXRseSBkaXNhYmxlIHRoZSBOTUkgd2F0Y2hkb2cuXQogCiBGb3IgeDg2LTY0LCB0aGUgbmVlZGVkIEFQSUMgaXMgYWx3YXlzIGNvbXBpbGVkIGluLCBhbmQgdGhlIE5NSSB3YXRjaGRvZyBpcwotYWx3YXlzIGVuYWJsZWQgd2l0aCBJL08tQVBJQyBtb2RlIChubWlfd2F0Y2hkb2c9MSkuIEN1cnJlbnRseSwgbG9jYWwgQVBJQwotbW9kZSAobm1pX3dhdGNoZG9nPTIpIGRvZXMgbm90IHdvcmsgb24geDg2LTY0LgorYWx3YXlzIGVuYWJsZWQgd2l0aCBJL08tQVBJQyBtb2RlIChubWlfd2F0Y2hkb2c9MSkuCiAKIFVzaW5nIGxvY2FsIEFQSUMgKG5taV93YXRjaGRvZz0yKSBuZWVkcyB0aGUgZmlyc3QgcGVyZm9ybWFuY2UgcmVnaXN0ZXIsIHNvCiB5b3UgY2FuJ3QgdXNlIGl0IGZvciBvdGhlciBwdXJwb3NlcyAoc3VjaCBhcyBoaWdoIHByZWNpc2lvbiBwZXJmb3JtYW5jZQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9wb3dlci8wMC1JTkRFWCBiL0RvY3VtZW50YXRpb24vcG93ZXIvMDAtSU5ERVgKaW5kZXggOGRiNGU0MS4uYTU1ZDdmMSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9wb3dlci8wMC1JTkRFWAorKysgYi9Eb2N1bWVudGF0aW9uL3Bvd2VyLzAwLUlOREVYCkBAIC0xNCw2ICsxNCwxMiBAQAogCS0gUmVnaXN0ZXJpbmcgc3VzcGVuZCBub3RpZmllcnMgaW4gZGV2aWNlIGRyaXZlcnMKIHBjaS50eHQKIAktIEhvdyB0aGUgUENJIFN1YnN5c3RlbSBEb2VzIFBvd2VyIE1hbmFnZW1lbnQKK3BtLnR4dAorCS0gaW5mbyBvbiBMaW51eCBwb3dlciBtYW5hZ2VtZW50IHN1cHBvcnQuCitwbV9xb3NfaW50ZXJmYWNlLnR4dAorCS0gaW5mbyBvbiBMaW51eCBQTSBRdWFsaXR5IG9mIFNlcnZpY2UgaW50ZXJmYWNlCitwb3dlcl9zdXBwbHlfY2xhc3MudHh0CisJLSBUZWxscyB1c2Vyc3BhY2UgYWJvdXQgYmF0dGVyeSwgVVBTLCBBQyBvciBEQyBwb3dlciBzdXBwbHkgcHJvcGVydGllcwogczJyYW0udHh0CiAJLSBIb3cgdG8gZ2V0IHN1c3BlbmQgdG8gcmFtIHdvcmtpbmcgKGFuZCBkZWJ1ZyBpdCB3aGVuIGl0IGlzbid0KQogc3RhdGVzLnR4dApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9wbS50eHQgYi9Eb2N1bWVudGF0aW9uL3Bvd2VyL3BtLnR4dApzaW1pbGFyaXR5IGluZGV4IDk5JQpyZW5hbWUgZnJvbSBEb2N1bWVudGF0aW9uL3BtLnR4dApyZW5hbWUgdG8gRG9jdW1lbnRhdGlvbi9wb3dlci9wbS50eHQKaW5kZXggZGE4NTg5YS4uYmU4NDE1MCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9wbS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9wb3dlci9wbS50eHQKQEAgLTEwOCw3ICsxMDgsNyBAQAogICogICAgICAgICAgRUlOVkFMIGlmIHRoZSByZXF1ZXN0IGlzIG5vdCBzdXBwb3J0ZWQKICAqICAgICAgICAgIEVCVVNZIGlmIHRoZSBkZXZpY2UgaXMgbm93IGJ1c3kgYW5kIGNhbm5vdCBoYW5kbGUgdGhlIHJlcXVlc3QKICAqICAgICAgICAgIEVOT01FTSBpZiB0aGUgZGV2aWNlIHdhcyB1bmFibGUgdG8gaGFuZGxlIHRoZSByZXF1ZXN0IGR1ZSB0byBtZW1vcnkKLSAqICAgICAgICAgIAorICoKICAqIERldGFpbHM6IFRoZSBkZXZpY2UgcmVxdWVzdCBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBiZWZvcmUgdGhlCiAgKiAgICAgICAgICBkZXZpY2Uvc3lzdGVtIGVudGVycyBhIHN1c3BlbmQgc3RhdGUgKEFDUEkgRDEtRDMpIG9yCiAgKiAgICAgICAgICBvciBhZnRlciB0aGUgZGV2aWNlL3N5c3RlbSByZXN1bWVzIGZyb20gc3VzcGVuZCAoQUNQSSBEMCkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3BtX3Fvc19pbnRlcmZhY2UudHh0IGIvRG9jdW1lbnRhdGlvbi9wb3dlci9wbV9xb3NfaW50ZXJmYWNlLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gRG9jdW1lbnRhdGlvbi9wbV9xb3NfaW50ZXJmYWNlLnR4dApyZW5hbWUgdG8gRG9jdW1lbnRhdGlvbi9wb3dlci9wbV9xb3NfaW50ZXJmYWNlLnR4dApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9wb3dlcl9zdXBwbHlfY2xhc3MudHh0IGIvRG9jdW1lbnRhdGlvbi9wb3dlci9wb3dlcl9zdXBwbHlfY2xhc3MudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBEb2N1bWVudGF0aW9uL3Bvd2VyX3N1cHBseV9jbGFzcy50eHQKcmVuYW1lIHRvIERvY3VtZW50YXRpb24vcG93ZXIvcG93ZXJfc3VwcGx5X2NsYXNzLnR4dApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zY2hlZHVsZXIvMDAtSU5ERVggYi9Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci8wMC1JTkRFWAppbmRleCBiNWY1Y2EwLi5mYzIzNGQwIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci8wMC1JTkRFWAorKysgYi9Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci8wMC1JTkRFWApAQCAtMTIsNSArMTIsNyBAQAogCS0gaW5mb3JtYXRpb24gb24gc2NoZWR1bGluZyBkb21haW5zLgogc2NoZWQtbmljZS1kZXNpZ24udHh0CiAJLSBIb3cgYW5kIHdoeSB0aGUgc2NoZWR1bGVyJ3MgbmljZSBsZXZlbHMgYXJlIGltcGxlbWVudGVkLgorc2NoZWQtcnQtZ3JvdXAudHh0CisJLSByZWFsLXRpbWUgZ3JvdXAgc2NoZWR1bGluZy4KIHNjaGVkLXN0YXRzLnR4dAogCS0gaW5mb3JtYXRpb24gb24gc2NoZWRzdGF0cyAoTGludXggU2NoZWR1bGVyIFN0YXRpc3RpY3MpLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zY2hlZC1ydC1ncm91cC50eHQgYi9Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1ydC1ncm91cC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIERvY3VtZW50YXRpb24vc2NoZWQtcnQtZ3JvdXAudHh0CnJlbmFtZSB0byBEb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1ydC1ncm91cC50eHQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc3BpL3NwaS1zdW1tYXJ5IGIvRG9jdW1lbnRhdGlvbi9zcGkvc3BpLXN1bW1hcnkKaW5kZXggODg2MWU0Ny4uNmQ1ZjE4MSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9zcGkvc3BpLXN1bW1hcnkKKysrIGIvRG9jdW1lbnRhdGlvbi9zcGkvc3BpLXN1bW1hcnkKQEAgLTExNiw2ICsxMTYsMTMgQEAKIHN0YXJ0aW5nIGxvdyAoQ1BPTD0wKSBhbmQgZGF0YSBzdGFiaWxpemVkIGZvciBzYW1wbGluZyBkdXJpbmcgdGhlCiB0cmFpbGluZyBjbG9jayBlZGdlIChDUEhBPTEpLCB0aGF0J3MgU1BJIG1vZGUgMS4KIAorTm90ZSB0aGF0IHRoZSBjbG9jayBtb2RlIGlzIHJlbGV2YW50IGFzIHNvb24gYXMgdGhlIGNoaXBzZWxlY3QgZ29lcworYWN0aXZlLiAgU28gdGhlIG1hc3RlciBtdXN0IHNldCB0aGUgY2xvY2sgdG8gaW5hY3RpdmUgYmVmb3JlIHNlbGVjdGluZworYSBzbGF2ZSwgYW5kIHRoZSBzbGF2ZSBjYW4gdGVsbCB0aGUgY2hvc2VuIHBvbGFyaXR5IGJ5IHNhbXBsaW5nIHRoZQorY2xvY2sgbGV2ZWwgd2hlbiBpdHMgc2VsZWN0IGxpbmUgZ29lcyBhY3RpdmUuICBUaGF0J3Mgd2h5IG1hbnkgZGV2aWNlcworc3VwcG9ydCBmb3IgZXhhbXBsZSBib3RoIG1vZGVzIDAgYW5kIDM6ICB0aGV5IGRvbid0IGNhcmUgYWJvdXQgcG9sYXJpdHksCithbmQgYWx3YXkgY2xvY2sgZGF0YSBpbi9vdXQgb24gcmlzaW5nIGNsb2NrIGVkZ2VzLgorCiAKIEhvdyBkbyB0aGVzZSBkcml2ZXIgcHJvZ3JhbW1pbmcgaW50ZXJmYWNlcyB3b3JrPwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0zNzksOCArMzg2LDE0IEBACiAgICAgICArIHdoZW4gYmlkaXJlY3Rpb25hbCByZWFkcyBhbmQgd3JpdGVzIHN0YXJ0IC4uLiBieSBob3cgaXRzCiAgICAgICAgIHNlcXVlbmNlIG9mIHNwaV90cmFuc2ZlciByZXF1ZXN0cyBpcyBhcnJhbmdlZDsKIAorICAgICAgKyB3aGljaCBJL08gYnVmZmVycyBhcmUgdXNlZCAuLi4gZWFjaCBzcGlfdHJhbnNmZXIgd3JhcHMgYQorICAgICAgICBidWZmZXIgZm9yIGVhY2ggdHJhbnNmZXIgZGlyZWN0aW9uLCBzdXBwb3J0aW5nIGZ1bGwgZHVwbGV4CisgICAgICAgICh0d28gcG9pbnRlcnMsIG1heWJlIHRoZSBzYW1lIG9uZSBpbiBib3RoIGNhc2VzKSBhbmQgaGFsZgorICAgICAgICBkdXBsZXggKG9uZSBwb2ludGVyIGlzIE5VTEwpIHRyYW5zZmVyczsKKwogICAgICAgKyBvcHRpb25hbGx5IGRlZmluaW5nIHNob3J0IGRlbGF5cyBhZnRlciB0cmFuc2ZlcnMgLi4uIHVzaW5nCi0gICAgICAgIHRoZSBzcGlfdHJhbnNmZXIuZGVsYXlfdXNlY3Mgc2V0dGluZzsKKyAgICAgICAgdGhlIHNwaV90cmFuc2Zlci5kZWxheV91c2VjcyBzZXR0aW5nICh0aGlzIGRlbGF5IGNhbiBiZSB0aGUKKyAgICAgICAgb25seSBwcm90b2NvbCBlZmZlY3QsIGlmIHRoZSBidWZmZXIgbGVuZ3RoIGlzIHplcm8pOwogCiAgICAgICArIHdoZXRoZXIgdGhlIGNoaXBzZWxlY3QgYmVjb21lcyBpbmFjdGl2ZSBhZnRlciBhIHRyYW5zZmVyIGFuZAogICAgICAgICBhbnkgZGVsYXkgLi4uIGJ5IHVzaW5nIHRoZSBzcGlfdHJhbnNmZXIuY3NfY2hhbmdlIGZsYWc7CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3NwaW5sb2Nrcy50eHQgYi9Eb2N1bWVudGF0aW9uL3NwaW5sb2Nrcy50eHQKaW5kZXggNDcxZTc1My4uNjE5Njk5ZCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9zcGlubG9ja3MudHh0CisrKyBiL0RvY3VtZW50YXRpb24vc3BpbmxvY2tzLnR4dApAQCAtNSw2ICs1LDI4IEBACiBfX1NQSU5fTE9DS19VTkxPQ0tFRCgpL19fUldfTE9DS19VTkxPQ0tFRCgpIGFzIGFwcHJvcHJpYXRlIGZvciBzdGF0aWMKIGluaXRpYWxpemF0aW9uLgogCitNb3N0IG9mIHRoZSB0aW1lLCB5b3UgY2FuIHNpbXBseSB0dXJuOgorCisJc3RhdGljIHNwaW5sb2NrX3QgeHh4X2xvY2sgPSBTUElOX0xPQ0tfVU5MT0NLRUQ7CisKK2ludG86CisKKwlzdGF0aWMgREVGSU5FX1NQSU5MT0NLKHh4eF9sb2NrKTsKKworU3RhdGljIHN0cnVjdHVyZSBtZW1iZXIgdmFyaWFibGVzIGdvIGZyb206CisKKwlzdHJ1Y3QgZm9vIGJhciB7CisJCS5sb2NrCT0JU1BJTl9MT0NLX1VOTE9DS0VEOworCX07CisKK3RvOgorCisJc3RydWN0IGZvbyBiYXIgeworCQkubG9jawk9CV9fU1BJTl9MT0NLX1VOTE9DS0VEKGJhci5sb2NrKTsKKwl9OworCitEZWNsYXJhdGlvbiBvZiBzdGF0aWMgcndfbG9ja3MgdW5kZXJnbyBhIHNpbWlsYXIgdHJhbnNmb3JtYXRpb24uCisKIER5bmFtaWMgaW5pdGlhbGl6YXRpb24sIHdoZW4gbmVjZXNzYXJ5LCBtYXkgYmUgcGVyZm9ybWVkIGFzCiBkZW1vbnN0cmF0ZWQgYmVsb3cuCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdGhlcm1hbC9zeXNmcy1hcGkudHh0IGIvRG9jdW1lbnRhdGlvbi90aGVybWFsL3N5c2ZzLWFwaS50eHQKaW5kZXggYmE5YzJkYS4uZDlmMjhiZSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi90aGVybWFsL3N5c2ZzLWFwaS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi90aGVybWFsL3N5c2ZzLWFwaS50eHQKQEAgLTE0MywxMCArMTQzLDEwIEBACiAJCQkJVGhpcyBpcyBnaXZlbiBieSB0aGVybWFsIHpvbmUgZHJpdmVyIGFzIHBhcnQgb2YgcmVnaXN0cmF0aW9uLgogCQkJCUVnOiAiQUNQSSB0aGVybWFsIHpvbmUiIGluZGljYXRlcyBpdCdzIGEgQUNQSSB0aGVybWFsIGRldmljZQogCQkJCVJPCi0JCQkJT3B0aW9uYWwKKwkJCQlSZXF1aXJlZAogCiB0ZW1wCQkJCUN1cnJlbnQgdGVtcGVyYXR1cmUgYXMgcmVwb3J0ZWQgYnkgdGhlcm1hbCB6b25lIChzZW5zb3IpCi0JCQkJVW5pdDogZGVncmVlIENlbHNpdXMKKwkJCQlVbml0OiBtaWxsaWRlZ3JlZSBDZWxzaXVzCiAJCQkJUk8KIAkJCQlSZXF1aXJlZAogCkBAIC0xNjMsNyArMTYzLDcgQEAKIAkJCQkJICBjaGFyZ2Ugb2YgdGhlIHRoZXJtYWwgbWFuYWdlbWVudC4KIAogdHJpcF9wb2ludF9bMC0qXV90ZW1wCQlUaGUgdGVtcGVyYXR1cmUgYWJvdmUgd2hpY2ggdHJpcCBwb2ludCB3aWxsIGJlIGZpcmVkCi0JCQkJVW5pdDogZGVncmVlIENlbHNpdXMKKwkJCQlVbml0OiBtaWxsaWRlZ3JlZSBDZWxzaXVzCiAJCQkJUk8KIAkJCQlPcHRpb25hbAogCkBAIC0xOTMsNyArMTkzLDcgQEAKIAkJCQllZy4gRm9yIG1lbW9yeSBjb250cm9sbGVyIGRldmljZSBvbiBpbnRlbF9tZW5sb3cgcGxhdGZvcm06CiAJCQkJdGhpcyBzaG91bGQgYmUgIk1lbW9yeSBjb250cm9sbGVyIgogCQkJCVJPCi0JCQkJT3B0aW9uYWwKKwkJCQlSZXF1aXJlZAogCiBtYXhfc3RhdGUJCQlUaGUgbWF4aW11bSBwZXJtaXNzaWJsZSBjb29saW5nIHN0YXRlIG9mIHRoaXMgY29vbGluZyBkZXZpY2UuCiAJCQkJUk8KQEAgLTIxOSwxNiArMjE5LDE2IEBACiAKIHx0aGVybWFsX3pvbmUxOgogCXwtLS0tLXR5cGU6CQkJQUNQSSB0aGVybWFsIHpvbmUKLQl8LS0tLS10ZW1wOgkJCTM3CisJfC0tLS0tdGVtcDoJCQkzNzAwMAogCXwtLS0tLW1vZGU6CQkJa2VybmVsCi0JfC0tLS0tdHJpcF9wb2ludF8wX3RlbXA6CTEwMAorCXwtLS0tLXRyaXBfcG9pbnRfMF90ZW1wOgkxMDAwMDAKIAl8LS0tLS10cmlwX3BvaW50XzBfdHlwZToJY3JpdGljYWwKLQl8LS0tLS10cmlwX3BvaW50XzFfdGVtcDoJODAKKwl8LS0tLS10cmlwX3BvaW50XzFfdGVtcDoJODAwMDAKIAl8LS0tLS10cmlwX3BvaW50XzFfdHlwZToJcGFzc2l2ZQotCXwtLS0tLXRyaXBfcG9pbnRfMl90ZW1wOgk3MAotCXwtLS0tLXRyaXBfcG9pbnRfMl90eXBlOglhY3RpdmVbMF0KLQl8LS0tLS10cmlwX3BvaW50XzNfdGVtcDoJNjAKLQl8LS0tLS10cmlwX3BvaW50XzNfdHlwZToJYWN0aXZlWzFdCisJfC0tLS0tdHJpcF9wb2ludF8yX3RlbXA6CTcwMDAwCisJfC0tLS0tdHJpcF9wb2ludF8yX3R5cGU6CWFjdGl2ZTAKKwl8LS0tLS10cmlwX3BvaW50XzNfdGVtcDoJNjAwMDAKKwl8LS0tLS10cmlwX3BvaW50XzNfdHlwZToJYWN0aXZlMQogCXwtLS0tLWNkZXYwOgkJCS0tLT4vc3lzL2NsYXNzL3RoZXJtYWwvY29vbGluZ19kZXZpY2UwCiAJfC0tLS0tY2RldjBfdHJpcF9wb2ludDoJCTEJLyogY2RldjAgY2FuIGJlIHVzZWQgZm9yIHBhc3NpdmUgKi8KIAl8LS0tLS1jZGV2MToJCQktLS0+L3N5cy9jbGFzcy90aGVybWFsL2Nvb2xpbmdfZGV2aWNlMwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi91bmFsaWduZWQtbWVtb3J5LWFjY2Vzcy50eHQgYi9Eb2N1bWVudGF0aW9uL3VuYWxpZ25lZC1tZW1vcnktYWNjZXNzLnR4dAppbmRleCA2MjIzZWFjLi5iMDQ3MmFjIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3VuYWxpZ25lZC1tZW1vcnktYWNjZXNzLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3VuYWxpZ25lZC1tZW1vcnktYWNjZXNzLnR4dApAQCAtNTcsNyArNTcsNyBAQAogICAgdW5hbGlnbmVkIGFjY2VzcyB0byBiZSBjb3JyZWN0ZWQuCiAgLSBTb21lIGFyY2hpdGVjdHVyZXMgYXJlIG5vdCBjYXBhYmxlIG9mIHVuYWxpZ25lZCBtZW1vcnkgYWNjZXNzLCBidXQgd2lsbAogICAgc2lsZW50bHkgcGVyZm9ybSBhIGRpZmZlcmVudCBtZW1vcnkgYWNjZXNzIHRvIHRoZSBvbmUgdGhhdCB3YXMgcmVxdWVzdGVkLAotICAgcmVzdWx0aW5nIGEgYSBzdWJ0bGUgY29kZSBidWcgdGhhdCBpcyBoYXJkIHRvIGRldGVjdCEKKyAgIHJlc3VsdGluZyBpbiBhIHN1YnRsZSBjb2RlIGJ1ZyB0aGF0IGlzIGhhcmQgdG8gZGV0ZWN0IQogCiBJdCBzaG91bGQgYmUgb2J2aW91cyBmcm9tIHRoZSBhYm92ZSB0aGF0IGlmIHlvdXIgY29kZSBjYXVzZXMgdW5hbGlnbmVkCiBtZW1vcnkgYWNjZXNzZXMgdG8gaGFwcGVuLCB5b3VyIGNvZGUgd2lsbCBub3Qgd29yayBjb3JyZWN0bHkgb24gY2VydGFpbgpAQCAtMjA5LDcgKzIwOSw3IEBACiAKIAl1MzIgdmFsdWUgPSBnZXRfdW5hbGlnbmVkKCh1MzIgKikgZGF0YSk7CiAKLVRoZXNlIG1hY3JvcyB3b3JrIHdvcmsgZm9yIG1lbW9yeSBhY2Nlc3NlcyBvZiBhbnkgbGVuZ3RoIChub3QganVzdCAzMiBiaXRzIGFzCitUaGVzZSBtYWNyb3Mgd29yayBmb3IgbWVtb3J5IGFjY2Vzc2VzIG9mIGFueSBsZW5ndGggKG5vdCBqdXN0IDMyIGJpdHMgYXMKIGluIHRoZSBleGFtcGxlcyBhYm92ZSkuIEJlIGF3YXJlIHRoYXQgd2hlbiBjb21wYXJlZCB0byBzdGFuZGFyZCBhY2Nlc3Mgb2YKIGFsaWduZWQgbWVtb3J5LCB1c2luZyB0aGVzZSBtYWNyb3MgdG8gYWNjZXNzIHVuYWxpZ25lZCBtZW1vcnkgY2FuIGJlIGNvc3RseSBpbgogdGVybXMgb2YgcGVyZm9ybWFuY2UuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZtL2h1Z2V0bGJwYWdlLnR4dCBiL0RvY3VtZW50YXRpb24vdm0vaHVnZXRsYnBhZ2UudHh0CmluZGV4IGY5NjJkMDEuLjMxMDJiODEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdm0vaHVnZXRsYnBhZ2UudHh0CisrKyBiL0RvY3VtZW50YXRpb24vdm0vaHVnZXRsYnBhZ2UudHh0CkBAIC04OCwxMCArODgsOSBAQAogdGhlc2Ugc3VycGx1cyBodWdlcGFnZXMgZ28gb3V0IG9mIHVzZSwgdGhleSBhcmUgZnJlZWQgYmFjayB0byB0aGUgYnVkZHkKIGFsbG9jYXRvci4KIAotQ2F2ZWF0OiBTaHJpbmtpbmcgdGhlIHBvb2wgdmlhIG5yX2h1Z2VwYWdlcyB3aGlsZSBhIHN1cnBsdXMgaXMgaW4gZWZmZWN0Ci13aWxsIGFsbG93IHRoZSBudW1iZXIgb2Ygc3VycGx1cyBodWdlIHBhZ2VzIHRvIGV4Y2VlZCB0aGUgb3ZlcmNvbW1pdAotdmFsdWUsIGFzIHRoZSBwb29sIGh1Z2VwYWdlcyAod2hpY2ggbXVzdCBoYXZlIGJlZW4gaW4gdXNlIGZvciBhIHN1cnBsdXMKLWh1Z2VwYWdlcyB0byBiZSBhbGxvY2F0ZWQpIHdpbGwgYmVjb21lIHN1cnBsdXMgaHVnZXBhZ2VzLiAgQXMgbG9uZyBhcworQ2F2ZWF0OiBTaHJpbmtpbmcgdGhlIHBvb2wgdmlhIG5yX2h1Z2VwYWdlcyBzdWNoIHRoYXQgaXQgYmVjb21lcyBsZXNzCit0aGFuIHRoZSBudW1iZXIgb2YgaHVnZXBhZ2VzIGluIHVzZSB3aWxsIGNvbnZlcnQgdGhlIGJhbGFuY2UgdG8gc3VycGx1cworaHVnZSBwYWdlcyBldmVuIGlmIGl0IHdvdWxkIGV4Y2VlZCB0aGUgb3ZlcmNvbW1pdCB2YWx1ZS4gIEFzIGxvbmcgYXMKIHRoaXMgY29uZGl0aW9uIGhvbGRzLCBob3dldmVyLCBubyBtb3JlIHN1cnBsdXMgaHVnZSBwYWdlcyB3aWxsIGJlCiBhbGxvd2VkIG9uIHRoZSBzeXN0ZW0gdW50aWwgb25lIG9mIHRoZSB0d28gc3lzY3RscyBhcmUgaW5jcmVhc2VkCiBzdWZmaWNpZW50bHksIG9yIHRoZSBzdXJwbHVzIGh1Z2UgcGFnZXMgZ28gb3V0IG9mIHVzZSBhbmQgYXJlIGZyZWVkLgpkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSUwppbmRleCAyNWY0NTBmLi5lNDY3NzU4IDEwMDY0NAotLS0gYS9NQUlOVEFJTkVSUworKysgYi9NQUlOVEFJTkVSUwpAQCAtMTYzLDYgKzE2MywxMiBAQAogTDoJbGludXgtbTY4a0BsaXN0cy5saW51eC1tNjhrLm9yZwogUzoJTWFpbnRhaW5lZAogCitBRlMgRklMRVNZU1RFTSAmIEFGX1JYUlBDIFNPQ0tFVCBET01BSU4KK1A6CURhdmlkIEhvd2VsbHMKK006CWRob3dlbGxzQHJlZGhhdC5jb20KK0w6CWxpbnV4LWFmc0BsaXN0cy5pbmZyYWRlYWQub3JnCitTOglTdXBwb3J0ZWQKKwogQUlPCiBQOglCZW5qYW1pbiBMYUhhaXNlCiBNOgliY3JsQGt2YWNrLm9yZwpAQCAtMjY2LDYgKzI3MiwxNSBAQAogVzogICAgICBodHRwOi8vd3d3Lmxlc3N3YXR0cy5vcmcvcHJvamVjdHMvYWNwaS8KIFM6ICAgICAgTWFpbnRhaW5lZAogCitBRDE4ODkgQUxTQSBTT1VORCBEUklWRVIKK1A6ICAgICBLeWxlIE1jTWFydGluCitNOiAgICAga3lsZUBwYXJpc2MtbGludXgub3JnCitQOiAgICAgVGhpYmF1dCBWYXJlbmUKK006ICAgICBULUJvbmVAcGFyaXNjLWxpbnV4Lm9yZworVzogICAgIGh0dHA6Ly93aWtpLnBhcmlzYy1saW51eC5vcmcvQUQxODg5CitMOiAgICAgbGludXgtcGFyaXNjQHZnZXIua2VybmVsLm9yZworUzogICAgIE1haW50YWluZWQKKwogQURNMTAyNSBIQVJEV0FSRSBNT05JVE9SIERSSVZFUgogUDoJSmVhbiBEZWx2YXJlCiBNOglraGFsaUBsaW51eC1mci5vcmcKQEAgLTQ0Myw3ICs0NTgsNyBAQAogCiBBUk0vQVRNRUwgQVQ5MVJNOTIwMCBBUk0gQVJDSElURUNUVVJFCiBQOiAgICAgIEFuZHJldyBWaWN0b3IKLU06ICAgICAgYW5kcmV3QHNhbnBlb3BsZS5jb20KK006ICAgICAgbGludXhAbWF4aW0ub3JnLnphCiBMOiAgICAgIGxpbnV4LWFybS1rZXJuZWxAbGlzdHMuYXJtLmxpbnV4Lm9yZy51ayAoc3Vic2NyaWJlcnMtb25seSkKIFc6ICAgICAgaHR0cDovL21heGltLm9yZy56YS9hdDkxXzI2Lmh0bWwKIFM6ICAgICAgTWFpbnRhaW5lZApAQCAtODcxLDcgKzg4Niw3IEBACiBNOgltYXJjZWxAaG9sdG1hbm4ub3JnCiBQOglNYXhpbSBLcmFzbnlhbnNreQogTToJbWF4a0BxdWFsY29tbS5jb20KLUw6CWJsdWV6LWRldmVsQGxpc3RzLnNmLm5ldAorTDoJbGludXgtYmx1ZXRvb3RoQHZnZXIua2VybmVsLm9yZwogVzoJaHR0cDovL2JsdWV6LnNmLm5ldAogVzoJaHR0cDovL3d3dy5ibHVlei5vcmcKIFc6CWh0dHA6Ly93d3cuaG9sdG1hbm4ub3JnL2xpbnV4L2JsdWV0b290aC8KQEAgLTIwNTIsNDMgKzIwNjcsMTkgQEAKIEw6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKIFM6CU1haW50YWluZWQKIAotSU5URUwgUFJPLzEwMCBFVEhFUk5FVCBTVVBQT1JUCitJTlRFTCBFVEhFUk5FVCBEUklWRVJTIChlMTAwL2UxMDAwL2UxMDAwZS9pZ2IvaXhnYi9peGdiZSkKIFA6CUF1a2UgS29rCiBNOglhdWtlLWphbi5oLmtva0BpbnRlbC5jb20KIFA6CUplc3NlIEJyYW5kZWJ1cmcKIE06CWplc3NlLmJyYW5kZWJ1cmdAaW50ZWwuY29tCiBQOglKZWZmIEtpcnNoZXIKIE06CWplZmZyZXkudC5raXJzaGVyQGludGVsLmNvbQorUDoJQnJ1Y2UgQWxsYW4KK006CWJydWNlLncuYWxsYW5AaW50ZWwuY29tCiBQOglKb2huIFJvbmNpYWsKIE06CWpvaG4ucm9uY2lha0BpbnRlbC5jb20KIEw6CWUxMDAwLWRldmVsQGxpc3RzLnNvdXJjZWZvcmdlLm5ldAotVzoJaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9lMTAwMC8KLVM6CVN1cHBvcnRlZAotCi1JTlRFTCBQUk8vMTAwMCBHSUdBQklUIEVUSEVSTkVUIFNVUFBPUlQKLVA6CUF1a2UgS29rCi1NOglhdWtlLWphbi5oLmtva0BpbnRlbC5jb20KLVA6CUplc3NlIEJyYW5kZWJ1cmcKLU06CWplc3NlLmJyYW5kZWJ1cmdAaW50ZWwuY29tCi1QOglKZWZmIEtpcnNoZXIKLU06CWplZmZyZXkudC5raXJzaGVyQGludGVsLmNvbQotUDoJSm9obiBSb25jaWFrCi1NOglqb2huLnJvbmNpYWtAaW50ZWwuY29tCi1MOgllMTAwMC1kZXZlbEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQKLVc6CWh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvZTEwMDAvCi1TOglTdXBwb3J0ZWQKLQotSU5URUwgUFJPLzEwR2JFIFNVUFBPUlQKLVA6CUF5eWFwcGFuIFZlZXJhaXlhbgotTToJYXl5YXBwYW4udmVlcmFpeWFuQGludGVsLmNvbQotUDoJQXVrZSBLb2sKLU06CWF1a2UtamFuLmgua29rQGludGVsLmNvbQotUDoJSmVzc2UgQnJhbmRlYnVyZwotTToJamVzc2UuYnJhbmRlYnVyZ0BpbnRlbC5jb20KLVA6CUpvaG4gUm9uY2lhawotTToJam9obi5yb25jaWFrQGludGVsLmNvbQotTDoJZTEwMDAtZGV2ZWxAbGlzdHMuc291cmNlZm9yZ2UubmV0Ci1XOglodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2UxMDAwLworVzoJaHR0cDovL2UxMDAwLnNvdXJjZWZvcmdlLm5ldC8KIFM6CVN1cHBvcnRlZAogCiBJTlRFTCBQUk8vV0lSRUxFU1MgMjEwMCBORVRXT1JLIENPTk5FQ1RJT04gU1VQUE9SVApAQCAtMjEyNSw3ICsyMTE2LDcgQEAKIEw6CWxpbnV4LXdpcmVsZXNzQHZnZXIua2VybmVsLm9yZwogTDoJaXB3Mzk0NS1kZXZlbEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQKIFc6CWh0dHA6Ly9pbnRlbGxpbnV4d2lyZWxlc3Mub3JnCi1UOglnaXQgZ2l0Oi8vaW50ZWxsaW51eHdpcmVsZXNzLm9yZy9yZXBvcy9pd2x3aWZpCitUOglnaXQga2VybmVsLm9yZzovcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2l3bHdpZmkvaXdsd2lmaS0yLjYuZ2l0CiBTOglTdXBwb3J0ZWQKIAogSU9DMyBFVEhFUk5FVCBEUklWRVIKQEAgLTIyMDYsNyArMjE5Nyw3IEBACiBJU0ROIFNVQlNZU1RFTQogUDoJS2Fyc3RlbiBLZWlsCiBNOglra2VpbEBzdXNlLmRlCi1MOglpc2RuNGxpbnV4QGxpc3RzZXJ2LmlzZG40bGludXguZGUKK0w6CWlzZG40bGludXhAbGlzdHNlcnYuaXNkbjRsaW51eC5kZSAoc3Vic2NyaWJlcnMtb25seSkKIFc6CWh0dHA6Ly93d3cuaXNkbjRsaW51eC5kZQogVDoJZ2l0IGtlcm5lbC5vcmc6L3B1Yi9zY20vbGludXgva2VybmVsL2trZWlsL2lzZG4tMi42LmdpdAogUzoJTWFpbnRhaW5lZApAQCAtMjIxNCw3ICsyMjA1LDcgQEAKIElTRE4gU1VCU1lTVEVNIChFaWNvbiBhY3RpdmUgY2FyZCBkcml2ZXIpCiBQOglBcm1pbiBTY2hpbmRsZXIKIE06CW1hY0BtZWx3YXJlLmRlCi1MOglpc2RuNGxpbnV4QGxpc3RzZXJ2LmlzZG40bGludXguZGUKK0w6CWlzZG40bGludXhAbGlzdHNlcnYuaXNkbjRsaW51eC5kZSAoc3Vic2NyaWJlcnMtb25seSkKIFc6CWh0dHA6Ly93d3cubWVsd2FyZS5kZQogUzoJTWFpbnRhaW5lZAogCkBAIC0yMzI5LDE0ICsyMzIwLDE0IEBACiBTOglNYWludGFpbmVkCiAKIEtQUk9CRVMKLVA6CVByYXNhbm5hIFMgUGFuY2hhbXVraGkKLU06CXByYXNhbm5hQGluLmlibS5jb20KIFA6CUFuYW50aCBOIE1hdmluYWtheWFuYWhhbGxpCiBNOglhbmFudGhAaW4uaWJtLmNvbQogUDoJQW5pbCBTIEtlc2hhdmFtdXJ0aHkKIE06CWFuaWwucy5rZXNoYXZhbXVydGh5QGludGVsLmNvbQogUDoJRGF2aWQgUy4gTWlsbGVyCiBNOglkYXZlbUBkYXZlbWxvZnQubmV0CitQOglNYXNhbWkgSGlyYW1hdHN1CitNOgltaGlyYW1hdEByZWRoYXQuY29tCiBMOglsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnCiBTOglNYWludGFpbmVkCiAKQEAgLTI5NTAsOSArMjk0MSw5IEBACiAKIE9SQUNMRSBDTFVTVEVSIEZJTEVTWVNURU0gMiAoT0NGUzIpCiBQOglNYXJrIEZhc2hlaAotTToJbWFyay5mYXNoZWhAb3JhY2xlLmNvbQotUDoJS3VydCBIYWNrZWwKLU06CWt1cnQuaGFja2VsQG9yYWNsZS5jb20KK006CW1mYXNoZWhAc3VzZS5jb20KK1A6CUpvZWwgQmVja2VyCitNOglqb2VsLmJlY2tlckBvcmFjbGUuY29tCiBMOglvY2ZzMi1kZXZlbEBvc3Mub3JhY2xlLmNvbQogVzoJaHR0cDovL29zcy5vcmFjbGUuY29tL3Byb2plY3RzL29jZnMyLwogUzoJU3VwcG9ydGVkCkBAIC0zMjg5LDYgKzMyODAsNyBAQAogTDoJcnQyNDAwLWRldmVsQGxpc3RzLnNvdXJjZWZvcmdlLm5ldAogVzoJaHR0cDovL3J0MngwMC5zZXJpYWxtb25rZXkuY29tLwogUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGtlcm5lbC5vcmc6L3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9pdmQvcnQyeDAwLmdpdAogRjoJZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwLwogCiBSQU1ESVNLIFJBTSBCTE9DSyBERVZJQ0UgRFJJVkVSCkBAIC0zMzUxLDYgKzMzNDMsMTMgQEAKIFc6CWh0dHA6Ly93d3cubmFtZXN5cy5jb20KIFM6CVN1cHBvcnRlZAogCitSRktJTEwKK1A6CUl2byB2YW4gRG9vcm4KK006CUl2RG9vcm5AZ21haWwuY29tCitMOgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOgluZXQvcmZraWxsCisKIFJPQ0tFVFBPUlQgRFJJVkVSCiBQOglDb210cm9sIENvcnAuCiBXOglodHRwOi8vd3d3LmNvbXRyb2wuY29tCmRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCmluZGV4IDBlYjIzZTUuLjM5NTE2YmYgMTAwNjQ0Ci0tLSBhL01ha2VmaWxlCisrKyBiL01ha2VmaWxlCkBAIC0xLDcgKzEsNyBAQAogVkVSU0lPTiA9IDIKIFBBVENITEVWRUwgPSA2CiBTVUJMRVZFTCA9IDI1Ci1FWFRSQVZFUlNJT04gPSAtcmM1CitFWFRSQVZFUlNJT04gPQogTkFNRSA9IEZ1bmt5IFdlYXNlbCBpcyBKaWdneSB3aXQgaXQKIAogIyAqRE9DVU1FTlRBVElPTioKQEAgLTE4OSw3ICsxODksNyBAQAogIyBBbHRlcm5hdGl2ZWx5IENST1NTX0NPTVBJTEUgY2FuIGJlIHNldCBpbiB0aGUgZW52aXJvbm1lbnQuCiAjIERlZmF1bHQgdmFsdWUgZm9yIENST1NTX0NPTVBJTEUgaXMgbm90IHRvIHByZWZpeCBleGVjdXRhYmxlcwogIyBOb3RlOiBTb21lIGFyY2hpdGVjdHVyZXMgYXNzaWduIENST1NTX0NPTVBJTEUgaW4gdGhlaXIgYXJjaC8qL01ha2VmaWxlCi0KK2V4cG9ydCBLQlVJTERfQlVJTERIT1NUIDo9ICQoU1VCQVJDSCkKIEFSQ0gJCT89ICQoU1VCQVJDSCkKIENST1NTX0NPTVBJTEUJPz0KIApkaWZmIC0tZ2l0IGEvYXJjaC9hbHBoYS9LY29uZmlnIGIvYXJjaC9hbHBoYS9LY29uZmlnCmluZGV4IDAwMjcwM2IuLjcyOWNkYmQgMTAwNjQ0Ci0tLSBhL2FyY2gvYWxwaGEvS2NvbmZpZworKysgYi9hcmNoL2FscGhhL0tjb25maWcKQEAgLTMzMCw2ICszMzAsOSBAQAogY29uZmlnIFBDSV9TWVNDQUxMCiAJZGVmX2Jvb2wgUENJCiAKK2NvbmZpZyBJT01NVV9IRUxQRVIKKwlkZWZfYm9vbCBQQ0kKKwogY29uZmlnIEFMUEhBX0NPUkVfQUdQCiAJYm9vbAogCWRlcGVuZHMgb24gQUxQSEFfR0VORVJJQyB8fCBBTFBIQV9USVRBTiB8fCBBTFBIQV9NQVJWRUwKZGlmZiAtLWdpdCBhL2FyY2gvYWxwaGEva2VybmVsL3BjaV9pb21tdS5jIGIvYXJjaC9hbHBoYS9rZXJuZWwvcGNpX2lvbW11LmMKaW5kZXggZTA3YTIzZi4uZGQ2ZTMzNCAxMDA2NDQKLS0tIGEvYXJjaC9hbHBoYS9rZXJuZWwvcGNpX2lvbW11LmMKKysrIGIvYXJjaC9hbHBoYS9rZXJuZWwvcGNpX2lvbW11LmMKQEAgLTEwLDYgKzEwLDcgQEAKICNpbmNsdWRlIDxsaW51eC9zY2F0dGVybGlzdC5oPgogI2luY2x1ZGUgPGxpbnV4L2xvZzIuaD4KICNpbmNsdWRlIDxsaW51eC9kbWEtbWFwcGluZy5oPgorI2luY2x1ZGUgPGxpbnV4L2lvbW11LWhlbHBlci5oPgogCiAjaW5jbHVkZSA8YXNtL2lvLmg+CiAjaW5jbHVkZSA8YXNtL2h3cnBiLmg+CkBAIC0xMjUsMTQgKzEyNiw2IEBACiAJcmV0dXJuIGlvbW11X2FyZW5hX25ld19ub2RlKDAsIGhvc2UsIGJhc2UsIHdpbmRvd19zaXplLCBhbGlnbik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgaW50IGlzX3NwYW5fYm91bmRhcnkodW5zaWduZWQgaW50IGluZGV4LCB1bnNpZ25lZCBpbnQgbnIsCi0JCQkJICAgdW5zaWduZWQgbG9uZyBzaGlmdCwKLQkJCQkgICB1bnNpZ25lZCBsb25nIGJvdW5kYXJ5X3NpemUpCi17Ci0Jc2hpZnQgPSAoc2hpZnQgKyBpbmRleCkgJiAoYm91bmRhcnlfc2l6ZSAtIDEpOwotCXJldHVybiBzaGlmdCArIG5yID4gYm91bmRhcnlfc2l6ZTsKLX0KLQogLyogTXVzdCBiZSBjYWxsZWQgd2l0aCB0aGUgYXJlbmEgbG9jayBoZWxkICovCiBzdGF0aWMgbG9uZwogaW9tbXVfYXJlbmFfZmluZF9wYWdlcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBwY2lfaW9tbXVfYXJlbmEgKmFyZW5hLApAQCAtMTQ3LDcgKzE0MCw2IEBACiAJYmFzZSA9IGFyZW5hLT5kbWFfYmFzZSA+PiBQQUdFX1NISUZUOwogCWlmIChkZXYpIHsKIAkJYm91bmRhcnlfc2l6ZSA9IGRtYV9nZXRfc2VnX2JvdW5kYXJ5KGRldikgKyAxOwotCQlCVUdfT04oIWlzX3Bvd2VyX29mXzIoYm91bmRhcnlfc2l6ZSkpOwogCQlib3VuZGFyeV9zaXplID4+PSBQQUdFX1NISUZUOwogCX0gZWxzZSB7CiAJCWJvdW5kYXJ5X3NpemUgPSAxVUwgPDwgKDMyIC0gUEFHRV9TSElGVCk7CkBAIC0xNjEsNyArMTUzLDcgQEAKIAogYWdhaW46CiAJd2hpbGUgKGkgPCBuICYmIHAraSA8IG5lbnQpIHsKLQkJaWYgKCFpICYmIGlzX3NwYW5fYm91bmRhcnkocCwgbiwgYmFzZSwgYm91bmRhcnlfc2l6ZSkpIHsKKwkJaWYgKCFpICYmIGlvbW11X2lzX3NwYW5fYm91bmRhcnkocCwgbiwgYmFzZSwgYm91bmRhcnlfc2l6ZSkpIHsKIAkJCXAgPSBBTElHTihwICsgMSwgbWFzayArIDEpOwogCQkJZ290byBhZ2FpbjsKIAkJfQpAQCAtNDMyLDExICs0MjQsMTMgQEAKICAgIGVsc2UgRE1BX0FERFJQIGlzIHVuZGVmaW5lZC4gICovCiAKIHZvaWQgKgotcGNpX2FsbG9jX2NvbnNpc3RlbnQoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHNpemVfdCBzaXplLCBkbWFfYWRkcl90ICpkbWFfYWRkcnApCitfX3BjaV9hbGxvY19jb25zaXN0ZW50KHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBzaXplX3Qgc2l6ZSwKKwkJICAgICAgIGRtYV9hZGRyX3QgKmRtYV9hZGRycCwgZ2ZwX3QgZ2ZwKQogewogCXZvaWQgKmNwdV9hZGRyOwogCWxvbmcgb3JkZXIgPSBnZXRfb3JkZXIoc2l6ZSk7Ci0JZ2ZwX3QgZ2ZwID0gR0ZQX0FUT01JQzsKKworCWdmcCAmPSB+R0ZQX0RNQTsKIAogdHJ5X2FnYWluOgogCWNwdV9hZGRyID0gKHZvaWQgKilfX2dldF9mcmVlX3BhZ2VzKGdmcCwgb3JkZXIpOwpAQCAtNDY2LDcgKzQ2MCw3IEBACiAKIAlyZXR1cm4gY3B1X2FkZHI7CiB9Ci1FWFBPUlRfU1lNQk9MKHBjaV9hbGxvY19jb25zaXN0ZW50KTsKK0VYUE9SVF9TWU1CT0woX19wY2lfYWxsb2NfY29uc2lzdGVudCk7CiAKIC8qIEZyZWUgYW5kIHVubWFwIGEgY29uc2lzdGVudCBETUEgYnVmZmVyLiAgQ1BVX0FERFIgYW5kIERNQV9BRERSIG11c3QKICAgIGJlIHZhbHVlcyB0aGF0IHdlcmUgcmV0dXJuZWQgZnJvbSBwY2lfYWxsb2NfY29uc2lzdGVudC4gIFNJWkUgbXVzdApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vS2NvbmZpZyBiL2FyY2gvYXJtL0tjb25maWcKaW5kZXggOTU1ZmM1My4uNDAzOWExMyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vS2NvbmZpZworKysgYi9hcmNoL2FybS9LY29uZmlnCkBAIC00NjksNiArNDY5LDcgQEAKIAlib29sICJUSSBPTUFQIgogCXNlbGVjdCBHRU5FUklDX0dQSU8KIAlzZWxlY3QgR0VORVJJQ19USU1FCisJc2VsZWN0IEdFTkVSSUNfQ0xPQ0tFVkVOVFMKIAloZWxwCiAJICBTdXBwb3J0IGZvciBUSSdzIE9NQVAgcGxhdGZvcm0gKE9NQVAxIGFuZCBPTUFQMikuCiAKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL01ha2VmaWxlIGIvYXJjaC9hcm0vTWFrZWZpbGUKaW5kZXggN2I4ZmY2Ni4uMWE0NjQ5NiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vTWFrZWZpbGUKKysrIGIvYXJjaC9hcm0vTWFrZWZpbGUKQEAgLTI1MSw2ICsyNTEsNyBAQAogICBlY2hvICAnKiB6SW1hZ2UgICAgICAgIC0gQ29tcHJlc3NlZCBrZXJuZWwgaW1hZ2UgKGFyY2gvJChBUkNIKS9ib290L3pJbWFnZSknCiAgIGVjaG8gICcgIEltYWdlICAgICAgICAgLSBVbmNvbXByZXNzZWQga2VybmVsIGltYWdlIChhcmNoLyQoQVJDSCkvYm9vdC9JbWFnZSknCiAgIGVjaG8gICcqIHhpcEltYWdlICAgICAgLSBYSVAga2VybmVsIGltYWdlLCBpZiBjb25maWd1cmVkIChhcmNoLyQoQVJDSCkvYm9vdC94aXBJbWFnZSknCisgIGVjaG8gICcgIHVJbWFnZSAgICAgICAgLSBVLUJvb3Qgd3JhcHBlZCB6SW1hZ2UnCiAgIGVjaG8gICcgIGJvb3RwSW1hZ2UgICAgLSBDb21iaW5lZCB6SW1hZ2UgYW5kIGluaXRpYWwgUkFNIGRpc2snIAogICBlY2hvICAnICAgICAgICAgICAgICAgICAgKHN1cHBseSBpbml0cmQgaW1hZ2UgdmlhIG1ha2UgdmFyaWFibGUgSU5JVFJEPTxwYXRoPiknCiAgIGVjaG8gICcgIGluc3RhbGwgICAgICAgLSBJbnN0YWxsIHVuY29tcHJlc3NlZCBrZXJuZWwnCmRpZmYgLS1naXQgYS9hcmNoL2FybS9jb21tb24vaXQ4MTUyLmMgYi9hcmNoL2FybS9jb21tb24vaXQ4MTUyLmMKaW5kZXggOTdiN2RjMS4uNWZlOTU4OCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vY29tbW9uL2l0ODE1Mi5jCisrKyBiL2FyY2gvYXJtL2NvbW1vbi9pdDgxNTIuYwpAQCAtMTIwLDYgKzEyMCw3IEBACiAJCQkgIHRpbWUsIHdoZW4gdGhleSBhbGwgdGhyZWUgd2VyZSAwLiAqLwogCQkgICAgICAgYml0c19wZCA9IF9fcmF3X3JlYWRsKElUODE1Ml9JTlRDX1BEQ05JUlIpOwogCQkgICAgICAgYml0c19scCA9IF9fcmF3X3JlYWRsKElUODE1Ml9JTlRDX0xQQ05JUlIpOworCQkgICAgICAgYml0c19sZCA9IF9fcmF3X3JlYWRsKElUODE1Ml9JTlRDX0xEQ05JUlIpOwogCQkgICAgICAgaWYgKCEoYml0c19sZCB8IGJpdHNfbHAgfCBiaXRzX3BkKSkKIAkJCSAgICAgICByZXR1cm47CiAJICAgICAgIH0KQEAgLTEzMywxNCArMTM0LDE0IEBACiAKIAkgICAgICAgYml0c19scCAmPSAoKDEgPDwgSVQ4MTUyX0xQX0lSUV9DT1VOVCkgLSAxKTsKIAkgICAgICAgd2hpbGUgKGJpdHNfbHApIHsKLQkJICAgICAgIGkgPSBfX2ZmcyhiaXRzX3BkKTsKKwkJICAgICAgIGkgPSBfX2ZmcyhiaXRzX2xwKTsKIAkJICAgICAgIGl0ODE1Ml9pcnEoSVQ4MTUyX0xQX0lSUShpKSk7CiAJCSAgICAgICBiaXRzX2xwICY9IH4oMSA8PCBpKTsKIAkgICAgICAgfQogCiAJICAgICAgIGJpdHNfbGQgJj0gKCgxIDw8IElUODE1Ml9MRF9JUlFfQ09VTlQpIC0gMSk7CiAJICAgICAgIHdoaWxlIChiaXRzX2xkKSB7Ci0JCSAgICAgICBpID0gX19mZnMoYml0c19wZCk7CisJCSAgICAgICBpID0gX19mZnMoYml0c19sZCk7CiAJCSAgICAgICBpdDgxNTJfaXJxKElUODE1Ml9MRF9JUlEoaSkpOwogCQkgICAgICAgYml0c19sZCAmPSB+KDEgPDwgaSk7CiAJICAgICAgIH0KQEAgLTI3NCw3ICsyNzUsNyBAQAogaW50IGRtYV9uZWVkc19ib3VuY2Uoc3RydWN0IGRldmljZSAqZGV2LCBkbWFfYWRkcl90IGRtYV9hZGRyLCBzaXplX3Qgc2l6ZSkKIHsKIAlkZXZfZGJnKGRldiwgIiVzOiBkbWFfYWRkciAlMDh4LCBzaXplICUwOHhcbiIsCi0JCV9fRlVOQ1RJT05fXywgZG1hX2FkZHIsIHNpemUpOworCQlfX2Z1bmNfXywgZG1hX2FkZHIsIHNpemUpOwogCXJldHVybiAoZGV2LT5idXMgPT0gJnBjaV9idXNfdHlwZSkgJiYKIAkJKChkbWFfYWRkciArIHNpemUgLSBQSFlTX09GRlNFVCkgPj0gU1pfNjRNKTsKIH0KQEAgLTI4OSw3ICsyOTAsNyBAQAogICovCiBpbnQgcGNpX3NldF9kbWFfbWFzayhzdHJ1Y3QgcGNpX2RldiAqZGV2LCB1NjQgbWFzaykKIHsKLQlkZXZfZGJnKCZkZXYtPmRldiwgIiVzOiAlbGx4XG4iLCBfX0ZVTkNUSU9OX18sIG1hc2spOworCWRldl9kYmcoJmRldi0+ZGV2LCAiJXM6ICVsbHhcbiIsIF9fZnVuY19fLCBtYXNrKTsKIAlpZiAobWFzayA+PSBQSFlTX09GRlNFVCArIFNaXzY0TSAtIDEpCiAJCXJldHVybiAwOwogCkBAIC0yOTksNyArMzAwLDcgQEAKIGludAogcGNpX3NldF9jb25zaXN0ZW50X2RtYV9tYXNrKHN0cnVjdCBwY2lfZGV2ICpkZXYsIHU2NCBtYXNrKQogewotCWRldl9kYmcoJmRldi0+ZGV2LCAiJXM6ICVsbHhcbiIsIF9fRlVOQ1RJT05fXywgbWFzayk7CisJZGV2X2RiZygmZGV2LT5kZXYsICIlczogJWxseFxuIiwgX19mdW5jX18sIG1hc2spOwogCWlmIChtYXNrID49IFBIWVNfT0ZGU0VUICsgU1pfNjRNIC0gMSkKIAkJcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2NvbmZpZ3Mvb21hcF9oMl8xNjEwX2RlZmNvbmZpZyBiL2FyY2gvYXJtL2NvbmZpZ3Mvb21hcF9oMl8xNjEwX2RlZmNvbmZpZwppbmRleCBjMjM0NWFmLi4zMjNjMWRlIDEwMDY0NAotLS0gYS9hcmNoL2FybS9jb25maWdzL29tYXBfaDJfMTYxMF9kZWZjb25maWcKKysrIGIvYXJjaC9hcm0vY29uZmlncy9vbWFwX2gyXzE2MTBfZGVmY29uZmlnCkBAIC0xLDcgKzEsNyBAQAogIwogIyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBtYWtlIGNvbmZpZzogZG9uJ3QgZWRpdAotIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjI0LXJjNQotIyBNb24gRGVjIDE3IDIwOjA0OjM4IDIwMDcKKyMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4yNS1yYzMKKyMgTW9uIE1hciAgMyAwMzozOTo0OCAyMDA4CiAjCiBDT05GSUdfQVJNPXkKIENPTkZJR19TWVNfU1VQUE9SVFNfQVBNX0VNVUxBVElPTj15CkBAIC0yMSw2ICsyMSw3IEBACiAjIENPTkZJR19BUkNIX0hBU19JTE9HMl9VNjQgaXMgbm90IHNldAogQ09ORklHX0dFTkVSSUNfSFdFSUdIVD15CiBDT05GSUdfR0VORVJJQ19DQUxJQlJBVEVfREVMQVk9eQorQ09ORklHX0FSQ0hfU1VQUE9SVFNfQU9VVD15CiBDT05GSUdfWk9ORV9ETUE9eQogQ09ORklHX1ZFQ1RPUlNfQkFTRT0weGZmZmYwMDAwCiBDT05GSUdfREVGQ09ORklHX0xJU1Q9Ii9saWIvbW9kdWxlcy8kVU5BTUVfUkVMRUFTRS8uY29uZmlnIgpAQCAtNDAsMTcgKzQxLDIyIEBACiAjIENPTkZJR19QT1NJWF9NUVVFVUUgaXMgbm90IHNldAogIyBDT05GSUdfQlNEX1BST0NFU1NfQUNDVCBpcyBub3Qgc2V0CiAjIENPTkZJR19UQVNLU1RBVFMgaXMgbm90IHNldAotIyBDT05GSUdfVVNFUl9OUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19QSURfTlMgaXMgbm90IHNldAogIyBDT05GSUdfQVVESVQgaXMgbm90IHNldAogIyBDT05GSUdfSUtDT05GSUcgaXMgbm90IHNldAogQ09ORklHX0xPR19CVUZfU0hJRlQ9MTQKICMgQ09ORklHX0NHUk9VUFMgaXMgbm90IHNldAorQ09ORklHX0dST1VQX1NDSEVEPXkKIENPTkZJR19GQUlSX0dST1VQX1NDSEVEPXkKLUNPTkZJR19GQUlSX1VTRVJfU0NIRUQ9eQotIyBDT05GSUdfRkFJUl9DR1JPVVBfU0NIRUQgaXMgbm90IHNldAorIyBDT05GSUdfUlRfR1JPVVBfU0NIRUQgaXMgbm90IHNldAorQ09ORklHX1VTRVJfU0NIRUQ9eQorIyBDT05GSUdfQ0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKICMgQ09ORklHX1NZU0ZTX0RFUFJFQ0FURUQgaXMgbm90IHNldAogIyBDT05GSUdfUkVMQVkgaXMgbm90IHNldAorQ09ORklHX05BTUVTUEFDRVM9eQorIyBDT05GSUdfVVRTX05TIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lQQ19OUyBpcyBub3Qgc2V0CisjIENPTkZJR19VU0VSX05TIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BJRF9OUyBpcyBub3Qgc2V0CiBDT05GSUdfQkxLX0RFVl9JTklUUkQ9eQogQ09ORklHX0lOSVRSQU1GU19TT1VSQ0U9IiIKIENPTkZJR19DQ19PUFRJTUlaRV9GT1JfU0laRT15CkBAIC02NCwxNyArNzAsMjYgQEAKIENPTkZJR19QUklOVEs9eQogQ09ORklHX0JVRz15CiBDT05GSUdfRUxGX0NPUkU9eQorQ09ORklHX0NPTVBBVF9CUks9eQogQ09ORklHX0JBU0VfRlVMTD15CiBDT05GSUdfRlVURVg9eQogQ09ORklHX0FOT05fSU5PREVTPXkKIENPTkZJR19FUE9MTD15CiBDT05GSUdfU0lHTkFMRkQ9eQorQ09ORklHX1RJTUVSRkQ9eQogQ09ORklHX0VWRU5URkQ9eQogQ09ORklHX1NITUVNPXkKIENPTkZJR19WTV9FVkVOVF9DT1VOVEVSUz15CiBDT05GSUdfU0xBQj15CiAjIENPTkZJR19TTFVCIGlzIG5vdCBzZXQKICMgQ09ORklHX1NMT0IgaXMgbm90IHNldAorIyBDT05GSUdfUFJPRklMSU5HIGlzIG5vdCBzZXQKKyMgQ09ORklHX01BUktFUlMgaXMgbm90IHNldAorQ09ORklHX0hBVkVfT1BST0ZJTEU9eQorIyBDT05GSUdfS1BST0JFUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9LUFJPQkVTPXkKK0NPTkZJR19QUk9DX1BBR0VfTU9OSVRPUj15CitDT05GSUdfU0xBQklORk89eQogQ09ORklHX1JUX01VVEVYRVM9eQogIyBDT05GSUdfVElOWV9TSE1FTSBpcyBub3Qgc2V0CiBDT05GSUdfQkFTRV9TTUFMTD0wCkBAIC0xMDIsNiArMTE3LDggQEAKICMgQ09ORklHX0RFRkFVTFRfQ0ZRIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFRkFVTFRfTk9PUCBpcyBub3Qgc2V0CiBDT05GSUdfREVGQVVMVF9JT1NDSEVEPSJhbnRpY2lwYXRvcnkiCitDT05GSUdfQ0xBU1NJQ19SQ1U9eQorIyBDT05GSUdfUFJFRU1QVF9SQ1UgaXMgbm90IHNldAogCiAjCiAjIFN5c3RlbSBUeXBlCkBAIC0xMzAsNiArMTQ3LDcgQEAKICMgQ09ORklHX0FSQ0hfS1M4Njk1IGlzIG5vdCBzZXQKICMgQ09ORklHX0FSQ0hfTlM5WFhYIGlzIG5vdCBzZXQKICMgQ09ORklHX0FSQ0hfTVhDIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfT1JJT04gaXMgbm90IHNldAogIyBDT05GSUdfQVJDSF9QTlg0MDA4IGlzIG5vdCBzZXQKICMgQ09ORklHX0FSQ0hfUFhBIGlzIG5vdCBzZXQKICMgQ09ORklHX0FSQ0hfUlBDIGlzIG5vdCBzZXQKQEAgLTEzOSw2ICsxNTcsNyBAQAogIyBDT05GSUdfQVJDSF9MSDdBNDBYIGlzIG5vdCBzZXQKICMgQ09ORklHX0FSQ0hfREFWSU5DSSBpcyBub3Qgc2V0CiBDT05GSUdfQVJDSF9PTUFQPXkKKyMgQ09ORklHX0FSQ0hfTVNNN1gwMEEgaXMgbm90IHNldAogCiAjCiAjIFRJIE9NQVAgSW1wbGVtZW50YXRpb25zCkBAIC0xNTUsNiArMTc0LDcgQEAKICMgQ09ORklHX09NQVBfTVVYX0RFQlVHIGlzIG5vdCBzZXQKIENPTkZJR19PTUFQX01VWF9XQVJOSU5HUz15CiBDT05GSUdfT01BUF9NQ0JTUD15CisjIENPTkZJR19PTUFQX01NVV9GV0sgaXMgbm90IHNldAogIyBDT05GSUdfT01BUF9NUFVfVElNRVIgaXMgbm90IHNldAogQ09ORklHX09NQVBfMzJLX1RJTUVSPXkKIENPTkZJR19PTUFQXzMyS19USU1FUl9IWj0xMjgKQEAgLTI2Niw2ICsyODYsNyBAQAogQ09ORklHX0NNRExJTkU9Im1lbT0zMk0gY29uc29sZT10dHlTMCwxMTUyMDBuOCByb290PTA4MDEgcm8gaW5pdD0vYmluL3NoIgogIyBDT05GSUdfWElQX0tFUk5FTCBpcyBub3Qgc2V0CiAjIENPTkZJR19LRVhFQyBpcyBub3Qgc2V0CisjIENPTkZJR19BVEFHU19QUk9DIGlzIG5vdCBzZXQKIAogIwogIyBDUFUgRnJlcXVlbmN5IHNjYWxpbmcKQEAgLTMxMSw5ICszMzIsMTAgQEAKICMgQ09ORklHX1BNX0xFR0FDWSBpcyBub3Qgc2V0CiAjIENPTkZJR19QTV9ERUJVRyBpcyBub3Qgc2V0CiBDT05GSUdfUE1fU0xFRVA9eQotQ09ORklHX1NVU1BFTkRfVVBfUE9TU0lCTEU9eQogQ09ORklHX1NVU1BFTkQ9eQorQ09ORklHX1NVU1BFTkRfRlJFRVpFUj15CiAjIENPTkZJR19BUE1fRU1VTEFUSU9OIGlzIG5vdCBzZXQKK0NPTkZJR19BUkNIX1NVU1BFTkRfUE9TU0lCTEU9eQogCiAjCiAjIE5ldHdvcmtpbmcKQEAgLTMzMCw2ICszNTIsNyBAQAogIyBDT05GSUdfWEZSTV9VU0VSIGlzIG5vdCBzZXQKICMgQ09ORklHX1hGUk1fU1VCX1BPTElDWSBpcyBub3Qgc2V0CiAjIENPTkZJR19YRlJNX01JR1JBVEUgaXMgbm90IHNldAorIyBDT05GSUdfWEZSTV9TVEFUSVNUSUNTIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9LRVkgaXMgbm90IHNldAogQ09ORklHX0lORVQ9eQogIyBDT05GSUdfSVBfTVVMVElDQVNUIGlzIG5vdCBzZXQKQEAgLTM4NCw2ICs0MDcsNyBAQAogIwogIyBDT05GSUdfTkVUX1BLVEdFTiBpcyBub3Qgc2V0CiAjIENPTkZJR19IQU1SQURJTyBpcyBub3Qgc2V0CisjIENPTkZJR19DQU4gaXMgbm90IHNldAogIyBDT05GSUdfSVJEQSBpcyBub3Qgc2V0CiAjIENPTkZJR19CVCBpcyBub3Qgc2V0CiAjIENPTkZJR19BRl9SWFJQQyBpcyBub3Qgc2V0CkBAIC00MjEsMTEgKzQ0NSwxMyBAQAogQ09ORklHX0JMS19ERVZfUkFNPXkKIENPTkZJR19CTEtfREVWX1JBTV9DT1VOVD0xNgogQ09ORklHX0JMS19ERVZfUkFNX1NJWkU9ODE5MgotQ09ORklHX0JMS19ERVZfUkFNX0JMT0NLU0laRT0xMDI0CisjIENPTkZJR19CTEtfREVWX1hJUCBpcyBub3Qgc2V0CiAjIENPTkZJR19DRFJPTV9QS1RDRFZEIGlzIG5vdCBzZXQKIENPTkZJR19BVEFfT1ZFUl9FVEg9bQogQ09ORklHX01JU0NfREVWSUNFUz15CiAjIENPTkZJR19FRVBST01fOTNDWDYgaXMgbm90IHNldAorIyBDT05GSUdfRU5DTE9TVVJFX1NFUlZJQ0VTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hBVkVfSURFIGlzIG5vdCBzZXQKIAogIwogIyBTQ1NJIGRldmljZSBzdXBwb3J0CkBAIC00ODksNiArNTE1LDcgQEAKICMgQ09ORklHX0lCTV9ORVdfRU1BQ19FTUFDNCBpcyBub3Qgc2V0CiAjIENPTkZJR19CNDQgaXMgbm90IHNldAogQ09ORklHX05FVERFVl8xMDAwPXkKKyMgQ09ORklHX0UxMDAwRV9FTkFCTEVEIGlzIG5vdCBzZXQKIENPTkZJR19ORVRERVZfMTAwMDA9eQogCiAjCkBAIC01MTIsNyArNTM5LDYgQEAKIENPTkZJR19TTEhDPXkKICMgQ09ORklHX1NMSVBfU01BUlQgaXMgbm90IHNldAogIyBDT05GSUdfU0xJUF9NT0RFX1NMSVA2IGlzIG5vdCBzZXQKLSMgQ09ORklHX1NIQVBFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRDT05TT0xFIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVFBPTEwgaXMgbm90IHNldAogIyBDT05GSUdfTkVUX1BPTExfQ09OVFJPTExFUiBpcyBub3Qgc2V0CkBAIC02MTYsMTIgKzY0MiwxMCBAQAogIwogIyBNaXNjZWxsYW5lb3VzIEkyQyBDaGlwIHN1cHBvcnQKICMKLSMgQ09ORklHX1NFTlNPUlNfRFMxMzM3IGlzIG5vdCBzZXQKLSMgQ09ORklHX1NFTlNPUlNfRFMxMzc0IGlzIG5vdCBzZXQKICMgQ09ORklHX0RTMTY4MiBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0VFUFJPTSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1BDRjg1NzQgaXMgbm90IHNldAotIyBDT05GSUdfU0VOU09SU19QQ0E5NTM5IGlzIG5vdCBzZXQKKyMgQ09ORklHX1BDRjg1NzUgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19QQ0Y4NTkxIGlzIG5vdCBzZXQKICMgQ09ORklHX0lTUDEzMDFfT01BUCBpcyBub3Qgc2V0CiBDT05GSUdfVFBTNjUwMTA9eQpAQCAtNjQ5LDYgKzY3Myw3IEBACiAjIENPTkZJR19TRU5TT1JTX0FETTEwMzEgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19BRE05MjQwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfQURUNzQ3MCBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX0FEVDc0NzMgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19BVFhQMSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0RTMTYyMSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0Y3MTgwNUYgaXMgbm90IHNldApAQCAtNjc2LDYgKzcwMSw3IEBACiAjIENPTkZJR19TRU5TT1JTX1NNU0M0N00xIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfU01TQzQ3TTE5MiBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1NNU0M0N0IzOTcgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19BRFM3ODI4IGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVEhNQzUwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVlQxMjExIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVzgzNzgxRCBpcyBub3Qgc2V0CkBAIC02ODMsNiArNzA5LDcgQEAKICMgQ09ORklHX1NFTlNPUlNfVzgzNzkyRCBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1c4Mzc5MyBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1c4M0w3ODVUUyBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX1c4M0w3ODZORyBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1c4MzYyN0hGIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVzgzNjI3RUhGIGlzIG5vdCBzZXQKICMgQ09ORklHX0hXTU9OX0RFQlVHX0NISVAgaXMgbm90IHNldApAQCAtNzA1LDYgKzczMiw3IEBACiAjIE11bHRpZnVuY3Rpb24gZGV2aWNlIGRyaXZlcnMKICMKICMgQ09ORklHX01GRF9TTTUwMSBpcyBub3Qgc2V0CisjIENPTkZJR19NRkRfQVNJQzMgaXMgbm90IHNldAogCiAjCiAjIE11bHRpbWVkaWEgZGV2aWNlcwpAQCAtODAyLDEwICs4MzAsNiBAQAogIwogIyBOT1RFOiBVU0JfU1RPUkFHRSBlbmFibGVzIFNDU0ksIGFuZCAnU0NTSSBkaXNrIHN1cHBvcnQnCiAjCi0KLSMKLSMgVVNCIEdhZGdldCBTdXBwb3J0Ci0jCiAjIENPTkZJR19VU0JfR0FER0VUIGlzIG5vdCBzZXQKICMgQ09ORklHX01NQyBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVdfTEVEUyBpcyBub3Qgc2V0CkBAIC04MjYsMTIgKzg1MCwxMCBAQAogIyBDT05GSUdfWEZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0dGUzJfRlMgaXMgbm90IHNldAogIyBDT05GSUdfT0NGUzJfRlMgaXMgbm90IHNldAotIyBDT05GSUdfTUlOSVhfRlMgaXMgbm90IHNldAotQ09ORklHX1JPTUZTX0ZTPXkKK0NPTkZJR19ETk9USUZZPXkKIENPTkZJR19JTk9USUZZPXkKIENPTkZJR19JTk9USUZZX1VTRVI9eQogIyBDT05GSUdfUVVPVEEgaXMgbm90IHNldAotQ09ORklHX0ROT1RJRlk9eQogIyBDT05GSUdfQVVUT0ZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0FVVE9GUzRfRlMgaXMgbm90IHNldAogIyBDT05GSUdfRlVTRV9GUyBpcyBub3Qgc2V0CkBAIC04NzQsOCArODk2LDEwIEBACiAjIENPTkZJR19FRlNfRlMgaXMgbm90IHNldAogQ09ORklHX0NSQU1GUz15CiAjIENPTkZJR19WWEZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX01JTklYX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0hQRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfUU5YNEZTX0ZTIGlzIG5vdCBzZXQKK0NPTkZJR19ST01GU19GUz15CiAjIENPTkZJR19TWVNWX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1VGU19GUyBpcyBub3Qgc2V0CiBDT05GSUdfTkVUV09SS19GSUxFU1lTVEVNUz15CkBAIC05NDYsOSArOTcwLDYgQEAKICMgQ09ORklHX05MU19LT0k4X1UgaXMgbm90IHNldAogIyBDT05GSUdfTkxTX1VURjggaXMgbm90IHNldAogIyBDT05GSUdfRExNIGlzIG5vdCBzZXQKLUNPTkZJR19JTlNUUlVNRU5UQVRJT049eQotIyBDT05GSUdfUFJPRklMSU5HIGlzIG5vdCBzZXQKLSMgQ09ORklHX01BUktFUlMgaXMgbm90IHNldAogCiAjCiAjIEtlcm5lbCBoYWNraW5nCkBAIC05NzUsNiArOTk2LDcgQEAKIENPTkZJR19DUllQVE89eQogQ09ORklHX0NSWVBUT19BTEdBUEk9eQogQ09ORklHX0NSWVBUT19CTEtDSVBIRVI9eQorIyBDT05GSUdfQ1JZUFRPX1NFUUlWIGlzIG5vdCBzZXQKIENPTkZJR19DUllQVE9fTUFOQUdFUj15CiAjIENPTkZJR19DUllQVE9fSE1BQyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fWENCQyBpcyBub3Qgc2V0CkBAIC05OTIsNiArMTAxNCw5IEBACiBDT05GSUdfQ1JZUFRPX1BDQkM9bQogIyBDT05GSUdfQ1JZUFRPX0xSVyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fWFRTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DVFIgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0dDTSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ0NNIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19DUllQVEQgaXMgbm90IHNldAogQ09ORklHX0NSWVBUT19ERVM9eQogIyBDT05GSUdfQ1JZUFRPX0ZDUllQVCBpcyBub3Qgc2V0CkBAIC0xMDA2LDEyICsxMDMxLDE0IEBACiAjIENPTkZJR19DUllQVE9fS0hBWkFEIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19BTlVCSVMgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX1NFRUQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1NBTFNBMjAgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0RFRkxBVEUgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX01JQ0hBRUxfTUlDIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19DUkMzMkMgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0NBTUVMTElBIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19URVNUIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19BVVRIRU5DIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19MWk8gaXMgbm90IHNldAogQ09ORklHX0NSWVBUT19IVz15CiAKICMKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2NvbmZpZ3Mvb21hcF9vc2tfNTkxMl9kZWZjb25maWcgYi9hcmNoL2FybS9jb25maWdzL29tYXBfb3NrXzU5MTJfZGVmY29uZmlnCmluZGV4IGQ1OTJhNjQuLmQ0Y2E1ZTYgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2NvbmZpZ3Mvb21hcF9vc2tfNTkxMl9kZWZjb25maWcKKysrIGIvYXJjaC9hcm0vY29uZmlncy9vbWFwX29za181OTEyX2RlZmNvbmZpZwpAQCAtMSw3ICsxLDcgQEAKICMKICMgQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgbWFrZSBjb25maWc6IGRvbid0IGVkaXQKLSMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4yNC1yYzUKLSMgTW9uIERlYyAxNyAyMToxMjo0NSAyMDA3CisjIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMjUtcmMzCisjIE1vbiBNYXIgIDMgMDM6MzU6MTcgMjAwOAogIwogQ09ORklHX0FSTT15CiBDT05GSUdfU1lTX1NVUFBPUlRTX0FQTV9FTVVMQVRJT049eQpAQCAtMjEsNiArMjEsNyBAQAogIyBDT05GSUdfQVJDSF9IQVNfSUxPRzJfVTY0IGlzIG5vdCBzZXQKIENPTkZJR19HRU5FUklDX0hXRUlHSFQ9eQogQ09ORklHX0dFTkVSSUNfQ0FMSUJSQVRFX0RFTEFZPXkKK0NPTkZJR19BUkNIX1NVUFBPUlRTX0FPVVQ9eQogQ09ORklHX1pPTkVfRE1BPXkKIENPTkZJR19WRUNUT1JTX0JBU0U9MHhmZmZmMDAwMAogQ09ORklHX0RFRkNPTkZJR19MSVNUPSIvbGliL21vZHVsZXMvJFVOQU1FX1JFTEVBU0UvLmNvbmZpZyIKQEAgLTM5LDE3ICs0MCwyMiBAQAogIyBDT05GSUdfUE9TSVhfTVFVRVVFIGlzIG5vdCBzZXQKICMgQ09ORklHX0JTRF9QUk9DRVNTX0FDQ1QgaXMgbm90IHNldAogIyBDT05GSUdfVEFTS1NUQVRTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VTRVJfTlMgaXMgbm90IHNldAotIyBDT05GSUdfUElEX05TIGlzIG5vdCBzZXQKICMgQ09ORklHX0FVRElUIGlzIG5vdCBzZXQKICMgQ09ORklHX0lLQ09ORklHIGlzIG5vdCBzZXQKIENPTkZJR19MT0dfQlVGX1NISUZUPTE0CiAjIENPTkZJR19DR1JPVVBTIGlzIG5vdCBzZXQKK0NPTkZJR19HUk9VUF9TQ0hFRD15CiBDT05GSUdfRkFJUl9HUk9VUF9TQ0hFRD15Ci1DT05GSUdfRkFJUl9VU0VSX1NDSEVEPXkKLSMgQ09ORklHX0ZBSVJfQ0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JUX0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKK0NPTkZJR19VU0VSX1NDSEVEPXkKKyMgQ09ORklHX0NHUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CiAjIENPTkZJR19TWVNGU19ERVBSRUNBVEVEIGlzIG5vdCBzZXQKICMgQ09ORklHX1JFTEFZIGlzIG5vdCBzZXQKK0NPTkZJR19OQU1FU1BBQ0VTPXkKKyMgQ09ORklHX1VUU19OUyBpcyBub3Qgc2V0CisjIENPTkZJR19JUENfTlMgaXMgbm90IHNldAorIyBDT05GSUdfVVNFUl9OUyBpcyBub3Qgc2V0CisjIENPTkZJR19QSURfTlMgaXMgbm90IHNldAogQ09ORklHX0JMS19ERVZfSU5JVFJEPXkKIENPTkZJR19JTklUUkFNRlNfU09VUkNFPSIiCiBDT05GSUdfQ0NfT1BUSU1JWkVfRk9SX1NJWkU9eQpAQCAtNjMsMTcgKzY5LDI2IEBACiBDT05GSUdfUFJJTlRLPXkKIENPTkZJR19CVUc9eQogQ09ORklHX0VMRl9DT1JFPXkKK0NPTkZJR19DT01QQVRfQlJLPXkKIENPTkZJR19CQVNFX0ZVTEw9eQogQ09ORklHX0ZVVEVYPXkKIENPTkZJR19BTk9OX0lOT0RFUz15CiBDT05GSUdfRVBPTEw9eQogQ09ORklHX1NJR05BTEZEPXkKK0NPTkZJR19USU1FUkZEPXkKIENPTkZJR19FVkVOVEZEPXkKIENPTkZJR19TSE1FTT15CiBDT05GSUdfVk1fRVZFTlRfQ09VTlRFUlM9eQogQ09ORklHX1NMQUI9eQogIyBDT05GSUdfU0xVQiBpcyBub3Qgc2V0CiAjIENPTkZJR19TTE9CIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BST0ZJTElORyBpcyBub3Qgc2V0CisjIENPTkZJR19NQVJLRVJTIGlzIG5vdCBzZXQKK0NPTkZJR19IQVZFX09QUk9GSUxFPXkKKyMgQ09ORklHX0tQUk9CRVMgaXMgbm90IHNldAorQ09ORklHX0hBVkVfS1BST0JFUz15CitDT05GSUdfUFJPQ19QQUdFX01PTklUT1I9eQorQ09ORklHX1NMQUJJTkZPPXkKIENPTkZJR19SVF9NVVRFWEVTPXkKICMgQ09ORklHX1RJTllfU0hNRU0gaXMgbm90IHNldAogQ09ORklHX0JBU0VfU01BTEw9MApAQCAtMTAxLDYgKzExNiw4IEBACiBDT05GSUdfREVGQVVMVF9DRlE9eQogIyBDT05GSUdfREVGQVVMVF9OT09QIGlzIG5vdCBzZXQKIENPTkZJR19ERUZBVUxUX0lPU0NIRUQ9ImNmcSIKK0NPTkZJR19DTEFTU0lDX1JDVT15CisjIENPTkZJR19QUkVFTVBUX1JDVSBpcyBub3Qgc2V0CiAKICMKICMgU3lzdGVtIFR5cGUKQEAgLTEyOSw2ICsxNDYsNyBAQAogIyBDT05GSUdfQVJDSF9LUzg2OTUgaXMgbm90IHNldAogIyBDT05GSUdfQVJDSF9OUzlYWFggaXMgbm90IHNldAogIyBDT05GSUdfQVJDSF9NWEMgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9PUklPTiBpcyBub3Qgc2V0CiAjIENPTkZJR19BUkNIX1BOWDQwMDggaXMgbm90IHNldAogIyBDT05GSUdfQVJDSF9QWEEgaXMgbm90IHNldAogIyBDT05GSUdfQVJDSF9SUEMgaXMgbm90IHNldApAQCAtMTM4LDYgKzE1Niw3IEBACiAjIENPTkZJR19BUkNIX0xIN0E0MFggaXMgbm90IHNldAogIyBDT05GSUdfQVJDSF9EQVZJTkNJIGlzIG5vdCBzZXQKIENPTkZJR19BUkNIX09NQVA9eQorIyBDT05GSUdfQVJDSF9NU003WDAwQSBpcyBub3Qgc2V0CiAKICMKICMgVEkgT01BUCBJbXBsZW1lbnRhdGlvbnMKQEAgLTE1NCw2ICsxNzMsNyBAQAogIyBDT05GSUdfT01BUF9NVVhfREVCVUcgaXMgbm90IHNldAogQ09ORklHX09NQVBfTVVYX1dBUk5JTkdTPXkKIENPTkZJR19PTUFQX01DQlNQPXkKKyMgQ09ORklHX09NQVBfTU1VX0ZXSyBpcyBub3Qgc2V0CiAjIENPTkZJR19PTUFQX01QVV9USU1FUiBpcyBub3Qgc2V0CiBDT05GSUdfT01BUF8zMktfVElNRVI9eQogQ09ORklHX09NQVBfMzJLX1RJTUVSX0haPTEyOApAQCAtMTczLDEzICsxOTMsMTMgQEAKICMKICMgT01BUCBCb2FyZCBUeXBlCiAjCi0jIENPTkZJR19NQUNIX09NQVBfSU5OT1ZBVE9SIGlzIG5vdCBzZXQKLSMgQ09ORklHX01BQ0hfT01BUF9IMiBpcyBub3Qgc2V0Ci0jIENPTkZJR19NQUNIX09NQVBfSDMgaXMgbm90IHNldAorQ09ORklHX01BQ0hfT01BUF9JTk5PVkFUT1I9eQorQ09ORklHX01BQ0hfT01BUF9IMj15CitDT05GSUdfTUFDSF9PTUFQX0gzPXkKIENPTkZJR19NQUNIX09NQVBfT1NLPXkKICMgQ09ORklHX09NQVBfT1NLX01JU1RSQUwgaXMgbm90IHNldAotIyBDT05GSUdfTUFDSF9OT0tJQTc3MCBpcyBub3Qgc2V0Ci0jIENPTkZJR19NQUNIX09NQVBfR0VORVJJQyBpcyBub3Qgc2V0CitDT05GSUdfTUFDSF9OT0tJQTc3MD15CitDT05GSUdfTUFDSF9PTUFQX0dFTkVSSUM9eQogCiAjCiAjIE9NQVAgQ1BVIFNwZWVkCkBAIC0yNzUsNiArMjk1LDcgQEAKIENPTkZJR19DTURMSU5FPSJtZW09MzJNIGNvbnNvbGU9dHR5UzAsMTE1MjAwIGluaXRyZD0weDEwNDAwMDAwLDhNIHJvb3Q9L2Rldi9yYW0wIHJ3IgogIyBDT05GSUdfWElQX0tFUk5FTCBpcyBub3Qgc2V0CiAjIENPTkZJR19LRVhFQyBpcyBub3Qgc2V0CisjIENPTkZJR19BVEFHU19QUk9DIGlzIG5vdCBzZXQKIAogIwogIyBDUFUgRnJlcXVlbmN5IHNjYWxpbmcKQEAgLTMwNyw5ICszMjgsMTAgQEAKICMgQ09ORklHX1BNX0xFR0FDWSBpcyBub3Qgc2V0CiAjIENPTkZJR19QTV9ERUJVRyBpcyBub3Qgc2V0CiBDT05GSUdfUE1fU0xFRVA9eQotQ09ORklHX1NVU1BFTkRfVVBfUE9TU0lCTEU9eQogQ09ORklHX1NVU1BFTkQ9eQorQ09ORklHX1NVU1BFTkRfRlJFRVpFUj15CiAjIENPTkZJR19BUE1fRU1VTEFUSU9OIGlzIG5vdCBzZXQKK0NPTkZJR19BUkNIX1NVU1BFTkRfUE9TU0lCTEU9eQogCiAjCiAjIE5ldHdvcmtpbmcKQEAgLTMyNiw2ICszNDgsNyBAQAogIyBDT05GSUdfWEZSTV9VU0VSIGlzIG5vdCBzZXQKICMgQ09ORklHX1hGUk1fU1VCX1BPTElDWSBpcyBub3Qgc2V0CiAjIENPTkZJR19YRlJNX01JR1JBVEUgaXMgbm90IHNldAorIyBDT05GSUdfWEZSTV9TVEFUSVNUSUNTIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9LRVkgaXMgbm90IHNldAogQ09ORklHX0lORVQ9eQogQ09ORklHX0lQX01VTFRJQ0FTVD15CkBAIC0zODEsNiArNDA0LDcgQEAKICMKICMgQ09ORklHX05FVF9QS1RHRU4gaXMgbm90IHNldAogIyBDT05GSUdfSEFNUkFESU8gaXMgbm90IHNldAorIyBDT05GSUdfQ0FOIGlzIG5vdCBzZXQKICMgQ09ORklHX0lSREEgaXMgbm90IHNldAogIyBDT05GSUdfQlQgaXMgbm90IHNldAogIyBDT05GSUdfQUZfUlhSUEMgaXMgbm90IHNldApAQCAtNDkzLDExICs1MTcsMTMgQEAKIENPTkZJR19CTEtfREVWX1JBTT15CiBDT05GSUdfQkxLX0RFVl9SQU1fQ09VTlQ9MTYKIENPTkZJR19CTEtfREVWX1JBTV9TSVpFPTgxOTIKLUNPTkZJR19CTEtfREVWX1JBTV9CTE9DS1NJWkU9MTAyNAorIyBDT05GSUdfQkxLX0RFVl9YSVAgaXMgbm90IHNldAogIyBDT05GSUdfQ0RST01fUEtUQ0RWRCBpcyBub3Qgc2V0CiAjIENPTkZJR19BVEFfT1ZFUl9FVEggaXMgbm90IHNldAogQ09ORklHX01JU0NfREVWSUNFUz15CiAjIENPTkZJR19FRVBST01fOTNDWDYgaXMgbm90IHNldAorIyBDT05GSUdfRU5DTE9TVVJFX1NFUlZJQ0VTIGlzIG5vdCBzZXQKK0NPTkZJR19IQVZFX0lERT15CiBDT05GSUdfSURFPW0KIENPTkZJR19CTEtfREVWX0lERT1tCiAKQEAgLTUxOSw3ICs1NDUsNiBAQAogIwogIyBDT05GSUdfSURFX0dFTkVSSUMgaXMgbm90IHNldAogIyBDT05GSUdfQkxLX0RFVl9QTEFURk9STSBpcyBub3Qgc2V0Ci0jIENPTkZJR19JREVfQVJNIGlzIG5vdCBzZXQKICMgQ09ORklHX0JMS19ERVZfSURFRE1BIGlzIG5vdCBzZXQKIENPTkZJR19JREVfQVJDSF9PQlNPTEVURV9JTklUPXkKICMgQ09ORklHX0JMS19ERVZfSEQgaXMgbm90IHNldApAQCAtNTUzLDYgKzU3OCw3IEBACiAjIENPTkZJR19JQk1fTkVXX0VNQUNfRU1BQzQgaXMgbm90IHNldAogIyBDT05GSUdfQjQ0IGlzIG5vdCBzZXQKIENPTkZJR19ORVRERVZfMTAwMD15CisjIENPTkZJR19FMTAwMEVfRU5BQkxFRCBpcyBub3Qgc2V0CiBDT05GSUdfTkVUREVWXzEwMDAwPXkKIAogIwpAQCAtNTc0LDcgKzYwMCw2IEBACiAjIENPTkZJR19QUFBPTDJUUCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTElQIGlzIG5vdCBzZXQKIENPTkZJR19TTEhDPXkKLSMgQ09ORklHX1NIQVBFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRDT05TT0xFIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVFBPTEwgaXMgbm90IHNldAogIyBDT05GSUdfTkVUX1BPTExfQ09OVFJPTExFUiBpcyBub3Qgc2V0CkBAIC02NzEsNiArNjk2LDcgQEAKICMgQ09ORklHX1NZTkNMSU5LX0NTIGlzIG5vdCBzZXQKICMgQ09ORklHX0NBUkRNQU5fNDAwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19DQVJETUFOXzQwNDAgaXMgbm90IHNldAorIyBDT05GSUdfSVBXSVJFTEVTUyBpcyBub3Qgc2V0CiAjIENPTkZJR19SQVdfRFJJVkVSIGlzIG5vdCBzZXQKICMgQ09ORklHX1RDR19UUE0gaXMgbm90IHNldAogQ09ORklHX0kyQz15CkBAIC02OTgsMTIgKzcyNCwxMCBAQAogIwogIyBNaXNjZWxsYW5lb3VzIEkyQyBDaGlwIHN1cHBvcnQKICMKLSMgQ09ORklHX1NFTlNPUlNfRFMxMzM3IGlzIG5vdCBzZXQKLSMgQ09ORklHX1NFTlNPUlNfRFMxMzc0IGlzIG5vdCBzZXQKICMgQ09ORklHX0RTMTY4MiBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0VFUFJPTSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1BDRjg1NzQgaXMgbm90IHNldAotIyBDT05GSUdfU0VOU09SU19QQ0E5NTM5IGlzIG5vdCBzZXQKKyMgQ09ORklHX1BDRjg1NzUgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19QQ0Y4NTkxIGlzIG5vdCBzZXQKICMgQ09ORklHX0lTUDEzMDFfT01BUCBpcyBub3Qgc2V0CiBDT05GSUdfVFBTNjUwMTA9eQpAQCAtNzMxLDYgKzc1NSw3IEBACiAjIENPTkZJR19TRU5TT1JTX0FETTEwMzEgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19BRE05MjQwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfQURUNzQ3MCBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX0FEVDc0NzMgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19BVFhQMSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0RTMTYyMSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0Y3MTgwNUYgaXMgbm90IHNldApAQCAtNzU4LDYgKzc4Myw3IEBACiAjIENPTkZJR19TRU5TT1JTX1NNU0M0N00xIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfU01TQzQ3TTE5MiBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1NNU0M0N0IzOTcgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19BRFM3ODI4IGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVEhNQzUwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVlQxMjExIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVzgzNzgxRCBpcyBub3Qgc2V0CkBAIC03NjUsNiArNzkxLDcgQEAKICMgQ09ORklHX1NFTlNPUlNfVzgzNzkyRCBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1c4Mzc5MyBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1c4M0w3ODVUUyBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX1c4M0w3ODZORyBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1c4MzYyN0hGIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVzgzNjI3RUhGIGlzIG5vdCBzZXQKICMgQ09ORklHX0hXTU9OX0RFQlVHX0NISVAgaXMgbm90IHNldApAQCAtNzgwLDYgKzgwNyw3IEBACiAjIE11bHRpZnVuY3Rpb24gZGV2aWNlIGRyaXZlcnMKICMKICMgQ09ORklHX01GRF9TTTUwMSBpcyBub3Qgc2V0CisjIENPTkZJR19NRkRfQVNJQzMgaXMgbm90IHNldAogCiAjCiAjIE11bHRpbWVkaWEgZGV2aWNlcwpAQCAtODY1LDEwICs4OTMsNiBAQAogIwogIyBOT1RFOiBVU0JfU1RPUkFHRSBlbmFibGVzIFNDU0ksIGFuZCAnU0NTSSBkaXNrIHN1cHBvcnQnCiAjCi0KLSMKLSMgVVNCIEdhZGdldCBTdXBwb3J0Ci0jCiAjIENPTkZJR19VU0JfR0FER0VUIGlzIG5vdCBzZXQKICMgQ09ORklHX01NQyBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVdfTEVEUyBpcyBub3Qgc2V0CkBAIC04ODksMTIgKzkxMywxMCBAQAogIyBDT05GSUdfWEZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0dGUzJfRlMgaXMgbm90IHNldAogIyBDT05GSUdfT0NGUzJfRlMgaXMgbm90IHNldAotIyBDT05GSUdfTUlOSVhfRlMgaXMgbm90IHNldAotIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAorQ09ORklHX0ROT1RJRlk9eQogQ09ORklHX0lOT1RJRlk9eQogQ09ORklHX0lOT1RJRllfVVNFUj15CiAjIENPTkZJR19RVU9UQSBpcyBub3Qgc2V0Ci1DT05GSUdfRE5PVElGWT15CiBDT05GSUdfQVVUT0ZTX0ZTPXkKIENPTkZJR19BVVRPRlM0X0ZTPXkKICMgQ09ORklHX0ZVU0VfRlMgaXMgbm90IHNldApAQCAtOTQ4LDggKzk3MCwxMCBAQAogIyBDT05GSUdfSkZGUzJfUlVCSU4gaXMgbm90IHNldAogIyBDT05GSUdfQ1JBTUZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1ZYRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfTUlOSVhfRlMgaXMgbm90IHNldAogIyBDT05GSUdfSFBGU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19RTlg0RlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfU1lTVl9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19VRlNfRlMgaXMgbm90IHNldAogQ09ORklHX05FVFdPUktfRklMRVNZU1RFTVM9eQpAQCAtMTAxOSw5ICsxMDQzLDYgQEAKICMgQ09ORklHX05MU19LT0k4X1UgaXMgbm90IHNldAogIyBDT05GSUdfTkxTX1VURjggaXMgbm90IHNldAogIyBDT05GSUdfRExNIGlzIG5vdCBzZXQKLUNPTkZJR19JTlNUUlVNRU5UQVRJT049eQotIyBDT05GSUdfUFJPRklMSU5HIGlzIG5vdCBzZXQKLSMgQ09ORklHX01BUktFUlMgaXMgbm90IHNldAogCiAjCiAjIEtlcm5lbCBoYWNraW5nCkBAIC0xMDQ1LDcgKzEwNjYsNTEgQEAKICMgQ09ORklHX0tFWVMgaXMgbm90IHNldAogIyBDT05GSUdfU0VDVVJJVFkgaXMgbm90IHNldAogIyBDT05GSUdfU0VDVVJJVFlfRklMRV9DQVBBQklMSVRJRVMgaXMgbm90IHNldAotIyBDT05GSUdfQ1JZUFRPIGlzIG5vdCBzZXQKK0NPTkZJR19DUllQVE89eQorIyBDT05GSUdfQ1JZUFRPX1NFUUlWIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19NQU5BR0VSIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19ITUFDIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19YQ0JDIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19OVUxMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19NRDQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX01ENSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0hBMSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0hBMjU2IGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19TSEE1MTIgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1dQNTEyIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19UR1IxOTIgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0dGMTI4TVVMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19FQ0IgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NCQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fUENCQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fTFJXIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19YVFMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NUUiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fR0NNIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DQ00gaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NSWVBURCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fREVTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19GQ1JZUFQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0JMT1dGSVNIIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19UV09GSVNIIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19TRVJQRU5UIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19BRVMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NBU1Q1IGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DQVNUNiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fVEVBIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19BUkM0IGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19LSEFaQUQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0FOVUJJUyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0VFRCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0FMU0EyMCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fREVGTEFURSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fTUlDSEFFTF9NSUMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NSQzMyQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ0FNRUxMSUEgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1RFU1QgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0FVVEhFTkMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0xaTyBpcyBub3Qgc2V0CitDT05GSUdfQ1JZUFRPX0hXPXkKIAogIwogIyBMaWJyYXJ5IHJvdXRpbmVzCmRpZmYgLS1naXQgYS9hcmNoL2FybS9rZXJuZWwvY2FsbHMuUyBiL2FyY2gvYXJtL2tlcm5lbC9jYWxscy5TCmluZGV4IDI4M2UxNGYuLjdlOTdiNzMgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2tlcm5lbC9jYWxscy5TCisrKyBiL2FyY2gvYXJtL2tlcm5lbC9jYWxscy5TCkBAIC0zMzYsNyArMzM2LDcgQEAKIAkJQ0FMTChzeXNfbWtub2RhdCkKIC8qIDMyNSAqLwlDQUxMKHN5c19mY2hvd25hdCkKIAkJQ0FMTChzeXNfZnV0aW1lc2F0KQotCQlDQUxMKHN5c19mc3RhdGF0NjQpCisJCUNBTEwoQUJJKHN5c19mc3RhdGF0NjQsICBzeXNfb2FiaV9mc3RhdGF0NjQpKQogCQlDQUxMKHN5c191bmxpbmthdCkKIAkJQ0FMTChzeXNfcmVuYW1lYXQpCiAvKiAzMzAgKi8JQ0FMTChzeXNfbGlua2F0KQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0va2VybmVsL2hlYWQtY29tbW9uLlMgYi9hcmNoL2FybS9rZXJuZWwvaGVhZC1jb21tb24uUwppbmRleCAwMjRhOWNmLi41MGY2NjdmIDEwMDY0NAotLS0gYS9hcmNoL2FybS9rZXJuZWwvaGVhZC1jb21tb24uUworKysgYi9hcmNoL2FybS9rZXJuZWwvaGVhZC1jb21tb24uUwpAQCAtMTEsNiArMTEsOSBAQAogICoKICAqLwogCisjZGVmaW5lIEFUQUdfQ09SRSAweDU0NDEwMDAxCisjZGVmaW5lIEFUQUdfQ09SRV9TSVpFICgoMio0ICsgMyo0KSA+PiAyKQorCiAJLnR5cGUJX19zd2l0Y2hfZGF0YSwgJW9iamVjdAogX19zd2l0Y2hfZGF0YToKIAkubG9uZwlfX21tYXBfc3dpdGNoZWQKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2tlcm5lbC9oZWFkLlMgYi9hcmNoL2FybS9rZXJuZWwvaGVhZC5TCmluZGV4IDc4OThjYmMuLmJmZjRjNmUgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2tlcm5lbC9oZWFkLlMKKysrIGIvYXJjaC9hcm0va2VybmVsL2hlYWQuUwpAQCAtMjksOSArMjksNiBAQAogI2RlZmluZSBLRVJORUxfUkFNX1ZBRERSCShQQUdFX09GRlNFVCArIFRFWFRfT0ZGU0VUKQogI2RlZmluZSBLRVJORUxfUkFNX1BBRERSCShQSFlTX09GRlNFVCArIFRFWFRfT0ZGU0VUKQogCi0jZGVmaW5lIEFUQUdfQ09SRSAweDU0NDEwMDAxCi0jZGVmaW5lIEFUQUdfQ09SRV9TSVpFICgoMio0ICsgMyo0KSA+PiAyKQotCiAKIC8qCiAgKiBzd2FwcGVyX3BnX2RpciBpcyB0aGUgdmlydHVhbCBhZGRyZXNzIG9mIHRoZSBpbml0aWFsIHBhZ2UgdGFibGUuCmRpZmYgLS1naXQgYS9hcmNoL2FybS9rZXJuZWwva3Byb2Jlcy5jIGIvYXJjaC9hcm0va2VybmVsL2twcm9iZXMuYwppbmRleCBhMjJhOThjLi4xM2UzNzFhIDEwMDY0NAotLS0gYS9hcmNoL2FybS9rZXJuZWwva3Byb2Jlcy5jCisrKyBiL2FyY2gvYXJtL2tlcm5lbC9rcHJvYmVzLmMKQEAgLTQzMSw2ICs0MzEsMTEgQEAKIAlyZXR1cm4gMDsKIH0KIAoraW50IF9fa3Byb2JlcyBhcmNoX3RyYW1wb2xpbmVfa3Byb2JlKHN0cnVjdCBrcHJvYmUgKnApCit7CisJcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBzdHJ1Y3QgdW5kZWZfaG9vayBrcHJvYmVzX2JyZWFrX2hvb2sgPSB7CiAJLmluc3RyX21hc2sJPSAweGZmZmZmZmZmLAogCS5pbnN0cl92YWwJPSBLUFJPQkVfQlJFQUtQT0lOVF9JTlNUUlVDVElPTiwKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2tlcm5lbC9zaWduYWwuYyBiL2FyY2gvYXJtL2tlcm5lbC9zaWduYWwuYwppbmRleCA1NGNkZjFhLi5lZjJmODZhIDEwMDY0NAotLS0gYS9hcmNoL2FybS9rZXJuZWwvc2lnbmFsLmMKKysrIGIvYXJjaC9hcm0va2VybmVsL3NpZ25hbC5jCkBAIC0yNiw4ICsyNiw4IEBACiAvKgogICogRm9yIEFSTSBzeXNjYWxscywgd2UgZW5jb2RlIHRoZSBzeXNjYWxsIG51bWJlciBpbnRvIHRoZSBpbnN0cnVjdGlvbi4KICAqLwotI2RlZmluZSBTV0lfU1lTX1NJR1JFVFVSTgkoMHhlZjAwMDAwMHwoX19OUl9zaWdyZXR1cm4pKQotI2RlZmluZSBTV0lfU1lTX1JUX1NJR1JFVFVSTgkoMHhlZjAwMDAwMHwoX19OUl9ydF9zaWdyZXR1cm4pKQorI2RlZmluZSBTV0lfU1lTX1NJR1JFVFVSTgkoMHhlZjAwMDAwMHwoX19OUl9zaWdyZXR1cm4pfChfX05SX09BQklfU1lTQ0FMTF9CQVNFKSkKKyNkZWZpbmUgU1dJX1NZU19SVF9TSUdSRVRVUk4JKDB4ZWYwMDAwMDB8KF9fTlJfcnRfc2lncmV0dXJuKXwoX19OUl9PQUJJX1NZU0NBTExfQkFTRSkpCiAKIC8qCiAgKiBXaXRoIEVBQkksIHRoZSBzeXNjYWxsIG51bWJlciBoYXMgdG8gYmUgbG9hZGVkIGludG8gcjcuCmRpZmYgLS1naXQgYS9hcmNoL2FybS9rZXJuZWwvc3lzX29hYmktY29tcGF0LmMgYi9hcmNoL2FybS9rZXJuZWwvc3lzX29hYmktY29tcGF0LmMKaW5kZXggZThiOTgwNC4uOTZhYjVmNSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0va2VybmVsL3N5c19vYWJpLWNvbXBhdC5jCisrKyBiL2FyY2gvYXJtL2tlcm5lbC9zeXNfb2FiaS1jb21wYXQuYwpAQCAtMjUsNiArMjUsNyBAQAogICogc3lzX3N0YXQ2NDoKICAqIHN5c19sc3RhdDY0OgogICogc3lzX2ZzdGF0NjQ6CisgKiBzeXNfZnN0YXRhdDY0OgogICoKICAqICAgc3RydWN0IHN0YXQ2NCBoYXMgZGlmZmVyZW50IHNpemVzIGFuZCBzb21lIG1lbWJlcnMgYXJlIHNoaWZ0ZWQKICAqICAgQ29tcGF0aWJpbGl0eSB3cmFwcGVycyBhcmUgbmVlZGVkIGZvciB0aGVtIGFuZCBwcm92aWRlZCBiZWxvdy4KQEAgLTE2OSw2ICsxNzAsMjkgQEAKIAlyZXR1cm4gZXJyb3I7CiB9CiAKK2FzbWxpbmthZ2UgbG9uZyBzeXNfb2FiaV9mc3RhdGF0NjQoaW50IGRmZCwKKwkJCQkgICBjaGFyIF9fdXNlciAqZmlsZW5hbWUsCisJCQkJICAgc3RydWN0IG9sZGFiaV9zdGF0NjQgIF9fdXNlciAqc3RhdGJ1ZiwKKwkJCQkgICBpbnQgZmxhZykKK3sKKwlzdHJ1Y3Qga3N0YXQgc3RhdDsKKwlpbnQgZXJyb3IgPSAtRUlOVkFMOworCisJaWYgKChmbGFnICYgfkFUX1NZTUxJTktfTk9GT0xMT1cpICE9IDApCisJCWdvdG8gb3V0OworCisJaWYgKGZsYWcgJiBBVF9TWU1MSU5LX05PRk9MTE9XKQorCQllcnJvciA9IHZmc19sc3RhdF9mZChkZmQsIGZpbGVuYW1lLCAmc3RhdCk7CisJZWxzZQorCQllcnJvciA9IHZmc19zdGF0X2ZkKGRmZCwgZmlsZW5hbWUsICZzdGF0KTsKKworCWlmICghZXJyb3IpCisJZXJyb3IgPSBjcF9vbGRhYmlfc3RhdDY0KCZzdGF0LCBzdGF0YnVmKTsKKworb3V0OgorCXJldHVybiBlcnJvcjsKK30KKwogc3RydWN0IG9hYmlfZmxvY2s2NCB7CiAJc2hvcnQJbF90eXBlOwogCXNob3J0CWxfd2hlbmNlOwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1hdDkxL2JvYXJkLXNhbTkyNjNlay5jIGIvYXJjaC9hcm0vbWFjaC1hdDkxL2JvYXJkLXNhbTkyNjNlay5jCmluZGV4IDM4MzEzYWIuLmJmMTAzYjIgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtYXQ5MS9ib2FyZC1zYW05MjYzZWsuYworKysgYi9hcmNoL2FybS9tYWNoLWF0OTEvYm9hcmQtc2FtOTI2M2VrLmMKQEAgLTI0NSwxMCArMjQ1LDcgQEAKIAogc3RhdGljIHZvaWQgYXQ5MV9sY2RjX3Bvd2VyX2NvbnRyb2woaW50IG9uKQogewotCWlmIChvbikKLQkJYXQ5MV9zZXRfZ3Bpb192YWx1ZShBVDkxX1BJTl9QRDEyLCAwKTsJLyogcG93ZXIgdXAgKi8KLQllbHNlCi0JCWF0OTFfc2V0X2dwaW9fdmFsdWUoQVQ5MV9QSU5fUEQxMiwgMSk7CS8qIHBvd2VyIGRvd24gKi8KKwlhdDkxX3NldF9ncGlvX3ZhbHVlKEFUOTFfUElOX1BBMzAsIG9uKTsKIH0KIAogLyogRHJpdmVyIGRhdGFzICovCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWF0OTEvZ3Bpby5jIGIvYXJjaC9hcm0vbWFjaC1hdDkxL2dwaW8uYwppbmRleCBmNjI5YzJiLi5lZTQ5NjRhIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLWF0OTEvZ3Bpby5jCisrKyBiL2FyY2gvYXJtL21hY2gtYXQ5MS9ncGlvLmMKQEAgLTQ5MCw2ICs0OTAsMTEgQEAKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAKKy8qIFRoaXMgbG9jayBjbGFzcyB0ZWxscyBsb2NrZGVwIHRoYXQgR1BJTyBpcnFzIGFyZSBpbiBhIGRpZmZlcmVudAorICogY2F0ZWdvcnkgdGhhbiB0aGVpciBwYXJlbnRzLCBzbyBpdCB3b24ndCByZXBvcnQgZmFsc2UgcmVjdXJzaW9uLgorICovCitzdGF0aWMgc3RydWN0IGxvY2tfY2xhc3Nfa2V5IGdwaW9fbG9ja19jbGFzczsKKwogLyoKICAqIENhbGxlZCBmcm9tIHRoZSBwcm9jZXNzb3Itc3BlY2lmaWMgaW5pdCB0byBlbmFibGUgR1BJTyBpbnRlcnJ1cHQgc3VwcG9ydC4KICAqLwpAQCAtNTEwLDYgKzUxNSw4IEBACiAJCV9fcmF3X3dyaXRlbCh+MCwgdGhpcy0+cmVnYmFzZSArIFBJT19JRFIpOwogCiAJCWZvciAoaSA9IDAsIHBpbiA9IHRoaXMtPmNoaXBiYXNlOyBpIDwgMzI7IGkrKywgcGluKyspIHsKKwkJCWxvY2tkZXBfc2V0X2NsYXNzKCZpcnFfZGVzY1twaW5dLmxvY2ssICZncGlvX2xvY2tfY2xhc3MpOworCiAJCQkvKgogCQkJICogQ2FuIHVzZSB0aGUgInNpbXBsZSIgYW5kIG5vdCAiZWRnZSIgaGFuZGxlciBzaW5jZSBpdCdzCiAJCQkgKiBzaG9ydGVyLCBhbmQgdGhlIEFJQyBoYW5kbGVzIGludGVycnVwdHMgc2FuZWx5LgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1oNzIweC9jb21tb24uYyBiL2FyY2gvYXJtL21hY2gtaDcyMHgvY29tbW9uLmMKaW5kZXggN2YzMTgxNi4uNDUxNDRhZCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1oNzIweC9jb21tb24uYworKysgYi9hcmNoL2FybS9tYWNoLWg3MjB4L2NvbW1vbi5jCkBAIC0xMDMsNyArMTAzLDcgQEAKIGg3MjB4X2dwaW9faGFuZGxlcih1bnNpZ25lZCBpbnQgbWFzaywgdW5zaWduZWQgaW50IGlycSwKICAgICAgICAgICAgICAgICAgc3RydWN0IGlycV9kZXNjICpkZXNjKQogewotCUlSUURCRygiJXMgaXJxOiAlZFxuIixfX0ZVTkNUSU9OX18saXJxKTsKKwlJUlFEQkcoIiVzIGlycTogJWRcbiIsIF9fZnVuY19fLCBpcnEpOwogCWRlc2MgPSBpcnFfZGVzYyArIGlycTsKIAl3aGlsZSAobWFzaykgewogCQlpZiAobWFzayAmIDEpIHsKQEAgLTEyMyw3ICsxMjMsNyBAQAogCiAJbWFzayA9IENQVV9SRUcoR1BJT19BX1ZJUlQsR1BJT19TVEFUKTsKIAlpcnEgPSBJUlFfQ0hBSU5FRF9HUElPQSgwKTsKLQlJUlFEQkcoIiVzIG1hc2s6IDB4JTA4eCBpcnE6ICVkXG4iLF9fRlVOQ1RJT05fXyxtYXNrLGlycSk7CisJSVJRREJHKCIlcyBtYXNrOiAweCUwOHggaXJxOiAlZFxuIiwgX19mdW5jX18sIG1hc2ssaXJxKTsKIAloNzIweF9ncGlvX2hhbmRsZXIobWFzaywgaXJxLCBkZXNjKTsKIH0KIApAQCAtMTMzLDcgKzEzMyw3IEBACiAJdW5zaWduZWQgaW50IG1hc2ssIGlycTsKIAltYXNrID0gQ1BVX1JFRyhHUElPX0JfVklSVCxHUElPX1NUQVQpOwogCWlycSA9IElSUV9DSEFJTkVEX0dQSU9CKDApOwotCUlSUURCRygiJXMgbWFzazogMHglMDh4IGlycTogJWRcbiIsX19GVU5DVElPTl9fLG1hc2ssaXJxKTsKKwlJUlFEQkcoIiVzIG1hc2s6IDB4JTA4eCBpcnE6ICVkXG4iLCBfX2Z1bmNfXywgbWFzayxpcnEpOwogCWg3MjB4X2dwaW9faGFuZGxlcihtYXNrLCBpcnEsIGRlc2MpOwogfQogCkBAIC0xNDQsNyArMTQ0LDcgQEAKIAogCW1hc2sgPSBDUFVfUkVHKEdQSU9fQ19WSVJULEdQSU9fU1RBVCk7CiAJaXJxID0gSVJRX0NIQUlORURfR1BJT0MoMCk7Ci0JSVJRREJHKCIlcyBtYXNrOiAweCUwOHggaXJxOiAlZFxuIixfX0ZVTkNUSU9OX18sbWFzayxpcnEpOworCUlSUURCRygiJXMgbWFzazogMHglMDh4IGlycTogJWRcbiIsIF9fZnVuY19fLCBtYXNrLGlycSk7CiAJaDcyMHhfZ3Bpb19oYW5kbGVyKG1hc2ssIGlycSwgZGVzYyk7CiB9CiAKQEAgLTE1NSw3ICsxNTUsNyBAQAogCiAJbWFzayA9IENQVV9SRUcoR1BJT19EX1ZJUlQsR1BJT19TVEFUKTsKIAlpcnEgPSBJUlFfQ0hBSU5FRF9HUElPRCgwKTsKLQlJUlFEQkcoIiVzIG1hc2s6IDB4JTA4eCBpcnE6ICVkXG4iLF9fRlVOQ1RJT05fXyxtYXNrLGlycSk7CisJSVJRREJHKCIlcyBtYXNrOiAweCUwOHggaXJxOiAlZFxuIiwgX19mdW5jX18sIG1hc2ssaXJxKTsKIAloNzIweF9ncGlvX2hhbmRsZXIobWFzaywgaXJxLCBkZXNjKTsKIH0KIApAQCAtMTY3LDcgKzE2Nyw3IEBACiAKIAltYXNrID0gQ1BVX1JFRyhHUElPX0VfVklSVCxHUElPX1NUQVQpOwogCWlycSA9IElSUV9DSEFJTkVEX0dQSU9FKDApOwotCUlSUURCRygiJXMgbWFzazogMHglMDh4IGlycTogJWRcbiIsX19GVU5DVElPTl9fLG1hc2ssaXJxKTsKKwlJUlFEQkcoIiVzIG1hc2s6IDB4JTA4eCBpcnE6ICVkXG4iLCBfX2Z1bmNfXywgbWFzayxpcnEpOwogCWg3MjB4X2dwaW9faGFuZGxlcihtYXNrLCBpcnEsIGRlc2MpOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWlteC9kbWEuYyBiL2FyY2gvYXJtL21hY2gtaW14L2RtYS5jCmluZGV4IGJjNmZiMDIuLmE1OWZmMjkgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtaW14L2RtYS5jCisrKyBiL2FyY2gvYXJtL21hY2gtaW14L2RtYS5jCkBAIC01NCw3ICs1NCw3IEBACiAKIAlpZiAoIWlteGRtYS0+bmFtZSkgewogCQlwcmludGsoS0VSTl9DUklUICIlczogY2FsbGVkIGZvciAgbm90IGFsbG9jYXRlZCBjaGFubmVsICVkXG4iLAotCQkgICAgICAgX19GVU5DVElPTl9fLCBkbWFfY2gpOworCQkgICAgICAgX19mdW5jX18sIGRtYV9jaCk7CiAJCXJldHVybiAwOwogCX0KIApAQCAtMjg4LDcgKzI4OCw3IEBACiAKIAlpZiAoIWlteGRtYS0+bmFtZSkgewogCQlwcmludGsoS0VSTl9DUklUICIlczogY2FsbGVkIGZvciAgbm90IGFsbG9jYXRlZCBjaGFubmVsICVkXG4iLAotCQkgICAgICAgX19GVU5DVElPTl9fLCBkbWFfY2gpOworCQkgICAgICAgX19mdW5jX18sIGRtYV9jaCk7CiAJCXJldHVybiAtRU5PREVWOwogCX0KIApAQCAtMzIxLDcgKzMyMSw3IEBACiAKIAlpZiAoIWlteGRtYS0+bmFtZSkgewogCQlwcmludGsoS0VSTl9DUklUICIlczogY2FsbGVkIGZvciAgbm90IGFsbG9jYXRlZCBjaGFubmVsICVkXG4iLAotCQkgICAgICAgX19GVU5DVElPTl9fLCBkbWFfY2gpOworCQkgICAgICAgX19mdW5jX18sIGRtYV9jaCk7CiAJCXJldHVybjsKIAl9CiAKQEAgLTM2NSw3ICszNjUsNyBAQAogCiAJaWYgKGRtYV9jaCA+PSBJTVhfRE1BX0NIQU5ORUxTKSB7CiAJCXByaW50ayhLRVJOX0NSSVQgIiVzOiBjYWxsZWQgZm9yICBub24tZXhpc3RlZCBjaGFubmVsICVkXG4iLAotCQkgICAgICAgX19GVU5DVElPTl9fLCBkbWFfY2gpOworCQkgICAgICAgX19mdW5jX18sIGRtYV9jaCk7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIApAQCAtMzk2LDcgKzM5Niw3IEBACiAJaWYgKCFpbXhkbWEtPm5hbWUpIHsKIAkJcHJpbnRrKEtFUk5fQ1JJVAogCQkgICAgICAgIiVzOiB0cnlpbmcgdG8gZnJlZSBjaGFubmVsICVkIHdoaWNoIGlzIGFscmVhZHkgZnJlZWRcbiIsCi0JCSAgICAgICBfX0ZVTkNUSU9OX18sIGRtYV9jaCk7CisJCSAgICAgICBfX2Z1bmNfXywgZG1hX2NoKTsKIAkJcmV0dXJuOwogCX0KIApAQCAtNDU2LDcgKzQ1Niw3IEBACiAJCX0KIAl9CiAKLQlwcmludGsoS0VSTl9FUlIgIiVzOiBubyBmcmVlIERNQSBjaGFubmVsIGZvdW5kXG4iLCBfX0ZVTkNUSU9OX18pOworCXByaW50ayhLRVJOX0VSUiAiJXM6IG5vIGZyZWUgRE1BIGNoYW5uZWwgZm91bmRcbiIsIF9fZnVuY19fKTsKIAogCXJldHVybiAtRU5PREVWOwogfQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1pbXgvaXJxLmMgYi9hcmNoL2FybS9tYWNoLWlteC9pcnEuYwppbmRleCBhNzQ2NWRiLi5lNjY5NWM0IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLWlteC9pcnEuYworKysgYi9hcmNoL2FybS9tYWNoLWlteC9pcnEuYwpAQCAtMTYwLDIxICsxNjAsMjEgQEAKIHN0YXRpYyB2b2lkCiBpbXhfZ3Bpb19hY2tfaXJxKHVuc2lnbmVkIGludCBpcnEpCiB7Ci0JREVCVUdfSVJRKCIlczogaXJxICVkXG4iLCBfX0ZVTkNUSU9OX18sIGlycSk7CisJREVCVUdfSVJRKCIlczogaXJxICVkXG4iLCBfX2Z1bmNfXywgaXJxKTsKIAlJU1IoSVJRX1RPX1JFRyhpcnEpKSA9IDEgPDwgKChpcnEgLSBJUlFfR1BJT0EoMCkpICUgMzIpOwogfQogCiBzdGF0aWMgdm9pZAogaW14X2dwaW9fbWFza19pcnEodW5zaWduZWQgaW50IGlycSkKIHsKLQlERUJVR19JUlEoIiVzOiBpcnEgJWRcbiIsIF9fRlVOQ1RJT05fXywgaXJxKTsKKwlERUJVR19JUlEoIiVzOiBpcnEgJWRcbiIsIF9fZnVuY19fLCBpcnEpOwogCUlNUihJUlFfVE9fUkVHKGlycSkpICY9IH4oIDEgPDwgKChpcnEgLSBJUlFfR1BJT0EoMCkpICUgMzIpKTsKIH0KIAogc3RhdGljIHZvaWQKIGlteF9ncGlvX3VubWFza19pcnEodW5zaWduZWQgaW50IGlycSkKIHsKLQlERUJVR19JUlEoIiVzOiBpcnEgJWRcbiIsIF9fRlVOQ1RJT05fXywgaXJxKTsKKwlERUJVR19JUlEoIiVzOiBpcnEgJWRcbiIsIF9fZnVuY19fLCBpcnEpOwogCUlNUihJUlFfVE9fUkVHKGlycSkpIHw9IDEgPDwgKChpcnEgLSBJUlFfR1BJT0EoMCkpICUgMzIpOwogfQogCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWlvcDEzeHgvaXE4MTM0MG1jLmMgYi9hcmNoL2FybS9tYWNoLWlvcDEzeHgvaXE4MTM0MG1jLmMKaW5kZXggMjY4YThkOC4uNzdiMjRjZCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1pb3AxM3h4L2lxODEzNDBtYy5jCisrKyBiL2FyY2gvYXJtL21hY2gtaW9wMTN4eC9pcTgxMzQwbWMuYwpAQCAtODEsNyArODEsNyBAQAogc3RhdGljIHZvaWQgX19pbml0IGlxODEzNDBtY190aW1lcl9pbml0KHZvaWQpCiB7CiAJdW5zaWduZWQgbG9uZyBidXNfZnJlcSA9IGlvcDEzeHhfY29yZV9mcmVxKCkgLyBpb3AxM3h4X3hzaV9idXNfcmF0aW8oKTsKLQlwcmludGsoS0VSTl9ERUJVRyAiJXM6IGJ1cyBmcmVxdWVuY3k6ICVsdVxuIiwgX19GVU5DVElPTl9fLCBidXNfZnJlcSk7CisJcHJpbnRrKEtFUk5fREVCVUcgIiVzOiBidXMgZnJlcXVlbmN5OiAlbHVcbiIsIF9fZnVuY19fLCBidXNfZnJlcSk7CiAJaW9wX2luaXRfdGltZShidXNfZnJlcSk7CiB9CiAKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtaW9wMTN4eC9pcTgxMzQwc2MuYyBiL2FyY2gvYXJtL21hY2gtaW9wMTN4eC9pcTgxMzQwc2MuYwppbmRleCBhNTFmZmQyLi5lODUyMmIzIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLWlvcDEzeHgvaXE4MTM0MHNjLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1pb3AxM3h4L2lxODEzNDBzYy5jCkBAIC04Myw3ICs4Myw3IEBACiBzdGF0aWMgdm9pZCBfX2luaXQgaXE4MTM0MHNjX3RpbWVyX2luaXQodm9pZCkKIHsKIAl1bnNpZ25lZCBsb25nIGJ1c19mcmVxID0gaW9wMTN4eF9jb3JlX2ZyZXEoKSAvIGlvcDEzeHhfeHNpX2J1c19yYXRpbygpOwotCXByaW50ayhLRVJOX0RFQlVHICIlczogYnVzIGZyZXF1ZW5jeTogJWx1XG4iLCBfX0ZVTkNUSU9OX18sIGJ1c19mcmVxKTsKKwlwcmludGsoS0VSTl9ERUJVRyAiJXM6IGJ1cyBmcmVxdWVuY3k6ICVsdVxuIiwgX19mdW5jX18sIGJ1c19mcmVxKTsKIAlpb3BfaW5pdF90aW1lKGJ1c19mcmVxKTsKIH0KIApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1pb3AxM3h4L3BjaS5jIGIvYXJjaC9hcm0vbWFjaC1pb3AxM3h4L3BjaS5jCmluZGV4IDk5ZDk0Y2IuLjc4MjVjMWEgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtaW9wMTN4eC9wY2kuYworKysgYi9hcmNoL2FybS9tYWNoLWlvcDEzeHgvcGNpLmMKQEAgLTk0LDEzICs5NCwxMyBAQAogCQkJCQksIDAsIGlvcDEzeHhfYXR1eF9tZW1fc2l6ZSwgTVRfREVWSUNFKTsKIAkJCQkJaWYgKCFpb3AxM3h4X2F0dXhfbWVtX2Jhc2UpIHsKIAkJCQkJCXByaW50aygiJXM6IGF0dXggYWxsb2NhdGlvbiAiCi0JCQkJCQkgICAgICAgImZhaWxlZFxuIiwgX19GVU5DVElPTl9fKTsKKwkJCQkJCSAgICAgICAiZmFpbGVkXG4iLCBfX2Z1bmNfXyk7CiAJCQkJCQlCVUcoKTsKIAkJCQkJfQogCQkJCX0gZWxzZQogCQkJCQlpb3AxM3h4X2F0dXhfbWVtX3NpemUgPSAwOwogCQkJCVBSSU5USygiJXM6IGF0dTogJWQgYnVzX3NpemU6ICVkIG1lbV9iYXNlOiAleFxuIiwKLQkJCQlfX0ZVTkNUSU9OX18sIGF0dSwgaW9wMTN4eF9hdHV4X21lbV9zaXplLAorCQkJCV9fZnVuY19fLCBhdHUsIGlvcDEzeHhfYXR1eF9tZW1fc2l6ZSwKIAkJCQlpb3AxM3h4X2F0dXhfbWVtX2Jhc2UpOwogCQkJCWJyZWFrOwogCQkJY2FzZSAxOgpAQCAtMTIwLDEzICsxMjAsMTMgQEAKIAkJCQkJLCAwLCBpb3AxM3h4X2F0dWVfbWVtX3NpemUsIE1UX0RFVklDRSk7CiAJCQkJCWlmICghaW9wMTN4eF9hdHVlX21lbV9iYXNlKSB7CiAJCQkJCQlwcmludGsoIiVzOiBhdHVlIGFsbG9jYXRpb24gIgotCQkJCQkJICAgICAgICJmYWlsZWRcbiIsIF9fRlVOQ1RJT05fXyk7CisJCQkJCQkgICAgICAgImZhaWxlZFxuIiwgX19mdW5jX18pOwogCQkJCQkJQlVHKCk7CiAJCQkJCX0KIAkJCQl9IGVsc2UKIAkJCQkJaW9wMTN4eF9hdHVlX21lbV9zaXplID0gMDsKIAkJCQlQUklOVEsoIiVzOiBhdHU6ICVkIGJ1c19zaXplOiAlZCBtZW1fYmFzZTogJXhcbiIsCi0JCQkJX19GVU5DVElPTl9fLCBhdHUsIGlvcDEzeHhfYXR1ZV9tZW1fc2l6ZSwKKwkJCQlfX2Z1bmNfXywgYXR1LCBpb3AxM3h4X2F0dWVfbWVtX3NpemUsCiAJCQkJaW9wMTN4eF9hdHVlX21lbV9iYXNlKTsKIAkJCQlicmVhazsKIAkJCX0KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtaW9wMTN4eC9zZXR1cC5jIGIvYXJjaC9hcm0vbWFjaC1pb3AxM3h4L3NldHVwLmMKaW5kZXggYmZlMGM4Ny4uMjQ2ZjZkNCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1pb3AxM3h4L3NldHVwLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1pb3AxM3h4L3NldHVwLmMKQEAgLTUxOSw3ICs1MTksNyBAQAogCWlmIChpcTgxMzR4X2ZsYXNoX3Jlc291cmNlLmVuZCA+IGlxODEzNHhfZmxhc2hfcmVzb3VyY2Uuc3RhcnQpCiAJCWlvcDEzeHhfZGV2aWNlc1twbGF0X2lkeCsrXSA9ICZpcTgxMzR4X2ZsYXNoOwogCWVsc2UKLQkJcHJpbnRrKEtFUk5fRVJSICIlczogRmFpbGVkIHRvIHByb2JlIGZsYXNoIHNpemVcbiIsIF9fRlVOQ1RJT05fXyk7CisJCXByaW50ayhLRVJOX0VSUiAiJXM6IEZhaWxlZCB0byBwcm9iZSBmbGFzaCBzaXplXG4iLCBfX2Z1bmNfXyk7CiAjZW5kaWYKIAogCXBsYXRmb3JtX2FkZF9kZXZpY2VzKGlvcDEzeHhfZGV2aWNlcywgcGxhdF9pZHgpOwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1pb3AzMngvZ2xhbnRhbmsuYyBiL2FyY2gvYXJtL21hY2gtaW9wMzJ4L2dsYW50YW5rLmMKaW5kZXggNzRjNjVjZS4uZDJhN2IwNCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1pb3AzMngvZ2xhbnRhbmsuYworKysgYi9hcmNoL2FybS9tYWNoLWlvcDMyeC9nbGFudGFuay5jCkBAIC0xNCw4ICsxNCwxMCBAQAogCiAjaW5jbHVkZSA8bGludXgvbW0uaD4KICNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgvZjc1Mzc1cy5oPgogI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgogI2luY2x1ZGUgPGxpbnV4L3BjaS5oPgorI2luY2x1ZGUgPGxpbnV4L3BtLmg+CiAjaW5jbHVkZSA8bGludXgvc3RyaW5nLmg+CiAjaW5jbHVkZSA8bGludXgvc2xhYi5oPgogI2luY2x1ZGUgPGxpbnV4L3NlcmlhbF9jb3JlLmg+CkBAIC0xNjcsMTEgKzE2OSwyMSBAQAogCS5yZXNvdXJjZQk9ICZnbGFudGFua191YXJ0X3Jlc291cmNlLAogfTsKIAorc3RhdGljIHN0cnVjdCBmNzUzNzVzX3BsYXRmb3JtX2RhdGEgZ2xhbnRhbmtfZjc1Mzc1cyA9IHsKKwkucHdtCQk9IHsgMjU1LCAyNTUgfSwKKwkucHdtX2VuYWJsZQk9IHsgMCwgMCB9LAorfTsKKwogc3RhdGljIHN0cnVjdCBpMmNfYm9hcmRfaW5mbyBfX2luaXRkYXRhIGdsYW50YW5rX2kyY19kZXZpY2VzW10gPSB7CiAJewogCQlJMkNfQk9BUkRfSU5GTygicnRjLXJzNWMzNzIiLCAweDMyKSwKIAkJLnR5cGUgPSAicnM1YzM3MmEiLAogCX0sCisJeworCQlJMkNfQk9BUkRfSU5GTygiZjc1Mzc1IiwgMHgyZSksCisJCS50eXBlID0gImY3NTM3NSIsCisJCS5wbGF0Zm9ybV9kYXRhID0gJmdsYW50YW5rX2Y3NTM3NXMsCisJfSwKIH07CiAKIHN0YXRpYyB2b2lkIGdsYW50YW5rX3Bvd2VyX29mZih2b2lkKQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1peHA0eHgvY29tbW9uLXBjaS5jIGIvYXJjaC9hcm0vbWFjaC1peHA0eHgvY29tbW9uLXBjaS5jCmluZGV4IGJmMDQxMjEuLjY0YmUzNDEgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtaXhwNHh4L2NvbW1vbi1wY2kuYworKysgYi9hcmNoL2FybS9tYWNoLWl4cDR4eC9jb21tb24tcGNpLmMKQEAgLTg3LDcgKzg3LDcgQEAKIAlpZiAoaXNyICYgUENJX0lTUl9QRkUpIHsKIAkJLyogbWFrZSBzdXJlIHRoZSBNYXN0ZXIgQWJvcnQgYml0IGlzIHJlc2V0ICovICAgIAogCQkqUENJX0lTUiA9IFBDSV9JU1JfUEZFOwotCQlwcl9kZWJ1ZygiJXMgZmFpbGVkXG4iLCBfX0ZVTkNUSU9OX18pOworCQlwcl9kZWJ1ZygiJXMgZmFpbGVkXG4iLCBfX2Z1bmNfXyk7CiAJCXJldHVybiAxOwogCX0KIApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1peHA0eHgvZ3R3eDU3MTUtcGNpLmMgYi9hcmNoL2FybS9tYWNoLWl4cDR4eC9ndHd4NTcxNS1wY2kuYwppbmRleCAwZDVhNDI0Li40OWRlYzc4IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLWl4cDR4eC9ndHd4NTcxNS1wY2kuYworKysgYi9hcmNoL2FybS9tYWNoLWl4cDR4eC9ndHd4NTcxNS1wY2kuYwpAQCAtNjUsNyArNjUsNyBAQAogCWVsc2UKIAkJcmMgPSBndHd4NTcxNV9pcnFtYXBbc2xvdF1bcGluLTFdOwogCi0JcHJpbnRrKCIlczogTWFwcGVkIHNsb3QgJWQgcGluICVkIHRvIElSUSAlZFxuIiwgX19GVU5DVElPTl9fLHNsb3QsIHBpbiwgcmMpOworCXByaW50aygiJXM6IE1hcHBlZCBzbG90ICVkIHBpbiAlZCB0byBJUlEgJWRcbiIsIF9fZnVuY19fLCBzbG90LCBwaW4sIHJjKTsKIAlyZXR1cm4ocmMpOwogfQogCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW5ldHgvZ2VuZXJpYy5jIGIvYXJjaC9hcm0vbWFjaC1uZXR4L2dlbmVyaWMuYwppbmRleCBiOWNhOGY5Li5mZDc1MzdmIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLW5ldHgvZ2VuZXJpYy5jCisrKyBiL2FyY2gvYXJtL21hY2gtbmV0eC9nZW5lcmljLmMKQEAgLTEzMyw3ICsxMzMsNyBAQAogCXZhbCAmPSB+KCgxIDw8IDI0KSA8PCBpcnEpOwogCXdyaXRlbCh2YWwsIE5FVFhfRFBNQVNfSU5UX0VOKTsKIAotCURFQlVHX0lSUSgiJXM6IGlycSAlZFxuIiwgX19GVU5DVElPTl9fLCBfaXJxKTsKKwlERUJVR19JUlEoIiVzOiBpcnEgJWRcbiIsIF9fZnVuY19fLCBfaXJxKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTE0NSw3ICsxNDUsNyBAQAogCXZhbCA9IHJlYWRsKE5FVFhfRFBNQVNfSU5UX0VOKTsKIAl2YWwgJj0gfigoMSA8PCAyNCkgPDwgaXJxKTsKIAl3cml0ZWwodmFsLCBORVRYX0RQTUFTX0lOVF9FTik7Ci0JREVCVUdfSVJRKCIlczogaXJxICVkXG4iLCBfX0ZVTkNUSU9OX18sIF9pcnEpOworCURFQlVHX0lSUSgiJXM6IGlycSAlZFxuIiwgX19mdW5jX18sIF9pcnEpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMTU3LDcgKzE1Nyw3IEBACiAJdmFsID0gcmVhZGwoTkVUWF9EUE1BU19JTlRfRU4pOwogCXZhbCB8PSAoMSA8PCAyNCkgPDwgaXJxOwogCXdyaXRlbCh2YWwsIE5FVFhfRFBNQVNfSU5UX0VOKTsKLQlERUJVR19JUlEoIiVzOiBpcnEgJWRcbiIsIF9fRlVOQ1RJT05fXywgX2lycSk7CisJREVCVUdfSVJRKCIlczogaXJxICVkXG4iLCBfX2Z1bmNfXywgX2lycSk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgaXJxX2NoaXAgbmV0eF9oaWZfY2hpcCA9IHsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtbnM5eHh4L2dwaW8uYyBiL2FyY2gvYXJtL21hY2gtbnM5eHh4L2dwaW8uYwppbmRleCBiMjIzMDIxLi41Mjg2ZTlmIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLW5zOXh4eC9ncGlvLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1uczl4eHgvZ3Bpby5jCkBAIC0zMSw3ICszMSw3IEBACiBzdGF0aWMgc3BpbmxvY2tfdCBncGlvX2xvY2sgPSBfX1NQSU5fTE9DS19VTkxPQ0tFRChncGlvX2xvY2spOwogCiAvKiBvbmx5IGFjY2VzcyBncGlvcmVzIHdpdGggYXRvbWljIG9wcyAqLwotc3RhdGljIERFQ0xBUkVfQklUTUFQKGdwaW9yZXMsIEdQSU9fTUFYKTsKK3N0YXRpYyBERUNMQVJFX0JJVE1BUChncGlvcmVzLCBHUElPX01BWCArIDEpOwogCiBzdGF0aWMgaW5saW5lIGludCBuczl4eHhfdmFsaWRfZ3Bpbyh1bnNpZ25lZCBncGlvKQogewpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1vbWFwMS9ib2FyZC1oMi5jIGIvYXJjaC9hcm0vbWFjaC1vbWFwMS9ib2FyZC1oMi5jCmluZGV4IDA3MDM0NWUuLjUwNzk4NzcgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtb21hcDEvYm9hcmQtaDIuYworKysgYi9hcmNoL2FybS9tYWNoLW9tYXAxL2JvYXJkLWgyLmMKQEAgLTM1MCw2ICszNTAsMTAgQEAKIAogc3RhdGljIHN0cnVjdCBpMmNfYm9hcmRfaW5mbyBfX2luaXRkYXRhIGgyX2kyY19ib2FyZF9pbmZvW10gPSB7CiAJeworCQlJMkNfQk9BUkRfSU5GTygidHBzNjUwMTAiLCAweDQ4KSwKKwkJLnR5cGUgICAgICAgICAgID0gInRwczY1MDEwIiwKKwkJLmlycSAgICAgICAgICAgID0gT01BUF9HUElPX0lSUSg1OCksCisJfSwgewogCQlJMkNfQk9BUkRfSU5GTygiaXNwMTMwMV9vbWFwIiwgMHgyZCksCiAJCS50eXBlCQk9ICJpc3AxMzAxX29tYXAiLAogCQkuaXJxCQk9IE9NQVBfR1BJT19JUlEoMiksCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW9tYXAxL2JvYXJkLWgzLmMgYi9hcmNoL2FybS9tYWNoLW9tYXAxL2JvYXJkLWgzLmMKaW5kZXggNmZjNTE2OC4uYzNlZjFlZSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1vbWFwMS9ib2FyZC1oMy5jCisrKyBiL2FyY2gvYXJtL21hY2gtb21hcDEvYm9hcmQtaDMuYwpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgPGxpbnV4L210ZC9uYW5kLmg+CiAjaW5jbHVkZSA8bGludXgvbXRkL3BhcnRpdGlvbnMuaD4KICNpbmNsdWRlIDxsaW51eC9pbnB1dC5oPgorI2luY2x1ZGUgPGxpbnV4L3NwaS9zcGkuaD4KICNpbmNsdWRlIDxsaW51eC9pMmMvdHBzNjUwMTAuaD4KIAogI2luY2x1ZGUgPGFzbS9zZXR1cC5oPgpAQCAtNTEsNiArNTIsOCBAQAogI2luY2x1ZGUgPGFzbS9hcmNoL21jYnNwLmg+CiAjaW5jbHVkZSA8YXNtL2FyY2gvb21hcC1hbHNhLmg+CiAKKyNkZWZpbmUgSDNfVFNfR1BJTwk0OAorCiBzdGF0aWMgaW50IGgzX2tleW1hcFtdID0gewogCUtFWSgwLCAwLCBLRVlfTEVGVCksCiAJS0VZKDAsIDEsIEtFWV9SSUdIVCksCkBAIC0zNzMsNiArMzc2LDE3IEBACiAJLmlkCQk9IC0xLAogfTsKIAorc3RhdGljIHN0cnVjdCBzcGlfYm9hcmRfaW5mbyBoM19zcGlfYm9hcmRfaW5mb1tdIF9faW5pdGRhdGEgPSB7CisJWzBdID0geworCQkubW9kYWxpYXMJPSAidHNjMjEwMSIsCisJCS5idXNfbnVtCT0gMiwKKwkJLmNoaXBfc2VsZWN0CT0gMCwKKwkJLmlycQkJPSBPTUFQX0dQSU9fSVJRKEgzX1RTX0dQSU8pLAorCQkubWF4X3NwZWVkX2h6CT0gMTYwMDAwMDAsCisJCS8qIC5wbGF0Zm9ybV9kYXRhCT0gJnRzY19wbGF0Zm9ybV9kYXRhLCAqLworCX0sCit9OworCiBzdGF0aWMgc3RydWN0IG9tYXBfbWNic3BfcmVnX2NmZyBtY2JzcF9yZWdzID0gewogCS5zcGNyMiA9IEZSRUUgfCBGUlNUIHwgR1JTVCB8IFhSU1QgfCBYSU5UTSgzKSwKIAkuc3BjcjEgPSBSSU5UTSgzKSB8IFJSU1QsCkBAIC00NTcsNiArNDcxLDE0IEBACiAJeyBPTUFQX1RBR19MQ0QsCQkmaDNfbGNkX2NvbmZpZyB9LAogfTsKIAorc3RhdGljIHN0cnVjdCBpMmNfYm9hcmRfaW5mbyBfX2luaXRkYXRhIGgzX2kyY19ib2FyZF9pbmZvW10gPSB7CisgICAgICAgeworICAgICAgICAgICAgICAgSTJDX0JPQVJEX0lORk8oInRwczY1MDEwIiwgMHg0OCksCisgICAgICAgICAgICAgICAudHlwZSAgICAgICAgICAgPSAidHBzNjUwMTMiLAorICAgICAgICAgICAgICAgLyogLmlycSAgICAgICAgID0gT01BUF9HUElPX0lSUSg/PyksICovCisgICAgICAgfSwKK307CisKIHN0YXRpYyBzdHJ1Y3Qgb21hcF9ncGlvX3N3aXRjaCBoM19ncGlvX3N3aXRjaGVzW10gX19pbml0ZGF0YSA9IHsKIAl7CiAJCS5uYW1lCQkJPSAibW1jX3Nsb3QiLApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1vbWFwMS9wbS5jIGIvYXJjaC9hcm0vbWFjaC1vbWFwMS9wbS5jCmluZGV4IDhlYjVkY2QuLmU2YzY0ZTEgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtb21hcDEvcG0uYworKysgYi9hcmNoL2FybS9tYWNoLW9tYXAxL3BtLmMKQEAgLTcxNyw3ICs3MTcsNyBAQAogI2VuZGlmCiAKICNpZmRlZiBDT05GSUdfT01BUF8zMktfVElNRVIKLQllcnJvciA9IHN5c2ZzX2NyZWF0ZV9maWxlKHBvd2VyX2tvYmosICZzbGVlcF93aGlsZV9pZGxlX2F0dHIpOworCWVycm9yID0gc3lzZnNfY3JlYXRlX2ZpbGUocG93ZXJfa29iaiwgJnNsZWVwX3doaWxlX2lkbGVfYXR0ci5hdHRyKTsKIAlpZiAoZXJyb3IpCiAJCXByaW50ayhLRVJOX0VSUiAic3lzZnNfY3JlYXRlX2ZpbGUgZmFpbGVkOiAlZFxuIiwgZXJyb3IpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW9tYXAxL3RpbWUuYyBiL2FyY2gvYXJtL21hY2gtb21hcDEvdGltZS5jCmluZGV4IDIzNzY1MWUuLmE0ZjhiMjAgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtb21hcDEvdGltZS5jCisrKyBiL2FyY2gvYXJtL21hY2gtb21hcDEvdGltZS5jCkBAIC0xMzIsMTMgKzEzMiwyMCBAQAogCXRpbWVyLT5jbnRsID0gdGltZXJmbGFnczsKIH0KIAorc3RhdGljIGlubGluZSB2b2lkIG9tYXBfbXB1X3RpbWVyX3N0b3AoaW50IG5yKQoreworCXZvbGF0aWxlIG9tYXBfbXB1X3RpbWVyX3JlZ3NfdCogdGltZXIgPSBvbWFwX21wdV90aW1lcl9iYXNlKG5yKTsKKworCXRpbWVyLT5jbnRsICY9IH5NUFVfVElNRVJfU1Q7Cit9CisKIC8qCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIE1QVSB0aW1lciAxIC4uLiBjb3VudCBkb3duIHRvIHplcm8sIGludGVycnVwdCwgcmVsb2FkCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogc3RhdGljIGludCBvbWFwX21wdV9zZXRfbmV4dF9ldmVudCh1bnNpZ25lZCBsb25nIGN5Y2xlcywKLQkJCQkgICAgc3RydWN0IGNsb2NrX2V2ZW50X2RldmljZSAqZXZ0KQorCQkJCSAgIHN0cnVjdCBjbG9ja19ldmVudF9kZXZpY2UgKmV2dCkKIHsKIAlvbWFwX21wdV90aW1lcl9zdGFydCgwLCBjeWNsZXMsIDApOwogCXJldHVybiAwOwpAQCAtMTUyLDYgKzE1OSw3IEBACiAJCW9tYXBfbXB1X3NldF9hdXRvcmVzZXQoMCk7CiAJCWJyZWFrOwogCWNhc2UgQ0xPQ0tfRVZUX01PREVfT05FU0hPVDoKKwkJb21hcF9tcHVfdGltZXJfc3RvcCgwKTsKIAkJb21hcF9tcHVfcmVtb3ZlX2F1dG9yZXNldCgwKTsKIAkJYnJlYWs7CiAJY2FzZSBDTE9DS19FVlRfTU9ERV9VTlVTRUQ6CkBAIC0xNjMsNyArMTcxLDcgQEAKIAogc3RhdGljIHN0cnVjdCBjbG9ja19ldmVudF9kZXZpY2UgY2xvY2tldmVudF9tcHVfdGltZXIxID0gewogCS5uYW1lCQk9ICJtcHVfdGltZXIxIiwKLQkuZmVhdHVyZXMgICAgICAgPSBDTE9DS19FVlRfRkVBVF9QRVJJT0RJQywgQ0xPQ0tfRVZUX0ZFQVRfT05FU0hPVCwKKwkuZmVhdHVyZXMgICAgICAgPSBDTE9DS19FVlRfRkVBVF9QRVJJT0RJQyB8IENMT0NLX0VWVF9GRUFUX09ORVNIT1QsCiAJLnNoaWZ0CQk9IDMyLAogCS5zZXRfbmV4dF9ldmVudAk9IG9tYXBfbXB1X3NldF9uZXh0X2V2ZW50LAogCS5zZXRfbW9kZQk9IG9tYXBfbXB1X3NldF9tb2RlLApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1vbWFwMi9pby5jIGIvYXJjaC9hcm0vbWFjaC1vbWFwMi9pby5jCmluZGV4IDVhNDA5MWYuLjY5YzgxNzQgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtb21hcDIvaW8uYworKysgYi9hcmNoL2FybS9tYWNoLW9tYXAyL2lvLmMKQEAgLTQyLDYgKzQyLDEyIEBACiAJCS5sZW5ndGgJCT0gTDNfMjRYWF9TSVpFLAogCQkudHlwZQkJPSBNVF9ERVZJQ0UKIAl9LAorCXsKKwkJLnZpcnR1YWwgICAgICAgID0gTDRfMjRYWF9WSVJULAorCQkucGZuICAgICAgICAgICAgPSBfX3BoeXNfdG9fcGZuKEw0XzI0WFhfUEhZUyksCisJCS5sZW5ndGggICAgICAgICA9IEw0XzI0WFhfU0laRSwKKwkJLnR5cGUgICAgICAgICAgID0gTVRfREVWSUNFCisJfSwKICNpZmRlZiBDT05GSUdfQVJDSF9PTUFQMjQzMAogCXsKIAkJLnZpcnR1YWwJPSBMNF9XS18yNDNYX1ZJUlQsCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW9yaW9uL2FkZHItbWFwLmMgYi9hcmNoL2FybS9tYWNoLW9yaW9uL2FkZHItbWFwLmMKaW5kZXggMmUyZmQ2My4uNThjYzNjMCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1vcmlvbi9hZGRyLW1hcC5jCisrKyBiL2FyY2gvYXJtL21hY2gtb3Jpb24vYWRkci1tYXAuYwpAQCAtOTcsMTQgKzk3LDIwIEBACiAjZGVmaW5lIFBDSUVfQkFSX0NUUkwobikJT1JJT05fUENJRV9SRUcoMHgxODA0ICsgKChuIC0gMSkgKiA0KSkKICNkZWZpbmUgUENJRV9CQVJfTE8obikJCU9SSU9OX1BDSUVfUkVHKDB4MDAxMCArICgobikgKiA4KSkKICNkZWZpbmUgUENJRV9CQVJfSEkobikJCU9SSU9OX1BDSUVfUkVHKDB4MDAxNCArICgobikgKiA4KSkKLSNkZWZpbmUgUENJRV9XSU5fQ1RSTChuKQlPUklPTl9QQ0lFX1JFRygweDE4MjAgKyAoKG4pIDw8IDQpKQotI2RlZmluZSBQQ0lFX1dJTl9CQVNFKG4pCU9SSU9OX1BDSUVfUkVHKDB4MTgyNCArICgobikgPDwgNCkpCi0jZGVmaW5lIFBDSUVfV0lOX1JFTUFQKG4pCU9SSU9OX1BDSUVfUkVHKDB4MTgyYyArICgobikgPDwgNCkpCisjZGVmaW5lIFBDSUVfV0lOX0NUUkwobikJKCgobikgPCA1KSA/IFwKKwkJCQkJT1JJT05fUENJRV9SRUcoMHgxODIwICsgKChuKSA8PCA0KSkgOiBcCisJCQkJCU9SSU9OX1BDSUVfUkVHKDB4MTg4MCkpCisjZGVmaW5lIFBDSUVfV0lOX0JBU0UobikJKCgobikgPCA1KSA/IFwKKwkJCQkJT1JJT05fUENJRV9SRUcoMHgxODI0ICsgKChuKSA8PCA0KSkgOiBcCisJCQkJCU9SSU9OX1BDSUVfUkVHKDB4MTg4NCkpCisjZGVmaW5lIFBDSUVfV0lOX1JFTUFQKG4pCSgoKG4pIDwgNSkgPyBcCisJCQkJCU9SSU9OX1BDSUVfUkVHKDB4MTgyYyArICgobikgPDwgNCkpIDogXAorCQkJCQlPUklPTl9QQ0lFX1JFRygweDE4OGMpKQogI2RlZmluZSBQQ0lFX0RFRldJTl9DVFJMCU9SSU9OX1BDSUVfUkVHKDB4MThiMCkKICNkZWZpbmUgUENJRV9FWFBST01fV0lOX0NUUkwJT1JJT05fUENJRV9SRUcoMHgxOGMwKQogI2RlZmluZSBQQ0lFX0VYUFJPTV9XSU5fUkVNUAlPUklPTl9QQ0lFX1JFRygweDE4YzQpCiAjZGVmaW5lIFBDSUVfTUFYX0JBUlMJCTMKLSNkZWZpbmUgUENJRV9NQVhfV0lOUwkJNQorI2RlZmluZSBQQ0lFX01BWF9XSU5TCQk2CiAKIC8qCiAgKiBVc2UgUENJRSBCQVIgJzEnIGZvciBhbGwgRERSIGJhbmtzCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW9yaW9uL2NvbW1vbi5jIGIvYXJjaC9hcm0vbWFjaC1vcmlvbi9jb21tb24uYwppbmRleCA1ZjBlZTRiLi5iYmMyYjRlIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLW9yaW9uL2NvbW1vbi5jCisrKyBiL2FyY2gvYXJtL21hY2gtb3Jpb24vY29tbW9uLmMKQEAgLTE3LDcgKzE3LDkgQEAKICNpbmNsdWRlIDxsaW51eC9tdjY0M3h4X2V0aC5oPgogI2luY2x1ZGUgPGxpbnV4L212NjQzeHhfaTJjLmg+CiAjaW5jbHVkZSA8YXNtL3BhZ2UuaD4KKyNpbmNsdWRlIDxhc20vc2V0dXAuaD4KICNpbmNsdWRlIDxhc20vdGltZXguaD4KKyNpbmNsdWRlIDxhc20vbWFjaC9hcmNoLmg+CiAjaW5jbHVkZSA8YXNtL21hY2gvbWFwLmg+CiAjaW5jbHVkZSA8YXNtL2FyY2gvaGFyZHdhcmUuaD4KICNpbmNsdWRlICJjb21tb24uaCIKQEAgLTE3Nyw4ICsxNzksOCBAQAogCiBzdGF0aWMgc3RydWN0IHJlc291cmNlIG9yaW9uX2V0aF9zaGFyZWRfcmVzb3VyY2VzW10gPSB7CiAJewotCQkuc3RhcnQJPSBPUklPTl9FVEhfUEhZU19CQVNFLAotCQkuZW5kCT0gT1JJT05fRVRIX1BIWVNfQkFTRSArIDB4ZmZmZiwKKwkJLnN0YXJ0CT0gT1JJT05fRVRIX1BIWVNfQkFTRSArIDB4MjAwMCwKKwkJLmVuZAk9IE9SSU9OX0VUSF9QSFlTX0JBU0UgKyAweDNmZmYsCiAJCS5mbGFncwk9IElPUkVTT1VSQ0VfTUVNLAogCX0sCiB9OwpAQCAtMzQ3LDMgKzM0OSwyMSBAQAogCQlwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIoJm9yaW9uX2VoY2kxKTsKIAlwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIoJm9yaW9uX2kyYyk7CiB9CisKKy8qCisgKiBNYW55IG9yaW9uLWJhc2VkIHN5c3RlbXMgaGF2ZSBidWdneSBib290bG9hZGVyIGltcGxlbWVudGF0aW9ucy4KKyAqIFRoaXMgaXMgYSBjb21tb24gZml4dXAgZm9yIGJvZ3VzIG1lbW9yeSB0YWdzLgorICovCit2b2lkIF9faW5pdCB0YWdfZml4dXBfbWVtMzIoc3RydWN0IG1hY2hpbmVfZGVzYyAqbWRlc2MsIHN0cnVjdCB0YWcgKnQsCisJCQkgICAgY2hhciAqKmZyb20sIHN0cnVjdCBtZW1pbmZvICptZW1pbmZvKQoreworCWZvciAoOyB0LT5oZHIuc2l6ZTsgdCA9IHRhZ19uZXh0KHQpKQorCQlpZiAodC0+aGRyLnRhZyA9PSBBVEFHX01FTSAmJgorCQkgICAgKCF0LT51Lm1lbS5zaXplIHx8IHQtPnUubWVtLnNpemUgJiB+UEFHRV9NQVNLIHx8CisJCSAgICAgdC0+dS5tZW0uc3RhcnQgJiB+UEFHRV9NQVNLKSkgeworCQkJcHJpbnRrKEtFUk5fV0FSTklORworCQkJICAgICAgICJDbGVhcmluZyBpbnZhbGlkIG1lbW9yeSBiYW5rICVkS0JAMHglMDh4XG4iLAorCQkJICAgICAgIHQtPnUubWVtLnNpemUgLyAxMDI0LCB0LT51Lm1lbS5zdGFydCk7CisJCQl0LT5oZHIudGFnID0gMDsKKwkJfQorfQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1vcmlvbi9jb21tb24uaCBiL2FyY2gvYXJtL21hY2gtb3Jpb24vY29tbW9uLmgKaW5kZXggMTAxNTRlYy4uNTAxNDk3YyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1vcmlvbi9jb21tb24uaAorKysgYi9hcmNoL2FybS9tYWNoLW9yaW9uL2NvbW1vbi5oCkBAIC04Myw0ICs4MywxMCBAQAogCiB2b2lkIF9faW5pdCBvcmlvbl9zYXRhX2luaXQoc3RydWN0IG12X3NhdGFfcGxhdGZvcm1fZGF0YSAqc2F0YV9kYXRhKTsKIAorc3RydWN0IG1hY2hpbmVfZGVzYzsKK3N0cnVjdCBtZW1pbmZvOworc3RydWN0IHRhZzsKK2V4dGVybiB2b2lkIF9faW5pdCB0YWdfZml4dXBfbWVtMzIoc3RydWN0IG1hY2hpbmVfZGVzYyAqLCBzdHJ1Y3QgdGFnICosCisJCQkJICAgY2hhciAqKiwgc3RydWN0IG1lbWluZm8gKik7CisKICNlbmRpZiAvKiBfX0FSQ0hfT1JJT05fQ09NTU9OX0hfXyAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1vcmlvbi9kbnMzMjMtc2V0dXAuYyBiL2FyY2gvYXJtL21hY2gtb3Jpb24vZG5zMzIzLXNldHVwLmMKaW5kZXggMDJiMjgwYy4uMDc2ZTE1NSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1vcmlvbi9kbnMzMjMtc2V0dXAuYworKysgYi9hcmNoL2FybS9tYWNoLW9yaW9uL2RuczMyMy1zZXR1cC5jCkBAIC0zMTksNCArMzE5LDUgQEAKIAkubWFwX2lvCQk9IG9yaW9uX21hcF9pbywKIAkuaW5pdF9pcnEJPSBvcmlvbl9pbml0X2lycSwKIAkudGltZXIJCT0gJm9yaW9uX3RpbWVyLAorCS5maXh1cAkJPSB0YWdfZml4dXBfbWVtMzIsCiBNQUNISU5FX0VORApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1vcmlvbi9ncGlvLmMgYi9hcmNoL2FybS9tYWNoLW9yaW9uL2dwaW8uYwppbmRleCBkNWYwMGM4Li5mNzEzODE4YyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1vcmlvbi9ncGlvLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1vcmlvbi9ncGlvLmMKQEAgLTM2LDcgKzM2LDcgQEAKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCiAJaWYgKHBpbiA+PSBHUElPX01BWCB8fCAhdGVzdF9iaXQocGluLCBncGlvX3ZhbGlkKSkgewotCQlwcl9kZWJ1ZygiJXM6IGludmFsaWQgR1BJTyAlZFxuIiwgX19GVU5DVElPTl9fLCBwaW4pOworCQlwcl9kZWJ1ZygiJXM6IGludmFsaWQgR1BJTyAlZFxuIiwgX19mdW5jX18sIHBpbik7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIApAQCAtNjIsNyArNjIsNyBAQAogCWludCBtYXNrOwogCiAJaWYgKHBpbiA+PSBHUElPX01BWCB8fCAhdGVzdF9iaXQocGluLCBncGlvX3ZhbGlkKSkgewotCQlwcl9kZWJ1ZygiJXM6IGludmFsaWQgR1BJTyAlZFxuIiwgX19GVU5DVElPTl9fLCBwaW4pOworCQlwcl9kZWJ1ZygiJXM6IGludmFsaWQgR1BJTyAlZFxuIiwgX19mdW5jX18sIHBpbik7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIApAQCAtMTQxLDcgKzE0MSw3IEBACiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAogCWlmIChwaW4gPj0gR1BJT19NQVggfHwgIXRlc3RfYml0KHBpbiwgZ3Bpb192YWxpZCkpIHsKLQkJcHJfZGVidWcoIiVzOiBpbnZhbGlkIEdQSU8gJWRcbiIsIF9fRlVOQ1RJT05fXywgcGluKTsKKwkJcHJfZGVidWcoIiVzOiBpbnZhbGlkIEdQSU8gJWRcbiIsIF9fZnVuY19fLCBwaW4pOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKQEAgLTE0OSw3ICsxNDksNyBAQAogCiAJaWYgKGdwaW9fbGFiZWxbcGluXSkgewogCQlwcl9kZWJ1ZygiJXM6IEdQSU8gJWQgYWxyZWFkeSB1c2VkIGFzICVzXG4iLAotCQkJIF9fRlVOQ1RJT05fXywgcGluLCBncGlvX2xhYmVsW3Bpbl0pOworCQkJIF9fZnVuY19fLCBwaW4sIGdwaW9fbGFiZWxbcGluXSk7CiAJCXJldCA9IC1FQlVTWTsKIAl9IGVsc2UKIAkJZ3Bpb19sYWJlbFtwaW5dID0gbGFiZWwgPyBsYWJlbCA6ICI/IjsKQEAgLTE2MiwxMiArMTYyLDEyIEBACiB2b2lkIGdwaW9fZnJlZSh1bnNpZ25lZCBwaW4pCiB7CiAJaWYgKHBpbiA+PSBHUElPX01BWCB8fCAhdGVzdF9iaXQocGluLCBncGlvX3ZhbGlkKSkgewotCQlwcl9kZWJ1ZygiJXM6IGludmFsaWQgR1BJTyAlZFxuIiwgX19GVU5DVElPTl9fLCBwaW4pOworCQlwcl9kZWJ1ZygiJXM6IGludmFsaWQgR1BJTyAlZFxuIiwgX19mdW5jX18sIHBpbik7CiAJCXJldHVybjsKIAl9CiAKIAlpZiAoIWdwaW9fbGFiZWxbcGluXSkKLQkJcHJfd2FybmluZygiJXM6IEdQSU8gJWQgYWxyZWFkeSBmcmVlZFxuIiwgX19GVU5DVElPTl9fLCBwaW4pOworCQlwcl93YXJuaW5nKCIlczogR1BJTyAlZCBhbHJlYWR5IGZyZWVkXG4iLCBfX2Z1bmNfXywgcGluKTsKIAllbHNlCiAJCWdwaW9fbGFiZWxbcGluXSA9IE5VTEw7CiB9CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW9yaW9uL2t1cm9ib3hfcHJvLXNldHVwLmMgYi9hcmNoL2FybS9tYWNoLW9yaW9uL2t1cm9ib3hfcHJvLXNldHVwLmMKaW5kZXggNjgxN2FjYS4uNzg1YTA3YiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1vcmlvbi9rdXJvYm94X3Byby1zZXR1cC5jCisrKyBiL2FyY2gvYXJtL21hY2gtb3Jpb24va3Vyb2JveF9wcm8tc2V0dXAuYwpAQCAtMjQwLDQgKzI0MCw1IEBACiAJLm1hcF9pbwkJPSBvcmlvbl9tYXBfaW8sCiAJLmluaXRfaXJxCT0gb3Jpb25faW5pdF9pcnEsCiAJLnRpbWVyCQk9ICZvcmlvbl90aW1lciwKKwkuZml4dXAJCT0gdGFnX2ZpeHVwX21lbTMyLAogTUFDSElORV9FTkQKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtb3Jpb24vdHMyMDktc2V0dXAuYyBiL2FyY2gvYXJtL21hY2gtb3Jpb24vdHMyMDktc2V0dXAuYwppbmRleCBiOGNmZTY4Li40NTc2NGRhIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLW9yaW9uL3RzMjA5LXNldHVwLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1vcmlvbi90czIwOS1zZXR1cC5jCkBAIC0zNTcsNCArMzU3LDUgQEAKIAkubWFwX2lvCQk9IG9yaW9uX21hcF9pbywKIAkuaW5pdF9pcnEJPSBvcmlvbl9pbml0X2lycSwKIAkudGltZXIJCT0gJm9yaW9uX3RpbWVyLAorCS5maXh1cAkJPSB0YWdfZml4dXBfbWVtMzIsCiBNQUNISU5FX0VORApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1wbng0MDA4L2Nsb2NrLmMgYi9hcmNoL2FybS9tYWNoLXBueDQwMDgvY2xvY2suYwppbmRleCBkYWE4ZDNkLi44ZTAwZWQ0IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLXBueDQwMDgvY2xvY2suYworKysgYi9hcmNoL2FybS9tYWNoLXBueDQwMDgvY2xvY2suYwpAQCAtOTc2LDcgKzk3Niw3IEBACiAJCQkJKCpjbGtwKS0+c2V0X3BhcmVudCgoKmNsa3ApLCAoKmNsa3ApLT5wYXJlbnQpOwogCQl9CiAJCXByX2RlYnVnKCIlczogY2xvY2sgJXMsIHJhdGUgJWxkXG4iLAotCQkJX19GVU5DVElPTl9fLCAoKmNsa3ApLT5uYW1lLCAoKmNsa3ApLT5yYXRlKTsKKwkJCV9fZnVuY19fLCAoKmNsa3ApLT5uYW1lLCAoKmNsa3ApLT5yYXRlKTsKIAl9CiAKIAlsb2NhbF9jbGtfdXNlKCZja19wbGw0KTsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtcG54NDAwOC9kbWEuYyBiL2FyY2gvYXJtL21hY2gtcG54NDAwOC9kbWEuYwppbmRleCBmNzAwOWQ4Li5mZTE1MmU4IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLXBueDQwMDgvZG1hLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1wbng0MDA4L2RtYS5jCkBAIC0xOTIsNyArMTkyLDcgQEAKIAlpZiAoIWRtYV9jaGFubmVsc1tjaF0ubmFtZSkgewogCQlwcmludGsoS0VSTl9DUklUCiAJCSAgICAgICAiJXM6IHRyeWluZyB0byBmcmVlIGNoYW5uZWwgJWQgd2hpY2ggaXMgYWxyZWFkeSBmcmVlZFxuIiwKLQkJICAgICAgIF9fRlVOQ1RJT05fXywgY2gpOworCQkgICAgICAgX19mdW5jX18sIGNoKTsKIAkJcmV0dXJuOwogCX0KIApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1weGEvY20teDI3MC1wY2kuYyBiL2FyY2gvYXJtL21hY2gtcHhhL2NtLXgyNzAtcGNpLmMKaW5kZXggMTVjNGUwZC4uZmNkYTdkNSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1weGEvY20teDI3MC1wY2kuYworKysgYi9hcmNoL2FybS9tYWNoLXB4YS9jbS14MjcwLXBjaS5jCkBAIC0xMDQsNyArMTA0LDcgQEAKIHsKIAlpbnQgaXJxOwogCi0JZGV2X2RiZygmZGV2LT5kZXYsICIlczogc2xvdD0leCwgcGluPSV4XG4iLCBfX0ZVTkNUSU9OX18sIHNsb3QsIHBpbik7CisJZGV2X2RiZygmZGV2LT5kZXYsICIlczogc2xvdD0leCwgcGluPSV4XG4iLCBfX2Z1bmNfXywgc2xvdCwgcGluKTsKIAogCWlycSA9IGl0ODE1Ml9wY2lfbWFwX2lycShkZXYsIHNsb3QsIHBpbik7CiAJaWYgKGlycSkKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtcHhhL2NtLXgyNzAuYyBiL2FyY2gvYXJtL21hY2gtcHhhL2NtLXgyNzAuYwppbmRleCA2MDEyMTc3Li5lY2RiYzk2IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLXB4YS9jbS14MjcwLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1weGEvY20teDI3MC5jCkBAIC01MDQsMTEgKzUwNCwxMSBAQAogCXN0cnVjdCBweGFtY2lfcGxhdGZvcm1fZGF0YSAqcF9kID0gZGV2LT5wbGF0Zm9ybV9kYXRhOwogCiAJaWYgKCgxIDw8IHZkZCkgJiBwX2QtPm9jcl9tYXNrKSB7Ci0JCXByaW50ayhLRVJOX0RFQlVHICIlczogb25cbiIsIF9fRlVOQ1RJT05fXyk7CisJCXByaW50ayhLRVJOX0RFQlVHICIlczogb25cbiIsIF9fZnVuY19fKTsKIAkJR1BDUigxMDUpID0gR1BJT19iaXQoMTA1KTsKIAl9IGVsc2UgewogCQlHUFNSKDEwNSkgPSBHUElPX2JpdCgxMDUpOwotCQlwcmludGsoS0VSTl9ERUJVRyAiJXM6IG9mZlxuIiwgX19GVU5DVElPTl9fKTsKKwkJcHJpbnRrKEtFUk5fREVCVUcgIiVzOiBvZmZcbiIsIF9fZnVuY19fKTsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtcHhhL2RtYS5jIGIvYXJjaC9hcm0vbWFjaC1weGEvZG1hLmMKaW5kZXggOTNjNGYzMS4uMzIxNTMxNiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1weGEvZG1hLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1weGEvZG1hLmMKQEAgLTgxLDcgKzgxLDcgQEAKIAlpZiAoIWRtYV9jaGFubmVsc1tkbWFfY2hdLm5hbWUpIHsKIAkJcHJpbnRrIChLRVJOX0NSSVQKIAkJCSIlczogdHJ5aW5nIHRvIGZyZWUgY2hhbm5lbCAlZCB3aGljaCBpcyBhbHJlYWR5IGZyZWVkXG4iLAotCQkJX19GVU5DVElPTl9fLCBkbWFfY2gpOworCQkJX19mdW5jX18sIGRtYV9jaCk7CiAJCXJldHVybjsKIAl9CiAKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtcHhhL2VtLXgyNzAuYyBiL2FyY2gvYXJtL21hY2gtcHhhL2VtLXgyNzAuYwppbmRleCAzZDBhZDUwLi4zYmIzMTMxIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLXB4YS9lbS14MjcwLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1weGEvZW0teDI3MC5jCkBAIC0yNjQsNyArMjY0LDcgQEAKIAkJCSAgIk1NQyBjYXJkIGRldGVjdCIsIGRhdGEpOwogCWlmIChlcnIpIHsKIAkJcHJpbnRrKEtFUk5fRVJSICIlczogY2FuJ3QgcmVxdWVzdCBNTUMgY2FyZCBkZXRlY3QgSVJROiAlZFxuIiwKLQkJICAgICAgIF9fRlVOQ1RJT05fXywgZXJyKTsKKwkJICAgICAgIF9fZnVuY19fLCBlcnIpOwogCQlyZXR1cm4gZXJyOwogCX0KIApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1weGEvbWFpbnN0b25lLmMgYi9hcmNoL2FybS9tYWNoLXB4YS9tYWluc3RvbmUuYwppbmRleCAzNDVjM2RlLi43MmE0MzZmIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLXB4YS9tYWluc3RvbmUuYworKysgYi9hcmNoL2FybS9tYWNoLXB4YS9tYWluc3RvbmUuYwpAQCAtMzkwLDExICszOTAsMTEgQEAKIAlzdHJ1Y3QgcHhhbWNpX3BsYXRmb3JtX2RhdGEqIHBfZCA9IGRldi0+cGxhdGZvcm1fZGF0YTsKIAogCWlmICgoIDEgPDwgdmRkKSAmIHBfZC0+b2NyX21hc2spIHsKLQkJcHJpbnRrKEtFUk5fREVCVUcgIiVzOiBvblxuIiwgX19GVU5DVElPTl9fKTsKKwkJcHJpbnRrKEtFUk5fREVCVUcgIiVzOiBvblxuIiwgX19mdW5jX18pOwogCQlNU1RfTVNDV1IxIHw9IE1TVF9NU0NXUjFfTU1DX09OOwogCQlNU1RfTVNDV1IxICY9IH5NU1RfTVNDV1IxX01TX1NFTDsKIAl9IGVsc2UgewotCQlwcmludGsoS0VSTl9ERUJVRyAiJXM6IG9mZlxuIiwgX19GVU5DVElPTl9fKTsKKwkJcHJpbnRrKEtFUk5fREVCVUcgIiVzOiBvZmZcbiIsIF9fZnVuY19fKTsKIAkJTVNUX01TQ1dSMSAmPSB+TVNUX01TQ1dSMV9NTUNfT047CiAJfQogfQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1weGEvdHJpemVwczQuYyBiL2FyY2gvYXJtL21hY2gtcHhhL3RyaXplcHM0LmMKaW5kZXggODUzZmM5NC4uZjIwN2ZjZCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1weGEvdHJpemVwczQuYworKysgYi9hcmNoL2FybS9tYWNoLXB4YS90cml6ZXBzNC5jCkBAIC0yMTcsNyArMjE3LDcgQEAKIAkJQ29uWFNfQkNSID0gdHJpemVwc19jb254c19iY3I7CiAKIAl9Ci0JcHJfZGVidWcoIiVzOiBvJXMgMHgleFxuIiwgX19GVU5DVElPTl9fLCBwb3dlciA/ICJuIjogImZmIiwgdHJpemVwc19jb254c19iY3IpOworCXByX2RlYnVnKCIlczogbyVzIDB4JXhcbiIsIF9fZnVuY19fLCBwb3dlciA/ICJuIjogImZmIiwgdHJpemVwc19jb254c19iY3IpOwogfQogCiAvKiBiYWNrbGlnaHQgcG93ZXIgc3dpdGNoaW5nIGZvciBMQ0QgcGFuZWwgKi8KQEAgLTIyOCw3ICsyMjgsNyBAQAogCX0gZWxzZSB7CiAJCXRyaXplcHNfY29ueHNfYmNyICY9IH5Db25YU19CQ1JfTF9ESVNQOwogCX0KLQlwcl9kZWJ1ZygiJXM6IG8lcyAweCV4XG4iLCBfX0ZVTkNUSU9OX18sIG9uID8gIm4iIDogImZmIiwgdHJpemVwc19jb254c19iY3IpOworCXByX2RlYnVnKCIlczogbyVzIDB4JXhcbiIsIF9fZnVuY19fLCBvbiA/ICJuIiA6ICJmZiIsIHRyaXplcHNfY29ueHNfYmNyKTsKIAlDb25YU19CQ1IgPSB0cml6ZXBzX2NvbnhzX2JjcjsKIH0KIApAQCAtMjM4LDEwICsyMzgsMTAgQEAKIAlzdHJ1Y3QgcHhhbWNpX3BsYXRmb3JtX2RhdGEqIHBfZCA9IGRldi0+cGxhdGZvcm1fZGF0YTsKIAogCWlmICgoIDEgPDwgdmRkKSAmIHBfZC0+b2NyX21hc2spIHsKLQkJcHJfZGVidWcoIiVzOiBvblxuIiwgX19GVU5DVElPTl9fKTsKKwkJcHJfZGVidWcoIiVzOiBvblxuIiwgX19mdW5jX18pOwogCQkvKiBGSVhNRSBmaWxsIGluIHZhbHVlcyBoZXJlICovCiAJfSBlbHNlIHsKLQkJcHJfZGVidWcoIiVzOiBvZmZcbiIsIF9fRlVOQ1RJT05fXyk7CisJCXByX2RlYnVnKCIlczogb2ZmXG4iLCBfX2Z1bmNfXyk7CiAJCS8qIEZJWE1FIGZpbGwgaW4gdmFsdWVzIGhlcmUgKi8KIAl9CiB9CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLXNhMTEwMC9iYWRnZTQuYyBiL2FyY2gvYXJtL21hY2gtc2ExMTAwL2JhZGdlNC5jCmluZGV4IGY2MGI3YTYuLjg0MmQ5ZTYgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtc2ExMTAwL2JhZGdlNC5jCisrKyBiL2FyY2gvYXJtL21hY2gtc2ExMTAwL2JhZGdlNC5jCkBAIC0yMDYsNyArMjA2LDcgQEAKIAlpZiAocmV0IDwgMCkKIAkJcHJpbnRrKEtFUk5fRVJSCiAJCSAgICAgICAiJXM6IFNBLTExMTEgaW5pdGlhbGl6YXRpb24gZmFpbGVkICglZClcbiIsCi0JCSAgICAgICBfX0ZVTkNUSU9OX18sIHJldCk7CisJCSAgICAgICBfX2Z1bmNfXywgcmV0KTsKIAogCiAJLyogbWF5YmUgdHVybiBvbiA1djAgZnJvbSB0aGUgc3RhcnQgKi8KQEAgLTI0MCwxMSArMjQwLDExIEBACiAJLyogZGV0ZWN0IG9uLT5vZmYgYW5kIG9mZi0+b24gdHJhbnNpdGlvbnMgKi8KIAlpZiAoKCFvbGRfNVZfYml0bWFwKSAmJiAoYmFkZ2U0XzVWX2JpdG1hcCkpIHsKIAkJLyogd2FzIG9mZiwgbm93IG9uICovCi0JCXByaW50ayhLRVJOX0lORk8gIiVzOiBlbmFibGluZyA1ViBzdXBwbHkgcmFpbFxuIiwgX19GVU5DVElPTl9fKTsKKwkJcHJpbnRrKEtFUk5fSU5GTyAiJXM6IGVuYWJsaW5nIDVWIHN1cHBseSByYWlsXG4iLCBfX2Z1bmNfXyk7CiAJCUdQU1IgPSBCQURHRTRfR1BJT19QQ01FTjVWOwogCX0gZWxzZSBpZiAoKG9sZF81Vl9iaXRtYXApICYmICghYmFkZ2U0XzVWX2JpdG1hcCkpIHsKIAkJLyogd2FzIG9uLCBub3cgb2ZmICovCi0JCXByaW50ayhLRVJOX0lORk8gIiVzOiBkaXNhYmxpbmcgNVYgc3VwcGx5IHJhaWxcbiIsIF9fRlVOQ1RJT05fXyk7CisJCXByaW50ayhLRVJOX0lORk8gIiVzOiBkaXNhYmxpbmcgNVYgc3VwcGx5IHJhaWxcbiIsIF9fZnVuY19fKTsKIAkJR1BDUiA9IEJBREdFNF9HUElPX1BDTUVONVY7CiAJfQogCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLXNhMTEwMC9jcHUtc2ExMTAwLmMgYi9hcmNoL2FybS9tYWNoLXNhMTEwMC9jcHUtc2ExMTAwLmMKaW5kZXggZDY4NjMwYi4uMzQzMzY4YSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1zYTExMDAvY3B1LXNhMTEwMC5jCisrKyBiL2FyY2gvYXJtL21hY2gtc2ExMTAwL2NwdS1zYTExMDAuYwpAQCAtMTM5LDcgKzEzOSw3IEBACiAKIAlpZiAoc2V0dGluZ3MtPnNwZWVkID09IDApIHsKIAkJcGFuaWMoIiVzOiBjb3VsZG4ndCBmaW5kIGRyYW0gc2V0dGluZyBmb3Igc3BlZWQgJWRcbiIsCi0JCSAgICAgIF9fRlVOQ1RJT05fXywgbmV3X3NwZWVkKTsKKwkJICAgICAgX19mdW5jX18sIG5ld19zcGVlZCk7CiAJfQogCiAJLyogTm8gcmlzaywgbm8gZnVuOiBydW4gd2l0aCBpbnRlcnJ1cHRzIG9uISAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1zYTExMDAvZG1hLmMgYi9hcmNoL2FybS9tYWNoLXNhMTEwMC9kbWEuYwppbmRleCAxZmJlMDUzLi5lNTA4MDI4IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLXNhMTEwMC9kbWEuYworKysgYi9hcmNoL2FybS9tYWNoLXNhMTEwMC9kbWEuYwpAQCAtMTI5LDcgKzEyOSw3IEBACiAJaWYgKGVycikgewogCQlwcmludGsoS0VSTl9FUlIKIAkJICAgICAgICIlczogdW5hYmxlIHRvIHJlcXVlc3QgSVJRICVkIGZvciAlc1xuIiwKLQkJICAgICAgIF9fRlVOQ1RJT05fXywgSVJRX0RNQTAgKyBpLCBkZXZpY2VfaWQpOworCQkgICAgICAgX19mdW5jX18sIElSUV9ETUEwICsgaSwgZGV2aWNlX2lkKTsKIAkJZG1hLT5kZXZpY2UgPSAwOwogCQlyZXR1cm4gZXJyOwogCX0KQEAgLTE2NSwxMiArMTY1LDEyIEBACiAJCWlmIChyZWdzID09IChkbWFfcmVnc190ICopJkREQVIoaSkpCiAJCQlicmVhazsKIAlpZiAoaSA+PSBTQTExMDBfRE1BX0NIQU5ORUxTKSB7Ci0JCXByaW50ayhLRVJOX0VSUiAiJXM6IGJhZCBETUEgaWRlbnRpZmllclxuIiwgX19GVU5DVElPTl9fKTsKKwkJcHJpbnRrKEtFUk5fRVJSICIlczogYmFkIERNQSBpZGVudGlmaWVyXG4iLCBfX2Z1bmNfXyk7CiAJCXJldHVybjsKIAl9CiAKIAlpZiAoIWRtYV9jaGFuW2ldLmRldmljZSkgewotCQlwcmludGsoS0VSTl9FUlIgIiVzOiBUcnlpbmcgdG8gZnJlZSBmcmVlIERNQVxuIiwgX19GVU5DVElPTl9fKTsKKwkJcHJpbnRrKEtFUk5fRVJSICIlczogVHJ5aW5nIHRvIGZyZWUgZnJlZSBETUFcbiIsIF9fZnVuY19fKTsKIAkJcmV0dXJuOwogCX0KIApAQCAtMzI5LDcgKzMyOSw3IEBACiAJCWlmIChyZWdzID09IChkbWFfcmVnc190ICopJkREQVIoaSkpCiAJCQlicmVhazsKIAlpZiAoaSA+PSBTQTExMDBfRE1BX0NIQU5ORUxTKSB7Ci0JCXByaW50ayhLRVJOX0VSUiAiJXM6IGJhZCBETUEgaWRlbnRpZmllclxuIiwgX19GVU5DVElPTl9fKTsKKwkJcHJpbnRrKEtFUk5fRVJSICIlczogYmFkIERNQSBpZGVudGlmaWVyXG4iLCBfX2Z1bmNfXyk7CiAJCXJldHVybjsKIAl9CiAKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtc2ExMTAwL2gzNjAwLmMgYi9hcmNoL2FybS9tYWNoLXNhMTEwMC9oMzYwMC5jCmluZGV4IGI3MmZlZTAuLjg0NzNjMzcgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtc2ExMTAwL2gzNjAwLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1zYTExMDAvaDM2MDAuYwpAQCAtNTk2LDcgKzU5Niw3IEBACiAJY2FzZSBJUEFRX0VHUElPX0NPREVDX05SRVNFVDoKIAljYXNlIElQQVFfRUdQSU9fQVVESU9fT046CiAJY2FzZSBJUEFRX0VHUElPX1FNVVRFOgotCQlwcmludGsoIiVzOiBlcnJvciAtIHNob3VsZCBub3QgYmUgY2FsbGVkXG4iLCBfX0ZVTkNUSU9OX18pOworCQlwcmludGsoIiVzOiBlcnJvciAtIHNob3VsZCBub3QgYmUgY2FsbGVkXG4iLCBfX2Z1bmNfXyk7CiAJCWJyZWFrOwogCWNhc2UgSVBBUV9FR1BJT19PUFRfTlZSQU1fT046CiAJCVNFVF9BU0lDMihHUElPMl9PUFRfT05fTlZSQU0pOwpAQCAtNjM4LDcgKzYzOCw3IEBACiAJc3RhdGljIHUxNiBhc2ljMl9kYXRhOwogCWludCByZXN1bHQgPSAwOwogCi0JcHJpbnRrKCIlcyAlZFxuIiwgX19GVU5DVElPTl9fLCByZXEpOworCXByaW50aygiJXMgJWRcbiIsIF9fZnVuY19fLCByZXEpOwogCiAJc3dpdGNoIChyZXEpIHsKIAljYXNlIFBNX1JFU1VNRToKQEAgLTY2Niw3ICs2NjYsNyBAQAogCQlhc2ljMl9kYXRhID0gSDM4MDBfQVNJQzJfR1BJT1BJT0Q7CiAJCWJyZWFrOwogCWRlZmF1bHQ6Ci0JCXByaW50aygiJXM6IHVucmVjb2duaXplZCBQTSBjYWxsYmFja1xuIiwgX19GVU5DVElPTl9fKTsKKwkJcHJpbnRrKCIlczogdW5yZWNvZ25pemVkIFBNIGNhbGxiYWNrXG4iLCBfX2Z1bmNfXyk7CiAJCWJyZWFrOwogCX0KIAlyZXR1cm4gcmVzdWx0OwpAQCAtNzA2LDcgKzcwNiw3IEBACiB7CiAJaW50IGk7CiAKLQlpZiAoMCkgcHJpbnRrKCIlczogaW50ZXJydXB0IHJlY2VpdmVkXG4iLCBfX0ZVTkNUSU9OX18pOworCWlmICgwKSBwcmludGsoIiVzOiBpbnRlcnJ1cHQgcmVjZWl2ZWRcbiIsIF9fZnVuY19fKTsKIAogCWRlc2MtPmNoaXAtPmFjayhpcnEpOwogCkBAIC03MTYsMjEgKzcxNiwyMSBAQAogCiAJCS8qIEtQSU8gKi8KIAkJaXJxID0gSDM4MDBfQVNJQzJfS1BJSU5URkxBRzsKLQkJaWYgKDApIHByaW50aygiJXMgS1BJTyAweCUwOFhcbiIsIF9fRlVOQ1RJT05fXywgaXJxKTsKKwkJaWYgKDApIHByaW50aygiJXMgS1BJTyAweCUwOFhcbiIsIF9fZnVuY19fLCBpcnEpOwogCQlmb3IgKGogPSAwOyBqIDwgSDM4MDBfS1BJT19JUlFfQ09VTlQ7IGorKykKIAkJCWlmIChpcnEgJiBrcGlvX2lycV9tYXNrW2pdKQogCQkJCWhhbmRsZV9lZGdlX2lycShIMzgwMF9LUElPX0lSUV9DT1VOVCArIGosIGlycV9kZXNjICsgSDM4MDBfS1BJT19JUlFfQ09VTlQgKyBqKTsKIAogCQkvKiBHUElPMiAqLwogCQlpcnEgPSBIMzgwMF9BU0lDMl9HUElJTlRGTEFHOwotCQlpZiAoMCkgcHJpbnRrKCIlcyBHUElPIDB4JTA4WFxuIiwgX19GVU5DVElPTl9fLCBpcnEpOworCQlpZiAoMCkgcHJpbnRrKCIlcyBHUElPIDB4JTA4WFxuIiwgX19mdW5jX18sIGlycSk7CiAJCWZvciAoaiA9IDA7IGogPCBIMzgwMF9HUElPX0lSUV9DT1VOVDsgaisrKQogCQkJaWYgKGlycSAmIGdwaW9faXJxX21hc2tbal0pCiAJCQkJaGFuZGxlX2VkZ2VfaXJxKEgzODAwX0dQSU9fSVJRX0NPVU5UICsgaiwgaXJxX2Rlc2MgKyBIMzgwMF9HUElPX0lSUV9DT1VOVCArIGopOwogCX0KIAogCWlmIChpID49IE1BWF9BU0lDX0lTUl9MT09QUykKLQkJcHJpbnRrKCIlczogaW50ZXJydXB0IHByb2Nlc3Npbmcgb3ZlcnJ1blxuIiwgX19GVU5DVElPTl9fKTsKKwkJcHJpbnRrKCIlczogaW50ZXJydXB0IHByb2Nlc3Npbmcgb3ZlcnJ1blxuIiwgX19mdW5jX18pOwogCiAJLyogRm9yIGxldmVsLWJhc2VkIGludGVycnVwdHMgKi8KIAlkZXNjLT5jaGlwLT51bm1hc2soaXJxKTsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21tL3Byb2MteHNjYWxlLlMgYi9hcmNoL2FybS9tbS9wcm9jLXhzY2FsZS5TCmluZGV4IGMxNTZkZGEuLjAxNjY5MGIgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21tL3Byb2MteHNjYWxlLlMKKysrIGIvYXJjaC9hcm0vbW0vcHJvYy14c2NhbGUuUwpAQCAtMTE0LDYgKzExNCwxMCBAQAogICogTm90aGluZyB0b28gZXhjaXRpbmcgYXQgdGhlIG1vbWVudAogICovCiBFTlRSWShjcHVfeHNjYWxlX3Byb2NfaW5pdCkKKwlAIGVuYWJsZSB3cml0ZSBidWZmZXIgY29hbGVzY2luZy4gU29tZSBib290bG9hZGVyIGRpc2FibGUgaXQKKwltcmMJcDE1LCAwLCByMSwgYzEsIGMwLCAxCisJYmljCXIxLCByMSwgIzEKKwltY3IJcDE1LCAwLCByMSwgYzEsIGMwLCAxCiAJbW92CXBjLCBscgogCiAvKgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vcGxhdC1pb3AvcGNpLmMgYi9hcmNoL2FybS9wbGF0LWlvcC9wY2kuYwppbmRleCAyYjVhYTExLi45OGQwMTUxIDEwMDY0NAotLS0gYS9hcmNoL2FybS9wbGF0LWlvcC9wY2kuYworKysgYi9hcmNoL2FybS9wbGF0LWlvcC9wY2kuYwpAQCAtMzcxLDcgKzM3MSw3IEBACiAJCQlkZWZhdWx0OgogCQkJCXByaW50ayhLRVJOX0RFQlVHICJcIiVzXCIgbWFsZm9ybWVkIGF0ICIKIAkJCQkJICAgICJjaGFyYWN0ZXI6IFwnJWNcJyIsCi0JCQkJCSAgICBfX0ZVTkNUSU9OX18sCisJCQkJCSAgICBfX2Z1bmNfXywKIAkJCQkJICAgICpzdHIpOwogCQkJCSooc3RyICsgMSkgPSAnXDAnOwogCQkJfQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vcGxhdC1vbWFwL0tjb25maWcgYi9hcmNoL2FybS9wbGF0LW9tYXAvS2NvbmZpZwppbmRleCBjMWY3ZTVhLi5iOTE3MjA2IDEwMDY0NAotLS0gYS9hcmNoL2FybS9wbGF0LW9tYXAvS2NvbmZpZworKysgYi9hcmNoL2FybS9wbGF0LW9tYXAvS2NvbmZpZwpAQCAtMTEsNyArMTEsNiBAQAogCiBjb25maWcgQVJDSF9PTUFQMQogCWJvb2wgIlRJIE9NQVAxIgotCXNlbGVjdCBHRU5FUklDX0NMT0NLRVZFTlRTCiAKIGNvbmZpZyBBUkNIX09NQVAyCiAJYm9vbCAiVEkgT01BUDIiCmRpZmYgLS1naXQgYS9hcmNoL2FybS9wbGF0LW9tYXAvTWFrZWZpbGUgYi9hcmNoL2FybS9wbGF0LW9tYXAvTWFrZWZpbGUKaW5kZXggY2UxN2RmMy4uOGY1NmMyNSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vcGxhdC1vbWFwL01ha2VmaWxlCisrKyBiL2FyY2gvYXJtL3BsYXQtb21hcC9NYWtlZmlsZQpAQCAtMTQsOSArMTQsMTQgQEAKICMgT0NQSSBpbnRlcmNvbm5lY3Qgc3VwcG9ydCBmb3IgMTcxMCwgMTYxMCBhbmQgNTkxMgogb2JqLSQoQ09ORklHX0FSQ0hfT01BUDE2WFgpICs9IG9jcGkubwogCitvYmotJChDT05GSUdfT01BUF9NQ0JTUCkgKz0gbWNic3AubwogCiBvYmotJChDT05GSUdfQ1BVX0ZSRVEpICs9IGNwdS1vbWFwLm8KIG9iai0kKENPTkZJR19PTUFQX0RNX1RJTUVSKSArPSBkbXRpbWVyLm8KIG9iai0kKENPTkZJR19PTUFQX0RFQlVHX0RFVklDRVMpICs9IGRlYnVnLWRldmljZXMubwogb2JqLSQoQ09ORklHX09NQVBfREVCVUdfTEVEUykgKz0gZGVidWctbGVkcy5vCiBvYmotJChDT05GSUdfSTJDX09NQVApICs9IGkyYy5vCisKKyMgT01BUCBtYWlsYm94IGZyYW1ld29yaworb2JqLSQoQ09ORklHX09NQVBfTUJPWF9GV0spICs9IG1haWxib3gubworCmRpZmYgLS1naXQgYS9hcmNoL2FybS9wbGF0LW9tYXAvY3B1LW9tYXAuYyBiL2FyY2gvYXJtL3BsYXQtb21hcC9jcHUtb21hcC5jCmluZGV4IGMwZDYzYjAuLmQ3MTljMTUgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL3BsYXQtb21hcC9jcHUtb21hcC5jCisrKyBiL2FyY2gvYXJtL3BsYXQtb21hcC9jcHUtb21hcC5jCkBAIC0zMyw0MyArMzMsMzMgQEAKICNkZWZpbmUgTVBVX0NMSwkJInZpcnRfcHJjbV9zZXQiCiAjZW5kaWYKIAorc3RhdGljIHN0cnVjdCBjbGsgKm1wdV9jbGs7CisKIC8qIFRPRE86IEFkZCBzdXBwb3J0IGZvciBTRFJBTSB0aW1pbmcgY2hhbmdlcyAqLwogCiBpbnQgb21hcF92ZXJpZnlfc3BlZWQoc3RydWN0IGNwdWZyZXFfcG9saWN5ICpwb2xpY3kpCiB7Ci0Jc3RydWN0IGNsayAqIG1wdV9jbGs7Ci0KIAlpZiAocG9saWN5LT5jcHUpCiAJCXJldHVybiAtRUlOVkFMOwogCiAJY3B1ZnJlcV92ZXJpZnlfd2l0aGluX2xpbWl0cyhwb2xpY3ksIHBvbGljeS0+Y3B1aW5mby5taW5fZnJlcSwKIAkJCQkgICAgIHBvbGljeS0+Y3B1aW5mby5tYXhfZnJlcSk7Ci0JbXB1X2NsayA9IGNsa19nZXQoTlVMTCwgTVBVX0NMSyk7Ci0JaWYgKElTX0VSUihtcHVfY2xrKSkKLQkJcmV0dXJuIFBUUl9FUlIobXB1X2Nsayk7CisKIAlwb2xpY3ktPm1pbiA9IGNsa19yb3VuZF9yYXRlKG1wdV9jbGssIHBvbGljeS0+bWluICogMTAwMCkgLyAxMDAwOwogCXBvbGljeS0+bWF4ID0gY2xrX3JvdW5kX3JhdGUobXB1X2NsaywgcG9saWN5LT5tYXggKiAxMDAwKSAvIDEwMDA7CiAJY3B1ZnJlcV92ZXJpZnlfd2l0aGluX2xpbWl0cyhwb2xpY3ksIHBvbGljeS0+Y3B1aW5mby5taW5fZnJlcSwKIAkJCQkgICAgIHBvbGljeS0+Y3B1aW5mby5tYXhfZnJlcSk7Ci0JY2xrX3B1dChtcHVfY2xrKTsKLQogCXJldHVybiAwOwogfQogCiB1bnNpZ25lZCBpbnQgb21hcF9nZXRzcGVlZCh1bnNpZ25lZCBpbnQgY3B1KQogewotCXN0cnVjdCBjbGsgKiBtcHVfY2xrOwogCXVuc2lnbmVkIGxvbmcgcmF0ZTsKIAogCWlmIChjcHUpCiAJCXJldHVybiAwOwogCi0JbXB1X2NsayA9IGNsa19nZXQoTlVMTCwgTVBVX0NMSyk7Ci0JaWYgKElTX0VSUihtcHVfY2xrKSkKLQkJcmV0dXJuIDA7CiAJcmF0ZSA9IGNsa19nZXRfcmF0ZShtcHVfY2xrKSAvIDEwMDA7Ci0JY2xrX3B1dChtcHVfY2xrKTsKLQogCXJldHVybiByYXRlOwogfQogCkBAIC03NywxNCArNjcsOSBAQAogCQkgICAgICAgdW5zaWduZWQgaW50IHRhcmdldF9mcmVxLAogCQkgICAgICAgdW5zaWduZWQgaW50IHJlbGF0aW9uKQogewotCXN0cnVjdCBjbGsgKiBtcHVfY2xrOwogCXN0cnVjdCBjcHVmcmVxX2ZyZXFzIGZyZXFzOwogCWludCByZXQgPSAwOwogCi0JbXB1X2NsayA9IGNsa19nZXQoTlVMTCwgTVBVX0NMSyk7Ci0JaWYgKElTX0VSUihtcHVfY2xrKSkKLQkJcmV0dXJuIFBUUl9FUlIobXB1X2Nsayk7Ci0KIAlmcmVxcy5vbGQgPSBvbWFwX2dldHNwZWVkKDApOwogCWZyZXFzLm5ldyA9IGNsa19yb3VuZF9yYXRlKG1wdV9jbGssIHRhcmdldF9mcmVxICogMTAwMCkgLyAxMDAwOwogCWZyZXFzLmNwdSA9IDA7CkBAIC05MiwxNSArNzcsMTIgQEAKIAljcHVmcmVxX25vdGlmeV90cmFuc2l0aW9uKCZmcmVxcywgQ1BVRlJFUV9QUkVDSEFOR0UpOwogCXJldCA9IGNsa19zZXRfcmF0ZShtcHVfY2xrLCB0YXJnZXRfZnJlcSAqIDEwMDApOwogCWNwdWZyZXFfbm90aWZ5X3RyYW5zaXRpb24oJmZyZXFzLCBDUFVGUkVRX1BPU1RDSEFOR0UpOwotCWNsa19wdXQobXB1X2Nsayk7CiAKIAlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgaW50IF9faW5pdCBvbWFwX2NwdV9pbml0KHN0cnVjdCBjcHVmcmVxX3BvbGljeSAqcG9saWN5KQogewotCXN0cnVjdCBjbGsgKiBtcHVfY2xrOwotCiAJbXB1X2NsayA9IGNsa19nZXQoTlVMTCwgTVBVX0NMSyk7CiAJaWYgKElTX0VSUihtcHVfY2xrKSkKIAkJcmV0dXJuIFBUUl9FUlIobXB1X2Nsayk7CkBAIC0xMTEsMTcgKzkzLDIzIEBACiAJcG9saWN5LT5jcHVpbmZvLm1pbl9mcmVxID0gY2xrX3JvdW5kX3JhdGUobXB1X2NsaywgMCkgLyAxMDAwOwogCXBvbGljeS0+Y3B1aW5mby5tYXhfZnJlcSA9IGNsa19yb3VuZF9yYXRlKG1wdV9jbGssIFZFUllfSElfUkFURSkgLyAxMDAwOwogCXBvbGljeS0+Y3B1aW5mby50cmFuc2l0aW9uX2xhdGVuY3kgPSBDUFVGUkVRX0VURVJOQUw7Ci0JY2xrX3B1dChtcHVfY2xrKTsKIAogCXJldHVybiAwOwogfQogCitzdGF0aWMgaW50IG9tYXBfY3B1X2V4aXQoc3RydWN0IGNwdWZyZXFfcG9saWN5ICpwb2xpY3kpCit7CisJY2xrX3B1dChtcHVfY2xrKTsKKwlyZXR1cm4gMDsKK30KKwogc3RhdGljIHN0cnVjdCBjcHVmcmVxX2RyaXZlciBvbWFwX2RyaXZlciA9IHsKIAkuZmxhZ3MJCT0gQ1BVRlJFUV9TVElDS1ksCiAJLnZlcmlmeQkJPSBvbWFwX3ZlcmlmeV9zcGVlZCwKIAkudGFyZ2V0CQk9IG9tYXBfdGFyZ2V0LAogCS5nZXQJCT0gb21hcF9nZXRzcGVlZCwKIAkuaW5pdAkJPSBvbWFwX2NwdV9pbml0LAorCS5leGl0CQk9IG9tYXBfY3B1X2V4aXQsCiAJLm5hbWUJCT0gIm9tYXAiLAogfTsKIApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vcGxhdC1vbWFwL2RldmljZXMuYyBiL2FyY2gvYXJtL3BsYXQtb21hcC9kZXZpY2VzLmMKaW5kZXggYzVkYWIxZC4uNGE1M2Y5YiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vcGxhdC1vbWFwL2RldmljZXMuYworKysgYi9hcmNoL2FybS9wbGF0LW9tYXAvZGV2aWNlcy5jCkBAIC04OSw2OCArODksNiBAQAogI2VuZGlmCS8qIENPTkZJR19PTUFQX0RTUCAqLwogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotI2lmCWRlZmluZWQoQ09ORklHX0kyQ19PTUFQKSB8fCBkZWZpbmVkKENPTkZJR19JMkNfT01BUF9NT0RVTEUpCi0KLSNkZWZpbmUJT01BUDFfSTJDX0JBU0UJCTB4ZmZmYjM4MDAKLSNkZWZpbmUgT01BUDJfSTJDX0JBU0UxCQkweDQ4MDcwMDAwCi0jZGVmaW5lIE9NQVBfSTJDX1NJWkUJCTB4M2YKLSNkZWZpbmUgT01BUDFfSTJDX0lOVAkJSU5UX0kyQwotI2RlZmluZSBPTUFQMl9JMkNfSU5UMQkJNTYKLQotc3RhdGljIHN0cnVjdCByZXNvdXJjZSBpMmNfcmVzb3VyY2VzMVtdID0gewotCXsKLQkJLnN0YXJ0CQk9IDAsCi0JCS5lbmQJCT0gMCwKLQkJLmZsYWdzCQk9IElPUkVTT1VSQ0VfTUVNLAotCX0sCi0JewotCQkuc3RhcnQJCT0gMCwKLQkJLmZsYWdzCQk9IElPUkVTT1VSQ0VfSVJRLAotCX0sCi19OwotCi0vKiBETUEgbm90IHVzZWQ7IHdvcmtzIGFyb3VuZCBlcnJhdHVtIHdyaXRpbmcgdG8gbm9uLWVtcHR5IGkyYyBmaWZvICovCi0KLXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIG9tYXBfaTJjX2RldmljZTEgPSB7Ci0JLm5hbWUgICAgICAgICAgID0gImkyY19vbWFwIiwKLQkuaWQgICAgICAgICAgICAgPSAxLAotCS5udW1fcmVzb3VyY2VzCT0gQVJSQVlfU0laRShpMmNfcmVzb3VyY2VzMSksCi0JLnJlc291cmNlCT0gaTJjX3Jlc291cmNlczEsCi19OwotCi0vKiBTZWUgYWxzbyBhcmNoL2FybS9tYWNoLW9tYXAyL2RldmljZXMuYyBmb3Igc2Vjb25kIEkyQyBvbiAyNHh4ICovCi1zdGF0aWMgdm9pZCBvbWFwX2luaXRfaTJjKHZvaWQpCi17Ci0JaWYgKGNwdV9pc19vbWFwMjR4eCgpKSB7Ci0JCWkyY19yZXNvdXJjZXMxWzBdLnN0YXJ0ID0gT01BUDJfSTJDX0JBU0UxOwotCQlpMmNfcmVzb3VyY2VzMVswXS5lbmQgPSBPTUFQMl9JMkNfQkFTRTEgKyBPTUFQX0kyQ19TSVpFOwotCQlpMmNfcmVzb3VyY2VzMVsxXS5zdGFydCA9IE9NQVAyX0kyQ19JTlQxOwotCX0gZWxzZSB7Ci0JCWkyY19yZXNvdXJjZXMxWzBdLnN0YXJ0ID0gT01BUDFfSTJDX0JBU0U7Ci0JCWkyY19yZXNvdXJjZXMxWzBdLmVuZCA9IE9NQVAxX0kyQ19CQVNFICsgT01BUF9JMkNfU0laRTsKLQkJaTJjX3Jlc291cmNlczFbMV0uc3RhcnQgPSBPTUFQMV9JMkNfSU5UOwotCX0KLQotCS8qIEZJWE1FIGRlZmluZSBhbmQgdXNlIGEgYm9vdCB0YWcsIGluIGNhc2Ugb2YgYm9hcmRzIHRoYXQKLQkgKiBlaXRoZXIgZG9uJ3Qgd2lyZSB1cCBJMkMsIG9yIGNoaXBzIHRoYXQgbXV4IGl0IGRpZmZlcmVudGx5Li4uCi0JICogaXQgY2FuIGluY2x1ZGUgY2xvY2tpbmcgYW5kIGFkZHJlc3MgaW5mbywgbWF5YmUgbW9yZS4KLQkgKi8KLQlpZiAoY3B1X2lzX29tYXAyNHh4KCkpIHsKLQkJb21hcF9jZmdfcmVnKE0xOV8yNFhYX0kyQzFfU0NMKTsKLQkJb21hcF9jZmdfcmVnKEwxNV8yNFhYX0kyQzFfU0RBKTsKLQl9IGVsc2UgewotCQlvbWFwX2NmZ19yZWcoSTJDX1NDTCk7Ci0JCW9tYXBfY2ZnX3JlZyhJMkNfU0RBKTsKLQl9Ci0KLQkodm9pZCkgcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyKCZvbWFwX2kyY19kZXZpY2UxKTsKLX0KLQotI2Vsc2UKLXN0YXRpYyBpbmxpbmUgdm9pZCBvbWFwX2luaXRfaTJjKHZvaWQpIHt9Ci0jZW5kaWYKLQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICNpZglkZWZpbmVkKENPTkZJR19LRVlCT0FSRF9PTUFQKSB8fCBkZWZpbmVkKENPTkZJR19LRVlCT0FSRF9PTUFQX01PRFVMRSkKIAogc3RhdGljIHZvaWQgb21hcF9pbml0X2twKHZvaWQpCkBAIC01MDEsNyArNDM5LDYgQEAKIAkgKiBpbiBhbHBoYWJldGljYWwgb3JkZXIgc28gdGhleSdyZSBlYXNpZXIgdG8gc29ydCB0aHJvdWdoLgogCSAqLwogCW9tYXBfaW5pdF9kc3AoKTsKLQlvbWFwX2luaXRfaTJjKCk7CiAJb21hcF9pbml0X2twKCk7CiAJb21hcF9pbml0X21tYygpOwogCW9tYXBfaW5pdF91d2lyZSgpOwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vcGxhdC1vbWFwL2RtYS5jIGIvYXJjaC9hcm0vcGxhdC1vbWFwL2RtYS5jCmluZGV4IGE0NjY3NmQuLjc5Mzc0MDYgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL3BsYXQtb21hcC9kbWEuYworKysgYi9hcmNoL2FybS9wbGF0LW9tYXAvZG1hLmMKQEAgLTEzNyw3ICsxMzcsNyBAQAogc3RhdGljIGlubGluZSB2b2lkIG9tYXBfZW5hYmxlX2NoYW5uZWxfaXJxKGludCBsY2gpOwogCiAjZGVmaW5lIFJFVklTSVRfMjRYWCgpCQlwcmludGsoS0VSTl9FUlIgIkZJWE1FOiBubyAlcyBvbiAyNHh4XG4iLCBcCi0JCQkJCQlfX0ZVTkNUSU9OX18pOworCQkJCQkJX19mdW5jX18pOwogCiAjaWZkZWYgQ09ORklHX0FSQ0hfT01BUDE1WFgKIC8qIFJldHVybnMgMSBpZiB0aGUgRE1BIG1vZHVsZSBpcyBpbiBPTUFQMTUxMC1jb21wYXRpYmxlIG1vZGUsIDAgb3RoZXJ3aXNlICovCkBAIC02OTksNyArNjk5LDcgQEAKIAl1MzIgcmVnOwogCiAJaWYgKCFjcHVfY2xhc3NfaXNfb21hcDIoKSkgewotCQlwcmludGsoS0VSTl9FUlIgIkZJWE1FOiBubyAlcyBvbiAxNXh4LzE2eHhcbiIsIF9fRlVOQ1RJT05fXyk7CisJCXByaW50ayhLRVJOX0VSUiAiRklYTUU6IG5vICVzIG9uIDE1eHgvMTZ4eFxuIiwgX19mdW5jX18pOwogCQlyZXR1cm47CiAJfQogCkBAIC0xMDIwLDEyICsxMDIwLDEyIEBACiAJfQogCiAJdyA9IE9NQVBfRE1BX0NMTktfQ1RSTF9SRUcobGNoX2hlYWQpOwotCXcgJj0gfigweDBmKTsKKwl3ICY9IH4oMHgxZik7CiAJdyB8PSBsY2hfcXVldWU7CiAJT01BUF9ETUFfQ0xOS19DVFJMX1JFRyhsY2hfaGVhZCkgPSB3OwogCiAJdyA9IE9NQVBfRE1BX0NMTktfQ1RSTF9SRUcobGNoX3F1ZXVlKTsKLQl3ICY9IH4oMHgwZik7CisJdyAmPSB+KDB4MWYpOwogCXcgfD0gKGRtYV9jaGFuW2xjaF9xdWV1ZV0ubmV4dF9saW5rZWRfY2gpOwogCU9NQVBfRE1BX0NMTktfQ1RSTF9SRUcobGNoX3F1ZXVlKSA9IHc7CiB9CkBAIC0xMjQ4LDcgKzEyNDgsNyBAQAogICogQHBhcmFtIGZyYW1lX2NvdW50CiAgKiBAcGFyYW0gY2FsbGJrX2RhdGEgLSBjaGFubmVsIGNhbGxiYWNrIHBhcmFtZXRlciBkYXRhLgogICoKLSAqIEByZXR1cm4gIC0gU3VjY2VzcyA6IHN0YXJ0X2RtYSBzdGF0dXMKKyAqIEByZXR1cm4gIC0gU3VjY2VzcyA6IDAKICAqIAkgICAgICBGYWlsdXJlOiAtRUlOVkFMLy1FQlVTWQogICovCiBpbnQgb21hcF9kbWFfY2hhaW5fYV90cmFuc2ZlcihpbnQgY2hhaW5faWQsIGludCBzcmNfc3RhcnQsIGludCBkZXN0X3N0YXJ0LApAQCAtMTM2Nyw3ICsxMzY3LDcgQEAKIAkJCWRtYV9jaGFuW2xjaF0uZmxhZ3MgfD0gT01BUF9ETUFfQUNUSVZFOwogCQl9CiAJfQotCXJldHVybiBzdGFydF9kbWE7CisJcmV0dXJuIDA7CiB9CiBFWFBPUlRfU1lNQk9MKG9tYXBfZG1hX2NoYWluX2FfdHJhbnNmZXIpOwogCkBAIC0xNjYzLDYgKzE2NjMsNyBAQAogCWlmICghc3RhdHVzKSB7CiAJCWlmIChwcmludGtfcmF0ZWxpbWl0KCkpCiAJCQlwcmludGsoS0VSTl9XQVJOSU5HICJTcHVyaW91cyBETUEgSVJRIGZvciBsY2ggJWRcbiIsIGNoKTsKKwkJb21hcF93cml0ZWwoMSA8PCBjaCwgT01BUF9ETUE0X0lSUVNUQVRVU19MMCk7CiAJCXJldHVybiAwOwogCX0KIAlpZiAodW5saWtlbHkoZG1hX2NoYW5bY2hdLmRldl9pZCA9PSAtMSkpIHsKQEAgLTE3MDUsMTQgKzE3MDYsOCBAQAogCQlzdGF0dXMgPSBPTUFQX0RNQV9DU1JfUkVHKGNoKTsKIAl9CiAKLQlpZiAobGlrZWx5KGRtYV9jaGFuW2NoXS5jYWxsYmFjayAhPSBOVUxMKSkgewotCQlpZiAoZG1hX2NoYW5bY2hdLmNoYWluX2lkICE9IC0xKQotCQkJZG1hX2NoYW5bY2hdLmNhbGxiYWNrKGRtYV9jaGFuW2NoXS5jaGFpbl9pZCwgc3RhdHVzLAotCQkJCQkgICAgICBkbWFfY2hhbltjaF0uZGF0YSk7Ci0JCWVsc2UKLQkJCWRtYV9jaGFuW2NoXS5jYWxsYmFjayhjaCwgc3RhdHVzLCBkbWFfY2hhbltjaF0uZGF0YSk7Ci0KLQl9CisJaWYgKGxpa2VseShkbWFfY2hhbltjaF0uY2FsbGJhY2sgIT0gTlVMTCkpCisJCWRtYV9jaGFuW2NoXS5jYWxsYmFjayhjaCwgc3RhdHVzLCBkbWFfY2hhbltjaF0uZGF0YSk7CiAKIAlPTUFQX0RNQV9DU1JfUkVHKGNoKSA9IHN0YXR1czsKIApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vcGxhdC1vbWFwL2RtdGltZXIuYyBiL2FyY2gvYXJtL3BsYXQtb21hcC9kbXRpbWVyLmMKaW5kZXggZTcxOWQwZS4uMzAyYWQ4ZCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vcGxhdC1vbWFwL2RtdGltZXIuYworKysgYi9hcmNoL2FybS9wbGF0LW9tYXAvZG10aW1lci5jCkBAIC0yNjgsNyArMjY4LDcgQEAKIAlpZiAoaWQgPD0gMCB8fCBpZCA+IGRtX3RpbWVyX2NvdW50IHx8IGRtX3RpbWVyc1tpZC0xXS5yZXNlcnZlZCkgewogCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkbV90aW1lcl9sb2NrLCBmbGFncyk7CiAJCXByaW50aygiQlVHOiB3YXJuaW5nIGF0ICVzOiVkLyVzKCk6IHVuYWJsZSB0byBnZXQgdGltZXIgJWRcbiIsCi0JCSAgICAgICBfX0ZJTEVfXywgX19MSU5FX18sIF9fRlVOQ1RJT05fXywgaWQpOworCQkgICAgICAgX19GSUxFX18sIF9fTElORV9fLCBfX2Z1bmNfXywgaWQpOwogCQlkdW1wX3N0YWNrKCk7CiAJCXJldHVybiBOVUxMOwogCX0KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL3BsYXQtb21hcC9ncGlvLmMgYi9hcmNoL2FybS9wbGF0LW9tYXAvZ3Bpby5jCmluZGV4IDU2ZjRkMTMuLjhjNzhlNGUgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL3BsYXQtb21hcC9ncGlvLmMKKysrIGIvYXJjaC9hcm0vcGxhdC1vbWFwL2dwaW8uYwpAQCAtMzMzLDEzICszMzMsMTQgQEAKIHZvaWQgb21hcF9zZXRfZ3Bpb19kaXJlY3Rpb24oaW50IGdwaW8sIGludCBpc19pbnB1dCkKIHsKIAlzdHJ1Y3QgZ3Bpb19iYW5rICpiYW5rOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKIAlpZiAoY2hlY2tfZ3BpbyhncGlvKSA8IDApCiAJCXJldHVybjsKIAliYW5rID0gZ2V0X2dwaW9fYmFuayhncGlvKTsKLQlzcGluX2xvY2soJmJhbmstPmxvY2spOworCXNwaW5fbG9ja19pcnFzYXZlKCZiYW5rLT5sb2NrLCBmbGFncyk7CiAJX3NldF9ncGlvX2RpcmVjdGlvbihiYW5rLCBnZXRfZ3Bpb19pbmRleChncGlvKSwgaXNfaW5wdXQpOwotCXNwaW5fdW5sb2NrKCZiYW5rLT5sb2NrKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZiYW5rLT5sb2NrLCBmbGFncyk7CiB9CiAKIHN0YXRpYyB2b2lkIF9zZXRfZ3Bpb19kYXRhb3V0KHN0cnVjdCBncGlvX2JhbmsgKmJhbmssIGludCBncGlvLCBpbnQgZW5hYmxlKQpAQCAtNDA2LDEzICs0MDcsMTQgQEAKIHZvaWQgb21hcF9zZXRfZ3Bpb19kYXRhb3V0KGludCBncGlvLCBpbnQgZW5hYmxlKQogewogCXN0cnVjdCBncGlvX2JhbmsgKmJhbms7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKIAogCWlmIChjaGVja19ncGlvKGdwaW8pIDwgMCkKIAkJcmV0dXJuOwogCWJhbmsgPSBnZXRfZ3Bpb19iYW5rKGdwaW8pOwotCXNwaW5fbG9jaygmYmFuay0+bG9jayk7CisJc3Bpbl9sb2NrX2lycXNhdmUoJmJhbmstPmxvY2ssIGZsYWdzKTsKIAlfc2V0X2dwaW9fZGF0YW91dChiYW5rLCBnZXRfZ3Bpb19pbmRleChncGlvKSwgZW5hYmxlKTsKLQlzcGluX3VubG9jaygmYmFuay0+bG9jayk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYmFuay0+bG9jaywgZmxhZ3MpOwogfQogCiBpbnQgb21hcF9nZXRfZ3Bpb19kYXRhaW4oaW50IGdwaW8pCkBAIC02MjQsNiArNjI2LDcgQEAKIAlzdHJ1Y3QgZ3Bpb19iYW5rICpiYW5rOwogCXVuc2lnbmVkIGdwaW87CiAJaW50IHJldHZhbDsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOwogCiAJaWYgKCFjcHVfY2xhc3NfaXNfb21hcDIoKSAmJiBpcnEgPiBJSF9NUFVJT19CQVNFKQogCQlncGlvID0gT01BUF9NUFVJTyhpcnEgLSBJSF9NUFVJT19CQVNFKTsKQEAgLTY0MiwxMyArNjQ1LDEzIEBACiAJCXJldHVybiAtRUlOVkFMOwogCiAJYmFuayA9IGdldF9pcnFfY2hpcF9kYXRhKGlycSk7Ci0Jc3Bpbl9sb2NrKCZiYW5rLT5sb2NrKTsKKwlzcGluX2xvY2tfaXJxc2F2ZSgmYmFuay0+bG9jaywgZmxhZ3MpOwogCXJldHZhbCA9IF9zZXRfZ3Bpb190cmlnZ2VyaW5nKGJhbmssIGdldF9ncGlvX2luZGV4KGdwaW8pLCB0eXBlKTsKIAlpZiAocmV0dmFsID09IDApIHsKIAkJaXJxX2Rlc2NbaXJxXS5zdGF0dXMgJj0gfklSUV9UWVBFX1NFTlNFX01BU0s7CiAJCWlycV9kZXNjW2lycV0uc3RhdHVzIHw9IHR5cGU7CiAJfQotCXNwaW5fdW5sb2NrKCZiYW5rLT5sb2NrKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZiYW5rLT5sb2NrLCBmbGFncyk7CiAJcmV0dXJuIHJldHZhbDsKIH0KIApAQCAtODMwLDExICs4MzMsMTMgQEAKICAqLwogc3RhdGljIGludCBfc2V0X2dwaW9fd2FrZXVwKHN0cnVjdCBncGlvX2JhbmsgKmJhbmssIGludCBncGlvLCBpbnQgZW5hYmxlKQogeworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKIAlzd2l0Y2ggKGJhbmstPm1ldGhvZCkgewogI2lmZGVmIENPTkZJR19BUkNIX09NQVAxNlhYCiAJY2FzZSBNRVRIT0RfTVBVSU86CiAJY2FzZSBNRVRIT0RfR1BJT18xNjEwOgotCQlzcGluX2xvY2soJmJhbmstPmxvY2spOworCQlzcGluX2xvY2tfaXJxc2F2ZSgmYmFuay0+bG9jaywgZmxhZ3MpOwogCQlpZiAoZW5hYmxlKSB7CiAJCQliYW5rLT5zdXNwZW5kX3dha2V1cCB8PSAoMSA8PCBncGlvKTsKIAkJCWVuYWJsZV9pcnFfd2FrZShiYW5rLT5pcnEpOwpAQCAtODQyLDcgKzg0Nyw3IEBACiAJCQlkaXNhYmxlX2lycV93YWtlKGJhbmstPmlycSk7CiAJCQliYW5rLT5zdXNwZW5kX3dha2V1cCAmPSB+KDEgPDwgZ3Bpbyk7CiAJCX0KLQkJc3Bpbl91bmxvY2soJmJhbmstPmxvY2spOworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZiYW5rLT5sb2NrLCBmbGFncyk7CiAJCXJldHVybiAwOwogI2VuZGlmCiAjaWYgZGVmaW5lZChDT05GSUdfQVJDSF9PTUFQMjRYWCkgfHwgZGVmaW5lZChDT05GSUdfQVJDSF9PTUFQMzRYWCkKQEAgLTg1Myw3ICs4NTgsNyBAQAogCQkJCQkoYmFuayAtIGdwaW9fYmFuaykgKiAzMiArIGdwaW8pOwogCQkJcmV0dXJuIC1FSU5WQUw7CiAJCX0KLQkJc3Bpbl9sb2NrKCZiYW5rLT5sb2NrKTsKKwkJc3Bpbl9sb2NrX2lycXNhdmUoJmJhbmstPmxvY2ssIGZsYWdzKTsKIAkJaWYgKGVuYWJsZSkgewogCQkJYmFuay0+c3VzcGVuZF93YWtldXAgfD0gKDEgPDwgZ3Bpbyk7CiAJCQllbmFibGVfaXJxX3dha2UoYmFuay0+aXJxKTsKQEAgLTg2MSw3ICs4NjYsNyBAQAogCQkJZGlzYWJsZV9pcnFfd2FrZShiYW5rLT5pcnEpOwogCQkJYmFuay0+c3VzcGVuZF93YWtldXAgJj0gfigxIDw8IGdwaW8pOwogCQl9Ci0JCXNwaW5fdW5sb2NrKCZiYW5rLT5sb2NrKTsKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYmFuay0+bG9jaywgZmxhZ3MpOwogCQlyZXR1cm4gMDsKICNlbmRpZgogCWRlZmF1bHQ6CkBAIC04OTcsMTYgKzkwMiwxNyBAQAogaW50IG9tYXBfcmVxdWVzdF9ncGlvKGludCBncGlvKQogewogCXN0cnVjdCBncGlvX2JhbmsgKmJhbms7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKIAogCWlmIChjaGVja19ncGlvKGdwaW8pIDwgMCkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKIAliYW5rID0gZ2V0X2dwaW9fYmFuayhncGlvKTsKLQlzcGluX2xvY2soJmJhbmstPmxvY2spOworCXNwaW5fbG9ja19pcnFzYXZlKCZiYW5rLT5sb2NrLCBmbGFncyk7CiAJaWYgKHVubGlrZWx5KGJhbmstPnJlc2VydmVkX21hcCAmICgxIDw8IGdldF9ncGlvX2luZGV4KGdwaW8pKSkpIHsKIAkJcHJpbnRrKEtFUk5fRVJSICJvbWFwLWdwaW86IEdQSU8gJWQgaXMgYWxyZWFkeSByZXNlcnZlZCFcbiIsIGdwaW8pOwogCQlkdW1wX3N0YWNrKCk7Ci0JCXNwaW5fdW5sb2NrKCZiYW5rLT5sb2NrKTsKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYmFuay0+bG9jaywgZmxhZ3MpOwogCQlyZXR1cm4gLTE7CiAJfQogCWJhbmstPnJlc2VydmVkX21hcCB8PSAoMSA8PCBnZXRfZ3Bpb19pbmRleChncGlvKSk7CkBAIC05MjUsNyArOTMxLDcgQEAKIAkJX19yYXdfd3JpdGVsKF9fcmF3X3JlYWRsKHJlZykgfCAoMSA8PCBnZXRfZ3Bpb19pbmRleChncGlvKSksIHJlZyk7CiAJfQogI2VuZGlmCi0Jc3Bpbl91bmxvY2soJmJhbmstPmxvY2spOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmJhbmstPmxvY2ssIGZsYWdzKTsKIAogCXJldHVybiAwOwogfQpAQCAtOTMzLDE1ICs5MzksMTYgQEAKIHZvaWQgb21hcF9mcmVlX2dwaW8oaW50IGdwaW8pCiB7CiAJc3RydWN0IGdwaW9fYmFuayAqYmFuazsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOwogCiAJaWYgKGNoZWNrX2dwaW8oZ3BpbykgPCAwKQogCQlyZXR1cm47CiAJYmFuayA9IGdldF9ncGlvX2JhbmsoZ3Bpbyk7Ci0Jc3Bpbl9sb2NrKCZiYW5rLT5sb2NrKTsKKwlzcGluX2xvY2tfaXJxc2F2ZSgmYmFuay0+bG9jaywgZmxhZ3MpOwogCWlmICh1bmxpa2VseSghKGJhbmstPnJlc2VydmVkX21hcCAmICgxIDw8IGdldF9ncGlvX2luZGV4KGdwaW8pKSkpKSB7CiAJCXByaW50ayhLRVJOX0VSUiAib21hcC1ncGlvOiBHUElPICVkIHdhc24ndCByZXNlcnZlZCFcbiIsIGdwaW8pOwogCQlkdW1wX3N0YWNrKCk7Ci0JCXNwaW5fdW5sb2NrKCZiYW5rLT5sb2NrKTsKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYmFuay0+bG9jaywgZmxhZ3MpOwogCQlyZXR1cm47CiAJfQogI2lmZGVmIENPTkZJR19BUkNIX09NQVAxNlhYCkBAIC05NjAsNyArOTY3LDcgQEAKICNlbmRpZgogCWJhbmstPnJlc2VydmVkX21hcCAmPSB+KDEgPDwgZ2V0X2dwaW9faW5kZXgoZ3BpbykpOwogCV9yZXNldF9ncGlvKGJhbmssIGdwaW8pOwotCXNwaW5fdW5sb2NrKCZiYW5rLT5sb2NrKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZiYW5rLT5sb2NrLCBmbGFncyk7CiB9CiAKIC8qCkBAIC0xMTI3LDEwICsxMTM0LDkgQEAKIHN0YXRpYyB2b2lkIGdwaW9fdW5tYXNrX2lycSh1bnNpZ25lZCBpbnQgaXJxKQogewogCXVuc2lnbmVkIGludCBncGlvID0gaXJxIC0gSUhfR1BJT19CQVNFOwotCXVuc2lnbmVkIGludCBncGlvX2lkeCA9IGdldF9ncGlvX2luZGV4KGdwaW8pOwogCXN0cnVjdCBncGlvX2JhbmsgKmJhbmsgPSBnZXRfaXJxX2NoaXBfZGF0YShpcnEpOwogCi0JX3NldF9ncGlvX2lycWVuYWJsZShiYW5rLCBncGlvX2lkeCwgMSk7CisJX3NldF9ncGlvX2lycWVuYWJsZShiYW5rLCBncGlvLCAxKTsKIH0KIAogc3RhdGljIHN0cnVjdCBpcnFfY2hpcCBncGlvX2lycV9jaGlwID0gewpAQCAtMTE5NCwxMSArMTIwMCwxMiBAQAogewogCXN0cnVjdCBncGlvX2JhbmsJKmJhbmsgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKIAl2b2lkIF9faW9tZW0JCSptYXNrX3JlZyA9IGJhbmstPmJhc2UgKyBPTUFQX01QVUlPX0dQSU9fTUFTS0lUOworCXVuc2lnbmVkIGxvbmcJCWZsYWdzOwogCi0Jc3Bpbl9sb2NrKCZiYW5rLT5sb2NrKTsKKwlzcGluX2xvY2tfaXJxc2F2ZSgmYmFuay0+bG9jaywgZmxhZ3MpOwogCWJhbmstPnNhdmVkX3dha2V1cCA9IF9fcmF3X3JlYWRsKG1hc2tfcmVnKTsKIAlfX3Jhd193cml0ZWwoMHhmZmZmICYgfmJhbmstPnN1c3BlbmRfd2FrZXVwLCBtYXNrX3JlZyk7Ci0Jc3Bpbl91bmxvY2soJmJhbmstPmxvY2spOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmJhbmstPmxvY2ssIGZsYWdzKTsKIAogCXJldHVybiAwOwogfQpAQCAtMTIwNywxMCArMTIxNCwxMSBAQAogewogCXN0cnVjdCBncGlvX2JhbmsJKmJhbmsgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKIAl2b2lkIF9faW9tZW0JCSptYXNrX3JlZyA9IGJhbmstPmJhc2UgKyBPTUFQX01QVUlPX0dQSU9fTUFTS0lUOworCXVuc2lnbmVkIGxvbmcJCWZsYWdzOwogCi0Jc3Bpbl9sb2NrKCZiYW5rLT5sb2NrKTsKKwlzcGluX2xvY2tfaXJxc2F2ZSgmYmFuay0+bG9jaywgZmxhZ3MpOwogCV9fcmF3X3dyaXRlbChiYW5rLT5zYXZlZF93YWtldXAsIG1hc2tfcmVnKTsKLQlzcGluX3VubG9jaygmYmFuay0+bG9jayk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYmFuay0+bG9jaywgZmxhZ3MpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0xMjc3LDYgKzEyODUsMTEgQEAKIHN0YXRpYyBzdHJ1Y3QgY2xrICpncGlvX2ljbGtzW09NQVAzNFhYX05SX0dQSU9TXTsKICNlbmRpZgogCisvKiBUaGlzIGxvY2sgY2xhc3MgdGVsbHMgbG9ja2RlcCB0aGF0IEdQSU8gaXJxcyBhcmUgaW4gYSBkaWZmZXJlbnQKKyAqIGNhdGVnb3J5IHRoYW4gdGhlaXIgcGFyZW50cywgc28gaXQgd29uJ3QgcmVwb3J0IGZhbHNlIHJlY3Vyc2lvbi4KKyAqLworc3RhdGljIHN0cnVjdCBsb2NrX2NsYXNzX2tleSBncGlvX2xvY2tfY2xhc3M7CisKIHN0YXRpYyBpbnQgX19pbml0IF9vbWFwX2dwaW9faW5pdCh2b2lkKQogewogCWludCBpOwpAQCAtMTQ1MCw2ICsxNDYzLDcgQEAKICNlbmRpZgogCQlmb3IgKGogPSBiYW5rLT52aXJ0dWFsX2lycV9zdGFydDsKIAkJICAgICBqIDwgYmFuay0+dmlydHVhbF9pcnFfc3RhcnQgKyBncGlvX2NvdW50OyBqKyspIHsKKwkJCWxvY2tkZXBfc2V0X2NsYXNzKCZpcnFfZGVzY1tqXS5sb2NrLCAmZ3Bpb19sb2NrX2NsYXNzKTsKIAkJCXNldF9pcnFfY2hpcF9kYXRhKGosIGJhbmspOwogCQkJaWYgKGJhbmtfaXNfbXB1aW8oYmFuaykpCiAJCQkJc2V0X2lycV9jaGlwKGosICZtcHVpb19pcnFfY2hpcCk7CkBAIC0xNDg5LDYgKzE1MDMsNyBAQAogCQl2b2lkIF9faW9tZW0gKndha2Vfc3RhdHVzOwogCQl2b2lkIF9faW9tZW0gKndha2VfY2xlYXI7CiAJCXZvaWQgX19pb21lbSAqd2FrZV9zZXQ7CisJCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKIAkJc3dpdGNoIChiYW5rLT5tZXRob2QpIHsKICNpZmRlZiBDT05GSUdfQVJDSF9PTUFQMTZYWApAQCAtMTUwOSwxMSArMTUyNCwxMSBAQAogCQkJY29udGludWU7CiAJCX0KIAotCQlzcGluX2xvY2soJmJhbmstPmxvY2spOworCQlzcGluX2xvY2tfaXJxc2F2ZSgmYmFuay0+bG9jaywgZmxhZ3MpOwogCQliYW5rLT5zYXZlZF93YWtldXAgPSBfX3Jhd19yZWFkbCh3YWtlX3N0YXR1cyk7CiAJCV9fcmF3X3dyaXRlbCgweGZmZmZmZmZmLCB3YWtlX2NsZWFyKTsKIAkJX19yYXdfd3JpdGVsKGJhbmstPnN1c3BlbmRfd2FrZXVwLCB3YWtlX3NldCk7Ci0JCXNwaW5fdW5sb2NrKCZiYW5rLT5sb2NrKTsKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYmFuay0+bG9jaywgZmxhZ3MpOwogCX0KIAogCXJldHVybiAwOwpAQCAtMTUzMCw2ICsxNTQ1LDcgQEAKIAkJc3RydWN0IGdwaW9fYmFuayAqYmFuayA9ICZncGlvX2JhbmtbaV07CiAJCXZvaWQgX19pb21lbSAqd2FrZV9jbGVhcjsKIAkJdm9pZCBfX2lvbWVtICp3YWtlX3NldDsKKwkJdW5zaWduZWQgbG9uZyBmbGFnczsKIAogCQlzd2l0Y2ggKGJhbmstPm1ldGhvZCkgewogI2lmZGVmIENPTkZJR19BUkNIX09NQVAxNlhYCkBAIC0xNTQ4LDEwICsxNTY0LDEwIEBACiAJCQljb250aW51ZTsKIAkJfQogCi0JCXNwaW5fbG9jaygmYmFuay0+bG9jayk7CisJCXNwaW5fbG9ja19pcnFzYXZlKCZiYW5rLT5sb2NrLCBmbGFncyk7CiAJCV9fcmF3X3dyaXRlbCgweGZmZmZmZmZmLCB3YWtlX2NsZWFyKTsKIAkJX19yYXdfd3JpdGVsKGJhbmstPnNhdmVkX3dha2V1cCwgd2FrZV9zZXQpOwotCQlzcGluX3VubG9jaygmYmFuay0+bG9jayk7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmJhbmstPmxvY2ssIGZsYWdzKTsKIAl9CiAKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL3BsYXQtczNjMjR4eC9kbWEuYyBiL2FyY2gvYXJtL3BsYXQtczNjMjR4eC9kbWEuYwppbmRleCBhYzlmZjE2Li42MGYxNjJkIDEwMDY0NAotLS0gYS9hcmNoL2FybS9wbGF0LXMzYzI0eHgvZG1hLmMKKysrIGIvYXJjaC9hcm0vcGxhdC1zM2MyNHh4L2RtYS5jCkBAIC0xMzAsOCArMTMwLDggQEAKIAlkbWFkYmdfZHVtcHJlZ3MoZm5hbWUsIGxpbmUsIGNoYW4sICZzdGF0ZSk7CiB9CiAKLSNkZWZpbmUgZGJnX3Nob3dyZWdzKGNoYW4pIGRtYWRiZ19zaG93cmVncyhfX0ZVTkNUSU9OX18sIF9fTElORV9fLCAoY2hhbikpCi0jZGVmaW5lIGRiZ19zaG93Y2hhbihjaGFuKSBkbWFkYmdfc2hvd2NoYW4oX19GVU5DVElPTl9fLCBfX0xJTkVfXywgKGNoYW4pKQorI2RlZmluZSBkYmdfc2hvd3JlZ3MoY2hhbikgZG1hZGJnX3Nob3dyZWdzKF9fZnVuY19fLCBfX0xJTkVfXywgKGNoYW4pKQorI2RlZmluZSBkYmdfc2hvd2NoYW4oY2hhbikgZG1hZGJnX3Nob3djaGFuKF9fZnVuY19fLCBfX0xJTkVfXywgKGNoYW4pKQogI2Vsc2UKICNkZWZpbmUgZGJnX3Nob3dyZWdzKGNoYW4pIGRvIHsgfSB3aGlsZSgwKQogI2RlZmluZSBkYmdfc2hvd2NoYW4oY2hhbikgZG8geyB9IHdoaWxlKDApCkBAIC00MDMsNyArNDAzLDcgQEAKIAogCQkJaWYgKHMzYzI0MTBfZG1hX3dhaXRmb3Jsb2FkKGNoYW4sIF9fTElORV9fKSA9PSAwKSB7CiAJCQkJcHJfZGVidWcoIiVzOiBidWZmIG5vdCB5ZXQgbG9hZGVkLCBubyBtb3JlIHRvZG9cbiIsCi0JCQkJCSBfX0ZVTkNUSU9OX18pOworCQkJCQkgX19mdW5jX18pOwogCQkJfSBlbHNlIHsKIAkJCQljaGFuLT5sb2FkX3N0YXRlID0gUzNDMjQxMF9ETUFMT0FEXzFSVU5OSU5HOwogCQkJCXMzYzI0MTBfZG1hX2xvYWRidWZmZXIoY2hhbiwgY2hhbi0+bmV4dCk7CkBAIC00NjMsMTYgKzQ2MywxNiBAQAogCQlyZXR1cm4gLUVJTlZBTDsKIAogCXByX2RlYnVnKCIlczogaWQ9JXAsIGRhdGE9JTA4eCwgc2l6ZT0lZFxuIiwKLQkJIF9fRlVOQ1RJT05fXywgaWQsICh1bnNpZ25lZCBpbnQpZGF0YSwgc2l6ZSk7CisJCSBfX2Z1bmNfXywgaWQsICh1bnNpZ25lZCBpbnQpZGF0YSwgc2l6ZSk7CiAKIAlidWYgPSBrbWVtX2NhY2hlX2FsbG9jKGRtYV9rbWVtLCBHRlBfQVRPTUlDKTsKIAlpZiAoYnVmID09IE5VTEwpIHsKIAkJcHJfZGVidWcoIiVzOiBvdXQgb2YgbWVtb3J5ICglbGQgYWxsb2MpXG4iLAotCQkJIF9fRlVOQ1RJT05fXywgKGxvbmcpc2l6ZW9mKCpidWYpKTsKKwkJCSBfX2Z1bmNfXywgKGxvbmcpc2l6ZW9mKCpidWYpKTsKIAkJcmV0dXJuIC1FTk9NRU07CiAJfQogCi0JLy9wcl9kZWJ1ZygiJXM6IG5ldyBidWZmZXIgJXBcbiIsIF9fRlVOQ1RJT05fXywgYnVmKTsKKwkvL3ByX2RlYnVnKCIlczogbmV3IGJ1ZmZlciAlcFxuIiwgX19mdW5jX18sIGJ1Zik7CiAJLy9kYmdfc2hvd2NoYW4oY2hhbik7CiAKIAlidWYtPm5leHQgID0gTlVMTDsKQEAgLTQ4NiwxOCArNDg2LDE4IEBACiAJaWYgKGNoYW4tPmN1cnIgPT0gTlVMTCkgewogCQkvKiB3ZSd2ZSBnb3Qgbm90aGluZyBsb2FkZWQuLi4gKi8KIAkJcHJfZGVidWcoIiVzOiBidWZmZXIgJXAgcXVldWVkIG9udG8gZW1wdHkgY2hhbm5lbFxuIiwKLQkJCSBfX0ZVTkNUSU9OX18sIGJ1Zik7CisJCQkgX19mdW5jX18sIGJ1Zik7CiAKIAkJY2hhbi0+Y3VyciA9IGJ1ZjsKIAkJY2hhbi0+ZW5kICA9IGJ1ZjsKIAkJY2hhbi0+bmV4dCA9IE5VTEw7CiAJfSBlbHNlIHsKIAkJcHJfZGVidWcoImRtYSVkOiAlczogYnVmZmVyICVwIHF1ZXVlZCBvbnRvIG5vbi1lbXB0eSBjaGFubmVsXG4iLAotCQkJIGNoYW4tPm51bWJlciwgX19GVU5DVElPTl9fLCBidWYpOworCQkJIGNoYW4tPm51bWJlciwgX19mdW5jX18sIGJ1Zik7CiAKIAkJaWYgKGNoYW4tPmVuZCA9PSBOVUxMKQogCQkJcHJfZGVidWcoImRtYSVkOiAlczogJXAgbm90IGVtcHR5LCBhbmQgY2hhbi0+ZW5kPT1OVUxMP1xuIiwKLQkJCQkgY2hhbi0+bnVtYmVyLCBfX0ZVTkNUSU9OX18sIGNoYW4pOworCQkJCSBjaGFuLT5udW1iZXIsIF9fZnVuY19fLCBjaGFuKTsKIAogCQljaGFuLT5lbmQtPm5leHQgPSBidWY7CiAJCWNoYW4tPmVuZCA9IGJ1ZjsKQEAgLTU3Miw3ICs1NzIsNyBAQAogCQlpZiAoczNjMjQxMF9kbWFfd2FpdGZvcmxvYWQoY2hhbiwgX19MSU5FX18pID09IDApIHsKIAkJCQkvKiBmbGFnIGVycm9yPyAqLwogCQkJcHJpbnRrKEtFUk5fRVJSICJkbWElZDogdGltZW91dCB3YWl0aW5nIGZvciBsb2FkICglcylcbiIsCi0JCQkgICAgICAgY2hhbi0+bnVtYmVyLCBfX0ZVTkNUSU9OX18pOworCQkJICAgICAgIGNoYW4tPm51bWJlciwgX19mdW5jX18pOwogCQkJcmV0dXJuOwogCQl9CiAJCWJyZWFrOwpAQCAtNjU4LDcgKzY1OCw3IEBACiAKIAkJaWYgKGJ1Zi0+bWFnaWMgIT0gQlVGX01BR0lDKSB7CiAJCQlwcmludGsoS0VSTl9FUlIgImRtYSVkOiAlczogYnVmICVwIGluY29ycmVjdCBtYWdpY1xuIiwKLQkJCSAgICAgICBjaGFuLT5udW1iZXIsIF9fRlVOQ1RJT05fXywgYnVmKTsKKwkJCSAgICAgICBjaGFuLT5udW1iZXIsIF9fZnVuY19fLCBidWYpOwogCQkJcmV0dXJuIElSUV9IQU5ETEVEOwogCQl9CiAKQEAgLTY5Miw3ICs2OTIsNyBAQAogCQkJaWYgKHMzYzI0MTBfZG1hX3dhaXRmb3Jsb2FkKGNoYW4sIF9fTElORV9fKSA9PSAwKSB7CiAJCQkJLyogZmxhZyBlcnJvcj8gKi8KIAkJCQlwcmludGsoS0VSTl9FUlIgImRtYSVkOiB0aW1lb3V0IHdhaXRpbmcgZm9yIGxvYWQgKCVzKVxuIiwKLQkJCQkgICAgICAgY2hhbi0+bnVtYmVyLCBfX0ZVTkNUSU9OX18pOworCQkJCSAgICAgICBjaGFuLT5udW1iZXIsIF9fZnVuY19fKTsKIAkJCQlyZXR1cm4gSVJRX0hBTkRMRUQ7CiAJCQl9CiAKQEAgLTc1OSw3ICs3NTksNyBAQAogCiAJaWYgKCFjaGFuLT5pcnFfY2xhaW1lZCkgewogCQlwcl9kZWJ1ZygiZG1hJWQ6ICVzIDogcmVxdWVzdGluZyBpcnEgJWRcbiIsCi0JCQkgY2hhbm5lbCwgX19GVU5DVElPTl9fLCBjaGFuLT5pcnEpOworCQkJIGNoYW5uZWwsIF9fZnVuY19fLCBjaGFuLT5pcnEpOwogCiAJCWNoYW4tPmlycV9jbGFpbWVkID0gMTsKIAkJbG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOwpAQCAtNzg2LDcgKzc4Niw3IEBACiAKIAkvKiBuZWVkIHRvIHNldHVwICovCiAKLQlwcl9kZWJ1ZygiJXM6IGNoYW5uZWwgaW5pdGlhbGlzZWQsICVwXG4iLCBfX0ZVTkNUSU9OX18sIGNoYW4pOworCXByX2RlYnVnKCIlczogY2hhbm5lbCBpbml0aWFsaXNlZCwgJXBcbiIsIF9fZnVuY19fLCBjaGFuKTsKIAogCXJldHVybiBjaGFuLT5udW1iZXIgfCBETUFDSF9MT1dfTEVWRUw7CiB9CkBAIC04MjMsNyArODIzLDcgQEAKIAogCWlmIChjaGFuLT5zdGF0ZSAhPSBTM0MyNDEwX0RNQV9JRExFKSB7CiAJCXByX2RlYnVnKCIlczogbmVlZCB0byBzdG9wIGRtYSBjaGFubmVsICVwXG4iLAotCQkgICAgICAgX19GVU5DVElPTl9fLCBjaGFuKTsKKwkJICAgICAgIF9fZnVuY19fLCBjaGFuKTsKIAogCQkvKiBwb3NzaWJseSBmbHVzaCB0aGUgY2hhbm5lbCAqLwogCQlzM2MyNDEwX2RtYV9jdHJsKGNoYW5uZWwsIFMzQzI0MTBfRE1BT1BfU1RPUCk7CkBAIC04NTIsNyArODUyLDcgQEAKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCXVuc2lnbmVkIGxvbmcgdG1wOwogCi0JcHJfZGVidWcoIiVzOlxuIiwgX19GVU5DVElPTl9fKTsKKwlwcl9kZWJ1ZygiJXM6XG4iLCBfX2Z1bmNfXyk7CiAKIAlkYmdfc2hvd2NoYW4oY2hhbik7CiAKQEAgLTkwNywxNCArOTA3LDE0IEBACiAJc3RydWN0IHMzYzI0MTBfZG1hX2J1ZiAqYnVmLCAqbmV4dDsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCi0JcHJfZGVidWcoIiVzOiBjaGFuICVwICglZClcbiIsIF9fRlVOQ1RJT05fXywgY2hhbiwgY2hhbi0+bnVtYmVyKTsKKwlwcl9kZWJ1ZygiJXM6IGNoYW4gJXAgKCVkKVxuIiwgX19mdW5jX18sIGNoYW4sIGNoYW4tPm51bWJlcik7CiAKIAlkYmdfc2hvd2NoYW4oY2hhbik7CiAKIAlsb2NhbF9pcnFfc2F2ZShmbGFncyk7CiAKIAlpZiAoY2hhbi0+c3RhdGUgIT0gUzNDMjQxMF9ETUFfSURMRSkgewotCQlwcl9kZWJ1ZygiJXM6IHN0b3BwaW5nIGNoYW5uZWwuLi5cbiIsIF9fRlVOQ1RJT05fXyApOworCQlwcl9kZWJ1ZygiJXM6IHN0b3BwaW5nIGNoYW5uZWwuLi5cbiIsIF9fZnVuY19fICk7CiAJCXMzYzI0MTBfZG1hX2N0cmwoY2hhbi0+bnVtYmVyLCBTM0MyNDEwX0RNQU9QX1NUT1ApOwogCX0KIApAQCAtOTI5LDcgKzkyOSw3IEBACiAJCQluZXh0ID0gYnVmLT5uZXh0OwogCiAJCQlwcl9kZWJ1ZygiJXM6IGZyZWUgYnVmZmVyICVwLCBuZXh0ICVwXG4iLAotCQkJICAgICAgIF9fRlVOQ1RJT05fXywgYnVmLCBidWYtPm5leHQpOworCQkJICAgICAgIF9fZnVuY19fLCBidWYsIGJ1Zi0+bmV4dCk7CiAKIAkJCXMzYzI0MTBfZG1hX2J1ZmZkb25lKGNoYW4sIGJ1ZiwgUzNDMjQxMF9SRVNfQUJPUlQpOwogCQkJczNjMjQxMF9kbWFfZnJlZWJ1ZihidWYpOwpAQCAtOTc2LDcgKzk3Niw3IEBACiAKIAkJCWlmIChzM2MyNDEwX2RtYV93YWl0Zm9ybG9hZChjaGFuLCBfX0xJTkVfXykgPT0gMCkgewogCQkJCXByX2RlYnVnKCIlczogYnVmZiBub3QgeWV0IGxvYWRlZCwgbm8gbW9yZSB0b2RvXG4iLAotCQkJCQkgX19GVU5DVElPTl9fKTsKKwkJCQkJIF9fZnVuY19fKTsKIAkJCX0gZWxzZSB7CiAJCQkJY2hhbi0+bG9hZF9zdGF0ZSA9IFMzQzI0MTBfRE1BTE9BRF8xUlVOTklORzsKIAkJCQlzM2MyNDEwX2RtYV9sb2FkYnVmZmVyKGNoYW4sIGNoYW4tPm5leHQpOwpAQCAtMTA1MCwxNiArMTA1MCwxNiBAQAogCXN0cnVjdCBzM2MyNDEwX2RtYV9jaGFuICpjaGFuID0gbG9va3VwX2RtYV9jaGFubmVsKGNoYW5uZWwpOwogCiAJcHJfZGVidWcoIiVzOiBjaGFuPSVkLCB4ZmVyX3VuaXQ9JWQsIGRjb249JTA4eFxuIiwKLQkJIF9fRlVOQ1RJT05fXywgY2hhbm5lbCwgeGZlcnVuaXQsIGRjb24pOworCQkgX19mdW5jX18sIGNoYW5uZWwsIHhmZXJ1bml0LCBkY29uKTsKIAogCWlmIChjaGFuID09IE5VTEwpCiAJCXJldHVybiAtRUlOVkFMOwogCi0JcHJfZGVidWcoIiVzOiBJbml0aWFsIGRjb24gaXMgJTA4eFxuIiwgX19GVU5DVElPTl9fLCBkY29uKTsKKwlwcl9kZWJ1ZygiJXM6IEluaXRpYWwgZGNvbiBpcyAlMDh4XG4iLCBfX2Z1bmNfXywgZGNvbik7CiAKIAlkY29uIHw9IGNoYW4tPmRjb24gJiBkbWFfc2VsLmRjb25fbWFzazsKIAotCXByX2RlYnVnKCIlczogTmV3IGRjb24gaXMgJTA4eFxuIiwgX19GVU5DVElPTl9fLCBkY29uKTsKKwlwcl9kZWJ1ZygiJXM6IE5ldyBkY29uIGlzICUwOHhcbiIsIF9fZnVuY19fLCBkY29uKTsKIAogCXN3aXRjaCAoeGZlcnVuaXQpIHsKIAljYXNlIDE6CkBAIC0xMDc1LDE0ICsxMDc1LDE0IEBACiAJCWJyZWFrOwogCiAJZGVmYXVsdDoKLQkJcHJfZGVidWcoIiVzOiBiYWQgdHJhbnNmZXIgc2l6ZSAlZFxuIiwgX19GVU5DVElPTl9fLCB4ZmVydW5pdCk7CisJCXByX2RlYnVnKCIlczogYmFkIHRyYW5zZmVyIHNpemUgJWRcbiIsIF9fZnVuY19fLCB4ZmVydW5pdCk7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAogCWRjb24gfD0gUzNDMjQxMF9EQ09OX0hXVFJJRzsKIAlkY29uIHw9IFMzQzI0MTBfRENPTl9JTlRSRVE7CiAKLQlwcl9kZWJ1ZygiJXM6IGRjb24gbm93ICUwOHhcbiIsIF9fRlVOQ1RJT05fXywgZGNvbik7CisJcHJfZGVidWcoIiVzOiBkY29uIG5vdyAlMDh4XG4iLCBfX2Z1bmNfXywgZGNvbik7CiAKIAljaGFuLT5kY29uID0gZGNvbjsKIAljaGFuLT54ZmVyX3VuaXQgPSB4ZmVydW5pdDsKQEAgLTEwOTksNyArMTA5OSw3IEBACiAJaWYgKGNoYW4gPT0gTlVMTCkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlwcl9kZWJ1ZygiJXM6IGNoYW49JXAsIGZsYWdzPSUwOHhcbiIsIF9fRlVOQ1RJT05fXywgY2hhbiwgZmxhZ3MpOworCXByX2RlYnVnKCIlczogY2hhbj0lcCwgZmxhZ3M9JTA4eFxuIiwgX19mdW5jX18sIGNoYW4sIGZsYWdzKTsKIAogCWNoYW4tPmZsYWdzID0gZmxhZ3M7CiAKQEAgLTExMjAsNyArMTEyMCw3IEBACiAJaWYgKGNoYW4gPT0gTlVMTCkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlwcl9kZWJ1ZygiJXM6IGNoYW49JXAsIG9wIHJ0bj0lcFxuIiwgX19GVU5DVElPTl9fLCBjaGFuLCBydG4pOworCXByX2RlYnVnKCIlczogY2hhbj0lcCwgb3AgcnRuPSVwXG4iLCBfX2Z1bmNfXywgY2hhbiwgcnRuKTsKIAogCWNoYW4tPm9wX2ZuID0gcnRuOwogCkBAIC0xMTM2LDcgKzExMzYsNyBAQAogCWlmIChjaGFuID09IE5VTEwpCiAJCXJldHVybiAtRUlOVkFMOwogCi0JcHJfZGVidWcoIiVzOiBjaGFuPSVwLCBjYWxsYmFjayBydG49JXBcbiIsIF9fRlVOQ1RJT05fXywgY2hhbiwgcnRuKTsKKwlwcl9kZWJ1ZygiJXM6IGNoYW49JXAsIGNhbGxiYWNrIHJ0bj0lcFxuIiwgX19mdW5jX18sIGNoYW4sIHJ0bik7CiAKIAljaGFuLT5jYWxsYmFja19mbiA9IHJ0bjsKIApAQCAtMTE3MCw3ICsxMTcwLDcgQEAKIAkJcmV0dXJuIC1FSU5WQUw7CiAKIAlwcl9kZWJ1ZygiJXM6IHNvdXJjZT0lZCwgaHdjZmc9JTA4eCwgZGV2YWRkcj0lMDhseFxuIiwKLQkJIF9fRlVOQ1RJT05fXywgKGludClzb3VyY2UsIGh3Y2ZnLCBkZXZhZGRyKTsKKwkJIF9fZnVuY19fLCAoaW50KXNvdXJjZSwgaHdjZmcsIGRldmFkZHIpOwogCiAJY2hhbi0+c291cmNlID0gc291cmNlOwogCWNoYW4tPmRldl9hZGRyID0gZGV2YWRkcjsKQEAgLTExODAsNyArMTE4MCw3IEBACiAJY2FzZSBTM0MyNDEwX0RNQVNSQ19IVzoKIAkJLyogc291cmNlIGlzIGhhcmR3YXJlICovCiAJCXByX2RlYnVnKCIlczogaHcgc291cmNlLCBkZXZhZGRyPSUwOGx4LCBod2NmZz0lZFxuIiwKLQkJCSBfX0ZVTkNUSU9OX18sIGRldmFkZHIsIGh3Y2ZnKTsKKwkJCSBfX2Z1bmNfXywgZGV2YWRkciwgaHdjZmcpOwogCQlkbWFfd3JyZWcoY2hhbiwgUzNDMjQxMF9ETUFfRElTUkNDLCBod2NmZyAmIDMpOwogCQlkbWFfd3JyZWcoY2hhbiwgUzNDMjQxMF9ETUFfRElTUkMsICBkZXZhZGRyKTsKIAkJZG1hX3dycmVnKGNoYW4sIFMzQzI0MTBfRE1BX0RJRFNUQywgKDA8PDEpIHwgKDA8PDApKTsKQEAgLTExOTAsOCArMTE5MCw4IEBACiAKIAljYXNlIFMzQzI0MTBfRE1BU1JDX01FTToKIAkJLyogc291cmNlIGlzIG1lbW9yeSAqLwotCQlwcl9kZWJ1ZyggIiVzOiBtZW0gc291cmNlLCBkZXZhZGRyPSUwOGx4LCBod2NmZz0lZFxuIiwKLQkJCSAgX19GVU5DVElPTl9fLCBkZXZhZGRyLCBod2NmZyk7CisJCXByX2RlYnVnKCIlczogbWVtIHNvdXJjZSwgZGV2YWRkcj0lMDhseCwgaHdjZmc9JWRcbiIsCisJCQkgX19mdW5jX18sIGRldmFkZHIsIGh3Y2ZnKTsKIAkJZG1hX3dycmVnKGNoYW4sIFMzQzI0MTBfRE1BX0RJU1JDQywgKDA8PDEpIHwgKDA8PDApKTsKIAkJZG1hX3dycmVnKGNoYW4sIFMzQzI0MTBfRE1BX0RJRFNULCAgZGV2YWRkcik7CiAJCWRtYV93cnJlZyhjaGFuLCBTM0MyNDEwX0RNQV9ESURTVEMsIGh3Y2ZnICYgMyk7CmRpZmYgLS1naXQgYS9hcmNoL2F2cjMyL0tjb25maWcgYi9hcmNoL2F2cjMyL0tjb25maWcKaW5kZXggYzc1ZDcwOC4uMjhlMGNhZiAxMDA2NDQKLS0tIGEvYXJjaC9hdnIzMi9LY29uZmlnCisrKyBiL2FyY2gvYXZyMzIvS2NvbmZpZwpAQCAtMTAsNyArMTAsNiBAQAogCSMgV2l0aCBFTUJFRERFRD1uLCB3ZSBnZXQgbG90cyBvZiBzdHVmZiBhdXRvbWF0aWNhbGx5IHNlbGVjdGVkCiAJIyB0aGF0IHdlIHVzdWFsbHkgZG9uJ3QgbmVlZCBvbiBBVlIzMi4KIAlzZWxlY3QgRU1CRURERUQKLQlzZWxlY3QgSEFWRV9JREUKIAlzZWxlY3QgSEFWRV9PUFJPRklMRQogCXNlbGVjdCBIQVZFX0tQUk9CRVMKIAloZWxwCmRpZmYgLS1naXQgYS9hcmNoL2F2cjMyL2tlcm5lbC9zZXR1cC5jIGIvYXJjaC9hdnIzMi9rZXJuZWwvc2V0dXAuYwppbmRleCBlNjZhMDdhLi4yNjg3YjczIDEwMDY0NAotLS0gYS9hcmNoL2F2cjMyL2tlcm5lbC9zZXR1cC5jCisrKyBiL2FyY2gvYXZyMzIva2VybmVsL3NldHVwLmMKQEAgLTE2Myw2ICsxNjMsNyBAQAogCW5ldy0+c3RhcnQgPSBzdGFydDsKIAluZXctPmVuZCA9IGVuZDsKIAluZXctPm5hbWUgPSBuYW1lOworCW5ldy0+c2libGluZyA9IG5leHQ7CiAJbmV3LT5mbGFncyA9IElPUkVTT1VSQ0VfTUVNOwogCiAJKnBwcmV2ID0gbmV3OwpkaWZmIC0tZ2l0IGEvYXJjaC9hdnIzMi9rZXJuZWwvdHJhcHMuYyBiL2FyY2gvYXZyMzIva2VybmVsL3RyYXBzLmMKaW5kZXggY2Y2ZjY4Ni4uYjgzNWM0YyAxMDA2NDQKLS0tIGEvYXJjaC9hdnIzMi9rZXJuZWwvdHJhcHMuYworKysgYi9hcmNoL2F2cjMyL2tlcm5lbC90cmFwcy5jCkBAIC0xNzgsNiArMTc4LDcgQEAKIAlyZXR1cm4gMDsKIH0KIAorI2lmZGVmIENPTkZJR19CVUcKIGludCBpc192YWxpZF9idWdhZGRyKHVuc2lnbmVkIGxvbmcgcGMpCiB7CiAJdW5zaWduZWQgc2hvcnQgb3Bjb2RlOwpAQCAtMTg5LDYgKzE5MCw3IEBACiAKIAlyZXR1cm4gb3Bjb2RlID09IEFWUjMyX0JVR19PUENPREU7CiB9CisjZW5kaWYKIAogYXNtbGlua2FnZSB2b2lkIGRvX2lsbGVnYWxfb3Bjb2RlKHVuc2lnbmVkIGxvbmcgZWNyLCBzdHJ1Y3QgcHRfcmVncyAqcmVncykKIHsKQEAgLTE5Nyw2ICsxOTksNyBAQAogCXZvaWQgX191c2VyICpwYzsKIAlsb25nIGNvZGU7CiAKKyNpZmRlZiBDT05GSUdfQlVHCiAJaWYgKCF1c2VyX21vZGUocmVncykgJiYgKGVjciA9PSBFQ1JfSUxMRUdBTF9PUENPREUpKSB7CiAJCWVudW0gYnVnX3RyYXBfdHlwZSB0eXBlOwogCkBAIC0yMTEsNiArMjE0LDcgQEAKIAkJCWRpZSgiS2VybmVsIEJVRyIsIHJlZ3MsIFNJR0tJTEwpOwogCQl9CiAJfQorI2VuZGlmCiAKIAlsb2NhbF9pcnFfZW5hYmxlKCk7CiAKZGlmZiAtLWdpdCBhL2FyY2gvZnJ2L2tlcm5lbC9lbnRyeS10YWJsZS5TIGIvYXJjaC9mcnYva2VybmVsL2VudHJ5LXRhYmxlLlMKaW5kZXggZDNiOTI1My4uYmYzNWYzMyAxMDA2NDQKLS0tIGEvYXJjaC9mcnYva2VybmVsL2VudHJ5LXRhYmxlLlMKKysrIGIvYXJjaC9mcnYva2VybmVsL2VudHJ5LXRhYmxlLlMKQEAgLTMxNiw4ICszMTYsMTQgQEAKIAkuc2VjdGlvbgkudHJhcC52ZWN0b3IKIAkub3JnCQlUQlJfVFRfVFJBUDAgPj4gMgogCS5sb25nCQlzeXN0ZW1fY2FsbAotCS5yZXB0CQkxMjYKKwkucmVwdAkJMTE5CiAJLmxvbmcJCV9fZW50cnlfdW5zdXBwb3J0ZWRfdHJhcAogCS5lbmRyCisKKwkjIHVzZXJzcGFjZSBhdG9taWMgb3AgZW11bGF0aW9uLCB0cmFwcyAxMjAtMTI2CisJLnJlcHQJCTcKKwkubG9uZwkJX19lbnRyeV9hdG9taWNfb3AKKwkuZW5kcgorCQogCS5vcmcJCVRCUl9UVF9CUkVBSyA+PiAyCiAJLmxvbmcJCV9fZW50cnlfZGVidWdfZXhjZXB0aW9uCmRpZmYgLS1naXQgYS9hcmNoL2Zydi9rZXJuZWwvZW50cnkuUyBiL2FyY2gvZnJ2L2tlcm5lbC9lbnRyeS5TCmluZGV4IGYzNmQ3ZjQuLmI4YTRiOTQgMTAwNjQ0Ci0tLSBhL2FyY2gvZnJ2L2tlcm5lbC9lbnRyeS5TCisrKyBiL2FyY2gvZnJ2L2tlcm5lbC9lbnRyeS5TCkBAIC02NTYsNiArNjU2LDI2IEBACiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMKKyMgaGFuZGxlIGF0b21pYyBvcGVyYXRpb24gZW11bGF0aW9uIGZvciB1c2Vyc3BhY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwkuZ2xvYmwJCV9fZW50cnlfYXRvbWljX29wCitfX2VudHJ5X2F0b21pY19vcDoKKwlMRURTCQkweDYwMTIKKwlzZXRoaS5wCQklaGkoYXRvbWljX29wZXJhdGlvbiksZ3I1CisJc2V0bG8JCSVsbyhhdG9taWNfb3BlcmF0aW9uKSxncjUKKwltb3ZzZwkJZXNmcjEsZ3I4CisJbW92c2cJCWVwY3IwLGdyOQorCW1vdnNnCQllc3IwLGdyMTAKKworCSMgbm93IHRoYXQgd2UndmUgYWNjZXNzZWQgdGhlIGV4Y2VwdGlvbiByZWdzLCB3ZSBjYW4gZW5hYmxlIGV4Y2VwdGlvbnMKKwltb3ZzZwkJcHNyLGdyNAorCW9yaQkJZ3I0LCNQU1JfRVQsZ3I0CisJbW92Z3MJCWdyNCxwc3IKKwlqbXBsCQlAKGdyNSxncjApCTsgY2FsbCBhdG9taWNfb3BlcmF0aW9uKGVzZnIxLGVwY3IwLGVzcjApCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKICMgaGFuZGxlIG1lZGlhIGV4Y2VwdGlvbgogIwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpkaWZmIC0tZ2l0IGEvYXJjaC9mcnYva2VybmVsL2hlYWQuaW5jIGIvYXJjaC9mcnYva2VybmVsL2hlYWQuaW5jCmluZGV4IGQ0MjRjZDIuLmJmZjY2NjIgMTAwNjQ0Ci0tLSBhL2FyY2gvZnJ2L2tlcm5lbC9oZWFkLmluYworKysgYi9hcmNoL2Zydi9rZXJuZWwvaGVhZC5pbmMKQEAgLTQ2LDUgKzQ2LDUgQEAKICNpZmRlZiBDT05GSUdfTU1VCiBfX3NkcmFtX2Jhc2UgPSAweDAwMDAwMDAwCQkvKiBiYXNlIGFkZHJlc3MgdG8gd2hpY2ggU0RSQU0gcmVsb2NhdGVkICovCiAjZWxzZQotX19zZHJhbV9iYXNlID0gMHhjMDAwMDAwMAkJLyogYmFzZSBhZGRyZXNzIHRvIHdoaWNoIFNEUkFNIHJlbG9jYXRlZCAqLworX19zZHJhbV9iYXNlID0gX19wYWdlX29mZnNldAkJLyogYmFzZSBhZGRyZXNzIHRvIHdoaWNoIFNEUkFNIHJlbG9jYXRlZCAqLwogI2VuZGlmCmRpZmYgLS1naXQgYS9hcmNoL2Zydi9rZXJuZWwvc3dpdGNoX3RvLlMgYi9hcmNoL2Zydi9rZXJuZWwvc3dpdGNoX3RvLlMKaW5kZXggYjUyNzVmYS4uYjA2NjY4NiAxMDA2NDQKLS0tIGEvYXJjaC9mcnYva2VybmVsL3N3aXRjaF90by5TCisrKyBiL2FyY2gvZnJ2L2tlcm5lbC9zd2l0Y2hfdG8uUwpAQCAtMTAyLDEzICsxMDIsNiBAQAogCW1vdmdzCQlncjE0LGxyCiAJYmFyCiAKLQlzcmxpCQlncjE1LCMyOCxncjUKLQlzdWJpY2MJCWdyNSwjMHhjLGdyMCxpY2MwCi0JYmVxCQlpY2MwLCMwLDExMWYKLQlicmVhawotCW5vcAotMTExOgotCiAJIyBqdW1wIHRvIF9fc3dpdGNoX2JhY2sgb3IgcmV0X2Zyb21fZm9yayBhcyBhcHByb3ByaWF0ZQogCSMgLSBtb3ZlIHByZXYgdG8gR1I4CiAJbW92Z3MJCWdyNCxwc3IKZGlmZiAtLWdpdCBhL2FyY2gvZnJ2L2tlcm5lbC90cmFwcy5jIGIvYXJjaC9mcnYva2VybmVsL3RyYXBzLmMKaW5kZXggMmU2MDk4Yy4uNzA4OWMyNCAxMDA2NDQKLS0tIGEvYXJjaC9mcnYva2VybmVsL3RyYXBzLmMKKysrIGIvYXJjaC9mcnYva2VybmVsL3RyYXBzLmMKQEAgLTczLDcgKzczLDcgQEAKIAkJICAgICAgZXBjcjAsIGVzcjAsIGVzZnIxKTsKIAogCWluZm8uc2lfZXJybm8JPSAwOwotCWluZm8uc2lfYWRkcgk9ICh2b2lkICopICgoZXBjcjAgJiBFUENSMF9QQykgPyAoZXBjcjAgJiBFUENSMF9QQykgOiBfX2ZyYW1lLT5wYyk7CisJaW5mby5zaV9hZGRyCT0gKHZvaWQgKikgKChlcGNyMCAmIEVQQ1IwX1YpID8gKGVwY3IwICYgRVBDUjBfUEMpIDogX19mcmFtZS0+cGMpOwogCiAJc3dpdGNoIChfX2ZyYW1lLT50YnIgJiBUQlJfVFQpIHsKIAljYXNlIFRCUl9UVF9JTExFR0FMX0lOU1RSOgpAQCAtMTAyLDYgKzEwMiwyMzMgQEAKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogLyoKKyAqIGhhbmRsZSBhdG9taWMgb3BlcmF0aW9ucyB3aXRoIGVycm9ycworICogLSBhcmd1bWVudHMgaW4gZ3I4LCBncjksIGdyMTAKKyAqIC0gb3JpZ2luYWwgbWVtb3J5IHZhbHVlIHBsYWNlZCBpbiBncjUKKyAqIC0gcmVwbGFjZW1lbnQgbWVtb3J5IHZhbHVlIHBsYWNlZCBpbiBncjkKKyAqLworYXNtbGlua2FnZSB2b2lkIGF0b21pY19vcGVyYXRpb24odW5zaWduZWQgbG9uZyBlc2ZyMSwgdW5zaWduZWQgbG9uZyBlcGNyMCwKKwkJCQkgdW5zaWduZWQgbG9uZyBlc3IwKQoreworCXN0YXRpYyBERUZJTkVfU1BJTkxPQ0soYXRvbWljX29wX2xvY2spOworCXVuc2lnbmVkIGxvbmcgeCwgeSwgeiwgKnA7CisJbW1fc2VnbWVudF90IG9sZGZzOworCXNpZ2luZm9fdCBpbmZvOworCWludCByZXQ7CisKKwl5ID0gMDsKKwl6ID0gMDsKKworCW9sZGZzID0gZ2V0X2ZzKCk7CisJaWYgKCF1c2VyX21vZGUoX19mcmFtZSkpCisJCXNldF9mcyhLRVJORUxfRFMpOworCisJc3dpdGNoIChfX2ZyYW1lLT50YnIgJiBUQlJfVFQpIHsKKwkJLyogVElSQSBncjAsIzEyMAorCQkgKiB1MzIgX19hdG9taWNfdXNlcl9jbXB4Y2hnMzIodTMyICpwdHIsIHUzMiB0ZXN0LCB1MzIgbmV3KQorCQkgKi8KKwljYXNlIFRCUl9UVF9BVE9NSUNfQ01QWENIRzMyOgorCQlwID0gKHVuc2lnbmVkIGxvbmcgKikgX19mcmFtZS0+Z3I4OworCQl4ID0gX19mcmFtZS0+Z3I5OworCQl5ID0gX19mcmFtZS0+Z3IxMDsKKworCQlmb3IgKDs7KSB7CisJCQlyZXQgPSBnZXRfdXNlcih6LCBwKTsKKwkJCWlmIChyZXQgPCAwKQorCQkJCWdvdG8gZXJyb3I7CisKKwkJCWlmICh6ICE9IHgpCisJCQkJZ290byBkb25lOworCisJCQlzcGluX2xvY2tfaXJxKCZhdG9taWNfb3BfbG9jayk7CisKKwkJCWlmIChfX2dldF91c2VyKHosIHApID09IDApIHsKKwkJCQlpZiAoeiAhPSB4KQorCQkJCQlnb3RvIGRvbmUyOworCisJCQkJaWYgKF9fcHV0X3VzZXIoeSwgcCkgPT0gMCkKKwkJCQkJZ290byBkb25lMjsKKwkJCQlnb3RvIGVycm9yMjsKKwkJCX0KKworCQkJc3Bpbl91bmxvY2tfaXJxKCZhdG9taWNfb3BfbG9jayk7CisJCX0KKworCQkvKiBUSVJBIGdyMCwjMTIxCisJCSAqIHUzMiBfX2F0b21pY19rZXJuZWxfeGNoZzMyKHZvaWQgKnYsIHUzMiBuZXcpCisJCSAqLworCWNhc2UgVEJSX1RUX0FUT01JQ19YQ0hHMzI6CisJCXAgPSAodW5zaWduZWQgbG9uZyAqKSBfX2ZyYW1lLT5ncjg7CisJCXkgPSBfX2ZyYW1lLT5ncjk7CisKKwkJZm9yICg7OykgeworCQkJcmV0ID0gZ2V0X3VzZXIoeiwgcCk7CisJCQlpZiAocmV0IDwgMCkKKwkJCQlnb3RvIGVycm9yOworCisJCQlzcGluX2xvY2tfaXJxKCZhdG9taWNfb3BfbG9jayk7CisKKwkJCWlmIChfX2dldF91c2VyKHosIHApID09IDApIHsKKwkJCQlpZiAoX19wdXRfdXNlcih5LCBwKSA9PSAwKQorCQkJCQlnb3RvIGRvbmUyOworCQkJCWdvdG8gZXJyb3IyOworCQkJfQorCisJCQlzcGluX3VubG9ja19pcnEoJmF0b21pY19vcF9sb2NrKTsKKwkJfQorCisJCS8qIFRJUkEgZ3IwLCMxMjIKKwkJICogdWxvbmcgX19hdG9taWNfa2VybmVsX1hPUl9yZXR1cm4odWxvbmcgaSwgdWxvbmcgKnYpCisJCSAqLworCWNhc2UgVEJSX1RUX0FUT01JQ19YT1I6CisJCXAgPSAodW5zaWduZWQgbG9uZyAqKSBfX2ZyYW1lLT5ncjg7CisJCXggPSBfX2ZyYW1lLT5ncjk7CisKKwkJZm9yICg7OykgeworCQkJcmV0ID0gZ2V0X3VzZXIoeiwgcCk7CisJCQlpZiAocmV0IDwgMCkKKwkJCQlnb3RvIGVycm9yOworCisJCQlzcGluX2xvY2tfaXJxKCZhdG9taWNfb3BfbG9jayk7CisKKwkJCWlmIChfX2dldF91c2VyKHosIHApID09IDApIHsKKwkJCQl5ID0geCBeIHo7CisJCQkJaWYgKF9fcHV0X3VzZXIoeSwgcCkgPT0gMCkKKwkJCQkJZ290byBkb25lMjsKKwkJCQlnb3RvIGVycm9yMjsKKwkJCX0KKworCQkJc3Bpbl91bmxvY2tfaXJxKCZhdG9taWNfb3BfbG9jayk7CisJCX0KKworCQkvKiBUSVJBIGdyMCwjMTIzCisJCSAqIHVsb25nIF9fYXRvbWljX2tlcm5lbF9PUl9yZXR1cm4odWxvbmcgaSwgdWxvbmcgKnYpCisJCSAqLworCWNhc2UgVEJSX1RUX0FUT01JQ19PUjoKKwkJcCA9ICh1bnNpZ25lZCBsb25nICopIF9fZnJhbWUtPmdyODsKKwkJeCA9IF9fZnJhbWUtPmdyOTsKKworCQlmb3IgKDs7KSB7CisJCQlyZXQgPSBnZXRfdXNlcih6LCBwKTsKKwkJCWlmIChyZXQgPCAwKQorCQkJCWdvdG8gZXJyb3I7CisKKwkJCXNwaW5fbG9ja19pcnEoJmF0b21pY19vcF9sb2NrKTsKKworCQkJaWYgKF9fZ2V0X3VzZXIoeiwgcCkgPT0gMCkgeworCQkJCXkgPSB4IF4gejsKKwkJCQlpZiAoX19wdXRfdXNlcih5LCBwKSA9PSAwKQorCQkJCQlnb3RvIGRvbmUyOworCQkJCWdvdG8gZXJyb3IyOworCQkJfQorCisJCQlzcGluX3VubG9ja19pcnEoJmF0b21pY19vcF9sb2NrKTsKKwkJfQorCisJCS8qIFRJUkEgZ3IwLCMxMjQKKwkJICogdWxvbmcgX19hdG9taWNfa2VybmVsX0FORF9yZXR1cm4odWxvbmcgaSwgdWxvbmcgKnYpCisJCSAqLworCWNhc2UgVEJSX1RUX0FUT01JQ19BTkQ6CisJCXAgPSAodW5zaWduZWQgbG9uZyAqKSBfX2ZyYW1lLT5ncjg7CisJCXggPSBfX2ZyYW1lLT5ncjk7CisKKwkJZm9yICg7OykgeworCQkJcmV0ID0gZ2V0X3VzZXIoeiwgcCk7CisJCQlpZiAocmV0IDwgMCkKKwkJCQlnb3RvIGVycm9yOworCisJCQlzcGluX2xvY2tfaXJxKCZhdG9taWNfb3BfbG9jayk7CisKKwkJCWlmIChfX2dldF91c2VyKHosIHApID09IDApIHsKKwkJCQl5ID0geCAmIHo7CisJCQkJaWYgKF9fcHV0X3VzZXIoeSwgcCkgPT0gMCkKKwkJCQkJZ290byBkb25lMjsKKwkJCQlnb3RvIGVycm9yMjsKKwkJCX0KKworCQkJc3Bpbl91bmxvY2tfaXJxKCZhdG9taWNfb3BfbG9jayk7CisJCX0KKworCQkvKiBUSVJBIGdyMCwjMTI1CisJCSAqIGludCBfX2F0b21pY191c2VyX3N1Yl9yZXR1cm4oYXRvbWljX3QgKnYsIGludCBpKQorCQkgKi8KKwljYXNlIFRCUl9UVF9BVE9NSUNfU1VCOgorCQlwID0gKHVuc2lnbmVkIGxvbmcgKikgX19mcmFtZS0+Z3I4OworCQl4ID0gX19mcmFtZS0+Z3I5OworCisJCWZvciAoOzspIHsKKwkJCXJldCA9IGdldF91c2VyKHosIHApOworCQkJaWYgKHJldCA8IDApCisJCQkJZ290byBlcnJvcjsKKworCQkJc3Bpbl9sb2NrX2lycSgmYXRvbWljX29wX2xvY2spOworCisJCQlpZiAoX19nZXRfdXNlcih6LCBwKSA9PSAwKSB7CisJCQkJeSA9IHogLSB4OworCQkJCWlmIChfX3B1dF91c2VyKHksIHApID09IDApCisJCQkJCWdvdG8gZG9uZTI7CisJCQkJZ290byBlcnJvcjI7CisJCQl9CisKKwkJCXNwaW5fdW5sb2NrX2lycSgmYXRvbWljX29wX2xvY2spOworCQl9CisKKwkJLyogVElSQSBncjAsIzEyNgorCQkgKiBpbnQgX19hdG9taWNfdXNlcl9hZGRfcmV0dXJuKGF0b21pY190ICp2LCBpbnQgaSkKKwkJICovCisJY2FzZSBUQlJfVFRfQVRPTUlDX0FERDoKKwkJcCA9ICh1bnNpZ25lZCBsb25nICopIF9fZnJhbWUtPmdyODsKKwkJeCA9IF9fZnJhbWUtPmdyOTsKKworCQlmb3IgKDs7KSB7CisJCQlyZXQgPSBnZXRfdXNlcih6LCBwKTsKKwkJCWlmIChyZXQgPCAwKQorCQkJCWdvdG8gZXJyb3I7CisKKwkJCXNwaW5fbG9ja19pcnEoJmF0b21pY19vcF9sb2NrKTsKKworCQkJaWYgKF9fZ2V0X3VzZXIoeiwgcCkgPT0gMCkgeworCQkJCXkgPSB6ICsgeDsKKwkJCQlpZiAoX19wdXRfdXNlcih5LCBwKSA9PSAwKQorCQkJCQlnb3RvIGRvbmUyOworCQkJCWdvdG8gZXJyb3IyOworCQkJfQorCisJCQlzcGluX3VubG9ja19pcnEoJmF0b21pY19vcF9sb2NrKTsKKwkJfQorCisJZGVmYXVsdDoKKwkJQlVHKCk7CisJfQorCitkb25lMjoKKwlzcGluX3VubG9ja19pcnEoJmF0b21pY19vcF9sb2NrKTsKK2RvbmU6CisJaWYgKCF1c2VyX21vZGUoX19mcmFtZSkpCisJCXNldF9mcyhvbGRmcyk7CisJX19mcmFtZS0+Z3I1ID0gejsKKwlfX2ZyYW1lLT5ncjkgPSB5OworCXJldHVybjsKKworZXJyb3IyOgorCXNwaW5fdW5sb2NrX2lycSgmYXRvbWljX29wX2xvY2spOworZXJyb3I6CisJaWYgKCF1c2VyX21vZGUoX19mcmFtZSkpCisJCXNldF9mcyhvbGRmcyk7CisJX19mcmFtZS0+cGMgLT0gNDsKKworCWRpZV9pZl9rZXJuZWwoIi0tIEF0b21pYyBPcCBFcnJvciAtLVxuIik7CisKKwlpbmZvLnNpX3NpZ25vCT0gU0lHU0VHVjsKKwlpbmZvLnNpX2NvZGUJPSBTRUdWX0FDQ0VSUjsKKwlpbmZvLnNpX2Vycm5vCT0gMDsKKwlpbmZvLnNpX2FkZHIJPSAodm9pZCAqKSBfX2ZyYW1lLT5wYzsKKworCWZvcmNlX3NpZ19pbmZvKGluZm8uc2lfc2lnbm8sICZpbmZvLCBjdXJyZW50KTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoKICAqCiAgKi8KIGFzbWxpbmthZ2Ugdm9pZCBtZWRpYV9leGNlcHRpb24odW5zaWduZWQgbG9uZyBtc3IwLCB1bnNpZ25lZCBsb25nIG1zcjEpCmRpZmYgLS1naXQgYS9hcmNoL2lhNjQvS2NvbmZpZyBiL2FyY2gvaWE2NC9LY29uZmlnCmluZGV4IDhmYTNmYWYuLmVlZjQ1N2YgMTAwNjQ0Ci0tLSBhL2FyY2gvaWE2NC9LY29uZmlnCisrKyBiL2FyY2gvaWE2NC9LY29uZmlnCkBAIC0yODMsNiArMjgzLDE3IEBACiAJZGVmYXVsdCAiMTciIGlmIEhVR0VUTEJfUEFHRQogCWRlZmF1bHQgIjExIgogCitjb25maWcgVklSVF9DUFVfQUNDT1VOVElORworCWJvb2wgIkRldGVybWluaXN0aWMgdGFzayBhbmQgQ1BVIHRpbWUgYWNjb3VudGluZyIKKwlkZWZhdWx0IG4KKwloZWxwCisJICBTZWxlY3QgdGhpcyBvcHRpb24gdG8gZW5hYmxlIG1vcmUgYWNjdXJhdGUgdGFzayBhbmQgQ1BVIHRpbWUKKwkgIGFjY291bnRpbmcuICBUaGlzIGlzIGRvbmUgYnkgcmVhZGluZyBhIENQVSBjb3VudGVyIG9uIGVhY2gKKwkgIGtlcm5lbCBlbnRyeSBhbmQgZXhpdCBhbmQgb24gdHJhbnNpdGlvbnMgd2l0aGluIHRoZSBrZXJuZWwKKwkgIGJldHdlZW4gc3lzdGVtLCBzb2Z0aXJxIGFuZCBoYXJkaXJxIHN0YXRlLCBzbyB0aGVyZSBpcyBhCisJICBzbWFsbCBwZXJmb3JtYW5jZSBpbXBhY3QuCisJICBJZiBpbiBkb3VidCwgc2F5IE4gaGVyZS4KKwogY29uZmlnIFNNUAogCWJvb2wgIlN5bW1ldHJpYyBtdWx0aS1wcm9jZXNzaW5nIHN1cHBvcnQiCiAJaGVscApkaWZmIC0tZ2l0IGEvYXJjaC9pYTY0L2lhMzIvZWxmY29yZTMyLmggYi9hcmNoL2lhNjQvaWEzMi9lbGZjb3JlMzIuaAppbmRleCA0NDZjOWFhLi45YTNhYmY1IDEwMDY0NAotLS0gYS9hcmNoL2lhNjQvaWEzMi9lbGZjb3JlMzIuaAorKysgYi9hcmNoL2lhNjQvaWEzMi9lbGZjb3JlMzIuaApAQCAtMzAsNyArMzAsMTkgQEAKIAlpbnQJc2lfZXJybm87CQkJLyogZXJybm8gKi8KIH07CiAKLSNkZWZpbmUgamlmZmllc190b190aW1ldmFsKGEsYikgZG8geyAoYiktPnR2X3VzZWMgPSAwOyAoYiktPnR2X3NlYyA9IChhKS9IWjsgfXdoaWxlKDApCisjaWZkZWYgQ09ORklHX1ZJUlRfQ1BVX0FDQ09VTlRJTkcKKy8qCisgKiBIYWNrcyBhcmUgaGVyZSBzaW5jZSB0eXBlcyBiZXR3ZWVuIGNvbXBhdF90aW1ldmFsICg9IHBhaXIgb2YgczMyKSBhbmQKKyAqIGlhNjQtbmF0aXZlIHRpbWV2YWwgKD0gcGFpciBvZiBzNjQpIGFyZSBub3QgY29tcGF0aWJsZSwgYXQgbGVhc3QgYSBmaWxlCisgKiBhcmNoL2lhNjQvaWEzMi8uLi8uLi8uLi9mcy9iaW5mbXRfZWxmLmMgd2lsbCBnZXQgd2FybmluZ3MgZnJvbSBjb21waWxlciBvbgorICogdXNlIG9mIGNwdXRpbWVfdG9fdGltZXZhbCgpLCB3aGljaCB1c3VhbGx5IGFuIGFsaWFzIG9mIGppZmZpZXNfdG9fdGltZXZhbCgpLgorICovCisjZGVmaW5lIGNwdXRpbWVfdG9fdGltZXZhbChhLGIpIFwKKwlkbyB7IChiKS0+dHZfdXNlYyA9IDA7IChiKS0+dHZfc2VjID0gKGEpL05TRUNfUEVSX1NFQzsgfSB3aGlsZSgwKQorI2Vsc2UKKyNkZWZpbmUgamlmZmllc190b190aW1ldmFsKGEsYikgXAorCWRvIHsgKGIpLT50dl91c2VjID0gMDsgKGIpLT50dl9zZWMgPSAoYSkvSFo7IH0gd2hpbGUoMCkKKyNlbmRpZgogCiBzdHJ1Y3QgZWxmX3Byc3RhdHVzCiB7CmRpZmYgLS1naXQgYS9hcmNoL2lhNjQva2VybmVsL2FzbS1vZmZzZXRzLmMgYi9hcmNoL2lhNjQva2VybmVsL2FzbS1vZmZzZXRzLmMKaW5kZXggMGFlYmM2Zi4uNTg2NTEzMCAxMDA2NDQKLS0tIGEvYXJjaC9pYTY0L2tlcm5lbC9hc20tb2Zmc2V0cy5jCisrKyBiL2FyY2gvaWE2NC9rZXJuZWwvYXNtLW9mZnNldHMuYwpAQCAtMzksNiArMzksMTIgQEAKIAlERUZJTkUoVElfRkxBR1MsIG9mZnNldG9mKHN0cnVjdCB0aHJlYWRfaW5mbywgZmxhZ3MpKTsKIAlERUZJTkUoVElfQ1BVLCBvZmZzZXRvZihzdHJ1Y3QgdGhyZWFkX2luZm8sIGNwdSkpOwogCURFRklORShUSV9QUkVfQ09VTlQsIG9mZnNldG9mKHN0cnVjdCB0aHJlYWRfaW5mbywgcHJlZW1wdF9jb3VudCkpOworI2lmZGVmIENPTkZJR19WSVJUX0NQVV9BQ0NPVU5USU5HCisJREVGSU5FKFRJX0FDX1NUQU1QLCBvZmZzZXRvZihzdHJ1Y3QgdGhyZWFkX2luZm8sIGFjX3N0YW1wKSk7CisJREVGSU5FKFRJX0FDX0xFQVZFLCBvZmZzZXRvZihzdHJ1Y3QgdGhyZWFkX2luZm8sIGFjX2xlYXZlKSk7CisJREVGSU5FKFRJX0FDX1NUSU1FLCBvZmZzZXRvZihzdHJ1Y3QgdGhyZWFkX2luZm8sIGFjX3N0aW1lKSk7CisJREVGSU5FKFRJX0FDX1VUSU1FLCBvZmZzZXRvZihzdHJ1Y3QgdGhyZWFkX2luZm8sIGFjX3V0aW1lKSk7CisjZW5kaWYKIAogCUJMQU5LKCk7CiAKZGlmZiAtLWdpdCBhL2FyY2gvaWE2NC9rZXJuZWwvZW50cnkuUyBiL2FyY2gvaWE2NC9rZXJuZWwvZW50cnkuUwppbmRleCAzYzMzMWM0Li5iMGJlNGEyIDEwMDY0NAotLS0gYS9hcmNoL2lhNjQva2VybmVsL2VudHJ5LlMKKysrIGIvYXJjaC9pYTY0L2tlcm5lbC9lbnRyeS5TCkBAIC03MTAsNiArNzEwLDE2IEBACiAocFVTdGspCWNtcC5lcS51bmMgcDYscDA9cjAscjAJCS8vIHA2IDwtIHBVU3RrCiAjZW5kaWYKIC53b3JrX3Byb2Nlc3NlZF9zeXNjYWxsOgorI2lmZGVmIENPTkZJR19WSVJUX0NQVV9BQ0NPVU5USU5HCisJYWRkcyByMj1QVChMT0FEUlMpKzE2LHIxMgorKHBVU3RrKQltb3YubSByMjI9YXIuaXRjCQkJLy8gZmV0Y2ggdGltZSBhdCBsZWF2ZQorCWFkZHMgcjE4PVRJX0ZMQUdTK0lBNjRfVEFTS19TSVpFLHIxMworCTs7CisocDYpCWxkNCByMzE9W3IxOF0JCQkJLy8gbG9hZCBjdXJyZW50X3RocmVhZF9pbmZvKCktPmZsYWdzCisJbGQ4IHIxOT1bcjJdLFBUKEI2KS1QVChMT0FEUlMpCQkvLyBsb2FkIGFyLnJzYyB2YWx1ZSBmb3IgImxvYWRycyIKKwlhZGRzIHIzPVBUKEFSX0JTUFNUT1JFKSsxNixyMTIJCS8vIGRlZmVycmVkCisJOzsKKyNlbHNlCiAJYWRkcyByMj1QVChMT0FEUlMpKzE2LHIxMgogCWFkZHMgcjM9UFQoQVJfQlNQU1RPUkUpKzE2LHIxMgogCWFkZHMgcjE4PVRJX0ZMQUdTK0lBNjRfVEFTS19TSVpFLHIxMwpAQCAtNzE4LDYgKzcyOCw3IEBACiAJbGQ4IHIxOT1bcjJdLFBUKEI2KS1QVChMT0FEUlMpCQkvLyBsb2FkIGFyLnJzYyB2YWx1ZSBmb3IgImxvYWRycyIKIAlub3AuaSAwCiAJOzsKKyNlbmRpZgogCW1vdiByMTY9YXIuYnNwCQkJCS8vIE0yICBnZXQgZXhpc3RpbmcgYmFja2luZyBzdG9yZSBwb2ludGVyCiAJbGQ4IHIxOD1bcjJdLFBUKFI5KS1QVChCNikJCS8vIGxvYWQgYjYKIChwNikJYW5kIHIxNT1USUZfV09SS19NQVNLLHIzMQkJLy8gYW55IHdvcmsgb3RoZXIgdGhhbiBUSUZfU1lTQ0FMTF9UUkFDRT8KQEAgLTczNywxMiArNzQ4LDIxIEBACiAKIAlsZDggcjI5PVtyMl0sMTYJCS8vIE0wfDEgbG9hZCBjci5pcHNyCiAJbGQ4IHIyOD1bcjNdLDE2CQkvLyBNMHwxIGxvYWQgY3IuaWlwCisjaWZkZWYgQ09ORklHX1ZJUlRfQ1BVX0FDQ09VTlRJTkcKKyhwVVN0aykgYWRkIHIxND1USV9BQ19MRUFWRStJQTY0X1RBU0tfU0laRSxyMTMKKwk7OworCWxkOCByMzA9W3IyXSwxNgkJLy8gTTB8MSBsb2FkIGNyLmlmcworCWxkOCByMjU9W3IzXSwxNgkJLy8gTTB8MSBsb2FkIGFyLnVuYXQKKyhwVVN0aykgYWRkIHIxNT1JQTY0X1RBU0tfVEhSRUFEX09OX1VTVEFDS19PRkZTRVQscjEzCisJOzsKKyNlbHNlCiAJbW92IHIyMj1yMAkJLy8gQSAgICBjbGVhciByMjIKIAk7OwogCWxkOCByMzA9W3IyXSwxNgkJLy8gTTB8MSBsb2FkIGNyLmlmcwogCWxkOCByMjU9W3IzXSwxNgkJLy8gTTB8MSBsb2FkIGFyLnVuYXQKIChwVVN0aykgYWRkIHIxND1JQTY0X1RBU0tfVEhSRUFEX09OX1VTVEFDS19PRkZTRVQscjEzCiAJOzsKKyNlbmRpZgogCWxkOCByMjY9W3IyXSxQVChCMCktUFQoQVJfUEZTKQkvLyBNMHwxIGxvYWQgYXIucGZzCiAocEtTdGspCW1vdiByMjI9cHNyCQkJLy8gTTIgICByZWFkIFBTUiBub3cgdGhhdCBpbnRlcnJ1cHRzIGFyZSBkaXNhYmxlZAogCW5vcCAwCkBAIC03NTksNyArNzc5LDExIEBACiAJbGQ4LmZpbGwgcjE9W3IzXSwxNgkJCS8vIE0wfDEgbG9hZCByMQogKHBVU3RrKSBtb3YgcjE3PTEJCQkJLy8gQQogCTs7CisjaWZkZWYgQ09ORklHX1ZJUlRfQ1BVX0FDQ09VTlRJTkcKKyhwVVN0aykgc3QxIFtyMTVdPXIxNwkJCQkvLyBNMnwzCisjZWxzZQogKHBVU3RrKSBzdDEgW3IxNF09cjE3CQkJCS8vIE0yfDMKKyNlbmRpZgogCWxkOC5maWxsIHIxMz1bcjNdLDE2CQkJLy8gTTB8MQogCW1vdiBmOD1mMAkJCQkvLyBGICAgIGNsZWFyIGY4CiAJOzsKQEAgLTc3NSwxMiArNzk5LDIyIEBACiAJc2hyLnUgcjE4PXIxOSwxNgkJLy8gSTB8MSBnZXQgYnl0ZSBzaXplIG9mIGV4aXN0aW5nICJkaXJ0eSIgcGFydGl0aW9uCiAJY292ZXIJCQkJLy8gQiAgICBhZGQgY3VycmVudCBmcmFtZSBpbnRvIGRpcnR5IHBhcnRpdGlvbiAmIHNldCBjci5pZnMKIAk7OworI2lmZGVmIENPTkZJR19WSVJUX0NQVV9BQ0NPVU5USU5HCisJbW92IHIxOT1hci5ic3AJCQkvLyBNMiAgIGdldCBuZXcgYmFja2luZyBzdG9yZSBwb2ludGVyCisJc3Q4IFtyMTRdPXIyMgkJCS8vIE0Jc2F2ZSB0aW1lIGF0IGxlYXZlCisJbW92IGYxMD1mMAkJCS8vIEYgICAgY2xlYXIgZjEwCisKKwltb3YgcjIyPXIwCQkJLy8gQQljbGVhciByMjIKKwltb3ZsIHIxND1fX2tlcm5lbF9zeXNjYWxsX3ZpYV9lcGMgLy8gWAorCTs7CisjZWxzZQogCW1vdiByMTk9YXIuYnNwCQkJLy8gTTIgICBnZXQgbmV3IGJhY2tpbmcgc3RvcmUgcG9pbnRlcgogCW1vdiBmMTA9ZjAJCQkvLyBGICAgIGNsZWFyIGYxMAogCiAJbm9wLm0gMAogCW1vdmwgcjE0PV9fa2VybmVsX3N5c2NhbGxfdmlhX2VwYyAvLyBYCiAJOzsKKyNlbmRpZgogCW1vdi5tIGFyLmNzZD1yMAkJCS8vIE0yICAgY2xlYXIgYXIuY3NkCiAJbW92Lm0gYXIuY2N2PXIwCQkJLy8gTTIgICBjbGVhciBhci5jY3YKIAltb3YgYjc9cjE0CQkJLy8gSTAgICBjbGVhciBiNyAoaGludCB3aXRoIF9fa2VybmVsX3N5c2NhbGxfdmlhX2VwYykKQEAgLTkxMywxMCArOTQ3LDE4IEBACiAJYWRkcyByMTY9UFQoQ1JfSVBTUikrMTYscjEyCiAJYWRkcyByMTc9UFQoQ1JfSUlQKSsxNixyMTIKIAorI2lmZGVmIENPTkZJR19WSVJUX0NQVV9BQ0NPVU5USU5HCisJLnByZWQucmVsLm11dGV4IHBVU3RrLHBLU3RrCisocEtTdGspCW1vdiByMjI9cHNyCQkvLyBNMiByZWFkIFBTUiBub3cgdGhhdCBpbnRlcnJ1cHRzIGFyZSBkaXNhYmxlZAorKHBVU3RrKQltb3YubSByMjI9YXIuaXRjCS8vIE0gIGZldGNoIHRpbWUgYXQgbGVhdmUKKwlub3AuaSAwCisJOzsKKyNlbHNlCiAocEtTdGspCW1vdiByMjI9cHNyCQkvLyBNMiByZWFkIFBTUiBub3cgdGhhdCBpbnRlcnJ1cHRzIGFyZSBkaXNhYmxlZAogCW5vcC5pIDAKIAlub3AuaSAwCiAJOzsKKyNlbmRpZgogCWxkOCByMjk9W3IxNl0sMTYJLy8gbG9hZCBjci5pcHNyCiAJbGQ4IHIyOD1bcjE3XSwxNgkvLyBsb2FkIGNyLmlpcAogCTs7CkBAIC05MzgsMTUgKzk4MCwzNyBAQAogCTs7CiAJbGQ4LmZpbGwgcjEyPVtyMTZdLDE2CiAJbGQ4LmZpbGwgcjEzPVtyMTddLDE2CisjaWZkZWYgQ09ORklHX1ZJUlRfQ1BVX0FDQ09VTlRJTkcKKyhwVVN0aykJYWRkcyByMz1USV9BQ19MRUFWRStJQTY0X1RBU0tfU0laRSxyMTgKKyNlbHNlCiAocFVTdGspCWFkZHMgcjE4PUlBNjRfVEFTS19USFJFQURfT05fVVNUQUNLX09GRlNFVCxyMTgKKyNlbmRpZgogCTs7CiAJbGQ4IHIyMD1bcjE2XSwxNgkvLyBhci5mcHNyCiAJbGQ4LmZpbGwgcjE1PVtyMTddLDE2CisjaWZkZWYgQ09ORklHX1ZJUlRfQ1BVX0FDQ09VTlRJTkcKKyhwVVN0aykJYWRkcyByMTg9SUE2NF9UQVNLX1RIUkVBRF9PTl9VU1RBQ0tfT0ZGU0VULHIxOAkvLyBkZWZlcnJlZAorI2VuZGlmCiAJOzsKIAlsZDguZmlsbCByMTQ9W3IxNl0sMTYKIAlsZDguZmlsbCByMj1bcjE3XQogKHBVU3RrKQltb3YgcjE3PTEKIAk7OworI2lmZGVmIENPTkZJR19WSVJUX0NQVV9BQ0NPVU5USU5HCisJLy8gIG1taV8gOiAgbGQ4IHN0MSBzaHI7OyAgICAgICAgIG1taV8gOiBzdDggc3QxIHNocjs7CisJLy8gIG1pYiAgOiAgbW92IGFkZCBiciAgICAgICAgLT4gIG1pYiAgOiBsZDggYWRkIGJyCisJLy8gIGJiYl8gOiAgYnIgIG5vcCBjb3Zlcjs7ICAgICAgIG1iYl8gOiBtb3YgYnIgIGNvdmVyOzsKKwkvLworCS8vICBubyBvbmUgcmVxdWlyZSBic3AgaW4gcjE2IGlmIChwS1N0aykgYnJhbmNoIGlzIHNlbGVjdGVkLgorKHBVU3RrKQlzdDggW3IzXT1yMjIJCS8vIHNhdmUgdGltZSBhdCBsZWF2ZQorKHBVU3RrKQlzdDEgW3IxOF09cjE3CQkvLyByZXN0b3JlIGN1cnJlbnQtPnRocmVhZC5vbl91c3RhY2sKKwlzaHIudSByMTg9cjE5LDE2CS8vIGdldCBieXRlIHNpemUgb2YgZXhpc3RpbmcgImRpcnR5IiBwYXJ0aXRpb24KKwk7OworCWxkOC5maWxsIHIzPVtyMTZdCS8vIGRlZmVycmVkCisJTE9BRF9QSFlTX1NUQUNLX1JFR19TSVpFKHIxNykKKyhwS1N0aykJYnIuY29uZC5kcG50IHNraXBfcmJzX3N3aXRjaAorCW1vdiByMTY9YXIuYnNwCQkvLyBnZXQgZXhpc3RpbmcgYmFja2luZyBzdG9yZSBwb2ludGVyCisjZWxzZQogCWxkOC5maWxsIHIzPVtyMTZdCiAocFVTdGspCXN0MSBbcjE4XT1yMTcJCS8vIHJlc3RvcmUgY3VycmVudC0+dGhyZWFkLm9uX3VzdGFjawogCXNoci51IHIxOD1yMTksMTYJLy8gZ2V0IGJ5dGUgc2l6ZSBvZiBleGlzdGluZyAiZGlydHkiIHBhcnRpdGlvbgpAQCAtOTU0LDYgKzEwMTgsNyBAQAogCW1vdiByMTY9YXIuYnNwCQkvLyBnZXQgZXhpc3RpbmcgYmFja2luZyBzdG9yZSBwb2ludGVyCiAJTE9BRF9QSFlTX1NUQUNLX1JFR19TSVpFKHIxNykKIChwS1N0aykJYnIuY29uZC5kcG50IHNraXBfcmJzX3N3aXRjaAorI2VuZGlmCiAKIAkvKgogCSAqIFJlc3RvcmUgdXNlciBiYWNraW5nIHN0b3JlLgpkaWZmIC0tZ2l0IGEvYXJjaC9pYTY0L2tlcm5lbC9mc3lzLlMgYi9hcmNoL2lhNjQva2VybmVsL2ZzeXMuUwppbmRleCA0NDg0MTk3Li4zNTdiN2UyIDEwMDY0NAotLS0gYS9hcmNoL2lhNjQva2VybmVsL2ZzeXMuUworKysgYi9hcmNoL2lhNjQva2VybmVsL2ZzeXMuUwpAQCAtMjEwLDI3ICsyMTAsMjUgQEAKIAkvLyBOb3RlIHRoYXQgaW5zdHJ1Y3Rpb25zIGFyZSBvcHRpbWl6ZWQgZm9yIE1jS2lubGV5LiBNY0tpbmxleSBjYW4KIAkvLyBwcm9jZXNzIHR3byBidW5kbGVzIHNpbXVsdGFuZW91c2x5IGFuZCB0aGVyZWZvcmUgd2UgY29udGludW91c2x5CiAJLy8gdHJ5IHRvIGZlZWQgdGhlIENQVSB0d28gYnVuZGxlcyBhbmQgdGhlbiBhIHN0b3AuCi0JLy8KLQkvLyBBZGRpdGlvbmFsIG5vdGUgdGhhdCBjb2RlIGhhcyBjaGFuZ2VkIGEgbG90LiBPcHRpbWl6YXRpb24gaXMgVEJELgotCS8vIENvbW1lbnRzIGJlZ2luIHdpdGggIj8iIGFyZSBtYXliZSBvdXRkYXRlZC4KLQl0bmF0Lm56IHA2LHAwID0gcjMxCS8vID8gYnJhbmNoIGRlZmVycmVkIHRvIGZpdCBsYXRlciBidW5kbGUKLQltb3YgcHIgPSByMzAsMHhjMDAwCS8vIFNldCBwcmVkaWNhdGVzIGFjY29yZGluZyB0byBmdW5jdGlvbgorCiAJYWRkIHIyID0gVElfRkxBR1MrSUE2NF9UQVNLX1NJWkUscjE2CisJdG5hdC5ueiBwNixwMCA9IHIzMQkJLy8gZ3VhcmQgYWdhaW5zdCBOYXQgYXJndW1lbnQKKyhwNikJYnIuY29uZC5zcG50LmZldyAuZmFpbF9laW52YWwKIAltb3ZsIHIyMCA9IGZzeXNjYWxsX2d0b2RfZGF0YSAvLyBsb2FkIGZzeXNjYWxsIGdldHRpbWVvZmRheSBkYXRhIGFkZHJlc3MKIAk7OworCWxkNCByMiA9IFtyMl0JCQkvLyBwcm9jZXNzIHdvcmsgcGVuZGluZyBmbGFncwogCW1vdmwgcjI5ID0gaXRjX2ppdHRlcl9kYXRhCS8vIGl0Y19qaXR0ZXIKIAlhZGQgcjIyID0gSUE2NF9HVE9EX1dBTExfVElNRV9PRkZTRVQscjIwCS8vIHdhbGxfdGltZQotCWxkNCByMiA9IFtyMl0JCS8vIHByb2Nlc3Mgd29yayBwZW5kaW5nIGZsYWdzCi0JOzsKLShwMTUpCWFkZCByMjIgPSBJQTY0X0dUT0RfTU9OT19USU1FX09GRlNFVCxyMjAJLy8gbW9ub3RvbmljX3RpbWUKIAlhZGQgcjIxID0gSUE2NF9DTEtTUkNfTU1JT19PRkZTRVQscjIwCi0JYWRkIHIxOSA9IElBNjRfSVRDX0xBU1RDWUNMRV9PRkZTRVQscjI5Ci0JYW5kIHIyID0gVElGX0FMTFdPUktfTUFTSyxyMgotKHA2KSAgICBici5jb25kLnNwbnQuZmV3IC5mYWlsX2VpbnZhbAkvLyA/IGRlZmVycmVkIGJyYW5jaAorCW1vdiBwciA9IHIzMCwweGMwMDAJLy8gU2V0IHByZWRpY2F0ZXMgYWNjb3JkaW5nIHRvIGZ1bmN0aW9uCiAJOzsKLQlhZGQgcjI2ID0gSUE2NF9DTEtTUkNfQ1lDTEVfTEFTVF9PRkZTRVQscjIwIC8vIGNsa3NyY19jeWNsZV9sYXN0CisJYW5kIHIyID0gVElGX0FMTFdPUktfTUFTSyxyMgorCWFkZCByMTkgPSBJQTY0X0lUQ19MQVNUQ1lDTEVfT0ZGU0VULHIyOQorKHAxNSkJYWRkIHIyMiA9IElBNjRfR1RPRF9NT05PX1RJTUVfT0ZGU0VULHIyMAkvLyBtb25vdG9uaWNfdGltZQorCTs7CisJYWRkIHIyNiA9IElBNjRfQ0xLU1JDX0NZQ0xFX0xBU1RfT0ZGU0VULHIyMAkvLyBjbGtzcmNfY3ljbGVfbGFzdAogCWNtcC5uZSBwNiwgcDAgPSAwLCByMgkvLyBGYWxsYmFjayBpZiB3b3JrIGlzIHNjaGVkdWxlZAotKHA2KSAgICBici5jb25kLnNwbnQubWFueSBmc3lzX2ZhbGxiYWNrX3N5c2NhbGwKKyhwNikJYnIuY29uZC5zcG50Lm1hbnkgZnN5c19mYWxsYmFja19zeXNjYWxsCiAJOzsKIAkvLyBCZWdpbiBjcml0aWNhbCBzZWN0aW9uCiAudGltZV9yZWRvOgpAQCAtMjU4LDcgKzI1Niw2IEBACiAocDgpCW1vdiByMiA9IGFyLml0YwkJLy8gQ1BVX1RJTUVSLiAzNiBjbG9ja3MgbGF0ZW5jeSEhIQogKHA5KQlsZDggcjIgPSBbcjMwXQkJLy8gTU1JT19USU1FUi4gQ291bGQgYWxzbyBoYXZlIGxhdGVuY3kgaXNzdWVzLi4KIChwMTMpCWxkOCByMjUgPSBbcjE5XQkJLy8gZ2V0IGl0Y19sYXN0Y3ljbGUgdmFsdWUKLQk7OwkJLy8gPyBjb3VsZCBiZSByZW1vdmVkIGJ5IG1vdmluZyB0aGUgbGFzdCBhZGQgdXB3YXJkCiAJbGQ4IHI5ID0gW3IyMl0sSUE2NF9USU1FU1BFQ19UVl9OU0VDX09GRlNFVAkvLyB0dl9zZWMKIAk7OwogCWxkOCByOCA9IFtyMjJdLC1JQTY0X1RJTUVTUEVDX1RWX05TRUNfT0ZGU0VUCS8vIHR2X25zZWMKQEAgLTI4NSwxMyArMjgyLDEyIEBACiBFWCguZmFpbF9lZmF1bHQsIHByb2JlLncuZmF1bHQgcjMxLCAzKQogCXhtcHkubCBmOCA9IGY4LGY3CS8vIG5zZWNfcGVyX2N5YyooY291bnRlci1sYXN0X2NvdW50ZXIpCiAJOzsKLQkvLyA/IHNpbXVsYXRlIHRiaXQubnoub3IgcDcscDAgPSByMjgsMAogCWdldGYuc2lnIHIyID0gZjgKIAltZgogCTs7CiAJbGQ0IHIxMCA9IFtyMjBdCQkvLyBndG9kX2xvY2suc2VxdWVuY2UKIAlzaHIudSByMiA9IHIyLHIyMwkvLyBzaGlmdCBieSBmYWN0b3IKLQk7OwkJLy8gPyBvdmVybG9hZGVkIDMgYnVuZGxlcyEKKwk7OwogCWFkZCByOCA9IHI4LHIyCQkvLyBBZGQgeHRpbWUubnNlY3MKIAljbXA0Lm5lIHA3LHAwID0gcjI4LHIxMAogKHA3KQlici5jb25kLmRwbnQuZmV3IC50aW1lX3JlZG8JLy8gc2VxdWVuY2UgbnVtYmVyIGNoYW5nZWQsIHJlZG8KQEAgLTMxOSw5ICszMTUsOSBAQAogRVgoLmZhaWxfZWZhdWx0LCBwcm9iZS53LmZhdWx0IHIyMywgMykJLy8gVGhpcyBhbHNvIGNvc3RzIDUgY3ljbGVzCiAocDE0KQl4bXB5Lmh1IGY4ID0gZjgsIGY3CQkvLyB4bXB5IGhhcyA1IGN5Y2xlcyBsYXRlbmN5IHNvIHVzZSBpdAogCTs7Ci0JbW92IHI4ID0gcjAKIChwMTQpCWdldGYuc2lnIHIyID0gZjgKIAk7OworCW1vdiByOCA9IHIwCiAocDE0KQlzaHIudSByMjEgPSByMiwgNAogCTs7CiBFWCguZmFpbF9lZmF1bHQsIHN0OCBbcjMxXSA9IHI5KQpAQCAtNjYwLDcgKzY1NiwxMSBAQAogCW5vcC5pIDAKIAk7OwogCW1vdiBhci5yc2M9MAkJCQkvLyBNMiAgIHNldCBlbmZvcmNlZCBsYXp5IG1vZGUsIHBsIDAsIExFLCBsb2FkcnM9MAorI2lmZGVmIENPTkZJR19WSVJUX0NQVV9BQ0NPVU5USU5HCisJbW92Lm0gcjMwPWFyLml0YwkJCS8vIE0gICAgZ2V0IGN5Y2xlIGZvciBhY2NvdW50aW5nCisjZWxzZQogCW5vcC5tIDAKKyNlbmRpZgogCW5vcC5pIDAKIAk7OwogCW1vdiByMjM9YXIuYnNwc3RvcmUJCQkvLyBNMiAoMTIgY3ljKSBzYXZlIGFyLmJzcHN0b3JlCkBAIC02ODIsNiArNjgyLDI4IEBACiAJY21wLm5lIHBLU3RrLHBVU3RrPXIwLHIwCQkvLyBBICAgIHNldCBwS1N0ayA8LSAwLCBwVVN0ayA8LSAxCiAJYnIuY2FsbC5zcHRrLm1hbnkgYjc9aWE2NF9zeXNjYWxsX3NldHVwCS8vIEIKIAk7OworI2lmZGVmIENPTkZJR19WSVJUX0NQVV9BQ0NPVU5USU5HCisJLy8gbW92Lm0gcjMwPWFyLml0YyBpcyBjYWxsZWQgaW4gYWR2YW5jZQorCWFkZCByMTY9VElfQUNfU1RBTVArSUE2NF9UQVNLX1NJWkUscjIKKwlhZGQgcjE3PVRJX0FDX0xFQVZFK0lBNjRfVEFTS19TSVpFLHIyCisJOzsKKwlsZDggcjE4PVtyMTZdLFRJX0FDX1NUSU1FLVRJX0FDX1NUQU1QCS8vIHRpbWUgYXQgbGFzdCBjaGVjayBpbiBrZXJuZWwKKwlsZDggcjE5PVtyMTddLFRJX0FDX1VUSU1FLVRJX0FDX0xFQVZFCS8vIHRpbWUgYXQgbGVhdmUga2VybmVsCisJOzsKKwlsZDggcjIwPVtyMTZdLFRJX0FDX1NUQU1QLVRJX0FDX1NUSU1FCS8vIGN1bXVsYXRlZCBzdGltZQorCWxkOCByMjE9W3IxN10JCQkJLy8gY3VtdWxhdGVkIHV0aW1lCisJc3ViIHIyMj1yMTkscjE4CQkJCS8vIHN0aW1lIGJlZm9yZSBsZWF2ZSBrZXJuZWwKKwk7OworCXN0OCBbcjE2XT1yMzAsVElfQUNfU1RJTUUtVElfQUNfU1RBTVAJLy8gdXBkYXRlIHN0YW1wCisJc3ViIHIxOD1yMzAscjE5CQkJCS8vIGVsYXBzZWQgdGltZSBpbiB1c2VyIG1vZGUKKwk7OworCWFkZCByMjA9cjIwLHIyMgkJCQkvLyBzdW0gc3RpbWUKKwlhZGQgcjIxPXIyMSxyMTgJCQkJLy8gc3VtIHV0aW1lCisJOzsKKwlzdDggW3IxNl09cjIwCQkJCS8vIHVwZGF0ZSBzdGltZQorCXN0OCBbcjE3XT1yMjEJCQkJLy8gdXBkYXRlIHV0aW1lCisJOzsKKyNlbmRpZgogCW1vdiBhci5yc2M9MHgzCQkJCS8vIE0yICAgc2V0IGVhZ2VyIG1vZGUsIHBsIDAsIExFLCBsb2FkcnM9MAogCW1vdiBycD1yMTQJCQkJLy8gSTAgICBzZXQgdGhlIHJlYWwgcmV0dXJuIGFkZHIKIAlhbmQgcjM9X1RJRl9TWVNDQUxMX1RSQUNFQVVESVQscjMJLy8gQQpkaWZmIC0tZ2l0IGEvYXJjaC9pYTY0L2tlcm5lbC9oZWFkLlMgYi9hcmNoL2lhNjQva2VybmVsL2hlYWQuUwppbmRleCBkM2E0MWQ1Li5kZGVhYjRlIDEwMDY0NAotLS0gYS9hcmNoL2lhNjQva2VybmVsL2hlYWQuUworKysgYi9hcmNoL2lhNjQva2VybmVsL2hlYWQuUwpAQCAtMTAwMiw2ICsxMDAyLDI2IEBACiAJYnIucmV0LnNwdGsubWFueSBycAogRU5EKHNjaGVkX2Nsb2NrKQogCisjaWZkZWYgQ09ORklHX1ZJUlRfQ1BVX0FDQ09VTlRJTkcKK0dMT0JBTF9FTlRSWShjeWNsZV90b19jcHV0aW1lKQorCWFsbG9jIHIxNj1hci5wZnMsMSwwLDAsMAorCWFkZGwgcjg9VEhJU19DUFUoY3B1X2luZm8pICsgSUE2NF9DUFVJTkZPX05TRUNfUEVSX0NZQ19PRkZTRVQscjAKKwk7OworCWxkZjggZjg9W3I4XQorCTs7CisJc2V0Zi5zaWcgZjk9cjMyCisJOzsKKwl4bXB5Lmx1IGYxMD1mOSxmOAkvLyBjYWxjdWxhdGUgbG93IDY0IGJpdHMgb2YgMTI4LWJpdCBwcm9kdWN0CSg0IGN5YykKKwl4bXB5Lmh1IGYxMT1mOSxmOAkvLyBjYWxjdWxhdGUgaGlnaCA2NCBiaXRzIG9mIDEyOC1iaXQgcHJvZHVjdAorCTs7CisJZ2V0Zi5zaWcgcjg9ZjEwCQkvLwkJCQkJCSg1IGN5YykKKwlnZXRmLnNpZyByOT1mMTEKKwk7OworCXNocnAgcjg9cjkscjgsSUE2NF9OU0VDX1BFUl9DWUNfU0hJRlQKKwlici5yZXQuc3B0ay5tYW55IHJwCitFTkQoY3ljbGVfdG9fY3B1dGltZSkKKyNlbmRpZiAvKiBDT05GSUdfVklSVF9DUFVfQUNDT1VOVElORyAqLworCiBHTE9CQUxfRU5UUlkoc3RhcnRfa2VybmVsX3RocmVhZCkKIAkucHJvbG9ndWUKIAkuc2F2ZSBycCwgcjAJCQkJLy8gdGhpcyBpcyB0aGUgZW5kIG9mIHRoZSBjYWxsLWNoYWluCmRpZmYgLS1naXQgYS9hcmNoL2lhNjQva2VybmVsL2l2dC5TIGIvYXJjaC9pYTY0L2tlcm5lbC9pdnQuUwppbmRleCAzNGY0NGQ4Li42Njc4YzQ5IDEwMDY0NAotLS0gYS9hcmNoL2lhNjQva2VybmVsL2l2dC5TCisrKyBiL2FyY2gvaWE2NC9rZXJuZWwvaXZ0LlMKQEAgLTgwNSw4ICs4MDUsMTMgQEAKIAogKHA4KQlhZGRzIHIyOD0xNixyMjgJCQkJLy8gQSAgICBzd2l0Y2ggY3IuaWlwIHRvIG5leHQgYnVuZGxlCiAocDkpCWFkZHMgcjg9MSxyOAkJCQkvLyBBICAgIGluY3JlbWVudCBlaSB0byBuZXh0IHNsb3QKKyNpZmRlZiBDT05GSUdfVklSVF9DUFVfQUNDT1VOVElORworCTs7CisJbW92IGI2PXIzMAkJCQkvLyBJMCAgIHNldHVwIHN5c2NhbGwgaGFuZGxlciBicmFuY2ggcmVnIGVhcmx5CisjZWxzZQogCW5vcC5pIDAKIAk7OworI2VuZGlmCiAKIAltb3YubSByMjU9YXIudW5hdAkJCS8vIE0yICg1IGN5YykKIAlkZXAgcjI5PXI4LHIyOSw0MSwyCQkJLy8gSTAgICBpbnNlcnQgbmV3IGVpIGludG8gY3IuaXBzcgpAQCAtODE3LDcgKzgyMiwxMSBAQAogCS8vCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogCXN0MSBbcjE2XT1yMAkJCQkvLyBNMnwzIGNsZWFyIGN1cnJlbnQtPnRocmVhZC5vbl91c3RhY2sgZmxhZworI2lmZGVmIENPTkZJR19WSVJUX0NQVV9BQ0NPVU5USU5HCisJbW92Lm0gcjMwPWFyLml0YwkJCS8vIE0gICAgZ2V0IGN5Y2xlIGZvciBhY2NvdW50aW5nCisjZWxzZQogCW1vdiBiNj1yMzAJCQkJLy8gSTAgICBzZXR1cCBzeXNjYWxsIGhhbmRsZXIgYnJhbmNoIHJlZyBlYXJseQorI2VuZGlmCiAJY21wLmVxIHBLU3RrLHBVU3RrPXIwLHIxNwkJLy8gQSAgICB3ZXJlIHdlIG9uIGtlcm5lbCBzdGFja3MgYWxyZWFkeT8KIAogCWFuZCByOT1fVElGX1NZU0NBTExfVFJBQ0VBVURJVCxyOQkvLyBBICAgIG1hc2sgdHJhY2Ugb3IgYXVkaXQKQEAgLTgyOSw2ICs4MzgsMzAgQEAKIAljbXAuZXEgcDE0LHAwPXI5LHIwCQkJLy8gQSAgICBhcmUgc3lzY2FsbHMgYmVpbmcgdHJhY2VkL2F1ZGl0ZWQ/CiAJYnIuY2FsbC5zcHRrLm1hbnkgYjc9aWE2NF9zeXNjYWxsX3NldHVwCS8vIEIKIDE6CisjaWZkZWYgQ09ORklHX1ZJUlRfQ1BVX0FDQ09VTlRJTkcKKwkvLyBtb3YubSByMzA9YXIuaXRjIGlzIGNhbGxlZCBpbiBhZHZhbmNlLCBhbmQgcjEzIGlzIGN1cnJlbnQKKwlhZGQgcjE2PVRJX0FDX1NUQU1QK0lBNjRfVEFTS19TSVpFLHIxMwkvLyBBCisJYWRkIHIxNz1USV9BQ19MRUFWRStJQTY0X1RBU0tfU0laRSxyMTMJLy8gQQorKHBLU3RrKQlici5jb25kLnNwbnQgLnNraXBfYWNjb3VudGluZwkJLy8gQgl1bmxpa2VseSBza2lwCisJOzsKKwlsZDggcjE4PVtyMTZdLFRJX0FDX1NUSU1FLVRJX0FDX1NUQU1QCS8vIE0gIGdldCBsYXN0IHN0YW1wCisJbGQ4IHIxOT1bcjE3XSxUSV9BQ19VVElNRS1USV9BQ19MRUFWRQkvLyBNICB0aW1lIGF0IGxlYXZlCisJOzsKKwlsZDggcjIwPVtyMTZdLFRJX0FDX1NUQU1QLVRJX0FDX1NUSU1FCS8vIE0gIGN1bXVsYXRlZCBzdGltZQorCWxkOCByMjE9W3IxN10JCQkJLy8gTSAgY3VtdWxhdGVkIHV0aW1lCisJc3ViIHIyMj1yMTkscjE4CQkJCS8vIEEgIHN0aW1lIGJlZm9yZSBsZWF2ZQorCTs7CisJc3Q4IFtyMTZdPXIzMCxUSV9BQ19TVElNRS1USV9BQ19TVEFNUAkvLyBNICB1cGRhdGUgc3RhbXAKKwlzdWIgcjE4PXIzMCxyMTkJCQkJLy8gQSAgZWxhcHNlZCB0aW1lIGluIHVzZXIKKwk7OworCWFkZCByMjA9cjIwLHIyMgkJCQkvLyBBICBzdW0gc3RpbWUKKwlhZGQgcjIxPXIyMSxyMTgJCQkJLy8gQSAgc3VtIHV0aW1lCisJOzsKKwlzdDggW3IxNl09cjIwCQkJCS8vIE0gIHVwZGF0ZSBzdGltZQorCXN0OCBbcjE3XT1yMjEJCQkJLy8gTSAgdXBkYXRlIHV0aW1lCisJOzsKKy5za2lwX2FjY291bnRpbmc6CisjZW5kaWYKIAltb3YgYXIucnNjPTB4MwkJCQkvLyBNMiAgIHNldCBlYWdlciBtb2RlLCBwbCAwLCBMRSwgbG9hZHJzPTAKIAlub3AgMAogCWJzdy4xCQkJCQkvLyBCICg2IGN5YykgcmVncyBhcmUgc2F2ZWQsIHN3aXRjaCB0byBiYW5rIDEKQEAgLTkyOCw2ICs5NjEsNyBAQAogCSAqCS0gcjI3OiBzYXZlZCBhci5yc2MKIAkgKgktIHIyODogc2F2ZWQgY3IuaWlwCiAJICoJLSByMjk6IHNhdmVkIGNyLmlwc3IKKwkgKgktIHIzMDogYXIuaXRjIGZvciBhY2NvdW50aW5nIChkb24ndCB0b3VjaCkKIAkgKgktIHIzMTogc2F2ZWQgcHIKIAkgKgktICBiMDogb3JpZ2luYWwgY29udGVudHMgKHRvIGJlIHNhdmVkKQogCSAqIE9uIGV4aXQ6CkBAIC0xMDkwLDYgKzExMjQsNDEgQEAKIAlEQkdfRkFVTFQoMTYpCiAJRkFVTFQoMTYpCiAKKyNpZmRlZiBDT05GSUdfVklSVF9DUFVfQUNDT1VOVElORworCS8qCisJICogVGhlcmUgaXMgbm8gcGFydGljdWxhciByZWFzb24gZm9yIHRoaXMgY29kZSB0byBiZSBoZXJlLCBvdGhlciB0aGFuCisJICogdGhhdCB0aGVyZSBoYXBwZW5zIHRvIGJlIHNwYWNlIGhlcmUgdGhhdCB3b3VsZCBnbyB1bnVzZWQgb3RoZXJ3aXNlLgorCSAqIElmIHRoaXMgZmF1bHQgZXZlciBnZXRzICJ1bnJlc2VydmVkIiwgc2ltcGx5IG1vdmVkIHRoZSBmb2xsb3dpbmcKKwkgKiBjb2RlIHRvIGEgbW9yZSBzdWl0YWJsZSBzcG90Li4uCisJICoKKwkgKiBhY2NvdW50X3N5c19lbnRlciBpcyBjYWxsZWQgZnJvbSBTQVZFX01JTiogbWFjcm9zIGlmIGFjY291bnRpbmcgaXMKKwkgKiBlbmFibGVkIGFuZCBpZiB0aGUgbWFjcm8gaXMgZW50ZXJlZCBmcm9tIHVzZXIgbW9kZS4KKwkgKi8KK0VOVFJZKGFjY291bnRfc3lzX2VudGVyKQorCS8vIG1vdi5tIHIyMD1hci5pdGMgaXMgY2FsbGVkIGluIGFkdmFuY2UsIGFuZCByMTMgaXMgY3VycmVudAorCWFkZCByMTY9VElfQUNfU1RBTVArSUE2NF9UQVNLX1NJWkUscjEzCisJYWRkIHIxNz1USV9BQ19MRUFWRStJQTY0X1RBU0tfU0laRSxyMTMKKwk7OworCWxkOCByMTg9W3IxNl0sVElfQUNfU1RJTUUtVElfQUNfU1RBTVAJLy8gdGltZSBhdCBsYXN0IGNoZWNrIGluIGtlcm5lbAorCWxkOCByMTk9W3IxN10sVElfQUNfVVRJTUUtVElfQUNfTEVBVkUJLy8gdGltZSBhdCBsZWZ0IGZyb20ga2VybmVsCisgICAgICAgIDs7CisJbGQ4IHIyMz1bcjE2XSxUSV9BQ19TVEFNUC1USV9BQ19TVElNRQkvLyBjdW11bGF0ZWQgc3RpbWUKKwlsZDggcjIxPVtyMTddCQkJCS8vIGN1bXVsYXRlZCB1dGltZQorCXN1YiByMjI9cjE5LHIxOAkJCQkvLyBzdGltZSBiZWZvcmUgbGVhdmUga2VybmVsCisJOzsKKwlzdDggW3IxNl09cjIwLFRJX0FDX1NUSU1FLVRJX0FDX1NUQU1QCS8vIHVwZGF0ZSBzdGFtcAorCXN1YiByMTg9cjIwLHIxOQkJCQkvLyBlbGFwc2VkIHRpbWUgaW4gdXNlciBtb2RlCisJOzsKKwlhZGQgcjIzPXIyMyxyMjIJCQkJLy8gc3VtIHN0aW1lCisJYWRkIHIyMT1yMjEscjE4CQkJCS8vIHN1bSB1dGltZQorCTs7CisJc3Q4IFtyMTZdPXIyMwkJCQkvLyB1cGRhdGUgc3RpbWUKKwlzdDggW3IxN109cjIxCQkJCS8vIHVwZGF0ZSB1dGltZQorCTs7CisJYnIucmV0LnNwdGsubWFueSBycAorRU5EKGFjY291bnRfc3lzX2VudGVyKQorI2VuZGlmCisKIAkub3JnIGlhNjRfaXZ0KzB4NDQwMAogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIC8vIDB4NDQwMCBFbnRyeSAxNyAoc2l6ZSA2NCBidW5kbGVzKSBSZXNlcnZlZApkaWZmIC0tZ2l0IGEvYXJjaC9pYTY0L2tlcm5lbC9taW5zdGF0ZS5oIGIvYXJjaC9pYTY0L2tlcm5lbC9taW5zdGF0ZS5oCmluZGV4IGM5YWM4YmEuLjdjNTQ4YWMgMTAwNjQ0Ci0tLSBhL2FyY2gvaWE2NC9rZXJuZWwvbWluc3RhdGUuaAorKysgYi9hcmNoL2lhNjQva2VybmVsL21pbnN0YXRlLmgKQEAgLTMsNiArMywxOCBAQAogCiAjaW5jbHVkZSAiZW50cnkuaCIKIAorI2lmZGVmIENPTkZJR19WSVJUX0NQVV9BQ0NPVU5USU5HCisvKiByZWFkIGFyLml0YyBpbiBhZHZhbmNlLCBhbmQgdXNlIGl0IGJlZm9yZSBsZWF2aW5nIGJhbmsgMCAqLworI2RlZmluZSBBQ0NPVU5UX0dFVF9TVEFNUAkJCQlcCisocFVTdGspIG1vdi5tIHIyMD1hci5pdGM7CisjZGVmaW5lIEFDQ09VTlRfU1lTX0VOVEVSCQkJCVwKKyhwVVN0aykgYnIuY2FsbC5zcG50IHJwPWFjY291bnRfc3lzX2VudGVyCQlcCisJOzsKKyNlbHNlCisjZGVmaW5lIEFDQ09VTlRfR0VUX1NUQU1QCisjZGVmaW5lIEFDQ09VTlRfU1lTX0VOVEVSCisjZW5kaWYKKwogLyoKICAqIERPX1NBVkVfTUlOIHN3aXRjaGVzIHRvIHRoZSBrZXJuZWwgc3RhY2tzIChpZiBuZWNlc3NhcnkpIGFuZCBzYXZlcwogICogdGhlIG1pbmltdW0gc3RhdGUgbmVjZXNzYXJ5IHRoYXQgYWxsb3dzIHVzIHRvIHR1cm4gcHNyLmljIGJhY2sKQEAgLTEyMiwxMSArMTM0LDEzIEBACiAJOzsJCQkJCQkJCQkJCVwKIC5tZW0ub2Zmc2V0IDAsMDsgc3Q4LnNwaWxsIFtyMTZdPXIyLDE2OwkJCQkJCQkJXAogLm1lbS5vZmZzZXQgOCwwOyBzdDguc3BpbGwgW3IxN109cjMsMTY7CQkJCQkJCQlcCisJQUNDT1VOVF9HRVRfU1RBTVAJCQkJCQkJCQlcCiAJYWRkcyByMj1JQTY0X1BUX1JFR1NfUjE2X09GRlNFVCxyMTsJCQkJCQkJXAogCTs7CQkJCQkJCQkJCQlcCiAJRVhUUkE7CQkJCQkJCQkJCQlcCiAJbW92bCByMT1fX2dwOwkJLyogZXN0YWJsaXNoIGtlcm5lbCBnbG9iYWwgcG9pbnRlciAqLwkJCQlcCiAJOzsJCQkJCQkJCQkJCVwKKwlBQ0NPVU5UX1NZU19FTlRFUgkJCQkJCQkJCVwKIAlic3cuMTsJCQkvKiBzd2l0Y2ggYmFjayB0byBiYW5rIDEgKG11c3QgYmUgbGFzdCBpbiBpbnNuIGdyb3VwKSAqLwlcCiAJOzsKIApkaWZmIC0tZ2l0IGEvYXJjaC9pYTY0L2tlcm5lbC9wYXRjaC5jIGIvYXJjaC9pYTY0L2tlcm5lbC9wYXRjaC5jCmluZGV4IDJjYjk0MjUuLmUwZGNhODcgMTAwNjQ0Ci0tLSBhL2FyY2gvaWE2NC9rZXJuZWwvcGF0Y2guYworKysgYi9hcmNoL2lhNjQva2VybmVsL3BhdGNoLmMKQEAgLTEzNSwxMCArMTM1LDEwIEBACiAKIAl3aGlsZSAob2ZmcCA8IChzMzIgKikgZW5kKSB7CiAJCXdwID0gKHU2NCAqKSBpYTY0X2ltdmEoKGNoYXIgKikgb2ZmcCArICpvZmZwKTsKLQkJd3BbMF0gPSAweDAwMDAwMDAxMDAwMDAwMDBVTDsgLyogbm9wLm0gMDsgbm9wLmkgMDsgbm9wLmkgMCAqLwotCQl3cFsxXSA9IDB4MDAwNDAwMDAwMDAwMDIwMFVMOwotCQl3cFsyXSA9IDB4MDAwMDAwMDEwMDAwMDAxMVVMOyAvKiBub3AubSAwOyBub3AuaSAwOyBici5yZXQuc3B0ay5tYW55IGI2ICovCi0JCXdwWzNdID0gMHgwMDg0MDA2ODgwMDAwMjAwVUw7CisJCXdwWzBdID0gMHgwMDAwMDAwMTAwMDAwMDExVUw7IC8qIG5vcC5tIDA7IG5vcC5pIDA7IGJyLnJldC5zcHRrLm1hbnkgYjYgKi8KKwkJd3BbMV0gPSAweDAwODQwMDY4ODAwMDAyMDBVTDsKKwkJd3BbMl0gPSAweDAwMDAwMDAxMDAwMDAwMDBVTDsgLyogbm9wLm0gMDsgbm9wLmkgMDsgbm9wLmkgMCAqLworCQl3cFszXSA9IDB4MDAwNDAwMDAwMDAwMDIwMFVMOwogCQlpYTY0X2ZjKHdwKTsgaWE2NF9mYyh3cCArIDIpOwogCQkrK29mZnA7CiAJfQpkaWZmIC0tZ2l0IGEvYXJjaC9pYTY0L2tlcm5lbC90aW1lLmMgYi9hcmNoL2lhNjQva2VybmVsL3RpbWUuYwppbmRleCAxN2ZkYTUyLi40OGUxNWE1IDEwMDY0NAotLS0gYS9hcmNoL2lhNjQva2VybmVsL3RpbWUuYworKysgYi9hcmNoL2lhNjQva2VybmVsL3RpbWUuYwpAQCAtNTksNiArNTksODQgQEAKIH07CiBzdGF0aWMgc3RydWN0IGNsb2Nrc291cmNlICppdGNfY2xvY2tzb3VyY2U7CiAKKyNpZmRlZiBDT05GSUdfVklSVF9DUFVfQUNDT1VOVElORworCisjaW5jbHVkZSA8bGludXgva2VybmVsX3N0YXQuaD4KKworZXh0ZXJuIGNwdXRpbWVfdCBjeWNsZV90b19jcHV0aW1lKHU2NCBjeWMpOworCisvKgorICogQ2FsbGVkIGZyb20gdGhlIGNvbnRleHQgc3dpdGNoIHdpdGggaW50ZXJydXB0cyBkaXNhYmxlZCwgdG8gY2hhcmdlIGFsbAorICogYWNjdW11bGF0ZWQgdGltZXMgdG8gdGhlIGN1cnJlbnQgcHJvY2VzcywgYW5kIHRvIHByZXBhcmUgYWNjb3VudGluZyBvbgorICogdGhlIG5leHQgcHJvY2Vzcy4KKyAqLwordm9pZCBpYTY0X2FjY291bnRfb25fc3dpdGNoKHN0cnVjdCB0YXNrX3N0cnVjdCAqcHJldiwgc3RydWN0IHRhc2tfc3RydWN0ICpuZXh0KQoreworCXN0cnVjdCB0aHJlYWRfaW5mbyAqcGkgPSB0YXNrX3RocmVhZF9pbmZvKHByZXYpOworCXN0cnVjdCB0aHJlYWRfaW5mbyAqbmkgPSB0YXNrX3RocmVhZF9pbmZvKG5leHQpOworCWNwdXRpbWVfdCBkZWx0YV9zdGltZSwgZGVsdGFfdXRpbWU7CisJX191NjQgbm93OworCisJbm93ID0gaWE2NF9nZXRfaXRjKCk7CisKKwlkZWx0YV9zdGltZSA9IGN5Y2xlX3RvX2NwdXRpbWUocGktPmFjX3N0aW1lICsgKG5vdyAtIHBpLT5hY19zdGFtcCkpOworCWFjY291bnRfc3lzdGVtX3RpbWUocHJldiwgMCwgZGVsdGFfc3RpbWUpOworCWFjY291bnRfc3lzdGVtX3RpbWVfc2NhbGVkKHByZXYsIGRlbHRhX3N0aW1lKTsKKworCWlmIChwaS0+YWNfdXRpbWUpIHsKKwkJZGVsdGFfdXRpbWUgPSBjeWNsZV90b19jcHV0aW1lKHBpLT5hY191dGltZSk7CisJCWFjY291bnRfdXNlcl90aW1lKHByZXYsIGRlbHRhX3V0aW1lKTsKKwkJYWNjb3VudF91c2VyX3RpbWVfc2NhbGVkKHByZXYsIGRlbHRhX3V0aW1lKTsKKwl9CisKKwlwaS0+YWNfc3RhbXAgPSBuaS0+YWNfc3RhbXAgPSBub3c7CisJbmktPmFjX3N0aW1lID0gbmktPmFjX3V0aW1lID0gMDsKK30KKworLyoKKyAqIEFjY291bnQgdGltZSBmb3IgYSB0cmFuc2l0aW9uIGJldHdlZW4gc3lzdGVtLCBoYXJkIGlycSBvciBzb2Z0IGlycSBzdGF0ZS4KKyAqIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIGludGVycnVwdHMgZW5hYmxlZC4KKyAqLwordm9pZCBhY2NvdW50X3N5c3RlbV92dGltZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaykKK3sKKwlzdHJ1Y3QgdGhyZWFkX2luZm8gKnRpID0gdGFza190aHJlYWRfaW5mbyh0c2spOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJY3B1dGltZV90IGRlbHRhX3N0aW1lOworCV9fdTY0IG5vdzsKKworCWxvY2FsX2lycV9zYXZlKGZsYWdzKTsKKworCW5vdyA9IGlhNjRfZ2V0X2l0YygpOworCisJZGVsdGFfc3RpbWUgPSBjeWNsZV90b19jcHV0aW1lKHRpLT5hY19zdGltZSArIChub3cgLSB0aS0+YWNfc3RhbXApKTsKKwlhY2NvdW50X3N5c3RlbV90aW1lKHRzaywgMCwgZGVsdGFfc3RpbWUpOworCWFjY291bnRfc3lzdGVtX3RpbWVfc2NhbGVkKHRzaywgZGVsdGFfc3RpbWUpOworCXRpLT5hY19zdGltZSA9IDA7CisKKwl0aS0+YWNfc3RhbXAgPSBub3c7CisKKwlsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7Cit9CisKKy8qCisgKiBDYWxsZWQgZnJvbSB0aGUgdGltZXIgaW50ZXJydXB0IGhhbmRsZXIgdG8gY2hhcmdlIGFjY3VtdWxhdGVkIHVzZXIgdGltZQorICogdG8gdGhlIGN1cnJlbnQgcHJvY2Vzcy4gIE11c3QgYmUgY2FsbGVkIHdpdGggaW50ZXJydXB0cyBkaXNhYmxlZC4KKyAqLwordm9pZCBhY2NvdW50X3Byb2Nlc3NfdGljayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIGludCB1c2VyX3RpY2spCit7CisJc3RydWN0IHRocmVhZF9pbmZvICp0aSA9IHRhc2tfdGhyZWFkX2luZm8ocCk7CisJY3B1dGltZV90IGRlbHRhX3V0aW1lOworCisJaWYgKHRpLT5hY191dGltZSkgeworCQlkZWx0YV91dGltZSA9IGN5Y2xlX3RvX2NwdXRpbWUodGktPmFjX3V0aW1lKTsKKwkJYWNjb3VudF91c2VyX3RpbWUocCwgZGVsdGFfdXRpbWUpOworCQlhY2NvdW50X3VzZXJfdGltZV9zY2FsZWQocCwgZGVsdGFfdXRpbWUpOworCQl0aS0+YWNfdXRpbWUgPSAwOworCX0KK30KKworI2VuZGlmIC8qIENPTkZJR19WSVJUX0NQVV9BQ0NPVU5USU5HICovCisKIHN0YXRpYyBpcnFyZXR1cm5fdAogdGltZXJfaW50ZXJydXB0IChpbnQgaXJxLCB2b2lkICpkZXZfaWQpCiB7CmRpZmYgLS1naXQgYS9hcmNoL2lhNjQvcGNpL3BjaS5jIGIvYXJjaC9pYTY0L3BjaS9wY2kuYwppbmRleCBlMjgyYzM0Li41M2QwYThlIDEwMDY0NAotLS0gYS9hcmNoL2lhNjQvcGNpL3BjaS5jCisrKyBiL2FyY2gvaWE2NC9wY2kvcGNpLmMKQEAgLTM2Miw3ICszNjIsMTIgQEAKIAlpbmZvLm5hbWUgPSBuYW1lOwogCWFjcGlfd2Fsa19yZXNvdXJjZXMoZGV2aWNlLT5oYW5kbGUsIE1FVEhPRF9OQU1FX19DUlMsIGFkZF93aW5kb3csCiAJCQkmaW5mbyk7Ci0KKwkvKgorCSAqIFNlZSBhcmNoL3g4Ni9wY2kvYWNwaS5jLgorCSAqIFRoZSBkZXNpcmVkIHBjaSBidXMgbWlnaHQgYWxyZWFkeSBiZSBzY2FubmVkIGluIGEgcXVpcmsuIFdlCisJICogc2hvdWxkIGhhbmRsZSB0aGUgY2FzZSBoZXJlLCBidXQgaXQgYXBwZWFycyB0aGF0IElBNjQgaGFzbid0CisJICogc3VjaCBxdWlyay4gU28gd2UganVzdCBpZ25vcmUgdGhlIGNhc2Ugbm93LgorCSAqLwogCXBidXMgPSBwY2lfc2Nhbl9idXNfcGFyZW50ZWQoTlVMTCwgYnVzLCAmcGNpX3Jvb3Rfb3BzLCBjb250cm9sbGVyKTsKIAlpZiAocGJ1cykKIAkJcGNpYmlvc19zZXR1cF9yb290X3dpbmRvd3MocGJ1cywgY29udHJvbGxlcik7CmRpZmYgLS1naXQgYS9hcmNoL202OGsvTWFrZWZpbGUgYi9hcmNoL202OGsvTWFrZWZpbGUKaW5kZXggMmNiYTYwNS4uYjE1MTczZiAxMDA2NDQKLS0tIGEvYXJjaC9tNjhrL01ha2VmaWxlCisrKyBiL2FyY2gvbTY4ay9NYWtlZmlsZQpAQCAtMTMsNiArMTMsOCBAQAogIyBDb3B5cmlnaHQgKEMpIDE5OTQgYnkgSGFtaXNoIE1hY2RvbmFsZAogIwogCitLQlVJTERfREVGQ09ORklHIDo9IGFtaWdhX2RlZmNvbmZpZworCiAjIG92ZXJyaWRlIHRvcCBsZXZlbCBtYWtlZmlsZQogQVMgKz0gLW02ODAyMAogTERGTEFHUyA6PSAtbSBtNjhrZWxmCmRpZmYgLS1naXQgYS9hcmNoL202OGsvY29uZmlncy9hbWlnYV9kZWZjb25maWcgYi9hcmNoL202OGsvY29uZmlncy9hbWlnYV9kZWZjb25maWcKaW5kZXggNTY0OWZiYS4uZTQxOTU4MyAxMDA2NDQKLS0tIGEvYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnCisrKyBiL2FyY2gvbTY4ay9jb25maWdzL2FtaWdhX2RlZmNvbmZpZwpAQCAtMSw2MyArMSwxMTEgQEAKICMKICMgQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgbWFrZSBjb25maWc6IGRvbid0IGVkaXQKLSMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4xMi1yYzYtbTY4awotIyBUdWUgSnVuICA3IDIwOjM0OjIzIDIwMDUKKyMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4yNS1yYzgKKyMgV2VkIEFwciAgMiAyMDo0NjowNiAyMDA4CiAjCiBDT05GSUdfTTY4Sz15CiBDT05GSUdfTU1VPXkKLUNPTkZJR19VSUQxNj15CiBDT05GSUdfUldTRU1fR0VORVJJQ19TUElOTE9DSz15CisjIENPTkZJR19BUkNIX0hBU19JTE9HMl9VMzIgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9IQVNfSUxPRzJfVTY0IGlzIG5vdCBzZXQKK0NPTkZJR19HRU5FUklDX0hXRUlHSFQ9eQogQ09ORklHX0dFTkVSSUNfQ0FMSUJSQVRFX0RFTEFZPXkKLQotIwotIyBDb2RlIG1hdHVyaXR5IGxldmVsIG9wdGlvbnMKLSMKLUNPTkZJR19FWFBFUklNRU5UQUw9eQotQ09ORklHX0NMRUFOX0NPTVBJTEU9eQotQ09ORklHX0JST0tFTl9PTl9TTVA9eQotQ09ORklHX0lOSVRfRU5WX0FSR19MSU1JVD0zMgorQ09ORklHX1RJTUVfTE9XX1JFUz15CitDT05GSUdfR0VORVJJQ19JT01BUD15CitDT05GSUdfTk9fSU9QT1JUPXkKKyMgQ09ORklHX05PX0RNQSBpcyBub3Qgc2V0CitDT05GSUdfQVJDSF9TVVBQT1JUU19BT1VUPXkKK0NPTkZJR19IWj0xMDAKK0NPTkZJR19ERUZDT05GSUdfTElTVD0iL2xpYi9tb2R1bGVzLyRVTkFNRV9SRUxFQVNFLy5jb25maWciCiAKICMKICMgR2VuZXJhbCBzZXR1cAogIworQ09ORklHX0VYUEVSSU1FTlRBTD15CitDT05GSUdfQlJPS0VOX09OX1NNUD15CitDT05GSUdfSU5JVF9FTlZfQVJHX0xJTUlUPTMyCiBDT05GSUdfTE9DQUxWRVJTSU9OPSItYW1pZ2EiCitDT05GSUdfTE9DQUxWRVJTSU9OX0FVVE89eQogQ09ORklHX1NXQVA9eQogQ09ORklHX1NZU1ZJUEM9eQorQ09ORklHX1NZU1ZJUENfU1lTQ1RMPXkKIENPTkZJR19QT1NJWF9NUVVFVUU9eQogQ09ORklHX0JTRF9QUk9DRVNTX0FDQ1Q9eQogIyBDT05GSUdfQlNEX1BST0NFU1NfQUNDVF9WMyBpcyBub3Qgc2V0Ci1DT05GSUdfU1lTQ1RMPXkKLUNPTkZJR19BVURJVD15Ci1DT05GSUdfSE9UUExVRz15Ci1DT05GSUdfS09CSkVDVF9VRVZFTlQ9eQorIyBDT05GSUdfVEFTS1NUQVRTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FVRElUIGlzIG5vdCBzZXQKICMgQ09ORklHX0lLQ09ORklHIGlzIG5vdCBzZXQKK0NPTkZJR19MT0dfQlVGX1NISUZUPTE0CisjIENPTkZJR19DR1JPVVBTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NZU0ZTX0RFUFJFQ0FURURfVjIgaXMgbm90IHNldAorQ09ORklHX1JFTEFZPXkKK0NPTkZJR19OQU1FU1BBQ0VTPXkKKyMgQ09ORklHX1VUU19OUyBpcyBub3Qgc2V0CisjIENPTkZJR19JUENfTlMgaXMgbm90IHNldAorIyBDT05GSUdfVVNFUl9OUyBpcyBub3Qgc2V0CisjIENPTkZJR19QSURfTlMgaXMgbm90IHNldAorQ09ORklHX0JMS19ERVZfSU5JVFJEPXkKK0NPTkZJR19JTklUUkFNRlNfU09VUkNFPSIiCisjIENPTkZJR19DQ19PUFRJTUlaRV9GT1JfU0laRSBpcyBub3Qgc2V0CitDT05GSUdfU1lTQ1RMPXkKICMgQ09ORklHX0VNQkVEREVEIGlzIG5vdCBzZXQKK0NPTkZJR19VSUQxNj15CitDT05GSUdfU1lTQ1RMX1NZU0NBTEw9eQogQ09ORklHX0tBTExTWU1TPXkKLSMgQ09ORklHX0tBTExTWU1TX0FMTCBpcyBub3Qgc2V0CiAjIENPTkZJR19LQUxMU1lNU19FWFRSQV9QQVNTIGlzIG5vdCBzZXQKK0NPTkZJR19IT1RQTFVHPXkKIENPTkZJR19QUklOVEs9eQogQ09ORklHX0JVRz15CitDT05GSUdfRUxGX0NPUkU9eQorIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0CiBDT05GSUdfQkFTRV9GVUxMPXkKIENPTkZJR19GVVRFWD15CitDT05GSUdfQU5PTl9JTk9ERVM9eQogQ09ORklHX0VQT0xMPXkKK0NPTkZJR19TSUdOQUxGRD15CitDT05GSUdfVElNRVJGRD15CitDT05GSUdfRVZFTlRGRD15CiBDT05GSUdfU0hNRU09eQotQ09ORklHX0NDX0FMSUdOX0ZVTkNUSU9OUz0wCi1DT05GSUdfQ0NfQUxJR05fTEFCRUxTPTAKLUNPTkZJR19DQ19BTElHTl9MT09QUz0wCi1DT05GSUdfQ0NfQUxJR05fSlVNUFM9MAorQ09ORklHX1ZNX0VWRU5UX0NPVU5URVJTPXkKK0NPTkZJR19TTEFCPXkKKyMgQ09ORklHX1NMVUIgaXMgbm90IHNldAorIyBDT05GSUdfU0xPQiBpcyBub3Qgc2V0CisjIENPTkZJR19QUk9GSUxJTkcgaXMgbm90IHNldAorIyBDT05GSUdfTUFSS0VSUyBpcyBub3Qgc2V0CisjIENPTkZJR19IQVZFX09QUk9GSUxFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hBVkVfS1BST0JFUyBpcyBub3Qgc2V0CisjIENPTkZJR19IQVZFX0tSRVRQUk9CRVMgaXMgbm90IHNldAorQ09ORklHX1BST0NfUEFHRV9NT05JVE9SPXkKK0NPTkZJR19TTEFCSU5GTz15CitDT05GSUdfUlRfTVVURVhFUz15CiAjIENPTkZJR19USU5ZX1NITUVNIGlzIG5vdCBzZXQKIENPTkZJR19CQVNFX1NNQUxMPTAKLQotIwotIyBMb2FkYWJsZSBtb2R1bGUgc3VwcG9ydAotIwogQ09ORklHX01PRFVMRVM9eQogQ09ORklHX01PRFVMRV9VTkxPQUQ9eQogIyBDT05GSUdfTU9EVUxFX0ZPUkNFX1VOTE9BRCBpcyBub3Qgc2V0Ci1DT05GSUdfT0JTT0xFVEVfTU9EUEFSTT15CiAjIENPTkZJR19NT0RWRVJTSU9OUyBpcyBub3Qgc2V0CiAjIENPTkZJR19NT0RVTEVfU1JDVkVSU0lPTl9BTEwgaXMgbm90IHNldAogQ09ORklHX0tNT0Q9eQorQ09ORklHX0JMT0NLPXkKKyMgQ09ORklHX0xCRCBpcyBub3Qgc2V0CisjIENPTkZJR19CTEtfREVWX0lPX1RSQUNFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0xTRiBpcyBub3Qgc2V0CitDT05GSUdfQkxLX0RFVl9CU0c9eQorCisjCisjIElPIFNjaGVkdWxlcnMKKyMKK0NPTkZJR19JT1NDSEVEX05PT1A9eQorQ09ORklHX0lPU0NIRURfQVM9eQorQ09ORklHX0lPU0NIRURfREVBRExJTkU9eQorQ09ORklHX0lPU0NIRURfQ0ZRPXkKK0NPTkZJR19ERUZBVUxUX0FTPXkKKyMgQ09ORklHX0RFRkFVTFRfREVBRExJTkUgaXMgbm90IHNldAorIyBDT05GSUdfREVGQVVMVF9DRlEgaXMgbm90IHNldAorIyBDT05GSUdfREVGQVVMVF9OT09QIGlzIG5vdCBzZXQKK0NPTkZJR19ERUZBVUxUX0lPU0NIRUQ9ImFudGljaXBhdG9yeSIKK0NPTkZJR19DTEFTU0lDX1JDVT15CiAKICMKICMgUGxhdGZvcm0gZGVwZW5kZW50IHNldHVwCkBAIC04MCwxMCArMTI4LDI0IEBACiBDT05GSUdfTTY4MDQwPXkKIENPTkZJR19NNjgwNjA9eQogQ09ORklHX01NVV9NT1RPUk9MQT15Ci1DT05GSUdfTTY4S0ZQVV9FTVU9eQotQ09ORklHX002OEtGUFVfRU1VX0VYVFJBUFJFQz15Ci0jIENPTkZJR19NNjhLRlBVX0VNVV9PTkxZIGlzIG5vdCBzZXQKKyMgQ09ORklHX002OEtGUFVfRU1VIGlzIG5vdCBzZXQKICMgQ09ORklHX0FEVkFOQ0VEIGlzIG5vdCBzZXQKK0NPTkZJR19BUkNIX0RJU0NPTlRJR01FTV9FTkFCTEU9eQorQ09ORklHX05PREVTX1NISUZUPTMKK0NPTkZJR19TRUxFQ1RfTUVNT1JZX01PREVMPXkKKyMgQ09ORklHX0ZMQVRNRU1fTUFOVUFMIGlzIG5vdCBzZXQKK0NPTkZJR19ESVNDT05USUdNRU1fTUFOVUFMPXkKKyMgQ09ORklHX1NQQVJTRU1FTV9NQU5VQUwgaXMgbm90IHNldAorQ09ORklHX0RJU0NPTlRJR01FTT15CitDT05GSUdfRkxBVF9OT0RFX01FTV9NQVA9eQorQ09ORklHX05FRURfTVVMVElQTEVfTk9ERVM9eQorIyBDT05GSUdfU1BBUlNFTUVNX1NUQVRJQyBpcyBub3Qgc2V0CisjIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUF9FTkFCTEUgaXMgbm90IHNldAorQ09ORklHX1NQTElUX1BUTE9DS19DUFVTPTQKKyMgQ09ORklHX1JFU09VUkNFU182NEJJVCBpcyBub3Qgc2V0CitDT05GSUdfWk9ORV9ETUFfRkxBRz0xCitDT05GSUdfQk9VTkNFPXkKK0NPTkZJR19WSVJUX1RPX0JVUz15CiAKICMKICMgR2VuZXJhbCBzZXR1cApAQCAtOTcsNDcgKzE1OSwyODggQEAKIENPTkZJR19QUk9DX0hBUkRXQVJFPXkKIENPTkZJR19JU0E9eQogQ09ORklHX0dFTkVSSUNfSVNBX0RNQT15CitDT05GSUdfWk9ORV9ETUE9eQorIyBDT05GSUdfQVJDSF9TVVBQT1JUU19NU0kgaXMgbm90IHNldAogQ09ORklHX1pPUlJPX05BTUVTPXkKIAogIworIyBOZXR3b3JraW5nCisjCitDT05GSUdfTkVUPXkKKworIworIyBOZXR3b3JraW5nIG9wdGlvbnMKKyMKK0NPTkZJR19QQUNLRVQ9eQorIyBDT05GSUdfUEFDS0VUX01NQVAgaXMgbm90IHNldAorQ09ORklHX1VOSVg9eQorQ09ORklHX1hGUk09eQorIyBDT05GSUdfWEZSTV9VU0VSIGlzIG5vdCBzZXQKKyMgQ09ORklHX1hGUk1fU1VCX1BPTElDWSBpcyBub3Qgc2V0CitDT05GSUdfWEZSTV9NSUdSQVRFPXkKKyMgQ09ORklHX1hGUk1fU1RBVElTVElDUyBpcyBub3Qgc2V0CitDT05GSUdfTkVUX0tFWT15CitDT05GSUdfTkVUX0tFWV9NSUdSQVRFPXkKK0NPTkZJR19JTkVUPXkKKyMgQ09ORklHX0lQX01VTFRJQ0FTVCBpcyBub3Qgc2V0CisjIENPTkZJR19JUF9BRFZBTkNFRF9ST1VURVIgaXMgbm90IHNldAorQ09ORklHX0lQX0ZJQl9IQVNIPXkKKyMgQ09ORklHX0lQX1BOUCBpcyBub3Qgc2V0CitDT05GSUdfTkVUX0lQSVA9bQorQ09ORklHX05FVF9JUEdSRT1tCisjIENPTkZJR19BUlBEIGlzIG5vdCBzZXQKK0NPTkZJR19TWU5fQ09PS0lFUz15CitDT05GSUdfSU5FVF9BSD1tCitDT05GSUdfSU5FVF9FU1A9bQorQ09ORklHX0lORVRfSVBDT01QPW0KK0NPTkZJR19JTkVUX1hGUk1fVFVOTkVMPW0KK0NPTkZJR19JTkVUX1RVTk5FTD1tCitDT05GSUdfSU5FVF9YRlJNX01PREVfVFJBTlNQT1JUPW0KK0NPTkZJR19JTkVUX1hGUk1fTU9ERV9UVU5ORUw9bQorQ09ORklHX0lORVRfWEZSTV9NT0RFX0JFRVQ9bQorQ09ORklHX0lORVRfTFJPPW0KK0NPTkZJR19JTkVUX0RJQUc9bQorQ09ORklHX0lORVRfVENQX0RJQUc9bQorIyBDT05GSUdfVENQX0NPTkdfQURWQU5DRUQgaXMgbm90IHNldAorQ09ORklHX1RDUF9DT05HX0NVQklDPXkKK0NPTkZJR19ERUZBVUxUX1RDUF9DT05HPSJjdWJpYyIKKyMgQ09ORklHX1RDUF9NRDVTSUcgaXMgbm90IHNldAorIyBDT05GSUdfSVBfVlMgaXMgbm90IHNldAorQ09ORklHX0lQVjY9bQorQ09ORklHX0lQVjZfUFJJVkFDWT15CitDT05GSUdfSVBWNl9ST1VURVJfUFJFRj15CitDT05GSUdfSVBWNl9ST1VURV9JTkZPPXkKKyMgQ09ORklHX0lQVjZfT1BUSU1JU1RJQ19EQUQgaXMgbm90IHNldAorQ09ORklHX0lORVQ2X0FIPW0KK0NPTkZJR19JTkVUNl9FU1A9bQorQ09ORklHX0lORVQ2X0lQQ09NUD1tCisjIENPTkZJR19JUFY2X01JUDYgaXMgbm90IHNldAorQ09ORklHX0lORVQ2X1hGUk1fVFVOTkVMPW0KK0NPTkZJR19JTkVUNl9UVU5ORUw9bQorQ09ORklHX0lORVQ2X1hGUk1fTU9ERV9UUkFOU1BPUlQ9bQorQ09ORklHX0lORVQ2X1hGUk1fTU9ERV9UVU5ORUw9bQorQ09ORklHX0lORVQ2X1hGUk1fTU9ERV9CRUVUPW0KK0NPTkZJR19JTkVUNl9YRlJNX01PREVfUk9VVEVPUFRJTUlaQVRJT049bQorQ09ORklHX0lQVjZfU0lUPW0KK0NPTkZJR19JUFY2X1RVTk5FTD1tCisjIENPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFUyBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRXT1JLX1NFQ01BUksgaXMgbm90IHNldAorQ09ORklHX05FVEZJTFRFUj15CisjIENPTkZJR19ORVRGSUxURVJfREVCVUcgaXMgbm90IHNldAorQ09ORklHX05FVEZJTFRFUl9BRFZBTkNFRD15CisKKyMKKyMgQ29yZSBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvbgorIworQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LPW0KK0NPTkZJR19ORVRGSUxURVJfTkVUTElOS19RVUVVRT1tCitDT05GSUdfTkVURklMVEVSX05FVExJTktfTE9HPW0KK0NPTkZJR19ORl9DT05OVFJBQ0s9bQorQ09ORklHX05GX0NUX0FDQ1Q9eQorQ09ORklHX05GX0NPTk5UUkFDS19NQVJLPXkKKyMgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFMgaXMgbm90IHNldAorQ09ORklHX05GX0NUX1BST1RPX0dSRT1tCitDT05GSUdfTkZfQ1RfUFJPVE9fU0NUUD1tCitDT05GSUdfTkZfQ1RfUFJPVE9fVURQTElURT1tCitDT05GSUdfTkZfQ09OTlRSQUNLX0FNQU5EQT1tCitDT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tCitDT05GSUdfTkZfQ09OTlRSQUNLX0gzMjM9bQorQ09ORklHX05GX0NPTk5UUkFDS19JUkM9bQorQ09ORklHX05GX0NPTk5UUkFDS19ORVRCSU9TX05TPW0KK0NPTkZJR19ORl9DT05OVFJBQ0tfUFBUUD1tCitDT05GSUdfTkZfQ09OTlRSQUNLX1NBTkU9bQorQ09ORklHX05GX0NPTk5UUkFDS19TSVA9bQorQ09ORklHX05GX0NPTk5UUkFDS19URlRQPW0KKyMgQ09ORklHX05GX0NUX05FVExJTksgaXMgbm90IHNldAorQ09ORklHX05FVEZJTFRFUl9YVEFCTEVTPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX0NMQVNTSUZZPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX0NPTk5NQVJLPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX0RTQ1A9bQorQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfTUFSSz1tCitDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9ORlFVRVVFPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX05GTE9HPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX05PVFJBQ0s9bQorQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfUkFURUVTVD1tCitDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9UUkFDRT1tCitDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9UQ1BNU1M9bQorQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfVENQT1BUU1RSSVA9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9DT01NRU5UPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkJZVEVTPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkxJTUlUPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfQ09OTk1BUks9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9DT05OVFJBQ0s9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9EQ0NQPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfRFNDUD1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0VTUD1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0hFTFBFUj1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0lQUkFOR0U9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9MRU5HVEg9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9MSU1JVD1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX01BQz1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX01BUks9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9PV05FUj1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1BPTElDWT1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX01VTFRJUE9SVD1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1BLVFRZUEU9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9RVU9UQT1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1JBVEVFU1Q9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9SRUFMTT1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1NDVFA9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9TVEFURT1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1NUQVRJU1RJQz1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1NUUklORz1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1RDUE1TUz1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1RJTUU9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9VMzI9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9IQVNITElNSVQ9bQorCisjCisjIElQOiBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvbgorIworQ09ORklHX05GX0NPTk5UUkFDS19JUFY0PW0KK0NPTkZJR19ORl9DT05OVFJBQ0tfUFJPQ19DT01QQVQ9eQorQ09ORklHX0lQX05GX1FVRVVFPW0KK0NPTkZJR19JUF9ORl9JUFRBQkxFUz1tCitDT05GSUdfSVBfTkZfTUFUQ0hfUkVDRU5UPW0KK0NPTkZJR19JUF9ORl9NQVRDSF9FQ049bQorQ09ORklHX0lQX05GX01BVENIX0FIPW0KK0NPTkZJR19JUF9ORl9NQVRDSF9UVEw9bQorQ09ORklHX0lQX05GX01BVENIX0FERFJUWVBFPW0KK0NPTkZJR19JUF9ORl9GSUxURVI9bQorQ09ORklHX0lQX05GX1RBUkdFVF9SRUpFQ1Q9bQorQ09ORklHX0lQX05GX1RBUkdFVF9MT0c9bQorQ09ORklHX0lQX05GX1RBUkdFVF9VTE9HPW0KK0NPTkZJR19ORl9OQVQ9bQorQ09ORklHX05GX05BVF9ORUVERUQ9eQorQ09ORklHX0lQX05GX1RBUkdFVF9NQVNRVUVSQURFPW0KK0NPTkZJR19JUF9ORl9UQVJHRVRfUkVESVJFQ1Q9bQorQ09ORklHX0lQX05GX1RBUkdFVF9ORVRNQVA9bQorQ09ORklHX05GX05BVF9TTk1QX0JBU0lDPW0KK0NPTkZJR19ORl9OQVRfUFJPVE9fR1JFPW0KK0NPTkZJR19ORl9OQVRfRlRQPW0KK0NPTkZJR19ORl9OQVRfSVJDPW0KK0NPTkZJR19ORl9OQVRfVEZUUD1tCitDT05GSUdfTkZfTkFUX0FNQU5EQT1tCitDT05GSUdfTkZfTkFUX1BQVFA9bQorQ09ORklHX05GX05BVF9IMzIzPW0KK0NPTkZJR19ORl9OQVRfU0lQPW0KK0NPTkZJR19JUF9ORl9NQU5HTEU9bQorQ09ORklHX0lQX05GX1RBUkdFVF9FQ049bQorQ09ORklHX0lQX05GX1RBUkdFVF9UVEw9bQorQ09ORklHX0lQX05GX1RBUkdFVF9DTFVTVEVSSVA9bQorQ09ORklHX0lQX05GX1JBVz1tCitDT05GSUdfSVBfTkZfQVJQVEFCTEVTPW0KK0NPTkZJR19JUF9ORl9BUlBGSUxURVI9bQorQ09ORklHX0lQX05GX0FSUF9NQU5HTEU9bQorCisjCisjIElQdjY6IE5ldGZpbHRlciBDb25maWd1cmF0aW9uCisjCitDT05GSUdfTkZfQ09OTlRSQUNLX0lQVjY9bQorQ09ORklHX0lQNl9ORl9RVUVVRT1tCitDT05GSUdfSVA2X05GX0lQVEFCTEVTPW0KK0NPTkZJR19JUDZfTkZfTUFUQ0hfUlQ9bQorQ09ORklHX0lQNl9ORl9NQVRDSF9PUFRTPW0KK0NPTkZJR19JUDZfTkZfTUFUQ0hfRlJBRz1tCitDT05GSUdfSVA2X05GX01BVENIX0hMPW0KK0NPTkZJR19JUDZfTkZfTUFUQ0hfSVBWNkhFQURFUj1tCitDT05GSUdfSVA2X05GX01BVENIX0FIPW0KK0NPTkZJR19JUDZfTkZfTUFUQ0hfTUg9bQorQ09ORklHX0lQNl9ORl9NQVRDSF9FVUk2ND1tCitDT05GSUdfSVA2X05GX0ZJTFRFUj1tCitDT05GSUdfSVA2X05GX1RBUkdFVF9MT0c9bQorQ09ORklHX0lQNl9ORl9UQVJHRVRfUkVKRUNUPW0KK0NPTkZJR19JUDZfTkZfTUFOR0xFPW0KK0NPTkZJR19JUDZfTkZfVEFSR0VUX0hMPW0KK0NPTkZJR19JUDZfTkZfUkFXPW0KK0NPTkZJR19JUF9EQ0NQPW0KK0NPTkZJR19JTkVUX0RDQ1BfRElBRz1tCitDT05GSUdfSVBfRENDUF9BQ0tWRUM9eQorCisjCisjIERDQ1AgQ0NJRHMgQ29uZmlndXJhdGlvbiAoRVhQRVJJTUVOVEFMKQorIworQ09ORklHX0lQX0RDQ1BfQ0NJRDI9bQorIyBDT05GSUdfSVBfRENDUF9DQ0lEMl9ERUJVRyBpcyBub3Qgc2V0CitDT05GSUdfSVBfRENDUF9DQ0lEMz1tCisjIENPTkZJR19JUF9EQ0NQX0NDSUQzX0RFQlVHIGlzIG5vdCBzZXQKK0NPTkZJR19JUF9EQ0NQX0NDSUQzX1JUTz0xMDAKK0NPTkZJR19JUF9EQ0NQX1RGUkNfTElCPW0KK0NPTkZJR19JUF9TQ1RQPW0KKyMgQ09ORklHX1NDVFBfREJHX01TRyBpcyBub3Qgc2V0CisjIENPTkZJR19TQ1RQX0RCR19PQkpDTlQgaXMgbm90IHNldAorIyBDT05GSUdfU0NUUF9ITUFDX05PTkUgaXMgbm90IHNldAorIyBDT05GSUdfU0NUUF9ITUFDX1NIQTEgaXMgbm90IHNldAorQ09ORklHX1NDVFBfSE1BQ19NRDU9eQorIyBDT05GSUdfVElQQyBpcyBub3Qgc2V0CisjIENPTkZJR19BVE0gaXMgbm90IHNldAorIyBDT05GSUdfQlJJREdFIGlzIG5vdCBzZXQKKyMgQ09ORklHX1ZMQU5fODAyMVEgaXMgbm90IHNldAorIyBDT05GSUdfREVDTkVUIGlzIG5vdCBzZXQKK0NPTkZJR19MTEM9bQorIyBDT05GSUdfTExDMiBpcyBub3Qgc2V0CisjIENPTkZJR19JUFggaXMgbm90IHNldAorQ09ORklHX0FUQUxLPW0KKyMgQ09ORklHX0RFVl9BUFBMRVRBTEsgaXMgbm90IHNldAorIyBDT05GSUdfWDI1IGlzIG5vdCBzZXQKKyMgQ09ORklHX0xBUEIgaXMgbm90IHNldAorIyBDT05GSUdfRUNPTkVUIGlzIG5vdCBzZXQKKyMgQ09ORklHX1dBTl9ST1VURVIgaXMgbm90IHNldAorIyBDT05GSUdfTkVUX1NDSEVEIGlzIG5vdCBzZXQKK0NPTkZJR19ORVRfQ0xTX1JPVVRFPXkKKworIworIyBOZXR3b3JrIHRlc3RpbmcKKyMKKyMgQ09ORklHX05FVF9QS1RHRU4gaXMgbm90IHNldAorIyBDT05GSUdfSEFNUkFESU8gaXMgbm90IHNldAorIyBDT05GSUdfQ0FOIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lSREEgaXMgbm90IHNldAorIyBDT05GSUdfQlQgaXMgbm90IHNldAorIyBDT05GSUdfQUZfUlhSUEMgaXMgbm90IHNldAorCisjCisjIFdpcmVsZXNzCisjCisjIENPTkZJR19DRkc4MDIxMSBpcyBub3Qgc2V0CitDT05GSUdfV0lSRUxFU1NfRVhUPXkKKyMgQ09ORklHX01BQzgwMjExIGlzIG5vdCBzZXQKK0NPTkZJR19JRUVFODAyMTE9bQorIyBDT05GSUdfSUVFRTgwMjExX0RFQlVHIGlzIG5vdCBzZXQKK0NPTkZJR19JRUVFODAyMTFfQ1JZUFRfV0VQPW0KK0NPTkZJR19JRUVFODAyMTFfQ1JZUFRfQ0NNUD1tCitDT05GSUdfSUVFRTgwMjExX0NSWVBUX1RLSVA9bQorQ09ORklHX0lFRUU4MDIxMV9TT0ZUTUFDPW0KKyMgQ09ORklHX0lFRUU4MDIxMV9TT0ZUTUFDX0RFQlVHIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JGS0lMTCBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRfOVAgaXMgbm90IHNldAorCisjCiAjIERldmljZSBEcml2ZXJzCiAjCiAKICMKICMgR2VuZXJpYyBEcml2ZXIgT3B0aW9ucwogIworQ09ORklHX1VFVkVOVF9IRUxQRVJfUEFUSD0iL3NiaW4vaG90cGx1ZyIKIENPTkZJR19TVEFOREFMT05FPXkKIENPTkZJR19QUkVWRU5UX0ZJUk1XQVJFX0JVSUxEPXkKIENPTkZJR19GV19MT0FERVI9bQotIyBDT05GSUdfREVCVUdfRFJJVkVSIGlzIG5vdCBzZXQKLQotIwotIyBNZW1vcnkgVGVjaG5vbG9neSBEZXZpY2VzIChNVEQpCi0jCisjIENPTkZJR19TWVNfSFlQRVJWSVNPUiBpcyBub3Qgc2V0CitDT05GSUdfQ09OTkVDVE9SPW0KICMgQ09ORklHX01URCBpcyBub3Qgc2V0Ci0KLSMKLSMgUGFyYWxsZWwgcG9ydCBzdXBwb3J0Ci0jCiBDT05GSUdfUEFSUE9SVD1tCiAjIENPTkZJR19QQVJQT1JUX1BDIGlzIG5vdCBzZXQKLUNPTkZJR19QQVJQT1JUX05PVF9QQz15CiBDT05GSUdfUEFSUE9SVF9BTUlHQT1tCiBDT05GSUdfUEFSUE9SVF9NRkMzPW0KICMgQ09ORklHX1BBUlBPUlRfR1NDIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BBUlBPUlRfQVg4ODc5NiBpcyBub3Qgc2V0CiBDT05GSUdfUEFSUE9SVF8xMjg0PXkKLQotIwotIyBQbHVnIGFuZCBQbGF5IHN1cHBvcnQKLSMKK0NPTkZJR19QQVJQT1JUX05PVF9QQz15CiAjIENPTkZJR19QTlAgaXMgbm90IHNldAotCi0jCi0jIEJsb2NrIGRldmljZXMKLSMKK0NPTkZJR19CTEtfREVWPXkKIENPTkZJR19BTUlHQV9GTE9QUFk9eQogQ09ORklHX0FNSUdBX1oyUkFNPXkKLSMgQ09ORklHX1BBUklERSBpcyBub3Qgc2V0CiAjIENPTkZJR19CTEtfREVWX0NPV19DT01NT04gaXMgbm90IHNldAogQ09ORklHX0JMS19ERVZfTE9PUD15CiBDT05GSUdfQkxLX0RFVl9DUllQVE9MT09QPW0KQEAgLTE0NSw1NiArNDQ4LDY2IEBACiBDT05GSUdfQkxLX0RFVl9SQU09eQogQ09ORklHX0JMS19ERVZfUkFNX0NPVU5UPTE2CiBDT05GSUdfQkxLX0RFVl9SQU1fU0laRT00MDk2Ci1DT05GSUdfQkxLX0RFVl9JTklUUkQ9eQotQ09ORklHX0lOSVRSQU1GU19TT1VSQ0U9IiIKKyMgQ09ORklHX0JMS19ERVZfWElQIGlzIG5vdCBzZXQKIENPTkZJR19DRFJPTV9QS1RDRFZEPW0KIENPTkZJR19DRFJPTV9QS1RDRFZEX0JVRkZFUlM9OAogIyBDT05GSUdfQ0RST01fUEtUQ0RWRF9XQ0FDSEUgaXMgbm90IHNldAotCi0jCi0jIElPIFNjaGVkdWxlcnMKLSMKLUNPTkZJR19JT1NDSEVEX05PT1A9eQotQ09ORklHX0lPU0NIRURfQVM9eQotQ09ORklHX0lPU0NIRURfREVBRExJTkU9eQotQ09ORklHX0lPU0NIRURfQ0ZRPXkKIENPTkZJR19BVEFfT1ZFUl9FVEg9bQotCi0jCi0jIEFUQS9BVEFQSS9NRk0vUkxMIHN1cHBvcnQKLSMKK0NPTkZJR19NSVNDX0RFVklDRVM9eQorIyBDT05GSUdfRUVQUk9NXzkzQ1g2IGlzIG5vdCBzZXQKKyMgQ09ORklHX0VOQ0xPU1VSRV9TRVJWSUNFUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9JREU9eQogQ09ORklHX0lERT15CiBDT05GSUdfQkxLX0RFVl9JREU9eQogCiAjCi0jIFBsZWFzZSBzZWUgRG9jdW1lbnRhdGlvbi9pZGUudHh0IGZvciBoZWxwL2luZm8gb24gSURFIGRyaXZlcworIyBQbGVhc2Ugc2VlIERvY3VtZW50YXRpb24vaWRlL2lkZS50eHQgZm9yIGhlbHAvaW5mbyBvbiBJREUgZHJpdmVzCiAjCiAjIENPTkZJR19CTEtfREVWX0lERV9TQVRBIGlzIG5vdCBzZXQKIENPTkZJR19CTEtfREVWX0lERURJU0s9eQogIyBDT05GSUdfSURFRElTS19NVUxUSV9NT0RFIGlzIG5vdCBzZXQKIENPTkZJR19CTEtfREVWX0lERUNEPXkKLUNPTkZJR19CTEtfREVWX0lERVRBUEU9bQorQ09ORklHX0JMS19ERVZfSURFQ0RfVkVSQk9TRV9FUlJPUlM9eQorIyBDT05GSUdfQkxLX0RFVl9JREVUQVBFIGlzIG5vdCBzZXQKIENPTkZJR19CTEtfREVWX0lERUZMT1BQWT1tCiAjIENPTkZJR19CTEtfREVWX0lERVNDU0kgaXMgbm90IHNldAogIyBDT05GSUdfSURFX1RBU0tfSU9DVEwgaXMgbm90IHNldAorQ09ORklHX0lERV9QUk9DX0ZTPXkKIAogIwogIyBJREUgY2hpcHNldCBzdXBwb3J0L2J1Z2ZpeGVzCiAjCi1DT05GSUdfSURFX0dFTkVSSUM9eQotIyBDT05GSUdfSURFX0FSTSBpcyBub3Qgc2V0CisjIENPTkZJR19JREVfR0VORVJJQyBpcyBub3Qgc2V0CisjIENPTkZJR19CTEtfREVWX1BMQVRGT1JNIGlzIG5vdCBzZXQKIENPTkZJR19CTEtfREVWX0dBWUxFPXkKIENPTkZJR19CTEtfREVWX0lERURPVUJMRVI9eQogQ09ORklHX0JMS19ERVZfQlVEREhBPXkKLSMgQ09ORklHX0lERV9DSElQU0VUUyBpcyBub3Qgc2V0CisKKyMKKyMgT3RoZXIgSURFIGNoaXBzZXRzIHN1cHBvcnQKKyMKKworIworIyBOb3RlOiBtb3N0IG9mIHRoZXNlIGFsc28gcmVxdWlyZSBzcGVjaWFsIGtlcm5lbCBib290IHBhcmFtZXRlcnMKKyMKKyMgQ09ORklHX0JMS19ERVZfNERSSVZFUyBpcyBub3Qgc2V0CisjIENPTkZJR19CTEtfREVWX0FMSTE0WFggaXMgbm90IHNldAorIyBDT05GSUdfQkxLX0RFVl9EVEMyMjc4IGlzIG5vdCBzZXQKKyMgQ09ORklHX0JMS19ERVZfSFQ2NTYwQiBpcyBub3Qgc2V0CisjIENPTkZJR19CTEtfREVWX1FENjVYWCBpcyBub3Qgc2V0CisjIENPTkZJR19CTEtfREVWX1VNQzg2NzIgaXMgbm90IHNldAogIyBDT05GSUdfQkxLX0RFVl9JREVETUEgaXMgbm90IHNldAotIyBDT05GSUdfSURFRE1BX0FVVE8gaXMgbm90IHNldAorIyBDT05GSUdfSURFX0FSQ0hfT0JTT0xFVEVfSU5JVCBpcyBub3Qgc2V0CiAjIENPTkZJR19CTEtfREVWX0hEIGlzIG5vdCBzZXQKIAogIwogIyBTQ1NJIGRldmljZSBzdXBwb3J0CiAjCitDT05GSUdfUkFJRF9BVFRSUz1tCiBDT05GSUdfU0NTST15CitDT05GSUdfU0NTSV9ETUE9eQorQ09ORklHX1NDU0lfVEdUPW0KKyMgQ09ORklHX1NDU0lfTkVUTElOSyBpcyBub3Qgc2V0CiBDT05GSUdfU0NTSV9QUk9DX0ZTPXkKIAogIwpAQCAtMjA2LDYgKzUxOSw3IEBACiBDT05GSUdfQkxLX0RFVl9TUj15CiBDT05GSUdfQkxLX0RFVl9TUl9WRU5ET1I9eQogQ09ORklHX0NIUl9ERVZfU0c9bQorIyBDT05GSUdfQ0hSX0RFVl9TQ0ggaXMgbm90IHNldAogCiAjCiAjIFNvbWUgU0NTSSBkZXZpY2VzIChlLmcuIENEIGp1a2Vib3gpIHN1cHBvcnQgbXVsdGlwbGUgTFVOcwpAQCAtMjEzLDMwICs1MjcsMzQgQEAKICMgQ09ORklHX1NDU0lfTVVMVElfTFVOIGlzIG5vdCBzZXQKIENPTkZJR19TQ1NJX0NPTlNUQU5UUz15CiAjIENPTkZJR19TQ1NJX0xPR0dJTkcgaXMgbm90IHNldAorIyBDT05GSUdfU0NTSV9TQ0FOX0FTWU5DIGlzIG5vdCBzZXQKK0NPTkZJR19TQ1NJX1dBSVRfU0NBTj1tCiAKICMKLSMgU0NTSSBUcmFuc3BvcnQgQXR0cmlidXRlcworIyBTQ1NJIFRyYW5zcG9ydHMKICMKLSMgQ09ORklHX1NDU0lfU1BJX0FUVFJTIGlzIG5vdCBzZXQKK0NPTkZJR19TQ1NJX1NQSV9BVFRSUz15CiAjIENPTkZJR19TQ1NJX0ZDX0FUVFJTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NDU0lfSVNDU0lfQVRUUlMgaXMgbm90IHNldAotCi0jCi0jIFNDU0kgbG93LWxldmVsIGRyaXZlcnMKLSMKK0NPTkZJR19TQ1NJX0lTQ1NJX0FUVFJTPW0KK0NPTkZJR19TQ1NJX1NBU19BVFRSUz1tCitDT05GSUdfU0NTSV9TQVNfTElCU0FTPW0KK0NPTkZJR19TQ1NJX1NBU19IT1NUX1NNUD15CisjIENPTkZJR19TQ1NJX1NBU19MSUJTQVNfREVCVUcgaXMgbm90IHNldAorQ09ORklHX1NDU0lfU1JQX0FUVFJTPW0KK0NPTkZJR19TQ1NJX1NSUF9UR1RfQVRUUlM9eQorQ09ORklHX1NDU0lfTE9XTEVWRUw9eQorQ09ORklHX0lTQ1NJX1RDUD1tCiAjIENPTkZJR19TQ1NJX0FIQTE1MlggaXMgbm90IHNldAogIyBDT05GSUdfU0NTSV9BSUM3WFhYX09MRCBpcyBub3Qgc2V0CisjIENPTkZJR19TQ1NJX0FEVkFOU1lTIGlzIG5vdCBzZXQKICMgQ09ORklHX1NDU0lfSU4yMDAwIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NDU0lfU0FUQSBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX0RUQzMyODAgaXMgbm90IHNldAogIyBDT05GSUdfU0NTSV9GVVRVUkVfRE9NQUlOIGlzIG5vdCBzZXQKICMgQ09ORklHX1NDU0lfR0VORVJJQ19OQ1I1MzgwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NDU0lfR0VORVJJQ19OQ1I1MzgwX01NSU8gaXMgbm90IHNldAotIyBDT05GSUdfU0NTSV9QUEEgaXMgbm90IHNldAotIyBDT05GSUdfU0NTSV9JTU0gaXMgbm90IHNldAogIyBDT05GSUdfU0NTSV9OQ1I1M0M0MDZBIGlzIG5vdCBzZXQKK0NPTkZJR181M0M3MDBfQkVfQlVTPXkKICMgQ09ORklHX1NDU0lfUEFTMTYgaXMgbm90IHNldAotIyBDT05GSUdfU0NTSV9QU0kyNDBJIGlzIG5vdCBzZXQKICMgQ09ORklHX1NDU0lfUUxPR0lDX0ZBUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX1NZTTUzQzQxNiBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX1QxMjggaXMgbm90IHNldApAQCAtMjQ0LDI0MyArNTYyLDQyIEBACiBDT05GSUdfQTMwMDBfU0NTST15CiBDT05GSUdfQTIwOTFfU0NTST15CiBDT05GSUdfR1ZQMTFfU0NTST15Ci1DT05GSUdfQ1lCRVJTVE9STV9TQ1NJPXkKLUNPTkZJR19DWUJFUlNUT1JNSUlfU0NTST15Ci1DT05GSUdfQkxaMjA2MF9TQ1NJPXkKLUNPTkZJR19CTFoxMjMwX1NDU0k9eQotQ09ORklHX0ZBU1RMQU5FX1NDU0k9eQotQ09ORklHX09LVEFHT05fU0NTST15Ci0KLSMKLSMgT2xkIENELVJPTSBkcml2ZXJzIChub3QgU0NTSSwgbm90IElERSkKLSMKLSMgQ09ORklHX0NEX05PX0lERVNDU0kgaXMgbm90IHNldAotCi0jCi0jIE11bHRpLWRldmljZSBzdXBwb3J0IChSQUlEIGFuZCBMVk0pCi0jCitDT05GSUdfU0NTSV9BNDAwMFQ9eQorQ09ORklHX1NDU0lfWk9SUk83WFg9eQogQ09ORklHX01EPXkKIENPTkZJR19CTEtfREVWX01EPW0KIENPTkZJR19NRF9MSU5FQVI9bQogQ09ORklHX01EX1JBSUQwPW0KIENPTkZJR19NRF9SQUlEMT1tCiAjIENPTkZJR19NRF9SQUlEMTAgaXMgbm90IHNldAotQ09ORklHX01EX1JBSUQ1PW0KLUNPTkZJR19NRF9SQUlENj1tCitDT05GSUdfTURfUkFJRDQ1Nj1tCitDT05GSUdfTURfUkFJRDVfUkVTSEFQRT15CiBDT05GSUdfTURfTVVMVElQQVRIPW0KICMgQ09ORklHX01EX0ZBVUxUWSBpcyBub3Qgc2V0CiBDT05GSUdfQkxLX0RFVl9ETT1tCisjIENPTkZJR19ETV9ERUJVRyBpcyBub3Qgc2V0CiBDT05GSUdfRE1fQ1JZUFQ9bQogQ09ORklHX0RNX1NOQVBTSE9UPW0KIENPTkZJR19ETV9NSVJST1I9bQogQ09ORklHX0RNX1pFUk89bQogQ09ORklHX0RNX01VTFRJUEFUSD1tCiBDT05GSUdfRE1fTVVMVElQQVRIX0VNQz1tCi0KLSMKLSMgRnVzaW9uIE1QVCBkZXZpY2Ugc3VwcG9ydAotIwotCi0jCi0jIElFRUUgMTM5NCAoRmlyZVdpcmUpIHN1cHBvcnQKLSMKLQotIwotIyBJMk8gZGV2aWNlIHN1cHBvcnQKLSMKLQotIwotIyBOZXR3b3JraW5nIHN1cHBvcnQKLSMKLUNPTkZJR19ORVQ9eQotCi0jCi0jIE5ldHdvcmtpbmcgb3B0aW9ucwotIwotQ09ORklHX1BBQ0tFVD15Ci0jIENPTkZJR19QQUNLRVRfTU1BUCBpcyBub3Qgc2V0Ci1DT05GSUdfVU5JWD15Ci1DT05GSUdfTkVUX0tFWT15Ci1DT05GSUdfSU5FVD15Ci0jIENPTkZJR19JUF9NVUxUSUNBU1QgaXMgbm90IHNldAotIyBDT05GSUdfSVBfQURWQU5DRURfUk9VVEVSIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lQX1BOUCBpcyBub3Qgc2V0Ci1DT05GSUdfTkVUX0lQSVA9bQotQ09ORklHX05FVF9JUEdSRT1tCi0jIENPTkZJR19BUlBEIGlzIG5vdCBzZXQKLUNPTkZJR19TWU5fQ09PS0lFUz15Ci1DT05GSUdfSU5FVF9BSD1tCi1DT05GSUdfSU5FVF9FU1A9bQotQ09ORklHX0lORVRfSVBDT01QPW0KLUNPTkZJR19JTkVUX1RVTk5FTD1tCi1DT05GSUdfSVBfVENQRElBRz1tCi1DT05GSUdfSVBfVENQRElBR19JUFY2PXkKLQotIwotIyBJUDogVmlydHVhbCBTZXJ2ZXIgQ29uZmlndXJhdGlvbgotIwotIyBDT05GSUdfSVBfVlMgaXMgbm90IHNldAotQ09ORklHX0lQVjY9bQotQ09ORklHX0lQVjZfUFJJVkFDWT15Ci1DT05GSUdfSU5FVDZfQUg9bQotQ09ORklHX0lORVQ2X0VTUD1tCi1DT05GSUdfSU5FVDZfSVBDT01QPW0KLUNPTkZJR19JTkVUNl9UVU5ORUw9bQotQ09ORklHX0lQVjZfVFVOTkVMPW0KLUNPTkZJR19ORVRGSUxURVI9eQotIyBDT05GSUdfTkVURklMVEVSX0RFQlVHIGlzIG5vdCBzZXQKLQotIwotIyBJUDogTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24KLSMKLUNPTkZJR19JUF9ORl9DT05OVFJBQ0s9bQotIyBDT05GSUdfSVBfTkZfQ1RfQUNDVCBpcyBub3Qgc2V0Ci1DT05GSUdfSVBfTkZfQ09OTlRSQUNLX01BUks9eQotIyBDT05GSUdfSVBfTkZfQ1RfUFJPVE9fU0NUUCBpcyBub3Qgc2V0Ci1DT05GSUdfSVBfTkZfRlRQPW0KLUNPTkZJR19JUF9ORl9JUkM9bQotQ09ORklHX0lQX05GX1RGVFA9bQotQ09ORklHX0lQX05GX0FNQU5EQT1tCi1DT05GSUdfSVBfTkZfUVVFVUU9bQotQ09ORklHX0lQX05GX0lQVEFCTEVTPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9MSU1JVD1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfSVBSQU5HRT1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfTUFDPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9QS1RUWVBFPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9NQVJLPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9NVUxUSVBPUlQ9bQotQ09ORklHX0lQX05GX01BVENIX1RPUz1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfUkVDRU5UPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9FQ049bQotQ09ORklHX0lQX05GX01BVENIX0RTQ1A9bQotQ09ORklHX0lQX05GX01BVENIX0FIX0VTUD1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfTEVOR1RIPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9UVEw9bQotQ09ORklHX0lQX05GX01BVENIX1RDUE1TUz1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfSEVMUEVSPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9TVEFURT1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfQ09OTlRSQUNLPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9PV05FUj1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfQUREUlRZUEU9bQotQ09ORklHX0lQX05GX01BVENIX1JFQUxNPW0KLSMgQ09ORklHX0lQX05GX01BVENIX1NDVFAgaXMgbm90IHNldAotIyBDT05GSUdfSVBfTkZfTUFUQ0hfQ09NTUVOVCBpcyBub3Qgc2V0Ci1DT05GSUdfSVBfTkZfTUFUQ0hfQ09OTk1BUks9bQotQ09ORklHX0lQX05GX01BVENIX0hBU0hMSU1JVD1tCi1DT05GSUdfSVBfTkZfRklMVEVSPW0KLUNPTkZJR19JUF9ORl9UQVJHRVRfUkVKRUNUPW0KLUNPTkZJR19JUF9ORl9UQVJHRVRfTE9HPW0KLUNPTkZJR19JUF9ORl9UQVJHRVRfVUxPRz1tCi1DT05GSUdfSVBfTkZfVEFSR0VUX1RDUE1TUz1tCi1DT05GSUdfSVBfTkZfTkFUPW0KLUNPTkZJR19JUF9ORl9OQVRfTkVFREVEPXkKLUNPTkZJR19JUF9ORl9UQVJHRVRfTUFTUVVFUkFERT1tCi1DT05GSUdfSVBfTkZfVEFSR0VUX1JFRElSRUNUPW0KLUNPTkZJR19JUF9ORl9UQVJHRVRfTkVUTUFQPW0KLUNPTkZJR19JUF9ORl9UQVJHRVRfU0FNRT1tCi1DT05GSUdfSVBfTkZfTkFUX1NOTVBfQkFTSUM9bQotQ09ORklHX0lQX05GX05BVF9JUkM9bQotQ09ORklHX0lQX05GX05BVF9GVFA9bQotQ09ORklHX0lQX05GX05BVF9URlRQPW0KLUNPTkZJR19JUF9ORl9OQVRfQU1BTkRBPW0KLUNPTkZJR19JUF9ORl9NQU5HTEU9bQotQ09ORklHX0lQX05GX1RBUkdFVF9UT1M9bQotQ09ORklHX0lQX05GX1RBUkdFVF9FQ049bQotQ09ORklHX0lQX05GX1RBUkdFVF9EU0NQPW0KLUNPTkZJR19JUF9ORl9UQVJHRVRfTUFSSz1tCi1DT05GSUdfSVBfTkZfVEFSR0VUX0NMQVNTSUZZPW0KLUNPTkZJR19JUF9ORl9UQVJHRVRfQ09OTk1BUks9bQotIyBDT05GSUdfSVBfTkZfVEFSR0VUX0NMVVNURVJJUCBpcyBub3Qgc2V0Ci1DT05GSUdfSVBfTkZfUkFXPW0KLUNPTkZJR19JUF9ORl9UQVJHRVRfTk9UUkFDSz1tCi1DT05GSUdfSVBfTkZfQVJQVEFCTEVTPW0KLUNPTkZJR19JUF9ORl9BUlBGSUxURVI9bQotQ09ORklHX0lQX05GX0FSUF9NQU5HTEU9bQotCi0jCi0jIElQdjY6IE5ldGZpbHRlciBDb25maWd1cmF0aW9uIChFWFBFUklNRU5UQUwpCi0jCi1DT05GSUdfSVA2X05GX1FVRVVFPW0KLUNPTkZJR19JUDZfTkZfSVBUQUJMRVM9bQotQ09ORklHX0lQNl9ORl9NQVRDSF9MSU1JVD1tCi1DT05GSUdfSVA2X05GX01BVENIX01BQz1tCi1DT05GSUdfSVA2X05GX01BVENIX1JUPW0KLUNPTkZJR19JUDZfTkZfTUFUQ0hfT1BUUz1tCi1DT05GSUdfSVA2X05GX01BVENIX0ZSQUc9bQotQ09ORklHX0lQNl9ORl9NQVRDSF9ITD1tCi1DT05GSUdfSVA2X05GX01BVENIX01VTFRJUE9SVD1tCi1DT05GSUdfSVA2X05GX01BVENIX09XTkVSPW0KLUNPTkZJR19JUDZfTkZfTUFUQ0hfTUFSSz1tCi1DT05GSUdfSVA2X05GX01BVENIX0lQVjZIRUFERVI9bQotQ09ORklHX0lQNl9ORl9NQVRDSF9BSEVTUD1tCi1DT05GSUdfSVA2X05GX01BVENIX0xFTkdUSD1tCi1DT05GSUdfSVA2X05GX01BVENIX0VVSTY0PW0KLUNPTkZJR19JUDZfTkZfRklMVEVSPW0KLUNPTkZJR19JUDZfTkZfVEFSR0VUX0xPRz1tCi1DT05GSUdfSVA2X05GX01BTkdMRT1tCi1DT05GSUdfSVA2X05GX1RBUkdFVF9NQVJLPW0KLUNPTkZJR19JUDZfTkZfUkFXPW0KLUNPTkZJR19YRlJNPXkKLUNPTkZJR19YRlJNX1VTRVI9bQotCi0jCi0jIFNDVFAgQ29uZmlndXJhdGlvbiAoRVhQRVJJTUVOVEFMKQotIwotQ09ORklHX0lQX1NDVFA9bQotIyBDT05GSUdfU0NUUF9EQkdfTVNHIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NDVFBfREJHX09CSkNOVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19TQ1RQX0hNQUNfTk9ORSBpcyBub3Qgc2V0Ci0jIENPTkZJR19TQ1RQX0hNQUNfU0hBMSBpcyBub3Qgc2V0Ci1DT05GSUdfU0NUUF9ITUFDX01ENT15Ci0jIENPTkZJR19BVE0gaXMgbm90IHNldAotIyBDT05GSUdfQlJJREdFIGlzIG5vdCBzZXQKLSMgQ09ORklHX1ZMQU5fODAyMVEgaXMgbm90IHNldAotIyBDT05GSUdfREVDTkVUIGlzIG5vdCBzZXQKLUNPTkZJR19MTEM9bQotIyBDT05GSUdfTExDMiBpcyBub3Qgc2V0Ci1DT05GSUdfSVBYPW0KLSMgQ09ORklHX0lQWF9JTlRFUk4gaXMgbm90IHNldAotQ09ORklHX0FUQUxLPW0KLSMgQ09ORklHX0RFVl9BUFBMRVRBTEsgaXMgbm90IHNldAotIyBDT05GSUdfWDI1IGlzIG5vdCBzZXQKLSMgQ09ORklHX0xBUEIgaXMgbm90IHNldAotIyBDT05GSUdfTkVUX0RJVkVSVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19FQ09ORVQgaXMgbm90IHNldAotIyBDT05GSUdfV0FOX1JPVVRFUiBpcyBub3Qgc2V0Ci0KLSMKLSMgUW9TIGFuZC9vciBmYWlyIHF1ZXVlaW5nCi0jCi0jIENPTkZJR19ORVRfU0NIRUQgaXMgbm90IHNldAotQ09ORklHX05FVF9DTFNfUk9VVEU9eQotCi0jCi0jIE5ldHdvcmsgdGVzdGluZwotIwotIyBDT05GSUdfTkVUX1BLVEdFTiBpcyBub3Qgc2V0Ci1DT05GSUdfTkVUUE9MTD15Ci0jIENPTkZJR19ORVRQT0xMX1JYIGlzIG5vdCBzZXQKLSMgQ09ORklHX05FVFBPTExfVFJBUCBpcyBub3Qgc2V0Ci1DT05GSUdfTkVUX1BPTExfQ09OVFJPTExFUj15Ci0jIENPTkZJR19IQU1SQURJTyBpcyBub3Qgc2V0Ci0jIENPTkZJR19JUkRBIGlzIG5vdCBzZXQKLSMgQ09ORklHX0JUIGlzIG5vdCBzZXQKK0NPTkZJR19ETV9NVUxUSVBBVEhfUkRBQz1tCitDT05GSUdfRE1fTVVMVElQQVRIX0hQPW0KKyMgQ09ORklHX0RNX0RFTEFZIGlzIG5vdCBzZXQKK0NPTkZJR19ETV9VRVZFTlQ9eQogQ09ORklHX05FVERFVklDRVM9eQorIyBDT05GSUdfTkVUREVWSUNFU19NVUxUSVFVRVVFIGlzIG5vdCBzZXQKIENPTkZJR19EVU1NWT1tCiAjIENPTkZJR19CT05ESU5HIGlzIG5vdCBzZXQKK0NPTkZJR19NQUNWTEFOPW0KIENPTkZJR19FUVVBTElaRVI9bQogIyBDT05GSUdfVFVOIGlzIG5vdCBzZXQKLQotIwotIyBBUkNuZXQgZGV2aWNlcwotIworQ09ORklHX1ZFVEg9bQogIyBDT05GSUdfQVJDTkVUIGlzIG5vdCBzZXQKLQotIwotIyBFdGhlcm5ldCAoMTAgb3IgMTAwTWJpdCkKLSMKKyMgQ09ORklHX1BIWUxJQiBpcyBub3Qgc2V0CiBDT05GSUdfTkVUX0VUSEVSTkVUPXkKLUNPTkZJR19NSUk9bQorIyBDT05GSUdfTUlJIGlzIG5vdCBzZXQKIENPTkZJR19BUklBRE5FPW0KIENPTkZJR19BMjA2NT1tCiBDT05GSUdfSFlEUkE9bQpAQCAtNDkzLDMyICs2MTAsMjQgQEAKICMgQ09ORklHX0RFUENBIGlzIG5vdCBzZXQKICMgQ09ORklHX0hQMTAwIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9JU0EgaXMgbm90IHNldAorIyBDT05GSUdfSUJNX05FV19FTUFDX1pNSUkgaXMgbm90IHNldAorIyBDT05GSUdfSUJNX05FV19FTUFDX1JHTUlJIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lCTV9ORVdfRU1BQ19UQUggaXMgbm90IHNldAorIyBDT05GSUdfSUJNX05FV19FTUFDX0VNQUM0IGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9QQ0kgaXMgbm90IHNldAorIyBDT05GSUdfQjQ0IGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9QT0NLRVQgaXMgbm90IHNldAotCi0jCi0jIEV0aGVybmV0ICgxMDAwIE1iaXQpCi0jCi0KLSMKLSMgRXRoZXJuZXQgKDEwMDAwIE1iaXQpCi0jCi0KLSMKLSMgVG9rZW4gUmluZyBkZXZpY2VzCi0jCisjIENPTkZJR19ORVRERVZfMTAwMCBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRERVZfMTAwMDAgaXMgbm90IHNldAogIyBDT05GSUdfVFIgaXMgbm90IHNldAogCiAjCi0jIFdpcmVsZXNzIExBTiAobm9uLWhhbXJhZGlvKQorIyBXaXJlbGVzcyBMQU4KICMKLSMgQ09ORklHX05FVF9SQURJTyBpcyBub3Qgc2V0Ci0KLSMKLSMgV2FuIGludGVyZmFjZXMKLSMKKyMgQ09ORklHX1dMQU5fUFJFODAyMTEgaXMgbm90IHNldAorIyBDT05GSUdfV0xBTl84MDIxMSBpcyBub3Qgc2V0CiAjIENPTkZJR19XQU4gaXMgbm90IHNldAotQ09ORklHX1BMSVA9bQorIyBDT05GSUdfUExJUCBpcyBub3Qgc2V0CiBDT05GSUdfUFBQPW0KICMgQ09ORklHX1BQUF9NVUxUSUxJTksgaXMgbm90IHNldAogQ09ORklHX1BQUF9GSUxURVI9eQpAQCAtNTI2LDI4ICs2MzUsMjggQEAKIENPTkZJR19QUFBfU1lOQ19UVFk9bQogQ09ORklHX1BQUF9ERUZMQVRFPW0KIENPTkZJR19QUFBfQlNEQ09NUD1tCitDT05GSUdfUFBQX01QUEU9bQogQ09ORklHX1BQUE9FPW0KK0NPTkZJR19QUFBPTDJUUD1tCiBDT05GSUdfU0xJUD1tCiBDT05GSUdfU0xJUF9DT01QUkVTU0VEPXkKK0NPTkZJR19TTEhDPW0KIENPTkZJR19TTElQX1NNQVJUPXkKIENPTkZJR19TTElQX01PREVfU0xJUDY9eQotQ09ORklHX1NIQVBFUj1tCiBDT05GSUdfTkVUQ09OU09MRT1tCi0KLSMKLSMgSVNETiBzdWJzeXN0ZW0KLSMKK0NPTkZJR19ORVRDT05TT0xFX0RZTkFNSUM9eQorQ09ORklHX05FVFBPTEw9eQorIyBDT05GSUdfTkVUUE9MTF9UUkFQIGlzIG5vdCBzZXQKK0NPTkZJR19ORVRfUE9MTF9DT05UUk9MTEVSPXkKICMgQ09ORklHX0lTRE4gaXMgbm90IHNldAotCi0jCi0jIFRlbGVwaG9ueSBTdXBwb3J0Ci0jCiAjIENPTkZJR19QSE9ORSBpcyBub3Qgc2V0CiAKICMKICMgSW5wdXQgZGV2aWNlIHN1cHBvcnQKICMKIENPTkZJR19JTlBVVD15CitDT05GSUdfSU5QVVRfRkZfTUVNTEVTUz1tCisjIENPTkZJR19JTlBVVF9QT0xMREVWIGlzIG5vdCBzZXQKIAogIwogIyBVc2VybGFuZCBpbnRlcmZhY2VzCkBAIC01NTcsNyArNjY2LDYgQEAKIENPTkZJR19JTlBVVF9NT1VTRURFVl9TQ1JFRU5fWD0xMDI0CiBDT05GSUdfSU5QVVRfTU9VU0VERVZfU0NSRUVOX1k9NzY4CiAjIENPTkZJR19JTlBVVF9KT1lERVYgaXMgbm90IHNldAotIyBDT05GSUdfSU5QVVRfVFNERVYgaXMgbm90IHNldAogIyBDT05GSUdfSU5QVVRfRVZERVYgaXMgbm90IHNldAogIyBDT05GSUdfSU5QVVRfRVZCVUcgaXMgbm90IHNldAogCkBAIC01NzAsNiArNjc4LDcgQEAKICMgQ09ORklHX0tFWUJPQVJEX0xLS0JEIGlzIG5vdCBzZXQKICMgQ09ORklHX0tFWUJPQVJEX1hUS0JEIGlzIG5vdCBzZXQKICMgQ09ORklHX0tFWUJPQVJEX05FV1RPTiBpcyBub3Qgc2V0CisjIENPTkZJR19LRVlCT0FSRF9TVE9XQVdBWSBpcyBub3Qgc2V0CiBDT05GSUdfS0VZQk9BUkRfQU1JR0E9eQogQ09ORklHX0lOUFVUX01PVVNFPXkKICMgQ09ORklHX01PVVNFX1BTMiBpcyBub3Qgc2V0CkBAIC01NzcsNyArNjg2LDcgQEAKICMgQ09ORklHX01PVVNFX0lOUE9SVCBpcyBub3Qgc2V0CiAjIENPTkZJR19NT1VTRV9MT0dJQk0gaXMgbm90IHNldAogIyBDT05GSUdfTU9VU0VfUEMxMTBQQUQgaXMgbm90IHNldAotQ09ORklHX01PVVNFX0FNSUdBPXkKK0NPTkZJR19NT1VTRV9BTUlHQT1tCiAjIENPTkZJR19NT1VTRV9WU1hYWEFBIGlzIG5vdCBzZXQKIENPTkZJR19JTlBVVF9KT1lTVElDSz15CiAjIENPTkZJR19KT1lTVElDS19BTkFMT0cgaXMgbm90IHNldApAQCAtNjAzLDE2ICs3MTIsMTYgQEAKICMgQ09ORklHX0pPWVNUSUNLX1RVUkJPR1JBRlggaXMgbm90IHNldAogQ09ORklHX0pPWVNUSUNLX0FNSUdBPW0KICMgQ09ORklHX0pPWVNUSUNLX0pPWURVTVAgaXMgbm90IHNldAorIyBDT05GSUdfSU5QVVRfVEFCTEVUIGlzIG5vdCBzZXQKICMgQ09ORklHX0lOUFVUX1RPVUNIU0NSRUVOIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lOUFVUX01JU0MgaXMgbm90IHNldAorQ09ORklHX0lOUFVUX01JU0M9eQorQ09ORklHX0lOUFVUX002OEtfQkVFUD1tCisjIENPTkZJR19JTlBVVF9VSU5QVVQgaXMgbm90IHNldAogCiAjCiAjIEhhcmR3YXJlIEkvTyBwb3J0cwogIwotQ09ORklHX1NFUklPPW0KLUNPTkZJR19TRVJJT19TRVJQT1JUPW0KLSMgQ09ORklHX1NFUklPX1BBUktCRCBpcyBub3Qgc2V0Ci0jIENPTkZJR19TRVJJT19SQVcgaXMgbm90IHNldAorIyBDT05GSUdfU0VSSU8gaXMgbm90IHNldAogIyBDT05GSUdfR0FNRVBPUlQgaXMgbm90IHNldAogCiAjCkBAIC02MjEsNiArNzMwLDcgQEAKIENPTkZJR19WVD15CiBDT05GSUdfVlRfQ09OU09MRT15CiBDT05GSUdfSFdfQ09OU09MRT15CitDT05GSUdfVlRfSFdfQ09OU09MRV9CSU5ESU5HPXkKICMgQ09ORklHX1NFUklBTF9OT05TVEFOREFSRCBpcyBub3Qgc2V0CiBDT05GSUdfQTIyMzI9bQogCkBAIC02MzgsOTQgKzc0OCwxMDIgQEAKIENPTkZJR19QUklOVEVSPW0KICMgQ09ORklHX0xQX0NPTlNPTEUgaXMgbm90IHNldAogIyBDT05GSUdfUFBERVYgaXMgbm90IHNldAotIyBDT05GSUdfVElQQVIgaXMgbm90IHNldAotCi0jCi0jIElQTUkKLSMKICMgQ09ORklHX0lQTUlfSEFORExFUiBpcyBub3Qgc2V0Ci0KLSMKLSMgV2F0Y2hkb2cgQ2FyZHMKLSMKLSMgQ09ORklHX1dBVENIRE9HIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hXX1JBTkRPTSBpcyBub3Qgc2V0CiBDT05GSUdfR0VOX1JUQz1tCiBDT05GSUdfR0VOX1JUQ19YPXkKICMgQ09ORklHX0RUTEsgaXMgbm90IHNldAogIyBDT05GSUdfUjM5NjQgaXMgbm90IHNldAotCi0jCi0jIEZ0YXBlLCB0aGUgZmxvcHB5IHRhcGUgZGV2aWNlIGRyaXZlcgotIwotIyBDT05GSUdfRFJNIGlzIG5vdCBzZXQKICMgQ09ORklHX1JBV19EUklWRVIgaXMgbm90IHNldAotCi0jCi0jIFRQTSBkZXZpY2VzCi0jCi0KLSMKLSMgSTJDIHN1cHBvcnQKLSMKKyMgQ09ORklHX1RDR19UUE0gaXMgbm90IHNldAogIyBDT05GSUdfSTJDIGlzIG5vdCBzZXQKIAogIwotIyBEYWxsYXMncyAxLXdpcmUgYnVzCisjIFNQSSBzdXBwb3J0CiAjCisjIENPTkZJR19TUEkgaXMgbm90IHNldAorIyBDT05GSUdfU1BJX01BU1RFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19XMSBpcyBub3Qgc2V0CisjIENPTkZJR19QT1dFUl9TVVBQTFkgaXMgbm90IHNldAorIyBDT05GSUdfSFdNT04gaXMgbm90IHNldAorIyBDT05GSUdfVEhFUk1BTCBpcyBub3Qgc2V0CisjIENPTkZJR19XQVRDSERPRyBpcyBub3Qgc2V0CiAKICMKLSMgTWlzYyBkZXZpY2VzCisjIFNvbmljcyBTaWxpY29uIEJhY2twbGFuZQogIworQ09ORklHX1NTQl9QT1NTSUJMRT15CisjIENPTkZJR19TU0IgaXMgbm90IHNldAorCisjCisjIE11bHRpZnVuY3Rpb24gZGV2aWNlIGRyaXZlcnMKKyMKKyMgQ09ORklHX01GRF9TTTUwMSBpcyBub3Qgc2V0CiAKICMKICMgTXVsdGltZWRpYSBkZXZpY2VzCiAjCiAjIENPTkZJR19WSURFT19ERVYgaXMgbm90IHNldAotCi0jCi0jIERpZ2l0YWwgVmlkZW8gQnJvYWRjYXN0aW5nIERldmljZXMKLSMKLSMgQ09ORklHX0RWQiBpcyBub3Qgc2V0CisjIENPTkZJR19EVkJfQ09SRSBpcyBub3Qgc2V0CisjIENPTkZJR19EQUIgaXMgbm90IHNldAogCiAjCiAjIEdyYXBoaWNzIHN1cHBvcnQKICMKKyMgQ09ORklHX1ZHQVNUQVRFIGlzIG5vdCBzZXQKKyMgQ09ORklHX1ZJREVPX09VVFBVVF9DT05UUk9MIGlzIG5vdCBzZXQKIENPTkZJR19GQj15CisjIENPTkZJR19GSVJNV0FSRV9FRElEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZCX0REQyBpcyBub3Qgc2V0CiBDT05GSUdfRkJfQ0ZCX0ZJTExSRUNUPXkKIENPTkZJR19GQl9DRkJfQ09QWUFSRUE9eQogQ09ORklHX0ZCX0NGQl9JTUFHRUJMSVQ9eQotQ09ORklHX0ZCX1NPRlRfQ1VSU09SPXkKKyMgQ09ORklHX0ZCX0NGQl9SRVZfUElYRUxTX0lOX0JZVEUgaXMgbm90IHNldAorIyBDT05GSUdfRkJfU1lTX0ZJTExSRUNUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZCX1NZU19DT1BZQVJFQSBpcyBub3Qgc2V0CisjIENPTkZJR19GQl9TWVNfSU1BR0VCTElUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZCX1NZU19GT1BTIGlzIG5vdCBzZXQKK0NPTkZJR19GQl9ERUZFUlJFRF9JTz15CisjIENPTkZJR19GQl9TVkdBTElCIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZCX01BQ01PREVTIGlzIG5vdCBzZXQKLUNPTkZJR19GQl9NT0RFX0hFTFBFUlM9eQorIyBDT05GSUdfRkJfQkFDS0xJR0hUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZCX01PREVfSEVMUEVSUyBpcyBub3Qgc2V0CiAjIENPTkZJR19GQl9USUxFQkxJVFRJTkcgaXMgbm90IHNldAotQ09ORklHX0ZCX0NJUlJVUz1tCisKKyMKKyMgRnJhbWUgYnVmZmVyIGhhcmR3YXJlIGRyaXZlcnMKKyMKK0NPTkZJR19GQl9DSVJSVVM9eQogQ09ORklHX0ZCX0FNSUdBPXkKIENPTkZJR19GQl9BTUlHQV9PQ1M9eQogQ09ORklHX0ZCX0FNSUdBX0VDUz15CiBDT05GSUdfRkJfQU1JR0FfQUdBPXkKIENPTkZJR19GQl9GTTI9eQorIyBDT05GSUdfRkJfVVZFU0EgaXMgbm90IHNldAogIyBDT05GSUdfRkJfUzFEMTNYWFggaXMgbm90IHNldAogIyBDT05GSUdfRkJfVklSVFVBTCBpcyBub3Qgc2V0CisjIENPTkZJR19CQUNLTElHSFRfTENEX1NVUFBPUlQgaXMgbm90IHNldAorCisjCisjIERpc3BsYXkgZGV2aWNlIHN1cHBvcnQKKyMKKyMgQ09ORklHX0RJU1BMQVlfU1VQUE9SVCBpcyBub3Qgc2V0CiAKICMKICMgQ29uc29sZSBkaXNwbGF5IGRyaXZlciBzdXBwb3J0CiAjCiBDT05GSUdfRFVNTVlfQ09OU09MRT15CiBDT05GSUdfRlJBTUVCVUZGRVJfQ09OU09MRT15CisjIENPTkZJR19GUkFNRUJVRkZFUl9DT05TT0xFX0RFVEVDVF9QUklNQVJZIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZSQU1FQlVGRkVSX0NPTlNPTEVfUk9UQVRJT04gaXMgbm90IHNldAogIyBDT05GSUdfRk9OVFMgaXMgbm90IHNldAogQ09ORklHX0ZPTlRfOHg4PXkKIENPTkZJR19GT05UXzh4MTY9eQogQ09ORklHX0ZPTlRfUEVBUkxfOHg4PXkKLQotIwotIyBMb2dvIGNvbmZpZ3VyYXRpb24KLSMKIENPTkZJR19MT0dPPXkKIENPTkZJR19MT0dPX0xJTlVYX01PTk89eQogQ09ORklHX0xPR09fTElOVVhfVkdBMTY9eQogQ09ORklHX0xPR09fTElOVVhfQ0xVVDIyND15Ci0jIENPTkZJR19CQUNLTElHSFRfTENEX1NVUFBPUlQgaXMgbm90IHNldAogCiAjCiAjIFNvdW5kCkBAIC03MzMsMjcgKzg1MSwyMSBAQAogQ09ORklHX1NPVU5EPW0KIENPTkZJR19ETUFTT1VORF9QQVVMQT1tCiBDT05GSUdfRE1BU09VTkQ9bQotCi0jCi0jIFVTQiBzdXBwb3J0Ci0jCi0jIENPTkZJR19VU0JfQVJDSF9IQVNfSENEIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VTQl9BUkNIX0hBU19PSENJIGlzIG5vdCBzZXQKLQotIwotIyBVU0IgR2FkZ2V0IFN1cHBvcnQKLSMKLSMgQ09ORklHX1VTQl9HQURHRVQgaXMgbm90IHNldAotCi0jCi0jIE1NQy9TRCBDYXJkIHN1cHBvcnQKLSMKK0NPTkZJR19ISURfU1VQUE9SVD15CitDT05GSUdfSElEPW0KKyMgQ09ORklHX0hJRF9ERUJVRyBpcyBub3Qgc2V0CitDT05GSUdfSElEUkFXPXkKKyMgQ09ORklHX1VTQl9TVVBQT1JUIGlzIG5vdCBzZXQKICMgQ09ORklHX01NQyBpcyBub3Qgc2V0CisjIENPTkZJR19NRU1TVElDSyBpcyBub3Qgc2V0CisjIENPTkZJR19ORVdfTEVEUyBpcyBub3Qgc2V0CisjIENPTkZJR19SVENfQ0xBU1MgaXMgbm90IHNldAorIyBDT05GSUdfQVVYRElTUExBWSBpcyBub3Qgc2V0CiAKICMKLSMgSW5maW5pQmFuZCBzdXBwb3J0CisjIFVzZXJzcGFjZSBJL08KICMKLSMgQ09ORklHX0lORklOSUJBTkQgaXMgbm90IHNldAorIyBDT05GSUdfVUlPIGlzIG5vdCBzZXQKIAogIwogIyBDaGFyYWN0ZXIgZGV2aWNlcwpAQCAtNzY4LDEwICs4ODAsMTEgQEAKICMKIENPTkZJR19FWFQyX0ZTPXkKICMgQ09ORklHX0VYVDJfRlNfWEFUVFIgaXMgbm90IHNldAorIyBDT05GSUdfRVhUMl9GU19YSVAgaXMgbm90IHNldAogQ09ORklHX0VYVDNfRlM9eQogIyBDT05GSUdfRVhUM19GU19YQVRUUiBpcyBub3Qgc2V0CisjIENPTkZJR19FWFQ0REVWX0ZTIGlzIG5vdCBzZXQKIENPTkZJR19KQkQ9eQotIyBDT05GSUdfSkJEX0RFQlVHIGlzIG5vdCBzZXQKIENPTkZJR19SRUlTRVJGU19GUz1tCiAjIENPTkZJR19SRUlTRVJGU19DSEVDSyBpcyBub3Qgc2V0CiAjIENPTkZJR19SRUlTRVJGU19QUk9DX0lORk8gaXMgbm90IHNldApAQCAtNzgyLDI1ICs4OTUsMjkgQEAKICMgQ09ORklHX0pGU19ERUJVRyBpcyBub3Qgc2V0CiAjIENPTkZJR19KRlNfU1RBVElTVElDUyBpcyBub3Qgc2V0CiBDT05GSUdfRlNfUE9TSVhfQUNMPXkKLQotIwotIyBYRlMgc3VwcG9ydAotIwogQ09ORklHX1hGU19GUz1tCi1DT05GSUdfWEZTX0VYUE9SVD15Ci0jIENPTkZJR19YRlNfUlQgaXMgbm90IHNldAogIyBDT05GSUdfWEZTX1FVT1RBIGlzIG5vdCBzZXQKICMgQ09ORklHX1hGU19TRUNVUklUWSBpcyBub3Qgc2V0CiAjIENPTkZJR19YRlNfUE9TSVhfQUNMIGlzIG5vdCBzZXQKLUNPTkZJR19NSU5JWF9GUz15Ci0jIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19YRlNfUlQgaXMgbm90IHNldAorQ09ORklHX0dGUzJfRlM9bQorQ09ORklHX0dGUzJfRlNfTE9DS0lOR19OT0xPQ0s9bQorQ09ORklHX0dGUzJfRlNfTE9DS0lOR19ETE09bQorQ09ORklHX09DRlMyX0ZTPW0KKyMgQ09ORklHX09DRlMyX0RFQlVHX01BU0tMT0cgaXMgbm90IHNldAorIyBDT05GSUdfT0NGUzJfREVCVUdfRlMgaXMgbm90IHNldAorQ09ORklHX0ROT1RJRlk9eQorQ09ORklHX0lOT1RJRlk9eQorQ09ORklHX0lOT1RJRllfVVNFUj15CiBDT05GSUdfUVVPVEE9eQorQ09ORklHX1FVT1RBX05FVExJTktfSU5URVJGQUNFPXkKKyMgQ09ORklHX1BSSU5UX1FVT1RBX1dBUk5JTkcgaXMgbm90IHNldAogIyBDT05GSUdfUUZNVF9WMSBpcyBub3Qgc2V0CiAjIENPTkZJR19RRk1UX1YyIGlzIG5vdCBzZXQKIENPTkZJR19RVU9UQUNUTD15Ci1DT05GSUdfRE5PVElGWT15CiBDT05GSUdfQVVUT0ZTX0ZTPW0KIENPTkZJR19BVVRPRlM0X0ZTPW0KK0NPTkZJR19GVVNFX0ZTPW0KIAogIwogIyBDRC1ST00vRFZEIEZpbGVzeXN0ZW1zCkBAIC04MDgsNyArOTI1LDYgQEAKIENPTkZJR19JU085NjYwX0ZTPXkKIENPTkZJR19KT0xJRVQ9eQogQ09ORklHX1pJU09GUz15Ci1DT05GSUdfWklTT0ZTX0ZTPXkKIENPTkZJR19VREZfRlM9bQogQ09ORklHX1VERl9OTFM9eQogCkBAIC04MjcsMTkgKzk0MywxOCBAQAogIwogQ09ORklHX1BST0NfRlM9eQogQ09ORklHX1BST0NfS0NPUkU9eQorQ09ORklHX1BST0NfU1lTQ1RMPXkKIENPTkZJR19TWVNGUz15Ci0jIENPTkZJR19ERVZGU19GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ERVZQVFNfRlNfWEFUVFIgaXMgbm90IHNldAogQ09ORklHX1RNUEZTPXkKLSMgQ09ORklHX1RNUEZTX1hBVFRSIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RNUEZTX1BPU0lYX0FDTCBpcyBub3Qgc2V0CiAjIENPTkZJR19IVUdFVExCX1BBR0UgaXMgbm90IHNldAotQ09ORklHX1JBTUZTPXkKK0NPTkZJR19DT05GSUdGU19GUz1tCiAKICMKICMgTWlzY2VsbGFuZW91cyBmaWxlc3lzdGVtcwogIwogIyBDT05GSUdfQURGU19GUyBpcyBub3Qgc2V0Ci1DT05GSUdfQUZGU19GUz15CitDT05GSUdfQUZGU19GUz1tCiBDT05GSUdfSEZTX0ZTPW0KIENPTkZJR19IRlNQTFVTX0ZTPW0KICMgQ09ORklHX0JFRlNfRlMgaXMgbm90IHNldApAQCAtODQ3LDQzICs5NjIsMzkgQEAKICMgQ09ORklHX0VGU19GUyBpcyBub3Qgc2V0CiBDT05GSUdfQ1JBTUZTPW0KICMgQ09ORklHX1ZYRlNfRlMgaXMgbm90IHNldAorQ09ORklHX01JTklYX0ZTPXkKIENPTkZJR19IUEZTX0ZTPW0KICMgQ09ORklHX1FOWDRGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CiBDT05GSUdfU1lTVl9GUz1tCiBDT05GSUdfVUZTX0ZTPW0KICMgQ09ORklHX1VGU19GU19XUklURSBpcyBub3Qgc2V0Ci0KLSMKLSMgTmV0d29yayBGaWxlIFN5c3RlbXMKLSMKKyMgQ09ORklHX1VGU19ERUJVRyBpcyBub3Qgc2V0CitDT05GSUdfTkVUV09SS19GSUxFU1lTVEVNUz15CiBDT05GSUdfTkZTX0ZTPW0KIENPTkZJR19ORlNfVjM9eQorIyBDT05GSUdfTkZTX1YzX0FDTCBpcyBub3Qgc2V0CiBDT05GSUdfTkZTX1Y0PXkKICMgQ09ORklHX05GU19ESVJFQ1RJTyBpcyBub3Qgc2V0CiBDT05GSUdfTkZTRD1tCiBDT05GSUdfTkZTRF9WMz15Ci1DT05GSUdfTkZTRF9WND15CisjIENPTkZJR19ORlNEX1YzX0FDTCBpcyBub3Qgc2V0CisjIENPTkZJR19ORlNEX1Y0IGlzIG5vdCBzZXQKIENPTkZJR19ORlNEX1RDUD15CiBDT05GSUdfTE9DS0Q9bQogQ09ORklHX0xPQ0tEX1Y0PXkKIENPTkZJR19FWFBPUlRGUz1tCitDT05GSUdfTkZTX0NPTU1PTj15CiBDT05GSUdfU1VOUlBDPW0KIENPTkZJR19TVU5SUENfR1NTPW0KK0NPTkZJR19TVU5SUENfQklORDM0PXkKIENPTkZJR19SUENTRUNfR1NTX0tSQjU9bQogIyBDT05GSUdfUlBDU0VDX0dTU19TUEtNMyBpcyBub3Qgc2V0CiBDT05GSUdfU01CX0ZTPW0KIENPTkZJR19TTUJfTkxTX0RFRkFVTFQ9eQogQ09ORklHX1NNQl9OTFNfUkVNT1RFPSJjcDQzNyIKICMgQ09ORklHX0NJRlMgaXMgbm90IHNldAotQ09ORklHX05DUF9GUz1tCi0jIENPTkZJR19OQ1BGU19QQUNLRVRfU0lHTklORyBpcyBub3Qgc2V0Ci0jIENPTkZJR19OQ1BGU19JT0NUTF9MT0NLSU5HIGlzIG5vdCBzZXQKLSMgQ09ORklHX05DUEZTX1NUUk9ORyBpcyBub3Qgc2V0Ci1DT05GSUdfTkNQRlNfTkZTX05TPXkKLUNPTkZJR19OQ1BGU19PUzJfTlM9eQotIyBDT05GSUdfTkNQRlNfU01BTExET1MgaXMgbm90IHNldAotQ09ORklHX05DUEZTX05MUz15Ci0jIENPTkZJR19OQ1BGU19FWFRSQVMgaXMgbm90IHNldAorIyBDT05GSUdfTkNQX0ZTIGlzIG5vdCBzZXQKIENPTkZJR19DT0RBX0ZTPW0KICMgQ09ORklHX0NPREFfRlNfT0xEX0FQSSBpcyBub3Qgc2V0CiAjIENPTkZJR19BRlNfRlMgaXMgbm90IHNldApAQCAtODk0LDEwICsxMDA1LDYgQEAKICMgQ09ORklHX1BBUlRJVElPTl9BRFZBTkNFRCBpcyBub3Qgc2V0CiBDT05GSUdfQU1JR0FfUEFSVElUSU9OPXkKIENPTkZJR19NU0RPU19QQVJUSVRJT049eQotCi0jCi0jIE5hdGl2ZSBMYW5ndWFnZSBTdXBwb3J0Ci0jCiBDT05GSUdfTkxTPXkKIENPTkZJR19OTFNfREVGQVVMVD0iaXNvODg1OS0xIgogQ09ORklHX05MU19DT0RFUEFHRV80Mzc9eQpAQCAtOTM4LDM1ICsxMDQ1LDQyIEBACiBDT05GSUdfTkxTX0tPSThfUj1tCiBDT05GSUdfTkxTX0tPSThfVT1tCiBDT05GSUdfTkxTX1VURjg9bQorQ09ORklHX0RMTT1tCisjIENPTkZJR19ETE1fREVCVUcgaXMgbm90IHNldAogCiAjCiAjIEtlcm5lbCBoYWNraW5nCiAjCiAjIENPTkZJR19QUklOVEtfVElNRSBpcyBub3Qgc2V0Ci1DT05GSUdfREVCVUdfS0VSTkVMPXkKK0NPTkZJR19FTkFCTEVfV0FSTl9ERVBSRUNBVEVEPXkKK0NPTkZJR19FTkFCTEVfTVVTVF9DSEVDSz15CiBDT05GSUdfTUFHSUNfU1lTUlE9eQotQ09ORklHX0xPR19CVUZfU0hJRlQ9MTYKLSMgQ09ORklHX1NDSEVEU1RBVFMgaXMgbm90IHNldAotIyBDT05GSUdfREVCVUdfU0xBQiBpcyBub3Qgc2V0Ci0jIENPTkZJR19ERUJVR19TUElOTE9DSyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ERUJVR19TUElOTE9DS19TTEVFUCBpcyBub3Qgc2V0Ci0jIENPTkZJR19ERUJVR19LT0JKRUNUIGlzIG5vdCBzZXQKLUNPTkZJR19ERUJVR19CVUdWRVJCT1NFPXkKLSMgQ09ORklHX0RFQlVHX0lORk8gaXMgbm90IHNldAorIyBDT05GSUdfVU5VU0VEX1NZTUJPTFMgaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfRlMgaXMgbm90IHNldAotIyBDT05GSUdfRlJBTUVfUE9JTlRFUiBpcyBub3Qgc2V0CisjIENPTkZJR19IRUFERVJTX0NIRUNLIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RFQlVHX0tFUk5FTCBpcyBub3Qgc2V0CitDT05GSUdfREVCVUdfQlVHVkVSQk9TRT15CisjIENPTkZJR19TQU1QTEVTIGlzIG5vdCBzZXQKIAogIwogIyBTZWN1cml0eSBvcHRpb25zCiAjCiAjIENPTkZJR19LRVlTIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFQ1VSSVRZIGlzIG5vdCBzZXQKLQotIwotIyBDcnlwdG9ncmFwaGljIG9wdGlvbnMKLSMKKyMgQ09ORklHX1NFQ1VSSVRZX0ZJTEVfQ0FQQUJJTElUSUVTIGlzIG5vdCBzZXQKK0NPTkZJR19YT1JfQkxPQ0tTPW0KK0NPTkZJR19BU1lOQ19DT1JFPW0KK0NPTkZJR19BU1lOQ19NRU1DUFk9bQorQ09ORklHX0FTWU5DX1hPUj1tCiBDT05GSUdfQ1JZUFRPPXkKK0NPTkZJR19DUllQVE9fQUxHQVBJPXkKK0NPTkZJR19DUllQVE9fQUVBRD1tCitDT05GSUdfQ1JZUFRPX0JMS0NJUEhFUj1tCitDT05GSUdfQ1JZUFRPX1NFUUlWPW0KK0NPTkZJR19DUllQVE9fSEFTSD15CitDT05GSUdfQ1JZUFRPX01BTkFHRVI9eQogQ09ORklHX0NSWVBUT19ITUFDPXkKK0NPTkZJR19DUllQVE9fWENCQz1tCiBDT05GSUdfQ1JZUFRPX05VTEw9bQogQ09ORklHX0NSWVBUT19NRDQ9bQogQ09ORklHX0NSWVBUT19NRDU9bQpAQCAtOTc1LDkgKzEwODksMjEgQEAKIENPTkZJR19DUllQVE9fU0hBNTEyPW0KIENPTkZJR19DUllQVE9fV1A1MTI9bQogQ09ORklHX0NSWVBUT19UR1IxOTI9bQorQ09ORklHX0NSWVBUT19HRjEyOE1VTD1tCitDT05GSUdfQ1JZUFRPX0VDQj1tCitDT05GSUdfQ1JZUFRPX0NCQz1tCitDT05GSUdfQ1JZUFRPX1BDQkM9bQorQ09ORklHX0NSWVBUT19MUlc9bQorQ09ORklHX0NSWVBUT19YVFM9bQorQ09ORklHX0NSWVBUT19DVFI9bQorQ09ORklHX0NSWVBUT19HQ009bQorQ09ORklHX0NSWVBUT19DQ009bQorQ09ORklHX0NSWVBUT19DUllQVEQ9bQogQ09ORklHX0NSWVBUT19ERVM9bQorQ09ORklHX0NSWVBUT19GQ1JZUFQ9bQogQ09ORklHX0NSWVBUT19CTE9XRklTSD1tCiBDT05GSUdfQ1JZUFRPX1RXT0ZJU0g9bQorQ09ORklHX0NSWVBUT19UV09GSVNIX0NPTU1PTj1tCiBDT05GSUdfQ1JZUFRPX1NFUlBFTlQ9bQogQ09ORklHX0NSWVBUT19BRVM9bQogQ09ORklHX0NSWVBUT19DQVNUNT1tCkBAIC05ODYsMjAgKzExMTIsMzUgQEAKIENPTkZJR19DUllQVE9fQVJDND1tCiBDT05GSUdfQ1JZUFRPX0tIQVpBRD1tCiBDT05GSUdfQ1JZUFRPX0FOVUJJUz1tCitDT05GSUdfQ1JZUFRPX1NFRUQ9bQorQ09ORklHX0NSWVBUT19TQUxTQTIwPW0KIENPTkZJR19DUllQVE9fREVGTEFURT1tCiBDT05GSUdfQ1JZUFRPX01JQ0hBRUxfTUlDPW0KIENPTkZJR19DUllQVE9fQ1JDMzJDPW0KK0NPTkZJR19DUllQVE9fQ0FNRUxMSUE9bQogQ09ORklHX0NSWVBUT19URVNUPW0KLQotIwotIyBIYXJkd2FyZSBjcnlwdG8gZGV2aWNlcwotIworQ09ORklHX0NSWVBUT19BVVRIRU5DPW0KK0NPTkZJR19DUllQVE9fTFpPPW0KKyMgQ09ORklHX0NSWVBUT19IVyBpcyBub3Qgc2V0CiAKICMKICMgTGlicmFyeSByb3V0aW5lcwogIworQ09ORklHX0JJVFJFVkVSU0U9eQogQ09ORklHX0NSQ19DQ0lUVD1tCitDT05GSUdfQ1JDMTY9bQorIyBDT05GSUdfQ1JDX0lUVV9UIGlzIG5vdCBzZXQKIENPTkZJR19DUkMzMj15CisjIENPTkZJR19DUkM3IGlzIG5vdCBzZXQKIENPTkZJR19MSUJDUkMzMkM9bQogQ09ORklHX1pMSUJfSU5GTEFURT15CiBDT05GSUdfWkxJQl9ERUZMQVRFPW0KK0NPTkZJR19MWk9fQ09NUFJFU1M9bQorQ09ORklHX0xaT19ERUNPTVBSRVNTPW0KK0NPTkZJR19URVhUU0VBUkNIPXkKK0NPTkZJR19URVhUU0VBUkNIX0tNUD1tCitDT05GSUdfVEVYVFNFQVJDSF9CTT1tCitDT05GSUdfVEVYVFNFQVJDSF9GU009bQorQ09ORklHX1BMSVNUPXkKK0NPTkZJR19IQVNfSU9NRU09eQorQ09ORklHX0hBU19ETUE9eQpkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL2NvbmZpZ3MvYXBvbGxvX2RlZmNvbmZpZyBiL2FyY2gvbTY4ay9jb25maWdzL2Fwb2xsb19kZWZjb25maWcKaW5kZXggNjMwMjRiMC4uZTYxMTk2YyAxMDA2NDQKLS0tIGEvYXJjaC9tNjhrL2NvbmZpZ3MvYXBvbGxvX2RlZmNvbmZpZworKysgYi9hcmNoL202OGsvY29uZmlncy9hcG9sbG9fZGVmY29uZmlnCkBAIC0xLDYzICsxLDExMSBAQAogIwogIyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBtYWtlIGNvbmZpZzogZG9uJ3QgZWRpdAotIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjEyLXJjNi1tNjhrCi0jIFR1ZSBKdW4gIDcgMjA6MzQ6MjcgMjAwNQorIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjI1LXJjOAorIyBXZWQgQXByICAyIDIwOjQ2OjA3IDIwMDgKICMKIENPTkZJR19NNjhLPXkKIENPTkZJR19NTVU9eQotQ09ORklHX1VJRDE2PXkKIENPTkZJR19SV1NFTV9HRU5FUklDX1NQSU5MT0NLPXkKKyMgQ09ORklHX0FSQ0hfSEFTX0lMT0cyX1UzMiBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0hBU19JTE9HMl9VNjQgaXMgbm90IHNldAorQ09ORklHX0dFTkVSSUNfSFdFSUdIVD15CiBDT05GSUdfR0VORVJJQ19DQUxJQlJBVEVfREVMQVk9eQotCi0jCi0jIENvZGUgbWF0dXJpdHkgbGV2ZWwgb3B0aW9ucwotIwotQ09ORklHX0VYUEVSSU1FTlRBTD15Ci1DT05GSUdfQ0xFQU5fQ09NUElMRT15Ci1DT05GSUdfQlJPS0VOX09OX1NNUD15Ci1DT05GSUdfSU5JVF9FTlZfQVJHX0xJTUlUPTMyCitDT05GSUdfVElNRV9MT1dfUkVTPXkKK0NPTkZJR19HRU5FUklDX0lPTUFQPXkKK0NPTkZJR19OT19JT1BPUlQ9eQorIyBDT05GSUdfTk9fRE1BIGlzIG5vdCBzZXQKK0NPTkZJR19BUkNIX1NVUFBPUlRTX0FPVVQ9eQorQ09ORklHX0haPTEwMAorQ09ORklHX0RFRkNPTkZJR19MSVNUPSIvbGliL21vZHVsZXMvJFVOQU1FX1JFTEVBU0UvLmNvbmZpZyIKIAogIwogIyBHZW5lcmFsIHNldHVwCiAjCitDT05GSUdfRVhQRVJJTUVOVEFMPXkKK0NPTkZJR19CUk9LRU5fT05fU01QPXkKK0NPTkZJR19JTklUX0VOVl9BUkdfTElNSVQ9MzIKIENPTkZJR19MT0NBTFZFUlNJT049Ii1hcG9sbG8iCitDT05GSUdfTE9DQUxWRVJTSU9OX0FVVE89eQogQ09ORklHX1NXQVA9eQogQ09ORklHX1NZU1ZJUEM9eQorQ09ORklHX1NZU1ZJUENfU1lTQ1RMPXkKIENPTkZJR19QT1NJWF9NUVVFVUU9eQogQ09ORklHX0JTRF9QUk9DRVNTX0FDQ1Q9eQogIyBDT05GSUdfQlNEX1BST0NFU1NfQUNDVF9WMyBpcyBub3Qgc2V0Ci1DT05GSUdfU1lTQ1RMPXkKLUNPTkZJR19BVURJVD15Ci1DT05GSUdfSE9UUExVRz15Ci1DT05GSUdfS09CSkVDVF9VRVZFTlQ9eQorIyBDT05GSUdfVEFTS1NUQVRTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FVRElUIGlzIG5vdCBzZXQKICMgQ09ORklHX0lLQ09ORklHIGlzIG5vdCBzZXQKK0NPTkZJR19MT0dfQlVGX1NISUZUPTE0CisjIENPTkZJR19DR1JPVVBTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NZU0ZTX0RFUFJFQ0FURURfVjIgaXMgbm90IHNldAorQ09ORklHX1JFTEFZPXkKK0NPTkZJR19OQU1FU1BBQ0VTPXkKKyMgQ09ORklHX1VUU19OUyBpcyBub3Qgc2V0CisjIENPTkZJR19JUENfTlMgaXMgbm90IHNldAorIyBDT05GSUdfVVNFUl9OUyBpcyBub3Qgc2V0CisjIENPTkZJR19QSURfTlMgaXMgbm90IHNldAorQ09ORklHX0JMS19ERVZfSU5JVFJEPXkKK0NPTkZJR19JTklUUkFNRlNfU09VUkNFPSIiCisjIENPTkZJR19DQ19PUFRJTUlaRV9GT1JfU0laRSBpcyBub3Qgc2V0CitDT05GSUdfU1lTQ1RMPXkKICMgQ09ORklHX0VNQkVEREVEIGlzIG5vdCBzZXQKK0NPTkZJR19VSUQxNj15CitDT05GSUdfU1lTQ1RMX1NZU0NBTEw9eQogQ09ORklHX0tBTExTWU1TPXkKLSMgQ09ORklHX0tBTExTWU1TX0FMTCBpcyBub3Qgc2V0CiAjIENPTkZJR19LQUxMU1lNU19FWFRSQV9QQVNTIGlzIG5vdCBzZXQKK0NPTkZJR19IT1RQTFVHPXkKIENPTkZJR19QUklOVEs9eQogQ09ORklHX0JVRz15CitDT05GSUdfRUxGX0NPUkU9eQorIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0CiBDT05GSUdfQkFTRV9GVUxMPXkKIENPTkZJR19GVVRFWD15CitDT05GSUdfQU5PTl9JTk9ERVM9eQogQ09ORklHX0VQT0xMPXkKK0NPTkZJR19TSUdOQUxGRD15CitDT05GSUdfVElNRVJGRD15CitDT05GSUdfRVZFTlRGRD15CiBDT05GSUdfU0hNRU09eQotQ09ORklHX0NDX0FMSUdOX0ZVTkNUSU9OUz0wCi1DT05GSUdfQ0NfQUxJR05fTEFCRUxTPTAKLUNPTkZJR19DQ19BTElHTl9MT09QUz0wCi1DT05GSUdfQ0NfQUxJR05fSlVNUFM9MAorQ09ORklHX1ZNX0VWRU5UX0NPVU5URVJTPXkKK0NPTkZJR19TTEFCPXkKKyMgQ09ORklHX1NMVUIgaXMgbm90IHNldAorIyBDT05GSUdfU0xPQiBpcyBub3Qgc2V0CisjIENPTkZJR19QUk9GSUxJTkcgaXMgbm90IHNldAorIyBDT05GSUdfTUFSS0VSUyBpcyBub3Qgc2V0CisjIENPTkZJR19IQVZFX09QUk9GSUxFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hBVkVfS1BST0JFUyBpcyBub3Qgc2V0CisjIENPTkZJR19IQVZFX0tSRVRQUk9CRVMgaXMgbm90IHNldAorQ09ORklHX1BST0NfUEFHRV9NT05JVE9SPXkKK0NPTkZJR19TTEFCSU5GTz15CitDT05GSUdfUlRfTVVURVhFUz15CiAjIENPTkZJR19USU5ZX1NITUVNIGlzIG5vdCBzZXQKIENPTkZJR19CQVNFX1NNQUxMPTAKLQotIwotIyBMb2FkYWJsZSBtb2R1bGUgc3VwcG9ydAotIwogQ09ORklHX01PRFVMRVM9eQogQ09ORklHX01PRFVMRV9VTkxPQUQ9eQogIyBDT05GSUdfTU9EVUxFX0ZPUkNFX1VOTE9BRCBpcyBub3Qgc2V0Ci1DT05GSUdfT0JTT0xFVEVfTU9EUEFSTT15CiAjIENPTkZJR19NT0RWRVJTSU9OUyBpcyBub3Qgc2V0CiAjIENPTkZJR19NT0RVTEVfU1JDVkVSU0lPTl9BTEwgaXMgbm90IHNldAogQ09ORklHX0tNT0Q9eQorQ09ORklHX0JMT0NLPXkKKyMgQ09ORklHX0xCRCBpcyBub3Qgc2V0CisjIENPTkZJR19CTEtfREVWX0lPX1RSQUNFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0xTRiBpcyBub3Qgc2V0CitDT05GSUdfQkxLX0RFVl9CU0c9eQorCisjCisjIElPIFNjaGVkdWxlcnMKKyMKK0NPTkZJR19JT1NDSEVEX05PT1A9eQorQ09ORklHX0lPU0NIRURfQVM9eQorQ09ORklHX0lPU0NIRURfREVBRExJTkU9eQorQ09ORklHX0lPU0NIRURfQ0ZRPXkKK0NPTkZJR19ERUZBVUxUX0FTPXkKKyMgQ09ORklHX0RFRkFVTFRfREVBRExJTkUgaXMgbm90IHNldAorIyBDT05GSUdfREVGQVVMVF9DRlEgaXMgbm90IHNldAorIyBDT05GSUdfREVGQVVMVF9OT09QIGlzIG5vdCBzZXQKK0NPTkZJR19ERUZBVUxUX0lPU0NIRUQ9ImFudGljaXBhdG9yeSIKK0NPTkZJR19DTEFTU0lDX1JDVT15CiAKICMKICMgUGxhdGZvcm0gZGVwZW5kZW50IHNldHVwCkBAIC04MCwxMCArMTI4LDI0IEBACiBDT05GSUdfTTY4MDQwPXkKIENPTkZJR19NNjgwNjA9eQogQ09ORklHX01NVV9NT1RPUk9MQT15Ci1DT05GSUdfTTY4S0ZQVV9FTVU9eQotQ09ORklHX002OEtGUFVfRU1VX0VYVFJBUFJFQz15Ci0jIENPTkZJR19NNjhLRlBVX0VNVV9PTkxZIGlzIG5vdCBzZXQKKyMgQ09ORklHX002OEtGUFVfRU1VIGlzIG5vdCBzZXQKICMgQ09ORklHX0FEVkFOQ0VEIGlzIG5vdCBzZXQKK0NPTkZJR19BUkNIX0RJU0NPTlRJR01FTV9FTkFCTEU9eQorQ09ORklHX05PREVTX1NISUZUPTMKK0NPTkZJR19TRUxFQ1RfTUVNT1JZX01PREVMPXkKKyMgQ09ORklHX0ZMQVRNRU1fTUFOVUFMIGlzIG5vdCBzZXQKK0NPTkZJR19ESVNDT05USUdNRU1fTUFOVUFMPXkKKyMgQ09ORklHX1NQQVJTRU1FTV9NQU5VQUwgaXMgbm90IHNldAorQ09ORklHX0RJU0NPTlRJR01FTT15CitDT05GSUdfRkxBVF9OT0RFX01FTV9NQVA9eQorQ09ORklHX05FRURfTVVMVElQTEVfTk9ERVM9eQorIyBDT05GSUdfU1BBUlNFTUVNX1NUQVRJQyBpcyBub3Qgc2V0CisjIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUF9FTkFCTEUgaXMgbm90IHNldAorQ09ORklHX1NQTElUX1BUTE9DS19DUFVTPTQKKyMgQ09ORklHX1JFU09VUkNFU182NEJJVCBpcyBub3Qgc2V0CitDT05GSUdfWk9ORV9ETUFfRkxBRz0xCitDT05GSUdfQk9VTkNFPXkKK0NPTkZJR19WSVJUX1RPX0JVUz15CiAKICMKICMgR2VuZXJhbCBzZXR1cApAQCAtOTMsMTM0ICsxNTUsMTEgQEAKIENPTkZJR19CSU5GTVRfTUlTQz1tCiBDT05GSUdfSEVBUlRCRUFUPXkKIENPTkZJR19QUk9DX0hBUkRXQVJFPXkKK0NPTkZJR19aT05FX0RNQT15CisjIENPTkZJR19BUkNIX1NVUFBPUlRTX01TSSBpcyBub3Qgc2V0CiAKICMKLSMgRGV2aWNlIERyaXZlcnMKLSMKLQotIwotIyBHZW5lcmljIERyaXZlciBPcHRpb25zCi0jCi1DT05GSUdfU1RBTkRBTE9ORT15Ci1DT05GSUdfUFJFVkVOVF9GSVJNV0FSRV9CVUlMRD15Ci1DT05GSUdfRldfTE9BREVSPW0KLSMgQ09ORklHX0RFQlVHX0RSSVZFUiBpcyBub3Qgc2V0Ci0KLSMKLSMgTWVtb3J5IFRlY2hub2xvZ3kgRGV2aWNlcyAoTVREKQotIwotIyBDT05GSUdfTVREIGlzIG5vdCBzZXQKLQotIwotIyBQYXJhbGxlbCBwb3J0IHN1cHBvcnQKLSMKLSMgQ09ORklHX1BBUlBPUlQgaXMgbm90IHNldAotCi0jCi0jIFBsdWcgYW5kIFBsYXkgc3VwcG9ydAotIwotCi0jCi0jIEJsb2NrIGRldmljZXMKLSMKLSMgQ09ORklHX0JMS19ERVZfQ09XX0NPTU1PTiBpcyBub3Qgc2V0Ci1DT05GSUdfQkxLX0RFVl9MT09QPXkKLUNPTkZJR19CTEtfREVWX0NSWVBUT0xPT1A9bQotQ09ORklHX0JMS19ERVZfTkJEPW0KLUNPTkZJR19CTEtfREVWX1JBTT15Ci1DT05GSUdfQkxLX0RFVl9SQU1fQ09VTlQ9MTYKLUNPTkZJR19CTEtfREVWX1JBTV9TSVpFPTQwOTYKLUNPTkZJR19CTEtfREVWX0lOSVRSRD15Ci1DT05GSUdfSU5JVFJBTUZTX1NPVVJDRT0iIgotQ09ORklHX0NEUk9NX1BLVENEVkQ9bQotQ09ORklHX0NEUk9NX1BLVENEVkRfQlVGRkVSUz04Ci0jIENPTkZJR19DRFJPTV9QS1RDRFZEX1dDQUNIRSBpcyBub3Qgc2V0Ci0KLSMKLSMgSU8gU2NoZWR1bGVycwotIwotQ09ORklHX0lPU0NIRURfTk9PUD15Ci1DT05GSUdfSU9TQ0hFRF9BUz15Ci1DT05GSUdfSU9TQ0hFRF9ERUFETElORT15Ci1DT05GSUdfSU9TQ0hFRF9DRlE9eQotQ09ORklHX0FUQV9PVkVSX0VUSD1tCi0KLSMKLSMgQVRBL0FUQVBJL01GTS9STEwgc3VwcG9ydAotIwotIyBDT05GSUdfSURFIGlzIG5vdCBzZXQKLQotIwotIyBTQ1NJIGRldmljZSBzdXBwb3J0Ci0jCi1DT05GSUdfU0NTST15Ci1DT05GSUdfU0NTSV9QUk9DX0ZTPXkKLQotIwotIyBTQ1NJIHN1cHBvcnQgdHlwZSAoZGlzaywgdGFwZSwgQ0QtUk9NKQotIwotQ09ORklHX0JMS19ERVZfU0Q9eQotQ09ORklHX0NIUl9ERVZfU1Q9bQotIyBDT05GSUdfQ0hSX0RFVl9PU1NUIGlzIG5vdCBzZXQKLUNPTkZJR19CTEtfREVWX1NSPXkKLUNPTkZJR19CTEtfREVWX1NSX1ZFTkRPUj15Ci1DT05GSUdfQ0hSX0RFVl9TRz1tCi0KLSMKLSMgU29tZSBTQ1NJIGRldmljZXMgKGUuZy4gQ0QganVrZWJveCkgc3VwcG9ydCBtdWx0aXBsZSBMVU5zCi0jCi0jIENPTkZJR19TQ1NJX01VTFRJX0xVTiBpcyBub3Qgc2V0Ci1DT05GSUdfU0NTSV9DT05TVEFOVFM9eQotIyBDT05GSUdfU0NTSV9MT0dHSU5HIGlzIG5vdCBzZXQKLQotIwotIyBTQ1NJIFRyYW5zcG9ydCBBdHRyaWJ1dGVzCi0jCi0jIENPTkZJR19TQ1NJX1NQSV9BVFRSUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19TQ1NJX0ZDX0FUVFJTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NDU0lfSVNDU0lfQVRUUlMgaXMgbm90IHNldAotCi0jCi0jIFNDU0kgbG93LWxldmVsIGRyaXZlcnMKLSMKLSMgQ09ORklHX1NDU0lfU0FUQSBpcyBub3Qgc2V0Ci0jIENPTkZJR19TQ1NJX0RFQlVHIGlzIG5vdCBzZXQKLQotIwotIyBNdWx0aS1kZXZpY2Ugc3VwcG9ydCAoUkFJRCBhbmQgTFZNKQotIwotQ09ORklHX01EPXkKLUNPTkZJR19CTEtfREVWX01EPW0KLUNPTkZJR19NRF9MSU5FQVI9bQotQ09ORklHX01EX1JBSUQwPW0KLUNPTkZJR19NRF9SQUlEMT1tCi0jIENPTkZJR19NRF9SQUlEMTAgaXMgbm90IHNldAotQ09ORklHX01EX1JBSUQ1PW0KLUNPTkZJR19NRF9SQUlENj1tCi1DT05GSUdfTURfTVVMVElQQVRIPW0KLSMgQ09ORklHX01EX0ZBVUxUWSBpcyBub3Qgc2V0Ci1DT05GSUdfQkxLX0RFVl9ETT1tCi1DT05GSUdfRE1fQ1JZUFQ9bQotQ09ORklHX0RNX1NOQVBTSE9UPW0KLUNPTkZJR19ETV9NSVJST1I9bQotQ09ORklHX0RNX1pFUk89bQotQ09ORklHX0RNX01VTFRJUEFUSD1tCi1DT05GSUdfRE1fTVVMVElQQVRIX0VNQz1tCi0KLSMKLSMgRnVzaW9uIE1QVCBkZXZpY2Ugc3VwcG9ydAotIwotCi0jCi0jIElFRUUgMTM5NCAoRmlyZVdpcmUpIHN1cHBvcnQKLSMKLQotIwotIyBJMk8gZGV2aWNlIHN1cHBvcnQKLSMKLQotIwotIyBOZXR3b3JraW5nIHN1cHBvcnQKKyMgTmV0d29ya2luZwogIwogQ09ORklHX05FVD15CiAKQEAgLTIzMCwxMCArMTY5LDE3IEBACiBDT05GSUdfUEFDS0VUPXkKICMgQ09ORklHX1BBQ0tFVF9NTUFQIGlzIG5vdCBzZXQKIENPTkZJR19VTklYPXkKK0NPTkZJR19YRlJNPXkKKyMgQ09ORklHX1hGUk1fVVNFUiBpcyBub3Qgc2V0CisjIENPTkZJR19YRlJNX1NVQl9QT0xJQ1kgaXMgbm90IHNldAorQ09ORklHX1hGUk1fTUlHUkFURT15CisjIENPTkZJR19YRlJNX1NUQVRJU1RJQ1MgaXMgbm90IHNldAogQ09ORklHX05FVF9LRVk9eQorQ09ORklHX05FVF9LRVlfTUlHUkFURT15CiBDT05GSUdfSU5FVD15CiAjIENPTkZJR19JUF9NVUxUSUNBU1QgaXMgbm90IHNldAogIyBDT05GSUdfSVBfQURWQU5DRURfUk9VVEVSIGlzIG5vdCBzZXQKK0NPTkZJR19JUF9GSUJfSEFTSD15CiBDT05GSUdfSVBfUE5QPXkKIENPTkZJR19JUF9QTlBfREhDUD15CiBDT05GSUdfSVBfUE5QX0JPT1RQPXkKQEAgLTI0NSwxNDUgKzE5MSwxOTkgQEAKIENPTkZJR19JTkVUX0FIPW0KIENPTkZJR19JTkVUX0VTUD1tCiBDT05GSUdfSU5FVF9JUENPTVA9bQorQ09ORklHX0lORVRfWEZSTV9UVU5ORUw9bQogQ09ORklHX0lORVRfVFVOTkVMPW0KLUNPTkZJR19JUF9UQ1BESUFHPW0KLUNPTkZJR19JUF9UQ1BESUFHX0lQVjY9eQotCi0jCi0jIElQOiBWaXJ0dWFsIFNlcnZlciBDb25maWd1cmF0aW9uCi0jCitDT05GSUdfSU5FVF9YRlJNX01PREVfVFJBTlNQT1JUPW0KK0NPTkZJR19JTkVUX1hGUk1fTU9ERV9UVU5ORUw9bQorQ09ORklHX0lORVRfWEZSTV9NT0RFX0JFRVQ9bQorQ09ORklHX0lORVRfTFJPPW0KK0NPTkZJR19JTkVUX0RJQUc9bQorQ09ORklHX0lORVRfVENQX0RJQUc9bQorIyBDT05GSUdfVENQX0NPTkdfQURWQU5DRUQgaXMgbm90IHNldAorQ09ORklHX1RDUF9DT05HX0NVQklDPXkKK0NPTkZJR19ERUZBVUxUX1RDUF9DT05HPSJjdWJpYyIKKyMgQ09ORklHX1RDUF9NRDVTSUcgaXMgbm90IHNldAogIyBDT05GSUdfSVBfVlMgaXMgbm90IHNldAogQ09ORklHX0lQVjY9bQogQ09ORklHX0lQVjZfUFJJVkFDWT15CitDT05GSUdfSVBWNl9ST1VURVJfUFJFRj15CitDT05GSUdfSVBWNl9ST1VURV9JTkZPPXkKKyMgQ09ORklHX0lQVjZfT1BUSU1JU1RJQ19EQUQgaXMgbm90IHNldAogQ09ORklHX0lORVQ2X0FIPW0KIENPTkZJR19JTkVUNl9FU1A9bQogQ09ORklHX0lORVQ2X0lQQ09NUD1tCisjIENPTkZJR19JUFY2X01JUDYgaXMgbm90IHNldAorQ09ORklHX0lORVQ2X1hGUk1fVFVOTkVMPW0KIENPTkZJR19JTkVUNl9UVU5ORUw9bQorQ09ORklHX0lORVQ2X1hGUk1fTU9ERV9UUkFOU1BPUlQ9bQorQ09ORklHX0lORVQ2X1hGUk1fTU9ERV9UVU5ORUw9bQorQ09ORklHX0lORVQ2X1hGUk1fTU9ERV9CRUVUPW0KK0NPTkZJR19JTkVUNl9YRlJNX01PREVfUk9VVEVPUFRJTUlaQVRJT049bQorQ09ORklHX0lQVjZfU0lUPW0KIENPTkZJR19JUFY2X1RVTk5FTD1tCisjIENPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFUyBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRXT1JLX1NFQ01BUksgaXMgbm90IHNldAogQ09ORklHX05FVEZJTFRFUj15CiAjIENPTkZJR19ORVRGSUxURVJfREVCVUcgaXMgbm90IHNldAorQ09ORklHX05FVEZJTFRFUl9BRFZBTkNFRD15CisKKyMKKyMgQ29yZSBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvbgorIworQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LPW0KK0NPTkZJR19ORVRGSUxURVJfTkVUTElOS19RVUVVRT1tCitDT05GSUdfTkVURklMVEVSX05FVExJTktfTE9HPW0KK0NPTkZJR19ORl9DT05OVFJBQ0s9bQorQ09ORklHX05GX0NUX0FDQ1Q9eQorQ09ORklHX05GX0NPTk5UUkFDS19NQVJLPXkKKyMgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFMgaXMgbm90IHNldAorQ09ORklHX05GX0NUX1BST1RPX0dSRT1tCitDT05GSUdfTkZfQ1RfUFJPVE9fU0NUUD1tCitDT05GSUdfTkZfQ1RfUFJPVE9fVURQTElURT1tCitDT05GSUdfTkZfQ09OTlRSQUNLX0FNQU5EQT1tCitDT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tCitDT05GSUdfTkZfQ09OTlRSQUNLX0gzMjM9bQorQ09ORklHX05GX0NPTk5UUkFDS19JUkM9bQorQ09ORklHX05GX0NPTk5UUkFDS19ORVRCSU9TX05TPW0KK0NPTkZJR19ORl9DT05OVFJBQ0tfUFBUUD1tCitDT05GSUdfTkZfQ09OTlRSQUNLX1NBTkU9bQorQ09ORklHX05GX0NPTk5UUkFDS19TSVA9bQorQ09ORklHX05GX0NPTk5UUkFDS19URlRQPW0KKyMgQ09ORklHX05GX0NUX05FVExJTksgaXMgbm90IHNldAorQ09ORklHX05FVEZJTFRFUl9YVEFCTEVTPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX0NMQVNTSUZZPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX0NPTk5NQVJLPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX0RTQ1A9bQorQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfTUFSSz1tCitDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9ORlFVRVVFPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX05GTE9HPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX05PVFJBQ0s9bQorQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfUkFURUVTVD1tCitDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9UUkFDRT1tCitDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9UQ1BNU1M9bQorQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfVENQT1BUU1RSSVA9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9DT01NRU5UPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkJZVEVTPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkxJTUlUPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfQ09OTk1BUks9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9DT05OVFJBQ0s9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9EQ0NQPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfRFNDUD1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0VTUD1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0hFTFBFUj1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0lQUkFOR0U9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9MRU5HVEg9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9MSU1JVD1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX01BQz1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX01BUks9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9PV05FUj1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1BPTElDWT1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX01VTFRJUE9SVD1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1BLVFRZUEU9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9RVU9UQT1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1JBVEVFU1Q9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9SRUFMTT1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1NDVFA9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9TVEFURT1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1NUQVRJU1RJQz1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1NUUklORz1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1RDUE1TUz1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1RJTUU9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9VMzI9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9IQVNITElNSVQ9bQogCiAjCiAjIElQOiBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvbgogIwotQ09ORklHX0lQX05GX0NPTk5UUkFDSz1tCi0jIENPTkZJR19JUF9ORl9DVF9BQ0NUIGlzIG5vdCBzZXQKLUNPTkZJR19JUF9ORl9DT05OVFJBQ0tfTUFSSz15Ci0jIENPTkZJR19JUF9ORl9DVF9QUk9UT19TQ1RQIGlzIG5vdCBzZXQKLUNPTkZJR19JUF9ORl9GVFA9bQotQ09ORklHX0lQX05GX0lSQz1tCi1DT05GSUdfSVBfTkZfVEZUUD1tCi1DT05GSUdfSVBfTkZfQU1BTkRBPW0KK0NPTkZJR19ORl9DT05OVFJBQ0tfSVBWND1tCitDT05GSUdfTkZfQ09OTlRSQUNLX1BST0NfQ09NUEFUPXkKIENPTkZJR19JUF9ORl9RVUVVRT1tCiBDT05GSUdfSVBfTkZfSVBUQUJMRVM9bQotQ09ORklHX0lQX05GX01BVENIX0xJTUlUPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9JUFJBTkdFPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9NQUM9bQotQ09ORklHX0lQX05GX01BVENIX1BLVFRZUEU9bQotQ09ORklHX0lQX05GX01BVENIX01BUks9bQotQ09ORklHX0lQX05GX01BVENIX01VTFRJUE9SVD1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfVE9TPW0KIENPTkZJR19JUF9ORl9NQVRDSF9SRUNFTlQ9bQogQ09ORklHX0lQX05GX01BVENIX0VDTj1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfRFNDUD1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfQUhfRVNQPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9MRU5HVEg9bQorQ09ORklHX0lQX05GX01BVENIX0FIPW0KIENPTkZJR19JUF9ORl9NQVRDSF9UVEw9bQotQ09ORklHX0lQX05GX01BVENIX1RDUE1TUz1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfSEVMUEVSPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9TVEFURT1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfQ09OTlRSQUNLPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9PV05FUj1tCiBDT05GSUdfSVBfTkZfTUFUQ0hfQUREUlRZUEU9bQotQ09ORklHX0lQX05GX01BVENIX1JFQUxNPW0KLSMgQ09ORklHX0lQX05GX01BVENIX1NDVFAgaXMgbm90IHNldAotIyBDT05GSUdfSVBfTkZfTUFUQ0hfQ09NTUVOVCBpcyBub3Qgc2V0Ci1DT05GSUdfSVBfTkZfTUFUQ0hfQ09OTk1BUks9bQotQ09ORklHX0lQX05GX01BVENIX0hBU0hMSU1JVD1tCiBDT05GSUdfSVBfTkZfRklMVEVSPW0KIENPTkZJR19JUF9ORl9UQVJHRVRfUkVKRUNUPW0KIENPTkZJR19JUF9ORl9UQVJHRVRfTE9HPW0KIENPTkZJR19JUF9ORl9UQVJHRVRfVUxPRz1tCi1DT05GSUdfSVBfTkZfVEFSR0VUX1RDUE1TUz1tCi1DT05GSUdfSVBfTkZfTkFUPW0KLUNPTkZJR19JUF9ORl9OQVRfTkVFREVEPXkKK0NPTkZJR19ORl9OQVQ9bQorQ09ORklHX05GX05BVF9ORUVERUQ9eQogQ09ORklHX0lQX05GX1RBUkdFVF9NQVNRVUVSQURFPW0KIENPTkZJR19JUF9ORl9UQVJHRVRfUkVESVJFQ1Q9bQogQ09ORklHX0lQX05GX1RBUkdFVF9ORVRNQVA9bQotQ09ORklHX0lQX05GX1RBUkdFVF9TQU1FPW0KLUNPTkZJR19JUF9ORl9OQVRfU05NUF9CQVNJQz1tCi1DT05GSUdfSVBfTkZfTkFUX0lSQz1tCi1DT05GSUdfSVBfTkZfTkFUX0ZUUD1tCi1DT05GSUdfSVBfTkZfTkFUX1RGVFA9bQotQ09ORklHX0lQX05GX05BVF9BTUFOREE9bQorQ09ORklHX05GX05BVF9TTk1QX0JBU0lDPW0KK0NPTkZJR19ORl9OQVRfUFJPVE9fR1JFPW0KK0NPTkZJR19ORl9OQVRfRlRQPW0KK0NPTkZJR19ORl9OQVRfSVJDPW0KK0NPTkZJR19ORl9OQVRfVEZUUD1tCitDT05GSUdfTkZfTkFUX0FNQU5EQT1tCitDT05GSUdfTkZfTkFUX1BQVFA9bQorQ09ORklHX05GX05BVF9IMzIzPW0KK0NPTkZJR19ORl9OQVRfU0lQPW0KIENPTkZJR19JUF9ORl9NQU5HTEU9bQotQ09ORklHX0lQX05GX1RBUkdFVF9UT1M9bQogQ09ORklHX0lQX05GX1RBUkdFVF9FQ049bQotQ09ORklHX0lQX05GX1RBUkdFVF9EU0NQPW0KLUNPTkZJR19JUF9ORl9UQVJHRVRfTUFSSz1tCi1DT05GSUdfSVBfTkZfVEFSR0VUX0NMQVNTSUZZPW0KLUNPTkZJR19JUF9ORl9UQVJHRVRfQ09OTk1BUks9bQotIyBDT05GSUdfSVBfTkZfVEFSR0VUX0NMVVNURVJJUCBpcyBub3Qgc2V0CitDT05GSUdfSVBfTkZfVEFSR0VUX1RUTD1tCitDT05GSUdfSVBfTkZfVEFSR0VUX0NMVVNURVJJUD1tCiBDT05GSUdfSVBfTkZfUkFXPW0KLUNPTkZJR19JUF9ORl9UQVJHRVRfTk9UUkFDSz1tCiBDT05GSUdfSVBfTkZfQVJQVEFCTEVTPW0KIENPTkZJR19JUF9ORl9BUlBGSUxURVI9bQogQ09ORklHX0lQX05GX0FSUF9NQU5HTEU9bQogCiAjCi0jIElQdjY6IE5ldGZpbHRlciBDb25maWd1cmF0aW9uIChFWFBFUklNRU5UQUwpCisjIElQdjY6IE5ldGZpbHRlciBDb25maWd1cmF0aW9uCiAjCitDT05GSUdfTkZfQ09OTlRSQUNLX0lQVjY9bQogQ09ORklHX0lQNl9ORl9RVUVVRT1tCiBDT05GSUdfSVA2X05GX0lQVEFCTEVTPW0KLUNPTkZJR19JUDZfTkZfTUFUQ0hfTElNSVQ9bQotQ09ORklHX0lQNl9ORl9NQVRDSF9NQUM9bQogQ09ORklHX0lQNl9ORl9NQVRDSF9SVD1tCiBDT05GSUdfSVA2X05GX01BVENIX09QVFM9bQogQ09ORklHX0lQNl9ORl9NQVRDSF9GUkFHPW0KIENPTkZJR19JUDZfTkZfTUFUQ0hfSEw9bQotQ09ORklHX0lQNl9ORl9NQVRDSF9NVUxUSVBPUlQ9bQotQ09ORklHX0lQNl9ORl9NQVRDSF9PV05FUj1tCi1DT05GSUdfSVA2X05GX01BVENIX01BUks9bQogQ09ORklHX0lQNl9ORl9NQVRDSF9JUFY2SEVBREVSPW0KLUNPTkZJR19JUDZfTkZfTUFUQ0hfQUhFU1A9bQotQ09ORklHX0lQNl9ORl9NQVRDSF9MRU5HVEg9bQorQ09ORklHX0lQNl9ORl9NQVRDSF9BSD1tCitDT05GSUdfSVA2X05GX01BVENIX01IPW0KIENPTkZJR19JUDZfTkZfTUFUQ0hfRVVJNjQ9bQogQ09ORklHX0lQNl9ORl9GSUxURVI9bQogQ09ORklHX0lQNl9ORl9UQVJHRVRfTE9HPW0KK0NPTkZJR19JUDZfTkZfVEFSR0VUX1JFSkVDVD1tCiBDT05GSUdfSVA2X05GX01BTkdMRT1tCi1DT05GSUdfSVA2X05GX1RBUkdFVF9NQVJLPW0KK0NPTkZJR19JUDZfTkZfVEFSR0VUX0hMPW0KIENPTkZJR19JUDZfTkZfUkFXPW0KLUNPTkZJR19YRlJNPXkKLUNPTkZJR19YRlJNX1VTRVI9bQorQ09ORklHX0lQX0RDQ1A9bQorQ09ORklHX0lORVRfRENDUF9ESUFHPW0KK0NPTkZJR19JUF9EQ0NQX0FDS1ZFQz15CiAKICMKLSMgU0NUUCBDb25maWd1cmF0aW9uIChFWFBFUklNRU5UQUwpCisjIERDQ1AgQ0NJRHMgQ29uZmlndXJhdGlvbiAoRVhQRVJJTUVOVEFMKQogIworQ09ORklHX0lQX0RDQ1BfQ0NJRDI9bQorIyBDT05GSUdfSVBfRENDUF9DQ0lEMl9ERUJVRyBpcyBub3Qgc2V0CitDT05GSUdfSVBfRENDUF9DQ0lEMz1tCisjIENPTkZJR19JUF9EQ0NQX0NDSUQzX0RFQlVHIGlzIG5vdCBzZXQKK0NPTkZJR19JUF9EQ0NQX0NDSUQzX1JUTz0xMDAKK0NPTkZJR19JUF9EQ0NQX1RGUkNfTElCPW0KIENPTkZJR19JUF9TQ1RQPW0KICMgQ09ORklHX1NDVFBfREJHX01TRyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1RQX0RCR19PQkpDTlQgaXMgbm90IHNldAogIyBDT05GSUdfU0NUUF9ITUFDX05PTkUgaXMgbm90IHNldAogIyBDT05GSUdfU0NUUF9ITUFDX1NIQTEgaXMgbm90IHNldAogQ09ORklHX1NDVFBfSE1BQ19NRDU9eQorIyBDT05GSUdfVElQQyBpcyBub3Qgc2V0CiAjIENPTkZJR19BVE0gaXMgbm90IHNldAogIyBDT05GSUdfQlJJREdFIGlzIG5vdCBzZXQKICMgQ09ORklHX1ZMQU5fODAyMVEgaXMgbm90IHNldAogIyBDT05GSUdfREVDTkVUIGlzIG5vdCBzZXQKIENPTkZJR19MTEM9bQogIyBDT05GSUdfTExDMiBpcyBub3Qgc2V0Ci1DT05GSUdfSVBYPW0KLSMgQ09ORklHX0lQWF9JTlRFUk4gaXMgbm90IHNldAorIyBDT05GSUdfSVBYIGlzIG5vdCBzZXQKIENPTkZJR19BVEFMSz1tCiAjIENPTkZJR19ERVZfQVBQTEVUQUxLIGlzIG5vdCBzZXQKICMgQ09ORklHX1gyNSBpcyBub3Qgc2V0CiAjIENPTkZJR19MQVBCIGlzIG5vdCBzZXQKLSMgQ09ORklHX05FVF9ESVZFUlQgaXMgbm90IHNldAogIyBDT05GSUdfRUNPTkVUIGlzIG5vdCBzZXQKICMgQ09ORklHX1dBTl9ST1VURVIgaXMgbm90IHNldAotCi0jCi0jIFFvUyBhbmQvb3IgZmFpciBxdWV1ZWluZwotIwogIyBDT05GSUdfTkVUX1NDSEVEIGlzIG5vdCBzZXQKIENPTkZJR19ORVRfQ0xTX1JPVVRFPXkKIApAQCAtMzkxLDQ2ICszOTEsMTU0IEBACiAjIE5ldHdvcmsgdGVzdGluZwogIwogIyBDT05GSUdfTkVUX1BLVEdFTiBpcyBub3Qgc2V0Ci1DT05GSUdfTkVUUE9MTD15Ci0jIENPTkZJR19ORVRQT0xMX1JYIGlzIG5vdCBzZXQKLSMgQ09ORklHX05FVFBPTExfVFJBUCBpcyBub3Qgc2V0Ci1DT05GSUdfTkVUX1BPTExfQ09OVFJPTExFUj15CiAjIENPTkZJR19IQU1SQURJTyBpcyBub3Qgc2V0CisjIENPTkZJR19DQU4gaXMgbm90IHNldAogIyBDT05GSUdfSVJEQSBpcyBub3Qgc2V0CiAjIENPTkZJR19CVCBpcyBub3Qgc2V0CisjIENPTkZJR19BRl9SWFJQQyBpcyBub3Qgc2V0CisKKyMKKyMgV2lyZWxlc3MKKyMKKyMgQ09ORklHX0NGRzgwMjExIGlzIG5vdCBzZXQKK0NPTkZJR19XSVJFTEVTU19FWFQ9eQorIyBDT05GSUdfTUFDODAyMTEgaXMgbm90IHNldAorQ09ORklHX0lFRUU4MDIxMT1tCisjIENPTkZJR19JRUVFODAyMTFfREVCVUcgaXMgbm90IHNldAorQ09ORklHX0lFRUU4MDIxMV9DUllQVF9XRVA9bQorQ09ORklHX0lFRUU4MDIxMV9DUllQVF9DQ01QPW0KK0NPTkZJR19JRUVFODAyMTFfQ1JZUFRfVEtJUD1tCitDT05GSUdfSUVFRTgwMjExX1NPRlRNQUM9bQorIyBDT05GSUdfSUVFRTgwMjExX1NPRlRNQUNfREVCVUcgaXMgbm90IHNldAorIyBDT05GSUdfUkZLSUxMIGlzIG5vdCBzZXQKKyMgQ09ORklHX05FVF85UCBpcyBub3Qgc2V0CisKKyMKKyMgRGV2aWNlIERyaXZlcnMKKyMKKworIworIyBHZW5lcmljIERyaXZlciBPcHRpb25zCisjCitDT05GSUdfVUVWRU5UX0hFTFBFUl9QQVRIPSIvc2Jpbi9ob3RwbHVnIgorQ09ORklHX1NUQU5EQUxPTkU9eQorQ09ORklHX1BSRVZFTlRfRklSTVdBUkVfQlVJTEQ9eQorQ09ORklHX0ZXX0xPQURFUj1tCisjIENPTkZJR19TWVNfSFlQRVJWSVNPUiBpcyBub3Qgc2V0CitDT05GSUdfQ09OTkVDVE9SPW0KKyMgQ09ORklHX01URCBpcyBub3Qgc2V0CisjIENPTkZJR19QQVJQT1JUIGlzIG5vdCBzZXQKK0NPTkZJR19CTEtfREVWPXkKKyMgQ09ORklHX0JMS19ERVZfQ09XX0NPTU1PTiBpcyBub3Qgc2V0CitDT05GSUdfQkxLX0RFVl9MT09QPXkKK0NPTkZJR19CTEtfREVWX0NSWVBUT0xPT1A9bQorQ09ORklHX0JMS19ERVZfTkJEPW0KK0NPTkZJR19CTEtfREVWX1JBTT15CitDT05GSUdfQkxLX0RFVl9SQU1fQ09VTlQ9MTYKK0NPTkZJR19CTEtfREVWX1JBTV9TSVpFPTQwOTYKKyMgQ09ORklHX0JMS19ERVZfWElQIGlzIG5vdCBzZXQKK0NPTkZJR19DRFJPTV9QS1RDRFZEPW0KK0NPTkZJR19DRFJPTV9QS1RDRFZEX0JVRkZFUlM9OAorIyBDT05GSUdfQ0RST01fUEtUQ0RWRF9XQ0FDSEUgaXMgbm90IHNldAorQ09ORklHX0FUQV9PVkVSX0VUSD1tCitDT05GSUdfTUlTQ19ERVZJQ0VTPXkKKyMgQ09ORklHX0VFUFJPTV85M0NYNiBpcyBub3Qgc2V0CisjIENPTkZJR19FTkNMT1NVUkVfU0VSVklDRVMgaXMgbm90IHNldAorQ09ORklHX0hBVkVfSURFPXkKKyMgQ09ORklHX0lERSBpcyBub3Qgc2V0CisKKyMKKyMgU0NTSSBkZXZpY2Ugc3VwcG9ydAorIworQ09ORklHX1JBSURfQVRUUlM9bQorQ09ORklHX1NDU0k9eQorQ09ORklHX1NDU0lfRE1BPXkKK0NPTkZJR19TQ1NJX1RHVD1tCisjIENPTkZJR19TQ1NJX05FVExJTksgaXMgbm90IHNldAorQ09ORklHX1NDU0lfUFJPQ19GUz15CisKKyMKKyMgU0NTSSBzdXBwb3J0IHR5cGUgKGRpc2ssIHRhcGUsIENELVJPTSkKKyMKK0NPTkZJR19CTEtfREVWX1NEPXkKK0NPTkZJR19DSFJfREVWX1NUPW0KK0NPTkZJR19DSFJfREVWX09TU1Q9bQorQ09ORklHX0JMS19ERVZfU1I9eQorQ09ORklHX0JMS19ERVZfU1JfVkVORE9SPXkKK0NPTkZJR19DSFJfREVWX1NHPW0KKyMgQ09ORklHX0NIUl9ERVZfU0NIIGlzIG5vdCBzZXQKKworIworIyBTb21lIFNDU0kgZGV2aWNlcyAoZS5nLiBDRCBqdWtlYm94KSBzdXBwb3J0IG11bHRpcGxlIExVTnMKKyMKKyMgQ09ORklHX1NDU0lfTVVMVElfTFVOIGlzIG5vdCBzZXQKK0NPTkZJR19TQ1NJX0NPTlNUQU5UUz15CisjIENPTkZJR19TQ1NJX0xPR0dJTkcgaXMgbm90IHNldAorIyBDT05GSUdfU0NTSV9TQ0FOX0FTWU5DIGlzIG5vdCBzZXQKK0NPTkZJR19TQ1NJX1dBSVRfU0NBTj1tCisKKyMKKyMgU0NTSSBUcmFuc3BvcnRzCisjCisjIENPTkZJR19TQ1NJX1NQSV9BVFRSUyBpcyBub3Qgc2V0CisjIENPTkZJR19TQ1NJX0ZDX0FUVFJTIGlzIG5vdCBzZXQKK0NPTkZJR19TQ1NJX0lTQ1NJX0FUVFJTPW0KK0NPTkZJR19TQ1NJX1NBU19BVFRSUz1tCitDT05GSUdfU0NTSV9TQVNfTElCU0FTPW0KK0NPTkZJR19TQ1NJX1NBU19IT1NUX1NNUD15CisjIENPTkZJR19TQ1NJX1NBU19MSUJTQVNfREVCVUcgaXMgbm90IHNldAorQ09ORklHX1NDU0lfU1JQX0FUVFJTPW0KK0NPTkZJR19TQ1NJX1NSUF9UR1RfQVRUUlM9eQorQ09ORklHX1NDU0lfTE9XTEVWRUw9eQorQ09ORklHX0lTQ1NJX1RDUD1tCisjIENPTkZJR19TQ1NJX0RFQlVHIGlzIG5vdCBzZXQKK0NPTkZJR19NRD15CitDT05GSUdfQkxLX0RFVl9NRD1tCitDT05GSUdfTURfTElORUFSPW0KK0NPTkZJR19NRF9SQUlEMD1tCitDT05GSUdfTURfUkFJRDE9bQorIyBDT05GSUdfTURfUkFJRDEwIGlzIG5vdCBzZXQKK0NPTkZJR19NRF9SQUlENDU2PW0KK0NPTkZJR19NRF9SQUlENV9SRVNIQVBFPXkKK0NPTkZJR19NRF9NVUxUSVBBVEg9bQorIyBDT05GSUdfTURfRkFVTFRZIGlzIG5vdCBzZXQKK0NPTkZJR19CTEtfREVWX0RNPW0KKyMgQ09ORklHX0RNX0RFQlVHIGlzIG5vdCBzZXQKK0NPTkZJR19ETV9DUllQVD1tCitDT05GSUdfRE1fU05BUFNIT1Q9bQorQ09ORklHX0RNX01JUlJPUj1tCitDT05GSUdfRE1fWkVSTz1tCitDT05GSUdfRE1fTVVMVElQQVRIPW0KK0NPTkZJR19ETV9NVUxUSVBBVEhfRU1DPW0KK0NPTkZJR19ETV9NVUxUSVBBVEhfUkRBQz1tCitDT05GSUdfRE1fTVVMVElQQVRIX0hQPW0KKyMgQ09ORklHX0RNX0RFTEFZIGlzIG5vdCBzZXQKK0NPTkZJR19ETV9VRVZFTlQ9eQogQ09ORklHX05FVERFVklDRVM9eQorIyBDT05GSUdfTkVUREVWSUNFU19NVUxUSVFVRVVFIGlzIG5vdCBzZXQKIENPTkZJR19EVU1NWT1tCiAjIENPTkZJR19CT05ESU5HIGlzIG5vdCBzZXQKK0NPTkZJR19NQUNWTEFOPW0KIENPTkZJR19FUVVBTElaRVI9bQogIyBDT05GSUdfVFVOIGlzIG5vdCBzZXQKLQotIwotIyBFdGhlcm5ldCAoMTAgb3IgMTAwTWJpdCkKLSMKK0NPTkZJR19WRVRIPW0KKyMgQ09ORklHX1BIWUxJQiBpcyBub3Qgc2V0CiBDT05GSUdfTkVUX0VUSEVSTkVUPXkKLUNPTkZJR19NSUk9bQorIyBDT05GSUdfTUlJIGlzIG5vdCBzZXQKIENPTkZJR19BUE9MTE9fRUxQTFVTPXkKKyMgQ09ORklHX0lCTV9ORVdfRU1BQ19aTUlJIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lCTV9ORVdfRU1BQ19SR01JSSBpcyBub3Qgc2V0CisjIENPTkZJR19JQk1fTkVXX0VNQUNfVEFIIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lCTV9ORVdfRU1BQ19FTUFDNCBpcyBub3Qgc2V0CisjIENPTkZJR19CNDQgaXMgbm90IHNldAorIyBDT05GSUdfTkVUREVWXzEwMDAgaXMgbm90IHNldAorIyBDT05GSUdfTkVUREVWXzEwMDAwIGlzIG5vdCBzZXQKIAogIwotIyBFdGhlcm5ldCAoMTAwMCBNYml0KQorIyBXaXJlbGVzcyBMQU4KICMKLQotIwotIyBFdGhlcm5ldCAoMTAwMDAgTWJpdCkKLSMKLQotIwotIyBUb2tlbiBSaW5nIGRldmljZXMKLSMKLQotIwotIyBXaXJlbGVzcyBMQU4gKG5vbi1oYW1yYWRpbykKLSMKLSMgQ09ORklHX05FVF9SQURJTyBpcyBub3Qgc2V0Ci0KLSMKLSMgV2FuIGludGVyZmFjZXMKLSMKKyMgQ09ORklHX1dMQU5fUFJFODAyMTEgaXMgbm90IHNldAorIyBDT05GSUdfV0xBTl84MDIxMSBpcyBub3Qgc2V0CiAjIENPTkZJR19XQU4gaXMgbm90IHNldAogQ09ORklHX1BQUD1tCiAjIENPTkZJR19QUFBfTVVMVElMSU5LIGlzIG5vdCBzZXQKQEAgLTQzOSwyOCArNTQ3LDI4IEBACiBDT05GSUdfUFBQX1NZTkNfVFRZPW0KIENPTkZJR19QUFBfREVGTEFURT1tCiBDT05GSUdfUFBQX0JTRENPTVA9bQorQ09ORklHX1BQUF9NUFBFPW0KIENPTkZJR19QUFBPRT1tCitDT05GSUdfUFBQT0wyVFA9bQogQ09ORklHX1NMSVA9bQogQ09ORklHX1NMSVBfQ09NUFJFU1NFRD15CitDT05GSUdfU0xIQz1tCiBDT05GSUdfU0xJUF9TTUFSVD15CiBDT05GSUdfU0xJUF9NT0RFX1NMSVA2PXkKLUNPTkZJR19TSEFQRVI9bQogQ09ORklHX05FVENPTlNPTEU9bQotCi0jCi0jIElTRE4gc3Vic3lzdGVtCi0jCitDT05GSUdfTkVUQ09OU09MRV9EWU5BTUlDPXkKK0NPTkZJR19ORVRQT0xMPXkKKyMgQ09ORklHX05FVFBPTExfVFJBUCBpcyBub3Qgc2V0CitDT05GSUdfTkVUX1BPTExfQ09OVFJPTExFUj15CiAjIENPTkZJR19JU0ROIGlzIG5vdCBzZXQKLQotIwotIyBUZWxlcGhvbnkgU3VwcG9ydAotIwogIyBDT05GSUdfUEhPTkUgaXMgbm90IHNldAogCiAjCiAjIElucHV0IGRldmljZSBzdXBwb3J0CiAjCiBDT05GSUdfSU5QVVQ9eQorQ09ORklHX0lOUFVUX0ZGX01FTUxFU1M9bQorIyBDT05GSUdfSU5QVVRfUE9MTERFViBpcyBub3Qgc2V0CiAKICMKICMgVXNlcmxhbmQgaW50ZXJmYWNlcwpAQCAtNDcwLDcgKzU3OCw2IEBACiBDT05GSUdfSU5QVVRfTU9VU0VERVZfU0NSRUVOX1g9MTAyNAogQ09ORklHX0lOUFVUX01PVVNFREVWX1NDUkVFTl9ZPTc2OAogIyBDT05GSUdfSU5QVVRfSk9ZREVWIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lOUFVUX1RTREVWIGlzIG5vdCBzZXQKICMgQ09ORklHX0lOUFVUX0VWREVWIGlzIG5vdCBzZXQKICMgQ09ORklHX0lOUFVUX0VWQlVHIGlzIG5vdCBzZXQKIApAQCAtNDgzLDExICs1OTAsMTkgQEAKICMgQ09ORklHX0tFWUJPQVJEX0xLS0JEIGlzIG5vdCBzZXQKICMgQ09ORklHX0tFWUJPQVJEX1hUS0JEIGlzIG5vdCBzZXQKICMgQ09ORklHX0tFWUJPQVJEX05FV1RPTiBpcyBub3Qgc2V0CisjIENPTkZJR19LRVlCT0FSRF9TVE9XQVdBWSBpcyBub3Qgc2V0CiBDT05GSUdfSU5QVVRfTU9VU0U9eQogQ09ORklHX01PVVNFX1BTMj1tCitDT05GSUdfTU9VU0VfUFMyX0FMUFM9eQorQ09ORklHX01PVVNFX1BTMl9MT0dJUFMyUFA9eQorQ09ORklHX01PVVNFX1BTMl9TWU5BUFRJQ1M9eQorQ09ORklHX01PVVNFX1BTMl9MSUZFQk9PSz15CitDT05GSUdfTU9VU0VfUFMyX1RSQUNLUE9JTlQ9eQorIyBDT05GSUdfTU9VU0VfUFMyX1RPVUNIS0lUIGlzIG5vdCBzZXQKIENPTkZJR19NT1VTRV9TRVJJQUw9bQogIyBDT05GSUdfTU9VU0VfVlNYWFhBQSBpcyBub3Qgc2V0CiAjIENPTkZJR19JTlBVVF9KT1lTVElDSyBpcyBub3Qgc2V0CisjIENPTkZJR19JTlBVVF9UQUJMRVQgaXMgbm90IHNldAogIyBDT05GSUdfSU5QVVRfVE9VQ0hTQ1JFRU4gaXMgbm90IHNldAogIyBDT05GSUdfSU5QVVRfTUlTQyBpcyBub3Qgc2V0CiAKQEAgLTQ5NSw3ICs2MTAsNyBAQAogIyBIYXJkd2FyZSBJL08gcG9ydHMKICMKIENPTkZJR19TRVJJTz1tCi1DT05GSUdfU0VSSU9fU0VSUE9SVD1tCisjIENPTkZJR19TRVJJT19TRVJQT1JUIGlzIG5vdCBzZXQKIENPTkZJR19TRVJJT19MSUJQUzI9bQogIyBDT05GSUdfU0VSSU9fUkFXIGlzIG5vdCBzZXQKICMgQ09ORklHX0dBTUVQT1JUIGlzIG5vdCBzZXQKQEAgLTUwNiw2ICs2MjEsNyBAQAogQ09ORklHX1ZUPXkKIENPTkZJR19WVF9DT05TT0xFPXkKIENPTkZJR19IV19DT05TT0xFPXkKK0NPTkZJR19WVF9IV19DT05TT0xFX0JJTkRJTkc9eQogIyBDT05GSUdfU0VSSUFMX05PTlNUQU5EQVJEIGlzIG5vdCBzZXQKIAogIwpAQCAtNTE5LDkwICs2MzUsMTE0IEBACiBDT05GSUdfVU5JWDk4X1BUWVM9eQogQ09ORklHX0xFR0FDWV9QVFlTPXkKIENPTkZJR19MRUdBQ1lfUFRZX0NPVU5UPTI1NgotCi0jCi0jIElQTUkKLSMKICMgQ09ORklHX0lQTUlfSEFORExFUiBpcyBub3Qgc2V0Ci0KLSMKLSMgV2F0Y2hkb2cgQ2FyZHMKLSMKLSMgQ09ORklHX1dBVENIRE9HIGlzIG5vdCBzZXQKLUNPTkZJR19HRU5fUlRDPXkKKyMgQ09ORklHX0hXX1JBTkRPTSBpcyBub3Qgc2V0CitDT05GSUdfR0VOX1JUQz1tCiBDT05GSUdfR0VOX1JUQ19YPXkKLSMgQ09ORklHX0RUTEsgaXMgbm90IHNldAogIyBDT05GSUdfUjM5NjQgaXMgbm90IHNldAotCi0jCi0jIEZ0YXBlLCB0aGUgZmxvcHB5IHRhcGUgZGV2aWNlIGRyaXZlcgotIwotIyBDT05GSUdfRFJNIGlzIG5vdCBzZXQKICMgQ09ORklHX1JBV19EUklWRVIgaXMgbm90IHNldAotCi0jCi0jIFRQTSBkZXZpY2VzCi0jCi0KLSMKLSMgSTJDIHN1cHBvcnQKLSMKKyMgQ09ORklHX1RDR19UUE0gaXMgbm90IHNldAogIyBDT05GSUdfSTJDIGlzIG5vdCBzZXQKIAogIwotIyBEYWxsYXMncyAxLXdpcmUgYnVzCisjIFNQSSBzdXBwb3J0CiAjCisjIENPTkZJR19TUEkgaXMgbm90IHNldAorIyBDT05GSUdfU1BJX01BU1RFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19XMSBpcyBub3Qgc2V0CisjIENPTkZJR19QT1dFUl9TVVBQTFkgaXMgbm90IHNldAorIyBDT05GSUdfSFdNT04gaXMgbm90IHNldAorIyBDT05GSUdfVEhFUk1BTCBpcyBub3Qgc2V0CisjIENPTkZJR19XQVRDSERPRyBpcyBub3Qgc2V0CiAKICMKLSMgTWlzYyBkZXZpY2VzCisjIFNvbmljcyBTaWxpY29uIEJhY2twbGFuZQogIworQ09ORklHX1NTQl9QT1NTSUJMRT15CisjIENPTkZJR19TU0IgaXMgbm90IHNldAorCisjCisjIE11bHRpZnVuY3Rpb24gZGV2aWNlIGRyaXZlcnMKKyMKKyMgQ09ORklHX01GRF9TTTUwMSBpcyBub3Qgc2V0CiAKICMKICMgTXVsdGltZWRpYSBkZXZpY2VzCiAjCiAjIENPTkZJR19WSURFT19ERVYgaXMgbm90IHNldAotCi0jCi0jIERpZ2l0YWwgVmlkZW8gQnJvYWRjYXN0aW5nIERldmljZXMKLSMKLSMgQ09ORklHX0RWQiBpcyBub3Qgc2V0CisjIENPTkZJR19EVkJfQ09SRSBpcyBub3Qgc2V0CisjIENPTkZJR19EQUIgaXMgbm90IHNldAogCiAjCiAjIEdyYXBoaWNzIHN1cHBvcnQKICMKLSMgQ09ORklHX0ZCIGlzIG5vdCBzZXQKKyMgQ09ORklHX1ZHQVNUQVRFIGlzIG5vdCBzZXQKKyMgQ09ORklHX1ZJREVPX09VVFBVVF9DT05UUk9MIGlzIG5vdCBzZXQKK0NPTkZJR19GQj15CisjIENPTkZJR19GSVJNV0FSRV9FRElEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZCX0REQyBpcyBub3Qgc2V0CitDT05GSUdfRkJfQ0ZCX0ZJTExSRUNUPXkKKyMgQ09ORklHX0ZCX0NGQl9DT1BZQVJFQSBpcyBub3Qgc2V0CitDT05GSUdfRkJfQ0ZCX0lNQUdFQkxJVD15CisjIENPTkZJR19GQl9DRkJfUkVWX1BJWEVMU19JTl9CWVRFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZCX1NZU19GSUxMUkVDVCBpcyBub3Qgc2V0CisjIENPTkZJR19GQl9TWVNfQ09QWUFSRUEgaXMgbm90IHNldAorIyBDT05GSUdfRkJfU1lTX0lNQUdFQkxJVCBpcyBub3Qgc2V0CisjIENPTkZJR19GQl9TWVNfRk9QUyBpcyBub3Qgc2V0CitDT05GSUdfRkJfREVGRVJSRURfSU89eQorIyBDT05GSUdfRkJfU1ZHQUxJQiBpcyBub3Qgc2V0CisjIENPTkZJR19GQl9NQUNNT0RFUyBpcyBub3Qgc2V0CisjIENPTkZJR19GQl9CQUNLTElHSFQgaXMgbm90IHNldAorIyBDT05GSUdfRkJfTU9ERV9IRUxQRVJTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZCX1RJTEVCTElUVElORyBpcyBub3Qgc2V0CisKKyMKKyMgRnJhbWUgYnVmZmVyIGhhcmR3YXJlIGRyaXZlcnMKKyMKK0NPTkZJR19GQl9BUE9MTE89eQorIyBDT05GSUdfRkJfVVZFU0EgaXMgbm90IHNldAorIyBDT05GSUdfRkJfUzFEMTNYWFggaXMgbm90IHNldAorIyBDT05GSUdfRkJfVklSVFVBTCBpcyBub3Qgc2V0CisjIENPTkZJR19CQUNLTElHSFRfTENEX1NVUFBPUlQgaXMgbm90IHNldAorCisjCisjIERpc3BsYXkgZGV2aWNlIHN1cHBvcnQKKyMKKyMgQ09ORklHX0RJU1BMQVlfU1VQUE9SVCBpcyBub3Qgc2V0CiAKICMKICMgQ29uc29sZSBkaXNwbGF5IGRyaXZlciBzdXBwb3J0CiAjCiBDT05GSUdfRFVNTVlfQ09OU09MRT15CitDT05GSUdfRlJBTUVCVUZGRVJfQ09OU09MRT15CisjIENPTkZJR19GUkFNRUJVRkZFUl9DT05TT0xFX0RFVEVDVF9QUklNQVJZIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZSQU1FQlVGRkVSX0NPTlNPTEVfUk9UQVRJT04gaXMgbm90IHNldAorIyBDT05GSUdfRk9OVFMgaXMgbm90IHNldAorQ09ORklHX0ZPTlRfOHg4PXkKK0NPTkZJR19GT05UXzh4MTY9eQorQ09ORklHX0xPR089eQorQ09ORklHX0xPR09fTElOVVhfTU9OTz15CisjIENPTkZJR19MT0dPX0xJTlVYX1ZHQTE2IGlzIG5vdCBzZXQKKyMgQ09ORklHX0xPR09fTElOVVhfQ0xVVDIyNCBpcyBub3Qgc2V0CiAKICMKICMgU291bmQKICMKICMgQ09ORklHX1NPVU5EIGlzIG5vdCBzZXQKLQotIwotIyBVU0Igc3VwcG9ydAotIwotIyBDT05GSUdfVVNCX0FSQ0hfSEFTX0hDRCBpcyBub3Qgc2V0Ci0jIENPTkZJR19VU0JfQVJDSF9IQVNfT0hDSSBpcyBub3Qgc2V0Ci0KLSMKLSMgVVNCIEdhZGdldCBTdXBwb3J0Ci0jCi0jIENPTkZJR19VU0JfR0FER0VUIGlzIG5vdCBzZXQKLQotIwotIyBNTUMvU0QgQ2FyZCBzdXBwb3J0Ci0jCitDT05GSUdfSElEX1NVUFBPUlQ9eQorQ09ORklHX0hJRD1tCisjIENPTkZJR19ISURfREVCVUcgaXMgbm90IHNldAorQ09ORklHX0hJRFJBVz15CisjIENPTkZJR19VU0JfU1VQUE9SVCBpcyBub3Qgc2V0CiAjIENPTkZJR19NTUMgaXMgbm90IHNldAorIyBDT05GSUdfTUVNU1RJQ0sgaXMgbm90IHNldAorIyBDT05GSUdfTkVXX0xFRFMgaXMgbm90IHNldAorIyBDT05GSUdfUlRDX0NMQVNTIGlzIG5vdCBzZXQKIAogIwotIyBJbmZpbmlCYW5kIHN1cHBvcnQKKyMgVXNlcnNwYWNlIEkvTwogIwotIyBDT05GSUdfSU5GSU5JQkFORCBpcyBub3Qgc2V0CisjIENPTkZJR19VSU8gaXMgbm90IHNldAogCiAjCiAjIENoYXJhY3RlciBkZXZpY2VzCkBAIC02MTUsMTAgKzc1NSwxMSBAQAogIwogQ09ORklHX0VYVDJfRlM9eQogIyBDT05GSUdfRVhUMl9GU19YQVRUUiBpcyBub3Qgc2V0CisjIENPTkZJR19FWFQyX0ZTX1hJUCBpcyBub3Qgc2V0CiBDT05GSUdfRVhUM19GUz15CiAjIENPTkZJR19FWFQzX0ZTX1hBVFRSIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VYVDRERVZfRlMgaXMgbm90IHNldAogQ09ORklHX0pCRD15Ci0jIENPTkZJR19KQkRfREVCVUcgaXMgbm90IHNldAogQ09ORklHX1JFSVNFUkZTX0ZTPW0KICMgQ09ORklHX1JFSVNFUkZTX0NIRUNLIGlzIG5vdCBzZXQKICMgQ09ORklHX1JFSVNFUkZTX1BST0NfSU5GTyBpcyBub3Qgc2V0CkBAIC02MjksMjUgKzc3MCwyOSBAQAogIyBDT05GSUdfSkZTX0RFQlVHIGlzIG5vdCBzZXQKICMgQ09ORklHX0pGU19TVEFUSVNUSUNTIGlzIG5vdCBzZXQKIENPTkZJR19GU19QT1NJWF9BQ0w9eQotCi0jCi0jIFhGUyBzdXBwb3J0Ci0jCiBDT05GSUdfWEZTX0ZTPW0KLUNPTkZJR19YRlNfRVhQT1JUPXkKLSMgQ09ORklHX1hGU19SVCBpcyBub3Qgc2V0CiAjIENPTkZJR19YRlNfUVVPVEEgaXMgbm90IHNldAogIyBDT05GSUdfWEZTX1NFQ1VSSVRZIGlzIG5vdCBzZXQKICMgQ09ORklHX1hGU19QT1NJWF9BQ0wgaXMgbm90IHNldAotQ09ORklHX01JTklYX0ZTPXkKLSMgQ09ORklHX1JPTUZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1hGU19SVCBpcyBub3Qgc2V0CitDT05GSUdfR0ZTMl9GUz1tCitDT05GSUdfR0ZTMl9GU19MT0NLSU5HX05PTE9DSz1tCitDT05GSUdfR0ZTMl9GU19MT0NLSU5HX0RMTT1tCitDT05GSUdfT0NGUzJfRlM9bQorIyBDT05GSUdfT0NGUzJfREVCVUdfTUFTS0xPRyBpcyBub3Qgc2V0CisjIENPTkZJR19PQ0ZTMl9ERUJVR19GUyBpcyBub3Qgc2V0CitDT05GSUdfRE5PVElGWT15CitDT05GSUdfSU5PVElGWT15CitDT05GSUdfSU5PVElGWV9VU0VSPXkKIENPTkZJR19RVU9UQT15CitDT05GSUdfUVVPVEFfTkVUTElOS19JTlRFUkZBQ0U9eQorIyBDT05GSUdfUFJJTlRfUVVPVEFfV0FSTklORyBpcyBub3Qgc2V0CiAjIENPTkZJR19RRk1UX1YxIGlzIG5vdCBzZXQKICMgQ09ORklHX1FGTVRfVjIgaXMgbm90IHNldAogQ09ORklHX1FVT1RBQ1RMPXkKLUNPTkZJR19ETk9USUZZPXkKIENPTkZJR19BVVRPRlNfRlM9bQogQ09ORklHX0FVVE9GUzRfRlM9bQorQ09ORklHX0ZVU0VfRlM9bQogCiAjCiAjIENELVJPTS9EVkQgRmlsZXN5c3RlbXMKQEAgLTY1NSw3ICs4MDAsNiBAQAogQ09ORklHX0lTTzk2NjBfRlM9eQogQ09ORklHX0pPTElFVD15CiBDT05GSUdfWklTT0ZTPXkKLUNPTkZJR19aSVNPRlNfRlM9eQogQ09ORklHX1VERl9GUz1tCiBDT05GSUdfVURGX05MUz15CiAKQEAgLTY3NCwxMyArODE4LDEyIEBACiAjCiBDT05GSUdfUFJPQ19GUz15CiBDT05GSUdfUFJPQ19LQ09SRT15CitDT05GSUdfUFJPQ19TWVNDVEw9eQogQ09ORklHX1NZU0ZTPXkKLSMgQ09ORklHX0RFVkZTX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0RFVlBUU19GU19YQVRUUiBpcyBub3Qgc2V0CiBDT05GSUdfVE1QRlM9eQotIyBDT05GSUdfVE1QRlNfWEFUVFIgaXMgbm90IHNldAorIyBDT05GSUdfVE1QRlNfUE9TSVhfQUNMIGlzIG5vdCBzZXQKICMgQ09ORklHX0hVR0VUTEJfUEFHRSBpcyBub3Qgc2V0Ci1DT05GSUdfUkFNRlM9eQorQ09ORklHX0NPTkZJR0ZTX0ZTPW0KIAogIwogIyBNaXNjZWxsYW5lb3VzIGZpbGVzeXN0ZW1zCkBAIC02OTQsNDQgKzgzNyw0MCBAQAogIyBDT05GSUdfRUZTX0ZTIGlzIG5vdCBzZXQKIENPTkZJR19DUkFNRlM9bQogIyBDT05GSUdfVlhGU19GUyBpcyBub3Qgc2V0CitDT05GSUdfTUlOSVhfRlM9eQogQ09ORklHX0hQRlNfRlM9bQogIyBDT05GSUdfUU5YNEZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JPTUZTX0ZTIGlzIG5vdCBzZXQKIENPTkZJR19TWVNWX0ZTPW0KIENPTkZJR19VRlNfRlM9bQogIyBDT05GSUdfVUZTX0ZTX1dSSVRFIGlzIG5vdCBzZXQKLQotIwotIyBOZXR3b3JrIEZpbGUgU3lzdGVtcwotIworIyBDT05GSUdfVUZTX0RFQlVHIGlzIG5vdCBzZXQKK0NPTkZJR19ORVRXT1JLX0ZJTEVTWVNURU1TPXkKIENPTkZJR19ORlNfRlM9eQogQ09ORklHX05GU19WMz15CisjIENPTkZJR19ORlNfVjNfQUNMIGlzIG5vdCBzZXQKIENPTkZJR19ORlNfVjQ9eQogIyBDT05GSUdfTkZTX0RJUkVDVElPIGlzIG5vdCBzZXQKIENPTkZJR19ORlNEPW0KIENPTkZJR19ORlNEX1YzPXkKLUNPTkZJR19ORlNEX1Y0PXkKKyMgQ09ORklHX05GU0RfVjNfQUNMIGlzIG5vdCBzZXQKKyMgQ09ORklHX05GU0RfVjQgaXMgbm90IHNldAogQ09ORklHX05GU0RfVENQPXkKIENPTkZJR19ST09UX05GUz15CiBDT05GSUdfTE9DS0Q9eQogQ09ORklHX0xPQ0tEX1Y0PXkKIENPTkZJR19FWFBPUlRGUz1tCitDT05GSUdfTkZTX0NPTU1PTj15CiBDT05GSUdfU1VOUlBDPXkKIENPTkZJR19TVU5SUENfR1NTPXkKK0NPTkZJR19TVU5SUENfQklORDM0PXkKIENPTkZJR19SUENTRUNfR1NTX0tSQjU9eQogIyBDT05GSUdfUlBDU0VDX0dTU19TUEtNMyBpcyBub3Qgc2V0CiBDT05GSUdfU01CX0ZTPW0KIENPTkZJR19TTUJfTkxTX0RFRkFVTFQ9eQogQ09ORklHX1NNQl9OTFNfUkVNT1RFPSJjcDQzNyIKICMgQ09ORklHX0NJRlMgaXMgbm90IHNldAotQ09ORklHX05DUF9GUz1tCi0jIENPTkZJR19OQ1BGU19QQUNLRVRfU0lHTklORyBpcyBub3Qgc2V0Ci0jIENPTkZJR19OQ1BGU19JT0NUTF9MT0NLSU5HIGlzIG5vdCBzZXQKLSMgQ09ORklHX05DUEZTX1NUUk9ORyBpcyBub3Qgc2V0Ci1DT05GSUdfTkNQRlNfTkZTX05TPXkKLUNPTkZJR19OQ1BGU19PUzJfTlM9eQotIyBDT05GSUdfTkNQRlNfU01BTExET1MgaXMgbm90IHNldAotQ09ORklHX05DUEZTX05MUz15Ci0jIENPTkZJR19OQ1BGU19FWFRSQVMgaXMgbm90IHNldAorIyBDT05GSUdfTkNQX0ZTIGlzIG5vdCBzZXQKIENPTkZJR19DT0RBX0ZTPW0KICMgQ09ORklHX0NPREFfRlNfT0xEX0FQSSBpcyBub3Qgc2V0CiAjIENPTkZJR19BRlNfRlMgaXMgbm90IHNldApAQCAtNzQxLDEwICs4ODAsNiBAQAogIwogIyBDT05GSUdfUEFSVElUSU9OX0FEVkFOQ0VEIGlzIG5vdCBzZXQKIENPTkZJR19NU0RPU19QQVJUSVRJT049eQotCi0jCi0jIE5hdGl2ZSBMYW5ndWFnZSBTdXBwb3J0Ci0jCiBDT05GSUdfTkxTPXkKIENPTkZJR19OTFNfREVGQVVMVD0iaXNvODg1OS0xIgogQ09ORklHX05MU19DT0RFUEFHRV80Mzc9eQpAQCAtNzg1LDM1ICs5MjAsNDIgQEAKIENPTkZJR19OTFNfS09JOF9SPW0KIENPTkZJR19OTFNfS09JOF9VPW0KIENPTkZJR19OTFNfVVRGOD1tCitDT05GSUdfRExNPW0KKyMgQ09ORklHX0RMTV9ERUJVRyBpcyBub3Qgc2V0CiAKICMKICMgS2VybmVsIGhhY2tpbmcKICMKICMgQ09ORklHX1BSSU5US19USU1FIGlzIG5vdCBzZXQKLUNPTkZJR19ERUJVR19LRVJORUw9eQorQ09ORklHX0VOQUJMRV9XQVJOX0RFUFJFQ0FURUQ9eQorQ09ORklHX0VOQUJMRV9NVVNUX0NIRUNLPXkKIENPTkZJR19NQUdJQ19TWVNSUT15Ci1DT05GSUdfTE9HX0JVRl9TSElGVD0xNgotIyBDT05GSUdfU0NIRURTVEFUUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ERUJVR19TTEFCIGlzIG5vdCBzZXQKLSMgQ09ORklHX0RFQlVHX1NQSU5MT0NLIGlzIG5vdCBzZXQKLSMgQ09ORklHX0RFQlVHX1NQSU5MT0NLX1NMRUVQIGlzIG5vdCBzZXQKLSMgQ09ORklHX0RFQlVHX0tPQkpFQ1QgaXMgbm90IHNldAotQ09ORklHX0RFQlVHX0JVR1ZFUkJPU0U9eQotIyBDT05GSUdfREVCVUdfSU5GTyBpcyBub3Qgc2V0CisjIENPTkZJR19VTlVTRURfU1lNQk9MUyBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19GUkFNRV9QT0lOVEVSIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hFQURFUlNfQ0hFQ0sgaXMgbm90IHNldAorIyBDT05GSUdfREVCVUdfS0VSTkVMIGlzIG5vdCBzZXQKK0NPTkZJR19ERUJVR19CVUdWRVJCT1NFPXkKKyMgQ09ORklHX1NBTVBMRVMgaXMgbm90IHNldAogCiAjCiAjIFNlY3VyaXR5IG9wdGlvbnMKICMKICMgQ09ORklHX0tFWVMgaXMgbm90IHNldAogIyBDT05GSUdfU0VDVVJJVFkgaXMgbm90IHNldAotCi0jCi0jIENyeXB0b2dyYXBoaWMgb3B0aW9ucwotIworIyBDT05GSUdfU0VDVVJJVFlfRklMRV9DQVBBQklMSVRJRVMgaXMgbm90IHNldAorQ09ORklHX1hPUl9CTE9DS1M9bQorQ09ORklHX0FTWU5DX0NPUkU9bQorQ09ORklHX0FTWU5DX01FTUNQWT1tCitDT05GSUdfQVNZTkNfWE9SPW0KIENPTkZJR19DUllQVE89eQorQ09ORklHX0NSWVBUT19BTEdBUEk9eQorQ09ORklHX0NSWVBUT19BRUFEPW0KK0NPTkZJR19DUllQVE9fQkxLQ0lQSEVSPXkKK0NPTkZJR19DUllQVE9fU0VRSVY9bQorQ09ORklHX0NSWVBUT19IQVNIPXkKK0NPTkZJR19DUllQVE9fTUFOQUdFUj15CiBDT05GSUdfQ1JZUFRPX0hNQUM9eQorQ09ORklHX0NSWVBUT19YQ0JDPW0KIENPTkZJR19DUllQVE9fTlVMTD1tCiBDT05GSUdfQ1JZUFRPX01END1tCiBDT05GSUdfQ1JZUFRPX01ENT15CkBAIC04MjIsOSArOTY0LDIxIEBACiBDT05GSUdfQ1JZUFRPX1NIQTUxMj1tCiBDT05GSUdfQ1JZUFRPX1dQNTEyPW0KIENPTkZJR19DUllQVE9fVEdSMTkyPW0KK0NPTkZJR19DUllQVE9fR0YxMjhNVUw9bQorQ09ORklHX0NSWVBUT19FQ0I9bQorQ09ORklHX0NSWVBUT19DQkM9eQorQ09ORklHX0NSWVBUT19QQ0JDPW0KK0NPTkZJR19DUllQVE9fTFJXPW0KK0NPTkZJR19DUllQVE9fWFRTPW0KK0NPTkZJR19DUllQVE9fQ1RSPW0KK0NPTkZJR19DUllQVE9fR0NNPW0KK0NPTkZJR19DUllQVE9fQ0NNPW0KK0NPTkZJR19DUllQVE9fQ1JZUFREPW0KIENPTkZJR19DUllQVE9fREVTPXkKK0NPTkZJR19DUllQVE9fRkNSWVBUPW0KIENPTkZJR19DUllQVE9fQkxPV0ZJU0g9bQogQ09ORklHX0NSWVBUT19UV09GSVNIPW0KK0NPTkZJR19DUllQVE9fVFdPRklTSF9DT01NT049bQogQ09ORklHX0NSWVBUT19TRVJQRU5UPW0KIENPTkZJR19DUllQVE9fQUVTPW0KIENPTkZJR19DUllQVE9fQ0FTVDU9bQpAQCAtODMzLDIwICs5ODcsMzUgQEAKIENPTkZJR19DUllQVE9fQVJDND1tCiBDT05GSUdfQ1JZUFRPX0tIQVpBRD1tCiBDT05GSUdfQ1JZUFRPX0FOVUJJUz1tCitDT05GSUdfQ1JZUFRPX1NFRUQ9bQorQ09ORklHX0NSWVBUT19TQUxTQTIwPW0KIENPTkZJR19DUllQVE9fREVGTEFURT1tCiBDT05GSUdfQ1JZUFRPX01JQ0hBRUxfTUlDPW0KIENPTkZJR19DUllQVE9fQ1JDMzJDPW0KK0NPTkZJR19DUllQVE9fQ0FNRUxMSUE9bQogQ09ORklHX0NSWVBUT19URVNUPW0KLQotIwotIyBIYXJkd2FyZSBjcnlwdG8gZGV2aWNlcwotIworQ09ORklHX0NSWVBUT19BVVRIRU5DPW0KK0NPTkZJR19DUllQVE9fTFpPPW0KKyMgQ09ORklHX0NSWVBUT19IVyBpcyBub3Qgc2V0CiAKICMKICMgTGlicmFyeSByb3V0aW5lcwogIworQ09ORklHX0JJVFJFVkVSU0U9eQogQ09ORklHX0NSQ19DQ0lUVD1tCitDT05GSUdfQ1JDMTY9bQorIyBDT05GSUdfQ1JDX0lUVV9UIGlzIG5vdCBzZXQKIENPTkZJR19DUkMzMj15CisjIENPTkZJR19DUkM3IGlzIG5vdCBzZXQKIENPTkZJR19MSUJDUkMzMkM9bQogQ09ORklHX1pMSUJfSU5GTEFURT15CiBDT05GSUdfWkxJQl9ERUZMQVRFPW0KK0NPTkZJR19MWk9fQ09NUFJFU1M9bQorQ09ORklHX0xaT19ERUNPTVBSRVNTPW0KK0NPTkZJR19URVhUU0VBUkNIPXkKK0NPTkZJR19URVhUU0VBUkNIX0tNUD1tCitDT05GSUdfVEVYVFNFQVJDSF9CTT1tCitDT05GSUdfVEVYVFNFQVJDSF9GU009bQorQ09ORklHX1BMSVNUPXkKK0NPTkZJR19IQVNfSU9NRU09eQorQ09ORklHX0hBU19ETUE9eQpkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL2NvbmZpZ3MvYXRhcmlfZGVmY29uZmlnIGIvYXJjaC9tNjhrL2NvbmZpZ3MvYXRhcmlfZGVmY29uZmlnCmluZGV4IDY0MzNkYTIuLmJhN2Y5NzEgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9jb25maWdzL2F0YXJpX2RlZmNvbmZpZworKysgYi9hcmNoL202OGsvY29uZmlncy9hdGFyaV9kZWZjb25maWcKQEAgLTEsNjMgKzEsMTExIEBACiAjCiAjIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIG1ha2UgY29uZmlnOiBkb24ndCBlZGl0Ci0jIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMTItcmM2LW02OGsKLSMgVHVlIEp1biAgNyAyMDozNDozMiAyMDA1CisjIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMjUtcmM4CisjIFdlZCBBcHIgIDIgMjA6NDY6MDkgMjAwOAogIwogQ09ORklHX002OEs9eQogQ09ORklHX01NVT15Ci1DT05GSUdfVUlEMTY9eQogQ09ORklHX1JXU0VNX0dFTkVSSUNfU1BJTkxPQ0s9eQorIyBDT05GSUdfQVJDSF9IQVNfSUxPRzJfVTMyIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfSEFTX0lMT0cyX1U2NCBpcyBub3Qgc2V0CitDT05GSUdfR0VORVJJQ19IV0VJR0hUPXkKIENPTkZJR19HRU5FUklDX0NBTElCUkFURV9ERUxBWT15Ci0KLSMKLSMgQ29kZSBtYXR1cml0eSBsZXZlbCBvcHRpb25zCi0jCi1DT05GSUdfRVhQRVJJTUVOVEFMPXkKLUNPTkZJR19DTEVBTl9DT01QSUxFPXkKLUNPTkZJR19CUk9LRU5fT05fU01QPXkKLUNPTkZJR19JTklUX0VOVl9BUkdfTElNSVQ9MzIKK0NPTkZJR19USU1FX0xPV19SRVM9eQorQ09ORklHX0dFTkVSSUNfSU9NQVA9eQorQ09ORklHX05PX0lPUE9SVD15CisjIENPTkZJR19OT19ETUEgaXMgbm90IHNldAorQ09ORklHX0FSQ0hfU1VQUE9SVFNfQU9VVD15CitDT05GSUdfSFo9MTAwCitDT05GSUdfREVGQ09ORklHX0xJU1Q9Ii9saWIvbW9kdWxlcy8kVU5BTUVfUkVMRUFTRS8uY29uZmlnIgogCiAjCiAjIEdlbmVyYWwgc2V0dXAKICMKK0NPTkZJR19FWFBFUklNRU5UQUw9eQorQ09ORklHX0JST0tFTl9PTl9TTVA9eQorQ09ORklHX0lOSVRfRU5WX0FSR19MSU1JVD0zMgogQ09ORklHX0xPQ0FMVkVSU0lPTj0iLWF0YXJpIgorQ09ORklHX0xPQ0FMVkVSU0lPTl9BVVRPPXkKIENPTkZJR19TV0FQPXkKIENPTkZJR19TWVNWSVBDPXkKK0NPTkZJR19TWVNWSVBDX1NZU0NUTD15CiBDT05GSUdfUE9TSVhfTVFVRVVFPXkKIENPTkZJR19CU0RfUFJPQ0VTU19BQ0NUPXkKICMgQ09ORklHX0JTRF9QUk9DRVNTX0FDQ1RfVjMgaXMgbm90IHNldAotQ09ORklHX1NZU0NUTD15Ci1DT05GSUdfQVVESVQ9eQotQ09ORklHX0hPVFBMVUc9eQotQ09ORklHX0tPQkpFQ1RfVUVWRU5UPXkKKyMgQ09ORklHX1RBU0tTVEFUUyBpcyBub3Qgc2V0CisjIENPTkZJR19BVURJVCBpcyBub3Qgc2V0CiAjIENPTkZJR19JS0NPTkZJRyBpcyBub3Qgc2V0CitDT05GSUdfTE9HX0JVRl9TSElGVD0xNAorIyBDT05GSUdfQ0dST1VQUyBpcyBub3Qgc2V0CisjIENPTkZJR19HUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CisjIENPTkZJR19TWVNGU19ERVBSRUNBVEVEX1YyIGlzIG5vdCBzZXQKK0NPTkZJR19SRUxBWT15CitDT05GSUdfTkFNRVNQQUNFUz15CisjIENPTkZJR19VVFNfTlMgaXMgbm90IHNldAorIyBDT05GSUdfSVBDX05TIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTRVJfTlMgaXMgbm90IHNldAorIyBDT05GSUdfUElEX05TIGlzIG5vdCBzZXQKK0NPTkZJR19CTEtfREVWX0lOSVRSRD15CitDT05GSUdfSU5JVFJBTUZTX1NPVVJDRT0iIgorIyBDT05GSUdfQ0NfT1BUSU1JWkVfRk9SX1NJWkUgaXMgbm90IHNldAorQ09ORklHX1NZU0NUTD15CiAjIENPTkZJR19FTUJFRERFRCBpcyBub3Qgc2V0CitDT05GSUdfVUlEMTY9eQorQ09ORklHX1NZU0NUTF9TWVNDQUxMPXkKIENPTkZJR19LQUxMU1lNUz15Ci0jIENPTkZJR19LQUxMU1lNU19BTEwgaXMgbm90IHNldAogIyBDT05GSUdfS0FMTFNZTVNfRVhUUkFfUEFTUyBpcyBub3Qgc2V0CitDT05GSUdfSE9UUExVRz15CiBDT05GSUdfUFJJTlRLPXkKIENPTkZJR19CVUc9eQorQ09ORklHX0VMRl9DT1JFPXkKKyMgQ09ORklHX0NPTVBBVF9CUksgaXMgbm90IHNldAogQ09ORklHX0JBU0VfRlVMTD15CiBDT05GSUdfRlVURVg9eQorQ09ORklHX0FOT05fSU5PREVTPXkKIENPTkZJR19FUE9MTD15CitDT05GSUdfU0lHTkFMRkQ9eQorQ09ORklHX1RJTUVSRkQ9eQorQ09ORklHX0VWRU5URkQ9eQogQ09ORklHX1NITUVNPXkKLUNPTkZJR19DQ19BTElHTl9GVU5DVElPTlM9MAotQ09ORklHX0NDX0FMSUdOX0xBQkVMUz0wCi1DT05GSUdfQ0NfQUxJR05fTE9PUFM9MAotQ09ORklHX0NDX0FMSUdOX0pVTVBTPTAKK0NPTkZJR19WTV9FVkVOVF9DT1VOVEVSUz15CitDT05GSUdfU0xBQj15CisjIENPTkZJR19TTFVCIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NMT0IgaXMgbm90IHNldAorIyBDT05GSUdfUFJPRklMSU5HIGlzIG5vdCBzZXQKKyMgQ09ORklHX01BUktFUlMgaXMgbm90IHNldAorIyBDT05GSUdfSEFWRV9PUFJPRklMRSBpcyBub3Qgc2V0CisjIENPTkZJR19IQVZFX0tQUk9CRVMgaXMgbm90IHNldAorIyBDT05GSUdfSEFWRV9LUkVUUFJPQkVTIGlzIG5vdCBzZXQKK0NPTkZJR19QUk9DX1BBR0VfTU9OSVRPUj15CitDT05GSUdfU0xBQklORk89eQorQ09ORklHX1JUX01VVEVYRVM9eQogIyBDT05GSUdfVElOWV9TSE1FTSBpcyBub3Qgc2V0CiBDT05GSUdfQkFTRV9TTUFMTD0wCi0KLSMKLSMgTG9hZGFibGUgbW9kdWxlIHN1cHBvcnQKLSMKIENPTkZJR19NT0RVTEVTPXkKIENPTkZJR19NT0RVTEVfVU5MT0FEPXkKICMgQ09ORklHX01PRFVMRV9GT1JDRV9VTkxPQUQgaXMgbm90IHNldAotQ09ORklHX09CU09MRVRFX01PRFBBUk09eQogIyBDT05GSUdfTU9EVkVSU0lPTlMgaXMgbm90IHNldAogIyBDT05GSUdfTU9EVUxFX1NSQ1ZFUlNJT05fQUxMIGlzIG5vdCBzZXQKIENPTkZJR19LTU9EPXkKK0NPTkZJR19CTE9DSz15CisjIENPTkZJR19MQkQgaXMgbm90IHNldAorIyBDT05GSUdfQkxLX0RFVl9JT19UUkFDRSBpcyBub3Qgc2V0CisjIENPTkZJR19MU0YgaXMgbm90IHNldAorQ09ORklHX0JMS19ERVZfQlNHPXkKKworIworIyBJTyBTY2hlZHVsZXJzCisjCitDT05GSUdfSU9TQ0hFRF9OT09QPXkKK0NPTkZJR19JT1NDSEVEX0FTPXkKK0NPTkZJR19JT1NDSEVEX0RFQURMSU5FPXkKK0NPTkZJR19JT1NDSEVEX0NGUT15CitDT05GSUdfREVGQVVMVF9BUz15CisjIENPTkZJR19ERUZBVUxUX0RFQURMSU5FIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RFRkFVTFRfQ0ZRIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RFRkFVTFRfTk9PUCBpcyBub3Qgc2V0CitDT05GSUdfREVGQVVMVF9JT1NDSEVEPSJhbnRpY2lwYXRvcnkiCitDT05GSUdfQ0xBU1NJQ19SQ1U9eQogCiAjCiAjIFBsYXRmb3JtIGRlcGVuZGVudCBzZXR1cApAQCAtODAsMTAgKzEyOCwyNCBAQAogQ09ORklHX002ODA0MD15CiBDT05GSUdfTTY4MDYwPXkKIENPTkZJR19NTVVfTU9UT1JPTEE9eQotQ09ORklHX002OEtGUFVfRU1VPXkKLUNPTkZJR19NNjhLRlBVX0VNVV9FWFRSQVBSRUM9eQotIyBDT05GSUdfTTY4S0ZQVV9FTVVfT05MWSBpcyBub3Qgc2V0CisjIENPTkZJR19NNjhLRlBVX0VNVSBpcyBub3Qgc2V0CiAjIENPTkZJR19BRFZBTkNFRCBpcyBub3Qgc2V0CitDT05GSUdfQVJDSF9ESVNDT05USUdNRU1fRU5BQkxFPXkKK0NPTkZJR19OT0RFU19TSElGVD0zCitDT05GSUdfU0VMRUNUX01FTU9SWV9NT0RFTD15CisjIENPTkZJR19GTEFUTUVNX01BTlVBTCBpcyBub3Qgc2V0CitDT05GSUdfRElTQ09OVElHTUVNX01BTlVBTD15CisjIENPTkZJR19TUEFSU0VNRU1fTUFOVUFMIGlzIG5vdCBzZXQKK0NPTkZJR19ESVNDT05USUdNRU09eQorQ09ORklHX0ZMQVRfTk9ERV9NRU1fTUFQPXkKK0NPTkZJR19ORUVEX01VTFRJUExFX05PREVTPXkKKyMgQ09ORklHX1NQQVJTRU1FTV9TVEFUSUMgaXMgbm90IHNldAorIyBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBfRU5BQkxFIGlzIG5vdCBzZXQKK0NPTkZJR19TUExJVF9QVExPQ0tfQ1BVUz00CisjIENPTkZJR19SRVNPVVJDRVNfNjRCSVQgaXMgbm90IHNldAorQ09ORklHX1pPTkVfRE1BX0ZMQUc9MQorQ09ORklHX0JPVU5DRT15CitDT05GSUdfVklSVF9UT19CVVM9eQogCiAjCiAjIEdlbmVyYWwgc2V0dXAKQEAgLTk0LDE2NiArMTU2LDExIEBACiBDT05GSUdfU1RSQU1fUFJPQz15CiBDT05GSUdfSEVBUlRCRUFUPXkKIENPTkZJR19QUk9DX0hBUkRXQVJFPXkKK0NPTkZJR19aT05FX0RNQT15CisjIENPTkZJR19BUkNIX1NVUFBPUlRTX01TSSBpcyBub3Qgc2V0CiAKICMKLSMgRGV2aWNlIERyaXZlcnMKLSMKLQotIwotIyBHZW5lcmljIERyaXZlciBPcHRpb25zCi0jCi1DT05GSUdfU1RBTkRBTE9ORT15Ci1DT05GSUdfUFJFVkVOVF9GSVJNV0FSRV9CVUlMRD15Ci1DT05GSUdfRldfTE9BREVSPW0KLSMgQ09ORklHX0RFQlVHX0RSSVZFUiBpcyBub3Qgc2V0Ci0KLSMKLSMgTWVtb3J5IFRlY2hub2xvZ3kgRGV2aWNlcyAoTVREKQotIwotIyBDT05GSUdfTVREIGlzIG5vdCBzZXQKLQotIwotIyBQYXJhbGxlbCBwb3J0IHN1cHBvcnQKLSMKLUNPTkZJR19QQVJQT1JUPW0KLSMgQ09ORklHX1BBUlBPUlRfUEMgaXMgbm90IHNldAotQ09ORklHX1BBUlBPUlRfTk9UX1BDPXkKLUNPTkZJR19QQVJQT1JUX0FUQVJJPW0KLSMgQ09ORklHX1BBUlBPUlRfR1NDIGlzIG5vdCBzZXQKLUNPTkZJR19QQVJQT1JUXzEyODQ9eQotCi0jCi0jIFBsdWcgYW5kIFBsYXkgc3VwcG9ydAotIwotCi0jCi0jIEJsb2NrIGRldmljZXMKLSMKLUNPTkZJR19BVEFSSV9GTE9QUFk9eQotIyBDT05GSUdfUEFSSURFIGlzIG5vdCBzZXQKLSMgQ09ORklHX0JMS19ERVZfQ09XX0NPTU1PTiBpcyBub3Qgc2V0Ci1DT05GSUdfQkxLX0RFVl9MT09QPXkKLUNPTkZJR19CTEtfREVWX0NSWVBUT0xPT1A9bQotQ09ORklHX0JMS19ERVZfTkJEPW0KLUNPTkZJR19CTEtfREVWX1JBTT15Ci1DT05GSUdfQkxLX0RFVl9SQU1fQ09VTlQ9MTYKLUNPTkZJR19CTEtfREVWX1JBTV9TSVpFPTQwOTYKLUNPTkZJR19CTEtfREVWX0lOSVRSRD15Ci1DT05GSUdfSU5JVFJBTUZTX1NPVVJDRT0iIgotQ09ORklHX0NEUk9NX1BLVENEVkQ9bQotQ09ORklHX0NEUk9NX1BLVENEVkRfQlVGRkVSUz04Ci0jIENPTkZJR19DRFJPTV9QS1RDRFZEX1dDQUNIRSBpcyBub3Qgc2V0Ci0KLSMKLSMgSU8gU2NoZWR1bGVycwotIwotQ09ORklHX0lPU0NIRURfTk9PUD15Ci1DT05GSUdfSU9TQ0hFRF9BUz15Ci1DT05GSUdfSU9TQ0hFRF9ERUFETElORT15Ci1DT05GSUdfSU9TQ0hFRF9DRlE9eQotQ09ORklHX0FUQV9PVkVSX0VUSD1tCi0KLSMKLSMgQVRBL0FUQVBJL01GTS9STEwgc3VwcG9ydAotIwotQ09ORklHX0lERT15Ci1DT05GSUdfQkxLX0RFVl9JREU9eQotCi0jCi0jIFBsZWFzZSBzZWUgRG9jdW1lbnRhdGlvbi9pZGUudHh0IGZvciBoZWxwL2luZm8gb24gSURFIGRyaXZlcwotIwotIyBDT05GSUdfQkxLX0RFVl9JREVfU0FUQSBpcyBub3Qgc2V0Ci1DT05GSUdfQkxLX0RFVl9JREVESVNLPXkKLSMgQ09ORklHX0lERURJU0tfTVVMVElfTU9ERSBpcyBub3Qgc2V0Ci1DT05GSUdfQkxLX0RFVl9JREVDRD15Ci1DT05GSUdfQkxLX0RFVl9JREVUQVBFPW0KLUNPTkZJR19CTEtfREVWX0lERUZMT1BQWT1tCi0jIENPTkZJR19CTEtfREVWX0lERVNDU0kgaXMgbm90IHNldAotIyBDT05GSUdfSURFX1RBU0tfSU9DVEwgaXMgbm90IHNldAotCi0jCi0jIElERSBjaGlwc2V0IHN1cHBvcnQvYnVnZml4ZXMKLSMKLUNPTkZJR19JREVfR0VORVJJQz15Ci0jIENPTkZJR19JREVfQVJNIGlzIG5vdCBzZXQKLUNPTkZJR19CTEtfREVWX0ZBTENPTl9JREU9eQotIyBDT05GSUdfQkxLX0RFVl9JREVETUEgaXMgbm90IHNldAotIyBDT05GSUdfSURFRE1BX0FVVE8gaXMgbm90IHNldAotIyBDT05GSUdfQkxLX0RFVl9IRCBpcyBub3Qgc2V0Ci0KLSMKLSMgU0NTSSBkZXZpY2Ugc3VwcG9ydAotIwotQ09ORklHX1NDU0k9eQotQ09ORklHX1NDU0lfUFJPQ19GUz15Ci0KLSMKLSMgU0NTSSBzdXBwb3J0IHR5cGUgKGRpc2ssIHRhcGUsIENELVJPTSkKLSMKLUNPTkZJR19CTEtfREVWX1NEPXkKLUNPTkZJR19DSFJfREVWX1NUPW0KLSMgQ09ORklHX0NIUl9ERVZfT1NTVCBpcyBub3Qgc2V0Ci1DT05GSUdfQkxLX0RFVl9TUj15Ci1DT05GSUdfQkxLX0RFVl9TUl9WRU5ET1I9eQotQ09ORklHX0NIUl9ERVZfU0c9bQotCi0jCi0jIFNvbWUgU0NTSSBkZXZpY2VzIChlLmcuIENEIGp1a2Vib3gpIHN1cHBvcnQgbXVsdGlwbGUgTFVOcwotIwotIyBDT05GSUdfU0NTSV9NVUxUSV9MVU4gaXMgbm90IHNldAotQ09ORklHX1NDU0lfQ09OU1RBTlRTPXkKLSMgQ09ORklHX1NDU0lfTE9HR0lORyBpcyBub3Qgc2V0Ci0KLSMKLSMgU0NTSSBUcmFuc3BvcnQgQXR0cmlidXRlcwotIwotIyBDT05GSUdfU0NTSV9TUElfQVRUUlMgaXMgbm90IHNldAotIyBDT05GSUdfU0NTSV9GQ19BVFRSUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19TQ1NJX0lTQ1NJX0FUVFJTIGlzIG5vdCBzZXQKLQotIwotIyBTQ1NJIGxvdy1sZXZlbCBkcml2ZXJzCi0jCi0jIENPTkZJR19TQ1NJX1NBVEEgaXMgbm90IHNldAotIyBDT05GSUdfU0NTSV9QUEEgaXMgbm90IHNldAotIyBDT05GSUdfU0NTSV9JTU0gaXMgbm90IHNldAotIyBDT05GSUdfU0NTSV9ERUJVRyBpcyBub3Qgc2V0Ci0KLSMKLSMgTXVsdGktZGV2aWNlIHN1cHBvcnQgKFJBSUQgYW5kIExWTSkKLSMKLUNPTkZJR19NRD15Ci1DT05GSUdfQkxLX0RFVl9NRD1tCi1DT05GSUdfTURfTElORUFSPW0KLUNPTkZJR19NRF9SQUlEMD1tCi1DT05GSUdfTURfUkFJRDE9bQotIyBDT05GSUdfTURfUkFJRDEwIGlzIG5vdCBzZXQKLUNPTkZJR19NRF9SQUlENT1tCi1DT05GSUdfTURfUkFJRDY9bQotQ09ORklHX01EX01VTFRJUEFUSD1tCi0jIENPTkZJR19NRF9GQVVMVFkgaXMgbm90IHNldAotQ09ORklHX0JMS19ERVZfRE09bQotQ09ORklHX0RNX0NSWVBUPW0KLUNPTkZJR19ETV9TTkFQU0hPVD1tCi1DT05GSUdfRE1fTUlSUk9SPW0KLUNPTkZJR19ETV9aRVJPPW0KLUNPTkZJR19ETV9NVUxUSVBBVEg9bQotQ09ORklHX0RNX01VTFRJUEFUSF9FTUM9bQotCi0jCi0jIEZ1c2lvbiBNUFQgZGV2aWNlIHN1cHBvcnQKLSMKLQotIwotIyBJRUVFIDEzOTQgKEZpcmVXaXJlKSBzdXBwb3J0Ci0jCi0KLSMKLSMgSTJPIGRldmljZSBzdXBwb3J0Ci0jCi0KLSMKLSMgTmV0d29ya2luZyBzdXBwb3J0CisjIE5ldHdvcmtpbmcKICMKIENPTkZJR19ORVQ9eQogCkBAIC0yNjMsMTAgKzE3MCwxNyBAQAogQ09ORklHX1BBQ0tFVD15CiAjIENPTkZJR19QQUNLRVRfTU1BUCBpcyBub3Qgc2V0CiBDT05GSUdfVU5JWD15CitDT05GSUdfWEZSTT15CisjIENPTkZJR19YRlJNX1VTRVIgaXMgbm90IHNldAorIyBDT05GSUdfWEZSTV9TVUJfUE9MSUNZIGlzIG5vdCBzZXQKK0NPTkZJR19YRlJNX01JR1JBVEU9eQorIyBDT05GSUdfWEZSTV9TVEFUSVNUSUNTIGlzIG5vdCBzZXQKIENPTkZJR19ORVRfS0VZPXkKK0NPTkZJR19ORVRfS0VZX01JR1JBVEU9eQogQ09ORklHX0lORVQ9eQogIyBDT05GSUdfSVBfTVVMVElDQVNUIGlzIG5vdCBzZXQKICMgQ09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUiBpcyBub3Qgc2V0CitDT05GSUdfSVBfRklCX0hBU0g9eQogIyBDT05GSUdfSVBfUE5QIGlzIG5vdCBzZXQKIENPTkZJR19ORVRfSVBJUD1tCiBDT05GSUdfTkVUX0lQR1JFPW0KQEAgLTI3NSwxNDUgKzE4OSwxOTkgQEAKIENPTkZJR19JTkVUX0FIPW0KIENPTkZJR19JTkVUX0VTUD1tCiBDT05GSUdfSU5FVF9JUENPTVA9bQorQ09ORklHX0lORVRfWEZSTV9UVU5ORUw9bQogQ09ORklHX0lORVRfVFVOTkVMPW0KLUNPTkZJR19JUF9UQ1BESUFHPW0KLUNPTkZJR19JUF9UQ1BESUFHX0lQVjY9eQotCi0jCi0jIElQOiBWaXJ0dWFsIFNlcnZlciBDb25maWd1cmF0aW9uCi0jCitDT05GSUdfSU5FVF9YRlJNX01PREVfVFJBTlNQT1JUPW0KK0NPTkZJR19JTkVUX1hGUk1fTU9ERV9UVU5ORUw9bQorQ09ORklHX0lORVRfWEZSTV9NT0RFX0JFRVQ9bQorQ09ORklHX0lORVRfTFJPPW0KK0NPTkZJR19JTkVUX0RJQUc9bQorQ09ORklHX0lORVRfVENQX0RJQUc9bQorIyBDT05GSUdfVENQX0NPTkdfQURWQU5DRUQgaXMgbm90IHNldAorQ09ORklHX1RDUF9DT05HX0NVQklDPXkKK0NPTkZJR19ERUZBVUxUX1RDUF9DT05HPSJjdWJpYyIKKyMgQ09ORklHX1RDUF9NRDVTSUcgaXMgbm90IHNldAogIyBDT05GSUdfSVBfVlMgaXMgbm90IHNldAogQ09ORklHX0lQVjY9bQogQ09ORklHX0lQVjZfUFJJVkFDWT15CitDT05GSUdfSVBWNl9ST1VURVJfUFJFRj15CitDT05GSUdfSVBWNl9ST1VURV9JTkZPPXkKKyMgQ09ORklHX0lQVjZfT1BUSU1JU1RJQ19EQUQgaXMgbm90IHNldAogQ09ORklHX0lORVQ2X0FIPW0KIENPTkZJR19JTkVUNl9FU1A9bQogQ09ORklHX0lORVQ2X0lQQ09NUD1tCisjIENPTkZJR19JUFY2X01JUDYgaXMgbm90IHNldAorQ09ORklHX0lORVQ2X1hGUk1fVFVOTkVMPW0KIENPTkZJR19JTkVUNl9UVU5ORUw9bQorQ09ORklHX0lORVQ2X1hGUk1fTU9ERV9UUkFOU1BPUlQ9bQorQ09ORklHX0lORVQ2X1hGUk1fTU9ERV9UVU5ORUw9bQorQ09ORklHX0lORVQ2X1hGUk1fTU9ERV9CRUVUPW0KK0NPTkZJR19JTkVUNl9YRlJNX01PREVfUk9VVEVPUFRJTUlaQVRJT049bQorQ09ORklHX0lQVjZfU0lUPW0KIENPTkZJR19JUFY2X1RVTk5FTD1tCisjIENPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFUyBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRXT1JLX1NFQ01BUksgaXMgbm90IHNldAogQ09ORklHX05FVEZJTFRFUj15CiAjIENPTkZJR19ORVRGSUxURVJfREVCVUcgaXMgbm90IHNldAorQ09ORklHX05FVEZJTFRFUl9BRFZBTkNFRD15CisKKyMKKyMgQ29yZSBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvbgorIworQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LPW0KK0NPTkZJR19ORVRGSUxURVJfTkVUTElOS19RVUVVRT1tCitDT05GSUdfTkVURklMVEVSX05FVExJTktfTE9HPW0KK0NPTkZJR19ORl9DT05OVFJBQ0s9bQorQ09ORklHX05GX0NUX0FDQ1Q9eQorQ09ORklHX05GX0NPTk5UUkFDS19NQVJLPXkKKyMgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFMgaXMgbm90IHNldAorQ09ORklHX05GX0NUX1BST1RPX0dSRT1tCitDT05GSUdfTkZfQ1RfUFJPVE9fU0NUUD1tCitDT05GSUdfTkZfQ1RfUFJPVE9fVURQTElURT1tCitDT05GSUdfTkZfQ09OTlRSQUNLX0FNQU5EQT1tCitDT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tCitDT05GSUdfTkZfQ09OTlRSQUNLX0gzMjM9bQorQ09ORklHX05GX0NPTk5UUkFDS19JUkM9bQorQ09ORklHX05GX0NPTk5UUkFDS19ORVRCSU9TX05TPW0KK0NPTkZJR19ORl9DT05OVFJBQ0tfUFBUUD1tCitDT05GSUdfTkZfQ09OTlRSQUNLX1NBTkU9bQorQ09ORklHX05GX0NPTk5UUkFDS19TSVA9bQorQ09ORklHX05GX0NPTk5UUkFDS19URlRQPW0KKyMgQ09ORklHX05GX0NUX05FVExJTksgaXMgbm90IHNldAorQ09ORklHX05FVEZJTFRFUl9YVEFCTEVTPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX0NMQVNTSUZZPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX0NPTk5NQVJLPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX0RTQ1A9bQorQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfTUFSSz1tCitDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9ORlFVRVVFPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX05GTE9HPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX05PVFJBQ0s9bQorQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfUkFURUVTVD1tCitDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9UUkFDRT1tCitDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9UQ1BNU1M9bQorQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfVENQT1BUU1RSSVA9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9DT01NRU5UPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkJZVEVTPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkxJTUlUPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfQ09OTk1BUks9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9DT05OVFJBQ0s9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9EQ0NQPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfRFNDUD1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0VTUD1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0hFTFBFUj1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0lQUkFOR0U9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9MRU5HVEg9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9MSU1JVD1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX01BQz1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX01BUks9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9PV05FUj1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1BPTElDWT1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX01VTFRJUE9SVD1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1BLVFRZUEU9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9RVU9UQT1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1JBVEVFU1Q9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9SRUFMTT1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1NDVFA9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9TVEFURT1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1NUQVRJU1RJQz1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1NUUklORz1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1RDUE1TUz1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1RJTUU9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9VMzI9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9IQVNITElNSVQ9bQogCiAjCiAjIElQOiBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvbgogIwotQ09ORklHX0lQX05GX0NPTk5UUkFDSz1tCi0jIENPTkZJR19JUF9ORl9DVF9BQ0NUIGlzIG5vdCBzZXQKLUNPTkZJR19JUF9ORl9DT05OVFJBQ0tfTUFSSz15Ci0jIENPTkZJR19JUF9ORl9DVF9QUk9UT19TQ1RQIGlzIG5vdCBzZXQKLUNPTkZJR19JUF9ORl9GVFA9bQotQ09ORklHX0lQX05GX0lSQz1tCi1DT05GSUdfSVBfTkZfVEZUUD1tCi1DT05GSUdfSVBfTkZfQU1BTkRBPW0KK0NPTkZJR19ORl9DT05OVFJBQ0tfSVBWND1tCitDT05GSUdfTkZfQ09OTlRSQUNLX1BST0NfQ09NUEFUPXkKIENPTkZJR19JUF9ORl9RVUVVRT1tCiBDT05GSUdfSVBfTkZfSVBUQUJMRVM9bQotQ09ORklHX0lQX05GX01BVENIX0xJTUlUPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9JUFJBTkdFPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9NQUM9bQotQ09ORklHX0lQX05GX01BVENIX1BLVFRZUEU9bQotQ09ORklHX0lQX05GX01BVENIX01BUks9bQotQ09ORklHX0lQX05GX01BVENIX01VTFRJUE9SVD1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfVE9TPW0KIENPTkZJR19JUF9ORl9NQVRDSF9SRUNFTlQ9bQogQ09ORklHX0lQX05GX01BVENIX0VDTj1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfRFNDUD1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfQUhfRVNQPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9MRU5HVEg9bQorQ09ORklHX0lQX05GX01BVENIX0FIPW0KIENPTkZJR19JUF9ORl9NQVRDSF9UVEw9bQotQ09ORklHX0lQX05GX01BVENIX1RDUE1TUz1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfSEVMUEVSPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9TVEFURT1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfQ09OTlRSQUNLPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9PV05FUj1tCiBDT05GSUdfSVBfTkZfTUFUQ0hfQUREUlRZUEU9bQotQ09ORklHX0lQX05GX01BVENIX1JFQUxNPW0KLSMgQ09ORklHX0lQX05GX01BVENIX1NDVFAgaXMgbm90IHNldAotIyBDT05GSUdfSVBfTkZfTUFUQ0hfQ09NTUVOVCBpcyBub3Qgc2V0Ci1DT05GSUdfSVBfTkZfTUFUQ0hfQ09OTk1BUks9bQotQ09ORklHX0lQX05GX01BVENIX0hBU0hMSU1JVD1tCiBDT05GSUdfSVBfTkZfRklMVEVSPW0KIENPTkZJR19JUF9ORl9UQVJHRVRfUkVKRUNUPW0KIENPTkZJR19JUF9ORl9UQVJHRVRfTE9HPW0KIENPTkZJR19JUF9ORl9UQVJHRVRfVUxPRz1tCi1DT05GSUdfSVBfTkZfVEFSR0VUX1RDUE1TUz1tCi1DT05GSUdfSVBfTkZfTkFUPW0KLUNPTkZJR19JUF9ORl9OQVRfTkVFREVEPXkKK0NPTkZJR19ORl9OQVQ9bQorQ09ORklHX05GX05BVF9ORUVERUQ9eQogQ09ORklHX0lQX05GX1RBUkdFVF9NQVNRVUVSQURFPW0KIENPTkZJR19JUF9ORl9UQVJHRVRfUkVESVJFQ1Q9bQogQ09ORklHX0lQX05GX1RBUkdFVF9ORVRNQVA9bQotQ09ORklHX0lQX05GX1RBUkdFVF9TQU1FPW0KLUNPTkZJR19JUF9ORl9OQVRfU05NUF9CQVNJQz1tCi1DT05GSUdfSVBfTkZfTkFUX0lSQz1tCi1DT05GSUdfSVBfTkZfTkFUX0ZUUD1tCi1DT05GSUdfSVBfTkZfTkFUX1RGVFA9bQotQ09ORklHX0lQX05GX05BVF9BTUFOREE9bQorQ09ORklHX05GX05BVF9TTk1QX0JBU0lDPW0KK0NPTkZJR19ORl9OQVRfUFJPVE9fR1JFPW0KK0NPTkZJR19ORl9OQVRfRlRQPW0KK0NPTkZJR19ORl9OQVRfSVJDPW0KK0NPTkZJR19ORl9OQVRfVEZUUD1tCitDT05GSUdfTkZfTkFUX0FNQU5EQT1tCitDT05GSUdfTkZfTkFUX1BQVFA9bQorQ09ORklHX05GX05BVF9IMzIzPW0KK0NPTkZJR19ORl9OQVRfU0lQPW0KIENPTkZJR19JUF9ORl9NQU5HTEU9bQotQ09ORklHX0lQX05GX1RBUkdFVF9UT1M9bQogQ09ORklHX0lQX05GX1RBUkdFVF9FQ049bQotQ09ORklHX0lQX05GX1RBUkdFVF9EU0NQPW0KLUNPTkZJR19JUF9ORl9UQVJHRVRfTUFSSz1tCi1DT05GSUdfSVBfTkZfVEFSR0VUX0NMQVNTSUZZPW0KLUNPTkZJR19JUF9ORl9UQVJHRVRfQ09OTk1BUks9bQotIyBDT05GSUdfSVBfTkZfVEFSR0VUX0NMVVNURVJJUCBpcyBub3Qgc2V0CitDT05GSUdfSVBfTkZfVEFSR0VUX1RUTD1tCitDT05GSUdfSVBfTkZfVEFSR0VUX0NMVVNURVJJUD1tCiBDT05GSUdfSVBfTkZfUkFXPW0KLUNPTkZJR19JUF9ORl9UQVJHRVRfTk9UUkFDSz1tCiBDT05GSUdfSVBfTkZfQVJQVEFCTEVTPW0KIENPTkZJR19JUF9ORl9BUlBGSUxURVI9bQogQ09ORklHX0lQX05GX0FSUF9NQU5HTEU9bQogCiAjCi0jIElQdjY6IE5ldGZpbHRlciBDb25maWd1cmF0aW9uIChFWFBFUklNRU5UQUwpCisjIElQdjY6IE5ldGZpbHRlciBDb25maWd1cmF0aW9uCiAjCitDT05GSUdfTkZfQ09OTlRSQUNLX0lQVjY9bQogQ09ORklHX0lQNl9ORl9RVUVVRT1tCiBDT05GSUdfSVA2X05GX0lQVEFCTEVTPW0KLUNPTkZJR19JUDZfTkZfTUFUQ0hfTElNSVQ9bQotQ09ORklHX0lQNl9ORl9NQVRDSF9NQUM9bQogQ09ORklHX0lQNl9ORl9NQVRDSF9SVD1tCiBDT05GSUdfSVA2X05GX01BVENIX09QVFM9bQogQ09ORklHX0lQNl9ORl9NQVRDSF9GUkFHPW0KIENPTkZJR19JUDZfTkZfTUFUQ0hfSEw9bQotQ09ORklHX0lQNl9ORl9NQVRDSF9NVUxUSVBPUlQ9bQotQ09ORklHX0lQNl9ORl9NQVRDSF9PV05FUj1tCi1DT05GSUdfSVA2X05GX01BVENIX01BUks9bQogQ09ORklHX0lQNl9ORl9NQVRDSF9JUFY2SEVBREVSPW0KLUNPTkZJR19JUDZfTkZfTUFUQ0hfQUhFU1A9bQotQ09ORklHX0lQNl9ORl9NQVRDSF9MRU5HVEg9bQorQ09ORklHX0lQNl9ORl9NQVRDSF9BSD1tCitDT05GSUdfSVA2X05GX01BVENIX01IPW0KIENPTkZJR19JUDZfTkZfTUFUQ0hfRVVJNjQ9bQogQ09ORklHX0lQNl9ORl9GSUxURVI9bQogQ09ORklHX0lQNl9ORl9UQVJHRVRfTE9HPW0KK0NPTkZJR19JUDZfTkZfVEFSR0VUX1JFSkVDVD1tCiBDT05GSUdfSVA2X05GX01BTkdMRT1tCi1DT05GSUdfSVA2X05GX1RBUkdFVF9NQVJLPW0KK0NPTkZJR19JUDZfTkZfVEFSR0VUX0hMPW0KIENPTkZJR19JUDZfTkZfUkFXPW0KLUNPTkZJR19YRlJNPXkKLUNPTkZJR19YRlJNX1VTRVI9bQorQ09ORklHX0lQX0RDQ1A9bQorQ09ORklHX0lORVRfRENDUF9ESUFHPW0KK0NPTkZJR19JUF9EQ0NQX0FDS1ZFQz15CiAKICMKLSMgU0NUUCBDb25maWd1cmF0aW9uIChFWFBFUklNRU5UQUwpCisjIERDQ1AgQ0NJRHMgQ29uZmlndXJhdGlvbiAoRVhQRVJJTUVOVEFMKQogIworQ09ORklHX0lQX0RDQ1BfQ0NJRDI9bQorIyBDT05GSUdfSVBfRENDUF9DQ0lEMl9ERUJVRyBpcyBub3Qgc2V0CitDT05GSUdfSVBfRENDUF9DQ0lEMz1tCisjIENPTkZJR19JUF9EQ0NQX0NDSUQzX0RFQlVHIGlzIG5vdCBzZXQKK0NPTkZJR19JUF9EQ0NQX0NDSUQzX1JUTz0xMDAKK0NPTkZJR19JUF9EQ0NQX1RGUkNfTElCPW0KIENPTkZJR19JUF9TQ1RQPW0KICMgQ09ORklHX1NDVFBfREJHX01TRyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1RQX0RCR19PQkpDTlQgaXMgbm90IHNldAogIyBDT05GSUdfU0NUUF9ITUFDX05PTkUgaXMgbm90IHNldAogIyBDT05GSUdfU0NUUF9ITUFDX1NIQTEgaXMgbm90IHNldAogQ09ORklHX1NDVFBfSE1BQ19NRDU9eQorIyBDT05GSUdfVElQQyBpcyBub3Qgc2V0CiAjIENPTkZJR19BVE0gaXMgbm90IHNldAogIyBDT05GSUdfQlJJREdFIGlzIG5vdCBzZXQKICMgQ09ORklHX1ZMQU5fODAyMVEgaXMgbm90IHNldAogIyBDT05GSUdfREVDTkVUIGlzIG5vdCBzZXQKIENPTkZJR19MTEM9bQogIyBDT05GSUdfTExDMiBpcyBub3Qgc2V0Ci1DT05GSUdfSVBYPW0KLSMgQ09ORklHX0lQWF9JTlRFUk4gaXMgbm90IHNldAorIyBDT05GSUdfSVBYIGlzIG5vdCBzZXQKIENPTkZJR19BVEFMSz1tCiAjIENPTkZJR19ERVZfQVBQTEVUQUxLIGlzIG5vdCBzZXQKICMgQ09ORklHX1gyNSBpcyBub3Qgc2V0CiAjIENPTkZJR19MQVBCIGlzIG5vdCBzZXQKLSMgQ09ORklHX05FVF9ESVZFUlQgaXMgbm90IHNldAogIyBDT05GSUdfRUNPTkVUIGlzIG5vdCBzZXQKICMgQ09ORklHX1dBTl9ST1VURVIgaXMgbm90IHNldAotCi0jCi0jIFFvUyBhbmQvb3IgZmFpciBxdWV1ZWluZwotIwogIyBDT05GSUdfTkVUX1NDSEVEIGlzIG5vdCBzZXQKIENPTkZJR19ORVRfQ0xTX1JPVVRFPXkKIApAQCAtNDIxLDQ2ICszODksMTg5IEBACiAjIE5ldHdvcmsgdGVzdGluZwogIwogIyBDT05GSUdfTkVUX1BLVEdFTiBpcyBub3Qgc2V0Ci1DT05GSUdfTkVUUE9MTD15Ci0jIENPTkZJR19ORVRQT0xMX1JYIGlzIG5vdCBzZXQKLSMgQ09ORklHX05FVFBPTExfVFJBUCBpcyBub3Qgc2V0Ci1DT05GSUdfTkVUX1BPTExfQ09OVFJPTExFUj15CiAjIENPTkZJR19IQU1SQURJTyBpcyBub3Qgc2V0CisjIENPTkZJR19DQU4gaXMgbm90IHNldAogIyBDT05GSUdfSVJEQSBpcyBub3Qgc2V0CiAjIENPTkZJR19CVCBpcyBub3Qgc2V0Ci1DT05GSUdfTkVUREVWSUNFUz15Ci1DT05GSUdfRFVNTVk9bQotIyBDT05GSUdfQk9ORElORyBpcyBub3Qgc2V0Ci1DT05GSUdfRVFVQUxJWkVSPW0KLSMgQ09ORklHX1RVTiBpcyBub3Qgc2V0CisjIENPTkZJR19BRl9SWFJQQyBpcyBub3Qgc2V0CiAKICMKLSMgRXRoZXJuZXQgKDEwIG9yIDEwME1iaXQpCisjIFdpcmVsZXNzCiAjCisjIENPTkZJR19DRkc4MDIxMSBpcyBub3Qgc2V0CitDT05GSUdfV0lSRUxFU1NfRVhUPXkKKyMgQ09ORklHX01BQzgwMjExIGlzIG5vdCBzZXQKK0NPTkZJR19JRUVFODAyMTE9bQorIyBDT05GSUdfSUVFRTgwMjExX0RFQlVHIGlzIG5vdCBzZXQKK0NPTkZJR19JRUVFODAyMTFfQ1JZUFRfV0VQPW0KK0NPTkZJR19JRUVFODAyMTFfQ1JZUFRfQ0NNUD1tCitDT05GSUdfSUVFRTgwMjExX0NSWVBUX1RLSVA9bQorQ09ORklHX0lFRUU4MDIxMV9TT0ZUTUFDPW0KKyMgQ09ORklHX0lFRUU4MDIxMV9TT0ZUTUFDX0RFQlVHIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JGS0lMTCBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRfOVAgaXMgbm90IHNldAorCisjCisjIERldmljZSBEcml2ZXJzCisjCisKKyMKKyMgR2VuZXJpYyBEcml2ZXIgT3B0aW9ucworIworQ09ORklHX1VFVkVOVF9IRUxQRVJfUEFUSD0iL3NiaW4vaG90cGx1ZyIKK0NPTkZJR19TVEFOREFMT05FPXkKK0NPTkZJR19QUkVWRU5UX0ZJUk1XQVJFX0JVSUxEPXkKK0NPTkZJR19GV19MT0FERVI9bQorIyBDT05GSUdfU1lTX0hZUEVSVklTT1IgaXMgbm90IHNldAorQ09ORklHX0NPTk5FQ1RPUj1tCisjIENPTkZJR19NVEQgaXMgbm90IHNldAorQ09ORklHX1BBUlBPUlQ9bQorQ09ORklHX1BBUlBPUlRfQVRBUkk9bQorIyBDT05GSUdfUEFSUE9SVF9HU0MgaXMgbm90IHNldAorIyBDT05GSUdfUEFSUE9SVF9BWDg4Nzk2IGlzIG5vdCBzZXQKK0NPTkZJR19QQVJQT1JUXzEyODQ9eQorQ09ORklHX1BBUlBPUlRfTk9UX1BDPXkKK0NPTkZJR19CTEtfREVWPXkKK0NPTkZJR19BVEFSSV9GTE9QUFk9eQorIyBDT05GSUdfQkxLX0RFVl9DT1dfQ09NTU9OIGlzIG5vdCBzZXQKK0NPTkZJR19CTEtfREVWX0xPT1A9eQorQ09ORklHX0JMS19ERVZfQ1JZUFRPTE9PUD1tCitDT05GSUdfQkxLX0RFVl9OQkQ9bQorQ09ORklHX0JMS19ERVZfUkFNPXkKK0NPTkZJR19CTEtfREVWX1JBTV9DT1VOVD0xNgorQ09ORklHX0JMS19ERVZfUkFNX1NJWkU9NDA5NgorIyBDT05GSUdfQkxLX0RFVl9YSVAgaXMgbm90IHNldAorQ09ORklHX0NEUk9NX1BLVENEVkQ9bQorQ09ORklHX0NEUk9NX1BLVENEVkRfQlVGRkVSUz04CisjIENPTkZJR19DRFJPTV9QS1RDRFZEX1dDQUNIRSBpcyBub3Qgc2V0CitDT05GSUdfQVRBX09WRVJfRVRIPW0KK0NPTkZJR19NSVNDX0RFVklDRVM9eQorIyBDT05GSUdfRUVQUk9NXzkzQ1g2IGlzIG5vdCBzZXQKKyMgQ09ORklHX0VOQ0xPU1VSRV9TRVJWSUNFUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9JREU9eQorQ09ORklHX0lERT15CitDT05GSUdfQkxLX0RFVl9JREU9eQorCisjCisjIFBsZWFzZSBzZWUgRG9jdW1lbnRhdGlvbi9pZGUvaWRlLnR4dCBmb3IgaGVscC9pbmZvIG9uIElERSBkcml2ZXMKKyMKKyMgQ09ORklHX0JMS19ERVZfSURFX1NBVEEgaXMgbm90IHNldAorQ09ORklHX0JMS19ERVZfSURFRElTSz15CisjIENPTkZJR19JREVESVNLX01VTFRJX01PREUgaXMgbm90IHNldAorQ09ORklHX0JMS19ERVZfSURFQ0Q9eQorQ09ORklHX0JMS19ERVZfSURFQ0RfVkVSQk9TRV9FUlJPUlM9eQorIyBDT05GSUdfQkxLX0RFVl9JREVUQVBFIGlzIG5vdCBzZXQKK0NPTkZJR19CTEtfREVWX0lERUZMT1BQWT1tCisjIENPTkZJR19CTEtfREVWX0lERVNDU0kgaXMgbm90IHNldAorIyBDT05GSUdfSURFX1RBU0tfSU9DVEwgaXMgbm90IHNldAorQ09ORklHX0lERV9QUk9DX0ZTPXkKKworIworIyBJREUgY2hpcHNldCBzdXBwb3J0L2J1Z2ZpeGVzCisjCisjIENPTkZJR19JREVfR0VORVJJQyBpcyBub3Qgc2V0CisjIENPTkZJR19CTEtfREVWX1BMQVRGT1JNIGlzIG5vdCBzZXQKK0NPTkZJR19CTEtfREVWX0ZBTENPTl9JREU9eQorIyBDT05GSUdfQkxLX0RFVl9JREVETUEgaXMgbm90IHNldAorIyBDT05GSUdfSURFX0FSQ0hfT0JTT0xFVEVfSU5JVCBpcyBub3Qgc2V0CisjIENPTkZJR19CTEtfREVWX0hEIGlzIG5vdCBzZXQKKworIworIyBTQ1NJIGRldmljZSBzdXBwb3J0CisjCitDT05GSUdfUkFJRF9BVFRSUz1tCitDT05GSUdfU0NTST15CitDT05GSUdfU0NTSV9ETUE9eQorQ09ORklHX1NDU0lfVEdUPW0KKyMgQ09ORklHX1NDU0lfTkVUTElOSyBpcyBub3Qgc2V0CitDT05GSUdfU0NTSV9QUk9DX0ZTPXkKKworIworIyBTQ1NJIHN1cHBvcnQgdHlwZSAoZGlzaywgdGFwZSwgQ0QtUk9NKQorIworQ09ORklHX0JMS19ERVZfU0Q9eQorQ09ORklHX0NIUl9ERVZfU1Q9bQorQ09ORklHX0NIUl9ERVZfT1NTVD1tCitDT05GSUdfQkxLX0RFVl9TUj15CitDT05GSUdfQkxLX0RFVl9TUl9WRU5ET1I9eQorQ09ORklHX0NIUl9ERVZfU0c9bQorIyBDT05GSUdfQ0hSX0RFVl9TQ0ggaXMgbm90IHNldAorCisjCisjIFNvbWUgU0NTSSBkZXZpY2VzIChlLmcuIENEIGp1a2Vib3gpIHN1cHBvcnQgbXVsdGlwbGUgTFVOcworIworIyBDT05GSUdfU0NTSV9NVUxUSV9MVU4gaXMgbm90IHNldAorQ09ORklHX1NDU0lfQ09OU1RBTlRTPXkKKyMgQ09ORklHX1NDU0lfTE9HR0lORyBpcyBub3Qgc2V0CisjIENPTkZJR19TQ1NJX1NDQU5fQVNZTkMgaXMgbm90IHNldAorQ09ORklHX1NDU0lfV0FJVF9TQ0FOPW0KKworIworIyBTQ1NJIFRyYW5zcG9ydHMKKyMKK0NPTkZJR19TQ1NJX1NQSV9BVFRSUz15CisjIENPTkZJR19TQ1NJX0ZDX0FUVFJTIGlzIG5vdCBzZXQKK0NPTkZJR19TQ1NJX0lTQ1NJX0FUVFJTPW0KK0NPTkZJR19TQ1NJX1NBU19BVFRSUz1tCitDT05GSUdfU0NTSV9TQVNfTElCU0FTPW0KK0NPTkZJR19TQ1NJX1NBU19IT1NUX1NNUD15CisjIENPTkZJR19TQ1NJX1NBU19MSUJTQVNfREVCVUcgaXMgbm90IHNldAorQ09ORklHX1NDU0lfU1JQX0FUVFJTPW0KK0NPTkZJR19TQ1NJX1NSUF9UR1RfQVRUUlM9eQorQ09ORklHX1NDU0lfTE9XTEVWRUw9eQorQ09ORklHX0lTQ1NJX1RDUD1tCisjIENPTkZJR19TQ1NJX0RFQlVHIGlzIG5vdCBzZXQKK0NPTkZJR19BVEFSSV9TQ1NJPXkKKyMgQ09ORklHX0FUQVJJX1NDU0lfVE9TSElCQV9ERUxBWSBpcyBub3Qgc2V0CisjIENPTkZJR19BVEFSSV9TQ1NJX1JFU0VUX0JPT1QgaXMgbm90IHNldAorQ09ORklHX01EPXkKK0NPTkZJR19CTEtfREVWX01EPW0KK0NPTkZJR19NRF9MSU5FQVI9bQorQ09ORklHX01EX1JBSUQwPW0KK0NPTkZJR19NRF9SQUlEMT1tCisjIENPTkZJR19NRF9SQUlEMTAgaXMgbm90IHNldAorQ09ORklHX01EX1JBSUQ0NTY9bQorQ09ORklHX01EX1JBSUQ1X1JFU0hBUEU9eQorQ09ORklHX01EX01VTFRJUEFUSD1tCisjIENPTkZJR19NRF9GQVVMVFkgaXMgbm90IHNldAorQ09ORklHX0JMS19ERVZfRE09bQorIyBDT05GSUdfRE1fREVCVUcgaXMgbm90IHNldAorQ09ORklHX0RNX0NSWVBUPW0KK0NPTkZJR19ETV9TTkFQU0hPVD1tCitDT05GSUdfRE1fTUlSUk9SPW0KK0NPTkZJR19ETV9aRVJPPW0KK0NPTkZJR19ETV9NVUxUSVBBVEg9bQorQ09ORklHX0RNX01VTFRJUEFUSF9FTUM9bQorQ09ORklHX0RNX01VTFRJUEFUSF9SREFDPW0KK0NPTkZJR19ETV9NVUxUSVBBVEhfSFA9bQorIyBDT05GSUdfRE1fREVMQVkgaXMgbm90IHNldAorQ09ORklHX0RNX1VFVkVOVD15CitDT05GSUdfTkVUREVWSUNFUz15CisjIENPTkZJR19ORVRERVZJQ0VTX01VTFRJUVVFVUUgaXMgbm90IHNldAorQ09ORklHX0RVTU1ZPW0KKyMgQ09ORklHX0JPTkRJTkcgaXMgbm90IHNldAorQ09ORklHX01BQ1ZMQU49bQorQ09ORklHX0VRVUFMSVpFUj1tCisjIENPTkZJR19UVU4gaXMgbm90IHNldAorQ09ORklHX1ZFVEg9bQorIyBDT05GSUdfUEhZTElCIGlzIG5vdCBzZXQKIENPTkZJR19ORVRfRVRIRVJORVQ9eQogQ09ORklHX01JST1tCiBDT05GSUdfQVRBUklMQU5DRT1tCisjIENPTkZJR19JQk1fTkVXX0VNQUNfWk1JSSBpcyBub3Qgc2V0CisjIENPTkZJR19JQk1fTkVXX0VNQUNfUkdNSUkgaXMgbm90IHNldAorIyBDT05GSUdfSUJNX05FV19FTUFDX1RBSCBpcyBub3Qgc2V0CisjIENPTkZJR19JQk1fTkVXX0VNQUNfRU1BQzQgaXMgbm90IHNldAorIyBDT05GSUdfQjQ0IGlzIG5vdCBzZXQKKyMgQ09ORklHX05FVF9QT0NLRVQgaXMgbm90IHNldAorIyBDT05GSUdfTkVUREVWXzEwMDAgaXMgbm90IHNldAorIyBDT05GSUdfTkVUREVWXzEwMDAwIGlzIG5vdCBzZXQKIAogIwotIyBFdGhlcm5ldCAoMTAwMCBNYml0KQorIyBXaXJlbGVzcyBMQU4KICMKLQotIwotIyBFdGhlcm5ldCAoMTAwMDAgTWJpdCkKLSMKLQotIwotIyBUb2tlbiBSaW5nIGRldmljZXMKLSMKLQotIwotIyBXaXJlbGVzcyBMQU4gKG5vbi1oYW1yYWRpbykKLSMKLSMgQ09ORklHX05FVF9SQURJTyBpcyBub3Qgc2V0Ci0KLSMKLSMgV2FuIGludGVyZmFjZXMKLSMKKyMgQ09ORklHX1dMQU5fUFJFODAyMTEgaXMgbm90IHNldAorIyBDT05GSUdfV0xBTl84MDIxMSBpcyBub3Qgc2V0CiAjIENPTkZJR19XQU4gaXMgbm90IHNldAogIyBDT05GSUdfUExJUCBpcyBub3Qgc2V0CiBDT05GSUdfUFBQPW0KQEAgLTQ3MCwyOCArNTgxLDI4IEBACiBDT05GSUdfUFBQX1NZTkNfVFRZPW0KIENPTkZJR19QUFBfREVGTEFURT1tCiBDT05GSUdfUFBQX0JTRENPTVA9bQorQ09ORklHX1BQUF9NUFBFPW0KIENPTkZJR19QUFBPRT1tCitDT05GSUdfUFBQT0wyVFA9bQogQ09ORklHX1NMSVA9bQogQ09ORklHX1NMSVBfQ09NUFJFU1NFRD15CitDT05GSUdfU0xIQz1tCiBDT05GSUdfU0xJUF9TTUFSVD15CiBDT05GSUdfU0xJUF9NT0RFX1NMSVA2PXkKLUNPTkZJR19TSEFQRVI9bQogQ09ORklHX05FVENPTlNPTEU9bQotCi0jCi0jIElTRE4gc3Vic3lzdGVtCi0jCitDT05GSUdfTkVUQ09OU09MRV9EWU5BTUlDPXkKK0NPTkZJR19ORVRQT0xMPXkKKyMgQ09ORklHX05FVFBPTExfVFJBUCBpcyBub3Qgc2V0CitDT05GSUdfTkVUX1BPTExfQ09OVFJPTExFUj15CiAjIENPTkZJR19JU0ROIGlzIG5vdCBzZXQKLQotIwotIyBUZWxlcGhvbnkgU3VwcG9ydAotIwogIyBDT05GSUdfUEhPTkUgaXMgbm90IHNldAogCiAjCiAjIElucHV0IGRldmljZSBzdXBwb3J0CiAjCiBDT05GSUdfSU5QVVQ9eQorQ09ORklHX0lOUFVUX0ZGX01FTUxFU1M9bQorIyBDT05GSUdfSU5QVVRfUE9MTERFViBpcyBub3Qgc2V0CiAKICMKICMgVXNlcmxhbmQgaW50ZXJmYWNlcwpAQCAtNTAxLDcgKzYxMiw2IEBACiBDT05GSUdfSU5QVVRfTU9VU0VERVZfU0NSRUVOX1g9MTAyNAogQ09ORklHX0lOUFVUX01PVVNFREVWX1NDUkVFTl9ZPTc2OAogIyBDT05GSUdfSU5QVVRfSk9ZREVWIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lOUFVUX1RTREVWIGlzIG5vdCBzZXQKICMgQ09ORklHX0lOUFVUX0VWREVWIGlzIG5vdCBzZXQKICMgQ09ORklHX0lOUFVUX0VWQlVHIGlzIG5vdCBzZXQKIApAQCAtNTA5LDI2ICs2MTksMzcgQEAKICMgSW5wdXQgRGV2aWNlIERyaXZlcnMKICMKIENPTkZJR19JTlBVVF9LRVlCT0FSRD15Ci1DT05GSUdfS0VZQk9BUkRfQVRLQkQ9eQorIyBDT05GSUdfS0VZQk9BUkRfQVRLQkQgaXMgbm90IHNldAogIyBDT05GSUdfS0VZQk9BUkRfU1VOS0JEIGlzIG5vdCBzZXQKICMgQ09ORklHX0tFWUJPQVJEX0xLS0JEIGlzIG5vdCBzZXQKICMgQ09ORklHX0tFWUJPQVJEX1hUS0JEIGlzIG5vdCBzZXQKICMgQ09ORklHX0tFWUJPQVJEX05FV1RPTiBpcyBub3Qgc2V0CisjIENPTkZJR19LRVlCT0FSRF9TVE9XQVdBWSBpcyBub3Qgc2V0CitDT05GSUdfQVRBUklfS0JEX0NPUkU9eQorQ09ORklHX0tFWUJPQVJEX0FUQVJJPXkKIENPTkZJR19JTlBVVF9NT1VTRT15CiBDT05GSUdfTU9VU0VfUFMyPXkKK0NPTkZJR19NT1VTRV9QUzJfQUxQUz15CitDT05GSUdfTU9VU0VfUFMyX0xPR0lQUzJQUD15CitDT05GSUdfTU9VU0VfUFMyX1NZTkFQVElDUz15CitDT05GSUdfTU9VU0VfUFMyX0xJRkVCT09LPXkKK0NPTkZJR19NT1VTRV9QUzJfVFJBQ0tQT0lOVD15CisjIENPTkZJR19NT1VTRV9QUzJfVE9VQ0hLSVQgaXMgbm90IHNldAogIyBDT05GSUdfTU9VU0VfU0VSSUFMIGlzIG5vdCBzZXQKK0NPTkZJR19NT1VTRV9BVEFSST1tCiAjIENPTkZJR19NT1VTRV9WU1hYWEFBIGlzIG5vdCBzZXQKICMgQ09ORklHX0lOUFVUX0pPWVNUSUNLIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lOUFVUX1RBQkxFVCBpcyBub3Qgc2V0CiAjIENPTkZJR19JTlBVVF9UT1VDSFNDUkVFTiBpcyBub3Qgc2V0CiBDT05GSUdfSU5QVVRfTUlTQz15CiBDT05GSUdfSU5QVVRfTTY4S19CRUVQPW0KLUNPTkZJR19JTlBVVF9VSU5QVVQ9bQorIyBDT05GSUdfSU5QVVRfVUlOUFVUIGlzIG5vdCBzZXQKIAogIwogIyBIYXJkd2FyZSBJL08gcG9ydHMKICMKIENPTkZJR19TRVJJTz15Ci1DT05GSUdfU0VSSU9fU0VSUE9SVD15CisjIENPTkZJR19TRVJJT19TRVJQT1JUIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFUklPX1BBUktCRCBpcyBub3Qgc2V0CiBDT05GSUdfU0VSSU9fTElCUFMyPXkKICMgQ09ORklHX1NFUklPX1JBVyBpcyBub3Qgc2V0CkBAIC01NDAsNiArNjYxLDcgQEAKIENPTkZJR19WVD15CiBDT05GSUdfVlRfQ09OU09MRT15CiBDT05GSUdfSFdfQ09OU09MRT15CitDT05GSUdfVlRfSFdfQ09OU09MRV9CSU5ESU5HPXkKICMgQ09ORklHX1NFUklBTF9OT05TVEFOREFSRCBpcyBub3Qgc2V0CiAKICMKQEAgLTU1Niw4NiArNjc4LDk3IEBACiBDT05GSUdfUFJJTlRFUj1tCiAjIENPTkZJR19MUF9DT05TT0xFIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQREVWIGlzIG5vdCBzZXQKLSMgQ09ORklHX1RJUEFSIGlzIG5vdCBzZXQKLQotIwotIyBJUE1JCi0jCiAjIENPTkZJR19JUE1JX0hBTkRMRVIgaXMgbm90IHNldAotCi0jCi0jIFdhdGNoZG9nIENhcmRzCi0jCi0jIENPTkZJR19XQVRDSERPRyBpcyBub3Qgc2V0CisjIENPTkZJR19IV19SQU5ET00gaXMgbm90IHNldAogQ09ORklHX05WUkFNPXkKLUNPTkZJR19HRU5fUlRDPXkKK0NPTkZJR19HRU5fUlRDPW0KIENPTkZJR19HRU5fUlRDX1g9eQotIyBDT05GSUdfRFRMSyBpcyBub3Qgc2V0CiAjIENPTkZJR19SMzk2NCBpcyBub3Qgc2V0Ci0KLSMKLSMgRnRhcGUsIHRoZSBmbG9wcHkgdGFwZSBkZXZpY2UgZHJpdmVyCi0jCi0jIENPTkZJR19EUk0gaXMgbm90IHNldAogIyBDT05GSUdfUkFXX0RSSVZFUiBpcyBub3Qgc2V0Ci0KLSMKLSMgVFBNIGRldmljZXMKLSMKLQotIwotIyBJMkMgc3VwcG9ydAotIworIyBDT05GSUdfVENHX1RQTSBpcyBub3Qgc2V0CiAjIENPTkZJR19JMkMgaXMgbm90IHNldAogCiAjCi0jIERhbGxhcydzIDEtd2lyZSBidXMKKyMgU1BJIHN1cHBvcnQKICMKKyMgQ09ORklHX1NQSSBpcyBub3Qgc2V0CisjIENPTkZJR19TUElfTUFTVEVSIGlzIG5vdCBzZXQKICMgQ09ORklHX1cxIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BPV0VSX1NVUFBMWSBpcyBub3Qgc2V0CisjIENPTkZJR19IV01PTiBpcyBub3Qgc2V0CisjIENPTkZJR19USEVSTUFMIGlzIG5vdCBzZXQKKyMgQ09ORklHX1dBVENIRE9HIGlzIG5vdCBzZXQKIAogIwotIyBNaXNjIGRldmljZXMKKyMgU29uaWNzIFNpbGljb24gQmFja3BsYW5lCiAjCitDT05GSUdfU1NCX1BPU1NJQkxFPXkKKyMgQ09ORklHX1NTQiBpcyBub3Qgc2V0CisKKyMKKyMgTXVsdGlmdW5jdGlvbiBkZXZpY2UgZHJpdmVycworIworIyBDT05GSUdfTUZEX1NNNTAxIGlzIG5vdCBzZXQKIAogIwogIyBNdWx0aW1lZGlhIGRldmljZXMKICMKICMgQ09ORklHX1ZJREVPX0RFViBpcyBub3Qgc2V0Ci0KLSMKLSMgRGlnaXRhbCBWaWRlbyBCcm9hZGNhc3RpbmcgRGV2aWNlcwotIwotIyBDT05GSUdfRFZCIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RWQl9DT1JFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RBQiBpcyBub3Qgc2V0CiAKICMKICMgR3JhcGhpY3Mgc3VwcG9ydAogIworIyBDT05GSUdfVkdBU1RBVEUgaXMgbm90IHNldAorIyBDT05GSUdfVklERU9fT1VUUFVUX0NPTlRST0wgaXMgbm90IHNldAogQ09ORklHX0ZCPXkKLSMgQ09ORklHX0ZCX0NGQl9GSUxMUkVDVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19GQl9DRkJfQ09QWUFSRUEgaXMgbm90IHNldAotIyBDT05GSUdfRkJfQ0ZCX0lNQUdFQkxJVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19GQl9TT0ZUX0NVUlNPUiBpcyBub3Qgc2V0CisjIENPTkZJR19GSVJNV0FSRV9FRElEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZCX0REQyBpcyBub3Qgc2V0CitDT05GSUdfRkJfQ0ZCX0ZJTExSRUNUPXkKK0NPTkZJR19GQl9DRkJfQ09QWUFSRUE9eQorQ09ORklHX0ZCX0NGQl9JTUFHRUJMSVQ9eQorIyBDT05GSUdfRkJfQ0ZCX1JFVl9QSVhFTFNfSU5fQllURSBpcyBub3Qgc2V0CisjIENPTkZJR19GQl9TWVNfRklMTFJFQ1QgaXMgbm90IHNldAorIyBDT05GSUdfRkJfU1lTX0NPUFlBUkVBIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZCX1NZU19JTUFHRUJMSVQgaXMgbm90IHNldAorIyBDT05GSUdfRkJfU1lTX0ZPUFMgaXMgbm90IHNldAorQ09ORklHX0ZCX0RFRkVSUkVEX0lPPXkKKyMgQ09ORklHX0ZCX1NWR0FMSUIgaXMgbm90IHNldAogIyBDT05GSUdfRkJfTUFDTU9ERVMgaXMgbm90IHNldAotQ09ORklHX0ZCX01PREVfSEVMUEVSUz15CisjIENPTkZJR19GQl9CQUNLTElHSFQgaXMgbm90IHNldAorIyBDT05GSUdfRkJfTU9ERV9IRUxQRVJTIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZCX1RJTEVCTElUVElORyBpcyBub3Qgc2V0Ci0jIENPTkZJR19GQl9BVFkgaXMgbm90IHNldAorCisjCisjIEZyYW1lIGJ1ZmZlciBoYXJkd2FyZSBkcml2ZXJzCisjCitDT05GSUdfRkJfQVRBUkk9eQorIyBDT05GSUdfRkJfVVZFU0EgaXMgbm90IHNldAogIyBDT05GSUdfRkJfUzFEMTNYWFggaXMgbm90IHNldAorIyBDT05GSUdfRkJfQVRZIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZCX1ZJUlRVQUwgaXMgbm90IHNldAorIyBDT05GSUdfQkFDS0xJR0hUX0xDRF9TVVBQT1JUIGlzIG5vdCBzZXQKKworIworIyBEaXNwbGF5IGRldmljZSBzdXBwb3J0CisjCisjIENPTkZJR19ESVNQTEFZX1NVUFBPUlQgaXMgbm90IHNldAogCiAjCiAjIENvbnNvbGUgZGlzcGxheSBkcml2ZXIgc3VwcG9ydAogIwogQ09ORklHX0RVTU1ZX0NPTlNPTEU9eQogQ09ORklHX0ZSQU1FQlVGRkVSX0NPTlNPTEU9eQorIyBDT05GSUdfRlJBTUVCVUZGRVJfQ09OU09MRV9ERVRFQ1RfUFJJTUFSWSBpcyBub3Qgc2V0CisjIENPTkZJR19GUkFNRUJVRkZFUl9DT05TT0xFX1JPVEFUSU9OIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZPTlRTIGlzIG5vdCBzZXQKIENPTkZJR19GT05UXzh4OD15CiBDT05GSUdfRk9OVF84eDE2PXkKLQotIwotIyBMb2dvIGNvbmZpZ3VyYXRpb24KLSMKLSMgQ09ORklHX0xPR08gaXMgbm90IHNldAotIyBDT05GSUdfQkFDS0xJR0hUX0xDRF9TVVBQT1JUIGlzIG5vdCBzZXQKK0NPTkZJR19MT0dPPXkKK0NPTkZJR19MT0dPX0xJTlVYX01PTk89eQorQ09ORklHX0xPR09fTElOVVhfVkdBMTY9eQorQ09ORklHX0xPR09fTElOVVhfQ0xVVDIyND15CiAKICMKICMgU291bmQKQEAgLTY0MywyNyArNzc2LDIxIEBACiBDT05GSUdfU09VTkQ9bQogQ09ORklHX0RNQVNPVU5EX0FUQVJJPW0KIENPTkZJR19ETUFTT1VORD1tCi0KLSMKLSMgVVNCIHN1cHBvcnQKLSMKLSMgQ09ORklHX1VTQl9BUkNIX0hBU19IQ0QgaXMgbm90IHNldAotIyBDT05GSUdfVVNCX0FSQ0hfSEFTX09IQ0kgaXMgbm90IHNldAotCi0jCi0jIFVTQiBHYWRnZXQgU3VwcG9ydAotIwotIyBDT05GSUdfVVNCX0dBREdFVCBpcyBub3Qgc2V0Ci0KLSMKLSMgTU1DL1NEIENhcmQgc3VwcG9ydAotIworQ09ORklHX0hJRF9TVVBQT1JUPXkKK0NPTkZJR19ISUQ9bQorIyBDT05GSUdfSElEX0RFQlVHIGlzIG5vdCBzZXQKK0NPTkZJR19ISURSQVc9eQorIyBDT05GSUdfVVNCX1NVUFBPUlQgaXMgbm90IHNldAogIyBDT05GSUdfTU1DIGlzIG5vdCBzZXQKKyMgQ09ORklHX01FTVNUSUNLIGlzIG5vdCBzZXQKKyMgQ09ORklHX05FV19MRURTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JUQ19DTEFTUyBpcyBub3Qgc2V0CisjIENPTkZJR19BVVhESVNQTEFZIGlzIG5vdCBzZXQKIAogIwotIyBJbmZpbmlCYW5kIHN1cHBvcnQKKyMgVXNlcnNwYWNlIEkvTwogIwotIyBDT05GSUdfSU5GSU5JQkFORCBpcyBub3Qgc2V0CisjIENPTkZJR19VSU8gaXMgbm90IHNldAogCiAjCiAjIENoYXJhY3RlciBkZXZpY2VzCkBAIC02ODAsMzggKzgwNyw0NCBAQAogIwogQ09ORklHX0VYVDJfRlM9eQogIyBDT05GSUdfRVhUMl9GU19YQVRUUiBpcyBub3Qgc2V0CisjIENPTkZJR19FWFQyX0ZTX1hJUCBpcyBub3Qgc2V0CiBDT05GSUdfRVhUM19GUz15CiAjIENPTkZJR19FWFQzX0ZTX1hBVFRSIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VYVDRERVZfRlMgaXMgbm90IHNldAogQ09ORklHX0pCRD15Ci0jIENPTkZJR19KQkRfREVCVUcgaXMgbm90IHNldAogQ09ORklHX1JFSVNFUkZTX0ZTPW0KICMgQ09ORklHX1JFSVNFUkZTX0NIRUNLIGlzIG5vdCBzZXQKLUNPTkZJR19SRUlTRVJGU19QUk9DX0lORk89eQorIyBDT05GSUdfUkVJU0VSRlNfUFJPQ19JTkZPIGlzIG5vdCBzZXQKICMgQ09ORklHX1JFSVNFUkZTX0ZTX1hBVFRSIGlzIG5vdCBzZXQKIENPTkZJR19KRlNfRlM9bQogIyBDT05GSUdfSkZTX1BPU0lYX0FDTCBpcyBub3Qgc2V0CiAjIENPTkZJR19KRlNfU0VDVVJJVFkgaXMgbm90IHNldAogIyBDT05GSUdfSkZTX0RFQlVHIGlzIG5vdCBzZXQKICMgQ09ORklHX0pGU19TVEFUSVNUSUNTIGlzIG5vdCBzZXQKLQotIwotIyBYRlMgc3VwcG9ydAotIworQ09ORklHX0ZTX1BPU0lYX0FDTD15CiBDT05GSUdfWEZTX0ZTPW0KLUNPTkZJR19YRlNfRVhQT1JUPXkKLSMgQ09ORklHX1hGU19SVCBpcyBub3Qgc2V0CiAjIENPTkZJR19YRlNfUVVPVEEgaXMgbm90IHNldAogIyBDT05GSUdfWEZTX1NFQ1VSSVRZIGlzIG5vdCBzZXQKICMgQ09ORklHX1hGU19QT1NJWF9BQ0wgaXMgbm90IHNldAotQ09ORklHX01JTklYX0ZTPXkKLSMgQ09ORklHX1JPTUZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1hGU19SVCBpcyBub3Qgc2V0CitDT05GSUdfR0ZTMl9GUz1tCitDT05GSUdfR0ZTMl9GU19MT0NLSU5HX05PTE9DSz1tCitDT05GSUdfR0ZTMl9GU19MT0NLSU5HX0RMTT1tCitDT05GSUdfT0NGUzJfRlM9bQorIyBDT05GSUdfT0NGUzJfREVCVUdfTUFTS0xPRyBpcyBub3Qgc2V0CisjIENPTkZJR19PQ0ZTMl9ERUJVR19GUyBpcyBub3Qgc2V0CitDT05GSUdfRE5PVElGWT15CitDT05GSUdfSU5PVElGWT15CitDT05GSUdfSU5PVElGWV9VU0VSPXkKIENPTkZJR19RVU9UQT15CitDT05GSUdfUVVPVEFfTkVUTElOS19JTlRFUkZBQ0U9eQorIyBDT05GSUdfUFJJTlRfUVVPVEFfV0FSTklORyBpcyBub3Qgc2V0CiAjIENPTkZJR19RRk1UX1YxIGlzIG5vdCBzZXQKICMgQ09ORklHX1FGTVRfVjIgaXMgbm90IHNldAogQ09ORklHX1FVT1RBQ1RMPXkKLUNPTkZJR19ETk9USUZZPXkKIENPTkZJR19BVVRPRlNfRlM9bQogQ09ORklHX0FVVE9GUzRfRlM9bQorQ09ORklHX0ZVU0VfRlM9bQogCiAjCiAjIENELVJPTS9EVkQgRmlsZXN5c3RlbXMKQEAgLTcxOSw3ICs4NTIsNiBAQAogQ09ORklHX0lTTzk2NjBfRlM9eQogQ09ORklHX0pPTElFVD15CiBDT05GSUdfWklTT0ZTPXkKLUNPTkZJR19aSVNPRlNfRlM9eQogQ09ORklHX1VERl9GUz1tCiBDT05GSUdfVURGX05MUz15CiAKQEAgLTczOCwxMyArODcwLDEyIEBACiAjCiBDT05GSUdfUFJPQ19GUz15CiBDT05GSUdfUFJPQ19LQ09SRT15CitDT05GSUdfUFJPQ19TWVNDVEw9eQogQ09ORklHX1NZU0ZTPXkKLSMgQ09ORklHX0RFVkZTX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0RFVlBUU19GU19YQVRUUiBpcyBub3Qgc2V0CiBDT05GSUdfVE1QRlM9eQotIyBDT05GSUdfVE1QRlNfWEFUVFIgaXMgbm90IHNldAorIyBDT05GSUdfVE1QRlNfUE9TSVhfQUNMIGlzIG5vdCBzZXQKICMgQ09ORklHX0hVR0VUTEJfUEFHRSBpcyBub3Qgc2V0Ci1DT05GSUdfUkFNRlM9eQorQ09ORklHX0NPTkZJR0ZTX0ZTPW0KIAogIwogIyBNaXNjZWxsYW5lb3VzIGZpbGVzeXN0ZW1zCkBAIC03NTgsNDIgKzg4OSwzOCBAQAogIyBDT05GSUdfRUZTX0ZTIGlzIG5vdCBzZXQKIENPTkZJR19DUkFNRlM9bQogIyBDT05GSUdfVlhGU19GUyBpcyBub3Qgc2V0CitDT05GSUdfTUlOSVhfRlM9eQogQ09ORklHX0hQRlNfRlM9bQogIyBDT05GSUdfUU5YNEZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JPTUZTX0ZTIGlzIG5vdCBzZXQKIENPTkZJR19TWVNWX0ZTPW0KIENPTkZJR19VRlNfRlM9bQogIyBDT05GSUdfVUZTX0ZTX1dSSVRFIGlzIG5vdCBzZXQKLQotIwotIyBOZXR3b3JrIEZpbGUgU3lzdGVtcwotIworIyBDT05GSUdfVUZTX0RFQlVHIGlzIG5vdCBzZXQKK0NPTkZJR19ORVRXT1JLX0ZJTEVTWVNURU1TPXkKIENPTkZJR19ORlNfRlM9bQogQ09ORklHX05GU19WMz15CisjIENPTkZJR19ORlNfVjNfQUNMIGlzIG5vdCBzZXQKICMgQ09ORklHX05GU19WNCBpcyBub3Qgc2V0CiAjIENPTkZJR19ORlNfRElSRUNUSU8gaXMgbm90IHNldAogQ09ORklHX05GU0Q9bQogQ09ORklHX05GU0RfVjM9eQorIyBDT05GSUdfTkZTRF9WM19BQ0wgaXMgbm90IHNldAogIyBDT05GSUdfTkZTRF9WNCBpcyBub3Qgc2V0CiBDT05GSUdfTkZTRF9UQ1A9eQogQ09ORklHX0xPQ0tEPW0KIENPTkZJR19MT0NLRF9WND15CiBDT05GSUdfRVhQT1JURlM9bQorQ09ORklHX05GU19DT01NT049eQogQ09ORklHX1NVTlJQQz1tCitDT05GSUdfU1VOUlBDX0JJTkQzND15CiAjIENPTkZJR19SUENTRUNfR1NTX0tSQjUgaXMgbm90IHNldAogIyBDT05GSUdfUlBDU0VDX0dTU19TUEtNMyBpcyBub3Qgc2V0CiBDT05GSUdfU01CX0ZTPW0KIENPTkZJR19TTUJfTkxTX0RFRkFVTFQ9eQogQ09ORklHX1NNQl9OTFNfUkVNT1RFPSJjcDQzNyIKICMgQ09ORklHX0NJRlMgaXMgbm90IHNldAotQ09ORklHX05DUF9GUz1tCi0jIENPTkZJR19OQ1BGU19QQUNLRVRfU0lHTklORyBpcyBub3Qgc2V0Ci0jIENPTkZJR19OQ1BGU19JT0NUTF9MT0NLSU5HIGlzIG5vdCBzZXQKLSMgQ09ORklHX05DUEZTX1NUUk9ORyBpcyBub3Qgc2V0Ci1DT05GSUdfTkNQRlNfTkZTX05TPXkKLUNPTkZJR19OQ1BGU19PUzJfTlM9eQotIyBDT05GSUdfTkNQRlNfU01BTExET1MgaXMgbm90IHNldAotQ09ORklHX05DUEZTX05MUz15Ci0jIENPTkZJR19OQ1BGU19FWFRSQVMgaXMgbm90IHNldAorIyBDT05GSUdfTkNQX0ZTIGlzIG5vdCBzZXQKIENPTkZJR19DT0RBX0ZTPW0KICMgQ09ORklHX0NPREFfRlNfT0xEX0FQSSBpcyBub3Qgc2V0CiAjIENPTkZJR19BRlNfRlMgaXMgbm90IHNldApAQCAtODA0LDEwICs5MzEsNiBAQAogIyBDT05GSUdfUEFSVElUSU9OX0FEVkFOQ0VEIGlzIG5vdCBzZXQKIENPTkZJR19BVEFSSV9QQVJUSVRJT049eQogQ09ORklHX01TRE9TX1BBUlRJVElPTj15Ci0KLSMKLSMgTmF0aXZlIExhbmd1YWdlIFN1cHBvcnQKLSMKIENPTkZJR19OTFM9eQogQ09ORklHX05MU19ERUZBVUxUPSJpc284ODU5LTEiCiBDT05GSUdfTkxTX0NPREVQQUdFXzQzNz15CkBAIC04NDgsMzUgKzk3MSw0MiBAQAogQ09ORklHX05MU19LT0k4X1I9bQogQ09ORklHX05MU19LT0k4X1U9bQogQ09ORklHX05MU19VVEY4PW0KK0NPTkZJR19ETE09bQorIyBDT05GSUdfRExNX0RFQlVHIGlzIG5vdCBzZXQKIAogIwogIyBLZXJuZWwgaGFja2luZwogIwogIyBDT05GSUdfUFJJTlRLX1RJTUUgaXMgbm90IHNldAotQ09ORklHX0RFQlVHX0tFUk5FTD15CitDT05GSUdfRU5BQkxFX1dBUk5fREVQUkVDQVRFRD15CitDT05GSUdfRU5BQkxFX01VU1RfQ0hFQ0s9eQogQ09ORklHX01BR0lDX1NZU1JRPXkKLUNPTkZJR19MT0dfQlVGX1NISUZUPTE2Ci0jIENPTkZJR19TQ0hFRFNUQVRTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0RFQlVHX1NMQUIgaXMgbm90IHNldAotIyBDT05GSUdfREVCVUdfU1BJTkxPQ0sgaXMgbm90IHNldAotIyBDT05GSUdfREVCVUdfU1BJTkxPQ0tfU0xFRVAgaXMgbm90IHNldAotIyBDT05GSUdfREVCVUdfS09CSkVDVCBpcyBub3Qgc2V0Ci1DT05GSUdfREVCVUdfQlVHVkVSQk9TRT15Ci0jIENPTkZJR19ERUJVR19JTkZPIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VOVVNFRF9TWU1CT0xTIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZSQU1FX1BPSU5URVIgaXMgbm90IHNldAorIyBDT05GSUdfSEVBREVSU19DSEVDSyBpcyBub3Qgc2V0CisjIENPTkZJR19ERUJVR19LRVJORUwgaXMgbm90IHNldAorQ09ORklHX0RFQlVHX0JVR1ZFUkJPU0U9eQorIyBDT05GSUdfU0FNUExFUyBpcyBub3Qgc2V0CiAKICMKICMgU2VjdXJpdHkgb3B0aW9ucwogIwogIyBDT05GSUdfS0VZUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TRUNVUklUWSBpcyBub3Qgc2V0Ci0KLSMKLSMgQ3J5cHRvZ3JhcGhpYyBvcHRpb25zCi0jCisjIENPTkZJR19TRUNVUklUWV9GSUxFX0NBUEFCSUxJVElFUyBpcyBub3Qgc2V0CitDT05GSUdfWE9SX0JMT0NLUz1tCitDT05GSUdfQVNZTkNfQ09SRT1tCitDT05GSUdfQVNZTkNfTUVNQ1BZPW0KK0NPTkZJR19BU1lOQ19YT1I9bQogQ09ORklHX0NSWVBUTz15CitDT05GSUdfQ1JZUFRPX0FMR0FQST15CitDT05GSUdfQ1JZUFRPX0FFQUQ9bQorQ09ORklHX0NSWVBUT19CTEtDSVBIRVI9bQorQ09ORklHX0NSWVBUT19TRVFJVj1tCitDT05GSUdfQ1JZUFRPX0hBU0g9eQorQ09ORklHX0NSWVBUT19NQU5BR0VSPXkKIENPTkZJR19DUllQVE9fSE1BQz15CitDT05GSUdfQ1JZUFRPX1hDQkM9bQogQ09ORklHX0NSWVBUT19OVUxMPW0KIENPTkZJR19DUllQVE9fTUQ0PW0KIENPTkZJR19DUllQVE9fTUQ1PW0KQEAgLTg4NSw5ICsxMDE1LDIxIEBACiBDT05GSUdfQ1JZUFRPX1NIQTUxMj1tCiBDT05GSUdfQ1JZUFRPX1dQNTEyPW0KIENPTkZJR19DUllQVE9fVEdSMTkyPW0KK0NPTkZJR19DUllQVE9fR0YxMjhNVUw9bQorQ09ORklHX0NSWVBUT19FQ0I9bQorQ09ORklHX0NSWVBUT19DQkM9bQorQ09ORklHX0NSWVBUT19QQ0JDPW0KK0NPTkZJR19DUllQVE9fTFJXPW0KK0NPTkZJR19DUllQVE9fWFRTPW0KK0NPTkZJR19DUllQVE9fQ1RSPW0KK0NPTkZJR19DUllQVE9fR0NNPW0KK0NPTkZJR19DUllQVE9fQ0NNPW0KK0NPTkZJR19DUllQVE9fQ1JZUFREPW0KIENPTkZJR19DUllQVE9fREVTPW0KK0NPTkZJR19DUllQVE9fRkNSWVBUPW0KIENPTkZJR19DUllQVE9fQkxPV0ZJU0g9bQogQ09ORklHX0NSWVBUT19UV09GSVNIPW0KK0NPTkZJR19DUllQVE9fVFdPRklTSF9DT01NT049bQogQ09ORklHX0NSWVBUT19TRVJQRU5UPW0KIENPTkZJR19DUllQVE9fQUVTPW0KIENPTkZJR19DUllQVE9fQ0FTVDU9bQpAQCAtODk2LDIwICsxMDM4LDM1IEBACiBDT05GSUdfQ1JZUFRPX0FSQzQ9bQogQ09ORklHX0NSWVBUT19LSEFaQUQ9bQogQ09ORklHX0NSWVBUT19BTlVCSVM9bQorQ09ORklHX0NSWVBUT19TRUVEPW0KK0NPTkZJR19DUllQVE9fU0FMU0EyMD1tCiBDT05GSUdfQ1JZUFRPX0RFRkxBVEU9bQogQ09ORklHX0NSWVBUT19NSUNIQUVMX01JQz1tCiBDT05GSUdfQ1JZUFRPX0NSQzMyQz1tCitDT05GSUdfQ1JZUFRPX0NBTUVMTElBPW0KIENPTkZJR19DUllQVE9fVEVTVD1tCi0KLSMKLSMgSGFyZHdhcmUgY3J5cHRvIGRldmljZXMKLSMKK0NPTkZJR19DUllQVE9fQVVUSEVOQz1tCitDT05GSUdfQ1JZUFRPX0xaTz1tCisjIENPTkZJR19DUllQVE9fSFcgaXMgbm90IHNldAogCiAjCiAjIExpYnJhcnkgcm91dGluZXMKICMKK0NPTkZJR19CSVRSRVZFUlNFPXkKIENPTkZJR19DUkNfQ0NJVFQ9bQorQ09ORklHX0NSQzE2PXkKKyMgQ09ORklHX0NSQ19JVFVfVCBpcyBub3Qgc2V0CiBDT05GSUdfQ1JDMzI9eQorIyBDT05GSUdfQ1JDNyBpcyBub3Qgc2V0CiBDT05GSUdfTElCQ1JDMzJDPW0KIENPTkZJR19aTElCX0lORkxBVEU9eQogQ09ORklHX1pMSUJfREVGTEFURT1tCitDT05GSUdfTFpPX0NPTVBSRVNTPW0KK0NPTkZJR19MWk9fREVDT01QUkVTUz1tCitDT05GSUdfVEVYVFNFQVJDSD15CitDT05GSUdfVEVYVFNFQVJDSF9LTVA9bQorQ09ORklHX1RFWFRTRUFSQ0hfQk09bQorQ09ORklHX1RFWFRTRUFSQ0hfRlNNPW0KK0NPTkZJR19QTElTVD15CitDT05GSUdfSEFTX0lPTUVNPXkKK0NPTkZJR19IQVNfRE1BPXkKZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9jb25maWdzL2J2bWU2MDAwX2RlZmNvbmZpZyBiL2FyY2gvbTY4ay9jb25maWdzL2J2bWU2MDAwX2RlZmNvbmZpZwppbmRleCBkYTJhMjNhLi5lZDk4ZWZmIDEwMDY0NAotLS0gYS9hcmNoL202OGsvY29uZmlncy9idm1lNjAwMF9kZWZjb25maWcKKysrIGIvYXJjaC9tNjhrL2NvbmZpZ3MvYnZtZTYwMDBfZGVmY29uZmlnCkBAIC0xLDYzICsxLDExMSBAQAogIwogIyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBtYWtlIGNvbmZpZzogZG9uJ3QgZWRpdAotIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjEyLXJjNi1tNjhrCi0jIFR1ZSBKdW4gIDcgMjA6MzQ6MzcgMjAwNQorIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjI1LXJjOAorIyBXZWQgQXByICAyIDIwOjQ2OjEwIDIwMDgKICMKIENPTkZJR19NNjhLPXkKIENPTkZJR19NTVU9eQotQ09ORklHX1VJRDE2PXkKIENPTkZJR19SV1NFTV9HRU5FUklDX1NQSU5MT0NLPXkKKyMgQ09ORklHX0FSQ0hfSEFTX0lMT0cyX1UzMiBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0hBU19JTE9HMl9VNjQgaXMgbm90IHNldAorQ09ORklHX0dFTkVSSUNfSFdFSUdIVD15CiBDT05GSUdfR0VORVJJQ19DQUxJQlJBVEVfREVMQVk9eQotCi0jCi0jIENvZGUgbWF0dXJpdHkgbGV2ZWwgb3B0aW9ucwotIwotQ09ORklHX0VYUEVSSU1FTlRBTD15Ci1DT05GSUdfQ0xFQU5fQ09NUElMRT15Ci1DT05GSUdfQlJPS0VOX09OX1NNUD15Ci1DT05GSUdfSU5JVF9FTlZfQVJHX0xJTUlUPTMyCitDT05GSUdfVElNRV9MT1dfUkVTPXkKK0NPTkZJR19HRU5FUklDX0lPTUFQPXkKK0NPTkZJR19OT19JT1BPUlQ9eQorIyBDT05GSUdfTk9fRE1BIGlzIG5vdCBzZXQKK0NPTkZJR19BUkNIX1NVUFBPUlRTX0FPVVQ9eQorQ09ORklHX0haPTEwMAorQ09ORklHX0RFRkNPTkZJR19MSVNUPSIvbGliL21vZHVsZXMvJFVOQU1FX1JFTEVBU0UvLmNvbmZpZyIKIAogIwogIyBHZW5lcmFsIHNldHVwCiAjCitDT05GSUdfRVhQRVJJTUVOVEFMPXkKK0NPTkZJR19CUk9LRU5fT05fU01QPXkKK0NPTkZJR19JTklUX0VOVl9BUkdfTElNSVQ9MzIKIENPTkZJR19MT0NBTFZFUlNJT049Ii1idm1lNjAwMCIKK0NPTkZJR19MT0NBTFZFUlNJT05fQVVUTz15CiBDT05GSUdfU1dBUD15CiBDT05GSUdfU1lTVklQQz15CitDT05GSUdfU1lTVklQQ19TWVNDVEw9eQogQ09ORklHX1BPU0lYX01RVUVVRT15CiBDT05GSUdfQlNEX1BST0NFU1NfQUNDVD15CiAjIENPTkZJR19CU0RfUFJPQ0VTU19BQ0NUX1YzIGlzIG5vdCBzZXQKLUNPTkZJR19TWVNDVEw9eQotQ09ORklHX0FVRElUPXkKLUNPTkZJR19IT1RQTFVHPXkKLUNPTkZJR19LT0JKRUNUX1VFVkVOVD15CisjIENPTkZJR19UQVNLU1RBVFMgaXMgbm90IHNldAorIyBDT05GSUdfQVVESVQgaXMgbm90IHNldAogIyBDT05GSUdfSUtDT05GSUcgaXMgbm90IHNldAorQ09ORklHX0xPR19CVUZfU0hJRlQ9MTQKKyMgQ09ORklHX0NHUk9VUFMgaXMgbm90IHNldAorIyBDT05GSUdfR1JPVVBfU0NIRUQgaXMgbm90IHNldAorIyBDT05GSUdfU1lTRlNfREVQUkVDQVRFRF9WMiBpcyBub3Qgc2V0CitDT05GSUdfUkVMQVk9eQorQ09ORklHX05BTUVTUEFDRVM9eQorIyBDT05GSUdfVVRTX05TIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lQQ19OUyBpcyBub3Qgc2V0CisjIENPTkZJR19VU0VSX05TIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BJRF9OUyBpcyBub3Qgc2V0CitDT05GSUdfQkxLX0RFVl9JTklUUkQ9eQorQ09ORklHX0lOSVRSQU1GU19TT1VSQ0U9IiIKKyMgQ09ORklHX0NDX09QVElNSVpFX0ZPUl9TSVpFIGlzIG5vdCBzZXQKK0NPTkZJR19TWVNDVEw9eQogIyBDT05GSUdfRU1CRURERUQgaXMgbm90IHNldAorQ09ORklHX1VJRDE2PXkKK0NPTkZJR19TWVNDVExfU1lTQ0FMTD15CiBDT05GSUdfS0FMTFNZTVM9eQotIyBDT05GSUdfS0FMTFNZTVNfQUxMIGlzIG5vdCBzZXQKICMgQ09ORklHX0tBTExTWU1TX0VYVFJBX1BBU1MgaXMgbm90IHNldAorQ09ORklHX0hPVFBMVUc9eQogQ09ORklHX1BSSU5USz15CiBDT05GSUdfQlVHPXkKK0NPTkZJR19FTEZfQ09SRT15CisjIENPTkZJR19DT01QQVRfQlJLIGlzIG5vdCBzZXQKIENPTkZJR19CQVNFX0ZVTEw9eQogQ09ORklHX0ZVVEVYPXkKK0NPTkZJR19BTk9OX0lOT0RFUz15CiBDT05GSUdfRVBPTEw9eQorQ09ORklHX1NJR05BTEZEPXkKK0NPTkZJR19USU1FUkZEPXkKK0NPTkZJR19FVkVOVEZEPXkKIENPTkZJR19TSE1FTT15Ci1DT05GSUdfQ0NfQUxJR05fRlVOQ1RJT05TPTAKLUNPTkZJR19DQ19BTElHTl9MQUJFTFM9MAotQ09ORklHX0NDX0FMSUdOX0xPT1BTPTAKLUNPTkZJR19DQ19BTElHTl9KVU1QUz0wCitDT05GSUdfVk1fRVZFTlRfQ09VTlRFUlM9eQorQ09ORklHX1NMQUI9eQorIyBDT05GSUdfU0xVQiBpcyBub3Qgc2V0CisjIENPTkZJR19TTE9CIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BST0ZJTElORyBpcyBub3Qgc2V0CisjIENPTkZJR19NQVJLRVJTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hBVkVfT1BST0ZJTEUgaXMgbm90IHNldAorIyBDT05GSUdfSEFWRV9LUFJPQkVTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hBVkVfS1JFVFBST0JFUyBpcyBub3Qgc2V0CitDT05GSUdfUFJPQ19QQUdFX01PTklUT1I9eQorQ09ORklHX1NMQUJJTkZPPXkKK0NPTkZJR19SVF9NVVRFWEVTPXkKICMgQ09ORklHX1RJTllfU0hNRU0gaXMgbm90IHNldAogQ09ORklHX0JBU0VfU01BTEw9MAotCi0jCi0jIExvYWRhYmxlIG1vZHVsZSBzdXBwb3J0Ci0jCiBDT05GSUdfTU9EVUxFUz15CiBDT05GSUdfTU9EVUxFX1VOTE9BRD15CiAjIENPTkZJR19NT0RVTEVfRk9SQ0VfVU5MT0FEIGlzIG5vdCBzZXQKLUNPTkZJR19PQlNPTEVURV9NT0RQQVJNPXkKICMgQ09ORklHX01PRFZFUlNJT05TIGlzIG5vdCBzZXQKICMgQ09ORklHX01PRFVMRV9TUkNWRVJTSU9OX0FMTCBpcyBub3Qgc2V0CiBDT05GSUdfS01PRD15CitDT05GSUdfQkxPQ0s9eQorIyBDT05GSUdfTEJEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JMS19ERVZfSU9fVFJBQ0UgaXMgbm90IHNldAorIyBDT05GSUdfTFNGIGlzIG5vdCBzZXQKK0NPTkZJR19CTEtfREVWX0JTRz15CisKKyMKKyMgSU8gU2NoZWR1bGVycworIworQ09ORklHX0lPU0NIRURfTk9PUD15CitDT05GSUdfSU9TQ0hFRF9BUz15CitDT05GSUdfSU9TQ0hFRF9ERUFETElORT15CitDT05GSUdfSU9TQ0hFRF9DRlE9eQorQ09ORklHX0RFRkFVTFRfQVM9eQorIyBDT05GSUdfREVGQVVMVF9ERUFETElORSBpcyBub3Qgc2V0CisjIENPTkZJR19ERUZBVUxUX0NGUSBpcyBub3Qgc2V0CisjIENPTkZJR19ERUZBVUxUX05PT1AgaXMgbm90IHNldAorQ09ORklHX0RFRkFVTFRfSU9TQ0hFRD0iYW50aWNpcGF0b3J5IgorQ09ORklHX0NMQVNTSUNfUkNVPXkKIAogIwogIyBQbGF0Zm9ybSBkZXBlbmRlbnQgc2V0dXAKQEAgLTg1LDYgKzEzMywyMiBAQAogQ09ORklHX01NVV9NT1RPUk9MQT15CiAjIENPTkZJR19NNjhLRlBVX0VNVSBpcyBub3Qgc2V0CiAjIENPTkZJR19BRFZBTkNFRCBpcyBub3Qgc2V0CitDT05GSUdfQVJDSF9ESVNDT05USUdNRU1fRU5BQkxFPXkKK0NPTkZJR19OT0RFU19TSElGVD0zCitDT05GSUdfU0VMRUNUX01FTU9SWV9NT0RFTD15CisjIENPTkZJR19GTEFUTUVNX01BTlVBTCBpcyBub3Qgc2V0CitDT05GSUdfRElTQ09OVElHTUVNX01BTlVBTD15CisjIENPTkZJR19TUEFSU0VNRU1fTUFOVUFMIGlzIG5vdCBzZXQKK0NPTkZJR19ESVNDT05USUdNRU09eQorQ09ORklHX0ZMQVRfTk9ERV9NRU1fTUFQPXkKK0NPTkZJR19ORUVEX01VTFRJUExFX05PREVTPXkKKyMgQ09ORklHX1NQQVJTRU1FTV9TVEFUSUMgaXMgbm90IHNldAorIyBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBfRU5BQkxFIGlzIG5vdCBzZXQKK0NPTkZJR19TUExJVF9QVExPQ0tfQ1BVUz00CisjIENPTkZJR19SRVNPVVJDRVNfNjRCSVQgaXMgbm90IHNldAorQ09ORklHX1pPTkVfRE1BX0ZMQUc9MQorQ09ORklHX0JPVU5DRT15CitDT05GSUdfVklSVF9UT19CVVM9eQogCiAjCiAjIEdlbmVyYWwgc2V0dXAKQEAgLTkzLDEzNCArMTU3LDExIEBACiBDT05GSUdfQklORk1UX0FPVVQ9bQogQ09ORklHX0JJTkZNVF9NSVNDPW0KIENPTkZJR19QUk9DX0hBUkRXQVJFPXkKK0NPTkZJR19aT05FX0RNQT15CisjIENPTkZJR19BUkNIX1NVUFBPUlRTX01TSSBpcyBub3Qgc2V0CiAKICMKLSMgRGV2aWNlIERyaXZlcnMKLSMKLQotIwotIyBHZW5lcmljIERyaXZlciBPcHRpb25zCi0jCi1DT05GSUdfU1RBTkRBTE9ORT15Ci1DT05GSUdfUFJFVkVOVF9GSVJNV0FSRV9CVUlMRD15Ci1DT05GSUdfRldfTE9BREVSPW0KLSMgQ09ORklHX0RFQlVHX0RSSVZFUiBpcyBub3Qgc2V0Ci0KLSMKLSMgTWVtb3J5IFRlY2hub2xvZ3kgRGV2aWNlcyAoTVREKQotIwotIyBDT05GSUdfTVREIGlzIG5vdCBzZXQKLQotIwotIyBQYXJhbGxlbCBwb3J0IHN1cHBvcnQKLSMKLSMgQ09ORklHX1BBUlBPUlQgaXMgbm90IHNldAotCi0jCi0jIFBsdWcgYW5kIFBsYXkgc3VwcG9ydAotIwotCi0jCi0jIEJsb2NrIGRldmljZXMKLSMKLSMgQ09ORklHX0JMS19ERVZfQ09XX0NPTU1PTiBpcyBub3Qgc2V0Ci1DT05GSUdfQkxLX0RFVl9MT09QPXkKLUNPTkZJR19CTEtfREVWX0NSWVBUT0xPT1A9bQotQ09ORklHX0JMS19ERVZfTkJEPW0KLUNPTkZJR19CTEtfREVWX1JBTT15Ci1DT05GSUdfQkxLX0RFVl9SQU1fQ09VTlQ9MTYKLUNPTkZJR19CTEtfREVWX1JBTV9TSVpFPTQwOTYKLUNPTkZJR19CTEtfREVWX0lOSVRSRD15Ci1DT05GSUdfSU5JVFJBTUZTX1NPVVJDRT0iIgotQ09ORklHX0NEUk9NX1BLVENEVkQ9bQotQ09ORklHX0NEUk9NX1BLVENEVkRfQlVGRkVSUz04Ci0jIENPTkZJR19DRFJPTV9QS1RDRFZEX1dDQUNIRSBpcyBub3Qgc2V0Ci0KLSMKLSMgSU8gU2NoZWR1bGVycwotIwotQ09ORklHX0lPU0NIRURfTk9PUD15Ci1DT05GSUdfSU9TQ0hFRF9BUz15Ci1DT05GSUdfSU9TQ0hFRF9ERUFETElORT15Ci1DT05GSUdfSU9TQ0hFRF9DRlE9eQotQ09ORklHX0FUQV9PVkVSX0VUSD1tCi0KLSMKLSMgQVRBL0FUQVBJL01GTS9STEwgc3VwcG9ydAotIwotIyBDT05GSUdfSURFIGlzIG5vdCBzZXQKLQotIwotIyBTQ1NJIGRldmljZSBzdXBwb3J0Ci0jCi1DT05GSUdfU0NTST15Ci1DT05GSUdfU0NTSV9QUk9DX0ZTPXkKLQotIwotIyBTQ1NJIHN1cHBvcnQgdHlwZSAoZGlzaywgdGFwZSwgQ0QtUk9NKQotIwotQ09ORklHX0JMS19ERVZfU0Q9eQotQ09ORklHX0NIUl9ERVZfU1Q9bQotIyBDT05GSUdfQ0hSX0RFVl9PU1NUIGlzIG5vdCBzZXQKLUNPTkZJR19CTEtfREVWX1NSPXkKLUNPTkZJR19CTEtfREVWX1NSX1ZFTkRPUj15Ci1DT05GSUdfQ0hSX0RFVl9TRz1tCi0KLSMKLSMgU29tZSBTQ1NJIGRldmljZXMgKGUuZy4gQ0QganVrZWJveCkgc3VwcG9ydCBtdWx0aXBsZSBMVU5zCi0jCi0jIENPTkZJR19TQ1NJX01VTFRJX0xVTiBpcyBub3Qgc2V0Ci1DT05GSUdfU0NTSV9DT05TVEFOVFM9eQotIyBDT05GSUdfU0NTSV9MT0dHSU5HIGlzIG5vdCBzZXQKLQotIwotIyBTQ1NJIFRyYW5zcG9ydCBBdHRyaWJ1dGVzCi0jCi0jIENPTkZJR19TQ1NJX1NQSV9BVFRSUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19TQ1NJX0ZDX0FUVFJTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NDU0lfSVNDU0lfQVRUUlMgaXMgbm90IHNldAotCi0jCi0jIFNDU0kgbG93LWxldmVsIGRyaXZlcnMKLSMKLSMgQ09ORklHX1NDU0lfU0FUQSBpcyBub3Qgc2V0Ci0jIENPTkZJR19TQ1NJX0RFQlVHIGlzIG5vdCBzZXQKLQotIwotIyBNdWx0aS1kZXZpY2Ugc3VwcG9ydCAoUkFJRCBhbmQgTFZNKQotIwotQ09ORklHX01EPXkKLUNPTkZJR19CTEtfREVWX01EPW0KLUNPTkZJR19NRF9MSU5FQVI9bQotQ09ORklHX01EX1JBSUQwPW0KLUNPTkZJR19NRF9SQUlEMT1tCi0jIENPTkZJR19NRF9SQUlEMTAgaXMgbm90IHNldAotQ09ORklHX01EX1JBSUQ1PW0KLUNPTkZJR19NRF9SQUlENj1tCi1DT05GSUdfTURfTVVMVElQQVRIPW0KLSMgQ09ORklHX01EX0ZBVUxUWSBpcyBub3Qgc2V0Ci1DT05GSUdfQkxLX0RFVl9ETT1tCi1DT05GSUdfRE1fQ1JZUFQ9bQotQ09ORklHX0RNX1NOQVBTSE9UPW0KLUNPTkZJR19ETV9NSVJST1I9bQotQ09ORklHX0RNX1pFUk89bQotQ09ORklHX0RNX01VTFRJUEFUSD1tCi1DT05GSUdfRE1fTVVMVElQQVRIX0VNQz1tCi0KLSMKLSMgRnVzaW9uIE1QVCBkZXZpY2Ugc3VwcG9ydAotIwotCi0jCi0jIElFRUUgMTM5NCAoRmlyZVdpcmUpIHN1cHBvcnQKLSMKLQotIwotIyBJMk8gZGV2aWNlIHN1cHBvcnQKLSMKLQotIwotIyBOZXR3b3JraW5nIHN1cHBvcnQKKyMgTmV0d29ya2luZwogIwogQ09ORklHX05FVD15CiAKQEAgLTIzMCwxMCArMTcxLDE3IEBACiBDT05GSUdfUEFDS0VUPXkKICMgQ09ORklHX1BBQ0tFVF9NTUFQIGlzIG5vdCBzZXQKIENPTkZJR19VTklYPXkKK0NPTkZJR19YRlJNPXkKKyMgQ09ORklHX1hGUk1fVVNFUiBpcyBub3Qgc2V0CisjIENPTkZJR19YRlJNX1NVQl9QT0xJQ1kgaXMgbm90IHNldAorQ09ORklHX1hGUk1fTUlHUkFURT15CisjIENPTkZJR19YRlJNX1NUQVRJU1RJQ1MgaXMgbm90IHNldAogQ09ORklHX05FVF9LRVk9eQorQ09ORklHX05FVF9LRVlfTUlHUkFURT15CiBDT05GSUdfSU5FVD15CiAjIENPTkZJR19JUF9NVUxUSUNBU1QgaXMgbm90IHNldAogIyBDT05GSUdfSVBfQURWQU5DRURfUk9VVEVSIGlzIG5vdCBzZXQKK0NPTkZJR19JUF9GSUJfSEFTSD15CiBDT05GSUdfSVBfUE5QPXkKIENPTkZJR19JUF9QTlBfREhDUD15CiBDT05GSUdfSVBfUE5QX0JPT1RQPXkKQEAgLTI0NSwxMjYgKzE5MywxODYgQEAKIENPTkZJR19JTkVUX0FIPW0KIENPTkZJR19JTkVUX0VTUD1tCiBDT05GSUdfSU5FVF9JUENPTVA9bQorQ09ORklHX0lORVRfWEZSTV9UVU5ORUw9bQogQ09ORklHX0lORVRfVFVOTkVMPW0KLUNPTkZJR19JUF9UQ1BESUFHPW0KLUNPTkZJR19JUF9UQ1BESUFHX0lQVjY9eQotCi0jCi0jIElQOiBWaXJ0dWFsIFNlcnZlciBDb25maWd1cmF0aW9uCi0jCitDT05GSUdfSU5FVF9YRlJNX01PREVfVFJBTlNQT1JUPW0KK0NPTkZJR19JTkVUX1hGUk1fTU9ERV9UVU5ORUw9bQorQ09ORklHX0lORVRfWEZSTV9NT0RFX0JFRVQ9bQorQ09ORklHX0lORVRfTFJPPW0KK0NPTkZJR19JTkVUX0RJQUc9bQorQ09ORklHX0lORVRfVENQX0RJQUc9bQorIyBDT05GSUdfVENQX0NPTkdfQURWQU5DRUQgaXMgbm90IHNldAorQ09ORklHX1RDUF9DT05HX0NVQklDPXkKK0NPTkZJR19ERUZBVUxUX1RDUF9DT05HPSJjdWJpYyIKKyMgQ09ORklHX1RDUF9NRDVTSUcgaXMgbm90IHNldAogIyBDT05GSUdfSVBfVlMgaXMgbm90IHNldAogQ09ORklHX0lQVjY9bQogQ09ORklHX0lQVjZfUFJJVkFDWT15CitDT05GSUdfSVBWNl9ST1VURVJfUFJFRj15CitDT05GSUdfSVBWNl9ST1VURV9JTkZPPXkKKyMgQ09ORklHX0lQVjZfT1BUSU1JU1RJQ19EQUQgaXMgbm90IHNldAogQ09ORklHX0lORVQ2X0FIPW0KIENPTkZJR19JTkVUNl9FU1A9bQogQ09ORklHX0lORVQ2X0lQQ09NUD1tCisjIENPTkZJR19JUFY2X01JUDYgaXMgbm90IHNldAorQ09ORklHX0lORVQ2X1hGUk1fVFVOTkVMPW0KIENPTkZJR19JTkVUNl9UVU5ORUw9bQorQ09ORklHX0lORVQ2X1hGUk1fTU9ERV9UUkFOU1BPUlQ9bQorQ09ORklHX0lORVQ2X1hGUk1fTU9ERV9UVU5ORUw9bQorQ09ORklHX0lORVQ2X1hGUk1fTU9ERV9CRUVUPW0KK0NPTkZJR19JTkVUNl9YRlJNX01PREVfUk9VVEVPUFRJTUlaQVRJT049bQorQ09ORklHX0lQVjZfU0lUPW0KIENPTkZJR19JUFY2X1RVTk5FTD1tCisjIENPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFUyBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRXT1JLX1NFQ01BUksgaXMgbm90IHNldAogQ09ORklHX05FVEZJTFRFUj15CiAjIENPTkZJR19ORVRGSUxURVJfREVCVUcgaXMgbm90IHNldAorQ09ORklHX05FVEZJTFRFUl9BRFZBTkNFRD15CisKKyMKKyMgQ29yZSBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvbgorIworQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LPW0KK0NPTkZJR19ORVRGSUxURVJfTkVUTElOS19RVUVVRT1tCitDT05GSUdfTkVURklMVEVSX05FVExJTktfTE9HPW0KK0NPTkZJR19ORl9DT05OVFJBQ0s9bQorQ09ORklHX05GX0NUX0FDQ1Q9eQorQ09ORklHX05GX0NPTk5UUkFDS19NQVJLPXkKKyMgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFMgaXMgbm90IHNldAorQ09ORklHX05GX0NUX1BST1RPX0dSRT1tCitDT05GSUdfTkZfQ1RfUFJPVE9fU0NUUD1tCitDT05GSUdfTkZfQ1RfUFJPVE9fVURQTElURT1tCitDT05GSUdfTkZfQ09OTlRSQUNLX0FNQU5EQT1tCitDT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tCitDT05GSUdfTkZfQ09OTlRSQUNLX0gzMjM9bQorQ09ORklHX05GX0NPTk5UUkFDS19JUkM9bQorQ09ORklHX05GX0NPTk5UUkFDS19ORVRCSU9TX05TPW0KK0NPTkZJR19ORl9DT05OVFJBQ0tfUFBUUD1tCitDT05GSUdfTkZfQ09OTlRSQUNLX1NBTkU9bQorQ09ORklHX05GX0NPTk5UUkFDS19TSVA9bQorQ09ORklHX05GX0NPTk5UUkFDS19URlRQPW0KKyMgQ09ORklHX05GX0NUX05FVExJTksgaXMgbm90IHNldAorQ09ORklHX05FVEZJTFRFUl9YVEFCTEVTPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX0NMQVNTSUZZPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX0NPTk5NQVJLPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX0RTQ1A9bQorQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfTUFSSz1tCitDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9ORlFVRVVFPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX05GTE9HPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX05PVFJBQ0s9bQorQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfUkFURUVTVD1tCitDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9UUkFDRT1tCitDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9UQ1BNU1M9bQorQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfVENQT1BUU1RSSVA9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9DT01NRU5UPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkJZVEVTPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkxJTUlUPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfQ09OTk1BUks9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9DT05OVFJBQ0s9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9EQ0NQPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfRFNDUD1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0VTUD1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0hFTFBFUj1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0lQUkFOR0U9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9MRU5HVEg9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9MSU1JVD1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX01BQz1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX01BUks9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9PV05FUj1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1BPTElDWT1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX01VTFRJUE9SVD1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1BLVFRZUEU9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9RVU9UQT1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1JBVEVFU1Q9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9SRUFMTT1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1NDVFA9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9TVEFURT1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1NUQVRJU1RJQz1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1NUUklORz1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1RDUE1TUz1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1RJTUU9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9VMzI9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9IQVNITElNSVQ9bQogCiAjCiAjIElQOiBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvbgogIwotQ09ORklHX0lQX05GX0NPTk5UUkFDSz1tCi0jIENPTkZJR19JUF9ORl9DVF9BQ0NUIGlzIG5vdCBzZXQKLUNPTkZJR19JUF9ORl9DT05OVFJBQ0tfTUFSSz15Ci0jIENPTkZJR19JUF9ORl9DVF9QUk9UT19TQ1RQIGlzIG5vdCBzZXQKLUNPTkZJR19JUF9ORl9GVFA9bQotQ09ORklHX0lQX05GX0lSQz1tCi1DT05GSUdfSVBfTkZfVEZUUD1tCi1DT05GSUdfSVBfTkZfQU1BTkRBPW0KK0NPTkZJR19ORl9DT05OVFJBQ0tfSVBWND1tCitDT05GSUdfTkZfQ09OTlRSQUNLX1BST0NfQ09NUEFUPXkKIENPTkZJR19JUF9ORl9RVUVVRT1tCiBDT05GSUdfSVBfTkZfSVBUQUJMRVM9bQotQ09ORklHX0lQX05GX01BVENIX0xJTUlUPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9JUFJBTkdFPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9NQUM9bQotQ09ORklHX0lQX05GX01BVENIX1BLVFRZUEU9bQotQ09ORklHX0lQX05GX01BVENIX01BUks9bQotQ09ORklHX0lQX05GX01BVENIX01VTFRJUE9SVD1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfVE9TPW0KIENPTkZJR19JUF9ORl9NQVRDSF9SRUNFTlQ9bQogQ09ORklHX0lQX05GX01BVENIX0VDTj1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfRFNDUD1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfQUhfRVNQPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9MRU5HVEg9bQorQ09ORklHX0lQX05GX01BVENIX0FIPW0KIENPTkZJR19JUF9ORl9NQVRDSF9UVEw9bQotQ09ORklHX0lQX05GX01BVENIX1RDUE1TUz1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfSEVMUEVSPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9TVEFURT1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfQ09OTlRSQUNLPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9PV05FUj1tCiBDT05GSUdfSVBfTkZfTUFUQ0hfQUREUlRZUEU9bQotQ09ORklHX0lQX05GX01BVENIX1JFQUxNPW0KLSMgQ09ORklHX0lQX05GX01BVENIX1NDVFAgaXMgbm90IHNldAotIyBDT05GSUdfSVBfTkZfTUFUQ0hfQ09NTUVOVCBpcyBub3Qgc2V0Ci1DT05GSUdfSVBfTkZfTUFUQ0hfQ09OTk1BUks9bQotQ09ORklHX0lQX05GX01BVENIX0hBU0hMSU1JVD1tCiBDT05GSUdfSVBfTkZfRklMVEVSPW0KIENPTkZJR19JUF9ORl9UQVJHRVRfUkVKRUNUPW0KIENPTkZJR19JUF9ORl9UQVJHRVRfTE9HPW0KIENPTkZJR19JUF9ORl9UQVJHRVRfVUxPRz1tCi1DT05GSUdfSVBfTkZfVEFSR0VUX1RDUE1TUz1tCi1DT05GSUdfSVBfTkZfTkFUPW0KLUNPTkZJR19JUF9ORl9OQVRfTkVFREVEPXkKK0NPTkZJR19ORl9OQVQ9bQorQ09ORklHX05GX05BVF9ORUVERUQ9eQogQ09ORklHX0lQX05GX1RBUkdFVF9NQVNRVUVSQURFPW0KIENPTkZJR19JUF9ORl9UQVJHRVRfUkVESVJFQ1Q9bQogQ09ORklHX0lQX05GX1RBUkdFVF9ORVRNQVA9bQotQ09ORklHX0lQX05GX1RBUkdFVF9TQU1FPW0KLUNPTkZJR19JUF9ORl9OQVRfU05NUF9CQVNJQz1tCi1DT05GSUdfSVBfTkZfTkFUX0lSQz1tCi1DT05GSUdfSVBfTkZfTkFUX0ZUUD1tCi1DT05GSUdfSVBfTkZfTkFUX1RGVFA9bQotQ09ORklHX0lQX05GX05BVF9BTUFOREE9bQorQ09ORklHX05GX05BVF9TTk1QX0JBU0lDPW0KK0NPTkZJR19ORl9OQVRfUFJPVE9fR1JFPW0KK0NPTkZJR19ORl9OQVRfRlRQPW0KK0NPTkZJR19ORl9OQVRfSVJDPW0KK0NPTkZJR19ORl9OQVRfVEZUUD1tCitDT05GSUdfTkZfTkFUX0FNQU5EQT1tCitDT05GSUdfTkZfTkFUX1BQVFA9bQorQ09ORklHX05GX05BVF9IMzIzPW0KK0NPTkZJR19ORl9OQVRfU0lQPW0KIENPTkZJR19JUF9ORl9NQU5HTEU9bQotQ09ORklHX0lQX05GX1RBUkdFVF9UT1M9bQogQ09ORklHX0lQX05GX1RBUkdFVF9FQ049bQotQ09ORklHX0lQX05GX1RBUkdFVF9EU0NQPW0KLUNPTkZJR19JUF9ORl9UQVJHRVRfTUFSSz1tCi1DT05GSUdfSVBfTkZfVEFSR0VUX0NMQVNTSUZZPW0KLUNPTkZJR19JUF9ORl9UQVJHRVRfQ09OTk1BUks9bQotIyBDT05GSUdfSVBfTkZfVEFSR0VUX0NMVVNURVJJUCBpcyBub3Qgc2V0CitDT05GSUdfSVBfTkZfVEFSR0VUX1RUTD1tCitDT05GSUdfSVBfTkZfVEFSR0VUX0NMVVNURVJJUD1tCiBDT05GSUdfSVBfTkZfUkFXPW0KLUNPTkZJR19JUF9ORl9UQVJHRVRfTk9UUkFDSz1tCiBDT05GSUdfSVBfTkZfQVJQVEFCTEVTPW0KIENPTkZJR19JUF9ORl9BUlBGSUxURVI9bQogQ09ORklHX0lQX05GX0FSUF9NQU5HTEU9bQogCiAjCi0jIElQdjY6IE5ldGZpbHRlciBDb25maWd1cmF0aW9uIChFWFBFUklNRU5UQUwpCisjIElQdjY6IE5ldGZpbHRlciBDb25maWd1cmF0aW9uCiAjCitDT05GSUdfTkZfQ09OTlRSQUNLX0lQVjY9bQogQ09ORklHX0lQNl9ORl9RVUVVRT1tCiBDT05GSUdfSVA2X05GX0lQVEFCTEVTPW0KLUNPTkZJR19JUDZfTkZfTUFUQ0hfTElNSVQ9bQotQ09ORklHX0lQNl9ORl9NQVRDSF9NQUM9bQogQ09ORklHX0lQNl9ORl9NQVRDSF9SVD1tCiBDT05GSUdfSVA2X05GX01BVENIX09QVFM9bQogQ09ORklHX0lQNl9ORl9NQVRDSF9GUkFHPW0KIENPTkZJR19JUDZfTkZfTUFUQ0hfSEw9bQotQ09ORklHX0lQNl9ORl9NQVRDSF9NVUxUSVBPUlQ9bQotQ09ORklHX0lQNl9ORl9NQVRDSF9PV05FUj1tCi1DT05GSUdfSVA2X05GX01BVENIX01BUks9bQogQ09ORklHX0lQNl9ORl9NQVRDSF9JUFY2SEVBREVSPW0KLUNPTkZJR19JUDZfTkZfTUFUQ0hfQUhFU1A9bQotQ09ORklHX0lQNl9ORl9NQVRDSF9MRU5HVEg9bQorQ09ORklHX0lQNl9ORl9NQVRDSF9BSD1tCitDT05GSUdfSVA2X05GX01BVENIX01IPW0KIENPTkZJR19JUDZfTkZfTUFUQ0hfRVVJNjQ9bQogQ09ORklHX0lQNl9ORl9GSUxURVI9bQogQ09ORklHX0lQNl9ORl9UQVJHRVRfTE9HPW0KK0NPTkZJR19JUDZfTkZfVEFSR0VUX1JFSkVDVD1tCiBDT05GSUdfSVA2X05GX01BTkdMRT1tCi1DT05GSUdfSVA2X05GX1RBUkdFVF9NQVJLPW0KK0NPTkZJR19JUDZfTkZfVEFSR0VUX0hMPW0KIENPTkZJR19JUDZfTkZfUkFXPW0KLUNPTkZJR19YRlJNPXkKLUNPTkZJR19YRlJNX1VTRVI9bQorQ09ORklHX0lQX0RDQ1A9bQorQ09ORklHX0lORVRfRENDUF9ESUFHPW0KK0NPTkZJR19JUF9EQ0NQX0FDS1ZFQz15CiAKICMKLSMgU0NUUCBDb25maWd1cmF0aW9uIChFWFBFUklNRU5UQUwpCisjIERDQ1AgQ0NJRHMgQ29uZmlndXJhdGlvbiAoRVhQRVJJTUVOVEFMKQogIworQ09ORklHX0lQX0RDQ1BfQ0NJRDI9bQorIyBDT05GSUdfSVBfRENDUF9DQ0lEMl9ERUJVRyBpcyBub3Qgc2V0CitDT05GSUdfSVBfRENDUF9DQ0lEMz1tCisjIENPTkZJR19JUF9EQ0NQX0NDSUQzX0RFQlVHIGlzIG5vdCBzZXQKK0NPTkZJR19JUF9EQ0NQX0NDSUQzX1JUTz0xMDAKK0NPTkZJR19JUF9EQ0NQX1RGUkNfTElCPW0KIENPTkZJR19JUF9TQ1RQPW0KICMgQ09ORklHX1NDVFBfREJHX01TRyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1RQX0RCR19PQkpDTlQgaXMgbm90IHNldAogIyBDT05GSUdfU0NUUF9ITUFDX05PTkUgaXMgbm90IHNldAogIyBDT05GSUdfU0NUUF9ITUFDX1NIQTEgaXMgbm90IHNldAogQ09ORklHX1NDVFBfSE1BQ19NRDU9eQorIyBDT05GSUdfVElQQyBpcyBub3Qgc2V0CiAjIENPTkZJR19BVE0gaXMgbm90IHNldAogIyBDT05GSUdfQlJJREdFIGlzIG5vdCBzZXQKICMgQ09ORklHX1ZMQU5fODAyMVEgaXMgbm90IHNldApAQCAtMzc2LDEzICszODQsOCBAQAogIyBDT05GSUdfREVWX0FQUExFVEFMSyBpcyBub3Qgc2V0CiAjIENPTkZJR19YMjUgaXMgbm90IHNldAogIyBDT05GSUdfTEFQQiBpcyBub3Qgc2V0Ci0jIENPTkZJR19ORVRfRElWRVJUIGlzIG5vdCBzZXQKICMgQ09ORklHX0VDT05FVCBpcyBub3Qgc2V0CiAjIENPTkZJR19XQU5fUk9VVEVSIGlzIG5vdCBzZXQKLQotIwotIyBRb1MgYW5kL29yIGZhaXIgcXVldWVpbmcKLSMKICMgQ09ORklHX05FVF9TQ0hFRCBpcyBub3Qgc2V0CiBDT05GSUdfTkVUX0NMU19ST1VURT15CiAKQEAgLTM5MCw3NiArMzkzLDE4NiBAQAogIyBOZXR3b3JrIHRlc3RpbmcKICMKICMgQ09ORklHX05FVF9QS1RHRU4gaXMgbm90IHNldAotQ09ORklHX05FVFBPTEw9eQotIyBDT05GSUdfTkVUUE9MTF9SWCBpcyBub3Qgc2V0Ci0jIENPTkZJR19ORVRQT0xMX1RSQVAgaXMgbm90IHNldAotQ09ORklHX05FVF9QT0xMX0NPTlRST0xMRVI9eQogIyBDT05GSUdfSEFNUkFESU8gaXMgbm90IHNldAorIyBDT05GSUdfQ0FOIGlzIG5vdCBzZXQKICMgQ09ORklHX0lSREEgaXMgbm90IHNldAogIyBDT05GSUdfQlQgaXMgbm90IHNldAorIyBDT05GSUdfQUZfUlhSUEMgaXMgbm90IHNldAorCisjCisjIFdpcmVsZXNzCisjCisjIENPTkZJR19DRkc4MDIxMSBpcyBub3Qgc2V0CitDT05GSUdfV0lSRUxFU1NfRVhUPXkKKyMgQ09ORklHX01BQzgwMjExIGlzIG5vdCBzZXQKK0NPTkZJR19JRUVFODAyMTE9bQorIyBDT05GSUdfSUVFRTgwMjExX0RFQlVHIGlzIG5vdCBzZXQKK0NPTkZJR19JRUVFODAyMTFfQ1JZUFRfV0VQPW0KK0NPTkZJR19JRUVFODAyMTFfQ1JZUFRfQ0NNUD1tCitDT05GSUdfSUVFRTgwMjExX0NSWVBUX1RLSVA9bQorQ09ORklHX0lFRUU4MDIxMV9TT0ZUTUFDPW0KKyMgQ09ORklHX0lFRUU4MDIxMV9TT0ZUTUFDX0RFQlVHIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JGS0lMTCBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRfOVAgaXMgbm90IHNldAorCisjCisjIERldmljZSBEcml2ZXJzCisjCisKKyMKKyMgR2VuZXJpYyBEcml2ZXIgT3B0aW9ucworIworQ09ORklHX1VFVkVOVF9IRUxQRVJfUEFUSD0iL3NiaW4vaG90cGx1ZyIKK0NPTkZJR19TVEFOREFMT05FPXkKK0NPTkZJR19QUkVWRU5UX0ZJUk1XQVJFX0JVSUxEPXkKK0NPTkZJR19GV19MT0FERVI9bQorIyBDT05GSUdfU1lTX0hZUEVSVklTT1IgaXMgbm90IHNldAorQ09ORklHX0NPTk5FQ1RPUj1tCisjIENPTkZJR19NVEQgaXMgbm90IHNldAorIyBDT05GSUdfUEFSUE9SVCBpcyBub3Qgc2V0CitDT05GSUdfQkxLX0RFVj15CisjIENPTkZJR19CTEtfREVWX0NPV19DT01NT04gaXMgbm90IHNldAorQ09ORklHX0JMS19ERVZfTE9PUD15CitDT05GSUdfQkxLX0RFVl9DUllQVE9MT09QPW0KK0NPTkZJR19CTEtfREVWX05CRD1tCitDT05GSUdfQkxLX0RFVl9SQU09eQorQ09ORklHX0JMS19ERVZfUkFNX0NPVU5UPTE2CitDT05GSUdfQkxLX0RFVl9SQU1fU0laRT00MDk2CisjIENPTkZJR19CTEtfREVWX1hJUCBpcyBub3Qgc2V0CitDT05GSUdfQ0RST01fUEtUQ0RWRD1tCitDT05GSUdfQ0RST01fUEtUQ0RWRF9CVUZGRVJTPTgKKyMgQ09ORklHX0NEUk9NX1BLVENEVkRfV0NBQ0hFIGlzIG5vdCBzZXQKK0NPTkZJR19BVEFfT1ZFUl9FVEg9bQorQ09ORklHX01JU0NfREVWSUNFUz15CisjIENPTkZJR19FRVBST01fOTNDWDYgaXMgbm90IHNldAorIyBDT05GSUdfRU5DTE9TVVJFX1NFUlZJQ0VTIGlzIG5vdCBzZXQKK0NPTkZJR19IQVZFX0lERT15CisjIENPTkZJR19JREUgaXMgbm90IHNldAorCisjCisjIFNDU0kgZGV2aWNlIHN1cHBvcnQKKyMKK0NPTkZJR19SQUlEX0FUVFJTPW0KK0NPTkZJR19TQ1NJPXkKK0NPTkZJR19TQ1NJX0RNQT15CitDT05GSUdfU0NTSV9UR1Q9bQorIyBDT05GSUdfU0NTSV9ORVRMSU5LIGlzIG5vdCBzZXQKK0NPTkZJR19TQ1NJX1BST0NfRlM9eQorCisjCisjIFNDU0kgc3VwcG9ydCB0eXBlIChkaXNrLCB0YXBlLCBDRC1ST00pCisjCitDT05GSUdfQkxLX0RFVl9TRD15CitDT05GSUdfQ0hSX0RFVl9TVD1tCitDT05GSUdfQ0hSX0RFVl9PU1NUPW0KK0NPTkZJR19CTEtfREVWX1NSPXkKK0NPTkZJR19CTEtfREVWX1NSX1ZFTkRPUj15CitDT05GSUdfQ0hSX0RFVl9TRz1tCisjIENPTkZJR19DSFJfREVWX1NDSCBpcyBub3Qgc2V0CisKKyMKKyMgU29tZSBTQ1NJIGRldmljZXMgKGUuZy4gQ0QganVrZWJveCkgc3VwcG9ydCBtdWx0aXBsZSBMVU5zCisjCisjIENPTkZJR19TQ1NJX01VTFRJX0xVTiBpcyBub3Qgc2V0CitDT05GSUdfU0NTSV9DT05TVEFOVFM9eQorIyBDT05GSUdfU0NTSV9MT0dHSU5HIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDU0lfU0NBTl9BU1lOQyBpcyBub3Qgc2V0CitDT05GSUdfU0NTSV9XQUlUX1NDQU49bQorCisjCisjIFNDU0kgVHJhbnNwb3J0cworIworQ09ORklHX1NDU0lfU1BJX0FUVFJTPXkKKyMgQ09ORklHX1NDU0lfRkNfQVRUUlMgaXMgbm90IHNldAorQ09ORklHX1NDU0lfSVNDU0lfQVRUUlM9bQorQ09ORklHX1NDU0lfU0FTX0FUVFJTPW0KK0NPTkZJR19TQ1NJX1NBU19MSUJTQVM9bQorQ09ORklHX1NDU0lfU0FTX0hPU1RfU01QPXkKKyMgQ09ORklHX1NDU0lfU0FTX0xJQlNBU19ERUJVRyBpcyBub3Qgc2V0CitDT05GSUdfU0NTSV9TUlBfQVRUUlM9bQorQ09ORklHX1NDU0lfU1JQX1RHVF9BVFRSUz15CitDT05GSUdfU0NTSV9MT1dMRVZFTD15CitDT05GSUdfSVNDU0lfVENQPW0KK0NPTkZJR181M0M3MDBfQkVfQlVTPXkKKyMgQ09ORklHX1NDU0lfREVCVUcgaXMgbm90IHNldAorQ09ORklHX0JWTUU2MDAwX1NDU0k9eQorQ09ORklHX01EPXkKK0NPTkZJR19CTEtfREVWX01EPW0KK0NPTkZJR19NRF9MSU5FQVI9bQorQ09ORklHX01EX1JBSUQwPW0KK0NPTkZJR19NRF9SQUlEMT1tCisjIENPTkZJR19NRF9SQUlEMTAgaXMgbm90IHNldAorQ09ORklHX01EX1JBSUQ0NTY9bQorQ09ORklHX01EX1JBSUQ1X1JFU0hBUEU9eQorQ09ORklHX01EX01VTFRJUEFUSD1tCisjIENPTkZJR19NRF9GQVVMVFkgaXMgbm90IHNldAorQ09ORklHX0JMS19ERVZfRE09bQorIyBDT05GSUdfRE1fREVCVUcgaXMgbm90IHNldAorQ09ORklHX0RNX0NSWVBUPW0KK0NPTkZJR19ETV9TTkFQU0hPVD1tCitDT05GSUdfRE1fTUlSUk9SPW0KK0NPTkZJR19ETV9aRVJPPW0KK0NPTkZJR19ETV9NVUxUSVBBVEg9bQorQ09ORklHX0RNX01VTFRJUEFUSF9FTUM9bQorQ09ORklHX0RNX01VTFRJUEFUSF9SREFDPW0KK0NPTkZJR19ETV9NVUxUSVBBVEhfSFA9bQorIyBDT05GSUdfRE1fREVMQVkgaXMgbm90IHNldAorQ09ORklHX0RNX1VFVkVOVD15CiBDT05GSUdfTkVUREVWSUNFUz15CisjIENPTkZJR19ORVRERVZJQ0VTX01VTFRJUVVFVUUgaXMgbm90IHNldAogQ09ORklHX0RVTU1ZPW0KICMgQ09ORklHX0JPTkRJTkcgaXMgbm90IHNldAorQ09ORklHX01BQ1ZMQU49bQogQ09ORklHX0VRVUFMSVpFUj1tCiAjIENPTkZJR19UVU4gaXMgbm90IHNldAotCi0jCi0jIEV0aGVybmV0ICgxMCBvciAxMDBNYml0KQotIworQ09ORklHX1ZFVEg9bQorIyBDT05GSUdfUEhZTElCIGlzIG5vdCBzZXQKIENPTkZJR19ORVRfRVRIRVJORVQ9eQotQ09ORklHX01JST1tCisjIENPTkZJR19NSUkgaXMgbm90IHNldAogQ09ORklHX0JWTUU2MDAwX05FVD15CisjIENPTkZJR19JQk1fTkVXX0VNQUNfWk1JSSBpcyBub3Qgc2V0CisjIENPTkZJR19JQk1fTkVXX0VNQUNfUkdNSUkgaXMgbm90IHNldAorIyBDT05GSUdfSUJNX05FV19FTUFDX1RBSCBpcyBub3Qgc2V0CisjIENPTkZJR19JQk1fTkVXX0VNQUNfRU1BQzQgaXMgbm90IHNldAorIyBDT05GSUdfQjQ0IGlzIG5vdCBzZXQKKyMgQ09ORklHX05FVERFVl8xMDAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX05FVERFVl8xMDAwMCBpcyBub3Qgc2V0CiAKICMKLSMgRXRoZXJuZXQgKDEwMDAgTWJpdCkKKyMgV2lyZWxlc3MgTEFOCiAjCi0KLSMKLSMgRXRoZXJuZXQgKDEwMDAwIE1iaXQpCi0jCi0KLSMKLSMgVG9rZW4gUmluZyBkZXZpY2VzCi0jCi0KLSMKLSMgV2lyZWxlc3MgTEFOIChub24taGFtcmFkaW8pCi0jCi0jIENPTkZJR19ORVRfUkFESU8gaXMgbm90IHNldAotCi0jCi0jIFdhbiBpbnRlcmZhY2VzCi0jCisjIENPTkZJR19XTEFOX1BSRTgwMjExIGlzIG5vdCBzZXQKKyMgQ09ORklHX1dMQU5fODAyMTEgaXMgbm90IHNldAogIyBDT05GSUdfV0FOIGlzIG5vdCBzZXQKIENPTkZJR19QUFA9bQogIyBDT05GSUdfUFBQX01VTFRJTElOSyBpcyBub3Qgc2V0Ci0jIENPTkZJR19QUFBfRklMVEVSIGlzIG5vdCBzZXQKK0NPTkZJR19QUFBfRklMVEVSPXkKIENPTkZJR19QUFBfQVNZTkM9bQogQ09ORklHX1BQUF9TWU5DX1RUWT1tCiBDT05GSUdfUFBQX0RFRkxBVEU9bQogQ09ORklHX1BQUF9CU0RDT01QPW0KK0NPTkZJR19QUFBfTVBQRT1tCiBDT05GSUdfUFBQT0U9bQorQ09ORklHX1BQUE9MMlRQPW0KIENPTkZJR19TTElQPW0KIENPTkZJR19TTElQX0NPTVBSRVNTRUQ9eQorQ09ORklHX1NMSEM9bQogQ09ORklHX1NMSVBfU01BUlQ9eQogQ09ORklHX1NMSVBfTU9ERV9TTElQNj15Ci1DT05GSUdfU0hBUEVSPW0KIENPTkZJR19ORVRDT05TT0xFPW0KLQotIwotIyBJU0ROIHN1YnN5c3RlbQotIworQ09ORklHX05FVENPTlNPTEVfRFlOQU1JQz15CitDT05GSUdfTkVUUE9MTD15CisjIENPTkZJR19ORVRQT0xMX1RSQVAgaXMgbm90IHNldAorQ09ORklHX05FVF9QT0xMX0NPTlRST0xMRVI9eQogIyBDT05GSUdfSVNETiBpcyBub3Qgc2V0Ci0KLSMKLSMgVGVsZXBob255IFN1cHBvcnQKLSMKICMgQ09ORklHX1BIT05FIGlzIG5vdCBzZXQKIAogIwogIyBJbnB1dCBkZXZpY2Ugc3VwcG9ydAogIwogQ09ORklHX0lOUFVUPXkKK0NPTkZJR19JTlBVVF9GRl9NRU1MRVNTPW0KKyMgQ09ORklHX0lOUFVUX1BPTExERVYgaXMgbm90IHNldAogCiAjCiAjIFVzZXJsYW5kIGludGVyZmFjZXMKQEAgLTQ2OSw3ICs1ODIsNiBAQAogQ09ORklHX0lOUFVUX01PVVNFREVWX1NDUkVFTl9YPTEwMjQKIENPTkZJR19JTlBVVF9NT1VTRURFVl9TQ1JFRU5fWT03NjgKICMgQ09ORklHX0lOUFVUX0pPWURFViBpcyBub3Qgc2V0Ci0jIENPTkZJR19JTlBVVF9UU0RFViBpcyBub3Qgc2V0CiAjIENPTkZJR19JTlBVVF9FVkRFViBpcyBub3Qgc2V0CiAjIENPTkZJR19JTlBVVF9FVkJVRyBpcyBub3Qgc2V0CiAKQEAgLTQ4MiwxMSArNTk0LDE5IEBACiAjIENPTkZJR19LRVlCT0FSRF9MS0tCRCBpcyBub3Qgc2V0CiAjIENPTkZJR19LRVlCT0FSRF9YVEtCRCBpcyBub3Qgc2V0CiAjIENPTkZJR19LRVlCT0FSRF9ORVdUT04gaXMgbm90IHNldAorIyBDT05GSUdfS0VZQk9BUkRfU1RPV0FXQVkgaXMgbm90IHNldAogQ09ORklHX0lOUFVUX01PVVNFPXkKIENPTkZJR19NT1VTRV9QUzI9bQorQ09ORklHX01PVVNFX1BTMl9BTFBTPXkKK0NPTkZJR19NT1VTRV9QUzJfTE9HSVBTMlBQPXkKK0NPTkZJR19NT1VTRV9QUzJfU1lOQVBUSUNTPXkKK0NPTkZJR19NT1VTRV9QUzJfTElGRUJPT0s9eQorQ09ORklHX01PVVNFX1BTMl9UUkFDS1BPSU5UPXkKKyMgQ09ORklHX01PVVNFX1BTMl9UT1VDSEtJVCBpcyBub3Qgc2V0CiBDT05GSUdfTU9VU0VfU0VSSUFMPW0KICMgQ09ORklHX01PVVNFX1ZTWFhYQUEgaXMgbm90IHNldAogIyBDT05GSUdfSU5QVVRfSk9ZU1RJQ0sgaXMgbm90IHNldAorIyBDT05GSUdfSU5QVVRfVEFCTEVUIGlzIG5vdCBzZXQKICMgQ09ORklHX0lOUFVUX1RPVUNIU0NSRUVOIGlzIG5vdCBzZXQKICMgQ09ORklHX0lOUFVUX01JU0MgaXMgbm90IHNldAogCkBAIC00OTQsNyArNjE0LDcgQEAKICMgSGFyZHdhcmUgSS9PIHBvcnRzCiAjCiBDT05GSUdfU0VSSU89bQotQ09ORklHX1NFUklPX1NFUlBPUlQ9bQorIyBDT05GSUdfU0VSSU9fU0VSUE9SVCBpcyBub3Qgc2V0CiBDT05GSUdfU0VSSU9fTElCUFMyPW0KICMgQ09ORklHX1NFUklPX1JBVyBpcyBub3Qgc2V0CiAjIENPTkZJR19HQU1FUE9SVCBpcyBub3Qgc2V0CkBAIC01MDUsNiArNjI1LDcgQEAKIENPTkZJR19WVD15CiBDT05GSUdfVlRfQ09OU09MRT15CiBDT05GSUdfSFdfQ09OU09MRT15CitDT05GSUdfVlRfSFdfQ09OU09MRV9CSU5ESU5HPXkKICMgQ09ORklHX1NFUklBTF9OT05TVEFOREFSRCBpcyBub3Qgc2V0CiAKICMKQEAgLTUxOCw1OSArNjM5LDU2IEBACiBDT05GSUdfVU5JWDk4X1BUWVM9eQogQ09ORklHX0xFR0FDWV9QVFlTPXkKIENPTkZJR19MRUdBQ1lfUFRZX0NPVU5UPTI1NgotCi0jCi0jIElQTUkKLSMKICMgQ09ORklHX0lQTUlfSEFORExFUiBpcyBub3Qgc2V0Ci0KLSMKLSMgV2F0Y2hkb2cgQ2FyZHMKLSMKLSMgQ09ORklHX1dBVENIRE9HIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hXX1JBTkRPTSBpcyBub3Qgc2V0CiBDT05GSUdfR0VOX1JUQz1tCiBDT05GSUdfR0VOX1JUQ19YPXkKLSMgQ09ORklHX0RUTEsgaXMgbm90IHNldAogIyBDT05GSUdfUjM5NjQgaXMgbm90IHNldAotCi0jCi0jIEZ0YXBlLCB0aGUgZmxvcHB5IHRhcGUgZGV2aWNlIGRyaXZlcgotIwotIyBDT05GSUdfRFJNIGlzIG5vdCBzZXQKICMgQ09ORklHX1JBV19EUklWRVIgaXMgbm90IHNldAotCi0jCi0jIFRQTSBkZXZpY2VzCi0jCi0KLSMKLSMgSTJDIHN1cHBvcnQKLSMKKyMgQ09ORklHX1RDR19UUE0gaXMgbm90IHNldAogIyBDT05GSUdfSTJDIGlzIG5vdCBzZXQKIAogIwotIyBEYWxsYXMncyAxLXdpcmUgYnVzCisjIFNQSSBzdXBwb3J0CiAjCisjIENPTkZJR19TUEkgaXMgbm90IHNldAorIyBDT05GSUdfU1BJX01BU1RFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19XMSBpcyBub3Qgc2V0CisjIENPTkZJR19QT1dFUl9TVVBQTFkgaXMgbm90IHNldAorIyBDT05GSUdfSFdNT04gaXMgbm90IHNldAorIyBDT05GSUdfVEhFUk1BTCBpcyBub3Qgc2V0CisjIENPTkZJR19XQVRDSERPRyBpcyBub3Qgc2V0CiAKICMKLSMgTWlzYyBkZXZpY2VzCisjIFNvbmljcyBTaWxpY29uIEJhY2twbGFuZQogIworQ09ORklHX1NTQl9QT1NTSUJMRT15CisjIENPTkZJR19TU0IgaXMgbm90IHNldAorCisjCisjIE11bHRpZnVuY3Rpb24gZGV2aWNlIGRyaXZlcnMKKyMKKyMgQ09ORklHX01GRF9TTTUwMSBpcyBub3Qgc2V0CiAKICMKICMgTXVsdGltZWRpYSBkZXZpY2VzCiAjCiAjIENPTkZJR19WSURFT19ERVYgaXMgbm90IHNldAotCi0jCi0jIERpZ2l0YWwgVmlkZW8gQnJvYWRjYXN0aW5nIERldmljZXMKLSMKLSMgQ09ORklHX0RWQiBpcyBub3Qgc2V0CisjIENPTkZJR19EVkJfQ09SRSBpcyBub3Qgc2V0CisjIENPTkZJR19EQUIgaXMgbm90IHNldAogCiAjCiAjIEdyYXBoaWNzIHN1cHBvcnQKICMKKyMgQ09ORklHX1ZHQVNUQVRFIGlzIG5vdCBzZXQKKyMgQ09ORklHX1ZJREVPX09VVFBVVF9DT05UUk9MIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZCIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JBQ0tMSUdIVF9MQ0RfU1VQUE9SVCBpcyBub3Qgc2V0CisKKyMKKyMgRGlzcGxheSBkZXZpY2Ugc3VwcG9ydAorIworIyBDT05GSUdfRElTUExBWV9TVVBQT1JUIGlzIG5vdCBzZXQKIAogIwogIyBDb25zb2xlIGRpc3BsYXkgZHJpdmVyIHN1cHBvcnQKQEAgLTU4MSwyNyArNjk5LDIwIEBACiAjIFNvdW5kCiAjCiAjIENPTkZJR19TT1VORCBpcyBub3Qgc2V0Ci0KLSMKLSMgVVNCIHN1cHBvcnQKLSMKLSMgQ09ORklHX1VTQl9BUkNIX0hBU19IQ0QgaXMgbm90IHNldAotIyBDT05GSUdfVVNCX0FSQ0hfSEFTX09IQ0kgaXMgbm90IHNldAotCi0jCi0jIFVTQiBHYWRnZXQgU3VwcG9ydAotIwotIyBDT05GSUdfVVNCX0dBREdFVCBpcyBub3Qgc2V0Ci0KLSMKLSMgTU1DL1NEIENhcmQgc3VwcG9ydAotIworQ09ORklHX0hJRF9TVVBQT1JUPXkKK0NPTkZJR19ISUQ9bQorIyBDT05GSUdfSElEX0RFQlVHIGlzIG5vdCBzZXQKK0NPTkZJR19ISURSQVc9eQorIyBDT05GSUdfVVNCX1NVUFBPUlQgaXMgbm90IHNldAogIyBDT05GSUdfTU1DIGlzIG5vdCBzZXQKKyMgQ09ORklHX01FTVNUSUNLIGlzIG5vdCBzZXQKKyMgQ09ORklHX05FV19MRURTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JUQ19DTEFTUyBpcyBub3Qgc2V0CiAKICMKLSMgSW5maW5pQmFuZCBzdXBwb3J0CisjIFVzZXJzcGFjZSBJL08KICMKLSMgQ09ORklHX0lORklOSUJBTkQgaXMgbm90IHNldAorIyBDT05GSUdfVUlPIGlzIG5vdCBzZXQKIAogIwogIyBDaGFyYWN0ZXIgZGV2aWNlcwpAQCAtNjE0LDEwICs3MjUsMTEgQEAKICMKIENPTkZJR19FWFQyX0ZTPXkKICMgQ09ORklHX0VYVDJfRlNfWEFUVFIgaXMgbm90IHNldAorIyBDT05GSUdfRVhUMl9GU19YSVAgaXMgbm90IHNldAogQ09ORklHX0VYVDNfRlM9eQogIyBDT05GSUdfRVhUM19GU19YQVRUUiBpcyBub3Qgc2V0CisjIENPTkZJR19FWFQ0REVWX0ZTIGlzIG5vdCBzZXQKIENPTkZJR19KQkQ9eQotIyBDT05GSUdfSkJEX0RFQlVHIGlzIG5vdCBzZXQKIENPTkZJR19SRUlTRVJGU19GUz1tCiAjIENPTkZJR19SRUlTRVJGU19DSEVDSyBpcyBub3Qgc2V0CiAjIENPTkZJR19SRUlTRVJGU19QUk9DX0lORk8gaXMgbm90IHNldApAQCAtNjI4LDI1ICs3NDAsMjkgQEAKICMgQ09ORklHX0pGU19ERUJVRyBpcyBub3Qgc2V0CiAjIENPTkZJR19KRlNfU1RBVElTVElDUyBpcyBub3Qgc2V0CiBDT05GSUdfRlNfUE9TSVhfQUNMPXkKLQotIwotIyBYRlMgc3VwcG9ydAotIwogQ09ORklHX1hGU19GUz1tCi1DT05GSUdfWEZTX0VYUE9SVD15Ci0jIENPTkZJR19YRlNfUlQgaXMgbm90IHNldAogIyBDT05GSUdfWEZTX1FVT1RBIGlzIG5vdCBzZXQKICMgQ09ORklHX1hGU19TRUNVUklUWSBpcyBub3Qgc2V0CiAjIENPTkZJR19YRlNfUE9TSVhfQUNMIGlzIG5vdCBzZXQKLUNPTkZJR19NSU5JWF9GUz15Ci0jIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19YRlNfUlQgaXMgbm90IHNldAorQ09ORklHX0dGUzJfRlM9bQorQ09ORklHX0dGUzJfRlNfTE9DS0lOR19OT0xPQ0s9bQorQ09ORklHX0dGUzJfRlNfTE9DS0lOR19ETE09bQorQ09ORklHX09DRlMyX0ZTPW0KKyMgQ09ORklHX09DRlMyX0RFQlVHX01BU0tMT0cgaXMgbm90IHNldAorIyBDT05GSUdfT0NGUzJfREVCVUdfRlMgaXMgbm90IHNldAorQ09ORklHX0ROT1RJRlk9eQorQ09ORklHX0lOT1RJRlk9eQorQ09ORklHX0lOT1RJRllfVVNFUj15CiBDT05GSUdfUVVPVEE9eQorQ09ORklHX1FVT1RBX05FVExJTktfSU5URVJGQUNFPXkKKyMgQ09ORklHX1BSSU5UX1FVT1RBX1dBUk5JTkcgaXMgbm90IHNldAogIyBDT05GSUdfUUZNVF9WMSBpcyBub3Qgc2V0CiAjIENPTkZJR19RRk1UX1YyIGlzIG5vdCBzZXQKIENPTkZJR19RVU9UQUNUTD15Ci1DT05GSUdfRE5PVElGWT15CiBDT05GSUdfQVVUT0ZTX0ZTPW0KIENPTkZJR19BVVRPRlM0X0ZTPW0KK0NPTkZJR19GVVNFX0ZTPW0KIAogIwogIyBDRC1ST00vRFZEIEZpbGVzeXN0ZW1zCkBAIC02NTQsNyArNzcwLDYgQEAKIENPTkZJR19JU085NjYwX0ZTPXkKIENPTkZJR19KT0xJRVQ9eQogQ09ORklHX1pJU09GUz15Ci1DT05GSUdfWklTT0ZTX0ZTPXkKIENPTkZJR19VREZfRlM9bQogQ09ORklHX1VERl9OTFM9eQogCkBAIC02NzMsMTMgKzc4OCwxMiBAQAogIwogQ09ORklHX1BST0NfRlM9eQogQ09ORklHX1BST0NfS0NPUkU9eQorQ09ORklHX1BST0NfU1lTQ1RMPXkKIENPTkZJR19TWVNGUz15Ci0jIENPTkZJR19ERVZGU19GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ERVZQVFNfRlNfWEFUVFIgaXMgbm90IHNldAogQ09ORklHX1RNUEZTPXkKLSMgQ09ORklHX1RNUEZTX1hBVFRSIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RNUEZTX1BPU0lYX0FDTCBpcyBub3Qgc2V0CiAjIENPTkZJR19IVUdFVExCX1BBR0UgaXMgbm90IHNldAotQ09ORklHX1JBTUZTPXkKK0NPTkZJR19DT05GSUdGU19GUz1tCiAKICMKICMgTWlzY2VsbGFuZW91cyBmaWxlc3lzdGVtcwpAQCAtNjkzLDQ0ICs4MDcsNDAgQEAKICMgQ09ORklHX0VGU19GUyBpcyBub3Qgc2V0CiBDT05GSUdfQ1JBTUZTPW0KICMgQ09ORklHX1ZYRlNfRlMgaXMgbm90IHNldAorQ09ORklHX01JTklYX0ZTPXkKIENPTkZJR19IUEZTX0ZTPW0KICMgQ09ORklHX1FOWDRGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CiBDT05GSUdfU1lTVl9GUz1tCiBDT05GSUdfVUZTX0ZTPW0KICMgQ09ORklHX1VGU19GU19XUklURSBpcyBub3Qgc2V0Ci0KLSMKLSMgTmV0d29yayBGaWxlIFN5c3RlbXMKLSMKKyMgQ09ORklHX1VGU19ERUJVRyBpcyBub3Qgc2V0CitDT05GSUdfTkVUV09SS19GSUxFU1lTVEVNUz15CiBDT05GSUdfTkZTX0ZTPXkKIENPTkZJR19ORlNfVjM9eQorIyBDT05GSUdfTkZTX1YzX0FDTCBpcyBub3Qgc2V0CiBDT05GSUdfTkZTX1Y0PXkKICMgQ09ORklHX05GU19ESVJFQ1RJTyBpcyBub3Qgc2V0CiBDT05GSUdfTkZTRD1tCiBDT05GSUdfTkZTRF9WMz15Ci1DT05GSUdfTkZTRF9WND15CisjIENPTkZJR19ORlNEX1YzX0FDTCBpcyBub3Qgc2V0CisjIENPTkZJR19ORlNEX1Y0IGlzIG5vdCBzZXQKIENPTkZJR19ORlNEX1RDUD15CiBDT05GSUdfUk9PVF9ORlM9eQogQ09ORklHX0xPQ0tEPXkKIENPTkZJR19MT0NLRF9WND15CiBDT05GSUdfRVhQT1JURlM9bQorQ09ORklHX05GU19DT01NT049eQogQ09ORklHX1NVTlJQQz15CiBDT05GSUdfU1VOUlBDX0dTUz15CitDT05GSUdfU1VOUlBDX0JJTkQzND15CiBDT05GSUdfUlBDU0VDX0dTU19LUkI1PXkKICMgQ09ORklHX1JQQ1NFQ19HU1NfU1BLTTMgaXMgbm90IHNldAogQ09ORklHX1NNQl9GUz1tCiBDT05GSUdfU01CX05MU19ERUZBVUxUPXkKIENPTkZJR19TTUJfTkxTX1JFTU9URT0iY3A0MzciCiAjIENPTkZJR19DSUZTIGlzIG5vdCBzZXQKLUNPTkZJR19OQ1BfRlM9bQotIyBDT05GSUdfTkNQRlNfUEFDS0VUX1NJR05JTkcgaXMgbm90IHNldAotIyBDT05GSUdfTkNQRlNfSU9DVExfTE9DS0lORyBpcyBub3Qgc2V0Ci0jIENPTkZJR19OQ1BGU19TVFJPTkcgaXMgbm90IHNldAotQ09ORklHX05DUEZTX05GU19OUz15Ci1DT05GSUdfTkNQRlNfT1MyX05TPXkKLSMgQ09ORklHX05DUEZTX1NNQUxMRE9TIGlzIG5vdCBzZXQKLUNPTkZJR19OQ1BGU19OTFM9eQotIyBDT05GSUdfTkNQRlNfRVhUUkFTIGlzIG5vdCBzZXQKKyMgQ09ORklHX05DUF9GUyBpcyBub3Qgc2V0CiBDT05GSUdfQ09EQV9GUz1tCiAjIENPTkZJR19DT0RBX0ZTX09MRF9BUEkgaXMgbm90IHNldAogIyBDT05GSUdfQUZTX0ZTIGlzIG5vdCBzZXQKQEAgLTc0MCwxMCArODUwLDcgQEAKICMKICMgQ09ORklHX1BBUlRJVElPTl9BRFZBTkNFRCBpcyBub3Qgc2V0CiBDT05GSUdfTVNET1NfUEFSVElUSU9OPXkKLQotIwotIyBOYXRpdmUgTGFuZ3VhZ2UgU3VwcG9ydAotIworQ09ORklHX1NZU1Y2OF9QQVJUSVRJT049eQogQ09ORklHX05MUz15CiBDT05GSUdfTkxTX0RFRkFVTFQ9Imlzbzg4NTktMSIKIENPTkZJR19OTFNfQ09ERVBBR0VfNDM3PXkKQEAgLTc4NCwzNSArODkxLDQyIEBACiBDT05GSUdfTkxTX0tPSThfUj1tCiBDT05GSUdfTkxTX0tPSThfVT1tCiBDT05GSUdfTkxTX1VURjg9bQorQ09ORklHX0RMTT1tCisjIENPTkZJR19ETE1fREVCVUcgaXMgbm90IHNldAogCiAjCiAjIEtlcm5lbCBoYWNraW5nCiAjCiAjIENPTkZJR19QUklOVEtfVElNRSBpcyBub3Qgc2V0Ci1DT05GSUdfREVCVUdfS0VSTkVMPXkKK0NPTkZJR19FTkFCTEVfV0FSTl9ERVBSRUNBVEVEPXkKK0NPTkZJR19FTkFCTEVfTVVTVF9DSEVDSz15CiBDT05GSUdfTUFHSUNfU1lTUlE9eQotQ09ORklHX0xPR19CVUZfU0hJRlQ9MTYKLSMgQ09ORklHX1NDSEVEU1RBVFMgaXMgbm90IHNldAotIyBDT05GSUdfREVCVUdfU0xBQiBpcyBub3Qgc2V0Ci0jIENPTkZJR19ERUJVR19TUElOTE9DSyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ERUJVR19TUElOTE9DS19TTEVFUCBpcyBub3Qgc2V0Ci0jIENPTkZJR19ERUJVR19LT0JKRUNUIGlzIG5vdCBzZXQKLUNPTkZJR19ERUJVR19CVUdWRVJCT1NFPXkKLSMgQ09ORklHX0RFQlVHX0lORk8gaXMgbm90IHNldAorIyBDT05GSUdfVU5VU0VEX1NZTUJPTFMgaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfRlMgaXMgbm90IHNldAotIyBDT05GSUdfRlJBTUVfUE9JTlRFUiBpcyBub3Qgc2V0CisjIENPTkZJR19IRUFERVJTX0NIRUNLIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RFQlVHX0tFUk5FTCBpcyBub3Qgc2V0CitDT05GSUdfREVCVUdfQlVHVkVSQk9TRT15CisjIENPTkZJR19TQU1QTEVTIGlzIG5vdCBzZXQKIAogIwogIyBTZWN1cml0eSBvcHRpb25zCiAjCiAjIENPTkZJR19LRVlTIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFQ1VSSVRZIGlzIG5vdCBzZXQKLQotIwotIyBDcnlwdG9ncmFwaGljIG9wdGlvbnMKLSMKKyMgQ09ORklHX1NFQ1VSSVRZX0ZJTEVfQ0FQQUJJTElUSUVTIGlzIG5vdCBzZXQKK0NPTkZJR19YT1JfQkxPQ0tTPW0KK0NPTkZJR19BU1lOQ19DT1JFPW0KK0NPTkZJR19BU1lOQ19NRU1DUFk9bQorQ09ORklHX0FTWU5DX1hPUj1tCiBDT05GSUdfQ1JZUFRPPXkKK0NPTkZJR19DUllQVE9fQUxHQVBJPXkKK0NPTkZJR19DUllQVE9fQUVBRD1tCitDT05GSUdfQ1JZUFRPX0JMS0NJUEhFUj15CitDT05GSUdfQ1JZUFRPX1NFUUlWPW0KK0NPTkZJR19DUllQVE9fSEFTSD15CitDT05GSUdfQ1JZUFRPX01BTkFHRVI9eQogQ09ORklHX0NSWVBUT19ITUFDPXkKK0NPTkZJR19DUllQVE9fWENCQz1tCiBDT05GSUdfQ1JZUFRPX05VTEw9bQogQ09ORklHX0NSWVBUT19NRDQ9bQogQ09ORklHX0NSWVBUT19NRDU9eQpAQCAtODIxLDkgKzkzNSwyMSBAQAogQ09ORklHX0NSWVBUT19TSEE1MTI9bQogQ09ORklHX0NSWVBUT19XUDUxMj1tCiBDT05GSUdfQ1JZUFRPX1RHUjE5Mj1tCitDT05GSUdfQ1JZUFRPX0dGMTI4TVVMPW0KK0NPTkZJR19DUllQVE9fRUNCPW0KK0NPTkZJR19DUllQVE9fQ0JDPXkKK0NPTkZJR19DUllQVE9fUENCQz1tCitDT05GSUdfQ1JZUFRPX0xSVz1tCitDT05GSUdfQ1JZUFRPX1hUUz1tCitDT05GSUdfQ1JZUFRPX0NUUj1tCitDT05GSUdfQ1JZUFRPX0dDTT1tCitDT05GSUdfQ1JZUFRPX0NDTT1tCitDT05GSUdfQ1JZUFRPX0NSWVBURD1tCiBDT05GSUdfQ1JZUFRPX0RFUz15CitDT05GSUdfQ1JZUFRPX0ZDUllQVD1tCiBDT05GSUdfQ1JZUFRPX0JMT1dGSVNIPW0KIENPTkZJR19DUllQVE9fVFdPRklTSD1tCitDT05GSUdfQ1JZUFRPX1RXT0ZJU0hfQ09NTU9OPW0KIENPTkZJR19DUllQVE9fU0VSUEVOVD1tCiBDT05GSUdfQ1JZUFRPX0FFUz1tCiBDT05GSUdfQ1JZUFRPX0NBU1Q1PW0KQEAgLTgzMiwyMCArOTU4LDM1IEBACiBDT05GSUdfQ1JZUFRPX0FSQzQ9bQogQ09ORklHX0NSWVBUT19LSEFaQUQ9bQogQ09ORklHX0NSWVBUT19BTlVCSVM9bQorQ09ORklHX0NSWVBUT19TRUVEPW0KK0NPTkZJR19DUllQVE9fU0FMU0EyMD1tCiBDT05GSUdfQ1JZUFRPX0RFRkxBVEU9bQogQ09ORklHX0NSWVBUT19NSUNIQUVMX01JQz1tCiBDT05GSUdfQ1JZUFRPX0NSQzMyQz1tCitDT05GSUdfQ1JZUFRPX0NBTUVMTElBPW0KIENPTkZJR19DUllQVE9fVEVTVD1tCi0KLSMKLSMgSGFyZHdhcmUgY3J5cHRvIGRldmljZXMKLSMKK0NPTkZJR19DUllQVE9fQVVUSEVOQz1tCitDT05GSUdfQ1JZUFRPX0xaTz1tCisjIENPTkZJR19DUllQVE9fSFcgaXMgbm90IHNldAogCiAjCiAjIExpYnJhcnkgcm91dGluZXMKICMKK0NPTkZJR19CSVRSRVZFUlNFPW0KIENPTkZJR19DUkNfQ0NJVFQ9bQorQ09ORklHX0NSQzE2PW0KKyMgQ09ORklHX0NSQ19JVFVfVCBpcyBub3Qgc2V0CiBDT05GSUdfQ1JDMzI9bQorIyBDT05GSUdfQ1JDNyBpcyBub3Qgc2V0CiBDT05GSUdfTElCQ1JDMzJDPW0KIENPTkZJR19aTElCX0lORkxBVEU9eQogQ09ORklHX1pMSUJfREVGTEFURT1tCitDT05GSUdfTFpPX0NPTVBSRVNTPW0KK0NPTkZJR19MWk9fREVDT01QUkVTUz1tCitDT05GSUdfVEVYVFNFQVJDSD15CitDT05GSUdfVEVYVFNFQVJDSF9LTVA9bQorQ09ORklHX1RFWFRTRUFSQ0hfQk09bQorQ09ORklHX1RFWFRTRUFSQ0hfRlNNPW0KK0NPTkZJR19QTElTVD15CitDT05GSUdfSEFTX0lPTUVNPXkKK0NPTkZJR19IQVNfRE1BPXkKZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9jb25maWdzL2hwMzAwX2RlZmNvbmZpZyBiL2FyY2gvbTY4ay9jb25maWdzL2hwMzAwX2RlZmNvbmZpZwppbmRleCA1MTI1MTg4Li4zOGI2OGM3IDEwMDY0NAotLS0gYS9hcmNoL202OGsvY29uZmlncy9ocDMwMF9kZWZjb25maWcKKysrIGIvYXJjaC9tNjhrL2NvbmZpZ3MvaHAzMDBfZGVmY29uZmlnCkBAIC0xLDYzICsxLDExMSBAQAogIwogIyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBtYWtlIGNvbmZpZzogZG9uJ3QgZWRpdAotIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjEyLXJjNi1tNjhrCi0jIFR1ZSBKdW4gIDcgMjA6MzQ6NDEgMjAwNQorIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjI1LXJjOAorIyBXZWQgQXByICAyIDIwOjQ2OjEyIDIwMDgKICMKIENPTkZJR19NNjhLPXkKIENPTkZJR19NTVU9eQotQ09ORklHX1VJRDE2PXkKIENPTkZJR19SV1NFTV9HRU5FUklDX1NQSU5MT0NLPXkKKyMgQ09ORklHX0FSQ0hfSEFTX0lMT0cyX1UzMiBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0hBU19JTE9HMl9VNjQgaXMgbm90IHNldAorQ09ORklHX0dFTkVSSUNfSFdFSUdIVD15CiBDT05GSUdfR0VORVJJQ19DQUxJQlJBVEVfREVMQVk9eQotCi0jCi0jIENvZGUgbWF0dXJpdHkgbGV2ZWwgb3B0aW9ucwotIwotQ09ORklHX0VYUEVSSU1FTlRBTD15Ci1DT05GSUdfQ0xFQU5fQ09NUElMRT15Ci1DT05GSUdfQlJPS0VOX09OX1NNUD15Ci1DT05GSUdfSU5JVF9FTlZfQVJHX0xJTUlUPTMyCitDT05GSUdfVElNRV9MT1dfUkVTPXkKK0NPTkZJR19HRU5FUklDX0lPTUFQPXkKK0NPTkZJR19OT19JT1BPUlQ9eQorIyBDT05GSUdfTk9fRE1BIGlzIG5vdCBzZXQKK0NPTkZJR19BUkNIX1NVUFBPUlRTX0FPVVQ9eQorQ09ORklHX0haPTEwMAorQ09ORklHX0RFRkNPTkZJR19MSVNUPSIvbGliL21vZHVsZXMvJFVOQU1FX1JFTEVBU0UvLmNvbmZpZyIKIAogIwogIyBHZW5lcmFsIHNldHVwCiAjCitDT05GSUdfRVhQRVJJTUVOVEFMPXkKK0NPTkZJR19CUk9LRU5fT05fU01QPXkKK0NPTkZJR19JTklUX0VOVl9BUkdfTElNSVQ9MzIKIENPTkZJR19MT0NBTFZFUlNJT049Ii1ocDMwMCIKK0NPTkZJR19MT0NBTFZFUlNJT05fQVVUTz15CiBDT05GSUdfU1dBUD15CiBDT05GSUdfU1lTVklQQz15CitDT05GSUdfU1lTVklQQ19TWVNDVEw9eQogQ09ORklHX1BPU0lYX01RVUVVRT15CiBDT05GSUdfQlNEX1BST0NFU1NfQUNDVD15CiAjIENPTkZJR19CU0RfUFJPQ0VTU19BQ0NUX1YzIGlzIG5vdCBzZXQKLUNPTkZJR19TWVNDVEw9eQotQ09ORklHX0FVRElUPXkKLUNPTkZJR19IT1RQTFVHPXkKLUNPTkZJR19LT0JKRUNUX1VFVkVOVD15CisjIENPTkZJR19UQVNLU1RBVFMgaXMgbm90IHNldAorIyBDT05GSUdfQVVESVQgaXMgbm90IHNldAogIyBDT05GSUdfSUtDT05GSUcgaXMgbm90IHNldAorQ09ORklHX0xPR19CVUZfU0hJRlQ9MTQKKyMgQ09ORklHX0NHUk9VUFMgaXMgbm90IHNldAorIyBDT05GSUdfR1JPVVBfU0NIRUQgaXMgbm90IHNldAorIyBDT05GSUdfU1lTRlNfREVQUkVDQVRFRF9WMiBpcyBub3Qgc2V0CitDT05GSUdfUkVMQVk9eQorQ09ORklHX05BTUVTUEFDRVM9eQorIyBDT05GSUdfVVRTX05TIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lQQ19OUyBpcyBub3Qgc2V0CisjIENPTkZJR19VU0VSX05TIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BJRF9OUyBpcyBub3Qgc2V0CitDT05GSUdfQkxLX0RFVl9JTklUUkQ9eQorQ09ORklHX0lOSVRSQU1GU19TT1VSQ0U9IiIKKyMgQ09ORklHX0NDX09QVElNSVpFX0ZPUl9TSVpFIGlzIG5vdCBzZXQKK0NPTkZJR19TWVNDVEw9eQogIyBDT05GSUdfRU1CRURERUQgaXMgbm90IHNldAorQ09ORklHX1VJRDE2PXkKK0NPTkZJR19TWVNDVExfU1lTQ0FMTD15CiBDT05GSUdfS0FMTFNZTVM9eQotIyBDT05GSUdfS0FMTFNZTVNfQUxMIGlzIG5vdCBzZXQKICMgQ09ORklHX0tBTExTWU1TX0VYVFJBX1BBU1MgaXMgbm90IHNldAorQ09ORklHX0hPVFBMVUc9eQogQ09ORklHX1BSSU5USz15CiBDT05GSUdfQlVHPXkKK0NPTkZJR19FTEZfQ09SRT15CisjIENPTkZJR19DT01QQVRfQlJLIGlzIG5vdCBzZXQKIENPTkZJR19CQVNFX0ZVTEw9eQogQ09ORklHX0ZVVEVYPXkKK0NPTkZJR19BTk9OX0lOT0RFUz15CiBDT05GSUdfRVBPTEw9eQorQ09ORklHX1NJR05BTEZEPXkKK0NPTkZJR19USU1FUkZEPXkKK0NPTkZJR19FVkVOVEZEPXkKIENPTkZJR19TSE1FTT15Ci1DT05GSUdfQ0NfQUxJR05fRlVOQ1RJT05TPTAKLUNPTkZJR19DQ19BTElHTl9MQUJFTFM9MAotQ09ORklHX0NDX0FMSUdOX0xPT1BTPTAKLUNPTkZJR19DQ19BTElHTl9KVU1QUz0wCitDT05GSUdfVk1fRVZFTlRfQ09VTlRFUlM9eQorQ09ORklHX1NMQUI9eQorIyBDT05GSUdfU0xVQiBpcyBub3Qgc2V0CisjIENPTkZJR19TTE9CIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BST0ZJTElORyBpcyBub3Qgc2V0CisjIENPTkZJR19NQVJLRVJTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hBVkVfT1BST0ZJTEUgaXMgbm90IHNldAorIyBDT05GSUdfSEFWRV9LUFJPQkVTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hBVkVfS1JFVFBST0JFUyBpcyBub3Qgc2V0CitDT05GSUdfUFJPQ19QQUdFX01PTklUT1I9eQorQ09ORklHX1NMQUJJTkZPPXkKK0NPTkZJR19SVF9NVVRFWEVTPXkKICMgQ09ORklHX1RJTllfU0hNRU0gaXMgbm90IHNldAogQ09ORklHX0JBU0VfU01BTEw9MAotCi0jCi0jIExvYWRhYmxlIG1vZHVsZSBzdXBwb3J0Ci0jCiBDT05GSUdfTU9EVUxFUz15CiBDT05GSUdfTU9EVUxFX1VOTE9BRD15CiAjIENPTkZJR19NT0RVTEVfRk9SQ0VfVU5MT0FEIGlzIG5vdCBzZXQKLUNPTkZJR19PQlNPTEVURV9NT0RQQVJNPXkKICMgQ09ORklHX01PRFZFUlNJT05TIGlzIG5vdCBzZXQKICMgQ09ORklHX01PRFVMRV9TUkNWRVJTSU9OX0FMTCBpcyBub3Qgc2V0CiBDT05GSUdfS01PRD15CitDT05GSUdfQkxPQ0s9eQorIyBDT05GSUdfTEJEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JMS19ERVZfSU9fVFJBQ0UgaXMgbm90IHNldAorIyBDT05GSUdfTFNGIGlzIG5vdCBzZXQKK0NPTkZJR19CTEtfREVWX0JTRz15CisKKyMKKyMgSU8gU2NoZWR1bGVycworIworQ09ORklHX0lPU0NIRURfTk9PUD15CitDT05GSUdfSU9TQ0hFRF9BUz15CitDT05GSUdfSU9TQ0hFRF9ERUFETElORT15CitDT05GSUdfSU9TQ0hFRF9DRlE9eQorQ09ORklHX0RFRkFVTFRfQVM9eQorIyBDT05GSUdfREVGQVVMVF9ERUFETElORSBpcyBub3Qgc2V0CisjIENPTkZJR19ERUZBVUxUX0NGUSBpcyBub3Qgc2V0CisjIENPTkZJR19ERUZBVUxUX05PT1AgaXMgbm90IHNldAorQ09ORklHX0RFRkFVTFRfSU9TQ0hFRD0iYW50aWNpcGF0b3J5IgorQ09ORklHX0NMQVNTSUNfUkNVPXkKIAogIwogIyBQbGF0Zm9ybSBkZXBlbmRlbnQgc2V0dXAKQEAgLTgxLDEwICsxMjksMjQgQEAKIENPTkZJR19NNjgwNDA9eQogQ09ORklHX002ODA2MD15CiBDT05GSUdfTU1VX01PVE9ST0xBPXkKLUNPTkZJR19NNjhLRlBVX0VNVT15Ci1DT05GSUdfTTY4S0ZQVV9FTVVfRVhUUkFQUkVDPXkKLSMgQ09ORklHX002OEtGUFVfRU1VX09OTFkgaXMgbm90IHNldAorIyBDT05GSUdfTTY4S0ZQVV9FTVUgaXMgbm90IHNldAogIyBDT05GSUdfQURWQU5DRUQgaXMgbm90IHNldAorQ09ORklHX0FSQ0hfRElTQ09OVElHTUVNX0VOQUJMRT15CitDT05GSUdfTk9ERVNfU0hJRlQ9MworQ09ORklHX1NFTEVDVF9NRU1PUllfTU9ERUw9eQorIyBDT05GSUdfRkxBVE1FTV9NQU5VQUwgaXMgbm90IHNldAorQ09ORklHX0RJU0NPTlRJR01FTV9NQU5VQUw9eQorIyBDT05GSUdfU1BBUlNFTUVNX01BTlVBTCBpcyBub3Qgc2V0CitDT05GSUdfRElTQ09OVElHTUVNPXkKK0NPTkZJR19GTEFUX05PREVfTUVNX01BUD15CitDT05GSUdfTkVFRF9NVUxUSVBMRV9OT0RFUz15CisjIENPTkZJR19TUEFSU0VNRU1fU1RBVElDIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQX0VOQUJMRSBpcyBub3Qgc2V0CitDT05GSUdfU1BMSVRfUFRMT0NLX0NQVVM9NAorIyBDT05GSUdfUkVTT1VSQ0VTXzY0QklUIGlzIG5vdCBzZXQKK0NPTkZJR19aT05FX0RNQV9GTEFHPTEKK0NPTkZJR19CT1VOQ0U9eQorQ09ORklHX1ZJUlRfVE9fQlVTPXkKIAogIwogIyBHZW5lcmFsIHNldHVwCkBAIC05NCwxMzQgKzE1NiwxMSBAQAogQ09ORklHX0JJTkZNVF9NSVNDPW0KIENPTkZJR19IRUFSVEJFQVQ9eQogQ09ORklHX1BST0NfSEFSRFdBUkU9eQorQ09ORklHX1pPTkVfRE1BPXkKKyMgQ09ORklHX0FSQ0hfU1VQUE9SVFNfTVNJIGlzIG5vdCBzZXQKIAogIwotIyBEZXZpY2UgRHJpdmVycwotIwotCi0jCi0jIEdlbmVyaWMgRHJpdmVyIE9wdGlvbnMKLSMKLUNPTkZJR19TVEFOREFMT05FPXkKLUNPTkZJR19QUkVWRU5UX0ZJUk1XQVJFX0JVSUxEPXkKLUNPTkZJR19GV19MT0FERVI9bQotIyBDT05GSUdfREVCVUdfRFJJVkVSIGlzIG5vdCBzZXQKLQotIwotIyBNZW1vcnkgVGVjaG5vbG9neSBEZXZpY2VzIChNVEQpCi0jCi0jIENPTkZJR19NVEQgaXMgbm90IHNldAotCi0jCi0jIFBhcmFsbGVsIHBvcnQgc3VwcG9ydAotIwotIyBDT05GSUdfUEFSUE9SVCBpcyBub3Qgc2V0Ci0KLSMKLSMgUGx1ZyBhbmQgUGxheSBzdXBwb3J0Ci0jCi0KLSMKLSMgQmxvY2sgZGV2aWNlcwotIwotIyBDT05GSUdfQkxLX0RFVl9DT1dfQ09NTU9OIGlzIG5vdCBzZXQKLUNPTkZJR19CTEtfREVWX0xPT1A9eQotQ09ORklHX0JMS19ERVZfQ1JZUFRPTE9PUD1tCi1DT05GSUdfQkxLX0RFVl9OQkQ9bQotQ09ORklHX0JMS19ERVZfUkFNPXkKLUNPTkZJR19CTEtfREVWX1JBTV9DT1VOVD0xNgotQ09ORklHX0JMS19ERVZfUkFNX1NJWkU9NDA5NgotQ09ORklHX0JMS19ERVZfSU5JVFJEPXkKLUNPTkZJR19JTklUUkFNRlNfU09VUkNFPSIiCi1DT05GSUdfQ0RST01fUEtUQ0RWRD1tCi1DT05GSUdfQ0RST01fUEtUQ0RWRF9CVUZGRVJTPTgKLSMgQ09ORklHX0NEUk9NX1BLVENEVkRfV0NBQ0hFIGlzIG5vdCBzZXQKLQotIwotIyBJTyBTY2hlZHVsZXJzCi0jCi1DT05GSUdfSU9TQ0hFRF9OT09QPXkKLUNPTkZJR19JT1NDSEVEX0FTPXkKLUNPTkZJR19JT1NDSEVEX0RFQURMSU5FPXkKLUNPTkZJR19JT1NDSEVEX0NGUT15Ci1DT05GSUdfQVRBX09WRVJfRVRIPW0KLQotIwotIyBBVEEvQVRBUEkvTUZNL1JMTCBzdXBwb3J0Ci0jCi0jIENPTkZJR19JREUgaXMgbm90IHNldAotCi0jCi0jIFNDU0kgZGV2aWNlIHN1cHBvcnQKLSMKLUNPTkZJR19TQ1NJPXkKLUNPTkZJR19TQ1NJX1BST0NfRlM9eQotCi0jCi0jIFNDU0kgc3VwcG9ydCB0eXBlIChkaXNrLCB0YXBlLCBDRC1ST00pCi0jCi1DT05GSUdfQkxLX0RFVl9TRD15Ci1DT05GSUdfQ0hSX0RFVl9TVD1tCi0jIENPTkZJR19DSFJfREVWX09TU1QgaXMgbm90IHNldAotQ09ORklHX0JMS19ERVZfU1I9eQotQ09ORklHX0JMS19ERVZfU1JfVkVORE9SPXkKLUNPTkZJR19DSFJfREVWX1NHPW0KLQotIwotIyBTb21lIFNDU0kgZGV2aWNlcyAoZS5nLiBDRCBqdWtlYm94KSBzdXBwb3J0IG11bHRpcGxlIExVTnMKLSMKLSMgQ09ORklHX1NDU0lfTVVMVElfTFVOIGlzIG5vdCBzZXQKLUNPTkZJR19TQ1NJX0NPTlNUQU5UUz15Ci0jIENPTkZJR19TQ1NJX0xPR0dJTkcgaXMgbm90IHNldAotCi0jCi0jIFNDU0kgVHJhbnNwb3J0IEF0dHJpYnV0ZXMKLSMKLSMgQ09ORklHX1NDU0lfU1BJX0FUVFJTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NDU0lfRkNfQVRUUlMgaXMgbm90IHNldAotIyBDT05GSUdfU0NTSV9JU0NTSV9BVFRSUyBpcyBub3Qgc2V0Ci0KLSMKLSMgU0NTSSBsb3ctbGV2ZWwgZHJpdmVycwotIwotIyBDT05GSUdfU0NTSV9TQVRBIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NDU0lfREVCVUcgaXMgbm90IHNldAotCi0jCi0jIE11bHRpLWRldmljZSBzdXBwb3J0IChSQUlEIGFuZCBMVk0pCi0jCi1DT05GSUdfTUQ9eQotQ09ORklHX0JMS19ERVZfTUQ9bQotQ09ORklHX01EX0xJTkVBUj1tCi1DT05GSUdfTURfUkFJRDA9bQotQ09ORklHX01EX1JBSUQxPW0KLSMgQ09ORklHX01EX1JBSUQxMCBpcyBub3Qgc2V0Ci1DT05GSUdfTURfUkFJRDU9bQotQ09ORklHX01EX1JBSUQ2PW0KLUNPTkZJR19NRF9NVUxUSVBBVEg9bQotIyBDT05GSUdfTURfRkFVTFRZIGlzIG5vdCBzZXQKLUNPTkZJR19CTEtfREVWX0RNPW0KLUNPTkZJR19ETV9DUllQVD1tCi1DT05GSUdfRE1fU05BUFNIT1Q9bQotQ09ORklHX0RNX01JUlJPUj1tCi1DT05GSUdfRE1fWkVSTz1tCi1DT05GSUdfRE1fTVVMVElQQVRIPW0KLUNPTkZJR19ETV9NVUxUSVBBVEhfRU1DPW0KLQotIwotIyBGdXNpb24gTVBUIGRldmljZSBzdXBwb3J0Ci0jCi0KLSMKLSMgSUVFRSAxMzk0IChGaXJlV2lyZSkgc3VwcG9ydAotIwotCi0jCi0jIEkyTyBkZXZpY2Ugc3VwcG9ydAotIwotCi0jCi0jIE5ldHdvcmtpbmcgc3VwcG9ydAorIyBOZXR3b3JraW5nCiAjCiBDT05GSUdfTkVUPXkKIApAQCAtMjMxLDEwICsxNzAsMTcgQEAKIENPTkZJR19QQUNLRVQ9eQogIyBDT05GSUdfUEFDS0VUX01NQVAgaXMgbm90IHNldAogQ09ORklHX1VOSVg9eQorQ09ORklHX1hGUk09eQorIyBDT05GSUdfWEZSTV9VU0VSIGlzIG5vdCBzZXQKKyMgQ09ORklHX1hGUk1fU1VCX1BPTElDWSBpcyBub3Qgc2V0CitDT05GSUdfWEZSTV9NSUdSQVRFPXkKKyMgQ09ORklHX1hGUk1fU1RBVElTVElDUyBpcyBub3Qgc2V0CiBDT05GSUdfTkVUX0tFWT15CitDT05GSUdfTkVUX0tFWV9NSUdSQVRFPXkKIENPTkZJR19JTkVUPXkKICMgQ09ORklHX0lQX01VTFRJQ0FTVCBpcyBub3Qgc2V0CiAjIENPTkZJR19JUF9BRFZBTkNFRF9ST1VURVIgaXMgbm90IHNldAorQ09ORklHX0lQX0ZJQl9IQVNIPXkKIENPTkZJR19JUF9QTlA9eQogQ09ORklHX0lQX1BOUF9ESENQPXkKIENPTkZJR19JUF9QTlBfQk9PVFA9eQpAQCAtMjQ2LDE0NSArMTkyLDE5OSBAQAogQ09ORklHX0lORVRfQUg9bQogQ09ORklHX0lORVRfRVNQPW0KIENPTkZJR19JTkVUX0lQQ09NUD1tCitDT05GSUdfSU5FVF9YRlJNX1RVTk5FTD1tCiBDT05GSUdfSU5FVF9UVU5ORUw9bQotQ09ORklHX0lQX1RDUERJQUc9bQotQ09ORklHX0lQX1RDUERJQUdfSVBWNj15Ci0KLSMKLSMgSVA6IFZpcnR1YWwgU2VydmVyIENvbmZpZ3VyYXRpb24KLSMKK0NPTkZJR19JTkVUX1hGUk1fTU9ERV9UUkFOU1BPUlQ9bQorQ09ORklHX0lORVRfWEZSTV9NT0RFX1RVTk5FTD1tCitDT05GSUdfSU5FVF9YRlJNX01PREVfQkVFVD1tCitDT05GSUdfSU5FVF9MUk89bQorQ09ORklHX0lORVRfRElBRz1tCitDT05GSUdfSU5FVF9UQ1BfRElBRz1tCisjIENPTkZJR19UQ1BfQ09OR19BRFZBTkNFRCBpcyBub3Qgc2V0CitDT05GSUdfVENQX0NPTkdfQ1VCSUM9eQorQ09ORklHX0RFRkFVTFRfVENQX0NPTkc9ImN1YmljIgorIyBDT05GSUdfVENQX01ENVNJRyBpcyBub3Qgc2V0CiAjIENPTkZJR19JUF9WUyBpcyBub3Qgc2V0CiBDT05GSUdfSVBWNj1tCiBDT05GSUdfSVBWNl9QUklWQUNZPXkKK0NPTkZJR19JUFY2X1JPVVRFUl9QUkVGPXkKK0NPTkZJR19JUFY2X1JPVVRFX0lORk89eQorIyBDT05GSUdfSVBWNl9PUFRJTUlTVElDX0RBRCBpcyBub3Qgc2V0CiBDT05GSUdfSU5FVDZfQUg9bQogQ09ORklHX0lORVQ2X0VTUD1tCiBDT05GSUdfSU5FVDZfSVBDT01QPW0KKyMgQ09ORklHX0lQVjZfTUlQNiBpcyBub3Qgc2V0CitDT05GSUdfSU5FVDZfWEZSTV9UVU5ORUw9bQogQ09ORklHX0lORVQ2X1RVTk5FTD1tCitDT05GSUdfSU5FVDZfWEZSTV9NT0RFX1RSQU5TUE9SVD1tCitDT05GSUdfSU5FVDZfWEZSTV9NT0RFX1RVTk5FTD1tCitDT05GSUdfSU5FVDZfWEZSTV9NT0RFX0JFRVQ9bQorQ09ORklHX0lORVQ2X1hGUk1fTU9ERV9ST1VURU9QVElNSVpBVElPTj1tCitDT05GSUdfSVBWNl9TSVQ9bQogQ09ORklHX0lQVjZfVFVOTkVMPW0KKyMgQ09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTIGlzIG5vdCBzZXQKKyMgQ09ORklHX05FVFdPUktfU0VDTUFSSyBpcyBub3Qgc2V0CiBDT05GSUdfTkVURklMVEVSPXkKICMgQ09ORklHX05FVEZJTFRFUl9ERUJVRyBpcyBub3Qgc2V0CitDT05GSUdfTkVURklMVEVSX0FEVkFOQ0VEPXkKKworIworIyBDb3JlIE5ldGZpbHRlciBDb25maWd1cmF0aW9uCisjCitDT05GSUdfTkVURklMVEVSX05FVExJTks9bQorQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LX1FVRVVFPW0KK0NPTkZJR19ORVRGSUxURVJfTkVUTElOS19MT0c9bQorQ09ORklHX05GX0NPTk5UUkFDSz1tCitDT05GSUdfTkZfQ1RfQUNDVD15CitDT05GSUdfTkZfQ09OTlRSQUNLX01BUks9eQorIyBDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UUyBpcyBub3Qgc2V0CitDT05GSUdfTkZfQ1RfUFJPVE9fR1JFPW0KK0NPTkZJR19ORl9DVF9QUk9UT19TQ1RQPW0KK0NPTkZJR19ORl9DVF9QUk9UT19VRFBMSVRFPW0KK0NPTkZJR19ORl9DT05OVFJBQ0tfQU1BTkRBPW0KK0NPTkZJR19ORl9DT05OVFJBQ0tfRlRQPW0KK0NPTkZJR19ORl9DT05OVFJBQ0tfSDMyMz1tCitDT05GSUdfTkZfQ09OTlRSQUNLX0lSQz1tCitDT05GSUdfTkZfQ09OTlRSQUNLX05FVEJJT1NfTlM9bQorQ09ORklHX05GX0NPTk5UUkFDS19QUFRQPW0KK0NPTkZJR19ORl9DT05OVFJBQ0tfU0FORT1tCitDT05GSUdfTkZfQ09OTlRSQUNLX1NJUD1tCitDT05GSUdfTkZfQ09OTlRSQUNLX1RGVFA9bQorIyBDT05GSUdfTkZfQ1RfTkVUTElOSyBpcyBub3Qgc2V0CitDT05GSUdfTkVURklMVEVSX1hUQUJMRVM9bQorQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfQ0xBU1NJRlk9bQorQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfQ09OTk1BUks9bQorQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfRFNDUD1tCitDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9NQVJLPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX05GUVVFVUU9bQorQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfTkZMT0c9bQorQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfTk9UUkFDSz1tCitDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9SQVRFRVNUPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX1RSQUNFPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX1RDUE1TUz1tCitDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9UQ1BPUFRTVFJJUD1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0NPTU1FTlQ9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9DT05OQllURVM9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9DT05OTElNSVQ9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9DT05OTUFSSz1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0NPTk5UUkFDSz1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0RDQ1A9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9EU0NQPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfRVNQPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfSEVMUEVSPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfSVBSQU5HRT1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0xFTkdUSD1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0xJTUlUPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfTUFDPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfTUFSSz1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX09XTkVSPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfUE9MSUNZPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfTVVMVElQT1JUPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfUEtUVFlQRT1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1FVT1RBPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfUkFURUVTVD1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1JFQUxNPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfU0NUUD1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1NUQVRFPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfU1RBVElTVElDPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfU1RSSU5HPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfVENQTVNTPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfVElNRT1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1UzMj1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0hBU0hMSU1JVD1tCiAKICMKICMgSVA6IE5ldGZpbHRlciBDb25maWd1cmF0aW9uCiAjCi1DT05GSUdfSVBfTkZfQ09OTlRSQUNLPW0KLSMgQ09ORklHX0lQX05GX0NUX0FDQ1QgaXMgbm90IHNldAotQ09ORklHX0lQX05GX0NPTk5UUkFDS19NQVJLPXkKLSMgQ09ORklHX0lQX05GX0NUX1BST1RPX1NDVFAgaXMgbm90IHNldAotQ09ORklHX0lQX05GX0ZUUD1tCi1DT05GSUdfSVBfTkZfSVJDPW0KLUNPTkZJR19JUF9ORl9URlRQPW0KLUNPTkZJR19JUF9ORl9BTUFOREE9bQorQ09ORklHX05GX0NPTk5UUkFDS19JUFY0PW0KK0NPTkZJR19ORl9DT05OVFJBQ0tfUFJPQ19DT01QQVQ9eQogQ09ORklHX0lQX05GX1FVRVVFPW0KIENPTkZJR19JUF9ORl9JUFRBQkxFUz1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfTElNSVQ9bQotQ09ORklHX0lQX05GX01BVENIX0lQUkFOR0U9bQotQ09ORklHX0lQX05GX01BVENIX01BQz1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfUEtUVFlQRT1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfTUFSSz1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfTVVMVElQT1JUPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9UT1M9bQogQ09ORklHX0lQX05GX01BVENIX1JFQ0VOVD1tCiBDT05GSUdfSVBfTkZfTUFUQ0hfRUNOPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9EU0NQPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9BSF9FU1A9bQotQ09ORklHX0lQX05GX01BVENIX0xFTkdUSD1tCitDT05GSUdfSVBfTkZfTUFUQ0hfQUg9bQogQ09ORklHX0lQX05GX01BVENIX1RUTD1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfVENQTVNTPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9IRUxQRVI9bQotQ09ORklHX0lQX05GX01BVENIX1NUQVRFPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9DT05OVFJBQ0s9bQotQ09ORklHX0lQX05GX01BVENIX09XTkVSPW0KIENPTkZJR19JUF9ORl9NQVRDSF9BRERSVFlQRT1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfUkVBTE09bQotIyBDT05GSUdfSVBfTkZfTUFUQ0hfU0NUUCBpcyBub3Qgc2V0Ci0jIENPTkZJR19JUF9ORl9NQVRDSF9DT01NRU5UIGlzIG5vdCBzZXQKLUNPTkZJR19JUF9ORl9NQVRDSF9DT05OTUFSSz1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfSEFTSExJTUlUPW0KIENPTkZJR19JUF9ORl9GSUxURVI9bQogQ09ORklHX0lQX05GX1RBUkdFVF9SRUpFQ1Q9bQogQ09ORklHX0lQX05GX1RBUkdFVF9MT0c9bQogQ09ORklHX0lQX05GX1RBUkdFVF9VTE9HPW0KLUNPTkZJR19JUF9ORl9UQVJHRVRfVENQTVNTPW0KLUNPTkZJR19JUF9ORl9OQVQ9bQotQ09ORklHX0lQX05GX05BVF9ORUVERUQ9eQorQ09ORklHX05GX05BVD1tCitDT05GSUdfTkZfTkFUX05FRURFRD15CiBDT05GSUdfSVBfTkZfVEFSR0VUX01BU1FVRVJBREU9bQogQ09ORklHX0lQX05GX1RBUkdFVF9SRURJUkVDVD1tCiBDT05GSUdfSVBfTkZfVEFSR0VUX05FVE1BUD1tCi1DT05GSUdfSVBfTkZfVEFSR0VUX1NBTUU9bQotQ09ORklHX0lQX05GX05BVF9TTk1QX0JBU0lDPW0KLUNPTkZJR19JUF9ORl9OQVRfSVJDPW0KLUNPTkZJR19JUF9ORl9OQVRfRlRQPW0KLUNPTkZJR19JUF9ORl9OQVRfVEZUUD1tCi1DT05GSUdfSVBfTkZfTkFUX0FNQU5EQT1tCitDT05GSUdfTkZfTkFUX1NOTVBfQkFTSUM9bQorQ09ORklHX05GX05BVF9QUk9UT19HUkU9bQorQ09ORklHX05GX05BVF9GVFA9bQorQ09ORklHX05GX05BVF9JUkM9bQorQ09ORklHX05GX05BVF9URlRQPW0KK0NPTkZJR19ORl9OQVRfQU1BTkRBPW0KK0NPTkZJR19ORl9OQVRfUFBUUD1tCitDT05GSUdfTkZfTkFUX0gzMjM9bQorQ09ORklHX05GX05BVF9TSVA9bQogQ09ORklHX0lQX05GX01BTkdMRT1tCi1DT05GSUdfSVBfTkZfVEFSR0VUX1RPUz1tCiBDT05GSUdfSVBfTkZfVEFSR0VUX0VDTj1tCi1DT05GSUdfSVBfTkZfVEFSR0VUX0RTQ1A9bQotQ09ORklHX0lQX05GX1RBUkdFVF9NQVJLPW0KLUNPTkZJR19JUF9ORl9UQVJHRVRfQ0xBU1NJRlk9bQotQ09ORklHX0lQX05GX1RBUkdFVF9DT05OTUFSSz1tCi0jIENPTkZJR19JUF9ORl9UQVJHRVRfQ0xVU1RFUklQIGlzIG5vdCBzZXQKK0NPTkZJR19JUF9ORl9UQVJHRVRfVFRMPW0KK0NPTkZJR19JUF9ORl9UQVJHRVRfQ0xVU1RFUklQPW0KIENPTkZJR19JUF9ORl9SQVc9bQotQ09ORklHX0lQX05GX1RBUkdFVF9OT1RSQUNLPW0KIENPTkZJR19JUF9ORl9BUlBUQUJMRVM9bQogQ09ORklHX0lQX05GX0FSUEZJTFRFUj1tCiBDT05GSUdfSVBfTkZfQVJQX01BTkdMRT1tCiAKICMKLSMgSVB2NjogTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24gKEVYUEVSSU1FTlRBTCkKKyMgSVB2NjogTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24KICMKK0NPTkZJR19ORl9DT05OVFJBQ0tfSVBWNj1tCiBDT05GSUdfSVA2X05GX1FVRVVFPW0KIENPTkZJR19JUDZfTkZfSVBUQUJMRVM9bQotQ09ORklHX0lQNl9ORl9NQVRDSF9MSU1JVD1tCi1DT05GSUdfSVA2X05GX01BVENIX01BQz1tCiBDT05GSUdfSVA2X05GX01BVENIX1JUPW0KIENPTkZJR19JUDZfTkZfTUFUQ0hfT1BUUz1tCiBDT05GSUdfSVA2X05GX01BVENIX0ZSQUc9bQogQ09ORklHX0lQNl9ORl9NQVRDSF9ITD1tCi1DT05GSUdfSVA2X05GX01BVENIX01VTFRJUE9SVD1tCi1DT05GSUdfSVA2X05GX01BVENIX09XTkVSPW0KLUNPTkZJR19JUDZfTkZfTUFUQ0hfTUFSSz1tCiBDT05GSUdfSVA2X05GX01BVENIX0lQVjZIRUFERVI9bQotQ09ORklHX0lQNl9ORl9NQVRDSF9BSEVTUD1tCi1DT05GSUdfSVA2X05GX01BVENIX0xFTkdUSD1tCitDT05GSUdfSVA2X05GX01BVENIX0FIPW0KK0NPTkZJR19JUDZfTkZfTUFUQ0hfTUg9bQogQ09ORklHX0lQNl9ORl9NQVRDSF9FVUk2ND1tCiBDT05GSUdfSVA2X05GX0ZJTFRFUj1tCiBDT05GSUdfSVA2X05GX1RBUkdFVF9MT0c9bQorQ09ORklHX0lQNl9ORl9UQVJHRVRfUkVKRUNUPW0KIENPTkZJR19JUDZfTkZfTUFOR0xFPW0KLUNPTkZJR19JUDZfTkZfVEFSR0VUX01BUks9bQorQ09ORklHX0lQNl9ORl9UQVJHRVRfSEw9bQogQ09ORklHX0lQNl9ORl9SQVc9bQotQ09ORklHX1hGUk09eQotQ09ORklHX1hGUk1fVVNFUj1tCitDT05GSUdfSVBfRENDUD1tCitDT05GSUdfSU5FVF9EQ0NQX0RJQUc9bQorQ09ORklHX0lQX0RDQ1BfQUNLVkVDPXkKIAogIwotIyBTQ1RQIENvbmZpZ3VyYXRpb24gKEVYUEVSSU1FTlRBTCkKKyMgRENDUCBDQ0lEcyBDb25maWd1cmF0aW9uIChFWFBFUklNRU5UQUwpCiAjCitDT05GSUdfSVBfRENDUF9DQ0lEMj1tCisjIENPTkZJR19JUF9EQ0NQX0NDSUQyX0RFQlVHIGlzIG5vdCBzZXQKK0NPTkZJR19JUF9EQ0NQX0NDSUQzPW0KKyMgQ09ORklHX0lQX0RDQ1BfQ0NJRDNfREVCVUcgaXMgbm90IHNldAorQ09ORklHX0lQX0RDQ1BfQ0NJRDNfUlRPPTEwMAorQ09ORklHX0lQX0RDQ1BfVEZSQ19MSUI9bQogQ09ORklHX0lQX1NDVFA9bQogIyBDT05GSUdfU0NUUF9EQkdfTVNHIGlzIG5vdCBzZXQKICMgQ09ORklHX1NDVFBfREJHX09CSkNOVCBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1RQX0hNQUNfTk9ORSBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1RQX0hNQUNfU0hBMSBpcyBub3Qgc2V0CiBDT05GSUdfU0NUUF9ITUFDX01ENT15CisjIENPTkZJR19USVBDIGlzIG5vdCBzZXQKICMgQ09ORklHX0FUTSBpcyBub3Qgc2V0CiAjIENPTkZJR19CUklER0UgaXMgbm90IHNldAogIyBDT05GSUdfVkxBTl84MDIxUSBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUNORVQgaXMgbm90IHNldAogQ09ORklHX0xMQz1tCiAjIENPTkZJR19MTEMyIGlzIG5vdCBzZXQKLUNPTkZJR19JUFg9bQotIyBDT05GSUdfSVBYX0lOVEVSTiBpcyBub3Qgc2V0CisjIENPTkZJR19JUFggaXMgbm90IHNldAogQ09ORklHX0FUQUxLPW0KICMgQ09ORklHX0RFVl9BUFBMRVRBTEsgaXMgbm90IHNldAogIyBDT05GSUdfWDI1IGlzIG5vdCBzZXQKICMgQ09ORklHX0xBUEIgaXMgbm90IHNldAotIyBDT05GSUdfTkVUX0RJVkVSVCBpcyBub3Qgc2V0CiAjIENPTkZJR19FQ09ORVQgaXMgbm90IHNldAogIyBDT05GSUdfV0FOX1JPVVRFUiBpcyBub3Qgc2V0Ci0KLSMKLSMgUW9TIGFuZC9vciBmYWlyIHF1ZXVlaW5nCi0jCiAjIENPTkZJR19ORVRfU0NIRUQgaXMgbm90IHNldAogQ09ORklHX05FVF9DTFNfUk9VVEU9eQogCkBAIC0zOTIsNDYgKzM5MiwxNTQgQEAKICMgTmV0d29yayB0ZXN0aW5nCiAjCiAjIENPTkZJR19ORVRfUEtUR0VOIGlzIG5vdCBzZXQKLUNPTkZJR19ORVRQT0xMPXkKLSMgQ09ORklHX05FVFBPTExfUlggaXMgbm90IHNldAotIyBDT05GSUdfTkVUUE9MTF9UUkFQIGlzIG5vdCBzZXQKLUNPTkZJR19ORVRfUE9MTF9DT05UUk9MTEVSPXkKICMgQ09ORklHX0hBTVJBRElPIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NBTiBpcyBub3Qgc2V0CiAjIENPTkZJR19JUkRBIGlzIG5vdCBzZXQKICMgQ09ORklHX0JUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FGX1JYUlBDIGlzIG5vdCBzZXQKKworIworIyBXaXJlbGVzcworIworIyBDT05GSUdfQ0ZHODAyMTEgaXMgbm90IHNldAorQ09ORklHX1dJUkVMRVNTX0VYVD15CisjIENPTkZJR19NQUM4MDIxMSBpcyBub3Qgc2V0CitDT05GSUdfSUVFRTgwMjExPW0KKyMgQ09ORklHX0lFRUU4MDIxMV9ERUJVRyBpcyBub3Qgc2V0CitDT05GSUdfSUVFRTgwMjExX0NSWVBUX1dFUD1tCitDT05GSUdfSUVFRTgwMjExX0NSWVBUX0NDTVA9bQorQ09ORklHX0lFRUU4MDIxMV9DUllQVF9US0lQPW0KK0NPTkZJR19JRUVFODAyMTFfU09GVE1BQz1tCisjIENPTkZJR19JRUVFODAyMTFfU09GVE1BQ19ERUJVRyBpcyBub3Qgc2V0CisjIENPTkZJR19SRktJTEwgaXMgbm90IHNldAorIyBDT05GSUdfTkVUXzlQIGlzIG5vdCBzZXQKKworIworIyBEZXZpY2UgRHJpdmVycworIworCisjCisjIEdlbmVyaWMgRHJpdmVyIE9wdGlvbnMKKyMKK0NPTkZJR19VRVZFTlRfSEVMUEVSX1BBVEg9Ii9zYmluL2hvdHBsdWciCitDT05GSUdfU1RBTkRBTE9ORT15CitDT05GSUdfUFJFVkVOVF9GSVJNV0FSRV9CVUlMRD15CitDT05GSUdfRldfTE9BREVSPW0KKyMgQ09ORklHX1NZU19IWVBFUlZJU09SIGlzIG5vdCBzZXQKK0NPTkZJR19DT05ORUNUT1I9bQorIyBDT05GSUdfTVREIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BBUlBPUlQgaXMgbm90IHNldAorQ09ORklHX0JMS19ERVY9eQorIyBDT05GSUdfQkxLX0RFVl9DT1dfQ09NTU9OIGlzIG5vdCBzZXQKK0NPTkZJR19CTEtfREVWX0xPT1A9eQorQ09ORklHX0JMS19ERVZfQ1JZUFRPTE9PUD1tCitDT05GSUdfQkxLX0RFVl9OQkQ9bQorQ09ORklHX0JMS19ERVZfUkFNPXkKK0NPTkZJR19CTEtfREVWX1JBTV9DT1VOVD0xNgorQ09ORklHX0JMS19ERVZfUkFNX1NJWkU9NDA5NgorIyBDT05GSUdfQkxLX0RFVl9YSVAgaXMgbm90IHNldAorQ09ORklHX0NEUk9NX1BLVENEVkQ9bQorQ09ORklHX0NEUk9NX1BLVENEVkRfQlVGRkVSUz04CisjIENPTkZJR19DRFJPTV9QS1RDRFZEX1dDQUNIRSBpcyBub3Qgc2V0CitDT05GSUdfQVRBX09WRVJfRVRIPW0KK0NPTkZJR19NSVNDX0RFVklDRVM9eQorIyBDT05GSUdfRUVQUk9NXzkzQ1g2IGlzIG5vdCBzZXQKKyMgQ09ORklHX0VOQ0xPU1VSRV9TRVJWSUNFUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9JREU9eQorIyBDT05GSUdfSURFIGlzIG5vdCBzZXQKKworIworIyBTQ1NJIGRldmljZSBzdXBwb3J0CisjCitDT05GSUdfUkFJRF9BVFRSUz1tCitDT05GSUdfU0NTST15CitDT05GSUdfU0NTSV9ETUE9eQorQ09ORklHX1NDU0lfVEdUPW0KKyMgQ09ORklHX1NDU0lfTkVUTElOSyBpcyBub3Qgc2V0CitDT05GSUdfU0NTSV9QUk9DX0ZTPXkKKworIworIyBTQ1NJIHN1cHBvcnQgdHlwZSAoZGlzaywgdGFwZSwgQ0QtUk9NKQorIworQ09ORklHX0JMS19ERVZfU0Q9eQorQ09ORklHX0NIUl9ERVZfU1Q9bQorQ09ORklHX0NIUl9ERVZfT1NTVD1tCitDT05GSUdfQkxLX0RFVl9TUj15CitDT05GSUdfQkxLX0RFVl9TUl9WRU5ET1I9eQorQ09ORklHX0NIUl9ERVZfU0c9bQorIyBDT05GSUdfQ0hSX0RFVl9TQ0ggaXMgbm90IHNldAorCisjCisjIFNvbWUgU0NTSSBkZXZpY2VzIChlLmcuIENEIGp1a2Vib3gpIHN1cHBvcnQgbXVsdGlwbGUgTFVOcworIworIyBDT05GSUdfU0NTSV9NVUxUSV9MVU4gaXMgbm90IHNldAorQ09ORklHX1NDU0lfQ09OU1RBTlRTPXkKKyMgQ09ORklHX1NDU0lfTE9HR0lORyBpcyBub3Qgc2V0CisjIENPTkZJR19TQ1NJX1NDQU5fQVNZTkMgaXMgbm90IHNldAorQ09ORklHX1NDU0lfV0FJVF9TQ0FOPW0KKworIworIyBTQ1NJIFRyYW5zcG9ydHMKKyMKKyMgQ09ORklHX1NDU0lfU1BJX0FUVFJTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDU0lfRkNfQVRUUlMgaXMgbm90IHNldAorQ09ORklHX1NDU0lfSVNDU0lfQVRUUlM9bQorQ09ORklHX1NDU0lfU0FTX0FUVFJTPW0KK0NPTkZJR19TQ1NJX1NBU19MSUJTQVM9bQorQ09ORklHX1NDU0lfU0FTX0hPU1RfU01QPXkKKyMgQ09ORklHX1NDU0lfU0FTX0xJQlNBU19ERUJVRyBpcyBub3Qgc2V0CitDT05GSUdfU0NTSV9TUlBfQVRUUlM9bQorQ09ORklHX1NDU0lfU1JQX1RHVF9BVFRSUz15CitDT05GSUdfU0NTSV9MT1dMRVZFTD15CitDT05GSUdfSVNDU0lfVENQPW0KKyMgQ09ORklHX1NDU0lfREVCVUcgaXMgbm90IHNldAorQ09ORklHX01EPXkKK0NPTkZJR19CTEtfREVWX01EPW0KK0NPTkZJR19NRF9MSU5FQVI9bQorQ09ORklHX01EX1JBSUQwPW0KK0NPTkZJR19NRF9SQUlEMT1tCisjIENPTkZJR19NRF9SQUlEMTAgaXMgbm90IHNldAorQ09ORklHX01EX1JBSUQ0NTY9bQorQ09ORklHX01EX1JBSUQ1X1JFU0hBUEU9eQorQ09ORklHX01EX01VTFRJUEFUSD1tCisjIENPTkZJR19NRF9GQVVMVFkgaXMgbm90IHNldAorQ09ORklHX0JMS19ERVZfRE09bQorIyBDT05GSUdfRE1fREVCVUcgaXMgbm90IHNldAorQ09ORklHX0RNX0NSWVBUPW0KK0NPTkZJR19ETV9TTkFQU0hPVD1tCitDT05GSUdfRE1fTUlSUk9SPW0KK0NPTkZJR19ETV9aRVJPPW0KK0NPTkZJR19ETV9NVUxUSVBBVEg9bQorQ09ORklHX0RNX01VTFRJUEFUSF9FTUM9bQorQ09ORklHX0RNX01VTFRJUEFUSF9SREFDPW0KK0NPTkZJR19ETV9NVUxUSVBBVEhfSFA9bQorIyBDT05GSUdfRE1fREVMQVkgaXMgbm90IHNldAorQ09ORklHX0RNX1VFVkVOVD15CiBDT05GSUdfTkVUREVWSUNFUz15CisjIENPTkZJR19ORVRERVZJQ0VTX01VTFRJUVVFVUUgaXMgbm90IHNldAogQ09ORklHX0RVTU1ZPW0KICMgQ09ORklHX0JPTkRJTkcgaXMgbm90IHNldAorQ09ORklHX01BQ1ZMQU49bQogQ09ORklHX0VRVUFMSVpFUj1tCiAjIENPTkZJR19UVU4gaXMgbm90IHNldAotCi0jCi0jIEV0aGVybmV0ICgxMCBvciAxMDBNYml0KQotIworQ09ORklHX1ZFVEg9bQorIyBDT05GSUdfUEhZTElCIGlzIG5vdCBzZXQKIENPTkZJR19ORVRfRVRIRVJORVQ9eQotQ09ORklHX01JST1tCisjIENPTkZJR19NSUkgaXMgbm90IHNldAogQ09ORklHX0hQTEFOQ0U9eQorIyBDT05GSUdfSUJNX05FV19FTUFDX1pNSUkgaXMgbm90IHNldAorIyBDT05GSUdfSUJNX05FV19FTUFDX1JHTUlJIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lCTV9ORVdfRU1BQ19UQUggaXMgbm90IHNldAorIyBDT05GSUdfSUJNX05FV19FTUFDX0VNQUM0IGlzIG5vdCBzZXQKKyMgQ09ORklHX0I0NCBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRERVZfMTAwMCBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRERVZfMTAwMDAgaXMgbm90IHNldAogCiAjCi0jIEV0aGVybmV0ICgxMDAwIE1iaXQpCisjIFdpcmVsZXNzIExBTgogIwotCi0jCi0jIEV0aGVybmV0ICgxMDAwMCBNYml0KQotIwotCi0jCi0jIFRva2VuIFJpbmcgZGV2aWNlcwotIwotCi0jCi0jIFdpcmVsZXNzIExBTiAobm9uLWhhbXJhZGlvKQotIwotIyBDT05GSUdfTkVUX1JBRElPIGlzIG5vdCBzZXQKLQotIwotIyBXYW4gaW50ZXJmYWNlcwotIworIyBDT05GSUdfV0xBTl9QUkU4MDIxMSBpcyBub3Qgc2V0CisjIENPTkZJR19XTEFOXzgwMjExIGlzIG5vdCBzZXQKICMgQ09ORklHX1dBTiBpcyBub3Qgc2V0CiBDT05GSUdfUFBQPW0KICMgQ09ORklHX1BQUF9NVUxUSUxJTksgaXMgbm90IHNldApAQCAtNDQwLDI4ICs1NDgsMjggQEAKIENPTkZJR19QUFBfU1lOQ19UVFk9bQogQ09ORklHX1BQUF9ERUZMQVRFPW0KIENPTkZJR19QUFBfQlNEQ09NUD1tCitDT05GSUdfUFBQX01QUEU9bQogQ09ORklHX1BQUE9FPW0KK0NPTkZJR19QUFBPTDJUUD1tCiBDT05GSUdfU0xJUD1tCiBDT05GSUdfU0xJUF9DT01QUkVTU0VEPXkKK0NPTkZJR19TTEhDPW0KIENPTkZJR19TTElQX1NNQVJUPXkKIENPTkZJR19TTElQX01PREVfU0xJUDY9eQotQ09ORklHX1NIQVBFUj1tCiBDT05GSUdfTkVUQ09OU09MRT1tCi0KLSMKLSMgSVNETiBzdWJzeXN0ZW0KLSMKK0NPTkZJR19ORVRDT05TT0xFX0RZTkFNSUM9eQorQ09ORklHX05FVFBPTEw9eQorIyBDT05GSUdfTkVUUE9MTF9UUkFQIGlzIG5vdCBzZXQKK0NPTkZJR19ORVRfUE9MTF9DT05UUk9MTEVSPXkKICMgQ09ORklHX0lTRE4gaXMgbm90IHNldAotCi0jCi0jIFRlbGVwaG9ueSBTdXBwb3J0Ci0jCiAjIENPTkZJR19QSE9ORSBpcyBub3Qgc2V0CiAKICMKICMgSW5wdXQgZGV2aWNlIHN1cHBvcnQKICMKIENPTkZJR19JTlBVVD15CitDT05GSUdfSU5QVVRfRkZfTUVNTEVTUz1tCisjIENPTkZJR19JTlBVVF9QT0xMREVWIGlzIG5vdCBzZXQKIAogIwogIyBVc2VybGFuZCBpbnRlcmZhY2VzCkBAIC00NzEsNyArNTc5LDYgQEAKIENPTkZJR19JTlBVVF9NT1VTRURFVl9TQ1JFRU5fWD0xMDI0CiBDT05GSUdfSU5QVVRfTU9VU0VERVZfU0NSRUVOX1k9NzY4CiAjIENPTkZJR19JTlBVVF9KT1lERVYgaXMgbm90IHNldAotIyBDT05GSUdfSU5QVVRfVFNERVYgaXMgbm90IHNldAogIyBDT05GSUdfSU5QVVRfRVZERVYgaXMgbm90IHNldAogIyBDT05GSUdfSU5QVVRfRVZCVUcgaXMgbm90IHNldAogCkBAIC00ODQsMTkgKzU5MSwzNSBAQAogIyBDT05GSUdfS0VZQk9BUkRfTEtLQkQgaXMgbm90IHNldAogIyBDT05GSUdfS0VZQk9BUkRfWFRLQkQgaXMgbm90IHNldAogIyBDT05GSUdfS0VZQk9BUkRfTkVXVE9OIGlzIG5vdCBzZXQKKyMgQ09ORklHX0tFWUJPQVJEX1NUT1dBV0FZIGlzIG5vdCBzZXQKK0NPTkZJR19LRVlCT0FSRF9ISUxfT0xEPXkKK0NPTkZJR19LRVlCT0FSRF9ISUw9eQogQ09ORklHX0lOUFVUX01PVVNFPXkKIENPTkZJR19NT1VTRV9QUzI9bQorQ09ORklHX01PVVNFX1BTMl9BTFBTPXkKK0NPTkZJR19NT1VTRV9QUzJfTE9HSVBTMlBQPXkKK0NPTkZJR19NT1VTRV9QUzJfU1lOQVBUSUNTPXkKK0NPTkZJR19NT1VTRV9QUzJfTElGRUJPT0s9eQorQ09ORklHX01PVVNFX1BTMl9UUkFDS1BPSU5UPXkKKyMgQ09ORklHX01PVVNFX1BTMl9UT1VDSEtJVCBpcyBub3Qgc2V0CiBDT05GSUdfTU9VU0VfU0VSSUFMPW0KICMgQ09ORklHX01PVVNFX1ZTWFhYQUEgaXMgbm90IHNldAorQ09ORklHX01PVVNFX0hJTD1tCiAjIENPTkZJR19JTlBVVF9KT1lTVElDSyBpcyBub3Qgc2V0CisjIENPTkZJR19JTlBVVF9UQUJMRVQgaXMgbm90IHNldAogIyBDT05GSUdfSU5QVVRfVE9VQ0hTQ1JFRU4gaXMgbm90IHNldAotIyBDT05GSUdfSU5QVVRfTUlTQyBpcyBub3Qgc2V0CitDT05GSUdfSU5QVVRfTUlTQz15CisjIENPTkZJR19JTlBVVF9NNjhLX0JFRVAgaXMgbm90IHNldAorIyBDT05GSUdfSU5QVVRfVUlOUFVUIGlzIG5vdCBzZXQKK0NPTkZJR19IUF9TRENfUlRDPW0KIAogIwogIyBIYXJkd2FyZSBJL08gcG9ydHMKICMKLUNPTkZJR19TRVJJTz1tCi1DT05GSUdfU0VSSU9fU0VSUE9SVD1tCitDT05GSUdfU0VSSU89eQorIyBDT05GSUdfU0VSSU9fU0VSUE9SVCBpcyBub3Qgc2V0CitDT05GSUdfSFBfU0RDPXkKK0NPTkZJR19ISUxfTUxDPXkKIENPTkZJR19TRVJJT19MSUJQUzI9bQogIyBDT05GSUdfU0VSSU9fUkFXIGlzIG5vdCBzZXQKICMgQ09ORklHX0dBTUVQT1JUIGlzIG5vdCBzZXQKQEAgLTUwNyw2ICs2MzAsNyBAQAogQ09ORklHX1ZUPXkKIENPTkZJR19WVF9DT05TT0xFPXkKIENPTkZJR19IV19DT05TT0xFPXkKK0NPTkZJR19WVF9IV19DT05TT0xFX0JJTkRJTkc9eQogIyBDT05GSUdfU0VSSUFMX05PTlNUQU5EQVJEIGlzIG5vdCBzZXQKIAogIwpAQCAtNTIwLDkwICs2NDQsMTE0IEBACiBDT05GSUdfVU5JWDk4X1BUWVM9eQogQ09ORklHX0xFR0FDWV9QVFlTPXkKIENPTkZJR19MRUdBQ1lfUFRZX0NPVU5UPTI1NgotCi0jCi0jIElQTUkKLSMKICMgQ09ORklHX0lQTUlfSEFORExFUiBpcyBub3Qgc2V0Ci0KLSMKLSMgV2F0Y2hkb2cgQ2FyZHMKLSMKLSMgQ09ORklHX1dBVENIRE9HIGlzIG5vdCBzZXQKLUNPTkZJR19HRU5fUlRDPXkKKyMgQ09ORklHX0hXX1JBTkRPTSBpcyBub3Qgc2V0CitDT05GSUdfR0VOX1JUQz1tCiBDT05GSUdfR0VOX1JUQ19YPXkKLSMgQ09ORklHX0RUTEsgaXMgbm90IHNldAogIyBDT05GSUdfUjM5NjQgaXMgbm90IHNldAotCi0jCi0jIEZ0YXBlLCB0aGUgZmxvcHB5IHRhcGUgZGV2aWNlIGRyaXZlcgotIwotIyBDT05GSUdfRFJNIGlzIG5vdCBzZXQKICMgQ09ORklHX1JBV19EUklWRVIgaXMgbm90IHNldAotCi0jCi0jIFRQTSBkZXZpY2VzCi0jCi0KLSMKLSMgSTJDIHN1cHBvcnQKLSMKKyMgQ09ORklHX1RDR19UUE0gaXMgbm90IHNldAogIyBDT05GSUdfSTJDIGlzIG5vdCBzZXQKIAogIwotIyBEYWxsYXMncyAxLXdpcmUgYnVzCisjIFNQSSBzdXBwb3J0CiAjCisjIENPTkZJR19TUEkgaXMgbm90IHNldAorIyBDT05GSUdfU1BJX01BU1RFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19XMSBpcyBub3Qgc2V0CisjIENPTkZJR19QT1dFUl9TVVBQTFkgaXMgbm90IHNldAorIyBDT05GSUdfSFdNT04gaXMgbm90IHNldAorIyBDT05GSUdfVEhFUk1BTCBpcyBub3Qgc2V0CisjIENPTkZJR19XQVRDSERPRyBpcyBub3Qgc2V0CiAKICMKLSMgTWlzYyBkZXZpY2VzCisjIFNvbmljcyBTaWxpY29uIEJhY2twbGFuZQogIworQ09ORklHX1NTQl9QT1NTSUJMRT15CisjIENPTkZJR19TU0IgaXMgbm90IHNldAorCisjCisjIE11bHRpZnVuY3Rpb24gZGV2aWNlIGRyaXZlcnMKKyMKKyMgQ09ORklHX01GRF9TTTUwMSBpcyBub3Qgc2V0CiAKICMKICMgTXVsdGltZWRpYSBkZXZpY2VzCiAjCiAjIENPTkZJR19WSURFT19ERVYgaXMgbm90IHNldAotCi0jCi0jIERpZ2l0YWwgVmlkZW8gQnJvYWRjYXN0aW5nIERldmljZXMKLSMKLSMgQ09ORklHX0RWQiBpcyBub3Qgc2V0CisjIENPTkZJR19EVkJfQ09SRSBpcyBub3Qgc2V0CisjIENPTkZJR19EQUIgaXMgbm90IHNldAogCiAjCiAjIEdyYXBoaWNzIHN1cHBvcnQKICMKLSMgQ09ORklHX0ZCIGlzIG5vdCBzZXQKKyMgQ09ORklHX1ZHQVNUQVRFIGlzIG5vdCBzZXQKKyMgQ09ORklHX1ZJREVPX09VVFBVVF9DT05UUk9MIGlzIG5vdCBzZXQKK0NPTkZJR19GQj15CisjIENPTkZJR19GSVJNV0FSRV9FRElEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZCX0REQyBpcyBub3Qgc2V0CitDT05GSUdfRkJfQ0ZCX0ZJTExSRUNUPXkKKyMgQ09ORklHX0ZCX0NGQl9DT1BZQVJFQSBpcyBub3Qgc2V0CitDT05GSUdfRkJfQ0ZCX0lNQUdFQkxJVD15CisjIENPTkZJR19GQl9DRkJfUkVWX1BJWEVMU19JTl9CWVRFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZCX1NZU19GSUxMUkVDVCBpcyBub3Qgc2V0CisjIENPTkZJR19GQl9TWVNfQ09QWUFSRUEgaXMgbm90IHNldAorIyBDT05GSUdfRkJfU1lTX0lNQUdFQkxJVCBpcyBub3Qgc2V0CisjIENPTkZJR19GQl9TWVNfRk9QUyBpcyBub3Qgc2V0CitDT05GSUdfRkJfREVGRVJSRURfSU89eQorIyBDT05GSUdfRkJfU1ZHQUxJQiBpcyBub3Qgc2V0CisjIENPTkZJR19GQl9NQUNNT0RFUyBpcyBub3Qgc2V0CisjIENPTkZJR19GQl9CQUNLTElHSFQgaXMgbm90IHNldAorIyBDT05GSUdfRkJfTU9ERV9IRUxQRVJTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZCX1RJTEVCTElUVElORyBpcyBub3Qgc2V0CisKKyMKKyMgRnJhbWUgYnVmZmVyIGhhcmR3YXJlIGRyaXZlcnMKKyMKK0NPTkZJR19GQl9IUDMwMD15CisjIENPTkZJR19GQl9VVkVTQSBpcyBub3Qgc2V0CisjIENPTkZJR19GQl9TMUQxM1hYWCBpcyBub3Qgc2V0CisjIENPTkZJR19GQl9WSVJUVUFMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JBQ0tMSUdIVF9MQ0RfU1VQUE9SVCBpcyBub3Qgc2V0CisKKyMKKyMgRGlzcGxheSBkZXZpY2Ugc3VwcG9ydAorIworIyBDT05GSUdfRElTUExBWV9TVVBQT1JUIGlzIG5vdCBzZXQKIAogIwogIyBDb25zb2xlIGRpc3BsYXkgZHJpdmVyIHN1cHBvcnQKICMKIENPTkZJR19EVU1NWV9DT05TT0xFPXkKK0NPTkZJR19GUkFNRUJVRkZFUl9DT05TT0xFPXkKKyMgQ09ORklHX0ZSQU1FQlVGRkVSX0NPTlNPTEVfREVURUNUX1BSSU1BUlkgaXMgbm90IHNldAorIyBDT05GSUdfRlJBTUVCVUZGRVJfQ09OU09MRV9ST1RBVElPTiBpcyBub3Qgc2V0CisjIENPTkZJR19GT05UUyBpcyBub3Qgc2V0CitDT05GSUdfRk9OVF84eDg9eQorQ09ORklHX0ZPTlRfOHgxNj15CitDT05GSUdfTE9HTz15CisjIENPTkZJR19MT0dPX0xJTlVYX01PTk8gaXMgbm90IHNldAorIyBDT05GSUdfTE9HT19MSU5VWF9WR0ExNiBpcyBub3Qgc2V0CitDT05GSUdfTE9HT19MSU5VWF9DTFVUMjI0PXkKIAogIwogIyBTb3VuZAogIwogIyBDT05GSUdfU09VTkQgaXMgbm90IHNldAotCi0jCi0jIFVTQiBzdXBwb3J0Ci0jCi0jIENPTkZJR19VU0JfQVJDSF9IQVNfSENEIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VTQl9BUkNIX0hBU19PSENJIGlzIG5vdCBzZXQKLQotIwotIyBVU0IgR2FkZ2V0IFN1cHBvcnQKLSMKLSMgQ09ORklHX1VTQl9HQURHRVQgaXMgbm90IHNldAotCi0jCi0jIE1NQy9TRCBDYXJkIHN1cHBvcnQKLSMKK0NPTkZJR19ISURfU1VQUE9SVD15CitDT05GSUdfSElEPW0KKyMgQ09ORklHX0hJRF9ERUJVRyBpcyBub3Qgc2V0CitDT05GSUdfSElEUkFXPXkKKyMgQ09ORklHX1VTQl9TVVBQT1JUIGlzIG5vdCBzZXQKICMgQ09ORklHX01NQyBpcyBub3Qgc2V0CisjIENPTkZJR19NRU1TVElDSyBpcyBub3Qgc2V0CisjIENPTkZJR19ORVdfTEVEUyBpcyBub3Qgc2V0CisjIENPTkZJR19SVENfQ0xBU1MgaXMgbm90IHNldAogCiAjCi0jIEluZmluaUJhbmQgc3VwcG9ydAorIyBVc2Vyc3BhY2UgSS9PCiAjCi0jIENPTkZJR19JTkZJTklCQU5EIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VJTyBpcyBub3Qgc2V0CiAKICMKICMgQ2hhcmFjdGVyIGRldmljZXMKQEAgLTYxNCwxMCArNzYyLDExIEBACiAjCiBDT05GSUdfRVhUMl9GUz15CiAjIENPTkZJR19FWFQyX0ZTX1hBVFRSIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VYVDJfRlNfWElQIGlzIG5vdCBzZXQKIENPTkZJR19FWFQzX0ZTPXkKICMgQ09ORklHX0VYVDNfRlNfWEFUVFIgaXMgbm90IHNldAorIyBDT05GSUdfRVhUNERFVl9GUyBpcyBub3Qgc2V0CiBDT05GSUdfSkJEPXkKLSMgQ09ORklHX0pCRF9ERUJVRyBpcyBub3Qgc2V0CiBDT05GSUdfUkVJU0VSRlNfRlM9bQogIyBDT05GSUdfUkVJU0VSRlNfQ0hFQ0sgaXMgbm90IHNldAogIyBDT05GSUdfUkVJU0VSRlNfUFJPQ19JTkZPIGlzIG5vdCBzZXQKQEAgLTYyOCwyNSArNzc3LDI5IEBACiAjIENPTkZJR19KRlNfREVCVUcgaXMgbm90IHNldAogIyBDT05GSUdfSkZTX1NUQVRJU1RJQ1MgaXMgbm90IHNldAogQ09ORklHX0ZTX1BPU0lYX0FDTD15Ci0KLSMKLSMgWEZTIHN1cHBvcnQKLSMKIENPTkZJR19YRlNfRlM9bQotQ09ORklHX1hGU19FWFBPUlQ9eQotIyBDT05GSUdfWEZTX1JUIGlzIG5vdCBzZXQKICMgQ09ORklHX1hGU19RVU9UQSBpcyBub3Qgc2V0CiAjIENPTkZJR19YRlNfU0VDVVJJVFkgaXMgbm90IHNldAogIyBDT05GSUdfWEZTX1BPU0lYX0FDTCBpcyBub3Qgc2V0Ci1DT05GSUdfTUlOSVhfRlM9eQotIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfWEZTX1JUIGlzIG5vdCBzZXQKK0NPTkZJR19HRlMyX0ZTPW0KK0NPTkZJR19HRlMyX0ZTX0xPQ0tJTkdfTk9MT0NLPW0KK0NPTkZJR19HRlMyX0ZTX0xPQ0tJTkdfRExNPW0KK0NPTkZJR19PQ0ZTMl9GUz1tCisjIENPTkZJR19PQ0ZTMl9ERUJVR19NQVNLTE9HIGlzIG5vdCBzZXQKKyMgQ09ORklHX09DRlMyX0RFQlVHX0ZTIGlzIG5vdCBzZXQKK0NPTkZJR19ETk9USUZZPXkKK0NPTkZJR19JTk9USUZZPXkKK0NPTkZJR19JTk9USUZZX1VTRVI9eQogQ09ORklHX1FVT1RBPXkKK0NPTkZJR19RVU9UQV9ORVRMSU5LX0lOVEVSRkFDRT15CisjIENPTkZJR19QUklOVF9RVU9UQV9XQVJOSU5HIGlzIG5vdCBzZXQKICMgQ09ORklHX1FGTVRfVjEgaXMgbm90IHNldAogIyBDT05GSUdfUUZNVF9WMiBpcyBub3Qgc2V0CiBDT05GSUdfUVVPVEFDVEw9eQotQ09ORklHX0ROT1RJRlk9eQogQ09ORklHX0FVVE9GU19GUz1tCiBDT05GSUdfQVVUT0ZTNF9GUz1tCitDT05GSUdfRlVTRV9GUz1tCiAKICMKICMgQ0QtUk9NL0RWRCBGaWxlc3lzdGVtcwpAQCAtNjU0LDcgKzgwNyw2IEBACiBDT05GSUdfSVNPOTY2MF9GUz15CiBDT05GSUdfSk9MSUVUPXkKIENPTkZJR19aSVNPRlM9eQotQ09ORklHX1pJU09GU19GUz15CiBDT05GSUdfVURGX0ZTPW0KIENPTkZJR19VREZfTkxTPXkKIApAQCAtNjczLDEzICs4MjUsMTIgQEAKICMKIENPTkZJR19QUk9DX0ZTPXkKIENPTkZJR19QUk9DX0tDT1JFPXkKK0NPTkZJR19QUk9DX1NZU0NUTD15CiBDT05GSUdfU1lTRlM9eQotIyBDT05GSUdfREVWRlNfRlMgaXMgbm90IHNldAotIyBDT05GSUdfREVWUFRTX0ZTX1hBVFRSIGlzIG5vdCBzZXQKIENPTkZJR19UTVBGUz15Ci0jIENPTkZJR19UTVBGU19YQVRUUiBpcyBub3Qgc2V0CisjIENPTkZJR19UTVBGU19QT1NJWF9BQ0wgaXMgbm90IHNldAogIyBDT05GSUdfSFVHRVRMQl9QQUdFIGlzIG5vdCBzZXQKLUNPTkZJR19SQU1GUz15CitDT05GSUdfQ09ORklHRlNfRlM9bQogCiAjCiAjIE1pc2NlbGxhbmVvdXMgZmlsZXN5c3RlbXMKQEAgLTY5Myw0NCArODQ0LDQwIEBACiAjIENPTkZJR19FRlNfRlMgaXMgbm90IHNldAogQ09ORklHX0NSQU1GUz1tCiAjIENPTkZJR19WWEZTX0ZTIGlzIG5vdCBzZXQKK0NPTkZJR19NSU5JWF9GUz15CiBDT05GSUdfSFBGU19GUz1tCiAjIENPTkZJR19RTlg0RlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAogQ09ORklHX1NZU1ZfRlM9bQogQ09ORklHX1VGU19GUz1tCiAjIENPTkZJR19VRlNfRlNfV1JJVEUgaXMgbm90IHNldAotCi0jCi0jIE5ldHdvcmsgRmlsZSBTeXN0ZW1zCi0jCisjIENPTkZJR19VRlNfREVCVUcgaXMgbm90IHNldAorQ09ORklHX05FVFdPUktfRklMRVNZU1RFTVM9eQogQ09ORklHX05GU19GUz15CiBDT05GSUdfTkZTX1YzPXkKKyMgQ09ORklHX05GU19WM19BQ0wgaXMgbm90IHNldAogQ09ORklHX05GU19WND15CiAjIENPTkZJR19ORlNfRElSRUNUSU8gaXMgbm90IHNldAogQ09ORklHX05GU0Q9bQogQ09ORklHX05GU0RfVjM9eQotQ09ORklHX05GU0RfVjQ9eQorIyBDT05GSUdfTkZTRF9WM19BQ0wgaXMgbm90IHNldAorIyBDT05GSUdfTkZTRF9WNCBpcyBub3Qgc2V0CiBDT05GSUdfTkZTRF9UQ1A9eQogQ09ORklHX1JPT1RfTkZTPXkKIENPTkZJR19MT0NLRD15CiBDT05GSUdfTE9DS0RfVjQ9eQogQ09ORklHX0VYUE9SVEZTPW0KK0NPTkZJR19ORlNfQ09NTU9OPXkKIENPTkZJR19TVU5SUEM9eQogQ09ORklHX1NVTlJQQ19HU1M9eQorQ09ORklHX1NVTlJQQ19CSU5EMzQ9eQogQ09ORklHX1JQQ1NFQ19HU1NfS1JCNT15CiAjIENPTkZJR19SUENTRUNfR1NTX1NQS00zIGlzIG5vdCBzZXQKIENPTkZJR19TTUJfRlM9bQogQ09ORklHX1NNQl9OTFNfREVGQVVMVD15CiBDT05GSUdfU01CX05MU19SRU1PVEU9ImNwNDM3IgogIyBDT05GSUdfQ0lGUyBpcyBub3Qgc2V0Ci1DT05GSUdfTkNQX0ZTPW0KLSMgQ09ORklHX05DUEZTX1BBQ0tFVF9TSUdOSU5HIGlzIG5vdCBzZXQKLSMgQ09ORklHX05DUEZTX0lPQ1RMX0xPQ0tJTkcgaXMgbm90IHNldAotIyBDT05GSUdfTkNQRlNfU1RST05HIGlzIG5vdCBzZXQKLUNPTkZJR19OQ1BGU19ORlNfTlM9eQotQ09ORklHX05DUEZTX09TMl9OUz15Ci0jIENPTkZJR19OQ1BGU19TTUFMTERPUyBpcyBub3Qgc2V0Ci1DT05GSUdfTkNQRlNfTkxTPXkKLSMgQ09ORklHX05DUEZTX0VYVFJBUyBpcyBub3Qgc2V0CisjIENPTkZJR19OQ1BfRlMgaXMgbm90IHNldAogQ09ORklHX0NPREFfRlM9bQogIyBDT05GSUdfQ09EQV9GU19PTERfQVBJIGlzIG5vdCBzZXQKICMgQ09ORklHX0FGU19GUyBpcyBub3Qgc2V0CkBAIC03NDAsMTAgKzg4Nyw2IEBACiAjCiAjIENPTkZJR19QQVJUSVRJT05fQURWQU5DRUQgaXMgbm90IHNldAogQ09ORklHX01TRE9TX1BBUlRJVElPTj15Ci0KLSMKLSMgTmF0aXZlIExhbmd1YWdlIFN1cHBvcnQKLSMKIENPTkZJR19OTFM9eQogQ09ORklHX05MU19ERUZBVUxUPSJpc284ODU5LTEiCiBDT05GSUdfTkxTX0NPREVQQUdFXzQzNz15CkBAIC03ODQsMzUgKzkyNyw0MiBAQAogQ09ORklHX05MU19LT0k4X1I9bQogQ09ORklHX05MU19LT0k4X1U9bQogQ09ORklHX05MU19VVEY4PW0KK0NPTkZJR19ETE09bQorIyBDT05GSUdfRExNX0RFQlVHIGlzIG5vdCBzZXQKIAogIwogIyBLZXJuZWwgaGFja2luZwogIwogIyBDT05GSUdfUFJJTlRLX1RJTUUgaXMgbm90IHNldAotQ09ORklHX0RFQlVHX0tFUk5FTD15CitDT05GSUdfRU5BQkxFX1dBUk5fREVQUkVDQVRFRD15CitDT05GSUdfRU5BQkxFX01VU1RfQ0hFQ0s9eQogQ09ORklHX01BR0lDX1NZU1JRPXkKLUNPTkZJR19MT0dfQlVGX1NISUZUPTE2Ci0jIENPTkZJR19TQ0hFRFNUQVRTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0RFQlVHX1NMQUIgaXMgbm90IHNldAotIyBDT05GSUdfREVCVUdfU1BJTkxPQ0sgaXMgbm90IHNldAotIyBDT05GSUdfREVCVUdfU1BJTkxPQ0tfU0xFRVAgaXMgbm90IHNldAotIyBDT05GSUdfREVCVUdfS09CSkVDVCBpcyBub3Qgc2V0Ci1DT05GSUdfREVCVUdfQlVHVkVSQk9TRT15Ci0jIENPTkZJR19ERUJVR19JTkZPIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VOVVNFRF9TWU1CT0xTIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZSQU1FX1BPSU5URVIgaXMgbm90IHNldAorIyBDT05GSUdfSEVBREVSU19DSEVDSyBpcyBub3Qgc2V0CisjIENPTkZJR19ERUJVR19LRVJORUwgaXMgbm90IHNldAorQ09ORklHX0RFQlVHX0JVR1ZFUkJPU0U9eQorIyBDT05GSUdfU0FNUExFUyBpcyBub3Qgc2V0CiAKICMKICMgU2VjdXJpdHkgb3B0aW9ucwogIwogIyBDT05GSUdfS0VZUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TRUNVUklUWSBpcyBub3Qgc2V0Ci0KLSMKLSMgQ3J5cHRvZ3JhcGhpYyBvcHRpb25zCi0jCisjIENPTkZJR19TRUNVUklUWV9GSUxFX0NBUEFCSUxJVElFUyBpcyBub3Qgc2V0CitDT05GSUdfWE9SX0JMT0NLUz1tCitDT05GSUdfQVNZTkNfQ09SRT1tCitDT05GSUdfQVNZTkNfTUVNQ1BZPW0KK0NPTkZJR19BU1lOQ19YT1I9bQogQ09ORklHX0NSWVBUTz15CitDT05GSUdfQ1JZUFRPX0FMR0FQST15CitDT05GSUdfQ1JZUFRPX0FFQUQ9bQorQ09ORklHX0NSWVBUT19CTEtDSVBIRVI9eQorQ09ORklHX0NSWVBUT19TRVFJVj1tCitDT05GSUdfQ1JZUFRPX0hBU0g9eQorQ09ORklHX0NSWVBUT19NQU5BR0VSPXkKIENPTkZJR19DUllQVE9fSE1BQz15CitDT05GSUdfQ1JZUFRPX1hDQkM9bQogQ09ORklHX0NSWVBUT19OVUxMPW0KIENPTkZJR19DUllQVE9fTUQ0PW0KIENPTkZJR19DUllQVE9fTUQ1PXkKQEAgLTgyMSw5ICs5NzEsMjEgQEAKIENPTkZJR19DUllQVE9fU0hBNTEyPW0KIENPTkZJR19DUllQVE9fV1A1MTI9bQogQ09ORklHX0NSWVBUT19UR1IxOTI9bQorQ09ORklHX0NSWVBUT19HRjEyOE1VTD1tCitDT05GSUdfQ1JZUFRPX0VDQj1tCitDT05GSUdfQ1JZUFRPX0NCQz15CitDT05GSUdfQ1JZUFRPX1BDQkM9bQorQ09ORklHX0NSWVBUT19MUlc9bQorQ09ORklHX0NSWVBUT19YVFM9bQorQ09ORklHX0NSWVBUT19DVFI9bQorQ09ORklHX0NSWVBUT19HQ009bQorQ09ORklHX0NSWVBUT19DQ009bQorQ09ORklHX0NSWVBUT19DUllQVEQ9bQogQ09ORklHX0NSWVBUT19ERVM9eQorQ09ORklHX0NSWVBUT19GQ1JZUFQ9bQogQ09ORklHX0NSWVBUT19CTE9XRklTSD1tCiBDT05GSUdfQ1JZUFRPX1RXT0ZJU0g9bQorQ09ORklHX0NSWVBUT19UV09GSVNIX0NPTU1PTj1tCiBDT05GSUdfQ1JZUFRPX1NFUlBFTlQ9bQogQ09ORklHX0NSWVBUT19BRVM9bQogQ09ORklHX0NSWVBUT19DQVNUNT1tCkBAIC04MzIsMjAgKzk5NCwzNSBAQAogQ09ORklHX0NSWVBUT19BUkM0PW0KIENPTkZJR19DUllQVE9fS0hBWkFEPW0KIENPTkZJR19DUllQVE9fQU5VQklTPW0KK0NPTkZJR19DUllQVE9fU0VFRD1tCitDT05GSUdfQ1JZUFRPX1NBTFNBMjA9bQogQ09ORklHX0NSWVBUT19ERUZMQVRFPW0KIENPTkZJR19DUllQVE9fTUlDSEFFTF9NSUM9bQogQ09ORklHX0NSWVBUT19DUkMzMkM9bQorQ09ORklHX0NSWVBUT19DQU1FTExJQT1tCiBDT05GSUdfQ1JZUFRPX1RFU1Q9bQotCi0jCi0jIEhhcmR3YXJlIGNyeXB0byBkZXZpY2VzCi0jCitDT05GSUdfQ1JZUFRPX0FVVEhFTkM9bQorQ09ORklHX0NSWVBUT19MWk89bQorIyBDT05GSUdfQ1JZUFRPX0hXIGlzIG5vdCBzZXQKIAogIwogIyBMaWJyYXJ5IHJvdXRpbmVzCiAjCitDT05GSUdfQklUUkVWRVJTRT15CiBDT05GSUdfQ1JDX0NDSVRUPW0KK0NPTkZJR19DUkMxNj1tCisjIENPTkZJR19DUkNfSVRVX1QgaXMgbm90IHNldAogQ09ORklHX0NSQzMyPXkKKyMgQ09ORklHX0NSQzcgaXMgbm90IHNldAogQ09ORklHX0xJQkNSQzMyQz1tCiBDT05GSUdfWkxJQl9JTkZMQVRFPXkKIENPTkZJR19aTElCX0RFRkxBVEU9bQorQ09ORklHX0xaT19DT01QUkVTUz1tCitDT05GSUdfTFpPX0RFQ09NUFJFU1M9bQorQ09ORklHX1RFWFRTRUFSQ0g9eQorQ09ORklHX1RFWFRTRUFSQ0hfS01QPW0KK0NPTkZJR19URVhUU0VBUkNIX0JNPW0KK0NPTkZJR19URVhUU0VBUkNIX0ZTTT1tCitDT05GSUdfUExJU1Q9eQorQ09ORklHX0hBU19JT01FTT15CitDT05GSUdfSEFTX0RNQT15CmRpZmYgLS1naXQgYS9hcmNoL202OGsvY29uZmlncy9tYWNfZGVmY29uZmlnIGIvYXJjaC9tNjhrL2NvbmZpZ3MvbWFjX2RlZmNvbmZpZwppbmRleCBmZjlkZmZhLi43MzhiY2E2IDEwMDY0NAotLS0gYS9hcmNoL202OGsvY29uZmlncy9tYWNfZGVmY29uZmlnCisrKyBiL2FyY2gvbTY4ay9jb25maWdzL21hY19kZWZjb25maWcKQEAgLTEsNjMgKzEsMTExIEBACiAjCiAjIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIG1ha2UgY29uZmlnOiBkb24ndCBlZGl0Ci0jIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMTItcmM2LW02OGsKLSMgVHVlIEp1biAgNyAyMDozNDo0NSAyMDA1CisjIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMjUtcmM4CisjIFdlZCBBcHIgIDIgMjA6NDY6MTQgMjAwOAogIwogQ09ORklHX002OEs9eQogQ09ORklHX01NVT15Ci1DT05GSUdfVUlEMTY9eQogQ09ORklHX1JXU0VNX0dFTkVSSUNfU1BJTkxPQ0s9eQorIyBDT05GSUdfQVJDSF9IQVNfSUxPRzJfVTMyIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfSEFTX0lMT0cyX1U2NCBpcyBub3Qgc2V0CitDT05GSUdfR0VORVJJQ19IV0VJR0hUPXkKIENPTkZJR19HRU5FUklDX0NBTElCUkFURV9ERUxBWT15Ci0KLSMKLSMgQ29kZSBtYXR1cml0eSBsZXZlbCBvcHRpb25zCi0jCi1DT05GSUdfRVhQRVJJTUVOVEFMPXkKLUNPTkZJR19DTEVBTl9DT01QSUxFPXkKLUNPTkZJR19CUk9LRU5fT05fU01QPXkKLUNPTkZJR19JTklUX0VOVl9BUkdfTElNSVQ9MzIKK0NPTkZJR19USU1FX0xPV19SRVM9eQorQ09ORklHX0dFTkVSSUNfSU9NQVA9eQorQ09ORklHX05PX0lPUE9SVD15CisjIENPTkZJR19OT19ETUEgaXMgbm90IHNldAorQ09ORklHX0FSQ0hfU1VQUE9SVFNfQU9VVD15CitDT05GSUdfSFo9MTAwCitDT05GSUdfREVGQ09ORklHX0xJU1Q9Ii9saWIvbW9kdWxlcy8kVU5BTUVfUkVMRUFTRS8uY29uZmlnIgogCiAjCiAjIEdlbmVyYWwgc2V0dXAKICMKK0NPTkZJR19FWFBFUklNRU5UQUw9eQorQ09ORklHX0JST0tFTl9PTl9TTVA9eQorQ09ORklHX0lOSVRfRU5WX0FSR19MSU1JVD0zMgogQ09ORklHX0xPQ0FMVkVSU0lPTj0iLW1hYyIKK0NPTkZJR19MT0NBTFZFUlNJT05fQVVUTz15CiBDT05GSUdfU1dBUD15CiBDT05GSUdfU1lTVklQQz15CitDT05GSUdfU1lTVklQQ19TWVNDVEw9eQogQ09ORklHX1BPU0lYX01RVUVVRT15CiBDT05GSUdfQlNEX1BST0NFU1NfQUNDVD15CiAjIENPTkZJR19CU0RfUFJPQ0VTU19BQ0NUX1YzIGlzIG5vdCBzZXQKLUNPTkZJR19TWVNDVEw9eQotQ09ORklHX0FVRElUPXkKLUNPTkZJR19IT1RQTFVHPXkKLUNPTkZJR19LT0JKRUNUX1VFVkVOVD15CisjIENPTkZJR19UQVNLU1RBVFMgaXMgbm90IHNldAorIyBDT05GSUdfQVVESVQgaXMgbm90IHNldAogIyBDT05GSUdfSUtDT05GSUcgaXMgbm90IHNldAorQ09ORklHX0xPR19CVUZfU0hJRlQ9MTQKKyMgQ09ORklHX0NHUk9VUFMgaXMgbm90IHNldAorIyBDT05GSUdfR1JPVVBfU0NIRUQgaXMgbm90IHNldAorIyBDT05GSUdfU1lTRlNfREVQUkVDQVRFRF9WMiBpcyBub3Qgc2V0CitDT05GSUdfUkVMQVk9eQorQ09ORklHX05BTUVTUEFDRVM9eQorIyBDT05GSUdfVVRTX05TIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lQQ19OUyBpcyBub3Qgc2V0CisjIENPTkZJR19VU0VSX05TIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BJRF9OUyBpcyBub3Qgc2V0CitDT05GSUdfQkxLX0RFVl9JTklUUkQ9eQorQ09ORklHX0lOSVRSQU1GU19TT1VSQ0U9IiIKKyMgQ09ORklHX0NDX09QVElNSVpFX0ZPUl9TSVpFIGlzIG5vdCBzZXQKK0NPTkZJR19TWVNDVEw9eQogIyBDT05GSUdfRU1CRURERUQgaXMgbm90IHNldAorQ09ORklHX1VJRDE2PXkKK0NPTkZJR19TWVNDVExfU1lTQ0FMTD15CiBDT05GSUdfS0FMTFNZTVM9eQotIyBDT05GSUdfS0FMTFNZTVNfQUxMIGlzIG5vdCBzZXQKICMgQ09ORklHX0tBTExTWU1TX0VYVFJBX1BBU1MgaXMgbm90IHNldAorQ09ORklHX0hPVFBMVUc9eQogQ09ORklHX1BSSU5USz15CiBDT05GSUdfQlVHPXkKK0NPTkZJR19FTEZfQ09SRT15CisjIENPTkZJR19DT01QQVRfQlJLIGlzIG5vdCBzZXQKIENPTkZJR19CQVNFX0ZVTEw9eQogQ09ORklHX0ZVVEVYPXkKK0NPTkZJR19BTk9OX0lOT0RFUz15CiBDT05GSUdfRVBPTEw9eQorQ09ORklHX1NJR05BTEZEPXkKK0NPTkZJR19USU1FUkZEPXkKK0NPTkZJR19FVkVOVEZEPXkKIENPTkZJR19TSE1FTT15Ci1DT05GSUdfQ0NfQUxJR05fRlVOQ1RJT05TPTAKLUNPTkZJR19DQ19BTElHTl9MQUJFTFM9MAotQ09ORklHX0NDX0FMSUdOX0xPT1BTPTAKLUNPTkZJR19DQ19BTElHTl9KVU1QUz0wCitDT05GSUdfVk1fRVZFTlRfQ09VTlRFUlM9eQorQ09ORklHX1NMQUI9eQorIyBDT05GSUdfU0xVQiBpcyBub3Qgc2V0CisjIENPTkZJR19TTE9CIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BST0ZJTElORyBpcyBub3Qgc2V0CisjIENPTkZJR19NQVJLRVJTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hBVkVfT1BST0ZJTEUgaXMgbm90IHNldAorIyBDT05GSUdfSEFWRV9LUFJPQkVTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hBVkVfS1JFVFBST0JFUyBpcyBub3Qgc2V0CitDT05GSUdfUFJPQ19QQUdFX01PTklUT1I9eQorQ09ORklHX1NMQUJJTkZPPXkKK0NPTkZJR19SVF9NVVRFWEVTPXkKICMgQ09ORklHX1RJTllfU0hNRU0gaXMgbm90IHNldAogQ09ORklHX0JBU0VfU01BTEw9MAotCi0jCi0jIExvYWRhYmxlIG1vZHVsZSBzdXBwb3J0Ci0jCiBDT05GSUdfTU9EVUxFUz15CiBDT05GSUdfTU9EVUxFX1VOTE9BRD15CiAjIENPTkZJR19NT0RVTEVfRk9SQ0VfVU5MT0FEIGlzIG5vdCBzZXQKLUNPTkZJR19PQlNPTEVURV9NT0RQQVJNPXkKICMgQ09ORklHX01PRFZFUlNJT05TIGlzIG5vdCBzZXQKICMgQ09ORklHX01PRFVMRV9TUkNWRVJTSU9OX0FMTCBpcyBub3Qgc2V0CiBDT05GSUdfS01PRD15CitDT05GSUdfQkxPQ0s9eQorIyBDT05GSUdfTEJEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JMS19ERVZfSU9fVFJBQ0UgaXMgbm90IHNldAorIyBDT05GSUdfTFNGIGlzIG5vdCBzZXQKK0NPTkZJR19CTEtfREVWX0JTRz15CisKKyMKKyMgSU8gU2NoZWR1bGVycworIworQ09ORklHX0lPU0NIRURfTk9PUD15CitDT05GSUdfSU9TQ0hFRF9BUz15CitDT05GSUdfSU9TQ0hFRF9ERUFETElORT15CitDT05GSUdfSU9TQ0hFRF9DRlE9eQorQ09ORklHX0RFRkFVTFRfQVM9eQorIyBDT05GSUdfREVGQVVMVF9ERUFETElORSBpcyBub3Qgc2V0CisjIENPTkZJR19ERUZBVUxUX0NGUSBpcyBub3Qgc2V0CisjIENPTkZJR19ERUZBVUxUX05PT1AgaXMgbm90IHNldAorQ09ORklHX0RFRkFVTFRfSU9TQ0hFRD0iYW50aWNpcGF0b3J5IgorQ09ORklHX0NMQVNTSUNfUkNVPXkKIAogIwogIyBQbGF0Zm9ybSBkZXBlbmRlbnQgc2V0dXAKQEAgLTgyLDEwICsxMzAsMjQgQEAKIENPTkZJR19NNjgwNDA9eQogIyBDT05GSUdfTTY4MDYwIGlzIG5vdCBzZXQKIENPTkZJR19NTVVfTU9UT1JPTEE9eQotQ09ORklHX002OEtGUFVfRU1VPXkKLUNPTkZJR19NNjhLRlBVX0VNVV9FWFRSQVBSRUM9eQotIyBDT05GSUdfTTY4S0ZQVV9FTVVfT05MWSBpcyBub3Qgc2V0CisjIENPTkZJR19NNjhLRlBVX0VNVSBpcyBub3Qgc2V0CiAjIENPTkZJR19BRFZBTkNFRCBpcyBub3Qgc2V0CitDT05GSUdfQVJDSF9ESVNDT05USUdNRU1fRU5BQkxFPXkKK0NPTkZJR19OT0RFU19TSElGVD0zCitDT05GSUdfU0VMRUNUX01FTU9SWV9NT0RFTD15CisjIENPTkZJR19GTEFUTUVNX01BTlVBTCBpcyBub3Qgc2V0CitDT05GSUdfRElTQ09OVElHTUVNX01BTlVBTD15CisjIENPTkZJR19TUEFSU0VNRU1fTUFOVUFMIGlzIG5vdCBzZXQKK0NPTkZJR19ESVNDT05USUdNRU09eQorQ09ORklHX0ZMQVRfTk9ERV9NRU1fTUFQPXkKK0NPTkZJR19ORUVEX01VTFRJUExFX05PREVTPXkKKyMgQ09ORklHX1NQQVJTRU1FTV9TVEFUSUMgaXMgbm90IHNldAorIyBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBfRU5BQkxFIGlzIG5vdCBzZXQKK0NPTkZJR19TUExJVF9QVExPQ0tfQ1BVUz00CisjIENPTkZJR19SRVNPVVJDRVNfNjRCSVQgaXMgbm90IHNldAorQ09ORklHX1pPTkVfRE1BX0ZMQUc9MQorQ09ORklHX0JPVU5DRT15CitDT05GSUdfVklSVF9UT19CVVM9eQogCiAjCiAjIEdlbmVyYWwgc2V0dXAKQEAgLTk1LDYgKzE1NywyNjMgQEAKIENPTkZJR19CSU5GTVRfTUlTQz1tCiAjIENPTkZJR19IRUFSVEJFQVQgaXMgbm90IHNldAogQ09ORklHX1BST0NfSEFSRFdBUkU9eQorQ09ORklHX1pPTkVfRE1BPXkKKyMgQ09ORklHX0FSQ0hfU1VQUE9SVFNfTVNJIGlzIG5vdCBzZXQKKworIworIyBOZXR3b3JraW5nCisjCitDT05GSUdfTkVUPXkKKworIworIyBOZXR3b3JraW5nIG9wdGlvbnMKKyMKK0NPTkZJR19QQUNLRVQ9eQorIyBDT05GSUdfUEFDS0VUX01NQVAgaXMgbm90IHNldAorQ09ORklHX1VOSVg9eQorQ09ORklHX1hGUk09eQorIyBDT05GSUdfWEZSTV9VU0VSIGlzIG5vdCBzZXQKKyMgQ09ORklHX1hGUk1fU1VCX1BPTElDWSBpcyBub3Qgc2V0CitDT05GSUdfWEZSTV9NSUdSQVRFPXkKKyMgQ09ORklHX1hGUk1fU1RBVElTVElDUyBpcyBub3Qgc2V0CitDT05GSUdfTkVUX0tFWT15CitDT05GSUdfTkVUX0tFWV9NSUdSQVRFPXkKK0NPTkZJR19JTkVUPXkKKyMgQ09ORklHX0lQX01VTFRJQ0FTVCBpcyBub3Qgc2V0CisjIENPTkZJR19JUF9BRFZBTkNFRF9ST1VURVIgaXMgbm90IHNldAorQ09ORklHX0lQX0ZJQl9IQVNIPXkKKyMgQ09ORklHX0lQX1BOUCBpcyBub3Qgc2V0CitDT05GSUdfTkVUX0lQSVA9bQorQ09ORklHX05FVF9JUEdSRT1tCisjIENPTkZJR19BUlBEIGlzIG5vdCBzZXQKK0NPTkZJR19TWU5fQ09PS0lFUz15CitDT05GSUdfSU5FVF9BSD1tCitDT05GSUdfSU5FVF9FU1A9bQorQ09ORklHX0lORVRfSVBDT01QPW0KK0NPTkZJR19JTkVUX1hGUk1fVFVOTkVMPW0KK0NPTkZJR19JTkVUX1RVTk5FTD1tCitDT05GSUdfSU5FVF9YRlJNX01PREVfVFJBTlNQT1JUPW0KK0NPTkZJR19JTkVUX1hGUk1fTU9ERV9UVU5ORUw9bQorQ09ORklHX0lORVRfWEZSTV9NT0RFX0JFRVQ9bQorQ09ORklHX0lORVRfTFJPPW0KK0NPTkZJR19JTkVUX0RJQUc9bQorQ09ORklHX0lORVRfVENQX0RJQUc9bQorIyBDT05GSUdfVENQX0NPTkdfQURWQU5DRUQgaXMgbm90IHNldAorQ09ORklHX1RDUF9DT05HX0NVQklDPXkKK0NPTkZJR19ERUZBVUxUX1RDUF9DT05HPSJjdWJpYyIKKyMgQ09ORklHX1RDUF9NRDVTSUcgaXMgbm90IHNldAorIyBDT05GSUdfSVBfVlMgaXMgbm90IHNldAorQ09ORklHX0lQVjY9bQorQ09ORklHX0lQVjZfUFJJVkFDWT15CitDT05GSUdfSVBWNl9ST1VURVJfUFJFRj15CitDT05GSUdfSVBWNl9ST1VURV9JTkZPPXkKKyMgQ09ORklHX0lQVjZfT1BUSU1JU1RJQ19EQUQgaXMgbm90IHNldAorQ09ORklHX0lORVQ2X0FIPW0KK0NPTkZJR19JTkVUNl9FU1A9bQorQ09ORklHX0lORVQ2X0lQQ09NUD1tCisjIENPTkZJR19JUFY2X01JUDYgaXMgbm90IHNldAorQ09ORklHX0lORVQ2X1hGUk1fVFVOTkVMPW0KK0NPTkZJR19JTkVUNl9UVU5ORUw9bQorQ09ORklHX0lORVQ2X1hGUk1fTU9ERV9UUkFOU1BPUlQ9bQorQ09ORklHX0lORVQ2X1hGUk1fTU9ERV9UVU5ORUw9bQorQ09ORklHX0lORVQ2X1hGUk1fTU9ERV9CRUVUPW0KK0NPTkZJR19JTkVUNl9YRlJNX01PREVfUk9VVEVPUFRJTUlaQVRJT049bQorQ09ORklHX0lQVjZfU0lUPW0KK0NPTkZJR19JUFY2X1RVTk5FTD1tCisjIENPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFUyBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRXT1JLX1NFQ01BUksgaXMgbm90IHNldAorQ09ORklHX05FVEZJTFRFUj15CisjIENPTkZJR19ORVRGSUxURVJfREVCVUcgaXMgbm90IHNldAorQ09ORklHX05FVEZJTFRFUl9BRFZBTkNFRD15CisKKyMKKyMgQ29yZSBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvbgorIworQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LPW0KK0NPTkZJR19ORVRGSUxURVJfTkVUTElOS19RVUVVRT1tCitDT05GSUdfTkVURklMVEVSX05FVExJTktfTE9HPW0KK0NPTkZJR19ORl9DT05OVFJBQ0s9bQorQ09ORklHX05GX0NUX0FDQ1Q9eQorQ09ORklHX05GX0NPTk5UUkFDS19NQVJLPXkKKyMgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFMgaXMgbm90IHNldAorQ09ORklHX05GX0NUX1BST1RPX0dSRT1tCitDT05GSUdfTkZfQ1RfUFJPVE9fU0NUUD1tCitDT05GSUdfTkZfQ1RfUFJPVE9fVURQTElURT1tCitDT05GSUdfTkZfQ09OTlRSQUNLX0FNQU5EQT1tCitDT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tCitDT05GSUdfTkZfQ09OTlRSQUNLX0gzMjM9bQorQ09ORklHX05GX0NPTk5UUkFDS19JUkM9bQorQ09ORklHX05GX0NPTk5UUkFDS19ORVRCSU9TX05TPW0KK0NPTkZJR19ORl9DT05OVFJBQ0tfUFBUUD1tCitDT05GSUdfTkZfQ09OTlRSQUNLX1NBTkU9bQorQ09ORklHX05GX0NPTk5UUkFDS19TSVA9bQorQ09ORklHX05GX0NPTk5UUkFDS19URlRQPW0KKyMgQ09ORklHX05GX0NUX05FVExJTksgaXMgbm90IHNldAorQ09ORklHX05FVEZJTFRFUl9YVEFCTEVTPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX0NMQVNTSUZZPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX0NPTk5NQVJLPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX0RTQ1A9bQorQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfTUFSSz1tCitDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9ORlFVRVVFPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX05GTE9HPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX05PVFJBQ0s9bQorQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfUkFURUVTVD1tCitDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9UUkFDRT1tCitDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9UQ1BNU1M9bQorQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfVENQT1BUU1RSSVA9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9DT01NRU5UPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkJZVEVTPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkxJTUlUPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfQ09OTk1BUks9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9DT05OVFJBQ0s9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9EQ0NQPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfRFNDUD1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0VTUD1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0hFTFBFUj1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0lQUkFOR0U9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9MRU5HVEg9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9MSU1JVD1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX01BQz1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX01BUks9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9PV05FUj1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1BPTElDWT1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX01VTFRJUE9SVD1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1BLVFRZUEU9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9RVU9UQT1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1JBVEVFU1Q9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9SRUFMTT1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1NDVFA9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9TVEFURT1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1NUQVRJU1RJQz1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1NUUklORz1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1RDUE1TUz1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1RJTUU9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9VMzI9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9IQVNITElNSVQ9bQorCisjCisjIElQOiBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvbgorIworQ09ORklHX05GX0NPTk5UUkFDS19JUFY0PW0KK0NPTkZJR19ORl9DT05OVFJBQ0tfUFJPQ19DT01QQVQ9eQorQ09ORklHX0lQX05GX1FVRVVFPW0KK0NPTkZJR19JUF9ORl9JUFRBQkxFUz1tCitDT05GSUdfSVBfTkZfTUFUQ0hfUkVDRU5UPW0KK0NPTkZJR19JUF9ORl9NQVRDSF9FQ049bQorQ09ORklHX0lQX05GX01BVENIX0FIPW0KK0NPTkZJR19JUF9ORl9NQVRDSF9UVEw9bQorQ09ORklHX0lQX05GX01BVENIX0FERFJUWVBFPW0KK0NPTkZJR19JUF9ORl9GSUxURVI9bQorQ09ORklHX0lQX05GX1RBUkdFVF9SRUpFQ1Q9bQorQ09ORklHX0lQX05GX1RBUkdFVF9MT0c9bQorQ09ORklHX0lQX05GX1RBUkdFVF9VTE9HPW0KK0NPTkZJR19ORl9OQVQ9bQorQ09ORklHX05GX05BVF9ORUVERUQ9eQorQ09ORklHX0lQX05GX1RBUkdFVF9NQVNRVUVSQURFPW0KK0NPTkZJR19JUF9ORl9UQVJHRVRfUkVESVJFQ1Q9bQorQ09ORklHX0lQX05GX1RBUkdFVF9ORVRNQVA9bQorQ09ORklHX05GX05BVF9TTk1QX0JBU0lDPW0KK0NPTkZJR19ORl9OQVRfUFJPVE9fR1JFPW0KK0NPTkZJR19ORl9OQVRfRlRQPW0KK0NPTkZJR19ORl9OQVRfSVJDPW0KK0NPTkZJR19ORl9OQVRfVEZUUD1tCitDT05GSUdfTkZfTkFUX0FNQU5EQT1tCitDT05GSUdfTkZfTkFUX1BQVFA9bQorQ09ORklHX05GX05BVF9IMzIzPW0KK0NPTkZJR19ORl9OQVRfU0lQPW0KK0NPTkZJR19JUF9ORl9NQU5HTEU9bQorQ09ORklHX0lQX05GX1RBUkdFVF9FQ049bQorQ09ORklHX0lQX05GX1RBUkdFVF9UVEw9bQorQ09ORklHX0lQX05GX1RBUkdFVF9DTFVTVEVSSVA9bQorQ09ORklHX0lQX05GX1JBVz1tCitDT05GSUdfSVBfTkZfQVJQVEFCTEVTPW0KK0NPTkZJR19JUF9ORl9BUlBGSUxURVI9bQorQ09ORklHX0lQX05GX0FSUF9NQU5HTEU9bQorCisjCisjIElQdjY6IE5ldGZpbHRlciBDb25maWd1cmF0aW9uCisjCitDT05GSUdfTkZfQ09OTlRSQUNLX0lQVjY9bQorQ09ORklHX0lQNl9ORl9RVUVVRT1tCitDT05GSUdfSVA2X05GX0lQVEFCTEVTPW0KK0NPTkZJR19JUDZfTkZfTUFUQ0hfUlQ9bQorQ09ORklHX0lQNl9ORl9NQVRDSF9PUFRTPW0KK0NPTkZJR19JUDZfTkZfTUFUQ0hfRlJBRz1tCitDT05GSUdfSVA2X05GX01BVENIX0hMPW0KK0NPTkZJR19JUDZfTkZfTUFUQ0hfSVBWNkhFQURFUj1tCitDT05GSUdfSVA2X05GX01BVENIX0FIPW0KK0NPTkZJR19JUDZfTkZfTUFUQ0hfTUg9bQorQ09ORklHX0lQNl9ORl9NQVRDSF9FVUk2ND1tCitDT05GSUdfSVA2X05GX0ZJTFRFUj1tCitDT05GSUdfSVA2X05GX1RBUkdFVF9MT0c9bQorQ09ORklHX0lQNl9ORl9UQVJHRVRfUkVKRUNUPW0KK0NPTkZJR19JUDZfTkZfTUFOR0xFPW0KK0NPTkZJR19JUDZfTkZfVEFSR0VUX0hMPW0KK0NPTkZJR19JUDZfTkZfUkFXPW0KK0NPTkZJR19JUF9EQ0NQPW0KK0NPTkZJR19JTkVUX0RDQ1BfRElBRz1tCitDT05GSUdfSVBfRENDUF9BQ0tWRUM9eQorCisjCisjIERDQ1AgQ0NJRHMgQ29uZmlndXJhdGlvbiAoRVhQRVJJTUVOVEFMKQorIworQ09ORklHX0lQX0RDQ1BfQ0NJRDI9bQorIyBDT05GSUdfSVBfRENDUF9DQ0lEMl9ERUJVRyBpcyBub3Qgc2V0CitDT05GSUdfSVBfRENDUF9DQ0lEMz1tCisjIENPTkZJR19JUF9EQ0NQX0NDSUQzX0RFQlVHIGlzIG5vdCBzZXQKK0NPTkZJR19JUF9EQ0NQX0NDSUQzX1JUTz0xMDAKK0NPTkZJR19JUF9EQ0NQX1RGUkNfTElCPW0KK0NPTkZJR19JUF9TQ1RQPW0KKyMgQ09ORklHX1NDVFBfREJHX01TRyBpcyBub3Qgc2V0CisjIENPTkZJR19TQ1RQX0RCR19PQkpDTlQgaXMgbm90IHNldAorIyBDT05GSUdfU0NUUF9ITUFDX05PTkUgaXMgbm90IHNldAorIyBDT05GSUdfU0NUUF9ITUFDX1NIQTEgaXMgbm90IHNldAorQ09ORklHX1NDVFBfSE1BQ19NRDU9eQorIyBDT05GSUdfVElQQyBpcyBub3Qgc2V0CisjIENPTkZJR19BVE0gaXMgbm90IHNldAorIyBDT05GSUdfQlJJREdFIGlzIG5vdCBzZXQKKyMgQ09ORklHX1ZMQU5fODAyMVEgaXMgbm90IHNldAorIyBDT05GSUdfREVDTkVUIGlzIG5vdCBzZXQKK0NPTkZJR19MTEM9bQorIyBDT05GSUdfTExDMiBpcyBub3Qgc2V0CisjIENPTkZJR19JUFggaXMgbm90IHNldAorQ09ORklHX0FUQUxLPW0KK0NPTkZJR19ERVZfQVBQTEVUQUxLPW0KK0NPTkZJR19JUEREUD1tCitDT05GSUdfSVBERFBfRU5DQVA9eQorQ09ORklHX0lQRERQX0RFQ0FQPXkKKyMgQ09ORklHX1gyNSBpcyBub3Qgc2V0CisjIENPTkZJR19MQVBCIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VDT05FVCBpcyBub3Qgc2V0CisjIENPTkZJR19XQU5fUk9VVEVSIGlzIG5vdCBzZXQKKyMgQ09ORklHX05FVF9TQ0hFRCBpcyBub3Qgc2V0CitDT05GSUdfTkVUX0NMU19ST1VURT15CisKKyMKKyMgTmV0d29yayB0ZXN0aW5nCisjCisjIENPTkZJR19ORVRfUEtUR0VOIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hBTVJBRElPIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NBTiBpcyBub3Qgc2V0CisjIENPTkZJR19JUkRBIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FGX1JYUlBDIGlzIG5vdCBzZXQKKworIworIyBXaXJlbGVzcworIworIyBDT05GSUdfQ0ZHODAyMTEgaXMgbm90IHNldAorQ09ORklHX1dJUkVMRVNTX0VYVD15CisjIENPTkZJR19NQUM4MDIxMSBpcyBub3Qgc2V0CitDT05GSUdfSUVFRTgwMjExPW0KKyMgQ09ORklHX0lFRUU4MDIxMV9ERUJVRyBpcyBub3Qgc2V0CitDT05GSUdfSUVFRTgwMjExX0NSWVBUX1dFUD1tCitDT05GSUdfSUVFRTgwMjExX0NSWVBUX0NDTVA9bQorQ09ORklHX0lFRUU4MDIxMV9DUllQVF9US0lQPW0KK0NPTkZJR19JRUVFODAyMTFfU09GVE1BQz1tCisjIENPTkZJR19JRUVFODAyMTFfU09GVE1BQ19ERUJVRyBpcyBub3Qgc2V0CisjIENPTkZJR19SRktJTEwgaXMgbm90IHNldAorIyBDT05GSUdfTkVUXzlQIGlzIG5vdCBzZXQKIAogIwogIyBEZXZpY2UgRHJpdmVycwpAQCAtMTAzLDI4ICs0MjIsMTUgQEAKICMKICMgR2VuZXJpYyBEcml2ZXIgT3B0aW9ucwogIworQ09ORklHX1VFVkVOVF9IRUxQRVJfUEFUSD0iL3NiaW4vaG90cGx1ZyIKIENPTkZJR19TVEFOREFMT05FPXkKIENPTkZJR19QUkVWRU5UX0ZJUk1XQVJFX0JVSUxEPXkKIENPTkZJR19GV19MT0FERVI9bQotIyBDT05GSUdfREVCVUdfRFJJVkVSIGlzIG5vdCBzZXQKLQotIwotIyBNZW1vcnkgVGVjaG5vbG9neSBEZXZpY2VzIChNVEQpCi0jCisjIENPTkZJR19TWVNfSFlQRVJWSVNPUiBpcyBub3Qgc2V0CitDT05GSUdfQ09OTkVDVE9SPW0KICMgQ09ORklHX01URCBpcyBub3Qgc2V0Ci0KLSMKLSMgUGFyYWxsZWwgcG9ydCBzdXBwb3J0Ci0jCiAjIENPTkZJR19QQVJQT1JUIGlzIG5vdCBzZXQKLQotIwotIyBQbHVnIGFuZCBQbGF5IHN1cHBvcnQKLSMKLQotIwotIyBCbG9jayBkZXZpY2VzCi0jCitDT05GSUdfQkxLX0RFVj15CiAjIENPTkZJR19CTEtfREVWX0NPV19DT01NT04gaXMgbm90IHNldAogQ09ORklHX0JMS19ERVZfTE9PUD15CiBDT05GSUdfQkxLX0RFVl9DUllQVE9MT09QPW0KQEAgLTEzMiw1MyArNDM4LDUwIEBACiBDT05GSUdfQkxLX0RFVl9SQU09eQogQ09ORklHX0JMS19ERVZfUkFNX0NPVU5UPTE2CiBDT05GSUdfQkxLX0RFVl9SQU1fU0laRT00MDk2Ci1DT05GSUdfQkxLX0RFVl9JTklUUkQ9eQotQ09ORklHX0lOSVRSQU1GU19TT1VSQ0U9IiIKKyMgQ09ORklHX0JMS19ERVZfWElQIGlzIG5vdCBzZXQKIENPTkZJR19DRFJPTV9QS1RDRFZEPW0KIENPTkZJR19DRFJPTV9QS1RDRFZEX0JVRkZFUlM9OAogIyBDT05GSUdfQ0RST01fUEtUQ0RWRF9XQ0FDSEUgaXMgbm90IHNldAotCi0jCi0jIElPIFNjaGVkdWxlcnMKLSMKLUNPTkZJR19JT1NDSEVEX05PT1A9eQotQ09ORklHX0lPU0NIRURfQVM9eQotQ09ORklHX0lPU0NIRURfREVBRExJTkU9eQotQ09ORklHX0lPU0NIRURfQ0ZRPXkKIENPTkZJR19BVEFfT1ZFUl9FVEg9bQotCi0jCi0jIEFUQS9BVEFQSS9NRk0vUkxMIHN1cHBvcnQKLSMKK0NPTkZJR19NSVNDX0RFVklDRVM9eQorIyBDT05GSUdfRUVQUk9NXzkzQ1g2IGlzIG5vdCBzZXQKKyMgQ09ORklHX0VOQ0xPU1VSRV9TRVJWSUNFUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9JREU9eQogQ09ORklHX0lERT15CiBDT05GSUdfQkxLX0RFVl9JREU9eQogCiAjCi0jIFBsZWFzZSBzZWUgRG9jdW1lbnRhdGlvbi9pZGUudHh0IGZvciBoZWxwL2luZm8gb24gSURFIGRyaXZlcworIyBQbGVhc2Ugc2VlIERvY3VtZW50YXRpb24vaWRlL2lkZS50eHQgZm9yIGhlbHAvaW5mbyBvbiBJREUgZHJpdmVzCiAjCiAjIENPTkZJR19CTEtfREVWX0lERV9TQVRBIGlzIG5vdCBzZXQKIENPTkZJR19CTEtfREVWX0lERURJU0s9eQogIyBDT05GSUdfSURFRElTS19NVUxUSV9NT0RFIGlzIG5vdCBzZXQKIENPTkZJR19CTEtfREVWX0lERUNEPXkKLUNPTkZJR19CTEtfREVWX0lERVRBUEU9bQorQ09ORklHX0JMS19ERVZfSURFQ0RfVkVSQk9TRV9FUlJPUlM9eQorIyBDT05GSUdfQkxLX0RFVl9JREVUQVBFIGlzIG5vdCBzZXQKIENPTkZJR19CTEtfREVWX0lERUZMT1BQWT1tCiAjIENPTkZJR19CTEtfREVWX0lERVNDU0kgaXMgbm90IHNldAogIyBDT05GSUdfSURFX1RBU0tfSU9DVEwgaXMgbm90IHNldAorQ09ORklHX0lERV9QUk9DX0ZTPXkKIAogIwogIyBJREUgY2hpcHNldCBzdXBwb3J0L2J1Z2ZpeGVzCiAjCi1DT05GSUdfSURFX0dFTkVSSUM9eQotIyBDT05GSUdfSURFX0FSTSBpcyBub3Qgc2V0CisjIENPTkZJR19JREVfR0VORVJJQyBpcyBub3Qgc2V0CisjIENPTkZJR19CTEtfREVWX1BMQVRGT1JNIGlzIG5vdCBzZXQKIENPTkZJR19CTEtfREVWX01BQ19JREU9eQogIyBDT05GSUdfQkxLX0RFVl9JREVETUEgaXMgbm90IHNldAotIyBDT05GSUdfSURFRE1BX0FVVE8gaXMgbm90IHNldAorIyBDT05GSUdfSURFX0FSQ0hfT0JTT0xFVEVfSU5JVCBpcyBub3Qgc2V0CiAjIENPTkZJR19CTEtfREVWX0hEIGlzIG5vdCBzZXQKIAogIwogIyBTQ1NJIGRldmljZSBzdXBwb3J0CiAjCitDT05GSUdfUkFJRF9BVFRSUz1tCiBDT05GSUdfU0NTST15CitDT05GSUdfU0NTSV9ETUE9eQorQ09ORklHX1NDU0lfVEdUPW0KKyMgQ09ORklHX1NDU0lfTkVUTElOSyBpcyBub3Qgc2V0CiBDT05GSUdfU0NTSV9QUk9DX0ZTPXkKIAogIwpAQCAtMTkwLDYgKzQ5Myw3IEBACiBDT05GSUdfQkxLX0RFVl9TUj15CiBDT05GSUdfQkxLX0RFVl9TUl9WRU5ET1I9eQogQ09ORklHX0NIUl9ERVZfU0c9bQorIyBDT05GSUdfQ0hSX0RFVl9TQ0ggaXMgbm90IHNldAogCiAjCiAjIFNvbWUgU0NTSSBkZXZpY2VzIChlLmcuIENEIGp1a2Vib3gpIHN1cHBvcnQgbXVsdGlwbGUgTFVOcwpAQCAtMTk3LDU4ICs1MDEsNDggQEAKICMgQ09ORklHX1NDU0lfTVVMVElfTFVOIGlzIG5vdCBzZXQKIENPTkZJR19TQ1NJX0NPTlNUQU5UUz15CiAjIENPTkZJR19TQ1NJX0xPR0dJTkcgaXMgbm90IHNldAorIyBDT05GSUdfU0NTSV9TQ0FOX0FTWU5DIGlzIG5vdCBzZXQKK0NPTkZJR19TQ1NJX1dBSVRfU0NBTj1tCiAKICMKLSMgU0NTSSBUcmFuc3BvcnQgQXR0cmlidXRlcworIyBTQ1NJIFRyYW5zcG9ydHMKICMKLSMgQ09ORklHX1NDU0lfU1BJX0FUVFJTIGlzIG5vdCBzZXQKK0NPTkZJR19TQ1NJX1NQSV9BVFRSUz15CiAjIENPTkZJR19TQ1NJX0ZDX0FUVFJTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NDU0lfSVNDU0lfQVRUUlMgaXMgbm90IHNldAotCi0jCi0jIFNDU0kgbG93LWxldmVsIGRyaXZlcnMKLSMKLSMgQ09ORklHX1NDU0lfU0FUQSBpcyBub3Qgc2V0CitDT05GSUdfU0NTSV9JU0NTSV9BVFRSUz1tCitDT05GSUdfU0NTSV9TQVNfQVRUUlM9bQorQ09ORklHX1NDU0lfU0FTX0xJQlNBUz1tCitDT05GSUdfU0NTSV9TQVNfSE9TVF9TTVA9eQorIyBDT05GSUdfU0NTSV9TQVNfTElCU0FTX0RFQlVHIGlzIG5vdCBzZXQKK0NPTkZJR19TQ1NJX1NSUF9BVFRSUz1tCitDT05GSUdfU0NTSV9TUlBfVEdUX0FUVFJTPXkKK0NPTkZJR19TQ1NJX0xPV0xFVkVMPXkKK0NPTkZJR19JU0NTSV9UQ1A9bQogIyBDT05GSUdfU0NTSV9ERUJVRyBpcyBub3Qgc2V0CiBDT05GSUdfTUFDX1NDU0k9eQotQ09ORklHX1NDU0lfTUFDX0VTUD15Ci0KLSMKLSMgTXVsdGktZGV2aWNlIHN1cHBvcnQgKFJBSUQgYW5kIExWTSkKLSMKIENPTkZJR19NRD15CiBDT05GSUdfQkxLX0RFVl9NRD1tCiBDT05GSUdfTURfTElORUFSPW0KIENPTkZJR19NRF9SQUlEMD1tCiBDT05GSUdfTURfUkFJRDE9bQogIyBDT05GSUdfTURfUkFJRDEwIGlzIG5vdCBzZXQKLUNPTkZJR19NRF9SQUlENT1tCi1DT05GSUdfTURfUkFJRDY9bQorQ09ORklHX01EX1JBSUQ0NTY9bQorQ09ORklHX01EX1JBSUQ1X1JFU0hBUEU9eQogQ09ORklHX01EX01VTFRJUEFUSD1tCiAjIENPTkZJR19NRF9GQVVMVFkgaXMgbm90IHNldAogQ09ORklHX0JMS19ERVZfRE09bQorIyBDT05GSUdfRE1fREVCVUcgaXMgbm90IHNldAogQ09ORklHX0RNX0NSWVBUPW0KIENPTkZJR19ETV9TTkFQU0hPVD1tCiBDT05GSUdfRE1fTUlSUk9SPW0KIENPTkZJR19ETV9aRVJPPW0KIENPTkZJR19ETV9NVUxUSVBBVEg9bQogQ09ORklHX0RNX01VTFRJUEFUSF9FTUM9bQotCi0jCi0jIEZ1c2lvbiBNUFQgZGV2aWNlIHN1cHBvcnQKLSMKLQotIwotIyBJRUVFIDEzOTQgKEZpcmVXaXJlKSBzdXBwb3J0Ci0jCi0KLSMKLSMgSTJPIGRldmljZSBzdXBwb3J0Ci0jCi0KLSMKLSMgTWFjaW50b3NoIGRldmljZSBkcml2ZXJzCi0jCitDT05GSUdfRE1fTVVMVElQQVRIX1JEQUM9bQorQ09ORklHX0RNX01VTFRJUEFUSF9IUD1tCisjIENPTkZJR19ETV9ERUxBWSBpcyBub3Qgc2V0CitDT05GSUdfRE1fVUVWRU5UPXkKK0NPTkZJR19NQUNJTlRPU0hfRFJJVkVSUz15CiBDT05GSUdfQURCPXkKIENPTkZJR19BREJfTUFDSUk9eQogQ09ORklHX0FEQl9NQUNJSVNJPXkKQEAgLTI1NywyNTMgKzU1MSw2NSBAQAogQ09ORklHX0FEQl9DVURBPXkKIENPTkZJR19JTlBVVF9BREJISUQ9eQogQ09ORklHX01BQ19FTVVNT1VTRUJUTj15Ci0KLSMKLSMgTmV0d29ya2luZyBzdXBwb3J0Ci0jCi1DT05GSUdfTkVUPXkKLQotIwotIyBOZXR3b3JraW5nIG9wdGlvbnMKLSMKLUNPTkZJR19QQUNLRVQ9eQotIyBDT05GSUdfUEFDS0VUX01NQVAgaXMgbm90IHNldAotQ09ORklHX1VOSVg9eQotQ09ORklHX05FVF9LRVk9eQotQ09ORklHX0lORVQ9eQotIyBDT05GSUdfSVBfTVVMVElDQVNUIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUiBpcyBub3Qgc2V0Ci0jIENPTkZJR19JUF9QTlAgaXMgbm90IHNldAotQ09ORklHX05FVF9JUElQPW0KLUNPTkZJR19ORVRfSVBHUkU9bQotIyBDT05GSUdfQVJQRCBpcyBub3Qgc2V0Ci1DT05GSUdfU1lOX0NPT0tJRVM9eQotQ09ORklHX0lORVRfQUg9bQotQ09ORklHX0lORVRfRVNQPW0KLUNPTkZJR19JTkVUX0lQQ09NUD1tCi1DT05GSUdfSU5FVF9UVU5ORUw9bQotQ09ORklHX0lQX1RDUERJQUc9bQotQ09ORklHX0lQX1RDUERJQUdfSVBWNj15Ci0KLSMKLSMgSVA6IFZpcnR1YWwgU2VydmVyIENvbmZpZ3VyYXRpb24KLSMKLSMgQ09ORklHX0lQX1ZTIGlzIG5vdCBzZXQKLUNPTkZJR19JUFY2PW0KLUNPTkZJR19JUFY2X1BSSVZBQ1k9eQotQ09ORklHX0lORVQ2X0FIPW0KLUNPTkZJR19JTkVUNl9FU1A9bQotQ09ORklHX0lORVQ2X0lQQ09NUD1tCi1DT05GSUdfSU5FVDZfVFVOTkVMPW0KLUNPTkZJR19JUFY2X1RVTk5FTD1tCi1DT05GSUdfTkVURklMVEVSPXkKLSMgQ09ORklHX05FVEZJTFRFUl9ERUJVRyBpcyBub3Qgc2V0Ci0KLSMKLSMgSVA6IE5ldGZpbHRlciBDb25maWd1cmF0aW9uCi0jCi1DT05GSUdfSVBfTkZfQ09OTlRSQUNLPW0KLSMgQ09ORklHX0lQX05GX0NUX0FDQ1QgaXMgbm90IHNldAotQ09ORklHX0lQX05GX0NPTk5UUkFDS19NQVJLPXkKLSMgQ09ORklHX0lQX05GX0NUX1BST1RPX1NDVFAgaXMgbm90IHNldAotQ09ORklHX0lQX05GX0ZUUD1tCi1DT05GSUdfSVBfTkZfSVJDPW0KLUNPTkZJR19JUF9ORl9URlRQPW0KLUNPTkZJR19JUF9ORl9BTUFOREE9bQotQ09ORklHX0lQX05GX1FVRVVFPW0KLUNPTkZJR19JUF9ORl9JUFRBQkxFUz1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfTElNSVQ9bQotQ09ORklHX0lQX05GX01BVENIX0lQUkFOR0U9bQotQ09ORklHX0lQX05GX01BVENIX01BQz1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfUEtUVFlQRT1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfTUFSSz1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfTVVMVElQT1JUPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9UT1M9bQotQ09ORklHX0lQX05GX01BVENIX1JFQ0VOVD1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfRUNOPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9EU0NQPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9BSF9FU1A9bQotQ09ORklHX0lQX05GX01BVENIX0xFTkdUSD1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfVFRMPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9UQ1BNU1M9bQotQ09ORklHX0lQX05GX01BVENIX0hFTFBFUj1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfU1RBVEU9bQotQ09ORklHX0lQX05GX01BVENIX0NPTk5UUkFDSz1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfT1dORVI9bQotQ09ORklHX0lQX05GX01BVENIX0FERFJUWVBFPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9SRUFMTT1tCi0jIENPTkZJR19JUF9ORl9NQVRDSF9TQ1RQIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lQX05GX01BVENIX0NPTU1FTlQgaXMgbm90IHNldAotQ09ORklHX0lQX05GX01BVENIX0NPTk5NQVJLPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9IQVNITElNSVQ9bQotQ09ORklHX0lQX05GX0ZJTFRFUj1tCi1DT05GSUdfSVBfTkZfVEFSR0VUX1JFSkVDVD1tCi1DT05GSUdfSVBfTkZfVEFSR0VUX0xPRz1tCi1DT05GSUdfSVBfTkZfVEFSR0VUX1VMT0c9bQotQ09ORklHX0lQX05GX1RBUkdFVF9UQ1BNU1M9bQotQ09ORklHX0lQX05GX05BVD1tCi1DT05GSUdfSVBfTkZfTkFUX05FRURFRD15Ci1DT05GSUdfSVBfTkZfVEFSR0VUX01BU1FVRVJBREU9bQotQ09ORklHX0lQX05GX1RBUkdFVF9SRURJUkVDVD1tCi1DT05GSUdfSVBfTkZfVEFSR0VUX05FVE1BUD1tCi1DT05GSUdfSVBfTkZfVEFSR0VUX1NBTUU9bQotQ09ORklHX0lQX05GX05BVF9TTk1QX0JBU0lDPW0KLUNPTkZJR19JUF9ORl9OQVRfSVJDPW0KLUNPTkZJR19JUF9ORl9OQVRfRlRQPW0KLUNPTkZJR19JUF9ORl9OQVRfVEZUUD1tCi1DT05GSUdfSVBfTkZfTkFUX0FNQU5EQT1tCi1DT05GSUdfSVBfTkZfTUFOR0xFPW0KLUNPTkZJR19JUF9ORl9UQVJHRVRfVE9TPW0KLUNPTkZJR19JUF9ORl9UQVJHRVRfRUNOPW0KLUNPTkZJR19JUF9ORl9UQVJHRVRfRFNDUD1tCi1DT05GSUdfSVBfTkZfVEFSR0VUX01BUks9bQotQ09ORklHX0lQX05GX1RBUkdFVF9DTEFTU0lGWT1tCi1DT05GSUdfSVBfTkZfVEFSR0VUX0NPTk5NQVJLPW0KLSMgQ09ORklHX0lQX05GX1RBUkdFVF9DTFVTVEVSSVAgaXMgbm90IHNldAotQ09ORklHX0lQX05GX1JBVz1tCi1DT05GSUdfSVBfTkZfVEFSR0VUX05PVFJBQ0s9bQotQ09ORklHX0lQX05GX0FSUFRBQkxFUz1tCi1DT05GSUdfSVBfTkZfQVJQRklMVEVSPW0KLUNPTkZJR19JUF9ORl9BUlBfTUFOR0xFPW0KLQotIwotIyBJUHY2OiBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvbiAoRVhQRVJJTUVOVEFMKQotIwotQ09ORklHX0lQNl9ORl9RVUVVRT1tCi1DT05GSUdfSVA2X05GX0lQVEFCTEVTPW0KLUNPTkZJR19JUDZfTkZfTUFUQ0hfTElNSVQ9bQotQ09ORklHX0lQNl9ORl9NQVRDSF9NQUM9bQotQ09ORklHX0lQNl9ORl9NQVRDSF9SVD1tCi1DT05GSUdfSVA2X05GX01BVENIX09QVFM9bQotQ09ORklHX0lQNl9ORl9NQVRDSF9GUkFHPW0KLUNPTkZJR19JUDZfTkZfTUFUQ0hfSEw9bQotQ09ORklHX0lQNl9ORl9NQVRDSF9NVUxUSVBPUlQ9bQotQ09ORklHX0lQNl9ORl9NQVRDSF9PV05FUj1tCi1DT05GSUdfSVA2X05GX01BVENIX01BUks9bQotQ09ORklHX0lQNl9ORl9NQVRDSF9JUFY2SEVBREVSPW0KLUNPTkZJR19JUDZfTkZfTUFUQ0hfQUhFU1A9bQotQ09ORklHX0lQNl9ORl9NQVRDSF9MRU5HVEg9bQotQ09ORklHX0lQNl9ORl9NQVRDSF9FVUk2ND1tCi1DT05GSUdfSVA2X05GX0ZJTFRFUj1tCi1DT05GSUdfSVA2X05GX1RBUkdFVF9MT0c9bQotQ09ORklHX0lQNl9ORl9NQU5HTEU9bQotQ09ORklHX0lQNl9ORl9UQVJHRVRfTUFSSz1tCi1DT05GSUdfSVA2X05GX1JBVz1tCi1DT05GSUdfWEZSTT15Ci1DT05GSUdfWEZSTV9VU0VSPW0KLQotIwotIyBTQ1RQIENvbmZpZ3VyYXRpb24gKEVYUEVSSU1FTlRBTCkKLSMKLUNPTkZJR19JUF9TQ1RQPW0KLSMgQ09ORklHX1NDVFBfREJHX01TRyBpcyBub3Qgc2V0Ci0jIENPTkZJR19TQ1RQX0RCR19PQkpDTlQgaXMgbm90IHNldAotIyBDT05GSUdfU0NUUF9ITUFDX05PTkUgaXMgbm90IHNldAotIyBDT05GSUdfU0NUUF9ITUFDX1NIQTEgaXMgbm90IHNldAotQ09ORklHX1NDVFBfSE1BQ19NRDU9eQotIyBDT05GSUdfQVRNIGlzIG5vdCBzZXQKLSMgQ09ORklHX0JSSURHRSBpcyBub3Qgc2V0Ci0jIENPTkZJR19WTEFOXzgwMjFRIGlzIG5vdCBzZXQKLSMgQ09ORklHX0RFQ05FVCBpcyBub3Qgc2V0Ci1DT05GSUdfTExDPW0KLSMgQ09ORklHX0xMQzIgaXMgbm90IHNldAotQ09ORklHX0lQWD1tCi0jIENPTkZJR19JUFhfSU5URVJOIGlzIG5vdCBzZXQKLUNPTkZJR19BVEFMSz1tCi1DT05GSUdfREVWX0FQUExFVEFMSz15Ci1DT05GSUdfSVBERFA9bQotQ09ORklHX0lQRERQX0VOQ0FQPXkKLUNPTkZJR19JUEREUF9ERUNBUD15Ci0jIENPTkZJR19YMjUgaXMgbm90IHNldAotIyBDT05GSUdfTEFQQiBpcyBub3Qgc2V0Ci0jIENPTkZJR19ORVRfRElWRVJUIGlzIG5vdCBzZXQKLSMgQ09ORklHX0VDT05FVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19XQU5fUk9VVEVSIGlzIG5vdCBzZXQKLQotIwotIyBRb1MgYW5kL29yIGZhaXIgcXVldWVpbmcKLSMKLSMgQ09ORklHX05FVF9TQ0hFRCBpcyBub3Qgc2V0Ci1DT05GSUdfTkVUX0NMU19ST1VURT15Ci0KLSMKLSMgTmV0d29yayB0ZXN0aW5nCi0jCi0jIENPTkZJR19ORVRfUEtUR0VOIGlzIG5vdCBzZXQKLUNPTkZJR19ORVRQT0xMPXkKLSMgQ09ORklHX05FVFBPTExfUlggaXMgbm90IHNldAotIyBDT05GSUdfTkVUUE9MTF9UUkFQIGlzIG5vdCBzZXQKLUNPTkZJR19ORVRfUE9MTF9DT05UUk9MTEVSPXkKLSMgQ09ORklHX0hBTVJBRElPIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lSREEgaXMgbm90IHNldAotIyBDT05GSUdfQlQgaXMgbm90IHNldAogQ09ORklHX05FVERFVklDRVM9eQorIyBDT05GSUdfTkVUREVWSUNFU19NVUxUSVFVRVVFIGlzIG5vdCBzZXQKIENPTkZJR19EVU1NWT1tCiAjIENPTkZJR19CT05ESU5HIGlzIG5vdCBzZXQKK0NPTkZJR19NQUNWTEFOPW0KIENPTkZJR19FUVVBTElaRVI9bQogIyBDT05GSUdfVFVOIGlzIG5vdCBzZXQKLQotIwotIyBFdGhlcm5ldCAoMTAgb3IgMTAwTWJpdCkKLSMKK0NPTkZJR19WRVRIPW0KKyMgQ09ORklHX1BIWUxJQiBpcyBub3Qgc2V0CiBDT05GSUdfTkVUX0VUSEVSTkVUPXkKICMgQ09ORklHX01JSSBpcyBub3Qgc2V0CiBDT05GSUdfTUFDODM5MD15Ci1DT05GSUdfTUFDODl4MD15Ci1DT05GSUdfTUFDU09OSUM9eQorQ09ORklHX01BQzg5eDA9bQorQ09ORklHX01BQ1NPTklDPW0KIENPTkZJR19NQUNNQUNFPXkKICMgQ09ORklHX05FVF9WRU5ET1JfU01DIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lCTV9ORVdfRU1BQ19aTUlJIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lCTV9ORVdfRU1BQ19SR01JSSBpcyBub3Qgc2V0CisjIENPTkZJR19JQk1fTkVXX0VNQUNfVEFIIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lCTV9ORVdfRU1BQ19FTUFDNCBpcyBub3Qgc2V0CisjIENPTkZJR19CNDQgaXMgbm90IHNldAorIyBDT05GSUdfTkVUREVWXzEwMDAgaXMgbm90IHNldAorIyBDT05GSUdfTkVUREVWXzEwMDAwIGlzIG5vdCBzZXQKIAogIwotIyBFdGhlcm5ldCAoMTAwMCBNYml0KQorIyBXaXJlbGVzcyBMQU4KICMKLQotIwotIyBFdGhlcm5ldCAoMTAwMDAgTWJpdCkKLSMKLQotIwotIyBUb2tlbiBSaW5nIGRldmljZXMKLSMKLQotIwotIyBXaXJlbGVzcyBMQU4gKG5vbi1oYW1yYWRpbykKLSMKLSMgQ09ORklHX05FVF9SQURJTyBpcyBub3Qgc2V0Ci0KLSMKLSMgV2FuIGludGVyZmFjZXMKLSMKKyMgQ09ORklHX1dMQU5fUFJFODAyMTEgaXMgbm90IHNldAorIyBDT05GSUdfV0xBTl84MDIxMSBpcyBub3Qgc2V0CiAjIENPTkZJR19XQU4gaXMgbm90IHNldAogQ09ORklHX1BQUD1tCiAjIENPTkZJR19QUFBfTVVMVElMSU5LIGlzIG5vdCBzZXQKIENPTkZJR19QUFBfRklMVEVSPXkKLSMgQ09ORklHX1BQUF9BU1lOQyBpcyBub3Qgc2V0Ci0jIENPTkZJR19QUFBfU1lOQ19UVFkgaXMgbm90IHNldAorQ09ORklHX1BQUF9BU1lOQz1tCitDT05GSUdfUFBQX1NZTkNfVFRZPW0KIENPTkZJR19QUFBfREVGTEFURT1tCiBDT05GSUdfUFBQX0JTRENPTVA9bQorQ09ORklHX1BQUF9NUFBFPW0KIENPTkZJR19QUFBPRT1tCitDT05GSUdfUFBQT0wyVFA9bQogQ09ORklHX1NMSVA9bQogQ09ORklHX1NMSVBfQ09NUFJFU1NFRD15CitDT05GSUdfU0xIQz1tCiBDT05GSUdfU0xJUF9TTUFSVD15CiBDT05GSUdfU0xJUF9NT0RFX1NMSVA2PXkKLUNPTkZJR19TSEFQRVI9bQogQ09ORklHX05FVENPTlNPTEU9bQotCi0jCi0jIElTRE4gc3Vic3lzdGVtCi0jCitDT05GSUdfTkVUQ09OU09MRV9EWU5BTUlDPXkKK0NPTkZJR19ORVRQT0xMPXkKKyMgQ09ORklHX05FVFBPTExfVFJBUCBpcyBub3Qgc2V0CitDT05GSUdfTkVUX1BPTExfQ09OVFJPTExFUj15CiAjIENPTkZJR19JU0ROIGlzIG5vdCBzZXQKLQotIwotIyBUZWxlcGhvbnkgU3VwcG9ydAotIwogIyBDT05GSUdfUEhPTkUgaXMgbm90IHNldAogCiAjCiAjIElucHV0IGRldmljZSBzdXBwb3J0CiAjCiBDT05GSUdfSU5QVVQ9eQorQ09ORklHX0lOUFVUX0ZGX01FTUxFU1M9bQorIyBDT05GSUdfSU5QVVRfUE9MTERFViBpcyBub3Qgc2V0CiAKICMKICMgVXNlcmxhbmQgaW50ZXJmYWNlcwpAQCAtNTEzLDcgKzYxOSw2IEBACiBDT05GSUdfSU5QVVRfTU9VU0VERVZfU0NSRUVOX1g9MTAyNAogQ09ORklHX0lOUFVUX01PVVNFREVWX1NDUkVFTl9ZPTc2OAogIyBDT05GSUdfSU5QVVRfSk9ZREVWIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lOUFVUX1RTREVWIGlzIG5vdCBzZXQKICMgQ09ORklHX0lOUFVUX0VWREVWIGlzIG5vdCBzZXQKICMgQ09ORklHX0lOUFVUX0VWQlVHIGlzIG5vdCBzZXQKIApAQCAtNTI2LDE5ICs2MzEsMjkgQEAKICMgQ09ORklHX0tFWUJPQVJEX0xLS0JEIGlzIG5vdCBzZXQKICMgQ09ORklHX0tFWUJPQVJEX1hUS0JEIGlzIG5vdCBzZXQKICMgQ09ORklHX0tFWUJPQVJEX05FV1RPTiBpcyBub3Qgc2V0CisjIENPTkZJR19LRVlCT0FSRF9TVE9XQVdBWSBpcyBub3Qgc2V0CiBDT05GSUdfSU5QVVRfTU9VU0U9eQogQ09ORklHX01PVVNFX1BTMj1tCitDT05GSUdfTU9VU0VfUFMyX0FMUFM9eQorQ09ORklHX01PVVNFX1BTMl9MT0dJUFMyUFA9eQorQ09ORklHX01PVVNFX1BTMl9TWU5BUFRJQ1M9eQorQ09ORklHX01PVVNFX1BTMl9MSUZFQk9PSz15CitDT05GSUdfTU9VU0VfUFMyX1RSQUNLUE9JTlQ9eQorIyBDT05GSUdfTU9VU0VfUFMyX1RPVUNIS0lUIGlzIG5vdCBzZXQKIENPTkZJR19NT1VTRV9TRVJJQUw9bQogIyBDT05GSUdfTU9VU0VfVlNYWFhBQSBpcyBub3Qgc2V0CiAjIENPTkZJR19JTlBVVF9KT1lTVElDSyBpcyBub3Qgc2V0CisjIENPTkZJR19JTlBVVF9UQUJMRVQgaXMgbm90IHNldAogIyBDT05GSUdfSU5QVVRfVE9VQ0hTQ1JFRU4gaXMgbm90IHNldAotIyBDT05GSUdfSU5QVVRfTUlTQyBpcyBub3Qgc2V0CitDT05GSUdfSU5QVVRfTUlTQz15CitDT05GSUdfSU5QVVRfTTY4S19CRUVQPW0KKyMgQ09ORklHX0lOUFVUX1VJTlBVVCBpcyBub3Qgc2V0CiAKICMKICMgSGFyZHdhcmUgSS9PIHBvcnRzCiAjCiBDT05GSUdfU0VSSU89bQotQ09ORklHX1NFUklPX1NFUlBPUlQ9bQorIyBDT05GSUdfU0VSSU9fU0VSUE9SVCBpcyBub3Qgc2V0CiBDT05GSUdfU0VSSU9fTElCUFMyPW0KICMgQ09ORklHX1NFUklPX1JBVyBpcyBub3Qgc2V0CiAjIENPTkZJR19HQU1FUE9SVCBpcyBub3Qgc2V0CkBAIC01NDksNiArNjY0LDcgQEAKIENPTkZJR19WVD15CiBDT05GSUdfVlRfQ09OU09MRT15CiBDT05GSUdfSFdfQ09OU09MRT15CitDT05GSUdfVlRfSFdfQ09OU09MRV9CSU5ESU5HPXkKICMgQ09ORklHX1NFUklBTF9OT05TVEFOREFSRCBpcyBub3Qgc2V0CiAKICMKQEAgLTU2MiwxMTYgKzY3OCwxMTcgQEAKIENPTkZJR19VTklYOThfUFRZUz15CiBDT05GSUdfTEVHQUNZX1BUWVM9eQogQ09ORklHX0xFR0FDWV9QVFlfQ09VTlQ9MjU2Ci0KLSMKLSMgSVBNSQotIwogIyBDT05GSUdfSVBNSV9IQU5ETEVSIGlzIG5vdCBzZXQKLQotIwotIyBXYXRjaGRvZyBDYXJkcwotIwotIyBDT05GSUdfV0FUQ0hET0cgaXMgbm90IHNldAorIyBDT05GSUdfSFdfUkFORE9NIGlzIG5vdCBzZXQKIENPTkZJR19HRU5fUlRDPW0KIENPTkZJR19HRU5fUlRDX1g9eQotIyBDT05GSUdfRFRMSyBpcyBub3Qgc2V0CiAjIENPTkZJR19SMzk2NCBpcyBub3Qgc2V0Ci0KLSMKLSMgRnRhcGUsIHRoZSBmbG9wcHkgdGFwZSBkZXZpY2UgZHJpdmVyCi0jCi0jIENPTkZJR19EUk0gaXMgbm90IHNldAogIyBDT05GSUdfUkFXX0RSSVZFUiBpcyBub3Qgc2V0Ci0KLSMKLSMgVFBNIGRldmljZXMKLSMKLQotIwotIyBJMkMgc3VwcG9ydAotIworIyBDT05GSUdfVENHX1RQTSBpcyBub3Qgc2V0CiAjIENPTkZJR19JMkMgaXMgbm90IHNldAogCiAjCi0jIERhbGxhcydzIDEtd2lyZSBidXMKKyMgU1BJIHN1cHBvcnQKICMKKyMgQ09ORklHX1NQSSBpcyBub3Qgc2V0CisjIENPTkZJR19TUElfTUFTVEVSIGlzIG5vdCBzZXQKICMgQ09ORklHX1cxIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BPV0VSX1NVUFBMWSBpcyBub3Qgc2V0CisjIENPTkZJR19IV01PTiBpcyBub3Qgc2V0CisjIENPTkZJR19USEVSTUFMIGlzIG5vdCBzZXQKKyMgQ09ORklHX1dBVENIRE9HIGlzIG5vdCBzZXQKIAogIwotIyBNaXNjIGRldmljZXMKKyMgU29uaWNzIFNpbGljb24gQmFja3BsYW5lCiAjCitDT05GSUdfU1NCX1BPU1NJQkxFPXkKKyMgQ09ORklHX1NTQiBpcyBub3Qgc2V0CisKKyMKKyMgTXVsdGlmdW5jdGlvbiBkZXZpY2UgZHJpdmVycworIworIyBDT05GSUdfTUZEX1NNNTAxIGlzIG5vdCBzZXQKIAogIwogIyBNdWx0aW1lZGlhIGRldmljZXMKICMKICMgQ09ORklHX1ZJREVPX0RFViBpcyBub3Qgc2V0Ci0KLSMKLSMgRGlnaXRhbCBWaWRlbyBCcm9hZGNhc3RpbmcgRGV2aWNlcwotIwotIyBDT05GSUdfRFZCIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RWQl9DT1JFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RBQiBpcyBub3Qgc2V0CiAKICMKICMgR3JhcGhpY3Mgc3VwcG9ydAogIworIyBDT05GSUdfVkdBU1RBVEUgaXMgbm90IHNldAorIyBDT05GSUdfVklERU9fT1VUUFVUX0NPTlRST0wgaXMgbm90IHNldAogQ09ORklHX0ZCPXkKKyMgQ09ORklHX0ZJUk1XQVJFX0VESUQgaXMgbm90IHNldAorIyBDT05GSUdfRkJfRERDIGlzIG5vdCBzZXQKIENPTkZJR19GQl9DRkJfRklMTFJFQ1Q9eQogQ09ORklHX0ZCX0NGQl9DT1BZQVJFQT15CiBDT05GSUdfRkJfQ0ZCX0lNQUdFQkxJVD15Ci1DT05GSUdfRkJfU09GVF9DVVJTT1I9eQorIyBDT05GSUdfRkJfQ0ZCX1JFVl9QSVhFTFNfSU5fQllURSBpcyBub3Qgc2V0CisjIENPTkZJR19GQl9TWVNfRklMTFJFQ1QgaXMgbm90IHNldAorIyBDT05GSUdfRkJfU1lTX0NPUFlBUkVBIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZCX1NZU19JTUFHRUJMSVQgaXMgbm90IHNldAorIyBDT05GSUdfRkJfU1lTX0ZPUFMgaXMgbm90IHNldAorQ09ORklHX0ZCX0RFRkVSUkVEX0lPPXkKKyMgQ09ORklHX0ZCX1NWR0FMSUIgaXMgbm90IHNldAogQ09ORklHX0ZCX01BQ01PREVTPXkKLUNPTkZJR19GQl9NT0RFX0hFTFBFUlM9eQorIyBDT05GSUdfRkJfQkFDS0xJR0hUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZCX01PREVfSEVMUEVSUyBpcyBub3Qgc2V0CiAjIENPTkZJR19GQl9USUxFQkxJVFRJTkcgaXMgbm90IHNldAorCisjCisjIEZyYW1lIGJ1ZmZlciBoYXJkd2FyZSBkcml2ZXJzCisjCiBDT05GSUdfRkJfVkFMS1lSSUU9eQogQ09ORklHX0ZCX01BQz15CisjIENPTkZJR19GQl9VVkVTQSBpcyBub3Qgc2V0CiAjIENPTkZJR19GQl9TMUQxM1hYWCBpcyBub3Qgc2V0CiAjIENPTkZJR19GQl9WSVJUVUFMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JBQ0tMSUdIVF9MQ0RfU1VQUE9SVCBpcyBub3Qgc2V0CisKKyMKKyMgRGlzcGxheSBkZXZpY2Ugc3VwcG9ydAorIworIyBDT05GSUdfRElTUExBWV9TVVBQT1JUIGlzIG5vdCBzZXQKIAogIwogIyBDb25zb2xlIGRpc3BsYXkgZHJpdmVyIHN1cHBvcnQKICMKIENPTkZJR19EVU1NWV9DT05TT0xFPXkKIENPTkZJR19GUkFNRUJVRkZFUl9DT05TT0xFPXkKKyMgQ09ORklHX0ZSQU1FQlVGRkVSX0NPTlNPTEVfREVURUNUX1BSSU1BUlkgaXMgbm90IHNldAorIyBDT05GSUdfRlJBTUVCVUZGRVJfQ09OU09MRV9ST1RBVElPTiBpcyBub3Qgc2V0CiAjIENPTkZJR19GT05UUyBpcyBub3Qgc2V0CiBDT05GSUdfRk9OVF84eDg9eQogQ09ORklHX0ZPTlRfOHgxNj15CiBDT05GSUdfRk9OVF82eDExPXkKLQotIwotIyBMb2dvIGNvbmZpZ3VyYXRpb24KLSMKIENPTkZJR19MT0dPPXkKIENPTkZJR19MT0dPX0xJTlVYX01PTk89eQogQ09ORklHX0xPR09fTElOVVhfVkdBMTY9eQogQ09ORklHX0xPR09fTElOVVhfQ0xVVDIyND15CiBDT05GSUdfTE9HT19NQUNfQ0xVVDIyND15Ci0jIENPTkZJR19CQUNLTElHSFRfTENEX1NVUFBPUlQgaXMgbm90IHNldAogCiAjCiAjIFNvdW5kCiAjCiAjIENPTkZJR19TT1VORCBpcyBub3Qgc2V0Ci0KLSMKLSMgVVNCIHN1cHBvcnQKLSMKLSMgQ09ORklHX1VTQl9BUkNIX0hBU19IQ0QgaXMgbm90IHNldAotIyBDT05GSUdfVVNCX0FSQ0hfSEFTX09IQ0kgaXMgbm90IHNldAotCi0jCi0jIFVTQiBHYWRnZXQgU3VwcG9ydAotIwotIyBDT05GSUdfVVNCX0dBREdFVCBpcyBub3Qgc2V0Ci0KLSMKLSMgTU1DL1NEIENhcmQgc3VwcG9ydAotIworQ09ORklHX0hJRF9TVVBQT1JUPXkKK0NPTkZJR19ISUQ9bQorIyBDT05GSUdfSElEX0RFQlVHIGlzIG5vdCBzZXQKK0NPTkZJR19ISURSQVc9eQorIyBDT05GSUdfVVNCX1NVUFBPUlQgaXMgbm90IHNldAogIyBDT05GSUdfTU1DIGlzIG5vdCBzZXQKKyMgQ09ORklHX01FTVNUSUNLIGlzIG5vdCBzZXQKKyMgQ09ORklHX05FV19MRURTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JUQ19DTEFTUyBpcyBub3Qgc2V0CiAKICMKLSMgSW5maW5pQmFuZCBzdXBwb3J0CisjIFVzZXJzcGFjZSBJL08KICMKLSMgQ09ORklHX0lORklOSUJBTkQgaXMgbm90IHNldAorIyBDT05GSUdfVUlPIGlzIG5vdCBzZXQKIAogIwogIyBDaGFyYWN0ZXIgZGV2aWNlcwpAQCAtNjg1LDEwICs4MDIsMTEgQEAKICMKIENPTkZJR19FWFQyX0ZTPXkKICMgQ09ORklHX0VYVDJfRlNfWEFUVFIgaXMgbm90IHNldAorIyBDT05GSUdfRVhUMl9GU19YSVAgaXMgbm90IHNldAogQ09ORklHX0VYVDNfRlM9eQogIyBDT05GSUdfRVhUM19GU19YQVRUUiBpcyBub3Qgc2V0CisjIENPTkZJR19FWFQ0REVWX0ZTIGlzIG5vdCBzZXQKIENPTkZJR19KQkQ9eQotIyBDT05GSUdfSkJEX0RFQlVHIGlzIG5vdCBzZXQKIENPTkZJR19SRUlTRVJGU19GUz1tCiAjIENPTkZJR19SRUlTRVJGU19DSEVDSyBpcyBub3Qgc2V0CiAjIENPTkZJR19SRUlTRVJGU19QUk9DX0lORk8gaXMgbm90IHNldApAQCAtNjk5LDI1ICs4MTcsMjkgQEAKICMgQ09ORklHX0pGU19ERUJVRyBpcyBub3Qgc2V0CiAjIENPTkZJR19KRlNfU1RBVElTVElDUyBpcyBub3Qgc2V0CiBDT05GSUdfRlNfUE9TSVhfQUNMPXkKLQotIwotIyBYRlMgc3VwcG9ydAotIwogQ09ORklHX1hGU19GUz1tCi1DT05GSUdfWEZTX0VYUE9SVD15Ci0jIENPTkZJR19YRlNfUlQgaXMgbm90IHNldAogIyBDT05GSUdfWEZTX1FVT1RBIGlzIG5vdCBzZXQKICMgQ09ORklHX1hGU19TRUNVUklUWSBpcyBub3Qgc2V0CiAjIENPTkZJR19YRlNfUE9TSVhfQUNMIGlzIG5vdCBzZXQKLUNPTkZJR19NSU5JWF9GUz15Ci0jIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19YRlNfUlQgaXMgbm90IHNldAorQ09ORklHX0dGUzJfRlM9bQorQ09ORklHX0dGUzJfRlNfTE9DS0lOR19OT0xPQ0s9bQorQ09ORklHX0dGUzJfRlNfTE9DS0lOR19ETE09bQorQ09ORklHX09DRlMyX0ZTPW0KKyMgQ09ORklHX09DRlMyX0RFQlVHX01BU0tMT0cgaXMgbm90IHNldAorIyBDT05GSUdfT0NGUzJfREVCVUdfRlMgaXMgbm90IHNldAorQ09ORklHX0ROT1RJRlk9eQorQ09ORklHX0lOT1RJRlk9eQorQ09ORklHX0lOT1RJRllfVVNFUj15CiBDT05GSUdfUVVPVEE9eQorQ09ORklHX1FVT1RBX05FVExJTktfSU5URVJGQUNFPXkKKyMgQ09ORklHX1BSSU5UX1FVT1RBX1dBUk5JTkcgaXMgbm90IHNldAogIyBDT05GSUdfUUZNVF9WMSBpcyBub3Qgc2V0CiAjIENPTkZJR19RRk1UX1YyIGlzIG5vdCBzZXQKIENPTkZJR19RVU9UQUNUTD15Ci1DT05GSUdfRE5PVElGWT15CiBDT05GSUdfQVVUT0ZTX0ZTPW0KIENPTkZJR19BVVRPRlM0X0ZTPW0KK0NPTkZJR19GVVNFX0ZTPW0KIAogIwogIyBDRC1ST00vRFZEIEZpbGVzeXN0ZW1zCkBAIC03MjUsNyArODQ3LDYgQEAKIENPTkZJR19JU085NjYwX0ZTPXkKIENPTkZJR19KT0xJRVQ9eQogQ09ORklHX1pJU09GUz15Ci1DT05GSUdfWklTT0ZTX0ZTPXkKIENPTkZJR19VREZfRlM9bQogQ09ORklHX1VERl9OTFM9eQogCkBAIC03NDQsMTMgKzg2NSwxMiBAQAogIwogQ09ORklHX1BST0NfRlM9eQogQ09ORklHX1BST0NfS0NPUkU9eQorQ09ORklHX1BST0NfU1lTQ1RMPXkKIENPTkZJR19TWVNGUz15Ci0jIENPTkZJR19ERVZGU19GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ERVZQVFNfRlNfWEFUVFIgaXMgbm90IHNldAogQ09ORklHX1RNUEZTPXkKLSMgQ09ORklHX1RNUEZTX1hBVFRSIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RNUEZTX1BPU0lYX0FDTCBpcyBub3Qgc2V0CiAjIENPTkZJR19IVUdFVExCX1BBR0UgaXMgbm90IHNldAotQ09ORklHX1JBTUZTPXkKK0NPTkZJR19DT05GSUdGU19GUz1tCiAKICMKICMgTWlzY2VsbGFuZW91cyBmaWxlc3lzdGVtcwpAQCAtNzY0LDQzICs4ODQsMzkgQEAKICMgQ09ORklHX0VGU19GUyBpcyBub3Qgc2V0CiBDT05GSUdfQ1JBTUZTPW0KICMgQ09ORklHX1ZYRlNfRlMgaXMgbm90IHNldAorQ09ORklHX01JTklYX0ZTPXkKIENPTkZJR19IUEZTX0ZTPW0KICMgQ09ORklHX1FOWDRGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CiBDT05GSUdfU1lTVl9GUz1tCiBDT05GSUdfVUZTX0ZTPW0KICMgQ09ORklHX1VGU19GU19XUklURSBpcyBub3Qgc2V0Ci0KLSMKLSMgTmV0d29yayBGaWxlIFN5c3RlbXMKLSMKKyMgQ09ORklHX1VGU19ERUJVRyBpcyBub3Qgc2V0CitDT05GSUdfTkVUV09SS19GSUxFU1lTVEVNUz15CiBDT05GSUdfTkZTX0ZTPW0KIENPTkZJR19ORlNfVjM9eQorIyBDT05GSUdfTkZTX1YzX0FDTCBpcyBub3Qgc2V0CiBDT05GSUdfTkZTX1Y0PXkKICMgQ09ORklHX05GU19ESVJFQ1RJTyBpcyBub3Qgc2V0CiBDT05GSUdfTkZTRD1tCiBDT05GSUdfTkZTRF9WMz15Ci1DT05GSUdfTkZTRF9WND15CisjIENPTkZJR19ORlNEX1YzX0FDTCBpcyBub3Qgc2V0CisjIENPTkZJR19ORlNEX1Y0IGlzIG5vdCBzZXQKIENPTkZJR19ORlNEX1RDUD15CiBDT05GSUdfTE9DS0Q9bQogQ09ORklHX0xPQ0tEX1Y0PXkKIENPTkZJR19FWFBPUlRGUz1tCitDT05GSUdfTkZTX0NPTU1PTj15CiBDT05GSUdfU1VOUlBDPW0KIENPTkZJR19TVU5SUENfR1NTPW0KK0NPTkZJR19TVU5SUENfQklORDM0PXkKIENPTkZJR19SUENTRUNfR1NTX0tSQjU9bQogIyBDT05GSUdfUlBDU0VDX0dTU19TUEtNMyBpcyBub3Qgc2V0CiBDT05GSUdfU01CX0ZTPW0KIENPTkZJR19TTUJfTkxTX0RFRkFVTFQ9eQogQ09ORklHX1NNQl9OTFNfUkVNT1RFPSJjcDQzNyIKICMgQ09ORklHX0NJRlMgaXMgbm90IHNldAotQ09ORklHX05DUF9GUz1tCi0jIENPTkZJR19OQ1BGU19QQUNLRVRfU0lHTklORyBpcyBub3Qgc2V0Ci0jIENPTkZJR19OQ1BGU19JT0NUTF9MT0NLSU5HIGlzIG5vdCBzZXQKLSMgQ09ORklHX05DUEZTX1NUUk9ORyBpcyBub3Qgc2V0Ci1DT05GSUdfTkNQRlNfTkZTX05TPXkKLUNPTkZJR19OQ1BGU19PUzJfTlM9eQotIyBDT05GSUdfTkNQRlNfU01BTExET1MgaXMgbm90IHNldAotQ09ORklHX05DUEZTX05MUz15Ci0jIENPTkZJR19OQ1BGU19FWFRSQVMgaXMgbm90IHNldAorIyBDT05GSUdfTkNQX0ZTIGlzIG5vdCBzZXQKIENPTkZJR19DT0RBX0ZTPW0KICMgQ09ORklHX0NPREFfRlNfT0xEX0FQSSBpcyBub3Qgc2V0CiAjIENPTkZJR19BRlNfRlMgaXMgbm90IHNldApAQCAtODA4LDI3ICs5MjQsOSBAQAogIwogIyBQYXJ0aXRpb24gVHlwZXMKICMKLUNPTkZJR19QQVJUSVRJT05fQURWQU5DRUQ9eQotIyBDT05GSUdfQUNPUk5fUEFSVElUSU9OIGlzIG5vdCBzZXQKLSMgQ09ORklHX09TRl9QQVJUSVRJT04gaXMgbm90IHNldAotQ09ORklHX0FNSUdBX1BBUlRJVElPTj15Ci1DT05GSUdfQVRBUklfUEFSVElUSU9OPXkKKyMgQ09ORklHX1BBUlRJVElPTl9BRFZBTkNFRCBpcyBub3Qgc2V0CiBDT05GSUdfTUFDX1BBUlRJVElPTj15CiBDT05GSUdfTVNET1NfUEFSVElUSU9OPXkKLUNPTkZJR19CU0RfRElTS0xBQkVMPXkKLUNPTkZJR19NSU5JWF9TVUJQQVJUSVRJT049eQotQ09ORklHX1NPTEFSSVNfWDg2X1BBUlRJVElPTj15Ci1DT05GSUdfVU5JWFdBUkVfRElTS0xBQkVMPXkKLUNPTkZJR19MRE1fUEFSVElUSU9OPXkKLUNPTkZJR19MRE1fREVCVUc9eQotIyBDT05GSUdfU0dJX1BBUlRJVElPTiBpcyBub3Qgc2V0Ci0jIENPTkZJR19VTFRSSVhfUEFSVElUSU9OIGlzIG5vdCBzZXQKLUNPTkZJR19TVU5fUEFSVElUSU9OPXkKLSMgQ09ORklHX0VGSV9QQVJUSVRJT04gaXMgbm90IHNldAotCi0jCi0jIE5hdGl2ZSBMYW5ndWFnZSBTdXBwb3J0Ci0jCiBDT05GSUdfTkxTPXkKIENPTkZJR19OTFNfREVGQVVMVD0iaXNvODg1OS0xIgogQ09ORklHX05MU19DT0RFUEFHRV80Mzc9eQpAQCAtODY5LDQ2ICs5NjcsNjUgQEAKIENPTkZJR19OTFNfS09JOF9SPW0KIENPTkZJR19OTFNfS09JOF9VPW0KIENPTkZJR19OTFNfVVRGOD15CitDT05GSUdfRExNPW0KKyMgQ09ORklHX0RMTV9ERUJVRyBpcyBub3Qgc2V0CiAKICMKICMgS2VybmVsIGhhY2tpbmcKICMKICMgQ09ORklHX1BSSU5US19USU1FIGlzIG5vdCBzZXQKLUNPTkZJR19ERUJVR19LRVJORUw9eQorQ09ORklHX0VOQUJMRV9XQVJOX0RFUFJFQ0FURUQ9eQorQ09ORklHX0VOQUJMRV9NVVNUX0NIRUNLPXkKIENPTkZJR19NQUdJQ19TWVNSUT15Ci1DT05GSUdfTE9HX0JVRl9TSElGVD0xNgotIyBDT05GSUdfU0NIRURTVEFUUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ERUJVR19TTEFCIGlzIG5vdCBzZXQKLSMgQ09ORklHX0RFQlVHX1NQSU5MT0NLIGlzIG5vdCBzZXQKLSMgQ09ORklHX0RFQlVHX1NQSU5MT0NLX1NMRUVQIGlzIG5vdCBzZXQKLSMgQ09ORklHX0RFQlVHX0tPQkpFQ1QgaXMgbm90IHNldAotQ09ORklHX0RFQlVHX0JVR1ZFUkJPU0U9eQotIyBDT05GSUdfREVCVUdfSU5GTyBpcyBub3Qgc2V0CisjIENPTkZJR19VTlVTRURfU1lNQk9MUyBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19GUkFNRV9QT0lOVEVSIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hFQURFUlNfQ0hFQ0sgaXMgbm90IHNldAorIyBDT05GSUdfREVCVUdfS0VSTkVMIGlzIG5vdCBzZXQKK0NPTkZJR19ERUJVR19CVUdWRVJCT1NFPXkKKyMgQ09ORklHX1NBTVBMRVMgaXMgbm90IHNldAogCiAjCiAjIFNlY3VyaXR5IG9wdGlvbnMKICMKICMgQ09ORklHX0tFWVMgaXMgbm90IHNldAogIyBDT05GSUdfU0VDVVJJVFkgaXMgbm90IHNldAotCi0jCi0jIENyeXB0b2dyYXBoaWMgb3B0aW9ucwotIworIyBDT05GSUdfU0VDVVJJVFlfRklMRV9DQVBBQklMSVRJRVMgaXMgbm90IHNldAorQ09ORklHX1hPUl9CTE9DS1M9bQorQ09ORklHX0FTWU5DX0NPUkU9bQorQ09ORklHX0FTWU5DX01FTUNQWT1tCitDT05GSUdfQVNZTkNfWE9SPW0KIENPTkZJR19DUllQVE89eQorQ09ORklHX0NSWVBUT19BTEdBUEk9eQorQ09ORklHX0NSWVBUT19BRUFEPW0KK0NPTkZJR19DUllQVE9fQkxLQ0lQSEVSPW0KK0NPTkZJR19DUllQVE9fU0VRSVY9bQorQ09ORklHX0NSWVBUT19IQVNIPXkKK0NPTkZJR19DUllQVE9fTUFOQUdFUj15CiBDT05GSUdfQ1JZUFRPX0hNQUM9eQorQ09ORklHX0NSWVBUT19YQ0JDPW0KIENPTkZJR19DUllQVE9fTlVMTD1tCiBDT05GSUdfQ1JZUFRPX01END1tCi1DT05GSUdfQ1JZUFRPX01ENT15CitDT05GSUdfQ1JZUFRPX01ENT1tCiBDT05GSUdfQ1JZUFRPX1NIQTE9bQogQ09ORklHX0NSWVBUT19TSEEyNTY9bQogQ09ORklHX0NSWVBUT19TSEE1MTI9bQogQ09ORklHX0NSWVBUT19XUDUxMj1tCiBDT05GSUdfQ1JZUFRPX1RHUjE5Mj1tCitDT05GSUdfQ1JZUFRPX0dGMTI4TVVMPW0KK0NPTkZJR19DUllQVE9fRUNCPW0KK0NPTkZJR19DUllQVE9fQ0JDPW0KK0NPTkZJR19DUllQVE9fUENCQz1tCitDT05GSUdfQ1JZUFRPX0xSVz1tCitDT05GSUdfQ1JZUFRPX1hUUz1tCitDT05GSUdfQ1JZUFRPX0NUUj1tCitDT05GSUdfQ1JZUFRPX0dDTT1tCitDT05GSUdfQ1JZUFRPX0NDTT1tCitDT05GSUdfQ1JZUFRPX0NSWVBURD1tCiBDT05GSUdfQ1JZUFRPX0RFUz1tCitDT05GSUdfQ1JZUFRPX0ZDUllQVD1tCiBDT05GSUdfQ1JZUFRPX0JMT1dGSVNIPW0KIENPTkZJR19DUllQVE9fVFdPRklTSD1tCitDT05GSUdfQ1JZUFRPX1RXT0ZJU0hfQ09NTU9OPW0KIENPTkZJR19DUllQVE9fU0VSUEVOVD1tCiBDT05GSUdfQ1JZUFRPX0FFUz1tCiBDT05GSUdfQ1JZUFRPX0NBU1Q1PW0KQEAgLTkxNywyMCArMTAzNCwzNSBAQAogQ09ORklHX0NSWVBUT19BUkM0PW0KIENPTkZJR19DUllQVE9fS0hBWkFEPW0KIENPTkZJR19DUllQVE9fQU5VQklTPW0KK0NPTkZJR19DUllQVE9fU0VFRD1tCitDT05GSUdfQ1JZUFRPX1NBTFNBMjA9bQogQ09ORklHX0NSWVBUT19ERUZMQVRFPW0KIENPTkZJR19DUllQVE9fTUlDSEFFTF9NSUM9bQogQ09ORklHX0NSWVBUT19DUkMzMkM9bQorQ09ORklHX0NSWVBUT19DQU1FTExJQT1tCiBDT05GSUdfQ1JZUFRPX1RFU1Q9bQotCi0jCi0jIEhhcmR3YXJlIGNyeXB0byBkZXZpY2VzCi0jCitDT05GSUdfQ1JZUFRPX0FVVEhFTkM9bQorQ09ORklHX0NSWVBUT19MWk89bQorIyBDT05GSUdfQ1JZUFRPX0hXIGlzIG5vdCBzZXQKIAogIwogIyBMaWJyYXJ5IHJvdXRpbmVzCiAjCitDT05GSUdfQklUUkVWRVJTRT15CiBDT05GSUdfQ1JDX0NDSVRUPW0KK0NPTkZJR19DUkMxNj1tCisjIENPTkZJR19DUkNfSVRVX1QgaXMgbm90IHNldAogQ09ORklHX0NSQzMyPXkKKyMgQ09ORklHX0NSQzcgaXMgbm90IHNldAogQ09ORklHX0xJQkNSQzMyQz1tCiBDT05GSUdfWkxJQl9JTkZMQVRFPXkKIENPTkZJR19aTElCX0RFRkxBVEU9bQorQ09ORklHX0xaT19DT01QUkVTUz1tCitDT05GSUdfTFpPX0RFQ09NUFJFU1M9bQorQ09ORklHX1RFWFRTRUFSQ0g9eQorQ09ORklHX1RFWFRTRUFSQ0hfS01QPW0KK0NPTkZJR19URVhUU0VBUkNIX0JNPW0KK0NPTkZJR19URVhUU0VBUkNIX0ZTTT1tCitDT05GSUdfUExJU1Q9eQorQ09ORklHX0hBU19JT01FTT15CitDT05GSUdfSEFTX0RNQT15CmRpZmYgLS1naXQgYS9hcmNoL202OGsvY29uZmlncy9tdm1lMTQ3X2RlZmNvbmZpZyBiL2FyY2gvbTY4ay9jb25maWdzL212bWUxNDdfZGVmY29uZmlnCmluZGV4IGYwZDU1MzQuLmY0MGIxNzIgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9jb25maWdzL212bWUxNDdfZGVmY29uZmlnCisrKyBiL2FyY2gvbTY4ay9jb25maWdzL212bWUxNDdfZGVmY29uZmlnCkBAIC0xLDYzICsxLDExMSBAQAogIwogIyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBtYWtlIGNvbmZpZzogZG9uJ3QgZWRpdAotIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjEyLXJjNi1tNjhrCi0jIFR1ZSBKdW4gIDcgMjA6MzQ6NTAgMjAwNQorIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjI1LXJjOAorIyBXZWQgQXByICAyIDIwOjQ2OjE3IDIwMDgKICMKIENPTkZJR19NNjhLPXkKIENPTkZJR19NTVU9eQotQ09ORklHX1VJRDE2PXkKIENPTkZJR19SV1NFTV9HRU5FUklDX1NQSU5MT0NLPXkKKyMgQ09ORklHX0FSQ0hfSEFTX0lMT0cyX1UzMiBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0hBU19JTE9HMl9VNjQgaXMgbm90IHNldAorQ09ORklHX0dFTkVSSUNfSFdFSUdIVD15CiBDT05GSUdfR0VORVJJQ19DQUxJQlJBVEVfREVMQVk9eQotCi0jCi0jIENvZGUgbWF0dXJpdHkgbGV2ZWwgb3B0aW9ucwotIwotQ09ORklHX0VYUEVSSU1FTlRBTD15Ci1DT05GSUdfQ0xFQU5fQ09NUElMRT15Ci1DT05GSUdfQlJPS0VOX09OX1NNUD15Ci1DT05GSUdfSU5JVF9FTlZfQVJHX0xJTUlUPTMyCitDT05GSUdfVElNRV9MT1dfUkVTPXkKK0NPTkZJR19HRU5FUklDX0lPTUFQPXkKK0NPTkZJR19OT19JT1BPUlQ9eQorIyBDT05GSUdfTk9fRE1BIGlzIG5vdCBzZXQKK0NPTkZJR19BUkNIX1NVUFBPUlRTX0FPVVQ9eQorQ09ORklHX0haPTEwMAorQ09ORklHX0RFRkNPTkZJR19MSVNUPSIvbGliL21vZHVsZXMvJFVOQU1FX1JFTEVBU0UvLmNvbmZpZyIKIAogIwogIyBHZW5lcmFsIHNldHVwCiAjCitDT05GSUdfRVhQRVJJTUVOVEFMPXkKK0NPTkZJR19CUk9LRU5fT05fU01QPXkKK0NPTkZJR19JTklUX0VOVl9BUkdfTElNSVQ9MzIKIENPTkZJR19MT0NBTFZFUlNJT049Ii1tdm1lMTQ3IgorQ09ORklHX0xPQ0FMVkVSU0lPTl9BVVRPPXkKIENPTkZJR19TV0FQPXkKIENPTkZJR19TWVNWSVBDPXkKK0NPTkZJR19TWVNWSVBDX1NZU0NUTD15CiBDT05GSUdfUE9TSVhfTVFVRVVFPXkKIENPTkZJR19CU0RfUFJPQ0VTU19BQ0NUPXkKICMgQ09ORklHX0JTRF9QUk9DRVNTX0FDQ1RfVjMgaXMgbm90IHNldAotQ09ORklHX1NZU0NUTD15Ci1DT05GSUdfQVVESVQ9eQotQ09ORklHX0hPVFBMVUc9eQotQ09ORklHX0tPQkpFQ1RfVUVWRU5UPXkKKyMgQ09ORklHX1RBU0tTVEFUUyBpcyBub3Qgc2V0CisjIENPTkZJR19BVURJVCBpcyBub3Qgc2V0CiAjIENPTkZJR19JS0NPTkZJRyBpcyBub3Qgc2V0CitDT05GSUdfTE9HX0JVRl9TSElGVD0xNAorIyBDT05GSUdfQ0dST1VQUyBpcyBub3Qgc2V0CisjIENPTkZJR19HUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CisjIENPTkZJR19TWVNGU19ERVBSRUNBVEVEX1YyIGlzIG5vdCBzZXQKK0NPTkZJR19SRUxBWT15CitDT05GSUdfTkFNRVNQQUNFUz15CisjIENPTkZJR19VVFNfTlMgaXMgbm90IHNldAorIyBDT05GSUdfSVBDX05TIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTRVJfTlMgaXMgbm90IHNldAorIyBDT05GSUdfUElEX05TIGlzIG5vdCBzZXQKK0NPTkZJR19CTEtfREVWX0lOSVRSRD15CitDT05GSUdfSU5JVFJBTUZTX1NPVVJDRT0iIgorIyBDT05GSUdfQ0NfT1BUSU1JWkVfRk9SX1NJWkUgaXMgbm90IHNldAorQ09ORklHX1NZU0NUTD15CiAjIENPTkZJR19FTUJFRERFRCBpcyBub3Qgc2V0CitDT05GSUdfVUlEMTY9eQorQ09ORklHX1NZU0NUTF9TWVNDQUxMPXkKIENPTkZJR19LQUxMU1lNUz15Ci0jIENPTkZJR19LQUxMU1lNU19BTEwgaXMgbm90IHNldAogIyBDT05GSUdfS0FMTFNZTVNfRVhUUkFfUEFTUyBpcyBub3Qgc2V0CitDT05GSUdfSE9UUExVRz15CiBDT05GSUdfUFJJTlRLPXkKIENPTkZJR19CVUc9eQorQ09ORklHX0VMRl9DT1JFPXkKKyMgQ09ORklHX0NPTVBBVF9CUksgaXMgbm90IHNldAogQ09ORklHX0JBU0VfRlVMTD15CiBDT05GSUdfRlVURVg9eQorQ09ORklHX0FOT05fSU5PREVTPXkKIENPTkZJR19FUE9MTD15CitDT05GSUdfU0lHTkFMRkQ9eQorQ09ORklHX1RJTUVSRkQ9eQorQ09ORklHX0VWRU5URkQ9eQogQ09ORklHX1NITUVNPXkKLUNPTkZJR19DQ19BTElHTl9GVU5DVElPTlM9MAotQ09ORklHX0NDX0FMSUdOX0xBQkVMUz0wCi1DT05GSUdfQ0NfQUxJR05fTE9PUFM9MAotQ09ORklHX0NDX0FMSUdOX0pVTVBTPTAKK0NPTkZJR19WTV9FVkVOVF9DT1VOVEVSUz15CitDT05GSUdfU0xBQj15CisjIENPTkZJR19TTFVCIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NMT0IgaXMgbm90IHNldAorIyBDT05GSUdfUFJPRklMSU5HIGlzIG5vdCBzZXQKKyMgQ09ORklHX01BUktFUlMgaXMgbm90IHNldAorIyBDT05GSUdfSEFWRV9PUFJPRklMRSBpcyBub3Qgc2V0CisjIENPTkZJR19IQVZFX0tQUk9CRVMgaXMgbm90IHNldAorIyBDT05GSUdfSEFWRV9LUkVUUFJPQkVTIGlzIG5vdCBzZXQKK0NPTkZJR19QUk9DX1BBR0VfTU9OSVRPUj15CitDT05GSUdfU0xBQklORk89eQorQ09ORklHX1JUX01VVEVYRVM9eQogIyBDT05GSUdfVElOWV9TSE1FTSBpcyBub3Qgc2V0CiBDT05GSUdfQkFTRV9TTUFMTD0wCi0KLSMKLSMgTG9hZGFibGUgbW9kdWxlIHN1cHBvcnQKLSMKIENPTkZJR19NT0RVTEVTPXkKIENPTkZJR19NT0RVTEVfVU5MT0FEPXkKICMgQ09ORklHX01PRFVMRV9GT1JDRV9VTkxPQUQgaXMgbm90IHNldAotQ09ORklHX09CU09MRVRFX01PRFBBUk09eQogIyBDT05GSUdfTU9EVkVSU0lPTlMgaXMgbm90IHNldAogIyBDT05GSUdfTU9EVUxFX1NSQ1ZFUlNJT05fQUxMIGlzIG5vdCBzZXQKIENPTkZJR19LTU9EPXkKK0NPTkZJR19CTE9DSz15CisjIENPTkZJR19MQkQgaXMgbm90IHNldAorIyBDT05GSUdfQkxLX0RFVl9JT19UUkFDRSBpcyBub3Qgc2V0CisjIENPTkZJR19MU0YgaXMgbm90IHNldAorQ09ORklHX0JMS19ERVZfQlNHPXkKKworIworIyBJTyBTY2hlZHVsZXJzCisjCitDT05GSUdfSU9TQ0hFRF9OT09QPXkKK0NPTkZJR19JT1NDSEVEX0FTPXkKK0NPTkZJR19JT1NDSEVEX0RFQURMSU5FPXkKK0NPTkZJR19JT1NDSEVEX0NGUT15CitDT05GSUdfREVGQVVMVF9BUz15CisjIENPTkZJR19ERUZBVUxUX0RFQURMSU5FIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RFRkFVTFRfQ0ZRIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RFRkFVTFRfTk9PUCBpcyBub3Qgc2V0CitDT05GSUdfREVGQVVMVF9JT1NDSEVEPSJhbnRpY2lwYXRvcnkiCitDT05GSUdfQ0xBU1NJQ19SQ1U9eQogCiAjCiAjIFBsYXRmb3JtIGRlcGVuZGVudCBzZXR1cApAQCAtODUsNiArMTMzLDIyIEBACiBDT05GSUdfTU1VX01PVE9ST0xBPXkKICMgQ09ORklHX002OEtGUFVfRU1VIGlzIG5vdCBzZXQKICMgQ09ORklHX0FEVkFOQ0VEIGlzIG5vdCBzZXQKK0NPTkZJR19BUkNIX0RJU0NPTlRJR01FTV9FTkFCTEU9eQorQ09ORklHX05PREVTX1NISUZUPTMKK0NPTkZJR19TRUxFQ1RfTUVNT1JZX01PREVMPXkKKyMgQ09ORklHX0ZMQVRNRU1fTUFOVUFMIGlzIG5vdCBzZXQKK0NPTkZJR19ESVNDT05USUdNRU1fTUFOVUFMPXkKKyMgQ09ORklHX1NQQVJTRU1FTV9NQU5VQUwgaXMgbm90IHNldAorQ09ORklHX0RJU0NPTlRJR01FTT15CitDT05GSUdfRkxBVF9OT0RFX01FTV9NQVA9eQorQ09ORklHX05FRURfTVVMVElQTEVfTk9ERVM9eQorIyBDT05GSUdfU1BBUlNFTUVNX1NUQVRJQyBpcyBub3Qgc2V0CisjIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUF9FTkFCTEUgaXMgbm90IHNldAorQ09ORklHX1NQTElUX1BUTE9DS19DUFVTPTQKKyMgQ09ORklHX1JFU09VUkNFU182NEJJVCBpcyBub3Qgc2V0CitDT05GSUdfWk9ORV9ETUFfRkxBRz0xCitDT05GSUdfQk9VTkNFPXkKK0NPTkZJR19WSVJUX1RPX0JVUz15CiAKICMKICMgR2VuZXJhbCBzZXR1cApAQCAtOTMsMTM1ICsxNTcsMTEgQEAKIENPTkZJR19CSU5GTVRfQU9VVD1tCiBDT05GSUdfQklORk1UX01JU0M9bQogQ09ORklHX1BST0NfSEFSRFdBUkU9eQorQ09ORklHX1pPTkVfRE1BPXkKKyMgQ09ORklHX0FSQ0hfU1VQUE9SVFNfTVNJIGlzIG5vdCBzZXQKIAogIwotIyBEZXZpY2UgRHJpdmVycwotIwotCi0jCi0jIEdlbmVyaWMgRHJpdmVyIE9wdGlvbnMKLSMKLUNPTkZJR19TVEFOREFMT05FPXkKLUNPTkZJR19QUkVWRU5UX0ZJUk1XQVJFX0JVSUxEPXkKLUNPTkZJR19GV19MT0FERVI9bQotIyBDT05GSUdfREVCVUdfRFJJVkVSIGlzIG5vdCBzZXQKLQotIwotIyBNZW1vcnkgVGVjaG5vbG9neSBEZXZpY2VzIChNVEQpCi0jCi0jIENPTkZJR19NVEQgaXMgbm90IHNldAotCi0jCi0jIFBhcmFsbGVsIHBvcnQgc3VwcG9ydAotIwotIyBDT05GSUdfUEFSUE9SVCBpcyBub3Qgc2V0Ci0KLSMKLSMgUGx1ZyBhbmQgUGxheSBzdXBwb3J0Ci0jCi0KLSMKLSMgQmxvY2sgZGV2aWNlcwotIwotIyBDT05GSUdfQkxLX0RFVl9DT1dfQ09NTU9OIGlzIG5vdCBzZXQKLUNPTkZJR19CTEtfREVWX0xPT1A9eQotQ09ORklHX0JMS19ERVZfQ1JZUFRPTE9PUD1tCi1DT05GSUdfQkxLX0RFVl9OQkQ9bQotQ09ORklHX0JMS19ERVZfUkFNPXkKLUNPTkZJR19CTEtfREVWX1JBTV9DT1VOVD0xNgotQ09ORklHX0JMS19ERVZfUkFNX1NJWkU9NDA5NgotQ09ORklHX0JMS19ERVZfSU5JVFJEPXkKLUNPTkZJR19JTklUUkFNRlNfU09VUkNFPSIiCi1DT05GSUdfQ0RST01fUEtUQ0RWRD1tCi1DT05GSUdfQ0RST01fUEtUQ0RWRF9CVUZGRVJTPTgKLSMgQ09ORklHX0NEUk9NX1BLVENEVkRfV0NBQ0hFIGlzIG5vdCBzZXQKLQotIwotIyBJTyBTY2hlZHVsZXJzCi0jCi1DT05GSUdfSU9TQ0hFRF9OT09QPXkKLUNPTkZJR19JT1NDSEVEX0FTPXkKLUNPTkZJR19JT1NDSEVEX0RFQURMSU5FPXkKLUNPTkZJR19JT1NDSEVEX0NGUT15Ci1DT05GSUdfQVRBX09WRVJfRVRIPW0KLQotIwotIyBBVEEvQVRBUEkvTUZNL1JMTCBzdXBwb3J0Ci0jCi0jIENPTkZJR19JREUgaXMgbm90IHNldAotCi0jCi0jIFNDU0kgZGV2aWNlIHN1cHBvcnQKLSMKLUNPTkZJR19TQ1NJPXkKLUNPTkZJR19TQ1NJX1BST0NfRlM9eQotCi0jCi0jIFNDU0kgc3VwcG9ydCB0eXBlIChkaXNrLCB0YXBlLCBDRC1ST00pCi0jCi1DT05GSUdfQkxLX0RFVl9TRD15Ci1DT05GSUdfQ0hSX0RFVl9TVD1tCi0jIENPTkZJR19DSFJfREVWX09TU1QgaXMgbm90IHNldAotQ09ORklHX0JMS19ERVZfU1I9eQotQ09ORklHX0JMS19ERVZfU1JfVkVORE9SPXkKLUNPTkZJR19DSFJfREVWX1NHPW0KLQotIwotIyBTb21lIFNDU0kgZGV2aWNlcyAoZS5nLiBDRCBqdWtlYm94KSBzdXBwb3J0IG11bHRpcGxlIExVTnMKLSMKLSMgQ09ORklHX1NDU0lfTVVMVElfTFVOIGlzIG5vdCBzZXQKLUNPTkZJR19TQ1NJX0NPTlNUQU5UUz15Ci0jIENPTkZJR19TQ1NJX0xPR0dJTkcgaXMgbm90IHNldAotCi0jCi0jIFNDU0kgVHJhbnNwb3J0IEF0dHJpYnV0ZXMKLSMKLSMgQ09ORklHX1NDU0lfU1BJX0FUVFJTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NDU0lfRkNfQVRUUlMgaXMgbm90IHNldAotIyBDT05GSUdfU0NTSV9JU0NTSV9BVFRSUyBpcyBub3Qgc2V0Ci0KLSMKLSMgU0NTSSBsb3ctbGV2ZWwgZHJpdmVycwotIwotIyBDT05GSUdfU0NTSV9TQVRBIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NDU0lfREVCVUcgaXMgbm90IHNldAotQ09ORklHX01WTUUxNDdfU0NTST15Ci0KLSMKLSMgTXVsdGktZGV2aWNlIHN1cHBvcnQgKFJBSUQgYW5kIExWTSkKLSMKLUNPTkZJR19NRD15Ci1DT05GSUdfQkxLX0RFVl9NRD1tCi1DT05GSUdfTURfTElORUFSPW0KLUNPTkZJR19NRF9SQUlEMD1tCi1DT05GSUdfTURfUkFJRDE9bQotIyBDT05GSUdfTURfUkFJRDEwIGlzIG5vdCBzZXQKLUNPTkZJR19NRF9SQUlENT1tCi1DT05GSUdfTURfUkFJRDY9bQotQ09ORklHX01EX01VTFRJUEFUSD1tCi0jIENPTkZJR19NRF9GQVVMVFkgaXMgbm90IHNldAotQ09ORklHX0JMS19ERVZfRE09bQotQ09ORklHX0RNX0NSWVBUPW0KLUNPTkZJR19ETV9TTkFQU0hPVD1tCi1DT05GSUdfRE1fTUlSUk9SPW0KLUNPTkZJR19ETV9aRVJPPW0KLUNPTkZJR19ETV9NVUxUSVBBVEg9bQotQ09ORklHX0RNX01VTFRJUEFUSF9FTUM9bQotCi0jCi0jIEZ1c2lvbiBNUFQgZGV2aWNlIHN1cHBvcnQKLSMKLQotIwotIyBJRUVFIDEzOTQgKEZpcmVXaXJlKSBzdXBwb3J0Ci0jCi0KLSMKLSMgSTJPIGRldmljZSBzdXBwb3J0Ci0jCi0KLSMKLSMgTmV0d29ya2luZyBzdXBwb3J0CisjIE5ldHdvcmtpbmcKICMKIENPTkZJR19ORVQ9eQogCkBAIC0yMzEsMTAgKzE3MSwxNyBAQAogQ09ORklHX1BBQ0tFVD15CiAjIENPTkZJR19QQUNLRVRfTU1BUCBpcyBub3Qgc2V0CiBDT05GSUdfVU5JWD15CitDT05GSUdfWEZSTT15CisjIENPTkZJR19YRlJNX1VTRVIgaXMgbm90IHNldAorIyBDT05GSUdfWEZSTV9TVUJfUE9MSUNZIGlzIG5vdCBzZXQKK0NPTkZJR19YRlJNX01JR1JBVEU9eQorIyBDT05GSUdfWEZSTV9TVEFUSVNUSUNTIGlzIG5vdCBzZXQKIENPTkZJR19ORVRfS0VZPXkKK0NPTkZJR19ORVRfS0VZX01JR1JBVEU9eQogQ09ORklHX0lORVQ9eQogIyBDT05GSUdfSVBfTVVMVElDQVNUIGlzIG5vdCBzZXQKICMgQ09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUiBpcyBub3Qgc2V0CitDT05GSUdfSVBfRklCX0hBU0g9eQogQ09ORklHX0lQX1BOUD15CiBDT05GSUdfSVBfUE5QX0RIQ1A9eQogQ09ORklHX0lQX1BOUF9CT09UUD15CkBAIC0yNDYsMTQ1ICsxOTMsMTk5IEBACiBDT05GSUdfSU5FVF9BSD1tCiBDT05GSUdfSU5FVF9FU1A9bQogQ09ORklHX0lORVRfSVBDT01QPW0KK0NPTkZJR19JTkVUX1hGUk1fVFVOTkVMPW0KIENPTkZJR19JTkVUX1RVTk5FTD1tCi1DT05GSUdfSVBfVENQRElBRz1tCi1DT05GSUdfSVBfVENQRElBR19JUFY2PXkKLQotIwotIyBJUDogVmlydHVhbCBTZXJ2ZXIgQ29uZmlndXJhdGlvbgotIworQ09ORklHX0lORVRfWEZSTV9NT0RFX1RSQU5TUE9SVD1tCitDT05GSUdfSU5FVF9YRlJNX01PREVfVFVOTkVMPW0KK0NPTkZJR19JTkVUX1hGUk1fTU9ERV9CRUVUPW0KK0NPTkZJR19JTkVUX0xSTz1tCitDT05GSUdfSU5FVF9ESUFHPW0KK0NPTkZJR19JTkVUX1RDUF9ESUFHPW0KKyMgQ09ORklHX1RDUF9DT05HX0FEVkFOQ0VEIGlzIG5vdCBzZXQKK0NPTkZJR19UQ1BfQ09OR19DVUJJQz15CitDT05GSUdfREVGQVVMVF9UQ1BfQ09ORz0iY3ViaWMiCisjIENPTkZJR19UQ1BfTUQ1U0lHIGlzIG5vdCBzZXQKICMgQ09ORklHX0lQX1ZTIGlzIG5vdCBzZXQKIENPTkZJR19JUFY2PW0KIENPTkZJR19JUFY2X1BSSVZBQ1k9eQorQ09ORklHX0lQVjZfUk9VVEVSX1BSRUY9eQorQ09ORklHX0lQVjZfUk9VVEVfSU5GTz15CisjIENPTkZJR19JUFY2X09QVElNSVNUSUNfREFEIGlzIG5vdCBzZXQKIENPTkZJR19JTkVUNl9BSD1tCiBDT05GSUdfSU5FVDZfRVNQPW0KIENPTkZJR19JTkVUNl9JUENPTVA9bQorIyBDT05GSUdfSVBWNl9NSVA2IGlzIG5vdCBzZXQKK0NPTkZJR19JTkVUNl9YRlJNX1RVTk5FTD1tCiBDT05GSUdfSU5FVDZfVFVOTkVMPW0KK0NPTkZJR19JTkVUNl9YRlJNX01PREVfVFJBTlNQT1JUPW0KK0NPTkZJR19JTkVUNl9YRlJNX01PREVfVFVOTkVMPW0KK0NPTkZJR19JTkVUNl9YRlJNX01PREVfQkVFVD1tCitDT05GSUdfSU5FVDZfWEZSTV9NT0RFX1JPVVRFT1BUSU1JWkFUSU9OPW0KK0NPTkZJR19JUFY2X1NJVD1tCiBDT05GSUdfSVBWNl9UVU5ORUw9bQorIyBDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVMgaXMgbm90IHNldAorIyBDT05GSUdfTkVUV09SS19TRUNNQVJLIGlzIG5vdCBzZXQKIENPTkZJR19ORVRGSUxURVI9eQogIyBDT05GSUdfTkVURklMVEVSX0RFQlVHIGlzIG5vdCBzZXQKK0NPTkZJR19ORVRGSUxURVJfQURWQU5DRUQ9eQorCisjCisjIENvcmUgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24KKyMKK0NPTkZJR19ORVRGSUxURVJfTkVUTElOSz1tCitDT05GSUdfTkVURklMVEVSX05FVExJTktfUVVFVUU9bQorQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LX0xPRz1tCitDT05GSUdfTkZfQ09OTlRSQUNLPW0KK0NPTkZJR19ORl9DVF9BQ0NUPXkKK0NPTkZJR19ORl9DT05OVFJBQ0tfTUFSSz15CisjIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTIGlzIG5vdCBzZXQKK0NPTkZJR19ORl9DVF9QUk9UT19HUkU9bQorQ09ORklHX05GX0NUX1BST1RPX1NDVFA9bQorQ09ORklHX05GX0NUX1BST1RPX1VEUExJVEU9bQorQ09ORklHX05GX0NPTk5UUkFDS19BTUFOREE9bQorQ09ORklHX05GX0NPTk5UUkFDS19GVFA9bQorQ09ORklHX05GX0NPTk5UUkFDS19IMzIzPW0KK0NPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW0KK0NPTkZJR19ORl9DT05OVFJBQ0tfTkVUQklPU19OUz1tCitDT05GSUdfTkZfQ09OTlRSQUNLX1BQVFA9bQorQ09ORklHX05GX0NPTk5UUkFDS19TQU5FPW0KK0NPTkZJR19ORl9DT05OVFJBQ0tfU0lQPW0KK0NPTkZJR19ORl9DT05OVFJBQ0tfVEZUUD1tCisjIENPTkZJR19ORl9DVF9ORVRMSU5LIGlzIG5vdCBzZXQKK0NPTkZJR19ORVRGSUxURVJfWFRBQkxFUz1tCitDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9DTEFTU0lGWT1tCitDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9DT05OTUFSSz1tCitDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9EU0NQPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX01BUks9bQorQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfTkZRVUVVRT1tCitDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9ORkxPRz1tCitDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9OT1RSQUNLPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX1JBVEVFU1Q9bQorQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfVFJBQ0U9bQorQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfVENQTVNTPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX1RDUE9QVFNUUklQPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfQ09NTUVOVD1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0NPTk5CWVRFUz1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0NPTk5MSU1JVD1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0NPTk5NQVJLPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfQ09OTlRSQUNLPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfRENDUD1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0RTQ1A9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9FU1A9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9IRUxQRVI9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9JUFJBTkdFPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfTEVOR1RIPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfTElNSVQ9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9NQUM9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9NQVJLPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfT1dORVI9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9QT0xJQ1k9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9NVUxUSVBPUlQ9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9QS1RUWVBFPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfUVVPVEE9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9SQVRFRVNUPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfUkVBTE09bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9TQ1RQPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfU1RBVEU9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9TVEFUSVNUSUM9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9TVFJJTkc9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9UQ1BNU1M9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9USU1FPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfVTMyPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfSEFTSExJTUlUPW0KIAogIwogIyBJUDogTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24KICMKLUNPTkZJR19JUF9ORl9DT05OVFJBQ0s9bQotIyBDT05GSUdfSVBfTkZfQ1RfQUNDVCBpcyBub3Qgc2V0Ci1DT05GSUdfSVBfTkZfQ09OTlRSQUNLX01BUks9eQotIyBDT05GSUdfSVBfTkZfQ1RfUFJPVE9fU0NUUCBpcyBub3Qgc2V0Ci1DT05GSUdfSVBfTkZfRlRQPW0KLUNPTkZJR19JUF9ORl9JUkM9bQotQ09ORklHX0lQX05GX1RGVFA9bQotQ09ORklHX0lQX05GX0FNQU5EQT1tCitDT05GSUdfTkZfQ09OTlRSQUNLX0lQVjQ9bQorQ09ORklHX05GX0NPTk5UUkFDS19QUk9DX0NPTVBBVD15CiBDT05GSUdfSVBfTkZfUVVFVUU9bQogQ09ORklHX0lQX05GX0lQVEFCTEVTPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9MSU1JVD1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfSVBSQU5HRT1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfTUFDPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9QS1RUWVBFPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9NQVJLPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9NVUxUSVBPUlQ9bQotQ09ORklHX0lQX05GX01BVENIX1RPUz1tCiBDT05GSUdfSVBfTkZfTUFUQ0hfUkVDRU5UPW0KIENPTkZJR19JUF9ORl9NQVRDSF9FQ049bQotQ09ORklHX0lQX05GX01BVENIX0RTQ1A9bQotQ09ORklHX0lQX05GX01BVENIX0FIX0VTUD1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfTEVOR1RIPW0KK0NPTkZJR19JUF9ORl9NQVRDSF9BSD1tCiBDT05GSUdfSVBfTkZfTUFUQ0hfVFRMPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9UQ1BNU1M9bQotQ09ORklHX0lQX05GX01BVENIX0hFTFBFUj1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfU1RBVEU9bQotQ09ORklHX0lQX05GX01BVENIX0NPTk5UUkFDSz1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfT1dORVI9bQogQ09ORklHX0lQX05GX01BVENIX0FERFJUWVBFPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9SRUFMTT1tCi0jIENPTkZJR19JUF9ORl9NQVRDSF9TQ1RQIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lQX05GX01BVENIX0NPTU1FTlQgaXMgbm90IHNldAotQ09ORklHX0lQX05GX01BVENIX0NPTk5NQVJLPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9IQVNITElNSVQ9bQogQ09ORklHX0lQX05GX0ZJTFRFUj1tCiBDT05GSUdfSVBfTkZfVEFSR0VUX1JFSkVDVD1tCiBDT05GSUdfSVBfTkZfVEFSR0VUX0xPRz1tCiBDT05GSUdfSVBfTkZfVEFSR0VUX1VMT0c9bQotQ09ORklHX0lQX05GX1RBUkdFVF9UQ1BNU1M9bQotQ09ORklHX0lQX05GX05BVD1tCi1DT05GSUdfSVBfTkZfTkFUX05FRURFRD15CitDT05GSUdfTkZfTkFUPW0KK0NPTkZJR19ORl9OQVRfTkVFREVEPXkKIENPTkZJR19JUF9ORl9UQVJHRVRfTUFTUVVFUkFERT1tCiBDT05GSUdfSVBfTkZfVEFSR0VUX1JFRElSRUNUPW0KIENPTkZJR19JUF9ORl9UQVJHRVRfTkVUTUFQPW0KLUNPTkZJR19JUF9ORl9UQVJHRVRfU0FNRT1tCi1DT05GSUdfSVBfTkZfTkFUX1NOTVBfQkFTSUM9bQotQ09ORklHX0lQX05GX05BVF9JUkM9bQotQ09ORklHX0lQX05GX05BVF9GVFA9bQotQ09ORklHX0lQX05GX05BVF9URlRQPW0KLUNPTkZJR19JUF9ORl9OQVRfQU1BTkRBPW0KK0NPTkZJR19ORl9OQVRfU05NUF9CQVNJQz1tCitDT05GSUdfTkZfTkFUX1BST1RPX0dSRT1tCitDT05GSUdfTkZfTkFUX0ZUUD1tCitDT05GSUdfTkZfTkFUX0lSQz1tCitDT05GSUdfTkZfTkFUX1RGVFA9bQorQ09ORklHX05GX05BVF9BTUFOREE9bQorQ09ORklHX05GX05BVF9QUFRQPW0KK0NPTkZJR19ORl9OQVRfSDMyMz1tCitDT05GSUdfTkZfTkFUX1NJUD1tCiBDT05GSUdfSVBfTkZfTUFOR0xFPW0KLUNPTkZJR19JUF9ORl9UQVJHRVRfVE9TPW0KIENPTkZJR19JUF9ORl9UQVJHRVRfRUNOPW0KLUNPTkZJR19JUF9ORl9UQVJHRVRfRFNDUD1tCi1DT05GSUdfSVBfTkZfVEFSR0VUX01BUks9bQotQ09ORklHX0lQX05GX1RBUkdFVF9DTEFTU0lGWT1tCi1DT05GSUdfSVBfTkZfVEFSR0VUX0NPTk5NQVJLPW0KLSMgQ09ORklHX0lQX05GX1RBUkdFVF9DTFVTVEVSSVAgaXMgbm90IHNldAorQ09ORklHX0lQX05GX1RBUkdFVF9UVEw9bQorQ09ORklHX0lQX05GX1RBUkdFVF9DTFVTVEVSSVA9bQogQ09ORklHX0lQX05GX1JBVz1tCi1DT05GSUdfSVBfTkZfVEFSR0VUX05PVFJBQ0s9bQogQ09ORklHX0lQX05GX0FSUFRBQkxFUz1tCiBDT05GSUdfSVBfTkZfQVJQRklMVEVSPW0KIENPTkZJR19JUF9ORl9BUlBfTUFOR0xFPW0KIAogIwotIyBJUHY2OiBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvbiAoRVhQRVJJTUVOVEFMKQorIyBJUHY2OiBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvbgogIworQ09ORklHX05GX0NPTk5UUkFDS19JUFY2PW0KIENPTkZJR19JUDZfTkZfUVVFVUU9bQogQ09ORklHX0lQNl9ORl9JUFRBQkxFUz1tCi1DT05GSUdfSVA2X05GX01BVENIX0xJTUlUPW0KLUNPTkZJR19JUDZfTkZfTUFUQ0hfTUFDPW0KIENPTkZJR19JUDZfTkZfTUFUQ0hfUlQ9bQogQ09ORklHX0lQNl9ORl9NQVRDSF9PUFRTPW0KIENPTkZJR19JUDZfTkZfTUFUQ0hfRlJBRz1tCiBDT05GSUdfSVA2X05GX01BVENIX0hMPW0KLUNPTkZJR19JUDZfTkZfTUFUQ0hfTVVMVElQT1JUPW0KLUNPTkZJR19JUDZfTkZfTUFUQ0hfT1dORVI9bQotQ09ORklHX0lQNl9ORl9NQVRDSF9NQVJLPW0KIENPTkZJR19JUDZfTkZfTUFUQ0hfSVBWNkhFQURFUj1tCi1DT05GSUdfSVA2X05GX01BVENIX0FIRVNQPW0KLUNPTkZJR19JUDZfTkZfTUFUQ0hfTEVOR1RIPW0KK0NPTkZJR19JUDZfTkZfTUFUQ0hfQUg9bQorQ09ORklHX0lQNl9ORl9NQVRDSF9NSD1tCiBDT05GSUdfSVA2X05GX01BVENIX0VVSTY0PW0KIENPTkZJR19JUDZfTkZfRklMVEVSPW0KIENPTkZJR19JUDZfTkZfVEFSR0VUX0xPRz1tCitDT05GSUdfSVA2X05GX1RBUkdFVF9SRUpFQ1Q9bQogQ09ORklHX0lQNl9ORl9NQU5HTEU9bQotQ09ORklHX0lQNl9ORl9UQVJHRVRfTUFSSz1tCitDT05GSUdfSVA2X05GX1RBUkdFVF9ITD1tCiBDT05GSUdfSVA2X05GX1JBVz1tCi1DT05GSUdfWEZSTT15Ci1DT05GSUdfWEZSTV9VU0VSPW0KK0NPTkZJR19JUF9EQ0NQPW0KK0NPTkZJR19JTkVUX0RDQ1BfRElBRz1tCitDT05GSUdfSVBfRENDUF9BQ0tWRUM9eQogCiAjCi0jIFNDVFAgQ29uZmlndXJhdGlvbiAoRVhQRVJJTUVOVEFMKQorIyBEQ0NQIENDSURzIENvbmZpZ3VyYXRpb24gKEVYUEVSSU1FTlRBTCkKICMKK0NPTkZJR19JUF9EQ0NQX0NDSUQyPW0KKyMgQ09ORklHX0lQX0RDQ1BfQ0NJRDJfREVCVUcgaXMgbm90IHNldAorQ09ORklHX0lQX0RDQ1BfQ0NJRDM9bQorIyBDT05GSUdfSVBfRENDUF9DQ0lEM19ERUJVRyBpcyBub3Qgc2V0CitDT05GSUdfSVBfRENDUF9DQ0lEM19SVE89MTAwCitDT05GSUdfSVBfRENDUF9URlJDX0xJQj1tCiBDT05GSUdfSVBfU0NUUD1tCiAjIENPTkZJR19TQ1RQX0RCR19NU0cgaXMgbm90IHNldAogIyBDT05GSUdfU0NUUF9EQkdfT0JKQ05UIGlzIG5vdCBzZXQKICMgQ09ORklHX1NDVFBfSE1BQ19OT05FIGlzIG5vdCBzZXQKICMgQ09ORklHX1NDVFBfSE1BQ19TSEExIGlzIG5vdCBzZXQKIENPTkZJR19TQ1RQX0hNQUNfTUQ1PXkKKyMgQ09ORklHX1RJUEMgaXMgbm90IHNldAogIyBDT05GSUdfQVRNIGlzIG5vdCBzZXQKICMgQ09ORklHX0JSSURHRSBpcyBub3Qgc2V0CiAjIENPTkZJR19WTEFOXzgwMjFRIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQ05FVCBpcyBub3Qgc2V0CiBDT05GSUdfTExDPW0KICMgQ09ORklHX0xMQzIgaXMgbm90IHNldAotQ09ORklHX0lQWD1tCi0jIENPTkZJR19JUFhfSU5URVJOIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lQWCBpcyBub3Qgc2V0CiBDT05GSUdfQVRBTEs9bQogIyBDT05GSUdfREVWX0FQUExFVEFMSyBpcyBub3Qgc2V0CiAjIENPTkZJR19YMjUgaXMgbm90IHNldAogIyBDT05GSUdfTEFQQiBpcyBub3Qgc2V0Ci0jIENPTkZJR19ORVRfRElWRVJUIGlzIG5vdCBzZXQKICMgQ09ORklHX0VDT05FVCBpcyBub3Qgc2V0CiAjIENPTkZJR19XQU5fUk9VVEVSIGlzIG5vdCBzZXQKLQotIwotIyBRb1MgYW5kL29yIGZhaXIgcXVldWVpbmcKLSMKICMgQ09ORklHX05FVF9TQ0hFRCBpcyBub3Qgc2V0CiBDT05GSUdfTkVUX0NMU19ST1VURT15CiAKQEAgLTM5Miw0NiArMzkzLDE1NSBAQAogIyBOZXR3b3JrIHRlc3RpbmcKICMKICMgQ09ORklHX05FVF9QS1RHRU4gaXMgbm90IHNldAotQ09ORklHX05FVFBPTEw9eQotIyBDT05GSUdfTkVUUE9MTF9SWCBpcyBub3Qgc2V0Ci0jIENPTkZJR19ORVRQT0xMX1RSQVAgaXMgbm90IHNldAotQ09ORklHX05FVF9QT0xMX0NPTlRST0xMRVI9eQogIyBDT05GSUdfSEFNUkFESU8gaXMgbm90IHNldAorIyBDT05GSUdfQ0FOIGlzIG5vdCBzZXQKICMgQ09ORklHX0lSREEgaXMgbm90IHNldAogIyBDT05GSUdfQlQgaXMgbm90IHNldAorIyBDT05GSUdfQUZfUlhSUEMgaXMgbm90IHNldAorCisjCisjIFdpcmVsZXNzCisjCisjIENPTkZJR19DRkc4MDIxMSBpcyBub3Qgc2V0CitDT05GSUdfV0lSRUxFU1NfRVhUPXkKKyMgQ09ORklHX01BQzgwMjExIGlzIG5vdCBzZXQKK0NPTkZJR19JRUVFODAyMTE9bQorIyBDT05GSUdfSUVFRTgwMjExX0RFQlVHIGlzIG5vdCBzZXQKK0NPTkZJR19JRUVFODAyMTFfQ1JZUFRfV0VQPW0KK0NPTkZJR19JRUVFODAyMTFfQ1JZUFRfQ0NNUD1tCitDT05GSUdfSUVFRTgwMjExX0NSWVBUX1RLSVA9bQorQ09ORklHX0lFRUU4MDIxMV9TT0ZUTUFDPW0KKyMgQ09ORklHX0lFRUU4MDIxMV9TT0ZUTUFDX0RFQlVHIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JGS0lMTCBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRfOVAgaXMgbm90IHNldAorCisjCisjIERldmljZSBEcml2ZXJzCisjCisKKyMKKyMgR2VuZXJpYyBEcml2ZXIgT3B0aW9ucworIworQ09ORklHX1VFVkVOVF9IRUxQRVJfUEFUSD0iL3NiaW4vaG90cGx1ZyIKK0NPTkZJR19TVEFOREFMT05FPXkKK0NPTkZJR19QUkVWRU5UX0ZJUk1XQVJFX0JVSUxEPXkKK0NPTkZJR19GV19MT0FERVI9bQorIyBDT05GSUdfU1lTX0hZUEVSVklTT1IgaXMgbm90IHNldAorQ09ORklHX0NPTk5FQ1RPUj1tCisjIENPTkZJR19NVEQgaXMgbm90IHNldAorIyBDT05GSUdfUEFSUE9SVCBpcyBub3Qgc2V0CitDT05GSUdfQkxLX0RFVj15CisjIENPTkZJR19CTEtfREVWX0NPV19DT01NT04gaXMgbm90IHNldAorQ09ORklHX0JMS19ERVZfTE9PUD15CitDT05GSUdfQkxLX0RFVl9DUllQVE9MT09QPW0KK0NPTkZJR19CTEtfREVWX05CRD1tCitDT05GSUdfQkxLX0RFVl9SQU09eQorQ09ORklHX0JMS19ERVZfUkFNX0NPVU5UPTE2CitDT05GSUdfQkxLX0RFVl9SQU1fU0laRT00MDk2CisjIENPTkZJR19CTEtfREVWX1hJUCBpcyBub3Qgc2V0CitDT05GSUdfQ0RST01fUEtUQ0RWRD1tCitDT05GSUdfQ0RST01fUEtUQ0RWRF9CVUZGRVJTPTgKKyMgQ09ORklHX0NEUk9NX1BLVENEVkRfV0NBQ0hFIGlzIG5vdCBzZXQKK0NPTkZJR19BVEFfT1ZFUl9FVEg9bQorQ09ORklHX01JU0NfREVWSUNFUz15CisjIENPTkZJR19FRVBST01fOTNDWDYgaXMgbm90IHNldAorIyBDT05GSUdfRU5DTE9TVVJFX1NFUlZJQ0VTIGlzIG5vdCBzZXQKK0NPTkZJR19IQVZFX0lERT15CisjIENPTkZJR19JREUgaXMgbm90IHNldAorCisjCisjIFNDU0kgZGV2aWNlIHN1cHBvcnQKKyMKK0NPTkZJR19SQUlEX0FUVFJTPW0KK0NPTkZJR19TQ1NJPXkKK0NPTkZJR19TQ1NJX0RNQT15CitDT05GSUdfU0NTSV9UR1Q9bQorIyBDT05GSUdfU0NTSV9ORVRMSU5LIGlzIG5vdCBzZXQKK0NPTkZJR19TQ1NJX1BST0NfRlM9eQorCisjCisjIFNDU0kgc3VwcG9ydCB0eXBlIChkaXNrLCB0YXBlLCBDRC1ST00pCisjCitDT05GSUdfQkxLX0RFVl9TRD15CitDT05GSUdfQ0hSX0RFVl9TVD1tCitDT05GSUdfQ0hSX0RFVl9PU1NUPW0KK0NPTkZJR19CTEtfREVWX1NSPXkKK0NPTkZJR19CTEtfREVWX1NSX1ZFTkRPUj15CitDT05GSUdfQ0hSX0RFVl9TRz1tCisjIENPTkZJR19DSFJfREVWX1NDSCBpcyBub3Qgc2V0CisKKyMKKyMgU29tZSBTQ1NJIGRldmljZXMgKGUuZy4gQ0QganVrZWJveCkgc3VwcG9ydCBtdWx0aXBsZSBMVU5zCisjCisjIENPTkZJR19TQ1NJX01VTFRJX0xVTiBpcyBub3Qgc2V0CitDT05GSUdfU0NTSV9DT05TVEFOVFM9eQorIyBDT05GSUdfU0NTSV9MT0dHSU5HIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDU0lfU0NBTl9BU1lOQyBpcyBub3Qgc2V0CitDT05GSUdfU0NTSV9XQUlUX1NDQU49bQorCisjCisjIFNDU0kgVHJhbnNwb3J0cworIworQ09ORklHX1NDU0lfU1BJX0FUVFJTPXkKKyMgQ09ORklHX1NDU0lfRkNfQVRUUlMgaXMgbm90IHNldAorQ09ORklHX1NDU0lfSVNDU0lfQVRUUlM9bQorQ09ORklHX1NDU0lfU0FTX0FUVFJTPW0KK0NPTkZJR19TQ1NJX1NBU19MSUJTQVM9bQorQ09ORklHX1NDU0lfU0FTX0hPU1RfU01QPXkKKyMgQ09ORklHX1NDU0lfU0FTX0xJQlNBU19ERUJVRyBpcyBub3Qgc2V0CitDT05GSUdfU0NTSV9TUlBfQVRUUlM9bQorQ09ORklHX1NDU0lfU1JQX1RHVF9BVFRSUz15CitDT05GSUdfU0NTSV9MT1dMRVZFTD15CitDT05GSUdfSVNDU0lfVENQPW0KKyMgQ09ORklHX1NDU0lfREVCVUcgaXMgbm90IHNldAorQ09ORklHX01WTUUxNDdfU0NTST15CitDT05GSUdfTUQ9eQorQ09ORklHX0JMS19ERVZfTUQ9bQorQ09ORklHX01EX0xJTkVBUj1tCitDT05GSUdfTURfUkFJRDA9bQorQ09ORklHX01EX1JBSUQxPW0KKyMgQ09ORklHX01EX1JBSUQxMCBpcyBub3Qgc2V0CitDT05GSUdfTURfUkFJRDQ1Nj1tCitDT05GSUdfTURfUkFJRDVfUkVTSEFQRT15CitDT05GSUdfTURfTVVMVElQQVRIPW0KKyMgQ09ORklHX01EX0ZBVUxUWSBpcyBub3Qgc2V0CitDT05GSUdfQkxLX0RFVl9ETT1tCisjIENPTkZJR19ETV9ERUJVRyBpcyBub3Qgc2V0CitDT05GSUdfRE1fQ1JZUFQ9bQorQ09ORklHX0RNX1NOQVBTSE9UPW0KK0NPTkZJR19ETV9NSVJST1I9bQorQ09ORklHX0RNX1pFUk89bQorQ09ORklHX0RNX01VTFRJUEFUSD1tCitDT05GSUdfRE1fTVVMVElQQVRIX0VNQz1tCitDT05GSUdfRE1fTVVMVElQQVRIX1JEQUM9bQorQ09ORklHX0RNX01VTFRJUEFUSF9IUD1tCisjIENPTkZJR19ETV9ERUxBWSBpcyBub3Qgc2V0CitDT05GSUdfRE1fVUVWRU5UPXkKIENPTkZJR19ORVRERVZJQ0VTPXkKKyMgQ09ORklHX05FVERFVklDRVNfTVVMVElRVUVVRSBpcyBub3Qgc2V0CiBDT05GSUdfRFVNTVk9bQogIyBDT05GSUdfQk9ORElORyBpcyBub3Qgc2V0CitDT05GSUdfTUFDVkxBTj1tCiBDT05GSUdfRVFVQUxJWkVSPW0KICMgQ09ORklHX1RVTiBpcyBub3Qgc2V0Ci0KLSMKLSMgRXRoZXJuZXQgKDEwIG9yIDEwME1iaXQpCi0jCitDT05GSUdfVkVUSD1tCisjIENPTkZJR19QSFlMSUIgaXMgbm90IHNldAogQ09ORklHX05FVF9FVEhFUk5FVD15Ci1DT05GSUdfTUlJPW0KKyMgQ09ORklHX01JSSBpcyBub3Qgc2V0CiBDT05GSUdfTVZNRTE0N19ORVQ9eQorIyBDT05GSUdfSUJNX05FV19FTUFDX1pNSUkgaXMgbm90IHNldAorIyBDT05GSUdfSUJNX05FV19FTUFDX1JHTUlJIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lCTV9ORVdfRU1BQ19UQUggaXMgbm90IHNldAorIyBDT05GSUdfSUJNX05FV19FTUFDX0VNQUM0IGlzIG5vdCBzZXQKKyMgQ09ORklHX0I0NCBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRERVZfMTAwMCBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRERVZfMTAwMDAgaXMgbm90IHNldAogCiAjCi0jIEV0aGVybmV0ICgxMDAwIE1iaXQpCisjIFdpcmVsZXNzIExBTgogIwotCi0jCi0jIEV0aGVybmV0ICgxMDAwMCBNYml0KQotIwotCi0jCi0jIFRva2VuIFJpbmcgZGV2aWNlcwotIwotCi0jCi0jIFdpcmVsZXNzIExBTiAobm9uLWhhbXJhZGlvKQotIwotIyBDT05GSUdfTkVUX1JBRElPIGlzIG5vdCBzZXQKLQotIwotIyBXYW4gaW50ZXJmYWNlcwotIworIyBDT05GSUdfV0xBTl9QUkU4MDIxMSBpcyBub3Qgc2V0CisjIENPTkZJR19XTEFOXzgwMjExIGlzIG5vdCBzZXQKICMgQ09ORklHX1dBTiBpcyBub3Qgc2V0CiBDT05GSUdfUFBQPW0KICMgQ09ORklHX1BQUF9NVUxUSUxJTksgaXMgbm90IHNldApAQCAtNDQwLDI4ICs1NTAsMjggQEAKIENPTkZJR19QUFBfU1lOQ19UVFk9bQogQ09ORklHX1BQUF9ERUZMQVRFPW0KIENPTkZJR19QUFBfQlNEQ09NUD1tCitDT05GSUdfUFBQX01QUEU9bQogQ09ORklHX1BQUE9FPW0KK0NPTkZJR19QUFBPTDJUUD1tCiBDT05GSUdfU0xJUD1tCiBDT05GSUdfU0xJUF9DT01QUkVTU0VEPXkKK0NPTkZJR19TTEhDPW0KIENPTkZJR19TTElQX1NNQVJUPXkKIENPTkZJR19TTElQX01PREVfU0xJUDY9eQotQ09ORklHX1NIQVBFUj1tCiBDT05GSUdfTkVUQ09OU09MRT1tCi0KLSMKLSMgSVNETiBzdWJzeXN0ZW0KLSMKK0NPTkZJR19ORVRDT05TT0xFX0RZTkFNSUM9eQorQ09ORklHX05FVFBPTEw9eQorIyBDT05GSUdfTkVUUE9MTF9UUkFQIGlzIG5vdCBzZXQKK0NPTkZJR19ORVRfUE9MTF9DT05UUk9MTEVSPXkKICMgQ09ORklHX0lTRE4gaXMgbm90IHNldAotCi0jCi0jIFRlbGVwaG9ueSBTdXBwb3J0Ci0jCiAjIENPTkZJR19QSE9ORSBpcyBub3Qgc2V0CiAKICMKICMgSW5wdXQgZGV2aWNlIHN1cHBvcnQKICMKIENPTkZJR19JTlBVVD15CitDT05GSUdfSU5QVVRfRkZfTUVNTEVTUz1tCisjIENPTkZJR19JTlBVVF9QT0xMREVWIGlzIG5vdCBzZXQKIAogIwogIyBVc2VybGFuZCBpbnRlcmZhY2VzCkBAIC00NzEsNyArNTgxLDYgQEAKIENPTkZJR19JTlBVVF9NT1VTRURFVl9TQ1JFRU5fWD0xMDI0CiBDT05GSUdfSU5QVVRfTU9VU0VERVZfU0NSRUVOX1k9NzY4CiAjIENPTkZJR19JTlBVVF9KT1lERVYgaXMgbm90IHNldAotIyBDT05GSUdfSU5QVVRfVFNERVYgaXMgbm90IHNldAogIyBDT05GSUdfSU5QVVRfRVZERVYgaXMgbm90IHNldAogIyBDT05GSUdfSU5QVVRfRVZCVUcgaXMgbm90IHNldAogCkBAIC00ODQsMTEgKzU5MywxOSBAQAogIyBDT05GSUdfS0VZQk9BUkRfTEtLQkQgaXMgbm90IHNldAogIyBDT05GSUdfS0VZQk9BUkRfWFRLQkQgaXMgbm90IHNldAogIyBDT05GSUdfS0VZQk9BUkRfTkVXVE9OIGlzIG5vdCBzZXQKKyMgQ09ORklHX0tFWUJPQVJEX1NUT1dBV0FZIGlzIG5vdCBzZXQKIENPTkZJR19JTlBVVF9NT1VTRT15CiBDT05GSUdfTU9VU0VfUFMyPW0KK0NPTkZJR19NT1VTRV9QUzJfQUxQUz15CitDT05GSUdfTU9VU0VfUFMyX0xPR0lQUzJQUD15CitDT05GSUdfTU9VU0VfUFMyX1NZTkFQVElDUz15CitDT05GSUdfTU9VU0VfUFMyX0xJRkVCT09LPXkKK0NPTkZJR19NT1VTRV9QUzJfVFJBQ0tQT0lOVD15CisjIENPTkZJR19NT1VTRV9QUzJfVE9VQ0hLSVQgaXMgbm90IHNldAogQ09ORklHX01PVVNFX1NFUklBTD1tCiAjIENPTkZJR19NT1VTRV9WU1hYWEFBIGlzIG5vdCBzZXQKICMgQ09ORklHX0lOUFVUX0pPWVNUSUNLIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lOUFVUX1RBQkxFVCBpcyBub3Qgc2V0CiAjIENPTkZJR19JTlBVVF9UT1VDSFNDUkVFTiBpcyBub3Qgc2V0CiAjIENPTkZJR19JTlBVVF9NSVNDIGlzIG5vdCBzZXQKIApAQCAtNDk2LDcgKzYxMyw3IEBACiAjIEhhcmR3YXJlIEkvTyBwb3J0cwogIwogQ09ORklHX1NFUklPPW0KLUNPTkZJR19TRVJJT19TRVJQT1JUPW0KKyMgQ09ORklHX1NFUklPX1NFUlBPUlQgaXMgbm90IHNldAogQ09ORklHX1NFUklPX0xJQlBTMj1tCiAjIENPTkZJR19TRVJJT19SQVcgaXMgbm90IHNldAogIyBDT05GSUdfR0FNRVBPUlQgaXMgbm90IHNldApAQCAtNTA3LDYgKzYyNCw3IEBACiBDT05GSUdfVlQ9eQogQ09ORklHX1ZUX0NPTlNPTEU9eQogQ09ORklHX0hXX0NPTlNPTEU9eQorQ09ORklHX1ZUX0hXX0NPTlNPTEVfQklORElORz15CiAjIENPTkZJR19TRVJJQUxfTk9OU1RBTkRBUkQgaXMgbm90IHNldAogCiAjCkBAIC01MjAsMTEyICs2MzgsODAgQEAKIENPTkZJR19VTklYOThfUFRZUz15CiBDT05GSUdfTEVHQUNZX1BUWVM9eQogQ09ORklHX0xFR0FDWV9QVFlfQ09VTlQ9MjU2Ci0KLSMKLSMgSVBNSQotIwogIyBDT05GSUdfSVBNSV9IQU5ETEVSIGlzIG5vdCBzZXQKLQotIwotIyBXYXRjaGRvZyBDYXJkcwotIwotIyBDT05GSUdfV0FUQ0hET0cgaXMgbm90IHNldAorIyBDT05GSUdfSFdfUkFORE9NIGlzIG5vdCBzZXQKIENPTkZJR19HRU5fUlRDPW0KIENPTkZJR19HRU5fUlRDX1g9eQotIyBDT05GSUdfRFRMSyBpcyBub3Qgc2V0CiAjIENPTkZJR19SMzk2NCBpcyBub3Qgc2V0Ci0KLSMKLSMgRnRhcGUsIHRoZSBmbG9wcHkgdGFwZSBkZXZpY2UgZHJpdmVyCi0jCi0jIENPTkZJR19EUk0gaXMgbm90IHNldAogIyBDT05GSUdfUkFXX0RSSVZFUiBpcyBub3Qgc2V0Ci0KLSMKLSMgVFBNIGRldmljZXMKLSMKLQotIwotIyBJMkMgc3VwcG9ydAotIworIyBDT05GSUdfVENHX1RQTSBpcyBub3Qgc2V0CiAjIENPTkZJR19JMkMgaXMgbm90IHNldAogCiAjCi0jIERhbGxhcydzIDEtd2lyZSBidXMKKyMgU1BJIHN1cHBvcnQKICMKKyMgQ09ORklHX1NQSSBpcyBub3Qgc2V0CisjIENPTkZJR19TUElfTUFTVEVSIGlzIG5vdCBzZXQKICMgQ09ORklHX1cxIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BPV0VSX1NVUFBMWSBpcyBub3Qgc2V0CisjIENPTkZJR19IV01PTiBpcyBub3Qgc2V0CisjIENPTkZJR19USEVSTUFMIGlzIG5vdCBzZXQKKyMgQ09ORklHX1dBVENIRE9HIGlzIG5vdCBzZXQKIAogIwotIyBNaXNjIGRldmljZXMKKyMgU29uaWNzIFNpbGljb24gQmFja3BsYW5lCiAjCitDT05GSUdfU1NCX1BPU1NJQkxFPXkKKyMgQ09ORklHX1NTQiBpcyBub3Qgc2V0CisKKyMKKyMgTXVsdGlmdW5jdGlvbiBkZXZpY2UgZHJpdmVycworIworIyBDT05GSUdfTUZEX1NNNTAxIGlzIG5vdCBzZXQKIAogIwogIyBNdWx0aW1lZGlhIGRldmljZXMKICMKICMgQ09ORklHX1ZJREVPX0RFViBpcyBub3Qgc2V0Ci0KLSMKLSMgRGlnaXRhbCBWaWRlbyBCcm9hZGNhc3RpbmcgRGV2aWNlcwotIwotIyBDT05GSUdfRFZCIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RWQl9DT1JFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RBQiBpcyBub3Qgc2V0CiAKICMKICMgR3JhcGhpY3Mgc3VwcG9ydAogIwotQ09ORklHX0ZCPXkKLSMgQ09ORklHX0ZCX0NGQl9GSUxMUkVDVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19GQl9DRkJfQ09QWUFSRUEgaXMgbm90IHNldAotIyBDT05GSUdfRkJfQ0ZCX0lNQUdFQkxJVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19GQl9TT0ZUX0NVUlNPUiBpcyBub3Qgc2V0Ci0jIENPTkZJR19GQl9NQUNNT0RFUyBpcyBub3Qgc2V0Ci1DT05GSUdfRkJfTU9ERV9IRUxQRVJTPXkKLSMgQ09ORklHX0ZCX1RJTEVCTElUVElORyBpcyBub3Qgc2V0Ci0jIENPTkZJR19GQl9TMUQxM1hYWCBpcyBub3Qgc2V0Ci0jIENPTkZJR19GQl9WSVJUVUFMIGlzIG5vdCBzZXQKKyMgQ09ORklHX1ZHQVNUQVRFIGlzIG5vdCBzZXQKKyMgQ09ORklHX1ZJREVPX09VVFBVVF9DT05UUk9MIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZCIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JBQ0tMSUdIVF9MQ0RfU1VQUE9SVCBpcyBub3Qgc2V0CisKKyMKKyMgRGlzcGxheSBkZXZpY2Ugc3VwcG9ydAorIworIyBDT05GSUdfRElTUExBWV9TVVBQT1JUIGlzIG5vdCBzZXQKIAogIwogIyBDb25zb2xlIGRpc3BsYXkgZHJpdmVyIHN1cHBvcnQKICMKIENPTkZJR19EVU1NWV9DT05TT0xFPXkKLUNPTkZJR19GUkFNRUJVRkZFUl9DT05TT0xFPXkKLSMgQ09ORklHX0ZPTlRTIGlzIG5vdCBzZXQKLUNPTkZJR19GT05UXzh4OD15Ci1DT05GSUdfRk9OVF84eDE2PXkKLQotIwotIyBMb2dvIGNvbmZpZ3VyYXRpb24KLSMKLUNPTkZJR19MT0dPPXkKLUNPTkZJR19MT0dPX0xJTlVYX01PTk89eQotQ09ORklHX0xPR09fTElOVVhfVkdBMTY9eQotQ09ORklHX0xPR09fTElOVVhfQ0xVVDIyND15Ci0jIENPTkZJR19CQUNLTElHSFRfTENEX1NVUFBPUlQgaXMgbm90IHNldAogCiAjCiAjIFNvdW5kCiAjCiAjIENPTkZJR19TT1VORCBpcyBub3Qgc2V0Ci0KLSMKLSMgVVNCIHN1cHBvcnQKLSMKLSMgQ09ORklHX1VTQl9BUkNIX0hBU19IQ0QgaXMgbm90IHNldAotIyBDT05GSUdfVVNCX0FSQ0hfSEFTX09IQ0kgaXMgbm90IHNldAotCi0jCi0jIFVTQiBHYWRnZXQgU3VwcG9ydAotIwotIyBDT05GSUdfVVNCX0dBREdFVCBpcyBub3Qgc2V0Ci0KLSMKLSMgTU1DL1NEIENhcmQgc3VwcG9ydAotIworQ09ORklHX0hJRF9TVVBQT1JUPXkKK0NPTkZJR19ISUQ9bQorIyBDT05GSUdfSElEX0RFQlVHIGlzIG5vdCBzZXQKK0NPTkZJR19ISURSQVc9eQorIyBDT05GSUdfVVNCX1NVUFBPUlQgaXMgbm90IHNldAogIyBDT05GSUdfTU1DIGlzIG5vdCBzZXQKKyMgQ09ORklHX01FTVNUSUNLIGlzIG5vdCBzZXQKKyMgQ09ORklHX05FV19MRURTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JUQ19DTEFTUyBpcyBub3Qgc2V0CiAKICMKLSMgSW5maW5pQmFuZCBzdXBwb3J0CisjIFVzZXJzcGFjZSBJL08KICMKLSMgQ09ORklHX0lORklOSUJBTkQgaXMgbm90IHNldAorIyBDT05GSUdfVUlPIGlzIG5vdCBzZXQKIAogIwogIyBDaGFyYWN0ZXIgZGV2aWNlcwpAQCAtNjM4LDEwICs3MjQsMTEgQEAKICMKIENPTkZJR19FWFQyX0ZTPXkKICMgQ09ORklHX0VYVDJfRlNfWEFUVFIgaXMgbm90IHNldAorIyBDT05GSUdfRVhUMl9GU19YSVAgaXMgbm90IHNldAogQ09ORklHX0VYVDNfRlM9eQogIyBDT05GSUdfRVhUM19GU19YQVRUUiBpcyBub3Qgc2V0CisjIENPTkZJR19FWFQ0REVWX0ZTIGlzIG5vdCBzZXQKIENPTkZJR19KQkQ9eQotIyBDT05GSUdfSkJEX0RFQlVHIGlzIG5vdCBzZXQKIENPTkZJR19SRUlTRVJGU19GUz1tCiAjIENPTkZJR19SRUlTRVJGU19DSEVDSyBpcyBub3Qgc2V0CiAjIENPTkZJR19SRUlTRVJGU19QUk9DX0lORk8gaXMgbm90IHNldApAQCAtNjUyLDI1ICs3MzksMjkgQEAKICMgQ09ORklHX0pGU19ERUJVRyBpcyBub3Qgc2V0CiAjIENPTkZJR19KRlNfU1RBVElTVElDUyBpcyBub3Qgc2V0CiBDT05GSUdfRlNfUE9TSVhfQUNMPXkKLQotIwotIyBYRlMgc3VwcG9ydAotIwogQ09ORklHX1hGU19GUz1tCi1DT05GSUdfWEZTX0VYUE9SVD15Ci0jIENPTkZJR19YRlNfUlQgaXMgbm90IHNldAogIyBDT05GSUdfWEZTX1FVT1RBIGlzIG5vdCBzZXQKICMgQ09ORklHX1hGU19TRUNVUklUWSBpcyBub3Qgc2V0CiAjIENPTkZJR19YRlNfUE9TSVhfQUNMIGlzIG5vdCBzZXQKLUNPTkZJR19NSU5JWF9GUz15Ci0jIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19YRlNfUlQgaXMgbm90IHNldAorQ09ORklHX0dGUzJfRlM9bQorQ09ORklHX0dGUzJfRlNfTE9DS0lOR19OT0xPQ0s9bQorQ09ORklHX0dGUzJfRlNfTE9DS0lOR19ETE09bQorQ09ORklHX09DRlMyX0ZTPW0KKyMgQ09ORklHX09DRlMyX0RFQlVHX01BU0tMT0cgaXMgbm90IHNldAorIyBDT05GSUdfT0NGUzJfREVCVUdfRlMgaXMgbm90IHNldAorQ09ORklHX0ROT1RJRlk9eQorQ09ORklHX0lOT1RJRlk9eQorQ09ORklHX0lOT1RJRllfVVNFUj15CiBDT05GSUdfUVVPVEE9eQorQ09ORklHX1FVT1RBX05FVExJTktfSU5URVJGQUNFPXkKKyMgQ09ORklHX1BSSU5UX1FVT1RBX1dBUk5JTkcgaXMgbm90IHNldAogIyBDT05GSUdfUUZNVF9WMSBpcyBub3Qgc2V0CiAjIENPTkZJR19RRk1UX1YyIGlzIG5vdCBzZXQKIENPTkZJR19RVU9UQUNUTD15Ci1DT05GSUdfRE5PVElGWT15CiBDT05GSUdfQVVUT0ZTX0ZTPW0KIENPTkZJR19BVVRPRlM0X0ZTPW0KK0NPTkZJR19GVVNFX0ZTPW0KIAogIwogIyBDRC1ST00vRFZEIEZpbGVzeXN0ZW1zCkBAIC02NzgsNyArNzY5LDYgQEAKIENPTkZJR19JU085NjYwX0ZTPXkKIENPTkZJR19KT0xJRVQ9eQogQ09ORklHX1pJU09GUz15Ci1DT05GSUdfWklTT0ZTX0ZTPXkKIENPTkZJR19VREZfRlM9bQogQ09ORklHX1VERl9OTFM9eQogCkBAIC02OTcsMTUgKzc4NywxMiBAQAogIwogQ09ORklHX1BST0NfRlM9eQogQ09ORklHX1BST0NfS0NPUkU9eQorQ09ORklHX1BST0NfU1lTQ1RMPXkKIENPTkZJR19TWVNGUz15Ci1DT05GSUdfREVWRlNfRlM9eQotIyBDT05GSUdfREVWRlNfTU9VTlQgaXMgbm90IHNldAotIyBDT05GSUdfREVWRlNfREVCVUcgaXMgbm90IHNldAotIyBDT05GSUdfREVWUFRTX0ZTX1hBVFRSIGlzIG5vdCBzZXQKIENPTkZJR19UTVBGUz15Ci0jIENPTkZJR19UTVBGU19YQVRUUiBpcyBub3Qgc2V0CisjIENPTkZJR19UTVBGU19QT1NJWF9BQ0wgaXMgbm90IHNldAogIyBDT05GSUdfSFVHRVRMQl9QQUdFIGlzIG5vdCBzZXQKLUNPTkZJR19SQU1GUz15CitDT05GSUdfQ09ORklHRlNfRlM9bQogCiAjCiAjIE1pc2NlbGxhbmVvdXMgZmlsZXN5c3RlbXMKQEAgLTcxOSw0NCArODA2LDQwIEBACiAjIENPTkZJR19FRlNfRlMgaXMgbm90IHNldAogQ09ORklHX0NSQU1GUz1tCiAjIENPTkZJR19WWEZTX0ZTIGlzIG5vdCBzZXQKK0NPTkZJR19NSU5JWF9GUz15CiBDT05GSUdfSFBGU19GUz1tCiAjIENPTkZJR19RTlg0RlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAogQ09ORklHX1NZU1ZfRlM9bQogQ09ORklHX1VGU19GUz1tCiAjIENPTkZJR19VRlNfRlNfV1JJVEUgaXMgbm90IHNldAotCi0jCi0jIE5ldHdvcmsgRmlsZSBTeXN0ZW1zCi0jCisjIENPTkZJR19VRlNfREVCVUcgaXMgbm90IHNldAorQ09ORklHX05FVFdPUktfRklMRVNZU1RFTVM9eQogQ09ORklHX05GU19GUz15CiBDT05GSUdfTkZTX1YzPXkKKyMgQ09ORklHX05GU19WM19BQ0wgaXMgbm90IHNldAogQ09ORklHX05GU19WND15CiAjIENPTkZJR19ORlNfRElSRUNUSU8gaXMgbm90IHNldAogQ09ORklHX05GU0Q9bQogQ09ORklHX05GU0RfVjM9eQotQ09ORklHX05GU0RfVjQ9eQorIyBDT05GSUdfTkZTRF9WM19BQ0wgaXMgbm90IHNldAorIyBDT05GSUdfTkZTRF9WNCBpcyBub3Qgc2V0CiBDT05GSUdfTkZTRF9UQ1A9eQogQ09ORklHX1JPT1RfTkZTPXkKIENPTkZJR19MT0NLRD15CiBDT05GSUdfTE9DS0RfVjQ9eQogQ09ORklHX0VYUE9SVEZTPW0KK0NPTkZJR19ORlNfQ09NTU9OPXkKIENPTkZJR19TVU5SUEM9eQogQ09ORklHX1NVTlJQQ19HU1M9eQorQ09ORklHX1NVTlJQQ19CSU5EMzQ9eQogQ09ORklHX1JQQ1NFQ19HU1NfS1JCNT15CiAjIENPTkZJR19SUENTRUNfR1NTX1NQS00zIGlzIG5vdCBzZXQKIENPTkZJR19TTUJfRlM9bQogQ09ORklHX1NNQl9OTFNfREVGQVVMVD15CiBDT05GSUdfU01CX05MU19SRU1PVEU9ImNwNDM3IgogIyBDT05GSUdfQ0lGUyBpcyBub3Qgc2V0Ci1DT05GSUdfTkNQX0ZTPW0KLSMgQ09ORklHX05DUEZTX1BBQ0tFVF9TSUdOSU5HIGlzIG5vdCBzZXQKLSMgQ09ORklHX05DUEZTX0lPQ1RMX0xPQ0tJTkcgaXMgbm90IHNldAotIyBDT05GSUdfTkNQRlNfU1RST05HIGlzIG5vdCBzZXQKLSMgQ09ORklHX05DUEZTX05GU19OUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19OQ1BGU19PUzJfTlMgaXMgbm90IHNldAotIyBDT05GSUdfTkNQRlNfU01BTExET1MgaXMgbm90IHNldAotQ09ORklHX05DUEZTX05MUz15Ci0jIENPTkZJR19OQ1BGU19FWFRSQVMgaXMgbm90IHNldAorIyBDT05GSUdfTkNQX0ZTIGlzIG5vdCBzZXQKIENPTkZJR19DT0RBX0ZTPW0KICMgQ09ORklHX0NPREFfRlNfT0xEX0FQSSBpcyBub3Qgc2V0CiAjIENPTkZJR19BRlNfRlMgaXMgbm90IHNldApAQCAtNzY2LDEwICs4NDksNyBAQAogIwogIyBDT05GSUdfUEFSVElUSU9OX0FEVkFOQ0VEIGlzIG5vdCBzZXQKIENPTkZJR19NU0RPU19QQVJUSVRJT049eQotCi0jCi0jIE5hdGl2ZSBMYW5ndWFnZSBTdXBwb3J0Ci0jCitDT05GSUdfU1lTVjY4X1BBUlRJVElPTj15CiBDT05GSUdfTkxTPXkKIENPTkZJR19OTFNfREVGQVVMVD0iaXNvODg1OS0xIgogQ09ORklHX05MU19DT0RFUEFHRV80Mzc9eQpAQCAtODEwLDM1ICs4OTAsNDIgQEAKIENPTkZJR19OTFNfS09JOF9SPW0KIENPTkZJR19OTFNfS09JOF9VPW0KIENPTkZJR19OTFNfVVRGOD1tCitDT05GSUdfRExNPW0KKyMgQ09ORklHX0RMTV9ERUJVRyBpcyBub3Qgc2V0CiAKICMKICMgS2VybmVsIGhhY2tpbmcKICMKICMgQ09ORklHX1BSSU5US19USU1FIGlzIG5vdCBzZXQKLUNPTkZJR19ERUJVR19LRVJORUw9eQorQ09ORklHX0VOQUJMRV9XQVJOX0RFUFJFQ0FURUQ9eQorQ09ORklHX0VOQUJMRV9NVVNUX0NIRUNLPXkKIENPTkZJR19NQUdJQ19TWVNSUT15Ci1DT05GSUdfTE9HX0JVRl9TSElGVD0xNgotIyBDT05GSUdfU0NIRURTVEFUUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ERUJVR19TTEFCIGlzIG5vdCBzZXQKLSMgQ09ORklHX0RFQlVHX1NQSU5MT0NLIGlzIG5vdCBzZXQKLSMgQ09ORklHX0RFQlVHX1NQSU5MT0NLX1NMRUVQIGlzIG5vdCBzZXQKLSMgQ09ORklHX0RFQlVHX0tPQkpFQ1QgaXMgbm90IHNldAotQ09ORklHX0RFQlVHX0JVR1ZFUkJPU0U9eQotIyBDT05GSUdfREVCVUdfSU5GTyBpcyBub3Qgc2V0CisjIENPTkZJR19VTlVTRURfU1lNQk9MUyBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19GUkFNRV9QT0lOVEVSIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hFQURFUlNfQ0hFQ0sgaXMgbm90IHNldAorIyBDT05GSUdfREVCVUdfS0VSTkVMIGlzIG5vdCBzZXQKK0NPTkZJR19ERUJVR19CVUdWRVJCT1NFPXkKKyMgQ09ORklHX1NBTVBMRVMgaXMgbm90IHNldAogCiAjCiAjIFNlY3VyaXR5IG9wdGlvbnMKICMKICMgQ09ORklHX0tFWVMgaXMgbm90IHNldAogIyBDT05GSUdfU0VDVVJJVFkgaXMgbm90IHNldAotCi0jCi0jIENyeXB0b2dyYXBoaWMgb3B0aW9ucwotIworIyBDT05GSUdfU0VDVVJJVFlfRklMRV9DQVBBQklMSVRJRVMgaXMgbm90IHNldAorQ09ORklHX1hPUl9CTE9DS1M9bQorQ09ORklHX0FTWU5DX0NPUkU9bQorQ09ORklHX0FTWU5DX01FTUNQWT1tCitDT05GSUdfQVNZTkNfWE9SPW0KIENPTkZJR19DUllQVE89eQorQ09ORklHX0NSWVBUT19BTEdBUEk9eQorQ09ORklHX0NSWVBUT19BRUFEPW0KK0NPTkZJR19DUllQVE9fQkxLQ0lQSEVSPXkKK0NPTkZJR19DUllQVE9fU0VRSVY9bQorQ09ORklHX0NSWVBUT19IQVNIPXkKK0NPTkZJR19DUllQVE9fTUFOQUdFUj15CiBDT05GSUdfQ1JZUFRPX0hNQUM9eQorQ09ORklHX0NSWVBUT19YQ0JDPW0KIENPTkZJR19DUllQVE9fTlVMTD1tCiBDT05GSUdfQ1JZUFRPX01END1tCiBDT05GSUdfQ1JZUFRPX01ENT15CkBAIC04NDcsOSArOTM0LDIxIEBACiBDT05GSUdfQ1JZUFRPX1NIQTUxMj1tCiBDT05GSUdfQ1JZUFRPX1dQNTEyPW0KIENPTkZJR19DUllQVE9fVEdSMTkyPW0KK0NPTkZJR19DUllQVE9fR0YxMjhNVUw9bQorQ09ORklHX0NSWVBUT19FQ0I9bQorQ09ORklHX0NSWVBUT19DQkM9eQorQ09ORklHX0NSWVBUT19QQ0JDPW0KK0NPTkZJR19DUllQVE9fTFJXPW0KK0NPTkZJR19DUllQVE9fWFRTPW0KK0NPTkZJR19DUllQVE9fQ1RSPW0KK0NPTkZJR19DUllQVE9fR0NNPW0KK0NPTkZJR19DUllQVE9fQ0NNPW0KK0NPTkZJR19DUllQVE9fQ1JZUFREPW0KIENPTkZJR19DUllQVE9fREVTPXkKK0NPTkZJR19DUllQVE9fRkNSWVBUPW0KIENPTkZJR19DUllQVE9fQkxPV0ZJU0g9bQogQ09ORklHX0NSWVBUT19UV09GSVNIPW0KK0NPTkZJR19DUllQVE9fVFdPRklTSF9DT01NT049bQogQ09ORklHX0NSWVBUT19TRVJQRU5UPW0KIENPTkZJR19DUllQVE9fQUVTPW0KIENPTkZJR19DUllQVE9fQ0FTVDU9bQpAQCAtODU4LDIwICs5NTcsMzUgQEAKIENPTkZJR19DUllQVE9fQVJDND1tCiBDT05GSUdfQ1JZUFRPX0tIQVpBRD1tCiBDT05GSUdfQ1JZUFRPX0FOVUJJUz1tCitDT05GSUdfQ1JZUFRPX1NFRUQ9bQorQ09ORklHX0NSWVBUT19TQUxTQTIwPW0KIENPTkZJR19DUllQVE9fREVGTEFURT1tCiBDT05GSUdfQ1JZUFRPX01JQ0hBRUxfTUlDPW0KIENPTkZJR19DUllQVE9fQ1JDMzJDPW0KK0NPTkZJR19DUllQVE9fQ0FNRUxMSUE9bQogQ09ORklHX0NSWVBUT19URVNUPW0KLQotIwotIyBIYXJkd2FyZSBjcnlwdG8gZGV2aWNlcwotIworQ09ORklHX0NSWVBUT19BVVRIRU5DPW0KK0NPTkZJR19DUllQVE9fTFpPPW0KKyMgQ09ORklHX0NSWVBUT19IVyBpcyBub3Qgc2V0CiAKICMKICMgTGlicmFyeSByb3V0aW5lcwogIworQ09ORklHX0JJVFJFVkVSU0U9eQogQ09ORklHX0NSQ19DQ0lUVD1tCitDT05GSUdfQ1JDMTY9bQorIyBDT05GSUdfQ1JDX0lUVV9UIGlzIG5vdCBzZXQKIENPTkZJR19DUkMzMj15CisjIENPTkZJR19DUkM3IGlzIG5vdCBzZXQKIENPTkZJR19MSUJDUkMzMkM9bQogQ09ORklHX1pMSUJfSU5GTEFURT15CiBDT05GSUdfWkxJQl9ERUZMQVRFPW0KK0NPTkZJR19MWk9fQ09NUFJFU1M9bQorQ09ORklHX0xaT19ERUNPTVBSRVNTPW0KK0NPTkZJR19URVhUU0VBUkNIPXkKK0NPTkZJR19URVhUU0VBUkNIX0tNUD1tCitDT05GSUdfVEVYVFNFQVJDSF9CTT1tCitDT05GSUdfVEVYVFNFQVJDSF9GU009bQorQ09ORklHX1BMSVNUPXkKK0NPTkZJR19IQVNfSU9NRU09eQorQ09ORklHX0hBU19ETUE9eQpkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE2eF9kZWZjb25maWcgYi9hcmNoL202OGsvY29uZmlncy9tdm1lMTZ4X2RlZmNvbmZpZwppbmRleCAxZDVjNDZmLi5lOWNjYzc3IDEwMDY0NAotLS0gYS9hcmNoL202OGsvY29uZmlncy9tdm1lMTZ4X2RlZmNvbmZpZworKysgYi9hcmNoL202OGsvY29uZmlncy9tdm1lMTZ4X2RlZmNvbmZpZwpAQCAtMSw2MyArMSwxMTEgQEAKICMKICMgQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgbWFrZSBjb25maWc6IGRvbid0IGVkaXQKLSMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4xMi1yYzYtbTY4awotIyBUdWUgSnVuICA3IDIwOjM0OjUzIDIwMDUKKyMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4yNS1yYzgKKyMgV2VkIEFwciAgMiAyMDo0NjoxOSAyMDA4CiAjCiBDT05GSUdfTTY4Sz15CiBDT05GSUdfTU1VPXkKLUNPTkZJR19VSUQxNj15CiBDT05GSUdfUldTRU1fR0VORVJJQ19TUElOTE9DSz15CisjIENPTkZJR19BUkNIX0hBU19JTE9HMl9VMzIgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9IQVNfSUxPRzJfVTY0IGlzIG5vdCBzZXQKK0NPTkZJR19HRU5FUklDX0hXRUlHSFQ9eQogQ09ORklHX0dFTkVSSUNfQ0FMSUJSQVRFX0RFTEFZPXkKLQotIwotIyBDb2RlIG1hdHVyaXR5IGxldmVsIG9wdGlvbnMKLSMKLUNPTkZJR19FWFBFUklNRU5UQUw9eQotQ09ORklHX0NMRUFOX0NPTVBJTEU9eQotQ09ORklHX0JST0tFTl9PTl9TTVA9eQotQ09ORklHX0lOSVRfRU5WX0FSR19MSU1JVD0zMgorQ09ORklHX1RJTUVfTE9XX1JFUz15CitDT05GSUdfR0VORVJJQ19JT01BUD15CitDT05GSUdfTk9fSU9QT1JUPXkKKyMgQ09ORklHX05PX0RNQSBpcyBub3Qgc2V0CitDT05GSUdfQVJDSF9TVVBQT1JUU19BT1VUPXkKK0NPTkZJR19IWj0xMDAKK0NPTkZJR19ERUZDT05GSUdfTElTVD0iL2xpYi9tb2R1bGVzLyRVTkFNRV9SRUxFQVNFLy5jb25maWciCiAKICMKICMgR2VuZXJhbCBzZXR1cAogIworQ09ORklHX0VYUEVSSU1FTlRBTD15CitDT05GSUdfQlJPS0VOX09OX1NNUD15CitDT05GSUdfSU5JVF9FTlZfQVJHX0xJTUlUPTMyCiBDT05GSUdfTE9DQUxWRVJTSU9OPSItbXZtZTE2eCIKK0NPTkZJR19MT0NBTFZFUlNJT05fQVVUTz15CiBDT05GSUdfU1dBUD15CiBDT05GSUdfU1lTVklQQz15CitDT05GSUdfU1lTVklQQ19TWVNDVEw9eQogQ09ORklHX1BPU0lYX01RVUVVRT15CiBDT05GSUdfQlNEX1BST0NFU1NfQUNDVD15CiAjIENPTkZJR19CU0RfUFJPQ0VTU19BQ0NUX1YzIGlzIG5vdCBzZXQKLUNPTkZJR19TWVNDVEw9eQotQ09ORklHX0FVRElUPXkKLUNPTkZJR19IT1RQTFVHPXkKLUNPTkZJR19LT0JKRUNUX1VFVkVOVD15CisjIENPTkZJR19UQVNLU1RBVFMgaXMgbm90IHNldAorIyBDT05GSUdfQVVESVQgaXMgbm90IHNldAogIyBDT05GSUdfSUtDT05GSUcgaXMgbm90IHNldAorQ09ORklHX0xPR19CVUZfU0hJRlQ9MTQKKyMgQ09ORklHX0NHUk9VUFMgaXMgbm90IHNldAorIyBDT05GSUdfR1JPVVBfU0NIRUQgaXMgbm90IHNldAorIyBDT05GSUdfU1lTRlNfREVQUkVDQVRFRF9WMiBpcyBub3Qgc2V0CitDT05GSUdfUkVMQVk9eQorQ09ORklHX05BTUVTUEFDRVM9eQorIyBDT05GSUdfVVRTX05TIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lQQ19OUyBpcyBub3Qgc2V0CisjIENPTkZJR19VU0VSX05TIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BJRF9OUyBpcyBub3Qgc2V0CitDT05GSUdfQkxLX0RFVl9JTklUUkQ9eQorQ09ORklHX0lOSVRSQU1GU19TT1VSQ0U9IiIKKyMgQ09ORklHX0NDX09QVElNSVpFX0ZPUl9TSVpFIGlzIG5vdCBzZXQKK0NPTkZJR19TWVNDVEw9eQogIyBDT05GSUdfRU1CRURERUQgaXMgbm90IHNldAorQ09ORklHX1VJRDE2PXkKK0NPTkZJR19TWVNDVExfU1lTQ0FMTD15CiBDT05GSUdfS0FMTFNZTVM9eQotIyBDT05GSUdfS0FMTFNZTVNfQUxMIGlzIG5vdCBzZXQKICMgQ09ORklHX0tBTExTWU1TX0VYVFJBX1BBU1MgaXMgbm90IHNldAorQ09ORklHX0hPVFBMVUc9eQogQ09ORklHX1BSSU5USz15CiBDT05GSUdfQlVHPXkKK0NPTkZJR19FTEZfQ09SRT15CisjIENPTkZJR19DT01QQVRfQlJLIGlzIG5vdCBzZXQKIENPTkZJR19CQVNFX0ZVTEw9eQogQ09ORklHX0ZVVEVYPXkKK0NPTkZJR19BTk9OX0lOT0RFUz15CiBDT05GSUdfRVBPTEw9eQorQ09ORklHX1NJR05BTEZEPXkKK0NPTkZJR19USU1FUkZEPXkKK0NPTkZJR19FVkVOVEZEPXkKIENPTkZJR19TSE1FTT15Ci1DT05GSUdfQ0NfQUxJR05fRlVOQ1RJT05TPTAKLUNPTkZJR19DQ19BTElHTl9MQUJFTFM9MAotQ09ORklHX0NDX0FMSUdOX0xPT1BTPTAKLUNPTkZJR19DQ19BTElHTl9KVU1QUz0wCitDT05GSUdfVk1fRVZFTlRfQ09VTlRFUlM9eQorQ09ORklHX1NMQUI9eQorIyBDT05GSUdfU0xVQiBpcyBub3Qgc2V0CisjIENPTkZJR19TTE9CIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BST0ZJTElORyBpcyBub3Qgc2V0CisjIENPTkZJR19NQVJLRVJTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hBVkVfT1BST0ZJTEUgaXMgbm90IHNldAorIyBDT05GSUdfSEFWRV9LUFJPQkVTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hBVkVfS1JFVFBST0JFUyBpcyBub3Qgc2V0CitDT05GSUdfUFJPQ19QQUdFX01PTklUT1I9eQorQ09ORklHX1NMQUJJTkZPPXkKK0NPTkZJR19SVF9NVVRFWEVTPXkKICMgQ09ORklHX1RJTllfU0hNRU0gaXMgbm90IHNldAogQ09ORklHX0JBU0VfU01BTEw9MAotCi0jCi0jIExvYWRhYmxlIG1vZHVsZSBzdXBwb3J0Ci0jCiBDT05GSUdfTU9EVUxFUz15CiBDT05GSUdfTU9EVUxFX1VOTE9BRD15CiAjIENPTkZJR19NT0RVTEVfRk9SQ0VfVU5MT0FEIGlzIG5vdCBzZXQKLUNPTkZJR19PQlNPTEVURV9NT0RQQVJNPXkKICMgQ09ORklHX01PRFZFUlNJT05TIGlzIG5vdCBzZXQKICMgQ09ORklHX01PRFVMRV9TUkNWRVJTSU9OX0FMTCBpcyBub3Qgc2V0CiBDT05GSUdfS01PRD15CitDT05GSUdfQkxPQ0s9eQorIyBDT05GSUdfTEJEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JMS19ERVZfSU9fVFJBQ0UgaXMgbm90IHNldAorIyBDT05GSUdfTFNGIGlzIG5vdCBzZXQKK0NPTkZJR19CTEtfREVWX0JTRz15CisKKyMKKyMgSU8gU2NoZWR1bGVycworIworQ09ORklHX0lPU0NIRURfTk9PUD15CitDT05GSUdfSU9TQ0hFRF9BUz15CitDT05GSUdfSU9TQ0hFRF9ERUFETElORT15CitDT05GSUdfSU9TQ0hFRF9DRlE9eQorQ09ORklHX0RFRkFVTFRfQVM9eQorIyBDT05GSUdfREVGQVVMVF9ERUFETElORSBpcyBub3Qgc2V0CisjIENPTkZJR19ERUZBVUxUX0NGUSBpcyBub3Qgc2V0CisjIENPTkZJR19ERUZBVUxUX05PT1AgaXMgbm90IHNldAorQ09ORklHX0RFRkFVTFRfSU9TQ0hFRD0iYW50aWNpcGF0b3J5IgorQ09ORklHX0NMQVNTSUNfUkNVPXkKIAogIwogIyBQbGF0Zm9ybSBkZXBlbmRlbnQgc2V0dXAKQEAgLTg1LDYgKzEzMywyMiBAQAogQ09ORklHX01NVV9NT1RPUk9MQT15CiAjIENPTkZJR19NNjhLRlBVX0VNVSBpcyBub3Qgc2V0CiAjIENPTkZJR19BRFZBTkNFRCBpcyBub3Qgc2V0CitDT05GSUdfQVJDSF9ESVNDT05USUdNRU1fRU5BQkxFPXkKK0NPTkZJR19OT0RFU19TSElGVD0zCitDT05GSUdfU0VMRUNUX01FTU9SWV9NT0RFTD15CisjIENPTkZJR19GTEFUTUVNX01BTlVBTCBpcyBub3Qgc2V0CitDT05GSUdfRElTQ09OVElHTUVNX01BTlVBTD15CisjIENPTkZJR19TUEFSU0VNRU1fTUFOVUFMIGlzIG5vdCBzZXQKK0NPTkZJR19ESVNDT05USUdNRU09eQorQ09ORklHX0ZMQVRfTk9ERV9NRU1fTUFQPXkKK0NPTkZJR19ORUVEX01VTFRJUExFX05PREVTPXkKKyMgQ09ORklHX1NQQVJTRU1FTV9TVEFUSUMgaXMgbm90IHNldAorIyBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBfRU5BQkxFIGlzIG5vdCBzZXQKK0NPTkZJR19TUExJVF9QVExPQ0tfQ1BVUz00CisjIENPTkZJR19SRVNPVVJDRVNfNjRCSVQgaXMgbm90IHNldAorQ09ORklHX1pPTkVfRE1BX0ZMQUc9MQorQ09ORklHX0JPVU5DRT15CitDT05GSUdfVklSVF9UT19CVVM9eQogCiAjCiAjIEdlbmVyYWwgc2V0dXAKQEAgLTkzLDEzNCArMTU3LDExIEBACiBDT05GSUdfQklORk1UX0FPVVQ9bQogQ09ORklHX0JJTkZNVF9NSVNDPW0KIENPTkZJR19QUk9DX0hBUkRXQVJFPXkKK0NPTkZJR19aT05FX0RNQT15CisjIENPTkZJR19BUkNIX1NVUFBPUlRTX01TSSBpcyBub3Qgc2V0CiAKICMKLSMgRGV2aWNlIERyaXZlcnMKLSMKLQotIwotIyBHZW5lcmljIERyaXZlciBPcHRpb25zCi0jCi1DT05GSUdfU1RBTkRBTE9ORT15Ci1DT05GSUdfUFJFVkVOVF9GSVJNV0FSRV9CVUlMRD15Ci1DT05GSUdfRldfTE9BREVSPW0KLSMgQ09ORklHX0RFQlVHX0RSSVZFUiBpcyBub3Qgc2V0Ci0KLSMKLSMgTWVtb3J5IFRlY2hub2xvZ3kgRGV2aWNlcyAoTVREKQotIwotIyBDT05GSUdfTVREIGlzIG5vdCBzZXQKLQotIwotIyBQYXJhbGxlbCBwb3J0IHN1cHBvcnQKLSMKLSMgQ09ORklHX1BBUlBPUlQgaXMgbm90IHNldAotCi0jCi0jIFBsdWcgYW5kIFBsYXkgc3VwcG9ydAotIwotCi0jCi0jIEJsb2NrIGRldmljZXMKLSMKLSMgQ09ORklHX0JMS19ERVZfQ09XX0NPTU1PTiBpcyBub3Qgc2V0Ci1DT05GSUdfQkxLX0RFVl9MT09QPXkKLUNPTkZJR19CTEtfREVWX0NSWVBUT0xPT1A9bQotQ09ORklHX0JMS19ERVZfTkJEPW0KLUNPTkZJR19CTEtfREVWX1JBTT15Ci1DT05GSUdfQkxLX0RFVl9SQU1fQ09VTlQ9MTYKLUNPTkZJR19CTEtfREVWX1JBTV9TSVpFPTQwOTYKLUNPTkZJR19CTEtfREVWX0lOSVRSRD15Ci1DT05GSUdfSU5JVFJBTUZTX1NPVVJDRT0iIgotQ09ORklHX0NEUk9NX1BLVENEVkQ9bQotQ09ORklHX0NEUk9NX1BLVENEVkRfQlVGRkVSUz04Ci0jIENPTkZJR19DRFJPTV9QS1RDRFZEX1dDQUNIRSBpcyBub3Qgc2V0Ci0KLSMKLSMgSU8gU2NoZWR1bGVycwotIwotQ09ORklHX0lPU0NIRURfTk9PUD15Ci1DT05GSUdfSU9TQ0hFRF9BUz15Ci1DT05GSUdfSU9TQ0hFRF9ERUFETElORT15Ci1DT05GSUdfSU9TQ0hFRF9DRlE9eQotQ09ORklHX0FUQV9PVkVSX0VUSD1tCi0KLSMKLSMgQVRBL0FUQVBJL01GTS9STEwgc3VwcG9ydAotIwotIyBDT05GSUdfSURFIGlzIG5vdCBzZXQKLQotIwotIyBTQ1NJIGRldmljZSBzdXBwb3J0Ci0jCi1DT05GSUdfU0NTST15Ci1DT05GSUdfU0NTSV9QUk9DX0ZTPXkKLQotIwotIyBTQ1NJIHN1cHBvcnQgdHlwZSAoZGlzaywgdGFwZSwgQ0QtUk9NKQotIwotQ09ORklHX0JMS19ERVZfU0Q9eQotQ09ORklHX0NIUl9ERVZfU1Q9bQotIyBDT05GSUdfQ0hSX0RFVl9PU1NUIGlzIG5vdCBzZXQKLUNPTkZJR19CTEtfREVWX1NSPXkKLUNPTkZJR19CTEtfREVWX1NSX1ZFTkRPUj15Ci1DT05GSUdfQ0hSX0RFVl9TRz1tCi0KLSMKLSMgU29tZSBTQ1NJIGRldmljZXMgKGUuZy4gQ0QganVrZWJveCkgc3VwcG9ydCBtdWx0aXBsZSBMVU5zCi0jCi0jIENPTkZJR19TQ1NJX01VTFRJX0xVTiBpcyBub3Qgc2V0Ci1DT05GSUdfU0NTSV9DT05TVEFOVFM9eQotIyBDT05GSUdfU0NTSV9MT0dHSU5HIGlzIG5vdCBzZXQKLQotIwotIyBTQ1NJIFRyYW5zcG9ydCBBdHRyaWJ1dGVzCi0jCi0jIENPTkZJR19TQ1NJX1NQSV9BVFRSUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19TQ1NJX0ZDX0FUVFJTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NDU0lfSVNDU0lfQVRUUlMgaXMgbm90IHNldAotCi0jCi0jIFNDU0kgbG93LWxldmVsIGRyaXZlcnMKLSMKLSMgQ09ORklHX1NDU0lfU0FUQSBpcyBub3Qgc2V0Ci0jIENPTkZJR19TQ1NJX0RFQlVHIGlzIG5vdCBzZXQKLQotIwotIyBNdWx0aS1kZXZpY2Ugc3VwcG9ydCAoUkFJRCBhbmQgTFZNKQotIwotQ09ORklHX01EPXkKLUNPTkZJR19CTEtfREVWX01EPW0KLUNPTkZJR19NRF9MSU5FQVI9bQotQ09ORklHX01EX1JBSUQwPW0KLUNPTkZJR19NRF9SQUlEMT1tCi0jIENPTkZJR19NRF9SQUlEMTAgaXMgbm90IHNldAotQ09ORklHX01EX1JBSUQ1PW0KLUNPTkZJR19NRF9SQUlENj1tCi1DT05GSUdfTURfTVVMVElQQVRIPW0KLSMgQ09ORklHX01EX0ZBVUxUWSBpcyBub3Qgc2V0Ci1DT05GSUdfQkxLX0RFVl9ETT1tCi1DT05GSUdfRE1fQ1JZUFQ9bQotQ09ORklHX0RNX1NOQVBTSE9UPW0KLUNPTkZJR19ETV9NSVJST1I9bQotQ09ORklHX0RNX1pFUk89bQotQ09ORklHX0RNX01VTFRJUEFUSD1tCi1DT05GSUdfRE1fTVVMVElQQVRIX0VNQz1tCi0KLSMKLSMgRnVzaW9uIE1QVCBkZXZpY2Ugc3VwcG9ydAotIwotCi0jCi0jIElFRUUgMTM5NCAoRmlyZVdpcmUpIHN1cHBvcnQKLSMKLQotIwotIyBJMk8gZGV2aWNlIHN1cHBvcnQKLSMKLQotIwotIyBOZXR3b3JraW5nIHN1cHBvcnQKKyMgTmV0d29ya2luZwogIwogQ09ORklHX05FVD15CiAKQEAgLTIzMCwxMCArMTcxLDE3IEBACiBDT05GSUdfUEFDS0VUPXkKICMgQ09ORklHX1BBQ0tFVF9NTUFQIGlzIG5vdCBzZXQKIENPTkZJR19VTklYPXkKK0NPTkZJR19YRlJNPXkKKyMgQ09ORklHX1hGUk1fVVNFUiBpcyBub3Qgc2V0CisjIENPTkZJR19YRlJNX1NVQl9QT0xJQ1kgaXMgbm90IHNldAorQ09ORklHX1hGUk1fTUlHUkFURT15CisjIENPTkZJR19YRlJNX1NUQVRJU1RJQ1MgaXMgbm90IHNldAogQ09ORklHX05FVF9LRVk9eQorQ09ORklHX05FVF9LRVlfTUlHUkFURT15CiBDT05GSUdfSU5FVD15CiAjIENPTkZJR19JUF9NVUxUSUNBU1QgaXMgbm90IHNldAogIyBDT05GSUdfSVBfQURWQU5DRURfUk9VVEVSIGlzIG5vdCBzZXQKK0NPTkZJR19JUF9GSUJfSEFTSD15CiBDT05GSUdfSVBfUE5QPXkKIENPTkZJR19JUF9QTlBfREhDUD15CiBDT05GSUdfSVBfUE5QX0JPT1RQPXkKQEAgLTI0NSwxNDUgKzE5MywxOTkgQEAKIENPTkZJR19JTkVUX0FIPW0KIENPTkZJR19JTkVUX0VTUD1tCiBDT05GSUdfSU5FVF9JUENPTVA9bQorQ09ORklHX0lORVRfWEZSTV9UVU5ORUw9bQogQ09ORklHX0lORVRfVFVOTkVMPW0KLUNPTkZJR19JUF9UQ1BESUFHPW0KLUNPTkZJR19JUF9UQ1BESUFHX0lQVjY9eQotCi0jCi0jIElQOiBWaXJ0dWFsIFNlcnZlciBDb25maWd1cmF0aW9uCi0jCitDT05GSUdfSU5FVF9YRlJNX01PREVfVFJBTlNQT1JUPW0KK0NPTkZJR19JTkVUX1hGUk1fTU9ERV9UVU5ORUw9bQorQ09ORklHX0lORVRfWEZSTV9NT0RFX0JFRVQ9bQorQ09ORklHX0lORVRfTFJPPW0KK0NPTkZJR19JTkVUX0RJQUc9bQorQ09ORklHX0lORVRfVENQX0RJQUc9bQorIyBDT05GSUdfVENQX0NPTkdfQURWQU5DRUQgaXMgbm90IHNldAorQ09ORklHX1RDUF9DT05HX0NVQklDPXkKK0NPTkZJR19ERUZBVUxUX1RDUF9DT05HPSJjdWJpYyIKKyMgQ09ORklHX1RDUF9NRDVTSUcgaXMgbm90IHNldAogIyBDT05GSUdfSVBfVlMgaXMgbm90IHNldAogQ09ORklHX0lQVjY9bQogQ09ORklHX0lQVjZfUFJJVkFDWT15CitDT05GSUdfSVBWNl9ST1VURVJfUFJFRj15CitDT05GSUdfSVBWNl9ST1VURV9JTkZPPXkKKyMgQ09ORklHX0lQVjZfT1BUSU1JU1RJQ19EQUQgaXMgbm90IHNldAogQ09ORklHX0lORVQ2X0FIPW0KIENPTkZJR19JTkVUNl9FU1A9bQogQ09ORklHX0lORVQ2X0lQQ09NUD1tCisjIENPTkZJR19JUFY2X01JUDYgaXMgbm90IHNldAorQ09ORklHX0lORVQ2X1hGUk1fVFVOTkVMPW0KIENPTkZJR19JTkVUNl9UVU5ORUw9bQorQ09ORklHX0lORVQ2X1hGUk1fTU9ERV9UUkFOU1BPUlQ9bQorQ09ORklHX0lORVQ2X1hGUk1fTU9ERV9UVU5ORUw9bQorQ09ORklHX0lORVQ2X1hGUk1fTU9ERV9CRUVUPW0KK0NPTkZJR19JTkVUNl9YRlJNX01PREVfUk9VVEVPUFRJTUlaQVRJT049bQorQ09ORklHX0lQVjZfU0lUPW0KIENPTkZJR19JUFY2X1RVTk5FTD1tCisjIENPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFUyBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRXT1JLX1NFQ01BUksgaXMgbm90IHNldAogQ09ORklHX05FVEZJTFRFUj15CiAjIENPTkZJR19ORVRGSUxURVJfREVCVUcgaXMgbm90IHNldAorQ09ORklHX05FVEZJTFRFUl9BRFZBTkNFRD15CisKKyMKKyMgQ29yZSBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvbgorIworQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LPW0KK0NPTkZJR19ORVRGSUxURVJfTkVUTElOS19RVUVVRT1tCitDT05GSUdfTkVURklMVEVSX05FVExJTktfTE9HPW0KK0NPTkZJR19ORl9DT05OVFJBQ0s9bQorQ09ORklHX05GX0NUX0FDQ1Q9eQorQ09ORklHX05GX0NPTk5UUkFDS19NQVJLPXkKKyMgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFMgaXMgbm90IHNldAorQ09ORklHX05GX0NUX1BST1RPX0dSRT1tCitDT05GSUdfTkZfQ1RfUFJPVE9fU0NUUD1tCitDT05GSUdfTkZfQ1RfUFJPVE9fVURQTElURT1tCitDT05GSUdfTkZfQ09OTlRSQUNLX0FNQU5EQT1tCitDT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tCitDT05GSUdfTkZfQ09OTlRSQUNLX0gzMjM9bQorQ09ORklHX05GX0NPTk5UUkFDS19JUkM9bQorQ09ORklHX05GX0NPTk5UUkFDS19ORVRCSU9TX05TPW0KK0NPTkZJR19ORl9DT05OVFJBQ0tfUFBUUD1tCitDT05GSUdfTkZfQ09OTlRSQUNLX1NBTkU9bQorQ09ORklHX05GX0NPTk5UUkFDS19TSVA9bQorQ09ORklHX05GX0NPTk5UUkFDS19URlRQPW0KKyMgQ09ORklHX05GX0NUX05FVExJTksgaXMgbm90IHNldAorQ09ORklHX05FVEZJTFRFUl9YVEFCTEVTPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX0NMQVNTSUZZPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX0NPTk5NQVJLPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX0RTQ1A9bQorQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfTUFSSz1tCitDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9ORlFVRVVFPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX05GTE9HPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX05PVFJBQ0s9bQorQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfUkFURUVTVD1tCitDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9UUkFDRT1tCitDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9UQ1BNU1M9bQorQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfVENQT1BUU1RSSVA9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9DT01NRU5UPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkJZVEVTPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkxJTUlUPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfQ09OTk1BUks9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9DT05OVFJBQ0s9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9EQ0NQPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfRFNDUD1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0VTUD1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0hFTFBFUj1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0lQUkFOR0U9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9MRU5HVEg9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9MSU1JVD1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX01BQz1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX01BUks9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9PV05FUj1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1BPTElDWT1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX01VTFRJUE9SVD1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1BLVFRZUEU9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9RVU9UQT1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1JBVEVFU1Q9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9SRUFMTT1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1NDVFA9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9TVEFURT1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1NUQVRJU1RJQz1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1NUUklORz1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1RDUE1TUz1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1RJTUU9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9VMzI9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9IQVNITElNSVQ9bQogCiAjCiAjIElQOiBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvbgogIwotQ09ORklHX0lQX05GX0NPTk5UUkFDSz1tCi0jIENPTkZJR19JUF9ORl9DVF9BQ0NUIGlzIG5vdCBzZXQKLUNPTkZJR19JUF9ORl9DT05OVFJBQ0tfTUFSSz15Ci0jIENPTkZJR19JUF9ORl9DVF9QUk9UT19TQ1RQIGlzIG5vdCBzZXQKLUNPTkZJR19JUF9ORl9GVFA9bQotQ09ORklHX0lQX05GX0lSQz1tCi1DT05GSUdfSVBfTkZfVEZUUD1tCi1DT05GSUdfSVBfTkZfQU1BTkRBPW0KK0NPTkZJR19ORl9DT05OVFJBQ0tfSVBWND1tCitDT05GSUdfTkZfQ09OTlRSQUNLX1BST0NfQ09NUEFUPXkKIENPTkZJR19JUF9ORl9RVUVVRT1tCiBDT05GSUdfSVBfTkZfSVBUQUJMRVM9bQotQ09ORklHX0lQX05GX01BVENIX0xJTUlUPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9JUFJBTkdFPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9NQUM9bQotQ09ORklHX0lQX05GX01BVENIX1BLVFRZUEU9bQotQ09ORklHX0lQX05GX01BVENIX01BUks9bQotQ09ORklHX0lQX05GX01BVENIX01VTFRJUE9SVD1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfVE9TPW0KIENPTkZJR19JUF9ORl9NQVRDSF9SRUNFTlQ9bQogQ09ORklHX0lQX05GX01BVENIX0VDTj1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfRFNDUD1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfQUhfRVNQPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9MRU5HVEg9bQorQ09ORklHX0lQX05GX01BVENIX0FIPW0KIENPTkZJR19JUF9ORl9NQVRDSF9UVEw9bQotQ09ORklHX0lQX05GX01BVENIX1RDUE1TUz1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfSEVMUEVSPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9TVEFURT1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfQ09OTlRSQUNLPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9PV05FUj1tCiBDT05GSUdfSVBfTkZfTUFUQ0hfQUREUlRZUEU9bQotQ09ORklHX0lQX05GX01BVENIX1JFQUxNPW0KLSMgQ09ORklHX0lQX05GX01BVENIX1NDVFAgaXMgbm90IHNldAotIyBDT05GSUdfSVBfTkZfTUFUQ0hfQ09NTUVOVCBpcyBub3Qgc2V0Ci1DT05GSUdfSVBfTkZfTUFUQ0hfQ09OTk1BUks9bQotQ09ORklHX0lQX05GX01BVENIX0hBU0hMSU1JVD1tCiBDT05GSUdfSVBfTkZfRklMVEVSPW0KIENPTkZJR19JUF9ORl9UQVJHRVRfUkVKRUNUPW0KIENPTkZJR19JUF9ORl9UQVJHRVRfTE9HPW0KIENPTkZJR19JUF9ORl9UQVJHRVRfVUxPRz1tCi1DT05GSUdfSVBfTkZfVEFSR0VUX1RDUE1TUz1tCi1DT05GSUdfSVBfTkZfTkFUPW0KLUNPTkZJR19JUF9ORl9OQVRfTkVFREVEPXkKK0NPTkZJR19ORl9OQVQ9bQorQ09ORklHX05GX05BVF9ORUVERUQ9eQogQ09ORklHX0lQX05GX1RBUkdFVF9NQVNRVUVSQURFPW0KIENPTkZJR19JUF9ORl9UQVJHRVRfUkVESVJFQ1Q9bQogQ09ORklHX0lQX05GX1RBUkdFVF9ORVRNQVA9bQotQ09ORklHX0lQX05GX1RBUkdFVF9TQU1FPW0KLUNPTkZJR19JUF9ORl9OQVRfU05NUF9CQVNJQz1tCi1DT05GSUdfSVBfTkZfTkFUX0lSQz1tCi1DT05GSUdfSVBfTkZfTkFUX0ZUUD1tCi1DT05GSUdfSVBfTkZfTkFUX1RGVFA9bQotQ09ORklHX0lQX05GX05BVF9BTUFOREE9bQorQ09ORklHX05GX05BVF9TTk1QX0JBU0lDPW0KK0NPTkZJR19ORl9OQVRfUFJPVE9fR1JFPW0KK0NPTkZJR19ORl9OQVRfRlRQPW0KK0NPTkZJR19ORl9OQVRfSVJDPW0KK0NPTkZJR19ORl9OQVRfVEZUUD1tCitDT05GSUdfTkZfTkFUX0FNQU5EQT1tCitDT05GSUdfTkZfTkFUX1BQVFA9bQorQ09ORklHX05GX05BVF9IMzIzPW0KK0NPTkZJR19ORl9OQVRfU0lQPW0KIENPTkZJR19JUF9ORl9NQU5HTEU9bQotQ09ORklHX0lQX05GX1RBUkdFVF9UT1M9bQogQ09ORklHX0lQX05GX1RBUkdFVF9FQ049bQotQ09ORklHX0lQX05GX1RBUkdFVF9EU0NQPW0KLUNPTkZJR19JUF9ORl9UQVJHRVRfTUFSSz1tCi1DT05GSUdfSVBfTkZfVEFSR0VUX0NMQVNTSUZZPW0KLUNPTkZJR19JUF9ORl9UQVJHRVRfQ09OTk1BUks9bQotIyBDT05GSUdfSVBfTkZfVEFSR0VUX0NMVVNURVJJUCBpcyBub3Qgc2V0CitDT05GSUdfSVBfTkZfVEFSR0VUX1RUTD1tCitDT05GSUdfSVBfTkZfVEFSR0VUX0NMVVNURVJJUD1tCiBDT05GSUdfSVBfTkZfUkFXPW0KLUNPTkZJR19JUF9ORl9UQVJHRVRfTk9UUkFDSz1tCiBDT05GSUdfSVBfTkZfQVJQVEFCTEVTPW0KIENPTkZJR19JUF9ORl9BUlBGSUxURVI9bQogQ09ORklHX0lQX05GX0FSUF9NQU5HTEU9bQogCiAjCi0jIElQdjY6IE5ldGZpbHRlciBDb25maWd1cmF0aW9uIChFWFBFUklNRU5UQUwpCisjIElQdjY6IE5ldGZpbHRlciBDb25maWd1cmF0aW9uCiAjCitDT05GSUdfTkZfQ09OTlRSQUNLX0lQVjY9bQogQ09ORklHX0lQNl9ORl9RVUVVRT1tCiBDT05GSUdfSVA2X05GX0lQVEFCTEVTPW0KLUNPTkZJR19JUDZfTkZfTUFUQ0hfTElNSVQ9bQotQ09ORklHX0lQNl9ORl9NQVRDSF9NQUM9bQogQ09ORklHX0lQNl9ORl9NQVRDSF9SVD1tCiBDT05GSUdfSVA2X05GX01BVENIX09QVFM9bQogQ09ORklHX0lQNl9ORl9NQVRDSF9GUkFHPW0KIENPTkZJR19JUDZfTkZfTUFUQ0hfSEw9bQotQ09ORklHX0lQNl9ORl9NQVRDSF9NVUxUSVBPUlQ9bQotQ09ORklHX0lQNl9ORl9NQVRDSF9PV05FUj1tCi1DT05GSUdfSVA2X05GX01BVENIX01BUks9bQogQ09ORklHX0lQNl9ORl9NQVRDSF9JUFY2SEVBREVSPW0KLUNPTkZJR19JUDZfTkZfTUFUQ0hfQUhFU1A9bQotQ09ORklHX0lQNl9ORl9NQVRDSF9MRU5HVEg9bQorQ09ORklHX0lQNl9ORl9NQVRDSF9BSD1tCitDT05GSUdfSVA2X05GX01BVENIX01IPW0KIENPTkZJR19JUDZfTkZfTUFUQ0hfRVVJNjQ9bQogQ09ORklHX0lQNl9ORl9GSUxURVI9bQogQ09ORklHX0lQNl9ORl9UQVJHRVRfTE9HPW0KK0NPTkZJR19JUDZfTkZfVEFSR0VUX1JFSkVDVD1tCiBDT05GSUdfSVA2X05GX01BTkdMRT1tCi1DT05GSUdfSVA2X05GX1RBUkdFVF9NQVJLPW0KK0NPTkZJR19JUDZfTkZfVEFSR0VUX0hMPW0KIENPTkZJR19JUDZfTkZfUkFXPW0KLUNPTkZJR19YRlJNPXkKLUNPTkZJR19YRlJNX1VTRVI9bQorQ09ORklHX0lQX0RDQ1A9bQorQ09ORklHX0lORVRfRENDUF9ESUFHPW0KK0NPTkZJR19JUF9EQ0NQX0FDS1ZFQz15CiAKICMKLSMgU0NUUCBDb25maWd1cmF0aW9uIChFWFBFUklNRU5UQUwpCisjIERDQ1AgQ0NJRHMgQ29uZmlndXJhdGlvbiAoRVhQRVJJTUVOVEFMKQogIworQ09ORklHX0lQX0RDQ1BfQ0NJRDI9bQorIyBDT05GSUdfSVBfRENDUF9DQ0lEMl9ERUJVRyBpcyBub3Qgc2V0CitDT05GSUdfSVBfRENDUF9DQ0lEMz1tCisjIENPTkZJR19JUF9EQ0NQX0NDSUQzX0RFQlVHIGlzIG5vdCBzZXQKK0NPTkZJR19JUF9EQ0NQX0NDSUQzX1JUTz0xMDAKK0NPTkZJR19JUF9EQ0NQX1RGUkNfTElCPW0KIENPTkZJR19JUF9TQ1RQPW0KICMgQ09ORklHX1NDVFBfREJHX01TRyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1RQX0RCR19PQkpDTlQgaXMgbm90IHNldAogIyBDT05GSUdfU0NUUF9ITUFDX05PTkUgaXMgbm90IHNldAogIyBDT05GSUdfU0NUUF9ITUFDX1NIQTEgaXMgbm90IHNldAogQ09ORklHX1NDVFBfSE1BQ19NRDU9eQorIyBDT05GSUdfVElQQyBpcyBub3Qgc2V0CiAjIENPTkZJR19BVE0gaXMgbm90IHNldAogIyBDT05GSUdfQlJJREdFIGlzIG5vdCBzZXQKICMgQ09ORklHX1ZMQU5fODAyMVEgaXMgbm90IHNldAogIyBDT05GSUdfREVDTkVUIGlzIG5vdCBzZXQKIENPTkZJR19MTEM9bQogIyBDT05GSUdfTExDMiBpcyBub3Qgc2V0Ci1DT05GSUdfSVBYPW0KLSMgQ09ORklHX0lQWF9JTlRFUk4gaXMgbm90IHNldAorIyBDT05GSUdfSVBYIGlzIG5vdCBzZXQKIENPTkZJR19BVEFMSz1tCiAjIENPTkZJR19ERVZfQVBQTEVUQUxLIGlzIG5vdCBzZXQKICMgQ09ORklHX1gyNSBpcyBub3Qgc2V0CiAjIENPTkZJR19MQVBCIGlzIG5vdCBzZXQKLSMgQ09ORklHX05FVF9ESVZFUlQgaXMgbm90IHNldAogIyBDT05GSUdfRUNPTkVUIGlzIG5vdCBzZXQKICMgQ09ORklHX1dBTl9ST1VURVIgaXMgbm90IHNldAotCi0jCi0jIFFvUyBhbmQvb3IgZmFpciBxdWV1ZWluZwotIwogIyBDT05GSUdfTkVUX1NDSEVEIGlzIG5vdCBzZXQKIENPTkZJR19ORVRfQ0xTX1JPVVRFPXkKIApAQCAtMzkxLDQ2ICszOTMsMTU2IEBACiAjIE5ldHdvcmsgdGVzdGluZwogIwogIyBDT05GSUdfTkVUX1BLVEdFTiBpcyBub3Qgc2V0Ci1DT05GSUdfTkVUUE9MTD15Ci0jIENPTkZJR19ORVRQT0xMX1JYIGlzIG5vdCBzZXQKLSMgQ09ORklHX05FVFBPTExfVFJBUCBpcyBub3Qgc2V0Ci1DT05GSUdfTkVUX1BPTExfQ09OVFJPTExFUj15CiAjIENPTkZJR19IQU1SQURJTyBpcyBub3Qgc2V0CisjIENPTkZJR19DQU4gaXMgbm90IHNldAogIyBDT05GSUdfSVJEQSBpcyBub3Qgc2V0CiAjIENPTkZJR19CVCBpcyBub3Qgc2V0CisjIENPTkZJR19BRl9SWFJQQyBpcyBub3Qgc2V0CisKKyMKKyMgV2lyZWxlc3MKKyMKKyMgQ09ORklHX0NGRzgwMjExIGlzIG5vdCBzZXQKK0NPTkZJR19XSVJFTEVTU19FWFQ9eQorIyBDT05GSUdfTUFDODAyMTEgaXMgbm90IHNldAorQ09ORklHX0lFRUU4MDIxMT1tCisjIENPTkZJR19JRUVFODAyMTFfREVCVUcgaXMgbm90IHNldAorQ09ORklHX0lFRUU4MDIxMV9DUllQVF9XRVA9bQorQ09ORklHX0lFRUU4MDIxMV9DUllQVF9DQ01QPW0KK0NPTkZJR19JRUVFODAyMTFfQ1JZUFRfVEtJUD1tCitDT05GSUdfSUVFRTgwMjExX1NPRlRNQUM9bQorIyBDT05GSUdfSUVFRTgwMjExX1NPRlRNQUNfREVCVUcgaXMgbm90IHNldAorIyBDT05GSUdfUkZLSUxMIGlzIG5vdCBzZXQKKyMgQ09ORklHX05FVF85UCBpcyBub3Qgc2V0CisKKyMKKyMgRGV2aWNlIERyaXZlcnMKKyMKKworIworIyBHZW5lcmljIERyaXZlciBPcHRpb25zCisjCitDT05GSUdfVUVWRU5UX0hFTFBFUl9QQVRIPSIvc2Jpbi9ob3RwbHVnIgorQ09ORklHX1NUQU5EQUxPTkU9eQorQ09ORklHX1BSRVZFTlRfRklSTVdBUkVfQlVJTEQ9eQorQ09ORklHX0ZXX0xPQURFUj1tCisjIENPTkZJR19TWVNfSFlQRVJWSVNPUiBpcyBub3Qgc2V0CitDT05GSUdfQ09OTkVDVE9SPW0KKyMgQ09ORklHX01URCBpcyBub3Qgc2V0CisjIENPTkZJR19QQVJQT1JUIGlzIG5vdCBzZXQKK0NPTkZJR19CTEtfREVWPXkKKyMgQ09ORklHX0JMS19ERVZfQ09XX0NPTU1PTiBpcyBub3Qgc2V0CitDT05GSUdfQkxLX0RFVl9MT09QPXkKK0NPTkZJR19CTEtfREVWX0NSWVBUT0xPT1A9bQorQ09ORklHX0JMS19ERVZfTkJEPW0KK0NPTkZJR19CTEtfREVWX1JBTT15CitDT05GSUdfQkxLX0RFVl9SQU1fQ09VTlQ9MTYKK0NPTkZJR19CTEtfREVWX1JBTV9TSVpFPTQwOTYKKyMgQ09ORklHX0JMS19ERVZfWElQIGlzIG5vdCBzZXQKK0NPTkZJR19DRFJPTV9QS1RDRFZEPW0KK0NPTkZJR19DRFJPTV9QS1RDRFZEX0JVRkZFUlM9OAorIyBDT05GSUdfQ0RST01fUEtUQ0RWRF9XQ0FDSEUgaXMgbm90IHNldAorQ09ORklHX0FUQV9PVkVSX0VUSD1tCitDT05GSUdfTUlTQ19ERVZJQ0VTPXkKKyMgQ09ORklHX0VFUFJPTV85M0NYNiBpcyBub3Qgc2V0CisjIENPTkZJR19FTkNMT1NVUkVfU0VSVklDRVMgaXMgbm90IHNldAorQ09ORklHX0hBVkVfSURFPXkKKyMgQ09ORklHX0lERSBpcyBub3Qgc2V0CisKKyMKKyMgU0NTSSBkZXZpY2Ugc3VwcG9ydAorIworQ09ORklHX1JBSURfQVRUUlM9bQorQ09ORklHX1NDU0k9eQorQ09ORklHX1NDU0lfRE1BPXkKK0NPTkZJR19TQ1NJX1RHVD1tCisjIENPTkZJR19TQ1NJX05FVExJTksgaXMgbm90IHNldAorQ09ORklHX1NDU0lfUFJPQ19GUz15CisKKyMKKyMgU0NTSSBzdXBwb3J0IHR5cGUgKGRpc2ssIHRhcGUsIENELVJPTSkKKyMKK0NPTkZJR19CTEtfREVWX1NEPXkKK0NPTkZJR19DSFJfREVWX1NUPW0KK0NPTkZJR19DSFJfREVWX09TU1Q9bQorQ09ORklHX0JMS19ERVZfU1I9eQorQ09ORklHX0JMS19ERVZfU1JfVkVORE9SPXkKK0NPTkZJR19DSFJfREVWX1NHPW0KKyMgQ09ORklHX0NIUl9ERVZfU0NIIGlzIG5vdCBzZXQKKworIworIyBTb21lIFNDU0kgZGV2aWNlcyAoZS5nLiBDRCBqdWtlYm94KSBzdXBwb3J0IG11bHRpcGxlIExVTnMKKyMKKyMgQ09ORklHX1NDU0lfTVVMVElfTFVOIGlzIG5vdCBzZXQKK0NPTkZJR19TQ1NJX0NPTlNUQU5UUz15CisjIENPTkZJR19TQ1NJX0xPR0dJTkcgaXMgbm90IHNldAorIyBDT05GSUdfU0NTSV9TQ0FOX0FTWU5DIGlzIG5vdCBzZXQKK0NPTkZJR19TQ1NJX1dBSVRfU0NBTj1tCisKKyMKKyMgU0NTSSBUcmFuc3BvcnRzCisjCitDT05GSUdfU0NTSV9TUElfQVRUUlM9eQorIyBDT05GSUdfU0NTSV9GQ19BVFRSUyBpcyBub3Qgc2V0CitDT05GSUdfU0NTSV9JU0NTSV9BVFRSUz1tCitDT05GSUdfU0NTSV9TQVNfQVRUUlM9bQorQ09ORklHX1NDU0lfU0FTX0xJQlNBUz1tCitDT05GSUdfU0NTSV9TQVNfSE9TVF9TTVA9eQorIyBDT05GSUdfU0NTSV9TQVNfTElCU0FTX0RFQlVHIGlzIG5vdCBzZXQKK0NPTkZJR19TQ1NJX1NSUF9BVFRSUz1tCitDT05GSUdfU0NTSV9TUlBfVEdUX0FUVFJTPXkKK0NPTkZJR19TQ1NJX0xPV0xFVkVMPXkKK0NPTkZJR19JU0NTSV9UQ1A9bQorQ09ORklHXzUzQzcwMF9CRV9CVVM9eQorIyBDT05GSUdfU0NTSV9ERUJVRyBpcyBub3Qgc2V0CitDT05GSUdfTVZNRTE2eF9TQ1NJPXkKK0NPTkZJR19NRD15CitDT05GSUdfQkxLX0RFVl9NRD1tCitDT05GSUdfTURfTElORUFSPW0KK0NPTkZJR19NRF9SQUlEMD1tCitDT05GSUdfTURfUkFJRDE9bQorIyBDT05GSUdfTURfUkFJRDEwIGlzIG5vdCBzZXQKK0NPTkZJR19NRF9SQUlENDU2PW0KK0NPTkZJR19NRF9SQUlENV9SRVNIQVBFPXkKK0NPTkZJR19NRF9NVUxUSVBBVEg9bQorIyBDT05GSUdfTURfRkFVTFRZIGlzIG5vdCBzZXQKK0NPTkZJR19CTEtfREVWX0RNPW0KKyMgQ09ORklHX0RNX0RFQlVHIGlzIG5vdCBzZXQKK0NPTkZJR19ETV9DUllQVD1tCitDT05GSUdfRE1fU05BUFNIT1Q9bQorQ09ORklHX0RNX01JUlJPUj1tCitDT05GSUdfRE1fWkVSTz1tCitDT05GSUdfRE1fTVVMVElQQVRIPW0KK0NPTkZJR19ETV9NVUxUSVBBVEhfRU1DPW0KK0NPTkZJR19ETV9NVUxUSVBBVEhfUkRBQz1tCitDT05GSUdfRE1fTVVMVElQQVRIX0hQPW0KKyMgQ09ORklHX0RNX0RFTEFZIGlzIG5vdCBzZXQKK0NPTkZJR19ETV9VRVZFTlQ9eQogQ09ORklHX05FVERFVklDRVM9eQorIyBDT05GSUdfTkVUREVWSUNFU19NVUxUSVFVRVVFIGlzIG5vdCBzZXQKIENPTkZJR19EVU1NWT1tCiAjIENPTkZJR19CT05ESU5HIGlzIG5vdCBzZXQKK0NPTkZJR19NQUNWTEFOPW0KIENPTkZJR19FUVVBTElaRVI9bQogIyBDT05GSUdfVFVOIGlzIG5vdCBzZXQKLQotIwotIyBFdGhlcm5ldCAoMTAgb3IgMTAwTWJpdCkKLSMKK0NPTkZJR19WRVRIPW0KKyMgQ09ORklHX1BIWUxJQiBpcyBub3Qgc2V0CiBDT05GSUdfTkVUX0VUSEVSTkVUPXkKLUNPTkZJR19NSUk9bQorIyBDT05GSUdfTUlJIGlzIG5vdCBzZXQKIENPTkZJR19NVk1FMTZ4X05FVD15CisjIENPTkZJR19JQk1fTkVXX0VNQUNfWk1JSSBpcyBub3Qgc2V0CisjIENPTkZJR19JQk1fTkVXX0VNQUNfUkdNSUkgaXMgbm90IHNldAorIyBDT05GSUdfSUJNX05FV19FTUFDX1RBSCBpcyBub3Qgc2V0CisjIENPTkZJR19JQk1fTkVXX0VNQUNfRU1BQzQgaXMgbm90IHNldAorIyBDT05GSUdfQjQ0IGlzIG5vdCBzZXQKKyMgQ09ORklHX05FVERFVl8xMDAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX05FVERFVl8xMDAwMCBpcyBub3Qgc2V0CiAKICMKLSMgRXRoZXJuZXQgKDEwMDAgTWJpdCkKKyMgV2lyZWxlc3MgTEFOCiAjCi0KLSMKLSMgRXRoZXJuZXQgKDEwMDAwIE1iaXQpCi0jCi0KLSMKLSMgVG9rZW4gUmluZyBkZXZpY2VzCi0jCi0KLSMKLSMgV2lyZWxlc3MgTEFOIChub24taGFtcmFkaW8pCi0jCi0jIENPTkZJR19ORVRfUkFESU8gaXMgbm90IHNldAotCi0jCi0jIFdhbiBpbnRlcmZhY2VzCi0jCisjIENPTkZJR19XTEFOX1BSRTgwMjExIGlzIG5vdCBzZXQKKyMgQ09ORklHX1dMQU5fODAyMTEgaXMgbm90IHNldAogIyBDT05GSUdfV0FOIGlzIG5vdCBzZXQKIENPTkZJR19QUFA9bQogIyBDT05GSUdfUFBQX01VTFRJTElOSyBpcyBub3Qgc2V0CkBAIC00MzksMjggKzU1MSwyOCBAQAogQ09ORklHX1BQUF9TWU5DX1RUWT1tCiBDT05GSUdfUFBQX0RFRkxBVEU9bQogQ09ORklHX1BQUF9CU0RDT01QPW0KK0NPTkZJR19QUFBfTVBQRT1tCiBDT05GSUdfUFBQT0U9bQorQ09ORklHX1BQUE9MMlRQPW0KIENPTkZJR19TTElQPW0KIENPTkZJR19TTElQX0NPTVBSRVNTRUQ9eQorQ09ORklHX1NMSEM9bQogQ09ORklHX1NMSVBfU01BUlQ9eQogQ09ORklHX1NMSVBfTU9ERV9TTElQNj15Ci1DT05GSUdfU0hBUEVSPW0KIENPTkZJR19ORVRDT05TT0xFPW0KLQotIwotIyBJU0ROIHN1YnN5c3RlbQotIworQ09ORklHX05FVENPTlNPTEVfRFlOQU1JQz15CitDT05GSUdfTkVUUE9MTD15CisjIENPTkZJR19ORVRQT0xMX1RSQVAgaXMgbm90IHNldAorQ09ORklHX05FVF9QT0xMX0NPTlRST0xMRVI9eQogIyBDT05GSUdfSVNETiBpcyBub3Qgc2V0Ci0KLSMKLSMgVGVsZXBob255IFN1cHBvcnQKLSMKICMgQ09ORklHX1BIT05FIGlzIG5vdCBzZXQKIAogIwogIyBJbnB1dCBkZXZpY2Ugc3VwcG9ydAogIwogQ09ORklHX0lOUFVUPXkKK0NPTkZJR19JTlBVVF9GRl9NRU1MRVNTPW0KKyMgQ09ORklHX0lOUFVUX1BPTExERVYgaXMgbm90IHNldAogCiAjCiAjIFVzZXJsYW5kIGludGVyZmFjZXMKQEAgLTQ3MCw3ICs1ODIsNiBAQAogQ09ORklHX0lOUFVUX01PVVNFREVWX1NDUkVFTl9YPTEwMjQKIENPTkZJR19JTlBVVF9NT1VTRURFVl9TQ1JFRU5fWT03NjgKICMgQ09ORklHX0lOUFVUX0pPWURFViBpcyBub3Qgc2V0Ci0jIENPTkZJR19JTlBVVF9UU0RFViBpcyBub3Qgc2V0CiAjIENPTkZJR19JTlBVVF9FVkRFViBpcyBub3Qgc2V0CiAjIENPTkZJR19JTlBVVF9FVkJVRyBpcyBub3Qgc2V0CiAKQEAgLTQ4MywxMSArNTk0LDE5IEBACiAjIENPTkZJR19LRVlCT0FSRF9MS0tCRCBpcyBub3Qgc2V0CiAjIENPTkZJR19LRVlCT0FSRF9YVEtCRCBpcyBub3Qgc2V0CiAjIENPTkZJR19LRVlCT0FSRF9ORVdUT04gaXMgbm90IHNldAorIyBDT05GSUdfS0VZQk9BUkRfU1RPV0FXQVkgaXMgbm90IHNldAogQ09ORklHX0lOUFVUX01PVVNFPXkKIENPTkZJR19NT1VTRV9QUzI9bQorQ09ORklHX01PVVNFX1BTMl9BTFBTPXkKK0NPTkZJR19NT1VTRV9QUzJfTE9HSVBTMlBQPXkKK0NPTkZJR19NT1VTRV9QUzJfU1lOQVBUSUNTPXkKK0NPTkZJR19NT1VTRV9QUzJfTElGRUJPT0s9eQorQ09ORklHX01PVVNFX1BTMl9UUkFDS1BPSU5UPXkKKyMgQ09ORklHX01PVVNFX1BTMl9UT1VDSEtJVCBpcyBub3Qgc2V0CiBDT05GSUdfTU9VU0VfU0VSSUFMPW0KICMgQ09ORklHX01PVVNFX1ZTWFhYQUEgaXMgbm90IHNldAogIyBDT05GSUdfSU5QVVRfSk9ZU1RJQ0sgaXMgbm90IHNldAorIyBDT05GSUdfSU5QVVRfVEFCTEVUIGlzIG5vdCBzZXQKICMgQ09ORklHX0lOUFVUX1RPVUNIU0NSRUVOIGlzIG5vdCBzZXQKICMgQ09ORklHX0lOUFVUX01JU0MgaXMgbm90IHNldAogCkBAIC00OTUsNyArNjE0LDcgQEAKICMgSGFyZHdhcmUgSS9PIHBvcnRzCiAjCiBDT05GSUdfU0VSSU89bQotQ09ORklHX1NFUklPX1NFUlBPUlQ9bQorIyBDT05GSUdfU0VSSU9fU0VSUE9SVCBpcyBub3Qgc2V0CiBDT05GSUdfU0VSSU9fTElCUFMyPW0KICMgQ09ORklHX1NFUklPX1JBVyBpcyBub3Qgc2V0CiAjIENPTkZJR19HQU1FUE9SVCBpcyBub3Qgc2V0CkBAIC01MDYsNiArNjI1LDcgQEAKIENPTkZJR19WVD15CiBDT05GSUdfVlRfQ09OU09MRT15CiBDT05GSUdfSFdfQ09OU09MRT15CitDT05GSUdfVlRfSFdfQ09OU09MRV9CSU5ESU5HPXkKICMgQ09ORklHX1NFUklBTF9OT05TVEFOREFSRCBpcyBub3Qgc2V0CiAKICMKQEAgLTUxOSwxMTYgKzYzOSw4NSBAQAogQ09ORklHX1VOSVg5OF9QVFlTPXkKIENPTkZJR19MRUdBQ1lfUFRZUz15CiBDT05GSUdfTEVHQUNZX1BUWV9DT1VOVD0yNTYKLQotIwotIyBJUE1JCi0jCiAjIENPTkZJR19JUE1JX0hBTkRMRVIgaXMgbm90IHNldAotCi0jCi0jIFdhdGNoZG9nIENhcmRzCi0jCi0jIENPTkZJR19XQVRDSERPRyBpcyBub3Qgc2V0CisjIENPTkZJR19IV19SQU5ET00gaXMgbm90IHNldAogQ09ORklHX0dFTl9SVEM9bQogQ09ORklHX0dFTl9SVENfWD15Ci0jIENPTkZJR19EVExLIGlzIG5vdCBzZXQKICMgQ09ORklHX1IzOTY0IGlzIG5vdCBzZXQKLQotIwotIyBGdGFwZSwgdGhlIGZsb3BweSB0YXBlIGRldmljZSBkcml2ZXIKLSMKLSMgQ09ORklHX0RSTSBpcyBub3Qgc2V0CiAjIENPTkZJR19SQVdfRFJJVkVSIGlzIG5vdCBzZXQKLQotIwotIyBUUE0gZGV2aWNlcwotIwotCi0jCi0jIEkyQyBzdXBwb3J0Ci0jCisjIENPTkZJR19UQ0dfVFBNIGlzIG5vdCBzZXQKICMgQ09ORklHX0kyQyBpcyBub3Qgc2V0CiAKICMKLSMgRGFsbGFzJ3MgMS13aXJlIGJ1cworIyBTUEkgc3VwcG9ydAogIworIyBDT05GSUdfU1BJIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NQSV9NQVNURVIgaXMgbm90IHNldAogIyBDT05GSUdfVzEgaXMgbm90IHNldAorIyBDT05GSUdfUE9XRVJfU1VQUExZIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hXTU9OIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RIRVJNQUwgaXMgbm90IHNldAorIyBDT05GSUdfV0FUQ0hET0cgaXMgbm90IHNldAogCiAjCi0jIE1pc2MgZGV2aWNlcworIyBTb25pY3MgU2lsaWNvbiBCYWNrcGxhbmUKICMKK0NPTkZJR19TU0JfUE9TU0lCTEU9eQorIyBDT05GSUdfU1NCIGlzIG5vdCBzZXQKKworIworIyBNdWx0aWZ1bmN0aW9uIGRldmljZSBkcml2ZXJzCisjCisjIENPTkZJR19NRkRfU001MDEgaXMgbm90IHNldAogCiAjCiAjIE11bHRpbWVkaWEgZGV2aWNlcwogIwogIyBDT05GSUdfVklERU9fREVWIGlzIG5vdCBzZXQKLQotIwotIyBEaWdpdGFsIFZpZGVvIEJyb2FkY2FzdGluZyBEZXZpY2VzCi0jCi0jIENPTkZJR19EVkIgaXMgbm90IHNldAorIyBDT05GSUdfRFZCX0NPUkUgaXMgbm90IHNldAorIyBDT05GSUdfREFCIGlzIG5vdCBzZXQKIAogIwogIyBHcmFwaGljcyBzdXBwb3J0CiAjCi1DT05GSUdfRkI9eQotIyBDT05GSUdfRkJfQ0ZCX0ZJTExSRUNUIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZCX0NGQl9DT1BZQVJFQSBpcyBub3Qgc2V0Ci0jIENPTkZJR19GQl9DRkJfSU1BR0VCTElUIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZCX1NPRlRfQ1VSU09SIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZCX01BQ01PREVTIGlzIG5vdCBzZXQKLUNPTkZJR19GQl9NT0RFX0hFTFBFUlM9eQotIyBDT05GSUdfRkJfVElMRUJMSVRUSU5HIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZCX1MxRDEzWFhYIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZCX1ZJUlRVQUwgaXMgbm90IHNldAorIyBDT05GSUdfVkdBU1RBVEUgaXMgbm90IHNldAorIyBDT05GSUdfVklERU9fT1VUUFVUX0NPTlRST0wgaXMgbm90IHNldAorIyBDT05GSUdfRkIgaXMgbm90IHNldAorIyBDT05GSUdfQkFDS0xJR0hUX0xDRF9TVVBQT1JUIGlzIG5vdCBzZXQKKworIworIyBEaXNwbGF5IGRldmljZSBzdXBwb3J0CisjCisjIENPTkZJR19ESVNQTEFZX1NVUFBPUlQgaXMgbm90IHNldAogCiAjCiAjIENvbnNvbGUgZGlzcGxheSBkcml2ZXIgc3VwcG9ydAogIwogQ09ORklHX0RVTU1ZX0NPTlNPTEU9eQotQ09ORklHX0ZSQU1FQlVGRkVSX0NPTlNPTEU9eQotIyBDT05GSUdfRk9OVFMgaXMgbm90IHNldAotQ09ORklHX0ZPTlRfOHg4PXkKLUNPTkZJR19GT05UXzh4MTY9eQotCi0jCi0jIExvZ28gY29uZmlndXJhdGlvbgotIwotQ09ORklHX0xPR089eQotQ09ORklHX0xPR09fTElOVVhfTU9OTz15Ci1DT05GSUdfTE9HT19MSU5VWF9WR0ExNj15Ci1DT05GSUdfTE9HT19MSU5VWF9DTFVUMjI0PXkKLSMgQ09ORklHX0JBQ0tMSUdIVF9MQ0RfU1VQUE9SVCBpcyBub3Qgc2V0CiAKICMKICMgU291bmQKICMKICMgQ09ORklHX1NPVU5EIGlzIG5vdCBzZXQKLQotIwotIyBVU0Igc3VwcG9ydAotIwotIyBDT05GSUdfVVNCX0FSQ0hfSEFTX0hDRCBpcyBub3Qgc2V0Ci0jIENPTkZJR19VU0JfQVJDSF9IQVNfT0hDSSBpcyBub3Qgc2V0Ci0KLSMKLSMgVVNCIEdhZGdldCBTdXBwb3J0Ci0jCi0jIENPTkZJR19VU0JfR0FER0VUIGlzIG5vdCBzZXQKLQotIwotIyBNTUMvU0QgQ2FyZCBzdXBwb3J0Ci0jCitDT05GSUdfSElEX1NVUFBPUlQ9eQorQ09ORklHX0hJRD1tCisjIENPTkZJR19ISURfREVCVUcgaXMgbm90IHNldAorQ09ORklHX0hJRFJBVz15CisjIENPTkZJR19VU0JfU1VQUE9SVCBpcyBub3Qgc2V0CiAjIENPTkZJR19NTUMgaXMgbm90IHNldAorIyBDT05GSUdfTUVNU1RJQ0sgaXMgbm90IHNldAorIyBDT05GSUdfTkVXX0xFRFMgaXMgbm90IHNldAorIyBDT05GSUdfUlRDX0NMQVNTIGlzIG5vdCBzZXQKIAogIwotIyBJbmZpbmlCYW5kIHN1cHBvcnQKKyMgVXNlcnNwYWNlIEkvTwogIwotIyBDT05GSUdfSU5GSU5JQkFORCBpcyBub3Qgc2V0CisjIENPTkZJR19VSU8gaXMgbm90IHNldAogCiAjCiAjIENoYXJhY3RlciBkZXZpY2VzCiAjCitDT05GSUdfU0VSSUFMMTY3PXkKIENPTkZJR19NVk1FMTYyX1NDQz15CiBDT05GSUdfU0VSSUFMX0NPTlNPTEU9eQogCkBAIC02MzcsMTAgKzcyNiwxMSBAQAogIwogQ09ORklHX0VYVDJfRlM9eQogIyBDT05GSUdfRVhUMl9GU19YQVRUUiBpcyBub3Qgc2V0CisjIENPTkZJR19FWFQyX0ZTX1hJUCBpcyBub3Qgc2V0CiBDT05GSUdfRVhUM19GUz15CiAjIENPTkZJR19FWFQzX0ZTX1hBVFRSIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VYVDRERVZfRlMgaXMgbm90IHNldAogQ09ORklHX0pCRD15Ci0jIENPTkZJR19KQkRfREVCVUcgaXMgbm90IHNldAogQ09ORklHX1JFSVNFUkZTX0ZTPW0KICMgQ09ORklHX1JFSVNFUkZTX0NIRUNLIGlzIG5vdCBzZXQKICMgQ09ORklHX1JFSVNFUkZTX1BST0NfSU5GTyBpcyBub3Qgc2V0CkBAIC02NTEsMjUgKzc0MSwyOSBAQAogIyBDT05GSUdfSkZTX0RFQlVHIGlzIG5vdCBzZXQKICMgQ09ORklHX0pGU19TVEFUSVNUSUNTIGlzIG5vdCBzZXQKIENPTkZJR19GU19QT1NJWF9BQ0w9eQotCi0jCi0jIFhGUyBzdXBwb3J0Ci0jCiBDT05GSUdfWEZTX0ZTPW0KLUNPTkZJR19YRlNfRVhQT1JUPXkKLSMgQ09ORklHX1hGU19SVCBpcyBub3Qgc2V0CiAjIENPTkZJR19YRlNfUVVPVEEgaXMgbm90IHNldAogIyBDT05GSUdfWEZTX1NFQ1VSSVRZIGlzIG5vdCBzZXQKICMgQ09ORklHX1hGU19QT1NJWF9BQ0wgaXMgbm90IHNldAotQ09ORklHX01JTklYX0ZTPXkKLSMgQ09ORklHX1JPTUZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1hGU19SVCBpcyBub3Qgc2V0CitDT05GSUdfR0ZTMl9GUz1tCitDT05GSUdfR0ZTMl9GU19MT0NLSU5HX05PTE9DSz1tCitDT05GSUdfR0ZTMl9GU19MT0NLSU5HX0RMTT1tCitDT05GSUdfT0NGUzJfRlM9bQorIyBDT05GSUdfT0NGUzJfREVCVUdfTUFTS0xPRyBpcyBub3Qgc2V0CisjIENPTkZJR19PQ0ZTMl9ERUJVR19GUyBpcyBub3Qgc2V0CitDT05GSUdfRE5PVElGWT15CitDT05GSUdfSU5PVElGWT15CitDT05GSUdfSU5PVElGWV9VU0VSPXkKIENPTkZJR19RVU9UQT15CitDT05GSUdfUVVPVEFfTkVUTElOS19JTlRFUkZBQ0U9eQorIyBDT05GSUdfUFJJTlRfUVVPVEFfV0FSTklORyBpcyBub3Qgc2V0CiAjIENPTkZJR19RRk1UX1YxIGlzIG5vdCBzZXQKICMgQ09ORklHX1FGTVRfVjIgaXMgbm90IHNldAogQ09ORklHX1FVT1RBQ1RMPXkKLUNPTkZJR19ETk9USUZZPXkKIENPTkZJR19BVVRPRlNfRlM9bQogQ09ORklHX0FVVE9GUzRfRlM9bQorQ09ORklHX0ZVU0VfRlM9bQogCiAjCiAjIENELVJPTS9EVkQgRmlsZXN5c3RlbXMKQEAgLTY3Nyw3ICs3NzEsNiBAQAogQ09ORklHX0lTTzk2NjBfRlM9eQogQ09ORklHX0pPTElFVD15CiBDT05GSUdfWklTT0ZTPXkKLUNPTkZJR19aSVNPRlNfRlM9eQogQ09ORklHX1VERl9GUz1tCiBDT05GSUdfVURGX05MUz15CiAKQEAgLTY5NiwxNSArNzg5LDEyIEBACiAjCiBDT05GSUdfUFJPQ19GUz15CiBDT05GSUdfUFJPQ19LQ09SRT15CitDT05GSUdfUFJPQ19TWVNDVEw9eQogQ09ORklHX1NZU0ZTPXkKLUNPTkZJR19ERVZGU19GUz15Ci0jIENPTkZJR19ERVZGU19NT1VOVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19ERVZGU19ERUJVRyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ERVZQVFNfRlNfWEFUVFIgaXMgbm90IHNldAogQ09ORklHX1RNUEZTPXkKLSMgQ09ORklHX1RNUEZTX1hBVFRSIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RNUEZTX1BPU0lYX0FDTCBpcyBub3Qgc2V0CiAjIENPTkZJR19IVUdFVExCX1BBR0UgaXMgbm90IHNldAotQ09ORklHX1JBTUZTPXkKK0NPTkZJR19DT05GSUdGU19GUz1tCiAKICMKICMgTWlzY2VsbGFuZW91cyBmaWxlc3lzdGVtcwpAQCAtNzE4LDQ0ICs4MDgsNDAgQEAKICMgQ09ORklHX0VGU19GUyBpcyBub3Qgc2V0CiBDT05GSUdfQ1JBTUZTPW0KICMgQ09ORklHX1ZYRlNfRlMgaXMgbm90IHNldAorQ09ORklHX01JTklYX0ZTPXkKIENPTkZJR19IUEZTX0ZTPW0KICMgQ09ORklHX1FOWDRGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CiBDT05GSUdfU1lTVl9GUz1tCiBDT05GSUdfVUZTX0ZTPW0KICMgQ09ORklHX1VGU19GU19XUklURSBpcyBub3Qgc2V0Ci0KLSMKLSMgTmV0d29yayBGaWxlIFN5c3RlbXMKLSMKKyMgQ09ORklHX1VGU19ERUJVRyBpcyBub3Qgc2V0CitDT05GSUdfTkVUV09SS19GSUxFU1lTVEVNUz15CiBDT05GSUdfTkZTX0ZTPXkKIENPTkZJR19ORlNfVjM9eQorIyBDT05GSUdfTkZTX1YzX0FDTCBpcyBub3Qgc2V0CiBDT05GSUdfTkZTX1Y0PXkKICMgQ09ORklHX05GU19ESVJFQ1RJTyBpcyBub3Qgc2V0CiBDT05GSUdfTkZTRD1tCiBDT05GSUdfTkZTRF9WMz15Ci1DT05GSUdfTkZTRF9WND15CisjIENPTkZJR19ORlNEX1YzX0FDTCBpcyBub3Qgc2V0CisjIENPTkZJR19ORlNEX1Y0IGlzIG5vdCBzZXQKIENPTkZJR19ORlNEX1RDUD15CiBDT05GSUdfUk9PVF9ORlM9eQogQ09ORklHX0xPQ0tEPXkKIENPTkZJR19MT0NLRF9WND15CiBDT05GSUdfRVhQT1JURlM9bQorQ09ORklHX05GU19DT01NT049eQogQ09ORklHX1NVTlJQQz15CiBDT05GSUdfU1VOUlBDX0dTUz15CitDT05GSUdfU1VOUlBDX0JJTkQzND15CiBDT05GSUdfUlBDU0VDX0dTU19LUkI1PXkKICMgQ09ORklHX1JQQ1NFQ19HU1NfU1BLTTMgaXMgbm90IHNldAogQ09ORklHX1NNQl9GUz1tCiBDT05GSUdfU01CX05MU19ERUZBVUxUPXkKIENPTkZJR19TTUJfTkxTX1JFTU9URT0iY3A0MzciCiAjIENPTkZJR19DSUZTIGlzIG5vdCBzZXQKLUNPTkZJR19OQ1BfRlM9bQotIyBDT05GSUdfTkNQRlNfUEFDS0VUX1NJR05JTkcgaXMgbm90IHNldAotIyBDT05GSUdfTkNQRlNfSU9DVExfTE9DS0lORyBpcyBub3Qgc2V0Ci0jIENPTkZJR19OQ1BGU19TVFJPTkcgaXMgbm90IHNldAotIyBDT05GSUdfTkNQRlNfTkZTX05TIGlzIG5vdCBzZXQKLSMgQ09ORklHX05DUEZTX09TMl9OUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19OQ1BGU19TTUFMTERPUyBpcyBub3Qgc2V0Ci1DT05GSUdfTkNQRlNfTkxTPXkKLSMgQ09ORklHX05DUEZTX0VYVFJBUyBpcyBub3Qgc2V0CisjIENPTkZJR19OQ1BfRlMgaXMgbm90IHNldAogQ09ORklHX0NPREFfRlM9bQogIyBDT05GSUdfQ09EQV9GU19PTERfQVBJIGlzIG5vdCBzZXQKICMgQ09ORklHX0FGU19GUyBpcyBub3Qgc2V0CkBAIC03NjUsMTAgKzg1MSw3IEBACiAjCiAjIENPTkZJR19QQVJUSVRJT05fQURWQU5DRUQgaXMgbm90IHNldAogQ09ORklHX01TRE9TX1BBUlRJVElPTj15Ci0KLSMKLSMgTmF0aXZlIExhbmd1YWdlIFN1cHBvcnQKLSMKK0NPTkZJR19TWVNWNjhfUEFSVElUSU9OPXkKIENPTkZJR19OTFM9eQogQ09ORklHX05MU19ERUZBVUxUPSJpc284ODU5LTEiCiBDT05GSUdfTkxTX0NPREVQQUdFXzQzNz15CkBAIC04MDksMzUgKzg5Miw0MiBAQAogQ09ORklHX05MU19LT0k4X1I9bQogQ09ORklHX05MU19LT0k4X1U9bQogQ09ORklHX05MU19VVEY4PW0KK0NPTkZJR19ETE09bQorIyBDT05GSUdfRExNX0RFQlVHIGlzIG5vdCBzZXQKIAogIwogIyBLZXJuZWwgaGFja2luZwogIwogIyBDT05GSUdfUFJJTlRLX1RJTUUgaXMgbm90IHNldAotQ09ORklHX0RFQlVHX0tFUk5FTD15CitDT05GSUdfRU5BQkxFX1dBUk5fREVQUkVDQVRFRD15CitDT05GSUdfRU5BQkxFX01VU1RfQ0hFQ0s9eQogQ09ORklHX01BR0lDX1NZU1JRPXkKLUNPTkZJR19MT0dfQlVGX1NISUZUPTE2Ci0jIENPTkZJR19TQ0hFRFNUQVRTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0RFQlVHX1NMQUIgaXMgbm90IHNldAotIyBDT05GSUdfREVCVUdfU1BJTkxPQ0sgaXMgbm90IHNldAotIyBDT05GSUdfREVCVUdfU1BJTkxPQ0tfU0xFRVAgaXMgbm90IHNldAotIyBDT05GSUdfREVCVUdfS09CSkVDVCBpcyBub3Qgc2V0Ci1DT05GSUdfREVCVUdfQlVHVkVSQk9TRT15Ci0jIENPTkZJR19ERUJVR19JTkZPIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VOVVNFRF9TWU1CT0xTIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZSQU1FX1BPSU5URVIgaXMgbm90IHNldAorIyBDT05GSUdfSEVBREVSU19DSEVDSyBpcyBub3Qgc2V0CisjIENPTkZJR19ERUJVR19LRVJORUwgaXMgbm90IHNldAorQ09ORklHX0RFQlVHX0JVR1ZFUkJPU0U9eQorIyBDT05GSUdfU0FNUExFUyBpcyBub3Qgc2V0CiAKICMKICMgU2VjdXJpdHkgb3B0aW9ucwogIwogIyBDT05GSUdfS0VZUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TRUNVUklUWSBpcyBub3Qgc2V0Ci0KLSMKLSMgQ3J5cHRvZ3JhcGhpYyBvcHRpb25zCi0jCisjIENPTkZJR19TRUNVUklUWV9GSUxFX0NBUEFCSUxJVElFUyBpcyBub3Qgc2V0CitDT05GSUdfWE9SX0JMT0NLUz1tCitDT05GSUdfQVNZTkNfQ09SRT1tCitDT05GSUdfQVNZTkNfTUVNQ1BZPW0KK0NPTkZJR19BU1lOQ19YT1I9bQogQ09ORklHX0NSWVBUTz15CitDT05GSUdfQ1JZUFRPX0FMR0FQST15CitDT05GSUdfQ1JZUFRPX0FFQUQ9bQorQ09ORklHX0NSWVBUT19CTEtDSVBIRVI9eQorQ09ORklHX0NSWVBUT19TRVFJVj1tCitDT05GSUdfQ1JZUFRPX0hBU0g9eQorQ09ORklHX0NSWVBUT19NQU5BR0VSPXkKIENPTkZJR19DUllQVE9fSE1BQz15CitDT05GSUdfQ1JZUFRPX1hDQkM9bQogQ09ORklHX0NSWVBUT19OVUxMPW0KIENPTkZJR19DUllQVE9fTUQ0PW0KIENPTkZJR19DUllQVE9fTUQ1PXkKQEAgLTg0Niw5ICs5MzYsMjEgQEAKIENPTkZJR19DUllQVE9fU0hBNTEyPW0KIENPTkZJR19DUllQVE9fV1A1MTI9bQogQ09ORklHX0NSWVBUT19UR1IxOTI9bQorQ09ORklHX0NSWVBUT19HRjEyOE1VTD1tCitDT05GSUdfQ1JZUFRPX0VDQj1tCitDT05GSUdfQ1JZUFRPX0NCQz15CitDT05GSUdfQ1JZUFRPX1BDQkM9bQorQ09ORklHX0NSWVBUT19MUlc9bQorQ09ORklHX0NSWVBUT19YVFM9bQorQ09ORklHX0NSWVBUT19DVFI9bQorQ09ORklHX0NSWVBUT19HQ009bQorQ09ORklHX0NSWVBUT19DQ009bQorQ09ORklHX0NSWVBUT19DUllQVEQ9bQogQ09ORklHX0NSWVBUT19ERVM9eQorQ09ORklHX0NSWVBUT19GQ1JZUFQ9bQogQ09ORklHX0NSWVBUT19CTE9XRklTSD1tCiBDT05GSUdfQ1JZUFRPX1RXT0ZJU0g9bQorQ09ORklHX0NSWVBUT19UV09GSVNIX0NPTU1PTj1tCiBDT05GSUdfQ1JZUFRPX1NFUlBFTlQ9bQogQ09ORklHX0NSWVBUT19BRVM9bQogQ09ORklHX0NSWVBUT19DQVNUNT1tCkBAIC04NTcsMjAgKzk1OSwzNSBAQAogQ09ORklHX0NSWVBUT19BUkM0PW0KIENPTkZJR19DUllQVE9fS0hBWkFEPW0KIENPTkZJR19DUllQVE9fQU5VQklTPW0KK0NPTkZJR19DUllQVE9fU0VFRD1tCitDT05GSUdfQ1JZUFRPX1NBTFNBMjA9bQogQ09ORklHX0NSWVBUT19ERUZMQVRFPW0KIENPTkZJR19DUllQVE9fTUlDSEFFTF9NSUM9bQogQ09ORklHX0NSWVBUT19DUkMzMkM9bQorQ09ORklHX0NSWVBUT19DQU1FTExJQT1tCiBDT05GSUdfQ1JZUFRPX1RFU1Q9bQotCi0jCi0jIEhhcmR3YXJlIGNyeXB0byBkZXZpY2VzCi0jCitDT05GSUdfQ1JZUFRPX0FVVEhFTkM9bQorQ09ORklHX0NSWVBUT19MWk89bQorIyBDT05GSUdfQ1JZUFRPX0hXIGlzIG5vdCBzZXQKIAogIwogIyBMaWJyYXJ5IHJvdXRpbmVzCiAjCitDT05GSUdfQklUUkVWRVJTRT15CiBDT05GSUdfQ1JDX0NDSVRUPW0KK0NPTkZJR19DUkMxNj1tCisjIENPTkZJR19DUkNfSVRVX1QgaXMgbm90IHNldAogQ09ORklHX0NSQzMyPXkKKyMgQ09ORklHX0NSQzcgaXMgbm90IHNldAogQ09ORklHX0xJQkNSQzMyQz1tCiBDT05GSUdfWkxJQl9JTkZMQVRFPXkKIENPTkZJR19aTElCX0RFRkxBVEU9bQorQ09ORklHX0xaT19DT01QUkVTUz1tCitDT05GSUdfTFpPX0RFQ09NUFJFU1M9bQorQ09ORklHX1RFWFRTRUFSQ0g9eQorQ09ORklHX1RFWFRTRUFSQ0hfS01QPW0KK0NPTkZJR19URVhUU0VBUkNIX0JNPW0KK0NPTkZJR19URVhUU0VBUkNIX0ZTTT1tCitDT05GSUdfUExJU1Q9eQorQ09ORklHX0hBU19JT01FTT15CitDT05GSUdfSEFTX0RNQT15CmRpZmYgLS1naXQgYS9hcmNoL202OGsvY29uZmlncy9xNDBfZGVmY29uZmlnIGIvYXJjaC9tNjhrL2NvbmZpZ3MvcTQwX2RlZmNvbmZpZwppbmRleCA4NTYyMzg2Li4xNjU2NThmIDEwMDY0NAotLS0gYS9hcmNoL202OGsvY29uZmlncy9xNDBfZGVmY29uZmlnCisrKyBiL2FyY2gvbTY4ay9jb25maWdzL3E0MF9kZWZjb25maWcKQEAgLTEsNjMgKzEsMTEyIEBACiAjCiAjIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIG1ha2UgY29uZmlnOiBkb24ndCBlZGl0Ci0jIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMTItcmM2LW02OGsKLSMgVHVlIEp1biAgNyAyMDozNDo1OCAyMDA1CisjIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMjUtcmM4CisjIFdlZCBBcHIgIDIgMjA6NDY6MjAgMjAwOAogIwogQ09ORklHX002OEs9eQogQ09ORklHX01NVT15Ci1DT05GSUdfVUlEMTY9eQogQ09ORklHX1JXU0VNX0dFTkVSSUNfU1BJTkxPQ0s9eQorIyBDT05GSUdfQVJDSF9IQVNfSUxPRzJfVTMyIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfSEFTX0lMT0cyX1U2NCBpcyBub3Qgc2V0CitDT05GSUdfR0VORVJJQ19IV0VJR0hUPXkKIENPTkZJR19HRU5FUklDX0NBTElCUkFURV9ERUxBWT15Ci0KLSMKLSMgQ29kZSBtYXR1cml0eSBsZXZlbCBvcHRpb25zCi0jCi1DT05GSUdfRVhQRVJJTUVOVEFMPXkKLUNPTkZJR19DTEVBTl9DT01QSUxFPXkKLUNPTkZJR19CUk9LRU5fT05fU01QPXkKLUNPTkZJR19JTklUX0VOVl9BUkdfTElNSVQ9MzIKK0NPTkZJR19USU1FX0xPV19SRVM9eQorQ09ORklHX0dFTkVSSUNfSU9NQVA9eQorQ09ORklHX0FSQ0hfTUFZX0hBVkVfUENfRkRDPXkKK0NPTkZJR19OT19JT1BPUlQ9eQorIyBDT05GSUdfTk9fRE1BIGlzIG5vdCBzZXQKK0NPTkZJR19BUkNIX1NVUFBPUlRTX0FPVVQ9eQorQ09ORklHX0haPTEwMAorQ09ORklHX0RFRkNPTkZJR19MSVNUPSIvbGliL21vZHVsZXMvJFVOQU1FX1JFTEVBU0UvLmNvbmZpZyIKIAogIwogIyBHZW5lcmFsIHNldHVwCiAjCitDT05GSUdfRVhQRVJJTUVOVEFMPXkKK0NPTkZJR19CUk9LRU5fT05fU01QPXkKK0NPTkZJR19JTklUX0VOVl9BUkdfTElNSVQ9MzIKIENPTkZJR19MT0NBTFZFUlNJT049Ii1xNDAiCitDT05GSUdfTE9DQUxWRVJTSU9OX0FVVE89eQogQ09ORklHX1NXQVA9eQogQ09ORklHX1NZU1ZJUEM9eQorQ09ORklHX1NZU1ZJUENfU1lTQ1RMPXkKIENPTkZJR19QT1NJWF9NUVVFVUU9eQogQ09ORklHX0JTRF9QUk9DRVNTX0FDQ1Q9eQogIyBDT05GSUdfQlNEX1BST0NFU1NfQUNDVF9WMyBpcyBub3Qgc2V0Ci1DT05GSUdfU1lTQ1RMPXkKLUNPTkZJR19BVURJVD15Ci1DT05GSUdfSE9UUExVRz15Ci1DT05GSUdfS09CSkVDVF9VRVZFTlQ9eQorIyBDT05GSUdfVEFTS1NUQVRTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FVRElUIGlzIG5vdCBzZXQKICMgQ09ORklHX0lLQ09ORklHIGlzIG5vdCBzZXQKK0NPTkZJR19MT0dfQlVGX1NISUZUPTE0CisjIENPTkZJR19DR1JPVVBTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NZU0ZTX0RFUFJFQ0FURURfVjIgaXMgbm90IHNldAorQ09ORklHX1JFTEFZPXkKK0NPTkZJR19OQU1FU1BBQ0VTPXkKKyMgQ09ORklHX1VUU19OUyBpcyBub3Qgc2V0CisjIENPTkZJR19JUENfTlMgaXMgbm90IHNldAorIyBDT05GSUdfVVNFUl9OUyBpcyBub3Qgc2V0CisjIENPTkZJR19QSURfTlMgaXMgbm90IHNldAorQ09ORklHX0JMS19ERVZfSU5JVFJEPXkKK0NPTkZJR19JTklUUkFNRlNfU09VUkNFPSIiCisjIENPTkZJR19DQ19PUFRJTUlaRV9GT1JfU0laRSBpcyBub3Qgc2V0CitDT05GSUdfU1lTQ1RMPXkKICMgQ09ORklHX0VNQkVEREVEIGlzIG5vdCBzZXQKK0NPTkZJR19VSUQxNj15CitDT05GSUdfU1lTQ1RMX1NZU0NBTEw9eQogQ09ORklHX0tBTExTWU1TPXkKLSMgQ09ORklHX0tBTExTWU1TX0FMTCBpcyBub3Qgc2V0CiAjIENPTkZJR19LQUxMU1lNU19FWFRSQV9QQVNTIGlzIG5vdCBzZXQKK0NPTkZJR19IT1RQTFVHPXkKIENPTkZJR19QUklOVEs9eQogQ09ORklHX0JVRz15CitDT05GSUdfRUxGX0NPUkU9eQorIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0CiBDT05GSUdfQkFTRV9GVUxMPXkKIENPTkZJR19GVVRFWD15CitDT05GSUdfQU5PTl9JTk9ERVM9eQogQ09ORklHX0VQT0xMPXkKK0NPTkZJR19TSUdOQUxGRD15CitDT05GSUdfVElNRVJGRD15CitDT05GSUdfRVZFTlRGRD15CiBDT05GSUdfU0hNRU09eQotQ09ORklHX0NDX0FMSUdOX0ZVTkNUSU9OUz0wCi1DT05GSUdfQ0NfQUxJR05fTEFCRUxTPTAKLUNPTkZJR19DQ19BTElHTl9MT09QUz0wCi1DT05GSUdfQ0NfQUxJR05fSlVNUFM9MAorQ09ORklHX1ZNX0VWRU5UX0NPVU5URVJTPXkKK0NPTkZJR19TTEFCPXkKKyMgQ09ORklHX1NMVUIgaXMgbm90IHNldAorIyBDT05GSUdfU0xPQiBpcyBub3Qgc2V0CisjIENPTkZJR19QUk9GSUxJTkcgaXMgbm90IHNldAorIyBDT05GSUdfTUFSS0VSUyBpcyBub3Qgc2V0CisjIENPTkZJR19IQVZFX09QUk9GSUxFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hBVkVfS1BST0JFUyBpcyBub3Qgc2V0CisjIENPTkZJR19IQVZFX0tSRVRQUk9CRVMgaXMgbm90IHNldAorQ09ORklHX1BST0NfUEFHRV9NT05JVE9SPXkKK0NPTkZJR19TTEFCSU5GTz15CitDT05GSUdfUlRfTVVURVhFUz15CiAjIENPTkZJR19USU5ZX1NITUVNIGlzIG5vdCBzZXQKIENPTkZJR19CQVNFX1NNQUxMPTAKLQotIwotIyBMb2FkYWJsZSBtb2R1bGUgc3VwcG9ydAotIwogQ09ORklHX01PRFVMRVM9eQogQ09ORklHX01PRFVMRV9VTkxPQUQ9eQogIyBDT05GSUdfTU9EVUxFX0ZPUkNFX1VOTE9BRCBpcyBub3Qgc2V0Ci1DT05GSUdfT0JTT0xFVEVfTU9EUEFSTT15CiAjIENPTkZJR19NT0RWRVJTSU9OUyBpcyBub3Qgc2V0CiAjIENPTkZJR19NT0RVTEVfU1JDVkVSU0lPTl9BTEwgaXMgbm90IHNldAogQ09ORklHX0tNT0Q9eQorQ09ORklHX0JMT0NLPXkKKyMgQ09ORklHX0xCRCBpcyBub3Qgc2V0CisjIENPTkZJR19CTEtfREVWX0lPX1RSQUNFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0xTRiBpcyBub3Qgc2V0CitDT05GSUdfQkxLX0RFVl9CU0c9eQorCisjCisjIElPIFNjaGVkdWxlcnMKKyMKK0NPTkZJR19JT1NDSEVEX05PT1A9eQorQ09ORklHX0lPU0NIRURfQVM9eQorQ09ORklHX0lPU0NIRURfREVBRExJTkU9eQorQ09ORklHX0lPU0NIRURfQ0ZRPXkKK0NPTkZJR19ERUZBVUxUX0FTPXkKKyMgQ09ORklHX0RFRkFVTFRfREVBRExJTkUgaXMgbm90IHNldAorIyBDT05GSUdfREVGQVVMVF9DRlEgaXMgbm90IHNldAorIyBDT05GSUdfREVGQVVMVF9OT09QIGlzIG5vdCBzZXQKK0NPTkZJR19ERUZBVUxUX0lPU0NIRUQ9ImFudGljaXBhdG9yeSIKK0NPTkZJR19DTEFTU0lDX1JDVT15CiAKICMKICMgUGxhdGZvcm0gZGVwZW5kZW50IHNldHVwCkBAIC04MCwxMCArMTI5LDI0IEBACiBDT05GSUdfTTY4MDQwPXkKIENPTkZJR19NNjgwNjA9eQogQ09ORklHX01NVV9NT1RPUk9MQT15Ci1DT05GSUdfTTY4S0ZQVV9FTVU9eQotQ09ORklHX002OEtGUFVfRU1VX0VYVFJBUFJFQz15Ci0jIENPTkZJR19NNjhLRlBVX0VNVV9PTkxZIGlzIG5vdCBzZXQKKyMgQ09ORklHX002OEtGUFVfRU1VIGlzIG5vdCBzZXQKICMgQ09ORklHX0FEVkFOQ0VEIGlzIG5vdCBzZXQKK0NPTkZJR19BUkNIX0RJU0NPTlRJR01FTV9FTkFCTEU9eQorQ09ORklHX05PREVTX1NISUZUPTMKK0NPTkZJR19TRUxFQ1RfTUVNT1JZX01PREVMPXkKKyMgQ09ORklHX0ZMQVRNRU1fTUFOVUFMIGlzIG5vdCBzZXQKK0NPTkZJR19ESVNDT05USUdNRU1fTUFOVUFMPXkKKyMgQ09ORklHX1NQQVJTRU1FTV9NQU5VQUwgaXMgbm90IHNldAorQ09ORklHX0RJU0NPTlRJR01FTT15CitDT05GSUdfRkxBVF9OT0RFX01FTV9NQVA9eQorQ09ORklHX05FRURfTVVMVElQTEVfTk9ERVM9eQorIyBDT05GSUdfU1BBUlNFTUVNX1NUQVRJQyBpcyBub3Qgc2V0CisjIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUF9FTkFCTEUgaXMgbm90IHNldAorQ09ORklHX1NQTElUX1BUTE9DS19DUFVTPTQKKyMgQ09ORklHX1JFU09VUkNFU182NEJJVCBpcyBub3Qgc2V0CitDT05GSUdfWk9ORV9ETUFfRkxBRz0xCitDT05GSUdfQk9VTkNFPXkKK0NPTkZJR19WSVJUX1RPX0JVUz15CiAKICMKICMgR2VuZXJhbCBzZXR1cApAQCAtOTEsMTgyICsxNTQsMTUgQEAKIENPTkZJR19CSU5GTVRfRUxGPXkKIENPTkZJR19CSU5GTVRfQU9VVD1tCiBDT05GSUdfQklORk1UX01JU0M9bQotIyBDT05GSUdfSEVBUlRCRUFUIGlzIG5vdCBzZXQKK0NPTkZJR19IRUFSVEJFQVQ9eQogQ09ORklHX1BST0NfSEFSRFdBUkU9eQogQ09ORklHX0lTQT15CiBDT05GSUdfR0VORVJJQ19JU0FfRE1BPXkKK0NPTkZJR19aT05FX0RNQT15CisjIENPTkZJR19BUkNIX1NVUFBPUlRTX01TSSBpcyBub3Qgc2V0CiAKICMKLSMgRGV2aWNlIERyaXZlcnMKLSMKLQotIwotIyBHZW5lcmljIERyaXZlciBPcHRpb25zCi0jCi1DT05GSUdfU1RBTkRBTE9ORT15Ci1DT05GSUdfUFJFVkVOVF9GSVJNV0FSRV9CVUlMRD15Ci1DT05GSUdfRldfTE9BREVSPW0KLSMgQ09ORklHX0RFQlVHX0RSSVZFUiBpcyBub3Qgc2V0Ci0KLSMKLSMgTWVtb3J5IFRlY2hub2xvZ3kgRGV2aWNlcyAoTVREKQotIwotIyBDT05GSUdfTVREIGlzIG5vdCBzZXQKLQotIwotIyBQYXJhbGxlbCBwb3J0IHN1cHBvcnQKLSMKLSMgQ09ORklHX1BBUlBPUlQgaXMgbm90IHNldAotCi0jCi0jIFBsdWcgYW5kIFBsYXkgc3VwcG9ydAotIwotIyBDT05GSUdfUE5QIGlzIG5vdCBzZXQKLQotIwotIyBCbG9jayBkZXZpY2VzCi0jCi0jIENPTkZJR19CTEtfREVWX0ZEIGlzIG5vdCBzZXQKLSMgQ09ORklHX0JMS19ERVZfQ09XX0NPTU1PTiBpcyBub3Qgc2V0Ci1DT05GSUdfQkxLX0RFVl9MT09QPXkKLUNPTkZJR19CTEtfREVWX0NSWVBUT0xPT1A9bQotQ09ORklHX0JMS19ERVZfTkJEPW0KLUNPTkZJR19CTEtfREVWX1JBTT15Ci1DT05GSUdfQkxLX0RFVl9SQU1fQ09VTlQ9MTYKLUNPTkZJR19CTEtfREVWX1JBTV9TSVpFPTQwOTYKLUNPTkZJR19CTEtfREVWX0lOSVRSRD15Ci1DT05GSUdfSU5JVFJBTUZTX1NPVVJDRT0iIgotQ09ORklHX0NEUk9NX1BLVENEVkQ9bQotQ09ORklHX0NEUk9NX1BLVENEVkRfQlVGRkVSUz04Ci0jIENPTkZJR19DRFJPTV9QS1RDRFZEX1dDQUNIRSBpcyBub3Qgc2V0Ci0KLSMKLSMgSU8gU2NoZWR1bGVycwotIwotQ09ORklHX0lPU0NIRURfTk9PUD15Ci1DT05GSUdfSU9TQ0hFRF9BUz15Ci1DT05GSUdfSU9TQ0hFRF9ERUFETElORT15Ci1DT05GSUdfSU9TQ0hFRF9DRlE9eQotQ09ORklHX0FUQV9PVkVSX0VUSD1tCi0KLSMKLSMgQVRBL0FUQVBJL01GTS9STEwgc3VwcG9ydAotIwotQ09ORklHX0lERT15Ci1DT05GSUdfQkxLX0RFVl9JREU9eQotCi0jCi0jIFBsZWFzZSBzZWUgRG9jdW1lbnRhdGlvbi9pZGUudHh0IGZvciBoZWxwL2luZm8gb24gSURFIGRyaXZlcwotIwotIyBDT05GSUdfQkxLX0RFVl9JREVfU0FUQSBpcyBub3Qgc2V0Ci1DT05GSUdfQkxLX0RFVl9JREVESVNLPXkKLSMgQ09ORklHX0lERURJU0tfTVVMVElfTU9ERSBpcyBub3Qgc2V0Ci1DT05GSUdfQkxLX0RFVl9JREVDRD15Ci1DT05GSUdfQkxLX0RFVl9JREVUQVBFPW0KLUNPTkZJR19CTEtfREVWX0lERUZMT1BQWT1tCi0jIENPTkZJR19CTEtfREVWX0lERVNDU0kgaXMgbm90IHNldAotIyBDT05GSUdfSURFX1RBU0tfSU9DVEwgaXMgbm90IHNldAotCi0jCi0jIElERSBjaGlwc2V0IHN1cHBvcnQvYnVnZml4ZXMKLSMKLUNPTkZJR19JREVfR0VORVJJQz15Ci0jIENPTkZJR19JREVfQVJNIGlzIG5vdCBzZXQKLUNPTkZJR19CTEtfREVWX1E0MElERT15Ci0jIENPTkZJR19JREVfQ0hJUFNFVFMgaXMgbm90IHNldAotIyBDT05GSUdfQkxLX0RFVl9JREVETUEgaXMgbm90IHNldAotIyBDT05GSUdfSURFRE1BX0FVVE8gaXMgbm90IHNldAotIyBDT05GSUdfQkxLX0RFVl9IRCBpcyBub3Qgc2V0Ci0KLSMKLSMgU0NTSSBkZXZpY2Ugc3VwcG9ydAotIwotQ09ORklHX1NDU0k9eQotQ09ORklHX1NDU0lfUFJPQ19GUz15Ci0KLSMKLSMgU0NTSSBzdXBwb3J0IHR5cGUgKGRpc2ssIHRhcGUsIENELVJPTSkKLSMKLUNPTkZJR19CTEtfREVWX1NEPXkKLUNPTkZJR19DSFJfREVWX1NUPW0KLSMgQ09ORklHX0NIUl9ERVZfT1NTVCBpcyBub3Qgc2V0Ci1DT05GSUdfQkxLX0RFVl9TUj15Ci1DT05GSUdfQkxLX0RFVl9TUl9WRU5ET1I9eQotQ09ORklHX0NIUl9ERVZfU0c9bQotCi0jCi0jIFNvbWUgU0NTSSBkZXZpY2VzIChlLmcuIENEIGp1a2Vib3gpIHN1cHBvcnQgbXVsdGlwbGUgTFVOcwotIwotIyBDT05GSUdfU0NTSV9NVUxUSV9MVU4gaXMgbm90IHNldAotQ09ORklHX1NDU0lfQ09OU1RBTlRTPXkKLSMgQ09ORklHX1NDU0lfTE9HR0lORyBpcyBub3Qgc2V0Ci0KLSMKLSMgU0NTSSBUcmFuc3BvcnQgQXR0cmlidXRlcwotIwotIyBDT05GSUdfU0NTSV9TUElfQVRUUlMgaXMgbm90IHNldAotIyBDT05GSUdfU0NTSV9GQ19BVFRSUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19TQ1NJX0lTQ1NJX0FUVFJTIGlzIG5vdCBzZXQKLQotIwotIyBTQ1NJIGxvdy1sZXZlbCBkcml2ZXJzCi0jCi0jIENPTkZJR19TQ1NJX0FIQTE1MlggaXMgbm90IHNldAotIyBDT05GSUdfU0NTSV9BSUM3WFhYX09MRCBpcyBub3Qgc2V0Ci0jIENPTkZJR19TQ1NJX0lOMjAwMCBpcyBub3Qgc2V0Ci0jIENPTkZJR19TQ1NJX1NBVEEgaXMgbm90IHNldAotIyBDT05GSUdfU0NTSV9EVEMzMjgwIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NDU0lfRlVUVVJFX0RPTUFJTiBpcyBub3Qgc2V0Ci0jIENPTkZJR19TQ1NJX0dFTkVSSUNfTkNSNTM4MCBpcyBub3Qgc2V0Ci0jIENPTkZJR19TQ1NJX0dFTkVSSUNfTkNSNTM4MF9NTUlPIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NDU0lfTkNSNTNDNDA2QSBpcyBub3Qgc2V0Ci0jIENPTkZJR19TQ1NJX1BBUzE2IGlzIG5vdCBzZXQKLSMgQ09ORklHX1NDU0lfUFNJMjQwSSBpcyBub3Qgc2V0Ci0jIENPTkZJR19TQ1NJX1FMT0dJQ19GQVMgaXMgbm90IHNldAotIyBDT05GSUdfU0NTSV9TWU01M0M0MTYgaXMgbm90IHNldAotIyBDT05GSUdfU0NTSV9UMTI4IGlzIG5vdCBzZXQKLSMgQ09ORklHX1NDU0lfREVCVUcgaXMgbm90IHNldAotCi0jCi0jIE9sZCBDRC1ST00gZHJpdmVycyAobm90IFNDU0ksIG5vdCBJREUpCi0jCi0jIENPTkZJR19DRF9OT19JREVTQ1NJIGlzIG5vdCBzZXQKLQotIwotIyBNdWx0aS1kZXZpY2Ugc3VwcG9ydCAoUkFJRCBhbmQgTFZNKQotIwotQ09ORklHX01EPXkKLUNPTkZJR19CTEtfREVWX01EPW0KLUNPTkZJR19NRF9MSU5FQVI9bQotQ09ORklHX01EX1JBSUQwPW0KLUNPTkZJR19NRF9SQUlEMT1tCi0jIENPTkZJR19NRF9SQUlEMTAgaXMgbm90IHNldAotQ09ORklHX01EX1JBSUQ1PW0KLUNPTkZJR19NRF9SQUlENj1tCi1DT05GSUdfTURfTVVMVElQQVRIPW0KLSMgQ09ORklHX01EX0ZBVUxUWSBpcyBub3Qgc2V0Ci1DT05GSUdfQkxLX0RFVl9ETT1tCi1DT05GSUdfRE1fQ1JZUFQ9bQotQ09ORklHX0RNX1NOQVBTSE9UPW0KLUNPTkZJR19ETV9NSVJST1I9bQotQ09ORklHX0RNX1pFUk89bQotQ09ORklHX0RNX01VTFRJUEFUSD1tCi1DT05GSUdfRE1fTVVMVElQQVRIX0VNQz1tCi0KLSMKLSMgRnVzaW9uIE1QVCBkZXZpY2Ugc3VwcG9ydAotIwotCi0jCi0jIElFRUUgMTM5NCAoRmlyZVdpcmUpIHN1cHBvcnQKLSMKLQotIwotIyBJMk8gZGV2aWNlIHN1cHBvcnQKLSMKLQotIwotIyBOZXR3b3JraW5nIHN1cHBvcnQKKyMgTmV0d29ya2luZwogIwogQ09ORklHX05FVD15CiAKQEAgLTI3NiwxNCArMTcyLDE4IEBACiBDT05GSUdfUEFDS0VUPXkKICMgQ09ORklHX1BBQ0tFVF9NTUFQIGlzIG5vdCBzZXQKIENPTkZJR19VTklYPXkKK0NPTkZJR19YRlJNPXkKKyMgQ09ORklHX1hGUk1fVVNFUiBpcyBub3Qgc2V0CisjIENPTkZJR19YRlJNX1NVQl9QT0xJQ1kgaXMgbm90IHNldAorQ09ORklHX1hGUk1fTUlHUkFURT15CisjIENPTkZJR19YRlJNX1NUQVRJU1RJQ1MgaXMgbm90IHNldAogQ09ORklHX05FVF9LRVk9eQorQ09ORklHX05FVF9LRVlfTUlHUkFURT15CiBDT05GSUdfSU5FVD15CiAjIENPTkZJR19JUF9NVUxUSUNBU1QgaXMgbm90IHNldAogIyBDT05GSUdfSVBfQURWQU5DRURfUk9VVEVSIGlzIG5vdCBzZXQKLUNPTkZJR19JUF9QTlA9eQotQ09ORklHX0lQX1BOUF9ESENQPXkKLUNPTkZJR19JUF9QTlBfQk9PVFA9eQotQ09ORklHX0lQX1BOUF9SQVJQPXkKK0NPTkZJR19JUF9GSUJfSEFTSD15CisjIENPTkZJR19JUF9QTlAgaXMgbm90IHNldAogQ09ORklHX05FVF9JUElQPW0KIENPTkZJR19ORVRfSVBHUkU9bQogIyBDT05GSUdfQVJQRCBpcyBub3Qgc2V0CkBAIC0yOTEsMTQ1ICsxOTEsMTk5IEBACiBDT05GSUdfSU5FVF9BSD1tCiBDT05GSUdfSU5FVF9FU1A9bQogQ09ORklHX0lORVRfSVBDT01QPW0KK0NPTkZJR19JTkVUX1hGUk1fVFVOTkVMPW0KIENPTkZJR19JTkVUX1RVTk5FTD1tCi1DT05GSUdfSVBfVENQRElBRz1tCi1DT05GSUdfSVBfVENQRElBR19JUFY2PXkKLQotIwotIyBJUDogVmlydHVhbCBTZXJ2ZXIgQ29uZmlndXJhdGlvbgotIworQ09ORklHX0lORVRfWEZSTV9NT0RFX1RSQU5TUE9SVD1tCitDT05GSUdfSU5FVF9YRlJNX01PREVfVFVOTkVMPW0KK0NPTkZJR19JTkVUX1hGUk1fTU9ERV9CRUVUPW0KK0NPTkZJR19JTkVUX0xSTz1tCitDT05GSUdfSU5FVF9ESUFHPW0KK0NPTkZJR19JTkVUX1RDUF9ESUFHPW0KKyMgQ09ORklHX1RDUF9DT05HX0FEVkFOQ0VEIGlzIG5vdCBzZXQKK0NPTkZJR19UQ1BfQ09OR19DVUJJQz15CitDT05GSUdfREVGQVVMVF9UQ1BfQ09ORz0iY3ViaWMiCisjIENPTkZJR19UQ1BfTUQ1U0lHIGlzIG5vdCBzZXQKICMgQ09ORklHX0lQX1ZTIGlzIG5vdCBzZXQKIENPTkZJR19JUFY2PW0KIENPTkZJR19JUFY2X1BSSVZBQ1k9eQorQ09ORklHX0lQVjZfUk9VVEVSX1BSRUY9eQorQ09ORklHX0lQVjZfUk9VVEVfSU5GTz15CisjIENPTkZJR19JUFY2X09QVElNSVNUSUNfREFEIGlzIG5vdCBzZXQKIENPTkZJR19JTkVUNl9BSD1tCiBDT05GSUdfSU5FVDZfRVNQPW0KIENPTkZJR19JTkVUNl9JUENPTVA9bQorIyBDT05GSUdfSVBWNl9NSVA2IGlzIG5vdCBzZXQKK0NPTkZJR19JTkVUNl9YRlJNX1RVTk5FTD1tCiBDT05GSUdfSU5FVDZfVFVOTkVMPW0KK0NPTkZJR19JTkVUNl9YRlJNX01PREVfVFJBTlNQT1JUPW0KK0NPTkZJR19JTkVUNl9YRlJNX01PREVfVFVOTkVMPW0KK0NPTkZJR19JTkVUNl9YRlJNX01PREVfQkVFVD1tCitDT05GSUdfSU5FVDZfWEZSTV9NT0RFX1JPVVRFT1BUSU1JWkFUSU9OPW0KK0NPTkZJR19JUFY2X1NJVD1tCiBDT05GSUdfSVBWNl9UVU5ORUw9bQorIyBDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVMgaXMgbm90IHNldAorIyBDT05GSUdfTkVUV09SS19TRUNNQVJLIGlzIG5vdCBzZXQKIENPTkZJR19ORVRGSUxURVI9eQogIyBDT05GSUdfTkVURklMVEVSX0RFQlVHIGlzIG5vdCBzZXQKK0NPTkZJR19ORVRGSUxURVJfQURWQU5DRUQ9eQorCisjCisjIENvcmUgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24KKyMKK0NPTkZJR19ORVRGSUxURVJfTkVUTElOSz1tCitDT05GSUdfTkVURklMVEVSX05FVExJTktfUVVFVUU9bQorQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LX0xPRz1tCitDT05GSUdfTkZfQ09OTlRSQUNLPW0KK0NPTkZJR19ORl9DVF9BQ0NUPXkKK0NPTkZJR19ORl9DT05OVFJBQ0tfTUFSSz15CisjIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTIGlzIG5vdCBzZXQKK0NPTkZJR19ORl9DVF9QUk9UT19HUkU9bQorQ09ORklHX05GX0NUX1BST1RPX1NDVFA9bQorQ09ORklHX05GX0NUX1BST1RPX1VEUExJVEU9bQorQ09ORklHX05GX0NPTk5UUkFDS19BTUFOREE9bQorQ09ORklHX05GX0NPTk5UUkFDS19GVFA9bQorQ09ORklHX05GX0NPTk5UUkFDS19IMzIzPW0KK0NPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW0KK0NPTkZJR19ORl9DT05OVFJBQ0tfTkVUQklPU19OUz1tCitDT05GSUdfTkZfQ09OTlRSQUNLX1BQVFA9bQorQ09ORklHX05GX0NPTk5UUkFDS19TQU5FPW0KK0NPTkZJR19ORl9DT05OVFJBQ0tfU0lQPW0KK0NPTkZJR19ORl9DT05OVFJBQ0tfVEZUUD1tCisjIENPTkZJR19ORl9DVF9ORVRMSU5LIGlzIG5vdCBzZXQKK0NPTkZJR19ORVRGSUxURVJfWFRBQkxFUz1tCitDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9DTEFTU0lGWT1tCitDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9DT05OTUFSSz1tCitDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9EU0NQPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX01BUks9bQorQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfTkZRVUVVRT1tCitDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9ORkxPRz1tCitDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9OT1RSQUNLPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX1JBVEVFU1Q9bQorQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfVFJBQ0U9bQorQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfVENQTVNTPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX1RDUE9QVFNUUklQPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfQ09NTUVOVD1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0NPTk5CWVRFUz1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0NPTk5MSU1JVD1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0NPTk5NQVJLPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfQ09OTlRSQUNLPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfRENDUD1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0RTQ1A9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9FU1A9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9IRUxQRVI9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9JUFJBTkdFPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfTEVOR1RIPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfTElNSVQ9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9NQUM9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9NQVJLPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfT1dORVI9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9QT0xJQ1k9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9NVUxUSVBPUlQ9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9QS1RUWVBFPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfUVVPVEE9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9SQVRFRVNUPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfUkVBTE09bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9TQ1RQPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfU1RBVEU9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9TVEFUSVNUSUM9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9TVFJJTkc9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9UQ1BNU1M9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9USU1FPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfVTMyPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfSEFTSExJTUlUPW0KIAogIwogIyBJUDogTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24KICMKLUNPTkZJR19JUF9ORl9DT05OVFJBQ0s9bQotIyBDT05GSUdfSVBfTkZfQ1RfQUNDVCBpcyBub3Qgc2V0Ci1DT05GSUdfSVBfTkZfQ09OTlRSQUNLX01BUks9eQotIyBDT05GSUdfSVBfTkZfQ1RfUFJPVE9fU0NUUCBpcyBub3Qgc2V0Ci1DT05GSUdfSVBfTkZfRlRQPW0KLUNPTkZJR19JUF9ORl9JUkM9bQotQ09ORklHX0lQX05GX1RGVFA9bQotQ09ORklHX0lQX05GX0FNQU5EQT1tCitDT05GSUdfTkZfQ09OTlRSQUNLX0lQVjQ9bQorQ09ORklHX05GX0NPTk5UUkFDS19QUk9DX0NPTVBBVD15CiBDT05GSUdfSVBfTkZfUVVFVUU9bQogQ09ORklHX0lQX05GX0lQVEFCTEVTPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9MSU1JVD1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfSVBSQU5HRT1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfTUFDPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9QS1RUWVBFPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9NQVJLPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9NVUxUSVBPUlQ9bQotQ09ORklHX0lQX05GX01BVENIX1RPUz1tCiBDT05GSUdfSVBfTkZfTUFUQ0hfUkVDRU5UPW0KIENPTkZJR19JUF9ORl9NQVRDSF9FQ049bQotQ09ORklHX0lQX05GX01BVENIX0RTQ1A9bQotQ09ORklHX0lQX05GX01BVENIX0FIX0VTUD1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfTEVOR1RIPW0KK0NPTkZJR19JUF9ORl9NQVRDSF9BSD1tCiBDT05GSUdfSVBfTkZfTUFUQ0hfVFRMPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9UQ1BNU1M9bQotQ09ORklHX0lQX05GX01BVENIX0hFTFBFUj1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfU1RBVEU9bQotQ09ORklHX0lQX05GX01BVENIX0NPTk5UUkFDSz1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfT1dORVI9bQogQ09ORklHX0lQX05GX01BVENIX0FERFJUWVBFPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9SRUFMTT1tCi0jIENPTkZJR19JUF9ORl9NQVRDSF9TQ1RQIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lQX05GX01BVENIX0NPTU1FTlQgaXMgbm90IHNldAotQ09ORklHX0lQX05GX01BVENIX0NPTk5NQVJLPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9IQVNITElNSVQ9bQogQ09ORklHX0lQX05GX0ZJTFRFUj1tCiBDT05GSUdfSVBfTkZfVEFSR0VUX1JFSkVDVD1tCiBDT05GSUdfSVBfTkZfVEFSR0VUX0xPRz1tCiBDT05GSUdfSVBfTkZfVEFSR0VUX1VMT0c9bQotQ09ORklHX0lQX05GX1RBUkdFVF9UQ1BNU1M9bQotQ09ORklHX0lQX05GX05BVD1tCi1DT05GSUdfSVBfTkZfTkFUX05FRURFRD15CitDT05GSUdfTkZfTkFUPW0KK0NPTkZJR19ORl9OQVRfTkVFREVEPXkKIENPTkZJR19JUF9ORl9UQVJHRVRfTUFTUVVFUkFERT1tCiBDT05GSUdfSVBfTkZfVEFSR0VUX1JFRElSRUNUPW0KIENPTkZJR19JUF9ORl9UQVJHRVRfTkVUTUFQPW0KLUNPTkZJR19JUF9ORl9UQVJHRVRfU0FNRT1tCi1DT05GSUdfSVBfTkZfTkFUX1NOTVBfQkFTSUM9bQotQ09ORklHX0lQX05GX05BVF9JUkM9bQotQ09ORklHX0lQX05GX05BVF9GVFA9bQotQ09ORklHX0lQX05GX05BVF9URlRQPW0KLUNPTkZJR19JUF9ORl9OQVRfQU1BTkRBPW0KK0NPTkZJR19ORl9OQVRfU05NUF9CQVNJQz1tCitDT05GSUdfTkZfTkFUX1BST1RPX0dSRT1tCitDT05GSUdfTkZfTkFUX0ZUUD1tCitDT05GSUdfTkZfTkFUX0lSQz1tCitDT05GSUdfTkZfTkFUX1RGVFA9bQorQ09ORklHX05GX05BVF9BTUFOREE9bQorQ09ORklHX05GX05BVF9QUFRQPW0KK0NPTkZJR19ORl9OQVRfSDMyMz1tCitDT05GSUdfTkZfTkFUX1NJUD1tCiBDT05GSUdfSVBfTkZfTUFOR0xFPW0KLUNPTkZJR19JUF9ORl9UQVJHRVRfVE9TPW0KIENPTkZJR19JUF9ORl9UQVJHRVRfRUNOPW0KLUNPTkZJR19JUF9ORl9UQVJHRVRfRFNDUD1tCi1DT05GSUdfSVBfTkZfVEFSR0VUX01BUks9bQotQ09ORklHX0lQX05GX1RBUkdFVF9DTEFTU0lGWT1tCi1DT05GSUdfSVBfTkZfVEFSR0VUX0NPTk5NQVJLPW0KLSMgQ09ORklHX0lQX05GX1RBUkdFVF9DTFVTVEVSSVAgaXMgbm90IHNldAorQ09ORklHX0lQX05GX1RBUkdFVF9UVEw9bQorQ09ORklHX0lQX05GX1RBUkdFVF9DTFVTVEVSSVA9bQogQ09ORklHX0lQX05GX1JBVz1tCi1DT05GSUdfSVBfTkZfVEFSR0VUX05PVFJBQ0s9bQogQ09ORklHX0lQX05GX0FSUFRBQkxFUz1tCiBDT05GSUdfSVBfTkZfQVJQRklMVEVSPW0KIENPTkZJR19JUF9ORl9BUlBfTUFOR0xFPW0KIAogIwotIyBJUHY2OiBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvbiAoRVhQRVJJTUVOVEFMKQorIyBJUHY2OiBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvbgogIworQ09ORklHX05GX0NPTk5UUkFDS19JUFY2PW0KIENPTkZJR19JUDZfTkZfUVVFVUU9bQogQ09ORklHX0lQNl9ORl9JUFRBQkxFUz1tCi1DT05GSUdfSVA2X05GX01BVENIX0xJTUlUPW0KLUNPTkZJR19JUDZfTkZfTUFUQ0hfTUFDPW0KIENPTkZJR19JUDZfTkZfTUFUQ0hfUlQ9bQogQ09ORklHX0lQNl9ORl9NQVRDSF9PUFRTPW0KIENPTkZJR19JUDZfTkZfTUFUQ0hfRlJBRz1tCiBDT05GSUdfSVA2X05GX01BVENIX0hMPW0KLUNPTkZJR19JUDZfTkZfTUFUQ0hfTVVMVElQT1JUPW0KLUNPTkZJR19JUDZfTkZfTUFUQ0hfT1dORVI9bQotQ09ORklHX0lQNl9ORl9NQVRDSF9NQVJLPW0KIENPTkZJR19JUDZfTkZfTUFUQ0hfSVBWNkhFQURFUj1tCi1DT05GSUdfSVA2X05GX01BVENIX0FIRVNQPW0KLUNPTkZJR19JUDZfTkZfTUFUQ0hfTEVOR1RIPW0KK0NPTkZJR19JUDZfTkZfTUFUQ0hfQUg9bQorQ09ORklHX0lQNl9ORl9NQVRDSF9NSD1tCiBDT05GSUdfSVA2X05GX01BVENIX0VVSTY0PW0KIENPTkZJR19JUDZfTkZfRklMVEVSPW0KIENPTkZJR19JUDZfTkZfVEFSR0VUX0xPRz1tCitDT05GSUdfSVA2X05GX1RBUkdFVF9SRUpFQ1Q9bQogQ09ORklHX0lQNl9ORl9NQU5HTEU9bQotQ09ORklHX0lQNl9ORl9UQVJHRVRfTUFSSz1tCitDT05GSUdfSVA2X05GX1RBUkdFVF9ITD1tCiBDT05GSUdfSVA2X05GX1JBVz1tCi1DT05GSUdfWEZSTT15Ci0jIENPTkZJR19YRlJNX1VTRVIgaXMgbm90IHNldAorQ09ORklHX0lQX0RDQ1A9bQorQ09ORklHX0lORVRfRENDUF9ESUFHPW0KK0NPTkZJR19JUF9EQ0NQX0FDS1ZFQz15CiAKICMKLSMgU0NUUCBDb25maWd1cmF0aW9uIChFWFBFUklNRU5UQUwpCisjIERDQ1AgQ0NJRHMgQ29uZmlndXJhdGlvbiAoRVhQRVJJTUVOVEFMKQogIworQ09ORklHX0lQX0RDQ1BfQ0NJRDI9bQorIyBDT05GSUdfSVBfRENDUF9DQ0lEMl9ERUJVRyBpcyBub3Qgc2V0CitDT05GSUdfSVBfRENDUF9DQ0lEMz1tCisjIENPTkZJR19JUF9EQ0NQX0NDSUQzX0RFQlVHIGlzIG5vdCBzZXQKK0NPTkZJR19JUF9EQ0NQX0NDSUQzX1JUTz0xMDAKK0NPTkZJR19JUF9EQ0NQX1RGUkNfTElCPW0KIENPTkZJR19JUF9TQ1RQPW0KICMgQ09ORklHX1NDVFBfREJHX01TRyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1RQX0RCR19PQkpDTlQgaXMgbm90IHNldAogIyBDT05GSUdfU0NUUF9ITUFDX05PTkUgaXMgbm90IHNldAogIyBDT05GSUdfU0NUUF9ITUFDX1NIQTEgaXMgbm90IHNldAogQ09ORklHX1NDVFBfSE1BQ19NRDU9eQorIyBDT05GSUdfVElQQyBpcyBub3Qgc2V0CiAjIENPTkZJR19BVE0gaXMgbm90IHNldAogIyBDT05GSUdfQlJJREdFIGlzIG5vdCBzZXQKICMgQ09ORklHX1ZMQU5fODAyMVEgaXMgbm90IHNldAogIyBDT05GSUdfREVDTkVUIGlzIG5vdCBzZXQKIENPTkZJR19MTEM9bQogIyBDT05GSUdfTExDMiBpcyBub3Qgc2V0Ci1DT05GSUdfSVBYPW0KLSMgQ09ORklHX0lQWF9JTlRFUk4gaXMgbm90IHNldAorIyBDT05GSUdfSVBYIGlzIG5vdCBzZXQKIENPTkZJR19BVEFMSz1tCiAjIENPTkZJR19ERVZfQVBQTEVUQUxLIGlzIG5vdCBzZXQKICMgQ09ORklHX1gyNSBpcyBub3Qgc2V0CiAjIENPTkZJR19MQVBCIGlzIG5vdCBzZXQKLSMgQ09ORklHX05FVF9ESVZFUlQgaXMgbm90IHNldAogIyBDT05GSUdfRUNPTkVUIGlzIG5vdCBzZXQKICMgQ09ORklHX1dBTl9ST1VURVIgaXMgbm90IHNldAotCi0jCi0jIFFvUyBhbmQvb3IgZmFpciBxdWV1ZWluZwotIwogIyBDT05GSUdfTkVUX1NDSEVEIGlzIG5vdCBzZXQKIENPTkZJR19ORVRfQ0xTX1JPVVRFPXkKIApAQCAtNDM3LDI5ICszOTEsMTk1IEBACiAjIE5ldHdvcmsgdGVzdGluZwogIwogIyBDT05GSUdfTkVUX1BLVEdFTiBpcyBub3Qgc2V0Ci1DT05GSUdfTkVUUE9MTD15Ci0jIENPTkZJR19ORVRQT0xMX1JYIGlzIG5vdCBzZXQKLSMgQ09ORklHX05FVFBPTExfVFJBUCBpcyBub3Qgc2V0Ci1DT05GSUdfTkVUX1BPTExfQ09OVFJPTExFUj15CiAjIENPTkZJR19IQU1SQURJTyBpcyBub3Qgc2V0CisjIENPTkZJR19DQU4gaXMgbm90IHNldAogIyBDT05GSUdfSVJEQSBpcyBub3Qgc2V0CiAjIENPTkZJR19CVCBpcyBub3Qgc2V0CisjIENPTkZJR19BRl9SWFJQQyBpcyBub3Qgc2V0CisKKyMKKyMgV2lyZWxlc3MKKyMKKyMgQ09ORklHX0NGRzgwMjExIGlzIG5vdCBzZXQKK0NPTkZJR19XSVJFTEVTU19FWFQ9eQorIyBDT05GSUdfTUFDODAyMTEgaXMgbm90IHNldAorQ09ORklHX0lFRUU4MDIxMT1tCisjIENPTkZJR19JRUVFODAyMTFfREVCVUcgaXMgbm90IHNldAorQ09ORklHX0lFRUU4MDIxMV9DUllQVF9XRVA9bQorQ09ORklHX0lFRUU4MDIxMV9DUllQVF9DQ01QPW0KK0NPTkZJR19JRUVFODAyMTFfQ1JZUFRfVEtJUD1tCitDT05GSUdfSUVFRTgwMjExX1NPRlRNQUM9bQorIyBDT05GSUdfSUVFRTgwMjExX1NPRlRNQUNfREVCVUcgaXMgbm90IHNldAorIyBDT05GSUdfUkZLSUxMIGlzIG5vdCBzZXQKKyMgQ09ORklHX05FVF85UCBpcyBub3Qgc2V0CisKKyMKKyMgRGV2aWNlIERyaXZlcnMKKyMKKworIworIyBHZW5lcmljIERyaXZlciBPcHRpb25zCisjCitDT05GSUdfVUVWRU5UX0hFTFBFUl9QQVRIPSIvc2Jpbi9ob3RwbHVnIgorQ09ORklHX1NUQU5EQUxPTkU9eQorQ09ORklHX1BSRVZFTlRfRklSTVdBUkVfQlVJTEQ9eQorQ09ORklHX0ZXX0xPQURFUj1tCisjIENPTkZJR19TWVNfSFlQRVJWSVNPUiBpcyBub3Qgc2V0CitDT05GSUdfQ09OTkVDVE9SPW0KKyMgQ09ORklHX01URCBpcyBub3Qgc2V0CisjIENPTkZJR19QQVJQT1JUIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BOUCBpcyBub3Qgc2V0CitDT05GSUdfQkxLX0RFVj15CisjIENPTkZJR19CTEtfREVWX0ZEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JMS19ERVZfQ09XX0NPTU1PTiBpcyBub3Qgc2V0CitDT05GSUdfQkxLX0RFVl9MT09QPXkKK0NPTkZJR19CTEtfREVWX0NSWVBUT0xPT1A9bQorQ09ORklHX0JMS19ERVZfTkJEPW0KK0NPTkZJR19CTEtfREVWX1JBTT15CitDT05GSUdfQkxLX0RFVl9SQU1fQ09VTlQ9MTYKK0NPTkZJR19CTEtfREVWX1JBTV9TSVpFPTQwOTYKKyMgQ09ORklHX0JMS19ERVZfWElQIGlzIG5vdCBzZXQKK0NPTkZJR19DRFJPTV9QS1RDRFZEPW0KK0NPTkZJR19DRFJPTV9QS1RDRFZEX0JVRkZFUlM9OAorIyBDT05GSUdfQ0RST01fUEtUQ0RWRF9XQ0FDSEUgaXMgbm90IHNldAorQ09ORklHX0FUQV9PVkVSX0VUSD1tCitDT05GSUdfTUlTQ19ERVZJQ0VTPXkKKyMgQ09ORklHX0VFUFJPTV85M0NYNiBpcyBub3Qgc2V0CisjIENPTkZJR19FTkNMT1NVUkVfU0VSVklDRVMgaXMgbm90IHNldAorQ09ORklHX0hBVkVfSURFPXkKK0NPTkZJR19JREU9eQorQ09ORklHX0JMS19ERVZfSURFPXkKKworIworIyBQbGVhc2Ugc2VlIERvY3VtZW50YXRpb24vaWRlL2lkZS50eHQgZm9yIGhlbHAvaW5mbyBvbiBJREUgZHJpdmVzCisjCisjIENPTkZJR19CTEtfREVWX0lERV9TQVRBIGlzIG5vdCBzZXQKK0NPTkZJR19CTEtfREVWX0lERURJU0s9eQorIyBDT05GSUdfSURFRElTS19NVUxUSV9NT0RFIGlzIG5vdCBzZXQKK0NPTkZJR19CTEtfREVWX0lERUNEPXkKK0NPTkZJR19CTEtfREVWX0lERUNEX1ZFUkJPU0VfRVJST1JTPXkKKyMgQ09ORklHX0JMS19ERVZfSURFVEFQRSBpcyBub3Qgc2V0CitDT05GSUdfQkxLX0RFVl9JREVGTE9QUFk9bQorIyBDT05GSUdfQkxLX0RFVl9JREVTQ1NJIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lERV9UQVNLX0lPQ1RMIGlzIG5vdCBzZXQKK0NPTkZJR19JREVfUFJPQ19GUz15CisKKyMKKyMgSURFIGNoaXBzZXQgc3VwcG9ydC9idWdmaXhlcworIworIyBDT05GSUdfSURFX0dFTkVSSUMgaXMgbm90IHNldAorIyBDT05GSUdfQkxLX0RFVl9QTEFURk9STSBpcyBub3Qgc2V0CitDT05GSUdfQkxLX0RFVl9RNDBJREU9eQorCisjCisjIE90aGVyIElERSBjaGlwc2V0cyBzdXBwb3J0CisjCisKKyMKKyMgTm90ZTogbW9zdCBvZiB0aGVzZSBhbHNvIHJlcXVpcmUgc3BlY2lhbCBrZXJuZWwgYm9vdCBwYXJhbWV0ZXJzCisjCisjIENPTkZJR19CTEtfREVWXzREUklWRVMgaXMgbm90IHNldAorIyBDT05GSUdfQkxLX0RFVl9BTEkxNFhYIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JMS19ERVZfRFRDMjI3OCBpcyBub3Qgc2V0CisjIENPTkZJR19CTEtfREVWX0hUNjU2MEIgaXMgbm90IHNldAorIyBDT05GSUdfQkxLX0RFVl9RRDY1WFggaXMgbm90IHNldAorIyBDT05GSUdfQkxLX0RFVl9VTUM4NjcyIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JMS19ERVZfSURFRE1BIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lERV9BUkNIX09CU09MRVRFX0lOSVQgaXMgbm90IHNldAorIyBDT05GSUdfQkxLX0RFVl9IRCBpcyBub3Qgc2V0CisKKyMKKyMgU0NTSSBkZXZpY2Ugc3VwcG9ydAorIworQ09ORklHX1JBSURfQVRUUlM9bQorQ09ORklHX1NDU0k9eQorQ09ORklHX1NDU0lfRE1BPXkKK0NPTkZJR19TQ1NJX1RHVD1tCisjIENPTkZJR19TQ1NJX05FVExJTksgaXMgbm90IHNldAorQ09ORklHX1NDU0lfUFJPQ19GUz15CisKKyMKKyMgU0NTSSBzdXBwb3J0IHR5cGUgKGRpc2ssIHRhcGUsIENELVJPTSkKKyMKK0NPTkZJR19CTEtfREVWX1NEPXkKK0NPTkZJR19DSFJfREVWX1NUPW0KK0NPTkZJR19DSFJfREVWX09TU1Q9bQorQ09ORklHX0JMS19ERVZfU1I9eQorQ09ORklHX0JMS19ERVZfU1JfVkVORE9SPXkKK0NPTkZJR19DSFJfREVWX1NHPW0KKyMgQ09ORklHX0NIUl9ERVZfU0NIIGlzIG5vdCBzZXQKKworIworIyBTb21lIFNDU0kgZGV2aWNlcyAoZS5nLiBDRCBqdWtlYm94KSBzdXBwb3J0IG11bHRpcGxlIExVTnMKKyMKKyMgQ09ORklHX1NDU0lfTVVMVElfTFVOIGlzIG5vdCBzZXQKK0NPTkZJR19TQ1NJX0NPTlNUQU5UUz15CisjIENPTkZJR19TQ1NJX0xPR0dJTkcgaXMgbm90IHNldAorIyBDT05GSUdfU0NTSV9TQ0FOX0FTWU5DIGlzIG5vdCBzZXQKK0NPTkZJR19TQ1NJX1dBSVRfU0NBTj1tCisKKyMKKyMgU0NTSSBUcmFuc3BvcnRzCisjCisjIENPTkZJR19TQ1NJX1NQSV9BVFRSUyBpcyBub3Qgc2V0CisjIENPTkZJR19TQ1NJX0ZDX0FUVFJTIGlzIG5vdCBzZXQKK0NPTkZJR19TQ1NJX0lTQ1NJX0FUVFJTPW0KK0NPTkZJR19TQ1NJX1NBU19BVFRSUz1tCitDT05GSUdfU0NTSV9TQVNfTElCU0FTPW0KK0NPTkZJR19TQ1NJX1NBU19IT1NUX1NNUD15CisjIENPTkZJR19TQ1NJX1NBU19MSUJTQVNfREVCVUcgaXMgbm90IHNldAorQ09ORklHX1NDU0lfU1JQX0FUVFJTPW0KK0NPTkZJR19TQ1NJX1NSUF9UR1RfQVRUUlM9eQorQ09ORklHX1NDU0lfTE9XTEVWRUw9eQorQ09ORklHX0lTQ1NJX1RDUD1tCisjIENPTkZJR19TQ1NJX0FIQTE1MlggaXMgbm90IHNldAorIyBDT05GSUdfU0NTSV9BSUM3WFhYX09MRCBpcyBub3Qgc2V0CisjIENPTkZJR19TQ1NJX0FEVkFOU1lTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDU0lfSU4yMDAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDU0lfRFRDMzI4MCBpcyBub3Qgc2V0CisjIENPTkZJR19TQ1NJX0ZVVFVSRV9ET01BSU4gaXMgbm90IHNldAorIyBDT05GSUdfU0NTSV9HRU5FUklDX05DUjUzODAgaXMgbm90IHNldAorIyBDT05GSUdfU0NTSV9HRU5FUklDX05DUjUzODBfTU1JTyBpcyBub3Qgc2V0CisjIENPTkZJR19TQ1NJX05DUjUzQzQwNkEgaXMgbm90IHNldAorIyBDT05GSUdfU0NTSV9QQVMxNiBpcyBub3Qgc2V0CisjIENPTkZJR19TQ1NJX1FMT0dJQ19GQVMgaXMgbm90IHNldAorIyBDT05GSUdfU0NTSV9TWU01M0M0MTYgaXMgbm90IHNldAorIyBDT05GSUdfU0NTSV9UMTI4IGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDU0lfREVCVUcgaXMgbm90IHNldAorQ09ORklHX01EPXkKK0NPTkZJR19CTEtfREVWX01EPW0KK0NPTkZJR19NRF9MSU5FQVI9bQorQ09ORklHX01EX1JBSUQwPW0KK0NPTkZJR19NRF9SQUlEMT1tCisjIENPTkZJR19NRF9SQUlEMTAgaXMgbm90IHNldAorQ09ORklHX01EX1JBSUQ0NTY9bQorQ09ORklHX01EX1JBSUQ1X1JFU0hBUEU9eQorQ09ORklHX01EX01VTFRJUEFUSD1tCisjIENPTkZJR19NRF9GQVVMVFkgaXMgbm90IHNldAorQ09ORklHX0JMS19ERVZfRE09bQorIyBDT05GSUdfRE1fREVCVUcgaXMgbm90IHNldAorQ09ORklHX0RNX0NSWVBUPW0KK0NPTkZJR19ETV9TTkFQU0hPVD1tCitDT05GSUdfRE1fTUlSUk9SPW0KK0NPTkZJR19ETV9aRVJPPW0KK0NPTkZJR19ETV9NVUxUSVBBVEg9bQorQ09ORklHX0RNX01VTFRJUEFUSF9FTUM9bQorQ09ORklHX0RNX01VTFRJUEFUSF9SREFDPW0KK0NPTkZJR19ETV9NVUxUSVBBVEhfSFA9bQorIyBDT05GSUdfRE1fREVMQVkgaXMgbm90IHNldAorQ09ORklHX0RNX1VFVkVOVD15CiBDT05GSUdfTkVUREVWSUNFUz15CisjIENPTkZJR19ORVRERVZJQ0VTX01VTFRJUVVFVUUgaXMgbm90IHNldAogQ09ORklHX0RVTU1ZPW0KICMgQ09ORklHX0JPTkRJTkcgaXMgbm90IHNldAorQ09ORklHX01BQ1ZMQU49bQogQ09ORklHX0VRVUFMSVpFUj1tCiAjIENPTkZJR19UVU4gaXMgbm90IHNldAotCi0jCi0jIEFSQ25ldCBkZXZpY2VzCi0jCitDT05GSUdfVkVUSD1tCiAjIENPTkZJR19BUkNORVQgaXMgbm90IHNldAotCi0jCi0jIEV0aGVybmV0ICgxMCBvciAxMDBNYml0KQotIworIyBDT05GSUdfUEhZTElCIGlzIG5vdCBzZXQKIENPTkZJR19ORVRfRVRIRVJORVQ9eQotQ09ORklHX01JST1tCisjIENPTkZJR19NSUkgaXMgbm90IHNldAogIyBDT05GSUdfTkVUX1ZFTkRPUl8zQ09NIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9WRU5ET1JfU01DIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9WRU5ET1JfUkFDQUwgaXMgbm90IHNldApAQCAtNDY4LDMwICs1ODgsMjEgQEAKICMgQ09ORklHX0hQMTAwIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9JU0EgaXMgbm90IHNldAogQ09ORklHX05FMjAwMD1tCisjIENPTkZJR19JQk1fTkVXX0VNQUNfWk1JSSBpcyBub3Qgc2V0CisjIENPTkZJR19JQk1fTkVXX0VNQUNfUkdNSUkgaXMgbm90IHNldAorIyBDT05GSUdfSUJNX05FV19FTUFDX1RBSCBpcyBub3Qgc2V0CisjIENPTkZJR19JQk1fTkVXX0VNQUNfRU1BQzQgaXMgbm90IHNldAogIyBDT05GSUdfTkVUX1BDSSBpcyBub3Qgc2V0Ci0jIENPTkZJR19ORVRfUE9DS0VUIGlzIG5vdCBzZXQKLQotIwotIyBFdGhlcm5ldCAoMTAwMCBNYml0KQotIwotCi0jCi0jIEV0aGVybmV0ICgxMDAwMCBNYml0KQotIwotCi0jCi0jIFRva2VuIFJpbmcgZGV2aWNlcwotIworIyBDT05GSUdfQjQ0IGlzIG5vdCBzZXQKKyMgQ09ORklHX05FVERFVl8xMDAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX05FVERFVl8xMDAwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19UUiBpcyBub3Qgc2V0CiAKICMKLSMgV2lyZWxlc3MgTEFOIChub24taGFtcmFkaW8pCisjIFdpcmVsZXNzIExBTgogIwotIyBDT05GSUdfTkVUX1JBRElPIGlzIG5vdCBzZXQKLQotIwotIyBXYW4gaW50ZXJmYWNlcwotIworIyBDT05GSUdfV0xBTl9QUkU4MDIxMSBpcyBub3Qgc2V0CisjIENPTkZJR19XTEFOXzgwMjExIGlzIG5vdCBzZXQKICMgQ09ORklHX1dBTiBpcyBub3Qgc2V0CiBDT05GSUdfUFBQPW0KICMgQ09ORklHX1BQUF9NVUxUSUxJTksgaXMgbm90IHNldApAQCAtNTAwLDI4ICs2MTEsMjggQEAKIENPTkZJR19QUFBfU1lOQ19UVFk9bQogQ09ORklHX1BQUF9ERUZMQVRFPW0KIENPTkZJR19QUFBfQlNEQ09NUD1tCitDT05GSUdfUFBQX01QUEU9bQogQ09ORklHX1BQUE9FPW0KK0NPTkZJR19QUFBPTDJUUD1tCiBDT05GSUdfU0xJUD1tCiBDT05GSUdfU0xJUF9DT01QUkVTU0VEPXkKK0NPTkZJR19TTEhDPW0KIENPTkZJR19TTElQX1NNQVJUPXkKIENPTkZJR19TTElQX01PREVfU0xJUDY9eQotQ09ORklHX1NIQVBFUj1tCiBDT05GSUdfTkVUQ09OU09MRT1tCi0KLSMKLSMgSVNETiBzdWJzeXN0ZW0KLSMKK0NPTkZJR19ORVRDT05TT0xFX0RZTkFNSUM9eQorQ09ORklHX05FVFBPTEw9eQorIyBDT05GSUdfTkVUUE9MTF9UUkFQIGlzIG5vdCBzZXQKK0NPTkZJR19ORVRfUE9MTF9DT05UUk9MTEVSPXkKICMgQ09ORklHX0lTRE4gaXMgbm90IHNldAotCi0jCi0jIFRlbGVwaG9ueSBTdXBwb3J0Ci0jCiAjIENPTkZJR19QSE9ORSBpcyBub3Qgc2V0CiAKICMKICMgSW5wdXQgZGV2aWNlIHN1cHBvcnQKICMKIENPTkZJR19JTlBVVD15CitDT05GSUdfSU5QVVRfRkZfTUVNTEVTUz1tCisjIENPTkZJR19JTlBVVF9QT0xMREVWIGlzIG5vdCBzZXQKIAogIwogIyBVc2VybGFuZCBpbnRlcmZhY2VzCkBAIC01MzEsNyArNjQyLDYgQEAKIENPTkZJR19JTlBVVF9NT1VTRURFVl9TQ1JFRU5fWD0xMDI0CiBDT05GSUdfSU5QVVRfTU9VU0VERVZfU0NSRUVOX1k9NzY4CiAjIENPTkZJR19JTlBVVF9KT1lERVYgaXMgbm90IHNldAotIyBDT05GSUdfSU5QVVRfVFNERVYgaXMgbm90IHNldAogIyBDT05GSUdfSU5QVVRfRVZERVYgaXMgbm90IHNldAogIyBDT05GSUdfSU5QVVRfRVZCVUcgaXMgbm90IHNldAogCkBAIC01NDQsMjIgKzY1NCwzMiBAQAogIyBDT05GSUdfS0VZQk9BUkRfTEtLQkQgaXMgbm90IHNldAogIyBDT05GSUdfS0VZQk9BUkRfWFRLQkQgaXMgbm90IHNldAogIyBDT05GSUdfS0VZQk9BUkRfTkVXVE9OIGlzIG5vdCBzZXQKKyMgQ09ORklHX0tFWUJPQVJEX1NUT1dBV0FZIGlzIG5vdCBzZXQKIENPTkZJR19JTlBVVF9NT1VTRT15CiBDT05GSUdfTU9VU0VfUFMyPW0KK0NPTkZJR19NT1VTRV9QUzJfQUxQUz15CitDT05GSUdfTU9VU0VfUFMyX0xPR0lQUzJQUD15CitDT05GSUdfTU9VU0VfUFMyX1NZTkFQVElDUz15CitDT05GSUdfTU9VU0VfUFMyX0xJRkVCT09LPXkKK0NPTkZJR19NT1VTRV9QUzJfVFJBQ0tQT0lOVD15CisjIENPTkZJR19NT1VTRV9QUzJfVE9VQ0hLSVQgaXMgbm90IHNldAogQ09ORklHX01PVVNFX1NFUklBTD1tCiAjIENPTkZJR19NT1VTRV9JTlBPUlQgaXMgbm90IHNldAogIyBDT05GSUdfTU9VU0VfTE9HSUJNIGlzIG5vdCBzZXQKICMgQ09ORklHX01PVVNFX1BDMTEwUEFEIGlzIG5vdCBzZXQKICMgQ09ORklHX01PVVNFX1ZTWFhYQUEgaXMgbm90IHNldAogIyBDT05GSUdfSU5QVVRfSk9ZU1RJQ0sgaXMgbm90IHNldAorIyBDT05GSUdfSU5QVVRfVEFCTEVUIGlzIG5vdCBzZXQKICMgQ09ORklHX0lOUFVUX1RPVUNIU0NSRUVOIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lOUFVUX01JU0MgaXMgbm90IHNldAorQ09ORklHX0lOUFVUX01JU0M9eQorQ09ORklHX0lOUFVUX002OEtfQkVFUD1tCisjIENPTkZJR19JTlBVVF9VSU5QVVQgaXMgbm90IHNldAogCiAjCiAjIEhhcmR3YXJlIEkvTyBwb3J0cwogIwogQ09ORklHX1NFUklPPW0KLUNPTkZJR19TRVJJT19TRVJQT1JUPW0KKyMgQ09ORklHX1NFUklPX1NFUlBPUlQgaXMgbm90IHNldAogQ09ORklHX1NFUklPX1E0MEtCRD1tCiBDT05GSUdfU0VSSU9fTElCUFMyPW0KICMgQ09ORklHX1NFUklPX1JBVyBpcyBub3Qgc2V0CkBAIC01NzEsNiArNjkxLDcgQEAKIENPTkZJR19WVD15CiBDT05GSUdfVlRfQ09OU09MRT15CiBDT05GSUdfSFdfQ09OU09MRT15CitDT05GSUdfVlRfSFdfQ09OU09MRV9CSU5ESU5HPXkKICMgQ09ORklHX1NFUklBTF9OT05TVEFOREFSRCBpcyBub3Qgc2V0CiAKICMKQEAgLTU4NCwxMTUgKzcwNSwxMTcgQEAKIENPTkZJR19VTklYOThfUFRZUz15CiBDT05GSUdfTEVHQUNZX1BUWVM9eQogQ09ORklHX0xFR0FDWV9QVFlfQ09VTlQ9MjU2Ci0KLSMKLSMgSVBNSQotIwogIyBDT05GSUdfSVBNSV9IQU5ETEVSIGlzIG5vdCBzZXQKLQotIwotIyBXYXRjaGRvZyBDYXJkcwotIwotIyBDT05GSUdfV0FUQ0hET0cgaXMgbm90IHNldAorIyBDT05GSUdfSFdfUkFORE9NIGlzIG5vdCBzZXQKIENPTkZJR19HRU5fUlRDPW0KIENPTkZJR19HRU5fUlRDX1g9eQogIyBDT05GSUdfRFRMSyBpcyBub3Qgc2V0CiAjIENPTkZJR19SMzk2NCBpcyBub3Qgc2V0Ci0KLSMKLSMgRnRhcGUsIHRoZSBmbG9wcHkgdGFwZSBkZXZpY2UgZHJpdmVyCi0jCi0jIENPTkZJR19EUk0gaXMgbm90IHNldAogIyBDT05GSUdfUkFXX0RSSVZFUiBpcyBub3Qgc2V0Ci0KLSMKLSMgVFBNIGRldmljZXMKLSMKLQotIwotIyBJMkMgc3VwcG9ydAotIworIyBDT05GSUdfVENHX1RQTSBpcyBub3Qgc2V0CiAjIENPTkZJR19JMkMgaXMgbm90IHNldAogCiAjCi0jIERhbGxhcydzIDEtd2lyZSBidXMKKyMgU1BJIHN1cHBvcnQKICMKKyMgQ09ORklHX1NQSSBpcyBub3Qgc2V0CisjIENPTkZJR19TUElfTUFTVEVSIGlzIG5vdCBzZXQKICMgQ09ORklHX1cxIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BPV0VSX1NVUFBMWSBpcyBub3Qgc2V0CisjIENPTkZJR19IV01PTiBpcyBub3Qgc2V0CisjIENPTkZJR19USEVSTUFMIGlzIG5vdCBzZXQKKyMgQ09ORklHX1dBVENIRE9HIGlzIG5vdCBzZXQKIAogIwotIyBNaXNjIGRldmljZXMKKyMgU29uaWNzIFNpbGljb24gQmFja3BsYW5lCiAjCitDT05GSUdfU1NCX1BPU1NJQkxFPXkKKyMgQ09ORklHX1NTQiBpcyBub3Qgc2V0CisKKyMKKyMgTXVsdGlmdW5jdGlvbiBkZXZpY2UgZHJpdmVycworIworIyBDT05GSUdfTUZEX1NNNTAxIGlzIG5vdCBzZXQKIAogIwogIyBNdWx0aW1lZGlhIGRldmljZXMKICMKICMgQ09ORklHX1ZJREVPX0RFViBpcyBub3Qgc2V0Ci0KLSMKLSMgRGlnaXRhbCBWaWRlbyBCcm9hZGNhc3RpbmcgRGV2aWNlcwotIwotIyBDT05GSUdfRFZCIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RWQl9DT1JFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RBQiBpcyBub3Qgc2V0CiAKICMKICMgR3JhcGhpY3Mgc3VwcG9ydAogIworIyBDT05GSUdfVkdBU1RBVEUgaXMgbm90IHNldAorIyBDT05GSUdfVklERU9fT1VUUFVUX0NPTlRST0wgaXMgbm90IHNldAogQ09ORklHX0ZCPXkKKyMgQ09ORklHX0ZJUk1XQVJFX0VESUQgaXMgbm90IHNldAorIyBDT05GSUdfRkJfRERDIGlzIG5vdCBzZXQKIENPTkZJR19GQl9DRkJfRklMTFJFQ1Q9eQogQ09ORklHX0ZCX0NGQl9DT1BZQVJFQT15CiBDT05GSUdfRkJfQ0ZCX0lNQUdFQkxJVD15Ci1DT05GSUdfRkJfU09GVF9DVVJTT1I9eQorIyBDT05GSUdfRkJfQ0ZCX1JFVl9QSVhFTFNfSU5fQllURSBpcyBub3Qgc2V0CisjIENPTkZJR19GQl9TWVNfRklMTFJFQ1QgaXMgbm90IHNldAorIyBDT05GSUdfRkJfU1lTX0NPUFlBUkVBIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZCX1NZU19JTUFHRUJMSVQgaXMgbm90IHNldAorIyBDT05GSUdfRkJfU1lTX0ZPUFMgaXMgbm90IHNldAorQ09ORklHX0ZCX0RFRkVSUkVEX0lPPXkKKyMgQ09ORklHX0ZCX1NWR0FMSUIgaXMgbm90IHNldAogIyBDT05GSUdfRkJfTUFDTU9ERVMgaXMgbm90IHNldAotQ09ORklHX0ZCX01PREVfSEVMUEVSUz15CisjIENPTkZJR19GQl9CQUNLTElHSFQgaXMgbm90IHNldAorIyBDT05GSUdfRkJfTU9ERV9IRUxQRVJTIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZCX1RJTEVCTElUVElORyBpcyBub3Qgc2V0CisKKyMKKyMgRnJhbWUgYnVmZmVyIGhhcmR3YXJlIGRyaXZlcnMKKyMKIENPTkZJR19GQl9RNDA9eQorIyBDT05GSUdfRkJfVVZFU0EgaXMgbm90IHNldAogIyBDT05GSUdfRkJfUzFEMTNYWFggaXMgbm90IHNldAogIyBDT05GSUdfRkJfVklSVFVBTCBpcyBub3Qgc2V0CisjIENPTkZJR19CQUNLTElHSFRfTENEX1NVUFBPUlQgaXMgbm90IHNldAorCisjCisjIERpc3BsYXkgZGV2aWNlIHN1cHBvcnQKKyMKKyMgQ09ORklHX0RJU1BMQVlfU1VQUE9SVCBpcyBub3Qgc2V0CiAKICMKICMgQ29uc29sZSBkaXNwbGF5IGRyaXZlciBzdXBwb3J0CiAjCiBDT05GSUdfRFVNTVlfQ09OU09MRT15CiBDT05GSUdfRlJBTUVCVUZGRVJfQ09OU09MRT15CisjIENPTkZJR19GUkFNRUJVRkZFUl9DT05TT0xFX0RFVEVDVF9QUklNQVJZIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZSQU1FQlVGRkVSX0NPTlNPTEVfUk9UQVRJT04gaXMgbm90IHNldAogIyBDT05GSUdfRk9OVFMgaXMgbm90IHNldAogQ09ORklHX0ZPTlRfOHg4PXkKIENPTkZJR19GT05UXzh4MTY9eQotCi0jCi0jIExvZ28gY29uZmlndXJhdGlvbgotIwogQ09ORklHX0xPR089eQogQ09ORklHX0xPR09fTElOVVhfTU9OTz15CiBDT05GSUdfTE9HT19MSU5VWF9WR0ExNj15CiBDT05GSUdfTE9HT19MSU5VWF9DTFVUMjI0PXkKLSMgQ09ORklHX0JBQ0tMSUdIVF9MQ0RfU1VQUE9SVCBpcyBub3Qgc2V0CiAKICMKICMgU291bmQKICMKLUNPTkZJR19TT1VORD15Ci1DT05GSUdfRE1BU09VTkRfUTQwPXkKLUNPTkZJR19ETUFTT1VORD15Ci0KLSMKLSMgVVNCIHN1cHBvcnQKLSMKLSMgQ09ORklHX1VTQl9BUkNIX0hBU19IQ0QgaXMgbm90IHNldAotIyBDT05GSUdfVVNCX0FSQ0hfSEFTX09IQ0kgaXMgbm90IHNldAotCi0jCi0jIFVTQiBHYWRnZXQgU3VwcG9ydAotIwotIyBDT05GSUdfVVNCX0dBREdFVCBpcyBub3Qgc2V0Ci0KLSMKLSMgTU1DL1NEIENhcmQgc3VwcG9ydAotIworQ09ORklHX1NPVU5EPW0KK0NPTkZJR19ETUFTT1VORF9RNDA9bQorQ09ORklHX0RNQVNPVU5EPW0KK0NPTkZJR19ISURfU1VQUE9SVD15CitDT05GSUdfSElEPW0KKyMgQ09ORklHX0hJRF9ERUJVRyBpcyBub3Qgc2V0CitDT05GSUdfSElEUkFXPXkKKyMgQ09ORklHX1VTQl9TVVBQT1JUIGlzIG5vdCBzZXQKICMgQ09ORklHX01NQyBpcyBub3Qgc2V0CisjIENPTkZJR19NRU1TVElDSyBpcyBub3Qgc2V0CisjIENPTkZJR19ORVdfTEVEUyBpcyBub3Qgc2V0CisjIENPTkZJR19SVENfQ0xBU1MgaXMgbm90IHNldAogCiAjCi0jIEluZmluaUJhbmQgc3VwcG9ydAorIyBVc2Vyc3BhY2UgSS9PCiAjCi0jIENPTkZJR19JTkZJTklCQU5EIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VJTyBpcyBub3Qgc2V0CiAKICMKICMgQ2hhcmFjdGVyIGRldmljZXMKQEAgLTcwMywxMCArODI2LDExIEBACiAjCiBDT05GSUdfRVhUMl9GUz15CiAjIENPTkZJR19FWFQyX0ZTX1hBVFRSIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VYVDJfRlNfWElQIGlzIG5vdCBzZXQKIENPTkZJR19FWFQzX0ZTPXkKICMgQ09ORklHX0VYVDNfRlNfWEFUVFIgaXMgbm90IHNldAorIyBDT05GSUdfRVhUNERFVl9GUyBpcyBub3Qgc2V0CiBDT05GSUdfSkJEPXkKLSMgQ09ORklHX0pCRF9ERUJVRyBpcyBub3Qgc2V0CiBDT05GSUdfUkVJU0VSRlNfRlM9bQogIyBDT05GSUdfUkVJU0VSRlNfQ0hFQ0sgaXMgbm90IHNldAogIyBDT05GSUdfUkVJU0VSRlNfUFJPQ19JTkZPIGlzIG5vdCBzZXQKQEAgLTcxNywyNSArODQxLDI5IEBACiAjIENPTkZJR19KRlNfREVCVUcgaXMgbm90IHNldAogIyBDT05GSUdfSkZTX1NUQVRJU1RJQ1MgaXMgbm90IHNldAogQ09ORklHX0ZTX1BPU0lYX0FDTD15Ci0KLSMKLSMgWEZTIHN1cHBvcnQKLSMKIENPTkZJR19YRlNfRlM9bQotQ09ORklHX1hGU19FWFBPUlQ9eQotIyBDT05GSUdfWEZTX1JUIGlzIG5vdCBzZXQKICMgQ09ORklHX1hGU19RVU9UQSBpcyBub3Qgc2V0CiAjIENPTkZJR19YRlNfU0VDVVJJVFkgaXMgbm90IHNldAogIyBDT05GSUdfWEZTX1BPU0lYX0FDTCBpcyBub3Qgc2V0Ci1DT05GSUdfTUlOSVhfRlM9eQotIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfWEZTX1JUIGlzIG5vdCBzZXQKK0NPTkZJR19HRlMyX0ZTPW0KK0NPTkZJR19HRlMyX0ZTX0xPQ0tJTkdfTk9MT0NLPW0KK0NPTkZJR19HRlMyX0ZTX0xPQ0tJTkdfRExNPW0KK0NPTkZJR19PQ0ZTMl9GUz1tCisjIENPTkZJR19PQ0ZTMl9ERUJVR19NQVNLTE9HIGlzIG5vdCBzZXQKKyMgQ09ORklHX09DRlMyX0RFQlVHX0ZTIGlzIG5vdCBzZXQKK0NPTkZJR19ETk9USUZZPXkKK0NPTkZJR19JTk9USUZZPXkKK0NPTkZJR19JTk9USUZZX1VTRVI9eQogQ09ORklHX1FVT1RBPXkKK0NPTkZJR19RVU9UQV9ORVRMSU5LX0lOVEVSRkFDRT15CisjIENPTkZJR19QUklOVF9RVU9UQV9XQVJOSU5HIGlzIG5vdCBzZXQKICMgQ09ORklHX1FGTVRfVjEgaXMgbm90IHNldAogIyBDT05GSUdfUUZNVF9WMiBpcyBub3Qgc2V0CiBDT05GSUdfUVVPVEFDVEw9eQotQ09ORklHX0ROT1RJRlk9eQogQ09ORklHX0FVVE9GU19GUz1tCiBDT05GSUdfQVVUT0ZTNF9GUz1tCitDT05GSUdfRlVTRV9GUz1tCiAKICMKICMgQ0QtUk9NL0RWRCBGaWxlc3lzdGVtcwpAQCAtNzQzLDcgKzg3MSw2IEBACiBDT05GSUdfSVNPOTY2MF9GUz15CiBDT05GSUdfSk9MSUVUPXkKIENPTkZJR19aSVNPRlM9eQotQ09ORklHX1pJU09GU19GUz15CiBDT05GSUdfVURGX0ZTPW0KIENPTkZJR19VREZfTkxTPXkKIApAQCAtNzYyLDEzICs4ODksMTIgQEAKICMKIENPTkZJR19QUk9DX0ZTPXkKIENPTkZJR19QUk9DX0tDT1JFPXkKK0NPTkZJR19QUk9DX1NZU0NUTD15CiBDT05GSUdfU1lTRlM9eQotIyBDT05GSUdfREVWRlNfRlMgaXMgbm90IHNldAotIyBDT05GSUdfREVWUFRTX0ZTX1hBVFRSIGlzIG5vdCBzZXQKIENPTkZJR19UTVBGUz15Ci0jIENPTkZJR19UTVBGU19YQVRUUiBpcyBub3Qgc2V0CisjIENPTkZJR19UTVBGU19QT1NJWF9BQ0wgaXMgbm90IHNldAogIyBDT05GSUdfSFVHRVRMQl9QQUdFIGlzIG5vdCBzZXQKLUNPTkZJR19SQU1GUz15CitDT05GSUdfQ09ORklHRlNfRlM9bQogCiAjCiAjIE1pc2NlbGxhbmVvdXMgZmlsZXN5c3RlbXMKQEAgLTc4Miw0NCArOTA4LDM5IEBACiAjIENPTkZJR19FRlNfRlMgaXMgbm90IHNldAogQ09ORklHX0NSQU1GUz1tCiAjIENPTkZJR19WWEZTX0ZTIGlzIG5vdCBzZXQKK0NPTkZJR19NSU5JWF9GUz15CiBDT05GSUdfSFBGU19GUz1tCiAjIENPTkZJR19RTlg0RlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAogQ09ORklHX1NZU1ZfRlM9bQogQ09ORklHX1VGU19GUz1tCi1DT05GSUdfVUZTX0ZTX1dSSVRFPXkKLQotIwotIyBOZXR3b3JrIEZpbGUgU3lzdGVtcwotIworIyBDT05GSUdfVUZTX0ZTX1dSSVRFIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VGU19ERUJVRyBpcyBub3Qgc2V0CitDT05GSUdfTkVUV09SS19GSUxFU1lTVEVNUz15CiBDT05GSUdfTkZTX0ZTPXkKIENPTkZJR19ORlNfVjM9eQorIyBDT05GSUdfTkZTX1YzX0FDTCBpcyBub3Qgc2V0CiBDT05GSUdfTkZTX1Y0PXkKICMgQ09ORklHX05GU19ESVJFQ1RJTyBpcyBub3Qgc2V0CiBDT05GSUdfTkZTRD1tCiBDT05GSUdfTkZTRF9WMz15Ci1DT05GSUdfTkZTRF9WND15CisjIENPTkZJR19ORlNEX1YzX0FDTCBpcyBub3Qgc2V0CisjIENPTkZJR19ORlNEX1Y0IGlzIG5vdCBzZXQKIENPTkZJR19ORlNEX1RDUD15Ci1DT05GSUdfUk9PVF9ORlM9eQogQ09ORklHX0xPQ0tEPXkKIENPTkZJR19MT0NLRF9WND15CiBDT05GSUdfRVhQT1JURlM9bQorQ09ORklHX05GU19DT01NT049eQogQ09ORklHX1NVTlJQQz15CiBDT05GSUdfU1VOUlBDX0dTUz15CitDT05GSUdfU1VOUlBDX0JJTkQzND15CiBDT05GSUdfUlBDU0VDX0dTU19LUkI1PXkKICMgQ09ORklHX1JQQ1NFQ19HU1NfU1BLTTMgaXMgbm90IHNldAogQ09ORklHX1NNQl9GUz1tCiBDT05GSUdfU01CX05MU19ERUZBVUxUPXkKIENPTkZJR19TTUJfTkxTX1JFTU9URT0iY3A0MzciCiAjIENPTkZJR19DSUZTIGlzIG5vdCBzZXQKLUNPTkZJR19OQ1BfRlM9bQotIyBDT05GSUdfTkNQRlNfUEFDS0VUX1NJR05JTkcgaXMgbm90IHNldAotIyBDT05GSUdfTkNQRlNfSU9DVExfTE9DS0lORyBpcyBub3Qgc2V0Ci0jIENPTkZJR19OQ1BGU19TVFJPTkcgaXMgbm90IHNldAotIyBDT05GSUdfTkNQRlNfTkZTX05TIGlzIG5vdCBzZXQKLSMgQ09ORklHX05DUEZTX09TMl9OUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19OQ1BGU19TTUFMTERPUyBpcyBub3Qgc2V0Ci1DT05GSUdfTkNQRlNfTkxTPXkKLSMgQ09ORklHX05DUEZTX0VYVFJBUyBpcyBub3Qgc2V0CisjIENPTkZJR19OQ1BfRlMgaXMgbm90IHNldAogQ09ORklHX0NPREFfRlM9bQogIyBDT05GSUdfQ09EQV9GU19PTERfQVBJIGlzIG5vdCBzZXQKICMgQ09ORklHX0FGU19GUyBpcyBub3Qgc2V0CkBAIC04MjksMTAgKzk1MCw2IEBACiAjCiAjIENPTkZJR19QQVJUSVRJT05fQURWQU5DRUQgaXMgbm90IHNldAogQ09ORklHX01TRE9TX1BBUlRJVElPTj15Ci0KLSMKLSMgTmF0aXZlIExhbmd1YWdlIFN1cHBvcnQKLSMKIENPTkZJR19OTFM9eQogQ09ORklHX05MU19ERUZBVUxUPSJpc284ODU5LTEiCiBDT05GSUdfTkxTX0NPREVQQUdFXzQzNz15CkBAIC04NzMsMzUgKzk5MCw0MiBAQAogQ09ORklHX05MU19LT0k4X1I9bQogQ09ORklHX05MU19LT0k4X1U9bQogQ09ORklHX05MU19VVEY4PW0KK0NPTkZJR19ETE09bQorIyBDT05GSUdfRExNX0RFQlVHIGlzIG5vdCBzZXQKIAogIwogIyBLZXJuZWwgaGFja2luZwogIwogIyBDT05GSUdfUFJJTlRLX1RJTUUgaXMgbm90IHNldAotQ09ORklHX0RFQlVHX0tFUk5FTD15CitDT05GSUdfRU5BQkxFX1dBUk5fREVQUkVDQVRFRD15CitDT05GSUdfRU5BQkxFX01VU1RfQ0hFQ0s9eQogQ09ORklHX01BR0lDX1NZU1JRPXkKLUNPTkZJR19MT0dfQlVGX1NISUZUPTE2Ci0jIENPTkZJR19TQ0hFRFNUQVRTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0RFQlVHX1NMQUIgaXMgbm90IHNldAotIyBDT05GSUdfREVCVUdfU1BJTkxPQ0sgaXMgbm90IHNldAotIyBDT05GSUdfREVCVUdfU1BJTkxPQ0tfU0xFRVAgaXMgbm90IHNldAotIyBDT05GSUdfREVCVUdfS09CSkVDVCBpcyBub3Qgc2V0Ci1DT05GSUdfREVCVUdfQlVHVkVSQk9TRT15Ci0jIENPTkZJR19ERUJVR19JTkZPIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VOVVNFRF9TWU1CT0xTIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZSQU1FX1BPSU5URVIgaXMgbm90IHNldAorIyBDT05GSUdfSEVBREVSU19DSEVDSyBpcyBub3Qgc2V0CisjIENPTkZJR19ERUJVR19LRVJORUwgaXMgbm90IHNldAorQ09ORklHX0RFQlVHX0JVR1ZFUkJPU0U9eQorIyBDT05GSUdfU0FNUExFUyBpcyBub3Qgc2V0CiAKICMKICMgU2VjdXJpdHkgb3B0aW9ucwogIwogIyBDT05GSUdfS0VZUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TRUNVUklUWSBpcyBub3Qgc2V0Ci0KLSMKLSMgQ3J5cHRvZ3JhcGhpYyBvcHRpb25zCi0jCisjIENPTkZJR19TRUNVUklUWV9GSUxFX0NBUEFCSUxJVElFUyBpcyBub3Qgc2V0CitDT05GSUdfWE9SX0JMT0NLUz1tCitDT05GSUdfQVNZTkNfQ09SRT1tCitDT05GSUdfQVNZTkNfTUVNQ1BZPW0KK0NPTkZJR19BU1lOQ19YT1I9bQogQ09ORklHX0NSWVBUTz15CitDT05GSUdfQ1JZUFRPX0FMR0FQST15CitDT05GSUdfQ1JZUFRPX0FFQUQ9bQorQ09ORklHX0NSWVBUT19CTEtDSVBIRVI9eQorQ09ORklHX0NSWVBUT19TRVFJVj1tCitDT05GSUdfQ1JZUFRPX0hBU0g9eQorQ09ORklHX0NSWVBUT19NQU5BR0VSPXkKIENPTkZJR19DUllQVE9fSE1BQz15CitDT05GSUdfQ1JZUFRPX1hDQkM9bQogQ09ORklHX0NSWVBUT19OVUxMPW0KIENPTkZJR19DUllQVE9fTUQ0PW0KIENPTkZJR19DUllQVE9fTUQ1PXkKQEAgLTkxMCw5ICsxMDM0LDIxIEBACiBDT05GSUdfQ1JZUFRPX1NIQTUxMj1tCiBDT05GSUdfQ1JZUFRPX1dQNTEyPW0KIENPTkZJR19DUllQVE9fVEdSMTkyPW0KK0NPTkZJR19DUllQVE9fR0YxMjhNVUw9bQorQ09ORklHX0NSWVBUT19FQ0I9bQorQ09ORklHX0NSWVBUT19DQkM9eQorQ09ORklHX0NSWVBUT19QQ0JDPW0KK0NPTkZJR19DUllQVE9fTFJXPW0KK0NPTkZJR19DUllQVE9fWFRTPW0KK0NPTkZJR19DUllQVE9fQ1RSPW0KK0NPTkZJR19DUllQVE9fR0NNPW0KK0NPTkZJR19DUllQVE9fQ0NNPW0KK0NPTkZJR19DUllQVE9fQ1JZUFREPW0KIENPTkZJR19DUllQVE9fREVTPXkKK0NPTkZJR19DUllQVE9fRkNSWVBUPW0KIENPTkZJR19DUllQVE9fQkxPV0ZJU0g9bQogQ09ORklHX0NSWVBUT19UV09GSVNIPW0KK0NPTkZJR19DUllQVE9fVFdPRklTSF9DT01NT049bQogQ09ORklHX0NSWVBUT19TRVJQRU5UPW0KIENPTkZJR19DUllQVE9fQUVTPW0KIENPTkZJR19DUllQVE9fQ0FTVDU9bQpAQCAtOTIxLDIwICsxMDU3LDM1IEBACiBDT05GSUdfQ1JZUFRPX0FSQzQ9bQogQ09ORklHX0NSWVBUT19LSEFaQUQ9bQogQ09ORklHX0NSWVBUT19BTlVCSVM9bQorQ09ORklHX0NSWVBUT19TRUVEPW0KK0NPTkZJR19DUllQVE9fU0FMU0EyMD1tCiBDT05GSUdfQ1JZUFRPX0RFRkxBVEU9bQogQ09ORklHX0NSWVBUT19NSUNIQUVMX01JQz1tCiBDT05GSUdfQ1JZUFRPX0NSQzMyQz1tCitDT05GSUdfQ1JZUFRPX0NBTUVMTElBPW0KIENPTkZJR19DUllQVE9fVEVTVD1tCi0KLSMKLSMgSGFyZHdhcmUgY3J5cHRvIGRldmljZXMKLSMKK0NPTkZJR19DUllQVE9fQVVUSEVOQz1tCitDT05GSUdfQ1JZUFRPX0xaTz1tCisjIENPTkZJR19DUllQVE9fSFcgaXMgbm90IHNldAogCiAjCiAjIExpYnJhcnkgcm91dGluZXMKICMKK0NPTkZJR19CSVRSRVZFUlNFPXkKIENPTkZJR19DUkNfQ0NJVFQ9bQorQ09ORklHX0NSQzE2PW0KKyMgQ09ORklHX0NSQ19JVFVfVCBpcyBub3Qgc2V0CiBDT05GSUdfQ1JDMzI9eQorIyBDT05GSUdfQ1JDNyBpcyBub3Qgc2V0CiBDT05GSUdfTElCQ1JDMzJDPW0KIENPTkZJR19aTElCX0lORkxBVEU9eQogQ09ORklHX1pMSUJfREVGTEFURT1tCitDT05GSUdfTFpPX0NPTVBSRVNTPW0KK0NPTkZJR19MWk9fREVDT01QUkVTUz1tCitDT05GSUdfVEVYVFNFQVJDSD15CitDT05GSUdfVEVYVFNFQVJDSF9LTVA9bQorQ09ORklHX1RFWFRTRUFSQ0hfQk09bQorQ09ORklHX1RFWFRTRUFSQ0hfRlNNPW0KK0NPTkZJR19QTElTVD15CitDT05GSUdfSEFTX0lPTUVNPXkKK0NPTkZJR19IQVNfRE1BPXkKZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9jb25maWdzL3N1bjNfZGVmY29uZmlnIGIvYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM19kZWZjb25maWcKaW5kZXggYWY5MDNiNS4uYmQyYjljNCAxMDA2NDQKLS0tIGEvYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM19kZWZjb25maWcKKysrIGIvYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM19kZWZjb25maWcKQEAgLTEsNjMgKzEsMTExIEBACiAjCiAjIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIG1ha2UgY29uZmlnOiBkb24ndCBlZGl0Ci0jIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMTItcmM2LW02OGsKLSMgVHVlIEp1biAgNyAyMDozNTowMiAyMDA1CisjIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMjUtcmM4CisjIFdlZCBBcHIgIDIgMjA6NDY6MjIgMjAwOAogIwogQ09ORklHX002OEs9eQogQ09ORklHX01NVT15Ci1DT05GSUdfVUlEMTY9eQogQ09ORklHX1JXU0VNX0dFTkVSSUNfU1BJTkxPQ0s9eQorIyBDT05GSUdfQVJDSF9IQVNfSUxPRzJfVTMyIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfSEFTX0lMT0cyX1U2NCBpcyBub3Qgc2V0CitDT05GSUdfR0VORVJJQ19IV0VJR0hUPXkKIENPTkZJR19HRU5FUklDX0NBTElCUkFURV9ERUxBWT15Ci0KLSMKLSMgQ29kZSBtYXR1cml0eSBsZXZlbCBvcHRpb25zCi0jCi1DT05GSUdfRVhQRVJJTUVOVEFMPXkKLUNPTkZJR19DTEVBTl9DT01QSUxFPXkKLUNPTkZJR19CUk9LRU5fT05fU01QPXkKLUNPTkZJR19JTklUX0VOVl9BUkdfTElNSVQ9MzIKK0NPTkZJR19USU1FX0xPV19SRVM9eQorQ09ORklHX0dFTkVSSUNfSU9NQVA9eQorQ09ORklHX05PX0lPUE9SVD15CitDT05GSUdfTk9fRE1BPXkKK0NPTkZJR19BUkNIX1NVUFBPUlRTX0FPVVQ9eQorQ09ORklHX0haPTEwMAorQ09ORklHX0RFRkNPTkZJR19MSVNUPSIvbGliL21vZHVsZXMvJFVOQU1FX1JFTEVBU0UvLmNvbmZpZyIKIAogIwogIyBHZW5lcmFsIHNldHVwCiAjCitDT05GSUdfRVhQRVJJTUVOVEFMPXkKK0NPTkZJR19CUk9LRU5fT05fU01QPXkKK0NPTkZJR19JTklUX0VOVl9BUkdfTElNSVQ9MzIKIENPTkZJR19MT0NBTFZFUlNJT049Ii1zdW4zIgorQ09ORklHX0xPQ0FMVkVSU0lPTl9BVVRPPXkKIENPTkZJR19TV0FQPXkKIENPTkZJR19TWVNWSVBDPXkKK0NPTkZJR19TWVNWSVBDX1NZU0NUTD15CiBDT05GSUdfUE9TSVhfTVFVRVVFPXkKIENPTkZJR19CU0RfUFJPQ0VTU19BQ0NUPXkKICMgQ09ORklHX0JTRF9QUk9DRVNTX0FDQ1RfVjMgaXMgbm90IHNldAotQ09ORklHX1NZU0NUTD15Ci1DT05GSUdfQVVESVQ9eQotQ09ORklHX0hPVFBMVUc9eQotQ09ORklHX0tPQkpFQ1RfVUVWRU5UPXkKKyMgQ09ORklHX1RBU0tTVEFUUyBpcyBub3Qgc2V0CisjIENPTkZJR19BVURJVCBpcyBub3Qgc2V0CiAjIENPTkZJR19JS0NPTkZJRyBpcyBub3Qgc2V0CitDT05GSUdfTE9HX0JVRl9TSElGVD0xNAorIyBDT05GSUdfQ0dST1VQUyBpcyBub3Qgc2V0CisjIENPTkZJR19HUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CisjIENPTkZJR19TWVNGU19ERVBSRUNBVEVEX1YyIGlzIG5vdCBzZXQKK0NPTkZJR19SRUxBWT15CitDT05GSUdfTkFNRVNQQUNFUz15CisjIENPTkZJR19VVFNfTlMgaXMgbm90IHNldAorIyBDT05GSUdfSVBDX05TIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTRVJfTlMgaXMgbm90IHNldAorIyBDT05GSUdfUElEX05TIGlzIG5vdCBzZXQKK0NPTkZJR19CTEtfREVWX0lOSVRSRD15CitDT05GSUdfSU5JVFJBTUZTX1NPVVJDRT0iIgorIyBDT05GSUdfQ0NfT1BUSU1JWkVfRk9SX1NJWkUgaXMgbm90IHNldAorQ09ORklHX1NZU0NUTD15CiAjIENPTkZJR19FTUJFRERFRCBpcyBub3Qgc2V0CitDT05GSUdfVUlEMTY9eQorQ09ORklHX1NZU0NUTF9TWVNDQUxMPXkKIENPTkZJR19LQUxMU1lNUz15Ci0jIENPTkZJR19LQUxMU1lNU19BTEwgaXMgbm90IHNldAogIyBDT05GSUdfS0FMTFNZTVNfRVhUUkFfUEFTUyBpcyBub3Qgc2V0CitDT05GSUdfSE9UUExVRz15CiBDT05GSUdfUFJJTlRLPXkKIENPTkZJR19CVUc9eQorQ09ORklHX0VMRl9DT1JFPXkKKyMgQ09ORklHX0NPTVBBVF9CUksgaXMgbm90IHNldAogQ09ORklHX0JBU0VfRlVMTD15CiBDT05GSUdfRlVURVg9eQorQ09ORklHX0FOT05fSU5PREVTPXkKIENPTkZJR19FUE9MTD15CitDT05GSUdfU0lHTkFMRkQ9eQorQ09ORklHX1RJTUVSRkQ9eQorQ09ORklHX0VWRU5URkQ9eQogQ09ORklHX1NITUVNPXkKLUNPTkZJR19DQ19BTElHTl9GVU5DVElPTlM9MAotQ09ORklHX0NDX0FMSUdOX0xBQkVMUz0wCi1DT05GSUdfQ0NfQUxJR05fTE9PUFM9MAotQ09ORklHX0NDX0FMSUdOX0pVTVBTPTAKK0NPTkZJR19WTV9FVkVOVF9DT1VOVEVSUz15CitDT05GSUdfU0xBQj15CisjIENPTkZJR19TTFVCIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NMT0IgaXMgbm90IHNldAorIyBDT05GSUdfUFJPRklMSU5HIGlzIG5vdCBzZXQKKyMgQ09ORklHX01BUktFUlMgaXMgbm90IHNldAorIyBDT05GSUdfSEFWRV9PUFJPRklMRSBpcyBub3Qgc2V0CisjIENPTkZJR19IQVZFX0tQUk9CRVMgaXMgbm90IHNldAorIyBDT05GSUdfSEFWRV9LUkVUUFJPQkVTIGlzIG5vdCBzZXQKK0NPTkZJR19QUk9DX1BBR0VfTU9OSVRPUj15CitDT05GSUdfU0xBQklORk89eQorQ09ORklHX1JUX01VVEVYRVM9eQogIyBDT05GSUdfVElOWV9TSE1FTSBpcyBub3Qgc2V0CiBDT05GSUdfQkFTRV9TTUFMTD0wCi0KLSMKLSMgTG9hZGFibGUgbW9kdWxlIHN1cHBvcnQKLSMKIENPTkZJR19NT0RVTEVTPXkKIENPTkZJR19NT0RVTEVfVU5MT0FEPXkKICMgQ09ORklHX01PRFVMRV9GT1JDRV9VTkxPQUQgaXMgbm90IHNldAotQ09ORklHX09CU09MRVRFX01PRFBBUk09eQogIyBDT05GSUdfTU9EVkVSU0lPTlMgaXMgbm90IHNldAogIyBDT05GSUdfTU9EVUxFX1NSQ1ZFUlNJT05fQUxMIGlzIG5vdCBzZXQKIENPTkZJR19LTU9EPXkKK0NPTkZJR19CTE9DSz15CisjIENPTkZJR19MQkQgaXMgbm90IHNldAorIyBDT05GSUdfQkxLX0RFVl9JT19UUkFDRSBpcyBub3Qgc2V0CisjIENPTkZJR19MU0YgaXMgbm90IHNldAorQ09ORklHX0JMS19ERVZfQlNHPXkKKworIworIyBJTyBTY2hlZHVsZXJzCisjCitDT05GSUdfSU9TQ0hFRF9OT09QPXkKK0NPTkZJR19JT1NDSEVEX0FTPXkKK0NPTkZJR19JT1NDSEVEX0RFQURMSU5FPXkKK0NPTkZJR19JT1NDSEVEX0NGUT15CitDT05GSUdfREVGQVVMVF9BUz15CisjIENPTkZJR19ERUZBVUxUX0RFQURMSU5FIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RFRkFVTFRfQ0ZRIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RFRkFVTFRfTk9PUCBpcyBub3Qgc2V0CitDT05GSUdfREVGQVVMVF9JT1NDSEVEPSJhbnRpY2lwYXRvcnkiCitDT05GSUdfQ0xBU1NJQ19SQ1U9eQogCiAjCiAjIFBsYXRmb3JtIGRlcGVuZGVudCBzZXR1cApAQCAtNjksMTAgKzExNywyNCBAQAogIwogQ09ORklHX002ODAyMD15CiBDT05GSUdfTU1VX1NVTjM9eQotQ09ORklHX002OEtGUFVfRU1VPXkKLUNPTkZJR19NNjhLRlBVX0VNVV9FWFRSQVBSRUM9eQotIyBDT05GSUdfTTY4S0ZQVV9FTVVfT05MWSBpcyBub3Qgc2V0CisjIENPTkZJR19NNjhLRlBVX0VNVSBpcyBub3Qgc2V0CiAjIENPTkZJR19BRFZBTkNFRCBpcyBub3Qgc2V0CitDT05GSUdfU0lOR0xFX01FTU9SWV9DSFVOSz15CisjIENPTkZJR19BUkNIX0RJU0NPTlRJR01FTV9FTkFCTEUgaXMgbm90IHNldAorQ09ORklHX1NFTEVDVF9NRU1PUllfTU9ERUw9eQorQ09ORklHX0ZMQVRNRU1fTUFOVUFMPXkKKyMgQ09ORklHX0RJU0NPTlRJR01FTV9NQU5VQUwgaXMgbm90IHNldAorIyBDT05GSUdfU1BBUlNFTUVNX01BTlVBTCBpcyBub3Qgc2V0CitDT05GSUdfRkxBVE1FTT15CitDT05GSUdfRkxBVF9OT0RFX01FTV9NQVA9eQorQ09ORklHX05FRURfTVVMVElQTEVfTk9ERVM9eQorIyBDT05GSUdfU1BBUlNFTUVNX1NUQVRJQyBpcyBub3Qgc2V0CisjIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUF9FTkFCTEUgaXMgbm90IHNldAorQ09ORklHX1NQTElUX1BUTE9DS19DUFVTPTQKKyMgQ09ORklHX1JFU09VUkNFU182NEJJVCBpcyBub3Qgc2V0CitDT05GSUdfWk9ORV9ETUFfRkxBRz0xCitDT05GSUdfQk9VTkNFPXkKK0NPTkZJR19WSVJUX1RPX0JVUz15CiAKICMKICMgR2VuZXJhbCBzZXR1cApAQCAtODEsMTM0ICsxNDMsMTEgQEAKIENPTkZJR19CSU5GTVRfQU9VVD1tCiBDT05GSUdfQklORk1UX01JU0M9bQogQ09ORklHX1BST0NfSEFSRFdBUkU9eQorQ09ORklHX1pPTkVfRE1BPXkKKyMgQ09ORklHX0FSQ0hfU1VQUE9SVFNfTVNJIGlzIG5vdCBzZXQKIAogIwotIyBEZXZpY2UgRHJpdmVycwotIwotCi0jCi0jIEdlbmVyaWMgRHJpdmVyIE9wdGlvbnMKLSMKLUNPTkZJR19TVEFOREFMT05FPXkKLUNPTkZJR19QUkVWRU5UX0ZJUk1XQVJFX0JVSUxEPXkKLUNPTkZJR19GV19MT0FERVI9bQotIyBDT05GSUdfREVCVUdfRFJJVkVSIGlzIG5vdCBzZXQKLQotIwotIyBNZW1vcnkgVGVjaG5vbG9neSBEZXZpY2VzIChNVEQpCi0jCi0jIENPTkZJR19NVEQgaXMgbm90IHNldAotCi0jCi0jIFBhcmFsbGVsIHBvcnQgc3VwcG9ydAotIwotIyBDT05GSUdfUEFSUE9SVCBpcyBub3Qgc2V0Ci0KLSMKLSMgUGx1ZyBhbmQgUGxheSBzdXBwb3J0Ci0jCi0KLSMKLSMgQmxvY2sgZGV2aWNlcwotIwotIyBDT05GSUdfQkxLX0RFVl9DT1dfQ09NTU9OIGlzIG5vdCBzZXQKLUNPTkZJR19CTEtfREVWX0xPT1A9eQotQ09ORklHX0JMS19ERVZfQ1JZUFRPTE9PUD1tCi1DT05GSUdfQkxLX0RFVl9OQkQ9bQotQ09ORklHX0JMS19ERVZfUkFNPXkKLUNPTkZJR19CTEtfREVWX1JBTV9DT1VOVD0xNgotQ09ORklHX0JMS19ERVZfUkFNX1NJWkU9NDA5NgotQ09ORklHX0JMS19ERVZfSU5JVFJEPXkKLUNPTkZJR19JTklUUkFNRlNfU09VUkNFPSIiCi1DT05GSUdfQ0RST01fUEtUQ0RWRD1tCi1DT05GSUdfQ0RST01fUEtUQ0RWRF9CVUZGRVJTPTgKLSMgQ09ORklHX0NEUk9NX1BLVENEVkRfV0NBQ0hFIGlzIG5vdCBzZXQKLQotIwotIyBJTyBTY2hlZHVsZXJzCi0jCi1DT05GSUdfSU9TQ0hFRF9OT09QPXkKLUNPTkZJR19JT1NDSEVEX0FTPXkKLUNPTkZJR19JT1NDSEVEX0RFQURMSU5FPXkKLUNPTkZJR19JT1NDSEVEX0NGUT15Ci1DT05GSUdfQVRBX09WRVJfRVRIPW0KLQotIwotIyBBVEEvQVRBUEkvTUZNL1JMTCBzdXBwb3J0Ci0jCi0jIENPTkZJR19JREUgaXMgbm90IHNldAotCi0jCi0jIFNDU0kgZGV2aWNlIHN1cHBvcnQKLSMKLUNPTkZJR19TQ1NJPXkKLUNPTkZJR19TQ1NJX1BST0NfRlM9eQotCi0jCi0jIFNDU0kgc3VwcG9ydCB0eXBlIChkaXNrLCB0YXBlLCBDRC1ST00pCi0jCi1DT05GSUdfQkxLX0RFVl9TRD15Ci1DT05GSUdfQ0hSX0RFVl9TVD1tCi0jIENPTkZJR19DSFJfREVWX09TU1QgaXMgbm90IHNldAotQ09ORklHX0JMS19ERVZfU1I9eQotQ09ORklHX0JMS19ERVZfU1JfVkVORE9SPXkKLUNPTkZJR19DSFJfREVWX1NHPW0KLQotIwotIyBTb21lIFNDU0kgZGV2aWNlcyAoZS5nLiBDRCBqdWtlYm94KSBzdXBwb3J0IG11bHRpcGxlIExVTnMKLSMKLSMgQ09ORklHX1NDU0lfTVVMVElfTFVOIGlzIG5vdCBzZXQKLUNPTkZJR19TQ1NJX0NPTlNUQU5UUz15Ci0jIENPTkZJR19TQ1NJX0xPR0dJTkcgaXMgbm90IHNldAotCi0jCi0jIFNDU0kgVHJhbnNwb3J0IEF0dHJpYnV0ZXMKLSMKLSMgQ09ORklHX1NDU0lfU1BJX0FUVFJTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NDU0lfRkNfQVRUUlMgaXMgbm90IHNldAotIyBDT05GSUdfU0NTSV9JU0NTSV9BVFRSUyBpcyBub3Qgc2V0Ci0KLSMKLSMgU0NTSSBsb3ctbGV2ZWwgZHJpdmVycwotIwotIyBDT05GSUdfU0NTSV9TQVRBIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NDU0lfREVCVUcgaXMgbm90IHNldAotCi0jCi0jIE11bHRpLWRldmljZSBzdXBwb3J0IChSQUlEIGFuZCBMVk0pCi0jCi1DT05GSUdfTUQ9eQotQ09ORklHX0JMS19ERVZfTUQ9bQotQ09ORklHX01EX0xJTkVBUj1tCi1DT05GSUdfTURfUkFJRDA9bQotQ09ORklHX01EX1JBSUQxPW0KLSMgQ09ORklHX01EX1JBSUQxMCBpcyBub3Qgc2V0Ci1DT05GSUdfTURfUkFJRDU9bQotQ09ORklHX01EX1JBSUQ2PW0KLUNPTkZJR19NRF9NVUxUSVBBVEg9bQotIyBDT05GSUdfTURfRkFVTFRZIGlzIG5vdCBzZXQKLUNPTkZJR19CTEtfREVWX0RNPW0KLUNPTkZJR19ETV9DUllQVD1tCi1DT05GSUdfRE1fU05BUFNIT1Q9bQotQ09ORklHX0RNX01JUlJPUj1tCi1DT05GSUdfRE1fWkVSTz1tCi1DT05GSUdfRE1fTVVMVElQQVRIPW0KLUNPTkZJR19ETV9NVUxUSVBBVEhfRU1DPW0KLQotIwotIyBGdXNpb24gTVBUIGRldmljZSBzdXBwb3J0Ci0jCi0KLSMKLSMgSUVFRSAxMzk0IChGaXJlV2lyZSkgc3VwcG9ydAotIwotCi0jCi0jIEkyTyBkZXZpY2Ugc3VwcG9ydAotIwotCi0jCi0jIE5ldHdvcmtpbmcgc3VwcG9ydAorIyBOZXR3b3JraW5nCiAjCiBDT05GSUdfTkVUPXkKIApAQCAtMjE4LDEwICsxNTcsMTcgQEAKIENPTkZJR19QQUNLRVQ9eQogIyBDT05GSUdfUEFDS0VUX01NQVAgaXMgbm90IHNldAogQ09ORklHX1VOSVg9eQorQ09ORklHX1hGUk09eQorIyBDT05GSUdfWEZSTV9VU0VSIGlzIG5vdCBzZXQKKyMgQ09ORklHX1hGUk1fU1VCX1BPTElDWSBpcyBub3Qgc2V0CitDT05GSUdfWEZSTV9NSUdSQVRFPXkKKyMgQ09ORklHX1hGUk1fU1RBVElTVElDUyBpcyBub3Qgc2V0CiBDT05GSUdfTkVUX0tFWT15CitDT05GSUdfTkVUX0tFWV9NSUdSQVRFPXkKIENPTkZJR19JTkVUPXkKICMgQ09ORklHX0lQX01VTFRJQ0FTVCBpcyBub3Qgc2V0CiAjIENPTkZJR19JUF9BRFZBTkNFRF9ST1VURVIgaXMgbm90IHNldAorQ09ORklHX0lQX0ZJQl9IQVNIPXkKIENPTkZJR19JUF9QTlA9eQogQ09ORklHX0lQX1BOUF9ESENQPXkKIENPTkZJR19JUF9QTlBfQk9PVFA9eQpAQCAtMjMzLDE0NSArMTc5LDE5OSBAQAogQ09ORklHX0lORVRfQUg9bQogQ09ORklHX0lORVRfRVNQPW0KIENPTkZJR19JTkVUX0lQQ09NUD1tCitDT05GSUdfSU5FVF9YRlJNX1RVTk5FTD1tCiBDT05GSUdfSU5FVF9UVU5ORUw9bQotQ09ORklHX0lQX1RDUERJQUc9bQotQ09ORklHX0lQX1RDUERJQUdfSVBWNj15Ci0KLSMKLSMgSVA6IFZpcnR1YWwgU2VydmVyIENvbmZpZ3VyYXRpb24KLSMKK0NPTkZJR19JTkVUX1hGUk1fTU9ERV9UUkFOU1BPUlQ9bQorQ09ORklHX0lORVRfWEZSTV9NT0RFX1RVTk5FTD1tCitDT05GSUdfSU5FVF9YRlJNX01PREVfQkVFVD1tCitDT05GSUdfSU5FVF9MUk89bQorQ09ORklHX0lORVRfRElBRz1tCitDT05GSUdfSU5FVF9UQ1BfRElBRz1tCisjIENPTkZJR19UQ1BfQ09OR19BRFZBTkNFRCBpcyBub3Qgc2V0CitDT05GSUdfVENQX0NPTkdfQ1VCSUM9eQorQ09ORklHX0RFRkFVTFRfVENQX0NPTkc9ImN1YmljIgorIyBDT05GSUdfVENQX01ENVNJRyBpcyBub3Qgc2V0CiAjIENPTkZJR19JUF9WUyBpcyBub3Qgc2V0CiBDT05GSUdfSVBWNj1tCiBDT05GSUdfSVBWNl9QUklWQUNZPXkKK0NPTkZJR19JUFY2X1JPVVRFUl9QUkVGPXkKK0NPTkZJR19JUFY2X1JPVVRFX0lORk89eQorIyBDT05GSUdfSVBWNl9PUFRJTUlTVElDX0RBRCBpcyBub3Qgc2V0CiBDT05GSUdfSU5FVDZfQUg9bQogQ09ORklHX0lORVQ2X0VTUD1tCiBDT05GSUdfSU5FVDZfSVBDT01QPW0KKyMgQ09ORklHX0lQVjZfTUlQNiBpcyBub3Qgc2V0CitDT05GSUdfSU5FVDZfWEZSTV9UVU5ORUw9bQogQ09ORklHX0lORVQ2X1RVTk5FTD1tCitDT05GSUdfSU5FVDZfWEZSTV9NT0RFX1RSQU5TUE9SVD1tCitDT05GSUdfSU5FVDZfWEZSTV9NT0RFX1RVTk5FTD1tCitDT05GSUdfSU5FVDZfWEZSTV9NT0RFX0JFRVQ9bQorQ09ORklHX0lORVQ2X1hGUk1fTU9ERV9ST1VURU9QVElNSVpBVElPTj1tCitDT05GSUdfSVBWNl9TSVQ9bQogQ09ORklHX0lQVjZfVFVOTkVMPW0KKyMgQ09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTIGlzIG5vdCBzZXQKKyMgQ09ORklHX05FVFdPUktfU0VDTUFSSyBpcyBub3Qgc2V0CiBDT05GSUdfTkVURklMVEVSPXkKICMgQ09ORklHX05FVEZJTFRFUl9ERUJVRyBpcyBub3Qgc2V0CitDT05GSUdfTkVURklMVEVSX0FEVkFOQ0VEPXkKKworIworIyBDb3JlIE5ldGZpbHRlciBDb25maWd1cmF0aW9uCisjCitDT05GSUdfTkVURklMVEVSX05FVExJTks9bQorQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LX1FVRVVFPW0KK0NPTkZJR19ORVRGSUxURVJfTkVUTElOS19MT0c9bQorQ09ORklHX05GX0NPTk5UUkFDSz1tCitDT05GSUdfTkZfQ1RfQUNDVD15CitDT05GSUdfTkZfQ09OTlRSQUNLX01BUks9eQorIyBDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UUyBpcyBub3Qgc2V0CitDT05GSUdfTkZfQ1RfUFJPVE9fR1JFPW0KK0NPTkZJR19ORl9DVF9QUk9UT19TQ1RQPW0KK0NPTkZJR19ORl9DVF9QUk9UT19VRFBMSVRFPW0KK0NPTkZJR19ORl9DT05OVFJBQ0tfQU1BTkRBPW0KK0NPTkZJR19ORl9DT05OVFJBQ0tfRlRQPW0KK0NPTkZJR19ORl9DT05OVFJBQ0tfSDMyMz1tCitDT05GSUdfTkZfQ09OTlRSQUNLX0lSQz1tCitDT05GSUdfTkZfQ09OTlRSQUNLX05FVEJJT1NfTlM9bQorQ09ORklHX05GX0NPTk5UUkFDS19QUFRQPW0KK0NPTkZJR19ORl9DT05OVFJBQ0tfU0FORT1tCitDT05GSUdfTkZfQ09OTlRSQUNLX1NJUD1tCitDT05GSUdfTkZfQ09OTlRSQUNLX1RGVFA9bQorIyBDT05GSUdfTkZfQ1RfTkVUTElOSyBpcyBub3Qgc2V0CitDT05GSUdfTkVURklMVEVSX1hUQUJMRVM9bQorQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfQ0xBU1NJRlk9bQorQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfQ09OTk1BUks9bQorQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfRFNDUD1tCitDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9NQVJLPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX05GUVVFVUU9bQorQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfTkZMT0c9bQorQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfTk9UUkFDSz1tCitDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9SQVRFRVNUPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX1RSQUNFPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX1RDUE1TUz1tCitDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9UQ1BPUFRTVFJJUD1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0NPTU1FTlQ9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9DT05OQllURVM9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9DT05OTElNSVQ9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9DT05OTUFSSz1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0NPTk5UUkFDSz1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0RDQ1A9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9EU0NQPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfRVNQPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfSEVMUEVSPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfSVBSQU5HRT1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0xFTkdUSD1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0xJTUlUPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfTUFDPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfTUFSSz1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX09XTkVSPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfUE9MSUNZPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfTVVMVElQT1JUPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfUEtUVFlQRT1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1FVT1RBPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfUkFURUVTVD1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1JFQUxNPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfU0NUUD1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1NUQVRFPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfU1RBVElTVElDPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfU1RSSU5HPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfVENQTVNTPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfVElNRT1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1UzMj1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0hBU0hMSU1JVD1tCiAKICMKICMgSVA6IE5ldGZpbHRlciBDb25maWd1cmF0aW9uCiAjCi1DT05GSUdfSVBfTkZfQ09OTlRSQUNLPW0KLSMgQ09ORklHX0lQX05GX0NUX0FDQ1QgaXMgbm90IHNldAotQ09ORklHX0lQX05GX0NPTk5UUkFDS19NQVJLPXkKLSMgQ09ORklHX0lQX05GX0NUX1BST1RPX1NDVFAgaXMgbm90IHNldAotQ09ORklHX0lQX05GX0ZUUD1tCi1DT05GSUdfSVBfTkZfSVJDPW0KLUNPTkZJR19JUF9ORl9URlRQPW0KLUNPTkZJR19JUF9ORl9BTUFOREE9bQorQ09ORklHX05GX0NPTk5UUkFDS19JUFY0PW0KK0NPTkZJR19ORl9DT05OVFJBQ0tfUFJPQ19DT01QQVQ9eQogQ09ORklHX0lQX05GX1FVRVVFPW0KIENPTkZJR19JUF9ORl9JUFRBQkxFUz1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfTElNSVQ9bQotQ09ORklHX0lQX05GX01BVENIX0lQUkFOR0U9bQotQ09ORklHX0lQX05GX01BVENIX01BQz1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfUEtUVFlQRT1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfTUFSSz1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfTVVMVElQT1JUPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9UT1M9bQogQ09ORklHX0lQX05GX01BVENIX1JFQ0VOVD1tCiBDT05GSUdfSVBfTkZfTUFUQ0hfRUNOPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9EU0NQPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9BSF9FU1A9bQotQ09ORklHX0lQX05GX01BVENIX0xFTkdUSD1tCitDT05GSUdfSVBfTkZfTUFUQ0hfQUg9bQogQ09ORklHX0lQX05GX01BVENIX1RUTD1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfVENQTVNTPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9IRUxQRVI9bQotQ09ORklHX0lQX05GX01BVENIX1NUQVRFPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9DT05OVFJBQ0s9bQotQ09ORklHX0lQX05GX01BVENIX09XTkVSPW0KIENPTkZJR19JUF9ORl9NQVRDSF9BRERSVFlQRT1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfUkVBTE09bQotIyBDT05GSUdfSVBfTkZfTUFUQ0hfU0NUUCBpcyBub3Qgc2V0Ci0jIENPTkZJR19JUF9ORl9NQVRDSF9DT01NRU5UIGlzIG5vdCBzZXQKLUNPTkZJR19JUF9ORl9NQVRDSF9DT05OTUFSSz1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfSEFTSExJTUlUPW0KIENPTkZJR19JUF9ORl9GSUxURVI9bQogQ09ORklHX0lQX05GX1RBUkdFVF9SRUpFQ1Q9bQogQ09ORklHX0lQX05GX1RBUkdFVF9MT0c9bQogQ09ORklHX0lQX05GX1RBUkdFVF9VTE9HPW0KLUNPTkZJR19JUF9ORl9UQVJHRVRfVENQTVNTPW0KLUNPTkZJR19JUF9ORl9OQVQ9bQotQ09ORklHX0lQX05GX05BVF9ORUVERUQ9eQorQ09ORklHX05GX05BVD1tCitDT05GSUdfTkZfTkFUX05FRURFRD15CiBDT05GSUdfSVBfTkZfVEFSR0VUX01BU1FVRVJBREU9bQogQ09ORklHX0lQX05GX1RBUkdFVF9SRURJUkVDVD1tCiBDT05GSUdfSVBfTkZfVEFSR0VUX05FVE1BUD1tCi1DT05GSUdfSVBfTkZfVEFSR0VUX1NBTUU9bQotQ09ORklHX0lQX05GX05BVF9TTk1QX0JBU0lDPW0KLUNPTkZJR19JUF9ORl9OQVRfSVJDPW0KLUNPTkZJR19JUF9ORl9OQVRfRlRQPW0KLUNPTkZJR19JUF9ORl9OQVRfVEZUUD1tCi1DT05GSUdfSVBfTkZfTkFUX0FNQU5EQT1tCitDT05GSUdfTkZfTkFUX1NOTVBfQkFTSUM9bQorQ09ORklHX05GX05BVF9QUk9UT19HUkU9bQorQ09ORklHX05GX05BVF9GVFA9bQorQ09ORklHX05GX05BVF9JUkM9bQorQ09ORklHX05GX05BVF9URlRQPW0KK0NPTkZJR19ORl9OQVRfQU1BTkRBPW0KK0NPTkZJR19ORl9OQVRfUFBUUD1tCitDT05GSUdfTkZfTkFUX0gzMjM9bQorQ09ORklHX05GX05BVF9TSVA9bQogQ09ORklHX0lQX05GX01BTkdMRT1tCi1DT05GSUdfSVBfTkZfVEFSR0VUX1RPUz1tCiBDT05GSUdfSVBfTkZfVEFSR0VUX0VDTj1tCi1DT05GSUdfSVBfTkZfVEFSR0VUX0RTQ1A9bQotQ09ORklHX0lQX05GX1RBUkdFVF9NQVJLPW0KLUNPTkZJR19JUF9ORl9UQVJHRVRfQ0xBU1NJRlk9bQotQ09ORklHX0lQX05GX1RBUkdFVF9DT05OTUFSSz1tCi0jIENPTkZJR19JUF9ORl9UQVJHRVRfQ0xVU1RFUklQIGlzIG5vdCBzZXQKK0NPTkZJR19JUF9ORl9UQVJHRVRfVFRMPW0KK0NPTkZJR19JUF9ORl9UQVJHRVRfQ0xVU1RFUklQPW0KIENPTkZJR19JUF9ORl9SQVc9bQotQ09ORklHX0lQX05GX1RBUkdFVF9OT1RSQUNLPW0KIENPTkZJR19JUF9ORl9BUlBUQUJMRVM9bQogQ09ORklHX0lQX05GX0FSUEZJTFRFUj1tCiBDT05GSUdfSVBfTkZfQVJQX01BTkdMRT1tCiAKICMKLSMgSVB2NjogTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24gKEVYUEVSSU1FTlRBTCkKKyMgSVB2NjogTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24KICMKK0NPTkZJR19ORl9DT05OVFJBQ0tfSVBWNj1tCiBDT05GSUdfSVA2X05GX1FVRVVFPW0KIENPTkZJR19JUDZfTkZfSVBUQUJMRVM9bQotQ09ORklHX0lQNl9ORl9NQVRDSF9MSU1JVD1tCi1DT05GSUdfSVA2X05GX01BVENIX01BQz1tCiBDT05GSUdfSVA2X05GX01BVENIX1JUPW0KIENPTkZJR19JUDZfTkZfTUFUQ0hfT1BUUz1tCiBDT05GSUdfSVA2X05GX01BVENIX0ZSQUc9bQogQ09ORklHX0lQNl9ORl9NQVRDSF9ITD1tCi1DT05GSUdfSVA2X05GX01BVENIX01VTFRJUE9SVD1tCi1DT05GSUdfSVA2X05GX01BVENIX09XTkVSPW0KLUNPTkZJR19JUDZfTkZfTUFUQ0hfTUFSSz1tCiBDT05GSUdfSVA2X05GX01BVENIX0lQVjZIRUFERVI9bQotQ09ORklHX0lQNl9ORl9NQVRDSF9BSEVTUD1tCi1DT05GSUdfSVA2X05GX01BVENIX0xFTkdUSD1tCitDT05GSUdfSVA2X05GX01BVENIX0FIPW0KK0NPTkZJR19JUDZfTkZfTUFUQ0hfTUg9bQogQ09ORklHX0lQNl9ORl9NQVRDSF9FVUk2ND1tCiBDT05GSUdfSVA2X05GX0ZJTFRFUj1tCiBDT05GSUdfSVA2X05GX1RBUkdFVF9MT0c9bQorQ09ORklHX0lQNl9ORl9UQVJHRVRfUkVKRUNUPW0KIENPTkZJR19JUDZfTkZfTUFOR0xFPW0KLUNPTkZJR19JUDZfTkZfVEFSR0VUX01BUks9bQorQ09ORklHX0lQNl9ORl9UQVJHRVRfSEw9bQogQ09ORklHX0lQNl9ORl9SQVc9bQotQ09ORklHX1hGUk09eQotIyBDT05GSUdfWEZSTV9VU0VSIGlzIG5vdCBzZXQKK0NPTkZJR19JUF9EQ0NQPW0KK0NPTkZJR19JTkVUX0RDQ1BfRElBRz1tCitDT05GSUdfSVBfRENDUF9BQ0tWRUM9eQogCiAjCi0jIFNDVFAgQ29uZmlndXJhdGlvbiAoRVhQRVJJTUVOVEFMKQorIyBEQ0NQIENDSURzIENvbmZpZ3VyYXRpb24gKEVYUEVSSU1FTlRBTCkKICMKK0NPTkZJR19JUF9EQ0NQX0NDSUQyPW0KKyMgQ09ORklHX0lQX0RDQ1BfQ0NJRDJfREVCVUcgaXMgbm90IHNldAorQ09ORklHX0lQX0RDQ1BfQ0NJRDM9bQorIyBDT05GSUdfSVBfRENDUF9DQ0lEM19ERUJVRyBpcyBub3Qgc2V0CitDT05GSUdfSVBfRENDUF9DQ0lEM19SVE89MTAwCitDT05GSUdfSVBfRENDUF9URlJDX0xJQj1tCiBDT05GSUdfSVBfU0NUUD1tCiAjIENPTkZJR19TQ1RQX0RCR19NU0cgaXMgbm90IHNldAogIyBDT05GSUdfU0NUUF9EQkdfT0JKQ05UIGlzIG5vdCBzZXQKICMgQ09ORklHX1NDVFBfSE1BQ19OT05FIGlzIG5vdCBzZXQKICMgQ09ORklHX1NDVFBfSE1BQ19TSEExIGlzIG5vdCBzZXQKIENPTkZJR19TQ1RQX0hNQUNfTUQ1PXkKKyMgQ09ORklHX1RJUEMgaXMgbm90IHNldAogIyBDT05GSUdfQVRNIGlzIG5vdCBzZXQKICMgQ09ORklHX0JSSURHRSBpcyBub3Qgc2V0CiAjIENPTkZJR19WTEFOXzgwMjFRIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQ05FVCBpcyBub3Qgc2V0CiBDT05GSUdfTExDPW0KICMgQ09ORklHX0xMQzIgaXMgbm90IHNldAotQ09ORklHX0lQWD1tCi0jIENPTkZJR19JUFhfSU5URVJOIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lQWCBpcyBub3Qgc2V0CiBDT05GSUdfQVRBTEs9bQogIyBDT05GSUdfREVWX0FQUExFVEFMSyBpcyBub3Qgc2V0CiAjIENPTkZJR19YMjUgaXMgbm90IHNldAogIyBDT05GSUdfTEFQQiBpcyBub3Qgc2V0Ci0jIENPTkZJR19ORVRfRElWRVJUIGlzIG5vdCBzZXQKICMgQ09ORklHX0VDT05FVCBpcyBub3Qgc2V0CiAjIENPTkZJR19XQU5fUk9VVEVSIGlzIG5vdCBzZXQKLQotIwotIyBRb1MgYW5kL29yIGZhaXIgcXVldWVpbmcKLSMKICMgQ09ORklHX05FVF9TQ0hFRCBpcyBub3Qgc2V0CiBDT05GSUdfTkVUX0NMU19ST1VURT15CiAKQEAgLTM3OSw0NyArMzc5LDE1NiBAQAogIyBOZXR3b3JrIHRlc3RpbmcKICMKICMgQ09ORklHX05FVF9QS1RHRU4gaXMgbm90IHNldAotQ09ORklHX05FVFBPTEw9eQotIyBDT05GSUdfTkVUUE9MTF9SWCBpcyBub3Qgc2V0Ci0jIENPTkZJR19ORVRQT0xMX1RSQVAgaXMgbm90IHNldAotQ09ORklHX05FVF9QT0xMX0NPTlRST0xMRVI9eQogIyBDT05GSUdfSEFNUkFESU8gaXMgbm90IHNldAorIyBDT05GSUdfQ0FOIGlzIG5vdCBzZXQKICMgQ09ORklHX0lSREEgaXMgbm90IHNldAogIyBDT05GSUdfQlQgaXMgbm90IHNldAorIyBDT05GSUdfQUZfUlhSUEMgaXMgbm90IHNldAorCisjCisjIFdpcmVsZXNzCisjCisjIENPTkZJR19DRkc4MDIxMSBpcyBub3Qgc2V0CitDT05GSUdfV0lSRUxFU1NfRVhUPXkKKyMgQ09ORklHX01BQzgwMjExIGlzIG5vdCBzZXQKK0NPTkZJR19JRUVFODAyMTE9bQorIyBDT05GSUdfSUVFRTgwMjExX0RFQlVHIGlzIG5vdCBzZXQKK0NPTkZJR19JRUVFODAyMTFfQ1JZUFRfV0VQPW0KK0NPTkZJR19JRUVFODAyMTFfQ1JZUFRfQ0NNUD1tCitDT05GSUdfSUVFRTgwMjExX0NSWVBUX1RLSVA9bQorQ09ORklHX0lFRUU4MDIxMV9TT0ZUTUFDPW0KKyMgQ09ORklHX0lFRUU4MDIxMV9TT0ZUTUFDX0RFQlVHIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JGS0lMTCBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRfOVAgaXMgbm90IHNldAorCisjCisjIERldmljZSBEcml2ZXJzCisjCisKKyMKKyMgR2VuZXJpYyBEcml2ZXIgT3B0aW9ucworIworQ09ORklHX1VFVkVOVF9IRUxQRVJfUEFUSD0iL3NiaW4vaG90cGx1ZyIKK0NPTkZJR19TVEFOREFMT05FPXkKK0NPTkZJR19QUkVWRU5UX0ZJUk1XQVJFX0JVSUxEPXkKK0NPTkZJR19GV19MT0FERVI9bQorIyBDT05GSUdfU1lTX0hZUEVSVklTT1IgaXMgbm90IHNldAorQ09ORklHX0NPTk5FQ1RPUj1tCisjIENPTkZJR19NVEQgaXMgbm90IHNldAorIyBDT05GSUdfUEFSUE9SVCBpcyBub3Qgc2V0CitDT05GSUdfQkxLX0RFVj15CisjIENPTkZJR19CTEtfREVWX0NPV19DT01NT04gaXMgbm90IHNldAorQ09ORklHX0JMS19ERVZfTE9PUD15CitDT05GSUdfQkxLX0RFVl9DUllQVE9MT09QPW0KK0NPTkZJR19CTEtfREVWX05CRD1tCitDT05GSUdfQkxLX0RFVl9SQU09eQorQ09ORklHX0JMS19ERVZfUkFNX0NPVU5UPTE2CitDT05GSUdfQkxLX0RFVl9SQU1fU0laRT00MDk2CisjIENPTkZJR19CTEtfREVWX1hJUCBpcyBub3Qgc2V0CitDT05GSUdfQ0RST01fUEtUQ0RWRD1tCitDT05GSUdfQ0RST01fUEtUQ0RWRF9CVUZGRVJTPTgKKyMgQ09ORklHX0NEUk9NX1BLVENEVkRfV0NBQ0hFIGlzIG5vdCBzZXQKK0NPTkZJR19BVEFfT1ZFUl9FVEg9bQorQ09ORklHX01JU0NfREVWSUNFUz15CisjIENPTkZJR19FRVBST01fOTNDWDYgaXMgbm90IHNldAorIyBDT05GSUdfRU5DTE9TVVJFX1NFUlZJQ0VTIGlzIG5vdCBzZXQKK0NPTkZJR19IQVZFX0lERT15CisjIENPTkZJR19JREUgaXMgbm90IHNldAorCisjCisjIFNDU0kgZGV2aWNlIHN1cHBvcnQKKyMKK0NPTkZJR19SQUlEX0FUVFJTPW0KK0NPTkZJR19TQ1NJPXkKKyMgQ09ORklHX1NDU0lfRE1BIGlzIG5vdCBzZXQKK0NPTkZJR19TQ1NJX1RHVD1tCisjIENPTkZJR19TQ1NJX05FVExJTksgaXMgbm90IHNldAorQ09ORklHX1NDU0lfUFJPQ19GUz15CisKKyMKKyMgU0NTSSBzdXBwb3J0IHR5cGUgKGRpc2ssIHRhcGUsIENELVJPTSkKKyMKK0NPTkZJR19CTEtfREVWX1NEPXkKK0NPTkZJR19DSFJfREVWX1NUPW0KK0NPTkZJR19DSFJfREVWX09TU1Q9bQorQ09ORklHX0JMS19ERVZfU1I9eQorQ09ORklHX0JMS19ERVZfU1JfVkVORE9SPXkKK0NPTkZJR19DSFJfREVWX1NHPW0KKyMgQ09ORklHX0NIUl9ERVZfU0NIIGlzIG5vdCBzZXQKKworIworIyBTb21lIFNDU0kgZGV2aWNlcyAoZS5nLiBDRCBqdWtlYm94KSBzdXBwb3J0IG11bHRpcGxlIExVTnMKKyMKKyMgQ09ORklHX1NDU0lfTVVMVElfTFVOIGlzIG5vdCBzZXQKK0NPTkZJR19TQ1NJX0NPTlNUQU5UUz15CisjIENPTkZJR19TQ1NJX0xPR0dJTkcgaXMgbm90IHNldAorIyBDT05GSUdfU0NTSV9TQ0FOX0FTWU5DIGlzIG5vdCBzZXQKK0NPTkZJR19TQ1NJX1dBSVRfU0NBTj1tCisKKyMKKyMgU0NTSSBUcmFuc3BvcnRzCisjCitDT05GSUdfU0NTSV9TUElfQVRUUlM9eQorIyBDT05GSUdfU0NTSV9GQ19BVFRSUyBpcyBub3Qgc2V0CitDT05GSUdfU0NTSV9JU0NTSV9BVFRSUz1tCitDT05GSUdfU0NTSV9TQVNfQVRUUlM9bQorQ09ORklHX1NDU0lfU0FTX0xJQlNBUz1tCitDT05GSUdfU0NTSV9TQVNfSE9TVF9TTVA9eQorIyBDT05GSUdfU0NTSV9TQVNfTElCU0FTX0RFQlVHIGlzIG5vdCBzZXQKK0NPTkZJR19TQ1NJX1NSUF9BVFRSUz1tCitDT05GSUdfU0NTSV9TUlBfVEdUX0FUVFJTPXkKK0NPTkZJR19TQ1NJX0xPV0xFVkVMPXkKK0NPTkZJR19JU0NTSV9UQ1A9bQorIyBDT05GSUdfU0NTSV9ERUJVRyBpcyBub3Qgc2V0CitDT05GSUdfU1VOM19TQ1NJPXkKK0NPTkZJR19NRD15CitDT05GSUdfQkxLX0RFVl9NRD1tCitDT05GSUdfTURfTElORUFSPW0KK0NPTkZJR19NRF9SQUlEMD1tCitDT05GSUdfTURfUkFJRDE9bQorIyBDT05GSUdfTURfUkFJRDEwIGlzIG5vdCBzZXQKK0NPTkZJR19NRF9SQUlENDU2PW0KK0NPTkZJR19NRF9SQUlENV9SRVNIQVBFPXkKK0NPTkZJR19NRF9NVUxUSVBBVEg9bQorIyBDT05GSUdfTURfRkFVTFRZIGlzIG5vdCBzZXQKK0NPTkZJR19CTEtfREVWX0RNPW0KKyMgQ09ORklHX0RNX0RFQlVHIGlzIG5vdCBzZXQKK0NPTkZJR19ETV9DUllQVD1tCitDT05GSUdfRE1fU05BUFNIT1Q9bQorQ09ORklHX0RNX01JUlJPUj1tCitDT05GSUdfRE1fWkVSTz1tCitDT05GSUdfRE1fTVVMVElQQVRIPW0KK0NPTkZJR19ETV9NVUxUSVBBVEhfRU1DPW0KK0NPTkZJR19ETV9NVUxUSVBBVEhfUkRBQz1tCitDT05GSUdfRE1fTVVMVElQQVRIX0hQPW0KKyMgQ09ORklHX0RNX0RFTEFZIGlzIG5vdCBzZXQKK0NPTkZJR19ETV9VRVZFTlQ9eQogQ09ORklHX05FVERFVklDRVM9eQorIyBDT05GSUdfTkVUREVWSUNFU19NVUxUSVFVRVVFIGlzIG5vdCBzZXQKIENPTkZJR19EVU1NWT1tCiAjIENPTkZJR19CT05ESU5HIGlzIG5vdCBzZXQKK0NPTkZJR19NQUNWTEFOPW0KIENPTkZJR19FUVVBTElaRVI9bQogIyBDT05GSUdfVFVOIGlzIG5vdCBzZXQKLQotIwotIyBFdGhlcm5ldCAoMTAgb3IgMTAwTWJpdCkKLSMKK0NPTkZJR19WRVRIPW0KKyMgQ09ORklHX1BIWUxJQiBpcyBub3Qgc2V0CiBDT05GSUdfTkVUX0VUSEVSTkVUPXkKLUNPTkZJR19NSUk9bQorIyBDT05GSUdfTUlJIGlzIG5vdCBzZXQKIENPTkZJR19TVU4zTEFOQ0U9eQogQ09ORklHX1NVTjNfODI1ODY9eQorIyBDT05GSUdfSUJNX05FV19FTUFDX1pNSUkgaXMgbm90IHNldAorIyBDT05GSUdfSUJNX05FV19FTUFDX1JHTUlJIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lCTV9ORVdfRU1BQ19UQUggaXMgbm90IHNldAorIyBDT05GSUdfSUJNX05FV19FTUFDX0VNQUM0IGlzIG5vdCBzZXQKKyMgQ09ORklHX0I0NCBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRERVZfMTAwMCBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRERVZfMTAwMDAgaXMgbm90IHNldAogCiAjCi0jIEV0aGVybmV0ICgxMDAwIE1iaXQpCisjIFdpcmVsZXNzIExBTgogIwotCi0jCi0jIEV0aGVybmV0ICgxMDAwMCBNYml0KQotIwotCi0jCi0jIFRva2VuIFJpbmcgZGV2aWNlcwotIwotCi0jCi0jIFdpcmVsZXNzIExBTiAobm9uLWhhbXJhZGlvKQotIwotIyBDT05GSUdfTkVUX1JBRElPIGlzIG5vdCBzZXQKLQotIwotIyBXYW4gaW50ZXJmYWNlcwotIworIyBDT05GSUdfV0xBTl9QUkU4MDIxMSBpcyBub3Qgc2V0CisjIENPTkZJR19XTEFOXzgwMjExIGlzIG5vdCBzZXQKICMgQ09ORklHX1dBTiBpcyBub3Qgc2V0CiBDT05GSUdfUFBQPW0KICMgQ09ORklHX1BQUF9NVUxUSUxJTksgaXMgbm90IHNldApAQCAtNDI4LDI4ICs1MzcsMjggQEAKIENPTkZJR19QUFBfU1lOQ19UVFk9bQogQ09ORklHX1BQUF9ERUZMQVRFPW0KIENPTkZJR19QUFBfQlNEQ09NUD1tCitDT05GSUdfUFBQX01QUEU9bQogQ09ORklHX1BQUE9FPW0KK0NPTkZJR19QUFBPTDJUUD1tCiBDT05GSUdfU0xJUD1tCiBDT05GSUdfU0xJUF9DT01QUkVTU0VEPXkKK0NPTkZJR19TTEhDPW0KIENPTkZJR19TTElQX1NNQVJUPXkKIENPTkZJR19TTElQX01PREVfU0xJUDY9eQotQ09ORklHX1NIQVBFUj1tCiBDT05GSUdfTkVUQ09OU09MRT1tCi0KLSMKLSMgSVNETiBzdWJzeXN0ZW0KLSMKK0NPTkZJR19ORVRDT05TT0xFX0RZTkFNSUM9eQorQ09ORklHX05FVFBPTEw9eQorIyBDT05GSUdfTkVUUE9MTF9UUkFQIGlzIG5vdCBzZXQKK0NPTkZJR19ORVRfUE9MTF9DT05UUk9MTEVSPXkKICMgQ09ORklHX0lTRE4gaXMgbm90IHNldAotCi0jCi0jIFRlbGVwaG9ueSBTdXBwb3J0Ci0jCiAjIENPTkZJR19QSE9ORSBpcyBub3Qgc2V0CiAKICMKICMgSW5wdXQgZGV2aWNlIHN1cHBvcnQKICMKIENPTkZJR19JTlBVVD15CitDT05GSUdfSU5QVVRfRkZfTUVNTEVTUz1tCisjIENPTkZJR19JTlBVVF9QT0xMREVWIGlzIG5vdCBzZXQKIAogIwogIyBVc2VybGFuZCBpbnRlcmZhY2VzCkBAIC00NTksNyArNTY4LDYgQEAKIENPTkZJR19JTlBVVF9NT1VTRURFVl9TQ1JFRU5fWD0xMDI0CiBDT05GSUdfSU5QVVRfTU9VU0VERVZfU0NSRUVOX1k9NzY4CiAjIENPTkZJR19JTlBVVF9KT1lERVYgaXMgbm90IHNldAotIyBDT05GSUdfSU5QVVRfVFNERVYgaXMgbm90IHNldAogIyBDT05GSUdfSU5QVVRfRVZERVYgaXMgbm90IHNldAogIyBDT05GSUdfSU5QVVRfRVZCVUcgaXMgbm90IHNldAogCkBAIC00NzIsMTEgKzU4MCwxOSBAQAogIyBDT05GSUdfS0VZQk9BUkRfTEtLQkQgaXMgbm90IHNldAogIyBDT05GSUdfS0VZQk9BUkRfWFRLQkQgaXMgbm90IHNldAogIyBDT05GSUdfS0VZQk9BUkRfTkVXVE9OIGlzIG5vdCBzZXQKKyMgQ09ORklHX0tFWUJPQVJEX1NUT1dBV0FZIGlzIG5vdCBzZXQKIENPTkZJR19JTlBVVF9NT1VTRT15CiBDT05GSUdfTU9VU0VfUFMyPW0KK0NPTkZJR19NT1VTRV9QUzJfQUxQUz15CitDT05GSUdfTU9VU0VfUFMyX0xPR0lQUzJQUD15CitDT05GSUdfTU9VU0VfUFMyX1NZTkFQVElDUz15CitDT05GSUdfTU9VU0VfUFMyX0xJRkVCT09LPXkKK0NPTkZJR19NT1VTRV9QUzJfVFJBQ0tQT0lOVD15CisjIENPTkZJR19NT1VTRV9QUzJfVE9VQ0hLSVQgaXMgbm90IHNldAogQ09ORklHX01PVVNFX1NFUklBTD1tCiAjIENPTkZJR19NT1VTRV9WU1hYWEFBIGlzIG5vdCBzZXQKICMgQ09ORklHX0lOUFVUX0pPWVNUSUNLIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lOUFVUX1RBQkxFVCBpcyBub3Qgc2V0CiAjIENPTkZJR19JTlBVVF9UT1VDSFNDUkVFTiBpcyBub3Qgc2V0CiAjIENPTkZJR19JTlBVVF9NSVNDIGlzIG5vdCBzZXQKIApAQCAtNDg0LDcgKzYwMCw3IEBACiAjIEhhcmR3YXJlIEkvTyBwb3J0cwogIwogQ09ORklHX1NFUklPPXkKLUNPTkZJR19TRVJJT19TRVJQT1JUPW0KKyMgQ09ORklHX1NFUklPX1NFUlBPUlQgaXMgbm90IHNldAogQ09ORklHX1NFUklPX0xJQlBTMj1tCiAjIENPTkZJR19TRVJJT19SQVcgaXMgbm90IHNldAogIyBDT05GSUdfR0FNRVBPUlQgaXMgbm90IHNldApAQCAtNDk1LDYgKzYxMSw3IEBACiBDT05GSUdfVlQ9eQogQ09ORklHX1ZUX0NPTlNPTEU9eQogQ09ORklHX0hXX0NPTlNPTEU9eQorQ09ORklHX1ZUX0hXX0NPTlNPTEVfQklORElORz15CiAjIENPTkZJR19TRVJJQUxfTk9OU1RBTkRBUkQgaXMgbm90IHNldAogCiAjCkBAIC01MDgsMTEyICs2MjUsMTEzIEBACiBDT05GSUdfVU5JWDk4X1BUWVM9eQogQ09ORklHX0xFR0FDWV9QVFlTPXkKIENPTkZJR19MRUdBQ1lfUFRZX0NPVU5UPTI1NgotCi0jCi0jIElQTUkKLSMKICMgQ09ORklHX0lQTUlfSEFORExFUiBpcyBub3Qgc2V0Ci0KLSMKLSMgV2F0Y2hkb2cgQ2FyZHMKLSMKLSMgQ09ORklHX1dBVENIRE9HIGlzIG5vdCBzZXQKLUNPTkZJR19HRU5fUlRDPXkKKyMgQ09ORklHX0hXX1JBTkRPTSBpcyBub3Qgc2V0CitDT05GSUdfR0VOX1JUQz1tCiBDT05GSUdfR0VOX1JUQ19YPXkKLSMgQ09ORklHX0RUTEsgaXMgbm90IHNldAogIyBDT05GSUdfUjM5NjQgaXMgbm90IHNldAotCi0jCi0jIEZ0YXBlLCB0aGUgZmxvcHB5IHRhcGUgZGV2aWNlIGRyaXZlcgotIwotIyBDT05GSUdfRFJNIGlzIG5vdCBzZXQKICMgQ09ORklHX1JBV19EUklWRVIgaXMgbm90IHNldAotCi0jCi0jIFRQTSBkZXZpY2VzCi0jCi0KLSMKLSMgSTJDIHN1cHBvcnQKLSMKKyMgQ09ORklHX1RDR19UUE0gaXMgbm90IHNldAogIyBDT05GSUdfSTJDIGlzIG5vdCBzZXQKIAogIwotIyBEYWxsYXMncyAxLXdpcmUgYnVzCisjIFNQSSBzdXBwb3J0CiAjCisjIENPTkZJR19TUEkgaXMgbm90IHNldAorIyBDT05GSUdfU1BJX01BU1RFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19XMSBpcyBub3Qgc2V0CisjIENPTkZJR19QT1dFUl9TVVBQTFkgaXMgbm90IHNldAorIyBDT05GSUdfSFdNT04gaXMgbm90IHNldAorIyBDT05GSUdfVEhFUk1BTCBpcyBub3Qgc2V0CisjIENPTkZJR19XQVRDSERPRyBpcyBub3Qgc2V0CiAKICMKLSMgTWlzYyBkZXZpY2VzCisjIFNvbmljcyBTaWxpY29uIEJhY2twbGFuZQogIworQ09ORklHX1NTQl9QT1NTSUJMRT15CisjIENPTkZJR19TU0IgaXMgbm90IHNldAorCisjCisjIE11bHRpZnVuY3Rpb24gZGV2aWNlIGRyaXZlcnMKKyMKKyMgQ09ORklHX01GRF9TTTUwMSBpcyBub3Qgc2V0CiAKICMKICMgTXVsdGltZWRpYSBkZXZpY2VzCiAjCiAjIENPTkZJR19WSURFT19ERVYgaXMgbm90IHNldAotCi0jCi0jIERpZ2l0YWwgVmlkZW8gQnJvYWRjYXN0aW5nIERldmljZXMKLSMKLSMgQ09ORklHX0RWQiBpcyBub3Qgc2V0CisjIENPTkZJR19EVkJfQ09SRSBpcyBub3Qgc2V0CisjIENPTkZJR19EQUIgaXMgbm90IHNldAogCiAjCiAjIEdyYXBoaWNzIHN1cHBvcnQKICMKKyMgQ09ORklHX1ZHQVNUQVRFIGlzIG5vdCBzZXQKKyMgQ09ORklHX1ZJREVPX09VVFBVVF9DT05UUk9MIGlzIG5vdCBzZXQKIENPTkZJR19GQj15CisjIENPTkZJR19GSVJNV0FSRV9FRElEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZCX0REQyBpcyBub3Qgc2V0CiAjIENPTkZJR19GQl9DRkJfRklMTFJFQ1QgaXMgbm90IHNldAogIyBDT05GSUdfRkJfQ0ZCX0NPUFlBUkVBIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZCX0NGQl9JTUFHRUJMSVQgaXMgbm90IHNldAotIyBDT05GSUdfRkJfU09GVF9DVVJTT1IgaXMgbm90IHNldAorIyBDT05GSUdfRkJfQ0ZCX1JFVl9QSVhFTFNfSU5fQllURSBpcyBub3Qgc2V0CisjIENPTkZJR19GQl9TWVNfRklMTFJFQ1QgaXMgbm90IHNldAorIyBDT05GSUdfRkJfU1lTX0NPUFlBUkVBIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZCX1NZU19JTUFHRUJMSVQgaXMgbm90IHNldAorIyBDT05GSUdfRkJfU1lTX0ZPUFMgaXMgbm90IHNldAorQ09ORklHX0ZCX0RFRkVSUkVEX0lPPXkKKyMgQ09ORklHX0ZCX1NWR0FMSUIgaXMgbm90IHNldAogIyBDT05GSUdfRkJfTUFDTU9ERVMgaXMgbm90IHNldAotQ09ORklHX0ZCX01PREVfSEVMUEVSUz15CisjIENPTkZJR19GQl9CQUNLTElHSFQgaXMgbm90IHNldAorIyBDT05GSUdfRkJfTU9ERV9IRUxQRVJTIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZCX1RJTEVCTElUVElORyBpcyBub3Qgc2V0CisKKyMKKyMgRnJhbWUgYnVmZmVyIGhhcmR3YXJlIGRyaXZlcnMKKyMKKyMgQ09ORklHX0ZCX1VWRVNBIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZCX1MxRDEzWFhYIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZCX1ZJUlRVQUwgaXMgbm90IHNldAorIyBDT05GSUdfQkFDS0xJR0hUX0xDRF9TVVBQT1JUIGlzIG5vdCBzZXQKKworIworIyBEaXNwbGF5IGRldmljZSBzdXBwb3J0CisjCisjIENPTkZJR19ESVNQTEFZX1NVUFBPUlQgaXMgbm90IHNldAogCiAjCiAjIENvbnNvbGUgZGlzcGxheSBkcml2ZXIgc3VwcG9ydAogIwogQ09ORklHX0RVTU1ZX0NPTlNPTEU9eQogQ09ORklHX0ZSQU1FQlVGRkVSX0NPTlNPTEU9eQorIyBDT05GSUdfRlJBTUVCVUZGRVJfQ09OU09MRV9ERVRFQ1RfUFJJTUFSWSBpcyBub3Qgc2V0CisjIENPTkZJR19GUkFNRUJVRkZFUl9DT05TT0xFX1JPVEFUSU9OIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZPTlRTIGlzIG5vdCBzZXQKIENPTkZJR19GT05UXzh4OD15CiBDT05GSUdfRk9OVF84eDE2PXkKLQotIwotIyBMb2dvIGNvbmZpZ3VyYXRpb24KLSMKIENPTkZJR19MT0dPPXkKIENPTkZJR19MT0dPX0xJTlVYX01PTk89eQogQ09ORklHX0xPR09fTElOVVhfVkdBMTY9eQogQ09ORklHX0xPR09fTElOVVhfQ0xVVDIyND15Ci0jIENPTkZJR19CQUNLTElHSFRfTENEX1NVUFBPUlQgaXMgbm90IHNldAogCiAjCiAjIFNvdW5kCiAjCiAjIENPTkZJR19TT1VORCBpcyBub3Qgc2V0Ci0KLSMKLSMgVVNCIHN1cHBvcnQKLSMKLSMgQ09ORklHX1VTQl9BUkNIX0hBU19IQ0QgaXMgbm90IHNldAotIyBDT05GSUdfVVNCX0FSQ0hfSEFTX09IQ0kgaXMgbm90IHNldAotCi0jCi0jIFVTQiBHYWRnZXQgU3VwcG9ydAotIwotIyBDT05GSUdfVVNCX0dBREdFVCBpcyBub3Qgc2V0Ci0KLSMKLSMgTU1DL1NEIENhcmQgc3VwcG9ydAotIworQ09ORklHX0hJRF9TVVBQT1JUPXkKK0NPTkZJR19ISUQ9bQorIyBDT05GSUdfSElEX0RFQlVHIGlzIG5vdCBzZXQKK0NPTkZJR19ISURSQVc9eQorIyBDT05GSUdfVVNCX1NVUFBPUlQgaXMgbm90IHNldAogIyBDT05GSUdfTU1DIGlzIG5vdCBzZXQKKyMgQ09ORklHX01FTVNUSUNLIGlzIG5vdCBzZXQKKyMgQ09ORklHX05FV19MRURTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JUQ19DTEFTUyBpcyBub3Qgc2V0CiAKICMKLSMgSW5maW5pQmFuZCBzdXBwb3J0CisjIFVzZXJzcGFjZSBJL08KICMKLSMgQ09ORklHX0lORklOSUJBTkQgaXMgbm90IHNldAorIyBDT05GSUdfVUlPIGlzIG5vdCBzZXQKIAogIwogIyBDaGFyYWN0ZXIgZGV2aWNlcwpAQCAtNjI0LDEwICs3NDIsMTEgQEAKICMKIENPTkZJR19FWFQyX0ZTPXkKICMgQ09ORklHX0VYVDJfRlNfWEFUVFIgaXMgbm90IHNldAorIyBDT05GSUdfRVhUMl9GU19YSVAgaXMgbm90IHNldAogQ09ORklHX0VYVDNfRlM9eQogIyBDT05GSUdfRVhUM19GU19YQVRUUiBpcyBub3Qgc2V0CisjIENPTkZJR19FWFQ0REVWX0ZTIGlzIG5vdCBzZXQKIENPTkZJR19KQkQ9eQotIyBDT05GSUdfSkJEX0RFQlVHIGlzIG5vdCBzZXQKIENPTkZJR19SRUlTRVJGU19GUz1tCiAjIENPTkZJR19SRUlTRVJGU19DSEVDSyBpcyBub3Qgc2V0CiAjIENPTkZJR19SRUlTRVJGU19QUk9DX0lORk8gaXMgbm90IHNldApAQCAtNjM4LDI1ICs3NTcsMjkgQEAKICMgQ09ORklHX0pGU19ERUJVRyBpcyBub3Qgc2V0CiAjIENPTkZJR19KRlNfU1RBVElTVElDUyBpcyBub3Qgc2V0CiBDT05GSUdfRlNfUE9TSVhfQUNMPXkKLQotIwotIyBYRlMgc3VwcG9ydAotIwogQ09ORklHX1hGU19GUz1tCi1DT05GSUdfWEZTX0VYUE9SVD15Ci0jIENPTkZJR19YRlNfUlQgaXMgbm90IHNldAogIyBDT05GSUdfWEZTX1FVT1RBIGlzIG5vdCBzZXQKICMgQ09ORklHX1hGU19TRUNVUklUWSBpcyBub3Qgc2V0CiAjIENPTkZJR19YRlNfUE9TSVhfQUNMIGlzIG5vdCBzZXQKLUNPTkZJR19NSU5JWF9GUz15Ci0jIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19YRlNfUlQgaXMgbm90IHNldAorQ09ORklHX0dGUzJfRlM9bQorQ09ORklHX0dGUzJfRlNfTE9DS0lOR19OT0xPQ0s9bQorQ09ORklHX0dGUzJfRlNfTE9DS0lOR19ETE09bQorQ09ORklHX09DRlMyX0ZTPW0KKyMgQ09ORklHX09DRlMyX0RFQlVHX01BU0tMT0cgaXMgbm90IHNldAorIyBDT05GSUdfT0NGUzJfREVCVUdfRlMgaXMgbm90IHNldAorQ09ORklHX0ROT1RJRlk9eQorQ09ORklHX0lOT1RJRlk9eQorQ09ORklHX0lOT1RJRllfVVNFUj15CiBDT05GSUdfUVVPVEE9eQorQ09ORklHX1FVT1RBX05FVExJTktfSU5URVJGQUNFPXkKKyMgQ09ORklHX1BSSU5UX1FVT1RBX1dBUk5JTkcgaXMgbm90IHNldAogIyBDT05GSUdfUUZNVF9WMSBpcyBub3Qgc2V0CiAjIENPTkZJR19RRk1UX1YyIGlzIG5vdCBzZXQKIENPTkZJR19RVU9UQUNUTD15Ci1DT05GSUdfRE5PVElGWT15CiBDT05GSUdfQVVUT0ZTX0ZTPW0KIENPTkZJR19BVVRPRlM0X0ZTPW0KK0NPTkZJR19GVVNFX0ZTPW0KIAogIwogIyBDRC1ST00vRFZEIEZpbGVzeXN0ZW1zCkBAIC02NjQsNyArNzg3LDYgQEAKIENPTkZJR19JU085NjYwX0ZTPXkKIENPTkZJR19KT0xJRVQ9eQogQ09ORklHX1pJU09GUz15Ci1DT05GSUdfWklTT0ZTX0ZTPXkKIENPTkZJR19VREZfRlM9bQogQ09ORklHX1VERl9OTFM9eQogCkBAIC02ODMsMTUgKzgwNSwxMiBAQAogIwogQ09ORklHX1BST0NfRlM9eQogQ09ORklHX1BST0NfS0NPUkU9eQorQ09ORklHX1BST0NfU1lTQ1RMPXkKIENPTkZJR19TWVNGUz15Ci1DT05GSUdfREVWRlNfRlM9eQotQ09ORklHX0RFVkZTX01PVU5UPXkKLSMgQ09ORklHX0RFVkZTX0RFQlVHIGlzIG5vdCBzZXQKLSMgQ09ORklHX0RFVlBUU19GU19YQVRUUiBpcyBub3Qgc2V0CiBDT05GSUdfVE1QRlM9eQotIyBDT05GSUdfVE1QRlNfWEFUVFIgaXMgbm90IHNldAorIyBDT05GSUdfVE1QRlNfUE9TSVhfQUNMIGlzIG5vdCBzZXQKICMgQ09ORklHX0hVR0VUTEJfUEFHRSBpcyBub3Qgc2V0Ci1DT05GSUdfUkFNRlM9eQorQ09ORklHX0NPTkZJR0ZTX0ZTPW0KIAogIwogIyBNaXNjZWxsYW5lb3VzIGZpbGVzeXN0ZW1zCkBAIC03MDUsNDQgKzgyNCw0MCBAQAogIyBDT05GSUdfRUZTX0ZTIGlzIG5vdCBzZXQKIENPTkZJR19DUkFNRlM9bQogIyBDT05GSUdfVlhGU19GUyBpcyBub3Qgc2V0CitDT05GSUdfTUlOSVhfRlM9eQogQ09ORklHX0hQRlNfRlM9bQogIyBDT05GSUdfUU5YNEZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JPTUZTX0ZTIGlzIG5vdCBzZXQKIENPTkZJR19TWVNWX0ZTPW0KIENPTkZJR19VRlNfRlM9bQotQ09ORklHX1VGU19GU19XUklURT15Ci0KLSMKLSMgTmV0d29yayBGaWxlIFN5c3RlbXMKLSMKKyMgQ09ORklHX1VGU19GU19XUklURSBpcyBub3Qgc2V0CisjIENPTkZJR19VRlNfREVCVUcgaXMgbm90IHNldAorQ09ORklHX05FVFdPUktfRklMRVNZU1RFTVM9eQogQ09ORklHX05GU19GUz15CiBDT05GSUdfTkZTX1YzPXkKKyMgQ09ORklHX05GU19WM19BQ0wgaXMgbm90IHNldAogQ09ORklHX05GU19WND15CiAjIENPTkZJR19ORlNfRElSRUNUSU8gaXMgbm90IHNldAogQ09ORklHX05GU0Q9bQogQ09ORklHX05GU0RfVjM9eQotQ09ORklHX05GU0RfVjQ9eQorIyBDT05GSUdfTkZTRF9WM19BQ0wgaXMgbm90IHNldAorIyBDT05GSUdfTkZTRF9WNCBpcyBub3Qgc2V0CiBDT05GSUdfTkZTRF9UQ1A9eQogQ09ORklHX1JPT1RfTkZTPXkKIENPTkZJR19MT0NLRD15CiBDT05GSUdfTE9DS0RfVjQ9eQogQ09ORklHX0VYUE9SVEZTPW0KK0NPTkZJR19ORlNfQ09NTU9OPXkKIENPTkZJR19TVU5SUEM9eQogQ09ORklHX1NVTlJQQ19HU1M9eQorQ09ORklHX1NVTlJQQ19CSU5EMzQ9eQogQ09ORklHX1JQQ1NFQ19HU1NfS1JCNT15CiAjIENPTkZJR19SUENTRUNfR1NTX1NQS00zIGlzIG5vdCBzZXQKIENPTkZJR19TTUJfRlM9bQogQ09ORklHX1NNQl9OTFNfREVGQVVMVD15CiBDT05GSUdfU01CX05MU19SRU1PVEU9ImNwNDM3IgogIyBDT05GSUdfQ0lGUyBpcyBub3Qgc2V0Ci1DT05GSUdfTkNQX0ZTPW0KLSMgQ09ORklHX05DUEZTX1BBQ0tFVF9TSUdOSU5HIGlzIG5vdCBzZXQKLSMgQ09ORklHX05DUEZTX0lPQ1RMX0xPQ0tJTkcgaXMgbm90IHNldAotIyBDT05GSUdfTkNQRlNfU1RST05HIGlzIG5vdCBzZXQKLSMgQ09ORklHX05DUEZTX05GU19OUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19OQ1BGU19PUzJfTlMgaXMgbm90IHNldAotIyBDT05GSUdfTkNQRlNfU01BTExET1MgaXMgbm90IHNldAotQ09ORklHX05DUEZTX05MUz15Ci0jIENPTkZJR19OQ1BGU19FWFRSQVMgaXMgbm90IHNldAorIyBDT05GSUdfTkNQX0ZTIGlzIG5vdCBzZXQKIENPTkZJR19DT0RBX0ZTPW0KICMgQ09ORklHX0NPREFfRlNfT0xEX0FQSSBpcyBub3Qgc2V0CiAjIENPTkZJR19BRlNfRlMgaXMgbm90IHNldApAQCAtNzUzLDEwICs4NjgsNiBAQAogIyBDT05GSUdfUEFSVElUSU9OX0FEVkFOQ0VEIGlzIG5vdCBzZXQKIENPTkZJR19NU0RPU19QQVJUSVRJT049eQogQ09ORklHX1NVTl9QQVJUSVRJT049eQotCi0jCi0jIE5hdGl2ZSBMYW5ndWFnZSBTdXBwb3J0Ci0jCiBDT05GSUdfTkxTPXkKIENPTkZJR19OTFNfREVGQVVMVD0iaXNvODg1OS0xIgogQ09ORklHX05MU19DT0RFUEFHRV80Mzc9eQpAQCAtNzk3LDM1ICs5MDgsNDIgQEAKIENPTkZJR19OTFNfS09JOF9SPW0KIENPTkZJR19OTFNfS09JOF9VPW0KIENPTkZJR19OTFNfVVRGOD1tCitDT05GSUdfRExNPW0KKyMgQ09ORklHX0RMTV9ERUJVRyBpcyBub3Qgc2V0CiAKICMKICMgS2VybmVsIGhhY2tpbmcKICMKICMgQ09ORklHX1BSSU5US19USU1FIGlzIG5vdCBzZXQKLUNPTkZJR19ERUJVR19LRVJORUw9eQorQ09ORklHX0VOQUJMRV9XQVJOX0RFUFJFQ0FURUQ9eQorQ09ORklHX0VOQUJMRV9NVVNUX0NIRUNLPXkKIENPTkZJR19NQUdJQ19TWVNSUT15Ci1DT05GSUdfTE9HX0JVRl9TSElGVD0xNgotIyBDT05GSUdfU0NIRURTVEFUUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ERUJVR19TTEFCIGlzIG5vdCBzZXQKLSMgQ09ORklHX0RFQlVHX1NQSU5MT0NLIGlzIG5vdCBzZXQKLSMgQ09ORklHX0RFQlVHX1NQSU5MT0NLX1NMRUVQIGlzIG5vdCBzZXQKLSMgQ09ORklHX0RFQlVHX0tPQkpFQ1QgaXMgbm90IHNldAotQ09ORklHX0RFQlVHX0JVR1ZFUkJPU0U9eQotIyBDT05GSUdfREVCVUdfSU5GTyBpcyBub3Qgc2V0CisjIENPTkZJR19VTlVTRURfU1lNQk9MUyBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19GUkFNRV9QT0lOVEVSIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hFQURFUlNfQ0hFQ0sgaXMgbm90IHNldAorIyBDT05GSUdfREVCVUdfS0VSTkVMIGlzIG5vdCBzZXQKK0NPTkZJR19ERUJVR19CVUdWRVJCT1NFPXkKKyMgQ09ORklHX1NBTVBMRVMgaXMgbm90IHNldAogCiAjCiAjIFNlY3VyaXR5IG9wdGlvbnMKICMKICMgQ09ORklHX0tFWVMgaXMgbm90IHNldAogIyBDT05GSUdfU0VDVVJJVFkgaXMgbm90IHNldAotCi0jCi0jIENyeXB0b2dyYXBoaWMgb3B0aW9ucwotIworIyBDT05GSUdfU0VDVVJJVFlfRklMRV9DQVBBQklMSVRJRVMgaXMgbm90IHNldAorQ09ORklHX1hPUl9CTE9DS1M9bQorQ09ORklHX0FTWU5DX0NPUkU9bQorQ09ORklHX0FTWU5DX01FTUNQWT1tCitDT05GSUdfQVNZTkNfWE9SPW0KIENPTkZJR19DUllQVE89eQorQ09ORklHX0NSWVBUT19BTEdBUEk9eQorQ09ORklHX0NSWVBUT19BRUFEPW0KK0NPTkZJR19DUllQVE9fQkxLQ0lQSEVSPXkKK0NPTkZJR19DUllQVE9fU0VRSVY9bQorQ09ORklHX0NSWVBUT19IQVNIPXkKK0NPTkZJR19DUllQVE9fTUFOQUdFUj15CiBDT05GSUdfQ1JZUFRPX0hNQUM9eQorQ09ORklHX0NSWVBUT19YQ0JDPW0KIENPTkZJR19DUllQVE9fTlVMTD1tCiBDT05GSUdfQ1JZUFRPX01END1tCiBDT05GSUdfQ1JZUFRPX01ENT15CkBAIC04MzQsOSArOTUyLDIxIEBACiBDT05GSUdfQ1JZUFRPX1NIQTUxMj1tCiBDT05GSUdfQ1JZUFRPX1dQNTEyPW0KIENPTkZJR19DUllQVE9fVEdSMTkyPW0KK0NPTkZJR19DUllQVE9fR0YxMjhNVUw9bQorQ09ORklHX0NSWVBUT19FQ0I9bQorQ09ORklHX0NSWVBUT19DQkM9eQorQ09ORklHX0NSWVBUT19QQ0JDPW0KK0NPTkZJR19DUllQVE9fTFJXPW0KK0NPTkZJR19DUllQVE9fWFRTPW0KK0NPTkZJR19DUllQVE9fQ1RSPW0KK0NPTkZJR19DUllQVE9fR0NNPW0KK0NPTkZJR19DUllQVE9fQ0NNPW0KK0NPTkZJR19DUllQVE9fQ1JZUFREPW0KIENPTkZJR19DUllQVE9fREVTPXkKK0NPTkZJR19DUllQVE9fRkNSWVBUPW0KIENPTkZJR19DUllQVE9fQkxPV0ZJU0g9bQogQ09ORklHX0NSWVBUT19UV09GSVNIPW0KK0NPTkZJR19DUllQVE9fVFdPRklTSF9DT01NT049bQogQ09ORklHX0NSWVBUT19TRVJQRU5UPW0KIENPTkZJR19DUllQVE9fQUVTPW0KIENPTkZJR19DUllQVE9fQ0FTVDU9bQpAQCAtODQ1LDIwICs5NzUsMzQgQEAKIENPTkZJR19DUllQVE9fQVJDND1tCiBDT05GSUdfQ1JZUFRPX0tIQVpBRD1tCiBDT05GSUdfQ1JZUFRPX0FOVUJJUz1tCitDT05GSUdfQ1JZUFRPX1NFRUQ9bQorQ09ORklHX0NSWVBUT19TQUxTQTIwPW0KIENPTkZJR19DUllQVE9fREVGTEFURT1tCiBDT05GSUdfQ1JZUFRPX01JQ0hBRUxfTUlDPW0KIENPTkZJR19DUllQVE9fQ1JDMzJDPW0KK0NPTkZJR19DUllQVE9fQ0FNRUxMSUE9bQogQ09ORklHX0NSWVBUT19URVNUPW0KLQotIwotIyBIYXJkd2FyZSBjcnlwdG8gZGV2aWNlcwotIworQ09ORklHX0NSWVBUT19BVVRIRU5DPW0KK0NPTkZJR19DUllQVE9fTFpPPW0KKyMgQ09ORklHX0NSWVBUT19IVyBpcyBub3Qgc2V0CiAKICMKICMgTGlicmFyeSByb3V0aW5lcwogIworQ09ORklHX0JJVFJFVkVSU0U9eQogQ09ORklHX0NSQ19DQ0lUVD1tCitDT05GSUdfQ1JDMTY9bQorIyBDT05GSUdfQ1JDX0lUVV9UIGlzIG5vdCBzZXQKIENPTkZJR19DUkMzMj15CisjIENPTkZJR19DUkM3IGlzIG5vdCBzZXQKIENPTkZJR19MSUJDUkMzMkM9bQogQ09ORklHX1pMSUJfSU5GTEFURT15CiBDT05GSUdfWkxJQl9ERUZMQVRFPW0KK0NPTkZJR19MWk9fQ09NUFJFU1M9bQorQ09ORklHX0xaT19ERUNPTVBSRVNTPW0KK0NPTkZJR19URVhUU0VBUkNIPXkKK0NPTkZJR19URVhUU0VBUkNIX0tNUD1tCitDT05GSUdfVEVYVFNFQVJDSF9CTT1tCitDT05GSUdfVEVYVFNFQVJDSF9GU009bQorQ09ORklHX1BMSVNUPXkKK0NPTkZJR19IQVNfSU9NRU09eQpkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM3hfZGVmY29uZmlnIGIvYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM3hfZGVmY29uZmlnCmluZGV4IDk5NzE0M2IuLmYxODE1NGYgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9jb25maWdzL3N1bjN4X2RlZmNvbmZpZworKysgYi9hcmNoL202OGsvY29uZmlncy9zdW4zeF9kZWZjb25maWcKQEAgLTEsNjMgKzEsMTExIEBACiAjCiAjIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIG1ha2UgY29uZmlnOiBkb24ndCBlZGl0Ci0jIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMTItcmM2LW02OGsKLSMgVHVlIEp1biAgNyAyMDozNTowNiAyMDA1CisjIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMjUtcmM4CisjIFdlZCBBcHIgIDIgMjA6NDY6MjMgMjAwOAogIwogQ09ORklHX002OEs9eQogQ09ORklHX01NVT15Ci1DT05GSUdfVUlEMTY9eQogQ09ORklHX1JXU0VNX0dFTkVSSUNfU1BJTkxPQ0s9eQorIyBDT05GSUdfQVJDSF9IQVNfSUxPRzJfVTMyIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfSEFTX0lMT0cyX1U2NCBpcyBub3Qgc2V0CitDT05GSUdfR0VORVJJQ19IV0VJR0hUPXkKIENPTkZJR19HRU5FUklDX0NBTElCUkFURV9ERUxBWT15Ci0KLSMKLSMgQ29kZSBtYXR1cml0eSBsZXZlbCBvcHRpb25zCi0jCi1DT05GSUdfRVhQRVJJTUVOVEFMPXkKLUNPTkZJR19DTEVBTl9DT01QSUxFPXkKLUNPTkZJR19CUk9LRU5fT05fU01QPXkKLUNPTkZJR19JTklUX0VOVl9BUkdfTElNSVQ9MzIKK0NPTkZJR19USU1FX0xPV19SRVM9eQorQ09ORklHX0dFTkVSSUNfSU9NQVA9eQorQ09ORklHX05PX0lPUE9SVD15CisjIENPTkZJR19OT19ETUEgaXMgbm90IHNldAorQ09ORklHX0FSQ0hfU1VQUE9SVFNfQU9VVD15CitDT05GSUdfSFo9MTAwCitDT05GSUdfREVGQ09ORklHX0xJU1Q9Ii9saWIvbW9kdWxlcy8kVU5BTUVfUkVMRUFTRS8uY29uZmlnIgogCiAjCiAjIEdlbmVyYWwgc2V0dXAKICMKK0NPTkZJR19FWFBFUklNRU5UQUw9eQorQ09ORklHX0JST0tFTl9PTl9TTVA9eQorQ09ORklHX0lOSVRfRU5WX0FSR19MSU1JVD0zMgogQ09ORklHX0xPQ0FMVkVSU0lPTj0iLXN1bjN4IgorQ09ORklHX0xPQ0FMVkVSU0lPTl9BVVRPPXkKIENPTkZJR19TV0FQPXkKIENPTkZJR19TWVNWSVBDPXkKK0NPTkZJR19TWVNWSVBDX1NZU0NUTD15CiBDT05GSUdfUE9TSVhfTVFVRVVFPXkKIENPTkZJR19CU0RfUFJPQ0VTU19BQ0NUPXkKICMgQ09ORklHX0JTRF9QUk9DRVNTX0FDQ1RfVjMgaXMgbm90IHNldAotQ09ORklHX1NZU0NUTD15Ci1DT05GSUdfQVVESVQ9eQotQ09ORklHX0hPVFBMVUc9eQotQ09ORklHX0tPQkpFQ1RfVUVWRU5UPXkKKyMgQ09ORklHX1RBU0tTVEFUUyBpcyBub3Qgc2V0CisjIENPTkZJR19BVURJVCBpcyBub3Qgc2V0CiAjIENPTkZJR19JS0NPTkZJRyBpcyBub3Qgc2V0CitDT05GSUdfTE9HX0JVRl9TSElGVD0xNAorIyBDT05GSUdfQ0dST1VQUyBpcyBub3Qgc2V0CisjIENPTkZJR19HUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CisjIENPTkZJR19TWVNGU19ERVBSRUNBVEVEX1YyIGlzIG5vdCBzZXQKK0NPTkZJR19SRUxBWT15CitDT05GSUdfTkFNRVNQQUNFUz15CisjIENPTkZJR19VVFNfTlMgaXMgbm90IHNldAorIyBDT05GSUdfSVBDX05TIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTRVJfTlMgaXMgbm90IHNldAorIyBDT05GSUdfUElEX05TIGlzIG5vdCBzZXQKK0NPTkZJR19CTEtfREVWX0lOSVRSRD15CitDT05GSUdfSU5JVFJBTUZTX1NPVVJDRT0iIgorIyBDT05GSUdfQ0NfT1BUSU1JWkVfRk9SX1NJWkUgaXMgbm90IHNldAorQ09ORklHX1NZU0NUTD15CiAjIENPTkZJR19FTUJFRERFRCBpcyBub3Qgc2V0CitDT05GSUdfVUlEMTY9eQorQ09ORklHX1NZU0NUTF9TWVNDQUxMPXkKIENPTkZJR19LQUxMU1lNUz15Ci0jIENPTkZJR19LQUxMU1lNU19BTEwgaXMgbm90IHNldAogIyBDT05GSUdfS0FMTFNZTVNfRVhUUkFfUEFTUyBpcyBub3Qgc2V0CitDT05GSUdfSE9UUExVRz15CiBDT05GSUdfUFJJTlRLPXkKIENPTkZJR19CVUc9eQorQ09ORklHX0VMRl9DT1JFPXkKKyMgQ09ORklHX0NPTVBBVF9CUksgaXMgbm90IHNldAogQ09ORklHX0JBU0VfRlVMTD15CiBDT05GSUdfRlVURVg9eQorQ09ORklHX0FOT05fSU5PREVTPXkKIENPTkZJR19FUE9MTD15CitDT05GSUdfU0lHTkFMRkQ9eQorQ09ORklHX1RJTUVSRkQ9eQorQ09ORklHX0VWRU5URkQ9eQogQ09ORklHX1NITUVNPXkKLUNPTkZJR19DQ19BTElHTl9GVU5DVElPTlM9MAotQ09ORklHX0NDX0FMSUdOX0xBQkVMUz0wCi1DT05GSUdfQ0NfQUxJR05fTE9PUFM9MAotQ09ORklHX0NDX0FMSUdOX0pVTVBTPTAKK0NPTkZJR19WTV9FVkVOVF9DT1VOVEVSUz15CitDT05GSUdfU0xBQj15CisjIENPTkZJR19TTFVCIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NMT0IgaXMgbm90IHNldAorIyBDT05GSUdfUFJPRklMSU5HIGlzIG5vdCBzZXQKKyMgQ09ORklHX01BUktFUlMgaXMgbm90IHNldAorIyBDT05GSUdfSEFWRV9PUFJPRklMRSBpcyBub3Qgc2V0CisjIENPTkZJR19IQVZFX0tQUk9CRVMgaXMgbm90IHNldAorIyBDT05GSUdfSEFWRV9LUkVUUFJPQkVTIGlzIG5vdCBzZXQKK0NPTkZJR19QUk9DX1BBR0VfTU9OSVRPUj15CitDT05GSUdfU0xBQklORk89eQorQ09ORklHX1JUX01VVEVYRVM9eQogIyBDT05GSUdfVElOWV9TSE1FTSBpcyBub3Qgc2V0CiBDT05GSUdfQkFTRV9TTUFMTD0wCi0KLSMKLSMgTG9hZGFibGUgbW9kdWxlIHN1cHBvcnQKLSMKIENPTkZJR19NT0RVTEVTPXkKIENPTkZJR19NT0RVTEVfVU5MT0FEPXkKICMgQ09ORklHX01PRFVMRV9GT1JDRV9VTkxPQUQgaXMgbm90IHNldAotQ09ORklHX09CU09MRVRFX01PRFBBUk09eQogIyBDT05GSUdfTU9EVkVSU0lPTlMgaXMgbm90IHNldAogIyBDT05GSUdfTU9EVUxFX1NSQ1ZFUlNJT05fQUxMIGlzIG5vdCBzZXQKIENPTkZJR19LTU9EPXkKK0NPTkZJR19CTE9DSz15CisjIENPTkZJR19MQkQgaXMgbm90IHNldAorIyBDT05GSUdfQkxLX0RFVl9JT19UUkFDRSBpcyBub3Qgc2V0CisjIENPTkZJR19MU0YgaXMgbm90IHNldAorQ09ORklHX0JMS19ERVZfQlNHPXkKKworIworIyBJTyBTY2hlZHVsZXJzCisjCitDT05GSUdfSU9TQ0hFRF9OT09QPXkKK0NPTkZJR19JT1NDSEVEX0FTPXkKK0NPTkZJR19JT1NDSEVEX0RFQURMSU5FPXkKK0NPTkZJR19JT1NDSEVEX0NGUT15CitDT05GSUdfREVGQVVMVF9BUz15CisjIENPTkZJR19ERUZBVUxUX0RFQURMSU5FIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RFRkFVTFRfQ0ZRIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RFRkFVTFRfTk9PUCBpcyBub3Qgc2V0CitDT05GSUdfREVGQVVMVF9JT1NDSEVEPSJhbnRpY2lwYXRvcnkiCitDT05GSUdfQ0xBU1NJQ19SQ1U9eQogCiAjCiAjIFBsYXRmb3JtIGRlcGVuZGVudCBzZXR1cApAQCAtODAsMTAgKzEyOCwyNCBAQAogIyBDT05GSUdfTTY4MDQwIGlzIG5vdCBzZXQKICMgQ09ORklHX002ODA2MCBpcyBub3Qgc2V0CiBDT05GSUdfTU1VX01PVE9ST0xBPXkKLUNPTkZJR19NNjhLRlBVX0VNVT15Ci1DT05GSUdfTTY4S0ZQVV9FTVVfRVhUUkFQUkVDPXkKLSMgQ09ORklHX002OEtGUFVfRU1VX09OTFkgaXMgbm90IHNldAorIyBDT05GSUdfTTY4S0ZQVV9FTVUgaXMgbm90IHNldAogIyBDT05GSUdfQURWQU5DRUQgaXMgbm90IHNldAorQ09ORklHX0FSQ0hfRElTQ09OVElHTUVNX0VOQUJMRT15CitDT05GSUdfTk9ERVNfU0hJRlQ9MworQ09ORklHX1NFTEVDVF9NRU1PUllfTU9ERUw9eQorIyBDT05GSUdfRkxBVE1FTV9NQU5VQUwgaXMgbm90IHNldAorQ09ORklHX0RJU0NPTlRJR01FTV9NQU5VQUw9eQorIyBDT05GSUdfU1BBUlNFTUVNX01BTlVBTCBpcyBub3Qgc2V0CitDT05GSUdfRElTQ09OVElHTUVNPXkKK0NPTkZJR19GTEFUX05PREVfTUVNX01BUD15CitDT05GSUdfTkVFRF9NVUxUSVBMRV9OT0RFUz15CisjIENPTkZJR19TUEFSU0VNRU1fU1RBVElDIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQX0VOQUJMRSBpcyBub3Qgc2V0CitDT05GSUdfU1BMSVRfUFRMT0NLX0NQVVM9NAorIyBDT05GSUdfUkVTT1VSQ0VTXzY0QklUIGlzIG5vdCBzZXQKK0NPTkZJR19aT05FX0RNQV9GTEFHPTEKK0NPTkZJR19CT1VOQ0U9eQorQ09ORklHX1ZJUlRfVE9fQlVTPXkKIAogIwogIyBHZW5lcmFsIHNldHVwCkBAIC05MiwxMzUgKzE1NCwxMSBAQAogQ09ORklHX0JJTkZNVF9BT1VUPW0KIENPTkZJR19CSU5GTVRfTUlTQz1tCiBDT05GSUdfUFJPQ19IQVJEV0FSRT15CitDT05GSUdfWk9ORV9ETUE9eQorIyBDT05GSUdfQVJDSF9TVVBQT1JUU19NU0kgaXMgbm90IHNldAogCiAjCi0jIERldmljZSBEcml2ZXJzCi0jCi0KLSMKLSMgR2VuZXJpYyBEcml2ZXIgT3B0aW9ucwotIwotQ09ORklHX1NUQU5EQUxPTkU9eQotQ09ORklHX1BSRVZFTlRfRklSTVdBUkVfQlVJTEQ9eQotQ09ORklHX0ZXX0xPQURFUj1tCi0jIENPTkZJR19ERUJVR19EUklWRVIgaXMgbm90IHNldAotCi0jCi0jIE1lbW9yeSBUZWNobm9sb2d5IERldmljZXMgKE1URCkKLSMKLSMgQ09ORklHX01URCBpcyBub3Qgc2V0Ci0KLSMKLSMgUGFyYWxsZWwgcG9ydCBzdXBwb3J0Ci0jCi0jIENPTkZJR19QQVJQT1JUIGlzIG5vdCBzZXQKLQotIwotIyBQbHVnIGFuZCBQbGF5IHN1cHBvcnQKLSMKLQotIwotIyBCbG9jayBkZXZpY2VzCi0jCi0jIENPTkZJR19CTEtfREVWX0NPV19DT01NT04gaXMgbm90IHNldAotQ09ORklHX0JMS19ERVZfTE9PUD15Ci1DT05GSUdfQkxLX0RFVl9DUllQVE9MT09QPW0KLUNPTkZJR19CTEtfREVWX05CRD1tCi1DT05GSUdfQkxLX0RFVl9SQU09eQotQ09ORklHX0JMS19ERVZfUkFNX0NPVU5UPTE2Ci1DT05GSUdfQkxLX0RFVl9SQU1fU0laRT00MDk2Ci1DT05GSUdfQkxLX0RFVl9JTklUUkQ9eQotQ09ORklHX0lOSVRSQU1GU19TT1VSQ0U9IiIKLUNPTkZJR19DRFJPTV9QS1RDRFZEPW0KLUNPTkZJR19DRFJPTV9QS1RDRFZEX0JVRkZFUlM9OAotIyBDT05GSUdfQ0RST01fUEtUQ0RWRF9XQ0FDSEUgaXMgbm90IHNldAotCi0jCi0jIElPIFNjaGVkdWxlcnMKLSMKLUNPTkZJR19JT1NDSEVEX05PT1A9eQotQ09ORklHX0lPU0NIRURfQVM9eQotQ09ORklHX0lPU0NIRURfREVBRExJTkU9eQotQ09ORklHX0lPU0NIRURfQ0ZRPXkKLUNPTkZJR19BVEFfT1ZFUl9FVEg9bQotCi0jCi0jIEFUQS9BVEFQSS9NRk0vUkxMIHN1cHBvcnQKLSMKLSMgQ09ORklHX0lERSBpcyBub3Qgc2V0Ci0KLSMKLSMgU0NTSSBkZXZpY2Ugc3VwcG9ydAotIwotQ09ORklHX1NDU0k9eQotQ09ORklHX1NDU0lfUFJPQ19GUz15Ci0KLSMKLSMgU0NTSSBzdXBwb3J0IHR5cGUgKGRpc2ssIHRhcGUsIENELVJPTSkKLSMKLUNPTkZJR19CTEtfREVWX1NEPXkKLUNPTkZJR19DSFJfREVWX1NUPW0KLSMgQ09ORklHX0NIUl9ERVZfT1NTVCBpcyBub3Qgc2V0Ci1DT05GSUdfQkxLX0RFVl9TUj15Ci1DT05GSUdfQkxLX0RFVl9TUl9WRU5ET1I9eQotQ09ORklHX0NIUl9ERVZfU0c9bQotCi0jCi0jIFNvbWUgU0NTSSBkZXZpY2VzIChlLmcuIENEIGp1a2Vib3gpIHN1cHBvcnQgbXVsdGlwbGUgTFVOcwotIwotIyBDT05GSUdfU0NTSV9NVUxUSV9MVU4gaXMgbm90IHNldAotQ09ORklHX1NDU0lfQ09OU1RBTlRTPXkKLSMgQ09ORklHX1NDU0lfTE9HR0lORyBpcyBub3Qgc2V0Ci0KLSMKLSMgU0NTSSBUcmFuc3BvcnQgQXR0cmlidXRlcwotIwotIyBDT05GSUdfU0NTSV9TUElfQVRUUlMgaXMgbm90IHNldAotIyBDT05GSUdfU0NTSV9GQ19BVFRSUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19TQ1NJX0lTQ1NJX0FUVFJTIGlzIG5vdCBzZXQKLQotIwotIyBTQ1NJIGxvdy1sZXZlbCBkcml2ZXJzCi0jCi0jIENPTkZJR19TQ1NJX1NBVEEgaXMgbm90IHNldAotIyBDT05GSUdfU0NTSV9ERUJVRyBpcyBub3Qgc2V0Ci1DT05GSUdfU1VOM1hfRVNQPXkKLQotIwotIyBNdWx0aS1kZXZpY2Ugc3VwcG9ydCAoUkFJRCBhbmQgTFZNKQotIwotQ09ORklHX01EPXkKLUNPTkZJR19CTEtfREVWX01EPW0KLUNPTkZJR19NRF9MSU5FQVI9bQotQ09ORklHX01EX1JBSUQwPW0KLUNPTkZJR19NRF9SQUlEMT1tCi0jIENPTkZJR19NRF9SQUlEMTAgaXMgbm90IHNldAotQ09ORklHX01EX1JBSUQ1PW0KLUNPTkZJR19NRF9SQUlENj1tCi1DT05GSUdfTURfTVVMVElQQVRIPW0KLSMgQ09ORklHX01EX0ZBVUxUWSBpcyBub3Qgc2V0Ci1DT05GSUdfQkxLX0RFVl9ETT1tCi1DT05GSUdfRE1fQ1JZUFQ9bQotQ09ORklHX0RNX1NOQVBTSE9UPW0KLUNPTkZJR19ETV9NSVJST1I9bQotQ09ORklHX0RNX1pFUk89bQotQ09ORklHX0RNX01VTFRJUEFUSD1tCi1DT05GSUdfRE1fTVVMVElQQVRIX0VNQz1tCi0KLSMKLSMgRnVzaW9uIE1QVCBkZXZpY2Ugc3VwcG9ydAotIwotCi0jCi0jIElFRUUgMTM5NCAoRmlyZVdpcmUpIHN1cHBvcnQKLSMKLQotIwotIyBJMk8gZGV2aWNlIHN1cHBvcnQKLSMKLQotIwotIyBOZXR3b3JraW5nIHN1cHBvcnQKKyMgTmV0d29ya2luZwogIwogQ09ORklHX05FVD15CiAKQEAgLTIzMCwxMCArMTY4LDE3IEBACiBDT05GSUdfUEFDS0VUPXkKICMgQ09ORklHX1BBQ0tFVF9NTUFQIGlzIG5vdCBzZXQKIENPTkZJR19VTklYPXkKK0NPTkZJR19YRlJNPXkKKyMgQ09ORklHX1hGUk1fVVNFUiBpcyBub3Qgc2V0CisjIENPTkZJR19YRlJNX1NVQl9QT0xJQ1kgaXMgbm90IHNldAorQ09ORklHX1hGUk1fTUlHUkFURT15CisjIENPTkZJR19YRlJNX1NUQVRJU1RJQ1MgaXMgbm90IHNldAogQ09ORklHX05FVF9LRVk9eQorQ09ORklHX05FVF9LRVlfTUlHUkFURT15CiBDT05GSUdfSU5FVD15CiAjIENPTkZJR19JUF9NVUxUSUNBU1QgaXMgbm90IHNldAogIyBDT05GSUdfSVBfQURWQU5DRURfUk9VVEVSIGlzIG5vdCBzZXQKK0NPTkZJR19JUF9GSUJfSEFTSD15CiBDT05GSUdfSVBfUE5QPXkKIENPTkZJR19JUF9QTlBfREhDUD15CiBDT05GSUdfSVBfUE5QX0JPT1RQPXkKQEAgLTI0NSwxNDUgKzE5MCwxOTkgQEAKIENPTkZJR19JTkVUX0FIPW0KIENPTkZJR19JTkVUX0VTUD1tCiBDT05GSUdfSU5FVF9JUENPTVA9bQorQ09ORklHX0lORVRfWEZSTV9UVU5ORUw9bQogQ09ORklHX0lORVRfVFVOTkVMPW0KLUNPTkZJR19JUF9UQ1BESUFHPW0KLUNPTkZJR19JUF9UQ1BESUFHX0lQVjY9eQotCi0jCi0jIElQOiBWaXJ0dWFsIFNlcnZlciBDb25maWd1cmF0aW9uCi0jCitDT05GSUdfSU5FVF9YRlJNX01PREVfVFJBTlNQT1JUPW0KK0NPTkZJR19JTkVUX1hGUk1fTU9ERV9UVU5ORUw9bQorQ09ORklHX0lORVRfWEZSTV9NT0RFX0JFRVQ9bQorQ09ORklHX0lORVRfTFJPPW0KK0NPTkZJR19JTkVUX0RJQUc9bQorQ09ORklHX0lORVRfVENQX0RJQUc9bQorIyBDT05GSUdfVENQX0NPTkdfQURWQU5DRUQgaXMgbm90IHNldAorQ09ORklHX1RDUF9DT05HX0NVQklDPXkKK0NPTkZJR19ERUZBVUxUX1RDUF9DT05HPSJjdWJpYyIKKyMgQ09ORklHX1RDUF9NRDVTSUcgaXMgbm90IHNldAogIyBDT05GSUdfSVBfVlMgaXMgbm90IHNldAogQ09ORklHX0lQVjY9bQogQ09ORklHX0lQVjZfUFJJVkFDWT15CitDT05GSUdfSVBWNl9ST1VURVJfUFJFRj15CitDT05GSUdfSVBWNl9ST1VURV9JTkZPPXkKKyMgQ09ORklHX0lQVjZfT1BUSU1JU1RJQ19EQUQgaXMgbm90IHNldAogQ09ORklHX0lORVQ2X0FIPW0KIENPTkZJR19JTkVUNl9FU1A9bQogQ09ORklHX0lORVQ2X0lQQ09NUD1tCisjIENPTkZJR19JUFY2X01JUDYgaXMgbm90IHNldAorQ09ORklHX0lORVQ2X1hGUk1fVFVOTkVMPW0KIENPTkZJR19JTkVUNl9UVU5ORUw9bQorQ09ORklHX0lORVQ2X1hGUk1fTU9ERV9UUkFOU1BPUlQ9bQorQ09ORklHX0lORVQ2X1hGUk1fTU9ERV9UVU5ORUw9bQorQ09ORklHX0lORVQ2X1hGUk1fTU9ERV9CRUVUPW0KK0NPTkZJR19JTkVUNl9YRlJNX01PREVfUk9VVEVPUFRJTUlaQVRJT049bQorQ09ORklHX0lQVjZfU0lUPW0KIENPTkZJR19JUFY2X1RVTk5FTD1tCisjIENPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFUyBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRXT1JLX1NFQ01BUksgaXMgbm90IHNldAogQ09ORklHX05FVEZJTFRFUj15CiAjIENPTkZJR19ORVRGSUxURVJfREVCVUcgaXMgbm90IHNldAorQ09ORklHX05FVEZJTFRFUl9BRFZBTkNFRD15CisKKyMKKyMgQ29yZSBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvbgorIworQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LPW0KK0NPTkZJR19ORVRGSUxURVJfTkVUTElOS19RVUVVRT1tCitDT05GSUdfTkVURklMVEVSX05FVExJTktfTE9HPW0KK0NPTkZJR19ORl9DT05OVFJBQ0s9bQorQ09ORklHX05GX0NUX0FDQ1Q9eQorQ09ORklHX05GX0NPTk5UUkFDS19NQVJLPXkKKyMgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFMgaXMgbm90IHNldAorQ09ORklHX05GX0NUX1BST1RPX0dSRT1tCitDT05GSUdfTkZfQ1RfUFJPVE9fU0NUUD1tCitDT05GSUdfTkZfQ1RfUFJPVE9fVURQTElURT1tCitDT05GSUdfTkZfQ09OTlRSQUNLX0FNQU5EQT1tCitDT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tCitDT05GSUdfTkZfQ09OTlRSQUNLX0gzMjM9bQorQ09ORklHX05GX0NPTk5UUkFDS19JUkM9bQorQ09ORklHX05GX0NPTk5UUkFDS19ORVRCSU9TX05TPW0KK0NPTkZJR19ORl9DT05OVFJBQ0tfUFBUUD1tCitDT05GSUdfTkZfQ09OTlRSQUNLX1NBTkU9bQorQ09ORklHX05GX0NPTk5UUkFDS19TSVA9bQorQ09ORklHX05GX0NPTk5UUkFDS19URlRQPW0KKyMgQ09ORklHX05GX0NUX05FVExJTksgaXMgbm90IHNldAorQ09ORklHX05FVEZJTFRFUl9YVEFCTEVTPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX0NMQVNTSUZZPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX0NPTk5NQVJLPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX0RTQ1A9bQorQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfTUFSSz1tCitDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9ORlFVRVVFPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX05GTE9HPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX05PVFJBQ0s9bQorQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfUkFURUVTVD1tCitDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9UUkFDRT1tCitDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9UQ1BNU1M9bQorQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfVENQT1BUU1RSSVA9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9DT01NRU5UPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkJZVEVTPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkxJTUlUPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfQ09OTk1BUks9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9DT05OVFJBQ0s9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9EQ0NQPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfRFNDUD1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0VTUD1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0hFTFBFUj1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0lQUkFOR0U9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9MRU5HVEg9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9MSU1JVD1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX01BQz1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX01BUks9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9PV05FUj1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1BPTElDWT1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX01VTFRJUE9SVD1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1BLVFRZUEU9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9RVU9UQT1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1JBVEVFU1Q9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9SRUFMTT1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1NDVFA9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9TVEFURT1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1NUQVRJU1RJQz1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1NUUklORz1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1RDUE1TUz1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1RJTUU9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9VMzI9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9IQVNITElNSVQ9bQogCiAjCiAjIElQOiBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvbgogIwotQ09ORklHX0lQX05GX0NPTk5UUkFDSz1tCi0jIENPTkZJR19JUF9ORl9DVF9BQ0NUIGlzIG5vdCBzZXQKLUNPTkZJR19JUF9ORl9DT05OVFJBQ0tfTUFSSz15Ci0jIENPTkZJR19JUF9ORl9DVF9QUk9UT19TQ1RQIGlzIG5vdCBzZXQKLUNPTkZJR19JUF9ORl9GVFA9bQotQ09ORklHX0lQX05GX0lSQz1tCi1DT05GSUdfSVBfTkZfVEZUUD1tCi1DT05GSUdfSVBfTkZfQU1BTkRBPW0KK0NPTkZJR19ORl9DT05OVFJBQ0tfSVBWND1tCitDT05GSUdfTkZfQ09OTlRSQUNLX1BST0NfQ09NUEFUPXkKIENPTkZJR19JUF9ORl9RVUVVRT1tCiBDT05GSUdfSVBfTkZfSVBUQUJMRVM9bQotQ09ORklHX0lQX05GX01BVENIX0xJTUlUPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9JUFJBTkdFPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9NQUM9bQotQ09ORklHX0lQX05GX01BVENIX1BLVFRZUEU9bQotQ09ORklHX0lQX05GX01BVENIX01BUks9bQotQ09ORklHX0lQX05GX01BVENIX01VTFRJUE9SVD1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfVE9TPW0KIENPTkZJR19JUF9ORl9NQVRDSF9SRUNFTlQ9bQogQ09ORklHX0lQX05GX01BVENIX0VDTj1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfRFNDUD1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfQUhfRVNQPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9MRU5HVEg9bQorQ09ORklHX0lQX05GX01BVENIX0FIPW0KIENPTkZJR19JUF9ORl9NQVRDSF9UVEw9bQotQ09ORklHX0lQX05GX01BVENIX1RDUE1TUz1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfSEVMUEVSPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9TVEFURT1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfQ09OTlRSQUNLPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9PV05FUj1tCiBDT05GSUdfSVBfTkZfTUFUQ0hfQUREUlRZUEU9bQotQ09ORklHX0lQX05GX01BVENIX1JFQUxNPW0KLSMgQ09ORklHX0lQX05GX01BVENIX1NDVFAgaXMgbm90IHNldAotIyBDT05GSUdfSVBfTkZfTUFUQ0hfQ09NTUVOVCBpcyBub3Qgc2V0Ci1DT05GSUdfSVBfTkZfTUFUQ0hfQ09OTk1BUks9bQotQ09ORklHX0lQX05GX01BVENIX0hBU0hMSU1JVD1tCiBDT05GSUdfSVBfTkZfRklMVEVSPW0KIENPTkZJR19JUF9ORl9UQVJHRVRfUkVKRUNUPW0KIENPTkZJR19JUF9ORl9UQVJHRVRfTE9HPW0KIENPTkZJR19JUF9ORl9UQVJHRVRfVUxPRz1tCi1DT05GSUdfSVBfTkZfVEFSR0VUX1RDUE1TUz1tCi1DT05GSUdfSVBfTkZfTkFUPW0KLUNPTkZJR19JUF9ORl9OQVRfTkVFREVEPXkKK0NPTkZJR19ORl9OQVQ9bQorQ09ORklHX05GX05BVF9ORUVERUQ9eQogQ09ORklHX0lQX05GX1RBUkdFVF9NQVNRVUVSQURFPW0KIENPTkZJR19JUF9ORl9UQVJHRVRfUkVESVJFQ1Q9bQogQ09ORklHX0lQX05GX1RBUkdFVF9ORVRNQVA9bQotQ09ORklHX0lQX05GX1RBUkdFVF9TQU1FPW0KLUNPTkZJR19JUF9ORl9OQVRfU05NUF9CQVNJQz1tCi1DT05GSUdfSVBfTkZfTkFUX0lSQz1tCi1DT05GSUdfSVBfTkZfTkFUX0ZUUD1tCi1DT05GSUdfSVBfTkZfTkFUX1RGVFA9bQotQ09ORklHX0lQX05GX05BVF9BTUFOREE9bQorQ09ORklHX05GX05BVF9TTk1QX0JBU0lDPW0KK0NPTkZJR19ORl9OQVRfUFJPVE9fR1JFPW0KK0NPTkZJR19ORl9OQVRfRlRQPW0KK0NPTkZJR19ORl9OQVRfSVJDPW0KK0NPTkZJR19ORl9OQVRfVEZUUD1tCitDT05GSUdfTkZfTkFUX0FNQU5EQT1tCitDT05GSUdfTkZfTkFUX1BQVFA9bQorQ09ORklHX05GX05BVF9IMzIzPW0KK0NPTkZJR19ORl9OQVRfU0lQPW0KIENPTkZJR19JUF9ORl9NQU5HTEU9bQotQ09ORklHX0lQX05GX1RBUkdFVF9UT1M9bQogQ09ORklHX0lQX05GX1RBUkdFVF9FQ049bQotQ09ORklHX0lQX05GX1RBUkdFVF9EU0NQPW0KLUNPTkZJR19JUF9ORl9UQVJHRVRfTUFSSz1tCi1DT05GSUdfSVBfTkZfVEFSR0VUX0NMQVNTSUZZPW0KLUNPTkZJR19JUF9ORl9UQVJHRVRfQ09OTk1BUks9bQotIyBDT05GSUdfSVBfTkZfVEFSR0VUX0NMVVNURVJJUCBpcyBub3Qgc2V0CitDT05GSUdfSVBfTkZfVEFSR0VUX1RUTD1tCitDT05GSUdfSVBfTkZfVEFSR0VUX0NMVVNURVJJUD1tCiBDT05GSUdfSVBfTkZfUkFXPW0KLUNPTkZJR19JUF9ORl9UQVJHRVRfTk9UUkFDSz1tCiBDT05GSUdfSVBfTkZfQVJQVEFCTEVTPW0KIENPTkZJR19JUF9ORl9BUlBGSUxURVI9bQogQ09ORklHX0lQX05GX0FSUF9NQU5HTEU9bQogCiAjCi0jIElQdjY6IE5ldGZpbHRlciBDb25maWd1cmF0aW9uIChFWFBFUklNRU5UQUwpCisjIElQdjY6IE5ldGZpbHRlciBDb25maWd1cmF0aW9uCiAjCitDT05GSUdfTkZfQ09OTlRSQUNLX0lQVjY9bQogQ09ORklHX0lQNl9ORl9RVUVVRT1tCiBDT05GSUdfSVA2X05GX0lQVEFCTEVTPW0KLUNPTkZJR19JUDZfTkZfTUFUQ0hfTElNSVQ9bQotQ09ORklHX0lQNl9ORl9NQVRDSF9NQUM9bQogQ09ORklHX0lQNl9ORl9NQVRDSF9SVD1tCiBDT05GSUdfSVA2X05GX01BVENIX09QVFM9bQogQ09ORklHX0lQNl9ORl9NQVRDSF9GUkFHPW0KIENPTkZJR19JUDZfTkZfTUFUQ0hfSEw9bQotQ09ORklHX0lQNl9ORl9NQVRDSF9NVUxUSVBPUlQ9bQotQ09ORklHX0lQNl9ORl9NQVRDSF9PV05FUj1tCi1DT05GSUdfSVA2X05GX01BVENIX01BUks9bQogQ09ORklHX0lQNl9ORl9NQVRDSF9JUFY2SEVBREVSPW0KLUNPTkZJR19JUDZfTkZfTUFUQ0hfQUhFU1A9bQotQ09ORklHX0lQNl9ORl9NQVRDSF9MRU5HVEg9bQorQ09ORklHX0lQNl9ORl9NQVRDSF9BSD1tCitDT05GSUdfSVA2X05GX01BVENIX01IPW0KIENPTkZJR19JUDZfTkZfTUFUQ0hfRVVJNjQ9bQogQ09ORklHX0lQNl9ORl9GSUxURVI9bQogQ09ORklHX0lQNl9ORl9UQVJHRVRfTE9HPW0KK0NPTkZJR19JUDZfTkZfVEFSR0VUX1JFSkVDVD1tCiBDT05GSUdfSVA2X05GX01BTkdMRT1tCi1DT05GSUdfSVA2X05GX1RBUkdFVF9NQVJLPW0KK0NPTkZJR19JUDZfTkZfVEFSR0VUX0hMPW0KIENPTkZJR19JUDZfTkZfUkFXPW0KLUNPTkZJR19YRlJNPXkKLSMgQ09ORklHX1hGUk1fVVNFUiBpcyBub3Qgc2V0CitDT05GSUdfSVBfRENDUD1tCitDT05GSUdfSU5FVF9EQ0NQX0RJQUc9bQorQ09ORklHX0lQX0RDQ1BfQUNLVkVDPXkKIAogIwotIyBTQ1RQIENvbmZpZ3VyYXRpb24gKEVYUEVSSU1FTlRBTCkKKyMgRENDUCBDQ0lEcyBDb25maWd1cmF0aW9uIChFWFBFUklNRU5UQUwpCiAjCitDT05GSUdfSVBfRENDUF9DQ0lEMj1tCisjIENPTkZJR19JUF9EQ0NQX0NDSUQyX0RFQlVHIGlzIG5vdCBzZXQKK0NPTkZJR19JUF9EQ0NQX0NDSUQzPW0KKyMgQ09ORklHX0lQX0RDQ1BfQ0NJRDNfREVCVUcgaXMgbm90IHNldAorQ09ORklHX0lQX0RDQ1BfQ0NJRDNfUlRPPTEwMAorQ09ORklHX0lQX0RDQ1BfVEZSQ19MSUI9bQogQ09ORklHX0lQX1NDVFA9bQogIyBDT05GSUdfU0NUUF9EQkdfTVNHIGlzIG5vdCBzZXQKICMgQ09ORklHX1NDVFBfREJHX09CSkNOVCBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1RQX0hNQUNfTk9ORSBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1RQX0hNQUNfU0hBMSBpcyBub3Qgc2V0CiBDT05GSUdfU0NUUF9ITUFDX01ENT15CisjIENPTkZJR19USVBDIGlzIG5vdCBzZXQKICMgQ09ORklHX0FUTSBpcyBub3Qgc2V0CiAjIENPTkZJR19CUklER0UgaXMgbm90IHNldAogIyBDT05GSUdfVkxBTl84MDIxUSBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUNORVQgaXMgbm90IHNldAogQ09ORklHX0xMQz1tCiAjIENPTkZJR19MTEMyIGlzIG5vdCBzZXQKLUNPTkZJR19JUFg9bQotIyBDT05GSUdfSVBYX0lOVEVSTiBpcyBub3Qgc2V0CisjIENPTkZJR19JUFggaXMgbm90IHNldAogQ09ORklHX0FUQUxLPW0KICMgQ09ORklHX0RFVl9BUFBMRVRBTEsgaXMgbm90IHNldAogIyBDT05GSUdfWDI1IGlzIG5vdCBzZXQKICMgQ09ORklHX0xBUEIgaXMgbm90IHNldAotIyBDT05GSUdfTkVUX0RJVkVSVCBpcyBub3Qgc2V0CiAjIENPTkZJR19FQ09ORVQgaXMgbm90IHNldAogIyBDT05GSUdfV0FOX1JPVVRFUiBpcyBub3Qgc2V0Ci0KLSMKLSMgUW9TIGFuZC9vciBmYWlyIHF1ZXVlaW5nCi0jCiAjIENPTkZJR19ORVRfU0NIRUQgaXMgbm90IHNldAogQ09ORklHX05FVF9DTFNfUk9VVEU9eQogCkBAIC0zOTEsNDYgKzM5MCwxNTUgQEAKICMgTmV0d29yayB0ZXN0aW5nCiAjCiAjIENPTkZJR19ORVRfUEtUR0VOIGlzIG5vdCBzZXQKLUNPTkZJR19ORVRQT0xMPXkKLSMgQ09ORklHX05FVFBPTExfUlggaXMgbm90IHNldAotIyBDT05GSUdfTkVUUE9MTF9UUkFQIGlzIG5vdCBzZXQKLUNPTkZJR19ORVRfUE9MTF9DT05UUk9MTEVSPXkKICMgQ09ORklHX0hBTVJBRElPIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NBTiBpcyBub3Qgc2V0CiAjIENPTkZJR19JUkRBIGlzIG5vdCBzZXQKICMgQ09ORklHX0JUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FGX1JYUlBDIGlzIG5vdCBzZXQKKworIworIyBXaXJlbGVzcworIworIyBDT05GSUdfQ0ZHODAyMTEgaXMgbm90IHNldAorQ09ORklHX1dJUkVMRVNTX0VYVD15CisjIENPTkZJR19NQUM4MDIxMSBpcyBub3Qgc2V0CitDT05GSUdfSUVFRTgwMjExPW0KKyMgQ09ORklHX0lFRUU4MDIxMV9ERUJVRyBpcyBub3Qgc2V0CitDT05GSUdfSUVFRTgwMjExX0NSWVBUX1dFUD1tCitDT05GSUdfSUVFRTgwMjExX0NSWVBUX0NDTVA9bQorQ09ORklHX0lFRUU4MDIxMV9DUllQVF9US0lQPW0KK0NPTkZJR19JRUVFODAyMTFfU09GVE1BQz1tCisjIENPTkZJR19JRUVFODAyMTFfU09GVE1BQ19ERUJVRyBpcyBub3Qgc2V0CisjIENPTkZJR19SRktJTEwgaXMgbm90IHNldAorIyBDT05GSUdfTkVUXzlQIGlzIG5vdCBzZXQKKworIworIyBEZXZpY2UgRHJpdmVycworIworCisjCisjIEdlbmVyaWMgRHJpdmVyIE9wdGlvbnMKKyMKK0NPTkZJR19VRVZFTlRfSEVMUEVSX1BBVEg9Ii9zYmluL2hvdHBsdWciCitDT05GSUdfU1RBTkRBTE9ORT15CitDT05GSUdfUFJFVkVOVF9GSVJNV0FSRV9CVUlMRD15CitDT05GSUdfRldfTE9BREVSPW0KKyMgQ09ORklHX1NZU19IWVBFUlZJU09SIGlzIG5vdCBzZXQKK0NPTkZJR19DT05ORUNUT1I9bQorIyBDT05GSUdfTVREIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BBUlBPUlQgaXMgbm90IHNldAorQ09ORklHX0JMS19ERVY9eQorIyBDT05GSUdfQkxLX0RFVl9DT1dfQ09NTU9OIGlzIG5vdCBzZXQKK0NPTkZJR19CTEtfREVWX0xPT1A9eQorQ09ORklHX0JMS19ERVZfQ1JZUFRPTE9PUD1tCitDT05GSUdfQkxLX0RFVl9OQkQ9bQorQ09ORklHX0JMS19ERVZfUkFNPXkKK0NPTkZJR19CTEtfREVWX1JBTV9DT1VOVD0xNgorQ09ORklHX0JMS19ERVZfUkFNX1NJWkU9NDA5NgorIyBDT05GSUdfQkxLX0RFVl9YSVAgaXMgbm90IHNldAorQ09ORklHX0NEUk9NX1BLVENEVkQ9bQorQ09ORklHX0NEUk9NX1BLVENEVkRfQlVGRkVSUz04CisjIENPTkZJR19DRFJPTV9QS1RDRFZEX1dDQUNIRSBpcyBub3Qgc2V0CitDT05GSUdfQVRBX09WRVJfRVRIPW0KK0NPTkZJR19NSVNDX0RFVklDRVM9eQorIyBDT05GSUdfRUVQUk9NXzkzQ1g2IGlzIG5vdCBzZXQKKyMgQ09ORklHX0VOQ0xPU1VSRV9TRVJWSUNFUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9JREU9eQorIyBDT05GSUdfSURFIGlzIG5vdCBzZXQKKworIworIyBTQ1NJIGRldmljZSBzdXBwb3J0CisjCitDT05GSUdfUkFJRF9BVFRSUz1tCitDT05GSUdfU0NTST15CitDT05GSUdfU0NTSV9ETUE9eQorQ09ORklHX1NDU0lfVEdUPW0KKyMgQ09ORklHX1NDU0lfTkVUTElOSyBpcyBub3Qgc2V0CitDT05GSUdfU0NTSV9QUk9DX0ZTPXkKKworIworIyBTQ1NJIHN1cHBvcnQgdHlwZSAoZGlzaywgdGFwZSwgQ0QtUk9NKQorIworQ09ORklHX0JMS19ERVZfU0Q9eQorQ09ORklHX0NIUl9ERVZfU1Q9bQorQ09ORklHX0NIUl9ERVZfT1NTVD1tCitDT05GSUdfQkxLX0RFVl9TUj15CitDT05GSUdfQkxLX0RFVl9TUl9WRU5ET1I9eQorQ09ORklHX0NIUl9ERVZfU0c9bQorIyBDT05GSUdfQ0hSX0RFVl9TQ0ggaXMgbm90IHNldAorCisjCisjIFNvbWUgU0NTSSBkZXZpY2VzIChlLmcuIENEIGp1a2Vib3gpIHN1cHBvcnQgbXVsdGlwbGUgTFVOcworIworIyBDT05GSUdfU0NTSV9NVUxUSV9MVU4gaXMgbm90IHNldAorQ09ORklHX1NDU0lfQ09OU1RBTlRTPXkKKyMgQ09ORklHX1NDU0lfTE9HR0lORyBpcyBub3Qgc2V0CisjIENPTkZJR19TQ1NJX1NDQU5fQVNZTkMgaXMgbm90IHNldAorQ09ORklHX1NDU0lfV0FJVF9TQ0FOPW0KKworIworIyBTQ1NJIFRyYW5zcG9ydHMKKyMKK0NPTkZJR19TQ1NJX1NQSV9BVFRSUz15CisjIENPTkZJR19TQ1NJX0ZDX0FUVFJTIGlzIG5vdCBzZXQKK0NPTkZJR19TQ1NJX0lTQ1NJX0FUVFJTPW0KK0NPTkZJR19TQ1NJX1NBU19BVFRSUz1tCitDT05GSUdfU0NTSV9TQVNfTElCU0FTPW0KK0NPTkZJR19TQ1NJX1NBU19IT1NUX1NNUD15CisjIENPTkZJR19TQ1NJX1NBU19MSUJTQVNfREVCVUcgaXMgbm90IHNldAorQ09ORklHX1NDU0lfU1JQX0FUVFJTPW0KK0NPTkZJR19TQ1NJX1NSUF9UR1RfQVRUUlM9eQorQ09ORklHX1NDU0lfTE9XTEVWRUw9eQorQ09ORklHX0lTQ1NJX1RDUD1tCisjIENPTkZJR19TQ1NJX0RFQlVHIGlzIG5vdCBzZXQKK0NPTkZJR19TVU4zWF9FU1A9eQorQ09ORklHX01EPXkKK0NPTkZJR19CTEtfREVWX01EPW0KK0NPTkZJR19NRF9MSU5FQVI9bQorQ09ORklHX01EX1JBSUQwPW0KK0NPTkZJR19NRF9SQUlEMT1tCisjIENPTkZJR19NRF9SQUlEMTAgaXMgbm90IHNldAorQ09ORklHX01EX1JBSUQ0NTY9bQorQ09ORklHX01EX1JBSUQ1X1JFU0hBUEU9eQorQ09ORklHX01EX01VTFRJUEFUSD1tCisjIENPTkZJR19NRF9GQVVMVFkgaXMgbm90IHNldAorQ09ORklHX0JMS19ERVZfRE09bQorIyBDT05GSUdfRE1fREVCVUcgaXMgbm90IHNldAorQ09ORklHX0RNX0NSWVBUPW0KK0NPTkZJR19ETV9TTkFQU0hPVD1tCitDT05GSUdfRE1fTUlSUk9SPW0KK0NPTkZJR19ETV9aRVJPPW0KK0NPTkZJR19ETV9NVUxUSVBBVEg9bQorQ09ORklHX0RNX01VTFRJUEFUSF9FTUM9bQorQ09ORklHX0RNX01VTFRJUEFUSF9SREFDPW0KK0NPTkZJR19ETV9NVUxUSVBBVEhfSFA9bQorIyBDT05GSUdfRE1fREVMQVkgaXMgbm90IHNldAorQ09ORklHX0RNX1VFVkVOVD15CiBDT05GSUdfTkVUREVWSUNFUz15CisjIENPTkZJR19ORVRERVZJQ0VTX01VTFRJUVVFVUUgaXMgbm90IHNldAogQ09ORklHX0RVTU1ZPW0KICMgQ09ORklHX0JPTkRJTkcgaXMgbm90IHNldAorQ09ORklHX01BQ1ZMQU49bQogQ09ORklHX0VRVUFMSVpFUj1tCiAjIENPTkZJR19UVU4gaXMgbm90IHNldAotCi0jCi0jIEV0aGVybmV0ICgxMCBvciAxMDBNYml0KQotIworQ09ORklHX1ZFVEg9bQorIyBDT05GSUdfUEhZTElCIGlzIG5vdCBzZXQKIENPTkZJR19ORVRfRVRIRVJORVQ9eQotQ09ORklHX01JST1tCisjIENPTkZJR19NSUkgaXMgbm90IHNldAogQ09ORklHX1NVTjNMQU5DRT15CisjIENPTkZJR19JQk1fTkVXX0VNQUNfWk1JSSBpcyBub3Qgc2V0CisjIENPTkZJR19JQk1fTkVXX0VNQUNfUkdNSUkgaXMgbm90IHNldAorIyBDT05GSUdfSUJNX05FV19FTUFDX1RBSCBpcyBub3Qgc2V0CisjIENPTkZJR19JQk1fTkVXX0VNQUNfRU1BQzQgaXMgbm90IHNldAorIyBDT05GSUdfQjQ0IGlzIG5vdCBzZXQKKyMgQ09ORklHX05FVERFVl8xMDAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX05FVERFVl8xMDAwMCBpcyBub3Qgc2V0CiAKICMKLSMgRXRoZXJuZXQgKDEwMDAgTWJpdCkKKyMgV2lyZWxlc3MgTEFOCiAjCi0KLSMKLSMgRXRoZXJuZXQgKDEwMDAwIE1iaXQpCi0jCi0KLSMKLSMgVG9rZW4gUmluZyBkZXZpY2VzCi0jCi0KLSMKLSMgV2lyZWxlc3MgTEFOIChub24taGFtcmFkaW8pCi0jCi0jIENPTkZJR19ORVRfUkFESU8gaXMgbm90IHNldAotCi0jCi0jIFdhbiBpbnRlcmZhY2VzCi0jCisjIENPTkZJR19XTEFOX1BSRTgwMjExIGlzIG5vdCBzZXQKKyMgQ09ORklHX1dMQU5fODAyMTEgaXMgbm90IHNldAogIyBDT05GSUdfV0FOIGlzIG5vdCBzZXQKIENPTkZJR19QUFA9bQogIyBDT05GSUdfUFBQX01VTFRJTElOSyBpcyBub3Qgc2V0CkBAIC00MzksMjggKzU0NywyOCBAQAogQ09ORklHX1BQUF9TWU5DX1RUWT1tCiBDT05GSUdfUFBQX0RFRkxBVEU9bQogQ09ORklHX1BQUF9CU0RDT01QPW0KK0NPTkZJR19QUFBfTVBQRT1tCiBDT05GSUdfUFBQT0U9bQorQ09ORklHX1BQUE9MMlRQPW0KIENPTkZJR19TTElQPW0KIENPTkZJR19TTElQX0NPTVBSRVNTRUQ9eQorQ09ORklHX1NMSEM9bQogQ09ORklHX1NMSVBfU01BUlQ9eQogQ09ORklHX1NMSVBfTU9ERV9TTElQNj15Ci1DT05GSUdfU0hBUEVSPW0KIENPTkZJR19ORVRDT05TT0xFPW0KLQotIwotIyBJU0ROIHN1YnN5c3RlbQotIworQ09ORklHX05FVENPTlNPTEVfRFlOQU1JQz15CitDT05GSUdfTkVUUE9MTD15CisjIENPTkZJR19ORVRQT0xMX1RSQVAgaXMgbm90IHNldAorQ09ORklHX05FVF9QT0xMX0NPTlRST0xMRVI9eQogIyBDT05GSUdfSVNETiBpcyBub3Qgc2V0Ci0KLSMKLSMgVGVsZXBob255IFN1cHBvcnQKLSMKICMgQ09ORklHX1BIT05FIGlzIG5vdCBzZXQKIAogIwogIyBJbnB1dCBkZXZpY2Ugc3VwcG9ydAogIwogQ09ORklHX0lOUFVUPXkKK0NPTkZJR19JTlBVVF9GRl9NRU1MRVNTPW0KKyMgQ09ORklHX0lOUFVUX1BPTExERVYgaXMgbm90IHNldAogCiAjCiAjIFVzZXJsYW5kIGludGVyZmFjZXMKQEAgLTQ3MCw3ICs1NzgsNiBAQAogQ09ORklHX0lOUFVUX01PVVNFREVWX1NDUkVFTl9YPTEwMjQKIENPTkZJR19JTlBVVF9NT1VTRURFVl9TQ1JFRU5fWT03NjgKICMgQ09ORklHX0lOUFVUX0pPWURFViBpcyBub3Qgc2V0Ci0jIENPTkZJR19JTlBVVF9UU0RFViBpcyBub3Qgc2V0CiAjIENPTkZJR19JTlBVVF9FVkRFViBpcyBub3Qgc2V0CiAjIENPTkZJR19JTlBVVF9FVkJVRyBpcyBub3Qgc2V0CiAKQEAgLTQ4MywxMSArNTkwLDE5IEBACiAjIENPTkZJR19LRVlCT0FSRF9MS0tCRCBpcyBub3Qgc2V0CiAjIENPTkZJR19LRVlCT0FSRF9YVEtCRCBpcyBub3Qgc2V0CiAjIENPTkZJR19LRVlCT0FSRF9ORVdUT04gaXMgbm90IHNldAorIyBDT05GSUdfS0VZQk9BUkRfU1RPV0FXQVkgaXMgbm90IHNldAogQ09ORklHX0lOUFVUX01PVVNFPXkKIENPTkZJR19NT1VTRV9QUzI9bQorQ09ORklHX01PVVNFX1BTMl9BTFBTPXkKK0NPTkZJR19NT1VTRV9QUzJfTE9HSVBTMlBQPXkKK0NPTkZJR19NT1VTRV9QUzJfU1lOQVBUSUNTPXkKK0NPTkZJR19NT1VTRV9QUzJfTElGRUJPT0s9eQorQ09ORklHX01PVVNFX1BTMl9UUkFDS1BPSU5UPXkKKyMgQ09ORklHX01PVVNFX1BTMl9UT1VDSEtJVCBpcyBub3Qgc2V0CiBDT05GSUdfTU9VU0VfU0VSSUFMPW0KICMgQ09ORklHX01PVVNFX1ZTWFhYQUEgaXMgbm90IHNldAogIyBDT05GSUdfSU5QVVRfSk9ZU1RJQ0sgaXMgbm90IHNldAorIyBDT05GSUdfSU5QVVRfVEFCTEVUIGlzIG5vdCBzZXQKICMgQ09ORklHX0lOUFVUX1RPVUNIU0NSRUVOIGlzIG5vdCBzZXQKICMgQ09ORklHX0lOUFVUX01JU0MgaXMgbm90IHNldAogCkBAIC00OTUsNyArNjEwLDcgQEAKICMgSGFyZHdhcmUgSS9PIHBvcnRzCiAjCiBDT05GSUdfU0VSSU89eQotQ09ORklHX1NFUklPX1NFUlBPUlQ9bQorIyBDT05GSUdfU0VSSU9fU0VSUE9SVCBpcyBub3Qgc2V0CiBDT05GSUdfU0VSSU9fTElCUFMyPW0KICMgQ09ORklHX1NFUklPX1JBVyBpcyBub3Qgc2V0CiAjIENPTkZJR19HQU1FUE9SVCBpcyBub3Qgc2V0CkBAIC01MDYsNiArNjIxLDcgQEAKIENPTkZJR19WVD15CiBDT05GSUdfVlRfQ09OU09MRT15CiBDT05GSUdfSFdfQ09OU09MRT15CitDT05GSUdfVlRfSFdfQ09OU09MRV9CSU5ESU5HPXkKICMgQ09ORklHX1NFUklBTF9OT05TVEFOREFSRCBpcyBub3Qgc2V0CiAKICMKQEAgLTUxOSwxMTIgKzYzNSwxMTMgQEAKIENPTkZJR19VTklYOThfUFRZUz15CiBDT05GSUdfTEVHQUNZX1BUWVM9eQogQ09ORklHX0xFR0FDWV9QVFlfQ09VTlQ9MjU2Ci0KLSMKLSMgSVBNSQotIwogIyBDT05GSUdfSVBNSV9IQU5ETEVSIGlzIG5vdCBzZXQKLQotIwotIyBXYXRjaGRvZyBDYXJkcwotIwotIyBDT05GSUdfV0FUQ0hET0cgaXMgbm90IHNldAotQ09ORklHX0dFTl9SVEM9eQorIyBDT05GSUdfSFdfUkFORE9NIGlzIG5vdCBzZXQKK0NPTkZJR19HRU5fUlRDPW0KIENPTkZJR19HRU5fUlRDX1g9eQotIyBDT05GSUdfRFRMSyBpcyBub3Qgc2V0CiAjIENPTkZJR19SMzk2NCBpcyBub3Qgc2V0Ci0KLSMKLSMgRnRhcGUsIHRoZSBmbG9wcHkgdGFwZSBkZXZpY2UgZHJpdmVyCi0jCi0jIENPTkZJR19EUk0gaXMgbm90IHNldAogIyBDT05GSUdfUkFXX0RSSVZFUiBpcyBub3Qgc2V0Ci0KLSMKLSMgVFBNIGRldmljZXMKLSMKLQotIwotIyBJMkMgc3VwcG9ydAotIworIyBDT05GSUdfVENHX1RQTSBpcyBub3Qgc2V0CiAjIENPTkZJR19JMkMgaXMgbm90IHNldAogCiAjCi0jIERhbGxhcydzIDEtd2lyZSBidXMKKyMgU1BJIHN1cHBvcnQKICMKKyMgQ09ORklHX1NQSSBpcyBub3Qgc2V0CisjIENPTkZJR19TUElfTUFTVEVSIGlzIG5vdCBzZXQKICMgQ09ORklHX1cxIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BPV0VSX1NVUFBMWSBpcyBub3Qgc2V0CisjIENPTkZJR19IV01PTiBpcyBub3Qgc2V0CisjIENPTkZJR19USEVSTUFMIGlzIG5vdCBzZXQKKyMgQ09ORklHX1dBVENIRE9HIGlzIG5vdCBzZXQKIAogIwotIyBNaXNjIGRldmljZXMKKyMgU29uaWNzIFNpbGljb24gQmFja3BsYW5lCiAjCitDT05GSUdfU1NCX1BPU1NJQkxFPXkKKyMgQ09ORklHX1NTQiBpcyBub3Qgc2V0CisKKyMKKyMgTXVsdGlmdW5jdGlvbiBkZXZpY2UgZHJpdmVycworIworIyBDT05GSUdfTUZEX1NNNTAxIGlzIG5vdCBzZXQKIAogIwogIyBNdWx0aW1lZGlhIGRldmljZXMKICMKICMgQ09ORklHX1ZJREVPX0RFViBpcyBub3Qgc2V0Ci0KLSMKLSMgRGlnaXRhbCBWaWRlbyBCcm9hZGNhc3RpbmcgRGV2aWNlcwotIwotIyBDT05GSUdfRFZCIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RWQl9DT1JFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RBQiBpcyBub3Qgc2V0CiAKICMKICMgR3JhcGhpY3Mgc3VwcG9ydAogIworIyBDT05GSUdfVkdBU1RBVEUgaXMgbm90IHNldAorIyBDT05GSUdfVklERU9fT1VUUFVUX0NPTlRST0wgaXMgbm90IHNldAogQ09ORklHX0ZCPXkKKyMgQ09ORklHX0ZJUk1XQVJFX0VESUQgaXMgbm90IHNldAorIyBDT05GSUdfRkJfRERDIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZCX0NGQl9GSUxMUkVDVCBpcyBub3Qgc2V0CiAjIENPTkZJR19GQl9DRkJfQ09QWUFSRUEgaXMgbm90IHNldAogIyBDT05GSUdfRkJfQ0ZCX0lNQUdFQkxJVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19GQl9TT0ZUX0NVUlNPUiBpcyBub3Qgc2V0CisjIENPTkZJR19GQl9DRkJfUkVWX1BJWEVMU19JTl9CWVRFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZCX1NZU19GSUxMUkVDVCBpcyBub3Qgc2V0CisjIENPTkZJR19GQl9TWVNfQ09QWUFSRUEgaXMgbm90IHNldAorIyBDT05GSUdfRkJfU1lTX0lNQUdFQkxJVCBpcyBub3Qgc2V0CisjIENPTkZJR19GQl9TWVNfRk9QUyBpcyBub3Qgc2V0CitDT05GSUdfRkJfREVGRVJSRURfSU89eQorIyBDT05GSUdfRkJfU1ZHQUxJQiBpcyBub3Qgc2V0CiAjIENPTkZJR19GQl9NQUNNT0RFUyBpcyBub3Qgc2V0Ci1DT05GSUdfRkJfTU9ERV9IRUxQRVJTPXkKKyMgQ09ORklHX0ZCX0JBQ0tMSUdIVCBpcyBub3Qgc2V0CisjIENPTkZJR19GQl9NT0RFX0hFTFBFUlMgaXMgbm90IHNldAogIyBDT05GSUdfRkJfVElMRUJMSVRUSU5HIGlzIG5vdCBzZXQKKworIworIyBGcmFtZSBidWZmZXIgaGFyZHdhcmUgZHJpdmVycworIworIyBDT05GSUdfRkJfVVZFU0EgaXMgbm90IHNldAogIyBDT05GSUdfRkJfUzFEMTNYWFggaXMgbm90IHNldAogIyBDT05GSUdfRkJfVklSVFVBTCBpcyBub3Qgc2V0CisjIENPTkZJR19CQUNLTElHSFRfTENEX1NVUFBPUlQgaXMgbm90IHNldAorCisjCisjIERpc3BsYXkgZGV2aWNlIHN1cHBvcnQKKyMKKyMgQ09ORklHX0RJU1BMQVlfU1VQUE9SVCBpcyBub3Qgc2V0CiAKICMKICMgQ29uc29sZSBkaXNwbGF5IGRyaXZlciBzdXBwb3J0CiAjCiBDT05GSUdfRFVNTVlfQ09OU09MRT15CiBDT05GSUdfRlJBTUVCVUZGRVJfQ09OU09MRT15CisjIENPTkZJR19GUkFNRUJVRkZFUl9DT05TT0xFX0RFVEVDVF9QUklNQVJZIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZSQU1FQlVGRkVSX0NPTlNPTEVfUk9UQVRJT04gaXMgbm90IHNldAogIyBDT05GSUdfRk9OVFMgaXMgbm90IHNldAogQ09ORklHX0ZPTlRfOHg4PXkKIENPTkZJR19GT05UXzh4MTY9eQotCi0jCi0jIExvZ28gY29uZmlndXJhdGlvbgotIwogQ09ORklHX0xPR089eQogQ09ORklHX0xPR09fTElOVVhfTU9OTz15CiBDT05GSUdfTE9HT19MSU5VWF9WR0ExNj15CiBDT05GSUdfTE9HT19MSU5VWF9DTFVUMjI0PXkKLSMgQ09ORklHX0JBQ0tMSUdIVF9MQ0RfU1VQUE9SVCBpcyBub3Qgc2V0CiAKICMKICMgU291bmQKICMKICMgQ09ORklHX1NPVU5EIGlzIG5vdCBzZXQKLQotIwotIyBVU0Igc3VwcG9ydAotIwotIyBDT05GSUdfVVNCX0FSQ0hfSEFTX0hDRCBpcyBub3Qgc2V0Ci0jIENPTkZJR19VU0JfQVJDSF9IQVNfT0hDSSBpcyBub3Qgc2V0Ci0KLSMKLSMgVVNCIEdhZGdldCBTdXBwb3J0Ci0jCi0jIENPTkZJR19VU0JfR0FER0VUIGlzIG5vdCBzZXQKLQotIwotIyBNTUMvU0QgQ2FyZCBzdXBwb3J0Ci0jCitDT05GSUdfSElEX1NVUFBPUlQ9eQorQ09ORklHX0hJRD1tCisjIENPTkZJR19ISURfREVCVUcgaXMgbm90IHNldAorQ09ORklHX0hJRFJBVz15CisjIENPTkZJR19VU0JfU1VQUE9SVCBpcyBub3Qgc2V0CiAjIENPTkZJR19NTUMgaXMgbm90IHNldAorIyBDT05GSUdfTUVNU1RJQ0sgaXMgbm90IHNldAorIyBDT05GSUdfTkVXX0xFRFMgaXMgbm90IHNldAorIyBDT05GSUdfUlRDX0NMQVNTIGlzIG5vdCBzZXQKIAogIwotIyBJbmZpbmlCYW5kIHN1cHBvcnQKKyMgVXNlcnNwYWNlIEkvTwogIwotIyBDT05GSUdfSU5GSU5JQkFORCBpcyBub3Qgc2V0CisjIENPTkZJR19VSU8gaXMgbm90IHNldAogCiAjCiAjIENoYXJhY3RlciBkZXZpY2VzCkBAIC02MzUsMTAgKzc1MiwxMSBAQAogIwogQ09ORklHX0VYVDJfRlM9eQogIyBDT05GSUdfRVhUMl9GU19YQVRUUiBpcyBub3Qgc2V0CisjIENPTkZJR19FWFQyX0ZTX1hJUCBpcyBub3Qgc2V0CiBDT05GSUdfRVhUM19GUz15CiAjIENPTkZJR19FWFQzX0ZTX1hBVFRSIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VYVDRERVZfRlMgaXMgbm90IHNldAogQ09ORklHX0pCRD15Ci0jIENPTkZJR19KQkRfREVCVUcgaXMgbm90IHNldAogQ09ORklHX1JFSVNFUkZTX0ZTPW0KICMgQ09ORklHX1JFSVNFUkZTX0NIRUNLIGlzIG5vdCBzZXQKICMgQ09ORklHX1JFSVNFUkZTX1BST0NfSU5GTyBpcyBub3Qgc2V0CkBAIC02NDksMjUgKzc2NywyOSBAQAogIyBDT05GSUdfSkZTX0RFQlVHIGlzIG5vdCBzZXQKICMgQ09ORklHX0pGU19TVEFUSVNUSUNTIGlzIG5vdCBzZXQKIENPTkZJR19GU19QT1NJWF9BQ0w9eQotCi0jCi0jIFhGUyBzdXBwb3J0Ci0jCiBDT05GSUdfWEZTX0ZTPW0KLUNPTkZJR19YRlNfRVhQT1JUPXkKLSMgQ09ORklHX1hGU19SVCBpcyBub3Qgc2V0CiAjIENPTkZJR19YRlNfUVVPVEEgaXMgbm90IHNldAogIyBDT05GSUdfWEZTX1NFQ1VSSVRZIGlzIG5vdCBzZXQKICMgQ09ORklHX1hGU19QT1NJWF9BQ0wgaXMgbm90IHNldAotQ09ORklHX01JTklYX0ZTPXkKLSMgQ09ORklHX1JPTUZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1hGU19SVCBpcyBub3Qgc2V0CitDT05GSUdfR0ZTMl9GUz1tCitDT05GSUdfR0ZTMl9GU19MT0NLSU5HX05PTE9DSz1tCitDT05GSUdfR0ZTMl9GU19MT0NLSU5HX0RMTT1tCitDT05GSUdfT0NGUzJfRlM9bQorIyBDT05GSUdfT0NGUzJfREVCVUdfTUFTS0xPRyBpcyBub3Qgc2V0CisjIENPTkZJR19PQ0ZTMl9ERUJVR19GUyBpcyBub3Qgc2V0CitDT05GSUdfRE5PVElGWT15CitDT05GSUdfSU5PVElGWT15CitDT05GSUdfSU5PVElGWV9VU0VSPXkKIENPTkZJR19RVU9UQT15CitDT05GSUdfUVVPVEFfTkVUTElOS19JTlRFUkZBQ0U9eQorIyBDT05GSUdfUFJJTlRfUVVPVEFfV0FSTklORyBpcyBub3Qgc2V0CiAjIENPTkZJR19RRk1UX1YxIGlzIG5vdCBzZXQKICMgQ09ORklHX1FGTVRfVjIgaXMgbm90IHNldAogQ09ORklHX1FVT1RBQ1RMPXkKLUNPTkZJR19ETk9USUZZPXkKIENPTkZJR19BVVRPRlNfRlM9bQogQ09ORklHX0FVVE9GUzRfRlM9bQorQ09ORklHX0ZVU0VfRlM9bQogCiAjCiAjIENELVJPTS9EVkQgRmlsZXN5c3RlbXMKQEAgLTY3NSw3ICs3OTcsNiBAQAogQ09ORklHX0lTTzk2NjBfRlM9eQogQ09ORklHX0pPTElFVD15CiBDT05GSUdfWklTT0ZTPXkKLUNPTkZJR19aSVNPRlNfRlM9eQogQ09ORklHX1VERl9GUz1tCiBDT05GSUdfVURGX05MUz15CiAKQEAgLTY5NCwxNSArODE1LDEyIEBACiAjCiBDT05GSUdfUFJPQ19GUz15CiBDT05GSUdfUFJPQ19LQ09SRT15CitDT05GSUdfUFJPQ19TWVNDVEw9eQogQ09ORklHX1NZU0ZTPXkKLUNPTkZJR19ERVZGU19GUz15Ci1DT05GSUdfREVWRlNfTU9VTlQ9eQotIyBDT05GSUdfREVWRlNfREVCVUcgaXMgbm90IHNldAotIyBDT05GSUdfREVWUFRTX0ZTX1hBVFRSIGlzIG5vdCBzZXQKIENPTkZJR19UTVBGUz15Ci0jIENPTkZJR19UTVBGU19YQVRUUiBpcyBub3Qgc2V0CisjIENPTkZJR19UTVBGU19QT1NJWF9BQ0wgaXMgbm90IHNldAogIyBDT05GSUdfSFVHRVRMQl9QQUdFIGlzIG5vdCBzZXQKLUNPTkZJR19SQU1GUz15CitDT05GSUdfQ09ORklHRlNfRlM9bQogCiAjCiAjIE1pc2NlbGxhbmVvdXMgZmlsZXN5c3RlbXMKQEAgLTcxNiw0NCArODM0LDQwIEBACiAjIENPTkZJR19FRlNfRlMgaXMgbm90IHNldAogQ09ORklHX0NSQU1GUz1tCiAjIENPTkZJR19WWEZTX0ZTIGlzIG5vdCBzZXQKK0NPTkZJR19NSU5JWF9GUz15CiBDT05GSUdfSFBGU19GUz1tCiAjIENPTkZJR19RTlg0RlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAogQ09ORklHX1NZU1ZfRlM9bQogQ09ORklHX1VGU19GUz1tCi1DT05GSUdfVUZTX0ZTX1dSSVRFPXkKLQotIwotIyBOZXR3b3JrIEZpbGUgU3lzdGVtcwotIworIyBDT05GSUdfVUZTX0ZTX1dSSVRFIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VGU19ERUJVRyBpcyBub3Qgc2V0CitDT05GSUdfTkVUV09SS19GSUxFU1lTVEVNUz15CiBDT05GSUdfTkZTX0ZTPXkKIENPTkZJR19ORlNfVjM9eQorIyBDT05GSUdfTkZTX1YzX0FDTCBpcyBub3Qgc2V0CiBDT05GSUdfTkZTX1Y0PXkKICMgQ09ORklHX05GU19ESVJFQ1RJTyBpcyBub3Qgc2V0CiBDT05GSUdfTkZTRD1tCiBDT05GSUdfTkZTRF9WMz15Ci1DT05GSUdfTkZTRF9WND15CisjIENPTkZJR19ORlNEX1YzX0FDTCBpcyBub3Qgc2V0CisjIENPTkZJR19ORlNEX1Y0IGlzIG5vdCBzZXQKIENPTkZJR19ORlNEX1RDUD15CiBDT05GSUdfUk9PVF9ORlM9eQogQ09ORklHX0xPQ0tEPXkKIENPTkZJR19MT0NLRF9WND15CiBDT05GSUdfRVhQT1JURlM9bQorQ09ORklHX05GU19DT01NT049eQogQ09ORklHX1NVTlJQQz15CiBDT05GSUdfU1VOUlBDX0dTUz15CitDT05GSUdfU1VOUlBDX0JJTkQzND15CiBDT05GSUdfUlBDU0VDX0dTU19LUkI1PXkKICMgQ09ORklHX1JQQ1NFQ19HU1NfU1BLTTMgaXMgbm90IHNldAogQ09ORklHX1NNQl9GUz1tCiBDT05GSUdfU01CX05MU19ERUZBVUxUPXkKIENPTkZJR19TTUJfTkxTX1JFTU9URT0iY3A0MzciCiAjIENPTkZJR19DSUZTIGlzIG5vdCBzZXQKLUNPTkZJR19OQ1BfRlM9bQotIyBDT05GSUdfTkNQRlNfUEFDS0VUX1NJR05JTkcgaXMgbm90IHNldAotIyBDT05GSUdfTkNQRlNfSU9DVExfTE9DS0lORyBpcyBub3Qgc2V0Ci0jIENPTkZJR19OQ1BGU19TVFJPTkcgaXMgbm90IHNldAotIyBDT05GSUdfTkNQRlNfTkZTX05TIGlzIG5vdCBzZXQKLSMgQ09ORklHX05DUEZTX09TMl9OUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19OQ1BGU19TTUFMTERPUyBpcyBub3Qgc2V0Ci1DT05GSUdfTkNQRlNfTkxTPXkKLSMgQ09ORklHX05DUEZTX0VYVFJBUyBpcyBub3Qgc2V0CisjIENPTkZJR19OQ1BfRlMgaXMgbm90IHNldAogQ09ORklHX0NPREFfRlM9bQogIyBDT05GSUdfQ09EQV9GU19PTERfQVBJIGlzIG5vdCBzZXQKICMgQ09ORklHX0FGU19GUyBpcyBub3Qgc2V0CkBAIC03NjQsMTAgKzg3OCw2IEBACiAjIENPTkZJR19QQVJUSVRJT05fQURWQU5DRUQgaXMgbm90IHNldAogQ09ORklHX01TRE9TX1BBUlRJVElPTj15CiBDT05GSUdfU1VOX1BBUlRJVElPTj15Ci0KLSMKLSMgTmF0aXZlIExhbmd1YWdlIFN1cHBvcnQKLSMKIENPTkZJR19OTFM9eQogQ09ORklHX05MU19ERUZBVUxUPSJpc284ODU5LTEiCiBDT05GSUdfTkxTX0NPREVQQUdFXzQzNz15CkBAIC04MDgsMzUgKzkxOCw0MiBAQAogQ09ORklHX05MU19LT0k4X1I9bQogQ09ORklHX05MU19LT0k4X1U9bQogQ09ORklHX05MU19VVEY4PW0KK0NPTkZJR19ETE09bQorIyBDT05GSUdfRExNX0RFQlVHIGlzIG5vdCBzZXQKIAogIwogIyBLZXJuZWwgaGFja2luZwogIwogIyBDT05GSUdfUFJJTlRLX1RJTUUgaXMgbm90IHNldAotQ09ORklHX0RFQlVHX0tFUk5FTD15CitDT05GSUdfRU5BQkxFX1dBUk5fREVQUkVDQVRFRD15CitDT05GSUdfRU5BQkxFX01VU1RfQ0hFQ0s9eQogQ09ORklHX01BR0lDX1NZU1JRPXkKLUNPTkZJR19MT0dfQlVGX1NISUZUPTE2Ci0jIENPTkZJR19TQ0hFRFNUQVRTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0RFQlVHX1NMQUIgaXMgbm90IHNldAotIyBDT05GSUdfREVCVUdfU1BJTkxPQ0sgaXMgbm90IHNldAotIyBDT05GSUdfREVCVUdfU1BJTkxPQ0tfU0xFRVAgaXMgbm90IHNldAotIyBDT05GSUdfREVCVUdfS09CSkVDVCBpcyBub3Qgc2V0Ci1DT05GSUdfREVCVUdfQlVHVkVSQk9TRT15Ci0jIENPTkZJR19ERUJVR19JTkZPIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VOVVNFRF9TWU1CT0xTIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZSQU1FX1BPSU5URVIgaXMgbm90IHNldAorIyBDT05GSUdfSEVBREVSU19DSEVDSyBpcyBub3Qgc2V0CisjIENPTkZJR19ERUJVR19LRVJORUwgaXMgbm90IHNldAorQ09ORklHX0RFQlVHX0JVR1ZFUkJPU0U9eQorIyBDT05GSUdfU0FNUExFUyBpcyBub3Qgc2V0CiAKICMKICMgU2VjdXJpdHkgb3B0aW9ucwogIwogIyBDT05GSUdfS0VZUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TRUNVUklUWSBpcyBub3Qgc2V0Ci0KLSMKLSMgQ3J5cHRvZ3JhcGhpYyBvcHRpb25zCi0jCisjIENPTkZJR19TRUNVUklUWV9GSUxFX0NBUEFCSUxJVElFUyBpcyBub3Qgc2V0CitDT05GSUdfWE9SX0JMT0NLUz1tCitDT05GSUdfQVNZTkNfQ09SRT1tCitDT05GSUdfQVNZTkNfTUVNQ1BZPW0KK0NPTkZJR19BU1lOQ19YT1I9bQogQ09ORklHX0NSWVBUTz15CitDT05GSUdfQ1JZUFRPX0FMR0FQST15CitDT05GSUdfQ1JZUFRPX0FFQUQ9bQorQ09ORklHX0NSWVBUT19CTEtDSVBIRVI9eQorQ09ORklHX0NSWVBUT19TRVFJVj1tCitDT05GSUdfQ1JZUFRPX0hBU0g9eQorQ09ORklHX0NSWVBUT19NQU5BR0VSPXkKIENPTkZJR19DUllQVE9fSE1BQz15CitDT05GSUdfQ1JZUFRPX1hDQkM9bQogQ09ORklHX0NSWVBUT19OVUxMPW0KIENPTkZJR19DUllQVE9fTUQ0PW0KIENPTkZJR19DUllQVE9fTUQ1PXkKQEAgLTg0NSw5ICs5NjIsMjEgQEAKIENPTkZJR19DUllQVE9fU0hBNTEyPW0KIENPTkZJR19DUllQVE9fV1A1MTI9bQogQ09ORklHX0NSWVBUT19UR1IxOTI9bQorQ09ORklHX0NSWVBUT19HRjEyOE1VTD1tCitDT05GSUdfQ1JZUFRPX0VDQj1tCitDT05GSUdfQ1JZUFRPX0NCQz15CitDT05GSUdfQ1JZUFRPX1BDQkM9bQorQ09ORklHX0NSWVBUT19MUlc9bQorQ09ORklHX0NSWVBUT19YVFM9bQorQ09ORklHX0NSWVBUT19DVFI9bQorQ09ORklHX0NSWVBUT19HQ009bQorQ09ORklHX0NSWVBUT19DQ009bQorQ09ORklHX0NSWVBUT19DUllQVEQ9bQogQ09ORklHX0NSWVBUT19ERVM9eQorQ09ORklHX0NSWVBUT19GQ1JZUFQ9bQogQ09ORklHX0NSWVBUT19CTE9XRklTSD1tCiBDT05GSUdfQ1JZUFRPX1RXT0ZJU0g9bQorQ09ORklHX0NSWVBUT19UV09GSVNIX0NPTU1PTj1tCiBDT05GSUdfQ1JZUFRPX1NFUlBFTlQ9bQogQ09ORklHX0NSWVBUT19BRVM9bQogQ09ORklHX0NSWVBUT19DQVNUNT1tCkBAIC04NTYsMjAgKzk4NSwzNSBAQAogQ09ORklHX0NSWVBUT19BUkM0PW0KIENPTkZJR19DUllQVE9fS0hBWkFEPW0KIENPTkZJR19DUllQVE9fQU5VQklTPW0KK0NPTkZJR19DUllQVE9fU0VFRD1tCitDT05GSUdfQ1JZUFRPX1NBTFNBMjA9bQogQ09ORklHX0NSWVBUT19ERUZMQVRFPW0KIENPTkZJR19DUllQVE9fTUlDSEFFTF9NSUM9bQogQ09ORklHX0NSWVBUT19DUkMzMkM9bQorQ09ORklHX0NSWVBUT19DQU1FTExJQT1tCiBDT05GSUdfQ1JZUFRPX1RFU1Q9bQotCi0jCi0jIEhhcmR3YXJlIGNyeXB0byBkZXZpY2VzCi0jCitDT05GSUdfQ1JZUFRPX0FVVEhFTkM9bQorQ09ORklHX0NSWVBUT19MWk89bQorIyBDT05GSUdfQ1JZUFRPX0hXIGlzIG5vdCBzZXQKIAogIwogIyBMaWJyYXJ5IHJvdXRpbmVzCiAjCitDT05GSUdfQklUUkVWRVJTRT15CiBDT05GSUdfQ1JDX0NDSVRUPW0KK0NPTkZJR19DUkMxNj1tCisjIENPTkZJR19DUkNfSVRVX1QgaXMgbm90IHNldAogQ09ORklHX0NSQzMyPXkKKyMgQ09ORklHX0NSQzcgaXMgbm90IHNldAogQ09ORklHX0xJQkNSQzMyQz1tCiBDT05GSUdfWkxJQl9JTkZMQVRFPXkKIENPTkZJR19aTElCX0RFRkxBVEU9bQorQ09ORklHX0xaT19DT01QUkVTUz1tCitDT05GSUdfTFpPX0RFQ09NUFJFU1M9bQorQ09ORklHX1RFWFRTRUFSQ0g9eQorQ09ORklHX1RFWFRTRUFSQ0hfS01QPW0KK0NPTkZJR19URVhUU0VBUkNIX0JNPW0KK0NPTkZJR19URVhUU0VBUkNIX0ZTTT1tCitDT05GSUdfUExJU1Q9eQorQ09ORklHX0hBU19JT01FTT15CitDT05GSUdfSEFTX0RNQT15CmRpZmYgLS1naXQgYS9hcmNoL202OGsvZGVmY29uZmlnIGIvYXJjaC9tNjhrL2RlZmNvbmZpZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Q5MzVlNC4uMDAwMDAwMAotLS0gYS9hcmNoL202OGsvZGVmY29uZmlnCisrKyAvZGV2L251bGwKQEAgLTEsNjU3ICswLDAgQEAKLSMKLSMgQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgbWFrZSBjb25maWc6IGRvbid0IGVkaXQKLSMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4xMi1yYzYtbTY4awotIyBUdWUgSnVuICA3IDIwOjM0OjE3IDIwMDUKLSMKLUNPTkZJR19NNjhLPXkKLUNPTkZJR19NTVU9eQotQ09ORklHX1VJRDE2PXkKLUNPTkZJR19SV1NFTV9HRU5FUklDX1NQSU5MT0NLPXkKLUNPTkZJR19HRU5FUklDX0NBTElCUkFURV9ERUxBWT15Ci0KLSMKLSMgQ29kZSBtYXR1cml0eSBsZXZlbCBvcHRpb25zCi0jCi1DT05GSUdfRVhQRVJJTUVOVEFMPXkKLUNPTkZJR19DTEVBTl9DT01QSUxFPXkKLUNPTkZJR19CUk9LRU5fT05fU01QPXkKLUNPTkZJR19JTklUX0VOVl9BUkdfTElNSVQ9MzIKLQotIwotIyBHZW5lcmFsIHNldHVwCi0jCi1DT05GSUdfTE9DQUxWRVJTSU9OPSIiCi1DT05GSUdfU1dBUD15Ci1DT05GSUdfU1lTVklQQz15Ci0jIENPTkZJR19QT1NJWF9NUVVFVUUgaXMgbm90IHNldAotIyBDT05GSUdfQlNEX1BST0NFU1NfQUNDVCBpcyBub3Qgc2V0Ci1DT05GSUdfU1lTQ1RMPXkKLSMgQ09ORklHX0FVRElUIGlzIG5vdCBzZXQKLSMgQ09ORklHX0hPVFBMVUcgaXMgbm90IHNldAotQ09ORklHX0tPQkpFQ1RfVUVWRU5UPXkKLSMgQ09ORklHX0lLQ09ORklHIGlzIG5vdCBzZXQKLSMgQ09ORklHX0VNQkVEREVEIGlzIG5vdCBzZXQKLUNPTkZJR19LQUxMU1lNUz15Ci0jIENPTkZJR19LQUxMU1lNU19FWFRSQV9QQVNTIGlzIG5vdCBzZXQKLUNPTkZJR19QUklOVEs9eQotQ09ORklHX0JVRz15Ci1DT05GSUdfQkFTRV9GVUxMPXkKLUNPTkZJR19GVVRFWD15Ci1DT05GSUdfRVBPTEw9eQotQ09ORklHX1NITUVNPXkKLUNPTkZJR19DQ19BTElHTl9GVU5DVElPTlM9MAotQ09ORklHX0NDX0FMSUdOX0xBQkVMUz0wCi1DT05GSUdfQ0NfQUxJR05fTE9PUFM9MAotQ09ORklHX0NDX0FMSUdOX0pVTVBTPTAKLSMgQ09ORklHX1RJTllfU0hNRU0gaXMgbm90IHNldAotQ09ORklHX0JBU0VfU01BTEw9MAotCi0jCi0jIExvYWRhYmxlIG1vZHVsZSBzdXBwb3J0Ci0jCi0jIENPTkZJR19NT0RVTEVTIGlzIG5vdCBzZXQKLQotIwotIyBQbGF0Zm9ybSBkZXBlbmRlbnQgc2V0dXAKLSMKLSMgQ09ORklHX1NVTjMgaXMgbm90IHNldAotQ09ORklHX0FNSUdBPXkKLSMgQ09ORklHX0FUQVJJIGlzIG5vdCBzZXQKLSMgQ09ORklHX01BQyBpcyBub3Qgc2V0Ci0jIENPTkZJR19BUE9MTE8gaXMgbm90IHNldAotIyBDT05GSUdfVk1FIGlzIG5vdCBzZXQKLSMgQ09ORklHX0hQMzAwIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NVTjNYIGlzIG5vdCBzZXQKLSMgQ09ORklHX1E0MCBpcyBub3Qgc2V0Ci0KLSMKLSMgUHJvY2Vzc29yIHR5cGUKLSMKLUNPTkZJR19NNjgwMjA9eQotQ09ORklHX002ODAzMD15Ci1DT05GSUdfTTY4MDQwPXkKLSMgQ09ORklHX002ODA2MCBpcyBub3Qgc2V0Ci1DT05GSUdfTU1VX01PVE9ST0xBPXkKLSMgQ09ORklHX002OEtGUFVfRU1VIGlzIG5vdCBzZXQKLSMgQ09ORklHX0FEVkFOQ0VEIGlzIG5vdCBzZXQKLQotIwotIyBHZW5lcmFsIHNldHVwCi0jCi1DT05GSUdfQklORk1UX0VMRj15Ci1DT05GSUdfQklORk1UX0FPVVQ9eQotIyBDT05GSUdfQklORk1UX01JU0MgaXMgbm90IHNldAotQ09ORklHX1pPUlJPPXkKLSMgQ09ORklHX0FNSUdBX1BDTUNJQSBpcyBub3Qgc2V0Ci0jIENPTkZJR19IRUFSVEJFQVQgaXMgbm90IHNldAotQ09ORklHX1BST0NfSEFSRFdBUkU9eQotIyBDT05GSUdfWk9SUk9fTkFNRVMgaXMgbm90IHNldAotCi0jCi0jIERldmljZSBEcml2ZXJzCi0jCi0KLSMKLSMgR2VuZXJpYyBEcml2ZXIgT3B0aW9ucwotIwotQ09ORklHX1NUQU5EQUxPTkU9eQotQ09ORklHX1BSRVZFTlRfRklSTVdBUkVfQlVJTEQ9eQotIyBDT05GSUdfRldfTE9BREVSIGlzIG5vdCBzZXQKLQotIwotIyBNZW1vcnkgVGVjaG5vbG9neSBEZXZpY2VzIChNVEQpCi0jCi0jIENPTkZJR19NVEQgaXMgbm90IHNldAotCi0jCi0jIFBhcmFsbGVsIHBvcnQgc3VwcG9ydAotIwotIyBDT05GSUdfUEFSUE9SVCBpcyBub3Qgc2V0Ci0KLSMKLSMgUGx1ZyBhbmQgUGxheSBzdXBwb3J0Ci0jCi0KLSMKLSMgQmxvY2sgZGV2aWNlcwotIwotQ09ORklHX0FNSUdBX0ZMT1BQWT15Ci0jIENPTkZJR19BTUlHQV9aMlJBTSBpcyBub3Qgc2V0Ci0jIENPTkZJR19CTEtfREVWX0NPV19DT01NT04gaXMgbm90IHNldAotIyBDT05GSUdfQkxLX0RFVl9MT09QIGlzIG5vdCBzZXQKLSMgQ09ORklHX0JMS19ERVZfTkJEIGlzIG5vdCBzZXQKLUNPTkZJR19CTEtfREVWX1JBTT15Ci1DT05GSUdfQkxLX0RFVl9SQU1fQ09VTlQ9MTYKLUNPTkZJR19CTEtfREVWX1JBTV9TSVpFPTQwOTYKLUNPTkZJR19CTEtfREVWX0lOSVRSRD15Ci1DT05GSUdfSU5JVFJBTUZTX1NPVVJDRT0iIgotQ09ORklHX0NEUk9NX1BLVENEVkQ9eQotQ09ORklHX0NEUk9NX1BLVENEVkRfQlVGRkVSUz04Ci0jIENPTkZJR19DRFJPTV9QS1RDRFZEX1dDQUNIRSBpcyBub3Qgc2V0Ci0KLSMKLSMgSU8gU2NoZWR1bGVycwotIwotQ09ORklHX0lPU0NIRURfTk9PUD15Ci1DT05GSUdfSU9TQ0hFRF9BUz15Ci1DT05GSUdfSU9TQ0hFRF9ERUFETElORT15Ci1DT05GSUdfSU9TQ0hFRF9DRlE9eQotIyBDT05GSUdfQVRBX09WRVJfRVRIIGlzIG5vdCBzZXQKLQotIwotIyBBVEEvQVRBUEkvTUZNL1JMTCBzdXBwb3J0Ci0jCi0jIENPTkZJR19JREUgaXMgbm90IHNldAotCi0jCi0jIFNDU0kgZGV2aWNlIHN1cHBvcnQKLSMKLUNPTkZJR19TQ1NJPXkKLUNPTkZJR19TQ1NJX1BST0NfRlM9eQotCi0jCi0jIFNDU0kgc3VwcG9ydCB0eXBlIChkaXNrLCB0YXBlLCBDRC1ST00pCi0jCi1DT05GSUdfQkxLX0RFVl9TRD15Ci1DT05GSUdfQ0hSX0RFVl9TVD15Ci0jIENPTkZJR19DSFJfREVWX09TU1QgaXMgbm90IHNldAotQ09ORklHX0JMS19ERVZfU1I9eQotIyBDT05GSUdfQkxLX0RFVl9TUl9WRU5ET1IgaXMgbm90IHNldAotIyBDT05GSUdfQ0hSX0RFVl9TRyBpcyBub3Qgc2V0Ci0KLSMKLSMgU29tZSBTQ1NJIGRldmljZXMgKGUuZy4gQ0QganVrZWJveCkgc3VwcG9ydCBtdWx0aXBsZSBMVU5zCi0jCi0jIENPTkZJR19TQ1NJX01VTFRJX0xVTiBpcyBub3Qgc2V0Ci1DT05GSUdfU0NTSV9DT05TVEFOVFM9eQotIyBDT05GSUdfU0NTSV9MT0dHSU5HIGlzIG5vdCBzZXQKLQotIwotIyBTQ1NJIFRyYW5zcG9ydCBBdHRyaWJ1dGVzCi0jCi0jIENPTkZJR19TQ1NJX1NQSV9BVFRSUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19TQ1NJX0ZDX0FUVFJTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NDU0lfSVNDU0lfQVRUUlMgaXMgbm90IHNldAotCi0jCi0jIFNDU0kgbG93LWxldmVsIGRyaXZlcnMKLSMKLSMgQ09ORklHX1NDU0lfU0FUQSBpcyBub3Qgc2V0Ci0jIENPTkZJR19TQ1NJX0RFQlVHIGlzIG5vdCBzZXQKLUNPTkZJR19BMzAwMF9TQ1NJPXkKLUNPTkZJR19BMjA5MV9TQ1NJPXkKLUNPTkZJR19HVlAxMV9TQ1NJPXkKLSMgQ09ORklHX0NZQkVSU1RPUk1fU0NTSSBpcyBub3Qgc2V0Ci0jIENPTkZJR19DWUJFUlNUT1JNSUlfU0NTSSBpcyBub3Qgc2V0Ci0jIENPTkZJR19CTFoyMDYwX1NDU0kgaXMgbm90IHNldAotIyBDT05GSUdfQkxaMTIzMF9TQ1NJIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZBU1RMQU5FX1NDU0kgaXMgbm90IHNldAotIyBDT05GSUdfT0tUQUdPTl9TQ1NJIGlzIG5vdCBzZXQKLQotIwotIyBNdWx0aS1kZXZpY2Ugc3VwcG9ydCAoUkFJRCBhbmQgTFZNKQotIwotIyBDT05GSUdfTUQgaXMgbm90IHNldAotCi0jCi0jIEZ1c2lvbiBNUFQgZGV2aWNlIHN1cHBvcnQKLSMKLQotIwotIyBJRUVFIDEzOTQgKEZpcmVXaXJlKSBzdXBwb3J0Ci0jCi0KLSMKLSMgSTJPIGRldmljZSBzdXBwb3J0Ci0jCi0KLSMKLSMgTmV0d29ya2luZyBzdXBwb3J0Ci0jCi1DT05GSUdfTkVUPXkKLQotIwotIyBOZXR3b3JraW5nIG9wdGlvbnMKLSMKLUNPTkZJR19QQUNLRVQ9eQotIyBDT05GSUdfUEFDS0VUX01NQVAgaXMgbm90IHNldAotQ09ORklHX1VOSVg9eQotIyBDT05GSUdfTkVUX0tFWSBpcyBub3Qgc2V0Ci1DT05GSUdfSU5FVD15Ci0jIENPTkZJR19JUF9NVUxUSUNBU1QgaXMgbm90IHNldAotIyBDT05GSUdfSVBfQURWQU5DRURfUk9VVEVSIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lQX1BOUCBpcyBub3Qgc2V0Ci0jIENPTkZJR19ORVRfSVBJUCBpcyBub3Qgc2V0Ci0jIENPTkZJR19ORVRfSVBHUkUgaXMgbm90IHNldAotIyBDT05GSUdfQVJQRCBpcyBub3Qgc2V0Ci0jIENPTkZJR19TWU5fQ09PS0lFUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19JTkVUX0FIIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lORVRfRVNQIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lORVRfSVBDT01QIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lORVRfVFVOTkVMIGlzIG5vdCBzZXQKLUNPTkZJR19JUF9UQ1BESUFHPXkKLSMgQ09ORklHX0lQX1RDUERJQUdfSVBWNiBpcyBub3Qgc2V0Ci0jIENPTkZJR19JUFY2IGlzIG5vdCBzZXQKLSMgQ09ORklHX05FVEZJTFRFUiBpcyBub3Qgc2V0Ci0KLSMKLSMgU0NUUCBDb25maWd1cmF0aW9uIChFWFBFUklNRU5UQUwpCi0jCi0jIENPTkZJR19JUF9TQ1RQIGlzIG5vdCBzZXQKLSMgQ09ORklHX0FUTSBpcyBub3Qgc2V0Ci0jIENPTkZJR19CUklER0UgaXMgbm90IHNldAotIyBDT05GSUdfVkxBTl84MDIxUSBpcyBub3Qgc2V0Ci0jIENPTkZJR19ERUNORVQgaXMgbm90IHNldAotIyBDT05GSUdfTExDMiBpcyBub3Qgc2V0Ci0jIENPTkZJR19JUFggaXMgbm90IHNldAotIyBDT05GSUdfQVRBTEsgaXMgbm90IHNldAotIyBDT05GSUdfWDI1IGlzIG5vdCBzZXQKLSMgQ09ORklHX0xBUEIgaXMgbm90IHNldAotIyBDT05GSUdfTkVUX0RJVkVSVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19FQ09ORVQgaXMgbm90IHNldAotIyBDT05GSUdfV0FOX1JPVVRFUiBpcyBub3Qgc2V0Ci0KLSMKLSMgUW9TIGFuZC9vciBmYWlyIHF1ZXVlaW5nCi0jCi0jIENPTkZJR19ORVRfU0NIRUQgaXMgbm90IHNldAotIyBDT05GSUdfTkVUX0NMU19ST1VURSBpcyBub3Qgc2V0Ci0KLSMKLSMgTmV0d29yayB0ZXN0aW5nCi0jCi0jIENPTkZJR19ORVRfUEtUR0VOIGlzIG5vdCBzZXQKLSMgQ09ORklHX05FVFBPTEwgaXMgbm90IHNldAotIyBDT05GSUdfTkVUX1BPTExfQ09OVFJPTExFUiBpcyBub3Qgc2V0Ci0jIENPTkZJR19IQU1SQURJTyBpcyBub3Qgc2V0Ci0jIENPTkZJR19JUkRBIGlzIG5vdCBzZXQKLSMgQ09ORklHX0JUIGlzIG5vdCBzZXQKLUNPTkZJR19ORVRERVZJQ0VTPXkKLSMgQ09ORklHX0RVTU1ZIGlzIG5vdCBzZXQKLSMgQ09ORklHX0JPTkRJTkcgaXMgbm90IHNldAotIyBDT05GSUdfRVFVQUxJWkVSIGlzIG5vdCBzZXQKLSMgQ09ORklHX1RVTiBpcyBub3Qgc2V0Ci0KLSMKLSMgRXRoZXJuZXQgKDEwIG9yIDEwME1iaXQpCi0jCi0jIENPTkZJR19ORVRfRVRIRVJORVQgaXMgbm90IHNldAotCi0jCi0jIEV0aGVybmV0ICgxMDAwIE1iaXQpCi0jCi0KLSMKLSMgRXRoZXJuZXQgKDEwMDAwIE1iaXQpCi0jCi0KLSMKLSMgVG9rZW4gUmluZyBkZXZpY2VzCi0jCi0KLSMKLSMgV2lyZWxlc3MgTEFOIChub24taGFtcmFkaW8pCi0jCi0jIENPTkZJR19ORVRfUkFESU8gaXMgbm90IHNldAotCi0jCi0jIFdhbiBpbnRlcmZhY2VzCi0jCi0jIENPTkZJR19XQU4gaXMgbm90IHNldAotIyBDT05GSUdfUFBQIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NMSVAgaXMgbm90IHNldAotIyBDT05GSUdfU0hBUEVSIGlzIG5vdCBzZXQKLSMgQ09ORklHX05FVENPTlNPTEUgaXMgbm90IHNldAotCi0jCi0jIElTRE4gc3Vic3lzdGVtCi0jCi0jIENPTkZJR19JU0ROIGlzIG5vdCBzZXQKLQotIwotIyBUZWxlcGhvbnkgU3VwcG9ydAotIwotIyBDT05GSUdfUEhPTkUgaXMgbm90IHNldAotCi0jCi0jIElucHV0IGRldmljZSBzdXBwb3J0Ci0jCi1DT05GSUdfSU5QVVQ9eQotCi0jCi0jIFVzZXJsYW5kIGludGVyZmFjZXMKLSMKLUNPTkZJR19JTlBVVF9NT1VTRURFVj15Ci1DT05GSUdfSU5QVVRfTU9VU0VERVZfUFNBVVg9eQotQ09ORklHX0lOUFVUX01PVVNFREVWX1NDUkVFTl9YPTEwMjQKLUNPTkZJR19JTlBVVF9NT1VTRURFVl9TQ1JFRU5fWT03NjgKLSMgQ09ORklHX0lOUFVUX0pPWURFViBpcyBub3Qgc2V0Ci0jIENPTkZJR19JTlBVVF9UU0RFViBpcyBub3Qgc2V0Ci0jIENPTkZJR19JTlBVVF9FVkRFViBpcyBub3Qgc2V0Ci0jIENPTkZJR19JTlBVVF9FVkJVRyBpcyBub3Qgc2V0Ci0KLSMKLSMgSW5wdXQgRGV2aWNlIERyaXZlcnMKLSMKLUNPTkZJR19JTlBVVF9LRVlCT0FSRD15Ci1DT05GSUdfS0VZQk9BUkRfQVRLQkQ9eQotIyBDT05GSUdfS0VZQk9BUkRfU1VOS0JEIGlzIG5vdCBzZXQKLSMgQ09ORklHX0tFWUJPQVJEX0xLS0JEIGlzIG5vdCBzZXQKLSMgQ09ORklHX0tFWUJPQVJEX1hUS0JEIGlzIG5vdCBzZXQKLSMgQ09ORklHX0tFWUJPQVJEX05FV1RPTiBpcyBub3Qgc2V0Ci0jIENPTkZJR19LRVlCT0FSRF9BTUlHQSBpcyBub3Qgc2V0Ci1DT05GSUdfSU5QVVRfTU9VU0U9eQotQ09ORklHX01PVVNFX1BTMj15Ci0jIENPTkZJR19NT1VTRV9TRVJJQUwgaXMgbm90IHNldAotIyBDT05GSUdfTU9VU0VfQU1JR0EgaXMgbm90IHNldAotIyBDT05GSUdfTU9VU0VfVlNYWFhBQSBpcyBub3Qgc2V0Ci0jIENPTkZJR19JTlBVVF9KT1lTVElDSyBpcyBub3Qgc2V0Ci0jIENPTkZJR19JTlBVVF9UT1VDSFNDUkVFTiBpcyBub3Qgc2V0Ci0jIENPTkZJR19JTlBVVF9NSVNDIGlzIG5vdCBzZXQKLQotIwotIyBIYXJkd2FyZSBJL08gcG9ydHMKLSMKLUNPTkZJR19TRVJJTz15Ci1DT05GSUdfU0VSSU9fU0VSUE9SVD15Ci1DT05GSUdfU0VSSU9fTElCUFMyPXkKLSMgQ09ORklHX1NFUklPX1JBVyBpcyBub3Qgc2V0Ci0jIENPTkZJR19HQU1FUE9SVCBpcyBub3Qgc2V0Ci0KLSMKLSMgQ2hhcmFjdGVyIGRldmljZXMKLSMKLUNPTkZJR19WVD15Ci1DT05GSUdfVlRfQ09OU09MRT15Ci1DT05GSUdfSFdfQ09OU09MRT15Ci0jIENPTkZJR19TRVJJQUxfTk9OU1RBTkRBUkQgaXMgbm90IHNldAotIyBDT05GSUdfQTIyMzIgaXMgbm90IHNldAotCi0jCi0jIFNlcmlhbCBkcml2ZXJzCi0jCi0jIENPTkZJR19TRVJJQUxfODI1MCBpcyBub3Qgc2V0Ci0KLSMKLSMgTm9uLTgyNTAgc2VyaWFsIHBvcnQgc3VwcG9ydAotIwotQ09ORklHX1VOSVg5OF9QVFlTPXkKLUNPTkZJR19MRUdBQ1lfUFRZUz15Ci1DT05GSUdfTEVHQUNZX1BUWV9DT1VOVD0yNTYKLQotIwotIyBJUE1JCi0jCi0jIENPTkZJR19JUE1JX0hBTkRMRVIgaXMgbm90IHNldAotCi0jCi0jIFdhdGNoZG9nIENhcmRzCi0jCi0jIENPTkZJR19XQVRDSERPRyBpcyBub3Qgc2V0Ci0jIENPTkZJR19HRU5fUlRDIGlzIG5vdCBzZXQKLSMgQ09ORklHX0RUTEsgaXMgbm90IHNldAotIyBDT05GSUdfUjM5NjQgaXMgbm90IHNldAotCi0jCi0jIEZ0YXBlLCB0aGUgZmxvcHB5IHRhcGUgZGV2aWNlIGRyaXZlcgotIwotIyBDT05GSUdfRFJNIGlzIG5vdCBzZXQKLSMgQ09ORklHX1JBV19EUklWRVIgaXMgbm90IHNldAotCi0jCi0jIFRQTSBkZXZpY2VzCi0jCi0KLSMKLSMgSTJDIHN1cHBvcnQKLSMKLSMgQ09ORklHX0kyQyBpcyBub3Qgc2V0Ci0KLSMKLSMgRGFsbGFzJ3MgMS13aXJlIGJ1cwotIwotIyBDT05GSUdfVzEgaXMgbm90IHNldAotCi0jCi0jIE1pc2MgZGV2aWNlcwotIwotCi0jCi0jIE11bHRpbWVkaWEgZGV2aWNlcwotIwotIyBDT05GSUdfVklERU9fREVWIGlzIG5vdCBzZXQKLQotIwotIyBEaWdpdGFsIFZpZGVvIEJyb2FkY2FzdGluZyBEZXZpY2VzCi0jCi0jIENPTkZJR19EVkIgaXMgbm90IHNldAotCi0jCi0jIEdyYXBoaWNzIHN1cHBvcnQKLSMKLUNPTkZJR19GQj15Ci0jIENPTkZJR19GQl9DRkJfRklMTFJFQ1QgaXMgbm90IHNldAotIyBDT05GSUdfRkJfQ0ZCX0NPUFlBUkVBIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZCX0NGQl9JTUFHRUJMSVQgaXMgbm90IHNldAotQ09ORklHX0ZCX1NPRlRfQ1VSU09SPXkKLSMgQ09ORklHX0ZCX01BQ01PREVTIGlzIG5vdCBzZXQKLUNPTkZJR19GQl9NT0RFX0hFTFBFUlM9eQotIyBDT05GSUdfRkJfVElMRUJMSVRUSU5HIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZCX0NJUlJVUyBpcyBub3Qgc2V0Ci1DT05GSUdfRkJfQU1JR0E9eQotQ09ORklHX0ZCX0FNSUdBX09DUz15Ci1DT05GSUdfRkJfQU1JR0FfRUNTPXkKLUNPTkZJR19GQl9BTUlHQV9BR0E9eQotIyBDT05GSUdfRkJfRk0yIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZCX1MxRDEzWFhYIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZCX1ZJUlRVQUwgaXMgbm90IHNldAotCi0jCi0jIENvbnNvbGUgZGlzcGxheSBkcml2ZXIgc3VwcG9ydAotIwotQ09ORklHX0RVTU1ZX0NPTlNPTEU9eQotIyBDT05GSUdfRlJBTUVCVUZGRVJfQ09OU09MRSBpcyBub3Qgc2V0Ci0KLSMKLSMgTG9nbyBjb25maWd1cmF0aW9uCi0jCi0jIENPTkZJR19MT0dPIGlzIG5vdCBzZXQKLSMgQ09ORklHX0JBQ0tMSUdIVF9MQ0RfU1VQUE9SVCBpcyBub3Qgc2V0Ci0KLSMKLSMgU291bmQKLSMKLSMgQ09ORklHX1NPVU5EIGlzIG5vdCBzZXQKLQotIwotIyBVU0Igc3VwcG9ydAotIwotIyBDT05GSUdfVVNCX0FSQ0hfSEFTX0hDRCBpcyBub3Qgc2V0Ci0jIENPTkZJR19VU0JfQVJDSF9IQVNfT0hDSSBpcyBub3Qgc2V0Ci0KLSMKLSMgVVNCIEdhZGdldCBTdXBwb3J0Ci0jCi0jIENPTkZJR19VU0JfR0FER0VUIGlzIG5vdCBzZXQKLQotIwotIyBNTUMvU0QgQ2FyZCBzdXBwb3J0Ci0jCi0jIENPTkZJR19NTUMgaXMgbm90IHNldAotCi0jCi0jIEluZmluaUJhbmQgc3VwcG9ydAotIwotIyBDT05GSUdfSU5GSU5JQkFORCBpcyBub3Qgc2V0Ci0KLSMKLSMgQ2hhcmFjdGVyIGRldmljZXMKLSMKLUNPTkZJR19BTUlHQV9CVUlMVElOX1NFUklBTD15Ci0jIENPTkZJR19NVUxUSUZBQ0VfSUlJX1RUWSBpcyBub3Qgc2V0Ci0jIENPTkZJR19HVlBJT0VYVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19TRVJJQUxfQ09OU09MRSBpcyBub3Qgc2V0Ci0KLSMKLSMgRmlsZSBzeXN0ZW1zCi0jCi1DT05GSUdfRVhUMl9GUz15Ci0jIENPTkZJR19FWFQyX0ZTX1hBVFRSIGlzIG5vdCBzZXQKLSMgQ09ORklHX0VYVDNfRlMgaXMgbm90IHNldAotIyBDT05GSUdfSkJEIGlzIG5vdCBzZXQKLSMgQ09ORklHX1JFSVNFUkZTX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0pGU19GUyBpcyBub3Qgc2V0Ci0KLSMKLSMgWEZTIHN1cHBvcnQKLSMKLSMgQ09ORklHX1hGU19GUyBpcyBub3Qgc2V0Ci1DT05GSUdfTUlOSVhfRlM9eQotIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAotIyBDT05GSUdfUVVPVEEgaXMgbm90IHNldAotQ09ORklHX0ROT1RJRlk9eQotIyBDT05GSUdfQVVUT0ZTX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0FVVE9GUzRfRlMgaXMgbm90IHNldAotCi0jCi0jIENELVJPTS9EVkQgRmlsZXN5c3RlbXMKLSMKLSMgQ09ORklHX0lTTzk2NjBfRlMgaXMgbm90IHNldAotIyBDT05GSUdfVURGX0ZTIGlzIG5vdCBzZXQKLQotIwotIyBET1MvRkFUL05UIEZpbGVzeXN0ZW1zCi0jCi1DT05GSUdfRkFUX0ZTPXkKLUNPTkZJR19NU0RPU19GUz15Ci0jIENPTkZJR19WRkFUX0ZTIGlzIG5vdCBzZXQKLUNPTkZJR19GQVRfREVGQVVMVF9DT0RFUEFHRT00MzcKLSMgQ09ORklHX05URlNfRlMgaXMgbm90IHNldAotCi0jCi0jIFBzZXVkbyBmaWxlc3lzdGVtcwotIwotQ09ORklHX1BST0NfRlM9eQotQ09ORklHX1BST0NfS0NPUkU9eQotQ09ORklHX1NZU0ZTPXkKLSMgQ09ORklHX0RFVkZTX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0RFVlBUU19GU19YQVRUUiBpcyBub3Qgc2V0Ci0jIENPTkZJR19UTVBGUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19IVUdFVExCX1BBR0UgaXMgbm90IHNldAotQ09ORklHX1JBTUZTPXkKLQotIwotIyBNaXNjZWxsYW5lb3VzIGZpbGVzeXN0ZW1zCi0jCi0jIENPTkZJR19BREZTX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0FGRlNfRlMgaXMgbm90IHNldAotIyBDT05GSUdfSEZTX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0hGU1BMVVNfRlMgaXMgbm90IHNldAotIyBDT05GSUdfQkVGU19GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19CRlNfRlMgaXMgbm90IHNldAotIyBDT05GSUdfRUZTX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0NSQU1GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19WWEZTX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0hQRlNfRlMgaXMgbm90IHNldAotIyBDT05GSUdfUU5YNEZTX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NZU1ZfRlMgaXMgbm90IHNldAotIyBDT05GSUdfVUZTX0ZTIGlzIG5vdCBzZXQKLQotIwotIyBOZXR3b3JrIEZpbGUgU3lzdGVtcwotIwotQ09ORklHX05GU19GUz15Ci0jIENPTkZJR19ORlNfVjMgaXMgbm90IHNldAotIyBDT05GSUdfTkZTX1Y0IGlzIG5vdCBzZXQKLSMgQ09ORklHX05GU19ESVJFQ1RJTyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ORlNEIGlzIG5vdCBzZXQKLUNPTkZJR19MT0NLRD15Ci1DT05GSUdfU1VOUlBDPXkKLSMgQ09ORklHX1JQQ1NFQ19HU1NfS1JCNSBpcyBub3Qgc2V0Ci0jIENPTkZJR19SUENTRUNfR1NTX1NQS00zIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NNQl9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19DSUZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX05DUF9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19DT0RBX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0FGU19GUyBpcyBub3Qgc2V0Ci0KLSMKLSMgUGFydGl0aW9uIFR5cGVzCi0jCi0jIENPTkZJR19QQVJUSVRJT05fQURWQU5DRUQgaXMgbm90IHNldAotQ09ORklHX0FNSUdBX1BBUlRJVElPTj15Ci1DT05GSUdfTVNET1NfUEFSVElUSU9OPXkKLQotIwotIyBOYXRpdmUgTGFuZ3VhZ2UgU3VwcG9ydAotIwotQ09ORklHX05MUz15Ci1DT05GSUdfTkxTX0RFRkFVTFQ9Imlzbzg4NTktMSIKLUNPTkZJR19OTFNfQ09ERVBBR0VfNDM3PXkKLSMgQ09ORklHX05MU19DT0RFUEFHRV83MzcgaXMgbm90IHNldAotIyBDT05GSUdfTkxTX0NPREVQQUdFXzc3NSBpcyBub3Qgc2V0Ci0jIENPTkZJR19OTFNfQ09ERVBBR0VfODUwIGlzIG5vdCBzZXQKLSMgQ09ORklHX05MU19DT0RFUEFHRV84NTIgaXMgbm90IHNldAotIyBDT05GSUdfTkxTX0NPREVQQUdFXzg1NSBpcyBub3Qgc2V0Ci0jIENPTkZJR19OTFNfQ09ERVBBR0VfODU3IGlzIG5vdCBzZXQKLSMgQ09ORklHX05MU19DT0RFUEFHRV84NjAgaXMgbm90IHNldAotIyBDT05GSUdfTkxTX0NPREVQQUdFXzg2MSBpcyBub3Qgc2V0Ci0jIENPTkZJR19OTFNfQ09ERVBBR0VfODYyIGlzIG5vdCBzZXQKLSMgQ09ORklHX05MU19DT0RFUEFHRV84NjMgaXMgbm90IHNldAotIyBDT05GSUdfTkxTX0NPREVQQUdFXzg2NCBpcyBub3Qgc2V0Ci0jIENPTkZJR19OTFNfQ09ERVBBR0VfODY1IGlzIG5vdCBzZXQKLSMgQ09ORklHX05MU19DT0RFUEFHRV84NjYgaXMgbm90IHNldAotIyBDT05GSUdfTkxTX0NPREVQQUdFXzg2OSBpcyBub3Qgc2V0Ci0jIENPTkZJR19OTFNfQ09ERVBBR0VfOTM2IGlzIG5vdCBzZXQKLSMgQ09ORklHX05MU19DT0RFUEFHRV85NTAgaXMgbm90IHNldAotIyBDT05GSUdfTkxTX0NPREVQQUdFXzkzMiBpcyBub3Qgc2V0Ci0jIENPTkZJR19OTFNfQ09ERVBBR0VfOTQ5IGlzIG5vdCBzZXQKLSMgQ09ORklHX05MU19DT0RFUEFHRV84NzQgaXMgbm90IHNldAotIyBDT05GSUdfTkxTX0lTTzg4NTlfOCBpcyBub3Qgc2V0Ci0jIENPTkZJR19OTFNfQ09ERVBBR0VfMTI1MCBpcyBub3Qgc2V0Ci0jIENPTkZJR19OTFNfQ09ERVBBR0VfMTI1MSBpcyBub3Qgc2V0Ci0jIENPTkZJR19OTFNfQVNDSUkgaXMgbm90IHNldAotIyBDT05GSUdfTkxTX0lTTzg4NTlfMSBpcyBub3Qgc2V0Ci0jIENPTkZJR19OTFNfSVNPODg1OV8yIGlzIG5vdCBzZXQKLSMgQ09ORklHX05MU19JU084ODU5XzMgaXMgbm90IHNldAotIyBDT05GSUdfTkxTX0lTTzg4NTlfNCBpcyBub3Qgc2V0Ci0jIENPTkZJR19OTFNfSVNPODg1OV81IGlzIG5vdCBzZXQKLSMgQ09ORklHX05MU19JU084ODU5XzYgaXMgbm90IHNldAotIyBDT05GSUdfTkxTX0lTTzg4NTlfNyBpcyBub3Qgc2V0Ci0jIENPTkZJR19OTFNfSVNPODg1OV85IGlzIG5vdCBzZXQKLSMgQ09ORklHX05MU19JU084ODU5XzEzIGlzIG5vdCBzZXQKLSMgQ09ORklHX05MU19JU084ODU5XzE0IGlzIG5vdCBzZXQKLSMgQ09ORklHX05MU19JU084ODU5XzE1IGlzIG5vdCBzZXQKLSMgQ09ORklHX05MU19LT0k4X1IgaXMgbm90IHNldAotIyBDT05GSUdfTkxTX0tPSThfVSBpcyBub3Qgc2V0Ci0jIENPTkZJR19OTFNfVVRGOCBpcyBub3Qgc2V0Ci0KLSMKLSMgS2VybmVsIGhhY2tpbmcKLSMKLSMgQ09ORklHX1BSSU5US19USU1FIGlzIG5vdCBzZXQKLSMgQ09ORklHX0RFQlVHX0tFUk5FTCBpcyBub3Qgc2V0Ci1DT05GSUdfTE9HX0JVRl9TSElGVD0xNAotQ09ORklHX0RFQlVHX0JVR1ZFUkJPU0U9eQotCi0jCi0jIFNlY3VyaXR5IG9wdGlvbnMKLSMKLSMgQ09ORklHX0tFWVMgaXMgbm90IHNldAotIyBDT05GSUdfU0VDVVJJVFkgaXMgbm90IHNldAotCi0jCi0jIENyeXB0b2dyYXBoaWMgb3B0aW9ucwotIwotIyBDT05GSUdfQ1JZUFRPIGlzIG5vdCBzZXQKLQotIwotIyBIYXJkd2FyZSBjcnlwdG8gZGV2aWNlcwotIwotCi0jCi0jIExpYnJhcnkgcm91dGluZXMKLSMKLSMgQ09ORklHX0NSQ19DQ0lUVCBpcyBub3Qgc2V0Ci1DT05GSUdfQ1JDMzI9eQotIyBDT05GSUdfTElCQ1JDMzJDIGlzIG5vdCBzZXQKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9LY29uZmlnIGIvYXJjaC9taXBzL0tjb25maWcKaW5kZXggYWRlMjMwZC4uODcyNGVkMyAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL0tjb25maWcKKysrIGIvYXJjaC9taXBzL0tjb25maWcKQEAgLTE4MjQsNyArMTgyNCw3IEBACiAJIEFsbG93cyB0aGUgY29uZmlndXJhdGlvbiBvZiB0aGUgdGltZXIgZnJlcXVlbmN5LgogCiAJY29uZmlnIEhaXzQ4Ci0JCWJvb2wgIjQ4IEhaIiBpZiBTWVNfU1VQUE9SVFNfNDhIWgorCQlib29sICI0OCBIWiIgaWYgU1lTX1NVUFBPUlRTXzQ4SFogfHwgU1lTX1NVUFBPUlRTX0FSQklUX0haCiAKIAljb25maWcgSFpfMTAwCiAJCWJvb2wgIjEwMCBIWiIgaWYgU1lTX1NVUFBPUlRTXzEwMEhaIHx8IFNZU19TVVBQT1JUU19BUkJJVF9IWgpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL01ha2VmaWxlIGIvYXJjaC9taXBzL01ha2VmaWxlCmluZGV4IDNmYjdmMzAuLjFjNjIzODEgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9NYWtlZmlsZQorKysgYi9hcmNoL21pcHMvTWFrZWZpbGUKQEAgLTEyLDYgKzEyLDggQEAKICMgZm9yICJhcmNoY2xlYW4iIGNsZWFuaW5nIHVwIGZvciB0aGlzIGFyY2hpdGVjdHVyZS4KICMKIAorS0JVSUxEX0RFRkNPTkZJRyA6PSBpcDIyX2RlZmNvbmZpZworCiBjZmxhZ3MteSA6PQogCiAjCkBAIC00ODAsMTAgKzQ4MiwxMyBAQAogIyBiZSAxNmtiIGFsaWduZWQgb3IgdGhlIGhhbmRsaW5nIG9mIHRoZSBjdXJyZW50IHZhcmlhYmxlIHdpbGwgYnJlYWsuCiAjIFNpbXBsaWZpZWQ6IHdoYXQgSVAyMiBkb2VzIGF0IDEyOE1CKyBpbiBrc2VnTiwgSVAyOCBkb2VzIGF0IDUxMk1CKyBpbiB4a3BoeXMKICMKLSNjb3JlLSQoQ09ORklHX1NHSV9JUDI4KQkJKz0gYXJjaC9taXBzL3NnaS1pcDIyLyBhcmNoL21pcHMvYXJjL2FyY19jb24ubworaWZkZWYgQ09ORklHX1NHSV9JUDI4CisgIGlmZXEgKCQoY2FsbCBjYy1vcHRpb24teW4sLW1yMTBrLWNhY2hlLWJhcnJpZXI9MSksIG4pCisgICAgICAkKGVycm9yIGdjYyBkb2Vzbid0IHN1cHBvcnQgbmVlZGVkIG9wdGlvbiAtbXIxMGstY2FjaGUtYmFycmllcj0xKQorICBlbmRpZgorZW5kaWYKIGNvcmUtJChDT05GSUdfU0dJX0lQMjgpCQkrPSBhcmNoL21pcHMvc2dpLWlwMjIvCiBjZmxhZ3MtJChDT05GSUdfU0dJX0lQMjgpCSs9IC1tcjEway1jYWNoZS1iYXJyaWVyPTEgLUlpbmNsdWRlL2FzbS1taXBzL21hY2gtaXAyOAotI2NmbGFncy0kKENPTkZJR19TR0lfSVAyOCkJKz0gLUlpbmNsdWRlL2FzbS1taXBzL21hY2gtaXAyOAogbG9hZC0kKENPTkZJR19TR0lfSVAyOCkJCSs9IDB4YTgwMDAwMDAyMDAwNDAwMAogCiAjCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvYXUxMDAwL2NvbW1vbi9jcHV0YWJsZS5jIGIvYXJjaC9taXBzL2F1MTAwMC9jb21tb24vY3B1dGFibGUuYwppbmRleCBkOGRmNWZkLi41YzBkMzVkIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvYXUxMDAwL2NvbW1vbi9jcHV0YWJsZS5jCisrKyBiL2FyY2gvbWlwcy9hdTEwMDAvY29tbW9uL2NwdXRhYmxlLmMKQEAgLTIyLDI0ICsyMiwyNCBAQAogLyogV2l0aCBzb21lIHRob3VnaHQsIHdlIGNhbiBwcm9iYWJseSB1c2UgdGhlIG1hc2sgdG8gcmVkdWNlIHRoZQogICogc2l6ZSBvZiB0aGUgdGFibGUuCiAgKi8KLXN0cnVjdCBjcHVfc3BlYwljcHVfc3BlY3NbXSA9IHsKLSAgICB7IDB4ZmZmZmZmZmYsIDB4MDAwMzAxMDAsICJBdTEwMDAgREEiLCAxLCAwIH0sCi0gICAgeyAweGZmZmZmZmZmLCAweDAwMDMwMjAxLCAiQXUxMDAwIEhBIiwgMSwgMCB9LAotICAgIHsgMHhmZmZmZmZmZiwgMHgwMDAzMDIwMiwgIkF1MTAwMCBIQiIsIDEsIDAgfSwKLSAgICB7IDB4ZmZmZmZmZmYsIDB4MDAwMzAyMDMsICJBdTEwMDAgSEMiLCAxLCAxIH0sCi0gICAgeyAweGZmZmZmZmZmLCAweDAwMDMwMjA0LCAiQXUxMDAwIEhEIiwgMSwgMSB9LAotICAgIHsgMHhmZmZmZmZmZiwgMHgwMTAzMDIwMCwgIkF1MTUwMCBBQiIsIDEsIDEgfSwKLSAgICB7IDB4ZmZmZmZmZmYsIDB4MDEwMzAyMDEsICJBdTE1MDAgQUMiLCAwLCAxIH0sCi0gICAgeyAweGZmZmZmZmZmLCAweDAxMDMwMjAyLCAiQXUxNTAwIEFEIiwgMCwgMSB9LAotICAgIHsgMHhmZmZmZmZmZiwgMHgwMjAzMDIwMCwgIkF1MTEwMCBBQiIsIDEsIDEgfSwKLSAgICB7IDB4ZmZmZmZmZmYsIDB4MDIwMzAyMDEsICJBdTExMDAgQkEiLCAxLCAxIH0sCi0gICAgeyAweGZmZmZmZmZmLCAweDAyMDMwMjAyLCAiQXUxMTAwIEJDIiwgMSwgMSB9LAotICAgIHsgMHhmZmZmZmZmZiwgMHgwMjAzMDIwMywgIkF1MTEwMCBCRCIsIDAsIDEgfSwKLSAgICB7IDB4ZmZmZmZmZmYsIDB4MDIwMzAyMDQsICJBdTExMDAgQkUiLCAwLCAxIH0sCi0gICAgeyAweGZmZmZmZmZmLCAweDAzMDMwMjAwLCAiQXUxNTUwIEFBIiwgMCwgMSB9LAotICAgIHsgMHhmZmZmZmZmZiwgMHgwNDAzMDIwMCwgIkF1MTIwMCBBQiIsIDAsIDAgfSwKLSAgICB7IDB4ZmZmZmZmZmYsIDB4MDQwMzAyMDEsICJBdTEyMDAgQUMiLCAxLCAwIH0sCi0gICAgeyAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAiVW5rbm93biBBdTF4eHgiLCAxLCAwIH0sCitzdHJ1Y3QgY3B1X3NwZWMgY3B1X3NwZWNzW10gPSB7CisJeyAweGZmZmZmZmZmLCAweDAwMDMwMTAwLCAiQXUxMDAwIERBIiwgMSwgMCwgMSB9LAorCXsgMHhmZmZmZmZmZiwgMHgwMDAzMDIwMSwgIkF1MTAwMCBIQSIsIDEsIDAsIDEgfSwKKwl7IDB4ZmZmZmZmZmYsIDB4MDAwMzAyMDIsICJBdTEwMDAgSEIiLCAxLCAwLCAxIH0sCisJeyAweGZmZmZmZmZmLCAweDAwMDMwMjAzLCAiQXUxMDAwIEhDIiwgMSwgMSwgMCB9LAorCXsgMHhmZmZmZmZmZiwgMHgwMDAzMDIwNCwgIkF1MTAwMCBIRCIsIDEsIDEsIDAgfSwKKwl7IDB4ZmZmZmZmZmYsIDB4MDEwMzAyMDAsICJBdTE1MDAgQUIiLCAxLCAxLCAwIH0sCisJeyAweGZmZmZmZmZmLCAweDAxMDMwMjAxLCAiQXUxNTAwIEFDIiwgMCwgMSwgMCB9LAorCXsgMHhmZmZmZmZmZiwgMHgwMTAzMDIwMiwgIkF1MTUwMCBBRCIsIDAsIDEsIDAgfSwKKwl7IDB4ZmZmZmZmZmYsIDB4MDIwMzAyMDAsICJBdTExMDAgQUIiLCAxLCAxLCAwIH0sCisJeyAweGZmZmZmZmZmLCAweDAyMDMwMjAxLCAiQXUxMTAwIEJBIiwgMSwgMSwgMCB9LAorCXsgMHhmZmZmZmZmZiwgMHgwMjAzMDIwMiwgIkF1MTEwMCBCQyIsIDEsIDEsIDAgfSwKKwl7IDB4ZmZmZmZmZmYsIDB4MDIwMzAyMDMsICJBdTExMDAgQkQiLCAwLCAxLCAwIH0sCisJeyAweGZmZmZmZmZmLCAweDAyMDMwMjA0LCAiQXUxMTAwIEJFIiwgMCwgMSwgMCB9LAorCXsgMHhmZmZmZmZmZiwgMHgwMzAzMDIwMCwgIkF1MTU1MCBBQSIsIDAsIDEsIDAgfSwKKwl7IDB4ZmZmZmZmZmYsIDB4MDQwMzAyMDAsICJBdTEyMDAgQUIiLCAwLCAwLCAwIH0sCisJeyAweGZmZmZmZmZmLCAweDA0MDMwMjAxLCAiQXUxMjAwIEFDIiwgMSwgMCwgMCB9LAorCXsgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgIlVua25vd24gQXUxeHh4IiwgMSwgMCwgMCB9CiB9OwogCiB2b2lkCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvYXUxMDAwL2NvbW1vbi9kYmRtYS5jIGIvYXJjaC9taXBzL2F1MTAwMC9jb21tb24vZGJkbWEuYwppbmRleCA0MjhlZDI3Li41N2YxN2I0IDEwMDY0NAotLS0gYS9hcmNoL21pcHMvYXUxMDAwL2NvbW1vbi9kYmRtYS5jCisrKyBiL2FyY2gvbWlwcy9hdTEwMDAvY29tbW9uL2RiZG1hLmMKQEAgLTE2MSwyMiArMTYxLDIyIEBACiAJeyBEU0NSX0NNRDBfQUxXQVlTLCBERVZfRkxBR1NfQU5ZVVNFLCAwLCAwLCAweDAwMDAwMDAwLCAwLCAwIH0sCiAKIAkvKiBQcm92aWRlIDE2IHVzZXIgZGVmaW5hYmxlIGRldmljZSB0eXBlcyAqLwotCXsgMCwgMCwgMCwgMCwgMCwgMCwgMCB9LAotCXsgMCwgMCwgMCwgMCwgMCwgMCwgMCB9LAotCXsgMCwgMCwgMCwgMCwgMCwgMCwgMCB9LAotCXsgMCwgMCwgMCwgMCwgMCwgMCwgMCB9LAotCXsgMCwgMCwgMCwgMCwgMCwgMCwgMCB9LAotCXsgMCwgMCwgMCwgMCwgMCwgMCwgMCB9LAotCXsgMCwgMCwgMCwgMCwgMCwgMCwgMCB9LAotCXsgMCwgMCwgMCwgMCwgMCwgMCwgMCB9LAotCXsgMCwgMCwgMCwgMCwgMCwgMCwgMCB9LAotCXsgMCwgMCwgMCwgMCwgMCwgMCwgMCB9LAotCXsgMCwgMCwgMCwgMCwgMCwgMCwgMCB9LAotCXsgMCwgMCwgMCwgMCwgMCwgMCwgMCB9LAotCXsgMCwgMCwgMCwgMCwgMCwgMCwgMCB9LAotCXsgMCwgMCwgMCwgMCwgMCwgMCwgMCB9LAotCXsgMCwgMCwgMCwgMCwgMCwgMCwgMCB9LAotCXsgMCwgMCwgMCwgMCwgMCwgMCwgMCB9LAorCXsgfjAsIDAsIDAsIDAsIDAsIDAsIDAgfSwKKwl7IH4wLCAwLCAwLCAwLCAwLCAwLCAwIH0sCisJeyB+MCwgMCwgMCwgMCwgMCwgMCwgMCB9LAorCXsgfjAsIDAsIDAsIDAsIDAsIDAsIDAgfSwKKwl7IH4wLCAwLCAwLCAwLCAwLCAwLCAwIH0sCisJeyB+MCwgMCwgMCwgMCwgMCwgMCwgMCB9LAorCXsgfjAsIDAsIDAsIDAsIDAsIDAsIDAgfSwKKwl7IH4wLCAwLCAwLCAwLCAwLCAwLCAwIH0sCisJeyB+MCwgMCwgMCwgMCwgMCwgMCwgMCB9LAorCXsgfjAsIDAsIDAsIDAsIDAsIDAsIDAgfSwKKwl7IH4wLCAwLCAwLCAwLCAwLCAwLCAwIH0sCisJeyB+MCwgMCwgMCwgMCwgMCwgMCwgMCB9LAorCXsgfjAsIDAsIDAsIDAsIDAsIDAsIDAgfSwKKwl7IH4wLCAwLCAwLCAwLCAwLCAwLCAwIH0sCisJeyB+MCwgMCwgMCwgMCwgMCwgMCwgMCB9LAorCXsgfjAsIDAsIDAsIDAsIDAsIDAsIDAgfSwKIH07CiAKICNkZWZpbmUgREJERVZfVEFCX1NJWkUJQVJSQVlfU0laRShkYmRldl90YWIpCkBAIC0yMDksNyArMjA5LDcgQEAKIAlkYmRldl90YWJfdCAqcD1OVUxMOwogCXN0YXRpYyB1MTYgbmV3X2lkPTB4MTAwMDsKIAotCXAgPSBmaW5kX2RiZGV2X2lkKDApOworCXAgPSBmaW5kX2RiZGV2X2lkKH4wKTsKIAlpZiAoIE5VTEwgIT0gcCApCiAJewogCQltZW1jcHkocCwgZGV2LCBzaXplb2YoZGJkZXZfdGFiX3QpKTsKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9hdTEwMDAvY29tbW9uL3BsYXRmb3JtLmMgYi9hcmNoL21pcHMvYXUxMDAwL2NvbW1vbi9wbGF0Zm9ybS5jCmluZGV4IDg0MTkwNGMuLjM5ZDY4MTIgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9hdTEwMDAvY29tbW9uL3BsYXRmb3JtLmMKKysrIGIvYXJjaC9taXBzL2F1MTAwMC9jb21tb24vcGxhdGZvcm0uYwpAQCAtMTg5LDcgKzE4OSw3IEBACiBzdGF0aWMgc3RydWN0IHJlc291cmNlIGF1MTIwMF9pZGUwX3Jlc291cmNlc1tdID0gewogCVswXSA9IHsKIAkJLnN0YXJ0CQk9IEFVMVhYWF9BVEFfUEhZU19BRERSLAotCQkuZW5kIAkJPSBBVTFYWFhfQVRBX1BIWVNfQUREUiArIEFVMVhYWF9BVEFfUEhZU19MRU4sCisJCS5lbmQgCQk9IEFVMVhYWF9BVEFfUEhZU19BRERSICsgQVUxWFhYX0FUQV9QSFlTX0xFTiAtIDEsCiAJCS5mbGFncwkJPSBJT1JFU09VUkNFX01FTSwKIAl9LAogCVsxXSA9IHsKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9hdTEwMDAvY29tbW9uL3NldHVwLmMgYi9hcmNoL21pcHMvYXUxMDAwL2NvbW1vbi9zZXR1cC5jCmluZGV4IGQ4ODVlMzguLjllNGFiODAgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9hdTEwMDAvY29tbW9uL3NldHVwLmMKKysrIGIvYXJjaC9taXBzL2F1MTAwMC9jb21tb24vc2V0dXAuYwpAQCAtNTcsNyArNTcsNyBAQAogewogCXN0cnVjdAljcHVfc3BlYyAqc3A7CiAJY2hhciAqYXJncHRyOwotCXVuc2lnbmVkIGxvbmcgcHJpZCwgY3B1cGxsLCBiY2xrID0gMTsKKwl1bnNpZ25lZCBsb25nIHByaWQsIGNwdWZyZXEsIGJjbGsgPSAxOwogCiAJc2V0X2NwdXNwZWMoKTsKIAlzcCA9IGN1cl9jcHVfc3BlY1swXTsKQEAgLTY1LDggKzY1LDE1IEBACiAJYm9hcmRfc2V0dXAoKTsgIC8qIGJvYXJkIHNwZWNpZmljIHNldHVwICovCiAKIAlwcmlkID0gcmVhZF9jMF9wcmlkKCk7Ci0JY3B1cGxsID0gKGF1X3JlYWRsKDB4QjE5MDAwNjApICYgMHgzRikgKiAxMjsKLQlwcmludGsoIihQUklkICUwOGx4KSBAICVsZE1IWlxuIiwgcHJpZCwgY3B1cGxsKTsKKwlpZiAoc3AtPmNwdV9wbGxfd28pCisjaWZkZWYgQ09ORklHX1NPQ19BVTEwMDBfRlJFUVVFTkNZCisJCWNwdWZyZXEgPSBDT05GSUdfU09DX0FVMTAwMF9GUkVRVUVOQ1kgLyAxMDAwMDAwOworI2Vsc2UKKwkJY3B1ZnJlcSA9IDM5NjsKKyNlbmRpZgorCWVsc2UKKwkJY3B1ZnJlcSA9IChhdV9yZWFkbChTWVNfQ1BVUExMKSAmIDB4M0YpICogMTI7CisJcHJpbnRrKEtFUk5fSU5GTyAiKFBSSUQgJTA4bHgpIEAgJWxkIE1IelxuIiwgcHJpZCwgY3B1ZnJlcSk7CiAKIAliY2xrID0gc3AtPmNwdV9iY2xrOwogCWlmIChiY2xrKQpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2F1MTAwMC9jb21tb24vdGltZS5jIGIvYXJjaC9taXBzL2F1MTAwMC9jb21tb24vdGltZS5jCmluZGV4IGYxMTNiNTEuLmUxMjJiYmMgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9hdTEwMDAvY29tbW9uL3RpbWUuYworKysgYi9hcmNoL21pcHMvYXUxMDAwL2NvbW1vbi90aW1lLmMKQEAgLTIwOSwxOCArMjA5LDIyIEBACiAJCXdoaWxlIChhdV9yZWFkbChTWVNfQ09VTlRFUl9DTlRSTCkgJiBTWVNfQ05UUkxfQzFTKTsKIAkJYXVfd3JpdGVsKDAsIFNZU19UT1lXUklURSk7CiAJCXdoaWxlIChhdV9yZWFkbChTWVNfQ09VTlRFUl9DTlRSTCkgJiBTWVNfQ05UUkxfQzFTKTsKLQotCQljcHVfc3BlZWQgPSAoYXVfcmVhZGwoU1lTX0NQVVBMTCkgJiAweDAwMDAwMDNmKSAqCi0JCQlBVTEwMDBfU1JDX0NMSzsKLQl9Ci0JZWxzZSB7Ci0JCS8qIFRoZSAzMktIeiBvc2NpbGxhdG9yIGlzbid0IHJ1bm5pbmcsIHNvIGFzc3VtZSB0aGVyZQotCQkgKiBpc24ndCBvbmUgYW5kIGdyYWIgdGhlIHByb2Nlc3NvciBzcGVlZCBmcm9tIHRoZSBQTEwuCi0JCSAqIE5PVEU6IHNvbWUgb2xkIHNpbGljb24gZG9lc24ndCBhbGxvdyByZWFkaW5nIHRoZSBQTEwuCi0JCSAqLwotCQljcHVfc3BlZWQgPSAoYXVfcmVhZGwoU1lTX0NQVVBMTCkgJiAweDAwMDAwMDNmKSAqIEFVMTAwMF9TUkNfQ0xLOworCX0gZWxzZQogCQlub19hdTF4eHhfMzJraHogPSAxOwotCX0KKworCS8qCisJICogT24gZWFybHkgQXUxMDAwLCBzeXNfY3B1cGxsIHdhcyB3cml0ZS1vbmx5LiBTaW5jZSB0aGVzZQorCSAqIHNpbGljb24gdmVyc2lvbnMgb2YgQXUxMDAwIGFyZSBub3Qgc29sZCBieSBBTUQsIHdlIGRvbid0IGJlbmQKKwkgKiBvdmVyIGJhY2t3YXJkcyB0cnlpbmcgdG8gZGV0ZXJtaW5lIHRoZSBmcmVxdWVuY3kuCisJICovCisJaWYgKGN1cl9jcHVfc3BlY1swXS0+Y3B1X3BsbF93bykKKyNpZmRlZiBDT05GSUdfU09DX0FVMTAwMF9GUkVRVUVOQ1kKKwkJY3B1X3NwZWVkID0gQ09ORklHX1NPQ19BVTEwMDBfRlJFUVVFTkNZOworI2Vsc2UKKwkJY3B1X3NwZWVkID0gMzk2MDAwMDAwOworI2VuZGlmCisJZWxzZQorCQljcHVfc3BlZWQgPSAoYXVfcmVhZGwoU1lTX0NQVVBMTCkgJiAweDAwMDAwMDNmKSAqIEFVMTAwMF9TUkNfQ0xLOwogCW1pcHNfaHB0X2ZyZXF1ZW5jeSA9IGNwdV9zcGVlZDsKIAkvLyBFcXVhdGlvbjogQmF1ZHJhdGUgPSBDUFUgLyAoU0QgKiAyICogQ0xLRElWICogMTYpCiAJc2V0X2F1MXgwMF91YXJ0X2JhdWRfYmFzZShjcHVfc3BlZWQgLyAoMiAqICgoaW50KShhdV9yZWFkbChTWVNfUE9XRVJDVFJMKSYweDAzKSArIDIpICogMTYpKTsKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9hdTEwMDAveHhzMTUwMC9ib2FyZF9zZXR1cC5jIGIvYXJjaC9taXBzL2F1MTAwMC94eHMxNTAwL2JvYXJkX3NldHVwLmMKaW5kZXggYTkyMzdmNC4uYjJlNDEzZSAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2F1MTAwMC94eHMxNTAwL2JvYXJkX3NldHVwLmMKKysrIGIvYXJjaC9taXBzL2F1MTAwMC94eHMxNTAwL2JvYXJkX3NldHVwLmMKQEAgLTMzLDExICszMywxMCBAQAogI2luY2x1ZGUgPGFzbS9jcHUuaD4KICNpbmNsdWRlIDxhc20vYm9vdGluZm8uaD4KICNpbmNsdWRlIDxhc20vaXJxLmg+Ci0jaW5jbHVkZSA8YXNtL2tleWJvYXJkLmg+CiAjaW5jbHVkZSA8YXNtL21pcHNyZWdzLmg+CiAjaW5jbHVkZSA8YXNtL3JlYm9vdC5oPgogI2luY2x1ZGUgPGFzbS9wZ3RhYmxlLmg+Ci0jaW5jbHVkZSA8YXNtL2F1MTAwMC5oPgorI2luY2x1ZGUgPGFzbS9tYWNoLWF1MXgwMC9hdTEwMDAuaD4KIAogdm9pZCBib2FyZF9yZXNldCh2b2lkKQogewpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2F1MTAwMC94eHMxNTAwL2lycW1hcC5jIGIvYXJjaC9taXBzL2F1MTAwMC94eHMxNTAwL2lycW1hcC5jCmluZGV4IDM4OTM0OTIuLmEzNDNkYTEgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9hdTEwMDAveHhzMTUwMC9pcnFtYXAuYworKysgYi9hcmNoL21pcHMvYXUxMDAwL3h4czE1MDAvaXJxbWFwLmMKQEAgLTQ1LDcgKzQ1LDcgQEAKICNpbmNsdWRlIDxhc20vaW8uaD4KICNpbmNsdWRlIDxhc20vbWlwc3JlZ3MuaD4KICNpbmNsdWRlIDxhc20vc3lzdGVtLmg+Ci0jaW5jbHVkZSA8YXNtL2F1MTAwMC5oPgorI2luY2x1ZGUgPGFzbS9tYWNoLWF1MXgwMC9hdTEwMDAuaD4KIAogc3RydWN0IGF1MXh4eF9pcnFtYXAgX19pbml0ZGF0YSBhdTF4eHhfaXJxX21hcFtdID0gewogCXsgQVUxNTAwX0dQSU9fMjA0LCBJTlRDX0lOVF9ISUdIX0xFVkVMLCAwfSwKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9jb25maWdzL2JpZ3N1cl9kZWZjb25maWcgYi9hcmNoL21pcHMvY29uZmlncy9iaWdzdXJfZGVmY29uZmlnCmluZGV4IGFiZjcwZDcuLjNiNDJjZWEgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9jb25maWdzL2JpZ3N1cl9kZWZjb25maWcKKysrIGIvYXJjaC9taXBzL2NvbmZpZ3MvYmlnc3VyX2RlZmNvbmZpZwpAQCAtMSw1OCArMSw0OCBAQAogIwogIyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBtYWtlIGNvbmZpZzogZG9uJ3QgZWRpdAotIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjIwCi0jIFR1ZSBGZWIgMjAgMjE6NDc6MjIgMjAwNworIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjI1LXJjNworIyBNb24gTWFyIDMxIDA4OjExOjE5IDIwMDgKICMKIENPTkZJR19NSVBTPXkKIAogIwogIyBNYWNoaW5lIHNlbGVjdGlvbgogIwotQ09ORklHX1pPTkVfRE1BPXkKLSMgQ09ORklHX01JUFNfTVRYMSBpcyBub3Qgc2V0Ci0jIENPTkZJR19NSVBTX0JPU1BPUlVTIGlzIG5vdCBzZXQKLSMgQ09ORklHX01JUFNfUEIxMDAwIGlzIG5vdCBzZXQKLSMgQ09ORklHX01JUFNfUEIxMTAwIGlzIG5vdCBzZXQKLSMgQ09ORklHX01JUFNfUEIxNTAwIGlzIG5vdCBzZXQKLSMgQ09ORklHX01JUFNfUEIxNTUwIGlzIG5vdCBzZXQKLSMgQ09ORklHX01JUFNfUEIxMjAwIGlzIG5vdCBzZXQKLSMgQ09ORklHX01JUFNfREIxMDAwIGlzIG5vdCBzZXQKLSMgQ09ORklHX01JUFNfREIxMTAwIGlzIG5vdCBzZXQKLSMgQ09ORklHX01JUFNfREIxNTAwIGlzIG5vdCBzZXQKLSMgQ09ORklHX01JUFNfREIxNTUwIGlzIG5vdCBzZXQKLSMgQ09ORklHX01JUFNfREIxMjAwIGlzIG5vdCBzZXQKLSMgQ09ORklHX01JUFNfTUlSQUdFIGlzIG5vdCBzZXQKKyMgQ09ORklHX01BQ0hfQUxDSEVNWSBpcyBub3Qgc2V0CiAjIENPTkZJR19CQVNMRVJfRVhDSVRFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JDTTQ3WFggaXMgbm90IHNldAogIyBDT05GSUdfTUlQU19DT0JBTFQgaXMgbm90IHNldAogIyBDT05GSUdfTUFDSF9ERUNTVEFUSU9OIGlzIG5vdCBzZXQKICMgQ09ORklHX01BQ0hfSkFaWiBpcyBub3Qgc2V0CisjIENPTkZJR19MQVNBVCBpcyBub3Qgc2V0CisjIENPTkZJR19MRU1PVEVfRlVMT05HIGlzIG5vdCBzZXQKICMgQ09ORklHX01JUFNfQVRMQVMgaXMgbm90IHNldAogIyBDT05GSUdfTUlQU19NQUxUQSBpcyBub3Qgc2V0CiAjIENPTkZJR19NSVBTX1NFQUQgaXMgbm90IHNldAotIyBDT05GSUdfV1JfUFBNQyBpcyBub3Qgc2V0CiAjIENPTkZJR19NSVBTX1NJTSBpcyBub3Qgc2V0Ci0jIENPTkZJR19NT01FTkNPX0pBR1VBUl9BVFggaXMgbm90IHNldAotIyBDT05GSUdfTUlQU19YWFMxNTAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX01BUktFSU5TIGlzIG5vdCBzZXQKKyMgQ09ORklHX01BQ0hfVlI0MVhYIGlzIG5vdCBzZXQKICMgQ09ORklHX1BOWDg1NTBfSkJTIGlzIG5vdCBzZXQKICMgQ09ORklHX1BOWDg1NTBfU1RCODEwIGlzIG5vdCBzZXQKLSMgQ09ORklHX01BQ0hfVlI0MVhYIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BNQ19NU1AgaXMgbm90IHNldAogIyBDT05GSUdfUE1DX1lPU0VNSVRFIGlzIG5vdCBzZXQKLSMgQ09ORklHX01BUktFSU5TIGlzIG5vdCBzZXQKICMgQ09ORklHX1NHSV9JUDIyIGlzIG5vdCBzZXQKICMgQ09ORklHX1NHSV9JUDI3IGlzIG5vdCBzZXQKKyMgQ09ORklHX1NHSV9JUDI4IGlzIG5vdCBzZXQKICMgQ09ORklHX1NHSV9JUDMyIGlzIG5vdCBzZXQKLUNPTkZJR19TSUJZVEVfQklHU1VSPXkKLSMgQ09ORklHX1NJQllURV9TV0FSTSBpcyBub3Qgc2V0Ci0jIENPTkZJR19TSUJZVEVfU0VOVE9TQSBpcyBub3Qgc2V0Ci0jIENPTkZJR19TSUJZVEVfUkhPTkUgaXMgbm90IHNldAotIyBDT05GSUdfU0lCWVRFX0NBUk1FTCBpcyBub3Qgc2V0Ci0jIENPTkZJR19TSUJZVEVfTElUVExFU1VSIGlzIG5vdCBzZXQKICMgQ09ORklHX1NJQllURV9DUkhJTkUgaXMgbm90IHNldAorIyBDT05GSUdfU0lCWVRFX0NBUk1FTCBpcyBub3Qgc2V0CiAjIENPTkZJR19TSUJZVEVfQ1JIT05FIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NJQllURV9SSE9ORSBpcyBub3Qgc2V0CisjIENPTkZJR19TSUJZVEVfU1dBUk0gaXMgbm90IHNldAorIyBDT05GSUdfU0lCWVRFX0xJVFRMRVNVUiBpcyBub3Qgc2V0CisjIENPTkZJR19TSUJZVEVfU0VOVE9TQSBpcyBub3Qgc2V0CitDT05GSUdfU0lCWVRFX0JJR1NVUj15CiAjIENPTkZJR19TTklfUk0gaXMgbm90IHNldAogIyBDT05GSUdfVE9TSElCQV9KTVIzOTI3IGlzIG5vdCBzZXQKICMgQ09ORklHX1RPU0hJQkFfUkJUWDQ5MjcgaXMgbm90IHNldAogIyBDT05GSUdfVE9TSElCQV9SQlRYNDkzOCBpcyBub3Qgc2V0CisjIENPTkZJR19XUl9QUE1DIGlzIG5vdCBzZXQKIENPTkZJR19TSUJZVEVfQkNNMXg4MD15CiBDT05GSUdfU0lCWVRFX1NCMXh4eF9TT0M9eQogIyBDT05GSUdfQ1BVX1NCMV9QQVNTXzEgaXMgbm90IHNldApAQCAtNjgsOSArNTgsMTEgQEAKICMgQ09ORklHX1NJQllURV9DRkVfQ09OU09MRSBpcyBub3Qgc2V0CiAjIENPTkZJR19TSUJZVEVfQlVTX1dBVENIRVIgaXMgbm90IHNldAogIyBDT05GSUdfU0lCWVRFX1RCUFJPRiBpcyBub3Qgc2V0CitDT05GSUdfU0lCWVRFX0hBU19aQlVTX1BST0ZJTElORz15CiBDT05GSUdfUldTRU1fR0VORVJJQ19TUElOTE9DSz15CiAjIENPTkZJR19BUkNIX0hBU19JTE9HMl9VMzIgaXMgbm90IHNldAogIyBDT05GSUdfQVJDSF9IQVNfSUxPRzJfVTY0IGlzIG5vdCBzZXQKK0NPTkZJR19BUkNIX1NVUFBPUlRTX09QUk9GSUxFPXkKIENPTkZJR19HRU5FUklDX0ZJTkRfTkVYVF9CSVQ9eQogQ09ORklHX0dFTkVSSUNfSFdFSUdIVD15CiBDT05GSUdfR0VORVJJQ19DQUxJQlJBVEVfREVMQVk9eQpAQCAtODEsMTEgKzczLDE3IEBACiAjIENPTkZJR19HRU5FUklDX0hBUkRJUlFTX05PX19ET19JUlEgaXMgbm90IHNldAogQ09ORklHX0NFVlRfQkNNMTQ4MD15CiBDT05GSUdfQ1NSQ19CQ00xNDgwPXkKK0NPTkZJR19DRkU9eQogQ09ORklHX0RNQV9DT0hFUkVOVD15CitDT05GSUdfRUFSTFlfUFJJTlRLPXkKK0NPTkZJR19TWVNfSEFTX0VBUkxZX1BSSU5USz15CisjIENPTkZJR19IT1RQTFVHX0NQVSBpcyBub3Qgc2V0CisjIENPTkZJR19OT19JT1BPUlQgaXMgbm90IHNldAogQ09ORklHX0NQVV9CSUdfRU5ESUFOPXkKICMgQ09ORklHX0NQVV9MSVRUTEVfRU5ESUFOIGlzIG5vdCBzZXQKIENPTkZJR19TWVNfU1VQUE9SVFNfQklHX0VORElBTj15CiBDT05GSUdfU1lTX1NVUFBPUlRTX0xJVFRMRV9FTkRJQU49eQorQ09ORklHX0lSUV9DUFU9eQogQ09ORklHX1NXQVBfSU9fU1BBQ0U9eQogQ09ORklHX0JPT1RfRUxGMzI9eQogQ09ORklHX01JUFNfTDFfQ0FDSEVfU0hJRlQ9NQpAQCAtOTMsMTAgKzkxLDYgQEAKICMKICMgQ1BVIHNlbGVjdGlvbgogIwotQ09ORklHX1RJQ0tfT05FU0hPVD15Ci1DT05GSUdfTk9fSFo9eQotQ09ORklHX0hJR0hfUkVTX1RJTUVSUz15Ci1DT05GSUdfR0VORVJJQ19DTE9DS0VWRU5UU19CVUlMRD15CiAjIENPTkZJR19DUFVfTE9PTkdTT04yIGlzIG5vdCBzZXQKICMgQ09ORklHX0NQVV9NSVBTMzJfUjEgaXMgbm90IHNldAogIyBDT05GSUdfQ1BVX01JUFMzMl9SMiBpcyBub3Qgc2V0CkBAIC0xMzcsMTQgKzEzMSwxNSBAQAogQ09ORklHX01JUFNfTVRfRElTQUJMRUQ9eQogIyBDT05GSUdfTUlQU19NVF9TTVAgaXMgbm90IHNldAogIyBDT05GSUdfTUlQU19NVF9TTVRDIGlzIG5vdCBzZXQKLSMgQ09ORklHX01JUFNfVlBFX0xPQURFUiBpcyBub3Qgc2V0CiBDT05GSUdfQ1BVX0hBU19MTFNDPXkKIENPTkZJR19DUFVfSEFTX1NZTkM9eQogQ09ORklHX0dFTkVSSUNfSEFSRElSUVM9eQogQ09ORklHX0dFTkVSSUNfSVJRX1BST0JFPXkKIENPTkZJR19JUlFfUEVSX0NQVT15CiBDT05GSUdfQ1BVX1NVUFBPUlRTX0hJR0hNRU09eQorQ09ORklHX1NZU19TVVBQT1JUU19ISUdITUVNPXkKIENPTkZJR19BUkNIX0ZMQVRNRU1fRU5BQkxFPXkKK0NPTkZJR19BUkNIX1BPUFVMQVRFU19OT0RFX01BUD15CiBDT05GSUdfU0VMRUNUX01FTU9SWV9NT0RFTD15CiBDT05GSUdfRkxBVE1FTV9NQU5VQUw9eQogIyBDT05GSUdfRElTQ09OVElHTUVNX01BTlVBTCBpcyBub3Qgc2V0CkBAIC0xNTIsMTMgKzE0NywxOSBAQAogQ09ORklHX0ZMQVRNRU09eQogQ09ORklHX0ZMQVRfTk9ERV9NRU1fTUFQPXkKICMgQ09ORklHX1NQQVJTRU1FTV9TVEFUSUMgaXMgbm90IHNldAorIyBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBfRU5BQkxFIGlzIG5vdCBzZXQKIENPTkZJR19TUExJVF9QVExPQ0tfQ1BVUz00CiBDT05GSUdfUkVTT1VSQ0VTXzY0QklUPXkKLUNPTkZJR19aT05FX0RNQV9GTEFHPTEKK0NPTkZJR19aT05FX0RNQV9GTEFHPTAKK0NPTkZJR19WSVJUX1RPX0JVUz15CiBDT05GSUdfU01QPXkKIENPTkZJR19TWVNfU1VQUE9SVFNfU01QPXkKIENPTkZJR19OUl9DUFVTX0RFRkFVTFRfND15CiBDT05GSUdfTlJfQ1BVUz00CitDT05GSUdfVElDS19PTkVTSE9UPXkKK0NPTkZJR19OT19IWj15CitDT05GSUdfSElHSF9SRVNfVElNRVJTPXkKK0NPTkZJR19HRU5FUklDX0NMT0NLRVZFTlRTX0JVSUxEPXkKICMgQ09ORklHX0haXzQ4IGlzIG5vdCBzZXQKICMgQ09ORklHX0haXzEwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19IWl8xMjggaXMgbm90IHNldApAQCAtMTcxLDM4ICsxNzIsNDUgQEAKIENPTkZJR19QUkVFTVBUX05PTkU9eQogIyBDT05GSUdfUFJFRU1QVF9WT0xVTlRBUlkgaXMgbm90IHNldAogIyBDT05GSUdfUFJFRU1QVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19QUkVFTVBUX0JLTCBpcyBub3Qgc2V0CiAjIENPTkZJR19LRVhFQyBpcyBub3Qgc2V0CitDT05GSUdfU0VDQ09NUD15CiBDT05GSUdfTE9DS0RFUF9TVVBQT1JUPXkKIENPTkZJR19TVEFDS1RSQUNFX1NVUFBPUlQ9eQogQ09ORklHX0RFRkNPTkZJR19MSVNUPSIvbGliL21vZHVsZXMvJFVOQU1FX1JFTEVBU0UvLmNvbmZpZyIKIAogIwotIyBDb2RlIG1hdHVyaXR5IGxldmVsIG9wdGlvbnMKKyMgR2VuZXJhbCBzZXR1cAogIwogQ09ORklHX0VYUEVSSU1FTlRBTD15CiBDT05GSUdfTE9DS19LRVJORUw9eQogQ09ORklHX0lOSVRfRU5WX0FSR19MSU1JVD0zMgotCi0jCi0jIEdlbmVyYWwgc2V0dXAKLSMKIENPTkZJR19MT0NBTFZFUlNJT049IiIKIENPTkZJR19MT0NBTFZFUlNJT05fQVVUTz15CiBDT05GSUdfU1dBUD15CiBDT05GSUdfU1lTVklQQz15Ci0jIENPTkZJR19JUENfTlMgaXMgbm90IHNldAogQ09ORklHX1NZU1ZJUENfU1lTQ1RMPXkKLSMgQ09ORklHX1BPU0lYX01RVUVVRSBpcyBub3Qgc2V0Ci0jIENPTkZJR19CU0RfUFJPQ0VTU19BQ0NUIGlzIG5vdCBzZXQKLSMgQ09ORklHX1RBU0tTVEFUUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19VVFNfTlMgaXMgbm90IHNldAotIyBDT05GSUdfQVVESVQgaXMgbm90IHNldAorQ09ORklHX1BPU0lYX01RVUVVRT15CitDT05GSUdfQlNEX1BST0NFU1NfQUNDVD15CitDT05GSUdfQlNEX1BST0NFU1NfQUNDVF9WMz15CitDT05GSUdfVEFTS1NUQVRTPXkKK0NPTkZJR19UQVNLX0RFTEFZX0FDQ1Q9eQorQ09ORklHX1RBU0tfWEFDQ1Q9eQorQ09ORklHX1RBU0tfSU9fQUNDT1VOVElORz15CitDT05GSUdfQVVESVQ9eQogQ09ORklHX0lLQ09ORklHPXkKIENPTkZJR19JS0NPTkZJR19QUk9DPXkKLSMgQ09ORklHX0NQVVNFVFMgaXMgbm90IHNldAorQ09ORklHX0xPR19CVUZfU0hJRlQ9MTYKKyMgQ09ORklHX0NHUk9VUFMgaXMgbm90IHNldAorQ09ORklHX0dST1VQX1NDSEVEPXkKK0NPTkZJR19GQUlSX0dST1VQX1NDSEVEPXkKKyMgQ09ORklHX1JUX0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKK0NPTkZJR19VU0VSX1NDSEVEPXkKKyMgQ09ORklHX0NHUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CiBDT05GSUdfU1lTRlNfREVQUkVDQVRFRD15Ci0jIENPTkZJR19SRUxBWSBpcyBub3Qgc2V0CitDT05GSUdfU1lTRlNfREVQUkVDQVRFRF9WMj15CitDT05GSUdfUkVMQVk9eQorIyBDT05GSUdfTkFNRVNQQUNFUyBpcyBub3Qgc2V0CitDT05GSUdfQkxLX0RFVl9JTklUUkQ9eQogQ09ORklHX0lOSVRSQU1GU19TT1VSQ0U9IiIKICMgQ09ORklHX0NDX09QVElNSVpFX0ZPUl9TSVpFIGlzIG5vdCBzZXQKIENPTkZJR19TWVNDVEw9eQpAQCAtMjExLDI0ICsyMTksMzMgQEAKIENPTkZJR19LQUxMU1lNUz15CiAjIENPTkZJR19LQUxMU1lNU19BTEwgaXMgbm90IHNldAogIyBDT05GSUdfS0FMTFNZTVNfRVhUUkFfUEFTUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19IT1RQTFVHIGlzIG5vdCBzZXQKK0NPTkZJR19IT1RQTFVHPXkKIENPTkZJR19QUklOVEs9eQogQ09ORklHX0JVRz15CiBDT05GSUdfRUxGX0NPUkU9eQorQ09ORklHX0NPTVBBVF9CUks9eQogQ09ORklHX0JBU0VfRlVMTD15CiBDT05GSUdfRlVURVg9eQorQ09ORklHX0FOT05fSU5PREVTPXkKIENPTkZJR19FUE9MTD15CitDT05GSUdfU0lHTkFMRkQ9eQorQ09ORklHX1RJTUVSRkQ9eQorQ09ORklHX0VWRU5URkQ9eQogQ09ORklHX1NITUVNPXkKLUNPTkZJR19TTEFCPXkKIENPTkZJR19WTV9FVkVOVF9DT1VOVEVSUz15CitDT05GSUdfU0xBQj15CisjIENPTkZJR19TTFVCIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NMT0IgaXMgbm90IHNldAorIyBDT05GSUdfUFJPRklMSU5HIGlzIG5vdCBzZXQKKyMgQ09ORklHX01BUktFUlMgaXMgbm90IHNldAorQ09ORklHX0hBVkVfT1BST0ZJTEU9eQorIyBDT05GSUdfSEFWRV9LUFJPQkVTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hBVkVfS1JFVFBST0JFUyBpcyBub3Qgc2V0CitDT05GSUdfUFJPQ19QQUdFX01PTklUT1I9eQorQ09ORklHX1NMQUJJTkZPPXkKIENPTkZJR19SVF9NVVRFWEVTPXkKICMgQ09ORklHX1RJTllfU0hNRU0gaXMgbm90IHNldAogQ09ORklHX0JBU0VfU01BTEw9MAotIyBDT05GSUdfU0xPQiBpcyBub3Qgc2V0Ci0KLSMKLSMgTG9hZGFibGUgbW9kdWxlIHN1cHBvcnQKLSMKIENPTkZJR19NT0RVTEVTPXkKIENPTkZJR19NT0RVTEVfVU5MT0FEPXkKICMgQ09ORklHX01PRFVMRV9GT1JDRV9VTkxPQUQgaXMgbm90IHNldApAQCAtMjM2LDEyICsyNTMsMTAgQEAKIENPTkZJR19NT0RVTEVfU1JDVkVSU0lPTl9BTEw9eQogQ09ORklHX0tNT0Q9eQogQ09ORklHX1NUT1BfTUFDSElORT15Ci0KLSMKLSMgQmxvY2sgbGF5ZXIKLSMKIENPTkZJR19CTE9DSz15CiAjIENPTkZJR19CTEtfREVWX0lPX1RSQUNFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JMS19ERVZfQlNHIGlzIG5vdCBzZXQKK0NPTkZJR19CTE9DS19DT01QQVQ9eQogCiAjCiAjIElPIFNjaGVkdWxlcnMKQEAgLTI1NSw2ICsyNzAsNyBAQAogIyBDT05GSUdfREVGQVVMVF9DRlEgaXMgbm90IHNldAogIyBDT05GSUdfREVGQVVMVF9OT09QIGlzIG5vdCBzZXQKIENPTkZJR19ERUZBVUxUX0lPU0NIRUQ9ImFudGljaXBhdG9yeSIKK0NPTkZJR19DTEFTU0lDX1JDVT15CiAKICMKICMgQnVzIG9wdGlvbnMgKFBDSSwgUENNQ0lBLCBFSVNBLCBJU0EsIFRDKQpAQCAtMjYyLDIzICsyNzgsMTkgQEAKIENPTkZJR19IV19IQVNfUENJPXkKIENPTkZJR19QQ0k9eQogQ09ORklHX1BDSV9ET01BSU5TPXkKKyMgQ09ORklHX0FSQ0hfU1VQUE9SVFNfTVNJIGlzIG5vdCBzZXQKK0NPTkZJR19QQ0lfTEVHQUNZPXkKIENPTkZJR19QQ0lfREVCVUc9eQogQ09ORklHX01NVT15Ci0KLSMKLSMgUENDQVJEIChQQ01DSUEvQ2FyZEJ1cykgc3VwcG9ydAotIwotCi0jCi0jIFBDSSBIb3RwbHVnIFN1cHBvcnQKLSMKK0NPTkZJR19aT05FX0RNQTMyPXkKKyMgQ09ORklHX1BDQ0FSRCBpcyBub3Qgc2V0CisjIENPTkZJR19IT1RQTFVHX1BDSSBpcyBub3Qgc2V0CiAKICMKICMgRXhlY3V0YWJsZSBmaWxlIGZvcm1hdHMKICMKIENPTkZJR19CSU5GTVRfRUxGPXkKICMgQ09ORklHX0JJTkZNVF9NSVNDIGlzIG5vdCBzZXQKLSMgQ09ORklHX0JVSUxEX0VMRjY0IGlzIG5vdCBzZXQKIENPTkZJR19NSVBTMzJfQ09NUEFUPXkKIENPTkZJR19DT01QQVQ9eQogQ09ORklHX1NZU1ZJUENfQ09NUEFUPXkKQEAgLTI5Miw3ICszMDQsNiBAQAogQ09ORklHX1BNPXkKICMgQ09ORklHX1BNX0xFR0FDWSBpcyBub3Qgc2V0CiAjIENPTkZJR19QTV9ERUJVRyBpcyBub3Qgc2V0Ci0jIENPTkZJR19QTV9TWVNGU19ERVBSRUNBVEVEIGlzIG5vdCBzZXQKIAogIwogIyBOZXR3b3JraW5nCkBAIC0zMDIsNyArMzEzLDYgQEAKICMKICMgTmV0d29ya2luZyBvcHRpb25zCiAjCi0jIENPTkZJR19ORVRERUJVRyBpcyBub3Qgc2V0CiBDT05GSUdfUEFDS0VUPXkKIENPTkZJR19QQUNLRVRfTU1BUD15CiBDT05GSUdfVU5JWD15CkBAIC0zMTAsMTAgKzMyMCwxMSBAQAogQ09ORklHX1hGUk1fVVNFUj1tCiAjIENPTkZJR19YRlJNX1NVQl9QT0xJQ1kgaXMgbm90IHNldAogQ09ORklHX1hGUk1fTUlHUkFURT15CisjIENPTkZJR19YRlJNX1NUQVRJU1RJQ1MgaXMgbm90IHNldAogQ09ORklHX05FVF9LRVk9eQogQ09ORklHX05FVF9LRVlfTUlHUkFURT15CiBDT05GSUdfSU5FVD15Ci0jIENPTkZJR19JUF9NVUxUSUNBU1QgaXMgbm90IHNldAorQ09ORklHX0lQX01VTFRJQ0FTVD15CiAjIENPTkZJR19JUF9BRFZBTkNFRF9ST1VURVIgaXMgbm90IHNldAogQ09ORklHX0lQX0ZJQl9IQVNIPXkKIENPTkZJR19JUF9QTlA9eQpAQCAtMzIyLDQxICszMzMsMTQxIEBACiAjIENPTkZJR19JUF9QTlBfUkFSUCBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRfSVBJUCBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRfSVBHUkUgaXMgbm90IHNldAorQ09ORklHX0lQX01ST1VURT15CitDT05GSUdfSVBfUElNU01fVjE9eQorQ09ORklHX0lQX1BJTVNNX1YyPXkKICMgQ09ORklHX0FSUEQgaXMgbm90IHNldAogIyBDT05GSUdfU1lOX0NPT0tJRVMgaXMgbm90IHNldAotIyBDT05GSUdfSU5FVF9BSCBpcyBub3Qgc2V0Ci0jIENPTkZJR19JTkVUX0VTUCBpcyBub3Qgc2V0Ci0jIENPTkZJR19JTkVUX0lQQ09NUCBpcyBub3Qgc2V0Ci0jIENPTkZJR19JTkVUX1hGUk1fVFVOTkVMIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lORVRfVFVOTkVMIGlzIG5vdCBzZXQKK0NPTkZJR19JTkVUX0FIPW0KK0NPTkZJR19JTkVUX0VTUD1tCitDT05GSUdfSU5FVF9JUENPTVA9bQorQ09ORklHX0lORVRfWEZSTV9UVU5ORUw9bQorQ09ORklHX0lORVRfVFVOTkVMPW0KIENPTkZJR19JTkVUX1hGUk1fTU9ERV9UUkFOU1BPUlQ9bQogQ09ORklHX0lORVRfWEZSTV9NT0RFX1RVTk5FTD1tCiBDT05GSUdfSU5FVF9YRlJNX01PREVfQkVFVD15CisjIENPTkZJR19JTkVUX0xSTyBpcyBub3Qgc2V0CiBDT05GSUdfSU5FVF9ESUFHPXkKIENPTkZJR19JTkVUX1RDUF9ESUFHPXkKICMgQ09ORklHX1RDUF9DT05HX0FEVkFOQ0VEIGlzIG5vdCBzZXQKIENPTkZJR19UQ1BfQ09OR19DVUJJQz15CiBDT05GSUdfREVGQVVMVF9UQ1BfQ09ORz0iY3ViaWMiCiBDT05GSUdfVENQX01ENVNJRz15Ci0jIENPTkZJR19JUFY2IGlzIG5vdCBzZXQKLSMgQ09ORklHX0lORVQ2X1hGUk1fVFVOTkVMIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lORVQ2X1RVTk5FTCBpcyBub3Qgc2V0CitDT05GSUdfSVBfVlM9bQorIyBDT05GSUdfSVBfVlNfREVCVUcgaXMgbm90IHNldAorQ09ORklHX0lQX1ZTX1RBQl9CSVRTPTEyCisKKyMKKyMgSVBWUyB0cmFuc3BvcnQgcHJvdG9jb2wgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydAorIworQ09ORklHX0lQX1ZTX1BST1RPX1RDUD15CitDT05GSUdfSVBfVlNfUFJPVE9fVURQPXkKK0NPTkZJR19JUF9WU19QUk9UT19FU1A9eQorQ09ORklHX0lQX1ZTX1BST1RPX0FIPXkKKworIworIyBJUFZTIHNjaGVkdWxlcgorIworQ09ORklHX0lQX1ZTX1JSPW0KK0NPTkZJR19JUF9WU19XUlI9bQorQ09ORklHX0lQX1ZTX0xDPW0KK0NPTkZJR19JUF9WU19XTEM9bQorQ09ORklHX0lQX1ZTX0xCTEM9bQorQ09ORklHX0lQX1ZTX0xCTENSPW0KK0NPTkZJR19JUF9WU19ESD1tCitDT05GSUdfSVBfVlNfU0g9bQorQ09ORklHX0lQX1ZTX1NFRD1tCitDT05GSUdfSVBfVlNfTlE9bQorCisjCisjIElQVlMgYXBwbGljYXRpb24gaGVscGVyCisjCitDT05GSUdfSVBfVlNfRlRQPW0KK0NPTkZJR19JUFY2PW0KK0NPTkZJR19JUFY2X1BSSVZBQ1k9eQorQ09ORklHX0lQVjZfUk9VVEVSX1BSRUY9eQorQ09ORklHX0lQVjZfUk9VVEVfSU5GTz15CitDT05GSUdfSVBWNl9PUFRJTUlTVElDX0RBRD15CitDT05GSUdfSU5FVDZfQUg9bQorQ09ORklHX0lORVQ2X0VTUD1tCitDT05GSUdfSU5FVDZfSVBDT01QPW0KK0NPTkZJR19JUFY2X01JUDY9bQorQ09ORklHX0lORVQ2X1hGUk1fVFVOTkVMPW0KK0NPTkZJR19JTkVUNl9UVU5ORUw9bQorQ09ORklHX0lORVQ2X1hGUk1fTU9ERV9UUkFOU1BPUlQ9bQorQ09ORklHX0lORVQ2X1hGUk1fTU9ERV9UVU5ORUw9bQorQ09ORklHX0lORVQ2X1hGUk1fTU9ERV9CRUVUPW0KK0NPTkZJR19JTkVUNl9YRlJNX01PREVfUk9VVEVPUFRJTUlaQVRJT049bQorQ09ORklHX0lQVjZfU0lUPW0KK0NPTkZJR19JUFY2X1RVTk5FTD1tCitDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eQorQ09ORklHX0lQVjZfU1VCVFJFRVM9eQogQ09ORklHX05FVFdPUktfU0VDTUFSSz15Ci0jIENPTkZJR19ORVRGSUxURVIgaXMgbm90IHNldAorQ09ORklHX05FVEZJTFRFUj15CisjIENPTkZJR19ORVRGSUxURVJfREVCVUcgaXMgbm90IHNldAorIyBDT05GSUdfTkVURklMVEVSX0FEVkFOQ0VEIGlzIG5vdCBzZXQKIAogIwotIyBEQ0NQIENvbmZpZ3VyYXRpb24gKEVYUEVSSU1FTlRBTCkKKyMgQ29yZSBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvbgogIworQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LPW0KK0NPTkZJR19ORVRGSUxURVJfTkVUTElOS19MT0c9bQorQ09ORklHX05GX0NPTk5UUkFDSz1tCitDT05GSUdfTkZfQ09OTlRSQUNLX1NFQ01BUks9eQorQ09ORklHX05GX0NPTk5UUkFDS19GVFA9bQorQ09ORklHX05GX0NPTk5UUkFDS19JUkM9bQorQ09ORklHX05GX0NPTk5UUkFDS19TSVA9bQorQ09ORklHX05GX0NUX05FVExJTks9bQorQ09ORklHX05FVEZJTFRFUl9YVEFCTEVTPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX01BUks9bQorQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfTkZMT0c9bQorQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfU0VDTUFSSz1tCitDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9DT05OU0VDTUFSSz1tCitDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9UQ1BNU1M9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9DT05OVFJBQ0s9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9NQVJLPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfUE9MSUNZPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfU1RBVEU9bQorCisjCisjIElQOiBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvbgorIworQ09ORklHX05GX0NPTk5UUkFDS19JUFY0PW0KK0NPTkZJR19ORl9DT05OVFJBQ0tfUFJPQ19DT01QQVQ9eQorQ09ORklHX0lQX05GX0lQVEFCTEVTPW0KK0NPTkZJR19JUF9ORl9GSUxURVI9bQorQ09ORklHX0lQX05GX1RBUkdFVF9SRUpFQ1Q9bQorQ09ORklHX0lQX05GX1RBUkdFVF9MT0c9bQorQ09ORklHX0lQX05GX1RBUkdFVF9VTE9HPW0KK0NPTkZJR19ORl9OQVQ9bQorQ09ORklHX05GX05BVF9ORUVERUQ9eQorQ09ORklHX0lQX05GX1RBUkdFVF9NQVNRVUVSQURFPW0KK0NPTkZJR19ORl9OQVRfRlRQPW0KK0NPTkZJR19ORl9OQVRfSVJDPW0KKyMgQ09ORklHX05GX05BVF9URlRQIGlzIG5vdCBzZXQKKyMgQ09ORklHX05GX05BVF9BTUFOREEgaXMgbm90IHNldAorIyBDT05GSUdfTkZfTkFUX1BQVFAgaXMgbm90IHNldAorIyBDT05GSUdfTkZfTkFUX0gzMjMgaXMgbm90IHNldAorQ09ORklHX05GX05BVF9TSVA9bQorQ09ORklHX0lQX05GX01BTkdMRT1tCisKKyMKKyMgSVB2NjogTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24KKyMKK0NPTkZJR19ORl9DT05OVFJBQ0tfSVBWNj1tCitDT05GSUdfSVA2X05GX0lQVEFCTEVTPW0KK0NPTkZJR19JUDZfTkZfTUFUQ0hfSVBWNkhFQURFUj1tCitDT05GSUdfSVA2X05GX0ZJTFRFUj1tCitDT05GSUdfSVA2X05GX1RBUkdFVF9MT0c9bQorQ09ORklHX0lQNl9ORl9UQVJHRVRfUkVKRUNUPW0KK0NPTkZJR19JUDZfTkZfTUFOR0xFPW0KICMgQ09ORklHX0lQX0RDQ1AgaXMgbm90IHNldAotCi0jCi0jIFNDVFAgQ29uZmlndXJhdGlvbiAoRVhQRVJJTUVOVEFMKQotIwotIyBDT05GSUdfSVBfU0NUUCBpcyBub3Qgc2V0Ci0KLSMKLSMgVElQQyBDb25maWd1cmF0aW9uIChFWFBFUklNRU5UQUwpCi0jCitDT05GSUdfSVBfU0NUUD1tCisjIENPTkZJR19TQ1RQX0RCR19NU0cgaXMgbm90IHNldAorIyBDT05GSUdfU0NUUF9EQkdfT0JKQ05UIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDVFBfSE1BQ19OT05FIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDVFBfSE1BQ19TSEExIGlzIG5vdCBzZXQKK0NPTkZJR19TQ1RQX0hNQUNfTUQ1PXkKICMgQ09ORklHX1RJUEMgaXMgbm90IHNldAogIyBDT05GSUdfQVRNIGlzIG5vdCBzZXQKICMgQ09ORklHX0JSSURHRSBpcyBub3Qgc2V0CkBAIC0zNjksMTAgKzQ4MCw2IEBACiAjIENPTkZJR19MQVBCIGlzIG5vdCBzZXQKICMgQ09ORklHX0VDT05FVCBpcyBub3Qgc2V0CiAjIENPTkZJR19XQU5fUk9VVEVSIGlzIG5vdCBzZXQKLQotIwotIyBRb1MgYW5kL29yIGZhaXIgcXVldWVpbmcKLSMKICMgQ09ORklHX05FVF9TQ0hFRCBpcyBub3Qgc2V0CiAKICMKQEAgLTM4MCw5ICs0ODcsMjEgQEAKICMKICMgQ09ORklHX05FVF9QS1RHRU4gaXMgbm90IHNldAogIyBDT05GSUdfSEFNUkFESU8gaXMgbm90IHNldAorIyBDT05GSUdfQ0FOIGlzIG5vdCBzZXQKICMgQ09ORklHX0lSREEgaXMgbm90IHNldAogIyBDT05GSUdfQlQgaXMgbm90IHNldAorIyBDT05GSUdfQUZfUlhSUEMgaXMgbm90IHNldAorQ09ORklHX0ZJQl9SVUxFUz15CisKKyMKKyMgV2lyZWxlc3MKKyMKKyMgQ09ORklHX0NGRzgwMjExIGlzIG5vdCBzZXQKKyMgQ09ORklHX1dJUkVMRVNTX0VYVCBpcyBub3Qgc2V0CisjIENPTkZJR19NQUM4MDIxMSBpcyBub3Qgc2V0CiAjIENPTkZJR19JRUVFODAyMTEgaXMgbm90IHNldAorIyBDT05GSUdfUkZLSUxMIGlzIG5vdCBzZXQKKyMgQ09ORklHX05FVF85UCBpcyBub3Qgc2V0CiAKICMKICMgRGV2aWNlIERyaXZlcnMKQEAgLTM5MSw4NSArNTEwLDcwIEBACiAjCiAjIEdlbmVyaWMgRHJpdmVyIE9wdGlvbnMKICMKK0NPTkZJR19VRVZFTlRfSEVMUEVSX1BBVEg9Ii9zYmluL2hvdHBsdWciCiBDT05GSUdfU1RBTkRBTE9ORT15CiBDT05GSUdfUFJFVkVOVF9GSVJNV0FSRV9CVUlMRD15CitDT05GSUdfRldfTE9BREVSPW0KICMgQ09ORklHX0RFQlVHX0RSSVZFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19ERVZSRVMgaXMgbm90IHNldAogIyBDT05GSUdfU1lTX0hZUEVSVklTT1IgaXMgbm90IHNldAotCi0jCi0jIENvbm5lY3RvciAtIHVuaWZpZWQgdXNlcnNwYWNlIDwtPiBrZXJuZWxzcGFjZSBsaW5rZXIKLSMKICMgQ09ORklHX0NPTk5FQ1RPUiBpcyBub3Qgc2V0Ci0KLSMKLSMgTWVtb3J5IFRlY2hub2xvZ3kgRGV2aWNlcyAoTVREKQotIwogIyBDT05GSUdfTVREIGlzIG5vdCBzZXQKLQotIwotIyBQYXJhbGxlbCBwb3J0IHN1cHBvcnQKLSMKICMgQ09ORklHX1BBUlBPUlQgaXMgbm90IHNldAotCi0jCi0jIFBsdWcgYW5kIFBsYXkgc3VwcG9ydAotIwotIyBDT05GSUdfUE5QQUNQSSBpcyBub3Qgc2V0Ci0KLSMKLSMgQmxvY2sgZGV2aWNlcwotIworQ09ORklHX0JMS19ERVY9eQogIyBDT05GSUdfQkxLX0NQUV9EQSBpcyBub3Qgc2V0CiAjIENPTkZJR19CTEtfQ1BRX0NJU1NfREEgaXMgbm90IHNldAogIyBDT05GSUdfQkxLX0RFVl9EQUM5NjAgaXMgbm90IHNldAogIyBDT05GSUdfQkxLX0RFVl9VTUVNIGlzIG5vdCBzZXQKICMgQ09ORklHX0JMS19ERVZfQ09XX0NPTU1PTiBpcyBub3Qgc2V0CiBDT05GSUdfQkxLX0RFVl9MT09QPW0KLSMgQ09ORklHX0JMS19ERVZfQ1JZUFRPTE9PUCBpcyBub3Qgc2V0CitDT05GSUdfQkxLX0RFVl9DUllQVE9MT09QPW0KIENPTkZJR19CTEtfREVWX05CRD1tCiAjIENPTkZJR19CTEtfREVWX1NYOCBpcyBub3Qgc2V0CiAjIENPTkZJR19CTEtfREVWX1JBTSBpcyBub3Qgc2V0Ci1DT05GSUdfQkxLX0RFVl9JTklUUkQ9eQogIyBDT05GSUdfQ0RST01fUEtUQ0RWRCBpcyBub3Qgc2V0CiAjIENPTkZJR19BVEFfT1ZFUl9FVEggaXMgbm90IHNldAotCi0jCi0jIE1pc2MgZGV2aWNlcwotIworQ09ORklHX01JU0NfREVWSUNFUz15CisjIENPTkZJR19QSEFOVE9NIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VFUFJPTV85M0NYNiBpcyBub3Qgc2V0CiBDT05GSUdfU0dJX0lPQzQ9bQogIyBDT05GSUdfVElGTV9DT1JFIGlzIG5vdCBzZXQKLQotIwotIyBBVEEvQVRBUEkvTUZNL1JMTCBzdXBwb3J0Ci0jCisjIENPTkZJR19FTkNMT1NVUkVfU0VSVklDRVMgaXMgbm90IHNldAorQ09ORklHX0hBVkVfSURFPXkKIENPTkZJR19JREU9eQogQ09ORklHX0lERV9NQVhfSFdJRlM9NAogQ09ORklHX0JMS19ERVZfSURFPXkKIAogIwotIyBQbGVhc2Ugc2VlIERvY3VtZW50YXRpb24vaWRlLnR4dCBmb3IgaGVscC9pbmZvIG9uIElERSBkcml2ZXMKKyMgUGxlYXNlIHNlZSBEb2N1bWVudGF0aW9uL2lkZS9pZGUudHh0IGZvciBoZWxwL2luZm8gb24gSURFIGRyaXZlcwogIwogIyBDT05GSUdfQkxLX0RFVl9JREVfU0FUQSBpcyBub3Qgc2V0CiBDT05GSUdfQkxLX0RFVl9JREVESVNLPXkKICMgQ09ORklHX0lERURJU0tfTVVMVElfTU9ERSBpcyBub3Qgc2V0CiBDT05GSUdfQkxLX0RFVl9JREVDRD15CitDT05GSUdfQkxLX0RFVl9JREVDRF9WRVJCT1NFX0VSUk9SUz15CiBDT05GSUdfQkxLX0RFVl9JREVUQVBFPXkKIENPTkZJR19CTEtfREVWX0lERUZMT1BQWT15CisjIENPTkZJR19CTEtfREVWX0lERVNDU0kgaXMgbm90IHNldAogIyBDT05GSUdfSURFX1RBU0tfSU9DVEwgaXMgbm90IHNldAorQ09ORklHX0lERV9QUk9DX0ZTPXkKIAogIwogIyBJREUgY2hpcHNldCBzdXBwb3J0L2J1Z2ZpeGVzCiAjCiBDT05GSUdfSURFX0dFTkVSSUM9eQorIyBDT05GSUdfQkxLX0RFVl9QTEFURk9STSBpcyBub3Qgc2V0CitDT05GSUdfQkxLX0RFVl9JREVETUFfU0ZGPXkKKworIworIyBQQ0kgSURFIGNoaXBzZXRzIHN1cHBvcnQKKyMKIENPTkZJR19CTEtfREVWX0lERVBDST15Ci0jIENPTkZJR19JREVQQ0lfU0hBUkVfSVJRIGlzIG5vdCBzZXQKK0NPTkZJR19JREVQQ0lfUENJQlVTX09SREVSPXkKICMgQ09ORklHX0JMS19ERVZfT0ZGQk9BUkQgaXMgbm90IHNldAogQ09ORklHX0JMS19ERVZfR0VORVJJQz15CiAjIENPTkZJR19CTEtfREVWX09QVEk2MjEgaXMgbm90IHNldAogQ09ORklHX0JMS19ERVZfSURFRE1BX1BDST15Ci0jIENPTkZJR19CTEtfREVWX0lERURNQV9GT1JDRUQgaXMgbm90IHNldAotIyBDT05GSUdfSURFRE1BX1BDSV9BVVRPIGlzIG5vdCBzZXQKICMgQ09ORklHX0JMS19ERVZfQUVDNjJYWCBpcyBub3Qgc2V0CiAjIENPTkZJR19CTEtfREVWX0FMSTE1WDMgaXMgbm90IHNldAogIyBDT05GSUdfQkxLX0RFVl9BTUQ3NFhYIGlzIG5vdCBzZXQKQEAgLTQ5NSw4NyArNTk5LDE5NiBAQAogIyBDT05GSUdfQkxLX0RFVl9WSUE4MkNYWFggaXMgbm90IHNldAogQ09ORklHX0JMS19ERVZfVEM4NkMwMDE9bQogIyBDT05GSUdfQkxLX0RFVl9JREVfU1dBUk0gaXMgbm90IHNldAotIyBDT05GSUdfSURFX0FSTSBpcyBub3Qgc2V0CiBDT05GSUdfQkxLX0RFVl9JREVETUE9eQotIyBDT05GSUdfSURFRE1BX0lWQiBpcyBub3Qgc2V0Ci0jIENPTkZJR19JREVETUFfQVVUTyBpcyBub3Qgc2V0CitDT05GSUdfSURFX0FSQ0hfT0JTT0xFVEVfSU5JVD15CiAjIENPTkZJR19CTEtfREVWX0hEIGlzIG5vdCBzZXQKIAogIwogIyBTQ1NJIGRldmljZSBzdXBwb3J0CiAjCiAjIENPTkZJR19SQUlEX0FUVFJTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NDU0kgaXMgbm90IHNldAorQ09ORklHX1NDU0k9eQorQ09ORklHX1NDU0lfRE1BPXkKKyMgQ09ORklHX1NDU0lfVEdUIGlzIG5vdCBzZXQKICMgQ09ORklHX1NDU0lfTkVUTElOSyBpcyBub3Qgc2V0CitDT05GSUdfU0NTSV9QUk9DX0ZTPXkKIAogIwotIyBTZXJpYWwgQVRBIChwcm9kKSBhbmQgUGFyYWxsZWwgQVRBIChleHBlcmltZW50YWwpIGRyaXZlcnMKKyMgU0NTSSBzdXBwb3J0IHR5cGUgKGRpc2ssIHRhcGUsIENELVJPTSkKICMKLSMgQ09ORklHX0FUQSBpcyBub3Qgc2V0CitDT05GSUdfQkxLX0RFVl9TRD15CisjIENPTkZJR19DSFJfREVWX1NUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NIUl9ERVZfT1NTVCBpcyBub3Qgc2V0CisjIENPTkZJR19CTEtfREVWX1NSIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NIUl9ERVZfU0cgaXMgbm90IHNldAorIyBDT05GSUdfQ0hSX0RFVl9TQ0ggaXMgbm90IHNldAogCiAjCi0jIE11bHRpLWRldmljZSBzdXBwb3J0IChSQUlEIGFuZCBMVk0pCisjIFNvbWUgU0NTSSBkZXZpY2VzIChlLmcuIENEIGp1a2Vib3gpIHN1cHBvcnQgbXVsdGlwbGUgTFVOcwogIworIyBDT05GSUdfU0NTSV9NVUxUSV9MVU4gaXMgbm90IHNldAorIyBDT05GSUdfU0NTSV9DT05TVEFOVFMgaXMgbm90IHNldAorIyBDT05GSUdfU0NTSV9MT0dHSU5HIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDU0lfU0NBTl9BU1lOQyBpcyBub3Qgc2V0CitDT05GSUdfU0NTSV9XQUlUX1NDQU49bQorCisjCisjIFNDU0kgVHJhbnNwb3J0cworIworIyBDT05GSUdfU0NTSV9TUElfQVRUUlMgaXMgbm90IHNldAorIyBDT05GSUdfU0NTSV9GQ19BVFRSUyBpcyBub3Qgc2V0CisjIENPTkZJR19TQ1NJX0lTQ1NJX0FUVFJTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDU0lfU0FTX0xJQlNBUyBpcyBub3Qgc2V0CisjIENPTkZJR19TQ1NJX1NSUF9BVFRSUyBpcyBub3Qgc2V0CitDT05GSUdfU0NTSV9MT1dMRVZFTD15CisjIENPTkZJR19JU0NTSV9UQ1AgaXMgbm90IHNldAorIyBDT05GSUdfQkxLX0RFVl8zV19YWFhYX1JBSUQgaXMgbm90IHNldAorIyBDT05GSUdfU0NTSV8zV185WFhYIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDU0lfQUNBUkQgaXMgbm90IHNldAorIyBDT05GSUdfU0NTSV9BQUNSQUlEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDU0lfQUlDN1hYWCBpcyBub3Qgc2V0CisjIENPTkZJR19TQ1NJX0FJQzdYWFhfT0xEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDU0lfQUlDNzlYWCBpcyBub3Qgc2V0CisjIENPTkZJR19TQ1NJX0FJQzk0WFggaXMgbm90IHNldAorIyBDT05GSUdfU0NTSV9BRFZBTlNZUyBpcyBub3Qgc2V0CisjIENPTkZJR19TQ1NJX0FSQ01TUiBpcyBub3Qgc2V0CisjIENPTkZJR19NRUdBUkFJRF9ORVdHRU4gaXMgbm90IHNldAorIyBDT05GSUdfTUVHQVJBSURfTEVHQUNZIGlzIG5vdCBzZXQKKyMgQ09ORklHX01FR0FSQUlEX1NBUyBpcyBub3Qgc2V0CisjIENPTkZJR19TQ1NJX0hQVElPUCBpcyBub3Qgc2V0CisjIENPTkZJR19TQ1NJX0RNWDMxOTFEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDU0lfRlVUVVJFX0RPTUFJTiBpcyBub3Qgc2V0CisjIENPTkZJR19TQ1NJX0lQUyBpcyBub3Qgc2V0CisjIENPTkZJR19TQ1NJX0lOSVRJTyBpcyBub3Qgc2V0CisjIENPTkZJR19TQ1NJX0lOSUExMDAgaXMgbm90IHNldAorIyBDT05GSUdfU0NTSV9NVlNBUyBpcyBub3Qgc2V0CisjIENPTkZJR19TQ1NJX1NURVggaXMgbm90IHNldAorIyBDT05GSUdfU0NTSV9TWU01M0M4WFhfMiBpcyBub3Qgc2V0CisjIENPTkZJR19TQ1NJX0lQUiBpcyBub3Qgc2V0CisjIENPTkZJR19TQ1NJX1FMT0dJQ18xMjgwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDU0lfUUxBX0ZDIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDU0lfUUxBX0lTQ1NJIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDU0lfTFBGQyBpcyBub3Qgc2V0CisjIENPTkZJR19TQ1NJX0RDMzk1eCBpcyBub3Qgc2V0CisjIENPTkZJR19TQ1NJX0RDMzkwVCBpcyBub3Qgc2V0CisjIENPTkZJR19TQ1NJX0RFQlVHIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDU0lfU1JQIGlzIG5vdCBzZXQKK0NPTkZJR19BVEE9eQorIyBDT05GSUdfQVRBX05PTlNUQU5EQVJEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NBVEFfQUhDSSBpcyBub3Qgc2V0CisjIENPTkZJR19TQVRBX1NWVyBpcyBub3Qgc2V0CisjIENPTkZJR19BVEFfUElJWCBpcyBub3Qgc2V0CisjIENPTkZJR19TQVRBX01WIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NBVEFfTlYgaXMgbm90IHNldAorIyBDT05GSUdfUERDX0FETUEgaXMgbm90IHNldAorIyBDT05GSUdfU0FUQV9RU1RPUiBpcyBub3Qgc2V0CisjIENPTkZJR19TQVRBX1BST01JU0UgaXMgbm90IHNldAorIyBDT05GSUdfU0FUQV9TWDQgaXMgbm90IHNldAorIyBDT05GSUdfU0FUQV9TSUwgaXMgbm90IHNldAorQ09ORklHX1NBVEFfU0lMMjQ9eQorIyBDT05GSUdfU0FUQV9TSVMgaXMgbm90IHNldAorIyBDT05GSUdfU0FUQV9VTEkgaXMgbm90IHNldAorIyBDT05GSUdfU0FUQV9WSUEgaXMgbm90IHNldAorIyBDT05GSUdfU0FUQV9WSVRFU1NFIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NBVEFfSU5JQzE2MlggaXMgbm90IHNldAorIyBDT05GSUdfUEFUQV9BTEkgaXMgbm90IHNldAorIyBDT05GSUdfUEFUQV9BTUQgaXMgbm90IHNldAorIyBDT05GSUdfUEFUQV9BUlRPUCBpcyBub3Qgc2V0CisjIENPTkZJR19QQVRBX0FUSUlYUCBpcyBub3Qgc2V0CisjIENPTkZJR19QQVRBX0NNRDY0MF9QQ0kgaXMgbm90IHNldAorIyBDT05GSUdfUEFUQV9DTUQ2NFggaXMgbm90IHNldAorIyBDT05GSUdfUEFUQV9DUzU1MjAgaXMgbm90IHNldAorIyBDT05GSUdfUEFUQV9DUzU1MzAgaXMgbm90IHNldAorIyBDT05GSUdfUEFUQV9DWVBSRVNTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BBVEFfRUZBUiBpcyBub3Qgc2V0CisjIENPTkZJR19BVEFfR0VORVJJQyBpcyBub3Qgc2V0CisjIENPTkZJR19QQVRBX0hQVDM2NiBpcyBub3Qgc2V0CisjIENPTkZJR19QQVRBX0hQVDM3WCBpcyBub3Qgc2V0CisjIENPTkZJR19QQVRBX0hQVDNYMk4gaXMgbm90IHNldAorIyBDT05GSUdfUEFUQV9IUFQzWDMgaXMgbm90IHNldAorIyBDT05GSUdfUEFUQV9JVDgyMVggaXMgbm90IHNldAorIyBDT05GSUdfUEFUQV9JVDgyMTMgaXMgbm90IHNldAorIyBDT05GSUdfUEFUQV9KTUlDUk9OIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BBVEFfVFJJRkxFWCBpcyBub3Qgc2V0CisjIENPTkZJR19QQVRBX01BUlZFTEwgaXMgbm90IHNldAorIyBDT05GSUdfUEFUQV9NUElJWCBpcyBub3Qgc2V0CisjIENPTkZJR19QQVRBX09MRFBJSVggaXMgbm90IHNldAorIyBDT05GSUdfUEFUQV9ORVRDRUxMIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BBVEFfTklOSkEzMiBpcyBub3Qgc2V0CisjIENPTkZJR19QQVRBX05TODc0MTAgaXMgbm90IHNldAorIyBDT05GSUdfUEFUQV9OUzg3NDE1IGlzIG5vdCBzZXQKKyMgQ09ORklHX1BBVEFfT1BUSSBpcyBub3Qgc2V0CisjIENPTkZJR19QQVRBX09QVElETUEgaXMgbm90IHNldAorIyBDT05GSUdfUEFUQV9QRENfT0xEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BBVEFfUkFESVNZUyBpcyBub3Qgc2V0CisjIENPTkZJR19QQVRBX1JaMTAwMCBpcyBub3Qgc2V0CisjIENPTkZJR19QQVRBX1NDMTIwMCBpcyBub3Qgc2V0CisjIENPTkZJR19QQVRBX1NFUlZFUldPUktTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BBVEFfUERDMjAyN1ggaXMgbm90IHNldAorQ09ORklHX1BBVEFfU0lMNjgwPXkKKyMgQ09ORklHX1BBVEFfU0lTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BBVEFfVklBIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BBVEFfV0lOQk9ORCBpcyBub3Qgc2V0CisjIENPTkZJR19QQVRBX1BMQVRGT1JNIGlzIG5vdCBzZXQKICMgQ09ORklHX01EIGlzIG5vdCBzZXQKLQotIwotIyBGdXNpb24gTVBUIGRldmljZSBzdXBwb3J0Ci0jCiAjIENPTkZJR19GVVNJT04gaXMgbm90IHNldAogCiAjCiAjIElFRUUgMTM5NCAoRmlyZVdpcmUpIHN1cHBvcnQKICMKKyMgQ09ORklHX0ZJUkVXSVJFIGlzIG5vdCBzZXQKICMgQ09ORklHX0lFRUUxMzk0IGlzIG5vdCBzZXQKLQotIwotIyBJMk8gZGV2aWNlIHN1cHBvcnQKLSMKICMgQ09ORklHX0kyTyBpcyBub3Qgc2V0Ci0KLSMKLSMgTmV0d29yayBkZXZpY2Ugc3VwcG9ydAotIwogQ09ORklHX05FVERFVklDRVM9eQorIyBDT05GSUdfTkVUREVWSUNFU19NVUxUSVFVRVVFIGlzIG5vdCBzZXQKICMgQ09ORklHX0RVTU1ZIGlzIG5vdCBzZXQKICMgQ09ORklHX0JPTkRJTkcgaXMgbm90IHNldAorIyBDT05GSUdfTUFDVkxBTiBpcyBub3Qgc2V0CiAjIENPTkZJR19FUVVBTElaRVIgaXMgbm90IHNldAogIyBDT05GSUdfVFVOIGlzIG5vdCBzZXQKLQotIwotIyBBUkNuZXQgZGV2aWNlcwotIworIyBDT05GSUdfVkVUSCBpcyBub3Qgc2V0CiAjIENPTkZJR19BUkNORVQgaXMgbm90IHNldAorQ09ORklHX1BIWUxJQj15CiAKICMKLSMgUEhZIGRldmljZSBzdXBwb3J0CisjIE1JSSBQSFkgZGV2aWNlIGRyaXZlcnMKICMKLSMgQ09ORklHX1BIWUxJQiBpcyBub3Qgc2V0Ci0KLSMKLSMgRXRoZXJuZXQgKDEwIG9yIDEwME1iaXQpCi0jCisjIENPTkZJR19NQVJWRUxMX1BIWSBpcyBub3Qgc2V0CisjIENPTkZJR19EQVZJQ09NX1BIWSBpcyBub3Qgc2V0CisjIENPTkZJR19RU0VNSV9QSFkgaXMgbm90IHNldAorIyBDT05GSUdfTFhUX1BIWSBpcyBub3Qgc2V0CisjIENPTkZJR19DSUNBREFfUEhZIGlzIG5vdCBzZXQKKyMgQ09ORklHX1ZJVEVTU0VfUEhZIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NNU0NfUEhZIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JST0FEQ09NX1BIWSBpcyBub3Qgc2V0CisjIENPTkZJR19JQ1BMVVNfUEhZIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JFQUxURUtfUEhZIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZJWEVEX1BIWSBpcyBub3Qgc2V0CisjIENPTkZJR19NRElPX0JJVEJBTkcgaXMgbm90IHNldAogQ09ORklHX05FVF9FVEhFUk5FVD15CiBDT05GSUdfTUlJPXkKKyMgQ09ORklHX0FYODg3OTYgaXMgbm90IHNldAogIyBDT05GSUdfSEFQUFlNRUFMIGlzIG5vdCBzZXQKICMgQ09ORklHX1NVTkdFTSBpcyBub3Qgc2V0CiAjIENPTkZJR19DQVNTSU5JIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9WRU5ET1JfM0NPTSBpcyBub3Qgc2V0CiAjIENPTkZJR19ETTkwMDAgaXMgbm90IHNldAotCi0jCi0jIFR1bGlwIGZhbWlseSBuZXR3b3JrIGRldmljZSBzdXBwb3J0Ci0jCiAjIENPTkZJR19ORVRfVFVMSVAgaXMgbm90IHNldAogIyBDT05GSUdfSFAxMDAgaXMgbm90IHNldAorIyBDT05GSUdfSUJNX05FV19FTUFDX1pNSUkgaXMgbm90IHNldAorIyBDT05GSUdfSUJNX05FV19FTUFDX1JHTUlJIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lCTV9ORVdfRU1BQ19UQUggaXMgbm90IHNldAorIyBDT05GSUdfSUJNX05FV19FTUFDX0VNQUM0IGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9QQ0kgaXMgbm90IHNldAotCi0jCi0jIEV0aGVybmV0ICgxMDAwIE1iaXQpCi0jCisjIENPTkZJR19CNDQgaXMgbm90IHNldAorQ09ORklHX05FVERFVl8xMDAwPXkKICMgQ09ORklHX0FDRU5JQyBpcyBub3Qgc2V0CiAjIENPTkZJR19ETDJLIGlzIG5vdCBzZXQKICMgQ09ORklHX0UxMDAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX0UxMDAwRSBpcyBub3Qgc2V0CisjIENPTkZJR19FMTAwMEVfRU5BQkxFRCBpcyBub3Qgc2V0CisjIENPTkZJR19JUDEwMDAgaXMgbm90IHNldAorIyBDT05GSUdfSUdCIGlzIG5vdCBzZXQKICMgQ09ORklHX05TODM4MjAgaXMgbm90IHNldAogIyBDT05GSUdfSEFNQUNISSBpcyBub3Qgc2V0CiAjIENPTkZJR19ZRUxMT1dGSU4gaXMgbm90IHNldApAQCAtNTg1LDUyICs3OTgsNTMgQEAKICMgQ09ORklHX1NLR0UgaXMgbm90IHNldAogIyBDT05GSUdfU0tZMiBpcyBub3Qgc2V0CiAjIENPTkZJR19TSzk4TElOIGlzIG5vdCBzZXQKKyMgQ09ORklHX1ZJQV9WRUxPQ0lUWSBpcyBub3Qgc2V0CiAjIENPTkZJR19USUdPTjMgaXMgbm90IHNldAogIyBDT05GSUdfQk5YMiBpcyBub3Qgc2V0CiAjIENPTkZJR19RTEEzWFhYIGlzIG5vdCBzZXQKICMgQ09ORklHX0FUTDEgaXMgbm90IHNldAotCi0jCi0jIEV0aGVybmV0ICgxMDAwMCBNYml0KQotIworQ09ORklHX05FVERFVl8xMDAwMD15CiAjIENPTkZJR19DSEVMU0lPX1QxIGlzIG5vdCBzZXQKIENPTkZJR19DSEVMU0lPX1QzPW0KKyMgQ09ORklHX0lYR0JFIGlzIG5vdCBzZXQKICMgQ09ORklHX0lYR0IgaXMgbm90IHNldAogIyBDT05GSUdfUzJJTyBpcyBub3Qgc2V0CiAjIENPTkZJR19NWVJJMTBHRSBpcyBub3Qgc2V0CiBDT05GSUdfTkVUWEVOX05JQz1tCi0KLSMKLSMgVG9rZW4gUmluZyBkZXZpY2VzCi0jCisjIENPTkZJR19OSVUgaXMgbm90IHNldAorIyBDT05GSUdfTUxYNF9DT1JFIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RFSFVUSSBpcyBub3Qgc2V0CisjIENPTkZJR19CTlgyWCBpcyBub3Qgc2V0CiAjIENPTkZJR19UUiBpcyBub3Qgc2V0CiAKICMKLSMgV2lyZWxlc3MgTEFOIChub24taGFtcmFkaW8pCisjIFdpcmVsZXNzIExBTgogIwotIyBDT05GSUdfTkVUX1JBRElPIGlzIG5vdCBzZXQKLQotIwotIyBXYW4gaW50ZXJmYWNlcwotIworIyBDT05GSUdfV0xBTl9QUkU4MDIxMSBpcyBub3Qgc2V0CisjIENPTkZJR19XTEFOXzgwMjExIGlzIG5vdCBzZXQKICMgQ09ORklHX1dBTiBpcyBub3Qgc2V0CiAjIENPTkZJR19GRERJIGlzIG5vdCBzZXQKICMgQ09ORklHX0hJUFBJIGlzIG5vdCBzZXQKLSMgQ09ORklHX1BQUCBpcyBub3Qgc2V0Ci0jIENPTkZJR19TTElQIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NIQVBFUiBpcyBub3Qgc2V0CitDT05GSUdfUFBQPW0KK0NPTkZJR19QUFBfTVVMVElMSU5LPXkKK0NPTkZJR19QUFBfRklMVEVSPXkKK0NPTkZJR19QUFBfQVNZTkM9bQorQ09ORklHX1BQUF9TWU5DX1RUWT1tCitDT05GSUdfUFBQX0RFRkxBVEU9bQorQ09ORklHX1BQUF9CU0RDT01QPW0KK0NPTkZJR19QUFBfTVBQRT1tCitDT05GSUdfUFBQT0U9bQorQ09ORklHX1BQUE9MMlRQPW0KK0NPTkZJR19TTElQPW0KK0NPTkZJR19TTElQX0NPTVBSRVNTRUQ9eQorQ09ORklHX1NMSEM9bQorQ09ORklHX1NMSVBfU01BUlQ9eQorQ09ORklHX1NMSVBfTU9ERV9TTElQNj15CisjIENPTkZJR19ORVRfRkMgaXMgbm90IHNldAogIyBDT05GSUdfTkVUQ09OU09MRSBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRQT0xMIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9QT0xMX0NPTlRST0xMRVIgaXMgbm90IHNldAotCi0jCi0jIElTRE4gc3Vic3lzdGVtCi0jCiAjIENPTkZJR19JU0ROIGlzIG5vdCBzZXQKLQotIwotIyBUZWxlcGhvbnkgU3VwcG9ydAotIwogIyBDT05GSUdfUEhPTkUgaXMgbm90IHNldAogCiAjCkBAIC02NjAsMTcgKzg3NCwxNiBAQAogIyBDT05GSUdfRElHSUVQQ0EgaXMgbm90IHNldAogIyBDT05GSUdfTU9YQV9JTlRFTExJTyBpcyBub3Qgc2V0CiAjIENPTkZJR19NT1hBX1NNQVJUSU8gaXMgbm90IHNldAotQ09ORklHX01PWEFfU01BUlRJT19ORVc9bQogIyBDT05GSUdfSVNJIGlzIG5vdCBzZXQKICMgQ09ORklHX1NZTkNMSU5LTVAgaXMgbm90IHNldAogIyBDT05GSUdfU1lOQ0xJTktfR1QgaXMgbm90IHNldAogIyBDT05GSUdfTl9IRExDIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JJU0NPTTggaXMgbm90IHNldAogIyBDT05GSUdfU1BFQ0lBTElYIGlzIG5vdCBzZXQKICMgQ09ORklHX1NYIGlzIG5vdCBzZXQKICMgQ09ORklHX1JJTyBpcyBub3Qgc2V0CiAjIENPTkZJR19TVEFMRFJWIGlzIG5vdCBzZXQKLUNPTkZJR19TRVJJQUxfU0IxMjUwX0RVQVJUPXkKLUNPTkZJR19TRVJJQUxfU0IxMjUwX0RVQVJUX0NPTlNPTEU9eQorIyBDT05GSUdfTk9aT01JIGlzIG5vdCBzZXQKIAogIwogIyBTZXJpYWwgZHJpdmVycwpAQCAtNjgwLDM5ICs4OTMsMjQgQEAKICMKICMgTm9uLTgyNTAgc2VyaWFsIHBvcnQgc3VwcG9ydAogIworQ09ORklHX1NFUklBTF9TQjEyNTBfRFVBUlQ9eQorQ09ORklHX1NFUklBTF9TQjEyNTBfRFVBUlRfQ09OU09MRT15CitDT05GSUdfU0VSSUFMX0NPUkU9eQorQ09ORklHX1NFUklBTF9DT1JFX0NPTlNPTEU9eQogIyBDT05GSUdfU0VSSUFMX0pTTSBpcyBub3Qgc2V0CiBDT05GSUdfVU5JWDk4X1BUWVM9eQogQ09ORklHX0xFR0FDWV9QVFlTPXkKIENPTkZJR19MRUdBQ1lfUFRZX0NPVU5UPTI1NgotCi0jCi0jIElQTUkKLSMKICMgQ09ORklHX0lQTUlfSEFORExFUiBpcyBub3Qgc2V0Ci0KLSMKLSMgV2F0Y2hkb2cgQ2FyZHMKLSMKLSMgQ09ORklHX1dBVENIRE9HIGlzIG5vdCBzZXQKICMgQ09ORklHX0hXX1JBTkRPTSBpcyBub3Qgc2V0CiAjIENPTkZJR19SVEMgaXMgbm90IHNldAotQ09ORklHX0dFTl9SVEM9eQotIyBDT05GSUdfR0VOX1JUQ19YIGlzIG5vdCBzZXQKLSMgQ09ORklHX0RUTEsgaXMgbm90IHNldAogIyBDT05GSUdfUjM5NjQgaXMgbm90IHNldAogIyBDT05GSUdfQVBQTElDT00gaXMgbm90IHNldAotIyBDT05GSUdfRFJNIGlzIG5vdCBzZXQKICMgQ09ORklHX1JBV19EUklWRVIgaXMgbm90IHNldAotCi0jCi0jIFRQTSBkZXZpY2VzCi0jCiAjIENPTkZJR19UQ0dfVFBNIGlzIG5vdCBzZXQKLQotIwotIyBJMkMgc3VwcG9ydAotIworQ09ORklHX0RFVlBPUlQ9eQogQ09ORklHX0kyQz15CitDT05GSUdfSTJDX0JPQVJESU5GTz15CiBDT05GSUdfSTJDX0NIQVJERVY9eQogCiAjCkBAIC03MzYsMjkgKzkzNCwzMCBAQAogIyBDT05GSUdfSTJDX05GT1JDRTIgaXMgbm90IHNldAogIyBDT05GSUdfSTJDX09DT1JFUyBpcyBub3Qgc2V0CiAjIENPTkZJR19JMkNfUEFSUE9SVF9MSUdIVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19JMkNfUEFTRU1JIGlzIG5vdCBzZXQKICMgQ09ORklHX0kyQ19QUk9TQVZBR0UgaXMgbm90IHNldAogIyBDT05GSUdfSTJDX1NBVkFHRTQgaXMgbm90IHNldAogQ09ORklHX0kyQ19TSUJZVEU9eQorIyBDT05GSUdfSTJDX1NJTVRFQyBpcyBub3Qgc2V0CiAjIENPTkZJR19JMkNfU0lTNTU5NSBpcyBub3Qgc2V0CiAjIENPTkZJR19JMkNfU0lTNjMwIGlzIG5vdCBzZXQKICMgQ09ORklHX0kyQ19TSVM5NlggaXMgbm90IHNldAorIyBDT05GSUdfSTJDX1RBT1NfRVZNIGlzIG5vdCBzZXQKICMgQ09ORklHX0kyQ19TVFVCIGlzIG5vdCBzZXQKICMgQ09ORklHX0kyQ19WSUEgaXMgbm90IHNldAogIyBDT05GSUdfSTJDX1ZJQVBSTyBpcyBub3Qgc2V0CiAjIENPTkZJR19JMkNfVk9PRE9PMyBpcyBub3Qgc2V0Ci0jIENPTkZJR19JMkNfUENBX0lTQSBpcyBub3Qgc2V0CiAKICMKICMgTWlzY2VsbGFuZW91cyBJMkMgQ2hpcCBzdXBwb3J0CiAjCi1DT05GSUdfU0VOU09SU19EUzEzMzc9eQotQ09ORklHX1NFTlNPUlNfRFMxMzc0PXkKKyMgQ09ORklHX0RTMTY4MiBpcyBub3Qgc2V0CiBDT05GSUdfU0VOU09SU19FRVBST009eQogQ09ORklHX1NFTlNPUlNfUENGODU3ND15Ci1DT05GSUdfU0VOU09SU19QQ0E5NTM5PXkKKyMgQ09ORklHX1BDRjg1NzUgaXMgbm90IHNldAogQ09ORklHX1NFTlNPUlNfUENGODU5MT15CisjIENPTkZJR19UUFM2NTAxMCBpcyBub3Qgc2V0CiBDT05GSUdfU0VOU09SU19NQVg2ODc1PXkKKyMgQ09ORklHX1NFTlNPUlNfVFNMMjU1MCBpcyBub3Qgc2V0CiBDT05GSUdfSTJDX0RFQlVHX0NPUkU9eQogQ09ORklHX0kyQ19ERUJVR19BTEdPPXkKIENPTkZJR19JMkNfREVCVUdfQlVTPXkKQEAgLTc2OSw0MyArOTY4LDQ5IEBACiAjCiAjIENPTkZJR19TUEkgaXMgbm90IHNldAogIyBDT05GSUdfU1BJX01BU1RFUiBpcyBub3Qgc2V0Ci0KLSMKLSMgRGFsbGFzJ3MgMS13aXJlIGJ1cwotIwogIyBDT05GSUdfVzEgaXMgbm90IHNldAorIyBDT05GSUdfUE9XRVJfU1VQUExZIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hXTU9OIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RIRVJNQUwgaXMgbm90IHNldAorIyBDT05GSUdfV0FUQ0hET0cgaXMgbm90IHNldAogCiAjCi0jIEhhcmR3YXJlIE1vbml0b3Jpbmcgc3VwcG9ydAorIyBTb25pY3MgU2lsaWNvbiBCYWNrcGxhbmUKICMKLSMgQ09ORklHX0hXTU9OIGlzIG5vdCBzZXQKLSMgQ09ORklHX0hXTU9OX1ZJRCBpcyBub3Qgc2V0CitDT05GSUdfU1NCX1BPU1NJQkxFPXkKKyMgQ09ORklHX1NTQiBpcyBub3Qgc2V0CisKKyMKKyMgTXVsdGlmdW5jdGlvbiBkZXZpY2UgZHJpdmVycworIworIyBDT05GSUdfTUZEX1NNNTAxIGlzIG5vdCBzZXQKIAogIwogIyBNdWx0aW1lZGlhIGRldmljZXMKICMKICMgQ09ORklHX1ZJREVPX0RFViBpcyBub3Qgc2V0Ci0KLSMKLSMgRGlnaXRhbCBWaWRlbyBCcm9hZGNhc3RpbmcgRGV2aWNlcwotIwotIyBDT05GSUdfRFZCIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RWQl9DT1JFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RBQiBpcyBub3Qgc2V0CiAKICMKICMgR3JhcGhpY3Mgc3VwcG9ydAogIwotIyBDT05GSUdfRklSTVdBUkVfRURJRCBpcyBub3Qgc2V0CisjIENPTkZJR19EUk0gaXMgbm90IHNldAorIyBDT05GSUdfVkdBU1RBVEUgaXMgbm90IHNldAorIyBDT05GSUdfVklERU9fT1VUUFVUX0NPTlRST0wgaXMgbm90IHNldAogIyBDT05GSUdfRkIgaXMgbm90IHNldAogIyBDT05GSUdfQkFDS0xJR0hUX0xDRF9TVVBQT1JUIGlzIG5vdCBzZXQKIAogIworIyBEaXNwbGF5IGRldmljZSBzdXBwb3J0CisjCisjIENPTkZJR19ESVNQTEFZX1NVUFBPUlQgaXMgbm90IHNldAorCisjCiAjIFNvdW5kCiAjCiAjIENPTkZJR19TT1VORCBpcyBub3Qgc2V0Ci0KLSMKLSMgVVNCIHN1cHBvcnQKLSMKK0NPTkZJR19VU0JfU1VQUE9SVD15CiBDT05GSUdfVVNCX0FSQ0hfSEFTX0hDRD15CiBDT05GSUdfVVNCX0FSQ0hfSEFTX09IQ0k9eQogQ09ORklHX1VTQl9BUkNIX0hBU19FSENJPXkKQEAgLTgxNCwxMDQgKzEwMTksNzMgQEAKICMKICMgTk9URTogVVNCX1NUT1JBR0UgZW5hYmxlcyBTQ1NJLCBhbmQgJ1NDU0kgZGlzayBzdXBwb3J0JwogIwotCi0jCi0jIFVTQiBHYWRnZXQgU3VwcG9ydAotIwogIyBDT05GSUdfVVNCX0dBREdFVCBpcyBub3Qgc2V0Ci0KLSMKLSMgTU1DL1NEIENhcmQgc3VwcG9ydAotIwogIyBDT05GSUdfTU1DIGlzIG5vdCBzZXQKLQotIwotIyBMRUQgZGV2aWNlcwotIworIyBDT05GSUdfTUVNU1RJQ0sgaXMgbm90IHNldAogIyBDT05GSUdfTkVXX0xFRFMgaXMgbm90IHNldAotCi0jCi0jIExFRCBkcml2ZXJzCi0jCi0KLSMKLSMgTEVEIFRyaWdnZXJzCi0jCi0KLSMKLSMgSW5maW5pQmFuZCBzdXBwb3J0Ci0jCiAjIENPTkZJR19JTkZJTklCQU5EIGlzIG5vdCBzZXQKLQotIwotIyBFREFDIC0gZXJyb3IgZGV0ZWN0aW9uIGFuZCByZXBvcnRpbmcgKFJBUykgKEVYUEVSSU1FTlRBTCkKLSMKLQotIwotIyBSZWFsIFRpbWUgQ2xvY2sKLSMKK0NPTkZJR19SVENfTElCPXkKICMgQ09ORklHX1JUQ19DTEFTUyBpcyBub3Qgc2V0CiAKICMKLSMgRE1BIEVuZ2luZSBzdXBwb3J0CisjIFVzZXJzcGFjZSBJL08KICMKLSMgQ09ORklHX0RNQV9FTkdJTkUgaXMgbm90IHNldAotCi0jCi0jIERNQSBDbGllbnRzCi0jCi0KLSMKLSMgRE1BIERldmljZXMKLSMKLQotIwotIyBBdXhpbGlhcnkgRGlzcGxheSBzdXBwb3J0Ci0jCi0KLSMKLSMgVmlydHVhbGl6YXRpb24KLSMKKyMgQ09ORklHX1VJTyBpcyBub3Qgc2V0CiAKICMKICMgRmlsZSBzeXN0ZW1zCiAjCi1DT05GSUdfRVhUMl9GUz15CitDT05GSUdfRVhUMl9GUz1tCiBDT05GSUdfRVhUMl9GU19YQVRUUj15Ci1DT05GSUdfRVhUMl9GU19QT1NJWF9BQ0w9eQotQ09ORklHX0VYVDJfRlNfU0VDVVJJVFk9eQorIyBDT05GSUdfRVhUMl9GU19QT1NJWF9BQ0wgaXMgbm90IHNldAorIyBDT05GSUdfRVhUMl9GU19TRUNVUklUWSBpcyBub3Qgc2V0CiAjIENPTkZJR19FWFQyX0ZTX1hJUCBpcyBub3Qgc2V0Ci0jIENPTkZJR19FWFQzX0ZTIGlzIG5vdCBzZXQKK0NPTkZJR19FWFQzX0ZTPXkKK0NPTkZJR19FWFQzX0ZTX1hBVFRSPXkKKyMgQ09ORklHX0VYVDNfRlNfUE9TSVhfQUNMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VYVDNfRlNfU0VDVVJJVFkgaXMgbm90IHNldAogIyBDT05GSUdfRVhUNERFVl9GUyBpcyBub3Qgc2V0CitDT05GSUdfSkJEPXkKIENPTkZJR19GU19NQkNBQ0hFPXkKICMgQ09ORklHX1JFSVNFUkZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0pGU19GUyBpcyBub3Qgc2V0Ci1DT05GSUdfRlNfUE9TSVhfQUNMPXkKKyMgQ09ORklHX0ZTX1BPU0lYX0FDTCBpcyBub3Qgc2V0CiAjIENPTkZJR19YRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfR0ZTMl9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19PQ0ZTMl9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CitDT05GSUdfRE5PVElGWT15CiBDT05GSUdfSU5PVElGWT15CiBDT05GSUdfSU5PVElGWV9VU0VSPXkKLSMgQ09ORklHX1FVT1RBIGlzIG5vdCBzZXQKLUNPTkZJR19ETk9USUZZPXkKLSMgQ09ORklHX0FVVE9GU19GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19BVVRPRlM0X0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZVU0VfRlMgaXMgbm90IHNldAorQ09ORklHX1FVT1RBPXkKK0NPTkZJR19RVU9UQV9ORVRMSU5LX0lOVEVSRkFDRT15CisjIENPTkZJR19QUklOVF9RVU9UQV9XQVJOSU5HIGlzIG5vdCBzZXQKKyMgQ09ORklHX1FGTVRfVjEgaXMgbm90IHNldAorQ09ORklHX1FGTVRfVjI9bQorQ09ORklHX1FVT1RBQ1RMPXkKK0NPTkZJR19BVVRPRlNfRlM9bQorQ09ORklHX0FVVE9GUzRfRlM9bQorQ09ORklHX0ZVU0VfRlM9bQogCiAjCiAjIENELVJPTS9EVkQgRmlsZXN5c3RlbXMKICMKLSMgQ09ORklHX0lTTzk2NjBfRlMgaXMgbm90IHNldAotIyBDT05GSUdfVURGX0ZTIGlzIG5vdCBzZXQKK0NPTkZJR19JU085NjYwX0ZTPW0KK0NPTkZJR19KT0xJRVQ9eQorQ09ORklHX1pJU09GUz15CitDT05GSUdfVURGX0ZTPW0KK0NPTkZJR19VREZfTkxTPXkKIAogIwogIyBET1MvRkFUL05UIEZpbGVzeXN0ZW1zCiAjCi0jIENPTkZJR19NU0RPU19GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19WRkFUX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX05URlNfRlMgaXMgbm90IHNldAorQ09ORklHX0ZBVF9GUz1tCitDT05GSUdfTVNET1NfRlM9bQorQ09ORklHX1ZGQVRfRlM9bQorQ09ORklHX0ZBVF9ERUZBVUxUX0NPREVQQUdFPTQzNworQ09ORklHX0ZBVF9ERUZBVUxUX0lPQ0hBUlNFVD0iaXNvODg1OS0xIgorQ09ORklHX05URlNfRlM9bQorIyBDT05GSUdfTlRGU19ERUJVRyBpcyBub3Qgc2V0CitDT05GSUdfTlRGU19SVz15CiAKICMKICMgUHNldWRvIGZpbGVzeXN0ZW1zCkBAIC05MjMsNyArMTA5Nyw2IEBACiBDT05GSUdfVE1QRlM9eQogIyBDT05GSUdfVE1QRlNfUE9TSVhfQUNMIGlzIG5vdCBzZXQKICMgQ09ORklHX0hVR0VUTEJfUEFHRSBpcyBub3Qgc2V0Ci1DT05GSUdfUkFNRlM9eQogQ09ORklHX0NPTkZJR0ZTX0ZTPW0KIAogIwpAQCAtOTM5LDE0ICsxMTEyLDEzIEBACiAjIENPTkZJR19FRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfQ1JBTUZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1ZYRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfTUlOSVhfRlMgaXMgbm90IHNldAogIyBDT05GSUdfSFBGU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19RTlg0RlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfU1lTVl9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19VRlNfRlMgaXMgbm90IHNldAotCi0jCi0jIE5ldHdvcmsgRmlsZSBTeXN0ZW1zCi0jCitDT05GSUdfTkVUV09SS19GSUxFU1lTVEVNUz15CiBDT05GSUdfTkZTX0ZTPXkKIENPTkZJR19ORlNfVjM9eQogIyBDT05GSUdfTkZTX1YzX0FDTCBpcyBub3Qgc2V0CkBAIC05NTgsNiArMTEzMCw3IEBACiBDT05GSUdfTE9DS0RfVjQ9eQogQ09ORklHX05GU19DT01NT049eQogQ09ORklHX1NVTlJQQz15CisjIENPTkZJR19TVU5SUENfQklORDM0IGlzIG5vdCBzZXQKICMgQ09ORklHX1JQQ1NFQ19HU1NfS1JCNSBpcyBub3Qgc2V0CiAjIENPTkZJR19SUENTRUNfR1NTX1NQS00zIGlzIG5vdCBzZXQKICMgQ09ORklHX1NNQl9GUyBpcyBub3Qgc2V0CkBAIC05NjUsMzcgKzExMzgsNjEgQEAKICMgQ09ORklHX05DUF9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19DT0RBX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0FGU19GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR185UF9GUyBpcyBub3Qgc2V0CiAKICMKICMgUGFydGl0aW9uIFR5cGVzCiAjCiAjIENPTkZJR19QQVJUSVRJT05fQURWQU5DRUQgaXMgbm90IHNldAogQ09ORklHX01TRE9TX1BBUlRJVElPTj15Ci0KLSMKLSMgTmF0aXZlIExhbmd1YWdlIFN1cHBvcnQKLSMKLSMgQ09ORklHX05MUyBpcyBub3Qgc2V0Ci0KLSMKLSMgRGlzdHJpYnV0ZWQgTG9jayBNYW5hZ2VyCi0jCitDT05GSUdfTkxTPW0KK0NPTkZJR19OTFNfREVGQVVMVD0iaXNvODg1OS0xIgorQ09ORklHX05MU19DT0RFUEFHRV80Mzc9bQorQ09ORklHX05MU19DT0RFUEFHRV83Mzc9bQorQ09ORklHX05MU19DT0RFUEFHRV83NzU9bQorQ09ORklHX05MU19DT0RFUEFHRV84NTA9bQorQ09ORklHX05MU19DT0RFUEFHRV84NTI9bQorQ09ORklHX05MU19DT0RFUEFHRV84NTU9bQorQ09ORklHX05MU19DT0RFUEFHRV84NTc9bQorQ09ORklHX05MU19DT0RFUEFHRV84NjA9bQorQ09ORklHX05MU19DT0RFUEFHRV84NjE9bQorQ09ORklHX05MU19DT0RFUEFHRV84NjI9bQorQ09ORklHX05MU19DT0RFUEFHRV84NjM9bQorQ09ORklHX05MU19DT0RFUEFHRV84NjQ9bQorQ09ORklHX05MU19DT0RFUEFHRV84NjU9bQorQ09ORklHX05MU19DT0RFUEFHRV84NjY9bQorQ09ORklHX05MU19DT0RFUEFHRV84Njk9bQorQ09ORklHX05MU19DT0RFUEFHRV85MzY9bQorQ09ORklHX05MU19DT0RFUEFHRV85NTA9bQorQ09ORklHX05MU19DT0RFUEFHRV85MzI9bQorQ09ORklHX05MU19DT0RFUEFHRV85NDk9bQorQ09ORklHX05MU19DT0RFUEFHRV84NzQ9bQorQ09ORklHX05MU19JU084ODU5Xzg9bQorQ09ORklHX05MU19DT0RFUEFHRV8xMjUwPW0KK0NPTkZJR19OTFNfQ09ERVBBR0VfMTI1MT1tCitDT05GSUdfTkxTX0FTQ0lJPW0KK0NPTkZJR19OTFNfSVNPODg1OV8xPW0KK0NPTkZJR19OTFNfSVNPODg1OV8yPW0KK0NPTkZJR19OTFNfSVNPODg1OV8zPW0KK0NPTkZJR19OTFNfSVNPODg1OV80PW0KK0NPTkZJR19OTFNfSVNPODg1OV81PW0KK0NPTkZJR19OTFNfSVNPODg1OV82PW0KK0NPTkZJR19OTFNfSVNPODg1OV83PW0KK0NPTkZJR19OTFNfSVNPODg1OV85PW0KK0NPTkZJR19OTFNfSVNPODg1OV8xMz1tCitDT05GSUdfTkxTX0lTTzg4NTlfMTQ9bQorQ09ORklHX05MU19JU084ODU5XzE1PW0KK0NPTkZJR19OTFNfS09JOF9SPW0KK0NPTkZJR19OTFNfS09JOF9VPW0KK0NPTkZJR19OTFNfVVRGOD1tCiBDT05GSUdfRExNPW0KLUNPTkZJR19ETE1fVENQPXkKLSMgQ09ORklHX0RMTV9TQ1RQIGlzIG5vdCBzZXQKICMgQ09ORklHX0RMTV9ERUJVRyBpcyBub3Qgc2V0CiAKICMKLSMgUHJvZmlsaW5nIHN1cHBvcnQKLSMKLSMgQ09ORklHX1BST0ZJTElORyBpcyBub3Qgc2V0Ci0KLSMKICMgS2VybmVsIGhhY2tpbmcKICMKIENPTkZJR19UUkFDRV9JUlFGTEFHU19TVVBQT1JUPXkKICMgQ09ORklHX1BSSU5US19USU1FIGlzIG5vdCBzZXQKK0NPTkZJR19FTkFCTEVfV0FSTl9ERVBSRUNBVEVEPXkKIENPTkZJR19FTkFCTEVfTVVTVF9DSEVDSz15CiBDT05GSUdfTUFHSUNfU1lTUlE9eQogIyBDT05GSUdfVU5VU0VEX1NZTUJPTFMgaXMgbm90IHNldApAQCAtMTAwMyw4ICsxMjAwLDggQEAKICMgQ09ORklHX0hFQURFUlNfQ0hFQ0sgaXMgbm90IHNldAogQ09ORklHX0RFQlVHX0tFUk5FTD15CiAjIENPTkZJR19ERUJVR19TSElSUSBpcyBub3Qgc2V0Ci1DT05GSUdfTE9HX0JVRl9TSElGVD0xNgogQ09ORklHX0RFVEVDVF9TT0ZUTE9DS1VQPXkKK0NPTkZJR19TQ0hFRF9ERUJVRz15CiAjIENPTkZJR19TQ0hFRFNUQVRTIGlzIG5vdCBzZXQKICMgQ09ORklHX1RJTUVSX1NUQVRTIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NMQUIgaXMgbm90IHNldApAQCAtMTAxNCwxNSArMTIxMSwxOSBAQAogQ09ORklHX0RFQlVHX01VVEVYRVM9eQogIyBDT05GSUdfREVCVUdfTE9DS19BTExPQyBpcyBub3Qgc2V0CiAjIENPTkZJR19QUk9WRV9MT0NLSU5HIGlzIG5vdCBzZXQKKyMgQ09ORklHX0xPQ0tfU1RBVCBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19TUElOTE9DS19TTEVFUCBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19MT0NLSU5HX0FQSV9TRUxGVEVTVFMgaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfS09CSkVDVCBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19JTkZPIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1ZNIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX0xJU1QgaXMgbm90IHNldAotQ09ORklHX0ZPUkNFRF9JTkxJTklORz15CisjIENPTkZJR19ERUJVR19TRyBpcyBub3Qgc2V0CisjIENPTkZJR19CT09UX1BSSU5US19ERUxBWSBpcyBub3Qgc2V0CiAjIENPTkZJR19SQ1VfVE9SVFVSRV9URVNUIGlzIG5vdCBzZXQKLUNPTkZJR19DUk9TU0NPTVBJTEU9eQorIyBDT05GSUdfQkFDS1RSQUNFX1NFTEZfVEVTVCBpcyBub3Qgc2V0CisjIENPTkZJR19GQVVMVF9JTkpFQ1RJT04gaXMgbm90IHNldAorIyBDT05GSUdfU0FNUExFUyBpcyBub3Qgc2V0CiBDT05GSUdfQ01ETElORT0iIgogIyBDT05GSUdfREVCVUdfU1RBQ0tfVVNBR0UgaXMgbm90IHNldAogIyBDT05GSUdfU0IxWFhYX0NPUkVMSVMgaXMgbm90IHNldApAQCAtMTAzNCwyMyArMTIzNSwyMiBAQAogQ09ORklHX0tFWVM9eQogQ09ORklHX0tFWVNfREVCVUdfUFJPQ19LRVlTPXkKICMgQ09ORklHX1NFQ1VSSVRZIGlzIG5vdCBzZXQKLQotIwotIyBDcnlwdG9ncmFwaGljIG9wdGlvbnMKLSMKKyMgQ09ORklHX1NFQ1VSSVRZX0ZJTEVfQ0FQQUJJTElUSUVTIGlzIG5vdCBzZXQKIENPTkZJR19DUllQVE89eQogQ09ORklHX0NSWVBUT19BTEdBUEk9eQotQ09ORklHX0NSWVBUT19CTEtDSVBIRVI9bQorQ09ORklHX0NSWVBUT19BRUFEPW0KK0NPTkZJR19DUllQVE9fQkxLQ0lQSEVSPXkKK0NPTkZJR19DUllQVE9fU0VRSVY9bQogQ09ORklHX0NSWVBUT19IQVNIPXkKIENPTkZJR19DUllQVE9fTUFOQUdFUj15CiBDT05GSUdfQ1JZUFRPX0hNQUM9eQogQ09ORklHX0NSWVBUT19YQ0JDPW0KIENPTkZJR19DUllQVE9fTlVMTD15Ci1DT05GSUdfQ1JZUFRPX01END15CitDT05GSUdfQ1JZUFRPX01END1tCiBDT05GSUdfQ1JZUFRPX01ENT15Ci1DT05GSUdfQ1JZUFRPX1NIQTE9eQotQ09ORklHX0NSWVBUT19TSEEyNTY9eQotQ09ORklHX0NSWVBUT19TSEE1MTI9eQorQ09ORklHX0NSWVBUT19TSEExPW0KK0NPTkZJR19DUllQVE9fU0hBMjU2PW0KK0NPTkZJR19DUllQVE9fU0hBNTEyPW0KIENPTkZJR19DUllQVE9fV1A1MTI9bQogQ09ORklHX0NSWVBUT19UR1IxOTI9bQogQ09ORklHX0NSWVBUT19HRjEyOE1VTD1tCkBAIC0xMDU4LDM5ICsxMjU4LDUwIEBACiBDT05GSUdfQ1JZUFRPX0NCQz1tCiBDT05GSUdfQ1JZUFRPX1BDQkM9bQogQ09ORklHX0NSWVBUT19MUlc9bQotQ09ORklHX0NSWVBUT19ERVM9eQorQ09ORklHX0NSWVBUT19YVFM9bQorQ09ORklHX0NSWVBUT19DVFI9bQorQ09ORklHX0NSWVBUT19HQ009bQorQ09ORklHX0NSWVBUT19DQ009bQorIyBDT05GSUdfQ1JZUFRPX0NSWVBURCBpcyBub3Qgc2V0CitDT05GSUdfQ1JZUFRPX0RFUz1tCiBDT05GSUdfQ1JZUFRPX0ZDUllQVD1tCi1DT05GSUdfQ1JZUFRPX0JMT1dGSVNIPXkKLUNPTkZJR19DUllQVE9fVFdPRklTSD15Ci1DT05GSUdfQ1JZUFRPX1RXT0ZJU0hfQ09NTU9OPXkKLUNPTkZJR19DUllQVE9fU0VSUEVOVD15CitDT05GSUdfQ1JZUFRPX0JMT1dGSVNIPW0KK0NPTkZJR19DUllQVE9fVFdPRklTSD1tCitDT05GSUdfQ1JZUFRPX1RXT0ZJU0hfQ09NTU9OPW0KK0NPTkZJR19DUllQVE9fU0VSUEVOVD1tCiBDT05GSUdfQ1JZUFRPX0FFUz1tCi0jIENPTkZJR19DUllQVE9fQ0FTVDUgaXMgbm90IHNldAotIyBDT05GSUdfQ1JZUFRPX0NBU1Q2IGlzIG5vdCBzZXQKK0NPTkZJR19DUllQVE9fQ0FTVDU9bQorQ09ORklHX0NSWVBUT19DQVNUNj1tCiBDT05GSUdfQ1JZUFRPX1RFQT1tCi0jIENPTkZJR19DUllQVE9fQVJDNCBpcyBub3Qgc2V0CitDT05GSUdfQ1JZUFRPX0FSQzQ9bQogQ09ORklHX0NSWVBUT19LSEFaQUQ9bQogQ09ORklHX0NSWVBUT19BTlVCSVM9bQotQ09ORklHX0NSWVBUT19ERUZMQVRFPXkKLUNPTkZJR19DUllQVE9fTUlDSEFFTF9NSUM9eQorQ09ORklHX0NSWVBUT19TRUVEPW0KK0NPTkZJR19DUllQVE9fU0FMU0EyMD1tCitDT05GSUdfQ1JZUFRPX0RFRkxBVEU9bQorQ09ORklHX0NSWVBUT19NSUNIQUVMX01JQz1tCiAjIENPTkZJR19DUllQVE9fQ1JDMzJDIGlzIG5vdCBzZXQKIENPTkZJR19DUllQVE9fQ0FNRUxMSUE9bQogIyBDT05GSUdfQ1JZUFRPX1RFU1QgaXMgbm90IHNldAotCi0jCi0jIEhhcmR3YXJlIGNyeXB0byBkZXZpY2VzCi0jCitDT05GSUdfQ1JZUFRPX0FVVEhFTkM9bQorIyBDT05GSUdfQ1JZUFRPX0xaTyBpcyBub3Qgc2V0CitDT05GSUdfQ1JZUFRPX0hXPXkKKyMgQ09ORklHX0NSWVBUT19ERVZfSElGTl83OTVYIGlzIG5vdCBzZXQKIAogIwogIyBMaWJyYXJ5IHJvdXRpbmVzCiAjCiBDT05GSUdfQklUUkVWRVJTRT15Ci0jIENPTkZJR19DUkNfQ0NJVFQgaXMgbm90IHNldAorQ09ORklHX0NSQ19DQ0lUVD1tCiAjIENPTkZJR19DUkMxNiBpcyBub3Qgc2V0CisjIENPTkZJR19DUkNfSVRVX1QgaXMgbm90IHNldAogQ09ORklHX0NSQzMyPXkKLSMgQ09ORklHX0xJQkNSQzMyQyBpcyBub3Qgc2V0Ci1DT05GSUdfWkxJQl9JTkZMQVRFPXkKLUNPTkZJR19aTElCX0RFRkxBVEU9eQorIyBDT05GSUdfQ1JDNyBpcyBub3Qgc2V0CitDT05GSUdfTElCQ1JDMzJDPW0KK0NPTkZJR19BVURJVF9HRU5FUklDPXkKK0NPTkZJR19aTElCX0lORkxBVEU9bQorQ09ORklHX1pMSUJfREVGTEFURT1tCiBDT05GSUdfUExJU1Q9eQogQ09ORklHX0hBU19JT01FTT15CiBDT05GSUdfSEFTX0lPUE9SVD15CitDT05GSUdfSEFTX0RNQT15CmRpZmYgLS1naXQgYS9hcmNoL21pcHMvZGVmY29uZmlnIGIvYXJjaC9taXBzL2RlZmNvbmZpZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGY1ZTU2Yy4uMDAwMDAwMAotLS0gYS9hcmNoL21pcHMvZGVmY29uZmlnCisrKyAvZGV2L251bGwKQEAgLTEsMTE1OCArMCwwIEBACi0jCi0jIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIG1ha2UgY29uZmlnOiBkb24ndCBlZGl0Ci0jIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMjMtcmMyCi0jIFR1ZSBBdWcgIDcgMTI6Mzk6NDkgMjAwNwotIwotQ09ORklHX01JUFM9eQotCi0jCi0jIE1hY2hpbmUgc2VsZWN0aW9uCi0jCi1DT05GSUdfWk9ORV9ETUE9eQotIyBDT05GSUdfTUFDSF9BTENIRU1ZIGlzIG5vdCBzZXQKLSMgQ09ORklHX0JBU0xFUl9FWENJVEUgaXMgbm90IHNldAotIyBDT05GSUdfTUlQU19DT0JBTFQgaXMgbm90IHNldAotIyBDT05GSUdfTUFDSF9ERUNTVEFUSU9OIGlzIG5vdCBzZXQKLSMgQ09ORklHX01BQ0hfSkFaWiBpcyBub3Qgc2V0Ci0jIENPTkZJR19MRU1PVEVfRlVMT05HIGlzIG5vdCBzZXQKLSMgQ09ORklHX01JUFNfQVRMQVMgaXMgbm90IHNldAotIyBDT05GSUdfTUlQU19NQUxUQSBpcyBub3Qgc2V0Ci0jIENPTkZJR19NSVBTX1NFQUQgaXMgbm90IHNldAotIyBDT05GSUdfTUlQU19TSU0gaXMgbm90IHNldAotIyBDT05GSUdfTUFSS0VJTlMgaXMgbm90IHNldAotIyBDT05GSUdfTUFDSF9WUjQxWFggaXMgbm90IHNldAotIyBDT05GSUdfUE5YODU1MF9KQlMgaXMgbm90IHNldAotIyBDT05GSUdfUE5YODU1MF9TVEI4MTAgaXMgbm90IHNldAotIyBDT05GSUdfUE1DX01TUCBpcyBub3Qgc2V0Ci0jIENPTkZJR19QTUNfWU9TRU1JVEUgaXMgbm90IHNldAotQ09ORklHX1NHSV9JUDIyPXkKLSMgQ09ORklHX1NHSV9JUDI3IGlzIG5vdCBzZXQKLSMgQ09ORklHX1NHSV9JUDMyIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NJQllURV9DUkhJTkUgaXMgbm90IHNldAotIyBDT05GSUdfU0lCWVRFX0NBUk1FTCBpcyBub3Qgc2V0Ci0jIENPTkZJR19TSUJZVEVfQ1JIT05FIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NJQllURV9SSE9ORSBpcyBub3Qgc2V0Ci0jIENPTkZJR19TSUJZVEVfU1dBUk0gaXMgbm90IHNldAotIyBDT05GSUdfU0lCWVRFX0xJVFRMRVNVUiBpcyBub3Qgc2V0Ci0jIENPTkZJR19TSUJZVEVfU0VOVE9TQSBpcyBub3Qgc2V0Ci0jIENPTkZJR19TSUJZVEVfQklHU1VSIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NOSV9STSBpcyBub3Qgc2V0Ci0jIENPTkZJR19UT1NISUJBX0pNUjM5MjcgaXMgbm90IHNldAotIyBDT05GSUdfVE9TSElCQV9SQlRYNDkyNyBpcyBub3Qgc2V0Ci0jIENPTkZJR19UT1NISUJBX1JCVFg0OTM4IGlzIG5vdCBzZXQKLSMgQ09ORklHX1dSX1BQTUMgaXMgbm90IHNldAotQ09ORklHX1JXU0VNX0dFTkVSSUNfU1BJTkxPQ0s9eQotIyBDT05GSUdfQVJDSF9IQVNfSUxPRzJfVTMyIGlzIG5vdCBzZXQKLSMgQ09ORklHX0FSQ0hfSEFTX0lMT0cyX1U2NCBpcyBub3Qgc2V0Ci1DT05GSUdfR0VORVJJQ19GSU5EX05FWFRfQklUPXkKLUNPTkZJR19HRU5FUklDX0hXRUlHSFQ9eQotQ09ORklHX0dFTkVSSUNfQ0FMSUJSQVRFX0RFTEFZPXkKLUNPTkZJR19HRU5FUklDX1RJTUU9eQotQ09ORklHX1NDSEVEX05PX05PX09NSVRfRlJBTUVfUE9JTlRFUj15Ci0jIENPTkZJR19HRU5FUklDX0hBUkRJUlFTX05PX19ET19JUlEgaXMgbm90IHNldAotQ09ORklHX0FSQz15Ci1DT05GSUdfRE1BX05PTkNPSEVSRU5UPXkKLUNPTkZJR19ETUFfTkVFRF9QQ0lfTUFQX1NUQVRFPXkKLUNPTkZJR19FQVJMWV9QUklOVEs9eQotQ09ORklHX1NZU19IQVNfRUFSTFlfUFJJTlRLPXkKLSMgQ09ORklHX05PX0lPUE9SVCBpcyBub3Qgc2V0Ci1DT05GSUdfR0VORVJJQ19JU0FfRE1BX1NVUFBPUlRfQlJPS0VOPXkKLUNPTkZJR19DUFVfQklHX0VORElBTj15Ci0jIENPTkZJR19DUFVfTElUVExFX0VORElBTiBpcyBub3Qgc2V0Ci1DT05GSUdfU1lTX1NVUFBPUlRTX0JJR19FTkRJQU49eQotQ09ORklHX0lSUV9DUFU9eQotQ09ORklHX1NXQVBfSU9fU1BBQ0U9eQotQ09ORklHX0FSQzMyPXkKLUNPTkZJR19CT09UX0VMRjMyPXkKLUNPTkZJR19NSVBTX0wxX0NBQ0hFX1NISUZUPTUKLUNPTkZJR19BUkNfQ09OU09MRT15Ci1DT05GSUdfQVJDX1BST01MSUI9eQotCi0jCi0jIENQVSBzZWxlY3Rpb24KLSMKLSMgQ09ORklHX0NQVV9MT09OR1NPTjIgaXMgbm90IHNldAotIyBDT05GSUdfQ1BVX01JUFMzMl9SMSBpcyBub3Qgc2V0Ci0jIENPTkZJR19DUFVfTUlQUzMyX1IyIGlzIG5vdCBzZXQKLSMgQ09ORklHX0NQVV9NSVBTNjRfUjEgaXMgbm90IHNldAotIyBDT05GSUdfQ1BVX01JUFM2NF9SMiBpcyBub3Qgc2V0Ci0jIENPTkZJR19DUFVfUjMwMDAgaXMgbm90IHNldAotIyBDT05GSUdfQ1BVX1RYMzlYWCBpcyBub3Qgc2V0Ci0jIENPTkZJR19DUFVfVlI0MVhYIGlzIG5vdCBzZXQKLSMgQ09ORklHX0NQVV9SNDMwMCBpcyBub3Qgc2V0Ci0jIENPTkZJR19DUFVfUjRYMDAgaXMgbm90IHNldAotIyBDT05GSUdfQ1BVX1RYNDlYWCBpcyBub3Qgc2V0Ci1DT05GSUdfQ1BVX1I1MDAwPXkKLSMgQ09ORklHX0NQVV9SNTQzMiBpcyBub3Qgc2V0Ci0jIENPTkZJR19DUFVfUjYwMDAgaXMgbm90IHNldAotIyBDT05GSUdfQ1BVX05FVkFEQSBpcyBub3Qgc2V0Ci0jIENPTkZJR19DUFVfUjgwMDAgaXMgbm90IHNldAotIyBDT05GSUdfQ1BVX1IxMDAwMCBpcyBub3Qgc2V0Ci0jIENPTkZJR19DUFVfUk03MDAwIGlzIG5vdCBzZXQKLSMgQ09ORklHX0NQVV9STTkwMDAgaXMgbm90IHNldAotIyBDT05GSUdfQ1BVX1NCMSBpcyBub3Qgc2V0Ci1DT05GSUdfU1lTX0hBU19DUFVfUjRYMDA9eQotQ09ORklHX1NZU19IQVNfQ1BVX1I1MDAwPXkKLUNPTkZJR19TWVNfU1VQUE9SVFNfMzJCSVRfS0VSTkVMPXkKLUNPTkZJR19TWVNfU1VQUE9SVFNfNjRCSVRfS0VSTkVMPXkKLUNPTkZJR19DUFVfU1VQUE9SVFNfMzJCSVRfS0VSTkVMPXkKLUNPTkZJR19DUFVfU1VQUE9SVFNfNjRCSVRfS0VSTkVMPXkKLQotIwotIyBLZXJuZWwgdHlwZQotIwotQ09ORklHXzMyQklUPXkKLSMgQ09ORklHXzY0QklUIGlzIG5vdCBzZXQKLUNPTkZJR19QQUdFX1NJWkVfNEtCPXkKLSMgQ09ORklHX1BBR0VfU0laRV84S0IgaXMgbm90IHNldAotIyBDT05GSUdfUEFHRV9TSVpFXzE2S0IgaXMgbm90IHNldAotIyBDT05GSUdfUEFHRV9TSVpFXzY0S0IgaXMgbm90IHNldAotQ09ORklHX0JPQVJEX1NDQUNIRT15Ci1DT05GSUdfSVAyMl9DUFVfU0NBQ0hFPXkKLUNPTkZJR19NSVBTX01UX0RJU0FCTEVEPXkKLSMgQ09ORklHX01JUFNfTVRfU01QIGlzIG5vdCBzZXQKLSMgQ09ORklHX01JUFNfTVRfU01UQyBpcyBub3Qgc2V0Ci1DT05GSUdfQ1BVX0hBU19MTFNDPXkKLUNPTkZJR19DUFVfSEFTX1NZTkM9eQotQ09ORklHX0dFTkVSSUNfSEFSRElSUVM9eQotQ09ORklHX0dFTkVSSUNfSVJRX1BST0JFPXkKLUNPTkZJR19BUkNIX0ZMQVRNRU1fRU5BQkxFPXkKLUNPTkZJR19TRUxFQ1RfTUVNT1JZX01PREVMPXkKLUNPTkZJR19GTEFUTUVNX01BTlVBTD15Ci0jIENPTkZJR19ESVNDT05USUdNRU1fTUFOVUFMIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NQQVJTRU1FTV9NQU5VQUwgaXMgbm90IHNldAotQ09ORklHX0ZMQVRNRU09eQotQ09ORklHX0ZMQVRfTk9ERV9NRU1fTUFQPXkKLSMgQ09ORklHX1NQQVJTRU1FTV9TVEFUSUMgaXMgbm90IHNldAotQ09ORklHX1NQTElUX1BUTE9DS19DUFVTPTQKLSMgQ09ORklHX1JFU09VUkNFU182NEJJVCBpcyBub3Qgc2V0Ci1DT05GSUdfWk9ORV9ETUFfRkxBRz0xCi1DT05GSUdfQk9VTkNFPXkKLUNPTkZJR19WSVJUX1RPX0JVUz15Ci0jIENPTkZJR19IWl80OCBpcyBub3Qgc2V0Ci0jIENPTkZJR19IWl8xMDAgaXMgbm90IHNldAotIyBDT05GSUdfSFpfMTI4IGlzIG5vdCBzZXQKLSMgQ09ORklHX0haXzI1MCBpcyBub3Qgc2V0Ci0jIENPTkZJR19IWl8yNTYgaXMgbm90IHNldAotQ09ORklHX0haXzEwMDA9eQotIyBDT05GSUdfSFpfMTAyNCBpcyBub3Qgc2V0Ci1DT05GSUdfU1lTX1NVUFBPUlRTX0FSQklUX0haPXkKLUNPTkZJR19IWj0xMDAwCi0jIENPTkZJR19QUkVFTVBUX05PTkUgaXMgbm90IHNldAotQ09ORklHX1BSRUVNUFRfVk9MVU5UQVJZPXkKLSMgQ09ORklHX1BSRUVNUFQgaXMgbm90IHNldAotIyBDT05GSUdfS0VYRUMgaXMgbm90IHNldAotQ09ORklHX1NFQ0NPTVA9eQotQ09ORklHX0xPQ0tERVBfU1VQUE9SVD15Ci1DT05GSUdfU1RBQ0tUUkFDRV9TVVBQT1JUPXkKLUNPTkZJR19ERUZDT05GSUdfTElTVD0iL2xpYi9tb2R1bGVzLyRVTkFNRV9SRUxFQVNFLy5jb25maWciCi0KLSMKLSMgR2VuZXJhbCBzZXR1cAotIwotQ09ORklHX0VYUEVSSU1FTlRBTD15Ci1DT05GSUdfQlJPS0VOX09OX1NNUD15Ci1DT05GSUdfSU5JVF9FTlZfQVJHX0xJTUlUPTMyCi1DT05GSUdfTE9DQUxWRVJTSU9OPSIiCi1DT05GSUdfTE9DQUxWRVJTSU9OX0FVVE89eQotQ09ORklHX1NXQVA9eQotQ09ORklHX1NZU1ZJUEM9eQotQ09ORklHX1NZU1ZJUENfU1lTQ1RMPXkKLSMgQ09ORklHX1BPU0lYX01RVUVVRSBpcyBub3Qgc2V0Ci0jIENPTkZJR19CU0RfUFJPQ0VTU19BQ0NUIGlzIG5vdCBzZXQKLSMgQ09ORklHX1RBU0tTVEFUUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19VU0VSX05TIGlzIG5vdCBzZXQKLSMgQ09ORklHX0FVRElUIGlzIG5vdCBzZXQKLUNPTkZJR19JS0NPTkZJRz15Ci1DT05GSUdfSUtDT05GSUdfUFJPQz15Ci1DT05GSUdfTE9HX0JVRl9TSElGVD0xNAotQ09ORklHX1NZU0ZTX0RFUFJFQ0FURUQ9eQotQ09ORklHX1JFTEFZPXkKLSMgQ09ORklHX0JMS19ERVZfSU5JVFJEIGlzIG5vdCBzZXQKLSMgQ09ORklHX0NDX09QVElNSVpFX0ZPUl9TSVpFIGlzIG5vdCBzZXQKLUNPTkZJR19TWVNDVEw9eQotQ09ORklHX0VNQkVEREVEPXkKLUNPTkZJR19TWVNDVExfU1lTQ0FMTD15Ci1DT05GSUdfS0FMTFNZTVM9eQotIyBDT05GSUdfS0FMTFNZTVNfRVhUUkFfUEFTUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19IT1RQTFVHIGlzIG5vdCBzZXQKLUNPTkZJR19QUklOVEs9eQotQ09ORklHX0JVRz15Ci1DT05GSUdfRUxGX0NPUkU9eQotQ09ORklHX0JBU0VfRlVMTD15Ci1DT05GSUdfRlVURVg9eQotQ09ORklHX0FOT05fSU5PREVTPXkKLUNPTkZJR19FUE9MTD15Ci1DT05GSUdfU0lHTkFMRkQ9eQotQ09ORklHX1RJTUVSRkQ9eQotQ09ORklHX0VWRU5URkQ9eQotQ09ORklHX1NITUVNPXkKLUNPTkZJR19WTV9FVkVOVF9DT1VOVEVSUz15Ci1DT05GSUdfU0xBQj15Ci0jIENPTkZJR19TTFVCIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NMT0IgaXMgbm90IHNldAotQ09ORklHX1JUX01VVEVYRVM9eQotIyBDT05GSUdfVElOWV9TSE1FTSBpcyBub3Qgc2V0Ci1DT05GSUdfQkFTRV9TTUFMTD0wCi1DT05GSUdfTU9EVUxFUz15Ci1DT05GSUdfTU9EVUxFX1VOTE9BRD15Ci0jIENPTkZJR19NT0RVTEVfRk9SQ0VfVU5MT0FEIGlzIG5vdCBzZXQKLUNPTkZJR19NT0RWRVJTSU9OUz15Ci1DT05GSUdfTU9EVUxFX1NSQ1ZFUlNJT05fQUxMPXkKLUNPTkZJR19LTU9EPXkKLUNPTkZJR19CTE9DSz15Ci0jIENPTkZJR19MQkQgaXMgbm90IHNldAotIyBDT05GSUdfQkxLX0RFVl9JT19UUkFDRSBpcyBub3Qgc2V0Ci0jIENPTkZJR19MU0YgaXMgbm90IHNldAotIyBDT05GSUdfQkxLX0RFVl9CU0cgaXMgbm90IHNldAotCi0jCi0jIElPIFNjaGVkdWxlcnMKLSMKLUNPTkZJR19JT1NDSEVEX05PT1A9eQotQ09ORklHX0lPU0NIRURfQVM9eQotQ09ORklHX0lPU0NIRURfREVBRExJTkU9eQotQ09ORklHX0lPU0NIRURfQ0ZRPXkKLUNPTkZJR19ERUZBVUxUX0FTPXkKLSMgQ09ORklHX0RFRkFVTFRfREVBRExJTkUgaXMgbm90IHNldAotIyBDT05GSUdfREVGQVVMVF9DRlEgaXMgbm90IHNldAotIyBDT05GSUdfREVGQVVMVF9OT09QIGlzIG5vdCBzZXQKLUNPTkZJR19ERUZBVUxUX0lPU0NIRUQ9ImFudGljaXBhdG9yeSIKLQotIwotIyBCdXMgb3B0aW9ucyAoUENJLCBQQ01DSUEsIEVJU0EsIElTQSwgVEMpCi0jCi1DT05GSUdfSFdfSEFTX0VJU0E9eQotIyBDT05GSUdfQVJDSF9TVVBQT1JUU19NU0kgaXMgbm90IHNldAotIyBDT05GSUdfRUlTQSBpcyBub3Qgc2V0Ci1DT05GSUdfTU1VPXkKLQotIwotIyBQQ0NBUkQgKFBDTUNJQS9DYXJkQnVzKSBzdXBwb3J0Ci0jCi0KLSMKLSMgRXhlY3V0YWJsZSBmaWxlIGZvcm1hdHMKLSMKLUNPTkZJR19CSU5GTVRfRUxGPXkKLUNPTkZJR19CSU5GTVRfTUlTQz1tCi1DT05GSUdfVFJBRF9TSUdOQUxTPXkKLQotIwotIyBQb3dlciBtYW5hZ2VtZW50IG9wdGlvbnMKLSMKLUNPTkZJR19QTT15Ci0jIENPTkZJR19QTV9MRUdBQ1kgaXMgbm90IHNldAotIyBDT05GSUdfUE1fREVCVUcgaXMgbm90IHNldAotIyBDT05GSUdfU1VTUEVORCBpcyBub3Qgc2V0Ci0KLSMKLSMgTmV0d29ya2luZwotIwotQ09ORklHX05FVD15Ci0KLSMKLSMgTmV0d29ya2luZyBvcHRpb25zCi0jCi1DT05GSUdfUEFDS0VUPXkKLUNPTkZJR19QQUNLRVRfTU1BUD15Ci1DT05GSUdfVU5JWD15Ci1DT05GSUdfWEZSTT15Ci1DT05GSUdfWEZSTV9VU0VSPW0KLSMgQ09ORklHX1hGUk1fU1VCX1BPTElDWSBpcyBub3Qgc2V0Ci1DT05GSUdfWEZSTV9NSUdSQVRFPXkKLUNPTkZJR19ORVRfS0VZPXkKLUNPTkZJR19ORVRfS0VZX01JR1JBVEU9eQotQ09ORklHX0lORVQ9eQotQ09ORklHX0lQX01VTFRJQ0FTVD15Ci0jIENPTkZJR19JUF9BRFZBTkNFRF9ST1VURVIgaXMgbm90IHNldAotQ09ORklHX0lQX0ZJQl9IQVNIPXkKLUNPTkZJR19JUF9QTlA9eQotIyBDT05GSUdfSVBfUE5QX0RIQ1AgaXMgbm90IHNldAotQ09ORklHX0lQX1BOUF9CT09UUD15Ci0jIENPTkZJR19JUF9QTlBfUkFSUCBpcyBub3Qgc2V0Ci0jIENPTkZJR19ORVRfSVBJUCBpcyBub3Qgc2V0Ci0jIENPTkZJR19ORVRfSVBHUkUgaXMgbm90IHNldAotIyBDT05GSUdfSVBfTVJPVVRFIGlzIG5vdCBzZXQKLSMgQ09ORklHX0FSUEQgaXMgbm90IHNldAotIyBDT05GSUdfU1lOX0NPT0tJRVMgaXMgbm90IHNldAotQ09ORklHX0lORVRfQUg9bQotQ09ORklHX0lORVRfRVNQPW0KLUNPTkZJR19JTkVUX0lQQ09NUD1tCi1DT05GSUdfSU5FVF9YRlJNX1RVTk5FTD1tCi1DT05GSUdfSU5FVF9UVU5ORUw9bQotQ09ORklHX0lORVRfWEZSTV9NT0RFX1RSQU5TUE9SVD1tCi1DT05GSUdfSU5FVF9YRlJNX01PREVfVFVOTkVMPW0KLUNPTkZJR19JTkVUX1hGUk1fTU9ERV9CRUVUPW0KLUNPTkZJR19JTkVUX0RJQUc9eQotQ09ORklHX0lORVRfVENQX0RJQUc9eQotIyBDT05GSUdfVENQX0NPTkdfQURWQU5DRUQgaXMgbm90IHNldAotQ09ORklHX1RDUF9DT05HX0NVQklDPXkKLUNPTkZJR19ERUZBVUxUX1RDUF9DT05HPSJjdWJpYyIKLUNPTkZJR19UQ1BfTUQ1U0lHPXkKLUNPTkZJR19JUF9WUz1tCi0jIENPTkZJR19JUF9WU19ERUJVRyBpcyBub3Qgc2V0Ci1DT05GSUdfSVBfVlNfVEFCX0JJVFM9MTIKLQotIwotIyBJUFZTIHRyYW5zcG9ydCBwcm90b2NvbCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0Ci0jCi1DT05GSUdfSVBfVlNfUFJPVE9fVENQPXkKLUNPTkZJR19JUF9WU19QUk9UT19VRFA9eQotQ09ORklHX0lQX1ZTX1BST1RPX0VTUD15Ci1DT05GSUdfSVBfVlNfUFJPVE9fQUg9eQotCi0jCi0jIElQVlMgc2NoZWR1bGVyCi0jCi1DT05GSUdfSVBfVlNfUlI9bQotQ09ORklHX0lQX1ZTX1dSUj1tCi1DT05GSUdfSVBfVlNfTEM9bQotQ09ORklHX0lQX1ZTX1dMQz1tCi1DT05GSUdfSVBfVlNfTEJMQz1tCi1DT05GSUdfSVBfVlNfTEJMQ1I9bQotQ09ORklHX0lQX1ZTX0RIPW0KLUNPTkZJR19JUF9WU19TSD1tCi1DT05GSUdfSVBfVlNfU0VEPW0KLUNPTkZJR19JUF9WU19OUT1tCi0KLSMKLSMgSVBWUyBhcHBsaWNhdGlvbiBoZWxwZXIKLSMKLUNPTkZJR19JUF9WU19GVFA9bQotQ09ORklHX0lQVjY9bQotQ09ORklHX0lQVjZfUFJJVkFDWT15Ci1DT05GSUdfSVBWNl9ST1VURVJfUFJFRj15Ci1DT05GSUdfSVBWNl9ST1VURV9JTkZPPXkKLUNPTkZJR19JUFY2X09QVElNSVNUSUNfREFEPXkKLUNPTkZJR19JTkVUNl9BSD1tCi1DT05GSUdfSU5FVDZfRVNQPW0KLUNPTkZJR19JTkVUNl9JUENPTVA9bQotQ09ORklHX0lQVjZfTUlQNj1tCi1DT05GSUdfSU5FVDZfWEZSTV9UVU5ORUw9bQotQ09ORklHX0lORVQ2X1RVTk5FTD1tCi1DT05GSUdfSU5FVDZfWEZSTV9NT0RFX1RSQU5TUE9SVD1tCi1DT05GSUdfSU5FVDZfWEZSTV9NT0RFX1RVTk5FTD1tCi1DT05GSUdfSU5FVDZfWEZSTV9NT0RFX0JFRVQ9bQotQ09ORklHX0lORVQ2X1hGUk1fTU9ERV9ST1VURU9QVElNSVpBVElPTj1tCi1DT05GSUdfSVBWNl9TSVQ9bQotQ09ORklHX0lQVjZfVFVOTkVMPW0KLUNPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFUz15Ci1DT05GSUdfSVBWNl9TVUJUUkVFUz15Ci1DT05GSUdfTkVUV09SS19TRUNNQVJLPXkKLUNPTkZJR19ORVRGSUxURVI9eQotIyBDT05GSUdfTkVURklMVEVSX0RFQlVHIGlzIG5vdCBzZXQKLQotIwotIyBDb3JlIE5ldGZpbHRlciBDb25maWd1cmF0aW9uCi0jCi1DT05GSUdfTkVURklMVEVSX05FVExJTks9bQotQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LX1FVRVVFPW0KLUNPTkZJR19ORVRGSUxURVJfTkVUTElOS19MT0c9bQotQ09ORklHX05GX0NPTk5UUkFDS19FTkFCTEVEPW0KLUNPTkZJR19ORl9DT05OVFJBQ0s9bQotQ09ORklHX05GX0NUX0FDQ1Q9eQotQ09ORklHX05GX0NPTk5UUkFDS19NQVJLPXkKLUNPTkZJR19ORl9DT05OVFJBQ0tfU0VDTUFSSz15Ci1DT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UUz15Ci1DT05GSUdfTkZfQ1RfUFJPVE9fR1JFPW0KLUNPTkZJR19ORl9DVF9QUk9UT19TQ1RQPW0KLUNPTkZJR19ORl9DVF9QUk9UT19VRFBMSVRFPW0KLUNPTkZJR19ORl9DT05OVFJBQ0tfQU1BTkRBPW0KLUNPTkZJR19ORl9DT05OVFJBQ0tfRlRQPW0KLUNPTkZJR19ORl9DT05OVFJBQ0tfSDMyMz1tCi1DT05GSUdfTkZfQ09OTlRSQUNLX0lSQz1tCi0jIENPTkZJR19ORl9DT05OVFJBQ0tfTkVUQklPU19OUyBpcyBub3Qgc2V0Ci1DT05GSUdfTkZfQ09OTlRSQUNLX1BQVFA9bQotQ09ORklHX05GX0NPTk5UUkFDS19TQU5FPW0KLUNPTkZJR19ORl9DT05OVFJBQ0tfU0lQPW0KLUNPTkZJR19ORl9DT05OVFJBQ0tfVEZUUD1tCi1DT05GSUdfTkZfQ1RfTkVUTElOSz1tCi1DT05GSUdfTkVURklMVEVSX1hUQUJMRVM9bQotQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfQ0xBU1NJRlk9bQotQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfQ09OTk1BUks9bQotQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfRFNDUD1tCi1DT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9NQVJLPW0KLUNPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX05GUVVFVUU9bQotQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfTkZMT0c9bQotQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfTk9UUkFDSz1tCi1DT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9UUkFDRT1tCi1DT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9TRUNNQVJLPW0KLUNPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX0NPTk5TRUNNQVJLPW0KLUNPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX1RDUE1TUz1tCi1DT05GSUdfTkVURklMVEVSX1hUX01BVENIX0NPTU1FTlQ9bQotQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9DT05OQllURVM9bQotQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9DT05OTElNSVQ9bQotQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9DT05OTUFSSz1tCi1DT05GSUdfTkVURklMVEVSX1hUX01BVENIX0NPTk5UUkFDSz1tCi1DT05GSUdfTkVURklMVEVSX1hUX01BVENIX0RDQ1A9bQotQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9EU0NQPW0KLUNPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfRVNQPW0KLUNPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfSEVMUEVSPW0KLUNPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfTEVOR1RIPW0KLUNPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfTElNSVQ9bQotQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9NQUM9bQotQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9NQVJLPW0KLUNPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfUE9MSUNZPW0KLUNPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfTVVMVElQT1JUPW0KLUNPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfUEtUVFlQRT1tCi1DT05GSUdfTkVURklMVEVSX1hUX01BVENIX1FVT1RBPW0KLUNPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfUkVBTE09bQotQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9TQ1RQPW0KLUNPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfU1RBVEU9bQotQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9TVEFUSVNUSUM9bQotQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9TVFJJTkc9bQotQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9UQ1BNU1M9bQotQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9VMzI9bQotQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9IQVNITElNSVQ9bQotCi0jCi0jIElQOiBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvbgotIwotQ09ORklHX05GX0NPTk5UUkFDS19JUFY0PW0KLUNPTkZJR19ORl9DT05OVFJBQ0tfUFJPQ19DT01QQVQ9eQotQ09ORklHX0lQX05GX1FVRVVFPW0KLUNPTkZJR19JUF9ORl9JUFRBQkxFUz1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfSVBSQU5HRT1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfVE9TPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9SRUNFTlQ9bQotQ09ORklHX0lQX05GX01BVENIX0VDTj1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfQUg9bQotQ09ORklHX0lQX05GX01BVENIX1RUTD1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfT1dORVI9bQotQ09ORklHX0lQX05GX01BVENIX0FERFJUWVBFPW0KLUNPTkZJR19JUF9ORl9GSUxURVI9bQotQ09ORklHX0lQX05GX1RBUkdFVF9SRUpFQ1Q9bQotQ09ORklHX0lQX05GX1RBUkdFVF9MT0c9bQotQ09ORklHX0lQX05GX1RBUkdFVF9VTE9HPW0KLUNPTkZJR19ORl9OQVQ9bQotQ09ORklHX05GX05BVF9ORUVERUQ9eQotQ09ORklHX0lQX05GX1RBUkdFVF9NQVNRVUVSQURFPW0KLUNPTkZJR19JUF9ORl9UQVJHRVRfUkVESVJFQ1Q9bQotQ09ORklHX0lQX05GX1RBUkdFVF9ORVRNQVA9bQotQ09ORklHX0lQX05GX1RBUkdFVF9TQU1FPW0KLUNPTkZJR19ORl9OQVRfU05NUF9CQVNJQz1tCi1DT05GSUdfTkZfTkFUX1BST1RPX0dSRT1tCi1DT05GSUdfTkZfTkFUX0ZUUD1tCi1DT05GSUdfTkZfTkFUX0lSQz1tCi1DT05GSUdfTkZfTkFUX1RGVFA9bQotQ09ORklHX05GX05BVF9BTUFOREE9bQotQ09ORklHX05GX05BVF9QUFRQPW0KLUNPTkZJR19ORl9OQVRfSDMyMz1tCi1DT05GSUdfTkZfTkFUX1NJUD1tCi1DT05GSUdfSVBfTkZfTUFOR0xFPW0KLUNPTkZJR19JUF9ORl9UQVJHRVRfVE9TPW0KLUNPTkZJR19JUF9ORl9UQVJHRVRfRUNOPW0KLUNPTkZJR19JUF9ORl9UQVJHRVRfVFRMPW0KLUNPTkZJR19JUF9ORl9UQVJHRVRfQ0xVU1RFUklQPW0KLUNPTkZJR19JUF9ORl9SQVc9bQotQ09ORklHX0lQX05GX0FSUFRBQkxFUz1tCi1DT05GSUdfSVBfTkZfQVJQRklMVEVSPW0KLUNPTkZJR19JUF9ORl9BUlBfTUFOR0xFPW0KLQotIwotIyBJUHY2OiBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvbiAoRVhQRVJJTUVOVEFMKQotIwotQ09ORklHX05GX0NPTk5UUkFDS19JUFY2PW0KLUNPTkZJR19JUDZfTkZfUVVFVUU9bQotQ09ORklHX0lQNl9ORl9JUFRBQkxFUz1tCi1DT05GSUdfSVA2X05GX01BVENIX1JUPW0KLUNPTkZJR19JUDZfTkZfTUFUQ0hfT1BUUz1tCi1DT05GSUdfSVA2X05GX01BVENIX0ZSQUc9bQotQ09ORklHX0lQNl9ORl9NQVRDSF9ITD1tCi1DT05GSUdfSVA2X05GX01BVENIX09XTkVSPW0KLUNPTkZJR19JUDZfTkZfTUFUQ0hfSVBWNkhFQURFUj1tCi1DT05GSUdfSVA2X05GX01BVENIX0FIPW0KLUNPTkZJR19JUDZfTkZfTUFUQ0hfTUg9bQotQ09ORklHX0lQNl9ORl9NQVRDSF9FVUk2ND1tCi1DT05GSUdfSVA2X05GX0ZJTFRFUj1tCi1DT05GSUdfSVA2X05GX1RBUkdFVF9MT0c9bQotQ09ORklHX0lQNl9ORl9UQVJHRVRfUkVKRUNUPW0KLUNPTkZJR19JUDZfTkZfTUFOR0xFPW0KLUNPTkZJR19JUDZfTkZfVEFSR0VUX0hMPW0KLUNPTkZJR19JUDZfTkZfUkFXPW0KLSMgQ09ORklHX0lQX0RDQ1AgaXMgbm90IHNldAotQ09ORklHX0lQX1NDVFA9bQotIyBDT05GSUdfU0NUUF9EQkdfTVNHIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NDVFBfREJHX09CSkNOVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19TQ1RQX0hNQUNfTk9ORSBpcyBub3Qgc2V0Ci0jIENPTkZJR19TQ1RQX0hNQUNfU0hBMSBpcyBub3Qgc2V0Ci1DT05GSUdfU0NUUF9ITUFDX01ENT15Ci0jIENPTkZJR19USVBDIGlzIG5vdCBzZXQKLSMgQ09ORklHX0FUTSBpcyBub3Qgc2V0Ci0jIENPTkZJR19CUklER0UgaXMgbm90IHNldAotIyBDT05GSUdfVkxBTl84MDIxUSBpcyBub3Qgc2V0Ci0jIENPTkZJR19ERUNORVQgaXMgbm90IHNldAotIyBDT05GSUdfTExDMiBpcyBub3Qgc2V0Ci0jIENPTkZJR19JUFggaXMgbm90IHNldAotIyBDT05GSUdfQVRBTEsgaXMgbm90IHNldAotIyBDT05GSUdfWDI1IGlzIG5vdCBzZXQKLSMgQ09ORklHX0xBUEIgaXMgbm90IHNldAotIyBDT05GSUdfRUNPTkVUIGlzIG5vdCBzZXQKLSMgQ09ORklHX1dBTl9ST1VURVIgaXMgbm90IHNldAotCi0jCi0jIFFvUyBhbmQvb3IgZmFpciBxdWV1ZWluZwotIwotQ09ORklHX05FVF9TQ0hFRD15Ci1DT05GSUdfTkVUX1NDSF9GSUZPPXkKLQotIwotIyBRdWV1ZWluZy9TY2hlZHVsaW5nCi0jCi1DT05GSUdfTkVUX1NDSF9DQlE9bQotQ09ORklHX05FVF9TQ0hfSFRCPW0KLUNPTkZJR19ORVRfU0NIX0hGU0M9bQotQ09ORklHX05FVF9TQ0hfUFJJTz1tCi1DT05GSUdfTkVUX1NDSF9SUj1tCi1DT05GSUdfTkVUX1NDSF9SRUQ9bQotQ09ORklHX05FVF9TQ0hfU0ZRPW0KLUNPTkZJR19ORVRfU0NIX1RFUUw9bQotQ09ORklHX05FVF9TQ0hfVEJGPW0KLUNPTkZJR19ORVRfU0NIX0dSRUQ9bQotQ09ORklHX05FVF9TQ0hfRFNNQVJLPW0KLUNPTkZJR19ORVRfU0NIX05FVEVNPW0KLUNPTkZJR19ORVRfU0NIX0lOR1JFU1M9bQotCi0jCi0jIENsYXNzaWZpY2F0aW9uCi0jCi1DT05GSUdfTkVUX0NMUz15Ci1DT05GSUdfTkVUX0NMU19CQVNJQz1tCi1DT05GSUdfTkVUX0NMU19UQ0lOREVYPW0KLUNPTkZJR19ORVRfQ0xTX1JPVVRFND1tCi1DT05GSUdfTkVUX0NMU19ST1VURT15Ci1DT05GSUdfTkVUX0NMU19GVz1tCi1DT05GSUdfTkVUX0NMU19VMzI9bQotIyBDT05GSUdfQ0xTX1UzMl9QRVJGIGlzIG5vdCBzZXQKLSMgQ09ORklHX0NMU19VMzJfTUFSSyBpcyBub3Qgc2V0Ci1DT05GSUdfTkVUX0NMU19SU1ZQPW0KLUNPTkZJR19ORVRfQ0xTX1JTVlA2PW0KLSMgQ09ORklHX05FVF9FTUFUQ0ggaXMgbm90IHNldAotQ09ORklHX05FVF9DTFNfQUNUPXkKLUNPTkZJR19ORVRfQUNUX1BPTElDRT15Ci1DT05GSUdfTkVUX0FDVF9HQUNUPW0KLUNPTkZJR19HQUNUX1BST0I9eQotQ09ORklHX05FVF9BQ1RfTUlSUkVEPW0KLUNPTkZJR19ORVRfQUNUX0lQVD1tCi1DT05GSUdfTkVUX0FDVF9QRURJVD1tCi1DT05GSUdfTkVUX0FDVF9TSU1QPW0KLUNPTkZJR19ORVRfQ0xTX1BPTElDRT15Ci0jIENPTkZJR19ORVRfQ0xTX0lORCBpcyBub3Qgc2V0Ci0KLSMKLSMgTmV0d29yayB0ZXN0aW5nCi0jCi0jIENPTkZJR19ORVRfUEtUR0VOIGlzIG5vdCBzZXQKLSMgQ09ORklHX0hBTVJBRElPIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lSREEgaXMgbm90IHNldAotIyBDT05GSUdfQlQgaXMgbm90IHNldAotIyBDT05GSUdfQUZfUlhSUEMgaXMgbm90IHNldAotQ09ORklHX0ZJQl9SVUxFUz15Ci0KLSMKLSMgV2lyZWxlc3MKLSMKLUNPTkZJR19DRkc4MDIxMT1tCi1DT05GSUdfV0lSRUxFU1NfRVhUPXkKLUNPTkZJR19NQUM4MDIxMT1tCi0jIENPTkZJR19NQUM4MDIxMV9ERUJVRyBpcyBub3Qgc2V0Ci1DT05GSUdfSUVFRTgwMjExPW0KLSMgQ09ORklHX0lFRUU4MDIxMV9ERUJVRyBpcyBub3Qgc2V0Ci1DT05GSUdfSUVFRTgwMjExX0NSWVBUX1dFUD1tCi1DT05GSUdfSUVFRTgwMjExX0NSWVBUX0NDTVA9bQotQ09ORklHX0lFRUU4MDIxMV9DUllQVF9US0lQPW0KLUNPTkZJR19JRUVFODAyMTFfU09GVE1BQz1tCi0jIENPTkZJR19JRUVFODAyMTFfU09GVE1BQ19ERUJVRyBpcyBub3Qgc2V0Ci1DT05GSUdfUkZLSUxMPW0KLUNPTkZJR19SRktJTExfSU5QVVQ9bQotIyBDT05GSUdfTkVUXzlQIGlzIG5vdCBzZXQKLQotIwotIyBEZXZpY2UgRHJpdmVycwotIwotCi0jCi0jIEdlbmVyaWMgRHJpdmVyIE9wdGlvbnMKLSMKLUNPTkZJR19TVEFOREFMT05FPXkKLUNPTkZJR19QUkVWRU5UX0ZJUk1XQVJFX0JVSUxEPXkKLSMgQ09ORklHX1NZU19IWVBFUlZJU09SIGlzIG5vdCBzZXQKLUNPTkZJR19DT05ORUNUT1I9bQotIyBDT05GSUdfTVREIGlzIG5vdCBzZXQKLSMgQ09ORklHX1BBUlBPUlQgaXMgbm90IHNldAotQ09ORklHX0JMS19ERVY9eQotIyBDT05GSUdfQkxLX0RFVl9DT1dfQ09NTU9OIGlzIG5vdCBzZXQKLSMgQ09ORklHX0JMS19ERVZfTE9PUCBpcyBub3Qgc2V0Ci0jIENPTkZJR19CTEtfREVWX05CRCBpcyBub3Qgc2V0Ci0jIENPTkZJR19CTEtfREVWX1JBTSBpcyBub3Qgc2V0Ci1DT05GSUdfQ0RST01fUEtUQ0RWRD1tCi1DT05GSUdfQ0RST01fUEtUQ0RWRF9CVUZGRVJTPTgKLSMgQ09ORklHX0NEUk9NX1BLVENEVkRfV0NBQ0hFIGlzIG5vdCBzZXQKLUNPTkZJR19BVEFfT1ZFUl9FVEg9bQotIyBDT05GSUdfTUlTQ19ERVZJQ0VTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lERSBpcyBub3Qgc2V0Ci0KLSMKLSMgU0NTSSBkZXZpY2Ugc3VwcG9ydAotIwotQ09ORklHX1JBSURfQVRUUlM9bQotQ09ORklHX1NDU0k9eQotQ09ORklHX1NDU0lfRE1BPXkKLUNPTkZJR19TQ1NJX1RHVD1tCi0jIENPTkZJR19TQ1NJX05FVExJTksgaXMgbm90IHNldAotQ09ORklHX1NDU0lfUFJPQ19GUz15Ci0KLSMKLSMgU0NTSSBzdXBwb3J0IHR5cGUgKGRpc2ssIHRhcGUsIENELVJPTSkKLSMKLUNPTkZJR19CTEtfREVWX1NEPXkKLUNPTkZJR19DSFJfREVWX1NUPXkKLSMgQ09ORklHX0NIUl9ERVZfT1NTVCBpcyBub3Qgc2V0Ci1DT05GSUdfQkxLX0RFVl9TUj15Ci0jIENPTkZJR19CTEtfREVWX1NSX1ZFTkRPUiBpcyBub3Qgc2V0Ci0jIENPTkZJR19DSFJfREVWX1NHIGlzIG5vdCBzZXQKLUNPTkZJR19DSFJfREVWX1NDSD1tCi0KLSMKLSMgU29tZSBTQ1NJIGRldmljZXMgKGUuZy4gQ0QganVrZWJveCkgc3VwcG9ydCBtdWx0aXBsZSBMVU5zCi0jCi0jIENPTkZJR19TQ1NJX01VTFRJX0xVTiBpcyBub3Qgc2V0Ci1DT05GSUdfU0NTSV9DT05TVEFOVFM9eQotIyBDT05GSUdfU0NTSV9MT0dHSU5HIGlzIG5vdCBzZXQKLUNPTkZJR19TQ1NJX1NDQU5fQVNZTkM9eQotQ09ORklHX1NDU0lfV0FJVF9TQ0FOPW0KLQotIwotIyBTQ1NJIFRyYW5zcG9ydHMKLSMKLUNPTkZJR19TQ1NJX1NQSV9BVFRSUz1tCi0jIENPTkZJR19TQ1NJX0ZDX0FUVFJTIGlzIG5vdCBzZXQKLUNPTkZJR19TQ1NJX0lTQ1NJX0FUVFJTPW0KLSMgQ09ORklHX1NDU0lfU0FTX0xJQlNBUyBpcyBub3Qgc2V0Ci1DT05GSUdfU0NTSV9MT1dMRVZFTD15Ci1DT05GSUdfSVNDU0lfVENQPW0KLUNPTkZJR19TR0lXRDkzX1NDU0k9eQotIyBDT05GSUdfU0NTSV9ERUJVRyBpcyBub3Qgc2V0Ci0jIENPTkZJR19BVEEgaXMgbm90IHNldAotIyBDT05GSUdfTUQgaXMgbm90IHNldAotQ09ORklHX05FVERFVklDRVM9eQotIyBDT05GSUdfTkVUREVWSUNFU19NVUxUSVFVRVVFIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lGQiBpcyBub3Qgc2V0Ci1DT05GSUdfRFVNTVk9bQotQ09ORklHX0JPTkRJTkc9bQotQ09ORklHX01BQ1ZMQU49bQotQ09ORklHX0VRVUFMSVpFUj1tCi1DT05GSUdfVFVOPW0KLUNPTkZJR19QSFlMSUI9bQotCi0jCi0jIE1JSSBQSFkgZGV2aWNlIGRyaXZlcnMKLSMKLUNPTkZJR19NQVJWRUxMX1BIWT1tCi1DT05GSUdfREFWSUNPTV9QSFk9bQotQ09ORklHX1FTRU1JX1BIWT1tCi1DT05GSUdfTFhUX1BIWT1tCi1DT05GSUdfQ0lDQURBX1BIWT1tCi0jIENPTkZJR19WSVRFU1NFX1BIWSBpcyBub3Qgc2V0Ci0jIENPTkZJR19TTVNDX1BIWSBpcyBub3Qgc2V0Ci0jIENPTkZJR19CUk9BRENPTV9QSFkgaXMgbm90IHNldAotIyBDT05GSUdfSUNQTFVTX1BIWSBpcyBub3Qgc2V0Ci0jIENPTkZJR19GSVhFRF9QSFkgaXMgbm90IHNldAotQ09ORklHX05FVF9FVEhFUk5FVD15Ci0jIENPTkZJR19NSUkgaXMgbm90IHNldAotIyBDT05GSUdfQVg4ODc5NiBpcyBub3Qgc2V0Ci0jIENPTkZJR19ETTkwMDAgaXMgbm90IHNldAotQ09ORklHX1NHSVNFRVE9eQotIyBDT05GSUdfTkVUREVWXzEwMDAgaXMgbm90IHNldAotIyBDT05GSUdfTkVUREVWXzEwMDAwIGlzIG5vdCBzZXQKLQotIwotIyBXaXJlbGVzcyBMQU4KLSMKLUNPTkZJR19XTEFOX1BSRTgwMjExPXkKLUNPTkZJR19TVFJJUD1tCi1DT05GSUdfV0xBTl84MDIxMT15Ci0jIENPTkZJR19MSUJFUlRBUyBpcyBub3Qgc2V0Ci1DT05GSUdfSE9TVEFQPW0KLSMgQ09ORklHX0hPU1RBUF9GSVJNV0FSRSBpcyBub3Qgc2V0Ci0jIENPTkZJR19XQU4gaXMgbm90IHNldAotIyBDT05GSUdfUFBQIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NMSVAgaXMgbm90IHNldAotIyBDT05GSUdfU0hBUEVSIGlzIG5vdCBzZXQKLSMgQ09ORklHX05FVENPTlNPTEUgaXMgbm90IHNldAotIyBDT05GSUdfTkVUUE9MTCBpcyBub3Qgc2V0Ci0jIENPTkZJR19ORVRfUE9MTF9DT05UUk9MTEVSIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lTRE4gaXMgbm90IHNldAotIyBDT05GSUdfUEhPTkUgaXMgbm90IHNldAotCi0jCi0jIElucHV0IGRldmljZSBzdXBwb3J0Ci0jCi1DT05GSUdfSU5QVVQ9eQotIyBDT05GSUdfSU5QVVRfRkZfTUVNTEVTUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19JTlBVVF9QT0xMREVWIGlzIG5vdCBzZXQKLQotIwotIyBVc2VybGFuZCBpbnRlcmZhY2VzCi0jCi1DT05GSUdfSU5QVVRfTU9VU0VERVY9bQotQ09ORklHX0lOUFVUX01PVVNFREVWX1BTQVVYPXkKLUNPTkZJR19JTlBVVF9NT1VTRURFVl9TQ1JFRU5fWD0xMDI0Ci1DT05GSUdfSU5QVVRfTU9VU0VERVZfU0NSRUVOX1k9NzY4Ci0jIENPTkZJR19JTlBVVF9KT1lERVYgaXMgbm90IHNldAotIyBDT05GSUdfSU5QVVRfVFNERVYgaXMgbm90IHNldAotIyBDT05GSUdfSU5QVVRfRVZERVYgaXMgbm90IHNldAotIyBDT05GSUdfSU5QVVRfRVZCVUcgaXMgbm90IHNldAotCi0jCi0jIElucHV0IERldmljZSBEcml2ZXJzCi0jCi1DT05GSUdfSU5QVVRfS0VZQk9BUkQ9eQotQ09ORklHX0tFWUJPQVJEX0FUS0JEPXkKLSMgQ09ORklHX0tFWUJPQVJEX1NVTktCRCBpcyBub3Qgc2V0Ci0jIENPTkZJR19LRVlCT0FSRF9MS0tCRCBpcyBub3Qgc2V0Ci0jIENPTkZJR19LRVlCT0FSRF9YVEtCRCBpcyBub3Qgc2V0Ci0jIENPTkZJR19LRVlCT0FSRF9ORVdUT04gaXMgbm90IHNldAotIyBDT05GSUdfS0VZQk9BUkRfU1RPV0FXQVkgaXMgbm90IHNldAotQ09ORklHX0lOUFVUX01PVVNFPXkKLUNPTkZJR19NT1VTRV9QUzI9bQotIyBDT05GSUdfTU9VU0VfUFMyX0FMUFMgaXMgbm90IHNldAotQ09ORklHX01PVVNFX1BTMl9MT0dJUFMyUFA9eQotIyBDT05GSUdfTU9VU0VfUFMyX1NZTkFQVElDUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19NT1VTRV9QUzJfTElGRUJPT0sgaXMgbm90IHNldAotQ09ORklHX01PVVNFX1BTMl9UUkFDS1BPSU5UPXkKLSMgQ09ORklHX01PVVNFX1BTMl9UT1VDSEtJVCBpcyBub3Qgc2V0Ci1DT05GSUdfTU9VU0VfU0VSSUFMPW0KLSMgQ09ORklHX01PVVNFX1ZTWFhYQUEgaXMgbm90IHNldAotIyBDT05GSUdfSU5QVVRfSk9ZU1RJQ0sgaXMgbm90IHNldAotIyBDT05GSUdfSU5QVVRfVEFCTEVUIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lOUFVUX1RPVUNIU0NSRUVOIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lOUFVUX01JU0MgaXMgbm90IHNldAotCi0jCi0jIEhhcmR3YXJlIEkvTyBwb3J0cwotIwotQ09ORklHX1NFUklPPXkKLUNPTkZJR19TRVJJT19JODA0Mj15Ci1DT05GSUdfU0VSSU9fU0VSUE9SVD15Ci1DT05GSUdfU0VSSU9fTElCUFMyPXkKLUNPTkZJR19TRVJJT19SQVc9bQotIyBDT05GSUdfR0FNRVBPUlQgaXMgbm90IHNldAotCi0jCi0jIENoYXJhY3RlciBkZXZpY2VzCi0jCi1DT05GSUdfVlQ9eQotQ09ORklHX1ZUX0NPTlNPTEU9eQotQ09ORklHX0hXX0NPTlNPTEU9eQotQ09ORklHX1ZUX0hXX0NPTlNPTEVfQklORElORz15Ci0jIENPTkZJR19TRVJJQUxfTk9OU1RBTkRBUkQgaXMgbm90IHNldAotCi0jCi0jIFNlcmlhbCBkcml2ZXJzCi0jCi0jIENPTkZJR19TRVJJQUxfODI1MCBpcyBub3Qgc2V0Ci0KLSMKLSMgTm9uLTgyNTAgc2VyaWFsIHBvcnQgc3VwcG9ydAotIwotQ09ORklHX1NFUklBTF9JUDIyX1pJTE9HPW0KLUNPTkZJR19TRVJJQUxfQ09SRT1tCi1DT05GSUdfVU5JWDk4X1BUWVM9eQotQ09ORklHX0xFR0FDWV9QVFlTPXkKLUNPTkZJR19MRUdBQ1lfUFRZX0NPVU5UPTI1NgotIyBDT05GSUdfSVBNSV9IQU5ETEVSIGlzIG5vdCBzZXQKLUNPTkZJR19XQVRDSERPRz15Ci0jIENPTkZJR19XQVRDSERPR19OT1dBWU9VVCBpcyBub3Qgc2V0Ci0KLSMKLSMgV2F0Y2hkb2cgRGV2aWNlIERyaXZlcnMKLSMKLSMgQ09ORklHX1NPRlRfV0FUQ0hET0cgaXMgbm90IHNldAotQ09ORklHX0lORFlET0c9bQotIyBDT05GSUdfSFdfUkFORE9NIGlzIG5vdCBzZXQKLSMgQ09ORklHX1JUQyBpcyBub3Qgc2V0Ci1DT05GSUdfU0dJX0RTMTI4Nj1tCi0jIENPTkZJR19SMzk2NCBpcyBub3Qgc2V0Ci1DT05GSUdfUkFXX0RSSVZFUj1tCi1DT05GSUdfTUFYX1JBV19ERVZTPTI1NgotIyBDT05GSUdfVENHX1RQTSBpcyBub3Qgc2V0Ci0jIENPTkZJR19JMkMgaXMgbm90IHNldAotCi0jCi0jIFNQSSBzdXBwb3J0Ci0jCi0jIENPTkZJR19TUEkgaXMgbm90IHNldAotIyBDT05GSUdfU1BJX01BU1RFUiBpcyBub3Qgc2V0Ci0jIENPTkZJR19XMSBpcyBub3Qgc2V0Ci0jIENPTkZJR19QT1dFUl9TVVBQTFkgaXMgbm90IHNldAotIyBDT05GSUdfSFdNT04gaXMgbm90IHNldAotCi0jCi0jIE11bHRpZnVuY3Rpb24gZGV2aWNlIGRyaXZlcnMKLSMKLSMgQ09ORklHX01GRF9TTTUwMSBpcyBub3Qgc2V0Ci0KLSMKLSMgTXVsdGltZWRpYSBkZXZpY2VzCi0jCi0jIENPTkZJR19WSURFT19ERVYgaXMgbm90IHNldAotIyBDT05GSUdfRFZCX0NPUkUgaXMgbm90IHNldAotIyBDT05GSUdfREFCIGlzIG5vdCBzZXQKLQotIwotIyBHcmFwaGljcyBzdXBwb3J0Ci0jCi0jIENPTkZJR19CQUNLTElHSFRfTENEX1NVUFBPUlQgaXMgbm90IHNldAotCi0jCi0jIERpc3BsYXkgZGV2aWNlIHN1cHBvcnQKLSMKLSMgQ09ORklHX0RJU1BMQVlfU1VQUE9SVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19WR0FTVEFURSBpcyBub3Qgc2V0Ci0jIENPTkZJR19WSURFT19PVVRQVVRfQ09OVFJPTCBpcyBub3Qgc2V0Ci0jIENPTkZJR19GQiBpcyBub3Qgc2V0Ci0KLSMKLSMgQ29uc29sZSBkaXNwbGF5IGRyaXZlciBzdXBwb3J0Ci0jCi0jIENPTkZJR19WR0FfQ09OU09MRSBpcyBub3Qgc2V0Ci1DT05GSUdfU0dJX05FV1BPUlRfQ09OU09MRT15Ci1DT05GSUdfRFVNTVlfQ09OU09MRT15Ci1DT05GSUdfRk9OVF84eDE2PXkKLUNPTkZJR19MT0dPPXkKLSMgQ09ORklHX0xPR09fTElOVVhfTU9OTyBpcyBub3Qgc2V0Ci0jIENPTkZJR19MT0dPX0xJTlVYX1ZHQTE2IGlzIG5vdCBzZXQKLSMgQ09ORklHX0xPR09fTElOVVhfQ0xVVDIyNCBpcyBub3Qgc2V0Ci1DT05GSUdfTE9HT19TR0lfQ0xVVDIyND15Ci0KLSMKLSMgU291bmQKLSMKLSMgQ09ORklHX1NPVU5EIGlzIG5vdCBzZXQKLUNPTkZJR19ISURfU1VQUE9SVD15Ci1DT05GSUdfSElEPXkKLSMgQ09ORklHX0hJRF9ERUJVRyBpcyBub3Qgc2V0Ci1DT05GSUdfVVNCX1NVUFBPUlQ9eQotIyBDT05GSUdfVVNCX0FSQ0hfSEFTX0hDRCBpcyBub3Qgc2V0Ci0jIENPTkZJR19VU0JfQVJDSF9IQVNfT0hDSSBpcyBub3Qgc2V0Ci0jIENPTkZJR19VU0JfQVJDSF9IQVNfRUhDSSBpcyBub3Qgc2V0Ci0KLSMKLSMgTk9URTogVVNCX1NUT1JBR0UgZW5hYmxlcyBTQ1NJLCBhbmQgJ1NDU0kgZGlzayBzdXBwb3J0JwotIwotCi0jCi0jIFVTQiBHYWRnZXQgU3VwcG9ydAotIwotIyBDT05GSUdfVVNCX0dBREdFVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19NTUMgaXMgbm90IHNldAotIyBDT05GSUdfTkVXX0xFRFMgaXMgbm90IHNldAotIyBDT05GSUdfUlRDX0NMQVNTIGlzIG5vdCBzZXQKLQotIwotIyBETUEgRW5naW5lIHN1cHBvcnQKLSMKLSMgQ09ORklHX0RNQV9FTkdJTkUgaXMgbm90IHNldAotCi0jCi0jIERNQSBDbGllbnRzCi0jCi0KLSMKLSMgRE1BIERldmljZXMKLSMKLQotIwotIyBVc2Vyc3BhY2UgSS9PCi0jCi0jIENPTkZJR19VSU8gaXMgbm90IHNldAotCi0jCi0jIEZpbGUgc3lzdGVtcwotIwotQ09ORklHX0VYVDJfRlM9bQotIyBDT05GSUdfRVhUMl9GU19YQVRUUiBpcyBub3Qgc2V0Ci0jIENPTkZJR19FWFQyX0ZTX1hJUCBpcyBub3Qgc2V0Ci1DT05GSUdfRVhUM19GUz15Ci1DT05GSUdfRVhUM19GU19YQVRUUj15Ci1DT05GSUdfRVhUM19GU19QT1NJWF9BQ0w9eQotQ09ORklHX0VYVDNfRlNfU0VDVVJJVFk9eQotIyBDT05GSUdfRVhUNERFVl9GUyBpcyBub3Qgc2V0Ci1DT05GSUdfSkJEPXkKLSMgQ09ORklHX0pCRF9ERUJVRyBpcyBub3Qgc2V0Ci1DT05GSUdfRlNfTUJDQUNIRT15Ci0jIENPTkZJR19SRUlTRVJGU19GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19KRlNfRlMgaXMgbm90IHNldAotQ09ORklHX0ZTX1BPU0lYX0FDTD15Ci1DT05GSUdfWEZTX0ZTPW0KLUNPTkZJR19YRlNfUVVPVEE9eQotQ09ORklHX1hGU19TRUNVUklUWT15Ci0jIENPTkZJR19YRlNfUE9TSVhfQUNMIGlzIG5vdCBzZXQKLSMgQ09ORklHX1hGU19SVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19HRlMyX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX09DRlMyX0ZTIGlzIG5vdCBzZXQKLUNPTkZJR19NSU5JWF9GUz1tCi0jIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0Ci1DT05GSUdfSU5PVElGWT15Ci1DT05GSUdfSU5PVElGWV9VU0VSPXkKLUNPTkZJR19RVU9UQT15Ci0jIENPTkZJR19RRk1UX1YxIGlzIG5vdCBzZXQKLUNPTkZJR19RRk1UX1YyPW0KLUNPTkZJR19RVU9UQUNUTD15Ci1DT05GSUdfRE5PVElGWT15Ci1DT05GSUdfQVVUT0ZTX0ZTPW0KLUNPTkZJR19BVVRPRlM0X0ZTPW0KLUNPTkZJR19GVVNFX0ZTPW0KLUNPTkZJR19HRU5FUklDX0FDTD15Ci0KLSMKLSMgQ0QtUk9NL0RWRCBGaWxlc3lzdGVtcwotIwotQ09ORklHX0lTTzk2NjBfRlM9bQotQ09ORklHX0pPTElFVD15Ci1DT05GSUdfWklTT0ZTPXkKLUNPTkZJR19VREZfRlM9bQotQ09ORklHX1VERl9OTFM9eQotCi0jCi0jIERPUy9GQVQvTlQgRmlsZXN5c3RlbXMKLSMKLUNPTkZJR19GQVRfRlM9bQotQ09ORklHX01TRE9TX0ZTPW0KLUNPTkZJR19WRkFUX0ZTPW0KLUNPTkZJR19GQVRfREVGQVVMVF9DT0RFUEFHRT00MzcKLUNPTkZJR19GQVRfREVGQVVMVF9JT0NIQVJTRVQ9Imlzbzg4NTktMSIKLSMgQ09ORklHX05URlNfRlMgaXMgbm90IHNldAotCi0jCi0jIFBzZXVkbyBmaWxlc3lzdGVtcwotIwotQ09ORklHX1BST0NfRlM9eQotQ09ORklHX1BST0NfS0NPUkU9eQotQ09ORklHX1BST0NfU1lTQ1RMPXkKLUNPTkZJR19TWVNGUz15Ci1DT05GSUdfVE1QRlM9eQotQ09ORklHX1RNUEZTX1BPU0lYX0FDTD15Ci0jIENPTkZJR19IVUdFVExCX1BBR0UgaXMgbm90IHNldAotQ09ORklHX1JBTUZTPXkKLUNPTkZJR19DT05GSUdGU19GUz1tCi0KLSMKLSMgTWlzY2VsbGFuZW91cyBmaWxlc3lzdGVtcwotIwotIyBDT05GSUdfQURGU19GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19BRkZTX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0VDUllQVF9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19IRlNfRlMgaXMgbm90IHNldAotIyBDT05GSUdfSEZTUExVU19GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19CRUZTX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0JGU19GUyBpcyBub3Qgc2V0Ci1DT05GSUdfRUZTX0ZTPW0KLSMgQ09ORklHX0NSQU1GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19WWEZTX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0hQRlNfRlMgaXMgbm90IHNldAotIyBDT05GSUdfUU5YNEZTX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NZU1ZfRlMgaXMgbm90IHNldAotQ09ORklHX1VGU19GUz1tCi0jIENPTkZJR19VRlNfRlNfV1JJVEUgaXMgbm90IHNldAotIyBDT05GSUdfVUZTX0RFQlVHIGlzIG5vdCBzZXQKLQotIwotIyBOZXR3b3JrIEZpbGUgU3lzdGVtcwotIwotQ09ORklHX05GU19GUz1tCi1DT05GSUdfTkZTX1YzPXkKLUNPTkZJR19ORlNfVjNfQUNMPXkKLSMgQ09ORklHX05GU19WNCBpcyBub3Qgc2V0Ci0jIENPTkZJR19ORlNfRElSRUNUSU8gaXMgbm90IHNldAotQ09ORklHX05GU0Q9bQotQ09ORklHX05GU0RfVjJfQUNMPXkKLUNPTkZJR19ORlNEX1YzPXkKLUNPTkZJR19ORlNEX1YzX0FDTD15Ci0jIENPTkZJR19ORlNEX1Y0IGlzIG5vdCBzZXQKLUNPTkZJR19ORlNEX1RDUD15Ci1DT05GSUdfTE9DS0Q9bQotQ09ORklHX0xPQ0tEX1Y0PXkKLUNPTkZJR19FWFBPUlRGUz1tCi1DT05GSUdfTkZTX0FDTF9TVVBQT1JUPW0KLUNPTkZJR19ORlNfQ09NTU9OPXkKLUNPTkZJR19TVU5SUEM9bQotQ09ORklHX1NVTlJQQ19HU1M9bQotIyBDT05GSUdfU1VOUlBDX0JJTkQzNCBpcyBub3Qgc2V0Ci1DT05GSUdfUlBDU0VDX0dTU19LUkI1PW0KLSMgQ09ORklHX1JQQ1NFQ19HU1NfU1BLTTMgaXMgbm90IHNldAotQ09ORklHX1NNQl9GUz1tCi1DT05GSUdfU01CX05MU19ERUZBVUxUPXkKLUNPTkZJR19TTUJfTkxTX1JFTU9URT0iY3A0MzciCi1DT05GSUdfQ0lGUz1tCi0jIENPTkZJR19DSUZTX1NUQVRTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0NJRlNfV0VBS19QV19IQVNIIGlzIG5vdCBzZXQKLSMgQ09ORklHX0NJRlNfWEFUVFIgaXMgbm90IHNldAotIyBDT05GSUdfQ0lGU19ERUJVRzIgaXMgbm90IHNldAotIyBDT05GSUdfQ0lGU19FWFBFUklNRU5UQUwgaXMgbm90IHNldAotIyBDT05GSUdfTkNQX0ZTIGlzIG5vdCBzZXQKLUNPTkZJR19DT0RBX0ZTPW0KLSMgQ09ORklHX0NPREFfRlNfT0xEX0FQSSBpcyBub3Qgc2V0Ci0jIENPTkZJR19BRlNfRlMgaXMgbm90IHNldAotCi0jCi0jIFBhcnRpdGlvbiBUeXBlcwotIwotQ09ORklHX1BBUlRJVElPTl9BRFZBTkNFRD15Ci0jIENPTkZJR19BQ09STl9QQVJUSVRJT04gaXMgbm90IHNldAotIyBDT05GSUdfT1NGX1BBUlRJVElPTiBpcyBub3Qgc2V0Ci0jIENPTkZJR19BTUlHQV9QQVJUSVRJT04gaXMgbm90IHNldAotIyBDT05GSUdfQVRBUklfUEFSVElUSU9OIGlzIG5vdCBzZXQKLSMgQ09ORklHX01BQ19QQVJUSVRJT04gaXMgbm90IHNldAotQ09ORklHX01TRE9TX1BBUlRJVElPTj15Ci0jIENPTkZJR19CU0RfRElTS0xBQkVMIGlzIG5vdCBzZXQKLSMgQ09ORklHX01JTklYX1NVQlBBUlRJVElPTiBpcyBub3Qgc2V0Ci0jIENPTkZJR19TT0xBUklTX1g4Nl9QQVJUSVRJT04gaXMgbm90IHNldAotIyBDT05GSUdfVU5JWFdBUkVfRElTS0xBQkVMIGlzIG5vdCBzZXQKLSMgQ09ORklHX0xETV9QQVJUSVRJT04gaXMgbm90IHNldAotQ09ORklHX1NHSV9QQVJUSVRJT049eQotIyBDT05GSUdfVUxUUklYX1BBUlRJVElPTiBpcyBub3Qgc2V0Ci0jIENPTkZJR19TVU5fUEFSVElUSU9OIGlzIG5vdCBzZXQKLSMgQ09ORklHX0tBUk1BX1BBUlRJVElPTiBpcyBub3Qgc2V0Ci0jIENPTkZJR19FRklfUEFSVElUSU9OIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NZU1Y2OF9QQVJUSVRJT04gaXMgbm90IHNldAotCi0jCi0jIE5hdGl2ZSBMYW5ndWFnZSBTdXBwb3J0Ci0jCi1DT05GSUdfTkxTPW0KLUNPTkZJR19OTFNfREVGQVVMVD0iaXNvODg1OS0xIgotQ09ORklHX05MU19DT0RFUEFHRV80Mzc9bQotQ09ORklHX05MU19DT0RFUEFHRV83Mzc9bQotQ09ORklHX05MU19DT0RFUEFHRV83NzU9bQotQ09ORklHX05MU19DT0RFUEFHRV84NTA9bQotQ09ORklHX05MU19DT0RFUEFHRV84NTI9bQotQ09ORklHX05MU19DT0RFUEFHRV84NTU9bQotQ09ORklHX05MU19DT0RFUEFHRV84NTc9bQotQ09ORklHX05MU19DT0RFUEFHRV84NjA9bQotQ09ORklHX05MU19DT0RFUEFHRV84NjE9bQotQ09ORklHX05MU19DT0RFUEFHRV84NjI9bQotQ09ORklHX05MU19DT0RFUEFHRV84NjM9bQotQ09ORklHX05MU19DT0RFUEFHRV84NjQ9bQotQ09ORklHX05MU19DT0RFUEFHRV84NjU9bQotQ09ORklHX05MU19DT0RFUEFHRV84NjY9bQotQ09ORklHX05MU19DT0RFUEFHRV84Njk9bQotQ09ORklHX05MU19DT0RFUEFHRV85MzY9bQotQ09ORklHX05MU19DT0RFUEFHRV85NTA9bQotQ09ORklHX05MU19DT0RFUEFHRV85MzI9bQotQ09ORklHX05MU19DT0RFUEFHRV85NDk9bQotQ09ORklHX05MU19DT0RFUEFHRV84NzQ9bQotQ09ORklHX05MU19JU084ODU5Xzg9bQotQ09ORklHX05MU19DT0RFUEFHRV8xMjUwPW0KLUNPTkZJR19OTFNfQ09ERVBBR0VfMTI1MT1tCi1DT05GSUdfTkxTX0FTQ0lJPW0KLUNPTkZJR19OTFNfSVNPODg1OV8xPW0KLUNPTkZJR19OTFNfSVNPODg1OV8yPW0KLUNPTkZJR19OTFNfSVNPODg1OV8zPW0KLUNPTkZJR19OTFNfSVNPODg1OV80PW0KLUNPTkZJR19OTFNfSVNPODg1OV81PW0KLUNPTkZJR19OTFNfSVNPODg1OV82PW0KLUNPTkZJR19OTFNfSVNPODg1OV83PW0KLUNPTkZJR19OTFNfSVNPODg1OV85PW0KLUNPTkZJR19OTFNfSVNPODg1OV8xMz1tCi1DT05GSUdfTkxTX0lTTzg4NTlfMTQ9bQotQ09ORklHX05MU19JU084ODU5XzE1PW0KLUNPTkZJR19OTFNfS09JOF9SPW0KLUNPTkZJR19OTFNfS09JOF9VPW0KLUNPTkZJR19OTFNfVVRGOD1tCi0KLSMKLSMgRGlzdHJpYnV0ZWQgTG9jayBNYW5hZ2VyCi0jCi1DT05GSUdfRExNPW0KLSMgQ09ORklHX0RMTV9ERUJVRyBpcyBub3Qgc2V0Ci0KLSMKLSMgUHJvZmlsaW5nIHN1cHBvcnQKLSMKLSMgQ09ORklHX1BST0ZJTElORyBpcyBub3Qgc2V0Ci0KLSMKLSMgS2VybmVsIGhhY2tpbmcKLSMKLUNPTkZJR19UUkFDRV9JUlFGTEFHU19TVVBQT1JUPXkKLSMgQ09ORklHX1BSSU5US19USU1FIGlzIG5vdCBzZXQKLUNPTkZJR19FTkFCTEVfTVVTVF9DSEVDSz15Ci0jIENPTkZJR19NQUdJQ19TWVNSUSBpcyBub3Qgc2V0Ci0jIENPTkZJR19VTlVTRURfU1lNQk9MUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ERUJVR19GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19IRUFERVJTX0NIRUNLIGlzIG5vdCBzZXQKLSMgQ09ORklHX0RFQlVHX0tFUk5FTCBpcyBub3Qgc2V0Ci1DT05GSUdfQ1JPU1NDT01QSUxFPXkKLUNPTkZJR19DTURMSU5FPSIiCi0KLSMKLSMgU2VjdXJpdHkgb3B0aW9ucwotIwotQ09ORklHX0tFWVM9eQotQ09ORklHX0tFWVNfREVCVUdfUFJPQ19LRVlTPXkKLSMgQ09ORklHX1NFQ1VSSVRZIGlzIG5vdCBzZXQKLUNPTkZJR19DUllQVE89eQotQ09ORklHX0NSWVBUT19BTEdBUEk9eQotQ09ORklHX0NSWVBUT19BQkxLQ0lQSEVSPW0KLUNPTkZJR19DUllQVE9fQkxLQ0lQSEVSPW0KLUNPTkZJR19DUllQVE9fSEFTSD15Ci1DT05GSUdfQ1JZUFRPX01BTkFHRVI9eQotQ09ORklHX0NSWVBUT19ITUFDPXkKLUNPTkZJR19DUllQVE9fWENCQz1tCi1DT05GSUdfQ1JZUFRPX05VTEw9bQotQ09ORklHX0NSWVBUT19NRDQ9bQotQ09ORklHX0NSWVBUT19NRDU9eQotQ09ORklHX0NSWVBUT19TSEExPW0KLUNPTkZJR19DUllQVE9fU0hBMjU2PW0KLUNPTkZJR19DUllQVE9fU0hBNTEyPW0KLUNPTkZJR19DUllQVE9fV1A1MTI9bQotQ09ORklHX0NSWVBUT19UR1IxOTI9bQotQ09ORklHX0NSWVBUT19HRjEyOE1VTD1tCi1DT05GSUdfQ1JZUFRPX0VDQj1tCi1DT05GSUdfQ1JZUFRPX0NCQz1tCi1DT05GSUdfQ1JZUFRPX1BDQkM9bQotQ09ORklHX0NSWVBUT19MUlc9bQotQ09ORklHX0NSWVBUT19DUllQVEQ9bQotQ09ORklHX0NSWVBUT19ERVM9bQotQ09ORklHX0NSWVBUT19GQ1JZUFQ9bQotQ09ORklHX0NSWVBUT19CTE9XRklTSD1tCi1DT05GSUdfQ1JZUFRPX1RXT0ZJU0g9bQotQ09ORklHX0NSWVBUT19UV09GSVNIX0NPTU1PTj1tCi1DT05GSUdfQ1JZUFRPX1NFUlBFTlQ9bQotQ09ORklHX0NSWVBUT19BRVM9bQotQ09ORklHX0NSWVBUT19DQVNUNT1tCi1DT05GSUdfQ1JZUFRPX0NBU1Q2PW0KLUNPTkZJR19DUllQVE9fVEVBPW0KLUNPTkZJR19DUllQVE9fQVJDND1tCi1DT05GSUdfQ1JZUFRPX0tIQVpBRD1tCi1DT05GSUdfQ1JZUFRPX0FOVUJJUz1tCi1DT05GSUdfQ1JZUFRPX0RFRkxBVEU9bQotQ09ORklHX0NSWVBUT19NSUNIQUVMX01JQz1tCi1DT05GSUdfQ1JZUFRPX0NSQzMyQz1tCi1DT05GSUdfQ1JZUFRPX0NBTUVMTElBPW0KLSMgQ09ORklHX0NSWVBUT19URVNUIGlzIG5vdCBzZXQKLSMgQ09ORklHX0NSWVBUT19IVyBpcyBub3Qgc2V0Ci0KLSMKLSMgTGlicmFyeSByb3V0aW5lcwotIwotQ09ORklHX0JJVFJFVkVSU0U9bQotIyBDT05GSUdfQ1JDX0NDSVRUIGlzIG5vdCBzZXQKLUNPTkZJR19DUkMxNj1tCi0jIENPTkZJR19DUkNfSVRVX1QgaXMgbm90IHNldAotQ09ORklHX0NSQzMyPW0KLSMgQ09ORklHX0NSQzcgaXMgbm90IHNldAotQ09ORklHX0xJQkNSQzMyQz1tCi1DT05GSUdfWkxJQl9JTkZMQVRFPW0KLUNPTkZJR19aTElCX0RFRkxBVEU9bQotQ09ORklHX1RFWFRTRUFSQ0g9eQotQ09ORklHX1RFWFRTRUFSQ0hfS01QPW0KLUNPTkZJR19URVhUU0VBUkNIX0JNPW0KLUNPTkZJR19URVhUU0VBUkNIX0ZTTT1tCi1DT05GSUdfUExJU1Q9eQotQ09ORklHX0hBU19JT01FTT15Ci1DT05GSUdfSEFTX0lPUE9SVD15Ci1DT05GSUdfSEFTX0RNQT15CmRpZmYgLS1naXQgYS9hcmNoL21pcHMva2VybmVsL01ha2VmaWxlIGIvYXJjaC9taXBzL2tlcm5lbC9NYWtlZmlsZQppbmRleCBmZmEwODM2Li45ZTc4ZTFhIDEwMDY0NAotLS0gYS9hcmNoL21pcHMva2VybmVsL01ha2VmaWxlCisrKyBiL2FyY2gvbWlwcy9rZXJuZWwvTWFrZWZpbGUKQEAgLTc2LDcgKzc2LDYgQEAKIG9iai0kKENPTkZJR182NEJJVCkJCSs9IGNwdS1idWdzNjQubwogCiBvYmotJChDT05GSUdfSTgyNTMpCQkrPSBpODI1My5vCi1vYmotJChDT05GSUdfUENTUEVBS0VSKQkJKz0gcGNzcGVha2VyLm8KIAogb2JqLSQoQ09ORklHX0tFWEVDKQkJKz0gbWFjaGluZV9rZXhlYy5vIHJlbG9jYXRlX2tlcm5lbC5vCiBvYmotJChDT05GSUdfRUFSTFlfUFJJTlRLKQkrPSBlYXJseV9wcmludGsubwpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2tlcm5lbC9jcHUtYnVnczY0LmMgYi9hcmNoL21pcHMva2VybmVsL2NwdS1idWdzNjQuYwppbmRleCA0MTdiYjNlLi5hMWI0OGFmIDEwMDY0NAotLS0gYS9hcmNoL21pcHMva2VybmVsL2NwdS1idWdzNjQuYworKysgYi9hcmNoL21pcHMva2VybmVsL2NwdS1idWdzNjQuYwpAQCAtMTY3LDcgKzE2Nyw3IEBACiAJcGFuaWMoYnVnNjRoaXQsICFSNDAwMF9XQVIgPyByNGt3YXIgOiBub3dhcik7CiB9CiAKLXN0YXRpYyB2b2xhdGlsZSBpbnQgZGFkZGlfb3YgX19pbml0ZGF0YSA9IDA7CitzdGF0aWMgdm9sYXRpbGUgaW50IGRhZGRpX292IF9fY3B1aW5pdGRhdGEgPSAwOwogCiBhc21saW5rYWdlIHZvaWQgX19pbml0IGRvX2RhZGRpX292KHN0cnVjdCBwdF9yZWdzICpyZWdzKQogewpAQCAtMjM5LDcgKzIzOSw3IEBACiAJcGFuaWMoYnVnNjRoaXQsICFEQURESV9XQVIgPyBkYWRkaXdhciA6IG5vd2FyKTsKIH0KIAotaW50IGRhZGRpdV9idWcgX19pbml0ZGF0YSA9IC0xOworaW50IGRhZGRpdV9idWcgX19jcHVpbml0ZGF0YSA9IC0xOwogCiBzdGF0aWMgaW5saW5lIHZvaWQgY2hlY2tfZGFkZGl1KHZvaWQpCiB7CmRpZmYgLS1naXQgYS9hcmNoL21pcHMva2VybmVsL2NwdS1wcm9iZS5jIGIvYXJjaC9taXBzL2tlcm5lbC9jcHUtcHJvYmUuYwppbmRleCA1ODYxYTQzLi44OWMzMzA0IDEwMDY0NAotLS0gYS9hcmNoL21pcHMva2VybmVsL2NwdS1wcm9iZS5jCisrKyBiL2FyY2gvbWlwcy9rZXJuZWwvY3B1LXByb2JlLmMKQEAgLTU1MCw3ICs1NTAsNyBAQAogCX0KIH0KIAotc3RhdGljIGNoYXIgdW5rbm93bl9pc2FbXSBfX2luaXRkYXRhID0gS0VSTl9FUlIgXAorc3RhdGljIGNoYXIgdW5rbm93bl9pc2FbXSBfX2NwdWluaXRkYXRhID0gS0VSTl9FUlIgXAogCSJVbnN1cHBvcnRlZCBJU0EgdHlwZSwgYzAuY29uZmlnMDogJWQuIjsKIAogc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgZGVjb2RlX2NvbmZpZzAoc3RydWN0IGNwdWluZm9fbWlwcyAqYykKQEAgLTY1Niw3ICs2NTYsNyBAQAogCXJldHVybiBjb25maWczICYgTUlQU19DT05GX007CiB9CiAKLXN0YXRpYyB2b2lkIF9faW5pdCBkZWNvZGVfY29uZmlncyhzdHJ1Y3QgY3B1aW5mb19taXBzICpjKQorc3RhdGljIHZvaWQgX19jcHVpbml0IGRlY29kZV9jb25maWdzKHN0cnVjdCBjcHVpbmZvX21pcHMgKmMpCiB7CiAJLyogTUlQUzMyIG9yIE1JUFM2NCBjb21wbGlhbnQgQ1BVLiAgKi8KIAljLT5vcHRpb25zID0gTUlQU19DUFVfNEtFWCB8IE1JUFNfQ1BVXzRLX0NBQ0hFIHwgTUlQU19DUFVfQ09VTlRFUiB8CkBAIC04MTQsNyArODE0LDcgQEAKIC8qCiAgKiBOYW1lIGEgQ1BVCiAgKi8KLXN0YXRpYyBfX2luaXQgY29uc3QgY2hhciAqY3B1X3RvX25hbWUoc3RydWN0IGNwdWluZm9fbWlwcyAqYykKK3N0YXRpYyBfX2NwdWluaXQgY29uc3QgY2hhciAqY3B1X3RvX25hbWUoc3RydWN0IGNwdWluZm9fbWlwcyAqYykKIHsKIAljb25zdCBjaGFyICpuYW1lID0gTlVMTDsKIApAQCAtODk2LDcgKzg5Niw3IEBACiAJcmV0dXJuIG5hbWU7CiB9CiAKLV9faW5pdCB2b2lkIGNwdV9wcm9iZSh2b2lkKQorX19jcHVpbml0IHZvaWQgY3B1X3Byb2JlKHZvaWQpCiB7CiAJc3RydWN0IGNwdWluZm9fbWlwcyAqYyA9ICZjdXJyZW50X2NwdV9kYXRhOwogCXVuc2lnbmVkIGludCBjcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7CkBAIC05NTksNyArOTU5LDcgQEAKIAkJYy0+c3JzZXRzID0gMTsKIH0KIAotX19pbml0IHZvaWQgY3B1X3JlcG9ydCh2b2lkKQorX19jcHVpbml0IHZvaWQgY3B1X3JlcG9ydCh2b2lkKQogewogCXN0cnVjdCBjcHVpbmZvX21pcHMgKmMgPSAmY3VycmVudF9jcHVfZGF0YTsKIApkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2tlcm5lbC9jc3JjLXI0ay5jIGIvYXJjaC9taXBzL2tlcm5lbC9jc3JjLXI0ay5jCmluZGV4IDBlMmI1Y2QuLjg2ZTAyNmYgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9rZXJuZWwvY3NyYy1yNGsuYworKysgYi9hcmNoL21pcHMva2VybmVsL2NzcmMtcjRrLmMKQEAgLTIyLDEyICsyMiwxNyBAQAogCS5mbGFncwkJPSBDTE9DS19TT1VSQ0VfSVNfQ09OVElOVU9VUywKIH07CiAKLXZvaWQgX19pbml0IGluaXRfbWlwc19jbG9ja3NvdXJjZSh2b2lkKQoraW50IF9faW5pdCBpbml0X21pcHNfY2xvY2tzb3VyY2Uodm9pZCkKIHsKKwlpZiAoIWNwdV9oYXNfY291bnRlciB8fCAhbWlwc19ocHRfZnJlcXVlbmN5KQorCQlyZXR1cm4gLUVOWElPOworCiAJLyogQ2FsY2xhdGUgYSBzb21ld2hhdCByZWFzb25hYmxlIHJhdGluZyB2YWx1ZSAqLwogCWNsb2Nrc291cmNlX21pcHMucmF0aW5nID0gMjAwICsgbWlwc19ocHRfZnJlcXVlbmN5IC8gMTAwMDAwMDA7CiAKIAljbG9ja3NvdXJjZV9zZXRfY2xvY2soJmNsb2Nrc291cmNlX21pcHMsIG1pcHNfaHB0X2ZyZXF1ZW5jeSk7CiAKIAljbG9ja3NvdXJjZV9yZWdpc3RlcigmY2xvY2tzb3VyY2VfbWlwcyk7CisKKwlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9rZXJuZWwvZ2RiLXN0dWIuYyBiL2FyY2gvbWlwcy9rZXJuZWwvZ2RiLXN0dWIuYwppbmRleCAzMTkxYWZhLi4yNWY0ZWFiIDEwMDY0NAotLS0gYS9hcmNoL21pcHMva2VybmVsL2dkYi1zdHViLmMKKysrIGIvYXJjaC9taXBzL2tlcm5lbC9nZGItc3R1Yi5jCkBAIC0xMzksNyArMTM5LDYgQEAKICNpbmNsdWRlIDxhc20vc3lzdGVtLmg+CiAjaW5jbHVkZSA8YXNtL2dkYi1zdHViLmg+CiAjaW5jbHVkZSA8YXNtL2luc3QuaD4KLSNpbmNsdWRlIDxhc20vc21wLmg+CiAKIC8qCiAgKiBleHRlcm5hbCBsb3ctbGV2ZWwgc3VwcG9ydCByb3V0aW5lcwpAQCAtNjU2LDYgKzY1NSw3IEBACiAJKmVwYyA9ICh1bnNpZ25lZCBsb25nKWFzeW5jX2JyZWFrcG9pbnQ7CiB9CiAKKyNpZmRlZiBDT05GSUdfU01QCiBzdGF0aWMgdm9pZCBrZ2RiX3dhaXQodm9pZCAqYXJnKQogewogCXVuc2lnbmVkIGZsYWdzOwpAQCAtNjY4LDYgKzY2OCw3IEBACiAKIAlsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7CiB9CisjZW5kaWYKIAogLyoKICAqIEdEQiBzdHViIG5lZWRzIHRvIGNhbGwga2dkYl93YWl0IG9uIGFsbCBwcm9jZXNzb3Igd2l0aCBpbnRlcnJ1cHRzCmRpZmYgLS1naXQgYS9hcmNoL21pcHMva2VybmVsL2hlYWQuUyBiL2FyY2gvbWlwcy9rZXJuZWwvaGVhZC5TCmluZGV4IGEyNGZiNzkuLjM2MTM2NDUgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9rZXJuZWwvaGVhZC5TCisrKyBiL2FyY2gvbWlwcy9rZXJuZWwvaGVhZC5TCkBAIC0xOTUsNyArMTk1LDcgQEAKIAlqCQlzdGFydF9rZXJuZWwKIAlFTkQoa2VybmVsX2VudHJ5KQogCi0JX19JTklUCisJX19DUFVJTklUCiAKICNpZmRlZiBDT05GSUdfU01QCiAvKgpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2tlcm5lbC9pODI1My5jIGIvYXJjaC9taXBzL2tlcm5lbC9pODI1My5jCmluZGV4IGZjNGFhMDcuLjM4ZmExYTEgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9rZXJuZWwvaTgyNTMuYworKysgYi9hcmNoL21pcHMva2VybmVsL2k4MjUzLmMKQEAgLTE1LDYgKzE1LDcgQEAKICNpbmNsdWRlIDxhc20vdGltZS5oPgogCiBERUZJTkVfU1BJTkxPQ0soaTgyNTNfbG9jayk7CitFWFBPUlRfU1lNQk9MKGk4MjUzX2xvY2spOwogCiAvKgogICogSW5pdGlhbGl6ZSB0aGUgUElUIHRpbWVyLgpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2tlcm5lbC90aW1lLmMgYi9hcmNoL21pcHMva2VybmVsL3RpbWUuYwppbmRleCA5Zjg1ZDRjLi5iNDVhNzA5IDEwMDY0NAotLS0gYS9hcmNoL21pcHMva2VybmVsL3RpbWUuYworKysgYi9hcmNoL21pcHMva2VybmVsL3RpbWUuYwpAQCAtMTU3LDYgKzE1Nyw2IEBACiB7CiAJcGxhdF90aW1lX2luaXQoKTsKIAotCWlmIChtaXBzX2Nsb2NrZXZlbnRfaW5pdCgpIHx8ICFjcHVfaGFzX21mYzBfY291bnRfYnVnKCkpCisJaWYgKCFtaXBzX2Nsb2NrZXZlbnRfaW5pdCgpIHx8ICFjcHVfaGFzX21mYzBfY291bnRfYnVnKCkpCiAJCWluaXRfbWlwc19jbG9ja3NvdXJjZSgpOwogfQpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2tlcm5lbC90cmFwcy5jIGIvYXJjaC9taXBzL2tlcm5lbC90cmFwcy5jCmluZGV4IGZjYWU2NjcuLjk4NGMwZDAgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9rZXJuZWwvdHJhcHMuYworKysgYi9hcmNoL21pcHMva2VybmVsL3RyYXBzLmMKQEAgLTUzNCw4ICs1MzQsNyBAQAogCiAvKgogICogU2ltdWxhdGUgdHJhcHBpbmcgJ3JkaHdyJyBpbnN0cnVjdGlvbnMgdG8gcHJvdmlkZSB1c2VyIGFjY2Vzc2libGUKLSAqIHJlZ2lzdGVycyBub3QgaW1wbGVtZW50ZWQgaW4gaGFyZHdhcmUuICBUaGUgb25seSBjdXJyZW50IHVzZSBvZiB0aGlzCi0gKiBpcyB0aGUgdGhyZWFkIGFyZWEgcG9pbnRlci4KKyAqIHJlZ2lzdGVycyBub3QgaW1wbGVtZW50ZWQgaW4gaGFyZHdhcmUuCiAgKi8KIHN0YXRpYyBpbnQgc2ltdWxhdGVfcmRod3Ioc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHVuc2lnbmVkIGludCBvcGNvZGUpCiB7CkBAIC01NDUsMTEgKzU0NCwzMSBAQAogCQlpbnQgcmQgPSAob3Bjb2RlICYgUkQpID4+IDExOwogCQlpbnQgcnQgPSAob3Bjb2RlICYgUlQpID4+IDE2OwogCQlzd2l0Y2ggKHJkKSB7Ci0JCQljYXNlIDI5OgotCQkJCXJlZ3MtPnJlZ3NbcnRdID0gdGktPnRwX3ZhbHVlOwotCQkJCXJldHVybiAwOworCQljYXNlIDA6CQkvKiBDUFUgbnVtYmVyICovCisJCQlyZWdzLT5yZWdzW3J0XSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsKKwkJCXJldHVybiAwOworCQljYXNlIDE6CQkvKiBTWU5DSSBsZW5ndGggKi8KKwkJCXJlZ3MtPnJlZ3NbcnRdID0gbWluKGN1cnJlbnRfY3B1X2RhdGEuZGNhY2hlLmxpbmVzeiwKKwkJCQkJICAgICBjdXJyZW50X2NwdV9kYXRhLmljYWNoZS5saW5lc3opOworCQkJcmV0dXJuIDA7CisJCWNhc2UgMjoJCS8qIFJlYWQgY291bnQgcmVnaXN0ZXIgKi8KKwkJCXJlZ3MtPnJlZ3NbcnRdID0gcmVhZF9jMF9jb3VudCgpOworCQkJcmV0dXJuIDA7CisJCWNhc2UgMzoJCS8qIENvdW50IHJlZ2lzdGVyIHJlc29sdXRpb24gKi8KKwkJCXN3aXRjaCAoY3VycmVudF9jcHVfZGF0YS5jcHV0eXBlKSB7CisJCQljYXNlIENQVV8yMEtDOgorCQkJY2FzZSBDUFVfMjVLRjoKKwkJCQlyZWdzLT5yZWdzW3J0XSA9IDE7CisJCQkJYnJlYWs7CiAJCQlkZWZhdWx0OgotCQkJCXJldHVybiAtMTsKKwkJCQlyZWdzLT5yZWdzW3J0XSA9IDI7CisJCQl9CisJCQlyZXR1cm4gMDsKKwkJY2FzZSAyOToKKwkJCXJlZ3MtPnJlZ3NbcnRdID0gdGktPnRwX3ZhbHVlOworCQkJcmV0dXJuIDA7CisJCWRlZmF1bHQ6CisJCQlyZXR1cm4gLTE7CiAJCX0KIAl9CiAKQEAgLTEyODcsNyArMTMwNiw3IEBACiBpbnQgY3AwX3BlcmZjb3VudF9pcnE7CiBFWFBPUlRfU1lNQk9MX0dQTChjcDBfcGVyZmNvdW50X2lycSk7CiAKLXZvaWQgX19pbml0IHBlcl9jcHVfdHJhcF9pbml0KHZvaWQpCit2b2lkIF9fY3B1aW5pdCBwZXJfY3B1X3RyYXBfaW5pdCh2b2lkKQogewogCXVuc2lnbmVkIGludCBjcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7CiAJdW5zaWduZWQgaW50IHN0YXR1c19zZXQgPSBTVDBfQ1UwOwpAQCAtMTQwNCwxMSArMTQyMywxMiBAQAogCWZsdXNoX2ljYWNoZV9yYW5nZShlYmFzZSArIG9mZnNldCwgZWJhc2UgKyBvZmZzZXQgKyBzaXplKTsKIH0KIAotc3RhdGljIGNoYXIgcGFuaWNfbnVsbF9jZXJyW10gX19pbml0ZGF0YSA9CitzdGF0aWMgY2hhciBwYW5pY19udWxsX2NlcnJbXSBfX2NwdWluaXRkYXRhID0KIAkiVHJ5aW5nIHRvIHNldCBOVUxMIGNhY2hlIGVycm9yIGV4Y2VwdGlvbiBoYW5kbGVyIjsKIAogLyogSW5zdGFsbCB1bmNhY2hlZCBDUFUgZXhjZXB0aW9uIGhhbmRsZXIgKi8KLXZvaWQgX19pbml0IHNldF91bmNhY2hlZF9oYW5kbGVyKHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCB2b2lkICphZGRyLCB1bnNpZ25lZCBsb25nIHNpemUpCit2b2lkIF9fY3B1aW5pdCBzZXRfdW5jYWNoZWRfaGFuZGxlcih1bnNpZ25lZCBsb25nIG9mZnNldCwgdm9pZCAqYWRkciwKKwl1bnNpZ25lZCBsb25nIHNpemUpCiB7CiAjaWZkZWYgQ09ORklHXzMyQklUCiAJdW5zaWduZWQgbG9uZyB1bmNhY2hlZF9lYmFzZSA9IEtTRUcxQUREUihlYmFzZSk7CmRpZmYgLS1naXQgYS9hcmNoL21pcHMva2VybmVsL3ZwZS5jIGIvYXJjaC9taXBzL2tlcm5lbC92cGUuYwppbmRleCBlZWQyZGM0Li4zOTgwNGM1IDEwMDY0NAotLS0gYS9hcmNoL21pcHMva2VybmVsL3ZwZS5jCisrKyBiL2FyY2gvbWlwcy9rZXJuZWwvdnBlLmMKQEAgLTI2MiwxMyArMjYyLDIxIEBACiAvKiBGaW5kIHNvbWUgVlBFIHByb2dyYW0gc3BhY2UgICovCiBzdGF0aWMgdm9pZCAqYWxsb2NfcHJvZ21lbSh1bnNpZ25lZCBsb25nIGxlbikKIHsKKwl2b2lkICphZGRyOworCiAjaWZkZWYgQ09ORklHX01JUFNfVlBFX0xPQURFUl9UT00KLQkvKiB0aGlzIG1lYW5zIHlvdSBtdXN0IHRlbGwgbGludXggdG8gdXNlIGxlc3MgbWVtb3J5IHRoYW4geW91IHBoeXNpY2FsbHkgaGF2ZSAqLwotCXJldHVybiBwZm5fdG9fa2FkZHIobWF4X3Bmbik7CisJLyoKKwkgKiBUaGlzIG1lYW5zIHlvdSBtdXN0IHRlbGwgTGludXggdG8gdXNlIGxlc3MgbWVtb3J5IHRoYW4geW91CisJICogcGh5c2ljYWxseSBoYXZlLCBmb3IgZXhhbXBsZSBieSBwYXNzaW5nIGEgbWVtPSBib290IGFyZ3VtZW50LgorCSAqLworCWFkZHIgPSBwZm5fdG9fa2FkZHIobWF4X3Bmbik7CisJbWVtc2V0KGFkZHIsIDAsIGxlbik7CiAjZWxzZQotCS8vIHNpbXBsZSBncmFiIHNvbWUgbWVtIGZvciBub3cKLQlyZXR1cm4ga21hbGxvYyhsZW4sIEdGUF9LRVJORUwpOworCS8qIHNpbXBsZSBncmFiIHNvbWUgbWVtIGZvciBub3cgKi8KKwlhZGRyID0ga3phbGxvYyhsZW4sIEdGUF9LRVJORUwpOwogI2VuZGlmCisKKwlyZXR1cm4gYWRkcjsKIH0KIAogc3RhdGljIHZvaWQgcmVsZWFzZV9wcm9nbWVtKHZvaWQgKnB0cikKQEAgLTg4NCw5ICs4OTIsMTAgQEAKIAl9CiAKIAl2LT5sb2FkX2FkZHIgPSBhbGxvY19wcm9nbWVtKG1vZC5jb3JlX3NpemUpOwotCW1lbXNldCh2LT5sb2FkX2FkZHIsIDAsIG1vZC5jb3JlX3NpemUpOworCWlmICghdi0+bG9hZF9hZGRyKQorCQlyZXR1cm4gLUVOT01FTTsKIAotCXByaW50aygiVlBFIGxvYWRlcjogbG9hZGluZyB0byAlcFxuIiwgdi0+bG9hZF9hZGRyKTsKKwlwcl9pbmZvKCJWUEUgbG9hZGVyOiBsb2FkaW5nIHRvICVwXG4iLCB2LT5sb2FkX2FkZHIpOwogCiAJaWYgKHJlbG9jYXRlKSB7CiAJCWZvciAoaSA9IDA7IGkgPCBoZHItPmVfc2hudW07IGkrKykgewpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2xpYi91Y21wZGkyLmMgYi9hcmNoL21pcHMvbGliL3VjbXBkaTIuYwppbmRleCBiMzNkODU2Li5iYjRjYjJmIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvbGliL3VjbXBkaTIuYworKysgYi9hcmNoL21pcHMvbGliL3VjbXBkaTIuYwpAQCAtMTcsMyArMTcsNSBAQAogCQlyZXR1cm4gMjsKIAlyZXR1cm4gMTsKIH0KKworRVhQT1JUX1NZTUJPTChfX3VjbXBkaTIpOwpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2xpYi91bmNhY2hlZC5jIGIvYXJjaC9taXBzL2xpYi91bmNhY2hlZC5jCmluZGV4IDI3YjAxMmQuLmE2ZDFjNzcgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9saWIvdW5jYWNoZWQuYworKysgYi9hcmNoL21pcHMvbGliL3VuY2FjaGVkLmMKQEAgLTM2LDcgKzM2LDcgQEAKICAqIHZhbHVlcywgc28gd2UgY2FuIGF2b2lkIHNoYXJpbmcgdGhlIHNhbWUgc3RhY2sgYXJlYSBiZXR3ZWVuIGEgY2FjaGVkCiAgKiBhbmQgdGhlIHVuY2FjaGVkIG1vZGUuCiAgKi8KLXVuc2lnbmVkIGxvbmcgX19pbml0IHJ1bl91bmNhY2hlZCh2b2lkICpmdW5jKQordW5zaWduZWQgbG9uZyBfX2NwdWluaXQgcnVuX3VuY2FjaGVkKHZvaWQgKmZ1bmMpCiB7CiAJcmVnaXN0ZXIgbG9uZyBzcCBfX2FzbV9fKCIkc3AiKTsKIAlyZWdpc3RlciBsb25nIHJldCBfX2FzbV9fKCIkMiIpOwpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL21pcHMtYm9hcmRzL2dlbmVyaWMvdGltZS5jIGIvYXJjaC9taXBzL21pcHMtYm9hcmRzL2dlbmVyaWMvdGltZS5jCmluZGV4IGYwMmNlNjMuLmI1MGUwZmMgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9taXBzLWJvYXJkcy9nZW5lcmljL3RpbWUuYworKysgYi9hcmNoL21pcHMvbWlwcy1ib2FyZHMvZ2VuZXJpYy90aW1lLmMKQEAgLTE0Niw3ICsxNDYsNyBAQAogCX0KIH0KIAotdW5zaWduZWQgaW50IF9faW5pdCBnZXRfYzBfY29tcGFyZV9pbnQodm9pZCkKK3Vuc2lnbmVkIGludCBfX2NwdWluaXQgZ2V0X2MwX2NvbXBhcmVfaW50KHZvaWQpCiB7CiAjaWZkZWYgTVNDMDFFX0lOVF9CQVNFCiAJaWYgKGNwdV9oYXNfdmVpYykgewpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL21pcHNzaW0vc2ltX3RpbWUuYyBiL2FyY2gvbWlwcy9taXBzc2ltL3NpbV90aW1lLmMKaW5kZXggZTM5YmJlOS4uODgxZWNiYyAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL21pcHNzaW0vc2ltX3RpbWUuYworKysgYi9hcmNoL21pcHMvbWlwc3NpbS9zaW1fdGltZS5jCkBAIC04Myw3ICs4Myw3IEBACiB9CiAKIAotdW5zaWduZWQgX19pbml0IGdldF9jMF9jb21wYXJlX2ludCh2b2lkKQordW5zaWduZWQgX19jcHVpbml0IGdldF9jMF9jb21wYXJlX2ludCh2b2lkKQogewogI2lmZGVmIE1TQzAxRV9JTlRfQkFTRQogCWlmIChjcHVfaGFzX3ZlaWMpIHsKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9tbS9jLXIzay5jIGIvYXJjaC9taXBzL21tL2MtcjNrLmMKaW5kZXggNTYyYWJiNy4uNzY5MzVlMyAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL21tL2MtcjNrLmMKKysrIGIvYXJjaC9taXBzL21tL2MtcjNrLmMKQEAgLTMwNyw3ICszMDcsNyBAQAogCXIza19mbHVzaF9kY2FjaGVfcmFuZ2Uoc3RhcnQsIHN0YXJ0ICsgc2l6ZSk7CiB9CiAKLXZvaWQgX19pbml0IHIza19jYWNoZV9pbml0KHZvaWQpCit2b2lkIF9fY3B1aW5pdCByM2tfY2FjaGVfaW5pdCh2b2lkKQogewogCWV4dGVybiB2b2lkIGJ1aWxkX2NsZWFyX3BhZ2Uodm9pZCk7CiAJZXh0ZXJuIHZvaWQgYnVpbGRfY29weV9wYWdlKHZvaWQpOwpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL21tL2MtcjRrLmMgYi9hcmNoL21pcHMvbW0vYy1yNGsuYwppbmRleCAyYzRmN2UxLi43N2FlZmI0IDEwMDY0NAotLS0gYS9hcmNoL21pcHMvbW0vYy1yNGsuYworKysgYi9hcmNoL21pcHMvbW0vYy1yNGsuYwpAQCAtOTMsNyArOTMsNyBAQAogCWJsYXN0X2RjYWNoZTMyX3BhZ2UoYWRkcik7CiB9CiAKLXN0YXRpYyB2b2lkIF9faW5pdCByNGtfYmxhc3RfZGNhY2hlX3BhZ2Vfc2V0dXAodm9pZCkKK3N0YXRpYyB2b2lkIF9fY3B1aW5pdCByNGtfYmxhc3RfZGNhY2hlX3BhZ2Vfc2V0dXAodm9pZCkKIHsKIAl1bnNpZ25lZCBsb25nICBkY19sc2l6ZSA9IGNwdV9kY2FjaGVfbGluZV9zaXplKCk7CiAKQEAgLTEwNyw3ICsxMDcsNyBAQAogCiBzdGF0aWMgdm9pZCAoKiByNGtfYmxhc3RfZGNhY2hlX3BhZ2VfaW5kZXhlZCkodW5zaWduZWQgbG9uZyBhZGRyKTsKIAotc3RhdGljIHZvaWQgX19pbml0IHI0a19ibGFzdF9kY2FjaGVfcGFnZV9pbmRleGVkX3NldHVwKHZvaWQpCitzdGF0aWMgdm9pZCBfX2NwdWluaXQgcjRrX2JsYXN0X2RjYWNoZV9wYWdlX2luZGV4ZWRfc2V0dXAodm9pZCkKIHsKIAl1bnNpZ25lZCBsb25nIGRjX2xzaXplID0gY3B1X2RjYWNoZV9saW5lX3NpemUoKTsKIApAQCAtMTIxLDcgKzEyMSw3IEBACiAKIHN0YXRpYyB2b2lkICgqIHI0a19ibGFzdF9kY2FjaGUpKHZvaWQpOwogCi1zdGF0aWMgdm9pZCBfX2luaXQgcjRrX2JsYXN0X2RjYWNoZV9zZXR1cCh2b2lkKQorc3RhdGljIHZvaWQgX19jcHVpbml0IHI0a19ibGFzdF9kY2FjaGVfc2V0dXAodm9pZCkKIHsKIAl1bnNpZ25lZCBsb25nIGRjX2xzaXplID0gY3B1X2RjYWNoZV9saW5lX3NpemUoKTsKIApAQCAtMjA2LDcgKzIwNiw3IEBACiAKIHN0YXRpYyB2b2lkICgqIHI0a19ibGFzdF9pY2FjaGVfcGFnZSkodW5zaWduZWQgbG9uZyBhZGRyKTsKIAotc3RhdGljIHZvaWQgX19pbml0IHI0a19ibGFzdF9pY2FjaGVfcGFnZV9zZXR1cCh2b2lkKQorc3RhdGljIHZvaWQgX19jcHVpbml0IHI0a19ibGFzdF9pY2FjaGVfcGFnZV9zZXR1cCh2b2lkKQogewogCXVuc2lnbmVkIGxvbmcgaWNfbHNpemUgPSBjcHVfaWNhY2hlX2xpbmVfc2l6ZSgpOwogCkBAIC0yMjMsNyArMjIzLDcgQEAKIAogc3RhdGljIHZvaWQgKCogcjRrX2JsYXN0X2ljYWNoZV9wYWdlX2luZGV4ZWQpKHVuc2lnbmVkIGxvbmcgYWRkcik7CiAKLXN0YXRpYyB2b2lkIF9faW5pdCByNGtfYmxhc3RfaWNhY2hlX3BhZ2VfaW5kZXhlZF9zZXR1cCh2b2lkKQorc3RhdGljIHZvaWQgX19jcHVpbml0IHI0a19ibGFzdF9pY2FjaGVfcGFnZV9pbmRleGVkX3NldHVwKHZvaWQpCiB7CiAJdW5zaWduZWQgbG9uZyBpY19sc2l6ZSA9IGNwdV9pY2FjaGVfbGluZV9zaXplKCk7CiAKQEAgLTI0Nyw3ICsyNDcsNyBAQAogCiBzdGF0aWMgdm9pZCAoKiByNGtfYmxhc3RfaWNhY2hlKSh2b2lkKTsKIAotc3RhdGljIHZvaWQgX19pbml0IHI0a19ibGFzdF9pY2FjaGVfc2V0dXAodm9pZCkKK3N0YXRpYyB2b2lkIF9fY3B1aW5pdCByNGtfYmxhc3RfaWNhY2hlX3NldHVwKHZvaWQpCiB7CiAJdW5zaWduZWQgbG9uZyBpY19sc2l6ZSA9IGNwdV9pY2FjaGVfbGluZV9zaXplKCk7CiAKQEAgLTI2OCw3ICsyNjgsNyBAQAogCiBzdGF0aWMgdm9pZCAoKiByNGtfYmxhc3Rfc2NhY2hlX3BhZ2UpKHVuc2lnbmVkIGxvbmcgYWRkcik7CiAKLXN0YXRpYyB2b2lkIF9faW5pdCByNGtfYmxhc3Rfc2NhY2hlX3BhZ2Vfc2V0dXAodm9pZCkKK3N0YXRpYyB2b2lkIF9fY3B1aW5pdCByNGtfYmxhc3Rfc2NhY2hlX3BhZ2Vfc2V0dXAodm9pZCkKIHsKIAl1bnNpZ25lZCBsb25nIHNjX2xzaXplID0gY3B1X3NjYWNoZV9saW5lX3NpemUoKTsKIApAQCAtMjg2LDcgKzI4Niw3IEBACiAKIHN0YXRpYyB2b2lkICgqIHI0a19ibGFzdF9zY2FjaGVfcGFnZV9pbmRleGVkKSh1bnNpZ25lZCBsb25nIGFkZHIpOwogCi1zdGF0aWMgdm9pZCBfX2luaXQgcjRrX2JsYXN0X3NjYWNoZV9wYWdlX2luZGV4ZWRfc2V0dXAodm9pZCkKK3N0YXRpYyB2b2lkIF9fY3B1aW5pdCByNGtfYmxhc3Rfc2NhY2hlX3BhZ2VfaW5kZXhlZF9zZXR1cCh2b2lkKQogewogCXVuc2lnbmVkIGxvbmcgc2NfbHNpemUgPSBjcHVfc2NhY2hlX2xpbmVfc2l6ZSgpOwogCkBAIC0zMDQsNyArMzA0LDcgQEAKIAogc3RhdGljIHZvaWQgKCogcjRrX2JsYXN0X3NjYWNoZSkodm9pZCk7CiAKLXN0YXRpYyB2b2lkIF9faW5pdCByNGtfYmxhc3Rfc2NhY2hlX3NldHVwKHZvaWQpCitzdGF0aWMgdm9pZCBfX2NwdWluaXQgcjRrX2JsYXN0X3NjYWNoZV9zZXR1cCh2b2lkKQogewogCXVuc2lnbmVkIGxvbmcgc2NfbHNpemUgPSBjcHVfc2NhY2hlX2xpbmVfc2l6ZSgpOwogCkBAIC0zNjEsNiArMzYxLDE2IEBACiAjZW5kaWYKIH0KIAorc3RhdGljIHZvaWQgcjRrX19mbHVzaF9jYWNoZV92bWFwKHZvaWQpCit7CisJcjRrX2JsYXN0X2RjYWNoZSgpOworfQorCitzdGF0aWMgdm9pZCByNGtfX2ZsdXNoX2NhY2hlX3Z1bm1hcCh2b2lkKQoreworCXI0a19ibGFzdF9kY2FjaGUoKTsKK30KKwogc3RhdGljIGlubGluZSB2b2lkIGxvY2FsX3I0a19mbHVzaF9jYWNoZV9yYW5nZSh2b2lkICogYXJncykKIHsKIAlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSA9IGFyZ3M7CkBAIC02OTEsMTEgKzcwMSwxMSBAQAogCX0KIH0KIAotc3RhdGljIGNoYXIgKndheV9zdHJpbmdbXSBfX2luaXRkYXRhID0geyBOVUxMLCAiZGlyZWN0IG1hcHBlZCIsICIyLXdheSIsCitzdGF0aWMgY2hhciAqd2F5X3N0cmluZ1tdIF9fY3B1aW5pdGRhdGEgPSB7IE5VTEwsICJkaXJlY3QgbWFwcGVkIiwgIjItd2F5IiwKIAkiMy13YXkiLCAiNC13YXkiLCAiNS13YXkiLCAiNi13YXkiLCAiNy13YXkiLCAiOC13YXkiCiB9OwogCi1zdGF0aWMgdm9pZCBfX2luaXQgcHJvYmVfcGNhY2hlKHZvaWQpCitzdGF0aWMgdm9pZCBfX2NwdWluaXQgcHJvYmVfcGNhY2hlKHZvaWQpCiB7CiAJc3RydWN0IGNwdWluZm9fbWlwcyAqYyA9ICZjdXJyZW50X2NwdV9kYXRhOwogCXVuc2lnbmVkIGludCBjb25maWcgPSByZWFkX2MwX2NvbmZpZygpOwpAQCAtMTAxNiw3ICsxMDI2LDcgQEAKICAqIGV4ZWN1dGVzIGluIEtTRUcxIHNwYWNlIG9yIGVsc2UgeW91IHdpbGwgY3Jhc2ggYW5kIGJ1cm4gYmFkbHkuICBZb3UgaGF2ZQogICogYmVlbiB3YXJuZWQuCiAgKi8KLXN0YXRpYyBpbnQgX19pbml0IHByb2JlX3NjYWNoZSh2b2lkKQorc3RhdGljIGludCBfX2NwdWluaXQgcHJvYmVfc2NhY2hlKHZvaWQpCiB7CiAJdW5zaWduZWQgbG9uZyBmbGFncywgYWRkciwgYmVnaW4sIGVuZCwgcG93MjsKIAl1bnNpZ25lZCBpbnQgY29uZmlnID0gcmVhZF9jMF9jb25maWcoKTsKQEAgLTEwOTUsNyArMTEwNSw3IEBACiBleHRlcm4gaW50IHJtN2tfc2NfaW5pdCh2b2lkKTsKIGV4dGVybiBpbnQgbWlwc19zY19pbml0KHZvaWQpOwogCi1zdGF0aWMgdm9pZCBfX2luaXQgc2V0dXBfc2NhY2hlKHZvaWQpCitzdGF0aWMgdm9pZCBfX2NwdWluaXQgc2V0dXBfc2NhY2hlKHZvaWQpCiB7CiAJc3RydWN0IGNwdWluZm9fbWlwcyAqYyA9ICZjdXJyZW50X2NwdV9kYXRhOwogCXVuc2lnbmVkIGludCBjb25maWcgPSByZWFkX2MwX2NvbmZpZygpOwpAQCAtMTIwNiw3ICsxMjE2LDcgQEAKIAl9CiB9CiAKLXN0YXRpYyB2b2lkIF9faW5pdCBjb2hlcmVuY3lfc2V0dXAodm9pZCkKK3N0YXRpYyB2b2lkIF9fY3B1aW5pdCBjb2hlcmVuY3lfc2V0dXAodm9pZCkKIHsKIAljaGFuZ2VfYzBfY29uZmlnKENPTkZfQ01fQ01BU0ssIENPTkZfQ01fREVGQVVMVCk7CiAKQEAgLTEyMzgsNyArMTI0OCw3IEBACiAJfQogfQogCi12b2lkIF9faW5pdCByNGtfY2FjaGVfaW5pdCh2b2lkKQordm9pZCBfX2NwdWluaXQgcjRrX2NhY2hlX2luaXQodm9pZCkKIHsKIAlleHRlcm4gdm9pZCBidWlsZF9jbGVhcl9wYWdlKHZvaWQpOwogCWV4dGVybiB2b2lkIGJ1aWxkX2NvcHlfcGFnZSh2b2lkKTsKQEAgLTEyODEsNiArMTI5MSwxMCBAQAogCQkJCQlQQUdFX1NJWkUgLSAxKTsKIAllbHNlCiAJCXNobV9hbGlnbl9tYXNrID0gUEFHRV9TSVpFLTE7CisKKwlfX2ZsdXNoX2NhY2hlX3ZtYXAJPSByNGtfX2ZsdXNoX2NhY2hlX3ZtYXA7CisJX19mbHVzaF9jYWNoZV92dW5tYXAJPSByNGtfX2ZsdXNoX2NhY2hlX3Z1bm1hcDsKKwogCWZsdXNoX2NhY2hlX2FsbAkJPSBjYWNoZV9ub29wOwogCV9fZmx1c2hfY2FjaGVfYWxsCT0gcjRrX19fZmx1c2hfY2FjaGVfYWxsOwogCWZsdXNoX2NhY2hlX21tCQk9IHI0a19mbHVzaF9jYWNoZV9tbTsKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9tbS9jLXR4MzkuYyBiL2FyY2gvbWlwcy9tbS9jLXR4MzkuYwppbmRleCA5ZWExMjFlLi5hOWY3ZjFmIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvbW0vYy10eDM5LmMKKysrIGIvYXJjaC9taXBzL21tL2MtdHgzOS5jCkBAIC0xMjIsNiArMTIyLDE2IEBACiAJbG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOwogfQogCitzdGF0aWMgdm9pZCB0eDM5X19mbHVzaF9jYWNoZV92bWFwKHZvaWQpCit7CisJdHgzOV9ibGFzdF9kY2FjaGUoKTsKK30KKworc3RhdGljIHZvaWQgdHgzOV9fZmx1c2hfY2FjaGVfdnVubWFwKHZvaWQpCit7CisJdHgzOV9ibGFzdF9kY2FjaGUoKTsKK30KKwogc3RhdGljIGlubGluZSB2b2lkIHR4MzlfZmx1c2hfY2FjaGVfYWxsKHZvaWQpCiB7CiAJaWYgKCFjcHVfaGFzX2RjX2FsaWFzZXMpCkBAIC0zMjksNyArMzM5LDcgQEAKIAl9CiB9CiAKLXZvaWQgX19pbml0IHR4MzlfY2FjaGVfaW5pdCh2b2lkKQordm9pZCBfX2NwdWluaXQgdHgzOV9jYWNoZV9pbml0KHZvaWQpCiB7CiAJZXh0ZXJuIHZvaWQgYnVpbGRfY2xlYXJfcGFnZSh2b2lkKTsKIAlleHRlcm4gdm9pZCBidWlsZF9jb3B5X3BhZ2Uodm9pZCk7CkBAIC0zNDQsNiArMzU0LDggQEAKIAlzd2l0Y2ggKGN1cnJlbnRfY3B1X3R5cGUoKSkgewogCWNhc2UgQ1BVX1RYMzkxMjoKIAkJLyogVFgzOS9IIGNvcmUgKHdyaXRldGhydSBkaXJlY3QtbWFwIGNhY2hlKSAqLworCQlfX2ZsdXNoX2NhY2hlX3ZtYXAJPSB0eDM5X19mbHVzaF9jYWNoZV92bWFwOworCQlfX2ZsdXNoX2NhY2hlX3Z1bm1hcAk9IHR4MzlfX2ZsdXNoX2NhY2hlX3Z1bm1hcDsKIAkJZmx1c2hfY2FjaGVfYWxsCT0gdHgzOWhfZmx1c2hfaWNhY2hlX2FsbDsKIAkJX19mbHVzaF9jYWNoZV9hbGwJPSB0eDM5aF9mbHVzaF9pY2FjaGVfYWxsOwogCQlmbHVzaF9jYWNoZV9tbQkJPSAodm9pZCAqKSB0eDM5aF9mbHVzaF9pY2FjaGVfYWxsOwpAQCAtMzY5LDYgKzM4MSw5IEBACiAJCXdyaXRlX2MwX3dpcmVkKDApOwkvKiBzZXQgOCBvbiByZXNldC4uLiAqLwogCQkvKiBib2FyZC1kZXBlbmRlbnQgaW5pdCBjb2RlIG1heSBzZXQgV0JPTiAqLwogCisJCV9fZmx1c2hfY2FjaGVfdm1hcAk9IHR4MzlfX2ZsdXNoX2NhY2hlX3ZtYXA7CisJCV9fZmx1c2hfY2FjaGVfdnVubWFwCT0gdHgzOV9fZmx1c2hfY2FjaGVfdnVubWFwOworCiAJCWZsdXNoX2NhY2hlX2FsbCA9IHR4MzlfZmx1c2hfY2FjaGVfYWxsOwogCQlfX2ZsdXNoX2NhY2hlX2FsbCA9IHR4MzlfX19mbHVzaF9jYWNoZV9hbGw7CiAJCWZsdXNoX2NhY2hlX21tID0gdHgzOV9mbHVzaF9jYWNoZV9tbTsKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9tbS9jYWNoZS5jIGIvYXJjaC9taXBzL21tL2NhY2hlLmMKaW5kZXggNmEyNDY1MS4uZjU5MDM2NyAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL21tL2NhY2hlLmMKKysrIGIvYXJjaC9taXBzL21tL2NhY2hlLmMKQEAgLTMwLDYgKzMwLDkgQEAKIAl1bnNpZ25lZCBsb25nIHBmbik7CiB2b2lkICgqZmx1c2hfaWNhY2hlX3JhbmdlKSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCk7CiAKK3ZvaWQgKCpfX2ZsdXNoX2NhY2hlX3ZtYXApKHZvaWQpOwordm9pZCAoKl9fZmx1c2hfY2FjaGVfdnVubWFwKSh2b2lkKTsKKwogLyogTUlQUyBzcGVjaWZpYyBjYWNoZSBvcGVyYXRpb25zICovCiB2b2lkICgqZmx1c2hfY2FjaGVfc2lndHJhbXApKHVuc2lnbmVkIGxvbmcgYWRkcik7CiB2b2lkICgqbG9jYWxfZmx1c2hfZGF0YV9jYWNoZV9wYWdlKSh2b2lkICogYWRkcik7CkBAIC0xMjcsOSArMTMwLDEwIEBACiAJfQogfQogCi1zdGF0aWMgY2hhciBjYWNoZV9wYW5pY1tdIF9faW5pdGRhdGEgPSAiWWVlZSwgdW5zdXBwb3J0ZWQgY2FjaGUgYXJjaGl0ZWN0dXJlLiI7CitzdGF0aWMgY2hhciBjYWNoZV9wYW5pY1tdIF9fY3B1aW5pdGRhdGEgPQorCSJZZWVlLCB1bnN1cHBvcnRlZCBjYWNoZSBhcmNoaXRlY3R1cmUuIjsKIAotdm9pZCBfX2luaXQgY3B1X2NhY2hlX2luaXQodm9pZCkKK3ZvaWQgX19kZXZpbml0IGNwdV9jYWNoZV9pbml0KHZvaWQpCiB7CiAJaWYgKGNwdV9oYXNfM2tfY2FjaGUpIHsKIAkJZXh0ZXJuIHZvaWQgX193ZWFrIHIza19jYWNoZV9pbml0KHZvaWQpOwpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL21tL2NleC1zYjEuUyBiL2FyY2gvbWlwcy9tbS9jZXgtc2IxLlMKaW5kZXggZTU0YTYyZi4uMmQwODI2OCAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL21tL2NleC1zYjEuUworKysgYi9hcmNoL21pcHMvbW0vY2V4LXNiMS5TCkBAIC0zNCw4ICszNCw2IEBACiAJICogaXMgY2hhbmdlZC4KIAkgKi8KIAotICAgICAgICBfX0lOSVQKLQogCS5zZXQJbWlwczY0CiAJLnNldAlub3Jlb3JkZXIKIAkuc2V0CW5vYXQKQEAgLTUxLDYgKzQ5LDggQEAKIAkgKiAoMHgxNzAtMHgxN2YpIGFyZSB1c2VkIHRvIHByZXNlcnZlIGswLCBrMSwgYW5kIHJhLgogCSAqLwogCisJX19DUFVJTklUCisKIExFQUYoZXhjZXB0X3ZlYzJfc2IxKQogCS8qCiAJICogSWYgdGhpcyBlcnJvciBpcyByZWNvdmVyYWJsZSwgd2UgbmVlZCB0byBleGl0IHRoZSBoYW5kbGVyCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbW0vcGctcjRrLmMgYi9hcmNoL21pcHMvbW0vcGctcjRrLmMKaW5kZXggOTE4NWZiZi4uNDU1ZGVkYiAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL21tL3BnLXI0ay5jCisrKyBiL2FyY2gvbWlwcy9tbS9wZy1yNGsuYwpAQCAtNjYsMjEgKzY2LDIxIEBACiAgKiB3aXRoIDY0LWJpdCBrZXJuZWxzLiAgVGhlIHByZWZldGNoIG9mZnNldHMgaGF2ZSBiZWVuIGV4cGVyaW1lbnRhbGx5IHR1bmVkCiAgKiBhbiBPcmlnaW4gMjAwLgogICovCi1zdGF0aWMgaW50IHByZWZfb2Zmc2V0X2NsZWFyIF9faW5pdGRhdGEgPSA1MTI7Ci1zdGF0aWMgaW50IHByZWZfb2Zmc2V0X2NvcHkgIF9faW5pdGRhdGEgPSAyNTY7CitzdGF0aWMgaW50IHByZWZfb2Zmc2V0X2NsZWFyIF9fY3B1aW5pdGRhdGEgPSA1MTI7CitzdGF0aWMgaW50IHByZWZfb2Zmc2V0X2NvcHkgIF9fY3B1aW5pdGRhdGEgPSAyNTY7CiAKLXN0YXRpYyB1bnNpZ25lZCBpbnQgcHJlZl9zcmNfbW9kZSBfX2luaXRkYXRhOwotc3RhdGljIHVuc2lnbmVkIGludCBwcmVmX2RzdF9tb2RlIF9faW5pdGRhdGE7CitzdGF0aWMgdW5zaWduZWQgaW50IHByZWZfc3JjX21vZGUgX19jcHVpbml0ZGF0YTsKK3N0YXRpYyB1bnNpZ25lZCBpbnQgcHJlZl9kc3RfbW9kZSBfX2NwdWluaXRkYXRhOwogCi1zdGF0aWMgaW50IGxvYWRfb2Zmc2V0IF9faW5pdGRhdGE7Ci1zdGF0aWMgaW50IHN0b3JlX29mZnNldCBfX2luaXRkYXRhOworc3RhdGljIGludCBsb2FkX29mZnNldCBfX2NwdWluaXRkYXRhOworc3RhdGljIGludCBzdG9yZV9vZmZzZXQgX19jcHVpbml0ZGF0YTsKIAotc3RhdGljIHVuc2lnbmVkIGludCBfX2luaXRkYXRhICpkZXN0LCAqZXBjOworc3RhdGljIHVuc2lnbmVkIGludCBfX2NwdWluaXRkYXRhICpkZXN0LCAqZXBjOwogCiBzdGF0aWMgdW5zaWduZWQgaW50IGluc3RydWN0aW9uX3BlbmRpbmc7CiBzdGF0aWMgdW5pb24gbWlwc19pbnN0cnVjdGlvbiBkZWxheWVkX21pOwogCi1zdGF0aWMgdm9pZCBfX2luaXQgZW1pdF9pbnN0cnVjdGlvbih1bmlvbiBtaXBzX2luc3RydWN0aW9uIG1pKQorc3RhdGljIHZvaWQgX19jcHVpbml0IGVtaXRfaW5zdHJ1Y3Rpb24odW5pb24gbWlwc19pbnN0cnVjdGlvbiBtaSkKIHsKIAlpZiAoaW5zdHJ1Y3Rpb25fcGVuZGluZykKIAkJKmVwYysrID0gZGVsYXllZF9taS53b3JkOwpAQCAtMjIyLDcgKzIyMiw3IEBACiAJZW1pdF9pbnN0cnVjdGlvbihtaSk7CiB9CiAKLXN0YXRpYyB2b2lkIF9faW5pdCBfX2J1aWxkX3N0b3JlX3JlZyhpbnQgcmVnKQorc3RhdGljIHZvaWQgX19jcHVpbml0IF9fYnVpbGRfc3RvcmVfcmVnKGludCByZWcpCiB7CiAJdW5pb24gbWlwc19pbnN0cnVjdGlvbiBtaTsKIAl1bnNpZ25lZCBpbnQgd2lkdGg7CkBAIC0zMzksNyArMzM5LDcgQEAKIAlmbHVzaF9kZWxheV9zbG90X29yX25vcCgpOwogfQogCi12b2lkIF9faW5pdCBidWlsZF9jbGVhcl9wYWdlKHZvaWQpCit2b2lkIF9fY3B1aW5pdCBidWlsZF9jbGVhcl9wYWdlKHZvaWQpCiB7CiAJdW5zaWduZWQgaW50IGxvb3Bfc3RhcnQ7CiAJdW5zaWduZWQgbG9uZyBvZmY7CkBAIC00NDIsNyArNDQyLDcgQEAKIAlwcl9kZWJ1ZygiXHQuc2V0IHBvcFxuIik7CiB9CiAKLXZvaWQgX19pbml0IGJ1aWxkX2NvcHlfcGFnZSh2b2lkKQordm9pZCBfX2NwdWluaXQgYnVpbGRfY29weV9wYWdlKHZvaWQpCiB7CiAJdW5zaWduZWQgaW50IGxvb3Bfc3RhcnQ7CiAJdW5zaWduZWQgbG9uZyBvZmY7CmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbW0vcGctc2IxLmMgYi9hcmNoL21pcHMvbW0vcGctc2IxLmMKaW5kZXggODk5MjVlYy4uNDllMjg5ZCAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL21tL3BnLXNiMS5jCisrKyBiL2FyY2gvbWlwcy9tbS9wZy1zYjEuYwpAQCAtMjkzLDEwICsyOTMsMTAgQEAKIEVYUE9SVF9TWU1CT0woY2xlYXJfcGFnZSk7CiBFWFBPUlRfU1lNQk9MKGNvcHlfcGFnZSk7CiAKLXZvaWQgX19pbml0IGJ1aWxkX2NsZWFyX3BhZ2Uodm9pZCkKK3ZvaWQgX19jcHVpbml0IGJ1aWxkX2NsZWFyX3BhZ2Uodm9pZCkKIHsKIH0KIAotdm9pZCBfX2luaXQgYnVpbGRfY29weV9wYWdlKHZvaWQpCit2b2lkIF9fY3B1aW5pdCBidWlsZF9jb3B5X3BhZ2Uodm9pZCkKIHsKIH0KZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9tbS9zYy1pcDIyLmMgYi9hcmNoL21pcHMvbW0vc2MtaXAyMi5jCmluZGV4IGQyMzZjZjguLjFmNjAyYTEgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9tbS9zYy1pcDIyLmMKKysrIGIvYXJjaC9taXBzL21tL3NjLWlwMjIuYwpAQCAtMTY4LDcgKzE2OCw3IEBACiAJLmJjX2ludiA9IGluZHlfc2Nfd2JhY2tfaW52YWxpZGF0ZQogfTsKIAotdm9pZCBfX2luaXQgaW5keV9zY19pbml0KHZvaWQpCit2b2lkIF9fY3B1aW5pdCBpbmR5X3NjX2luaXQodm9pZCkKIHsKIAlpZiAoaW5keV9zY19wcm9iZSgpKSB7CiAJCWluZHlfc2NfZW5hYmxlKCk7CmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbW0vc2MtbWlwcy5jIGIvYXJjaC9taXBzL21tL3NjLW1pcHMuYwppbmRleCBjMTMxNzBiLi5iNTVjMmQxIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvbW0vc2MtbWlwcy5jCisrKyBiL2FyY2gvbWlwcy9tbS9zYy1taXBzLmMKQEAgLTEwMCw3ICsxMDAsNyBAQAogCXJldHVybiAxOwogfQogCi1pbnQgX19pbml0IG1pcHNfc2NfaW5pdCh2b2lkKQoraW50IF9fY3B1aW5pdCBtaXBzX3NjX2luaXQodm9pZCkKIHsKIAlpbnQgZm91bmQgPSBtaXBzX3NjX3Byb2JlKCk7CiAJaWYgKGZvdW5kKSB7CkBAIC0xMDksNCArMTA5LDMgQEAKIAl9CiAJcmV0dXJuIGZvdW5kOwogfQotCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbW0vc2MtcjVrLmMgYi9hcmNoL21pcHMvbW0vc2MtcjVrLmMKaW5kZXggZDM1YjZjMS4uZjMzMGQzOCAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL21tL3NjLXI1ay5jCisrKyBiL2FyY2gvbWlwcy9tbS9zYy1yNWsuYwpAQCAtOTksNyArOTksNyBAQAogCS5iY19pbnYgPSByNWtfZG1hX2NhY2hlX2ludl9zYwogfTsKIAotdm9pZCBfX2luaXQgcjVrX3NjX2luaXQodm9pZCkKK3ZvaWQgX19jcHVpbml0IHI1a19zY19pbml0KHZvaWQpCiB7CiAJaWYgKHI1a19zY19wcm9iZSgpKSB7CiAJCXI1a19zY19lbmFibGUoKTsKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9tbS9zYy1ybTdrLmMgYi9hcmNoL21pcHMvbW0vc2Mtcm03ay5jCmluZGV4IDMxZWM3MzAuLmZjMjI3ZjMgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9tbS9zYy1ybTdrLmMKKysrIGIvYXJjaC9taXBzL21tL3NjLXJtN2suYwpAQCAtMTI4LDcgKzEyOCw3IEBACiAJLmJjX2ludiA9IHJtN2tfc2NfaW52CiB9OwogCi12b2lkIF9faW5pdCBybTdrX3NjX2luaXQodm9pZCkKK3ZvaWQgX19jcHVpbml0IHJtN2tfc2NfaW5pdCh2b2lkKQogewogCXN0cnVjdCBjcHVpbmZvX21pcHMgKmMgPSAmY3VycmVudF9jcHVfZGF0YTsKIAl1bnNpZ25lZCBpbnQgY29uZmlnID0gcmVhZF9jMF9jb25maWcoKTsKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9tbS90bGItcjNrLmMgYi9hcmNoL21pcHMvbW0vdGxiLXIzay5jCmluZGV4IDc5NDhlOWEuLmE3ODI1NDkgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9tbS90bGItcjNrLmMKKysrIGIvYXJjaC9taXBzL21tL3RsYi1yM2suYwpAQCAtMjgxLDcgKzI4MSw3IEBACiAJfQogfQogCi12b2lkIF9faW5pdCB0bGJfaW5pdCh2b2lkKQordm9pZCBfX2NwdWluaXQgdGxiX2luaXQodm9pZCkKIHsKIAlsb2NhbF9mbHVzaF90bGJfYWxsKCk7CiAKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9tbS90bGItcjRrLmMgYi9hcmNoL21pcHMvbW0vdGxiLXI0ay5jCmluZGV4IDc0YWUwMzQuLjYzMDY1ZDYgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9tbS90bGItcjRrLmMKKysrIGIvYXJjaC9taXBzL21tL3RsYi1yNGsuYwpAQCAtMzg4LDcgKzM4OCw3IEBACiAgKiBsaWZldGltZSBvZiB0aGUgc3lzdGVtCiAgKi8KIAotc3RhdGljIGludCB0ZW1wX3RsYl9lbnRyeSBfX2luaXRkYXRhOworc3RhdGljIGludCB0ZW1wX3RsYl9lbnRyeSBfX2NwdWluaXRkYXRhOwogCiBfX2luaXQgaW50IGFkZF90ZW1wb3JhcnlfZW50cnkodW5zaWduZWQgbG9uZyBlbnRyeWxvMCwgdW5zaWduZWQgbG9uZyBlbnRyeWxvMSwKIAkJCSAgICAgICB1bnNpZ25lZCBsb25nIGVudHJ5aGksIHVuc2lnbmVkIGxvbmcgcGFnZW1hc2spCkBAIC00MjcsNyArNDI3LDcgQEAKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgdm9pZCBfX2luaXQgcHJvYmVfdGxiKHVuc2lnbmVkIGxvbmcgY29uZmlnKQorc3RhdGljIHZvaWQgX19jcHVpbml0IHByb2JlX3RsYih1bnNpZ25lZCBsb25nIGNvbmZpZykKIHsKIAlzdHJ1Y3QgY3B1aW5mb19taXBzICpjID0gJmN1cnJlbnRfY3B1X2RhdGE7CiAJdW5zaWduZWQgaW50IHJlZzsKQEAgLTQ1NSw3ICs0NTUsNyBAQAogCWMtPnRsYnNpemUgPSAoKHJlZyA+PiAyNSkgJiAweDNmKSArIDE7CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0ZGF0YSBudGxiID0gMDsKK3N0YXRpYyBpbnQgX19jcHVpbml0ZGF0YSBudGxiID0gMDsKIHN0YXRpYyBpbnQgX19pbml0IHNldF9udGxiKGNoYXIgKnN0cikKIHsKIAlnZXRfb3B0aW9uKCZzdHIsICZudGxiKTsKQEAgLTQ2NCw3ICs0NjQsNyBAQAogCiBfX3NldHVwKCJudGxiPSIsIHNldF9udGxiKTsKIAotdm9pZCBfX2luaXQgdGxiX2luaXQodm9pZCkKK3ZvaWQgX19jcHVpbml0IHRsYl9pbml0KHZvaWQpCiB7CiAJdW5zaWduZWQgaW50IGNvbmZpZyA9IHJlYWRfYzBfY29uZmlnKCk7CiAKQEAgLTQ3Myw3ICs0NzMsNyBAQAogCSAqICAgLSBPbiBSNDYwMCAxLjcgdGhlIHRsYnAgbmV2ZXIgaGl0cyBmb3IgcGFnZXMgc21hbGxlciB0aGFuCiAJICogICAgIHRoZSB2YWx1ZSBpbiB0aGUgYzBfcGFnZW1hc2sgcmVnaXN0ZXIuCiAJICogICAtIFRoZSBlbnRpcmUgbW0gaGFuZGxpbmcgYXNzdW1lcyB0aGUgYzBfcGFnZW1hc2sgcmVnaXN0ZXIgdG8KLQkgKiAgICAgYmUgc2V0IGZvciA0a2IgcGFnZXMuCisJICogICAgIGJlIHNldCB0byBmaXhlZC1zaXplIHBhZ2VzLgogCSAqLwogCXByb2JlX3RsYihjb25maWcpOwogCXdyaXRlX2MwX3BhZ2VtYXNrKFBNX0RFRkFVTFRfTUFTSyk7CmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbW0vdGxiLXI4ay5jIGIvYXJjaC9taXBzL21tL3RsYi1yOGsuYwppbmRleCBiZDg0MDlkLi40ZjAxYTNiIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvbW0vdGxiLXI4ay5jCisrKyBiL2FyY2gvbWlwcy9tbS90bGItcjhrLmMKQEAgLTIxNCwxNCArMjE0LDE0IEBACiAJbG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOwogfQogCi1zdGF0aWMgdm9pZCBfX2luaXQgcHJvYmVfdGxiKHVuc2lnbmVkIGxvbmcgY29uZmlnKQorc3RhdGljIHZvaWQgX19jcHVpbml0IHByb2JlX3RsYih1bnNpZ25lZCBsb25nIGNvbmZpZykKIHsKIAlzdHJ1Y3QgY3B1aW5mb19taXBzICpjID0gJmN1cnJlbnRfY3B1X2RhdGE7CiAKIAljLT50bGJzaXplID0gMyAqIDEyODsJCS8qIDMgc2V0cyBlYWNoIDEyOCBlbnRyaWVzICovCiB9CiAKLXZvaWQgX19pbml0IHRsYl9pbml0KHZvaWQpCit2b2lkIF9fY3B1aW5pdCB0bGJfaW5pdCh2b2lkKQogewogCXVuc2lnbmVkIGludCBjb25maWcgPSByZWFkX2MwX2NvbmZpZygpOwogCXVuc2lnbmVkIGxvbmcgc3RhdHVzOwpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL21tL3RsYmV4LmMgYi9hcmNoL21pcHMvbW0vdGxiZXguYwppbmRleCAyMThhNmNjLi4zODI3MzhjIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvbW0vdGxiZXguYworKysgYi9hcmNoL21pcHMvbW0vdGxiZXguYwpAQCAtNjAsNyArNjAsNyBAQAogICogd2h5OyBpdCdzIG5vdCBhbiBpc3N1ZSBjYXVzZWQgYnkgdGhlIGNvcmUgUlRMLgogICoKICAqLwotc3RhdGljIGludCBfX2luaXQgbTRrY190bGJwX3dhcih2b2lkKQorc3RhdGljIGludCBfX2NwdWluaXQgbTRrY190bGJwX3dhcih2b2lkKQogewogCXJldHVybiAoY3VycmVudF9jcHVfZGF0YS5wcm9jZXNzb3JfaWQgJiAweGZmZmYwMCkgPT0KIAkgICAgICAgKFBSSURfQ09NUF9NSVBTIHwgUFJJRF9JTVBfNEtDKTsKQEAgLTE0NCwxNiArMTQ0LDE2IEBACiAgKiBXZSBkZWxpYmVyYXRlbHkgY2hvc2UgYSBidWZmZXIgc2l6ZSBvZiAxMjgsIHNvIHdlIHdvbid0IHNjcmliYmxlCiAgKiBvdmVyIGFueXRoaW5nIGltcG9ydGFudCBvbiBvdmVyZmxvdyBiZWZvcmUgd2UgcGFuaWMuCiAgKi8KLXN0YXRpYyB1MzIgdGxiX2hhbmRsZXJbMTI4XSBfX2luaXRkYXRhOworc3RhdGljIHUzMiB0bGJfaGFuZGxlclsxMjhdIF9fY3B1aW5pdGRhdGE7CiAKIC8qIHNpbXBseSBhc3N1bWUgd29yc3QgY2FzZSBzaXplIGZvciBsYWJlbHMgYW5kIHJlbG9jcyAqLwotc3RhdGljIHN0cnVjdCB1YXNtX2xhYmVsIGxhYmVsc1sxMjhdIF9faW5pdGRhdGE7Ci1zdGF0aWMgc3RydWN0IHVhc21fcmVsb2MgcmVsb2NzWzEyOF0gX19pbml0ZGF0YTsKK3N0YXRpYyBzdHJ1Y3QgdWFzbV9sYWJlbCBsYWJlbHNbMTI4XSBfX2NwdWluaXRkYXRhOworc3RhdGljIHN0cnVjdCB1YXNtX3JlbG9jIHJlbG9jc1sxMjhdIF9fY3B1aW5pdGRhdGE7CiAKIC8qCiAgKiBUaGUgUjMwMDAgVExCIGhhbmRsZXIgaXMgc2ltcGxlLgogICovCi1zdGF0aWMgdm9pZCBfX2luaXQgYnVpbGRfcjMwMDBfdGxiX3JlZmlsbF9oYW5kbGVyKHZvaWQpCitzdGF0aWMgdm9pZCBfX2NwdWluaXQgYnVpbGRfcjMwMDBfdGxiX3JlZmlsbF9oYW5kbGVyKHZvaWQpCiB7CiAJbG9uZyBwZ2RjID0gKGxvbmcpcGdkX2N1cnJlbnQ7CiAJdTMyICpwOwpAQCAtMTk3LDcgKzE5Nyw3IEBACiAgKiBvdGhlciBvbmUuVG8ga2VlcCB0aGluZ3Mgc2ltcGxlLCB3ZSBmaXJzdCBhc3N1bWUgbGluZWFyIHNwYWNlLAogICogdGhlbiB3ZSByZWxvY2F0ZSBpdCB0byB0aGUgZmluYWwgaGFuZGxlciBsYXlvdXQgYXMgbmVlZGVkLgogICovCi1zdGF0aWMgdTMyIGZpbmFsX2hhbmRsZXJbNjRdIF9faW5pdGRhdGE7CitzdGF0aWMgdTMyIGZpbmFsX2hhbmRsZXJbNjRdIF9fY3B1aW5pdGRhdGE7CiAKIC8qCiAgKiBIYXphcmRzCkBAIC0yMjEsNyArMjIxLDcgQEAKICAqCiAgKiBBcyBpZiB3ZSBNSVBTIGhhY2tlcnMgd291bGRuJ3Qga25vdyBob3cgdG8gbm9wIHBpcGVsaW5lcyBoYXBweSAuLi4KICAqLwotc3RhdGljIHZvaWQgX19pbml0IF9fbWF5YmVfdW51c2VkIGJ1aWxkX3RsYl9wcm9iZV9lbnRyeSh1MzIgKipwKQorc3RhdGljIHZvaWQgX19jcHVpbml0IF9fbWF5YmVfdW51c2VkIGJ1aWxkX3RsYl9wcm9iZV9lbnRyeSh1MzIgKipwKQogewogCXN3aXRjaCAoY3VycmVudF9jcHVfdHlwZSgpKSB7CiAJLyogRm91bmQgYnkgZXhwZXJpbWVudDogUjQ2MDAgdjIuMCBuZWVkcyB0aGlzLCB0b28uICAqLwpAQCAtMjQ1LDcgKzI0NSw3IEBACiAgKi8KIGVudW0gdGxiX3dyaXRlX2VudHJ5IHsgdGxiX3JhbmRvbSwgdGxiX2luZGV4ZWQgfTsKIAotc3RhdGljIHZvaWQgX19pbml0IGJ1aWxkX3RsYl93cml0ZV9lbnRyeSh1MzIgKipwLCBzdHJ1Y3QgdWFzbV9sYWJlbCAqKmwsCitzdGF0aWMgdm9pZCBfX2NwdWluaXQgYnVpbGRfdGxiX3dyaXRlX2VudHJ5KHUzMiAqKnAsIHN0cnVjdCB1YXNtX2xhYmVsICoqbCwKIAkJCQkJIHN0cnVjdCB1YXNtX3JlbG9jICoqciwKIAkJCQkJIGVudW0gdGxiX3dyaXRlX2VudHJ5IHdtb2RlKQogewpAQCAtMzA3LDYgKzMwNyw3IEBACiAJY2FzZSBDUFVfUjEyMDAwOgogCWNhc2UgQ1BVX1IxNDAwMDoKIAljYXNlIENQVV80S0M6CisJY2FzZSBDUFVfNEtFQzoKIAljYXNlIENQVV9TQjE6CiAJY2FzZSBDUFVfU0IxQToKIAljYXNlIENQVV80S1NDOgpAQCAtMzg5LDcgKzM5MCw3IEBACiAgKiBUTVAgYW5kIFBUUiBhcmUgc2NyYXRjaC4KICAqIFRNUCB3aWxsIGJlIGNsb2JiZXJlZCwgUFRSIHdpbGwgaG9sZCB0aGUgcG1kIGVudHJ5LgogICovCi1zdGF0aWMgdm9pZCBfX2luaXQKK3N0YXRpYyB2b2lkIF9fY3B1aW5pdAogYnVpbGRfZ2V0X3BtZGU2NCh1MzIgKipwLCBzdHJ1Y3QgdWFzbV9sYWJlbCAqKmwsIHN0cnVjdCB1YXNtX3JlbG9jICoqciwKIAkJIHVuc2lnbmVkIGludCB0bXAsIHVuc2lnbmVkIGludCBwdHIpCiB7CkBAIC00NTAsNyArNDUxLDcgQEAKICAqIEJWQUREUiBpcyB0aGUgZmF1bHRpbmcgYWRkcmVzcywgUFRSIGlzIHNjcmF0Y2guCiAgKiBQVFIgd2lsbCBob2xkIHRoZSBwZ2QgZm9yIHZtYWxsb2MuCiAgKi8KLXN0YXRpYyB2b2lkIF9faW5pdAorc3RhdGljIHZvaWQgX19jcHVpbml0CiBidWlsZF9nZXRfcGdkX3ZtYWxsb2M2NCh1MzIgKipwLCBzdHJ1Y3QgdWFzbV9sYWJlbCAqKmwsIHN0cnVjdCB1YXNtX3JlbG9jICoqciwKIAkJCXVuc2lnbmVkIGludCBidmFkZHIsIHVuc2lnbmVkIGludCBwdHIpCiB7CkBAIC01MjIsNyArNTIzLDcgQEAKICAqIFRNUCBhbmQgUFRSIGFyZSBzY3JhdGNoLgogICogVE1QIHdpbGwgYmUgY2xvYmJlcmVkLCBQVFIgd2lsbCBob2xkIHRoZSBwZ2QgZW50cnkuCiAgKi8KLXN0YXRpYyB2b2lkIF9faW5pdCBfX21heWJlX3VudXNlZAorc3RhdGljIHZvaWQgX19jcHVpbml0IF9fbWF5YmVfdW51c2VkCiBidWlsZF9nZXRfcGdkZTMyKHUzMiAqKnAsIHVuc2lnbmVkIGludCB0bXAsIHVuc2lnbmVkIGludCBwdHIpCiB7CiAJbG9uZyBwZ2RjID0gKGxvbmcpcGdkX2N1cnJlbnQ7CkBAIC01NTcsNyArNTU4LDcgQEAKIAogI2VuZGlmIC8qICFDT05GSUdfNjRCSVQgKi8KIAotc3RhdGljIHZvaWQgX19pbml0IGJ1aWxkX2FkanVzdF9jb250ZXh0KHUzMiAqKnAsIHVuc2lnbmVkIGludCBjdHgpCitzdGF0aWMgdm9pZCBfX2NwdWluaXQgYnVpbGRfYWRqdXN0X2NvbnRleHQodTMyICoqcCwgdW5zaWduZWQgaW50IGN0eCkKIHsKIAl1bnNpZ25lZCBpbnQgc2hpZnQgPSA0IC0gKFBURV9UX0xPRzIgKyAxKSArIFBBR0VfU0hJRlQgLSAxMjsKIAl1bnNpZ25lZCBpbnQgbWFzayA9IChQVFJTX1BFUl9QVEUgLyAyIC0gMSkgPDwgKFBURV9UX0xPRzIgKyAxKTsKQEAgLTU4Myw3ICs1ODQsNyBAQAogCXVhc21faV9hbmRpKHAsIGN0eCwgY3R4LCBtYXNrKTsKIH0KIAotc3RhdGljIHZvaWQgX19pbml0IGJ1aWxkX2dldF9wdGVwKHUzMiAqKnAsIHVuc2lnbmVkIGludCB0bXAsIHVuc2lnbmVkIGludCBwdHIpCitzdGF0aWMgdm9pZCBfX2NwdWluaXQgYnVpbGRfZ2V0X3B0ZXAodTMyICoqcCwgdW5zaWduZWQgaW50IHRtcCwgdW5zaWduZWQgaW50IHB0cikKIHsKIAkvKgogCSAqIEJ1ZyB3b3JrYXJvdW5kIGZvciB0aGUgTmV2YWRhLiBJdCBzZWVtcyBhcyBpZiB1bmRlciBjZXJ0YWluCkBAIC02MDgsNyArNjA5LDcgQEAKIAlVQVNNX2lfQUREVShwLCBwdHIsIHB0ciwgdG1wKTsgLyogYWRkIGluIG9mZnNldCAqLwogfQogCi1zdGF0aWMgdm9pZCBfX2luaXQgYnVpbGRfdXBkYXRlX2VudHJpZXModTMyICoqcCwgdW5zaWduZWQgaW50IHRtcCwKK3N0YXRpYyB2b2lkIF9fY3B1aW5pdCBidWlsZF91cGRhdGVfZW50cmllcyh1MzIgKipwLCB1bnNpZ25lZCBpbnQgdG1wLAogCQkJCQl1bnNpZ25lZCBpbnQgcHRlcCkKIHsKIAkvKgpAQCAtNjUxLDcgKzY1Miw3IEBACiAjZW5kaWYKIH0KIAotc3RhdGljIHZvaWQgX19pbml0IGJ1aWxkX3I0MDAwX3RsYl9yZWZpbGxfaGFuZGxlcih2b2lkKQorc3RhdGljIHZvaWQgX19jcHVpbml0IGJ1aWxkX3I0MDAwX3RsYl9yZWZpbGxfaGFuZGxlcih2b2lkKQogewogCXUzMiAqcCA9IHRsYl9oYW5kbGVyOwogCXN0cnVjdCB1YXNtX2xhYmVsICpsID0gbGFiZWxzOwpAQCAtNzgzLDcgKzc4NCw3IEBACiB1MzIgaGFuZGxlX3RsYnNbRkFTVFBBVEhfU0laRV0gX19jYWNoZWxpbmVfYWxpZ25lZDsKIHUzMiBoYW5kbGVfdGxibVtGQVNUUEFUSF9TSVpFXSBfX2NhY2hlbGluZV9hbGlnbmVkOwogCi1zdGF0aWMgdm9pZCBfX2luaXQKK3N0YXRpYyB2b2lkIF9fY3B1aW5pdAogaVBURV9MVyh1MzIgKipwLCBzdHJ1Y3QgdWFzbV9sYWJlbCAqKmwsIHVuc2lnbmVkIGludCBwdGUsIHVuc2lnbmVkIGludCBwdHIpCiB7CiAjaWZkZWYgQ09ORklHX1NNUApAQCAtODAzLDcgKzgwNCw3IEBACiAjZW5kaWYKIH0KIAotc3RhdGljIHZvaWQgX19pbml0CitzdGF0aWMgdm9pZCBfX2NwdWluaXQKIGlQVEVfU1codTMyICoqcCwgc3RydWN0IHVhc21fcmVsb2MgKipyLCB1bnNpZ25lZCBpbnQgcHRlLCB1bnNpZ25lZCBpbnQgcHRyLAogCXVuc2lnbmVkIGludCBtb2RlKQogewpAQCAtODYzLDcgKzg2NCw3IEBACiAgKiB0aGUgcGFnZSB0YWJsZSB3aGVyZSB0aGlzIFBURSBpcyBsb2NhdGVkLCBQVEUgd2lsbCBiZSByZS1sb2FkZWQKICAqIHdpdGggaXQncyBvcmlnaW5hbCB2YWx1ZS4KICAqLwotc3RhdGljIHZvaWQgX19pbml0CitzdGF0aWMgdm9pZCBfX2NwdWluaXQKIGJ1aWxkX3B0ZV9wcmVzZW50KHUzMiAqKnAsIHN0cnVjdCB1YXNtX2xhYmVsICoqbCwgc3RydWN0IHVhc21fcmVsb2MgKipyLAogCQkgIHVuc2lnbmVkIGludCBwdGUsIHVuc2lnbmVkIGludCBwdHIsIGVudW0gbGFiZWxfaWQgbGlkKQogewpAQCAtODc0LDcgKzg3NSw3IEBACiB9CiAKIC8qIE1ha2UgUFRFIHZhbGlkLCBzdG9yZSByZXN1bHQgaW4gUFRSLiAqLwotc3RhdGljIHZvaWQgX19pbml0CitzdGF0aWMgdm9pZCBfX2NwdWluaXQKIGJ1aWxkX21ha2VfdmFsaWQodTMyICoqcCwgc3RydWN0IHVhc21fcmVsb2MgKipyLCB1bnNpZ25lZCBpbnQgcHRlLAogCQkgdW5zaWduZWQgaW50IHB0cikKIHsKQEAgLTg4Nyw3ICs4ODgsNyBAQAogICogQ2hlY2sgaWYgUFRFIGNhbiBiZSB3cml0dGVuIHRvLCBpZiBub3QgYnJhbmNoIHRvIExBQkVMLiBSZWdhcmRsZXNzCiAgKiByZXN0b3JlIFBURSB3aXRoIHZhbHVlIGZyb20gUFRSIHdoZW4gZG9uZS4KICAqLwotc3RhdGljIHZvaWQgX19pbml0CitzdGF0aWMgdm9pZCBfX2NwdWluaXQKIGJ1aWxkX3B0ZV93cml0YWJsZSh1MzIgKipwLCBzdHJ1Y3QgdWFzbV9sYWJlbCAqKmwsIHN0cnVjdCB1YXNtX3JlbG9jICoqciwKIAkJICAgdW5zaWduZWQgaW50IHB0ZSwgdW5zaWduZWQgaW50IHB0ciwgZW51bSBsYWJlbF9pZCBsaWQpCiB7CkBAIC05MDAsNyArOTAxLDcgQEAKIC8qIE1ha2UgUFRFIHdyaXRhYmxlLCB1cGRhdGUgc29mdHdhcmUgc3RhdHVzIGJpdHMgYXMgd2VsbCwgdGhlbiBzdG9yZQogICogYXQgUFRSLgogICovCi1zdGF0aWMgdm9pZCBfX2luaXQKK3N0YXRpYyB2b2lkIF9fY3B1aW5pdAogYnVpbGRfbWFrZV93cml0ZSh1MzIgKipwLCBzdHJ1Y3QgdWFzbV9yZWxvYyAqKnIsIHVuc2lnbmVkIGludCBwdGUsCiAJCSB1bnNpZ25lZCBpbnQgcHRyKQogewpAQCAtOTE0LDcgKzkxNSw3IEBACiAgKiBDaGVjayBpZiBQVEUgY2FuIGJlIG1vZGlmaWVkLCBpZiBub3QgYnJhbmNoIHRvIExBQkVMLiBSZWdhcmRsZXNzCiAgKiByZXN0b3JlIFBURSB3aXRoIHZhbHVlIGZyb20gUFRSIHdoZW4gZG9uZS4KICAqLwotc3RhdGljIHZvaWQgX19pbml0CitzdGF0aWMgdm9pZCBfX2NwdWluaXQKIGJ1aWxkX3B0ZV9tb2RpZmlhYmxlKHUzMiAqKnAsIHN0cnVjdCB1YXNtX2xhYmVsICoqbCwgc3RydWN0IHVhc21fcmVsb2MgKipyLAogCQkgICAgIHVuc2lnbmVkIGludCBwdGUsIHVuc2lnbmVkIGludCBwdHIsIGVudW0gbGFiZWxfaWQgbGlkKQogewpAQCAtOTMxLDcgKzkzMiw3IEBACiAgKiBUaGlzIHBsYWNlcyB0aGUgcHRlIGludG8gRU5UUllMTzAgYW5kIHdyaXRlcyBpdCB3aXRoIHRsYndpLgogICogVGhlbiBpdCByZXR1cm5zLgogICovCi1zdGF0aWMgdm9pZCBfX2luaXQKK3N0YXRpYyB2b2lkIF9fY3B1aW5pdAogYnVpbGRfcjMwMDBfcHRlX3JlbG9hZF90bGJ3aSh1MzIgKipwLCB1bnNpZ25lZCBpbnQgcHRlLCB1bnNpZ25lZCBpbnQgdG1wKQogewogCXVhc21faV9tdGMwKHAsIHB0ZSwgQzBfRU5UUllMTzApOyAvKiBjcDAgZGVsYXkgKi8KQEAgLTk0Nyw3ICs5NDgsNyBAQAogICogbWF5IGhhdmUgdGhlIHByb2JlIGZhaWwgYml0IHNldCBhcyBhIHJlc3VsdCBvZiBhIHRyYXAgb24gYQogICoga3NlZzIgYWNjZXNzLCBpLmUuIHdpdGhvdXQgcmVmaWxsLiAgVGhlbiBpdCByZXR1cm5zLgogICovCi1zdGF0aWMgdm9pZCBfX2luaXQKK3N0YXRpYyB2b2lkIF9fY3B1aW5pdAogYnVpbGRfcjMwMDBfdGxiX3JlbG9hZF93cml0ZSh1MzIgKipwLCBzdHJ1Y3QgdWFzbV9sYWJlbCAqKmwsCiAJCQkgICAgIHN0cnVjdCB1YXNtX3JlbG9jICoqciwgdW5zaWduZWQgaW50IHB0ZSwKIAkJCSAgICAgdW5zaWduZWQgaW50IHRtcCkKQEAgLTk2NSw3ICs5NjYsNyBAQAogCXVhc21faV9yZmUocCk7IC8qIGJyYW5jaCBkZWxheSAqLwogfQogCi1zdGF0aWMgdm9pZCBfX2luaXQKK3N0YXRpYyB2b2lkIF9fY3B1aW5pdAogYnVpbGRfcjMwMDBfdGxiY2hhbmdlX2hhbmRsZXJfaGVhZCh1MzIgKipwLCB1bnNpZ25lZCBpbnQgcHRlLAogCQkJCSAgIHVuc2lnbmVkIGludCBwdHIpCiB7CkBAIC05ODUsNyArOTg2LDcgQEAKIAl1YXNtX2lfdGxicChwKTsgLyogbG9hZCBkZWxheSAqLwogfQogCi1zdGF0aWMgdm9pZCBfX2luaXQgYnVpbGRfcjMwMDBfdGxiX2xvYWRfaGFuZGxlcih2b2lkKQorc3RhdGljIHZvaWQgX19jcHVpbml0IGJ1aWxkX3IzMDAwX3RsYl9sb2FkX2hhbmRsZXIodm9pZCkKIHsKIAl1MzIgKnAgPSBoYW5kbGVfdGxibDsKIAlzdHJ1Y3QgdWFzbV9sYWJlbCAqbCA9IGxhYmVsczsKQEAgLTEwMTUsNyArMTAxNiw3IEBACiAJZHVtcF9oYW5kbGVyKGhhbmRsZV90bGJsLCBBUlJBWV9TSVpFKGhhbmRsZV90bGJsKSk7CiB9CiAKLXN0YXRpYyB2b2lkIF9faW5pdCBidWlsZF9yMzAwMF90bGJfc3RvcmVfaGFuZGxlcih2b2lkKQorc3RhdGljIHZvaWQgX19jcHVpbml0IGJ1aWxkX3IzMDAwX3RsYl9zdG9yZV9oYW5kbGVyKHZvaWQpCiB7CiAJdTMyICpwID0gaGFuZGxlX3RsYnM7CiAJc3RydWN0IHVhc21fbGFiZWwgKmwgPSBsYWJlbHM7CkBAIC0xMDQ1LDcgKzEwNDYsNyBAQAogCWR1bXBfaGFuZGxlcihoYW5kbGVfdGxicywgQVJSQVlfU0laRShoYW5kbGVfdGxicykpOwogfQogCi1zdGF0aWMgdm9pZCBfX2luaXQgYnVpbGRfcjMwMDBfdGxiX21vZGlmeV9oYW5kbGVyKHZvaWQpCitzdGF0aWMgdm9pZCBfX2NwdWluaXQgYnVpbGRfcjMwMDBfdGxiX21vZGlmeV9oYW5kbGVyKHZvaWQpCiB7CiAJdTMyICpwID0gaGFuZGxlX3RsYm07CiAJc3RydWN0IHVhc21fbGFiZWwgKmwgPSBsYWJlbHM7CkBAIC0xMDc4LDcgKzEwNzksNyBAQAogLyoKICAqIFI0MDAwIHN0eWxlIFRMQiBsb2FkL3N0b3JlL21vZGlmeSBoYW5kbGVycy4KICAqLwotc3RhdGljIHZvaWQgX19pbml0CitzdGF0aWMgdm9pZCBfX2NwdWluaXQKIGJ1aWxkX3I0MDAwX3RsYmNoYW5nZV9oYW5kbGVyX2hlYWQodTMyICoqcCwgc3RydWN0IHVhc21fbGFiZWwgKipsLAogCQkJCSAgIHN0cnVjdCB1YXNtX3JlbG9jICoqciwgdW5zaWduZWQgaW50IHB0ZSwKIAkJCQkgICB1bnNpZ25lZCBpbnQgcHRyKQpAQCAtMTEwMyw3ICsxMTA0LDcgQEAKIAkJYnVpbGRfdGxiX3Byb2JlX2VudHJ5KHApOwogfQogCi1zdGF0aWMgdm9pZCBfX2luaXQKK3N0YXRpYyB2b2lkIF9fY3B1aW5pdAogYnVpbGRfcjQwMDBfdGxiY2hhbmdlX2hhbmRsZXJfdGFpbCh1MzIgKipwLCBzdHJ1Y3QgdWFzbV9sYWJlbCAqKmwsCiAJCQkJICAgc3RydWN0IHVhc21fcmVsb2MgKipyLCB1bnNpZ25lZCBpbnQgdG1wLAogCQkJCSAgIHVuc2lnbmVkIGludCBwdHIpCkBAIC0xMTIwLDcgKzExMjEsNyBAQAogI2VuZGlmCiB9CiAKLXN0YXRpYyB2b2lkIF9faW5pdCBidWlsZF9yNDAwMF90bGJfbG9hZF9oYW5kbGVyKHZvaWQpCitzdGF0aWMgdm9pZCBfX2NwdWluaXQgYnVpbGRfcjQwMDBfdGxiX2xvYWRfaGFuZGxlcih2b2lkKQogewogCXUzMiAqcCA9IGhhbmRsZV90bGJsOwogCXN0cnVjdCB1YXNtX2xhYmVsICpsID0gbGFiZWxzOwpAQCAtMTE2MCw3ICsxMTYxLDcgQEAKIAlkdW1wX2hhbmRsZXIoaGFuZGxlX3RsYmwsIEFSUkFZX1NJWkUoaGFuZGxlX3RsYmwpKTsKIH0KIAotc3RhdGljIHZvaWQgX19pbml0IGJ1aWxkX3I0MDAwX3RsYl9zdG9yZV9oYW5kbGVyKHZvaWQpCitzdGF0aWMgdm9pZCBfX2NwdWluaXQgYnVpbGRfcjQwMDBfdGxiX3N0b3JlX2hhbmRsZXIodm9pZCkKIHsKIAl1MzIgKnAgPSBoYW5kbGVfdGxiczsKIAlzdHJ1Y3QgdWFzbV9sYWJlbCAqbCA9IGxhYmVsczsKQEAgLTExOTEsNyArMTE5Miw3IEBACiAJZHVtcF9oYW5kbGVyKGhhbmRsZV90bGJzLCBBUlJBWV9TSVpFKGhhbmRsZV90bGJzKSk7CiB9CiAKLXN0YXRpYyB2b2lkIF9faW5pdCBidWlsZF9yNDAwMF90bGJfbW9kaWZ5X2hhbmRsZXIodm9pZCkKK3N0YXRpYyB2b2lkIF9fY3B1aW5pdCBidWlsZF9yNDAwMF90bGJfbW9kaWZ5X2hhbmRsZXIodm9pZCkKIHsKIAl1MzIgKnAgPSBoYW5kbGVfdGxibTsKIAlzdHJ1Y3QgdWFzbV9sYWJlbCAqbCA9IGxhYmVsczsKQEAgLTEyMjMsNyArMTIyNCw3IEBACiAJZHVtcF9oYW5kbGVyKGhhbmRsZV90bGJtLCBBUlJBWV9TSVpFKGhhbmRsZV90bGJtKSk7CiB9CiAKLXZvaWQgX19pbml0IGJ1aWxkX3RsYl9yZWZpbGxfaGFuZGxlcih2b2lkKQordm9pZCBfX2NwdWluaXQgYnVpbGRfdGxiX3JlZmlsbF9oYW5kbGVyKHZvaWQpCiB7CiAJLyoKIAkgKiBUaGUgcmVmaWxsIGhhbmRsZXIgaXMgZ2VuZXJhdGVkIHBlci1DUFUsIG11bHRpLW5vZGUgc3lzdGVtcwpAQCAtMTI2OSw3ICsxMjcwLDcgQEAKIAl9CiB9CiAKLXZvaWQgX19pbml0IGZsdXNoX3RsYl9oYW5kbGVycyh2b2lkKQordm9pZCBfX2NwdWluaXQgZmx1c2hfdGxiX2hhbmRsZXJzKHZvaWQpCiB7CiAJZmx1c2hfaWNhY2hlX3JhbmdlKCh1bnNpZ25lZCBsb25nKWhhbmRsZV90bGJsLAogCQkJICAgKHVuc2lnbmVkIGxvbmcpaGFuZGxlX3RsYmwgKyBzaXplb2YoaGFuZGxlX3RsYmwpKTsKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9tbS91YXNtLmMgYi9hcmNoL21pcHMvbW0vdWFzbS5jCmluZGV4IGUzZjc0ZWQuLjFhNmY3NzAgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9tbS91YXNtLmMKKysrIGIvYXJjaC9taXBzL21tL3Vhc20uYwpAQCAtODIsNyArODIsNyBAQAogCSB8IChlKSA8PCBSRV9TSAkJCQkJCVwKIAkgfCAoZikgPDwgRlVOQ19TSCkKIAotc3RhdGljIHN0cnVjdCBpbnNuIGluc25fdGFibGVbXSBfX2luaXRkYXRhID0geworc3RhdGljIHN0cnVjdCBpbnNuIGluc25fdGFibGVbXSBfX2NwdWluaXRkYXRhID0gewogCXsgaW5zbl9hZGRpdSwgTShhZGRpdV9vcCwgMCwgMCwgMCwgMCwgMCksIFJTIHwgUlQgfCBTSU1NIH0sCiAJeyBpbnNuX2FkZHUsIE0oc3BlY19vcCwgMCwgMCwgMCwgMCwgYWRkdV9vcCksIFJTIHwgUlQgfCBSRCB9LAogCXsgaW5zbl9hbmQsIE0oc3BlY19vcCwgMCwgMCwgMCwgMCwgYW5kX29wKSwgUlMgfCBSVCB8IFJEIH0sCkBAIC0xMzUsNyArMTM1LDcgQEAKIAogI3VuZGVmIE0KIAotc3RhdGljIGlubGluZSBfX2luaXQgdTMyIGJ1aWxkX3JzKHUzMiBhcmcpCitzdGF0aWMgaW5saW5lIF9fY3B1aW5pdCB1MzIgYnVpbGRfcnModTMyIGFyZykKIHsKIAlpZiAoYXJnICYgflJTX01BU0spCiAJCXByaW50ayhLRVJOX1dBUk5JTkcgIk1pY3JvLWFzc2VtYmxlciBmaWVsZCBvdmVyZmxvd1xuIik7CkBAIC0xNDMsNyArMTQzLDcgQEAKIAlyZXR1cm4gKGFyZyAmIFJTX01BU0spIDw8IFJTX1NIOwogfQogCi1zdGF0aWMgaW5saW5lIF9faW5pdCB1MzIgYnVpbGRfcnQodTMyIGFyZykKK3N0YXRpYyBpbmxpbmUgX19jcHVpbml0IHUzMiBidWlsZF9ydCh1MzIgYXJnKQogewogCWlmIChhcmcgJiB+UlRfTUFTSykKIAkJcHJpbnRrKEtFUk5fV0FSTklORyAiTWljcm8tYXNzZW1ibGVyIGZpZWxkIG92ZXJmbG93XG4iKTsKQEAgLTE1MSw3ICsxNTEsNyBAQAogCXJldHVybiAoYXJnICYgUlRfTUFTSykgPDwgUlRfU0g7CiB9CiAKLXN0YXRpYyBpbmxpbmUgX19pbml0IHUzMiBidWlsZF9yZCh1MzIgYXJnKQorc3RhdGljIGlubGluZSBfX2NwdWluaXQgdTMyIGJ1aWxkX3JkKHUzMiBhcmcpCiB7CiAJaWYgKGFyZyAmIH5SRF9NQVNLKQogCQlwcmludGsoS0VSTl9XQVJOSU5HICJNaWNyby1hc3NlbWJsZXIgZmllbGQgb3ZlcmZsb3dcbiIpOwpAQCAtMTU5LDcgKzE1OSw3IEBACiAJcmV0dXJuIChhcmcgJiBSRF9NQVNLKSA8PCBSRF9TSDsKIH0KIAotc3RhdGljIGlubGluZSBfX2luaXQgdTMyIGJ1aWxkX3JlKHUzMiBhcmcpCitzdGF0aWMgaW5saW5lIF9fY3B1aW5pdCB1MzIgYnVpbGRfcmUodTMyIGFyZykKIHsKIAlpZiAoYXJnICYgflJFX01BU0spCiAJCXByaW50ayhLRVJOX1dBUk5JTkcgIk1pY3JvLWFzc2VtYmxlciBmaWVsZCBvdmVyZmxvd1xuIik7CkBAIC0xNjcsNyArMTY3LDcgQEAKIAlyZXR1cm4gKGFyZyAmIFJFX01BU0spIDw8IFJFX1NIOwogfQogCi1zdGF0aWMgaW5saW5lIF9faW5pdCB1MzIgYnVpbGRfc2ltbShzMzIgYXJnKQorc3RhdGljIGlubGluZSBfX2NwdWluaXQgdTMyIGJ1aWxkX3NpbW0oczMyIGFyZykKIHsKIAlpZiAoYXJnID4gMHg3ZmZmIHx8IGFyZyA8IC0weDgwMDApCiAJCXByaW50ayhLRVJOX1dBUk5JTkcgIk1pY3JvLWFzc2VtYmxlciBmaWVsZCBvdmVyZmxvd1xuIik7CkBAIC0xNzUsNyArMTc1LDcgQEAKIAlyZXR1cm4gYXJnICYgMHhmZmZmOwogfQogCi1zdGF0aWMgaW5saW5lIF9faW5pdCB1MzIgYnVpbGRfdWltbSh1MzIgYXJnKQorc3RhdGljIGlubGluZSBfX2NwdWluaXQgdTMyIGJ1aWxkX3VpbW0odTMyIGFyZykKIHsKIAlpZiAoYXJnICYgfklNTV9NQVNLKQogCQlwcmludGsoS0VSTl9XQVJOSU5HICJNaWNyby1hc3NlbWJsZXIgZmllbGQgb3ZlcmZsb3dcbiIpOwpAQCAtMTgzLDcgKzE4Myw3IEBACiAJcmV0dXJuIGFyZyAmIElNTV9NQVNLOwogfQogCi1zdGF0aWMgaW5saW5lIF9faW5pdCB1MzIgYnVpbGRfYmltbShzMzIgYXJnKQorc3RhdGljIGlubGluZSBfX2NwdWluaXQgdTMyIGJ1aWxkX2JpbW0oczMyIGFyZykKIHsKIAlpZiAoYXJnID4gMHgxZmZmZiB8fCBhcmcgPCAtMHgyMDAwMCkKIAkJcHJpbnRrKEtFUk5fV0FSTklORyAiTWljcm8tYXNzZW1ibGVyIGZpZWxkIG92ZXJmbG93XG4iKTsKQEAgLTE5NCw3ICsxOTQsNyBAQAogCXJldHVybiAoKGFyZyA8IDApID8gKDEgPDwgMTUpIDogMCkgfCAoKGFyZyA+PiAyKSAmIDB4N2ZmZik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgX19pbml0IHUzMiBidWlsZF9qaW1tKHUzMiBhcmcpCitzdGF0aWMgaW5saW5lIF9fY3B1aW5pdCB1MzIgYnVpbGRfamltbSh1MzIgYXJnKQogewogCWlmIChhcmcgJiB+KChKSU1NX01BU0spIDw8IDIpKQogCQlwcmludGsoS0VSTl9XQVJOSU5HICJNaWNyby1hc3NlbWJsZXIgZmllbGQgb3ZlcmZsb3dcbiIpOwpAQCAtMjAyLDcgKzIwMiw3IEBACiAJcmV0dXJuIChhcmcgPj4gMikgJiBKSU1NX01BU0s7CiB9CiAKLXN0YXRpYyBpbmxpbmUgX19pbml0IHUzMiBidWlsZF9mdW5jKHUzMiBhcmcpCitzdGF0aWMgaW5saW5lIF9fY3B1aW5pdCB1MzIgYnVpbGRfZnVuYyh1MzIgYXJnKQogewogCWlmIChhcmcgJiB+RlVOQ19NQVNLKQogCQlwcmludGsoS0VSTl9XQVJOSU5HICJNaWNyby1hc3NlbWJsZXIgZmllbGQgb3ZlcmZsb3dcbiIpOwpAQCAtMjEwLDcgKzIxMCw3IEBACiAJcmV0dXJuIGFyZyAmIEZVTkNfTUFTSzsKIH0KIAotc3RhdGljIGlubGluZSBfX2luaXQgdTMyIGJ1aWxkX3NldCh1MzIgYXJnKQorc3RhdGljIGlubGluZSBfX2NwdWluaXQgdTMyIGJ1aWxkX3NldCh1MzIgYXJnKQogewogCWlmIChhcmcgJiB+U0VUX01BU0spCiAJCXByaW50ayhLRVJOX1dBUk5JTkcgIk1pY3JvLWFzc2VtYmxlciBmaWVsZCBvdmVyZmxvd1xuIik7CkBAIC0yMjIsNyArMjIyLDcgQEAKICAqIFRoZSBvcmRlciBvZiBvcGNvZGUgYXJndW1lbnRzIGlzIGltcGxpY2l0bHkgbGVmdCB0byByaWdodCwKICAqIHN0YXJ0aW5nIHdpdGggUlMgYW5kIGVuZGluZyB3aXRoIEZVTkMgb3IgSU1NLgogICovCi1zdGF0aWMgdm9pZCBfX2luaXQgYnVpbGRfaW5zbih1MzIgKipidWYsIGVudW0gb3Bjb2RlIG9wYywgLi4uKQorc3RhdGljIHZvaWQgX19jcHVpbml0IGJ1aWxkX2luc24odTMyICoqYnVmLCBlbnVtIG9wY29kZSBvcGMsIC4uLikKIHsKIAlzdHJ1Y3QgaW5zbiAqaXAgPSBOVUxMOwogCXVuc2lnbmVkIGludCBpOwpAQCAtMzc1LDE0ICszNzUsMTQgQEAKIElfdTJ1MXUzKF94b3JpKQogCiAvKiBIYW5kbGUgbGFiZWxzLiAqLwotdm9pZCBfX2luaXQgdWFzbV9idWlsZF9sYWJlbChzdHJ1Y3QgdWFzbV9sYWJlbCAqKmxhYiwgdTMyICphZGRyLCBpbnQgbGlkKQordm9pZCBfX2NwdWluaXQgdWFzbV9idWlsZF9sYWJlbChzdHJ1Y3QgdWFzbV9sYWJlbCAqKmxhYiwgdTMyICphZGRyLCBpbnQgbGlkKQogewogCSgqbGFiKS0+YWRkciA9IGFkZHI7CiAJKCpsYWIpLT5sYWIgPSBsaWQ7CiAJKCpsYWIpKys7CiB9CiAKLWludCBfX2luaXQgdWFzbV9pbl9jb21wYXRfc3BhY2VfcChsb25nIGFkZHIpCitpbnQgX19jcHVpbml0IHVhc21faW5fY29tcGF0X3NwYWNlX3AobG9uZyBhZGRyKQogewogCS8qIElzIHRoaXMgYWRkcmVzcyBpbiAzMmJpdCBjb21wYXQgc3BhY2U/ICovCiAjaWZkZWYgQ09ORklHXzY0QklUCkBAIC0zOTIsNyArMzkyLDcgQEAKICNlbmRpZgogfQogCi1pbnQgX19pbml0IHVhc21fcmVsX2hpZ2hlc3QobG9uZyB2YWwpCitpbnQgX19jcHVpbml0IHVhc21fcmVsX2hpZ2hlc3QobG9uZyB2YWwpCiB7CiAjaWZkZWYgQ09ORklHXzY0QklUCiAJcmV0dXJuICgoKCh2YWwgKyAweDgwMDA4MDAwODAwMEwpID4+IDQ4KSAmIDB4ZmZmZikgXiAweDgwMDApIC0gMHg4MDAwOwpAQCAtNDAxLDcgKzQwMSw3IEBACiAjZW5kaWYKIH0KIAotaW50IF9faW5pdCB1YXNtX3JlbF9oaWdoZXIobG9uZyB2YWwpCitpbnQgX19jcHVpbml0IHVhc21fcmVsX2hpZ2hlcihsb25nIHZhbCkKIHsKICNpZmRlZiBDT05GSUdfNjRCSVQKIAlyZXR1cm4gKCgoKHZhbCArIDB4ODAwMDgwMDBMKSA+PiAzMikgJiAweGZmZmYpIF4gMHg4MDAwKSAtIDB4ODAwMDsKQEAgLTQxMCwxNyArNDEwLDE3IEBACiAjZW5kaWYKIH0KIAotaW50IF9faW5pdCB1YXNtX3JlbF9oaShsb25nIHZhbCkKK2ludCBfX2NwdWluaXQgdWFzbV9yZWxfaGkobG9uZyB2YWwpCiB7CiAJcmV0dXJuICgoKCh2YWwgKyAweDgwMDBMKSA+PiAxNikgJiAweGZmZmYpIF4gMHg4MDAwKSAtIDB4ODAwMDsKIH0KIAotaW50IF9faW5pdCB1YXNtX3JlbF9sbyhsb25nIHZhbCkKK2ludCBfX2NwdWluaXQgdWFzbV9yZWxfbG8obG9uZyB2YWwpCiB7CiAJcmV0dXJuICgodmFsICYgMHhmZmZmKSBeIDB4ODAwMCkgLSAweDgwMDA7CiB9CiAKLXZvaWQgX19pbml0IFVBU01faV9MQV9tb3N0bHkodTMyICoqYnVmLCB1bnNpZ25lZCBpbnQgcnMsIGxvbmcgYWRkcikKK3ZvaWQgX19jcHVpbml0IFVBU01faV9MQV9tb3N0bHkodTMyICoqYnVmLCB1bnNpZ25lZCBpbnQgcnMsIGxvbmcgYWRkcikKIHsKIAlpZiAoIXVhc21faW5fY29tcGF0X3NwYWNlX3AoYWRkcikpIHsKIAkJdWFzbV9pX2x1aShidWYsIHJzLCB1YXNtX3JlbF9oaWdoZXN0KGFkZHIpKTsKQEAgLTQzNiw3ICs0MzYsNyBAQAogCQl1YXNtX2lfbHVpKGJ1ZiwgcnMsIHVhc21fcmVsX2hpKGFkZHIpKTsKIH0KIAotdm9pZCBfX2luaXQgVUFTTV9pX0xBKHUzMiAqKmJ1ZiwgdW5zaWduZWQgaW50IHJzLCBsb25nIGFkZHIpCit2b2lkIF9fY3B1aW5pdCBVQVNNX2lfTEEodTMyICoqYnVmLCB1bnNpZ25lZCBpbnQgcnMsIGxvbmcgYWRkcikKIHsKIAlVQVNNX2lfTEFfbW9zdGx5KGJ1ZiwgcnMsIGFkZHIpOwogCWlmICh1YXNtX3JlbF9sbyhhZGRyKSkgewpAQCAtNDQ4LDcgKzQ0OCw3IEBACiB9CiAKIC8qIEhhbmRsZSByZWxvY2F0aW9ucy4gKi8KLXZvaWQgX19pbml0Cit2b2lkIF9fY3B1aW5pdAogdWFzbV9yX21pcHNfcGMxNihzdHJ1Y3QgdWFzbV9yZWxvYyAqKnJlbCwgdTMyICphZGRyLCBpbnQgbGlkKQogewogCSgqcmVsKS0+YWRkciA9IGFkZHI7CkBAIC00NTcsNyArNDU3LDcgQEAKIAkoKnJlbCkrKzsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIF9faW5pdAorc3RhdGljIGlubGluZSB2b2lkIF9fY3B1aW5pdAogX19yZXNvbHZlX3JlbG9jcyhzdHJ1Y3QgdWFzbV9yZWxvYyAqcmVsLCBzdHJ1Y3QgdWFzbV9sYWJlbCAqbGFiKQogewogCWxvbmcgbGFkZHIgPSAobG9uZylsYWItPmFkZHI7CkBAIC00NzQsNyArNDc0LDcgQEAKIAl9CiB9CiAKLXZvaWQgX19pbml0Cit2b2lkIF9fY3B1aW5pdAogdWFzbV9yZXNvbHZlX3JlbG9jcyhzdHJ1Y3QgdWFzbV9yZWxvYyAqcmVsLCBzdHJ1Y3QgdWFzbV9sYWJlbCAqbGFiKQogewogCXN0cnVjdCB1YXNtX2xhYmVsICpsOwpAQCAtNDg1LDcgKzQ4NSw3IEBACiAJCQkJX19yZXNvbHZlX3JlbG9jcyhyZWwsIGwpOwogfQogCi12b2lkIF9faW5pdAordm9pZCBfX2NwdWluaXQKIHVhc21fbW92ZV9yZWxvY3Moc3RydWN0IHVhc21fcmVsb2MgKnJlbCwgdTMyICpmaXJzdCwgdTMyICplbmQsIGxvbmcgb2ZmKQogewogCWZvciAoOyByZWwtPmxhYiAhPSBVQVNNX0xBQkVMX0lOVkFMSUQ7IHJlbCsrKQpAQCAtNDkzLDcgKzQ5Myw3IEBACiAJCQlyZWwtPmFkZHIgKz0gb2ZmOwogfQogCi12b2lkIF9faW5pdAordm9pZCBfX2NwdWluaXQKIHVhc21fbW92ZV9sYWJlbHMoc3RydWN0IHVhc21fbGFiZWwgKmxhYiwgdTMyICpmaXJzdCwgdTMyICplbmQsIGxvbmcgb2ZmKQogewogCWZvciAoOyBsYWItPmxhYiAhPSBVQVNNX0xBQkVMX0lOVkFMSUQ7IGxhYisrKQpAQCAtNTAxLDcgKzUwMSw3IEBACiAJCQlsYWItPmFkZHIgKz0gb2ZmOwogfQogCi12b2lkIF9faW5pdAordm9pZCBfX2NwdWluaXQKIHVhc21fY29weV9oYW5kbGVyKHN0cnVjdCB1YXNtX3JlbG9jICpyZWwsIHN0cnVjdCB1YXNtX2xhYmVsICpsYWIsIHUzMiAqZmlyc3QsCiAJCSAgdTMyICplbmQsIHUzMiAqdGFyZ2V0KQogewpAQCAtNTEzLDcgKzUxMyw3IEBACiAJdWFzbV9tb3ZlX2xhYmVscyhsYWIsIGZpcnN0LCBlbmQsIG9mZik7CiB9CiAKLWludCBfX2luaXQgdWFzbV9pbnNuX2hhc19iZGVsYXkoc3RydWN0IHVhc21fcmVsb2MgKnJlbCwgdTMyICphZGRyKQoraW50IF9fY3B1aW5pdCB1YXNtX2luc25faGFzX2JkZWxheShzdHJ1Y3QgdWFzbV9yZWxvYyAqcmVsLCB1MzIgKmFkZHIpCiB7CiAJZm9yICg7IHJlbC0+bGFiICE9IFVBU01fTEFCRUxfSU5WQUxJRDsgcmVsKyspIHsKIAkJaWYgKHJlbC0+YWRkciA9PSBhZGRyCkBAIC01MjYsNDkgKzUyNiw0OSBAQAogfQogCiAvKiBDb252ZW5pZW5jZSBmdW5jdGlvbnMgZm9yIGxhYmVsZWQgYnJhbmNoZXMuICovCi12b2lkIF9faW5pdAordm9pZCBfX2NwdWluaXQKIHVhc21faWxfYmx0eih1MzIgKipwLCBzdHJ1Y3QgdWFzbV9yZWxvYyAqKnIsIHVuc2lnbmVkIGludCByZWcsIGludCBsaWQpCiB7CiAJdWFzbV9yX21pcHNfcGMxNihyLCAqcCwgbGlkKTsKIAl1YXNtX2lfYmx0eihwLCByZWcsIDApOwogfQogCi12b2lkIF9faW5pdAordm9pZCBfX2NwdWluaXQKIHVhc21faWxfYih1MzIgKipwLCBzdHJ1Y3QgdWFzbV9yZWxvYyAqKnIsIGludCBsaWQpCiB7CiAJdWFzbV9yX21pcHNfcGMxNihyLCAqcCwgbGlkKTsKIAl1YXNtX2lfYihwLCAwKTsKIH0KIAotdm9pZCBfX2luaXQKK3ZvaWQgX19jcHVpbml0CiB1YXNtX2lsX2JlcXoodTMyICoqcCwgc3RydWN0IHVhc21fcmVsb2MgKipyLCB1bnNpZ25lZCBpbnQgcmVnLCBpbnQgbGlkKQogewogCXVhc21fcl9taXBzX3BjMTYociwgKnAsIGxpZCk7CiAJdWFzbV9pX2JlcXoocCwgcmVnLCAwKTsKIH0KIAotdm9pZCBfX2luaXQKK3ZvaWQgX19jcHVpbml0CiB1YXNtX2lsX2JlcXpsKHUzMiAqKnAsIHN0cnVjdCB1YXNtX3JlbG9jICoqciwgdW5zaWduZWQgaW50IHJlZywgaW50IGxpZCkKIHsKIAl1YXNtX3JfbWlwc19wYzE2KHIsICpwLCBsaWQpOwogCXVhc21faV9iZXF6bChwLCByZWcsIDApOwogfQogCi12b2lkIF9faW5pdAordm9pZCBfX2NwdWluaXQKIHVhc21faWxfYm5leih1MzIgKipwLCBzdHJ1Y3QgdWFzbV9yZWxvYyAqKnIsIHVuc2lnbmVkIGludCByZWcsIGludCBsaWQpCiB7CiAJdWFzbV9yX21pcHNfcGMxNihyLCAqcCwgbGlkKTsKIAl1YXNtX2lfYm5leihwLCByZWcsIDApOwogfQogCi12b2lkIF9faW5pdAordm9pZCBfX2NwdWluaXQKIHVhc21faWxfYmdlemwodTMyICoqcCwgc3RydWN0IHVhc21fcmVsb2MgKipyLCB1bnNpZ25lZCBpbnQgcmVnLCBpbnQgbGlkKQogewogCXVhc21fcl9taXBzX3BjMTYociwgKnAsIGxpZCk7CiAJdWFzbV9pX2JnZXpsKHAsIHJlZywgMCk7CiB9CiAKLXZvaWQgX19pbml0Cit2b2lkIF9fY3B1aW5pdAogdWFzbV9pbF9iZ2V6KHUzMiAqKnAsIHN0cnVjdCB1YXNtX3JlbG9jICoqciwgdW5zaWduZWQgaW50IHJlZywgaW50IGxpZCkKIHsKIAl1YXNtX3JfbWlwc19wYzE2KHIsICpwLCBsaWQpOwpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL21tL3Vhc20uaCBiL2FyY2gvbWlwcy9tbS91YXNtLmgKaW5kZXggYTEwZmMxMS4uZmUwNTc0ZiAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL21tL3Vhc20uaAorKysgYi9hcmNoL21pcHMvbW0vdWFzbS5oCkBAIC0xMSwzOCArMTEsMzggQEAKICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgogCiAjZGVmaW5lIElwX3UxdTJ1MyhvcCkJCQkJCQkJXAotdm9pZCBfX2luaXQJCQkJCQkJCVwKK3ZvaWQgX19jcHVpbml0CQkJCQkJCQlcCiB1YXNtX2kjI29wKHUzMiAqKmJ1ZiwgdW5zaWduZWQgaW50IGEsIHVuc2lnbmVkIGludCBiLCB1bnNpZ25lZCBpbnQgYykKIAogI2RlZmluZSBJcF91MnUxdTMob3ApCQkJCQkJCVwKLXZvaWQgX19pbml0CQkJCQkJCQlcCit2b2lkIF9fY3B1aW5pdAkJCQkJCQkJXAogdWFzbV9pIyNvcCh1MzIgKipidWYsIHVuc2lnbmVkIGludCBhLCB1bnNpZ25lZCBpbnQgYiwgdW5zaWduZWQgaW50IGMpCiAKICNkZWZpbmUgSXBfdTN1MXUyKG9wKQkJCQkJCQlcCi12b2lkIF9faW5pdAkJCQkJCQkJXAordm9pZCBfX2NwdWluaXQJCQkJCQkJCVwKIHVhc21faSMjb3AodTMyICoqYnVmLCB1bnNpZ25lZCBpbnQgYSwgdW5zaWduZWQgaW50IGIsIHVuc2lnbmVkIGludCBjKQogCiAjZGVmaW5lIElwX3UxdTJzMyhvcCkJCQkJCQkJXAotdm9pZCBfX2luaXQJCQkJCQkJCVwKK3ZvaWQgX19jcHVpbml0CQkJCQkJCQlcCiB1YXNtX2kjI29wKHUzMiAqKmJ1ZiwgdW5zaWduZWQgaW50IGEsIHVuc2lnbmVkIGludCBiLCBzaWduZWQgaW50IGMpCiAKICNkZWZpbmUgSXBfdTJzM3UxKG9wKQkJCQkJCQlcCi12b2lkIF9faW5pdAkJCQkJCQkJXAordm9pZCBfX2NwdWluaXQJCQkJCQkJCVwKIHVhc21faSMjb3AodTMyICoqYnVmLCB1bnNpZ25lZCBpbnQgYSwgc2lnbmVkIGludCBiLCB1bnNpZ25lZCBpbnQgYykKIAogI2RlZmluZSBJcF91MnUxczMob3ApCQkJCQkJCVwKLXZvaWQgX19pbml0CQkJCQkJCQlcCit2b2lkIF9fY3B1aW5pdAkJCQkJCQkJXAogdWFzbV9pIyNvcCh1MzIgKipidWYsIHVuc2lnbmVkIGludCBhLCB1bnNpZ25lZCBpbnQgYiwgc2lnbmVkIGludCBjKQogCiAjZGVmaW5lIElwX3UxdTIob3ApCQkJCQkJCVwKLXZvaWQgX19pbml0IHVhc21faSMjb3AodTMyICoqYnVmLCB1bnNpZ25lZCBpbnQgYSwgdW5zaWduZWQgaW50IGIpCit2b2lkIF9fY3B1aW5pdCB1YXNtX2kjI29wKHUzMiAqKmJ1ZiwgdW5zaWduZWQgaW50IGEsIHVuc2lnbmVkIGludCBiKQogCiAjZGVmaW5lIElwX3UxczIob3ApCQkJCQkJCVwKLXZvaWQgX19pbml0IHVhc21faSMjb3AodTMyICoqYnVmLCB1bnNpZ25lZCBpbnQgYSwgc2lnbmVkIGludCBiKQordm9pZCBfX2NwdWluaXQgdWFzbV9pIyNvcCh1MzIgKipidWYsIHVuc2lnbmVkIGludCBhLCBzaWduZWQgaW50IGIpCiAKLSNkZWZpbmUgSXBfdTEob3ApIHZvaWQgX19pbml0IHVhc21faSMjb3AodTMyICoqYnVmLCB1bnNpZ25lZCBpbnQgYSkKKyNkZWZpbmUgSXBfdTEob3ApIHZvaWQgX19jcHVpbml0IHVhc21faSMjb3AodTMyICoqYnVmLCB1bnNpZ25lZCBpbnQgYSkKIAotI2RlZmluZSBJcF8wKG9wKSB2b2lkIF9faW5pdCB1YXNtX2kjI29wKHUzMiAqKmJ1ZikKKyNkZWZpbmUgSXBfMChvcCkgdm9pZCBfX2NwdWluaXQgdWFzbV9pIyNvcCh1MzIgKipidWYpCiAKIElwX3UydTFzMyhfYWRkaXUpOwogSXBfdTN1MXUyKF9hZGR1KTsKQEAgLTk4LDE5ICs5OCwxOSBAQAogCWludCBsYWI7CiB9OwogCi12b2lkIF9faW5pdCB1YXNtX2J1aWxkX2xhYmVsKHN0cnVjdCB1YXNtX2xhYmVsICoqbGFiLCB1MzIgKmFkZHIsIGludCBsaWQpOwordm9pZCBfX2NwdWluaXQgdWFzbV9idWlsZF9sYWJlbChzdHJ1Y3QgdWFzbV9sYWJlbCAqKmxhYiwgdTMyICphZGRyLCBpbnQgbGlkKTsKICNpZmRlZiBDT05GSUdfNjRCSVQKLWludCBfX2luaXQgdWFzbV9pbl9jb21wYXRfc3BhY2VfcChsb25nIGFkZHIpOwotaW50IF9faW5pdCB1YXNtX3JlbF9oaWdoZXN0KGxvbmcgdmFsKTsKLWludCBfX2luaXQgdWFzbV9yZWxfaGlnaGVyKGxvbmcgdmFsKTsKK2ludCB1YXNtX2luX2NvbXBhdF9zcGFjZV9wKGxvbmcgYWRkcik7CitpbnQgdWFzbV9yZWxfaGlnaGVzdChsb25nIHZhbCk7CitpbnQgdWFzbV9yZWxfaGlnaGVyKGxvbmcgdmFsKTsKICNlbmRpZgotaW50IF9faW5pdCB1YXNtX3JlbF9oaShsb25nIHZhbCk7Ci1pbnQgX19pbml0IHVhc21fcmVsX2xvKGxvbmcgdmFsKTsKLXZvaWQgX19pbml0IFVBU01faV9MQV9tb3N0bHkodTMyICoqYnVmLCB1bnNpZ25lZCBpbnQgcnMsIGxvbmcgYWRkcik7Ci12b2lkIF9faW5pdCBVQVNNX2lfTEEodTMyICoqYnVmLCB1bnNpZ25lZCBpbnQgcnMsIGxvbmcgYWRkcik7CitpbnQgdWFzbV9yZWxfaGkobG9uZyB2YWwpOworaW50IHVhc21fcmVsX2xvKGxvbmcgdmFsKTsKK3ZvaWQgVUFTTV9pX0xBX21vc3RseSh1MzIgKipidWYsIHVuc2lnbmVkIGludCBycywgbG9uZyBhZGRyKTsKK3ZvaWQgVUFTTV9pX0xBKHUzMiAqKmJ1ZiwgdW5zaWduZWQgaW50IHJzLCBsb25nIGFkZHIpOwogCiAjZGVmaW5lIFVBU01fTF9MQShsYikJCQkJCQkJXAotc3RhdGljIGlubGluZSB2b2lkIF9faW5pdCB1YXNtX2wjI2xiKHN0cnVjdCB1YXNtX2xhYmVsICoqbGFiLCB1MzIgKmFkZHIpIFwKK3N0YXRpYyBpbmxpbmUgdm9pZCBfX2NwdWluaXQgdWFzbV9sIyNsYihzdHJ1Y3QgdWFzbV9sYWJlbCAqKmxhYiwgdTMyICphZGRyKSBcCiB7CQkJCQkJCQkJXAogCXVhc21fYnVpbGRfbGFiZWwobGFiLCBhZGRyLCBsYWJlbCMjbGIpOwkJCQlcCiB9CkBAIC0xNjQsMjkgKzE2NCwxOSBAQAogLyogVGhpcyBpcyB6ZXJvIHNvIHdlIGNhbiB1c2UgemVyb2VkIGxhYmVsIGFycmF5cy4gKi8KICNkZWZpbmUgVUFTTV9MQUJFTF9JTlZBTElEIDAKIAotdm9pZCBfX2luaXQgdWFzbV9yX21pcHNfcGMxNihzdHJ1Y3QgdWFzbV9yZWxvYyAqKnJlbCwgdTMyICphZGRyLCBpbnQgbGlkKTsKLXZvaWQgX19pbml0Ci11YXNtX3Jlc29sdmVfcmVsb2NzKHN0cnVjdCB1YXNtX3JlbG9jICpyZWwsIHN0cnVjdCB1YXNtX2xhYmVsICpsYWIpOwotdm9pZCBfX2luaXQKLXVhc21fbW92ZV9yZWxvY3Moc3RydWN0IHVhc21fcmVsb2MgKnJlbCwgdTMyICpmaXJzdCwgdTMyICplbmQsIGxvbmcgb2ZmKTsKLXZvaWQgX19pbml0Ci11YXNtX21vdmVfbGFiZWxzKHN0cnVjdCB1YXNtX2xhYmVsICpsYWIsIHUzMiAqZmlyc3QsIHUzMiAqZW5kLCBsb25nIG9mZik7Ci12b2lkIF9faW5pdAotdWFzbV9jb3B5X2hhbmRsZXIoc3RydWN0IHVhc21fcmVsb2MgKnJlbCwgc3RydWN0IHVhc21fbGFiZWwgKmxhYiwgdTMyICpmaXJzdCwKLQkJICB1MzIgKmVuZCwgdTMyICp0YXJnZXQpOwotaW50IF9faW5pdCB1YXNtX2luc25faGFzX2JkZWxheShzdHJ1Y3QgdWFzbV9yZWxvYyAqcmVsLCB1MzIgKmFkZHIpOwordm9pZCB1YXNtX3JfbWlwc19wYzE2KHN0cnVjdCB1YXNtX3JlbG9jICoqcmVsLCB1MzIgKmFkZHIsIGludCBsaWQpOwordm9pZCB1YXNtX3Jlc29sdmVfcmVsb2NzKHN0cnVjdCB1YXNtX3JlbG9jICpyZWwsIHN0cnVjdCB1YXNtX2xhYmVsICpsYWIpOwordm9pZCB1YXNtX21vdmVfcmVsb2NzKHN0cnVjdCB1YXNtX3JlbG9jICpyZWwsIHUzMiAqZmlyc3QsIHUzMiAqZW5kLCBsb25nIG9mZik7Cit2b2lkIHVhc21fbW92ZV9sYWJlbHMoc3RydWN0IHVhc21fbGFiZWwgKmxhYiwgdTMyICpmaXJzdCwgdTMyICplbmQsIGxvbmcgb2ZmKTsKK3ZvaWQgdWFzbV9jb3B5X2hhbmRsZXIoc3RydWN0IHVhc21fcmVsb2MgKnJlbCwgc3RydWN0IHVhc21fbGFiZWwgKmxhYiwKKwl1MzIgKmZpcnN0LCB1MzIgKmVuZCwgdTMyICp0YXJnZXQpOworaW50IHVhc21faW5zbl9oYXNfYmRlbGF5KHN0cnVjdCB1YXNtX3JlbG9jICpyZWwsIHUzMiAqYWRkcik7CiAKIC8qIENvbnZlbmllbmNlIGZ1bmN0aW9ucyBmb3IgbGFiZWxlZCBicmFuY2hlcy4gKi8KLXZvaWQgX19pbml0Ci11YXNtX2lsX2JsdHoodTMyICoqcCwgc3RydWN0IHVhc21fcmVsb2MgKipyLCB1bnNpZ25lZCBpbnQgcmVnLCBpbnQgbGlkKTsKLXZvaWQgX19pbml0IHVhc21faWxfYih1MzIgKipwLCBzdHJ1Y3QgdWFzbV9yZWxvYyAqKnIsIGludCBsaWQpOwotdm9pZCBfX2luaXQKLXVhc21faWxfYmVxeih1MzIgKipwLCBzdHJ1Y3QgdWFzbV9yZWxvYyAqKnIsIHVuc2lnbmVkIGludCByZWcsIGludCBsaWQpOwotdm9pZCBfX2luaXQKLXVhc21faWxfYmVxemwodTMyICoqcCwgc3RydWN0IHVhc21fcmVsb2MgKipyLCB1bnNpZ25lZCBpbnQgcmVnLCBpbnQgbGlkKTsKLXZvaWQgX19pbml0Ci11YXNtX2lsX2JuZXoodTMyICoqcCwgc3RydWN0IHVhc21fcmVsb2MgKipyLCB1bnNpZ25lZCBpbnQgcmVnLCBpbnQgbGlkKTsKLXZvaWQgX19pbml0Ci11YXNtX2lsX2JnZXpsKHUzMiAqKnAsIHN0cnVjdCB1YXNtX3JlbG9jICoqciwgdW5zaWduZWQgaW50IHJlZywgaW50IGxpZCk7Ci12b2lkIF9faW5pdAotdWFzbV9pbF9iZ2V6KHUzMiAqKnAsIHN0cnVjdCB1YXNtX3JlbG9jICoqciwgdW5zaWduZWQgaW50IHJlZywgaW50IGxpZCk7Cit2b2lkIHVhc21faWxfYmx0eih1MzIgKipwLCBzdHJ1Y3QgdWFzbV9yZWxvYyAqKnIsIHVuc2lnbmVkIGludCByZWcsIGludCBsaWQpOwordm9pZCB1YXNtX2lsX2IodTMyICoqcCwgc3RydWN0IHVhc21fcmVsb2MgKipyLCBpbnQgbGlkKTsKK3ZvaWQgdWFzbV9pbF9iZXF6KHUzMiAqKnAsIHN0cnVjdCB1YXNtX3JlbG9jICoqciwgdW5zaWduZWQgaW50IHJlZywgaW50IGxpZCk7Cit2b2lkIHVhc21faWxfYmVxemwodTMyICoqcCwgc3RydWN0IHVhc21fcmVsb2MgKipyLCB1bnNpZ25lZCBpbnQgcmVnLCBpbnQgbGlkKTsKK3ZvaWQgdWFzbV9pbF9ibmV6KHUzMiAqKnAsIHN0cnVjdCB1YXNtX3JlbG9jICoqciwgdW5zaWduZWQgaW50IHJlZywgaW50IGxpZCk7Cit2b2lkIHVhc21faWxfYmdlemwodTMyICoqcCwgc3RydWN0IHVhc21fcmVsb2MgKipyLCB1bnNpZ25lZCBpbnQgcmVnLCBpbnQgbGlkKTsKK3ZvaWQgdWFzbV9pbF9iZ2V6KHUzMiAqKnAsIHN0cnVjdCB1YXNtX3JlbG9jICoqciwgdW5zaWduZWQgaW50IHJlZywgaW50IGxpZCk7CmRpZmYgLS1naXQgYS9hcmNoL21pcHMvcGNpL3BjaS1iY20xNDgwLmMgYi9hcmNoL21pcHMvcGNpL3BjaS1iY20xNDgwLmMKaW5kZXggMzBlZDM2MS4uODdlMmM4ZiAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL3BjaS9wY2ktYmNtMTQ4MC5jCisrKyBiL2FyY2gvbWlwcy9wY2kvcGNpLWJjbTE0ODAuYwpAQCAtMTg1LDggKzE4NSw4IEBACiAKIHN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgYmNtMTQ4MF9pb19yZXNvdXJjZSA9IHsKIAkubmFtZQk9ICJCQ00xNDgwIFBDSSBJL08iLAotCS5zdGFydAk9IDB4MmMwMDAwMDBVTCwKLQkuZW5kCT0gMHgyZGZmZmZmZlVMLAorCS5zdGFydAk9IEFfQkNNMTQ4MF9QSFlTX1BDSV9JT19NQVRDSF9CWVRFUywKKwkuZW5kCT0gQV9CQ00xNDgwX1BIWVNfUENJX0lPX01BVENIX0JZVEVTICsgMHgxZmZmZmZmVUwsCiAJLmZsYWdzCT0gSU9SRVNPVVJDRV9JTywKIH07CiAKQEAgLTE5NCw2ICsxOTQsNyBAQAogCS5wY2lfb3BzCT0gJmJjbTE0ODBfcGNpX29wcywKIAkubWVtX3Jlc291cmNlCT0gJmJjbTE0ODBfbWVtX3Jlc291cmNlLAogCS5pb19yZXNvdXJjZQk9ICZiY20xNDgwX2lvX3Jlc291cmNlLAorCS5pb19vZmZzZXQgICAgICA9IEFfQkNNMTQ4MF9QSFlTX1BDSV9JT19NQVRDSF9CWVRFUywKIH07CiAKIApAQCAtMjQ5LDggKzI1MCwxMCBAQAogCSAqIFhYWCBlaHM6IFNob3VsZCB0aGlzIGhhcHBlbiBpbiBQQ0kgRGV2aWNlIG1vZGU/CiAJICovCiAKLQlzZXRfaW9fcG9ydF9iYXNlKCh1bnNpZ25lZCBsb25nKQotCQlpb3JlbWFwKEFfQkNNMTQ4MF9QSFlTX1BDSV9JT19NQVRDSF9CWVRFUywgNjU1MzYpKTsKKwliY20xNDgwX2NvbnRyb2xsZXIuaW9fbWFwX2Jhc2UgPSAodW5zaWduZWQgbG9uZykKKwkJaW9yZW1hcChBX0JDTTE0ODBfUEhZU19QQ0lfSU9fTUFUQ0hfQllURVMsIDY1NTM2KTsKKwliY20xNDgwX2NvbnRyb2xsZXIuaW9fbWFwX2Jhc2UgLT0gYmNtMTQ4MF9jb250cm9sbGVyLmlvX29mZnNldDsKKwlzZXRfaW9fcG9ydF9iYXNlKGJjbTE0ODBfY29udHJvbGxlci5pb19tYXBfYmFzZSk7CiAJaXNhX3Nsb3Rfb2Zmc2V0ID0gKHVuc2lnbmVkIGxvbmcpCiAJCWlvcmVtYXAoQV9CQ00xNDgwX1BIWVNfUENJX01FTV9NQVRDSF9CWVRFUywgMTAyNCoxMDI0KTsKIApkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL3BjaS9wY2ktYmNtMTQ4MGh0LmMgYi9hcmNoL21pcHMvcGNpL3BjaS1iY20xNDgwaHQuYwppbmRleCAwMDVlN2ZlLi5mNTRmNDU0IDEwMDY0NAotLS0gYS9hcmNoL21pcHMvcGNpL3BjaS1iY20xNDgwaHQuYworKysgYi9hcmNoL21pcHMvcGNpL3BjaS1iY20xNDgwaHQuYwpAQCAtMTgwLDggKzE4MCw4IEBACiAKIHN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgYmNtMTQ4MGh0X2lvX3Jlc291cmNlID0gewogCS5uYW1lCT0gIkJDTTE0ODAgSFQgSS9PIiwKLQkuc3RhcnQJPSAweDAwMDAwMDAwVUwsCi0JLmVuZAk9IDB4MDFmZmZmZmZVTCwKKwkuc3RhcnQJPSBBX0JDTTE0ODBfUEhZU19IVF9JT19NQVRDSF9CWVRFUywKKwkuZW5kCT0gQV9CQ00xNDgwX1BIWVNfSFRfSU9fTUFUQ0hfQllURVMgKyAweDAxZmZmZmZmVUwsCiAJLmZsYWdzCT0gSU9SRVNPVVJDRV9JTywKIH07CiAKQEAgLTE5MSwyOSArMTkxLDIyIEBACiAJLmlvX3Jlc291cmNlCT0gJmJjbTE0ODBodF9pb19yZXNvdXJjZSwKIAkuaW5kZXgJCT0gMSwKIAkuZ2V0X2J1c25vCT0gYmNtMTQ4MGh0X3BjaWJpb3NfZ2V0X2J1c25vLAorCS5pb19vZmZzZXQgICAgICA9IEFfQkNNMTQ4MF9QSFlTX0hUX0lPX01BVENIX0JZVEVTLAogfTsKIAogc3RhdGljIGludCBfX2luaXQgYmNtMTQ4MGh0X3BjaWJpb3NfaW5pdCh2b2lkKQogewotCXVpbnQzMl90IGNtZHJlZzsKLQogCWh0X2NmZ19zcGFjZSA9IGlvcmVtYXAoQV9CQ00xNDgwX1BIWVNfSFRfQ0ZHX01BVENIX0JJVFMsIDE2KjEwMjQqMTAyNCk7CiAKLQkvKgotCSAqIFNlZSBpZiB0aGUgUENJIGJ1cyBoYXMgYmVlbiBjb25maWd1cmVkIGJ5IHRoZSBmaXJtd2FyZS4KLQkgKi8KLQljbWRyZWcgPSBSRUFEQ0ZHMzIoQ0ZHT0ZGU0VUKDAsIFBDSV9ERVZGTihQQ0lfQlJJREdFX0RFVklDRSwgMCksCi0JCQkJICAgICBQQ0lfQ09NTUFORCkpOwotCWlmICghKGNtZHJlZyAmIFBDSV9DT01NQU5EX01BU1RFUikpIHsKLQkJcHJpbnRrKCJIVDogU2tpcHBpbmcgSFQgcHJvYmUuIEJ1cyBpcyBub3QgaW5pdGlhbGl6ZWQuXG4iKTsKLQkJaW91bm1hcChodF9jZmdfc3BhY2UpOwotCQlyZXR1cm4gMTsgLyogWFhYICovCi0JfQorCS8qIENGRSBkb2Vzbid0IGFsd2F5cyBpbml0IGFsbCBIVCBwYXRocywgc28gd2UgYWx3YXlzIHNjYW4gKi8KIAliY20xNDgwaHRfYnVzX3N0YXR1cyB8PSBQQ0lfQlVTX0VOQUJMRUQ7CiAKIAlodF9lb2lfc3BhY2UgPSAodW5zaWduZWQgbG9uZykKIAkJaW9yZW1hcChBX0JDTTE0ODBfUEhZU19IVF9TUEVDSUFMX01BVENIX0JZVEVTLAogCQkJNCAqIDEwMjQgKiAxMDI0KTsKKwliY20xNDgwaHRfY29udHJvbGxlci5pb19tYXBfYmFzZSA9ICh1bnNpZ25lZCBsb25nKQorCQlpb3JlbWFwKEFfQkNNMTQ4MF9QSFlTX0hUX0lPX01BVENIX0JZVEVTLCA2NTUzNik7CisJYmNtMTQ4MGh0X2NvbnRyb2xsZXIuaW9fbWFwX2Jhc2UgLT0gYmNtMTQ4MGh0X2NvbnRyb2xsZXIuaW9fb2Zmc2V0OwogCiAJcmVnaXN0ZXJfcGNpX2NvbnRyb2xsZXIoJmJjbTE0ODBodF9jb250cm9sbGVyKTsKIApkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL3BjaS9wY2ktaXAyNy5jIGIvYXJjaC9taXBzL3BjaS9wY2ktaXAyNy5jCmluZGV4IGEzMjI1NDMuLmJiNjQ4MjggMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9wY2kvcGNpLWlwMjcuYworKysgYi9hcmNoL21pcHMvcGNpL3BjaS1pcDI3LmMKQEAgLTQwLDcgKzQwLDcgQEAKIAogZXh0ZXJuIHN0cnVjdCBwY2lfb3BzIGJyaWRnZV9wY2lfb3BzOwogCi1pbnQgX19pbml0IGJyaWRnZV9wcm9iZShuYXNpZF90IG5hc2lkLCBpbnQgd2lkZ2V0X2lkLCBpbnQgbWFzdGVyd2lkKQoraW50IF9fY3B1aW5pdCBicmlkZ2VfcHJvYmUobmFzaWRfdCBuYXNpZCwgaW50IHdpZGdldF9pZCwgaW50IG1hc3RlcndpZCkKIHsKIAl1bnNpZ25lZCBsb25nIG9mZnNldCA9IE5PREVfT0ZGU0VUKG5hc2lkKTsKIAlzdHJ1Y3QgYnJpZGdlX2NvbnRyb2xsZXIgKmJjOwpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL3BjaS9wY2kuYyBiL2FyY2gvbWlwcy9wY2kvcGNpLmMKaW5kZXggZjk0NzFkNy4uMzU4YWQ2MiAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL3BjaS9wY2kuYworKysgYi9hcmNoL21pcHMvcGNpL3BjaS5jCkBAIC0yNjAsNyArMjYwLDcgQEAKIAl9CiB9CiAKLXZvaWQgcGNpYmlvc19maXh1cF9idXMoc3RydWN0IHBjaV9idXMgKmJ1cykKK3ZvaWQgX19kZXZpbml0IHBjaWJpb3NfZml4dXBfYnVzKHN0cnVjdCBwY2lfYnVzICpidXMpCiB7CiAJLyogUHJvcGFnYXRlIGhvc2UgaW5mbyBpbnRvIHRoZSBzdWJvcmRpbmF0ZSBkZXZpY2VzLiAgKi8KIApkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL3BtYy1zaWVycmEveW9zZW1pdGUvc21wLmMgYi9hcmNoL21pcHMvcG1jLXNpZXJyYS95b3NlbWl0ZS9zbXAuYwppbmRleCA2NTNmM2VjLi4zYTdkZjY0IDEwMDY0NAotLS0gYS9hcmNoL21pcHMvcG1jLXNpZXJyYS95b3NlbWl0ZS9zbXAuYworKysgYi9hcmNoL21pcHMvcG1jLXNpZXJyYS95b3NlbWl0ZS9zbXAuYwpAQCAtNywxMCArNywxMCBAQAogCiAjZGVmaW5lIExBVU5DSFNUQUNLX1NJWkUgMjU2CiAKLXN0YXRpYyBfX2luaXRkYXRhIERFRklORV9TUElOTE9DSyhsYXVuY2hfbG9jayk7CitzdGF0aWMgX19jcHVpbml0ZGF0YSBERUZJTkVfU1BJTkxPQ0sobGF1bmNoX2xvY2spOwogCi1zdGF0aWMgdW5zaWduZWQgbG9uZyBzZWNvbmRhcnlfc3AgX19pbml0ZGF0YTsKLXN0YXRpYyB1bnNpZ25lZCBsb25nIHNlY29uZGFyeV9ncCBfX2luaXRkYXRhOworc3RhdGljIHVuc2lnbmVkIGxvbmcgc2Vjb25kYXJ5X3NwIF9fY3B1aW5pdGRhdGE7CitzdGF0aWMgdW5zaWduZWQgbG9uZyBzZWNvbmRhcnlfZ3AgX19jcHVpbml0ZGF0YTsKIAogc3RhdGljIHVuc2lnbmVkIGNoYXIgbGF1bmNoc3RhY2tbTEFVTkNIU1RBQ0tfU0laRV0gX19pbml0ZGF0YQogCV9fYXR0cmlidXRlX18oKGFsaWduZWQoMiAqIHNpemVvZihsb25nKSkpKTsKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9zZ2ktaXAyNy9pcDI3LWluaXQuYyBiL2FyY2gvbWlwcy9zZ2ktaXAyNy9pcDI3LWluaXQuYwppbmRleCBhNDllN2M4Li43MDkzZTdjIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvc2dpLWlwMjcvaXAyNy1pbml0LmMKKysrIGIvYXJjaC9taXBzL3NnaS1pcDI3L2lwMjctaW5pdC5jCkBAIC01Myw3ICs1Myw3IEBACiAKIGV4dGVybiB2b2lkIHh0YWxrX3Byb2JlX25vZGUoY25vZGVpZF90IG5pZCk7CiAKLXN0YXRpYyB2b2lkIF9faW5pdCBwZXJfaHViX2luaXQoY25vZGVpZF90IGNub2RlKQorc3RhdGljIHZvaWQgX19jcHVpbml0IHBlcl9odWJfaW5pdChjbm9kZWlkX3QgY25vZGUpCiB7CiAJc3RydWN0IGh1Yl9kYXRhICpodWIgPSBodWJfZGF0YShjbm9kZSk7CiAJbmFzaWRfdCBuYXNpZCA9IENPTVBBQ1RfVE9fTkFTSURfTk9ERUlEKGNub2RlKTsKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9zZ2ktaXAyNy9pcDI3LXRpbWVyLmMgYi9hcmNoL21pcHMvc2dpLWlwMjcvaXAyNy10aW1lci5jCmluZGV4IDA4ZDQ1MzYuLjI1ZDNiYWYgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9zZ2ktaXAyNy9pcDI3LXRpbWVyLmMKKysrIGIvYXJjaC9taXBzL3NnaS1pcDI3L2lwMjctdGltZXIuYwpAQCAtMjg1LDcgKzI4NSw3IEBACiAJc2V0X2MwX3N0YXR1cyhTUkJfVElNT0NMSyk7CiB9CiAKLXZvaWQgX19pbml0IGh1Yl9ydGNfaW5pdChjbm9kZWlkX3QgY25vZGUpCit2b2lkIF9fY3B1aW5pdCBodWJfcnRjX2luaXQoY25vZGVpZF90IGNub2RlKQogewogCS8qCiAJICogV2Ugb25seSBuZWVkIHRvIGluaXRpYWxpemUgdGhlIGN1cnJlbnQgbm9kZS4KZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9zZ2ktaXAyNy9pcDI3LXh0YWxrLmMgYi9hcmNoL21pcHMvc2dpLWlwMjcvaXAyNy14dGFsay5jCmluZGV4IGZjODJmMzQuLjZhZTY0ZTggMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9zZ2ktaXAyNy9pcDI3LXh0YWxrLmMKKysrIGIvYXJjaC9taXBzL3NnaS1pcDI3L2lwMjcteHRhbGsuYwpAQCAtMjIsNyArMjIsNyBAQAogCiBleHRlcm4gaW50IGJyaWRnZV9wcm9iZShuYXNpZF90IG5hc2lkLCBpbnQgd2lkZ2V0LCBpbnQgbWFzdGVyd2lkKTsKIAotc3RhdGljIGludCBfX2luaXQgcHJvYmVfb25lX3BvcnQobmFzaWRfdCBuYXNpZCwgaW50IHdpZGdldCwgaW50IG1hc3RlcndpZCkKK3N0YXRpYyBpbnQgX19jcHVpbml0IHByb2JlX29uZV9wb3J0KG5hc2lkX3QgbmFzaWQsIGludCB3aWRnZXQsIGludCBtYXN0ZXJ3aWQpCiB7CiAJd2lkZ2V0cmVnX3QgCQl3aWRnZXRfaWQ7CiAJeHdpZGdldF9wYXJ0X251bV90CXBhcnRudW07CkBAIC00Niw3ICs0Niw3IEBACiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0IHhib3dfcHJvYmUobmFzaWRfdCBuYXNpZCkKK3N0YXRpYyBpbnQgX19jcHVpbml0IHhib3dfcHJvYmUobmFzaWRfdCBuYXNpZCkKIHsKIAlsYm9hcmRfdCAqYnJkOwogCWtseGJvd190ICp4Ym93X3A7CkBAIC05OSw3ICs5OSw3IEBACiAJcmV0dXJuIDA7CiB9CiAKLXZvaWQgX19pbml0IHh0YWxrX3Byb2JlX25vZGUoY25vZGVpZF90IG5pZCkKK3ZvaWQgX19jcHVpbml0IHh0YWxrX3Byb2JlX25vZGUoY25vZGVpZF90IG5pZCkKIHsKIAl2b2xhdGlsZSB1NjQgCQlodWJyZWc7CiAJbmFzaWRfdAkgCQluYXNpZDsKZGlmZiAtLWdpdCBhL2FyY2gvcGFyaXNjL01ha2VmaWxlIGIvYXJjaC9wYXJpc2MvTWFrZWZpbGUKaW5kZXggZTU3NGRlNC4uNWRkYWQ3YiAxMDA2NDQKLS0tIGEvYXJjaC9wYXJpc2MvTWFrZWZpbGUKKysrIGIvYXJjaC9wYXJpc2MvTWFrZWZpbGUKQEAgLTE2LDYgKzE2LDkgQEAKICMgTW9kaWZpZWQgZm9yIFBBLVJJU0MgTGludXggYnkgUGF1bCBMYWhhaWUsIEFsZXggZGVWcmllcywgCiAjIE1pa2UgU2hhdmVyLCBIZWxnZSBEZWxsZXIgYW5kIE1hcnRpbiBLLiBQZXRlcnNlbgogIworCitLQlVJTERfREVGQ09ORklHIDo9IGRlZmF1bHRfZGVmY29uZmlnCisKIE5NCQk9IHNoICQoc3JjdHJlZSkvYXJjaC9wYXJpc2Mvbm0KIENIRUNLRkxBR1MJKz0gLURfX2hwcGFfXz0xCiAKZGlmZiAtLWdpdCBhL2FyY2gvcGFyaXNjL2RlZmNvbmZpZyBiL2FyY2gvcGFyaXNjL2NvbmZpZ3MvZGVmYXVsdF9kZWZjb25maWcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGFyY2gvcGFyaXNjL2RlZmNvbmZpZwpyZW5hbWUgdG8gYXJjaC9wYXJpc2MvY29uZmlncy9kZWZhdWx0X2RlZmNvbmZpZwpkaWZmIC0tZ2l0IGEvYXJjaC9wYXJpc2Mva2VybmVsL2Zpcm13YXJlLmMgYi9hcmNoL3BhcmlzYy9rZXJuZWwvZmlybXdhcmUuYwppbmRleCA0YWI4M2Q1Li43MTc3YTZjIDEwMDY0NAotLS0gYS9hcmNoL3BhcmlzYy9rZXJuZWwvZmlybXdhcmUuYworKysgYi9hcmNoL3BhcmlzYy9rZXJuZWwvZmlybXdhcmUuYwpAQCAtMTA4MCw2ICsxMDgwLDkgQEAKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwZGNfbG9jaywgZmxhZ3MpOwogfQogCisvKiBsb2NrZWQgYnkgcGRjX2NvbnNvbGVfbG9jayAqLworc3RhdGljIGludCBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDgpKSkgICBpb2RjX3JldGJ1ZlszMl07CitzdGF0aWMgY2hhciBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDY0KSkpIGlvZGNfZGJ1Zls0MDk2XTsKIAogLyoqCiAgKiBwZGNfaW9kY19wcmludCAtIENvbnNvbGUgcHJpbnQgdXNpbmcgSU9EQy4KQEAgLTEwOTEsMjQgKzEwOTQsMjAgQEAKICAqIFNpbmNlIHRoZSBIUCBjb25zb2xlIHJlcXVpcmVzIENSK0xGIHRvIHBlcmZvcm0gYSAnbmV3bGluZScsIHdlIHRyYW5zbGF0ZQogICogIlxuIiB0byAiXHJcbiIuCiAgKi8KLWludCBwZGNfaW9kY19wcmludCh1bnNpZ25lZCBjaGFyICpzdHIsIHVuc2lnbmVkIGNvdW50KQoraW50IHBkY19pb2RjX3ByaW50KGNvbnN0IHVuc2lnbmVkIGNoYXIgKnN0ciwgdW5zaWduZWQgY291bnQpCiB7Ci0JLyogWFhYIFNob3VsZCB3ZSBzcGlubG9jayBwb3N4IHVzYWdlICovCiAJc3RhdGljIGludCBwb3N4OyAgICAgICAgLyogZm9yIHNpbXBsZSBUQUItU2ltdWxhdGlvbi4uLiAqLwotCWludCBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDgpKSkgICBpb2RjX3JldGJ1ZlszMl07Ci0JY2hhciBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDY0KSkpIGlvZGNfZGJ1Zls0MDk2XTsKIAl1bnNpZ25lZCBpbnQgaTsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCi0JbWVtc2V0KGlvZGNfZGJ1ZiwgMCwgNDA5Nik7Ci0JZm9yIChpID0gMDsgaSA8IGNvdW50ICYmIGkgPCAyMDQ4OykgeworCWZvciAoaSA9IDA7IGkgPCBjb3VudCAmJiBpIDwgNzk7KSB7CiAJCXN3aXRjaChzdHJbaV0pIHsKIAkJY2FzZSAnXG4nOgogCQkJaW9kY19kYnVmW2krMF0gPSAnXHInOwogCQkJaW9kY19kYnVmW2krMV0gPSAnXG4nOwogCQkJaSArPSAyOwogCQkJcG9zeCA9IDA7Ci0JCQlicmVhazsKKwkJCWdvdG8gcHJpbnQ7CiAJCWNhc2UgJ1x0JzoKIAkJCXdoaWxlIChwb3N4ICYgNykgewogCQkJCWlvZGNfZGJ1ZltpXSA9ICcgJzsKQEAgLTExMjQsNiArMTEyMywxNiBAQAogCQl9CiAJfQogCisJLyogaWYgd2UncmUgYXQgdGhlIGVuZCBvZiBsaW5lLCBhbmQgbm90IGFscmVhZHkgaW5zZXJ0aW5nIGEgbmV3bGluZSwKKwkgKiBpbnNlcnQgb25lIGFueXdheS4gaW9kYyBjb25zb2xlIGRvZXNuJ3QgY2xhaW0gdG8gc3VwcG9ydCA+NzkgY2hhcgorCSAqIGxpbmVzLiBkb24ndCBhY2NvdW50IGZvciB0aGlzIGluIHRoZSByZXR1cm4gdmFsdWUuCisJICovCisJaWYgKGkgPT0gNzkgJiYgaW9kY19kYnVmW2ktMV0gIT0gJ1xuJykgeworCQlpb2RjX2RidWZbaSswXSA9ICdccic7CisJCWlvZGNfZGJ1ZltpKzFdID0gJ1xuJzsKKwl9CisKK3ByaW50OgogICAgICAgICBzcGluX2xvY2tfaXJxc2F2ZSgmcGRjX2xvY2ssIGZsYWdzKTsKICAgICAgICAgcmVhbDMyX2NhbGwoUEFHRTAtPm1lbV9jb25zLmlvZGNfaW8sCiAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKVBBR0UwLT5tZW1fY29ucy5ocGEsIEVOVFJZX0lPX0NPVVQsCkBAIC0xMTQyLDExICsxMTUxLDkgQEAKICAqLwogaW50IHBkY19pb2RjX2dldGModm9pZCkKIHsKLQl1bnNpZ25lZCBsb25nIGZsYWdzOwotICAgICAgICBzdGF0aWMgaW50IF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKSAgIGlvZGNfcmV0YnVmWzMyXTsKLSAgICAgICAgc3RhdGljIGNoYXIgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCg2NCkpKSBpb2RjX2RidWZbNDA5Nl07CiAJaW50IGNoOwogCWludCBzdGF0dXM7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKIAogCS8qIEJhaWwgaWYgbm8gY29uc29sZSBpbnB1dCBkZXZpY2UuICovCiAJaWYgKCFQQUdFMC0+bWVtX2tiZC5pb2RjX2lvKQpkaWZmIC0tZ2l0IGEvYXJjaC9wYXJpc2Mva2VybmVsL2hhcmR3YXJlLmMgYi9hcmNoL3BhcmlzYy9rZXJuZWwvaGFyZHdhcmUuYwppbmRleCA4NGI5NjExLi5mNDhhNjQwIDEwMDY0NAotLS0gYS9hcmNoL3BhcmlzYy9rZXJuZWwvaGFyZHdhcmUuYworKysgYi9hcmNoL3BhcmlzYy9rZXJuZWwvaGFyZHdhcmUuYwpAQCAtMjc0LDcgKzI3NCwxOCBAQAogCXtIUEhXX05QUk9DLDB4ODg3LDB4NCwweDkxLCJTdG9ybSBQZWFrIFNsb3cifSwKIAl7SFBIV19OUFJPQywweDg4OCwweDQsMHg5MSwiU3Rvcm0gUGVhayBGYXN0IERDLSJ9LAogCXtIUEhXX05QUk9DLDB4ODg5LDB4NCwweDkxLCJTdG9ybSBQZWFrIEZhc3QifSwKLQl7SFBIV19OUFJPQywweDg4QSwweDQsMHg5MSwiQ3Jlc3RvbmUgUGVhayJ9LAorCXtIUEhXX05QUk9DLDB4ODhBLDB4NCwweDkxLCJDcmVzdG9uZSBQZWFrIFNsb3cifSwKKwl7SFBIV19OUFJPQywweDg4QywweDQsMHg5MSwiT3JjYSBNYWtvKyJ9LAorCXtIUEhXX05QUk9DLDB4ODhELDB4NCwweDkxLCJSYWluaWVyL01lZGVsIE1ha28rIFNsb3cifSwKKwl7SFBIV19OUFJPQywweDg4RSwweDQsMHg5MSwiUmFpbmllci9NZWRlbCBNYWtvKyBGYXN0In0sCisJe0hQSFdfTlBST0MsMHg4OTQsMHg0LDB4OTEsIk10LiBIYW1pbHRvbiBGYXN0IE1ha28rIn0sCisJe0hQSFdfTlBST0MsMHg4OTUsMHg0LDB4OTEsIlN0b3JtIFBlYWsgU2xvdyBNYWtvKyJ9LAorCXtIUEhXX05QUk9DLDB4ODk2LDB4NCwweDkxLCJTdG9ybSBQZWFrIEZhc3QgTWFrbysifSwKKwl7SFBIV19OUFJPQywweDg5NywweDQsMHg5MSwiU3Rvcm0gUGVhayBEQy0gU2xvdyBNYWtvKyJ9LAorCXtIUEhXX05QUk9DLDB4ODk4LDB4NCwweDkxLCJTdG9ybSBQZWFrIERDLSBGYXN0IE1ha28rIn0sCisJe0hQSFdfTlBST0MsMHg4OTksMHg0LDB4OTEsIk10LiBIYW1pbHRvbiBTbG93IE1ha28rIn0sCisJe0hQSFdfTlBST0MsMHg4OUIsMHg0LDB4OTEsIkNyZXN0b25lIFBlYWsgTWFrbysgU2xvdyJ9LAorCXtIUEhXX05QUk9DLDB4ODlDLDB4NCwweDkxLCJDcmVzdG9uZSBQZWFrIE1ha28rIEZhc3QifSwKIAl7SFBIV19BX0RJUkVDVCwgMHgwMDQsIDB4MDAwMEQsIDB4MDAsICJBcnJha2lzIE1VWCJ9LCAKIAl7SFBIV19BX0RJUkVDVCwgMHgwMDUsIDB4MDAwMEQsIDB4MDAsICJEeXVuIEtpdWggTVVYIn0sIAogCXtIUEhXX0FfRElSRUNULCAweDAwNiwgMHgwMDAwRCwgMHgwMCwgIkJhYXQgS2l1aCBBUC9NVVggKDQwMjk5QikifSwgCmRpZmYgLS1naXQgYS9hcmNoL3BhcmlzYy9rZXJuZWwvaGVhZC5TIGIvYXJjaC9wYXJpc2Mva2VybmVsL2hlYWQuUwppbmRleCBhN2I4ODU5Li5lYzI0ODJkIDEwMDY0NAotLS0gYS9hcmNoL3BhcmlzYy9rZXJuZWwvaGVhZC5TCisrKyBiL2FyY2gvcGFyaXNjL2tlcm5lbC9oZWFkLlMKQEAgLTIwLDEwICsyMCwxMSBAQAogI2luY2x1ZGUgPGFzbS9wZ3RhYmxlLmg+CiAKICNpbmNsdWRlIDxsaW51eC9saW5rYWdlLmg+CisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgogCiAJLmxldmVsCUxFVkVMCiAKLQkuZGF0YQorCV9fSU5JVERBVEEKIEVOVFJZKGJvb3RfYXJncykKIAkud29yZCAwIC8qIGFyZzAgKi8KIAkud29yZCAwIC8qIGFyZzEgKi8KQEAgLTMxLDcgKzMyLDcgQEAKIAkud29yZCAwIC8qIGFyZzMgKi8KIEVORChib290X2FyZ3MpCiAKLQkudGV4dAorCS5zZWN0aW9uIC50ZXh0LmhlYWQKIAkuYWxpZ24JNAogCS5pbXBvcnQgaW5pdF90aHJlYWRfdW5pb24sZGF0YQogCS5pbXBvcnQgZmF1bHRfdmVjdG9yXzIwLGNvZGUgICAgLyogSVZBIHBhcmlzYyAyLjAgMzIgYml0ICovCkBAIC0zNDMsNyArMzQ0LDcgQEAKIEVORFBST0Moc3RleHQpCiAKICNpZm5kZWYgQ09ORklHXzY0QklUCi0JLmRhdGEKKwkuc2VjdGlvbiAuZGF0YS5yZWFkX21vc3RseQogCiAJLmFsaWduCTQKIAkuZXhwb3J0CSRnbG9iYWwkLGRhdGEKZGlmZiAtLWdpdCBhL2FyY2gvcGFyaXNjL2tlcm5lbC9wZGNfY29ucy5jIGIvYXJjaC9wYXJpc2Mva2VybmVsL3BkY19jb25zLmMKaW5kZXggMzNiMWY4NC4uY2NiNjgwOSAxMDA2NDQKLS0tIGEvYXJjaC9wYXJpc2Mva2VybmVsL3BkY19jb25zLmMKKysrIGIvYXJjaC9wYXJpc2Mva2VybmVsL3BkY19jb25zLmMKQEAgLTUyLDI4ICs1MiwzMCBAQAogI2luY2x1ZGUgPGxpbnV4L3R0eS5oPgogI2luY2x1ZGUgPGFzbS9wZGMuaD4JCS8qIGZvciBpb2RjX2NhbGwoKSBwcm90byBhbmQgZnJpZW5kcyAqLwogCitzdGF0aWMgc3BpbmxvY2tfdCBwZGNfY29uc29sZV9sb2NrID0gU1BJTl9MT0NLX1VOTE9DS0VEOwogCiBzdGF0aWMgdm9pZCBwZGNfY29uc29sZV93cml0ZShzdHJ1Y3QgY29uc29sZSAqY28sIGNvbnN0IGNoYXIgKnMsIHVuc2lnbmVkIGNvdW50KQogewotCXBkY19pb2RjX3ByaW50KHMsIGNvdW50KTsKLX0KKwlpbnQgaSA9IDA7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKIAotdm9pZCBwZGNfcHJpbnRmKGNvbnN0IGNoYXIgKmZtdCwgLi4uKQotewotCXZhX2xpc3QgYXJnczsKLQljaGFyIGJ1ZlsxMDI0XTsKLQlpbnQgaSwgbGVuOwotCi0JdmFfc3RhcnQoYXJncywgZm10KTsKLQlsZW4gPSB2c2NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksIGZtdCwgYXJncyk7Ci0JdmFfZW5kKGFyZ3MpOwotCi0JcGRjX2lvZGNfcHJpbnQoYnVmLCBsZW4pOworCXNwaW5fbG9ja19pcnFzYXZlKCZwZGNfY29uc29sZV9sb2NrLCBmbGFncyk7CisJZG8geworCQlpICs9IHBkY19pb2RjX3ByaW50KHMgKyBpLCBjb3VudCAtIGkpOworCX0gd2hpbGUgKGkgPCBjb3VudCk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcGRjX2NvbnNvbGVfbG9jaywgZmxhZ3MpOwogfQogCiBpbnQgcGRjX2NvbnNvbGVfcG9sbF9rZXkoc3RydWN0IGNvbnNvbGUgKmNvKQogewotCXJldHVybiBwZGNfaW9kY19nZXRjKCk7CisJaW50IGM7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZwZGNfY29uc29sZV9sb2NrLCBmbGFncyk7CisJYyA9IHBkY19pb2RjX2dldGMoKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwZGNfY29uc29sZV9sb2NrLCBmbGFncyk7CisKKwlyZXR1cm4gYzsKIH0KIAogc3RhdGljIGludCBwZGNfY29uc29sZV9zZXR1cChzdHJ1Y3QgY29uc29sZSAqY28sIGNoYXIgKm9wdGlvbnMpCmRpZmYgLS1naXQgYS9hcmNoL3BhcmlzYy9rZXJuZWwvc2lnbmFsLmMgYi9hcmNoL3BhcmlzYy9rZXJuZWwvc2lnbmFsLmMKaW5kZXggNThmY2NjOS4uMDYyMTNkMSAxMDA2NDQKLS0tIGEvYXJjaC9wYXJpc2Mva2VybmVsL3NpZ25hbC5jCisrKyBiL2FyY2gvcGFyaXNjL2tlcm5lbC9zaWduYWwuYwpAQCAtNTM0LDcgKzUzNCw4IEBACiAJCSAqIEZsdXNoaW5nIG9uZSBjYWNoZWxpbmUgaXMgY2hlYXAuCiAJCSAqICJzeW5jIiBvbiBiaWdnZXIgKD4gNCB3YXkpIGJveGVzIGlzIG5vdC4KIAkJICovCi0JCWZsdXNoX2ljYWNoZV9yYW5nZShyZWdzLT5nclszMF0sIHJlZ3MtPmdyWzMwXSArIDQpOworCQlmbHVzaF91c2VyX2RjYWNoZV9yYW5nZShyZWdzLT5nclszMF0sIHJlZ3MtPmdyWzMwXSArIDQpOworCQlmbHVzaF91c2VyX2ljYWNoZV9yYW5nZShyZWdzLT5nclszMF0sIHJlZ3MtPmdyWzMwXSArIDQpOwogCiAJCXJlZ3MtPmdyWzMxXSA9IHJlZ3MtPmdyWzMwXSArIDg7CiAJCS8qIFByZXNlcnZlIG9yaWdpbmFsIHIyOC4gKi8KZGlmZiAtLWdpdCBhL2FyY2gvcGFyaXNjL2tlcm5lbC9zeXNjYWxsX3RhYmxlLlMgYi9hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbF90YWJsZS5TCmluZGV4IDExNzQzOGUuLjZiNWFjMzggMTAwNjQ0Ci0tLSBhL2FyY2gvcGFyaXNjL2tlcm5lbC9zeXNjYWxsX3RhYmxlLlMKKysrIGIvYXJjaC9wYXJpc2Mva2VybmVsL3N5c2NhbGxfdGFibGUuUwpAQCAtNDAxLDkgKzQwMSwxMiBAQAogCUVOVFJZX0NPTVAoa2V4ZWNfbG9hZCkJCS8qIDMwMCAqLwogCUVOVFJZX0NPTVAodXRpbWVuc2F0KQogCUVOVFJZX0NPTVAoc2lnbmFsZmQpCi0JRU5UUllfQ09NUCh0aW1lcmZkKQorCUVOVFJZX1NBTUUobmlfc3lzY2FsbCkJCS8qIHdhcyB0aW1lcmZkICovCiAJRU5UUllfU0FNRShldmVudGZkKQogCUVOVFJZX0NPTVAoZmFsbG9jYXRlKQkJLyogMzA1ICovCisJRU5UUllfU0FNRSh0aW1lcmZkX2NyZWF0ZSkKKwlFTlRSWV9DT01QKHRpbWVyZmRfc2V0dGltZSkKKwlFTlRSWV9DT01QKHRpbWVyZmRfZ2V0dGltZSkKIAogCS8qIE5vdGhpbmcgeWV0ICovCiAKZGlmZiAtLWdpdCBhL2FyY2gvcGFyaXNjL2tlcm5lbC90cmFwcy5jIGIvYXJjaC9wYXJpc2Mva2VybmVsL3RyYXBzLmMKaW5kZXggOTlmZDU2OS4uOWRjNmRjNCAxMDA2NDQKLS0tIGEvYXJjaC9wYXJpc2Mva2VybmVsL3RyYXBzLmMKKysrIGIvYXJjaC9wYXJpc2Mva2VybmVsL3RyYXBzLmMKQEAgLTUxLDYgKzUxLDkgQEAKIERFRklORV9TUElOTE9DSyhwYV9kYml0X2xvY2spOwogI2VuZGlmCiAKK3ZvaWQgcGFyaXNjX3Nob3dfc3RhY2soc3RydWN0IHRhc2tfc3RydWN0ICp0LCB1bnNpZ25lZCBsb25nICpzcCwKKwlzdHJ1Y3QgcHRfcmVncyAqcmVncyk7CisKIHN0YXRpYyBpbnQgcHJpbnRiaW5hcnkoY2hhciAqYnVmLCB1bnNpZ25lZCBsb25nIHgsIGludCBuYml0cykKIHsKIAl1bnNpZ25lZCBsb25nIG1hc2sgPSAxVUwgPDwgKG5iaXRzIC0gMSk7CkBAIC0xNDgsNiArMTUxLDggQEAKIAlwcmludF9zeW1ib2woIiBJQU9RWzFdOiAlc1xuIiwgcmVncy0+aWFvcVsxXSk7CiAJcHJpbnRrKGxldmVsKTsKIAlwcmludF9zeW1ib2woIiBSUChyMik6ICVzXG4iLCByZWdzLT5nclsyXSk7CisKKwlwYXJpc2Nfc2hvd19zdGFjayhjdXJyZW50LCBOVUxMLCByZWdzKTsKIH0KIAogCkBAIC0xODEsMTEgKzE4NiwxOSBAQAogCXByaW50aygiXG4iKTsKIH0KIAotdm9pZCBzaG93X3N0YWNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgdW5zaWduZWQgbG9uZyAqcykKK3ZvaWQgcGFyaXNjX3Nob3dfc3RhY2soc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCB1bnNpZ25lZCBsb25nICpzcCwKKwlzdHJ1Y3QgcHRfcmVncyAqcmVncykKIHsKIAlzdHJ1Y3QgdW53aW5kX2ZyYW1lX2luZm8gaW5mbzsKKwlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnQ7CiAKLQlpZiAoIXRhc2spIHsKKwl0ID0gdGFzayA/IHRhc2sgOiBjdXJyZW50OworCWlmIChyZWdzKSB7CisJCXVud2luZF9mcmFtZV9pbml0KCZpbmZvLCB0LCByZWdzKTsKKwkJZ290byBzaG93X3N0YWNrOworCX0KKworCWlmICh0ID09IGN1cnJlbnQpIHsKIAkJdW5zaWduZWQgbG9uZyBzcDsKIAogSEVSRToKQEAgLTIwMSwxMiArMjE0LDE4IEBACiAJCQl1bndpbmRfZnJhbWVfaW5pdCgmaW5mbywgY3VycmVudCwgJnIpOwogCQl9CiAJfSBlbHNlIHsKLQkJdW53aW5kX2ZyYW1lX2luaXRfZnJvbV9ibG9ja2VkX3Rhc2soJmluZm8sIHRhc2spOworCQl1bndpbmRfZnJhbWVfaW5pdF9mcm9tX2Jsb2NrZWRfdGFzaygmaW5mbywgdCk7CiAJfQogCitzaG93X3N0YWNrOgogCWRvX3Nob3dfc3RhY2soJmluZm8pOwogfQogCit2b2lkIHNob3dfc3RhY2soc3RydWN0IHRhc2tfc3RydWN0ICp0LCB1bnNpZ25lZCBsb25nICpzcCkKK3sKKwlyZXR1cm4gcGFyaXNjX3Nob3dfc3RhY2sodCwgc3AsIE5VTEwpOworfQorCiBpbnQgaXNfdmFsaWRfYnVnYWRkcih1bnNpZ25lZCBsb25nIGlhb3EpCiB7CiAJcmV0dXJuIDE7CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvTWFrZWZpbGUgYi9hcmNoL3Bvd2VycGMvTWFrZWZpbGUKaW5kZXggMWM2Y2UzNS4uYWI1Y2ZlOCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL01ha2VmaWxlCisrKyBiL2FyY2gvcG93ZXJwYy9NYWtlZmlsZQpAQCAtMTU1LDcgKzE1NSw3IEBACiAKIENQUEZMQUdTX3ZtbGludXgubGRzCTo9IC1VcG93ZXJwYwogCi1CT09UX1RBUkdFVFMgPSB6SW1hZ2UgekltYWdlLmluaXRyZCB1SW1hZ2UgdHJlZUltYWdlLiUgY3VJbWFnZS4lCitCT09UX1RBUkdFVFMgPSB6SW1hZ2UgekltYWdlLmluaXRyZCB1SW1hZ2UgekltYWdlJSBkdGJJbWFnZSUgdHJlZUltYWdlLiUgY3VJbWFnZS4lCiAKIFBIT05ZICs9ICQoQk9PVF9UQVJHRVRTKQogCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvYm9vdC9NYWtlZmlsZSBiL2FyY2gvcG93ZXJwYy9ib290L01ha2VmaWxlCmluZGV4IGUzOTkzYTYuLjFhZGVkOGYgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9ib290L01ha2VmaWxlCisrKyBiL2FyY2gvcG93ZXJwYy9ib290L01ha2VmaWxlCkBAIC0xODYsNyArMTg2LDcgQEAKIGltYWdlLSQoQ09ORklHX1BQQ19QU0VSSUVTKQkJKz0gekltYWdlLnBzZXJpZXMKIGltYWdlLSQoQ09ORklHX1BQQ19NQVBMRSkJCSs9IHpJbWFnZS5wc2VyaWVzCiBpbWFnZS0kKENPTkZJR19QUENfSUJNX0NFTExfQkxBREUpCSs9IHpJbWFnZS5wc2VyaWVzCi1pbWFnZS0kKENPTkZJR19QUENfUFMzKQkJCSs9IHpJbWFnZS1kdGIucHMzCitpbWFnZS0kKENPTkZJR19QUENfUFMzKQkJCSs9IGR0YkltYWdlLnBzMwogaW1hZ2UtJChDT05GSUdfUFBDX0NFTExFQikJCSs9IHpJbWFnZS5wc2VyaWVzCiBpbWFnZS0kKENPTkZJR19QUENfQ0hSUCkJCSs9IHpJbWFnZS5jaHJwCiBpbWFnZS0kKENPTkZJR19QUENfRUZJS0EpCQkrPSB6SW1hZ2UuY2hycApAQCAtMjA1LDcgKzIwNSw3IEBACiAjCiAKICMgQm9hcmQgcG9ydHMgaW4gYXJjaC9wb3dlcnBjL3BsYXRmb3JtLzQweC9LY29uZmlnCi1pbWFnZS0kKENPTkZJR19FUDQwNSkJCQkrPSB6SW1hZ2UtZHRiLmVwNDA1CitpbWFnZS0kKENPTkZJR19FUDQwNSkJCQkrPSBkdGJJbWFnZS5lcDQwNQogaW1hZ2UtJChDT05GSUdfV0FMTlVUKQkJCSs9IHRyZWVJbWFnZS53YWxudXQKIAogIyBCb2FyZCBwb3J0cyBpbiBhcmNoL3Bvd2VycGMvcGxhdGZvcm0vNDR4L0tjb25maWcKQEAgLTIyMCw5ICsyMjAsOSBAQAogIyBCb2FyZCBwb3J0cyBpbiBhcmNoL3Bvd2VycGMvcGxhdGZvcm0vOHh4L0tjb25maWcKIGltYWdlLSQoQ09ORklHX1BQQ19NUEM4NlhBRFMpCQkrPSBjdUltYWdlLm1wYzg2NmFkcwogaW1hZ2UtJChDT05GSUdfUFBDX01QQzg4NUFEUykJCSs9IGN1SW1hZ2UubXBjODg1YWRzCi1pbWFnZS0kKENPTkZJR19QUENfRVA4OFhDKQkJKz0gekltYWdlLWR0Yi5lcDg4eGMKK2ltYWdlLSQoQ09ORklHX1BQQ19FUDg4WEMpCQkrPSBkdGJJbWFnZS5lcDg4eGMKIGltYWdlLSQoQ09ORklHX1BQQ19BRERFUjg3NSkJCSs9IGN1SW1hZ2UuYWRkZXI4NzUtdWJvb3QgXAotCQkJCQkgICB6SW1hZ2UtZHRiLmFkZGVyODc1LXJlZGJvb3QKKwkJCQkJICAgZHRiSW1hZ2UuYWRkZXI4NzUtcmVkYm9vdAogCiAjIEJvYXJkIHBvcnRzIGluIGFyY2gvcG93ZXJwYy9wbGF0Zm9ybS81Mnh4L0tjb25maWcKIGltYWdlLSQoQ09ORklHX1BQQ19MSVRFNTIwMCkJCSs9IGN1SW1hZ2UubGl0ZTUyMDAgY3VJbWFnZS5saXRlNTIwMGIKQEAgLTIzMCw3ICsyMzAsNyBAQAogIyBCb2FyZCBwb3J0cyBpbiBhcmNoL3Bvd2VycGMvcGxhdGZvcm0vODJ4eC9LY29uZmlnCiBpbWFnZS0kKENPTkZJR19NUEM4MjcyX0FEUykJCSs9IGN1SW1hZ2UubXBjODI3MmFkcwogaW1hZ2UtJChDT05GSUdfUFEyRkFEUykJCQkrPSBjdUltYWdlLnBxMmZhZHMKLWltYWdlLSQoQ09ORklHX0VQODI0OEUpCQkJKz0gekltYWdlLWR0Yi5lcDgyNDhlCitpbWFnZS0kKENPTkZJR19FUDgyNDhFKQkJCSs9IGR0YkltYWdlLmVwODI0OGUKIAogIyBCb2FyZCBwb3J0cyBpbiBhcmNoL3Bvd2VycGMvcGxhdGZvcm0vODN4eC9LY29uZmlnCiBpbWFnZS0kKENPTkZJR19NUEM4MzJ4X01EUykJCSs9IGN1SW1hZ2UubXBjODMyeF9tZHMKQEAgLTI1Myw4ICsyNTMsOCBAQAogaW1hZ2UtJChDT05GSUdfVFFNODU0MSkJCQkrPSBjdUltYWdlLnRxbTg1NDEKIGltYWdlLSQoQ09ORklHX1RRTTg1NTUpCQkJKz0gY3VJbWFnZS50cW04NTU1CiBpbWFnZS0kKENPTkZJR19UUU04NTYwKQkJCSs9IGN1SW1hZ2UudHFtODU2MAotaW1hZ2UtJChDT05GSUdfU0JDODU0OCkJCQkrPSBjdUltYWdlLnRxbTg1NDgKLWltYWdlLSQoQ09ORklHX1NCQzg1NjApCQkJKz0gY3VJbWFnZS50cW04NTYwCitpbWFnZS0kKENPTkZJR19TQkM4NTQ4KQkJCSs9IGN1SW1hZ2Uuc2JjODU0OAoraW1hZ2UtJChDT05GSUdfU0JDODU2MCkJCQkrPSBjdUltYWdlLnNiYzg1NjAKIAogIyBCb2FyZCBwb3J0cyBpbiBhcmNoL3Bvd2VycGMvcGxhdGZvcm0vZW1iZWRkZWQ2eHgvS2NvbmZpZwogaW1hZ2UtJChDT05GSUdfU1RPUkNFTlRFUikJCSs9IGN1SW1hZ2Uuc3RvcmNlbnRlcgpAQCAtMjY4LDcgKzI2OCw4IEBACiAKIGluaXRyZC0gIDo9ICQocGF0c3Vic3QgekltYWdlJSwgekltYWdlLmluaXRyZCUsICQoaW1hZ2UtbikgJChpbWFnZS0pKQogaW5pdHJkLXkgOj0gJChwYXRzdWJzdCB6SW1hZ2UlLCB6SW1hZ2UuaW5pdHJkJSwgXAotCQkkKHBhdHN1YnN0IHRyZWVJbWFnZSUsIHRyZWVJbWFnZS5pbml0cmQlLCAkKGltYWdlLXkpKSkKKwkJJChwYXRzdWJzdCBkdGJJbWFnZSUsIGR0YkltYWdlLmluaXRyZCUsIFwKKwkJJChwYXRzdWJzdCB0cmVlSW1hZ2UlLCB0cmVlSW1hZ2UuaW5pdHJkJSwgJChpbWFnZS15KSkpKQogaW5pdHJkLXkgOj0gJChmaWx0ZXItb3V0ICQoaW1hZ2UteSksICQoaW5pdHJkLXkpKQogdGFyZ2V0cwkrPSAkKGltYWdlLXkpICQoaW5pdHJkLXkpCiAKQEAgLTI4MywxMCArMjg0LDExIEBACiAkKG9iaikvekltYWdlLiU6IHZtbGludXggJCh3cmFwcGVyYml0cykKIAkkKGNhbGwgaWZfY2hhbmdlZCx3cmFwLCQqKQogCi0kKG9iaikvekltYWdlLWR0Yi5pbml0cmQuJTogdm1saW51eCAkKHdyYXBwZXJiaXRzKSAkKGR0c3RyZWUpLyUuZHRzCisjIGR0YkltYWdlJSAtIGEgZHRiSW1hZ2UgaXMgYSB6SW1hZ2Ugd2l0aCBhbiBlbWJlZGRlZCBkZXZpY2UgdHJlZSBibG9iCiskKG9iaikvZHRiSW1hZ2UuaW5pdHJkLiU6IHZtbGludXggJCh3cmFwcGVyYml0cykgJChkdHN0cmVlKS8lLmR0cwogCSQoY2FsbCBpZl9jaGFuZ2VkLHdyYXAsJCosJChkdHN0cmVlKS8kKi5kdHMsLCQob2JqKS9yYW1kaXNrLmltYWdlLmd6KQogCi0kKG9iaikvekltYWdlLWR0Yi4lOiB2bWxpbnV4ICQod3JhcHBlcmJpdHMpICQoZHRzdHJlZSkvJS5kdHMKKyQob2JqKS9kdGJJbWFnZS4lOiB2bWxpbnV4ICQod3JhcHBlcmJpdHMpICQoZHRzdHJlZSkvJS5kdHMKIAkkKGNhbGwgaWZfY2hhbmdlZCx3cmFwLCQqLCQoZHRzdHJlZSkvJCouZHRzKQogCiAjIFRoaXMgY2Fubm90IGJlIGluIHRoZSByb290IG9mICQoc3JjKSBhcyB0aGUgekltYWdlIHJ1bGUgYWx3YXlzIGFkZHMgYSAkKG9iaikKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9ib290L2R0cy9jbTUyMDAuZHRzIGIvYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL2NtNTIwMC5kdHMKaW5kZXggMzA3MzdlYS4uYzZjYTYzMSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL2NtNTIwMC5kdHMKKysrIGIvYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL2NtNTIwMC5kdHMKQEAgLTIxMiwxMyArMjEyLDMwIEBACiAJCWV0aGVybmV0QDMwMDAgewogCQkJZGV2aWNlX3R5cGUgPSAibmV0d29yayI7CiAJCQljb21wYXRpYmxlID0gImZzbCxtcGM1MjAwYi1mZWMiLCJmc2wsbXBjNTIwMC1mZWMiOwotCQkJcmVnID0gPDMwMDAgODAwPjsKKwkJCXJlZyA9IDwzMDAwIDQwMD47CiAJCQlsb2NhbC1tYWMtYWRkcmVzcyA9IFsgMDAgMDAgMDAgMDAgMDAgMDAgXTsKIAkJCWludGVycnVwdHMgPSA8MiA1IDA+OwogCQkJaW50ZXJydXB0LXBhcmVudCA9IDwmbXBjNTIwMF9waWM+OworCQkJcGh5LWhhbmRsZSA9IDwmcGh5MD47CisJCX07CisKKwkJbWRpb0AzMDAwIHsKKwkJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkJI3NpemUtY2VsbHMgPSA8MD47CisJCQljb21wYXRpYmxlID0gImZzbCxtcGM1MjAwYi1tZGlvIiwiZnNsLG1wYzUyMDAtbWRpbyI7CisJCQlyZWcgPSA8MzAwMCA0MDA+OyAgICAgICAvLyBmZWMgcmFuZ2UsIHNpbmNlIHdlIG5lZWQgdG8gc2V0dXAgZmVjIGludGVycnVwdHMKKwkJCWludGVycnVwdHMgPSA8MiA1IDA+OyAgIC8vIHRoZXNlIGFyZSBmb3IgIm1paSBjb21tYW5kIGZpbmlzaGVkIiwgbm90IGxpbmsgY2hhbmdlcyAmIGNvLgorCQkJaW50ZXJydXB0LXBhcmVudCA9IDwmbXBjNTIwMF9waWM+OworCisJCQlwaHkwOiBldGhlcm5ldC1waHlAMCB7CisJCQkJZGV2aWNlX3R5cGUgPSAiZXRoZXJuZXQtcGh5IjsKKwkJCQlyZWcgPSA8MD47CisJCQl9OwogCQl9OwogCiAJCWkyY0AzZDQwIHsKKwkJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkJI3NpemUtY2VsbHMgPSA8MD47CiAJCQljb21wYXRpYmxlID0gImZzbCxtcGM1MjAwYi1pMmMiLCJmc2wsbXBjNTIwMC1pMmMiLCJmc2wtaTJjIjsKIAkJCXJlZyA9IDwzZDQwIDQwPjsKIAkJCWludGVycnVwdHMgPSA8MiAxMCAwPjsKQEAgLTIzMSw0ICsyNDgsMjIgQEAKIAkJCXJlZyA9IDw4MDAwIDQwMDA+OwogCQl9OwogCX07CisKKwlscGIgeworCQltb2RlbCA9ICJmc2wsbHBiIjsKKwkJY29tcGF0aWJsZSA9ICJmc2wsbHBiIjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8Mj47CisJCSNzaXplLWNlbGxzID0gPDE+OworCQlyYW5nZXMgPSA8MCAwIGZjMDAwMDAwIDIwMDAwMDA+OworCisJCS8vIDE2LWJpdCBmbGFzaCBkZXZpY2UgYXQgTG9jYWxQbHVzIEJ1cyBDUzAKKwkJZmxhc2hAMCwwIHsKKwkJCWNvbXBhdGlibGUgPSAiY2ZpLWZsYXNoIjsKKwkJCXJlZyA9IDwwIDAgMjAwMDAwMD47CisJCQliYW5rLXdpZHRoID0gPDI+OworCQkJZGV2aWNlLXdpZHRoID0gPDI+OworCQkJI3NpemUtY2VsbHMgPSA8MT47CisJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJfTsKKwl9OwogfTsKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9ib290L2R0cy9saXRlNTIwMC5kdHMgYi9hcmNoL3Bvd2VycGMvYm9vdC9kdHMvbGl0ZTUyMDAuZHRzCmluZGV4IDBkNzAxYzEuLjA5YjRlMTYgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9ib290L2R0cy9saXRlNTIwMC5kdHMKKysrIGIvYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL2xpdGU1MjAwLmR0cwpAQCAtMjU4LDYgKzI1OCwyMSBAQAogCQkJbG9jYWwtbWFjLWFkZHJlc3MgPSBbIDAwIDAwIDAwIDAwIDAwIDAwIF07CiAJCQlpbnRlcnJ1cHRzID0gPDIgNSAwPjsKIAkJCWludGVycnVwdC1wYXJlbnQgPSA8Jm1wYzUyMDBfcGljPjsKKwkJCXBoeS1oYW5kbGUgPSA8JnBoeTA+OworCQl9OworCisJCW1kaW9AMzAwMCB7CisJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJCSNzaXplLWNlbGxzID0gPDA+OworCQkJY29tcGF0aWJsZSA9ICJmc2wsbXBjNTIwMC1tZGlvIjsKKwkJCXJlZyA9IDwzMDAwIDQwMD47CS8vIGZlYyByYW5nZSwgc2luY2Ugd2UgbmVlZCB0byBzZXR1cCBmZWMgaW50ZXJydXB0cworCQkJaW50ZXJydXB0cyA9IDwyIDUgMD47CS8vIHRoZXNlIGFyZSBmb3IgIm1paSBjb21tYW5kIGZpbmlzaGVkIiwgbm90IGxpbmsgY2hhbmdlcyAmIGNvLgorCQkJaW50ZXJydXB0LXBhcmVudCA9IDwmbXBjNTIwMF9waWM+OworCisJCQlwaHkwOmV0aGVybmV0LXBoeUAxIHsKKwkJCQlkZXZpY2VfdHlwZSA9ICJldGhlcm5ldC1waHkiOworCQkJCXJlZyA9IDwxPjsKKwkJCX07CiAJCX07CiAKIAkJYXRhQDNhMDAgewpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL2xpdGU1MjAwYi5kdHMgYi9hcmNoL3Bvd2VycGMvYm9vdC9kdHMvbGl0ZTUyMDBiLmR0cwppbmRleCA1NzFiYTAyLi4yZTliYzM5IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvYm9vdC9kdHMvbGl0ZTUyMDBiLmR0cworKysgYi9hcmNoL3Bvd2VycGMvYm9vdC9kdHMvbGl0ZTUyMDBiLmR0cwpAQCAtMjcwLDcgKzI3MCw3IEBACiAJCW1kaW9AMzAwMCB7CiAJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKIAkJCSNzaXplLWNlbGxzID0gPDA+OwotCQkJY29tcGF0aWJsZSA9ICJmc2wsbXBjNTIwMGItbWRpbyI7CisJCQljb21wYXRpYmxlID0gImZzbCxtcGM1MjAwYi1tZGlvIiwgImZzbCxtcGM1MjAwLW1kaW8iOwogCQkJcmVnID0gPDMwMDAgNDAwPjsJLy8gZmVjIHJhbmdlLCBzaW5jZSB3ZSBuZWVkIHRvIHNldHVwIGZlYyBpbnRlcnJ1cHRzCiAJCQlpbnRlcnJ1cHRzID0gPDIgNSAwPjsJLy8gdGhlc2UgYXJlIGZvciAibWlpIGNvbW1hbmQgZmluaXNoZWQiLCBub3QgbGluayBjaGFuZ2VzICYgY28uCiAJCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZtcGM1MjAwX3BpYz47CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvYm9vdC9kdHMvbW90aW9ucHJvLmR0cyBiL2FyY2gvcG93ZXJwYy9ib290L2R0cy9tb3Rpb25wcm8uZHRzCmluZGV4IDc2OTUxYWIuLjJiMGRkZTAgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9ib290L2R0cy9tb3Rpb25wcm8uZHRzCisrKyBiL2FyY2gvcG93ZXJwYy9ib290L2R0cy9tb3Rpb25wcm8uZHRzCkBAIC0xNDgsNyArMTQ4LDYgQEAKIAkJCWludGVycnVwdC1wYXJlbnQgPSA8Jm1wYzUyMDBfcGljPjsKIAkJfTsKIAotCiAJCXNwaUBmMDAgewogCQkJY29tcGF0aWJsZSA9ICJmc2wsbXBjNTIwMGItc3BpIiwiZnNsLG1wYzUyMDAtc3BpIjsKIAkJCXJlZyA9IDxmMDAgMjA+OwpAQCAtMjA5LDEwICsyMDgsMjUgQEAKIAkJZXRoZXJuZXRAMzAwMCB7CiAJCQlkZXZpY2VfdHlwZSA9ICJuZXR3b3JrIjsKIAkJCWNvbXBhdGlibGUgPSAiZnNsLG1wYzUyMDBiLWZlYyIsImZzbCxtcGM1MjAwLWZlYyI7Ci0JCQlyZWcgPSA8MzAwMCA4MDA+OworCQkJcmVnID0gPDMwMDAgNDAwPjsKIAkJCWxvY2FsLW1hYy1hZGRyZXNzID0gWyAwMCAwMCAwMCAwMCAwMCAwMCBdOwogCQkJaW50ZXJydXB0cyA9IDwyIDUgMD47CiAJCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZtcGM1MjAwX3BpYz47CisJCQlwaHktaGFuZGxlID0gPCZwaHkwPjsKKwkJfTsKKworCQltZGlvQDMwMDAgeworCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwkJCWNvbXBhdGlibGUgPSAiZnNsLG1wYzUyMDBiLW1kaW8iLCJmc2wsbXBjNTIwMC1tZGlvIjsKKwkJCXJlZyA9IDwzMDAwIDQwMD47ICAgICAgIC8vIGZlYyByYW5nZSwgc2luY2Ugd2UgbmVlZCB0byBzZXR1cCBmZWMgaW50ZXJydXB0cworCQkJaW50ZXJydXB0cyA9IDwyIDUgMD47ICAgLy8gdGhlc2UgYXJlIGZvciAibWlpIGNvbW1hbmQgZmluaXNoZWQiLCBub3QgbGluayBjaGFuZ2VzICYgY28uCisJCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZtcGM1MjAwX3BpYz47CisKKwkJCXBoeTA6IGV0aGVybmV0LXBoeUAyIHsKKwkJCQlkZXZpY2VfdHlwZSA9ICJldGhlcm5ldC1waHkiOworCQkJCXJlZyA9IDwyPjsKKwkJCX07CiAJCX07CiAKIAkJYXRhQDNhMDAgewpAQCAtMjIzLDExICsyMzcsMTkgQEAKIAkJfTsKIAogCQlpMmNAM2Q0MCB7CisJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJCSNzaXplLWNlbGxzID0gPDA+OwogCQkJY29tcGF0aWJsZSA9ICJmc2wsbXBjNTIwMGItaTJjIiwiZnNsLG1wYzUyMDAtaTJjIiwiZnNsLWkyYyI7CiAJCQlyZWcgPSA8M2Q0MCA0MD47CiAJCQlpbnRlcnJ1cHRzID0gPDIgMTAgMD47CiAJCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZtcGM1MjAwX3BpYz47CiAJCQlmc2w1MjAwLWNsb2NraW5nOworCisJCQlydGNANjggeworCQkJCWRldmljZV90eXBlID0gInJ0YyI7CisJCQkJY29tcGF0aWJsZSA9ICJkYWxsYXMsZHMxMzM5IjsKKwkJCQlyZWcgPSA8Njg+OworCQkJfTsKIAkJfTsKIAogCQlzcmFtQDgwMDAgewpAQCAtMjQwLDcgKzI2Miw4IEBACiAJCWNvbXBhdGlibGUgPSAiZnNsLGxwYiI7CiAJCSNhZGRyZXNzLWNlbGxzID0gPDI+OwogCQkjc2l6ZS1jZWxscyA9IDwxPjsKLQkJcmFuZ2VzID0gPDEgMCA1MDAwMDAwMCAwMDAxMDAwMAorCQlyYW5nZXMgPSA8MCAwIGZmMDAwMDAwIDAxMDAwMDAwCisJCQkgIDEgMCA1MDAwMDAwMCAwMDAxMDAwMAogCQkJICAyIDAgNTAwMTAwMDAgMDAwMTAwMDAKIAkJCSAgMyAwIDUwMDIwMDAwIDAwMDEwMDAwPjsKIApAQCAtMjcxLDMxICsyOTQsMTUgQEAKIAkJCWNvbXBhdGlibGUgPSAicHJvbWVzcyxwcm9fbW9kdWxlX2RpbyI7CiAJCQlyZWcgPSA8MyA4MDAgMj47CiAJCX07Ci0JfTsKIAotCXBjaUBmMDAwMGQwMCB7Ci0JCSNpbnRlcnJ1cHQtY2VsbHMgPSA8MT47Ci0JCSNzaXplLWNlbGxzID0gPDI+OwotCQkjYWRkcmVzcy1jZWxscyA9IDwzPjsKLQkJZGV2aWNlX3R5cGUgPSAicGNpIjsKLQkJY29tcGF0aWJsZSA9ICJmc2wsbXBjNTIwMGItcGNpIiwiZnNsLG1wYzUyMDAtcGNpIjsKLQkJcmVnID0gPGYwMDAwZDAwIDEwMD47Ci0JCWludGVycnVwdC1tYXAtbWFzayA9IDxmODAwIDAgMCA3PjsKLQkJaW50ZXJydXB0LW1hcCA9IDxjMDAwIDAgMCAxICZtcGM1MjAwX3BpYyAwIDAgMyAvLyAxc3Qgc2xvdAotCQkJCSBjMDAwIDAgMCAyICZtcGM1MjAwX3BpYyAxIDEgMwotCQkJCSBjMDAwIDAgMCAzICZtcGM1MjAwX3BpYyAxIDIgMwotCQkJCSBjMDAwIDAgMCA0ICZtcGM1MjAwX3BpYyAxIDMgMwotCi0JCQkJIGM4MDAgMCAwIDEgJm1wYzUyMDBfcGljIDEgMSAzIC8vIDJuZCBzbG90Ci0JCQkJIGM4MDAgMCAwIDIgJm1wYzUyMDBfcGljIDEgMiAzCi0JCQkJIGM4MDAgMCAwIDMgJm1wYzUyMDBfcGljIDEgMyAzCi0JCQkJIGM4MDAgMCAwIDQgJm1wYzUyMDBfcGljIDAgMCAzPjsKLQkJY2xvY2stZnJlcXVlbmN5ID0gPDA+OyAvLyBGcm9tIGJvb3QgbG9hZGVyCi0JCWludGVycnVwdHMgPSA8MiA4IDAgMiA5IDAgMiBhIDA+OwotCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZtcGM1MjAwX3BpYz47Ci0JCWJ1cy1yYW5nZSA9IDwwIDA+OwotCQlyYW5nZXMgPSA8NDIwMDAwMDAgMCA4MDAwMDAwMCA4MDAwMDAwMCAwIDIwMDAwMDAwCi0JCQkgIDAyMDAwMDAwIDAgYTAwMDAwMDAgYTAwMDAwMDAgMCAxMDAwMDAwMAotCQkJICAwMTAwMDAwMCAwIDAwMDAwMDAwIGIwMDAwMDAwIDAgMDEwMDAwMDA+OworCQkvLyAxNi1iaXQgZmxhc2ggZGV2aWNlIGF0IExvY2FsUGx1cyBCdXMgQ1MwCisJCWZsYXNoQDAsMCB7CisJCQljb21wYXRpYmxlID0gImNmaS1mbGFzaCI7CisJCQlyZWcgPSA8MCAwIDAxMDAwMDAwPjsKKwkJCWJhbmstd2lkdGggPSA8Mj47CisJCQlkZXZpY2Utd2lkdGggPSA8Mj47CisJCQkjc2l6ZS1jZWxscyA9IDwxPjsKKwkJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQl9OwogCX07CiB9OwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL21wYzgzNzdfbWRzLmR0cyBiL2FyY2gvcG93ZXJwYy9ib290L2R0cy9tcGM4Mzc3X21kcy5kdHMKaW5kZXggYTM2MzdmZi4uZWFjOGUxYiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL21wYzgzNzdfbWRzLmR0cworKysgYi9hcmNoL3Bvd2VycGMvYm9vdC9kdHMvbXBjODM3N19tZHMuZHRzCkBAIC00Nyw2ICs0Nyw3MiBAQAogCQlyZWcgPSA8MHgwMDAwMDAwMCAweDIwMDAwMDAwPjsJLy8gNTEyTUIgYXQgMAogCX07CiAKKwlsb2NhbGJ1c0BlMDAwNTAwMCB7CisJCSNhZGRyZXNzLWNlbGxzID0gPDI+OworCQkjc2l6ZS1jZWxscyA9IDwxPjsKKwkJY29tcGF0aWJsZSA9ICJmc2wsbXBjODM3Ny1lbGJjIiwgImZzbCxlbGJjIiwgInNpbXBsZS1idXMiOworCQlyZWcgPSA8MHhlMDAwNTAwMCAweDEwMDA+OworCQlpbnRlcnJ1cHRzID0gPDc3IDB4OD47CisJCWludGVycnVwdC1wYXJlbnQgPSA8JmlwaWM+OworCisJCS8vIGJvb3RpbmcgZnJvbSBOT1IgZmxhc2gKKwkJcmFuZ2VzID0gPDAgMHgwIDB4ZmUwMDAwMDAgMHgwMjAwMDAwMAorCQkgICAgICAgICAgMSAweDAgMHhmODAwMDAwMCAweDAwMDA4MDAwCisJCSAgICAgICAgICAzIDB4MCAweGUwNjAwMDAwIDB4MDAwMDgwMDA+OworCisJCWZsYXNoQDAsMCB7CisJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJCSNzaXplLWNlbGxzID0gPDE+OworCQkJY29tcGF0aWJsZSA9ICJjZmktZmxhc2giOworCQkJcmVnID0gPDAgMHgwIDB4MjAwMDAwMD47CisJCQliYW5rLXdpZHRoID0gPDI+OworCQkJZGV2aWNlLXdpZHRoID0gPDE+OworCisJCQl1LWJvb3RAMCB7CisJCQkJcmVnID0gPDB4MCAweDEwMDAwMD47CisJCQkJcmVhZC1vbmx5OworCQkJfTsKKworCQkJZnNAMTAwMDAwIHsKKwkJCQlyZWcgPSA8MHgxMDAwMDAgMHg4MDAwMDA+OworCQkJfTsKKworCQkJa2VybmVsQDFkMDAwMDAgeworCQkJCXJlZyA9IDwweDFkMDAwMDAgMHgyMDAwMDA+OworCQkJfTsKKworCQkJZHRiQDFmMDAwMDAgeworCQkJCXJlZyA9IDwweDFmMDAwMDAgMHgxMDAwMDA+OworCQkJfTsKKwkJfTsKKworCQliY3NyQDEsMCB7CisJCQlyZWcgPSA8MSAweDAgMHg4MDAwPjsKKwkJCWNvbXBhdGlibGUgPSAiZnNsLG1wYzgzN3htZHMtYmNzciI7CisJCX07CisKKwkJbmFuZEAzLDAgeworCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCQkjc2l6ZS1jZWxscyA9IDwxPjsKKwkJCWNvbXBhdGlibGUgPSAiZnNsLG1wYzgzNzctZmNtLW5hbmQiLAorCQkJICAgICAgICAgICAgICJmc2wsZWxiYy1mY20tbmFuZCI7CisJCQlyZWcgPSA8MyAweDAgMHg4MDAwPjsKKworCQkJdS1ib290QDAgeworCQkJCXJlZyA9IDwweDAgMHgxMDAwMDA+OworCQkJCXJlYWQtb25seTsKKwkJCX07CisKKwkJCWtlcm5lbEAxMDAwMDAgeworCQkJCXJlZyA9IDwweDEwMDAwMCAweDMwMDAwMD47CisJCQl9OworCisJCQlmc0A0MDAwMDAgeworCQkJCXJlZyA9IDwweDQwMDAwMCAweDFjMDAwMDA+OworCQkJfTsKKwkJfTsKKwl9OworCiAJc29jQGUwMDAwMDAwIHsKIAkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CiAJCSNzaXplLWNlbGxzID0gPDE+OwpAQCAtOTEsNyArMTU3LDYgQEAKIAkJCW1vZGUgPSAiY3B1IjsKIAkJfTsKIAotCQkvKiBwaHkgdHlwZSAoVUxQSSwgVVRNSSwgVVRNSV9XSURFLCBTRVJJQUwpICovCiAJCXVzYkAyMzAwMCB7CiAJCQljb21wYXRpYmxlID0gImZzbC11c2IyLWRyIjsKIAkJCXJlZyA9IDwweDIzMDAwIDB4MTAwMD47CkBAIC05OSw3ICsxNjQsOCBAQAogCQkJI3NpemUtY2VsbHMgPSA8MD47CiAJCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZpcGljPjsKIAkJCWludGVycnVwdHMgPSA8MzggMHg4PjsKLQkJCXBoeV90eXBlID0gInV0bWlfd2lkZSI7CisJCQlkcl9tb2RlID0gImhvc3QiOworCQkJcGh5X3R5cGUgPSAidWxwaSI7CiAJCX07CiAKIAkJbWRpb0AyNDUyMCB7CkBAIC0xODksMTQgKzI1NSwxNCBAQAogCQl9OwogCiAJCXNhdGFAMTgwMDAgewotCQkJY29tcGF0aWJsZSA9ICJmc2wsbXBjODM3OS1zYXRhIjsKKwkJCWNvbXBhdGlibGUgPSAiZnNsLG1wYzgzNzktc2F0YSIsICJmc2wscHEtc2F0YSI7CiAJCQlyZWcgPSA8MHgxODAwMCAweDEwMDA+OwogCQkJaW50ZXJydXB0cyA9IDw0NCAweDg+OwogCQkJaW50ZXJydXB0LXBhcmVudCA9IDwmaXBpYz47CiAJCX07CiAKIAkJc2F0YUAxOTAwMCB7Ci0JCQljb21wYXRpYmxlID0gImZzbCxtcGM4Mzc5LXNhdGEiOworCQkJY29tcGF0aWJsZSA9ICJmc2wsbXBjODM3OS1zYXRhIiwgImZzbCxwcS1zYXRhIjsKIAkJCXJlZyA9IDwweDE5MDAwIDB4MTAwMD47CiAJCQlpbnRlcnJ1cHRzID0gPDQ1IDB4OD47CiAJCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZpcGljPjsKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9ib290L2R0cy9tcGM4Mzc3X3JkYi5kdHMgYi9hcmNoL3Bvd2VycGMvYm9vdC9kdHMvbXBjODM3N19yZGIuZHRzCmluZGV4IDQ0MGFhNGQuLjViYzA5YWQgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9ib290L2R0cy9tcGM4Mzc3X3JkYi5kdHMKKysrIGIvYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL21wYzgzNzdfcmRiLmR0cwpAQCAtMTQzLDcgKzE0Myw2IEBACiAJCQltb2RlID0gImNwdSI7CiAJCX07CiAKLQkJLyogcGh5IHR5cGUgKFVMUEksIFVUTUksIFVUTUlfV0lERSwgU0VSSUFMKSAqLwogCQl1c2JAMjMwMDAgewogCQkJY29tcGF0aWJsZSA9ICJmc2wtdXNiMi1kciI7CiAJCQlyZWcgPSA8MHgyMzAwMCAweDEwMDA+OwpAQCAtMTUxLDcgKzE1MCw3IEBACiAJCQkjc2l6ZS1jZWxscyA9IDwwPjsKIAkJCWludGVycnVwdC1wYXJlbnQgPSA8JmlwaWM+OwogCQkJaW50ZXJydXB0cyA9IDwzOCAweDg+OwotCQkJcGh5X3R5cGUgPSAidXRtaSI7CisJCQlwaHlfdHlwZSA9ICJ1bHBpIjsKIAkJfTsKIAogCQltZGlvQDI0NTIwIHsKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9ib290L2R0cy9tcGM4Mzc4X21kcy5kdHMgYi9hcmNoL3Bvd2VycGMvYm9vdC9kdHMvbXBjODM3OF9tZHMuZHRzCmluZGV4IDUzM2U5YjAuLjFkNmVhMDggMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9ib290L2R0cy9tcGM4Mzc4X21kcy5kdHMKKysrIGIvYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL21wYzgzNzhfbWRzLmR0cwpAQCAtNDcsNiArNDcsNzIgQEAKIAkJcmVnID0gPDB4MDAwMDAwMDAgMHgyMDAwMDAwMD47CS8vIDUxMk1CIGF0IDAKIAl9OwogCisJbG9jYWxidXNAZTAwMDUwMDAgeworCQkjYWRkcmVzcy1jZWxscyA9IDwyPjsKKwkJI3NpemUtY2VsbHMgPSA8MT47CisJCWNvbXBhdGlibGUgPSAiZnNsLG1wYzgzNzgtZWxiYyIsICJmc2wsZWxiYyIsICJzaW1wbGUtYnVzIjsKKwkJcmVnID0gPDB4ZTAwMDUwMDAgMHgxMDAwPjsKKwkJaW50ZXJydXB0cyA9IDw3NyAweDg+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZpcGljPjsKKworCQkvLyBib290aW5nIGZyb20gTk9SIGZsYXNoCisJCXJhbmdlcyA9IDwwIDB4MCAweGZlMDAwMDAwIDB4MDIwMDAwMDAKKwkJICAgICAgICAgIDEgMHgwIDB4ZjgwMDAwMDAgMHgwMDAwODAwMAorCQkgICAgICAgICAgMyAweDAgMHhlMDYwMDAwMCAweDAwMDA4MDAwPjsKKworCQlmbGFzaEAwLDAgeworCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCQkjc2l6ZS1jZWxscyA9IDwxPjsKKwkJCWNvbXBhdGlibGUgPSAiY2ZpLWZsYXNoIjsKKwkJCXJlZyA9IDwwIDB4MCAweDIwMDAwMDA+OworCQkJYmFuay13aWR0aCA9IDwyPjsKKwkJCWRldmljZS13aWR0aCA9IDwxPjsKKworCQkJdS1ib290QDAgeworCQkJCXJlZyA9IDwweDAgMHgxMDAwMDA+OworCQkJCXJlYWQtb25seTsKKwkJCX07CisKKwkJCWZzQDEwMDAwMCB7CisJCQkJcmVnID0gPDB4MTAwMDAwIDB4ODAwMDAwPjsKKwkJCX07CisKKwkJCWtlcm5lbEAxZDAwMDAwIHsKKwkJCQlyZWcgPSA8MHgxZDAwMDAwIDB4MjAwMDAwPjsKKwkJCX07CisKKwkJCWR0YkAxZjAwMDAwIHsKKwkJCQlyZWcgPSA8MHgxZjAwMDAwIDB4MTAwMDAwPjsKKwkJCX07CisJCX07CisKKwkJYmNzckAxLDAgeworCQkJcmVnID0gPDEgMHgwIDB4ODAwMD47CisJCQljb21wYXRpYmxlID0gImZzbCxtcGM4Mzd4bWRzLWJjc3IiOworCQl9OworCisJCW5hbmRAMywwIHsKKwkJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkJI3NpemUtY2VsbHMgPSA8MT47CisJCQljb21wYXRpYmxlID0gImZzbCxtcGM4Mzc4LWZjbS1uYW5kIiwKKwkJCSAgICAgICAgICAgICAiZnNsLGVsYmMtZmNtLW5hbmQiOworCQkJcmVnID0gPDMgMHgwIDB4ODAwMD47CisKKwkJCXUtYm9vdEAwIHsKKwkJCQlyZWcgPSA8MHgwIDB4MTAwMDAwPjsKKwkJCQlyZWFkLW9ubHk7CisJCQl9OworCisJCQlrZXJuZWxAMTAwMDAwIHsKKwkJCQlyZWcgPSA8MHgxMDAwMDAgMHgzMDAwMDA+OworCQkJfTsKKworCQkJZnNANDAwMDAwIHsKKwkJCQlyZWcgPSA8MHg0MDAwMDAgMHgxYzAwMDAwPjsKKwkJCX07CisJCX07CisJfTsKKwogCXNvY0BlMDAwMDAwMCB7CiAJCSNhZGRyZXNzLWNlbGxzID0gPDE+OwogCQkjc2l6ZS1jZWxscyA9IDwxPjsKQEAgLTkxLDcgKzE1Nyw2IEBACiAJCQltb2RlID0gImNwdSI7CiAJCX07CiAKLQkJLyogcGh5IHR5cGUgKFVMUEksIFVUTUksIFVUTUlfV0lERSwgU0VSSUFMKSAqLwogCQl1c2JAMjMwMDAgewogCQkJY29tcGF0aWJsZSA9ICJmc2wtdXNiMi1kciI7CiAJCQlyZWcgPSA8MHgyMzAwMCAweDEwMDA+OwpAQCAtOTksNyArMTY0LDggQEAKIAkJCSNzaXplLWNlbGxzID0gPDA+OwogCQkJaW50ZXJydXB0LXBhcmVudCA9IDwmaXBpYz47CiAJCQlpbnRlcnJ1cHRzID0gPDM4IDB4OD47Ci0JCQlwaHlfdHlwZSA9ICJ1dG1pX3dpZGUiOworCQkJZHJfbW9kZSA9ICJob3N0IjsKKwkJCXBoeV90eXBlID0gInVscGkiOwogCQl9OwogCiAJCW1kaW9AMjQ1MjAgewpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL21wYzgzNzhfcmRiLmR0cyBiL2FyY2gvcG93ZXJwYy9ib290L2R0cy9tcGM4Mzc4X3JkYi5kdHMKaW5kZXggOTI3MTE1My4uNzExZjlhMyAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL21wYzgzNzhfcmRiLmR0cworKysgYi9hcmNoL3Bvd2VycGMvYm9vdC9kdHMvbXBjODM3OF9yZGIuZHRzCkBAIC0xNDMsNyArMTQzLDYgQEAKIAkJCW1vZGUgPSAiY3B1IjsKIAkJfTsKIAotCQkvKiBwaHkgdHlwZSAoVUxQSSwgVVRNSSwgVVRNSV9XSURFLCBTRVJJQUwpICovCiAJCXVzYkAyMzAwMCB7CiAJCQljb21wYXRpYmxlID0gImZzbC11c2IyLWRyIjsKIAkJCXJlZyA9IDwweDIzMDAwIDB4MTAwMD47CkBAIC0xNTEsNyArMTUwLDcgQEAKIAkJCSNzaXplLWNlbGxzID0gPDA+OwogCQkJaW50ZXJydXB0LXBhcmVudCA9IDwmaXBpYz47CiAJCQlpbnRlcnJ1cHRzID0gPDM4IDB4OD47Ci0JCQlwaHlfdHlwZSA9ICJ1dG1pIjsKKwkJCXBoeV90eXBlID0gInVscGkiOwogCQl9OwogCiAJCW1kaW9AMjQ1MjAgewpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL21wYzgzNzlfbWRzLmR0cyBiL2FyY2gvcG93ZXJwYy9ib290L2R0cy9tcGM4Mzc5X21kcy5kdHMKaW5kZXggYzI3MDY4NS4uNmY3OGE5ZiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL21wYzgzNzlfbWRzLmR0cworKysgYi9hcmNoL3Bvd2VycGMvYm9vdC9kdHMvbXBjODM3OV9tZHMuZHRzCkBAIC00Nyw2ICs0Nyw3MiBAQAogCQlyZWcgPSA8MHgwMDAwMDAwMCAweDIwMDAwMDAwPjsJLy8gNTEyTUIgYXQgMAogCX07CiAKKwlsb2NhbGJ1c0BlMDAwNTAwMCB7CisJCSNhZGRyZXNzLWNlbGxzID0gPDI+OworCQkjc2l6ZS1jZWxscyA9IDwxPjsKKwkJY29tcGF0aWJsZSA9ICJmc2wsbXBjODM3OS1lbGJjIiwgImZzbCxlbGJjIiwgInNpbXBsZS1idXMiOworCQlyZWcgPSA8MHhlMDAwNTAwMCAweDEwMDA+OworCQlpbnRlcnJ1cHRzID0gPDc3IDB4OD47CisJCWludGVycnVwdC1wYXJlbnQgPSA8JmlwaWM+OworCisJCS8vIGJvb3RpbmcgZnJvbSBOT1IgZmxhc2gKKwkJcmFuZ2VzID0gPDAgMHgwIDB4ZmUwMDAwMDAgMHgwMjAwMDAwMAorCQkgICAgICAgICAgMSAweDAgMHhmODAwMDAwMCAweDAwMDA4MDAwCisJCSAgICAgICAgICAzIDB4MCAweGUwNjAwMDAwIDB4MDAwMDgwMDA+OworCisJCWZsYXNoQDAsMCB7CisJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJCSNzaXplLWNlbGxzID0gPDE+OworCQkJY29tcGF0aWJsZSA9ICJjZmktZmxhc2giOworCQkJcmVnID0gPDAgMHgwIDB4MjAwMDAwMD47CisJCQliYW5rLXdpZHRoID0gPDI+OworCQkJZGV2aWNlLXdpZHRoID0gPDE+OworCisJCQl1LWJvb3RAMCB7CisJCQkJcmVnID0gPDB4MCAweDEwMDAwMD47CisJCQkJcmVhZC1vbmx5OworCQkJfTsKKworCQkJZnNAMTAwMDAwIHsKKwkJCQlyZWcgPSA8MHgxMDAwMDAgMHg4MDAwMDA+OworCQkJfTsKKworCQkJa2VybmVsQDFkMDAwMDAgeworCQkJCXJlZyA9IDwweDFkMDAwMDAgMHgyMDAwMDA+OworCQkJfTsKKworCQkJZHRiQDFmMDAwMDAgeworCQkJCXJlZyA9IDwweDFmMDAwMDAgMHgxMDAwMDA+OworCQkJfTsKKwkJfTsKKworCQliY3NyQDEsMCB7CisJCQlyZWcgPSA8MSAweDAgMHg4MDAwPjsKKwkJCWNvbXBhdGlibGUgPSAiZnNsLG1wYzgzN3htZHMtYmNzciI7CisJCX07CisKKwkJbmFuZEAzLDAgeworCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCQkjc2l6ZS1jZWxscyA9IDwxPjsKKwkJCWNvbXBhdGlibGUgPSAiZnNsLG1wYzgzNzktZmNtLW5hbmQiLAorCQkJICAgICAgICAgICAgICJmc2wsZWxiYy1mY20tbmFuZCI7CisJCQlyZWcgPSA8MyAweDAgMHg4MDAwPjsKKworCQkJdS1ib290QDAgeworCQkJCXJlZyA9IDwweDAgMHgxMDAwMDA+OworCQkJCXJlYWQtb25seTsKKwkJCX07CisKKwkJCWtlcm5lbEAxMDAwMDAgeworCQkJCXJlZyA9IDwweDEwMDAwMCAweDMwMDAwMD47CisJCQl9OworCisJCQlmc0A0MDAwMDAgeworCQkJCXJlZyA9IDwweDQwMDAwMCAweDFjMDAwMDA+OworCQkJfTsKKwkJfTsKKwl9OworCiAJc29jQGUwMDAwMDAwIHsKIAkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CiAJCSNzaXplLWNlbGxzID0gPDE+OwpAQCAtOTEsNyArMTU3LDYgQEAKIAkJCW1vZGUgPSAiY3B1IjsKIAkJfTsKIAotCQkvKiBwaHkgdHlwZSAoVUxQSSwgVVRNSSwgVVRNSV9XSURFLCBTRVJJQUwpICovCiAJCXVzYkAyMzAwMCB7CiAJCQljb21wYXRpYmxlID0gImZzbC11c2IyLWRyIjsKIAkJCXJlZyA9IDwweDIzMDAwIDB4MTAwMD47CkBAIC05OSw3ICsxNjQsOCBAQAogCQkJI3NpemUtY2VsbHMgPSA8MD47CiAJCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZpcGljPjsKIAkJCWludGVycnVwdHMgPSA8MzggMHg4PjsKLQkJCXBoeV90eXBlID0gInV0bWlfd2lkZSI7CisJCQlkcl9tb2RlID0gImhvc3QiOworCQkJcGh5X3R5cGUgPSAidWxwaSI7CiAJCX07CiAKIAkJbWRpb0AyNDUyMCB7CkBAIC0xODksMjggKzI1NSwyOCBAQAogCQl9OwogCiAJCXNhdGFAMTgwMDAgewotCQkJY29tcGF0aWJsZSA9ICJmc2wsbXBjODM3OS1zYXRhIjsKKwkJCWNvbXBhdGlibGUgPSAiZnNsLG1wYzgzNzktc2F0YSIsICJmc2wscHEtc2F0YSI7CiAJCQlyZWcgPSA8MHgxODAwMCAweDEwMDA+OwogCQkJaW50ZXJydXB0cyA9IDw0NCAweDg+OwogCQkJaW50ZXJydXB0LXBhcmVudCA9IDwmaXBpYz47CiAJCX07CiAKIAkJc2F0YUAxOTAwMCB7Ci0JCQljb21wYXRpYmxlID0gImZzbCxtcGM4Mzc5LXNhdGEiOworCQkJY29tcGF0aWJsZSA9ICJmc2wsbXBjODM3OS1zYXRhIiwgImZzbCxwcS1zYXRhIjsKIAkJCXJlZyA9IDwweDE5MDAwIDB4MTAwMD47CiAJCQlpbnRlcnJ1cHRzID0gPDQ1IDB4OD47CiAJCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZpcGljPjsKIAkJfTsKIAogCQlzYXRhQDFhMDAwIHsKLQkJCWNvbXBhdGlibGUgPSAiZnNsLG1wYzgzNzktc2F0YSI7CisJCQljb21wYXRpYmxlID0gImZzbCxtcGM4Mzc5LXNhdGEiLCAiZnNsLHBxLXNhdGEiOwogCQkJcmVnID0gPDB4MWEwMDAgMHgxMDAwPjsKIAkJCWludGVycnVwdHMgPSA8NDYgMHg4PjsKIAkJCWludGVycnVwdC1wYXJlbnQgPSA8JmlwaWM+OwogCQl9OwogCiAJCXNhdGFAMWIwMDAgewotCQkJY29tcGF0aWJsZSA9ICJmc2wsbXBjODM3OS1zYXRhIjsKKwkJCWNvbXBhdGlibGUgPSAiZnNsLG1wYzgzNzktc2F0YSIsICJmc2wscHEtc2F0YSI7CiAJCQlyZWcgPSA8MHgxYjAwMCAweDEwMDA+OwogCQkJaW50ZXJydXB0cyA9IDw0NyAweDg+OwogCQkJaW50ZXJydXB0LXBhcmVudCA9IDwmaXBpYz47CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvYm9vdC9kdHMvbXBjODM3OV9yZGIuZHRzIGIvYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL21wYzgzNzlfcmRiLmR0cwppbmRleCAwZGRhMmZjLi5jMTFjZWI3IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvYm9vdC9kdHMvbXBjODM3OV9yZGIuZHRzCisrKyBiL2FyY2gvcG93ZXJwYy9ib290L2R0cy9tcGM4Mzc5X3JkYi5kdHMKQEAgLTE0Myw3ICsxNDMsNiBAQAogCQkJbW9kZSA9ICJjcHUiOwogCQl9OwogCi0JCS8qIHBoeSB0eXBlIChVTFBJLCBVVE1JLCBVVE1JX1dJREUsIFNFUklBTCkgKi8KIAkJdXNiQDIzMDAwIHsKIAkJCWNvbXBhdGlibGUgPSAiZnNsLXVzYjItZHIiOwogCQkJcmVnID0gPDB4MjMwMDAgMHgxMDAwPjsKQEAgLTE1MSw3ICsxNTAsNyBAQAogCQkJI3NpemUtY2VsbHMgPSA8MD47CiAJCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZpcGljPjsKIAkJCWludGVycnVwdHMgPSA8MzggMHg4PjsKLQkJCXBoeV90eXBlID0gInV0bWkiOworCQkJcGh5X3R5cGUgPSAidWxwaSI7CiAJCX07CiAKIAkJbWRpb0AyNDUyMCB7CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvYm9vdC9kdHMvc2JjODU0OC5kdHMgYi9hcmNoL3Bvd2VycGMvYm9vdC9kdHMvc2JjODU0OC5kdHMKaW5kZXggMTRiZTM4YS4uYjg2ZTY1ZCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL3NiYzg1NDguZHRzCisrKyBiL2FyY2gvcG93ZXJwYy9ib290L2R0cy9zYmM4NTQ4LmR0cwpAQCAtMTg0LDExICsxODQsMTcgQEAKIAkJY2VsbC1pbmRleCA9IDwwPjsKIAkJaW50ZXJydXB0LW1hcC1tYXNrID0gPDB4ZjgwMCAweDAgMHgwIDB4Nz47CiAJCWludGVycnVwdC1tYXAgPSA8Ci0JCQkvKiBJRFNFTCAweDAxIChQQ0ktWCBzbG90KSAqLwotCQkJMHgwODAwIDB4MCAweDAgMHgxICZtcGljIDB4MCAweDEKLQkJCTB4MDgwMCAweDAgMHgwIDB4MiAmbXBpYyAweDEgMHgxCi0JCQkweDA4MDAgMHgwIDB4MCAweDMgJm1waWMgMHgyIDB4MQotCQkJMHgwODAwIDB4MCAweDAgMHg0ICZtcGljIDB4MyAweDE+OworCQkJLyogSURTRUwgMHgwMSAoUENJLVggc2xvdCkgQDY2TUh6ICovCisJCQkweDA4MDAgMHgwIDB4MCAweDEgJm1waWMgMHgyIDB4MQorCQkJMHgwODAwIDB4MCAweDAgMHgyICZtcGljIDB4MyAweDEKKwkJCTB4MDgwMCAweDAgMHgwIDB4MyAmbXBpYyAweDQgMHgxCisJCQkweDA4MDAgMHgwIDB4MCAweDQgJm1waWMgMHgxIDB4MQorCisJCQkvKiBJRFNFTCAweDExIChQQ0ksIDMuM1YgMzJiaXQpIEAzM01IeiAqLworCQkJMHg4ODAwIDB4MCAweDAgMHgxICZtcGljIDB4MiAweDEKKwkJCTB4ODgwMCAweDAgMHgwIDB4MiAmbXBpYyAweDMgMHgxCisJCQkweDg4MDAgMHgwIDB4MCAweDMgJm1waWMgMHg0IDB4MQorCQkJMHg4ODAwIDB4MCAweDAgMHg0ICZtcGljIDB4MSAweDE+OwogCiAJCWludGVycnVwdC1wYXJlbnQgPSA8Jm1waWM+OwogCQlpbnRlcnJ1cHRzID0gPDB4MTggMHgyPjsKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9ib290L2R0cy90cW01MjAwLmR0cyBiL2FyY2gvcG93ZXJwYy9ib290L2R0cy90cW01MjAwLmR0cwppbmRleCBjODY0NjRmLi42NWJjZWE2IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvYm9vdC9kdHMvdHFtNTIwMC5kdHMKKysrIGIvYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL3RxbTUyMDAuZHRzCkBAIC0xMjcsMTAgKzEyNywyNSBAQAogCQlldGhlcm5ldEAzMDAwIHsKIAkJCWRldmljZV90eXBlID0gIm5ldHdvcmsiOwogCQkJY29tcGF0aWJsZSA9ICJmc2wsbXBjNTIwMC1mZWMiOwotCQkJcmVnID0gPDMwMDAgODAwPjsKKwkJCXJlZyA9IDwzMDAwIDQwMD47CiAJCQlsb2NhbC1tYWMtYWRkcmVzcyA9IFsgMDAgMDAgMDAgMDAgMDAgMDAgXTsKIAkJCWludGVycnVwdHMgPSA8MiA1IDA+OwogCQkJaW50ZXJydXB0LXBhcmVudCA9IDwmbXBjNTIwMF9waWM+OworCQkJcGh5LWhhbmRsZSA9IDwmcGh5MD47CisJCX07CisKKwkJbWRpb0AzMDAwIHsKKwkJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkJI3NpemUtY2VsbHMgPSA8MD47CisJCQljb21wYXRpYmxlID0gImZzbCxtcGM1MjAwYi1tZGlvIiwiZnNsLG1wYzUyMDAtbWRpbyI7CisJCQlyZWcgPSA8MzAwMCA0MDA+OyAgICAgICAvLyBmZWMgcmFuZ2UsIHNpbmNlIHdlIG5lZWQgdG8gc2V0dXAgZmVjIGludGVycnVwdHMKKwkJCWludGVycnVwdHMgPSA8MiA1IDA+OyAgIC8vIHRoZXNlIGFyZSBmb3IgIm1paSBjb21tYW5kIGZpbmlzaGVkIiwgbm90IGxpbmsgY2hhbmdlcyAmIGNvLgorCQkJaW50ZXJydXB0LXBhcmVudCA9IDwmbXBjNTIwMF9waWM+OworCisJCQlwaHkwOiBldGhlcm5ldC1waHlAMCB7CisJCQkJZGV2aWNlX3R5cGUgPSAiZXRoZXJuZXQtcGh5IjsKKwkJCQlyZWcgPSA8MD47CisJCQl9OwogCQl9OwogCiAJCWF0YUAzYTAwIHsKQEAgLTE0MSwxMSArMTU2LDE5IEBACiAJCX07CiAKIAkJaTJjQDNkNDAgeworCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCQkjc2l6ZS1jZWxscyA9IDwwPjsKIAkJCWNvbXBhdGlibGUgPSAiZnNsLG1wYzUyMDAtaTJjIiwiZnNsLWkyYyI7CiAJCQlyZWcgPSA8M2Q0MCA0MD47CiAJCQlpbnRlcnJ1cHRzID0gPDIgMTAgMD47CiAJCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZtcGM1MjAwX3BpYz47CiAJCQlmc2w1MjAwLWNsb2NraW5nOworCisJCQkgcnRjQDY4IHsKKwkJCQlkZXZpY2VfdHlwZSA9ICJydGMiOworCQkJCWNvbXBhdGlibGUgPSAiZGFsbGFzLGRzMTMwNyI7CisJCQkJcmVnID0gPDY4PjsKKwkJCX07CiAJCX07CiAKIAkJc3JhbUA4MDAwIHsKQEAgLTE1NCw2ICsxNzcsMjMgQEAKIAkJfTsKIAl9OwogCisJbHBiIHsKKwkJbW9kZWwgPSAiZnNsLGxwYiI7CisJCWNvbXBhdGlibGUgPSAiZnNsLGxwYiI7CisJCSNhZGRyZXNzLWNlbGxzID0gPDI+OworCQkjc2l6ZS1jZWxscyA9IDwxPjsKKwkJcmFuZ2VzID0gPDAgMCBmYzAwMDAwMCAwMjAwMDAwMD47CisKKwkJZmxhc2hAMCwwIHsKKwkJCWNvbXBhdGlibGUgPSAiY2ZpLWZsYXNoIjsKKwkJCXJlZyA9IDwwIDAgMDIwMDAwMDA+OworCQkJYmFuay13aWR0aCA9IDw0PjsKKwkJCWRldmljZS13aWR0aCA9IDwyPjsKKwkJCSNzaXplLWNlbGxzID0gPDE+OworCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCX07CisJfTsKKwogCXBjaUBmMDAwMGQwMCB7CiAJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8MT47CiAJCSNzaXplLWNlbGxzID0gPDI+OwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2Jvb3Qvd3JhcHBlciBiL2FyY2gvcG93ZXJwYy9ib290L3dyYXBwZXIKaW5kZXggYzMxNzgxNS4uOGY4Yjg0OSAxMDA3NTUKLS0tIGEvYXJjaC9wb3dlcnBjL2Jvb3Qvd3JhcHBlcgorKysgYi9hcmNoL3Bvd2VycGMvYm9vdC93cmFwcGVyCkBAIC0xNzQsMTAgKzE3NCwxMCBAQAogICAgICotbXBjODMqKQogICAgICAgICBwbGF0Zm9ybW89JG9iamVjdC9jdWJvb3QtODN4eC5vCiAgICAgICAgIDs7Ci0gICAgKi10cW04NTQxfCotbXBjODU2MCp8Ki10cW04NTYwfCotdHFtODU1NSopCisgICAgKi10cW04NTQxfCotbXBjODU2MCp8Ki10cW04NTYwfCotdHFtODU1NSkKICAgICAgICAgcGxhdGZvcm1vPSRvYmplY3QvY3Vib290LTg1eHgtY3BtMi5vCiAgICAgICAgIDs7Ci0gICAgKi1tcGM4NSopCisgICAgKi1tcGM4NSp8Ki10cW04NTQwfCotc2JjODUqKQogICAgICAgICBwbGF0Zm9ybW89JG9iamVjdC9jdWJvb3QtODV4eC5vCiAgICAgICAgIDs7CiAgICAgZXNhYwpAQCAtMTkxLDEwICsxOTEsMTQgQEAKICAgICBrc2VjdGlvbj0ua2VybmVsOnZtbGludXguYmluCiAgICAgaXNlY3Rpb249Lmtlcm5lbDppbml0cmQKICAgICA7OwotZXA4OHhjfGVwNDA1fHJlZGJvb3QqfGVwODI0OGUpCitlcDg4eGN8ZXA0MDV8ZXA4MjQ4ZSkKICAgICBwbGF0Zm9ybW89IiRvYmplY3QvZml4ZWQtaGVhZC5vICRvYmplY3QvJHBsYXRmb3JtLm8iCiAgICAgYmluYXJ5PXkKICAgICA7OworYWRkZXI4NzUtcmVkYm9vdCkKKyAgICBwbGF0Zm9ybW89IiRvYmplY3QvZml4ZWQtaGVhZC5vICRvYmplY3QvcmVkYm9vdC04eHgubyIKKyAgICBiaW5hcnk9eQorICAgIDs7CiBlc2FjCiAKIHZtej0iJHRtcGRpci9gYmFzZW5hbWUgXCIka2VybmVsXCJgLiRleHQiCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvY29uZmlncy9hZGRlcjg3NS11Ym9vdF9kZWZjb25maWcgYi9hcmNoL3Bvd2VycGMvY29uZmlncy9hZGRlcjg3NS11Ym9vdF9kZWZjb25maWcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmYWY3ZWYuLjAwMDAwMDAKLS0tIGEvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvYWRkZXI4NzUtdWJvb3RfZGVmY29uZmlnCisrKyAvZGV2L251bGwKQEAgLTEsNzk4ICswLDAgQEAKLSMKLSMgQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgbWFrZSBjb25maWc6IGRvbid0IGVkaXQKLSMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4yNC1yYzYKLSMgVGh1IEphbiAxNyAxNjoxNzoxOCAyMDA4Ci0jCi0jIENPTkZJR19QUEM2NCBpcyBub3Qgc2V0Ci0KLSMKLSMgUHJvY2Vzc29yIHN1cHBvcnQKLSMKLSMgQ09ORklHXzZ4eCBpcyBub3Qgc2V0Ci0jIENPTkZJR19QUENfODV4eCBpcyBub3Qgc2V0Ci1DT05GSUdfUFBDXzh4eD15Ci0jIENPTkZJR180MHggaXMgbm90IHNldAotIyBDT05GSUdfNDR4IGlzIG5vdCBzZXQKLSMgQ09ORklHX0UyMDAgaXMgbm90IHNldAotQ09ORklHXzh4eD15Ci0jIENPTkZJR19QUENfTU1fU0xJQ0VTIGlzIG5vdCBzZXQKLUNPTkZJR19OT1RfQ09IRVJFTlRfQ0FDSEU9eQotQ09ORklHX1BQQzMyPXkKLUNPTkZJR19XT1JEX1NJWkU9MzIKLUNPTkZJR19QUENfTUVSR0U9eQotQ09ORklHX01NVT15Ci1DT05GSUdfR0VORVJJQ19DTU9TX1VQREFURT15Ci1DT05GSUdfR0VORVJJQ19USU1FPXkKLUNPTkZJR19HRU5FUklDX1RJTUVfVlNZU0NBTEw9eQotQ09ORklHX0dFTkVSSUNfQ0xPQ0tFVkVOVFM9eQotQ09ORklHX0dFTkVSSUNfSEFSRElSUVM9eQotQ09ORklHX0lSUV9QRVJfQ1BVPXkKLUNPTkZJR19SV1NFTV9YQ0hHQUREX0FMR09SSVRITT15Ci1DT05GSUdfQVJDSF9IQVNfSUxPRzJfVTMyPXkKLUNPTkZJR19HRU5FUklDX0hXRUlHSFQ9eQotQ09ORklHX0dFTkVSSUNfQ0FMSUJSQVRFX0RFTEFZPXkKLUNPTkZJR19HRU5FUklDX0ZJTkRfTkVYVF9CSVQ9eQotIyBDT05GSUdfQVJDSF9OT19WSVJUX1RPX0JVUyBpcyBub3Qgc2V0Ci1DT05GSUdfUFBDPXkKLUNPTkZJR19FQVJMWV9QUklOVEs9eQotQ09ORklHX0dFTkVSSUNfTlZSQU09eQotQ09ORklHX1NDSEVEX05PX05PX09NSVRfRlJBTUVfUE9JTlRFUj15Ci1DT05GSUdfQVJDSF9NQVlfSEFWRV9QQ19GREM9eQotQ09ORklHX1BQQ19PRj15Ci1DT05GSUdfT0Y9eQotIyBDT05GSUdfUFBDX1VEQkdfMTY1NTAgaXMgbm90IHNldAotIyBDT05GSUdfR0VORVJJQ19UQlNZTkMgaXMgbm90IHNldAotQ09ORklHX0FVRElUX0FSQ0g9eQotQ09ORklHX0dFTkVSSUNfQlVHPXkKLSMgQ09ORklHX0RFRkFVTFRfVUlNQUdFIGlzIG5vdCBzZXQKLUNPTkZJR19SRURCT09UPXkKLSMgQ09ORklHX1BQQ19EQ1JfTkFUSVZFIGlzIG5vdCBzZXQKLSMgQ09ORklHX1BQQ19EQ1JfTU1JTyBpcyBub3Qgc2V0Ci1DT05GSUdfREVGQ09ORklHX0xJU1Q9Ii9saWIvbW9kdWxlcy8kVU5BTUVfUkVMRUFTRS8uY29uZmlnIgotCi0jCi0jIEdlbmVyYWwgc2V0dXAKLSMKLUNPTkZJR19FWFBFUklNRU5UQUw9eQotQ09ORklHX0JST0tFTl9PTl9TTVA9eQotQ09ORklHX0lOSVRfRU5WX0FSR19MSU1JVD0zMgotQ09ORklHX0xPQ0FMVkVSU0lPTj0iIgotQ09ORklHX0xPQ0FMVkVSU0lPTl9BVVRPPXkKLSMgQ09ORklHX1NXQVAgaXMgbm90IHNldAotQ09ORklHX1NZU1ZJUEM9eQotQ09ORklHX1NZU1ZJUENfU1lTQ1RMPXkKLSMgQ09ORklHX1BPU0lYX01RVUVVRSBpcyBub3Qgc2V0Ci0jIENPTkZJR19CU0RfUFJPQ0VTU19BQ0NUIGlzIG5vdCBzZXQKLSMgQ09ORklHX1RBU0tTVEFUUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19VU0VSX05TIGlzIG5vdCBzZXQKLSMgQ09ORklHX1BJRF9OUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19BVURJVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19JS0NPTkZJRyBpcyBub3Qgc2V0Ci1DT05GSUdfTE9HX0JVRl9TSElGVD0xNAotIyBDT05GSUdfQ0dST1VQUyBpcyBub3Qgc2V0Ci1DT05GSUdfRkFJUl9HUk9VUF9TQ0hFRD15Ci1DT05GSUdfRkFJUl9VU0VSX1NDSEVEPXkKLSMgQ09ORklHX0ZBSVJfQ0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKLUNPTkZJR19TWVNGU19ERVBSRUNBVEVEPXkKLSMgQ09ORklHX1JFTEFZIGlzIG5vdCBzZXQKLSMgQ09ORklHX0JMS19ERVZfSU5JVFJEIGlzIG5vdCBzZXQKLSMgQ09ORklHX0NDX09QVElNSVpFX0ZPUl9TSVpFIGlzIG5vdCBzZXQKLUNPTkZJR19TWVNDVEw9eQotQ09ORklHX0VNQkVEREVEPXkKLSMgQ09ORklHX1NZU0NUTF9TWVNDQUxMIGlzIG5vdCBzZXQKLUNPTkZJR19LQUxMU1lNUz15Ci0jIENPTkZJR19LQUxMU1lNU19BTEwgaXMgbm90IHNldAotIyBDT05GSUdfS0FMTFNZTVNfRVhUUkFfUEFTUyBpcyBub3Qgc2V0Ci1DT05GSUdfSE9UUExVRz15Ci1DT05GSUdfUFJJTlRLPXkKLUNPTkZJR19CVUc9eQotIyBDT05GSUdfRUxGX0NPUkUgaXMgbm90IHNldAotIyBDT05GSUdfQkFTRV9GVUxMIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZVVEVYIGlzIG5vdCBzZXQKLUNPTkZJR19BTk9OX0lOT0RFUz15Ci1DT05GSUdfRVBPTEw9eQotQ09ORklHX1NJR05BTEZEPXkKLUNPTkZJR19FVkVOVEZEPXkKLUNPTkZJR19TSE1FTT15Ci0jIENPTkZJR19WTV9FVkVOVF9DT1VOVEVSUyBpcyBub3Qgc2V0Ci1DT05GSUdfU0xVQl9ERUJVRz15Ci0jIENPTkZJR19TTEFCIGlzIG5vdCBzZXQKLUNPTkZJR19TTFVCPXkKLSMgQ09ORklHX1NMT0IgaXMgbm90IHNldAotIyBDT05GSUdfVElOWV9TSE1FTSBpcyBub3Qgc2V0Ci1DT05GSUdfQkFTRV9TTUFMTD0xCi0jIENPTkZJR19NT0RVTEVTIGlzIG5vdCBzZXQKLUNPTkZJR19CTE9DSz15Ci0jIENPTkZJR19MQkQgaXMgbm90IHNldAotIyBDT05GSUdfQkxLX0RFVl9JT19UUkFDRSBpcyBub3Qgc2V0Ci0jIENPTkZJR19MU0YgaXMgbm90IHNldAotIyBDT05GSUdfQkxLX0RFVl9CU0cgaXMgbm90IHNldAotCi0jCi0jIElPIFNjaGVkdWxlcnMKLSMKLUNPTkZJR19JT1NDSEVEX05PT1A9eQotIyBDT05GSUdfSU9TQ0hFRF9BUyBpcyBub3Qgc2V0Ci1DT05GSUdfSU9TQ0hFRF9ERUFETElORT15Ci0jIENPTkZJR19JT1NDSEVEX0NGUSBpcyBub3Qgc2V0Ci0jIENPTkZJR19ERUZBVUxUX0FTIGlzIG5vdCBzZXQKLUNPTkZJR19ERUZBVUxUX0RFQURMSU5FPXkKLSMgQ09ORklHX0RFRkFVTFRfQ0ZRIGlzIG5vdCBzZXQKLSMgQ09ORklHX0RFRkFVTFRfTk9PUCBpcyBub3Qgc2V0Ci1DT05GSUdfREVGQVVMVF9JT1NDSEVEPSJkZWFkbGluZSIKLQotIwotIyBQbGF0Zm9ybSBzdXBwb3J0Ci0jCi0jIENPTkZJR19QUENfTVBDNTJ4eCBpcyBub3Qgc2V0Ci0jIENPTkZJR19QUENfTVBDNTIwMCBpcyBub3Qgc2V0Ci0jIENPTkZJR19QUENfQ0VMTCBpcyBub3Qgc2V0Ci0jIENPTkZJR19QUENfQ0VMTF9OQVRJVkUgaXMgbm90IHNldAotQ09ORklHX0NQTTE9eQotIyBDT05GSUdfTVBDOFhYRkFEUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19NUEM4NlhBRFMgaXMgbm90IHNldAotIyBDT05GSUdfTVBDODg1QURTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1BQQ19FUDg4WEMgaXMgbm90IHNldAotQ09ORklHX1BQQ19BRERFUjg3NT15Ci0KLSMKLSMgTVBDOHh4IENQTSBPcHRpb25zCi0jCi0KLSMKLSMgR2VuZXJpYyBNUEM4eHggT3B0aW9ucwotIwotQ09ORklHXzh4eF9DT1BZQkFDSz15Ci0jIENPTkZJR184eHhfQ1BVNiBpcyBub3Qgc2V0Ci1DT05GSUdfOHh4X0NQVTE1PXkKLUNPTkZJR19OT19VQ09ERV9QQVRDSD15Ci0jIENPTkZJR19VU0JfU09GX1VDT0RFX1BBVENIIGlzIG5vdCBzZXQKLSMgQ09ORklHX0kyQ19TUElfVUNPREVfUEFUQ0ggaXMgbm90IHNldAotIyBDT05GSUdfSTJDX1NQSV9TTUMxX1VDT0RFX1BBVENIIGlzIG5vdCBzZXQKLSMgQ09ORklHX1BRMkFEUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19NUElDIGlzIG5vdCBzZXQKLSMgQ09ORklHX01QSUNfV0VJUkQgaXMgbm90IHNldAotIyBDT05GSUdfUFBDX0k4MjU5IGlzIG5vdCBzZXQKLSMgQ09ORklHX1BQQ19SVEFTIGlzIG5vdCBzZXQKLSMgQ09ORklHX01NSU9fTlZSQU0gaXMgbm90IHNldAotIyBDT05GSUdfUFBDX01QQzEwNiBpcyBub3Qgc2V0Ci0jIENPTkZJR19QUENfOTcwX05BUCBpcyBub3Qgc2V0Ci0jIENPTkZJR19QUENfSU5ESVJFQ1RfSU8gaXMgbm90IHNldAotIyBDT05GSUdfR0VORVJJQ19JT01BUCBpcyBub3Qgc2V0Ci0jIENPTkZJR19DUFVfRlJFUSBpcyBub3Qgc2V0Ci0jIENPTkZJR19DUE0yIGlzIG5vdCBzZXQKLUNPTkZJR19QUENfQ1BNX05FV19CSU5ESU5HPXkKLSMgQ09ORklHX0ZTTF9VTEkxNTc1IGlzIG5vdCBzZXQKLUNPTkZJR19DUE09eQotCi0jCi0jIEtlcm5lbCBvcHRpb25zCi0jCi0jIENPTkZJR19ISUdITUVNIGlzIG5vdCBzZXQKLSMgQ09ORklHX1RJQ0tfT05FU0hPVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19OT19IWiBpcyBub3Qgc2V0Ci0jIENPTkZJR19ISUdIX1JFU19USU1FUlMgaXMgbm90IHNldAotQ09ORklHX0dFTkVSSUNfQ0xPQ0tFVkVOVFNfQlVJTEQ9eQotIyBDT05GSUdfSFpfMTAwIGlzIG5vdCBzZXQKLSMgQ09ORklHX0haXzI1MCBpcyBub3Qgc2V0Ci0jIENPTkZJR19IWl8zMDAgaXMgbm90IHNldAotQ09ORklHX0haXzEwMDA9eQotQ09ORklHX0haPTEwMDAKLUNPTkZJR19QUkVFTVBUX05PTkU9eQotIyBDT05GSUdfUFJFRU1QVF9WT0xVTlRBUlkgaXMgbm90IHNldAotIyBDT05GSUdfUFJFRU1QVCBpcyBub3Qgc2V0Ci1DT05GSUdfQklORk1UX0VMRj15Ci0jIENPTkZJR19CSU5GTVRfTUlTQyBpcyBub3Qgc2V0Ci0jIENPTkZJR19NQVRIX0VNVUxBVElPTiBpcyBub3Qgc2V0Ci0jIENPTkZJR184WFhfTUlOSU1BTF9GUEVNVSBpcyBub3Qgc2V0Ci1DT05GSUdfQVJDSF9FTkFCTEVfTUVNT1JZX0hPVFBMVUc9eQotQ09ORklHX0FSQ0hfRkxBVE1FTV9FTkFCTEU9eQotQ09ORklHX0FSQ0hfUE9QVUxBVEVTX05PREVfTUFQPXkKLUNPTkZJR19TRUxFQ1RfTUVNT1JZX01PREVMPXkKLUNPTkZJR19GTEFUTUVNX01BTlVBTD15Ci0jIENPTkZJR19ESVNDT05USUdNRU1fTUFOVUFMIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NQQVJTRU1FTV9NQU5VQUwgaXMgbm90IHNldAotQ09ORklHX0ZMQVRNRU09eQotQ09ORklHX0ZMQVRfTk9ERV9NRU1fTUFQPXkKLSMgQ09ORklHX1NQQVJTRU1FTV9TVEFUSUMgaXMgbm90IHNldAotIyBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBfRU5BQkxFIGlzIG5vdCBzZXQKLUNPTkZJR19TUExJVF9QVExPQ0tfQ1BVUz00Ci0jIENPTkZJR19SRVNPVVJDRVNfNjRCSVQgaXMgbm90IHNldAotQ09ORklHX1pPTkVfRE1BX0ZMQUc9MQotQ09ORklHX0JPVU5DRT15Ci1DT05GSUdfVklSVF9UT19CVVM9eQotIyBDT05GSUdfUFJPQ19ERVZJQ0VUUkVFIGlzIG5vdCBzZXQKLSMgQ09ORklHX0NNRExJTkVfQk9PTCBpcyBub3Qgc2V0Ci0jIENPTkZJR19QTSBpcyBub3Qgc2V0Ci1DT05GSUdfU1VTUEVORF9VUF9QT1NTSUJMRT15Ci1DT05GSUdfSElCRVJOQVRJT05fVVBfUE9TU0lCTEU9eQotIyBDT05GSUdfU0VDQ09NUCBpcyBub3Qgc2V0Ci1DT05GSUdfV0FOVF9ERVZJQ0VfVFJFRT15Ci1DT05GSUdfREVWSUNFX1RSRUU9ImFkZGVyODc1LXVib290LmR0cyIKLUNPTkZJR19JU0FfRE1BX0FQST15Ci0KLSMKLSMgQnVzIG9wdGlvbnMKLSMKLUNPTkZJR19aT05FX0RNQT15Ci1DT05GSUdfRlNMX1NPQz15Ci0jIENPTkZJR19QQ0kgaXMgbm90IHNldAotIyBDT05GSUdfUENJX0RPTUFJTlMgaXMgbm90IHNldAotIyBDT05GSUdfUENJX1NZU0NBTEwgaXMgbm90IHNldAotIyBDT05GSUdfUENJX1FTUEFOIGlzIG5vdCBzZXQKLSMgQ09ORklHX0FSQ0hfU1VQUE9SVFNfTVNJIGlzIG5vdCBzZXQKLSMgQ09ORklHX1BDQ0FSRCBpcyBub3Qgc2V0Ci0KLSMKLSMgQWR2YW5jZWQgc2V0dXAKLSMKLSMgQ09ORklHX0FEVkFOQ0VEX09QVElPTlMgaXMgbm90IHNldAotCi0jCi0jIERlZmF1bHQgc2V0dGluZ3MgZm9yIGFkdmFuY2VkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgdXNlZAotIwotQ09ORklHX0hJR0hNRU1fU1RBUlQ9MHhmZTAwMDAwMAotQ09ORklHX0xPV01FTV9TSVpFPTB4MzAwMDAwMDAKLUNPTkZJR19LRVJORUxfU1RBUlQ9MHhjMDAwMDAwMAotQ09ORklHX1RBU0tfU0laRT0weDgwMDAwMDAwCi1DT05GSUdfQ09OU0lTVEVOVF9TVEFSVD0weGZkMDAwMDAwCi1DT05GSUdfQ09OU0lTVEVOVF9TSVpFPTB4MDAyMDAwMDAKLUNPTkZJR19CT09UX0xPQUQ9MHgwMDQwMDAwMAotCi0jCi0jIE5ldHdvcmtpbmcKLSMKLUNPTkZJR19ORVQ9eQotCi0jCi0jIE5ldHdvcmtpbmcgb3B0aW9ucwotIwotQ09ORklHX1BBQ0tFVD15Ci0jIENPTkZJR19QQUNLRVRfTU1BUCBpcyBub3Qgc2V0Ci1DT05GSUdfVU5JWD15Ci0jIENPTkZJR19ORVRfS0VZIGlzIG5vdCBzZXQKLUNPTkZJR19JTkVUPXkKLUNPTkZJR19JUF9NVUxUSUNBU1Q9eQotIyBDT05GSUdfSVBfQURWQU5DRURfUk9VVEVSIGlzIG5vdCBzZXQKLUNPTkZJR19JUF9GSUJfSEFTSD15Ci1DT05GSUdfSVBfUE5QPXkKLSMgQ09ORklHX0lQX1BOUF9ESENQIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lQX1BOUF9CT09UUCBpcyBub3Qgc2V0Ci0jIENPTkZJR19JUF9QTlBfUkFSUCBpcyBub3Qgc2V0Ci0jIENPTkZJR19ORVRfSVBJUCBpcyBub3Qgc2V0Ci0jIENPTkZJR19ORVRfSVBHUkUgaXMgbm90IHNldAotIyBDT05GSUdfSVBfTVJPVVRFIGlzIG5vdCBzZXQKLSMgQ09ORklHX0FSUEQgaXMgbm90IHNldAotQ09ORklHX1NZTl9DT09LSUVTPXkKLSMgQ09ORklHX0lORVRfQUggaXMgbm90IHNldAotIyBDT05GSUdfSU5FVF9FU1AgaXMgbm90IHNldAotIyBDT05GSUdfSU5FVF9JUENPTVAgaXMgbm90IHNldAotIyBDT05GSUdfSU5FVF9YRlJNX1RVTk5FTCBpcyBub3Qgc2V0Ci0jIENPTkZJR19JTkVUX1RVTk5FTCBpcyBub3Qgc2V0Ci0jIENPTkZJR19JTkVUX1hGUk1fTU9ERV9UUkFOU1BPUlQgaXMgbm90IHNldAotIyBDT05GSUdfSU5FVF9YRlJNX01PREVfVFVOTkVMIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lORVRfWEZSTV9NT0RFX0JFRVQgaXMgbm90IHNldAotIyBDT05GSUdfSU5FVF9MUk8gaXMgbm90IHNldAotQ09ORklHX0lORVRfRElBRz15Ci1DT05GSUdfSU5FVF9UQ1BfRElBRz15Ci0jIENPTkZJR19UQ1BfQ09OR19BRFZBTkNFRCBpcyBub3Qgc2V0Ci1DT05GSUdfVENQX0NPTkdfQ1VCSUM9eQotQ09ORklHX0RFRkFVTFRfVENQX0NPTkc9ImN1YmljIgotIyBDT05GSUdfVENQX01ENVNJRyBpcyBub3Qgc2V0Ci0jIENPTkZJR19JUFY2IGlzIG5vdCBzZXQKLSMgQ09ORklHX0lORVQ2X1hGUk1fVFVOTkVMIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lORVQ2X1RVTk5FTCBpcyBub3Qgc2V0Ci0jIENPTkZJR19ORVRXT1JLX1NFQ01BUksgaXMgbm90IHNldAotIyBDT05GSUdfTkVURklMVEVSIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lQX0RDQ1AgaXMgbm90IHNldAotIyBDT05GSUdfSVBfU0NUUCBpcyBub3Qgc2V0Ci0jIENPTkZJR19USVBDIGlzIG5vdCBzZXQKLSMgQ09ORklHX0FUTSBpcyBub3Qgc2V0Ci0jIENPTkZJR19CUklER0UgaXMgbm90IHNldAotIyBDT05GSUdfVkxBTl84MDIxUSBpcyBub3Qgc2V0Ci0jIENPTkZJR19ERUNORVQgaXMgbm90IHNldAotIyBDT05GSUdfTExDMiBpcyBub3Qgc2V0Ci0jIENPTkZJR19JUFggaXMgbm90IHNldAotIyBDT05GSUdfQVRBTEsgaXMgbm90IHNldAotIyBDT05GSUdfWDI1IGlzIG5vdCBzZXQKLSMgQ09ORklHX0xBUEIgaXMgbm90IHNldAotIyBDT05GSUdfRUNPTkVUIGlzIG5vdCBzZXQKLSMgQ09ORklHX1dBTl9ST1VURVIgaXMgbm90IHNldAotIyBDT05GSUdfTkVUX1NDSEVEIGlzIG5vdCBzZXQKLQotIwotIyBOZXR3b3JrIHRlc3RpbmcKLSMKLSMgQ09ORklHX05FVF9QS1RHRU4gaXMgbm90IHNldAotIyBDT05GSUdfSEFNUkFESU8gaXMgbm90IHNldAotIyBDT05GSUdfSVJEQSBpcyBub3Qgc2V0Ci0jIENPTkZJR19CVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19BRl9SWFJQQyBpcyBub3Qgc2V0Ci0KLSMKLSMgV2lyZWxlc3MKLSMKLSMgQ09ORklHX0NGRzgwMjExIGlzIG5vdCBzZXQKLSMgQ09ORklHX1dJUkVMRVNTX0VYVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19NQUM4MDIxMSBpcyBub3Qgc2V0Ci0jIENPTkZJR19JRUVFODAyMTEgaXMgbm90IHNldAotIyBDT05GSUdfUkZLSUxMIGlzIG5vdCBzZXQKLSMgQ09ORklHX05FVF85UCBpcyBub3Qgc2V0Ci0KLSMKLSMgRGV2aWNlIERyaXZlcnMKLSMKLQotIwotIyBHZW5lcmljIERyaXZlciBPcHRpb25zCi0jCi1DT05GSUdfVUVWRU5UX0hFTFBFUl9QQVRIPSIvc2Jpbi9ob3RwbHVnIgotQ09ORklHX1NUQU5EQUxPTkU9eQotQ09ORklHX1BSRVZFTlRfRklSTVdBUkVfQlVJTEQ9eQotIyBDT05GSUdfRldfTE9BREVSIGlzIG5vdCBzZXQKLSMgQ09ORklHX0RFQlVHX0RSSVZFUiBpcyBub3Qgc2V0Ci0jIENPTkZJR19ERUJVR19ERVZSRVMgaXMgbm90IHNldAotIyBDT05GSUdfU1lTX0hZUEVSVklTT1IgaXMgbm90IHNldAotIyBDT05GSUdfQ09OTkVDVE9SIGlzIG5vdCBzZXQKLUNPTkZJR19NVEQ9eQotIyBDT05GSUdfTVREX0RFQlVHIGlzIG5vdCBzZXQKLSMgQ09ORklHX01URF9DT05DQVQgaXMgbm90IHNldAotIyBDT05GSUdfTVREX1BBUlRJVElPTlMgaXMgbm90IHNldAotCi0jCi0jIFVzZXIgTW9kdWxlcyBBbmQgVHJhbnNsYXRpb24gTGF5ZXJzCi0jCi1DT05GSUdfTVREX0NIQVI9eQotQ09ORklHX01URF9CTEtERVZTPXkKLUNPTkZJR19NVERfQkxPQ0s9eQotIyBDT05GSUdfRlRMIGlzIG5vdCBzZXQKLSMgQ09ORklHX05GVEwgaXMgbm90IHNldAotIyBDT05GSUdfSU5GVEwgaXMgbm90IHNldAotIyBDT05GSUdfUkZEX0ZUTCBpcyBub3Qgc2V0Ci0jIENPTkZJR19TU0ZEQyBpcyBub3Qgc2V0Ci0jIENPTkZJR19NVERfT09QUyBpcyBub3Qgc2V0Ci0KLSMKLSMgUkFNL1JPTS9GbGFzaCBjaGlwIGRyaXZlcnMKLSMKLUNPTkZJR19NVERfQ0ZJPXkKLSMgQ09ORklHX01URF9KRURFQ1BST0JFIGlzIG5vdCBzZXQKLUNPTkZJR19NVERfR0VOX1BST0JFPXkKLSMgQ09ORklHX01URF9DRklfQURWX09QVElPTlMgaXMgbm90IHNldAotQ09ORklHX01URF9NQVBfQkFOS19XSURUSF8xPXkKLUNPTkZJR19NVERfTUFQX0JBTktfV0lEVEhfMj15Ci1DT05GSUdfTVREX01BUF9CQU5LX1dJRFRIXzQ9eQotIyBDT05GSUdfTVREX01BUF9CQU5LX1dJRFRIXzggaXMgbm90IHNldAotIyBDT05GSUdfTVREX01BUF9CQU5LX1dJRFRIXzE2IGlzIG5vdCBzZXQKLSMgQ09ORklHX01URF9NQVBfQkFOS19XSURUSF8zMiBpcyBub3Qgc2V0Ci1DT05GSUdfTVREX0NGSV9JMT15Ci1DT05GSUdfTVREX0NGSV9JMj15Ci0jIENPTkZJR19NVERfQ0ZJX0k0IGlzIG5vdCBzZXQKLSMgQ09ORklHX01URF9DRklfSTggaXMgbm90IHNldAotIyBDT05GSUdfTVREX0NGSV9JTlRFTEVYVCBpcyBub3Qgc2V0Ci1DT05GSUdfTVREX0NGSV9BTURTVEQ9eQotIyBDT05GSUdfTVREX0NGSV9TVEFBIGlzIG5vdCBzZXQKLUNPTkZJR19NVERfQ0ZJX1VUSUw9eQotIyBDT05GSUdfTVREX1JBTSBpcyBub3Qgc2V0Ci0jIENPTkZJR19NVERfUk9NIGlzIG5vdCBzZXQKLSMgQ09ORklHX01URF9BQlNFTlQgaXMgbm90IHNldAotCi0jCi0jIE1hcHBpbmcgZHJpdmVycyBmb3IgY2hpcCBhY2Nlc3MKLSMKLSMgQ09ORklHX01URF9DT01QTEVYX01BUFBJTkdTIGlzIG5vdCBzZXQKLSMgQ09ORklHX01URF9QSFlTTUFQIGlzIG5vdCBzZXQKLUNPTkZJR19NVERfUEhZU01BUF9PRj15Ci0jIENPTkZJR19NVERfQ0ZJX0ZMQUdBRE0gaXMgbm90IHNldAotIyBDT05GSUdfTVREX1BMQVRSQU0gaXMgbm90IHNldAotCi0jCi0jIFNlbGYtY29udGFpbmVkIE1URCBkZXZpY2UgZHJpdmVycwotIwotIyBDT05GSUdfTVREX1NMUkFNIGlzIG5vdCBzZXQKLSMgQ09ORklHX01URF9QSFJBTSBpcyBub3Qgc2V0Ci0jIENPTkZJR19NVERfTVREUkFNIGlzIG5vdCBzZXQKLSMgQ09ORklHX01URF9CTE9DSzJNVEQgaXMgbm90IHNldAotCi0jCi0jIERpc2stT24tQ2hpcCBEZXZpY2UgRHJpdmVycwotIwotIyBDT05GSUdfTVREX0RPQzIwMDAgaXMgbm90IHNldAotIyBDT05GSUdfTVREX0RPQzIwMDEgaXMgbm90IHNldAotIyBDT05GSUdfTVREX0RPQzIwMDFQTFVTIGlzIG5vdCBzZXQKLSMgQ09ORklHX01URF9OQU5EIGlzIG5vdCBzZXQKLSMgQ09ORklHX01URF9PTkVOQU5EIGlzIG5vdCBzZXQKLQotIwotIyBVQkkgLSBVbnNvcnRlZCBibG9jayBpbWFnZXMKLSMKLSMgQ09ORklHX01URF9VQkkgaXMgbm90IHNldAotQ09ORklHX09GX0RFVklDRT15Ci0jIENPTkZJR19QQVJQT1JUIGlzIG5vdCBzZXQKLSMgQ09ORklHX0JMS19ERVYgaXMgbm90IHNldAotIyBDT05GSUdfTUlTQ19ERVZJQ0VTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lERSBpcyBub3Qgc2V0Ci0KLSMKLSMgU0NTSSBkZXZpY2Ugc3VwcG9ydAotIwotIyBDT05GSUdfUkFJRF9BVFRSUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19TQ1NJIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NDU0lfRE1BIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NDU0lfTkVUTElOSyBpcyBub3Qgc2V0Ci0jIENPTkZJR19BVEEgaXMgbm90IHNldAotIyBDT05GSUdfTUQgaXMgbm90IHNldAotIyBDT05GSUdfTUFDSU5UT1NIX0RSSVZFUlMgaXMgbm90IHNldAotQ09ORklHX05FVERFVklDRVM9eQotIyBDT05GSUdfTkVUREVWSUNFU19NVUxUSVFVRVVFIGlzIG5vdCBzZXQKLSMgQ09ORklHX0RVTU1ZIGlzIG5vdCBzZXQKLSMgQ09ORklHX0JPTkRJTkcgaXMgbm90IHNldAotIyBDT05GSUdfTUFDVkxBTiBpcyBub3Qgc2V0Ci0jIENPTkZJR19FUVVBTElaRVIgaXMgbm90IHNldAotIyBDT05GSUdfVFVOIGlzIG5vdCBzZXQKLSMgQ09ORklHX1ZFVEggaXMgbm90IHNldAotQ09ORklHX1BIWUxJQj15Ci0KLSMKLSMgTUlJIFBIWSBkZXZpY2UgZHJpdmVycwotIwotIyBDT05GSUdfTUFSVkVMTF9QSFkgaXMgbm90IHNldAotQ09ORklHX0RBVklDT01fUEhZPXkKLSMgQ09ORklHX1FTRU1JX1BIWSBpcyBub3Qgc2V0Ci0jIENPTkZJR19MWFRfUEhZIGlzIG5vdCBzZXQKLSMgQ09ORklHX0NJQ0FEQV9QSFkgaXMgbm90IHNldAotIyBDT05GSUdfVklURVNTRV9QSFkgaXMgbm90IHNldAotIyBDT05GSUdfU01TQ19QSFkgaXMgbm90IHNldAotIyBDT05GSUdfQlJPQURDT01fUEhZIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lDUExVU19QSFkgaXMgbm90IHNldAotIyBDT05GSUdfRklYRURfUEhZIGlzIG5vdCBzZXQKLSMgQ09ORklHX01ESU9fQklUQkFORyBpcyBub3Qgc2V0Ci1DT05GSUdfTkVUX0VUSEVSTkVUPXkKLUNPTkZJR19NSUk9eQotIyBDT05GSUdfSUJNX05FV19FTUFDX1pNSUkgaXMgbm90IHNldAotIyBDT05GSUdfSUJNX05FV19FTUFDX1JHTUlJIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lCTV9ORVdfRU1BQ19UQUggaXMgbm90IHNldAotIyBDT05GSUdfSUJNX05FV19FTUFDX0VNQUM0IGlzIG5vdCBzZXQKLSMgQ09ORklHX0I0NCBpcyBub3Qgc2V0Ci1DT05GSUdfRlNfRU5FVD15Ci0jIENPTkZJR19GU19FTkVUX0hBU19TQ0MgaXMgbm90IHNldAotQ09ORklHX0ZTX0VORVRfSEFTX0ZFQz15Ci1DT05GSUdfRlNfRU5FVF9NRElPX0ZFQz15Ci0jIENPTkZJR19ORVRERVZfMTAwMCBpcyBub3Qgc2V0Ci0jIENPTkZJR19ORVRERVZfMTAwMDAgaXMgbm90IHNldAotCi0jCi0jIFdpcmVsZXNzIExBTgotIwotIyBDT05GSUdfV0xBTl9QUkU4MDIxMSBpcyBub3Qgc2V0Ci0jIENPTkZJR19XTEFOXzgwMjExIGlzIG5vdCBzZXQKLSMgQ09ORklHX1dBTiBpcyBub3Qgc2V0Ci0jIENPTkZJR19QUFAgaXMgbm90IHNldAotIyBDT05GSUdfU0xJUCBpcyBub3Qgc2V0Ci0jIENPTkZJR19TSEFQRVIgaXMgbm90IHNldAotIyBDT05GSUdfTkVUQ09OU09MRSBpcyBub3Qgc2V0Ci0jIENPTkZJR19ORVRQT0xMIGlzIG5vdCBzZXQKLSMgQ09ORklHX05FVF9QT0xMX0NPTlRST0xMRVIgaXMgbm90IHNldAotIyBDT05GSUdfSVNETiBpcyBub3Qgc2V0Ci0jIENPTkZJR19QSE9ORSBpcyBub3Qgc2V0Ci0KLSMKLSMgSW5wdXQgZGV2aWNlIHN1cHBvcnQKLSMKLUNPTkZJR19JTlBVVD15Ci0jIENPTkZJR19JTlBVVF9GRl9NRU1MRVNTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lOUFVUX1BPTExERVYgaXMgbm90IHNldAotCi0jCi0jIFVzZXJsYW5kIGludGVyZmFjZXMKLSMKLUNPTkZJR19JTlBVVF9NT1VTRURFVj15Ci1DT05GSUdfSU5QVVRfTU9VU0VERVZfUFNBVVg9eQotQ09ORklHX0lOUFVUX01PVVNFREVWX1NDUkVFTl9YPTEwMjQKLUNPTkZJR19JTlBVVF9NT1VTRURFVl9TQ1JFRU5fWT03NjgKLSMgQ09ORklHX0lOUFVUX0pPWURFViBpcyBub3Qgc2V0Ci0jIENPTkZJR19JTlBVVF9FVkRFViBpcyBub3Qgc2V0Ci0jIENPTkZJR19JTlBVVF9FVkJVRyBpcyBub3Qgc2V0Ci0KLSMKLSMgSW5wdXQgRGV2aWNlIERyaXZlcnMKLSMKLUNPTkZJR19JTlBVVF9LRVlCT0FSRD15Ci1DT05GSUdfS0VZQk9BUkRfQVRLQkQ9eQotIyBDT05GSUdfS0VZQk9BUkRfU1VOS0JEIGlzIG5vdCBzZXQKLSMgQ09ORklHX0tFWUJPQVJEX0xLS0JEIGlzIG5vdCBzZXQKLSMgQ09ORklHX0tFWUJPQVJEX1hUS0JEIGlzIG5vdCBzZXQKLSMgQ09ORklHX0tFWUJPQVJEX05FV1RPTiBpcyBub3Qgc2V0Ci0jIENPTkZJR19LRVlCT0FSRF9TVE9XQVdBWSBpcyBub3Qgc2V0Ci1DT05GSUdfSU5QVVRfTU9VU0U9eQotQ09ORklHX01PVVNFX1BTMj15Ci1DT05GSUdfTU9VU0VfUFMyX0FMUFM9eQotQ09ORklHX01PVVNFX1BTMl9MT0dJUFMyUFA9eQotQ09ORklHX01PVVNFX1BTMl9TWU5BUFRJQ1M9eQotQ09ORklHX01PVVNFX1BTMl9MSUZFQk9PSz15Ci1DT05GSUdfTU9VU0VfUFMyX1RSQUNLUE9JTlQ9eQotIyBDT05GSUdfTU9VU0VfUFMyX1RPVUNIS0lUIGlzIG5vdCBzZXQKLSMgQ09ORklHX01PVVNFX1NFUklBTCBpcyBub3Qgc2V0Ci0jIENPTkZJR19NT1VTRV9WU1hYWEFBIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lOUFVUX0pPWVNUSUNLIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lOUFVUX1RBQkxFVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19JTlBVVF9UT1VDSFNDUkVFTiBpcyBub3Qgc2V0Ci0jIENPTkZJR19JTlBVVF9NSVNDIGlzIG5vdCBzZXQKLQotIwotIyBIYXJkd2FyZSBJL08gcG9ydHMKLSMKLUNPTkZJR19TRVJJTz15Ci1DT05GSUdfU0VSSU9fSTgwNDI9eQotQ09ORklHX1NFUklPX1NFUlBPUlQ9eQotQ09ORklHX1NFUklPX0xJQlBTMj15Ci0jIENPTkZJR19TRVJJT19SQVcgaXMgbm90IHNldAotIyBDT05GSUdfR0FNRVBPUlQgaXMgbm90IHNldAotCi0jCi0jIENoYXJhY3RlciBkZXZpY2VzCi0jCi0jIENPTkZJR19WVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19TRVJJQUxfTk9OU1RBTkRBUkQgaXMgbm90IHNldAotCi0jCi0jIFNlcmlhbCBkcml2ZXJzCi0jCi0jIENPTkZJR19TRVJJQUxfODI1MCBpcyBub3Qgc2V0Ci0KLSMKLSMgTm9uLTgyNTAgc2VyaWFsIHBvcnQgc3VwcG9ydAotIwotIyBDT05GSUdfU0VSSUFMX1VBUlRMSVRFIGlzIG5vdCBzZXQKLUNPTkZJR19TRVJJQUxfQ09SRT15Ci1DT05GSUdfU0VSSUFMX0NPUkVfQ09OU09MRT15Ci1DT05GSUdfU0VSSUFMX0NQTT15Ci1DT05GSUdfU0VSSUFMX0NQTV9DT05TT0xFPXkKLSMgQ09ORklHX1NFUklBTF9DUE1fU0NDMSBpcyBub3Qgc2V0Ci0jIENPTkZJR19TRVJJQUxfQ1BNX1NDQzIgaXMgbm90IHNldAotIyBDT05GSUdfU0VSSUFMX0NQTV9TQ0MzIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NFUklBTF9DUE1fU0NDNCBpcyBub3Qgc2V0Ci1DT05GSUdfU0VSSUFMX0NQTV9TTUMxPXkKLUNPTkZJR19TRVJJQUxfQ1BNX1NNQzI9eQotQ09ORklHX1VOSVg5OF9QVFlTPXkKLSMgQ09ORklHX0xFR0FDWV9QVFlTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lQTUlfSEFORExFUiBpcyBub3Qgc2V0Ci1DT05GSUdfSFdfUkFORE9NPXkKLSMgQ09ORklHX05WUkFNIGlzIG5vdCBzZXQKLUNPTkZJR19HRU5fUlRDPXkKLSMgQ09ORklHX0dFTl9SVENfWCBpcyBub3Qgc2V0Ci0jIENPTkZJR19SMzk2NCBpcyBub3Qgc2V0Ci0jIENPTkZJR19SQVdfRFJJVkVSIGlzIG5vdCBzZXQKLSMgQ09ORklHX1RDR19UUE0gaXMgbm90IHNldAotIyBDT05GSUdfSTJDIGlzIG5vdCBzZXQKLQotIwotIyBTUEkgc3VwcG9ydAotIwotIyBDT05GSUdfU1BJIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NQSV9NQVNURVIgaXMgbm90IHNldAotIyBDT05GSUdfVzEgaXMgbm90IHNldAotIyBDT05GSUdfUE9XRVJfU1VQUExZIGlzIG5vdCBzZXQKLSMgQ09ORklHX0hXTU9OIGlzIG5vdCBzZXQKLSMgQ09ORklHX1dBVENIRE9HIGlzIG5vdCBzZXQKLQotIwotIyBTb25pY3MgU2lsaWNvbiBCYWNrcGxhbmUKLSMKLUNPTkZJR19TU0JfUE9TU0lCTEU9eQotIyBDT05GSUdfU1NCIGlzIG5vdCBzZXQKLQotIwotIyBNdWx0aWZ1bmN0aW9uIGRldmljZSBkcml2ZXJzCi0jCi0jIENPTkZJR19NRkRfU001MDEgaXMgbm90IHNldAotCi0jCi0jIE11bHRpbWVkaWEgZGV2aWNlcwotIwotIyBDT05GSUdfVklERU9fREVWIGlzIG5vdCBzZXQKLSMgQ09ORklHX0RWQl9DT1JFIGlzIG5vdCBzZXQKLUNPTkZJR19EQUI9eQotCi0jCi0jIEdyYXBoaWNzIHN1cHBvcnQKLSMKLSMgQ09ORklHX1ZHQVNUQVRFIGlzIG5vdCBzZXQKLUNPTkZJR19WSURFT19PVVRQVVRfQ09OVFJPTD15Ci0jIENPTkZJR19GQiBpcyBub3Qgc2V0Ci0jIENPTkZJR19CQUNLTElHSFRfTENEX1NVUFBPUlQgaXMgbm90IHNldAotCi0jCi0jIERpc3BsYXkgZGV2aWNlIHN1cHBvcnQKLSMKLSMgQ09ORklHX0RJU1BMQVlfU1VQUE9SVCBpcyBub3Qgc2V0Ci0KLSMKLSMgU291bmQKLSMKLSMgQ09ORklHX1NPVU5EIGlzIG5vdCBzZXQKLSMgQ09ORklHX0hJRF9TVVBQT1JUIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VTQl9TVVBQT1JUIGlzIG5vdCBzZXQKLSMgQ09ORklHX01NQyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ORVdfTEVEUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19FREFDIGlzIG5vdCBzZXQKLSMgQ09ORklHX1JUQ19DTEFTUyBpcyBub3Qgc2V0Ci0KLSMKLSMgVXNlcnNwYWNlIEkvTwotIwotIyBDT05GSUdfVUlPIGlzIG5vdCBzZXQKLQotIwotIyBGaWxlIHN5c3RlbXMKLSMKLSMgQ09ORklHX0VYVDJfRlMgaXMgbm90IHNldAotIyBDT05GSUdfRVhUM19GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19FWFQ0REVWX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1JFSVNFUkZTX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0pGU19GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19GU19QT1NJWF9BQ0wgaXMgbm90IHNldAotIyBDT05GSUdfWEZTX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0dGUzJfRlMgaXMgbm90IHNldAotIyBDT05GSUdfT0NGUzJfRlMgaXMgbm90IHNldAotIyBDT05GSUdfTUlOSVhfRlMgaXMgbm90IHNldAotIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAotIyBDT05GSUdfSU5PVElGWSBpcyBub3Qgc2V0Ci0jIENPTkZJR19RVU9UQSBpcyBub3Qgc2V0Ci0jIENPTkZJR19ETk9USUZZIGlzIG5vdCBzZXQKLSMgQ09ORklHX0FVVE9GU19GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19BVVRPRlM0X0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZVU0VfRlMgaXMgbm90IHNldAotCi0jCi0jIENELVJPTS9EVkQgRmlsZXN5c3RlbXMKLSMKLSMgQ09ORklHX0lTTzk2NjBfRlMgaXMgbm90IHNldAotIyBDT05GSUdfVURGX0ZTIGlzIG5vdCBzZXQKLQotIwotIyBET1MvRkFUL05UIEZpbGVzeXN0ZW1zCi0jCi0jIENPTkZJR19NU0RPU19GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19WRkFUX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX05URlNfRlMgaXMgbm90IHNldAotCi0jCi0jIFBzZXVkbyBmaWxlc3lzdGVtcwotIwotQ09ORklHX1BST0NfRlM9eQotIyBDT05GSUdfUFJPQ19LQ09SRSBpcyBub3Qgc2V0Ci1DT05GSUdfUFJPQ19TWVNDVEw9eQotQ09ORklHX1NZU0ZTPXkKLUNPTkZJR19UTVBGUz15Ci0jIENPTkZJR19UTVBGU19QT1NJWF9BQ0wgaXMgbm90IHNldAotIyBDT05GSUdfSFVHRVRMQl9QQUdFIGlzIG5vdCBzZXQKLSMgQ09ORklHX0NPTkZJR0ZTX0ZTIGlzIG5vdCBzZXQKLQotIwotIyBNaXNjZWxsYW5lb3VzIGZpbGVzeXN0ZW1zCi0jCi0jIENPTkZJR19BREZTX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0FGRlNfRlMgaXMgbm90IHNldAotIyBDT05GSUdfSEZTX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0hGU1BMVVNfRlMgaXMgbm90IHNldAotIyBDT05GSUdfQkVGU19GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19CRlNfRlMgaXMgbm90IHNldAotIyBDT05GSUdfRUZTX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0pGRlMyX0ZTIGlzIG5vdCBzZXQKLUNPTkZJR19DUkFNRlM9eQotIyBDT05GSUdfVlhGU19GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19IUEZTX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1FOWDRGU19GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19TWVNWX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VGU19GUyBpcyBub3Qgc2V0Ci1DT05GSUdfTkVUV09SS19GSUxFU1lTVEVNUz15Ci1DT05GSUdfTkZTX0ZTPXkKLUNPTkZJR19ORlNfVjM9eQotIyBDT05GSUdfTkZTX1YzX0FDTCBpcyBub3Qgc2V0Ci0jIENPTkZJR19ORlNfVjQgaXMgbm90IHNldAotIyBDT05GSUdfTkZTX0RJUkVDVElPIGlzIG5vdCBzZXQKLSMgQ09ORklHX05GU0QgaXMgbm90IHNldAotQ09ORklHX1JPT1RfTkZTPXkKLUNPTkZJR19MT0NLRD15Ci1DT05GSUdfTE9DS0RfVjQ9eQotQ09ORklHX05GU19DT01NT049eQotQ09ORklHX1NVTlJQQz15Ci0jIENPTkZJR19TVU5SUENfQklORDM0IGlzIG5vdCBzZXQKLSMgQ09ORklHX1JQQ1NFQ19HU1NfS1JCNSBpcyBub3Qgc2V0Ci0jIENPTkZJR19SUENTRUNfR1NTX1NQS00zIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NNQl9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19DSUZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX05DUF9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19DT0RBX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0FGU19GUyBpcyBub3Qgc2V0Ci0KLSMKLSMgUGFydGl0aW9uIFR5cGVzCi0jCi1DT05GSUdfUEFSVElUSU9OX0FEVkFOQ0VEPXkKLSMgQ09ORklHX0FDT1JOX1BBUlRJVElPTiBpcyBub3Qgc2V0Ci0jIENPTkZJR19PU0ZfUEFSVElUSU9OIGlzIG5vdCBzZXQKLSMgQ09ORklHX0FNSUdBX1BBUlRJVElPTiBpcyBub3Qgc2V0Ci0jIENPTkZJR19BVEFSSV9QQVJUSVRJT04gaXMgbm90IHNldAotIyBDT05GSUdfTUFDX1BBUlRJVElPTiBpcyBub3Qgc2V0Ci1DT05GSUdfTVNET1NfUEFSVElUSU9OPXkKLSMgQ09ORklHX0JTRF9ESVNLTEFCRUwgaXMgbm90IHNldAotIyBDT05GSUdfTUlOSVhfU1VCUEFSVElUSU9OIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NPTEFSSVNfWDg2X1BBUlRJVElPTiBpcyBub3Qgc2V0Ci0jIENPTkZJR19VTklYV0FSRV9ESVNLTEFCRUwgaXMgbm90IHNldAotIyBDT05GSUdfTERNX1BBUlRJVElPTiBpcyBub3Qgc2V0Ci0jIENPTkZJR19TR0lfUEFSVElUSU9OIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VMVFJJWF9QQVJUSVRJT04gaXMgbm90IHNldAotIyBDT05GSUdfU1VOX1BBUlRJVElPTiBpcyBub3Qgc2V0Ci0jIENPTkZJR19LQVJNQV9QQVJUSVRJT04gaXMgbm90IHNldAotIyBDT05GSUdfRUZJX1BBUlRJVElPTiBpcyBub3Qgc2V0Ci0jIENPTkZJR19TWVNWNjhfUEFSVElUSU9OIGlzIG5vdCBzZXQKLSMgQ09ORklHX05MUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ETE0gaXMgbm90IHNldAotIyBDT05GSUdfVUNDX1NMT1cgaXMgbm90IHNldAotCi0jCi0jIExpYnJhcnkgcm91dGluZXMKLSMKLSMgQ09ORklHX0NSQ19DQ0lUVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19DUkMxNiBpcyBub3Qgc2V0Ci0jIENPTkZJR19DUkNfSVRVX1QgaXMgbm90IHNldAotIyBDT05GSUdfQ1JDMzIgaXMgbm90IHNldAotIyBDT05GSUdfQ1JDNyBpcyBub3Qgc2V0Ci0jIENPTkZJR19MSUJDUkMzMkMgaXMgbm90IHNldAotQ09ORklHX1pMSUJfSU5GTEFURT15Ci1DT05GSUdfSEFTX0lPTUVNPXkKLUNPTkZJR19IQVNfSU9QT1JUPXkKLUNPTkZJR19IQVNfRE1BPXkKLUNPTkZJR19JTlNUUlVNRU5UQVRJT049eQotIyBDT05GSUdfUFJPRklMSU5HIGlzIG5vdCBzZXQKLSMgQ09ORklHX01BUktFUlMgaXMgbm90IHNldAotCi0jCi0jIEtlcm5lbCBoYWNraW5nCi0jCi0jIENPTkZJR19QUklOVEtfVElNRSBpcyBub3Qgc2V0Ci1DT05GSUdfRU5BQkxFX1dBUk5fREVQUkVDQVRFRD15Ci1DT05GSUdfRU5BQkxFX01VU1RfQ0hFQ0s9eQotQ09ORklHX01BR0lDX1NZU1JRPXkKLSMgQ09ORklHX1VOVVNFRF9TWU1CT0xTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0RFQlVHX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0hFQURFUlNfQ0hFQ0sgaXMgbm90IHNldAotQ09ORklHX0RFQlVHX0tFUk5FTD15Ci0jIENPTkZJR19ERUJVR19TSElSUSBpcyBub3Qgc2V0Ci1DT05GSUdfREVURUNUX1NPRlRMT0NLVVA9eQotQ09ORklHX1NDSEVEX0RFQlVHPXkKLSMgQ09ORklHX1NDSEVEU1RBVFMgaXMgbm90IHNldAotIyBDT05GSUdfVElNRVJfU1RBVFMgaXMgbm90IHNldAotIyBDT05GSUdfU0xVQl9ERUJVR19PTiBpcyBub3Qgc2V0Ci0jIENPTkZJR19ERUJVR19TUElOTE9DSyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ERUJVR19NVVRFWEVTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0RFQlVHX1NQSU5MT0NLX1NMRUVQIGlzIG5vdCBzZXQKLSMgQ09ORklHX0RFQlVHX0xPQ0tJTkdfQVBJX1NFTEZURVNUUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ERUJVR19LT0JKRUNUIGlzIG5vdCBzZXQKLUNPTkZJR19ERUJVR19CVUdWRVJCT1NFPXkKLUNPTkZJR19ERUJVR19JTkZPPXkKLSMgQ09ORklHX0RFQlVHX1ZNIGlzIG5vdCBzZXQKLSMgQ09ORklHX0RFQlVHX0xJU1QgaXMgbm90IHNldAotIyBDT05GSUdfREVCVUdfU0cgaXMgbm90IHNldAotQ09ORklHX0ZPUkNFRF9JTkxJTklORz15Ci0jIENPTkZJR19CT09UX1BSSU5US19ERUxBWSBpcyBub3Qgc2V0Ci0jIENPTkZJR19GQVVMVF9JTkpFQ1RJT04gaXMgbm90IHNldAotIyBDT05GSUdfU0FNUExFUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ERUJVR19TVEFDS09WRVJGTE9XIGlzIG5vdCBzZXQKLSMgQ09ORklHX0RFQlVHX1NUQUNLX1VTQUdFIGlzIG5vdCBzZXQKLSMgQ09ORklHX0RFQlVHX1BBR0VBTExPQyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ERUJVR0dFUiBpcyBub3Qgc2V0Ci0jIENPTkZJR19CRElfU1dJVENIIGlzIG5vdCBzZXQKLSMgQ09ORklHX1BQQ19FQVJMWV9ERUJVRyBpcyBub3Qgc2V0Ci0KLSMKLSMgU2VjdXJpdHkgb3B0aW9ucwotIwotIyBDT05GSUdfS0VZUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19TRUNVUklUWSBpcyBub3Qgc2V0Ci0jIENPTkZJR19TRUNVUklUWV9GSUxFX0NBUEFCSUxJVElFUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19DUllQVE8gaXMgbm90IHNldAotIyBDT05GSUdfUFBDX0NMT0NLIGlzIG5vdCBzZXQKLUNPTkZJR19QUENfTElCX1JIRUFQPXkKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9jb25maWdzL2FkZGVyODc1LXJlZGJvb3RfZGVmY29uZmlnIGIvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvYWRkZXI4NzVfZGVmY29uZmlnCnNpbWlsYXJpdHkgaW5kZXggOTQlCnJlbmFtZSBmcm9tIGFyY2gvcG93ZXJwYy9jb25maWdzL2FkZGVyODc1LXJlZGJvb3RfZGVmY29uZmlnCnJlbmFtZSB0byBhcmNoL3Bvd2VycGMvY29uZmlncy9hZGRlcjg3NV9kZWZjb25maWcKaW5kZXggY2FiNWY5Yi4uYTNjYzk0YSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvYWRkZXI4NzUtcmVkYm9vdF9kZWZjb25maWcKKysrIGIvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvYWRkZXI4NzVfZGVmY29uZmlnCkBAIC0xLDcgKzEsNyBAQAogIwogIyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBtYWtlIGNvbmZpZzogZG9uJ3QgZWRpdAotIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjI0LXJjNgotIyBUaHUgSmFuIDE3IDE2OjE3OjM4IDIwMDgKKyMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4yNS1yYzIKKyMgV2VkIEZlYiAyMCAxMjoyNjowNyAyMDA4CiAjCiAjIENPTkZJR19QUEM2NCBpcyBub3Qgc2V0CiAKQEAgLTI2LDYgKzI2LDcgQEAKIENPTkZJR19HRU5FUklDX1RJTUVfVlNZU0NBTEw9eQogQ09ORklHX0dFTkVSSUNfQ0xPQ0tFVkVOVFM9eQogQ09ORklHX0dFTkVSSUNfSEFSRElSUVM9eQorIyBDT05GSUdfSEFWRV9TRVRVUF9QRVJfQ1BVX0FSRUEgaXMgbm90IHNldAogQ09ORklHX0lSUV9QRVJfQ1BVPXkKIENPTkZJR19SV1NFTV9YQ0hHQUREX0FMR09SSVRITT15CiBDT05GSUdfQVJDSF9IQVNfSUxPRzJfVTMyPXkKQEAgLTY0LDE3ICs2NSwxOCBAQAogIyBDT05GSUdfUE9TSVhfTVFVRVVFIGlzIG5vdCBzZXQKICMgQ09ORklHX0JTRF9QUk9DRVNTX0FDQ1QgaXMgbm90IHNldAogIyBDT05GSUdfVEFTS1NUQVRTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VTRVJfTlMgaXMgbm90IHNldAotIyBDT05GSUdfUElEX05TIGlzIG5vdCBzZXQKICMgQ09ORklHX0FVRElUIGlzIG5vdCBzZXQKICMgQ09ORklHX0lLQ09ORklHIGlzIG5vdCBzZXQKIENPTkZJR19MT0dfQlVGX1NISUZUPTE0CiAjIENPTkZJR19DR1JPVVBTIGlzIG5vdCBzZXQKK0NPTkZJR19HUk9VUF9TQ0hFRD15CiBDT05GSUdfRkFJUl9HUk9VUF9TQ0hFRD15Ci1DT05GSUdfRkFJUl9VU0VSX1NDSEVEPXkKLSMgQ09ORklHX0ZBSVJfQ0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JUX0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKK0NPTkZJR19VU0VSX1NDSEVEPXkKKyMgQ09ORklHX0NHUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CiBDT05GSUdfU1lTRlNfREVQUkVDQVRFRD15CiAjIENPTkZJR19SRUxBWSBpcyBub3Qgc2V0CisjIENPTkZJR19OQU1FU1BBQ0VTIGlzIG5vdCBzZXQKICMgQ09ORklHX0JMS19ERVZfSU5JVFJEIGlzIG5vdCBzZXQKICMgQ09ORklHX0NDX09QVElNSVpFX0ZPUl9TSVpFIGlzIG5vdCBzZXQKIENPTkZJR19TWVNDVEw9eQpAQCAtODcsMTEgKzg5LDEzIEBACiBDT05GSUdfUFJJTlRLPXkKIENPTkZJR19CVUc9eQogIyBDT05GSUdfRUxGX0NPUkUgaXMgbm90IHNldAorQ09ORklHX0NPTVBBVF9CUks9eQogIyBDT05GSUdfQkFTRV9GVUxMIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZVVEVYIGlzIG5vdCBzZXQKIENPTkZJR19BTk9OX0lOT0RFUz15CiBDT05GSUdfRVBPTEw9eQogQ09ORklHX1NJR05BTEZEPXkKK0NPTkZJR19USU1FUkZEPXkKIENPTkZJR19FVkVOVEZEPXkKIENPTkZJR19TSE1FTT15CiAjIENPTkZJR19WTV9FVkVOVF9DT1VOVEVSUyBpcyBub3Qgc2V0CkBAIC05OSw2ICsxMDMsMTIgQEAKICMgQ09ORklHX1NMQUIgaXMgbm90IHNldAogQ09ORklHX1NMVUI9eQogIyBDT05GSUdfU0xPQiBpcyBub3Qgc2V0CisjIENPTkZJR19QUk9GSUxJTkcgaXMgbm90IHNldAorIyBDT05GSUdfTUFSS0VSUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9PUFJPRklMRT15CitDT05GSUdfSEFWRV9LUFJPQkVTPXkKK0NPTkZJR19QUk9DX1BBR0VfTU9OSVRPUj15CitDT05GSUdfU0xBQklORk89eQogIyBDT05GSUdfVElOWV9TSE1FTSBpcyBub3Qgc2V0CiBDT05GSUdfQkFTRV9TTUFMTD0xCiAjIENPTkZJR19NT0RVTEVTIGlzIG5vdCBzZXQKQEAgLTEyMCwxMiArMTMwLDE0IEBACiAjIENPTkZJR19ERUZBVUxUX0NGUSBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUZBVUxUX05PT1AgaXMgbm90IHNldAogQ09ORklHX0RFRkFVTFRfSU9TQ0hFRD0iZGVhZGxpbmUiCitDT05GSUdfQ0xBU1NJQ19SQ1U9eQorIyBDT05GSUdfUFJFRU1QVF9SQ1UgaXMgbm90IHNldAogCiAjCiAjIFBsYXRmb3JtIHN1cHBvcnQKICMKLSMgQ09ORklHX1BQQ19NUEM1Mnh4IGlzIG5vdCBzZXQKLSMgQ09ORklHX1BQQ19NUEM1MjAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ19NUEM1MTJ4IGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ19NUEM1MTIxIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19DRUxMIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19DRUxMX05BVElWRSBpcyBub3Qgc2V0CiBDT05GSUdfQ1BNMT15CkBAIC0xNTAsNiArMTYyLDcgQEAKICMgQ09ORklHX0kyQ19TUElfVUNPREVfUEFUQ0ggaXMgbm90IHNldAogIyBDT05GSUdfSTJDX1NQSV9TTUMxX1VDT0RFX1BBVENIIGlzIG5vdCBzZXQKICMgQ09ORklHX1BRMkFEUyBpcyBub3Qgc2V0CisjIENPTkZJR19JUElDIGlzIG5vdCBzZXQKICMgQ09ORklHX01QSUMgaXMgbm90IHNldAogIyBDT05GSUdfTVBJQ19XRUlSRCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfSTgyNTkgaXMgbm90IHNldApAQCAtMTYwLDcgKzE3Myw2IEBACiAjIENPTkZJR19QUENfSU5ESVJFQ1RfSU8gaXMgbm90IHNldAogIyBDT05GSUdfR0VORVJJQ19JT01BUCBpcyBub3Qgc2V0CiAjIENPTkZJR19DUFVfRlJFUSBpcyBub3Qgc2V0Ci0jIENPTkZJR19DUE0yIGlzIG5vdCBzZXQKIENPTkZJR19QUENfQ1BNX05FV19CSU5ESU5HPXkKICMgQ09ORklHX0ZTTF9VTEkxNTc1IGlzIG5vdCBzZXQKIENPTkZJR19DUE09eQpAQCAtMTc4LDE0ICsxOTAsMTkgQEAKICMgQ09ORklHX0haXzMwMCBpcyBub3Qgc2V0CiBDT05GSUdfSFpfMTAwMD15CiBDT05GSUdfSFo9MTAwMAorIyBDT05GSUdfU0NIRURfSFJUSUNLIGlzIG5vdCBzZXQKIENPTkZJR19QUkVFTVBUX05PTkU9eQogIyBDT05GSUdfUFJFRU1QVF9WT0xVTlRBUlkgaXMgbm90IHNldAogIyBDT05GSUdfUFJFRU1QVCBpcyBub3Qgc2V0CitDT05GSUdfUkNVX1RSQUNFPXkKIENPTkZJR19CSU5GTVRfRUxGPXkKICMgQ09ORklHX0JJTkZNVF9NSVNDIGlzIG5vdCBzZXQKICMgQ09ORklHX01BVEhfRU1VTEFUSU9OIGlzIG5vdCBzZXQKICMgQ09ORklHXzhYWF9NSU5JTUFMX0ZQRU1VIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lPTU1VX0hFTFBFUiBpcyBub3Qgc2V0CiBDT05GSUdfQVJDSF9FTkFCTEVfTUVNT1JZX0hPVFBMVUc9eQorQ09ORklHX0FSQ0hfSEFTX1dBTEtfTUVNT1JZPXkKK0NPTkZJR19BUkNIX0VOQUJMRV9NRU1PUllfSE9UUkVNT1ZFPXkKIENPTkZJR19BUkNIX0ZMQVRNRU1fRU5BQkxFPXkKIENPTkZJR19BUkNIX1BPUFVMQVRFU19OT0RFX01BUD15CiBDT05GSUdfU0VMRUNUX01FTU9SWV9NT0RFTD15CkBAIC0yMDQsMTEgKzIyMSw3IEBACiAjIENPTkZJR19QUk9DX0RFVklDRVRSRUUgaXMgbm90IHNldAogIyBDT05GSUdfQ01ETElORV9CT09MIGlzIG5vdCBzZXQKICMgQ09ORklHX1BNIGlzIG5vdCBzZXQKLUNPTkZJR19TVVNQRU5EX1VQX1BPU1NJQkxFPXkKLUNPTkZJR19ISUJFUk5BVElPTl9VUF9QT1NTSUJMRT15CiAjIENPTkZJR19TRUNDT01QIGlzIG5vdCBzZXQKLUNPTkZJR19XQU5UX0RFVklDRV9UUkVFPXkKLUNPTkZJR19ERVZJQ0VfVFJFRT0iYWRkZXI4NzUtcmVkYm9vdC5kdHMiCiBDT05GSUdfSVNBX0RNQV9BUEk9eQogCiAjCkBAIC0zMDUsNiArMzE4LDcgQEAKICMKICMgQ09ORklHX05FVF9QS1RHRU4gaXMgbm90IHNldAogIyBDT05GSUdfSEFNUkFESU8gaXMgbm90IHNldAorIyBDT05GSUdfQ0FOIGlzIG5vdCBzZXQKICMgQ09ORklHX0lSREEgaXMgbm90IHNldAogIyBDT05GSUdfQlQgaXMgbm90IHNldAogIyBDT05GSUdfQUZfUlhSUEMgaXMgbm90IHNldApAQCAtNDExLDYgKzQyNSw3IEBACiAjIENPTkZJR19QQVJQT1JUIGlzIG5vdCBzZXQKICMgQ09ORklHX0JMS19ERVYgaXMgbm90IHNldAogIyBDT05GSUdfTUlTQ19ERVZJQ0VTIGlzIG5vdCBzZXQKK0NPTkZJR19IQVZFX0lERT15CiAjIENPTkZJR19JREUgaXMgbm90IHNldAogCiAjCkBAIC00NDUsNiArNDYwLDcgQEAKICMgQ09ORklHX1NNU0NfUEhZIGlzIG5vdCBzZXQKICMgQ09ORklHX0JST0FEQ09NX1BIWSBpcyBub3Qgc2V0CiAjIENPTkZJR19JQ1BMVVNfUEhZIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JFQUxURUtfUEhZIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZJWEVEX1BIWSBpcyBub3Qgc2V0CiAjIENPTkZJR19NRElPX0JJVEJBTkcgaXMgbm90IHNldAogQ09ORklHX05FVF9FVEhFUk5FVD15CkBAIC00NjksNyArNDg1LDYgQEAKICMgQ09ORklHX1dBTiBpcyBub3Qgc2V0CiAjIENPTkZJR19QUFAgaXMgbm90IHNldAogIyBDT05GSUdfU0xJUCBpcyBub3Qgc2V0Ci0jIENPTkZJR19TSEFQRVIgaXMgbm90IHNldAogIyBDT05GSUdfTkVUQ09OU09MRSBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRQT0xMIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9QT0xMX0NPTlRST0xMRVIgaXMgbm90IHNldApAQCAtNTc0LDYgKzU4OSw3IEBACiAjIENPTkZJR19XMSBpcyBub3Qgc2V0CiAjIENPTkZJR19QT1dFUl9TVVBQTFkgaXMgbm90IHNldAogIyBDT05GSUdfSFdNT04gaXMgbm90IHNldAorQ09ORklHX1RIRVJNQUw9eQogIyBDT05GSUdfV0FUQ0hET0cgaXMgbm90IHNldAogCiAjCkBAIC02MTQsNiArNjMwLDcgQEAKICMgQ09ORklHX0hJRF9TVVBQT1JUIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9TVVBQT1JUIGlzIG5vdCBzZXQKICMgQ09ORklHX01NQyBpcyBub3Qgc2V0CisjIENPTkZJR19NRU1TVElDSyBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVdfTEVEUyBpcyBub3Qgc2V0CiAjIENPTkZJR19FREFDIGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19DTEFTUyBpcyBub3Qgc2V0CkBAIC02MzUsMTEgKzY1Miw5IEBACiAjIENPTkZJR19YRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfR0ZTMl9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19PQ0ZTMl9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19ETk9USUZZIGlzIG5vdCBzZXQKICMgQ09ORklHX0lOT1RJRlkgaXMgbm90IHNldAogIyBDT05GSUdfUVVPVEEgaXMgbm90IHNldAotIyBDT05GSUdfRE5PVElGWSBpcyBub3Qgc2V0CiAjIENPTkZJR19BVVRPRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfQVVUT0ZTNF9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19GVVNFX0ZTIGlzIG5vdCBzZXQKQEAgLTY4Miw4ICs2OTcsMTAgQEAKICMgQ09ORklHX0pGRlMyX0ZTIGlzIG5vdCBzZXQKIENPTkZJR19DUkFNRlM9eQogIyBDT05GSUdfVlhGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19IUEZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1FOWDRGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TWVNWX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1VGU19GUyBpcyBub3Qgc2V0CiBDT05GSUdfTkVUV09SS19GSUxFU1lTVEVNUz15CkBAIC03MzAsNyArNzQ3LDYgQEAKICMgQ09ORklHX1NZU1Y2OF9QQVJUSVRJT04gaXMgbm90IHNldAogIyBDT05GSUdfTkxTIGlzIG5vdCBzZXQKICMgQ09ORklHX0RMTSBpcyBub3Qgc2V0Ci0jIENPTkZJR19VQ0NfU0xPVyBpcyBub3Qgc2V0CiAKICMKICMgTGlicmFyeSByb3V0aW5lcwpAQCAtNzQ1LDkgKzc2MSw2IEBACiBDT05GSUdfSEFTX0lPTUVNPXkKIENPTkZJR19IQVNfSU9QT1JUPXkKIENPTkZJR19IQVNfRE1BPXkKLUNPTkZJR19JTlNUUlVNRU5UQVRJT049eQotIyBDT05GSUdfUFJPRklMSU5HIGlzIG5vdCBzZXQKLSMgQ09ORklHX01BUktFUlMgaXMgbm90IHNldAogCiAjCiAjIEtlcm5lbCBoYWNraW5nCkBAIC03NTcsNyArNzcwLDcgQEAKIENPTkZJR19FTkFCTEVfTVVTVF9DSEVDSz15CiBDT05GSUdfTUFHSUNfU1lTUlE9eQogIyBDT05GSUdfVU5VU0VEX1NZTUJPTFMgaXMgbm90IHNldAotIyBDT05GSUdfREVCVUdfRlMgaXMgbm90IHNldAorQ09ORklHX0RFQlVHX0ZTPXkKICMgQ09ORklHX0hFQURFUlNfQ0hFQ0sgaXMgbm90IHNldAogQ09ORklHX0RFQlVHX0tFUk5FTD15CiAjIENPTkZJR19ERUJVR19TSElSUSBpcyBub3Qgc2V0CkBAIC03NjYsNiArNzc5LDcgQEAKICMgQ09ORklHX1NDSEVEU1RBVFMgaXMgbm90IHNldAogIyBDT05GSUdfVElNRVJfU1RBVFMgaXMgbm90IHNldAogIyBDT05GSUdfU0xVQl9ERUJVR19PTiBpcyBub3Qgc2V0CisjIENPTkZJR19TTFVCX1NUQVRTIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NQSU5MT0NLIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX01VVEVYRVMgaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfU1BJTkxPQ0tfU0xFRVAgaXMgbm90IHNldApAQCAtNzc2LDE0ICs3OTAsMTUgQEAKICMgQ09ORklHX0RFQlVHX1ZNIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX0xJU1QgaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfU0cgaXMgbm90IHNldAotQ09ORklHX0ZPUkNFRF9JTkxJTklORz15CiAjIENPTkZJR19CT09UX1BSSU5US19ERUxBWSBpcyBub3Qgc2V0CisjIENPTkZJR19CQUNLVFJBQ0VfU0VMRl9URVNUIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZBVUxUX0lOSkVDVElPTiBpcyBub3Qgc2V0CiAjIENPTkZJR19TQU1QTEVTIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NUQUNLT1ZFUkZMT1cgaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfU1RBQ0tfVVNBR0UgaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfUEFHRUFMTE9DIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHR0VSIGlzIG5vdCBzZXQKKyMgQ09ORklHX1ZJUlFfREVCVUcgaXMgbm90IHNldAogIyBDT05GSUdfQkRJX1NXSVRDSCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfRUFSTFlfREVCVUcgaXMgbm90IHNldAogCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvY29uZmlncy9jZWxsX2RlZmNvbmZpZyBiL2FyY2gvcG93ZXJwYy9jb25maWdzL2NlbGxfZGVmY29uZmlnCmluZGV4IGYzYmRlOGMuLmM0MjBlNDcgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jb25maWdzL2NlbGxfZGVmY29uZmlnCisrKyBiL2FyY2gvcG93ZXJwYy9jb25maWdzL2NlbGxfZGVmY29uZmlnCkBAIC0xLDcgKzEsNyBAQAogIwogIyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBtYWtlIGNvbmZpZzogZG9uJ3QgZWRpdAotIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjI0LXJjNAotIyBUaHUgRGVjICA2IDE2OjQ4OjA1IDIwMDcKKyMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4yNS1yYzYKKyMgVGh1IE1hciAyMCAxMDozMTowNCAyMDA4CiAjCiBDT05GSUdfUFBDNjQ9eQogCkBAIC0yOCw2ICsyOCw3IEBACiBDT05GSUdfR0VORVJJQ19USU1FX1ZTWVNDQUxMPXkKIENPTkZJR19HRU5FUklDX0NMT0NLRVZFTlRTPXkKIENPTkZJR19HRU5FUklDX0hBUkRJUlFTPXkKK0NPTkZJR19IQVZFX1NFVFVQX1BFUl9DUFVfQVJFQT15CiBDT05GSUdfSVJRX1BFUl9DUFU9eQogQ09ORklHX1JXU0VNX1hDSEdBRERfQUxHT1JJVEhNPXkKIENPTkZJR19BUkNIX0hBU19JTE9HMl9VMzI9eQpAQCAtNjksOCArNzAsNiBAQAogIyBDT05GSUdfUE9TSVhfTVFVRVVFIGlzIG5vdCBzZXQKICMgQ09ORklHX0JTRF9QUk9DRVNTX0FDQ1QgaXMgbm90IHNldAogIyBDT05GSUdfVEFTS1NUQVRTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VTRVJfTlMgaXMgbm90IHNldAotIyBDT05GSUdfUElEX05TIGlzIG5vdCBzZXQKICMgQ09ORklHX0FVRElUIGlzIG5vdCBzZXQKIENPTkZJR19JS0NPTkZJRz15CiBDT05GSUdfSUtDT05GSUdfUFJPQz15CkBAIC03OSwxMyArNzgsMjAgQEAKICMgQ09ORklHX0NHUk9VUF9ERUJVRyBpcyBub3Qgc2V0CiAjIENPTkZJR19DR1JPVVBfTlMgaXMgbm90IHNldAogQ09ORklHX0NQVVNFVFM9eQotQ09ORklHX0ZBSVJfR1JPVVBfU0NIRUQ9eQotQ09ORklHX0ZBSVJfVVNFUl9TQ0hFRD15Ci0jIENPTkZJR19GQUlSX0NHUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CisjIENPTkZJR19HUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CisjIENPTkZJR19VU0VSX1NDSEVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NHUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CiAjIENPTkZJR19DR1JPVVBfQ1BVQUNDVCBpcyBub3Qgc2V0CisjIENPTkZJR19SRVNPVVJDRV9DT1VOVEVSUyBpcyBub3Qgc2V0CiBDT05GSUdfU1lTRlNfREVQUkVDQVRFRD15CitDT05GSUdfU1lTRlNfREVQUkVDQVRFRF9WMj15CiBDT05GSUdfUFJPQ19QSURfQ1BVU0VUPXkKICMgQ09ORklHX1JFTEFZIGlzIG5vdCBzZXQKK0NPTkZJR19OQU1FU1BBQ0VTPXkKKyMgQ09ORklHX1VUU19OUyBpcyBub3Qgc2V0CisjIENPTkZJR19JUENfTlMgaXMgbm90IHNldAorIyBDT05GSUdfVVNFUl9OUyBpcyBub3Qgc2V0CisjIENPTkZJR19QSURfTlMgaXMgbm90IHNldAogQ09ORklHX0JMS19ERVZfSU5JVFJEPXkKIENPTkZJR19JTklUUkFNRlNfU09VUkNFPSIiCiBDT05GSUdfQ0NfT1BUSU1JWkVfRk9SX1NJWkU9eQpAQCAtOTksMTEgKzEwNSwxMyBAQAogQ09ORklHX1BSSU5USz15CiBDT05GSUdfQlVHPXkKIENPTkZJR19FTEZfQ09SRT15CisjIENPTkZJR19DT01QQVRfQlJLIGlzIG5vdCBzZXQKIENPTkZJR19CQVNFX0ZVTEw9eQogQ09ORklHX0ZVVEVYPXkKIENPTkZJR19BTk9OX0lOT0RFUz15CiBDT05GSUdfRVBPTEw9eQogQ09ORklHX1NJR05BTEZEPXkKK0NPTkZJR19USU1FUkZEPXkKIENPTkZJR19FVkVOVEZEPXkKIENPTkZJR19TSE1FTT15CiBDT05GSUdfVk1fRVZFTlRfQ09VTlRFUlM9eQpAQCAtMTExLDYgKzExOSwxNSBAQAogIyBDT05GSUdfU0xBQiBpcyBub3Qgc2V0CiBDT05GSUdfU0xVQj15CiAjIENPTkZJR19TTE9CIGlzIG5vdCBzZXQKK0NPTkZJR19QUk9GSUxJTkc9eQorIyBDT05GSUdfTUFSS0VSUyBpcyBub3Qgc2V0CitDT05GSUdfT1BST0ZJTEU9bQorQ09ORklHX0hBVkVfT1BST0ZJTEU9eQorIyBDT05GSUdfS1BST0JFUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9LUFJPQkVTPXkKK0NPTkZJR19IQVZFX0tSRVRQUk9CRVM9eQorQ09ORklHX1BST0NfUEFHRV9NT05JVE9SPXkKK0NPTkZJR19TTEFCSU5GTz15CiBDT05GSUdfUlRfTVVURVhFUz15CiAjIENPTkZJR19USU5ZX1NITUVNIGlzIG5vdCBzZXQKIENPTkZJR19CQVNFX1NNQUxMPTAKQEAgLTEzOCw2ICsxNTUsNyBAQAogIyBDT05GSUdfREVGQVVMVF9DRlEgaXMgbm90IHNldAogIyBDT05GSUdfREVGQVVMVF9OT09QIGlzIG5vdCBzZXQKIENPTkZJR19ERUZBVUxUX0lPU0NIRUQ9ImFudGljaXBhdG9yeSIKK0NPTkZJR19DTEFTU0lDX1JDVT15CiAKICMKICMgUGxhdGZvcm0gc3VwcG9ydApAQCAtMTQ4LDggKzE2Niw4IEBACiAjIENPTkZJR19QUENfODZ4eCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfUFNFUklFUyBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfSVNFUklFUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19QUENfTVBDNTJ4eCBpcyBub3Qgc2V0Ci0jIENPTkZJR19QUENfTVBDNTIwMCBpcyBub3Qgc2V0CisjIENPTkZJR19QUENfTVBDNTEyeCBpcyBub3Qgc2V0CisjIENPTkZJR19QUENfTVBDNTEyMSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfUE1BQyBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfTUFQTEUgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX1BBU0VNSSBpcyBub3Qgc2V0CkBAIC0xNjIsMTQgKzE4MCwxNCBAQAogIyBDT05GSUdfUFMzX0FEVkFOQ0VEIGlzIG5vdCBzZXQKIENPTkZJR19QUzNfSFRBQl9TSVpFPTIwCiAjIENPTkZJR19QUzNfRFlOQU1JQ19ETUEgaXMgbm90IHNldAotQ09ORklHX1BTM19VU0VfTFBBUl9BRERSPXkKIENPTkZJR19QUzNfVlVBUlQ9eQogQ09ORklHX1BTM19QUzNBVj15Ci1DT05GSUdfUFMzX1NZU19NQU5BR0VSPW0KK0NPTkZJR19QUzNfU1lTX01BTkFHRVI9eQogQ09ORklHX1BTM19TVE9SQUdFPXkKIENPTkZJR19QUzNfRElTSz15CiBDT05GSUdfUFMzX1JPTT1tCiBDT05GSUdfUFMzX0ZMQVNIPW0KK0NPTkZJR19QUzNfTFBNPW0KIENPTkZJR19QUENfQ0VMTD15CiBDT05GSUdfUFBDX0NFTExfTkFUSVZFPXkKIENPTkZJR19QUENfSUJNX0NFTExfQkxBREU9eQpAQCAtMTgzLDEwICsyMDEsMTIgQEAKIENPTkZJR19DQkVfVEhFUk09bQogQ09ORklHX0NCRV9DUFVGUkVRPW0KIENPTkZJR19DQkVfQ1BVRlJFUV9QTUk9bQorQ09ORklHX09QUk9GSUxFX0NFTEw9eQogIyBDT05GSUdfUFEyQURTIGlzIG5vdCBzZXQKIENPTkZJR19QUENfTkFUSVZFPXkKIENPTkZJR19VREJHX1JUQVNfQ09OU09MRT15CiBDT05GSUdfUFBDX1VEQkdfQkVBVD15CisjIENPTkZJR19JUElDIGlzIG5vdCBzZXQKIENPTkZJR19NUElDPXkKICMgQ09ORklHX01QSUNfV0VJUkQgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0k4MjU5IGlzIG5vdCBzZXQKQEAgLTIxOSw3ICsyMzksNiBAQAogIwogIyBDUFUgRnJlcXVlbmN5IGRyaXZlcnMKICMKLSMgQ09ORklHX0NQTTIgaXMgbm90IHNldAogQ09ORklHX0FYT05fUkFNPW0KICMgQ09ORklHX0ZTTF9VTEkxNTc1IGlzIG5vdCBzZXQKIApAQCAtMjM1LDE2ICsyNTQsMjAgQEAKICMgQ09ORklHX0haXzMwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19IWl8xMDAwIGlzIG5vdCBzZXQKIENPTkZJR19IWj0yNTAKKyMgQ09ORklHX1NDSEVEX0hSVElDSyBpcyBub3Qgc2V0CiBDT05GSUdfUFJFRU1QVF9OT05FPXkKICMgQ09ORklHX1BSRUVNUFRfVk9MVU5UQVJZIGlzIG5vdCBzZXQKICMgQ09ORklHX1BSRUVNUFQgaXMgbm90IHNldAotQ09ORklHX1BSRUVNUFRfQktMPXkKIENPTkZJR19CSU5GTVRfRUxGPXkKK0NPTkZJR19DT01QQVRfQklORk1UX0VMRj15CiBDT05GSUdfQklORk1UX01JU0M9bQogQ09ORklHX0ZPUkNFX01BWF9aT05FT1JERVI9OQogQ09ORklHX0hVR0VUTEJfUEFHRV9TSVpFX1ZBUklBQkxFPXkKICMgQ09ORklHX0lPTU1VX1ZNRVJHRSBpcyBub3Qgc2V0CitDT05GSUdfSU9NTVVfSEVMUEVSPXkKIENPTkZJR19BUkNIX0VOQUJMRV9NRU1PUllfSE9UUExVRz15CitDT05GSUdfQVJDSF9IQVNfV0FMS19NRU1PUlk9eQorQ09ORklHX0FSQ0hfRU5BQkxFX01FTU9SWV9IT1RSRU1PVkU9eQogIyBDT05GSUdfS0VYRUMgaXMgbm90IHNldAogIyBDT05GSUdfQ1JBU0hfRFVNUCBpcyBub3Qgc2V0CiBDT05GSUdfSVJRX0FMTF9DUFVTPXkKQEAgLTI2Nyw2ICsyOTAsNyBAQAogQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQPXkKIENPTkZJR19NRU1PUllfSE9UUExVRz15CiBDT05GSUdfTUVNT1JZX0hPVFBMVUdfU1BBUlNFPXkKK0NPTkZJR19NRU1PUllfSE9UUkVNT1ZFPXkKIENPTkZJR19TUExJVF9QVExPQ0tfQ1BVUz00CiBDT05GSUdfTUlHUkFUSU9OPXkKIENPTkZJR19SRVNPVVJDRVNfNjRCSVQ9eQpAQCAtMjc2LDEyICszMDAsMTIgQEAKIENPTkZJR19OT0RFU19TUEFOX09USEVSX05PREVTPXkKIENPTkZJR19QUENfSEFTX0hBU0hfNjRLPXkKIENPTkZJR19QUENfNjRLX1BBR0VTPXkKKyMgQ09ORklHX1BQQ19TVUJQQUdFX1BST1QgaXMgbm90IHNldAogQ09ORklHX1NDSEVEX1NNVD15CiBDT05GSUdfUFJPQ19ERVZJQ0VUUkVFPXkKICMgQ09ORklHX0NNRExJTkVfQk9PTCBpcyBub3Qgc2V0CiAjIENPTkZJR19QTSBpcyBub3Qgc2V0CiBDT05GSUdfU0VDQ09NUD15Ci0jIENPTkZJR19XQU5UX0RFVklDRV9UUkVFIGlzIG5vdCBzZXQKIENPTkZJR19JU0FfRE1BX0FQST15CiAKICMKQEAgLTMxOCw2ICszNDIsNyBAQAogIyBDT05GSUdfWEZSTV9VU0VSIGlzIG5vdCBzZXQKICMgQ09ORklHX1hGUk1fU1VCX1BPTElDWSBpcyBub3Qgc2V0CiAjIENPTkZJR19YRlJNX01JR1JBVEUgaXMgbm90IHNldAorIyBDT05GSUdfWEZSTV9TVEFUSVNUSUNTIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9LRVkgaXMgbm90IHNldAogQ09ORklHX0lORVQ9eQogQ09ORklHX0lQX01VTFRJQ0FTVD15CkBAIC0zNjgsNiArMzkzLDcgQEAKICMgQ09ORklHX05FVFdPUktfU0VDTUFSSyBpcyBub3Qgc2V0CiBDT05GSUdfTkVURklMVEVSPXkKICMgQ09ORklHX05FVEZJTFRFUl9ERUJVRyBpcyBub3Qgc2V0CitDT05GSUdfTkVURklMVEVSX0FEVkFOQ0VEPXkKIAogIwogIyBDb3JlIE5ldGZpbHRlciBDb25maWd1cmF0aW9uCkBAIC0zNzUsNyArNDAxLDYgQEAKIENPTkZJR19ORVRGSUxURVJfTkVUTElOSz1tCiBDT05GSUdfTkVURklMVEVSX05FVExJTktfUVVFVUU9bQogQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LX0xPRz1tCi0jIENPTkZJR19ORl9DT05OVFJBQ0tfRU5BQkxFRCBpcyBub3Qgc2V0CiAjIENPTkZJR19ORl9DT05OVFJBQ0sgaXMgbm90IHNldAogQ09ORklHX05FVEZJTFRFUl9YVEFCTEVTPW0KIENPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX0NMQVNTSUZZPW0KQEAgLTM4MywyMCArNDA4LDI1IEBACiBDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9NQVJLPW0KIENPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX05GUVVFVUU9bQogQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfTkZMT0c9bQorQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfUkFURUVTVD1tCiAjIENPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX1RSQUNFIGlzIG5vdCBzZXQKIENPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX1RDUE1TUz1tCitDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9UQ1BPUFRTVFJJUD1tCiBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0NPTU1FTlQ9bQogQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9EQ0NQPW0KIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfRFNDUD1tCiBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0VTUD1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0lQUkFOR0U9bQogQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9MRU5HVEg9bQogQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9MSU1JVD1tCiBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX01BQz1tCiBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX01BUks9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9PV05FUj1tCiBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1BPTElDWT1tCiBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX01VTFRJUE9SVD1tCiBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1BLVFRZUEU9bQogQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9RVU9UQT1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1JBVEVFU1Q9bQogQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9SRUFMTT1tCiBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1NDVFA9bQogQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9TVEFUSVNUSUM9bQpAQCAtNDExLDIwICs0NDEsMTYgQEAKICMKIENPTkZJR19JUF9ORl9RVUVVRT1tCiBDT05GSUdfSVBfTkZfSVBUQUJMRVM9bQotQ09ORklHX0lQX05GX01BVENIX0lQUkFOR0U9bQotQ09ORklHX0lQX05GX01BVENIX1RPUz1tCiBDT05GSUdfSVBfTkZfTUFUQ0hfUkVDRU5UPW0KIENPTkZJR19JUF9ORl9NQVRDSF9FQ049bQogQ09ORklHX0lQX05GX01BVENIX0FIPW0KIENPTkZJR19JUF9ORl9NQVRDSF9UVEw9bQotQ09ORklHX0lQX05GX01BVENIX09XTkVSPW0KIENPTkZJR19JUF9ORl9NQVRDSF9BRERSVFlQRT1tCiBDT05GSUdfSVBfTkZfRklMVEVSPW0KIENPTkZJR19JUF9ORl9UQVJHRVRfUkVKRUNUPW0KIENPTkZJR19JUF9ORl9UQVJHRVRfTE9HPW0KIENPTkZJR19JUF9ORl9UQVJHRVRfVUxPRz1tCiBDT05GSUdfSVBfTkZfTUFOR0xFPW0KLUNPTkZJR19JUF9ORl9UQVJHRVRfVE9TPW0KIENPTkZJR19JUF9ORl9UQVJHRVRfRUNOPW0KIENPTkZJR19JUF9ORl9UQVJHRVRfVFRMPW0KIENPTkZJR19JUF9ORl9SQVc9bQpAQCAtNDMzLDcgKzQ1OSw3IEBACiBDT05GSUdfSVBfTkZfQVJQX01BTkdMRT1tCiAKICMKLSMgSVB2NjogTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24gKEVYUEVSSU1FTlRBTCkKKyMgSVB2NjogTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24KICMKICMgQ09ORklHX0lQNl9ORl9RVUVVRSBpcyBub3Qgc2V0CiAjIENPTkZJR19JUDZfTkZfSVBUQUJMRVMgaXMgbm90IHNldApAQCAtNDU5LDYgKzQ4NSw3IEBACiAjCiAjIENPTkZJR19ORVRfUEtUR0VOIGlzIG5vdCBzZXQKICMgQ09ORklHX0hBTVJBRElPIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NBTiBpcyBub3Qgc2V0CiAjIENPTkZJR19JUkRBIGlzIG5vdCBzZXQKICMgQ09ORklHX0JUIGlzIG5vdCBzZXQKICMgQ09ORklHX0FGX1JYUlBDIGlzIG5vdCBzZXQKQEAgLTQ2Nyw3ICs0OTQsNyBAQAogIyBXaXJlbGVzcwogIwogIyBDT05GSUdfQ0ZHODAyMTEgaXMgbm90IHNldAotIyBDT05GSUdfV0lSRUxFU1NfRVhUIGlzIG5vdCBzZXQKK0NPTkZJR19XSVJFTEVTU19FWFQ9eQogIyBDT05GSUdfTUFDODAyMTEgaXMgbm90IHNldAogIyBDT05GSUdfSUVFRTgwMjExIGlzIG5vdCBzZXQKICMgQ09ORklHX1JGS0lMTCBpcyBub3Qgc2V0CkBAIC01MDUsNyArNTMyLDcgQEAKIENPTkZJR19CTEtfREVWX1JBTT15CiBDT05GSUdfQkxLX0RFVl9SQU1fQ09VTlQ9MTYKIENPTkZJR19CTEtfREVWX1JBTV9TSVpFPTEzMTA3MgotQ09ORklHX0JMS19ERVZfUkFNX0JMT0NLU0laRT0xMDI0CisjIENPTkZJR19CTEtfREVWX1hJUCBpcyBub3Qgc2V0CiAjIENPTkZJR19DRFJPTV9QS1RDRFZEIGlzIG5vdCBzZXQKICMgQ09ORklHX0FUQV9PVkVSX0VUSCBpcyBub3Qgc2V0CiBDT05GSUdfTUlTQ19ERVZJQ0VTPXkKQEAgLTUxMywxMSArNTQwLDEzIEBACiAjIENPTkZJR19FRVBST01fOTNDWDYgaXMgbm90IHNldAogIyBDT05GSUdfU0dJX0lPQzQgaXMgbm90IHNldAogIyBDT05GSUdfVElGTV9DT1JFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VOQ0xPU1VSRV9TRVJWSUNFUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9JREU9eQogQ09ORklHX0lERT15CiBDT05GSUdfQkxLX0RFVl9JREU9eQogCiAjCi0jIFBsZWFzZSBzZWUgRG9jdW1lbnRhdGlvbi9pZGUudHh0IGZvciBoZWxwL2luZm8gb24gSURFIGRyaXZlcworIyBQbGVhc2Ugc2VlIERvY3VtZW50YXRpb24vaWRlL2lkZS50eHQgZm9yIGhlbHAvaW5mbyBvbiBJREUgZHJpdmVzCiAjCiAjIENPTkZJR19CTEtfREVWX0lERV9TQVRBIGlzIG5vdCBzZXQKIENPTkZJR19CTEtfREVWX0lERURJU0s9eQpAQCAtNTM0LDEyICs1NjMsMTIgQEAKICMKIENPTkZJR19JREVfR0VORVJJQz15CiAjIENPTkZJR19CTEtfREVWX1BMQVRGT1JNIGlzIG5vdCBzZXQKK0NPTkZJR19CTEtfREVWX0lERURNQV9TRkY9eQogCiAjCiAjIFBDSSBJREUgY2hpcHNldHMgc3VwcG9ydAogIwogQ09ORklHX0JMS19ERVZfSURFUENJPXkKLUNPTkZJR19JREVQQ0lfU0hBUkVfSVJRPXkKIENPTkZJR19JREVQQ0lfUENJQlVTX09SREVSPXkKICMgQ09ORklHX0JMS19ERVZfT0ZGQk9BUkQgaXMgbm90IHNldAogQ09ORklHX0JMS19ERVZfR0VORVJJQz15CkBAIC01NzEsNyArNjAwLDYgQEAKICMgQ09ORklHX0JMS19ERVZfVklBODJDWFhYIGlzIG5vdCBzZXQKICMgQ09ORklHX0JMS19ERVZfVEM4NkMwMDEgaXMgbm90IHNldAogQ09ORklHX0JMS19ERVZfQ0VMTEVCPXkKLSMgQ09ORklHX0lERV9BUk0gaXMgbm90IHNldAogQ09ORklHX0JMS19ERVZfSURFRE1BPXkKIENPTkZJR19JREVfQVJDSF9PQlNPTEVURV9JTklUPXkKICMgQ09ORklHX0JMS19ERVZfSEQgaXMgbm90IHNldApAQCAtNjM3LDYgKzY2NSw3IEBACiAjIENPTkZJR19TQ1NJX0lQUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX0lOSVRJTyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX0lOSUExMDAgaXMgbm90IHNldAorIyBDT05GSUdfU0NTSV9NVlNBUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX1NURVggaXMgbm90IHNldAogIyBDT05GSUdfU0NTSV9TWU01M0M4WFhfMiBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX0lQUiBpcyBub3Qgc2V0CkBAIC02ODksNiArNzE4LDcgQEAKICMgQ09ORklHX1BBVEFfTVBJSVggaXMgbm90IHNldAogIyBDT05GSUdfUEFUQV9PTERQSUlYIGlzIG5vdCBzZXQKICMgQ09ORklHX1BBVEFfTkVUQ0VMTCBpcyBub3Qgc2V0CisjIENPTkZJR19QQVRBX05JTkpBMzIgaXMgbm90IHNldAogIyBDT05GSUdfUEFUQV9OUzg3NDEwIGlzIG5vdCBzZXQKICMgQ09ORklHX1BBVEFfTlM4NzQxNSBpcyBub3Qgc2V0CiAjIENPTkZJR19QQVRBX09QVEkgaXMgbm90IHNldApAQCAtNzAzLDYgKzczMyw3IEBACiAjIENPTkZJR19QQVRBX1NJUyBpcyBub3Qgc2V0CiAjIENPTkZJR19QQVRBX1ZJQSBpcyBub3Qgc2V0CiAjIENPTkZJR19QQVRBX1dJTkJPTkQgaXMgbm90IHNldAorIyBDT05GSUdfUEFUQV9QTEFURk9STSBpcyBub3Qgc2V0CiAjIENPTkZJR19QQVRBX1NDQyBpcyBub3Qgc2V0CiBDT05GSUdfTUQ9eQogQ09ORklHX0JMS19ERVZfTUQ9bQpAQCAtNzQ4LDcgKzc3OSw2IEBACiAjIENPTkZJR19FUVVBTElaRVIgaXMgbm90IHNldAogQ09ORklHX1RVTj15CiAjIENPTkZJR19WRVRIIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lQMTAwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19BUkNORVQgaXMgbm90IHNldAogIyBDT05GSUdfUEhZTElCIGlzIG5vdCBzZXQKIENPTkZJR19ORVRfRVRIRVJORVQ9eQpAQCAtNzczLDYgKzgwMyw5IEBACiBDT05GSUdfRTEwMDBfTkFQST15CiAjIENPTkZJR19FMTAwMF9ESVNBQkxFX1BBQ0tFVF9TUExJVCBpcyBub3Qgc2V0CiAjIENPTkZJR19FMTAwMEUgaXMgbm90IHNldAorIyBDT05GSUdfRTEwMDBFX0VOQUJMRUQgaXMgbm90IHNldAorIyBDT05GSUdfSVAxMDAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lHQiBpcyBub3Qgc2V0CiAjIENPTkZJR19OUzgzODIwIGlzIG5vdCBzZXQKICMgQ09ORklHX0hBTUFDSEkgaXMgbm90IHNldAogIyBDT05GSUdfWUVMTE9XRklOIGlzIG5vdCBzZXQKQEAgLTc4OCw2ICs4MjEsNyBAQAogIyBDT05GSUdfQk5YMiBpcyBub3Qgc2V0CiBDT05GSUdfU1BJREVSX05FVD15CiBDT05GSUdfR0VMSUNfTkVUPW0KK0NPTkZJR19HRUxJQ19XSVJFTEVTUz15CiAjIENPTkZJR19RTEEzWFhYIGlzIG5vdCBzZXQKICMgQ09ORklHX0FUTDEgaXMgbm90IHNldAogQ09ORklHX05FVERFVl8xMDAwMD15CkBAIC04MDIsNiArODM2LDcgQEAKICMgQ09ORklHX1BBU0VNSV9NQUMgaXMgbm90IHNldAogIyBDT05GSUdfTUxYNF9DT1JFIGlzIG5vdCBzZXQKICMgQ09ORklHX1RFSFVUSSBpcyBub3Qgc2V0CisjIENPTkZJR19CTlgyWCBpcyBub3Qgc2V0CiAjIENPTkZJR19UUiBpcyBub3Qgc2V0CiAKICMKQEAgLTgyNCw3ICs4NTksNiBAQAogIyBDT05GSUdfUFBQIGlzIG5vdCBzZXQKICMgQ09ORklHX1NMSVAgaXMgbm90IHNldAogIyBDT05GSUdfTkVUX0ZDIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NIQVBFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRDT05TT0xFIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVFBPTEwgaXMgbm90IHNldAogIyBDT05GSUdfTkVUX1BPTExfQ09OVFJPTExFUiBpcyBub3Qgc2V0CkBAIC04ODMsMTYgKzkxNywxNyBAQAogIyBDT05GSUdfRElHSUVQQ0EgaXMgbm90IHNldAogIyBDT05GSUdfTU9YQV9JTlRFTExJTyBpcyBub3Qgc2V0CiAjIENPTkZJR19NT1hBX1NNQVJUSU8gaXMgbm90IHNldAotIyBDT05GSUdfTU9YQV9TTUFSVElPX05FVyBpcyBub3Qgc2V0CiAjIENPTkZJR19JU0kgaXMgbm90IHNldAogIyBDT05GSUdfU1lOQ0xJTksgaXMgbm90IHNldAogIyBDT05GSUdfU1lOQ0xJTktNUCBpcyBub3Qgc2V0CiAjIENPTkZJR19TWU5DTElOS19HVCBpcyBub3Qgc2V0CiAjIENPTkZJR19OX0hETEMgaXMgbm90IHNldAorIyBDT05GSUdfUklTQ09NOCBpcyBub3Qgc2V0CiAjIENPTkZJR19TUEVDSUFMSVggaXMgbm90IHNldAogIyBDT05GSUdfU1ggaXMgbm90IHNldAogIyBDT05GSUdfUklPIGlzIG5vdCBzZXQKICMgQ09ORklHX1NUQUxEUlYgaXMgbm90IHNldAorIyBDT05GSUdfTk9aT01JIGlzIG5vdCBzZXQKIAogIwogIyBTZXJpYWwgZHJpdmVycwpAQCAtOTc2LDEzICsxMDExLDEyIEBACiAjCiAjIE1pc2NlbGxhbmVvdXMgSTJDIENoaXAgc3VwcG9ydAogIwotIyBDT05GSUdfU0VOU09SU19EUzEzMzcgaXMgbm90IHNldAotIyBDT05GSUdfU0VOU09SU19EUzEzNzQgaXMgbm90IHNldAogIyBDT05GSUdfRFMxNjgyIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfRUVQUk9NIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfUENGODU3NCBpcyBub3Qgc2V0Ci0jIENPTkZJR19TRU5TT1JTX1BDQTk1MzkgaXMgbm90IHNldAorIyBDT05GSUdfUENGODU3NSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1BDRjg1OTEgaXMgbm90IHNldAorIyBDT05GSUdfVFBTNjUwMTAgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19NQVg2ODc1IGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVFNMMjU1MCBpcyBub3Qgc2V0CiAjIENPTkZJR19JMkNfREVCVUdfQ09SRSBpcyBub3Qgc2V0CkBAIC05OTgsNiArMTAzMiw3IEBACiAjIENPTkZJR19XMSBpcyBub3Qgc2V0CiAjIENPTkZJR19QT1dFUl9TVVBQTFkgaXMgbm90IHNldAogIyBDT05GSUdfSFdNT04gaXMgbm90IHNldAorIyBDT05GSUdfVEhFUk1BTCBpcyBub3Qgc2V0CiBDT05GSUdfV0FUQ0hET0c9eQogIyBDT05GSUdfV0FUQ0hET0dfTk9XQVlPVVQgaXMgbm90IHNldAogCkBAIC0xMDgyLDYgKzExMTcsNyBAQAogQ09ORklHX1VTQl9BUkNIX0hBU19FSENJPXkKIENPTkZJR19VU0I9bQogIyBDT05GSUdfVVNCX0RFQlVHIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9BTk5PVU5DRV9ORVdfREVWSUNFUyBpcyBub3Qgc2V0CiAKICMKICMgTWlzY2VsbGFuZW91cyBVU0Igb3B0aW9ucwpAQCAtMTA5NSwxMCArMTEzMSwxMCBAQAogIyBVU0IgSG9zdCBDb250cm9sbGVyIERyaXZlcnMKICMKIENPTkZJR19VU0JfRUhDSV9IQ0Q9bQotIyBDT05GSUdfVVNCX0VIQ0lfU1BMSVRfSVNPIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9FSENJX1JPT1RfSFVCX1RUIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9FSENJX1RUX05FV1NDSEVEIGlzIG5vdCBzZXQKIENPTkZJR19VU0JfRUhDSV9CSUdfRU5ESUFOX01NSU89eQorIyBDT05GSUdfVVNCX0VIQ0lfSENEX1BQQ19PRiBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfSVNQMTE2WF9IQ0QgaXMgbm90IHNldAogQ09ORklHX1VTQl9PSENJX0hDRD1tCiBDT05GSUdfVVNCX09IQ0lfSENEX1BQQ19PRj15CkBAIC0xMTQ5LDEwICsxMTg1LDYgQEAKICMKICMgVVNCIHBvcnQgZHJpdmVycwogIwotCi0jCi0jIFVTQiBTZXJpYWwgQ29udmVydGVyIHN1cHBvcnQKLSMKICMgQ09ORklHX1VTQl9TRVJJQUwgaXMgbm90IHNldAogCiAjCkBAIC0xMTc4LDE2ICsxMjEwLDkgQEAKICMgQ09ORklHX1VTQl9UUkFOQ0VWSUJSQVRPUiBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfSU9XQVJSSU9SIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9URVNUIGlzIG5vdCBzZXQKLQotIwotIyBVU0IgRFNMIG1vZGVtIHN1cHBvcnQKLSMKLQotIwotIyBVU0IgR2FkZ2V0IFN1cHBvcnQKLSMKICMgQ09ORklHX1VTQl9HQURHRVQgaXMgbm90IHNldAogIyBDT05GSUdfTU1DIGlzIG5vdCBzZXQKKyMgQ09ORklHX01FTVNUSUNLIGlzIG5vdCBzZXQKICMgQ09ORklHX05FV19MRURTIGlzIG5vdCBzZXQKIENPTkZJR19JTkZJTklCQU5EPW0KIENPTkZJR19JTkZJTklCQU5EX1VTRVJfTUFEPW0KQEAgLTExOTgsNiArMTIyMyw3IEBACiBDT05GSUdfSU5GSU5JQkFORF9NVEhDQV9ERUJVRz15CiAjIENPTkZJR19JTkZJTklCQU5EX0FNU08xMTAwIGlzIG5vdCBzZXQKICMgQ09ORklHX01MWDRfSU5GSU5JQkFORCBpcyBub3Qgc2V0CisjIENPTkZJR19JTkZJTklCQU5EX05FUyBpcyBub3Qgc2V0CiBDT05GSUdfSU5GSU5JQkFORF9JUE9JQj1tCiAjIENPTkZJR19JTkZJTklCQU5EX0lQT0lCX0NNIGlzIG5vdCBzZXQKIENPTkZJR19JTkZJTklCQU5EX0lQT0lCX0RFQlVHPXkKQEAgLTEyMTEsNyArMTIzNyw5IEBACiAjCiAjIENPTkZJR19FREFDX0RFQlVHIGlzIG5vdCBzZXQKIENPTkZJR19FREFDX01NX0VEQUM9eQorQ09ORklHX0VEQUNfQ0VMTD15CiAjIENPTkZJR19SVENfQ0xBU1MgaXMgbm90IHNldAorIyBDT05GSUdfRE1BREVWSUNFUyBpcyBub3Qgc2V0CiAKICMKICMgVXNlcnNwYWNlIEkvTwpAQCAtMTIzOSwxMiArMTI2NywxMCBAQAogIyBDT05GSUdfWEZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0dGUzJfRlMgaXMgbm90IHNldAogIyBDT05GSUdfT0NGUzJfRlMgaXMgbm90IHNldAotIyBDT05GSUdfTUlOSVhfRlMgaXMgbm90IHNldAotIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAorQ09ORklHX0ROT1RJRlk9eQogQ09ORklHX0lOT1RJRlk9eQogQ09ORklHX0lOT1RJRllfVVNFUj15CiAjIENPTkZJR19RVU9UQSBpcyBub3Qgc2V0Ci1DT05GSUdfRE5PVElGWT15CiAjIENPTkZJR19BVVRPRlNfRlMgaXMgbm90IHNldAogQ09ORklHX0FVVE9GUzRfRlM9bQogIyBDT05GSUdfRlVTRV9GUyBpcyBub3Qgc2V0CkBAIC0xMjkzLDggKzEzMTksMTAgQEAKICMgQ09ORklHX0VGU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUkFNRlMgaXMgbm90IHNldAogIyBDT05GSUdfVlhGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19IUEZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1FOWDRGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TWVNWX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1VGU19GUyBpcyBub3Qgc2V0CiBDT05GSUdfTkVUV09SS19GSUxFU1lTVEVNUz15CkBAIC0xMzgyLDcgKzE0MTAsNiBAQAogIyBDT05GSUdfTkxTX0tPSThfVSBpcyBub3Qgc2V0CiAjIENPTkZJR19OTFNfVVRGOCBpcyBub3Qgc2V0CiAjIENPTkZJR19ETE0gaXMgbm90IHNldAotIyBDT05GSUdfVUNDX1NMT1cgaXMgbm90IHNldAogCiAjCiAjIExpYnJhcnkgcm91dGluZXMKQEAgLTE0MDQsMTEgKzE0MzEsNiBAQAogQ09ORklHX0hBU19JT01FTT15CiBDT05GSUdfSEFTX0lPUE9SVD15CiBDT05GSUdfSEFTX0RNQT15Ci1DT05GSUdfSU5TVFJVTUVOVEFUSU9OPXkKLUNPTkZJR19QUk9GSUxJTkc9eQotQ09ORklHX09QUk9GSUxFPW0KLSMgQ09ORklHX0tQUk9CRVMgaXMgbm90IHNldAotIyBDT05GSUdfTUFSS0VSUyBpcyBub3Qgc2V0CiAKICMKICMgS2VybmVsIGhhY2tpbmcKQEAgLTE0MjcsNiArMTQ0OSw3IEBACiAjIENPTkZJR19TQ0hFRFNUQVRTIGlzIG5vdCBzZXQKICMgQ09ORklHX1RJTUVSX1NUQVRTIGlzIG5vdCBzZXQKICMgQ09ORklHX1NMVUJfREVCVUdfT04gaXMgbm90IHNldAorIyBDT05GSUdfU0xVQl9TVEFUUyBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19SVF9NVVRFWEVTIGlzIG5vdCBzZXQKICMgQ09ORklHX1JUX01VVEVYX1RFU1RFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19TUElOTE9DSyBpcyBub3Qgc2V0CkBAIC0xNDM5LDkgKzE0NjIsOSBAQAogIyBDT05GSUdfREVCVUdfVk0gaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfTElTVCBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19TRyBpcyBub3Qgc2V0Ci0jIENPTkZJR19GT1JDRURfSU5MSU5JTkcgaXMgbm90IHNldAogIyBDT05GSUdfQk9PVF9QUklOVEtfREVMQVkgaXMgbm90IHNldAogIyBDT05GSUdfUkNVX1RPUlRVUkVfVEVTVCBpcyBub3Qgc2V0CisjIENPTkZJR19CQUNLVFJBQ0VfU0VMRl9URVNUIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZBVUxUX0lOSkVDVElPTiBpcyBub3Qgc2V0CiAjIENPTkZJR19TQU1QTEVTIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NUQUNLT1ZFUkZMT1cgaXMgbm90IHNldApAQCAtMTQ2NCw3ICsxNDg3LDkgQEAKICMgQ09ORklHX1NFQ1VSSVRZX0ZJTEVfQ0FQQUJJTElUSUVTIGlzIG5vdCBzZXQKIENPTkZJR19DUllQVE89eQogQ09ORklHX0NSWVBUT19BTEdBUEk9eQorQ09ORklHX0NSWVBUT19BRUFEPW0KIENPTkZJR19DUllQVE9fQkxLQ0lQSEVSPW0KKyMgQ09ORklHX0NSWVBUT19TRVFJViBpcyBub3Qgc2V0CiBDT05GSUdfQ1JZUFRPX0hBU0g9eQogQ09ORklHX0NSWVBUT19NQU5BR0VSPXkKIENPTkZJR19DUllQVE9fSE1BQz15CkBAIC0xNDgzLDYgKzE1MDgsOSBAQAogQ09ORklHX0NSWVBUT19QQ0JDPW0KICMgQ09ORklHX0NSWVBUT19MUlcgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX1hUUyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ1RSIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19HQ00gaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NDTSBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fQ1JZUFREIGlzIG5vdCBzZXQKIENPTkZJR19DUllQVE9fREVTPW0KICMgQ09ORklHX0NSWVBUT19GQ1JZUFQgaXMgbm90IHNldApAQCAtMTQ5NywxMSArMTUyNSwxNCBAQAogIyBDT05GSUdfQ1JZUFRPX0tIQVpBRCBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fQU5VQklTIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19TRUVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19TQUxTQTIwIGlzIG5vdCBzZXQKIENPTkZJR19DUllQVE9fREVGTEFURT1tCiAjIENPTkZJR19DUllQVE9fTUlDSEFFTF9NSUMgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0NSQzMyQyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fQ0FNRUxMSUEgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX1RFU1QgaXMgbm90IHNldAotIyBDT05GSUdfQ1JZUFRPX0FVVEhFTkMgaXMgbm90IHNldAorQ09ORklHX0NSWVBUT19BVVRIRU5DPW0KKyMgQ09ORklHX0NSWVBUT19MWk8gaXMgbm90IHNldAogQ09ORklHX0NSWVBUT19IVz15CisjIENPTkZJR19DUllQVE9fREVWX0hJRk5fNzk1WCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfQ0xPQ0sgaXMgbm90IHNldApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvY2VsbGViX2RlZmNvbmZpZyBiL2FyY2gvcG93ZXJwYy9jb25maWdzL2NlbGxlYl9kZWZjb25maWcKaW5kZXggOWVkMmUwOS4uOWJhM2M2ZiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvY2VsbGViX2RlZmNvbmZpZworKysgYi9hcmNoL3Bvd2VycGMvY29uZmlncy9jZWxsZWJfZGVmY29uZmlnCkBAIC0xLDcgKzEsNyBAQAogIwogIyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBtYWtlIGNvbmZpZzogZG9uJ3QgZWRpdAotIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjI0LXJjNAotIyBUaHUgRGVjICA2IDE2OjQ4OjA3IDIwMDcKKyMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4yNS1yYzYKKyMgVGh1IE1hciAyMCAxMDozMjo0NSAyMDA4CiAjCiBDT05GSUdfUFBDNjQ9eQogCkBAIC0yOCw2ICsyOCw3IEBACiBDT05GSUdfR0VORVJJQ19USU1FX1ZTWVNDQUxMPXkKIENPTkZJR19HRU5FUklDX0NMT0NLRVZFTlRTPXkKIENPTkZJR19HRU5FUklDX0hBUkRJUlFTPXkKK0NPTkZJR19IQVZFX1NFVFVQX1BFUl9DUFVfQVJFQT15CiBDT05GSUdfSVJRX1BFUl9DUFU9eQogQ09ORklHX1JXU0VNX1hDSEdBRERfQUxHT1JJVEhNPXkKIENPTkZJR19BUkNIX0hBU19JTE9HMl9VMzI9eQpAQCAtNjksMTYgKzcwLDIyIEBACiAjIENPTkZJR19QT1NJWF9NUVVFVUUgaXMgbm90IHNldAogIyBDT05GSUdfQlNEX1BST0NFU1NfQUNDVCBpcyBub3Qgc2V0CiAjIENPTkZJR19UQVNLU1RBVFMgaXMgbm90IHNldAotIyBDT05GSUdfVVNFUl9OUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19QSURfTlMgaXMgbm90IHNldAogIyBDT05GSUdfQVVESVQgaXMgbm90IHNldAogQ09ORklHX0lLQ09ORklHPXkKIENPTkZJR19JS0NPTkZJR19QUk9DPXkKIENPTkZJR19MT0dfQlVGX1NISUZUPTE1CiAjIENPTkZJR19DR1JPVVBTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZBSVJfR1JPVVBfU0NIRUQgaXMgbm90IHNldAorIyBDT05GSUdfR1JPVVBfU0NIRUQgaXMgbm90IHNldAorIyBDT05GSUdfVVNFUl9TQ0hFRCBpcyBub3Qgc2V0CisjIENPTkZJR19DR1JPVVBfU0NIRUQgaXMgbm90IHNldAogQ09ORklHX1NZU0ZTX0RFUFJFQ0FURUQ9eQorQ09ORklHX1NZU0ZTX0RFUFJFQ0FURURfVjI9eQogIyBDT05GSUdfUkVMQVkgaXMgbm90IHNldAorQ09ORklHX05BTUVTUEFDRVM9eQorIyBDT05GSUdfVVRTX05TIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lQQ19OUyBpcyBub3Qgc2V0CisjIENPTkZJR19VU0VSX05TIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BJRF9OUyBpcyBub3Qgc2V0CiBDT05GSUdfQkxLX0RFVl9JTklUUkQ9eQogQ09ORklHX0lOSVRSQU1GU19TT1VSQ0U9IiIKIENPTkZJR19DQ19PUFRJTUlaRV9GT1JfU0laRT15CkBAIC05MiwxMSArOTksMTMgQEAKIENPTkZJR19QUklOVEs9eQogQ09ORklHX0JVRz15CiBDT05GSUdfRUxGX0NPUkU9eQorIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0CiBDT05GSUdfQkFTRV9GVUxMPXkKIENPTkZJR19GVVRFWD15CiBDT05GSUdfQU5PTl9JTk9ERVM9eQogQ09ORklHX0VQT0xMPXkKIENPTkZJR19TSUdOQUxGRD15CitDT05GSUdfVElNRVJGRD15CiBDT05GSUdfRVZFTlRGRD15CiBDT05GSUdfU0hNRU09eQogQ09ORklHX1ZNX0VWRU5UX0NPVU5URVJTPXkKQEAgLTEwNCw2ICsxMTMsMTQgQEAKICMgQ09ORklHX1NMQUIgaXMgbm90IHNldAogQ09ORklHX1NMVUI9eQogIyBDT05GSUdfU0xPQiBpcyBub3Qgc2V0CisjIENPTkZJR19QUk9GSUxJTkcgaXMgbm90IHNldAorIyBDT05GSUdfTUFSS0VSUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9PUFJPRklMRT15CisjIENPTkZJR19LUFJPQkVTIGlzIG5vdCBzZXQKK0NPTkZJR19IQVZFX0tQUk9CRVM9eQorQ09ORklHX0hBVkVfS1JFVFBST0JFUz15CitDT05GSUdfUFJPQ19QQUdFX01PTklUT1I9eQorQ09ORklHX1NMQUJJTkZPPXkKIENPTkZJR19SVF9NVVRFWEVTPXkKICMgQ09ORklHX1RJTllfU0hNRU0gaXMgbm90IHNldAogQ09ORklHX0JBU0VfU01BTEw9MApAQCAtMTMxLDYgKzE0OCw3IEBACiAjIENPTkZJR19ERUZBVUxUX0NGUSBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUZBVUxUX05PT1AgaXMgbm90IHNldAogQ09ORklHX0RFRkFVTFRfSU9TQ0hFRD0iYW50aWNpcGF0b3J5IgorQ09ORklHX0NMQVNTSUNfUkNVPXkKIAogIwogIyBQbGF0Zm9ybSBzdXBwb3J0CkBAIC0xNDEsOCArMTU5LDggQEAKICMgQ09ORklHX1BQQ184Nnh4IGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19QU0VSSUVTIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19JU0VSSUVTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1BQQ19NUEM1Mnh4IGlzIG5vdCBzZXQKLSMgQ09ORklHX1BQQ19NUEM1MjAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ19NUEM1MTJ4IGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ19NUEM1MTIxIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19QTUFDIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19NQVBMRSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfUEFTRU1JIGlzIG5vdCBzZXQKQEAgLTE2NCw2ICsxODIsNyBAQAogQ09ORklHX1BQQ19OQVRJVkU9eQogQ09ORklHX1VEQkdfUlRBU19DT05TT0xFPXkKIENPTkZJR19QUENfVURCR19CRUFUPXkKKyMgQ09ORklHX0lQSUMgaXMgbm90IHNldAogQ09ORklHX01QSUM9eQogIyBDT05GSUdfTVBJQ19XRUlSRCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfSTgyNTkgaXMgbm90IHNldApAQCAtMTc3LDcgKzE5Niw2IEBACiBDT05GSUdfUFBDX0lORElSRUNUX0lPPXkKIENPTkZJR19HRU5FUklDX0lPTUFQPXkKICMgQ09ORklHX0NQVV9GUkVRIGlzIG5vdCBzZXQKLSMgQ09ORklHX0NQTTIgaXMgbm90IHNldAogIyBDT05GSUdfRlNMX1VMSTE1NzUgaXMgbm90IHNldAogCiAjCkBAIC0xOTIsMTYgKzIxMCwyMCBAQAogIyBDT05GSUdfSFpfMzAwIGlzIG5vdCBzZXQKICMgQ09ORklHX0haXzEwMDAgaXMgbm90IHNldAogQ09ORklHX0haPTI1MAorIyBDT05GSUdfU0NIRURfSFJUSUNLIGlzIG5vdCBzZXQKIENPTkZJR19QUkVFTVBUX05PTkU9eQogIyBDT05GSUdfUFJFRU1QVF9WT0xVTlRBUlkgaXMgbm90IHNldAogIyBDT05GSUdfUFJFRU1QVCBpcyBub3Qgc2V0Ci1DT05GSUdfUFJFRU1QVF9CS0w9eQogQ09ORklHX0JJTkZNVF9FTEY9eQorQ09ORklHX0NPTVBBVF9CSU5GTVRfRUxGPXkKIENPTkZJR19CSU5GTVRfTUlTQz1tCiBDT05GSUdfRk9SQ0VfTUFYX1pPTkVPUkRFUj0xMwogQ09ORklHX0hVR0VUTEJfUEFHRV9TSVpFX1ZBUklBQkxFPXkKICMgQ09ORklHX0lPTU1VX1ZNRVJHRSBpcyBub3Qgc2V0CitDT05GSUdfSU9NTVVfSEVMUEVSPXkKIENPTkZJR19BUkNIX0VOQUJMRV9NRU1PUllfSE9UUExVRz15CitDT05GSUdfQVJDSF9IQVNfV0FMS19NRU1PUlk9eQorQ09ORklHX0FSQ0hfRU5BQkxFX01FTU9SWV9IT1RSRU1PVkU9eQogQ09ORklHX0tFWEVDPXkKICMgQ09ORklHX0NSQVNIX0RVTVAgaXMgbm90IHNldAogIyBDT05GSUdfSVJRX0FMTF9DUFVTIGlzIG5vdCBzZXQKQEAgLTIyMyw2ICsyNDUsNyBAQAogQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQPXkKIENPTkZJR19NRU1PUllfSE9UUExVRz15CiBDT05GSUdfTUVNT1JZX0hPVFBMVUdfU1BBUlNFPXkKKyMgQ09ORklHX01FTU9SWV9IT1RSRU1PVkUgaXMgbm90IHNldAogQ09ORklHX1NQTElUX1BUTE9DS19DUFVTPTQKIENPTkZJR19NSUdSQVRJT049eQogQ09ORklHX1JFU09VUkNFU182NEJJVD15CkBAIC0yMzcsNyArMjYwLDYgQEAKICMgQ09ORklHX0NNRExJTkVfQk9PTCBpcyBub3Qgc2V0CiAjIENPTkZJR19QTSBpcyBub3Qgc2V0CiBDT05GSUdfU0VDQ09NUD15Ci0jIENPTkZJR19XQU5UX0RFVklDRV9UUkVFIGlzIG5vdCBzZXQKIENPTkZJR19JU0FfRE1BX0FQST15CiAKICMKQEAgLTI3Myw2ICsyOTUsNyBAQAogIyBDT05GSUdfWEZSTV9VU0VSIGlzIG5vdCBzZXQKICMgQ09ORklHX1hGUk1fU1VCX1BPTElDWSBpcyBub3Qgc2V0CiAjIENPTkZJR19YRlJNX01JR1JBVEUgaXMgbm90IHNldAorIyBDT05GSUdfWEZSTV9TVEFUSVNUSUNTIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9LRVkgaXMgbm90IHNldAogQ09ORklHX0lORVQ9eQogQ09ORklHX0lQX01VTFRJQ0FTVD15CkBAIC0zMjAsMTIgKzM0MywxMyBAQAogIyBDT05GSUdfTkVUV09SS19TRUNNQVJLIGlzIG5vdCBzZXQKIENPTkZJR19ORVRGSUxURVI9eQogIyBDT05GSUdfTkVURklMVEVSX0RFQlVHIGlzIG5vdCBzZXQKK0NPTkZJR19ORVRGSUxURVJfQURWQU5DRUQ9eQogCiAjCiAjIENvcmUgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24KICMKLSMgQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LIGlzIG5vdCBzZXQKLSMgQ09ORklHX05GX0NPTk5UUkFDS19FTkFCTEVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LX1FVRVVFIGlzIG5vdCBzZXQKKyMgQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LX0xPRyBpcyBub3Qgc2V0CiAjIENPTkZJR19ORl9DT05OVFJBQ0sgaXMgbm90IHNldAogIyBDT05GSUdfTkVURklMVEVSX1hUQUJMRVMgaXMgbm90IHNldAogCkBAIC0zMzcsNyArMzYxLDcgQEAKICMgQ09ORklHX0lQX05GX0FSUFRBQkxFUyBpcyBub3Qgc2V0CiAKICMKLSMgSVB2NjogTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24gKEVYUEVSSU1FTlRBTCkKKyMgSVB2NjogTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24KICMKICMgQ09ORklHX0lQNl9ORl9RVUVVRSBpcyBub3Qgc2V0CiAjIENPTkZJR19JUDZfTkZfSVBUQUJMRVMgaXMgbm90IHNldApAQCAtMzYyLDYgKzM4Niw3IEBACiAjCiAjIENPTkZJR19ORVRfUEtUR0VOIGlzIG5vdCBzZXQKICMgQ09ORklHX0hBTVJBRElPIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NBTiBpcyBub3Qgc2V0CiAjIENPTkZJR19JUkRBIGlzIG5vdCBzZXQKICMgQ09ORklHX0JUIGlzIG5vdCBzZXQKICMgQ09ORklHX0FGX1JYUlBDIGlzIG5vdCBzZXQKQEAgLTQwOCw3ICs0MzMsNyBAQAogQ09ORklHX0JMS19ERVZfUkFNPXkKIENPTkZJR19CTEtfREVWX1JBTV9DT1VOVD0xNgogQ09ORklHX0JMS19ERVZfUkFNX1NJWkU9MTMxMDcyCi1DT05GSUdfQkxLX0RFVl9SQU1fQkxPQ0tTSVpFPTEwMjQKKyMgQ09ORklHX0JMS19ERVZfWElQIGlzIG5vdCBzZXQKICMgQ09ORklHX0NEUk9NX1BLVENEVkQgaXMgbm90IHNldAogIyBDT05GSUdfQVRBX09WRVJfRVRIIGlzIG5vdCBzZXQKIENPTkZJR19NSVNDX0RFVklDRVM9eQpAQCAtNDE2LDE2ICs0NDEsMTkgQEAKICMgQ09ORklHX0VFUFJPTV85M0NYNiBpcyBub3Qgc2V0CiAjIENPTkZJR19TR0lfSU9DNCBpcyBub3Qgc2V0CiAjIENPTkZJR19USUZNX0NPUkUgaXMgbm90IHNldAorIyBDT05GSUdfRU5DTE9TVVJFX1NFUlZJQ0VTIGlzIG5vdCBzZXQKK0NPTkZJR19IQVZFX0lERT15CiBDT05GSUdfSURFPXkKIENPTkZJR19CTEtfREVWX0lERT15CiAKICMKLSMgUGxlYXNlIHNlZSBEb2N1bWVudGF0aW9uL2lkZS50eHQgZm9yIGhlbHAvaW5mbyBvbiBJREUgZHJpdmVzCisjIFBsZWFzZSBzZWUgRG9jdW1lbnRhdGlvbi9pZGUvaWRlLnR4dCBmb3IgaGVscC9pbmZvIG9uIElERSBkcml2ZXMKICMKICMgQ09ORklHX0JMS19ERVZfSURFX1NBVEEgaXMgbm90IHNldAogQ09ORklHX0JMS19ERVZfSURFRElTSz15CiBDT05GSUdfSURFRElTS19NVUxUSV9NT0RFPXkKIENPTkZJR19CTEtfREVWX0lERUNEPW0KK0NPTkZJR19CTEtfREVWX0lERUNEX1ZFUkJPU0VfRVJST1JTPXkKICMgQ09ORklHX0JMS19ERVZfSURFVEFQRSBpcyBub3Qgc2V0CiAjIENPTkZJR19CTEtfREVWX0lERUZMT1BQWSBpcyBub3Qgc2V0CiAjIENPTkZJR19CTEtfREVWX0lERVNDU0kgaXMgbm90IHNldApAQCAtNDM3LDEyICs0NjUsMTIgQEAKICMKIENPTkZJR19JREVfR0VORVJJQz15CiAjIENPTkZJR19CTEtfREVWX1BMQVRGT1JNIGlzIG5vdCBzZXQKK0NPTkZJR19CTEtfREVWX0lERURNQV9TRkY9eQogCiAjCiAjIFBDSSBJREUgY2hpcHNldHMgc3VwcG9ydAogIwogQ09ORklHX0JMS19ERVZfSURFUENJPXkKLUNPTkZJR19JREVQQ0lfU0hBUkVfSVJRPXkKIENPTkZJR19JREVQQ0lfUENJQlVTX09SREVSPXkKICMgQ09ORklHX0JMS19ERVZfT0ZGQk9BUkQgaXMgbm90IHNldAogQ09ORklHX0JMS19ERVZfR0VORVJJQz15CkBAIC00NzQsNyArNTAyLDYgQEAKICMgQ09ORklHX0JMS19ERVZfVklBODJDWFhYIGlzIG5vdCBzZXQKICMgQ09ORklHX0JMS19ERVZfVEM4NkMwMDEgaXMgbm90IHNldAogQ09ORklHX0JMS19ERVZfQ0VMTEVCPXkKLSMgQ09ORklHX0lERV9BUk0gaXMgbm90IHNldAogQ09ORklHX0JMS19ERVZfSURFRE1BPXkKIENPTkZJR19JREVfQVJDSF9PQlNPTEVURV9JTklUPXkKICMgQ09ORklHX0JMS19ERVZfSEQgaXMgbm90IHNldApAQCAtNTQwLDYgKzU2Nyw3IEBACiAjIENPTkZJR19TQ1NJX0lQUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX0lOSVRJTyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX0lOSUExMDAgaXMgbm90IHNldAorIyBDT05GSUdfU0NTSV9NVlNBUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX1NURVggaXMgbm90IHNldAogIyBDT05GSUdfU0NTSV9TWU01M0M4WFhfMiBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX1FMT0dJQ18xMjgwIGlzIG5vdCBzZXQKQEAgLTU4OSw3ICs2MTcsNiBAQAogIyBDT05GSUdfRVFVQUxJWkVSIGlzIG5vdCBzZXQKICMgQ09ORklHX1RVTiBpcyBub3Qgc2V0CiAjIENPTkZJR19WRVRIIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lQMTAwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19BUkNORVQgaXMgbm90IHNldAogIyBDT05GSUdfUEhZTElCIGlzIG5vdCBzZXQKIENPTkZJR19ORVRfRVRIRVJORVQ9eQpAQCAtNjEyLDYgKzYzOSw5IEBACiAjIENPTkZJR19ETDJLIGlzIG5vdCBzZXQKICMgQ09ORklHX0UxMDAwIGlzIG5vdCBzZXQKICMgQ09ORklHX0UxMDAwRSBpcyBub3Qgc2V0CisjIENPTkZJR19FMTAwMEVfRU5BQkxFRCBpcyBub3Qgc2V0CisjIENPTkZJR19JUDEwMDAgaXMgbm90IHNldAorIyBDT05GSUdfSUdCIGlzIG5vdCBzZXQKICMgQ09ORklHX05TODM4MjAgaXMgbm90IHNldAogIyBDT05GSUdfSEFNQUNISSBpcyBub3Qgc2V0CiAjIENPTkZJR19ZRUxMT1dGSU4gaXMgbm90IHNldApAQCAtNjM4LDYgKzY2OCw3IEBACiAjIENPTkZJR19QQVNFTUlfTUFDIGlzIG5vdCBzZXQKICMgQ09ORklHX01MWDRfQ09SRSBpcyBub3Qgc2V0CiAjIENPTkZJR19URUhVVEkgaXMgbm90IHNldAorIyBDT05GSUdfQk5YMlggaXMgbm90IHNldAogIyBDT05GSUdfVFIgaXMgbm90IHNldAogCiAjCkBAIC02NjAsNyArNjkxLDYgQEAKICMgQ09ORklHX1BQUCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTElQIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9GQyBpcyBub3Qgc2V0Ci0jIENPTkZJR19TSEFQRVIgaXMgbm90IHNldAogIyBDT05GSUdfTkVUQ09OU09MRSBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRQT0xMIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9QT0xMX0NPTlRST0xMRVIgaXMgbm90IHNldApAQCAtNzE5LDE2ICs3NDksMTcgQEAKICMgQ09ORklHX0RJR0lFUENBIGlzIG5vdCBzZXQKICMgQ09ORklHX01PWEFfSU5URUxMSU8gaXMgbm90IHNldAogIyBDT05GSUdfTU9YQV9TTUFSVElPIGlzIG5vdCBzZXQKLSMgQ09ORklHX01PWEFfU01BUlRJT19ORVcgaXMgbm90IHNldAogIyBDT05GSUdfSVNJIGlzIG5vdCBzZXQKICMgQ09ORklHX1NZTkNMSU5LIGlzIG5vdCBzZXQKICMgQ09ORklHX1NZTkNMSU5LTVAgaXMgbm90IHNldAogIyBDT05GSUdfU1lOQ0xJTktfR1QgaXMgbm90IHNldAogIyBDT05GSUdfTl9IRExDIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JJU0NPTTggaXMgbm90IHNldAogIyBDT05GSUdfU1BFQ0lBTElYIGlzIG5vdCBzZXQKICMgQ09ORklHX1NYIGlzIG5vdCBzZXQKICMgQ09ORklHX1JJTyBpcyBub3Qgc2V0CiAjIENPTkZJR19TVEFMRFJWIGlzIG5vdCBzZXQKKyMgQ09ORklHX05PWk9NSSBpcyBub3Qgc2V0CiAKICMKICMgU2VyaWFsIGRyaXZlcnMKQEAgLTgwMiwxMyArODMzLDEyIEBACiAjCiAjIE1pc2NlbGxhbmVvdXMgSTJDIENoaXAgc3VwcG9ydAogIwotIyBDT05GSUdfU0VOU09SU19EUzEzMzcgaXMgbm90IHNldAotIyBDT05GSUdfU0VOU09SU19EUzEzNzQgaXMgbm90IHNldAogIyBDT05GSUdfRFMxNjgyIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfRUVQUk9NIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfUENGODU3NCBpcyBub3Qgc2V0Ci0jIENPTkZJR19TRU5TT1JTX1BDQTk1MzkgaXMgbm90IHNldAorIyBDT05GSUdfUENGODU3NSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1BDRjg1OTEgaXMgbm90IHNldAorIyBDT05GSUdfVFBTNjUwMTAgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19NQVg2ODc1IGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVFNMMjU1MCBpcyBub3Qgc2V0CiAjIENPTkZJR19JMkNfREVCVUdfQ09SRSBpcyBub3Qgc2V0CkBAIC04MjQsNiArODU0LDcgQEAKICMgQ09ORklHX1cxIGlzIG5vdCBzZXQKICMgQ09ORklHX1BPV0VSX1NVUFBMWSBpcyBub3Qgc2V0CiAjIENPTkZJR19IV01PTiBpcyBub3Qgc2V0CisjIENPTkZJR19USEVSTUFMIGlzIG5vdCBzZXQKIENPTkZJR19XQVRDSERPRz15CiAjIENPTkZJR19XQVRDSERPR19OT1dBWU9VVCBpcyBub3Qgc2V0CiAKQEAgLTkwNSw2ICs5MzYsNyBAQAogQ09ORklHX1VTQl9BUkNIX0hBU19FSENJPXkKIENPTkZJR19VU0I9eQogIyBDT05GSUdfVVNCX0RFQlVHIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9BTk5PVU5DRV9ORVdfREVWSUNFUyBpcyBub3Qgc2V0CiAKICMKICMgTWlzY2VsbGFuZW91cyBVU0Igb3B0aW9ucwpAQCAtOTE4LDEwICs5NTAsMTAgQEAKICMgVVNCIEhvc3QgQ29udHJvbGxlciBEcml2ZXJzCiAjCiBDT05GSUdfVVNCX0VIQ0lfSENEPW0KLSMgQ09ORklHX1VTQl9FSENJX1NQTElUX0lTTyBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfRUhDSV9ST09UX0hVQl9UVCBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfRUhDSV9UVF9ORVdTQ0hFRCBpcyBub3Qgc2V0CiBDT05GSUdfVVNCX0VIQ0lfQklHX0VORElBTl9NTUlPPXkKKyMgQ09ORklHX1VTQl9FSENJX0hDRF9QUENfT0YgaXMgbm90IHNldAogIyBDT05GSUdfVVNCX0lTUDExNlhfSENEIGlzIG5vdCBzZXQKIENPTkZJR19VU0JfT0hDSV9IQ0Q9bQogIyBDT05GSUdfVVNCX09IQ0lfSENEX1BQQ19PRiBpcyBub3Qgc2V0CkBAIC05NjksMTAgKzEwMDEsNiBAQAogIwogIyBVU0IgcG9ydCBkcml2ZXJzCiAjCi0KLSMKLSMgVVNCIFNlcmlhbCBDb252ZXJ0ZXIgc3VwcG9ydAotIwogIyBDT05GSUdfVVNCX1NFUklBTCBpcyBub3Qgc2V0CiAKICMKQEAgLTk5OCwyMCArMTAyNiwxNCBAQAogIyBDT05GSUdfVVNCX1RSQU5DRVZJQlJBVE9SIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9JT1dBUlJJT1IgaXMgbm90IHNldAogIyBDT05GSUdfVVNCX1RFU1QgaXMgbm90IHNldAotCi0jCi0jIFVTQiBEU0wgbW9kZW0gc3VwcG9ydAotIwotCi0jCi0jIFVTQiBHYWRnZXQgU3VwcG9ydAotIwogIyBDT05GSUdfVVNCX0dBREdFVCBpcyBub3Qgc2V0CiAjIENPTkZJR19NTUMgaXMgbm90IHNldAorIyBDT05GSUdfTUVNU1RJQ0sgaXMgbm90IHNldAogIyBDT05GSUdfTkVXX0xFRFMgaXMgbm90IHNldAogIyBDT05GSUdfSU5GSU5JQkFORCBpcyBub3Qgc2V0CiAjIENPTkZJR19FREFDIGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19DTEFTUyBpcyBub3Qgc2V0CisjIENPTkZJR19ETUFERVZJQ0VTIGlzIG5vdCBzZXQKIAogIwogIyBVc2Vyc3BhY2UgSS9PCkBAIC0xMDQxLDEyICsxMDYzLDEwIEBACiAjIENPTkZJR19YRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfR0ZTMl9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19PQ0ZTMl9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CitDT05GSUdfRE5PVElGWT15CiBDT05GSUdfSU5PVElGWT15CiBDT05GSUdfSU5PVElGWV9VU0VSPXkKICMgQ09ORklHX1FVT1RBIGlzIG5vdCBzZXQKLUNPTkZJR19ETk9USUZZPXkKICMgQ09ORklHX0FVVE9GU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19BVVRPRlM0X0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZVU0VfRlMgaXMgbm90IHNldApAQCAtMTA5NSw4ICsxMTE1LDEwIEBACiAjIENPTkZJR19FRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfQ1JBTUZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1ZYRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfTUlOSVhfRlMgaXMgbm90IHNldAogIyBDT05GSUdfSFBGU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19RTlg0RlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfU1lTVl9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19VRlNfRlMgaXMgbm90IHNldAogQ09ORklHX05FVFdPUktfRklMRVNZU1RFTVM9eQpAQCAtMTE4OCw3ICsxMjEwLDYgQEAKICMgQ09ORklHX05MU19LT0k4X1UgaXMgbm90IHNldAogIyBDT05GSUdfTkxTX1VURjggaXMgbm90IHNldAogIyBDT05GSUdfRExNIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VDQ19TTE9XIGlzIG5vdCBzZXQKIAogIwogIyBMaWJyYXJ5IHJvdXRpbmVzCkBAIC0xMjA2LDEwICsxMjI3LDYgQEAKIENPTkZJR19IQVNfSU9NRU09eQogQ09ORklHX0hBU19JT1BPUlQ9eQogQ09ORklHX0hBU19ETUE9eQotQ09ORklHX0lOU1RSVU1FTlRBVElPTj15Ci0jIENPTkZJR19QUk9GSUxJTkcgaXMgbm90IHNldAotIyBDT05GSUdfS1BST0JFUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19NQVJLRVJTIGlzIG5vdCBzZXQKIAogIwogIyBLZXJuZWwgaGFja2luZwpAQCAtMTIyOCw2ICsxMjQ1LDcgQEAKICMgQ09ORklHX1NDSEVEU1RBVFMgaXMgbm90IHNldAogIyBDT05GSUdfVElNRVJfU1RBVFMgaXMgbm90IHNldAogIyBDT05GSUdfU0xVQl9ERUJVR19PTiBpcyBub3Qgc2V0CisjIENPTkZJR19TTFVCX1NUQVRTIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1JUX01VVEVYRVMgaXMgbm90IHNldAogIyBDT05GSUdfUlRfTVVURVhfVEVTVEVSIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NQSU5MT0NLIGlzIG5vdCBzZXQKQEAgLTEyNDAsOSArMTI1OCw5IEBACiAjIENPTkZJR19ERUJVR19WTSBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19MSVNUIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NHIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZPUkNFRF9JTkxJTklORyBpcyBub3Qgc2V0CiAjIENPTkZJR19CT09UX1BSSU5US19ERUxBWSBpcyBub3Qgc2V0CiAjIENPTkZJR19SQ1VfVE9SVFVSRV9URVNUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JBQ0tUUkFDRV9TRUxGX1RFU1QgaXMgbm90IHNldAogIyBDT05GSUdfRkFVTFRfSU5KRUNUSU9OIGlzIG5vdCBzZXQKICMgQ09ORklHX1NBTVBMRVMgaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfU1RBQ0tPVkVSRkxPVyBpcyBub3Qgc2V0CkBAIC0xMjY1LDcgKzEyODMsOSBAQAogIyBDT05GSUdfU0VDVVJJVFlfRklMRV9DQVBBQklMSVRJRVMgaXMgbm90IHNldAogQ09ORklHX0NSWVBUTz15CiBDT05GSUdfQ1JZUFRPX0FMR0FQST15CitDT05GSUdfQ1JZUFRPX0FFQUQ9bQogQ09ORklHX0NSWVBUT19CTEtDSVBIRVI9bQorIyBDT05GSUdfQ1JZUFRPX1NFUUlWIGlzIG5vdCBzZXQKIENPTkZJR19DUllQVE9fSEFTSD15CiBDT05GSUdfQ1JZUFRPX01BTkFHRVI9eQogQ09ORklHX0NSWVBUT19ITUFDPXkKQEAgLTEyODQsNiArMTMwNCw5IEBACiBDT05GSUdfQ1JZUFRPX1BDQkM9bQogIyBDT05GSUdfQ1JZUFRPX0xSVyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fWFRTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DVFIgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0dDTSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ0NNIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19DUllQVEQgaXMgbm90IHNldAogQ09ORklHX0NSWVBUT19ERVM9bQogIyBDT05GSUdfQ1JZUFRPX0ZDUllQVCBpcyBub3Qgc2V0CkBAIC0xMjk5LDExICsxMzIyLDEzIEBACiBDT05GSUdfQ1JZUFRPX0tIQVpBRD1tCiBDT05GSUdfQ1JZUFRPX0FOVUJJUz1tCiAjIENPTkZJR19DUllQVE9fU0VFRCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0FMU0EyMCBpcyBub3Qgc2V0CiBDT05GSUdfQ1JZUFRPX0RFRkxBVEU9bQogQ09ORklHX0NSWVBUT19NSUNIQUVMX01JQz1tCiBDT05GSUdfQ1JZUFRPX0NSQzMyQz1tCiAjIENPTkZJR19DUllQVE9fQ0FNRUxMSUEgaXMgbm90IHNldAogQ09ORklHX0NSWVBUT19URVNUPW0KLSMgQ09ORklHX0NSWVBUT19BVVRIRU5DIGlzIG5vdCBzZXQKK0NPTkZJR19DUllQVE9fQVVUSEVOQz1tCisjIENPTkZJR19DUllQVE9fTFpPIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19IVyBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfQ0xPQ0sgaXMgbm90IHNldApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvY2hycDMyX2RlZmNvbmZpZyBiL2FyY2gvcG93ZXJwYy9jb25maWdzL2NocnAzMl9kZWZjb25maWcKaW5kZXggNTk4OWI1ZC4uMzhiODViMiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvY2hycDMyX2RlZmNvbmZpZworKysgYi9hcmNoL3Bvd2VycGMvY29uZmlncy9jaHJwMzJfZGVmY29uZmlnCkBAIC0xLDcgKzEsNyBAQAogIwogIyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBtYWtlIGNvbmZpZzogZG9uJ3QgZWRpdAotIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjI0LXJjNAotIyBUaHUgRGVjICA2IDE2OjQ4OjA5IDIwMDcKKyMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4yNS1yYzYKKyMgVGh1IE1hciAyMCAxMDozMzozNiAyMDA4CiAjCiAjIENPTkZJR19QUEM2NCBpcyBub3Qgc2V0CiAKQEAgLTMwLDYgKzMwLDcgQEAKIENPTkZJR19HRU5FUklDX1RJTUVfVlNZU0NBTEw9eQogQ09ORklHX0dFTkVSSUNfQ0xPQ0tFVkVOVFM9eQogQ09ORklHX0dFTkVSSUNfSEFSRElSUVM9eQorIyBDT05GSUdfSEFWRV9TRVRVUF9QRVJfQ1BVX0FSRUEgaXMgbm90IHNldAogQ09ORklHX0lSUV9QRVJfQ1BVPXkKIENPTkZJR19SV1NFTV9YQ0hHQUREX0FMR09SSVRITT15CiBDT05GSUdfQVJDSF9IQVNfSUxPRzJfVTMyPXkKQEAgLTY3LDE2ICs2OCwyMiBAQAogQ09ORklHX1BPU0lYX01RVUVVRT15CiAjIENPTkZJR19CU0RfUFJPQ0VTU19BQ0NUIGlzIG5vdCBzZXQKICMgQ09ORklHX1RBU0tTVEFUUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19VU0VSX05TIGlzIG5vdCBzZXQKLSMgQ09ORklHX1BJRF9OUyBpcyBub3Qgc2V0CiAjIENPTkZJR19BVURJVCBpcyBub3Qgc2V0CiBDT05GSUdfSUtDT05GSUc9eQogQ09ORklHX0lLQ09ORklHX1BST0M9eQogQ09ORklHX0xPR19CVUZfU0hJRlQ9MTUKICMgQ09ORklHX0NHUk9VUFMgaXMgbm90IHNldAotIyBDT05GSUdfRkFJUl9HUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CisjIENPTkZJR19HUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CisjIENPTkZJR19VU0VSX1NDSEVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NHUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CiBDT05GSUdfU1lTRlNfREVQUkVDQVRFRD15CitDT05GSUdfU1lTRlNfREVQUkVDQVRFRF9WMj15CiAjIENPTkZJR19SRUxBWSBpcyBub3Qgc2V0CitDT05GSUdfTkFNRVNQQUNFUz15CisjIENPTkZJR19VVFNfTlMgaXMgbm90IHNldAorIyBDT05GSUdfSVBDX05TIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTRVJfTlMgaXMgbm90IHNldAorIyBDT05GSUdfUElEX05TIGlzIG5vdCBzZXQKIENPTkZJR19CTEtfREVWX0lOSVRSRD15CiBDT05GSUdfSU5JVFJBTUZTX1NPVVJDRT0iIgogIyBDT05GSUdfQ0NfT1BUSU1JWkVfRk9SX1NJWkUgaXMgbm90IHNldApAQCAtOTAsMTEgKzk3LDEzIEBACiBDT05GSUdfUFJJTlRLPXkKIENPTkZJR19CVUc9eQogQ09ORklHX0VMRl9DT1JFPXkKKyMgQ09ORklHX0NPTVBBVF9CUksgaXMgbm90IHNldAogQ09ORklHX0JBU0VfRlVMTD15CiBDT05GSUdfRlVURVg9eQogQ09ORklHX0FOT05fSU5PREVTPXkKIENPTkZJR19FUE9MTD15CiBDT05GSUdfU0lHTkFMRkQ9eQorQ09ORklHX1RJTUVSRkQ9eQogQ09ORklHX0VWRU5URkQ9eQogQ09ORklHX1NITUVNPXkKIENPTkZJR19WTV9FVkVOVF9DT1VOVEVSUz15CkBAIC0xMDIsNiArMTExLDE0IEBACiAjIENPTkZJR19TTEFCIGlzIG5vdCBzZXQKIENPTkZJR19TTFVCPXkKICMgQ09ORklHX1NMT0IgaXMgbm90IHNldAorIyBDT05GSUdfUFJPRklMSU5HIGlzIG5vdCBzZXQKKyMgQ09ORklHX01BUktFUlMgaXMgbm90IHNldAorQ09ORklHX0hBVkVfT1BST0ZJTEU9eQorIyBDT05GSUdfS1BST0JFUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9LUFJPQkVTPXkKK0NPTkZJR19IQVZFX0tSRVRQUk9CRVM9eQorQ09ORklHX1BST0NfUEFHRV9NT05JVE9SPXkKK0NPTkZJR19TTEFCSU5GTz15CiBDT05GSUdfUlRfTVVURVhFUz15CiAjIENPTkZJR19USU5ZX1NITUVNIGlzIG5vdCBzZXQKIENPTkZJR19CQVNFX1NNQUxMPTAKQEAgLTEzMCw2ICsxNDcsNyBAQAogIyBDT05GSUdfREVGQVVMVF9DRlEgaXMgbm90IHNldAogIyBDT05GSUdfREVGQVVMVF9OT09QIGlzIG5vdCBzZXQKIENPTkZJR19ERUZBVUxUX0lPU0NIRUQ9ImFudGljaXBhdG9yeSIKK0NPTkZJR19DTEFTU0lDX1JDVT15CiAKICMKICMgUGxhdGZvcm0gc3VwcG9ydApAQCAtMTQwLDE2ICsxNTgsMTcgQEAKICMgQ09ORklHX1BQQ184Nnh4IGlzIG5vdCBzZXQKIENPTkZJR19DTEFTU0lDMzI9eQogQ09ORklHX1BQQ19DSFJQPXkKKyMgQ09ORklHX1BQQ19NUEM1MTJ4IGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ19NUEM1MTIxIGlzIG5vdCBzZXQKKyMgQ09ORklHX01QQzUxMjFfQURTIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19NUEM1Mnh4IGlzIG5vdCBzZXQKLSMgQ09ORklHX1BQQ19NUEM1MjAwIGlzIG5vdCBzZXQKLSMgQ09ORklHX1BQQ19FRklLQSBpcyBub3Qgc2V0Ci0jIENPTkZJR19QUENfTElURTUyMDAgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX1BNQUMgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0NFTEwgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0NFTExfTkFUSVZFIGlzIG5vdCBzZXQKICMgQ09ORklHX1BRMkFEUyBpcyBub3Qgc2V0CiBDT05GSUdfUFBDX05BVElWRT15CiAjIENPTkZJR19VREJHX1JUQVNfQ09OU09MRSBpcyBub3Qgc2V0CisjIENPTkZJR19JUElDIGlzIG5vdCBzZXQKIENPTkZJR19NUElDPXkKICMgQ09ORklHX01QSUNfV0VJUkQgaXMgbm90IHNldAogQ09ORklHX1BQQ19JODI1OT15CkBAIC0xNjMsNyArMTgyLDYgQEAKICMgQ09ORklHX0dFTkVSSUNfSU9NQVAgaXMgbm90IHNldAogIyBDT05GSUdfQ1BVX0ZSRVEgaXMgbm90IHNldAogIyBDT05GSUdfVEFVIGlzIG5vdCBzZXQKLSMgQ09ORklHX0NQTTIgaXMgbm90IHNldAogIyBDT05GSUdfRlNMX1VMSTE1NzUgaXMgbm90IHNldAogCiAjCkBAIC0xNzksMTMgKzE5NywxNiBAQAogIyBDT05GSUdfSFpfMzAwIGlzIG5vdCBzZXQKICMgQ09ORklHX0haXzEwMDAgaXMgbm90IHNldAogQ09ORklHX0haPTI1MAorIyBDT05GSUdfU0NIRURfSFJUSUNLIGlzIG5vdCBzZXQKIENPTkZJR19QUkVFTVBUX05PTkU9eQogIyBDT05GSUdfUFJFRU1QVF9WT0xVTlRBUlkgaXMgbm90IHNldAogIyBDT05GSUdfUFJFRU1QVCBpcyBub3Qgc2V0Ci1DT05GSUdfUFJFRU1QVF9CS0w9eQogQ09ORklHX0JJTkZNVF9FTEY9eQogQ09ORklHX0JJTkZNVF9NSVNDPXkKKyMgQ09ORklHX0lPTU1VX0hFTFBFUiBpcyBub3Qgc2V0CiBDT05GSUdfQVJDSF9FTkFCTEVfTUVNT1JZX0hPVFBMVUc9eQorQ09ORklHX0FSQ0hfSEFTX1dBTEtfTUVNT1JZPXkKK0NPTkZJR19BUkNIX0VOQUJMRV9NRU1PUllfSE9UUkVNT1ZFPXkKICMgQ09ORklHX0tFWEVDIGlzIG5vdCBzZXQKIENPTkZJR19JUlFfQUxMX0NQVVM9eQogQ09ORklHX0FSQ0hfRkxBVE1FTV9FTkFCTEU9eQpAQCAtMjA3LDcgKzIyOCw2IEBACiAjIENPTkZJR19DTURMSU5FX0JPT0wgaXMgbm90IHNldAogIyBDT05GSUdfUE0gaXMgbm90IHNldAogQ09ORklHX1NFQ0NPTVA9eQotIyBDT05GSUdfV0FOVF9ERVZJQ0VfVFJFRSBpcyBub3Qgc2V0CiBDT05GSUdfSVNBX0RNQV9BUEk9eQogCiAjCkBAIC0yODYsNzQgKzMwNiwzMiBAQAogIyBDT05GSUdfTkVUV09SS19TRUNNQVJLIGlzIG5vdCBzZXQKIENPTkZJR19ORVRGSUxURVI9eQogIyBDT05GSUdfTkVURklMVEVSX0RFQlVHIGlzIG5vdCBzZXQKKyMgQ09ORklHX05FVEZJTFRFUl9BRFZBTkNFRCBpcyBub3Qgc2V0CiAKICMKICMgQ29yZSBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvbgogIwotIyBDT05GSUdfTkVURklMVEVSX05FVExJTksgaXMgbm90IHNldAotQ09ORklHX05GX0NPTk5UUkFDS19FTkFCTEVEPW0KK0NPTkZJR19ORVRGSUxURVJfTkVUTElOSz1tCitDT05GSUdfTkVURklMVEVSX05FVExJTktfTE9HPW0KIENPTkZJR19ORl9DT05OVFJBQ0s9bQotIyBDT05GSUdfTkZfQ1RfQUNDVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19ORl9DT05OVFJBQ0tfTUFSSyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTIGlzIG5vdCBzZXQKLSMgQ09ORklHX05GX0NUX1BST1RPX1NDVFAgaXMgbm90IHNldAotIyBDT05GSUdfTkZfQ1RfUFJPVE9fVURQTElURSBpcyBub3Qgc2V0Ci0jIENPTkZJR19ORl9DT05OVFJBQ0tfQU1BTkRBIGlzIG5vdCBzZXQKIENPTkZJR19ORl9DT05OVFJBQ0tfRlRQPW0KLSMgQ09ORklHX05GX0NPTk5UUkFDS19IMzIzIGlzIG5vdCBzZXQKIENPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW0KLSMgQ09ORklHX05GX0NPTk5UUkFDS19ORVRCSU9TX05TIGlzIG5vdCBzZXQKLSMgQ09ORklHX05GX0NPTk5UUkFDS19QUFRQIGlzIG5vdCBzZXQKLSMgQ09ORklHX05GX0NPTk5UUkFDS19TQU5FIGlzIG5vdCBzZXQKIENPTkZJR19ORl9DT05OVFJBQ0tfU0lQPW0KLUNPTkZJR19ORl9DT05OVFJBQ0tfVEZUUD1tCitDT05GSUdfTkZfQ1RfTkVUTElOSz1tCiBDT05GSUdfTkVURklMVEVSX1hUQUJMRVM9bQotIyBDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9DTEFTU0lGWSBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX01BUksgaXMgbm90IHNldAotIyBDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9ORlFVRVVFIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfTkZMT0cgaXMgbm90IHNldAogIyBDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9UQ1BNU1MgaXMgbm90IHNldAotIyBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0NPTU1FTlQgaXMgbm90IHNldAotIyBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0NPTk5CWVRFUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkxJTUlUIGlzIG5vdCBzZXQKLSMgQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9DT05OTUFSSyBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfQ09OTlRSQUNLIGlzIG5vdCBzZXQKLSMgQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9EQ0NQIGlzIG5vdCBzZXQKLSMgQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9EU0NQIGlzIG5vdCBzZXQKLSMgQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9FU1AgaXMgbm90IHNldAotIyBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0hFTFBFUiBpcyBub3Qgc2V0Ci0jIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfTEVOR1RIIGlzIG5vdCBzZXQKLSMgQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9MSU1JVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfTUFDIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9NQVJLIGlzIG5vdCBzZXQKLSMgQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9NVUxUSVBPUlQgaXMgbm90IHNldAotIyBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1BLVFRZUEUgaXMgbm90IHNldAotIyBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1FVT1RBIGlzIG5vdCBzZXQKLSMgQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9SRUFMTSBpcyBub3Qgc2V0Ci0jIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfU0NUUCBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfU1RBVEUgaXMgbm90IHNldAotIyBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1NUQVRJU1RJQyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfU1RSSU5HIGlzIG5vdCBzZXQKLSMgQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9UQ1BNU1MgaXMgbm90IHNldAotIyBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1RJTUUgaXMgbm90IHNldAotIyBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1UzMiBpcyBub3Qgc2V0Ci0jIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfSEFTSExJTUlUIGlzIG5vdCBzZXQKIAogIwogIyBJUDogTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24KICMKIENPTkZJR19ORl9DT05OVFJBQ0tfSVBWND1tCiBDT05GSUdfTkZfQ09OTlRSQUNLX1BST0NfQ09NUEFUPXkKLSMgQ09ORklHX0lQX05GX1FVRVVFIGlzIG5vdCBzZXQKIENPTkZJR19JUF9ORl9JUFRBQkxFUz1tCi0jIENPTkZJR19JUF9ORl9NQVRDSF9JUFJBTkdFIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lQX05GX01BVENIX1RPUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19JUF9ORl9NQVRDSF9SRUNFTlQgaXMgbm90IHNldAotIyBDT05GSUdfSVBfTkZfTUFUQ0hfRUNOIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lQX05GX01BVENIX0FIIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lQX05GX01BVENIX1RUTCBpcyBub3Qgc2V0Ci0jIENPTkZJR19JUF9ORl9NQVRDSF9PV05FUiBpcyBub3Qgc2V0Ci0jIENPTkZJR19JUF9ORl9NQVRDSF9BRERSVFlQRSBpcyBub3Qgc2V0CiBDT05GSUdfSVBfTkZfRklMVEVSPW0KIENPTkZJR19JUF9ORl9UQVJHRVRfUkVKRUNUPW0KIENPTkZJR19JUF9ORl9UQVJHRVRfTE9HPW0KQEAgLTM2MSwyMCArMzM5LDE0IEBACiBDT05GSUdfTkZfTkFUPW0KIENPTkZJR19ORl9OQVRfTkVFREVEPXkKIENPTkZJR19JUF9ORl9UQVJHRVRfTUFTUVVFUkFERT1tCi1DT05GSUdfSVBfTkZfVEFSR0VUX1JFRElSRUNUPW0KLSMgQ09ORklHX0lQX05GX1RBUkdFVF9ORVRNQVAgaXMgbm90IHNldAotIyBDT05GSUdfSVBfTkZfVEFSR0VUX1NBTUUgaXMgbm90IHNldAotIyBDT05GSUdfTkZfTkFUX1NOTVBfQkFTSUMgaXMgbm90IHNldAogQ09ORklHX05GX05BVF9GVFA9bQogQ09ORklHX05GX05BVF9JUkM9bQotQ09ORklHX05GX05BVF9URlRQPW0KKyMgQ09ORklHX05GX05BVF9URlRQIGlzIG5vdCBzZXQKICMgQ09ORklHX05GX05BVF9BTUFOREEgaXMgbm90IHNldAogIyBDT05GSUdfTkZfTkFUX1BQVFAgaXMgbm90IHNldAogIyBDT05GSUdfTkZfTkFUX0gzMjMgaXMgbm90IHNldAogQ09ORklHX05GX05BVF9TSVA9bQogIyBDT05GSUdfSVBfTkZfTUFOR0xFIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lQX05GX1JBVyBpcyBub3Qgc2V0Ci0jIENPTkZJR19JUF9ORl9BUlBUQUJMRVMgaXMgbm90IHNldAogIyBDT05GSUdfSVBfRENDUCBpcyBub3Qgc2V0CiAjIENPTkZJR19JUF9TQ1RQIGlzIG5vdCBzZXQKICMgQ09ORklHX1RJUEMgaXMgbm90IHNldApAQCAtMzk2LDYgKzM2OCw3IEBACiAjCiAjIENPTkZJR19ORVRfUEtUR0VOIGlzIG5vdCBzZXQKICMgQ09ORklHX0hBTVJBRElPIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NBTiBpcyBub3Qgc2V0CiAjIENPTkZJR19JUkRBIGlzIG5vdCBzZXQKICMgQ09ORklHX0JUIGlzIG5vdCBzZXQKICMgQ09ORklHX0FGX1JYUlBDIGlzIG5vdCBzZXQKQEAgLTQ0NSw3ICs0MTgsNyBAQAogQ09ORklHX0JMS19ERVZfUkFNPXkKIENPTkZJR19CTEtfREVWX1JBTV9DT1VOVD0xNgogQ09ORklHX0JMS19ERVZfUkFNX1NJWkU9NDA5NgotQ09ORklHX0JMS19ERVZfUkFNX0JMT0NLU0laRT0xMDI0CisjIENPTkZJR19CTEtfREVWX1hJUCBpcyBub3Qgc2V0CiAjIENPTkZJR19DRFJPTV9QS1RDRFZEIGlzIG5vdCBzZXQKICMgQ09ORklHX0FUQV9PVkVSX0VUSCBpcyBub3Qgc2V0CiBDT05GSUdfTUlTQ19ERVZJQ0VTPXkKQEAgLTQ1MywxNiArNDI2LDE5IEBACiAjIENPTkZJR19FRVBST01fOTNDWDYgaXMgbm90IHNldAogIyBDT05GSUdfU0dJX0lPQzQgaXMgbm90IHNldAogIyBDT05GSUdfVElGTV9DT1JFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VOQ0xPU1VSRV9TRVJWSUNFUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9JREU9eQogQ09ORklHX0lERT15CiBDT05GSUdfQkxLX0RFVl9JREU9eQogCiAjCi0jIFBsZWFzZSBzZWUgRG9jdW1lbnRhdGlvbi9pZGUudHh0IGZvciBoZWxwL2luZm8gb24gSURFIGRyaXZlcworIyBQbGVhc2Ugc2VlIERvY3VtZW50YXRpb24vaWRlL2lkZS50eHQgZm9yIGhlbHAvaW5mbyBvbiBJREUgZHJpdmVzCiAjCiAjIENPTkZJR19CTEtfREVWX0lERV9TQVRBIGlzIG5vdCBzZXQKIENPTkZJR19CTEtfREVWX0lERURJU0s9eQogQ09ORklHX0lERURJU0tfTVVMVElfTU9ERT15CiBDT05GSUdfQkxLX0RFVl9JREVDRD15CitDT05GSUdfQkxLX0RFVl9JREVDRF9WRVJCT1NFX0VSUk9SUz15CiAjIENPTkZJR19CTEtfREVWX0lERVRBUEUgaXMgbm90IHNldAogIyBDT05GSUdfQkxLX0RFVl9JREVGTE9QUFkgaXMgbm90IHNldAogIyBDT05GSUdfQkxLX0RFVl9JREVTQ1NJIGlzIG5vdCBzZXQKQEAgLTQ3NCwxMiArNDUwLDEyIEBACiAjCiBDT05GSUdfSURFX0dFTkVSSUM9eQogIyBDT05GSUdfQkxLX0RFVl9QTEFURk9STSBpcyBub3Qgc2V0CitDT05GSUdfQkxLX0RFVl9JREVETUFfU0ZGPXkKIAogIwogIyBQQ0kgSURFIGNoaXBzZXRzIHN1cHBvcnQKICMKIENPTkZJR19CTEtfREVWX0lERVBDST15Ci1DT05GSUdfSURFUENJX1NIQVJFX0lSUT15CiBDT05GSUdfSURFUENJX1BDSUJVU19PUkRFUj15CiAjIENPTkZJR19CTEtfREVWX09GRkJPQVJEIGlzIG5vdCBzZXQKIENPTkZJR19CTEtfREVWX0dFTkVSSUM9eQpAQCAtNTEwLDcgKzQ4Niw2IEBACiAjIENPTkZJR19CTEtfREVWX1RSTTI5MCBpcyBub3Qgc2V0CiBDT05GSUdfQkxLX0RFVl9WSUE4MkNYWFg9eQogIyBDT05GSUdfQkxLX0RFVl9UQzg2QzAwMSBpcyBub3Qgc2V0Ci0jIENPTkZJR19JREVfQVJNIGlzIG5vdCBzZXQKIAogIwogIyBPdGhlciBJREUgY2hpcHNldHMgc3VwcG9ydApAQCAtNTk5LDYgKzU3NCw3IEBACiAjIENPTkZJR19TQ1NJX0lQUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX0lOSVRJTyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX0lOSUExMDAgaXMgbm90IHNldAorIyBDT05GSUdfU0NTSV9NVlNBUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX05DUjUzQzQwNkEgaXMgbm90IHNldAogIyBDT05GSUdfU0NTSV9TVEVYIGlzIG5vdCBzZXQKIENPTkZJR19TQ1NJX1NZTTUzQzhYWF8yPXkKQEAgLTYwNyw3ICs1ODMsNiBAQAogQ09ORklHX1NDU0lfU1lNNTNDOFhYX01BWF9UQUdTPTY0CiBDT05GSUdfU0NTSV9TWU01M0M4WFhfTU1JTz15CiAjIENPTkZJR19TQ1NJX1BBUzE2IGlzIG5vdCBzZXQKLSMgQ09ORklHX1NDU0lfUFNJMjQwSSBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX1FMT0dJQ19GQVMgaXMgbm90IHNldAogIyBDT05GSUdfU0NTSV9RTE9HSUNfMTI4MCBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX1FMQV9GQyBpcyBub3Qgc2V0CkBAIC02NDAsNyArNjE1LDYgQEAKICMgQ09ORklHX0VRVUFMSVpFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19UVU4gaXMgbm90IHNldAogIyBDT05GSUdfVkVUSCBpcyBub3Qgc2V0Ci0jIENPTkZJR19JUDEwMDAgaXMgbm90IHNldAogIyBDT05GSUdfQVJDTkVUIGlzIG5vdCBzZXQKICMgQ09ORklHX1BIWUxJQiBpcyBub3Qgc2V0CiBDT05GSUdfTkVUX0VUSEVSTkVUPXkKQEAgLTY4OCw2ICs2NjIsNyBAQAogIyBDT05GSUdfODEzOVRPT19UVU5FX1RXSVNURVIgaXMgbm90IHNldAogIyBDT05GSUdfODEzOVRPT184MTI5IGlzIG5vdCBzZXQKICMgQ09ORklHXzgxMzlfT0xEX1JYX1JFU0VUIGlzIG5vdCBzZXQKKyMgQ09ORklHX1I2MDQwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NJUzkwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19FUElDMTAwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NVTkRBTkNFIGlzIG5vdCBzZXQKQEAgLTcwMSw2ICs2NzYsOSBAQAogIyBDT05GSUdfREwySyBpcyBub3Qgc2V0CiAjIENPTkZJR19FMTAwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19FMTAwMEUgaXMgbm90IHNldAorIyBDT05GSUdfRTEwMDBFX0VOQUJMRUQgaXMgbm90IHNldAorIyBDT05GSUdfSVAxMDAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lHQiBpcyBub3Qgc2V0CiAjIENPTkZJR19OUzgzODIwIGlzIG5vdCBzZXQKICMgQ09ORklHX0hBTUFDSEkgaXMgbm90IHNldAogIyBDT05GSUdfWUVMTE9XRklOIGlzIG5vdCBzZXQKQEAgLTcyNiw2ICs3MDQsNyBAQAogIyBDT05GSUdfTklVIGlzIG5vdCBzZXQKICMgQ09ORklHX01MWDRfQ09SRSBpcyBub3Qgc2V0CiAjIENPTkZJR19URUhVVEkgaXMgbm90IHNldAorIyBDT05GSUdfQk5YMlggaXMgbm90IHNldAogIyBDT05GSUdfVFIgaXMgbm90IHNldAogCiAjCkBAIC03NTgsNyArNzM3LDYgQEAKICMgQ09ORklHX1NMSVAgaXMgbm90IHNldAogQ09ORklHX1NMSEM9bQogIyBDT05GSUdfTkVUX0ZDIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NIQVBFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRDT05TT0xFIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVFBPTEwgaXMgbm90IHNldAogIyBDT05GSUdfTkVUX1BPTExfQ09OVFJPTExFUiBpcyBub3Qgc2V0CkBAIC04MzgsNiArODE2LDcgQEAKIENPTkZJR19IV19DT05TT0xFPXkKICMgQ09ORklHX1ZUX0hXX0NPTlNPTEVfQklORElORyBpcyBub3Qgc2V0CiAjIENPTkZJR19TRVJJQUxfTk9OU1RBTkRBUkQgaXMgbm90IHNldAorIyBDT05GSUdfTk9aT01JIGlzIG5vdCBzZXQKIAogIwogIyBTZXJpYWwgZHJpdmVycwpAQCAtOTE3LDE0ICs4OTYsMTIgQEAKICMKICMgTWlzY2VsbGFuZW91cyBJMkMgQ2hpcCBzdXBwb3J0CiAjCi0jIENPTkZJR19TRU5TT1JTX0RTMTMzNyBpcyBub3Qgc2V0Ci0jIENPTkZJR19TRU5TT1JTX0RTMTM3NCBpcyBub3Qgc2V0CiAjIENPTkZJR19EUzE2ODIgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19FRVBST00gaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19QQ0Y4NTc0IGlzIG5vdCBzZXQKLSMgQ09ORklHX1NFTlNPUlNfUENBOTUzOSBpcyBub3Qgc2V0CisjIENPTkZJR19QQ0Y4NTc1IGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfUENGODU5MSBpcyBub3Qgc2V0Ci0jIENPTkZJR19TRU5TT1JTX000MVQwMCBpcyBub3Qgc2V0CisjIENPTkZJR19UUFM2NTAxMCBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX01BWDY4NzUgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19UU0wyNTUwIGlzIG5vdCBzZXQKICMgQ09ORklHX0kyQ19ERUJVR19DT1JFIGlzIG5vdCBzZXQKQEAgLTk0MCw2ICs5MTcsNyBAQAogIyBDT05GSUdfVzEgaXMgbm90IHNldAogIyBDT05GSUdfUE9XRVJfU1VQUExZIGlzIG5vdCBzZXQKICMgQ09ORklHX0hXTU9OIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RIRVJNQUwgaXMgbm90IHNldAogIyBDT05GSUdfV0FUQ0hET0cgaXMgbm90IHNldAogCiAjCkBAIC0xMDgzLDYgKzEwNjEsNyBAQAogQ09ORklHX1VTQl9BUkNIX0hBU19FSENJPXkKIENPTkZJR19VU0I9eQogIyBDT05GSUdfVVNCX0RFQlVHIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9BTk5PVU5DRV9ORVdfREVWSUNFUyBpcyBub3Qgc2V0CiAKICMKICMgTWlzY2VsbGFuZW91cyBVU0Igb3B0aW9ucwpAQCAtMTA5Niw5ICsxMDc1LDkgQEAKICMgVVNCIEhvc3QgQ29udHJvbGxlciBEcml2ZXJzCiAjCiBDT05GSUdfVVNCX0VIQ0lfSENEPW0KLSMgQ09ORklHX1VTQl9FSENJX1NQTElUX0lTTyBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfRUhDSV9ST09UX0hVQl9UVCBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfRUhDSV9UVF9ORVdTQ0hFRCBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfRUhDSV9IQ0RfUFBDX09GIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9JU1AxMTZYX0hDRCBpcyBub3Qgc2V0CiBDT05GSUdfVVNCX09IQ0lfSENEPXkKICMgQ09ORklHX1VTQl9PSENJX0hDRF9QUENfT0YgaXMgbm90IHNldApAQCAtMTE0NywxMCArMTEyNiw2IEBACiAjCiAjIFVTQiBwb3J0IGRyaXZlcnMKICMKLQotIwotIyBVU0IgU2VyaWFsIENvbnZlcnRlciBzdXBwb3J0Ci0jCiAjIENPTkZJR19VU0JfU0VSSUFMIGlzIG5vdCBzZXQKIAogIwpAQCAtMTE3NiwyMCArMTE1MSwxNCBAQAogIyBDT05GSUdfVVNCX1RSQU5DRVZJQlJBVE9SIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9JT1dBUlJJT1IgaXMgbm90IHNldAogIyBDT05GSUdfVVNCX1RFU1QgaXMgbm90IHNldAotCi0jCi0jIFVTQiBEU0wgbW9kZW0gc3VwcG9ydAotIwotCi0jCi0jIFVTQiBHYWRnZXQgU3VwcG9ydAotIwogIyBDT05GSUdfVVNCX0dBREdFVCBpcyBub3Qgc2V0CiAjIENPTkZJR19NTUMgaXMgbm90IHNldAorIyBDT05GSUdfTUVNU1RJQ0sgaXMgbm90IHNldAogIyBDT05GSUdfTkVXX0xFRFMgaXMgbm90IHNldAogIyBDT05GSUdfSU5GSU5JQkFORCBpcyBub3Qgc2V0CiAjIENPTkZJR19FREFDIGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19DTEFTUyBpcyBub3Qgc2V0CisjIENPTkZJR19ETUFERVZJQ0VTIGlzIG5vdCBzZXQKIAogIwogIyBVc2Vyc3BhY2UgSS9PCkBAIC0xMjE1LDEyICsxMTg0LDEwIEBACiAjIENPTkZJR19YRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfR0ZTMl9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19PQ0ZTMl9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CitDT05GSUdfRE5PVElGWT15CiBDT05GSUdfSU5PVElGWT15CiBDT05GSUdfSU5PVElGWV9VU0VSPXkKICMgQ09ORklHX1FVT1RBIGlzIG5vdCBzZXQKLUNPTkZJR19ETk9USUZZPXkKICMgQ09ORklHX0FVVE9GU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19BVVRPRlM0X0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZVU0VfRlMgaXMgbm90IHNldApAQCAtMTI2Nyw4ICsxMjM0LDEwIEBACiAjIENPTkZJR19FRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfQ1JBTUZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1ZYRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfTUlOSVhfRlMgaXMgbm90IHNldAogIyBDT05GSUdfSFBGU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19RTlg0RlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfU1lTVl9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19VRlNfRlMgaXMgbm90IHNldAogQ09ORklHX05FVFdPUktfRklMRVNZU1RFTVM9eQpAQCAtMTM0Miw3ICsxMzExLDYgQEAKICMgQ09ORklHX05MU19LT0k4X1UgaXMgbm90IHNldAogIyBDT05GSUdfTkxTX1VURjggaXMgbm90IHNldAogIyBDT05GSUdfRExNIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VDQ19TTE9XIGlzIG5vdCBzZXQKIAogIwogIyBMaWJyYXJ5IHJvdXRpbmVzCkBAIC0xMzYwLDEwICsxMzI4LDYgQEAKIENPTkZJR19IQVNfSU9NRU09eQogQ09ORklHX0hBU19JT1BPUlQ9eQogQ09ORklHX0hBU19ETUE9eQotQ09ORklHX0lOU1RSVU1FTlRBVElPTj15Ci0jIENPTkZJR19QUk9GSUxJTkcgaXMgbm90IHNldAotIyBDT05GSUdfS1BST0JFUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19NQVJLRVJTIGlzIG5vdCBzZXQKIAogIwogIyBLZXJuZWwgaGFja2luZwpAQCAtMTM4Miw2ICsxMzQ2LDcgQEAKICMgQ09ORklHX1NDSEVEU1RBVFMgaXMgbm90IHNldAogIyBDT05GSUdfVElNRVJfU1RBVFMgaXMgbm90IHNldAogIyBDT05GSUdfU0xVQl9ERUJVR19PTiBpcyBub3Qgc2V0CisjIENPTkZJR19TTFVCX1NUQVRTIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1JUX01VVEVYRVMgaXMgbm90IHNldAogIyBDT05GSUdfUlRfTVVURVhfVEVTVEVSIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NQSU5MT0NLIGlzIG5vdCBzZXQKQEAgLTEzOTUsOSArMTM2MCw5IEBACiAjIENPTkZJR19ERUJVR19WTSBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19MSVNUIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NHIGlzIG5vdCBzZXQKLUNPTkZJR19GT1JDRURfSU5MSU5JTkc9eQogIyBDT05GSUdfQk9PVF9QUklOVEtfREVMQVkgaXMgbm90IHNldAogIyBDT05GSUdfUkNVX1RPUlRVUkVfVEVTVCBpcyBub3Qgc2V0CisjIENPTkZJR19CQUNLVFJBQ0VfU0VMRl9URVNUIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZBVUxUX0lOSkVDVElPTiBpcyBub3Qgc2V0CiAjIENPTkZJR19TQU1QTEVTIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NUQUNLT1ZFUkZMT1cgaXMgbm90IHNldApAQCAtMTQyMCw2ICsxMzg1LDcgQEAKIENPTkZJR19DUllQVE89eQogQ09ORklHX0NSWVBUT19BTEdBUEk9bQogQ09ORklHX0NSWVBUT19CTEtDSVBIRVI9bQorIyBDT05GSUdfQ1JZUFRPX1NFUUlWIGlzIG5vdCBzZXQKIENPTkZJR19DUllQVE9fTUFOQUdFUj1tCiAjIENPTkZJR19DUllQVE9fSE1BQyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fWENCQyBpcyBub3Qgc2V0CkBAIC0xNDM3LDYgKzE0MDMsOSBAQAogQ09ORklHX0NSWVBUT19QQ0JDPW0KICMgQ09ORklHX0NSWVBUT19MUlcgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX1hUUyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ1RSIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19HQ00gaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NDTSBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fQ1JZUFREIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19ERVMgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0ZDUllQVCBpcyBub3Qgc2V0CkBAIC0xNDUxLDExICsxNDIwLDEzIEBACiAjIENPTkZJR19DUllQVE9fS0hBWkFEIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19BTlVCSVMgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX1NFRUQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1NBTFNBMjAgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0RFRkxBVEUgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX01JQ0hBRUxfTUlDIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19DUkMzMkMgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0NBTUVMTElBIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19URVNUIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19BVVRIRU5DIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19MWk8gaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0hXIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19DTE9DSyBpcyBub3Qgc2V0CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvY29uZmlncy9lcDgyNDhlX2RlZmNvbmZpZyBiL2FyY2gvcG93ZXJwYy9jb25maWdzL2VwODI0OGVfZGVmY29uZmlnCmluZGV4IDAxYWQ1OTUuLjJiMTUwNGUgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jb25maWdzL2VwODI0OGVfZGVmY29uZmlnCisrKyBiL2FyY2gvcG93ZXJwYy9jb25maWdzL2VwODI0OGVfZGVmY29uZmlnCkBAIC0xLDcgKzEsNyBAQAogIwogIyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBtYWtlIGNvbmZpZzogZG9uJ3QgZWRpdAotIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjI0LXJjNgotIyBGcmkgSmFuIDExIDE0OjAyOjA2IDIwMDgKKyMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4yNS1yYzYKKyMgTW9uIE1hciAyNCAwODo0ODowOSAyMDA4CiAjCiAjIENPTkZJR19QUEM2NCBpcyBub3Qgc2V0CiAKQEAgLTI4LDYgKzI4LDcgQEAKIENPTkZJR19HRU5FUklDX1RJTUVfVlNZU0NBTEw9eQogQ09ORklHX0dFTkVSSUNfQ0xPQ0tFVkVOVFM9eQogQ09ORklHX0dFTkVSSUNfSEFSRElSUVM9eQorIyBDT05GSUdfSEFWRV9TRVRVUF9QRVJfQ1BVX0FSRUEgaXMgbm90IHNldAogQ09ORklHX0lSUV9QRVJfQ1BVPXkKIENPTkZJR19SV1NFTV9YQ0hHQUREX0FMR09SSVRITT15CiBDT05GSUdfQVJDSF9IQVNfSUxPRzJfVTMyPXkKQEAgLTY5LDExICs3MCwxNCBAQAogQ09ORklHX0lLQ09ORklHX1BST0M9eQogQ09ORklHX0xPR19CVUZfU0hJRlQ9MTQKICMgQ09ORklHX0NHUk9VUFMgaXMgbm90IHNldAorQ09ORklHX0dST1VQX1NDSEVEPXkKIENPTkZJR19GQUlSX0dST1VQX1NDSEVEPXkKLUNPTkZJR19GQUlSX1VTRVJfU0NIRUQ9eQotIyBDT05GSUdfRkFJUl9DR1JPVVBfU0NIRUQgaXMgbm90IHNldAorQ09ORklHX1VTRVJfU0NIRUQ9eQorIyBDT05GSUdfQ0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKIENPTkZJR19TWVNGU19ERVBSRUNBVEVEPXkKK0NPTkZJR19TWVNGU19ERVBSRUNBVEVEX1YyPXkKICMgQ09ORklHX1JFTEFZIGlzIG5vdCBzZXQKKyMgQ09ORklHX05BTUVTUEFDRVMgaXMgbm90IHNldAogIyBDT05GSUdfQkxLX0RFVl9JTklUUkQgaXMgbm90IHNldAogQ09ORklHX1NZU0NUTD15CiBDT05GSUdfRU1CRURERUQ9eQpAQCAtODUsMTcgKzg5LDI2IEBACiBDT05GSUdfUFJJTlRLPXkKIENPTkZJR19CVUc9eQogQ09ORklHX0VMRl9DT1JFPXkKK0NPTkZJR19DT01QQVRfQlJLPXkKIENPTkZJR19CQVNFX0ZVTEw9eQogQ09ORklHX0ZVVEVYPXkKIENPTkZJR19BTk9OX0lOT0RFUz15CiBDT05GSUdfRVBPTEw9eQogQ09ORklHX1NJR05BTEZEPXkKK0NPTkZJR19USU1FUkZEPXkKIENPTkZJR19FVkVOVEZEPXkKIENPTkZJR19TSE1FTT15CiBDT05GSUdfVk1fRVZFTlRfQ09VTlRFUlM9eQogQ09ORklHX1NMQUI9eQogIyBDT05GSUdfU0xVQiBpcyBub3Qgc2V0CiAjIENPTkZJR19TTE9CIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BST0ZJTElORyBpcyBub3Qgc2V0CisjIENPTkZJR19NQVJLRVJTIGlzIG5vdCBzZXQKK0NPTkZJR19IQVZFX09QUk9GSUxFPXkKK0NPTkZJR19IQVZFX0tQUk9CRVM9eQorQ09ORklHX0hBVkVfS1JFVFBST0JFUz15CitDT05GSUdfUFJPQ19QQUdFX01PTklUT1I9eQorQ09ORklHX1NMQUJJTkZPPXkKIENPTkZJR19SVF9NVVRFWEVTPXkKICMgQ09ORklHX1RJTllfU0hNRU0gaXMgbm90IHNldAogQ09ORklHX0JBU0VfU01BTEw9MApAQCAtMTE3LDYgKzEzMCw3IEBACiAjIENPTkZJR19ERUZBVUxUX0NGUSBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUZBVUxUX05PT1AgaXMgbm90IHNldAogQ09ORklHX0RFRkFVTFRfSU9TQ0hFRD0iZGVhZGxpbmUiCitDT05GSUdfQ0xBU1NJQ19SQ1U9eQogCiAjCiAjIFBsYXRmb3JtIHN1cHBvcnQKQEAgLTEyNSw4ICsxMzksOCBAQAogQ09ORklHX1BQQ184Mnh4PXkKICMgQ09ORklHX1BQQ184M3h4IGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ184Nnh4IGlzIG5vdCBzZXQKLSMgQ09ORklHX1BQQ19NUEM1Mnh4IGlzIG5vdCBzZXQKLSMgQ09ORklHX1BQQ19NUEM1MjAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ19NUEM1MTJ4IGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ19NUEM1MTIxIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19DRUxMIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19DRUxMX05BVElWRSBpcyBub3Qgc2V0CiAjIENPTkZJR19NUEM4MjcyX0FEUyBpcyBub3Qgc2V0CkBAIC0xMzUsNiArMTQ5LDcgQEAKICMgQ09ORklHX1BRMkFEUyBpcyBub3Qgc2V0CiBDT05GSUdfODI2MD15CiBDT05GSUdfODI3Mj15CisjIENPTkZJR19JUElDIGlzIG5vdCBzZXQKICMgQ09ORklHX01QSUMgaXMgbm90IHNldAogIyBDT05GSUdfTVBJQ19XRUlSRCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfSTgyNTkgaXMgbm90IHNldApAQCAtMTYzLDEyICsxNzgsMTYgQEAKICMgQ09ORklHX0haXzMwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19IWl8xMDAwIGlzIG5vdCBzZXQKIENPTkZJR19IWj0yNTAKKyMgQ09ORklHX1NDSEVEX0hSVElDSyBpcyBub3Qgc2V0CiBDT05GSUdfUFJFRU1QVF9OT05FPXkKICMgQ09ORklHX1BSRUVNUFRfVk9MVU5UQVJZIGlzIG5vdCBzZXQKICMgQ09ORklHX1BSRUVNUFQgaXMgbm90IHNldAogQ09ORklHX0JJTkZNVF9FTEY9eQogQ09ORklHX0JJTkZNVF9NSVNDPXkKKyMgQ09ORklHX0lPTU1VX0hFTFBFUiBpcyBub3Qgc2V0CiBDT05GSUdfQVJDSF9FTkFCTEVfTUVNT1JZX0hPVFBMVUc9eQorQ09ORklHX0FSQ0hfSEFTX1dBTEtfTUVNT1JZPXkKK0NPTkZJR19BUkNIX0VOQUJMRV9NRU1PUllfSE9UUkVNT1ZFPXkKIENPTkZJR19BUkNIX0ZMQVRNRU1fRU5BQkxFPXkKIENPTkZJR19BUkNIX1BPUFVMQVRFU19OT0RFX01BUD15CiBDT05GSUdfRkxBVE1FTT15CkBAIC0xODMsMTEgKzIwMiw3IEBACiBDT05GSUdfUFJPQ19ERVZJQ0VUUkVFPXkKICMgQ09ORklHX0NNRExJTkVfQk9PTCBpcyBub3Qgc2V0CiAjIENPTkZJR19QTSBpcyBub3Qgc2V0Ci1DT05GSUdfU1VTUEVORF9VUF9QT1NTSUJMRT15Ci1DT05GSUdfSElCRVJOQVRJT05fVVBfUE9TU0lCTEU9eQogIyBDT05GSUdfU0VDQ09NUCBpcyBub3Qgc2V0Ci1DT05GSUdfV0FOVF9ERVZJQ0VfVFJFRT15Ci1DT05GSUdfREVWSUNFX1RSRUU9ImVwODI0OGUuZHRzIgogQ09ORklHX0lTQV9ETUFfQVBJPXkKIAogIwpAQCAtMjcyLDEyICsyODcsMTMgQEAKICMgQ09ORklHX05FVFdPUktfU0VDTUFSSyBpcyBub3Qgc2V0CiBDT05GSUdfTkVURklMVEVSPXkKICMgQ09ORklHX05FVEZJTFRFUl9ERUJVRyBpcyBub3Qgc2V0CitDT05GSUdfTkVURklMVEVSX0FEVkFOQ0VEPXkKIAogIwogIyBDb3JlIE5ldGZpbHRlciBDb25maWd1cmF0aW9uCiAjCi0jIENPTkZJR19ORVRGSUxURVJfTkVUTElOSyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ORl9DT05OVFJBQ0tfRU5BQkxFRCBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRGSUxURVJfTkVUTElOS19RVUVVRSBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRGSUxURVJfTkVUTElOS19MT0cgaXMgbm90IHNldAogIyBDT05GSUdfTkZfQ09OTlRSQUNLIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVEZJTFRFUl9YVEFCTEVTIGlzIG5vdCBzZXQKIApAQCAtMjg3LDYgKzMwMywxMyBAQAogIyBDT05GSUdfSVBfTkZfUVVFVUUgaXMgbm90IHNldAogIyBDT05GSUdfSVBfTkZfSVBUQUJMRVMgaXMgbm90IHNldAogIyBDT05GSUdfSVBfTkZfQVJQVEFCTEVTIGlzIG5vdCBzZXQKKworIworIyBJUHY2OiBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvbgorIworIyBDT05GSUdfSVA2X05GX1FVRVVFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lQNl9ORl9JUFRBQkxFUyBpcyBub3Qgc2V0CisjIENPTkZJR19BVE0gaXMgbm90IHNldAogIyBDT05GSUdfQlJJREdFIGlzIG5vdCBzZXQKICMgQ09ORklHX1ZMQU5fODAyMVEgaXMgbm90IHNldAogIyBDT05GSUdfREVDTkVUIGlzIG5vdCBzZXQKQEAgLTMwMCw2ICszMjMsNyBAQAogIwogIyBDT05GSUdfTkVUX1BLVEdFTiBpcyBub3Qgc2V0CiAjIENPTkZJR19IQU1SQURJTyBpcyBub3Qgc2V0CisjIENPTkZJR19DQU4gaXMgbm90IHNldAogIyBDT05GSUdfSVJEQSBpcyBub3Qgc2V0CiAjIENPTkZJR19CVCBpcyBub3Qgc2V0CiAKQEAgLTMwOCw2ICszMzIsNyBAQAogIwogIyBDT05GSUdfQ0ZHODAyMTEgaXMgbm90IHNldAogIyBDT05GSUdfV0lSRUxFU1NfRVhUIGlzIG5vdCBzZXQKKyMgQ09ORklHX01BQzgwMjExIGlzIG5vdCBzZXQKICMgQ09ORklHX0lFRUU4MDIxMSBpcyBub3Qgc2V0CiAjIENPTkZJR19SRktJTEwgaXMgbm90IHNldAogCkBAIC00MTUsNiArNDQwLDcgQEAKICMgQ09ORklHX0NEUk9NX1BLVENEVkQgaXMgbm90IHNldAogIyBDT05GSUdfQVRBX09WRVJfRVRIIGlzIG5vdCBzZXQKICMgQ09ORklHX01JU0NfREVWSUNFUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9JREU9eQogIyBDT05GSUdfSURFIGlzIG5vdCBzZXQKIAogIwpAQCAtNDQ4LDYgKzQ3NCw3IEBACiAjIENPTkZJR19TTVNDX1BIWSBpcyBub3Qgc2V0CiAjIENPTkZJR19CUk9BRENPTV9QSFkgaXMgbm90IHNldAogIyBDT05GSUdfSUNQTFVTX1BIWSBpcyBub3Qgc2V0CisjIENPTkZJR19SRUFMVEVLX1BIWSBpcyBub3Qgc2V0CiAjIENPTkZJR19GSVhFRF9QSFkgaXMgbm90IHNldAogQ09ORklHX01ESU9fQklUQkFORz15CiBDT05GSUdfTkVUX0VUSEVSTkVUPXkKQEAgLTQ2Miw2ICs0ODksOCBAQAogQ09ORklHX0ZTX0VORVRfSEFTX0ZDQz15CiAjIENPTkZJR19GU19FTkVUX01ESU9fRkNDIGlzIG5vdCBzZXQKIENPTkZJR19ORVRERVZfMTAwMD15CisjIENPTkZJR19FMTAwMEVfRU5BQkxFRCBpcyBub3Qgc2V0CisjIENPTkZJR19HSUFORkFSIGlzIG5vdCBzZXQKIENPTkZJR19ORVRERVZfMTAwMDA9eQogCiAjCkBAIC01MzIsNiArNTYxLDcgQEAKICMgQ09ORklHX1cxIGlzIG5vdCBzZXQKICMgQ09ORklHX1BPV0VSX1NVUFBMWSBpcyBub3Qgc2V0CiAjIENPTkZJR19IV01PTiBpcyBub3Qgc2V0CisjIENPTkZJR19USEVSTUFMIGlzIG5vdCBzZXQKICMgQ09ORklHX1dBVENIRE9HIGlzIG5vdCBzZXQKIAogIwpAQCAtNTcxLDggKzYwMSwxMCBAQAogIyBDT05GSUdfU09VTkQgaXMgbm90IHNldAogIyBDT05GSUdfVVNCX1NVUFBPUlQgaXMgbm90IHNldAogIyBDT05GSUdfTU1DIGlzIG5vdCBzZXQKKyMgQ09ORklHX01FTVNUSUNLIGlzIG5vdCBzZXQKICMgQ09ORklHX05FV19MRURTIGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19DTEFTUyBpcyBub3Qgc2V0CisjIENPTkZJR19ETUFERVZJQ0VTIGlzIG5vdCBzZXQKIAogIwogIyBVc2Vyc3BhY2UgSS9PCkBAIC01OTMsMTIgKzYyNSwxMCBAQAogIyBDT05GSUdfRlNfUE9TSVhfQUNMIGlzIG5vdCBzZXQKICMgQ09ORklHX1hGU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19PQ0ZTMl9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CitDT05GSUdfRE5PVElGWT15CiBDT05GSUdfSU5PVElGWT15CiBDT05GSUdfSU5PVElGWV9VU0VSPXkKICMgQ09ORklHX1FVT1RBIGlzIG5vdCBzZXQKLUNPTkZJR19ETk9USUZZPXkKICMgQ09ORklHX0FVVE9GU19GUyBpcyBub3Qgc2V0CiBDT05GSUdfQVVUT0ZTNF9GUz15CiAjIENPTkZJR19GVVNFX0ZTIGlzIG5vdCBzZXQKQEAgLTYyNiw2ICs2NTYsNyBAQAogQ09ORklHX1RNUEZTPXkKICMgQ09ORklHX1RNUEZTX1BPU0lYX0FDTCBpcyBub3Qgc2V0CiAjIENPTkZJR19IVUdFVExCX1BBR0UgaXMgbm90IHNldAorIyBDT05GSUdfQ09ORklHRlNfRlMgaXMgbm90IHNldAogCiAjCiAjIE1pc2NlbGxhbmVvdXMgZmlsZXN5c3RlbXMKQEAgLTYzNCw4ICs2NjUsMTAgQEAKICMgQ09ORklHX0pGRlMyX0ZTIGlzIG5vdCBzZXQKIENPTkZJR19DUkFNRlM9eQogIyBDT05GSUdfVlhGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19IUEZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1FOWDRGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TWVNWX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1VGU19GUyBpcyBub3Qgc2V0CiBDT05GSUdfTkVUV09SS19GSUxFU1lTVEVNUz15CkBAIC03MTUsNyArNzQ4LDYgQEAKICMgQ09ORklHX05MU19LT0k4X1IgaXMgbm90IHNldAogIyBDT05GSUdfTkxTX0tPSThfVSBpcyBub3Qgc2V0CiBDT05GSUdfTkxTX1VURjg9eQotIyBDT05GSUdfVUNDX1NMT1cgaXMgbm90IHNldAogCiAjCiAjIExpYnJhcnkgcm91dGluZXMKQEAgLTczMSw5ICs3NjMsNiBAQAogQ09ORklHX0hBU19JT01FTT15CiBDT05GSUdfSEFTX0lPUE9SVD15CiBDT05GSUdfSEFTX0RNQT15Ci1DT05GSUdfSU5TVFJVTUVOVEFUSU9OPXkKLSMgQ09ORklHX1BST0ZJTElORyBpcyBub3Qgc2V0Ci0jIENPTkZJR19NQVJLRVJTIGlzIG5vdCBzZXQKIAogIwogIyBLZXJuZWwgaGFja2luZwpAQCAtNzY0LDggKzc5Myw4IEBACiAjIENPTkZJR19ERUJVR19WTSBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19MSVNUIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NHIGlzIG5vdCBzZXQKLUNPTkZJR19GT1JDRURfSU5MSU5JTkc9eQogIyBDT05GSUdfQk9PVF9QUklOVEtfREVMQVkgaXMgbm90IHNldAorIyBDT05GSUdfQkFDS1RSQUNFX1NFTEZfVEVTVCBpcyBub3Qgc2V0CiAjIENPTkZJR19GQVVMVF9JTkpFQ1RJT04gaXMgbm90IHNldAogIyBDT05GSUdfU0FNUExFUyBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19TVEFDS09WRVJGTE9XIGlzIG5vdCBzZXQKQEAgLTc4NCw2ICs4MTMsNyBAQAogQ09ORklHX0NSWVBUTz15CiBDT05GSUdfQ1JZUFRPX0FMR0FQST15CiBDT05GSUdfQ1JZUFRPX0JMS0NJUEhFUj15CisjIENPTkZJR19DUllQVE9fU0VRSVYgaXMgbm90IHNldAogQ09ORklHX0NSWVBUT19NQU5BR0VSPXkKICMgQ09ORklHX0NSWVBUT19ITUFDIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19OVUxMIGlzIG5vdCBzZXQKQEAgLTc5Nyw2ICs4MjcsOSBAQAogQ09ORklHX0NSWVBUT19FQ0I9eQogQ09ORklHX0NSWVBUT19DQkM9eQogQ09ORklHX0NSWVBUT19QQ0JDPXkKKyMgQ09ORklHX0NSWVBUT19DVFIgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0dDTSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ0NNIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19DUllQVEQgaXMgbm90IHNldAogQ09ORklHX0NSWVBUT19ERVM9eQogIyBDT05GSUdfQ1JZUFRPX0ZDUllQVCBpcyBub3Qgc2V0CkBAIC04MTYsNiArODQ5LDcgQEAKICMgQ09ORklHX0NSWVBUT19DUkMzMkMgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0NBTUVMTElBIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19BVVRIRU5DIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19MWk8gaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0hXIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19DTE9DSyBpcyBub3Qgc2V0CiBDT05GSUdfUFBDX0xJQl9SSEVBUD15CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvY29uZmlncy9lcDg4eGNfZGVmY29uZmlnIGIvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvZXA4OHhjX2RlZmNvbmZpZwppbmRleCBhMWY5ODIwLi4xMjViNDc2IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvY29uZmlncy9lcDg4eGNfZGVmY29uZmlnCisrKyBiL2FyY2gvcG93ZXJwYy9jb25maWdzL2VwODh4Y19kZWZjb25maWcKQEAgLTEsNyArMSw3IEBACiAjCiAjIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIG1ha2UgY29uZmlnOiBkb24ndCBlZGl0Ci0jIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMjQtcmM0Ci0jIFRodSBEZWMgIDYgMTY6NDg6MTMgMjAwNworIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjI1LXJjNgorIyBNb24gTWFyIDI0IDA4OjQ4OjEwIDIwMDgKICMKICMgQ09ORklHX1BQQzY0IGlzIG5vdCBzZXQKIApAQCAtMjYsNiArMjYsNyBAQAogQ09ORklHX0dFTkVSSUNfVElNRV9WU1lTQ0FMTD15CiBDT05GSUdfR0VORVJJQ19DTE9DS0VWRU5UUz15CiBDT05GSUdfR0VORVJJQ19IQVJESVJRUz15CisjIENPTkZJR19IQVZFX1NFVFVQX1BFUl9DUFVfQVJFQSBpcyBub3Qgc2V0CiBDT05GSUdfSVJRX1BFUl9DUFU9eQogQ09ORklHX1JXU0VNX1hDSEdBRERfQUxHT1JJVEhNPXkKIENPTkZJR19BUkNIX0hBU19JTE9HMl9VMzI9eQpAQCAtNjMsMTUgKzY0LDE5IEBACiAjIENPTkZJR19QT1NJWF9NUVVFVUUgaXMgbm90IHNldAogIyBDT05GSUdfQlNEX1BST0NFU1NfQUNDVCBpcyBub3Qgc2V0CiAjIENPTkZJR19UQVNLU1RBVFMgaXMgbm90IHNldAotIyBDT05GSUdfVVNFUl9OUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19QSURfTlMgaXMgbm90IHNldAogIyBDT05GSUdfQVVESVQgaXMgbm90IHNldAogIyBDT05GSUdfSUtDT05GSUcgaXMgbm90IHNldAogQ09ORklHX0xPR19CVUZfU0hJRlQ9MTQKICMgQ09ORklHX0NHUk9VUFMgaXMgbm90IHNldAorQ09ORklHX0dST1VQX1NDSEVEPXkKICMgQ09ORklHX0ZBSVJfR1JPVVBfU0NIRUQgaXMgbm90IHNldAorIyBDT05GSUdfUlRfR1JPVVBfU0NIRUQgaXMgbm90IHNldAorQ09ORklHX1VTRVJfU0NIRUQ9eQorIyBDT05GSUdfQ0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKIENPTkZJR19TWVNGU19ERVBSRUNBVEVEPXkKK0NPTkZJR19TWVNGU19ERVBSRUNBVEVEX1YyPXkKICMgQ09ORklHX1JFTEFZIGlzIG5vdCBzZXQKKyMgQ09ORklHX05BTUVTUEFDRVMgaXMgbm90IHNldAogIyBDT05GSUdfQkxLX0RFVl9JTklUUkQgaXMgbm90IHNldAogIyBDT05GSUdfQ0NfT1BUSU1JWkVfRk9SX1NJWkUgaXMgbm90IHNldAogQ09ORklHX1NZU0NUTD15CkBAIC04NCwxMSArODksMTMgQEAKIENPTkZJR19QUklOVEs9eQogQ09ORklHX0JVRz15CiAjIENPTkZJR19FTEZfQ09SRSBpcyBub3Qgc2V0CitDT05GSUdfQ09NUEFUX0JSSz15CiAjIENPTkZJR19CQVNFX0ZVTEwgaXMgbm90IHNldAogIyBDT05GSUdfRlVURVggaXMgbm90IHNldAogQ09ORklHX0FOT05fSU5PREVTPXkKIENPTkZJR19FUE9MTD15CiBDT05GSUdfU0lHTkFMRkQ9eQorQ09ORklHX1RJTUVSRkQ9eQogQ09ORklHX0VWRU5URkQ9eQogQ09ORklHX1NITUVNPXkKICMgQ09ORklHX1ZNX0VWRU5UX0NPVU5URVJTIGlzIG5vdCBzZXQKQEAgLTk2LDYgKzEwMywxMyBAQAogIyBDT05GSUdfU0xBQiBpcyBub3Qgc2V0CiBDT05GSUdfU0xVQj15CiAjIENPTkZJR19TTE9CIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BST0ZJTElORyBpcyBub3Qgc2V0CisjIENPTkZJR19NQVJLRVJTIGlzIG5vdCBzZXQKK0NPTkZJR19IQVZFX09QUk9GSUxFPXkKK0NPTkZJR19IQVZFX0tQUk9CRVM9eQorQ09ORklHX0hBVkVfS1JFVFBST0JFUz15CitDT05GSUdfUFJPQ19QQUdFX01PTklUT1I9eQorQ09ORklHX1NMQUJJTkZPPXkKICMgQ09ORklHX1RJTllfU0hNRU0gaXMgbm90IHNldAogQ09ORklHX0JBU0VfU01BTEw9MQogIyBDT05GSUdfTU9EVUxFUyBpcyBub3Qgc2V0CkBAIC0xMTcsMTIgKzEzMSwxMyBAQAogIyBDT05GSUdfREVGQVVMVF9DRlEgaXMgbm90IHNldAogIyBDT05GSUdfREVGQVVMVF9OT09QIGlzIG5vdCBzZXQKIENPTkZJR19ERUZBVUxUX0lPU0NIRUQ9ImRlYWRsaW5lIgorQ09ORklHX0NMQVNTSUNfUkNVPXkKIAogIwogIyBQbGF0Zm9ybSBzdXBwb3J0CiAjCi0jIENPTkZJR19QUENfTVBDNTJ4eCBpcyBub3Qgc2V0Ci0jIENPTkZJR19QUENfTVBDNTIwMCBpcyBub3Qgc2V0CisjIENPTkZJR19QUENfTVBDNTEyeCBpcyBub3Qgc2V0CisjIENPTkZJR19QUENfTVBDNTEyMSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfQ0VMTCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfQ0VMTF9OQVRJVkUgaXMgbm90IHNldAogQ09ORklHX0NQTTE9eQpAQCAtMTMwLDYgKzE0NSw3IEBACiAjIENPTkZJR19NUEM4NlhBRFMgaXMgbm90IHNldAogIyBDT05GSUdfTVBDODg1QURTIGlzIG5vdCBzZXQKIENPTkZJR19QUENfRVA4OFhDPXkKKyMgQ09ORklHX1BQQ19BRERFUjg3NSBpcyBub3Qgc2V0CiAKICMKICMgTVBDOHh4IENQTSBPcHRpb25zCkBAIC0xNDYsNiArMTYyLDcgQEAKICMgQ09ORklHX0kyQ19TUElfVUNPREVfUEFUQ0ggaXMgbm90IHNldAogIyBDT05GSUdfSTJDX1NQSV9TTUMxX1VDT0RFX1BBVENIIGlzIG5vdCBzZXQKICMgQ09ORklHX1BRMkFEUyBpcyBub3Qgc2V0CisjIENPTkZJR19JUElDIGlzIG5vdCBzZXQKICMgQ09ORklHX01QSUMgaXMgbm90IHNldAogIyBDT05GSUdfTVBJQ19XRUlSRCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfSTgyNTkgaXMgbm90IHNldApAQCAtMTU2LDcgKzE3Myw2IEBACiAjIENPTkZJR19QUENfSU5ESVJFQ1RfSU8gaXMgbm90IHNldAogIyBDT05GSUdfR0VORVJJQ19JT01BUCBpcyBub3Qgc2V0CiAjIENPTkZJR19DUFVfRlJFUSBpcyBub3Qgc2V0Ci0jIENPTkZJR19DUE0yIGlzIG5vdCBzZXQKIENPTkZJR19QUENfQ1BNX05FV19CSU5ESU5HPXkKICMgQ09ORklHX0ZTTF9VTEkxNTc1IGlzIG5vdCBzZXQKIENPTkZJR19DUE09eQpAQCAtMTc0LDYgKzE5MCw3IEBACiAjIENPTkZJR19IWl8zMDAgaXMgbm90IHNldAogIyBDT05GSUdfSFpfMTAwMCBpcyBub3Qgc2V0CiBDT05GSUdfSFo9MTAwCisjIENPTkZJR19TQ0hFRF9IUlRJQ0sgaXMgbm90IHNldAogQ09ORklHX1BSRUVNUFRfTk9ORT15CiAjIENPTkZJR19QUkVFTVBUX1ZPTFVOVEFSWSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUkVFTVBUIGlzIG5vdCBzZXQKQEAgLTE4MSw3ICsxOTgsMTAgQEAKICMgQ09ORklHX0JJTkZNVF9NSVNDIGlzIG5vdCBzZXQKICMgQ09ORklHX01BVEhfRU1VTEFUSU9OIGlzIG5vdCBzZXQKIENPTkZJR184WFhfTUlOSU1BTF9GUEVNVT15CisjIENPTkZJR19JT01NVV9IRUxQRVIgaXMgbm90IHNldAogQ09ORklHX0FSQ0hfRU5BQkxFX01FTU9SWV9IT1RQTFVHPXkKK0NPTkZJR19BUkNIX0hBU19XQUxLX01FTU9SWT15CitDT05GSUdfQVJDSF9FTkFCTEVfTUVNT1JZX0hPVFJFTU9WRT15CiBDT05GSUdfQVJDSF9GTEFUTUVNX0VOQUJMRT15CiBDT05GSUdfQVJDSF9QT1BVTEFURVNfTk9ERV9NQVA9eQogQ09ORklHX1NFTEVDVF9NRU1PUllfTU9ERUw9eQpAQCAtMjAwLDExICsyMjAsNyBAQAogQ09ORklHX1BST0NfREVWSUNFVFJFRT15CiAjIENPTkZJR19DTURMSU5FX0JPT0wgaXMgbm90IHNldAogIyBDT05GSUdfUE0gaXMgbm90IHNldAotQ09ORklHX1NVU1BFTkRfVVBfUE9TU0lCTEU9eQotQ09ORklHX0hJQkVSTkFUSU9OX1VQX1BPU1NJQkxFPXkKICMgQ09ORklHX1NFQ0NPTVAgaXMgbm90IHNldAotQ09ORklHX1dBTlRfREVWSUNFX1RSRUU9eQotQ09ORklHX0RFVklDRV9UUkVFPSJlcDg4eGMuZHRzIgogQ09ORklHX0lTQV9ETUFfQVBJPXkKIAogIwpAQCAtMzAxLDYgKzMxNyw3IEBACiAjCiAjIENPTkZJR19ORVRfUEtUR0VOIGlzIG5vdCBzZXQKICMgQ09ORklHX0hBTVJBRElPIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NBTiBpcyBub3Qgc2V0CiAjIENPTkZJR19JUkRBIGlzIG5vdCBzZXQKICMgQ09ORklHX0JUIGlzIG5vdCBzZXQKICMgQ09ORklHX0FGX1JYUlBDIGlzIG5vdCBzZXQKQEAgLTQwNyw2ICs0MjQsNyBAQAogIyBDT05GSUdfUEFSUE9SVCBpcyBub3Qgc2V0CiAjIENPTkZJR19CTEtfREVWIGlzIG5vdCBzZXQKICMgQ09ORklHX01JU0NfREVWSUNFUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9JREU9eQogIyBDT05GSUdfSURFIGlzIG5vdCBzZXQKIAogIwpAQCAtNDQxLDYgKzQ1OSw3IEBACiAjIENPTkZJR19TTVNDX1BIWSBpcyBub3Qgc2V0CiAjIENPTkZJR19CUk9BRENPTV9QSFkgaXMgbm90IHNldAogIyBDT05GSUdfSUNQTFVTX1BIWSBpcyBub3Qgc2V0CisjIENPTkZJR19SRUFMVEVLX1BIWSBpcyBub3Qgc2V0CiAjIENPTkZJR19GSVhFRF9QSFkgaXMgbm90IHNldAogIyBDT05GSUdfTURJT19CSVRCQU5HIGlzIG5vdCBzZXQKIENPTkZJR19ORVRfRVRIRVJORVQ9eQpAQCAtNDY1LDcgKzQ4NCw2IEBACiAjIENPTkZJR19XQU4gaXMgbm90IHNldAogIyBDT05GSUdfUFBQIGlzIG5vdCBzZXQKICMgQ09ORklHX1NMSVAgaXMgbm90IHNldAotIyBDT05GSUdfU0hBUEVSIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVENPTlNPTEUgaXMgbm90IHNldAogIyBDT05GSUdfTkVUUE9MTCBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRfUE9MTF9DT05UUk9MTEVSIGlzIG5vdCBzZXQKQEAgLTUyOCw2ICs1NDYsNyBAQAogIyBDT05GSUdfVzEgaXMgbm90IHNldAogIyBDT05GSUdfUE9XRVJfU1VQUExZIGlzIG5vdCBzZXQKICMgQ09ORklHX0hXTU9OIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RIRVJNQUwgaXMgbm90IHNldAogIyBDT05GSUdfV0FUQ0hET0cgaXMgbm90IHNldAogCiAjCkBAIC01NjcsOSArNTg2LDExIEBACiAjIENPTkZJR19TT1VORCBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfU1VQUE9SVCBpcyBub3Qgc2V0CiAjIENPTkZJR19NTUMgaXMgbm90IHNldAorIyBDT05GSUdfTUVNU1RJQ0sgaXMgbm90IHNldAogIyBDT05GSUdfTkVXX0xFRFMgaXMgbm90IHNldAogIyBDT05GSUdfRURBQyBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfQ0xBU1MgaXMgbm90IHNldAorIyBDT05GSUdfRE1BREVWSUNFUyBpcyBub3Qgc2V0CiAKICMKICMgVXNlcnNwYWNlIEkvTwpAQCAtNTg4LDExICs2MDksOSBAQAogIyBDT05GSUdfWEZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0dGUzJfRlMgaXMgbm90IHNldAogIyBDT05GSUdfT0NGUzJfRlMgaXMgbm90IHNldAotIyBDT05GSUdfTUlOSVhfRlMgaXMgbm90IHNldAotIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfRE5PVElGWSBpcyBub3Qgc2V0CiAjIENPTkZJR19JTk9USUZZIGlzIG5vdCBzZXQKICMgQ09ORklHX1FVT1RBIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ROT1RJRlkgaXMgbm90IHNldAogIyBDT05GSUdfQVVUT0ZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0FVVE9GUzRfRlMgaXMgbm90IHNldAogIyBDT05GSUdfRlVTRV9GUyBpcyBub3Qgc2V0CkBAIC02MzUsOCArNjU0LDEwIEBACiAjIENPTkZJR19KRkZTMl9GUyBpcyBub3Qgc2V0CiBDT05GSUdfQ1JBTUZTPXkKICMgQ09ORklHX1ZYRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfTUlOSVhfRlMgaXMgbm90IHNldAogIyBDT05GSUdfSFBGU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19RTlg0RlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfU1lTVl9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19VRlNfRlMgaXMgbm90IHNldAogQ09ORklHX05FVFdPUktfRklMRVNZU1RFTVM9eQpAQCAtNjgzLDcgKzcwNCw2IEBACiAjIENPTkZJR19TWVNWNjhfUEFSVElUSU9OIGlzIG5vdCBzZXQKICMgQ09ORklHX05MUyBpcyBub3Qgc2V0CiAjIENPTkZJR19ETE0gaXMgbm90IHNldAotIyBDT05GSUdfVUNDX1NMT1cgaXMgbm90IHNldAogCiAjCiAjIExpYnJhcnkgcm91dGluZXMKQEAgLTY5OCw3ICs3MTgsNiBAQAogQ09ORklHX0hBU19JT01FTT15CiBDT05GSUdfSEFTX0lPUE9SVD15CiBDT05GSUdfSEFTX0RNQT15Ci0jIENPTkZJR19JTlNUUlVNRU5UQVRJT04gaXMgbm90IHNldAogCiAjCiAjIEtlcm5lbCBoYWNraW5nCkBAIC03MTcsNiArNzM2LDcgQEAKICMgQ09ORklHX1NDSEVEU1RBVFMgaXMgbm90IHNldAogIyBDT05GSUdfVElNRVJfU1RBVFMgaXMgbm90IHNldAogIyBDT05GSUdfU0xVQl9ERUJVR19PTiBpcyBub3Qgc2V0CisjIENPTkZJR19TTFVCX1NUQVRTIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NQSU5MT0NLIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX01VVEVYRVMgaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfU1BJTkxPQ0tfU0xFRVAgaXMgbm90IHNldApAQCAtNzI3LDggKzc0Nyw4IEBACiAjIENPTkZJR19ERUJVR19WTSBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19MSVNUIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NHIGlzIG5vdCBzZXQKLUNPTkZJR19GT1JDRURfSU5MSU5JTkc9eQogIyBDT05GSUdfQk9PVF9QUklOVEtfREVMQVkgaXMgbm90IHNldAorIyBDT05GSUdfQkFDS1RSQUNFX1NFTEZfVEVTVCBpcyBub3Qgc2V0CiAjIENPTkZJR19GQVVMVF9JTkpFQ1RJT04gaXMgbm90IHNldAogIyBDT05GSUdfU0FNUExFUyBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19TVEFDS09WRVJGTE9XIGlzIG5vdCBzZXQKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9jb25maWdzL2c1X2RlZmNvbmZpZyBiL2FyY2gvcG93ZXJwYy9jb25maWdzL2c1X2RlZmNvbmZpZwppbmRleCAzNjczZGQyLi4wZjgyZjY2IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvY29uZmlncy9nNV9kZWZjb25maWcKKysrIGIvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvZzVfZGVmY29uZmlnCkBAIC0xLDcgKzEsNyBAQAogIwogIyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBtYWtlIGNvbmZpZzogZG9uJ3QgZWRpdAotIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjI0LXJjNAotIyBUaHUgRGVjICA2IDE2OjQ4OjE1IDIwMDcKKyMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4yNS1yYzYKKyMgVGh1IE1hciAyMCAxMDozNjo0MSAyMDA4CiAjCiBDT05GSUdfUFBDNjQ9eQogCkBAIC0yNyw2ICsyNyw3IEBACiBDT05GSUdfR0VORVJJQ19USU1FX1ZTWVNDQUxMPXkKIENPTkZJR19HRU5FUklDX0NMT0NLRVZFTlRTPXkKIENPTkZJR19HRU5FUklDX0hBUkRJUlFTPXkKK0NPTkZJR19IQVZFX1NFVFVQX1BFUl9DUFVfQVJFQT15CiBDT05GSUdfSVJRX1BFUl9DUFU9eQogQ09ORklHX1JXU0VNX1hDSEdBRERfQUxHT1JJVEhNPXkKIENPTkZJR19BUkNIX0hBU19JTE9HMl9VMzI9eQpAQCAtNDgsNyArNDksOSBAQAogQ09ORklHX0FVRElUX0FSQ0g9eQogQ09ORklHX0dFTkVSSUNfQlVHPXkKICMgQ09ORklHX0RFRkFVTFRfVUlNQUdFIGlzIG5vdCBzZXQKLUNPTkZJR19QUEM2NF9TV1NVU1A9eQorQ09ORklHX0hJQkVSTkFURV82ND15CitDT05GSUdfQVJDSF9ISUJFUk5BVElPTl9QT1NTSUJMRT15CitDT05GSUdfQVJDSF9TVVNQRU5EX1BPU1NJQkxFPXkKICMgQ09ORklHX1BQQ19EQ1JfTkFUSVZFIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19EQ1JfTU1JTyBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfT0ZfUExBVEZPUk1fUENJIGlzIG5vdCBzZXQKQEAgLTY4LDE4ICs3MSwyMiBAQAogQ09ORklHX1BPU0lYX01RVUVVRT15CiAjIENPTkZJR19CU0RfUFJPQ0VTU19BQ0NUIGlzIG5vdCBzZXQKICMgQ09ORklHX1RBU0tTVEFUUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19VU0VSX05TIGlzIG5vdCBzZXQKLSMgQ09ORklHX1BJRF9OUyBpcyBub3Qgc2V0CiAjIENPTkZJR19BVURJVCBpcyBub3Qgc2V0CiBDT05GSUdfSUtDT05GSUc9eQogQ09ORklHX0lLQ09ORklHX1BST0M9eQogQ09ORklHX0xPR19CVUZfU0hJRlQ9MTcKICMgQ09ORklHX0NHUk9VUFMgaXMgbm90IHNldAotQ09ORklHX0ZBSVJfR1JPVVBfU0NIRUQ9eQotQ09ORklHX0ZBSVJfVVNFUl9TQ0hFRD15Ci0jIENPTkZJR19GQUlSX0NHUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CisjIENPTkZJR19HUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CisjIENPTkZJR19VU0VSX1NDSEVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NHUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CiBDT05GSUdfU1lTRlNfREVQUkVDQVRFRD15CitDT05GSUdfU1lTRlNfREVQUkVDQVRFRF9WMj15CiAjIENPTkZJR19SRUxBWSBpcyBub3Qgc2V0CitDT05GSUdfTkFNRVNQQUNFUz15CisjIENPTkZJR19VVFNfTlMgaXMgbm90IHNldAorIyBDT05GSUdfSVBDX05TIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTRVJfTlMgaXMgbm90IHNldAorIyBDT05GSUdfUElEX05TIGlzIG5vdCBzZXQKIENPTkZJR19CTEtfREVWX0lOSVRSRD15CiBDT05GSUdfSU5JVFJBTUZTX1NPVVJDRT0iIgogQ09ORklHX0NDX09QVElNSVpFX0ZPUl9TSVpFPXkKQEAgLTkzLDExICsxMDAsMTMgQEAKIENPTkZJR19QUklOVEs9eQogQ09ORklHX0JVRz15CiBDT05GSUdfRUxGX0NPUkU9eQorIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0CiBDT05GSUdfQkFTRV9GVUxMPXkKIENPTkZJR19GVVRFWD15CiBDT05GSUdfQU5PTl9JTk9ERVM9eQogQ09ORklHX0VQT0xMPXkKIENPTkZJR19TSUdOQUxGRD15CitDT05GSUdfVElNRVJGRD15CiBDT05GSUdfRVZFTlRGRD15CiBDT05GSUdfU0hNRU09eQogQ09ORklHX1ZNX0VWRU5UX0NPVU5URVJTPXkKQEAgLTEwNSw2ICsxMTQsMTUgQEAKICMgQ09ORklHX1NMQUIgaXMgbm90IHNldAogQ09ORklHX1NMVUI9eQogIyBDT05GSUdfU0xPQiBpcyBub3Qgc2V0CitDT05GSUdfUFJPRklMSU5HPXkKKyMgQ09ORklHX01BUktFUlMgaXMgbm90IHNldAorQ09ORklHX09QUk9GSUxFPXkKK0NPTkZJR19IQVZFX09QUk9GSUxFPXkKKyMgQ09ORklHX0tQUk9CRVMgaXMgbm90IHNldAorQ09ORklHX0hBVkVfS1BST0JFUz15CitDT05GSUdfSEFWRV9LUkVUUFJPQkVTPXkKK0NPTkZJR19QUk9DX1BBR0VfTU9OSVRPUj15CitDT05GSUdfU0xBQklORk89eQogQ09ORklHX1JUX01VVEVYRVM9eQogIyBDT05GSUdfVElOWV9TSE1FTSBpcyBub3Qgc2V0CiBDT05GSUdfQkFTRV9TTUFMTD0wCkBAIC0xMzIsNiArMTUwLDcgQEAKICMgQ09ORklHX0RFRkFVTFRfQ0ZRIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFRkFVTFRfTk9PUCBpcyBub3Qgc2V0CiBDT05GSUdfREVGQVVMVF9JT1NDSEVEPSJhbnRpY2lwYXRvcnkiCitDT05GSUdfQ0xBU1NJQ19SQ1U9eQogCiAjCiAjIFBsYXRmb3JtIHN1cHBvcnQKQEAgLTE0Miw4ICsxNjEsOCBAQAogIyBDT05GSUdfUFBDXzg2eHggaXMgbm90IHNldAogIyBDT05GSUdfUFBDX1BTRVJJRVMgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0lTRVJJRVMgaXMgbm90IHNldAotIyBDT05GSUdfUFBDX01QQzUyeHggaXMgbm90IHNldAotIyBDT05GSUdfUFBDX01QQzUyMDAgaXMgbm90IHNldAorIyBDT05GSUdfUFBDX01QQzUxMnggaXMgbm90IHNldAorIyBDT05GSUdfUFBDX01QQzUxMjEgaXMgbm90IHNldAogQ09ORklHX1BQQ19QTUFDPXkKIENPTkZJR19QUENfUE1BQzY0PXkKICMgQ09ORklHX1BQQ19NQVBMRSBpcyBub3Qgc2V0CkBAIC0xNTUsNiArMTc0LDcgQEAKICMgQ09ORklHX1BQQ19JQk1fQ0VMTF9CTEFERSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUTJBRFMgaXMgbm90IHNldAogQ09ORklHX1BQQ19OQVRJVkU9eQorIyBDT05GSUdfSVBJQyBpcyBub3Qgc2V0CiBDT05GSUdfTVBJQz15CiAjIENPTkZJR19NUElDX1dFSVJEIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19JODI1OSBpcyBub3Qgc2V0CkBAIC0xODUsNyArMjA1LDYgQEAKICMgQ1BVIEZyZXF1ZW5jeSBkcml2ZXJzCiAjCiBDT05GSUdfQ1BVX0ZSRVFfUE1BQzY0PXkKLSMgQ09ORklHX0NQTTIgaXMgbm90IHNldAogIyBDT05GSUdfRlNMX1VMSTE1NzUgaXMgbm90IHNldAogCiAjCkBAIC0yMDAsMTcgKzIxOSwyMSBAQAogIyBDT05GSUdfSFpfMzAwIGlzIG5vdCBzZXQKICMgQ09ORklHX0haXzEwMDAgaXMgbm90IHNldAogQ09ORklHX0haPTI1MAorIyBDT05GSUdfU0NIRURfSFJUSUNLIGlzIG5vdCBzZXQKIENPTkZJR19QUkVFTVBUX05PTkU9eQogIyBDT05GSUdfUFJFRU1QVF9WT0xVTlRBUlkgaXMgbm90IHNldAogIyBDT05GSUdfUFJFRU1QVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19QUkVFTVBUX0JLTCBpcyBub3Qgc2V0CiBDT05GSUdfQklORk1UX0VMRj15CitDT05GSUdfQ09NUEFUX0JJTkZNVF9FTEY9eQogIyBDT05GSUdfQklORk1UX01JU0MgaXMgbm90IHNldAogQ09ORklHX0ZPUkNFX01BWF9aT05FT1JERVI9MTMKIENPTkZJR19IVUdFVExCX1BBR0VfU0laRV9WQVJJQUJMRT15CiBDT05GSUdfSU9NTVVfVk1FUkdFPXkKK0NPTkZJR19JT01NVV9IRUxQRVI9eQogIyBDT05GSUdfSE9UUExVR19DUFUgaXMgbm90IHNldAogQ09ORklHX0FSQ0hfRU5BQkxFX01FTU9SWV9IT1RQTFVHPXkKK0NPTkZJR19BUkNIX0hBU19XQUxLX01FTU9SWT15CitDT05GSUdfQVJDSF9FTkFCTEVfTUVNT1JZX0hPVFJFTU9WRT15CiBDT05GSUdfS0VYRUM9eQogIyBDT05GSUdfQ1JBU0hfRFVNUCBpcyBub3Qgc2V0CiBDT05GSUdfSVJRX0FMTF9DUFVTPXkKQEAgLTIzNiwxMSArMjU5LDkgQEAKICMgQ09ORklHX1NDSEVEX1NNVCBpcyBub3Qgc2V0CiBDT05GSUdfUFJPQ19ERVZJQ0VUUkVFPXkKICMgQ09ORklHX0NNRExJTkVfQk9PTCBpcyBub3Qgc2V0CitDT05GSUdfQVJDSF9XQU5UU19GUkVFWkVSX0NPTlRST0w9eQogIyBDT05GSUdfUE0gaXMgbm90IHNldAotQ09ORklHX1NVU1BFTkRfU01QX1BPU1NJQkxFPXkKLUNPTkZJR19ISUJFUk5BVElPTl9TTVBfUE9TU0lCTEU9eQogQ09ORklHX1NFQ0NPTVA9eQotIyBDT05GSUdfV0FOVF9ERVZJQ0VfVFJFRSBpcyBub3Qgc2V0CiBDT05GSUdfSVNBX0RNQV9BUEk9eQogCiAjCkBAIC0yNzYsNiArMjk3LDcgQEAKIENPTkZJR19YRlJNX1VTRVI9bQogIyBDT05GSUdfWEZSTV9TVUJfUE9MSUNZIGlzIG5vdCBzZXQKICMgQ09ORklHX1hGUk1fTUlHUkFURSBpcyBub3Qgc2V0CisjIENPTkZJR19YRlJNX1NUQVRJU1RJQ1MgaXMgbm90IHNldAogQ09ORklHX05FVF9LRVk9bQogIyBDT05GSUdfTkVUX0tFWV9NSUdSQVRFIGlzIG5vdCBzZXQKIENPTkZJR19JTkVUPXkKQEAgLTMxMCwxMiArMzMyLDE0IEBACiAjIENPTkZJR19ORVRXT1JLX1NFQ01BUksgaXMgbm90IHNldAogQ09ORklHX05FVEZJTFRFUj15CiAjIENPTkZJR19ORVRGSUxURVJfREVCVUcgaXMgbm90IHNldAorQ09ORklHX05FVEZJTFRFUl9BRFZBTkNFRD15CiAKICMKICMgQ29yZSBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvbgogIwotIyBDT05GSUdfTkVURklMVEVSX05FVExJTksgaXMgbm90IHNldAotQ09ORklHX05GX0NPTk5UUkFDS19FTkFCTEVEPW0KK0NPTkZJR19ORVRGSUxURVJfTkVUTElOSz1tCitDT05GSUdfTkVURklMVEVSX05FVExJTktfUVVFVUU9bQorQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LX0xPRz1tCiBDT05GSUdfTkZfQ09OTlRSQUNLPW0KICMgQ09ORklHX05GX0NUX0FDQ1QgaXMgbm90IHNldAogQ09ORklHX05GX0NPTk5UUkFDS19NQVJLPXkKQEAgLTMzMSw2ICszNTUsNyBAQAogIyBDT05GSUdfTkZfQ09OTlRSQUNLX1NBTkUgaXMgbm90IHNldAogIyBDT05GSUdfTkZfQ09OTlRSQUNLX1NJUCBpcyBub3Qgc2V0CiBDT05GSUdfTkZfQ09OTlRSQUNLX1RGVFA9bQorQ09ORklHX05GX0NUX05FVExJTks9bQogIyBDT05GSUdfTkVURklMVEVSX1hUQUJMRVMgaXMgbm90IHNldAogCiAjCkBAIC0zNjMsNiArMzg4LDcgQEAKICMKICMgQ09ORklHX05FVF9QS1RHRU4gaXMgbm90IHNldAogIyBDT05GSUdfSEFNUkFESU8gaXMgbm90IHNldAorIyBDT05GSUdfQ0FOIGlzIG5vdCBzZXQKICMgQ09ORklHX0lSREEgaXMgbm90IHNldAogIyBDT05GSUdfQlQgaXMgbm90IHNldAogIyBDT05GSUdfQUZfUlhSUEMgaXMgbm90IHNldApAQCAtNDA5LDcgKzQzNSw3IEBACiBDT05GSUdfQkxLX0RFVl9SQU09eQogQ09ORklHX0JMS19ERVZfUkFNX0NPVU5UPTE2CiBDT05GSUdfQkxLX0RFVl9SQU1fU0laRT02NTUzNgotQ09ORklHX0JMS19ERVZfUkFNX0JMT0NLU0laRT0xMDI0CisjIENPTkZJR19CTEtfREVWX1hJUCBpcyBub3Qgc2V0CiBDT05GSUdfQ0RST01fUEtUQ0RWRD1tCiBDT05GSUdfQ0RST01fUEtUQ0RWRF9CVUZGRVJTPTgKICMgQ09ORklHX0NEUk9NX1BLVENEVkRfV0NBQ0hFIGlzIG5vdCBzZXQKQEAgLTQxOSwxNiArNDQ1LDE5IEBACiAjIENPTkZJR19FRVBST01fOTNDWDYgaXMgbm90IHNldAogIyBDT05GSUdfU0dJX0lPQzQgaXMgbm90IHNldAogIyBDT05GSUdfVElGTV9DT1JFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VOQ0xPU1VSRV9TRVJWSUNFUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9JREU9eQogQ09ORklHX0lERT15CiBDT05GSUdfQkxLX0RFVl9JREU9eQogCiAjCi0jIFBsZWFzZSBzZWUgRG9jdW1lbnRhdGlvbi9pZGUudHh0IGZvciBoZWxwL2luZm8gb24gSURFIGRyaXZlcworIyBQbGVhc2Ugc2VlIERvY3VtZW50YXRpb24vaWRlL2lkZS50eHQgZm9yIGhlbHAvaW5mbyBvbiBJREUgZHJpdmVzCiAjCiAjIENPTkZJR19CTEtfREVWX0lERV9TQVRBIGlzIG5vdCBzZXQKIENPTkZJR19CTEtfREVWX0lERURJU0s9eQogIyBDT05GSUdfSURFRElTS19NVUxUSV9NT0RFIGlzIG5vdCBzZXQKIENPTkZJR19CTEtfREVWX0lERUNEPXkKK0NPTkZJR19CTEtfREVWX0lERUNEX1ZFUkJPU0VfRVJST1JTPXkKICMgQ09ORklHX0JMS19ERVZfSURFVEFQRSBpcyBub3Qgc2V0CiAjIENPTkZJR19CTEtfREVWX0lERUZMT1BQWSBpcyBub3Qgc2V0CiAjIENPTkZJR19CTEtfREVWX0lERVNDU0kgaXMgbm90IHNldApAQCAtNDQwLDEyICs0NjksMTIgQEAKICMKIENPTkZJR19JREVfR0VORVJJQz15CiAjIENPTkZJR19CTEtfREVWX1BMQVRGT1JNIGlzIG5vdCBzZXQKK0NPTkZJR19CTEtfREVWX0lERURNQV9TRkY9eQogCiAjCiAjIFBDSSBJREUgY2hpcHNldHMgc3VwcG9ydAogIwogQ09ORklHX0JMS19ERVZfSURFUENJPXkKLSMgQ09ORklHX0lERVBDSV9TSEFSRV9JUlEgaXMgbm90IHNldAogQ09ORklHX0lERVBDSV9QQ0lCVVNfT1JERVI9eQogIyBDT05GSUdfQkxLX0RFVl9HRU5FUklDIGlzIG5vdCBzZXQKICMgQ09ORklHX0JMS19ERVZfT1BUSTYyMSBpcyBub3Qgc2V0CkBAIC00NzgsNyArNTA3LDYgQEAKIENPTkZJR19CTEtfREVWX0lERV9QTUFDPXkKIENPTkZJR19CTEtfREVWX0lERV9QTUFDX0FUQTEwMEZJUlNUPXkKIENPTkZJR19CTEtfREVWX0lERURNQV9QTUFDPXkKLSMgQ09ORklHX0lERV9BUk0gaXMgbm90IHNldAogQ09ORklHX0JMS19ERVZfSURFRE1BPXkKIENPTkZJR19JREVfQVJDSF9PQlNPTEVURV9JTklUPXkKICMgQ09ORklHX0JMS19ERVZfSEQgaXMgbm90IHNldApAQCAtNTQ0LDYgKzU3Miw3IEBACiAjIENPTkZJR19TQ1NJX0lQUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX0lOSVRJTyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX0lOSUExMDAgaXMgbm90IHNldAorIyBDT05GSUdfU0NTSV9NVlNBUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX1NURVggaXMgbm90IHNldAogIyBDT05GSUdfU0NTSV9TWU01M0M4WFhfMiBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX0lQUiBpcyBub3Qgc2V0CkBAIC01OTYsNiArNjI1LDcgQEAKICMgQ09ORklHX1BBVEFfTVBJSVggaXMgbm90IHNldAogIyBDT05GSUdfUEFUQV9PTERQSUlYIGlzIG5vdCBzZXQKICMgQ09ORklHX1BBVEFfTkVUQ0VMTCBpcyBub3Qgc2V0CisjIENPTkZJR19QQVRBX05JTkpBMzIgaXMgbm90IHNldAogIyBDT05GSUdfUEFUQV9OUzg3NDEwIGlzIG5vdCBzZXQKICMgQ09ORklHX1BBVEFfTlM4NzQxNSBpcyBub3Qgc2V0CiAjIENPTkZJR19QQVRBX09QVEkgaXMgbm90IHNldApAQCAtNjEwLDYgKzY0MCw3IEBACiAjIENPTkZJR19QQVRBX1NJUyBpcyBub3Qgc2V0CiAjIENPTkZJR19QQVRBX1ZJQSBpcyBub3Qgc2V0CiAjIENPTkZJR19QQVRBX1dJTkJPTkQgaXMgbm90IHNldAorIyBDT05GSUdfUEFUQV9QTEFURk9STSBpcyBub3Qgc2V0CiBDT05GSUdfTUQ9eQogQ09ORklHX0JMS19ERVZfTUQ9eQogQ09ORklHX01EX0xJTkVBUj15CkBAIC02NzYsNyArNzA3LDYgQEAKICMgQ09ORklHX0VRVUFMSVpFUiBpcyBub3Qgc2V0CiBDT05GSUdfVFVOPW0KICMgQ09ORklHX1ZFVEggaXMgbm90IHNldAotIyBDT05GSUdfSVAxMDAwIGlzIG5vdCBzZXQKICMgQ09ORklHX0FSQ05FVCBpcyBub3Qgc2V0CiAjIENPTkZJR19QSFlMSUIgaXMgbm90IHNldAogQ09ORklHX05FVF9FVEhFUk5FVD15CkBAIC03MDEsNiArNzMxLDkgQEAKICMgQ09ORklHX0UxMDAwX05BUEkgaXMgbm90IHNldAogIyBDT05GSUdfRTEwMDBfRElTQUJMRV9QQUNLRVRfU1BMSVQgaXMgbm90IHNldAogIyBDT05GSUdfRTEwMDBFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0UxMDAwRV9FTkFCTEVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lQMTAwMCBpcyBub3Qgc2V0CisjIENPTkZJR19JR0IgaXMgbm90IHNldAogIyBDT05GSUdfTlM4MzgyMCBpcyBub3Qgc2V0CiAjIENPTkZJR19IQU1BQ0hJIGlzIG5vdCBzZXQKICMgQ09ORklHX1lFTExPV0ZJTiBpcyBub3Qgc2V0CkBAIC03MjYsNiArNzU5LDcgQEAKICMgQ09ORklHX1BBU0VNSV9NQUMgaXMgbm90IHNldAogIyBDT05GSUdfTUxYNF9DT1JFIGlzIG5vdCBzZXQKICMgQ09ORklHX1RFSFVUSSBpcyBub3Qgc2V0CisjIENPTkZJR19CTlgyWCBpcyBub3Qgc2V0CiBDT05GSUdfVFI9eQogQ09ORklHX0lCTU9MPXkKICMgQ09ORklHXzNDMzU5IGlzIG5vdCBzZXQKQEAgLTc3MSw3ICs4MDUsNiBAQAogIyBDT05GSUdfU0xJUCBpcyBub3Qgc2V0CiBDT05GSUdfU0xIQz1tCiAjIENPTkZJR19ORVRfRkMgaXMgbm90IHNldAotIyBDT05GSUdfU0hBUEVSIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVENPTlNPTEUgaXMgbm90IHNldAogIyBDT05GSUdfTkVUUE9MTCBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRfUE9MTF9DT05UUk9MTEVSIGlzIG5vdCBzZXQKQEAgLTgzNCw2ICs4NjcsNyBAQAogQ09ORklHX0hXX0NPTlNPTEU9eQogIyBDT05GSUdfVlRfSFdfQ09OU09MRV9CSU5ESU5HIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFUklBTF9OT05TVEFOREFSRCBpcyBub3Qgc2V0CisjIENPTkZJR19OT1pPTUkgaXMgbm90IHNldAogCiAjCiAjIFNlcmlhbCBkcml2ZXJzCkBAIC05MDEsMTMgKzkzNSwxMiBAQAogIwogIyBNaXNjZWxsYW5lb3VzIEkyQyBDaGlwIHN1cHBvcnQKICMKLSMgQ09ORklHX1NFTlNPUlNfRFMxMzM3IGlzIG5vdCBzZXQKLSMgQ09ORklHX1NFTlNPUlNfRFMxMzc0IGlzIG5vdCBzZXQKICMgQ09ORklHX0RTMTY4MiBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0VFUFJPTSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1BDRjg1NzQgaXMgbm90IHNldAotIyBDT05GSUdfU0VOU09SU19QQ0E5NTM5IGlzIG5vdCBzZXQKKyMgQ09ORklHX1BDRjg1NzUgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19QQ0Y4NTkxIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RQUzY1MDEwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfTUFYNjg3NSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1RTTDI1NTAgaXMgbm90IHNldAogIyBDT05GSUdfSTJDX0RFQlVHX0NPUkUgaXMgbm90IHNldApAQCAtOTIzLDYgKzk1Niw3IEBACiAjIENPTkZJR19XMSBpcyBub3Qgc2V0CiAjIENPTkZJR19QT1dFUl9TVVBQTFkgaXMgbm90IHNldAogIyBDT05GSUdfSFdNT04gaXMgbm90IHNldAorIyBDT05GSUdfVEhFUk1BTCBpcyBub3Qgc2V0CiAjIENPTkZJR19XQVRDSERPRyBpcyBub3Qgc2V0CiAKICMKQEAgLTEwODMsNiArMTExNyw3IEBACiAjIENPTkZJR19TTkRfQlQ4N1ggaXMgbm90IHNldAogIyBDT05GSUdfU05EX0NBMDEwNiBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfQ01JUENJIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NORF9PWFlHRU4gaXMgbm90IHNldAogIyBDT05GSUdfU05EX0NTNDI4MSBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfQ1M0NlhYIGlzIG5vdCBzZXQKICMgQ09ORklHX1NORF9DUzU1MzAgaXMgbm90IHNldApAQCAtMTEwOCw2ICsxMTQzLDcgQEAKICMgQ09ORklHX1NORF9IREFfSU5URUwgaXMgbm90IHNldAogIyBDT05GSUdfU05EX0hEU1AgaXMgbm90IHNldAogIyBDT05GSUdfU05EX0hEU1BNIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NORF9ISUZJRVIgaXMgbm90IHNldAogIyBDT05GSUdfU05EX0lDRTE3MTIgaXMgbm90IHNldAogIyBDT05GSUdfU05EX0lDRTE3MjQgaXMgbm90IHNldAogIyBDT05GSUdfU05EX0lOVEVMOFgwIGlzIG5vdCBzZXQKQEAgLTExMjUsNiArMTE2MSw3IEBACiAjIENPTkZJR19TTkRfVFJJREVOVCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfVklBODJYWCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfVklBODJYWF9NT0RFTSBpcyBub3Qgc2V0CisjIENPTkZJR19TTkRfVklSVFVPU08gaXMgbm90IHNldAogIyBDT05GSUdfU05EX1ZYMjIyIGlzIG5vdCBzZXQKICMgQ09ORklHX1NORF9ZTUZQQ0kgaXMgbm90IHNldAogCkBAIC0xMTY2LDYgKzEyMDMsMTAgQEAKICMKIAogIworIyBBTFNBIFNvQyBhdWRpbyBmb3IgRnJlZXNjYWxlIFNPQ3MKKyMKKworIwogIyBPcGVuIFNvdW5kIFN5c3RlbQogIwogIyBDT05GSUdfU09VTkRfUFJJTUUgaXMgbm90IHNldApAQCAtMTE5Miw2ICsxMjMzLDcgQEAKIENPTkZJR19VU0JfQVJDSF9IQVNfRUhDST15CiBDT05GSUdfVVNCPXkKICMgQ09ORklHX1VTQl9ERUJVRyBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfQU5OT1VOQ0VfTkVXX0RFVklDRVMgaXMgbm90IHNldAogCiAjCiAjIE1pc2NlbGxhbmVvdXMgVVNCIG9wdGlvbnMKQEAgLTEyMDUsOSArMTI0Nyw5IEBACiAjIFVTQiBIb3N0IENvbnRyb2xsZXIgRHJpdmVycwogIwogQ09ORklHX1VTQl9FSENJX0hDRD15Ci0jIENPTkZJR19VU0JfRUhDSV9TUExJVF9JU08gaXMgbm90IHNldAogIyBDT05GSUdfVVNCX0VIQ0lfUk9PVF9IVUJfVFQgaXMgbm90IHNldAogIyBDT05GSUdfVVNCX0VIQ0lfVFRfTkVXU0NIRUQgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX0VIQ0lfSENEX1BQQ19PRiBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfSVNQMTE2WF9IQ0QgaXMgbm90IHNldAogQ09ORklHX1VTQl9PSENJX0hDRD15CiBDT05GSUdfVVNCX09IQ0lfSENEX1BQQ19PRj15CkBAIC0xMjU5LDExICsxMzAxLDggQEAKICMKICMgVVNCIHBvcnQgZHJpdmVycwogIwotCi0jCi0jIFVTQiBTZXJpYWwgQ29udmVydGVyIHN1cHBvcnQKLSMKIENPTkZJR19VU0JfU0VSSUFMPW0KK0NPTkZJR19VU0JfRVpVU0I9eQogQ09ORklHX1VTQl9TRVJJQUxfR0VORVJJQz15CiAjIENPTkZJR19VU0JfU0VSSUFMX0FJUkNBQkxFIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9TRVJJQUxfQUlSUFJJTUUgaXMgbm90IHNldApAQCAtMTI4NCw2ICsxMzIzLDcgQEAKIENPTkZJR19VU0JfU0VSSUFMX0VER0VQT1JUX1RJPW0KIENPTkZJR19VU0JfU0VSSUFMX0dBUk1JTj1tCiBDT05GSUdfVVNCX1NFUklBTF9JUFc9bQorIyBDT05GSUdfVVNCX1NFUklBTF9JVVUgaXMgbm90IHNldAogQ09ORklHX1VTQl9TRVJJQUxfS0VZU1BBTl9QREE9bQogQ09ORklHX1VTQl9TRVJJQUxfS0VZU1BBTj1tCiBDT05GSUdfVVNCX1NFUklBTF9LRVlTUEFOX01QUj15CkBAIC0xMzE2LDcgKzEzNTYsNiBAQAogIyBDT05GSUdfVVNCX1NFUklBTF9PUFRJT04gaXMgbm90IHNldAogQ09ORklHX1VTQl9TRVJJQUxfT01OSU5FVD1tCiAjIENPTkZJR19VU0JfU0VSSUFMX0RFQlVHIGlzIG5vdCBzZXQKLUNPTkZJR19VU0JfRVpVU0I9eQogCiAjCiAjIFVTQiBNaXNjZWxsYW5lb3VzIGRyaXZlcnMKQEAgLTEzNDEsMjAgKzEzODAsMTQgQEAKICMgQ09ORklHX1VTQl9UUkFOQ0VWSUJSQVRPUiBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfSU9XQVJSSU9SIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9URVNUIGlzIG5vdCBzZXQKLQotIwotIyBVU0IgRFNMIG1vZGVtIHN1cHBvcnQKLSMKLQotIwotIyBVU0IgR2FkZ2V0IFN1cHBvcnQKLSMKICMgQ09ORklHX1VTQl9HQURHRVQgaXMgbm90IHNldAogIyBDT05GSUdfTU1DIGlzIG5vdCBzZXQKKyMgQ09ORklHX01FTVNUSUNLIGlzIG5vdCBzZXQKICMgQ09ORklHX05FV19MRURTIGlzIG5vdCBzZXQKICMgQ09ORklHX0lORklOSUJBTkQgaXMgbm90IHNldAogIyBDT05GSUdfRURBQyBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfQ0xBU1MgaXMgbm90IHNldAorIyBDT05GSUdfRE1BREVWSUNFUyBpcyBub3Qgc2V0CiAKICMKICMgVXNlcnNwYWNlIEkvTwpAQCAtMTM5MywxMiArMTQyNiwxMCBAQAogIyBDT05GSUdfWEZTX1JUIGlzIG5vdCBzZXQKICMgQ09ORklHX0dGUzJfRlMgaXMgbm90IHNldAogIyBDT05GSUdfT0NGUzJfRlMgaXMgbm90IHNldAotIyBDT05GSUdfTUlOSVhfRlMgaXMgbm90IHNldAotIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAorQ09ORklHX0ROT1RJRlk9eQogQ09ORklHX0lOT1RJRlk9eQogQ09ORklHX0lOT1RJRllfVVNFUj15CiAjIENPTkZJR19RVU9UQSBpcyBub3Qgc2V0Ci1DT05GSUdfRE5PVElGWT15CiBDT05GSUdfQVVUT0ZTX0ZTPW0KICMgQ09ORklHX0FVVE9GUzRfRlMgaXMgbm90IHNldAogIyBDT05GSUdfRlVTRV9GUyBpcyBub3Qgc2V0CkBAIC0xNDQ3LDggKzE0NzgsMTAgQEAKICMgQ09ORklHX0VGU19GUyBpcyBub3Qgc2V0CiBDT05GSUdfQ1JBTUZTPXkKICMgQ09ORklHX1ZYRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfTUlOSVhfRlMgaXMgbm90IHNldAogIyBDT05GSUdfSFBGU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19RTlg0RlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfU1lTVl9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19VRlNfRlMgaXMgbm90IHNldAogQ09ORklHX05FVFdPUktfRklMRVNZU1RFTVM9eQpAQCAtMTU0Niw3ICsxNTc5LDYgQEAKICMgQ09ORklHX05MU19LT0k4X1UgaXMgbm90IHNldAogQ09ORklHX05MU19VVEY4PXkKICMgQ09ORklHX0RMTSBpcyBub3Qgc2V0Ci0jIENPTkZJR19VQ0NfU0xPVyBpcyBub3Qgc2V0CiAKICMKICMgTGlicmFyeSByb3V0aW5lcwpAQCAtMTU2NCwxMSArMTU5Niw2IEBACiBDT05GSUdfSEFTX0lPTUVNPXkKIENPTkZJR19IQVNfSU9QT1JUPXkKIENPTkZJR19IQVNfRE1BPXkKLUNPTkZJR19JTlNUUlVNRU5UQVRJT049eQotQ09ORklHX1BST0ZJTElORz15Ci1DT05GSUdfT1BST0ZJTEU9eQotIyBDT05GSUdfS1BST0JFUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19NQVJLRVJTIGlzIG5vdCBzZXQKIAogIwogIyBLZXJuZWwgaGFja2luZwpAQCAtMTU4Nyw2ICsxNjE0LDcgQEAKICMgQ09ORklHX1NDSEVEU1RBVFMgaXMgbm90IHNldAogIyBDT05GSUdfVElNRVJfU1RBVFMgaXMgbm90IHNldAogIyBDT05GSUdfU0xVQl9ERUJVR19PTiBpcyBub3Qgc2V0CisjIENPTkZJR19TTFVCX1NUQVRTIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1JUX01VVEVYRVMgaXMgbm90IHNldAogIyBDT05GSUdfUlRfTVVURVhfVEVTVEVSIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NQSU5MT0NLIGlzIG5vdCBzZXQKQEAgLTE1OTksOSArMTYyNyw5IEBACiAjIENPTkZJR19ERUJVR19WTSBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19MSVNUIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NHIGlzIG5vdCBzZXQKLUNPTkZJR19GT1JDRURfSU5MSU5JTkc9eQogIyBDT05GSUdfQk9PVF9QUklOVEtfREVMQVkgaXMgbm90IHNldAogIyBDT05GSUdfUkNVX1RPUlRVUkVfVEVTVCBpcyBub3Qgc2V0CisjIENPTkZJR19CQUNLVFJBQ0VfU0VMRl9URVNUIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZBVUxUX0lOSkVDVElPTiBpcyBub3Qgc2V0CiAjIENPTkZJR19TQU1QTEVTIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NUQUNLT1ZFUkZMT1cgaXMgbm90IHNldApAQCAtMTYyMSw3ICsxNjQ5LDkgQEAKICMgQ09ORklHX1NFQ1VSSVRZX0ZJTEVfQ0FQQUJJTElUSUVTIGlzIG5vdCBzZXQKIENPTkZJR19DUllQVE89eQogQ09ORklHX0NSWVBUT19BTEdBUEk9eQorQ09ORklHX0NSWVBUT19BRUFEPW0KIENPTkZJR19DUllQVE9fQkxLQ0lQSEVSPXkKKyMgQ09ORklHX0NSWVBUT19TRVFJViBpcyBub3Qgc2V0CiBDT05GSUdfQ1JZUFRPX0hBU0g9eQogQ09ORklHX0NSWVBUT19NQU5BR0VSPXkKIENPTkZJR19DUllQVE9fSE1BQz15CkBAIC0xNjQwLDYgKzE2NzAsOSBAQAogQ09ORklHX0NSWVBUT19QQ0JDPW0KICMgQ09ORklHX0NSWVBUT19MUlcgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX1hUUyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ1RSIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19HQ00gaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NDTSBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fQ1JZUFREIGlzIG5vdCBzZXQKIENPTkZJR19DUllQVE9fREVTPXkKICMgQ09ORklHX0NSWVBUT19GQ1JZUFQgaXMgbm90IHNldApAQCAtMTY1NSwxMSArMTY4OCwxMyBAQAogQ09ORklHX0NSWVBUT19LSEFaQUQ9bQogQ09ORklHX0NSWVBUT19BTlVCSVM9bQogIyBDT05GSUdfQ1JZUFRPX1NFRUQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1NBTFNBMjAgaXMgbm90IHNldAogQ09ORklHX0NSWVBUT19ERUZMQVRFPW0KIENPTkZJR19DUllQVE9fTUlDSEFFTF9NSUM9bQogQ09ORklHX0NSWVBUT19DUkMzMkM9bQogIyBDT05GSUdfQ1JZUFRPX0NBTUVMTElBIGlzIG5vdCBzZXQKIENPTkZJR19DUllQVE9fVEVTVD1tCi0jIENPTkZJR19DUllQVE9fQVVUSEVOQyBpcyBub3Qgc2V0CitDT05GSUdfQ1JZUFRPX0FVVEhFTkM9bQorIyBDT05GSUdfQ1JZUFRPX0xaTyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fSFcgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0NMT0NLIGlzIG5vdCBzZXQKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9jb25maWdzL2lzZXJpZXNfZGVmY29uZmlnIGIvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvaXNlcmllc19kZWZjb25maWcKaW5kZXggNGE4Nzc0NS4uOGQ5YTg0ZiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvaXNlcmllc19kZWZjb25maWcKKysrIGIvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvaXNlcmllc19kZWZjb25maWcKQEAgLTEsNyArMSw3IEBACiAjCiAjIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIG1ha2UgY29uZmlnOiBkb24ndCBlZGl0Ci0jIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMjQtcmMzCi0jIFdlZCBOb3YgMjEgMTE6MTk6NTkgMjAwNworIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjI1LXJjNgorIyBUaHUgTWFyIDIwIDEwOjQzOjQ2IDIwMDgKICMKIENPTkZJR19QUEM2ND15CiAKQEAgLTI4LDYgKzI4LDcgQEAKIENPTkZJR19HRU5FUklDX1RJTUVfVlNZU0NBTEw9eQogQ09ORklHX0dFTkVSSUNfQ0xPQ0tFVkVOVFM9eQogQ09ORklHX0dFTkVSSUNfSEFSRElSUVM9eQorQ09ORklHX0hBVkVfU0VUVVBfUEVSX0NQVV9BUkVBPXkKIENPTkZJR19JUlFfUEVSX0NQVT15CiBDT05GSUdfUldTRU1fWENIR0FERF9BTEdPUklUSE09eQogQ09ORklHX0FSQ0hfSEFTX0lMT0cyX1UzMj15CkBAIC02OCw4ICs2OSw2IEBACiBDT05GSUdfUE9TSVhfTVFVRVVFPXkKICMgQ09ORklHX0JTRF9QUk9DRVNTX0FDQ1QgaXMgbm90IHNldAogIyBDT05GSUdfVEFTS1NUQVRTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VTRVJfTlMgaXMgbm90IHNldAotIyBDT05GSUdfUElEX05TIGlzIG5vdCBzZXQKIENPTkZJR19BVURJVD15CiBDT05GSUdfQVVESVRTWVNDQUxMPXkKIENPTkZJR19BVURJVF9UUkVFPXkKQEAgLTc3LDExICs3NiwxNyBAQAogQ09ORklHX0lLQ09ORklHX1BST0M9eQogQ09ORklHX0xPR19CVUZfU0hJRlQ9MTcKICMgQ09ORklHX0NHUk9VUFMgaXMgbm90IHNldAotQ09ORklHX0ZBSVJfR1JPVVBfU0NIRUQ9eQotQ09ORklHX0ZBSVJfVVNFUl9TQ0hFRD15Ci0jIENPTkZJR19GQUlSX0NHUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CisjIENPTkZJR19HUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CisjIENPTkZJR19VU0VSX1NDSEVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NHUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CiBDT05GSUdfU1lTRlNfREVQUkVDQVRFRD15CitDT05GSUdfU1lTRlNfREVQUkVDQVRFRF9WMj15CiAjIENPTkZJR19SRUxBWSBpcyBub3Qgc2V0CitDT05GSUdfTkFNRVNQQUNFUz15CisjIENPTkZJR19VVFNfTlMgaXMgbm90IHNldAorIyBDT05GSUdfSVBDX05TIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTRVJfTlMgaXMgbm90IHNldAorIyBDT05GSUdfUElEX05TIGlzIG5vdCBzZXQKIENPTkZJR19CTEtfREVWX0lOSVRSRD15CiBDT05GSUdfSU5JVFJBTUZTX1NPVVJDRT0iIgogQ09ORklHX0NDX09QVElNSVpFX0ZPUl9TSVpFPXkKQEAgLTk1LDExICsxMDAsMTMgQEAKIENPTkZJR19QUklOVEs9eQogQ09ORklHX0JVRz15CiBDT05GSUdfRUxGX0NPUkU9eQorIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0CiBDT05GSUdfQkFTRV9GVUxMPXkKIENPTkZJR19GVVRFWD15CiBDT05GSUdfQU5PTl9JTk9ERVM9eQogQ09ORklHX0VQT0xMPXkKIENPTkZJR19TSUdOQUxGRD15CitDT05GSUdfVElNRVJGRD15CiBDT05GSUdfRVZFTlRGRD15CiBDT05GSUdfU0hNRU09eQogQ09ORklHX1ZNX0VWRU5UX0NPVU5URVJTPXkKQEAgLTEwNyw2ICsxMTQsMTQgQEAKICMgQ09ORklHX1NMQUIgaXMgbm90IHNldAogQ09ORklHX1NMVUI9eQogIyBDT05GSUdfU0xPQiBpcyBub3Qgc2V0CisjIENPTkZJR19QUk9GSUxJTkcgaXMgbm90IHNldAorIyBDT05GSUdfTUFSS0VSUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9PUFJPRklMRT15CisjIENPTkZJR19LUFJPQkVTIGlzIG5vdCBzZXQKK0NPTkZJR19IQVZFX0tQUk9CRVM9eQorQ09ORklHX0hBVkVfS1JFVFBST0JFUz15CitDT05GSUdfUFJPQ19QQUdFX01PTklUT1I9eQorQ09ORklHX1NMQUJJTkZPPXkKIENPTkZJR19SVF9NVVRFWEVTPXkKICMgQ09ORklHX1RJTllfU0hNRU0gaXMgbm90IHNldAogQ09ORklHX0JBU0VfU01BTEw9MApAQCAtMTM0LDYgKzE0OSw3IEBACiAjIENPTkZJR19ERUZBVUxUX0NGUSBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUZBVUxUX05PT1AgaXMgbm90IHNldAogQ09ORklHX0RFRkFVTFRfSU9TQ0hFRD0iYW50aWNpcGF0b3J5IgorQ09ORklHX0NMQVNTSUNfUkNVPXkKIAogIwogIyBQbGF0Zm9ybSBzdXBwb3J0CkBAIC0xNTMsOCArMTY5LDggQEAKIENPTkZJR19WSU9DRD1tCiBDT05GSUdfVklPVEFQRT1tCiBDT05GSUdfVklPUEFUSD15Ci0jIENPTkZJR19QUENfTVBDNTJ4eCBpcyBub3Qgc2V0Ci0jIENPTkZJR19QUENfTVBDNTIwMCBpcyBub3Qgc2V0CisjIENPTkZJR19QUENfTVBDNTEyeCBpcyBub3Qgc2V0CisjIENPTkZJR19QUENfTVBDNTEyMSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfUE1BQyBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfTUFQTEUgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX1BBU0VNSSBpcyBub3Qgc2V0CkBAIC0xNjQsNiArMTgwLDcgQEAKICMgQ09ORklHX1BQQ19DRUxMX05BVElWRSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfSUJNX0NFTExfQkxBREUgaXMgbm90IHNldAogIyBDT05GSUdfUFEyQURTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lQSUMgaXMgbm90IHNldAogIyBDT05GSUdfTVBJQyBpcyBub3Qgc2V0CiAjIENPTkZJR19NUElDX1dFSVJEIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19JODI1OSBpcyBub3Qgc2V0CkBAIC0xNzYsNyArMTkzLDYgQEAKIENPTkZJR19QUENfSU5ESVJFQ1RfSU89eQogQ09ORklHX0dFTkVSSUNfSU9NQVA9eQogIyBDT05GSUdfQ1BVX0ZSRVEgaXMgbm90IHNldAotIyBDT05GSUdfQ1BNMiBpcyBub3Qgc2V0CiAjIENPTkZJR19GU0xfVUxJMTU3NSBpcyBub3Qgc2V0CiAKICMKQEAgLTE5MSwxNSArMjA3LDE5IEBACiAjIENPTkZJR19IWl8zMDAgaXMgbm90IHNldAogIyBDT05GSUdfSFpfMTAwMCBpcyBub3Qgc2V0CiBDT05GSUdfSFo9MjUwCisjIENPTkZJR19TQ0hFRF9IUlRJQ0sgaXMgbm90IHNldAogQ09ORklHX1BSRUVNUFRfTk9ORT15CiAjIENPTkZJR19QUkVFTVBUX1ZPTFVOVEFSWSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUkVFTVBUIGlzIG5vdCBzZXQKLSMgQ09ORklHX1BSRUVNUFRfQktMIGlzIG5vdCBzZXQKIENPTkZJR19CSU5GTVRfRUxGPXkKK0NPTkZJR19DT01QQVRfQklORk1UX0VMRj15CiAjIENPTkZJR19CSU5GTVRfTUlTQyBpcyBub3Qgc2V0CiBDT05GSUdfRk9SQ0VfTUFYX1pPTkVPUkRFUj0xMwogQ09ORklHX0lPTU1VX1ZNRVJHRT15CitDT05GSUdfSU9NTVVfSEVMUEVSPXkKIENPTkZJR19BUkNIX0VOQUJMRV9NRU1PUllfSE9UUExVRz15CitDT05GSUdfQVJDSF9IQVNfV0FMS19NRU1PUlk9eQorQ09ORklHX0FSQ0hfRU5BQkxFX01FTU9SWV9IT1RSRU1PVkU9eQogIyBDT05GSUdfS0VYRUMgaXMgbm90IHNldAogIyBDT05GSUdfQ1JBU0hfRFVNUCBpcyBub3Qgc2V0CiBDT05GSUdfSVJRX0FMTF9DUFVTPXkKQEAgLTIyNyw3ICsyNDcsNiBAQAogIyBDT05GSUdfQ01ETElORV9CT09MIGlzIG5vdCBzZXQKICMgQ09ORklHX1BNIGlzIG5vdCBzZXQKIENPTkZJR19TRUNDT01QPXkKLSMgQ09ORklHX1dBTlRfREVWSUNFX1RSRUUgaXMgbm90IHNldAogQ09ORklHX0lTQV9ETUFfQVBJPXkKIAogIwpAQCAtMjYzLDYgKzI4Miw3IEBACiBDT05GSUdfWEZSTV9VU0VSPW0KIENPTkZJR19YRlJNX1NVQl9QT0xJQ1k9eQogIyBDT05GSUdfWEZSTV9NSUdSQVRFIGlzIG5vdCBzZXQKKyMgQ09ORklHX1hGUk1fU1RBVElTVElDUyBpcyBub3Qgc2V0CiBDT05GSUdfTkVUX0tFWT1tCiAjIENPTkZJR19ORVRfS0VZX01JR1JBVEUgaXMgbm90IHNldAogQ09ORklHX0lORVQ9eQpAQCAtMjk3LDEyICszMTcsMTQgQEAKICMgQ09ORklHX05FVFdPUktfU0VDTUFSSyBpcyBub3Qgc2V0CiBDT05GSUdfTkVURklMVEVSPXkKICMgQ09ORklHX05FVEZJTFRFUl9ERUJVRyBpcyBub3Qgc2V0CitDT05GSUdfTkVURklMVEVSX0FEVkFOQ0VEPXkKIAogIwogIyBDb3JlIE5ldGZpbHRlciBDb25maWd1cmF0aW9uCiAjCi0jIENPTkZJR19ORVRGSUxURVJfTkVUTElOSyBpcyBub3Qgc2V0Ci1DT05GSUdfTkZfQ09OTlRSQUNLX0VOQUJMRUQ9bQorQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LPW0KK0NPTkZJR19ORVRGSUxURVJfTkVUTElOS19RVUVVRT1tCitDT05GSUdfTkVURklMVEVSX05FVExJTktfTE9HPW0KIENPTkZJR19ORl9DT05OVFJBQ0s9bQogIyBDT05GSUdfTkZfQ1RfQUNDVCBpcyBub3Qgc2V0CiBDT05GSUdfTkZfQ09OTlRSQUNLX01BUks9eQpAQCAtMzE4LDYgKzM0MCw3IEBACiAjIENPTkZJR19ORl9DT05OVFJBQ0tfU0FORSBpcyBub3Qgc2V0CiAjIENPTkZJR19ORl9DT05OVFJBQ0tfU0lQIGlzIG5vdCBzZXQKIENPTkZJR19ORl9DT05OVFJBQ0tfVEZUUD1tCitDT05GSUdfTkZfQ1RfTkVUTElOSz1tCiBDT05GSUdfTkVURklMVEVSX1hUQUJMRVM9bQogQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfQ0xBU1NJRlk9bQogQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfQ09OTk1BUks9bQpAQCAtMzI2LDggKzM0OSwxMCBAQAogQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfTkZRVUVVRT1tCiAjIENPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX05GTE9HIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfTk9UUkFDSyBpcyBub3Qgc2V0CitDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9SQVRFRVNUPW0KICMgQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfVFJBQ0UgaXMgbm90IHNldAogIyBDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9UQ1BNU1MgaXMgbm90IHNldAorQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfVENQT1BUU1RSSVA9bQogQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9DT01NRU5UPW0KICMgQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9DT05OQllURVMgaXMgbm90IHNldAogIyBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0NPTk5MSU1JVCBpcyBub3Qgc2V0CkBAIC0zMzcsMTQgKzM2MiwxNyBAQAogQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9EU0NQPW0KICMgQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9FU1AgaXMgbm90IHNldAogIyBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0hFTFBFUiBpcyBub3Qgc2V0CitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0lQUkFOR0U9bQogQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9MRU5HVEg9bQogQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9MSU1JVD1tCiBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX01BQz1tCiBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX01BUks9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9PV05FUj1tCiAjIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfUE9MSUNZIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9NVUxUSVBPUlQgaXMgbm90IHNldAogQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9QS1RUWVBFPW0KICMgQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9RVU9UQSBpcyBub3Qgc2V0CitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1JBVEVFU1Q9bQogQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9SRUFMTT1tCiBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1NDVFA9bQogIyBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1NUQVRFIGlzIG5vdCBzZXQKQEAgLTM2MiwxMyArMzkwLDEwIEBACiBDT05GSUdfTkZfQ09OTlRSQUNLX1BST0NfQ09NUEFUPXkKIENPTkZJR19JUF9ORl9RVUVVRT1tCiBDT05GSUdfSVBfTkZfSVBUQUJMRVM9bQotQ09ORklHX0lQX05GX01BVENIX0lQUkFOR0U9bQotQ09ORklHX0lQX05GX01BVENIX1RPUz1tCiBDT05GSUdfSVBfTkZfTUFUQ0hfUkVDRU5UPW0KIENPTkZJR19JUF9ORl9NQVRDSF9FQ049bQogIyBDT05GSUdfSVBfTkZfTUFUQ0hfQUggaXMgbm90IHNldAogQ09ORklHX0lQX05GX01BVENIX1RUTD1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfT1dORVI9bQogQ09ORklHX0lQX05GX01BVENIX0FERFJUWVBFPW0KIENPTkZJR19JUF9ORl9GSUxURVI9bQogQ09ORklHX0lQX05GX1RBUkdFVF9SRUpFQ1Q9bQpAQCAtMzc5LDcgKzQwNCw2IEBACiBDT05GSUdfSVBfTkZfVEFSR0VUX01BU1FVRVJBREU9bQogQ09ORklHX0lQX05GX1RBUkdFVF9SRURJUkVDVD1tCiBDT05GSUdfSVBfTkZfVEFSR0VUX05FVE1BUD1tCi1DT05GSUdfSVBfTkZfVEFSR0VUX1NBTUU9bQogIyBDT05GSUdfTkZfTkFUX1NOTVBfQkFTSUMgaXMgbm90IHNldAogQ09ORklHX05GX05BVF9GVFA9bQogQ09ORklHX05GX05BVF9JUkM9bQpAQCAtMzg5LDcgKzQxMyw2IEBACiAjIENPTkZJR19ORl9OQVRfSDMyMyBpcyBub3Qgc2V0CiAjIENPTkZJR19ORl9OQVRfU0lQIGlzIG5vdCBzZXQKIENPTkZJR19JUF9ORl9NQU5HTEU9bQotQ09ORklHX0lQX05GX1RBUkdFVF9UT1M9bQogQ09ORklHX0lQX05GX1RBUkdFVF9FQ049bQogQ09ORklHX0lQX05GX1RBUkdFVF9UVEw9bQogQ09ORklHX0lQX05GX1RBUkdFVF9DTFVTVEVSSVA9bQpAQCAtNDI1LDYgKzQ0OCw3IEBACiAjCiAjIENPTkZJR19ORVRfUEtUR0VOIGlzIG5vdCBzZXQKICMgQ09ORklHX0hBTVJBRElPIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NBTiBpcyBub3Qgc2V0CiAjIENPTkZJR19JUkRBIGlzIG5vdCBzZXQKICMgQ09ORklHX0JUIGlzIG5vdCBzZXQKICMgQ09ORklHX0FGX1JYUlBDIGlzIG5vdCBzZXQKQEAgLTQ3MCw3ICs0OTQsNyBAQAogQ09ORklHX0JMS19ERVZfUkFNPXkKIENPTkZJR19CTEtfREVWX1JBTV9DT1VOVD0xNgogQ09ORklHX0JMS19ERVZfUkFNX1NJWkU9NjU1MzYKLUNPTkZJR19CTEtfREVWX1JBTV9CTE9DS1NJWkU9MTAyNAorIyBDT05GSUdfQkxLX0RFVl9YSVAgaXMgbm90IHNldAogIyBDT05GSUdfQ0RST01fUEtUQ0RWRCBpcyBub3Qgc2V0CiAjIENPTkZJR19BVEFfT1ZFUl9FVEggaXMgbm90IHNldAogQ09ORklHX01JU0NfREVWSUNFUz15CkBAIC00NzgsNiArNTAyLDggQEAKICMgQ09ORklHX0VFUFJPTV85M0NYNiBpcyBub3Qgc2V0CiAjIENPTkZJR19TR0lfSU9DNCBpcyBub3Qgc2V0CiAjIENPTkZJR19USUZNX0NPUkUgaXMgbm90IHNldAorIyBDT05GSUdfRU5DTE9TVVJFX1NFUlZJQ0VTIGlzIG5vdCBzZXQKK0NPTkZJR19IQVZFX0lERT15CiAjIENPTkZJR19JREUgaXMgbm90IHNldAogCiAjCkBAIC01MTgsNiArNTQ0LDcgQEAKICMgQ09ORklHX1NDU0lfSVNDU0lfQVRUUlMgaXMgbm90IHNldAogQ09ORklHX1NDU0lfU0FTX0FUVFJTPW0KIENPTkZJR19TQ1NJX1NBU19MSUJTQVM9bQorQ09ORklHX1NDU0lfU0FTX0hPU1RfU01QPXkKIENPTkZJR19TQ1NJX1NBU19MSUJTQVNfREVCVUc9eQogQ09ORklHX1NDU0lfU1JQX0FUVFJTPW0KIENPTkZJR19TQ1NJX0xPV0xFVkVMPXkKQEAgLTU0Myw2ICs1NzAsNyBAQAogQ09ORklHX1NDU0lfSUJNVlNDU0k9bQogIyBDT05GSUdfU0NTSV9JTklUSU8gaXMgbm90IHNldAogIyBDT05GSUdfU0NTSV9JTklBMTAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDU0lfTVZTQVMgaXMgbm90IHNldAogIyBDT05GSUdfU0NTSV9TVEVYIGlzIG5vdCBzZXQKICMgQ09ORklHX1NDU0lfU1lNNTNDOFhYXzIgaXMgbm90IHNldAogIyBDT05GSUdfU0NTSV9RTE9HSUNfMTI4MCBpcyBub3Qgc2V0CkBAIC01ODksNyArNjE3LDYgQEAKICMgQ09ORklHX0VRVUFMSVpFUiBpcyBub3Qgc2V0CiBDT05GSUdfVFVOPW0KICMgQ09ORklHX1ZFVEggaXMgbm90IHNldAotIyBDT05GSUdfSVAxMDAwIGlzIG5vdCBzZXQKICMgQ09ORklHX0FSQ05FVCBpcyBub3Qgc2V0CiAjIENPTkZJR19QSFlMSUIgaXMgbm90IHNldAogQ09ORklHX05FVF9FVEhFUk5FVD15CkBAIC02MTgsNiArNjQ1LDcgQEAKICMgQ09ORklHX05FMktfUENJIGlzIG5vdCBzZXQKICMgQ09ORklHXzgxMzlDUCBpcyBub3Qgc2V0CiAjIENPTkZJR184MTM5VE9PIGlzIG5vdCBzZXQKKyMgQ09ORklHX1I2MDQwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NJUzkwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19FUElDMTAwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NVTkRBTkNFIGlzIG5vdCBzZXQKQEAgLTYzMSw2ICs2NTksOSBAQAogIyBDT05GSUdfRTEwMDBfTkFQSSBpcyBub3Qgc2V0CiAjIENPTkZJR19FMTAwMF9ESVNBQkxFX1BBQ0tFVF9TUExJVCBpcyBub3Qgc2V0CiAjIENPTkZJR19FMTAwMEUgaXMgbm90IHNldAorIyBDT05GSUdfRTEwMDBFX0VOQUJMRUQgaXMgbm90IHNldAorIyBDT05GSUdfSVAxMDAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lHQiBpcyBub3Qgc2V0CiAjIENPTkZJR19OUzgzODIwIGlzIG5vdCBzZXQKICMgQ09ORklHX0hBTUFDSEkgaXMgbm90IHNldAogIyBDT05GSUdfWUVMTE9XRklOIGlzIG5vdCBzZXQKQEAgLTY1Niw2ICs2ODcsNyBAQAogIyBDT05GSUdfUEFTRU1JX01BQyBpcyBub3Qgc2V0CiAjIENPTkZJR19NTFg0X0NPUkUgaXMgbm90IHNldAogIyBDT05GSUdfVEVIVVRJIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JOWDJYIGlzIG5vdCBzZXQKIENPTkZJR19UUj15CiBDT05GSUdfSUJNT0w9eQogIyBDT05GSUdfM0MzNTkgaXMgbm90IHNldApAQCAtNjgzLDcgKzcxNSw2IEBACiAjIENPTkZJR19TTElQIGlzIG5vdCBzZXQKIENPTkZJR19TTEhDPW0KICMgQ09ORklHX05FVF9GQyBpcyBub3Qgc2V0Ci0jIENPTkZJR19TSEFQRVIgaXMgbm90IHNldAogQ09ORklHX05FVENPTlNPTEU9eQogIyBDT05GSUdfTkVUQ09OU09MRV9EWU5BTUlDIGlzIG5vdCBzZXQKIENPTkZJR19ORVRQT0xMPXkKQEAgLTczNCw2ICs3NjUsNyBAQAogQ09ORklHX0hXX0NPTlNPTEU9eQogIyBDT05GSUdfVlRfSFdfQ09OU09MRV9CSU5ESU5HIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFUklBTF9OT05TVEFOREFSRCBpcyBub3Qgc2V0CisjIENPTkZJR19OT1pPTUkgaXMgbm90IHNldAogCiAjCiAjIFNlcmlhbCBkcml2ZXJzCkBAIC03NzIsNiArODA0LDcgQEAKICMgQ09ORklHX1cxIGlzIG5vdCBzZXQKICMgQ09ORklHX1BPV0VSX1NVUFBMWSBpcyBub3Qgc2V0CiAjIENPTkZJR19IV01PTiBpcyBub3Qgc2V0CisjIENPTkZJR19USEVSTUFMIGlzIG5vdCBzZXQKICMgQ09ORklHX1dBVENIRE9HIGlzIG5vdCBzZXQKIAogIwpAQCAtODIxLDEwICs4NTQsMTIgQEAKICMgQ09ORklHX0hJRF9TVVBQT1JUIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9TVVBQT1JUIGlzIG5vdCBzZXQKICMgQ09ORklHX01NQyBpcyBub3Qgc2V0CisjIENPTkZJR19NRU1TVElDSyBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVdfTEVEUyBpcyBub3Qgc2V0CiAjIENPTkZJR19JTkZJTklCQU5EIGlzIG5vdCBzZXQKICMgQ09ORklHX0VEQUMgaXMgbm90IHNldAogIyBDT05GSUdfUlRDX0NMQVNTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RNQURFVklDRVMgaXMgbm90IHNldAogCiAjCiAjIFVzZXJzcGFjZSBJL08KQEAgLTg2OSwxMiArOTA0LDEwIEBACiBDT05GSUdfR0ZTMl9GU19MT0NLSU5HX05PTE9DSz1tCiBDT05GSUdfR0ZTMl9GU19MT0NLSU5HX0RMTT1tCiAjIENPTkZJR19PQ0ZTMl9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CitDT05GSUdfRE5PVElGWT15CiBDT05GSUdfSU5PVElGWT15CiBDT05GSUdfSU5PVElGWV9VU0VSPXkKICMgQ09ORklHX1FVT1RBIGlzIG5vdCBzZXQKLUNPTkZJR19ETk9USUZZPXkKIENPTkZJR19BVVRPRlNfRlM9bQogIyBDT05GSUdfQVVUT0ZTNF9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19GVVNFX0ZTIGlzIG5vdCBzZXQKQEAgLTkyNCw4ICs5NTcsMTAgQEAKICMgQ09ORklHX0VGU19GUyBpcyBub3Qgc2V0CiBDT05GSUdfQ1JBTUZTPXkKICMgQ09ORklHX1ZYRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfTUlOSVhfRlMgaXMgbm90IHNldAogIyBDT05GSUdfSFBGU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19RTlg0RlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfU1lTVl9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19VRlNfRlMgaXMgbm90IHNldAogQ09ORklHX05FVFdPUktfRklMRVNZU1RFTVM9eQpAQCAtMTAwOSw3ICsxMDQ0LDYgQEAKICMgQ09ORklHX05MU19VVEY4IGlzIG5vdCBzZXQKIENPTkZJR19ETE09bQogIyBDT05GSUdfRExNX0RFQlVHIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VDQ19TTE9XIGlzIG5vdCBzZXQKIAogIwogIyBMaWJyYXJ5IHJvdXRpbmVzCkBAIC0xMDMxLDEwICsxMDY1LDYgQEAKIENPTkZJR19IQVNfSU9NRU09eQogQ09ORklHX0hBU19JT1BPUlQ9eQogQ09ORklHX0hBU19ETUE9eQotQ09ORklHX0lOU1RSVU1FTlRBVElPTj15Ci0jIENPTkZJR19QUk9GSUxJTkcgaXMgbm90IHNldAotIyBDT05GSUdfS1BST0JFUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19NQVJLRVJTIGlzIG5vdCBzZXQKIAogIwogIyBLZXJuZWwgaGFja2luZwpAQCAtMTA1Myw2ICsxMDgzLDcgQEAKICMgQ09ORklHX1NDSEVEU1RBVFMgaXMgbm90IHNldAogIyBDT05GSUdfVElNRVJfU1RBVFMgaXMgbm90IHNldAogIyBDT05GSUdfU0xVQl9ERUJVR19PTiBpcyBub3Qgc2V0CisjIENPTkZJR19TTFVCX1NUQVRTIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1JUX01VVEVYRVMgaXMgbm90IHNldAogIyBDT05GSUdfUlRfTVVURVhfVEVTVEVSIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NQSU5MT0NLIGlzIG5vdCBzZXQKQEAgLTEwNjUsOSArMTA5Niw5IEBACiAjIENPTkZJR19ERUJVR19WTSBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19MSVNUIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NHIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZPUkNFRF9JTkxJTklORyBpcyBub3Qgc2V0CiAjIENPTkZJR19CT09UX1BSSU5US19ERUxBWSBpcyBub3Qgc2V0CiAjIENPTkZJR19SQ1VfVE9SVFVSRV9URVNUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JBQ0tUUkFDRV9TRUxGX1RFU1QgaXMgbm90IHNldAogIyBDT05GSUdfRkFVTFRfSU5KRUNUSU9OIGlzIG5vdCBzZXQKICMgQ09ORklHX1NBTVBMRVMgaXMgbm90IHNldAogQ09ORklHX0RFQlVHX1NUQUNLT1ZFUkZMT1c9eQpAQCAtMTA4OSw2ICsxMTIwLDcgQEAKIENPTkZJR19DUllQVE9fQUxHQVBJPXkKIENPTkZJR19DUllQVE9fQUVBRD1tCiBDT05GSUdfQ1JZUFRPX0JMS0NJUEhFUj15CisjIENPTkZJR19DUllQVE9fU0VRSVYgaXMgbm90IHNldAogQ09ORklHX0NSWVBUT19IQVNIPXkKIENPTkZJR19DUllQVE9fTUFOQUdFUj15CiBDT05GSUdfQ1JZUFRPX0hNQUM9eQpAQCAtMTEwNyw2ICsxMTM5LDkgQEAKIENPTkZJR19DUllQVE9fUENCQz1tCiAjIENPTkZJR19DUllQVE9fTFJXIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19YVFMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NUUiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fR0NNIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DQ00gaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0NSWVBURCBpcyBub3Qgc2V0CiBDT05GSUdfQ1JZUFRPX0RFUz15CiAjIENPTkZJR19DUllQVE9fRkNSWVBUIGlzIG5vdCBzZXQKQEAgLTExMjIsMTEgKzExNTcsMTMgQEAKIENPTkZJR19DUllQVE9fS0hBWkFEPW0KIENPTkZJR19DUllQVE9fQU5VQklTPW0KIENPTkZJR19DUllQVE9fU0VFRD1tCisjIENPTkZJR19DUllQVE9fU0FMU0EyMCBpcyBub3Qgc2V0CiBDT05GSUdfQ1JZUFRPX0RFRkxBVEU9bQogQ09ORklHX0NSWVBUT19NSUNIQUVMX01JQz1tCiBDT05GSUdfQ1JZUFRPX0NSQzMyQz1tCiAjIENPTkZJR19DUllQVE9fQ0FNRUxMSUEgaXMgbm90IHNldAogQ09ORklHX0NSWVBUT19URVNUPW0KIENPTkZJR19DUllQVE9fQVVUSEVOQz1tCisjIENPTkZJR19DUllQVE9fTFpPIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19IVyBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfQ0xPQ0sgaXMgbm90IHNldApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbGlua3N0YXRpb25fZGVmY29uZmlnIGIvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbGlua3N0YXRpb25fZGVmY29uZmlnCmluZGV4IDdiNDI4MDguLjIyYTk0M2EgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jb25maWdzL2xpbmtzdGF0aW9uX2RlZmNvbmZpZworKysgYi9hcmNoL3Bvd2VycGMvY29uZmlncy9saW5rc3RhdGlvbl9kZWZjb25maWcKQEAgLTEsNyArMSw3IEBACiAjCiAjIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIG1ha2UgY29uZmlnOiBkb24ndCBlZGl0Ci0jIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMjQtcmM0Ci0jIFRodSBEZWMgIDYgMTY6NDg6MjIgMjAwNworIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjI1LXJjNgorIyBNb24gTWFyIDI0IDA4OjQ4OjEwIDIwMDgKICMKICMgQ09ORklHX1BQQzY0IGlzIG5vdCBzZXQKIApAQCAtMjksNiArMjksNyBAQAogQ09ORklHX0dFTkVSSUNfVElNRV9WU1lTQ0FMTD15CiBDT05GSUdfR0VORVJJQ19DTE9DS0VWRU5UUz15CiBDT05GSUdfR0VORVJJQ19IQVJESVJRUz15CisjIENPTkZJR19IQVZFX1NFVFVQX1BFUl9DUFVfQVJFQSBpcyBub3Qgc2V0CiBDT05GSUdfSVJRX1BFUl9DUFU9eQogQ09ORklHX1JXU0VNX1hDSEdBRERfQUxHT1JJVEhNPXkKIENPTkZJR19BUkNIX0hBU19JTE9HMl9VMzI9eQpAQCAtNjYsMTYgKzY3LDI0IEBACiBDT05GSUdfUE9TSVhfTVFVRVVFPXkKICMgQ09ORklHX0JTRF9QUk9DRVNTX0FDQ1QgaXMgbm90IHNldAogIyBDT05GSUdfVEFTS1NUQVRTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VTRVJfTlMgaXMgbm90IHNldAotIyBDT05GSUdfUElEX05TIGlzIG5vdCBzZXQKICMgQ09ORklHX0FVRElUIGlzIG5vdCBzZXQKIENPTkZJR19JS0NPTkZJRz15CiBDT05GSUdfSUtDT05GSUdfUFJPQz15CiBDT05GSUdfTE9HX0JVRl9TSElGVD0xNAogIyBDT05GSUdfQ0dST1VQUyBpcyBub3Qgc2V0CitDT05GSUdfR1JPVVBfU0NIRUQ9eQogIyBDT05GSUdfRkFJUl9HUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CisjIENPTkZJR19SVF9HUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CitDT05GSUdfVVNFUl9TQ0hFRD15CisjIENPTkZJR19DR1JPVVBfU0NIRUQgaXMgbm90IHNldAogQ09ORklHX1NZU0ZTX0RFUFJFQ0FURUQ9eQorQ09ORklHX1NZU0ZTX0RFUFJFQ0FURURfVjI9eQogIyBDT05GSUdfUkVMQVkgaXMgbm90IHNldAorQ09ORklHX05BTUVTUEFDRVM9eQorIyBDT05GSUdfVVRTX05TIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lQQ19OUyBpcyBub3Qgc2V0CisjIENPTkZJR19VU0VSX05TIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BJRF9OUyBpcyBub3Qgc2V0CiBDT05GSUdfQkxLX0RFVl9JTklUUkQ9eQogQ09ORklHX0lOSVRSQU1GU19TT1VSQ0U9IiIKICMgQ09ORklHX0NDX09QVElNSVpFX0ZPUl9TSVpFIGlzIG5vdCBzZXQKQEAgLTg5LDExICs5OCwxMyBAQAogQ09ORklHX1BSSU5USz15CiBDT05GSUdfQlVHPXkKIENPTkZJR19FTEZfQ09SRT15CitDT05GSUdfQ09NUEFUX0JSSz15CiBDT05GSUdfQkFTRV9GVUxMPXkKIENPTkZJR19GVVRFWD15CiBDT05GSUdfQU5PTl9JTk9ERVM9eQogQ09ORklHX0VQT0xMPXkKIENPTkZJR19TSUdOQUxGRD15CitDT05GSUdfVElNRVJGRD15CiBDT05GSUdfRVZFTlRGRD15CiBDT05GSUdfU0hNRU09eQogQ09ORklHX1ZNX0VWRU5UX0NPVU5URVJTPXkKQEAgLTEwMSw2ICsxMTIsMTQgQEAKICMgQ09ORklHX1NMQUIgaXMgbm90IHNldAogQ09ORklHX1NMVUI9eQogIyBDT05GSUdfU0xPQiBpcyBub3Qgc2V0CisjIENPTkZJR19QUk9GSUxJTkcgaXMgbm90IHNldAorIyBDT05GSUdfTUFSS0VSUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9PUFJPRklMRT15CisjIENPTkZJR19LUFJPQkVTIGlzIG5vdCBzZXQKK0NPTkZJR19IQVZFX0tQUk9CRVM9eQorQ09ORklHX0hBVkVfS1JFVFBST0JFUz15CitDT05GSUdfUFJPQ19QQUdFX01PTklUT1I9eQorQ09ORklHX1NMQUJJTkZPPXkKIENPTkZJR19SVF9NVVRFWEVTPXkKICMgQ09ORklHX1RJTllfU0hNRU0gaXMgbm90IHNldAogQ09ORklHX0JBU0VfU01BTEw9MApAQCAtMTI4LDYgKzE0Nyw3IEBACiAjIENPTkZJR19ERUZBVUxUX0NGUSBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUZBVUxUX05PT1AgaXMgbm90IHNldAogQ09ORklHX0RFRkFVTFRfSU9TQ0hFRD0iYW50aWNpcGF0b3J5IgorQ09ORklHX0NMQVNTSUNfUkNVPXkKIAogIwogIyBQbGF0Zm9ybSBzdXBwb3J0CkBAIC0xMzgsMjIgKzE1OCwyNCBAQAogIyBDT05GSUdfUFBDXzg2eHggaXMgbm90IHNldAogQ09ORklHX0NMQVNTSUMzMj15CiAjIENPTkZJR19QUENfQ0hSUCBpcyBub3Qgc2V0CisjIENPTkZJR19QUENfTVBDNTEyeCBpcyBub3Qgc2V0CisjIENPTkZJR19QUENfTVBDNTEyMSBpcyBub3Qgc2V0CisjIENPTkZJR19NUEM1MTIxX0FEUyBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfTVBDNTJ4eCBpcyBub3Qgc2V0Ci0jIENPTkZJR19QUENfTVBDNTIwMCBpcyBub3Qgc2V0Ci0jIENPTkZJR19QUENfRUZJS0EgaXMgbm90IHNldAotIyBDT05GSUdfUFBDX0xJVEU1MjAwIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19QTUFDIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19DRUxMIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19DRUxMX05BVElWRSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUTJBRFMgaXMgbm90IHNldAogQ09ORklHX0VNQkVEREVENnh4PXkKIENPTkZJR19MSU5LU1RBVElPTj15CisjIENPTkZJR19TVE9SQ0VOVEVSIGlzIG5vdCBzZXQKICMgQ09ORklHX01QQzc0NDhIUEMyIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19IT0xMWSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfUFJQTUMyODAwIGlzIG5vdCBzZXQKIENPTkZJR19NUEMxMFhfQlJJREdFPXkKIENPTkZJR19NUEMxMFhfT1BFTlBJQz15CiAjIENPTkZJR19NUEMxMFhfU1RPUkVfR0FUSEVSSU5HIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lQSUMgaXMgbm90IHNldAogQ09ORklHX01QSUM9eQogIyBDT05GSUdfTVBJQ19XRUlSRCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfSTgyNTkgaXMgbm90IHNldApAQCAtMTY1LDcgKzE4Nyw2IEBACiAjIENPTkZJR19HRU5FUklDX0lPTUFQIGlzIG5vdCBzZXQKICMgQ09ORklHX0NQVV9GUkVRIGlzIG5vdCBzZXQKICMgQ09ORklHX1RBVSBpcyBub3Qgc2V0Ci0jIENPTkZJR19DUE0yIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZTTF9VTEkxNTc1IGlzIG5vdCBzZXQKIAogIwpAQCAtMTgxLDEyICsyMDIsMTYgQEAKICMgQ09ORklHX0haXzMwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19IWl8xMDAwIGlzIG5vdCBzZXQKIENPTkZJR19IWj0xMDAKKyMgQ09ORklHX1NDSEVEX0hSVElDSyBpcyBub3Qgc2V0CiBDT05GSUdfUFJFRU1QVF9OT05FPXkKICMgQ09ORklHX1BSRUVNUFRfVk9MVU5UQVJZIGlzIG5vdCBzZXQKICMgQ09ORklHX1BSRUVNUFQgaXMgbm90IHNldAogQ09ORklHX0JJTkZNVF9FTEY9eQogIyBDT05GSUdfQklORk1UX01JU0MgaXMgbm90IHNldAorIyBDT05GSUdfSU9NTVVfSEVMUEVSIGlzIG5vdCBzZXQKIENPTkZJR19BUkNIX0VOQUJMRV9NRU1PUllfSE9UUExVRz15CitDT05GSUdfQVJDSF9IQVNfV0FMS19NRU1PUlk9eQorQ09ORklHX0FSQ0hfRU5BQkxFX01FTU9SWV9IT1RSRU1PVkU9eQogIyBDT05GSUdfS0VYRUMgaXMgbm90IHNldAogQ09ORklHX0FSQ0hfRkxBVE1FTV9FTkFCTEU9eQogQ09ORklHX0FSQ0hfUE9QVUxBVEVTX05PREVfTUFQPXkKQEAgLTIwNiwxMCArMjMxLDcgQEAKIENPTkZJR19QUk9DX0RFVklDRVRSRUU9eQogIyBDT05GSUdfQ01ETElORV9CT09MIGlzIG5vdCBzZXQKICMgQ09ORklHX1BNIGlzIG5vdCBzZXQKLUNPTkZJR19TVVNQRU5EX1VQX1BPU1NJQkxFPXkKLUNPTkZJR19ISUJFUk5BVElPTl9VUF9QT1NTSUJMRT15CiBDT05GSUdfU0VDQ09NUD15Ci0jIENPTkZJR19XQU5UX0RFVklDRV9UUkVFIGlzIG5vdCBzZXQKIENPTkZJR19JU0FfRE1BX0FQST15CiAKICMKQEAgLTI1OSw2ICsyODEsNyBAQAogIyBDT05GSUdfWEZSTV9VU0VSIGlzIG5vdCBzZXQKICMgQ09ORklHX1hGUk1fU1VCX1BPTElDWSBpcyBub3Qgc2V0CiAjIENPTkZJR19YRlJNX01JR1JBVEUgaXMgbm90IHNldAorIyBDT05GSUdfWEZSTV9TVEFUSVNUSUNTIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9LRVkgaXMgbm90IHNldAogQ09ORklHX0lORVQ9eQogQ09ORklHX0lQX01VTFRJQ0FTVD15CkBAIC0yOTUsMTIgKzMxOCwxMyBAQAogIyBDT05GSUdfTkVUV09SS19TRUNNQVJLIGlzIG5vdCBzZXQKIENPTkZJR19ORVRGSUxURVI9eQogIyBDT05GSUdfTkVURklMVEVSX0RFQlVHIGlzIG5vdCBzZXQKK0NPTkZJR19ORVRGSUxURVJfQURWQU5DRUQ9eQogCiAjCiAjIENvcmUgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24KICMKLSMgQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LIGlzIG5vdCBzZXQKLUNPTkZJR19ORl9DT05OVFJBQ0tfRU5BQkxFRD1tCisjIENPTkZJR19ORVRGSUxURVJfTkVUTElOS19RVUVVRSBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRGSUxURVJfTkVUTElOS19MT0cgaXMgbm90IHNldAogQ09ORklHX05GX0NPTk5UUkFDSz1tCiAjIENPTkZJR19ORl9DVF9BQ0NUIGlzIG5vdCBzZXQKICMgQ09ORklHX05GX0NPTk5UUkFDS19NQVJLIGlzIG5vdCBzZXQKQEAgLTMxNyw2ICszNDEsNyBAQAogIyBDT05GSUdfTkZfQ09OTlRSQUNLX1NBTkUgaXMgbm90IHNldAogQ09ORklHX05GX0NPTk5UUkFDS19TSVA9bQogQ09ORklHX05GX0NPTk5UUkFDS19URlRQPW0KKyMgQ09ORklHX05GX0NUX05FVExJTksgaXMgbm90IHNldAogQ09ORklHX05FVEZJTFRFUl9YVEFCTEVTPW0KICMgQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfQ0xBU1NJRlkgaXMgbm90IHNldAogIyBDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9DT05OTUFSSyBpcyBub3Qgc2V0CkBAIC0zMjUsOCArMzUwLDEwIEBACiAjIENPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX05GUVVFVUUgaXMgbm90IHNldAogIyBDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9ORkxPRyBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX05PVFJBQ0sgaXMgbm90IHNldAorIyBDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9SQVRFRVNUIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfVFJBQ0UgaXMgbm90IHNldAogIyBDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9UQ1BNU1MgaXMgbm90IHNldAorIyBDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9UQ1BPUFRTVFJJUCBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfQ09NTUVOVCBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkJZVEVTIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9DT05OTElNSVQgaXMgbm90IHNldApAQCAtMzM2LDE0ICszNjMsMTcgQEAKICMgQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9EU0NQIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9FU1AgaXMgbm90IHNldAogIyBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0hFTFBFUiBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfSVBSQU5HRSBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfTEVOR1RIIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9MSU1JVCBpcyBub3Qgc2V0CiBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX01BQz1tCiAjIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfTUFSSyBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfT1dORVIgaXMgbm90IHNldAogIyBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1BPTElDWSBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfTVVMVElQT1JUIGlzIG5vdCBzZXQKIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfUEtUVFlQRT1tCiAjIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfUVVPVEEgaXMgbm90IHNldAorIyBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1JBVEVFU1QgaXMgbm90IHNldAogIyBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1JFQUxNIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9TQ1RQIGlzIG5vdCBzZXQKIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfU1RBVEU9bQpAQCAtMzYxLDEzICszOTEsMTAgQEAKIENPTkZJR19ORl9DT05OVFJBQ0tfUFJPQ19DT01QQVQ9eQogIyBDT05GSUdfSVBfTkZfUVVFVUUgaXMgbm90IHNldAogQ09ORklHX0lQX05GX0lQVEFCTEVTPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9JUFJBTkdFPW0KLSMgQ09ORklHX0lQX05GX01BVENIX1RPUyBpcyBub3Qgc2V0CiBDT05GSUdfSVBfTkZfTUFUQ0hfUkVDRU5UPW0KICMgQ09ORklHX0lQX05GX01BVENIX0VDTiBpcyBub3Qgc2V0CiAjIENPTkZJR19JUF9ORl9NQVRDSF9BSCBpcyBub3Qgc2V0CiAjIENPTkZJR19JUF9ORl9NQVRDSF9UVEwgaXMgbm90IHNldAotQ09ORklHX0lQX05GX01BVENIX09XTkVSPW0KIENPTkZJR19JUF9ORl9NQVRDSF9BRERSVFlQRT1tCiBDT05GSUdfSVBfTkZfRklMVEVSPW0KIENPTkZJR19JUF9ORl9UQVJHRVRfUkVKRUNUPW0KQEAgLTM3OCw3ICs0MDUsNiBAQAogQ09ORklHX0lQX05GX1RBUkdFVF9NQVNRVUVSQURFPW0KIENPTkZJR19JUF9ORl9UQVJHRVRfUkVESVJFQ1Q9bQogIyBDT05GSUdfSVBfTkZfVEFSR0VUX05FVE1BUCBpcyBub3Qgc2V0Ci0jIENPTkZJR19JUF9ORl9UQVJHRVRfU0FNRSBpcyBub3Qgc2V0CiAjIENPTkZJR19ORl9OQVRfU05NUF9CQVNJQyBpcyBub3Qgc2V0CiBDT05GSUdfTkZfTkFUX1BST1RPX0dSRT1tCiBDT05GSUdfTkZfTkFUX0ZUUD1tCkBAIC0zODksNyArNDE1LDYgQEAKIENPTkZJR19ORl9OQVRfSDMyMz1tCiBDT05GSUdfTkZfTkFUX1NJUD1tCiBDT05GSUdfSVBfTkZfTUFOR0xFPW0KLUNPTkZJR19JUF9ORl9UQVJHRVRfVE9TPW0KIENPTkZJR19JUF9ORl9UQVJHRVRfRUNOPW0KIENPTkZJR19JUF9ORl9UQVJHRVRfVFRMPW0KICMgQ09ORklHX0lQX05GX1RBUkdFVF9DTFVTVEVSSVAgaXMgbm90IHNldApAQCAtNDE4LDYgKzQ0Myw3IEBACiAjCiAjIENPTkZJR19ORVRfUEtUR0VOIGlzIG5vdCBzZXQKICMgQ09ORklHX0hBTVJBRElPIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NBTiBpcyBub3Qgc2V0CiAjIENPTkZJR19JUkRBIGlzIG5vdCBzZXQKICMgQ09ORklHX0JUIGlzIG5vdCBzZXQKICMgQ09ORklHX0FGX1JYUlBDIGlzIG5vdCBzZXQKQEAgLTQ1OSw2ICs0ODUsNyBAQAogQ09ORklHX01URF9QQVJUSVRJT05TPXkKICMgQ09ORklHX01URF9SRURCT09UX1BBUlRTIGlzIG5vdCBzZXQKICMgQ09ORklHX01URF9DTURMSU5FX1BBUlRTIGlzIG5vdCBzZXQKKyMgQ09ORklHX01URF9PRl9QQVJUUyBpcyBub3Qgc2V0CiAKICMKICMgVXNlciBNb2R1bGVzIEFuZCBUcmFuc2xhdGlvbiBMYXllcnMKQEAgLTU1NCw3ICs1ODEsNyBAQAogQ09ORklHX0JMS19ERVZfUkFNPXkKIENPTkZJR19CTEtfREVWX1JBTV9DT1VOVD0yCiBDT05GSUdfQkxLX0RFVl9SQU1fU0laRT04MTkyCi1DT05GSUdfQkxLX0RFVl9SQU1fQkxPQ0tTSVpFPTEwMjQKKyMgQ09ORklHX0JMS19ERVZfWElQIGlzIG5vdCBzZXQKICMgQ09ORklHX0NEUk9NX1BLVENEVkQgaXMgbm90IHNldAogIyBDT05GSUdfQVRBX09WRVJfRVRIIGlzIG5vdCBzZXQKIENPTkZJR19NSVNDX0RFVklDRVM9eQpAQCAtNTYyLDYgKzU4OSw4IEBACiAjIENPTkZJR19FRVBST01fOTNDWDYgaXMgbm90IHNldAogIyBDT05GSUdfU0dJX0lPQzQgaXMgbm90IHNldAogIyBDT05GSUdfVElGTV9DT1JFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VOQ0xPU1VSRV9TRVJWSUNFUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9JREU9eQogIyBDT05GSUdfSURFIGlzIG5vdCBzZXQKIAogIwpAQCAtNjI2LDYgKzY1NSw3IEBACiAjIENPTkZJR19TQ1NJX0lQUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX0lOSVRJTyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX0lOSUExMDAgaXMgbm90IHNldAorIyBDT05GSUdfU0NTSV9NVlNBUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX1NURVggaXMgbm90IHNldAogIyBDT05GSUdfU0NTSV9TWU01M0M4WFhfMiBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX0lQUiBpcyBub3Qgc2V0CkBAIC02NTYsNiArNjg2LDcgQEAKICMgQ09ORklHX1NBVEFfVklBIGlzIG5vdCBzZXQKICMgQ09ORklHX1NBVEFfVklURVNTRSBpcyBub3Qgc2V0CiAjIENPTkZJR19TQVRBX0lOSUMxNjJYIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NBVEFfRlNMIGlzIG5vdCBzZXQKICMgQ09ORklHX1BBVEFfQUxJIGlzIG5vdCBzZXQKICMgQ09ORklHX1BBVEFfQU1EIGlzIG5vdCBzZXQKICMgQ09ORklHX1BBVEFfQVJUT1AgaXMgbm90IHNldApAQCAtNjc5LDYgKzcxMCw3IEBACiAjIENPTkZJR19QQVRBX01QSUlYIGlzIG5vdCBzZXQKICMgQ09ORklHX1BBVEFfT0xEUElJWCBpcyBub3Qgc2V0CiAjIENPTkZJR19QQVRBX05FVENFTEwgaXMgbm90IHNldAorIyBDT05GSUdfUEFUQV9OSU5KQTMyIGlzIG5vdCBzZXQKICMgQ09ORklHX1BBVEFfTlM4NzQxMCBpcyBub3Qgc2V0CiAjIENPTkZJR19QQVRBX05TODc0MTUgaXMgbm90IHNldAogIyBDT05GSUdfUEFUQV9PUFRJIGlzIG5vdCBzZXQKQEAgLTY5Myw2ICs3MjUsNyBAQAogIyBDT05GSUdfUEFUQV9TSVMgaXMgbm90IHNldAogIyBDT05GSUdfUEFUQV9WSUEgaXMgbm90IHNldAogIyBDT05GSUdfUEFUQV9XSU5CT05EIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BBVEFfUExBVEZPUk0gaXMgbm90IHNldAogIyBDT05GSUdfTUQgaXMgbm90IHNldAogIyBDT05GSUdfRlVTSU9OIGlzIG5vdCBzZXQKIApAQCAtNzExLDcgKzc0NCw2IEBACiAjIENPTkZJR19FUVVBTElaRVIgaXMgbm90IHNldAogQ09ORklHX1RVTj1tCiAjIENPTkZJR19WRVRIIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lQMTAwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19BUkNORVQgaXMgbm90IHNldAogIyBDT05GSUdfUEhZTElCIGlzIG5vdCBzZXQKIENPTkZJR19ORVRfRVRIRVJORVQ9eQpAQCAtNzQyLDYgKzc3NCw5IEBACiAjIENPTkZJR19ETDJLIGlzIG5vdCBzZXQKICMgQ09ORklHX0UxMDAwIGlzIG5vdCBzZXQKICMgQ09ORklHX0UxMDAwRSBpcyBub3Qgc2V0CisjIENPTkZJR19FMTAwMEVfRU5BQkxFRCBpcyBub3Qgc2V0CisjIENPTkZJR19JUDEwMDAgaXMgbm90IHNldAorIyBDT05GSUdfSUdCIGlzIG5vdCBzZXQKICMgQ09ORklHX05TODM4MjAgaXMgbm90IHNldAogIyBDT05GSUdfSEFNQUNISSBpcyBub3Qgc2V0CiAjIENPTkZJR19ZRUxMT1dGSU4gaXMgbm90IHNldApAQCAtNzU0LDYgKzc4OSw3IEBACiAjIENPTkZJR19WSUFfVkVMT0NJVFkgaXMgbm90IHNldAogIyBDT05GSUdfVElHT04zIGlzIG5vdCBzZXQKICMgQ09ORklHX0JOWDIgaXMgbm90IHNldAorIyBDT05GSUdfR0lBTkZBUiBpcyBub3Qgc2V0CiAjIENPTkZJR19NVjY0M1hYX0VUSCBpcyBub3Qgc2V0CiAjIENPTkZJR19RTEEzWFhYIGlzIG5vdCBzZXQKICMgQ09ORklHX0FUTDEgaXMgbm90IHNldApAQCAtNzY4LDYgKzgwNCw3IEBACiAjIENPTkZJR19OSVUgaXMgbm90IHNldAogIyBDT05GSUdfTUxYNF9DT1JFIGlzIG5vdCBzZXQKICMgQ09ORklHX1RFSFVUSSBpcyBub3Qgc2V0CisjIENPTkZJR19CTlgyWCBpcyBub3Qgc2V0CiAjIENPTkZJR19UUiBpcyBub3Qgc2V0CiAKICMKQEAgLTc5MCw3ICs4MjcsNiBAQAogIyBDT05GSUdfUFBQIGlzIG5vdCBzZXQKICMgQ09ORklHX1NMSVAgaXMgbm90IHNldAogIyBDT05GSUdfTkVUX0ZDIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NIQVBFUiBpcyBub3Qgc2V0CiBDT05GSUdfTkVUQ09OU09MRT15CiAjIENPTkZJR19ORVRDT05TT0xFX0RZTkFNSUMgaXMgbm90IHNldAogQ09ORklHX05FVFBPTEw9eQpAQCAtODUxLDYgKzg4Nyw3IEBACiBDT05GSUdfSFdfQ09OU09MRT15CiAjIENPTkZJR19WVF9IV19DT05TT0xFX0JJTkRJTkcgaXMgbm90IHNldAogIyBDT05GSUdfU0VSSUFMX05PTlNUQU5EQVJEIGlzIG5vdCBzZXQKKyMgQ09ORklHX05PWk9NSSBpcyBub3Qgc2V0CiAKICMKICMgU2VyaWFsIGRyaXZlcnMKQEAgLTkyNCwxNCArOTYxLDEyIEBACiAjCiAjIE1pc2NlbGxhbmVvdXMgSTJDIENoaXAgc3VwcG9ydAogIwotIyBDT05GSUdfU0VOU09SU19EUzEzMzcgaXMgbm90IHNldAotIyBDT05GSUdfU0VOU09SU19EUzEzNzQgaXMgbm90IHNldAogIyBDT05GSUdfRFMxNjgyIGlzIG5vdCBzZXQKIENPTkZJR19TRU5TT1JTX0VFUFJPTT1tCiAjIENPTkZJR19TRU5TT1JTX1BDRjg1NzQgaXMgbm90IHNldAotIyBDT05GSUdfU0VOU09SU19QQ0E5NTM5IGlzIG5vdCBzZXQKKyMgQ09ORklHX1BDRjg1NzUgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19QQ0Y4NTkxIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NFTlNPUlNfTTQxVDAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RQUzY1MDEwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfTUFYNjg3NSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1RTTDI1NTAgaXMgbm90IHNldAogIyBDT05GSUdfSTJDX0RFQlVHX0NPUkUgaXMgbm90IHNldApAQCAtOTU2LDYgKzk5MSw3IEBACiAjIENPTkZJR19TRU5TT1JTX0FETTEwMzEgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19BRE05MjQwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfQURUNzQ3MCBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX0FEVDc0NzMgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19BVFhQMSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0RTMTYyMSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0k1S19BTUIgaXMgbm90IHNldApAQCAtOTg1LDYgKzEwMjEsNyBAQAogIyBDT05GSUdfU0VOU09SU19TTVNDNDdNMSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1NNU0M0N00xOTIgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19TTVNDNDdCMzk3IGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNPUlNfQURTNzgyOCBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1RITUM1MCBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1ZJQTY4NkEgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19WVDEyMTEgaXMgbm90IHNldApAQCAtOTk0LDkgKzEwMzEsMTEgQEAKICMgQ09ORklHX1NFTlNPUlNfVzgzNzkyRCBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1c4Mzc5MyBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1c4M0w3ODVUUyBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX1c4M0w3ODZORyBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1c4MzYyN0hGIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVzgzNjI3RUhGIGlzIG5vdCBzZXQKICMgQ09ORklHX0hXTU9OX0RFQlVHX0NISVAgaXMgbm90IHNldAorIyBDT05GSUdfVEhFUk1BTCBpcyBub3Qgc2V0CiAjIENPTkZJR19XQVRDSERPRyBpcyBub3Qgc2V0CiAKICMKQEAgLTEwNjMsNiArMTEwMiw3IEBACiBDT05GSUdfVVNCX0FSQ0hfSEFTX0VIQ0k9eQogQ09ORklHX1VTQj15CiAjIENPTkZJR19VU0JfREVCVUcgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX0FOTk9VTkNFX05FV19ERVZJQ0VTIGlzIG5vdCBzZXQKIAogIwogIyBNaXNjZWxsYW5lb3VzIFVTQiBvcHRpb25zCkBAIC0xMDc2LDkgKzExMTYsMTAgQEAKICMgVVNCIEhvc3QgQ29udHJvbGxlciBEcml2ZXJzCiAjCiBDT05GSUdfVVNCX0VIQ0lfSENEPXkKLSMgQ09ORklHX1VTQl9FSENJX1NQTElUX0lTTyBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfRUhDSV9ST09UX0hVQl9UVCBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfRUhDSV9UVF9ORVdTQ0hFRCBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfRUhDSV9GU0wgaXMgbm90IHNldAorQ09ORklHX1VTQl9FSENJX0hDRF9QUENfT0Y9eQogIyBDT05GSUdfVVNCX0lTUDExNlhfSENEIGlzIG5vdCBzZXQKIENPTkZJR19VU0JfT0hDSV9IQ0Q9eQogQ09ORklHX1VTQl9PSENJX0hDRF9QUENfT0Y9eQpAQCAtMTEzMCwxMiArMTE3MSw5IEBACiAjCiAjIFVTQiBwb3J0IGRyaXZlcnMKICMKLQotIwotIyBVU0IgU2VyaWFsIENvbnZlcnRlciBzdXBwb3J0Ci0jCiBDT05GSUdfVVNCX1NFUklBTD15CiBDT05GSUdfVVNCX1NFUklBTF9DT05TT0xFPXkKKyMgQ09ORklHX1VTQl9FWlVTQiBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfU0VSSUFMX0dFTkVSSUMgaXMgbm90IHNldAogIyBDT05GSUdfVVNCX1NFUklBTF9BSVJDQUJMRSBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfU0VSSUFMX0FJUlBSSU1FIGlzIG5vdCBzZXQKQEAgLTExNTYsNiArMTE5NCw3IEBACiAjIENPTkZJR19VU0JfU0VSSUFMX0VER0VQT1JUX1RJIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9TRVJJQUxfR0FSTUlOIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9TRVJJQUxfSVBXIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9TRVJJQUxfSVVVIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9TRVJJQUxfS0VZU1BBTl9QREEgaXMgbm90IHNldAogIyBDT05GSUdfVVNCX1NFUklBTF9LRVlTUEFOIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9TRVJJQUxfS0xTSSBpcyBub3Qgc2V0CkBAIC0xMTk5LDE2ICsxMjM4LDkgQEAKICMgQ09ORklHX1VTQl9UUkFOQ0VWSUJSQVRPUiBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfSU9XQVJSSU9SIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9URVNUIGlzIG5vdCBzZXQKLQotIwotIyBVU0IgRFNMIG1vZGVtIHN1cHBvcnQKLSMKLQotIwotIyBVU0IgR2FkZ2V0IFN1cHBvcnQKLSMKICMgQ09ORklHX1VTQl9HQURHRVQgaXMgbm90IHNldAogIyBDT05GSUdfTU1DIGlzIG5vdCBzZXQKKyMgQ09ORklHX01FTVNUSUNLIGlzIG5vdCBzZXQKICMgQ09ORklHX05FV19MRURTIGlzIG5vdCBzZXQKICMgQ09ORklHX0lORklOSUJBTkQgaXMgbm90IHNldAogIyBDT05GSUdfRURBQyBpcyBub3Qgc2V0CkBAIC0xMjQwLDYgKzEyNzIsNyBAQAogIyBDT05GSUdfUlRDX0RSVl9QQ0Y4NTYzIGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfUENGODU4MyBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfRFJWX000MVQ4MCBpcyBub3Qgc2V0CisjIENPTkZJR19SVENfRFJWX1MzNTM5MEEgaXMgbm90IHNldAogCiAjCiAjIFNQSSBSVEMgZHJpdmVycwpAQCAtMTI0OSw5ICsxMjgyLDEwIEBACiAjIFBsYXRmb3JtIFJUQyBkcml2ZXJzCiAjCiAjIENPTkZJR19SVENfRFJWX0NNT1MgaXMgbm90IHNldAorIyBDT05GSUdfUlRDX0RSVl9EUzE1MTEgaXMgbm90IHNldAogIyBDT05GSUdfUlRDX0RSVl9EUzE1NTMgaXMgbm90IHNldAotIyBDT05GSUdfUlRDX0RSVl9TVEsxN1RBOCBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfRFJWX0RTMTc0MiBpcyBub3Qgc2V0CisjIENPTkZJR19SVENfRFJWX1NUSzE3VEE4IGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfTTQ4VDg2IGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfTTQ4VDU5IGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfVjMwMjAgaXMgbm90IHNldApAQCAtMTI1OSw2ICsxMjkzLDcgQEAKICMKICMgb24tQ1BVIFJUQyBkcml2ZXJzCiAjCisjIENPTkZJR19ETUFERVZJQ0VTIGlzIG5vdCBzZXQKIAogIwogIyBVc2Vyc3BhY2UgSS9PCkBAIC0xMjg4LDEyICsxMzIzLDEwIEBACiAjIENPTkZJR19YRlNfUlQgaXMgbm90IHNldAogIyBDT05GSUdfR0ZTMl9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19PQ0ZTMl9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CitDT05GSUdfRE5PVElGWT15CiBDT05GSUdfSU5PVElGWT15CiBDT05GSUdfSU5PVElGWV9VU0VSPXkKICMgQ09ORklHX1FVT1RBIGlzIG5vdCBzZXQKLUNPTkZJR19ETk9USUZZPXkKICMgQ09ORklHX0FVVE9GU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19BVVRPRlM0X0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZVU0VfRlMgaXMgbm90IHNldApAQCAtMTM0NCw4ICsxMzc3LDEwIEBACiAjIENPTkZJR19KRkZTMl9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUkFNRlMgaXMgbm90IHNldAogIyBDT05GSUdfVlhGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19IUEZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1FOWDRGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TWVNWX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1VGU19GUyBpcyBub3Qgc2V0CiBDT05GSUdfTkVUV09SS19GSUxFU1lTVEVNUz15CkBAIC0xNDI3LDcgKzE0NjIsNiBAQAogIyBDT05GSUdfTkxTX0tPSThfVSBpcyBub3Qgc2V0CiBDT05GSUdfTkxTX1VURjg9bQogIyBDT05GSUdfRExNIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VDQ19TTE9XIGlzIG5vdCBzZXQKIAogIwogIyBMaWJyYXJ5IHJvdXRpbmVzCkBAIC0xNDQ3LDcgKzE0ODEsNiBAQAogQ09ORklHX0hBU19JT01FTT15CiBDT05GSUdfSEFTX0lPUE9SVD15CiBDT05GSUdfSEFTX0RNQT15Ci0jIENPTkZJR19JTlNUUlVNRU5UQVRJT04gaXMgbm90IHNldAogCiAjCiAjIEtlcm5lbCBoYWNraW5nCkBAIC0xNDY2LDYgKzE0OTksNyBAQAogIyBDT05GSUdfU0NIRURTVEFUUyBpcyBub3Qgc2V0CiAjIENPTkZJR19USU1FUl9TVEFUUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TTFVCX0RFQlVHX09OIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NMVUJfU1RBVFMgaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfUlRfTVVURVhFUyBpcyBub3Qgc2V0CiAjIENPTkZJR19SVF9NVVRFWF9URVNURVIgaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfU1BJTkxPQ0sgaXMgbm90IHNldApAQCAtMTQ3OCw5ICsxNTEyLDkgQEAKICMgQ09ORklHX0RFQlVHX1ZNIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX0xJU1QgaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfU0cgaXMgbm90IHNldAotQ09ORklHX0ZPUkNFRF9JTkxJTklORz15CiAjIENPTkZJR19CT09UX1BSSU5US19ERUxBWSBpcyBub3Qgc2V0CiAjIENPTkZJR19SQ1VfVE9SVFVSRV9URVNUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JBQ0tUUkFDRV9TRUxGX1RFU1QgaXMgbm90IHNldAogIyBDT05GSUdfRkFVTFRfSU5KRUNUSU9OIGlzIG5vdCBzZXQKICMgQ09ORklHX1NBTVBMRVMgaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfU1RBQ0tPVkVSRkxPVyBpcyBub3Qgc2V0CkBAIC0xNTAwLDYgKzE1MzQsNyBAQAogQ09ORklHX0NSWVBUTz15CiBDT05GSUdfQ1JZUFRPX0FMR0FQST15CiBDT05GSUdfQ1JZUFRPX0JMS0NJUEhFUj15CisjIENPTkZJR19DUllQVE9fU0VRSVYgaXMgbm90IHNldAogQ09ORklHX0NSWVBUT19NQU5BR0VSPXkKICMgQ09ORklHX0NSWVBUT19ITUFDIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19YQ0JDIGlzIG5vdCBzZXQKQEAgLTE1MTcsNiArMTU1Miw5IEBACiBDT05GSUdfQ1JZUFRPX1BDQkM9bQogIyBDT05GSUdfQ1JZUFRPX0xSVyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fWFRTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DVFIgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0dDTSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ0NNIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19DUllQVEQgaXMgbm90IHNldAogQ09ORklHX0NSWVBUT19ERVM9eQogIyBDT05GSUdfQ1JZUFRPX0ZDUllQVCBpcyBub3Qgc2V0CkBAIC0xNTMyLDExICsxNTcwLDE0IEBACiAjIENPTkZJR19DUllQVE9fS0hBWkFEIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19BTlVCSVMgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX1NFRUQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1NBTFNBMjAgaXMgbm90IHNldAogQ09ORklHX0NSWVBUT19ERUZMQVRFPW0KIENPTkZJR19DUllQVE9fTUlDSEFFTF9NSUM9bQogQ09ORklHX0NSWVBUT19DUkMzMkM9bQogIyBDT05GSUdfQ1JZUFRPX0NBTUVMTElBIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19URVNUIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19BVVRIRU5DIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19MWk8gaXMgbm90IHNldAogQ09ORklHX0NSWVBUT19IVz15CisjIENPTkZJR19DUllQVE9fREVWX0hJRk5fNzk1WCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfQ0xPQ0sgaXMgbm90IHNldApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjNzQ0OF9ocGMyX2RlZmNvbmZpZyBiL2FyY2gvcG93ZXJwYy9jb25maWdzL21wYzc0NDhfaHBjMl9kZWZjb25maWcKaW5kZXggYjAyNjZkZS4uYTNkNTJlMyAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjNzQ0OF9ocGMyX2RlZmNvbmZpZworKysgYi9hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM3NDQ4X2hwYzJfZGVmY29uZmlnCkBAIC0xLDcgKzEsNyBAQAogIwogIyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBtYWtlIGNvbmZpZzogZG9uJ3QgZWRpdAotIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjI0LXJjNAotIyBUaHUgRGVjICA2IDE2OjQ4OjI4IDIwMDcKKyMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4yNS1yYzYKKyMgTW9uIE1hciAyNCAwODo0ODoxMSAyMDA4CiAjCiAjIENPTkZJR19QUEM2NCBpcyBub3Qgc2V0CiAKQEAgLTI5LDYgKzI5LDcgQEAKIENPTkZJR19HRU5FUklDX1RJTUVfVlNZU0NBTEw9eQogQ09ORklHX0dFTkVSSUNfQ0xPQ0tFVkVOVFM9eQogQ09ORklHX0dFTkVSSUNfSEFSRElSUVM9eQorIyBDT05GSUdfSEFWRV9TRVRVUF9QRVJfQ1BVX0FSRUEgaXMgbm90IHNldAogQ09ORklHX0lSUV9QRVJfQ1BVPXkKIENPTkZJR19SV1NFTV9YQ0hHQUREX0FMR09SSVRITT15CiBDT05GSUdfQVJDSF9IQVNfSUxPRzJfVTMyPXkKQEAgLTY2LDE1ICs2NywxOSBAQAogIyBDT05GSUdfUE9TSVhfTVFVRVVFIGlzIG5vdCBzZXQKICMgQ09ORklHX0JTRF9QUk9DRVNTX0FDQ1QgaXMgbm90IHNldAogIyBDT05GSUdfVEFTS1NUQVRTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VTRVJfTlMgaXMgbm90IHNldAotIyBDT05GSUdfUElEX05TIGlzIG5vdCBzZXQKICMgQ09ORklHX0FVRElUIGlzIG5vdCBzZXQKICMgQ09ORklHX0lLQ09ORklHIGlzIG5vdCBzZXQKIENPTkZJR19MT0dfQlVGX1NISUZUPTE0CiAjIENPTkZJR19DR1JPVVBTIGlzIG5vdCBzZXQKK0NPTkZJR19HUk9VUF9TQ0hFRD15CiAjIENPTkZJR19GQUlSX0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JUX0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKK0NPTkZJR19VU0VSX1NDSEVEPXkKKyMgQ09ORklHX0NHUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CiBDT05GSUdfU1lTRlNfREVQUkVDQVRFRD15CitDT05GSUdfU1lTRlNfREVQUkVDQVRFRF9WMj15CiAjIENPTkZJR19SRUxBWSBpcyBub3Qgc2V0CisjIENPTkZJR19OQU1FU1BBQ0VTIGlzIG5vdCBzZXQKIENPTkZJR19CTEtfREVWX0lOSVRSRD15CiBDT05GSUdfSU5JVFJBTUZTX1NPVVJDRT0iIgogIyBDT05GSUdfQ0NfT1BUSU1JWkVfRk9SX1NJWkUgaXMgbm90IHNldApAQCAtODcsMTEgKzkyLDEzIEBACiBDT05GSUdfUFJJTlRLPXkKIENPTkZJR19CVUc9eQogQ09ORklHX0VMRl9DT1JFPXkKK0NPTkZJR19DT01QQVRfQlJLPXkKIENPTkZJR19CQVNFX0ZVTEw9eQogQ09ORklHX0ZVVEVYPXkKIENPTkZJR19BTk9OX0lOT0RFUz15CiBDT05GSUdfRVBPTEw9eQogQ09ORklHX1NJR05BTEZEPXkKK0NPTkZJR19USU1FUkZEPXkKIENPTkZJR19FVkVOVEZEPXkKIENPTkZJR19TSE1FTT15CiBDT05GSUdfVk1fRVZFTlRfQ09VTlRFUlM9eQpAQCAtOTksNiArMTA2LDEzIEBACiAjIENPTkZJR19TTEFCIGlzIG5vdCBzZXQKIENPTkZJR19TTFVCPXkKICMgQ09ORklHX1NMT0IgaXMgbm90IHNldAorIyBDT05GSUdfUFJPRklMSU5HIGlzIG5vdCBzZXQKKyMgQ09ORklHX01BUktFUlMgaXMgbm90IHNldAorQ09ORklHX0hBVkVfT1BST0ZJTEU9eQorQ09ORklHX0hBVkVfS1BST0JFUz15CitDT05GSUdfSEFWRV9LUkVUUFJPQkVTPXkKK0NPTkZJR19QUk9DX1BBR0VfTU9OSVRPUj15CitDT05GSUdfU0xBQklORk89eQogQ09ORklHX1JUX01VVEVYRVM9eQogIyBDT05GSUdfVElOWV9TSE1FTSBpcyBub3Qgc2V0CiBDT05GSUdfQkFTRV9TTUFMTD0wCkBAIC0xMjEsNiArMTM1LDcgQEAKICMgQ09ORklHX0RFRkFVTFRfQ0ZRIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFRkFVTFRfTk9PUCBpcyBub3Qgc2V0CiBDT05GSUdfREVGQVVMVF9JT1NDSEVEPSJhbnRpY2lwYXRvcnkiCitDT05GSUdfQ0xBU1NJQ19SQ1U9eQogCiAjCiAjIFBsYXRmb3JtIHN1cHBvcnQKQEAgLTEzMSwyMCArMTQ2LDIyIEBACiAjIENPTkZJR19QUENfODZ4eCBpcyBub3Qgc2V0CiBDT05GSUdfQ0xBU1NJQzMyPXkKICMgQ09ORklHX1BQQ19DSFJQIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ19NUEM1MTJ4IGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ19NUEM1MTIxIGlzIG5vdCBzZXQKKyMgQ09ORklHX01QQzUxMjFfQURTIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19NUEM1Mnh4IGlzIG5vdCBzZXQKLSMgQ09ORklHX1BQQ19NUEM1MjAwIGlzIG5vdCBzZXQKLSMgQ09ORklHX1BQQ19FRklLQSBpcyBub3Qgc2V0Ci0jIENPTkZJR19QUENfTElURTUyMDAgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX1BNQUMgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0NFTEwgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0NFTExfTkFUSVZFIGlzIG5vdCBzZXQKICMgQ09ORklHX1BRMkFEUyBpcyBub3Qgc2V0CiBDT05GSUdfRU1CRURERUQ2eHg9eQogIyBDT05GSUdfTElOS1NUQVRJT04gaXMgbm90IHNldAorIyBDT05GSUdfU1RPUkNFTlRFUiBpcyBub3Qgc2V0CiBDT05GSUdfTVBDNzQ0OEhQQzI9eQogIyBDT05GSUdfUFBDX0hPTExZIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19QUlBNQzI4MDAgaXMgbm90IHNldAogQ09ORklHX1RTSTEwOF9CUklER0U9eQorIyBDT05GSUdfSVBJQyBpcyBub3Qgc2V0CiBDT05GSUdfTVBJQz15CiBDT05GSUdfTVBJQ19XRUlSRD15CiAjIENPTkZJR19QUENfSTgyNTkgaXMgbm90IHNldApAQCAtMTU2LDcgKzE3Myw2IEBACiAjIENPTkZJR19HRU5FUklDX0lPTUFQIGlzIG5vdCBzZXQKICMgQ09ORklHX0NQVV9GUkVRIGlzIG5vdCBzZXQKICMgQ09ORklHX1RBVSBpcyBub3Qgc2V0Ci0jIENPTkZJR19DUE0yIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZTTF9VTEkxNTc1IGlzIG5vdCBzZXQKIAogIwpAQCAtMTcyLDEyICsxODgsMTYgQEAKICMgQ09ORklHX0haXzMwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19IWl8xMDAwIGlzIG5vdCBzZXQKIENPTkZJR19IWj0yNTAKKyMgQ09ORklHX1NDSEVEX0hSVElDSyBpcyBub3Qgc2V0CiBDT05GSUdfUFJFRU1QVF9OT05FPXkKICMgQ09ORklHX1BSRUVNUFRfVk9MVU5UQVJZIGlzIG5vdCBzZXQKICMgQ09ORklHX1BSRUVNUFQgaXMgbm90IHNldAogQ09ORklHX0JJTkZNVF9FTEY9eQogQ09ORklHX0JJTkZNVF9NSVNDPXkKKyMgQ09ORklHX0lPTU1VX0hFTFBFUiBpcyBub3Qgc2V0CiBDT05GSUdfQVJDSF9FTkFCTEVfTUVNT1JZX0hPVFBMVUc9eQorQ09ORklHX0FSQ0hfSEFTX1dBTEtfTUVNT1JZPXkKK0NPTkZJR19BUkNIX0VOQUJMRV9NRU1PUllfSE9UUkVNT1ZFPXkKICMgQ09ORklHX0tFWEVDIGlzIG5vdCBzZXQKIENPTkZJR19BUkNIX0ZMQVRNRU1fRU5BQkxFPXkKIENPTkZJR19BUkNIX1BPUFVMQVRFU19OT0RFX01BUD15CkBAIC0xOTcsMTEgKzIxNyw3IEBACiBDT05GSUdfUFJPQ19ERVZJQ0VUUkVFPXkKICMgQ09ORklHX0NNRExJTkVfQk9PTCBpcyBub3Qgc2V0CiAjIENPTkZJR19QTSBpcyBub3Qgc2V0Ci1DT05GSUdfU1VTUEVORF9VUF9QT1NTSUJMRT15Ci1DT05GSUdfSElCRVJOQVRJT05fVVBfUE9TU0lCTEU9eQogIyBDT05GSUdfU0VDQ09NUCBpcyBub3Qgc2V0Ci1DT05GSUdfV0FOVF9ERVZJQ0VfVFJFRT15Ci1DT05GSUdfREVWSUNFX1RSRUU9IiIKIENPTkZJR19JU0FfRE1BX0FQST15CiAKICMKQEAgLTI0OSw2ICsyNjUsNyBAQAogQ09ORklHX1hGUk1fVVNFUj15CiAjIENPTkZJR19YRlJNX1NVQl9QT0xJQ1kgaXMgbm90IHNldAogIyBDT05GSUdfWEZSTV9NSUdSQVRFIGlzIG5vdCBzZXQKKyMgQ09ORklHX1hGUk1fU1RBVElTVElDUyBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRfS0VZIGlzIG5vdCBzZXQKIENPTkZJR19JTkVUPXkKIENPTkZJR19JUF9NVUxUSUNBU1Q9eQpAQCAtMzA0LDYgKzMyMSw3IEBACiAjCiAjIENPTkZJR19ORVRfUEtUR0VOIGlzIG5vdCBzZXQKICMgQ09ORklHX0hBTVJBRElPIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NBTiBpcyBub3Qgc2V0CiAjIENPTkZJR19JUkRBIGlzIG5vdCBzZXQKICMgQ09ORklHX0JUIGlzIG5vdCBzZXQKICMgQ09ORklHX0FGX1JYUlBDIGlzIG5vdCBzZXQKQEAgLTM0OCw3ICszNjYsNyBAQAogQ09ORklHX0JMS19ERVZfUkFNPXkKIENPTkZJR19CTEtfREVWX1JBTV9DT1VOVD0xNgogQ09ORklHX0JMS19ERVZfUkFNX1NJWkU9MTMxMDcyCi1DT05GSUdfQkxLX0RFVl9SQU1fQkxPQ0tTSVpFPTEwMjQKKyMgQ09ORklHX0JMS19ERVZfWElQIGlzIG5vdCBzZXQKICMgQ09ORklHX0NEUk9NX1BLVENEVkQgaXMgbm90IHNldAogIyBDT05GSUdfQVRBX09WRVJfRVRIIGlzIG5vdCBzZXQKIENPTkZJR19NSVNDX0RFVklDRVM9eQpAQCAtMzU2LDYgKzM3NCw4IEBACiAjIENPTkZJR19FRVBST01fOTNDWDYgaXMgbm90IHNldAogIyBDT05GSUdfU0dJX0lPQzQgaXMgbm90IHNldAogIyBDT05GSUdfVElGTV9DT1JFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VOQ0xPU1VSRV9TRVJWSUNFUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9JREU9eQogIyBDT05GSUdfSURFIGlzIG5vdCBzZXQKIAogIwpAQCAtNDE5LDYgKzQzOSw3IEBACiAjIENPTkZJR19TQ1NJX0lQUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX0lOSVRJTyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX0lOSUExMDAgaXMgbm90IHNldAorIyBDT05GSUdfU0NTSV9NVlNBUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX1NURVggaXMgbm90IHNldAogIyBDT05GSUdfU0NTSV9TWU01M0M4WFhfMiBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX0lQUiBpcyBub3Qgc2V0CkBAIC00NzIsNiArNDkzLDcgQEAKICMgQ09ORklHX1BBVEFfTVBJSVggaXMgbm90IHNldAogIyBDT05GSUdfUEFUQV9PTERQSUlYIGlzIG5vdCBzZXQKICMgQ09ORklHX1BBVEFfTkVUQ0VMTCBpcyBub3Qgc2V0CisjIENPTkZJR19QQVRBX05JTkpBMzIgaXMgbm90IHNldAogIyBDT05GSUdfUEFUQV9OUzg3NDEwIGlzIG5vdCBzZXQKICMgQ09ORklHX1BBVEFfTlM4NzQxNSBpcyBub3Qgc2V0CiAjIENPTkZJR19QQVRBX09QVEkgaXMgbm90IHNldApAQCAtNTA1LDcgKzUyNyw2IEBACiAjIENPTkZJR19FUVVBTElaRVIgaXMgbm90IHNldAogIyBDT05GSUdfVFVOIGlzIG5vdCBzZXQKICMgQ09ORklHX1ZFVEggaXMgbm90IHNldAotIyBDT05GSUdfSVAxMDAwIGlzIG5vdCBzZXQKICMgQ09ORklHX0FSQ05FVCBpcyBub3Qgc2V0CiBDT05GSUdfUEhZTElCPXkKIApAQCAtNTIxLDYgKzU0Miw3IEBACiAjIENPTkZJR19TTVNDX1BIWSBpcyBub3Qgc2V0CiAjIENPTkZJR19CUk9BRENPTV9QSFkgaXMgbm90IHNldAogIyBDT05GSUdfSUNQTFVTX1BIWSBpcyBub3Qgc2V0CisjIENPTkZJR19SRUFMVEVLX1BIWSBpcyBub3Qgc2V0CiAjIENPTkZJR19GSVhFRF9QSFkgaXMgbm90IHNldAogIyBDT05GSUdfTURJT19CSVRCQU5HIGlzIG5vdCBzZXQKIENPTkZJR19ORVRfRVRIRVJORVQ9eQpAQCAtNTUyLDYgKzU3NCw3IEBACiAjIENPTkZJR184MTM5VE9PX1RVTkVfVFdJU1RFUiBpcyBub3Qgc2V0CiAjIENPTkZJR184MTM5VE9PXzgxMjkgaXMgbm90IHNldAogIyBDT05GSUdfODEzOV9PTERfUlhfUkVTRVQgaXMgbm90IHNldAorIyBDT05GSUdfUjYwNDAgaXMgbm90IHNldAogIyBDT05GSUdfU0lTOTAwIGlzIG5vdCBzZXQKICMgQ09ORklHX0VQSUMxMDAgaXMgbm90IHNldAogIyBDT05GSUdfU1VOREFOQ0UgaXMgbm90IHNldApAQCAtNTYzLDYgKzU4Niw5IEBACiAjIENPTkZJR19ETDJLIGlzIG5vdCBzZXQKICMgQ09ORklHX0UxMDAwIGlzIG5vdCBzZXQKICMgQ09ORklHX0UxMDAwRSBpcyBub3Qgc2V0CisjIENPTkZJR19FMTAwMEVfRU5BQkxFRCBpcyBub3Qgc2V0CisjIENPTkZJR19JUDEwMDAgaXMgbm90IHNldAorIyBDT05GSUdfSUdCIGlzIG5vdCBzZXQKICMgQ09ORklHX05TODM4MjAgaXMgbm90IHNldAogIyBDT05GSUdfSEFNQUNISSBpcyBub3Qgc2V0CiAjIENPTkZJR19ZRUxMT1dGSU4gaXMgbm90IHNldApAQCAtNTg5LDYgKzYxNSw3IEBACiAjIENPTkZJR19OSVUgaXMgbm90IHNldAogIyBDT05GSUdfTUxYNF9DT1JFIGlzIG5vdCBzZXQKICMgQ09ORklHX1RFSFVUSSBpcyBub3Qgc2V0CisjIENPTkZJR19CTlgyWCBpcyBub3Qgc2V0CiAjIENPTkZJR19UUiBpcyBub3Qgc2V0CiAKICMKQEAgLTYwMiw3ICs2MjksNiBAQAogIyBDT05GSUdfUFBQIGlzIG5vdCBzZXQKICMgQ09ORklHX1NMSVAgaXMgbm90IHNldAogIyBDT05GSUdfTkVUX0ZDIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NIQVBFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRDT05TT0xFIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVFBPTEwgaXMgbm90IHNldAogIyBDT05GSUdfTkVUX1BPTExfQ09OVFJPTExFUiBpcyBub3Qgc2V0CkBAIC02NDUsNiArNjcxLDcgQEAKICMKICMgQ09ORklHX1ZUIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFUklBTF9OT05TVEFOREFSRCBpcyBub3Qgc2V0CisjIENPTkZJR19OT1pPTUkgaXMgbm90IHNldAogCiAjCiAjIFNlcmlhbCBkcml2ZXJzCkBAIC03MDMsNiArNzMwLDcgQEAKICMgQ09ORklHX1NFTlNPUlNfVzgzNjI3SEYgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19XODM2MjdFSEYgaXMgbm90IHNldAogIyBDT05GSUdfSFdNT05fREVCVUdfQ0hJUCBpcyBub3Qgc2V0CisjIENPTkZJR19USEVSTUFMIGlzIG5vdCBzZXQKICMgQ09ORklHX1dBVENIRE9HIGlzIG5vdCBzZXQKIAogIwpAQCAtNzU1LDE2ICs3ODMsMTQgQEAKICMKICMgTk9URTogVVNCX1NUT1JBR0UgZW5hYmxlcyBTQ1NJLCBhbmQgJ1NDU0kgZGlzayBzdXBwb3J0JwogIwotCi0jCi0jIFVTQiBHYWRnZXQgU3VwcG9ydAotIwogIyBDT05GSUdfVVNCX0dBREdFVCBpcyBub3Qgc2V0CiAjIENPTkZJR19NTUMgaXMgbm90IHNldAorIyBDT05GSUdfTUVNU1RJQ0sgaXMgbm90IHNldAogIyBDT05GSUdfTkVXX0xFRFMgaXMgbm90IHNldAogIyBDT05GSUdfSU5GSU5JQkFORCBpcyBub3Qgc2V0CiAjIENPTkZJR19FREFDIGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19DTEFTUyBpcyBub3Qgc2V0CisjIENPTkZJR19ETUFERVZJQ0VTIGlzIG5vdCBzZXQKIAogIwogIyBVc2Vyc3BhY2UgSS9PCkBAIC03OTAsMTIgKzgxNiwxMCBAQAogIyBDT05GSUdfWEZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0dGUzJfRlMgaXMgbm90IHNldAogIyBDT05GSUdfT0NGUzJfRlMgaXMgbm90IHNldAotIyBDT05GSUdfTUlOSVhfRlMgaXMgbm90IHNldAotIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAorQ09ORklHX0ROT1RJRlk9eQogQ09ORklHX0lOT1RJRlk9eQogQ09ORklHX0lOT1RJRllfVVNFUj15CiAjIENPTkZJR19RVU9UQSBpcyBub3Qgc2V0Ci1DT05GSUdfRE5PVElGWT15CiAjIENPTkZJR19BVVRPRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfQVVUT0ZTNF9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19GVVNFX0ZTIGlzIG5vdCBzZXQKQEAgLTgzNyw4ICs4NjEsMTAgQEAKICMgQ09ORklHX0VGU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUkFNRlMgaXMgbm90IHNldAogIyBDT05GSUdfVlhGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19IUEZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1FOWDRGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TWVNWX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1VGU19GUyBpcyBub3Qgc2V0CiBDT05GSUdfTkVUV09SS19GSUxFU1lTVEVNUz15CkBAIC04ODMsNyArOTA5LDYgQEAKICMgQ09ORklHX1NZU1Y2OF9QQVJUSVRJT04gaXMgbm90IHNldAogIyBDT05GSUdfTkxTIGlzIG5vdCBzZXQKICMgQ09ORklHX0RMTSBpcyBub3Qgc2V0Ci0jIENPTkZJR19VQ0NfU0xPVyBpcyBub3Qgc2V0CiAKICMKICMgTGlicmFyeSByb3V0aW5lcwpAQCAtODk5LDcgKzkyNCw2IEBACiBDT05GSUdfSEFTX0lPTUVNPXkKIENPTkZJR19IQVNfSU9QT1JUPXkKIENPTkZJR19IQVNfRE1BPXkKLSMgQ09ORklHX0lOU1RSVU1FTlRBVElPTiBpcyBub3Qgc2V0CiAKICMKICMgS2VybmVsIGhhY2tpbmcKQEAgLTkxMyw2ICs5MzcsNyBAQAogIyBDT05GSUdfSEVBREVSU19DSEVDSyBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19LRVJORUwgaXMgbm90IHNldAogIyBDT05GSUdfU0xVQl9ERUJVR19PTiBpcyBub3Qgc2V0CisjIENPTkZJR19TTFVCX1NUQVRTIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX0JVR1ZFUkJPU0UgaXMgbm90IHNldAogIyBDT05GSUdfU0FNUExFUyBpcyBub3Qgc2V0CiAjIENPTkZJR19CT09UWF9URVhUIGlzIG5vdCBzZXQKQEAgLTkyNCw1ICs5NDksNDkgQEAKICMgQ09ORklHX0tFWVMgaXMgbm90IHNldAogIyBDT05GSUdfU0VDVVJJVFkgaXMgbm90IHNldAogIyBDT05GSUdfU0VDVVJJVFlfRklMRV9DQVBBQklMSVRJRVMgaXMgbm90IHNldAotIyBDT05GSUdfQ1JZUFRPIGlzIG5vdCBzZXQKK0NPTkZJR19DUllQVE89eQorIyBDT05GSUdfQ1JZUFRPX1NFUUlWIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19NQU5BR0VSIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19ITUFDIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19YQ0JDIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19OVUxMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19NRDQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX01ENSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0hBMSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0hBMjU2IGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19TSEE1MTIgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1dQNTEyIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19UR1IxOTIgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0dGMTI4TVVMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19FQ0IgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NCQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fUENCQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fTFJXIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19YVFMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NUUiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fR0NNIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DQ00gaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NSWVBURCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fREVTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19GQ1JZUFQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0JMT1dGSVNIIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19UV09GSVNIIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19TRVJQRU5UIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19BRVMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NBU1Q1IGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DQVNUNiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fVEVBIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19BUkM0IGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19LSEFaQUQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0FOVUJJUyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0VFRCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0FMU0EyMCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fREVGTEFURSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fTUlDSEFFTF9NSUMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NSQzMyQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ0FNRUxMSUEgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0FVVEhFTkMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0xaTyBpcyBub3Qgc2V0CitDT05GSUdfQ1JZUFRPX0hXPXkKKyMgQ09ORklHX0NSWVBUT19ERVZfSElGTl83OTVYIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19DTE9DSyBpcyBub3Qgc2V0CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM4MjcyX2Fkc19kZWZjb25maWcgYi9hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM4MjcyX2Fkc19kZWZjb25maWcKaW5kZXggNWVhZTMwNS4uMDI2NGM1NyAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODI3Ml9hZHNfZGVmY29uZmlnCisrKyBiL2FyY2gvcG93ZXJwYy9jb25maWdzL21wYzgyNzJfYWRzX2RlZmNvbmZpZwpAQCAtMSw3ICsxLDcgQEAKICMKICMgQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgbWFrZSBjb25maWc6IGRvbid0IGVkaXQKLSMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4yNC1yYzUKLSMgVGh1IERlYyAxMyAyMjo0MDo1NyAyMDA3CisjIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMjUtcmM2CisjIE1vbiBNYXIgMjQgMDg6NDg6MTMgMjAwOAogIwogIyBDT05GSUdfUFBDNjQgaXMgbm90IHNldAogCkBAIC0yOCw2ICsyOCw3IEBACiBDT05GSUdfR0VORVJJQ19USU1FX1ZTWVNDQUxMPXkKIENPTkZJR19HRU5FUklDX0NMT0NLRVZFTlRTPXkKIENPTkZJR19HRU5FUklDX0hBUkRJUlFTPXkKKyMgQ09ORklHX0hBVkVfU0VUVVBfUEVSX0NQVV9BUkVBIGlzIG5vdCBzZXQKIENPTkZJR19JUlFfUEVSX0NQVT15CiBDT05GSUdfUldTRU1fWENIR0FERF9BTEdPUklUSE09eQogQ09ORklHX0FSQ0hfSEFTX0lMT0cyX1UzMj15CkBAIC02OSw5ICs3MCwxNCBAQAogQ09ORklHX0lLQ09ORklHX1BST0M9eQogQ09ORklHX0xPR19CVUZfU0hJRlQ9MTQKICMgQ09ORklHX0NHUk9VUFMgaXMgbm90IHNldAorQ09ORklHX0dST1VQX1NDSEVEPXkKICMgQ09ORklHX0ZBSVJfR1JPVVBfU0NIRUQgaXMgbm90IHNldAorQ09ORklHX1VTRVJfU0NIRUQ9eQorIyBDT05GSUdfQ0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKIENPTkZJR19TWVNGU19ERVBSRUNBVEVEPXkKK0NPTkZJR19TWVNGU19ERVBSRUNBVEVEX1YyPXkKICMgQ09ORklHX1JFTEFZIGlzIG5vdCBzZXQKKyMgQ09ORklHX05BTUVTUEFDRVMgaXMgbm90IHNldAogIyBDT05GSUdfQkxLX0RFVl9JTklUUkQgaXMgbm90IHNldAogQ09ORklHX1NZU0NUTD15CiBDT05GSUdfRU1CRURERUQ9eQpAQCAtODMsMTEgKzg5LDEzIEBACiBDT05GSUdfUFJJTlRLPXkKIENPTkZJR19CVUc9eQogQ09ORklHX0VMRl9DT1JFPXkKK0NPTkZJR19DT01QQVRfQlJLPXkKIENPTkZJR19CQVNFX0ZVTEw9eQogQ09ORklHX0ZVVEVYPXkKIENPTkZJR19BTk9OX0lOT0RFUz15CiBDT05GSUdfRVBPTEw9eQogQ09ORklHX1NJR05BTEZEPXkKK0NPTkZJR19USU1FUkZEPXkKIENPTkZJR19FVkVOVEZEPXkKIENPTkZJR19TSE1FTT15CiBDT05GSUdfVk1fRVZFTlRfQ09VTlRFUlM9eQpAQCAtOTUsNiArMTAzLDEzIEBACiAjIENPTkZJR19TTEFCIGlzIG5vdCBzZXQKIENPTkZJR19TTFVCPXkKICMgQ09ORklHX1NMT0IgaXMgbm90IHNldAorIyBDT05GSUdfUFJPRklMSU5HIGlzIG5vdCBzZXQKKyMgQ09ORklHX01BUktFUlMgaXMgbm90IHNldAorQ09ORklHX0hBVkVfT1BST0ZJTEU9eQorQ09ORklHX0hBVkVfS1BST0JFUz15CitDT05GSUdfSEFWRV9LUkVUUFJPQkVTPXkKK0NPTkZJR19QUk9DX1BBR0VfTU9OSVRPUj15CitDT05GSUdfU0xBQklORk89eQogQ09ORklHX1JUX01VVEVYRVM9eQogIyBDT05GSUdfVElOWV9TSE1FTSBpcyBub3Qgc2V0CiBDT05GSUdfQkFTRV9TTUFMTD0wCkBAIC0xMTYsNiArMTMxLDcgQEAKICMgQ09ORklHX0RFRkFVTFRfQ0ZRIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFRkFVTFRfTk9PUCBpcyBub3Qgc2V0CiBDT05GSUdfREVGQVVMVF9JT1NDSEVEPSJhbnRpY2lwYXRvcnkiCitDT05GSUdfQ0xBU1NJQ19SQ1U9eQogCiAjCiAjIFBsYXRmb3JtIHN1cHBvcnQKQEAgLTEyNCwxNiArMTQwLDE4IEBACiBDT05GSUdfUFBDXzgyeHg9eQogIyBDT05GSUdfUFBDXzgzeHggaXMgbm90IHNldAogIyBDT05GSUdfUFBDXzg2eHggaXMgbm90IHNldAotIyBDT05GSUdfUFBDX01QQzUyeHggaXMgbm90IHNldAotIyBDT05GSUdfUFBDX01QQzUyMDAgaXMgbm90IHNldAorIyBDT05GSUdfUFBDX01QQzUxMnggaXMgbm90IHNldAorIyBDT05GSUdfUFBDX01QQzUxMjEgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0NFTEwgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0NFTExfTkFUSVZFIGlzIG5vdCBzZXQKIENPTkZJR19NUEM4MjcyX0FEUz15CiAjIENPTkZJR19QUTJGQURTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VQODI0OEUgaXMgbm90IHNldAogQ09ORklHX1BRMkFEUz15CiBDT05GSUdfODI2MD15CiBDT05GSUdfODI3Mj15CiBDT05GSUdfUFEyX0FEU19QQ0lfUElDPXkKKyMgQ09ORklHX0lQSUMgaXMgbm90IHNldAogIyBDT05GSUdfTVBJQyBpcyBub3Qgc2V0CiAjIENPTkZJR19NUElDX1dFSVJEIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19JODI1OSBpcyBub3Qgc2V0CkBAIC0xNjIsMTIgKzE4MCwxNiBAQAogIyBDT05GSUdfSFpfMzAwIGlzIG5vdCBzZXQKICMgQ09ORklHX0haXzEwMDAgaXMgbm90IHNldAogQ09ORklHX0haPTI1MAorIyBDT05GSUdfU0NIRURfSFJUSUNLIGlzIG5vdCBzZXQKIENPTkZJR19QUkVFTVBUX05PTkU9eQogIyBDT05GSUdfUFJFRU1QVF9WT0xVTlRBUlkgaXMgbm90IHNldAogIyBDT05GSUdfUFJFRU1QVCBpcyBub3Qgc2V0CiBDT05GSUdfQklORk1UX0VMRj15CiBDT05GSUdfQklORk1UX01JU0M9eQorIyBDT05GSUdfSU9NTVVfSEVMUEVSIGlzIG5vdCBzZXQKIENPTkZJR19BUkNIX0VOQUJMRV9NRU1PUllfSE9UUExVRz15CitDT05GSUdfQVJDSF9IQVNfV0FMS19NRU1PUlk9eQorQ09ORklHX0FSQ0hfRU5BQkxFX01FTU9SWV9IT1RSRU1PVkU9eQogQ09ORklHX0FSQ0hfRkxBVE1FTV9FTkFCTEU9eQogQ09ORklHX0FSQ0hfUE9QVUxBVEVTX05PREVfTUFQPXkKIENPTkZJR19GTEFUTUVNPXkKQEAgLTE4MiwxMSArMjA0LDcgQEAKIENPTkZJR19QUk9DX0RFVklDRVRSRUU9eQogIyBDT05GSUdfQ01ETElORV9CT09MIGlzIG5vdCBzZXQKICMgQ09ORklHX1BNIGlzIG5vdCBzZXQKLUNPTkZJR19TVVNQRU5EX1VQX1BPU1NJQkxFPXkKLUNPTkZJR19ISUJFUk5BVElPTl9VUF9QT1NTSUJMRT15CiBDT05GSUdfU0VDQ09NUD15Ci1DT05GSUdfV0FOVF9ERVZJQ0VfVFJFRT15Ci1DT05GSUdfREVWSUNFX1RSRUU9Im1wYzgyNzJhZHMuZHRzIgogQ09ORklHX0lTQV9ETUFfQVBJPXkKIAogIwpAQCAtMjA1LDYgKzIyMyw3IEBACiBDT05GSUdfUENJX0xFR0FDWT15CiAjIENPTkZJR19QQ0lfREVCVUcgaXMgbm90IHNldAogIyBDT05GSUdfUENDQVJEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hPVFBMVUdfUENJIGlzIG5vdCBzZXQKIAogIwogIyBBZHZhbmNlZCBzZXR1cApAQCAtMjc3LDEyICsyOTYsMTMgQEAKICMgQ09ORklHX05FVFdPUktfU0VDTUFSSyBpcyBub3Qgc2V0CiBDT05GSUdfTkVURklMVEVSPXkKICMgQ09ORklHX05FVEZJTFRFUl9ERUJVRyBpcyBub3Qgc2V0CitDT05GSUdfTkVURklMVEVSX0FEVkFOQ0VEPXkKIAogIwogIyBDb3JlIE5ldGZpbHRlciBDb25maWd1cmF0aW9uCiAjCi0jIENPTkZJR19ORVRGSUxURVJfTkVUTElOSyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ORl9DT05OVFJBQ0tfRU5BQkxFRCBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRGSUxURVJfTkVUTElOS19RVUVVRSBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRGSUxURVJfTkVUTElOS19MT0cgaXMgbm90IHNldAogIyBDT05GSUdfTkZfQ09OTlRSQUNLIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVEZJTFRFUl9YVEFCTEVTIGlzIG5vdCBzZXQKIApAQCAtMjkyLDYgKzMxMiwxMyBAQAogIyBDT05GSUdfSVBfTkZfUVVFVUUgaXMgbm90IHNldAogIyBDT05GSUdfSVBfTkZfSVBUQUJMRVMgaXMgbm90IHNldAogIyBDT05GSUdfSVBfTkZfQVJQVEFCTEVTIGlzIG5vdCBzZXQKKworIworIyBJUHY2OiBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvbgorIworIyBDT05GSUdfSVA2X05GX1FVRVVFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lQNl9ORl9JUFRBQkxFUyBpcyBub3Qgc2V0CisjIENPTkZJR19BVE0gaXMgbm90IHNldAogIyBDT05GSUdfQlJJREdFIGlzIG5vdCBzZXQKICMgQ09ORklHX1ZMQU5fODAyMVEgaXMgbm90IHNldAogIyBDT05GSUdfREVDTkVUIGlzIG5vdCBzZXQKQEAgLTMwNSw2ICszMzIsNyBAQAogIwogIyBDT05GSUdfTkVUX1BLVEdFTiBpcyBub3Qgc2V0CiAjIENPTkZJR19IQU1SQURJTyBpcyBub3Qgc2V0CisjIENPTkZJR19DQU4gaXMgbm90IHNldAogIyBDT05GSUdfSVJEQSBpcyBub3Qgc2V0CiAjIENPTkZJR19CVCBpcyBub3Qgc2V0CiAKQEAgLTMxMyw2ICszNDEsNyBAQAogIwogIyBDT05GSUdfQ0ZHODAyMTEgaXMgbm90IHNldAogIyBDT05GSUdfV0lSRUxFU1NfRVhUIGlzIG5vdCBzZXQKKyMgQ09ORklHX01BQzgwMjExIGlzIG5vdCBzZXQKICMgQ09ORklHX0lFRUU4MDIxMSBpcyBub3Qgc2V0CiAjIENPTkZJR19SRktJTEwgaXMgbm90IHNldAogCkBAIC00MjcsNiArNDU2LDcgQEAKICMgQ09ORklHX0NEUk9NX1BLVENEVkQgaXMgbm90IHNldAogIyBDT05GSUdfQVRBX09WRVJfRVRIIGlzIG5vdCBzZXQKICMgQ09ORklHX01JU0NfREVWSUNFUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9JREU9eQogIyBDT05GSUdfSURFIGlzIG5vdCBzZXQKIAogIwpAQCAtNDcyLDYgKzUwMiw3IEBACiAjIENPTkZJR19TTVNDX1BIWSBpcyBub3Qgc2V0CiAjIENPTkZJR19CUk9BRENPTV9QSFkgaXMgbm90IHNldAogIyBDT05GSUdfSUNQTFVTX1BIWSBpcyBub3Qgc2V0CisjIENPTkZJR19SRUFMVEVLX1BIWSBpcyBub3Qgc2V0CiAjIENPTkZJR19GSVhFRF9QSFkgaXMgbm90IHNldAogQ09ORklHX01ESU9fQklUQkFORz15CiBDT05GSUdfTkVUX0VUSEVSTkVUPXkKQEAgLTQ5Nyw2ICs1MjgsOCBAQAogIyBDT05GSUdfREwySyBpcyBub3Qgc2V0CiAjIENPTkZJR19FMTAwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19FMTAwMEUgaXMgbm90IHNldAorIyBDT05GSUdfRTEwMDBFX0VOQUJMRUQgaXMgbm90IHNldAorIyBDT05GSUdfSUdCIGlzIG5vdCBzZXQKICMgQ09ORklHX05TODM4MjAgaXMgbm90IHNldAogIyBDT05GSUdfSEFNQUNISSBpcyBub3Qgc2V0CiAjIENPTkZJR19SODE2OSBpcyBub3Qgc2V0CkBAIC01MDcsNiArNTQwLDcgQEAKICMgQ09ORklHX1ZJQV9WRUxPQ0lUWSBpcyBub3Qgc2V0CiAjIENPTkZJR19USUdPTjMgaXMgbm90IHNldAogIyBDT05GSUdfQk5YMiBpcyBub3Qgc2V0CisjIENPTkZJR19HSUFORkFSIGlzIG5vdCBzZXQKICMgQ09ORklHX1FMQTNYWFggaXMgbm90IHNldAogQ09ORklHX05FVERFVl8xMDAwMD15CiAjIENPTkZJR19DSEVMU0lPX1QxIGlzIG5vdCBzZXQKQEAgLTUxOSw2ICs1NTMsNyBAQAogIyBDT05GSUdfTklVIGlzIG5vdCBzZXQKICMgQ09ORklHX01MWDRfQ09SRSBpcyBub3Qgc2V0CiAjIENPTkZJR19URUhVVEkgaXMgbm90IHNldAorIyBDT05GSUdfQk5YMlggaXMgbm90IHNldAogIyBDT05GSUdfVFIgaXMgbm90IHNldAogCiAjCkBAIC02NDIsNiArNjc3LDcgQEAKICMgQ09ORklHX1cxIGlzIG5vdCBzZXQKICMgQ09ORklHX1BPV0VSX1NVUFBMWSBpcyBub3Qgc2V0CiAjIENPTkZJR19IV01PTiBpcyBub3Qgc2V0CisjIENPTkZJR19USEVSTUFMIGlzIG5vdCBzZXQKICMgQ09ORklHX1dBVENIRE9HIGlzIG5vdCBzZXQKIAogIwpAQCAtNjg0LDkgKzcyMCwxMSBAQAogIyBDT05GSUdfSElEX1NVUFBPUlQgaXMgbm90IHNldAogIyBDT05GSUdfVVNCX1NVUFBPUlQgaXMgbm90IHNldAogIyBDT05GSUdfTU1DIGlzIG5vdCBzZXQKKyMgQ09ORklHX01FTVNUSUNLIGlzIG5vdCBzZXQKICMgQ09ORklHX05FV19MRURTIGlzIG5vdCBzZXQKICMgQ09ORklHX0lORklOSUJBTkQgaXMgbm90IHNldAogIyBDT05GSUdfUlRDX0NMQVNTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RNQURFVklDRVMgaXMgbm90IHNldAogCiAjCiAjIFVzZXJzcGFjZSBJL08KQEAgLTcxMCwxMiArNzQ4LDEwIEBACiBDT05GSUdfRlNfUE9TSVhfQUNMPXkKICMgQ09ORklHX1hGU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19PQ0ZTMl9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CitDT05GSUdfRE5PVElGWT15CiBDT05GSUdfSU5PVElGWT15CiBDT05GSUdfSU5PVElGWV9VU0VSPXkKICMgQ09ORklHX1FVT1RBIGlzIG5vdCBzZXQKLUNPTkZJR19ETk9USUZZPXkKICMgQ09ORklHX0FVVE9GU19GUyBpcyBub3Qgc2V0CiBDT05GSUdfQVVUT0ZTNF9GUz15CiAjIENPTkZJR19GVVNFX0ZTIGlzIG5vdCBzZXQKQEAgLTc0Myw2ICs3NzksNyBAQAogQ09ORklHX1RNUEZTPXkKICMgQ09ORklHX1RNUEZTX1BPU0lYX0FDTCBpcyBub3Qgc2V0CiAjIENPTkZJR19IVUdFVExCX1BBR0UgaXMgbm90IHNldAorIyBDT05GSUdfQ09ORklHRlNfRlMgaXMgbm90IHNldAogCiAjCiAjIE1pc2NlbGxhbmVvdXMgZmlsZXN5c3RlbXMKQEAgLTc1MSw4ICs3ODgsMTAgQEAKICMgQ09ORklHX0pGRlMyX0ZTIGlzIG5vdCBzZXQKIENPTkZJR19DUkFNRlM9eQogIyBDT05GSUdfVlhGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19IUEZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1FOWDRGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TWVNWX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1VGU19GUyBpcyBub3Qgc2V0CiBDT05GSUdfTkVUV09SS19GSUxFU1lTVEVNUz15CkBAIC04MzMsNyArODcyLDYgQEAKICMgQ09ORklHX05MU19LT0k4X1IgaXMgbm90IHNldAogIyBDT05GSUdfTkxTX0tPSThfVSBpcyBub3Qgc2V0CiBDT05GSUdfTkxTX1VURjg9eQotIyBDT05GSUdfVUNDX1NMT1cgaXMgbm90IHNldAogCiAjCiAjIExpYnJhcnkgcm91dGluZXMKQEAgLTg1MSw3ICs4ODksNiBAQAogQ09ORklHX0hBU19JT01FTT15CiBDT05GSUdfSEFTX0lPUE9SVD15CiBDT05GSUdfSEFTX0RNQT15Ci0jIENPTkZJR19JTlNUUlVNRU5UQVRJT04gaXMgbm90IHNldAogCiAjCiAjIEtlcm5lbCBoYWNraW5nCkBAIC04NzAsNiArOTA3LDcgQEAKICMgQ09ORklHX1NDSEVEU1RBVFMgaXMgbm90IHNldAogIyBDT05GSUdfVElNRVJfU1RBVFMgaXMgbm90IHNldAogIyBDT05GSUdfU0xVQl9ERUJVR19PTiBpcyBub3Qgc2V0CisjIENPTkZJR19TTFVCX1NUQVRTIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1JUX01VVEVYRVMgaXMgbm90IHNldAogIyBDT05GSUdfUlRfTVVURVhfVEVTVEVSIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NQSU5MT0NLIGlzIG5vdCBzZXQKQEAgLTg4Miw4ICs5MjAsOCBAQAogIyBDT05GSUdfREVCVUdfVk0gaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfTElTVCBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19TRyBpcyBub3Qgc2V0Ci1DT05GSUdfRk9SQ0VEX0lOTElOSU5HPXkKICMgQ09ORklHX0JPT1RfUFJJTlRLX0RFTEFZIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JBQ0tUUkFDRV9TRUxGX1RFU1QgaXMgbm90IHNldAogIyBDT05GSUdfRkFVTFRfSU5KRUNUSU9OIGlzIG5vdCBzZXQKICMgQ09ORklHX1NBTVBMRVMgaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfU1RBQ0tPVkVSRkxPVyBpcyBub3Qgc2V0CkBAIC05MDIsNiArOTQwLDcgQEAKIENPTkZJR19DUllQVE89eQogQ09ORklHX0NSWVBUT19BTEdBUEk9eQogQ09ORklHX0NSWVBUT19CTEtDSVBIRVI9eQorIyBDT05GSUdfQ1JZUFRPX1NFUUlWIGlzIG5vdCBzZXQKIENPTkZJR19DUllQVE9fTUFOQUdFUj15CiAjIENPTkZJR19DUllQVE9fSE1BQyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fTlVMTCBpcyBub3Qgc2V0CkBAIC05MTUsNiArOTU0LDkgQEAKIENPTkZJR19DUllQVE9fRUNCPXkKIENPTkZJR19DUllQVE9fQ0JDPXkKIENPTkZJR19DUllQVE9fUENCQz15CisjIENPTkZJR19DUllQVE9fQ1RSIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19HQ00gaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NDTSBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fQ1JZUFREIGlzIG5vdCBzZXQKIENPTkZJR19DUllQVE9fREVTPXkKICMgQ09ORklHX0NSWVBUT19GQ1JZUFQgaXMgbm90IHNldApAQCAtOTM0LDYgKzk3Niw3IEBACiAjIENPTkZJR19DUllQVE9fQ1JDMzJDIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19DQU1FTExJQSBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fQVVUSEVOQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fTFpPIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19IVyBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfQ0xPQ0sgaXMgbm90IHNldAogQ09ORklHX1BQQ19MSUJfUkhFQVA9eQpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODMxM19yZGJfZGVmY29uZmlnIGIvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODMxM19yZGJfZGVmY29uZmlnCmluZGV4IDNiMjlhYzUuLjdhODYyYTYgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jb25maWdzL21wYzgzMTNfcmRiX2RlZmNvbmZpZworKysgYi9hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM4MzEzX3JkYl9kZWZjb25maWcKQEAgLTEsNyArMSw3IEBACiAjCiAjIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIG1ha2UgY29uZmlnOiBkb24ndCBlZGl0Ci0jIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMjQtcmM2Ci0jIFRodSBKYW4gMTcgMTY6MzU6NTUgMjAwOAorIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjI1LXJjNgorIyBNb24gTWFyIDI0IDA4OjQ4OjE0IDIwMDgKICMKICMgQ09ORklHX1BQQzY0IGlzIG5vdCBzZXQKIApAQCAtMTQsOCArMTQsOCBAQAogIyBDT05GSUdfNDB4IGlzIG5vdCBzZXQKICMgQ09ORklHXzQ0eCBpcyBub3Qgc2V0CiAjIENPTkZJR19FMjAwIGlzIG5vdCBzZXQKLUNPTkZJR184M3h4PXkKIENPTkZJR19QUENfRlBVPXkKKyMgQ09ORklHX0ZTTF9FTUJfUEVSRk1PTiBpcyBub3Qgc2V0CiBDT05GSUdfUFBDX1NURF9NTVU9eQogQ09ORklHX1BQQ19TVERfTU1VXzMyPXkKICMgQ09ORklHX1BQQ19NTV9TTElDRVMgaXMgbm90IHNldApAQCAtMjksNiArMjksNyBAQAogQ09ORklHX0dFTkVSSUNfVElNRV9WU1lTQ0FMTD15CiBDT05GSUdfR0VORVJJQ19DTE9DS0VWRU5UUz15CiBDT05GSUdfR0VORVJJQ19IQVJESVJRUz15CisjIENPTkZJR19IQVZFX1NFVFVQX1BFUl9DUFVfQVJFQSBpcyBub3Qgc2V0CiBDT05GSUdfSVJRX1BFUl9DUFU9eQogQ09ORklHX1JXU0VNX1hDSEdBRERfQUxHT1JJVEhNPXkKIENPTkZJR19BUkNIX0hBU19JTE9HMl9VMzI9eQpAQCAtNjYsMTUgKzY3LDE5IEBACiAjIENPTkZJR19QT1NJWF9NUVVFVUUgaXMgbm90IHNldAogIyBDT05GSUdfQlNEX1BST0NFU1NfQUNDVCBpcyBub3Qgc2V0CiAjIENPTkZJR19UQVNLU1RBVFMgaXMgbm90IHNldAotIyBDT05GSUdfVVNFUl9OUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19QSURfTlMgaXMgbm90IHNldAogIyBDT05GSUdfQVVESVQgaXMgbm90IHNldAogIyBDT05GSUdfSUtDT05GSUcgaXMgbm90IHNldAogQ09ORklHX0xPR19CVUZfU0hJRlQ9MTQKICMgQ09ORklHX0NHUk9VUFMgaXMgbm90IHNldAorQ09ORklHX0dST1VQX1NDSEVEPXkKICMgQ09ORklHX0ZBSVJfR1JPVVBfU0NIRUQgaXMgbm90IHNldAorIyBDT05GSUdfUlRfR1JPVVBfU0NIRUQgaXMgbm90IHNldAorQ09ORklHX1VTRVJfU0NIRUQ9eQorIyBDT05GSUdfQ0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKIENPTkZJR19TWVNGU19ERVBSRUNBVEVEPXkKK0NPTkZJR19TWVNGU19ERVBSRUNBVEVEX1YyPXkKICMgQ09ORklHX1JFTEFZIGlzIG5vdCBzZXQKKyMgQ09ORklHX05BTUVTUEFDRVMgaXMgbm90IHNldAogQ09ORklHX0JMS19ERVZfSU5JVFJEPXkKIENPTkZJR19JTklUUkFNRlNfU09VUkNFPSIiCiAjIENPTkZJR19DQ19PUFRJTUlaRV9GT1JfU0laRSBpcyBub3Qgc2V0CkBAIC04NiwxMSArOTEsMTMgQEAKIENPTkZJR19QUklOVEs9eQogQ09ORklHX0JVRz15CiBDT05GSUdfRUxGX0NPUkU9eQorQ09ORklHX0NPTVBBVF9CUks9eQogQ09ORklHX0JBU0VfRlVMTD15CiBDT05GSUdfRlVURVg9eQogQ09ORklHX0FOT05fSU5PREVTPXkKICMgQ09ORklHX0VQT0xMIGlzIG5vdCBzZXQKIENPTkZJR19TSUdOQUxGRD15CitDT05GSUdfVElNRVJGRD15CiBDT05GSUdfRVZFTlRGRD15CiBDT05GSUdfU0hNRU09eQogQ09ORklHX1ZNX0VWRU5UX0NPVU5URVJTPXkKQEAgLTk4LDYgKzEwNSwxMyBAQAogIyBDT05GSUdfU0xBQiBpcyBub3Qgc2V0CiBDT05GSUdfU0xVQj15CiAjIENPTkZJR19TTE9CIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BST0ZJTElORyBpcyBub3Qgc2V0CisjIENPTkZJR19NQVJLRVJTIGlzIG5vdCBzZXQKK0NPTkZJR19IQVZFX09QUk9GSUxFPXkKK0NPTkZJR19IQVZFX0tQUk9CRVM9eQorQ09ORklHX0hBVkVfS1JFVFBST0JFUz15CitDT05GSUdfUFJPQ19QQUdFX01PTklUT1I9eQorQ09ORklHX1NMQUJJTkZPPXkKIENPTkZJR19SVF9NVVRFWEVTPXkKICMgQ09ORklHX1RJTllfU0hNRU0gaXMgbm90IHNldAogQ09ORklHX0JBU0VfU01BTEw9MApAQCAtMTI1LDYgKzEzOSw3IEBACiAjIENPTkZJR19ERUZBVUxUX0NGUSBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUZBVUxUX05PT1AgaXMgbm90IHNldAogQ09ORklHX0RFRkFVTFRfSU9TQ0hFRD0iYW50aWNpcGF0b3J5IgorQ09ORklHX0NMQVNTSUNfUkNVPXkKIAogIwogIyBQbGF0Zm9ybSBzdXBwb3J0CkBAIC0xMzMsMTEgKzE0OCwxMiBAQAogIyBDT05GSUdfUFBDXzgyeHggaXMgbm90IHNldAogQ09ORklHX1BQQ184M3h4PXkKICMgQ09ORklHX1BQQ184Nnh4IGlzIG5vdCBzZXQKLSMgQ09ORklHX1BQQ19NUEM1Mnh4IGlzIG5vdCBzZXQKLSMgQ09ORklHX1BQQ19NUEM1MjAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ19NUEM1MTJ4IGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ19NUEM1MTIxIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19DRUxMIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19DRUxMX05BVElWRSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUTJBRFMgaXMgbm90IHNldAorQ09ORklHX01QQzgzeHg9eQogQ09ORklHX01QQzgzMXhfUkRCPXkKICMgQ09ORklHX01QQzgzMnhfTURTIGlzIG5vdCBzZXQKICMgQ09ORklHX01QQzgzMnhfUkRCIGlzIG5vdCBzZXQKQEAgLTE0NSw3ICsxNjEsMTAgQEAKICMgQ09ORklHX01QQzgzNHhfSVRYIGlzIG5vdCBzZXQKICMgQ09ORklHX01QQzgzNnhfTURTIGlzIG5vdCBzZXQKICMgQ09ORklHX01QQzgzN3hfTURTIGlzIG5vdCBzZXQKKyMgQ09ORklHX01QQzgzN3hfUkRCIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NCQzgzNHggaXMgbm90IHNldAogQ09ORklHX1BQQ19NUEM4MzF4PXkKK0NPTkZJR19JUElDPXkKICMgQ09ORklHX01QSUMgaXMgbm90IHNldAogIyBDT05GSUdfTVBJQ19XRUlSRCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfSTgyNTkgaXMgbm90IHNldApAQCAtMTU2LDcgKzE3NSw2IEBACiAjIENPTkZJR19QUENfSU5ESVJFQ1RfSU8gaXMgbm90IHNldAogIyBDT05GSUdfR0VORVJJQ19JT01BUCBpcyBub3Qgc2V0CiAjIENPTkZJR19DUFVfRlJFUSBpcyBub3Qgc2V0Ci0jIENPTkZJR19DUE0yIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZTTF9VTEkxNTc1IGlzIG5vdCBzZXQKIAogIwpAQCAtMTcyLDEyICsxOTAsMTYgQEAKICMgQ09ORklHX0haXzMwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19IWl8xMDAwIGlzIG5vdCBzZXQKIENPTkZJR19IWj0yNTAKKyMgQ09ORklHX1NDSEVEX0hSVElDSyBpcyBub3Qgc2V0CiBDT05GSUdfUFJFRU1QVF9OT05FPXkKICMgQ09ORklHX1BSRUVNUFRfVk9MVU5UQVJZIGlzIG5vdCBzZXQKICMgQ09ORklHX1BSRUVNUFQgaXMgbm90IHNldAogQ09ORklHX0JJTkZNVF9FTEY9eQogIyBDT05GSUdfQklORk1UX01JU0MgaXMgbm90IHNldAorIyBDT05GSUdfSU9NTVVfSEVMUEVSIGlzIG5vdCBzZXQKIENPTkZJR19BUkNIX0VOQUJMRV9NRU1PUllfSE9UUExVRz15CitDT05GSUdfQVJDSF9IQVNfV0FMS19NRU1PUlk9eQorQ09ORklHX0FSQ0hfRU5BQkxFX01FTU9SWV9IT1RSRU1PVkU9eQogQ09ORklHX0FSQ0hfRkxBVE1FTV9FTkFCTEU9eQogQ09ORklHX0FSQ0hfUE9QVUxBVEVTX05PREVfTUFQPXkKIENPTkZJR19TRUxFQ1RfTUVNT1JZX01PREVMPXkKQEAgLTE5NiwxMSArMjE4LDcgQEAKIENPTkZJR19QUk9DX0RFVklDRVRSRUU9eQogIyBDT05GSUdfQ01ETElORV9CT09MIGlzIG5vdCBzZXQKICMgQ09ORklHX1BNIGlzIG5vdCBzZXQKLUNPTkZJR19TVVNQRU5EX1VQX1BPU1NJQkxFPXkKLUNPTkZJR19ISUJFUk5BVElPTl9VUF9QT1NTSUJMRT15CiBDT05GSUdfU0VDQ09NUD15Ci1DT05GSUdfV0FOVF9ERVZJQ0VfVFJFRT15Ci1DT05GSUdfREVWSUNFX1RSRUU9IiIKIENPTkZJR19JU0FfRE1BX0FQST15CiAKICMKQEAgLTI1MCw2ICsyNjgsNyBAQAogIyBDT05GSUdfWEZSTV9VU0VSIGlzIG5vdCBzZXQKICMgQ09ORklHX1hGUk1fU1VCX1BPTElDWSBpcyBub3Qgc2V0CiAjIENPTkZJR19YRlJNX01JR1JBVEUgaXMgbm90IHNldAorIyBDT05GSUdfWEZSTV9TVEFUSVNUSUNTIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9LRVkgaXMgbm90IHNldAogQ09ORklHX0lORVQ9eQogQ09ORklHX0lQX01VTFRJQ0FTVD15CkBAIC0zMDUsNiArMzI0LDcgQEAKICMKICMgQ09ORklHX05FVF9QS1RHRU4gaXMgbm90IHNldAogIyBDT05GSUdfSEFNUkFESU8gaXMgbm90IHNldAorIyBDT05GSUdfQ0FOIGlzIG5vdCBzZXQKICMgQ09ORklHX0lSREEgaXMgbm90IHNldAogIyBDT05GSUdfQlQgaXMgbm90IHNldAogIyBDT05GSUdfQUZfUlhSUEMgaXMgbm90IHNldApAQCAtMzQwLDYgKzM2MCw3IEBACiBDT05GSUdfTVREX1BBUlRJVElPTlM9eQogIyBDT05GSUdfTVREX1JFREJPT1RfUEFSVFMgaXMgbm90IHNldAogIyBDT05GSUdfTVREX0NNRExJTkVfUEFSVFMgaXMgbm90IHNldAorIyBDT05GSUdfTVREX09GX1BBUlRTIGlzIG5vdCBzZXQKIAogIwogIyBVc2VyIE1vZHVsZXMgQW5kIFRyYW5zbGF0aW9uIExheWVycwpAQCAtNDE1LDYgKzQzNiw3IEBACiAjIENPTkZJR19NVERfTkFORF9OQU5EU0lNIGlzIG5vdCBzZXQKICMgQ09ORklHX01URF9OQU5EX1BMQVRGT1JNIGlzIG5vdCBzZXQKICMgQ09ORklHX01URF9BTEFVREEgaXMgbm90IHNldAorIyBDT05GSUdfTVREX05BTkRfRlNMX0VMQkMgaXMgbm90IHNldAogIyBDT05GSUdfTVREX09ORU5BTkQgaXMgbm90IHNldAogCiAjCkBAIC00MzgsNyArNDYwLDcgQEAKIENPTkZJR19CTEtfREVWX1JBTT15CiBDT05GSUdfQkxLX0RFVl9SQU1fQ09VTlQ9MTYKIENPTkZJR19CTEtfREVWX1JBTV9TSVpFPTMyNzY4Ci1DT05GSUdfQkxLX0RFVl9SQU1fQkxPQ0tTSVpFPTEwMjQKKyMgQ09ORklHX0JMS19ERVZfWElQIGlzIG5vdCBzZXQKICMgQ09ORklHX0NEUk9NX1BLVENEVkQgaXMgbm90IHNldAogIyBDT05GSUdfQVRBX09WRVJfRVRIIGlzIG5vdCBzZXQKIENPTkZJR19NSVNDX0RFVklDRVM9eQpAQCAtNDQ2LDYgKzQ2OCw4IEBACiAjIENPTkZJR19FRVBST01fOTNDWDYgaXMgbm90IHNldAogIyBDT05GSUdfU0dJX0lPQzQgaXMgbm90IHNldAogIyBDT05GSUdfVElGTV9DT1JFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VOQ0xPU1VSRV9TRVJWSUNFUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9JREU9eQogIyBDT05GSUdfSURFIGlzIG5vdCBzZXQKIAogIwpAQCAtNTEwLDYgKzUzNCw3IEBACiAjIENPTkZJR19TQ1NJX0lQUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX0lOSVRJTyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX0lOSUExMDAgaXMgbm90IHNldAorIyBDT05GSUdfU0NTSV9NVlNBUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX1NURVggaXMgbm90IHNldAogIyBDT05GSUdfU0NTSV9TWU01M0M4WFhfMiBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX1FMT0dJQ18xMjgwIGlzIG5vdCBzZXQKQEAgLTU0OSw3ICs1NzQsNiBAQAogIyBDT05GSUdfRVFVQUxJWkVSIGlzIG5vdCBzZXQKICMgQ09ORklHX1RVTiBpcyBub3Qgc2V0CiAjIENPTkZJR19WRVRIIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lQMTAwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19BUkNORVQgaXMgbm90IHNldAogQ09ORklHX1BIWUxJQj15CiAKQEAgLTU2NSw2ICs1ODksNyBAQAogIyBDT05GSUdfU01TQ19QSFkgaXMgbm90IHNldAogIyBDT05GSUdfQlJPQURDT01fUEhZIGlzIG5vdCBzZXQKICMgQ09ORklHX0lDUExVU19QSFkgaXMgbm90IHNldAorIyBDT05GSUdfUkVBTFRFS19QSFkgaXMgbm90IHNldAogIyBDT05GSUdfRklYRURfUEhZIGlzIG5vdCBzZXQKICMgQ09ORklHX01ESU9fQklUQkFORyBpcyBub3Qgc2V0CiBDT05GSUdfTkVUX0VUSEVSTkVUPXkKQEAgLTU3Myw2ICs1OTgsNyBAQAogIyBDT05GSUdfU1VOR0VNIGlzIG5vdCBzZXQKICMgQ09ORklHX0NBU1NJTkkgaXMgbm90IHNldAogIyBDT05GSUdfTkVUX1ZFTkRPUl8zQ09NIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VOQzI4SjYwIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9UVUxJUCBpcyBub3Qgc2V0CiAjIENPTkZJR19IUDEwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19JQk1fTkVXX0VNQUNfWk1JSSBpcyBub3Qgc2V0CkBAIC01OTIsNiArNjE4LDcgQEAKICMgQ09ORklHX05FMktfUENJIGlzIG5vdCBzZXQKICMgQ09ORklHXzgxMzlDUCBpcyBub3Qgc2V0CiAjIENPTkZJR184MTM5VE9PIGlzIG5vdCBzZXQKKyMgQ09ORklHX1I2MDQwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NJUzkwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19FUElDMTAwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NVTkRBTkNFIGlzIG5vdCBzZXQKQEAgLTYwMyw2ICs2MzAsOSBAQAogIyBDT05GSUdfREwySyBpcyBub3Qgc2V0CiAjIENPTkZJR19FMTAwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19FMTAwMEUgaXMgbm90IHNldAorIyBDT05GSUdfRTEwMDBFX0VOQUJMRUQgaXMgbm90IHNldAorIyBDT05GSUdfSVAxMDAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lHQiBpcyBub3Qgc2V0CiAjIENPTkZJR19OUzgzODIwIGlzIG5vdCBzZXQKICMgQ09ORklHX0hBTUFDSEkgaXMgbm90IHNldAogIyBDT05GSUdfWUVMTE9XRklOIGlzIG5vdCBzZXQKQEAgLTYyOSw2ICs2NTksNyBAQAogIyBDT05GSUdfTklVIGlzIG5vdCBzZXQKICMgQ09ORklHX01MWDRfQ09SRSBpcyBub3Qgc2V0CiAjIENPTkZJR19URUhVVEkgaXMgbm90IHNldAorIyBDT05GSUdfQk5YMlggaXMgbm90IHNldAogIyBDT05GSUdfVFIgaXMgbm90IHNldAogCiAjCkBAIC02NTEsNyArNjgyLDYgQEAKICMgQ09ORklHX1BQUCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTElQIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9GQyBpcyBub3Qgc2V0Ci0jIENPTkZJR19TSEFQRVIgaXMgbm90IHNldAogIyBDT05GSUdfTkVUQ09OU09MRSBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRQT0xMIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9QT0xMX0NPTlRST0xMRVIgaXMgbm90IHNldApAQCAtNjk0LDYgKzcyNCw3IEBACiAjCiAjIENPTkZJR19WVCBpcyBub3Qgc2V0CiAjIENPTkZJR19TRVJJQUxfTk9OU1RBTkRBUkQgaXMgbm90IHNldAorIyBDT05GSUdfTk9aT01JIGlzIG5vdCBzZXQKIAogIwogIyBTZXJpYWwgZHJpdmVycwpAQCAtNzY3LDE0ICs3OTgsMTIgQEAKICMKICMgTWlzY2VsbGFuZW91cyBJMkMgQ2hpcCBzdXBwb3J0CiAjCi0jIENPTkZJR19TRU5TT1JTX0RTMTMzNyBpcyBub3Qgc2V0Ci0jIENPTkZJR19TRU5TT1JTX0RTMTM3NCBpcyBub3Qgc2V0CiAjIENPTkZJR19EUzE2ODIgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19FRVBST00gaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19QQ0Y4NTc0IGlzIG5vdCBzZXQKLSMgQ09ORklHX1NFTlNPUlNfUENBOTUzOSBpcyBub3Qgc2V0CisjIENPTkZJR19QQ0Y4NTc1IGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfUENGODU5MSBpcyBub3Qgc2V0Ci0jIENPTkZJR19TRU5TT1JTX000MVQwMCBpcyBub3Qgc2V0CisjIENPTkZJR19UUFM2NTAxMCBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX01BWDY4NzUgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19UU0wyNTUwIGlzIG5vdCBzZXQKICMgQ09ORklHX0kyQ19ERUJVR19DT1JFIGlzIG5vdCBzZXQKQEAgLTgxMyw2ICs4NDIsNyBAQAogIyBDT05GSUdfU0VOU09SU19BRE0xMDMxIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfQURNOTI0MCBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0FEVDc0NzAgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19BRFQ3NDczIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfQVRYUDEgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19EUzE2MjEgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19JNUtfQU1CIGlzIG5vdCBzZXQKQEAgLTg0Myw2ICs4NzMsNyBAQAogIyBDT05GSUdfU0VOU09SU19TTVNDNDdNMSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1NNU0M0N00xOTIgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19TTVNDNDdCMzk3IGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNPUlNfQURTNzgyOCBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1RITUM1MCBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1ZJQTY4NkEgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19WVDEyMTEgaXMgbm90IHNldApAQCAtODUyLDkgKzg4MywxMSBAQAogIyBDT05GSUdfU0VOU09SU19XODM3OTJEIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVzgzNzkzIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVzgzTDc4NVRTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNPUlNfVzgzTDc4Nk5HIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVzgzNjI3SEYgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19XODM2MjdFSEYgaXMgbm90IHNldAogIyBDT05GSUdfSFdNT05fREVCVUdfQ0hJUCBpcyBub3Qgc2V0CisjIENPTkZJR19USEVSTUFMIGlzIG5vdCBzZXQKIENPTkZJR19XQVRDSERPRz15CiAjIENPTkZJR19XQVRDSERPR19OT1dBWU9VVCBpcyBub3Qgc2V0CiAKQEAgLTkzNCw2ICs5NjcsNyBAQAogQ09ORklHX1VTQl9BUkNIX0hBU19FSENJPXkKIENPTkZJR19VU0I9eQogIyBDT05GSUdfVVNCX0RFQlVHIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9BTk5PVU5DRV9ORVdfREVWSUNFUyBpcyBub3Qgc2V0CiAKICMKICMgTWlzY2VsbGFuZW91cyBVU0Igb3B0aW9ucwpAQCAtOTQ3LDEwICs5ODEsMTAgQEAKICMgVVNCIEhvc3QgQ29udHJvbGxlciBEcml2ZXJzCiAjCiBDT05GSUdfVVNCX0VIQ0lfSENEPXkKLSMgQ09ORklHX1VTQl9FSENJX1NQTElUX0lTTyBpcyBub3Qgc2V0CiBDT05GSUdfVVNCX0VIQ0lfUk9PVF9IVUJfVFQ9eQogIyBDT05GSUdfVVNCX0VIQ0lfVFRfTkVXU0NIRUQgaXMgbm90IHNldAogQ09ORklHX1VTQl9FSENJX0ZTTD15CitDT05GSUdfVVNCX0VIQ0lfSENEX1BQQ19PRj15CiAjIENPTkZJR19VU0JfSVNQMTE2WF9IQ0QgaXMgbm90IHNldAogQ09ORklHX1VTQl9PSENJX0hDRD15CiBDT05GSUdfVVNCX09IQ0lfSENEX1BQQ19PRj15CkBAIC0xMDAxLDEwICsxMDM1LDYgQEAKICMKICMgVVNCIHBvcnQgZHJpdmVycwogIwotCi0jCi0jIFVTQiBTZXJpYWwgQ29udmVydGVyIHN1cHBvcnQKLSMKICMgQ09ORklHX1VTQl9TRVJJQUwgaXMgbm90IHNldAogCiAjCkBAIC0xMDMwLDE0ICsxMDYwLDYgQEAKICMgQ09ORklHX1VTQl9UUkFOQ0VWSUJSQVRPUiBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfSU9XQVJSSU9SIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9URVNUIGlzIG5vdCBzZXQKLQotIwotIyBVU0IgRFNMIG1vZGVtIHN1cHBvcnQKLSMKLQotIwotIyBVU0IgR2FkZ2V0IFN1cHBvcnQKLSMKIENPTkZJR19VU0JfR0FER0VUPXkKICMgQ09ORklHX1VTQl9HQURHRVRfREVCVUcgaXMgbm90IHNldAogIyBDT05GSUdfVVNCX0dBREdFVF9ERUJVR19GSUxFUyBpcyBub3Qgc2V0CkBAIC0xMDYzLDcgKzEwODUsOSBAQAogIyBDT05GSUdfVVNCX0ZJTEVfU1RPUkFHRSBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfR19TRVJJQUwgaXMgbm90IHNldAogIyBDT05GSUdfVVNCX01JRElfR0FER0VUIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9HX1BSSU5URVIgaXMgbm90IHNldAogIyBDT05GSUdfTU1DIGlzIG5vdCBzZXQKKyMgQ09ORklHX01FTVNUSUNLIGlzIG5vdCBzZXQKICMgQ09ORklHX05FV19MRURTIGlzIG5vdCBzZXQKICMgQ09ORklHX0lORklOSUJBTkQgaXMgbm90IHNldAogIyBDT05GSUdfRURBQyBpcyBub3Qgc2V0CkBAIC0xMDk1LDIwICsxMTE5LDIzIEBACiAjIENPTkZJR19SVENfRFJWX1BDRjg1NjMgaXMgbm90IHNldAogIyBDT05GSUdfUlRDX0RSVl9QQ0Y4NTgzIGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfTTQxVDgwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JUQ19EUlZfUzM1MzkwQSBpcyBub3Qgc2V0CiAKICMKICMgU1BJIFJUQyBkcml2ZXJzCiAjCi0jIENPTkZJR19SVENfRFJWX1JTNUMzNDggaXMgbm90IHNldAogIyBDT05GSUdfUlRDX0RSVl9NQVg2OTAyIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JUQ19EUlZfUjk3MDEgaXMgbm90IHNldAorIyBDT05GSUdfUlRDX0RSVl9SUzVDMzQ4IGlzIG5vdCBzZXQKIAogIwogIyBQbGF0Zm9ybSBSVEMgZHJpdmVycwogIwogIyBDT05GSUdfUlRDX0RSVl9DTU9TIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JUQ19EUlZfRFMxNTExIGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfRFMxNTUzIGlzIG5vdCBzZXQKLSMgQ09ORklHX1JUQ19EUlZfU1RLMTdUQTggaXMgbm90IHNldAogIyBDT05GSUdfUlRDX0RSVl9EUzE3NDIgaXMgbm90IHNldAorIyBDT05GSUdfUlRDX0RSVl9TVEsxN1RBOCBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfRFJWX000OFQ4NiBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfRFJWX000OFQ1OSBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfRFJWX1YzMDIwIGlzIG5vdCBzZXQKQEAgLTExMTYsNiArMTE0Myw3IEBACiAjCiAjIG9uLUNQVSBSVEMgZHJpdmVycwogIworIyBDT05GSUdfRE1BREVWSUNFUyBpcyBub3Qgc2V0CiAKICMKICMgVXNlcnNwYWNlIEkvTwpAQCAtMTE0MSwxMiArMTE2OSwxMCBAQAogIyBDT05GSUdfWEZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0dGUzJfRlMgaXMgbm90IHNldAogIyBDT05GSUdfT0NGUzJfRlMgaXMgbm90IHNldAotIyBDT05GSUdfTUlOSVhfRlMgaXMgbm90IHNldAotIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAorQ09ORklHX0ROT1RJRlk9eQogQ09ORklHX0lOT1RJRlk9eQogQ09ORklHX0lOT1RJRllfVVNFUj15CiAjIENPTkZJR19RVU9UQSBpcyBub3Qgc2V0Ci1DT05GSUdfRE5PVElGWT15CiAjIENPTkZJR19BVVRPRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfQVVUT0ZTNF9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19GVVNFX0ZTIGlzIG5vdCBzZXQKQEAgLTExOTksOCArMTIyNSwxMCBAQAogIyBDT05GSUdfSkZGUzJfUlVCSU4gaXMgbm90IHNldAogIyBDT05GSUdfQ1JBTUZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1ZYRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfTUlOSVhfRlMgaXMgbm90IHNldAogIyBDT05GSUdfSFBGU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19RTlg0RlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfU1lTVl9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19VRlNfRlMgaXMgbm90IHNldAogQ09ORklHX05FVFdPUktfRklMRVNZU1RFTVM9eQpAQCAtMTI0OCw3ICsxMjc2LDYgQEAKICMgQ09ORklHX1NZU1Y2OF9QQVJUSVRJT04gaXMgbm90IHNldAogIyBDT05GSUdfTkxTIGlzIG5vdCBzZXQKICMgQ09ORklHX0RMTSBpcyBub3Qgc2V0Ci0jIENPTkZJR19VQ0NfU0xPVyBpcyBub3Qgc2V0CiAKICMKICMgTGlicmFyeSByb3V0aW5lcwpAQCAtMTI2Niw3ICsxMjkzLDYgQEAKIENPTkZJR19IQVNfSU9NRU09eQogQ09ORklHX0hBU19JT1BPUlQ9eQogQ09ORklHX0hBU19ETUE9eQotIyBDT05GSUdfSU5TVFJVTUVOVEFUSU9OIGlzIG5vdCBzZXQKIAogIwogIyBLZXJuZWwgaGFja2luZwpAQCAtMTI4NSw2ICsxMzExLDcgQEAKICMgQ09ORklHX1NDSEVEU1RBVFMgaXMgbm90IHNldAogIyBDT05GSUdfVElNRVJfU1RBVFMgaXMgbm90IHNldAogIyBDT05GSUdfU0xVQl9ERUJVR19PTiBpcyBub3Qgc2V0CisjIENPTkZJR19TTFVCX1NUQVRTIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1JUX01VVEVYRVMgaXMgbm90IHNldAogIyBDT05GSUdfUlRfTVVURVhfVEVTVEVSIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NQSU5MT0NLIGlzIG5vdCBzZXQKQEAgLTEyOTcsOSArMTMyNCw5IEBACiAjIENPTkZJR19ERUJVR19WTSBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19MSVNUIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NHIGlzIG5vdCBzZXQKLUNPTkZJR19GT1JDRURfSU5MSU5JTkc9eQogIyBDT05GSUdfQk9PVF9QUklOVEtfREVMQVkgaXMgbm90IHNldAogIyBDT05GSUdfUkNVX1RPUlRVUkVfVEVTVCBpcyBub3Qgc2V0CisjIENPTkZJR19CQUNLVFJBQ0VfU0VMRl9URVNUIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZBVUxUX0lOSkVDVElPTiBpcyBub3Qgc2V0CiAjIENPTkZJR19TQU1QTEVTIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NUQUNLT1ZFUkZMT1cgaXMgbm90IHNldApAQCAtMTMxOCw2ICsxMzQ1LDcgQEAKIENPTkZJR19DUllQVE89eQogQ09ORklHX0NSWVBUT19BTEdBUEk9eQogQ09ORklHX0NSWVBUT19CTEtDSVBIRVI9eQorIyBDT05GSUdfQ1JZUFRPX1NFUUlWIGlzIG5vdCBzZXQKIENPTkZJR19DUllQVE9fTUFOQUdFUj15CiAjIENPTkZJR19DUllQVE9fSE1BQyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fWENCQyBpcyBub3Qgc2V0CkBAIC0xMzM1LDYgKzEzNjMsOSBAQAogQ09ORklHX0NSWVBUT19QQ0JDPW0KICMgQ09ORklHX0NSWVBUT19MUlcgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX1hUUyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ1RSIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19HQ00gaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NDTSBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fQ1JZUFREIGlzIG5vdCBzZXQKIENPTkZJR19DUllQVE9fREVTPXkKICMgQ09ORklHX0NSWVBUT19GQ1JZUFQgaXMgbm90IHNldApAQCAtMTM0OSwxMSArMTM4MCwxNCBAQAogIyBDT05GSUdfQ1JZUFRPX0tIQVpBRCBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fQU5VQklTIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19TRUVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19TQUxTQTIwIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19ERUZMQVRFIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19NSUNIQUVMX01JQyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fQ1JDMzJDIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19DQU1FTExJQSBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fVEVTVCBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fQVVUSEVOQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fTFpPIGlzIG5vdCBzZXQKIENPTkZJR19DUllQVE9fSFc9eQorIyBDT05GSUdfQ1JZUFRPX0RFVl9ISUZOXzc5NVggaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0NMT0NLIGlzIG5vdCBzZXQKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9jb25maWdzL21wYzgzMTVfcmRiX2RlZmNvbmZpZyBiL2FyY2gvcG93ZXJwYy9jb25maWdzL21wYzgzMTVfcmRiX2RlZmNvbmZpZwppbmRleCA5YWRmN2Y5Li4xZjU3NDU2IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM4MzE1X3JkYl9kZWZjb25maWcKKysrIGIvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODMxNV9yZGJfZGVmY29uZmlnCkBAIC0xLDcgKzEsNyBAQAogIwogIyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBtYWtlIGNvbmZpZzogZG9uJ3QgZWRpdAotIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjI0LXJjOAotIyBXZWQgSmFuIDIzIDIwOjAyOjI1IDIwMDgKKyMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4yNS1yYzYKKyMgTW9uIE1hciAyNCAwODo0ODoxNSAyMDA4CiAjCiAjIENPTkZJR19QUEM2NCBpcyBub3Qgc2V0CiAKQEAgLTE0LDggKzE0LDggQEAKICMgQ09ORklHXzQweCBpcyBub3Qgc2V0CiAjIENPTkZJR180NHggaXMgbm90IHNldAogIyBDT05GSUdfRTIwMCBpcyBub3Qgc2V0Ci1DT05GSUdfODN4eD15CiBDT05GSUdfUFBDX0ZQVT15CisjIENPTkZJR19GU0xfRU1CX1BFUkZNT04gaXMgbm90IHNldAogQ09ORklHX1BQQ19TVERfTU1VPXkKIENPTkZJR19QUENfU1REX01NVV8zMj15CiAjIENPTkZJR19QUENfTU1fU0xJQ0VTIGlzIG5vdCBzZXQKQEAgLTI5LDYgKzI5LDcgQEAKIENPTkZJR19HRU5FUklDX1RJTUVfVlNZU0NBTEw9eQogQ09ORklHX0dFTkVSSUNfQ0xPQ0tFVkVOVFM9eQogQ09ORklHX0dFTkVSSUNfSEFSRElSUVM9eQorIyBDT05GSUdfSEFWRV9TRVRVUF9QRVJfQ1BVX0FSRUEgaXMgbm90IHNldAogQ09ORklHX0lSUV9QRVJfQ1BVPXkKIENPTkZJR19SV1NFTV9YQ0hHQUREX0FMR09SSVRITT15CiBDT05GSUdfQVJDSF9IQVNfSUxPRzJfVTMyPXkKQEAgLTY2LDE1ICs2NywxOSBAQAogIyBDT05GSUdfUE9TSVhfTVFVRVVFIGlzIG5vdCBzZXQKICMgQ09ORklHX0JTRF9QUk9DRVNTX0FDQ1QgaXMgbm90IHNldAogIyBDT05GSUdfVEFTS1NUQVRTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VTRVJfTlMgaXMgbm90IHNldAotIyBDT05GSUdfUElEX05TIGlzIG5vdCBzZXQKICMgQ09ORklHX0FVRElUIGlzIG5vdCBzZXQKICMgQ09ORklHX0lLQ09ORklHIGlzIG5vdCBzZXQKIENPTkZJR19MT0dfQlVGX1NISUZUPTE0CiAjIENPTkZJR19DR1JPVVBTIGlzIG5vdCBzZXQKK0NPTkZJR19HUk9VUF9TQ0hFRD15CiAjIENPTkZJR19GQUlSX0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JUX0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKK0NPTkZJR19VU0VSX1NDSEVEPXkKKyMgQ09ORklHX0NHUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CiBDT05GSUdfU1lTRlNfREVQUkVDQVRFRD15CitDT05GSUdfU1lTRlNfREVQUkVDQVRFRF9WMj15CiAjIENPTkZJR19SRUxBWSBpcyBub3Qgc2V0CisjIENPTkZJR19OQU1FU1BBQ0VTIGlzIG5vdCBzZXQKIENPTkZJR19CTEtfREVWX0lOSVRSRD15CiBDT05GSUdfSU5JVFJBTUZTX1NPVVJDRT0iIgogIyBDT05GSUdfQ0NfT1BUSU1JWkVfRk9SX1NJWkUgaXMgbm90IHNldApAQCAtODYsMTEgKzkxLDEzIEBACiBDT05GSUdfUFJJTlRLPXkKIENPTkZJR19CVUc9eQogQ09ORklHX0VMRl9DT1JFPXkKK0NPTkZJR19DT01QQVRfQlJLPXkKIENPTkZJR19CQVNFX0ZVTEw9eQogQ09ORklHX0ZVVEVYPXkKIENPTkZJR19BTk9OX0lOT0RFUz15CiAjIENPTkZJR19FUE9MTCBpcyBub3Qgc2V0CiBDT05GSUdfU0lHTkFMRkQ9eQorQ09ORklHX1RJTUVSRkQ9eQogQ09ORklHX0VWRU5URkQ9eQogQ09ORklHX1NITUVNPXkKIENPTkZJR19WTV9FVkVOVF9DT1VOVEVSUz15CkBAIC05OCw2ICsxMDUsMTIgQEAKICMgQ09ORklHX1NMQUIgaXMgbm90IHNldAogQ09ORklHX1NMVUI9eQogIyBDT05GSUdfU0xPQiBpcyBub3Qgc2V0CisjIENPTkZJR19QUk9GSUxJTkcgaXMgbm90IHNldAorIyBDT05GSUdfTUFSS0VSUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9PUFJPRklMRT15CitDT05GSUdfSEFWRV9LUFJPQkVTPXkKK0NPTkZJR19IQVZFX0tSRVRQUk9CRVM9eQorQ09ORklHX1BST0NfUEFHRV9NT05JVE9SPXkKIENPTkZJR19TTEFCSU5GTz15CiBDT05GSUdfUlRfTVVURVhFUz15CiAjIENPTkZJR19USU5ZX1NITUVNIGlzIG5vdCBzZXQKQEAgLTEyNiw2ICsxMzksNyBAQAogIyBDT05GSUdfREVGQVVMVF9DRlEgaXMgbm90IHNldAogIyBDT05GSUdfREVGQVVMVF9OT09QIGlzIG5vdCBzZXQKIENPTkZJR19ERUZBVUxUX0lPU0NIRUQ9ImFudGljaXBhdG9yeSIKK0NPTkZJR19DTEFTU0lDX1JDVT15CiAKICMKICMgUGxhdGZvcm0gc3VwcG9ydApAQCAtMTM0LDExICsxNDgsMTIgQEAKICMgQ09ORklHX1BQQ184Mnh4IGlzIG5vdCBzZXQKIENPTkZJR19QUENfODN4eD15CiAjIENPTkZJR19QUENfODZ4eCBpcyBub3Qgc2V0Ci0jIENPTkZJR19QUENfTVBDNTJ4eCBpcyBub3Qgc2V0Ci0jIENPTkZJR19QUENfTVBDNTIwMCBpcyBub3Qgc2V0CisjIENPTkZJR19QUENfTVBDNTEyeCBpcyBub3Qgc2V0CisjIENPTkZJR19QUENfTVBDNTEyMSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfQ0VMTCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfQ0VMTF9OQVRJVkUgaXMgbm90IHNldAogIyBDT05GSUdfUFEyQURTIGlzIG5vdCBzZXQKK0NPTkZJR19NUEM4M3h4PXkKIENPTkZJR19NUEM4MzF4X1JEQj15CiAjIENPTkZJR19NUEM4MzJ4X01EUyBpcyBub3Qgc2V0CiAjIENPTkZJR19NUEM4MzJ4X1JEQiBpcyBub3Qgc2V0CkBAIC0xNDYsNiArMTYxLDggQEAKICMgQ09ORklHX01QQzgzNHhfSVRYIGlzIG5vdCBzZXQKICMgQ09ORklHX01QQzgzNnhfTURTIGlzIG5vdCBzZXQKICMgQ09ORklHX01QQzgzN3hfTURTIGlzIG5vdCBzZXQKKyMgQ09ORklHX01QQzgzN3hfUkRCIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NCQzgzNHggaXMgbm90IHNldAogQ09ORklHX1BQQ19NUEM4MzF4PXkKIENPTkZJR19JUElDPXkKICMgQ09ORklHX01QSUMgaXMgbm90IHNldApAQCAtMTU4LDcgKzE3NSw2IEBACiAjIENPTkZJR19QUENfSU5ESVJFQ1RfSU8gaXMgbm90IHNldAogIyBDT05GSUdfR0VORVJJQ19JT01BUCBpcyBub3Qgc2V0CiAjIENPTkZJR19DUFVfRlJFUSBpcyBub3Qgc2V0Ci0jIENPTkZJR19DUE0yIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZTTF9VTEkxNTc1IGlzIG5vdCBzZXQKIAogIwpAQCAtMTc0LDEyICsxOTAsMTYgQEAKICMgQ09ORklHX0haXzMwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19IWl8xMDAwIGlzIG5vdCBzZXQKIENPTkZJR19IWj0yNTAKKyMgQ09ORklHX1NDSEVEX0hSVElDSyBpcyBub3Qgc2V0CiBDT05GSUdfUFJFRU1QVF9OT05FPXkKICMgQ09ORklHX1BSRUVNUFRfVk9MVU5UQVJZIGlzIG5vdCBzZXQKICMgQ09ORklHX1BSRUVNUFQgaXMgbm90IHNldAogQ09ORklHX0JJTkZNVF9FTEY9eQogIyBDT05GSUdfQklORk1UX01JU0MgaXMgbm90IHNldAorIyBDT05GSUdfSU9NTVVfSEVMUEVSIGlzIG5vdCBzZXQKIENPTkZJR19BUkNIX0VOQUJMRV9NRU1PUllfSE9UUExVRz15CitDT05GSUdfQVJDSF9IQVNfV0FMS19NRU1PUlk9eQorQ09ORklHX0FSQ0hfRU5BQkxFX01FTU9SWV9IT1RSRU1PVkU9eQogQ09ORklHX0FSQ0hfRkxBVE1FTV9FTkFCTEU9eQogQ09ORklHX0FSQ0hfUE9QVUxBVEVTX05PREVfTUFQPXkKIENPTkZJR19TRUxFQ1RfTUVNT1JZX01PREVMPXkKQEAgLTE5OCwxMSArMjE4LDcgQEAKIENPTkZJR19QUk9DX0RFVklDRVRSRUU9eQogIyBDT05GSUdfQ01ETElORV9CT09MIGlzIG5vdCBzZXQKICMgQ09ORklHX1BNIGlzIG5vdCBzZXQKLUNPTkZJR19TVVNQRU5EX1VQX1BPU1NJQkxFPXkKLUNPTkZJR19ISUJFUk5BVElPTl9VUF9QT1NTSUJMRT15CiBDT05GSUdfU0VDQ09NUD15Ci1DT05GSUdfV0FOVF9ERVZJQ0VfVFJFRT15Ci1DT05GSUdfREVWSUNFX1RSRUU9IiIKIENPTkZJR19JU0FfRE1BX0FQST15CiAKICMKQEAgLTI1Miw2ICsyNjgsNyBAQAogIyBDT05GSUdfWEZSTV9VU0VSIGlzIG5vdCBzZXQKICMgQ09ORklHX1hGUk1fU1VCX1BPTElDWSBpcyBub3Qgc2V0CiAjIENPTkZJR19YRlJNX01JR1JBVEUgaXMgbm90IHNldAorIyBDT05GSUdfWEZSTV9TVEFUSVNUSUNTIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9LRVkgaXMgbm90IHNldAogQ09ORklHX0lORVQ9eQogQ09ORklHX0lQX01VTFRJQ0FTVD15CkBAIC0zMDcsNiArMzI0LDcgQEAKICMKICMgQ09ORklHX05FVF9QS1RHRU4gaXMgbm90IHNldAogIyBDT05GSUdfSEFNUkFESU8gaXMgbm90IHNldAorIyBDT05GSUdfQ0FOIGlzIG5vdCBzZXQKICMgQ09ORklHX0lSREEgaXMgbm90IHNldAogIyBDT05GSUdfQlQgaXMgbm90IHNldAogIyBDT05GSUdfQUZfUlhSUEMgaXMgbm90IHNldApAQCAtMzQyLDYgKzM2MCw3IEBACiBDT05GSUdfTVREX1BBUlRJVElPTlM9eQogIyBDT05GSUdfTVREX1JFREJPT1RfUEFSVFMgaXMgbm90IHNldAogIyBDT05GSUdfTVREX0NNRExJTkVfUEFSVFMgaXMgbm90IHNldAorIyBDT05GSUdfTVREX09GX1BBUlRTIGlzIG5vdCBzZXQKIAogIwogIyBVc2VyIE1vZHVsZXMgQW5kIFRyYW5zbGF0aW9uIExheWVycwpAQCAtNDE3LDYgKzQzNiw3IEBACiAjIENPTkZJR19NVERfTkFORF9OQU5EU0lNIGlzIG5vdCBzZXQKICMgQ09ORklHX01URF9OQU5EX1BMQVRGT1JNIGlzIG5vdCBzZXQKICMgQ09ORklHX01URF9BTEFVREEgaXMgbm90IHNldAorIyBDT05GSUdfTVREX05BTkRfRlNMX0VMQkMgaXMgbm90IHNldAogIyBDT05GSUdfTVREX09ORU5BTkQgaXMgbm90IHNldAogCiAjCkBAIC00NDAsNyArNDYwLDcgQEAKIENPTkZJR19CTEtfREVWX1JBTT15CiBDT05GSUdfQkxLX0RFVl9SQU1fQ09VTlQ9MTYKIENPTkZJR19CTEtfREVWX1JBTV9TSVpFPTMyNzY4Ci1DT05GSUdfQkxLX0RFVl9SQU1fQkxPQ0tTSVpFPTEwMjQKKyMgQ09ORklHX0JMS19ERVZfWElQIGlzIG5vdCBzZXQKICMgQ09ORklHX0NEUk9NX1BLVENEVkQgaXMgbm90IHNldAogIyBDT05GSUdfQVRBX09WRVJfRVRIIGlzIG5vdCBzZXQKIENPTkZJR19NSVNDX0RFVklDRVM9eQpAQCAtNDQ4LDYgKzQ2OCw4IEBACiAjIENPTkZJR19FRVBST01fOTNDWDYgaXMgbm90IHNldAogIyBDT05GSUdfU0dJX0lPQzQgaXMgbm90IHNldAogIyBDT05GSUdfVElGTV9DT1JFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VOQ0xPU1VSRV9TRVJWSUNFUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9JREU9eQogIyBDT05GSUdfSURFIGlzIG5vdCBzZXQKIAogIwpAQCAtNTEyLDYgKzUzNCw3IEBACiAjIENPTkZJR19TQ1NJX0lQUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX0lOSVRJTyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX0lOSUExMDAgaXMgbm90IHNldAorIyBDT05GSUdfU0NTSV9NVlNBUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX1NURVggaXMgbm90IHNldAogIyBDT05GSUdfU0NTSV9TWU01M0M4WFhfMiBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX0lQUiBpcyBub3Qgc2V0CkBAIC01NjYsNiArNTg5LDcgQEAKICMgQ09ORklHX1BBVEFfTVBJSVggaXMgbm90IHNldAogIyBDT05GSUdfUEFUQV9PTERQSUlYIGlzIG5vdCBzZXQKICMgQ09ORklHX1BBVEFfTkVUQ0VMTCBpcyBub3Qgc2V0CisjIENPTkZJR19QQVRBX05JTkpBMzIgaXMgbm90IHNldAogIyBDT05GSUdfUEFUQV9OUzg3NDEwIGlzIG5vdCBzZXQKICMgQ09ORklHX1BBVEFfTlM4NzQxNSBpcyBub3Qgc2V0CiAjIENPTkZJR19QQVRBX09QVEkgaXMgbm90IHNldApAQCAtNjIzLDYgKzY0Nyw3IEBACiAjIENPTkZJR19TTVNDX1BIWSBpcyBub3Qgc2V0CiAjIENPTkZJR19CUk9BRENPTV9QSFkgaXMgbm90IHNldAogIyBDT05GSUdfSUNQTFVTX1BIWSBpcyBub3Qgc2V0CisjIENPTkZJR19SRUFMVEVLX1BIWSBpcyBub3Qgc2V0CiAjIENPTkZJR19GSVhFRF9QSFkgaXMgbm90IHNldAogIyBDT05GSUdfTURJT19CSVRCQU5HIGlzIG5vdCBzZXQKIENPTkZJR19ORVRfRVRIRVJORVQ9eQpAQCAtNjMxLDYgKzY1Niw3IEBACiAjIENPTkZJR19TVU5HRU0gaXMgbm90IHNldAogIyBDT05GSUdfQ0FTU0lOSSBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRfVkVORE9SXzNDT00gaXMgbm90IHNldAorIyBDT05GSUdfRU5DMjhKNjAgaXMgbm90IHNldAogIyBDT05GSUdfTkVUX1RVTElQIGlzIG5vdCBzZXQKICMgQ09ORklHX0hQMTAwIGlzIG5vdCBzZXQKICMgQ09ORklHX0lCTV9ORVdfRU1BQ19aTUlJIGlzIG5vdCBzZXQKQEAgLTY1MCw2ICs2NzYsNyBAQAogIyBDT05GSUdfTkUyS19QQ0kgaXMgbm90IHNldAogIyBDT05GSUdfODEzOUNQIGlzIG5vdCBzZXQKICMgQ09ORklHXzgxMzlUT08gaXMgbm90IHNldAorIyBDT05GSUdfUjYwNDAgaXMgbm90IHNldAogIyBDT05GSUdfU0lTOTAwIGlzIG5vdCBzZXQKICMgQ09ORklHX0VQSUMxMDAgaXMgbm90IHNldAogIyBDT05GSUdfU1VOREFOQ0UgaXMgbm90IHNldApAQCAtNjYxLDcgKzY4OCw5IEBACiAjIENPTkZJR19ETDJLIGlzIG5vdCBzZXQKICMgQ09ORklHX0UxMDAwIGlzIG5vdCBzZXQKICMgQ09ORklHX0UxMDAwRSBpcyBub3Qgc2V0CisjIENPTkZJR19FMTAwMEVfRU5BQkxFRCBpcyBub3Qgc2V0CiAjIENPTkZJR19JUDEwMDAgaXMgbm90IHNldAorIyBDT05GSUdfSUdCIGlzIG5vdCBzZXQKICMgQ09ORklHX05TODM4MjAgaXMgbm90IHNldAogIyBDT05GSUdfSEFNQUNISSBpcyBub3Qgc2V0CiAjIENPTkZJR19ZRUxMT1dGSU4gaXMgbm90IHNldApAQCAtNjg4LDYgKzcxNyw3IEBACiAjIENPTkZJR19OSVUgaXMgbm90IHNldAogIyBDT05GSUdfTUxYNF9DT1JFIGlzIG5vdCBzZXQKICMgQ09ORklHX1RFSFVUSSBpcyBub3Qgc2V0CisjIENPTkZJR19CTlgyWCBpcyBub3Qgc2V0CiAjIENPTkZJR19UUiBpcyBub3Qgc2V0CiAKICMKQEAgLTcxMCw3ICs3NDAsNiBAQAogIyBDT05GSUdfUFBQIGlzIG5vdCBzZXQKICMgQ09ORklHX1NMSVAgaXMgbm90IHNldAogIyBDT05GSUdfTkVUX0ZDIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NIQVBFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRDT05TT0xFIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVFBPTEwgaXMgbm90IHNldAogIyBDT05GSUdfTkVUX1BPTExfQ09OVFJPTExFUiBpcyBub3Qgc2V0CkBAIC03NTMsNiArNzgyLDcgQEAKICMKICMgQ09ORklHX1ZUIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFUklBTF9OT05TVEFOREFSRCBpcyBub3Qgc2V0CisjIENPTkZJR19OT1pPTUkgaXMgbm90IHNldAogCiAjCiAjIFNlcmlhbCBkcml2ZXJzCkBAIC04MjYsMTQgKzg1NiwxMiBAQAogIwogIyBNaXNjZWxsYW5lb3VzIEkyQyBDaGlwIHN1cHBvcnQKICMKLSMgQ09ORklHX1NFTlNPUlNfRFMxMzM3IGlzIG5vdCBzZXQKLSMgQ09ORklHX1NFTlNPUlNfRFMxMzc0IGlzIG5vdCBzZXQKICMgQ09ORklHX0RTMTY4MiBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0VFUFJPTSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1BDRjg1NzQgaXMgbm90IHNldAotIyBDT05GSUdfU0VOU09SU19QQ0E5NTM5IGlzIG5vdCBzZXQKKyMgQ09ORklHX1BDRjg1NzUgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19QQ0Y4NTkxIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NFTlNPUlNfTTQxVDAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RQUzY1MDEwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfTUFYNjg3NSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1RTTDI1NTAgaXMgbm90IHNldAogIyBDT05GSUdfSTJDX0RFQlVHX0NPUkUgaXMgbm90IHNldApAQCAtODcyLDYgKzkwMCw3IEBACiAjIENPTkZJR19TRU5TT1JTX0FETTEwMzEgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19BRE05MjQwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfQURUNzQ3MCBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX0FEVDc0NzMgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19BVFhQMSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0RTMTYyMSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0k1S19BTUIgaXMgbm90IHNldApAQCAtOTAyLDYgKzkzMSw3IEBACiAjIENPTkZJR19TRU5TT1JTX1NNU0M0N00xIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfU01TQzQ3TTE5MiBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1NNU0M0N0IzOTcgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19BRFM3ODI4IGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVEhNQzUwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVklBNjg2QSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1ZUMTIxMSBpcyBub3Qgc2V0CkBAIC05MTEsOSArOTQxLDExIEBACiAjIENPTkZJR19TRU5TT1JTX1c4Mzc5MkQgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19XODM3OTMgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19XODNMNzg1VFMgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19XODNMNzg2TkcgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19XODM2MjdIRiBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1c4MzYyN0VIRiBpcyBub3Qgc2V0CiAjIENPTkZJR19IV01PTl9ERUJVR19DSElQIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RIRVJNQUwgaXMgbm90IHNldAogQ09ORklHX1dBVENIRE9HPXkKICMgQ09ORklHX1dBVENIRE9HX05PV0FZT1VUIGlzIG5vdCBzZXQKIApAQCAtOTkzLDYgKzEwMjUsNyBAQAogQ09ORklHX1VTQl9BUkNIX0hBU19FSENJPXkKIENPTkZJR19VU0I9eQogIyBDT05GSUdfVVNCX0RFQlVHIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9BTk5PVU5DRV9ORVdfREVWSUNFUyBpcyBub3Qgc2V0CiAKICMKICMgTWlzY2VsbGFuZW91cyBVU0Igb3B0aW9ucwpAQCAtMTAwNiwxMCArMTAzOSwxMCBAQAogIyBVU0IgSG9zdCBDb250cm9sbGVyIERyaXZlcnMKICMKIENPTkZJR19VU0JfRUhDSV9IQ0Q9eQotIyBDT05GSUdfVVNCX0VIQ0lfU1BMSVRfSVNPIGlzIG5vdCBzZXQKIENPTkZJR19VU0JfRUhDSV9ST09UX0hVQl9UVD15CiAjIENPTkZJR19VU0JfRUhDSV9UVF9ORVdTQ0hFRCBpcyBub3Qgc2V0CiBDT05GSUdfVVNCX0VIQ0lfRlNMPXkKK0NPTkZJR19VU0JfRUhDSV9IQ0RfUFBDX09GPXkKICMgQ09ORklHX1VTQl9JU1AxMTZYX0hDRCBpcyBub3Qgc2V0CiBDT05GSUdfVVNCX09IQ0lfSENEPXkKIENPTkZJR19VU0JfT0hDSV9IQ0RfUFBDX09GPXkKQEAgLTEwNjAsMTAgKzEwOTMsNiBAQAogIwogIyBVU0IgcG9ydCBkcml2ZXJzCiAjCi0KLSMKLSMgVVNCIFNlcmlhbCBDb252ZXJ0ZXIgc3VwcG9ydAotIwogIyBDT05GSUdfVVNCX1NFUklBTCBpcyBub3Qgc2V0CiAKICMKQEAgLTEwODksMTQgKzExMTgsNiBAQAogIyBDT05GSUdfVVNCX1RSQU5DRVZJQlJBVE9SIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9JT1dBUlJJT1IgaXMgbm90IHNldAogIyBDT05GSUdfVVNCX1RFU1QgaXMgbm90IHNldAotCi0jCi0jIFVTQiBEU0wgbW9kZW0gc3VwcG9ydAotIwotCi0jCi0jIFVTQiBHYWRnZXQgU3VwcG9ydAotIwogQ09ORklHX1VTQl9HQURHRVQ9eQogIyBDT05GSUdfVVNCX0dBREdFVF9ERUJVRyBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfR0FER0VUX0RFQlVHX0ZJTEVTIGlzIG5vdCBzZXQKQEAgLTExMjIsNyArMTE0Myw5IEBACiAjIENPTkZJR19VU0JfRklMRV9TVE9SQUdFIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9HX1NFUklBTCBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfTUlESV9HQURHRVQgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX0dfUFJJTlRFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19NTUMgaXMgbm90IHNldAorIyBDT05GSUdfTUVNU1RJQ0sgaXMgbm90IHNldAogIyBDT05GSUdfTkVXX0xFRFMgaXMgbm90IHNldAogIyBDT05GSUdfSU5GSU5JQkFORCBpcyBub3Qgc2V0CiAjIENPTkZJR19FREFDIGlzIG5vdCBzZXQKQEAgLTExNTQsMjAgKzExNzcsMjMgQEAKICMgQ09ORklHX1JUQ19EUlZfUENGODU2MyBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfRFJWX1BDRjg1ODMgaXMgbm90IHNldAogIyBDT05GSUdfUlRDX0RSVl9NNDFUODAgaXMgbm90IHNldAorIyBDT05GSUdfUlRDX0RSVl9TMzUzOTBBIGlzIG5vdCBzZXQKIAogIwogIyBTUEkgUlRDIGRyaXZlcnMKICMKLSMgQ09ORklHX1JUQ19EUlZfUlM1QzM0OCBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfRFJWX01BWDY5MDIgaXMgbm90IHNldAorIyBDT05GSUdfUlRDX0RSVl9SOTcwMSBpcyBub3Qgc2V0CisjIENPTkZJR19SVENfRFJWX1JTNUMzNDggaXMgbm90IHNldAogCiAjCiAjIFBsYXRmb3JtIFJUQyBkcml2ZXJzCiAjCiAjIENPTkZJR19SVENfRFJWX0NNT1MgaXMgbm90IHNldAorIyBDT05GSUdfUlRDX0RSVl9EUzE1MTEgaXMgbm90IHNldAogIyBDT05GSUdfUlRDX0RSVl9EUzE1NTMgaXMgbm90IHNldAotIyBDT05GSUdfUlRDX0RSVl9TVEsxN1RBOCBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfRFJWX0RTMTc0MiBpcyBub3Qgc2V0CisjIENPTkZJR19SVENfRFJWX1NUSzE3VEE4IGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfTTQ4VDg2IGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfTTQ4VDU5IGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfVjMwMjAgaXMgbm90IHNldApAQCAtMTE3NSw2ICsxMjAxLDcgQEAKICMKICMgb24tQ1BVIFJUQyBkcml2ZXJzCiAjCisjIENPTkZJR19ETUFERVZJQ0VTIGlzIG5vdCBzZXQKIAogIwogIyBVc2Vyc3BhY2UgSS9PCkBAIC0xMjAwLDEyICsxMjI3LDEwIEBACiAjIENPTkZJR19YRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfR0ZTMl9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19PQ0ZTMl9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CitDT05GSUdfRE5PVElGWT15CiBDT05GSUdfSU5PVElGWT15CiBDT05GSUdfSU5PVElGWV9VU0VSPXkKICMgQ09ORklHX1FVT1RBIGlzIG5vdCBzZXQKLUNPTkZJR19ETk9USUZZPXkKICMgQ09ORklHX0FVVE9GU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19BVVRPRlM0X0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZVU0VfRlMgaXMgbm90IHNldApAQCAtMTI1OCw4ICsxMjgzLDEwIEBACiAjIENPTkZJR19KRkZTMl9SVUJJTiBpcyBub3Qgc2V0CiAjIENPTkZJR19DUkFNRlMgaXMgbm90IHNldAogIyBDT05GSUdfVlhGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19IUEZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1FOWDRGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TWVNWX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1VGU19GUyBpcyBub3Qgc2V0CiBDT05GSUdfTkVUV09SS19GSUxFU1lTVEVNUz15CkBAIC0xMzI0LDcgKzEzNTEsNiBAQAogQ09ORklHX0hBU19JT01FTT15CiBDT05GSUdfSEFTX0lPUE9SVD15CiBDT05GSUdfSEFTX0RNQT15Ci0jIENPTkZJR19JTlNUUlVNRU5UQVRJT04gaXMgbm90IHNldAogCiAjCiAjIEtlcm5lbCBoYWNraW5nCkBAIC0xMzQzLDYgKzEzNjksNyBAQAogIyBDT05GSUdfU0NIRURTVEFUUyBpcyBub3Qgc2V0CiAjIENPTkZJR19USU1FUl9TVEFUUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TTFVCX0RFQlVHX09OIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NMVUJfU1RBVFMgaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfUlRfTVVURVhFUyBpcyBub3Qgc2V0CiAjIENPTkZJR19SVF9NVVRFWF9URVNURVIgaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfU1BJTkxPQ0sgaXMgbm90IHNldApAQCAtMTM1NSw5ICsxMzgyLDkgQEAKICMgQ09ORklHX0RFQlVHX1ZNIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX0xJU1QgaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfU0cgaXMgbm90IHNldAotQ09ORklHX0ZPUkNFRF9JTkxJTklORz15CiAjIENPTkZJR19CT09UX1BSSU5US19ERUxBWSBpcyBub3Qgc2V0CiAjIENPTkZJR19SQ1VfVE9SVFVSRV9URVNUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JBQ0tUUkFDRV9TRUxGX1RFU1QgaXMgbm90IHNldAogIyBDT05GSUdfRkFVTFRfSU5KRUNUSU9OIGlzIG5vdCBzZXQKICMgQ09ORklHX1NBTVBMRVMgaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfU1RBQ0tPVkVSRkxPVyBpcyBub3Qgc2V0CkBAIC0xMzc2LDYgKzE0MDMsNyBAQAogQ09ORklHX0NSWVBUTz15CiBDT05GSUdfQ1JZUFRPX0FMR0FQST15CiBDT05GSUdfQ1JZUFRPX0JMS0NJUEhFUj15CisjIENPTkZJR19DUllQVE9fU0VRSVYgaXMgbm90IHNldAogQ09ORklHX0NSWVBUT19NQU5BR0VSPXkKICMgQ09ORklHX0NSWVBUT19ITUFDIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19YQ0JDIGlzIG5vdCBzZXQKQEAgLTEzOTMsNiArMTQyMSw5IEBACiBDT05GSUdfQ1JZUFRPX1BDQkM9bQogIyBDT05GSUdfQ1JZUFRPX0xSVyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fWFRTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DVFIgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0dDTSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ0NNIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19DUllQVEQgaXMgbm90IHNldAogQ09ORklHX0NSWVBUT19ERVM9eQogIyBDT05GSUdfQ1JZUFRPX0ZDUllQVCBpcyBub3Qgc2V0CkBAIC0xNDA3LDExICsxNDM4LDE0IEBACiAjIENPTkZJR19DUllQVE9fS0hBWkFEIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19BTlVCSVMgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX1NFRUQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1NBTFNBMjAgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0RFRkxBVEUgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX01JQ0hBRUxfTUlDIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19DUkMzMkMgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0NBTUVMTElBIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19URVNUIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19BVVRIRU5DIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19MWk8gaXMgbm90IHNldAogQ09ORklHX0NSWVBUT19IVz15CisjIENPTkZJR19DUllQVE9fREVWX0hJRk5fNzk1WCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfQ0xPQ0sgaXMgbm90IHNldApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODMyeF9tZHNfZGVmY29uZmlnIGIvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODMyeF9tZHNfZGVmY29uZmlnCmluZGV4IDJkODk1MWIuLjUwY2NlZGEgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jb25maWdzL21wYzgzMnhfbWRzX2RlZmNvbmZpZworKysgYi9hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM4MzJ4X21kc19kZWZjb25maWcKQEAgLTEsNyArMSw3IEBACiAjCiAjIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIG1ha2UgY29uZmlnOiBkb24ndCBlZGl0Ci0jIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMjQtcmM0Ci0jIFRodSBEZWMgIDYgMTY6NDg6MzMgMjAwNworIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjI1LXJjNworIyBNb24gTWFyIDMxIDExOjM2OjUxIDIwMDgKICMKICMgQ09ORklHX1BQQzY0IGlzIG5vdCBzZXQKIApAQCAtMTQsOCArMTQsOCBAQAogIyBDT05GSUdfNDB4IGlzIG5vdCBzZXQKICMgQ09ORklHXzQ0eCBpcyBub3Qgc2V0CiAjIENPTkZJR19FMjAwIGlzIG5vdCBzZXQKLUNPTkZJR184M3h4PXkKIENPTkZJR19QUENfRlBVPXkKKyMgQ09ORklHX0ZTTF9FTUJfUEVSRk1PTiBpcyBub3Qgc2V0CiBDT05GSUdfUFBDX1NURF9NTVU9eQogQ09ORklHX1BQQ19TVERfTU1VXzMyPXkKICMgQ09ORklHX1BQQ19NTV9TTElDRVMgaXMgbm90IHNldApAQCAtMjksNiArMjksNyBAQAogQ09ORklHX0dFTkVSSUNfVElNRV9WU1lTQ0FMTD15CiBDT05GSUdfR0VORVJJQ19DTE9DS0VWRU5UUz15CiBDT05GSUdfR0VORVJJQ19IQVJESVJRUz15CisjIENPTkZJR19IQVZFX1NFVFVQX1BFUl9DUFVfQVJFQSBpcyBub3Qgc2V0CiBDT05GSUdfSVJRX1BFUl9DUFU9eQogQ09ORklHX1JXU0VNX1hDSEdBRERfQUxHT1JJVEhNPXkKIENPTkZJR19BUkNIX0hBU19JTE9HMl9VMzI9eQpAQCAtNjYsMTUgKzY3LDE5IEBACiAjIENPTkZJR19QT1NJWF9NUVVFVUUgaXMgbm90IHNldAogIyBDT05GSUdfQlNEX1BST0NFU1NfQUNDVCBpcyBub3Qgc2V0CiAjIENPTkZJR19UQVNLU1RBVFMgaXMgbm90IHNldAotIyBDT05GSUdfVVNFUl9OUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19QSURfTlMgaXMgbm90IHNldAogIyBDT05GSUdfQVVESVQgaXMgbm90IHNldAogIyBDT05GSUdfSUtDT05GSUcgaXMgbm90IHNldAogQ09ORklHX0xPR19CVUZfU0hJRlQ9MTQKICMgQ09ORklHX0NHUk9VUFMgaXMgbm90IHNldAorQ09ORklHX0dST1VQX1NDSEVEPXkKICMgQ09ORklHX0ZBSVJfR1JPVVBfU0NIRUQgaXMgbm90IHNldAorIyBDT05GSUdfUlRfR1JPVVBfU0NIRUQgaXMgbm90IHNldAorQ09ORklHX1VTRVJfU0NIRUQ9eQorIyBDT05GSUdfQ0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKIENPTkZJR19TWVNGU19ERVBSRUNBVEVEPXkKK0NPTkZJR19TWVNGU19ERVBSRUNBVEVEX1YyPXkKICMgQ09ORklHX1JFTEFZIGlzIG5vdCBzZXQKKyMgQ09ORklHX05BTUVTUEFDRVMgaXMgbm90IHNldAogQ09ORklHX0JMS19ERVZfSU5JVFJEPXkKIENPTkZJR19JTklUUkFNRlNfU09VUkNFPSIiCiAjIENPTkZJR19DQ19PUFRJTUlaRV9GT1JfU0laRSBpcyBub3Qgc2V0CkBAIC04NiwxMSArOTEsMTMgQEAKIENPTkZJR19QUklOVEs9eQogQ09ORklHX0JVRz15CiBDT05GSUdfRUxGX0NPUkU9eQorQ09ORklHX0NPTVBBVF9CUks9eQogQ09ORklHX0JBU0VfRlVMTD15CiBDT05GSUdfRlVURVg9eQogQ09ORklHX0FOT05fSU5PREVTPXkKICMgQ09ORklHX0VQT0xMIGlzIG5vdCBzZXQKIENPTkZJR19TSUdOQUxGRD15CitDT05GSUdfVElNRVJGRD15CiBDT05GSUdfRVZFTlRGRD15CiBDT05GSUdfU0hNRU09eQogQ09ORklHX1ZNX0VWRU5UX0NPVU5URVJTPXkKQEAgLTk4LDYgKzEwNSwxMyBAQAogIyBDT05GSUdfU0xBQiBpcyBub3Qgc2V0CiBDT05GSUdfU0xVQj15CiAjIENPTkZJR19TTE9CIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BST0ZJTElORyBpcyBub3Qgc2V0CisjIENPTkZJR19NQVJLRVJTIGlzIG5vdCBzZXQKK0NPTkZJR19IQVZFX09QUk9GSUxFPXkKK0NPTkZJR19IQVZFX0tQUk9CRVM9eQorQ09ORklHX0hBVkVfS1JFVFBST0JFUz15CitDT05GSUdfUFJPQ19QQUdFX01PTklUT1I9eQorQ09ORklHX1NMQUJJTkZPPXkKIENPTkZJR19SVF9NVVRFWEVTPXkKICMgQ09ORklHX1RJTllfU0hNRU0gaXMgbm90IHNldAogQ09ORklHX0JBU0VfU01BTEw9MApAQCAtMTI1LDYgKzEzOSw3IEBACiAjIENPTkZJR19ERUZBVUxUX0NGUSBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUZBVUxUX05PT1AgaXMgbm90IHNldAogQ09ORklHX0RFRkFVTFRfSU9TQ0hFRD0iYW50aWNpcGF0b3J5IgorQ09ORklHX0NMQVNTSUNfUkNVPXkKIAogIwogIyBQbGF0Zm9ybSBzdXBwb3J0CkBAIC0xMzMsMTggKzE0OCwyMyBAQAogIyBDT05GSUdfUFBDXzgyeHggaXMgbm90IHNldAogQ09ORklHX1BQQ184M3h4PXkKICMgQ09ORklHX1BQQ184Nnh4IGlzIG5vdCBzZXQKLSMgQ09ORklHX1BQQ19NUEM1Mnh4IGlzIG5vdCBzZXQKLSMgQ09ORklHX1BQQ19NUEM1MjAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ19NUEM1MTJ4IGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ19NUEM1MTIxIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19DRUxMIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19DRUxMX05BVElWRSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUTJBRFMgaXMgbm90IHNldAotIyBDT05GSUdfTVBDODMxM19SREIgaXMgbm90IHNldAorQ09ORklHX01QQzgzeHg9eQorIyBDT05GSUdfTVBDODMxeF9SREIgaXMgbm90IHNldAogQ09ORklHX01QQzgzMnhfTURTPXkKICMgQ09ORklHX01QQzgzMnhfUkRCIGlzIG5vdCBzZXQKICMgQ09ORklHX01QQzgzNHhfTURTIGlzIG5vdCBzZXQKICMgQ09ORklHX01QQzgzNHhfSVRYIGlzIG5vdCBzZXQKICMgQ09ORklHX01QQzgzNnhfTURTIGlzIG5vdCBzZXQKKyMgQ09ORklHX01QQzgzN3hfTURTIGlzIG5vdCBzZXQKKyMgQ09ORklHX01QQzgzN3hfUkRCIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NCQzgzNHggaXMgbm90IHNldAogQ09ORklHX1BQQ19NUEM4MzJ4PXkKK0NPTkZJR19JUElDPXkKICMgQ09ORklHX01QSUMgaXMgbm90IHNldAogIyBDT05GSUdfTVBJQ19XRUlSRCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfSTgyNTkgaXMgbm90IHNldApAQCAtMTU2LDcgKzE3Niw2IEBACiAjIENPTkZJR19HRU5FUklDX0lPTUFQIGlzIG5vdCBzZXQKICMgQ09ORklHX0NQVV9GUkVRIGlzIG5vdCBzZXQKIENPTkZJR19RVUlDQ19FTkdJTkU9eQotIyBDT05GSUdfQ1BNMiBpcyBub3Qgc2V0CiAjIENPTkZJR19GU0xfVUxJMTU3NSBpcyBub3Qgc2V0CiAKICMKQEAgLTE3MiwxMyArMTkxLDE3IEBACiAjIENPTkZJR19IWl8zMDAgaXMgbm90IHNldAogIyBDT05GSUdfSFpfMTAwMCBpcyBub3Qgc2V0CiBDT05GSUdfSFo9MjUwCisjIENPTkZJR19TQ0hFRF9IUlRJQ0sgaXMgbm90IHNldAogQ09ORklHX1BSRUVNUFRfTk9ORT15CiAjIENPTkZJR19QUkVFTVBUX1ZPTFVOVEFSWSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUkVFTVBUIGlzIG5vdCBzZXQKIENPTkZJR19CSU5GTVRfRUxGPXkKICMgQ09ORklHX0JJTkZNVF9NSVNDIGlzIG5vdCBzZXQKIENPTkZJR19NQVRIX0VNVUxBVElPTj15CisjIENPTkZJR19JT01NVV9IRUxQRVIgaXMgbm90IHNldAogQ09ORklHX0FSQ0hfRU5BQkxFX01FTU9SWV9IT1RQTFVHPXkKK0NPTkZJR19BUkNIX0hBU19XQUxLX01FTU9SWT15CitDT05GSUdfQVJDSF9FTkFCTEVfTUVNT1JZX0hPVFJFTU9WRT15CiBDT05GSUdfQVJDSF9GTEFUTUVNX0VOQUJMRT15CiBDT05GSUdfQVJDSF9QT1BVTEFURVNfTk9ERV9NQVA9eQogQ09ORklHX1NFTEVDVF9NRU1PUllfTU9ERUw9eQpAQCAtMTk3LDExICsyMjAsNyBAQAogQ09ORklHX1BST0NfREVWSUNFVFJFRT15CiAjIENPTkZJR19DTURMSU5FX0JPT0wgaXMgbm90IHNldAogIyBDT05GSUdfUE0gaXMgbm90IHNldAotQ09ORklHX1NVU1BFTkRfVVBfUE9TU0lCTEU9eQotQ09ORklHX0hJQkVSTkFUSU9OX1VQX1BPU1NJQkxFPXkKIENPTkZJR19TRUNDT01QPXkKLUNPTkZJR19XQU5UX0RFVklDRV9UUkVFPXkKLUNPTkZJR19ERVZJQ0VfVFJFRT0iIgogQ09ORklHX0lTQV9ETUFfQVBJPXkKIAogIwpAQCAtMjUwLDYgKzI2OSw3IEBACiAjIENPTkZJR19YRlJNX1VTRVIgaXMgbm90IHNldAogIyBDT05GSUdfWEZSTV9TVUJfUE9MSUNZIGlzIG5vdCBzZXQKICMgQ09ORklHX1hGUk1fTUlHUkFURSBpcyBub3Qgc2V0CisjIENPTkZJR19YRlJNX1NUQVRJU1RJQ1MgaXMgbm90IHNldAogIyBDT05GSUdfTkVUX0tFWSBpcyBub3Qgc2V0CiBDT05GSUdfSU5FVD15CiBDT05GSUdfSVBfTVVMVElDQVNUPXkKQEAgLTMwNSw2ICszMjUsNyBAQAogIwogIyBDT05GSUdfTkVUX1BLVEdFTiBpcyBub3Qgc2V0CiAjIENPTkZJR19IQU1SQURJTyBpcyBub3Qgc2V0CisjIENPTkZJR19DQU4gaXMgbm90IHNldAogIyBDT05GSUdfSVJEQSBpcyBub3Qgc2V0CiAjIENPTkZJR19CVCBpcyBub3Qgc2V0CiAjIENPTkZJR19BRl9SWFJQQyBpcyBub3Qgc2V0CkBAIC0zNDksNyArMzcwLDcgQEAKIENPTkZJR19CTEtfREVWX1JBTT15CiBDT05GSUdfQkxLX0RFVl9SQU1fQ09VTlQ9MTYKIENPTkZJR19CTEtfREVWX1JBTV9TSVpFPTMyNzY4Ci1DT05GSUdfQkxLX0RFVl9SQU1fQkxPQ0tTSVpFPTEwMjQKKyMgQ09ORklHX0JMS19ERVZfWElQIGlzIG5vdCBzZXQKICMgQ09ORklHX0NEUk9NX1BLVENEVkQgaXMgbm90IHNldAogIyBDT05GSUdfQVRBX09WRVJfRVRIIGlzIG5vdCBzZXQKIENPTkZJR19NSVNDX0RFVklDRVM9eQpAQCAtMzU3LDYgKzM3OCw4IEBACiAjIENPTkZJR19FRVBST01fOTNDWDYgaXMgbm90IHNldAogIyBDT05GSUdfU0dJX0lPQzQgaXMgbm90IHNldAogIyBDT05GSUdfVElGTV9DT1JFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VOQ0xPU1VSRV9TRVJWSUNFUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9JREU9eQogIyBDT05GSUdfSURFIGlzIG5vdCBzZXQKIAogIwpAQCAtNDIxLDYgKzQ0NCw3IEBACiAjIENPTkZJR19TQ1NJX0lQUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX0lOSVRJTyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX0lOSUExMDAgaXMgbm90IHNldAorIyBDT05GSUdfU0NTSV9NVlNBUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX1NURVggaXMgbm90IHNldAogIyBDT05GSUdfU0NTSV9TWU01M0M4WFhfMiBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX1FMT0dJQ18xMjgwIGlzIG5vdCBzZXQKQEAgLTQ1MSw3ICs0NzUsNiBAQAogIyBDT05GSUdfRVFVQUxJWkVSIGlzIG5vdCBzZXQKICMgQ09ORklHX1RVTiBpcyBub3Qgc2V0CiAjIENPTkZJR19WRVRIIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lQMTAwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19BUkNORVQgaXMgbm90IHNldAogQ09ORklHX1BIWUxJQj15CiAKQEAgLTQ2Nyw2ICs0OTAsNyBAQAogIyBDT05GSUdfU01TQ19QSFkgaXMgbm90IHNldAogIyBDT05GSUdfQlJPQURDT01fUEhZIGlzIG5vdCBzZXQKICMgQ09ORklHX0lDUExVU19QSFkgaXMgbm90IHNldAorIyBDT05GSUdfUkVBTFRFS19QSFkgaXMgbm90IHNldAogIyBDT05GSUdfRklYRURfUEhZIGlzIG5vdCBzZXQKICMgQ09ORklHX01ESU9fQklUQkFORyBpcyBub3Qgc2V0CiBDT05GSUdfTkVUX0VUSEVSTkVUPXkKQEAgLTQ4OCw2ICs1MTIsOSBAQAogIyBDT05GSUdfREwySyBpcyBub3Qgc2V0CiAjIENPTkZJR19FMTAwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19FMTAwMEUgaXMgbm90IHNldAorIyBDT05GSUdfRTEwMDBFX0VOQUJMRUQgaXMgbm90IHNldAorIyBDT05GSUdfSVAxMDAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lHQiBpcyBub3Qgc2V0CiAjIENPTkZJR19OUzgzODIwIGlzIG5vdCBzZXQKICMgQ09ORklHX0hBTUFDSEkgaXMgbm90IHNldAogIyBDT05GSUdfWUVMTE9XRklOIGlzIG5vdCBzZXQKQEAgLTUxOCw2ICs1NDUsNyBAQAogIyBDT05GSUdfTklVIGlzIG5vdCBzZXQKICMgQ09ORklHX01MWDRfQ09SRSBpcyBub3Qgc2V0CiAjIENPTkZJR19URUhVVEkgaXMgbm90IHNldAorIyBDT05GSUdfQk5YMlggaXMgbm90IHNldAogIyBDT05GSUdfVFIgaXMgbm90IHNldAogCiAjCkBAIC01MzEsNyArNTU5LDYgQEAKICMgQ09ORklHX1BQUCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTElQIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9GQyBpcyBub3Qgc2V0Ci0jIENPTkZJR19TSEFQRVIgaXMgbm90IHNldAogIyBDT05GSUdfTkVUQ09OU09MRSBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRQT0xMIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9QT0xMX0NPTlRST0xMRVIgaXMgbm90IHNldApAQCAtNTc0LDYgKzYwMSw3IEBACiAjCiAjIENPTkZJR19WVCBpcyBub3Qgc2V0CiAjIENPTkZJR19TRVJJQUxfTk9OU1RBTkRBUkQgaXMgbm90IHNldAorIyBDT05GSUdfTk9aT01JIGlzIG5vdCBzZXQKIAogIwogIyBTZXJpYWwgZHJpdmVycwpAQCAtNTkzLDE0ICs2MjEsMTQgQEAKIENPTkZJR19TRVJJQUxfQ09SRV9DT05TT0xFPXkKICMgQ09ORklHX1NFUklBTF9KU00gaXMgbm90IHNldAogIyBDT05GSUdfU0VSSUFMX09GX1BMQVRGT1JNIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFUklBTF9RRSBpcyBub3Qgc2V0CiBDT05GSUdfVU5JWDk4X1BUWVM9eQogQ09ORklHX0xFR0FDWV9QVFlTPXkKIENPTkZJR19MRUdBQ1lfUFRZX0NPVU5UPTI1NgogIyBDT05GSUdfSVBNSV9IQU5ETEVSIGlzIG5vdCBzZXQKIENPTkZJR19IV19SQU5ET009eQogIyBDT05GSUdfTlZSQU0gaXMgbm90IHNldAotQ09ORklHX0dFTl9SVEM9eQotIyBDT05GSUdfR0VOX1JUQ19YIGlzIG5vdCBzZXQKKyMgQ09ORklHX0dFTl9SVEMgaXMgbm90IHNldAogIyBDT05GSUdfUjM5NjQgaXMgbm90IHNldAogIyBDT05GSUdfQVBQTElDT00gaXMgbm90IHNldAogIyBDT05GSUdfUkFXX0RSSVZFUiBpcyBub3Qgc2V0CkBAIC02NDcsMTQgKzY3NSwxMiBAQAogIwogIyBNaXNjZWxsYW5lb3VzIEkyQyBDaGlwIHN1cHBvcnQKICMKLSMgQ09ORklHX1NFTlNPUlNfRFMxMzM3IGlzIG5vdCBzZXQKLSMgQ09ORklHX1NFTlNPUlNfRFMxMzc0IGlzIG5vdCBzZXQKICMgQ09ORklHX0RTMTY4MiBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0VFUFJPTSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1BDRjg1NzQgaXMgbm90IHNldAotIyBDT05GSUdfU0VOU09SU19QQ0E5NTM5IGlzIG5vdCBzZXQKKyMgQ09ORklHX1BDRjg1NzUgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19QQ0Y4NTkxIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NFTlNPUlNfTTQxVDAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RQUzY1MDEwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfTUFYNjg3NSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1RTTDI1NTAgaXMgbm90IHNldAogIyBDT05GSUdfSTJDX0RFQlVHX0NPUkUgaXMgbm90IHNldApAQCAtNjc5LDYgKzcwNSw3IEBACiAjIENPTkZJR19TRU5TT1JTX0FETTEwMzEgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19BRE05MjQwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfQURUNzQ3MCBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX0FEVDc0NzMgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19BVFhQMSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0RTMTYyMSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0k1S19BTUIgaXMgbm90IHNldApAQCAtNzA4LDYgKzczNSw3IEBACiAjIENPTkZJR19TRU5TT1JTX1NNU0M0N00xIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfU01TQzQ3TTE5MiBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1NNU0M0N0IzOTcgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19BRFM3ODI4IGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVEhNQzUwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVklBNjg2QSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1ZUMTIxMSBpcyBub3Qgc2V0CkBAIC03MTcsOSArNzQ1LDExIEBACiAjIENPTkZJR19TRU5TT1JTX1c4Mzc5MkQgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19XODM3OTMgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19XODNMNzg1VFMgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19XODNMNzg2TkcgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19XODM2MjdIRiBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1c4MzYyN0VIRiBpcyBub3Qgc2V0CiAjIENPTkZJR19IV01PTl9ERUJVR19DSElQIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RIRVJNQUwgaXMgbm90IHNldAogQ09ORklHX1dBVENIRE9HPXkKICMgQ09ORklHX1dBVENIRE9HX05PV0FZT1VUIGlzIG5vdCBzZXQKIApAQCAtNzg1LDEyICs4MTUsOSBAQAogIwogIyBOT1RFOiBVU0JfU1RPUkFHRSBlbmFibGVzIFNDU0ksIGFuZCAnU0NTSSBkaXNrIHN1cHBvcnQnCiAjCi0KLSMKLSMgVVNCIEdhZGdldCBTdXBwb3J0Ci0jCiAjIENPTkZJR19VU0JfR0FER0VUIGlzIG5vdCBzZXQKICMgQ09ORklHX01NQyBpcyBub3Qgc2V0CisjIENPTkZJR19NRU1TVElDSyBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVdfTEVEUyBpcyBub3Qgc2V0CiAjIENPTkZJR19JTkZJTklCQU5EIGlzIG5vdCBzZXQKICMgQ09ORklHX0VEQUMgaXMgbm90IHNldApAQCAtODIyLDYgKzg0OSw3IEBACiAjIENPTkZJR19SVENfRFJWX1BDRjg1NjMgaXMgbm90IHNldAogIyBDT05GSUdfUlRDX0RSVl9QQ0Y4NTgzIGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfTTQxVDgwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JUQ19EUlZfUzM1MzkwQSBpcyBub3Qgc2V0CiAKICMKICMgU1BJIFJUQyBkcml2ZXJzCkBAIC04MzEsOSArODU5LDEwIEBACiAjIFBsYXRmb3JtIFJUQyBkcml2ZXJzCiAjCiAjIENPTkZJR19SVENfRFJWX0NNT1MgaXMgbm90IHNldAorIyBDT05GSUdfUlRDX0RSVl9EUzE1MTEgaXMgbm90IHNldAogIyBDT05GSUdfUlRDX0RSVl9EUzE1NTMgaXMgbm90IHNldAotIyBDT05GSUdfUlRDX0RSVl9TVEsxN1RBOCBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfRFJWX0RTMTc0MiBpcyBub3Qgc2V0CisjIENPTkZJR19SVENfRFJWX1NUSzE3VEE4IGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfTTQ4VDg2IGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfTTQ4VDU5IGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfVjMwMjAgaXMgbm90IHNldApAQCAtODQxLDYgKzg3MCw3IEBACiAjCiAjIG9uLUNQVSBSVEMgZHJpdmVycwogIworIyBDT05GSUdfRE1BREVWSUNFUyBpcyBub3Qgc2V0CiAKICMKICMgVXNlcnNwYWNlIEkvTwpAQCAtODY2LDEyICs4OTYsMTAgQEAKICMgQ09ORklHX1hGU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19HRlMyX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX09DRlMyX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX01JTklYX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1JPTUZTX0ZTIGlzIG5vdCBzZXQKK0NPTkZJR19ETk9USUZZPXkKIENPTkZJR19JTk9USUZZPXkKIENPTkZJR19JTk9USUZZX1VTRVI9eQogIyBDT05GSUdfUVVPVEEgaXMgbm90IHNldAotQ09ORklHX0ROT1RJRlk9eQogIyBDT05GSUdfQVVUT0ZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0FVVE9GUzRfRlMgaXMgbm90IHNldAogIyBDT05GSUdfRlVTRV9GUyBpcyBub3Qgc2V0CkBAIC05MTMsOCArOTQxLDEwIEBACiAjIENPTkZJR19FRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfQ1JBTUZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1ZYRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfTUlOSVhfRlMgaXMgbm90IHNldAogIyBDT05GSUdfSFBGU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19RTlg0RlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfU1lTVl9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19VRlNfRlMgaXMgbm90IHNldAogQ09ORklHX05FVFdPUktfRklMRVNZU1RFTVM9eQpAQCAtOTU4LDcgKzk4OCw2IEBACiAjIENPTkZJR19TWVNWNjhfUEFSVElUSU9OIGlzIG5vdCBzZXQKICMgQ09ORklHX05MUyBpcyBub3Qgc2V0CiAjIENPTkZJR19ETE0gaXMgbm90IHNldAotIyBDT05GSUdfVUNDX1NMT1cgaXMgbm90IHNldAogQ09ORklHX1VDQ19GQVNUPXkKIENPTkZJR19VQ0M9eQogCkBAIC05NzYsNyArMTAwNSw2IEBACiBDT05GSUdfSEFTX0lPTUVNPXkKIENPTkZJR19IQVNfSU9QT1JUPXkKIENPTkZJR19IQVNfRE1BPXkKLSMgQ09ORklHX0lOU1RSVU1FTlRBVElPTiBpcyBub3Qgc2V0CiAKICMKICMgS2VybmVsIGhhY2tpbmcKQEAgLTk5MCw2ICsxMDE4LDcgQEAKICMgQ09ORklHX0hFQURFUlNfQ0hFQ0sgaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfS0VSTkVMIGlzIG5vdCBzZXQKICMgQ09ORklHX1NMVUJfREVCVUdfT04gaXMgbm90IHNldAorIyBDT05GSUdfU0xVQl9TVEFUUyBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19CVUdWRVJCT1NFIGlzIG5vdCBzZXQKICMgQ09ORklHX1NBTVBMRVMgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0VBUkxZX0RFQlVHIGlzIG5vdCBzZXQKQEAgLTEwMDMsNiArMTAzMiw3IEBACiBDT05GSUdfQ1JZUFRPPXkKIENPTkZJR19DUllQVE9fQUxHQVBJPXkKIENPTkZJR19DUllQVE9fQkxLQ0lQSEVSPXkKKyMgQ09ORklHX0NSWVBUT19TRVFJViBpcyBub3Qgc2V0CiBDT05GSUdfQ1JZUFRPX01BTkFHRVI9eQogIyBDT05GSUdfQ1JZUFRPX0hNQUMgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX1hDQkMgaXMgbm90IHNldApAQCAtMTAyMCw2ICsxMDUwLDkgQEAKIENPTkZJR19DUllQVE9fUENCQz1tCiAjIENPTkZJR19DUllQVE9fTFJXIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19YVFMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NUUiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fR0NNIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DQ00gaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0NSWVBURCBpcyBub3Qgc2V0CiBDT05GSUdfQ1JZUFRPX0RFUz15CiAjIENPTkZJR19DUllQVE9fRkNSWVBUIGlzIG5vdCBzZXQKQEAgLTEwMzQsMTIgKzEwNjcsMTUgQEAKICMgQ09ORklHX0NSWVBUT19LSEFaQUQgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0FOVUJJUyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fU0VFRCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0FMU0EyMCBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fREVGTEFURSBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fTUlDSEFFTF9NSUMgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0NSQzMyQyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fQ0FNRUxMSUEgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX1RFU1QgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0FVVEhFTkMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0xaTyBpcyBub3Qgc2V0CiBDT05GSUdfQ1JZUFRPX0hXPXkKKyMgQ09ORklHX0NSWVBUT19ERVZfSElGTl83OTVYIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19DTE9DSyBpcyBub3Qgc2V0CiBDT05GSUdfUFBDX0xJQl9SSEVBUD15CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM4MzJ4X3JkYl9kZWZjb25maWcgYi9hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM4MzJ4X3JkYl9kZWZjb25maWcKaW5kZXggNzYxNzE4YS4uYWM5MTMwMiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODMyeF9yZGJfZGVmY29uZmlnCisrKyBiL2FyY2gvcG93ZXJwYy9jb25maWdzL21wYzgzMnhfcmRiX2RlZmNvbmZpZwpAQCAtMSw3ICsxLDcgQEAKICMKICMgQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgbWFrZSBjb25maWc6IGRvbid0IGVkaXQKLSMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4yNC1yYzQKLSMgVGh1IERlYyAgNiAxNjo0ODozNSAyMDA3CisjIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMjUtcmM2CisjIE1vbiBNYXIgMjQgMDg6NDg6MTYgMjAwOAogIwogIyBDT05GSUdfUFBDNjQgaXMgbm90IHNldAogCkBAIC0xNCw4ICsxNCw4IEBACiAjIENPTkZJR180MHggaXMgbm90IHNldAogIyBDT05GSUdfNDR4IGlzIG5vdCBzZXQKICMgQ09ORklHX0UyMDAgaXMgbm90IHNldAotQ09ORklHXzgzeHg9eQogQ09ORklHX1BQQ19GUFU9eQorIyBDT05GSUdfRlNMX0VNQl9QRVJGTU9OIGlzIG5vdCBzZXQKIENPTkZJR19QUENfU1REX01NVT15CiBDT05GSUdfUFBDX1NURF9NTVVfMzI9eQogIyBDT05GSUdfUFBDX01NX1NMSUNFUyBpcyBub3Qgc2V0CkBAIC0yOSw2ICsyOSw3IEBACiBDT05GSUdfR0VORVJJQ19USU1FX1ZTWVNDQUxMPXkKIENPTkZJR19HRU5FUklDX0NMT0NLRVZFTlRTPXkKIENPTkZJR19HRU5FUklDX0hBUkRJUlFTPXkKKyMgQ09ORklHX0hBVkVfU0VUVVBfUEVSX0NQVV9BUkVBIGlzIG5vdCBzZXQKIENPTkZJR19JUlFfUEVSX0NQVT15CiBDT05GSUdfUldTRU1fWENIR0FERF9BTEdPUklUSE09eQogQ09ORklHX0FSQ0hfSEFTX0lMT0cyX1UzMj15CkBAIC02NiwxNSArNjcsMTkgQEAKICMgQ09ORklHX1BPU0lYX01RVUVVRSBpcyBub3Qgc2V0CiAjIENPTkZJR19CU0RfUFJPQ0VTU19BQ0NUIGlzIG5vdCBzZXQKICMgQ09ORklHX1RBU0tTVEFUUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19VU0VSX05TIGlzIG5vdCBzZXQKLSMgQ09ORklHX1BJRF9OUyBpcyBub3Qgc2V0CiAjIENPTkZJR19BVURJVCBpcyBub3Qgc2V0CiAjIENPTkZJR19JS0NPTkZJRyBpcyBub3Qgc2V0CiBDT05GSUdfTE9HX0JVRl9TSElGVD0xNAogIyBDT05GSUdfQ0dST1VQUyBpcyBub3Qgc2V0CitDT05GSUdfR1JPVVBfU0NIRUQ9eQogIyBDT05GSUdfRkFJUl9HUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CisjIENPTkZJR19SVF9HUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CitDT05GSUdfVVNFUl9TQ0hFRD15CisjIENPTkZJR19DR1JPVVBfU0NIRUQgaXMgbm90IHNldAogQ09ORklHX1NZU0ZTX0RFUFJFQ0FURUQ9eQorQ09ORklHX1NZU0ZTX0RFUFJFQ0FURURfVjI9eQogIyBDT05GSUdfUkVMQVkgaXMgbm90IHNldAorIyBDT05GSUdfTkFNRVNQQUNFUyBpcyBub3Qgc2V0CiBDT05GSUdfQkxLX0RFVl9JTklUUkQ9eQogQ09ORklHX0lOSVRSQU1GU19TT1VSQ0U9IiIKICMgQ09ORklHX0NDX09QVElNSVpFX0ZPUl9TSVpFIGlzIG5vdCBzZXQKQEAgLTg2LDExICs5MSwxMyBAQAogQ09ORklHX1BSSU5USz15CiBDT05GSUdfQlVHPXkKIENPTkZJR19FTEZfQ09SRT15CitDT05GSUdfQ09NUEFUX0JSSz15CiBDT05GSUdfQkFTRV9GVUxMPXkKIENPTkZJR19GVVRFWD15CiBDT05GSUdfQU5PTl9JTk9ERVM9eQogIyBDT05GSUdfRVBPTEwgaXMgbm90IHNldAogQ09ORklHX1NJR05BTEZEPXkKK0NPTkZJR19USU1FUkZEPXkKIENPTkZJR19FVkVOVEZEPXkKIENPTkZJR19TSE1FTT15CiBDT05GSUdfVk1fRVZFTlRfQ09VTlRFUlM9eQpAQCAtOTgsNiArMTA1LDEzIEBACiAjIENPTkZJR19TTEFCIGlzIG5vdCBzZXQKIENPTkZJR19TTFVCPXkKICMgQ09ORklHX1NMT0IgaXMgbm90IHNldAorIyBDT05GSUdfUFJPRklMSU5HIGlzIG5vdCBzZXQKKyMgQ09ORklHX01BUktFUlMgaXMgbm90IHNldAorQ09ORklHX0hBVkVfT1BST0ZJTEU9eQorQ09ORklHX0hBVkVfS1BST0JFUz15CitDT05GSUdfSEFWRV9LUkVUUFJPQkVTPXkKK0NPTkZJR19QUk9DX1BBR0VfTU9OSVRPUj15CitDT05GSUdfU0xBQklORk89eQogQ09ORklHX1JUX01VVEVYRVM9eQogIyBDT05GSUdfVElOWV9TSE1FTSBpcyBub3Qgc2V0CiBDT05GSUdfQkFTRV9TTUFMTD0wCkBAIC0xMjUsNiArMTM5LDcgQEAKICMgQ09ORklHX0RFRkFVTFRfQ0ZRIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFRkFVTFRfTk9PUCBpcyBub3Qgc2V0CiBDT05GSUdfREVGQVVMVF9JT1NDSEVEPSJhbnRpY2lwYXRvcnkiCitDT05GSUdfQ0xBU1NJQ19SQ1U9eQogCiAjCiAjIFBsYXRmb3JtIHN1cHBvcnQKQEAgLTEzMywxOCArMTQ4LDIzIEBACiAjIENPTkZJR19QUENfODJ4eCBpcyBub3Qgc2V0CiBDT05GSUdfUFBDXzgzeHg9eQogIyBDT05GSUdfUFBDXzg2eHggaXMgbm90IHNldAotIyBDT05GSUdfUFBDX01QQzUyeHggaXMgbm90IHNldAotIyBDT05GSUdfUFBDX01QQzUyMDAgaXMgbm90IHNldAorIyBDT05GSUdfUFBDX01QQzUxMnggaXMgbm90IHNldAorIyBDT05GSUdfUFBDX01QQzUxMjEgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0NFTEwgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0NFTExfTkFUSVZFIGlzIG5vdCBzZXQKICMgQ09ORklHX1BRMkFEUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19NUEM4MzEzX1JEQiBpcyBub3Qgc2V0CitDT05GSUdfTVBDODN4eD15CisjIENPTkZJR19NUEM4MzF4X1JEQiBpcyBub3Qgc2V0CiAjIENPTkZJR19NUEM4MzJ4X01EUyBpcyBub3Qgc2V0CiBDT05GSUdfTVBDODMyeF9SREI9eQogIyBDT05GSUdfTVBDODM0eF9NRFMgaXMgbm90IHNldAogIyBDT05GSUdfTVBDODM0eF9JVFggaXMgbm90IHNldAogIyBDT05GSUdfTVBDODM2eF9NRFMgaXMgbm90IHNldAorIyBDT05GSUdfTVBDODM3eF9NRFMgaXMgbm90IHNldAorIyBDT05GSUdfTVBDODM3eF9SREIgaXMgbm90IHNldAorIyBDT05GSUdfU0JDODM0eCBpcyBub3Qgc2V0CiBDT05GSUdfUFBDX01QQzgzMng9eQorQ09ORklHX0lQSUM9eQogIyBDT05GSUdfTVBJQyBpcyBub3Qgc2V0CiAjIENPTkZJR19NUElDX1dFSVJEIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19JODI1OSBpcyBub3Qgc2V0CkBAIC0xNTYsNyArMTc2LDYgQEAKICMgQ09ORklHX0dFTkVSSUNfSU9NQVAgaXMgbm90IHNldAogIyBDT05GSUdfQ1BVX0ZSRVEgaXMgbm90IHNldAogQ09ORklHX1FVSUNDX0VOR0lORT15Ci0jIENPTkZJR19DUE0yIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZTTF9VTEkxNTc1IGlzIG5vdCBzZXQKIAogIwpAQCAtMTcyLDEzICsxOTEsMTcgQEAKICMgQ09ORklHX0haXzMwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19IWl8xMDAwIGlzIG5vdCBzZXQKIENPTkZJR19IWj0yNTAKKyMgQ09ORklHX1NDSEVEX0hSVElDSyBpcyBub3Qgc2V0CiBDT05GSUdfUFJFRU1QVF9OT05FPXkKICMgQ09ORklHX1BSRUVNUFRfVk9MVU5UQVJZIGlzIG5vdCBzZXQKICMgQ09ORklHX1BSRUVNUFQgaXMgbm90IHNldAogQ09ORklHX0JJTkZNVF9FTEY9eQogIyBDT05GSUdfQklORk1UX01JU0MgaXMgbm90IHNldAogQ09ORklHX01BVEhfRU1VTEFUSU9OPXkKKyMgQ09ORklHX0lPTU1VX0hFTFBFUiBpcyBub3Qgc2V0CiBDT05GSUdfQVJDSF9FTkFCTEVfTUVNT1JZX0hPVFBMVUc9eQorQ09ORklHX0FSQ0hfSEFTX1dBTEtfTUVNT1JZPXkKK0NPTkZJR19BUkNIX0VOQUJMRV9NRU1PUllfSE9UUkVNT1ZFPXkKIENPTkZJR19BUkNIX0ZMQVRNRU1fRU5BQkxFPXkKIENPTkZJR19BUkNIX1BPUFVMQVRFU19OT0RFX01BUD15CiBDT05GSUdfU0VMRUNUX01FTU9SWV9NT0RFTD15CkBAIC0xOTcsMTEgKzIyMCw3IEBACiBDT05GSUdfUFJPQ19ERVZJQ0VUUkVFPXkKICMgQ09ORklHX0NNRExJTkVfQk9PTCBpcyBub3Qgc2V0CiAjIENPTkZJR19QTSBpcyBub3Qgc2V0Ci1DT05GSUdfU1VTUEVORF9VUF9QT1NTSUJMRT15Ci1DT05GSUdfSElCRVJOQVRJT05fVVBfUE9TU0lCTEU9eQogQ09ORklHX1NFQ0NPTVA9eQotQ09ORklHX1dBTlRfREVWSUNFX1RSRUU9eQotQ09ORklHX0RFVklDRV9UUkVFPSIiCiBDT05GSUdfSVNBX0RNQV9BUEk9eQogCiAjCkBAIC0yNTAsNiArMjY5LDcgQEAKICMgQ09ORklHX1hGUk1fVVNFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19YRlJNX1NVQl9QT0xJQ1kgaXMgbm90IHNldAogIyBDT05GSUdfWEZSTV9NSUdSQVRFIGlzIG5vdCBzZXQKKyMgQ09ORklHX1hGUk1fU1RBVElTVElDUyBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRfS0VZIGlzIG5vdCBzZXQKIENPTkZJR19JTkVUPXkKIENPTkZJR19JUF9NVUxUSUNBU1Q9eQpAQCAtMzA1LDYgKzMyNSw3IEBACiAjCiAjIENPTkZJR19ORVRfUEtUR0VOIGlzIG5vdCBzZXQKICMgQ09ORklHX0hBTVJBRElPIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NBTiBpcyBub3Qgc2V0CiAjIENPTkZJR19JUkRBIGlzIG5vdCBzZXQKICMgQ09ORklHX0JUIGlzIG5vdCBzZXQKICMgQ09ORklHX0FGX1JYUlBDIGlzIG5vdCBzZXQKQEAgLTM1MCw3ICszNzEsNyBAQAogQ09ORklHX0JMS19ERVZfUkFNPXkKIENPTkZJR19CTEtfREVWX1JBTV9DT1VOVD0xNgogQ09ORklHX0JMS19ERVZfUkFNX1NJWkU9MzI3NjgKLUNPTkZJR19CTEtfREVWX1JBTV9CTE9DS1NJWkU9MTAyNAorIyBDT05GSUdfQkxLX0RFVl9YSVAgaXMgbm90IHNldAogIyBDT05GSUdfQ0RST01fUEtUQ0RWRCBpcyBub3Qgc2V0CiAjIENPTkZJR19BVEFfT1ZFUl9FVEggaXMgbm90IHNldAogQ09ORklHX01JU0NfREVWSUNFUz15CkBAIC0zNTgsNiArMzc5LDggQEAKICMgQ09ORklHX0VFUFJPTV85M0NYNiBpcyBub3Qgc2V0CiAjIENPTkZJR19TR0lfSU9DNCBpcyBub3Qgc2V0CiAjIENPTkZJR19USUZNX0NPUkUgaXMgbm90IHNldAorIyBDT05GSUdfRU5DTE9TVVJFX1NFUlZJQ0VTIGlzIG5vdCBzZXQKK0NPTkZJR19IQVZFX0lERT15CiAjIENPTkZJR19JREUgaXMgbm90IHNldAogCiAjCkBAIC00MjIsNiArNDQ1LDcgQEAKICMgQ09ORklHX1NDU0lfSVBTIGlzIG5vdCBzZXQKICMgQ09ORklHX1NDU0lfSU5JVElPIGlzIG5vdCBzZXQKICMgQ09ORklHX1NDU0lfSU5JQTEwMCBpcyBub3Qgc2V0CisjIENPTkZJR19TQ1NJX01WU0FTIGlzIG5vdCBzZXQKICMgQ09ORklHX1NDU0lfU1RFWCBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX1NZTTUzQzhYWF8yIGlzIG5vdCBzZXQKICMgQ09ORklHX1NDU0lfUUxPR0lDXzEyODAgaXMgbm90IHNldApAQCAtNDUyLDcgKzQ3Niw2IEBACiAjIENPTkZJR19FUVVBTElaRVIgaXMgbm90IHNldAogIyBDT05GSUdfVFVOIGlzIG5vdCBzZXQKICMgQ09ORklHX1ZFVEggaXMgbm90IHNldAotIyBDT05GSUdfSVAxMDAwIGlzIG5vdCBzZXQKICMgQ09ORklHX0FSQ05FVCBpcyBub3Qgc2V0CiBDT05GSUdfUEhZTElCPXkKIApAQCAtNDY4LDYgKzQ5MSw3IEBACiAjIENPTkZJR19TTVNDX1BIWSBpcyBub3Qgc2V0CiAjIENPTkZJR19CUk9BRENPTV9QSFkgaXMgbm90IHNldAogQ09ORklHX0lDUExVU19QSFk9eQorIyBDT05GSUdfUkVBTFRFS19QSFkgaXMgbm90IHNldAogIyBDT05GSUdfRklYRURfUEhZIGlzIG5vdCBzZXQKICMgQ09ORklHX01ESU9fQklUQkFORyBpcyBub3Qgc2V0CiBDT05GSUdfTkVUX0VUSEVSTkVUPXkKQEAgLTQ3Niw2ICs1MDAsNyBAQAogIyBDT05GSUdfU1VOR0VNIGlzIG5vdCBzZXQKICMgQ09ORklHX0NBU1NJTkkgaXMgbm90IHNldAogIyBDT05GSUdfTkVUX1ZFTkRPUl8zQ09NIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VOQzI4SjYwIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9UVUxJUCBpcyBub3Qgc2V0CiAjIENPTkZJR19IUDEwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19JQk1fTkVXX0VNQUNfWk1JSSBpcyBub3Qgc2V0CkBAIC00OTEsNiArNTE2LDkgQEAKICMgQ09ORklHX0UxMDAwX05BUEkgaXMgbm90IHNldAogIyBDT05GSUdfRTEwMDBfRElTQUJMRV9QQUNLRVRfU1BMSVQgaXMgbm90IHNldAogIyBDT05GSUdfRTEwMDBFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0UxMDAwRV9FTkFCTEVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lQMTAwMCBpcyBub3Qgc2V0CisjIENPTkZJR19JR0IgaXMgbm90IHNldAogIyBDT05GSUdfTlM4MzgyMCBpcyBub3Qgc2V0CiAjIENPTkZJR19IQU1BQ0hJIGlzIG5vdCBzZXQKICMgQ09ORklHX1lFTExPV0ZJTiBpcyBub3Qgc2V0CkBAIC01MjEsNiArNTQ5LDcgQEAKICMgQ09ORklHX05JVSBpcyBub3Qgc2V0CiAjIENPTkZJR19NTFg0X0NPUkUgaXMgbm90IHNldAogIyBDT05GSUdfVEVIVVRJIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JOWDJYIGlzIG5vdCBzZXQKICMgQ09ORklHX1RSIGlzIG5vdCBzZXQKIAogIwpAQCAtNTQzLDcgKzU3Miw2IEBACiAjIENPTkZJR19QUFAgaXMgbm90IHNldAogIyBDT05GSUdfU0xJUCBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRfRkMgaXMgbm90IHNldAotIyBDT05GSUdfU0hBUEVSIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVENPTlNPTEUgaXMgbm90IHNldAogIyBDT05GSUdfTkVUUE9MTCBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRfUE9MTF9DT05UUk9MTEVSIGlzIG5vdCBzZXQKQEAgLTU4Niw2ICs2MTQsNyBAQAogIwogIyBDT05GSUdfVlQgaXMgbm90IHNldAogIyBDT05GSUdfU0VSSUFMX05PTlNUQU5EQVJEIGlzIG5vdCBzZXQKKyMgQ09ORklHX05PWk9NSSBpcyBub3Qgc2V0CiAKICMKICMgU2VyaWFsIGRyaXZlcnMKQEAgLTYwNSw2ICs2MzQsNyBAQAogQ09ORklHX1NFUklBTF9DT1JFX0NPTlNPTEU9eQogIyBDT05GSUdfU0VSSUFMX0pTTSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRVJJQUxfT0ZfUExBVEZPUk0gaXMgbm90IHNldAorIyBDT05GSUdfU0VSSUFMX1FFIGlzIG5vdCBzZXQKIENPTkZJR19VTklYOThfUFRZUz15CiBDT05GSUdfTEVHQUNZX1BUWVM9eQogQ09ORklHX0xFR0FDWV9QVFlfQ09VTlQ9MjU2CkBAIC02NjAsMTQgKzY5MCwxMiBAQAogIwogIyBNaXNjZWxsYW5lb3VzIEkyQyBDaGlwIHN1cHBvcnQKICMKLSMgQ09ORklHX1NFTlNPUlNfRFMxMzM3IGlzIG5vdCBzZXQKLSMgQ09ORklHX1NFTlNPUlNfRFMxMzc0IGlzIG5vdCBzZXQKICMgQ09ORklHX0RTMTY4MiBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0VFUFJPTSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1BDRjg1NzQgaXMgbm90IHNldAotIyBDT05GSUdfU0VOU09SU19QQ0E5NTM5IGlzIG5vdCBzZXQKKyMgQ09ORklHX1BDRjg1NzUgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19QQ0Y4NTkxIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NFTlNPUlNfTTQxVDAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RQUzY1MDEwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfTUFYNjg3NSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1RTTDI1NTAgaXMgbm90IHNldAogIyBDT05GSUdfSTJDX0RFQlVHX0NPUkUgaXMgbm90IHNldApAQCAtNzA1LDYgKzczMyw3IEBACiAjIENPTkZJR19TRU5TT1JTX0FETTEwMzEgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19BRE05MjQwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfQURUNzQ3MCBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX0FEVDc0NzMgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19BVFhQMSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0RTMTYyMSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0k1S19BTUIgaXMgbm90IHNldApAQCAtNzM1LDYgKzc2NCw3IEBACiAjIENPTkZJR19TRU5TT1JTX1NNU0M0N00xIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfU01TQzQ3TTE5MiBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1NNU0M0N0IzOTcgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19BRFM3ODI4IGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVEhNQzUwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVklBNjg2QSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1ZUMTIxMSBpcyBub3Qgc2V0CkBAIC03NDQsOSArNzc0LDExIEBACiAjIENPTkZJR19TRU5TT1JTX1c4Mzc5MkQgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19XODM3OTMgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19XODNMNzg1VFMgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19XODNMNzg2TkcgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19XODM2MjdIRiBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1c4MzYyN0VIRiBpcyBub3Qgc2V0CiAjIENPTkZJR19IV01PTl9ERUJVR19DSElQIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RIRVJNQUwgaXMgbm90IHNldAogQ09ORklHX1dBVENIRE9HPXkKICMgQ09ORklHX1dBVENIRE9HX05PV0FZT1VUIGlzIG5vdCBzZXQKIApAQCAtODI2LDYgKzg1OCw3IEBACiBDT05GSUdfVVNCX0FSQ0hfSEFTX0VIQ0k9eQogQ09ORklHX1VTQj15CiAjIENPTkZJR19VU0JfREVCVUcgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX0FOTk9VTkNFX05FV19ERVZJQ0VTIGlzIG5vdCBzZXQKIAogIwogIyBNaXNjZWxsYW5lb3VzIFVTQiBvcHRpb25zCkBAIC04MzksOSArODcyLDEwIEBACiAjIFVTQiBIb3N0IENvbnRyb2xsZXIgRHJpdmVycwogIwogQ09ORklHX1VTQl9FSENJX0hDRD15Ci0jIENPTkZJR19VU0JfRUhDSV9TUExJVF9JU08gaXMgbm90IHNldAogIyBDT05GSUdfVVNCX0VIQ0lfUk9PVF9IVUJfVFQgaXMgbm90IHNldAogIyBDT05GSUdfVVNCX0VIQ0lfVFRfTkVXU0NIRUQgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX0VIQ0lfRlNMIGlzIG5vdCBzZXQKK0NPTkZJR19VU0JfRUhDSV9IQ0RfUFBDX09GPXkKICMgQ09ORklHX1VTQl9JU1AxMTZYX0hDRCBpcyBub3Qgc2V0CiBDT05GSUdfVVNCX09IQ0lfSENEPXkKIENPTkZJR19VU0JfT0hDSV9IQ0RfUFBDX09GPXkKQEAgLTg5MiwxMCArOTI2LDYgQEAKICMKICMgVVNCIHBvcnQgZHJpdmVycwogIwotCi0jCi0jIFVTQiBTZXJpYWwgQ29udmVydGVyIHN1cHBvcnQKLSMKICMgQ09ORklHX1VTQl9TRVJJQUwgaXMgbm90IHNldAogCiAjCkBAIC05MjEsMTQgKzk1MSw2IEBACiAjIENPTkZJR19VU0JfVFJBTkNFVklCUkFUT1IgaXMgbm90IHNldAogIyBDT05GSUdfVVNCX0lPV0FSUklPUiBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfVEVTVCBpcyBub3Qgc2V0Ci0KLSMKLSMgVVNCIERTTCBtb2RlbSBzdXBwb3J0Ci0jCi0KLSMKLSMgVVNCIEdhZGdldCBTdXBwb3J0Ci0jCiAjIENPTkZJR19VU0JfR0FER0VUIGlzIG5vdCBzZXQKIENPTkZJR19NTUM9eQogIyBDT05GSUdfTU1DX0RFQlVHIGlzIG5vdCBzZXQKQEAgLTk0OCwxMCArOTcwLDEyIEBACiAjIENPTkZJR19NTUNfV0JTRCBpcyBub3Qgc2V0CiAjIENPTkZJR19NTUNfVElGTV9TRCBpcyBub3Qgc2V0CiBDT05GSUdfTU1DX1NQST15CisjIENPTkZJR19NRU1TVElDSyBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVdfTEVEUyBpcyBub3Qgc2V0CiAjIENPTkZJR19JTkZJTklCQU5EIGlzIG5vdCBzZXQKICMgQ09ORklHX0VEQUMgaXMgbm90IHNldAogIyBDT05GSUdfUlRDX0NMQVNTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RNQURFVklDRVMgaXMgbm90IHNldAogCiAjCiAjIFVzZXJzcGFjZSBJL08KQEAgLTk3NywxMiArMTAwMSwxMCBAQAogIyBDT05GSUdfWEZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0dGUzJfRlMgaXMgbm90IHNldAogIyBDT05GSUdfT0NGUzJfRlMgaXMgbm90IHNldAotIyBDT05GSUdfTUlOSVhfRlMgaXMgbm90IHNldAotIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAorQ09ORklHX0ROT1RJRlk9eQogQ09ORklHX0lOT1RJRlk9eQogQ09ORklHX0lOT1RJRllfVVNFUj15CiAjIENPTkZJR19RVU9UQSBpcyBub3Qgc2V0Ci1DT05GSUdfRE5PVElGWT15CiAjIENPTkZJR19BVVRPRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfQVVUT0ZTNF9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19GVVNFX0ZTIGlzIG5vdCBzZXQKQEAgLTEwMjcsOCArMTA0OSwxMCBAQAogIyBDT05GSUdfRUZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSQU1GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19WWEZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX01JTklYX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0hQRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfUU5YNEZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JPTUZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1NZU1ZfRlMgaXMgbm90IHNldAogIyBDT05GSUdfVUZTX0ZTIGlzIG5vdCBzZXQKIENPTkZJR19ORVRXT1JLX0ZJTEVTWVNURU1TPXkKQEAgLTExMTYsNyArMTE0MCw2IEBACiAjIENPTkZJR19OTFNfS09JOF9VIGlzIG5vdCBzZXQKICMgQ09ORklHX05MU19VVEY4IGlzIG5vdCBzZXQKICMgQ09ORklHX0RMTSBpcyBub3Qgc2V0Ci0jIENPTkZJR19VQ0NfU0xPVyBpcyBub3Qgc2V0CiBDT05GSUdfVUNDX0ZBU1Q9eQogQ09ORklHX1VDQz15CiAKQEAgLTExMzQsNyArMTE1Nyw2IEBACiBDT05GSUdfSEFTX0lPTUVNPXkKIENPTkZJR19IQVNfSU9QT1JUPXkKIENPTkZJR19IQVNfRE1BPXkKLSMgQ09ORklHX0lOU1RSVU1FTlRBVElPTiBpcyBub3Qgc2V0CiAKICMKICMgS2VybmVsIGhhY2tpbmcKQEAgLTExNDgsNiArMTE3MCw3IEBACiAjIENPTkZJR19IRUFERVJTX0NIRUNLIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX0tFUk5FTCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTFVCX0RFQlVHX09OIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NMVUJfU1RBVFMgaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfQlVHVkVSQk9TRSBpcyBub3Qgc2V0CiAjIENPTkZJR19TQU1QTEVTIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19FQVJMWV9ERUJVRyBpcyBub3Qgc2V0CkBAIC0xMTYxLDYgKzExODQsNyBAQAogQ09ORklHX0NSWVBUTz15CiBDT05GSUdfQ1JZUFRPX0FMR0FQST15CiBDT05GSUdfQ1JZUFRPX0JMS0NJUEhFUj15CisjIENPTkZJR19DUllQVE9fU0VRSVYgaXMgbm90IHNldAogQ09ORklHX0NSWVBUT19NQU5BR0VSPXkKICMgQ09ORklHX0NSWVBUT19ITUFDIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19YQ0JDIGlzIG5vdCBzZXQKQEAgLTExNzgsNiArMTIwMiw5IEBACiBDT05GSUdfQ1JZUFRPX1BDQkM9bQogIyBDT05GSUdfQ1JZUFRPX0xSVyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fWFRTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DVFIgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0dDTSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ0NNIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19DUllQVEQgaXMgbm90IHNldAogQ09ORklHX0NSWVBUT19ERVM9eQogIyBDT05GSUdfQ1JZUFRPX0ZDUllQVCBpcyBub3Qgc2V0CkBAIC0xMTkyLDEyICsxMjE5LDE1IEBACiAjIENPTkZJR19DUllQVE9fS0hBWkFEIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19BTlVCSVMgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX1NFRUQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1NBTFNBMjAgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0RFRkxBVEUgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX01JQ0hBRUxfTUlDIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19DUkMzMkMgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0NBTUVMTElBIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19URVNUIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19BVVRIRU5DIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19MWk8gaXMgbm90IHNldAogQ09ORklHX0NSWVBUT19IVz15CisjIENPTkZJR19DUllQVE9fREVWX0hJRk5fNzk1WCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfQ0xPQ0sgaXMgbm90IHNldAogQ09ORklHX1BQQ19MSUJfUkhFQVA9eQpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODM0eF9pdHhfZGVmY29uZmlnIGIvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODM0eF9pdHhfZGVmY29uZmlnCmluZGV4IDJmYmU0ZTUuLmUxZGUzOTkgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jb25maWdzL21wYzgzNHhfaXR4X2RlZmNvbmZpZworKysgYi9hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM4MzR4X2l0eF9kZWZjb25maWcKQEAgLTEsNyArMSw3IEBACiAjCiAjIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIG1ha2UgY29uZmlnOiBkb24ndCBlZGl0Ci0jIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMjQtcmM0Ci0jIFRodSBEZWMgIDYgMTY6NDg6MzcgMjAwNworIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjI1LXJjNgorIyBNb24gTWFyIDI0IDA4OjQ4OjE3IDIwMDgKICMKICMgQ09ORklHX1BQQzY0IGlzIG5vdCBzZXQKIApAQCAtMTQsOCArMTQsOCBAQAogIyBDT05GSUdfNDB4IGlzIG5vdCBzZXQKICMgQ09ORklHXzQ0eCBpcyBub3Qgc2V0CiAjIENPTkZJR19FMjAwIGlzIG5vdCBzZXQKLUNPTkZJR184M3h4PXkKIENPTkZJR19QUENfRlBVPXkKKyMgQ09ORklHX0ZTTF9FTUJfUEVSRk1PTiBpcyBub3Qgc2V0CiBDT05GSUdfUFBDX1NURF9NTVU9eQogQ09ORklHX1BQQ19TVERfTU1VXzMyPXkKICMgQ09ORklHX1BQQ19NTV9TTElDRVMgaXMgbm90IHNldApAQCAtMjksNiArMjksNyBAQAogQ09ORklHX0dFTkVSSUNfVElNRV9WU1lTQ0FMTD15CiBDT05GSUdfR0VORVJJQ19DTE9DS0VWRU5UUz15CiBDT05GSUdfR0VORVJJQ19IQVJESVJRUz15CisjIENPTkZJR19IQVZFX1NFVFVQX1BFUl9DUFVfQVJFQSBpcyBub3Qgc2V0CiBDT05GSUdfSVJRX1BFUl9DUFU9eQogQ09ORklHX1JXU0VNX1hDSEdBRERfQUxHT1JJVEhNPXkKIENPTkZJR19BUkNIX0hBU19JTE9HMl9VMzI9eQpAQCAtNjYsMTUgKzY3LDE5IEBACiAjIENPTkZJR19QT1NJWF9NUVVFVUUgaXMgbm90IHNldAogIyBDT05GSUdfQlNEX1BST0NFU1NfQUNDVCBpcyBub3Qgc2V0CiAjIENPTkZJR19UQVNLU1RBVFMgaXMgbm90IHNldAotIyBDT05GSUdfVVNFUl9OUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19QSURfTlMgaXMgbm90IHNldAogIyBDT05GSUdfQVVESVQgaXMgbm90IHNldAogIyBDT05GSUdfSUtDT05GSUcgaXMgbm90IHNldAogQ09ORklHX0xPR19CVUZfU0hJRlQ9MTQKICMgQ09ORklHX0NHUk9VUFMgaXMgbm90IHNldAorQ09ORklHX0dST1VQX1NDSEVEPXkKICMgQ09ORklHX0ZBSVJfR1JPVVBfU0NIRUQgaXMgbm90IHNldAorIyBDT05GSUdfUlRfR1JPVVBfU0NIRUQgaXMgbm90IHNldAorQ09ORklHX1VTRVJfU0NIRUQ9eQorIyBDT05GSUdfQ0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKIENPTkZJR19TWVNGU19ERVBSRUNBVEVEPXkKK0NPTkZJR19TWVNGU19ERVBSRUNBVEVEX1YyPXkKICMgQ09ORklHX1JFTEFZIGlzIG5vdCBzZXQKKyMgQ09ORklHX05BTUVTUEFDRVMgaXMgbm90IHNldAogQ09ORklHX0JMS19ERVZfSU5JVFJEPXkKIENPTkZJR19JTklUUkFNRlNfU09VUkNFPSIiCiAjIENPTkZJR19DQ19PUFRJTUlaRV9GT1JfU0laRSBpcyBub3Qgc2V0CkBAIC04NiwxMSArOTEsMTMgQEAKIENPTkZJR19QUklOVEs9eQogQ09ORklHX0JVRz15CiBDT05GSUdfRUxGX0NPUkU9eQorQ09ORklHX0NPTVBBVF9CUks9eQogQ09ORklHX0JBU0VfRlVMTD15CiBDT05GSUdfRlVURVg9eQogQ09ORklHX0FOT05fSU5PREVTPXkKICMgQ09ORklHX0VQT0xMIGlzIG5vdCBzZXQKIENPTkZJR19TSUdOQUxGRD15CitDT05GSUdfVElNRVJGRD15CiBDT05GSUdfRVZFTlRGRD15CiBDT05GSUdfU0hNRU09eQogQ09ORklHX1ZNX0VWRU5UX0NPVU5URVJTPXkKQEAgLTk4LDYgKzEwNSwxMyBAQAogIyBDT05GSUdfU0xBQiBpcyBub3Qgc2V0CiBDT05GSUdfU0xVQj15CiAjIENPTkZJR19TTE9CIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BST0ZJTElORyBpcyBub3Qgc2V0CisjIENPTkZJR19NQVJLRVJTIGlzIG5vdCBzZXQKK0NPTkZJR19IQVZFX09QUk9GSUxFPXkKK0NPTkZJR19IQVZFX0tQUk9CRVM9eQorQ09ORklHX0hBVkVfS1JFVFBST0JFUz15CitDT05GSUdfUFJPQ19QQUdFX01PTklUT1I9eQorQ09ORklHX1NMQUJJTkZPPXkKIENPTkZJR19SVF9NVVRFWEVTPXkKICMgQ09ORklHX1RJTllfU0hNRU0gaXMgbm90IHNldAogQ09ORklHX0JBU0VfU01BTEw9MApAQCAtMTI1LDYgKzEzOSw3IEBACiAjIENPTkZJR19ERUZBVUxUX0NGUSBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUZBVUxUX05PT1AgaXMgbm90IHNldAogQ09ORklHX0RFRkFVTFRfSU9TQ0hFRD0iYW50aWNpcGF0b3J5IgorQ09ORklHX0NMQVNTSUNfUkNVPXkKIAogIwogIyBQbGF0Zm9ybSBzdXBwb3J0CkBAIC0xMzMsMTggKzE0OCwyMyBAQAogIyBDT05GSUdfUFBDXzgyeHggaXMgbm90IHNldAogQ09ORklHX1BQQ184M3h4PXkKICMgQ09ORklHX1BQQ184Nnh4IGlzIG5vdCBzZXQKLSMgQ09ORklHX1BQQ19NUEM1Mnh4IGlzIG5vdCBzZXQKLSMgQ09ORklHX1BQQ19NUEM1MjAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ19NUEM1MTJ4IGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ19NUEM1MTIxIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19DRUxMIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19DRUxMX05BVElWRSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUTJBRFMgaXMgbm90IHNldAotIyBDT05GSUdfTVBDODMxM19SREIgaXMgbm90IHNldAorQ09ORklHX01QQzgzeHg9eQorIyBDT05GSUdfTVBDODMxeF9SREIgaXMgbm90IHNldAogIyBDT05GSUdfTVBDODMyeF9NRFMgaXMgbm90IHNldAogIyBDT05GSUdfTVBDODMyeF9SREIgaXMgbm90IHNldAogIyBDT05GSUdfTVBDODM0eF9NRFMgaXMgbm90IHNldAogQ09ORklHX01QQzgzNHhfSVRYPXkKICMgQ09ORklHX01QQzgzNnhfTURTIGlzIG5vdCBzZXQKLUNPTkZJR19NUEM4MzR4PXkKKyMgQ09ORklHX01QQzgzN3hfTURTIGlzIG5vdCBzZXQKKyMgQ09ORklHX01QQzgzN3hfUkRCIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NCQzgzNHggaXMgbm90IHNldAorQ09ORklHX1BQQ19NUEM4MzR4PXkKK0NPTkZJR19JUElDPXkKICMgQ09ORklHX01QSUMgaXMgbm90IHNldAogIyBDT05GSUdfTVBJQ19XRUlSRCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfSTgyNTkgaXMgbm90IHNldApAQCAtMTU1LDcgKzE3NSw2IEBACiAjIENPTkZJR19QUENfSU5ESVJFQ1RfSU8gaXMgbm90IHNldAogIyBDT05GSUdfR0VORVJJQ19JT01BUCBpcyBub3Qgc2V0CiAjIENPTkZJR19DUFVfRlJFUSBpcyBub3Qgc2V0Ci0jIENPTkZJR19DUE0yIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZTTF9VTEkxNTc1IGlzIG5vdCBzZXQKIAogIwpAQCAtMTcxLDEyICsxOTAsMTYgQEAKICMgQ09ORklHX0haXzMwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19IWl8xMDAwIGlzIG5vdCBzZXQKIENPTkZJR19IWj0yNTAKKyMgQ09ORklHX1NDSEVEX0hSVElDSyBpcyBub3Qgc2V0CiBDT05GSUdfUFJFRU1QVF9OT05FPXkKICMgQ09ORklHX1BSRUVNUFRfVk9MVU5UQVJZIGlzIG5vdCBzZXQKICMgQ09ORklHX1BSRUVNUFQgaXMgbm90IHNldAogQ09ORklHX0JJTkZNVF9FTEY9eQogIyBDT05GSUdfQklORk1UX01JU0MgaXMgbm90IHNldAorIyBDT05GSUdfSU9NTVVfSEVMUEVSIGlzIG5vdCBzZXQKIENPTkZJR19BUkNIX0VOQUJMRV9NRU1PUllfSE9UUExVRz15CitDT05GSUdfQVJDSF9IQVNfV0FMS19NRU1PUlk9eQorQ09ORklHX0FSQ0hfRU5BQkxFX01FTU9SWV9IT1RSRU1PVkU9eQogQ09ORklHX0FSQ0hfRkxBVE1FTV9FTkFCTEU9eQogQ09ORklHX0FSQ0hfUE9QVUxBVEVTX05PREVfTUFQPXkKIENPTkZJR19TRUxFQ1RfTUVNT1JZX01PREVMPXkKQEAgLTE5NSwxMSArMjE4LDcgQEAKIENPTkZJR19QUk9DX0RFVklDRVRSRUU9eQogIyBDT05GSUdfQ01ETElORV9CT09MIGlzIG5vdCBzZXQKICMgQ09ORklHX1BNIGlzIG5vdCBzZXQKLUNPTkZJR19TVVNQRU5EX1VQX1BPU1NJQkxFPXkKLUNPTkZJR19ISUJFUk5BVElPTl9VUF9QT1NTSUJMRT15CiBDT05GSUdfU0VDQ09NUD15Ci1DT05GSUdfV0FOVF9ERVZJQ0VfVFJFRT15Ci1DT05GSUdfREVWSUNFX1RSRUU9IiIKIENPTkZJR19JU0FfRE1BX0FQST15CiAKICMKQEAgLTI0OCw2ICsyNjcsNyBAQAogIyBDT05GSUdfWEZSTV9VU0VSIGlzIG5vdCBzZXQKICMgQ09ORklHX1hGUk1fU1VCX1BPTElDWSBpcyBub3Qgc2V0CiAjIENPTkZJR19YRlJNX01JR1JBVEUgaXMgbm90IHNldAorIyBDT05GSUdfWEZSTV9TVEFUSVNUSUNTIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9LRVkgaXMgbm90IHNldAogQ09ORklHX0lORVQ9eQogQ09ORklHX0lQX01VTFRJQ0FTVD15CkBAIC0zMDMsNiArMzIzLDcgQEAKICMKICMgQ09ORklHX05FVF9QS1RHRU4gaXMgbm90IHNldAogIyBDT05GSUdfSEFNUkFESU8gaXMgbm90IHNldAorIyBDT05GSUdfQ0FOIGlzIG5vdCBzZXQKICMgQ09ORklHX0lSREEgaXMgbm90IHNldAogIyBDT05GSUdfQlQgaXMgbm90IHNldAogIyBDT05GSUdfQUZfUlhSUEMgaXMgbm90IHNldApAQCAtNDI3LDcgKzQ0OCw3IEBACiBDT05GSUdfQkxLX0RFVl9SQU09eQogQ09ORklHX0JMS19ERVZfUkFNX0NPVU5UPTE2CiBDT05GSUdfQkxLX0RFVl9SQU1fU0laRT0zMjc2OAotQ09ORklHX0JMS19ERVZfUkFNX0JMT0NLU0laRT0xMDI0CisjIENPTkZJR19CTEtfREVWX1hJUCBpcyBub3Qgc2V0CiAjIENPTkZJR19DRFJPTV9QS1RDRFZEIGlzIG5vdCBzZXQKICMgQ09ORklHX0FUQV9PVkVSX0VUSCBpcyBub3Qgc2V0CiBDT05GSUdfTUlTQ19ERVZJQ0VTPXkKQEAgLTQzNSw2ICs0NTYsOCBAQAogIyBDT05GSUdfRUVQUk9NXzkzQ1g2IGlzIG5vdCBzZXQKICMgQ09ORklHX1NHSV9JT0M0IGlzIG5vdCBzZXQKICMgQ09ORklHX1RJRk1fQ09SRSBpcyBub3Qgc2V0CisjIENPTkZJR19FTkNMT1NVUkVfU0VSVklDRVMgaXMgbm90IHNldAorQ09ORklHX0hBVkVfSURFPXkKIENPTkZJR19JREU9eQogQ09ORklHX0lERV9NQVhfSFdJRlM9NAogIyBDT05GSUdfQkxLX0RFVl9JREUgaXMgbm90IHNldApAQCAtNTAzLDYgKzUyNiw3IEBACiAjIENPTkZJR19TQ1NJX0lQUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX0lOSVRJTyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX0lOSUExMDAgaXMgbm90IHNldAorIyBDT05GSUdfU0NTSV9NVlNBUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX1NURVggaXMgbm90IHNldAogIyBDT05GSUdfU0NTSV9TWU01M0M4WFhfMiBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX0lQUiBpcyBub3Qgc2V0CkBAIC01MzMsNiArNTU3LDcgQEAKICMgQ09ORklHX1NBVEFfVklBIGlzIG5vdCBzZXQKICMgQ09ORklHX1NBVEFfVklURVNTRSBpcyBub3Qgc2V0CiAjIENPTkZJR19TQVRBX0lOSUMxNjJYIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NBVEFfRlNMIGlzIG5vdCBzZXQKICMgQ09ORklHX1BBVEFfQUxJIGlzIG5vdCBzZXQKICMgQ09ORklHX1BBVEFfQU1EIGlzIG5vdCBzZXQKICMgQ09ORklHX1BBVEFfQVJUT1AgaXMgbm90IHNldApAQCAtNTU2LDYgKzU4MSw3IEBACiAjIENPTkZJR19QQVRBX01QSUlYIGlzIG5vdCBzZXQKICMgQ09ORklHX1BBVEFfT0xEUElJWCBpcyBub3Qgc2V0CiAjIENPTkZJR19QQVRBX05FVENFTEwgaXMgbm90IHNldAorIyBDT05GSUdfUEFUQV9OSU5KQTMyIGlzIG5vdCBzZXQKICMgQ09ORklHX1BBVEFfTlM4NzQxMCBpcyBub3Qgc2V0CiAjIENPTkZJR19QQVRBX05TODc0MTUgaXMgbm90IHNldAogIyBDT05GSUdfUEFUQV9PUFRJIGlzIG5vdCBzZXQKQEAgLTU5OSw3ICs2MjUsNiBAQAogIyBDT05GSUdfRVFVQUxJWkVSIGlzIG5vdCBzZXQKICMgQ09ORklHX1RVTiBpcyBub3Qgc2V0CiAjIENPTkZJR19WRVRIIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lQMTAwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19BUkNORVQgaXMgbm90IHNldAogQ09ORklHX1BIWUxJQj15CiAKQEAgLTYxNSw2ICs2NDAsNyBAQAogIyBDT05GSUdfU01TQ19QSFkgaXMgbm90IHNldAogIyBDT05GSUdfQlJPQURDT01fUEhZIGlzIG5vdCBzZXQKICMgQ09ORklHX0lDUExVU19QSFkgaXMgbm90IHNldAorIyBDT05GSUdfUkVBTFRFS19QSFkgaXMgbm90IHNldAogIyBDT05GSUdfRklYRURfUEhZIGlzIG5vdCBzZXQKICMgQ09ORklHX01ESU9fQklUQkFORyBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRfRVRIRVJORVQgaXMgbm90IHNldApAQCAtNjIzLDYgKzY0OSw5IEBACiAjIENPTkZJR19ETDJLIGlzIG5vdCBzZXQKICMgQ09ORklHX0UxMDAwIGlzIG5vdCBzZXQKICMgQ09ORklHX0UxMDAwRSBpcyBub3Qgc2V0CisjIENPTkZJR19FMTAwMEVfRU5BQkxFRCBpcyBub3Qgc2V0CisjIENPTkZJR19JUDEwMDAgaXMgbm90IHNldAorIyBDT05GSUdfSUdCIGlzIG5vdCBzZXQKICMgQ09ORklHX05TODM4MjAgaXMgbm90IHNldAogIyBDT05GSUdfSEFNQUNISSBpcyBub3Qgc2V0CiAjIENPTkZJR19ZRUxMT1dGSU4gaXMgbm90IHNldApAQCAtNjQ5LDYgKzY3OCw3IEBACiAjIENPTkZJR19OSVUgaXMgbm90IHNldAogIyBDT05GSUdfTUxYNF9DT1JFIGlzIG5vdCBzZXQKICMgQ09ORklHX1RFSFVUSSBpcyBub3Qgc2V0CisjIENPTkZJR19CTlgyWCBpcyBub3Qgc2V0CiAjIENPTkZJR19UUiBpcyBub3Qgc2V0CiAKICMKQEAgLTY3MSw3ICs3MDEsNiBAQAogIyBDT05GSUdfUFBQIGlzIG5vdCBzZXQKICMgQ09ORklHX1NMSVAgaXMgbm90IHNldAogIyBDT05GSUdfTkVUX0ZDIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NIQVBFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRDT05TT0xFIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVFBPTEwgaXMgbm90IHNldAogIyBDT05GSUdfTkVUX1BPTExfQ09OVFJPTExFUiBpcyBub3Qgc2V0CkBAIC02OTQsNiArNzIzLDcgQEAKICMKICMgQ09ORklHX1ZUIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFUklBTF9OT05TVEFOREFSRCBpcyBub3Qgc2V0CisjIENPTkZJR19OT1pPTUkgaXMgbm90IHNldAogCiAjCiAjIFNlcmlhbCBkcml2ZXJzCkBAIC03NjcsMTQgKzc5NywxMiBAQAogIwogIyBNaXNjZWxsYW5lb3VzIEkyQyBDaGlwIHN1cHBvcnQKICMKLSMgQ09ORklHX1NFTlNPUlNfRFMxMzM3IGlzIG5vdCBzZXQKLSMgQ09ORklHX1NFTlNPUlNfRFMxMzc0IGlzIG5vdCBzZXQKICMgQ09ORklHX0RTMTY4MiBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0VFUFJPTSBpcyBub3Qgc2V0CiBDT05GSUdfU0VOU09SU19QQ0Y4NTc0PXkKLSMgQ09ORklHX1NFTlNPUlNfUENBOTUzOSBpcyBub3Qgc2V0CisjIENPTkZJR19QQ0Y4NTc1IGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfUENGODU5MSBpcyBub3Qgc2V0Ci0jIENPTkZJR19TRU5TT1JTX000MVQwMCBpcyBub3Qgc2V0CisjIENPTkZJR19UUFM2NTAxMCBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX01BWDY4NzUgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19UU0wyNTUwIGlzIG5vdCBzZXQKICMgQ09ORklHX0kyQ19ERUJVR19DT1JFIGlzIG5vdCBzZXQKQEAgLTgwMyw2ICs4MzEsNyBAQAogIyBDT05GSUdfVzEgaXMgbm90IHNldAogIyBDT05GSUdfUE9XRVJfU1VQUExZIGlzIG5vdCBzZXQKICMgQ09ORklHX0hXTU9OIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RIRVJNQUwgaXMgbm90IHNldAogQ09ORklHX1dBVENIRE9HPXkKICMgQ09ORklHX1dBVENIRE9HX05PV0FZT1VUIGlzIG5vdCBzZXQKIApAQCAtODY3LDYgKzg5Niw3IEBACiBDT05GSUdfVVNCX0FSQ0hfSEFTX0VIQ0k9eQogQ09ORklHX1VTQj15CiAjIENPTkZJR19VU0JfREVCVUcgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX0FOTk9VTkNFX05FV19ERVZJQ0VTIGlzIG5vdCBzZXQKIAogIwogIyBNaXNjZWxsYW5lb3VzIFVTQiBvcHRpb25zCkBAIC04ODAsMTAgKzkxMCwxMCBAQAogIyBVU0IgSG9zdCBDb250cm9sbGVyIERyaXZlcnMKICMKIENPTkZJR19VU0JfRUhDSV9IQ0Q9eQotIyBDT05GSUdfVVNCX0VIQ0lfU1BMSVRfSVNPIGlzIG5vdCBzZXQKIENPTkZJR19VU0JfRUhDSV9ST09UX0hVQl9UVD15CiAjIENPTkZJR19VU0JfRUhDSV9UVF9ORVdTQ0hFRCBpcyBub3Qgc2V0CiBDT05GSUdfVVNCX0VIQ0lfRlNMPXkKK0NPTkZJR19VU0JfRUhDSV9IQ0RfUFBDX09GPXkKICMgQ09ORklHX1VTQl9JU1AxMTZYX0hDRCBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfT0hDSV9IQ0QgaXMgbm90IHNldAogQ09ORklHX1VTQl9VSENJX0hDRD15CkBAIC05MjcsMTAgKzk1Nyw2IEBACiAjCiAjIFVTQiBwb3J0IGRyaXZlcnMKICMKLQotIwotIyBVU0IgU2VyaWFsIENvbnZlcnRlciBzdXBwb3J0Ci0jCiAjIENPTkZJR19VU0JfU0VSSUFMIGlzIG5vdCBzZXQKIAogIwpAQCAtOTU2LDE2ICs5ODIsOSBAQAogIyBDT05GSUdfVVNCX1RSQU5DRVZJQlJBVE9SIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9JT1dBUlJJT1IgaXMgbm90IHNldAogIyBDT05GSUdfVVNCX1RFU1QgaXMgbm90IHNldAotCi0jCi0jIFVTQiBEU0wgbW9kZW0gc3VwcG9ydAotIwotCi0jCi0jIFVTQiBHYWRnZXQgU3VwcG9ydAotIwogIyBDT05GSUdfVVNCX0dBREdFVCBpcyBub3Qgc2V0CiAjIENPTkZJR19NTUMgaXMgbm90IHNldAorIyBDT05GSUdfTUVNU1RJQ0sgaXMgbm90IHNldAogIyBDT05GSUdfTkVXX0xFRFMgaXMgbm90IHNldAogIyBDT05GSUdfSU5GSU5JQkFORCBpcyBub3Qgc2V0CiAjIENPTkZJR19FREFDIGlzIG5vdCBzZXQKQEAgLTk5NywyMCArMTAxNiwyMyBAQAogIyBDT05GSUdfUlRDX0RSVl9QQ0Y4NTYzIGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfUENGODU4MyBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfRFJWX000MVQ4MCBpcyBub3Qgc2V0CisjIENPTkZJR19SVENfRFJWX1MzNTM5MEEgaXMgbm90IHNldAogCiAjCiAjIFNQSSBSVEMgZHJpdmVycwogIwotIyBDT05GSUdfUlRDX0RSVl9SUzVDMzQ4IGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfTUFYNjkwMiBpcyBub3Qgc2V0CisjIENPTkZJR19SVENfRFJWX1I5NzAxIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JUQ19EUlZfUlM1QzM0OCBpcyBub3Qgc2V0CiAKICMKICMgUGxhdGZvcm0gUlRDIGRyaXZlcnMKICMKICMgQ09ORklHX1JUQ19EUlZfQ01PUyBpcyBub3Qgc2V0CisjIENPTkZJR19SVENfRFJWX0RTMTUxMSBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfRFJWX0RTMTU1MyBpcyBub3Qgc2V0Ci0jIENPTkZJR19SVENfRFJWX1NUSzE3VEE4IGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfRFMxNzQyIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JUQ19EUlZfU1RLMTdUQTggaXMgbm90IHNldAogIyBDT05GSUdfUlRDX0RSVl9NNDhUODYgaXMgbm90IHNldAogIyBDT05GSUdfUlRDX0RSVl9NNDhUNTkgaXMgbm90IHNldAogIyBDT05GSUdfUlRDX0RSVl9WMzAyMCBpcyBub3Qgc2V0CkBAIC0xMDE4LDYgKzEwNDAsNyBAQAogIwogIyBvbi1DUFUgUlRDIGRyaXZlcnMKICMKKyMgQ09ORklHX0RNQURFVklDRVMgaXMgbm90IHNldAogCiAjCiAjIFVzZXJzcGFjZSBJL08KQEAgLTEwNDMsMTIgKzEwNjYsMTAgQEAKICMgQ09ORklHX1hGU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19HRlMyX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX09DRlMyX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX01JTklYX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1JPTUZTX0ZTIGlzIG5vdCBzZXQKK0NPTkZJR19ETk9USUZZPXkKIENPTkZJR19JTk9USUZZPXkKIENPTkZJR19JTk9USUZZX1VTRVI9eQogIyBDT05GSUdfUVVPVEEgaXMgbm90IHNldAotQ09ORklHX0ROT1RJRlk9eQogIyBDT05GSUdfQVVUT0ZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0FVVE9GUzRfRlMgaXMgbm90IHNldAogIyBDT05GSUdfRlVTRV9GUyBpcyBub3Qgc2V0CkBAIC0xMDk0LDggKzExMTUsMTAgQEAKICMgQ09ORklHX0pGRlMyX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSQU1GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19WWEZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX01JTklYX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0hQRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfUU5YNEZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JPTUZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1NZU1ZfRlMgaXMgbm90IHNldAogIyBDT05GSUdfVUZTX0ZTIGlzIG5vdCBzZXQKIENPTkZJR19ORVRXT1JLX0ZJTEVTWVNURU1TPXkKQEAgLTExODIsNyArMTIwNSw2IEBACiAjIENPTkZJR19OTFNfS09JOF9VIGlzIG5vdCBzZXQKICMgQ09ORklHX05MU19VVEY4IGlzIG5vdCBzZXQKICMgQ09ORklHX0RMTSBpcyBub3Qgc2V0Ci0jIENPTkZJR19VQ0NfU0xPVyBpcyBub3Qgc2V0CiAKICMKICMgTGlicmFyeSByb3V0aW5lcwpAQCAtMTE5OCw3ICsxMjIwLDYgQEAKIENPTkZJR19IQVNfSU9NRU09eQogQ09ORklHX0hBU19JT1BPUlQ9eQogQ09ORklHX0hBU19ETUE9eQotIyBDT05GSUdfSU5TVFJVTUVOVEFUSU9OIGlzIG5vdCBzZXQKIAogIwogIyBLZXJuZWwgaGFja2luZwpAQCAtMTIxMiw2ICsxMjMzLDcgQEAKICMgQ09ORklHX0hFQURFUlNfQ0hFQ0sgaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfS0VSTkVMIGlzIG5vdCBzZXQKICMgQ09ORklHX1NMVUJfREVCVUdfT04gaXMgbm90IHNldAorIyBDT05GSUdfU0xVQl9TVEFUUyBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19CVUdWRVJCT1NFIGlzIG5vdCBzZXQKICMgQ09ORklHX1NBTVBMRVMgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0VBUkxZX0RFQlVHIGlzIG5vdCBzZXQKQEAgLTEyMjUsNiArMTI0Nyw3IEBACiBDT05GSUdfQ1JZUFRPPXkKIENPTkZJR19DUllQVE9fQUxHQVBJPXkKIENPTkZJR19DUllQVE9fQkxLQ0lQSEVSPXkKKyMgQ09ORklHX0NSWVBUT19TRVFJViBpcyBub3Qgc2V0CiBDT05GSUdfQ1JZUFRPX01BTkFHRVI9eQogIyBDT05GSUdfQ1JZUFRPX0hNQUMgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX1hDQkMgaXMgbm90IHNldApAQCAtMTI0Miw2ICsxMjY1LDkgQEAKIENPTkZJR19DUllQVE9fUENCQz1tCiAjIENPTkZJR19DUllQVE9fTFJXIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19YVFMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NUUiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fR0NNIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DQ00gaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0NSWVBURCBpcyBub3Qgc2V0CiBDT05GSUdfQ1JZUFRPX0RFUz15CiAjIENPTkZJR19DUllQVE9fRkNSWVBUIGlzIG5vdCBzZXQKQEAgLTEyNTYsMTEgKzEyODIsMTQgQEAKICMgQ09ORklHX0NSWVBUT19LSEFaQUQgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0FOVUJJUyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fU0VFRCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0FMU0EyMCBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fREVGTEFURSBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fTUlDSEFFTF9NSUMgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0NSQzMyQyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fQ0FNRUxMSUEgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX1RFU1QgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0FVVEhFTkMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0xaTyBpcyBub3Qgc2V0CiBDT05GSUdfQ1JZUFRPX0hXPXkKKyMgQ09ORklHX0NSWVBUT19ERVZfSElGTl83OTVYIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19DTE9DSyBpcyBub3Qgc2V0CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM4MzR4X2l0eGdwX2RlZmNvbmZpZyBiL2FyY2gvcG93ZXJwYy9jb25maWdzL21wYzgzNHhfaXR4Z3BfZGVmY29uZmlnCmluZGV4IDY3Y2IwOWMuLmI0ZTM5Y2YgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jb25maWdzL21wYzgzNHhfaXR4Z3BfZGVmY29uZmlnCisrKyBiL2FyY2gvcG93ZXJwYy9jb25maWdzL21wYzgzNHhfaXR4Z3BfZGVmY29uZmlnCkBAIC0xLDcgKzEsNyBAQAogIwogIyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBtYWtlIGNvbmZpZzogZG9uJ3QgZWRpdAotIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjI0LXJjNAotIyBUaHUgRGVjICA2IDE2OjQ4OjM5IDIwMDcKKyMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4yNS1yYzYKKyMgTW9uIE1hciAyNCAwODo0ODoxOCAyMDA4CiAjCiAjIENPTkZJR19QUEM2NCBpcyBub3Qgc2V0CiAKQEAgLTE0LDggKzE0LDggQEAKICMgQ09ORklHXzQweCBpcyBub3Qgc2V0CiAjIENPTkZJR180NHggaXMgbm90IHNldAogIyBDT05GSUdfRTIwMCBpcyBub3Qgc2V0Ci1DT05GSUdfODN4eD15CiBDT05GSUdfUFBDX0ZQVT15CisjIENPTkZJR19GU0xfRU1CX1BFUkZNT04gaXMgbm90IHNldAogQ09ORklHX1BQQ19TVERfTU1VPXkKIENPTkZJR19QUENfU1REX01NVV8zMj15CiAjIENPTkZJR19QUENfTU1fU0xJQ0VTIGlzIG5vdCBzZXQKQEAgLTI5LDYgKzI5LDcgQEAKIENPTkZJR19HRU5FUklDX1RJTUVfVlNZU0NBTEw9eQogQ09ORklHX0dFTkVSSUNfQ0xPQ0tFVkVOVFM9eQogQ09ORklHX0dFTkVSSUNfSEFSRElSUVM9eQorIyBDT05GSUdfSEFWRV9TRVRVUF9QRVJfQ1BVX0FSRUEgaXMgbm90IHNldAogQ09ORklHX0lSUV9QRVJfQ1BVPXkKIENPTkZJR19SV1NFTV9YQ0hHQUREX0FMR09SSVRITT15CiBDT05GSUdfQVJDSF9IQVNfSUxPRzJfVTMyPXkKQEAgLTY2LDE1ICs2NywxOSBAQAogIyBDT05GSUdfUE9TSVhfTVFVRVVFIGlzIG5vdCBzZXQKICMgQ09ORklHX0JTRF9QUk9DRVNTX0FDQ1QgaXMgbm90IHNldAogIyBDT05GSUdfVEFTS1NUQVRTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VTRVJfTlMgaXMgbm90IHNldAotIyBDT05GSUdfUElEX05TIGlzIG5vdCBzZXQKICMgQ09ORklHX0FVRElUIGlzIG5vdCBzZXQKICMgQ09ORklHX0lLQ09ORklHIGlzIG5vdCBzZXQKIENPTkZJR19MT0dfQlVGX1NISUZUPTE0CiAjIENPTkZJR19DR1JPVVBTIGlzIG5vdCBzZXQKK0NPTkZJR19HUk9VUF9TQ0hFRD15CiAjIENPTkZJR19GQUlSX0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JUX0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKK0NPTkZJR19VU0VSX1NDSEVEPXkKKyMgQ09ORklHX0NHUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CiBDT05GSUdfU1lTRlNfREVQUkVDQVRFRD15CitDT05GSUdfU1lTRlNfREVQUkVDQVRFRF9WMj15CiAjIENPTkZJR19SRUxBWSBpcyBub3Qgc2V0CisjIENPTkZJR19OQU1FU1BBQ0VTIGlzIG5vdCBzZXQKIENPTkZJR19CTEtfREVWX0lOSVRSRD15CiBDT05GSUdfSU5JVFJBTUZTX1NPVVJDRT0iIgogIyBDT05GSUdfQ0NfT1BUSU1JWkVfRk9SX1NJWkUgaXMgbm90IHNldApAQCAtODYsMTEgKzkxLDEzIEBACiBDT05GSUdfUFJJTlRLPXkKIENPTkZJR19CVUc9eQogQ09ORklHX0VMRl9DT1JFPXkKK0NPTkZJR19DT01QQVRfQlJLPXkKIENPTkZJR19CQVNFX0ZVTEw9eQogQ09ORklHX0ZVVEVYPXkKIENPTkZJR19BTk9OX0lOT0RFUz15CiAjIENPTkZJR19FUE9MTCBpcyBub3Qgc2V0CiBDT05GSUdfU0lHTkFMRkQ9eQorQ09ORklHX1RJTUVSRkQ9eQogQ09ORklHX0VWRU5URkQ9eQogQ09ORklHX1NITUVNPXkKIENPTkZJR19WTV9FVkVOVF9DT1VOVEVSUz15CkBAIC05OCw2ICsxMDUsMTMgQEAKICMgQ09ORklHX1NMQUIgaXMgbm90IHNldAogQ09ORklHX1NMVUI9eQogIyBDT05GSUdfU0xPQiBpcyBub3Qgc2V0CisjIENPTkZJR19QUk9GSUxJTkcgaXMgbm90IHNldAorIyBDT05GSUdfTUFSS0VSUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9PUFJPRklMRT15CitDT05GSUdfSEFWRV9LUFJPQkVTPXkKK0NPTkZJR19IQVZFX0tSRVRQUk9CRVM9eQorQ09ORklHX1BST0NfUEFHRV9NT05JVE9SPXkKK0NPTkZJR19TTEFCSU5GTz15CiBDT05GSUdfUlRfTVVURVhFUz15CiAjIENPTkZJR19USU5ZX1NITUVNIGlzIG5vdCBzZXQKIENPTkZJR19CQVNFX1NNQUxMPTAKQEAgLTEyNSw2ICsxMzksNyBAQAogIyBDT05GSUdfREVGQVVMVF9DRlEgaXMgbm90IHNldAogIyBDT05GSUdfREVGQVVMVF9OT09QIGlzIG5vdCBzZXQKIENPTkZJR19ERUZBVUxUX0lPU0NIRUQ9ImFudGljaXBhdG9yeSIKK0NPTkZJR19DTEFTU0lDX1JDVT15CiAKICMKICMgUGxhdGZvcm0gc3VwcG9ydApAQCAtMTMzLDE4ICsxNDgsMjMgQEAKICMgQ09ORklHX1BQQ184Mnh4IGlzIG5vdCBzZXQKIENPTkZJR19QUENfODN4eD15CiAjIENPTkZJR19QUENfODZ4eCBpcyBub3Qgc2V0Ci0jIENPTkZJR19QUENfTVBDNTJ4eCBpcyBub3Qgc2V0Ci0jIENPTkZJR19QUENfTVBDNTIwMCBpcyBub3Qgc2V0CisjIENPTkZJR19QUENfTVBDNTEyeCBpcyBub3Qgc2V0CisjIENPTkZJR19QUENfTVBDNTEyMSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfQ0VMTCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfQ0VMTF9OQVRJVkUgaXMgbm90IHNldAogIyBDT05GSUdfUFEyQURTIGlzIG5vdCBzZXQKLSMgQ09ORklHX01QQzgzMTNfUkRCIGlzIG5vdCBzZXQKK0NPTkZJR19NUEM4M3h4PXkKKyMgQ09ORklHX01QQzgzMXhfUkRCIGlzIG5vdCBzZXQKICMgQ09ORklHX01QQzgzMnhfTURTIGlzIG5vdCBzZXQKICMgQ09ORklHX01QQzgzMnhfUkRCIGlzIG5vdCBzZXQKICMgQ09ORklHX01QQzgzNHhfTURTIGlzIG5vdCBzZXQKIENPTkZJR19NUEM4MzR4X0lUWD15CiAjIENPTkZJR19NUEM4MzZ4X01EUyBpcyBub3Qgc2V0Ci1DT05GSUdfTVBDODM0eD15CisjIENPTkZJR19NUEM4Mzd4X01EUyBpcyBub3Qgc2V0CisjIENPTkZJR19NUEM4Mzd4X1JEQiBpcyBub3Qgc2V0CisjIENPTkZJR19TQkM4MzR4IGlzIG5vdCBzZXQKK0NPTkZJR19QUENfTVBDODM0eD15CitDT05GSUdfSVBJQz15CiAjIENPTkZJR19NUElDIGlzIG5vdCBzZXQKICMgQ09ORklHX01QSUNfV0VJUkQgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0k4MjU5IGlzIG5vdCBzZXQKQEAgLTE1NSw3ICsxNzUsNiBAQAogIyBDT05GSUdfUFBDX0lORElSRUNUX0lPIGlzIG5vdCBzZXQKICMgQ09ORklHX0dFTkVSSUNfSU9NQVAgaXMgbm90IHNldAogIyBDT05GSUdfQ1BVX0ZSRVEgaXMgbm90IHNldAotIyBDT05GSUdfQ1BNMiBpcyBub3Qgc2V0CiAjIENPTkZJR19GU0xfVUxJMTU3NSBpcyBub3Qgc2V0CiAKICMKQEAgLTE3MSwxMiArMTkwLDE2IEBACiAjIENPTkZJR19IWl8zMDAgaXMgbm90IHNldAogIyBDT05GSUdfSFpfMTAwMCBpcyBub3Qgc2V0CiBDT05GSUdfSFo9MjUwCisjIENPTkZJR19TQ0hFRF9IUlRJQ0sgaXMgbm90IHNldAogQ09ORklHX1BSRUVNUFRfTk9ORT15CiAjIENPTkZJR19QUkVFTVBUX1ZPTFVOVEFSWSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUkVFTVBUIGlzIG5vdCBzZXQKIENPTkZJR19CSU5GTVRfRUxGPXkKICMgQ09ORklHX0JJTkZNVF9NSVNDIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lPTU1VX0hFTFBFUiBpcyBub3Qgc2V0CiBDT05GSUdfQVJDSF9FTkFCTEVfTUVNT1JZX0hPVFBMVUc9eQorQ09ORklHX0FSQ0hfSEFTX1dBTEtfTUVNT1JZPXkKK0NPTkZJR19BUkNIX0VOQUJMRV9NRU1PUllfSE9UUkVNT1ZFPXkKIENPTkZJR19BUkNIX0ZMQVRNRU1fRU5BQkxFPXkKIENPTkZJR19BUkNIX1BPUFVMQVRFU19OT0RFX01BUD15CiBDT05GSUdfU0VMRUNUX01FTU9SWV9NT0RFTD15CkBAIC0xOTUsMTEgKzIxOCw3IEBACiBDT05GSUdfUFJPQ19ERVZJQ0VUUkVFPXkKICMgQ09ORklHX0NNRExJTkVfQk9PTCBpcyBub3Qgc2V0CiAjIENPTkZJR19QTSBpcyBub3Qgc2V0Ci1DT05GSUdfU1VTUEVORF9VUF9QT1NTSUJMRT15Ci1DT05GSUdfSElCRVJOQVRJT05fVVBfUE9TU0lCTEU9eQogQ09ORklHX1NFQ0NPTVA9eQotQ09ORklHX1dBTlRfREVWSUNFX1RSRUU9eQotQ09ORklHX0RFVklDRV9UUkVFPSIiCiBDT05GSUdfSVNBX0RNQV9BUEk9eQogCiAjCkBAIC0yNDgsNiArMjY3LDcgQEAKICMgQ09ORklHX1hGUk1fVVNFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19YRlJNX1NVQl9QT0xJQ1kgaXMgbm90IHNldAogIyBDT05GSUdfWEZSTV9NSUdSQVRFIGlzIG5vdCBzZXQKKyMgQ09ORklHX1hGUk1fU1RBVElTVElDUyBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRfS0VZIGlzIG5vdCBzZXQKIENPTkZJR19JTkVUPXkKIENPTkZJR19JUF9NVUxUSUNBU1Q9eQpAQCAtMzAzLDYgKzMyMyw3IEBACiAjCiAjIENPTkZJR19ORVRfUEtUR0VOIGlzIG5vdCBzZXQKICMgQ09ORklHX0hBTVJBRElPIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NBTiBpcyBub3Qgc2V0CiAjIENPTkZJR19JUkRBIGlzIG5vdCBzZXQKICMgQ09ORklHX0JUIGlzIG5vdCBzZXQKICMgQ09ORklHX0FGX1JYUlBDIGlzIG5vdCBzZXQKQEAgLTQyNyw3ICs0NDgsNyBAQAogQ09ORklHX0JMS19ERVZfUkFNPXkKIENPTkZJR19CTEtfREVWX1JBTV9DT1VOVD0xNgogQ09ORklHX0JMS19ERVZfUkFNX1NJWkU9MzI3NjgKLUNPTkZJR19CTEtfREVWX1JBTV9CTE9DS1NJWkU9MTAyNAorIyBDT05GSUdfQkxLX0RFVl9YSVAgaXMgbm90IHNldAogIyBDT05GSUdfQ0RST01fUEtUQ0RWRCBpcyBub3Qgc2V0CiAjIENPTkZJR19BVEFfT1ZFUl9FVEggaXMgbm90IHNldAogQ09ORklHX01JU0NfREVWSUNFUz15CkBAIC00MzUsNiArNDU2LDggQEAKICMgQ09ORklHX0VFUFJPTV85M0NYNiBpcyBub3Qgc2V0CiAjIENPTkZJR19TR0lfSU9DNCBpcyBub3Qgc2V0CiAjIENPTkZJR19USUZNX0NPUkUgaXMgbm90IHNldAorIyBDT05GSUdfRU5DTE9TVVJFX1NFUlZJQ0VTIGlzIG5vdCBzZXQKK0NPTkZJR19IQVZFX0lERT15CiAjIENPTkZJR19JREUgaXMgbm90IHNldAogCiAjCkBAIC00OTksNiArNTIyLDcgQEAKICMgQ09ORklHX1NDU0lfSVBTIGlzIG5vdCBzZXQKICMgQ09ORklHX1NDU0lfSU5JVElPIGlzIG5vdCBzZXQKICMgQ09ORklHX1NDU0lfSU5JQTEwMCBpcyBub3Qgc2V0CisjIENPTkZJR19TQ1NJX01WU0FTIGlzIG5vdCBzZXQKICMgQ09ORklHX1NDU0lfU1RFWCBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX1NZTTUzQzhYWF8yIGlzIG5vdCBzZXQKICMgQ09ORklHX1NDU0lfUUxPR0lDXzEyODAgaXMgbm90IHNldApAQCAtNTI5LDcgKzU1Myw2IEBACiAjIENPTkZJR19FUVVBTElaRVIgaXMgbm90IHNldAogIyBDT05GSUdfVFVOIGlzIG5vdCBzZXQKICMgQ09ORklHX1ZFVEggaXMgbm90IHNldAotIyBDT05GSUdfSVAxMDAwIGlzIG5vdCBzZXQKICMgQ09ORklHX0FSQ05FVCBpcyBub3Qgc2V0CiBDT05GSUdfUEhZTElCPXkKIApAQCAtNTQ1LDYgKzU2OCw3IEBACiAjIENPTkZJR19TTVNDX1BIWSBpcyBub3Qgc2V0CiAjIENPTkZJR19CUk9BRENPTV9QSFkgaXMgbm90IHNldAogIyBDT05GSUdfSUNQTFVTX1BIWSBpcyBub3Qgc2V0CisjIENPTkZJR19SRUFMVEVLX1BIWSBpcyBub3Qgc2V0CiAjIENPTkZJR19GSVhFRF9QSFkgaXMgbm90IHNldAogIyBDT05GSUdfTURJT19CSVRCQU5HIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9FVEhFUk5FVCBpcyBub3Qgc2V0CkBAIC01NTMsNiArNTc3LDkgQEAKICMgQ09ORklHX0RMMksgaXMgbm90IHNldAogIyBDT05GSUdfRTEwMDAgaXMgbm90IHNldAogIyBDT05GSUdfRTEwMDBFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0UxMDAwRV9FTkFCTEVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lQMTAwMCBpcyBub3Qgc2V0CisjIENPTkZJR19JR0IgaXMgbm90IHNldAogIyBDT05GSUdfTlM4MzgyMCBpcyBub3Qgc2V0CiAjIENPTkZJR19IQU1BQ0hJIGlzIG5vdCBzZXQKICMgQ09ORklHX1lFTExPV0ZJTiBpcyBub3Qgc2V0CkBAIC01NzksNiArNjA2LDcgQEAKICMgQ09ORklHX05JVSBpcyBub3Qgc2V0CiAjIENPTkZJR19NTFg0X0NPUkUgaXMgbm90IHNldAogIyBDT05GSUdfVEVIVVRJIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JOWDJYIGlzIG5vdCBzZXQKICMgQ09ORklHX1RSIGlzIG5vdCBzZXQKIAogIwpAQCAtNjAxLDcgKzYyOSw2IEBACiAjIENPTkZJR19QUFAgaXMgbm90IHNldAogIyBDT05GSUdfU0xJUCBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRfRkMgaXMgbm90IHNldAotIyBDT05GSUdfU0hBUEVSIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVENPTlNPTEUgaXMgbm90IHNldAogIyBDT05GSUdfTkVUUE9MTCBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRfUE9MTF9DT05UUk9MTEVSIGlzIG5vdCBzZXQKQEAgLTYyNCw2ICs2NTEsNyBAQAogIwogIyBDT05GSUdfVlQgaXMgbm90IHNldAogIyBDT05GSUdfU0VSSUFMX05PTlNUQU5EQVJEIGlzIG5vdCBzZXQKKyMgQ09ORklHX05PWk9NSSBpcyBub3Qgc2V0CiAKICMKICMgU2VyaWFsIGRyaXZlcnMKQEAgLTY5NywxNCArNzI1LDEyIEBACiAjCiAjIE1pc2NlbGxhbmVvdXMgSTJDIENoaXAgc3VwcG9ydAogIwotIyBDT05GSUdfU0VOU09SU19EUzEzMzcgaXMgbm90IHNldAotIyBDT05GSUdfU0VOU09SU19EUzEzNzQgaXMgbm90IHNldAogIyBDT05GSUdfRFMxNjgyIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfRUVQUk9NIGlzIG5vdCBzZXQKIENPTkZJR19TRU5TT1JTX1BDRjg1NzQ9eQotIyBDT05GSUdfU0VOU09SU19QQ0E5NTM5IGlzIG5vdCBzZXQKKyMgQ09ORklHX1BDRjg1NzUgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19QQ0Y4NTkxIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NFTlNPUlNfTTQxVDAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RQUzY1MDEwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfTUFYNjg3NSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1RTTDI1NTAgaXMgbm90IHNldAogIyBDT05GSUdfSTJDX0RFQlVHX0NPUkUgaXMgbm90IHNldApAQCAtNzMzLDYgKzc1OSw3IEBACiAjIENPTkZJR19XMSBpcyBub3Qgc2V0CiAjIENPTkZJR19QT1dFUl9TVVBQTFkgaXMgbm90IHNldAogIyBDT05GSUdfSFdNT04gaXMgbm90IHNldAorIyBDT05GSUdfVEhFUk1BTCBpcyBub3Qgc2V0CiBDT05GSUdfV0FUQ0hET0c9eQogIyBDT05GSUdfV0FUQ0hET0dfTk9XQVlPVVQgaXMgbm90IHNldAogCkBAIC03OTcsNiArODI0LDcgQEAKIENPTkZJR19VU0JfQVJDSF9IQVNfRUhDST15CiBDT05GSUdfVVNCPXkKICMgQ09ORklHX1VTQl9ERUJVRyBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfQU5OT1VOQ0VfTkVXX0RFVklDRVMgaXMgbm90IHNldAogCiAjCiAjIE1pc2NlbGxhbmVvdXMgVVNCIG9wdGlvbnMKQEAgLTgxMCwxMCArODM4LDEwIEBACiAjIFVTQiBIb3N0IENvbnRyb2xsZXIgRHJpdmVycwogIwogQ09ORklHX1VTQl9FSENJX0hDRD15Ci0jIENPTkZJR19VU0JfRUhDSV9TUExJVF9JU08gaXMgbm90IHNldAogQ09ORklHX1VTQl9FSENJX1JPT1RfSFVCX1RUPXkKICMgQ09ORklHX1VTQl9FSENJX1RUX05FV1NDSEVEIGlzIG5vdCBzZXQKIENPTkZJR19VU0JfRUhDSV9GU0w9eQorQ09ORklHX1VTQl9FSENJX0hDRF9QUENfT0Y9eQogIyBDT05GSUdfVVNCX0lTUDExNlhfSENEIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9PSENJX0hDRCBpcyBub3Qgc2V0CiBDT05GSUdfVVNCX1VIQ0lfSENEPXkKQEAgLTg1NywxMCArODg1LDYgQEAKICMKICMgVVNCIHBvcnQgZHJpdmVycwogIwotCi0jCi0jIFVTQiBTZXJpYWwgQ29udmVydGVyIHN1cHBvcnQKLSMKICMgQ09ORklHX1VTQl9TRVJJQUwgaXMgbm90IHNldAogCiAjCkBAIC04ODUsMTYgKzkwOSw5IEBACiAjIENPTkZJR19VU0JfTEQgaXMgbm90IHNldAogIyBDT05GSUdfVVNCX1RSQU5DRVZJQlJBVE9SIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9JT1dBUlJJT1IgaXMgbm90IHNldAotCi0jCi0jIFVTQiBEU0wgbW9kZW0gc3VwcG9ydAotIwotCi0jCi0jIFVTQiBHYWRnZXQgU3VwcG9ydAotIwogIyBDT05GSUdfVVNCX0dBREdFVCBpcyBub3Qgc2V0CiAjIENPTkZJR19NTUMgaXMgbm90IHNldAorIyBDT05GSUdfTUVNU1RJQ0sgaXMgbm90IHNldAogIyBDT05GSUdfTkVXX0xFRFMgaXMgbm90IHNldAogIyBDT05GSUdfSU5GSU5JQkFORCBpcyBub3Qgc2V0CiAjIENPTkZJR19FREFDIGlzIG5vdCBzZXQKQEAgLTkyNiwyMCArOTQzLDIzIEBACiAjIENPTkZJR19SVENfRFJWX1BDRjg1NjMgaXMgbm90IHNldAogIyBDT05GSUdfUlRDX0RSVl9QQ0Y4NTgzIGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfTTQxVDgwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JUQ19EUlZfUzM1MzkwQSBpcyBub3Qgc2V0CiAKICMKICMgU1BJIFJUQyBkcml2ZXJzCiAjCi0jIENPTkZJR19SVENfRFJWX1JTNUMzNDggaXMgbm90IHNldAogIyBDT05GSUdfUlRDX0RSVl9NQVg2OTAyIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JUQ19EUlZfUjk3MDEgaXMgbm90IHNldAorIyBDT05GSUdfUlRDX0RSVl9SUzVDMzQ4IGlzIG5vdCBzZXQKIAogIwogIyBQbGF0Zm9ybSBSVEMgZHJpdmVycwogIwogIyBDT05GSUdfUlRDX0RSVl9DTU9TIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JUQ19EUlZfRFMxNTExIGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfRFMxNTUzIGlzIG5vdCBzZXQKLSMgQ09ORklHX1JUQ19EUlZfU1RLMTdUQTggaXMgbm90IHNldAogIyBDT05GSUdfUlRDX0RSVl9EUzE3NDIgaXMgbm90IHNldAorIyBDT05GSUdfUlRDX0RSVl9TVEsxN1RBOCBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfRFJWX000OFQ4NiBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfRFJWX000OFQ1OSBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfRFJWX1YzMDIwIGlzIG5vdCBzZXQKQEAgLTk0Nyw2ICs5NjcsNyBAQAogIwogIyBvbi1DUFUgUlRDIGRyaXZlcnMKICMKKyMgQ09ORklHX0RNQURFVklDRVMgaXMgbm90IHNldAogCiAjCiAjIFVzZXJzcGFjZSBJL08KQEAgLTk3MiwxMiArOTkzLDEwIEBACiAjIENPTkZJR19YRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfR0ZTMl9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19PQ0ZTMl9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CitDT05GSUdfRE5PVElGWT15CiBDT05GSUdfSU5PVElGWT15CiBDT05GSUdfSU5PVElGWV9VU0VSPXkKICMgQ09ORklHX1FVT1RBIGlzIG5vdCBzZXQKLUNPTkZJR19ETk9USUZZPXkKICMgQ09ORklHX0FVVE9GU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19BVVRPRlM0X0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZVU0VfRlMgaXMgbm90IHNldApAQCAtMTAyMyw4ICsxMDQyLDEwIEBACiAjIENPTkZJR19KRkZTMl9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUkFNRlMgaXMgbm90IHNldAogIyBDT05GSUdfVlhGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19IUEZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1FOWDRGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TWVNWX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1VGU19GUyBpcyBub3Qgc2V0CiBDT05GSUdfTkVUV09SS19GSUxFU1lTVEVNUz15CkBAIC0xMTExLDcgKzExMzIsNiBAQAogIyBDT05GSUdfTkxTX0tPSThfVSBpcyBub3Qgc2V0CiAjIENPTkZJR19OTFNfVVRGOCBpcyBub3Qgc2V0CiAjIENPTkZJR19ETE0gaXMgbm90IHNldAotIyBDT05GSUdfVUNDX1NMT1cgaXMgbm90IHNldAogCiAjCiAjIExpYnJhcnkgcm91dGluZXMKQEAgLTExMjcsNyArMTE0Nyw2IEBACiBDT05GSUdfSEFTX0lPTUVNPXkKIENPTkZJR19IQVNfSU9QT1JUPXkKIENPTkZJR19IQVNfRE1BPXkKLSMgQ09ORklHX0lOU1RSVU1FTlRBVElPTiBpcyBub3Qgc2V0CiAKICMKICMgS2VybmVsIGhhY2tpbmcKQEAgLTExNDEsNiArMTE2MCw3IEBACiAjIENPTkZJR19IRUFERVJTX0NIRUNLIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX0tFUk5FTCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTFVCX0RFQlVHX09OIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NMVUJfU1RBVFMgaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfQlVHVkVSQk9TRSBpcyBub3Qgc2V0CiAjIENPTkZJR19TQU1QTEVTIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19FQVJMWV9ERUJVRyBpcyBub3Qgc2V0CkBAIC0xMTU0LDYgKzExNzQsNyBAQAogQ09ORklHX0NSWVBUTz15CiBDT05GSUdfQ1JZUFRPX0FMR0FQST15CiBDT05GSUdfQ1JZUFRPX0JMS0NJUEhFUj15CisjIENPTkZJR19DUllQVE9fU0VRSVYgaXMgbm90IHNldAogQ09ORklHX0NSWVBUT19NQU5BR0VSPXkKICMgQ09ORklHX0NSWVBUT19ITUFDIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19YQ0JDIGlzIG5vdCBzZXQKQEAgLTExNzEsNiArMTE5Miw5IEBACiBDT05GSUdfQ1JZUFRPX1BDQkM9bQogIyBDT05GSUdfQ1JZUFRPX0xSVyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fWFRTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DVFIgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0dDTSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ0NNIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19DUllQVEQgaXMgbm90IHNldAogQ09ORklHX0NSWVBUT19ERVM9eQogIyBDT05GSUdfQ1JZUFRPX0ZDUllQVCBpcyBub3Qgc2V0CkBAIC0xMTg1LDExICsxMjA5LDE0IEBACiAjIENPTkZJR19DUllQVE9fS0hBWkFEIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19BTlVCSVMgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX1NFRUQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1NBTFNBMjAgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0RFRkxBVEUgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX01JQ0hBRUxfTUlDIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19DUkMzMkMgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0NBTUVMTElBIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19URVNUIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19BVVRIRU5DIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19MWk8gaXMgbm90IHNldAogQ09ORklHX0NSWVBUT19IVz15CisjIENPTkZJR19DUllQVE9fREVWX0hJRk5fNzk1WCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfQ0xPQ0sgaXMgbm90IHNldApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODM0eF9tZHNfZGVmY29uZmlnIGIvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODM0eF9tZHNfZGVmY29uZmlnCmluZGV4IDIxNzUzOWYuLmI0ZTgyYzAgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jb25maWdzL21wYzgzNHhfbWRzX2RlZmNvbmZpZworKysgYi9hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM4MzR4X21kc19kZWZjb25maWcKQEAgLTEsNyArMSw3IEBACiAjCiAjIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIG1ha2UgY29uZmlnOiBkb24ndCBlZGl0Ci0jIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMjQtcmM0Ci0jIFRodSBEZWMgIDYgMTY6NDg6NDEgMjAwNworIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjI1LXJjNworIyBNb24gTWFyIDMxIDExOjM2OjU2IDIwMDgKICMKICMgQ09ORklHX1BQQzY0IGlzIG5vdCBzZXQKIApAQCAtMTQsOCArMTQsOCBAQAogIyBDT05GSUdfNDB4IGlzIG5vdCBzZXQKICMgQ09ORklHXzQ0eCBpcyBub3Qgc2V0CiAjIENPTkZJR19FMjAwIGlzIG5vdCBzZXQKLUNPTkZJR184M3h4PXkKIENPTkZJR19QUENfRlBVPXkKKyMgQ09ORklHX0ZTTF9FTUJfUEVSRk1PTiBpcyBub3Qgc2V0CiBDT05GSUdfUFBDX1NURF9NTVU9eQogQ09ORklHX1BQQ19TVERfTU1VXzMyPXkKICMgQ09ORklHX1BQQ19NTV9TTElDRVMgaXMgbm90IHNldApAQCAtMjksNiArMjksNyBAQAogQ09ORklHX0dFTkVSSUNfVElNRV9WU1lTQ0FMTD15CiBDT05GSUdfR0VORVJJQ19DTE9DS0VWRU5UUz15CiBDT05GSUdfR0VORVJJQ19IQVJESVJRUz15CisjIENPTkZJR19IQVZFX1NFVFVQX1BFUl9DUFVfQVJFQSBpcyBub3Qgc2V0CiBDT05GSUdfSVJRX1BFUl9DUFU9eQogQ09ORklHX1JXU0VNX1hDSEdBRERfQUxHT1JJVEhNPXkKIENPTkZJR19BUkNIX0hBU19JTE9HMl9VMzI9eQpAQCAtNjYsMTUgKzY3LDE5IEBACiAjIENPTkZJR19QT1NJWF9NUVVFVUUgaXMgbm90IHNldAogIyBDT05GSUdfQlNEX1BST0NFU1NfQUNDVCBpcyBub3Qgc2V0CiAjIENPTkZJR19UQVNLU1RBVFMgaXMgbm90IHNldAotIyBDT05GSUdfVVNFUl9OUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19QSURfTlMgaXMgbm90IHNldAogIyBDT05GSUdfQVVESVQgaXMgbm90IHNldAogIyBDT05GSUdfSUtDT05GSUcgaXMgbm90IHNldAogQ09ORklHX0xPR19CVUZfU0hJRlQ9MTQKICMgQ09ORklHX0NHUk9VUFMgaXMgbm90IHNldAorQ09ORklHX0dST1VQX1NDSEVEPXkKICMgQ09ORklHX0ZBSVJfR1JPVVBfU0NIRUQgaXMgbm90IHNldAorIyBDT05GSUdfUlRfR1JPVVBfU0NIRUQgaXMgbm90IHNldAorQ09ORklHX1VTRVJfU0NIRUQ9eQorIyBDT05GSUdfQ0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKIENPTkZJR19TWVNGU19ERVBSRUNBVEVEPXkKK0NPTkZJR19TWVNGU19ERVBSRUNBVEVEX1YyPXkKICMgQ09ORklHX1JFTEFZIGlzIG5vdCBzZXQKKyMgQ09ORklHX05BTUVTUEFDRVMgaXMgbm90IHNldAogQ09ORklHX0JMS19ERVZfSU5JVFJEPXkKIENPTkZJR19JTklUUkFNRlNfU09VUkNFPSIiCiAjIENPTkZJR19DQ19PUFRJTUlaRV9GT1JfU0laRSBpcyBub3Qgc2V0CkBAIC04NiwxMSArOTEsMTMgQEAKIENPTkZJR19QUklOVEs9eQogQ09ORklHX0JVRz15CiBDT05GSUdfRUxGX0NPUkU9eQorQ09ORklHX0NPTVBBVF9CUks9eQogQ09ORklHX0JBU0VfRlVMTD15CiBDT05GSUdfRlVURVg9eQogQ09ORklHX0FOT05fSU5PREVTPXkKICMgQ09ORklHX0VQT0xMIGlzIG5vdCBzZXQKIENPTkZJR19TSUdOQUxGRD15CitDT05GSUdfVElNRVJGRD15CiBDT05GSUdfRVZFTlRGRD15CiBDT05GSUdfU0hNRU09eQogQ09ORklHX1ZNX0VWRU5UX0NPVU5URVJTPXkKQEAgLTk4LDYgKzEwNSwxMyBAQAogIyBDT05GSUdfU0xBQiBpcyBub3Qgc2V0CiBDT05GSUdfU0xVQj15CiAjIENPTkZJR19TTE9CIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BST0ZJTElORyBpcyBub3Qgc2V0CisjIENPTkZJR19NQVJLRVJTIGlzIG5vdCBzZXQKK0NPTkZJR19IQVZFX09QUk9GSUxFPXkKK0NPTkZJR19IQVZFX0tQUk9CRVM9eQorQ09ORklHX0hBVkVfS1JFVFBST0JFUz15CitDT05GSUdfUFJPQ19QQUdFX01PTklUT1I9eQorQ09ORklHX1NMQUJJTkZPPXkKIENPTkZJR19SVF9NVVRFWEVTPXkKICMgQ09ORklHX1RJTllfU0hNRU0gaXMgbm90IHNldAogQ09ORklHX0JBU0VfU01BTEw9MApAQCAtMTI1LDYgKzEzOSw3IEBACiAjIENPTkZJR19ERUZBVUxUX0NGUSBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUZBVUxUX05PT1AgaXMgbm90IHNldAogQ09ORklHX0RFRkFVTFRfSU9TQ0hFRD0iYW50aWNpcGF0b3J5IgorQ09ORklHX0NMQVNTSUNfUkNVPXkKIAogIwogIyBQbGF0Zm9ybSBzdXBwb3J0CkBAIC0xMzMsMTggKzE0OCwyMyBAQAogIyBDT05GSUdfUFBDXzgyeHggaXMgbm90IHNldAogQ09ORklHX1BQQ184M3h4PXkKICMgQ09ORklHX1BQQ184Nnh4IGlzIG5vdCBzZXQKLSMgQ09ORklHX1BQQ19NUEM1Mnh4IGlzIG5vdCBzZXQKLSMgQ09ORklHX1BQQ19NUEM1MjAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ19NUEM1MTJ4IGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ19NUEM1MTIxIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19DRUxMIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19DRUxMX05BVElWRSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUTJBRFMgaXMgbm90IHNldAotIyBDT05GSUdfTVBDODMxM19SREIgaXMgbm90IHNldAorQ09ORklHX01QQzgzeHg9eQorIyBDT05GSUdfTVBDODMxeF9SREIgaXMgbm90IHNldAogIyBDT05GSUdfTVBDODMyeF9NRFMgaXMgbm90IHNldAogIyBDT05GSUdfTVBDODMyeF9SREIgaXMgbm90IHNldAogQ09ORklHX01QQzgzNHhfTURTPXkKICMgQ09ORklHX01QQzgzNHhfSVRYIGlzIG5vdCBzZXQKICMgQ09ORklHX01QQzgzNnhfTURTIGlzIG5vdCBzZXQKLUNPTkZJR19NUEM4MzR4PXkKKyMgQ09ORklHX01QQzgzN3hfTURTIGlzIG5vdCBzZXQKKyMgQ09ORklHX01QQzgzN3hfUkRCIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NCQzgzNHggaXMgbm90IHNldAorQ09ORklHX1BQQ19NUEM4MzR4PXkKK0NPTkZJR19JUElDPXkKICMgQ09ORklHX01QSUMgaXMgbm90IHNldAogIyBDT05GSUdfTVBJQ19XRUlSRCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfSTgyNTkgaXMgbm90IHNldApAQCAtMTU1LDcgKzE3NSw2IEBACiAjIENPTkZJR19QUENfSU5ESVJFQ1RfSU8gaXMgbm90IHNldAogIyBDT05GSUdfR0VORVJJQ19JT01BUCBpcyBub3Qgc2V0CiAjIENPTkZJR19DUFVfRlJFUSBpcyBub3Qgc2V0Ci0jIENPTkZJR19DUE0yIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZTTF9VTEkxNTc1IGlzIG5vdCBzZXQKIAogIwpAQCAtMTcxLDEyICsxOTAsMTYgQEAKICMgQ09ORklHX0haXzMwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19IWl8xMDAwIGlzIG5vdCBzZXQKIENPTkZJR19IWj0yNTAKKyMgQ09ORklHX1NDSEVEX0hSVElDSyBpcyBub3Qgc2V0CiBDT05GSUdfUFJFRU1QVF9OT05FPXkKICMgQ09ORklHX1BSRUVNUFRfVk9MVU5UQVJZIGlzIG5vdCBzZXQKICMgQ09ORklHX1BSRUVNUFQgaXMgbm90IHNldAogQ09ORklHX0JJTkZNVF9FTEY9eQogIyBDT05GSUdfQklORk1UX01JU0MgaXMgbm90IHNldAorIyBDT05GSUdfSU9NTVVfSEVMUEVSIGlzIG5vdCBzZXQKIENPTkZJR19BUkNIX0VOQUJMRV9NRU1PUllfSE9UUExVRz15CitDT05GSUdfQVJDSF9IQVNfV0FMS19NRU1PUlk9eQorQ09ORklHX0FSQ0hfRU5BQkxFX01FTU9SWV9IT1RSRU1PVkU9eQogQ09ORklHX0FSQ0hfRkxBVE1FTV9FTkFCTEU9eQogQ09ORklHX0FSQ0hfUE9QVUxBVEVTX05PREVfTUFQPXkKIENPTkZJR19TRUxFQ1RfTUVNT1JZX01PREVMPXkKQEAgLTE5NSwxMSArMjE4LDcgQEAKIENPTkZJR19QUk9DX0RFVklDRVRSRUU9eQogIyBDT05GSUdfQ01ETElORV9CT09MIGlzIG5vdCBzZXQKICMgQ09ORklHX1BNIGlzIG5vdCBzZXQKLUNPTkZJR19TVVNQRU5EX1VQX1BPU1NJQkxFPXkKLUNPTkZJR19ISUJFUk5BVElPTl9VUF9QT1NTSUJMRT15CiBDT05GSUdfU0VDQ09NUD15Ci1DT05GSUdfV0FOVF9ERVZJQ0VfVFJFRT15Ci1DT05GSUdfREVWSUNFX1RSRUU9IiIKIENPTkZJR19JU0FfRE1BX0FQST15CiAKICMKQEAgLTI0OCw2ICsyNjcsNyBAQAogQ09ORklHX1hGUk1fVVNFUj1tCiAjIENPTkZJR19YRlJNX1NVQl9QT0xJQ1kgaXMgbm90IHNldAogIyBDT05GSUdfWEZSTV9NSUdSQVRFIGlzIG5vdCBzZXQKKyMgQ09ORklHX1hGUk1fU1RBVElTVElDUyBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRfS0VZIGlzIG5vdCBzZXQKIENPTkZJR19JTkVUPXkKIENPTkZJR19JUF9NVUxUSUNBU1Q9eQpAQCAtMzAzLDYgKzMyMyw3IEBACiAjCiAjIENPTkZJR19ORVRfUEtUR0VOIGlzIG5vdCBzZXQKICMgQ09ORklHX0hBTVJBRElPIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NBTiBpcyBub3Qgc2V0CiAjIENPTkZJR19JUkRBIGlzIG5vdCBzZXQKICMgQ09ORklHX0JUIGlzIG5vdCBzZXQKICMgQ09ORklHX0FGX1JYUlBDIGlzIG5vdCBzZXQKQEAgLTM0Nyw3ICszNjgsNyBAQAogQ09ORklHX0JMS19ERVZfUkFNPXkKIENPTkZJR19CTEtfREVWX1JBTV9DT1VOVD0xNgogQ09ORklHX0JMS19ERVZfUkFNX1NJWkU9MzI3NjgKLUNPTkZJR19CTEtfREVWX1JBTV9CTE9DS1NJWkU9MTAyNAorIyBDT05GSUdfQkxLX0RFVl9YSVAgaXMgbm90IHNldAogIyBDT05GSUdfQ0RST01fUEtUQ0RWRCBpcyBub3Qgc2V0CiAjIENPTkZJR19BVEFfT1ZFUl9FVEggaXMgbm90IHNldAogQ09ORklHX01JU0NfREVWSUNFUz15CkBAIC0zNTUsNiArMzc2LDggQEAKICMgQ09ORklHX0VFUFJPTV85M0NYNiBpcyBub3Qgc2V0CiAjIENPTkZJR19TR0lfSU9DNCBpcyBub3Qgc2V0CiAjIENPTkZJR19USUZNX0NPUkUgaXMgbm90IHNldAorIyBDT05GSUdfRU5DTE9TVVJFX1NFUlZJQ0VTIGlzIG5vdCBzZXQKK0NPTkZJR19IQVZFX0lERT15CiAjIENPTkZJR19JREUgaXMgbm90IHNldAogCiAjCkBAIC0zODMsNyArNDA2LDYgQEAKICMgQ09ORklHX0VRVUFMSVpFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19UVU4gaXMgbm90IHNldAogIyBDT05GSUdfVkVUSCBpcyBub3Qgc2V0Ci0jIENPTkZJR19JUDEwMDAgaXMgbm90IHNldAogIyBDT05GSUdfQVJDTkVUIGlzIG5vdCBzZXQKIENPTkZJR19QSFlMSUI9eQogCkBAIC0zOTksNiArNDIxLDcgQEAKICMgQ09ORklHX1NNU0NfUEhZIGlzIG5vdCBzZXQKICMgQ09ORklHX0JST0FEQ09NX1BIWSBpcyBub3Qgc2V0CiAjIENPTkZJR19JQ1BMVVNfUEhZIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JFQUxURUtfUEhZIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZJWEVEX1BIWSBpcyBub3Qgc2V0CiAjIENPTkZJR19NRElPX0JJVEJBTkcgaXMgbm90IHNldAogQ09ORklHX05FVF9FVEhFUk5FVD15CkBAIC00MjYsNiArNDQ5LDcgQEAKICMgQ09ORklHX05FMktfUENJIGlzIG5vdCBzZXQKICMgQ09ORklHXzgxMzlDUCBpcyBub3Qgc2V0CiAjIENPTkZJR184MTM5VE9PIGlzIG5vdCBzZXQKKyMgQ09ORklHX1I2MDQwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NJUzkwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19FUElDMTAwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NVTkRBTkNFIGlzIG5vdCBzZXQKQEAgLTQzNyw2ICs0NjEsOSBAQAogIyBDT05GSUdfREwySyBpcyBub3Qgc2V0CiAjIENPTkZJR19FMTAwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19FMTAwMEUgaXMgbm90IHNldAorIyBDT05GSUdfRTEwMDBFX0VOQUJMRUQgaXMgbm90IHNldAorIyBDT05GSUdfSVAxMDAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lHQiBpcyBub3Qgc2V0CiAjIENPTkZJR19OUzgzODIwIGlzIG5vdCBzZXQKICMgQ09ORklHX0hBTUFDSEkgaXMgbm90IHNldAogIyBDT05GSUdfWUVMTE9XRklOIGlzIG5vdCBzZXQKQEAgLTQ2Myw2ICs0OTAsNyBAQAogIyBDT05GSUdfTklVIGlzIG5vdCBzZXQKICMgQ09ORklHX01MWDRfQ09SRSBpcyBub3Qgc2V0CiAjIENPTkZJR19URUhVVEkgaXMgbm90IHNldAorIyBDT05GSUdfQk5YMlggaXMgbm90IHNldAogIyBDT05GSUdfVFIgaXMgbm90IHNldAogCiAjCkBAIC00NzUsNyArNTAzLDYgQEAKICMgQ09ORklHX0hJUFBJIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQUCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTElQIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NIQVBFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRDT05TT0xFIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVFBPTEwgaXMgbm90IHNldAogIyBDT05GSUdfTkVUX1BPTExfQ09OVFJPTExFUiBpcyBub3Qgc2V0CkBAIC01MTgsNiArNTQ1LDcgQEAKICMKICMgQ09ORklHX1ZUIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFUklBTF9OT05TVEFOREFSRCBpcyBub3Qgc2V0CisjIENPTkZJR19OT1pPTUkgaXMgbm90IHNldAogCiAjCiAjIFNlcmlhbCBkcml2ZXJzCkBAIC01NDMsOCArNTcxLDcgQEAKICMgQ09ORklHX0lQTUlfSEFORExFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19IV19SQU5ET00gaXMgbm90IHNldAogIyBDT05GSUdfTlZSQU0gaXMgbm90IHNldAotQ09ORklHX0dFTl9SVEM9eQotIyBDT05GSUdfR0VOX1JUQ19YIGlzIG5vdCBzZXQKKyMgQ09ORklHX0dFTl9SVEMgaXMgbm90IHNldAogIyBDT05GSUdfUjM5NjQgaXMgbm90IHNldAogIyBDT05GSUdfQVBQTElDT00gaXMgbm90IHNldAogIyBDT05GSUdfUkFXX0RSSVZFUiBpcyBub3Qgc2V0CkBAIC01OTEsMTQgKzYxOCwxMiBAQAogIwogIyBNaXNjZWxsYW5lb3VzIEkyQyBDaGlwIHN1cHBvcnQKICMKLSMgQ09ORklHX1NFTlNPUlNfRFMxMzM3IGlzIG5vdCBzZXQKLSMgQ09ORklHX1NFTlNPUlNfRFMxMzc0IGlzIG5vdCBzZXQKICMgQ09ORklHX0RTMTY4MiBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0VFUFJPTSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1BDRjg1NzQgaXMgbm90IHNldAotIyBDT05GSUdfU0VOU09SU19QQ0E5NTM5IGlzIG5vdCBzZXQKKyMgQ09ORklHX1BDRjg1NzUgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19QQ0Y4NTkxIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NFTlNPUlNfTTQxVDAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RQUzY1MDEwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfTUFYNjg3NSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1RTTDI1NTAgaXMgbm90IHNldAogIyBDT05GSUdfSTJDX0RFQlVHX0NPUkUgaXMgbm90IHNldApAQCAtNjIzLDYgKzY0OCw3IEBACiAjIENPTkZJR19TRU5TT1JTX0FETTEwMzEgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19BRE05MjQwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfQURUNzQ3MCBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX0FEVDc0NzMgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19BVFhQMSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0RTMTYyMSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0k1S19BTUIgaXMgbm90IHNldApAQCAtNjUyLDYgKzY3OCw3IEBACiAjIENPTkZJR19TRU5TT1JTX1NNU0M0N00xIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfU01TQzQ3TTE5MiBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1NNU0M0N0IzOTcgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19BRFM3ODI4IGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVEhNQzUwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVklBNjg2QSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1ZUMTIxMSBpcyBub3Qgc2V0CkBAIC02NjEsOSArNjg4LDExIEBACiAjIENPTkZJR19TRU5TT1JTX1c4Mzc5MkQgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19XODM3OTMgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19XODNMNzg1VFMgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19XODNMNzg2TkcgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19XODM2MjdIRiBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1c4MzYyN0VIRiBpcyBub3Qgc2V0CiAjIENPTkZJR19IV01PTl9ERUJVR19DSElQIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RIRVJNQUwgaXMgbm90IHNldAogQ09ORklHX1dBVENIRE9HPXkKICMgQ09ORklHX1dBVENIRE9HX05PV0FZT1VUIGlzIG5vdCBzZXQKIApAQCAtNzI1LDE4ICs3NTQsMTMgQEAKIENPTkZJR19VU0JfQVJDSF9IQVNfT0hDST15CiBDT05GSUdfVVNCX0FSQ0hfSEFTX0VIQ0k9eQogIyBDT05GSUdfVVNCIGlzIG5vdCBzZXQKLUNPTkZJR19VU0JfRUhDSV9ST09UX0hVQl9UVD15Ci1DT05GSUdfVVNCX0VIQ0lfRlNMPXkKIAogIwogIyBOT1RFOiBVU0JfU1RPUkFHRSBlbmFibGVzIFNDU0ksIGFuZCAnU0NTSSBkaXNrIHN1cHBvcnQnCiAjCi0KLSMKLSMgVVNCIEdhZGdldCBTdXBwb3J0Ci0jCiAjIENPTkZJR19VU0JfR0FER0VUIGlzIG5vdCBzZXQKICMgQ09ORklHX01NQyBpcyBub3Qgc2V0CisjIENPTkZJR19NRU1TVElDSyBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVdfTEVEUyBpcyBub3Qgc2V0CiAjIENPTkZJR19JTkZJTklCQU5EIGlzIG5vdCBzZXQKICMgQ09ORklHX0VEQUMgaXMgbm90IHNldApAQCAtNzY4LDYgKzc5Miw3IEBACiAjIENPTkZJR19SVENfRFJWX1BDRjg1NjMgaXMgbm90IHNldAogIyBDT05GSUdfUlRDX0RSVl9QQ0Y4NTgzIGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfTTQxVDgwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JUQ19EUlZfUzM1MzkwQSBpcyBub3Qgc2V0CiAKICMKICMgU1BJIFJUQyBkcml2ZXJzCkBAIC03NzcsOSArODAyLDEwIEBACiAjIFBsYXRmb3JtIFJUQyBkcml2ZXJzCiAjCiAjIENPTkZJR19SVENfRFJWX0NNT1MgaXMgbm90IHNldAorIyBDT05GSUdfUlRDX0RSVl9EUzE1MTEgaXMgbm90IHNldAogIyBDT05GSUdfUlRDX0RSVl9EUzE1NTMgaXMgbm90IHNldAotIyBDT05GSUdfUlRDX0RSVl9TVEsxN1RBOCBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfRFJWX0RTMTc0MiBpcyBub3Qgc2V0CisjIENPTkZJR19SVENfRFJWX1NUSzE3VEE4IGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfTTQ4VDg2IGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfTTQ4VDU5IGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfVjMwMjAgaXMgbm90IHNldApAQCAtNzg3LDYgKzgxMyw3IEBACiAjCiAjIG9uLUNQVSBSVEMgZHJpdmVycwogIworIyBDT05GSUdfRE1BREVWSUNFUyBpcyBub3Qgc2V0CiAKICMKICMgVXNlcnNwYWNlIEkvTwpAQCAtODEyLDEyICs4MzksMTAgQEAKICMgQ09ORklHX1hGU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19HRlMyX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX09DRlMyX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX01JTklYX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1JPTUZTX0ZTIGlzIG5vdCBzZXQKK0NPTkZJR19ETk9USUZZPXkKIENPTkZJR19JTk9USUZZPXkKIENPTkZJR19JTk9USUZZX1VTRVI9eQogIyBDT05GSUdfUVVPVEEgaXMgbm90IHNldAotQ09ORklHX0ROT1RJRlk9eQogIyBDT05GSUdfQVVUT0ZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0FVVE9GUzRfRlMgaXMgbm90IHNldAogIyBDT05GSUdfRlVTRV9GUyBpcyBub3Qgc2V0CkBAIC04NTksOCArODg0LDEwIEBACiAjIENPTkZJR19FRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfQ1JBTUZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1ZYRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfTUlOSVhfRlMgaXMgbm90IHNldAogIyBDT05GSUdfSFBGU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19RTlg0RlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfU1lTVl9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19VRlNfRlMgaXMgbm90IHNldAogQ09ORklHX05FVFdPUktfRklMRVNZU1RFTVM9eQpAQCAtOTA0LDcgKzkzMSw2IEBACiAjIENPTkZJR19TWVNWNjhfUEFSVElUSU9OIGlzIG5vdCBzZXQKICMgQ09ORklHX05MUyBpcyBub3Qgc2V0CiAjIENPTkZJR19ETE0gaXMgbm90IHNldAotIyBDT05GSUdfVUNDX1NMT1cgaXMgbm90IHNldAogCiAjCiAjIExpYnJhcnkgcm91dGluZXMKQEAgLTkyMCw3ICs5NDYsNiBAQAogQ09ORklHX0hBU19JT01FTT15CiBDT05GSUdfSEFTX0lPUE9SVD15CiBDT05GSUdfSEFTX0RNQT15Ci0jIENPTkZJR19JTlNUUlVNRU5UQVRJT04gaXMgbm90IHNldAogCiAjCiAjIEtlcm5lbCBoYWNraW5nCkBAIC05MzQsNiArOTU5LDcgQEAKICMgQ09ORklHX0hFQURFUlNfQ0hFQ0sgaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfS0VSTkVMIGlzIG5vdCBzZXQKICMgQ09ORklHX1NMVUJfREVCVUdfT04gaXMgbm90IHNldAorIyBDT05GSUdfU0xVQl9TVEFUUyBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19CVUdWRVJCT1NFIGlzIG5vdCBzZXQKICMgQ09ORklHX1NBTVBMRVMgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0VBUkxZX0RFQlVHIGlzIG5vdCBzZXQKQEAgLTk0Nyw2ICs5NzMsNyBAQAogQ09ORklHX0NSWVBUTz15CiBDT05GSUdfQ1JZUFRPX0FMR0FQST15CiBDT05GSUdfQ1JZUFRPX0JMS0NJUEhFUj15CisjIENPTkZJR19DUllQVE9fU0VRSVYgaXMgbm90IHNldAogQ09ORklHX0NSWVBUT19NQU5BR0VSPXkKICMgQ09ORklHX0NSWVBUT19ITUFDIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19YQ0JDIGlzIG5vdCBzZXQKQEAgLTk2NCw2ICs5OTEsOSBAQAogQ09ORklHX0NSWVBUT19QQ0JDPW0KICMgQ09ORklHX0NSWVBUT19MUlcgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX1hUUyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ1RSIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19HQ00gaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NDTSBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fQ1JZUFREIGlzIG5vdCBzZXQKIENPTkZJR19DUllQVE9fREVTPXkKICMgQ09ORklHX0NSWVBUT19GQ1JZUFQgaXMgbm90IHNldApAQCAtOTc4LDExICsxMDA4LDE0IEBACiAjIENPTkZJR19DUllQVE9fS0hBWkFEIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19BTlVCSVMgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX1NFRUQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1NBTFNBMjAgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0RFRkxBVEUgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX01JQ0hBRUxfTUlDIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19DUkMzMkMgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0NBTUVMTElBIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19URVNUIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19BVVRIRU5DIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19MWk8gaXMgbm90IHNldAogQ09ORklHX0NSWVBUT19IVz15CisjIENPTkZJR19DUllQVE9fREVWX0hJRk5fNzk1WCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfQ0xPQ0sgaXMgbm90IHNldApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODM2eF9tZHNfZGVmY29uZmlnIGIvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODM2eF9tZHNfZGVmY29uZmlnCmluZGV4IGM0NGZjNTYuLmQ1MGE5NmUgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jb25maWdzL21wYzgzNnhfbWRzX2RlZmNvbmZpZworKysgYi9hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM4MzZ4X21kc19kZWZjb25maWcKQEAgLTEsNyArMSw3IEBACiAjCiAjIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIG1ha2UgY29uZmlnOiBkb24ndCBlZGl0Ci0jIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMjQtcmM0Ci0jIFRodSBEZWMgIDYgMTY6NDg6NDMgMjAwNworIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjI1LXJjNworIyBNb24gTWFyIDMxIDExOjM2OjU3IDIwMDgKICMKICMgQ09ORklHX1BQQzY0IGlzIG5vdCBzZXQKIApAQCAtMTQsOCArMTQsOCBAQAogIyBDT05GSUdfNDB4IGlzIG5vdCBzZXQKICMgQ09ORklHXzQ0eCBpcyBub3Qgc2V0CiAjIENPTkZJR19FMjAwIGlzIG5vdCBzZXQKLUNPTkZJR184M3h4PXkKIENPTkZJR19QUENfRlBVPXkKKyMgQ09ORklHX0ZTTF9FTUJfUEVSRk1PTiBpcyBub3Qgc2V0CiBDT05GSUdfUFBDX1NURF9NTVU9eQogQ09ORklHX1BQQ19TVERfTU1VXzMyPXkKICMgQ09ORklHX1BQQ19NTV9TTElDRVMgaXMgbm90IHNldApAQCAtMjksNiArMjksNyBAQAogQ09ORklHX0dFTkVSSUNfVElNRV9WU1lTQ0FMTD15CiBDT05GSUdfR0VORVJJQ19DTE9DS0VWRU5UUz15CiBDT05GSUdfR0VORVJJQ19IQVJESVJRUz15CisjIENPTkZJR19IQVZFX1NFVFVQX1BFUl9DUFVfQVJFQSBpcyBub3Qgc2V0CiBDT05GSUdfSVJRX1BFUl9DUFU9eQogQ09ORklHX1JXU0VNX1hDSEdBRERfQUxHT1JJVEhNPXkKIENPTkZJR19BUkNIX0hBU19JTE9HMl9VMzI9eQpAQCAtNjYsMTUgKzY3LDE5IEBACiAjIENPTkZJR19QT1NJWF9NUVVFVUUgaXMgbm90IHNldAogIyBDT05GSUdfQlNEX1BST0NFU1NfQUNDVCBpcyBub3Qgc2V0CiAjIENPTkZJR19UQVNLU1RBVFMgaXMgbm90IHNldAotIyBDT05GSUdfVVNFUl9OUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19QSURfTlMgaXMgbm90IHNldAogIyBDT05GSUdfQVVESVQgaXMgbm90IHNldAogIyBDT05GSUdfSUtDT05GSUcgaXMgbm90IHNldAogQ09ORklHX0xPR19CVUZfU0hJRlQ9MTQKICMgQ09ORklHX0NHUk9VUFMgaXMgbm90IHNldAorQ09ORklHX0dST1VQX1NDSEVEPXkKICMgQ09ORklHX0ZBSVJfR1JPVVBfU0NIRUQgaXMgbm90IHNldAorIyBDT05GSUdfUlRfR1JPVVBfU0NIRUQgaXMgbm90IHNldAorQ09ORklHX1VTRVJfU0NIRUQ9eQorIyBDT05GSUdfQ0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKIENPTkZJR19TWVNGU19ERVBSRUNBVEVEPXkKK0NPTkZJR19TWVNGU19ERVBSRUNBVEVEX1YyPXkKICMgQ09ORklHX1JFTEFZIGlzIG5vdCBzZXQKKyMgQ09ORklHX05BTUVTUEFDRVMgaXMgbm90IHNldAogQ09ORklHX0JMS19ERVZfSU5JVFJEPXkKIENPTkZJR19JTklUUkFNRlNfU09VUkNFPSIiCiAjIENPTkZJR19DQ19PUFRJTUlaRV9GT1JfU0laRSBpcyBub3Qgc2V0CkBAIC04NiwxMSArOTEsMTMgQEAKIENPTkZJR19QUklOVEs9eQogQ09ORklHX0JVRz15CiBDT05GSUdfRUxGX0NPUkU9eQorQ09ORklHX0NPTVBBVF9CUks9eQogQ09ORklHX0JBU0VfRlVMTD15CiBDT05GSUdfRlVURVg9eQogQ09ORklHX0FOT05fSU5PREVTPXkKICMgQ09ORklHX0VQT0xMIGlzIG5vdCBzZXQKIENPTkZJR19TSUdOQUxGRD15CitDT05GSUdfVElNRVJGRD15CiBDT05GSUdfRVZFTlRGRD15CiBDT05GSUdfU0hNRU09eQogQ09ORklHX1ZNX0VWRU5UX0NPVU5URVJTPXkKQEAgLTk4LDYgKzEwNSwxMyBAQAogIyBDT05GSUdfU0xBQiBpcyBub3Qgc2V0CiBDT05GSUdfU0xVQj15CiAjIENPTkZJR19TTE9CIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BST0ZJTElORyBpcyBub3Qgc2V0CisjIENPTkZJR19NQVJLRVJTIGlzIG5vdCBzZXQKK0NPTkZJR19IQVZFX09QUk9GSUxFPXkKK0NPTkZJR19IQVZFX0tQUk9CRVM9eQorQ09ORklHX0hBVkVfS1JFVFBST0JFUz15CitDT05GSUdfUFJPQ19QQUdFX01PTklUT1I9eQorQ09ORklHX1NMQUJJTkZPPXkKIENPTkZJR19SVF9NVVRFWEVTPXkKICMgQ09ORklHX1RJTllfU0hNRU0gaXMgbm90IHNldAogQ09ORklHX0JBU0VfU01BTEw9MApAQCAtMTI1LDYgKzEzOSw3IEBACiAjIENPTkZJR19ERUZBVUxUX0NGUSBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUZBVUxUX05PT1AgaXMgbm90IHNldAogQ09ORklHX0RFRkFVTFRfSU9TQ0hFRD0iYW50aWNpcGF0b3J5IgorQ09ORklHX0NMQVNTSUNfUkNVPXkKIAogIwogIyBQbGF0Zm9ybSBzdXBwb3J0CkBAIC0xMzMsMTggKzE0OCwyMiBAQAogIyBDT05GSUdfUFBDXzgyeHggaXMgbm90IHNldAogQ09ORklHX1BQQ184M3h4PXkKICMgQ09ORklHX1BQQ184Nnh4IGlzIG5vdCBzZXQKLSMgQ09ORklHX1BQQ19NUEM1Mnh4IGlzIG5vdCBzZXQKLSMgQ09ORklHX1BQQ19NUEM1MjAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ19NUEM1MTJ4IGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ19NUEM1MTIxIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19DRUxMIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19DRUxMX05BVElWRSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUTJBRFMgaXMgbm90IHNldAotIyBDT05GSUdfTVBDODMxM19SREIgaXMgbm90IHNldAorQ09ORklHX01QQzgzeHg9eQorIyBDT05GSUdfTVBDODMxeF9SREIgaXMgbm90IHNldAogIyBDT05GSUdfTVBDODMyeF9NRFMgaXMgbm90IHNldAogIyBDT05GSUdfTVBDODMyeF9SREIgaXMgbm90IHNldAogIyBDT05GSUdfTVBDODM0eF9NRFMgaXMgbm90IHNldAogIyBDT05GSUdfTVBDODM0eF9JVFggaXMgbm90IHNldAogQ09ORklHX01QQzgzNnhfTURTPXkKLUNPTkZJR19QUENfTVBDODM2eD15CisjIENPTkZJR19NUEM4Mzd4X01EUyBpcyBub3Qgc2V0CisjIENPTkZJR19NUEM4Mzd4X1JEQiBpcyBub3Qgc2V0CisjIENPTkZJR19TQkM4MzR4IGlzIG5vdCBzZXQKK0NPTkZJR19JUElDPXkKICMgQ09ORklHX01QSUMgaXMgbm90IHNldAogIyBDT05GSUdfTVBJQ19XRUlSRCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfSTgyNTkgaXMgbm90IHNldApAQCAtMTU2LDcgKzE3NSw2IEBACiAjIENPTkZJR19HRU5FUklDX0lPTUFQIGlzIG5vdCBzZXQKICMgQ09ORklHX0NQVV9GUkVRIGlzIG5vdCBzZXQKIENPTkZJR19RVUlDQ19FTkdJTkU9eQotIyBDT05GSUdfQ1BNMiBpcyBub3Qgc2V0CiAjIENPTkZJR19GU0xfVUxJMTU3NSBpcyBub3Qgc2V0CiAKICMKQEAgLTE3MiwxMiArMTkwLDE2IEBACiAjIENPTkZJR19IWl8zMDAgaXMgbm90IHNldAogIyBDT05GSUdfSFpfMTAwMCBpcyBub3Qgc2V0CiBDT05GSUdfSFo9MjUwCisjIENPTkZJR19TQ0hFRF9IUlRJQ0sgaXMgbm90IHNldAogQ09ORklHX1BSRUVNUFRfTk9ORT15CiAjIENPTkZJR19QUkVFTVBUX1ZPTFVOVEFSWSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUkVFTVBUIGlzIG5vdCBzZXQKIENPTkZJR19CSU5GTVRfRUxGPXkKICMgQ09ORklHX0JJTkZNVF9NSVNDIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lPTU1VX0hFTFBFUiBpcyBub3Qgc2V0CiBDT05GSUdfQVJDSF9FTkFCTEVfTUVNT1JZX0hPVFBMVUc9eQorQ09ORklHX0FSQ0hfSEFTX1dBTEtfTUVNT1JZPXkKK0NPTkZJR19BUkNIX0VOQUJMRV9NRU1PUllfSE9UUkVNT1ZFPXkKIENPTkZJR19BUkNIX0ZMQVRNRU1fRU5BQkxFPXkKIENPTkZJR19BUkNIX1BPUFVMQVRFU19OT0RFX01BUD15CiBDT05GSUdfU0VMRUNUX01FTU9SWV9NT0RFTD15CkBAIC0xOTYsMTEgKzIxOCw3IEBACiBDT05GSUdfUFJPQ19ERVZJQ0VUUkVFPXkKICMgQ09ORklHX0NNRExJTkVfQk9PTCBpcyBub3Qgc2V0CiAjIENPTkZJR19QTSBpcyBub3Qgc2V0Ci1DT05GSUdfU1VTUEVORF9VUF9QT1NTSUJMRT15Ci1DT05GSUdfSElCRVJOQVRJT05fVVBfUE9TU0lCTEU9eQogQ09ORklHX1NFQ0NPTVA9eQotQ09ORklHX1dBTlRfREVWSUNFX1RSRUU9eQotQ09ORklHX0RFVklDRV9UUkVFPSIiCiBDT05GSUdfSVNBX0RNQV9BUEk9eQogCiAjCkBAIC0yNDksNiArMjY3LDcgQEAKICMgQ09ORklHX1hGUk1fVVNFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19YRlJNX1NVQl9QT0xJQ1kgaXMgbm90IHNldAogIyBDT05GSUdfWEZSTV9NSUdSQVRFIGlzIG5vdCBzZXQKKyMgQ09ORklHX1hGUk1fU1RBVElTVElDUyBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRfS0VZIGlzIG5vdCBzZXQKIENPTkZJR19JTkVUPXkKIENPTkZJR19JUF9NVUxUSUNBU1Q9eQpAQCAtMzA0LDYgKzMyMyw3IEBACiAjCiAjIENPTkZJR19ORVRfUEtUR0VOIGlzIG5vdCBzZXQKICMgQ09ORklHX0hBTVJBRElPIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NBTiBpcyBub3Qgc2V0CiAjIENPTkZJR19JUkRBIGlzIG5vdCBzZXQKICMgQ09ORklHX0JUIGlzIG5vdCBzZXQKICMgQ09ORklHX0FGX1JYUlBDIGlzIG5vdCBzZXQKQEAgLTM0OCw3ICszNjgsNyBAQAogQ09ORklHX0JMS19ERVZfUkFNPXkKIENPTkZJR19CTEtfREVWX1JBTV9DT1VOVD0xNgogQ09ORklHX0JMS19ERVZfUkFNX1NJWkU9MzI3NjgKLUNPTkZJR19CTEtfREVWX1JBTV9CTE9DS1NJWkU9MTAyNAorIyBDT05GSUdfQkxLX0RFVl9YSVAgaXMgbm90IHNldAogIyBDT05GSUdfQ0RST01fUEtUQ0RWRCBpcyBub3Qgc2V0CiAjIENPTkZJR19BVEFfT1ZFUl9FVEggaXMgbm90IHNldAogQ09ORklHX01JU0NfREVWSUNFUz15CkBAIC0zNTYsNiArMzc2LDggQEAKICMgQ09ORklHX0VFUFJPTV85M0NYNiBpcyBub3Qgc2V0CiAjIENPTkZJR19TR0lfSU9DNCBpcyBub3Qgc2V0CiAjIENPTkZJR19USUZNX0NPUkUgaXMgbm90IHNldAorIyBDT05GSUdfRU5DTE9TVVJFX1NFUlZJQ0VTIGlzIG5vdCBzZXQKK0NPTkZJR19IQVZFX0lERT15CiAjIENPTkZJR19JREUgaXMgbm90IHNldAogCiAjCkBAIC00MjAsNiArNDQyLDcgQEAKICMgQ09ORklHX1NDU0lfSVBTIGlzIG5vdCBzZXQKICMgQ09ORklHX1NDU0lfSU5JVElPIGlzIG5vdCBzZXQKICMgQ09ORklHX1NDU0lfSU5JQTEwMCBpcyBub3Qgc2V0CisjIENPTkZJR19TQ1NJX01WU0FTIGlzIG5vdCBzZXQKICMgQ09ORklHX1NDU0lfU1RFWCBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX1NZTTUzQzhYWF8yIGlzIG5vdCBzZXQKICMgQ09ORklHX1NDU0lfUUxPR0lDXzEyODAgaXMgbm90IHNldApAQCAtNDUwLDcgKzQ3Myw2IEBACiAjIENPTkZJR19FUVVBTElaRVIgaXMgbm90IHNldAogIyBDT05GSUdfVFVOIGlzIG5vdCBzZXQKICMgQ09ORklHX1ZFVEggaXMgbm90IHNldAotIyBDT05GSUdfSVAxMDAwIGlzIG5vdCBzZXQKICMgQ09ORklHX0FSQ05FVCBpcyBub3Qgc2V0CiBDT05GSUdfUEhZTElCPXkKIApAQCAtNDY2LDYgKzQ4OCw3IEBACiAjIENPTkZJR19TTVNDX1BIWSBpcyBub3Qgc2V0CiAjIENPTkZJR19CUk9BRENPTV9QSFkgaXMgbm90IHNldAogIyBDT05GSUdfSUNQTFVTX1BIWSBpcyBub3Qgc2V0CisjIENPTkZJR19SRUFMVEVLX1BIWSBpcyBub3Qgc2V0CiAjIENPTkZJR19GSVhFRF9QSFkgaXMgbm90IHNldAogIyBDT05GSUdfTURJT19CSVRCQU5HIGlzIG5vdCBzZXQKIENPTkZJR19ORVRfRVRIRVJORVQ9eQpAQCAtNDg3LDYgKzUxMCw5IEBACiAjIENPTkZJR19ETDJLIGlzIG5vdCBzZXQKICMgQ09ORklHX0UxMDAwIGlzIG5vdCBzZXQKICMgQ09ORklHX0UxMDAwRSBpcyBub3Qgc2V0CisjIENPTkZJR19FMTAwMEVfRU5BQkxFRCBpcyBub3Qgc2V0CisjIENPTkZJR19JUDEwMDAgaXMgbm90IHNldAorIyBDT05GSUdfSUdCIGlzIG5vdCBzZXQKICMgQ09ORklHX05TODM4MjAgaXMgbm90IHNldAogIyBDT05GSUdfSEFNQUNISSBpcyBub3Qgc2V0CiAjIENPTkZJR19ZRUxMT1dGSU4gaXMgbm90IHNldApAQCAtNTE3LDYgKzU0Myw3IEBACiAjIENPTkZJR19OSVUgaXMgbm90IHNldAogIyBDT05GSUdfTUxYNF9DT1JFIGlzIG5vdCBzZXQKICMgQ09ORklHX1RFSFVUSSBpcyBub3Qgc2V0CisjIENPTkZJR19CTlgyWCBpcyBub3Qgc2V0CiAjIENPTkZJR19UUiBpcyBub3Qgc2V0CiAKICMKQEAgLTUzMCw3ICs1NTcsNiBAQAogIyBDT05GSUdfUFBQIGlzIG5vdCBzZXQKICMgQ09ORklHX1NMSVAgaXMgbm90IHNldAogIyBDT05GSUdfTkVUX0ZDIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NIQVBFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRDT05TT0xFIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVFBPTEwgaXMgbm90IHNldAogIyBDT05GSUdfTkVUX1BPTExfQ09OVFJPTExFUiBpcyBub3Qgc2V0CkBAIC01NzMsNiArNTk5LDcgQEAKICMKICMgQ09ORklHX1ZUIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFUklBTF9OT05TVEFOREFSRCBpcyBub3Qgc2V0CisjIENPTkZJR19OT1pPTUkgaXMgbm90IHNldAogCiAjCiAjIFNlcmlhbCBkcml2ZXJzCkBAIC01OTIsMTQgKzYxOSwxNCBAQAogQ09ORklHX1NFUklBTF9DT1JFX0NPTlNPTEU9eQogIyBDT05GSUdfU0VSSUFMX0pTTSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRVJJQUxfT0ZfUExBVEZPUk0gaXMgbm90IHNldAorIyBDT05GSUdfU0VSSUFMX1FFIGlzIG5vdCBzZXQKIENPTkZJR19VTklYOThfUFRZUz15CiBDT05GSUdfTEVHQUNZX1BUWVM9eQogQ09ORklHX0xFR0FDWV9QVFlfQ09VTlQ9MjU2CiAjIENPTkZJR19JUE1JX0hBTkRMRVIgaXMgbm90IHNldAogQ09ORklHX0hXX1JBTkRPTT15CiAjIENPTkZJR19OVlJBTSBpcyBub3Qgc2V0Ci1DT05GSUdfR0VOX1JUQz15Ci0jIENPTkZJR19HRU5fUlRDX1ggaXMgbm90IHNldAorIyBDT05GSUdfR0VOX1JUQyBpcyBub3Qgc2V0CiAjIENPTkZJR19SMzk2NCBpcyBub3Qgc2V0CiAjIENPTkZJR19BUFBMSUNPTSBpcyBub3Qgc2V0CiAjIENPTkZJR19SQVdfRFJJVkVSIGlzIG5vdCBzZXQKQEAgLTY0NiwxNCArNjczLDEyIEBACiAjCiAjIE1pc2NlbGxhbmVvdXMgSTJDIENoaXAgc3VwcG9ydAogIwotIyBDT05GSUdfU0VOU09SU19EUzEzMzcgaXMgbm90IHNldAotIyBDT05GSUdfU0VOU09SU19EUzEzNzQgaXMgbm90IHNldAogIyBDT05GSUdfRFMxNjgyIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfRUVQUk9NIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfUENGODU3NCBpcyBub3Qgc2V0Ci0jIENPTkZJR19TRU5TT1JTX1BDQTk1MzkgaXMgbm90IHNldAorIyBDT05GSUdfUENGODU3NSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1BDRjg1OTEgaXMgbm90IHNldAotIyBDT05GSUdfU0VOU09SU19NNDFUMDAgaXMgbm90IHNldAorIyBDT05GSUdfVFBTNjUwMTAgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19NQVg2ODc1IGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVFNMMjU1MCBpcyBub3Qgc2V0CiAjIENPTkZJR19JMkNfREVCVUdfQ09SRSBpcyBub3Qgc2V0CkBAIC02NzgsNiArNzAzLDcgQEAKICMgQ09ORklHX1NFTlNPUlNfQURNMTAzMSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0FETTkyNDAgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19BRFQ3NDcwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNPUlNfQURUNzQ3MyBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0FUWFAxIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfRFMxNjIxIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfSTVLX0FNQiBpcyBub3Qgc2V0CkBAIC03MDcsNiArNzMzLDcgQEAKICMgQ09ORklHX1NFTlNPUlNfU01TQzQ3TTEgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19TTVNDNDdNMTkyIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfU01TQzQ3QjM5NyBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX0FEUzc4MjggaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19USE1DNTAgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19WSUE2ODZBIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVlQxMjExIGlzIG5vdCBzZXQKQEAgLTcxNiw5ICs3NDMsMTEgQEAKICMgQ09ORklHX1NFTlNPUlNfVzgzNzkyRCBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1c4Mzc5MyBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1c4M0w3ODVUUyBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX1c4M0w3ODZORyBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1c4MzYyN0hGIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVzgzNjI3RUhGIGlzIG5vdCBzZXQKICMgQ09ORklHX0hXTU9OX0RFQlVHX0NISVAgaXMgbm90IHNldAorIyBDT05GSUdfVEhFUk1BTCBpcyBub3Qgc2V0CiBDT05GSUdfV0FUQ0hET0c9eQogIyBDT05GSUdfV0FUQ0hET0dfTk9XQVlPVVQgaXMgbm90IHNldAogCkBAIC03ODQsMTIgKzgxMyw5IEBACiAjCiAjIE5PVEU6IFVTQl9TVE9SQUdFIGVuYWJsZXMgU0NTSSwgYW5kICdTQ1NJIGRpc2sgc3VwcG9ydCcKICMKLQotIwotIyBVU0IgR2FkZ2V0IFN1cHBvcnQKLSMKICMgQ09ORklHX1VTQl9HQURHRVQgaXMgbm90IHNldAogIyBDT05GSUdfTU1DIGlzIG5vdCBzZXQKKyMgQ09ORklHX01FTVNUSUNLIGlzIG5vdCBzZXQKICMgQ09ORklHX05FV19MRURTIGlzIG5vdCBzZXQKICMgQ09ORklHX0lORklOSUJBTkQgaXMgbm90IHNldAogIyBDT05GSUdfRURBQyBpcyBub3Qgc2V0CkBAIC04MjEsNiArODQ3LDcgQEAKICMgQ09ORklHX1JUQ19EUlZfUENGODU2MyBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfRFJWX1BDRjg1ODMgaXMgbm90IHNldAogIyBDT05GSUdfUlRDX0RSVl9NNDFUODAgaXMgbm90IHNldAorIyBDT05GSUdfUlRDX0RSVl9TMzUzOTBBIGlzIG5vdCBzZXQKIAogIwogIyBTUEkgUlRDIGRyaXZlcnMKQEAgLTgzMCw5ICs4NTcsMTAgQEAKICMgUGxhdGZvcm0gUlRDIGRyaXZlcnMKICMKICMgQ09ORklHX1JUQ19EUlZfQ01PUyBpcyBub3Qgc2V0CisjIENPTkZJR19SVENfRFJWX0RTMTUxMSBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfRFJWX0RTMTU1MyBpcyBub3Qgc2V0Ci0jIENPTkZJR19SVENfRFJWX1NUSzE3VEE4IGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfRFMxNzQyIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JUQ19EUlZfU1RLMTdUQTggaXMgbm90IHNldAogIyBDT05GSUdfUlRDX0RSVl9NNDhUODYgaXMgbm90IHNldAogIyBDT05GSUdfUlRDX0RSVl9NNDhUNTkgaXMgbm90IHNldAogIyBDT05GSUdfUlRDX0RSVl9WMzAyMCBpcyBub3Qgc2V0CkBAIC04NDAsNiArODY4LDcgQEAKICMKICMgb24tQ1BVIFJUQyBkcml2ZXJzCiAjCisjIENPTkZJR19ETUFERVZJQ0VTIGlzIG5vdCBzZXQKIAogIwogIyBVc2Vyc3BhY2UgSS9PCkBAIC04NjUsMTIgKzg5NCwxMCBAQAogIyBDT05GSUdfWEZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0dGUzJfRlMgaXMgbm90IHNldAogIyBDT05GSUdfT0NGUzJfRlMgaXMgbm90IHNldAotIyBDT05GSUdfTUlOSVhfRlMgaXMgbm90IHNldAotIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAorQ09ORklHX0ROT1RJRlk9eQogQ09ORklHX0lOT1RJRlk9eQogQ09ORklHX0lOT1RJRllfVVNFUj15CiAjIENPTkZJR19RVU9UQSBpcyBub3Qgc2V0Ci1DT05GSUdfRE5PVElGWT15CiAjIENPTkZJR19BVVRPRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfQVVUT0ZTNF9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19GVVNFX0ZTIGlzIG5vdCBzZXQKQEAgLTkxMiw4ICs5MzksMTAgQEAKICMgQ09ORklHX0VGU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUkFNRlMgaXMgbm90IHNldAogIyBDT05GSUdfVlhGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19IUEZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1FOWDRGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TWVNWX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1VGU19GUyBpcyBub3Qgc2V0CiBDT05GSUdfTkVUV09SS19GSUxFU1lTVEVNUz15CkBAIC05NTcsNyArOTg2LDYgQEAKICMgQ09ORklHX1NZU1Y2OF9QQVJUSVRJT04gaXMgbm90IHNldAogIyBDT05GSUdfTkxTIGlzIG5vdCBzZXQKICMgQ09ORklHX0RMTSBpcyBub3Qgc2V0Ci0jIENPTkZJR19VQ0NfU0xPVyBpcyBub3Qgc2V0CiBDT05GSUdfVUNDX0ZBU1Q9eQogQ09ORklHX1VDQz15CiAKQEAgLTk3NSw3ICsxMDAzLDYgQEAKIENPTkZJR19IQVNfSU9NRU09eQogQ09ORklHX0hBU19JT1BPUlQ9eQogQ09ORklHX0hBU19ETUE9eQotIyBDT05GSUdfSU5TVFJVTUVOVEFUSU9OIGlzIG5vdCBzZXQKIAogIwogIyBLZXJuZWwgaGFja2luZwpAQCAtOTg5LDYgKzEwMTYsNyBAQAogIyBDT05GSUdfSEVBREVSU19DSEVDSyBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19LRVJORUwgaXMgbm90IHNldAogIyBDT05GSUdfU0xVQl9ERUJVR19PTiBpcyBub3Qgc2V0CisjIENPTkZJR19TTFVCX1NUQVRTIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX0JVR1ZFUkJPU0UgaXMgbm90IHNldAogIyBDT05GSUdfU0FNUExFUyBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfRUFSTFlfREVCVUcgaXMgbm90IHNldApAQCAtMTAwMiw2ICsxMDMwLDcgQEAKIENPTkZJR19DUllQVE89eQogQ09ORklHX0NSWVBUT19BTEdBUEk9eQogQ09ORklHX0NSWVBUT19CTEtDSVBIRVI9eQorIyBDT05GSUdfQ1JZUFRPX1NFUUlWIGlzIG5vdCBzZXQKIENPTkZJR19DUllQVE9fTUFOQUdFUj15CiAjIENPTkZJR19DUllQVE9fSE1BQyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fWENCQyBpcyBub3Qgc2V0CkBAIC0xMDE5LDYgKzEwNDgsOSBAQAogQ09ORklHX0NSWVBUT19QQ0JDPW0KICMgQ09ORklHX0NSWVBUT19MUlcgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX1hUUyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ1RSIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19HQ00gaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NDTSBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fQ1JZUFREIGlzIG5vdCBzZXQKIENPTkZJR19DUllQVE9fREVTPXkKICMgQ09ORklHX0NSWVBUT19GQ1JZUFQgaXMgbm90IHNldApAQCAtMTAzMywxMiArMTA2NSwxNSBAQAogIyBDT05GSUdfQ1JZUFRPX0tIQVpBRCBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fQU5VQklTIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19TRUVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19TQUxTQTIwIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19ERUZMQVRFIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19NSUNIQUVMX01JQyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fQ1JDMzJDIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19DQU1FTExJQSBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fVEVTVCBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fQVVUSEVOQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fTFpPIGlzIG5vdCBzZXQKIENPTkZJR19DUllQVE9fSFc9eQorIyBDT05GSUdfQ1JZUFRPX0RFVl9ISUZOXzc5NVggaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0NMT0NLIGlzIG5vdCBzZXQKIENPTkZJR19QUENfTElCX1JIRUFQPXkKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9jb25maWdzL21wYzgzN3hfbWRzX2RlZmNvbmZpZyBiL2FyY2gvcG93ZXJwYy9jb25maWdzL21wYzgzN3hfbWRzX2RlZmNvbmZpZwppbmRleCA0ZjQ5YWVlLi5mMzc3Y2RlIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM4Mzd4X21kc19kZWZjb25maWcKKysrIGIvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODM3eF9tZHNfZGVmY29uZmlnCkBAIC0xLDcgKzEsNyBAQAogIwogIyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBtYWtlIGNvbmZpZzogZG9uJ3QgZWRpdAotIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjIzCi0jIFdlZCBPY3QgMTAgMTY6MzE6MzkgMjAwNworIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjI1LXJjNgorIyBNb24gTWFyIDI0IDA4OjQ4OjIzIDIwMDgKICMKICMgQ09ORklHX1BQQzY0IGlzIG5vdCBzZXQKIApAQCAtMTQsMTYgKzE0LDIyIEBACiAjIENPTkZJR180MHggaXMgbm90IHNldAogIyBDT05GSUdfNDR4IGlzIG5vdCBzZXQKICMgQ09ORklHX0UyMDAgaXMgbm90IHNldAotQ09ORklHXzgzeHg9eQogQ09ORklHX1BQQ19GUFU9eQorIyBDT05GSUdfRlNMX0VNQl9QRVJGTU9OIGlzIG5vdCBzZXQKIENPTkZJR19QUENfU1REX01NVT15CiBDT05GSUdfUFBDX1NURF9NTVVfMzI9eQogIyBDT05GSUdfUFBDX01NX1NMSUNFUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TTVAgaXMgbm90IHNldAogQ09ORklHX1BQQzMyPXkKK0NPTkZJR19XT1JEX1NJWkU9MzIKIENPTkZJR19QUENfTUVSR0U9eQogQ09ORklHX01NVT15CitDT05GSUdfR0VORVJJQ19DTU9TX1VQREFURT15CitDT05GSUdfR0VORVJJQ19USU1FPXkKK0NPTkZJR19HRU5FUklDX1RJTUVfVlNZU0NBTEw9eQorQ09ORklHX0dFTkVSSUNfQ0xPQ0tFVkVOVFM9eQogQ09ORklHX0dFTkVSSUNfSEFSRElSUVM9eQorIyBDT05GSUdfSEFWRV9TRVRVUF9QRVJfQ1BVX0FSRUEgaXMgbm90IHNldAogQ09ORklHX0lSUV9QRVJfQ1BVPXkKIENPTkZJR19SV1NFTV9YQ0hHQUREX0FMR09SSVRITT15CiBDT05GSUdfQVJDSF9IQVNfSUxPRzJfVTMyPXkKQEAgLTYxLDEyICs2NywxOSBAQAogIyBDT05GSUdfUE9TSVhfTVFVRVVFIGlzIG5vdCBzZXQKICMgQ09ORklHX0JTRF9QUk9DRVNTX0FDQ1QgaXMgbm90IHNldAogIyBDT05GSUdfVEFTS1NUQVRTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VTRVJfTlMgaXMgbm90IHNldAogIyBDT05GSUdfQVVESVQgaXMgbm90IHNldAogIyBDT05GSUdfSUtDT05GSUcgaXMgbm90IHNldAogQ09ORklHX0xPR19CVUZfU0hJRlQ9MTQKKyMgQ09ORklHX0NHUk9VUFMgaXMgbm90IHNldAorQ09ORklHX0dST1VQX1NDSEVEPXkKK0NPTkZJR19GQUlSX0dST1VQX1NDSEVEPXkKKyMgQ09ORklHX1JUX0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKK0NPTkZJR19VU0VSX1NDSEVEPXkKKyMgQ09ORklHX0NHUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CiBDT05GSUdfU1lTRlNfREVQUkVDQVRFRD15CitDT05GSUdfU1lTRlNfREVQUkVDQVRFRF9WMj15CiAjIENPTkZJR19SRUxBWSBpcyBub3Qgc2V0CisjIENPTkZJR19OQU1FU1BBQ0VTIGlzIG5vdCBzZXQKIENPTkZJR19CTEtfREVWX0lOSVRSRD15CiBDT05GSUdfSU5JVFJBTUZTX1NPVVJDRT0iIgogIyBDT05GSUdfQ0NfT1BUSU1JWkVfRk9SX1NJWkUgaXMgbm90IHNldApAQCAtNzksMTcgKzkyLDI3IEBACiBDT05GSUdfUFJJTlRLPXkKIENPTkZJR19CVUc9eQogQ09ORklHX0VMRl9DT1JFPXkKK0NPTkZJR19DT01QQVRfQlJLPXkKIENPTkZJR19CQVNFX0ZVTEw9eQogQ09ORklHX0ZVVEVYPXkKIENPTkZJR19BTk9OX0lOT0RFUz15CiAjIENPTkZJR19FUE9MTCBpcyBub3Qgc2V0CiBDT05GSUdfU0lHTkFMRkQ9eQorQ09ORklHX1RJTUVSRkQ9eQogQ09ORklHX0VWRU5URkQ9eQogQ09ORklHX1NITUVNPXkKIENPTkZJR19WTV9FVkVOVF9DT1VOVEVSUz15CiBDT05GSUdfU0xBQj15CiAjIENPTkZJR19TTFVCIGlzIG5vdCBzZXQKICMgQ09ORklHX1NMT0IgaXMgbm90IHNldAorIyBDT05GSUdfUFJPRklMSU5HIGlzIG5vdCBzZXQKKyMgQ09ORklHX01BUktFUlMgaXMgbm90IHNldAorQ09ORklHX0hBVkVfT1BST0ZJTEU9eQorIyBDT05GSUdfS1BST0JFUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9LUFJPQkVTPXkKK0NPTkZJR19IQVZFX0tSRVRQUk9CRVM9eQorQ09ORklHX1BST0NfUEFHRV9NT05JVE9SPXkKK0NPTkZJR19TTEFCSU5GTz15CiBDT05GSUdfUlRfTVVURVhFUz15CiAjIENPTkZJR19USU5ZX1NITUVNIGlzIG5vdCBzZXQKIENPTkZJR19CQVNFX1NNQUxMPTAKQEAgLTExNywyOCArMTQwLDMyIEBACiAjIENPTkZJR19ERUZBVUxUX0NGUSBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUZBVUxUX05PT1AgaXMgbm90IHNldAogQ09ORklHX0RFRkFVTFRfSU9TQ0hFRD0iYW50aWNpcGF0b3J5IgorQ09ORklHX0NMQVNTSUNfUkNVPXkKIAogIwogIyBQbGF0Zm9ybSBzdXBwb3J0CiAjCiAjIENPTkZJR19QUENfTVVMVElQTEFURk9STSBpcyBub3Qgc2V0Ci0jIENPTkZJR19FTUJFRERFRDZ4eCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfODJ4eCBpcyBub3Qgc2V0CiBDT05GSUdfUFBDXzgzeHg9eQogIyBDT05GSUdfUFBDXzg2eHggaXMgbm90IHNldAotIyBDT05GSUdfUFBDX01QQzUyeHggaXMgbm90IHNldAotIyBDT05GSUdfUFBDX01QQzUyMDAgaXMgbm90IHNldAorIyBDT05GSUdfUFBDX01QQzUxMnggaXMgbm90IHNldAorIyBDT05GSUdfUFBDX01QQzUxMjEgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0NFTEwgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0NFTExfTkFUSVZFIGlzIG5vdCBzZXQKICMgQ09ORklHX1BRMkFEUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19NUEM4MzEzX1JEQiBpcyBub3Qgc2V0CitDT05GSUdfTVBDODN4eD15CisjIENPTkZJR19NUEM4MzF4X1JEQiBpcyBub3Qgc2V0CiAjIENPTkZJR19NUEM4MzJ4X01EUyBpcyBub3Qgc2V0CiAjIENPTkZJR19NUEM4MzJ4X1JEQiBpcyBub3Qgc2V0CiAjIENPTkZJR19NUEM4MzR4X01EUyBpcyBub3Qgc2V0CiAjIENPTkZJR19NUEM4MzR4X0lUWCBpcyBub3Qgc2V0CiAjIENPTkZJR19NUEM4MzZ4X01EUyBpcyBub3Qgc2V0CiBDT05GSUdfTVBDODM3eF9NRFM9eQorIyBDT05GSUdfTVBDODM3eF9SREIgaXMgbm90IHNldAorIyBDT05GSUdfU0JDODM0eCBpcyBub3Qgc2V0CiBDT05GSUdfUFBDX01QQzgzN3g9eQorQ09ORklHX0lQSUM9eQogIyBDT05GSUdfTVBJQyBpcyBub3Qgc2V0CiAjIENPTkZJR19NUElDX1dFSVJEIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19JODI1OSBpcyBub3Qgc2V0CkBAIC0xNDksMjUgKzE3NiwzMSBAQAogIyBDT05GSUdfUFBDX0lORElSRUNUX0lPIGlzIG5vdCBzZXQKICMgQ09ORklHX0dFTkVSSUNfSU9NQVAgaXMgbm90IHNldAogIyBDT05GSUdfQ1BVX0ZSRVEgaXMgbm90IHNldAotIyBDT05GSUdfQ1BNMiBpcyBub3Qgc2V0CiAjIENPTkZJR19GU0xfVUxJMTU3NSBpcyBub3Qgc2V0Ci1DT05GSUdfRlNMX1NFUkRFUz15CiAKICMKICMgS2VybmVsIG9wdGlvbnMKICMKICMgQ09ORklHX0hJR0hNRU0gaXMgbm90IHNldAorIyBDT05GSUdfVElDS19PTkVTSE9UIGlzIG5vdCBzZXQKKyMgQ09ORklHX05PX0haIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hJR0hfUkVTX1RJTUVSUyBpcyBub3Qgc2V0CitDT05GSUdfR0VORVJJQ19DTE9DS0VWRU5UU19CVUlMRD15CiAjIENPTkZJR19IWl8xMDAgaXMgbm90IHNldAogQ09ORklHX0haXzI1MD15CiAjIENPTkZJR19IWl8zMDAgaXMgbm90IHNldAogIyBDT05GSUdfSFpfMTAwMCBpcyBub3Qgc2V0CiBDT05GSUdfSFo9MjUwCisjIENPTkZJR19TQ0hFRF9IUlRJQ0sgaXMgbm90IHNldAogQ09ORklHX1BSRUVNUFRfTk9ORT15CiAjIENPTkZJR19QUkVFTVBUX1ZPTFVOVEFSWSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUkVFTVBUIGlzIG5vdCBzZXQKIENPTkZJR19CSU5GTVRfRUxGPXkKICMgQ09ORklHX0JJTkZNVF9NSVNDIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lPTU1VX0hFTFBFUiBpcyBub3Qgc2V0CiBDT05GSUdfQVJDSF9FTkFCTEVfTUVNT1JZX0hPVFBMVUc9eQorQ09ORklHX0FSQ0hfSEFTX1dBTEtfTUVNT1JZPXkKK0NPTkZJR19BUkNIX0VOQUJMRV9NRU1PUllfSE9UUkVNT1ZFPXkKIENPTkZJR19BUkNIX0ZMQVRNRU1fRU5BQkxFPXkKIENPTkZJR19BUkNIX1BPUFVMQVRFU19OT0RFX01BUD15CiBDT05GSUdfU0VMRUNUX01FTU9SWV9NT0RFTD15CkBAIC0xNzcsNiArMjEwLDcgQEAKIENPTkZJR19GTEFUTUVNPXkKIENPTkZJR19GTEFUX05PREVfTUVNX01BUD15CiAjIENPTkZJR19TUEFSU0VNRU1fU1RBVElDIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQX0VOQUJMRSBpcyBub3Qgc2V0CiBDT05GSUdfU1BMSVRfUFRMT0NLX0NQVVM9NAogIyBDT05GSUdfUkVTT1VSQ0VTXzY0QklUIGlzIG5vdCBzZXQKIENPTkZJR19aT05FX0RNQV9GTEFHPTEKQEAgLTE4NSwxMSArMjE5LDcgQEAKIENPTkZJR19QUk9DX0RFVklDRVRSRUU9eQogIyBDT05GSUdfQ01ETElORV9CT09MIGlzIG5vdCBzZXQKICMgQ09ORklHX1BNIGlzIG5vdCBzZXQKLUNPTkZJR19TVVNQRU5EX1VQX1BPU1NJQkxFPXkKLUNPTkZJR19ISUJFUk5BVElPTl9VUF9QT1NTSUJMRT15CiBDT05GSUdfU0VDQ09NUD15Ci1DT05GSUdfV0FOVF9ERVZJQ0VfVFJFRT15Ci1DT05GSUdfREVWSUNFX1RSRUU9IiIKIENPTkZJR19JU0FfRE1BX0FQST15CiAKICMKQEAgLTIwMywxMCArMjMzLDYgQEAKICMgQ09ORklHX1BDSV9ET01BSU5TIGlzIG5vdCBzZXQKICMgQ09ORklHX1BDSV9TWVNDQUxMIGlzIG5vdCBzZXQKICMgQ09ORklHX0FSQ0hfU1VQUE9SVFNfTVNJIGlzIG5vdCBzZXQKLQotIwotIyBQQ0NBUkQgKFBDTUNJQS9DYXJkQnVzKSBzdXBwb3J0Ci0jCiAjIENPTkZJR19QQ0NBUkQgaXMgbm90IHNldAogCiAjCkBAIC0yMjAsNyArMjQ2LDcgQEAKIENPTkZJR19ISUdITUVNX1NUQVJUPTB4ZmUwMDAwMDAKIENPTkZJR19MT1dNRU1fU0laRT0weDMwMDAwMDAwCiBDT05GSUdfS0VSTkVMX1NUQVJUPTB4YzAwMDAwMDAKLUNPTkZJR19UQVNLX1NJWkU9MHg4MDAwMDAwMAorQ09ORklHX1RBU0tfU0laRT0weGMwMDAwMDAwCiBDT05GSUdfQk9PVF9MT0FEPTB4MDA4MDAwMDAKIAogIwpAQCAtMjM4LDYgKzI2NCw3IEBACiBDT05GSUdfWEZSTV9VU0VSPW0KICMgQ09ORklHX1hGUk1fU1VCX1BPTElDWSBpcyBub3Qgc2V0CiAjIENPTkZJR19YRlJNX01JR1JBVEUgaXMgbm90IHNldAorIyBDT05GSUdfWEZSTV9TVEFUSVNUSUNTIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9LRVkgaXMgbm90IHNldAogQ09ORklHX0lORVQ9eQogQ09ORklHX0lQX01VTFRJQ0FTVD15CkBAIC0yNjAsNiArMjg3LDcgQEAKIENPTkZJR19JTkVUX1hGUk1fTU9ERV9UUkFOU1BPUlQ9eQogQ09ORklHX0lORVRfWEZSTV9NT0RFX1RVTk5FTD15CiBDT05GSUdfSU5FVF9YRlJNX01PREVfQkVFVD15CisjIENPTkZJR19JTkVUX0xSTyBpcyBub3Qgc2V0CiBDT05GSUdfSU5FVF9ESUFHPXkKIENPTkZJR19JTkVUX1RDUF9ESUFHPXkKICMgQ09ORklHX1RDUF9DT05HX0FEVkFOQ0VEIGlzIG5vdCBzZXQKQEAgLTI4NSwxMCArMzEzLDYgQEAKICMgQ09ORklHX0xBUEIgaXMgbm90IHNldAogIyBDT05GSUdfRUNPTkVUIGlzIG5vdCBzZXQKICMgQ09ORklHX1dBTl9ST1VURVIgaXMgbm90IHNldAotCi0jCi0jIFFvUyBhbmQvb3IgZmFpciBxdWV1ZWluZwotIwogIyBDT05GSUdfTkVUX1NDSEVEIGlzIG5vdCBzZXQKIAogIwpAQCAtMjk2LDYgKzMyMCw3IEBACiAjCiAjIENPTkZJR19ORVRfUEtUR0VOIGlzIG5vdCBzZXQKICMgQ09ORklHX0hBTVJBRElPIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NBTiBpcyBub3Qgc2V0CiAjIENPTkZJR19JUkRBIGlzIG5vdCBzZXQKICMgQ09ORklHX0JUIGlzIG5vdCBzZXQKICMgQ09ORklHX0FGX1JYUlBDIGlzIG5vdCBzZXQKQEAgLTMxNyw2ICszNDIsNyBAQAogIwogIyBHZW5lcmljIERyaXZlciBPcHRpb25zCiAjCitDT05GSUdfVUVWRU5UX0hFTFBFUl9QQVRIPSIvc2Jpbi9ob3RwbHVnIgogQ09ORklHX1NUQU5EQUxPTkU9eQogQ09ORklHX1BSRVZFTlRfRklSTVdBUkVfQlVJTEQ9eQogIyBDT05GSUdfRldfTE9BREVSIGlzIG5vdCBzZXQKQEAgLTMzNCwxMSArMzYwLDEzIEBACiBDT05GSUdfQkxLX0RFVl9SQU09eQogQ09ORklHX0JMS19ERVZfUkFNX0NPVU5UPTE2CiBDT05GSUdfQkxLX0RFVl9SQU1fU0laRT0zMjc2OAotQ09ORklHX0JMS19ERVZfUkFNX0JMT0NLU0laRT0xMDI0CisjIENPTkZJR19CTEtfREVWX1hJUCBpcyBub3Qgc2V0CiAjIENPTkZJR19DRFJPTV9QS1RDRFZEIGlzIG5vdCBzZXQKICMgQ09ORklHX0FUQV9PVkVSX0VUSCBpcyBub3Qgc2V0CiBDT05GSUdfTUlTQ19ERVZJQ0VTPXkKICMgQ09ORklHX0VFUFJPTV85M0NYNiBpcyBub3Qgc2V0CisjIENPTkZJR19FTkNMT1NVUkVfU0VSVklDRVMgaXMgbm90IHNldAorQ09ORklHX0hBVkVfSURFPXkKICMgQ09ORklHX0lERSBpcyBub3Qgc2V0CiAKICMKQEAgLTM3NywxMSArNDA1LDEzIEBACiAjIENPTkZJR19TQ1NJX0ZDX0FUVFJTIGlzIG5vdCBzZXQKICMgQ09ORklHX1NDU0lfSVNDU0lfQVRUUlMgaXMgbm90IHNldAogIyBDT05GSUdfU0NTSV9TQVNfTElCU0FTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDU0lfU1JQX0FUVFJTIGlzIG5vdCBzZXQKIENPTkZJR19TQ1NJX0xPV0xFVkVMPXkKICMgQ09ORklHX0lTQ1NJX1RDUCBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX0RFQlVHIGlzIG5vdCBzZXQKIENPTkZJR19BVEE9eQogIyBDT05GSUdfQVRBX05PTlNUQU5EQVJEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NBVEFfTVYgaXMgbm90IHNldAogQ09ORklHX1NBVEFfRlNMPXkKICMgQ09ORklHX1BBVEFfUExBVEZPUk0gaXMgbm90IHNldAogIyBDT05GSUdfTUQgaXMgbm90IHNldApAQCAtMzkzLDYgKzQyMyw3IEBACiAjIENPTkZJR19NQUNWTEFOIGlzIG5vdCBzZXQKICMgQ09ORklHX0VRVUFMSVpFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19UVU4gaXMgbm90IHNldAorIyBDT05GSUdfVkVUSCBpcyBub3Qgc2V0CiBDT05GSUdfUEhZTElCPXkKIAogIwpAQCAtNDA3LDEwICs0MzgsMTggQEAKICMgQ09ORklHX1NNU0NfUEhZIGlzIG5vdCBzZXQKICMgQ09ORklHX0JST0FEQ09NX1BIWSBpcyBub3Qgc2V0CiAjIENPTkZJR19JQ1BMVVNfUEhZIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JFQUxURUtfUEhZIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZJWEVEX1BIWSBpcyBub3Qgc2V0CisjIENPTkZJR19NRElPX0JJVEJBTkcgaXMgbm90IHNldAogQ09ORklHX05FVF9FVEhFUk5FVD15CiBDT05GSUdfTUlJPXkKKyMgQ09ORklHX0lCTV9ORVdfRU1BQ19aTUlJIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lCTV9ORVdfRU1BQ19SR01JSSBpcyBub3Qgc2V0CisjIENPTkZJR19JQk1fTkVXX0VNQUNfVEFIIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lCTV9ORVdfRU1BQ19FTUFDNCBpcyBub3Qgc2V0CisjIENPTkZJR19CNDQgaXMgbm90IHNldAogQ09ORklHX05FVERFVl8xMDAwPXkKKyMgQ09ORklHX0UxMDAwRV9FTkFCTEVEIGlzIG5vdCBzZXQKIENPTkZJR19HSUFORkFSPXkKICMgQ09ORklHX0dGQVJfTkFQSSBpcyBub3Qgc2V0CiBDT05GSUdfTkVUREVWXzEwMDAwPXkKQEAgLTQyMyw3ICs0NjIsNiBAQAogIyBDT05GSUdfV0FOIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQUCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTElQIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NIQVBFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRDT05TT0xFIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVFBPTEwgaXMgbm90IHNldAogIyBDT05GSUdfTkVUX1BPTExfQ09OVFJPTExFUiBpcyBub3Qgc2V0CkBAIC00NDIsNyArNDgwLDYgQEAKICMKICMgQ09ORklHX0lOUFVUX01PVVNFREVWIGlzIG5vdCBzZXQKICMgQ09ORklHX0lOUFVUX0pPWURFViBpcyBub3Qgc2V0Ci0jIENPTkZJR19JTlBVVF9UU0RFViBpcyBub3Qgc2V0CiAjIENPTkZJR19JTlBVVF9FVkRFViBpcyBub3Qgc2V0CiAjIENPTkZJR19JTlBVVF9FVkJVRyBpcyBub3Qgc2V0CiAKQEAgLTQ4OCwxNCArNTI1LDYgQEAKIENPTkZJR19MRUdBQ1lfUFRZUz15CiBDT05GSUdfTEVHQUNZX1BUWV9DT1VOVD0yNTYKICMgQ09ORklHX0lQTUlfSEFORExFUiBpcyBub3Qgc2V0Ci1DT05GSUdfV0FUQ0hET0c9eQotIyBDT05GSUdfV0FUQ0hET0dfTk9XQVlPVVQgaXMgbm90IHNldAotCi0jCi0jIFdhdGNoZG9nIERldmljZSBEcml2ZXJzCi0jCi0jIENPTkZJR19TT0ZUX1dBVENIRE9HIGlzIG5vdCBzZXQKLUNPTkZJR184M3h4X1dEVD15CiAjIENPTkZJR19IV19SQU5ET00gaXMgbm90IHNldAogIyBDT05GSUdfTlZSQU0gaXMgbm90IHNldAogQ09ORklHX0dFTl9SVEM9eQpAQCAtNTI3LDE0ICs1NTYsMTIgQEAKICMKICMgTWlzY2VsbGFuZW91cyBJMkMgQ2hpcCBzdXBwb3J0CiAjCi0jIENPTkZJR19TRU5TT1JTX0RTMTMzNyBpcyBub3Qgc2V0Ci0jIENPTkZJR19TRU5TT1JTX0RTMTM3NCBpcyBub3Qgc2V0CiAjIENPTkZJR19EUzE2ODIgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19FRVBST00gaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19QQ0Y4NTc0IGlzIG5vdCBzZXQKLSMgQ09ORklHX1NFTlNPUlNfUENBOTUzOSBpcyBub3Qgc2V0CisjIENPTkZJR19QQ0Y4NTc1IGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfUENGODU5MSBpcyBub3Qgc2V0Ci0jIENPTkZJR19TRU5TT1JTX000MVQwMCBpcyBub3Qgc2V0CisjIENPTkZJR19UUFM2NTAxMCBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX01BWDY4NzUgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19UU0wyNTUwIGlzIG5vdCBzZXQKICMgQ09ORklHX0kyQ19ERUJVR19DT1JFIGlzIG5vdCBzZXQKQEAgLTU1MSw4ICs1NzgsNiBAQAogIyBDT05GSUdfUE9XRVJfU1VQUExZIGlzIG5vdCBzZXQKIENPTkZJR19IV01PTj15CiAjIENPTkZJR19IV01PTl9WSUQgaXMgbm90IHNldAotIyBDT05GSUdfU0VOU09SU19BQklUVUdVUlUgaXMgbm90IHNldAotIyBDT05GSUdfU0VOU09SU19BQklUVUdVUlUzIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfQUQ3NDE4IGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfQURNMTAyMSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0FETTEwMjUgaXMgbm90IHNldApAQCAtNTYwLDEyICs1ODUsMTMgQEAKICMgQ09ORklHX1NFTlNPUlNfQURNMTAyOSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0FETTEwMzEgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19BRE05MjQwIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NFTlNPUlNfQVNCMTAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNPUlNfQURUNzQ3MCBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX0FEVDc0NzMgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19BVFhQMSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0RTMTYyMSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0Y3MTgwNUYgaXMgbm90IHNldAotIyBDT05GSUdfU0VOU09SU19GU0NIRVIgaXMgbm90IHNldAotIyBDT05GSUdfU0VOU09SU19GU0NQT1MgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19GNzE4ODJGRyBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX0Y3NTM3NVMgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19HTDUxOFNNIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfR0w1MjBTTSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0lUODcgaXMgbm90IHNldApAQCAtNTg4LDYgKzYxNCw3IEBACiAjIENPTkZJR19TRU5TT1JTX1NNU0M0N00xIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfU01TQzQ3TTE5MiBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1NNU0M0N0IzOTcgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19BRFM3ODI4IGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVEhNQzUwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVlQxMjExIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVzgzNzgxRCBpcyBub3Qgc2V0CkBAIC01OTUsOSArNjIyLDI1IEBACiAjIENPTkZJR19TRU5TT1JTX1c4Mzc5MkQgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19XODM3OTMgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19XODNMNzg1VFMgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19XODNMNzg2TkcgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19XODM2MjdIRiBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1c4MzYyN0VIRiBpcyBub3Qgc2V0CiAjIENPTkZJR19IV01PTl9ERUJVR19DSElQIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RIRVJNQUwgaXMgbm90IHNldAorQ09ORklHX1dBVENIRE9HPXkKKyMgQ09ORklHX1dBVENIRE9HX05PV0FZT1VUIGlzIG5vdCBzZXQKKworIworIyBXYXRjaGRvZyBEZXZpY2UgRHJpdmVycworIworIyBDT05GSUdfU09GVF9XQVRDSERPRyBpcyBub3Qgc2V0CitDT05GSUdfODN4eF9XRFQ9eQorCisjCisjIFNvbmljcyBTaWxpY29uIEJhY2twbGFuZQorIworQ09ORklHX1NTQl9QT1NTSUJMRT15CisjIENPTkZJR19TU0IgaXMgbm90IHNldAogCiAjCiAjIE11bHRpZnVuY3Rpb24gZGV2aWNlIGRyaXZlcnMKQEAgLTYxNCwxNiArNjU3LDE1IEBACiAjCiAjIEdyYXBoaWNzIHN1cHBvcnQKICMKKyMgQ09ORklHX1ZHQVNUQVRFIGlzIG5vdCBzZXQKK0NPTkZJR19WSURFT19PVVRQVVRfQ09OVFJPTD1tCisjIENPTkZJR19GQiBpcyBub3Qgc2V0CiAjIENPTkZJR19CQUNLTElHSFRfTENEX1NVUFBPUlQgaXMgbm90IHNldAogCiAjCiAjIERpc3BsYXkgZGV2aWNlIHN1cHBvcnQKICMKICMgQ09ORklHX0RJU1BMQVlfU1VQUE9SVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19WR0FTVEFURSBpcyBub3Qgc2V0Ci1DT05GSUdfVklERU9fT1VUUFVUX0NPTlRST0w9bQotIyBDT05GSUdfRkIgaXMgbm90IHNldAotIyBDT05GSUdfRkJfSUJNX0dYVDQ1MDAgaXMgbm90IHNldAogCiAjCiAjIFNvdW5kCkBAIC02MzIsNiArNjc0LDcgQEAKIENPTkZJR19ISURfU1VQUE9SVD15CiBDT05GSUdfSElEPXkKICMgQ09ORklHX0hJRF9ERUJVRyBpcyBub3Qgc2V0CisjIENPTkZJR19ISURSQVcgaXMgbm90IHNldAogQ09ORklHX1VTQl9TVVBQT1JUPXkKIENPTkZJR19VU0JfQVJDSF9IQVNfSENEPXkKICMgQ09ORklHX1VTQl9BUkNIX0hBU19PSENJIGlzIG5vdCBzZXQKQEAgLTY0MSwyOCArNjg0LDEzIEBACiAjCiAjIE5PVEU6IFVTQl9TVE9SQUdFIGVuYWJsZXMgU0NTSSwgYW5kICdTQ1NJIGRpc2sgc3VwcG9ydCcKICMKLQotIwotIyBVU0IgR2FkZ2V0IFN1cHBvcnQKLSMKICMgQ09ORklHX1VTQl9HQURHRVQgaXMgbm90IHNldAogIyBDT05GSUdfTU1DIGlzIG5vdCBzZXQKKyMgQ09ORklHX01FTVNUSUNLIGlzIG5vdCBzZXQKICMgQ09ORklHX05FV19MRURTIGlzIG5vdCBzZXQKICMgQ09ORklHX0VEQUMgaXMgbm90IHNldAogIyBDT05GSUdfUlRDX0NMQVNTIGlzIG5vdCBzZXQKLQotIwotIyBETUEgRW5naW5lIHN1cHBvcnQKLSMKLSMgQ09ORklHX0RNQV9FTkdJTkUgaXMgbm90IHNldAotCi0jCi0jIERNQSBDbGllbnRzCi0jCi0KLSMKLSMgRE1BIERldmljZXMKLSMKKyMgQ09ORklHX0RNQURFVklDRVMgaXMgbm90IHNldAogCiAjCiAjIFVzZXJzcGFjZSBJL08KQEAgLTY4MSw3ICs3MDksNiBAQAogIyBDT05GSUdfRVhUM19GU19TRUNVUklUWSBpcyBub3Qgc2V0CiAjIENPTkZJR19FWFQ0REVWX0ZTIGlzIG5vdCBzZXQKIENPTkZJR19KQkQ9eQotIyBDT05GSUdfSkJEX0RFQlVHIGlzIG5vdCBzZXQKIENPTkZJR19GU19NQkNBQ0hFPXkKICMgQ09ORklHX1JFSVNFUkZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0pGU19GUyBpcyBub3Qgc2V0CkBAIC02ODksMTIgKzcxNiwxMCBAQAogIyBDT05GSUdfWEZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0dGUzJfRlMgaXMgbm90IHNldAogIyBDT05GSUdfT0NGUzJfRlMgaXMgbm90IHNldAotIyBDT05GSUdfTUlOSVhfRlMgaXMgbm90IHNldAotIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAorQ09ORklHX0ROT1RJRlk9eQogQ09ORklHX0lOT1RJRlk9eQogQ09ORklHX0lOT1RJRllfVVNFUj15CiAjIENPTkZJR19RVU9UQSBpcyBub3Qgc2V0Ci1DT05GSUdfRE5PVElGWT15CiAjIENPTkZJR19BVVRPRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfQVVUT0ZTNF9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19GVVNFX0ZTIGlzIG5vdCBzZXQKQEAgLTcyMiw3ICs3NDcsNiBAQAogQ09ORklHX1RNUEZTPXkKICMgQ09ORklHX1RNUEZTX1BPU0lYX0FDTCBpcyBub3Qgc2V0CiAjIENPTkZJR19IVUdFVExCX1BBR0UgaXMgbm90IHNldAotQ09ORklHX1JBTUZTPXkKICMgQ09ORklHX0NPTkZJR0ZTX0ZTIGlzIG5vdCBzZXQKIAogIwpAQCAtNzM3LDE0ICs3NjEsMTMgQEAKICMgQ09ORklHX0VGU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUkFNRlMgaXMgbm90IHNldAogIyBDT05GSUdfVlhGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19IUEZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1FOWDRGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TWVNWX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1VGU19GUyBpcyBub3Qgc2V0Ci0KLSMKLSMgTmV0d29yayBGaWxlIFN5c3RlbXMKLSMKK0NPTkZJR19ORVRXT1JLX0ZJTEVTWVNURU1TPXkKIENPTkZJR19ORlNfRlM9eQogQ09ORklHX05GU19WMz15CiAjIENPTkZJR19ORlNfVjNfQUNMIGlzIG5vdCBzZXQKQEAgLTc4NywxNyArODEwLDggQEAKICMgQ09ORklHX0tBUk1BX1BBUlRJVElPTiBpcyBub3Qgc2V0CiAjIENPTkZJR19FRklfUEFSVElUSU9OIGlzIG5vdCBzZXQKICMgQ09ORklHX1NZU1Y2OF9QQVJUSVRJT04gaXMgbm90IHNldAotCi0jCi0jIE5hdGl2ZSBMYW5ndWFnZSBTdXBwb3J0Ci0jCiAjIENPTkZJR19OTFMgaXMgbm90IHNldAotCi0jCi0jIERpc3RyaWJ1dGVkIExvY2sgTWFuYWdlcgotIwogIyBDT05GSUdfRExNIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VDQ19TTE9XIGlzIG5vdCBzZXQKIAogIwogIyBMaWJyYXJ5IHJvdXRpbmVzCkBAIC04MTUsMTUgKzgyOSwxMCBAQAogQ09ORklHX0hBU19ETUE9eQogCiAjCi0jIEluc3RydW1lbnRhdGlvbiBTdXBwb3J0Ci0jCi0jIENPTkZJR19QUk9GSUxJTkcgaXMgbm90IHNldAotIyBDT05GSUdfS1BST0JFUyBpcyBub3Qgc2V0Ci0KLSMKICMgS2VybmVsIGhhY2tpbmcKICMKICMgQ09ORklHX1BSSU5US19USU1FIGlzIG5vdCBzZXQKK0NPTkZJR19FTkFCTEVfV0FSTl9ERVBSRUNBVEVEPXkKIENPTkZJR19FTkFCTEVfTVVTVF9DSEVDSz15CiAjIENPTkZJR19NQUdJQ19TWVNSUSBpcyBub3Qgc2V0CiAjIENPTkZJR19VTlVTRURfU1lNQk9MUyBpcyBub3Qgc2V0CkBAIC04MzEsNiArODQwLDcgQEAKICMgQ09ORklHX0hFQURFUlNfQ0hFQ0sgaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfS0VSTkVMIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX0JVR1ZFUkJPU0UgaXMgbm90IHNldAorIyBDT05GSUdfU0FNUExFUyBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfRUFSTFlfREVCVUcgaXMgbm90IHNldAogCiAjCkBAIC04MzgsOSArODQ4LDExIEBACiAjCiAjIENPTkZJR19LRVlTIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFQ1VSSVRZIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFQ1VSSVRZX0ZJTEVfQ0FQQUJJTElUSUVTIGlzIG5vdCBzZXQKIENPTkZJR19DUllQVE89eQogQ09ORklHX0NSWVBUT19BTEdBUEk9eQogQ09ORklHX0NSWVBUT19CTEtDSVBIRVI9eQorIyBDT05GSUdfQ1JZUFRPX1NFUUlWIGlzIG5vdCBzZXQKIENPTkZJR19DUllQVE9fTUFOQUdFUj15CiAjIENPTkZJR19DUllQVE9fSE1BQyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fWENCQyBpcyBub3Qgc2V0CkBAIC04NTcsNiArODY5LDEwIEBACiBDT05GSUdfQ1JZUFRPX0NCQz15CiBDT05GSUdfQ1JZUFRPX1BDQkM9bQogIyBDT05GSUdfQ1JZUFRPX0xSVyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fWFRTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DVFIgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0dDTSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ0NNIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19DUllQVEQgaXMgbm90IHNldAogQ09ORklHX0NSWVBUT19ERVM9eQogIyBDT05GSUdfQ1JZUFRPX0ZDUllQVCBpcyBub3Qgc2V0CkBAIC04NzAsOSArODg2LDE0IEBACiAjIENPTkZJR19DUllQVE9fQVJDNCBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fS0hBWkFEIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19BTlVCSVMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1NFRUQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1NBTFNBMjAgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0RFRkxBVEUgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX01JQ0hBRUxfTUlDIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19DUkMzMkMgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0NBTUVMTElBIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19URVNUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19BVVRIRU5DIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19MWk8gaXMgbm90IHNldAogQ09ORklHX0NSWVBUT19IVz15CisjIENPTkZJR19QUENfQ0xPQ0sgaXMgbm90IHNldApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODM3eF9yZGJfZGVmY29uZmlnIGIvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODM3eF9yZGJfZGVmY29uZmlnCmluZGV4IDkxZDI5MWUuLmE2MzMxNzYgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jb25maWdzL21wYzgzN3hfcmRiX2RlZmNvbmZpZworKysgYi9hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM4Mzd4X3JkYl9kZWZjb25maWcKQEAgLTEsNyArMSw3IEBACiAjCiAjIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIG1ha2UgY29uZmlnOiBkb24ndCBlZGl0Ci0jIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMjQtcmM4Ci0jIFRodSBKYW4gMjQgMjA6MDQ6MzkgMjAwOAorIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjI1LXJjNgorIyBNb24gTWFyIDI0IDA4OjQ4OjI0IDIwMDgKICMKICMgQ09ORklHX1BQQzY0IGlzIG5vdCBzZXQKIApAQCAtMTQsOCArMTQsOCBAQAogIyBDT05GSUdfNDB4IGlzIG5vdCBzZXQKICMgQ09ORklHXzQ0eCBpcyBub3Qgc2V0CiAjIENPTkZJR19FMjAwIGlzIG5vdCBzZXQKLUNPTkZJR184M3h4PXkKIENPTkZJR19QUENfRlBVPXkKKyMgQ09ORklHX0ZTTF9FTUJfUEVSRk1PTiBpcyBub3Qgc2V0CiBDT05GSUdfUFBDX1NURF9NTVU9eQogQ09ORklHX1BQQ19TVERfTU1VXzMyPXkKICMgQ09ORklHX1BQQ19NTV9TTElDRVMgaXMgbm90IHNldApAQCAtMjksNiArMjksNyBAQAogQ09ORklHX0dFTkVSSUNfVElNRV9WU1lTQ0FMTD15CiBDT05GSUdfR0VORVJJQ19DTE9DS0VWRU5UUz15CiBDT05GSUdfR0VORVJJQ19IQVJESVJRUz15CisjIENPTkZJR19IQVZFX1NFVFVQX1BFUl9DUFVfQVJFQSBpcyBub3Qgc2V0CiBDT05GSUdfSVJRX1BFUl9DUFU9eQogQ09ORklHX1JXU0VNX1hDSEdBRERfQUxHT1JJVEhNPXkKIENPTkZJR19BUkNIX0hBU19JTE9HMl9VMzI9eQpAQCAtNjYsMTcgKzY3LDE5IEBACiAjIENPTkZJR19QT1NJWF9NUVVFVUUgaXMgbm90IHNldAogIyBDT05GSUdfQlNEX1BST0NFU1NfQUNDVCBpcyBub3Qgc2V0CiAjIENPTkZJR19UQVNLU1RBVFMgaXMgbm90IHNldAotIyBDT05GSUdfVVNFUl9OUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19QSURfTlMgaXMgbm90IHNldAogIyBDT05GSUdfQVVESVQgaXMgbm90IHNldAogIyBDT05GSUdfSUtDT05GSUcgaXMgbm90IHNldAogQ09ORklHX0xPR19CVUZfU0hJRlQ9MTQKICMgQ09ORklHX0NHUk9VUFMgaXMgbm90IHNldAorQ09ORklHX0dST1VQX1NDSEVEPXkKIENPTkZJR19GQUlSX0dST1VQX1NDSEVEPXkKLUNPTkZJR19GQUlSX1VTRVJfU0NIRUQ9eQotIyBDT05GSUdfRkFJUl9DR1JPVVBfU0NIRUQgaXMgbm90IHNldAorIyBDT05GSUdfUlRfR1JPVVBfU0NIRUQgaXMgbm90IHNldAorQ09ORklHX1VTRVJfU0NIRUQ9eQorIyBDT05GSUdfQ0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKIENPTkZJR19TWVNGU19ERVBSRUNBVEVEPXkKK0NPTkZJR19TWVNGU19ERVBSRUNBVEVEX1YyPXkKICMgQ09ORklHX1JFTEFZIGlzIG5vdCBzZXQKKyMgQ09ORklHX05BTUVTUEFDRVMgaXMgbm90IHNldAogQ09ORklHX0JMS19ERVZfSU5JVFJEPXkKIENPTkZJR19JTklUUkFNRlNfU09VUkNFPSIiCiAjIENPTkZJR19DQ19PUFRJTUlaRV9GT1JfU0laRSBpcyBub3Qgc2V0CkBAIC04OSwxNyArOTIsMjYgQEAKIENPTkZJR19QUklOVEs9eQogQ09ORklHX0JVRz15CiBDT05GSUdfRUxGX0NPUkU9eQorQ09ORklHX0NPTVBBVF9CUks9eQogQ09ORklHX0JBU0VfRlVMTD15CiBDT05GSUdfRlVURVg9eQogQ09ORklHX0FOT05fSU5PREVTPXkKICMgQ09ORklHX0VQT0xMIGlzIG5vdCBzZXQKIENPTkZJR19TSUdOQUxGRD15CitDT05GSUdfVElNRVJGRD15CiBDT05GSUdfRVZFTlRGRD15CiBDT05GSUdfU0hNRU09eQogQ09ORklHX1ZNX0VWRU5UX0NPVU5URVJTPXkKIENPTkZJR19TTEFCPXkKICMgQ09ORklHX1NMVUIgaXMgbm90IHNldAogIyBDT05GSUdfU0xPQiBpcyBub3Qgc2V0CisjIENPTkZJR19QUk9GSUxJTkcgaXMgbm90IHNldAorIyBDT05GSUdfTUFSS0VSUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9PUFJPRklMRT15CisjIENPTkZJR19LUFJPQkVTIGlzIG5vdCBzZXQKK0NPTkZJR19IQVZFX0tQUk9CRVM9eQorQ09ORklHX0hBVkVfS1JFVFBST0JFUz15CitDT05GSUdfUFJPQ19QQUdFX01PTklUT1I9eQogQ09ORklHX1NMQUJJTkZPPXkKIENPTkZJR19SVF9NVVRFWEVTPXkKICMgQ09ORklHX1RJTllfU0hNRU0gaXMgbm90IHNldApAQCAtMTI4LDYgKzE0MCw3IEBACiAjIENPTkZJR19ERUZBVUxUX0NGUSBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUZBVUxUX05PT1AgaXMgbm90IHNldAogQ09ORklHX0RFRkFVTFRfSU9TQ0hFRD0iYW50aWNpcGF0b3J5IgorQ09ORklHX0NMQVNTSUNfUkNVPXkKIAogIwogIyBQbGF0Zm9ybSBzdXBwb3J0CkBAIC0xMzYsMTEgKzE0OSwxMiBAQAogIyBDT05GSUdfUFBDXzgyeHggaXMgbm90IHNldAogQ09ORklHX1BQQ184M3h4PXkKICMgQ09ORklHX1BQQ184Nnh4IGlzIG5vdCBzZXQKLSMgQ09ORklHX1BQQ19NUEM1Mnh4IGlzIG5vdCBzZXQKLSMgQ09ORklHX1BQQ19NUEM1MjAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ19NUEM1MTJ4IGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ19NUEM1MTIxIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19DRUxMIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19DRUxMX05BVElWRSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUTJBRFMgaXMgbm90IHNldAorQ09ORklHX01QQzgzeHg9eQogIyBDT05GSUdfTVBDODMxeF9SREIgaXMgbm90IHNldAogIyBDT05GSUdfTVBDODMyeF9NRFMgaXMgbm90IHNldAogIyBDT05GSUdfTVBDODMyeF9SREIgaXMgbm90IHNldApAQCAtMTQ5LDYgKzE2Myw3IEBACiAjIENPTkZJR19NUEM4MzZ4X01EUyBpcyBub3Qgc2V0CiAjIENPTkZJR19NUEM4Mzd4X01EUyBpcyBub3Qgc2V0CiBDT05GSUdfTVBDODM3eF9SREI9eQorIyBDT05GSUdfU0JDODM0eCBpcyBub3Qgc2V0CiBDT05GSUdfUFBDX01QQzgzN3g9eQogQ09ORklHX0lQSUM9eQogIyBDT05GSUdfTVBJQyBpcyBub3Qgc2V0CkBAIC0xNjEsNyArMTc2LDYgQEAKICMgQ09ORklHX1BQQ19JTkRJUkVDVF9JTyBpcyBub3Qgc2V0CiAjIENPTkZJR19HRU5FUklDX0lPTUFQIGlzIG5vdCBzZXQKICMgQ09ORklHX0NQVV9GUkVRIGlzIG5vdCBzZXQKLSMgQ09ORklHX0NQTTIgaXMgbm90IHNldAogIyBDT05GSUdfRlNMX1VMSTE1NzUgaXMgbm90IHNldAogCiAjCkBAIC0xNzcsMTIgKzE5MSwxNiBAQAogIyBDT05GSUdfSFpfMzAwIGlzIG5vdCBzZXQKICMgQ09ORklHX0haXzEwMDAgaXMgbm90IHNldAogQ09ORklHX0haPTI1MAorIyBDT05GSUdfU0NIRURfSFJUSUNLIGlzIG5vdCBzZXQKIENPTkZJR19QUkVFTVBUX05PTkU9eQogIyBDT05GSUdfUFJFRU1QVF9WT0xVTlRBUlkgaXMgbm90IHNldAogIyBDT05GSUdfUFJFRU1QVCBpcyBub3Qgc2V0CiBDT05GSUdfQklORk1UX0VMRj15CiAjIENPTkZJR19CSU5GTVRfTUlTQyBpcyBub3Qgc2V0CisjIENPTkZJR19JT01NVV9IRUxQRVIgaXMgbm90IHNldAogQ09ORklHX0FSQ0hfRU5BQkxFX01FTU9SWV9IT1RQTFVHPXkKK0NPTkZJR19BUkNIX0hBU19XQUxLX01FTU9SWT15CitDT05GSUdfQVJDSF9FTkFCTEVfTUVNT1JZX0hPVFJFTU9WRT15CiBDT05GSUdfQVJDSF9GTEFUTUVNX0VOQUJMRT15CiBDT05GSUdfQVJDSF9QT1BVTEFURVNfTk9ERV9NQVA9eQogQ09ORklHX1NFTEVDVF9NRU1PUllfTU9ERUw9eQpAQCAtMjAxLDExICsyMTksNyBAQAogQ09ORklHX1BST0NfREVWSUNFVFJFRT15CiAjIENPTkZJR19DTURMSU5FX0JPT0wgaXMgbm90IHNldAogIyBDT05GSUdfUE0gaXMgbm90IHNldAotQ09ORklHX1NVU1BFTkRfVVBfUE9TU0lCTEU9eQotQ09ORklHX0hJQkVSTkFUSU9OX1VQX1BPU1NJQkxFPXkKIENPTkZJR19TRUNDT01QPXkKLUNPTkZJR19XQU5UX0RFVklDRV9UUkVFPXkKLUNPTkZJR19ERVZJQ0VfVFJFRT0iIgogQ09ORklHX0lTQV9ETUFfQVBJPXkKIAogIwpAQCAtMzAxLDYgKzMxNSw3IEBACiAjCiAjIENPTkZJR19ORVRfUEtUR0VOIGlzIG5vdCBzZXQKICMgQ09ORklHX0hBTVJBRElPIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NBTiBpcyBub3Qgc2V0CiAjIENPTkZJR19JUkRBIGlzIG5vdCBzZXQKICMgQ09ORklHX0JUIGlzIG5vdCBzZXQKICMgQ09ORklHX0FGX1JYUlBDIGlzIG5vdCBzZXQKQEAgLTM0MCwxMSArMzU1LDEzIEBACiBDT05GSUdfQkxLX0RFVl9SQU09eQogQ09ORklHX0JMS19ERVZfUkFNX0NPVU5UPTE2CiBDT05GSUdfQkxLX0RFVl9SQU1fU0laRT0zMjc2OAotQ09ORklHX0JMS19ERVZfUkFNX0JMT0NLU0laRT0xMDI0CisjIENPTkZJR19CTEtfREVWX1hJUCBpcyBub3Qgc2V0CiAjIENPTkZJR19DRFJPTV9QS1RDRFZEIGlzIG5vdCBzZXQKICMgQ09ORklHX0FUQV9PVkVSX0VUSCBpcyBub3Qgc2V0CiBDT05GSUdfTUlTQ19ERVZJQ0VTPXkKICMgQ09ORklHX0VFUFJPTV85M0NYNiBpcyBub3Qgc2V0CisjIENPTkZJR19FTkNMT1NVUkVfU0VSVklDRVMgaXMgbm90IHNldAorQ09ORklHX0hBVkVfSURFPXkKICMgQ09ORklHX0lERSBpcyBub3Qgc2V0CiAKICMKQEAgLTM4OSw2ICs0MDYsNyBAQAogIyBDT05GSUdfU0NTSV9ERUJVRyBpcyBub3Qgc2V0CiBDT05GSUdfQVRBPXkKICMgQ09ORklHX0FUQV9OT05TVEFOREFSRCBpcyBub3Qgc2V0CisjIENPTkZJR19TQVRBX01WIGlzIG5vdCBzZXQKIENPTkZJR19TQVRBX0ZTTD15CiAjIENPTkZJR19QQVRBX1BMQVRGT1JNIGlzIG5vdCBzZXQKIENPTkZJR19NRD15CkBAIC00MjUsNiArNDQzLDcgQEAKICMgQ09ORklHX1NNU0NfUEhZIGlzIG5vdCBzZXQKICMgQ09ORklHX0JST0FEQ09NX1BIWSBpcyBub3Qgc2V0CiAjIENPTkZJR19JQ1BMVVNfUEhZIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JFQUxURUtfUEhZIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZJWEVEX1BIWSBpcyBub3Qgc2V0CiAjIENPTkZJR19NRElPX0JJVEJBTkcgaXMgbm90IHNldAogQ09ORklHX05FVF9FVEhFUk5FVD15CkBAIC00MzUsNiArNDU0LDcgQEAKICMgQ09ORklHX0lCTV9ORVdfRU1BQ19FTUFDNCBpcyBub3Qgc2V0CiAjIENPTkZJR19CNDQgaXMgbm90IHNldAogQ09ORklHX05FVERFVl8xMDAwPXkKKyMgQ09ORklHX0UxMDAwRV9FTkFCTEVEIGlzIG5vdCBzZXQKIENPTkZJR19HSUFORkFSPXkKIENPTkZJR19HRkFSX05BUEk9eQogIyBDT05GSUdfTkVUREVWXzEwMDAwIGlzIG5vdCBzZXQKQEAgLTQ0Nyw3ICs0NjcsNiBAQAogIyBDT05GSUdfV0FOIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQUCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTElQIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NIQVBFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRDT05TT0xFIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVFBPTEwgaXMgbm90IHNldAogIyBDT05GSUdfTkVUX1BPTExfQ09OVFJPTExFUiBpcyBub3Qgc2V0CkBAIC01NDIsMTQgKzU2MSwxMiBAQAogIwogIyBNaXNjZWxsYW5lb3VzIEkyQyBDaGlwIHN1cHBvcnQKICMKLSMgQ09ORklHX1NFTlNPUlNfRFMxMzM3IGlzIG5vdCBzZXQKLSMgQ09ORklHX1NFTlNPUlNfRFMxMzc0IGlzIG5vdCBzZXQKICMgQ09ORklHX0RTMTY4MiBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0VFUFJPTSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1BDRjg1NzQgaXMgbm90IHNldAotIyBDT05GSUdfU0VOU09SU19QQ0E5NTM5IGlzIG5vdCBzZXQKKyMgQ09ORklHX1BDRjg1NzUgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19QQ0Y4NTkxIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NFTlNPUlNfTTQxVDAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RQUzY1MDEwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfTUFYNjg3NSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1RTTDI1NTAgaXMgbm90IHNldAogIyBDT05GSUdfSTJDX0RFQlVHX0NPUkUgaXMgbm90IHNldApAQCAtNTc0LDYgKzU5MSw3IEBACiAjIENPTkZJR19TRU5TT1JTX0FETTEwMzEgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19BRE05MjQwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfQURUNzQ3MCBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX0FEVDc0NzMgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19BVFhQMSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0RTMTYyMSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0Y3MTgwNUYgaXMgbm90IHNldApAQCAtNjAxLDYgKzYxOSw3IEBACiAjIENPTkZJR19TRU5TT1JTX1NNU0M0N00xIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfU01TQzQ3TTE5MiBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1NNU0M0N0IzOTcgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19BRFM3ODI4IGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVEhNQzUwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVlQxMjExIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVzgzNzgxRCBpcyBub3Qgc2V0CkBAIC02MDgsOSArNjI3LDExIEBACiAjIENPTkZJR19TRU5TT1JTX1c4Mzc5MkQgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19XODM3OTMgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19XODNMNzg1VFMgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19XODNMNzg2TkcgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19XODM2MjdIRiBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1c4MzYyN0VIRiBpcyBub3Qgc2V0CiAjIENPTkZJR19IV01PTl9ERUJVR19DSElQIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RIRVJNQUwgaXMgbm90IHNldAogQ09ORklHX1dBVENIRE9HPXkKICMgQ09ORklHX1dBVENIRE9HX05PV0FZT1VUIGlzIG5vdCBzZXQKIApAQCAtNjYzLDIwICs2ODQsNDAgQEAKIENPTkZJR19VU0JfQVJDSF9IQVNfSENEPXkKICMgQ09ORklHX1VTQl9BUkNIX0hBU19PSENJIGlzIG5vdCBzZXQKIENPTkZJR19VU0JfQVJDSF9IQVNfRUhDST15Ci0jIENPTkZJR19VU0IgaXMgbm90IHNldAorQ09ORklHX1VTQj15CisjIENPTkZJR19VU0JfREVCVUcgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX0FOTk9VTkNFX05FV19ERVZJQ0VTIGlzIG5vdCBzZXQKKworIworIyBNaXNjZWxsYW5lb3VzIFVTQiBvcHRpb25zCisjCisjIENPTkZJR19VU0JfREVWSUNFRlMgaXMgbm90IHNldAorQ09ORklHX1VTQl9ERVZJQ0VfQ0xBU1M9eQorIyBDT05GSUdfVVNCX0RZTkFNSUNfTUlOT1JTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9PVEcgaXMgbm90IHNldAorCisjCisjIFVTQiBIb3N0IENvbnRyb2xsZXIgRHJpdmVycworIworQ09ORklHX1VTQl9FSENJX0hDRD15CitDT05GSUdfVVNCX0VIQ0lfUk9PVF9IVUJfVFQ9eQorIyBDT05GSUdfVVNCX0VIQ0lfVFRfTkVXU0NIRUQgaXMgbm90IHNldAorQ09ORklHX1VTQl9FSENJX0ZTTD15CitDT05GSUdfVVNCX0VIQ0lfSENEX1BQQ19PRj15CisjIENPTkZJR19VU0JfSVNQMTE2WF9IQ0QgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX1NMODExX0hDRCBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfUjhBNjY1OTdfSENEIGlzIG5vdCBzZXQKIAogIwogIyBOT1RFOiBVU0JfU1RPUkFHRSBlbmFibGVzIFNDU0ksIGFuZCAnU0NTSSBkaXNrIHN1cHBvcnQnCiAjCi0KLSMKLSMgVVNCIEdhZGdldCBTdXBwb3J0Ci0jCiAjIENPTkZJR19VU0JfR0FER0VUIGlzIG5vdCBzZXQKICMgQ09ORklHX01NQyBpcyBub3Qgc2V0CisjIENPTkZJR19NRU1TVElDSyBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVdfTEVEUyBpcyBub3Qgc2V0CiAjIENPTkZJR19FREFDIGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19DTEFTUyBpcyBub3Qgc2V0CisjIENPTkZJR19ETUFERVZJQ0VTIGlzIG5vdCBzZXQKIAogIwogIyBVc2Vyc3BhY2UgSS9PCkBAIC03MDIsMTIgKzc0MywxMCBAQAogIyBDT05GSUdfWEZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0dGUzJfRlMgaXMgbm90IHNldAogIyBDT05GSUdfT0NGUzJfRlMgaXMgbm90IHNldAotIyBDT05GSUdfTUlOSVhfRlMgaXMgbm90IHNldAotIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAorQ09ORklHX0ROT1RJRlk9eQogQ09ORklHX0lOT1RJRlk9eQogQ09ORklHX0lOT1RJRllfVVNFUj15CiAjIENPTkZJR19RVU9UQSBpcyBub3Qgc2V0Ci1DT05GSUdfRE5PVElGWT15CiAjIENPTkZJR19BVVRPRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfQVVUT0ZTNF9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19GVVNFX0ZTIGlzIG5vdCBzZXQKQEAgLTc0OSw4ICs3ODgsMTAgQEAKICMgQ09ORklHX0VGU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUkFNRlMgaXMgbm90IHNldAogIyBDT05GSUdfVlhGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19IUEZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1FOWDRGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TWVNWX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1VGU19GUyBpcyBub3Qgc2V0CiBDT05GSUdfTkVUV09SS19GSUxFU1lTVEVNUz15CkBAIC04MTMsMTAgKzg1NCw2IEBACiBDT05GSUdfSEFTX0lPTUVNPXkKIENPTkZJR19IQVNfSU9QT1JUPXkKIENPTkZJR19IQVNfRE1BPXkKLUNPTkZJR19JTlNUUlVNRU5UQVRJT049eQotIyBDT05GSUdfUFJPRklMSU5HIGlzIG5vdCBzZXQKLSMgQ09ORklHX0tQUk9CRVMgaXMgbm90IHNldAotIyBDT05GSUdfTUFSS0VSUyBpcyBub3Qgc2V0CiAKICMKICMgS2VybmVsIGhhY2tpbmcKQEAgLTg0Niw2ICs4ODMsNyBAQAogQ09ORklHX0NSWVBUTz15CiBDT05GSUdfQ1JZUFRPX0FMR0FQST15CiBDT05GSUdfQ1JZUFRPX0JMS0NJUEhFUj15CisjIENPTkZJR19DUllQVE9fU0VRSVYgaXMgbm90IHNldAogQ09ORklHX0NSWVBUT19NQU5BR0VSPXkKICMgQ09ORklHX0NSWVBUT19ITUFDIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19YQ0JDIGlzIG5vdCBzZXQKQEAgLTg2Myw2ICs5MDEsOSBAQAogQ09ORklHX0NSWVBUT19QQ0JDPW0KICMgQ09ORklHX0NSWVBUT19MUlcgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX1hUUyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ1RSIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19HQ00gaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NDTSBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fQ1JZUFREIGlzIG5vdCBzZXQKIENPTkZJR19DUllQVE9fREVTPXkKICMgQ09ORklHX0NSWVBUT19GQ1JZUFQgaXMgbm90IHNldApAQCAtODc3LDExICs5MTgsMTMgQEAKICMgQ09ORklHX0NSWVBUT19LSEFaQUQgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0FOVUJJUyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fU0VFRCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0FMU0EyMCBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fREVGTEFURSBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fTUlDSEFFTF9NSUMgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0NSQzMyQyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fQ0FNRUxMSUEgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX1RFU1QgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0FVVEhFTkMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0xaTyBpcyBub3Qgc2V0CiBDT05GSUdfQ1JZUFRPX0hXPXkKICMgQ09ORklHX1BQQ19DTE9DSyBpcyBub3Qgc2V0CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM4M3h4X2RlZmNvbmZpZyBiL2FyY2gvcG93ZXJwYy9jb25maWdzL21wYzgzeHhfZGVmY29uZmlnCmluZGV4IGE5ODA3ZjAuLjAyOWQyZGEgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jb25maWdzL21wYzgzeHhfZGVmY29uZmlnCisrKyBiL2FyY2gvcG93ZXJwYy9jb25maWdzL21wYzgzeHhfZGVmY29uZmlnCkBAIC0xLDcgKzEsNyBAQAogIwogIyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBtYWtlIGNvbmZpZzogZG9uJ3QgZWRpdAotIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjI0LXJjOAotIyBNb24gSmFuIDI4IDEzOjE0OjE5IDIwMDgKKyMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4yNS1yYzYKKyMgTW9uIE1hciAyNCAwODo0ODoyNSAyMDA4CiAjCiAjIENPTkZJR19QUEM2NCBpcyBub3Qgc2V0CiAKQEAgLTE1LDYgKzE1LDcgQEAKICMgQ09ORklHXzQ0eCBpcyBub3Qgc2V0CiAjIENPTkZJR19FMjAwIGlzIG5vdCBzZXQKIENPTkZJR19QUENfRlBVPXkKKyMgQ09ORklHX0ZTTF9FTUJfUEVSRk1PTiBpcyBub3Qgc2V0CiBDT05GSUdfUFBDX1NURF9NTVU9eQogQ09ORklHX1BQQ19TVERfTU1VXzMyPXkKICMgQ09ORklHX1BQQ19NTV9TTElDRVMgaXMgbm90IHNldApAQCAtMjgsNiArMjksNyBAQAogQ09ORklHX0dFTkVSSUNfVElNRV9WU1lTQ0FMTD15CiBDT05GSUdfR0VORVJJQ19DTE9DS0VWRU5UUz15CiBDT05GSUdfR0VORVJJQ19IQVJESVJRUz15CisjIENPTkZJR19IQVZFX1NFVFVQX1BFUl9DUFVfQVJFQSBpcyBub3Qgc2V0CiBDT05GSUdfSVJRX1BFUl9DUFU9eQogQ09ORklHX1JXU0VNX1hDSEdBRERfQUxHT1JJVEhNPXkKIENPTkZJR19BUkNIX0hBU19JTE9HMl9VMzI9eQpAQCAtNjUsMTcgKzY3LDE5IEBACiAjIENPTkZJR19QT1NJWF9NUVVFVUUgaXMgbm90IHNldAogIyBDT05GSUdfQlNEX1BST0NFU1NfQUNDVCBpcyBub3Qgc2V0CiAjIENPTkZJR19UQVNLU1RBVFMgaXMgbm90IHNldAotIyBDT05GSUdfVVNFUl9OUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19QSURfTlMgaXMgbm90IHNldAogIyBDT05GSUdfQVVESVQgaXMgbm90IHNldAogIyBDT05GSUdfSUtDT05GSUcgaXMgbm90IHNldAogQ09ORklHX0xPR19CVUZfU0hJRlQ9MTQKICMgQ09ORklHX0NHUk9VUFMgaXMgbm90IHNldAorQ09ORklHX0dST1VQX1NDSEVEPXkKIENPTkZJR19GQUlSX0dST1VQX1NDSEVEPXkKLUNPTkZJR19GQUlSX1VTRVJfU0NIRUQ9eQotIyBDT05GSUdfRkFJUl9DR1JPVVBfU0NIRUQgaXMgbm90IHNldAorIyBDT05GSUdfUlRfR1JPVVBfU0NIRUQgaXMgbm90IHNldAorQ09ORklHX1VTRVJfU0NIRUQ9eQorIyBDT05GSUdfQ0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKIENPTkZJR19TWVNGU19ERVBSRUNBVEVEPXkKK0NPTkZJR19TWVNGU19ERVBSRUNBVEVEX1YyPXkKICMgQ09ORklHX1JFTEFZIGlzIG5vdCBzZXQKKyMgQ09ORklHX05BTUVTUEFDRVMgaXMgbm90IHNldAogQ09ORklHX0JMS19ERVZfSU5JVFJEPXkKIENPTkZJR19JTklUUkFNRlNfU09VUkNFPSIiCiAjIENPTkZJR19DQ19PUFRJTUlaRV9GT1JfU0laRSBpcyBub3Qgc2V0CkBAIC04OCwxNyArOTIsMjYgQEAKIENPTkZJR19QUklOVEs9eQogQ09ORklHX0JVRz15CiBDT05GSUdfRUxGX0NPUkU9eQorQ09ORklHX0NPTVBBVF9CUks9eQogQ09ORklHX0JBU0VfRlVMTD15CiBDT05GSUdfRlVURVg9eQogQ09ORklHX0FOT05fSU5PREVTPXkKICMgQ09ORklHX0VQT0xMIGlzIG5vdCBzZXQKIENPTkZJR19TSUdOQUxGRD15CitDT05GSUdfVElNRVJGRD15CiBDT05GSUdfRVZFTlRGRD15CiBDT05GSUdfU0hNRU09eQogQ09ORklHX1ZNX0VWRU5UX0NPVU5URVJTPXkKIENPTkZJR19TTEFCPXkKICMgQ09ORklHX1NMVUIgaXMgbm90IHNldAogIyBDT05GSUdfU0xPQiBpcyBub3Qgc2V0CisjIENPTkZJR19QUk9GSUxJTkcgaXMgbm90IHNldAorIyBDT05GSUdfTUFSS0VSUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9PUFJPRklMRT15CisjIENPTkZJR19LUFJPQkVTIGlzIG5vdCBzZXQKK0NPTkZJR19IQVZFX0tQUk9CRVM9eQorQ09ORklHX0hBVkVfS1JFVFBST0JFUz15CitDT05GSUdfUFJPQ19QQUdFX01PTklUT1I9eQogQ09ORklHX1NMQUJJTkZPPXkKIENPTkZJR19SVF9NVVRFWEVTPXkKICMgQ09ORklHX1RJTllfU0hNRU0gaXMgbm90IHNldApAQCAtMTI3LDYgKzE0MCw3IEBACiAjIENPTkZJR19ERUZBVUxUX0NGUSBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUZBVUxUX05PT1AgaXMgbm90IHNldAogQ09ORklHX0RFRkFVTFRfSU9TQ0hFRD0iYW50aWNpcGF0b3J5IgorQ09ORklHX0NMQVNTSUNfUkNVPXkKIAogIwogIyBQbGF0Zm9ybSBzdXBwb3J0CkBAIC0xMzUsOCArMTQ5LDggQEAKICMgQ09ORklHX1BQQ184Mnh4IGlzIG5vdCBzZXQKIENPTkZJR19QUENfODN4eD15CiAjIENPTkZJR19QUENfODZ4eCBpcyBub3Qgc2V0Ci0jIENPTkZJR19QUENfTVBDNTJ4eCBpcyBub3Qgc2V0Ci0jIENPTkZJR19QUENfTVBDNTIwMCBpcyBub3Qgc2V0CisjIENPTkZJR19QUENfTVBDNTEyeCBpcyBub3Qgc2V0CisjIENPTkZJR19QUENfTVBDNTEyMSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfQ0VMTCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfQ0VMTF9OQVRJVkUgaXMgbm90IHNldAogIyBDT05GSUdfUFEyQURTIGlzIG5vdCBzZXQKQEAgLTE4MSwxMyArMTk1LDE3IEBACiAjIENPTkZJR19IWl8zMDAgaXMgbm90IHNldAogIyBDT05GSUdfSFpfMTAwMCBpcyBub3Qgc2V0CiBDT05GSUdfSFo9MjUwCisjIENPTkZJR19TQ0hFRF9IUlRJQ0sgaXMgbm90IHNldAogQ09ORklHX1BSRUVNUFRfTk9ORT15CiAjIENPTkZJR19QUkVFTVBUX1ZPTFVOVEFSWSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUkVFTVBUIGlzIG5vdCBzZXQKIENPTkZJR19CSU5GTVRfRUxGPXkKICMgQ09ORklHX0JJTkZNVF9NSVNDIGlzIG5vdCBzZXQKIENPTkZJR19NQVRIX0VNVUxBVElPTj15CisjIENPTkZJR19JT01NVV9IRUxQRVIgaXMgbm90IHNldAogQ09ORklHX0FSQ0hfRU5BQkxFX01FTU9SWV9IT1RQTFVHPXkKK0NPTkZJR19BUkNIX0hBU19XQUxLX01FTU9SWT15CitDT05GSUdfQVJDSF9FTkFCTEVfTUVNT1JZX0hPVFJFTU9WRT15CiBDT05GSUdfQVJDSF9GTEFUTUVNX0VOQUJMRT15CiBDT05GSUdfQVJDSF9QT1BVTEFURVNfTk9ERV9NQVA9eQogQ09ORklHX1NFTEVDVF9NRU1PUllfTU9ERUw9eQpAQCAtMjA2LDExICsyMjQsNyBAQAogQ09ORklHX1BST0NfREVWSUNFVFJFRT15CiAjIENPTkZJR19DTURMSU5FX0JPT0wgaXMgbm90IHNldAogIyBDT05GSUdfUE0gaXMgbm90IHNldAotQ09ORklHX1NVU1BFTkRfVVBfUE9TU0lCTEU9eQotQ09ORklHX0hJQkVSTkFUSU9OX1VQX1BPU1NJQkxFPXkKIENPTkZJR19TRUNDT01QPXkKLUNPTkZJR19XQU5UX0RFVklDRV9UUkVFPXkKLUNPTkZJR19ERVZJQ0VfVFJFRT0iIgogQ09ORklHX0lTQV9ETUFfQVBJPXkKIAogIwpAQCAtMjU1LDYgKzI2OSw3IEBACiBDT05GSUdfWEZSTV9VU0VSPW0KICMgQ09ORklHX1hGUk1fU1VCX1BPTElDWSBpcyBub3Qgc2V0CiAjIENPTkZJR19YRlJNX01JR1JBVEUgaXMgbm90IHNldAorIyBDT05GSUdfWEZSTV9TVEFUSVNUSUNTIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9LRVkgaXMgbm90IHNldAogQ09ORklHX0lORVQ9eQogQ09ORklHX0lQX01VTFRJQ0FTVD15CkBAIC0zMTAsNiArMzI1LDcgQEAKICMKICMgQ09ORklHX05FVF9QS1RHRU4gaXMgbm90IHNldAogIyBDT05GSUdfSEFNUkFESU8gaXMgbm90IHNldAorIyBDT05GSUdfQ0FOIGlzIG5vdCBzZXQKICMgQ09ORklHX0lSREEgaXMgbm90IHNldAogIyBDT05GSUdfQlQgaXMgbm90IHNldAogIyBDT05GSUdfQUZfUlhSUEMgaXMgbm90IHNldApAQCAtMzQ5LDExICszNjUsMTMgQEAKIENPTkZJR19CTEtfREVWX1JBTT15CiBDT05GSUdfQkxLX0RFVl9SQU1fQ09VTlQ9MTYKIENPTkZJR19CTEtfREVWX1JBTV9TSVpFPTMyNzY4Ci1DT05GSUdfQkxLX0RFVl9SQU1fQkxPQ0tTSVpFPTEwMjQKKyMgQ09ORklHX0JMS19ERVZfWElQIGlzIG5vdCBzZXQKICMgQ09ORklHX0NEUk9NX1BLVENEVkQgaXMgbm90IHNldAogIyBDT05GSUdfQVRBX09WRVJfRVRIIGlzIG5vdCBzZXQKIENPTkZJR19NSVNDX0RFVklDRVM9eQogIyBDT05GSUdfRUVQUk9NXzkzQ1g2IGlzIG5vdCBzZXQKKyMgQ09ORklHX0VOQ0xPU1VSRV9TRVJWSUNFUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9JREU9eQogIyBDT05GSUdfSURFIGlzIG5vdCBzZXQKIAogIwpAQCAtMzk4LDYgKzQxNiw3IEBACiAjIENPTkZJR19TQ1NJX0RFQlVHIGlzIG5vdCBzZXQKIENPTkZJR19BVEE9eQogIyBDT05GSUdfQVRBX05PTlNUQU5EQVJEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NBVEFfTVYgaXMgbm90IHNldAogQ09ORklHX1NBVEFfRlNMPXkKICMgQ09ORklHX1BBVEFfUExBVEZPUk0gaXMgbm90IHNldAogIyBDT05GSUdfTUQgaXMgbm90IHNldApAQCAtNDI0LDYgKzQ0Myw3IEBACiAjIENPTkZJR19TTVNDX1BIWSBpcyBub3Qgc2V0CiAjIENPTkZJR19CUk9BRENPTV9QSFkgaXMgbm90IHNldAogQ09ORklHX0lDUExVU19QSFk9eQorIyBDT05GSUdfUkVBTFRFS19QSFkgaXMgbm90IHNldAogIyBDT05GSUdfRklYRURfUEhZIGlzIG5vdCBzZXQKICMgQ09ORklHX01ESU9fQklUQkFORyBpcyBub3Qgc2V0CiBDT05GSUdfTkVUX0VUSEVSTkVUPXkKQEAgLTQzNCw5ICs0NTQsMTQgQEAKICMgQ09ORklHX0lCTV9ORVdfRU1BQ19FTUFDNCBpcyBub3Qgc2V0CiAjIENPTkZJR19CNDQgaXMgbm90IHNldAogQ09ORklHX05FVERFVl8xMDAwPXkKKyMgQ09ORklHX0UxMDAwRV9FTkFCTEVEIGlzIG5vdCBzZXQKIENPTkZJR19HSUFORkFSPXkKICMgQ09ORklHX0dGQVJfTkFQSSBpcyBub3Qgc2V0CiBDT05GSUdfVUNDX0dFVEg9eQorIyBDT05GSUdfVUdFVEhfTkFQSSBpcyBub3Qgc2V0CisjIENPTkZJR19VR0VUSF9NQUdJQ19QQUNLRVQgaXMgbm90IHNldAorIyBDT05GSUdfVUdFVEhfRklMVEVSSU5HIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VHRVRIX1RYX09OX0RFTUFORCBpcyBub3Qgc2V0CiBDT05GSUdfTkVUREVWXzEwMDAwPXkKIAogIwpAQCAtNDQ3LDcgKzQ3Miw2IEBACiAjIENPTkZJR19XQU4gaXMgbm90IHNldAogIyBDT05GSUdfUFBQIGlzIG5vdCBzZXQKICMgQ09ORklHX1NMSVAgaXMgbm90IHNldAotIyBDT05GSUdfU0hBUEVSIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVENPTlNPTEUgaXMgbm90IHNldAogIyBDT05GSUdfTkVUUE9MTCBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRfUE9MTF9DT05UUk9MTEVSIGlzIG5vdCBzZXQKQEAgLTU0MywxNCArNTY3LDEyIEBACiAjCiAjIE1pc2NlbGxhbmVvdXMgSTJDIENoaXAgc3VwcG9ydAogIwotIyBDT05GSUdfU0VOU09SU19EUzEzMzcgaXMgbm90IHNldAotIyBDT05GSUdfU0VOU09SU19EUzEzNzQgaXMgbm90IHNldAogIyBDT05GSUdfRFMxNjgyIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfRUVQUk9NIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfUENGODU3NCBpcyBub3Qgc2V0Ci0jIENPTkZJR19TRU5TT1JTX1BDQTk1MzkgaXMgbm90IHNldAorIyBDT05GSUdfUENGODU3NSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1BDRjg1OTEgaXMgbm90IHNldAotIyBDT05GSUdfU0VOU09SU19NNDFUMDAgaXMgbm90IHNldAorIyBDT05GSUdfVFBTNjUwMTAgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19NQVg2ODc1IGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVFNMMjU1MCBpcyBub3Qgc2V0CiAjIENPTkZJR19JMkNfREVCVUdfQ09SRSBpcyBub3Qgc2V0CkBAIC01NzUsNiArNTk3LDcgQEAKICMgQ09ORklHX1NFTlNPUlNfQURNMTAzMSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0FETTkyNDAgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19BRFQ3NDcwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNPUlNfQURUNzQ3MyBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0FUWFAxIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfRFMxNjIxIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfRjcxODA1RiBpcyBub3Qgc2V0CkBAIC02MDIsNiArNjI1LDcgQEAKICMgQ09ORklHX1NFTlNPUlNfU01TQzQ3TTEgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19TTVNDNDdNMTkyIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfU01TQzQ3QjM5NyBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX0FEUzc4MjggaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19USE1DNTAgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19WVDEyMTEgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19XODM3ODFEIGlzIG5vdCBzZXQKQEAgLTYwOSw5ICs2MzMsMTEgQEAKICMgQ09ORklHX1NFTlNPUlNfVzgzNzkyRCBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1c4Mzc5MyBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1c4M0w3ODVUUyBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX1c4M0w3ODZORyBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1c4MzYyN0hGIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVzgzNjI3RUhGIGlzIG5vdCBzZXQKICMgQ09ORklHX0hXTU9OX0RFQlVHX0NISVAgaXMgbm90IHNldAorIyBDT05GSUdfVEhFUk1BTCBpcyBub3Qgc2V0CiBDT05GSUdfV0FUQ0hET0c9eQogIyBDT05GSUdfV0FUQ0hET0dfTk9XQVlPVVQgaXMgbm90IHNldAogCkBAIC02NjQsMjIgKzY5MCw0MCBAQAogQ09ORklHX1VTQl9BUkNIX0hBU19IQ0Q9eQogIyBDT05GSUdfVVNCX0FSQ0hfSEFTX09IQ0kgaXMgbm90IHNldAogQ09ORklHX1VTQl9BUkNIX0hBU19FSENJPXkKLSMgQ09ORklHX1VTQiBpcyBub3Qgc2V0CitDT05GSUdfVVNCPXkKKyMgQ09ORklHX1VTQl9ERUJVRyBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfQU5OT1VOQ0VfTkVXX0RFVklDRVMgaXMgbm90IHNldAorCisjCisjIE1pc2NlbGxhbmVvdXMgVVNCIG9wdGlvbnMKKyMKKyMgQ09ORklHX1VTQl9ERVZJQ0VGUyBpcyBub3Qgc2V0CitDT05GSUdfVVNCX0RFVklDRV9DTEFTUz15CisjIENPTkZJR19VU0JfRFlOQU1JQ19NSU5PUlMgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX09URyBpcyBub3Qgc2V0CisKKyMKKyMgVVNCIEhvc3QgQ29udHJvbGxlciBEcml2ZXJzCisjCitDT05GSUdfVVNCX0VIQ0lfSENEPXkKIENPTkZJR19VU0JfRUhDSV9ST09UX0hVQl9UVD15CisjIENPTkZJR19VU0JfRUhDSV9UVF9ORVdTQ0hFRCBpcyBub3Qgc2V0CiBDT05GSUdfVVNCX0VIQ0lfRlNMPXkKK0NPTkZJR19VU0JfRUhDSV9IQ0RfUFBDX09GPXkKKyMgQ09ORklHX1VTQl9JU1AxMTZYX0hDRCBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfU0w4MTFfSENEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9SOEE2NjU5N19IQ0QgaXMgbm90IHNldAogCiAjCiAjIE5PVEU6IFVTQl9TVE9SQUdFIGVuYWJsZXMgU0NTSSwgYW5kICdTQ1NJIGRpc2sgc3VwcG9ydCcKICMKLQotIwotIyBVU0IgR2FkZ2V0IFN1cHBvcnQKLSMKICMgQ09ORklHX1VTQl9HQURHRVQgaXMgbm90IHNldAogIyBDT05GSUdfTU1DIGlzIG5vdCBzZXQKKyMgQ09ORklHX01FTVNUSUNLIGlzIG5vdCBzZXQKICMgQ09ORklHX05FV19MRURTIGlzIG5vdCBzZXQKICMgQ09ORklHX0VEQUMgaXMgbm90IHNldAogIyBDT05GSUdfUlRDX0NMQVNTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RNQURFVklDRVMgaXMgbm90IHNldAogCiAjCiAjIFVzZXJzcGFjZSBJL08KQEAgLTcwNSwxMiArNzQ5LDEwIEBACiAjIENPTkZJR19YRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfR0ZTMl9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19PQ0ZTMl9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CitDT05GSUdfRE5PVElGWT15CiBDT05GSUdfSU5PVElGWT15CiBDT05GSUdfSU5PVElGWV9VU0VSPXkKICMgQ09ORklHX1FVT1RBIGlzIG5vdCBzZXQKLUNPTkZJR19ETk9USUZZPXkKICMgQ09ORklHX0FVVE9GU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19BVVRPRlM0X0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZVU0VfRlMgaXMgbm90IHNldApAQCAtNzUyLDggKzc5NCwxMCBAQAogIyBDT05GSUdfRUZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSQU1GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19WWEZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX01JTklYX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0hQRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfUU5YNEZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JPTUZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1NZU1ZfRlMgaXMgbm90IHNldAogIyBDT05GSUdfVUZTX0ZTIGlzIG5vdCBzZXQKIENPTkZJR19ORVRXT1JLX0ZJTEVTWVNURU1TPXkKQEAgLTgwMSw2ICs4NDUsOCBAQAogIyBDT05GSUdfU1lTVjY4X1BBUlRJVElPTiBpcyBub3Qgc2V0CiAjIENPTkZJR19OTFMgaXMgbm90IHNldAogIyBDT05GSUdfRExNIGlzIG5vdCBzZXQKK0NPTkZJR19VQ0NfRkFTVD15CitDT05GSUdfVUNDPXkKIAogIwogIyBMaWJyYXJ5IHJvdXRpbmVzCkBAIC04MTYsMTAgKzg2Miw2IEBACiBDT05GSUdfSEFTX0lPTUVNPXkKIENPTkZJR19IQVNfSU9QT1JUPXkKIENPTkZJR19IQVNfRE1BPXkKLUNPTkZJR19JTlNUUlVNRU5UQVRJT049eQotIyBDT05GSUdfUFJPRklMSU5HIGlzIG5vdCBzZXQKLSMgQ09ORklHX0tQUk9CRVMgaXMgbm90IHNldAotIyBDT05GSUdfTUFSS0VSUyBpcyBub3Qgc2V0CiAKICMKICMgS2VybmVsIGhhY2tpbmcKQEAgLTg0NSw2ICs4ODcsNyBAQAogQ09ORklHX0NSWVBUTz15CiBDT05GSUdfQ1JZUFRPX0FMR0FQST15CiBDT05GSUdfQ1JZUFRPX0JMS0NJUEhFUj15CisjIENPTkZJR19DUllQVE9fU0VRSVYgaXMgbm90IHNldAogQ09ORklHX0NSWVBUT19NQU5BR0VSPXkKICMgQ09ORklHX0NSWVBUT19ITUFDIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19YQ0JDIGlzIG5vdCBzZXQKQEAgLTg2Miw2ICs5MDUsOSBAQAogQ09ORklHX0NSWVBUT19QQ0JDPW0KICMgQ09ORklHX0NSWVBUT19MUlcgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX1hUUyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ1RSIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19HQ00gaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NDTSBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fQ1JZUFREIGlzIG5vdCBzZXQKIENPTkZJR19DUllQVE9fREVTPXkKICMgQ09ORklHX0NSWVBUT19GQ1JZUFQgaXMgbm90IHNldApAQCAtODc2LDEyICs5MjIsMTQgQEAKICMgQ09ORklHX0NSWVBUT19LSEFaQUQgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0FOVUJJUyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fU0VFRCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0FMU0EyMCBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fREVGTEFURSBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fTUlDSEFFTF9NSUMgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0NSQzMyQyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fQ0FNRUxMSUEgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX1RFU1QgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0FVVEhFTkMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0xaTyBpcyBub3Qgc2V0CiBDT05GSUdfQ1JZUFRPX0hXPXkKICMgQ09ORklHX1BQQ19DTE9DSyBpcyBub3Qgc2V0CiBDT05GSUdfUFBDX0xJQl9SSEVBUD15CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM4NTQwX2Fkc19kZWZjb25maWcgYi9hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM4NTQwX2Fkc19kZWZjb25maWcKaW5kZXggMzc5MWUyOS4uYjk5ODUzOSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODU0MF9hZHNfZGVmY29uZmlnCisrKyBiL2FyY2gvcG93ZXJwYy9jb25maWdzL21wYzg1NDBfYWRzX2RlZmNvbmZpZwpAQCAtMSw3ICsxLDcgQEAKICMKICMgQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgbWFrZSBjb25maWc6IGRvbid0IGVkaXQKLSMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4yNC1yYzQKLSMgVGh1IERlYyAgNiAxNjo0ODo0NCAyMDA3CisjIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMjUtcmM2CisjIE1vbiBNYXIgMjQgMDg6NDg6MjUgMjAwOAogIwogIyBDT05GSUdfUFBDNjQgaXMgbm90IHNldAogCkBAIC0xNCwxMCArMTQsMTAgQEAKICMgQ09ORklHXzQweCBpcyBub3Qgc2V0CiAjIENPTkZJR180NHggaXMgbm90IHNldAogIyBDT05GSUdfRTIwMCBpcyBub3Qgc2V0Ci1DT05GSUdfODV4eD15CiBDT05GSUdfRTUwMD15CiBDT05GSUdfQk9PS0U9eQogQ09ORklHX0ZTTF9CT09LRT15CitDT05GSUdfRlNMX0VNQl9QRVJGTU9OPXkKICMgQ09ORklHX1BIWVNfNjRCSVQgaXMgbm90IHNldAogQ09ORklHX1NQRT15CiAjIENPTkZJR19QUENfTU1fU0xJQ0VTIGlzIG5vdCBzZXQKQEAgLTMwLDYgKzMwLDcgQEAKIENPTkZJR19HRU5FUklDX1RJTUVfVlNZU0NBTEw9eQogQ09ORklHX0dFTkVSSUNfQ0xPQ0tFVkVOVFM9eQogQ09ORklHX0dFTkVSSUNfSEFSRElSUVM9eQorIyBDT05GSUdfSEFWRV9TRVRVUF9QRVJfQ1BVX0FSRUEgaXMgbm90IHNldAogQ09ORklHX0lSUV9QRVJfQ1BVPXkKIENPTkZJR19SV1NFTV9YQ0hHQUREX0FMR09SSVRITT15CiBDT05GSUdfQVJDSF9IQVNfSUxPRzJfVTMyPXkKQEAgLTY3LDE1ICs2OCwxOSBAQAogIyBDT05GSUdfUE9TSVhfTVFVRVVFIGlzIG5vdCBzZXQKICMgQ09ORklHX0JTRF9QUk9DRVNTX0FDQ1QgaXMgbm90IHNldAogIyBDT05GSUdfVEFTS1NUQVRTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VTRVJfTlMgaXMgbm90IHNldAotIyBDT05GSUdfUElEX05TIGlzIG5vdCBzZXQKICMgQ09ORklHX0FVRElUIGlzIG5vdCBzZXQKICMgQ09ORklHX0lLQ09ORklHIGlzIG5vdCBzZXQKIENPTkZJR19MT0dfQlVGX1NISUZUPTE0CiAjIENPTkZJR19DR1JPVVBTIGlzIG5vdCBzZXQKK0NPTkZJR19HUk9VUF9TQ0hFRD15CiAjIENPTkZJR19GQUlSX0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JUX0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKK0NPTkZJR19VU0VSX1NDSEVEPXkKKyMgQ09ORklHX0NHUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CiBDT05GSUdfU1lTRlNfREVQUkVDQVRFRD15CitDT05GSUdfU1lTRlNfREVQUkVDQVRFRF9WMj15CiAjIENPTkZJR19SRUxBWSBpcyBub3Qgc2V0CisjIENPTkZJR19OQU1FU1BBQ0VTIGlzIG5vdCBzZXQKIENPTkZJR19CTEtfREVWX0lOSVRSRD15CiBDT05GSUdfSU5JVFJBTUZTX1NPVVJDRT0iIgogIyBDT05GSUdfQ0NfT1BUSU1JWkVfRk9SX1NJWkUgaXMgbm90IHNldApAQCAtODksMTEgKzk0LDEzIEBACiBDT05GSUdfUFJJTlRLPXkKIENPTkZJR19CVUc9eQogQ09ORklHX0VMRl9DT1JFPXkKK0NPTkZJR19DT01QQVRfQlJLPXkKIENPTkZJR19CQVNFX0ZVTEw9eQogQ09ORklHX0ZVVEVYPXkKIENPTkZJR19BTk9OX0lOT0RFUz15CiBDT05GSUdfRVBPTEw9eQogQ09ORklHX1NJR05BTEZEPXkKK0NPTkZJR19USU1FUkZEPXkKIENPTkZJR19FVkVOVEZEPXkKIENPTkZJR19TSE1FTT15CiBDT05GSUdfVk1fRVZFTlRfQ09VTlRFUlM9eQpAQCAtMTAxLDYgKzEwOCwxMyBAQAogIyBDT05GSUdfU0xBQiBpcyBub3Qgc2V0CiBDT05GSUdfU0xVQj15CiAjIENPTkZJR19TTE9CIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BST0ZJTElORyBpcyBub3Qgc2V0CisjIENPTkZJR19NQVJLRVJTIGlzIG5vdCBzZXQKK0NPTkZJR19IQVZFX09QUk9GSUxFPXkKK0NPTkZJR19IQVZFX0tQUk9CRVM9eQorQ09ORklHX0hBVkVfS1JFVFBST0JFUz15CitDT05GSUdfUFJPQ19QQUdFX01PTklUT1I9eQorQ09ORklHX1NMQUJJTkZPPXkKIENPTkZJR19SVF9NVVRFWEVTPXkKICMgQ09ORklHX1RJTllfU0hNRU0gaXMgbm90IHNldAogQ09ORklHX0JBU0VfU01BTEw9MApAQCAtMTIzLDIyICsxMzcsMzAgQEAKICMgQ09ORklHX0RFRkFVTFRfQ0ZRIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFRkFVTFRfTk9PUCBpcyBub3Qgc2V0CiBDT05GSUdfREVGQVVMVF9JT1NDSEVEPSJhbnRpY2lwYXRvcnkiCitDT05GSUdfQ0xBU1NJQ19SQ1U9eQogCiAjCiAjIFBsYXRmb3JtIHN1cHBvcnQKICMKLSMgQ09ORklHX1BQQ19NUEM1Mnh4IGlzIG5vdCBzZXQKLSMgQ09ORklHX1BQQ19NUEM1MjAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ19NUEM1MTJ4IGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ19NUEM1MTIxIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19DRUxMIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19DRUxMX05BVElWRSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUTJBRFMgaXMgbm90IHNldAorQ09ORklHX01QQzg1eHg9eQogQ09ORklHX01QQzg1NDBfQURTPXkKICMgQ09ORklHX01QQzg1NjBfQURTIGlzIG5vdCBzZXQKICMgQ09ORklHX01QQzg1eHhfQ0RTIGlzIG5vdCBzZXQKICMgQ09ORklHX01QQzg1eHhfTURTIGlzIG5vdCBzZXQKICMgQ09ORklHX01QQzg1eHhfRFMgaXMgbm90IHNldAotQ09ORklHX01QQzg1NDA9eQotQ09ORklHX01QQzg1eHg9eQorIyBDT05GSUdfU1RYX0dQMyBpcyBub3Qgc2V0CisjIENPTkZJR19UUU04NTQwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RRTTg1NDEgaXMgbm90IHNldAorIyBDT05GSUdfVFFNODU1NSBpcyBub3Qgc2V0CisjIENPTkZJR19UUU04NTYwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NCQzg1NDggaXMgbm90IHNldAorIyBDT05GSUdfU0JDODU2MCBpcyBub3Qgc2V0CisjIENPTkZJR19JUElDIGlzIG5vdCBzZXQKIENPTkZJR19NUElDPXkKICMgQ09ORklHX01QSUNfV0VJUkQgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0k4MjU5IGlzIG5vdCBzZXQKQEAgLTE2NSwxMyArMTg3LDE3IEBACiAjIENPTkZJR19IWl8zMDAgaXMgbm90IHNldAogIyBDT05GSUdfSFpfMTAwMCBpcyBub3Qgc2V0CiBDT05GSUdfSFo9MjUwCisjIENPTkZJR19TQ0hFRF9IUlRJQ0sgaXMgbm90IHNldAogQ09ORklHX1BSRUVNUFRfTk9ORT15CiAjIENPTkZJR19QUkVFTVBUX1ZPTFVOVEFSWSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUkVFTVBUIGlzIG5vdCBzZXQKIENPTkZJR19CSU5GTVRfRUxGPXkKIENPTkZJR19CSU5GTVRfTUlTQz15CiBDT05GSUdfTUFUSF9FTVVMQVRJT049eQorIyBDT05GSUdfSU9NTVVfSEVMUEVSIGlzIG5vdCBzZXQKIENPTkZJR19BUkNIX0VOQUJMRV9NRU1PUllfSE9UUExVRz15CitDT05GSUdfQVJDSF9IQVNfV0FMS19NRU1PUlk9eQorQ09ORklHX0FSQ0hfRU5BQkxFX01FTU9SWV9IT1RSRU1PVkU9eQogQ09ORklHX0FSQ0hfRkxBVE1FTV9FTkFCTEU9eQogQ09ORklHX0FSQ0hfUE9QVUxBVEVTX05PREVfTUFQPXkKIENPTkZJR19TRUxFQ1RfTUVNT1JZX01PREVMPXkKQEAgLTE5MCwxOCArMjE2LDEzIEBACiBDT05GSUdfUFJPQ19ERVZJQ0VUUkVFPXkKICMgQ09ORklHX0NNRExJTkVfQk9PTCBpcyBub3Qgc2V0CiAjIENPTkZJR19QTSBpcyBub3Qgc2V0Ci1DT05GSUdfU1VTUEVORF9VUF9QT1NTSUJMRT15Ci1DT05GSUdfSElCRVJOQVRJT05fVVBfUE9TU0lCTEU9eQogIyBDT05GSUdfU0VDQ09NUCBpcyBub3Qgc2V0Ci1DT05GSUdfV0FOVF9ERVZJQ0VfVFJFRT15Ci1DT05GSUdfREVWSUNFX1RSRUU9IiIKIENPTkZJR19JU0FfRE1BX0FQST15CiAKICMKICMgQnVzIG9wdGlvbnMKICMKIENPTkZJR19aT05FX0RNQT15Ci1DT05GSUdfUFBDX0lORElSRUNUX1BDST15CiBDT05GSUdfRlNMX1NPQz15CiAjIENPTkZJR19QQ0kgaXMgbm90IHNldAogIyBDT05GSUdfUENJX0RPTUFJTlMgaXMgbm90IHNldApAQCAtMjM4LDYgKzI1OSw3IEBACiBDT05GSUdfWEZSTV9VU0VSPXkKICMgQ09ORklHX1hGUk1fU1VCX1BPTElDWSBpcyBub3Qgc2V0CiAjIENPTkZJR19YRlJNX01JR1JBVEUgaXMgbm90IHNldAorIyBDT05GSUdfWEZSTV9TVEFUSVNUSUNTIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9LRVkgaXMgbm90IHNldAogQ09ORklHX0lORVQ9eQogQ09ORklHX0lQX01VTFRJQ0FTVD15CkBAIC0yOTMsNiArMzE1LDcgQEAKICMKICMgQ09ORklHX05FVF9QS1RHRU4gaXMgbm90IHNldAogIyBDT05GSUdfSEFNUkFESU8gaXMgbm90IHNldAorIyBDT05GSUdfQ0FOIGlzIG5vdCBzZXQKICMgQ09ORklHX0lSREEgaXMgbm90IHNldAogIyBDT05GSUdfQlQgaXMgbm90IHNldAogIyBDT05GSUdfQUZfUlhSUEMgaXMgbm90IHNldApAQCAtMzM0LDExICszNTcsMTMgQEAKIENPTkZJR19CTEtfREVWX1JBTT15CiBDT05GSUdfQkxLX0RFVl9SQU1fQ09VTlQ9MTYKIENPTkZJR19CTEtfREVWX1JBTV9TSVpFPTMyNzY4Ci1DT05GSUdfQkxLX0RFVl9SQU1fQkxPQ0tTSVpFPTEwMjQKKyMgQ09ORklHX0JMS19ERVZfWElQIGlzIG5vdCBzZXQKICMgQ09ORklHX0NEUk9NX1BLVENEVkQgaXMgbm90IHNldAogIyBDT05GSUdfQVRBX09WRVJfRVRIIGlzIG5vdCBzZXQKIENPTkZJR19NSVNDX0RFVklDRVM9eQogIyBDT05GSUdfRUVQUk9NXzkzQ1g2IGlzIG5vdCBzZXQKKyMgQ09ORklHX0VOQ0xPU1VSRV9TRVJWSUNFUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9JREU9eQogIyBDT05GSUdfSURFIGlzIG5vdCBzZXQKIAogIwpAQCAtMzczLDYgKzM5OCw3IEBACiAjIENPTkZJR19TTVNDX1BIWSBpcyBub3Qgc2V0CiAjIENPTkZJR19CUk9BRENPTV9QSFkgaXMgbm90IHNldAogIyBDT05GSUdfSUNQTFVTX1BIWSBpcyBub3Qgc2V0CisjIENPTkZJR19SRUFMVEVLX1BIWSBpcyBub3Qgc2V0CiAjIENPTkZJR19GSVhFRF9QSFkgaXMgbm90IHNldAogIyBDT05GSUdfTURJT19CSVRCQU5HIGlzIG5vdCBzZXQKIENPTkZJR19ORVRfRVRIRVJORVQ9eQpAQCAtMzgzLDYgKzQwOSw3IEBACiAjIENPTkZJR19JQk1fTkVXX0VNQUNfRU1BQzQgaXMgbm90IHNldAogIyBDT05GSUdfQjQ0IGlzIG5vdCBzZXQKIENPTkZJR19ORVRERVZfMTAwMD15CisjIENPTkZJR19FMTAwMEVfRU5BQkxFRCBpcyBub3Qgc2V0CiBDT05GSUdfR0lBTkZBUj15CiBDT05GSUdfR0ZBUl9OQVBJPXkKIENPTkZJR19ORVRERVZfMTAwMDA9eQpAQCAtMzk1LDcgKzQyMiw2IEBACiAjIENPTkZJR19XQU4gaXMgbm90IHNldAogIyBDT05GSUdfUFBQIGlzIG5vdCBzZXQKICMgQ09ORklHX1NMSVAgaXMgbm90IHNldAotIyBDT05GSUdfU0hBUEVSIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVENPTlNPTEUgaXMgbm90IHNldAogIyBDT05GSUdfTkVUUE9MTCBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRfUE9MTF9DT05UUk9MTEVSIGlzIG5vdCBzZXQKQEAgLTQ4OSw2ICs1MTUsNyBAQAogIyBDT05GSUdfU0VOU09SU19XODM2MjdIRiBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1c4MzYyN0VIRiBpcyBub3Qgc2V0CiAjIENPTkZJR19IV01PTl9ERUJVR19DSElQIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RIRVJNQUwgaXMgbm90IHNldAogIyBDT05GSUdfV0FUQ0hET0cgaXMgbm90IHNldAogCiAjCkBAIC01MzgsMTUgKzU2NSwxMyBAQAogIwogIyBOT1RFOiBVU0JfU1RPUkFHRSBlbmFibGVzIFNDU0ksIGFuZCAnU0NTSSBkaXNrIHN1cHBvcnQnCiAjCi0KLSMKLSMgVVNCIEdhZGdldCBTdXBwb3J0Ci0jCiAjIENPTkZJR19VU0JfR0FER0VUIGlzIG5vdCBzZXQKICMgQ09ORklHX01NQyBpcyBub3Qgc2V0CisjIENPTkZJR19NRU1TVElDSyBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVdfTEVEUyBpcyBub3Qgc2V0CiAjIENPTkZJR19FREFDIGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19DTEFTUyBpcyBub3Qgc2V0CisjIENPTkZJR19ETUFERVZJQ0VTIGlzIG5vdCBzZXQKIAogIwogIyBVc2Vyc3BhY2UgSS9PCkBAIC01NzIsMTIgKzU5NywxMCBAQAogIyBDT05GSUdfWEZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0dGUzJfRlMgaXMgbm90IHNldAogIyBDT05GSUdfT0NGUzJfRlMgaXMgbm90IHNldAotIyBDT05GSUdfTUlOSVhfRlMgaXMgbm90IHNldAotIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAorQ09ORklHX0ROT1RJRlk9eQogQ09ORklHX0lOT1RJRlk9eQogQ09ORklHX0lOT1RJRllfVVNFUj15CiAjIENPTkZJR19RVU9UQSBpcyBub3Qgc2V0Ci1DT05GSUdfRE5PVElGWT15CiAjIENPTkZJR19BVVRPRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfQVVUT0ZTNF9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19GVVNFX0ZTIGlzIG5vdCBzZXQKQEAgLTYxOSw4ICs2NDIsMTAgQEAKICMgQ09ORklHX0VGU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUkFNRlMgaXMgbm90IHNldAogIyBDT05GSUdfVlhGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19IUEZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1FOWDRGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TWVNWX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1VGU19GUyBpcyBub3Qgc2V0CiBDT05GSUdfTkVUV09SS19GSUxFU1lTVEVNUz15CkBAIC02NjEsNyArNjg2LDYgQEAKICMgQ09ORklHX1NZU1Y2OF9QQVJUSVRJT04gaXMgbm90IHNldAogIyBDT05GSUdfTkxTIGlzIG5vdCBzZXQKICMgQ09ORklHX0RMTSBpcyBub3Qgc2V0Ci0jIENPTkZJR19VQ0NfU0xPVyBpcyBub3Qgc2V0CiAKICMKICMgTGlicmFyeSByb3V0aW5lcwpAQCAtNjc3LDcgKzcwMSw2IEBACiBDT05GSUdfSEFTX0lPTUVNPXkKIENPTkZJR19IQVNfSU9QT1JUPXkKIENPTkZJR19IQVNfRE1BPXkKLSMgQ09ORklHX0lOU1RSVU1FTlRBVElPTiBpcyBub3Qgc2V0CiAKICMKICMgS2VybmVsIGhhY2tpbmcKQEAgLTY5Niw2ICs3MTksNyBAQAogIyBDT05GSUdfU0NIRURTVEFUUyBpcyBub3Qgc2V0CiAjIENPTkZJR19USU1FUl9TVEFUUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TTFVCX0RFQlVHX09OIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NMVUJfU1RBVFMgaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfUlRfTVVURVhFUyBpcyBub3Qgc2V0CiAjIENPTkZJR19SVF9NVVRFWF9URVNURVIgaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfU1BJTkxPQ0sgaXMgbm90IHNldApAQCAtNzA4LDggKzczMiw4IEBACiAjIENPTkZJR19ERUJVR19WTSBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19MSVNUIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NHIGlzIG5vdCBzZXQKLUNPTkZJR19GT1JDRURfSU5MSU5JTkc9eQogIyBDT05GSUdfQk9PVF9QUklOVEtfREVMQVkgaXMgbm90IHNldAorIyBDT05GSUdfQkFDS1RSQUNFX1NFTEZfVEVTVCBpcyBub3Qgc2V0CiAjIENPTkZJR19GQVVMVF9JTkpFQ1RJT04gaXMgbm90IHNldAogIyBDT05GSUdfU0FNUExFUyBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19TVEFDS09WRVJGTE9XIGlzIG5vdCBzZXQKQEAgLTcyNSw1ICs3NDksNDggQEAKICMgQ09ORklHX0tFWVMgaXMgbm90IHNldAogIyBDT05GSUdfU0VDVVJJVFkgaXMgbm90IHNldAogIyBDT05GSUdfU0VDVVJJVFlfRklMRV9DQVBBQklMSVRJRVMgaXMgbm90IHNldAotIyBDT05GSUdfQ1JZUFRPIGlzIG5vdCBzZXQKK0NPTkZJR19DUllQVE89eQorIyBDT05GSUdfQ1JZUFRPX1NFUUlWIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19NQU5BR0VSIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19ITUFDIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19YQ0JDIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19OVUxMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19NRDQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX01ENSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0hBMSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0hBMjU2IGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19TSEE1MTIgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1dQNTEyIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19UR1IxOTIgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0dGMTI4TVVMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19FQ0IgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NCQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fUENCQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fTFJXIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19YVFMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NUUiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fR0NNIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DQ00gaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NSWVBURCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fREVTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19GQ1JZUFQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0JMT1dGSVNIIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19UV09GSVNIIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19TRVJQRU5UIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19BRVMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NBU1Q1IGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DQVNUNiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fVEVBIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19BUkM0IGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19LSEFaQUQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0FOVUJJUyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0VFRCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0FMU0EyMCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fREVGTEFURSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fTUlDSEFFTF9NSUMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NSQzMyQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ0FNRUxMSUEgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0FVVEhFTkMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0xaTyBpcyBub3Qgc2V0CitDT05GSUdfQ1JZUFRPX0hXPXkKICMgQ09ORklHX1BQQ19DTE9DSyBpcyBub3Qgc2V0CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM4NTQ0X2RzX2RlZmNvbmZpZyBiL2FyY2gvcG93ZXJwYy9jb25maWdzL21wYzg1NDRfZHNfZGVmY29uZmlnCmluZGV4IDE4NjIzYTguLjQxOGJjZGIgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jb25maWdzL21wYzg1NDRfZHNfZGVmY29uZmlnCisrKyBiL2FyY2gvcG93ZXJwYy9jb25maWdzL21wYzg1NDRfZHNfZGVmY29uZmlnCkBAIC0xLDcgKzEsNyBAQAogIwogIyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBtYWtlIGNvbmZpZzogZG9uJ3QgZWRpdAotIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjI0LXJjNAotIyBUaHUgRGVjICA2IDE2OjQ4OjQ2IDIwMDcKKyMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4yNS1yYzcKKyMgTW9uIE1hciAzMSAxMTozNzowMyAyMDA4CiAjCiAjIENPTkZJR19QUEM2NCBpcyBub3Qgc2V0CiAKQEAgLTE0LDEwICsxNCwxMCBAQAogIyBDT05GSUdfNDB4IGlzIG5vdCBzZXQKICMgQ09ORklHXzQ0eCBpcyBub3Qgc2V0CiAjIENPTkZJR19FMjAwIGlzIG5vdCBzZXQKLUNPTkZJR184NXh4PXkKIENPTkZJR19FNTAwPXkKIENPTkZJR19CT09LRT15CiBDT05GSUdfRlNMX0JPT0tFPXkKK0NPTkZJR19GU0xfRU1CX1BFUkZNT049eQogIyBDT05GSUdfUEhZU182NEJJVCBpcyBub3Qgc2V0CiBDT05GSUdfU1BFPXkKICMgQ09ORklHX1BQQ19NTV9TTElDRVMgaXMgbm90IHNldApAQCAtMzAsNiArMzAsNyBAQAogQ09ORklHX0dFTkVSSUNfVElNRV9WU1lTQ0FMTD15CiBDT05GSUdfR0VORVJJQ19DTE9DS0VWRU5UUz15CiBDT05GSUdfR0VORVJJQ19IQVJESVJRUz15CisjIENPTkZJR19IQVZFX1NFVFVQX1BFUl9DUFVfQVJFQSBpcyBub3Qgc2V0CiBDT05GSUdfSVJRX1BFUl9DUFU9eQogQ09ORklHX1JXU0VNX1hDSEdBRERfQUxHT1JJVEhNPXkKIENPTkZJR19BUkNIX0hBU19JTE9HMl9VMzI9eQpAQCAtNjgsMTcgKzY5LDIxIEBACiBDT05GSUdfQlNEX1BST0NFU1NfQUNDVD15CiAjIENPTkZJR19CU0RfUFJPQ0VTU19BQ0NUX1YzIGlzIG5vdCBzZXQKICMgQ09ORklHX1RBU0tTVEFUUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19VU0VSX05TIGlzIG5vdCBzZXQKLSMgQ09ORklHX1BJRF9OUyBpcyBub3Qgc2V0CiBDT05GSUdfQVVESVQ9eQogIyBDT05GSUdfQVVESVRTWVNDQUxMIGlzIG5vdCBzZXQKIENPTkZJR19JS0NPTkZJRz15CiBDT05GSUdfSUtDT05GSUdfUFJPQz15CiBDT05GSUdfTE9HX0JVRl9TSElGVD0xNAogIyBDT05GSUdfQ0dST1VQUyBpcyBub3Qgc2V0CitDT05GSUdfR1JPVVBfU0NIRUQ9eQogIyBDT05GSUdfRkFJUl9HUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CisjIENPTkZJR19SVF9HUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CitDT05GSUdfVVNFUl9TQ0hFRD15CisjIENPTkZJR19DR1JPVVBfU0NIRUQgaXMgbm90IHNldAogQ09ORklHX1NZU0ZTX0RFUFJFQ0FURUQ9eQorQ09ORklHX1NZU0ZTX0RFUFJFQ0FURURfVjI9eQogIyBDT05GSUdfUkVMQVkgaXMgbm90IHNldAorIyBDT05GSUdfTkFNRVNQQUNFUyBpcyBub3Qgc2V0CiBDT05GSUdfQkxLX0RFVl9JTklUUkQ9eQogQ09ORklHX0lOSVRSQU1GU19TT1VSQ0U9IiIKICMgQ09ORklHX0NDX09QVElNSVpFX0ZPUl9TSVpFIGlzIG5vdCBzZXQKQEAgLTkyLDExICs5NywxMyBAQAogQ09ORklHX1BSSU5USz15CiBDT05GSUdfQlVHPXkKIENPTkZJR19FTEZfQ09SRT15CitDT05GSUdfQ09NUEFUX0JSSz15CiBDT05GSUdfQkFTRV9GVUxMPXkKIENPTkZJR19GVVRFWD15CiBDT05GSUdfQU5PTl9JTk9ERVM9eQogQ09ORklHX0VQT0xMPXkKIENPTkZJR19TSUdOQUxGRD15CitDT05GSUdfVElNRVJGRD15CiBDT05GSUdfRVZFTlRGRD15CiBDT05GSUdfU0hNRU09eQogQ09ORklHX1ZNX0VWRU5UX0NPVU5URVJTPXkKQEAgLTEwNCw2ICsxMTEsMTQgQEAKICMgQ09ORklHX1NMQUIgaXMgbm90IHNldAogQ09ORklHX1NMVUI9eQogIyBDT05GSUdfU0xPQiBpcyBub3Qgc2V0CisjIENPTkZJR19QUk9GSUxJTkcgaXMgbm90IHNldAorIyBDT05GSUdfTUFSS0VSUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9PUFJPRklMRT15CisjIENPTkZJR19LUFJPQkVTIGlzIG5vdCBzZXQKK0NPTkZJR19IQVZFX0tQUk9CRVM9eQorQ09ORklHX0hBVkVfS1JFVFBST0JFUz15CitDT05GSUdfUFJPQ19QQUdFX01PTklUT1I9eQorQ09ORklHX1NMQUJJTkZPPXkKIENPTkZJR19SVF9NVVRFWEVTPXkKICMgQ09ORklHX1RJTllfU0hNRU0gaXMgbm90IHNldAogQ09ORklHX0JBU0VfU01BTEw9MApAQCAtMTMxLDIxICsxNDYsMzAgQEAKIENPTkZJR19ERUZBVUxUX0NGUT15CiAjIENPTkZJR19ERUZBVUxUX05PT1AgaXMgbm90IHNldAogQ09ORklHX0RFRkFVTFRfSU9TQ0hFRD0iY2ZxIgorQ09ORklHX0NMQVNTSUNfUkNVPXkKIAogIwogIyBQbGF0Zm9ybSBzdXBwb3J0CiAjCi0jIENPTkZJR19QUENfTVBDNTJ4eCBpcyBub3Qgc2V0Ci0jIENPTkZJR19QUENfTVBDNTIwMCBpcyBub3Qgc2V0CisjIENPTkZJR19QUENfTVBDNTEyeCBpcyBub3Qgc2V0CisjIENPTkZJR19QUENfTVBDNTEyMSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfQ0VMTCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfQ0VMTF9OQVRJVkUgaXMgbm90IHNldAogIyBDT05GSUdfUFEyQURTIGlzIG5vdCBzZXQKK0NPTkZJR19NUEM4NXh4PXkKICMgQ09ORklHX01QQzg1NDBfQURTIGlzIG5vdCBzZXQKICMgQ09ORklHX01QQzg1NjBfQURTIGlzIG5vdCBzZXQKICMgQ09ORklHX01QQzg1eHhfQ0RTIGlzIG5vdCBzZXQKICMgQ09ORklHX01QQzg1eHhfTURTIGlzIG5vdCBzZXQKIENPTkZJR19NUEM4NXh4X0RTPXkKLUNPTkZJR19NUEM4NXh4PXkKKyMgQ09ORklHX1NUWF9HUDMgaXMgbm90IHNldAorIyBDT05GSUdfVFFNODU0MCBpcyBub3Qgc2V0CisjIENPTkZJR19UUU04NTQxIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RRTTg1NTUgaXMgbm90IHNldAorIyBDT05GSUdfVFFNODU2MCBpcyBub3Qgc2V0CisjIENPTkZJR19TQkM4NTQ4IGlzIG5vdCBzZXQKKyMgQ09ORklHX1NCQzg1NjAgaXMgbm90IHNldAorIyBDT05GSUdfSVBJQyBpcyBub3Qgc2V0CiBDT05GSUdfTVBJQz15CiAjIENPTkZJR19NUElDX1dFSVJEIGlzIG5vdCBzZXQKIENPTkZJR19QUENfSTgyNTk9eQpAQCAtMTcyLDEzICsxOTYsMTcgQEAKICMgQ09ORklHX0haXzMwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19IWl8xMDAwIGlzIG5vdCBzZXQKIENPTkZJR19IWj0yNTAKKyMgQ09ORklHX1NDSEVEX0hSVElDSyBpcyBub3Qgc2V0CiBDT05GSUdfUFJFRU1QVF9OT05FPXkKICMgQ09ORklHX1BSRUVNUFRfVk9MVU5UQVJZIGlzIG5vdCBzZXQKICMgQ09ORklHX1BSRUVNUFQgaXMgbm90IHNldAogQ09ORklHX0JJTkZNVF9FTEY9eQogQ09ORklHX0JJTkZNVF9NSVNDPW0KIENPTkZJR19NQVRIX0VNVUxBVElPTj15CisjIENPTkZJR19JT01NVV9IRUxQRVIgaXMgbm90IHNldAogQ09ORklHX0FSQ0hfRU5BQkxFX01FTU9SWV9IT1RQTFVHPXkKK0NPTkZJR19BUkNIX0hBU19XQUxLX01FTU9SWT15CitDT05GSUdfQVJDSF9FTkFCTEVfTUVNT1JZX0hPVFJFTU9WRT15CiBDT05GSUdfQVJDSF9GTEFUTUVNX0VOQUJMRT15CiBDT05GSUdfQVJDSF9QT1BVTEFURVNfTk9ERV9NQVA9eQogQ09ORklHX1NFTEVDVF9NRU1PUllfTU9ERUw9eQpAQCAtMTk3LDExICsyMjUsNyBAQAogQ09ORklHX1BST0NfREVWSUNFVFJFRT15CiAjIENPTkZJR19DTURMSU5FX0JPT0wgaXMgbm90IHNldAogIyBDT05GSUdfUE0gaXMgbm90IHNldAotQ09ORklHX1NVU1BFTkRfVVBfUE9TU0lCTEU9eQotQ09ORklHX0hJQkVSTkFUSU9OX1VQX1BPU1NJQkxFPXkKIENPTkZJR19TRUNDT01QPXkKLUNPTkZJR19XQU5UX0RFVklDRV9UUkVFPXkKLUNPTkZJR19ERVZJQ0VfVFJFRT0iIgogQ09ORklHX0lTQV9ETUFfQVBJPXkKIAogIwpAQCAtMjUyLDYgKzI3Niw3IEBACiBDT05GSUdfWEZSTV9VU0VSPXkKICMgQ09ORklHX1hGUk1fU1VCX1BPTElDWSBpcyBub3Qgc2V0CiAjIENPTkZJR19YRlJNX01JR1JBVEUgaXMgbm90IHNldAorIyBDT05GSUdfWEZSTV9TVEFUSVNUSUNTIGlzIG5vdCBzZXQKIENPTkZJR19ORVRfS0VZPW0KICMgQ09ORklHX05FVF9LRVlfTUlHUkFURSBpcyBub3Qgc2V0CiBDT05GSUdfSU5FVD15CkBAIC0zMzUsNiArMzYwLDcgQEAKICMKICMgQ09ORklHX05FVF9QS1RHRU4gaXMgbm90IHNldAogIyBDT05GSUdfSEFNUkFESU8gaXMgbm90IHNldAorIyBDT05GSUdfQ0FOIGlzIG5vdCBzZXQKICMgQ09ORklHX0lSREEgaXMgbm90IHNldAogIyBDT05GSUdfQlQgaXMgbm90IHNldAogIyBDT05GSUdfQUZfUlhSUEMgaXMgbm90IHNldApAQCAtMzgzLDcgKzQwOSw3IEBACiBDT05GSUdfQkxLX0RFVl9SQU09eQogQ09ORklHX0JMS19ERVZfUkFNX0NPVU5UPTE2CiBDT05GSUdfQkxLX0RFVl9SQU1fU0laRT0xMzEwNzIKLUNPTkZJR19CTEtfREVWX1JBTV9CTE9DS1NJWkU9MTAyNAorIyBDT05GSUdfQkxLX0RFVl9YSVAgaXMgbm90IHNldAogIyBDT05GSUdfQ0RST01fUEtUQ0RWRCBpcyBub3Qgc2V0CiAjIENPTkZJR19BVEFfT1ZFUl9FVEggaXMgbm90IHNldAogQ09ORklHX01JU0NfREVWSUNFUz15CkBAIC0zOTEsNiArNDE3LDggQEAKICMgQ09ORklHX0VFUFJPTV85M0NYNiBpcyBub3Qgc2V0CiAjIENPTkZJR19TR0lfSU9DNCBpcyBub3Qgc2V0CiAjIENPTkZJR19USUZNX0NPUkUgaXMgbm90IHNldAorIyBDT05GSUdfRU5DTE9TVVJFX1NFUlZJQ0VTIGlzIG5vdCBzZXQKK0NPTkZJR19IQVZFX0lERT15CiAjIENPTkZJR19JREUgaXMgbm90IHNldAogCiAjCkBAIC00NTYsNiArNDg0LDcgQEAKICMgQ09ORklHX1NDU0lfSVBTIGlzIG5vdCBzZXQKICMgQ09ORklHX1NDU0lfSU5JVElPIGlzIG5vdCBzZXQKICMgQ09ORklHX1NDU0lfSU5JQTEwMCBpcyBub3Qgc2V0CisjIENPTkZJR19TQ1NJX01WU0FTIGlzIG5vdCBzZXQKICMgQ09ORklHX1NDU0lfU1RFWCBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX1NZTTUzQzhYWF8yIGlzIG5vdCBzZXQKICMgQ09ORklHX1NDU0lfSVBSIGlzIG5vdCBzZXQKQEAgLTQ4Niw2ICs1MTUsNyBAQAogIyBDT05GSUdfU0FUQV9WSUEgaXMgbm90IHNldAogIyBDT05GSUdfU0FUQV9WSVRFU1NFIGlzIG5vdCBzZXQKICMgQ09ORklHX1NBVEFfSU5JQzE2MlggaXMgbm90IHNldAorIyBDT05GSUdfU0FUQV9GU0wgaXMgbm90IHNldAogQ09ORklHX1BBVEFfQUxJPXkKICMgQ09ORklHX1BBVEFfQU1EIGlzIG5vdCBzZXQKICMgQ09ORklHX1BBVEFfQVJUT1AgaXMgbm90IHNldApAQCAtNTA5LDYgKzUzOSw3IEBACiAjIENPTkZJR19QQVRBX01QSUlYIGlzIG5vdCBzZXQKICMgQ09ORklHX1BBVEFfT0xEUElJWCBpcyBub3Qgc2V0CiAjIENPTkZJR19QQVRBX05FVENFTEwgaXMgbm90IHNldAorIyBDT05GSUdfUEFUQV9OSU5KQTMyIGlzIG5vdCBzZXQKICMgQ09ORklHX1BBVEFfTlM4NzQxMCBpcyBub3Qgc2V0CiAjIENPTkZJR19QQVRBX05TODc0MTUgaXMgbm90IHNldAogIyBDT05GSUdfUEFUQV9PUFRJIGlzIG5vdCBzZXQKQEAgLTU0Miw3ICs1NzMsNiBAQAogIyBDT05GSUdfRVFVQUxJWkVSIGlzIG5vdCBzZXQKICMgQ09ORklHX1RVTiBpcyBub3Qgc2V0CiAjIENPTkZJR19WRVRIIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lQMTAwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19BUkNORVQgaXMgbm90IHNldAogQ09ORklHX1BIWUxJQj15CiAKQEAgLTU1OCw2ICs1ODgsNyBAQAogIyBDT05GSUdfU01TQ19QSFkgaXMgbm90IHNldAogIyBDT05GSUdfQlJPQURDT01fUEhZIGlzIG5vdCBzZXQKICMgQ09ORklHX0lDUExVU19QSFkgaXMgbm90IHNldAorIyBDT05GSUdfUkVBTFRFS19QSFkgaXMgbm90IHNldAogIyBDT05GSUdfRklYRURfUEhZIGlzIG5vdCBzZXQKICMgQ09ORklHX01ESU9fQklUQkFORyBpcyBub3Qgc2V0CiBDT05GSUdfTkVUX0VUSEVSTkVUPXkKQEAgLTU3OSw2ICs2MTAsOSBAQAogIyBDT05GSUdfREwySyBpcyBub3Qgc2V0CiAjIENPTkZJR19FMTAwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19FMTAwMEUgaXMgbm90IHNldAorIyBDT05GSUdfRTEwMDBFX0VOQUJMRUQgaXMgbm90IHNldAorIyBDT05GSUdfSVAxMDAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lHQiBpcyBub3Qgc2V0CiAjIENPTkZJR19OUzgzODIwIGlzIG5vdCBzZXQKICMgQ09ORklHX0hBTUFDSEkgaXMgbm90IHNldAogIyBDT05GSUdfWUVMTE9XRklOIGlzIG5vdCBzZXQKQEAgLTYwNSw2ICs2MzksNyBAQAogIyBDT05GSUdfTklVIGlzIG5vdCBzZXQKICMgQ09ORklHX01MWDRfQ09SRSBpcyBub3Qgc2V0CiAjIENPTkZJR19URUhVVEkgaXMgbm90IHNldAorIyBDT05GSUdfQk5YMlggaXMgbm90IHNldAogIyBDT05GSUdfVFIgaXMgbm90IHNldAogCiAjCkBAIC02MjcsNyArNjYyLDYgQEAKICMgQ09ORklHX1BQUCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTElQIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9GQyBpcyBub3Qgc2V0Ci0jIENPTkZJR19TSEFQRVIgaXMgbm90IHNldAogIyBDT05GSUdfTkVUQ09OU09MRSBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRQT0xMIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9QT0xMX0NPTlRST0xMRVIgaXMgbm90IHNldApAQCAtNjc4LDYgKzcxMiw3IEBACiBDT05GSUdfSFdfQ09OU09MRT15CiAjIENPTkZJR19WVF9IV19DT05TT0xFX0JJTkRJTkcgaXMgbm90IHNldAogIyBDT05GSUdfU0VSSUFMX05PTlNUQU5EQVJEIGlzIG5vdCBzZXQKKyMgQ09ORklHX05PWk9NSSBpcyBub3Qgc2V0CiAKICMKICMgU2VyaWFsIGRyaXZlcnMKQEAgLTcwNyw4ICs3NDIsNyBAQAogIyBDT05GSUdfSVBNSV9IQU5ETEVSIGlzIG5vdCBzZXQKICMgQ09ORklHX0hXX1JBTkRPTSBpcyBub3Qgc2V0CiBDT05GSUdfTlZSQU09eQotQ09ORklHX0dFTl9SVEM9eQotQ09ORklHX0dFTl9SVENfWD15CisjIENPTkZJR19HRU5fUlRDIGlzIG5vdCBzZXQKICMgQ09ORklHX1IzOTY0IGlzIG5vdCBzZXQKICMgQ09ORklHX0FQUExJQ09NIGlzIG5vdCBzZXQKICMgQ09ORklHX1JBV19EUklWRVIgaXMgbm90IHNldApAQCAtNzU2LDE0ICs3OTAsMTIgQEAKICMKICMgTWlzY2VsbGFuZW91cyBJMkMgQ2hpcCBzdXBwb3J0CiAjCi0jIENPTkZJR19TRU5TT1JTX0RTMTMzNyBpcyBub3Qgc2V0Ci0jIENPTkZJR19TRU5TT1JTX0RTMTM3NCBpcyBub3Qgc2V0CiAjIENPTkZJR19EUzE2ODIgaXMgbm90IHNldAogQ09ORklHX1NFTlNPUlNfRUVQUk9NPXkKICMgQ09ORklHX1NFTlNPUlNfUENGODU3NCBpcyBub3Qgc2V0Ci0jIENPTkZJR19TRU5TT1JTX1BDQTk1MzkgaXMgbm90IHNldAorIyBDT05GSUdfUENGODU3NSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1BDRjg1OTEgaXMgbm90IHNldAotIyBDT05GSUdfU0VOU09SU19NNDFUMDAgaXMgbm90IHNldAorIyBDT05GSUdfVFBTNjUwMTAgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19NQVg2ODc1IGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVFNMMjU1MCBpcyBub3Qgc2V0CiAjIENPTkZJR19JMkNfREVCVUdfQ09SRSBpcyBub3Qgc2V0CkBAIC03NzksNiArODExLDcgQEAKICMgQ09ORklHX1cxIGlzIG5vdCBzZXQKICMgQ09ORklHX1BPV0VSX1NVUFBMWSBpcyBub3Qgc2V0CiAjIENPTkZJR19IV01PTiBpcyBub3Qgc2V0CisjIENPTkZJR19USEVSTUFMIGlzIG5vdCBzZXQKICMgQ09ORklHX1dBVENIRE9HIGlzIG5vdCBzZXQKIAogIwpAQCAtODAzLDYgKzgzNiw4IEBACiAjCiAjIFN1cHBvcnRlZCBTQUE3MTQ2IGJhc2VkIFBDSSBBZGFwdGVycwogIworIyBDT05GSUdfVFRQQ0lfRUVQUk9NIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RWQl9CVURHRVRfQ09SRSBpcyBub3Qgc2V0CiAKICMKICMgU3VwcG9ydGVkIFVTQiBBZGFwdGVycwpAQCAtODg4LDExICs5MjMsMTMgQEAKICMgQ09ORklHX0RWQl9QTEwgaXMgbm90IHNldAogIyBDT05GSUdfRFZCX1REQTgyNlggaXMgbm90IHNldAogIyBDT05GSUdfRFZCX1REQTgyN1ggaXMgbm90IHNldAorIyBDT05GSUdfRFZCX1REQTE4MjcxIGlzIG5vdCBzZXQKICMgQ09ORklHX0RWQl9UVU5FUl9RVDEwMTAgaXMgbm90IHNldAogIyBDT05GSUdfRFZCX1RVTkVSX01UMjA2MCBpcyBub3Qgc2V0CiAjIENPTkZJR19EVkJfVFVORVJfTVQyMjY2IGlzIG5vdCBzZXQKICMgQ09ORklHX0RWQl9UVU5FUl9NVDIxMzEgaXMgbm90IHNldAogIyBDT05GSUdfRFZCX1RVTkVSX0RJQjAwNzAgaXMgbm90IHNldAorIyBDT05GSUdfRFZCX1RVTkVSX1hDNTAwMCBpcyBub3Qgc2V0CiAKICMKICMgTWlzY2VsbGFuZW91cyBkZXZpY2VzCkBAIC05NzAsNiArMTAwNyw3IEBACiAjIENPTkZJR19TTkRfQlQ4N1ggaXMgbm90IHNldAogIyBDT05GSUdfU05EX0NBMDEwNiBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfQ01JUENJIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NORF9PWFlHRU4gaXMgbm90IHNldAogIyBDT05GSUdfU05EX0NTNDI4MSBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfQ1M0NlhYIGlzIG5vdCBzZXQKICMgQ09ORklHX1NORF9DUzU1MzAgaXMgbm90IHNldApAQCAtOTk1LDYgKzEwMzMsNyBAQAogIyBDT05GSUdfU05EX0hEQV9JTlRFTCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfSERTUCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfSERTUE0gaXMgbm90IHNldAorIyBDT05GSUdfU05EX0hJRklFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfSUNFMTcxMiBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfSUNFMTcyNCBpcyBub3Qgc2V0CiBDT05GSUdfU05EX0lOVEVMOFgwPXkKQEAgLTEwMTIsNiArMTA1MSw3IEBACiAjIENPTkZJR19TTkRfVFJJREVOVCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfVklBODJYWCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfVklBODJYWF9NT0RFTSBpcyBub3Qgc2V0CisjIENPTkZJR19TTkRfVklSVFVPU08gaXMgbm90IHNldAogIyBDT05GSUdfU05EX1ZYMjIyIGlzIG5vdCBzZXQKICMgQ09ORklHX1NORF9ZTUZQQ0kgaXMgbm90IHNldAogIyBDT05GSUdfU05EX0FDOTdfUE9XRVJfU0FWRSBpcyBub3Qgc2V0CkBAIC0xMDQxLDYgKzEwODEsMTAgQEAKICMKIAogIworIyBBTFNBIFNvQyBhdWRpbyBmb3IgRnJlZXNjYWxlIFNPQ3MKKyMKKworIwogIyBPcGVuIFNvdW5kIFN5c3RlbQogIwogIyBDT05GSUdfU09VTkRfUFJJTUUgaXMgbm90IHNldApAQCAtMTA2Myw2ICsxMTA3LDcgQEAKIENPTkZJR19VU0JfQVJDSF9IQVNfRUhDST15CiBDT05GSUdfVVNCPXkKICMgQ09ORklHX1VTQl9ERUJVRyBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfQU5OT1VOQ0VfTkVXX0RFVklDRVMgaXMgbm90IHNldAogCiAjCiAjIE1pc2NlbGxhbmVvdXMgVVNCIG9wdGlvbnMKQEAgLTEwNzYsOSArMTEyMSwxMCBAQAogIyBVU0IgSG9zdCBDb250cm9sbGVyIERyaXZlcnMKICMKIENPTkZJR19VU0JfRUhDSV9IQ0Q9eQotIyBDT05GSUdfVVNCX0VIQ0lfU1BMSVRfSVNPIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9FSENJX1JPT1RfSFVCX1RUIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9FSENJX1RUX05FV1NDSEVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9FSENJX0ZTTCBpcyBub3Qgc2V0CitDT05GSUdfVVNCX0VIQ0lfSENEX1BQQ19PRj15CiAjIENPTkZJR19VU0JfSVNQMTE2WF9IQ0QgaXMgbm90IHNldAogQ09ORklHX1VTQl9PSENJX0hDRD15CiBDT05GSUdfVVNCX09IQ0lfSENEX1BQQ19PRj15CkBAIC0xMTI5LDEwICsxMTc1LDYgQEAKICMKICMgVVNCIHBvcnQgZHJpdmVycwogIwotCi0jCi0jIFVTQiBTZXJpYWwgQ29udmVydGVyIHN1cHBvcnQKLSMKICMgQ09ORklHX1VTQl9TRVJJQUwgaXMgbm90IHNldAogCiAjCkBAIC0xMTU4LDE2ICsxMjAwLDkgQEAKICMgQ09ORklHX1VTQl9UUkFOQ0VWSUJSQVRPUiBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfSU9XQVJSSU9SIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9URVNUIGlzIG5vdCBzZXQKLQotIwotIyBVU0IgRFNMIG1vZGVtIHN1cHBvcnQKLSMKLQotIwotIyBVU0IgR2FkZ2V0IFN1cHBvcnQKLSMKICMgQ09ORklHX1VTQl9HQURHRVQgaXMgbm90IHNldAogIyBDT05GSUdfTU1DIGlzIG5vdCBzZXQKKyMgQ09ORklHX01FTVNUSUNLIGlzIG5vdCBzZXQKICMgQ09ORklHX05FV19MRURTIGlzIG5vdCBzZXQKICMgQ09ORklHX0lORklOSUJBTkQgaXMgbm90IHNldAogIyBDT05GSUdfRURBQyBpcyBub3Qgc2V0CkBAIC0xMTk5LDYgKzEyMzQsNyBAQAogIyBDT05GSUdfUlRDX0RSVl9QQ0Y4NTYzIGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfUENGODU4MyBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfRFJWX000MVQ4MCBpcyBub3Qgc2V0CisjIENPTkZJR19SVENfRFJWX1MzNTM5MEEgaXMgbm90IHNldAogCiAjCiAjIFNQSSBSVEMgZHJpdmVycwpAQCAtMTIwOCw5ICsxMjQ0LDEwIEBACiAjIFBsYXRmb3JtIFJUQyBkcml2ZXJzCiAjCiBDT05GSUdfUlRDX0RSVl9DTU9TPXkKKyMgQ09ORklHX1JUQ19EUlZfRFMxNTExIGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfRFMxNTUzIGlzIG5vdCBzZXQKLSMgQ09ORklHX1JUQ19EUlZfU1RLMTdUQTggaXMgbm90IHNldAogIyBDT05GSUdfUlRDX0RSVl9EUzE3NDIgaXMgbm90IHNldAorIyBDT05GSUdfUlRDX0RSVl9TVEsxN1RBOCBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfRFJWX000OFQ4NiBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfRFJWX000OFQ1OSBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfRFJWX1YzMDIwIGlzIG5vdCBzZXQKQEAgLTEyMTgsNiArMTI1NSw3IEBACiAjCiAjIG9uLUNQVSBSVEMgZHJpdmVycwogIworIyBDT05GSUdfRE1BREVWSUNFUyBpcyBub3Qgc2V0CiAKICMKICMgVXNlcnNwYWNlIEkvTwpAQCAtMTI0MywxMiArMTI4MSwxMCBAQAogIyBDT05GSUdfWEZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0dGUzJfRlMgaXMgbm90IHNldAogIyBDT05GSUdfT0NGUzJfRlMgaXMgbm90IHNldAotIyBDT05GSUdfTUlOSVhfRlMgaXMgbm90IHNldAotIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAorQ09ORklHX0ROT1RJRlk9eQogQ09ORklHX0lOT1RJRlk9eQogQ09ORklHX0lOT1RJRllfVVNFUj15CiAjIENPTkZJR19RVU9UQSBpcyBub3Qgc2V0Ci1DT05GSUdfRE5PVElGWT15CiAjIENPTkZJR19BVVRPRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfQVVUT0ZTNF9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19GVVNFX0ZTIGlzIG5vdCBzZXQKQEAgLTEzMDAsOCArMTMzNiwxMCBAQAogQ09ORklHX0VGU19GUz1tCiBDT05GSUdfQ1JBTUZTPXkKIENPTkZJR19WWEZTX0ZTPW0KKyMgQ09ORklHX01JTklYX0ZTIGlzIG5vdCBzZXQKIENPTkZJR19IUEZTX0ZTPW0KIENPTkZJR19RTlg0RlNfRlM9bQorIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAogQ09ORklHX1NZU1ZfRlM9bQogQ09ORklHX1VGU19GUz1tCiAjIENPTkZJR19VRlNfRlNfV1JJVEUgaXMgbm90IHNldApAQCAtMTM5Myw3ICsxNDMxLDYgQEAKICMgQ09ORklHX05MU19LT0k4X1UgaXMgbm90IHNldAogQ09ORklHX05MU19VVEY4PW0KICMgQ09ORklHX0RMTSBpcyBub3Qgc2V0Ci0jIENPTkZJR19VQ0NfU0xPVyBpcyBub3Qgc2V0CiAKICMKICMgTGlicmFyeSByb3V0aW5lcwpAQCAtMTQxMCw3ICsxNDQ3LDYgQEAKIENPTkZJR19IQVNfSU9NRU09eQogQ09ORklHX0hBU19JT1BPUlQ9eQogQ09ORklHX0hBU19ETUE9eQotIyBDT05GSUdfSU5TVFJVTUVOVEFUSU9OIGlzIG5vdCBzZXQKIAogIwogIyBLZXJuZWwgaGFja2luZwpAQCAtMTQyOSw2ICsxNDY1LDcgQEAKICMgQ09ORklHX1NDSEVEU1RBVFMgaXMgbm90IHNldAogIyBDT05GSUdfVElNRVJfU1RBVFMgaXMgbm90IHNldAogIyBDT05GSUdfU0xVQl9ERUJVR19PTiBpcyBub3Qgc2V0CisjIENPTkZJR19TTFVCX1NUQVRTIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1JUX01VVEVYRVMgaXMgbm90IHNldAogIyBDT05GSUdfUlRfTVVURVhfVEVTVEVSIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NQSU5MT0NLIGlzIG5vdCBzZXQKQEAgLTE0NDIsOSArMTQ3OSw5IEBACiAjIENPTkZJR19ERUJVR19WTSBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19MSVNUIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NHIGlzIG5vdCBzZXQKLUNPTkZJR19GT1JDRURfSU5MSU5JTkc9eQogIyBDT05GSUdfQk9PVF9QUklOVEtfREVMQVkgaXMgbm90IHNldAogIyBDT05GSUdfUkNVX1RPUlRVUkVfVEVTVCBpcyBub3Qgc2V0CisjIENPTkZJR19CQUNLVFJBQ0VfU0VMRl9URVNUIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZBVUxUX0lOSkVDVElPTiBpcyBub3Qgc2V0CiAjIENPTkZJR19TQU1QTEVTIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NUQUNLT1ZFUkZMT1cgaXMgbm90IHNldApAQCAtMTQ2Myw2ICsxNTAwLDcgQEAKIENPTkZJR19DUllQVE89eQogQ09ORklHX0NSWVBUT19BTEdBUEk9eQogQ09ORklHX0NSWVBUT19CTEtDSVBIRVI9eQorIyBDT05GSUdfQ1JZUFRPX1NFUUlWIGlzIG5vdCBzZXQKIENPTkZJR19DUllQVE9fSEFTSD15CiBDT05GSUdfQ1JZUFRPX01BTkFHRVI9eQogQ09ORklHX0NSWVBUT19ITUFDPXkKQEAgLTE0ODEsNiArMTUxOSw5IEBACiBDT05GSUdfQ1JZUFRPX1BDQkM9bQogIyBDT05GSUdfQ1JZUFRPX0xSVyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fWFRTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DVFIgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0dDTSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ0NNIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19DUllQVEQgaXMgbm90IHNldAogQ09ORklHX0NSWVBUT19ERVM9eQogIyBDT05GSUdfQ1JZUFRPX0ZDUllQVCBpcyBub3Qgc2V0CkBAIC0xNDk1LDExICsxNTM2LDE0IEBACiAjIENPTkZJR19DUllQVE9fS0hBWkFEIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19BTlVCSVMgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX1NFRUQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1NBTFNBMjAgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0RFRkxBVEUgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX01JQ0hBRUxfTUlDIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19DUkMzMkMgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0NBTUVMTElBIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19URVNUIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19BVVRIRU5DIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19MWk8gaXMgbm90IHNldAogQ09ORklHX0NSWVBUT19IVz15CisjIENPTkZJR19DUllQVE9fREVWX0hJRk5fNzk1WCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfQ0xPQ0sgaXMgbm90IHNldApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODU2MF9hZHNfZGVmY29uZmlnIGIvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODU2MF9hZHNfZGVmY29uZmlnCmluZGV4IDUxZjk2OTMuLjg1MWFjOTEgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jb25maWdzL21wYzg1NjBfYWRzX2RlZmNvbmZpZworKysgYi9hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM4NTYwX2Fkc19kZWZjb25maWcKQEAgLTEsNyArMSw3IEBACiAjCiAjIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIG1ha2UgY29uZmlnOiBkb24ndCBlZGl0Ci0jIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMjQtcmM0Ci0jIFRodSBEZWMgIDYgMTY6NDg6NDggMjAwNworIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjI1LXJjNgorIyBNb24gTWFyIDI0IDA4OjQ4OjI3IDIwMDgKICMKICMgQ09ORklHX1BQQzY0IGlzIG5vdCBzZXQKIApAQCAtMTQsMTAgKzE0LDEwIEBACiAjIENPTkZJR180MHggaXMgbm90IHNldAogIyBDT05GSUdfNDR4IGlzIG5vdCBzZXQKICMgQ09ORklHX0UyMDAgaXMgbm90IHNldAotQ09ORklHXzg1eHg9eQogQ09ORklHX0U1MDA9eQogQ09ORklHX0JPT0tFPXkKIENPTkZJR19GU0xfQk9PS0U9eQorQ09ORklHX0ZTTF9FTUJfUEVSRk1PTj15CiAjIENPTkZJR19QSFlTXzY0QklUIGlzIG5vdCBzZXQKIENPTkZJR19TUEU9eQogIyBDT05GSUdfUFBDX01NX1NMSUNFUyBpcyBub3Qgc2V0CkBAIC0zMCw2ICszMCw3IEBACiBDT05GSUdfR0VORVJJQ19USU1FX1ZTWVNDQUxMPXkKIENPTkZJR19HRU5FUklDX0NMT0NLRVZFTlRTPXkKIENPTkZJR19HRU5FUklDX0hBUkRJUlFTPXkKKyMgQ09ORklHX0hBVkVfU0VUVVBfUEVSX0NQVV9BUkVBIGlzIG5vdCBzZXQKIENPTkZJR19JUlFfUEVSX0NQVT15CiBDT05GSUdfUldTRU1fWENIR0FERF9BTEdPUklUSE09eQogQ09ORklHX0FSQ0hfSEFTX0lMT0cyX1UzMj15CkBAIC02NywxNSArNjgsMTkgQEAKICMgQ09ORklHX1BPU0lYX01RVUVVRSBpcyBub3Qgc2V0CiAjIENPTkZJR19CU0RfUFJPQ0VTU19BQ0NUIGlzIG5vdCBzZXQKICMgQ09ORklHX1RBU0tTVEFUUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19VU0VSX05TIGlzIG5vdCBzZXQKLSMgQ09ORklHX1BJRF9OUyBpcyBub3Qgc2V0CiAjIENPTkZJR19BVURJVCBpcyBub3Qgc2V0CiAjIENPTkZJR19JS0NPTkZJRyBpcyBub3Qgc2V0CiBDT05GSUdfTE9HX0JVRl9TSElGVD0xNAogIyBDT05GSUdfQ0dST1VQUyBpcyBub3Qgc2V0CitDT05GSUdfR1JPVVBfU0NIRUQ9eQogIyBDT05GSUdfRkFJUl9HUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CisjIENPTkZJR19SVF9HUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CitDT05GSUdfVVNFUl9TQ0hFRD15CisjIENPTkZJR19DR1JPVVBfU0NIRUQgaXMgbm90IHNldAogQ09ORklHX1NZU0ZTX0RFUFJFQ0FURUQ9eQorQ09ORklHX1NZU0ZTX0RFUFJFQ0FURURfVjI9eQogIyBDT05GSUdfUkVMQVkgaXMgbm90IHNldAorIyBDT05GSUdfTkFNRVNQQUNFUyBpcyBub3Qgc2V0CiBDT05GSUdfQkxLX0RFVl9JTklUUkQ9eQogQ09ORklHX0lOSVRSQU1GU19TT1VSQ0U9IiIKICMgQ09ORklHX0NDX09QVElNSVpFX0ZPUl9TSVpFIGlzIG5vdCBzZXQKQEAgLTg5LDExICs5NCwxMyBAQAogQ09ORklHX1BSSU5USz15CiBDT05GSUdfQlVHPXkKIENPTkZJR19FTEZfQ09SRT15CitDT05GSUdfQ09NUEFUX0JSSz15CiBDT05GSUdfQkFTRV9GVUxMPXkKIENPTkZJR19GVVRFWD15CiBDT05GSUdfQU5PTl9JTk9ERVM9eQogQ09ORklHX0VQT0xMPXkKIENPTkZJR19TSUdOQUxGRD15CitDT05GSUdfVElNRVJGRD15CiBDT05GSUdfRVZFTlRGRD15CiBDT05GSUdfU0hNRU09eQogQ09ORklHX1ZNX0VWRU5UX0NPVU5URVJTPXkKQEAgLTEwMSw2ICsxMDgsMTMgQEAKICMgQ09ORklHX1NMQUIgaXMgbm90IHNldAogQ09ORklHX1NMVUI9eQogIyBDT05GSUdfU0xPQiBpcyBub3Qgc2V0CisjIENPTkZJR19QUk9GSUxJTkcgaXMgbm90IHNldAorIyBDT05GSUdfTUFSS0VSUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9PUFJPRklMRT15CitDT05GSUdfSEFWRV9LUFJPQkVTPXkKK0NPTkZJR19IQVZFX0tSRVRQUk9CRVM9eQorQ09ORklHX1BST0NfUEFHRV9NT05JVE9SPXkKK0NPTkZJR19TTEFCSU5GTz15CiBDT05GSUdfUlRfTVVURVhFUz15CiAjIENPTkZJR19USU5ZX1NITUVNIGlzIG5vdCBzZXQKIENPTkZJR19CQVNFX1NNQUxMPTAKQEAgLTEyMywyMiArMTM3LDMwIEBACiAjIENPTkZJR19ERUZBVUxUX0NGUSBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUZBVUxUX05PT1AgaXMgbm90IHNldAogQ09ORklHX0RFRkFVTFRfSU9TQ0hFRD0iYW50aWNpcGF0b3J5IgorQ09ORklHX0NMQVNTSUNfUkNVPXkKIAogIwogIyBQbGF0Zm9ybSBzdXBwb3J0CiAjCi0jIENPTkZJR19QUENfTVBDNTJ4eCBpcyBub3Qgc2V0Ci0jIENPTkZJR19QUENfTVBDNTIwMCBpcyBub3Qgc2V0CisjIENPTkZJR19QUENfTVBDNTEyeCBpcyBub3Qgc2V0CisjIENPTkZJR19QUENfTVBDNTEyMSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfQ0VMTCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfQ0VMTF9OQVRJVkUgaXMgbm90IHNldAogIyBDT05GSUdfUFEyQURTIGlzIG5vdCBzZXQKK0NPTkZJR19NUEM4NXh4PXkKICMgQ09ORklHX01QQzg1NDBfQURTIGlzIG5vdCBzZXQKIENPTkZJR19NUEM4NTYwX0FEUz15CiAjIENPTkZJR19NUEM4NXh4X0NEUyBpcyBub3Qgc2V0CiAjIENPTkZJR19NUEM4NXh4X01EUyBpcyBub3Qgc2V0CiAjIENPTkZJR19NUEM4NXh4X0RTIGlzIG5vdCBzZXQKLUNPTkZJR19NUEM4NTYwPXkKLUNPTkZJR19NUEM4NXh4PXkKKyMgQ09ORklHX1NUWF9HUDMgaXMgbm90IHNldAorIyBDT05GSUdfVFFNODU0MCBpcyBub3Qgc2V0CisjIENPTkZJR19UUU04NTQxIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RRTTg1NTUgaXMgbm90IHNldAorIyBDT05GSUdfVFFNODU2MCBpcyBub3Qgc2V0CisjIENPTkZJR19TQkM4NTQ4IGlzIG5vdCBzZXQKKyMgQ09ORklHX1NCQzg1NjAgaXMgbm90IHNldAorIyBDT05GSUdfSVBJQyBpcyBub3Qgc2V0CiBDT05GSUdfTVBJQz15CiAjIENPTkZJR19NUElDX1dFSVJEIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19JODI1OSBpcyBub3Qgc2V0CkBAIC0xNjcsMTMgKzE4OSwxNyBAQAogIyBDT05GSUdfSFpfMzAwIGlzIG5vdCBzZXQKICMgQ09ORklHX0haXzEwMDAgaXMgbm90IHNldAogQ09ORklHX0haPTI1MAorIyBDT05GSUdfU0NIRURfSFJUSUNLIGlzIG5vdCBzZXQKIENPTkZJR19QUkVFTVBUX05PTkU9eQogIyBDT05GSUdfUFJFRU1QVF9WT0xVTlRBUlkgaXMgbm90IHNldAogIyBDT05GSUdfUFJFRU1QVCBpcyBub3Qgc2V0CiBDT05GSUdfQklORk1UX0VMRj15CiBDT05GSUdfQklORk1UX01JU0M9eQogQ09ORklHX01BVEhfRU1VTEFUSU9OPXkKKyMgQ09ORklHX0lPTU1VX0hFTFBFUiBpcyBub3Qgc2V0CiBDT05GSUdfQVJDSF9FTkFCTEVfTUVNT1JZX0hPVFBMVUc9eQorQ09ORklHX0FSQ0hfSEFTX1dBTEtfTUVNT1JZPXkKK0NPTkZJR19BUkNIX0VOQUJMRV9NRU1PUllfSE9UUkVNT1ZFPXkKIENPTkZJR19BUkNIX0ZMQVRNRU1fRU5BQkxFPXkKIENPTkZJR19BUkNIX1BPUFVMQVRFU19OT0RFX01BUD15CiBDT05GSUdfU0VMRUNUX01FTU9SWV9NT0RFTD15CkBAIC0xOTIsMTEgKzIxOCw3IEBACiAjIENPTkZJR19QUk9DX0RFVklDRVRSRUUgaXMgbm90IHNldAogIyBDT05GSUdfQ01ETElORV9CT09MIGlzIG5vdCBzZXQKICMgQ09ORklHX1BNIGlzIG5vdCBzZXQKLUNPTkZJR19TVVNQRU5EX1VQX1BPU1NJQkxFPXkKLUNPTkZJR19ISUJFUk5BVElPTl9VUF9QT1NTSUJMRT15CiAjIENPTkZJR19TRUNDT01QIGlzIG5vdCBzZXQKLUNPTkZJR19XQU5UX0RFVklDRV9UUkVFPXkKLUNPTkZJR19ERVZJQ0VfVFJFRT0iIgogQ09ORklHX0lTQV9ETUFfQVBJPXkKIAogIwpAQCAtMjQ2LDYgKzI2OCw3IEBACiAjIENPTkZJR19YRlJNX1VTRVIgaXMgbm90IHNldAogIyBDT05GSUdfWEZSTV9TVUJfUE9MSUNZIGlzIG5vdCBzZXQKICMgQ09ORklHX1hGUk1fTUlHUkFURSBpcyBub3Qgc2V0CisjIENPTkZJR19YRlJNX1NUQVRJU1RJQ1MgaXMgbm90IHNldAogIyBDT05GSUdfTkVUX0tFWSBpcyBub3Qgc2V0CiBDT05GSUdfSU5FVD15CiBDT05GSUdfSVBfTVVMVElDQVNUPXkKQEAgLTMwMSw2ICszMjQsNyBAQAogIwogIyBDT05GSUdfTkVUX1BLVEdFTiBpcyBub3Qgc2V0CiAjIENPTkZJR19IQU1SQURJTyBpcyBub3Qgc2V0CisjIENPTkZJR19DQU4gaXMgbm90IHNldAogIyBDT05GSUdfSVJEQSBpcyBub3Qgc2V0CiAjIENPTkZJR19CVCBpcyBub3Qgc2V0CiAjIENPTkZJR19BRl9SWFJQQyBpcyBub3Qgc2V0CkBAIC0zNDcsNyArMzcxLDcgQEAKIENPTkZJR19CTEtfREVWX1JBTT15CiBDT05GSUdfQkxLX0RFVl9SQU1fQ09VTlQ9MTYKIENPTkZJR19CTEtfREVWX1JBTV9TSVpFPTMyNzY4Ci1DT05GSUdfQkxLX0RFVl9SQU1fQkxPQ0tTSVpFPTEwMjQKKyMgQ09ORklHX0JMS19ERVZfWElQIGlzIG5vdCBzZXQKICMgQ09ORklHX0NEUk9NX1BLVENEVkQgaXMgbm90IHNldAogIyBDT05GSUdfQVRBX09WRVJfRVRIIGlzIG5vdCBzZXQKIENPTkZJR19NSVNDX0RFVklDRVM9eQpAQCAtMzU1LDYgKzM3OSw4IEBACiAjIENPTkZJR19FRVBST01fOTNDWDYgaXMgbm90IHNldAogIyBDT05GSUdfU0dJX0lPQzQgaXMgbm90IHNldAogIyBDT05GSUdfVElGTV9DT1JFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VOQ0xPU1VSRV9TRVJWSUNFUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9JREU9eQogIyBDT05GSUdfSURFIGlzIG5vdCBzZXQKIAogIwpAQCAtMzgzLDcgKzQwOSw2IEBACiAjIENPTkZJR19FUVVBTElaRVIgaXMgbm90IHNldAogIyBDT05GSUdfVFVOIGlzIG5vdCBzZXQKICMgQ09ORklHX1ZFVEggaXMgbm90IHNldAotIyBDT05GSUdfSVAxMDAwIGlzIG5vdCBzZXQKICMgQ09ORklHX0FSQ05FVCBpcyBub3Qgc2V0CiBDT05GSUdfUEhZTElCPXkKIApAQCAtMzk5LDYgKzQyNCw3IEBACiAjIENPTkZJR19TTVNDX1BIWSBpcyBub3Qgc2V0CiAjIENPTkZJR19CUk9BRENPTV9QSFkgaXMgbm90IHNldAogIyBDT05GSUdfSUNQTFVTX1BIWSBpcyBub3Qgc2V0CisjIENPTkZJR19SRUFMVEVLX1BIWSBpcyBub3Qgc2V0CiAjIENPTkZJR19GSVhFRF9QSFkgaXMgbm90IHNldAogIyBDT05GSUdfTURJT19CSVRCQU5HIGlzIG5vdCBzZXQKIENPTkZJR19ORVRfRVRIRVJORVQ9eQpAQCAtNDI2LDYgKzQ1Miw5IEBACiBDT05GSUdfRTEwMDBfTkFQST15CiAjIENPTkZJR19FMTAwMF9ESVNBQkxFX1BBQ0tFVF9TUExJVCBpcyBub3Qgc2V0CiAjIENPTkZJR19FMTAwMEUgaXMgbm90IHNldAorIyBDT05GSUdfRTEwMDBFX0VOQUJMRUQgaXMgbm90IHNldAorIyBDT05GSUdfSVAxMDAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lHQiBpcyBub3Qgc2V0CiAjIENPTkZJR19OUzgzODIwIGlzIG5vdCBzZXQKICMgQ09ORklHX0hBTUFDSEkgaXMgbm90IHNldAogIyBDT05GSUdfWUVMTE9XRklOIGlzIG5vdCBzZXQKQEAgLTQ1Miw2ICs0ODEsNyBAQAogIyBDT05GSUdfTklVIGlzIG5vdCBzZXQKICMgQ09ORklHX01MWDRfQ09SRSBpcyBub3Qgc2V0CiAjIENPTkZJR19URUhVVEkgaXMgbm90IHNldAorIyBDT05GSUdfQk5YMlggaXMgbm90IHNldAogIyBDT05GSUdfVFIgaXMgbm90IHNldAogCiAjCkBAIC00NjQsNyArNDk0LDYgQEAKICMgQ09ORklHX0hJUFBJIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQUCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTElQIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NIQVBFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRDT05TT0xFIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVFBPTEwgaXMgbm90IHNldAogIyBDT05GSUdfTkVUX1BPTExfQ09OVFJPTExFUiBpcyBub3Qgc2V0CkBAIC01MDcsNiArNTM2LDcgQEAKICMKICMgQ09ORklHX1ZUIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFUklBTF9OT05TVEFOREFSRCBpcyBub3Qgc2V0CisjIENPTkZJR19OT1pPTUkgaXMgbm90IHNldAogCiAjCiAjIFNlcmlhbCBkcml2ZXJzCkBAIC01NjcsNiArNTk3LDcgQEAKICMgQ09ORklHX1NFTlNPUlNfVzgzNjI3SEYgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19XODM2MjdFSEYgaXMgbm90IHNldAogIyBDT05GSUdfSFdNT05fREVCVUdfQ0hJUCBpcyBub3Qgc2V0CisjIENPTkZJR19USEVSTUFMIGlzIG5vdCBzZXQKICMgQ09ORklHX1dBVENIRE9HIGlzIG5vdCBzZXQKIAogIwpAQCAtNjE5LDE2ICs2NTAsMTQgQEAKICMKICMgTk9URTogVVNCX1NUT1JBR0UgZW5hYmxlcyBTQ1NJLCBhbmQgJ1NDU0kgZGlzayBzdXBwb3J0JwogIwotCi0jCi0jIFVTQiBHYWRnZXQgU3VwcG9ydAotIwogIyBDT05GSUdfVVNCX0dBREdFVCBpcyBub3Qgc2V0CiAjIENPTkZJR19NTUMgaXMgbm90IHNldAorIyBDT05GSUdfTUVNU1RJQ0sgaXMgbm90IHNldAogIyBDT05GSUdfTkVXX0xFRFMgaXMgbm90IHNldAogIyBDT05GSUdfSU5GSU5JQkFORCBpcyBub3Qgc2V0CiAjIENPTkZJR19FREFDIGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19DTEFTUyBpcyBub3Qgc2V0CisjIENPTkZJR19ETUFERVZJQ0VTIGlzIG5vdCBzZXQKIAogIwogIyBVc2Vyc3BhY2UgSS9PCkBAIC02NTQsMTIgKzY4MywxMCBAQAogIyBDT05GSUdfWEZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0dGUzJfRlMgaXMgbm90IHNldAogIyBDT05GSUdfT0NGUzJfRlMgaXMgbm90IHNldAotIyBDT05GSUdfTUlOSVhfRlMgaXMgbm90IHNldAotIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAorQ09ORklHX0ROT1RJRlk9eQogQ09ORklHX0lOT1RJRlk9eQogQ09ORklHX0lOT1RJRllfVVNFUj15CiAjIENPTkZJR19RVU9UQSBpcyBub3Qgc2V0Ci1DT05GSUdfRE5PVElGWT15CiAjIENPTkZJR19BVVRPRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfQVVUT0ZTNF9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19GVVNFX0ZTIGlzIG5vdCBzZXQKQEAgLTcwMSw4ICs3MjgsMTAgQEAKICMgQ09ORklHX0VGU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUkFNRlMgaXMgbm90IHNldAogIyBDT05GSUdfVlhGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19IUEZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1FOWDRGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TWVNWX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1VGU19GUyBpcyBub3Qgc2V0CiBDT05GSUdfTkVUV09SS19GSUxFU1lTVEVNUz15CkBAIC03NDMsNyArNzcyLDYgQEAKICMgQ09ORklHX1NZU1Y2OF9QQVJUSVRJT04gaXMgbm90IHNldAogIyBDT05GSUdfTkxTIGlzIG5vdCBzZXQKICMgQ09ORklHX0RMTSBpcyBub3Qgc2V0Ci0jIENPTkZJR19VQ0NfU0xPVyBpcyBub3Qgc2V0CiAKICMKICMgTGlicmFyeSByb3V0aW5lcwpAQCAtNzU5LDcgKzc4Nyw2IEBACiBDT05GSUdfSEFTX0lPTUVNPXkKIENPTkZJR19IQVNfSU9QT1JUPXkKIENPTkZJR19IQVNfRE1BPXkKLSMgQ09ORklHX0lOU1RSVU1FTlRBVElPTiBpcyBub3Qgc2V0CiAKICMKICMgS2VybmVsIGhhY2tpbmcKQEAgLTc3OCw2ICs4MDUsNyBAQAogIyBDT05GSUdfU0NIRURTVEFUUyBpcyBub3Qgc2V0CiAjIENPTkZJR19USU1FUl9TVEFUUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TTFVCX0RFQlVHX09OIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NMVUJfU1RBVFMgaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfUlRfTVVURVhFUyBpcyBub3Qgc2V0CiAjIENPTkZJR19SVF9NVVRFWF9URVNURVIgaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfU1BJTkxPQ0sgaXMgbm90IHNldApAQCAtNzkwLDggKzgxOCw4IEBACiAjIENPTkZJR19ERUJVR19WTSBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19MSVNUIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NHIGlzIG5vdCBzZXQKLUNPTkZJR19GT1JDRURfSU5MSU5JTkc9eQogIyBDT05GSUdfQk9PVF9QUklOVEtfREVMQVkgaXMgbm90IHNldAorIyBDT05GSUdfQkFDS1RSQUNFX1NFTEZfVEVTVCBpcyBub3Qgc2V0CiAjIENPTkZJR19GQVVMVF9JTkpFQ1RJT04gaXMgbm90IHNldAogIyBDT05GSUdfU0FNUExFUyBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19TVEFDS09WRVJGTE9XIGlzIG5vdCBzZXQKQEAgLTgwOCw2ICs4MzYsNTAgQEAKICMgQ09ORklHX0tFWVMgaXMgbm90IHNldAogIyBDT05GSUdfU0VDVVJJVFkgaXMgbm90IHNldAogIyBDT05GSUdfU0VDVVJJVFlfRklMRV9DQVBBQklMSVRJRVMgaXMgbm90IHNldAotIyBDT05GSUdfQ1JZUFRPIGlzIG5vdCBzZXQKK0NPTkZJR19DUllQVE89eQorIyBDT05GSUdfQ1JZUFRPX1NFUUlWIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19NQU5BR0VSIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19ITUFDIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19YQ0JDIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19OVUxMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19NRDQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX01ENSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0hBMSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0hBMjU2IGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19TSEE1MTIgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1dQNTEyIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19UR1IxOTIgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0dGMTI4TVVMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19FQ0IgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NCQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fUENCQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fTFJXIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19YVFMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NUUiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fR0NNIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DQ00gaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NSWVBURCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fREVTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19GQ1JZUFQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0JMT1dGSVNIIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19UV09GSVNIIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19TRVJQRU5UIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19BRVMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NBU1Q1IGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DQVNUNiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fVEVBIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19BUkM0IGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19LSEFaQUQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0FOVUJJUyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0VFRCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0FMU0EyMCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fREVGTEFURSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fTUlDSEFFTF9NSUMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NSQzMyQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ0FNRUxMSUEgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0FVVEhFTkMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0xaTyBpcyBub3Qgc2V0CitDT05GSUdfQ1JZUFRPX0hXPXkKKyMgQ09ORklHX0NSWVBUT19ERVZfSElGTl83OTVYIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19DTE9DSyBpcyBub3Qgc2V0CiBDT05GSUdfUFBDX0xJQl9SSEVBUD15CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM4NTY4bWRzX2RlZmNvbmZpZyBiL2FyY2gvcG93ZXJwYy9jb25maWdzL21wYzg1NjhtZHNfZGVmY29uZmlnCmluZGV4IGY1MWI1OGEuLjJiODY2YjMgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jb25maWdzL21wYzg1NjhtZHNfZGVmY29uZmlnCisrKyBiL2FyY2gvcG93ZXJwYy9jb25maWdzL21wYzg1NjhtZHNfZGVmY29uZmlnCkBAIC0xLDcgKzEsNyBAQAogIwogIyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBtYWtlIGNvbmZpZzogZG9uJ3QgZWRpdAotIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjI0LXJjNAotIyBUaHUgRGVjICA2IDE2OjQ4OjUwIDIwMDcKKyMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4yNS1yYzcKKyMgTW9uIE1hciAzMSAxMTozNzowNSAyMDA4CiAjCiAjIENPTkZJR19QUEM2NCBpcyBub3Qgc2V0CiAKQEAgLTE0LDEwICsxNCwxMCBAQAogIyBDT05GSUdfNDB4IGlzIG5vdCBzZXQKICMgQ09ORklHXzQ0eCBpcyBub3Qgc2V0CiAjIENPTkZJR19FMjAwIGlzIG5vdCBzZXQKLUNPTkZJR184NXh4PXkKIENPTkZJR19FNTAwPXkKIENPTkZJR19CT09LRT15CiBDT05GSUdfRlNMX0JPT0tFPXkKK0NPTkZJR19GU0xfRU1CX1BFUkZNT049eQogIyBDT05GSUdfUEhZU182NEJJVCBpcyBub3Qgc2V0CiBDT05GSUdfU1BFPXkKICMgQ09ORklHX1BQQ19NTV9TTElDRVMgaXMgbm90IHNldApAQCAtMzAsNiArMzAsNyBAQAogQ09ORklHX0dFTkVSSUNfVElNRV9WU1lTQ0FMTD15CiBDT05GSUdfR0VORVJJQ19DTE9DS0VWRU5UUz15CiBDT05GSUdfR0VORVJJQ19IQVJESVJRUz15CisjIENPTkZJR19IQVZFX1NFVFVQX1BFUl9DUFVfQVJFQSBpcyBub3Qgc2V0CiBDT05GSUdfSVJRX1BFUl9DUFU9eQogQ09ORklHX1JXU0VNX1hDSEdBRERfQUxHT1JJVEhNPXkKIENPTkZJR19BUkNIX0hBU19JTE9HMl9VMzI9eQpAQCAtNjcsMTUgKzY4LDE5IEBACiAjIENPTkZJR19QT1NJWF9NUVVFVUUgaXMgbm90IHNldAogIyBDT05GSUdfQlNEX1BST0NFU1NfQUNDVCBpcyBub3Qgc2V0CiAjIENPTkZJR19UQVNLU1RBVFMgaXMgbm90IHNldAotIyBDT05GSUdfVVNFUl9OUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19QSURfTlMgaXMgbm90IHNldAogIyBDT05GSUdfQVVESVQgaXMgbm90IHNldAogIyBDT05GSUdfSUtDT05GSUcgaXMgbm90IHNldAogQ09ORklHX0xPR19CVUZfU0hJRlQ9MTQKICMgQ09ORklHX0NHUk9VUFMgaXMgbm90IHNldAorQ09ORklHX0dST1VQX1NDSEVEPXkKICMgQ09ORklHX0ZBSVJfR1JPVVBfU0NIRUQgaXMgbm90IHNldAorIyBDT05GSUdfUlRfR1JPVVBfU0NIRUQgaXMgbm90IHNldAorQ09ORklHX1VTRVJfU0NIRUQ9eQorIyBDT05GSUdfQ0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKIENPTkZJR19TWVNGU19ERVBSRUNBVEVEPXkKK0NPTkZJR19TWVNGU19ERVBSRUNBVEVEX1YyPXkKICMgQ09ORklHX1JFTEFZIGlzIG5vdCBzZXQKKyMgQ09ORklHX05BTUVTUEFDRVMgaXMgbm90IHNldAogQ09ORklHX0JMS19ERVZfSU5JVFJEPXkKIENPTkZJR19JTklUUkFNRlNfU09VUkNFPSIiCiAjIENPTkZJR19DQ19PUFRJTUlaRV9GT1JfU0laRSBpcyBub3Qgc2V0CkBAIC04NywxMSArOTIsMTMgQEAKIENPTkZJR19QUklOVEs9eQogQ09ORklHX0JVRz15CiBDT05GSUdfRUxGX0NPUkU9eQorQ09ORklHX0NPTVBBVF9CUks9eQogQ09ORklHX0JBU0VfRlVMTD15CiBDT05GSUdfRlVURVg9eQogQ09ORklHX0FOT05fSU5PREVTPXkKICMgQ09ORklHX0VQT0xMIGlzIG5vdCBzZXQKIENPTkZJR19TSUdOQUxGRD15CitDT05GSUdfVElNRVJGRD15CiBDT05GSUdfRVZFTlRGRD15CiBDT05GSUdfU0hNRU09eQogQ09ORklHX1ZNX0VWRU5UX0NPVU5URVJTPXkKQEAgLTk5LDYgKzEwNiwxMyBAQAogIyBDT05GSUdfU0xBQiBpcyBub3Qgc2V0CiBDT05GSUdfU0xVQj15CiAjIENPTkZJR19TTE9CIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BST0ZJTElORyBpcyBub3Qgc2V0CisjIENPTkZJR19NQVJLRVJTIGlzIG5vdCBzZXQKK0NPTkZJR19IQVZFX09QUk9GSUxFPXkKK0NPTkZJR19IQVZFX0tQUk9CRVM9eQorQ09ORklHX0hBVkVfS1JFVFBST0JFUz15CitDT05GSUdfUFJPQ19QQUdFX01PTklUT1I9eQorQ09ORklHX1NMQUJJTkZPPXkKIENPTkZJR19SVF9NVVRFWEVTPXkKICMgQ09ORklHX1RJTllfU0hNRU0gaXMgbm90IHNldAogQ09ORklHX0JBU0VfU01BTEw9MApAQCAtMTI2LDIxICsxNDAsMzAgQEAKICMgQ09ORklHX0RFRkFVTFRfQ0ZRIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFRkFVTFRfTk9PUCBpcyBub3Qgc2V0CiBDT05GSUdfREVGQVVMVF9JT1NDSEVEPSJhbnRpY2lwYXRvcnkiCitDT05GSUdfQ0xBU1NJQ19SQ1U9eQogCiAjCiAjIFBsYXRmb3JtIHN1cHBvcnQKICMKLSMgQ09ORklHX1BQQ19NUEM1Mnh4IGlzIG5vdCBzZXQKLSMgQ09ORklHX1BQQ19NUEM1MjAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ19NUEM1MTJ4IGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ19NUEM1MTIxIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19DRUxMIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19DRUxMX05BVElWRSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUTJBRFMgaXMgbm90IHNldAorQ09ORklHX01QQzg1eHg9eQogIyBDT05GSUdfTVBDODU0MF9BRFMgaXMgbm90IHNldAogIyBDT05GSUdfTVBDODU2MF9BRFMgaXMgbm90IHNldAogIyBDT05GSUdfTVBDODV4eF9DRFMgaXMgbm90IHNldAogQ09ORklHX01QQzg1eHhfTURTPXkKICMgQ09ORklHX01QQzg1eHhfRFMgaXMgbm90IHNldAotQ09ORklHX01QQzg1eHg9eQorIyBDT05GSUdfU1RYX0dQMyBpcyBub3Qgc2V0CisjIENPTkZJR19UUU04NTQwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RRTTg1NDEgaXMgbm90IHNldAorIyBDT05GSUdfVFFNODU1NSBpcyBub3Qgc2V0CisjIENPTkZJR19UUU04NTYwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NCQzg1NDggaXMgbm90IHNldAorIyBDT05GSUdfU0JDODU2MCBpcyBub3Qgc2V0CisjIENPTkZJR19JUElDIGlzIG5vdCBzZXQKIENPTkZJR19NUElDPXkKICMgQ09ORklHX01QSUNfV0VJUkQgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0k4MjU5IGlzIG5vdCBzZXQKQEAgLTE2OCwxMyArMTkxLDE3IEBACiAjIENPTkZJR19IWl8zMDAgaXMgbm90IHNldAogIyBDT05GSUdfSFpfMTAwMCBpcyBub3Qgc2V0CiBDT05GSUdfSFo9MjUwCisjIENPTkZJR19TQ0hFRF9IUlRJQ0sgaXMgbm90IHNldAogQ09ORklHX1BSRUVNUFRfTk9ORT15CiAjIENPTkZJR19QUkVFTVBUX1ZPTFVOVEFSWSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUkVFTVBUIGlzIG5vdCBzZXQKIENPTkZJR19CSU5GTVRfRUxGPXkKICMgQ09ORklHX0JJTkZNVF9NSVNDIGlzIG5vdCBzZXQKIENPTkZJR19NQVRIX0VNVUxBVElPTj15CisjIENPTkZJR19JT01NVV9IRUxQRVIgaXMgbm90IHNldAogQ09ORklHX0FSQ0hfRU5BQkxFX01FTU9SWV9IT1RQTFVHPXkKK0NPTkZJR19BUkNIX0hBU19XQUxLX01FTU9SWT15CitDT05GSUdfQVJDSF9FTkFCTEVfTUVNT1JZX0hPVFJFTU9WRT15CiBDT05GSUdfQVJDSF9GTEFUTUVNX0VOQUJMRT15CiBDT05GSUdfQVJDSF9QT1BVTEFURVNfTk9ERV9NQVA9eQogQ09ORklHX1NFTEVDVF9NRU1PUllfTU9ERUw9eQpAQCAtMTkzLDExICsyMjAsNyBAQAogQ09ORklHX1BST0NfREVWSUNFVFJFRT15CiAjIENPTkZJR19DTURMSU5FX0JPT0wgaXMgbm90IHNldAogIyBDT05GSUdfUE0gaXMgbm90IHNldAotQ09ORklHX1NVU1BFTkRfVVBfUE9TU0lCTEU9eQotQ09ORklHX0hJQkVSTkFUSU9OX1VQX1BPU1NJQkxFPXkKIENPTkZJR19TRUNDT01QPXkKLUNPTkZJR19XQU5UX0RFVklDRV9UUkVFPXkKLUNPTkZJR19ERVZJQ0VfVFJFRT0iIgogQ09ORklHX0lTQV9ETUFfQVBJPXkKIAogIwpAQCAtMjQ3LDYgKzI3MCw3IEBACiAjIENPTkZJR19YRlJNX1VTRVIgaXMgbm90IHNldAogIyBDT05GSUdfWEZSTV9TVUJfUE9MSUNZIGlzIG5vdCBzZXQKICMgQ09ORklHX1hGUk1fTUlHUkFURSBpcyBub3Qgc2V0CisjIENPTkZJR19YRlJNX1NUQVRJU1RJQ1MgaXMgbm90IHNldAogIyBDT05GSUdfTkVUX0tFWSBpcyBub3Qgc2V0CiBDT05GSUdfSU5FVD15CiBDT05GSUdfSVBfTVVMVElDQVNUPXkKQEAgLTMwMiw2ICszMjYsNyBAQAogIwogIyBDT05GSUdfTkVUX1BLVEdFTiBpcyBub3Qgc2V0CiAjIENPTkZJR19IQU1SQURJTyBpcyBub3Qgc2V0CisjIENPTkZJR19DQU4gaXMgbm90IHNldAogIyBDT05GSUdfSVJEQSBpcyBub3Qgc2V0CiAjIENPTkZJR19CVCBpcyBub3Qgc2V0CiAjIENPTkZJR19BRl9SWFJQQyBpcyBub3Qgc2V0CkBAIC0zNDgsNyArMzczLDcgQEAKIENPTkZJR19CTEtfREVWX1JBTT15CiBDT05GSUdfQkxLX0RFVl9SQU1fQ09VTlQ9MTYKIENPTkZJR19CTEtfREVWX1JBTV9TSVpFPTMyNzY4Ci1DT05GSUdfQkxLX0RFVl9SQU1fQkxPQ0tTSVpFPTEwMjQKKyMgQ09ORklHX0JMS19ERVZfWElQIGlzIG5vdCBzZXQKICMgQ09ORklHX0NEUk9NX1BLVENEVkQgaXMgbm90IHNldAogIyBDT05GSUdfQVRBX09WRVJfRVRIIGlzIG5vdCBzZXQKIENPTkZJR19NSVNDX0RFVklDRVM9eQpAQCAtMzU2LDYgKzM4MSw4IEBACiAjIENPTkZJR19FRVBST01fOTNDWDYgaXMgbm90IHNldAogIyBDT05GSUdfU0dJX0lPQzQgaXMgbm90IHNldAogIyBDT05GSUdfVElGTV9DT1JFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VOQ0xPU1VSRV9TRVJWSUNFUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9JREU9eQogIyBDT05GSUdfSURFIGlzIG5vdCBzZXQKIAogIwpAQCAtNDIwLDYgKzQ0Nyw3IEBACiAjIENPTkZJR19TQ1NJX0lQUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX0lOSVRJTyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX0lOSUExMDAgaXMgbm90IHNldAorIyBDT05GSUdfU0NTSV9NVlNBUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX1NURVggaXMgbm90IHNldAogIyBDT05GSUdfU0NTSV9TWU01M0M4WFhfMiBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX1FMT0dJQ18xMjgwIGlzIG5vdCBzZXQKQEAgLTQ1MCw3ICs0NzgsNiBAQAogIyBDT05GSUdfRVFVQUxJWkVSIGlzIG5vdCBzZXQKICMgQ09ORklHX1RVTiBpcyBub3Qgc2V0CiAjIENPTkZJR19WRVRIIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lQMTAwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19BUkNORVQgaXMgbm90IHNldAogQ09ORklHX1BIWUxJQj15CiAKQEAgLTQ2Niw2ICs0OTMsNyBAQAogIyBDT05GSUdfU01TQ19QSFkgaXMgbm90IHNldAogIyBDT05GSUdfQlJPQURDT01fUEhZIGlzIG5vdCBzZXQKICMgQ09ORklHX0lDUExVU19QSFkgaXMgbm90IHNldAorIyBDT05GSUdfUkVBTFRFS19QSFkgaXMgbm90IHNldAogIyBDT05GSUdfRklYRURfUEhZIGlzIG5vdCBzZXQKICMgQ09ORklHX01ESU9fQklUQkFORyBpcyBub3Qgc2V0CiBDT05GSUdfTkVUX0VUSEVSTkVUPXkKQEAgLTQ4Nyw2ICs1MTUsOSBAQAogIyBDT05GSUdfREwySyBpcyBub3Qgc2V0CiAjIENPTkZJR19FMTAwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19FMTAwMEUgaXMgbm90IHNldAorIyBDT05GSUdfRTEwMDBFX0VOQUJMRUQgaXMgbm90IHNldAorIyBDT05GSUdfSVAxMDAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lHQiBpcyBub3Qgc2V0CiAjIENPTkZJR19OUzgzODIwIGlzIG5vdCBzZXQKICMgQ09ORklHX0hBTUFDSEkgaXMgbm90IHNldAogIyBDT05GSUdfWUVMTE9XRklOIGlzIG5vdCBzZXQKQEAgLTUxNCw2ICs1NDUsNyBAQAogIyBDT05GSUdfTklVIGlzIG5vdCBzZXQKICMgQ09ORklHX01MWDRfQ09SRSBpcyBub3Qgc2V0CiAjIENPTkZJR19URUhVVEkgaXMgbm90IHNldAorIyBDT05GSUdfQk5YMlggaXMgbm90IHNldAogIyBDT05GSUdfVFIgaXMgbm90IHNldAogCiAjCkBAIC01MjcsNyArNTU5LDYgQEAKICMgQ09ORklHX1BQUCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTElQIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9GQyBpcyBub3Qgc2V0Ci0jIENPTkZJR19TSEFQRVIgaXMgbm90IHNldAogIyBDT05GSUdfTkVUQ09OU09MRSBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRQT0xMIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9QT0xMX0NPTlRST0xMRVIgaXMgbm90IHNldApAQCAtNTcwLDYgKzYwMSw3IEBACiAjCiAjIENPTkZJR19WVCBpcyBub3Qgc2V0CiAjIENPTkZJR19TRVJJQUxfTk9OU1RBTkRBUkQgaXMgbm90IHNldAorIyBDT05GSUdfTk9aT01JIGlzIG5vdCBzZXQKIAogIwogIyBTZXJpYWwgZHJpdmVycwpAQCAtNTkwLDE0ICs2MjIsMTQgQEAKIENPTkZJR19TRVJJQUxfQ09SRV9DT05TT0xFPXkKICMgQ09ORklHX1NFUklBTF9KU00gaXMgbm90IHNldAogIyBDT05GSUdfU0VSSUFMX09GX1BMQVRGT1JNIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFUklBTF9RRSBpcyBub3Qgc2V0CiBDT05GSUdfVU5JWDk4X1BUWVM9eQogQ09ORklHX0xFR0FDWV9QVFlTPXkKIENPTkZJR19MRUdBQ1lfUFRZX0NPVU5UPTI1NgogIyBDT05GSUdfSVBNSV9IQU5ETEVSIGlzIG5vdCBzZXQKIENPTkZJR19IV19SQU5ET009eQogIyBDT05GSUdfTlZSQU0gaXMgbm90IHNldAotQ09ORklHX0dFTl9SVEM9eQotIyBDT05GSUdfR0VOX1JUQ19YIGlzIG5vdCBzZXQKKyMgQ09ORklHX0dFTl9SVEMgaXMgbm90IHNldAogIyBDT05GSUdfUjM5NjQgaXMgbm90IHNldAogIyBDT05GSUdfQVBQTElDT00gaXMgbm90IHNldAogIyBDT05GSUdfUkFXX0RSSVZFUiBpcyBub3Qgc2V0CkBAIC02NDQsMTQgKzY3NiwxMiBAQAogIwogIyBNaXNjZWxsYW5lb3VzIEkyQyBDaGlwIHN1cHBvcnQKICMKLSMgQ09ORklHX1NFTlNPUlNfRFMxMzM3IGlzIG5vdCBzZXQKLSMgQ09ORklHX1NFTlNPUlNfRFMxMzc0IGlzIG5vdCBzZXQKICMgQ09ORklHX0RTMTY4MiBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0VFUFJPTSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1BDRjg1NzQgaXMgbm90IHNldAotIyBDT05GSUdfU0VOU09SU19QQ0E5NTM5IGlzIG5vdCBzZXQKKyMgQ09ORklHX1BDRjg1NzUgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19QQ0Y4NTkxIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NFTlNPUlNfTTQxVDAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RQUzY1MDEwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfTUFYNjg3NSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1RTTDI1NTAgaXMgbm90IHNldAogIyBDT05GSUdfSTJDX0RFQlVHX0NPUkUgaXMgbm90IHNldApAQCAtNjc2LDYgKzcwNiw3IEBACiAjIENPTkZJR19TRU5TT1JTX0FETTEwMzEgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19BRE05MjQwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfQURUNzQ3MCBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX0FEVDc0NzMgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19BVFhQMSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0RTMTYyMSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0k1S19BTUIgaXMgbm90IHNldApAQCAtNzA1LDYgKzczNiw3IEBACiAjIENPTkZJR19TRU5TT1JTX1NNU0M0N00xIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfU01TQzQ3TTE5MiBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1NNU0M0N0IzOTcgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19BRFM3ODI4IGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVEhNQzUwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVklBNjg2QSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1ZUMTIxMSBpcyBub3Qgc2V0CkBAIC03MTQsOSArNzQ2LDExIEBACiAjIENPTkZJR19TRU5TT1JTX1c4Mzc5MkQgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19XODM3OTMgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19XODNMNzg1VFMgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19XODNMNzg2TkcgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19XODM2MjdIRiBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1c4MzYyN0VIRiBpcyBub3Qgc2V0CiAjIENPTkZJR19IV01PTl9ERUJVR19DSElQIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RIRVJNQUwgaXMgbm90IHNldAogQ09ORklHX1dBVENIRE9HPXkKICMgQ09ORklHX1dBVENIRE9HX05PV0FZT1VUIGlzIG5vdCBzZXQKIApAQCAtNzgyLDEyICs4MTYsOSBAQAogIwogIyBOT1RFOiBVU0JfU1RPUkFHRSBlbmFibGVzIFNDU0ksIGFuZCAnU0NTSSBkaXNrIHN1cHBvcnQnCiAjCi0KLSMKLSMgVVNCIEdhZGdldCBTdXBwb3J0Ci0jCiAjIENPTkZJR19VU0JfR0FER0VUIGlzIG5vdCBzZXQKICMgQ09ORklHX01NQyBpcyBub3Qgc2V0CisjIENPTkZJR19NRU1TVElDSyBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVdfTEVEUyBpcyBub3Qgc2V0CiAjIENPTkZJR19JTkZJTklCQU5EIGlzIG5vdCBzZXQKICMgQ09ORklHX0VEQUMgaXMgbm90IHNldApAQCAtODE5LDYgKzg1MCw3IEBACiAjIENPTkZJR19SVENfRFJWX1BDRjg1NjMgaXMgbm90IHNldAogIyBDT05GSUdfUlRDX0RSVl9QQ0Y4NTgzIGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfTTQxVDgwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JUQ19EUlZfUzM1MzkwQSBpcyBub3Qgc2V0CiAKICMKICMgU1BJIFJUQyBkcml2ZXJzCkBAIC04MjgsOSArODYwLDEwIEBACiAjIFBsYXRmb3JtIFJUQyBkcml2ZXJzCiAjCiAjIENPTkZJR19SVENfRFJWX0NNT1MgaXMgbm90IHNldAorIyBDT05GSUdfUlRDX0RSVl9EUzE1MTEgaXMgbm90IHNldAogIyBDT05GSUdfUlRDX0RSVl9EUzE1NTMgaXMgbm90IHNldAotIyBDT05GSUdfUlRDX0RSVl9TVEsxN1RBOCBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfRFJWX0RTMTc0MiBpcyBub3Qgc2V0CisjIENPTkZJR19SVENfRFJWX1NUSzE3VEE4IGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfTTQ4VDg2IGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfTTQ4VDU5IGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfVjMwMjAgaXMgbm90IHNldApAQCAtODM4LDYgKzg3MSw3IEBACiAjCiAjIG9uLUNQVSBSVEMgZHJpdmVycwogIworIyBDT05GSUdfRE1BREVWSUNFUyBpcyBub3Qgc2V0CiAKICMKICMgVXNlcnNwYWNlIEkvTwpAQCAtODYzLDEyICs4OTcsMTAgQEAKICMgQ09ORklHX1hGU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19HRlMyX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX09DRlMyX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX01JTklYX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1JPTUZTX0ZTIGlzIG5vdCBzZXQKK0NPTkZJR19ETk9USUZZPXkKIENPTkZJR19JTk9USUZZPXkKIENPTkZJR19JTk9USUZZX1VTRVI9eQogIyBDT05GSUdfUVVPVEEgaXMgbm90IHNldAotQ09ORklHX0ROT1RJRlk9eQogIyBDT05GSUdfQVVUT0ZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0FVVE9GUzRfRlMgaXMgbm90IHNldAogIyBDT05GSUdfRlVTRV9GUyBpcyBub3Qgc2V0CkBAIC05MTAsOCArOTQyLDEwIEBACiAjIENPTkZJR19FRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfQ1JBTUZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1ZYRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfTUlOSVhfRlMgaXMgbm90IHNldAogIyBDT05GSUdfSFBGU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19RTlg0RlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfU1lTVl9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19VRlNfRlMgaXMgbm90IHNldAogQ09ORklHX05FVFdPUktfRklMRVNZU1RFTVM9eQpAQCAtOTU1LDcgKzk4OSw2IEBACiAjIENPTkZJR19TWVNWNjhfUEFSVElUSU9OIGlzIG5vdCBzZXQKICMgQ09ORklHX05MUyBpcyBub3Qgc2V0CiAjIENPTkZJR19ETE0gaXMgbm90IHNldAotIyBDT05GSUdfVUNDX1NMT1cgaXMgbm90IHNldAogCiAjCiAjIExpYnJhcnkgcm91dGluZXMKQEAgLTk3MSw3ICsxMDA0LDYgQEAKIENPTkZJR19IQVNfSU9NRU09eQogQ09ORklHX0hBU19JT1BPUlQ9eQogQ09ORklHX0hBU19ETUE9eQotIyBDT05GSUdfSU5TVFJVTUVOVEFUSU9OIGlzIG5vdCBzZXQKIAogIwogIyBLZXJuZWwgaGFja2luZwpAQCAtOTkwLDYgKzEwMjIsNyBAQAogIyBDT05GSUdfU0NIRURTVEFUUyBpcyBub3Qgc2V0CiAjIENPTkZJR19USU1FUl9TVEFUUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TTFVCX0RFQlVHX09OIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NMVUJfU1RBVFMgaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfUlRfTVVURVhFUyBpcyBub3Qgc2V0CiAjIENPTkZJR19SVF9NVVRFWF9URVNURVIgaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfU1BJTkxPQ0sgaXMgbm90IHNldApAQCAtMTAwMiw5ICsxMDM1LDkgQEAKICMgQ09ORklHX0RFQlVHX1ZNIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX0xJU1QgaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfU0cgaXMgbm90IHNldAotQ09ORklHX0ZPUkNFRF9JTkxJTklORz15CiAjIENPTkZJR19CT09UX1BSSU5US19ERUxBWSBpcyBub3Qgc2V0CiAjIENPTkZJR19SQ1VfVE9SVFVSRV9URVNUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JBQ0tUUkFDRV9TRUxGX1RFU1QgaXMgbm90IHNldAogIyBDT05GSUdfRkFVTFRfSU5KRUNUSU9OIGlzIG5vdCBzZXQKICMgQ09ORklHX1NBTVBMRVMgaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfU1RBQ0tPVkVSRkxPVyBpcyBub3Qgc2V0CkBAIC0xMDIzLDYgKzEwNTYsNyBAQAogIyBDT05GSUdfUFBDX0VBUkxZX0RFQlVHX1BBU19SRUFMTU9ERSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfRUFSTFlfREVCVUdfQkVBVCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfRUFSTFlfREVCVUdfNDR4IGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ19FQVJMWV9ERUJVR180MHggaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0VBUkxZX0RFQlVHX0NQTSBpcyBub3Qgc2V0CiAKICMKQEAgLTEwMzQsNiArMTA2OCw3IEBACiBDT05GSUdfQ1JZUFRPPXkKIENPTkZJR19DUllQVE9fQUxHQVBJPXkKIENPTkZJR19DUllQVE9fQkxLQ0lQSEVSPXkKKyMgQ09ORklHX0NSWVBUT19TRVFJViBpcyBub3Qgc2V0CiBDT05GSUdfQ1JZUFRPX01BTkFHRVI9eQogIyBDT05GSUdfQ1JZUFRPX0hNQUMgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX1hDQkMgaXMgbm90IHNldApAQCAtMTA1MSw2ICsxMDg2LDkgQEAKIENPTkZJR19DUllQVE9fUENCQz1tCiAjIENPTkZJR19DUllQVE9fTFJXIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19YVFMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NUUiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fR0NNIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DQ00gaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0NSWVBURCBpcyBub3Qgc2V0CiBDT05GSUdfQ1JZUFRPX0RFUz15CiAjIENPTkZJR19DUllQVE9fRkNSWVBUIGlzIG5vdCBzZXQKQEAgLTEwNjUsMTIgKzExMDMsMTUgQEAKICMgQ09ORklHX0NSWVBUT19LSEFaQUQgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0FOVUJJUyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fU0VFRCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0FMU0EyMCBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fREVGTEFURSBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fTUlDSEFFTF9NSUMgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0NSQzMyQyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fQ0FNRUxMSUEgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX1RFU1QgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0FVVEhFTkMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0xaTyBpcyBub3Qgc2V0CiBDT05GSUdfQ1JZUFRPX0hXPXkKKyMgQ09ORklHX0NSWVBUT19ERVZfSElGTl83OTVYIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19DTE9DSyBpcyBub3Qgc2V0CiBDT05GSUdfUFBDX0xJQl9SSEVBUD15CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM4NTcyX2RzX2RlZmNvbmZpZyBiL2FyY2gvcG93ZXJwYy9jb25maWdzL21wYzg1NzJfZHNfZGVmY29uZmlnCmluZGV4IGI0MDgwMmQuLjUzYWE2ZjMgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jb25maWdzL21wYzg1NzJfZHNfZGVmY29uZmlnCisrKyBiL2FyY2gvcG93ZXJwYy9jb25maWdzL21wYzg1NzJfZHNfZGVmY29uZmlnCkBAIC0xLDcgKzEsNyBAQAogIwogIyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBtYWtlIGNvbmZpZzogZG9uJ3QgZWRpdAotIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjI0LXJjNAotIyBUaHUgRGVjICA2IDE2OjQ4OjUyIDIwMDcKKyMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4yNS1yYzcKKyMgTW9uIE1hciAzMSAxMTozNzowNiAyMDA4CiAjCiAjIENPTkZJR19QUEM2NCBpcyBub3Qgc2V0CiAKQEAgLTE0LDEwICsxNCwxMCBAQAogIyBDT05GSUdfNDB4IGlzIG5vdCBzZXQKICMgQ09ORklHXzQ0eCBpcyBub3Qgc2V0CiAjIENPTkZJR19FMjAwIGlzIG5vdCBzZXQKLUNPTkZJR184NXh4PXkKIENPTkZJR19FNTAwPXkKIENPTkZJR19CT09LRT15CiBDT05GSUdfRlNMX0JPT0tFPXkKK0NPTkZJR19GU0xfRU1CX1BFUkZNT049eQogIyBDT05GSUdfUEhZU182NEJJVCBpcyBub3Qgc2V0CiBDT05GSUdfU1BFPXkKICMgQ09ORklHX1BQQ19NTV9TTElDRVMgaXMgbm90IHNldApAQCAtMzAsNiArMzAsNyBAQAogQ09ORklHX0dFTkVSSUNfVElNRV9WU1lTQ0FMTD15CiBDT05GSUdfR0VORVJJQ19DTE9DS0VWRU5UUz15CiBDT05GSUdfR0VORVJJQ19IQVJESVJRUz15CisjIENPTkZJR19IQVZFX1NFVFVQX1BFUl9DUFVfQVJFQSBpcyBub3Qgc2V0CiBDT05GSUdfSVJRX1BFUl9DUFU9eQogQ09ORklHX1JXU0VNX1hDSEdBRERfQUxHT1JJVEhNPXkKIENPTkZJR19BUkNIX0hBU19JTE9HMl9VMzI9eQpAQCAtNjgsMTcgKzY5LDIxIEBACiBDT05GSUdfQlNEX1BST0NFU1NfQUNDVD15CiAjIENPTkZJR19CU0RfUFJPQ0VTU19BQ0NUX1YzIGlzIG5vdCBzZXQKICMgQ09ORklHX1RBU0tTVEFUUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19VU0VSX05TIGlzIG5vdCBzZXQKLSMgQ09ORklHX1BJRF9OUyBpcyBub3Qgc2V0CiBDT05GSUdfQVVESVQ9eQogIyBDT05GSUdfQVVESVRTWVNDQUxMIGlzIG5vdCBzZXQKIENPTkZJR19JS0NPTkZJRz15CiBDT05GSUdfSUtDT05GSUdfUFJPQz15CiBDT05GSUdfTE9HX0JVRl9TSElGVD0xNAogIyBDT05GSUdfQ0dST1VQUyBpcyBub3Qgc2V0CitDT05GSUdfR1JPVVBfU0NIRUQ9eQogIyBDT05GSUdfRkFJUl9HUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CisjIENPTkZJR19SVF9HUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CitDT05GSUdfVVNFUl9TQ0hFRD15CisjIENPTkZJR19DR1JPVVBfU0NIRUQgaXMgbm90IHNldAogQ09ORklHX1NZU0ZTX0RFUFJFQ0FURUQ9eQorQ09ORklHX1NZU0ZTX0RFUFJFQ0FURURfVjI9eQogIyBDT05GSUdfUkVMQVkgaXMgbm90IHNldAorIyBDT05GSUdfTkFNRVNQQUNFUyBpcyBub3Qgc2V0CiBDT05GSUdfQkxLX0RFVl9JTklUUkQ9eQogQ09ORklHX0lOSVRSQU1GU19TT1VSQ0U9IiIKICMgQ09ORklHX0NDX09QVElNSVpFX0ZPUl9TSVpFIGlzIG5vdCBzZXQKQEAgLTkyLDExICs5NywxMyBAQAogQ09ORklHX1BSSU5USz15CiBDT05GSUdfQlVHPXkKIENPTkZJR19FTEZfQ09SRT15CitDT05GSUdfQ09NUEFUX0JSSz15CiBDT05GSUdfQkFTRV9GVUxMPXkKIENPTkZJR19GVVRFWD15CiBDT05GSUdfQU5PTl9JTk9ERVM9eQogQ09ORklHX0VQT0xMPXkKIENPTkZJR19TSUdOQUxGRD15CitDT05GSUdfVElNRVJGRD15CiBDT05GSUdfRVZFTlRGRD15CiBDT05GSUdfU0hNRU09eQogQ09ORklHX1ZNX0VWRU5UX0NPVU5URVJTPXkKQEAgLTEwNCw2ICsxMTEsMTQgQEAKICMgQ09ORklHX1NMQUIgaXMgbm90IHNldAogQ09ORklHX1NMVUI9eQogIyBDT05GSUdfU0xPQiBpcyBub3Qgc2V0CisjIENPTkZJR19QUk9GSUxJTkcgaXMgbm90IHNldAorIyBDT05GSUdfTUFSS0VSUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9PUFJPRklMRT15CisjIENPTkZJR19LUFJPQkVTIGlzIG5vdCBzZXQKK0NPTkZJR19IQVZFX0tQUk9CRVM9eQorQ09ORklHX0hBVkVfS1JFVFBST0JFUz15CitDT05GSUdfUFJPQ19QQUdFX01PTklUT1I9eQorQ09ORklHX1NMQUJJTkZPPXkKIENPTkZJR19SVF9NVVRFWEVTPXkKICMgQ09ORklHX1RJTllfU0hNRU0gaXMgbm90IHNldAogQ09ORklHX0JBU0VfU01BTEw9MApAQCAtMTMxLDIxICsxNDYsMzAgQEAKIENPTkZJR19ERUZBVUxUX0NGUT15CiAjIENPTkZJR19ERUZBVUxUX05PT1AgaXMgbm90IHNldAogQ09ORklHX0RFRkFVTFRfSU9TQ0hFRD0iY2ZxIgorQ09ORklHX0NMQVNTSUNfUkNVPXkKIAogIwogIyBQbGF0Zm9ybSBzdXBwb3J0CiAjCi0jIENPTkZJR19QUENfTVBDNTJ4eCBpcyBub3Qgc2V0Ci0jIENPTkZJR19QUENfTVBDNTIwMCBpcyBub3Qgc2V0CisjIENPTkZJR19QUENfTVBDNTEyeCBpcyBub3Qgc2V0CisjIENPTkZJR19QUENfTVBDNTEyMSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfQ0VMTCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfQ0VMTF9OQVRJVkUgaXMgbm90IHNldAogIyBDT05GSUdfUFEyQURTIGlzIG5vdCBzZXQKK0NPTkZJR19NUEM4NXh4PXkKICMgQ09ORklHX01QQzg1NDBfQURTIGlzIG5vdCBzZXQKICMgQ09ORklHX01QQzg1NjBfQURTIGlzIG5vdCBzZXQKICMgQ09ORklHX01QQzg1eHhfQ0RTIGlzIG5vdCBzZXQKICMgQ09ORklHX01QQzg1eHhfTURTIGlzIG5vdCBzZXQKIENPTkZJR19NUEM4NXh4X0RTPXkKLUNPTkZJR19NUEM4NXh4PXkKKyMgQ09ORklHX1NUWF9HUDMgaXMgbm90IHNldAorIyBDT05GSUdfVFFNODU0MCBpcyBub3Qgc2V0CisjIENPTkZJR19UUU04NTQxIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RRTTg1NTUgaXMgbm90IHNldAorIyBDT05GSUdfVFFNODU2MCBpcyBub3Qgc2V0CisjIENPTkZJR19TQkM4NTQ4IGlzIG5vdCBzZXQKKyMgQ09ORklHX1NCQzg1NjAgaXMgbm90IHNldAorIyBDT05GSUdfSVBJQyBpcyBub3Qgc2V0CiBDT05GSUdfTVBJQz15CiAjIENPTkZJR19NUElDX1dFSVJEIGlzIG5vdCBzZXQKIENPTkZJR19QUENfSTgyNTk9eQpAQCAtMTcyLDEzICsxOTYsMTcgQEAKICMgQ09ORklHX0haXzMwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19IWl8xMDAwIGlzIG5vdCBzZXQKIENPTkZJR19IWj0yNTAKKyMgQ09ORklHX1NDSEVEX0hSVElDSyBpcyBub3Qgc2V0CiBDT05GSUdfUFJFRU1QVF9OT05FPXkKICMgQ09ORklHX1BSRUVNUFRfVk9MVU5UQVJZIGlzIG5vdCBzZXQKICMgQ09ORklHX1BSRUVNUFQgaXMgbm90IHNldAogQ09ORklHX0JJTkZNVF9FTEY9eQogQ09ORklHX0JJTkZNVF9NSVNDPW0KIENPTkZJR19NQVRIX0VNVUxBVElPTj15CisjIENPTkZJR19JT01NVV9IRUxQRVIgaXMgbm90IHNldAogQ09ORklHX0FSQ0hfRU5BQkxFX01FTU9SWV9IT1RQTFVHPXkKK0NPTkZJR19BUkNIX0hBU19XQUxLX01FTU9SWT15CitDT05GSUdfQVJDSF9FTkFCTEVfTUVNT1JZX0hPVFJFTU9WRT15CiBDT05GSUdfQVJDSF9GTEFUTUVNX0VOQUJMRT15CiBDT05GSUdfQVJDSF9QT1BVTEFURVNfTk9ERV9NQVA9eQogQ09ORklHX1NFTEVDVF9NRU1PUllfTU9ERUw9eQpAQCAtMTk3LDExICsyMjUsNyBAQAogQ09ORklHX1BST0NfREVWSUNFVFJFRT15CiAjIENPTkZJR19DTURMSU5FX0JPT0wgaXMgbm90IHNldAogIyBDT05GSUdfUE0gaXMgbm90IHNldAotQ09ORklHX1NVU1BFTkRfVVBfUE9TU0lCTEU9eQotQ09ORklHX0hJQkVSTkFUSU9OX1VQX1BPU1NJQkxFPXkKIENPTkZJR19TRUNDT01QPXkKLUNPTkZJR19XQU5UX0RFVklDRV9UUkVFPXkKLUNPTkZJR19ERVZJQ0VfVFJFRT0iIgogQ09ORklHX0lTQV9ETUFfQVBJPXkKIAogIwpAQCAtMjUyLDYgKzI3Niw3IEBACiBDT05GSUdfWEZSTV9VU0VSPXkKICMgQ09ORklHX1hGUk1fU1VCX1BPTElDWSBpcyBub3Qgc2V0CiAjIENPTkZJR19YRlJNX01JR1JBVEUgaXMgbm90IHNldAorIyBDT05GSUdfWEZSTV9TVEFUSVNUSUNTIGlzIG5vdCBzZXQKIENPTkZJR19ORVRfS0VZPW0KICMgQ09ORklHX05FVF9LRVlfTUlHUkFURSBpcyBub3Qgc2V0CiBDT05GSUdfSU5FVD15CkBAIC0zMzUsNiArMzYwLDcgQEAKICMKICMgQ09ORklHX05FVF9QS1RHRU4gaXMgbm90IHNldAogIyBDT05GSUdfSEFNUkFESU8gaXMgbm90IHNldAorIyBDT05GSUdfQ0FOIGlzIG5vdCBzZXQKICMgQ09ORklHX0lSREEgaXMgbm90IHNldAogIyBDT05GSUdfQlQgaXMgbm90IHNldAogIyBDT05GSUdfQUZfUlhSUEMgaXMgbm90IHNldApAQCAtMzgzLDcgKzQwOSw3IEBACiBDT05GSUdfQkxLX0RFVl9SQU09eQogQ09ORklHX0JMS19ERVZfUkFNX0NPVU5UPTE2CiBDT05GSUdfQkxLX0RFVl9SQU1fU0laRT0xMzEwNzIKLUNPTkZJR19CTEtfREVWX1JBTV9CTE9DS1NJWkU9MTAyNAorIyBDT05GSUdfQkxLX0RFVl9YSVAgaXMgbm90IHNldAogIyBDT05GSUdfQ0RST01fUEtUQ0RWRCBpcyBub3Qgc2V0CiAjIENPTkZJR19BVEFfT1ZFUl9FVEggaXMgbm90IHNldAogQ09ORklHX01JU0NfREVWSUNFUz15CkBAIC0zOTEsNiArNDE3LDggQEAKICMgQ09ORklHX0VFUFJPTV85M0NYNiBpcyBub3Qgc2V0CiAjIENPTkZJR19TR0lfSU9DNCBpcyBub3Qgc2V0CiAjIENPTkZJR19USUZNX0NPUkUgaXMgbm90IHNldAorIyBDT05GSUdfRU5DTE9TVVJFX1NFUlZJQ0VTIGlzIG5vdCBzZXQKK0NPTkZJR19IQVZFX0lERT15CiAjIENPTkZJR19JREUgaXMgbm90IHNldAogCiAjCkBAIC00NTYsNiArNDg0LDcgQEAKICMgQ09ORklHX1NDU0lfSVBTIGlzIG5vdCBzZXQKICMgQ09ORklHX1NDU0lfSU5JVElPIGlzIG5vdCBzZXQKICMgQ09ORklHX1NDU0lfSU5JQTEwMCBpcyBub3Qgc2V0CisjIENPTkZJR19TQ1NJX01WU0FTIGlzIG5vdCBzZXQKICMgQ09ORklHX1NDU0lfU1RFWCBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX1NZTTUzQzhYWF8yIGlzIG5vdCBzZXQKICMgQ09ORklHX1NDU0lfSVBSIGlzIG5vdCBzZXQKQEAgLTQ4Niw2ICs1MTUsNyBAQAogIyBDT05GSUdfU0FUQV9WSUEgaXMgbm90IHNldAogIyBDT05GSUdfU0FUQV9WSVRFU1NFIGlzIG5vdCBzZXQKICMgQ09ORklHX1NBVEFfSU5JQzE2MlggaXMgbm90IHNldAorIyBDT05GSUdfU0FUQV9GU0wgaXMgbm90IHNldAogQ09ORklHX1BBVEFfQUxJPXkKICMgQ09ORklHX1BBVEFfQU1EIGlzIG5vdCBzZXQKICMgQ09ORklHX1BBVEFfQVJUT1AgaXMgbm90IHNldApAQCAtNTA5LDYgKzUzOSw3IEBACiAjIENPTkZJR19QQVRBX01QSUlYIGlzIG5vdCBzZXQKICMgQ09ORklHX1BBVEFfT0xEUElJWCBpcyBub3Qgc2V0CiAjIENPTkZJR19QQVRBX05FVENFTEwgaXMgbm90IHNldAorIyBDT05GSUdfUEFUQV9OSU5KQTMyIGlzIG5vdCBzZXQKICMgQ09ORklHX1BBVEFfTlM4NzQxMCBpcyBub3Qgc2V0CiAjIENPTkZJR19QQVRBX05TODc0MTUgaXMgbm90IHNldAogIyBDT05GSUdfUEFUQV9PUFRJIGlzIG5vdCBzZXQKQEAgLTU0Miw3ICs1NzMsNiBAQAogIyBDT05GSUdfRVFVQUxJWkVSIGlzIG5vdCBzZXQKICMgQ09ORklHX1RVTiBpcyBub3Qgc2V0CiAjIENPTkZJR19WRVRIIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lQMTAwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19BUkNORVQgaXMgbm90IHNldAogQ09ORklHX1BIWUxJQj15CiAKQEAgLTU1OCw2ICs1ODgsNyBAQAogIyBDT05GSUdfU01TQ19QSFkgaXMgbm90IHNldAogIyBDT05GSUdfQlJPQURDT01fUEhZIGlzIG5vdCBzZXQKICMgQ09ORklHX0lDUExVU19QSFkgaXMgbm90IHNldAorIyBDT05GSUdfUkVBTFRFS19QSFkgaXMgbm90IHNldAogIyBDT05GSUdfRklYRURfUEhZIGlzIG5vdCBzZXQKICMgQ09ORklHX01ESU9fQklUQkFORyBpcyBub3Qgc2V0CiBDT05GSUdfTkVUX0VUSEVSTkVUPXkKQEAgLTU3OSw2ICs2MTAsOSBAQAogIyBDT05GSUdfREwySyBpcyBub3Qgc2V0CiAjIENPTkZJR19FMTAwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19FMTAwMEUgaXMgbm90IHNldAorIyBDT05GSUdfRTEwMDBFX0VOQUJMRUQgaXMgbm90IHNldAorIyBDT05GSUdfSVAxMDAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lHQiBpcyBub3Qgc2V0CiAjIENPTkZJR19OUzgzODIwIGlzIG5vdCBzZXQKICMgQ09ORklHX0hBTUFDSEkgaXMgbm90IHNldAogIyBDT05GSUdfWUVMTE9XRklOIGlzIG5vdCBzZXQKQEAgLTYwNSw2ICs2MzksNyBAQAogIyBDT05GSUdfTklVIGlzIG5vdCBzZXQKICMgQ09ORklHX01MWDRfQ09SRSBpcyBub3Qgc2V0CiAjIENPTkZJR19URUhVVEkgaXMgbm90IHNldAorIyBDT05GSUdfQk5YMlggaXMgbm90IHNldAogIyBDT05GSUdfVFIgaXMgbm90IHNldAogCiAjCkBAIC02MjcsNyArNjYyLDYgQEAKICMgQ09ORklHX1BQUCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTElQIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9GQyBpcyBub3Qgc2V0Ci0jIENPTkZJR19TSEFQRVIgaXMgbm90IHNldAogIyBDT05GSUdfTkVUQ09OU09MRSBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRQT0xMIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9QT0xMX0NPTlRST0xMRVIgaXMgbm90IHNldApAQCAtNjc4LDYgKzcxMiw3IEBACiBDT05GSUdfSFdfQ09OU09MRT15CiAjIENPTkZJR19WVF9IV19DT05TT0xFX0JJTkRJTkcgaXMgbm90IHNldAogIyBDT05GSUdfU0VSSUFMX05PTlNUQU5EQVJEIGlzIG5vdCBzZXQKKyMgQ09ORklHX05PWk9NSSBpcyBub3Qgc2V0CiAKICMKICMgU2VyaWFsIGRyaXZlcnMKQEAgLTcwNyw4ICs3NDIsNyBAQAogIyBDT05GSUdfSVBNSV9IQU5ETEVSIGlzIG5vdCBzZXQKICMgQ09ORklHX0hXX1JBTkRPTSBpcyBub3Qgc2V0CiBDT05GSUdfTlZSQU09eQotQ09ORklHX0dFTl9SVEM9eQotQ09ORklHX0dFTl9SVENfWD15CisjIENPTkZJR19HRU5fUlRDIGlzIG5vdCBzZXQKICMgQ09ORklHX1IzOTY0IGlzIG5vdCBzZXQKICMgQ09ORklHX0FQUExJQ09NIGlzIG5vdCBzZXQKICMgQ09ORklHX1JBV19EUklWRVIgaXMgbm90IHNldApAQCAtNzU2LDE0ICs3OTAsMTIgQEAKICMKICMgTWlzY2VsbGFuZW91cyBJMkMgQ2hpcCBzdXBwb3J0CiAjCi0jIENPTkZJR19TRU5TT1JTX0RTMTMzNyBpcyBub3Qgc2V0Ci0jIENPTkZJR19TRU5TT1JTX0RTMTM3NCBpcyBub3Qgc2V0CiAjIENPTkZJR19EUzE2ODIgaXMgbm90IHNldAogQ09ORklHX1NFTlNPUlNfRUVQUk9NPXkKICMgQ09ORklHX1NFTlNPUlNfUENGODU3NCBpcyBub3Qgc2V0Ci0jIENPTkZJR19TRU5TT1JTX1BDQTk1MzkgaXMgbm90IHNldAorIyBDT05GSUdfUENGODU3NSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1BDRjg1OTEgaXMgbm90IHNldAotIyBDT05GSUdfU0VOU09SU19NNDFUMDAgaXMgbm90IHNldAorIyBDT05GSUdfVFBTNjUwMTAgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19NQVg2ODc1IGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVFNMMjU1MCBpcyBub3Qgc2V0CiAjIENPTkZJR19JMkNfREVCVUdfQ09SRSBpcyBub3Qgc2V0CkBAIC03NzksNiArODExLDcgQEAKICMgQ09ORklHX1cxIGlzIG5vdCBzZXQKICMgQ09ORklHX1BPV0VSX1NVUFBMWSBpcyBub3Qgc2V0CiAjIENPTkZJR19IV01PTiBpcyBub3Qgc2V0CisjIENPTkZJR19USEVSTUFMIGlzIG5vdCBzZXQKICMgQ09ORklHX1dBVENIRE9HIGlzIG5vdCBzZXQKIAogIwpAQCAtODAzLDYgKzgzNiw4IEBACiAjCiAjIFN1cHBvcnRlZCBTQUE3MTQ2IGJhc2VkIFBDSSBBZGFwdGVycwogIworIyBDT05GSUdfVFRQQ0lfRUVQUk9NIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RWQl9CVURHRVRfQ09SRSBpcyBub3Qgc2V0CiAKICMKICMgU3VwcG9ydGVkIFVTQiBBZGFwdGVycwpAQCAtODg4LDExICs5MjMsMTMgQEAKICMgQ09ORklHX0RWQl9QTEwgaXMgbm90IHNldAogIyBDT05GSUdfRFZCX1REQTgyNlggaXMgbm90IHNldAogIyBDT05GSUdfRFZCX1REQTgyN1ggaXMgbm90IHNldAorIyBDT05GSUdfRFZCX1REQTE4MjcxIGlzIG5vdCBzZXQKICMgQ09ORklHX0RWQl9UVU5FUl9RVDEwMTAgaXMgbm90IHNldAogIyBDT05GSUdfRFZCX1RVTkVSX01UMjA2MCBpcyBub3Qgc2V0CiAjIENPTkZJR19EVkJfVFVORVJfTVQyMjY2IGlzIG5vdCBzZXQKICMgQ09ORklHX0RWQl9UVU5FUl9NVDIxMzEgaXMgbm90IHNldAogIyBDT05GSUdfRFZCX1RVTkVSX0RJQjAwNzAgaXMgbm90IHNldAorIyBDT05GSUdfRFZCX1RVTkVSX1hDNTAwMCBpcyBub3Qgc2V0CiAKICMKICMgTWlzY2VsbGFuZW91cyBkZXZpY2VzCkBAIC05NzAsNiArMTAwNyw3IEBACiAjIENPTkZJR19TTkRfQlQ4N1ggaXMgbm90IHNldAogIyBDT05GSUdfU05EX0NBMDEwNiBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfQ01JUENJIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NORF9PWFlHRU4gaXMgbm90IHNldAogIyBDT05GSUdfU05EX0NTNDI4MSBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfQ1M0NlhYIGlzIG5vdCBzZXQKICMgQ09ORklHX1NORF9DUzU1MzAgaXMgbm90IHNldApAQCAtOTk1LDYgKzEwMzMsNyBAQAogIyBDT05GSUdfU05EX0hEQV9JTlRFTCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfSERTUCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfSERTUE0gaXMgbm90IHNldAorIyBDT05GSUdfU05EX0hJRklFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfSUNFMTcxMiBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfSUNFMTcyNCBpcyBub3Qgc2V0CiBDT05GSUdfU05EX0lOVEVMOFgwPXkKQEAgLTEwMTIsNiArMTA1MSw3IEBACiAjIENPTkZJR19TTkRfVFJJREVOVCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfVklBODJYWCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfVklBODJYWF9NT0RFTSBpcyBub3Qgc2V0CisjIENPTkZJR19TTkRfVklSVFVPU08gaXMgbm90IHNldAogIyBDT05GSUdfU05EX1ZYMjIyIGlzIG5vdCBzZXQKICMgQ09ORklHX1NORF9ZTUZQQ0kgaXMgbm90IHNldAogIyBDT05GSUdfU05EX0FDOTdfUE9XRVJfU0FWRSBpcyBub3Qgc2V0CkBAIC0xMDQxLDYgKzEwODEsMTAgQEAKICMKIAogIworIyBBTFNBIFNvQyBhdWRpbyBmb3IgRnJlZXNjYWxlIFNPQ3MKKyMKKworIwogIyBPcGVuIFNvdW5kIFN5c3RlbQogIwogIyBDT05GSUdfU09VTkRfUFJJTUUgaXMgbm90IHNldApAQCAtMTA2Myw2ICsxMTA3LDcgQEAKIENPTkZJR19VU0JfQVJDSF9IQVNfRUhDST15CiBDT05GSUdfVVNCPXkKICMgQ09ORklHX1VTQl9ERUJVRyBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfQU5OT1VOQ0VfTkVXX0RFVklDRVMgaXMgbm90IHNldAogCiAjCiAjIE1pc2NlbGxhbmVvdXMgVVNCIG9wdGlvbnMKQEAgLTEwNzYsOSArMTEyMSwxMCBAQAogIyBVU0IgSG9zdCBDb250cm9sbGVyIERyaXZlcnMKICMKIENPTkZJR19VU0JfRUhDSV9IQ0Q9eQotIyBDT05GSUdfVVNCX0VIQ0lfU1BMSVRfSVNPIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9FSENJX1JPT1RfSFVCX1RUIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9FSENJX1RUX05FV1NDSEVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9FSENJX0ZTTCBpcyBub3Qgc2V0CitDT05GSUdfVVNCX0VIQ0lfSENEX1BQQ19PRj15CiAjIENPTkZJR19VU0JfSVNQMTE2WF9IQ0QgaXMgbm90IHNldAogQ09ORklHX1VTQl9PSENJX0hDRD15CiBDT05GSUdfVVNCX09IQ0lfSENEX1BQQ19PRj15CkBAIC0xMTI5LDEwICsxMTc1LDYgQEAKICMKICMgVVNCIHBvcnQgZHJpdmVycwogIwotCi0jCi0jIFVTQiBTZXJpYWwgQ29udmVydGVyIHN1cHBvcnQKLSMKICMgQ09ORklHX1VTQl9TRVJJQUwgaXMgbm90IHNldAogCiAjCkBAIC0xMTU4LDE2ICsxMjAwLDkgQEAKICMgQ09ORklHX1VTQl9UUkFOQ0VWSUJSQVRPUiBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfSU9XQVJSSU9SIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9URVNUIGlzIG5vdCBzZXQKLQotIwotIyBVU0IgRFNMIG1vZGVtIHN1cHBvcnQKLSMKLQotIwotIyBVU0IgR2FkZ2V0IFN1cHBvcnQKLSMKICMgQ09ORklHX1VTQl9HQURHRVQgaXMgbm90IHNldAogIyBDT05GSUdfTU1DIGlzIG5vdCBzZXQKKyMgQ09ORklHX01FTVNUSUNLIGlzIG5vdCBzZXQKICMgQ09ORklHX05FV19MRURTIGlzIG5vdCBzZXQKICMgQ09ORklHX0lORklOSUJBTkQgaXMgbm90IHNldAogIyBDT05GSUdfRURBQyBpcyBub3Qgc2V0CkBAIC0xMTk5LDYgKzEyMzQsNyBAQAogIyBDT05GSUdfUlRDX0RSVl9QQ0Y4NTYzIGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfUENGODU4MyBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfRFJWX000MVQ4MCBpcyBub3Qgc2V0CisjIENPTkZJR19SVENfRFJWX1MzNTM5MEEgaXMgbm90IHNldAogCiAjCiAjIFNQSSBSVEMgZHJpdmVycwpAQCAtMTIwOCw5ICsxMjQ0LDEwIEBACiAjIFBsYXRmb3JtIFJUQyBkcml2ZXJzCiAjCiBDT05GSUdfUlRDX0RSVl9DTU9TPXkKKyMgQ09ORklHX1JUQ19EUlZfRFMxNTExIGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfRFMxNTUzIGlzIG5vdCBzZXQKLSMgQ09ORklHX1JUQ19EUlZfU1RLMTdUQTggaXMgbm90IHNldAogIyBDT05GSUdfUlRDX0RSVl9EUzE3NDIgaXMgbm90IHNldAorIyBDT05GSUdfUlRDX0RSVl9TVEsxN1RBOCBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfRFJWX000OFQ4NiBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfRFJWX000OFQ1OSBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfRFJWX1YzMDIwIGlzIG5vdCBzZXQKQEAgLTEyMTgsNiArMTI1NSw3IEBACiAjCiAjIG9uLUNQVSBSVEMgZHJpdmVycwogIworIyBDT05GSUdfRE1BREVWSUNFUyBpcyBub3Qgc2V0CiAKICMKICMgVXNlcnNwYWNlIEkvTwpAQCAtMTI0MywxMiArMTI4MSwxMCBAQAogIyBDT05GSUdfWEZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0dGUzJfRlMgaXMgbm90IHNldAogIyBDT05GSUdfT0NGUzJfRlMgaXMgbm90IHNldAotIyBDT05GSUdfTUlOSVhfRlMgaXMgbm90IHNldAotIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAorQ09ORklHX0ROT1RJRlk9eQogQ09ORklHX0lOT1RJRlk9eQogQ09ORklHX0lOT1RJRllfVVNFUj15CiAjIENPTkZJR19RVU9UQSBpcyBub3Qgc2V0Ci1DT05GSUdfRE5PVElGWT15CiAjIENPTkZJR19BVVRPRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfQVVUT0ZTNF9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19GVVNFX0ZTIGlzIG5vdCBzZXQKQEAgLTEzMDAsOCArMTMzNiwxMCBAQAogQ09ORklHX0VGU19GUz1tCiBDT05GSUdfQ1JBTUZTPXkKIENPTkZJR19WWEZTX0ZTPW0KKyMgQ09ORklHX01JTklYX0ZTIGlzIG5vdCBzZXQKIENPTkZJR19IUEZTX0ZTPW0KIENPTkZJR19RTlg0RlNfRlM9bQorIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAogQ09ORklHX1NZU1ZfRlM9bQogQ09ORklHX1VGU19GUz1tCiAjIENPTkZJR19VRlNfRlNfV1JJVEUgaXMgbm90IHNldApAQCAtMTM5Myw3ICsxNDMxLDYgQEAKICMgQ09ORklHX05MU19LT0k4X1UgaXMgbm90IHNldAogQ09ORklHX05MU19VVEY4PW0KICMgQ09ORklHX0RMTSBpcyBub3Qgc2V0Ci0jIENPTkZJR19VQ0NfU0xPVyBpcyBub3Qgc2V0CiAKICMKICMgTGlicmFyeSByb3V0aW5lcwpAQCAtMTQxMCw3ICsxNDQ3LDYgQEAKIENPTkZJR19IQVNfSU9NRU09eQogQ09ORklHX0hBU19JT1BPUlQ9eQogQ09ORklHX0hBU19ETUE9eQotIyBDT05GSUdfSU5TVFJVTUVOVEFUSU9OIGlzIG5vdCBzZXQKIAogIwogIyBLZXJuZWwgaGFja2luZwpAQCAtMTQyOSw2ICsxNDY1LDcgQEAKICMgQ09ORklHX1NDSEVEU1RBVFMgaXMgbm90IHNldAogIyBDT05GSUdfVElNRVJfU1RBVFMgaXMgbm90IHNldAogIyBDT05GSUdfU0xVQl9ERUJVR19PTiBpcyBub3Qgc2V0CisjIENPTkZJR19TTFVCX1NUQVRTIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1JUX01VVEVYRVMgaXMgbm90IHNldAogIyBDT05GSUdfUlRfTVVURVhfVEVTVEVSIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NQSU5MT0NLIGlzIG5vdCBzZXQKQEAgLTE0NDIsOSArMTQ3OSw5IEBACiAjIENPTkZJR19ERUJVR19WTSBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19MSVNUIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NHIGlzIG5vdCBzZXQKLUNPTkZJR19GT1JDRURfSU5MSU5JTkc9eQogIyBDT05GSUdfQk9PVF9QUklOVEtfREVMQVkgaXMgbm90IHNldAogIyBDT05GSUdfUkNVX1RPUlRVUkVfVEVTVCBpcyBub3Qgc2V0CisjIENPTkZJR19CQUNLVFJBQ0VfU0VMRl9URVNUIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZBVUxUX0lOSkVDVElPTiBpcyBub3Qgc2V0CiAjIENPTkZJR19TQU1QTEVTIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NUQUNLT1ZFUkZMT1cgaXMgbm90IHNldApAQCAtMTQ2Myw2ICsxNTAwLDcgQEAKIENPTkZJR19DUllQVE89eQogQ09ORklHX0NSWVBUT19BTEdBUEk9eQogQ09ORklHX0NSWVBUT19CTEtDSVBIRVI9eQorIyBDT05GSUdfQ1JZUFRPX1NFUUlWIGlzIG5vdCBzZXQKIENPTkZJR19DUllQVE9fSEFTSD15CiBDT05GSUdfQ1JZUFRPX01BTkFHRVI9eQogQ09ORklHX0NSWVBUT19ITUFDPXkKQEAgLTE0ODEsNiArMTUxOSw5IEBACiBDT05GSUdfQ1JZUFRPX1BDQkM9bQogIyBDT05GSUdfQ1JZUFRPX0xSVyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fWFRTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DVFIgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0dDTSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ0NNIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19DUllQVEQgaXMgbm90IHNldAogQ09ORklHX0NSWVBUT19ERVM9eQogIyBDT05GSUdfQ1JZUFRPX0ZDUllQVCBpcyBub3Qgc2V0CkBAIC0xNDk1LDExICsxNTM2LDE0IEBACiAjIENPTkZJR19DUllQVE9fS0hBWkFEIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19BTlVCSVMgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX1NFRUQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1NBTFNBMjAgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0RFRkxBVEUgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX01JQ0hBRUxfTUlDIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19DUkMzMkMgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0NBTUVMTElBIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19URVNUIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19BVVRIRU5DIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19MWk8gaXMgbm90IHNldAogQ09ORklHX0NSWVBUT19IVz15CisjIENPTkZJR19DUllQVE9fREVWX0hJRk5fNzk1WCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfQ0xPQ0sgaXMgbm90IHNldApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODV4eF9jZHNfZGVmY29uZmlnIGIvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODV4eF9jZHNfZGVmY29uZmlnCmluZGV4IDJmOWFkNTguLmE0NjlmZTkgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jb25maWdzL21wYzg1eHhfY2RzX2RlZmNvbmZpZworKysgYi9hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM4NXh4X2Nkc19kZWZjb25maWcKQEAgLTEsNyArMSw3IEBACiAjCiAjIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIG1ha2UgY29uZmlnOiBkb24ndCBlZGl0Ci0jIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMjQtcmM0Ci0jIFRodSBEZWMgIDYgMTY6NDg6NTQgMjAwNworIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjI1LXJjNgorIyBNb24gTWFyIDI0IDA4OjQ4OjMwIDIwMDgKICMKICMgQ09ORklHX1BQQzY0IGlzIG5vdCBzZXQKIApAQCAtMTQsMTAgKzE0LDEwIEBACiAjIENPTkZJR180MHggaXMgbm90IHNldAogIyBDT05GSUdfNDR4IGlzIG5vdCBzZXQKICMgQ09ORklHX0UyMDAgaXMgbm90IHNldAotQ09ORklHXzg1eHg9eQogQ09ORklHX0U1MDA9eQogQ09ORklHX0JPT0tFPXkKIENPTkZJR19GU0xfQk9PS0U9eQorQ09ORklHX0ZTTF9FTUJfUEVSRk1PTj15CiAjIENPTkZJR19QSFlTXzY0QklUIGlzIG5vdCBzZXQKIENPTkZJR19TUEU9eQogIyBDT05GSUdfUFBDX01NX1NMSUNFUyBpcyBub3Qgc2V0CkBAIC0zMCw2ICszMCw3IEBACiBDT05GSUdfR0VORVJJQ19USU1FX1ZTWVNDQUxMPXkKIENPTkZJR19HRU5FUklDX0NMT0NLRVZFTlRTPXkKIENPTkZJR19HRU5FUklDX0hBUkRJUlFTPXkKKyMgQ09ORklHX0hBVkVfU0VUVVBfUEVSX0NQVV9BUkVBIGlzIG5vdCBzZXQKIENPTkZJR19JUlFfUEVSX0NQVT15CiBDT05GSUdfUldTRU1fWENIR0FERF9BTEdPUklUSE09eQogQ09ORklHX0FSQ0hfSEFTX0lMT0cyX1UzMj15CkBAIC02NywxNSArNjgsMTkgQEAKICMgQ09ORklHX1BPU0lYX01RVUVVRSBpcyBub3Qgc2V0CiAjIENPTkZJR19CU0RfUFJPQ0VTU19BQ0NUIGlzIG5vdCBzZXQKICMgQ09ORklHX1RBU0tTVEFUUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19VU0VSX05TIGlzIG5vdCBzZXQKLSMgQ09ORklHX1BJRF9OUyBpcyBub3Qgc2V0CiAjIENPTkZJR19BVURJVCBpcyBub3Qgc2V0CiAjIENPTkZJR19JS0NPTkZJRyBpcyBub3Qgc2V0CiBDT05GSUdfTE9HX0JVRl9TSElGVD0xNAogIyBDT05GSUdfQ0dST1VQUyBpcyBub3Qgc2V0CitDT05GSUdfR1JPVVBfU0NIRUQ9eQogIyBDT05GSUdfRkFJUl9HUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CisjIENPTkZJR19SVF9HUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CitDT05GSUdfVVNFUl9TQ0hFRD15CisjIENPTkZJR19DR1JPVVBfU0NIRUQgaXMgbm90IHNldAogQ09ORklHX1NZU0ZTX0RFUFJFQ0FURUQ9eQorQ09ORklHX1NZU0ZTX0RFUFJFQ0FURURfVjI9eQogIyBDT05GSUdfUkVMQVkgaXMgbm90IHNldAorIyBDT05GSUdfTkFNRVNQQUNFUyBpcyBub3Qgc2V0CiBDT05GSUdfQkxLX0RFVl9JTklUUkQ9eQogQ09ORklHX0lOSVRSQU1GU19TT1VSQ0U9IiIKICMgQ09ORklHX0NDX09QVElNSVpFX0ZPUl9TSVpFIGlzIG5vdCBzZXQKQEAgLTg5LDExICs5NCwxMyBAQAogQ09ORklHX1BSSU5USz15CiBDT05GSUdfQlVHPXkKIENPTkZJR19FTEZfQ09SRT15CitDT05GSUdfQ09NUEFUX0JSSz15CiBDT05GSUdfQkFTRV9GVUxMPXkKIENPTkZJR19GVVRFWD15CiBDT05GSUdfQU5PTl9JTk9ERVM9eQogQ09ORklHX0VQT0xMPXkKIENPTkZJR19TSUdOQUxGRD15CitDT05GSUdfVElNRVJGRD15CiBDT05GSUdfRVZFTlRGRD15CiBDT05GSUdfU0hNRU09eQogQ09ORklHX1ZNX0VWRU5UX0NPVU5URVJTPXkKQEAgLTEwMSw2ICsxMDgsMTMgQEAKICMgQ09ORklHX1NMQUIgaXMgbm90IHNldAogQ09ORklHX1NMVUI9eQogIyBDT05GSUdfU0xPQiBpcyBub3Qgc2V0CisjIENPTkZJR19QUk9GSUxJTkcgaXMgbm90IHNldAorIyBDT05GSUdfTUFSS0VSUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9PUFJPRklMRT15CitDT05GSUdfSEFWRV9LUFJPQkVTPXkKK0NPTkZJR19IQVZFX0tSRVRQUk9CRVM9eQorQ09ORklHX1BST0NfUEFHRV9NT05JVE9SPXkKK0NPTkZJR19TTEFCSU5GTz15CiBDT05GSUdfUlRfTVVURVhFUz15CiAjIENPTkZJR19USU5ZX1NITUVNIGlzIG5vdCBzZXQKIENPTkZJR19CQVNFX1NNQUxMPTAKQEAgLTEyMywyMiArMTM3LDMwIEBACiAjIENPTkZJR19ERUZBVUxUX0NGUSBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUZBVUxUX05PT1AgaXMgbm90IHNldAogQ09ORklHX0RFRkFVTFRfSU9TQ0hFRD0iYW50aWNpcGF0b3J5IgorQ09ORklHX0NMQVNTSUNfUkNVPXkKIAogIwogIyBQbGF0Zm9ybSBzdXBwb3J0CiAjCi0jIENPTkZJR19QUENfTVBDNTJ4eCBpcyBub3Qgc2V0Ci0jIENPTkZJR19QUENfTVBDNTIwMCBpcyBub3Qgc2V0CisjIENPTkZJR19QUENfTVBDNTEyeCBpcyBub3Qgc2V0CisjIENPTkZJR19QUENfTVBDNTEyMSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfQ0VMTCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfQ0VMTF9OQVRJVkUgaXMgbm90IHNldAogIyBDT05GSUdfUFEyQURTIGlzIG5vdCBzZXQKK0NPTkZJR19NUEM4NXh4PXkKICMgQ09ORklHX01QQzg1NDBfQURTIGlzIG5vdCBzZXQKICMgQ09ORklHX01QQzg1NjBfQURTIGlzIG5vdCBzZXQKIENPTkZJR19NUEM4NXh4X0NEUz15CiAjIENPTkZJR19NUEM4NXh4X01EUyBpcyBub3Qgc2V0CiAjIENPTkZJR19NUEM4NXh4X0RTIGlzIG5vdCBzZXQKLUNPTkZJR19NUEM4NTQwPXkKLUNPTkZJR19NUEM4NXh4PXkKKyMgQ09ORklHX1NUWF9HUDMgaXMgbm90IHNldAorIyBDT05GSUdfVFFNODU0MCBpcyBub3Qgc2V0CisjIENPTkZJR19UUU04NTQxIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RRTTg1NTUgaXMgbm90IHNldAorIyBDT05GSUdfVFFNODU2MCBpcyBub3Qgc2V0CisjIENPTkZJR19TQkM4NTQ4IGlzIG5vdCBzZXQKKyMgQ09ORklHX1NCQzg1NjAgaXMgbm90IHNldAorIyBDT05GSUdfSVBJQyBpcyBub3Qgc2V0CiBDT05GSUdfTVBJQz15CiAjIENPTkZJR19NUElDX1dFSVJEIGlzIG5vdCBzZXQKIENPTkZJR19QUENfSTgyNTk9eQpAQCAtMTY1LDEzICsxODcsMTcgQEAKICMgQ09ORklHX0haXzMwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19IWl8xMDAwIGlzIG5vdCBzZXQKIENPTkZJR19IWj0yNTAKKyMgQ09ORklHX1NDSEVEX0hSVElDSyBpcyBub3Qgc2V0CiBDT05GSUdfUFJFRU1QVF9OT05FPXkKICMgQ09ORklHX1BSRUVNUFRfVk9MVU5UQVJZIGlzIG5vdCBzZXQKICMgQ09ORklHX1BSRUVNUFQgaXMgbm90IHNldAogQ09ORklHX0JJTkZNVF9FTEY9eQogQ09ORklHX0JJTkZNVF9NSVNDPXkKIENPTkZJR19NQVRIX0VNVUxBVElPTj15CisjIENPTkZJR19JT01NVV9IRUxQRVIgaXMgbm90IHNldAogQ09ORklHX0FSQ0hfRU5BQkxFX01FTU9SWV9IT1RQTFVHPXkKK0NPTkZJR19BUkNIX0hBU19XQUxLX01FTU9SWT15CitDT05GSUdfQVJDSF9FTkFCTEVfTUVNT1JZX0hPVFJFTU9WRT15CiBDT05GSUdfQVJDSF9GTEFUTUVNX0VOQUJMRT15CiBDT05GSUdfQVJDSF9QT1BVTEFURVNfTk9ERV9NQVA9eQogQ09ORklHX1NFTEVDVF9NRU1PUllfTU9ERUw9eQpAQCAtMTkwLDExICsyMTYsNyBAQAogQ09ORklHX1BST0NfREVWSUNFVFJFRT15CiAjIENPTkZJR19DTURMSU5FX0JPT0wgaXMgbm90IHNldAogIyBDT05GSUdfUE0gaXMgbm90IHNldAotQ09ORklHX1NVU1BFTkRfVVBfUE9TU0lCTEU9eQotQ09ORklHX0hJQkVSTkFUSU9OX1VQX1BPU1NJQkxFPXkKICMgQ09ORklHX1NFQ0NPTVAgaXMgbm90IHNldAotQ09ORklHX1dBTlRfREVWSUNFX1RSRUU9eQotQ09ORklHX0RFVklDRV9UUkVFPSIiCiBDT05GSUdfSVNBX0RNQV9BUEk9eQogCiAjCkBAIC0yNDQsNiArMjY2LDcgQEAKIENPTkZJR19YRlJNX1VTRVI9eQogIyBDT05GSUdfWEZSTV9TVUJfUE9MSUNZIGlzIG5vdCBzZXQKICMgQ09ORklHX1hGUk1fTUlHUkFURSBpcyBub3Qgc2V0CisjIENPTkZJR19YRlJNX1NUQVRJU1RJQ1MgaXMgbm90IHNldAogIyBDT05GSUdfTkVUX0tFWSBpcyBub3Qgc2V0CiBDT05GSUdfSU5FVD15CiBDT05GSUdfSVBfTVVMVElDQVNUPXkKQEAgLTI5OSw2ICszMjIsNyBAQAogIwogIyBDT05GSUdfTkVUX1BLVEdFTiBpcyBub3Qgc2V0CiAjIENPTkZJR19IQU1SQURJTyBpcyBub3Qgc2V0CisjIENPTkZJR19DQU4gaXMgbm90IHNldAogIyBDT05GSUdfSVJEQSBpcyBub3Qgc2V0CiAjIENPTkZJR19CVCBpcyBub3Qgc2V0CiAjIENPTkZJR19BRl9SWFJQQyBpcyBub3Qgc2V0CkBAIC0zNDUsNyArMzY5LDcgQEAKIENPTkZJR19CTEtfREVWX1JBTT15CiBDT05GSUdfQkxLX0RFVl9SQU1fQ09VTlQ9MTYKIENPTkZJR19CTEtfREVWX1JBTV9TSVpFPTMyNzY4Ci1DT05GSUdfQkxLX0RFVl9SQU1fQkxPQ0tTSVpFPTEwMjQKKyMgQ09ORklHX0JMS19ERVZfWElQIGlzIG5vdCBzZXQKICMgQ09ORklHX0NEUk9NX1BLVENEVkQgaXMgbm90IHNldAogIyBDT05GSUdfQVRBX09WRVJfRVRIIGlzIG5vdCBzZXQKIENPTkZJR19NSVNDX0RFVklDRVM9eQpAQCAtMzUzLDEyICszNzcsMTQgQEAKICMgQ09ORklHX0VFUFJPTV85M0NYNiBpcyBub3Qgc2V0CiAjIENPTkZJR19TR0lfSU9DNCBpcyBub3Qgc2V0CiAjIENPTkZJR19USUZNX0NPUkUgaXMgbm90IHNldAorIyBDT05GSUdfRU5DTE9TVVJFX1NFUlZJQ0VTIGlzIG5vdCBzZXQKK0NPTkZJR19IQVZFX0lERT15CiBDT05GSUdfSURFPXkKIENPTkZJR19JREVfTUFYX0hXSUZTPTQKIENPTkZJR19CTEtfREVWX0lERT15CiAKICMKLSMgUGxlYXNlIHNlZSBEb2N1bWVudGF0aW9uL2lkZS50eHQgZm9yIGhlbHAvaW5mbyBvbiBJREUgZHJpdmVzCisjIFBsZWFzZSBzZWUgRG9jdW1lbnRhdGlvbi9pZGUvaWRlLnR4dCBmb3IgaGVscC9pbmZvIG9uIElERSBkcml2ZXMKICMKICMgQ09ORklHX0JMS19ERVZfSURFX1NBVEEgaXMgbm90IHNldAogIyBDT05GSUdfQkxLX0RFVl9JREVESVNLIGlzIG5vdCBzZXQKQEAgLTM3NCwxMiArNDAwLDEyIEBACiAjCiBDT05GSUdfSURFX0dFTkVSSUM9eQogIyBDT05GSUdfQkxLX0RFVl9QTEFURk9STSBpcyBub3Qgc2V0CitDT05GSUdfQkxLX0RFVl9JREVETUFfU0ZGPXkKIAogIwogIyBQQ0kgSURFIGNoaXBzZXRzIHN1cHBvcnQKICMKIENPTkZJR19CTEtfREVWX0lERVBDST15Ci1DT05GSUdfSURFUENJX1NIQVJFX0lSUT15CiBDT05GSUdfSURFUENJX1BDSUJVU19PUkRFUj15CiAjIENPTkZJR19CTEtfREVWX09GRkJPQVJEIGlzIG5vdCBzZXQKIENPTkZJR19CTEtfREVWX0dFTkVSSUM9eQpAQCAtNDEwLDcgKzQzNiw2IEBACiAjIENPTkZJR19CTEtfREVWX1RSTTI5MCBpcyBub3Qgc2V0CiBDT05GSUdfQkxLX0RFVl9WSUE4MkNYWFg9eQogIyBDT05GSUdfQkxLX0RFVl9UQzg2QzAwMSBpcyBub3Qgc2V0Ci0jIENPTkZJR19JREVfQVJNIGlzIG5vdCBzZXQKIENPTkZJR19CTEtfREVWX0lERURNQT15CiBDT05GSUdfSURFX0FSQ0hfT0JTT0xFVEVfSU5JVD15CiAjIENPTkZJR19CTEtfREVWX0hEIGlzIG5vdCBzZXQKQEAgLTQ0MSw3ICs0NjYsNiBAQAogIyBDT05GSUdfRVFVQUxJWkVSIGlzIG5vdCBzZXQKICMgQ09ORklHX1RVTiBpcyBub3Qgc2V0CiAjIENPTkZJR19WRVRIIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lQMTAwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19BUkNORVQgaXMgbm90IHNldAogQ09ORklHX1BIWUxJQj15CiAKQEAgLTQ1Nyw2ICs0ODEsNyBAQAogIyBDT05GSUdfU01TQ19QSFkgaXMgbm90IHNldAogIyBDT05GSUdfQlJPQURDT01fUEhZIGlzIG5vdCBzZXQKICMgQ09ORklHX0lDUExVU19QSFkgaXMgbm90IHNldAorIyBDT05GSUdfUkVBTFRFS19QSFkgaXMgbm90IHNldAogIyBDT05GSUdfRklYRURfUEhZIGlzIG5vdCBzZXQKICMgQ09ORklHX01ESU9fQklUQkFORyBpcyBub3Qgc2V0CiBDT05GSUdfTkVUX0VUSEVSTkVUPXkKQEAgLTQ4MCw2ICs1MDUsOSBAQAogQ09ORklHX0UxMDAwX05BUEk9eQogIyBDT05GSUdfRTEwMDBfRElTQUJMRV9QQUNLRVRfU1BMSVQgaXMgbm90IHNldAogIyBDT05GSUdfRTEwMDBFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0UxMDAwRV9FTkFCTEVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lQMTAwMCBpcyBub3Qgc2V0CisjIENPTkZJR19JR0IgaXMgbm90IHNldAogIyBDT05GSUdfTlM4MzgyMCBpcyBub3Qgc2V0CiAjIENPTkZJR19IQU1BQ0hJIGlzIG5vdCBzZXQKICMgQ09ORklHX1lFTExPV0ZJTiBpcyBub3Qgc2V0CkBAIC01MDYsNiArNTM0LDcgQEAKICMgQ09ORklHX05JVSBpcyBub3Qgc2V0CiAjIENPTkZJR19NTFg0X0NPUkUgaXMgbm90IHNldAogIyBDT05GSUdfVEVIVVRJIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JOWDJYIGlzIG5vdCBzZXQKICMgQ09ORklHX1RSIGlzIG5vdCBzZXQKIAogIwpAQCAtNTE4LDcgKzU0Nyw2IEBACiAjIENPTkZJR19ISVBQSSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUFAgaXMgbm90IHNldAogIyBDT05GSUdfU0xJUCBpcyBub3Qgc2V0Ci0jIENPTkZJR19TSEFQRVIgaXMgbm90IHNldAogIyBDT05GSUdfTkVUQ09OU09MRSBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRQT0xMIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9QT0xMX0NPTlRST0xMRVIgaXMgbm90IHNldApAQCAtNTYxLDYgKzU4OSw3IEBACiAjCiAjIENPTkZJR19WVCBpcyBub3Qgc2V0CiAjIENPTkZJR19TRVJJQUxfTk9OU1RBTkRBUkQgaXMgbm90IHNldAorIyBDT05GSUdfTk9aT01JIGlzIG5vdCBzZXQKIAogIwogIyBTZXJpYWwgZHJpdmVycwpAQCAtNjIwLDYgKzY0OSw3IEBACiAjIENPTkZJR19TRU5TT1JTX1c4MzYyN0hGIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVzgzNjI3RUhGIGlzIG5vdCBzZXQKICMgQ09ORklHX0hXTU9OX0RFQlVHX0NISVAgaXMgbm90IHNldAorIyBDT05GSUdfVEhFUk1BTCBpcyBub3Qgc2V0CiAjIENPTkZJR19XQVRDSERPRyBpcyBub3Qgc2V0CiAKICMKQEAgLTY3MiwxNiArNzAyLDE0IEBACiAjCiAjIE5PVEU6IFVTQl9TVE9SQUdFIGVuYWJsZXMgU0NTSSwgYW5kICdTQ1NJIGRpc2sgc3VwcG9ydCcKICMKLQotIwotIyBVU0IgR2FkZ2V0IFN1cHBvcnQKLSMKICMgQ09ORklHX1VTQl9HQURHRVQgaXMgbm90IHNldAogIyBDT05GSUdfTU1DIGlzIG5vdCBzZXQKKyMgQ09ORklHX01FTVNUSUNLIGlzIG5vdCBzZXQKICMgQ09ORklHX05FV19MRURTIGlzIG5vdCBzZXQKICMgQ09ORklHX0lORklOSUJBTkQgaXMgbm90IHNldAogIyBDT05GSUdfRURBQyBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfQ0xBU1MgaXMgbm90IHNldAorIyBDT05GSUdfRE1BREVWSUNFUyBpcyBub3Qgc2V0CiAKICMKICMgVXNlcnNwYWNlIEkvTwpAQCAtNzA3LDEyICs3MzUsMTAgQEAKICMgQ09ORklHX1hGU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19HRlMyX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX09DRlMyX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX01JTklYX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1JPTUZTX0ZTIGlzIG5vdCBzZXQKK0NPTkZJR19ETk9USUZZPXkKIENPTkZJR19JTk9USUZZPXkKIENPTkZJR19JTk9USUZZX1VTRVI9eQogIyBDT05GSUdfUVVPVEEgaXMgbm90IHNldAotQ09ORklHX0ROT1RJRlk9eQogIyBDT05GSUdfQVVUT0ZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0FVVE9GUzRfRlMgaXMgbm90IHNldAogIyBDT05GSUdfRlVTRV9GUyBpcyBub3Qgc2V0CkBAIC03NTQsOCArNzgwLDEwIEBACiAjIENPTkZJR19FRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfQ1JBTUZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1ZYRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfTUlOSVhfRlMgaXMgbm90IHNldAogIyBDT05GSUdfSFBGU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19RTlg0RlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfU1lTVl9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19VRlNfRlMgaXMgbm90IHNldAogQ09ORklHX05FVFdPUktfRklMRVNZU1RFTVM9eQpAQCAtNzk2LDcgKzgyNCw2IEBACiAjIENPTkZJR19TWVNWNjhfUEFSVElUSU9OIGlzIG5vdCBzZXQKICMgQ09ORklHX05MUyBpcyBub3Qgc2V0CiAjIENPTkZJR19ETE0gaXMgbm90IHNldAotIyBDT05GSUdfVUNDX1NMT1cgaXMgbm90IHNldAogCiAjCiAjIExpYnJhcnkgcm91dGluZXMKQEAgLTgxMiw3ICs4MzksNiBAQAogQ09ORklHX0hBU19JT01FTT15CiBDT05GSUdfSEFTX0lPUE9SVD15CiBDT05GSUdfSEFTX0RNQT15Ci0jIENPTkZJR19JTlNUUlVNRU5UQVRJT04gaXMgbm90IHNldAogCiAjCiAjIEtlcm5lbCBoYWNraW5nCkBAIC04MzEsNiArODU3LDcgQEAKICMgQ09ORklHX1NDSEVEU1RBVFMgaXMgbm90IHNldAogIyBDT05GSUdfVElNRVJfU1RBVFMgaXMgbm90IHNldAogIyBDT05GSUdfU0xVQl9ERUJVR19PTiBpcyBub3Qgc2V0CisjIENPTkZJR19TTFVCX1NUQVRTIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1JUX01VVEVYRVMgaXMgbm90IHNldAogIyBDT05GSUdfUlRfTVVURVhfVEVTVEVSIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NQSU5MT0NLIGlzIG5vdCBzZXQKQEAgLTg0Myw4ICs4NzAsOCBAQAogIyBDT05GSUdfREVCVUdfVk0gaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfTElTVCBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19TRyBpcyBub3Qgc2V0Ci1DT05GSUdfRk9SQ0VEX0lOTElOSU5HPXkKICMgQ09ORklHX0JPT1RfUFJJTlRLX0RFTEFZIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JBQ0tUUkFDRV9TRUxGX1RFU1QgaXMgbm90IHNldAogIyBDT05GSUdfRkFVTFRfSU5KRUNUSU9OIGlzIG5vdCBzZXQKICMgQ09ORklHX1NBTVBMRVMgaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfU1RBQ0tPVkVSRkxPVyBpcyBub3Qgc2V0CkBAIC04NjAsNSArODg3LDQ5IEBACiAjIENPTkZJR19LRVlTIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFQ1VSSVRZIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFQ1VSSVRZX0ZJTEVfQ0FQQUJJTElUSUVTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0NSWVBUTyBpcyBub3Qgc2V0CitDT05GSUdfQ1JZUFRPPXkKKyMgQ09ORklHX0NSWVBUT19TRVFJViBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fTUFOQUdFUiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fSE1BQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fWENCQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fTlVMTCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fTUQ0IGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19NRDUgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1NIQTEgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1NIQTI1NiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0hBNTEyIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19XUDUxMiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fVEdSMTkyIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19HRjEyOE1VTCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fRUNCIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DQkMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1BDQkMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0xSVyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fWFRTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DVFIgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0dDTSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ0NNIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DUllQVEQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0RFUyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fRkNSWVBUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19CTE9XRklTSCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fVFdPRklTSCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0VSUEVOVCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQUVTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DQVNUNSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ0FTVDYgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1RFQSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQVJDNCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fS0hBWkFEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19BTlVCSVMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1NFRUQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1NBTFNBMjAgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0RFRkxBVEUgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX01JQ0hBRUxfTUlDIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DUkMzMkMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NBTUVMTElBIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19BVVRIRU5DIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19MWk8gaXMgbm90IHNldAorQ09ORklHX0NSWVBUT19IVz15CisjIENPTkZJR19DUllQVE9fREVWX0hJRk5fNzk1WCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfQ0xPQ0sgaXMgbm90IHNldApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODV4eF9kZWZjb25maWcgYi9hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM4NXh4X2RlZmNvbmZpZwppbmRleCA5MGUzOGJhLi4yMDc1NzIyIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM4NXh4X2RlZmNvbmZpZworKysgYi9hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM4NXh4X2RlZmNvbmZpZwpAQCAtMSw3ICsxLDcgQEAKICMKICMgQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgbWFrZSBjb25maWc6IGRvbid0IGVkaXQKLSMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4yNC1yYzgKLSMgTW9uIEphbiAyOCAxMzoxMjowNyAyMDA4CisjIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMjUtcmM3CisjIE1vbiBNYXIgMzEgMTE6Mzc6MDggMjAwOAogIwogIyBDT05GSUdfUFBDNjQgaXMgbm90IHNldAogCkBAIC0xNyw2ICsxNyw3IEBACiBDT05GSUdfRTUwMD15CiBDT05GSUdfQk9PS0U9eQogQ09ORklHX0ZTTF9CT09LRT15CitDT05GSUdfRlNMX0VNQl9QRVJGTU9OPXkKICMgQ09ORklHX1BIWVNfNjRCSVQgaXMgbm90IHNldAogQ09ORklHX1NQRT15CiAjIENPTkZJR19QUENfTU1fU0xJQ0VTIGlzIG5vdCBzZXQKQEAgLTI5LDYgKzMwLDcgQEAKIENPTkZJR19HRU5FUklDX1RJTUVfVlNZU0NBTEw9eQogQ09ORklHX0dFTkVSSUNfQ0xPQ0tFVkVOVFM9eQogQ09ORklHX0dFTkVSSUNfSEFSRElSUVM9eQorIyBDT05GSUdfSEFWRV9TRVRVUF9QRVJfQ1BVX0FSRUEgaXMgbm90IHNldAogQ09ORklHX0lSUV9QRVJfQ1BVPXkKIENPTkZJR19SV1NFTV9YQ0hHQUREX0FMR09SSVRITT15CiBDT05GSUdfQVJDSF9IQVNfSUxPRzJfVTMyPXkKQEAgLTY3LDE3ICs2OSwyMSBAQAogQ09ORklHX0JTRF9QUk9DRVNTX0FDQ1Q9eQogIyBDT05GSUdfQlNEX1BST0NFU1NfQUNDVF9WMyBpcyBub3Qgc2V0CiAjIENPTkZJR19UQVNLU1RBVFMgaXMgbm90IHNldAotIyBDT05GSUdfVVNFUl9OUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19QSURfTlMgaXMgbm90IHNldAogQ09ORklHX0FVRElUPXkKICMgQ09ORklHX0FVRElUU1lTQ0FMTCBpcyBub3Qgc2V0CiBDT05GSUdfSUtDT05GSUc9eQogQ09ORklHX0lLQ09ORklHX1BST0M9eQogQ09ORklHX0xPR19CVUZfU0hJRlQ9MTQKICMgQ09ORklHX0NHUk9VUFMgaXMgbm90IHNldAorQ09ORklHX0dST1VQX1NDSEVEPXkKICMgQ09ORklHX0ZBSVJfR1JPVVBfU0NIRUQgaXMgbm90IHNldAorIyBDT05GSUdfUlRfR1JPVVBfU0NIRUQgaXMgbm90IHNldAorQ09ORklHX1VTRVJfU0NIRUQ9eQorIyBDT05GSUdfQ0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKIENPTkZJR19TWVNGU19ERVBSRUNBVEVEPXkKK0NPTkZJR19TWVNGU19ERVBSRUNBVEVEX1YyPXkKICMgQ09ORklHX1JFTEFZIGlzIG5vdCBzZXQKKyMgQ09ORklHX05BTUVTUEFDRVMgaXMgbm90IHNldAogQ09ORklHX0JMS19ERVZfSU5JVFJEPXkKIENPTkZJR19JTklUUkFNRlNfU09VUkNFPSIiCiAjIENPTkZJR19DQ19PUFRJTUlaRV9GT1JfU0laRSBpcyBub3Qgc2V0CkBAIC05MSwxMSArOTcsMTMgQEAKIENPTkZJR19QUklOVEs9eQogQ09ORklHX0JVRz15CiBDT05GSUdfRUxGX0NPUkU9eQorQ09ORklHX0NPTVBBVF9CUks9eQogQ09ORklHX0JBU0VfRlVMTD15CiBDT05GSUdfRlVURVg9eQogQ09ORklHX0FOT05fSU5PREVTPXkKIENPTkZJR19FUE9MTD15CiBDT05GSUdfU0lHTkFMRkQ9eQorQ09ORklHX1RJTUVSRkQ9eQogQ09ORklHX0VWRU5URkQ9eQogQ09ORklHX1NITUVNPXkKIENPTkZJR19WTV9FVkVOVF9DT1VOVEVSUz15CkBAIC0xMDMsNiArMTExLDEzIEBACiAjIENPTkZJR19TTEFCIGlzIG5vdCBzZXQKIENPTkZJR19TTFVCPXkKICMgQ09ORklHX1NMT0IgaXMgbm90IHNldAorIyBDT05GSUdfUFJPRklMSU5HIGlzIG5vdCBzZXQKKyMgQ09ORklHX01BUktFUlMgaXMgbm90IHNldAorQ09ORklHX0hBVkVfT1BST0ZJTEU9eQorIyBDT05GSUdfS1BST0JFUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9LUFJPQkVTPXkKK0NPTkZJR19IQVZFX0tSRVRQUk9CRVM9eQorQ09ORklHX1BST0NfUEFHRV9NT05JVE9SPXkKIENPTkZJR19TTEFCSU5GTz15CiBDT05GSUdfUlRfTVVURVhFUz15CiAjIENPTkZJR19USU5ZX1NITUVNIGlzIG5vdCBzZXQKQEAgLTEzMSwxMiArMTQ2LDEzIEBACiBDT05GSUdfREVGQVVMVF9DRlE9eQogIyBDT05GSUdfREVGQVVMVF9OT09QIGlzIG5vdCBzZXQKIENPTkZJR19ERUZBVUxUX0lPU0NIRUQ9ImNmcSIKK0NPTkZJR19DTEFTU0lDX1JDVT15CiAKICMKICMgUGxhdGZvcm0gc3VwcG9ydAogIwotIyBDT05GSUdfUFBDX01QQzUyeHggaXMgbm90IHNldAotIyBDT05GSUdfUFBDX01QQzUyMDAgaXMgbm90IHNldAorIyBDT05GSUdfUFBDX01QQzUxMnggaXMgbm90IHNldAorIyBDT05GSUdfUFBDX01QQzUxMjEgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0NFTEwgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0NFTExfTkFUSVZFIGlzIG5vdCBzZXQKICMgQ09ORklHX1BRMkFEUyBpcyBub3Qgc2V0CkBAIC0xODQsMTMgKzIwMCwxNyBAQAogIyBDT05GSUdfSFpfMzAwIGlzIG5vdCBzZXQKICMgQ09ORklHX0haXzEwMDAgaXMgbm90IHNldAogQ09ORklHX0haPTI1MAorIyBDT05GSUdfU0NIRURfSFJUSUNLIGlzIG5vdCBzZXQKIENPTkZJR19QUkVFTVBUX05PTkU9eQogIyBDT05GSUdfUFJFRU1QVF9WT0xVTlRBUlkgaXMgbm90IHNldAogIyBDT05GSUdfUFJFRU1QVCBpcyBub3Qgc2V0CiBDT05GSUdfQklORk1UX0VMRj15CiBDT05GSUdfQklORk1UX01JU0M9bQogQ09ORklHX01BVEhfRU1VTEFUSU9OPXkKKyMgQ09ORklHX0lPTU1VX0hFTFBFUiBpcyBub3Qgc2V0CiBDT05GSUdfQVJDSF9FTkFCTEVfTUVNT1JZX0hPVFBMVUc9eQorQ09ORklHX0FSQ0hfSEFTX1dBTEtfTUVNT1JZPXkKK0NPTkZJR19BUkNIX0VOQUJMRV9NRU1PUllfSE9UUkVNT1ZFPXkKIENPTkZJR19BUkNIX0ZMQVRNRU1fRU5BQkxFPXkKIENPTkZJR19BUkNIX1BPUFVMQVRFU19OT0RFX01BUD15CiBDT05GSUdfU0VMRUNUX01FTU9SWV9NT0RFTD15CkBAIC0yMDksMTEgKzIyOSw3IEBACiBDT05GSUdfUFJPQ19ERVZJQ0VUUkVFPXkKICMgQ09ORklHX0NNRExJTkVfQk9PTCBpcyBub3Qgc2V0CiAjIENPTkZJR19QTSBpcyBub3Qgc2V0Ci1DT05GSUdfU1VTUEVORF9VUF9QT1NTSUJMRT15Ci1DT05GSUdfSElCRVJOQVRJT05fVVBfUE9TU0lCTEU9eQogQ09ORklHX1NFQ0NPTVA9eQotQ09ORklHX1dBTlRfREVWSUNFX1RSRUU9eQotQ09ORklHX0RFVklDRV9UUkVFPSIiCiBDT05GSUdfSVNBX0RNQV9BUEk9eQogCiAjCkBAIC0yNjQsNiArMjgwLDcgQEAKIENPTkZJR19YRlJNX1VTRVI9eQogIyBDT05GSUdfWEZSTV9TVUJfUE9MSUNZIGlzIG5vdCBzZXQKICMgQ09ORklHX1hGUk1fTUlHUkFURSBpcyBub3Qgc2V0CisjIENPTkZJR19YRlJNX1NUQVRJU1RJQ1MgaXMgbm90IHNldAogQ09ORklHX05FVF9LRVk9bQogIyBDT05GSUdfTkVUX0tFWV9NSUdSQVRFIGlzIG5vdCBzZXQKIENPTkZJR19JTkVUPXkKQEAgLTM0Nyw2ICszNjQsNyBAQAogIwogIyBDT05GSUdfTkVUX1BLVEdFTiBpcyBub3Qgc2V0CiAjIENPTkZJR19IQU1SQURJTyBpcyBub3Qgc2V0CisjIENPTkZJR19DQU4gaXMgbm90IHNldAogIyBDT05GSUdfSVJEQSBpcyBub3Qgc2V0CiAjIENPTkZJR19CVCBpcyBub3Qgc2V0CiAjIENPTkZJR19BRl9SWFJQQyBpcyBub3Qgc2V0CkBAIC0zOTUsNyArNDEzLDcgQEAKIENPTkZJR19CTEtfREVWX1JBTT15CiBDT05GSUdfQkxLX0RFVl9SQU1fQ09VTlQ9MTYKIENPTkZJR19CTEtfREVWX1JBTV9TSVpFPTEzMTA3MgotQ09ORklHX0JMS19ERVZfUkFNX0JMT0NLU0laRT0xMDI0CisjIENPTkZJR19CTEtfREVWX1hJUCBpcyBub3Qgc2V0CiAjIENPTkZJR19DRFJPTV9QS1RDRFZEIGlzIG5vdCBzZXQKICMgQ09ORklHX0FUQV9PVkVSX0VUSCBpcyBub3Qgc2V0CiBDT05GSUdfTUlTQ19ERVZJQ0VTPXkKQEAgLTQwMyw2ICs0MjEsOCBAQAogIyBDT05GSUdfRUVQUk9NXzkzQ1g2IGlzIG5vdCBzZXQKICMgQ09ORklHX1NHSV9JT0M0IGlzIG5vdCBzZXQKICMgQ09ORklHX1RJRk1fQ09SRSBpcyBub3Qgc2V0CisjIENPTkZJR19FTkNMT1NVUkVfU0VSVklDRVMgaXMgbm90IHNldAorQ09ORklHX0hBVkVfSURFPXkKICMgQ09ORklHX0lERSBpcyBub3Qgc2V0CiAKICMKQEAgLTQ2OCw2ICs0ODgsNyBAQAogIyBDT05GSUdfU0NTSV9JUFMgaXMgbm90IHNldAogIyBDT05GSUdfU0NTSV9JTklUSU8gaXMgbm90IHNldAogIyBDT05GSUdfU0NTSV9JTklBMTAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDU0lfTVZTQVMgaXMgbm90IHNldAogIyBDT05GSUdfU0NTSV9TVEVYIGlzIG5vdCBzZXQKICMgQ09ORklHX1NDU0lfU1lNNTNDOFhYXzIgaXMgbm90IHNldAogIyBDT05GSUdfU0NTSV9JUFIgaXMgbm90IHNldApAQCAtNTIyLDYgKzU0Myw3IEBACiAjIENPTkZJR19QQVRBX01QSUlYIGlzIG5vdCBzZXQKICMgQ09ORklHX1BBVEFfT0xEUElJWCBpcyBub3Qgc2V0CiAjIENPTkZJR19QQVRBX05FVENFTEwgaXMgbm90IHNldAorIyBDT05GSUdfUEFUQV9OSU5KQTMyIGlzIG5vdCBzZXQKICMgQ09ORklHX1BBVEFfTlM4NzQxMCBpcyBub3Qgc2V0CiAjIENPTkZJR19QQVRBX05TODc0MTUgaXMgbm90IHNldAogIyBDT05GSUdfUEFUQV9PUFRJIGlzIG5vdCBzZXQKQEAgLTU3MCw2ICs1OTIsNyBAQAogIyBDT05GSUdfU01TQ19QSFkgaXMgbm90IHNldAogIyBDT05GSUdfQlJPQURDT01fUEhZIGlzIG5vdCBzZXQKICMgQ09ORklHX0lDUExVU19QSFkgaXMgbm90IHNldAorIyBDT05GSUdfUkVBTFRFS19QSFkgaXMgbm90IHNldAogIyBDT05GSUdfRklYRURfUEhZIGlzIG5vdCBzZXQKICMgQ09ORklHX01ESU9fQklUQkFORyBpcyBub3Qgc2V0CiBDT05GSUdfTkVUX0VUSEVSTkVUPXkKQEAgLTU5Miw3ICs2MTUsOSBAQAogIyBDT05GSUdfREwySyBpcyBub3Qgc2V0CiAjIENPTkZJR19FMTAwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19FMTAwMEUgaXMgbm90IHNldAorIyBDT05GSUdfRTEwMDBFX0VOQUJMRUQgaXMgbm90IHNldAogIyBDT05GSUdfSVAxMDAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lHQiBpcyBub3Qgc2V0CiAjIENPTkZJR19OUzgzODIwIGlzIG5vdCBzZXQKICMgQ09ORklHX0hBTUFDSEkgaXMgbm90IHNldAogIyBDT05GSUdfWUVMTE9XRklOIGlzIG5vdCBzZXQKQEAgLTYyMCw2ICs2NDUsNyBAQAogIyBDT05GSUdfTklVIGlzIG5vdCBzZXQKICMgQ09ORklHX01MWDRfQ09SRSBpcyBub3Qgc2V0CiAjIENPTkZJR19URUhVVEkgaXMgbm90IHNldAorIyBDT05GSUdfQk5YMlggaXMgbm90IHNldAogIyBDT05GSUdfVFIgaXMgbm90IHNldAogCiAjCkBAIC02NDIsNyArNjY4LDYgQEAKICMgQ09ORklHX1BQUCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTElQIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9GQyBpcyBub3Qgc2V0Ci0jIENPTkZJR19TSEFQRVIgaXMgbm90IHNldAogIyBDT05GSUdfTkVUQ09OU09MRSBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRQT0xMIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9QT0xMX0NPTlRST0xMRVIgaXMgbm90IHNldApAQCAtNjkzLDYgKzcxOCw3IEBACiBDT05GSUdfSFdfQ09OU09MRT15CiAjIENPTkZJR19WVF9IV19DT05TT0xFX0JJTkRJTkcgaXMgbm90IHNldAogIyBDT05GSUdfU0VSSUFMX05PTlNUQU5EQVJEIGlzIG5vdCBzZXQKKyMgQ09ORklHX05PWk9NSSBpcyBub3Qgc2V0CiAKICMKICMgU2VyaWFsIGRyaXZlcnMKQEAgLTcyNCw4ICs3NTAsNyBAQAogIyBDT05GSUdfSVBNSV9IQU5ETEVSIGlzIG5vdCBzZXQKICMgQ09ORklHX0hXX1JBTkRPTSBpcyBub3Qgc2V0CiBDT05GSUdfTlZSQU09eQotQ09ORklHX0dFTl9SVEM9eQotQ09ORklHX0dFTl9SVENfWD15CisjIENPTkZJR19HRU5fUlRDIGlzIG5vdCBzZXQKICMgQ09ORklHX1IzOTY0IGlzIG5vdCBzZXQKICMgQ09ORklHX0FQUExJQ09NIGlzIG5vdCBzZXQKICMgQ09ORklHX1JBV19EUklWRVIgaXMgbm90IHNldApAQCAtNzczLDE0ICs3OTgsMTIgQEAKICMKICMgTWlzY2VsbGFuZW91cyBJMkMgQ2hpcCBzdXBwb3J0CiAjCi0jIENPTkZJR19TRU5TT1JTX0RTMTMzNyBpcyBub3Qgc2V0Ci0jIENPTkZJR19TRU5TT1JTX0RTMTM3NCBpcyBub3Qgc2V0CiAjIENPTkZJR19EUzE2ODIgaXMgbm90IHNldAogQ09ORklHX1NFTlNPUlNfRUVQUk9NPXkKICMgQ09ORklHX1NFTlNPUlNfUENGODU3NCBpcyBub3Qgc2V0Ci0jIENPTkZJR19TRU5TT1JTX1BDQTk1MzkgaXMgbm90IHNldAorIyBDT05GSUdfUENGODU3NSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1BDRjg1OTEgaXMgbm90IHNldAotIyBDT05GSUdfU0VOU09SU19NNDFUMDAgaXMgbm90IHNldAorIyBDT05GSUdfVFBTNjUwMTAgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19NQVg2ODc1IGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVFNMMjU1MCBpcyBub3Qgc2V0CiAjIENPTkZJR19JMkNfREVCVUdfQ09SRSBpcyBub3Qgc2V0CkBAIC03OTYsNiArODE5LDcgQEAKICMgQ09ORklHX1cxIGlzIG5vdCBzZXQKICMgQ09ORklHX1BPV0VSX1NVUFBMWSBpcyBub3Qgc2V0CiAjIENPTkZJR19IV01PTiBpcyBub3Qgc2V0CisjIENPTkZJR19USEVSTUFMIGlzIG5vdCBzZXQKICMgQ09ORklHX1dBVENIRE9HIGlzIG5vdCBzZXQKIAogIwpAQCAtODIwLDYgKzg0NCw4IEBACiAjCiAjIFN1cHBvcnRlZCBTQUE3MTQ2IGJhc2VkIFBDSSBBZGFwdGVycwogIworIyBDT05GSUdfVFRQQ0lfRUVQUk9NIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RWQl9CVURHRVRfQ09SRSBpcyBub3Qgc2V0CiAKICMKICMgU3VwcG9ydGVkIFVTQiBBZGFwdGVycwpAQCAtOTA1LDExICs5MzEsMTMgQEAKICMgQ09ORklHX0RWQl9QTEwgaXMgbm90IHNldAogIyBDT05GSUdfRFZCX1REQTgyNlggaXMgbm90IHNldAogIyBDT05GSUdfRFZCX1REQTgyN1ggaXMgbm90IHNldAorIyBDT05GSUdfRFZCX1REQTE4MjcxIGlzIG5vdCBzZXQKICMgQ09ORklHX0RWQl9UVU5FUl9RVDEwMTAgaXMgbm90IHNldAogIyBDT05GSUdfRFZCX1RVTkVSX01UMjA2MCBpcyBub3Qgc2V0CiAjIENPTkZJR19EVkJfVFVORVJfTVQyMjY2IGlzIG5vdCBzZXQKICMgQ09ORklHX0RWQl9UVU5FUl9NVDIxMzEgaXMgbm90IHNldAogIyBDT05GSUdfRFZCX1RVTkVSX0RJQjAwNzAgaXMgbm90IHNldAorIyBDT05GSUdfRFZCX1RVTkVSX1hDNTAwMCBpcyBub3Qgc2V0CiAKICMKICMgTWlzY2VsbGFuZW91cyBkZXZpY2VzCkBAIC05ODcsNiArMTAxNSw3IEBACiAjIENPTkZJR19TTkRfQlQ4N1ggaXMgbm90IHNldAogIyBDT05GSUdfU05EX0NBMDEwNiBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfQ01JUENJIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NORF9PWFlHRU4gaXMgbm90IHNldAogIyBDT05GSUdfU05EX0NTNDI4MSBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfQ1M0NlhYIGlzIG5vdCBzZXQKICMgQ09ORklHX1NORF9DUzU1MzAgaXMgbm90IHNldApAQCAtMTAxMiw2ICsxMDQxLDcgQEAKICMgQ09ORklHX1NORF9IREFfSU5URUwgaXMgbm90IHNldAogIyBDT05GSUdfU05EX0hEU1AgaXMgbm90IHNldAogIyBDT05GSUdfU05EX0hEU1BNIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NORF9ISUZJRVIgaXMgbm90IHNldAogIyBDT05GSUdfU05EX0lDRTE3MTIgaXMgbm90IHNldAogIyBDT05GSUdfU05EX0lDRTE3MjQgaXMgbm90IHNldAogQ09ORklHX1NORF9JTlRFTDhYMD15CkBAIC0xMDI5LDYgKzEwNTksNyBAQAogIyBDT05GSUdfU05EX1RSSURFTlQgaXMgbm90IHNldAogIyBDT05GSUdfU05EX1ZJQTgyWFggaXMgbm90IHNldAogIyBDT05GSUdfU05EX1ZJQTgyWFhfTU9ERU0gaXMgbm90IHNldAorIyBDT05GSUdfU05EX1ZJUlRVT1NPIGlzIG5vdCBzZXQKICMgQ09ORklHX1NORF9WWDIyMiBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfWU1GUENJIGlzIG5vdCBzZXQKICMgQ09ORklHX1NORF9BQzk3X1BPV0VSX1NBVkUgaXMgbm90IHNldApAQCAtMTA1OCw2ICsxMDg5LDEwIEBACiAjCiAKICMKKyMgQUxTQSBTb0MgYXVkaW8gZm9yIEZyZWVzY2FsZSBTT0NzCisjCisKKyMKICMgT3BlbiBTb3VuZCBTeXN0ZW0KICMKICMgQ09ORklHX1NPVU5EX1BSSU1FIGlzIG5vdCBzZXQKQEAgLTEwODAsNiArMTExNSw3IEBACiBDT05GSUdfVVNCX0FSQ0hfSEFTX0VIQ0k9eQogQ09ORklHX1VTQj15CiAjIENPTkZJR19VU0JfREVCVUcgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX0FOTk9VTkNFX05FV19ERVZJQ0VTIGlzIG5vdCBzZXQKIAogIwogIyBNaXNjZWxsYW5lb3VzIFVTQiBvcHRpb25zCkBAIC0xMDkzLDkgKzExMjksMTAgQEAKICMgVVNCIEhvc3QgQ29udHJvbGxlciBEcml2ZXJzCiAjCiBDT05GSUdfVVNCX0VIQ0lfSENEPXkKLSMgQ09ORklHX1VTQl9FSENJX1NQTElUX0lTTyBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfRUhDSV9ST09UX0hVQl9UVCBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfRUhDSV9UVF9ORVdTQ0hFRCBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfRUhDSV9GU0wgaXMgbm90IHNldAorQ09ORklHX1VTQl9FSENJX0hDRF9QUENfT0Y9eQogIyBDT05GSUdfVVNCX0lTUDExNlhfSENEIGlzIG5vdCBzZXQKIENPTkZJR19VU0JfT0hDSV9IQ0Q9eQogQ09ORklHX1VTQl9PSENJX0hDRF9QUENfT0Y9eQpAQCAtMTE0NiwxMCArMTE4Myw2IEBACiAjCiAjIFVTQiBwb3J0IGRyaXZlcnMKICMKLQotIwotIyBVU0IgU2VyaWFsIENvbnZlcnRlciBzdXBwb3J0Ci0jCiAjIENPTkZJR19VU0JfU0VSSUFMIGlzIG5vdCBzZXQKIAogIwpAQCAtMTE3NSwxNiArMTIwOCw5IEBACiAjIENPTkZJR19VU0JfVFJBTkNFVklCUkFUT1IgaXMgbm90IHNldAogIyBDT05GSUdfVVNCX0lPV0FSUklPUiBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfVEVTVCBpcyBub3Qgc2V0Ci0KLSMKLSMgVVNCIERTTCBtb2RlbSBzdXBwb3J0Ci0jCi0KLSMKLSMgVVNCIEdhZGdldCBTdXBwb3J0Ci0jCiAjIENPTkZJR19VU0JfR0FER0VUIGlzIG5vdCBzZXQKICMgQ09ORklHX01NQyBpcyBub3Qgc2V0CisjIENPTkZJR19NRU1TVElDSyBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVdfTEVEUyBpcyBub3Qgc2V0CiAjIENPTkZJR19JTkZJTklCQU5EIGlzIG5vdCBzZXQKICMgQ09ORklHX0VEQUMgaXMgbm90IHNldApAQCAtMTIxNiw2ICsxMjQyLDcgQEAKICMgQ09ORklHX1JUQ19EUlZfUENGODU2MyBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfRFJWX1BDRjg1ODMgaXMgbm90IHNldAogIyBDT05GSUdfUlRDX0RSVl9NNDFUODAgaXMgbm90IHNldAorIyBDT05GSUdfUlRDX0RSVl9TMzUzOTBBIGlzIG5vdCBzZXQKIAogIwogIyBTUEkgUlRDIGRyaXZlcnMKQEAgLTEyMjUsOSArMTI1MiwxMCBAQAogIyBQbGF0Zm9ybSBSVEMgZHJpdmVycwogIwogQ09ORklHX1JUQ19EUlZfQ01PUz15CisjIENPTkZJR19SVENfRFJWX0RTMTUxMSBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfRFJWX0RTMTU1MyBpcyBub3Qgc2V0Ci0jIENPTkZJR19SVENfRFJWX1NUSzE3VEE4IGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfRFMxNzQyIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JUQ19EUlZfU1RLMTdUQTggaXMgbm90IHNldAogIyBDT05GSUdfUlRDX0RSVl9NNDhUODYgaXMgbm90IHNldAogIyBDT05GSUdfUlRDX0RSVl9NNDhUNTkgaXMgbm90IHNldAogIyBDT05GSUdfUlRDX0RSVl9WMzAyMCBpcyBub3Qgc2V0CkBAIC0xMjM1LDYgKzEyNjMsNyBAQAogIwogIyBvbi1DUFUgUlRDIGRyaXZlcnMKICMKKyMgQ09ORklHX0RNQURFVklDRVMgaXMgbm90IHNldAogCiAjCiAjIFVzZXJzcGFjZSBJL08KQEAgLTEyNjAsMTIgKzEyODksMTAgQEAKICMgQ09ORklHX1hGU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19HRlMyX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX09DRlMyX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX01JTklYX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1JPTUZTX0ZTIGlzIG5vdCBzZXQKK0NPTkZJR19ETk9USUZZPXkKIENPTkZJR19JTk9USUZZPXkKIENPTkZJR19JTk9USUZZX1VTRVI9eQogIyBDT05GSUdfUVVPVEEgaXMgbm90IHNldAotQ09ORklHX0ROT1RJRlk9eQogIyBDT05GSUdfQVVUT0ZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0FVVE9GUzRfRlMgaXMgbm90IHNldAogIyBDT05GSUdfRlVTRV9GUyBpcyBub3Qgc2V0CkBAIC0xMzE3LDggKzEzNDQsMTAgQEAKIENPTkZJR19FRlNfRlM9bQogQ09ORklHX0NSQU1GUz15CiBDT05GSUdfVlhGU19GUz1tCisjIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0CiBDT05GSUdfSFBGU19GUz1tCiBDT05GSUdfUU5YNEZTX0ZTPW0KKyMgQ09ORklHX1JPTUZTX0ZTIGlzIG5vdCBzZXQKIENPTkZJR19TWVNWX0ZTPW0KIENPTkZJR19VRlNfRlM9bQogIyBDT05GSUdfVUZTX0ZTX1dSSVRFIGlzIG5vdCBzZXQKQEAgLTE0MjYsNyArMTQ1NSw2IEBACiBDT05GSUdfSEFTX0lPTUVNPXkKIENPTkZJR19IQVNfSU9QT1JUPXkKIENPTkZJR19IQVNfRE1BPXkKLSMgQ09ORklHX0lOU1RSVU1FTlRBVElPTiBpcyBub3Qgc2V0CiAKICMKICMgS2VybmVsIGhhY2tpbmcKQEAgLTE0NDUsNiArMTQ3Myw3IEBACiAjIENPTkZJR19TQ0hFRFNUQVRTIGlzIG5vdCBzZXQKICMgQ09ORklHX1RJTUVSX1NUQVRTIGlzIG5vdCBzZXQKICMgQ09ORklHX1NMVUJfREVCVUdfT04gaXMgbm90IHNldAorIyBDT05GSUdfU0xVQl9TVEFUUyBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19SVF9NVVRFWEVTIGlzIG5vdCBzZXQKICMgQ09ORklHX1JUX01VVEVYX1RFU1RFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19TUElOTE9DSyBpcyBub3Qgc2V0CkBAIC0xNDU4LDkgKzE0ODcsOSBAQAogIyBDT05GSUdfREVCVUdfVk0gaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfTElTVCBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19TRyBpcyBub3Qgc2V0Ci1DT05GSUdfRk9SQ0VEX0lOTElOSU5HPXkKICMgQ09ORklHX0JPT1RfUFJJTlRLX0RFTEFZIGlzIG5vdCBzZXQKICMgQ09ORklHX1JDVV9UT1JUVVJFX1RFU1QgaXMgbm90IHNldAorIyBDT05GSUdfQkFDS1RSQUNFX1NFTEZfVEVTVCBpcyBub3Qgc2V0CiAjIENPTkZJR19GQVVMVF9JTkpFQ1RJT04gaXMgbm90IHNldAogIyBDT05GSUdfU0FNUExFUyBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19TVEFDS09WRVJGTE9XIGlzIG5vdCBzZXQKQEAgLTE0ODAsNiArMTUwOSw3IEBACiBDT05GSUdfQ1JZUFRPPXkKIENPTkZJR19DUllQVE9fQUxHQVBJPXkKIENPTkZJR19DUllQVE9fQkxLQ0lQSEVSPXkKKyMgQ09ORklHX0NSWVBUT19TRVFJViBpcyBub3Qgc2V0CiBDT05GSUdfQ1JZUFRPX0hBU0g9eQogQ09ORklHX0NSWVBUT19NQU5BR0VSPXkKIENPTkZJR19DUllQVE9fSE1BQz15CkBAIC0xNDk4LDYgKzE1MjgsOSBAQAogQ09ORklHX0NSWVBUT19QQ0JDPW0KICMgQ09ORklHX0NSWVBUT19MUlcgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX1hUUyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ1RSIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19HQ00gaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NDTSBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fQ1JZUFREIGlzIG5vdCBzZXQKIENPTkZJR19DUllQVE9fREVTPXkKICMgQ09ORklHX0NSWVBUT19GQ1JZUFQgaXMgbm90IHNldApAQCAtMTUxMiwxMiArMTU0NSwxNSBAQAogIyBDT05GSUdfQ1JZUFRPX0tIQVpBRCBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fQU5VQklTIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19TRUVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19TQUxTQTIwIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19ERUZMQVRFIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19NSUNIQUVMX01JQyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fQ1JDMzJDIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19DQU1FTExJQSBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fVEVTVCBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fQVVUSEVOQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fTFpPIGlzIG5vdCBzZXQKIENPTkZJR19DUllQVE9fSFc9eQorIyBDT05GSUdfQ1JZUFRPX0RFVl9ISUZOXzc5NVggaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0NMT0NLIGlzIG5vdCBzZXQKIENPTkZJR19QUENfTElCX1JIRUFQPXkKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9jb25maWdzL21wYzg2MTBfaHBjZF9kZWZjb25maWcgYi9hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM4NjEwX2hwY2RfZGVmY29uZmlnCmluZGV4IDI1MDBlZjQuLjkyNzBhZmUgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jb25maWdzL21wYzg2MTBfaHBjZF9kZWZjb25maWcKKysrIGIvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODYxMF9ocGNkX2RlZmNvbmZpZwpAQCAtMSw3ICsxLDcgQEAKICMKICMgQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgbWFrZSBjb25maWc6IGRvbid0IGVkaXQKLSMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4yNC1yYzQKLSMgVGh1IERlYyAgNiAxNjo0ODo1NiAyMDA3CisjIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMjUtcmM2CisjIE1vbiBNYXIgMjQgMDg6NDg6MzMgMjAwOAogIwogIyBDT05GSUdfUFBDNjQgaXMgbm90IHNldAogCkBAIC0yOSw2ICsyOSw3IEBACiBDT05GSUdfR0VORVJJQ19USU1FX1ZTWVNDQUxMPXkKIENPTkZJR19HRU5FUklDX0NMT0NLRVZFTlRTPXkKIENPTkZJR19HRU5FUklDX0hBUkRJUlFTPXkKKyMgQ09ORklHX0hBVkVfU0VUVVBfUEVSX0NQVV9BUkVBIGlzIG5vdCBzZXQKIENPTkZJR19JUlFfUEVSX0NQVT15CiBDT05GSUdfUldTRU1fWENIR0FERF9BTEdPUklUSE09eQogQ09ORklHX0FSQ0hfSEFTX0lMT0cyX1UzMj15CkBAIC02NSwxNiArNjYsMjAgQEAKICMgQ09ORklHX1BPU0lYX01RVUVVRSBpcyBub3Qgc2V0CiAjIENPTkZJR19CU0RfUFJPQ0VTU19BQ0NUIGlzIG5vdCBzZXQKICMgQ09ORklHX1RBU0tTVEFUUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19VU0VSX05TIGlzIG5vdCBzZXQKLSMgQ09ORklHX1BJRF9OUyBpcyBub3Qgc2V0CiAjIENPTkZJR19BVURJVCBpcyBub3Qgc2V0CiBDT05GSUdfSUtDT05GSUc9eQogQ09ORklHX0lLQ09ORklHX1BST0M9eQogQ09ORklHX0xPR19CVUZfU0hJRlQ9MTQKICMgQ09ORklHX0NHUk9VUFMgaXMgbm90IHNldAorQ09ORklHX0dST1VQX1NDSEVEPXkKICMgQ09ORklHX0ZBSVJfR1JPVVBfU0NIRUQgaXMgbm90IHNldAorIyBDT05GSUdfUlRfR1JPVVBfU0NIRUQgaXMgbm90IHNldAorQ09ORklHX1VTRVJfU0NIRUQ9eQorIyBDT05GSUdfQ0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKIENPTkZJR19TWVNGU19ERVBSRUNBVEVEPXkKK0NPTkZJR19TWVNGU19ERVBSRUNBVEVEX1YyPXkKICMgQ09ORklHX1JFTEFZIGlzIG5vdCBzZXQKKyMgQ09ORklHX05BTUVTUEFDRVMgaXMgbm90IHNldAogQ09ORklHX0JMS19ERVZfSU5JVFJEPXkKIENPTkZJR19JTklUUkFNRlNfU09VUkNFPSIiCiAjIENPTkZJR19DQ19PUFRJTUlaRV9GT1JfU0laRSBpcyBub3Qgc2V0CkBAIC04OCwxMSArOTMsMTMgQEAKIENPTkZJR19QUklOVEs9eQogQ09ORklHX0JVRz15CiAjIENPTkZJR19FTEZfQ09SRSBpcyBub3Qgc2V0CitDT05GSUdfQ09NUEFUX0JSSz15CiBDT05GSUdfQkFTRV9GVUxMPXkKIENPTkZJR19GVVRFWD15CiBDT05GSUdfQU5PTl9JTk9ERVM9eQogQ09ORklHX0VQT0xMPXkKIENPTkZJR19TSUdOQUxGRD15CitDT05GSUdfVElNRVJGRD15CiBDT05GSUdfRVZFTlRGRD15CiBDT05GSUdfU0hNRU09eQogQ09ORklHX1ZNX0VWRU5UX0NPVU5URVJTPXkKQEAgLTEwMCw2ICsxMDcsMTMgQEAKICMgQ09ORklHX1NMQUIgaXMgbm90IHNldAogQ09ORklHX1NMVUI9eQogIyBDT05GSUdfU0xPQiBpcyBub3Qgc2V0CisjIENPTkZJR19QUk9GSUxJTkcgaXMgbm90IHNldAorIyBDT05GSUdfTUFSS0VSUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9PUFJPRklMRT15CitDT05GSUdfSEFWRV9LUFJPQkVTPXkKK0NPTkZJR19IQVZFX0tSRVRQUk9CRVM9eQorQ09ORklHX1BST0NfUEFHRV9NT05JVE9SPXkKK0NPTkZJR19TTEFCSU5GTz15CiBDT05GSUdfUlRfTVVURVhFUz15CiAjIENPTkZJR19USU5ZX1NITUVNIGlzIG5vdCBzZXQKIENPTkZJR19CQVNFX1NNQUxMPTAKQEAgLTEyMiw2ICsxMzYsNyBAQAogIyBDT05GSUdfREVGQVVMVF9DRlEgaXMgbm90IHNldAogIyBDT05GSUdfREVGQVVMVF9OT09QIGlzIG5vdCBzZXQKIENPTkZJR19ERUZBVUxUX0lPU0NIRUQ9ImRlYWRsaW5lIgorQ09ORklHX0NMQVNTSUNfUkNVPXkKIAogIwogIyBQbGF0Zm9ybSBzdXBwb3J0CkBAIC0xMzAsMTQgKzE0NSwxNSBAQAogIyBDT05GSUdfUFBDXzgyeHggaXMgbm90IHNldAogIyBDT05GSUdfUFBDXzgzeHggaXMgbm90IHNldAogQ09ORklHX1BQQ184Nnh4PXkKLSMgQ09ORklHX1BQQ19NUEM1Mnh4IGlzIG5vdCBzZXQKLSMgQ09ORklHX1BQQ19NUEM1MjAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ19NUEM1MTJ4IGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ19NUEM1MTIxIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19DRUxMIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19DRUxMX05BVElWRSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUTJBRFMgaXMgbm90IHNldAogIyBDT05GSUdfTVBDODY0MV9IUENOIGlzIG5vdCBzZXQKIENPTkZJR19NUEM4NjEwX0hQQ0Q9eQogQ09ORklHX01QQzg2MTA9eQorIyBDT05GSUdfSVBJQyBpcyBub3Qgc2V0CiBDT05GSUdfTVBJQz15CiAjIENPTkZJR19NUElDX1dFSVJEIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19JODI1OSBpcyBub3Qgc2V0CkBAIC0xNDgsNyArMTY0LDYgQEAKICMgQ09ORklHX1BQQ19JTkRJUkVDVF9JTyBpcyBub3Qgc2V0CiAjIENPTkZJR19HRU5FUklDX0lPTUFQIGlzIG5vdCBzZXQKICMgQ09ORklHX0NQVV9GUkVRIGlzIG5vdCBzZXQKLSMgQ09ORklHX0NQTTIgaXMgbm90IHNldAogIyBDT05GSUdfRlNMX1VMSTE1NzUgaXMgbm90IHNldAogCiAjCkBAIC0xNjQsMTIgKzE3OSwxNiBAQAogIyBDT05GSUdfSFpfMzAwIGlzIG5vdCBzZXQKIENPTkZJR19IWl8xMDAwPXkKIENPTkZJR19IWj0xMDAwCisjIENPTkZJR19TQ0hFRF9IUlRJQ0sgaXMgbm90IHNldAogQ09ORklHX1BSRUVNUFRfTk9ORT15CiAjIENPTkZJR19QUkVFTVBUX1ZPTFVOVEFSWSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUkVFTVBUIGlzIG5vdCBzZXQKIENPTkZJR19CSU5GTVRfRUxGPXkKICMgQ09ORklHX0JJTkZNVF9NSVNDIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lPTU1VX0hFTFBFUiBpcyBub3Qgc2V0CiBDT05GSUdfQVJDSF9FTkFCTEVfTUVNT1JZX0hPVFBMVUc9eQorQ09ORklHX0FSQ0hfSEFTX1dBTEtfTUVNT1JZPXkKK0NPTkZJR19BUkNIX0VOQUJMRV9NRU1PUllfSE9UUkVNT1ZFPXkKIENPTkZJR19BUkNIX0ZMQVRNRU1fRU5BQkxFPXkKIENPTkZJR19BUkNIX1BPUFVMQVRFU19OT0RFX01BUD15CiBDT05GSUdfU0VMRUNUX01FTU9SWV9NT0RFTD15CkBAIC0xODgsMTAgKzIwNyw3IEBACiBDT05GSUdfUFJPQ19ERVZJQ0VUUkVFPXkKICMgQ09ORklHX0NNRExJTkVfQk9PTCBpcyBub3Qgc2V0CiAjIENPTkZJR19QTSBpcyBub3Qgc2V0Ci1DT05GSUdfU1VTUEVORF9VUF9QT1NTSUJMRT15Ci1DT05GSUdfSElCRVJOQVRJT05fVVBfUE9TU0lCTEU9eQogIyBDT05GSUdfU0VDQ09NUCBpcyBub3Qgc2V0Ci0jIENPTkZJR19XQU5UX0RFVklDRV9UUkVFIGlzIG5vdCBzZXQKIENPTkZJR19JU0FfRE1BX0FQST15CiAKICMKQEAgLTI0Myw2ICsyNTksNyBAQAogQ09ORklHX1hGUk1fVVNFUj15CiAjIENPTkZJR19YRlJNX1NVQl9QT0xJQ1kgaXMgbm90IHNldAogIyBDT05GSUdfWEZSTV9NSUdSQVRFIGlzIG5vdCBzZXQKKyMgQ09ORklHX1hGUk1fU1RBVElTVElDUyBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRfS0VZIGlzIG5vdCBzZXQKIENPTkZJR19JTkVUPXkKICMgQ09ORklHX0lQX01VTFRJQ0FTVCBpcyBub3Qgc2V0CkBAIC0zMTEsNiArMzI4LDcgQEAKICMKICMgQ09ORklHX05FVF9QS1RHRU4gaXMgbm90IHNldAogIyBDT05GSUdfSEFNUkFESU8gaXMgbm90IHNldAorIyBDT05GSUdfQ0FOIGlzIG5vdCBzZXQKICMgQ09ORklHX0lSREEgaXMgbm90IHNldAogIyBDT05GSUdfQlQgaXMgbm90IHNldAogIyBDT05GSUdfQUZfUlhSUEMgaXMgbm90IHNldApAQCAtMzU3LDcgKzM3NSw3IEBACiBDT05GSUdfQkxLX0RFVl9SQU09eQogQ09ORklHX0JMS19ERVZfUkFNX0NPVU5UPTE2CiBDT05GSUdfQkxLX0RFVl9SQU1fU0laRT0xMzEwNzIKLUNPTkZJR19CTEtfREVWX1JBTV9CTE9DS1NJWkU9MTAyNAorIyBDT05GSUdfQkxLX0RFVl9YSVAgaXMgbm90IHNldAogIyBDT05GSUdfQ0RST01fUEtUQ0RWRCBpcyBub3Qgc2V0CiAjIENPTkZJR19BVEFfT1ZFUl9FVEggaXMgbm90IHNldAogQ09ORklHX01JU0NfREVWSUNFUz15CkBAIC0zNjUsNiArMzgzLDggQEAKICMgQ09ORklHX0VFUFJPTV85M0NYNiBpcyBub3Qgc2V0CiAjIENPTkZJR19TR0lfSU9DNCBpcyBub3Qgc2V0CiAjIENPTkZJR19USUZNX0NPUkUgaXMgbm90IHNldAorIyBDT05GSUdfRU5DTE9TVVJFX1NFUlZJQ0VTIGlzIG5vdCBzZXQKK0NPTkZJR19IQVZFX0lERT15CiBDT05GSUdfSURFPXkKIENPTkZJR19JREVfTUFYX0hXSUZTPTQKICMgQ09ORklHX0JMS19ERVZfSURFIGlzIG5vdCBzZXQKQEAgLTQzMiw2ICs0NTIsNyBAQAogIyBDT05GSUdfU0NTSV9JUFMgaXMgbm90IHNldAogIyBDT05GSUdfU0NTSV9JTklUSU8gaXMgbm90IHNldAogIyBDT05GSUdfU0NTSV9JTklBMTAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDU0lfTVZTQVMgaXMgbm90IHNldAogIyBDT05GSUdfU0NTSV9TVEVYIGlzIG5vdCBzZXQKICMgQ09ORklHX1NDU0lfU1lNNTNDOFhYXzIgaXMgbm90IHNldAogIyBDT05GSUdfU0NTSV9JUFIgaXMgbm90IHNldApAQCAtNDYyLDYgKzQ4Myw3IEBACiAjIENPTkZJR19TQVRBX1ZJQSBpcyBub3Qgc2V0CiAjIENPTkZJR19TQVRBX1ZJVEVTU0UgaXMgbm90IHNldAogIyBDT05GSUdfU0FUQV9JTklDMTYyWCBpcyBub3Qgc2V0CisjIENPTkZJR19TQVRBX0ZTTCBpcyBub3Qgc2V0CiBDT05GSUdfUEFUQV9BTEk9eQogIyBDT05GSUdfUEFUQV9BTUQgaXMgbm90IHNldAogIyBDT05GSUdfUEFUQV9BUlRPUCBpcyBub3Qgc2V0CkBAIC00ODUsNiArNTA3LDcgQEAKICMgQ09ORklHX1BBVEFfTVBJSVggaXMgbm90IHNldAogIyBDT05GSUdfUEFUQV9PTERQSUlYIGlzIG5vdCBzZXQKICMgQ09ORklHX1BBVEFfTkVUQ0VMTCBpcyBub3Qgc2V0CisjIENPTkZJR19QQVRBX05JTkpBMzIgaXMgbm90IHNldAogIyBDT05GSUdfUEFUQV9OUzg3NDEwIGlzIG5vdCBzZXQKICMgQ09ORklHX1BBVEFfTlM4NzQxNSBpcyBub3Qgc2V0CiAjIENPTkZJR19QQVRBX09QVEkgaXMgbm90IHNldApAQCAtNTE4LDcgKzU0MSw2IEBACiAjIENPTkZJR19FUVVBTElaRVIgaXMgbm90IHNldAogIyBDT05GSUdfVFVOIGlzIG5vdCBzZXQKICMgQ09ORklHX1ZFVEggaXMgbm90IHNldAotIyBDT05GSUdfSVAxMDAwIGlzIG5vdCBzZXQKICMgQ09ORklHX0FSQ05FVCBpcyBub3Qgc2V0CiBDT05GSUdfUEhZTElCPXkKIApAQCAtNTM0LDYgKzU1Niw3IEBACiAjIENPTkZJR19TTVNDX1BIWSBpcyBub3Qgc2V0CiAjIENPTkZJR19CUk9BRENPTV9QSFkgaXMgbm90IHNldAogIyBDT05GSUdfSUNQTFVTX1BIWSBpcyBub3Qgc2V0CisjIENPTkZJR19SRUFMVEVLX1BIWSBpcyBub3Qgc2V0CiAjIENPTkZJR19GSVhFRF9QSFkgaXMgbm90IHNldAogIyBDT05GSUdfTURJT19CSVRCQU5HIGlzIG5vdCBzZXQKIENPTkZJR19ORVRfRVRIRVJORVQ9eQpAQCAtNTc0LDYgKzU5Nyw3IEBACiAjIENPTkZJR184MTM5VE9PX1RVTkVfVFdJU1RFUiBpcyBub3Qgc2V0CiAjIENPTkZJR184MTM5VE9PXzgxMjkgaXMgbm90IHNldAogIyBDT05GSUdfODEzOV9PTERfUlhfUkVTRVQgaXMgbm90IHNldAorIyBDT05GSUdfUjYwNDAgaXMgbm90IHNldAogIyBDT05GSUdfU0lTOTAwIGlzIG5vdCBzZXQKICMgQ09ORklHX0VQSUMxMDAgaXMgbm90IHNldAogIyBDT05GSUdfU1VOREFOQ0UgaXMgbm90IHNldApAQCAtNTg1LDYgKzYwOSw5IEBACiAjIENPTkZJR19ETDJLIGlzIG5vdCBzZXQKICMgQ09ORklHX0UxMDAwIGlzIG5vdCBzZXQKICMgQ09ORklHX0UxMDAwRSBpcyBub3Qgc2V0CisjIENPTkZJR19FMTAwMEVfRU5BQkxFRCBpcyBub3Qgc2V0CisjIENPTkZJR19JUDEwMDAgaXMgbm90IHNldAorIyBDT05GSUdfSUdCIGlzIG5vdCBzZXQKICMgQ09ORklHX05TODM4MjAgaXMgbm90IHNldAogIyBDT05GSUdfSEFNQUNISSBpcyBub3Qgc2V0CiAjIENPTkZJR19ZRUxMT1dGSU4gaXMgbm90IHNldApAQCAtNjEwLDYgKzYzNyw3IEBACiAjIENPTkZJR19OSVUgaXMgbm90IHNldAogIyBDT05GSUdfTUxYNF9DT1JFIGlzIG5vdCBzZXQKICMgQ09ORklHX1RFSFVUSSBpcyBub3Qgc2V0CisjIENPTkZJR19CTlgyWCBpcyBub3Qgc2V0CiAjIENPTkZJR19UUiBpcyBub3Qgc2V0CiAKICMKQEAgLTYyMyw3ICs2NTEsNiBAQAogIyBDT05GSUdfUFBQIGlzIG5vdCBzZXQKICMgQ09ORklHX1NMSVAgaXMgbm90IHNldAogIyBDT05GSUdfTkVUX0ZDIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NIQVBFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRDT05TT0xFIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVFBPTEwgaXMgbm90IHNldAogIyBDT05GSUdfTkVUX1BPTExfQ09OVFJPTExFUiBpcyBub3Qgc2V0CkBAIC02NzQsNiArNzAxLDcgQEAKIENPTkZJR19IV19DT05TT0xFPXkKICMgQ09ORklHX1ZUX0hXX0NPTlNPTEVfQklORElORyBpcyBub3Qgc2V0CiAjIENPTkZJR19TRVJJQUxfTk9OU1RBTkRBUkQgaXMgbm90IHNldAorIyBDT05GSUdfTk9aT01JIGlzIG5vdCBzZXQKIAogIwogIyBTZXJpYWwgZHJpdmVycwpAQCAtNzQ4LDE0ICs3NzYsMTIgQEAKICMKICMgTWlzY2VsbGFuZW91cyBJMkMgQ2hpcCBzdXBwb3J0CiAjCi0jIENPTkZJR19TRU5TT1JTX0RTMTMzNyBpcyBub3Qgc2V0Ci0jIENPTkZJR19TRU5TT1JTX0RTMTM3NCBpcyBub3Qgc2V0CiAjIENPTkZJR19EUzE2ODIgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19FRVBST00gaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19QQ0Y4NTc0IGlzIG5vdCBzZXQKLSMgQ09ORklHX1NFTlNPUlNfUENBOTUzOSBpcyBub3Qgc2V0CisjIENPTkZJR19QQ0Y4NTc1IGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfUENGODU5MSBpcyBub3Qgc2V0Ci0jIENPTkZJR19TRU5TT1JTX000MVQwMCBpcyBub3Qgc2V0CisjIENPTkZJR19UUFM2NTAxMCBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX01BWDY4NzUgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19UU0wyNTUwIGlzIG5vdCBzZXQKICMgQ09ORklHX0kyQ19ERUJVR19DT1JFIGlzIG5vdCBzZXQKQEAgLTc3MSw2ICs3OTcsNyBAQAogIyBDT05GSUdfVzEgaXMgbm90IHNldAogIyBDT05GSUdfUE9XRVJfU1VQUExZIGlzIG5vdCBzZXQKICMgQ09ORklHX0hXTU9OIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RIRVJNQUwgaXMgbm90IHNldAogIyBDT05GSUdfV0FUQ0hET0cgaXMgbm90IHNldAogCiAjCkBAIC04NTksNiArODg2LDcgQEAKICMgQ09ORklHX1NORF9CVDg3WCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfQ0EwMTA2IGlzIG5vdCBzZXQKICMgQ09ORklHX1NORF9DTUlQQ0kgaXMgbm90IHNldAorIyBDT05GSUdfU05EX09YWUdFTiBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfQ1M0MjgxIGlzIG5vdCBzZXQKICMgQ09ORklHX1NORF9DUzQ2WFggaXMgbm90IHNldAogIyBDT05GSUdfU05EX0NTNTUzMCBpcyBub3Qgc2V0CkBAIC04ODQsNiArOTEyLDcgQEAKICMgQ09ORklHX1NORF9IREFfSU5URUwgaXMgbm90IHNldAogIyBDT05GSUdfU05EX0hEU1AgaXMgbm90IHNldAogIyBDT05GSUdfU05EX0hEU1BNIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NORF9ISUZJRVIgaXMgbm90IHNldAogIyBDT05GSUdfU05EX0lDRTE3MTIgaXMgbm90IHNldAogIyBDT05GSUdfU05EX0lDRTE3MjQgaXMgbm90IHNldAogIyBDT05GSUdfU05EX0lOVEVMOFgwIGlzIG5vdCBzZXQKQEAgLTkwMSw2ICs5MzAsNyBAQAogIyBDT05GSUdfU05EX1RSSURFTlQgaXMgbm90IHNldAogIyBDT05GSUdfU05EX1ZJQTgyWFggaXMgbm90IHNldAogIyBDT05GSUdfU05EX1ZJQTgyWFhfTU9ERU0gaXMgbm90IHNldAorIyBDT05GSUdfU05EX1ZJUlRVT1NPIGlzIG5vdCBzZXQKICMgQ09ORklHX1NORF9WWDIyMiBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfWU1GUENJIGlzIG5vdCBzZXQKIApAQCAtOTI5LDYgKzk1OSwxMCBAQAogQ09ORklHX1NORF9TT0NfQ1M0MjcwPXkKIENPTkZJR19TTkRfU09DX0NTNDI3MF9WRDMzX0VSUkFUQT15CiAKKyMKKyMgT3BlbiBTb3VuZCBTeXN0ZW0KKyMKKyMgQ09ORklHX1NPVU5EX1BSSU1FIGlzIG5vdCBzZXQKIENPTkZJR19ISURfU1VQUE9SVD15CiBDT05GSUdfSElEPXkKICMgQ09ORklHX0hJRF9ERUJVRyBpcyBub3Qgc2V0CkBAIC05NDIsMTYgKzk3NiwxNCBAQAogIwogIyBOT1RFOiBVU0JfU1RPUkFHRSBlbmFibGVzIFNDU0ksIGFuZCAnU0NTSSBkaXNrIHN1cHBvcnQnCiAjCi0KLSMKLSMgVVNCIEdhZGdldCBTdXBwb3J0Ci0jCiAjIENPTkZJR19VU0JfR0FER0VUIGlzIG5vdCBzZXQKICMgQ09ORklHX01NQyBpcyBub3Qgc2V0CisjIENPTkZJR19NRU1TVElDSyBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVdfTEVEUyBpcyBub3Qgc2V0CiAjIENPTkZJR19JTkZJTklCQU5EIGlzIG5vdCBzZXQKICMgQ09ORklHX0VEQUMgaXMgbm90IHNldAogIyBDT05GSUdfUlRDX0NMQVNTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RNQURFVklDRVMgaXMgbm90IHNldAogCiAjCiAjIFVzZXJzcGFjZSBJL08KQEAgLTk3NywxMSArMTAwOSw5IEBACiAjIENPTkZJR19YRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfR0ZTMl9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19PQ0ZTMl9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19ETk9USUZZIGlzIG5vdCBzZXQKICMgQ09ORklHX0lOT1RJRlkgaXMgbm90IHNldAogIyBDT05GSUdfUVVPVEEgaXMgbm90IHNldAotIyBDT05GSUdfRE5PVElGWSBpcyBub3Qgc2V0CiAjIENPTkZJR19BVVRPRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfQVVUT0ZTNF9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19GVVNFX0ZTIGlzIG5vdCBzZXQKQEAgLTEwMjMsOCArMTA1MywxMCBAQAogIyBDT05GSUdfRUZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSQU1GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19WWEZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX01JTklYX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0hQRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfUU5YNEZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JPTUZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1NZU1ZfRlMgaXMgbm90IHNldAogIyBDT05GSUdfVUZTX0ZTIGlzIG5vdCBzZXQKIENPTkZJR19ORVRXT1JLX0ZJTEVTWVNURU1TPXkKQEAgLTExMTQsNyArMTE0Niw2IEBACiAjIENPTkZJR19OTFNfS09JOF9VIGlzIG5vdCBzZXQKICMgQ09ORklHX05MU19VVEY4IGlzIG5vdCBzZXQKICMgQ09ORklHX0RMTSBpcyBub3Qgc2V0Ci0jIENPTkZJR19VQ0NfU0xPVyBpcyBub3Qgc2V0CiAKICMKICMgTGlicmFyeSByb3V0aW5lcwpAQCAtMTEzMCw3ICsxMTYxLDYgQEAKIENPTkZJR19IQVNfSU9NRU09eQogQ09ORklHX0hBU19JT1BPUlQ9eQogQ09ORklHX0hBU19ETUE9eQotIyBDT05GSUdfSU5TVFJVTUVOVEFUSU9OIGlzIG5vdCBzZXQKIAogIwogIyBLZXJuZWwgaGFja2luZwpAQCAtMTE0OSw2ICsxMTc5LDcgQEAKICMgQ09ORklHX1NDSEVEU1RBVFMgaXMgbm90IHNldAogIyBDT05GSUdfVElNRVJfU1RBVFMgaXMgbm90IHNldAogIyBDT05GSUdfU0xVQl9ERUJVR19PTiBpcyBub3Qgc2V0CisjIENPTkZJR19TTFVCX1NUQVRTIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1JUX01VVEVYRVMgaXMgbm90IHNldAogIyBDT05GSUdfUlRfTVVURVhfVEVTVEVSIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NQSU5MT0NLIGlzIG5vdCBzZXQKQEAgLTExNjIsOCArMTE5Myw4IEBACiAjIENPTkZJR19ERUJVR19WTSBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19MSVNUIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NHIGlzIG5vdCBzZXQKLUNPTkZJR19GT1JDRURfSU5MSU5JTkc9eQogIyBDT05GSUdfQk9PVF9QUklOVEtfREVMQVkgaXMgbm90IHNldAorIyBDT05GSUdfQkFDS1RSQUNFX1NFTEZfVEVTVCBpcyBub3Qgc2V0CiAjIENPTkZJR19GQVVMVF9JTkpFQ1RJT04gaXMgbm90IHNldAogIyBDT05GSUdfU0FNUExFUyBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19TVEFDS09WRVJGTE9XIGlzIG5vdCBzZXQKQEAgLTExNzksNSArMTIxMCw0OSBAQAogIyBDT05GSUdfS0VZUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TRUNVUklUWSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRUNVUklUWV9GSUxFX0NBUEFCSUxJVElFUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19DUllQVE8gaXMgbm90IHNldAorQ09ORklHX0NSWVBUTz15CisjIENPTkZJR19DUllQVE9fU0VRSVYgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX01BTkFHRVIgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0hNQUMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1hDQkMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX05VTEwgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX01ENCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fTUQ1IGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19TSEExIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19TSEEyNTYgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1NIQTUxMiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fV1A1MTIgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1RHUjE5MiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fR0YxMjhNVUwgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0VDQiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ0JDIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19QQ0JDIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19MUlcgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1hUUyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ1RSIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19HQ00gaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NDTSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ1JZUFREIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19ERVMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0ZDUllQVCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQkxPV0ZJU0ggaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1RXT0ZJU0ggaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1NFUlBFTlQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0FFUyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ0FTVDUgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NBU1Q2IGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19URUEgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0FSQzQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0tIQVpBRCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQU5VQklTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19TRUVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19TQUxTQTIwIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19ERUZMQVRFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19NSUNIQUVMX01JQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ1JDMzJDIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DQU1FTExJQSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQVVUSEVOQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fTFpPIGlzIG5vdCBzZXQKK0NPTkZJR19DUllQVE9fSFc9eQorIyBDT05GSUdfQ1JZUFRPX0RFVl9ISUZOXzc5NVggaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0NMT0NLIGlzIG5vdCBzZXQKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9jb25maWdzL21wYzg2NDFfaHBjbl9kZWZjb25maWcgYi9hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM4NjQxX2hwY25fZGVmY29uZmlnCmluZGV4IGZmMDkyZmMuLmQwMWRjZGIgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jb25maWdzL21wYzg2NDFfaHBjbl9kZWZjb25maWcKKysrIGIvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODY0MV9ocGNuX2RlZmNvbmZpZwpAQCAtMSw3ICsxLDcgQEAKICMKICMgQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgbWFrZSBjb25maWc6IGRvbid0IGVkaXQKLSMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4yNC1yYzQKLSMgVGh1IERlYyAgNiAxNjo0ODo1OCAyMDA3CisjIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMjUtcmM3CisjIE1vbiBNYXIgMzEgMTE6Mzc6MTEgMjAwOAogIwogIyBDT05GSUdfUFBDNjQgaXMgbm90IHNldAogCkBAIC0zMCw2ICszMCw3IEBACiBDT05GSUdfR0VORVJJQ19USU1FX1ZTWVNDQUxMPXkKIENPTkZJR19HRU5FUklDX0NMT0NLRVZFTlRTPXkKIENPTkZJR19HRU5FUklDX0hBUkRJUlFTPXkKKyMgQ09ORklHX0hBVkVfU0VUVVBfUEVSX0NQVV9BUkVBIGlzIG5vdCBzZXQKIENPTkZJR19JUlFfUEVSX0NQVT15CiBDT05GSUdfUldTRU1fWENIR0FERF9BTEdPUklUSE09eQogQ09ORklHX0FSQ0hfSEFTX0lMT0cyX1UzMj15CkBAIC02OCwxNyArNjksMjEgQEAKIENPTkZJR19CU0RfUFJPQ0VTU19BQ0NUPXkKICMgQ09ORklHX0JTRF9QUk9DRVNTX0FDQ1RfVjMgaXMgbm90IHNldAogIyBDT05GSUdfVEFTS1NUQVRTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VTRVJfTlMgaXMgbm90IHNldAotIyBDT05GSUdfUElEX05TIGlzIG5vdCBzZXQKIENPTkZJR19BVURJVD15CiAjIENPTkZJR19BVURJVFNZU0NBTEwgaXMgbm90IHNldAogQ09ORklHX0lLQ09ORklHPXkKIENPTkZJR19JS0NPTkZJR19QUk9DPXkKIENPTkZJR19MT0dfQlVGX1NISUZUPTE0CiAjIENPTkZJR19DR1JPVVBTIGlzIG5vdCBzZXQKK0NPTkZJR19HUk9VUF9TQ0hFRD15CiAjIENPTkZJR19GQUlSX0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JUX0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKK0NPTkZJR19VU0VSX1NDSEVEPXkKKyMgQ09ORklHX0NHUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CiBDT05GSUdfU1lTRlNfREVQUkVDQVRFRD15CitDT05GSUdfU1lTRlNfREVQUkVDQVRFRF9WMj15CiAjIENPTkZJR19SRUxBWSBpcyBub3Qgc2V0CisjIENPTkZJR19OQU1FU1BBQ0VTIGlzIG5vdCBzZXQKIENPTkZJR19CTEtfREVWX0lOSVRSRD15CiBDT05GSUdfSU5JVFJBTUZTX1NPVVJDRT0iIgogIyBDT05GSUdfQ0NfT1BUSU1JWkVfRk9SX1NJWkUgaXMgbm90IHNldApAQCAtOTIsMTEgKzk3LDEzIEBACiBDT05GSUdfUFJJTlRLPXkKIENPTkZJR19CVUc9eQogQ09ORklHX0VMRl9DT1JFPXkKK0NPTkZJR19DT01QQVRfQlJLPXkKIENPTkZJR19CQVNFX0ZVTEw9eQogQ09ORklHX0ZVVEVYPXkKIENPTkZJR19BTk9OX0lOT0RFUz15CiBDT05GSUdfRVBPTEw9eQogQ09ORklHX1NJR05BTEZEPXkKK0NPTkZJR19USU1FUkZEPXkKIENPTkZJR19FVkVOVEZEPXkKIENPTkZJR19TSE1FTT15CiBDT05GSUdfVk1fRVZFTlRfQ09VTlRFUlM9eQpAQCAtMTA0LDYgKzExMSwxNCBAQAogIyBDT05GSUdfU0xBQiBpcyBub3Qgc2V0CiBDT05GSUdfU0xVQj15CiAjIENPTkZJR19TTE9CIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BST0ZJTElORyBpcyBub3Qgc2V0CisjIENPTkZJR19NQVJLRVJTIGlzIG5vdCBzZXQKK0NPTkZJR19IQVZFX09QUk9GSUxFPXkKKyMgQ09ORklHX0tQUk9CRVMgaXMgbm90IHNldAorQ09ORklHX0hBVkVfS1BST0JFUz15CitDT05GSUdfSEFWRV9LUkVUUFJPQkVTPXkKK0NPTkZJR19QUk9DX1BBR0VfTU9OSVRPUj15CitDT05GSUdfU0xBQklORk89eQogQ09ORklHX1JUX01VVEVYRVM9eQogIyBDT05GSUdfVElOWV9TSE1FTSBpcyBub3Qgc2V0CiBDT05GSUdfQkFTRV9TTUFMTD0wCkBAIC0xMzIsNiArMTQ3LDcgQEAKIENPTkZJR19ERUZBVUxUX0NGUT15CiAjIENPTkZJR19ERUZBVUxUX05PT1AgaXMgbm90IHNldAogQ09ORklHX0RFRkFVTFRfSU9TQ0hFRD0iY2ZxIgorQ09ORklHX0NMQVNTSUNfUkNVPXkKIAogIwogIyBQbGF0Zm9ybSBzdXBwb3J0CkBAIC0xNDAsMTQgKzE1NiwxNSBAQAogIyBDT05GSUdfUFBDXzgyeHggaXMgbm90IHNldAogIyBDT05GSUdfUFBDXzgzeHggaXMgbm90IHNldAogQ09ORklHX1BQQ184Nnh4PXkKLSMgQ09ORklHX1BQQ19NUEM1Mnh4IGlzIG5vdCBzZXQKLSMgQ09ORklHX1BQQ19NUEM1MjAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ19NUEM1MTJ4IGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ19NUEM1MTIxIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19DRUxMIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19DRUxMX05BVElWRSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUTJBRFMgaXMgbm90IHNldAogQ09ORklHX01QQzg2NDFfSFBDTj15CiAjIENPTkZJR19NUEM4NjEwX0hQQ0QgaXMgbm90IHNldAogQ09ORklHX01QQzg2NDE9eQorIyBDT05GSUdfSVBJQyBpcyBub3Qgc2V0CiBDT05GSUdfTVBJQz15CiAjIENPTkZJR19NUElDX1dFSVJEIGlzIG5vdCBzZXQKIENPTkZJR19QUENfSTgyNTk9eQpAQCAtMTU4LDcgKzE3NSw2IEBACiAjIENPTkZJR19QUENfSU5ESVJFQ1RfSU8gaXMgbm90IHNldAogIyBDT05GSUdfR0VORVJJQ19JT01BUCBpcyBub3Qgc2V0CiAjIENPTkZJR19DUFVfRlJFUSBpcyBub3Qgc2V0Ci0jIENPTkZJR19DUE0yIGlzIG5vdCBzZXQKIENPTkZJR19GU0xfVUxJMTU3NT15CiAKICMKQEAgLTE3NCwxMyArMTkwLDE2IEBACiAjIENPTkZJR19IWl8zMDAgaXMgbm90IHNldAogQ09ORklHX0haXzEwMDA9eQogQ09ORklHX0haPTEwMDAKKyMgQ09ORklHX1NDSEVEX0hSVElDSyBpcyBub3Qgc2V0CiBDT05GSUdfUFJFRU1QVF9OT05FPXkKICMgQ09ORklHX1BSRUVNUFRfVk9MVU5UQVJZIGlzIG5vdCBzZXQKICMgQ09ORklHX1BSRUVNUFQgaXMgbm90IHNldAotQ09ORklHX1BSRUVNUFRfQktMPXkKIENPTkZJR19CSU5GTVRfRUxGPXkKIENPTkZJR19CSU5GTVRfTUlTQz1tCisjIENPTkZJR19JT01NVV9IRUxQRVIgaXMgbm90IHNldAogQ09ORklHX0FSQ0hfRU5BQkxFX01FTU9SWV9IT1RQTFVHPXkKK0NPTkZJR19BUkNIX0hBU19XQUxLX01FTU9SWT15CitDT05GSUdfQVJDSF9FTkFCTEVfTUVNT1JZX0hPVFJFTU9WRT15CiAjIENPTkZJR19JUlFfQUxMX0NQVVMgaXMgbm90IHNldAogQ09ORklHX0FSQ0hfRkxBVE1FTV9FTkFCTEU9eQogQ09ORklHX0FSQ0hfUE9QVUxBVEVTX05PREVfTUFQPXkKQEAgLTIwMSw3ICsyMjAsNiBAQAogIyBDT05GSUdfQ01ETElORV9CT09MIGlzIG5vdCBzZXQKICMgQ09ORklHX1BNIGlzIG5vdCBzZXQKIENPTkZJR19TRUNDT01QPXkKLSMgQ09ORklHX1dBTlRfREVWSUNFX1RSRUUgaXMgbm90IHNldAogQ09ORklHX0lTQV9ETUFfQVBJPXkKIAogIwpAQCAtMjUyLDYgKzI3MCw3IEBACiBDT05GSUdfWEZSTV9VU0VSPXkKICMgQ09ORklHX1hGUk1fU1VCX1BPTElDWSBpcyBub3Qgc2V0CiAjIENPTkZJR19YRlJNX01JR1JBVEUgaXMgbm90IHNldAorIyBDT05GSUdfWEZSTV9TVEFUSVNUSUNTIGlzIG5vdCBzZXQKIENPTkZJR19ORVRfS0VZPW0KICMgQ09ORklHX05FVF9LRVlfTUlHUkFURSBpcyBub3Qgc2V0CiBDT05GSUdfSU5FVD15CkBAIC0zMzUsNiArMzU0LDcgQEAKICMKICMgQ09ORklHX05FVF9QS1RHRU4gaXMgbm90IHNldAogIyBDT05GSUdfSEFNUkFESU8gaXMgbm90IHNldAorIyBDT05GSUdfQ0FOIGlzIG5vdCBzZXQKICMgQ09ORklHX0lSREEgaXMgbm90IHNldAogIyBDT05GSUdfQlQgaXMgbm90IHNldAogIyBDT05GSUdfQUZfUlhSUEMgaXMgbm90IHNldApAQCAtMzgzLDcgKzQwMyw3IEBACiBDT05GSUdfQkxLX0RFVl9SQU09eQogQ09ORklHX0JMS19ERVZfUkFNX0NPVU5UPTE2CiBDT05GSUdfQkxLX0RFVl9SQU1fU0laRT0xMzEwNzIKLUNPTkZJR19CTEtfREVWX1JBTV9CTE9DS1NJWkU9MTAyNAorIyBDT05GSUdfQkxLX0RFVl9YSVAgaXMgbm90IHNldAogIyBDT05GSUdfQ0RST01fUEtUQ0RWRCBpcyBub3Qgc2V0CiAjIENPTkZJR19BVEFfT1ZFUl9FVEggaXMgbm90IHNldAogQ09ORklHX01JU0NfREVWSUNFUz15CkBAIC0zOTEsNiArNDExLDggQEAKICMgQ09ORklHX0VFUFJPTV85M0NYNiBpcyBub3Qgc2V0CiAjIENPTkZJR19TR0lfSU9DNCBpcyBub3Qgc2V0CiAjIENPTkZJR19USUZNX0NPUkUgaXMgbm90IHNldAorIyBDT05GSUdfRU5DTE9TVVJFX1NFUlZJQ0VTIGlzIG5vdCBzZXQKK0NPTkZJR19IQVZFX0lERT15CiAjIENPTkZJR19JREUgaXMgbm90IHNldAogCiAjCkBAIC00NTYsNiArNDc4LDcgQEAKICMgQ09ORklHX1NDU0lfSVBTIGlzIG5vdCBzZXQKICMgQ09ORklHX1NDU0lfSU5JVElPIGlzIG5vdCBzZXQKICMgQ09ORklHX1NDU0lfSU5JQTEwMCBpcyBub3Qgc2V0CisjIENPTkZJR19TQ1NJX01WU0FTIGlzIG5vdCBzZXQKICMgQ09ORklHX1NDU0lfU1RFWCBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX1NZTTUzQzhYWF8yIGlzIG5vdCBzZXQKICMgQ09ORklHX1NDU0lfSVBSIGlzIG5vdCBzZXQKQEAgLTQ4Niw2ICs1MDksNyBAQAogIyBDT05GSUdfU0FUQV9WSUEgaXMgbm90IHNldAogIyBDT05GSUdfU0FUQV9WSVRFU1NFIGlzIG5vdCBzZXQKICMgQ09ORklHX1NBVEFfSU5JQzE2MlggaXMgbm90IHNldAorIyBDT05GSUdfU0FUQV9GU0wgaXMgbm90IHNldAogQ09ORklHX1BBVEFfQUxJPXkKICMgQ09ORklHX1BBVEFfQU1EIGlzIG5vdCBzZXQKICMgQ09ORklHX1BBVEFfQVJUT1AgaXMgbm90IHNldApAQCAtNTA5LDYgKzUzMyw3IEBACiAjIENPTkZJR19QQVRBX01QSUlYIGlzIG5vdCBzZXQKICMgQ09ORklHX1BBVEFfT0xEUElJWCBpcyBub3Qgc2V0CiAjIENPTkZJR19QQVRBX05FVENFTEwgaXMgbm90IHNldAorIyBDT05GSUdfUEFUQV9OSU5KQTMyIGlzIG5vdCBzZXQKICMgQ09ORklHX1BBVEFfTlM4NzQxMCBpcyBub3Qgc2V0CiAjIENPTkZJR19QQVRBX05TODc0MTUgaXMgbm90IHNldAogIyBDT05GSUdfUEFUQV9PUFRJIGlzIG5vdCBzZXQKQEAgLTU0Miw3ICs1NjcsNiBAQAogIyBDT05GSUdfRVFVQUxJWkVSIGlzIG5vdCBzZXQKICMgQ09ORklHX1RVTiBpcyBub3Qgc2V0CiAjIENPTkZJR19WRVRIIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lQMTAwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19BUkNORVQgaXMgbm90IHNldAogQ09ORklHX1BIWUxJQj15CiAKQEAgLTU1OCw2ICs1ODIsNyBAQAogIyBDT05GSUdfU01TQ19QSFkgaXMgbm90IHNldAogIyBDT05GSUdfQlJPQURDT01fUEhZIGlzIG5vdCBzZXQKICMgQ09ORklHX0lDUExVU19QSFkgaXMgbm90IHNldAorIyBDT05GSUdfUkVBTFRFS19QSFkgaXMgbm90IHNldAogIyBDT05GSUdfRklYRURfUEhZIGlzIG5vdCBzZXQKICMgQ09ORklHX01ESU9fQklUQkFORyBpcyBub3Qgc2V0CiBDT05GSUdfTkVUX0VUSEVSTkVUPXkKQEAgLTU3OSw2ICs2MDQsOSBAQAogIyBDT05GSUdfREwySyBpcyBub3Qgc2V0CiAjIENPTkZJR19FMTAwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19FMTAwMEUgaXMgbm90IHNldAorIyBDT05GSUdfRTEwMDBFX0VOQUJMRUQgaXMgbm90IHNldAorIyBDT05GSUdfSVAxMDAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lHQiBpcyBub3Qgc2V0CiAjIENPTkZJR19OUzgzODIwIGlzIG5vdCBzZXQKICMgQ09ORklHX0hBTUFDSEkgaXMgbm90IHNldAogIyBDT05GSUdfWUVMTE9XRklOIGlzIG5vdCBzZXQKQEAgLTYwNSw2ICs2MzMsNyBAQAogIyBDT05GSUdfTklVIGlzIG5vdCBzZXQKICMgQ09ORklHX01MWDRfQ09SRSBpcyBub3Qgc2V0CiAjIENPTkZJR19URUhVVEkgaXMgbm90IHNldAorIyBDT05GSUdfQk5YMlggaXMgbm90IHNldAogIyBDT05GSUdfVFIgaXMgbm90IHNldAogCiAjCkBAIC02MjcsNyArNjU2LDYgQEAKICMgQ09ORklHX1BQUCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTElQIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9GQyBpcyBub3Qgc2V0Ci0jIENPTkZJR19TSEFQRVIgaXMgbm90IHNldAogIyBDT05GSUdfTkVUQ09OU09MRSBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRQT0xMIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9QT0xMX0NPTlRST0xMRVIgaXMgbm90IHNldApAQCAtNjc4LDYgKzcwNiw3IEBACiBDT05GSUdfSFdfQ09OU09MRT15CiAjIENPTkZJR19WVF9IV19DT05TT0xFX0JJTkRJTkcgaXMgbm90IHNldAogIyBDT05GSUdfU0VSSUFMX05PTlNUQU5EQVJEIGlzIG5vdCBzZXQKKyMgQ09ORklHX05PWk9NSSBpcyBub3Qgc2V0CiAKICMKICMgU2VyaWFsIGRyaXZlcnMKQEAgLTcwNyw4ICs3MzYsNyBAQAogIyBDT05GSUdfSVBNSV9IQU5ETEVSIGlzIG5vdCBzZXQKICMgQ09ORklHX0hXX1JBTkRPTSBpcyBub3Qgc2V0CiBDT05GSUdfTlZSQU09eQotQ09ORklHX0dFTl9SVEM9eQotQ09ORklHX0dFTl9SVENfWD15CisjIENPTkZJR19HRU5fUlRDIGlzIG5vdCBzZXQKICMgQ09ORklHX1IzOTY0IGlzIG5vdCBzZXQKICMgQ09ORklHX0FQUExJQ09NIGlzIG5vdCBzZXQKICMgQ09ORklHX1JBV19EUklWRVIgaXMgbm90IHNldApAQCAtNzU2LDE0ICs3ODQsMTIgQEAKICMKICMgTWlzY2VsbGFuZW91cyBJMkMgQ2hpcCBzdXBwb3J0CiAjCi0jIENPTkZJR19TRU5TT1JTX0RTMTMzNyBpcyBub3Qgc2V0Ci0jIENPTkZJR19TRU5TT1JTX0RTMTM3NCBpcyBub3Qgc2V0CiAjIENPTkZJR19EUzE2ODIgaXMgbm90IHNldAogQ09ORklHX1NFTlNPUlNfRUVQUk9NPXkKICMgQ09ORklHX1NFTlNPUlNfUENGODU3NCBpcyBub3Qgc2V0Ci0jIENPTkZJR19TRU5TT1JTX1BDQTk1MzkgaXMgbm90IHNldAorIyBDT05GSUdfUENGODU3NSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1BDRjg1OTEgaXMgbm90IHNldAotIyBDT05GSUdfU0VOU09SU19NNDFUMDAgaXMgbm90IHNldAorIyBDT05GSUdfVFBTNjUwMTAgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19NQVg2ODc1IGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVFNMMjU1MCBpcyBub3Qgc2V0CiAjIENPTkZJR19JMkNfREVCVUdfQ09SRSBpcyBub3Qgc2V0CkBAIC03NzksNiArODA1LDcgQEAKICMgQ09ORklHX1cxIGlzIG5vdCBzZXQKICMgQ09ORklHX1BPV0VSX1NVUFBMWSBpcyBub3Qgc2V0CiAjIENPTkZJR19IV01PTiBpcyBub3Qgc2V0CisjIENPTkZJR19USEVSTUFMIGlzIG5vdCBzZXQKICMgQ09ORklHX1dBVENIRE9HIGlzIG5vdCBzZXQKIAogIwpAQCAtODAzLDYgKzgzMCw4IEBACiAjCiAjIFN1cHBvcnRlZCBTQUE3MTQ2IGJhc2VkIFBDSSBBZGFwdGVycwogIworIyBDT05GSUdfVFRQQ0lfRUVQUk9NIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RWQl9CVURHRVRfQ09SRSBpcyBub3Qgc2V0CiAKICMKICMgU3VwcG9ydGVkIFVTQiBBZGFwdGVycwpAQCAtODg4LDExICs5MTcsMTMgQEAKICMgQ09ORklHX0RWQl9QTEwgaXMgbm90IHNldAogIyBDT05GSUdfRFZCX1REQTgyNlggaXMgbm90IHNldAogIyBDT05GSUdfRFZCX1REQTgyN1ggaXMgbm90IHNldAorIyBDT05GSUdfRFZCX1REQTE4MjcxIGlzIG5vdCBzZXQKICMgQ09ORklHX0RWQl9UVU5FUl9RVDEwMTAgaXMgbm90IHNldAogIyBDT05GSUdfRFZCX1RVTkVSX01UMjA2MCBpcyBub3Qgc2V0CiAjIENPTkZJR19EVkJfVFVORVJfTVQyMjY2IGlzIG5vdCBzZXQKICMgQ09ORklHX0RWQl9UVU5FUl9NVDIxMzEgaXMgbm90IHNldAogIyBDT05GSUdfRFZCX1RVTkVSX0RJQjAwNzAgaXMgbm90IHNldAorIyBDT05GSUdfRFZCX1RVTkVSX1hDNTAwMCBpcyBub3Qgc2V0CiAKICMKICMgTWlzY2VsbGFuZW91cyBkZXZpY2VzCkBAIC05NzAsNiArMTAwMSw3IEBACiAjIENPTkZJR19TTkRfQlQ4N1ggaXMgbm90IHNldAogIyBDT05GSUdfU05EX0NBMDEwNiBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfQ01JUENJIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NORF9PWFlHRU4gaXMgbm90IHNldAogIyBDT05GSUdfU05EX0NTNDI4MSBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfQ1M0NlhYIGlzIG5vdCBzZXQKICMgQ09ORklHX1NORF9DUzU1MzAgaXMgbm90IHNldApAQCAtOTk1LDYgKzEwMjcsNyBAQAogIyBDT05GSUdfU05EX0hEQV9JTlRFTCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfSERTUCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfSERTUE0gaXMgbm90IHNldAorIyBDT05GSUdfU05EX0hJRklFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfSUNFMTcxMiBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfSUNFMTcyNCBpcyBub3Qgc2V0CiBDT05GSUdfU05EX0lOVEVMOFgwPXkKQEAgLTEwMTIsNiArMTA0NSw3IEBACiAjIENPTkZJR19TTkRfVFJJREVOVCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfVklBODJYWCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfVklBODJYWF9NT0RFTSBpcyBub3Qgc2V0CisjIENPTkZJR19TTkRfVklSVFVPU08gaXMgbm90IHNldAogIyBDT05GSUdfU05EX1ZYMjIyIGlzIG5vdCBzZXQKICMgQ09ORklHX1NORF9ZTUZQQ0kgaXMgbm90IHNldAogIyBDT05GSUdfU05EX0FDOTdfUE9XRVJfU0FWRSBpcyBub3Qgc2V0CkBAIC0xMDQxLDYgKzEwNzUsMTAgQEAKICMKIAogIworIyBBTFNBIFNvQyBhdWRpbyBmb3IgRnJlZXNjYWxlIFNPQ3MKKyMKKworIwogIyBPcGVuIFNvdW5kIFN5c3RlbQogIwogIyBDT05GSUdfU09VTkRfUFJJTUUgaXMgbm90IHNldApAQCAtMTA2Myw2ICsxMTAxLDcgQEAKIENPTkZJR19VU0JfQVJDSF9IQVNfRUhDST15CiBDT05GSUdfVVNCPXkKICMgQ09ORklHX1VTQl9ERUJVRyBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfQU5OT1VOQ0VfTkVXX0RFVklDRVMgaXMgbm90IHNldAogCiAjCiAjIE1pc2NlbGxhbmVvdXMgVVNCIG9wdGlvbnMKQEAgLTEwNzYsOSArMTExNSwxMCBAQAogIyBVU0IgSG9zdCBDb250cm9sbGVyIERyaXZlcnMKICMKIENPTkZJR19VU0JfRUhDSV9IQ0Q9eQotIyBDT05GSUdfVVNCX0VIQ0lfU1BMSVRfSVNPIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9FSENJX1JPT1RfSFVCX1RUIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9FSENJX1RUX05FV1NDSEVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9FSENJX0ZTTCBpcyBub3Qgc2V0CitDT05GSUdfVVNCX0VIQ0lfSENEX1BQQ19PRj15CiAjIENPTkZJR19VU0JfSVNQMTE2WF9IQ0QgaXMgbm90IHNldAogQ09ORklHX1VTQl9PSENJX0hDRD15CiBDT05GSUdfVVNCX09IQ0lfSENEX1BQQ19PRj15CkBAIC0xMTI5LDEwICsxMTY5LDYgQEAKICMKICMgVVNCIHBvcnQgZHJpdmVycwogIwotCi0jCi0jIFVTQiBTZXJpYWwgQ29udmVydGVyIHN1cHBvcnQKLSMKICMgQ09ORklHX1VTQl9TRVJJQUwgaXMgbm90IHNldAogCiAjCkBAIC0xMTU4LDE2ICsxMTk0LDkgQEAKICMgQ09ORklHX1VTQl9UUkFOQ0VWSUJSQVRPUiBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfSU9XQVJSSU9SIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9URVNUIGlzIG5vdCBzZXQKLQotIwotIyBVU0IgRFNMIG1vZGVtIHN1cHBvcnQKLSMKLQotIwotIyBVU0IgR2FkZ2V0IFN1cHBvcnQKLSMKICMgQ09ORklHX1VTQl9HQURHRVQgaXMgbm90IHNldAogIyBDT05GSUdfTU1DIGlzIG5vdCBzZXQKKyMgQ09ORklHX01FTVNUSUNLIGlzIG5vdCBzZXQKICMgQ09ORklHX05FV19MRURTIGlzIG5vdCBzZXQKICMgQ09ORklHX0lORklOSUJBTkQgaXMgbm90IHNldAogIyBDT05GSUdfRURBQyBpcyBub3Qgc2V0CkBAIC0xMTk5LDYgKzEyMjgsNyBAQAogIyBDT05GSUdfUlRDX0RSVl9QQ0Y4NTYzIGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfUENGODU4MyBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfRFJWX000MVQ4MCBpcyBub3Qgc2V0CisjIENPTkZJR19SVENfRFJWX1MzNTM5MEEgaXMgbm90IHNldAogCiAjCiAjIFNQSSBSVEMgZHJpdmVycwpAQCAtMTIwOCw5ICsxMjM4LDEwIEBACiAjIFBsYXRmb3JtIFJUQyBkcml2ZXJzCiAjCiBDT05GSUdfUlRDX0RSVl9DTU9TPXkKKyMgQ09ORklHX1JUQ19EUlZfRFMxNTExIGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfRFMxNTUzIGlzIG5vdCBzZXQKLSMgQ09ORklHX1JUQ19EUlZfU1RLMTdUQTggaXMgbm90IHNldAogIyBDT05GSUdfUlRDX0RSVl9EUzE3NDIgaXMgbm90IHNldAorIyBDT05GSUdfUlRDX0RSVl9TVEsxN1RBOCBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfRFJWX000OFQ4NiBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfRFJWX000OFQ1OSBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfRFJWX1YzMDIwIGlzIG5vdCBzZXQKQEAgLTEyMTgsNiArMTI0OSw3IEBACiAjCiAjIG9uLUNQVSBSVEMgZHJpdmVycwogIworIyBDT05GSUdfRE1BREVWSUNFUyBpcyBub3Qgc2V0CiAKICMKICMgVXNlcnNwYWNlIEkvTwpAQCAtMTI0MywxMiArMTI3NSwxMCBAQAogIyBDT05GSUdfWEZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0dGUzJfRlMgaXMgbm90IHNldAogIyBDT05GSUdfT0NGUzJfRlMgaXMgbm90IHNldAotIyBDT05GSUdfTUlOSVhfRlMgaXMgbm90IHNldAotIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAorQ09ORklHX0ROT1RJRlk9eQogQ09ORklHX0lOT1RJRlk9eQogQ09ORklHX0lOT1RJRllfVVNFUj15CiAjIENPTkZJR19RVU9UQSBpcyBub3Qgc2V0Ci1DT05GSUdfRE5PVElGWT15CiAjIENPTkZJR19BVVRPRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfQVVUT0ZTNF9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19GVVNFX0ZTIGlzIG5vdCBzZXQKQEAgLTEzMDAsOCArMTMzMCwxMCBAQAogQ09ORklHX0VGU19GUz1tCiBDT05GSUdfQ1JBTUZTPXkKIENPTkZJR19WWEZTX0ZTPW0KKyMgQ09ORklHX01JTklYX0ZTIGlzIG5vdCBzZXQKIENPTkZJR19IUEZTX0ZTPW0KIENPTkZJR19RTlg0RlNfRlM9bQorIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAogQ09ORklHX1NZU1ZfRlM9bQogQ09ORklHX1VGU19GUz1tCiAjIENPTkZJR19VRlNfRlNfV1JJVEUgaXMgbm90IHNldApAQCAtMTM5Myw3ICsxNDI1LDYgQEAKICMgQ09ORklHX05MU19LT0k4X1UgaXMgbm90IHNldAogQ09ORklHX05MU19VVEY4PW0KICMgQ09ORklHX0RMTSBpcyBub3Qgc2V0Ci0jIENPTkZJR19VQ0NfU0xPVyBpcyBub3Qgc2V0CiAKICMKICMgTGlicmFyeSByb3V0aW5lcwpAQCAtMTQxMCw3ICsxNDQxLDYgQEAKIENPTkZJR19IQVNfSU9NRU09eQogQ09ORklHX0hBU19JT1BPUlQ9eQogQ09ORklHX0hBU19ETUE9eQotIyBDT05GSUdfSU5TVFJVTUVOVEFUSU9OIGlzIG5vdCBzZXQKIAogIwogIyBLZXJuZWwgaGFja2luZwpAQCAtMTQyOSw2ICsxNDU5LDcgQEAKICMgQ09ORklHX1NDSEVEU1RBVFMgaXMgbm90IHNldAogIyBDT05GSUdfVElNRVJfU1RBVFMgaXMgbm90IHNldAogIyBDT05GSUdfU0xVQl9ERUJVR19PTiBpcyBub3Qgc2V0CisjIENPTkZJR19TTFVCX1NUQVRTIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1JUX01VVEVYRVMgaXMgbm90IHNldAogIyBDT05GSUdfUlRfTVVURVhfVEVTVEVSIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NQSU5MT0NLIGlzIG5vdCBzZXQKQEAgLTE0NDIsOSArMTQ3Myw5IEBACiAjIENPTkZJR19ERUJVR19WTSBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19MSVNUIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NHIGlzIG5vdCBzZXQKLUNPTkZJR19GT1JDRURfSU5MSU5JTkc9eQogIyBDT05GSUdfQk9PVF9QUklOVEtfREVMQVkgaXMgbm90IHNldAogIyBDT05GSUdfUkNVX1RPUlRVUkVfVEVTVCBpcyBub3Qgc2V0CisjIENPTkZJR19CQUNLVFJBQ0VfU0VMRl9URVNUIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZBVUxUX0lOSkVDVElPTiBpcyBub3Qgc2V0CiAjIENPTkZJR19TQU1QTEVTIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NUQUNLT1ZFUkZMT1cgaXMgbm90IHNldApAQCAtMTQ2Myw2ICsxNDk0LDcgQEAKIENPTkZJR19DUllQVE89eQogQ09ORklHX0NSWVBUT19BTEdBUEk9eQogQ09ORklHX0NSWVBUT19CTEtDSVBIRVI9eQorIyBDT05GSUdfQ1JZUFRPX1NFUUlWIGlzIG5vdCBzZXQKIENPTkZJR19DUllQVE9fSEFTSD15CiBDT05GSUdfQ1JZUFRPX01BTkFHRVI9eQogQ09ORklHX0NSWVBUT19ITUFDPXkKQEAgLTE0ODEsNiArMTUxMyw5IEBACiBDT05GSUdfQ1JZUFRPX1BDQkM9bQogIyBDT05GSUdfQ1JZUFRPX0xSVyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fWFRTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DVFIgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0dDTSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ0NNIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19DUllQVEQgaXMgbm90IHNldAogQ09ORklHX0NSWVBUT19ERVM9eQogIyBDT05GSUdfQ1JZUFRPX0ZDUllQVCBpcyBub3Qgc2V0CkBAIC0xNDk1LDExICsxNTMwLDE0IEBACiAjIENPTkZJR19DUllQVE9fS0hBWkFEIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19BTlVCSVMgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX1NFRUQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1NBTFNBMjAgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0RFRkxBVEUgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX01JQ0hBRUxfTUlDIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19DUkMzMkMgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0NBTUVMTElBIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19URVNUIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19BVVRIRU5DIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19MWk8gaXMgbm90IHNldAogQ09ORklHX0NSWVBUT19IVz15CisjIENPTkZJR19DUllQVE9fREVWX0hJRk5fNzk1WCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfQ0xPQ0sgaXMgbm90IHNldApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODY2X2Fkc19kZWZjb25maWcgYi9hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM4NjZfYWRzX2RlZmNvbmZpZwppbmRleCBhN2VmMjMxLi4yZDgzMWRiIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM4NjZfYWRzX2RlZmNvbmZpZworKysgYi9hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM4NjZfYWRzX2RlZmNvbmZpZwpAQCAtMSw3ICsxLDcgQEAKICMKICMgQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgbWFrZSBjb25maWc6IGRvbid0IGVkaXQKLSMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4yNC1yYzQKLSMgVGh1IERlYyAgNiAxNjo0ODo1OSAyMDA3CisjIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMjUtcmM2CisjIE1vbiBNYXIgMjQgMDg6NDg6MzUgMjAwOAogIwogIyBDT05GSUdfUFBDNjQgaXMgbm90IHNldAogCkBAIC0yNiw2ICsyNiw3IEBACiBDT05GSUdfR0VORVJJQ19USU1FX1ZTWVNDQUxMPXkKIENPTkZJR19HRU5FUklDX0NMT0NLRVZFTlRTPXkKIENPTkZJR19HRU5FUklDX0hBUkRJUlFTPXkKKyMgQ09ORklHX0hBVkVfU0VUVVBfUEVSX0NQVV9BUkVBIGlzIG5vdCBzZXQKIENPTkZJR19JUlFfUEVSX0NQVT15CiBDT05GSUdfUldTRU1fWENIR0FERF9BTEdPUklUSE09eQogQ09ORklHX0FSQ0hfSEFTX0lMT0cyX1UzMj15CkBAIC02MiwxNSArNjMsMTkgQEAKICMgQ09ORklHX1BPU0lYX01RVUVVRSBpcyBub3Qgc2V0CiAjIENPTkZJR19CU0RfUFJPQ0VTU19BQ0NUIGlzIG5vdCBzZXQKICMgQ09ORklHX1RBU0tTVEFUUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19VU0VSX05TIGlzIG5vdCBzZXQKLSMgQ09ORklHX1BJRF9OUyBpcyBub3Qgc2V0CiAjIENPTkZJR19BVURJVCBpcyBub3Qgc2V0CiAjIENPTkZJR19JS0NPTkZJRyBpcyBub3Qgc2V0CiBDT05GSUdfTE9HX0JVRl9TSElGVD0xNAogIyBDT05GSUdfQ0dST1VQUyBpcyBub3Qgc2V0CitDT05GSUdfR1JPVVBfU0NIRUQ9eQogIyBDT05GSUdfRkFJUl9HUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CisjIENPTkZJR19SVF9HUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CitDT05GSUdfVVNFUl9TQ0hFRD15CisjIENPTkZJR19DR1JPVVBfU0NIRUQgaXMgbm90IHNldAogQ09ORklHX1NZU0ZTX0RFUFJFQ0FURUQ9eQorQ09ORklHX1NZU0ZTX0RFUFJFQ0FURURfVjI9eQogIyBDT05GSUdfUkVMQVkgaXMgbm90IHNldAorIyBDT05GSUdfTkFNRVNQQUNFUyBpcyBub3Qgc2V0CiAjIENPTkZJR19CTEtfREVWX0lOSVRSRCBpcyBub3Qgc2V0CiAjIENPTkZJR19DQ19PUFRJTUlaRV9GT1JfU0laRSBpcyBub3Qgc2V0CiBDT05GSUdfU1lTQ1RMPXkKQEAgLTgyLDExICs4NywxMyBAQAogQ09ORklHX1BSSU5USz15CiAjIENPTkZJR19CVUcgaXMgbm90IHNldAogQ09ORklHX0VMRl9DT1JFPXkKK0NPTkZJR19DT01QQVRfQlJLPXkKICMgQ09ORklHX0JBU0VfRlVMTCBpcyBub3Qgc2V0CiBDT05GSUdfRlVURVg9eQogQ09ORklHX0FOT05fSU5PREVTPXkKICMgQ09ORklHX0VQT0xMIGlzIG5vdCBzZXQKIENPTkZJR19TSUdOQUxGRD15CitDT05GSUdfVElNRVJGRD15CiBDT05GSUdfRVZFTlRGRD15CiBDT05GSUdfU0hNRU09eQogIyBDT05GSUdfVk1fRVZFTlRfQ09VTlRFUlMgaXMgbm90IHNldApAQCAtOTQsNiArMTAxLDEzIEBACiAjIENPTkZJR19TTEFCIGlzIG5vdCBzZXQKIENPTkZJR19TTFVCPXkKICMgQ09ORklHX1NMT0IgaXMgbm90IHNldAorIyBDT05GSUdfUFJPRklMSU5HIGlzIG5vdCBzZXQKKyMgQ09ORklHX01BUktFUlMgaXMgbm90IHNldAorQ09ORklHX0hBVkVfT1BST0ZJTEU9eQorQ09ORklHX0hBVkVfS1BST0JFUz15CitDT05GSUdfSEFWRV9LUkVUUFJPQkVTPXkKK0NPTkZJR19QUk9DX1BBR0VfTU9OSVRPUj15CitDT05GSUdfU0xBQklORk89eQogQ09ORklHX1JUX01VVEVYRVM9eQogIyBDT05GSUdfVElOWV9TSE1FTSBpcyBub3Qgc2V0CiBDT05GSUdfQkFTRV9TTUFMTD0xCkBAIC0xMTYsMTIgKzEzMCwxMyBAQAogIyBDT05GSUdfREVGQVVMVF9DRlEgaXMgbm90IHNldAogIyBDT05GSUdfREVGQVVMVF9OT09QIGlzIG5vdCBzZXQKIENPTkZJR19ERUZBVUxUX0lPU0NIRUQ9ImFudGljaXBhdG9yeSIKK0NPTkZJR19DTEFTU0lDX1JDVT15CiAKICMKICMgUGxhdGZvcm0gc3VwcG9ydAogIwotIyBDT05GSUdfUFBDX01QQzUyeHggaXMgbm90IHNldAotIyBDT05GSUdfUFBDX01QQzUyMDAgaXMgbm90IHNldAorIyBDT05GSUdfUFBDX01QQzUxMnggaXMgbm90IHNldAorIyBDT05GSUdfUFBDX01QQzUxMjEgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0NFTEwgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0NFTExfTkFUSVZFIGlzIG5vdCBzZXQKIENPTkZJR19DUE0xPXkKQEAgLTEyOSw2ICsxNDQsNyBAQAogQ09ORklHX01QQzg2WEFEUz15CiAjIENPTkZJR19NUEM4ODVBRFMgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0VQODhYQyBpcyBub3Qgc2V0CisjIENPTkZJR19QUENfQURERVI4NzUgaXMgbm90IHNldAogCiAjCiAjIE1QQzh4eCBDUE0gT3B0aW9ucwpAQCAtMTQ1LDYgKzE2MSw3IEBACiAjIENPTkZJR19JMkNfU1BJX1VDT0RFX1BBVENIIGlzIG5vdCBzZXQKICMgQ09ORklHX0kyQ19TUElfU01DMV9VQ09ERV9QQVRDSCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUTJBRFMgaXMgbm90IHNldAorIyBDT05GSUdfSVBJQyBpcyBub3Qgc2V0CiAjIENPTkZJR19NUElDIGlzIG5vdCBzZXQKICMgQ09ORklHX01QSUNfV0VJUkQgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0k4MjU5IGlzIG5vdCBzZXQKQEAgLTE1NSw3ICsxNzIsNyBAQAogIyBDT05GSUdfUFBDX0lORElSRUNUX0lPIGlzIG5vdCBzZXQKICMgQ09ORklHX0dFTkVSSUNfSU9NQVAgaXMgbm90IHNldAogIyBDT05GSUdfQ1BVX0ZSRVEgaXMgbm90IHNldAotIyBDT05GSUdfQ1BNMiBpcyBub3Qgc2V0CitDT05GSUdfUFBDX0NQTV9ORVdfQklORElORz15CiAjIENPTkZJR19GU0xfVUxJMTU3NSBpcyBub3Qgc2V0CiBDT05GSUdfQ1BNPXkKIApAQCAtMTcyLDEzICsxODksMTcgQEAKICMgQ09ORklHX0haXzMwMCBpcyBub3Qgc2V0CiBDT05GSUdfSFpfMTAwMD15CiBDT05GSUdfSFo9MTAwMAorIyBDT05GSUdfU0NIRURfSFJUSUNLIGlzIG5vdCBzZXQKIENPTkZJR19QUkVFTVBUX05PTkU9eQogIyBDT05GSUdfUFJFRU1QVF9WT0xVTlRBUlkgaXMgbm90IHNldAogIyBDT05GSUdfUFJFRU1QVCBpcyBub3Qgc2V0CiBDT05GSUdfQklORk1UX0VMRj15CiAjIENPTkZJR19CSU5GTVRfTUlTQyBpcyBub3Qgc2V0CiBDT05GSUdfTUFUSF9FTVVMQVRJT049eQorIyBDT05GSUdfSU9NTVVfSEVMUEVSIGlzIG5vdCBzZXQKIENPTkZJR19BUkNIX0VOQUJMRV9NRU1PUllfSE9UUExVRz15CitDT05GSUdfQVJDSF9IQVNfV0FMS19NRU1PUlk9eQorQ09ORklHX0FSQ0hfRU5BQkxFX01FTU9SWV9IT1RSRU1PVkU9eQogQ09ORklHX0FSQ0hfRkxBVE1FTV9FTkFCTEU9eQogQ09ORklHX0FSQ0hfUE9QVUxBVEVTX05PREVfTUFQPXkKIENPTkZJR19TRUxFQ1RfTUVNT1JZX01PREVMPXkKQEAgLTE5NywxMSArMjE4LDcgQEAKICMgQ09ORklHX1BST0NfREVWSUNFVFJFRSBpcyBub3Qgc2V0CiAjIENPTkZJR19DTURMSU5FX0JPT0wgaXMgbm90IHNldAogIyBDT05GSUdfUE0gaXMgbm90IHNldAotQ09ORklHX1NVU1BFTkRfVVBfUE9TU0lCTEU9eQotQ09ORklHX0hJQkVSTkFUSU9OX1VQX1BPU1NJQkxFPXkKICMgQ09ORklHX1NFQ0NPTVAgaXMgbm90IHNldAotQ09ORklHX1dBTlRfREVWSUNFX1RSRUU9eQotQ09ORklHX0RFVklDRV9UUkVFPSIiCiBDT05GSUdfSVNBX0RNQV9BUEk9eQogCiAjCkBAIC0yNDYsNiArMjYzLDcgQEAKICMgQ09ORklHX1hGUk1fVVNFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19YRlJNX1NVQl9QT0xJQ1kgaXMgbm90IHNldAogIyBDT05GSUdfWEZSTV9NSUdSQVRFIGlzIG5vdCBzZXQKKyMgQ09ORklHX1hGUk1fU1RBVElTVElDUyBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRfS0VZIGlzIG5vdCBzZXQKIENPTkZJR19JTkVUPXkKIENPTkZJR19JUF9NVUxUSUNBU1Q9eQpAQCAtMzAxLDYgKzMxOSw3IEBACiAjCiAjIENPTkZJR19ORVRfUEtUR0VOIGlzIG5vdCBzZXQKICMgQ09ORklHX0hBTVJBRElPIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NBTiBpcyBub3Qgc2V0CiAjIENPTkZJR19JUkRBIGlzIG5vdCBzZXQKICMgQ09ORklHX0JUIGlzIG5vdCBzZXQKICMgQ09ORklHX0FGX1JYUlBDIGlzIG5vdCBzZXQKQEAgLTM0MCw2ICszNTksOCBAQAogIyBDT05GSUdfQVRBX09WRVJfRVRIIGlzIG5vdCBzZXQKIENPTkZJR19NSVNDX0RFVklDRVM9eQogIyBDT05GSUdfRUVQUk9NXzkzQ1g2IGlzIG5vdCBzZXQKKyMgQ09ORklHX0VOQ0xPU1VSRV9TRVJWSUNFUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9JREU9eQogIyBDT05GSUdfSURFIGlzIG5vdCBzZXQKIAogIwpAQCAtMzc0LDExICszOTUsOCBAQAogIyBDT05GSUdfU01TQ19QSFkgaXMgbm90IHNldAogIyBDT05GSUdfQlJPQURDT01fUEhZIGlzIG5vdCBzZXQKICMgQ09ORklHX0lDUExVU19QSFkgaXMgbm90IHNldAorIyBDT05GSUdfUkVBTFRFS19QSFkgaXMgbm90IHNldAogQ09ORklHX0ZJWEVEX1BIWT15Ci1DT05GSUdfRklYRURfTUlJXzEwX0ZEWD15Ci1DT05GSUdfRklYRURfTUlJXzEwMF9GRFg9eQotIyBDT05GSUdfRklYRURfTUlJXzEwMDBfRkRYIGlzIG5vdCBzZXQKLUNPTkZJR19GSVhFRF9NSUlfQU1OVD0xCiAjIENPTkZJR19NRElPX0JJVEJBTkcgaXMgbm90IHNldAogQ09ORklHX05FVF9FVEhFUk5FVD15CiBDT05GSUdfTUlJPXkKQEAgLTM5Miw2ICs0MTAsOCBAQAogQ09ORklHX0ZTX0VORVRfSEFTX0ZFQz15CiBDT05GSUdfRlNfRU5FVF9NRElPX0ZFQz15CiBDT05GSUdfTkVUREVWXzEwMDA9eQorIyBDT05GSUdfRTEwMDBFX0VOQUJMRUQgaXMgbm90IHNldAorIyBDT05GSUdfR0lBTkZBUiBpcyBub3Qgc2V0CiBDT05GSUdfTkVUREVWXzEwMDAwPXkKIAogIwpAQCAtNDAyLDcgKzQyMiw2IEBACiAjIENPTkZJR19XQU4gaXMgbm90IHNldAogIyBDT05GSUdfUFBQIGlzIG5vdCBzZXQKICMgQ09ORklHX1NMSVAgaXMgbm90IHNldAotIyBDT05GSUdfU0hBUEVSIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVENPTlNPTEUgaXMgbm90IHNldAogIyBDT05GSUdfTkVUUE9MTCBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRfUE9MTF9DT05UUk9MTEVSIGlzIG5vdCBzZXQKQEAgLTUxOSw2ICs1MzgsNyBAQAogIyBDT05GSUdfU0VOU09SU19XODM2MjdIRiBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1c4MzYyN0VIRiBpcyBub3Qgc2V0CiAjIENPTkZJR19IV01PTl9ERUJVR19DSElQIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RIRVJNQUwgaXMgbm90IHNldAogIyBDT05GSUdfV0FUQ0hET0cgaXMgbm90IHNldAogCiAjCkBAIC01NjgsMTUgKzU4OCwxMyBAQAogIwogIyBOT1RFOiBVU0JfU1RPUkFHRSBlbmFibGVzIFNDU0ksIGFuZCAnU0NTSSBkaXNrIHN1cHBvcnQnCiAjCi0KLSMKLSMgVVNCIEdhZGdldCBTdXBwb3J0Ci0jCiAjIENPTkZJR19VU0JfR0FER0VUIGlzIG5vdCBzZXQKICMgQ09ORklHX01NQyBpcyBub3Qgc2V0CisjIENPTkZJR19NRU1TVElDSyBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVdfTEVEUyBpcyBub3Qgc2V0CiAjIENPTkZJR19FREFDIGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19DTEFTUyBpcyBub3Qgc2V0CisjIENPTkZJR19ETUFERVZJQ0VTIGlzIG5vdCBzZXQKIAogIwogIyBVc2Vyc3BhY2UgSS9PCkBAIC02MDQsMTIgKzYyMiwxMCBAQAogIyBDT05GSUdfWEZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0dGUzJfRlMgaXMgbm90IHNldAogIyBDT05GSUdfT0NGUzJfRlMgaXMgbm90IHNldAotIyBDT05GSUdfTUlOSVhfRlMgaXMgbm90IHNldAotIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAorQ09ORklHX0ROT1RJRlk9eQogQ09ORklHX0lOT1RJRlk9eQogQ09ORklHX0lOT1RJRllfVVNFUj15CiAjIENPTkZJR19RVU9UQSBpcyBub3Qgc2V0Ci1DT05GSUdfRE5PVElGWT15CiAjIENPTkZJR19BVVRPRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfQVVUT0ZTNF9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19GVVNFX0ZTIGlzIG5vdCBzZXQKQEAgLTY1MSw4ICs2NjcsMTAgQEAKICMgQ09ORklHX0VGU19GUyBpcyBub3Qgc2V0CiBDT05GSUdfQ1JBTUZTPXkKICMgQ09ORklHX1ZYRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfTUlOSVhfRlMgaXMgbm90IHNldAogIyBDT05GSUdfSFBGU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19RTlg0RlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfU1lTVl9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19VRlNfRlMgaXMgbm90IHNldAogQ09ORklHX05FVFdPUktfRklMRVNZU1RFTVM9eQpAQCAtNjk5LDcgKzcxNyw2IEBACiAjIENPTkZJR19TWVNWNjhfUEFSVElUSU9OIGlzIG5vdCBzZXQKICMgQ09ORklHX05MUyBpcyBub3Qgc2V0CiAjIENPTkZJR19ETE0gaXMgbm90IHNldAotIyBDT05GSUdfVUNDX1NMT1cgaXMgbm90IHNldAogCiAjCiAjIExpYnJhcnkgcm91dGluZXMKQEAgLTcxNiw3ICs3MzMsNiBAQAogQ09ORklHX0hBU19JT01FTT15CiBDT05GSUdfSEFTX0lPUE9SVD15CiBDT05GSUdfSEFTX0RNQT15Ci0jIENPTkZJR19JTlNUUlVNRU5UQVRJT04gaXMgbm90IHNldAogCiAjCiAjIEtlcm5lbCBoYWNraW5nCkBAIC03MzAsNiArNzQ2LDcgQEAKICMgQ09ORklHX0hFQURFUlNfQ0hFQ0sgaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfS0VSTkVMIGlzIG5vdCBzZXQKICMgQ09ORklHX1NMVUJfREVCVUdfT04gaXMgbm90IHNldAorIyBDT05GSUdfU0xVQl9TVEFUUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQU1QTEVTIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19FQVJMWV9ERUJVRyBpcyBub3Qgc2V0CiAKQEAgLTczOSw2ICs3NTYsNDkgQEAKICMgQ09ORklHX0tFWVMgaXMgbm90IHNldAogIyBDT05GSUdfU0VDVVJJVFkgaXMgbm90IHNldAogIyBDT05GSUdfU0VDVVJJVFlfRklMRV9DQVBBQklMSVRJRVMgaXMgbm90IHNldAotIyBDT05GSUdfQ1JZUFRPIGlzIG5vdCBzZXQKK0NPTkZJR19DUllQVE89eQorIyBDT05GSUdfQ1JZUFRPX1NFUUlWIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19NQU5BR0VSIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19ITUFDIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19YQ0JDIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19OVUxMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19NRDQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX01ENSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0hBMSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0hBMjU2IGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19TSEE1MTIgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1dQNTEyIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19UR1IxOTIgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0dGMTI4TVVMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19FQ0IgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NCQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fUENCQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fTFJXIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19YVFMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NUUiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fR0NNIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DQ00gaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NSWVBURCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fREVTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19GQ1JZUFQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0JMT1dGSVNIIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19UV09GSVNIIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19TRVJQRU5UIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19BRVMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NBU1Q1IGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DQVNUNiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fVEVBIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19BUkM0IGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19LSEFaQUQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0FOVUJJUyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0VFRCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0FMU0EyMCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fREVGTEFURSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fTUlDSEFFTF9NSUMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NSQzMyQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ0FNRUxMSUEgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0FVVEhFTkMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0xaTyBpcyBub3Qgc2V0CitDT05GSUdfQ1JZUFRPX0hXPXkKICMgQ09ORklHX1BQQ19DTE9DSyBpcyBub3Qgc2V0CiBDT05GSUdfUFBDX0xJQl9SSEVBUD15CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM4ODVfYWRzX2RlZmNvbmZpZyBiL2FyY2gvcG93ZXJwYy9jb25maWdzL21wYzg4NV9hZHNfZGVmY29uZmlnCmluZGV4IDIyZjgxNzEuLjgyMTUxYjkgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jb25maWdzL21wYzg4NV9hZHNfZGVmY29uZmlnCisrKyBiL2FyY2gvcG93ZXJwYy9jb25maWdzL21wYzg4NV9hZHNfZGVmY29uZmlnCkBAIC0xLDcgKzEsNyBAQAogIwogIyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBtYWtlIGNvbmZpZzogZG9uJ3QgZWRpdAotIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjI0LXJjNAotIyBUaHUgRGVjICA2IDE2OjQ5OjAxIDIwMDcKKyMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4yNS1yYzYKKyMgTW9uIE1hciAyNCAwODo0ODozNSAyMDA4CiAjCiAjIENPTkZJR19QUEM2NCBpcyBub3Qgc2V0CiAKQEAgLTI2LDYgKzI2LDcgQEAKIENPTkZJR19HRU5FUklDX1RJTUVfVlNZU0NBTEw9eQogQ09ORklHX0dFTkVSSUNfQ0xPQ0tFVkVOVFM9eQogQ09ORklHX0dFTkVSSUNfSEFSRElSUVM9eQorIyBDT05GSUdfSEFWRV9TRVRVUF9QRVJfQ1BVX0FSRUEgaXMgbm90IHNldAogQ09ORklHX0lSUV9QRVJfQ1BVPXkKIENPTkZJR19SV1NFTV9YQ0hHQUREX0FMR09SSVRITT15CiBDT05GSUdfQVJDSF9IQVNfSUxPRzJfVTMyPXkKQEAgLTYzLDE1ICs2NCwxOSBAQAogIyBDT05GSUdfUE9TSVhfTVFVRVVFIGlzIG5vdCBzZXQKICMgQ09ORklHX0JTRF9QUk9DRVNTX0FDQ1QgaXMgbm90IHNldAogIyBDT05GSUdfVEFTS1NUQVRTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VTRVJfTlMgaXMgbm90IHNldAotIyBDT05GSUdfUElEX05TIGlzIG5vdCBzZXQKICMgQ09ORklHX0FVRElUIGlzIG5vdCBzZXQKICMgQ09ORklHX0lLQ09ORklHIGlzIG5vdCBzZXQKIENPTkZJR19MT0dfQlVGX1NISUZUPTE0CiAjIENPTkZJR19DR1JPVVBTIGlzIG5vdCBzZXQKK0NPTkZJR19HUk9VUF9TQ0hFRD15CiAjIENPTkZJR19GQUlSX0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JUX0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKK0NPTkZJR19VU0VSX1NDSEVEPXkKKyMgQ09ORklHX0NHUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CiBDT05GSUdfU1lTRlNfREVQUkVDQVRFRD15CitDT05GSUdfU1lTRlNfREVQUkVDQVRFRF9WMj15CiAjIENPTkZJR19SRUxBWSBpcyBub3Qgc2V0CisjIENPTkZJR19OQU1FU1BBQ0VTIGlzIG5vdCBzZXQKICMgQ09ORklHX0JMS19ERVZfSU5JVFJEIGlzIG5vdCBzZXQKICMgQ09ORklHX0NDX09QVElNSVpFX0ZPUl9TSVpFIGlzIG5vdCBzZXQKIENPTkZJR19TWVNDVEw9eQpAQCAtODQsMTEgKzg5LDEzIEBACiBDT05GSUdfUFJJTlRLPXkKIENPTkZJR19CVUc9eQogIyBDT05GSUdfRUxGX0NPUkUgaXMgbm90IHNldAorQ09ORklHX0NPTVBBVF9CUks9eQogIyBDT05GSUdfQkFTRV9GVUxMIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZVVEVYIGlzIG5vdCBzZXQKIENPTkZJR19BTk9OX0lOT0RFUz15CiBDT05GSUdfRVBPTEw9eQogQ09ORklHX1NJR05BTEZEPXkKK0NPTkZJR19USU1FUkZEPXkKIENPTkZJR19FVkVOVEZEPXkKIENPTkZJR19TSE1FTT15CiAjIENPTkZJR19WTV9FVkVOVF9DT1VOVEVSUyBpcyBub3Qgc2V0CkBAIC05Niw2ICsxMDMsMTMgQEAKICMgQ09ORklHX1NMQUIgaXMgbm90IHNldAogQ09ORklHX1NMVUI9eQogIyBDT05GSUdfU0xPQiBpcyBub3Qgc2V0CisjIENPTkZJR19QUk9GSUxJTkcgaXMgbm90IHNldAorIyBDT05GSUdfTUFSS0VSUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9PUFJPRklMRT15CitDT05GSUdfSEFWRV9LUFJPQkVTPXkKK0NPTkZJR19IQVZFX0tSRVRQUk9CRVM9eQorQ09ORklHX1BST0NfUEFHRV9NT05JVE9SPXkKK0NPTkZJR19TTEFCSU5GTz15CiAjIENPTkZJR19USU5ZX1NITUVNIGlzIG5vdCBzZXQKIENPTkZJR19CQVNFX1NNQUxMPTEKICMgQ09ORklHX01PRFVMRVMgaXMgbm90IHNldApAQCAtMTE3LDEyICsxMzEsMTMgQEAKICMgQ09ORklHX0RFRkFVTFRfQ0ZRIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFRkFVTFRfTk9PUCBpcyBub3Qgc2V0CiBDT05GSUdfREVGQVVMVF9JT1NDSEVEPSJkZWFkbGluZSIKK0NPTkZJR19DTEFTU0lDX1JDVT15CiAKICMKICMgUGxhdGZvcm0gc3VwcG9ydAogIwotIyBDT05GSUdfUFBDX01QQzUyeHggaXMgbm90IHNldAotIyBDT05GSUdfUFBDX01QQzUyMDAgaXMgbm90IHNldAorIyBDT05GSUdfUFBDX01QQzUxMnggaXMgbm90IHNldAorIyBDT05GSUdfUFBDX01QQzUxMjEgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0NFTEwgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0NFTExfTkFUSVZFIGlzIG5vdCBzZXQKIENPTkZJR19DUE0xPXkKQEAgLTEzMCw2ICsxNDUsNyBAQAogIyBDT05GSUdfTVBDODZYQURTIGlzIG5vdCBzZXQKIENPTkZJR19NUEM4ODVBRFM9eQogIyBDT05GSUdfUFBDX0VQODhYQyBpcyBub3Qgc2V0CisjIENPTkZJR19QUENfQURERVI4NzUgaXMgbm90IHNldAogCiAjCiAjIEZyZWVzY2FsZSBFdGhlcm5ldCBkcml2ZXIgcGxhdGZvcm0tc3BlY2lmaWMgb3B0aW9ucwpAQCAtMTUzLDYgKzE2OSw3IEBACiAjIENPTkZJR19JMkNfU1BJX1VDT0RFX1BBVENIIGlzIG5vdCBzZXQKICMgQ09ORklHX0kyQ19TUElfU01DMV9VQ09ERV9QQVRDSCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUTJBRFMgaXMgbm90IHNldAorIyBDT05GSUdfSVBJQyBpcyBub3Qgc2V0CiAjIENPTkZJR19NUElDIGlzIG5vdCBzZXQKICMgQ09ORklHX01QSUNfV0VJUkQgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0k4MjU5IGlzIG5vdCBzZXQKQEAgLTE2Myw3ICsxODAsNiBAQAogIyBDT05GSUdfUFBDX0lORElSRUNUX0lPIGlzIG5vdCBzZXQKICMgQ09ORklHX0dFTkVSSUNfSU9NQVAgaXMgbm90IHNldAogIyBDT05GSUdfQ1BVX0ZSRVEgaXMgbm90IHNldAotIyBDT05GSUdfQ1BNMiBpcyBub3Qgc2V0CiBDT05GSUdfUFBDX0NQTV9ORVdfQklORElORz15CiAjIENPTkZJR19GU0xfVUxJMTU3NSBpcyBub3Qgc2V0CiBDT05GSUdfQ1BNPXkKQEAgLTE4MSw2ICsxOTcsNyBAQAogIyBDT05GSUdfSFpfMzAwIGlzIG5vdCBzZXQKICMgQ09ORklHX0haXzEwMDAgaXMgbm90IHNldAogQ09ORklHX0haPTEwMAorIyBDT05GSUdfU0NIRURfSFJUSUNLIGlzIG5vdCBzZXQKIENPTkZJR19QUkVFTVBUX05PTkU9eQogIyBDT05GSUdfUFJFRU1QVF9WT0xVTlRBUlkgaXMgbm90IHNldAogIyBDT05GSUdfUFJFRU1QVCBpcyBub3Qgc2V0CkBAIC0xODgsNyArMjA1LDEwIEBACiAjIENPTkZJR19CSU5GTVRfTUlTQyBpcyBub3Qgc2V0CiAjIENPTkZJR19NQVRIX0VNVUxBVElPTiBpcyBub3Qgc2V0CiBDT05GSUdfOFhYX01JTklNQUxfRlBFTVU9eQorIyBDT05GSUdfSU9NTVVfSEVMUEVSIGlzIG5vdCBzZXQKIENPTkZJR19BUkNIX0VOQUJMRV9NRU1PUllfSE9UUExVRz15CitDT05GSUdfQVJDSF9IQVNfV0FMS19NRU1PUlk9eQorQ09ORklHX0FSQ0hfRU5BQkxFX01FTU9SWV9IT1RSRU1PVkU9eQogQ09ORklHX0FSQ0hfRkxBVE1FTV9FTkFCTEU9eQogQ09ORklHX0FSQ0hfUE9QVUxBVEVTX05PREVfTUFQPXkKIENPTkZJR19TRUxFQ1RfTUVNT1JZX01PREVMPXkKQEAgLTIwNywxMSArMjI3LDcgQEAKIENPTkZJR19QUk9DX0RFVklDRVRSRUU9eQogIyBDT05GSUdfQ01ETElORV9CT09MIGlzIG5vdCBzZXQKICMgQ09ORklHX1BNIGlzIG5vdCBzZXQKLUNPTkZJR19TVVNQRU5EX1VQX1BPU1NJQkxFPXkKLUNPTkZJR19ISUJFUk5BVElPTl9VUF9QT1NTSUJMRT15CiAjIENPTkZJR19TRUNDT01QIGlzIG5vdCBzZXQKLUNPTkZJR19XQU5UX0RFVklDRV9UUkVFPXkKLUNPTkZJR19ERVZJQ0VfVFJFRT0ibXBjODg1YWRzLmR0cyIKIENPTkZJR19JU0FfRE1BX0FQST15CiAKICMKQEAgLTMwOCw2ICszMjQsNyBAQAogIwogIyBDT05GSUdfTkVUX1BLVEdFTiBpcyBub3Qgc2V0CiAjIENPTkZJR19IQU1SQURJTyBpcyBub3Qgc2V0CisjIENPTkZJR19DQU4gaXMgbm90IHNldAogIyBDT05GSUdfSVJEQSBpcyBub3Qgc2V0CiAjIENPTkZJR19CVCBpcyBub3Qgc2V0CiAjIENPTkZJR19BRl9SWFJQQyBpcyBub3Qgc2V0CkBAIC00MTgsNiArNDM1LDcgQEAKICMgQ09ORklHX1BBUlBPUlQgaXMgbm90IHNldAogIyBDT05GSUdfQkxLX0RFViBpcyBub3Qgc2V0CiAjIENPTkZJR19NSVNDX0RFVklDRVMgaXMgbm90IHNldAorQ09ORklHX0hBVkVfSURFPXkKICMgQ09ORklHX0lERSBpcyBub3Qgc2V0CiAKICMKQEAgLTQ1Miw2ICs0NzAsNyBAQAogIyBDT05GSUdfU01TQ19QSFkgaXMgbm90IHNldAogIyBDT05GSUdfQlJPQURDT01fUEhZIGlzIG5vdCBzZXQKICMgQ09ORklHX0lDUExVU19QSFkgaXMgbm90IHNldAorIyBDT05GSUdfUkVBTFRFS19QSFkgaXMgbm90IHNldAogIyBDT05GSUdfRklYRURfUEhZIGlzIG5vdCBzZXQKICMgQ09ORklHX01ESU9fQklUQkFORyBpcyBub3Qgc2V0CiBDT05GSUdfTkVUX0VUSEVSTkVUPXkKQEAgLTQ3Niw3ICs0OTUsNiBAQAogIyBDT05GSUdfV0FOIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQUCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTElQIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NIQVBFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRDT05TT0xFIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVFBPTEwgaXMgbm90IHNldAogIyBDT05GSUdfTkVUX1BPTExfQ09OVFJPTExFUiBpcyBub3Qgc2V0CkBAIC01MzksNiArNTU3LDcgQEAKICMgQ09ORklHX1cxIGlzIG5vdCBzZXQKICMgQ09ORklHX1BPV0VSX1NVUFBMWSBpcyBub3Qgc2V0CiAjIENPTkZJR19IV01PTiBpcyBub3Qgc2V0CisjIENPTkZJR19USEVSTUFMIGlzIG5vdCBzZXQKICMgQ09ORklHX1dBVENIRE9HIGlzIG5vdCBzZXQKIAogIwpAQCAtNTc4LDkgKzU5NywxMSBAQAogIyBDT05GSUdfU09VTkQgaXMgbm90IHNldAogIyBDT05GSUdfVVNCX1NVUFBPUlQgaXMgbm90IHNldAogIyBDT05GSUdfTU1DIGlzIG5vdCBzZXQKKyMgQ09ORklHX01FTVNUSUNLIGlzIG5vdCBzZXQKICMgQ09ORklHX05FV19MRURTIGlzIG5vdCBzZXQKICMgQ09ORklHX0VEQUMgaXMgbm90IHNldAogIyBDT05GSUdfUlRDX0NMQVNTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RNQURFVklDRVMgaXMgbm90IHNldAogCiAjCiAjIFVzZXJzcGFjZSBJL08KQEAgLTU5OSwxMSArNjIwLDkgQEAKICMgQ09ORklHX1hGU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19HRlMyX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX09DRlMyX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX01JTklYX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1JPTUZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ROT1RJRlkgaXMgbm90IHNldAogIyBDT05GSUdfSU5PVElGWSBpcyBub3Qgc2V0CiAjIENPTkZJR19RVU9UQSBpcyBub3Qgc2V0Ci0jIENPTkZJR19ETk9USUZZIGlzIG5vdCBzZXQKICMgQ09ORklHX0FVVE9GU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19BVVRPRlM0X0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZVU0VfRlMgaXMgbm90IHNldApAQCAtNjQ2LDggKzY2NSwxMCBAQAogIyBDT05GSUdfSkZGUzJfRlMgaXMgbm90IHNldAogQ09ORklHX0NSQU1GUz15CiAjIENPTkZJR19WWEZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX01JTklYX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0hQRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfUU5YNEZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JPTUZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1NZU1ZfRlMgaXMgbm90IHNldAogIyBDT05GSUdfVUZTX0ZTIGlzIG5vdCBzZXQKIENPTkZJR19ORVRXT1JLX0ZJTEVTWVNURU1TPXkKQEAgLTY5NCw3ICs3MTUsNiBAQAogIyBDT05GSUdfU1lTVjY4X1BBUlRJVElPTiBpcyBub3Qgc2V0CiAjIENPTkZJR19OTFMgaXMgbm90IHNldAogIyBDT05GSUdfRExNIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VDQ19TTE9XIGlzIG5vdCBzZXQKIAogIwogIyBMaWJyYXJ5IHJvdXRpbmVzCkBAIC03MDksNyArNzI5LDYgQEAKIENPTkZJR19IQVNfSU9NRU09eQogQ09ORklHX0hBU19JT1BPUlQ9eQogQ09ORklHX0hBU19ETUE9eQotIyBDT05GSUdfSU5TVFJVTUVOVEFUSU9OIGlzIG5vdCBzZXQKIAogIwogIyBLZXJuZWwgaGFja2luZwpAQCAtNzI4LDYgKzc0Nyw3IEBACiAjIENPTkZJR19TQ0hFRFNUQVRTIGlzIG5vdCBzZXQKICMgQ09ORklHX1RJTUVSX1NUQVRTIGlzIG5vdCBzZXQKICMgQ09ORklHX1NMVUJfREVCVUdfT04gaXMgbm90IHNldAorIyBDT05GSUdfU0xVQl9TVEFUUyBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19TUElOTE9DSyBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19NVVRFWEVTIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NQSU5MT0NLX1NMRUVQIGlzIG5vdCBzZXQKQEAgLTczOCw4ICs3NTgsOCBAQAogIyBDT05GSUdfREVCVUdfVk0gaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfTElTVCBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19TRyBpcyBub3Qgc2V0Ci1DT05GSUdfRk9SQ0VEX0lOTElOSU5HPXkKICMgQ09ORklHX0JPT1RfUFJJTlRLX0RFTEFZIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JBQ0tUUkFDRV9TRUxGX1RFU1QgaXMgbm90IHNldAogIyBDT05GSUdfRkFVTFRfSU5KRUNUSU9OIGlzIG5vdCBzZXQKICMgQ09ORklHX1NBTVBMRVMgaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfU1RBQ0tPVkVSRkxPVyBpcyBub3Qgc2V0CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvY29uZmlncy9wYXNlbWlfZGVmY29uZmlnIGIvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcGFzZW1pX2RlZmNvbmZpZwppbmRleCA3OTdmMGRmLi4wOWYzMDYyIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvY29uZmlncy9wYXNlbWlfZGVmY29uZmlnCisrKyBiL2FyY2gvcG93ZXJwYy9jb25maWdzL3Bhc2VtaV9kZWZjb25maWcKQEAgLTEsNyArMSw3IEBACiAjCiAjIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIG1ha2UgY29uZmlnOiBkb24ndCBlZGl0Ci0jIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMjQtcmM2Ci0jIFR1ZSBKYW4gMTUgMTA6MjY6MTAgMjAwOAorIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjI1LXJjNgorIyBUdWUgTWFyIDI1IDEwOjI1OjQ4IDIwMDgKICMKIENPTkZJR19QUEM2ND15CiAKQEAgLTI3LDYgKzI3LDcgQEAKIENPTkZJR19HRU5FUklDX1RJTUVfVlNZU0NBTEw9eQogQ09ORklHX0dFTkVSSUNfQ0xPQ0tFVkVOVFM9eQogQ09ORklHX0dFTkVSSUNfSEFSRElSUVM9eQorQ09ORklHX0hBVkVfU0VUVVBfUEVSX0NQVV9BUkVBPXkKIENPTkZJR19JUlFfUEVSX0NQVT15CiBDT05GSUdfUldTRU1fWENIR0FERF9BTEdPUklUSE09eQogQ09ORklHX0FSQ0hfSEFTX0lMT0cyX1UzMj15CkBAIC02NywxNyArNjgsMTkgQEAKICMgQ09ORklHX1BPU0lYX01RVUVVRSBpcyBub3Qgc2V0CiAjIENPTkZJR19CU0RfUFJPQ0VTU19BQ0NUIGlzIG5vdCBzZXQKICMgQ09ORklHX1RBU0tTVEFUUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19VU0VSX05TIGlzIG5vdCBzZXQKLSMgQ09ORklHX1BJRF9OUyBpcyBub3Qgc2V0CiAjIENPTkZJR19BVURJVCBpcyBub3Qgc2V0CiAjIENPTkZJR19JS0NPTkZJRyBpcyBub3Qgc2V0CiBDT05GSUdfTE9HX0JVRl9TSElGVD0xNwogIyBDT05GSUdfQ0dST1VQUyBpcyBub3Qgc2V0Ci1DT05GSUdfRkFJUl9HUk9VUF9TQ0hFRD15Ci1DT05GSUdfRkFJUl9VU0VSX1NDSEVEPXkKLSMgQ09ORklHX0ZBSVJfQ0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKIENPTkZJR19TWVNGU19ERVBSRUNBVEVEPXkKK0NPTkZJR19TWVNGU19ERVBSRUNBVEVEX1YyPXkKICMgQ09ORklHX1JFTEFZIGlzIG5vdCBzZXQKK0NPTkZJR19OQU1FU1BBQ0VTPXkKKyMgQ09ORklHX1VUU19OUyBpcyBub3Qgc2V0CisjIENPTkZJR19JUENfTlMgaXMgbm90IHNldAorIyBDT05GSUdfVVNFUl9OUyBpcyBub3Qgc2V0CisjIENPTkZJR19QSURfTlMgaXMgbm90IHNldAogQ09ORklHX0JMS19ERVZfSU5JVFJEPXkKIENPTkZJR19JTklUUkFNRlNfU09VUkNFPSIiCiAjIENPTkZJR19DQ19PUFRJTUlaRV9GT1JfU0laRSBpcyBub3Qgc2V0CkBAIC05MSwxMSArOTQsMTMgQEAKIENPTkZJR19QUklOVEs9eQogQ09ORklHX0JVRz15CiBDT05GSUdfRUxGX0NPUkU9eQorQ09ORklHX0NPTVBBVF9CUks9eQogQ09ORklHX0JBU0VfRlVMTD15CiBDT05GSUdfRlVURVg9eQogQ09ORklHX0FOT05fSU5PREVTPXkKIENPTkZJR19FUE9MTD15CiBDT05GSUdfU0lHTkFMRkQ9eQorQ09ORklHX1RJTUVSRkQ9eQogQ09ORklHX0VWRU5URkQ9eQogQ09ORklHX1NITUVNPXkKIENPTkZJR19WTV9FVkVOVF9DT1VOVEVSUz15CkBAIC0xMDMsNiArMTA4LDE1IEBACiAjIENPTkZJR19TTEFCIGlzIG5vdCBzZXQKIENPTkZJR19TTFVCPXkKICMgQ09ORklHX1NMT0IgaXMgbm90IHNldAorQ09ORklHX1BST0ZJTElORz15CisjIENPTkZJR19NQVJLRVJTIGlzIG5vdCBzZXQKK0NPTkZJR19PUFJPRklMRT15CitDT05GSUdfSEFWRV9PUFJPRklMRT15CisjIENPTkZJR19LUFJPQkVTIGlzIG5vdCBzZXQKK0NPTkZJR19IQVZFX0tQUk9CRVM9eQorQ09ORklHX0hBVkVfS1JFVFBST0JFUz15CitDT05GSUdfUFJPQ19QQUdFX01PTklUT1I9eQorQ09ORklHX1NMQUJJTkZPPXkKIENPTkZJR19SVF9NVVRFWEVTPXkKICMgQ09ORklHX1RJTllfU0hNRU0gaXMgbm90IHNldAogQ09ORklHX0JBU0VfU01BTEw9MApAQCAtMTMwLDYgKzE0NCw3IEBACiAjIENPTkZJR19ERUZBVUxUX0NGUSBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUZBVUxUX05PT1AgaXMgbm90IHNldAogQ09ORklHX0RFRkFVTFRfSU9TQ0hFRD0iYW50aWNpcGF0b3J5IgorQ09ORklHX0NMQVNTSUNfUkNVPXkKIAogIwogIyBQbGF0Zm9ybSBzdXBwb3J0CkBAIC0xNDAsOCArMTU1LDggQEAKICMgQ09ORklHX1BQQ184Nnh4IGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19QU0VSSUVTIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19JU0VSSUVTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1BQQ19NUEM1Mnh4IGlzIG5vdCBzZXQKLSMgQ09ORklHX1BQQ19NUEM1MjAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ19NUEM1MTJ4IGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ19NUEM1MTIxIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19QTUFDIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19NQVBMRSBpcyBub3Qgc2V0CiBDT05GSUdfUFBDX1BBU0VNST15CkBAIC0xNTksNiArMTc0LDcgQEAKICMgQ09ORklHX1BQQ19JQk1fQ0VMTF9CTEFERSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUTJBRFMgaXMgbm90IHNldAogQ09ORklHX1BQQ19OQVRJVkU9eQorIyBDT05GSUdfSVBJQyBpcyBub3Qgc2V0CiBDT05GSUdfTVBJQz15CiAjIENPTkZJR19NUElDX1dFSVJEIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19JODI1OSBpcyBub3Qgc2V0CkBAIC0xODksNyArMjA1LDYgQEAKICMgQ1BVIEZyZXF1ZW5jeSBkcml2ZXJzCiAjCiBDT05GSUdfUFBDX1BBU0VNSV9DUFVGUkVRPXkKLSMgQ09ORklHX0NQTTIgaXMgbm90IHNldAogIyBDT05GSUdfRlNMX1VMSTE1NzUgaXMgbm90IHNldAogCiAjCkBAIC0yMDQsMTYgKzIxOSwyMCBAQAogIyBDT05GSUdfSFpfMzAwIGlzIG5vdCBzZXQKIENPTkZJR19IWl8xMDAwPXkKIENPTkZJR19IWj0xMDAwCisjIENPTkZJR19TQ0hFRF9IUlRJQ0sgaXMgbm90IHNldAogQ09ORklHX1BSRUVNUFRfTk9ORT15CiAjIENPTkZJR19QUkVFTVBUX1ZPTFVOVEFSWSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUkVFTVBUIGlzIG5vdCBzZXQKLSMgQ09ORklHX1BSRUVNUFRfQktMIGlzIG5vdCBzZXQKIENPTkZJR19CSU5GTVRfRUxGPXkKK0NPTkZJR19DT01QQVRfQklORk1UX0VMRj15CiAjIENPTkZJR19CSU5GTVRfTUlTQyBpcyBub3Qgc2V0CiBDT05GSUdfRk9SQ0VfTUFYX1pPTkVPUkRFUj05CiBDT05GSUdfSFVHRVRMQl9QQUdFX1NJWkVfVkFSSUFCTEU9eQogQ09ORklHX0lPTU1VX1ZNRVJHRT15CitDT05GSUdfSU9NTVVfSEVMUEVSPXkKIENPTkZJR19BUkNIX0VOQUJMRV9NRU1PUllfSE9UUExVRz15CitDT05GSUdfQVJDSF9IQVNfV0FMS19NRU1PUlk9eQorQ09ORklHX0FSQ0hfRU5BQkxFX01FTU9SWV9IT1RSRU1PVkU9eQogIyBDT05GSUdfS0VYRUMgaXMgbm90IHNldAogIyBDT05GSUdfQ1JBU0hfRFVNUCBpcyBub3Qgc2V0CiAjIENPTkZJR19JUlFfQUxMX0NQVVMgaXMgbm90IHNldApAQCAtMjM2LDEyICsyNTUsMTIgQEAKIENPTkZJR19CT1VOQ0U9eQogQ09ORklHX1BQQ19IQVNfSEFTSF82NEs9eQogQ09ORklHX1BQQ182NEtfUEFHRVM9eQorIyBDT05GSUdfUFBDX1NVQlBBR0VfUFJPVCBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ0hFRF9TTVQgaXMgbm90IHNldAogQ09ORklHX1BST0NfREVWSUNFVFJFRT15CiAjIENPTkZJR19DTURMSU5FX0JPT0wgaXMgbm90IHNldAogIyBDT05GSUdfUE0gaXMgbm90IHNldAogIyBDT05GSUdfU0VDQ09NUCBpcyBub3Qgc2V0Ci0jIENPTkZJR19XQU5UX0RFVklDRV9UUkVFIGlzIG5vdCBzZXQKIENPTkZJR19JU0FfRE1BX0FQST15CiAKICMKQEAgLTI5MCw2ICszMDksNyBAQAogQ09ORklHX1hGUk1fVVNFUj15CiAjIENPTkZJR19YRlJNX1NVQl9QT0xJQ1kgaXMgbm90IHNldAogIyBDT05GSUdfWEZSTV9NSUdSQVRFIGlzIG5vdCBzZXQKKyMgQ09ORklHX1hGUk1fU1RBVElTVElDUyBpcyBub3Qgc2V0CiBDT05GSUdfTkVUX0tFWT15CiAjIENPTkZJR19ORVRfS0VZX01JR1JBVEUgaXMgbm90IHNldAogQ09ORklHX0lORVQ9eQpAQCAtMzQ2LDYgKzM2Niw3IEBACiAjCiAjIENPTkZJR19ORVRfUEtUR0VOIGlzIG5vdCBzZXQKICMgQ09ORklHX0hBTVJBRElPIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NBTiBpcyBub3Qgc2V0CiAjIENPTkZJR19JUkRBIGlzIG5vdCBzZXQKICMgQ09ORklHX0JUIGlzIG5vdCBzZXQKICMgQ09ORklHX0FGX1JYUlBDIGlzIG5vdCBzZXQKQEAgLTQ0MSw4ICs0NjIsMTAgQEAKIENPTkZJR19NVERfTkFORF9JRFM9eQogIyBDT05GSUdfTVREX05BTkRfRElTS09OQ0hJUCBpcyBub3Qgc2V0CiAjIENPTkZJR19NVERfTkFORF9DQUZFIGlzIG5vdCBzZXQKK0NPTkZJR19NVERfTkFORF9QQVNFTUk9eQogIyBDT05GSUdfTVREX05BTkRfUExBVEZPUk0gaXMgbm90IHNldAogIyBDT05GSUdfTVREX0FMQVVEQSBpcyBub3Qgc2V0CisjIENPTkZJR19NVERfTkFORF9GU0xfRUxCQyBpcyBub3Qgc2V0CiAjIENPTkZJR19NVERfT05FTkFORCBpcyBub3Qgc2V0CiAKICMKQEAgLTQ2NSw3ICs0ODgsNyBAQAogQ09ORklHX0JMS19ERVZfUkFNPXkKIENPTkZJR19CTEtfREVWX1JBTV9DT1VOVD0xNgogQ09ORklHX0JMS19ERVZfUkFNX1NJWkU9MTYzODQKLUNPTkZJR19CTEtfREVWX1JBTV9CTE9DS1NJWkU9MTAyNAorIyBDT05GSUdfQkxLX0RFVl9YSVAgaXMgbm90IHNldAogIyBDT05GSUdfQ0RST01fUEtUQ0RWRCBpcyBub3Qgc2V0CiAjIENPTkZJR19BVEFfT1ZFUl9FVEggaXMgbm90IHNldAogQ09ORklHX01JU0NfREVWSUNFUz15CkBAIC00NzMsMTEgKzQ5NiwxMyBAQAogIyBDT05GSUdfRUVQUk9NXzkzQ1g2IGlzIG5vdCBzZXQKICMgQ09ORklHX1NHSV9JT0M0IGlzIG5vdCBzZXQKICMgQ09ORklHX1RJRk1fQ09SRSBpcyBub3Qgc2V0CisjIENPTkZJR19FTkNMT1NVUkVfU0VSVklDRVMgaXMgbm90IHNldAorQ09ORklHX0hBVkVfSURFPXkKIENPTkZJR19JREU9eQogQ09ORklHX0JMS19ERVZfSURFPXkKIAogIwotIyBQbGVhc2Ugc2VlIERvY3VtZW50YXRpb24vaWRlLnR4dCBmb3IgaGVscC9pbmZvIG9uIElERSBkcml2ZXMKKyMgUGxlYXNlIHNlZSBEb2N1bWVudGF0aW9uL2lkZS9pZGUudHh0IGZvciBoZWxwL2luZm8gb24gSURFIGRyaXZlcwogIwogIyBDT05GSUdfQkxLX0RFVl9JREVfU0FUQSBpcyBub3Qgc2V0CiBDT05GSUdfQkxLX0RFVl9JREVESVNLPXkKQEAgLTQ4NSw2ICs1MTAsNyBAQAogIyBDT05GSUdfQkxLX0RFVl9JREVDUyBpcyBub3Qgc2V0CiAjIENPTkZJR19CTEtfREVWX0RFTEtJTiBpcyBub3Qgc2V0CiBDT05GSUdfQkxLX0RFVl9JREVDRD15CitDT05GSUdfQkxLX0RFVl9JREVDRF9WRVJCT1NFX0VSUk9SUz15CiAjIENPTkZJR19CTEtfREVWX0lERVRBUEUgaXMgbm90IHNldAogIyBDT05GSUdfQkxLX0RFVl9JREVGTE9QUFkgaXMgbm90IHNldAogQ09ORklHX0JMS19ERVZfSURFU0NTST15CkBAIC01MDAsNyArNTI2LDYgQEAKICMKICMgUENJIElERSBjaGlwc2V0cyBzdXBwb3J0CiAjCi0jIENPTkZJR19JREVQQ0lfUENJQlVTX09SREVSIGlzIG5vdCBzZXQKICMgQ09ORklHX0JMS19ERVZfR0VORVJJQyBpcyBub3Qgc2V0CiAjIENPTkZJR19CTEtfREVWX09QVEk2MjEgaXMgbm90IHNldAogIyBDT05GSUdfQkxLX0RFVl9BRUM2MlhYIGlzIG5vdCBzZXQKQEAgLTUyOCw3ICs1NTMsNiBAQAogIyBDT05GSUdfQkxLX0RFVl9UUk0yOTAgaXMgbm90IHNldAogIyBDT05GSUdfQkxLX0RFVl9WSUE4MkNYWFggaXMgbm90IHNldAogIyBDT05GSUdfQkxLX0RFVl9UQzg2QzAwMSBpcyBub3Qgc2V0Ci0jIENPTkZJR19JREVfQVJNIGlzIG5vdCBzZXQKICMgQ09ORklHX0JMS19ERVZfSURFRE1BIGlzIG5vdCBzZXQKIENPTkZJR19JREVfQVJDSF9PQlNPTEVURV9JTklUPXkKICMgQ09ORklHX0JMS19ERVZfSEQgaXMgbm90IHNldApAQCAtNTkzLDYgKzYxNyw3IEBACiAjIENPTkZJR19TQ1NJX0lQUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX0lOSVRJTyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX0lOSUExMDAgaXMgbm90IHNldAorIyBDT05GSUdfU0NTSV9NVlNBUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX1NURVggaXMgbm90IHNldAogIyBDT05GSUdfU0NTSV9TWU01M0M4WFhfMiBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX0lQUiBpcyBub3Qgc2V0CkBAIC02NDYsNiArNjcxLDcgQEAKICMgQ09ORklHX1BBVEFfTVBJSVggaXMgbm90IHNldAogIyBDT05GSUdfUEFUQV9PTERQSUlYIGlzIG5vdCBzZXQKICMgQ09ORklHX1BBVEFfTkVUQ0VMTCBpcyBub3Qgc2V0CisjIENPTkZJR19QQVRBX05JTkpBMzIgaXMgbm90IHNldAogIyBDT05GSUdfUEFUQV9OUzg3NDEwIGlzIG5vdCBzZXQKICMgQ09ORklHX1BBVEFfTlM4NzQxNSBpcyBub3Qgc2V0CiAjIENPTkZJR19QQVRBX09QVEkgaXMgbm90IHNldApAQCAtNjk5LDcgKzcyNSw2IEBACiAjIENPTkZJR19FUVVBTElaRVIgaXMgbm90IHNldAogIyBDT05GSUdfVFVOIGlzIG5vdCBzZXQKICMgQ09ORklHX1ZFVEggaXMgbm90IHNldAotIyBDT05GSUdfSVAxMDAwIGlzIG5vdCBzZXQKICMgQ09ORklHX0FSQ05FVCBpcyBub3Qgc2V0CiBDT05GSUdfUEhZTElCPXkKIApAQCAtNzE1LDYgKzc0MCw3IEBACiAjIENPTkZJR19TTVNDX1BIWSBpcyBub3Qgc2V0CiAjIENPTkZJR19CUk9BRENPTV9QSFkgaXMgbm90IHNldAogIyBDT05GSUdfSUNQTFVTX1BIWSBpcyBub3Qgc2V0CisjIENPTkZJR19SRUFMVEVLX1BIWSBpcyBub3Qgc2V0CiAjIENPTkZJR19GSVhFRF9QSFkgaXMgbm90IHNldAogIyBDT05GSUdfTURJT19CSVRCQU5HIGlzIG5vdCBzZXQKIENPTkZJR19ORVRfRVRIRVJORVQ9eQpAQCAtNzQyLDYgKzc2OCw3IEBACiAjIENPTkZJR19ORTJLX1BDSSBpcyBub3Qgc2V0CiAjIENPTkZJR184MTM5Q1AgaXMgbm90IHNldAogIyBDT05GSUdfODEzOVRPTyBpcyBub3Qgc2V0CisjIENPTkZJR19SNjA0MCBpcyBub3Qgc2V0CiAjIENPTkZJR19TSVM5MDAgaXMgbm90IHNldAogIyBDT05GSUdfRVBJQzEwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19TVU5EQU5DRSBpcyBub3Qgc2V0CkBAIC03NTQsNiArNzgxLDkgQEAKIENPTkZJR19FMTAwMF9OQVBJPXkKICMgQ09ORklHX0UxMDAwX0RJU0FCTEVfUEFDS0VUX1NQTElUIGlzIG5vdCBzZXQKICMgQ09ORklHX0UxMDAwRSBpcyBub3Qgc2V0CisjIENPTkZJR19FMTAwMEVfRU5BQkxFRCBpcyBub3Qgc2V0CisjIENPTkZJR19JUDEwMDAgaXMgbm90IHNldAorIyBDT05GSUdfSUdCIGlzIG5vdCBzZXQKICMgQ09ORklHX05TODM4MjAgaXMgbm90IHNldAogIyBDT05GSUdfSEFNQUNISSBpcyBub3Qgc2V0CiAjIENPTkZJR19ZRUxMT1dGSU4gaXMgbm90IHNldApAQCAtNzc5LDYgKzgwOSw3IEBACiBDT05GSUdfUEFTRU1JX01BQz15CiAjIENPTkZJR19NTFg0X0NPUkUgaXMgbm90IHNldAogIyBDT05GSUdfVEVIVVRJIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JOWDJYIGlzIG5vdCBzZXQKICMgQ09ORklHX1RSIGlzIG5vdCBzZXQKIAogIwpAQCAtODAyLDcgKzgzMyw2IEBACiAjIENPTkZJR19QUFAgaXMgbm90IHNldAogIyBDT05GSUdfU0xJUCBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRfRkMgaXMgbm90IHNldAotIyBDT05GSUdfU0hBUEVSIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVENPTlNPTEUgaXMgbm90IHNldAogIyBDT05GSUdfTkVUUE9MTCBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRfUE9MTF9DT05UUk9MTEVSIGlzIG5vdCBzZXQKQEAgLTg2MSw2ICs4OTEsNyBAQAogQ09ORklHX0hXX0NPTlNPTEU9eQogIyBDT05GSUdfVlRfSFdfQ09OU09MRV9CSU5ESU5HIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFUklBTF9OT05TVEFOREFSRCBpcyBub3Qgc2V0CisjIENPTkZJR19OT1pPTUkgaXMgbm90IHNldAogCiAjCiAjIFNlcmlhbCBkcml2ZXJzCkBAIC04ODYsOCArOTE3LDcgQEAKICMgQ09ORklHX0lQTUlfSEFORExFUiBpcyBub3Qgc2V0CiBDT05GSUdfSFdfUkFORE9NPXkKIENPTkZJR19IV19SQU5ET01fUEFTRU1JPXkKLUNPTkZJR19HRU5fUlRDPXkKLUNPTkZJR19HRU5fUlRDX1g9eQorIyBDT05GSUdfR0VOX1JUQyBpcyBub3Qgc2V0CiAjIENPTkZJR19SMzk2NCBpcyBub3Qgc2V0CiAjIENPTkZJR19BUFBMSUNPTSBpcyBub3Qgc2V0CiAKQEAgLTg5Nyw2ICs5MjcsNyBAQAogIyBDT05GSUdfU1lOQ0xJTktfQ1MgaXMgbm90IHNldAogIyBDT05GSUdfQ0FSRE1BTl80MDAwIGlzIG5vdCBzZXQKICMgQ09ORklHX0NBUkRNQU5fNDA0MCBpcyBub3Qgc2V0CisjIENPTkZJR19JUFdJUkVMRVNTIGlzIG5vdCBzZXQKIENPTkZJR19SQVdfRFJJVkVSPXkKIENPTkZJR19NQVhfUkFXX0RFVlM9MjU2CiAjIENPTkZJR19IQU5HQ0hFQ0tfVElNRVIgaXMgbm90IHNldApAQCAtOTQ0LDEzICs5NzUsMTIgQEAKICMKICMgTWlzY2VsbGFuZW91cyBJMkMgQ2hpcCBzdXBwb3J0CiAjCi0jIENPTkZJR19TRU5TT1JTX0RTMTMzNyBpcyBub3Qgc2V0Ci0jIENPTkZJR19TRU5TT1JTX0RTMTM3NCBpcyBub3Qgc2V0CiAjIENPTkZJR19EUzE2ODIgaXMgbm90IHNldAogQ09ORklHX1NFTlNPUlNfRUVQUk9NPXkKICMgQ09ORklHX1NFTlNPUlNfUENGODU3NCBpcyBub3Qgc2V0Ci0jIENPTkZJR19TRU5TT1JTX1BDQTk1MzkgaXMgbm90IHNldAorIyBDT05GSUdfUENGODU3NSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1BDRjg1OTEgaXMgbm90IHNldAorIyBDT05GSUdfVFBTNjUwMTAgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19NQVg2ODc1IGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVFNMMjU1MCBpcyBub3Qgc2V0CiAjIENPTkZJR19JMkNfREVCVUdfQ09SRSBpcyBub3Qgc2V0CkBAIC05NzUsNiArMTAwNSw3IEBACiAjIENPTkZJR19TRU5TT1JTX0FETTEwMzEgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19BRE05MjQwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfQURUNzQ3MCBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX0FEVDc0NzMgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19BVFhQMSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0RTMTYyMSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0k1S19BTUIgaXMgbm90IHNldApAQCAtMTAwNCw2ICsxMDM1LDcgQEAKICMgQ09ORklHX1NFTlNPUlNfU01TQzQ3TTEgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19TTVNDNDdNMTkyIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfU01TQzQ3QjM5NyBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX0FEUzc4MjggaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19USE1DNTAgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19WSUE2ODZBIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVlQxMjExIGlzIG5vdCBzZXQKQEAgLTEwMTMsOSArMTA0NSwxMSBAQAogIyBDT05GSUdfU0VOU09SU19XODM3OTJEIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVzgzNzkzIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVzgzTDc4NVRTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNPUlNfVzgzTDc4Nk5HIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVzgzNjI3SEYgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19XODM2MjdFSEYgaXMgbm90IHNldAogIyBDT05GSUdfSFdNT05fREVCVUdfQ0hJUCBpcyBub3Qgc2V0CisjIENPTkZJR19USEVSTUFMIGlzIG5vdCBzZXQKICMgQ09ORklHX1dBVENIRE9HIGlzIG5vdCBzZXQKIAogIwpAQCAtMTE4Myw2ICsxMjE3LDcgQEAKICMgQ09ORklHX1NORF9CVDg3WCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfQ0EwMTA2IGlzIG5vdCBzZXQKICMgQ09ORklHX1NORF9DTUlQQ0kgaXMgbm90IHNldAorIyBDT05GSUdfU05EX09YWUdFTiBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfQ1M0MjgxIGlzIG5vdCBzZXQKICMgQ09ORklHX1NORF9DUzQ2WFggaXMgbm90IHNldAogIyBDT05GSUdfU05EX0NTNTUzMCBpcyBub3Qgc2V0CkBAIC0xMjA4LDYgKzEyNDMsNyBAQAogIyBDT05GSUdfU05EX0hEQV9JTlRFTCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfSERTUCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfSERTUE0gaXMgbm90IHNldAorIyBDT05GSUdfU05EX0hJRklFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfSUNFMTcxMiBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfSUNFMTcyNCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfSU5URUw4WDAgaXMgbm90IHNldApAQCAtMTIyNSw2ICsxMjYxLDcgQEAKICMgQ09ORklHX1NORF9UUklERU5UIGlzIG5vdCBzZXQKICMgQ09ORklHX1NORF9WSUE4MlhYIGlzIG5vdCBzZXQKICMgQ09ORklHX1NORF9WSUE4MlhYX01PREVNIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NORF9WSVJUVU9TTyBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfVlgyMjIgaXMgbm90IHNldAogIyBDT05GSUdfU05EX1lNRlBDSSBpcyBub3Qgc2V0CiAKQEAgLTEyNTksNiArMTI5NiwxMCBAQAogIwogCiAjCisjIEFMU0EgU29DIGF1ZGlvIGZvciBGcmVlc2NhbGUgU09DcworIworCisjCiAjIE9wZW4gU291bmQgU3lzdGVtCiAjCiAjIENPTkZJR19TT1VORF9QUklNRSBpcyBub3Qgc2V0CkBAIC0xMjgwLDYgKzEzMjEsNyBAQAogQ09ORklHX1VTQl9BUkNIX0hBU19FSENJPXkKIENPTkZJR19VU0I9eQogIyBDT05GSUdfVVNCX0RFQlVHIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9BTk5PVU5DRV9ORVdfREVWSUNFUyBpcyBub3Qgc2V0CiAKICMKICMgTWlzY2VsbGFuZW91cyBVU0Igb3B0aW9ucwpAQCAtMTI5MywxNyArMTMzNSwxNCBAQAogIyBVU0IgSG9zdCBDb250cm9sbGVyIERyaXZlcnMKICMKIENPTkZJR19VU0JfRUhDSV9IQ0Q9eQotIyBDT05GSUdfVVNCX0VIQ0lfU1BMSVRfSVNPIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9FSENJX1JPT1RfSFVCX1RUIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9FSENJX1RUX05FV1NDSEVEIGlzIG5vdCBzZXQKK0NPTkZJR19VU0JfRUhDSV9IQ0RfUFBDX09GPXkKICMgQ09ORklHX1VTQl9JU1AxMTZYX0hDRCBpcyBub3Qgc2V0CiBDT05GSUdfVVNCX09IQ0lfSENEPXkKLUNPTkZJR19VU0JfT0hDSV9IQ0RfUFBDX09GPXkKLUNPTkZJR19VU0JfT0hDSV9IQ0RfUFBDX09GX0JFPXkKLSMgQ09ORklHX1VTQl9PSENJX0hDRF9QUENfT0ZfTEUgaXMgbm90IHNldAotQ09ORklHX1VTQl9PSENJX0hDRF9QQ0k9eQotQ09ORklHX1VTQl9PSENJX0JJR19FTkRJQU5fREVTQz15Ci1DT05GSUdfVVNCX09IQ0lfQklHX0VORElBTl9NTUlPPXkKKyMgQ09ORklHX1VTQl9PSENJX0hDRF9QUENfT0YgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX09IQ0lfQklHX0VORElBTl9ERVNDIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9PSENJX0JJR19FTkRJQU5fTU1JTyBpcyBub3Qgc2V0CiBDT05GSUdfVVNCX09IQ0lfTElUVExFX0VORElBTj15CiBDT05GSUdfVVNCX1VIQ0lfSENEPXkKIENPTkZJR19VU0JfU0w4MTFfSENEPXkKQEAgLTEzNDgsMTAgKzEzODcsNiBAQAogIwogIyBVU0IgcG9ydCBkcml2ZXJzCiAjCi0KLSMKLSMgVVNCIFNlcmlhbCBDb252ZXJ0ZXIgc3VwcG9ydAotIwogIyBDT05GSUdfVVNCX1NFUklBTCBpcyBub3Qgc2V0CiAKICMKQEAgLTEzNzcsMTYgKzE0MTIsOSBAQAogIyBDT05GSUdfVVNCX1RSQU5DRVZJQlJBVE9SIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9JT1dBUlJJT1IgaXMgbm90IHNldAogIyBDT05GSUdfVVNCX1RFU1QgaXMgbm90IHNldAotCi0jCi0jIFVTQiBEU0wgbW9kZW0gc3VwcG9ydAotIwotCi0jCi0jIFVTQiBHYWRnZXQgU3VwcG9ydAotIwogIyBDT05GSUdfVVNCX0dBREdFVCBpcyBub3Qgc2V0CiAjIENPTkZJR19NTUMgaXMgbm90IHNldAorIyBDT05GSUdfTUVNU1RJQ0sgaXMgbm90IHNldAogIyBDT05GSUdfTkVXX0xFRFMgaXMgbm90IHNldAogIyBDT05GSUdfSU5GSU5JQkFORCBpcyBub3Qgc2V0CiBDT05GSUdfRURBQz15CkBAIC0xNDI1LDYgKzE0NTMsNyBAQAogIyBDT05GSUdfUlRDX0RSVl9QQ0Y4NTYzIGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfUENGODU4MyBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfRFJWX000MVQ4MCBpcyBub3Qgc2V0CisjIENPTkZJR19SVENfRFJWX1MzNTM5MEEgaXMgbm90IHNldAogCiAjCiAjIFNQSSBSVEMgZHJpdmVycwpAQCAtMTQzNCw5ICsxNDYzLDEwIEBACiAjIFBsYXRmb3JtIFJUQyBkcml2ZXJzCiAjCiAjIENPTkZJR19SVENfRFJWX0NNT1MgaXMgbm90IHNldAorIyBDT05GSUdfUlRDX0RSVl9EUzE1MTEgaXMgbm90IHNldAogIyBDT05GSUdfUlRDX0RSVl9EUzE1NTMgaXMgbm90IHNldAotIyBDT05GSUdfUlRDX0RSVl9TVEsxN1RBOCBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfRFJWX0RTMTc0MiBpcyBub3Qgc2V0CisjIENPTkZJR19SVENfRFJWX1NUSzE3VEE4IGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfTTQ4VDg2IGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfTTQ4VDU5IGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfVjMwMjAgaXMgbm90IHNldApAQCAtMTQ0NCw2ICsxNDc0LDcgQEAKICMKICMgb24tQ1BVIFJUQyBkcml2ZXJzCiAjCisjIENPTkZJR19ETUFERVZJQ0VTIGlzIG5vdCBzZXQKIAogIwogIyBVc2Vyc3BhY2UgSS9PCkBAIC0xNDcxLDEyICsxNTAyLDEwIEBACiAjIENPTkZJR19YRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfR0ZTMl9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19PQ0ZTMl9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CitDT05GSUdfRE5PVElGWT15CiBDT05GSUdfSU5PVElGWT15CiBDT05GSUdfSU5PVElGWV9VU0VSPXkKICMgQ09ORklHX1FVT1RBIGlzIG5vdCBzZXQKLUNPTkZJR19ETk9USUZZPXkKIENPTkZJR19BVVRPRlNfRlM9eQogQ09ORklHX0FVVE9GUzRfRlM9eQogIyBDT05GSUdfRlVTRV9GUyBpcyBub3Qgc2V0CkBAIC0xNTM2LDggKzE1NjUsMTAgQEAKICMgQ09ORklHX0pGRlMyX1JVQklOIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSQU1GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19WWEZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX01JTklYX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0hQRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfUU5YNEZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JPTUZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1NZU1ZfRlMgaXMgbm90IHNldAogIyBDT05GSUdfVUZTX0ZTIGlzIG5vdCBzZXQKIENPTkZJR19ORVRXT1JLX0ZJTEVTWVNURU1TPXkKQEAgLTE2MjksNyArMTY2MCw2IEBACiAjIENPTkZJR19OTFNfS09JOF9VIGlzIG5vdCBzZXQKICMgQ09ORklHX05MU19VVEY4IGlzIG5vdCBzZXQKICMgQ09ORklHX0RMTSBpcyBub3Qgc2V0Ci0jIENPTkZJR19VQ0NfU0xPVyBpcyBub3Qgc2V0CiAKICMKICMgTGlicmFyeSByb3V0aW5lcwpAQCAtMTY0NywxMSArMTY3Nyw2IEBACiBDT05GSUdfSEFTX0lPTUVNPXkKIENPTkZJR19IQVNfSU9QT1JUPXkKIENPTkZJR19IQVNfRE1BPXkKLUNPTkZJR19JTlNUUlVNRU5UQVRJT049eQotQ09ORklHX1BST0ZJTElORz15Ci1DT05GSUdfT1BST0ZJTEU9eQotIyBDT05GSUdfS1BST0JFUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19NQVJLRVJTIGlzIG5vdCBzZXQKIAogIwogIyBLZXJuZWwgaGFja2luZwpAQCAtMTY3MCw2ICsxNjk1LDcgQEAKICMgQ09ORklHX1NDSEVEU1RBVFMgaXMgbm90IHNldAogIyBDT05GSUdfVElNRVJfU1RBVFMgaXMgbm90IHNldAogIyBDT05GSUdfU0xVQl9ERUJVR19PTiBpcyBub3Qgc2V0CisjIENPTkZJR19TTFVCX1NUQVRTIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1JUX01VVEVYRVMgaXMgbm90IHNldAogIyBDT05GSUdfUlRfTVVURVhfVEVTVEVSIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NQSU5MT0NLIGlzIG5vdCBzZXQKQEAgLTE2ODIsOSArMTcwOCw5IEBACiAjIENPTkZJR19ERUJVR19WTSBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19MSVNUIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NHIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZPUkNFRF9JTkxJTklORyBpcyBub3Qgc2V0CiAjIENPTkZJR19CT09UX1BSSU5US19ERUxBWSBpcyBub3Qgc2V0CiAjIENPTkZJR19SQ1VfVE9SVFVSRV9URVNUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JBQ0tUUkFDRV9TRUxGX1RFU1QgaXMgbm90IHNldAogIyBDT05GSUdfRkFVTFRfSU5KRUNUSU9OIGlzIG5vdCBzZXQKICMgQ09ORklHX1NBTVBMRVMgaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfU1RBQ0tPVkVSRkxPVyBpcyBub3Qgc2V0CkBAIC0xNzEwLDcgKzE3MzYsOSBAQAogQ09ORklHX0FTWU5DX1hPUj15CiBDT05GSUdfQ1JZUFRPPXkKIENPTkZJR19DUllQVE9fQUxHQVBJPXkKK0NPTkZJR19DUllQVE9fQUVBRD15CiBDT05GSUdfQ1JZUFRPX0JMS0NJUEhFUj15CisjIENPTkZJR19DUllQVE9fU0VRSVYgaXMgbm90IHNldAogQ09ORklHX0NSWVBUT19IQVNIPXkKIENPTkZJR19DUllQVE9fTUFOQUdFUj15CiBDT05GSUdfQ1JZUFRPX0hNQUM9eQpAQCAtMTcyOSw2ICsxNzU3LDkgQEAKICMgQ09ORklHX0NSWVBUT19QQ0JDIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19MUlcgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX1hUUyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ1RSIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19HQ00gaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NDTSBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fQ1JZUFREIGlzIG5vdCBzZXQKIENPTkZJR19DUllQVE9fREVTPXkKICMgQ09ORklHX0NSWVBUT19GQ1JZUFQgaXMgbm90IHNldApAQCAtMTc0MywxMSArMTc3NCwxNCBAQAogIyBDT05GSUdfQ1JZUFRPX0tIQVpBRCBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fQU5VQklTIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19TRUVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19TQUxTQTIwIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19ERUZMQVRFIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19NSUNIQUVMX01JQyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fQ1JDMzJDIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19DQU1FTExJQSBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fVEVTVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19DUllQVE9fQVVUSEVOQyBpcyBub3Qgc2V0CitDT05GSUdfQ1JZUFRPX0FVVEhFTkM9eQorIyBDT05GSUdfQ1JZUFRPX0xaTyBpcyBub3Qgc2V0CiBDT05GSUdfQ1JZUFRPX0hXPXkKKyMgQ09ORklHX0NSWVBUT19ERVZfSElGTl83OTVYIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19DTE9DSyBpcyBub3Qgc2V0CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvY29uZmlncy9wbWFjMzJfZGVmY29uZmlnIGIvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG1hYzMyX2RlZmNvbmZpZwppbmRleCA1NDE2YmU0Li41NThiMGQzIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvY29uZmlncy9wbWFjMzJfZGVmY29uZmlnCisrKyBiL2FyY2gvcG93ZXJwYy9jb25maWdzL3BtYWMzMl9kZWZjb25maWcKQEAgLTEsNyArMSw3IEBACiAjCiAjIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIG1ha2UgY29uZmlnOiBkb24ndCBlZGl0Ci0jIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMjQtcmM0Ci0jIFRodSBEZWMgIDYgMTY6NDk6MDUgMjAwNworIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjI1LXJjNgorIyBUaHUgTWFyIDIwIDExOjA1OjE0IDIwMDgKICMKICMgQ09ORklHX1BQQzY0IGlzIG5vdCBzZXQKIApAQCAtMjksNiArMjksNyBAQAogQ09ORklHX0dFTkVSSUNfVElNRV9WU1lTQ0FMTD15CiBDT05GSUdfR0VORVJJQ19DTE9DS0VWRU5UUz15CiBDT05GSUdfR0VORVJJQ19IQVJESVJRUz15CisjIENPTkZJR19IQVZFX1NFVFVQX1BFUl9DUFVfQVJFQSBpcyBub3Qgc2V0CiBDT05GSUdfSVJRX1BFUl9DUFU9eQogQ09ORklHX1JXU0VNX1hDSEdBRERfQUxHT1JJVEhNPXkKIENPTkZJR19BUkNIX0hBU19JTE9HMl9VMzI9eQpAQCAtNDksNiArNTAsOSBAQAogQ09ORklHX0dFTkVSSUNfQlVHPXkKIENPTkZJR19TWVNfU1VQUE9SVFNfQVBNX0VNVUxBVElPTj15CiAjIENPTkZJR19ERUZBVUxUX1VJTUFHRSBpcyBub3Qgc2V0CitDT05GSUdfSElCRVJOQVRFXzMyPXkKK0NPTkZJR19BUkNIX0hJQkVSTkFUSU9OX1BPU1NJQkxFPXkKK0NPTkZJR19BUkNIX1NVU1BFTkRfUE9TU0lCTEU9eQogIyBDT05GSUdfUFBDX0RDUl9OQVRJVkUgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0RDUl9NTUlPIGlzIG5vdCBzZXQKIENPTkZJR19ERUZDT05GSUdfTElTVD0iL2xpYi9tb2R1bGVzLyRVTkFNRV9SRUxFQVNFLy5jb25maWciCkBAIC02NywxOCArNzEsMjIgQEAKIENPTkZJR19QT1NJWF9NUVVFVUU9eQogIyBDT05GSUdfQlNEX1BST0NFU1NfQUNDVCBpcyBub3Qgc2V0CiAjIENPTkZJR19UQVNLU1RBVFMgaXMgbm90IHNldAotIyBDT05GSUdfVVNFUl9OUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19QSURfTlMgaXMgbm90IHNldAogIyBDT05GSUdfQVVESVQgaXMgbm90IHNldAogQ09ORklHX0lLQ09ORklHPXkKIENPTkZJR19JS0NPTkZJR19QUk9DPXkKIENPTkZJR19MT0dfQlVGX1NISUZUPTE0CiAjIENPTkZJR19DR1JPVVBTIGlzIG5vdCBzZXQKLUNPTkZJR19GQUlSX0dST1VQX1NDSEVEPXkKLUNPTkZJR19GQUlSX1VTRVJfU0NIRUQ9eQotIyBDT05GSUdfRkFJUl9DR1JPVVBfU0NIRUQgaXMgbm90IHNldAorIyBDT05GSUdfR1JPVVBfU0NIRUQgaXMgbm90IHNldAorIyBDT05GSUdfVVNFUl9TQ0hFRCBpcyBub3Qgc2V0CisjIENPTkZJR19DR1JPVVBfU0NIRUQgaXMgbm90IHNldAogQ09ORklHX1NZU0ZTX0RFUFJFQ0FURUQ9eQorQ09ORklHX1NZU0ZTX0RFUFJFQ0FURURfVjI9eQogIyBDT05GSUdfUkVMQVkgaXMgbm90IHNldAorQ09ORklHX05BTUVTUEFDRVM9eQorIyBDT05GSUdfVVRTX05TIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lQQ19OUyBpcyBub3Qgc2V0CisjIENPTkZJR19VU0VSX05TIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BJRF9OUyBpcyBub3Qgc2V0CiBDT05GSUdfQkxLX0RFVl9JTklUUkQ9eQogQ09ORklHX0lOSVRSQU1GU19TT1VSQ0U9IiIKICMgQ09ORklHX0NDX09QVElNSVpFX0ZPUl9TSVpFIGlzIG5vdCBzZXQKQEAgLTkyLDExICsxMDAsMTMgQEAKIENPTkZJR19QUklOVEs9eQogQ09ORklHX0JVRz15CiBDT05GSUdfRUxGX0NPUkU9eQorIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0CiBDT05GSUdfQkFTRV9GVUxMPXkKIENPTkZJR19GVVRFWD15CiBDT05GSUdfQU5PTl9JTk9ERVM9eQogQ09ORklHX0VQT0xMPXkKIENPTkZJR19TSUdOQUxGRD15CitDT05GSUdfVElNRVJGRD15CiBDT05GSUdfRVZFTlRGRD15CiBDT05GSUdfU0hNRU09eQogQ09ORklHX1ZNX0VWRU5UX0NPVU5URVJTPXkKQEAgLTEwNCw2ICsxMTQsMTUgQEAKICMgQ09ORklHX1NMQUIgaXMgbm90IHNldAogQ09ORklHX1NMVUI9eQogIyBDT05GSUdfU0xPQiBpcyBub3Qgc2V0CitDT05GSUdfUFJPRklMSU5HPXkKKyMgQ09ORklHX01BUktFUlMgaXMgbm90IHNldAorQ09ORklHX09QUk9GSUxFPXkKK0NPTkZJR19IQVZFX09QUk9GSUxFPXkKKyMgQ09ORklHX0tQUk9CRVMgaXMgbm90IHNldAorQ09ORklHX0hBVkVfS1BST0JFUz15CitDT05GSUdfSEFWRV9LUkVUUFJPQkVTPXkKK0NPTkZJR19QUk9DX1BBR0VfTU9OSVRPUj15CitDT05GSUdfU0xBQklORk89eQogQ09ORklHX1JUX01VVEVYRVM9eQogIyBDT05GSUdfVElOWV9TSE1FTSBpcyBub3Qgc2V0CiBDT05GSUdfQkFTRV9TTUFMTD0wCkBAIC0xMzEsNiArMTUwLDcgQEAKICMgQ09ORklHX0RFRkFVTFRfQ0ZRIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFRkFVTFRfTk9PUCBpcyBub3Qgc2V0CiBDT05GSUdfREVGQVVMVF9JT1NDSEVEPSJhbnRpY2lwYXRvcnkiCitDT05GSUdfQ0xBU1NJQ19SQ1U9eQogCiAjCiAjIFBsYXRmb3JtIHN1cHBvcnQKQEAgLTE0MSwxNiArMTYxLDE3IEBACiAjIENPTkZJR19QUENfODZ4eCBpcyBub3Qgc2V0CiBDT05GSUdfQ0xBU1NJQzMyPXkKICMgQ09ORklHX1BQQ19DSFJQIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ19NUEM1MTJ4IGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ19NUEM1MTIxIGlzIG5vdCBzZXQKKyMgQ09ORklHX01QQzUxMjFfQURTIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19NUEM1Mnh4IGlzIG5vdCBzZXQKLSMgQ09ORklHX1BQQ19NUEM1MjAwIGlzIG5vdCBzZXQKLSMgQ09ORklHX1BQQ19FRklLQSBpcyBub3Qgc2V0Ci0jIENPTkZJR19QUENfTElURTUyMDAgaXMgbm90IHNldAogQ09ORklHX1BQQ19QTUFDPXkKICMgQ09ORklHX1BQQ19DRUxMIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19DRUxMX05BVElWRSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUTJBRFMgaXMgbm90IHNldAogIyBDT05GSUdfRU1CRURERUQ2eHggaXMgbm90IHNldAogQ09ORklHX1BQQ19OQVRJVkU9eQorIyBDT05GSUdfSVBJQyBpcyBub3Qgc2V0CiBDT05GSUdfTVBJQz15CiAjIENPTkZJR19NUElDX1dFSVJEIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19JODI1OSBpcyBub3Qgc2V0CkBAIC0xODEsNyArMjAyLDYgQEAKIENPTkZJR19DUFVfRlJFUV9QTUFDPXkKIENPTkZJR19QUEM2MDFfU1lOQ19GSVg9eQogIyBDT05GSUdfVEFVIGlzIG5vdCBzZXQKLSMgQ09ORklHX0NQTTIgaXMgbm90IHNldAogIyBDT05GSUdfRlNMX1VMSTE1NzUgaXMgbm90IHNldAogCiAjCkBAIC0xOTcsMTIgKzIxNywxNiBAQAogIyBDT05GSUdfSFpfMzAwIGlzIG5vdCBzZXQKICMgQ09ORklHX0haXzEwMDAgaXMgbm90IHNldAogQ09ORklHX0haPTI1MAorIyBDT05GSUdfU0NIRURfSFJUSUNLIGlzIG5vdCBzZXQKIENPTkZJR19QUkVFTVBUX05PTkU9eQogIyBDT05GSUdfUFJFRU1QVF9WT0xVTlRBUlkgaXMgbm90IHNldAogIyBDT05GSUdfUFJFRU1QVCBpcyBub3Qgc2V0CiBDT05GSUdfQklORk1UX0VMRj15CiBDT05GSUdfQklORk1UX01JU0M9bQorIyBDT05GSUdfSU9NTVVfSEVMUEVSIGlzIG5vdCBzZXQKIENPTkZJR19BUkNIX0VOQUJMRV9NRU1PUllfSE9UUExVRz15CitDT05GSUdfQVJDSF9IQVNfV0FMS19NRU1PUlk9eQorQ09ORklHX0FSQ0hfRU5BQkxFX01FTU9SWV9IT1RSRU1PVkU9eQogIyBDT05GSUdfS0VYRUMgaXMgbm90IHNldAogQ09ORklHX0FSQ0hfRkxBVE1FTV9FTkFCTEU9eQogQ09ORklHX0FSQ0hfUE9QVUxBVEVTX05PREVfTUFQPXkKQEAgLTIyMSwxOSArMjQ1LDE5IEBACiBDT05GSUdfVklSVF9UT19CVVM9eQogQ09ORklHX1BST0NfREVWSUNFVFJFRT15CiAjIENPTkZJR19DTURMSU5FX0JPT0wgaXMgbm90IHNldAorQ09ORklHX0FSQ0hfV0FOVFNfRlJFRVpFUl9DT05UUk9MPXkKIENPTkZJR19QTT15CiAjIENPTkZJR19QTV9MRUdBQ1kgaXMgbm90IHNldAogQ09ORklHX1BNX0RFQlVHPXkKICMgQ09ORklHX1BNX1ZFUkJPU0UgaXMgbm90IHNldAorQ09ORklHX0NBTl9QTV9UUkFDRT15CiBDT05GSUdfUE1fU0xFRVA9eQotQ09ORklHX1NVU1BFTkRfVVBfUE9TU0lCTEU9eQogQ09ORklHX1NVU1BFTkQ9eQotQ09ORklHX0hJQkVSTkFUSU9OX1VQX1BPU1NJQkxFPXkKK0NPTkZJR19TVVNQRU5EX0ZSRUVaRVI9eQogQ09ORklHX0hJQkVSTkFUSU9OPXkKIENPTkZJR19QTV9TVERfUEFSVElUSU9OPSIiCiBDT05GSUdfQVBNX0VNVUxBVElPTj15CiBDT05GSUdfU0VDQ09NUD15Ci0jIENPTkZJR19XQU5UX0RFVklDRV9UUkVFIGlzIG5vdCBzZXQKIENPTkZJR19JU0FfRE1BX0FQST15CiAKICMKQEAgLTMwMCw2ICszMjQsNyBAQAogQ09ORklHX1hGUk1fVVNFUj15CiAjIENPTkZJR19YRlJNX1NVQl9QT0xJQ1kgaXMgbm90IHNldAogIyBDT05GSUdfWEZSTV9NSUdSQVRFIGlzIG5vdCBzZXQKKyMgQ09ORklHX1hGUk1fU1RBVElTVElDUyBpcyBub3Qgc2V0CiBDT05GSUdfTkVUX0tFWT15CiAjIENPTkZJR19ORVRfS0VZX01JR1JBVEUgaXMgbm90IHNldAogQ09ORklHX0lORVQ9eQpAQCAtMzM0LDEyICszNTksMTQgQEAKICMgQ09ORklHX05FVFdPUktfU0VDTUFSSyBpcyBub3Qgc2V0CiBDT05GSUdfTkVURklMVEVSPXkKICMgQ09ORklHX05FVEZJTFRFUl9ERUJVRyBpcyBub3Qgc2V0CitDT05GSUdfTkVURklMVEVSX0FEVkFOQ0VEPXkKIAogIwogIyBDb3JlIE5ldGZpbHRlciBDb25maWd1cmF0aW9uCiAjCi0jIENPTkZJR19ORVRGSUxURVJfTkVUTElOSyBpcyBub3Qgc2V0Ci1DT05GSUdfTkZfQ09OTlRSQUNLX0VOQUJMRUQ9bQorQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LPW0KK0NPTkZJR19ORVRGSUxURVJfTkVUTElOS19RVUVVRT1tCitDT05GSUdfTkVURklMVEVSX05FVExJTktfTE9HPW0KIENPTkZJR19ORl9DT05OVFJBQ0s9bQogIyBDT05GSUdfTkZfQ1RfQUNDVCBpcyBub3Qgc2V0CiAjIENPTkZJR19ORl9DT05OVFJBQ0tfTUFSSyBpcyBub3Qgc2V0CkBAIC0zNTUsNiArMzgyLDcgQEAKICMgQ09ORklHX05GX0NPTk5UUkFDS19TQU5FIGlzIG5vdCBzZXQKICMgQ09ORklHX05GX0NPTk5UUkFDS19TSVAgaXMgbm90IHNldAogQ09ORklHX05GX0NPTk5UUkFDS19URlRQPW0KK0NPTkZJR19ORl9DVF9ORVRMSU5LPW0KIENPTkZJR19ORVRGSUxURVJfWFRBQkxFUz1tCiBDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9DTEFTU0lGWT1tCiAjIENPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX0NPTk5NQVJLIGlzIG5vdCBzZXQKQEAgLTM2Myw4ICszOTEsMTAgQEAKIENPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX05GUVVFVUU9bQogQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfTkZMT0c9bQogQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfTk9UUkFDSz1tCitDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9SQVRFRVNUPW0KIENPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX1RSQUNFPW0KIENPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX1RDUE1TUz1tCitDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9UQ1BPUFRTVFJJUD1tCiBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0NPTU1FTlQ9bQogIyBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0NPTk5CWVRFUyBpcyBub3Qgc2V0CiBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0NPTk5MSU1JVD1tCkBAIC0zNzQsMTQgKzQwNCwxNyBAQAogQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9EU0NQPW0KIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfRVNQPW0KIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfSEVMUEVSPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfSVBSQU5HRT1tCiBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0xFTkdUSD1tCiBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0xJTUlUPW0KIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfTUFDPW0KIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfTUFSSz1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX09XTkVSPW0KIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfUE9MSUNZPW0KIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfTVVMVElQT1JUPW0KIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfUEtUVFlQRT1tCiAjIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfUVVPVEEgaXMgbm90IHNldAorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9SQVRFRVNUPW0KIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfUkVBTE09bQogQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9TQ1RQPW0KICMgQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9TVEFURSBpcyBub3Qgc2V0CkBAIC0zOTksMTMgKzQzMiwxMCBAQAogQ09ORklHX05GX0NPTk5UUkFDS19QUk9DX0NPTVBBVD15CiAjIENPTkZJR19JUF9ORl9RVUVVRSBpcyBub3Qgc2V0CiBDT05GSUdfSVBfTkZfSVBUQUJMRVM9bQotQ09ORklHX0lQX05GX01BVENIX0lQUkFOR0U9bQotQ09ORklHX0lQX05GX01BVENIX1RPUz1tCiBDT05GSUdfSVBfTkZfTUFUQ0hfUkVDRU5UPW0KIENPTkZJR19JUF9ORl9NQVRDSF9FQ049bQogQ09ORklHX0lQX05GX01BVENIX0FIPW0KIENPTkZJR19JUF9ORl9NQVRDSF9UVEw9bQotQ09ORklHX0lQX05GX01BVENIX09XTkVSPW0KIENPTkZJR19JUF9ORl9NQVRDSF9BRERSVFlQRT1tCiBDT05GSUdfSVBfTkZfRklMVEVSPW0KIENPTkZJR19JUF9ORl9UQVJHRVRfUkVKRUNUPW0KQEAgLTQxNiw3ICs0NDYsNiBAQAogQ09ORklHX0lQX05GX1RBUkdFVF9NQVNRVUVSQURFPW0KIENPTkZJR19JUF9ORl9UQVJHRVRfUkVESVJFQ1Q9bQogQ09ORklHX0lQX05GX1RBUkdFVF9ORVRNQVA9bQotQ09ORklHX0lQX05GX1RBUkdFVF9TQU1FPW0KICMgQ09ORklHX05GX05BVF9TTk1QX0JBU0lDIGlzIG5vdCBzZXQKIENPTkZJR19ORl9OQVRfRlRQPW0KIENPTkZJR19ORl9OQVRfSVJDPW0KQEAgLTQyNiw3ICs0NTUsNiBAQAogIyBDT05GSUdfTkZfTkFUX0gzMjMgaXMgbm90IHNldAogIyBDT05GSUdfTkZfTkFUX1NJUCBpcyBub3Qgc2V0CiBDT05GSUdfSVBfTkZfTUFOR0xFPW0KLUNPTkZJR19JUF9ORl9UQVJHRVRfVE9TPW0KIENPTkZJR19JUF9ORl9UQVJHRVRfRUNOPW0KIENPTkZJR19JUF9ORl9UQVJHRVRfVFRMPW0KICMgQ09ORklHX0lQX05GX1RBUkdFVF9DTFVTVEVSSVAgaXMgbm90IHNldApAQCAtNDQ0LDkgKzQ3Miw5IEBACiBDT05GSUdfSVBfRENDUF9DQ0lEMj1tCiAjIENPTkZJR19JUF9EQ0NQX0NDSUQyX0RFQlVHIGlzIG5vdCBzZXQKIENPTkZJR19JUF9EQ0NQX0NDSUQzPW0KLUNPTkZJR19JUF9EQ0NQX1RGUkNfTElCPW0KICMgQ09ORklHX0lQX0RDQ1BfQ0NJRDNfREVCVUcgaXMgbm90IHNldAogQ09ORklHX0lQX0RDQ1BfQ0NJRDNfUlRPPTEwMAorQ09ORklHX0lQX0RDQ1BfVEZSQ19MSUI9bQogCiAjCiAjIERDQ1AgS2VybmVsIEhhY2tpbmcKQEAgLTQ3NCw2ICs1MDIsNyBAQAogIwogIyBDT05GSUdfTkVUX1BLVEdFTiBpcyBub3Qgc2V0CiAjIENPTkZJR19IQU1SQURJTyBpcyBub3Qgc2V0CisjIENPTkZJR19DQU4gaXMgbm90IHNldAogQ09ORklHX0lSREE9bQogCiAjCkBAIC01MDksMTUgKzUzOCw2IEBACiAjIENPTkZJR19LUzk1OV9ET05HTEUgaXMgbm90IHNldAogCiAjCi0jIE9sZCBTSVIgZGV2aWNlIGRyaXZlcnMKLSMKLSMgQ09ORklHX0lSUE9SVF9TSVIgaXMgbm90IHNldAotCi0jCi0jIE9sZCBTZXJpYWwgZG9uZ2xlIHN1cHBvcnQKLSMKLQotIwogIyBGSVIgZGV2aWNlIGRyaXZlcnMKICMKICMgQ09ORklHX1VTQl9JUkRBIGlzIG5vdCBzZXQKQEAgLTU2Myw4ICs1ODMsMjYgQEAKIENPTkZJR19OTDgwMjExPXkKIENPTkZJR19XSVJFTEVTU19FWFQ9eQogQ09ORklHX01BQzgwMjExPW0KLUNPTkZJR19NQUM4MDIxMV9SQ1NJTVBMRT15CisKKyMKKyMgUmF0ZSBjb250cm9sIGFsZ29yaXRobSBzZWxlY3Rpb24KKyMKK0NPTkZJR19NQUM4MDIxMV9SQ19ERUZBVUxUX1BJRD15CisjIENPTkZJR19NQUM4MDIxMV9SQ19ERUZBVUxUX1NJTVBMRSBpcyBub3Qgc2V0CisjIENPTkZJR19NQUM4MDIxMV9SQ19ERUZBVUxUX05PTkUgaXMgbm90IHNldAorCisjCisjIFNlbGVjdGluZyAneScgZm9yIGFuIGFsZ29yaXRobSB3aWxsCisjCisKKyMKKyMgYnVpbGQgdGhlIGFsZ29yaXRobSBpbnRvIG1hYzgwMjExLgorIworQ09ORklHX01BQzgwMjExX1JDX0RFRkFVTFQ9InBpZCIKK0NPTkZJR19NQUM4MDIxMV9SQ19QSUQ9eQorIyBDT05GSUdfTUFDODAyMTFfUkNfU0lNUExFIGlzIG5vdCBzZXQKIENPTkZJR19NQUM4MDIxMV9MRURTPXkKKyMgQ09ORklHX01BQzgwMjExX0RFQlVHX1BBQ0tFVF9BTElHTk1FTlQgaXMgbm90IHNldAogIyBDT05GSUdfTUFDODAyMTFfREVCVUcgaXMgbm90IHNldAogQ09ORklHX0lFRUU4MDIxMT1tCiAjIENPTkZJR19JRUVFODAyMTFfREVCVUcgaXMgbm90IHNldApAQCAtNjEwLDcgKzY0OCw3IEBACiBDT05GSUdfQkxLX0RFVl9SQU09eQogQ09ORklHX0JMS19ERVZfUkFNX0NPVU5UPTE2CiBDT05GSUdfQkxLX0RFVl9SQU1fU0laRT00MDk2Ci1DT05GSUdfQkxLX0RFVl9SQU1fQkxPQ0tTSVpFPTEwMjQKKyMgQ09ORklHX0JMS19ERVZfWElQIGlzIG5vdCBzZXQKICMgQ09ORklHX0NEUk9NX1BLVENEVkQgaXMgbm90IHNldAogIyBDT05GSUdfQVRBX09WRVJfRVRIIGlzIG5vdCBzZXQKIENPTkZJR19NSVNDX0RFVklDRVM9eQpAQCAtNjE4LDExICs2NTYsMTMgQEAKICMgQ09ORklHX0VFUFJPTV85M0NYNiBpcyBub3Qgc2V0CiAjIENPTkZJR19TR0lfSU9DNCBpcyBub3Qgc2V0CiAjIENPTkZJR19USUZNX0NPUkUgaXMgbm90IHNldAorIyBDT05GSUdfRU5DTE9TVVJFX1NFUlZJQ0VTIGlzIG5vdCBzZXQKK0NPTkZJR19IQVZFX0lERT15CiBDT05GSUdfSURFPXkKIENPTkZJR19CTEtfREVWX0lERT15CiAKICMKLSMgUGxlYXNlIHNlZSBEb2N1bWVudGF0aW9uL2lkZS50eHQgZm9yIGhlbHAvaW5mbyBvbiBJREUgZHJpdmVzCisjIFBsZWFzZSBzZWUgRG9jdW1lbnRhdGlvbi9pZGUvaWRlLnR4dCBmb3IgaGVscC9pbmZvIG9uIElERSBkcml2ZXMKICMKICMgQ09ORklHX0JMS19ERVZfSURFX1NBVEEgaXMgbm90IHNldAogQ09ORklHX0JMS19ERVZfSURFRElTSz15CkBAIC02MzAsNiArNjcwLDcgQEAKIENPTkZJR19CTEtfREVWX0lERUNTPW0KICMgQ09ORklHX0JMS19ERVZfREVMS0lOIGlzIG5vdCBzZXQKIENPTkZJR19CTEtfREVWX0lERUNEPXkKK0NPTkZJR19CTEtfREVWX0lERUNEX1ZFUkJPU0VfRVJST1JTPXkKICMgQ09ORklHX0JMS19ERVZfSURFVEFQRSBpcyBub3Qgc2V0CiBDT05GSUdfQkxLX0RFVl9JREVGTE9QUFk9eQogQ09ORklHX0JMS19ERVZfSURFU0NTST15CkBAIC02NDEsMTIgKzY4MiwxMiBAQAogIwogIyBDT05GSUdfSURFX0dFTkVSSUMgaXMgbm90IHNldAogIyBDT05GSUdfQkxLX0RFVl9QTEFURk9STSBpcyBub3Qgc2V0CitDT05GSUdfQkxLX0RFVl9JREVETUFfU0ZGPXkKIAogIwogIyBQQ0kgSURFIGNoaXBzZXRzIHN1cHBvcnQKICMKIENPTkZJR19CTEtfREVWX0lERVBDST15Ci1DT05GSUdfSURFUENJX1NIQVJFX0lSUT15CiBDT05GSUdfSURFUENJX1BDSUJVU19PUkRFUj15CiAjIENPTkZJR19CTEtfREVWX09GRkJPQVJEIGlzIG5vdCBzZXQKIENPTkZJR19CTEtfREVWX0dFTkVSSUM9eQpAQCAtNjgwLDcgKzcyMSw2IEBACiBDT05GSUdfQkxLX0RFVl9JREVfUE1BQz15CiBDT05GSUdfQkxLX0RFVl9JREVfUE1BQ19BVEExMDBGSVJTVD15CiBDT05GSUdfQkxLX0RFVl9JREVETUFfUE1BQz15Ci0jIENPTkZJR19JREVfQVJNIGlzIG5vdCBzZXQKIENPTkZJR19CTEtfREVWX0lERURNQT15CiBDT05GSUdfSURFX0FSQ0hfT0JTT0xFVEVfSU5JVD15CiAjIENPTkZJR19CTEtfREVWX0hEIGlzIG5vdCBzZXQKQEAgLTc1NCw2ICs3OTQsNyBAQAogIyBDT05GSUdfU0NTSV9JUFMgaXMgbm90IHNldAogIyBDT05GSUdfU0NTSV9JTklUSU8gaXMgbm90IHNldAogIyBDT05GSUdfU0NTSV9JTklBMTAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDU0lfTVZTQVMgaXMgbm90IHNldAogIyBDT05GSUdfU0NTSV9TVEVYIGlzIG5vdCBzZXQKIENPTkZJR19TQ1NJX1NZTTUzQzhYWF8yPXkKIENPTkZJR19TQ1NJX1NZTTUzQzhYWF9ETUFfQUREUkVTU0lOR19NT0RFPTAKQEAgLTg0OCw3ICs4ODksNiBAQAogIyBDT05GSUdfRVFVQUxJWkVSIGlzIG5vdCBzZXQKIENPTkZJR19UVU49bQogIyBDT05GSUdfVkVUSCBpcyBub3Qgc2V0Ci0jIENPTkZJR19JUDEwMDAgaXMgbm90IHNldAogIyBDT05GSUdfQVJDTkVUIGlzIG5vdCBzZXQKICMgQ09ORklHX1BIWUxJQiBpcyBub3Qgc2V0CiBDT05GSUdfTkVUX0VUSEVSTkVUPXkKQEAgLTg4MCw2ICs5MjAsNyBAQAogIyBDT05GSUdfTkUyS19QQ0kgaXMgbm90IHNldAogIyBDT05GSUdfODEzOUNQIGlzIG5vdCBzZXQKICMgQ09ORklHXzgxMzlUT08gaXMgbm90IHNldAorIyBDT05GSUdfUjYwNDAgaXMgbm90IHNldAogIyBDT05GSUdfU0lTOTAwIGlzIG5vdCBzZXQKICMgQ09ORklHX0VQSUMxMDAgaXMgbm90IHNldAogIyBDT05GSUdfU1VOREFOQ0UgaXMgbm90IHNldApAQCAtODkxLDYgKzkzMiw5IEBACiAjIENPTkZJR19ETDJLIGlzIG5vdCBzZXQKICMgQ09ORklHX0UxMDAwIGlzIG5vdCBzZXQKICMgQ09ORklHX0UxMDAwRSBpcyBub3Qgc2V0CisjIENPTkZJR19FMTAwMEVfRU5BQkxFRCBpcyBub3Qgc2V0CisjIENPTkZJR19JUDEwMDAgaXMgbm90IHNldAorIyBDT05GSUdfSUdCIGlzIG5vdCBzZXQKICMgQ09ORklHX05TODM4MjAgaXMgbm90IHNldAogIyBDT05GSUdfSEFNQUNISSBpcyBub3Qgc2V0CiAjIENPTkZJR19ZRUxMT1dGSU4gaXMgbm90IHNldApAQCAtOTE2LDYgKzk2MCw3IEBACiAjIENPTkZJR19OSVUgaXMgbm90IHNldAogIyBDT05GSUdfTUxYNF9DT1JFIGlzIG5vdCBzZXQKICMgQ09ORklHX1RFSFVUSSBpcyBub3Qgc2V0CisjIENPTkZJR19CTlgyWCBpcyBub3Qgc2V0CiAjIENPTkZJR19UUiBpcyBub3Qgc2V0CiAKICMKQEAgLTk0MSwxMiArOTg2LDE2IEBACiAjIENPTkZJR19QQ01DSUFfV0wzNTAxIGlzIG5vdCBzZXQKIENPTkZJR19QUklTTTU0PW0KICMgQ09ORklHX1VTQl9aRDEyMDEgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX05FVF9STkRJU19XTEFOIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JUTDgxODAgaXMgbm90IHNldAogIyBDT05GSUdfUlRMODE4NyBpcyBub3Qgc2V0CiAjIENPTkZJR19BRE04MjExIGlzIG5vdCBzZXQKIENPTkZJR19QNTRfQ09NTU9OPW0KICMgQ09ORklHX1A1NF9VU0IgaXMgbm90IHNldAogIyBDT05GSUdfUDU0X1BDSSBpcyBub3Qgc2V0Ci0jIENPTkZJR19JV0xXSUZJIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FUSDVLIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lXTDQ5NjUgaXMgbm90IHNldAorIyBDT05GSUdfSVdMMzk0NSBpcyBub3Qgc2V0CiAjIENPTkZJR19IT1NUQVAgaXMgbm90IHNldAogQ09ORklHX0I0Mz1tCiBDT05GSUdfQjQzX1BDSV9BVVRPU0VMRUNUPXkKQEAgLTk1NCwyMCArMTAwMywxNyBAQAogIyBDT05GSUdfQjQzX1BDTUNJQSBpcyBub3Qgc2V0CiBDT05GSUdfQjQzX0xFRFM9eQogIyBDT05GSUdfQjQzX0RFQlVHIGlzIG5vdCBzZXQKLUNPTkZJR19CNDNfRE1BPXkKLUNPTkZJR19CNDNfUElPPXkKLUNPTkZJR19CNDNfRE1BX0FORF9QSU9fTU9ERT15Ci0jIENPTkZJR19CNDNfRE1BX01PREUgaXMgbm90IHNldAotIyBDT05GSUdfQjQzX1BJT19NT0RFIGlzIG5vdCBzZXQKIENPTkZJR19CNDNMRUdBQ1k9bQogQ09ORklHX0I0M0xFR0FDWV9QQ0lfQVVUT1NFTEVDVD15CiBDT05GSUdfQjQzTEVHQUNZX1BDSUNPUkVfQVVUT1NFTEVDVD15CitDT05GSUdfQjQzTEVHQUNZX0xFRFM9eQogQ09ORklHX0I0M0xFR0FDWV9ERUJVRz15CiBDT05GSUdfQjQzTEVHQUNZX0RNQT15CiBDT05GSUdfQjQzTEVHQUNZX1BJTz15CiBDT05GSUdfQjQzTEVHQUNZX0RNQV9BTkRfUElPX01PREU9eQogIyBDT05GSUdfQjQzTEVHQUNZX0RNQV9NT0RFIGlzIG5vdCBzZXQKICMgQ09ORklHX0I0M0xFR0FDWV9QSU9fTU9ERSBpcyBub3Qgc2V0CisjIENPTkZJR19aRDEyMTFSVyBpcyBub3Qgc2V0CiAjIENPTkZJR19SVDJYMDAgaXMgbm90IHNldAogCiAjCkBAIC0xMDA1LDcgKzEwNTEsNiBAQAogIyBDT05GSUdfU0xJUCBpcyBub3Qgc2V0CiBDT05GSUdfU0xIQz15CiAjIENPTkZJR19ORVRfRkMgaXMgbm90IHNldAotIyBDT05GSUdfU0hBUEVSIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVENPTlNPTEUgaXMgbm90IHNldAogIyBDT05GSUdfTkVUUE9MTCBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRfUE9MTF9DT05UUk9MTEVSIGlzIG5vdCBzZXQKQEAgLTEwNjgsNiArMTExMyw3IEBACiBDT05GSUdfSFdfQ09OU09MRT15CiAjIENPTkZJR19WVF9IV19DT05TT0xFX0JJTkRJTkcgaXMgbm90IHNldAogIyBDT05GSUdfU0VSSUFMX05PTlNUQU5EQVJEIGlzIG5vdCBzZXQKKyMgQ09ORklHX05PWk9NSSBpcyBub3Qgc2V0CiAKICMKICMgU2VyaWFsIGRyaXZlcnMKQEAgLTExMDUsNiArMTE1MSw3IEBACiAjIENPTkZJR19TWU5DTElOS19DUyBpcyBub3Qgc2V0CiAjIENPTkZJR19DQVJETUFOXzQwMDAgaXMgbm90IHNldAogIyBDT05GSUdfQ0FSRE1BTl80MDQwIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lQV0lSRUxFU1MgaXMgbm90IHNldAogIyBDT05GSUdfUkFXX0RSSVZFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19UQ0dfVFBNIGlzIG5vdCBzZXQKIENPTkZJR19ERVZQT1JUPXkKQEAgLTExNTEsMTQgKzExOTgsMTIgQEAKICMKICMgTWlzY2VsbGFuZW91cyBJMkMgQ2hpcCBzdXBwb3J0CiAjCi0jIENPTkZJR19TRU5TT1JTX0RTMTMzNyBpcyBub3Qgc2V0Ci0jIENPTkZJR19TRU5TT1JTX0RTMTM3NCBpcyBub3Qgc2V0CiAjIENPTkZJR19EUzE2ODIgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19FRVBST00gaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19QQ0Y4NTc0IGlzIG5vdCBzZXQKLSMgQ09ORklHX1NFTlNPUlNfUENBOTUzOSBpcyBub3Qgc2V0CisjIENPTkZJR19QQ0Y4NTc1IGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfUENGODU5MSBpcyBub3Qgc2V0Ci0jIENPTkZJR19TRU5TT1JTX000MVQwMCBpcyBub3Qgc2V0CisjIENPTkZJR19UUFM2NTAxMCBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX01BWDY4NzUgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19UU0wyNTUwIGlzIG5vdCBzZXQKICMgQ09ORklHX0kyQ19ERUJVR19DT1JFIGlzIG5vdCBzZXQKQEAgLTExNzksNiArMTIyNCw3IEBACiAjIENPTkZJR19CQVRURVJZX0RTMjc2MCBpcyBub3Qgc2V0CiBDT05GSUdfQkFUVEVSWV9QTVU9eQogIyBDT05GSUdfSFdNT04gaXMgbm90IHNldAorIyBDT05GSUdfVEhFUk1BTCBpcyBub3Qgc2V0CiAjIENPTkZJR19XQVRDSERPRyBpcyBub3Qgc2V0CiAKICMKQEAgLTExODgsNiArMTIzNCw3IEBACiBDT05GSUdfU1NCPW0KIENPTkZJR19TU0JfUENJSE9TVF9QT1NTSUJMRT15CiBDT05GSUdfU1NCX1BDSUhPU1Q9eQorQ09ORklHX1NTQl9CNDNfUENJX0JSSURHRT15CiBDT05GSUdfU1NCX1BDTUNJQUhPU1RfUE9TU0lCTEU9eQogIyBDT05GSUdfU1NCX1BDTUNJQUhPU1QgaXMgbm90IHNldAogIyBDT05GSUdfU1NCX0RFQlVHIGlzIG5vdCBzZXQKQEAgLTEzNzIsNiArMTQxOSw3IEBACiAjIENPTkZJR19TTkRfQlQ4N1ggaXMgbm90IHNldAogIyBDT05GSUdfU05EX0NBMDEwNiBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfQ01JUENJIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NORF9PWFlHRU4gaXMgbm90IHNldAogIyBDT05GSUdfU05EX0NTNDI4MSBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfQ1M0NlhYIGlzIG5vdCBzZXQKICMgQ09ORklHX1NORF9DUzU1MzAgaXMgbm90IHNldApAQCAtMTM5Nyw2ICsxNDQ1LDcgQEAKICMgQ09ORklHX1NORF9IREFfSU5URUwgaXMgbm90IHNldAogIyBDT05GSUdfU05EX0hEU1AgaXMgbm90IHNldAogIyBDT05GSUdfU05EX0hEU1BNIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NORF9ISUZJRVIgaXMgbm90IHNldAogIyBDT05GSUdfU05EX0lDRTE3MTIgaXMgbm90IHNldAogIyBDT05GSUdfU05EX0lDRTE3MjQgaXMgbm90IHNldAogIyBDT05GSUdfU05EX0lOVEVMOFgwIGlzIG5vdCBzZXQKQEAgLTE0MTQsNiArMTQ2Myw3IEBACiAjIENPTkZJR19TTkRfVFJJREVOVCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfVklBODJYWCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfVklBODJYWF9NT0RFTSBpcyBub3Qgc2V0CisjIENPTkZJR19TTkRfVklSVFVPU08gaXMgbm90IHNldAogIyBDT05GSUdfU05EX1ZYMjIyIGlzIG5vdCBzZXQKICMgQ09ORklHX1NORF9ZTUZQQ0kgaXMgbm90IHNldAogCkBAIC0xNDYxLDYgKzE1MTEsMTAgQEAKICMKIAogIworIyBBTFNBIFNvQyBhdWRpbyBmb3IgRnJlZXNjYWxlIFNPQ3MKKyMKKworIwogIyBPcGVuIFNvdW5kIFN5c3RlbQogIwogIyBDT05GSUdfU09VTkRfUFJJTUUgaXMgbm90IHNldApAQCAtMTQ4Miw2ICsxNTM2LDcgQEAKIENPTkZJR19VU0JfQVJDSF9IQVNfRUhDST15CiBDT05GSUdfVVNCPXkKICMgQ09ORklHX1VTQl9ERUJVRyBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfQU5OT1VOQ0VfTkVXX0RFVklDRVMgaXMgbm90IHNldAogCiAjCiAjIE1pc2NlbGxhbmVvdXMgVVNCIG9wdGlvbnMKQEAgLTE0OTcsOSArMTU1Miw5IEBACiAjIFVTQiBIb3N0IENvbnRyb2xsZXIgRHJpdmVycwogIwogQ09ORklHX1VTQl9FSENJX0hDRD1tCi1DT05GSUdfVVNCX0VIQ0lfU1BMSVRfSVNPPXkKIENPTkZJR19VU0JfRUhDSV9ST09UX0hVQl9UVD15CiAjIENPTkZJR19VU0JfRUhDSV9UVF9ORVdTQ0hFRCBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfRUhDSV9IQ0RfUFBDX09GIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9JU1AxMTZYX0hDRCBpcyBub3Qgc2V0CiBDT05GSUdfVVNCX09IQ0lfSENEPXkKICMgQ09ORklHX1VTQl9PSENJX0hDRF9QUENfT0YgaXMgbm90IHNldApAQCAtMTU0NywxMSArMTYwMiw4IEBACiAjCiAjIFVTQiBwb3J0IGRyaXZlcnMKICMKLQotIwotIyBVU0IgU2VyaWFsIENvbnZlcnRlciBzdXBwb3J0Ci0jCiBDT05GSUdfVVNCX1NFUklBTD1tCitDT05GSUdfVVNCX0VaVVNCPXkKICMgQ09ORklHX1VTQl9TRVJJQUxfR0VORVJJQyBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfU0VSSUFMX0FJUkNBQkxFIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9TRVJJQUxfQUlSUFJJTUUgaXMgbm90IHNldApAQCAtMTU3Miw2ICsxNjI0LDcgQEAKICMgQ09ORklHX1VTQl9TRVJJQUxfRURHRVBPUlRfVEkgaXMgbm90IHNldAogIyBDT05GSUdfVVNCX1NFUklBTF9HQVJNSU4gaXMgbm90IHNldAogIyBDT05GSUdfVVNCX1NFUklBTF9JUFcgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX1NFUklBTF9JVVUgaXMgbm90IHNldAogQ09ORklHX1VTQl9TRVJJQUxfS0VZU1BBTl9QREE9bQogQ09ORklHX1VTQl9TRVJJQUxfS0VZU1BBTj1tCiBDT05GSUdfVVNCX1NFUklBTF9LRVlTUEFOX01QUj15CkBAIC0xNjAzLDcgKzE2NTYsNiBAQAogIyBDT05GSUdfVVNCX1NFUklBTF9PUFRJT04gaXMgbm90IHNldAogIyBDT05GSUdfVVNCX1NFUklBTF9PTU5JTkVUIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9TRVJJQUxfREVCVUcgaXMgbm90IHNldAotQ09ORklHX1VTQl9FWlVTQj15CiAKICMKICMgVVNCIE1pc2NlbGxhbmVvdXMgZHJpdmVycwpAQCAtMTYyOCwxNiArMTY4MCw5IEBACiAjIENPTkZJR19VU0JfVFJBTkNFVklCUkFUT1IgaXMgbm90IHNldAogIyBDT05GSUdfVVNCX0lPV0FSUklPUiBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfVEVTVCBpcyBub3Qgc2V0Ci0KLSMKLSMgVVNCIERTTCBtb2RlbSBzdXBwb3J0Ci0jCi0KLSMKLSMgVVNCIEdhZGdldCBTdXBwb3J0Ci0jCiAjIENPTkZJR19VU0JfR0FER0VUIGlzIG5vdCBzZXQKICMgQ09ORklHX01NQyBpcyBub3Qgc2V0CisjIENPTkZJR19NRU1TVElDSyBpcyBub3Qgc2V0CiBDT05GSUdfTkVXX0xFRFM9eQogQ09ORklHX0xFRFNfQ0xBU1M9eQogCkBAIC0xNjU1LDYgKzE3MDAsNyBAQAogIyBDT05GSUdfSU5GSU5JQkFORCBpcyBub3Qgc2V0CiAjIENPTkZJR19FREFDIGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19DTEFTUyBpcyBub3Qgc2V0CisjIENPTkZJR19ETUFERVZJQ0VTIGlzIG5vdCBzZXQKIAogIwogIyBVc2Vyc3BhY2UgSS9PCkBAIC0xNjgwLDEyICsxNzI2LDEwIEBACiAjIENPTkZJR19YRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfR0ZTMl9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19PQ0ZTMl9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CitDT05GSUdfRE5PVElGWT15CiBDT05GSUdfSU5PVElGWT15CiBDT05GSUdfSU5PVElGWV9VU0VSPXkKICMgQ09ORklHX1FVT1RBIGlzIG5vdCBzZXQKLUNPTkZJR19ETk9USUZZPXkKICMgQ09ORklHX0FVVE9GU19GUyBpcyBub3Qgc2V0CiBDT05GSUdfQVVUT0ZTNF9GUz1tCiBDT05GSUdfRlVTRV9GUz1tCkBAIC0xNzMzLDggKzE3NzcsMTAgQEAKICMgQ09ORklHX0VGU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUkFNRlMgaXMgbm90IHNldAogIyBDT05GSUdfVlhGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19IUEZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1FOWDRGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TWVNWX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1VGU19GUyBpcyBub3Qgc2V0CiBDT05GSUdfTkVUV09SS19GSUxFU1lTVEVNUz15CkBAIC0xODI4LDcgKzE4NzQsNiBAQAogIyBDT05GSUdfTkxTX0tPSThfVSBpcyBub3Qgc2V0CiBDT05GSUdfTkxTX1VURjg9bQogIyBDT05GSUdfRExNIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VDQ19TTE9XIGlzIG5vdCBzZXQKIAogIwogIyBMaWJyYXJ5IHJvdXRpbmVzCkBAIC0xODUwLDExICsxODk1LDYgQEAKIENPTkZJR19IQVNfSU9NRU09eQogQ09ORklHX0hBU19JT1BPUlQ9eQogQ09ORklHX0hBU19ETUE9eQotQ09ORklHX0lOU1RSVU1FTlRBVElPTj15Ci1DT05GSUdfUFJPRklMSU5HPXkKLUNPTkZJR19PUFJPRklMRT15Ci0jIENPTkZJR19LUFJPQkVTIGlzIG5vdCBzZXQKLSMgQ09ORklHX01BUktFUlMgaXMgbm90IHNldAogCiAjCiAjIEtlcm5lbCBoYWNraW5nCkBAIC0xODczLDYgKzE5MTMsNyBAQAogIyBDT05GSUdfU0NIRURTVEFUUyBpcyBub3Qgc2V0CiAjIENPTkZJR19USU1FUl9TVEFUUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TTFVCX0RFQlVHX09OIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NMVUJfU1RBVFMgaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfUlRfTVVURVhFUyBpcyBub3Qgc2V0CiAjIENPTkZJR19SVF9NVVRFWF9URVNURVIgaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfU1BJTkxPQ0sgaXMgbm90IHNldApAQCAtMTg4NSw5ICsxOTI2LDkgQEAKICMgQ09ORklHX0RFQlVHX1ZNIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX0xJU1QgaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfU0cgaXMgbm90IHNldAotIyBDT05GSUdfRk9SQ0VEX0lOTElOSU5HIGlzIG5vdCBzZXQKICMgQ09ORklHX0JPT1RfUFJJTlRLX0RFTEFZIGlzIG5vdCBzZXQKICMgQ09ORklHX1JDVV9UT1JUVVJFX1RFU1QgaXMgbm90IHNldAorIyBDT05GSUdfQkFDS1RSQUNFX1NFTEZfVEVTVCBpcyBub3Qgc2V0CiAjIENPTkZJR19GQVVMVF9JTkpFQ1RJT04gaXMgbm90IHNldAogIyBDT05GSUdfU0FNUExFUyBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19TVEFDS09WRVJGTE9XIGlzIG5vdCBzZXQKQEAgLTE5MDgsNyArMTk0OSw5IEBACiAjIENPTkZJR19TRUNVUklUWV9GSUxFX0NBUEFCSUxJVElFUyBpcyBub3Qgc2V0CiBDT05GSUdfQ1JZUFRPPXkKIENPTkZJR19DUllQVE9fQUxHQVBJPXkKK0NPTkZJR19DUllQVE9fQUVBRD15CiBDT05GSUdfQ1JZUFRPX0JMS0NJUEhFUj15CisjIENPTkZJR19DUllQVE9fU0VRSVYgaXMgbm90IHNldAogQ09ORklHX0NSWVBUT19IQVNIPXkKIENPTkZJR19DUllQVE9fTUFOQUdFUj15CiBDT05GSUdfQ1JZUFRPX0hNQUM9eQpAQCAtMTkyNyw2ICsxOTcwLDkgQEAKIENPTkZJR19DUllQVE9fUENCQz1tCiAjIENPTkZJR19DUllQVE9fTFJXIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19YVFMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NUUiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fR0NNIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DQ00gaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0NSWVBURCBpcyBub3Qgc2V0CiBDT05GSUdfQ1JZUFRPX0RFUz15CiAjIENPTkZJR19DUllQVE9fRkNSWVBUIGlzIG5vdCBzZXQKQEAgLTE5NDIsMTEgKzE5ODgsMTQgQEAKIENPTkZJR19DUllQVE9fS0hBWkFEPW0KIENPTkZJR19DUllQVE9fQU5VQklTPW0KICMgQ09ORklHX0NSWVBUT19TRUVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19TQUxTQTIwIGlzIG5vdCBzZXQKIENPTkZJR19DUllQVE9fREVGTEFURT1tCiBDT05GSUdfQ1JZUFRPX01JQ0hBRUxfTUlDPW0KIENPTkZJR19DUllQVE9fQ1JDMzJDPW0KICMgQ09ORklHX0NSWVBUT19DQU1FTExJQSBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fVEVTVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19DUllQVE9fQVVUSEVOQyBpcyBub3Qgc2V0CitDT05GSUdfQ1JZUFRPX0FVVEhFTkM9eQorIyBDT05GSUdfQ1JZUFRPX0xaTyBpcyBub3Qgc2V0CiBDT05GSUdfQ1JZUFRPX0hXPXkKKyMgQ09ORklHX0NSWVBUT19ERVZfSElGTl83OTVYIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19DTE9DSyBpcyBub3Qgc2V0CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWcgYi9hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWcKaW5kZXggNzY5NWE0Yy4uODgwYWI3YWQgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZworKysgYi9hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWcKQEAgLTEsNyArMSw3IEBACiAjCiAjIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIG1ha2UgY29uZmlnOiBkb24ndCBlZGl0Ci0jIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMjQtcmM0Ci0jIEZyaSBEZWMgMjEgMTQ6NDc6MjkgMjAwNworIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjI1LXJjNgorIyBUaHUgTWFyIDIwIDExOjA2OjI4IDIwMDgKICMKIENPTkZJR19QUEM2ND15CiAKQEAgLTI4LDYgKzI4LDcgQEAKIENPTkZJR19HRU5FUklDX1RJTUVfVlNZU0NBTEw9eQogQ09ORklHX0dFTkVSSUNfQ0xPQ0tFVkVOVFM9eQogQ09ORklHX0dFTkVSSUNfSEFSRElSUVM9eQorQ09ORklHX0hBVkVfU0VUVVBfUEVSX0NQVV9BUkVBPXkKIENPTkZJR19JUlFfUEVSX0NQVT15CiBDT05GSUdfUldTRU1fWENIR0FERF9BTEdPUklUSE09eQogQ09ORklHX0FSQ0hfSEFTX0lMT0cyX1UzMj15CkBAIC00OSw3ICs1MCw5IEBACiBDT05GSUdfQVVESVRfQVJDSD15CiBDT05GSUdfR0VORVJJQ19CVUc9eQogIyBDT05GSUdfREVGQVVMVF9VSU1BR0UgaXMgbm90IHNldAotQ09ORklHX1BQQzY0X1NXU1VTUD15CitDT05GSUdfSElCRVJOQVRFXzY0PXkKK0NPTkZJR19BUkNIX0hJQkVSTkFUSU9OX1BPU1NJQkxFPXkKK0NPTkZJR19BUkNIX1NVU1BFTkRfUE9TU0lCTEU9eQogIyBDT05GSUdfUFBDX0RDUl9OQVRJVkUgaXMgbm90IHNldAogQ09ORklHX1BQQ19EQ1JfTU1JTz15CiBDT05GSUdfUFBDX0RDUj15CkBAIC03Miw4ICs3NSw2IEBACiBDT05GSUdfVEFTS1NUQVRTPXkKIENPTkZJR19UQVNLX0RFTEFZX0FDQ1Q9eQogIyBDT05GSUdfVEFTS19YQUNDVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19VU0VSX05TIGlzIG5vdCBzZXQKLSMgQ09ORklHX1BJRF9OUyBpcyBub3Qgc2V0CiAjIENPTkZJR19BVURJVCBpcyBub3Qgc2V0CiBDT05GSUdfSUtDT05GSUc9eQogQ09ORklHX0lLQ09ORklHX1BST0M9eQpAQCAtODIsMTMgKzgzLDIwIEBACiAjIENPTkZJR19DR1JPVVBfREVCVUcgaXMgbm90IHNldAogIyBDT05GSUdfQ0dST1VQX05TIGlzIG5vdCBzZXQKIENPTkZJR19DUFVTRVRTPXkKLUNPTkZJR19GQUlSX0dST1VQX1NDSEVEPXkKLUNPTkZJR19GQUlSX1VTRVJfU0NIRUQ9eQotIyBDT05GSUdfRkFJUl9DR1JPVVBfU0NIRUQgaXMgbm90IHNldAorIyBDT05GSUdfR1JPVVBfU0NIRUQgaXMgbm90IHNldAorIyBDT05GSUdfVVNFUl9TQ0hFRCBpcyBub3Qgc2V0CisjIENPTkZJR19DR1JPVVBfU0NIRUQgaXMgbm90IHNldAogIyBDT05GSUdfQ0dST1VQX0NQVUFDQ1QgaXMgbm90IHNldAorIyBDT05GSUdfUkVTT1VSQ0VfQ09VTlRFUlMgaXMgbm90IHNldAogQ09ORklHX1NZU0ZTX0RFUFJFQ0FURUQ9eQorQ09ORklHX1NZU0ZTX0RFUFJFQ0FURURfVjI9eQogQ09ORklHX1BST0NfUElEX0NQVVNFVD15CiBDT05GSUdfUkVMQVk9eQorQ09ORklHX05BTUVTUEFDRVM9eQorIyBDT05GSUdfVVRTX05TIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lQQ19OUyBpcyBub3Qgc2V0CisjIENPTkZJR19VU0VSX05TIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BJRF9OUyBpcyBub3Qgc2V0CiBDT05GSUdfQkxLX0RFVl9JTklUUkQ9eQogQ09ORklHX0lOSVRSQU1GU19TT1VSQ0U9IiIKIENPTkZJR19DQ19PUFRJTUlaRV9GT1JfU0laRT15CkBAIC0xMDIsMTEgKzExMCwxMyBAQAogQ09ORklHX1BSSU5USz15CiBDT05GSUdfQlVHPXkKIENPTkZJR19FTEZfQ09SRT15CisjIENPTkZJR19DT01QQVRfQlJLIGlzIG5vdCBzZXQKIENPTkZJR19CQVNFX0ZVTEw9eQogQ09ORklHX0ZVVEVYPXkKIENPTkZJR19BTk9OX0lOT0RFUz15CiBDT05GSUdfRVBPTEw9eQogQ09ORklHX1NJR05BTEZEPXkKK0NPTkZJR19USU1FUkZEPXkKIENPTkZJR19FVkVOVEZEPXkKIENPTkZJR19TSE1FTT15CiBDT05GSUdfVk1fRVZFTlRfQ09VTlRFUlM9eQpAQCAtMTE0LDYgKzEyNCwxNSBAQAogIyBDT05GSUdfU0xBQiBpcyBub3Qgc2V0CiBDT05GSUdfU0xVQj15CiAjIENPTkZJR19TTE9CIGlzIG5vdCBzZXQKK0NPTkZJR19QUk9GSUxJTkc9eQorIyBDT05GSUdfTUFSS0VSUyBpcyBub3Qgc2V0CitDT05GSUdfT1BST0ZJTEU9eQorQ09ORklHX0hBVkVfT1BST0ZJTEU9eQorIyBDT05GSUdfS1BST0JFUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9LUFJPQkVTPXkKK0NPTkZJR19IQVZFX0tSRVRQUk9CRVM9eQorQ09ORklHX1BST0NfUEFHRV9NT05JVE9SPXkKK0NPTkZJR19TTEFCSU5GTz15CiBDT05GSUdfUlRfTVVURVhFUz15CiAjIENPTkZJR19USU5ZX1NITUVNIGlzIG5vdCBzZXQKIENPTkZJR19CQVNFX1NNQUxMPTAKQEAgLTE0MSw2ICsxNjAsNyBAQAogIyBDT05GSUdfREVGQVVMVF9DRlEgaXMgbm90IHNldAogIyBDT05GSUdfREVGQVVMVF9OT09QIGlzIG5vdCBzZXQKIENPTkZJR19ERUZBVUxUX0lPU0NIRUQ9ImFudGljaXBhdG9yeSIKK0NPTkZJR19DTEFTU0lDX1JDVT15CiAKICMKICMgUGxhdGZvcm0gc3VwcG9ydApAQCAtMTYzLDggKzE4Myw4IEBACiBDT05GSUdfVklPQ0Q9bQogQ09ORklHX1ZJT1RBUEU9bQogQ09ORklHX1ZJT1BBVEg9eQotIyBDT05GSUdfUFBDX01QQzUyeHggaXMgbm90IHNldAotIyBDT05GSUdfUFBDX01QQzUyMDAgaXMgbm90IHNldAorIyBDT05GSUdfUFBDX01QQzUxMnggaXMgbm90IHNldAorIyBDT05GSUdfUFBDX01QQzUxMjEgaXMgbm90IHNldAogQ09ORklHX1BQQ19QTUFDPXkKIENPTkZJR19QUENfUE1BQzY0PXkKIENPTkZJR19QUENfTUFQTEU9eQpAQCAtMTc2LDcgKzE5Niw2IEBACiBDT05GSUdfUFBDX1BBU0VNSV9JT01NVT15CiAjIENPTkZJR19QUENfUEFTRU1JX0lPTU1VX0RNQV9GT1JDRSBpcyBub3Qgc2V0CiBDT05GSUdfUFBDX1BBU0VNSV9NRElPPXkKLUNPTkZJR19FTEVDVFJBX0lERT15CiBDT05GSUdfUFBDX0NFTExFQj15CiAjIENPTkZJR19QUENfUFMzIGlzIG5vdCBzZXQKIENPTkZJR19QUENfQ0VMTD15CkBAIC0xOTMsMTEgKzIxMiwxMyBAQAogQ09ORklHX0NCRV9USEVSTT1tCiBDT05GSUdfQ0JFX0NQVUZSRVE9bQogQ09ORklHX0NCRV9DUFVGUkVRX1BNST1tCitDT05GSUdfT1BST0ZJTEVfQ0VMTD15CiAjIENPTkZJR19QUTJBRFMgaXMgbm90IHNldAogQ09ORklHX1BQQ19OQVRJVkU9eQogQ09ORklHX1VEQkdfUlRBU19DT05TT0xFPXkKIENPTkZJR19QUENfVURCR19CRUFUPXkKIENPTkZJR19YSUNTPXkKKyMgQ09ORklHX0lQSUMgaXMgbm90IHNldAogQ09ORklHX01QSUM9eQogIyBDT05GSUdfTVBJQ19XRUlSRCBpcyBub3Qgc2V0CiBDT05GSUdfUFBDX0k4MjU5PXkKQEAgLTIzNiw3ICsyNTcsNiBAQAogIwogQ09ORklHX0NQVV9GUkVRX1BNQUM2ND15CiBDT05GSUdfUFBDX1BBU0VNSV9DUFVGUkVRPXkKLSMgQ09ORklHX0NQTTIgaXMgbm90IHNldAogQ09ORklHX0FYT05fUkFNPW0KICMgQ09ORklHX0ZTTF9VTEkxNTc1IGlzIG5vdCBzZXQKIApAQCAtMjUyLDE3ICsyNzIsMjEgQEAKICMgQ09ORklHX0haXzMwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19IWl8xMDAwIGlzIG5vdCBzZXQKIENPTkZJR19IWj0yNTAKKyMgQ09ORklHX1NDSEVEX0hSVElDSyBpcyBub3Qgc2V0CiBDT05GSUdfUFJFRU1QVF9OT05FPXkKICMgQ09ORklHX1BSRUVNUFRfVk9MVU5UQVJZIGlzIG5vdCBzZXQKICMgQ09ORklHX1BSRUVNUFQgaXMgbm90IHNldAotIyBDT05GSUdfUFJFRU1QVF9CS0wgaXMgbm90IHNldAogQ09ORklHX0JJTkZNVF9FTEY9eQorQ09ORklHX0NPTVBBVF9CSU5GTVRfRUxGPXkKIENPTkZJR19CSU5GTVRfTUlTQz1tCiBDT05GSUdfRk9SQ0VfTUFYX1pPTkVPUkRFUj0xMwogQ09ORklHX0hVR0VUTEJfUEFHRV9TSVpFX1ZBUklBQkxFPXkKIENPTkZJR19JT01NVV9WTUVSR0U9eQorQ09ORklHX0lPTU1VX0hFTFBFUj15CiBDT05GSUdfSE9UUExVR19DUFU9eQogQ09ORklHX0FSQ0hfRU5BQkxFX01FTU9SWV9IT1RQTFVHPXkKK0NPTkZJR19BUkNIX0hBU19XQUxLX01FTU9SWT15CitDT05GSUdfQVJDSF9FTkFCTEVfTUVNT1JZX0hPVFJFTU9WRT15CiBDT05GSUdfS0VYRUM9eQogIyBDT05GSUdfQ1JBU0hfRFVNUCBpcyBub3Qgc2V0CiBDT05GSUdfSVJRX0FMTF9DUFVTPXkKQEAgLTI5NCwxMSArMzE4LDkgQEAKICMgQ09ORklHX1NDSEVEX1NNVCBpcyBub3Qgc2V0CiBDT05GSUdfUFJPQ19ERVZJQ0VUUkVFPXkKICMgQ09ORklHX0NNRExJTkVfQk9PTCBpcyBub3Qgc2V0CitDT05GSUdfQVJDSF9XQU5UU19GUkVFWkVSX0NPTlRST0w9eQogIyBDT05GSUdfUE0gaXMgbm90IHNldAotQ09ORklHX1NVU1BFTkRfU01QX1BPU1NJQkxFPXkKLUNPTkZJR19ISUJFUk5BVElPTl9TTVBfUE9TU0lCTEU9eQogQ09ORklHX1NFQ0NPTVA9eQotIyBDT05GSUdfV0FOVF9ERVZJQ0VfVFJFRSBpcyBub3Qgc2V0CiBDT05GSUdfSVNBX0RNQV9BUEk9eQogCiAjCkBAIC0zNTIsNiArMzc0LDcgQEAKIENPTkZJR19YRlJNX1VTRVI9bQogIyBDT05GSUdfWEZSTV9TVUJfUE9MSUNZIGlzIG5vdCBzZXQKICMgQ09ORklHX1hGUk1fTUlHUkFURSBpcyBub3Qgc2V0CisjIENPTkZJR19YRlJNX1NUQVRJU1RJQ1MgaXMgbm90IHNldAogQ09ORklHX05FVF9LRVk9bQogIyBDT05GSUdfTkVUX0tFWV9NSUdSQVRFIGlzIG5vdCBzZXQKIENPTkZJR19JTkVUPXkKQEAgLTM3NSw3ICszOTgsNyBAQAogQ09ORklHX0lORVRfWEZSTV9NT0RFX1RSQU5TUE9SVD15CiBDT05GSUdfSU5FVF9YRlJNX01PREVfVFVOTkVMPXkKIENPTkZJR19JTkVUX1hGUk1fTU9ERV9CRUVUPXkKLUNPTkZJR19JTkVUX0xSTz1tCitDT05GSUdfSU5FVF9MUk89eQogQ09ORklHX0lORVRfRElBRz15CiBDT05GSUdfSU5FVF9UQ1BfRElBRz15CiAjIENPTkZJR19UQ1BfQ09OR19BRFZBTkNFRCBpcyBub3Qgc2V0CkBAIC0zODksMTQgKzQxMiwxNCBAQAogIyBDT05GSUdfTkVUV09SS19TRUNNQVJLIGlzIG5vdCBzZXQKIENPTkZJR19ORVRGSUxURVI9eQogIyBDT05GSUdfTkVURklMVEVSX0RFQlVHIGlzIG5vdCBzZXQKK0NPTkZJR19ORVRGSUxURVJfQURWQU5DRUQ9eQogCiAjCiAjIENvcmUgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24KICMKLUNPTkZJR19ORVRGSUxURVJfTkVUTElOSz15CitDT05GSUdfTkVURklMVEVSX05FVExJTks9bQogQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LX1FVRVVFPW0KIENPTkZJR19ORVRGSUxURVJfTkVUTElOS19MT0c9bQotQ09ORklHX05GX0NPTk5UUkFDS19FTkFCTEVEPW0KIENPTkZJR19ORl9DT05OVFJBQ0s9bQogQ09ORklHX05GX0NUX0FDQ1Q9eQogQ09ORklHX05GX0NPTk5UUkFDS19NQVJLPXkKQEAgLTQyMiw4ICs0NDUsMTAgQEAKIENPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX05GUVVFVUU9bQogQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfTkZMT0c9bQogQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfTk9UUkFDSz1tCitDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9SQVRFRVNUPW0KIENPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX1RSQUNFPW0KIENPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX1RDUE1TUz1tCitDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9UQ1BPUFRTVFJJUD1tCiBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0NPTU1FTlQ9bQogQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9DT05OQllURVM9bQogQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9DT05OTElNSVQ9bQpAQCAtNDMzLDE0ICs0NTgsMTcgQEAKIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfRFNDUD1tCiBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0VTUD1tCiBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0hFTFBFUj1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0lQUkFOR0U9bQogQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9MRU5HVEg9bQogQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9MSU1JVD1tCiBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX01BQz1tCiBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX01BUks9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9PV05FUj1tCiBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1BPTElDWT1tCiBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX01VTFRJUE9SVD1tCiBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1BLVFRZUEU9bQogQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9RVU9UQT1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1JBVEVFU1Q9bQogQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9SRUFMTT1tCiBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1NDVFA9bQogQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9TVEFURT1tCkBAIC00NTgsMTMgKzQ4NiwxMCBAQAogQ09ORklHX05GX0NPTk5UUkFDS19QUk9DX0NPTVBBVD15CiBDT05GSUdfSVBfTkZfUVVFVUU9bQogQ09ORklHX0lQX05GX0lQVEFCTEVTPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9JUFJBTkdFPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9UT1M9bQogQ09ORklHX0lQX05GX01BVENIX1JFQ0VOVD1tCiBDT05GSUdfSVBfTkZfTUFUQ0hfRUNOPW0KIENPTkZJR19JUF9ORl9NQVRDSF9BSD1tCiBDT05GSUdfSVBfTkZfTUFUQ0hfVFRMPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9PV05FUj1tCiBDT05GSUdfSVBfTkZfTUFUQ0hfQUREUlRZUEU9bQogQ09ORklHX0lQX05GX0ZJTFRFUj1tCiBDT05GSUdfSVBfTkZfVEFSR0VUX1JFSkVDVD1tCkBAIC00NzUsNyArNTAwLDYgQEAKIENPTkZJR19JUF9ORl9UQVJHRVRfTUFTUVVFUkFERT1tCiBDT05GSUdfSVBfTkZfVEFSR0VUX1JFRElSRUNUPW0KIENPTkZJR19JUF9ORl9UQVJHRVRfTkVUTUFQPW0KLUNPTkZJR19JUF9ORl9UQVJHRVRfU0FNRT1tCiBDT05GSUdfTkZfTkFUX1NOTVBfQkFTSUM9bQogQ09ORklHX05GX05BVF9QUk9UT19HUkU9bQogQ09ORklHX05GX05BVF9GVFA9bQpAQCAtNDg2LDcgKzUxMCw2IEBACiBDT05GSUdfTkZfTkFUX0gzMjM9bQogQ09ORklHX05GX05BVF9TSVA9bQogQ09ORklHX0lQX05GX01BTkdMRT1tCi1DT05GSUdfSVBfTkZfVEFSR0VUX1RPUz1tCiBDT05GSUdfSVBfTkZfVEFSR0VUX0VDTj1tCiBDT05GSUdfSVBfTkZfVEFSR0VUX1RUTD1tCiBDT05GSUdfSVBfTkZfVEFSR0VUX0NMVVNURVJJUD1tCkBAIC01MTcsNiArNTQwLDcgQEAKICMKICMgQ09ORklHX05FVF9QS1RHRU4gaXMgbm90IHNldAogIyBDT05GSUdfSEFNUkFESU8gaXMgbm90IHNldAorIyBDT05GSUdfQ0FOIGlzIG5vdCBzZXQKICMgQ09ORklHX0lSREEgaXMgbm90IHNldAogIyBDT05GSUdfQlQgaXMgbm90IHNldAogIyBDT05GSUdfQUZfUlhSUEMgaXMgbm90IHNldApAQCAtNTYzLDcgKzU4Nyw3IEBACiBDT05GSUdfQkxLX0RFVl9SQU09eQogQ09ORklHX0JMS19ERVZfUkFNX0NPVU5UPTE2CiBDT05GSUdfQkxLX0RFVl9SQU1fU0laRT02NTUzNgotQ09ORklHX0JMS19ERVZfUkFNX0JMT0NLU0laRT0xMDI0CisjIENPTkZJR19CTEtfREVWX1hJUCBpcyBub3Qgc2V0CiAjIENPTkZJR19DRFJPTV9QS1RDRFZEIGlzIG5vdCBzZXQKICMgQ09ORklHX0FUQV9PVkVSX0VUSCBpcyBub3Qgc2V0CiBDT05GSUdfTUlTQ19ERVZJQ0VTPXkKQEAgLTU3MSwxMSArNTk1LDEzIEBACiAjIENPTkZJR19FRVBST01fOTNDWDYgaXMgbm90IHNldAogIyBDT05GSUdfU0dJX0lPQzQgaXMgbm90IHNldAogIyBDT05GSUdfVElGTV9DT1JFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VOQ0xPU1VSRV9TRVJWSUNFUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9JREU9eQogQ09ORklHX0lERT15CiBDT05GSUdfQkxLX0RFVl9JREU9eQogCiAjCi0jIFBsZWFzZSBzZWUgRG9jdW1lbnRhdGlvbi9pZGUudHh0IGZvciBoZWxwL2luZm8gb24gSURFIGRyaXZlcworIyBQbGVhc2Ugc2VlIERvY3VtZW50YXRpb24vaWRlL2lkZS50eHQgZm9yIGhlbHAvaW5mbyBvbiBJREUgZHJpdmVzCiAjCiAjIENPTkZJR19CTEtfREVWX0lERV9TQVRBIGlzIG5vdCBzZXQKIENPTkZJR19CTEtfREVWX0lERURJU0s9eQpAQCAtNTgzLDYgKzYwOSw3IEBACiAjIENPTkZJR19CTEtfREVWX0lERUNTIGlzIG5vdCBzZXQKICMgQ09ORklHX0JMS19ERVZfREVMS0lOIGlzIG5vdCBzZXQKIENPTkZJR19CTEtfREVWX0lERUNEPXkKK0NPTkZJR19CTEtfREVWX0lERUNEX1ZFUkJPU0VfRVJST1JTPXkKICMgQ09ORklHX0JMS19ERVZfSURFVEFQRSBpcyBub3Qgc2V0CiAjIENPTkZJR19CTEtfREVWX0lERUZMT1BQWSBpcyBub3Qgc2V0CiAjIENPTkZJR19CTEtfREVWX0lERVNDU0kgaXMgbm90IHNldApAQCAtNTk0LDEyICs2MjEsMTIgQEAKICMKIENPTkZJR19JREVfR0VORVJJQz15CiAjIENPTkZJR19CTEtfREVWX1BMQVRGT1JNIGlzIG5vdCBzZXQKK0NPTkZJR19CTEtfREVWX0lERURNQV9TRkY9eQogCiAjCiAjIFBDSSBJREUgY2hpcHNldHMgc3VwcG9ydAogIwogQ09ORklHX0JMS19ERVZfSURFUENJPXkKLUNPTkZJR19JREVQQ0lfU0hBUkVfSVJRPXkKIENPTkZJR19JREVQQ0lfUENJQlVTX09SREVSPXkKICMgQ09ORklHX0JMS19ERVZfT0ZGQk9BUkQgaXMgbm90IHNldAogQ09ORklHX0JMS19ERVZfR0VORVJJQz15CkBAIC02MzQsNyArNjYxLDYgQEAKIENPTkZJR19CTEtfREVWX0lERV9QTUFDPXkKIENPTkZJR19CTEtfREVWX0lERV9QTUFDX0FUQTEwMEZJUlNUPXkKIENPTkZJR19CTEtfREVWX0lERURNQV9QTUFDPXkKLSMgQ09ORklHX0lERV9BUk0gaXMgbm90IHNldAogQ09ORklHX0JMS19ERVZfSURFRE1BPXkKIENPTkZJR19JREVfQVJDSF9PQlNPTEVURV9JTklUPXkKICMgQ09ORklHX0JMS19ERVZfSEQgaXMgbm90IHNldApAQCAtNzAxLDYgKzcyNyw3IEBACiBDT05GSUdfU0NTSV9JQk1WU0NTST15CiAjIENPTkZJR19TQ1NJX0lOSVRJTyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX0lOSUExMDAgaXMgbm90IHNldAorIyBDT05GSUdfU0NTSV9NVlNBUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX1NURVggaXMgbm90IHNldAogQ09ORklHX1NDU0lfU1lNNTNDOFhYXzI9eQogQ09ORklHX1NDU0lfU1lNNTNDOFhYX0RNQV9BRERSRVNTSU5HX01PREU9MApAQCAtNzYwLDYgKzc4Nyw3IEBACiAjIENPTkZJR19QQVRBX01QSUlYIGlzIG5vdCBzZXQKICMgQ09ORklHX1BBVEFfT0xEUElJWCBpcyBub3Qgc2V0CiAjIENPTkZJR19QQVRBX05FVENFTEwgaXMgbm90IHNldAorIyBDT05GSUdfUEFUQV9OSU5KQTMyIGlzIG5vdCBzZXQKICMgQ09ORklHX1BBVEFfTlM4NzQxMCBpcyBub3Qgc2V0CiAjIENPTkZJR19QQVRBX05TODc0MTUgaXMgbm90IHNldAogIyBDT05GSUdfUEFUQV9PUFRJIGlzIG5vdCBzZXQKQEAgLTc3Niw2ICs4MDQsNyBAQAogIyBDT05GSUdfUEFUQV9WSUEgaXMgbm90IHNldAogQ09ORklHX1BBVEFfV0lOQk9ORD15CiBDT05GSUdfUEFUQV9QTEFURk9STT15CisjIENPTkZJR19QQVRBX09GX1BMQVRGT1JNIGlzIG5vdCBzZXQKIENPTkZJR19QQVRBX1NDQz15CiBDT05GSUdfTUQ9eQogQ09ORklHX0JMS19ERVZfTUQ9eQpAQCAtODQ3LDcgKzg3Niw2IEBACiAjIENPTkZJR19FUVVBTElaRVIgaXMgbm90IHNldAogQ09ORklHX1RVTj1tCiAjIENPTkZJR19WRVRIIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lQMTAwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19BUkNORVQgaXMgbm90IHNldAogQ09ORklHX1BIWUxJQj15CiAKQEAgLTg2MywxMSArODkxLDggQEAKICMgQ09ORklHX1NNU0NfUEhZIGlzIG5vdCBzZXQKIENPTkZJR19CUk9BRENPTV9QSFk9bQogIyBDT05GSUdfSUNQTFVTX1BIWSBpcyBub3Qgc2V0Ci1DT05GSUdfRklYRURfUEhZPW0KLUNPTkZJR19GSVhFRF9NSUlfMTBfRkRYPXkKLUNPTkZJR19GSVhFRF9NSUlfMTAwX0ZEWD15Ci0jIENPTkZJR19GSVhFRF9NSUlfMTAwMF9GRFggaXMgbm90IHNldAotQ09ORklHX0ZJWEVEX01JSV9BTU5UPTEKKyMgQ09ORklHX1JFQUxURUtfUEhZIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZJWEVEX1BIWSBpcyBub3Qgc2V0CiAjIENPTkZJR19NRElPX0JJVEJBTkcgaXMgbm90IHNldAogQ09ORklHX05FVF9FVEhFUk5FVD15CiBDT05GSUdfTUlJPXkKQEAgLTg5OSw2ICs5MjQsNyBAQAogIyBDT05GSUdfTkUyS19QQ0kgaXMgbm90IHNldAogIyBDT05GSUdfODEzOUNQIGlzIG5vdCBzZXQKICMgQ09ORklHXzgxMzlUT08gaXMgbm90IHNldAorIyBDT05GSUdfUjYwNDAgaXMgbm90IHNldAogIyBDT05GSUdfU0lTOTAwIGlzIG5vdCBzZXQKICMgQ09ORklHX0VQSUMxMDAgaXMgbm90IHNldAogIyBDT05GSUdfU1VOREFOQ0UgaXMgbm90IHNldApAQCAtOTEyLDYgKzkzOCw5IEBACiAjIENPTkZJR19FMTAwMF9OQVBJIGlzIG5vdCBzZXQKICMgQ09ORklHX0UxMDAwX0RJU0FCTEVfUEFDS0VUX1NQTElUIGlzIG5vdCBzZXQKICMgQ09ORklHX0UxMDAwRSBpcyBub3Qgc2V0CisjIENPTkZJR19FMTAwMEVfRU5BQkxFRCBpcyBub3Qgc2V0CisjIENPTkZJR19JUDEwMDAgaXMgbm90IHNldAorIyBDT05GSUdfSUdCIGlzIG5vdCBzZXQKICMgQ09ORklHX05TODM4MjAgaXMgbm90IHNldAogIyBDT05GSUdfSEFNQUNISSBpcyBub3Qgc2V0CiAjIENPTkZJR19ZRUxMT1dGSU4gaXMgbm90IHNldApAQCAtOTQwLDYgKzk2OSw3IEBACiBDT05GSUdfUEFTRU1JX01BQz15CiAjIENPTkZJR19NTFg0X0NPUkUgaXMgbm90IHNldAogIyBDT05GSUdfVEVIVVRJIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JOWDJYIGlzIG5vdCBzZXQKIENPTkZJR19UUj15CiBDT05GSUdfSUJNT0w9eQogIyBDT05GSUdfM0MzNTkgaXMgbm90IHNldApAQCAtOTc3LDcgKzEwMDcsNiBAQAogIyBDT05GSUdfU0xJUCBpcyBub3Qgc2V0CiBDT05GSUdfU0xIQz1tCiAjIENPTkZJR19ORVRfRkMgaXMgbm90IHNldAotIyBDT05GSUdfU0hBUEVSIGlzIG5vdCBzZXQKIENPTkZJR19ORVRDT05TT0xFPXkKICMgQ09ORklHX05FVENPTlNPTEVfRFlOQU1JQyBpcyBub3Qgc2V0CiBDT05GSUdfTkVUUE9MTD15CkBAIC0xMDU2LDYgKzEwODUsNyBAQAogQ09ORklHX0hXX0NPTlNPTEU9eQogIyBDT05GSUdfVlRfSFdfQ09OU09MRV9CSU5ESU5HIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFUklBTF9OT05TVEFOREFSRCBpcyBub3Qgc2V0CisjIENPTkZJR19OT1pPTUkgaXMgbm90IHNldAogCiAjCiAjIFNlcmlhbCBkcml2ZXJzCkBAIC0xMTAzLDYgKzExMzMsNyBAQAogIyBDT05GSUdfU1lOQ0xJTktfQ1MgaXMgbm90IHNldAogIyBDT05GSUdfQ0FSRE1BTl80MDAwIGlzIG5vdCBzZXQKICMgQ09ORklHX0NBUkRNQU5fNDA0MCBpcyBub3Qgc2V0CisjIENPTkZJR19JUFdJUkVMRVNTIGlzIG5vdCBzZXQKIENPTkZJR19SQVdfRFJJVkVSPXkKIENPTkZJR19NQVhfUkFXX0RFVlM9MjU2CiAjIENPTkZJR19IQU5HQ0hFQ0tfVElNRVIgaXMgbm90IHNldApAQCAtMTE1MSwxMyArMTE4MiwxMiBAQAogIwogIyBNaXNjZWxsYW5lb3VzIEkyQyBDaGlwIHN1cHBvcnQKICMKLSMgQ09ORklHX1NFTlNPUlNfRFMxMzM3IGlzIG5vdCBzZXQKLSMgQ09ORklHX1NFTlNPUlNfRFMxMzc0IGlzIG5vdCBzZXQKICMgQ09ORklHX0RTMTY4MiBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0VFUFJPTSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1BDRjg1NzQgaXMgbm90IHNldAotIyBDT05GSUdfU0VOU09SU19QQ0E5NTM5IGlzIG5vdCBzZXQKKyMgQ09ORklHX1BDRjg1NzUgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19QQ0Y4NTkxIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RQUzY1MDEwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfTUFYNjg3NSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1RTTDI1NTAgaXMgbm90IHNldAogIyBDT05GSUdfSTJDX0RFQlVHX0NPUkUgaXMgbm90IHNldApAQCAtMTE3Myw2ICsxMjAzLDcgQEAKICMgQ09ORklHX1cxIGlzIG5vdCBzZXQKICMgQ09ORklHX1BPV0VSX1NVUFBMWSBpcyBub3Qgc2V0CiAjIENPTkZJR19IV01PTiBpcyBub3Qgc2V0CisjIENPTkZJR19USEVSTUFMIGlzIG5vdCBzZXQKICMgQ09ORklHX1dBVENIRE9HIGlzIG5vdCBzZXQKIAogIwpAQCAtMTMzNyw2ICsxMzY4LDcgQEAKICMgQ09ORklHX1NORF9CVDg3WCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfQ0EwMTA2IGlzIG5vdCBzZXQKICMgQ09ORklHX1NORF9DTUlQQ0kgaXMgbm90IHNldAorIyBDT05GSUdfU05EX09YWUdFTiBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfQ1M0MjgxIGlzIG5vdCBzZXQKICMgQ09ORklHX1NORF9DUzQ2WFggaXMgbm90IHNldAogIyBDT05GSUdfU05EX0NTNTUzMCBpcyBub3Qgc2V0CkBAIC0xMzYyLDYgKzEzOTQsNyBAQAogIyBDT05GSUdfU05EX0hEQV9JTlRFTCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfSERTUCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfSERTUE0gaXMgbm90IHNldAorIyBDT05GSUdfU05EX0hJRklFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfSUNFMTcxMiBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfSUNFMTcyNCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfSU5URUw4WDAgaXMgbm90IHNldApAQCAtMTM3OSw2ICsxNDEyLDcgQEAKICMgQ09ORklHX1NORF9UUklERU5UIGlzIG5vdCBzZXQKICMgQ09ORklHX1NORF9WSUE4MlhYIGlzIG5vdCBzZXQKICMgQ09ORklHX1NORF9WSUE4MlhYX01PREVNIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NORF9WSVJUVU9TTyBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfVlgyMjIgaXMgbm90IHNldAogIyBDT05GSUdfU05EX1lNRlBDSSBpcyBub3Qgc2V0CiAKQEAgLTE0MjYsNiArMTQ2MCwxMCBAQAogIwogCiAjCisjIEFMU0EgU29DIGF1ZGlvIGZvciBGcmVlc2NhbGUgU09DcworIworCisjCiAjIE9wZW4gU291bmQgU3lzdGVtCiAjCiAjIENPTkZJR19TT1VORF9QUklNRSBpcyBub3Qgc2V0CkBAIC0xNDQ3LDYgKzE0ODUsNyBAQAogQ09ORklHX1VTQl9BUkNIX0hBU19FSENJPXkKIENPTkZJR19VU0I9eQogIyBDT05GSUdfVVNCX0RFQlVHIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9BTk5PVU5DRV9ORVdfREVWSUNFUyBpcyBub3Qgc2V0CiAKICMKICMgTWlzY2VsbGFuZW91cyBVU0Igb3B0aW9ucwpAQCAtMTQ2MCwxMCArMTQ5OSwxMCBAQAogIyBVU0IgSG9zdCBDb250cm9sbGVyIERyaXZlcnMKICMKIENPTkZJR19VU0JfRUhDSV9IQ0Q9eQotIyBDT05GSUdfVVNCX0VIQ0lfU1BMSVRfSVNPIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9FSENJX1JPT1RfSFVCX1RUIGlzIG5vdCBzZXQKIENPTkZJR19VU0JfRUhDSV9UVF9ORVdTQ0hFRD15CiBDT05GSUdfVVNCX0VIQ0lfQklHX0VORElBTl9NTUlPPXkKKyMgQ09ORklHX1VTQl9FSENJX0hDRF9QUENfT0YgaXMgbm90IHNldAogIyBDT05GSUdfVVNCX0lTUDExNlhfSENEIGlzIG5vdCBzZXQKIENPTkZJR19VU0JfT0hDSV9IQ0Q9eQogIyBDT05GSUdfVVNCX09IQ0lfSENEX1BQQ19PRiBpcyBub3Qgc2V0CkBAIC0xNTEyLDEwICsxNTUxLDYgQEAKICMKICMgVVNCIHBvcnQgZHJpdmVycwogIwotCi0jCi0jIFVTQiBTZXJpYWwgQ29udmVydGVyIHN1cHBvcnQKLSMKICMgQ09ORklHX1VTQl9TRVJJQUwgaXMgbm90IHNldAogCiAjCkBAIC0xNTQxLDE2ICsxNTc2LDkgQEAKICMgQ09ORklHX1VTQl9UUkFOQ0VWSUJSQVRPUiBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfSU9XQVJSSU9SIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9URVNUIGlzIG5vdCBzZXQKLQotIwotIyBVU0IgRFNMIG1vZGVtIHN1cHBvcnQKLSMKLQotIwotIyBVU0IgR2FkZ2V0IFN1cHBvcnQKLSMKICMgQ09ORklHX1VTQl9HQURHRVQgaXMgbm90IHNldAogIyBDT05GSUdfTU1DIGlzIG5vdCBzZXQKKyMgQ09ORklHX01FTVNUSUNLIGlzIG5vdCBzZXQKICMgQ09ORklHX05FV19MRURTIGlzIG5vdCBzZXQKIENPTkZJR19JTkZJTklCQU5EPW0KICMgQ09ORklHX0lORklOSUJBTkRfVVNFUl9NQUQgaXMgbm90IHNldApAQCAtMTU2Miw2ICsxNTkwLDcgQEAKIENPTkZJR19JTkZJTklCQU5EX0VIQ0E9bQogIyBDT05GSUdfSU5GSU5JQkFORF9BTVNPMTEwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19NTFg0X0lORklOSUJBTkQgaXMgbm90IHNldAorIyBDT05GSUdfSU5GSU5JQkFORF9ORVMgaXMgbm90IHNldAogQ09ORklHX0lORklOSUJBTkRfSVBPSUI9bQogIyBDT05GSUdfSU5GSU5JQkFORF9JUE9JQl9DTSBpcyBub3Qgc2V0CiBDT05GSUdfSU5GSU5JQkFORF9JUE9JQl9ERUJVRz15CkBAIC0xNTc2LDggKzE2MDUsMTMgQEAKICMgQ09ORklHX0VEQUNfREVCVUcgaXMgbm90IHNldAogQ09ORklHX0VEQUNfTU1fRURBQz15CiBDT05GSUdfRURBQ19QQVNFTUk9eQorIyBDT05GSUdfRURBQ19DRUxMIGlzIG5vdCBzZXQKIENPTkZJR19SVENfTElCPXkKIENPTkZJR19SVENfQ0xBU1M9eQorCisjCisjIENvbmZsaWN0aW5nIFJUQyBvcHRpb24gaGFzIGJlZW4gc2VsZWN0ZWQsIGNoZWNrIEdFTl9SVEMgYW5kIFJUQworIwogQ09ORklHX1JUQ19IQ1RPU1lTPXkKIENPTkZJR19SVENfSENUT1NZU19ERVZJQ0U9InJ0YzAiCiAjIENPTkZJR19SVENfREVCVUcgaXMgbm90IHNldApAQCAtMTYwNCw2ICsxNjM4LDcgQEAKICMgQ09ORklHX1JUQ19EUlZfUENGODU2MyBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfRFJWX1BDRjg1ODMgaXMgbm90IHNldAogIyBDT05GSUdfUlRDX0RSVl9NNDFUODAgaXMgbm90IHNldAorIyBDT05GSUdfUlRDX0RSVl9TMzUzOTBBIGlzIG5vdCBzZXQKIAogIwogIyBTUEkgUlRDIGRyaXZlcnMKQEAgLTE2MTMsOSArMTY0OCwxMCBAQAogIyBQbGF0Zm9ybSBSVEMgZHJpdmVycwogIwogIyBDT05GSUdfUlRDX0RSVl9DTU9TIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JUQ19EUlZfRFMxNTExIGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfRFMxNTUzIGlzIG5vdCBzZXQKLSMgQ09ORklHX1JUQ19EUlZfU1RLMTdUQTggaXMgbm90IHNldAogIyBDT05GSUdfUlRDX0RSVl9EUzE3NDIgaXMgbm90IHNldAorIyBDT05GSUdfUlRDX0RSVl9TVEsxN1RBOCBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfRFJWX000OFQ4NiBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfRFJWX000OFQ1OSBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfRFJWX1YzMDIwIGlzIG5vdCBzZXQKQEAgLTE2MjMsNiArMTY1OSw3IEBACiAjCiAjIG9uLUNQVSBSVEMgZHJpdmVycwogIworIyBDT05GSUdfRE1BREVWSUNFUyBpcyBub3Qgc2V0CiAKICMKICMgVXNlcnNwYWNlIEkvTwpAQCAtMTY2NSwxMiArMTcwMiwxMCBAQAogIyBDT05GSUdfWEZTX1JUIGlzIG5vdCBzZXQKICMgQ09ORklHX0dGUzJfRlMgaXMgbm90IHNldAogIyBDT05GSUdfT0NGUzJfRlMgaXMgbm90IHNldAotIyBDT05GSUdfTUlOSVhfRlMgaXMgbm90IHNldAotIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAorQ09ORklHX0ROT1RJRlk9eQogQ09ORklHX0lOT1RJRlk9eQogQ09ORklHX0lOT1RJRllfVVNFUj15CiAjIENPTkZJR19RVU9UQSBpcyBub3Qgc2V0Ci1DT05GSUdfRE5PVElGWT15CiAjIENPTkZJR19BVVRPRlNfRlMgaXMgbm90IHNldAogQ09ORklHX0FVVE9GUzRfRlM9bQogIyBDT05GSUdfRlVTRV9GUyBpcyBub3Qgc2V0CkBAIC0xNzE5LDggKzE3NTQsMTAgQEAKICMgQ09ORklHX0VGU19GUyBpcyBub3Qgc2V0CiBDT05GSUdfQ1JBTUZTPXkKICMgQ09ORklHX1ZYRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfTUlOSVhfRlMgaXMgbm90IHNldAogIyBDT05GSUdfSFBGU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19RTlg0RlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfU1lTVl9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19VRlNfRlMgaXMgbm90IHNldAogQ09ORklHX05FVFdPUktfRklMRVNZU1RFTVM9eQpAQCAtMTgyMSw3ICsxODU4LDYgQEAKIENPTkZJR19OTFNfS09JOF9VPW0KIENPTkZJR19OTFNfVVRGOD1tCiAjIENPTkZJR19ETE0gaXMgbm90IHNldAotIyBDT05GSUdfVUNDX1NMT1cgaXMgbm90IHNldAogCiAjCiAjIExpYnJhcnkgcm91dGluZXMKQEAgLTE4MzUsNiArMTg3MSw4IEBACiBDT05GSUdfTElCQ1JDMzJDPW0KIENPTkZJR19aTElCX0lORkxBVEU9eQogQ09ORklHX1pMSUJfREVGTEFURT1tCitDT05GSUdfTFpPX0NPTVBSRVNTPW0KK0NPTkZJR19MWk9fREVDT01QUkVTUz1tCiBDT05GSUdfVEVYVFNFQVJDSD15CiBDT05GSUdfVEVYVFNFQVJDSF9LTVA9bQogQ09ORklHX1RFWFRTRUFSQ0hfQk09bQpAQCAtMTg0MywxMSArMTg4MSw2IEBACiBDT05GSUdfSEFTX0lPTUVNPXkKIENPTkZJR19IQVNfSU9QT1JUPXkKIENPTkZJR19IQVNfRE1BPXkKLUNPTkZJR19JTlNUUlVNRU5UQVRJT049eQotQ09ORklHX1BST0ZJTElORz15Ci1DT05GSUdfT1BST0ZJTEU9eQotIyBDT05GSUdfS1BST0JFUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19NQVJLRVJTIGlzIG5vdCBzZXQKIAogIwogIyBLZXJuZWwgaGFja2luZwpAQCAtMTg2Niw2ICsxODk5LDcgQEAKICMgQ09ORklHX1NDSEVEU1RBVFMgaXMgbm90IHNldAogIyBDT05GSUdfVElNRVJfU1RBVFMgaXMgbm90IHNldAogIyBDT05GSUdfU0xVQl9ERUJVR19PTiBpcyBub3Qgc2V0CisjIENPTkZJR19TTFVCX1NUQVRTIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1JUX01VVEVYRVMgaXMgbm90IHNldAogIyBDT05GSUdfUlRfTVVURVhfVEVTVEVSIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NQSU5MT0NLIGlzIG5vdCBzZXQKQEAgLTE4NzgsOSArMTkxMiw5IEBACiAjIENPTkZJR19ERUJVR19WTSBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19MSVNUIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NHIGlzIG5vdCBzZXQKLUNPTkZJR19GT1JDRURfSU5MSU5JTkc9eQogIyBDT05GSUdfQk9PVF9QUklOVEtfREVMQVkgaXMgbm90IHNldAogIyBDT05GSUdfUkNVX1RPUlRVUkVfVEVTVCBpcyBub3Qgc2V0CisjIENPTkZJR19CQUNLVFJBQ0VfU0VMRl9URVNUIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZBVUxUX0lOSkVDVElPTiBpcyBub3Qgc2V0CiAjIENPTkZJR19TQU1QTEVTIGlzIG5vdCBzZXQKIENPTkZJR19ERUJVR19TVEFDS09WRVJGTE9XPXkKQEAgLTE5MDgsNyArMTk0Miw5IEBACiBDT05GSUdfQVNZTkNfWE9SPXkKIENPTkZJR19DUllQVE89eQogQ09ORklHX0NSWVBUT19BTEdBUEk9eQorQ09ORklHX0NSWVBUT19BRUFEPW0KIENPTkZJR19DUllQVE9fQkxLQ0lQSEVSPXkKK0NPTkZJR19DUllQVE9fU0VRSVY9bQogQ09ORklHX0NSWVBUT19IQVNIPXkKIENPTkZJR19DUllQVE9fTUFOQUdFUj15CiBDT05GSUdfQ1JZUFRPX0hNQUM9eQpAQCAtMTkyMSwxMiArMTk1NywxNSBAQAogQ09ORklHX0NSWVBUT19TSEE1MTI9bQogQ09ORklHX0NSWVBUT19XUDUxMj1tCiBDT05GSUdfQ1JZUFRPX1RHUjE5Mj1tCi0jIENPTkZJR19DUllQVE9fR0YxMjhNVUwgaXMgbm90IHNldAorQ09ORklHX0NSWVBUT19HRjEyOE1VTD1tCiBDT05GSUdfQ1JZUFRPX0VDQj1tCiBDT05GSUdfQ1JZUFRPX0NCQz15CiBDT05GSUdfQ1JZUFRPX1BDQkM9bQogIyBDT05GSUdfQ1JZUFRPX0xSVyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fWFRTIGlzIG5vdCBzZXQKK0NPTkZJR19DUllQVE9fQ1RSPW0KK0NPTkZJR19DUllQVE9fR0NNPW0KK0NPTkZJR19DUllQVE9fQ0NNPW0KICMgQ09ORklHX0NSWVBUT19DUllQVEQgaXMgbm90IHNldAogQ09ORklHX0NSWVBUT19ERVM9eQogIyBDT05GSUdfQ1JZUFRPX0ZDUllQVCBpcyBub3Qgc2V0CkBAIC0xOTQyLDExICsxOTgxLDEzIEBACiBDT05GSUdfQ1JZUFRPX0tIQVpBRD1tCiBDT05GSUdfQ1JZUFRPX0FOVUJJUz1tCiAjIENPTkZJR19DUllQVE9fU0VFRCBpcyBub3Qgc2V0CitDT05GSUdfQ1JZUFRPX1NBTFNBMjA9bQogQ09ORklHX0NSWVBUT19ERUZMQVRFPW0KIENPTkZJR19DUllQVE9fTUlDSEFFTF9NSUM9bQogQ09ORklHX0NSWVBUT19DUkMzMkM9bQogIyBDT05GSUdfQ1JZUFRPX0NBTUVMTElBIGlzIG5vdCBzZXQKIENPTkZJR19DUllQVE9fVEVTVD1tCi0jIENPTkZJR19DUllQVE9fQVVUSEVOQyBpcyBub3Qgc2V0CitDT05GSUdfQ1JZUFRPX0FVVEhFTkM9bQorQ09ORklHX0NSWVBUT19MWk89bQogIyBDT05GSUdfQ1JZUFRPX0hXIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19DTE9DSyBpcyBub3Qgc2V0CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvY29uZmlncy9wcTJmYWRzX2RlZmNvbmZpZyBiL2FyY2gvcG93ZXJwYy9jb25maWdzL3BxMmZhZHNfZGVmY29uZmlnCmluZGV4IGEzYmZiYjYuLjEzODNlYjYgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jb25maWdzL3BxMmZhZHNfZGVmY29uZmlnCisrKyBiL2FyY2gvcG93ZXJwYy9jb25maWdzL3BxMmZhZHNfZGVmY29uZmlnCkBAIC0xLDcgKzEsNyBAQAogIwogIyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBtYWtlIGNvbmZpZzogZG9uJ3QgZWRpdAotIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjI0LXJjNQotIyBUaHUgRGVjIDEzIDIyOjM5OjE4IDIwMDcKKyMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4yNS1yYzYKKyMgTW9uIE1hciAyNCAwODo0ODozNiAyMDA4CiAjCiAjIENPTkZJR19QUEM2NCBpcyBub3Qgc2V0CiAKQEAgLTI4LDYgKzI4LDcgQEAKIENPTkZJR19HRU5FUklDX1RJTUVfVlNZU0NBTEw9eQogQ09ORklHX0dFTkVSSUNfQ0xPQ0tFVkVOVFM9eQogQ09ORklHX0dFTkVSSUNfSEFSRElSUVM9eQorIyBDT05GSUdfSEFWRV9TRVRVUF9QRVJfQ1BVX0FSRUEgaXMgbm90IHNldAogQ09ORklHX0lSUV9QRVJfQ1BVPXkKIENPTkZJR19SV1NFTV9YQ0hHQUREX0FMR09SSVRITT15CiBDT05GSUdfQVJDSF9IQVNfSUxPRzJfVTMyPXkKQEAgLTY5LDkgKzcwLDE0IEBACiBDT05GSUdfSUtDT05GSUdfUFJPQz15CiBDT05GSUdfTE9HX0JVRl9TSElGVD0xNAogIyBDT05GSUdfQ0dST1VQUyBpcyBub3Qgc2V0CitDT05GSUdfR1JPVVBfU0NIRUQ9eQogIyBDT05GSUdfRkFJUl9HUk9VUF9TQ0hFRCBpcyBub3Qgc2V0Ci0jIENPTkZJR19TWVNGU19ERVBSRUNBVEVEIGlzIG5vdCBzZXQKK0NPTkZJR19VU0VSX1NDSEVEPXkKKyMgQ09ORklHX0NHUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CitDT05GSUdfU1lTRlNfREVQUkVDQVRFRD15CitDT05GSUdfU1lTRlNfREVQUkVDQVRFRF9WMj15CiAjIENPTkZJR19SRUxBWSBpcyBub3Qgc2V0CisjIENPTkZJR19OQU1FU1BBQ0VTIGlzIG5vdCBzZXQKIENPTkZJR19CTEtfREVWX0lOSVRSRD15CiBDT05GSUdfSU5JVFJBTUZTX1NPVVJDRT0iIgogQ09ORklHX1NZU0NUTD15CkBAIC04NCwxMSArOTAsMTMgQEAKIENPTkZJR19QUklOVEs9eQogQ09ORklHX0JVRz15CiBDT05GSUdfRUxGX0NPUkU9eQorQ09ORklHX0NPTVBBVF9CUks9eQogQ09ORklHX0JBU0VfRlVMTD15CiBDT05GSUdfRlVURVg9eQogQ09ORklHX0FOT05fSU5PREVTPXkKIENPTkZJR19FUE9MTD15CiBDT05GSUdfU0lHTkFMRkQ9eQorQ09ORklHX1RJTUVSRkQ9eQogQ09ORklHX0VWRU5URkQ9eQogQ09ORklHX1NITUVNPXkKIENPTkZJR19WTV9FVkVOVF9DT1VOVEVSUz15CkBAIC05Niw2ICsxMDQsMTMgQEAKICMgQ09ORklHX1NMQUIgaXMgbm90IHNldAogQ09ORklHX1NMVUI9eQogIyBDT05GSUdfU0xPQiBpcyBub3Qgc2V0CisjIENPTkZJR19QUk9GSUxJTkcgaXMgbm90IHNldAorIyBDT05GSUdfTUFSS0VSUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9PUFJPRklMRT15CitDT05GSUdfSEFWRV9LUFJPQkVTPXkKK0NPTkZJR19IQVZFX0tSRVRQUk9CRVM9eQorQ09ORklHX1BST0NfUEFHRV9NT05JVE9SPXkKK0NPTkZJR19TTEFCSU5GTz15CiBDT05GSUdfUlRfTVVURVhFUz15CiAjIENPTkZJR19USU5ZX1NITUVNIGlzIG5vdCBzZXQKIENPTkZJR19CQVNFX1NNQUxMPTAKQEAgLTExNyw2ICsxMzIsNyBAQAogIyBDT05GSUdfREVGQVVMVF9DRlEgaXMgbm90IHNldAogIyBDT05GSUdfREVGQVVMVF9OT09QIGlzIG5vdCBzZXQKIENPTkZJR19ERUZBVUxUX0lPU0NIRUQ9ImFudGljaXBhdG9yeSIKK0NPTkZJR19DTEFTU0lDX1JDVT15CiAKICMKICMgUGxhdGZvcm0gc3VwcG9ydApAQCAtMTI1LDE1ICsxNDEsMTcgQEAKIENPTkZJR19QUENfODJ4eD15CiAjIENPTkZJR19QUENfODN4eCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfODZ4eCBpcyBub3Qgc2V0Ci0jIENPTkZJR19QUENfTVBDNTJ4eCBpcyBub3Qgc2V0Ci0jIENPTkZJR19QUENfTVBDNTIwMCBpcyBub3Qgc2V0CisjIENPTkZJR19QUENfTVBDNTEyeCBpcyBub3Qgc2V0CisjIENPTkZJR19QUENfTVBDNTEyMSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfQ0VMTCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfQ0VMTF9OQVRJVkUgaXMgbm90IHNldAogIyBDT05GSUdfTVBDODI3Ml9BRFMgaXMgbm90IHNldAogQ09ORklHX1BRMkZBRFM9eQorIyBDT05GSUdfRVA4MjQ4RSBpcyBub3Qgc2V0CiBDT05GSUdfUFEyQURTPXkKIENPTkZJR184MjYwPXkKIENPTkZJR19QUTJfQURTX1BDSV9QSUM9eQorIyBDT05GSUdfSVBJQyBpcyBub3Qgc2V0CiAjIENPTkZJR19NUElDIGlzIG5vdCBzZXQKICMgQ09ORklHX01QSUNfV0VJUkQgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0k4MjU5IGlzIG5vdCBzZXQKQEAgLTE2MiwxMiArMTgwLDE2IEBACiAjIENPTkZJR19IWl8zMDAgaXMgbm90IHNldAogIyBDT05GSUdfSFpfMTAwMCBpcyBub3Qgc2V0CiBDT05GSUdfSFo9MjUwCisjIENPTkZJR19TQ0hFRF9IUlRJQ0sgaXMgbm90IHNldAogQ09ORklHX1BSRUVNUFRfTk9ORT15CiAjIENPTkZJR19QUkVFTVBUX1ZPTFVOVEFSWSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUkVFTVBUIGlzIG5vdCBzZXQKIENPTkZJR19CSU5GTVRfRUxGPXkKIENPTkZJR19CSU5GTVRfTUlTQz15CisjIENPTkZJR19JT01NVV9IRUxQRVIgaXMgbm90IHNldAogQ09ORklHX0FSQ0hfRU5BQkxFX01FTU9SWV9IT1RQTFVHPXkKK0NPTkZJR19BUkNIX0hBU19XQUxLX01FTU9SWT15CitDT05GSUdfQVJDSF9FTkFCTEVfTUVNT1JZX0hPVFJFTU9WRT15CiBDT05GSUdfQVJDSF9GTEFUTUVNX0VOQUJMRT15CiBDT05GSUdfQVJDSF9QT1BVTEFURVNfTk9ERV9NQVA9eQogQ09ORklHX0ZMQVRNRU09eQpAQCAtMTgyLDExICsyMDQsNyBAQAogQ09ORklHX1BST0NfREVWSUNFVFJFRT15CiAjIENPTkZJR19DTURMSU5FX0JPT0wgaXMgbm90IHNldAogIyBDT05GSUdfUE0gaXMgbm90IHNldAotQ09ORklHX1NVU1BFTkRfVVBfUE9TU0lCTEU9eQotQ09ORklHX0hJQkVSTkFUSU9OX1VQX1BPU1NJQkxFPXkKIENPTkZJR19TRUNDT01QPXkKLUNPTkZJR19XQU5UX0RFVklDRV9UUkVFPXkKLUNPTkZJR19ERVZJQ0VfVFJFRT0icHEyZmFkcy5kdHMiCiBDT05GSUdfSVNBX0RNQV9BUEk9eQogCiAjCkBAIC0yMDYsNiArMjI0LDcgQEAKIENPTkZJR19QQ0lfTEVHQUNZPXkKICMgQ09ORklHX1BDSV9ERUJVRyBpcyBub3Qgc2V0CiAjIENPTkZJR19QQ0NBUkQgaXMgbm90IHNldAorIyBDT05GSUdfSE9UUExVR19QQ0kgaXMgbm90IHNldAogCiAjCiAjIEFkdmFuY2VkIHNldHVwCkBAIC0yNzgsMTIgKzI5NywxMyBAQAogIyBDT05GSUdfTkVUV09SS19TRUNNQVJLIGlzIG5vdCBzZXQKIENPTkZJR19ORVRGSUxURVI9eQogIyBDT05GSUdfTkVURklMVEVSX0RFQlVHIGlzIG5vdCBzZXQKK0NPTkZJR19ORVRGSUxURVJfQURWQU5DRUQ9eQogCiAjCiAjIENvcmUgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24KICMKLSMgQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LIGlzIG5vdCBzZXQKLSMgQ09ORklHX05GX0NPTk5UUkFDS19FTkFCTEVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LX1FVRVVFIGlzIG5vdCBzZXQKKyMgQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LX0xPRyBpcyBub3Qgc2V0CiAjIENPTkZJR19ORl9DT05OVFJBQ0sgaXMgbm90IHNldAogIyBDT05GSUdfTkVURklMVEVSX1hUQUJMRVMgaXMgbm90IHNldAogCkBAIC0yOTMsNiArMzEzLDEzIEBACiAjIENPTkZJR19JUF9ORl9RVUVVRSBpcyBub3Qgc2V0CiAjIENPTkZJR19JUF9ORl9JUFRBQkxFUyBpcyBub3Qgc2V0CiAjIENPTkZJR19JUF9ORl9BUlBUQUJMRVMgaXMgbm90IHNldAorCisjCisjIElQdjY6IE5ldGZpbHRlciBDb25maWd1cmF0aW9uCisjCisjIENPTkZJR19JUDZfTkZfUVVFVUUgaXMgbm90IHNldAorIyBDT05GSUdfSVA2X05GX0lQVEFCTEVTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FUTSBpcyBub3Qgc2V0CiAjIENPTkZJR19CUklER0UgaXMgbm90IHNldAogIyBDT05GSUdfVkxBTl84MDIxUSBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUNORVQgaXMgbm90IHNldApAQCAtMzA2LDYgKzMzMyw3IEBACiAjCiAjIENPTkZJR19ORVRfUEtUR0VOIGlzIG5vdCBzZXQKICMgQ09ORklHX0hBTVJBRElPIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NBTiBpcyBub3Qgc2V0CiAjIENPTkZJR19JUkRBIGlzIG5vdCBzZXQKICMgQ09ORklHX0JUIGlzIG5vdCBzZXQKIApAQCAtMzE0LDYgKzM0Miw3IEBACiAjCiAjIENPTkZJR19DRkc4MDIxMSBpcyBub3Qgc2V0CiAjIENPTkZJR19XSVJFTEVTU19FWFQgaXMgbm90IHNldAorIyBDT05GSUdfTUFDODAyMTEgaXMgbm90IHNldAogIyBDT05GSUdfSUVFRTgwMjExIGlzIG5vdCBzZXQKICMgQ09ORklHX1JGS0lMTCBpcyBub3Qgc2V0CiAKQEAgLTQzMSwxNyArNDYwLDIwIEBACiAjIENPTkZJR19QSEFOVE9NIGlzIG5vdCBzZXQKICMgQ09ORklHX0VFUFJPTV85M0NYNiBpcyBub3Qgc2V0CiAjIENPTkZJR19TR0lfSU9DNCBpcyBub3Qgc2V0CisjIENPTkZJR19FTkNMT1NVUkVfU0VSVklDRVMgaXMgbm90IHNldAorQ09ORklHX0hBVkVfSURFPXkKIENPTkZJR19JREU9eQogQ09ORklHX0lERV9NQVhfSFdJRlM9NAogQ09ORklHX0JMS19ERVZfSURFPXkKIAogIwotIyBQbGVhc2Ugc2VlIERvY3VtZW50YXRpb24vaWRlLnR4dCBmb3IgaGVscC9pbmZvIG9uIElERSBkcml2ZXMKKyMgUGxlYXNlIHNlZSBEb2N1bWVudGF0aW9uL2lkZS9pZGUudHh0IGZvciBoZWxwL2luZm8gb24gSURFIGRyaXZlcwogIwogIyBDT05GSUdfQkxLX0RFVl9JREVfU0FUQSBpcyBub3Qgc2V0CiBDT05GSUdfQkxLX0RFVl9JREVESVNLPXkKICMgQ09ORklHX0lERURJU0tfTVVMVElfTU9ERSBpcyBub3Qgc2V0CiAjIENPTkZJR19CTEtfREVWX0lERUNEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JMS19ERVZfSURFVEFQRSBpcyBub3Qgc2V0CiAjIENPTkZJR19CTEtfREVWX0lERUZMT1BQWSBpcyBub3Qgc2V0CiAjIENPTkZJR19JREVfVEFTS19JT0NUTCBpcyBub3Qgc2V0CiBDT05GSUdfSURFX1BST0NfRlM9eQpAQCAtNDU1LDcgKzQ4Nyw2IEBACiAjCiAjIFBDSSBJREUgY2hpcHNldHMgc3VwcG9ydAogIwotIyBDT05GSUdfSURFUENJX1BDSUJVU19PUkRFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19CTEtfREVWX0dFTkVSSUMgaXMgbm90IHNldAogIyBDT05GSUdfQkxLX0RFVl9BRUM2MlhYIGlzIG5vdCBzZXQKICMgQ09ORklHX0JMS19ERVZfQUxJMTVYMyBpcyBub3Qgc2V0CkBAIC00ODEsNyArNTEyLDYgQEAKICMgQ09ORklHX0JMS19ERVZfVFJNMjkwIGlzIG5vdCBzZXQKICMgQ09ORklHX0JMS19ERVZfVklBODJDWFhYIGlzIG5vdCBzZXQKICMgQ09ORklHX0JMS19ERVZfVEM4NkMwMDEgaXMgbm90IHNldAotIyBDT05GSUdfSURFX0FSTSBpcyBub3Qgc2V0CiAjIENPTkZJR19CTEtfREVWX0lERURNQSBpcyBub3Qgc2V0CiBDT05GSUdfSURFX0FSQ0hfT0JTT0xFVEVfSU5JVD15CiAjIENPTkZJR19CTEtfREVWX0hEIGlzIG5vdCBzZXQKQEAgLTUyOSw2ICs1NTksNyBAQAogIyBDT05GSUdfU01TQ19QSFkgaXMgbm90IHNldAogIyBDT05GSUdfQlJPQURDT01fUEhZIGlzIG5vdCBzZXQKICMgQ09ORklHX0lDUExVU19QSFkgaXMgbm90IHNldAorIyBDT05GSUdfUkVBTFRFS19QSFkgaXMgbm90IHNldAogIyBDT05GSUdfRklYRURfUEhZIGlzIG5vdCBzZXQKIENPTkZJR19NRElPX0JJVEJBTkc9eQogQ09ORklHX05FVF9FVEhFUk5FVD15CkBAIC01NTQsNiArNTg1LDggQEAKICMgQ09ORklHX0RMMksgaXMgbm90IHNldAogIyBDT05GSUdfRTEwMDAgaXMgbm90IHNldAogIyBDT05GSUdfRTEwMDBFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0UxMDAwRV9FTkFCTEVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lHQiBpcyBub3Qgc2V0CiAjIENPTkZJR19OUzgzODIwIGlzIG5vdCBzZXQKICMgQ09ORklHX0hBTUFDSEkgaXMgbm90IHNldAogIyBDT05GSUdfUjgxNjkgaXMgbm90IHNldApAQCAtNTY0LDYgKzU5Nyw3IEBACiAjIENPTkZJR19WSUFfVkVMT0NJVFkgaXMgbm90IHNldAogIyBDT05GSUdfVElHT04zIGlzIG5vdCBzZXQKICMgQ09ORklHX0JOWDIgaXMgbm90IHNldAorIyBDT05GSUdfR0lBTkZBUiBpcyBub3Qgc2V0CiAjIENPTkZJR19RTEEzWFhYIGlzIG5vdCBzZXQKIENPTkZJR19ORVRERVZfMTAwMDA9eQogIyBDT05GSUdfQ0hFTFNJT19UMSBpcyBub3Qgc2V0CkBAIC01NzYsNiArNjEwLDcgQEAKICMgQ09ORklHX05JVSBpcyBub3Qgc2V0CiAjIENPTkZJR19NTFg0X0NPUkUgaXMgbm90IHNldAogIyBDT05GSUdfVEVIVVRJIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JOWDJYIGlzIG5vdCBzZXQKICMgQ09ORklHX1RSIGlzIG5vdCBzZXQKIAogIwpAQCAtNzAwLDYgKzczNSw3IEBACiAjIENPTkZJR19XMSBpcyBub3Qgc2V0CiAjIENPTkZJR19QT1dFUl9TVVBQTFkgaXMgbm90IHNldAogIyBDT05GSUdfSFdNT04gaXMgbm90IHNldAorIyBDT05GSUdfVEhFUk1BTCBpcyBub3Qgc2V0CiAjIENPTkZJR19XQVRDSERPRyBpcyBub3Qgc2V0CiAKICMKQEAgLTc0OSwxMCArNzg1LDYgQEAKICMKICMgTk9URTogVVNCX1NUT1JBR0UgZW5hYmxlcyBTQ1NJLCBhbmQgJ1NDU0kgZGlzayBzdXBwb3J0JwogIwotCi0jCi0jIFVTQiBHYWRnZXQgU3VwcG9ydAotIwogQ09ORklHX1VTQl9HQURHRVQ9eQogIyBDT05GSUdfVVNCX0dBREdFVF9ERUJVR19GSUxFUyBpcyBub3Qgc2V0CiBDT05GSUdfVVNCX0dBREdFVF9TRUxFQ1RFRD15CkBAIC03NzYsMTAgKzgwOCwxMyBAQAogIyBDT05GSUdfVVNCX0ZJTEVfU1RPUkFHRSBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfR19TRVJJQUwgaXMgbm90IHNldAogIyBDT05GSUdfVVNCX01JRElfR0FER0VUIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9HX1BSSU5URVIgaXMgbm90IHNldAogIyBDT05GSUdfTU1DIGlzIG5vdCBzZXQKKyMgQ09ORklHX01FTVNUSUNLIGlzIG5vdCBzZXQKICMgQ09ORklHX05FV19MRURTIGlzIG5vdCBzZXQKICMgQ09ORklHX0lORklOSUJBTkQgaXMgbm90IHNldAogIyBDT05GSUdfUlRDX0NMQVNTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RNQURFVklDRVMgaXMgbm90IHNldAogCiAjCiAjIFVzZXJzcGFjZSBJL08KQEAgLTgwMywxMiArODM4LDEwIEBACiBDT05GSUdfRlNfUE9TSVhfQUNMPXkKICMgQ09ORklHX1hGU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19PQ0ZTMl9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CitDT05GSUdfRE5PVElGWT15CiBDT05GSUdfSU5PVElGWT15CiBDT05GSUdfSU5PVElGWV9VU0VSPXkKICMgQ09ORklHX1FVT1RBIGlzIG5vdCBzZXQKLUNPTkZJR19ETk9USUZZPXkKICMgQ09ORklHX0FVVE9GU19GUyBpcyBub3Qgc2V0CiBDT05GSUdfQVVUT0ZTNF9GUz15CiAjIENPTkZJR19GVVNFX0ZTIGlzIG5vdCBzZXQKQEAgLTgzNiw2ICs4NjksNyBAQAogQ09ORklHX1RNUEZTPXkKICMgQ09ORklHX1RNUEZTX1BPU0lYX0FDTCBpcyBub3Qgc2V0CiAjIENPTkZJR19IVUdFVExCX1BBR0UgaXMgbm90IHNldAorIyBDT05GSUdfQ09ORklHRlNfRlMgaXMgbm90IHNldAogCiAjCiAjIE1pc2NlbGxhbmVvdXMgZmlsZXN5c3RlbXMKQEAgLTg0NCw4ICs4NzgsMTAgQEAKICMgQ09ORklHX0pGRlMyX0ZTIGlzIG5vdCBzZXQKIENPTkZJR19DUkFNRlM9eQogIyBDT05GSUdfVlhGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19IUEZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1FOWDRGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TWVNWX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1VGU19GUyBpcyBub3Qgc2V0CiBDT05GSUdfTkVUV09SS19GSUxFU1lTVEVNUz15CkBAIC05MjYsNyArOTYyLDYgQEAKICMgQ09ORklHX05MU19LT0k4X1IgaXMgbm90IHNldAogIyBDT05GSUdfTkxTX0tPSThfVSBpcyBub3Qgc2V0CiBDT05GSUdfTkxTX1VURjg9eQotIyBDT05GSUdfVUNDX1NMT1cgaXMgbm90IHNldAogCiAjCiAjIExpYnJhcnkgcm91dGluZXMKQEAgLTk0NCw3ICs5NzksNiBAQAogQ09ORklHX0hBU19JT01FTT15CiBDT05GSUdfSEFTX0lPUE9SVD15CiBDT05GSUdfSEFTX0RNQT15Ci0jIENPTkZJR19JTlNUUlVNRU5UQVRJT04gaXMgbm90IHNldAogCiAjCiAjIEtlcm5lbCBoYWNraW5nCkBAIC05NjMsNiArOTk3LDcgQEAKICMgQ09ORklHX1NDSEVEU1RBVFMgaXMgbm90IHNldAogIyBDT05GSUdfVElNRVJfU1RBVFMgaXMgbm90IHNldAogIyBDT05GSUdfU0xVQl9ERUJVR19PTiBpcyBub3Qgc2V0CisjIENPTkZJR19TTFVCX1NUQVRTIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1JUX01VVEVYRVMgaXMgbm90IHNldAogIyBDT05GSUdfUlRfTVVURVhfVEVTVEVSIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NQSU5MT0NLIGlzIG5vdCBzZXQKQEAgLTk3NSw4ICsxMDEwLDggQEAKICMgQ09ORklHX0RFQlVHX1ZNIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX0xJU1QgaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfU0cgaXMgbm90IHNldAotQ09ORklHX0ZPUkNFRF9JTkxJTklORz15CiAjIENPTkZJR19CT09UX1BSSU5US19ERUxBWSBpcyBub3Qgc2V0CisjIENPTkZJR19CQUNLVFJBQ0VfU0VMRl9URVNUIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZBVUxUX0lOSkVDVElPTiBpcyBub3Qgc2V0CiAjIENPTkZJR19TQU1QTEVTIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NUQUNLT1ZFUkZMT1cgaXMgbm90IHNldApAQCAtOTk1LDYgKzEwMzAsNyBAQAogQ09ORklHX0NSWVBUTz15CiBDT05GSUdfQ1JZUFRPX0FMR0FQST15CiBDT05GSUdfQ1JZUFRPX0JMS0NJUEhFUj15CisjIENPTkZJR19DUllQVE9fU0VRSVYgaXMgbm90IHNldAogQ09ORklHX0NSWVBUT19NQU5BR0VSPXkKICMgQ09ORklHX0NSWVBUT19ITUFDIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19OVUxMIGlzIG5vdCBzZXQKQEAgLTEwMDgsNiArMTA0NCw5IEBACiBDT05GSUdfQ1JZUFRPX0VDQj15CiBDT05GSUdfQ1JZUFRPX0NCQz15CiBDT05GSUdfQ1JZUFRPX1BDQkM9eQorIyBDT05GSUdfQ1JZUFRPX0NUUiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fR0NNIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DQ00gaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0NSWVBURCBpcyBub3Qgc2V0CiBDT05GSUdfQ1JZUFRPX0RFUz15CiAjIENPTkZJR19DUllQVE9fRkNSWVBUIGlzIG5vdCBzZXQKQEAgLTEwMjcsNiArMTA2Niw4IEBACiAjIENPTkZJR19DUllQVE9fQ1JDMzJDIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19DQU1FTExJQSBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fQVVUSEVOQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fTFpPIGlzIG5vdCBzZXQKIENPTkZJR19DUllQVE9fSFc9eQorIyBDT05GSUdfQ1JZUFRPX0RFVl9ISUZOXzc5NVggaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0NMT0NLIGlzIG5vdCBzZXQKIENPTkZJR19QUENfTElCX1JIRUFQPXkKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9jb25maWdzL3BycG1jMjgwMF9kZWZjb25maWcgYi9hcmNoL3Bvd2VycGMvY29uZmlncy9wcnBtYzI4MDBfZGVmY29uZmlnCmluZGV4IDQ2YjI1NzkuLmY5MTIxNjggMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jb25maWdzL3BycG1jMjgwMF9kZWZjb25maWcKKysrIGIvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHJwbWMyODAwX2RlZmNvbmZpZwpAQCAtMSw3ICsxLDcgQEAKICMKICMgQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgbWFrZSBjb25maWc6IGRvbid0IGVkaXQKLSMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4yNC1yYzQKLSMgVGh1IERlYyAgNiAxNjo0OToxMSAyMDA3CisjIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMjUtcmM3CisjIE1vbiBNYXIgMzEgMTE6Mzc6MTUgMjAwOAogIwogIyBDT05GSUdfUFBDNjQgaXMgbm90IHNldAogCkBAIC0zMSw2ICszMSw3IEBACiBDT05GSUdfR0VORVJJQ19USU1FX1ZTWVNDQUxMPXkKIENPTkZJR19HRU5FUklDX0NMT0NLRVZFTlRTPXkKIENPTkZJR19HRU5FUklDX0hBUkRJUlFTPXkKKyMgQ09ORklHX0hBVkVfU0VUVVBfUEVSX0NQVV9BUkVBIGlzIG5vdCBzZXQKIENPTkZJR19JUlFfUEVSX0NQVT15CiBDT05GSUdfUldTRU1fWENIR0FERF9BTEdPUklUSE09eQogQ09ORklHX0FSQ0hfSEFTX0lMT0cyX1UzMj15CkBAIC02OCwxNSArNjksMjMgQEAKIENPTkZJR19QT1NJWF9NUVVFVUU9eQogIyBDT05GSUdfQlNEX1BST0NFU1NfQUNDVCBpcyBub3Qgc2V0CiAjIENPTkZJR19UQVNLU1RBVFMgaXMgbm90IHNldAotIyBDT05GSUdfVVNFUl9OUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19QSURfTlMgaXMgbm90IHNldAogIyBDT05GSUdfQVVESVQgaXMgbm90IHNldAogIyBDT05GSUdfSUtDT05GSUcgaXMgbm90IHNldAogQ09ORklHX0xPR19CVUZfU0hJRlQ9MTQKICMgQ09ORklHX0NHUk9VUFMgaXMgbm90IHNldAorQ09ORklHX0dST1VQX1NDSEVEPXkKICMgQ09ORklHX0ZBSVJfR1JPVVBfU0NIRUQgaXMgbm90IHNldAotIyBDT05GSUdfU1lTRlNfREVQUkVDQVRFRCBpcyBub3Qgc2V0CisjIENPTkZJR19SVF9HUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CitDT05GSUdfVVNFUl9TQ0hFRD15CisjIENPTkZJR19DR1JPVVBfU0NIRUQgaXMgbm90IHNldAorQ09ORklHX1NZU0ZTX0RFUFJFQ0FURUQ9eQorQ09ORklHX1NZU0ZTX0RFUFJFQ0FURURfVjI9eQogIyBDT05GSUdfUkVMQVkgaXMgbm90IHNldAorQ09ORklHX05BTUVTUEFDRVM9eQorIyBDT05GSUdfVVRTX05TIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lQQ19OUyBpcyBub3Qgc2V0CisjIENPTkZJR19VU0VSX05TIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BJRF9OUyBpcyBub3Qgc2V0CiBDT05GSUdfQkxLX0RFVl9JTklUUkQ9eQogQ09ORklHX0lOSVRSQU1GU19TT1VSQ0U9IiIKICMgQ09ORklHX0NDX09QVElNSVpFX0ZPUl9TSVpFIGlzIG5vdCBzZXQKQEAgLTg5LDExICs5OCwxMyBAQAogQ09ORklHX1BSSU5USz15CiBDT05GSUdfQlVHPXkKIENPTkZJR19FTEZfQ09SRT15CitDT05GSUdfQ09NUEFUX0JSSz15CiBDT05GSUdfQkFTRV9GVUxMPXkKIENPTkZJR19GVVRFWD15CiBDT05GSUdfQU5PTl9JTk9ERVM9eQogQ09ORklHX0VQT0xMPXkKIENPTkZJR19TSUdOQUxGRD15CitDT05GSUdfVElNRVJGRD15CiBDT05GSUdfRVZFTlRGRD15CiBDT05GSUdfU0hNRU09eQogQ09ORklHX1ZNX0VWRU5UX0NPVU5URVJTPXkKQEAgLTEwMSw2ICsxMTIsMTMgQEAKICMgQ09ORklHX1NMQUIgaXMgbm90IHNldAogQ09ORklHX1NMVUI9eQogIyBDT05GSUdfU0xPQiBpcyBub3Qgc2V0CisjIENPTkZJR19QUk9GSUxJTkcgaXMgbm90IHNldAorIyBDT05GSUdfTUFSS0VSUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9PUFJPRklMRT15CitDT05GSUdfSEFWRV9LUFJPQkVTPXkKK0NPTkZJR19IQVZFX0tSRVRQUk9CRVM9eQorQ09ORklHX1BST0NfUEFHRV9NT05JVE9SPXkKK0NPTkZJR19TTEFCSU5GTz15CiBDT05GSUdfUlRfTVVURVhFUz15CiAjIENPTkZJR19USU5ZX1NITUVNIGlzIG5vdCBzZXQKIENPTkZJR19CQVNFX1NNQUxMPTAKQEAgLTEyMyw2ICsxNDEsNyBAQAogIyBDT05GSUdfREVGQVVMVF9DRlEgaXMgbm90IHNldAogIyBDT05GSUdfREVGQVVMVF9OT09QIGlzIG5vdCBzZXQKIENPTkZJR19ERUZBVUxUX0lPU0NIRUQ9ImFudGljaXBhdG9yeSIKK0NPTkZJR19DTEFTU0lDX1JDVT15CiAKICMKICMgUGxhdGZvcm0gc3VwcG9ydApAQCAtMTMzLDIwICsxNTIsMjIgQEAKICMgQ09ORklHX1BQQ184Nnh4IGlzIG5vdCBzZXQKIENPTkZJR19DTEFTU0lDMzI9eQogIyBDT05GSUdfUFBDX0NIUlAgaXMgbm90IHNldAorIyBDT05GSUdfUFBDX01QQzUxMnggaXMgbm90IHNldAorIyBDT05GSUdfUFBDX01QQzUxMjEgaXMgbm90IHNldAorIyBDT05GSUdfTVBDNTEyMV9BRFMgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX01QQzUyeHggaXMgbm90IHNldAotIyBDT05GSUdfUFBDX01QQzUyMDAgaXMgbm90IHNldAotIyBDT05GSUdfUFBDX0VGSUtBIGlzIG5vdCBzZXQKLSMgQ09ORklHX1BQQ19MSVRFNTIwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfUE1BQyBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfQ0VMTCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfQ0VMTF9OQVRJVkUgaXMgbm90IHNldAogIyBDT05GSUdfUFEyQURTIGlzIG5vdCBzZXQKIENPTkZJR19FTUJFRERFRDZ4eD15CiAjIENPTkZJR19MSU5LU1RBVElPTiBpcyBub3Qgc2V0CisjIENPTkZJR19TVE9SQ0VOVEVSIGlzIG5vdCBzZXQKICMgQ09ORklHX01QQzc0NDhIUEMyIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19IT0xMWSBpcyBub3Qgc2V0CiBDT05GSUdfUFBDX1BSUE1DMjgwMD15CiBDT05GSUdfTVY2NFg2MD15CisjIENPTkZJR19JUElDIGlzIG5vdCBzZXQKICMgQ09ORklHX01QSUMgaXMgbm90IHNldAogIyBDT05GSUdfTVBJQ19XRUlSRCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfSTgyNTkgaXMgbm90IHNldApAQCAtMTU4LDcgKzE3OSw2IEBACiAjIENPTkZJR19HRU5FUklDX0lPTUFQIGlzIG5vdCBzZXQKICMgQ09ORklHX0NQVV9GUkVRIGlzIG5vdCBzZXQKICMgQ09ORklHX1RBVSBpcyBub3Qgc2V0Ci0jIENPTkZJR19DUE0yIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZTTF9VTEkxNTc1IGlzIG5vdCBzZXQKIAogIwpAQCAtMTc0LDEyICsxOTQsMTYgQEAKICMgQ09ORklHX0haXzMwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19IWl8xMDAwIGlzIG5vdCBzZXQKIENPTkZJR19IWj0yNTAKKyMgQ09ORklHX1NDSEVEX0hSVElDSyBpcyBub3Qgc2V0CiBDT05GSUdfUFJFRU1QVF9OT05FPXkKICMgQ09ORklHX1BSRUVNUFRfVk9MVU5UQVJZIGlzIG5vdCBzZXQKICMgQ09ORklHX1BSRUVNUFQgaXMgbm90IHNldAogQ09ORklHX0JJTkZNVF9FTEY9eQogQ09ORklHX0JJTkZNVF9NSVNDPXkKKyMgQ09ORklHX0lPTU1VX0hFTFBFUiBpcyBub3Qgc2V0CiBDT05GSUdfQVJDSF9FTkFCTEVfTUVNT1JZX0hPVFBMVUc9eQorQ09ORklHX0FSQ0hfSEFTX1dBTEtfTUVNT1JZPXkKK0NPTkZJR19BUkNIX0VOQUJMRV9NRU1PUllfSE9UUkVNT1ZFPXkKICMgQ09ORklHX0tFWEVDIGlzIG5vdCBzZXQKIENPTkZJR19BUkNIX0ZMQVRNRU1fRU5BQkxFPXkKIENPTkZJR19BUkNIX1BPUFVMQVRFU19OT0RFX01BUD15CkBAIC0xOTksMTEgKzIyMyw3IEBACiBDT05GSUdfUFJPQ19ERVZJQ0VUUkVFPXkKICMgQ09ORklHX0NNRExJTkVfQk9PTCBpcyBub3Qgc2V0CiAjIENPTkZJR19QTSBpcyBub3Qgc2V0Ci1DT05GSUdfU1VTUEVORF9VUF9QT1NTSUJMRT15Ci1DT05GSUdfSElCRVJOQVRJT05fVVBfUE9TU0lCTEU9eQogIyBDT05GSUdfU0VDQ09NUCBpcyBub3Qgc2V0Ci1DT05GSUdfV0FOVF9ERVZJQ0VfVFJFRT15Ci1DT05GSUdfREVWSUNFX1RSRUU9InBycG1jMjgwMC5kdHMiCiBDT05GSUdfSVNBX0RNQV9BUEk9eQogCiAjCkBAIC0yNTMsNiArMjczLDcgQEAKIENPTkZJR19YRlJNX1VTRVI9eQogIyBDT05GSUdfWEZSTV9TVUJfUE9MSUNZIGlzIG5vdCBzZXQKICMgQ09ORklHX1hGUk1fTUlHUkFURSBpcyBub3Qgc2V0CisjIENPTkZJR19YRlJNX1NUQVRJU1RJQ1MgaXMgbm90IHNldAogIyBDT05GSUdfTkVUX0tFWSBpcyBub3Qgc2V0CiBDT05GSUdfSU5FVD15CiBDT05GSUdfSVBfTVVMVElDQVNUPXkKQEAgLTMwOCw2ICszMjksNyBAQAogIwogIyBDT05GSUdfTkVUX1BLVEdFTiBpcyBub3Qgc2V0CiAjIENPTkZJR19IQU1SQURJTyBpcyBub3Qgc2V0CisjIENPTkZJR19DQU4gaXMgbm90IHNldAogIyBDT05GSUdfSVJEQSBpcyBub3Qgc2V0CiAjIENPTkZJR19CVCBpcyBub3Qgc2V0CiAjIENPTkZJR19BRl9SWFJQQyBpcyBub3Qgc2V0CkBAIC0zNDEsNiArMzYzLDcgQEAKIENPTkZJR19NVERfUEFSVElUSU9OUz15CiAjIENPTkZJR19NVERfUkVEQk9PVF9QQVJUUyBpcyBub3Qgc2V0CiAjIENPTkZJR19NVERfQ01ETElORV9QQVJUUyBpcyBub3Qgc2V0CisjIENPTkZJR19NVERfT0ZfUEFSVFMgaXMgbm90IHNldAogCiAjCiAjIFVzZXIgTW9kdWxlcyBBbmQgVHJhbnNsYXRpb24gTGF5ZXJzCkBAIC00MjgsNyArNDUxLDcgQEAKIENPTkZJR19CTEtfREVWX1JBTT15CiBDT05GSUdfQkxLX0RFVl9SQU1fQ09VTlQ9MTYKIENPTkZJR19CTEtfREVWX1JBTV9TSVpFPTEzMTA3MgotQ09ORklHX0JMS19ERVZfUkFNX0JMT0NLU0laRT0xMDI0CisjIENPTkZJR19CTEtfREVWX1hJUCBpcyBub3Qgc2V0CiAjIENPTkZJR19DRFJPTV9QS1RDRFZEIGlzIG5vdCBzZXQKICMgQ09ORklHX0FUQV9PVkVSX0VUSCBpcyBub3Qgc2V0CiBDT05GSUdfTUlTQ19ERVZJQ0VTPXkKQEAgLTQzNiwxMSArNDU5LDEzIEBACiAjIENPTkZJR19FRVBST01fOTNDWDYgaXMgbm90IHNldAogIyBDT05GSUdfU0dJX0lPQzQgaXMgbm90IHNldAogIyBDT05GSUdfVElGTV9DT1JFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VOQ0xPU1VSRV9TRVJWSUNFUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9JREU9eQogQ09ORklHX0lERT15CiBDT05GSUdfQkxLX0RFVl9JREU9eQogCiAjCi0jIFBsZWFzZSBzZWUgRG9jdW1lbnRhdGlvbi9pZGUudHh0IGZvciBoZWxwL2luZm8gb24gSURFIGRyaXZlcworIyBQbGVhc2Ugc2VlIERvY3VtZW50YXRpb24vaWRlL2lkZS50eHQgZm9yIGhlbHAvaW5mbyBvbiBJREUgZHJpdmVzCiAjCiAjIENPTkZJR19CTEtfREVWX0lERV9TQVRBIGlzIG5vdCBzZXQKIENPTkZJR19CTEtfREVWX0lERURJU0s9eQpAQCAtNDU3LDEyICs0ODIsMTIgQEAKICMKIENPTkZJR19JREVfR0VORVJJQz15CiAjIENPTkZJR19CTEtfREVWX1BMQVRGT1JNIGlzIG5vdCBzZXQKK0NPTkZJR19CTEtfREVWX0lERURNQV9TRkY9eQogCiAjCiAjIFBDSSBJREUgY2hpcHNldHMgc3VwcG9ydAogIwogQ09ORklHX0JMS19ERVZfSURFUENJPXkKLSMgQ09ORklHX0lERVBDSV9TSEFSRV9JUlEgaXMgbm90IHNldAogQ09ORklHX0lERVBDSV9QQ0lCVVNfT1JERVI9eQogIyBDT05GSUdfQkxLX0RFVl9PRkZCT0FSRCBpcyBub3Qgc2V0CiBDT05GSUdfQkxLX0RFVl9HRU5FUklDPXkKQEAgLTQ5Myw3ICs1MTgsNiBAQAogIyBDT05GSUdfQkxLX0RFVl9UUk0yOTAgaXMgbm90IHNldAogIyBDT05GSUdfQkxLX0RFVl9WSUE4MkNYWFggaXMgbm90IHNldAogIyBDT05GSUdfQkxLX0RFVl9UQzg2QzAwMSBpcyBub3Qgc2V0Ci0jIENPTkZJR19JREVfQVJNIGlzIG5vdCBzZXQKIENPTkZJR19CTEtfREVWX0lERURNQT15CiBDT05GSUdfSURFX0FSQ0hfT0JTT0xFVEVfSU5JVD15CiAjIENPTkZJR19CTEtfREVWX0hEIGlzIG5vdCBzZXQKQEAgLTU1OSw2ICs1ODMsNyBAQAogIyBDT05GSUdfU0NTSV9JUFMgaXMgbm90IHNldAogIyBDT05GSUdfU0NTSV9JTklUSU8gaXMgbm90IHNldAogIyBDT05GSUdfU0NTSV9JTklBMTAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDU0lfTVZTQVMgaXMgbm90IHNldAogIyBDT05GSUdfU0NTSV9TVEVYIGlzIG5vdCBzZXQKICMgQ09ORklHX1NDU0lfU1lNNTNDOFhYXzIgaXMgbm90IHNldAogIyBDT05GSUdfU0NTSV9JUFIgaXMgbm90IHNldApAQCAtNjEyLDYgKzYzNyw3IEBACiAjIENPTkZJR19QQVRBX01QSUlYIGlzIG5vdCBzZXQKICMgQ09ORklHX1BBVEFfT0xEUElJWCBpcyBub3Qgc2V0CiAjIENPTkZJR19QQVRBX05FVENFTEwgaXMgbm90IHNldAorIyBDT05GSUdfUEFUQV9OSU5KQTMyIGlzIG5vdCBzZXQKICMgQ09ORklHX1BBVEFfTlM4NzQxMCBpcyBub3Qgc2V0CiAjIENPTkZJR19QQVRBX05TODc0MTUgaXMgbm90IHNldAogIyBDT05GSUdfUEFUQV9PUFRJIGlzIG5vdCBzZXQKQEAgLTYyNiw2ICs2NTIsNyBAQAogIyBDT05GSUdfUEFUQV9TSVMgaXMgbm90IHNldAogIyBDT05GSUdfUEFUQV9WSUEgaXMgbm90IHNldAogIyBDT05GSUdfUEFUQV9XSU5CT05EIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BBVEFfUExBVEZPUk0gaXMgbm90IHNldAogIyBDT05GSUdfTUQgaXMgbm90IHNldAogIyBDT05GSUdfRlVTSU9OIGlzIG5vdCBzZXQKIApAQCAtNjQ2LDcgKzY3Myw2IEBACiAjIENPTkZJR19FUVVBTElaRVIgaXMgbm90IHNldAogIyBDT05GSUdfVFVOIGlzIG5vdCBzZXQKICMgQ09ORklHX1ZFVEggaXMgbm90IHNldAotIyBDT05GSUdfSVAxMDAwIGlzIG5vdCBzZXQKICMgQ09ORklHX0FSQ05FVCBpcyBub3Qgc2V0CiBDT05GSUdfUEhZTElCPXkKIApAQCAtNjYyLDYgKzY4OCw3IEBACiAjIENPTkZJR19TTVNDX1BIWSBpcyBub3Qgc2V0CiAjIENPTkZJR19CUk9BRENPTV9QSFkgaXMgbm90IHNldAogIyBDT05GSUdfSUNQTFVTX1BIWSBpcyBub3Qgc2V0CisjIENPTkZJR19SRUFMVEVLX1BIWSBpcyBub3Qgc2V0CiAjIENPTkZJR19GSVhFRF9QSFkgaXMgbm90IHNldAogIyBDT05GSUdfTURJT19CSVRCQU5HIGlzIG5vdCBzZXQKIENPTkZJR19ORVRfRVRIRVJORVQ9eQpAQCAtNjkzLDYgKzcyMCw3IEBACiAjIENPTkZJR184MTM5VE9PX1RVTkVfVFdJU1RFUiBpcyBub3Qgc2V0CiAjIENPTkZJR184MTM5VE9PXzgxMjkgaXMgbm90IHNldAogIyBDT05GSUdfODEzOV9PTERfUlhfUkVTRVQgaXMgbm90IHNldAorIyBDT05GSUdfUjYwNDAgaXMgbm90IHNldAogIyBDT05GSUdfU0lTOTAwIGlzIG5vdCBzZXQKICMgQ09ORklHX0VQSUMxMDAgaXMgbm90IHNldAogIyBDT05GSUdfU1VOREFOQ0UgaXMgbm90IHNldApAQCAtNzA2LDYgKzczNCw5IEBACiAjIENPTkZJR19FMTAwMF9OQVBJIGlzIG5vdCBzZXQKICMgQ09ORklHX0UxMDAwX0RJU0FCTEVfUEFDS0VUX1NQTElUIGlzIG5vdCBzZXQKICMgQ09ORklHX0UxMDAwRSBpcyBub3Qgc2V0CisjIENPTkZJR19FMTAwMEVfRU5BQkxFRCBpcyBub3Qgc2V0CisjIENPTkZJR19JUDEwMDAgaXMgbm90IHNldAorIyBDT05GSUdfSUdCIGlzIG5vdCBzZXQKICMgQ09ORklHX05TODM4MjAgaXMgbm90IHNldAogIyBDT05GSUdfSEFNQUNISSBpcyBub3Qgc2V0CiAjIENPTkZJR19ZRUxMT1dGSU4gaXMgbm90IHNldApAQCAtNzMxLDYgKzc2Miw3IEBACiAjIENPTkZJR19OSVUgaXMgbm90IHNldAogIyBDT05GSUdfTUxYNF9DT1JFIGlzIG5vdCBzZXQKICMgQ09ORklHX1RFSFVUSSBpcyBub3Qgc2V0CisjIENPTkZJR19CTlgyWCBpcyBub3Qgc2V0CiAjIENPTkZJR19UUiBpcyBub3Qgc2V0CiAKICMKQEAgLTc1Myw3ICs3ODUsNiBAQAogIyBDT05GSUdfUFBQIGlzIG5vdCBzZXQKICMgQ09ORklHX1NMSVAgaXMgbm90IHNldAogIyBDT05GSUdfTkVUX0ZDIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NIQVBFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRDT05TT0xFIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVFBPTEwgaXMgbm90IHNldAogIyBDT05GSUdfTkVUX1BPTExfQ09OVFJPTExFUiBpcyBub3Qgc2V0CkBAIC04MDIsNiArODMzLDcgQEAKIENPTkZJR19IV19DT05TT0xFPXkKICMgQ09ORklHX1ZUX0hXX0NPTlNPTEVfQklORElORyBpcyBub3Qgc2V0CiAjIENPTkZJR19TRVJJQUxfTk9OU1RBTkRBUkQgaXMgbm90IHNldAorIyBDT05GSUdfTk9aT01JIGlzIG5vdCBzZXQKIAogIwogIyBTZXJpYWwgZHJpdmVycwpAQCAtODIzLDggKzg1NSw3IEBACiAjIENPTkZJR19JUE1JX0hBTkRMRVIgaXMgbm90IHNldAogIyBDT05GSUdfSFdfUkFORE9NIGlzIG5vdCBzZXQKICMgQ09ORklHX05WUkFNIGlzIG5vdCBzZXQKLUNPTkZJR19HRU5fUlRDPXkKLSMgQ09ORklHX0dFTl9SVENfWCBpcyBub3Qgc2V0CisjIENPTkZJR19HRU5fUlRDIGlzIG5vdCBzZXQKICMgQ09ORklHX1IzOTY0IGlzIG5vdCBzZXQKICMgQ09ORklHX0FQUExJQ09NIGlzIG5vdCBzZXQKICMgQ09ORklHX1JBV19EUklWRVIgaXMgbm90IHNldApAQCAtODcyLDE0ICs5MDMsMTIgQEAKICMKICMgTWlzY2VsbGFuZW91cyBJMkMgQ2hpcCBzdXBwb3J0CiAjCi0jIENPTkZJR19TRU5TT1JTX0RTMTMzNyBpcyBub3Qgc2V0Ci0jIENPTkZJR19TRU5TT1JTX0RTMTM3NCBpcyBub3Qgc2V0CiAjIENPTkZJR19EUzE2ODIgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19FRVBST00gaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19QQ0Y4NTc0IGlzIG5vdCBzZXQKLSMgQ09ORklHX1NFTlNPUlNfUENBOTUzOSBpcyBub3Qgc2V0CisjIENPTkZJR19QQ0Y4NTc1IGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfUENGODU5MSBpcyBub3Qgc2V0Ci0jIENPTkZJR19TRU5TT1JTX000MVQwMCBpcyBub3Qgc2V0CisjIENPTkZJR19UUFM2NTAxMCBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX01BWDY4NzUgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19UU0wyNTUwIGlzIG5vdCBzZXQKICMgQ09ORklHX0kyQ19ERUJVR19DT1JFIGlzIG5vdCBzZXQKQEAgLTkwNCw2ICs5MzMsNyBAQAogIyBDT05GSUdfU0VOU09SU19BRE0xMDMxIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfQURNOTI0MCBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0FEVDc0NzAgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19BRFQ3NDczIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfQVRYUDEgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19EUzE2MjEgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19JNUtfQU1CIGlzIG5vdCBzZXQKQEAgLTkzMyw2ICs5NjMsNyBAQAogIyBDT05GSUdfU0VOU09SU19TTVNDNDdNMSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1NNU0M0N00xOTIgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19TTVNDNDdCMzk3IGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNPUlNfQURTNzgyOCBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1RITUM1MCBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1ZJQTY4NkEgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19WVDEyMTEgaXMgbm90IHNldApAQCAtOTQyLDkgKzk3MywxMSBAQAogIyBDT05GSUdfU0VOU09SU19XODM3OTJEIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVzgzNzkzIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVzgzTDc4NVRTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNPUlNfVzgzTDc4Nk5HIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVzgzNjI3SEYgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19XODM2MjdFSEYgaXMgbm90IHNldAogIyBDT05GSUdfSFdNT05fREVCVUdfQ0hJUCBpcyBub3Qgc2V0CisjIENPTkZJR19USEVSTUFMIGlzIG5vdCBzZXQKICMgQ09ORklHX1dBVENIRE9HIGlzIG5vdCBzZXQKIAogIwpAQCAtMTAwOSw2ICsxMDQyLDcgQEAKIENPTkZJR19VU0JfQVJDSF9IQVNfRUhDST15CiBDT05GSUdfVVNCPXkKICMgQ09ORklHX1VTQl9ERUJVRyBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfQU5OT1VOQ0VfTkVXX0RFVklDRVMgaXMgbm90IHNldAogCiAjCiAjIE1pc2NlbGxhbmVvdXMgVVNCIG9wdGlvbnMKQEAgLTEwMjIsOSArMTA1Niw5IEBACiAjIFVTQiBIb3N0IENvbnRyb2xsZXIgRHJpdmVycwogIwogQ09ORklHX1VTQl9FSENJX0hDRD15Ci0jIENPTkZJR19VU0JfRUhDSV9TUExJVF9JU08gaXMgbm90IHNldAogIyBDT05GSUdfVVNCX0VIQ0lfUk9PVF9IVUJfVFQgaXMgbm90IHNldAogIyBDT05GSUdfVVNCX0VIQ0lfVFRfTkVXU0NIRUQgaXMgbm90IHNldAorQ09ORklHX1VTQl9FSENJX0hDRF9QUENfT0Y9eQogIyBDT05GSUdfVVNCX0lTUDExNlhfSENEIGlzIG5vdCBzZXQKIENPTkZJR19VU0JfT0hDSV9IQ0Q9eQogIyBDT05GSUdfVVNCX09IQ0lfSENEX1BQQ19PRiBpcyBub3Qgc2V0CkBAIC0xMDYxLDEwICsxMDk1LDYgQEAKICMKICMgVVNCIHBvcnQgZHJpdmVycwogIwotCi0jCi0jIFVTQiBTZXJpYWwgQ29udmVydGVyIHN1cHBvcnQKLSMKICMgQ09ORklHX1VTQl9TRVJJQUwgaXMgbm90IHNldAogCiAjCkBAIC0xMDkwLDE2ICsxMTIwLDkgQEAKICMgQ09ORklHX1VTQl9UUkFOQ0VWSUJSQVRPUiBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfSU9XQVJSSU9SIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9URVNUIGlzIG5vdCBzZXQKLQotIwotIyBVU0IgRFNMIG1vZGVtIHN1cHBvcnQKLSMKLQotIwotIyBVU0IgR2FkZ2V0IFN1cHBvcnQKLSMKICMgQ09ORklHX1VTQl9HQURHRVQgaXMgbm90IHNldAogIyBDT05GSUdfTU1DIGlzIG5vdCBzZXQKKyMgQ09ORklHX01FTVNUSUNLIGlzIG5vdCBzZXQKICMgQ09ORklHX05FV19MRURTIGlzIG5vdCBzZXQKICMgQ09ORklHX0lORklOSUJBTkQgaXMgbm90IHNldAogIyBDT05GSUdfRURBQyBpcyBub3Qgc2V0CkBAIC0xMTMxLDYgKzExNTQsNyBAQAogIyBDT05GSUdfUlRDX0RSVl9QQ0Y4NTYzIGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfUENGODU4MyBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfRFJWX000MVQ4MCBpcyBub3Qgc2V0CisjIENPTkZJR19SVENfRFJWX1MzNTM5MEEgaXMgbm90IHNldAogCiAjCiAjIFNQSSBSVEMgZHJpdmVycwpAQCAtMTE0MCw5ICsxMTY0LDEwIEBACiAjIFBsYXRmb3JtIFJUQyBkcml2ZXJzCiAjCiAjIENPTkZJR19SVENfRFJWX0NNT1MgaXMgbm90IHNldAorIyBDT05GSUdfUlRDX0RSVl9EUzE1MTEgaXMgbm90IHNldAogIyBDT05GSUdfUlRDX0RSVl9EUzE1NTMgaXMgbm90IHNldAotIyBDT05GSUdfUlRDX0RSVl9TVEsxN1RBOCBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfRFJWX0RTMTc0MiBpcyBub3Qgc2V0CisjIENPTkZJR19SVENfRFJWX1NUSzE3VEE4IGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfTTQ4VDg2IGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfTTQ4VDU5IGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfVjMwMjAgaXMgbm90IHNldApAQCAtMTE1MCw2ICsxMTc1LDcgQEAKICMKICMgb24tQ1BVIFJUQyBkcml2ZXJzCiAjCisjIENPTkZJR19ETUFERVZJQ0VTIGlzIG5vdCBzZXQKIAogIwogIyBVc2Vyc3BhY2UgSS9PCkBAIC0xMTc1LDEyICsxMjAxLDEwIEBACiAjIENPTkZJR19YRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfR0ZTMl9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19PQ0ZTMl9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CitDT05GSUdfRE5PVElGWT15CiBDT05GSUdfSU5PVElGWT15CiBDT05GSUdfSU5PVElGWV9VU0VSPXkKICMgQ09ORklHX1FVT1RBIGlzIG5vdCBzZXQKLUNPTkZJR19ETk9USUZZPXkKICMgQ09ORklHX0FVVE9GU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19BVVRPRlM0X0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZVU0VfRlMgaXMgbm90IHNldApAQCAtMTIyMyw4ICsxMjQ3LDEwIEBACiAjIENPTkZJR19KRkZTMl9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUkFNRlMgaXMgbm90IHNldAogIyBDT05GSUdfVlhGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19IUEZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1FOWDRGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TWVNWX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1VGU19GUyBpcyBub3Qgc2V0CiBDT05GSUdfTkVUV09SS19GSUxFU1lTVEVNUz15CkBAIC0xMjY5LDcgKzEyOTUsNiBAQAogIyBDT05GSUdfU1lTVjY4X1BBUlRJVElPTiBpcyBub3Qgc2V0CiAjIENPTkZJR19OTFMgaXMgbm90IHNldAogIyBDT05GSUdfRExNIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VDQ19TTE9XIGlzIG5vdCBzZXQKIAogIwogIyBMaWJyYXJ5IHJvdXRpbmVzCkBAIC0xMjg1LDcgKzEzMTAsNiBAQAogQ09ORklHX0hBU19JT01FTT15CiBDT05GSUdfSEFTX0lPUE9SVD15CiBDT05GSUdfSEFTX0RNQT15Ci0jIENPTkZJR19JTlNUUlVNRU5UQVRJT04gaXMgbm90IHNldAogCiAjCiAjIEtlcm5lbCBoYWNraW5nCkBAIC0xMjk5LDYgKzEzMjMsNyBAQAogIyBDT05GSUdfSEVBREVSU19DSEVDSyBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19LRVJORUwgaXMgbm90IHNldAogIyBDT05GSUdfU0xVQl9ERUJVR19PTiBpcyBub3Qgc2V0CisjIENPTkZJR19TTFVCX1NUQVRTIGlzIG5vdCBzZXQKIENPTkZJR19ERUJVR19CVUdWRVJCT1NFPXkKICMgQ09ORklHX1NBTVBMRVMgaXMgbm90IHNldAogIyBDT05GSUdfQk9PVFhfVEVYVCBpcyBub3Qgc2V0CkBAIC0xMzEwLDUgKzEzMzUsNDkgQEAKICMgQ09ORklHX0tFWVMgaXMgbm90IHNldAogIyBDT05GSUdfU0VDVVJJVFkgaXMgbm90IHNldAogIyBDT05GSUdfU0VDVVJJVFlfRklMRV9DQVBBQklMSVRJRVMgaXMgbm90IHNldAotIyBDT05GSUdfQ1JZUFRPIGlzIG5vdCBzZXQKK0NPTkZJR19DUllQVE89eQorIyBDT05GSUdfQ1JZUFRPX1NFUUlWIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19NQU5BR0VSIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19ITUFDIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19YQ0JDIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19OVUxMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19NRDQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX01ENSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0hBMSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0hBMjU2IGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19TSEE1MTIgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1dQNTEyIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19UR1IxOTIgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0dGMTI4TVVMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19FQ0IgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NCQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fUENCQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fTFJXIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19YVFMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NUUiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fR0NNIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DQ00gaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NSWVBURCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fREVTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19GQ1JZUFQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0JMT1dGSVNIIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19UV09GSVNIIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19TRVJQRU5UIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19BRVMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NBU1Q1IGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DQVNUNiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fVEVBIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19BUkM0IGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19LSEFaQUQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0FOVUJJUyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0VFRCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0FMU0EyMCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fREVGTEFURSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fTUlDSEFFTF9NSUMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NSQzMyQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ0FNRUxMSUEgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0FVVEhFTkMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0xaTyBpcyBub3Qgc2V0CitDT05GSUdfQ1JZUFRPX0hXPXkKKyMgQ09ORklHX0NSWVBUT19ERVZfSElGTl83OTVYIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19DTE9DSyBpcyBub3Qgc2V0CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvY29uZmlncy9wczNfZGVmY29uZmlnIGIvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHMzX2RlZmNvbmZpZwppbmRleCA3OTk0OTU1Yy4uN2E2NGM1NiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHMzX2RlZmNvbmZpZworKysgYi9hcmNoL3Bvd2VycGMvY29uZmlncy9wczNfZGVmY29uZmlnCkBAIC0xLDcgKzEsNyBAQAogIwogIyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBtYWtlIGNvbmZpZzogZG9uJ3QgZWRpdAotIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjI0LXJjOAotIyBXZWQgSmFuIDE2IDE0OjMxOjIxIDIwMDgKKyMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4yNS1yYzYKKyMgVGh1IE1hciAyMCAxMTowNzowNCAyMDA4CiAjCiBDT05GSUdfUFBDNjQ9eQogCkBAIC0yOCw2ICsyOCw3IEBACiBDT05GSUdfR0VORVJJQ19USU1FX1ZTWVNDQUxMPXkKIENPTkZJR19HRU5FUklDX0NMT0NLRVZFTlRTPXkKIENPTkZJR19HRU5FUklDX0hBUkRJUlFTPXkKK0NPTkZJR19IQVZFX1NFVFVQX1BFUl9DUFVfQVJFQT15CiBDT05GSUdfSVJRX1BFUl9DUFU9eQogQ09ORklHX1JXU0VNX1hDSEdBRERfQUxHT1JJVEhNPXkKIENPTkZJR19BUkNIX0hBU19JTE9HMl9VMzI9eQpAQCAtNTEsNyArNTIsNiBAQAogIyBDT05GSUdfREVGQVVMVF9VSU1BR0UgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0RDUl9OQVRJVkUgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0RDUl9NTUlPIGlzIG5vdCBzZXQKLSMgQ09ORklHX1BQQ19PRl9QTEFURk9STV9QQ0kgaXMgbm90IHNldAogQ09ORklHX0RFRkNPTkZJR19MSVNUPSIvbGliL21vZHVsZXMvJFVOQU1FX1JFTEVBU0UvLmNvbmZpZyIKIAogIwpAQCAtNjgsMTcgKzY4LDIxIEBACiBDT05GSUdfUE9TSVhfTVFVRVVFPXkKICMgQ09ORklHX0JTRF9QUk9DRVNTX0FDQ1QgaXMgbm90IHNldAogIyBDT05GSUdfVEFTS1NUQVRTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VTRVJfTlMgaXMgbm90IHNldAotIyBDT05GSUdfUElEX05TIGlzIG5vdCBzZXQKICMgQ09ORklHX0FVRElUIGlzIG5vdCBzZXQKICMgQ09ORklHX0lLQ09ORklHIGlzIG5vdCBzZXQKIENPTkZJR19MT0dfQlVGX1NISUZUPTE3CiAjIENPTkZJR19DR1JPVVBTIGlzIG5vdCBzZXQKLUNPTkZJR19GQUlSX0dST1VQX1NDSEVEPXkKLUNPTkZJR19GQUlSX1VTRVJfU0NIRUQ9eQotIyBDT05GSUdfRkFJUl9DR1JPVVBfU0NIRUQgaXMgbm90IHNldAorIyBDT05GSUdfR1JPVVBfU0NIRUQgaXMgbm90IHNldAorIyBDT05GSUdfVVNFUl9TQ0hFRCBpcyBub3Qgc2V0CisjIENPTkZJR19DR1JPVVBfU0NIRUQgaXMgbm90IHNldAogQ09ORklHX1NZU0ZTX0RFUFJFQ0FURUQ9eQorQ09ORklHX1NZU0ZTX0RFUFJFQ0FURURfVjI9eQogIyBDT05GSUdfUkVMQVkgaXMgbm90IHNldAorQ09ORklHX05BTUVTUEFDRVM9eQorIyBDT05GSUdfVVRTX05TIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lQQ19OUyBpcyBub3Qgc2V0CisjIENPTkZJR19VU0VSX05TIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BJRF9OUyBpcyBub3Qgc2V0CiBDT05GSUdfQkxLX0RFVl9JTklUUkQ9eQogQ09ORklHX0lOSVRSQU1GU19TT1VSQ0U9IiIKIENPTkZJR19DQ19PUFRJTUlaRV9GT1JfU0laRT15CkBAIC05MiwxNyArOTYsMjcgQEAKIENPTkZJR19QUklOVEs9eQogQ09ORklHX0JVRz15CiBDT05GSUdfRUxGX0NPUkU9eQorIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0CiBDT05GSUdfQkFTRV9GVUxMPXkKIENPTkZJR19GVVRFWD15CiBDT05GSUdfQU5PTl9JTk9ERVM9eQogQ09ORklHX0VQT0xMPXkKIENPTkZJR19TSUdOQUxGRD15CitDT05GSUdfVElNRVJGRD15CiBDT05GSUdfRVZFTlRGRD15CiBDT05GSUdfU0hNRU09eQogQ09ORklHX1ZNX0VWRU5UX0NPVU5URVJTPXkKIENPTkZJR19TTEFCPXkKICMgQ09ORklHX1NMVUIgaXMgbm90IHNldAogIyBDT05GSUdfU0xPQiBpcyBub3Qgc2V0CitDT05GSUdfUFJPRklMSU5HPXkKKyMgQ09ORklHX01BUktFUlMgaXMgbm90IHNldAorQ09ORklHX09QUk9GSUxFPW0KK0NPTkZJR19IQVZFX09QUk9GSUxFPXkKKyMgQ09ORklHX0tQUk9CRVMgaXMgbm90IHNldAorQ09ORklHX0hBVkVfS1BST0JFUz15CitDT05GSUdfSEFWRV9LUkVUUFJPQkVTPXkKK0NPTkZJR19QUk9DX1BBR0VfTU9OSVRPUj15CiBDT05GSUdfU0xBQklORk89eQogQ09ORklHX1JUX01VVEVYRVM9eQogIyBDT05GSUdfVElOWV9TSE1FTSBpcyBub3Qgc2V0CkBAIC0xMzEsNiArMTQ1LDcgQEAKICMgQ09ORklHX0RFRkFVTFRfQ0ZRIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFRkFVTFRfTk9PUCBpcyBub3Qgc2V0CiBDT05GSUdfREVGQVVMVF9JT1NDSEVEPSJhbnRpY2lwYXRvcnkiCitDT05GSUdfQ0xBU1NJQ19SQ1U9eQogCiAjCiAjIFBsYXRmb3JtIHN1cHBvcnQKQEAgLTE0MSw4ICsxNTYsOCBAQAogIyBDT05GSUdfUFBDXzg2eHggaXMgbm90IHNldAogIyBDT05GSUdfUFBDX1BTRVJJRVMgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0lTRVJJRVMgaXMgbm90IHNldAotIyBDT05GSUdfUFBDX01QQzUyeHggaXMgbm90IHNldAotIyBDT05GSUdfUFBDX01QQzUyMDAgaXMgbm90IHNldAorIyBDT05GSUdfUFBDX01QQzUxMnggaXMgbm90IHNldAorIyBDT05GSUdfUFBDX01QQzUxMjEgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX1BNQUMgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX01BUExFIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19QQVNFTUkgaXMgbm90IHNldApAQCAtMTczLDYgKzE4OCw3IEBACiBDT05GSUdfU1BVX0ZTPXkKIENPTkZJR19TUFVfQkFTRT15CiAjIENPTkZJR19QUTJBRFMgaXMgbm90IHNldAorIyBDT05GSUdfSVBJQyBpcyBub3Qgc2V0CiAjIENPTkZJR19NUElDIGlzIG5vdCBzZXQKICMgQ09ORklHX01QSUNfV0VJUkQgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0k4MjU5IGlzIG5vdCBzZXQKQEAgLTE4NCw3ICsyMDAsNiBAQAogIyBDT05GSUdfUFBDX0lORElSRUNUX0lPIGlzIG5vdCBzZXQKICMgQ09ORklHX0dFTkVSSUNfSU9NQVAgaXMgbm90IHNldAogIyBDT05GSUdfQ1BVX0ZSRVEgaXMgbm90IHNldAotIyBDT05GSUdfQ1BNMiBpcyBub3Qgc2V0CiAjIENPTkZJR19GU0xfVUxJMTU3NSBpcyBub3Qgc2V0CiAKICMKQEAgLTE5OSwxNSArMjE0LDE5IEBACiAjIENPTkZJR19IWl8zMDAgaXMgbm90IHNldAogIyBDT05GSUdfSFpfMTAwMCBpcyBub3Qgc2V0CiBDT05GSUdfSFo9MjUwCisjIENPTkZJR19TQ0hFRF9IUlRJQ0sgaXMgbm90IHNldAogQ09ORklHX1BSRUVNUFRfTk9ORT15CiAjIENPTkZJR19QUkVFTVBUX1ZPTFVOVEFSWSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUkVFTVBUIGlzIG5vdCBzZXQKLSMgQ09ORklHX1BSRUVNUFRfQktMIGlzIG5vdCBzZXQKIENPTkZJR19CSU5GTVRfRUxGPXkKK0NPTkZJR19DT01QQVRfQklORk1UX0VMRj15CiBDT05GSUdfQklORk1UX01JU0M9eQogQ09ORklHX0ZPUkNFX01BWF9aT05FT1JERVI9MTMKICMgQ09ORklHX0lPTU1VX1ZNRVJHRSBpcyBub3Qgc2V0CitDT05GSUdfSU9NTVVfSEVMUEVSPXkKIENPTkZJR19BUkNIX0VOQUJMRV9NRU1PUllfSE9UUExVRz15CitDT05GSUdfQVJDSF9IQVNfV0FMS19NRU1PUlk9eQorQ09ORklHX0FSQ0hfRU5BQkxFX01FTU9SWV9IT1RSRU1PVkU9eQogQ09ORklHX0tFWEVDPXkKICMgQ09ORklHX0NSQVNIX0RVTVAgaXMgbm90IHNldAogIyBDT05GSUdfSVJRX0FMTF9DUFVTIGlzIG5vdCBzZXQKQEAgLTI0MSw3ICsyNjAsNiBAQAogIyBDT05GSUdfQ01ETElORV9CT09MIGlzIG5vdCBzZXQKICMgQ09ORklHX1BNIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFQ0NPTVAgaXMgbm90IHNldAotIyBDT05GSUdfV0FOVF9ERVZJQ0VfVFJFRSBpcyBub3Qgc2V0CiBDT05GSUdfSVNBX0RNQV9BUEk9eQogCiAjCkBAIC0yNzEsNiArMjg5LDcgQEAKICMgQ09ORklHX1hGUk1fVVNFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19YRlJNX1NVQl9QT0xJQ1kgaXMgbm90IHNldAogIyBDT05GSUdfWEZSTV9NSUdSQVRFIGlzIG5vdCBzZXQKKyMgQ09ORklHX1hGUk1fU1RBVElTVElDUyBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRfS0VZIGlzIG5vdCBzZXQKIENPTkZJR19JTkVUPXkKICMgQ09ORklHX0lQX01VTFRJQ0FTVCBpcyBub3Qgc2V0CkBAIC0zMzgsNiArMzU3LDcgQEAKICMKICMgQ09ORklHX05FVF9QS1RHRU4gaXMgbm90IHNldAogIyBDT05GSUdfSEFNUkFESU8gaXMgbm90IHNldAorIyBDT05GSUdfQ0FOIGlzIG5vdCBzZXQKICMgQ09ORklHX0lSREEgaXMgbm90IHNldAogQ09ORklHX0JUPW0KIENPTkZJR19CVF9MMkNBUD1tCkBAIC00MDUsMTEgKzQyNSwxMyBAQAogQ09ORklHX0JMS19ERVZfUkFNPXkKIENPTkZJR19CTEtfREVWX1JBTV9DT1VOVD0xNgogQ09ORklHX0JMS19ERVZfUkFNX1NJWkU9NjU1MzUKLUNPTkZJR19CTEtfREVWX1JBTV9CTE9DS1NJWkU9MTAyNAorIyBDT05GSUdfQkxLX0RFVl9YSVAgaXMgbm90IHNldAogIyBDT05GSUdfQ0RST01fUEtUQ0RWRCBpcyBub3Qgc2V0CiAjIENPTkZJR19BVEFfT1ZFUl9FVEggaXMgbm90IHNldAogQ09ORklHX01JU0NfREVWSUNFUz15CiAjIENPTkZJR19FRVBST01fOTNDWDYgaXMgbm90IHNldAorIyBDT05GSUdfRU5DTE9TVVJFX1NFUlZJQ0VTIGlzIG5vdCBzZXQKK0NPTkZJR19IQVZFX0lERT15CiAjIENPTkZJR19JREUgaXMgbm90IHNldAogCiAjCkBAIC00NzIsNyArNDk0LDkgQEAKICMgQ09ORklHX0lCTV9ORVdfRU1BQ19FTUFDNCBpcyBub3Qgc2V0CiAjIENPTkZJR19CNDQgaXMgbm90IHNldAogQ09ORklHX05FVERFVl8xMDAwPXkKKyMgQ09ORklHX0UxMDAwRV9FTkFCTEVEIGlzIG5vdCBzZXQKIENPTkZJR19HRUxJQ19ORVQ9eQorQ09ORklHX0dFTElDX1dJUkVMRVNTPXkKICMgQ09ORklHX05FVERFVl8xMDAwMCBpcyBub3Qgc2V0CiAKICMKQEAgLTQ4Miw5ICs1MDYsOCBAQAogQ09ORklHX1dMQU5fODAyMTE9eQogIyBDT05GSUdfTElCRVJUQVMgaXMgbm90IHNldAogIyBDT05GSUdfVVNCX1pEMTIwMSBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfTkVUX1JORElTX1dMQU4gaXMgbm90IHNldAogIyBDT05GSUdfSE9TVEFQIGlzIG5vdCBzZXQKLUNPTkZJR19aRDEyMTFSVz1tCi0jIENPTkZJR19aRDEyMTFSV19ERUJVRyBpcyBub3Qgc2V0CiAKICMKICMgVVNCIE5ldHdvcmsgQWRhcHRlcnMKQEAgLTUwNyw3ICs1MzAsNiBAQAogIyBDT05GSUdfV0FOIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQUCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTElQIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NIQVBFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRDT05TT0xFIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVFBPTEwgaXMgbm90IHNldAogIyBDT05GSUdfTkVUX1BPTExfQ09OVFJPTExFUiBpcyBub3Qgc2V0CkBAIC02MDYsNiArNjI4LDcgQEAKICMgQ09ORklHX1cxIGlzIG5vdCBzZXQKICMgQ09ORklHX1BPV0VSX1NVUFBMWSBpcyBub3Qgc2V0CiAjIENPTkZJR19IV01PTiBpcyBub3Qgc2V0CisjIENPTkZJR19USEVSTUFMIGlzIG5vdCBzZXQKICMgQ09ORklHX1dBVENIRE9HIGlzIG5vdCBzZXQKIAogIwpAQCAtNzQyLDYgKzc2NSwxMCBAQAogIwogCiAjCisjIEFMU0EgU29DIGF1ZGlvIGZvciBGcmVlc2NhbGUgU09DcworIworCisjCiAjIE9wZW4gU291bmQgU3lzdGVtCiAjCiAjIENPTkZJR19TT1VORF9QUklNRSBpcyBub3Qgc2V0CkBAIC03NjksNiArNzk2LDcgQEAKIENPTkZJR19VU0JfQVJDSF9IQVNfRUhDST15CiBDT05GSUdfVVNCPW0KICMgQ09ORklHX1VTQl9ERUJVRyBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfQU5OT1VOQ0VfTkVXX0RFVklDRVMgaXMgbm90IHNldAogCiAjCiAjIE1pc2NlbGxhbmVvdXMgVVNCIG9wdGlvbnMKQEAgLTc4MiwxMCArODEwLDEwIEBACiAjIFVTQiBIb3N0IENvbnRyb2xsZXIgRHJpdmVycwogIwogQ09ORklHX1VTQl9FSENJX0hDRD1tCi0jIENPTkZJR19VU0JfRUhDSV9TUExJVF9JU08gaXMgbm90IHNldAogIyBDT05GSUdfVVNCX0VIQ0lfUk9PVF9IVUJfVFQgaXMgbm90IHNldAogIyBDT05GSUdfVVNCX0VIQ0lfVFRfTkVXU0NIRUQgaXMgbm90IHNldAogQ09ORklHX1VTQl9FSENJX0JJR19FTkRJQU5fTU1JTz15CisjIENPTkZJR19VU0JfRUhDSV9IQ0RfUFBDX09GIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9JU1AxMTZYX0hDRCBpcyBub3Qgc2V0CiBDT05GSUdfVVNCX09IQ0lfSENEPW0KICMgQ09ORklHX1VTQl9PSENJX0hDRF9QUENfT0YgaXMgbm90IHNldApAQCAtODMzLDEwICs4NjEsNiBAQAogIwogIyBVU0IgcG9ydCBkcml2ZXJzCiAjCi0KLSMKLSMgVVNCIFNlcmlhbCBDb252ZXJ0ZXIgc3VwcG9ydAotIwogIyBDT05GSUdfVVNCX1NFUklBTCBpcyBub3Qgc2V0CiAKICMKQEAgLTg2MiwxOSArODg2LDEzIEBACiAjIENPTkZJR19VU0JfVFJBTkNFVklCUkFUT1IgaXMgbm90IHNldAogIyBDT05GSUdfVVNCX0lPV0FSUklPUiBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfVEVTVCBpcyBub3Qgc2V0Ci0KLSMKLSMgVVNCIERTTCBtb2RlbSBzdXBwb3J0Ci0jCi0KLSMKLSMgVVNCIEdhZGdldCBTdXBwb3J0Ci0jCiAjIENPTkZJR19VU0JfR0FER0VUIGlzIG5vdCBzZXQKICMgQ09ORklHX01NQyBpcyBub3Qgc2V0CisjIENPTkZJR19NRU1TVElDSyBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVdfTEVEUyBpcyBub3Qgc2V0CiAjIENPTkZJR19FREFDIGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19DTEFTUyBpcyBub3Qgc2V0CisjIENPTkZJR19ETUFERVZJQ0VTIGlzIG5vdCBzZXQKIAogIwogIyBVc2Vyc3BhY2UgSS9PCkBAIC05MDAsOCArOTE4LDcgQEAKICMgQ09ORklHX1hGU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19HRlMyX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX09DRlMyX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX01JTklYX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1JPTUZTX0ZTIGlzIG5vdCBzZXQKK0NPTkZJR19ETk9USUZZPXkKIENPTkZJR19JTk9USUZZPXkKIENPTkZJR19JTk9USUZZX1VTRVI9eQogQ09ORklHX1FVT1RBPXkKQEAgLTkxMCw3ICs5MjcsNiBAQAogIyBDT05GSUdfUUZNVF9WMSBpcyBub3Qgc2V0CiBDT05GSUdfUUZNVF9WMj15CiBDT05GSUdfUVVPVEFDVEw9eQotQ09ORklHX0ROT1RJRlk9eQogQ09ORklHX0FVVE9GU19GUz1tCiBDT05GSUdfQVVUT0ZTNF9GUz1tCiAjIENPTkZJR19GVVNFX0ZTIGlzIG5vdCBzZXQKQEAgLTk1OSw4ICs5NzUsMTAgQEAKICMgQ09ORklHX0VGU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUkFNRlMgaXMgbm90IHNldAogIyBDT05GSUdfVlhGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19IUEZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1FOWDRGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TWVNWX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1VGU19GUyBpcyBub3Qgc2V0CiBDT05GSUdfTkVUV09SS19GSUxFU1lTVEVNUz15CkBAIC0xMDM2LDcgKzEwNTQsNiBAQAogIyBDT05GSUdfTkxTX0tPSThfVSBpcyBub3Qgc2V0CiAjIENPTkZJR19OTFNfVVRGOCBpcyBub3Qgc2V0CiAjIENPTkZJR19ETE0gaXMgbm90IHNldAotIyBDT05GSUdfVUNDX1NMT1cgaXMgbm90IHNldAogCiAjCiAjIExpYnJhcnkgcm91dGluZXMKQEAgLTEwNDgsMTUgKzEwNjUsMTIgQEAKIENPTkZJR19DUkMzMj15CiAjIENPTkZJR19DUkM3IGlzIG5vdCBzZXQKICMgQ09ORklHX0xJQkNSQzMyQyBpcyBub3Qgc2V0CitDT05GSUdfTFpPX0NPTVBSRVNTPW0KK0NPTkZJR19MWk9fREVDT01QUkVTUz1tCiBDT05GSUdfUExJU1Q9eQogQ09ORklHX0hBU19JT01FTT15CiBDT05GSUdfSEFTX0lPUE9SVD15CiBDT05GSUdfSEFTX0RNQT15Ci1DT05GSUdfSU5TVFJVTUVOVEFUSU9OPXkKLUNPTkZJR19QUk9GSUxJTkc9eQotQ09ORklHX09QUk9GSUxFPW0KLSMgQ09ORklHX0tQUk9CRVMgaXMgbm90IHNldAotIyBDT05GSUdfTUFSS0VSUyBpcyBub3Qgc2V0CiAKICMKICMgS2VybmVsIGhhY2tpbmcKQEAgLTEwODcsOSArMTEwMSw5IEBACiAjIENPTkZJR19ERUJVR19WTSBpcyBub3Qgc2V0CiBDT05GSUdfREVCVUdfTElTVD15CiAjIENPTkZJR19ERUJVR19TRyBpcyBub3Qgc2V0Ci1DT05GSUdfRk9SQ0VEX0lOTElOSU5HPXkKICMgQ09ORklHX0JPT1RfUFJJTlRLX0RFTEFZIGlzIG5vdCBzZXQKICMgQ09ORklHX1JDVV9UT1JUVVJFX1RFU1QgaXMgbm90IHNldAorIyBDT05GSUdfQkFDS1RSQUNFX1NFTEZfVEVTVCBpcyBub3Qgc2V0CiAjIENPTkZJR19GQVVMVF9JTkpFQ1RJT04gaXMgbm90IHNldAogIyBDT05GSUdfU0FNUExFUyBpcyBub3Qgc2V0CiBDT05GSUdfREVCVUdfU1RBQ0tPVkVSRkxPVz15CkBAIC0xMTA4LDcgKzExMjIsOSBAQAogIyBDT05GSUdfU0VDVVJJVFlfRklMRV9DQVBBQklMSVRJRVMgaXMgbm90IHNldAogQ09ORklHX0NSWVBUTz15CiBDT05GSUdfQ1JZUFRPX0FMR0FQST15CitDT05GSUdfQ1JZUFRPX0FFQUQ9bQogQ09ORklHX0NSWVBUT19CTEtDSVBIRVI9eQorQ09ORklHX0NSWVBUT19TRVFJVj1tCiBDT05GSUdfQ1JZUFRPX01BTkFHRVI9eQogIyBDT05GSUdfQ1JZUFRPX0hNQUMgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX1hDQkMgaXMgbm90IHNldApAQCAtMTEyMCwxMiArMTEzNiwxNSBAQAogIyBDT05GSUdfQ1JZUFRPX1NIQTUxMiBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fV1A1MTIgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX1RHUjE5MiBpcyBub3Qgc2V0Ci0jIENPTkZJR19DUllQVE9fR0YxMjhNVUwgaXMgbm90IHNldAorQ09ORklHX0NSWVBUT19HRjEyOE1VTD1tCiBDT05GSUdfQ1JZUFRPX0VDQj1tCiBDT05GSUdfQ1JZUFRPX0NCQz15CiBDT05GSUdfQ1JZUFRPX1BDQkM9bQogIyBDT05GSUdfQ1JZUFRPX0xSVyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fWFRTIGlzIG5vdCBzZXQKK0NPTkZJR19DUllQVE9fQ1RSPW0KK0NPTkZJR19DUllQVE9fR0NNPW0KK0NPTkZJR19DUllQVE9fQ0NNPW0KICMgQ09ORklHX0NSWVBUT19DUllQVEQgaXMgbm90IHNldAogQ09ORklHX0NSWVBUT19ERVM9eQogIyBDT05GSUdfQ1JZUFRPX0ZDUllQVCBpcyBub3Qgc2V0CkBAIC0xMTQwLDExICsxMTU5LDEzIEBACiAjIENPTkZJR19DUllQVE9fS0hBWkFEIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19BTlVCSVMgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX1NFRUQgaXMgbm90IHNldAorQ09ORklHX0NSWVBUT19TQUxTQTIwPW0KICMgQ09ORklHX0NSWVBUT19ERUZMQVRFIGlzIG5vdCBzZXQKIENPTkZJR19DUllQVE9fTUlDSEFFTF9NSUM9bQogIyBDT05GSUdfQ1JZUFRPX0NSQzMyQyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fQ0FNRUxMSUEgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX1RFU1QgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX0FVVEhFTkMgaXMgbm90IHNldAorQ09ORklHX0NSWVBUT19MWk89bQogQ09ORklHX0NSWVBUT19IVz15CiAjIENPTkZJR19QUENfQ0xPQ0sgaXMgbm90IHNldApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHNlcmllc19kZWZjb25maWcgYi9hcmNoL3Bvd2VycGMvY29uZmlncy9wc2VyaWVzX2RlZmNvbmZpZwppbmRleCA5MmJiZjUxLi43NTVhY2E3IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvY29uZmlncy9wc2VyaWVzX2RlZmNvbmZpZworKysgYi9hcmNoL3Bvd2VycGMvY29uZmlncy9wc2VyaWVzX2RlZmNvbmZpZwpAQCAtMSw3ICsxLDcgQEAKICMKICMgQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgbWFrZSBjb25maWc6IGRvbid0IGVkaXQKLSMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4yNC1yYzQKLSMgVGh1IERlYyAgNiAxNjo0OToxNSAyMDA3CisjIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMjUtcmM2CisjIFRodSBNYXIgMjAgMTE6MDg6MDEgMjAwOAogIwogQ09ORklHX1BQQzY0PXkKIApAQCAtMjgsNiArMjgsNyBAQAogQ09ORklHX0dFTkVSSUNfVElNRV9WU1lTQ0FMTD15CiBDT05GSUdfR0VORVJJQ19DTE9DS0VWRU5UUz15CiBDT05GSUdfR0VORVJJQ19IQVJESVJRUz15CitDT05GSUdfSEFWRV9TRVRVUF9QRVJfQ1BVX0FSRUE9eQogQ09ORklHX0lSUV9QRVJfQ1BVPXkKIENPTkZJR19SV1NFTV9YQ0hHQUREX0FMR09SSVRITT15CiBDT05GSUdfQVJDSF9IQVNfSUxPRzJfVTMyPXkKQEAgLTcxLDggKzcyLDYgQEAKIENPTkZJR19UQVNLX0RFTEFZX0FDQ1Q9eQogQ09ORklHX1RBU0tfWEFDQ1Q9eQogQ09ORklHX1RBU0tfSU9fQUNDT1VOVElORz15Ci0jIENPTkZJR19VU0VSX05TIGlzIG5vdCBzZXQKLSMgQ09ORklHX1BJRF9OUyBpcyBub3Qgc2V0CiBDT05GSUdfQVVESVQ9eQogQ09ORklHX0FVRElUU1lTQ0FMTD15CiBDT05GSUdfQVVESVRfVFJFRT15CkBAIC04MywxMyArODIsMjAgQEAKICMgQ09ORklHX0NHUk9VUF9ERUJVRyBpcyBub3Qgc2V0CiBDT05GSUdfQ0dST1VQX05TPXkKIENPTkZJR19DUFVTRVRTPXkKLUNPTkZJR19GQUlSX0dST1VQX1NDSEVEPXkKLSMgQ09ORklHX0ZBSVJfVVNFUl9TQ0hFRCBpcyBub3Qgc2V0Ci1DT05GSUdfRkFJUl9DR1JPVVBfU0NIRUQ9eQorIyBDT05GSUdfR1JPVVBfU0NIRUQgaXMgbm90IHNldAorIyBDT05GSUdfVVNFUl9TQ0hFRCBpcyBub3Qgc2V0CisjIENPTkZJR19DR1JPVVBfU0NIRUQgaXMgbm90IHNldAogQ09ORklHX0NHUk9VUF9DUFVBQ0NUPXkKKyMgQ09ORklHX1JFU09VUkNFX0NPVU5URVJTIGlzIG5vdCBzZXQKIENPTkZJR19TWVNGU19ERVBSRUNBVEVEPXkKK0NPTkZJR19TWVNGU19ERVBSRUNBVEVEX1YyPXkKIENPTkZJR19QUk9DX1BJRF9DUFVTRVQ9eQogIyBDT05GSUdfUkVMQVkgaXMgbm90IHNldAorQ09ORklHX05BTUVTUEFDRVM9eQorIyBDT05GSUdfVVRTX05TIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lQQ19OUyBpcyBub3Qgc2V0CisjIENPTkZJR19VU0VSX05TIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BJRF9OUyBpcyBub3Qgc2V0CiBDT05GSUdfQkxLX0RFVl9JTklUUkQ9eQogQ09ORklHX0lOSVRSQU1GU19TT1VSQ0U9IiIKIENPTkZJR19DQ19PUFRJTUlaRV9GT1JfU0laRT15CkBAIC0xMDMsMTEgKzEwOSwxMyBAQAogQ09ORklHX1BSSU5USz15CiBDT05GSUdfQlVHPXkKIENPTkZJR19FTEZfQ09SRT15CisjIENPTkZJR19DT01QQVRfQlJLIGlzIG5vdCBzZXQKIENPTkZJR19CQVNFX0ZVTEw9eQogQ09ORklHX0ZVVEVYPXkKIENPTkZJR19BTk9OX0lOT0RFUz15CiBDT05GSUdfRVBPTEw9eQogQ09ORklHX1NJR05BTEZEPXkKK0NPTkZJR19USU1FUkZEPXkKIENPTkZJR19FVkVOVEZEPXkKIENPTkZJR19TSE1FTT15CiBDT05GSUdfVk1fRVZFTlRfQ09VTlRFUlM9eQpAQCAtMTE1LDYgKzEyMywxNiBAQAogIyBDT05GSUdfU0xBQiBpcyBub3Qgc2V0CiBDT05GSUdfU0xVQj15CiAjIENPTkZJR19TTE9CIGlzIG5vdCBzZXQKK0NPTkZJR19QUk9GSUxJTkc9eQorQ09ORklHX01BUktFUlM9eQorQ09ORklHX09QUk9GSUxFPXkKK0NPTkZJR19IQVZFX09QUk9GSUxFPXkKK0NPTkZJR19LUFJPQkVTPXkKK0NPTkZJR19LUkVUUFJPQkVTPXkKK0NPTkZJR19IQVZFX0tQUk9CRVM9eQorQ09ORklHX0hBVkVfS1JFVFBST0JFUz15CitDT05GSUdfUFJPQ19QQUdFX01PTklUT1I9eQorQ09ORklHX1NMQUJJTkZPPXkKIENPTkZJR19SVF9NVVRFWEVTPXkKICMgQ09ORklHX1RJTllfU0hNRU0gaXMgbm90IHNldAogQ09ORklHX0JBU0VfU01BTEw9MApAQCAtMTQyLDYgKzE2MCw3IEBACiAjIENPTkZJR19ERUZBVUxUX0NGUSBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUZBVUxUX05PT1AgaXMgbm90IHNldAogQ09ORklHX0RFRkFVTFRfSU9TQ0hFRD0iYW50aWNpcGF0b3J5IgorQ09ORklHX0NMQVNTSUNfUkNVPXkKIAogIwogIyBQbGF0Zm9ybSBzdXBwb3J0CkBAIC0xNTYsOCArMTc1LDggQEAKIENPTkZJR19TQ0FOTE9HPW0KIENPTkZJR19MUEFSQ0ZHPXkKICMgQ09ORklHX1BQQ19JU0VSSUVTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1BQQ19NUEM1Mnh4IGlzIG5vdCBzZXQKLSMgQ09ORklHX1BQQ19NUEM1MjAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ19NUEM1MTJ4IGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ19NUEM1MTIxIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19QTUFDIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19NQVBMRSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfUEFTRU1JIGlzIG5vdCBzZXQKQEAgLTE3MCw2ICsxODksNyBAQAogQ09ORklHX1BQQ19OQVRJVkU9eQogIyBDT05GSUdfVURCR19SVEFTX0NPTlNPTEUgaXMgbm90IHNldAogQ09ORklHX1hJQ1M9eQorIyBDT05GSUdfSVBJQyBpcyBub3Qgc2V0CiBDT05GSUdfTVBJQz15CiAjIENPTkZJR19NUElDX1dFSVJEIGlzIG5vdCBzZXQKIENPTkZJR19QUENfSTgyNTk9eQpAQCAtMTg2LDcgKzIwNiw2IEBACiAjIENPTkZJR19QUENfSU5ESVJFQ1RfSU8gaXMgbm90IHNldAogIyBDT05GSUdfR0VORVJJQ19JT01BUCBpcyBub3Qgc2V0CiAjIENPTkZJR19DUFVfRlJFUSBpcyBub3Qgc2V0Ci0jIENPTkZJR19DUE0yIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZTTF9VTEkxNTc1IGlzIG5vdCBzZXQKIAogIwpAQCAtMjAxLDE3ICsyMjAsMjEgQEAKICMgQ09ORklHX0haXzMwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19IWl8xMDAwIGlzIG5vdCBzZXQKIENPTkZJR19IWj0yNTAKKyMgQ09ORklHX1NDSEVEX0hSVElDSyBpcyBub3Qgc2V0CiBDT05GSUdfUFJFRU1QVF9OT05FPXkKICMgQ09ORklHX1BSRUVNUFRfVk9MVU5UQVJZIGlzIG5vdCBzZXQKICMgQ09ORklHX1BSRUVNUFQgaXMgbm90IHNldAotIyBDT05GSUdfUFJFRU1QVF9CS0wgaXMgbm90IHNldAogQ09ORklHX0JJTkZNVF9FTEY9eQorQ09ORklHX0NPTVBBVF9CSU5GTVRfRUxGPXkKIENPTkZJR19CSU5GTVRfTUlTQz1tCiBDT05GSUdfRk9SQ0VfTUFYX1pPTkVPUkRFUj0xMwogQ09ORklHX0hVR0VUTEJfUEFHRV9TSVpFX1ZBUklBQkxFPXkKIENPTkZJR19JT01NVV9WTUVSR0U9eQorQ09ORklHX0lPTU1VX0hFTFBFUj15CiBDT05GSUdfSE9UUExVR19DUFU9eQogQ09ORklHX0FSQ0hfRU5BQkxFX01FTU9SWV9IT1RQTFVHPXkKK0NPTkZJR19BUkNIX0hBU19XQUxLX01FTU9SWT15CitDT05GSUdfQVJDSF9FTkFCTEVfTUVNT1JZX0hPVFJFTU9WRT15CiBDT05GSUdfS0VYRUM9eQogIyBDT05GSUdfQ1JBU0hfRFVNUCBpcyBub3Qgc2V0CiBDT05GSUdfSVJRX0FMTF9DUFVTPXkKQEAgLTI0NSw5ICsyNjgsNyBAQAogQ09ORklHX1BST0NfREVWSUNFVFJFRT15CiAjIENPTkZJR19DTURMSU5FX0JPT0wgaXMgbm90IHNldAogIyBDT05GSUdfUE0gaXMgbm90IHNldAotQ09ORklHX1NVU1BFTkRfU01QX1BPU1NJQkxFPXkKIENPTkZJR19TRUNDT01QPXkKLSMgQ09ORklHX1dBTlRfREVWSUNFX1RSRUUgaXMgbm90IHNldAogQ09ORklHX0lTQV9ETUFfQVBJPXkKIAogIwpAQCAtMjg4LDYgKzMwOSw3IEBACiBDT05GSUdfWEZSTV9VU0VSPW0KICMgQ09ORklHX1hGUk1fU1VCX1BPTElDWSBpcyBub3Qgc2V0CiAjIENPTkZJR19YRlJNX01JR1JBVEUgaXMgbm90IHNldAorIyBDT05GSUdfWEZSTV9TVEFUSVNUSUNTIGlzIG5vdCBzZXQKIENPTkZJR19ORVRfS0VZPW0KICMgQ09ORklHX05FVF9LRVlfTUlHUkFURSBpcyBub3Qgc2V0CiBDT05GSUdfSU5FVD15CkBAIC0zMjIsMTQgKzM0NCwxNCBAQAogIyBDT05GSUdfTkVUV09SS19TRUNNQVJLIGlzIG5vdCBzZXQKIENPTkZJR19ORVRGSUxURVI9eQogIyBDT05GSUdfTkVURklMVEVSX0RFQlVHIGlzIG5vdCBzZXQKK0NPTkZJR19ORVRGSUxURVJfQURWQU5DRUQ9eQogCiAjCiAjIENvcmUgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24KICMKLUNPTkZJR19ORVRGSUxURVJfTkVUTElOSz15CitDT05GSUdfTkVURklMVEVSX05FVExJTks9bQogQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LX1FVRVVFPW0KIENPTkZJR19ORVRGSUxURVJfTkVUTElOS19MT0c9bQotQ09ORklHX05GX0NPTk5UUkFDS19FTkFCTEVEPW0KIENPTkZJR19ORl9DT05OVFJBQ0s9bQogQ09ORklHX05GX0NUX0FDQ1Q9eQogQ09ORklHX05GX0NPTk5UUkFDS19NQVJLPXkKQEAgLTM1MSw2ICszNzMsNyBAQAogQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfTUFSSz1tCiBDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9ORlFVRVVFPW0KIENPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX05GTE9HPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX1JBVEVFU1Q9bQogQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfVENQTVNTPW0KIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfQ09NTUVOVD1tCiBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0NPTk5CWVRFUz1tCkBAIC0zNjEsMTQgKzM4NCwxNyBAQAogQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9EU0NQPW0KIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfRVNQPW0KIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfSEVMUEVSPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfSVBSQU5HRT1tCiBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0xFTkdUSD1tCiBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0xJTUlUPW0KIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfTUFDPW0KIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfTUFSSz1tCitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX09XTkVSPW0KIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfUE9MSUNZPW0KIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfTVVMVElQT1JUPW0KIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfUEtUVFlQRT1tCiBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1FVT1RBPW0KK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfUkFURUVTVD1tCiBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1JFQUxNPW0KIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfU0NUUD1tCiBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1NUQVRFPW0KQEAgLTM4NiwxMyArNDEyLDEwIEBACiBDT05GSUdfTkZfQ09OTlRSQUNLX1BST0NfQ09NUEFUPXkKIENPTkZJR19JUF9ORl9RVUVVRT1tCiBDT05GSUdfSVBfTkZfSVBUQUJMRVM9bQotQ09ORklHX0lQX05GX01BVENIX0lQUkFOR0U9bQotQ09ORklHX0lQX05GX01BVENIX1RPUz1tCiBDT05GSUdfSVBfTkZfTUFUQ0hfUkVDRU5UPW0KIENPTkZJR19JUF9ORl9NQVRDSF9FQ049bQogQ09ORklHX0lQX05GX01BVENIX0FIPW0KIENPTkZJR19JUF9ORl9NQVRDSF9UVEw9bQotQ09ORklHX0lQX05GX01BVENIX09XTkVSPW0KIENPTkZJR19JUF9ORl9NQVRDSF9BRERSVFlQRT1tCiBDT05GSUdfSVBfTkZfRklMVEVSPW0KIENPTkZJR19JUF9ORl9UQVJHRVRfUkVKRUNUPW0KQEAgLTQwMyw3ICs0MjYsNiBAQAogQ09ORklHX0lQX05GX1RBUkdFVF9NQVNRVUVSQURFPW0KIENPTkZJR19JUF9ORl9UQVJHRVRfUkVESVJFQ1Q9bQogQ09ORklHX0lQX05GX1RBUkdFVF9ORVRNQVA9bQotQ09ORklHX0lQX05GX1RBUkdFVF9TQU1FPW0KIENPTkZJR19ORl9OQVRfU05NUF9CQVNJQz1tCiBDT05GSUdfTkZfTkFUX0ZUUD1tCiBDT05GSUdfTkZfTkFUX0lSQz1tCkBAIC00MzksNiArNDYxLDcgQEAKICMgQ09ORklHX05FVF9QS1RHRU4gaXMgbm90IHNldAogIyBDT05GSUdfTkVUX1RDUFBST0JFIGlzIG5vdCBzZXQKICMgQ09ORklHX0hBTVJBRElPIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NBTiBpcyBub3Qgc2V0CiAjIENPTkZJR19JUkRBIGlzIG5vdCBzZXQKICMgQ09ORklHX0JUIGlzIG5vdCBzZXQKICMgQ09ORklHX0FGX1JYUlBDIGlzIG5vdCBzZXQKQEAgLTQ5Myw3ICs1MTYsNyBAQAogQ09ORklHX0JMS19ERVZfUkFNPXkKIENPTkZJR19CTEtfREVWX1JBTV9DT1VOVD0xNgogQ09ORklHX0JMS19ERVZfUkFNX1NJWkU9NjU1MzYKLUNPTkZJR19CTEtfREVWX1JBTV9CTE9DS1NJWkU9MTAyNAorIyBDT05GSUdfQkxLX0RFVl9YSVAgaXMgbm90IHNldAogIyBDT05GSUdfQ0RST01fUEtUQ0RWRCBpcyBub3Qgc2V0CiAjIENPTkZJR19BVEFfT1ZFUl9FVEggaXMgbm90IHNldAogQ09ORklHX01JU0NfREVWSUNFUz15CkBAIC01MDEsMTYgKzUyNCwxOSBAQAogIyBDT05GSUdfRUVQUk9NXzkzQ1g2IGlzIG5vdCBzZXQKICMgQ09ORklHX1NHSV9JT0M0IGlzIG5vdCBzZXQKICMgQ09ORklHX1RJRk1fQ09SRSBpcyBub3Qgc2V0CisjIENPTkZJR19FTkNMT1NVUkVfU0VSVklDRVMgaXMgbm90IHNldAorQ09ORklHX0hBVkVfSURFPXkKIENPTkZJR19JREU9eQogQ09ORklHX0JMS19ERVZfSURFPXkKIAogIwotIyBQbGVhc2Ugc2VlIERvY3VtZW50YXRpb24vaWRlLnR4dCBmb3IgaGVscC9pbmZvIG9uIElERSBkcml2ZXMKKyMgUGxlYXNlIHNlZSBEb2N1bWVudGF0aW9uL2lkZS9pZGUudHh0IGZvciBoZWxwL2luZm8gb24gSURFIGRyaXZlcwogIwogIyBDT05GSUdfQkxLX0RFVl9JREVfU0FUQSBpcyBub3Qgc2V0CiBDT05GSUdfQkxLX0RFVl9JREVESVNLPXkKICMgQ09ORklHX0lERURJU0tfTVVMVElfTU9ERSBpcyBub3Qgc2V0CiBDT05GSUdfQkxLX0RFVl9JREVDRD15CitDT05GSUdfQkxLX0RFVl9JREVDRF9WRVJCT1NFX0VSUk9SUz15CiAjIENPTkZJR19CTEtfREVWX0lERVRBUEUgaXMgbm90IHNldAogIyBDT05GSUdfQkxLX0RFVl9JREVGTE9QUFkgaXMgbm90IHNldAogIyBDT05GSUdfQkxLX0RFVl9JREVTQ1NJIGlzIG5vdCBzZXQKQEAgLTUyMiwxMiArNTQ4LDEyIEBACiAjCiBDT05GSUdfSURFX0dFTkVSSUM9eQogIyBDT05GSUdfQkxLX0RFVl9QTEFURk9STSBpcyBub3Qgc2V0CitDT05GSUdfQkxLX0RFVl9JREVETUFfU0ZGPXkKIAogIwogIyBQQ0kgSURFIGNoaXBzZXRzIHN1cHBvcnQKICMKIENPTkZJR19CTEtfREVWX0lERVBDST15Ci1DT05GSUdfSURFUENJX1NIQVJFX0lSUT15CiBDT05GSUdfSURFUENJX1BDSUJVU19PUkRFUj15CiAjIENPTkZJR19CTEtfREVWX09GRkJPQVJEIGlzIG5vdCBzZXQKIENPTkZJR19CTEtfREVWX0dFTkVSSUM9eQpAQCAtNTU4LDcgKzU4NCw2IEBACiAjIENPTkZJR19CTEtfREVWX1RSTTI5MCBpcyBub3Qgc2V0CiAjIENPTkZJR19CTEtfREVWX1ZJQTgyQ1hYWCBpcyBub3Qgc2V0CiAjIENPTkZJR19CTEtfREVWX1RDODZDMDAxIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lERV9BUk0gaXMgbm90IHNldAogQ09ORklHX0JMS19ERVZfSURFRE1BPXkKIENPTkZJR19JREVfQVJDSF9PQlNPTEVURV9JTklUPXkKICMgQ09ORklHX0JMS19ERVZfSEQgaXMgbm90IHNldApAQCAtNjI3LDYgKzY1Miw3IEBACiAjIENPTkZJR19TQ1NJX0lOSUExMDAgaXMgbm90IHNldAogIyBDT05GSUdfU0NTSV9QUEEgaXMgbm90IHNldAogIyBDT05GSUdfU0NTSV9JTU0gaXMgbm90IHNldAorIyBDT05GSUdfU0NTSV9NVlNBUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX1NURVggaXMgbm90IHNldAogQ09ORklHX1NDU0lfU1lNNTNDOFhYXzI9eQogQ09ORklHX1NDU0lfU1lNNTNDOFhYX0RNQV9BRERSRVNTSU5HX01PREU9MApAQCAtNjg1LDYgKzcxMSw3IEBACiAjIENPTkZJR19QQVRBX01QSUlYIGlzIG5vdCBzZXQKICMgQ09ORklHX1BBVEFfT0xEUElJWCBpcyBub3Qgc2V0CiAjIENPTkZJR19QQVRBX05FVENFTEwgaXMgbm90IHNldAorIyBDT05GSUdfUEFUQV9OSU5KQTMyIGlzIG5vdCBzZXQKICMgQ09ORklHX1BBVEFfTlM4NzQxMCBpcyBub3Qgc2V0CiAjIENPTkZJR19QQVRBX05TODc0MTUgaXMgbm90IHNldAogIyBDT05GSUdfUEFUQV9PUFRJIGlzIG5vdCBzZXQKQEAgLTY5OSw2ICs3MjYsNyBAQAogIyBDT05GSUdfUEFUQV9TSVMgaXMgbm90IHNldAogIyBDT05GSUdfUEFUQV9WSUEgaXMgbm90IHNldAogQ09ORklHX1BBVEFfV0lOQk9ORD15CisjIENPTkZJR19QQVRBX1BMQVRGT1JNIGlzIG5vdCBzZXQKIENPTkZJR19NRD15CiBDT05GSUdfQkxLX0RFVl9NRD15CiBDT05GSUdfTURfTElORUFSPXkKQEAgLTczNyw3ICs3NjUsNiBAQAogIyBDT05GSUdfRVFVQUxJWkVSIGlzIG5vdCBzZXQKIENPTkZJR19UVU49bQogIyBDT05GSUdfVkVUSCBpcyBub3Qgc2V0Ci0jIENPTkZJR19JUDEwMDAgaXMgbm90IHNldAogIyBDT05GSUdfQVJDTkVUIGlzIG5vdCBzZXQKICMgQ09ORklHX1BIWUxJQiBpcyBub3Qgc2V0CiBDT05GSUdfTkVUX0VUSEVSTkVUPXkKQEAgLTc2OSw2ICs3OTYsNyBAQAogIyBDT05GSUdfTkUyS19QQ0kgaXMgbm90IHNldAogIyBDT05GSUdfODEzOUNQIGlzIG5vdCBzZXQKICMgQ09ORklHXzgxMzlUT08gaXMgbm90IHNldAorIyBDT05GSUdfUjYwNDAgaXMgbm90IHNldAogIyBDT05GSUdfU0lTOTAwIGlzIG5vdCBzZXQKICMgQ09ORklHX0VQSUMxMDAgaXMgbm90IHNldAogIyBDT05GSUdfU1VOREFOQ0UgaXMgbm90IHNldApAQCAtNzgzLDYgKzgxMSw5IEBACiAjIENPTkZJR19FMTAwMF9OQVBJIGlzIG5vdCBzZXQKICMgQ09ORklHX0UxMDAwX0RJU0FCTEVfUEFDS0VUX1NQTElUIGlzIG5vdCBzZXQKICMgQ09ORklHX0UxMDAwRSBpcyBub3Qgc2V0CisjIENPTkZJR19FMTAwMEVfRU5BQkxFRCBpcyBub3Qgc2V0CisjIENPTkZJR19JUDEwMDAgaXMgbm90IHNldAorIyBDT05GSUdfSUdCIGlzIG5vdCBzZXQKICMgQ09ORklHX05TODM4MjAgaXMgbm90IHNldAogIyBDT05GSUdfSEFNQUNISSBpcyBub3Qgc2V0CiAjIENPTkZJR19ZRUxMT1dGSU4gaXMgbm90IHNldApAQCAtODExLDYgKzg0Miw3IEBACiAjIENPTkZJR19QQVNFTUlfTUFDIGlzIG5vdCBzZXQKICMgQ09ORklHX01MWDRfQ09SRSBpcyBub3Qgc2V0CiAjIENPTkZJR19URUhVVEkgaXMgbm90IHNldAorIyBDT05GSUdfQk5YMlggaXMgbm90IHNldAogQ09ORklHX1RSPXkKIENPTkZJR19JQk1PTD15CiAjIENPTkZJR18zQzM1OSBpcyBub3Qgc2V0CkBAIC04NDcsNyArODc5LDYgQEAKICMgQ09ORklHX1NMSVAgaXMgbm90IHNldAogQ09ORklHX1NMSEM9bQogIyBDT05GSUdfTkVUX0ZDIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NIQVBFUiBpcyBub3Qgc2V0CiBDT05GSUdfTkVUQ09OU09MRT15CiAjIENPTkZJR19ORVRDT05TT0xFX0RZTkFNSUMgaXMgbm90IHNldAogQ09ORklHX05FVFBPTEw9eQpAQCAtOTI3LDYgKzk1OCw3IEBACiBDT05GSUdfSFdfQ09OU09MRT15CiAjIENPTkZJR19WVF9IV19DT05TT0xFX0JJTkRJTkcgaXMgbm90IHNldAogIyBDT05GSUdfU0VSSUFMX05PTlNUQU5EQVJEIGlzIG5vdCBzZXQKKyMgQ09ORklHX05PWk9NSSBpcyBub3Qgc2V0CiAKICMKICMgU2VyaWFsIGRyaXZlcnMKQEAgLTk1MSw3ICs5ODMsNiBAQAogQ09ORklHX0xFR0FDWV9QVFlfQ09VTlQ9MjU2CiAjIENPTkZJR19QUklOVEVSIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQREVWIGlzIG5vdCBzZXQKLSMgQ09ORklHX1RJUEFSIGlzIG5vdCBzZXQKIENPTkZJR19IVkNfRFJJVkVSPXkKIENPTkZJR19IVkNfQ09OU09MRT15CiBDT05GSUdfSFZDX1JUQVM9eQpAQCAtMTAwOSwxMyArMTA0MCwxMiBAQAogIwogIyBNaXNjZWxsYW5lb3VzIEkyQyBDaGlwIHN1cHBvcnQKICMKLSMgQ09ORklHX1NFTlNPUlNfRFMxMzM3IGlzIG5vdCBzZXQKLSMgQ09ORklHX1NFTlNPUlNfRFMxMzc0IGlzIG5vdCBzZXQKICMgQ09ORklHX0RTMTY4MiBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0VFUFJPTSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1BDRjg1NzQgaXMgbm90IHNldAotIyBDT05GSUdfU0VOU09SU19QQ0E5NTM5IGlzIG5vdCBzZXQKKyMgQ09ORklHX1BDRjg1NzUgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19QQ0Y4NTkxIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RQUzY1MDEwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfTUFYNjg3NSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1RTTDI1NTAgaXMgbm90IHNldAogIyBDT05GSUdfSTJDX0RFQlVHX0NPUkUgaXMgbm90IHNldApAQCAtMTAzMSw2ICsxMDYxLDcgQEAKICMgQ09ORklHX1cxIGlzIG5vdCBzZXQKICMgQ09ORklHX1BPV0VSX1NVUFBMWSBpcyBub3Qgc2V0CiAjIENPTkZJR19IV01PTiBpcyBub3Qgc2V0CisjIENPTkZJR19USEVSTUFMIGlzIG5vdCBzZXQKICMgQ09ORklHX1dBVENIRE9HIGlzIG5vdCBzZXQKIAogIwpAQCAtMTE2Niw2ICsxMTk3LDcgQEAKIENPTkZJR19VU0JfQVJDSF9IQVNfRUhDST15CiBDT05GSUdfVVNCPXkKICMgQ09ORklHX1VTQl9ERUJVRyBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfQU5OT1VOQ0VfTkVXX0RFVklDRVMgaXMgbm90IHNldAogCiAjCiAjIE1pc2NlbGxhbmVvdXMgVVNCIG9wdGlvbnMKQEAgLTExNzksOSArMTIxMSw5IEBACiAjIFVTQiBIb3N0IENvbnRyb2xsZXIgRHJpdmVycwogIwogQ09ORklHX1VTQl9FSENJX0hDRD15Ci0jIENPTkZJR19VU0JfRUhDSV9TUExJVF9JU08gaXMgbm90IHNldAogIyBDT05GSUdfVVNCX0VIQ0lfUk9PVF9IVUJfVFQgaXMgbm90IHNldAogIyBDT05GSUdfVVNCX0VIQ0lfVFRfTkVXU0NIRUQgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX0VIQ0lfSENEX1BQQ19PRiBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfSVNQMTE2WF9IQ0QgaXMgbm90IHNldAogQ09ORklHX1VTQl9PSENJX0hDRD15CiAjIENPTkZJR19VU0JfT0hDSV9IQ0RfUFBDX09GIGlzIG5vdCBzZXQKQEAgLTEyMzAsMTAgKzEyNjIsNiBAQAogIyBVU0IgcG9ydCBkcml2ZXJzCiAjCiAjIENPTkZJR19VU0JfVVNTNzIwIGlzIG5vdCBzZXQKLQotIwotIyBVU0IgU2VyaWFsIENvbnZlcnRlciBzdXBwb3J0Ci0jCiAjIENPTkZJR19VU0JfU0VSSUFMIGlzIG5vdCBzZXQKIAogIwpAQCAtMTI1OSwxNiArMTI4Nyw5IEBACiAjIENPTkZJR19VU0JfVFJBTkNFVklCUkFUT1IgaXMgbm90IHNldAogIyBDT05GSUdfVVNCX0lPV0FSUklPUiBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfVEVTVCBpcyBub3Qgc2V0Ci0KLSMKLSMgVVNCIERTTCBtb2RlbSBzdXBwb3J0Ci0jCi0KLSMKLSMgVVNCIEdhZGdldCBTdXBwb3J0Ci0jCiAjIENPTkZJR19VU0JfR0FER0VUIGlzIG5vdCBzZXQKICMgQ09ORklHX01NQyBpcyBub3Qgc2V0CisjIENPTkZJR19NRU1TVElDSyBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVdfTEVEUyBpcyBub3Qgc2V0CiBDT05GSUdfSU5GSU5JQkFORD1tCiBDT05GSUdfSU5GSU5JQkFORF9VU0VSX01BRD1tCkBAIC0xMjgxLDYgKzEzMDIsNyBAQAogQ09ORklHX0lORklOSUJBTkRfRUhDQT1tCiAjIENPTkZJR19JTkZJTklCQU5EX0FNU08xMTAwIGlzIG5vdCBzZXQKICMgQ09ORklHX01MWDRfSU5GSU5JQkFORCBpcyBub3Qgc2V0CisjIENPTkZJR19JTkZJTklCQU5EX05FUyBpcyBub3Qgc2V0CiBDT05GSUdfSU5GSU5JQkFORF9JUE9JQj1tCiAjIENPTkZJR19JTkZJTklCQU5EX0lQT0lCX0NNIGlzIG5vdCBzZXQKIENPTkZJR19JTkZJTklCQU5EX0lQT0lCX0RFQlVHPXkKQEAgLTEyODksNiArMTMxMSw3IEBACiAjIENPTkZJR19JTkZJTklCQU5EX0lTRVIgaXMgbm90IHNldAogIyBDT05GSUdfRURBQyBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfQ0xBU1MgaXMgbm90IHNldAorIyBDT05GSUdfRE1BREVWSUNFUyBpcyBub3Qgc2V0CiAjIENPTkZJR19BVVhESVNQTEFZIGlzIG5vdCBzZXQKIAogIwpAQCAtMTMzNCwxMiArMTM1NywxMCBAQAogQ09ORklHX09DRlMyX0ZTPW0KIENPTkZJR19PQ0ZTMl9ERUJVR19NQVNLTE9HPXkKICMgQ09ORklHX09DRlMyX0RFQlVHX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX01JTklYX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1JPTUZTX0ZTIGlzIG5vdCBzZXQKK0NPTkZJR19ETk9USUZZPXkKIENPTkZJR19JTk9USUZZPXkKIENPTkZJR19JTk9USUZZX1VTRVI9eQogIyBDT05GSUdfUVVPVEEgaXMgbm90IHNldAotQ09ORklHX0ROT1RJRlk9eQogIyBDT05GSUdfQVVUT0ZTX0ZTIGlzIG5vdCBzZXQKIENPTkZJR19BVVRPRlM0X0ZTPW0KIENPTkZJR19GVVNFX0ZTPW0KQEAgLTEzODgsOCArMTQwOSwxMCBAQAogIyBDT05GSUdfRUZTX0ZTIGlzIG5vdCBzZXQKIENPTkZJR19DUkFNRlM9eQogIyBDT05GSUdfVlhGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19IUEZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1FOWDRGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TWVNWX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1VGU19GUyBpcyBub3Qgc2V0CiBDT05GSUdfTkVUV09SS19GSUxFU1lTVEVNUz15CkBAIC0xNDczLDcgKzE0OTYsNiBAQAogIyBDT05GSUdfTkxTX0tPSThfVSBpcyBub3Qgc2V0CiAjIENPTkZJR19OTFNfVVRGOCBpcyBub3Qgc2V0CiAjIENPTkZJR19ETE0gaXMgbm90IHNldAotIyBDT05GSUdfVUNDX1NMT1cgaXMgbm90IHNldAogCiAjCiAjIExpYnJhcnkgcm91dGluZXMKQEAgLTE0ODcsNiArMTUwOSw4IEBACiBDT05GSUdfTElCQ1JDMzJDPW0KIENPTkZJR19aTElCX0lORkxBVEU9eQogQ09ORklHX1pMSUJfREVGTEFURT1tCitDT05GSUdfTFpPX0NPTVBSRVNTPW0KK0NPTkZJR19MWk9fREVDT01QUkVTUz1tCiBDT05GSUdfVEVYVFNFQVJDSD15CiBDT05GSUdfVEVYVFNFQVJDSF9LTVA9bQogQ09ORklHX1RFWFRTRUFSQ0hfQk09bQpAQCAtMTQ5NSwxMSArMTUxOSw2IEBACiBDT05GSUdfSEFTX0lPTUVNPXkKIENPTkZJR19IQVNfSU9QT1JUPXkKIENPTkZJR19IQVNfRE1BPXkKLUNPTkZJR19JTlNUUlVNRU5UQVRJT049eQotQ09ORklHX1BST0ZJTElORz15Ci1DT05GSUdfT1BST0ZJTEU9eQotQ09ORklHX0tQUk9CRVM9eQotQ09ORklHX01BUktFUlM9eQogCiAjCiAjIEtlcm5lbCBoYWNraW5nCkBAIC0xNTE4LDYgKzE1MzcsNyBAQAogIyBDT05GSUdfU0NIRURTVEFUUyBpcyBub3Qgc2V0CiAjIENPTkZJR19USU1FUl9TVEFUUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TTFVCX0RFQlVHX09OIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NMVUJfU1RBVFMgaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfUlRfTVVURVhFUyBpcyBub3Qgc2V0CiAjIENPTkZJR19SVF9NVVRFWF9URVNURVIgaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfU1BJTkxPQ0sgaXMgbm90IHNldApAQCAtMTUzMCw5ICsxNTUwLDEwIEBACiAjIENPTkZJR19ERUJVR19WTSBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19MSVNUIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NHIGlzIG5vdCBzZXQKLUNPTkZJR19GT1JDRURfSU5MSU5JTkc9eQogIyBDT05GSUdfQk9PVF9QUklOVEtfREVMQVkgaXMgbm90IHNldAogIyBDT05GSUdfUkNVX1RPUlRVUkVfVEVTVCBpcyBub3Qgc2V0CisjIENPTkZJR19LUFJPQkVTX1NBTklUWV9URVNUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JBQ0tUUkFDRV9TRUxGX1RFU1QgaXMgbm90IHNldAogIyBDT05GSUdfTEtEVE0gaXMgbm90IHNldAogIyBDT05GSUdfRkFVTFRfSU5KRUNUSU9OIGlzIG5vdCBzZXQKICMgQ09ORklHX1NBTVBMRVMgaXMgbm90IHNldApAQCAtMTU1Nyw3ICsxNTc4LDkgQEAKICMgQ09ORklHX1NFQ1VSSVRZX0ZJTEVfQ0FQQUJJTElUSUVTIGlzIG5vdCBzZXQKIENPTkZJR19DUllQVE89eQogQ09ORklHX0NSWVBUT19BTEdBUEk9eQorQ09ORklHX0NSWVBUT19BRUFEPW0KIENPTkZJR19DUllQVE9fQkxLQ0lQSEVSPXkKK0NPTkZJR19DUllQVE9fU0VRSVY9bQogQ09ORklHX0NSWVBUT19IQVNIPXkKIENPTkZJR19DUllQVE9fTUFOQUdFUj15CiBDT05GSUdfQ1JZUFRPX0hNQUM9eQpAQCAtMTU3MCwxMiArMTU5MywxNSBAQAogQ09ORklHX0NSWVBUT19TSEE1MTI9bQogQ09ORklHX0NSWVBUT19XUDUxMj1tCiBDT05GSUdfQ1JZUFRPX1RHUjE5Mj1tCi0jIENPTkZJR19DUllQVE9fR0YxMjhNVUwgaXMgbm90IHNldAorQ09ORklHX0NSWVBUT19HRjEyOE1VTD1tCiBDT05GSUdfQ1JZUFRPX0VDQj1tCiBDT05GSUdfQ1JZUFRPX0NCQz15CiBDT05GSUdfQ1JZUFRPX1BDQkM9bQogIyBDT05GSUdfQ1JZUFRPX0xSVyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fWFRTIGlzIG5vdCBzZXQKK0NPTkZJR19DUllQVE9fQ1RSPW0KK0NPTkZJR19DUllQVE9fR0NNPW0KK0NPTkZJR19DUllQVE9fQ0NNPW0KICMgQ09ORklHX0NSWVBUT19DUllQVEQgaXMgbm90IHNldAogQ09ORklHX0NSWVBUT19ERVM9eQogIyBDT05GSUdfQ1JZUFRPX0ZDUllQVCBpcyBub3Qgc2V0CkBAIC0xNTkxLDExICsxNjE3LDEzIEBACiBDT05GSUdfQ1JZUFRPX0tIQVpBRD1tCiBDT05GSUdfQ1JZUFRPX0FOVUJJUz1tCiAjIENPTkZJR19DUllQVE9fU0VFRCBpcyBub3Qgc2V0CitDT05GSUdfQ1JZUFRPX1NBTFNBMjA9bQogQ09ORklHX0NSWVBUT19ERUZMQVRFPW0KIENPTkZJR19DUllQVE9fTUlDSEFFTF9NSUM9bQogQ09ORklHX0NSWVBUT19DUkMzMkM9bQogIyBDT05GSUdfQ1JZUFRPX0NBTUVMTElBIGlzIG5vdCBzZXQKIENPTkZJR19DUllQVE9fVEVTVD1tCi0jIENPTkZJR19DUllQVE9fQVVUSEVOQyBpcyBub3Qgc2V0CitDT05GSUdfQ1JZUFRPX0FVVEhFTkM9bQorQ09ORklHX0NSWVBUT19MWk89bQogIyBDT05GSUdfQ1JZUFRPX0hXIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19DTE9DSyBpcyBub3Qgc2V0CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvY29uZmlncy9zYmM4MzR4X2RlZmNvbmZpZyBiL2FyY2gvcG93ZXJwYy9jb25maWdzL3NiYzgzNHhfZGVmY29uZmlnCmluZGV4IDkyNDViY2MuLjFmMTUxODIgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jb25maWdzL3NiYzgzNHhfZGVmY29uZmlnCisrKyBiL2FyY2gvcG93ZXJwYy9jb25maWdzL3NiYzgzNHhfZGVmY29uZmlnCkBAIC0xLDcgKzEsNyBAQAogIwogIyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBtYWtlIGNvbmZpZzogZG9uJ3QgZWRpdAotIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjI0LXJjOAotIyBUaHUgSmFuIDI0IDE1OjU0OjI3IDIwMDgKKyMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4yNS1yYzYKKyMgTW9uIE1hciAyNCAwODo0ODozOCAyMDA4CiAjCiAjIENPTkZJR19QUEM2NCBpcyBub3Qgc2V0CiAKQEAgLTE0LDggKzE0LDggQEAKICMgQ09ORklHXzQweCBpcyBub3Qgc2V0CiAjIENPTkZJR180NHggaXMgbm90IHNldAogIyBDT05GSUdfRTIwMCBpcyBub3Qgc2V0Ci1DT05GSUdfODN4eD15CiBDT05GSUdfUFBDX0ZQVT15CisjIENPTkZJR19GU0xfRU1CX1BFUkZNT04gaXMgbm90IHNldAogQ09ORklHX1BQQ19TVERfTU1VPXkKIENPTkZJR19QUENfU1REX01NVV8zMj15CiAjIENPTkZJR19QUENfTU1fU0xJQ0VTIGlzIG5vdCBzZXQKQEAgLTI5LDYgKzI5LDcgQEAKIENPTkZJR19HRU5FUklDX1RJTUVfVlNZU0NBTEw9eQogQ09ORklHX0dFTkVSSUNfQ0xPQ0tFVkVOVFM9eQogQ09ORklHX0dFTkVSSUNfSEFSRElSUVM9eQorIyBDT05GSUdfSEFWRV9TRVRVUF9QRVJfQ1BVX0FSRUEgaXMgbm90IHNldAogQ09ORklHX0lSUV9QRVJfQ1BVPXkKIENPTkZJR19SV1NFTV9YQ0hHQUREX0FMR09SSVRITT15CiBDT05GSUdfQVJDSF9IQVNfSUxPRzJfVTMyPXkKQEAgLTY2LDE3ICs2NywxOSBAQAogIyBDT05GSUdfUE9TSVhfTVFVRVVFIGlzIG5vdCBzZXQKICMgQ09ORklHX0JTRF9QUk9DRVNTX0FDQ1QgaXMgbm90IHNldAogIyBDT05GSUdfVEFTS1NUQVRTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VTRVJfTlMgaXMgbm90IHNldAotIyBDT05GSUdfUElEX05TIGlzIG5vdCBzZXQKICMgQ09ORklHX0FVRElUIGlzIG5vdCBzZXQKICMgQ09ORklHX0lLQ09ORklHIGlzIG5vdCBzZXQKIENPTkZJR19MT0dfQlVGX1NISUZUPTE0CiAjIENPTkZJR19DR1JPVVBTIGlzIG5vdCBzZXQKK0NPTkZJR19HUk9VUF9TQ0hFRD15CiBDT05GSUdfRkFJUl9HUk9VUF9TQ0hFRD15Ci1DT05GSUdfRkFJUl9VU0VSX1NDSEVEPXkKLSMgQ09ORklHX0ZBSVJfQ0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JUX0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKK0NPTkZJR19VU0VSX1NDSEVEPXkKKyMgQ09ORklHX0NHUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CiBDT05GSUdfU1lTRlNfREVQUkVDQVRFRD15CitDT05GSUdfU1lTRlNfREVQUkVDQVRFRF9WMj15CiAjIENPTkZJR19SRUxBWSBpcyBub3Qgc2V0CisjIENPTkZJR19OQU1FU1BBQ0VTIGlzIG5vdCBzZXQKIENPTkZJR19CTEtfREVWX0lOSVRSRD15CiBDT05GSUdfSU5JVFJBTUZTX1NPVVJDRT0iIgogIyBDT05GSUdfQ0NfT1BUSU1JWkVfRk9SX1NJWkUgaXMgbm90IHNldApAQCAtODgsMTcgKzkxLDI1IEBACiBDT05GSUdfUFJJTlRLPXkKIENPTkZJR19CVUc9eQogQ09ORklHX0VMRl9DT1JFPXkKK0NPTkZJR19DT01QQVRfQlJLPXkKIENPTkZJR19CQVNFX0ZVTEw9eQogQ09ORklHX0ZVVEVYPXkKIENPTkZJR19BTk9OX0lOT0RFUz15CiAjIENPTkZJR19FUE9MTCBpcyBub3Qgc2V0CiBDT05GSUdfU0lHTkFMRkQ9eQorQ09ORklHX1RJTUVSRkQ9eQogQ09ORklHX0VWRU5URkQ9eQogQ09ORklHX1NITUVNPXkKIENPTkZJR19WTV9FVkVOVF9DT1VOVEVSUz15CiBDT05GSUdfU0xBQj15CiAjIENPTkZJR19TTFVCIGlzIG5vdCBzZXQKICMgQ09ORklHX1NMT0IgaXMgbm90IHNldAorIyBDT05GSUdfUFJPRklMSU5HIGlzIG5vdCBzZXQKKyMgQ09ORklHX01BUktFUlMgaXMgbm90IHNldAorQ09ORklHX0hBVkVfT1BST0ZJTEU9eQorQ09ORklHX0hBVkVfS1BST0JFUz15CitDT05GSUdfSEFWRV9LUkVUUFJPQkVTPXkKK0NPTkZJR19QUk9DX1BBR0VfTU9OSVRPUj15CiBDT05GSUdfU0xBQklORk89eQogQ09ORklHX1JUX01VVEVYRVM9eQogIyBDT05GSUdfVElOWV9TSE1FTSBpcyBub3Qgc2V0CkBAIC0xMjcsNiArMTM4LDcgQEAKICMgQ09ORklHX0RFRkFVTFRfQ0ZRIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFRkFVTFRfTk9PUCBpcyBub3Qgc2V0CiBDT05GSUdfREVGQVVMVF9JT1NDSEVEPSJhbnRpY2lwYXRvcnkiCitDT05GSUdfQ0xBU1NJQ19SQ1U9eQogCiAjCiAjIFBsYXRmb3JtIHN1cHBvcnQKQEAgLTEzNSwyMCArMTQ3LDIyIEBACiAjIENPTkZJR19QUENfODJ4eCBpcyBub3Qgc2V0CiBDT05GSUdfUFBDXzgzeHg9eQogIyBDT05GSUdfUFBDXzg2eHggaXMgbm90IHNldAotIyBDT05GSUdfUFBDX01QQzUyeHggaXMgbm90IHNldAotIyBDT05GSUdfUFBDX01QQzUyMDAgaXMgbm90IHNldAorIyBDT05GSUdfUFBDX01QQzUxMnggaXMgbm90IHNldAorIyBDT05GSUdfUFBDX01QQzUxMjEgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0NFTEwgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0NFTExfTkFUSVZFIGlzIG5vdCBzZXQKICMgQ09ORklHX1BRMkFEUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19NUEM4MzEzX1JEQiBpcyBub3Qgc2V0CitDT05GSUdfTVBDODN4eD15CisjIENPTkZJR19NUEM4MzF4X1JEQiBpcyBub3Qgc2V0CiAjIENPTkZJR19NUEM4MzJ4X01EUyBpcyBub3Qgc2V0CiAjIENPTkZJR19NUEM4MzJ4X1JEQiBpcyBub3Qgc2V0CiAjIENPTkZJR19NUEM4MzR4X01EUyBpcyBub3Qgc2V0CiAjIENPTkZJR19NUEM4MzR4X0lUWCBpcyBub3Qgc2V0CiAjIENPTkZJR19NUEM4MzZ4X01EUyBpcyBub3Qgc2V0CiAjIENPTkZJR19NUEM4Mzd4X01EUyBpcyBub3Qgc2V0CisjIENPTkZJR19NUEM4Mzd4X1JEQiBpcyBub3Qgc2V0CiBDT05GSUdfU0JDODM0eD15Ci1DT05GSUdfTVBDODM0eD15CitDT05GSUdfUFBDX01QQzgzNHg9eQogQ09ORklHX0lQSUM9eQogIyBDT05GSUdfTVBJQyBpcyBub3Qgc2V0CiAjIENPTkZJR19NUElDX1dFSVJEIGlzIG5vdCBzZXQKQEAgLTE3NSwxMiArMTg5LDE2IEBACiAjIENPTkZJR19IWl8zMDAgaXMgbm90IHNldAogIyBDT05GSUdfSFpfMTAwMCBpcyBub3Qgc2V0CiBDT05GSUdfSFo9MjUwCisjIENPTkZJR19TQ0hFRF9IUlRJQ0sgaXMgbm90IHNldAogQ09ORklHX1BSRUVNUFRfTk9ORT15CiAjIENPTkZJR19QUkVFTVBUX1ZPTFVOVEFSWSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUkVFTVBUIGlzIG5vdCBzZXQKIENPTkZJR19CSU5GTVRfRUxGPXkKICMgQ09ORklHX0JJTkZNVF9NSVNDIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lPTU1VX0hFTFBFUiBpcyBub3Qgc2V0CiBDT05GSUdfQVJDSF9FTkFCTEVfTUVNT1JZX0hPVFBMVUc9eQorQ09ORklHX0FSQ0hfSEFTX1dBTEtfTUVNT1JZPXkKK0NPTkZJR19BUkNIX0VOQUJMRV9NRU1PUllfSE9UUkVNT1ZFPXkKIENPTkZJR19BUkNIX0ZMQVRNRU1fRU5BQkxFPXkKIENPTkZJR19BUkNIX1BPUFVMQVRFU19OT0RFX01BUD15CiBDT05GSUdfU0VMRUNUX01FTU9SWV9NT0RFTD15CkBAIC0xOTksMTEgKzIxNyw3IEBACiBDT05GSUdfUFJPQ19ERVZJQ0VUUkVFPXkKICMgQ09ORklHX0NNRExJTkVfQk9PTCBpcyBub3Qgc2V0CiAjIENPTkZJR19QTSBpcyBub3Qgc2V0Ci1DT05GSUdfU1VTUEVORF9VUF9QT1NTSUJMRT15Ci1DT05GSUdfSElCRVJOQVRJT05fVVBfUE9TU0lCTEU9eQogQ09ORklHX1NFQ0NPTVA9eQotQ09ORklHX1dBTlRfREVWSUNFX1RSRUU9eQotQ09ORklHX0RFVklDRV9UUkVFPSIiCiBDT05GSUdfSVNBX0RNQV9BUEk9eQogCiAjCkBAIC0yNDgsNiArMjYyLDcgQEAKIENPTkZJR19YRlJNX1VTRVI9bQogIyBDT05GSUdfWEZSTV9TVUJfUE9MSUNZIGlzIG5vdCBzZXQKICMgQ09ORklHX1hGUk1fTUlHUkFURSBpcyBub3Qgc2V0CisjIENPTkZJR19YRlJNX1NUQVRJU1RJQ1MgaXMgbm90IHNldAogIyBDT05GSUdfTkVUX0tFWSBpcyBub3Qgc2V0CiBDT05GSUdfSU5FVD15CiBDT05GSUdfSVBfTVVMVElDQVNUPXkKQEAgLTMwMyw2ICszMTgsNyBAQAogIwogIyBDT05GSUdfTkVUX1BLVEdFTiBpcyBub3Qgc2V0CiAjIENPTkZJR19IQU1SQURJTyBpcyBub3Qgc2V0CisjIENPTkZJR19DQU4gaXMgbm90IHNldAogIyBDT05GSUdfSVJEQSBpcyBub3Qgc2V0CiAjIENPTkZJR19CVCBpcyBub3Qgc2V0CiAjIENPTkZJR19BRl9SWFJQQyBpcyBub3Qgc2V0CkBAIC0zNDIsMTEgKzM1OCwxMyBAQAogQ09ORklHX0JMS19ERVZfUkFNPXkKIENPTkZJR19CTEtfREVWX1JBTV9DT1VOVD0xNgogQ09ORklHX0JMS19ERVZfUkFNX1NJWkU9MzI3NjgKLUNPTkZJR19CTEtfREVWX1JBTV9CTE9DS1NJWkU9MTAyNAorIyBDT05GSUdfQkxLX0RFVl9YSVAgaXMgbm90IHNldAogIyBDT05GSUdfQ0RST01fUEtUQ0RWRCBpcyBub3Qgc2V0CiAjIENPTkZJR19BVEFfT1ZFUl9FVEggaXMgbm90IHNldAogQ09ORklHX01JU0NfREVWSUNFUz15CiAjIENPTkZJR19FRVBST01fOTNDWDYgaXMgbm90IHNldAorIyBDT05GSUdfRU5DTE9TVVJFX1NFUlZJQ0VTIGlzIG5vdCBzZXQKK0NPTkZJR19IQVZFX0lERT15CiAjIENPTkZJR19JREUgaXMgbm90IHNldAogCiAjCkBAIC0zODEsNiArMzk5LDcgQEAKICMgQ09ORklHX1NNU0NfUEhZIGlzIG5vdCBzZXQKIENPTkZJR19CUk9BRENPTV9QSFk9eQogIyBDT05GSUdfSUNQTFVTX1BIWSBpcyBub3Qgc2V0CisjIENPTkZJR19SRUFMVEVLX1BIWSBpcyBub3Qgc2V0CiAjIENPTkZJR19GSVhFRF9QSFkgaXMgbm90IHNldAogIyBDT05GSUdfTURJT19CSVRCQU5HIGlzIG5vdCBzZXQKIENPTkZJR19ORVRfRVRIRVJORVQ9eQpAQCAtMzkxLDYgKzQxMCw3IEBACiAjIENPTkZJR19JQk1fTkVXX0VNQUNfRU1BQzQgaXMgbm90IHNldAogIyBDT05GSUdfQjQ0IGlzIG5vdCBzZXQKIENPTkZJR19ORVRERVZfMTAwMD15CisjIENPTkZJR19FMTAwMEVfRU5BQkxFRCBpcyBub3Qgc2V0CiBDT05GSUdfR0lBTkZBUj15CiAjIENPTkZJR19HRkFSX05BUEkgaXMgbm90IHNldAogIyBDT05GSUdfTkVUREVWXzEwMDAwIGlzIG5vdCBzZXQKQEAgLTQwMyw3ICs0MjMsNiBAQAogIyBDT05GSUdfV0FOIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQUCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTElQIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NIQVBFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRDT05TT0xFIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVFBPTEwgaXMgbm90IHNldAogIyBDT05GSUdfTkVUX1BPTExfQ09OVFJPTExFUiBpcyBub3Qgc2V0CkBAIC00OTgsMTQgKzUxNywxMiBAQAogIwogIyBNaXNjZWxsYW5lb3VzIEkyQyBDaGlwIHN1cHBvcnQKICMKLSMgQ09ORklHX1NFTlNPUlNfRFMxMzM3IGlzIG5vdCBzZXQKLSMgQ09ORklHX1NFTlNPUlNfRFMxMzc0IGlzIG5vdCBzZXQKICMgQ09ORklHX0RTMTY4MiBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0VFUFJPTSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1BDRjg1NzQgaXMgbm90IHNldAotIyBDT05GSUdfU0VOU09SU19QQ0E5NTM5IGlzIG5vdCBzZXQKKyMgQ09ORklHX1BDRjg1NzUgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19QQ0Y4NTkxIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NFTlNPUlNfTTQxVDAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RQUzY1MDEwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfTUFYNjg3NSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1RTTDI1NTAgaXMgbm90IHNldAogIyBDT05GSUdfSTJDX0RFQlVHX0NPUkUgaXMgbm90IHNldApAQCAtNTMwLDYgKzU0Nyw3IEBACiAjIENPTkZJR19TRU5TT1JTX0FETTEwMzEgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19BRE05MjQwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfQURUNzQ3MCBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX0FEVDc0NzMgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19BVFhQMSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0RTMTYyMSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0Y3MTgwNUYgaXMgbm90IHNldApAQCAtNTU3LDYgKzU3NSw3IEBACiAjIENPTkZJR19TRU5TT1JTX1NNU0M0N00xIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfU01TQzQ3TTE5MiBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1NNU0M0N0IzOTcgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19BRFM3ODI4IGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVEhNQzUwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVlQxMjExIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVzgzNzgxRCBpcyBub3Qgc2V0CkBAIC01NjQsOSArNTgzLDExIEBACiAjIENPTkZJR19TRU5TT1JTX1c4Mzc5MkQgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19XODM3OTMgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19XODNMNzg1VFMgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19XODNMNzg2TkcgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19XODM2MjdIRiBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1c4MzYyN0VIRiBpcyBub3Qgc2V0CiAjIENPTkZJR19IV01PTl9ERUJVR19DSElQIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RIRVJNQUwgaXMgbm90IHNldAogQ09ORklHX1dBVENIRE9HPXkKICMgQ09ORklHX1dBVENIRE9HX05PV0FZT1VUIGlzIG5vdCBzZXQKIApAQCAtNjE3LDkgKzYzOCwxMSBAQAogIyBDT05GSUdfSElEUkFXIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9TVVBQT1JUIGlzIG5vdCBzZXQKICMgQ09ORklHX01NQyBpcyBub3Qgc2V0CisjIENPTkZJR19NRU1TVElDSyBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVdfTEVEUyBpcyBub3Qgc2V0CiAjIENPTkZJR19FREFDIGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19DTEFTUyBpcyBub3Qgc2V0CisjIENPTkZJR19ETUFERVZJQ0VTIGlzIG5vdCBzZXQKIAogIwogIyBVc2Vyc3BhY2UgSS9PCkBAIC02MzgsMTIgKzY2MSwxMCBAQAogIyBDT05GSUdfWEZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0dGUzJfRlMgaXMgbm90IHNldAogIyBDT05GSUdfT0NGUzJfRlMgaXMgbm90IHNldAotIyBDT05GSUdfTUlOSVhfRlMgaXMgbm90IHNldAotIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAorQ09ORklHX0ROT1RJRlk9eQogQ09ORklHX0lOT1RJRlk9eQogQ09ORklHX0lOT1RJRllfVVNFUj15CiAjIENPTkZJR19RVU9UQSBpcyBub3Qgc2V0Ci1DT05GSUdfRE5PVElGWT15CiAjIENPTkZJR19BVVRPRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfQVVUT0ZTNF9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19GVVNFX0ZTIGlzIG5vdCBzZXQKQEAgLTY4NSw4ICs3MDYsMTAgQEAKICMgQ09ORklHX0VGU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUkFNRlMgaXMgbm90IHNldAogIyBDT05GSUdfVlhGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19IUEZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1FOWDRGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TWVNWX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1VGU19GUyBpcyBub3Qgc2V0CiBDT05GSUdfTkVUV09SS19GSUxFU1lTVEVNUz15CkBAIC03MzMsNyArNzU2LDYgQEAKIENPTkZJR19IQVNfSU9NRU09eQogQ09ORklHX0hBU19JT1BPUlQ9eQogQ09ORklHX0hBU19ETUE9eQotIyBDT05GSUdfSU5TVFJVTUVOVEFUSU9OIGlzIG5vdCBzZXQKIAogIwogIyBLZXJuZWwgaGFja2luZwpAQCAtNzU5LDYgKzc4MSw3IEBACiBDT05GSUdfQ1JZUFRPPXkKIENPTkZJR19DUllQVE9fQUxHQVBJPXkKIENPTkZJR19DUllQVE9fQkxLQ0lQSEVSPXkKKyMgQ09ORklHX0NSWVBUT19TRVFJViBpcyBub3Qgc2V0CiBDT05GSUdfQ1JZUFRPX01BTkFHRVI9eQogIyBDT05GSUdfQ1JZUFRPX0hNQUMgaXMgbm90IHNldAogIyBDT05GSUdfQ1JZUFRPX1hDQkMgaXMgbm90IHNldApAQCAtNzc2LDYgKzc5OSw5IEBACiBDT05GSUdfQ1JZUFRPX1BDQkM9bQogIyBDT05GSUdfQ1JZUFRPX0xSVyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fWFRTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DVFIgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0dDTSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ0NNIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19DUllQVEQgaXMgbm90IHNldAogQ09ORklHX0NSWVBUT19ERVM9eQogIyBDT05GSUdfQ1JZUFRPX0ZDUllQVCBpcyBub3Qgc2V0CkBAIC03OTAsMTEgKzgxNiwxMyBAQAogIyBDT05GSUdfQ1JZUFRPX0tIQVpBRCBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fQU5VQklTIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19TRUVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19TQUxTQTIwIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19ERUZMQVRFIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19NSUNIQUVMX01JQyBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fQ1JDMzJDIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19DQU1FTExJQSBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fVEVTVCBpcyBub3Qgc2V0CiAjIENPTkZJR19DUllQVE9fQVVUSEVOQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fTFpPIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSWVBUT19IVyBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfQ0xPQ0sgaXMgbm90IHNldApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2NvbmZpZ3Mvc2JjODU0OF9kZWZjb25maWcgYi9hcmNoL3Bvd2VycGMvY29uZmlncy9zYmM4NTQ4X2RlZmNvbmZpZwppbmRleCAzYjdmYTUzLi42N2Y2Nzk3IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvY29uZmlncy9zYmM4NTQ4X2RlZmNvbmZpZworKysgYi9hcmNoL3Bvd2VycGMvY29uZmlncy9zYmM4NTQ4X2RlZmNvbmZpZwpAQCAtMSw3ICsxLDcgQEAKICMKICMgQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgbWFrZSBjb25maWc6IGRvbid0IGVkaXQKLSMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4yNC1yYzgKLSMgVGh1IEphbiAyNCAxNToxOToxMiAyMDA4CisjIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMjUtcmM2CisjIE1vbiBNYXIgMjQgMDg6NDg6MzkgMjAwOAogIwogIyBDT05GSUdfUFBDNjQgaXMgbm90IHNldAogCkBAIC0xNCwxMCArMTQsMTAgQEAKICMgQ09ORklHXzQweCBpcyBub3Qgc2V0CiAjIENPTkZJR180NHggaXMgbm90IHNldAogIyBDT05GSUdfRTIwMCBpcyBub3Qgc2V0Ci1DT05GSUdfODV4eD15CiBDT05GSUdfRTUwMD15CiBDT05GSUdfQk9PS0U9eQogQ09ORklHX0ZTTF9CT09LRT15CitDT05GSUdfRlNMX0VNQl9QRVJGTU9OPXkKICMgQ09ORklHX1BIWVNfNjRCSVQgaXMgbm90IHNldAogQ09ORklHX1NQRT15CiAjIENPTkZJR19QUENfTU1fU0xJQ0VTIGlzIG5vdCBzZXQKQEAgLTMwLDYgKzMwLDcgQEAKIENPTkZJR19HRU5FUklDX1RJTUVfVlNZU0NBTEw9eQogQ09ORklHX0dFTkVSSUNfQ0xPQ0tFVkVOVFM9eQogQ09ORklHX0dFTkVSSUNfSEFSRElSUVM9eQorIyBDT05GSUdfSEFWRV9TRVRVUF9QRVJfQ1BVX0FSRUEgaXMgbm90IHNldAogQ09ORklHX0lSUV9QRVJfQ1BVPXkKIENPTkZJR19SV1NFTV9YQ0hHQUREX0FMR09SSVRITT15CiBDT05GSUdfQVJDSF9IQVNfSUxPRzJfVTMyPXkKQEAgLTY3LDE3ICs2OCwxOSBAQAogIyBDT05GSUdfUE9TSVhfTVFVRVVFIGlzIG5vdCBzZXQKICMgQ09ORklHX0JTRF9QUk9DRVNTX0FDQ1QgaXMgbm90IHNldAogIyBDT05GSUdfVEFTS1NUQVRTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VTRVJfTlMgaXMgbm90IHNldAotIyBDT05GSUdfUElEX05TIGlzIG5vdCBzZXQKICMgQ09ORklHX0FVRElUIGlzIG5vdCBzZXQKICMgQ09ORklHX0lLQ09ORklHIGlzIG5vdCBzZXQKIENPTkZJR19MT0dfQlVGX1NISUZUPTE0CiAjIENPTkZJR19DR1JPVVBTIGlzIG5vdCBzZXQKK0NPTkZJR19HUk9VUF9TQ0hFRD15CiBDT05GSUdfRkFJUl9HUk9VUF9TQ0hFRD15Ci1DT05GSUdfRkFJUl9VU0VSX1NDSEVEPXkKLSMgQ09ORklHX0ZBSVJfQ0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JUX0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKK0NPTkZJR19VU0VSX1NDSEVEPXkKKyMgQ09ORklHX0NHUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CiBDT05GSUdfU1lTRlNfREVQUkVDQVRFRD15CitDT05GSUdfU1lTRlNfREVQUkVDQVRFRF9WMj15CiAjIENPTkZJR19SRUxBWSBpcyBub3Qgc2V0CisjIENPTkZJR19OQU1FU1BBQ0VTIGlzIG5vdCBzZXQKIENPTkZJR19CTEtfREVWX0lOSVRSRD15CiBDT05GSUdfSU5JVFJBTUZTX1NPVVJDRT0iIgogIyBDT05GSUdfQ0NfT1BUSU1JWkVfRk9SX1NJWkUgaXMgbm90IHNldApAQCAtOTAsMTcgKzkzLDI1IEBACiBDT05GSUdfUFJJTlRLPXkKIENPTkZJR19CVUc9eQogQ09ORklHX0VMRl9DT1JFPXkKK0NPTkZJR19DT01QQVRfQlJLPXkKIENPTkZJR19CQVNFX0ZVTEw9eQogQ09ORklHX0ZVVEVYPXkKIENPTkZJR19BTk9OX0lOT0RFUz15CiBDT05GSUdfRVBPTEw9eQogQ09ORklHX1NJR05BTEZEPXkKK0NPTkZJR19USU1FUkZEPXkKIENPTkZJR19FVkVOVEZEPXkKIENPTkZJR19TSE1FTT15CiBDT05GSUdfVk1fRVZFTlRfQ09VTlRFUlM9eQogQ09ORklHX1NMQUI9eQogIyBDT05GSUdfU0xVQiBpcyBub3Qgc2V0CiAjIENPTkZJR19TTE9CIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BST0ZJTElORyBpcyBub3Qgc2V0CisjIENPTkZJR19NQVJLRVJTIGlzIG5vdCBzZXQKK0NPTkZJR19IQVZFX09QUk9GSUxFPXkKK0NPTkZJR19IQVZFX0tQUk9CRVM9eQorQ09ORklHX0hBVkVfS1JFVFBST0JFUz15CitDT05GSUdfUFJPQ19QQUdFX01PTklUT1I9eQogQ09ORklHX1NMQUJJTkZPPXkKIENPTkZJR19SVF9NVVRFWEVTPXkKICMgQ09ORklHX1RJTllfU0hNRU0gaXMgbm90IHNldApAQCAtMTI0LDI0ICsxMzUsMjkgQEAKICMgQ09ORklHX0RFRkFVTFRfQ0ZRIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFRkFVTFRfTk9PUCBpcyBub3Qgc2V0CiBDT05GSUdfREVGQVVMVF9JT1NDSEVEPSJhbnRpY2lwYXRvcnkiCitDT05GSUdfQ0xBU1NJQ19SQ1U9eQogCiAjCiAjIFBsYXRmb3JtIHN1cHBvcnQKICMKLSMgQ09ORklHX1BQQ19NUEM1Mnh4IGlzIG5vdCBzZXQKLSMgQ09ORklHX1BQQ19NUEM1MjAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ19NUEM1MTJ4IGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ19NUEM1MTIxIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19DRUxMIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19DRUxMX05BVElWRSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUTJBRFMgaXMgbm90IHNldAorQ09ORklHX01QQzg1eHg9eQogIyBDT05GSUdfTVBDODU0MF9BRFMgaXMgbm90IHNldAogIyBDT05GSUdfTVBDODU2MF9BRFMgaXMgbm90IHNldAogIyBDT05GSUdfTVBDODV4eF9DRFMgaXMgbm90IHNldAogIyBDT05GSUdfTVBDODV4eF9NRFMgaXMgbm90IHNldAogIyBDT05GSUdfTVBDODV4eF9EUyBpcyBub3Qgc2V0CisjIENPTkZJR19TVFhfR1AzIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RRTTg1NDAgaXMgbm90IHNldAorIyBDT05GSUdfVFFNODU0MSBpcyBub3Qgc2V0CisjIENPTkZJR19UUU04NTU1IGlzIG5vdCBzZXQKKyMgQ09ORklHX1RRTTg1NjAgaXMgbm90IHNldAogQ09ORklHX1NCQzg1NDg9eQogIyBDT05GSUdfU0JDODU2MCBpcyBub3Qgc2V0Ci1DT05GSUdfTVBDODU0MD15Ci1DT05GSUdfTVBDODV4eD15CiAjIENPTkZJR19JUElDIGlzIG5vdCBzZXQKIENPTkZJR19NUElDPXkKICMgQ09ORklHX01QSUNfV0VJUkQgaXMgbm90IHNldApAQCAtMTUzLDYgKzE2OSw3IEBACiAjIENPTkZJR19QUENfSU5ESVJFQ1RfSU8gaXMgbm90IHNldAogIyBDT05GSUdfR0VORVJJQ19JT01BUCBpcyBub3Qgc2V0CiAjIENPTkZJR19DUFVfRlJFUSBpcyBub3Qgc2V0CisjIENPTkZJR19DUE0yIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZTTF9VTEkxNTc1IGlzIG5vdCBzZXQKIAogIwpAQCAtMTY4LDEzICsxODUsMTcgQEAKICMgQ09ORklHX0haXzMwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19IWl8xMDAwIGlzIG5vdCBzZXQKIENPTkZJR19IWj0yNTAKKyMgQ09ORklHX1NDSEVEX0hSVElDSyBpcyBub3Qgc2V0CiBDT05GSUdfUFJFRU1QVF9OT05FPXkKICMgQ09ORklHX1BSRUVNUFRfVk9MVU5UQVJZIGlzIG5vdCBzZXQKICMgQ09ORklHX1BSRUVNUFQgaXMgbm90IHNldAogQ09ORklHX0JJTkZNVF9FTEY9eQogQ09ORklHX0JJTkZNVF9NSVNDPXkKIENPTkZJR19NQVRIX0VNVUxBVElPTj15CisjIENPTkZJR19JT01NVV9IRUxQRVIgaXMgbm90IHNldAogQ09ORklHX0FSQ0hfRU5BQkxFX01FTU9SWV9IT1RQTFVHPXkKK0NPTkZJR19BUkNIX0hBU19XQUxLX01FTU9SWT15CitDT05GSUdfQVJDSF9FTkFCTEVfTUVNT1JZX0hPVFJFTU9WRT15CiBDT05GSUdfQVJDSF9GTEFUTUVNX0VOQUJMRT15CiBDT05GSUdfQVJDSF9QT1BVTEFURVNfTk9ERV9NQVA9eQogQ09ORklHX1NFTEVDVF9NRU1PUllfTU9ERUw9eQpAQCAtMTkzLDExICsyMTQsNyBAQAogQ09ORklHX1BST0NfREVWSUNFVFJFRT15CiAjIENPTkZJR19DTURMSU5FX0JPT0wgaXMgbm90IHNldAogIyBDT05GSUdfUE0gaXMgbm90IHNldAotQ09ORklHX1NVU1BFTkRfVVBfUE9TU0lCTEU9eQotQ09ORklHX0hJQkVSTkFUSU9OX1VQX1BPU1NJQkxFPXkKICMgQ09ORklHX1NFQ0NPTVAgaXMgbm90IHNldAotQ09ORklHX1dBTlRfREVWSUNFX1RSRUU9eQotQ09ORklHX0RFVklDRV9UUkVFPSIiCiBDT05GSUdfSVNBX0RNQV9BUEk9eQogCiAjCkBAIC0yNDYsNiArMjYzLDcgQEAKIENPTkZJR19YRlJNX1VTRVI9eQogIyBDT05GSUdfWEZSTV9TVUJfUE9MSUNZIGlzIG5vdCBzZXQKICMgQ09ORklHX1hGUk1fTUlHUkFURSBpcyBub3Qgc2V0CisjIENPTkZJR19YRlJNX1NUQVRJU1RJQ1MgaXMgbm90IHNldAogIyBDT05GSUdfTkVUX0tFWSBpcyBub3Qgc2V0CiBDT05GSUdfSU5FVD15CiBDT05GSUdfSVBfTVVMVElDQVNUPXkKQEAgLTMwMSw2ICszMTksNyBAQAogIwogIyBDT05GSUdfTkVUX1BLVEdFTiBpcyBub3Qgc2V0CiAjIENPTkZJR19IQU1SQURJTyBpcyBub3Qgc2V0CisjIENPTkZJR19DQU4gaXMgbm90IHNldAogIyBDT05GSUdfSVJEQSBpcyBub3Qgc2V0CiAjIENPTkZJR19CVCBpcyBub3Qgc2V0CiAjIENPTkZJR19BRl9SWFJQQyBpcyBub3Qgc2V0CkBAIC0zNDUsNyArMzY0LDcgQEAKIENPTkZJR19CTEtfREVWX1JBTT15CiBDT05GSUdfQkxLX0RFVl9SQU1fQ09VTlQ9MTYKIENPTkZJR19CTEtfREVWX1JBTV9TSVpFPTQwOTYKLUNPTkZJR19CTEtfREVWX1JBTV9CTE9DS1NJWkU9MTAyNAorIyBDT05GSUdfQkxLX0RFVl9YSVAgaXMgbm90IHNldAogIyBDT05GSUdfQ0RST01fUEtUQ0RWRCBpcyBub3Qgc2V0CiAjIENPTkZJR19BVEFfT1ZFUl9FVEggaXMgbm90IHNldAogQ09ORklHX01JU0NfREVWSUNFUz15CkBAIC0zNTMsNiArMzcyLDggQEAKICMgQ09ORklHX0VFUFJPTV85M0NYNiBpcyBub3Qgc2V0CiAjIENPTkZJR19TR0lfSU9DNCBpcyBub3Qgc2V0CiAjIENPTkZJR19USUZNX0NPUkUgaXMgbm90IHNldAorIyBDT05GSUdfRU5DTE9TVVJFX1NFUlZJQ0VTIGlzIG5vdCBzZXQKK0NPTkZJR19IQVZFX0lERT15CiAjIENPTkZJR19JREUgaXMgbm90IHNldAogCiAjCkBAIC0zOTYsNiArNDE3LDcgQEAKICMgQ09ORklHX1NNU0NfUEhZIGlzIG5vdCBzZXQKIENPTkZJR19CUk9BRENPTV9QSFk9eQogIyBDT05GSUdfSUNQTFVTX1BIWSBpcyBub3Qgc2V0CisjIENPTkZJR19SRUFMVEVLX1BIWSBpcyBub3Qgc2V0CiAjIENPTkZJR19GSVhFRF9QSFkgaXMgbm90IHNldAogIyBDT05GSUdfTURJT19CSVRCQU5HIGlzIG5vdCBzZXQKIENPTkZJR19ORVRfRVRIRVJORVQ9eQpAQCAtNDE3LDcgKzQzOSw5IEBACiAjIENPTkZJR19ETDJLIGlzIG5vdCBzZXQKICMgQ09ORklHX0UxMDAwIGlzIG5vdCBzZXQKICMgQ09ORklHX0UxMDAwRSBpcyBub3Qgc2V0CisjIENPTkZJR19FMTAwMEVfRU5BQkxFRCBpcyBub3Qgc2V0CiAjIENPTkZJR19JUDEwMDAgaXMgbm90IHNldAorIyBDT05GSUdfSUdCIGlzIG5vdCBzZXQKICMgQ09ORklHX05TODM4MjAgaXMgbm90IHNldAogIyBDT05GSUdfSEFNQUNISSBpcyBub3Qgc2V0CiAjIENPTkZJR19ZRUxMT1dGSU4gaXMgbm90IHNldApAQCAtNDQ0LDYgKzQ2OCw3IEBACiAjIENPTkZJR19OSVUgaXMgbm90IHNldAogIyBDT05GSUdfTUxYNF9DT1JFIGlzIG5vdCBzZXQKICMgQ09ORklHX1RFSFVUSSBpcyBub3Qgc2V0CisjIENPTkZJR19CTlgyWCBpcyBub3Qgc2V0CiAjIENPTkZJR19UUiBpcyBub3Qgc2V0CiAKICMKQEAgLTQ1Niw3ICs0ODEsNiBAQAogIyBDT05GSUdfSElQUEkgaXMgbm90IHNldAogIyBDT05GSUdfUFBQIGlzIG5vdCBzZXQKICMgQ09ORklHX1NMSVAgaXMgbm90IHNldAotIyBDT05GSUdfU0hBUEVSIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVENPTlNPTEUgaXMgbm90IHNldAogIyBDT05GSUdfTkVUUE9MTCBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRfUE9MTF9DT05UUk9MTEVSIGlzIG5vdCBzZXQKQEAgLTQ5OSw2ICs1MjMsNyBAQAogIwogIyBDT05GSUdfVlQgaXMgbm90IHNldAogIyBDT05GSUdfU0VSSUFMX05PTlNUQU5EQVJEIGlzIG5vdCBzZXQKKyMgQ09ORklHX05PWk9NSSBpcyBub3Qgc2V0CiAKICMKICMgU2VyaWFsIGRyaXZlcnMKQEAgLTU1OCw2ICs1ODMsNyBAQAogIyBDT05GSUdfU0VOU09SU19XODM2MjdIRiBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1c4MzYyN0VIRiBpcyBub3Qgc2V0CiAjIENPTkZJR19IV01PTl9ERUJVR19DSElQIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RIRVJNQUwgaXMgbm90IHNldAogIyBDT05GSUdfV0FUQ0hET0cgaXMgbm90IHNldAogCiAjCkBAIC02MDAsMTAgKzYyNiwxMiBAQAogIyBDT05GSUdfSElEX1NVUFBPUlQgaXMgbm90IHNldAogIyBDT05GSUdfVVNCX1NVUFBPUlQgaXMgbm90IHNldAogIyBDT05GSUdfTU1DIGlzIG5vdCBzZXQKKyMgQ09ORklHX01FTVNUSUNLIGlzIG5vdCBzZXQKICMgQ09ORklHX05FV19MRURTIGlzIG5vdCBzZXQKICMgQ09ORklHX0lORklOSUJBTkQgaXMgbm90IHNldAogIyBDT05GSUdfRURBQyBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfQ0xBU1MgaXMgbm90IHNldAorIyBDT05GSUdfRE1BREVWSUNFUyBpcyBub3Qgc2V0CiAKICMKICMgVXNlcnNwYWNlIEkvTwpAQCAtNjIyLDEyICs2NTAsMTAgQEAKICMgQ09ORklHX1hGU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19HRlMyX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX09DRlMyX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX01JTklYX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1JPTUZTX0ZTIGlzIG5vdCBzZXQKK0NPTkZJR19ETk9USUZZPXkKIENPTkZJR19JTk9USUZZPXkKIENPTkZJR19JTk9USUZZX1VTRVI9eQogIyBDT05GSUdfUVVPVEEgaXMgbm90IHNldAotQ09ORklHX0ROT1RJRlk9eQogIyBDT05GSUdfQVVUT0ZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0FVVE9GUzRfRlMgaXMgbm90IHNldAogIyBDT05GSUdfRlVTRV9GUyBpcyBub3Qgc2V0CkBAIC02NjksOCArNjk1LDEwIEBACiAjIENPTkZJR19FRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfQ1JBTUZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1ZYRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfTUlOSVhfRlMgaXMgbm90IHNldAogIyBDT05GSUdfSFBGU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19RTlg0RlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfU1lTVl9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19VRlNfRlMgaXMgbm90IHNldAogQ09ORklHX05FVFdPUktfRklMRVNZU1RFTVM9eQpAQCAtNzE0LDcgKzc0Miw2IEBACiBDT05GSUdfSEFTX0lPTUVNPXkKIENPTkZJR19IQVNfSU9QT1JUPXkKIENPTkZJR19IQVNfRE1BPXkKLSMgQ09ORklHX0lOU1RSVU1FTlRBVElPTiBpcyBub3Qgc2V0CiAKICMKICMgS2VybmVsIGhhY2tpbmcKQEAgLTczNyw1ICs3NjQsNDkgQEAKICMgQ09ORklHX0tFWVMgaXMgbm90IHNldAogIyBDT05GSUdfU0VDVVJJVFkgaXMgbm90IHNldAogIyBDT05GSUdfU0VDVVJJVFlfRklMRV9DQVBBQklMSVRJRVMgaXMgbm90IHNldAotIyBDT05GSUdfQ1JZUFRPIGlzIG5vdCBzZXQKK0NPTkZJR19DUllQVE89eQorIyBDT05GSUdfQ1JZUFRPX1NFUUlWIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19NQU5BR0VSIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19ITUFDIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19YQ0JDIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19OVUxMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19NRDQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX01ENSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0hBMSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0hBMjU2IGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19TSEE1MTIgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1dQNTEyIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19UR1IxOTIgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0dGMTI4TVVMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19FQ0IgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NCQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fUENCQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fTFJXIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19YVFMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NUUiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fR0NNIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DQ00gaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NSWVBURCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fREVTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19GQ1JZUFQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0JMT1dGSVNIIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19UV09GSVNIIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19TRVJQRU5UIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19BRVMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NBU1Q1IGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DQVNUNiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fVEVBIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19BUkM0IGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19LSEFaQUQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0FOVUJJUyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0VFRCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0FMU0EyMCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fREVGTEFURSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fTUlDSEFFTF9NSUMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NSQzMyQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ0FNRUxMSUEgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0FVVEhFTkMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0xaTyBpcyBub3Qgc2V0CitDT05GSUdfQ1JZUFRPX0hXPXkKKyMgQ09ORklHX0NSWVBUT19ERVZfSElGTl83OTVYIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19DTE9DSyBpcyBub3Qgc2V0CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvY29uZmlncy9zYmM4NTYwX2RlZmNvbmZpZyBiL2FyY2gvcG93ZXJwYy9jb25maWdzL3NiYzg1NjBfZGVmY29uZmlnCmluZGV4IGQ4OWZjZTAuLmZlZjYwNTUgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jb25maWdzL3NiYzg1NjBfZGVmY29uZmlnCisrKyBiL2FyY2gvcG93ZXJwYy9jb25maWdzL3NiYzg1NjBfZGVmY29uZmlnCkBAIC0xLDcgKzEsNyBAQAogIwogIyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBtYWtlIGNvbmZpZzogZG9uJ3QgZWRpdAotIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjI0LXJjNAotIyBXZWQgSmFuIDIzIDE0OjU5OjIwIDIwMDgKKyMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4yNS1yYzYKKyMgTW9uIE1hciAyNCAwODo0ODozOSAyMDA4CiAjCiAjIENPTkZJR19QUEM2NCBpcyBub3Qgc2V0CiAKQEAgLTE0LDEwICsxNCwxMCBAQAogIyBDT05GSUdfNDB4IGlzIG5vdCBzZXQKICMgQ09ORklHXzQ0eCBpcyBub3Qgc2V0CiAjIENPTkZJR19FMjAwIGlzIG5vdCBzZXQKLUNPTkZJR184NXh4PXkKIENPTkZJR19FNTAwPXkKIENPTkZJR19CT09LRT15CiBDT05GSUdfRlNMX0JPT0tFPXkKK0NPTkZJR19GU0xfRU1CX1BFUkZNT049eQogIyBDT05GSUdfUEhZU182NEJJVCBpcyBub3Qgc2V0CiBDT05GSUdfU1BFPXkKICMgQ09ORklHX1BQQ19NTV9TTElDRVMgaXMgbm90IHNldApAQCAtMzAsNiArMzAsNyBAQAogQ09ORklHX0dFTkVSSUNfVElNRV9WU1lTQ0FMTD15CiBDT05GSUdfR0VORVJJQ19DTE9DS0VWRU5UUz15CiBDT05GSUdfR0VORVJJQ19IQVJESVJRUz15CisjIENPTkZJR19IQVZFX1NFVFVQX1BFUl9DUFVfQVJFQSBpcyBub3Qgc2V0CiBDT05GSUdfSVJRX1BFUl9DUFU9eQogQ09ORklHX1JXU0VNX1hDSEdBRERfQUxHT1JJVEhNPXkKIENPTkZJR19BUkNIX0hBU19JTE9HMl9VMzI9eQpAQCAtNjcsMTcgKzY4LDE5IEBACiAjIENPTkZJR19QT1NJWF9NUVVFVUUgaXMgbm90IHNldAogIyBDT05GSUdfQlNEX1BST0NFU1NfQUNDVCBpcyBub3Qgc2V0CiAjIENPTkZJR19UQVNLU1RBVFMgaXMgbm90IHNldAotIyBDT05GSUdfVVNFUl9OUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19QSURfTlMgaXMgbm90IHNldAogIyBDT05GSUdfQVVESVQgaXMgbm90IHNldAogIyBDT05GSUdfSUtDT05GSUcgaXMgbm90IHNldAogQ09ORklHX0xPR19CVUZfU0hJRlQ9MTQKICMgQ09ORklHX0NHUk9VUFMgaXMgbm90IHNldAorQ09ORklHX0dST1VQX1NDSEVEPXkKIENPTkZJR19GQUlSX0dST1VQX1NDSEVEPXkKLUNPTkZJR19GQUlSX1VTRVJfU0NIRUQ9eQotIyBDT05GSUdfRkFJUl9DR1JPVVBfU0NIRUQgaXMgbm90IHNldAorIyBDT05GSUdfUlRfR1JPVVBfU0NIRUQgaXMgbm90IHNldAorQ09ORklHX1VTRVJfU0NIRUQ9eQorIyBDT05GSUdfQ0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKIENPTkZJR19TWVNGU19ERVBSRUNBVEVEPXkKK0NPTkZJR19TWVNGU19ERVBSRUNBVEVEX1YyPXkKICMgQ09ORklHX1JFTEFZIGlzIG5vdCBzZXQKKyMgQ09ORklHX05BTUVTUEFDRVMgaXMgbm90IHNldAogQ09ORklHX0JMS19ERVZfSU5JVFJEPXkKIENPTkZJR19JTklUUkFNRlNfU09VUkNFPSIiCiAjIENPTkZJR19DQ19PUFRJTUlaRV9GT1JfU0laRSBpcyBub3Qgc2V0CkBAIC05MSwxNyArOTQsMjYgQEAKIENPTkZJR19QUklOVEs9eQogQ09ORklHX0JVRz15CiBDT05GSUdfRUxGX0NPUkU9eQorQ09ORklHX0NPTVBBVF9CUks9eQogQ09ORklHX0JBU0VfRlVMTD15CiBDT05GSUdfRlVURVg9eQogQ09ORklHX0FOT05fSU5PREVTPXkKIENPTkZJR19FUE9MTD15CiBDT05GSUdfU0lHTkFMRkQ9eQorQ09ORklHX1RJTUVSRkQ9eQogQ09ORklHX0VWRU5URkQ9eQogQ09ORklHX1NITUVNPXkKIENPTkZJR19WTV9FVkVOVF9DT1VOVEVSUz15CiBDT05GSUdfU0xBQj15CiAjIENPTkZJR19TTFVCIGlzIG5vdCBzZXQKICMgQ09ORklHX1NMT0IgaXMgbm90IHNldAorIyBDT05GSUdfUFJPRklMSU5HIGlzIG5vdCBzZXQKKyMgQ09ORklHX01BUktFUlMgaXMgbm90IHNldAorQ09ORklHX0hBVkVfT1BST0ZJTEU9eQorQ09ORklHX0hBVkVfS1BST0JFUz15CitDT05GSUdfSEFWRV9LUkVUUFJPQkVTPXkKK0NPTkZJR19QUk9DX1BBR0VfTU9OSVRPUj15CitDT05GSUdfU0xBQklORk89eQogQ09ORklHX1JUX01VVEVYRVM9eQogIyBDT05GSUdfVElOWV9TSE1FTSBpcyBub3Qgc2V0CiBDT05GSUdfQkFTRV9TTUFMTD0wCkBAIC0xMjQsMjMgKzEzNiwzMCBAQAogIyBDT05GSUdfREVGQVVMVF9DRlEgaXMgbm90IHNldAogIyBDT05GSUdfREVGQVVMVF9OT09QIGlzIG5vdCBzZXQKIENPTkZJR19ERUZBVUxUX0lPU0NIRUQ9ImFudGljaXBhdG9yeSIKK0NPTkZJR19DTEFTU0lDX1JDVT15CiAKICMKICMgUGxhdGZvcm0gc3VwcG9ydAogIwotIyBDT05GSUdfUFBDX01QQzUyeHggaXMgbm90IHNldAotIyBDT05GSUdfUFBDX01QQzUyMDAgaXMgbm90IHNldAorIyBDT05GSUdfUFBDX01QQzUxMnggaXMgbm90IHNldAorIyBDT05GSUdfUFBDX01QQzUxMjEgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0NFTEwgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0NFTExfTkFUSVZFIGlzIG5vdCBzZXQKICMgQ09ORklHX1BRMkFEUyBpcyBub3Qgc2V0CitDT05GSUdfTVBDODV4eD15CiAjIENPTkZJR19NUEM4NTQwX0FEUyBpcyBub3Qgc2V0CiAjIENPTkZJR19NUEM4NTYwX0FEUyBpcyBub3Qgc2V0CiAjIENPTkZJR19NUEM4NXh4X0NEUyBpcyBub3Qgc2V0CiAjIENPTkZJR19NUEM4NXh4X01EUyBpcyBub3Qgc2V0CiAjIENPTkZJR19NUEM4NXh4X0RTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NUWF9HUDMgaXMgbm90IHNldAorIyBDT05GSUdfVFFNODU0MCBpcyBub3Qgc2V0CisjIENPTkZJR19UUU04NTQxIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RRTTg1NTUgaXMgbm90IHNldAorIyBDT05GSUdfVFFNODU2MCBpcyBub3Qgc2V0CisjIENPTkZJR19TQkM4NTQ4IGlzIG5vdCBzZXQKIENPTkZJR19TQkM4NTYwPXkKLUNPTkZJR19NUEM4NTYwPXkKLUNPTkZJR19NUEM4NXh4PXkKKyMgQ09ORklHX0lQSUMgaXMgbm90IHNldAogQ09ORklHX01QSUM9eQogIyBDT05GSUdfTVBJQ19XRUlSRCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfSTgyNTkgaXMgbm90IHNldApAQCAtMTY3LDEzICsxODYsMTcgQEAKICMgQ09ORklHX0haXzMwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19IWl8xMDAwIGlzIG5vdCBzZXQKIENPTkZJR19IWj0yNTAKKyMgQ09ORklHX1NDSEVEX0hSVElDSyBpcyBub3Qgc2V0CiBDT05GSUdfUFJFRU1QVF9OT05FPXkKICMgQ09ORklHX1BSRUVNUFRfVk9MVU5UQVJZIGlzIG5vdCBzZXQKICMgQ09ORklHX1BSRUVNUFQgaXMgbm90IHNldAogQ09ORklHX0JJTkZNVF9FTEY9eQogQ09ORklHX0JJTkZNVF9NSVNDPXkKICMgQ09ORklHX01BVEhfRU1VTEFUSU9OIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lPTU1VX0hFTFBFUiBpcyBub3Qgc2V0CiBDT05GSUdfQVJDSF9FTkFCTEVfTUVNT1JZX0hPVFBMVUc9eQorQ09ORklHX0FSQ0hfSEFTX1dBTEtfTUVNT1JZPXkKK0NPTkZJR19BUkNIX0VOQUJMRV9NRU1PUllfSE9UUkVNT1ZFPXkKIENPTkZJR19BUkNIX0ZMQVRNRU1fRU5BQkxFPXkKIENPTkZJR19BUkNIX1BPUFVMQVRFU19OT0RFX01BUD15CiBDT05GSUdfU0VMRUNUX01FTU9SWV9NT0RFTD15CkBAIC0xOTIsMTEgKzIxNSw3IEBACiBDT05GSUdfUFJPQ19ERVZJQ0VUUkVFPXkKICMgQ09ORklHX0NNRExJTkVfQk9PTCBpcyBub3Qgc2V0CiAjIENPTkZJR19QTSBpcyBub3Qgc2V0Ci1DT05GSUdfU1VTUEVORF9VUF9QT1NTSUJMRT15Ci1DT05GSUdfSElCRVJOQVRJT05fVVBfUE9TU0lCTEU9eQogIyBDT05GSUdfU0VDQ09NUCBpcyBub3Qgc2V0Ci1DT05GSUdfV0FOVF9ERVZJQ0VfVFJFRT15Ci1DT05GSUdfREVWSUNFX1RSRUU9IiIKIENPTkZJR19JU0FfRE1BX0FQST15CiAKICMKQEAgLTIzOSw2ICsyNTgsNyBAQAogQ09ORklHX1hGUk1fVVNFUj15CiAjIENPTkZJR19YRlJNX1NVQl9QT0xJQ1kgaXMgbm90IHNldAogIyBDT05GSUdfWEZSTV9NSUdSQVRFIGlzIG5vdCBzZXQKKyMgQ09ORklHX1hGUk1fU1RBVElTVElDUyBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRfS0VZIGlzIG5vdCBzZXQKIENPTkZJR19JTkVUPXkKIENPTkZJR19JUF9NVUxUSUNBU1Q9eQpAQCAtMjk0LDYgKzMxNCw3IEBACiAjCiAjIENPTkZJR19ORVRfUEtUR0VOIGlzIG5vdCBzZXQKICMgQ09ORklHX0hBTVJBRElPIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NBTiBpcyBub3Qgc2V0CiAjIENPTkZJR19JUkRBIGlzIG5vdCBzZXQKICMgQ09ORklHX0JUIGlzIG5vdCBzZXQKICMgQ09ORklHX0FGX1JYUlBDIGlzIG5vdCBzZXQKQEAgLTMzNSwxMSArMzU2LDEzIEBACiBDT05GSUdfQkxLX0RFVl9SQU09eQogQ09ORklHX0JMS19ERVZfUkFNX0NPVU5UPTE2CiBDT05GSUdfQkxLX0RFVl9SQU1fU0laRT0zMjc2OAotQ09ORklHX0JMS19ERVZfUkFNX0JMT0NLU0laRT0xMDI0CisjIENPTkZJR19CTEtfREVWX1hJUCBpcyBub3Qgc2V0CiAjIENPTkZJR19DRFJPTV9QS1RDRFZEIGlzIG5vdCBzZXQKICMgQ09ORklHX0FUQV9PVkVSX0VUSCBpcyBub3Qgc2V0CiBDT05GSUdfTUlTQ19ERVZJQ0VTPXkKICMgQ09ORklHX0VFUFJPTV85M0NYNiBpcyBub3Qgc2V0CisjIENPTkZJR19FTkNMT1NVUkVfU0VSVklDRVMgaXMgbm90IHNldAorQ09ORklHX0hBVkVfSURFPXkKICMgQ09ORklHX0lERSBpcyBub3Qgc2V0CiAKICMKQEAgLTM3NCw2ICszOTcsNyBAQAogIyBDT05GSUdfU01TQ19QSFkgaXMgbm90IHNldAogQ09ORklHX0JST0FEQ09NX1BIWT15CiAjIENPTkZJR19JQ1BMVVNfUEhZIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JFQUxURUtfUEhZIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZJWEVEX1BIWSBpcyBub3Qgc2V0CiAjIENPTkZJR19NRElPX0JJVEJBTkcgaXMgbm90IHNldAogQ09ORklHX05FVF9FVEhFUk5FVD15CkBAIC0zODQsNiArNDA4LDcgQEAKICMgQ09ORklHX0lCTV9ORVdfRU1BQ19FTUFDNCBpcyBub3Qgc2V0CiAjIENPTkZJR19CNDQgaXMgbm90IHNldAogQ09ORklHX05FVERFVl8xMDAwPXkKKyMgQ09ORklHX0UxMDAwRV9FTkFCTEVEIGlzIG5vdCBzZXQKIENPTkZJR19HSUFORkFSPXkKIENPTkZJR19HRkFSX05BUEk9eQogQ09ORklHX05FVERFVl8xMDAwMD15CkBAIC0zOTYsNyArNDIxLDYgQEAKICMgQ09ORklHX1dBTiBpcyBub3Qgc2V0CiAjIENPTkZJR19QUFAgaXMgbm90IHNldAogIyBDT05GSUdfU0xJUCBpcyBub3Qgc2V0Ci0jIENPTkZJR19TSEFQRVIgaXMgbm90IHNldAogIyBDT05GSUdfTkVUQ09OU09MRSBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRQT0xMIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9QT0xMX0NPTlRST0xMRVIgaXMgbm90IHNldApAQCAtNDg5LDYgKzUxMyw3IEBACiAjIENPTkZJR19TRU5TT1JTX1c4MzYyN0hGIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVzgzNjI3RUhGIGlzIG5vdCBzZXQKICMgQ09ORklHX0hXTU9OX0RFQlVHX0NISVAgaXMgbm90IHNldAorIyBDT05GSUdfVEhFUk1BTCBpcyBub3Qgc2V0CiAjIENPTkZJR19XQVRDSERPRyBpcyBub3Qgc2V0CiAKICMKQEAgLTUzOCwxMiArNTYzLDkgQEAKICMKICMgTk9URTogVVNCX1NUT1JBR0UgZW5hYmxlcyBTQ1NJLCBhbmQgJ1NDU0kgZGlzayBzdXBwb3J0JwogIwotCi0jCi0jIFVTQiBHYWRnZXQgU3VwcG9ydAotIwogIyBDT05GSUdfVVNCX0dBREdFVCBpcyBub3Qgc2V0CiAjIENPTkZJR19NTUMgaXMgbm90IHNldAorIyBDT05GSUdfTUVNU1RJQ0sgaXMgbm90IHNldAogIyBDT05GSUdfTkVXX0xFRFMgaXMgbm90IHNldAogIyBDT05GSUdfRURBQyBpcyBub3Qgc2V0CiBDT05GSUdfUlRDX0xJQj15CkBAIC01NjksOSArNTkxLDEwIEBACiAjIFBsYXRmb3JtIFJUQyBkcml2ZXJzCiAjCiAjIENPTkZJR19SVENfRFJWX0NNT1MgaXMgbm90IHNldAorIyBDT05GSUdfUlRDX0RSVl9EUzE1MTEgaXMgbm90IHNldAogIyBDT05GSUdfUlRDX0RSVl9EUzE1NTMgaXMgbm90IHNldAotIyBDT05GSUdfUlRDX0RSVl9TVEsxN1RBOCBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfRFJWX0RTMTc0MiBpcyBub3Qgc2V0CisjIENPTkZJR19SVENfRFJWX1NUSzE3VEE4IGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfTTQ4VDg2IGlzIG5vdCBzZXQKIENPTkZJR19SVENfRFJWX000OFQ1OT15CiAjIENPTkZJR19SVENfRFJWX1YzMDIwIGlzIG5vdCBzZXQKQEAgLTU3OSw2ICs2MDIsNyBAQAogIwogIyBvbi1DUFUgUlRDIGRyaXZlcnMKICMKKyMgQ09ORklHX0RNQURFVklDRVMgaXMgbm90IHNldAogCiAjCiAjIFVzZXJzcGFjZSBJL08KQEAgLTU5NywxMiArNjIxLDEwIEBACiAjIENPTkZJR19YRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfR0ZTMl9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19PQ0ZTMl9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CitDT05GSUdfRE5PVElGWT15CiBDT05GSUdfSU5PVElGWT15CiBDT05GSUdfSU5PVElGWV9VU0VSPXkKICMgQ09ORklHX1FVT1RBIGlzIG5vdCBzZXQKLUNPTkZJR19ETk9USUZZPXkKICMgQ09ORklHX0FVVE9GU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19BVVRPRlM0X0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZVU0VfRlMgaXMgbm90IHNldApAQCAtNjQ0LDggKzY2NiwxMCBAQAogIyBDT05GSUdfRUZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0NSQU1GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19WWEZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX01JTklYX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0hQRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfUU5YNEZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JPTUZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1NZU1ZfRlMgaXMgbm90IHNldAogIyBDT05GSUdfVUZTX0ZTIGlzIG5vdCBzZXQKIENPTkZJR19ORVRXT1JLX0ZJTEVTWVNURU1TPXkKQEAgLTY4Niw3ICs3MTAsNiBAQAogIyBDT05GSUdfU1lTVjY4X1BBUlRJVElPTiBpcyBub3Qgc2V0CiAjIENPTkZJR19OTFMgaXMgbm90IHNldAogIyBDT05GSUdfRExNIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VDQ19TTE9XIGlzIG5vdCBzZXQKIAogIwogIyBMaWJyYXJ5IHJvdXRpbmVzCkBAIC03MDIsNyArNzI1LDYgQEAKIENPTkZJR19IQVNfSU9NRU09eQogQ09ORklHX0hBU19JT1BPUlQ9eQogQ09ORklHX0hBU19ETUE9eQotIyBDT05GSUdfSU5TVFJVTUVOVEFUSU9OIGlzIG5vdCBzZXQKIAogIwogIyBLZXJuZWwgaGFja2luZwpAQCAtNzMzLDggKzc1NSw4IEBACiAjIENPTkZJR19ERUJVR19WTSBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19MSVNUIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NHIGlzIG5vdCBzZXQKLUNPTkZJR19GT1JDRURfSU5MSU5JTkc9eQogIyBDT05GSUdfQk9PVF9QUklOVEtfREVMQVkgaXMgbm90IHNldAorIyBDT05GSUdfQkFDS1RSQUNFX1NFTEZfVEVTVCBpcyBub3Qgc2V0CiAjIENPTkZJR19GQVVMVF9JTkpFQ1RJT04gaXMgbm90IHNldAogIyBDT05GSUdfU0FNUExFUyBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19TVEFDS09WRVJGTE9XIGlzIG5vdCBzZXQKQEAgLTc1Miw2ICs3NzQsNyBAQAogIyBDT05GSUdfUFBDX0VBUkxZX0RFQlVHX1BBU19SRUFMTU9ERSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfRUFSTFlfREVCVUdfQkVBVCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfRUFSTFlfREVCVUdfNDR4IGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ19FQVJMWV9ERUJVR180MHggaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0VBUkxZX0RFQlVHX0NQTSBpcyBub3Qgc2V0CiAKICMKQEAgLTc2MCw1ICs3ODMsNDggQEAKICMgQ09ORklHX0tFWVMgaXMgbm90IHNldAogIyBDT05GSUdfU0VDVVJJVFkgaXMgbm90IHNldAogIyBDT05GSUdfU0VDVVJJVFlfRklMRV9DQVBBQklMSVRJRVMgaXMgbm90IHNldAotIyBDT05GSUdfQ1JZUFRPIGlzIG5vdCBzZXQKK0NPTkZJR19DUllQVE89eQorIyBDT05GSUdfQ1JZUFRPX1NFUUlWIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19NQU5BR0VSIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19ITUFDIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19YQ0JDIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19OVUxMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19NRDQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX01ENSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0hBMSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0hBMjU2IGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19TSEE1MTIgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1dQNTEyIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19UR1IxOTIgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0dGMTI4TVVMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19FQ0IgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NCQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fUENCQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fTFJXIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19YVFMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NUUiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fR0NNIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DQ00gaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NSWVBURCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fREVTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19GQ1JZUFQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0JMT1dGSVNIIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19UV09GSVNIIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19TRVJQRU5UIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19BRVMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NBU1Q1IGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DQVNUNiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fVEVBIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19BUkM0IGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19LSEFaQUQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0FOVUJJUyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0VFRCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0FMU0EyMCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fREVGTEFURSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fTUlDSEFFTF9NSUMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NSQzMyQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ0FNRUxMSUEgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0FVVEhFTkMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0xaTyBpcyBub3Qgc2V0CitDT05GSUdfQ1JZUFRPX0hXPXkKICMgQ09ORklHX1BQQ19DTE9DSyBpcyBub3Qgc2V0CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvY29uZmlncy9zdG9yY2VudGVyX2RlZmNvbmZpZyBiL2FyY2gvcG93ZXJwYy9jb25maWdzL3N0b3JjZW50ZXJfZGVmY29uZmlnCmluZGV4IGEwMzRhNWUuLmZkYmZkMzkgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jb25maWdzL3N0b3JjZW50ZXJfZGVmY29uZmlnCisrKyBiL2FyY2gvcG93ZXJwYy9jb25maWdzL3N0b3JjZW50ZXJfZGVmY29uZmlnCkBAIC0xLDcgKzEsNyBAQAogIwogIyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBtYWtlIGNvbmZpZzogZG9uJ3QgZWRpdAotIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjI0LXJjNgotIyBUdWUgSmFuICA4IDA5OjMzOjU0IDIwMDgKKyMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4yNS1yYzcKKyMgTW9uIE1hciAzMSAxMTozNzoxOSAyMDA4CiAjCiAjIENPTkZJR19QUEM2NCBpcyBub3Qgc2V0CiAKQEAgLTI5LDYgKzI5LDcgQEAKIENPTkZJR19HRU5FUklDX1RJTUVfVlNZU0NBTEw9eQogQ09ORklHX0dFTkVSSUNfQ0xPQ0tFVkVOVFM9eQogQ09ORklHX0dFTkVSSUNfSEFSRElSUVM9eQorIyBDT05GSUdfSEFWRV9TRVRVUF9QRVJfQ1BVX0FSRUEgaXMgbm90IHNldAogQ09ORklHX0lSUV9QRVJfQ1BVPXkKIENPTkZJR19SV1NFTV9YQ0hHQUREX0FMR09SSVRITT15CiBDT05GSUdfQVJDSF9IQVNfSUxPRzJfVTMyPXkKQEAgLTY2LDE3ICs2NywxOSBAQAogIyBDT05GSUdfUE9TSVhfTVFVRVVFIGlzIG5vdCBzZXQKICMgQ09ORklHX0JTRF9QUk9DRVNTX0FDQ1QgaXMgbm90IHNldAogIyBDT05GSUdfVEFTS1NUQVRTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VTRVJfTlMgaXMgbm90IHNldAotIyBDT05GSUdfUElEX05TIGlzIG5vdCBzZXQKICMgQ09ORklHX0FVRElUIGlzIG5vdCBzZXQKICMgQ09ORklHX0lLQ09ORklHIGlzIG5vdCBzZXQKIENPTkZJR19MT0dfQlVGX1NISUZUPTE0CiAjIENPTkZJR19DR1JPVVBTIGlzIG5vdCBzZXQKK0NPTkZJR19HUk9VUF9TQ0hFRD15CiBDT05GSUdfRkFJUl9HUk9VUF9TQ0hFRD15Ci1DT05GSUdfRkFJUl9VU0VSX1NDSEVEPXkKLSMgQ09ORklHX0ZBSVJfQ0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JUX0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKK0NPTkZJR19VU0VSX1NDSEVEPXkKKyMgQ09ORklHX0NHUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CiBDT05GSUdfU1lTRlNfREVQUkVDQVRFRD15CitDT05GSUdfU1lTRlNfREVQUkVDQVRFRF9WMj15CiAjIENPTkZJR19SRUxBWSBpcyBub3Qgc2V0CisjIENPTkZJR19OQU1FU1BBQ0VTIGlzIG5vdCBzZXQKICMgQ09ORklHX0JMS19ERVZfSU5JVFJEIGlzIG5vdCBzZXQKIENPTkZJR19DQ19PUFRJTUlaRV9GT1JfU0laRT15CiBDT05GSUdfU1lTQ1RMPXkKQEAgLTg3LDExICs5MCwxMyBAQAogQ09ORklHX1BSSU5USz15CiBDT05GSUdfQlVHPXkKIENPTkZJR19FTEZfQ09SRT15CitDT05GSUdfQ09NUEFUX0JSSz15CiBDT05GSUdfQkFTRV9GVUxMPXkKIENPTkZJR19GVVRFWD15CiBDT05GSUdfQU5PTl9JTk9ERVM9eQogQ09ORklHX0VQT0xMPXkKIENPTkZJR19TSUdOQUxGRD15CitDT05GSUdfVElNRVJGRD15CiBDT05GSUdfRVZFTlRGRD15CiBDT05GSUdfU0hNRU09eQogQ09ORklHX1ZNX0VWRU5UX0NPVU5URVJTPXkKQEAgLTk5LDYgKzEwNCwxMyBAQAogIyBDT05GSUdfU0xBQiBpcyBub3Qgc2V0CiBDT05GSUdfU0xVQj15CiAjIENPTkZJR19TTE9CIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BST0ZJTElORyBpcyBub3Qgc2V0CisjIENPTkZJR19NQVJLRVJTIGlzIG5vdCBzZXQKK0NPTkZJR19IQVZFX09QUk9GSUxFPXkKK0NPTkZJR19IQVZFX0tQUk9CRVM9eQorQ09ORklHX0hBVkVfS1JFVFBST0JFUz15CitDT05GSUdfUFJPQ19QQUdFX01PTklUT1I9eQorQ09ORklHX1NMQUJJTkZPPXkKIENPTkZJR19SVF9NVVRFWEVTPXkKICMgQ09ORklHX1RJTllfU0hNRU0gaXMgbm90IHNldAogQ09ORklHX0JBU0VfU01BTEw9MApAQCAtMTI2LDYgKzEzOCw3IEBACiBDT05GSUdfREVGQVVMVF9DRlE9eQogIyBDT05GSUdfREVGQVVMVF9OT09QIGlzIG5vdCBzZXQKIENPTkZJR19ERUZBVUxUX0lPU0NIRUQ9ImNmcSIKK0NPTkZJR19DTEFTU0lDX1JDVT15CiAKICMKICMgUGxhdGZvcm0gc3VwcG9ydApAQCAtMTM2LDEwICsxNDksMTAgQEAKICMgQ09ORklHX1BQQ184Nnh4IGlzIG5vdCBzZXQKIENPTkZJR19DTEFTU0lDMzI9eQogIyBDT05GSUdfUFBDX0NIUlAgaXMgbm90IHNldAorIyBDT05GSUdfUFBDX01QQzUxMnggaXMgbm90IHNldAorIyBDT05GSUdfUFBDX01QQzUxMjEgaXMgbm90IHNldAorIyBDT05GSUdfTVBDNTEyMV9BRFMgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX01QQzUyeHggaXMgbm90IHNldAotIyBDT05GSUdfUFBDX01QQzUyMDAgaXMgbm90IHNldAotIyBDT05GSUdfUFBDX0VGSUtBIGlzIG5vdCBzZXQKLSMgQ09ORklHX1BQQ19MSVRFNTIwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfUE1BQyBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfQ0VMTCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfQ0VMTF9OQVRJVkUgaXMgbm90IHNldApAQCAtMTUzLDYgKzE2Niw3IEBACiBDT05GSUdfTVBDMTBYX0JSSURHRT15CiBDT05GSUdfTVBDMTBYX09QRU5QSUM9eQogIyBDT05GSUdfTVBDMTBYX1NUT1JFX0dBVEhFUklORyBpcyBub3Qgc2V0CisjIENPTkZJR19JUElDIGlzIG5vdCBzZXQKIENPTkZJR19NUElDPXkKICMgQ09ORklHX01QSUNfV0VJUkQgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0k4MjU5IGlzIG5vdCBzZXQKQEAgLTE2NCw3ICsxNzgsNiBAQAogIyBDT05GSUdfR0VORVJJQ19JT01BUCBpcyBub3Qgc2V0CiAjIENPTkZJR19DUFVfRlJFUSBpcyBub3Qgc2V0CiAjIENPTkZJR19UQVUgaXMgbm90IHNldAotIyBDT05GSUdfQ1BNMiBpcyBub3Qgc2V0CiAjIENPTkZJR19GU0xfVUxJMTU3NSBpcyBub3Qgc2V0CiAKICMKQEAgLTE4MCwxMiArMTkzLDE2IEBACiAjIENPTkZJR19IWl8zMDAgaXMgbm90IHNldAogIyBDT05GSUdfSFpfMTAwMCBpcyBub3Qgc2V0CiBDT05GSUdfSFo9MTAwCisjIENPTkZJR19TQ0hFRF9IUlRJQ0sgaXMgbm90IHNldAogQ09ORklHX1BSRUVNUFRfTk9ORT15CiAjIENPTkZJR19QUkVFTVBUX1ZPTFVOVEFSWSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUkVFTVBUIGlzIG5vdCBzZXQKIENPTkZJR19CSU5GTVRfRUxGPXkKIENPTkZJR19CSU5GTVRfTUlTQz15CisjIENPTkZJR19JT01NVV9IRUxQRVIgaXMgbm90IHNldAogQ09ORklHX0FSQ0hfRU5BQkxFX01FTU9SWV9IT1RQTFVHPXkKK0NPTkZJR19BUkNIX0hBU19XQUxLX01FTU9SWT15CitDT05GSUdfQVJDSF9FTkFCTEVfTUVNT1JZX0hPVFJFTU9WRT15CiAjIENPTkZJR19LRVhFQyBpcyBub3Qgc2V0CiBDT05GSUdfQVJDSF9GTEFUTUVNX0VOQUJMRT15CiBDT05GSUdfQVJDSF9QT1BVTEFURVNfTk9ERV9NQVA9eQpAQCAtMjA2LDExICsyMjMsNyBAQAogQ09ORklHX0NNRExJTkVfQk9PTD15CiBDT05GSUdfQ01ETElORT0iY29uc29sZT10dHlTMCwxMTUyMDAiCiAjIENPTkZJR19QTSBpcyBub3Qgc2V0Ci1DT05GSUdfU1VTUEVORF9VUF9QT1NTSUJMRT15Ci1DT05GSUdfSElCRVJOQVRJT05fVVBfUE9TU0lCTEU9eQogIyBDT05GSUdfU0VDQ09NUCBpcyBub3Qgc2V0Ci1DT05GSUdfV0FOVF9ERVZJQ0VfVFJFRT15Ci1DT05GSUdfREVWSUNFX1RSRUU9InN0b3JjZW50ZXIuZHRzIgogQ09ORklHX0lTQV9ETUFfQVBJPXkKIAogIwpAQCAtMzEwLDYgKzMyMyw3IEBACiAjCiAjIENPTkZJR19ORVRfUEtUR0VOIGlzIG5vdCBzZXQKICMgQ09ORklHX0hBTVJBRElPIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NBTiBpcyBub3Qgc2V0CiAjIENPTkZJR19JUkRBIGlzIG5vdCBzZXQKICMgQ09ORklHX0JUIGlzIG5vdCBzZXQKICMgQ09ORklHX0FGX1JYUlBDIGlzIG5vdCBzZXQKQEAgLTM0Myw2ICszNTcsNyBAQAogQ09ORklHX01URF9QQVJUSVRJT05TPXkKICMgQ09ORklHX01URF9SRURCT09UX1BBUlRTIGlzIG5vdCBzZXQKICMgQ09ORklHX01URF9DTURMSU5FX1BBUlRTIGlzIG5vdCBzZXQKKyMgQ09ORklHX01URF9PRl9QQVJUUyBpcyBub3Qgc2V0CiAKICMKICMgVXNlciBNb2R1bGVzIEFuZCBUcmFuc2xhdGlvbiBMYXllcnMKQEAgLTQzOCwxMiArNDUzLDE0IEBACiAjIENPTkZJR19FRVBST01fOTNDWDYgaXMgbm90IHNldAogIyBDT05GSUdfU0dJX0lPQzQgaXMgbm90IHNldAogIyBDT05GSUdfVElGTV9DT1JFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VOQ0xPU1VSRV9TRVJWSUNFUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9JREU9eQogQ09ORklHX0lERT15CiBDT05GSUdfSURFX01BWF9IV0lGUz00CiBDT05GSUdfQkxLX0RFVl9JREU9eQogCiAjCi0jIFBsZWFzZSBzZWUgRG9jdW1lbnRhdGlvbi9pZGUudHh0IGZvciBoZWxwL2luZm8gb24gSURFIGRyaXZlcworIyBQbGVhc2Ugc2VlIERvY3VtZW50YXRpb24vaWRlL2lkZS50eHQgZm9yIGhlbHAvaW5mbyBvbiBJREUgZHJpdmVzCiAjCiAjIENPTkZJR19CTEtfREVWX0lERV9TQVRBIGlzIG5vdCBzZXQKIENPTkZJR19CTEtfREVWX0lERURJU0s9eQpAQCAtNDYwLDEyICs0NzcsMTIgQEAKICMKIENPTkZJR19JREVfR0VORVJJQz15CiAjIENPTkZJR19CTEtfREVWX1BMQVRGT1JNIGlzIG5vdCBzZXQKK0NPTkZJR19CTEtfREVWX0lERURNQV9TRkY9eQogCiAjCiAjIFBDSSBJREUgY2hpcHNldHMgc3VwcG9ydAogIwogQ09ORklHX0JMS19ERVZfSURFUENJPXkKLSMgQ09ORklHX0lERVBDSV9TSEFSRV9JUlEgaXMgbm90IHNldAogQ09ORklHX0lERVBDSV9QQ0lCVVNfT1JERVI9eQogIyBDT05GSUdfQkxLX0RFVl9HRU5FUklDIGlzIG5vdCBzZXQKICMgQ09ORklHX0JMS19ERVZfT1BUSTYyMSBpcyBub3Qgc2V0CkBAIC00OTUsNyArNTEyLDYgQEAKICMgQ09ORklHX0JMS19ERVZfVFJNMjkwIGlzIG5vdCBzZXQKIENPTkZJR19CTEtfREVWX1ZJQTgyQ1hYWD15CiAjIENPTkZJR19CTEtfREVWX1RDODZDMDAxIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lERV9BUk0gaXMgbm90IHNldAogQ09ORklHX0JMS19ERVZfSURFRE1BPXkKIENPTkZJR19JREVfQVJDSF9PQlNPTEVURV9JTklUPXkKICMgQ09ORklHX0JMS19ERVZfSEQgaXMgbm90IHNldApAQCAtNTYzLDYgKzU3OSw3IEBACiAjIENPTkZJR19TQ1NJX0lQUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX0lOSVRJTyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX0lOSUExMDAgaXMgbm90IHNldAorIyBDT05GSUdfU0NTSV9NVlNBUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX1NURVggaXMgbm90IHNldAogIyBDT05GSUdfU0NTSV9TWU01M0M4WFhfMiBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX1FMT0dJQ18xMjgwIGlzIG5vdCBzZXQKQEAgLTYwMyw3ICs2MjAsNiBAQAogIyBDT05GSUdfRVFVQUxJWkVSIGlzIG5vdCBzZXQKICMgQ09ORklHX1RVTiBpcyBub3Qgc2V0CiAjIENPTkZJR19WRVRIIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lQMTAwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19BUkNORVQgaXMgbm90IHNldAogIyBDT05GSUdfTkVUX0VUSEVSTkVUIGlzIG5vdCBzZXQKIENPTkZJR19ORVRERVZfMTAwMD15CkBAIC02MTEsNiArNjI3LDkgQEAKICMgQ09ORklHX0RMMksgaXMgbm90IHNldAogIyBDT05GSUdfRTEwMDAgaXMgbm90IHNldAogIyBDT05GSUdfRTEwMDBFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0UxMDAwRV9FTkFCTEVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lQMTAwMCBpcyBub3Qgc2V0CisjIENPTkZJR19JR0IgaXMgbm90IHNldAogIyBDT05GSUdfTlM4MzgyMCBpcyBub3Qgc2V0CiAjIENPTkZJR19IQU1BQ0hJIGlzIG5vdCBzZXQKICMgQ09ORklHX1lFTExPV0ZJTiBpcyBub3Qgc2V0CkBAIC02MjMsNiArNjQyLDcgQEAKICMgQ09ORklHX1ZJQV9WRUxPQ0lUWSBpcyBub3Qgc2V0CiAjIENPTkZJR19USUdPTjMgaXMgbm90IHNldAogIyBDT05GSUdfQk5YMiBpcyBub3Qgc2V0CisjIENPTkZJR19HSUFORkFSIGlzIG5vdCBzZXQKICMgQ09ORklHX01WNjQzWFhfRVRIIGlzIG5vdCBzZXQKICMgQ09ORklHX1FMQTNYWFggaXMgbm90IHNldAogIyBDT05GSUdfQVRMMSBpcyBub3Qgc2V0CkBAIC02NDksNyArNjY5LDYgQEAKICMgQ09ORklHX1BQUCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTElQIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9GQyBpcyBub3Qgc2V0Ci0jIENPTkZJR19TSEFQRVIgaXMgbm90IHNldAogIyBDT05GSUdfTkVUQ09OU09MRSBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRQT0xMIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9QT0xMX0NPTlRST0xMRVIgaXMgbm90IHNldApAQCAtNjcyLDYgKzY5MSw3IEBACiAjCiAjIENPTkZJR19WVCBpcyBub3Qgc2V0CiAjIENPTkZJR19TRVJJQUxfTk9OU1RBTkRBUkQgaXMgbm90IHNldAorIyBDT05GSUdfTk9aT01JIGlzIG5vdCBzZXQKIAogIwogIyBTZXJpYWwgZHJpdmVycwpAQCAtNjk3LDggKzcxNyw3IEBACiAjIENPTkZJR19JUE1JX0hBTkRMRVIgaXMgbm90IHNldAogQ09ORklHX0hXX1JBTkRPTT1tCiBDT05GSUdfTlZSQU09eQotQ09ORklHX0dFTl9SVEM9eQotIyBDT05GSUdfR0VOX1JUQ19YIGlzIG5vdCBzZXQKKyMgQ09ORklHX0dFTl9SVEMgaXMgbm90IHNldAogIyBDT05GSUdfUjM5NjQgaXMgbm90IHNldAogIyBDT05GSUdfQVBQTElDT00gaXMgbm90IHNldAogIyBDT05GSUdfUkFXX0RSSVZFUiBpcyBub3Qgc2V0CkBAIC03NDYsMTQgKzc2NSwxMiBAQAogIwogIyBNaXNjZWxsYW5lb3VzIEkyQyBDaGlwIHN1cHBvcnQKICMKLSMgQ09ORklHX1NFTlNPUlNfRFMxMzM3IGlzIG5vdCBzZXQKLSMgQ09ORklHX1NFTlNPUlNfRFMxMzc0IGlzIG5vdCBzZXQKICMgQ09ORklHX0RTMTY4MiBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0VFUFJPTSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1BDRjg1NzQgaXMgbm90IHNldAotIyBDT05GSUdfU0VOU09SU19QQ0E5NTM5IGlzIG5vdCBzZXQKKyMgQ09ORklHX1BDRjg1NzUgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19QQ0Y4NTkxIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NFTlNPUlNfTTQxVDAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RQUzY1MDEwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfTUFYNjg3NSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1RTTDI1NTAgaXMgbm90IHNldAogIyBDT05GSUdfSTJDX0RFQlVHX0NPUkUgaXMgbm90IHNldApAQCAtNzY5LDYgKzc4Niw3IEBACiAjIENPTkZJR19XMSBpcyBub3Qgc2V0CiAjIENPTkZJR19QT1dFUl9TVVBQTFkgaXMgbm90IHNldAogIyBDT05GSUdfSFdNT04gaXMgbm90IHNldAorIyBDT05GSUdfVEhFUk1BTCBpcyBub3Qgc2V0CiAjIENPTkZJR19XQVRDSERPRyBpcyBub3Qgc2V0CiAKICMKQEAgLTgxNCw2ICs4MzIsNyBAQAogQ09ORklHX1VTQl9BUkNIX0hBU19FSENJPXkKIENPTkZJR19VU0I9eQogIyBDT05GSUdfVVNCX0RFQlVHIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9BTk5PVU5DRV9ORVdfREVWSUNFUyBpcyBub3Qgc2V0CiAKICMKICMgTWlzY2VsbGFuZW91cyBVU0Igb3B0aW9ucwpAQCAtODI3LDkgKzg0NiwxMCBAQAogIyBVU0IgSG9zdCBDb250cm9sbGVyIERyaXZlcnMKICMKIENPTkZJR19VU0JfRUhDSV9IQ0Q9eQotIyBDT05GSUdfVVNCX0VIQ0lfU1BMSVRfSVNPIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9FSENJX1JPT1RfSFVCX1RUIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9FSENJX1RUX05FV1NDSEVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9FSENJX0ZTTCBpcyBub3Qgc2V0CitDT05GSUdfVVNCX0VIQ0lfSENEX1BQQ19PRj15CiAjIENPTkZJR19VU0JfSVNQMTE2WF9IQ0QgaXMgbm90IHNldAogQ09ORklHX1VTQl9PSENJX0hDRD15CiAjIENPTkZJR19VU0JfT0hDSV9IQ0RfUFBDX09GIGlzIG5vdCBzZXQKQEAgLTg3NywxMCArODk3LDYgQEAKICMKICMgVVNCIHBvcnQgZHJpdmVycwogIwotCi0jCi0jIFVTQiBTZXJpYWwgQ29udmVydGVyIHN1cHBvcnQKLSMKICMgQ09ORklHX1VTQl9TRVJJQUwgaXMgbm90IHNldAogCiAjCkBAIC05MDYsMTYgKzkyMiw5IEBACiAjIENPTkZJR19VU0JfVFJBTkNFVklCUkFUT1IgaXMgbm90IHNldAogIyBDT05GSUdfVVNCX0lPV0FSUklPUiBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfVEVTVCBpcyBub3Qgc2V0Ci0KLSMKLSMgVVNCIERTTCBtb2RlbSBzdXBwb3J0Ci0jCi0KLSMKLSMgVVNCIEdhZGdldCBTdXBwb3J0Ci0jCiAjIENPTkZJR19VU0JfR0FER0VUIGlzIG5vdCBzZXQKICMgQ09ORklHX01NQyBpcyBub3Qgc2V0CisjIENPTkZJR19NRU1TVElDSyBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVdfTEVEUyBpcyBub3Qgc2V0CiAjIENPTkZJR19JTkZJTklCQU5EIGlzIG5vdCBzZXQKICMgQ09ORklHX0VEQUMgaXMgbm90IHNldApAQCAtOTQ3LDYgKzk1Niw3IEBACiAjIENPTkZJR19SVENfRFJWX1BDRjg1NjMgaXMgbm90IHNldAogIyBDT05GSUdfUlRDX0RSVl9QQ0Y4NTgzIGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfTTQxVDgwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JUQ19EUlZfUzM1MzkwQSBpcyBub3Qgc2V0CiAKICMKICMgU1BJIFJUQyBkcml2ZXJzCkBAIC05NTYsOSArOTY2LDEwIEBACiAjIFBsYXRmb3JtIFJUQyBkcml2ZXJzCiAjCiAjIENPTkZJR19SVENfRFJWX0NNT1MgaXMgbm90IHNldAorIyBDT05GSUdfUlRDX0RSVl9EUzE1MTEgaXMgbm90IHNldAogIyBDT05GSUdfUlRDX0RSVl9EUzE1NTMgaXMgbm90IHNldAotIyBDT05GSUdfUlRDX0RSVl9TVEsxN1RBOCBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfRFJWX0RTMTc0MiBpcyBub3Qgc2V0CisjIENPTkZJR19SVENfRFJWX1NUSzE3VEE4IGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfTTQ4VDg2IGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfTTQ4VDU5IGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19EUlZfVjMwMjAgaXMgbm90IHNldApAQCAtOTY2LDYgKzk3Nyw3IEBACiAjCiAjIG9uLUNQVSBSVEMgZHJpdmVycwogIworIyBDT05GSUdfRE1BREVWSUNFUyBpcyBub3Qgc2V0CiAKICMKICMgVXNlcnNwYWNlIEkvTwpAQCAtOTk1LDEyICsxMDA3LDEwIEBACiAjIENPTkZJR19YRlNfUlQgaXMgbm90IHNldAogIyBDT05GSUdfR0ZTMl9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19PQ0ZTMl9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CitDT05GSUdfRE5PVElGWT15CiBDT05GSUdfSU5PVElGWT15CiBDT05GSUdfSU5PVElGWV9VU0VSPXkKICMgQ09ORklHX1FVT1RBIGlzIG5vdCBzZXQKLUNPTkZJR19ETk9USUZZPXkKICMgQ09ORklHX0FVVE9GU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19BVVRPRlM0X0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZVU0VfRlMgaXMgbm90IHNldApAQCAtMTA1Myw4ICsxMDYzLDEwIEBACiAjIENPTkZJR19KRkZTMl9SVUJJTiBpcyBub3Qgc2V0CiAjIENPTkZJR19DUkFNRlMgaXMgbm90IHNldAogIyBDT05GSUdfVlhGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19IUEZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1FOWDRGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TWVNWX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1VGU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRXT1JLX0ZJTEVTWVNURU1TIGlzIG5vdCBzZXQKQEAgLTExMjEsNyArMTEzMyw2IEBACiAjIENPTkZJR19OTFNfS09JOF9VIGlzIG5vdCBzZXQKIENPTkZJR19OTFNfVVRGOD15CiAjIENPTkZJR19ETE0gaXMgbm90IHNldAotIyBDT05GSUdfVUNDX1NMT1cgaXMgbm90IHNldAogCiAjCiAjIExpYnJhcnkgcm91dGluZXMKQEAgLTExMzksOSArMTE1MCw2IEBACiBDT05GSUdfSEFTX0lPTUVNPXkKIENPTkZJR19IQVNfSU9QT1JUPXkKIENPTkZJR19IQVNfRE1BPXkKLUNPTkZJR19JTlNUUlVNRU5UQVRJT049eQotIyBDT05GSUdfUFJPRklMSU5HIGlzIG5vdCBzZXQKLSMgQ09ORklHX01BUktFUlMgaXMgbm90IHNldAogCiAjCiAjIEtlcm5lbCBoYWNraW5nCkBAIC0xMTU1LDYgKzExNjMsNyBAQAogIyBDT05GSUdfSEVBREVSU19DSEVDSyBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19LRVJORUwgaXMgbm90IHNldAogIyBDT05GSUdfU0xVQl9ERUJVR19PTiBpcyBub3Qgc2V0CisjIENPTkZJR19TTFVCX1NUQVRTIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX0JVR1ZFUkJPU0UgaXMgbm90IHNldAogIyBDT05GSUdfU0FNUExFUyBpcyBub3Qgc2V0CiAjIENPTkZJR19CT09UWF9URVhUIGlzIG5vdCBzZXQKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9jb25maWdzL3N0eF9ncDNfZGVmY29uZmlnIGIvYXJjaC9wb3dlcnBjL2NvbmZpZ3Mvc3R4X2dwM19kZWZjb25maWcKaW5kZXggZTgxMzdhOC4uMWQzMDNjNCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2NvbmZpZ3Mvc3R4X2dwM19kZWZjb25maWcKKysrIGIvYXJjaC9wb3dlcnBjL2NvbmZpZ3Mvc3R4X2dwM19kZWZjb25maWcKQEAgLTEsNyArMSw3IEBACiAjCiAjIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIG1ha2UgY29uZmlnOiBkb24ndCBlZGl0Ci0jIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMjQtcmM4Ci0jIFRodSBKYW4gMjQgMDI6MDI6MzAgMjAwOAorIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjI1LXJjNgorIyBNb24gTWFyIDI0IDA4OjQ4OjQyIDIwMDgKICMKICMgQ09ORklHX1BQQzY0IGlzIG5vdCBzZXQKIApAQCAtMTQsMTAgKzE0LDEwIEBACiAjIENPTkZJR180MHggaXMgbm90IHNldAogIyBDT05GSUdfNDR4IGlzIG5vdCBzZXQKICMgQ09ORklHX0UyMDAgaXMgbm90IHNldAotQ09ORklHXzg1eHg9eQogQ09ORklHX0U1MDA9eQogQ09ORklHX0JPT0tFPXkKIENPTkZJR19GU0xfQk9PS0U9eQorQ09ORklHX0ZTTF9FTUJfUEVSRk1PTj15CiAjIENPTkZJR19QSFlTXzY0QklUIGlzIG5vdCBzZXQKIENPTkZJR19TUEU9eQogIyBDT05GSUdfUFBDX01NX1NMSUNFUyBpcyBub3Qgc2V0CkBAIC0zMCw2ICszMCw3IEBACiBDT05GSUdfR0VORVJJQ19USU1FX1ZTWVNDQUxMPXkKIENPTkZJR19HRU5FUklDX0NMT0NLRVZFTlRTPXkKIENPTkZJR19HRU5FUklDX0hBUkRJUlFTPXkKKyMgQ09ORklHX0hBVkVfU0VUVVBfUEVSX0NQVV9BUkVBIGlzIG5vdCBzZXQKIENPTkZJR19JUlFfUEVSX0NQVT15CiBDT05GSUdfUldTRU1fWENIR0FERF9BTEdPUklUSE09eQogQ09ORklHX0FSQ0hfSEFTX0lMT0cyX1UzMj15CkBAIC02NywxNyArNjgsMTkgQEAKICMgQ09ORklHX1BPU0lYX01RVUVVRSBpcyBub3Qgc2V0CiAjIENPTkZJR19CU0RfUFJPQ0VTU19BQ0NUIGlzIG5vdCBzZXQKICMgQ09ORklHX1RBU0tTVEFUUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19VU0VSX05TIGlzIG5vdCBzZXQKLSMgQ09ORklHX1BJRF9OUyBpcyBub3Qgc2V0CiAjIENPTkZJR19BVURJVCBpcyBub3Qgc2V0CiAjIENPTkZJR19JS0NPTkZJRyBpcyBub3Qgc2V0CiBDT05GSUdfTE9HX0JVRl9TSElGVD0xNAogIyBDT05GSUdfQ0dST1VQUyBpcyBub3Qgc2V0CitDT05GSUdfR1JPVVBfU0NIRUQ9eQogQ09ORklHX0ZBSVJfR1JPVVBfU0NIRUQ9eQotQ09ORklHX0ZBSVJfVVNFUl9TQ0hFRD15Ci0jIENPTkZJR19GQUlSX0NHUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CisjIENPTkZJR19SVF9HUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CitDT05GSUdfVVNFUl9TQ0hFRD15CisjIENPTkZJR19DR1JPVVBfU0NIRUQgaXMgbm90IHNldAogQ09ORklHX1NZU0ZTX0RFUFJFQ0FURUQ9eQorQ09ORklHX1NZU0ZTX0RFUFJFQ0FURURfVjI9eQogIyBDT05GSUdfUkVMQVkgaXMgbm90IHNldAorIyBDT05GSUdfTkFNRVNQQUNFUyBpcyBub3Qgc2V0CiBDT05GSUdfQkxLX0RFVl9JTklUUkQ9eQogQ09ORklHX0lOSVRSQU1GU19TT1VSQ0U9IiIKICMgQ09ORklHX0NDX09QVElNSVpFX0ZPUl9TSVpFIGlzIG5vdCBzZXQKQEAgLTkxLDExICs5NCwxMyBAQAogQ09ORklHX1BSSU5USz15CiBDT05GSUdfQlVHPXkKIENPTkZJR19FTEZfQ09SRT15CitDT05GSUdfQ09NUEFUX0JSSz15CiBDT05GSUdfQkFTRV9GVUxMPXkKIENPTkZJR19GVVRFWD15CiBDT05GSUdfQU5PTl9JTk9ERVM9eQogQ09ORklHX0VQT0xMPXkKIENPTkZJR19TSUdOQUxGRD15CitDT05GSUdfVElNRVJGRD15CiBDT05GSUdfRVZFTlRGRD15CiBDT05GSUdfU0hNRU09eQogQ09ORklHX1ZNX0VWRU5UX0NPVU5URVJTPXkKQEAgLTEwMyw2ICsxMDgsMTMgQEAKICMgQ09ORklHX1NMQUIgaXMgbm90IHNldAogQ09ORklHX1NMVUI9eQogIyBDT05GSUdfU0xPQiBpcyBub3Qgc2V0CisjIENPTkZJR19QUk9GSUxJTkcgaXMgbm90IHNldAorIyBDT05GSUdfTUFSS0VSUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9PUFJPRklMRT15CisjIENPTkZJR19LUFJPQkVTIGlzIG5vdCBzZXQKK0NPTkZJR19IQVZFX0tQUk9CRVM9eQorQ09ORklHX0hBVkVfS1JFVFBST0JFUz15CitDT05GSUdfUFJPQ19QQUdFX01PTklUT1I9eQogQ09ORklHX1NMQUJJTkZPPXkKIENPTkZJR19SVF9NVVRFWEVTPXkKICMgQ09ORklHX1RJTllfU0hNRU0gaXMgbm90IHNldApAQCAtMTMwLDIzICsxNDIsMjkgQEAKIENPTkZJR19ERUZBVUxUX0NGUT15CiAjIENPTkZJR19ERUZBVUxUX05PT1AgaXMgbm90IHNldAogQ09ORklHX0RFRkFVTFRfSU9TQ0hFRD0iY2ZxIgorQ09ORklHX0NMQVNTSUNfUkNVPXkKIAogIwogIyBQbGF0Zm9ybSBzdXBwb3J0CiAjCi0jIENPTkZJR19QUENfTVBDNTJ4eCBpcyBub3Qgc2V0Ci0jIENPTkZJR19QUENfTVBDNTIwMCBpcyBub3Qgc2V0CisjIENPTkZJR19QUENfTVBDNTEyeCBpcyBub3Qgc2V0CisjIENPTkZJR19QUENfTVBDNTEyMSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfQ0VMTCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfQ0VMTF9OQVRJVkUgaXMgbm90IHNldAogIyBDT05GSUdfUFEyQURTIGlzIG5vdCBzZXQKK0NPTkZJR19NUEM4NXh4PXkKICMgQ09ORklHX01QQzg1NDBfQURTIGlzIG5vdCBzZXQKICMgQ09ORklHX01QQzg1NjBfQURTIGlzIG5vdCBzZXQKICMgQ09ORklHX01QQzg1eHhfQ0RTIGlzIG5vdCBzZXQKICMgQ09ORklHX01QQzg1eHhfTURTIGlzIG5vdCBzZXQKICMgQ09ORklHX01QQzg1eHhfRFMgaXMgbm90IHNldAogQ09ORklHX1NUWF9HUDM9eQotQ09ORklHX01QQzg1NjA9eQotQ09ORklHX01QQzg1eHg9eQorIyBDT05GSUdfVFFNODU0MCBpcyBub3Qgc2V0CisjIENPTkZJR19UUU04NTQxIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RRTTg1NTUgaXMgbm90IHNldAorIyBDT05GSUdfVFFNODU2MCBpcyBub3Qgc2V0CisjIENPTkZJR19TQkM4NTQ4IGlzIG5vdCBzZXQKKyMgQ09ORklHX1NCQzg1NjAgaXMgbm90IHNldAogIyBDT05GSUdfSVBJQyBpcyBub3Qgc2V0CiBDT05GSUdfTVBJQz15CiAjIENPTkZJR19NUElDX1dFSVJEIGlzIG5vdCBzZXQKQEAgLTE3NiwxMyArMTk0LDE3IEBACiAjIENPTkZJR19IWl8zMDAgaXMgbm90IHNldAogIyBDT05GSUdfSFpfMTAwMCBpcyBub3Qgc2V0CiBDT05GSUdfSFo9MjUwCisjIENPTkZJR19TQ0hFRF9IUlRJQ0sgaXMgbm90IHNldAogQ09ORklHX1BSRUVNUFRfTk9ORT15CiAjIENPTkZJR19QUkVFTVBUX1ZPTFVOVEFSWSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUkVFTVBUIGlzIG5vdCBzZXQKIENPTkZJR19CSU5GTVRfRUxGPXkKIENPTkZJR19CSU5GTVRfTUlTQz1tCiBDT05GSUdfTUFUSF9FTVVMQVRJT049eQorIyBDT05GSUdfSU9NTVVfSEVMUEVSIGlzIG5vdCBzZXQKIENPTkZJR19BUkNIX0VOQUJMRV9NRU1PUllfSE9UUExVRz15CitDT05GSUdfQVJDSF9IQVNfV0FMS19NRU1PUlk9eQorQ09ORklHX0FSQ0hfRU5BQkxFX01FTU9SWV9IT1RSRU1PVkU9eQogQ09ORklHX0FSQ0hfRkxBVE1FTV9FTkFCTEU9eQogQ09ORklHX0FSQ0hfUE9QVUxBVEVTX05PREVfTUFQPXkKIENPTkZJR19TRUxFQ1RfTUVNT1JZX01PREVMPXkKQEAgLTIwMSwxMSArMjIzLDcgQEAKIENPTkZJR19QUk9DX0RFVklDRVRSRUU9eQogIyBDT05GSUdfQ01ETElORV9CT09MIGlzIG5vdCBzZXQKICMgQ09ORklHX1BNIGlzIG5vdCBzZXQKLUNPTkZJR19TVVNQRU5EX1VQX1BPU1NJQkxFPXkKLUNPTkZJR19ISUJFUk5BVElPTl9VUF9QT1NTSUJMRT15CiBDT05GSUdfU0VDQ09NUD15Ci1DT05GSUdfV0FOVF9ERVZJQ0VfVFJFRT15Ci1DT05GSUdfREVWSUNFX1RSRUU9InN0eF9ncDNfODU2MC5kdHMiCiBDT05GSUdfSVNBX0RNQV9BUEk9eQogCiAjCkBAIC0yNTUsNiArMjczLDcgQEAKICMgQ09ORklHX1hGUk1fVVNFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19YRlJNX1NVQl9QT0xJQ1kgaXMgbm90IHNldAogIyBDT05GSUdfWEZSTV9NSUdSQVRFIGlzIG5vdCBzZXQKKyMgQ09ORklHX1hGUk1fU1RBVElTVElDUyBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRfS0VZIGlzIG5vdCBzZXQKIENPTkZJR19JTkVUPXkKICMgQ09ORklHX0lQX01VTFRJQ0FTVCBpcyBub3Qgc2V0CkBAIC0yOTAsMzEgKzMwOSwzNiBAQAogIyBDT05GSUdfTkVUV09SS19TRUNNQVJLIGlzIG5vdCBzZXQKIENPTkZJR19ORVRGSUxURVI9eQogIyBDT05GSUdfTkVURklMVEVSX0RFQlVHIGlzIG5vdCBzZXQKK0NPTkZJR19ORVRGSUxURVJfQURWQU5DRUQ9eQogCiAjCiAjIENvcmUgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24KICMKLSMgQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LIGlzIG5vdCBzZXQKLSMgQ09ORklHX05GX0NPTk5UUkFDS19FTkFCTEVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LX1FVRVVFIGlzIG5vdCBzZXQKKyMgQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LX0xPRyBpcyBub3Qgc2V0CiAjIENPTkZJR19ORl9DT05OVFJBQ0sgaXMgbm90IHNldAogQ09ORklHX05FVEZJTFRFUl9YVEFCTEVTPW0KICMgQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfQ0xBU1NJRlkgaXMgbm90IHNldAogIyBDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9NQVJLIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfTkZRVUVVRSBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX05GTE9HIGlzIG5vdCBzZXQKKyMgQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfUkFURUVTVCBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX1RDUE1TUyBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfQ09NTUVOVCBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfRENDUCBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfRFNDUCBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfRVNQIGlzIG5vdCBzZXQKKyMgQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9JUFJBTkdFIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9MRU5HVEggaXMgbm90IHNldAogIyBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0xJTUlUIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9NQUMgaXMgbm90IHNldAogIyBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX01BUksgaXMgbm90IHNldAorIyBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX09XTkVSIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9QT0xJQ1kgaXMgbm90IHNldAogIyBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX01VTFRJUE9SVCBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfUEtUVFlQRSBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfUVVPVEEgaXMgbm90IHNldAorIyBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1JBVEVFU1QgaXMgbm90IHNldAogIyBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1JFQUxNIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9TQ1RQIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9TVEFUSVNUSUMgaXMgbm90IHNldApAQCAtMzI5LDEzICszNTMsMTAgQEAKICMKICMgQ09ORklHX0lQX05GX1FVRVVFIGlzIG5vdCBzZXQKIENPTkZJR19JUF9ORl9JUFRBQkxFUz1tCi0jIENPTkZJR19JUF9ORl9NQVRDSF9JUFJBTkdFIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lQX05GX01BVENIX1RPUyBpcyBub3Qgc2V0CiAjIENPTkZJR19JUF9ORl9NQVRDSF9SRUNFTlQgaXMgbm90IHNldAogIyBDT05GSUdfSVBfTkZfTUFUQ0hfRUNOIGlzIG5vdCBzZXQKICMgQ09ORklHX0lQX05GX01BVENIX0FIIGlzIG5vdCBzZXQKICMgQ09ORklHX0lQX05GX01BVENIX1RUTCBpcyBub3Qgc2V0Ci0jIENPTkZJR19JUF9ORl9NQVRDSF9PV05FUiBpcyBub3Qgc2V0CiAjIENPTkZJR19JUF9ORl9NQVRDSF9BRERSVFlQRSBpcyBub3Qgc2V0CiBDT05GSUdfSVBfTkZfRklMVEVSPW0KICMgQ09ORklHX0lQX05GX1RBUkdFVF9SRUpFQ1QgaXMgbm90IHNldApAQCAtMzY1LDYgKzM4Niw3IEBACiAjCiBDT05GSUdfTkVUX1BLVEdFTj15CiAjIENPTkZJR19IQU1SQURJTyBpcyBub3Qgc2V0CisjIENPTkZJR19DQU4gaXMgbm90IHNldAogIyBDT05GSUdfSVJEQSBpcyBub3Qgc2V0CiAjIENPTkZJR19CVCBpcyBub3Qgc2V0CiAjIENPTkZJR19BRl9SWFJQQyBpcyBub3Qgc2V0CkBAIC00MTgsNyArNDQwLDcgQEAKIENPTkZJR19CTEtfREVWX1JBTT15CiBDT05GSUdfQkxLX0RFVl9SQU1fQ09VTlQ9MTYKIENPTkZJR19CTEtfREVWX1JBTV9TSVpFPTMyNzY4Ci1DT05GSUdfQkxLX0RFVl9SQU1fQkxPQ0tTSVpFPTEwMjQKKyMgQ09ORklHX0JMS19ERVZfWElQIGlzIG5vdCBzZXQKICMgQ09ORklHX0NEUk9NX1BLVENEVkQgaXMgbm90IHNldAogIyBDT05GSUdfQVRBX09WRVJfRVRIIGlzIG5vdCBzZXQKIENPTkZJR19NSVNDX0RFVklDRVM9eQpAQCAtNDI2LDE3ICs0NDgsMjAgQEAKICMgQ09ORklHX0VFUFJPTV85M0NYNiBpcyBub3Qgc2V0CiAjIENPTkZJR19TR0lfSU9DNCBpcyBub3Qgc2V0CiAjIENPTkZJR19USUZNX0NPUkUgaXMgbm90IHNldAorIyBDT05GSUdfRU5DTE9TVVJFX1NFUlZJQ0VTIGlzIG5vdCBzZXQKK0NPTkZJR19IQVZFX0lERT15CiBDT05GSUdfSURFPXkKIENPTkZJR19JREVfTUFYX0hXSUZTPTQKIENPTkZJR19CTEtfREVWX0lERT15CiAKICMKLSMgUGxlYXNlIHNlZSBEb2N1bWVudGF0aW9uL2lkZS50eHQgZm9yIGhlbHAvaW5mbyBvbiBJREUgZHJpdmVzCisjIFBsZWFzZSBzZWUgRG9jdW1lbnRhdGlvbi9pZGUvaWRlLnR4dCBmb3IgaGVscC9pbmZvIG9uIElERSBkcml2ZXMKICMKICMgQ09ORklHX0JMS19ERVZfSURFX1NBVEEgaXMgbm90IHNldAogQ09ORklHX0JMS19ERVZfSURFRElTSz15CiAjIENPTkZJR19JREVESVNLX01VTFRJX01PREUgaXMgbm90IHNldAogQ09ORklHX0JMS19ERVZfSURFQ0Q9bQorQ09ORklHX0JMS19ERVZfSURFQ0RfVkVSQk9TRV9FUlJPUlM9eQogIyBDT05GSUdfQkxLX0RFVl9JREVUQVBFIGlzIG5vdCBzZXQKICMgQ09ORklHX0JMS19ERVZfSURFRkxPUFBZIGlzIG5vdCBzZXQKICMgQ09ORklHX0JMS19ERVZfSURFU0NTSSBpcyBub3Qgc2V0CkBAIC00NTIsNyArNDc3LDYgQEAKICMKICMgUENJIElERSBjaGlwc2V0cyBzdXBwb3J0CiAjCi0jIENPTkZJR19JREVQQ0lfUENJQlVTX09SREVSIGlzIG5vdCBzZXQKICMgQ09ORklHX0JMS19ERVZfR0VORVJJQyBpcyBub3Qgc2V0CiAjIENPTkZJR19CTEtfREVWX09QVEk2MjEgaXMgbm90IHNldAogIyBDT05GSUdfQkxLX0RFVl9BRUM2MlhYIGlzIG5vdCBzZXQKQEAgLTQ4MCw3ICs1MDQsNiBAQAogIyBDT05GSUdfQkxLX0RFVl9UUk0yOTAgaXMgbm90IHNldAogIyBDT05GSUdfQkxLX0RFVl9WSUE4MkNYWFggaXMgbm90IHNldAogIyBDT05GSUdfQkxLX0RFVl9UQzg2QzAwMSBpcyBub3Qgc2V0Ci0jIENPTkZJR19JREVfQVJNIGlzIG5vdCBzZXQKICMgQ09ORklHX0JMS19ERVZfSURFRE1BIGlzIG5vdCBzZXQKIENPTkZJR19JREVfQVJDSF9PQlNPTEVURV9JTklUPXkKICMgQ09ORklHX0JMS19ERVZfSEQgaXMgbm90IHNldApAQCAtNTUwLDYgKzU3Myw3IEBACiAjIENPTkZJR19TQ1NJX0lOSUExMDAgaXMgbm90IHNldAogIyBDT05GSUdfU0NTSV9QUEEgaXMgbm90IHNldAogIyBDT05GSUdfU0NTSV9JTU0gaXMgbm90IHNldAorIyBDT05GSUdfU0NTSV9NVlNBUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX1NURVggaXMgbm90IHNldAogIyBDT05GSUdfU0NTSV9TWU01M0M4WFhfMiBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX1FMT0dJQ18xMjgwIGlzIG5vdCBzZXQKQEAgLTU5NSw2ICs2MTksNyBAQAogIyBDT05GSUdfU01TQ19QSFkgaXMgbm90IHNldAogIyBDT05GSUdfQlJPQURDT01fUEhZIGlzIG5vdCBzZXQKICMgQ09ORklHX0lDUExVU19QSFkgaXMgbm90IHNldAorIyBDT05GSUdfUkVBTFRFS19QSFkgaXMgbm90IHNldAogIyBDT05GSUdfRklYRURfUEhZIGlzIG5vdCBzZXQKICMgQ09ORklHX01ESU9fQklUQkFORyBpcyBub3Qgc2V0CiBDT05GSUdfTkVUX0VUSEVSTkVUPXkKQEAgLTYxOCw3ICs2NDMsOSBAQAogIyBDT05GSUdfREwySyBpcyBub3Qgc2V0CiAjIENPTkZJR19FMTAwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19FMTAwMEUgaXMgbm90IHNldAorIyBDT05GSUdfRTEwMDBFX0VOQUJMRUQgaXMgbm90IHNldAogIyBDT05GSUdfSVAxMDAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lHQiBpcyBub3Qgc2V0CiAjIENPTkZJR19OUzgzODIwIGlzIG5vdCBzZXQKICMgQ09ORklHX0hBTUFDSEkgaXMgbm90IHNldAogIyBDT05GSUdfWUVMTE9XRklOIGlzIG5vdCBzZXQKQEAgLTY0NSw2ICs2NzIsNyBAQAogIyBDT05GSUdfTklVIGlzIG5vdCBzZXQKICMgQ09ORklHX01MWDRfQ09SRSBpcyBub3Qgc2V0CiAjIENPTkZJR19URUhVVEkgaXMgbm90IHNldAorIyBDT05GSUdfQk5YMlggaXMgbm90IHNldAogIyBDT05GSUdfVFIgaXMgbm90IHNldAogCiAjCkBAIC02NTksNyArNjg3LDYgQEAKICMgQ09ORklHX1BQUCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTElQIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9GQyBpcyBub3Qgc2V0Ci0jIENPTkZJR19TSEFQRVIgaXMgbm90IHNldAogIyBDT05GSUdfTkVUQ09OU09MRSBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRQT0xMIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9QT0xMX0NPTlRST0xMRVIgaXMgbm90IHNldApAQCAtNzI3LDYgKzc1NCw3IEBACiAjCiAjIENPTkZJR19WVCBpcyBub3Qgc2V0CiAjIENPTkZJR19TRVJJQUxfTk9OU1RBTkRBUkQgaXMgbm90IHNldAorIyBDT05GSUdfTk9aT01JIGlzIG5vdCBzZXQKIAogIwogIyBTZXJpYWwgZHJpdmVycwpAQCAtODA1LDE0ICs4MzMsMTIgQEAKICMKICMgTWlzY2VsbGFuZW91cyBJMkMgQ2hpcCBzdXBwb3J0CiAjCi0jIENPTkZJR19TRU5TT1JTX0RTMTMzNyBpcyBub3Qgc2V0Ci0jIENPTkZJR19TRU5TT1JTX0RTMTM3NCBpcyBub3Qgc2V0CiAjIENPTkZJR19EUzE2ODIgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19FRVBST00gaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19QQ0Y4NTc0IGlzIG5vdCBzZXQKLSMgQ09ORklHX1NFTlNPUlNfUENBOTUzOSBpcyBub3Qgc2V0CisjIENPTkZJR19QQ0Y4NTc1IGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfUENGODU5MSBpcyBub3Qgc2V0Ci0jIENPTkZJR19TRU5TT1JTX000MVQwMCBpcyBub3Qgc2V0CisjIENPTkZJR19UUFM2NTAxMCBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX01BWDY4NzUgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19UU0wyNTUwIGlzIG5vdCBzZXQKICMgQ09ORklHX0kyQ19ERUJVR19DT1JFIGlzIG5vdCBzZXQKQEAgLTgzNyw2ICs4NjMsNyBAQAogIyBDT05GSUdfU0VOU09SU19BRE0xMDMxIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfQURNOTI0MCBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0FEVDc0NzAgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19BRFQ3NDczIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfQVRYUDEgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19EUzE2MjEgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19JNUtfQU1CIGlzIG5vdCBzZXQKQEAgLTg2Niw2ICs4OTMsNyBAQAogIyBDT05GSUdfU0VOU09SU19TTVNDNDdNMSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1NNU0M0N00xOTIgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19TTVNDNDdCMzk3IGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNPUlNfQURTNzgyOCBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1RITUM1MCBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1ZJQTY4NkEgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19WVDEyMTEgaXMgbm90IHNldApAQCAtODc1LDkgKzkwMywxMSBAQAogIyBDT05GSUdfU0VOU09SU19XODM3OTJEIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVzgzNzkzIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVzgzTDc4NVRTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNPUlNfVzgzTDc4Nk5HIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVzgzNjI3SEYgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19XODM2MjdFSEYgaXMgbm90IHNldAogIyBDT05GSUdfSFdNT05fREVCVUdfQ0hJUCBpcyBub3Qgc2V0CisjIENPTkZJR19USEVSTUFMIGlzIG5vdCBzZXQKICMgQ09ORklHX1dBVENIRE9HIGlzIG5vdCBzZXQKIAogIwpAQCAtOTQ3LDE2ICs5NzcsMTQgQEAKICMKICMgTk9URTogVVNCX1NUT1JBR0UgZW5hYmxlcyBTQ1NJLCBhbmQgJ1NDU0kgZGlzayBzdXBwb3J0JwogIwotCi0jCi0jIFVTQiBHYWRnZXQgU3VwcG9ydAotIwogIyBDT05GSUdfVVNCX0dBREdFVCBpcyBub3Qgc2V0CiAjIENPTkZJR19NTUMgaXMgbm90IHNldAorIyBDT05GSUdfTUVNU1RJQ0sgaXMgbm90IHNldAogIyBDT05GSUdfTkVXX0xFRFMgaXMgbm90IHNldAogIyBDT05GSUdfSU5GSU5JQkFORCBpcyBub3Qgc2V0CiAjIENPTkZJR19FREFDIGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19DTEFTUyBpcyBub3Qgc2V0CisjIENPTkZJR19ETUFERVZJQ0VTIGlzIG5vdCBzZXQKICMgQ09ORklHX0FVWERJU1BMQVkgaXMgbm90IHNldAogCiAjCkBAIC05ODMsMTIgKzEwMTEsMTAgQEAKICMgQ09ORklHX1hGU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19HRlMyX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX09DRlMyX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX01JTklYX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1JPTUZTX0ZTIGlzIG5vdCBzZXQKK0NPTkZJR19ETk9USUZZPXkKIENPTkZJR19JTk9USUZZPXkKIENPTkZJR19JTk9USUZZX1VTRVI9eQogIyBDT05GSUdfUVVPVEEgaXMgbm90IHNldAotQ09ORklHX0ROT1RJRlk9eQogQ09ORklHX0FVVE9GU19GUz1tCiBDT05GSUdfQVVUT0ZTNF9GUz15CiAjIENPTkZJR19GVVNFX0ZTIGlzIG5vdCBzZXQKQEAgLTEwMzYsOCArMTA2MiwxMCBAQAogIyBDT05GSUdfRUZTX0ZTIGlzIG5vdCBzZXQKIENPTkZJR19DUkFNRlM9bQogIyBDT05GSUdfVlhGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19IUEZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1FOWDRGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TWVNWX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1VGU19GUyBpcyBub3Qgc2V0CiBDT05GSUdfTkVUV09SS19GSUxFU1lTVEVNUz15CkBAIC0xMTI0LDEwICsxMTUyLDYgQEAKIENPTkZJR19IQVNfSU9NRU09eQogQ09ORklHX0hBU19JT1BPUlQ9eQogQ09ORklHX0hBU19ETUE9eQotQ09ORklHX0lOU1RSVU1FTlRBVElPTj15Ci0jIENPTkZJR19QUk9GSUxJTkcgaXMgbm90IHNldAotIyBDT05GSUdfS1BST0JFUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19NQVJLRVJTIGlzIG5vdCBzZXQKIAogIwogIyBLZXJuZWwgaGFja2luZwpAQCAtMTE0Niw2ICsxMTcwLDcgQEAKICMgQ09ORklHX1NDSEVEU1RBVFMgaXMgbm90IHNldAogIyBDT05GSUdfVElNRVJfU1RBVFMgaXMgbm90IHNldAogIyBDT05GSUdfU0xVQl9ERUJVR19PTiBpcyBub3Qgc2V0CisjIENPTkZJR19TTFVCX1NUQVRTIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1JUX01VVEVYRVMgaXMgbm90IHNldAogIyBDT05GSUdfUlRfTVVURVhfVEVTVEVSIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NQSU5MT0NLIGlzIG5vdCBzZXQKQEAgLTExNTksOSArMTE4NCw5IEBACiAjIENPTkZJR19ERUJVR19WTSBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19MSVNUIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NHIGlzIG5vdCBzZXQKLUNPTkZJR19GT1JDRURfSU5MSU5JTkc9eQogIyBDT05GSUdfQk9PVF9QUklOVEtfREVMQVkgaXMgbm90IHNldAogIyBDT05GSUdfUkNVX1RPUlRVUkVfVEVTVCBpcyBub3Qgc2V0CisjIENPTkZJR19CQUNLVFJBQ0VfU0VMRl9URVNUIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZBVUxUX0lOSkVDVElPTiBpcyBub3Qgc2V0CiAjIENPTkZJR19TQU1QTEVTIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NUQUNLT1ZFUkZMT1cgaXMgbm90IHNldApAQCAtMTE3OCw2ICsxMjAzLDUxIEBACiAjIENPTkZJR19LRVlTIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFQ1VSSVRZIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFQ1VSSVRZX0ZJTEVfQ0FQQUJJTElUSUVTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0NSWVBUTyBpcyBub3Qgc2V0CitDT05GSUdfQ1JZUFRPPXkKKyMgQ09ORklHX0NSWVBUT19TRVFJViBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fTUFOQUdFUiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fSE1BQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fWENCQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fTlVMTCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fTUQ0IGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19NRDUgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1NIQTEgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1NIQTI1NiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0hBNTEyIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19XUDUxMiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fVEdSMTkyIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19HRjEyOE1VTCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fRUNCIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DQkMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1BDQkMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0xSVyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fWFRTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DVFIgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0dDTSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ0NNIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DUllQVEQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0RFUyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fRkNSWVBUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19CTE9XRklTSCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fVFdPRklTSCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0VSUEVOVCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQUVTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DQVNUNSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ0FTVDYgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1RFQSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQVJDNCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fS0hBWkFEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19BTlVCSVMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1NFRUQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1NBTFNBMjAgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0RFRkxBVEUgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX01JQ0hBRUxfTUlDIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DUkMzMkMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NBTUVMTElBIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19URVNUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19BVVRIRU5DIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19MWk8gaXMgbm90IHNldAorQ09ORklHX0NSWVBUT19IVz15CisjIENPTkZJR19DUllQVE9fREVWX0hJRk5fNzk1WCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfQ0xPQ0sgaXMgbm90IHNldAogQ09ORklHX1BQQ19MSUJfUkhFQVA9eQpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvdHFtODU0MF9kZWZjb25maWcgYi9hcmNoL3Bvd2VycGMvY29uZmlncy90cW04NTQwX2RlZmNvbmZpZwppbmRleCA3MzJkZTM0Li5kMzllZTNiIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvY29uZmlncy90cW04NTQwX2RlZmNvbmZpZworKysgYi9hcmNoL3Bvd2VycGMvY29uZmlncy90cW04NTQwX2RlZmNvbmZpZwpAQCAtMSw3ICsxLDcgQEAKICMKICMgQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgbWFrZSBjb25maWc6IGRvbid0IGVkaXQKLSMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4yNC1yYzgKLSMgRnJpIEphbiAyNSAwMTozMjowNSAyMDA4CisjIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMjUtcmM2CisjIE1vbiBNYXIgMjQgMDg6NDg6NDMgMjAwOAogIwogIyBDT05GSUdfUFBDNjQgaXMgbm90IHNldAogCkBAIC0xNCwxMCArMTQsMTAgQEAKICMgQ09ORklHXzQweCBpcyBub3Qgc2V0CiAjIENPTkZJR180NHggaXMgbm90IHNldAogIyBDT05GSUdfRTIwMCBpcyBub3Qgc2V0Ci1DT05GSUdfODV4eD15CiBDT05GSUdfRTUwMD15CiBDT05GSUdfQk9PS0U9eQogQ09ORklHX0ZTTF9CT09LRT15CitDT05GSUdfRlNMX0VNQl9QRVJGTU9OPXkKICMgQ09ORklHX1BIWVNfNjRCSVQgaXMgbm90IHNldAogQ09ORklHX1NQRT15CiAjIENPTkZJR19QUENfTU1fU0xJQ0VTIGlzIG5vdCBzZXQKQEAgLTMwLDYgKzMwLDcgQEAKIENPTkZJR19HRU5FUklDX1RJTUVfVlNZU0NBTEw9eQogQ09ORklHX0dFTkVSSUNfQ0xPQ0tFVkVOVFM9eQogQ09ORklHX0dFTkVSSUNfSEFSRElSUVM9eQorIyBDT05GSUdfSEFWRV9TRVRVUF9QRVJfQ1BVX0FSRUEgaXMgbm90IHNldAogQ09ORklHX0lSUV9QRVJfQ1BVPXkKIENPTkZJR19SV1NFTV9YQ0hHQUREX0FMR09SSVRITT15CiBDT05GSUdfQVJDSF9IQVNfSUxPRzJfVTMyPXkKQEAgLTY3LDE3ICs2OCwxOSBAQAogIyBDT05GSUdfUE9TSVhfTVFVRVVFIGlzIG5vdCBzZXQKICMgQ09ORklHX0JTRF9QUk9DRVNTX0FDQ1QgaXMgbm90IHNldAogIyBDT05GSUdfVEFTS1NUQVRTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VTRVJfTlMgaXMgbm90IHNldAotIyBDT05GSUdfUElEX05TIGlzIG5vdCBzZXQKICMgQ09ORklHX0FVRElUIGlzIG5vdCBzZXQKICMgQ09ORklHX0lLQ09ORklHIGlzIG5vdCBzZXQKIENPTkZJR19MT0dfQlVGX1NISUZUPTE0CiAjIENPTkZJR19DR1JPVVBTIGlzIG5vdCBzZXQKK0NPTkZJR19HUk9VUF9TQ0hFRD15CiBDT05GSUdfRkFJUl9HUk9VUF9TQ0hFRD15Ci1DT05GSUdfRkFJUl9VU0VSX1NDSEVEPXkKLSMgQ09ORklHX0ZBSVJfQ0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JUX0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKK0NPTkZJR19VU0VSX1NDSEVEPXkKKyMgQ09ORklHX0NHUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CiBDT05GSUdfU1lTRlNfREVQUkVDQVRFRD15CitDT05GSUdfU1lTRlNfREVQUkVDQVRFRF9WMj15CiAjIENPTkZJR19SRUxBWSBpcyBub3Qgc2V0CisjIENPTkZJR19OQU1FU1BBQ0VTIGlzIG5vdCBzZXQKIENPTkZJR19CTEtfREVWX0lOSVRSRD15CiBDT05GSUdfSU5JVFJBTUZTX1NPVVJDRT0iIgogIyBDT05GSUdfQ0NfT1BUSU1JWkVfRk9SX1NJWkUgaXMgbm90IHNldApAQCAtODksMTEgKzkyLDEzIEBACiBDT05GSUdfUFJJTlRLPXkKIENPTkZJR19CVUc9eQogQ09ORklHX0VMRl9DT1JFPXkKK0NPTkZJR19DT01QQVRfQlJLPXkKIENPTkZJR19CQVNFX0ZVTEw9eQogQ09ORklHX0ZVVEVYPXkKIENPTkZJR19BTk9OX0lOT0RFUz15CiAjIENPTkZJR19FUE9MTCBpcyBub3Qgc2V0CiBDT05GSUdfU0lHTkFMRkQ9eQorQ09ORklHX1RJTUVSRkQ9eQogQ09ORklHX0VWRU5URkQ9eQogQ09ORklHX1NITUVNPXkKIENPTkZJR19WTV9FVkVOVF9DT1VOVEVSUz15CkBAIC0xMDEsNiArMTA2LDEyIEBACiAjIENPTkZJR19TTEFCIGlzIG5vdCBzZXQKIENPTkZJR19TTFVCPXkKICMgQ09ORklHX1NMT0IgaXMgbm90IHNldAorIyBDT05GSUdfUFJPRklMSU5HIGlzIG5vdCBzZXQKKyMgQ09ORklHX01BUktFUlMgaXMgbm90IHNldAorQ09ORklHX0hBVkVfT1BST0ZJTEU9eQorQ09ORklHX0hBVkVfS1BST0JFUz15CitDT05GSUdfSEFWRV9LUkVUUFJPQkVTPXkKK0NPTkZJR19QUk9DX1BBR0VfTU9OSVRPUj15CiBDT05GSUdfU0xBQklORk89eQogQ09ORklHX1JUX01VVEVYRVM9eQogIyBDT05GSUdfVElOWV9TSE1FTSBpcyBub3Qgc2V0CkBAIC0xMjQsMTUgKzEzNSwxNyBAQAogIyBDT05GSUdfREVGQVVMVF9DRlEgaXMgbm90IHNldAogIyBDT05GSUdfREVGQVVMVF9OT09QIGlzIG5vdCBzZXQKIENPTkZJR19ERUZBVUxUX0lPU0NIRUQ9ImFudGljaXBhdG9yeSIKK0NPTkZJR19DTEFTU0lDX1JDVT15CiAKICMKICMgUGxhdGZvcm0gc3VwcG9ydAogIwotIyBDT05GSUdfUFBDX01QQzUyeHggaXMgbm90IHNldAotIyBDT05GSUdfUFBDX01QQzUyMDAgaXMgbm90IHNldAorIyBDT05GSUdfUFBDX01QQzUxMnggaXMgbm90IHNldAorIyBDT05GSUdfUFBDX01QQzUxMjEgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0NFTEwgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0NFTExfTkFUSVZFIGlzIG5vdCBzZXQKICMgQ09ORklHX1BRMkFEUyBpcyBub3Qgc2V0CitDT05GSUdfTVBDODV4eD15CiAjIENPTkZJR19NUEM4NTQwX0FEUyBpcyBub3Qgc2V0CiAjIENPTkZJR19NUEM4NTYwX0FEUyBpcyBub3Qgc2V0CiAjIENPTkZJR19NUEM4NXh4X0NEUyBpcyBub3Qgc2V0CkBAIC0xNDMsOCArMTU2LDkgQEAKICMgQ09ORklHX1RRTTg1NDEgaXMgbm90IHNldAogIyBDT05GSUdfVFFNODU1NSBpcyBub3Qgc2V0CiAjIENPTkZJR19UUU04NTYwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NCQzg1NDggaXMgbm90IHNldAorIyBDT05GSUdfU0JDODU2MCBpcyBub3Qgc2V0CiBDT05GSUdfVFFNODV4eD15Ci1DT05GSUdfTVBDODV4eD15CiAjIENPTkZJR19JUElDIGlzIG5vdCBzZXQKIENPTkZJR19NUElDPXkKICMgQ09ORklHX01QSUNfV0VJUkQgaXMgbm90IHNldApAQCAtMTczLDEzICsxODcsMTcgQEAKICMgQ09ORklHX0haXzMwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19IWl8xMDAwIGlzIG5vdCBzZXQKIENPTkZJR19IWj0yNTAKKyMgQ09ORklHX1NDSEVEX0hSVElDSyBpcyBub3Qgc2V0CiBDT05GSUdfUFJFRU1QVF9OT05FPXkKICMgQ09ORklHX1BSRUVNUFRfVk9MVU5UQVJZIGlzIG5vdCBzZXQKICMgQ09ORklHX1BSRUVNUFQgaXMgbm90IHNldAogQ09ORklHX0JJTkZNVF9FTEY9eQogIyBDT05GSUdfQklORk1UX01JU0MgaXMgbm90IHNldAogQ09ORklHX01BVEhfRU1VTEFUSU9OPXkKKyMgQ09ORklHX0lPTU1VX0hFTFBFUiBpcyBub3Qgc2V0CiBDT05GSUdfQVJDSF9FTkFCTEVfTUVNT1JZX0hPVFBMVUc9eQorQ09ORklHX0FSQ0hfSEFTX1dBTEtfTUVNT1JZPXkKK0NPTkZJR19BUkNIX0VOQUJMRV9NRU1PUllfSE9UUkVNT1ZFPXkKIENPTkZJR19BUkNIX0ZMQVRNRU1fRU5BQkxFPXkKIENPTkZJR19BUkNIX1BPUFVMQVRFU19OT0RFX01BUD15CiBDT05GSUdfU0VMRUNUX01FTU9SWV9NT0RFTD15CkBAIC0xOTgsMTEgKzIxNiw3IEBACiAjIENPTkZJR19QUk9DX0RFVklDRVRSRUUgaXMgbm90IHNldAogIyBDT05GSUdfQ01ETElORV9CT09MIGlzIG5vdCBzZXQKICMgQ09ORklHX1BNIGlzIG5vdCBzZXQKLUNPTkZJR19TVVNQRU5EX1VQX1BPU1NJQkxFPXkKLUNPTkZJR19ISUJFUk5BVElPTl9VUF9QT1NTSUJMRT15CiBDT05GSUdfU0VDQ09NUD15Ci1DT05GSUdfV0FOVF9ERVZJQ0VfVFJFRT15Ci1DT05GSUdfREVWSUNFX1RSRUU9InRxbTg1NDAuZHRzIgogQ09ORklHX0lTQV9ETUFfQVBJPXkKIAogIwpAQCAtMjQ5LDYgKzI2Myw3IEBACiAjIENPTkZJR19YRlJNX1VTRVIgaXMgbm90IHNldAogIyBDT05GSUdfWEZSTV9TVUJfUE9MSUNZIGlzIG5vdCBzZXQKICMgQ09ORklHX1hGUk1fTUlHUkFURSBpcyBub3Qgc2V0CisjIENPTkZJR19YRlJNX1NUQVRJU1RJQ1MgaXMgbm90IHNldAogIyBDT05GSUdfTkVUX0tFWSBpcyBub3Qgc2V0CiBDT05GSUdfSU5FVD15CiBDT05GSUdfSVBfTVVMVElDQVNUPXkKQEAgLTMwNCw2ICszMTksNyBAQAogIwogIyBDT05GSUdfTkVUX1BLVEdFTiBpcyBub3Qgc2V0CiAjIENPTkZJR19IQU1SQURJTyBpcyBub3Qgc2V0CisjIENPTkZJR19DQU4gaXMgbm90IHNldAogIyBDT05GSUdfSVJEQSBpcyBub3Qgc2V0CiAjIENPTkZJR19CVCBpcyBub3Qgc2V0CiAjIENPTkZJR19BRl9SWFJQQyBpcyBub3Qgc2V0CkBAIC0zMzUsNiArMzUxLDcgQEAKIENPTkZJR19NVERfUEFSVElUSU9OUz15CiAjIENPTkZJR19NVERfUkVEQk9PVF9QQVJUUyBpcyBub3Qgc2V0CiBDT05GSUdfTVREX0NNRExJTkVfUEFSVFM9eQorIyBDT05GSUdfTVREX09GX1BBUlRTIGlzIG5vdCBzZXQKIAogIwogIyBVc2VyIE1vZHVsZXMgQW5kIFRyYW5zbGF0aW9uIExheWVycwpAQCAtNDIxLDcgKzQzOCw3IEBACiBDT05GSUdfQkxLX0RFVl9SQU09eQogQ09ORklHX0JMS19ERVZfUkFNX0NPVU5UPTE2CiBDT05GSUdfQkxLX0RFVl9SQU1fU0laRT0zMjc2OAotQ09ORklHX0JMS19ERVZfUkFNX0JMT0NLU0laRT0xMDI0CisjIENPTkZJR19CTEtfREVWX1hJUCBpcyBub3Qgc2V0CiAjIENPTkZJR19DRFJPTV9QS1RDRFZEIGlzIG5vdCBzZXQKICMgQ09ORklHX0FUQV9PVkVSX0VUSCBpcyBub3Qgc2V0CiBDT05GSUdfTUlTQ19ERVZJQ0VTPXkKQEAgLTQyOSwxMiArNDQ2LDE0IEBACiAjIENPTkZJR19FRVBST01fOTNDWDYgaXMgbm90IHNldAogIyBDT05GSUdfU0dJX0lPQzQgaXMgbm90IHNldAogIyBDT05GSUdfVElGTV9DT1JFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VOQ0xPU1VSRV9TRVJWSUNFUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9JREU9eQogQ09ORklHX0lERT15CiBDT05GSUdfSURFX01BWF9IV0lGUz00CiBDT05GSUdfQkxLX0RFVl9JREU9eQogCiAjCi0jIFBsZWFzZSBzZWUgRG9jdW1lbnRhdGlvbi9pZGUudHh0IGZvciBoZWxwL2luZm8gb24gSURFIGRyaXZlcworIyBQbGVhc2Ugc2VlIERvY3VtZW50YXRpb24vaWRlL2lkZS50eHQgZm9yIGhlbHAvaW5mbyBvbiBJREUgZHJpdmVzCiAjCiAjIENPTkZJR19CTEtfREVWX0lERV9TQVRBIGlzIG5vdCBzZXQKIENPTkZJR19CTEtfREVWX0lERURJU0s9eQpAQCAtNDUwLDEyICs0NjksMTIgQEAKICMKIENPTkZJR19JREVfR0VORVJJQz15CiAjIENPTkZJR19CTEtfREVWX1BMQVRGT1JNIGlzIG5vdCBzZXQKK0NPTkZJR19CTEtfREVWX0lERURNQV9TRkY9eQogCiAjCiAjIFBDSSBJREUgY2hpcHNldHMgc3VwcG9ydAogIwogQ09ORklHX0JMS19ERVZfSURFUENJPXkKLUNPTkZJR19JREVQQ0lfU0hBUkVfSVJRPXkKIENPTkZJR19JREVQQ0lfUENJQlVTX09SREVSPXkKICMgQ09ORklHX0JMS19ERVZfT0ZGQk9BUkQgaXMgbm90IHNldAogQ09ORklHX0JMS19ERVZfR0VORVJJQz15CkBAIC00ODYsNyArNTA1LDYgQEAKICMgQ09ORklHX0JMS19ERVZfVFJNMjkwIGlzIG5vdCBzZXQKIENPTkZJR19CTEtfREVWX1ZJQTgyQ1hYWD15CiAjIENPTkZJR19CTEtfREVWX1RDODZDMDAxIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lERV9BUk0gaXMgbm90IHNldAogQ09ORklHX0JMS19ERVZfSURFRE1BPXkKIENPTkZJR19JREVfQVJDSF9PQlNPTEVURV9JTklUPXkKICMgQ09ORklHX0JMS19ERVZfSEQgaXMgbm90IHNldApAQCAtNTMyLDYgKzU1MCw3IEBACiAjIENPTkZJR19TTVNDX1BIWSBpcyBub3Qgc2V0CiAjIENPTkZJR19CUk9BRENPTV9QSFkgaXMgbm90IHNldAogIyBDT05GSUdfSUNQTFVTX1BIWSBpcyBub3Qgc2V0CisjIENPTkZJR19SRUFMVEVLX1BIWSBpcyBub3Qgc2V0CiAjIENPTkZJR19GSVhFRF9QSFkgaXMgbm90IHNldAogIyBDT05GSUdfTURJT19CSVRCQU5HIGlzIG5vdCBzZXQKIENPTkZJR19ORVRfRVRIRVJORVQ9eQpAQCAtNTU5LDYgKzU3OCw3IEBACiAjIENPTkZJR19ORTJLX1BDSSBpcyBub3Qgc2V0CiAjIENPTkZJR184MTM5Q1AgaXMgbm90IHNldAogIyBDT05GSUdfODEzOVRPTyBpcyBub3Qgc2V0CisjIENPTkZJR19SNjA0MCBpcyBub3Qgc2V0CiAjIENPTkZJR19TSVM5MDAgaXMgbm90IHNldAogIyBDT05GSUdfRVBJQzEwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19TVU5EQU5DRSBpcyBub3Qgc2V0CkBAIC01NzAsNyArNTkwLDkgQEAKICMgQ09ORklHX0RMMksgaXMgbm90IHNldAogIyBDT05GSUdfRTEwMDAgaXMgbm90IHNldAogIyBDT05GSUdfRTEwMDBFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0UxMDAwRV9FTkFCTEVEIGlzIG5vdCBzZXQKICMgQ09ORklHX0lQMTAwMCBpcyBub3Qgc2V0CisjIENPTkZJR19JR0IgaXMgbm90IHNldAogIyBDT05GSUdfTlM4MzgyMCBpcyBub3Qgc2V0CiAjIENPTkZJR19IQU1BQ0hJIGlzIG5vdCBzZXQKICMgQ09ORklHX1lFTExPV0ZJTiBpcyBub3Qgc2V0CkBAIC01OTcsNiArNjE5LDcgQEAKICMgQ09ORklHX05JVSBpcyBub3Qgc2V0CiAjIENPTkZJR19NTFg0X0NPUkUgaXMgbm90IHNldAogIyBDT05GSUdfVEVIVVRJIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JOWDJYIGlzIG5vdCBzZXQKICMgQ09ORklHX1RSIGlzIG5vdCBzZXQKIAogIwpAQCAtNjA5LDcgKzYzMiw2IEBACiAjIENPTkZJR19ISVBQSSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUFAgaXMgbm90IHNldAogIyBDT05GSUdfU0xJUCBpcyBub3Qgc2V0Ci0jIENPTkZJR19TSEFQRVIgaXMgbm90IHNldAogIyBDT05GSUdfTkVUQ09OU09MRSBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRQT0xMIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9QT0xMX0NPTlRST0xMRVIgaXMgbm90IHNldApAQCAtNjUyLDYgKzY3NCw3IEBACiAjCiAjIENPTkZJR19WVCBpcyBub3Qgc2V0CiAjIENPTkZJR19TRVJJQUxfTk9OU1RBTkRBUkQgaXMgbm90IHNldAorIyBDT05GSUdfTk9aT01JIGlzIG5vdCBzZXQKIAogIwogIyBTZXJpYWwgZHJpdmVycwpAQCAtNzI1LDE0ICs3NDgsMTIgQEAKICMKICMgTWlzY2VsbGFuZW91cyBJMkMgQ2hpcCBzdXBwb3J0CiAjCi1DT05GSUdfU0VOU09SU19EUzEzMzc9eQotIyBDT05GSUdfU0VOU09SU19EUzEzNzQgaXMgbm90IHNldAogIyBDT05GSUdfRFMxNjgyIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfRUVQUk9NIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfUENGODU3NCBpcyBub3Qgc2V0Ci0jIENPTkZJR19TRU5TT1JTX1BDQTk1MzkgaXMgbm90IHNldAorIyBDT05GSUdfUENGODU3NSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1BDRjg1OTEgaXMgbm90IHNldAotIyBDT05GSUdfU0VOU09SU19NNDFUMDAgaXMgbm90IHNldAorIyBDT05GSUdfVFBTNjUwMTAgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19NQVg2ODc1IGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVFNMMjU1MCBpcyBub3Qgc2V0CiAjIENPTkZJR19JMkNfREVCVUdfQ09SRSBpcyBub3Qgc2V0CkBAIC03NTcsNiArNzc4LDcgQEAKICMgQ09ORklHX1NFTlNPUlNfQURNMTAzMSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0FETTkyNDAgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19BRFQ3NDcwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNPUlNfQURUNzQ3MyBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0FUWFAxIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfRFMxNjIxIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfSTVLX0FNQiBpcyBub3Qgc2V0CkBAIC03ODYsNiArODA4LDcgQEAKICMgQ09ORklHX1NFTlNPUlNfU01TQzQ3TTEgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19TTVNDNDdNMTkyIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfU01TQzQ3QjM5NyBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX0FEUzc4MjggaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19USE1DNTAgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19WSUE2ODZBIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVlQxMjExIGlzIG5vdCBzZXQKQEAgLTc5NSw5ICs4MTgsMTEgQEAKICMgQ09ORklHX1NFTlNPUlNfVzgzNzkyRCBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1c4Mzc5MyBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1c4M0w3ODVUUyBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX1c4M0w3ODZORyBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1c4MzYyN0hGIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVzgzNjI3RUhGIGlzIG5vdCBzZXQKIENPTkZJR19IV01PTl9ERUJVR19DSElQPXkKKyMgQ09ORklHX1RIRVJNQUwgaXMgbm90IHNldAogIyBDT05GSUdfV0FUQ0hET0cgaXMgbm90IHNldAogCiAjCkBAIC04NTAsMTYgKzg3NSwxNCBAQAogIwogIyBOT1RFOiBVU0JfU1RPUkFHRSBlbmFibGVzIFNDU0ksIGFuZCAnU0NTSSBkaXNrIHN1cHBvcnQnCiAjCi0KLSMKLSMgVVNCIEdhZGdldCBTdXBwb3J0Ci0jCiAjIENPTkZJR19VU0JfR0FER0VUIGlzIG5vdCBzZXQKICMgQ09ORklHX01NQyBpcyBub3Qgc2V0CisjIENPTkZJR19NRU1TVElDSyBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVdfTEVEUyBpcyBub3Qgc2V0CiAjIENPTkZJR19JTkZJTklCQU5EIGlzIG5vdCBzZXQKICMgQ09ORklHX0VEQUMgaXMgbm90IHNldAogIyBDT05GSUdfUlRDX0NMQVNTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RNQURFVklDRVMgaXMgbm90IHNldAogCiAjCiAjIFVzZXJzcGFjZSBJL08KQEAgLTg4NSwxMiArOTA4LDEwIEBACiAjIENPTkZJR19YRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfR0ZTMl9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19PQ0ZTMl9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CitDT05GSUdfRE5PVElGWT15CiBDT05GSUdfSU5PVElGWT15CiBDT05GSUdfSU5PVElGWV9VU0VSPXkKICMgQ09ORklHX1FVT1RBIGlzIG5vdCBzZXQKLUNPTkZJR19ETk9USUZZPXkKICMgQ09ORklHX0FVVE9GU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19BVVRPRlM0X0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZVU0VfRlMgaXMgbm90IHNldApAQCAtOTQzLDggKzk2NCwxMCBAQAogIyBDT05GSUdfSkZGUzJfUlVCSU4gaXMgbm90IHNldAogQ09ORklHX0NSQU1GUz15CiAjIENPTkZJR19WWEZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX01JTklYX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0hQRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfUU5YNEZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JPTUZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1NZU1ZfRlMgaXMgbm90IHNldAogIyBDT05GSUdfVUZTX0ZTIGlzIG5vdCBzZXQKIENPTkZJR19ORVRXT1JLX0ZJTEVTWVNURU1TPXkKQEAgLTEwMDIsOSArMTAyNSw2IEBACiBDT05GSUdfSEFTX0lPTUVNPXkKIENPTkZJR19IQVNfSU9QT1JUPXkKIENPTkZJR19IQVNfRE1BPXkKLUNPTkZJR19JTlNUUlVNRU5UQVRJT049eQotIyBDT05GSUdfUFJPRklMSU5HIGlzIG5vdCBzZXQKLSMgQ09ORklHX01BUktFUlMgaXMgbm90IHNldAogCiAjCiAjIEtlcm5lbCBoYWNraW5nCkBAIC0xMDE4LDYgKzEwMzgsNyBAQAogIyBDT05GSUdfSEVBREVSU19DSEVDSyBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19LRVJORUwgaXMgbm90IHNldAogIyBDT05GSUdfU0xVQl9ERUJVR19PTiBpcyBub3Qgc2V0CisjIENPTkZJR19TTFVCX1NUQVRTIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX0JVR1ZFUkJPU0UgaXMgbm90IHNldAogIyBDT05GSUdfU0FNUExFUyBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfRUFSTFlfREVCVUcgaXMgbm90IHNldApAQCAtMTAyOCw1ICsxMDQ5LDQ5IEBACiAjIENPTkZJR19LRVlTIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFQ1VSSVRZIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFQ1VSSVRZX0ZJTEVfQ0FQQUJJTElUSUVTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0NSWVBUTyBpcyBub3Qgc2V0CitDT05GSUdfQ1JZUFRPPXkKKyMgQ09ORklHX0NSWVBUT19TRVFJViBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fTUFOQUdFUiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fSE1BQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fWENCQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fTlVMTCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fTUQ0IGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19NRDUgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1NIQTEgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1NIQTI1NiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0hBNTEyIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19XUDUxMiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fVEdSMTkyIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19HRjEyOE1VTCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fRUNCIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DQkMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1BDQkMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0xSVyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fWFRTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DVFIgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0dDTSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ0NNIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DUllQVEQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0RFUyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fRkNSWVBUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19CTE9XRklTSCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fVFdPRklTSCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0VSUEVOVCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQUVTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DQVNUNSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ0FTVDYgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1RFQSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQVJDNCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fS0hBWkFEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19BTlVCSVMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1NFRUQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1NBTFNBMjAgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0RFRkxBVEUgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX01JQ0hBRUxfTUlDIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DUkMzMkMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NBTUVMTElBIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19BVVRIRU5DIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19MWk8gaXMgbm90IHNldAorQ09ORklHX0NSWVBUT19IVz15CisjIENPTkZJR19DUllQVE9fREVWX0hJRk5fNzk1WCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfQ0xPQ0sgaXMgbm90IHNldApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvdHFtODU0MV9kZWZjb25maWcgYi9hcmNoL3Bvd2VycGMvY29uZmlncy90cW04NTQxX2RlZmNvbmZpZwppbmRleCAxYWZmMzVmLi5jYmY2YWQyIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvY29uZmlncy90cW04NTQxX2RlZmNvbmZpZworKysgYi9hcmNoL3Bvd2VycGMvY29uZmlncy90cW04NTQxX2RlZmNvbmZpZwpAQCAtMSw3ICsxLDcgQEAKICMKICMgQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgbWFrZSBjb25maWc6IGRvbid0IGVkaXQKLSMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4yNC1yYzgKLSMgRnJpIEphbiAyNSAwMTozMToyOCAyMDA4CisjIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMjUtcmM2CisjIE1vbiBNYXIgMjQgMDg6NDg6NDQgMjAwOAogIwogIyBDT05GSUdfUFBDNjQgaXMgbm90IHNldAogCkBAIC0xNCwxMCArMTQsMTAgQEAKICMgQ09ORklHXzQweCBpcyBub3Qgc2V0CiAjIENPTkZJR180NHggaXMgbm90IHNldAogIyBDT05GSUdfRTIwMCBpcyBub3Qgc2V0Ci1DT05GSUdfODV4eD15CiBDT05GSUdfRTUwMD15CiBDT05GSUdfQk9PS0U9eQogQ09ORklHX0ZTTF9CT09LRT15CitDT05GSUdfRlNMX0VNQl9QRVJGTU9OPXkKICMgQ09ORklHX1BIWVNfNjRCSVQgaXMgbm90IHNldAogQ09ORklHX1NQRT15CiAjIENPTkZJR19QUENfTU1fU0xJQ0VTIGlzIG5vdCBzZXQKQEAgLTMwLDYgKzMwLDcgQEAKIENPTkZJR19HRU5FUklDX1RJTUVfVlNZU0NBTEw9eQogQ09ORklHX0dFTkVSSUNfQ0xPQ0tFVkVOVFM9eQogQ09ORklHX0dFTkVSSUNfSEFSRElSUVM9eQorIyBDT05GSUdfSEFWRV9TRVRVUF9QRVJfQ1BVX0FSRUEgaXMgbm90IHNldAogQ09ORklHX0lSUV9QRVJfQ1BVPXkKIENPTkZJR19SV1NFTV9YQ0hHQUREX0FMR09SSVRITT15CiBDT05GSUdfQVJDSF9IQVNfSUxPRzJfVTMyPXkKQEAgLTY3LDE3ICs2OCwxOSBAQAogIyBDT05GSUdfUE9TSVhfTVFVRVVFIGlzIG5vdCBzZXQKICMgQ09ORklHX0JTRF9QUk9DRVNTX0FDQ1QgaXMgbm90IHNldAogIyBDT05GSUdfVEFTS1NUQVRTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VTRVJfTlMgaXMgbm90IHNldAotIyBDT05GSUdfUElEX05TIGlzIG5vdCBzZXQKICMgQ09ORklHX0FVRElUIGlzIG5vdCBzZXQKICMgQ09ORklHX0lLQ09ORklHIGlzIG5vdCBzZXQKIENPTkZJR19MT0dfQlVGX1NISUZUPTE0CiAjIENPTkZJR19DR1JPVVBTIGlzIG5vdCBzZXQKK0NPTkZJR19HUk9VUF9TQ0hFRD15CiBDT05GSUdfRkFJUl9HUk9VUF9TQ0hFRD15Ci1DT05GSUdfRkFJUl9VU0VSX1NDSEVEPXkKLSMgQ09ORklHX0ZBSVJfQ0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JUX0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKK0NPTkZJR19VU0VSX1NDSEVEPXkKKyMgQ09ORklHX0NHUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CiBDT05GSUdfU1lTRlNfREVQUkVDQVRFRD15CitDT05GSUdfU1lTRlNfREVQUkVDQVRFRF9WMj15CiAjIENPTkZJR19SRUxBWSBpcyBub3Qgc2V0CisjIENPTkZJR19OQU1FU1BBQ0VTIGlzIG5vdCBzZXQKIENPTkZJR19CTEtfREVWX0lOSVRSRD15CiBDT05GSUdfSU5JVFJBTUZTX1NPVVJDRT0iIgogIyBDT05GSUdfQ0NfT1BUSU1JWkVfRk9SX1NJWkUgaXMgbm90IHNldApAQCAtODksMTEgKzkyLDEzIEBACiBDT05GSUdfUFJJTlRLPXkKIENPTkZJR19CVUc9eQogQ09ORklHX0VMRl9DT1JFPXkKK0NPTkZJR19DT01QQVRfQlJLPXkKIENPTkZJR19CQVNFX0ZVTEw9eQogQ09ORklHX0ZVVEVYPXkKIENPTkZJR19BTk9OX0lOT0RFUz15CiAjIENPTkZJR19FUE9MTCBpcyBub3Qgc2V0CiBDT05GSUdfU0lHTkFMRkQ9eQorQ09ORklHX1RJTUVSRkQ9eQogQ09ORklHX0VWRU5URkQ9eQogQ09ORklHX1NITUVNPXkKIENPTkZJR19WTV9FVkVOVF9DT1VOVEVSUz15CkBAIC0xMDEsNiArMTA2LDEyIEBACiAjIENPTkZJR19TTEFCIGlzIG5vdCBzZXQKIENPTkZJR19TTFVCPXkKICMgQ09ORklHX1NMT0IgaXMgbm90IHNldAorIyBDT05GSUdfUFJPRklMSU5HIGlzIG5vdCBzZXQKKyMgQ09ORklHX01BUktFUlMgaXMgbm90IHNldAorQ09ORklHX0hBVkVfT1BST0ZJTEU9eQorQ09ORklHX0hBVkVfS1BST0JFUz15CitDT05GSUdfSEFWRV9LUkVUUFJPQkVTPXkKK0NPTkZJR19QUk9DX1BBR0VfTU9OSVRPUj15CiBDT05GSUdfU0xBQklORk89eQogQ09ORklHX1JUX01VVEVYRVM9eQogIyBDT05GSUdfVElOWV9TSE1FTSBpcyBub3Qgc2V0CkBAIC0xMjQsMTUgKzEzNSwxNyBAQAogIyBDT05GSUdfREVGQVVMVF9DRlEgaXMgbm90IHNldAogIyBDT05GSUdfREVGQVVMVF9OT09QIGlzIG5vdCBzZXQKIENPTkZJR19ERUZBVUxUX0lPU0NIRUQ9ImFudGljaXBhdG9yeSIKK0NPTkZJR19DTEFTU0lDX1JDVT15CiAKICMKICMgUGxhdGZvcm0gc3VwcG9ydAogIwotIyBDT05GSUdfUFBDX01QQzUyeHggaXMgbm90IHNldAotIyBDT05GSUdfUFBDX01QQzUyMDAgaXMgbm90IHNldAorIyBDT05GSUdfUFBDX01QQzUxMnggaXMgbm90IHNldAorIyBDT05GSUdfUFBDX01QQzUxMjEgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0NFTEwgaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0NFTExfTkFUSVZFIGlzIG5vdCBzZXQKICMgQ09ORklHX1BRMkFEUyBpcyBub3Qgc2V0CitDT05GSUdfTVBDODV4eD15CiAjIENPTkZJR19NUEM4NTQwX0FEUyBpcyBub3Qgc2V0CiAjIENPTkZJR19NUEM4NTYwX0FEUyBpcyBub3Qgc2V0CiAjIENPTkZJR19NUEM4NXh4X0NEUyBpcyBub3Qgc2V0CkBAIC0xNDMsOCArMTU2LDkgQEAKIENPTkZJR19UUU04NTQxPXkKICMgQ09ORklHX1RRTTg1NTUgaXMgbm90IHNldAogIyBDT05GSUdfVFFNODU2MCBpcyBub3Qgc2V0CisjIENPTkZJR19TQkM4NTQ4IGlzIG5vdCBzZXQKKyMgQ09ORklHX1NCQzg1NjAgaXMgbm90IHNldAogQ09ORklHX1RRTTg1eHg9eQotQ09ORklHX01QQzg1eHg9eQogIyBDT05GSUdfSVBJQyBpcyBub3Qgc2V0CiBDT05GSUdfTVBJQz15CiAjIENPTkZJR19NUElDX1dFSVJEIGlzIG5vdCBzZXQKQEAgLTE3NCwxMyArMTg4LDE3IEBACiAjIENPTkZJR19IWl8zMDAgaXMgbm90IHNldAogIyBDT05GSUdfSFpfMTAwMCBpcyBub3Qgc2V0CiBDT05GSUdfSFo9MjUwCisjIENPTkZJR19TQ0hFRF9IUlRJQ0sgaXMgbm90IHNldAogQ09ORklHX1BSRUVNUFRfTk9ORT15CiAjIENPTkZJR19QUkVFTVBUX1ZPTFVOVEFSWSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUkVFTVBUIGlzIG5vdCBzZXQKIENPTkZJR19CSU5GTVRfRUxGPXkKICMgQ09ORklHX0JJTkZNVF9NSVNDIGlzIG5vdCBzZXQKIENPTkZJR19NQVRIX0VNVUxBVElPTj15CisjIENPTkZJR19JT01NVV9IRUxQRVIgaXMgbm90IHNldAogQ09ORklHX0FSQ0hfRU5BQkxFX01FTU9SWV9IT1RQTFVHPXkKK0NPTkZJR19BUkNIX0hBU19XQUxLX01FTU9SWT15CitDT05GSUdfQVJDSF9FTkFCTEVfTUVNT1JZX0hPVFJFTU9WRT15CiBDT05GSUdfQVJDSF9GTEFUTUVNX0VOQUJMRT15CiBDT05GSUdfQVJDSF9QT1BVTEFURVNfTk9ERV9NQVA9eQogQ09ORklHX1NFTEVDVF9NRU1PUllfTU9ERUw9eQpAQCAtMTk5LDExICsyMTcsNyBAQAogIyBDT05GSUdfUFJPQ19ERVZJQ0VUUkVFIGlzIG5vdCBzZXQKICMgQ09ORklHX0NNRExJTkVfQk9PTCBpcyBub3Qgc2V0CiAjIENPTkZJR19QTSBpcyBub3Qgc2V0Ci1DT05GSUdfU1VTUEVORF9VUF9QT1NTSUJMRT15Ci1DT05GSUdfSElCRVJOQVRJT05fVVBfUE9TU0lCTEU9eQogQ09ORklHX1NFQ0NPTVA9eQotQ09ORklHX1dBTlRfREVWSUNFX1RSRUU9eQotQ09ORklHX0RFVklDRV9UUkVFPSJ0cW04NTQxLmR0cyIKIENPTkZJR19JU0FfRE1BX0FQST15CiAKICMKQEAgLTI1MCw2ICsyNjQsNyBAQAogIyBDT05GSUdfWEZSTV9VU0VSIGlzIG5vdCBzZXQKICMgQ09ORklHX1hGUk1fU1VCX1BPTElDWSBpcyBub3Qgc2V0CiAjIENPTkZJR19YRlJNX01JR1JBVEUgaXMgbm90IHNldAorIyBDT05GSUdfWEZSTV9TVEFUSVNUSUNTIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9LRVkgaXMgbm90IHNldAogQ09ORklHX0lORVQ9eQogQ09ORklHX0lQX01VTFRJQ0FTVD15CkBAIC0zMDUsNiArMzIwLDcgQEAKICMKICMgQ09ORklHX05FVF9QS1RHRU4gaXMgbm90IHNldAogIyBDT05GSUdfSEFNUkFESU8gaXMgbm90IHNldAorIyBDT05GSUdfQ0FOIGlzIG5vdCBzZXQKICMgQ09ORklHX0lSREEgaXMgbm90IHNldAogIyBDT05GSUdfQlQgaXMgbm90IHNldAogIyBDT05GSUdfQUZfUlhSUEMgaXMgbm90IHNldApAQCAtMzM2LDYgKzM1Miw3IEBACiBDT05GSUdfTVREX1BBUlRJVElPTlM9eQogIyBDT05GSUdfTVREX1JFREJPT1RfUEFSVFMgaXMgbm90IHNldAogQ09ORklHX01URF9DTURMSU5FX1BBUlRTPXkKKyMgQ09ORklHX01URF9PRl9QQVJUUyBpcyBub3Qgc2V0CiAKICMKICMgVXNlciBNb2R1bGVzIEFuZCBUcmFuc2xhdGlvbiBMYXllcnMKQEAgLTQyMiw3ICs0MzksNyBAQAogQ09ORklHX0JMS19ERVZfUkFNPXkKIENPTkZJR19CTEtfREVWX1JBTV9DT1VOVD0xNgogQ09ORklHX0JMS19ERVZfUkFNX1NJWkU9MzI3NjgKLUNPTkZJR19CTEtfREVWX1JBTV9CTE9DS1NJWkU9MTAyNAorIyBDT05GSUdfQkxLX0RFVl9YSVAgaXMgbm90IHNldAogIyBDT05GSUdfQ0RST01fUEtUQ0RWRCBpcyBub3Qgc2V0CiAjIENPTkZJR19BVEFfT1ZFUl9FVEggaXMgbm90IHNldAogQ09ORklHX01JU0NfREVWSUNFUz15CkBAIC00MzAsMTIgKzQ0NywxNCBAQAogIyBDT05GSUdfRUVQUk9NXzkzQ1g2IGlzIG5vdCBzZXQKICMgQ09ORklHX1NHSV9JT0M0IGlzIG5vdCBzZXQKICMgQ09ORklHX1RJRk1fQ09SRSBpcyBub3Qgc2V0CisjIENPTkZJR19FTkNMT1NVUkVfU0VSVklDRVMgaXMgbm90IHNldAorQ09ORklHX0hBVkVfSURFPXkKIENPTkZJR19JREU9eQogQ09ORklHX0lERV9NQVhfSFdJRlM9NAogQ09ORklHX0JMS19ERVZfSURFPXkKIAogIwotIyBQbGVhc2Ugc2VlIERvY3VtZW50YXRpb24vaWRlLnR4dCBmb3IgaGVscC9pbmZvIG9uIElERSBkcml2ZXMKKyMgUGxlYXNlIHNlZSBEb2N1bWVudGF0aW9uL2lkZS9pZGUudHh0IGZvciBoZWxwL2luZm8gb24gSURFIGRyaXZlcwogIwogIyBDT05GSUdfQkxLX0RFVl9JREVfU0FUQSBpcyBub3Qgc2V0CiBDT05GSUdfQkxLX0RFVl9JREVESVNLPXkKQEAgLTQ1MSwxMiArNDcwLDEyIEBACiAjCiBDT05GSUdfSURFX0dFTkVSSUM9eQogIyBDT05GSUdfQkxLX0RFVl9QTEFURk9STSBpcyBub3Qgc2V0CitDT05GSUdfQkxLX0RFVl9JREVETUFfU0ZGPXkKIAogIwogIyBQQ0kgSURFIGNoaXBzZXRzIHN1cHBvcnQKICMKIENPTkZJR19CTEtfREVWX0lERVBDST15Ci1DT05GSUdfSURFUENJX1NIQVJFX0lSUT15CiBDT05GSUdfSURFUENJX1BDSUJVU19PUkRFUj15CiAjIENPTkZJR19CTEtfREVWX09GRkJPQVJEIGlzIG5vdCBzZXQKIENPTkZJR19CTEtfREVWX0dFTkVSSUM9eQpAQCAtNDg3LDcgKzUwNiw2IEBACiAjIENPTkZJR19CTEtfREVWX1RSTTI5MCBpcyBub3Qgc2V0CiBDT05GSUdfQkxLX0RFVl9WSUE4MkNYWFg9eQogIyBDT05GSUdfQkxLX0RFVl9UQzg2QzAwMSBpcyBub3Qgc2V0Ci0jIENPTkZJR19JREVfQVJNIGlzIG5vdCBzZXQKIENPTkZJR19CTEtfREVWX0lERURNQT15CiBDT05GSUdfSURFX0FSQ0hfT0JTT0xFVEVfSU5JVD15CiAjIENPTkZJR19CTEtfREVWX0hEIGlzIG5vdCBzZXQKQEAgLTUzMyw2ICs1NTEsNyBAQAogIyBDT05GSUdfU01TQ19QSFkgaXMgbm90IHNldAogIyBDT05GSUdfQlJPQURDT01fUEhZIGlzIG5vdCBzZXQKICMgQ09ORklHX0lDUExVU19QSFkgaXMgbm90IHNldAorIyBDT05GSUdfUkVBTFRFS19QSFkgaXMgbm90IHNldAogIyBDT05GSUdfRklYRURfUEhZIGlzIG5vdCBzZXQKICMgQ09ORklHX01ESU9fQklUQkFORyBpcyBub3Qgc2V0CiBDT05GSUdfTkVUX0VUSEVSTkVUPXkKQEAgLTU2MCw2ICs1NzksNyBAQAogIyBDT05GSUdfTkUyS19QQ0kgaXMgbm90IHNldAogIyBDT05GSUdfODEzOUNQIGlzIG5vdCBzZXQKICMgQ09ORklHXzgxMzlUT08gaXMgbm90IHNldAorIyBDT05GSUdfUjYwNDAgaXMgbm90IHNldAogIyBDT05GSUdfU0lTOTAwIGlzIG5vdCBzZXQKICMgQ09ORklHX0VQSUMxMDAgaXMgbm90IHNldAogIyBDT05GSUdfU1VOREFOQ0UgaXMgbm90IHNldApAQCAtNTcyLDcgKzU5Miw5IEBACiAjIENPTkZJR19ETDJLIGlzIG5vdCBzZXQKICMgQ09ORklHX0UxMDAwIGlzIG5vdCBzZXQKICMgQ09ORklHX0UxMDAwRSBpcyBub3Qgc2V0CisjIENPTkZJR19FMTAwMEVfRU5BQkxFRCBpcyBub3Qgc2V0CiAjIENPTkZJR19JUDEwMDAgaXMgbm90IHNldAorIyBDT05GSUdfSUdCIGlzIG5vdCBzZXQKICMgQ09ORklHX05TODM4MjAgaXMgbm90IHNldAogIyBDT05GSUdfSEFNQUNISSBpcyBub3Qgc2V0CiAjIENPTkZJR19ZRUxMT1dGSU4gaXMgbm90IHNldApAQCAtNTk5LDYgKzYyMSw3IEBACiAjIENPTkZJR19OSVUgaXMgbm90IHNldAogIyBDT05GSUdfTUxYNF9DT1JFIGlzIG5vdCBzZXQKICMgQ09ORklHX1RFSFVUSSBpcyBub3Qgc2V0CisjIENPTkZJR19CTlgyWCBpcyBub3Qgc2V0CiAjIENPTkZJR19UUiBpcyBub3Qgc2V0CiAKICMKQEAgLTYxMSw3ICs2MzQsNiBAQAogIyBDT05GSUdfSElQUEkgaXMgbm90IHNldAogIyBDT05GSUdfUFBQIGlzIG5vdCBzZXQKICMgQ09ORklHX1NMSVAgaXMgbm90IHNldAotIyBDT05GSUdfU0hBUEVSIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVENPTlNPTEUgaXMgbm90IHNldAogIyBDT05GSUdfTkVUUE9MTCBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRfUE9MTF9DT05UUk9MTEVSIGlzIG5vdCBzZXQKQEAgLTY1NCw2ICs2NzYsNyBAQAogIwogIyBDT05GSUdfVlQgaXMgbm90IHNldAogIyBDT05GSUdfU0VSSUFMX05PTlNUQU5EQVJEIGlzIG5vdCBzZXQKKyMgQ09ORklHX05PWk9NSSBpcyBub3Qgc2V0CiAKICMKICMgU2VyaWFsIGRyaXZlcnMKQEAgLTczNSwxNCArNzU4LDEyIEBACiAjCiAjIE1pc2NlbGxhbmVvdXMgSTJDIENoaXAgc3VwcG9ydAogIwotQ09ORklHX1NFTlNPUlNfRFMxMzM3PXkKLSMgQ09ORklHX1NFTlNPUlNfRFMxMzc0IGlzIG5vdCBzZXQKICMgQ09ORklHX0RTMTY4MiBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0VFUFJPTSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1BDRjg1NzQgaXMgbm90IHNldAotIyBDT05GSUdfU0VOU09SU19QQ0E5NTM5IGlzIG5vdCBzZXQKKyMgQ09ORklHX1BDRjg1NzUgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19QQ0Y4NTkxIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NFTlNPUlNfTTQxVDAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RQUzY1MDEwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfTUFYNjg3NSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1RTTDI1NTAgaXMgbm90IHNldAogIyBDT05GSUdfSTJDX0RFQlVHX0NPUkUgaXMgbm90IHNldApAQCAtNzY3LDYgKzc4OCw3IEBACiAjIENPTkZJR19TRU5TT1JTX0FETTEwMzEgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19BRE05MjQwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfQURUNzQ3MCBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX0FEVDc0NzMgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19BVFhQMSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0RTMTYyMSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0k1S19BTUIgaXMgbm90IHNldApAQCAtNzk2LDYgKzgxOCw3IEBACiAjIENPTkZJR19TRU5TT1JTX1NNU0M0N00xIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfU01TQzQ3TTE5MiBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1NNU0M0N0IzOTcgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19BRFM3ODI4IGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVEhNQzUwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVklBNjg2QSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1ZUMTIxMSBpcyBub3Qgc2V0CkBAIC04MDUsOSArODI4LDExIEBACiAjIENPTkZJR19TRU5TT1JTX1c4Mzc5MkQgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19XODM3OTMgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19XODNMNzg1VFMgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19XODNMNzg2TkcgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19XODM2MjdIRiBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1c4MzYyN0VIRiBpcyBub3Qgc2V0CiBDT05GSUdfSFdNT05fREVCVUdfQ0hJUD15CisjIENPTkZJR19USEVSTUFMIGlzIG5vdCBzZXQKICMgQ09ORklHX1dBVENIRE9HIGlzIG5vdCBzZXQKIAogIwpAQCAtODYwLDE2ICs4ODUsMTQgQEAKICMKICMgTk9URTogVVNCX1NUT1JBR0UgZW5hYmxlcyBTQ1NJLCBhbmQgJ1NDU0kgZGlzayBzdXBwb3J0JwogIwotCi0jCi0jIFVTQiBHYWRnZXQgU3VwcG9ydAotIwogIyBDT05GSUdfVVNCX0dBREdFVCBpcyBub3Qgc2V0CiAjIENPTkZJR19NTUMgaXMgbm90IHNldAorIyBDT05GSUdfTUVNU1RJQ0sgaXMgbm90IHNldAogIyBDT05GSUdfTkVXX0xFRFMgaXMgbm90IHNldAogIyBDT05GSUdfSU5GSU5JQkFORCBpcyBub3Qgc2V0CiAjIENPTkZJR19FREFDIGlzIG5vdCBzZXQKICMgQ09ORklHX1JUQ19DTEFTUyBpcyBub3Qgc2V0CisjIENPTkZJR19ETUFERVZJQ0VTIGlzIG5vdCBzZXQKIAogIwogIyBVc2Vyc3BhY2UgSS9PCkBAIC04OTUsMTIgKzkxOCwxMCBAQAogIyBDT05GSUdfWEZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0dGUzJfRlMgaXMgbm90IHNldAogIyBDT05GSUdfT0NGUzJfRlMgaXMgbm90IHNldAotIyBDT05GSUdfTUlOSVhfRlMgaXMgbm90IHNldAotIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAorQ09ORklHX0ROT1RJRlk9eQogQ09ORklHX0lOT1RJRlk9eQogQ09ORklHX0lOT1RJRllfVVNFUj15CiAjIENPTkZJR19RVU9UQSBpcyBub3Qgc2V0Ci1DT05GSUdfRE5PVElGWT15CiAjIENPTkZJR19BVVRPRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfQVVUT0ZTNF9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19GVVNFX0ZTIGlzIG5vdCBzZXQKQEAgLTk1Myw4ICs5NzQsMTAgQEAKICMgQ09ORklHX0pGRlMyX1JVQklOIGlzIG5vdCBzZXQKIENPTkZJR19DUkFNRlM9eQogIyBDT05GSUdfVlhGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19IUEZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1FOWDRGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TWVNWX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1VGU19GUyBpcyBub3Qgc2V0CiBDT05GSUdfTkVUV09SS19GSUxFU1lTVEVNUz15CkBAIC0xMDEyLDkgKzEwMzUsNiBAQAogQ09ORklHX0hBU19JT01FTT15CiBDT05GSUdfSEFTX0lPUE9SVD15CiBDT05GSUdfSEFTX0RNQT15Ci1DT05GSUdfSU5TVFJVTUVOVEFUSU9OPXkKLSMgQ09ORklHX1BST0ZJTElORyBpcyBub3Qgc2V0Ci0jIENPTkZJR19NQVJLRVJTIGlzIG5vdCBzZXQKIAogIwogIyBLZXJuZWwgaGFja2luZwpAQCAtMTAyOCw2ICsxMDQ4LDcgQEAKICMgQ09ORklHX0hFQURFUlNfQ0hFQ0sgaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfS0VSTkVMIGlzIG5vdCBzZXQKICMgQ09ORklHX1NMVUJfREVCVUdfT04gaXMgbm90IHNldAorIyBDT05GSUdfU0xVQl9TVEFUUyBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19CVUdWRVJCT1NFIGlzIG5vdCBzZXQKICMgQ09ORklHX1NBTVBMRVMgaXMgbm90IHNldAogIyBDT05GSUdfS0dEQl9DT05TT0xFIGlzIG5vdCBzZXQKQEAgLTEwMzksNiArMTA2MCw1MCBAQAogIyBDT05GSUdfS0VZUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TRUNVUklUWSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRUNVUklUWV9GSUxFX0NBUEFCSUxJVElFUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19DUllQVE8gaXMgbm90IHNldAorQ09ORklHX0NSWVBUTz15CisjIENPTkZJR19DUllQVE9fU0VRSVYgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX01BTkFHRVIgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0hNQUMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1hDQkMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX05VTEwgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX01ENCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fTUQ1IGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19TSEExIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19TSEEyNTYgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1NIQTUxMiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fV1A1MTIgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1RHUjE5MiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fR0YxMjhNVUwgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0VDQiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ0JDIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19QQ0JDIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19MUlcgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1hUUyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ1RSIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19HQ00gaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NDTSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ1JZUFREIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19ERVMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0ZDUllQVCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQkxPV0ZJU0ggaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1RXT0ZJU0ggaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1NFUlBFTlQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0FFUyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ0FTVDUgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NBU1Q2IGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19URUEgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0FSQzQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0tIQVpBRCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQU5VQklTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19TRUVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19TQUxTQTIwIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19ERUZMQVRFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19NSUNIQUVMX01JQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ1JDMzJDIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DQU1FTExJQSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQVVUSEVOQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fTFpPIGlzIG5vdCBzZXQKK0NPTkZJR19DUllQVE9fSFc9eQorIyBDT05GSUdfQ1JZUFRPX0RFVl9ISUZOXzc5NVggaXMgbm90IHNldAogIyBDT05GSUdfUFBDX0NMT0NLIGlzIG5vdCBzZXQKIENPTkZJR19QUENfTElCX1JIRUFQPXkKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9jb25maWdzL3RxbTg1NTVfZGVmY29uZmlnIGIvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvdHFtODU1NV9kZWZjb25maWcKaW5kZXggYTNhZjIyNi4uYmJmZjk2MiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvdHFtODU1NV9kZWZjb25maWcKKysrIGIvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvdHFtODU1NV9kZWZjb25maWcKQEAgLTEsNyArMSw3IEBACiAjCiAjIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIG1ha2UgY29uZmlnOiBkb24ndCBlZGl0Ci0jIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMjQtcmM4Ci0jIEZyaSBKYW4gMjUgMDE6MTU6MjQgMjAwOAorIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjI1LXJjNgorIyBNb24gTWFyIDI0IDA4OjQ4OjQ0IDIwMDgKICMKICMgQ09ORklHX1BQQzY0IGlzIG5vdCBzZXQKIApAQCAtMTQsMTAgKzE0LDEwIEBACiAjIENPTkZJR180MHggaXMgbm90IHNldAogIyBDT05GSUdfNDR4IGlzIG5vdCBzZXQKICMgQ09ORklHX0UyMDAgaXMgbm90IHNldAotQ09ORklHXzg1eHg9eQogQ09ORklHX0U1MDA9eQogQ09ORklHX0JPT0tFPXkKIENPTkZJR19GU0xfQk9PS0U9eQorQ09ORklHX0ZTTF9FTUJfUEVSRk1PTj15CiAjIENPTkZJR19QSFlTXzY0QklUIGlzIG5vdCBzZXQKIENPTkZJR19TUEU9eQogIyBDT05GSUdfUFBDX01NX1NMSUNFUyBpcyBub3Qgc2V0CkBAIC0zMCw2ICszMCw3IEBACiBDT05GSUdfR0VORVJJQ19USU1FX1ZTWVNDQUxMPXkKIENPTkZJR19HRU5FUklDX0NMT0NLRVZFTlRTPXkKIENPTkZJR19HRU5FUklDX0hBUkRJUlFTPXkKKyMgQ09ORklHX0hBVkVfU0VUVVBfUEVSX0NQVV9BUkVBIGlzIG5vdCBzZXQKIENPTkZJR19JUlFfUEVSX0NQVT15CiBDT05GSUdfUldTRU1fWENIR0FERF9BTEdPUklUSE09eQogQ09ORklHX0FSQ0hfSEFTX0lMT0cyX1UzMj15CkBAIC02NywxNyArNjgsMTkgQEAKICMgQ09ORklHX1BPU0lYX01RVUVVRSBpcyBub3Qgc2V0CiAjIENPTkZJR19CU0RfUFJPQ0VTU19BQ0NUIGlzIG5vdCBzZXQKICMgQ09ORklHX1RBU0tTVEFUUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19VU0VSX05TIGlzIG5vdCBzZXQKLSMgQ09ORklHX1BJRF9OUyBpcyBub3Qgc2V0CiAjIENPTkZJR19BVURJVCBpcyBub3Qgc2V0CiAjIENPTkZJR19JS0NPTkZJRyBpcyBub3Qgc2V0CiBDT05GSUdfTE9HX0JVRl9TSElGVD0xNAogIyBDT05GSUdfQ0dST1VQUyBpcyBub3Qgc2V0CitDT05GSUdfR1JPVVBfU0NIRUQ9eQogQ09ORklHX0ZBSVJfR1JPVVBfU0NIRUQ9eQotQ09ORklHX0ZBSVJfVVNFUl9TQ0hFRD15Ci0jIENPTkZJR19GQUlSX0NHUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CisjIENPTkZJR19SVF9HUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CitDT05GSUdfVVNFUl9TQ0hFRD15CisjIENPTkZJR19DR1JPVVBfU0NIRUQgaXMgbm90IHNldAogQ09ORklHX1NZU0ZTX0RFUFJFQ0FURUQ9eQorQ09ORklHX1NZU0ZTX0RFUFJFQ0FURURfVjI9eQogIyBDT05GSUdfUkVMQVkgaXMgbm90IHNldAorIyBDT05GSUdfTkFNRVNQQUNFUyBpcyBub3Qgc2V0CiBDT05GSUdfQkxLX0RFVl9JTklUUkQ9eQogQ09ORklHX0lOSVRSQU1GU19TT1VSQ0U9IiIKICMgQ09ORklHX0NDX09QVElNSVpFX0ZPUl9TSVpFIGlzIG5vdCBzZXQKQEAgLTg5LDExICs5MiwxMyBAQAogQ09ORklHX1BSSU5USz15CiBDT05GSUdfQlVHPXkKIENPTkZJR19FTEZfQ09SRT15CitDT05GSUdfQ09NUEFUX0JSSz15CiBDT05GSUdfQkFTRV9GVUxMPXkKIENPTkZJR19GVVRFWD15CiBDT05GSUdfQU5PTl9JTk9ERVM9eQogIyBDT05GSUdfRVBPTEwgaXMgbm90IHNldAogQ09ORklHX1NJR05BTEZEPXkKK0NPTkZJR19USU1FUkZEPXkKIENPTkZJR19FVkVOVEZEPXkKIENPTkZJR19TSE1FTT15CiBDT05GSUdfVk1fRVZFTlRfQ09VTlRFUlM9eQpAQCAtMTAxLDYgKzEwNiwxMiBAQAogIyBDT05GSUdfU0xBQiBpcyBub3Qgc2V0CiBDT05GSUdfU0xVQj15CiAjIENPTkZJR19TTE9CIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BST0ZJTElORyBpcyBub3Qgc2V0CisjIENPTkZJR19NQVJLRVJTIGlzIG5vdCBzZXQKK0NPTkZJR19IQVZFX09QUk9GSUxFPXkKK0NPTkZJR19IQVZFX0tQUk9CRVM9eQorQ09ORklHX0hBVkVfS1JFVFBST0JFUz15CitDT05GSUdfUFJPQ19QQUdFX01PTklUT1I9eQogQ09ORklHX1NMQUJJTkZPPXkKIENPTkZJR19SVF9NVVRFWEVTPXkKICMgQ09ORklHX1RJTllfU0hNRU0gaXMgbm90IHNldApAQCAtMTI0LDE1ICsxMzUsMTcgQEAKICMgQ09ORklHX0RFRkFVTFRfQ0ZRIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFRkFVTFRfTk9PUCBpcyBub3Qgc2V0CiBDT05GSUdfREVGQVVMVF9JT1NDSEVEPSJhbnRpY2lwYXRvcnkiCitDT05GSUdfQ0xBU1NJQ19SQ1U9eQogCiAjCiAjIFBsYXRmb3JtIHN1cHBvcnQKICMKLSMgQ09ORklHX1BQQ19NUEM1Mnh4IGlzIG5vdCBzZXQKLSMgQ09ORklHX1BQQ19NUEM1MjAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ19NUEM1MTJ4IGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ19NUEM1MTIxIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19DRUxMIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19DRUxMX05BVElWRSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUTJBRFMgaXMgbm90IHNldAorQ09ORklHX01QQzg1eHg9eQogIyBDT05GSUdfTVBDODU0MF9BRFMgaXMgbm90IHNldAogIyBDT05GSUdfTVBDODU2MF9BRFMgaXMgbm90IHNldAogIyBDT05GSUdfTVBDODV4eF9DRFMgaXMgbm90IHNldApAQCAtMTQzLDggKzE1Niw5IEBACiAjIENPTkZJR19UUU04NTQxIGlzIG5vdCBzZXQKIENPTkZJR19UUU04NTU1PXkKICMgQ09ORklHX1RRTTg1NjAgaXMgbm90IHNldAorIyBDT05GSUdfU0JDODU0OCBpcyBub3Qgc2V0CisjIENPTkZJR19TQkM4NTYwIGlzIG5vdCBzZXQKIENPTkZJR19UUU04NXh4PXkKLUNPTkZJR19NUEM4NXh4PXkKICMgQ09ORklHX0lQSUMgaXMgbm90IHNldAogQ09ORklHX01QSUM9eQogIyBDT05GSUdfTVBJQ19XRUlSRCBpcyBub3Qgc2V0CkBAIC0xNzQsMTMgKzE4OCwxNyBAQAogIyBDT05GSUdfSFpfMzAwIGlzIG5vdCBzZXQKICMgQ09ORklHX0haXzEwMDAgaXMgbm90IHNldAogQ09ORklHX0haPTI1MAorIyBDT05GSUdfU0NIRURfSFJUSUNLIGlzIG5vdCBzZXQKIENPTkZJR19QUkVFTVBUX05PTkU9eQogIyBDT05GSUdfUFJFRU1QVF9WT0xVTlRBUlkgaXMgbm90IHNldAogIyBDT05GSUdfUFJFRU1QVCBpcyBub3Qgc2V0CiBDT05GSUdfQklORk1UX0VMRj15CiAjIENPTkZJR19CSU5GTVRfTUlTQyBpcyBub3Qgc2V0CiBDT05GSUdfTUFUSF9FTVVMQVRJT049eQorIyBDT05GSUdfSU9NTVVfSEVMUEVSIGlzIG5vdCBzZXQKIENPTkZJR19BUkNIX0VOQUJMRV9NRU1PUllfSE9UUExVRz15CitDT05GSUdfQVJDSF9IQVNfV0FMS19NRU1PUlk9eQorQ09ORklHX0FSQ0hfRU5BQkxFX01FTU9SWV9IT1RSRU1PVkU9eQogQ09ORklHX0FSQ0hfRkxBVE1FTV9FTkFCTEU9eQogQ09ORklHX0FSQ0hfUE9QVUxBVEVTX05PREVfTUFQPXkKIENPTkZJR19TRUxFQ1RfTUVNT1JZX01PREVMPXkKQEAgLTE5OSwxMSArMjE3LDcgQEAKICMgQ09ORklHX1BST0NfREVWSUNFVFJFRSBpcyBub3Qgc2V0CiAjIENPTkZJR19DTURMSU5FX0JPT0wgaXMgbm90IHNldAogIyBDT05GSUdfUE0gaXMgbm90IHNldAotQ09ORklHX1NVU1BFTkRfVVBfUE9TU0lCTEU9eQotQ09ORklHX0hJQkVSTkFUSU9OX1VQX1BPU1NJQkxFPXkKIENPTkZJR19TRUNDT01QPXkKLUNPTkZJR19XQU5UX0RFVklDRV9UUkVFPXkKLUNPTkZJR19ERVZJQ0VfVFJFRT0idHFtODU1NS5kdHMiCiBDT05GSUdfSVNBX0RNQV9BUEk9eQogCiAjCkBAIC0yNTAsNiArMjY0LDcgQEAKICMgQ09ORklHX1hGUk1fVVNFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19YRlJNX1NVQl9QT0xJQ1kgaXMgbm90IHNldAogIyBDT05GSUdfWEZSTV9NSUdSQVRFIGlzIG5vdCBzZXQKKyMgQ09ORklHX1hGUk1fU1RBVElTVElDUyBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRfS0VZIGlzIG5vdCBzZXQKIENPTkZJR19JTkVUPXkKIENPTkZJR19JUF9NVUxUSUNBU1Q9eQpAQCAtMzA1LDYgKzMyMCw3IEBACiAjCiAjIENPTkZJR19ORVRfUEtUR0VOIGlzIG5vdCBzZXQKICMgQ09ORklHX0hBTVJBRElPIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NBTiBpcyBub3Qgc2V0CiAjIENPTkZJR19JUkRBIGlzIG5vdCBzZXQKICMgQ09ORklHX0JUIGlzIG5vdCBzZXQKICMgQ09ORklHX0FGX1JYUlBDIGlzIG5vdCBzZXQKQEAgLTMzNiw2ICszNTIsNyBAQAogQ09ORklHX01URF9QQVJUSVRJT05TPXkKICMgQ09ORklHX01URF9SRURCT09UX1BBUlRTIGlzIG5vdCBzZXQKIENPTkZJR19NVERfQ01ETElORV9QQVJUUz15CisjIENPTkZJR19NVERfT0ZfUEFSVFMgaXMgbm90IHNldAogCiAjCiAjIFVzZXIgTW9kdWxlcyBBbmQgVHJhbnNsYXRpb24gTGF5ZXJzCkBAIC00MjIsNyArNDM5LDcgQEAKIENPTkZJR19CTEtfREVWX1JBTT15CiBDT05GSUdfQkxLX0RFVl9SQU1fQ09VTlQ9MTYKIENPTkZJR19CTEtfREVWX1JBTV9TSVpFPTMyNzY4Ci1DT05GSUdfQkxLX0RFVl9SQU1fQkxPQ0tTSVpFPTEwMjQKKyMgQ09ORklHX0JMS19ERVZfWElQIGlzIG5vdCBzZXQKICMgQ09ORklHX0NEUk9NX1BLVENEVkQgaXMgbm90IHNldAogIyBDT05GSUdfQVRBX09WRVJfRVRIIGlzIG5vdCBzZXQKIENPTkZJR19NSVNDX0RFVklDRVM9eQpAQCAtNDMwLDEyICs0NDcsMTQgQEAKICMgQ09ORklHX0VFUFJPTV85M0NYNiBpcyBub3Qgc2V0CiAjIENPTkZJR19TR0lfSU9DNCBpcyBub3Qgc2V0CiAjIENPTkZJR19USUZNX0NPUkUgaXMgbm90IHNldAorIyBDT05GSUdfRU5DTE9TVVJFX1NFUlZJQ0VTIGlzIG5vdCBzZXQKK0NPTkZJR19IQVZFX0lERT15CiBDT05GSUdfSURFPXkKIENPTkZJR19JREVfTUFYX0hXSUZTPTQKIENPTkZJR19CTEtfREVWX0lERT15CiAKICMKLSMgUGxlYXNlIHNlZSBEb2N1bWVudGF0aW9uL2lkZS50eHQgZm9yIGhlbHAvaW5mbyBvbiBJREUgZHJpdmVzCisjIFBsZWFzZSBzZWUgRG9jdW1lbnRhdGlvbi9pZGUvaWRlLnR4dCBmb3IgaGVscC9pbmZvIG9uIElERSBkcml2ZXMKICMKICMgQ09ORklHX0JMS19ERVZfSURFX1NBVEEgaXMgbm90IHNldAogQ09ORklHX0JMS19ERVZfSURFRElTSz15CkBAIC00NTEsMTIgKzQ3MCwxMiBAQAogIwogQ09ORklHX0lERV9HRU5FUklDPXkKICMgQ09ORklHX0JMS19ERVZfUExBVEZPUk0gaXMgbm90IHNldAorQ09ORklHX0JMS19ERVZfSURFRE1BX1NGRj15CiAKICMKICMgUENJIElERSBjaGlwc2V0cyBzdXBwb3J0CiAjCiBDT05GSUdfQkxLX0RFVl9JREVQQ0k9eQotQ09ORklHX0lERVBDSV9TSEFSRV9JUlE9eQogQ09ORklHX0lERVBDSV9QQ0lCVVNfT1JERVI9eQogIyBDT05GSUdfQkxLX0RFVl9PRkZCT0FSRCBpcyBub3Qgc2V0CiBDT05GSUdfQkxLX0RFVl9HRU5FUklDPXkKQEAgLTQ4Nyw3ICs1MDYsNiBAQAogIyBDT05GSUdfQkxLX0RFVl9UUk0yOTAgaXMgbm90IHNldAogQ09ORklHX0JMS19ERVZfVklBODJDWFhYPXkKICMgQ09ORklHX0JMS19ERVZfVEM4NkMwMDEgaXMgbm90IHNldAotIyBDT05GSUdfSURFX0FSTSBpcyBub3Qgc2V0CiBDT05GSUdfQkxLX0RFVl9JREVETUE9eQogQ09ORklHX0lERV9BUkNIX09CU09MRVRFX0lOSVQ9eQogIyBDT05GSUdfQkxLX0RFVl9IRCBpcyBub3Qgc2V0CkBAIC01MzMsNiArNTUxLDcgQEAKICMgQ09ORklHX1NNU0NfUEhZIGlzIG5vdCBzZXQKICMgQ09ORklHX0JST0FEQ09NX1BIWSBpcyBub3Qgc2V0CiAjIENPTkZJR19JQ1BMVVNfUEhZIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JFQUxURUtfUEhZIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZJWEVEX1BIWSBpcyBub3Qgc2V0CiAjIENPTkZJR19NRElPX0JJVEJBTkcgaXMgbm90IHNldAogQ09ORklHX05FVF9FVEhFUk5FVD15CkBAIC01NjAsNiArNTc5LDcgQEAKICMgQ09ORklHX05FMktfUENJIGlzIG5vdCBzZXQKICMgQ09ORklHXzgxMzlDUCBpcyBub3Qgc2V0CiAjIENPTkZJR184MTM5VE9PIGlzIG5vdCBzZXQKKyMgQ09ORklHX1I2MDQwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NJUzkwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19FUElDMTAwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NVTkRBTkNFIGlzIG5vdCBzZXQKQEAgLTU3Miw3ICs1OTIsOSBAQAogIyBDT05GSUdfREwySyBpcyBub3Qgc2V0CiAjIENPTkZJR19FMTAwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19FMTAwMEUgaXMgbm90IHNldAorIyBDT05GSUdfRTEwMDBFX0VOQUJMRUQgaXMgbm90IHNldAogIyBDT05GSUdfSVAxMDAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lHQiBpcyBub3Qgc2V0CiAjIENPTkZJR19OUzgzODIwIGlzIG5vdCBzZXQKICMgQ09ORklHX0hBTUFDSEkgaXMgbm90IHNldAogIyBDT05GSUdfWUVMTE9XRklOIGlzIG5vdCBzZXQKQEAgLTU5OSw2ICs2MjEsNyBAQAogIyBDT05GSUdfTklVIGlzIG5vdCBzZXQKICMgQ09ORklHX01MWDRfQ09SRSBpcyBub3Qgc2V0CiAjIENPTkZJR19URUhVVEkgaXMgbm90IHNldAorIyBDT05GSUdfQk5YMlggaXMgbm90IHNldAogIyBDT05GSUdfVFIgaXMgbm90IHNldAogCiAjCkBAIC02MTEsNyArNjM0LDYgQEAKICMgQ09ORklHX0hJUFBJIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQUCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTElQIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NIQVBFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRDT05TT0xFIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVFBPTEwgaXMgbm90IHNldAogIyBDT05GSUdfTkVUX1BPTExfQ09OVFJPTExFUiBpcyBub3Qgc2V0CkBAIC02NTQsNiArNjc2LDcgQEAKICMKICMgQ09ORklHX1ZUIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFUklBTF9OT05TVEFOREFSRCBpcyBub3Qgc2V0CisjIENPTkZJR19OT1pPTUkgaXMgbm90IHNldAogCiAjCiAjIFNlcmlhbCBkcml2ZXJzCkBAIC03MzUsMTQgKzc1OCwxMiBAQAogIwogIyBNaXNjZWxsYW5lb3VzIEkyQyBDaGlwIHN1cHBvcnQKICMKLUNPTkZJR19TRU5TT1JTX0RTMTMzNz15Ci0jIENPTkZJR19TRU5TT1JTX0RTMTM3NCBpcyBub3Qgc2V0CiAjIENPTkZJR19EUzE2ODIgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19FRVBST00gaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19QQ0Y4NTc0IGlzIG5vdCBzZXQKLSMgQ09ORklHX1NFTlNPUlNfUENBOTUzOSBpcyBub3Qgc2V0CisjIENPTkZJR19QQ0Y4NTc1IGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfUENGODU5MSBpcyBub3Qgc2V0Ci0jIENPTkZJR19TRU5TT1JTX000MVQwMCBpcyBub3Qgc2V0CisjIENPTkZJR19UUFM2NTAxMCBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX01BWDY4NzUgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19UU0wyNTUwIGlzIG5vdCBzZXQKICMgQ09ORklHX0kyQ19ERUJVR19DT1JFIGlzIG5vdCBzZXQKQEAgLTc2Nyw2ICs3ODgsNyBAQAogIyBDT05GSUdfU0VOU09SU19BRE0xMDMxIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfQURNOTI0MCBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0FEVDc0NzAgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19BRFQ3NDczIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfQVRYUDEgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19EUzE2MjEgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19JNUtfQU1CIGlzIG5vdCBzZXQKQEAgLTc5Niw2ICs4MTgsNyBAQAogIyBDT05GSUdfU0VOU09SU19TTVNDNDdNMSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1NNU0M0N00xOTIgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19TTVNDNDdCMzk3IGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNPUlNfQURTNzgyOCBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1RITUM1MCBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1ZJQTY4NkEgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19WVDEyMTEgaXMgbm90IHNldApAQCAtODA1LDkgKzgyOCwxMSBAQAogIyBDT05GSUdfU0VOU09SU19XODM3OTJEIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVzgzNzkzIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVzgzTDc4NVRTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNPUlNfVzgzTDc4Nk5HIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVzgzNjI3SEYgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19XODM2MjdFSEYgaXMgbm90IHNldAogQ09ORklHX0hXTU9OX0RFQlVHX0NISVA9eQorIyBDT05GSUdfVEhFUk1BTCBpcyBub3Qgc2V0CiAjIENPTkZJR19XQVRDSERPRyBpcyBub3Qgc2V0CiAKICMKQEAgLTg2MCwxNiArODg1LDE0IEBACiAjCiAjIE5PVEU6IFVTQl9TVE9SQUdFIGVuYWJsZXMgU0NTSSwgYW5kICdTQ1NJIGRpc2sgc3VwcG9ydCcKICMKLQotIwotIyBVU0IgR2FkZ2V0IFN1cHBvcnQKLSMKICMgQ09ORklHX1VTQl9HQURHRVQgaXMgbm90IHNldAogIyBDT05GSUdfTU1DIGlzIG5vdCBzZXQKKyMgQ09ORklHX01FTVNUSUNLIGlzIG5vdCBzZXQKICMgQ09ORklHX05FV19MRURTIGlzIG5vdCBzZXQKICMgQ09ORklHX0lORklOSUJBTkQgaXMgbm90IHNldAogIyBDT05GSUdfRURBQyBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENfQ0xBU1MgaXMgbm90IHNldAorIyBDT05GSUdfRE1BREVWSUNFUyBpcyBub3Qgc2V0CiAKICMKICMgVXNlcnNwYWNlIEkvTwpAQCAtODk1LDEyICs5MTgsMTAgQEAKICMgQ09ORklHX1hGU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19HRlMyX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX09DRlMyX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX01JTklYX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1JPTUZTX0ZTIGlzIG5vdCBzZXQKK0NPTkZJR19ETk9USUZZPXkKIENPTkZJR19JTk9USUZZPXkKIENPTkZJR19JTk9USUZZX1VTRVI9eQogIyBDT05GSUdfUVVPVEEgaXMgbm90IHNldAotQ09ORklHX0ROT1RJRlk9eQogIyBDT05GSUdfQVVUT0ZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0FVVE9GUzRfRlMgaXMgbm90IHNldAogIyBDT05GSUdfRlVTRV9GUyBpcyBub3Qgc2V0CkBAIC05NTMsOCArOTc0LDEwIEBACiAjIENPTkZJR19KRkZTMl9SVUJJTiBpcyBub3Qgc2V0CiBDT05GSUdfQ1JBTUZTPXkKICMgQ09ORklHX1ZYRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfTUlOSVhfRlMgaXMgbm90IHNldAogIyBDT05GSUdfSFBGU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19RTlg0RlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfU1lTVl9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19VRlNfRlMgaXMgbm90IHNldAogQ09ORklHX05FVFdPUktfRklMRVNZU1RFTVM9eQpAQCAtMTAxMiw5ICsxMDM1LDYgQEAKIENPTkZJR19IQVNfSU9NRU09eQogQ09ORklHX0hBU19JT1BPUlQ9eQogQ09ORklHX0hBU19ETUE9eQotQ09ORklHX0lOU1RSVU1FTlRBVElPTj15Ci0jIENPTkZJR19QUk9GSUxJTkcgaXMgbm90IHNldAotIyBDT05GSUdfTUFSS0VSUyBpcyBub3Qgc2V0CiAKICMKICMgS2VybmVsIGhhY2tpbmcKQEAgLTEwMjgsNiArMTA0OCw3IEBACiAjIENPTkZJR19IRUFERVJTX0NIRUNLIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX0tFUk5FTCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTFVCX0RFQlVHX09OIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NMVUJfU1RBVFMgaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfQlVHVkVSQk9TRSBpcyBub3Qgc2V0CiAjIENPTkZJR19TQU1QTEVTIGlzIG5vdCBzZXQKICMgQ09ORklHX0tHREJfQ09OU09MRSBpcyBub3Qgc2V0CkBAIC0xMDM5LDYgKzEwNjAsNTAgQEAKICMgQ09ORklHX0tFWVMgaXMgbm90IHNldAogIyBDT05GSUdfU0VDVVJJVFkgaXMgbm90IHNldAogIyBDT05GSUdfU0VDVVJJVFlfRklMRV9DQVBBQklMSVRJRVMgaXMgbm90IHNldAotIyBDT05GSUdfQ1JZUFRPIGlzIG5vdCBzZXQKK0NPTkZJR19DUllQVE89eQorIyBDT05GSUdfQ1JZUFRPX1NFUUlWIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19NQU5BR0VSIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19ITUFDIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19YQ0JDIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19OVUxMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19NRDQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX01ENSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0hBMSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0hBMjU2IGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19TSEE1MTIgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1dQNTEyIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19UR1IxOTIgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0dGMTI4TVVMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19FQ0IgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NCQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fUENCQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fTFJXIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19YVFMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NUUiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fR0NNIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DQ00gaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NSWVBURCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fREVTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19GQ1JZUFQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0JMT1dGSVNIIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19UV09GSVNIIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19TRVJQRU5UIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19BRVMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NBU1Q1IGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DQVNUNiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fVEVBIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19BUkM0IGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19LSEFaQUQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0FOVUJJUyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0VFRCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0FMU0EyMCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fREVGTEFURSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fTUlDSEFFTF9NSUMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NSQzMyQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ0FNRUxMSUEgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0FVVEhFTkMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0xaTyBpcyBub3Qgc2V0CitDT05GSUdfQ1JZUFRPX0hXPXkKKyMgQ09ORklHX0NSWVBUT19ERVZfSElGTl83OTVYIGlzIG5vdCBzZXQKICMgQ09ORklHX1BQQ19DTE9DSyBpcyBub3Qgc2V0CiBDT05GSUdfUFBDX0xJQl9SSEVBUD15CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvY29uZmlncy90cW04NTYwX2RlZmNvbmZpZyBiL2FyY2gvcG93ZXJwYy9jb25maWdzL3RxbTg1NjBfZGVmY29uZmlnCmluZGV4IDA4MzJlODkuLjYzYzVlYzggMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jb25maWdzL3RxbTg1NjBfZGVmY29uZmlnCisrKyBiL2FyY2gvcG93ZXJwYy9jb25maWdzL3RxbTg1NjBfZGVmY29uZmlnCkBAIC0xLDcgKzEsNyBAQAogIwogIyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBtYWtlIGNvbmZpZzogZG9uJ3QgZWRpdAotIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjI0LXJjOAotIyBUaHUgSmFuIDI0IDIzOjUwOjQyIDIwMDgKKyMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4yNS1yYzYKKyMgTW9uIE1hciAyNCAwODo0ODo0NSAyMDA4CiAjCiAjIENPTkZJR19QUEM2NCBpcyBub3Qgc2V0CiAKQEAgLTE0LDEwICsxNCwxMCBAQAogIyBDT05GSUdfNDB4IGlzIG5vdCBzZXQKICMgQ09ORklHXzQ0eCBpcyBub3Qgc2V0CiAjIENPTkZJR19FMjAwIGlzIG5vdCBzZXQKLUNPTkZJR184NXh4PXkKIENPTkZJR19FNTAwPXkKIENPTkZJR19CT09LRT15CiBDT05GSUdfRlNMX0JPT0tFPXkKK0NPTkZJR19GU0xfRU1CX1BFUkZNT049eQogIyBDT05GSUdfUEhZU182NEJJVCBpcyBub3Qgc2V0CiBDT05GSUdfU1BFPXkKICMgQ09ORklHX1BQQ19NTV9TTElDRVMgaXMgbm90IHNldApAQCAtMzAsNiArMzAsNyBAQAogQ09ORklHX0dFTkVSSUNfVElNRV9WU1lTQ0FMTD15CiBDT05GSUdfR0VORVJJQ19DTE9DS0VWRU5UUz15CiBDT05GSUdfR0VORVJJQ19IQVJESVJRUz15CisjIENPTkZJR19IQVZFX1NFVFVQX1BFUl9DUFVfQVJFQSBpcyBub3Qgc2V0CiBDT05GSUdfSVJRX1BFUl9DUFU9eQogQ09ORklHX1JXU0VNX1hDSEdBRERfQUxHT1JJVEhNPXkKIENPTkZJR19BUkNIX0hBU19JTE9HMl9VMzI9eQpAQCAtNjcsMTcgKzY4LDE5IEBACiAjIENPTkZJR19QT1NJWF9NUVVFVUUgaXMgbm90IHNldAogIyBDT05GSUdfQlNEX1BST0NFU1NfQUNDVCBpcyBub3Qgc2V0CiAjIENPTkZJR19UQVNLU1RBVFMgaXMgbm90IHNldAotIyBDT05GSUdfVVNFUl9OUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19QSURfTlMgaXMgbm90IHNldAogIyBDT05GSUdfQVVESVQgaXMgbm90IHNldAogIyBDT05GSUdfSUtDT05GSUcgaXMgbm90IHNldAogQ09ORklHX0xPR19CVUZfU0hJRlQ9MTQKICMgQ09ORklHX0NHUk9VUFMgaXMgbm90IHNldAorQ09ORklHX0dST1VQX1NDSEVEPXkKIENPTkZJR19GQUlSX0dST1VQX1NDSEVEPXkKLUNPTkZJR19GQUlSX1VTRVJfU0NIRUQ9eQotIyBDT05GSUdfRkFJUl9DR1JPVVBfU0NIRUQgaXMgbm90IHNldAorIyBDT05GSUdfUlRfR1JPVVBfU0NIRUQgaXMgbm90IHNldAorQ09ORklHX1VTRVJfU0NIRUQ9eQorIyBDT05GSUdfQ0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKIENPTkZJR19TWVNGU19ERVBSRUNBVEVEPXkKK0NPTkZJR19TWVNGU19ERVBSRUNBVEVEX1YyPXkKICMgQ09ORklHX1JFTEFZIGlzIG5vdCBzZXQKKyMgQ09ORklHX05BTUVTUEFDRVMgaXMgbm90IHNldAogQ09ORklHX0JMS19ERVZfSU5JVFJEPXkKIENPTkZJR19JTklUUkFNRlNfU09VUkNFPSIiCiAjIENPTkZJR19DQ19PUFRJTUlaRV9GT1JfU0laRSBpcyBub3Qgc2V0CkBAIC04OSwxMSArOTIsMTMgQEAKIENPTkZJR19QUklOVEs9eQogQ09ORklHX0JVRz15CiBDT05GSUdfRUxGX0NPUkU9eQorQ09ORklHX0NPTVBBVF9CUks9eQogQ09ORklHX0JBU0VfRlVMTD15CiBDT05GSUdfRlVURVg9eQogQ09ORklHX0FOT05fSU5PREVTPXkKICMgQ09ORklHX0VQT0xMIGlzIG5vdCBzZXQKIENPTkZJR19TSUdOQUxGRD15CitDT05GSUdfVElNRVJGRD15CiBDT05GSUdfRVZFTlRGRD15CiBDT05GSUdfU0hNRU09eQogQ09ORklHX1ZNX0VWRU5UX0NPVU5URVJTPXkKQEAgLTEwMSw2ICsxMDYsMTIgQEAKICMgQ09ORklHX1NMQUIgaXMgbm90IHNldAogQ09ORklHX1NMVUI9eQogIyBDT05GSUdfU0xPQiBpcyBub3Qgc2V0CisjIENPTkZJR19QUk9GSUxJTkcgaXMgbm90IHNldAorIyBDT05GSUdfTUFSS0VSUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9PUFJPRklMRT15CitDT05GSUdfSEFWRV9LUFJPQkVTPXkKK0NPTkZJR19IQVZFX0tSRVRQUk9CRVM9eQorQ09ORklHX1BST0NfUEFHRV9NT05JVE9SPXkKIENPTkZJR19TTEFCSU5GTz15CiBDT05GSUdfUlRfTVVURVhFUz15CiAjIENPTkZJR19USU5ZX1NITUVNIGlzIG5vdCBzZXQKQEAgLTEyNCwxNSArMTM1LDE3IEBACiAjIENPTkZJR19ERUZBVUxUX0NGUSBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUZBVUxUX05PT1AgaXMgbm90IHNldAogQ09ORklHX0RFRkFVTFRfSU9TQ0hFRD0iYW50aWNpcGF0b3J5IgorQ09ORklHX0NMQVNTSUNfUkNVPXkKIAogIwogIyBQbGF0Zm9ybSBzdXBwb3J0CiAjCi0jIENPTkZJR19QUENfTVBDNTJ4eCBpcyBub3Qgc2V0Ci0jIENPTkZJR19QUENfTVBDNTIwMCBpcyBub3Qgc2V0CisjIENPTkZJR19QUENfTVBDNTEyeCBpcyBub3Qgc2V0CisjIENPTkZJR19QUENfTVBDNTEyMSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfQ0VMTCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfQ0VMTF9OQVRJVkUgaXMgbm90IHNldAogIyBDT05GSUdfUFEyQURTIGlzIG5vdCBzZXQKK0NPTkZJR19NUEM4NXh4PXkKICMgQ09ORklHX01QQzg1NDBfQURTIGlzIG5vdCBzZXQKICMgQ09ORklHX01QQzg1NjBfQURTIGlzIG5vdCBzZXQKICMgQ09ORklHX01QQzg1eHhfQ0RTIGlzIG5vdCBzZXQKQEAgLTE0Myw4ICsxNTYsOSBAQAogIyBDT05GSUdfVFFNODU0MSBpcyBub3Qgc2V0CiAjIENPTkZJR19UUU04NTU1IGlzIG5vdCBzZXQKIENPTkZJR19UUU04NTYwPXkKKyMgQ09ORklHX1NCQzg1NDggaXMgbm90IHNldAorIyBDT05GSUdfU0JDODU2MCBpcyBub3Qgc2V0CiBDT05GSUdfVFFNODV4eD15Ci1DT05GSUdfTVBDODV4eD15CiAjIENPTkZJR19JUElDIGlzIG5vdCBzZXQKIENPTkZJR19NUElDPXkKICMgQ09ORklHX01QSUNfV0VJUkQgaXMgbm90IHNldApAQCAtMTc0LDEzICsxODgsMTcgQEAKICMgQ09ORklHX0haXzMwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19IWl8xMDAwIGlzIG5vdCBzZXQKIENPTkZJR19IWj0yNTAKKyMgQ09ORklHX1NDSEVEX0hSVElDSyBpcyBub3Qgc2V0CiBDT05GSUdfUFJFRU1QVF9OT05FPXkKICMgQ09ORklHX1BSRUVNUFRfVk9MVU5UQVJZIGlzIG5vdCBzZXQKICMgQ09ORklHX1BSRUVNUFQgaXMgbm90IHNldAogQ09ORklHX0JJTkZNVF9FTEY9eQogIyBDT05GSUdfQklORk1UX01JU0MgaXMgbm90IHNldAogQ09ORklHX01BVEhfRU1VTEFUSU9OPXkKKyMgQ09ORklHX0lPTU1VX0hFTFBFUiBpcyBub3Qgc2V0CiBDT05GSUdfQVJDSF9FTkFCTEVfTUVNT1JZX0hPVFBMVUc9eQorQ09ORklHX0FSQ0hfSEFTX1dBTEtfTUVNT1JZPXkKK0NPTkZJR19BUkNIX0VOQUJMRV9NRU1PUllfSE9UUkVNT1ZFPXkKIENPTkZJR19BUkNIX0ZMQVRNRU1fRU5BQkxFPXkKIENPTkZJR19BUkNIX1BPUFVMQVRFU19OT0RFX01BUD15CiBDT05GSUdfU0VMRUNUX01FTU9SWV9NT0RFTD15CkBAIC0xOTksMTEgKzIxNyw3IEBACiAjIENPTkZJR19QUk9DX0RFVklDRVRSRUUgaXMgbm90IHNldAogIyBDT05GSUdfQ01ETElORV9CT09MIGlzIG5vdCBzZXQKICMgQ09ORklHX1BNIGlzIG5vdCBzZXQKLUNPTkZJR19TVVNQRU5EX1VQX1BPU1NJQkxFPXkKLUNPTkZJR19ISUJFUk5BVElPTl9VUF9QT1NTSUJMRT15CiBDT05GSUdfU0VDQ09NUD15Ci1DT05GSUdfV0FOVF9ERVZJQ0VfVFJFRT15Ci1DT05GSUdfREVWSUNFX1RSRUU9InRxbTg1NjAuZHRzIgogQ09ORklHX0lTQV9ETUFfQVBJPXkKIAogIwpAQCAtMjUwLDYgKzI2NCw3IEBACiAjIENPTkZJR19YRlJNX1VTRVIgaXMgbm90IHNldAogIyBDT05GSUdfWEZSTV9TVUJfUE9MSUNZIGlzIG5vdCBzZXQKICMgQ09ORklHX1hGUk1fTUlHUkFURSBpcyBub3Qgc2V0CisjIENPTkZJR19YRlJNX1NUQVRJU1RJQ1MgaXMgbm90IHNldAogIyBDT05GSUdfTkVUX0tFWSBpcyBub3Qgc2V0CiBDT05GSUdfSU5FVD15CiBDT05GSUdfSVBfTVVMVElDQVNUPXkKQEAgLTMwNSw2ICszMjAsNyBAQAogIwogIyBDT05GSUdfTkVUX1BLVEdFTiBpcyBub3Qgc2V0CiAjIENPTkZJR19IQU1SQURJTyBpcyBub3Qgc2V0CisjIENPTkZJR19DQU4gaXMgbm90IHNldAogIyBDT05GSUdfSVJEQSBpcyBub3Qgc2V0CiAjIENPTkZJR19CVCBpcyBub3Qgc2V0CiAjIENPTkZJR19BRl9SWFJQQyBpcyBub3Qgc2V0CkBAIC0zMzYsNiArMzUyLDcgQEAKIENPTkZJR19NVERfUEFSVElUSU9OUz15CiAjIENPTkZJR19NVERfUkVEQk9PVF9QQVJUUyBpcyBub3Qgc2V0CiBDT05GSUdfTVREX0NNRExJTkVfUEFSVFM9eQorIyBDT05GSUdfTVREX09GX1BBUlRTIGlzIG5vdCBzZXQKIAogIwogIyBVc2VyIE1vZHVsZXMgQW5kIFRyYW5zbGF0aW9uIExheWVycwpAQCAtNDIyLDcgKzQzOSw3IEBACiBDT05GSUdfQkxLX0RFVl9SQU09eQogQ09ORklHX0JMS19ERVZfUkFNX0NPVU5UPTE2CiBDT05GSUdfQkxLX0RFVl9SQU1fU0laRT0zMjc2OAotQ09ORklHX0JMS19ERVZfUkFNX0JMT0NLU0laRT0xMDI0CisjIENPTkZJR19CTEtfREVWX1hJUCBpcyBub3Qgc2V0CiAjIENPTkZJR19DRFJPTV9QS1RDRFZEIGlzIG5vdCBzZXQKICMgQ09ORklHX0FUQV9PVkVSX0VUSCBpcyBub3Qgc2V0CiBDT05GSUdfTUlTQ19ERVZJQ0VTPXkKQEAgLTQzMCwxMiArNDQ3LDE0IEBACiAjIENPTkZJR19FRVBST01fOTNDWDYgaXMgbm90IHNldAogIyBDT05GSUdfU0dJX0lPQzQgaXMgbm90IHNldAogIyBDT05GSUdfVElGTV9DT1JFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VOQ0xPU1VSRV9TRVJWSUNFUyBpcyBub3Qgc2V0CitDT05GSUdfSEFWRV9JREU9eQogQ09ORklHX0lERT15CiBDT05GSUdfSURFX01BWF9IV0lGUz00CiBDT05GSUdfQkxLX0RFVl9JREU9eQogCiAjCi0jIFBsZWFzZSBzZWUgRG9jdW1lbnRhdGlvbi9pZGUudHh0IGZvciBoZWxwL2luZm8gb24gSURFIGRyaXZlcworIyBQbGVhc2Ugc2VlIERvY3VtZW50YXRpb24vaWRlL2lkZS50eHQgZm9yIGhlbHAvaW5mbyBvbiBJREUgZHJpdmVzCiAjCiAjIENPTkZJR19CTEtfREVWX0lERV9TQVRBIGlzIG5vdCBzZXQKIENPTkZJR19CTEtfREVWX0lERURJU0s9eQpAQCAtNDUxLDEyICs0NzAsMTIgQEAKICMKIENPTkZJR19JREVfR0VORVJJQz15CiAjIENPTkZJR19CTEtfREVWX1BMQVRGT1JNIGlzIG5vdCBzZXQKK0NPTkZJR19CTEtfREVWX0lERURNQV9TRkY9eQogCiAjCiAjIFBDSSBJREUgY2hpcHNldHMgc3VwcG9ydAogIwogQ09ORklHX0JMS19ERVZfSURFUENJPXkKLUNPTkZJR19JREVQQ0lfU0hBUkVfSVJRPXkKIENPTkZJR19JREVQQ0lfUENJQlVTX09SREVSPXkKICMgQ09ORklHX0JMS19ERVZfT0ZGQk9BUkQgaXMgbm90IHNldAogQ09ORklHX0JMS19ERVZfR0VORVJJQz15CkBAIC00ODcsNyArNTA2LDYgQEAKICMgQ09ORklHX0JMS19ERVZfVFJNMjkwIGlzIG5vdCBzZXQKIENPTkZJR19CTEtfREVWX1ZJQTgyQ1hYWD15CiAjIENPTkZJR19CTEtfREVWX1RDODZDMDAxIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lERV9BUk0gaXMgbm90IHNldAogQ09ORklHX0JMS19ERVZfSURFRE1BPXkKIENPTkZJR19JREVfQVJDSF9PQlNPTEVURV9JTklUPXkKICMgQ09ORklHX0JMS19ERVZfSEQgaXMgbm90IHNldApAQCAtNTMzLDYgKzU1MSw3IEBACiAjIENPTkZJR19TTVNDX1BIWSBpcyBub3Qgc2V0CiAjIENPTkZJR19CUk9BRENPTV9QSFkgaXMgbm90IHNldAogIyBDT05GSUdfSUNQTFVTX1BIWSBpcyBub3Qgc2V0CisjIENPTkZJR19SRUFMVEVLX1BIWSBpcyBub3Qgc2V0CiAjIENPTkZJR19GSVhFRF9QSFkgaXMgbm90IHNldAogIyBDT05GSUdfTURJT19CSVRCQU5HIGlzIG5vdCBzZXQKIENPTkZJR19ORVRfRVRIRVJORVQ9eQpAQCAtNTYwLDYgKzU3OSw3IEBACiAjIENPTkZJR19ORTJLX1BDSSBpcyBub3Qgc2V0CiAjIENPTkZJR184MTM5Q1AgaXMgbm90IHNldAogIyBDT05GSUdfODEzOVRPTyBpcyBub3Qgc2V0CisjIENPTkZJR19SNjA0MCBpcyBub3Qgc2V0CiAjIENPTkZJR19TSVM5MDAgaXMgbm90IHNldAogIyBDT05GSUdfRVBJQzEwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19TVU5EQU5DRSBpcyBub3Qgc2V0CkBAIC01NzIsNyArNTkyLDkgQEAKICMgQ09ORklHX0RMMksgaXMgbm90IHNldAogIyBDT05GSUdfRTEwMDAgaXMgbm90IHNldAogIyBDT05GSUdfRTEwMDBFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0UxMDAwRV9FTkFCTEVEIGlzIG5vdCBzZXQKICMgQ09ORklHX0lQMTAwMCBpcyBub3Qgc2V0CisjIENPTkZJR19JR0IgaXMgbm90IHNldAogIyBDT05GSUdfTlM4MzgyMCBpcyBub3Qgc2V0CiAjIENPTkZJR19IQU1BQ0hJIGlzIG5vdCBzZXQKICMgQ09ORklHX1lFTExPV0ZJTiBpcyBub3Qgc2V0CkBAIC01OTksNiArNjIxLDcgQEAKICMgQ09ORklHX05JVSBpcyBub3Qgc2V0CiAjIENPTkZJR19NTFg0X0NPUkUgaXMgbm90IHNldAogIyBDT05GSUdfVEVIVVRJIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JOWDJYIGlzIG5vdCBzZXQKICMgQ09ORklHX1RSIGlzIG5vdCBzZXQKIAogIwpAQCAtNjExLDcgKzYzNCw2IEBACiAjIENPTkZJR19ISVBQSSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUFAgaXMgbm90IHNldAogIyBDT05GSUdfU0xJUCBpcyBub3Qgc2V0Ci0jIENPTkZJR19TSEFQRVIgaXMgbm90IHNldAogIyBDT05GSUdfTkVUQ09OU09MRSBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRQT0xMIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVF9QT0xMX0NPTlRST0xMRVIgaXMgbm90IHNldApAQCAtNjU0LDYgKzY3Niw3IEBACiAjCiAjIENPTkZJR19WVCBpcyBub3Qgc2V0CiAjIENPTkZJR19TRVJJQUxfTk9OU1RBTkRBUkQgaXMgbm90IHNldAorIyBDT05GSUdfTk9aT01JIGlzIG5vdCBzZXQKIAogIwogIyBTZXJpYWwgZHJpdmVycwpAQCAtNzM1LDE0ICs3NTgsMTIgQEAKICMKICMgTWlzY2VsbGFuZW91cyBJMkMgQ2hpcCBzdXBwb3J0CiAjCi1DT05GSUdfU0VOU09SU19EUzEzMzc9eQotIyBDT05GSUdfU0VOU09SU19EUzEzNzQgaXMgbm90IHNldAogIyBDT05GSUdfRFMxNjgyIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfRUVQUk9NIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfUENGODU3NCBpcyBub3Qgc2V0Ci0jIENPTkZJR19TRU5TT1JTX1BDQTk1MzkgaXMgbm90IHNldAorIyBDT05GSUdfUENGODU3NSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1BDRjg1OTEgaXMgbm90IHNldAotIyBDT05GSUdfU0VOU09SU19NNDFUMDAgaXMgbm90IHNldAorIyBDT05GSUdfVFBTNjUwMTAgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19NQVg2ODc1IGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVFNMMjU1MCBpcyBub3Qgc2V0CiAjIENPTkZJR19JMkNfREVCVUdfQ09SRSBpcyBub3Qgc2V0CkBAIC03NjcsNiArNzg4LDcgQEAKICMgQ09ORklHX1NFTlNPUlNfQURNMTAzMSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0FETTkyNDAgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19BRFQ3NDcwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNPUlNfQURUNzQ3MyBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0FUWFAxIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfRFMxNjIxIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfSTVLX0FNQiBpcyBub3Qgc2V0CkBAIC03OTYsNiArODE4LDcgQEAKICMgQ09ORklHX1NFTlNPUlNfU01TQzQ3TTEgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19TTVNDNDdNMTkyIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfU01TQzQ3QjM5NyBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX0FEUzc4MjggaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19USE1DNTAgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19WSUE2ODZBIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVlQxMjExIGlzIG5vdCBzZXQKQEAgLTgwNSw5ICs4MjgsMTEgQEAKICMgQ09ORklHX1NFTlNPUlNfVzgzNzkyRCBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1c4Mzc5MyBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1c4M0w3ODVUUyBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX1c4M0w3ODZORyBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1c4MzYyN0hGIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfVzgzNjI3RUhGIGlzIG5vdCBzZXQKIENPTkZJR19IV01PTl9ERUJVR19DSElQPXkKKyMgQ09ORklHX1RIRVJNQUwgaXMgbm90IHNldAogIyBDT05GSUdfV0FUQ0hET0cgaXMgbm90IHNldAogCiAjCkBAIC04NjAsMTYgKzg4NSwxNCBAQAogIwogIyBOT1RFOiBVU0JfU1RPUkFHRSBlbmFibGVzIFNDU0ksIGFuZCAnU0NTSSBkaXNrIHN1cHBvcnQnCiAjCi0KLSMKLSMgVVNCIEdhZGdldCBTdXBwb3J0Ci0jCiAjIENPTkZJR19VU0JfR0FER0VUIGlzIG5vdCBzZXQKICMgQ09ORklHX01NQyBpcyBub3Qgc2V0CisjIENPTkZJR19NRU1TVElDSyBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVdfTEVEUyBpcyBub3Qgc2V0CiAjIENPTkZJR19JTkZJTklCQU5EIGlzIG5vdCBzZXQKICMgQ09ORklHX0VEQUMgaXMgbm90IHNldAogIyBDT05GSUdfUlRDX0NMQVNTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RNQURFVklDRVMgaXMgbm90IHNldAogCiAjCiAjIFVzZXJzcGFjZSBJL08KQEAgLTg5NSwxMiArOTE4LDEwIEBACiAjIENPTkZJR19YRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfR0ZTMl9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19PQ0ZTMl9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CitDT05GSUdfRE5PVElGWT15CiBDT05GSUdfSU5PVElGWT15CiBDT05GSUdfSU5PVElGWV9VU0VSPXkKICMgQ09ORklHX1FVT1RBIGlzIG5vdCBzZXQKLUNPTkZJR19ETk9USUZZPXkKICMgQ09ORklHX0FVVE9GU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19BVVRPRlM0X0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZVU0VfRlMgaXMgbm90IHNldApAQCAtOTUzLDggKzk3NCwxMCBAQAogIyBDT05GSUdfSkZGUzJfUlVCSU4gaXMgbm90IHNldAogQ09ORklHX0NSQU1GUz15CiAjIENPTkZJR19WWEZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX01JTklYX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0hQRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfUU5YNEZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JPTUZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX1NZU1ZfRlMgaXMgbm90IHNldAogIyBDT05GSUdfVUZTX0ZTIGlzIG5vdCBzZXQKIENPTkZJR19ORVRXT1JLX0ZJTEVTWVNURU1TPXkKQEAgLTEwMTIsOSArMTAzNSw2IEBACiBDT05GSUdfSEFTX0lPTUVNPXkKIENPTkZJR19IQVNfSU9QT1JUPXkKIENPTkZJR19IQVNfRE1BPXkKLUNPTkZJR19JTlNUUlVNRU5UQVRJT049eQotIyBDT05GSUdfUFJPRklMSU5HIGlzIG5vdCBzZXQKLSMgQ09ORklHX01BUktFUlMgaXMgbm90IHNldAogCiAjCiAjIEtlcm5lbCBoYWNraW5nCkBAIC0xMDI4LDYgKzEwNDgsNyBAQAogIyBDT05GSUdfSEVBREVSU19DSEVDSyBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19LRVJORUwgaXMgbm90IHNldAogIyBDT05GSUdfU0xVQl9ERUJVR19PTiBpcyBub3Qgc2V0CisjIENPTkZJR19TTFVCX1NUQVRTIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX0JVR1ZFUkJPU0UgaXMgbm90IHNldAogIyBDT05GSUdfU0FNUExFUyBpcyBub3Qgc2V0CiAjIENPTkZJR19LR0RCX0NPTlNPTEUgaXMgbm90IHNldApAQCAtMTAzOSw2ICsxMDYwLDUwIEBACiAjIENPTkZJR19LRVlTIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFQ1VSSVRZIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFQ1VSSVRZX0ZJTEVfQ0FQQUJJTElUSUVTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0NSWVBUTyBpcyBub3Qgc2V0CitDT05GSUdfQ1JZUFRPPXkKKyMgQ09ORklHX0NSWVBUT19TRVFJViBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fTUFOQUdFUiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fSE1BQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fWENCQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fTlVMTCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fTUQ0IGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19NRDUgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1NIQTEgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1NIQTI1NiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0hBNTEyIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19XUDUxMiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fVEdSMTkyIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19HRjEyOE1VTCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fRUNCIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DQkMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1BDQkMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0xSVyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fWFRTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DVFIgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0dDTSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ0NNIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DUllQVEQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0RFUyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fRkNSWVBUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19CTE9XRklTSCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fVFdPRklTSCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0VSUEVOVCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQUVTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DQVNUNSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ0FTVDYgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1RFQSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQVJDNCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fS0hBWkFEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19BTlVCSVMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1NFRUQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1NBTFNBMjAgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0RFRkxBVEUgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX01JQ0hBRUxfTUlDIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DUkMzMkMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NBTUVMTElBIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19BVVRIRU5DIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19MWk8gaXMgbm90IHNldAorQ09ORklHX0NSWVBUT19IVz15CisjIENPTkZJR19DUllQVE9fREVWX0hJRk5fNzk1WCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfQ0xPQ0sgaXMgbm90IHNldAogQ09ORklHX1BQQ19MSUJfUkhFQVA9eQpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9oZWFkXzY0LlMgYi9hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfNjQuUwppbmRleCAxMWI0ZjZkLi5kM2FlZTA4IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfNjQuUworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfNjQuUwpAQCAtMTM4NywxMiArMTM4NywxNCBAQAogI2lmZGVmIENPTkZJR19QUENfSVNFUklFUwogQkVHSU5fRldfRlRSX1NFQ1RJT04KIAlvcmkJcjQscjQsTVNSX0VFCisJbGkJcjgsMQorCXN0YglyOCxQQUNBSEFSRElSUUVOKHIxMykKIEVORF9GV19GVFJfU0VDVElPTl9JRlNFVChGV19GRUFUVVJFX0lTRVJJRVMpCiAjZW5kaWYKIEJFR0lOX0ZXX0ZUUl9TRUNUSU9OCi0Jc3RiCXI3LFBBQ0FTT0ZUSVJRRU4ocjEzKQogCXN0YglyNyxQQUNBSEFSRElSUUVOKHIxMykKIEVORF9GV19GVFJfU0VDVElPTl9JRkNMUihGV19GRUFUVVJFX0lTRVJJRVMpCisJc3RiCXI3LFBBQ0FTT0ZUSVJRRU4ocjEzKQogCiAJbXRzcHIJU1BSTl9TUlIwLHIzCiAJbXRzcHIJU1BSTl9TUlIxLHI0CkBAIC0xNTIwLDE1ICsxNTIyLDE0IEBACiAjaWZkZWYgQ09ORklHX1BQQ19JU0VSSUVTCiBCRUdJTl9GV19GVFJfU0VDVElPTgogCW1mbXNyCXI1Ci0Jb3JpCXI1LHI1LE1TUl9FRQkJLyogSGFyZCBFbmFibGVkICovCisJb3JpCXI1LHI1LE1TUl9FRQkJLyogSGFyZCBFbmFibGVkIG9uIGlTZXJpZXMqLwogCW10bXNyZAlyNQorCWxpCXI1LDEKIEVORF9GV19GVFJfU0VDVElPTl9JRlNFVChGV19GRUFUVVJFX0lTRVJJRVMpCiAjZW5kaWYKLUJFR0lOX0ZXX0ZUUl9TRUNUSU9OCi0Jc3RiCXI1LFBBQ0FIQVJESVJRRU4ocjEzKQotRU5EX0ZXX0ZUUl9TRUNUSU9OX0lGQ0xSKEZXX0ZFQVRVUkVfSVNFUklFUykKKwlzdGIJcjUsUEFDQUhBUkRJUlFFTihyMTMpCS8qIEhhcmQgRGlzYWJsZWQgb24gb3RoZXJzICovCiAKLQlibCAuc3RhcnRfa2VybmVsCisJYmwJLnN0YXJ0X2tlcm5lbAogCiAJLyogTm90IHJlYWNoZWQgKi8KIAlCVUdfT1BDT0RFCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfOHh4LlMgYi9hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfOHh4LlMKaW5kZXggZjc0NTgzOS4uM2M5NDUyZCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9oZWFkXzh4eC5TCisrKyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvaGVhZF84eHguUwpAQCAtMzMyLDggKzMzMiwxOCBAQAogCW1mc3ByCXIxMSwgU1BSTl9NRF9UV0MJLyogLi4uLmFuZCBnZXQgdGhlIHB0ZSBhZGRyZXNzICovCiAJbHd6CXIxMCwgMChyMTEpCS8qIEdldCB0aGUgcHRlICovCiAKKyNpZmRlZiBDT05GSUdfU1dBUAorCS8qIGRvIG5vdCBzZXQgdGhlIF9QQUdFX0FDQ0VTU0VEIGJpdCBvZiBhIG5vbi1wcmVzZW50IHBhZ2UgKi8KKwlhbmRpLglyMTEsIHIxMCwgX1BBR0VfUFJFU0VOVAorCWJlcQk0ZgorCW9yaQlyMTAsIHIxMCwgX1BBR0VfQUNDRVNTRUQKKwltZnNwcglyMTEsIFNQUk5fTURfVFdDCS8qIGdldCB0aGUgcHRlIGFkZHJlc3MgYWdhaW4gKi8KKwlzdHcJcjEwLCAwKHIxMSkKKzQ6CisjZWxzZQogCW9yaQlyMTAsIHIxMCwgX1BBR0VfQUNDRVNTRUQKIAlzdHcJcjEwLCAwKHIxMSkKKyNlbmRpZgogCiAJLyogVGhlIExpbnV4IFBURSB3b24ndCBnbyBleGFjdGx5IGludG8gdGhlIE1NVSBUTEIuCiAJICogU29mdHdhcmUgaW5kaWNhdG9yIGJpdHMgMjEsIDIyIGFuZCAyOCBtdXN0IGJlIGNsZWFyLgpAQCAtMzk4LDggKzQwOCwxNyBAQAogCURPXzh4eF9DUFU2KDB4M2I4MCwgcjMpCiAJbXRzcHIJU1BSTl9NRF9UV0MsIHIxMQogCi0JbWZzcHIJcjExLCBTUFJOX01EX1RXQwkvKiBnZXQgdGhlIHB0ZSBhZGRyZXNzIGFnYWluICovCisjaWZkZWYgQ09ORklHX1NXQVAKKwkvKiBkbyBub3Qgc2V0IHRoZSBfUEFHRV9BQ0NFU1NFRCBiaXQgb2YgYSBub24tcHJlc2VudCBwYWdlICovCisJYW5kaS4JcjExLCByMTAsIF9QQUdFX1BSRVNFTlQKKwliZXEJNGYKIAlvcmkJcjEwLCByMTAsIF9QQUdFX0FDQ0VTU0VECis0OgorCS8qIGFuZCB1cGRhdGUgcHRlIGluIHRhYmxlICovCisjZWxzZQorCW9yaQlyMTAsIHIxMCwgX1BBR0VfQUNDRVNTRUQKKyNlbmRpZgorCW1mc3ByCXIxMSwgU1BSTl9NRF9UV0MJLyogZ2V0IHRoZSBwdGUgYWRkcmVzcyBhZ2FpbiAqLwogCXN0dwlyMTAsIDAocjExKQogCiAJLyogVGhlIExpbnV4IFBURSB3b24ndCBnbyBleGFjdGx5IGludG8gdGhlIE1NVSBUTEIuCkBAIC01MDcsNyArNTI2LDE2IEBACiAKIAkvKiBVcGRhdGUgJ2NoYW5nZWQnLCBhbW9uZyBvdGhlcnMuCiAJKi8KKyNpZmRlZiBDT05GSUdfU1dBUAorCW9yaQlyMTAsIHIxMCwgX1BBR0VfRElSVFl8X1BBR0VfSFdXUklURQorCS8qIGRvIG5vdCBzZXQgdGhlIF9QQUdFX0FDQ0VTU0VEIGJpdCBvZiBhIG5vbi1wcmVzZW50IHBhZ2UgKi8KKwlhbmRpLglyMTEsIHIxMCwgX1BBR0VfUFJFU0VOVAorCWJlcQk0ZgorCW9yaQlyMTAsIHIxMCwgX1BBR0VfQUNDRVNTRUQKKzQ6CisjZWxzZQogCW9yaQlyMTAsIHIxMCwgX1BBR0VfRElSVFl8X1BBR0VfQUNDRVNTRUR8X1BBR0VfSFdXUklURQorI2VuZGlmCiAJbWZzcHIJcjExLCBTUFJOX01EX1RXQwkJLyogR2V0IHB0ZSBhZGRyZXNzIGFnYWluICovCiAJc3R3CXIxMCwgMChyMTEpCQkvKiBhbmQgdXBkYXRlIHB0ZSBpbiB0YWJsZSAqLwogCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva2VybmVsL2lycS5jIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9pcnEuYwppbmRleCBiMGU1ZGViLi4yOTIxNjNmIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMva2VybmVsL2lycS5jCisrKyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvaXJxLmMKQEAgLTE0Myw3ICsxNDMsNiBAQAogCQkgKi8KIAkJaWYgKGxvY2FsX3BhY2EtPmxwcGFjYV9wdHItPmludF9kd29yZC5hbnlfaW50KQogCQkJaXNlcmllc19oYW5kbGVfaW50ZXJydXB0cygpOwotCQlyZXR1cm47CiAJfQogCiAJLyoKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvbWlzY18zMi5TIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9taXNjXzMyLlMKaW5kZXggNWMyZTI1My4uOWQyYzU2NiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9taXNjXzMyLlMKKysrIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9taXNjXzMyLlMKQEAgLTc4NSw2ICs3ODUsMjEgQEAKIAlvcglyNCxyNCxyNwkjIExTVyB8PSB0MgogCWJscgogCisvKgorICogNjQtYml0IGNvbXBhcmlzb246IF9fdWNtcGRpMih1NjQgYSwgdTY0IGIpCisgKiBSZXR1cm5zIDAgaWYgYSA8IGIsIDEgaWYgYSA9PSBiLCAyIGlmIGEgPiBiLgorICovCitfR0xPQkFMKF9fdWNtcGRpMikKKwljbXBsdwlyMyxyNQorCWxpCXIzLDEKKwlibmUJMWYKKwljbXBsdwlyNCxyNgorCWJlcWxyCisxOglsaQlyMywwCisJYmx0bHIKKwlsaQlyMywyCisJYmxyCisKIF9HTE9CQUwoYWJzKQogCXNyYXdpCXI0LHIzLDMxCiAJeG9yCXIzLHIzLHI0CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva2VybmVsL3BjaS1jb21tb24uYyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvcGNpLWNvbW1vbi5jCmluZGV4IDk4MGZlMzIuLjg5YzgzY2MgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvcGNpLWNvbW1vbi5jCisrKyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvcGNpLWNvbW1vbi5jCkBAIC03NDgsNyArNzQ4LDEzIEBACiAJCXN0cnVjdCByZXNvdXJjZSAqcmVzID0gZGV2LT5yZXNvdXJjZSArIGk7CiAJCWlmICghcmVzLT5mbGFncykKIAkJCWNvbnRpbnVlOwotCQlpZiAocmVzLT5lbmQgPT0gMHhmZmZmZmZmZikgeworCQkvKiBPbiBwbGF0Zm9ybXMgdGhhdCBoYXZlIFBQQ19QQ0lfUFJPQkVfT05MWSBzZXQsIHdlIGRvbid0CisJCSAqIGNvbnNpZGVyIDAgYXMgYW4gdW5hc3NpZ25lZCBCQVIgdmFsdWUuIEl0J3MgdGVjaG5pY2FsbHkKKwkJICogYSB2YWxpZCB2YWx1ZSwgYnV0IGxpbnV4IGRvZXNuJ3QgbGlrZSBpdC4uLiBzbyB3aGVuIHdlIGNhbgorCQkgKiByZS1hc3NpZ24gdGhpbmdzLCB3ZSBkbyBzbywgYnV0IGlmIHdlIGNhbid0LCB3ZSBrZWVwIGl0CisJCSAqIGFyb3VuZCBhbmQgaG9wZSBmb3IgdGhlIGJlc3QuLi4KKwkJICovCisJCWlmIChyZXMtPnN0YXJ0ID09IDAgJiYgIShwcGNfcGNpX2ZsYWdzICYgUFBDX1BDSV9QUk9CRV9PTkxZKSkgewogCQkJcHJfZGVidWcoIlBDSTolcyBSZXNvdXJjZSAlZCAlMDE2bGx4LSUwMTZsbHggWyV4XSBpcyB1bmFzc2lnbmVkXG4iLAogCQkJCSBwY2lfbmFtZShkZXYpLCBpLAogCQkJCSAodW5zaWduZWQgbG9uZyBsb25nKXJlcy0+c3RhcnQsCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva2VybmVsL3BwY19rc3ltcy5jIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9wcGNfa3N5bXMuYwppbmRleCBhYTlmZjM1Li45Yzk4NDI0IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMva2VybmVsL3BwY19rc3ltcy5jCisrKyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvcHBjX2tzeW1zLmMKQEAgLTU4LDYgKzU4LDcgQEAKIGV4dGVybiB2b2lkIHNpbmdsZV9zdGVwX2V4Y2VwdGlvbihzdHJ1Y3QgcHRfcmVncyAqcmVncyk7CiBleHRlcm4gaW50IHN5c19zaWdyZXR1cm4oc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOwogCitFWFBPUlRfU1lNQk9MKGVtcHR5X3plcm9fcGFnZSk7CiBFWFBPUlRfU1lNQk9MKGNsZWFyX3BhZ2VzKTsKIEVYUE9SVF9TWU1CT0woY29weV9wYWdlKTsKIEVYUE9SVF9TWU1CT0woSVNBX0RNQV9USFJFU0hPTEQpOwpAQCAtMTQ5LDYgKzE1MCw4IEBACiBFWFBPUlRfU1lNQk9MKF9fYXNocmRpMyk7CiBFWFBPUlRfU1lNQk9MKF9fYXNobGRpMyk7CiBFWFBPUlRfU1lNQk9MKF9fbHNocmRpMyk7CitpbnQgX191Y21wZGkyKHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKTsKK0VYUE9SVF9TWU1CT0woX191Y21wZGkyKTsKICNlbmRpZgogCiBFWFBPUlRfU1lNQk9MKG1lbWNweSk7CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva2VybmVsL3Byb2Nlc3MuYyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvcHJvY2Vzcy5jCmluZGV4IDQ4NDZiZjUuLjRlYzYwNTUgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvcHJvY2Vzcy5jCisrKyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvcHJvY2Vzcy5jCkBAIC0yNDEsOCArMjQxLDEyIEBACiB9CiAjZW5kaWYgLyogQ09ORklHX1NNUCAqLwogCitzdGF0aWMgREVGSU5FX1BFUl9DUFUodW5zaWduZWQgbG9uZywgY3VycmVudF9kYWJyKTsKKwogaW50IHNldF9kYWJyKHVuc2lnbmVkIGxvbmcgZGFicikKIHsKKwlfX2dldF9jcHVfdmFyKGN1cnJlbnRfZGFicikgPSBkYWJyOworCiAjaWZkZWYgQ09ORklHX1BQQ19NRVJHRQkJLyogWFhYIGZvciBub3cgKi8KIAlpZiAocHBjX21kLnNldF9kYWJyKQogCQlyZXR1cm4gcHBjX21kLnNldF9kYWJyKGRhYnIpOwpAQCAtMjU5LDggKzI2Myw2IEBACiBERUZJTkVfUEVSX0NQVShzdHJ1Y3QgY3B1X3VzYWdlLCBjcHVfdXNhZ2VfYXJyYXkpOwogI2VuZGlmCiAKLXN0YXRpYyBERUZJTkVfUEVSX0NQVSh1bnNpZ25lZCBsb25nLCBjdXJyZW50X2RhYnIpOwotCiBzdHJ1Y3QgdGFza19zdHJ1Y3QgKl9fc3dpdGNoX3RvKHN0cnVjdCB0YXNrX3N0cnVjdCAqcHJldiwKIAlzdHJ1Y3QgdGFza19zdHJ1Y3QgKm5ldykKIHsKQEAgLTMyNSwxMCArMzI3LDggQEAKIAogI2VuZGlmIC8qIENPTkZJR19TTVAgKi8KIAotCWlmICh1bmxpa2VseShfX2dldF9jcHVfdmFyKGN1cnJlbnRfZGFicikgIT0gbmV3LT50aHJlYWQuZGFicikpIHsKKwlpZiAodW5saWtlbHkoX19nZXRfY3B1X3ZhcihjdXJyZW50X2RhYnIpICE9IG5ldy0+dGhyZWFkLmRhYnIpKQogCQlzZXRfZGFicihuZXctPnRocmVhZC5kYWJyKTsKLQkJX19nZXRfY3B1X3ZhcihjdXJyZW50X2RhYnIpID0gbmV3LT50aHJlYWQuZGFicjsKLQl9CiAKIAluZXdfdGhyZWFkID0gJm5ldy0+dGhyZWFkOwogCW9sZF90aHJlYWQgPSAmY3VycmVudC0+dGhyZWFkOwpAQCAtMzUzLDYgKzM1MywxMiBAQAogCWFjY291bnRfcHJvY2Vzc192dGltZShjdXJyZW50KTsKIAljYWxjdWxhdGVfc3RlYWxfdGltZSgpOwogCisJLyoKKwkgKiBXZSBjYW4ndCB0YWtlIGEgUE1VIGV4Y2VwdGlvbiBpbnNpZGUgX3N3aXRjaCgpIHNpbmNlIHRoZXJlIGlzIGEKKwkgKiB3aW5kb3cgd2hlcmUgdGhlIGtlcm5lbCBzdGFjayBTTEIgYW5kIHRoZSBrZXJuZWwgc3RhY2sgYXJlIG91dAorCSAqIG9mIHN5bmMuIEhhcmQgZGlzYWJsZSBoZXJlLgorCSAqLworCWhhcmRfaXJxX2Rpc2FibGUoKTsKIAlsYXN0ID0gX3N3aXRjaChvbGRfdGhyZWFkLCBuZXdfdGhyZWFkKTsKIAogCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvcHRyYWNlLmMgYi9hcmNoL3Bvd2VycGMva2VybmVsL3B0cmFjZS5jCmluZGV4IDc2NzNlOTguLjJhOWZlOTcgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvcHRyYWNlLmMKKysrIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9wdHJhY2UuYwpAQCAtNTMwLDE1ICs1MzAsMjEgQEAKIAkJLS1jb3VudDsKIAl9CiAKLQlpZiAoa2J1ZikKKwlpZiAoa2J1ZikgewogCQlmb3IgKDsgY291bnQgPiAwICYmIHBvcyA8PSBQVF9NQVhfUFVUX1JFRzsgLS1jb3VudCkKIAkJCXJlZ3NbcG9zKytdID0gKmsrKzsKLQllbHNlCisJCWZvciAoOyBjb3VudCA+IDAgJiYgcG9zIDwgUFRfVFJBUDsgLS1jb3VudCwgKytwb3MpCisJCQkrK2s7CisJfSBlbHNlIHsKIAkJZm9yICg7IGNvdW50ID4gMCAmJiBwb3MgPD0gUFRfTUFYX1BVVF9SRUc7IC0tY291bnQpIHsKIAkJCWlmIChfX2dldF91c2VyKHJlZywgdSsrKSkKIAkJCQlyZXR1cm4gLUVGQVVMVDsKIAkJCXJlZ3NbcG9zKytdID0gcmVnOwogCQl9CisJCWZvciAoOyBjb3VudCA+IDAgJiYgcG9zIDwgUFRfVFJBUDsgLS1jb3VudCwgKytwb3MpCisJCQlpZiAoX19nZXRfdXNlcihyZWcsIHUrKykpCisJCQkJcmV0dXJuIC1FRkFVTFQ7CisJfQogCiAJaWYgKGNvdW50ID4gMCAmJiBwb3MgPT0gUFRfVFJBUCkgewogCQlpZiAoa2J1ZikKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvcnRhc19mbGFzaC5jIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9ydGFzX2ZsYXNoLmMKaW5kZXggZjIyNzY1OS4uNTM4YmFmNCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9ydGFzX2ZsYXNoLmMKKysrIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9ydGFzX2ZsYXNoLmMKQEAgLTM1Niw3ICszNTYsNyBAQAogCiAJLyogRW5mb3JjZSBleGNsdXNpdmUgb3BlbiB3aXRoIHVzZSBjb3VudCBvZiBQREUgKi8KIAlzcGluX2xvY2soJmZsYXNoX2ZpbGVfb3Blbl9sb2NrKTsKLQlpZiAoYXRvbWljX3JlYWQoJmRwLT5jb3VudCkgPiAxKSB7CisJaWYgKGF0b21pY19yZWFkKCZkcC0+Y291bnQpID4gMikgewogCQlzcGluX3VubG9jaygmZmxhc2hfZmlsZV9vcGVuX2xvY2spOwogCQlyZXR1cm4gLUVCVVNZOwogCX0KZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9tbS9oYXNoX2xvd18zMi5TIGIvYXJjaC9wb3dlcnBjL21tL2hhc2hfbG93XzMyLlMKaW5kZXggN2Y4MzBhNC4uZTEwZDc2YSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL21tL2hhc2hfbG93XzMyLlMKKysrIGIvYXJjaC9wb3dlcnBjL21tL2hhc2hfbG93XzMyLlMKQEAgLTQ0LDYgKzQ0LDkgQEAKICNpZmRlZiBDT05GSUdfU01QCiAJLnRleHQKIF9HTE9CQUwoaGFzaF9wYWdlX3N5bmMpCisJbWZtc3IgICByMTAKKwlybHdpbm0gIHIwLHIxMCwwLDE3LDE1ICAgICAgICAgIC8qIGNsZWFyIGJpdCAxNiAoTVNSX0VFKSAqLworCW10bXNyICAgcjAKIAlsaXMJcjgsbW11X2hhc2hfbG9ja0BoCiAJb3JpCXI4LHI4LG1tdV9oYXNoX2xvY2tAbAogCWxpcwlyMCwweDBmZmYKQEAgLTYwLDggKzYzLDkgQEAKIAllaWVpbwogCWxpCXIwLDAKIAlzdHcJcjAsMChyOCkKLQlibHIJCi0jZW5kaWYKKwltdG1zcglyMTAKKwlibHIKKyNlbmRpZiAvKiBDT05GSUdfU01QICovCiAKIC8qCiAgKiBMb2FkIGEgUFRFIGludG8gdGhlIGhhc2ggdGFibGUsIGlmIHBvc3NpYmxlLgpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL21tL2hhc2hfdXRpbHNfNjQuYyBiL2FyY2gvcG93ZXJwYy9tbS9oYXNoX3V0aWxzXzY0LmMKaW5kZXggMzJmNDE2MS4uYTgzZGZhMyAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL21tL2hhc2hfdXRpbHNfNjQuYworKysgYi9hcmNoL3Bvd2VycGMvbW0vaGFzaF91dGlsc182NC5jCkBAIC0zNTEsOSArMzUxLDE0IEBACiAJCW1tdV92bWFsbG9jX3BzaXplID0gTU1VX1BBR0VfNjRLOwogCQlpZiAobW11X2xpbmVhcl9wc2l6ZSA9PSBNTVVfUEFHRV80SykKIAkJCW1tdV9saW5lYXJfcHNpemUgPSBNTVVfUEFHRV82NEs7Ci0JCWlmIChjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9DSV9MQVJHRV9QQUdFKSkKLQkJCW1tdV9pb19wc2l6ZSA9IE1NVV9QQUdFXzY0SzsKLQkJZWxzZQorCQlpZiAoY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfQ0lfTEFSR0VfUEFHRSkpIHsKKwkJCS8qCisJCQkgKiBEb24ndCB1c2UgNjRrIHBhZ2VzIGZvciBpb3JlbWFwIG9uIHBTZXJpZXMsIHNpbmNlCisJCQkgKiB0aGF0IHdvdWxkIHN0b3AgdXMgYWNjZXNzaW5nIHRoZSBIRUEgZXRoZXJuZXQuCisJCQkgKi8KKwkJCWlmICghbWFjaGluZV9pcyhwc2VyaWVzKSkKKwkJCQltbXVfaW9fcHNpemUgPSBNTVVfUEFHRV82NEs7CisJCX0gZWxzZQogCQkJbW11X2NpX3Jlc3RyaWN0aW9ucyA9IDE7CiAJfQogI2VuZGlmIC8qIENPTkZJR19QUENfNjRLX1BBR0VTICovCkBAIC01MDYsMTAgKzUxMSwxMCBAQAogCX0gZWxzZSB7CiAJCS8qIEZpbmQgc3RvcmFnZSBmb3IgdGhlIEhQVC4gIE11c3QgYmUgY29udGlndW91cyBpbgogCQkgKiB0aGUgYWJzb2x1dGUgYWRkcmVzcyBzcGFjZS4gT24gY2VsbCB3ZSB3YW50IGl0IHRvIGJlCi0JCSAqIGluIHRoZSBmaXJzdCAxIEdpZy4KKwkJICogaW4gdGhlIGZpcnN0IDIgR2lnIHNvIHdlIGNhbiB1c2UgaXQgZm9yIElPTU1VIGhhY2tzLgogCQkgKi8KIAkJaWYgKG1hY2hpbmVfaXMoY2VsbCkpCi0JCQlsaW1pdCA9IDB4NDAwMDAwMDA7CisJCQlsaW1pdCA9IDB4ODAwMDAwMDA7CiAJCWVsc2UKIAkJCWxpbWl0ID0gMDsKIApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL21tL3NsYi5jIGIvYXJjaC9wb3dlcnBjL21tL3NsYi5jCmluZGV4IDQ3YjA2YmEuLjkwNmRhZWQgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9tbS9zbGIuYworKysgYi9hcmNoL3Bvd2VycGMvbW0vc2xiLmMKQEAgLTEyNCw2ICsxMjQsMTIgQEAKIAkJa3NwX3ZzaWRfZGF0YSA9IGdldF9zbGJfc2hhZG93KCktPnNhdmVfYXJlYVsyXS52c2lkOwogCX0KIAorCS8qCisJICogV2UgY2FuJ3QgdGFrZSBhIFBNVSBleGNlcHRpb24gaW4gdGhlIGZvbGxvd2luZyBjb2RlLCBzbyBoYXJkCisJICogZGlzYWJsZSBpbnRlcnJ1cHRzLgorCSAqLworCWhhcmRfaXJxX2Rpc2FibGUoKTsKKwogCS8qIFdlIG5lZWQgdG8gZG8gdGhpcyBhbGwgaW4gYXNtLCBzbyB3ZSdyZSBzdXJlIHdlIGRvbid0IHRvdWNoCiAJICogdGhlIHN0YWNrIGJldHdlZW4gdGhlIHNsYmlhIGFuZCByZWJvbHRpbmcgaXQuICovCiAJYXNtIHZvbGF0aWxlKCJpc3luY1xuIgpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL29wcm9maWxlL2NlbGwvdm1hX21hcC5jIGIvYXJjaC9wb3dlcnBjL29wcm9maWxlL2NlbGwvdm1hX21hcC5jCmluZGV4IDc2ZWMxZDEuLjlhOTMyMTcgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9vcHJvZmlsZS9jZWxsL3ZtYV9tYXAuYworKysgYi9hcmNoL3Bvd2VycGMvb3Byb2ZpbGUvY2VsbC92bWFfbWFwLmMKQEAgLTkyLDcgKzkyLDcgQEAKICAqIEEgcG9pbnRlciB0byB0aGUgZmlyc3Qgdm1hX21hcCBpbiB0aGUgZ2VuZXJhdGVkIGxpc3QKICAqIG9mIHZtYV9tYXBzIGlzIHJldHVybmVkLiAgKi8KIHN0cnVjdCB2bWFfdG9fZmlsZW9mZnNldF9tYXAgKmNyZWF0ZV92bWFfbWFwKGNvbnN0IHN0cnVjdCBzcHUgKmFTcHUsCi0JCQkJCSAgICAgdW5zaWduZWQgbG9uZyBzcHVfZWxmX3N0YXJ0KQorCQkJCQkgICAgIHVuc2lnbmVkIGxvbmcgX19zcHVfZWxmX3N0YXJ0KQogewogCXN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGV4cGVjdGVkW0VJX1BBRF0gPSB7CiAJCVtFSV9NQUcwXSA9IEVMRk1BRzAsCkBAIC0xMDcsOSArMTA3LDExIEBACiAKIAlpbnQgZ3JkX3ZhbDsKIAlzdHJ1Y3Qgdm1hX3RvX2ZpbGVvZmZzZXRfbWFwICptYXAgPSBOVUxMOworCXZvaWQgX191c2VyICpzcHVfZWxmX3N0YXJ0ID0gKHZvaWQgX191c2VyICopX19zcHVfZWxmX3N0YXJ0OwogCXN0cnVjdCBzcHVfb3ZlcmxheV9pbmZvIG92bHk7CiAJdW5zaWduZWQgaW50IG92ZXJsYXlfdGJsX29mZnNldCA9IC0xOwotCXVuc2lnbmVkIGxvbmcgcGhkcl9zdGFydCwgc2hkcl9zdGFydDsKKwlFbGYzMl9QaGRyIF9fdXNlciAqcGhkcl9zdGFydDsKKwlFbGYzMl9TaGRyIF9fdXNlciAqc2hkcl9zdGFydDsKIAlFbGYzMl9FaGRyIGVoZHI7CiAJRWxmMzJfUGhkciBwaGRyOwogCUVsZjMyX1NoZHIgc2hkciwgc2hkcl9zdHI7CkBAIC0xMjEsMTIgKzEyMywxMiBAQAogCXVuc2lnbmVkIGludCBvdmx5X2J1Zl90YWJsZV9zeW0gPSAwOwogCXVuc2lnbmVkIGludCBvdmx5X3RhYmxlX2VuZF9zeW0gPSAwOwogCXVuc2lnbmVkIGludCBvdmx5X2J1Zl90YWJsZV9lbmRfc3ltID0gMDsKLQl1bnNpZ25lZCBsb25nIG92bHlfdGFibGU7CisJc3RydWN0IHNwdV9vdmVybGF5X2luZm8gX191c2VyICpvdmx5X3RhYmxlOwogCXVuc2lnbmVkIGludCBuX292bHlzOwogCiAJLyogR2V0IGFuZCB2YWxpZGF0ZSBFTEYgaGVhZGVyLgkgKi8KIAotCWlmIChjb3B5X2Zyb21fdXNlcigmZWhkciwgKHZvaWQgKikgc3B1X2VsZl9zdGFydCwgc2l6ZW9mIChlaGRyKSkpCisJaWYgKGNvcHlfZnJvbV91c2VyKCZlaGRyLCBzcHVfZWxmX3N0YXJ0LCBzaXplb2YgKGVoZHIpKSkKIAkJZ290byBmYWlsOwogCiAJaWYgKG1lbWNtcChlaGRyLmVfaWRlbnQsIGV4cGVjdGVkLCBFSV9QQUQpICE9IDApIHsKQEAgLTE1Miw5ICsxNTQsNyBAQAogCiAJLyogVHJhdmVyc2UgcHJvZ3JhbSBoZWFkZXJzLiAgKi8KIAlmb3IgKGkgPSAwOyBpIDwgZWhkci5lX3BobnVtOyBpKyspIHsKLQkJaWYgKGNvcHlfZnJvbV91c2VyKCZwaGRyLAotCQkJCSAgICh2b2lkICopIChwaGRyX3N0YXJ0ICsgaSAqIHNpemVvZihwaGRyKSksCi0JCQkJICAgc2l6ZW9mKHBoZHIpKSkKKwkJaWYgKGNvcHlfZnJvbV91c2VyKCZwaGRyLCBwaGRyX3N0YXJ0ICsgaSwgc2l6ZW9mKHBoZHIpKSkKIAkJCWdvdG8gZmFpbDsKIAogCQlpZiAocGhkci5wX3R5cGUgIT0gUFRfTE9BRCkKQEAgLTE3MSw5ICsxNzEsNyBAQAogCXByX2RlYnVnKCJTUFVfUFJPRjogQ3JlYXRlZCBub24tb3ZlcmxheSBtYXBzXG4iKTsKIAkvKiBUcmF2ZXJzZSBzZWN0aW9uIHRhYmxlIGFuZCBzZWFyY2ggZm9yIG92ZXJsYXktcmVsYXRlZCBzeW1ib2xzLiAgKi8KIAlmb3IgKGkgPSAwOyBpIDwgZWhkci5lX3NobnVtOyBpKyspIHsKLQkJaWYgKGNvcHlfZnJvbV91c2VyKCZzaGRyLAotCQkJCSAgICh2b2lkICopIChzaGRyX3N0YXJ0ICsgaSAqIHNpemVvZihzaGRyKSksCi0JCQkJICAgc2l6ZW9mKHNoZHIpKSkKKwkJaWYgKGNvcHlfZnJvbV91c2VyKCZzaGRyLCBzaGRyX3N0YXJ0ICsgaSwgc2l6ZW9mKHNoZHIpKSkKIAkJCWdvdG8gZmFpbDsKIAogCQlpZiAoc2hkci5zaF90eXBlICE9IFNIVF9TWU1UQUIpCkBAIC0xODIsOCArMTgwLDcgQEAKIAkJCWNvbnRpbnVlOwogCiAJCWlmIChjb3B5X2Zyb21fdXNlcigmc2hkcl9zdHIsCi0JCQkJICAgKHZvaWQgKikgKHNoZHJfc3RhcnQgKyBzaGRyLnNoX2xpbmsgKgotCQkJCQkgICAgIHNpemVvZihzaGRyKSksCisJCQkJICAgc2hkcl9zdGFydCArIHNoZHIuc2hfbGluaywKIAkJCQkgICBzaXplb2Yoc2hkcikpKQogCQkJZ290byBmYWlsOwogCkBAIC0xOTEsMTUgKzE4OCwxNSBAQAogCQkJZ290byBmYWlsOzsKIAogCQlmb3IgKGogPSAwOyBqIDwgc2hkci5zaF9zaXplIC8gc2l6ZW9mIChzeW0pOyBqKyspIHsKLQkJCWlmIChjb3B5X2Zyb21fdXNlcigmc3ltLCAodm9pZCAqKSAoc3B1X2VsZl9zdGFydCArCi0JCQkJCQkgICAgICAgc2hkci5zaF9vZmZzZXQgKyBqICoKLQkJCQkJCQkgICBzaXplb2YgKHN5bSkpLAorCQkJaWYgKGNvcHlfZnJvbV91c2VyKCZzeW0sIHNwdV9lbGZfc3RhcnQgKworCQkJCQkJIHNoZHIuc2hfb2Zmc2V0ICsKKwkJCQkJCSBqICogc2l6ZW9mIChzeW0pLAogCQkJCQkgICBzaXplb2YgKHN5bSkpKQogCQkJCWdvdG8gZmFpbDsKIAotCQkJaWYgKGNvcHlfZnJvbV91c2VyKG5hbWUsICh2b2lkICopCi0JCQkJCSAgIChzcHVfZWxmX3N0YXJ0ICsgc2hkcl9zdHIuc2hfb2Zmc2V0ICsKLQkJCQkJICAgIHN5bS5zdF9uYW1lKSwKKwkJCWlmIChjb3B5X2Zyb21fdXNlcihuYW1lLCAKKwkJCQkJICAgc3B1X2VsZl9zdGFydCArIHNoZHJfc3RyLnNoX29mZnNldCArCisJCQkJCSAgIHN5bS5zdF9uYW1lLAogCQkJCQkgICAyMCkpCiAJCQkJZ290byBmYWlsOwogCkBAIC0yNDUsOSArMjQyLDcgQEAKIAogCS8qIFRyYXZlcnNlIG92ZXJsYXkgdGFibGUuICAqLwogCWZvciAoaSA9IDA7IGkgPCBuX292bHlzOyBpKyspIHsKLQkJaWYgKGNvcHlfZnJvbV91c2VyKCZvdmx5LCAodm9pZCAqKQotCQkJCSAgIChvdmx5X3RhYmxlICsgaSAqIHNpemVvZiAob3ZseSkpLAotCQkJCSAgIHNpemVvZiAob3ZseSkpKQorCQlpZiAoY29weV9mcm9tX3VzZXIoJm92bHksIG92bHlfdGFibGUgKyBpLCBzaXplb2YgKG92bHkpKSkKIAkJCWdvdG8gZmFpbDsKIAogCQkvKiBUaGUgb3ZseS52bWEvc2l6ZS9vZmZzZXQgYXJndW1lbnRzIGFyZSBhbmFsb2dvdXMgdG8gdGhlIHNhbWUKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODN4eC9tcGM4Mzd4X21kcy5jIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84M3h4L21wYzgzN3hfbWRzLmMKaW5kZXggOGE5YzI2OS4uNjRkMTdiMCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84M3h4L21wYzgzN3hfbWRzLmMKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84M3h4L21wYzgzN3hfbWRzLmMKQEAgLTM5LDEyICszOSw5IEBACiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAkvKiBNYXAgQkNTUiBhcmVhICovCi0JbnAgPSBvZl9maW5kX25vZGVfYnlfbmFtZShOVUxMLCAiYmNzciIpOworCW5wID0gb2ZfZmluZF9jb21wYXRpYmxlX25vZGUoTlVMTCwgTlVMTCwgImZzbCxtcGM4Mzd4bWRzLWJjc3IiKTsKIAlpZiAobnApIHsKLQkJc3RydWN0IHJlc291cmNlIHJlczsKLQotCQlvZl9hZGRyZXNzX3RvX3Jlc291cmNlKG5wLCAwLCAmcmVzKTsKLQkJYmNzcl9yZWdzID0gaW9yZW1hcChyZXMuc3RhcnQsIHJlcy5lbmQgLSByZXMuc3RhcnQgKyAxKTsKKwkJYmNzcl9yZWdzID0gb2ZfaW9tYXAobnAsIDApOwogCQlvZl9ub2RlX3B1dChucCk7CiAJfQogCWlmICghYmNzcl9yZWdzKQpAQCAtOTYsNiArOTMsNyBAQAogc3RhdGljIHN0cnVjdCBvZl9kZXZpY2VfaWQgbXBjODM3eF9pZHNbXSA9IHsKIAl7IC50eXBlID0gInNvYyIsIH0sCiAJeyAuY29tcGF0aWJsZSA9ICJzb2MiLCB9LAorCXsgLmNvbXBhdGlibGUgPSAic2ltcGxlLWJ1cyIsIH0sCiAJe30sCiB9OwogCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL0tjb25maWcgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL0tjb25maWcKaW5kZXggMGFmZDIyNS4uYTU3OGI5NiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9LY29uZmlnCisrKyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvS2NvbmZpZwpAQCAtMjIsNyArMjIsNiBAQAogCXNlbGVjdCBGU0xfU09DCiAJc2VsZWN0IE1QQzgzeHgKIAlzZWxlY3QgSVBJQwotCXNlbGVjdCBGU0xfRU1CX1BFUkZNT04KIAogY29uZmlnIFBQQ184Nnh4CiAJYm9vbCAiRnJlZXNjYWxlIDg2eHgiCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL0tjb25maWcuY3B1dHlwZSBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvS2NvbmZpZy5jcHV0eXBlCmluZGV4IDczZDgxY2UuLjBjM2ZhY2UgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvS2NvbmZpZy5jcHV0eXBlCisrKyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvS2NvbmZpZy5jcHV0eXBlCkBAIC0xMTMsNyArMTEzLDEyIEBACiAJZGVmYXVsdCB5CiAKIGNvbmZpZyBGU0xfRU1CX1BFUkZNT04KLQlib29sCisJYm9vbCAiRnJlZXNjYWxlIEVtYmVkZGVkIFBlcmZtb24iCisJZGVwZW5kcyBvbiBFNTAwIHx8IFBQQ184M3h4CisJaGVscAorCSAgVGhpcyBpcyB0aGUgUGVyZm9ybWFuY2UgTW9uaXRvciBzdXBwb3J0IGZvdW5kIG9uIHRoZSBlNTAwIGNvcmUKKwkgIGFuZCBzb21lIGUzMDAgY29yZXMgKGMzIGFuZCBjNCkuICBTZWxlY3QgdGhpcyBvbmx5IGlmIHlvdXIKKwkgIGNvcmUgc3VwcG9ydHMgdGhlIEVtYmVkZGVkIFBlcmZvcm1hbmNlIE1vbml0b3IgQVBVCiAKIGNvbmZpZyBQVEVfNjRCSVQKIAlib29sCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2NlbGwvaW9tbXUuYyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9pb21tdS5jCmluZGV4IDIwZWEwZTEuLmQ3NWNjZGUgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9pb21tdS5jCisrKyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9pb21tdS5jCkBAIC04MDIsMTcgKzgwMiwyNCBAQAogCiBzdGF0aWMgdTY0IGNlbGxfaW9tbXVfZ2V0X2ZpeGVkX2FkZHJlc3Moc3RydWN0IGRldmljZSAqZGV2KQogewotCXU2NCBjcHVfYWRkciwgc2l6ZSwgYmVzdF9zaXplLCBwY2lfYWRkciA9IE9GX0JBRF9BRERSOworCXU2NCBjcHVfYWRkciwgc2l6ZSwgYmVzdF9zaXplLCBkZXZfYWRkciA9IE9GX0JBRF9BRERSOwogCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbnA7CiAJY29uc3QgdTMyICpyYW5nZXMgPSBOVUxMOwotCWludCBpLCBsZW4sIGJlc3Q7CisJaW50IGksIGxlbiwgYmVzdCwgbmFkZHIsIG5zaXplLCBwbmEsIHJhbmdlX3NpemU7CiAKIAlucCA9IG9mX25vZGVfZ2V0KGRldi0+YXJjaGRhdGEub2Zfbm9kZSk7Ci0Jd2hpbGUgKG5wKSB7Ci0JCXJhbmdlcyA9IG9mX2dldF9wcm9wZXJ0eShucCwgImRtYS1yYW5nZXMiLCAmbGVuKTsKLQkJaWYgKHJhbmdlcykKLQkJCWJyZWFrOworCXdoaWxlICgxKSB7CisJCW5hZGRyID0gb2Zfbl9hZGRyX2NlbGxzKG5wKTsKKwkJbnNpemUgPSBvZl9uX3NpemVfY2VsbHMobnApOwogCQlucCA9IG9mX2dldF9uZXh0X3BhcmVudChucCk7CisJCWlmICghbnApCisJCQlicmVhazsKKworCQlyYW5nZXMgPSBvZl9nZXRfcHJvcGVydHkobnAsICJkbWEtcmFuZ2VzIiwgJmxlbik7CisKKwkJLyogSWdub3JlIGVtcHR5IHJhbmdlcywgdGhleSBpbXBseSBubyB0cmFuc2xhdGlvbiByZXF1aXJlZCAqLworCQlpZiAocmFuZ2VzICYmIGxlbiA+IDApCisJCQlicmVhazsKIAl9CiAKIAlpZiAoIXJhbmdlcykgewpAQCAtODIyLDE1ICs4MjksMTcgQEAKIAogCWxlbiAvPSBzaXplb2YodTMyKTsKIAorCXBuYSA9IG9mX25fYWRkcl9jZWxscyhucCk7CisJcmFuZ2Vfc2l6ZSA9IG5hZGRyICsgbnNpemUgKyBwbmE7CisKIAkvKiBkbWEtcmFuZ2VzIGZvcm1hdDoKLQkgKiAxIGNlbGw6ICBwY2kgc3BhY2UKLQkgKiAyIGNlbGxzOiBwY2kgYWRkcmVzcwotCSAqIDIgY2VsbHM6IHBhcmVudCBhZGRyZXNzCi0JICogMiBjZWxsczogc2l6ZQorCSAqIGNoaWxkIGFkZHIJOiBuYWRkciBjZWxscworCSAqIHBhcmVudCBhZGRyCTogcG5hIGNlbGxzCisJICogc2l6ZQkJOiBuc2l6ZSBjZWxscwogCSAqLwotCWZvciAoaSA9IDAsIGJlc3QgPSAtMSwgYmVzdF9zaXplID0gMDsgaSA8IGxlbjsgaSArPSA3KSB7Ci0JCWNwdV9hZGRyID0gb2ZfdHJhbnNsYXRlX2RtYV9hZGRyZXNzKG5wLCByYW5nZXMgK2kgKyAzKTsKLQkJc2l6ZSA9IG9mX3JlYWRfbnVtYmVyKHJhbmdlcyArIGkgKyA1LCAyKTsKKwlmb3IgKGkgPSAwLCBiZXN0ID0gLTEsIGJlc3Rfc2l6ZSA9IDA7IGkgPCBsZW47IGkgKz0gcmFuZ2Vfc2l6ZSkgeworCQljcHVfYWRkciA9IG9mX3RyYW5zbGF0ZV9kbWFfYWRkcmVzcyhucCwgcmFuZ2VzICsgaSArIG5hZGRyKTsKKwkJc2l6ZSA9IG9mX3JlYWRfbnVtYmVyKHJhbmdlcyArIGkgKyBuYWRkciArIHBuYSwgbnNpemUpOwogCiAJCWlmIChjcHVfYWRkciA9PSAwICYmIHNpemUgPiBiZXN0X3NpemUpIHsKIAkJCWJlc3QgPSBpOwpAQCAtODM4LDE1ICs4NDcsMTUgQEAKIAkJfQogCX0KIAotCWlmIChiZXN0ID49IDApCi0JCXBjaV9hZGRyID0gb2ZfcmVhZF9udW1iZXIocmFuZ2VzICsgYmVzdCArIDEsIDIpOwotCWVsc2UKKwlpZiAoYmVzdCA+PSAwKSB7CisJCWRldl9hZGRyID0gb2ZfcmVhZF9udW1iZXIocmFuZ2VzICsgYmVzdCwgbmFkZHIpOworCX0gZWxzZQogCQlkZXZfZGJnKGRldiwgImlvbW11OiBubyBzdWl0YWJsZSByYW5nZSBmb3VuZCFcbiIpOwogCiBvdXQ6CiAJb2Zfbm9kZV9wdXQobnApOwogCi0JcmV0dXJuIHBjaV9hZGRyOworCXJldHVybiBkZXZfYWRkcjsKIH0KIAogc3RhdGljIGludCBkbWFfc2V0X21hc2tfYW5kX3N3aXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIHU2NCBkbWFfbWFzaykKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9zZXR1cC5jIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL3NldHVwLmMKaW5kZXggZGRhMzQ2NS4uNWM1MzFlOCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL3NldHVwLmMKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL3NldHVwLmMKQEAgLTgxLDYgKzgxLDQyIEBACiAJcHJpbnRrKCIqKiogJTA0eCA6ICVzXG4iLCBoZXgsIHMgPyBzIDogIiIpOwogfQogCitzdGF0aWMgdm9pZCBjZWxsX2ZpeHVwX3BjaWVfcm9vdGNvbXBsZXgoc3RydWN0IHBjaV9kZXYgKmRldikKK3sKKwlzdHJ1Y3QgcGNpX2NvbnRyb2xsZXIgKmhvc2U7CisJY29uc3QgY2hhciAqczsKKwlpbnQgaTsKKworCWlmICghbWFjaGluZV9pcyhjZWxsKSkKKwkJcmV0dXJuOworCisJLyogV2UncmUgc2VhcmNoaW5nIGZvciBhIGRpcmVjdCBjaGlsZCBvZiB0aGUgUEhCICovCisJaWYgKGRldi0+YnVzLT5zZWxmICE9IE5VTEwgfHwgZGV2LT5kZXZmbiAhPSAwKQorCQlyZXR1cm47CisKKwlob3NlID0gcGNpX2J1c190b19ob3N0KGRldi0+YnVzKTsKKwlpZiAoaG9zZSA9PSBOVUxMKQorCQlyZXR1cm47CisKKwkvKiBPbmx5IG9uIFBDSUUgKi8KKwlpZiAoIW9mX2RldmljZV9pc19jb21wYXRpYmxlKGhvc2UtPmRuLCAicGNpZXgiKSkKKwkJcmV0dXJuOworCisJLyogQW5kIG9ubHkgb24gYXhvbiAqLworCXMgPSBvZl9nZXRfcHJvcGVydHkoaG9zZS0+ZG4sICJtb2RlbCIsIE5VTEwpOworCWlmICghcyB8fCBzdHJjbXAocywgIkF4b24iKSAhPSAwKQorCQlyZXR1cm47CisKKwlmb3IgKGkgPSAwOyBpIDwgUENJX0JSSURHRV9SRVNPVVJDRVM7IGkrKykgeworCQlkZXYtPnJlc291cmNlW2ldLnN0YXJ0ID0gZGV2LT5yZXNvdXJjZVtpXS5lbmQgPSAwOworCQlkZXYtPnJlc291cmNlW2ldLmZsYWdzID0gMDsKKwl9CisKKwlwcmludGsoS0VSTl9ERUJVRyAiUENJOiBIaWRpbmcgcmVzb3VyY2VzIG9uIEF4b24gUENJRSBSQyAlc1xuIiwKKwkgICAgICAgcGNpX25hbWUoZGV2KSk7Cit9CitERUNMQVJFX1BDSV9GSVhVUF9IRUFERVIoUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgY2VsbF9maXh1cF9wY2llX3Jvb3Rjb21wbGV4KTsKKwogc3RhdGljIGludCBfX2luaXQgY2VsbF9wdWJsaXNoX2RldmljZXModm9pZCkKIHsKIAlpbnQgbm9kZTsKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9zcHVmcy9jb250ZXh0LmMgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2NlbGwvc3B1ZnMvY29udGV4dC5jCmluZGV4IGNmNmMyYzguLjBhZDgzYWUgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9zcHVmcy9jb250ZXh0LmMKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL3NwdWZzL2NvbnRleHQuYwpAQCAtMTcwLDcgKzE3MCw4IEBACiB7CiAJQlVHX09OKGN0eC0+c3RhdGUgIT0gU1BVX1NUQVRFX1NBVkVEKTsKIAotCWlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoU1BVX1NDSEVEX1dBU19BQ1RJVkUsICZjdHgtPnNjaGVkX2ZsYWdzKSkKKwlpZiAodGVzdF9hbmRfY2xlYXJfYml0KFNQVV9TQ0hFRF9XQVNfQUNUSVZFLCAmY3R4LT5zY2hlZF9mbGFncykgJiYKKwkJCXRlc3RfYml0KFNQVV9TQ0hFRF9TUFVfUlVOLCAmY3R4LT5zY2hlZF9mbGFncykpCiAJCXNwdV9hY3RpdmF0ZShjdHgsIDApOwogCiAJc3B1X3JlbGVhc2UoY3R4KTsKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9zcHVmcy9ydW4uYyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9zcHVmcy9ydW4uYwppbmRleCA2MjIxOTY4Li5jYWM2OWUxIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2NlbGwvc3B1ZnMvcnVuLmMKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL3NwdWZzL3J1bi5jCkBAIC0yMjAsNiArMjIwLDcgQEAKIAkJfQogCX0KIAorCXNldF9iaXQoU1BVX1NDSEVEX1NQVV9SVU4sICZjdHgtPnNjaGVkX2ZsYWdzKTsKIAlyZXR1cm4gMDsKIH0KIApAQCAtMjM0LDcgKzIzNSw3IEBACiAJKm5wYyA9IGN0eC0+b3BzLT5ucGNfcmVhZChjdHgpOwogCiAJc3B1Y3R4X3N3aXRjaF9zdGF0ZShjdHgsIFNQVV9VVElMX0lETEVfTE9BREVEKTsKLQljdHgtPnBvbGljeSA9IFNDSEVEX0lETEU7CisJY2xlYXJfYml0KFNQVV9TQ0hFRF9TUFVfUlVOLCAmY3R4LT5zY2hlZF9mbGFncyk7CiAJc3B1X3JlbGVhc2UoY3R4KTsKIAogCWlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSkKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9zcHVmcy9zY2hlZC5jIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL3NwdWZzL3NjaGVkLmMKaW5kZXggNWQ1ZjY4MC4uMDA1MjhlZiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL3NwdWZzL3NjaGVkLmMKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL3NwdWZzL3NjaGVkLmMKQEAgLTg2Nyw3ICs4NjcsNyBAQAogCWlmIChjdHgtPnBvbGljeSA9PSBTQ0hFRF9GSUZPKQogCQlnb3RvIG91dDsKIAotCWlmICgtLWN0eC0+dGltZV9zbGljZSAmJiBjdHgtPnBvbGljeSAhPSBTQ0hFRF9JRExFKQorCWlmICgtLWN0eC0+dGltZV9zbGljZSAmJiB0ZXN0X2JpdChTUFVfU0NIRURfU1BVX1JVTiwgJmN0eC0+c2NoZWRfZmxhZ3MpKQogCQlnb3RvIG91dDsKIAogCXNwdSA9IGN0eC0+c3B1OwpAQCAtODc3LDcgKzg3Nyw3IEBACiAJbmV3ID0gZ3JhYl9ydW5uYWJsZV9jb250ZXh0KGN0eC0+cHJpbyArIDEsIHNwdS0+bm9kZSk7CiAJaWYgKG5ldykgewogCQlzcHVfdW5zY2hlZHVsZShzcHUsIGN0eCk7Ci0JCWlmIChjdHgtPnBvbGljeSAhPSBTQ0hFRF9JRExFKQorCQlpZiAodGVzdF9iaXQoU1BVX1NDSEVEX1NQVV9SVU4sICZjdHgtPnNjaGVkX2ZsYWdzKSkKIAkJCXNwdV9hZGRfdG9fcnEoY3R4KTsKIAl9IGVsc2UgewogCQlzcHVfY29udGV4dF9ub3NwdV90cmFjZShzcHVzY2hlZF90aWNrX19uZXdzbGljZSwgY3R4KTsKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9zcHVmcy9zcHVmcy5oIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL3NwdWZzL3NwdWZzLmgKaW5kZXggMmMyZmUzYy4uY2RjNTE1MSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL3NwdWZzL3NwdWZzLmgKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL3NwdWZzL3NwdWZzLmgKQEAgLTQ0LDYgKzQ0LDcgQEAKIGVudW0gewogCVNQVV9TQ0hFRF9OT1RJRllfQUNUSVZFLAogCVNQVV9TQ0hFRF9XQVNfQUNUSVZFLAkvKiB3YXMgYWN0aXZlIHVwb24gc3B1X2FjcXVpcmVfc2F2ZWQoKSAgKi8KKwlTUFVfU0NIRURfU1BVX1JVTiwJLyogY29udGV4dCBpcyB3aXRoaW4gc3B1X3J1biAqLwogfTsKIAogc3RydWN0IHNwdV9jb250ZXh0IHsKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJtYWMvcGljLmMgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybWFjL3BpYy5jCmluZGV4IDQwNzM2NDAuLjgyOWI4YjAgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJtYWMvcGljLmMKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm1hYy9waWMuYwpAQCAtNjE4LDkgKzYxOCw5IEBACiAJaWYgKG5wID09IE5VTEwpCiAJCWdvdG8gbm90X2ZvdW5kOwogCXZpYWludCA9IGlycV9vZl9wYXJzZV9hbmRfbWFwKG5wLCAwKTs7Ci0jZW5kaWYgLyogQ09ORklHX0FEQl9QTVUgKi8KIAogbm90X2ZvdW5kOgorI2VuZGlmIC8qIENPTkZJR19BREJfUE1VICovCiAJcmV0dXJuIHZpYWludDsKIH0KIApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3hpY3MuYyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy94aWNzLmMKaW5kZXggY2E1MmI1OC4uYTk3N2YyMCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3hpY3MuYworKysgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMveGljcy5jCkBAIC03NjMsNyArNzYzLDcgQEAKIH0KICNlbmRpZiAvKiBDT05GSUdfU01QICovCiAKLXZvaWQgeGljc190ZWFyZG93bl9jcHUoKQordm9pZCB4aWNzX3RlYXJkb3duX2NwdSh2b2lkKQogewogCWludCBjcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7CiAKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9zeXNkZXYvYmVzdGNvbW0vYmVzdGNvbW0uYyBiL2FyY2gvcG93ZXJwYy9zeXNkZXYvYmVzdGNvbW0vYmVzdGNvbW0uYwppbmRleCBmNTg5OTk5Li42NGVjN2Q2IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvc3lzZGV2L2Jlc3Rjb21tL2Jlc3Rjb21tLmMKKysrIGIvYXJjaC9wb3dlcnBjL3N5c2Rldi9iZXN0Y29tbS9iZXN0Y29tbS5jCkBAIC01Miw2ICs1MiwxMCBAQAogCWludCBpLCB0YXNrbnVtID0gLTE7CiAJc3RydWN0IGJjb21fdGFzayAqdHNrOwogCisJLyogRG9uJ3QgdHJ5IHRvIGRvIGFueXRoaW5nIGlmIGJlc3Rjb21tIGluaXQgZmFpbGVkICovCisJaWYgKCFiY29tX2VuZykKKwkJcmV0dXJuIE5VTEw7CisKIAkvKiBHZXQgYW5kIHJlc2VydmUgYSB0YXNrIG51bSAqLwogCXNwaW5fbG9jaygmYmNvbV9lbmctPmxvY2spOwogCkBAIC00ODQsOCArNDg4LDggQEAKIH0KIAogc3RhdGljIHN0cnVjdCBvZl9kZXZpY2VfaWQgbXBjNTJ4eF9iY29tX29mX21hdGNoW10gPSB7Ci0JeyAudHlwZSA9ICJkbWEtY29udHJvbGxlciIsIC5jb21wYXRpYmxlID0gImZzbCxtcGM1MjAwLWJlc3Rjb21tIiwgfSwKLQl7IC50eXBlID0gImRtYS1jb250cm9sbGVyIiwgLmNvbXBhdGlibGUgPSAibXBjNTIwMC1iZXN0Y29tbSIsIH0sCisJeyAuY29tcGF0aWJsZSA9ICJmc2wsbXBjNTIwMC1iZXN0Y29tbSIsIH0sCisJeyAuY29tcGF0aWJsZSA9ICJtcGM1MjAwLWJlc3Rjb21tIiwgfSwKIAl7fSwKIH07CiAKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9zeXNkZXYvY3BtMi5jIGIvYXJjaC9wb3dlcnBjL3N5c2Rldi9jcG0yLmMKaW5kZXggN2JlNzExMi4uZGQwNjZiYiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3N5c2Rldi9jcG0yLmMKKysrIGIvYXJjaC9wb3dlcnBjL3N5c2Rldi9jcG0yLmMKQEAgLTI0MCw2ICsyNDAsNyBAQAogCWNhc2UgQ1BNX0NMS19TQ0MxOgogCQlyZWcgPSAmaW1fY3BtdXgtPmNteF9zY3I7CiAJCXNoaWZ0ID0gMjQ7CisJCWJyZWFrOwogCWNhc2UgQ1BNX0NMS19TQ0MyOgogCQlyZWcgPSAmaW1fY3BtdXgtPmNteF9zY3I7CiAJCXNoaWZ0ID0gMTY7CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvc3lzZGV2L2lwaWMuYyBiL2FyY2gvcG93ZXJwYy9zeXNkZXYvaXBpYy5jCmluZGV4IGFlMGRiZjQuLjBmMmRmYjAgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9zeXNkZXYvaXBpYy5jCisrKyBiL2FyY2gvcG93ZXJwYy9zeXNkZXYvaXBpYy5jCkBAIC05MDYsNyArOTA2LDcgQEAKIHsKIAlpbnQgcmM7CiAKLQlpZiAoIXByaW1hcnlfaXBpYy0+cmVncykKKwlpZiAoIXByaW1hcnlfaXBpYyB8fCAhcHJpbWFyeV9pcGljLT5yZWdzKQogCQlyZXR1cm4gLUVOT0RFVjsKIAlwcmludGsoS0VSTl9ERUJVRyAiUmVnaXN0ZXJpbmcgaXBpYyB3aXRoIHN5c2ZzLi4uXG4iKTsKIApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL3N5c2Rldi9xZV9saWIvcWUuYyBiL2FyY2gvcG93ZXJwYy9zeXNkZXYvcWVfbGliL3FlLmMKaW5kZXggNmVmYmQ1ZS4uY2M4MWZkMSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3N5c2Rldi9xZV9saWIvcWUuYworKysgYi9hcmNoL3Bvd2VycGMvc3lzZGV2L3FlX2xpYi9xZS5jCkBAIC01MDksNyArNTA5LDcgQEAKIAl9CiAKIAkvKiBWYWxpZGF0ZSBzb21lIG9mIHRoZSBmaWVsZHMgKi8KLQlpZiAoKGZpcm13YXJlLT5jb3VudCA8IDEpIHx8IChmaXJtd2FyZS0+Y291bnQgPj0gTUFYX1FFX1JJU0MpKSB7CisJaWYgKChmaXJtd2FyZS0+Y291bnQgPCAxKSB8fCAoZmlybXdhcmUtPmNvdW50ID4gTUFYX1FFX1JJU0MpKSB7CiAJCXByaW50ayhLRVJOX0VSUiAicWUtZmlybXdhcmU6IGludmFsaWQgZGF0YVxuIik7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KQEAgLTYwOSw3ICs2MDksMTAgQEAKIAkgKiBJZiB3ZSBoYXZlbid0IGNoZWNrZWQgeWV0LCBhbmQgYSBkcml2ZXIgaGFzbid0IHVwbG9hZGVkIGEgZmlybXdhcmUKIAkgKiB5ZXQsIHRoZW4gY2hlY2sgdGhlIGRldmljZSB0cmVlIGZvciBpbmZvcm1hdGlvbi4KIAkgKi8KLQlpZiAoaW5pdGlhbGl6ZWQgfHwgcWVfZmlybXdhcmVfdXBsb2FkZWQpCisJaWYgKHFlX2Zpcm13YXJlX3VwbG9hZGVkKQorCQlyZXR1cm4gJnFlX2Zpcm13YXJlX2luZm87CisKKwlpZiAoaW5pdGlhbGl6ZWQpCiAJCXJldHVybiBOVUxMOwogCiAJaW5pdGlhbGl6ZWQgPSAxOwpkaWZmIC0tZ2l0IGEvYXJjaC9wcGMva2VybmVsL2hlYWRfOHh4LlMgYi9hcmNoL3BwYy9rZXJuZWwvaGVhZF84eHguUwppbmRleCBlYjhkMjZmLi4zMjFiZGEyIDEwMDY0NAotLS0gYS9hcmNoL3BwYy9rZXJuZWwvaGVhZF84eHguUworKysgYi9hcmNoL3BwYy9rZXJuZWwvaGVhZF84eHguUwpAQCAtMzI5LDggKzMyOSwxOCBAQAogCW1mc3ByCXIxMSwgU1BSTl9NRF9UV0MJLyogLi4uLmFuZCBnZXQgdGhlIHB0ZSBhZGRyZXNzICovCiAJbHd6CXIxMCwgMChyMTEpCS8qIEdldCB0aGUgcHRlICovCiAKKyNpZmRlZiBDT05GSUdfU1dBUAorCS8qIGRvIG5vdCBzZXQgdGhlIF9QQUdFX0FDQ0VTU0VEIGJpdCBvZiBhIG5vbi1wcmVzZW50IHBhZ2UgKi8KKwlhbmRpLglyMTEsIHIxMCwgX1BBR0VfUFJFU0VOVAorCWJlcQk0ZgorCW9yaQlyMTAsIHIxMCwgX1BBR0VfQUNDRVNTRUQKKwltZnNwcglyMTEsIFNQUk5fTURfVFdDCS8qIGdldCB0aGUgcHRlIGFkZHJlc3MgYWdhaW4gKi8KKwlzdHcJcjEwLCAwKHIxMSkKKzQ6CisjZWxzZQogCW9yaQlyMTAsIHIxMCwgX1BBR0VfQUNDRVNTRUQKIAlzdHcJcjEwLCAwKHIxMSkKKyNlbmRpZgogCiAJLyogVGhlIExpbnV4IFBURSB3b24ndCBnbyBleGFjdGx5IGludG8gdGhlIE1NVSBUTEIuCiAJICogU29mdHdhcmUgaW5kaWNhdG9yIGJpdHMgMjEsIDIyIGFuZCAyOCBtdXN0IGJlIGNsZWFyLgpAQCAtMzk1LDggKzQwNSwxNyBAQAogCURPXzh4eF9DUFU2KDB4M2I4MCwgcjMpCiAJbXRzcHIJU1BSTl9NRF9UV0MsIHIxMQogCi0JbWZzcHIJcjExLCBTUFJOX01EX1RXQwkvKiBnZXQgdGhlIHB0ZSBhZGRyZXNzIGFnYWluICovCisjaWZkZWYgQ09ORklHX1NXQVAKKwkvKiBkbyBub3Qgc2V0IHRoZSBfUEFHRV9BQ0NFU1NFRCBiaXQgb2YgYSBub24tcHJlc2VudCBwYWdlICovCisJYW5kaS4JcjExLCByMTAsIF9QQUdFX1BSRVNFTlQKKwliZXEJNGYKIAlvcmkJcjEwLCByMTAsIF9QQUdFX0FDQ0VTU0VECis0OgorCS8qIGFuZCB1cGRhdGUgcHRlIGluIHRhYmxlICovCisjZWxzZQorCW9yaQlyMTAsIHIxMCwgX1BBR0VfQUNDRVNTRUQKKyNlbmRpZgorCW1mc3ByCXIxMSwgU1BSTl9NRF9UV0MJLyogZ2V0IHRoZSBwdGUgYWRkcmVzcyBhZ2FpbiAqLwogCXN0dwlyMTAsIDAocjExKQogCiAJLyogVGhlIExpbnV4IFBURSB3b24ndCBnbyBleGFjdGx5IGludG8gdGhlIE1NVSBUTEIuCkBAIC01NzUsNyArNTk0LDE2IEBACiAKIAkvKiBVcGRhdGUgJ2NoYW5nZWQnLCBhbW9uZyBvdGhlcnMuCiAJKi8KKyNpZmRlZiBDT05GSUdfU1dBUAorCW9yaQlyMTAsIHIxMCwgX1BBR0VfRElSVFl8X1BBR0VfSFdXUklURQorCS8qIGRvIG5vdCBzZXQgdGhlIF9QQUdFX0FDQ0VTU0VEIGJpdCBvZiBhIG5vbi1wcmVzZW50IHBhZ2UgKi8KKwlhbmRpLglyMTEsIHIxMCwgX1BBR0VfUFJFU0VOVAorCWJlcQk0ZgorCW9yaQlyMTAsIHIxMCwgX1BBR0VfQUNDRVNTRUQKKzQ6CisjZWxzZQogCW9yaQlyMTAsIHIxMCwgX1BBR0VfRElSVFl8X1BBR0VfQUNDRVNTRUR8X1BBR0VfSFdXUklURQorI2VuZGlmCiAJbWZzcHIJcjExLCBTUFJOX01EX1RXQwkJLyogR2V0IHB0ZSBhZGRyZXNzIGFnYWluICovCiAJc3R3CXIxMCwgMChyMTEpCQkvKiBhbmQgdXBkYXRlIHB0ZSBpbiB0YWJsZSAqLwogCmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvbGliL3VhY2Nlc3NfcHQuYyBiL2FyY2gvczM5MC9saWIvdWFjY2Vzc19wdC5jCmluZGV4IDdlOGVmYWEuLjVlZmRmZTkgMTAwNjQ0Ci0tLSBhL2FyY2gvczM5MC9saWIvdWFjY2Vzc19wdC5jCisrKyBiL2FyY2gvczM5MC9saWIvdWFjY2Vzc19wdC5jCkBAIC00MDYsNiArNDA2LDggQEAKIHsKIAlpbnQgcmV0OwogCisJaWYgKCFjdXJyZW50LT5tbSkKKwkJcmV0dXJuIC1FRkFVTFQ7CiAJc3Bpbl9sb2NrKCZjdXJyZW50LT5tbS0+cGFnZV90YWJsZV9sb2NrKTsKIAl1YWRkciA9IChpbnQgX191c2VyICopIF9fZGF0X3VzZXJfYWRkcigodW5zaWduZWQgbG9uZykgdWFkZHIpOwogCWlmICghdWFkZHIpIHsKZGlmZiAtLWdpdCBhL2FyY2gvc2gvS2NvbmZpZyBiL2FyY2gvc2gvS2NvbmZpZwppbmRleCA5NWI3NTM0Li44ZDJjZDFkIDEwMDY0NAotLS0gYS9hcmNoL3NoL0tjb25maWcKKysrIGIvYXJjaC9zaC9LY29uZmlnCkBAIC03Miw5ICs3Miw2IEBACiBjb25maWcgU1lTX1NVUFBPUlRTX1BDSQogCWJvb2wKIAotY29uZmlnIEFSQ0hfTUFZX0hBVkVfUENfRkRDCi0JYm9vbAotCiBjb25maWcgU1RBQ0tUUkFDRV9TVVBQT1JUCiAJZGVmX2Jvb2wgeQogCkBAIC01ODAsNiArNTc3LDcgQEAKIAkJCUNQVV9TVUJUWVBFX1NINzc2MwogCWRlZmF1bHQgIjg2IiBpZiBDUFVfU1VCVFlQRV9TSDc2MTkKIAlkZWZhdWx0ICIxNDAiIGlmIENQVV9TVUJUWVBFX1NINzIwNgorCWRlZmF1bHQgIjE0MiIgaWYgQ1BVX1NVQlRZUEVfU0g3MjAzCiAJZGVmYXVsdCAiMTYiCiAKIGNvbmZpZyBTSF9QQ0xLX0ZSRVEKZGlmZiAtLWdpdCBhL2FyY2gvc2gvTWFrZWZpbGUgYi9hcmNoL3NoL01ha2VmaWxlCmluZGV4IGM1MTBjMjIuLmNmZmM5MmIgMTAwNjQ0Ci0tLSBhL2FyY2gvc2gvTWFrZWZpbGUKKysrIGIvYXJjaC9zaC9NYWtlZmlsZQpAQCAtMTU0LDcgKzE1NCwxMSBAQAogCiBib290IDo9IGFyY2gvc2gvYm9vdAogCitpZm5lcSAoJChLQlVJTERfU1JDKSwpCiBpbmNkaXItcHJlZml4CTo9ICQoc3JjdHJlZSkvaW5jbHVkZS9hc20tc2gvCitlbHNlCitpbmNkaXItcHJlZml4CTo9CitlbmRpZgogCiAjCVVwZGF0ZSBtYWNoaW5lIGFyY2ggYW5kIHByb2Mgc3ltbGlua3MgaWYgc29tZXRoaW5nIHdoaWNoIGFmZmVjdHMKICMJdGhlbSBjaGFuZ2VkLiAgV2UgdXNlIC5hcmNoIGFuZCAubWFjaCB0byBpbmRpY2F0ZSB3aGVuIHRoZXkgd2VyZQpAQCAtMTgyLDcgKzE4Niw3IEBACiAJJChRKWlmIFsgISAtZCBpbmNsdWRlL2FzbS1zaCBdOyB0aGVuIG1rZGlyIC1wIGluY2x1ZGUvYXNtLXNoOyBmaQogCSQoUSlybSAtZiBpbmNsdWRlL2FzbS1zaC9tYWNoCiAJJChRKWZvciBpIGluICQoaW5jZGlyLXkpOyBkbyBcCi0JaWYgWyAtZCAkKGluY2Rpci1wcmVmaXgpJCRpIF07IHRoZW4gXAorCWlmIFsgLWQgJChzcmN0cmVlKS9pbmNsdWRlL2FzbS1zaC8kJGkgXTsgdGhlbiBcCiAJCWVjaG8gLW4gJyAgU1lNTElOSyBpbmNsdWRlL2FzbS1zaC9tYWNoIC0+ICc7IFwKIAkJZWNobyAtZSAiaW5jbHVkZS9hc20tc2gvJCRpIjsgXAogCQlsbiAtZnNuICQoaW5jZGlyLXByZWZpeCkkJGkgXApAQCAtMTkxLDcgKzE5NSw3IEBACiAJCWlmIFsgISAtZCBpbmNsdWRlL2FzbS1zaC9tYWNoIF07IHRoZW4gXAogCQkJZWNobyAtbiAnICBTWU1MSU5LIGluY2x1ZGUvYXNtLXNoL21hY2ggLT4gJzsgXAogCQkJZWNobyAtZSAnaW5jbHVkZS9hc20tc2gnOyBcCi0JCQlsbiAtZnNuICQoaW5jZGlyLXByZWZpeCkgaW5jbHVkZS9hc20tc2gvbWFjaDsgXAorCQkJbG4gLWZzbiAkKGluY2Rpci1wcmVmaXgpLi4vYXNtLXNoIGluY2x1ZGUvYXNtLXNoL21hY2g7IFwKIAkJZmk7IFwKIAlmaTsgXAogCWRvbmUKZGlmZiAtLWdpdCBhL2FyY2gvc2gvYm9vdC9NYWtlZmlsZSBiL2FyY2gvc2gvYm9vdC9NYWtlZmlsZQppbmRleCA1OWY1NTJjLi44OWI0MDg2IDEwMDY0NAotLS0gYS9hcmNoL3NoL2Jvb3QvTWFrZWZpbGUKKysrIGIvYXJjaC9zaC9ib290L01ha2VmaWxlCkBAIC0zMiwxOSArMzIsMTkgQEAKICQob2JqKS9jb21wcmVzc2VkL3ZtbGludXg6IEZPUkNFCiAJJChRKSQoTUFLRSkgJChidWlsZCk9JChvYmopL2NvbXByZXNzZWQgJEAKIAotS0VSTkVMX0xPQUQJOj0gJChzaGVsbCAvYmluL2Jhc2ggLWMgJ3ByaW50ZiAiMHglOHgiIFwKK0tFUk5FTF9MT0FECTo9ICQoc2hlbGwgL2Jpbi9iYXNoIC1jICdwcmludGYgIjB4JTA4eCIgXAogCQkgICAgICQkWyQoQ09ORklHX1BBR0VfT0ZGU0VUKSAgKyBcCiAJCQkkKENPTkZJR19NRU1PUllfU1RBUlQpICsgXAogCQkJJChDT05GSUdfWkVST19QQUdFX09GRlNFVCldJykKIAotS0VSTkVMX0VOVFJZCTo9ICQoc2hlbGwgL2Jpbi9iYXNoIC1jICdwcmludGYgIjB4JTh4IiBcCitLRVJORUxfRU5UUlkJOj0gJChzaGVsbCAvYmluL2Jhc2ggLWMgJ3ByaW50ZiAiMHglMDh4IiBcCiAJCSAgICAgJCRbJChDT05GSUdfUEFHRV9PRkZTRVQpICArIFwKIAkJCSQoQ09ORklHX01FTU9SWV9TVEFSVCkgKyBcCiAJCQkkKENPTkZJR19aRVJPX1BBR0VfT0ZGU0VUKSsweDEwMDBdJykKIAogcXVpZXRfY21kX3VpbWFnZSA9IFVJTUFHRSAgJEAKICAgICAgIGNtZF91aW1hZ2UgPSAkKENPTkZJR19TSEVMTCkgJChNS0lNQUdFKSAtQSBzaCAtTyBsaW51eCAtVCBrZXJuZWwgXAotCQkgICAtQyBub25lIC1hICQoS0VSTkVMX0xPQUQpIC1lICQoS0VSTkVMX0VOVFJZKSBcCisJCSAgIC1DIGd6aXAgLWEgJChLRVJORUxfTE9BRCkgLWUgJChLRVJORUxfRU5UUlkpIFwKIAkJICAgLW4gJ0xpbnV4LSQoS0VSTkVMUkVMRUFTRSknIC1kICQ8ICRACiAKICQob2JqKS91SW1hZ2U6ICQob2JqKS92bWxpbnV4LmJpbi5neiBGT1JDRQpkaWZmIC0tZ2l0IGEvYXJjaC9zaC9ib290L2NvbXByZXNzZWQvaGVhZF8zMi5TIGIvYXJjaC9zaC9ib290L2NvbXByZXNzZWQvaGVhZF8zMi5TCmluZGV4IGE4Mzk5YjAuLjA2YWMzMWYgMTAwNjQ0Ci0tLSBhL2FyY2gvc2gvYm9vdC9jb21wcmVzc2VkL2hlYWRfMzIuUworKysgYi9hcmNoL3NoL2Jvb3QvY29tcHJlc3NlZC9oZWFkXzMyLlMKQEAgLTcsNyArNyw2IEBACiAKIC50ZXh0CiAKLSNpbmNsdWRlIDxsaW51eC9saW5rYWdlLmg+CiAjaW5jbHVkZSA8YXNtL3BhZ2UuaD4KIAogCS5nbG9iYWwJc3RhcnR1cApkaWZmIC0tZ2l0IGEvYXJjaC9zaC9ib290L2NvbXByZXNzZWQvaGVhZF82NC5TIGIvYXJjaC9zaC9ib290L2NvbXByZXNzZWQvaGVhZF82NC5TCmluZGV4IDFkNGVjYmYuLmY3MmMxOTggMTAwNjQ0Ci0tLSBhL2FyY2gvc2gvYm9vdC9jb21wcmVzc2VkL2hlYWRfNjQuUworKysgYi9hcmNoL3NoL2Jvb3QvY29tcHJlc3NlZC9oZWFkXzY0LlMKQEAgLTEzLDcgKzEzLDYgQEAKICAqIE1vZGlmaWNhdGlvbiBmb3IgY29tcHJlc3NlZCBsb2FkZXI6CiAgKiAgIENvcHlyaWdodCAoQykgMjAwMiBTdHVhcnQgTWVuZWZ5IChzdHVhcnQubWVuZWZ5QHN0LmNvbSkKICAqLwotI2luY2x1ZGUgPGxpbnV4L2xpbmthZ2UuaD4KICNpbmNsdWRlIDxhc20vY2FjaGUuaD4KICNpbmNsdWRlIDxhc20vY3B1L21tdV9jb250ZXh0Lmg+CiAjaW5jbHVkZSA8YXNtL2NwdS9yZWdpc3RlcnMuaD4KZGlmZiAtLWdpdCBhL2FyY2gvc2gva2VybmVsL2NwdS9zaDIvZW50cnkuUyBiL2FyY2gvc2gva2VybmVsL2NwdS9zaDIvZW50cnkuUwppbmRleCA3YTI2NTY5Li4wZmM4OTA2IDEwMDY0NAotLS0gYS9hcmNoL3NoL2tlcm5lbC9jcHUvc2gyL2VudHJ5LlMKKysrIGIvYXJjaC9zaC9rZXJuZWwvY3B1L3NoMi9lbnRyeS5TCkBAIC0yNjcsNyArMjY3LDYgQEAKIAogRU5UUlkoYWRkcmVzc19lcnJvcl90cmFwX2hhbmRsZXIpCiAJbW92CXIxNSxyNAkJCQkhIHJlZ3MKLQlhZGQJIzQscjQKIAltb3YJI09GRl9QQyxyMAogCW1vdi5sCUAocjAscjE1KSxyNgkJCSEgcGMKIAltb3YubAkxZixyMApkaWZmIC0tZ2l0IGEvYXJjaC9zaC9rZXJuZWwvY3B1L3NoMmEvZnB1LmMgYi9hcmNoL3NoL2tlcm5lbC9jcHUvc2gyYS9mcHUuYwppbmRleCBmZjk5NTYyLi41NjI3YzBiIDEwMDY0NAotLS0gYS9hcmNoL3NoL2tlcm5lbC9jcHUvc2gyYS9mcHUuYworKysgYi9hcmNoL3NoL2tlcm5lbC9jcHUvc2gyYS9mcHUuYwpAQCAtMTMsNiArMTMsNyBAQAogI2luY2x1ZGUgPGxpbnV4L3NpZ25hbC5oPgogI2luY2x1ZGUgPGFzbS9wcm9jZXNzb3IuaD4KICNpbmNsdWRlIDxhc20vaW8uaD4KKyNpbmNsdWRlIDxhc20vZnB1Lmg+CiAKIC8qIFRoZSBQUiAocHJlY2lzaW9uKSBiaXQgaW4gdGhlIEZQIFN0YXR1cyBSZWdpc3RlciBtdXN0IGJlIGNsZWFyIHdoZW4KICAqIGFuIGZyY2hnIGluc3RydWN0aW9uIGlzIGV4ZWN1dGVkLCBvdGhlcndpc2UgdGhlIGluc3RydWN0aW9uIGlzIHVuZGVmaW5lZC4KZGlmZiAtLWdpdCBhL2FyY2gvc2gva2VybmVsL2NwdS9zaDQvZnB1LmMgYi9hcmNoL3NoL2tlcm5lbC9jcHUvc2g0L2ZwdS5jCmluZGV4IDgxN2Y5OTMuLjgwMjA3OTYgMTAwNjQ0Ci0tLSBhL2FyY2gvc2gva2VybmVsL2NwdS9zaDQvZnB1LmMKKysrIGIvYXJjaC9zaC9rZXJuZWwvY3B1L3NoNC9mcHUuYwpAQCAtMTYsNiArMTYsNyBAQAogI2luY2x1ZGUgPGFzbS9jcHUvZnB1Lmg+CiAjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nvci5oPgogI2luY2x1ZGUgPGFzbS9zeXN0ZW0uaD4KKyNpbmNsdWRlIDxhc20vZnB1Lmg+CiAKIC8qIFRoZSBQUiAocHJlY2lzaW9uKSBiaXQgaW4gdGhlIEZQIFN0YXR1cyBSZWdpc3RlciBtdXN0IGJlIGNsZWFyIHdoZW4KICAqIGFuIGZyY2hnIGluc3RydWN0aW9uIGlzIGV4ZWN1dGVkLCBvdGhlcndpc2UgdGhlIGluc3RydWN0aW9uIGlzIHVuZGVmaW5lZC4KZGlmZiAtLWdpdCBhL2FyY2gvc2gva2VybmVsL2NwdS9zaDUvZnB1LmMgYi9hcmNoL3NoL2tlcm5lbC9jcHUvc2g1L2ZwdS5jCmluZGV4IDMwYjc2YTkuLmRkNGY1MWYgMTAwNjQ0Ci0tLSBhL2FyY2gvc2gva2VybmVsL2NwdS9zaDUvZnB1LmMKKysrIGIvYXJjaC9zaC9rZXJuZWwvY3B1L3NoNS9mcHUuYwpAQCAtMTcsNiArMTcsNyBAQAogI2luY2x1ZGUgPGFzbS9wcm9jZXNzb3IuaD4KICNpbmNsdWRlIDxhc20vdXNlci5oPgogI2luY2x1ZGUgPGFzbS9pby5oPgorI2luY2x1ZGUgPGFzbS9mcHUuaD4KIAogLyoKICAqIEluaXRpYWxseSBsb2FkIHRoZSBGUFUgd2l0aCBzaWduYWxsaW5nIE5BTlMuICBUaGlzIGJpdCBwYXR0ZXJuCmRpZmYgLS1naXQgYS9hcmNoL3NoL2tlcm5lbC9kdW1wX3Rhc2suYyBiL2FyY2gvc2gva2VybmVsL2R1bXBfdGFzay5jCmluZGV4IDRhOGE0MDguLjFkYjdjZTAgMTAwNjQ0Ci0tLSBhL2FyY2gvc2gva2VybmVsL2R1bXBfdGFzay5jCisrKyBiL2FyY2gvc2gva2VybmVsL2R1bXBfdGFzay5jCkBAIC0xLDUgKzEsNiBAQAogI2luY2x1ZGUgPGxpbnV4L2VsZmNvcmUuaD4KICNpbmNsdWRlIDxsaW51eC9zY2hlZC5oPgorI2luY2x1ZGUgPGFzbS9mcHUuaD4KIAogLyoKICAqIENhcHR1cmUgdGhlIHVzZXIgc3BhY2UgcmVnaXN0ZXJzIGlmIHRoZSB0YXNrIGlzIG5vdCBydW5uaW5nIChpbiB1c2VyIHNwYWNlKQpkaWZmIC0tZ2l0IGEvYXJjaC9zaC9rZXJuZWwvcHJvY2Vzc18zMi5jIGIvYXJjaC9zaC9rZXJuZWwvcHJvY2Vzc18zMi5jCmluZGV4IDlhYjE5MjYuLmI5OGUzN2EgMTAwNjQ0Ci0tLSBhL2FyY2gvc2gva2VybmVsL3Byb2Nlc3NfMzIuYworKysgYi9hcmNoL3NoL2tlcm5lbC9wcm9jZXNzXzMyLmMKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlIDxhc20vcGdhbGxvYy5oPgogI2luY2x1ZGUgPGFzbS9zeXN0ZW0uaD4KICNpbmNsdWRlIDxhc20vdWJjLmg+CisjaW5jbHVkZSA8YXNtL2ZwdS5oPgogCiBzdGF0aWMgaW50IGhsdF9jb3VudGVyOwogaW50IHViY191c2VyY250ID0gMDsKZGlmZiAtLWdpdCBhL2FyY2gvc2gva2VybmVsL3Byb2Nlc3NfNjQuYyBiL2FyY2gvc2gva2VybmVsL3Byb2Nlc3NfNjQuYwppbmRleCAwNDY5OTliLi4wMjgzZDgxIDEwMDY0NAotLS0gYS9hcmNoL3NoL2tlcm5lbC9wcm9jZXNzXzY0LmMKKysrIGIvYXJjaC9zaC9rZXJuZWwvcHJvY2Vzc182NC5jCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSA8YXNtL3VhY2Nlc3MuaD4KICNpbmNsdWRlIDxhc20vcGd0YWJsZS5oPgogI2luY2x1ZGUgPGFzbS9tbXVfY29udGV4dC5oPgorI2luY2x1ZGUgPGFzbS9mcHUuaD4KIAogc3RydWN0IHRhc2tfc3RydWN0ICpsYXN0X3Rhc2tfdXNlZF9tYXRoID0gTlVMTDsKIApkaWZmIC0tZ2l0IGEvYXJjaC9zaC9rZXJuZWwvcHRyYWNlXzY0LmMgYi9hcmNoL3NoL2tlcm5lbC9wdHJhY2VfNjQuYwppbmRleCBmNmZiZGZhLi5kNDUzYzQ3IDEwMDY0NAotLS0gYS9hcmNoL3NoL2tlcm5lbC9wdHJhY2VfNjQuYworKysgYi9hcmNoL3NoL2tlcm5lbC9wdHJhY2VfNjQuYwpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPGFzbS9zeXN0ZW0uaD4KICNpbmNsdWRlIDxhc20vcHJvY2Vzc29yLmg+CiAjaW5jbHVkZSA8YXNtL21tdV9jb250ZXh0Lmg+CisjaW5jbHVkZSA8YXNtL2ZwdS5oPgogCiAvKiBUaGlzIG1hc2sgZGVmaW5lcyB0aGUgYml0cyBvZiB0aGUgU1Igd2hpY2ggdGhlIHVzZXIgaXMgbm90IGFsbG93ZWQgdG8KICAgIGNoYW5nZSwgd2hpY2ggYXJlIGV2ZXJ5dGhpbmcgZXhjZXB0IFMsIFEsIE0sIFBSLCBTWiwgRlIuICovCmRpZmYgLS1naXQgYS9hcmNoL3NoL2tlcm5lbC9zaF9rc3ltc18zMi5jIGIvYXJjaC9zaC9rZXJuZWwvc2hfa3N5bXNfMzIuYwppbmRleCBkODBkZTM5Li40NWJiMzMzIDEwMDY0NAotLS0gYS9hcmNoL3NoL2tlcm5lbC9zaF9rc3ltc18zMi5jCisrKyBiL2FyY2gvc2gva2VybmVsL3NoX2tzeW1zXzMyLmMKQEAgLTE0OSwzICsxNDksNCBAQAogRVhQT1JUX1NZTUJPTChjb3B5X3BhZ2UpOwogRVhQT1JUX1NZTUJPTChfX2NsZWFyX3VzZXIpOwogRVhQT1JUX1NZTUJPTChfZWJzcyk7CitFWFBPUlRfU1lNQk9MKGVtcHR5X3plcm9fcGFnZSk7CmRpZmYgLS1naXQgYS9hcmNoL3NoL2tlcm5lbC9zaF9rc3ltc182NC5jIGIvYXJjaC9zaC9rZXJuZWwvc2hfa3N5bXNfNjQuYwppbmRleCBkZDM4YTY4Li5iNjQxMGNlIDEwMDY0NAotLS0gYS9hcmNoL3NoL2tlcm5lbC9zaF9rc3ltc182NC5jCisrKyBiL2FyY2gvc2gva2VybmVsL3NoX2tzeW1zXzY0LmMKQEAgLTQ0LDYgKzQ0LDcgQEAKIEVYUE9SVF9TWU1CT0woX19nZXRfdXNlcl9hc21fbCk7CiBFWFBPUlRfU1lNQk9MKGNvcHlfcGFnZSk7CiBFWFBPUlRfU1lNQk9MKF9fY29weV91c2VyKTsKK0VYUE9SVF9TWU1CT0woZW1wdHlfemVyb19wYWdlKTsKIEVYUE9SVF9TWU1CT0wobWVtY3B5KTsKIEVYUE9SVF9TWU1CT0woX191ZGVsYXkpOwogRVhQT1JUX1NZTUJPTChfX25kZWxheSk7CmRpZmYgLS1naXQgYS9hcmNoL3NoL2tlcm5lbC9zaWduYWxfMzIuYyBiL2FyY2gvc2gva2VybmVsL3NpZ25hbF8zMi5jCmluZGV4IGY2YjVmYmYuLmYzMTE1NTEgMTAwNjQ0Ci0tLSBhL2FyY2gvc2gva2VybmVsL3NpZ25hbF8zMi5jCisrKyBiL2FyY2gvc2gva2VybmVsL3NpZ25hbF8zMi5jCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8YXNtL3VhY2Nlc3MuaD4KICNpbmNsdWRlIDxhc20vcGd0YWJsZS5oPgogI2luY2x1ZGUgPGFzbS9jYWNoZWZsdXNoLmg+CisjaW5jbHVkZSA8YXNtL2ZwdS5oPgogCiAjZGVmaW5lIF9CTE9DS0FCTEUgKH4oc2lnbWFzayhTSUdLSUxMKSB8IHNpZ21hc2soU0lHU1RPUCkpKQogCmRpZmYgLS1naXQgYS9hcmNoL3NoL2tlcm5lbC9zaWduYWxfNjQuYyBiL2FyY2gvc2gva2VybmVsL3NpZ25hbF82NC5jCmluZGV4IDgwYmRlMTkuLjU1MmViODEgMTAwNjQ0Ci0tLSBhL2FyY2gvc2gva2VybmVsL3NpZ25hbF82NC5jCisrKyBiL2FyY2gvc2gva2VybmVsL3NpZ25hbF82NC5jCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSA8YXNtL3VhY2Nlc3MuaD4KICNpbmNsdWRlIDxhc20vcGd0YWJsZS5oPgogI2luY2x1ZGUgPGFzbS9jYWNoZWZsdXNoLmg+CisjaW5jbHVkZSA8YXNtL2ZwdS5oPgogCiAjZGVmaW5lIFJFR19SRVQgOQogI2RlZmluZSBSRUdfQVJHMSAyCmRpZmYgLS1naXQgYS9hcmNoL3NoL2tlcm5lbC9zbXAuYyBiL2FyY2gvc2gva2VybmVsL3NtcC5jCmluZGV4IDk0MDc1ZTEuLjVkMDM5ZDEgMTAwNjQ0Ci0tLSBhL2FyY2gvc2gva2VybmVsL3NtcC5jCisrKyBiL2FyY2gvc2gva2VybmVsL3NtcC5jCkBAIC0xNzksNyArMTc5LDcgQEAKIH0KIAogc3RydWN0IHNtcF9mbl9jYWxsX3N0cnVjdCBzbXBfZm5fY2FsbCA9IHsKLQkubG9jawkJPSBTUElOX0xPQ0tfVU5MT0NLRUQsCisJLmxvY2sJCT0gX19TUElOX0xPQ0tfVU5MT0NLRUQoc21wX2ZuX2NhbGwubG9jayksCiAJLmZpbmlzaGVkCT0gQVRPTUlDX0lOSVQoMCksCiB9OwogCmRpZmYgLS1naXQgYS9hcmNoL3NoL2tlcm5lbC90cmFwc18zMi5jIGIvYXJjaC9zaC9rZXJuZWwvdHJhcHNfMzIuYwppbmRleCBiYWE0ZmEzLi5lMDhiM2JmIDEwMDY0NAotLS0gYS9hcmNoL3NoL2tlcm5lbC90cmFwc18zMi5jCisrKyBiL2FyY2gvc2gva2VybmVsL3RyYXBzXzMyLmMKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlIDxsaW51eC9saW1pdHMuaD4KICNpbmNsdWRlIDxhc20vc3lzdGVtLmg+CiAjaW5jbHVkZSA8YXNtL3VhY2Nlc3MuaD4KKyNpbmNsdWRlIDxhc20vZnB1Lmg+CiAKICNpZmRlZiBDT05GSUdfU0hfS0dEQgogI2luY2x1ZGUgPGFzbS9rZ2RiLmg+CmRpZmYgLS1naXQgYS9hcmNoL3NoL2tlcm5lbC90cmFwc182NC5jIGIvYXJjaC9zaC9rZXJuZWwvdHJhcHNfNjQuYwppbmRleCAxYjU4YTc0Li5hODU4MzFjIDEwMDY0NAotLS0gYS9hcmNoL3NoL2tlcm5lbC90cmFwc182NC5jCisrKyBiL2FyY2gvc2gva2VybmVsL3RyYXBzXzY0LmMKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDxhc20vYXRvbWljLmg+CiAjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nvci5oPgogI2luY2x1ZGUgPGFzbS9wZ3RhYmxlLmg+CisjaW5jbHVkZSA8YXNtL2ZwdS5oPgogCiAjdW5kZWYgREVCVUdfRVhDRVBUSU9OCiAjaWZkZWYgREVCVUdfRVhDRVBUSU9OCmRpZmYgLS1naXQgYS9hcmNoL3NwYXJjL2tlcm5lbC9wdHJhY2UuYyBiL2FyY2gvc3BhcmMva2VybmVsL3B0cmFjZS5jCmluZGV4IDViNTRmMTEuLjdmNDRhZTYgMTAwNjQ0Ci0tLSBhL2FyY2gvc3BhcmMva2VybmVsL3B0cmFjZS5jCisrKyBiL2FyY2gvc3BhcmMva2VybmVsL3B0cmFjZS5jCkBAIC0zMjUsNyArMzI1LDcgQEAKIAljb25zdCBzdHJ1Y3QgdXNlcl9yZWdzZXRfdmlldyAqdmlldzsKIAlpbnQgcmV0OwogCi0JdmlldyA9IHRhc2tfdXNlcl9yZWdzZXRfdmlldyhjaGlsZCk7CisJdmlldyA9IHRhc2tfdXNlcl9yZWdzZXRfdmlldyhjdXJyZW50KTsKIAogCXN3aXRjaChyZXF1ZXN0KSB7CiAJY2FzZSBQVFJBQ0VfR0VUUkVHUzogewpkaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYy9rZXJuZWwvc3lzX3N1bm9zLmMgYi9hcmNoL3NwYXJjL2tlcm5lbC9zeXNfc3Vub3MuYwppbmRleCAyOGMxODdjLi5mNWI2MDhiIDEwMDY0NAotLS0gYS9hcmNoL3NwYXJjL2tlcm5lbC9zeXNfc3Vub3MuYworKysgYi9hcmNoL3NwYXJjL2tlcm5lbC9zeXNfc3Vub3MuYwpAQCAtNjU5LDcgKzY1OSw3IEBACiAKIAlzb2NrZXQgPSBTT0NLRVRfSShpbm9kZSk7CiAJbG9jYWwuc2luX2ZhbWlseSA9IEFGX0lORVQ7Ci0JbG9jYWwuc2luX2FkZHIuc19hZGRyID0gSU5BRERSX0FOWTsKKwlsb2NhbC5zaW5fYWRkci5zX2FkZHIgPSBodG9ubChJTkFERFJfQU5ZKTsKIAogCS8qIElQUE9SVF9SRVNFUlZFRCA9IDEwMjQsIGNhbid0IGZpbmQgdGhlIGRlZmluaXRpb24gaW4gdGhlIGtlcm5lbCAqLwogCXRyeV9wb3J0ID0gMTAyNDsKZGlmZiAtLWdpdCBhL2FyY2gvc3BhcmM2NC9kZWZjb25maWcgYi9hcmNoL3NwYXJjNjQvZGVmY29uZmlnCmluZGV4IDI1MDk1OGQuLjlkNGJkMjIgMTAwNjQ0Ci0tLSBhL2FyY2gvc3BhcmM2NC9kZWZjb25maWcKKysrIGIvYXJjaC9zcGFyYzY0L2RlZmNvbmZpZwpAQCAtMSw3ICsxLDcgQEAKICMKICMgQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgbWFrZSBjb25maWc6IGRvbid0IGVkaXQKLSMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4yNS1yYzEKLSMgU3VuIEZlYiAxNyAyMjo0NDoxMiAyMDA4CisjIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMjUtcmMzCisjIFdlZCBNYXIgMjYgMDQ6MzM6MzUgMjAwOAogIwogQ09ORklHX1NQQVJDPXkKIENPTkZJR19TUEFSQzY0PXkKQEAgLTU1LDkgKzU1LDExIEBACiAjIENPTkZJR19JS0NPTkZJRyBpcyBub3Qgc2V0CiBDT05GSUdfTE9HX0JVRl9TSElGVD0xOAogIyBDT05GSUdfQ0dST1VQUyBpcyBub3Qgc2V0CitDT05GSUdfR1JPVVBfU0NIRUQ9eQogQ09ORklHX0ZBSVJfR1JPVVBfU0NIRUQ9eQotQ09ORklHX0ZBSVJfVVNFUl9TQ0hFRD15Ci0jIENPTkZJR19GQUlSX0NHUk9VUF9TQ0hFRCBpcyBub3Qgc2V0CitDT05GSUdfUlRfR1JPVVBfU0NIRUQ9eQorQ09ORklHX1VTRVJfU0NIRUQ9eQorIyBDT05GSUdfQ0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKIENPTkZJR19TWVNGU19ERVBSRUNBVEVEPXkKIENPTkZJR19SRUxBWT15CiBDT05GSUdfTkFNRVNQQUNFUz15CkBAIC00ODIsNiArNDg0LDcgQEAKICMgQ09ORklHX1NDU0lfSVBTIGlzIG5vdCBzZXQKICMgQ09ORklHX1NDU0lfSU5JVElPIGlzIG5vdCBzZXQKICMgQ09ORklHX1NDU0lfSU5JQTEwMCBpcyBub3Qgc2V0CisjIENPTkZJR19TQ1NJX01WU0FTIGlzIG5vdCBzZXQKICMgQ09ORklHX1NDU0lfU1RFWCBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX1NZTTUzQzhYWF8yIGlzIG5vdCBzZXQKICMgQ09ORklHX1NDU0lfUUxPR0lDXzEyODAgaXMgbm90IHNldApAQCAtODEwLDYgKzgxMyw3IEBACiAjIENPTkZJR19TRU5TT1JTX0FETTEwMzEgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19BRE05MjQwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfQURUNzQ3MCBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX0FEVDc0NzMgaXMgbm90IHNldAogIyBDT05GSUdfU0VOU09SU19BVFhQMSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0RTMTYyMSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX0k1S19BTUIgaXMgbm90IHNldApkaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYzY0L2tlcm5lbC9jcHUuYyBiL2FyY2gvc3BhcmM2NC9rZXJuZWwvY3B1LmMKaW5kZXggZGQ1ZDI4ZS4uMDA5N2MwOCAxMDA2NDQKLS0tIGEvYXJjaC9zcGFyYzY0L2tlcm5lbC9jcHUuYworKysgYi9hcmNoL3NwYXJjNjQva2VybmVsL2NwdS5jCkBAIC0xNSw2ICsxNSw4IEBACiAjaW5jbHVkZSA8YXNtL3NwaXRmaXJlLmg+CiAjaW5jbHVkZSA8YXNtL29wbGliLmg+CiAKKyNpbmNsdWRlICJlbnRyeS5oIgorCiBERUZJTkVfUEVSX0NQVShjcHVpbmZvX3NwYXJjLCBfX2NwdV9kYXRhKSA9IHsgMCB9OwogCiBzdHJ1Y3QgY3B1X2l1X2luZm8gewpAQCAtNjUsOCArNjcsNiBAQAogY2hhciAqc3BhcmNfY3B1X3R5cGU7CiBjaGFyICpzcGFyY19mcHVfdHlwZTsKIAotdW5zaWduZWQgaW50IGZzcl9zdG9yYWdlOwotCiBzdGF0aWMgdm9pZCBfX2luaXQgc3VuNHZfY3B1X3Byb2JlKHZvaWQpCiB7CiAJc3dpdGNoIChzdW40dl9jaGlwX3R5cGUpIHsKQEAgLTk0LDggKzk0LDEwIEBACiAJdW5zaWduZWQgbG9uZyB2ZXIsIGZwdV92ZXJzLCBtYW51ZiwgaW1wbCwgZnByczsKIAlpbnQgaTsKIAkKLQlpZiAodGxiX3R5cGUgPT0gaHlwZXJ2aXNvcikKLQkJcmV0dXJuIHN1bjR2X2NwdV9wcm9iZSgpOworCWlmICh0bGJfdHlwZSA9PSBoeXBlcnZpc29yKSB7CisJCXN1bjR2X2NwdV9wcm9iZSgpOworCQlyZXR1cm47CisJfQogCiAJZnBycyA9IGZwcnNfcmVhZCgpOwogCWZwcnNfd3JpdGUoRlBSU19GRUYpOwpkaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYzY0L2tlcm5lbC9kcy5jIGIvYXJjaC9zcGFyYzY0L2tlcm5lbC9kcy5jCmluZGV4IGJkNzY0ODIuLmVkYjc0ZjUgMTAwNjQ0Ci0tLSBhL2FyY2gvc3BhcmM2NC9rZXJuZWwvZHMuYworKysgYi9hcmNoL3NwYXJjNjQva2VybmVsL2RzLmMKQEAgLTk3Miw4ICs5NzIsNyBAQAogCUxJU1RfSEVBRCh0b2RvKTsKIAogCXNwaW5fbG9ja19pcnFzYXZlKCZkc19sb2NrLCBmbGFncyk7Ci0JbGlzdF9zcGxpY2UoJmRzX3dvcmtfbGlzdCwgJnRvZG8pOwotCUlOSVRfTElTVF9IRUFEKCZkc193b3JrX2xpc3QpOworCWxpc3Rfc3BsaWNlX2luaXQoJmRzX3dvcmtfbGlzdCwgJnRvZG8pOwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRzX2xvY2ssIGZsYWdzKTsKIAogCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShxcCwgdG1wLCAmdG9kbywgbGlzdCkgewpkaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYzY0L2tlcm5lbC9lbnRyeS5TIGIvYXJjaC9zcGFyYzY0L2tlcm5lbC9lbnRyeS5TCmluZGV4IDZiZTRkMmQuLjQ5ZWNhNGIgMTAwNjQ0Ci0tLSBhL2FyY2gvc3BhcmM2NC9rZXJuZWwvZW50cnkuUworKysgYi9hcmNoL3NwYXJjNjQva2VybmVsL2VudHJ5LlMKQEAgLTE3MDUsNiArMTcwNSwzNiBAQAogMjoJcmV0bAogCSBub3AKIAorCS8qIEZsdXNoICVmcCBhbmQgJWk3IHRvIHRoZSBzdGFjayBmb3IgYWxsIHJlZ2lzdGVyCisJICogd2luZG93cyBhY3RpdmUgaW5zaWRlIG9mIHRoZSBjcHUuICBUaGlzIGFsbG93cworCSAqIHNob3dfc3RhY2tfdHJhY2UoKSB0byBhdm9pZCB1c2luZyBhbiBleHBlbnNpdmUKKwkgKiAnZmx1c2h3Jy4KKwkgKi8KKwkuZ2xvYmwJCXN0YWNrX3RyYWNlX2ZsdXNoCisJLnR5cGUJCXN0YWNrX3RyYWNlX2ZsdXNoLCNmdW5jdGlvbgorc3RhY2tfdHJhY2VfZmx1c2g6CisJcmRwcgkJJXBzdGF0ZSwgJW8wCisJd3JwcgkJJW8wLCBQU1RBVEVfSUUsICVwc3RhdGUKKworCXJkcHIJCSVjd3AsICVnMQorCXJkcHIJCSVjYW5yZXN0b3JlLCAlZzIKKwlzdWIJCSVnMSwgMSwgJWczCisKKzE6CWJyeixwbgkJJWcyLCAyZgorCSBzdWIJCSVnMiwgMSwgJWcyCisJd3JwcgkJJWczLCAlY3dwCisJc3R4CQklZnAsIFslc3AgKyBTVEFDS19CSUFTICsgUldfVjlfSTZdCisJc3R4CQklaTcsIFslc3AgKyBTVEFDS19CSUFTICsgUldfVjlfSTddCisJYmEscHQJCSV4Y2MsIDFiCisJIHN1YgkJJWczLCAxLCAlZzMKKworMjoJd3JwcgkJJWcxLCAlY3dwCisJd3JwcgkJJW8wLCAlcHN0YXRlCisKKwlyZXRsCisJIG5vcAorCS5zaXplCQlzdGFja190cmFjZV9mbHVzaCwuLXN0YWNrX3RyYWNlX2ZsdXNoCisKICNpZmRlZiBDT05GSUdfU01QCiAJLmdsb2JsCQloYXJkX3NtcF9wcm9jZXNzb3JfaWQKIGhhcmRfc21wX3Byb2Nlc3Nvcl9pZDoKZGlmZiAtLWdpdCBhL2FyY2gvc3BhcmM2NC9rZXJuZWwvZW50cnkuaCBiL2FyY2gvc3BhcmM2NC9rZXJuZWwvZW50cnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTkxZTljCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9zcGFyYzY0L2tlcm5lbC9lbnRyeS5oCkBAIC0wLDAgKzEsMTk2IEBACisjaWZuZGVmIF9FTlRSWV9ICisjZGVmaW5lIF9FTlRSWV9ICisKKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKworZXh0ZXJuIGNoYXIgKnNwYXJjX2NwdV90eXBlOworZXh0ZXJuIGNoYXIgKnNwYXJjX2ZwdV90eXBlOworCitleHRlcm4gdm9pZCBfX2luaXQgcGVyX2NwdV9wYXRjaCh2b2lkKTsKK2V4dGVybiB2b2lkIF9faW5pdCBzdW40dl9wYXRjaCh2b2lkKTsKK2V4dGVybiB2b2lkIF9faW5pdCBib290X2NwdV9pZF90b29fbGFyZ2UoaW50IGNwdSk7CitleHRlcm4gdW5zaWduZWQgaW50IGRjYWNoZV9wYXJpdHlfdGwxX29jY3VycmVkOworZXh0ZXJuIHVuc2lnbmVkIGludCBpY2FjaGVfcGFyaXR5X3RsMV9vY2N1cnJlZDsKKworZXh0ZXJuIGFzbWxpbmthZ2Ugdm9pZCB1cGRhdGVfcGVyZmN0cnModm9pZCk7CitleHRlcm4gYXNtbGlua2FnZSB2b2lkIHNwYXJjX2JyZWFrcG9pbnQoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOworZXh0ZXJuIHZvaWQgdGltZXJfaW50ZXJydXB0KGludCBpcnEsIHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKKworZXh0ZXJuIHZvaWQgZG9fbm90aWZ5X3Jlc3VtZShzdHJ1Y3QgcHRfcmVncyAqcmVncywKKwkJCSAgICAgdW5zaWduZWQgbG9uZyBvcmlnX2kwLAorCQkJICAgICBpbnQgcmVzdGFydF9zeXNjYWxsLAorCQkJICAgICB1bnNpZ25lZCBsb25nIHRocmVhZF9pbmZvX2ZsYWdzKTsKKworZXh0ZXJuIGFzbWxpbmthZ2Ugdm9pZCBzeXNjYWxsX3RyYWNlKHN0cnVjdCBwdF9yZWdzICpyZWdzLAorCQkJCSAgICAgaW50IHN5c2NhbGxfZXhpdF9wKTsKKworZXh0ZXJuIHZvaWQgYmFkX3RyYXBfdGwxKHN0cnVjdCBwdF9yZWdzICpyZWdzLCBsb25nIGx2bCk7CisKK2V4dGVybiB2b2lkIGRvX2ZwZV9jb21tb24oc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOworZXh0ZXJuIHZvaWQgZG9fZnBpZWVlKHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKK2V4dGVybiB2b2lkIGRvX2Zwb3RoZXIoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOworZXh0ZXJuIHZvaWQgZG9fdG9mKHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKK2V4dGVybiB2b2lkIGRvX2RpdjAoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOworZXh0ZXJuIHZvaWQgZG9faWxsZWdhbF9pbnN0cnVjdGlvbihzdHJ1Y3QgcHRfcmVncyAqcmVncyk7CitleHRlcm4gdm9pZCBtZW1fYWRkcmVzc191bmFsaWduZWQoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsCisJCQkJICB1bnNpZ25lZCBsb25nIHNmYXIsCisJCQkJICB1bnNpZ25lZCBsb25nIHNmc3IpOworZXh0ZXJuIHZvaWQgc3VuNHZfZG9fbW5hKHN0cnVjdCBwdF9yZWdzICpyZWdzLAorCQkJIHVuc2lnbmVkIGxvbmcgYWRkciwKKwkJCSB1bnNpZ25lZCBsb25nIHR5cGVfY3R4KTsKK2V4dGVybiB2b2lkIGRvX3ByaXZvcChzdHJ1Y3QgcHRfcmVncyAqcmVncyk7CitleHRlcm4gdm9pZCBkb19wcml2YWN0KHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKK2V4dGVybiB2b2lkIGRvX2NlZShzdHJ1Y3QgcHRfcmVncyAqcmVncyk7CitleHRlcm4gdm9pZCBkb19jZWVfdGwxKHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKK2V4dGVybiB2b2lkIGRvX2RhZV90bDEoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOworZXh0ZXJuIHZvaWQgZG9faWFlX3RsMShzdHJ1Y3QgcHRfcmVncyAqcmVncyk7CitleHRlcm4gdm9pZCBkb19kaXYwX3RsMShzdHJ1Y3QgcHRfcmVncyAqcmVncyk7CitleHRlcm4gdm9pZCBkb19mcGRpc190bDEoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOworZXh0ZXJuIHZvaWQgZG9fZnBpZWVlX3RsMShzdHJ1Y3QgcHRfcmVncyAqcmVncyk7CitleHRlcm4gdm9pZCBkb19mcG90aGVyX3RsMShzdHJ1Y3QgcHRfcmVncyAqcmVncyk7CitleHRlcm4gdm9pZCBkb19pbGxfdGwxKHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKK2V4dGVybiB2b2lkIGRvX2lycV90bDEoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOworZXh0ZXJuIHZvaWQgZG9fbGRkZm1uYV90bDEoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOworZXh0ZXJuIHZvaWQgZG9fc3RkZm1uYV90bDEoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOworZXh0ZXJuIHZvaWQgZG9fcGF3KHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKK2V4dGVybiB2b2lkIGRvX3Bhd190bDEoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOworZXh0ZXJuIHZvaWQgZG9fdmF3KHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKK2V4dGVybiB2b2lkIGRvX3Zhd190bDEoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOworZXh0ZXJuIHZvaWQgZG9fdG9mX3RsMShzdHJ1Y3QgcHRfcmVncyAqcmVncyk7CitleHRlcm4gdm9pZCBkb19nZXRwc3Ioc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOworCitleHRlcm4gdm9pZCBzcGl0ZmlyZV9pbnNuX2FjY2Vzc19leGNlcHRpb24oc3RydWN0IHB0X3JlZ3MgKnJlZ3MsCisJCQkJCSAgIHVuc2lnbmVkIGxvbmcgc2ZzciwKKwkJCQkJICAgdW5zaWduZWQgbG9uZyBzZmFyKTsKK2V4dGVybiB2b2lkIHNwaXRmaXJlX2luc25fYWNjZXNzX2V4Y2VwdGlvbl90bDEoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsCisJCQkJCSAgICAgICB1bnNpZ25lZCBsb25nIHNmc3IsCisJCQkJCSAgICAgICB1bnNpZ25lZCBsb25nIHNmYXIpOworZXh0ZXJuIHZvaWQgc3BpdGZpcmVfZGF0YV9hY2Nlc3NfZXhjZXB0aW9uKHN0cnVjdCBwdF9yZWdzICpyZWdzLAorCQkJCQkgICB1bnNpZ25lZCBsb25nIHNmc3IsCisJCQkJCSAgIHVuc2lnbmVkIGxvbmcgc2Zhcik7CitleHRlcm4gdm9pZCBzcGl0ZmlyZV9kYXRhX2FjY2Vzc19leGNlcHRpb25fdGwxKHN0cnVjdCBwdF9yZWdzICpyZWdzLAorCQkJCQkgICAgICAgdW5zaWduZWQgbG9uZyBzZnNyLAorCQkJCQkgICAgICAgdW5zaWduZWQgbG9uZyBzZmFyKTsKK2V4dGVybiB2b2lkIHNwaXRmaXJlX2FjY2Vzc19lcnJvcihzdHJ1Y3QgcHRfcmVncyAqcmVncywKKwkJCQkgIHVuc2lnbmVkIGxvbmcgc3RhdHVzX2VuY29kZWQsCisJCQkJICB1bnNpZ25lZCBsb25nIGFmYXIpOworCitleHRlcm4gdm9pZCBjaGVldGFoX2ZlY2NfaGFuZGxlcihzdHJ1Y3QgcHRfcmVncyAqcmVncywKKwkJCQkgdW5zaWduZWQgbG9uZyBhZnNyLAorCQkJCSB1bnNpZ25lZCBsb25nIGFmYXIpOworZXh0ZXJuIHZvaWQgY2hlZXRhaF9jZWVfaGFuZGxlcihzdHJ1Y3QgcHRfcmVncyAqcmVncywKKwkJCQl1bnNpZ25lZCBsb25nIGFmc3IsCisJCQkJdW5zaWduZWQgbG9uZyBhZmFyKTsKK2V4dGVybiB2b2lkIGNoZWV0YWhfZGVmZXJyZWRfaGFuZGxlcihzdHJ1Y3QgcHRfcmVncyAqcmVncywKKwkJCQkgICAgIHVuc2lnbmVkIGxvbmcgYWZzciwKKwkJCQkgICAgIHVuc2lnbmVkIGxvbmcgYWZhcik7CitleHRlcm4gdm9pZCBjaGVldGFoX3BsdXNfcGFyaXR5X2Vycm9yKGludCB0eXBlLCBzdHJ1Y3QgcHRfcmVncyAqcmVncyk7CisKK2V4dGVybiB2b2lkIHN1bjR2X2luc25fYWNjZXNzX2V4Y2VwdGlvbihzdHJ1Y3QgcHRfcmVncyAqcmVncywKKwkJCQkJdW5zaWduZWQgbG9uZyBhZGRyLAorCQkJCQl1bnNpZ25lZCBsb25nIHR5cGVfY3R4KTsKK2V4dGVybiB2b2lkIHN1bjR2X2luc25fYWNjZXNzX2V4Y2VwdGlvbl90bDEoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsCisJCQkJCSAgICB1bnNpZ25lZCBsb25nIGFkZHIsCisJCQkJCSAgICB1bnNpZ25lZCBsb25nIHR5cGVfY3R4KTsKK2V4dGVybiB2b2lkIHN1bjR2X2RhdGFfYWNjZXNzX2V4Y2VwdGlvbihzdHJ1Y3QgcHRfcmVncyAqcmVncywKKwkJCQkJdW5zaWduZWQgbG9uZyBhZGRyLAorCQkJCQl1bnNpZ25lZCBsb25nIHR5cGVfY3R4KTsKK2V4dGVybiB2b2lkIHN1bjR2X2RhdGFfYWNjZXNzX2V4Y2VwdGlvbl90bDEoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsCisJCQkJCSAgICB1bnNpZ25lZCBsb25nIGFkZHIsCisJCQkJCSAgICB1bnNpZ25lZCBsb25nIHR5cGVfY3R4KTsKK2V4dGVybiB2b2lkIHN1bjR2X3Jlc3VtX2Vycm9yKHN0cnVjdCBwdF9yZWdzICpyZWdzLAorCQkJICAgICAgdW5zaWduZWQgbG9uZyBvZmZzZXQpOworZXh0ZXJuIHZvaWQgc3VuNHZfcmVzdW1fb3ZlcmZsb3coc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOworZXh0ZXJuIHZvaWQgc3VuNHZfbm9ucmVzdW1fZXJyb3Ioc3RydWN0IHB0X3JlZ3MgKnJlZ3MsCisJCQkJIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKK2V4dGVybiB2b2lkIHN1bjR2X25vbnJlc3VtX292ZXJmbG93KHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKKworZXh0ZXJuIHVuc2lnbmVkIGxvbmcgc3VuNHZfZXJyX2l0bGJfdmFkZHI7CitleHRlcm4gdW5zaWduZWQgbG9uZyBzdW40dl9lcnJfaXRsYl9jdHg7CitleHRlcm4gdW5zaWduZWQgbG9uZyBzdW40dl9lcnJfaXRsYl9wdGU7CitleHRlcm4gdW5zaWduZWQgbG9uZyBzdW40dl9lcnJfaXRsYl9lcnJvcjsKKworZXh0ZXJuIHZvaWQgc3VuNHZfaXRsYl9lcnJvcl9yZXBvcnQoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGludCB0bCk7CisKK2V4dGVybiB1bnNpZ25lZCBsb25nIHN1bjR2X2Vycl9kdGxiX3ZhZGRyOworZXh0ZXJuIHVuc2lnbmVkIGxvbmcgc3VuNHZfZXJyX2R0bGJfY3R4OworZXh0ZXJuIHVuc2lnbmVkIGxvbmcgc3VuNHZfZXJyX2R0bGJfcHRlOworZXh0ZXJuIHVuc2lnbmVkIGxvbmcgc3VuNHZfZXJyX2R0bGJfZXJyb3I7CisKK2V4dGVybiB2b2lkIHN1bjR2X2R0bGJfZXJyb3JfcmVwb3J0KHN0cnVjdCBwdF9yZWdzICpyZWdzLCBpbnQgdGwpOworZXh0ZXJuIHZvaWQgaHlwZXJ2aXNvcl90bGJvcF9lcnJvcih1bnNpZ25lZCBsb25nIGVyciwKKwkJCQkgICB1bnNpZ25lZCBsb25nIG9wKTsKK2V4dGVybiB2b2lkIGh5cGVydmlzb3JfdGxib3BfZXJyb3JfeGNhbGwodW5zaWduZWQgbG9uZyBlcnIsCisJCQkJCSB1bnNpZ25lZCBsb25nIG9wKTsKKworLyogV0FSTklORzogVGhlIGVycm9yIHRyYXAgaGFuZGxlcnMgaW4gYXNzZW1ibHkga25vdyB0aGUgcHJlY2lzZQorICoJICAgIGxheW91dCBvZiB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZS4KKyAqCisgKiBDLWxldmVsIGhhbmRsZXJzIGluIHRyYXBzLmMgdXNlIHRoaXMgaW5mb3JtYXRpb24gdG8gbG9nIHRoZQorICogZXJyb3IgYW5kIHRoZW4gZGV0ZXJtaW5lIGhvdyB0byByZWNvdmVyIChpZiBwb3NzaWJsZSkuCisgKi8KK3N0cnVjdCBjaGVldGFoX2Vycl9pbmZvIHsKKy8qMHgwMCovdTY0IGFmc3I7CisvKjB4MDgqL3U2NCBhZmFyOworCisJLyogRC1jYWNoZSBzdGF0ZSAqLworLyoweDEwKi91NjQgZGNhY2hlX2RhdGFbNF07CS8qIFRoZSBhY3R1YWwgZGF0YQkqLworLyoweDMwKi91NjQgZGNhY2hlX2luZGV4OwkvKiBELWNhY2hlIGluZGV4CSovCisvKjB4MzgqL3U2NCBkY2FjaGVfdGFnOwkJLyogRC1jYWNoZSB0YWcvdmFsaWQJKi8KKy8qMHg0MCovdTY0IGRjYWNoZV91dGFnOwkvKiBELWNhY2hlIG1pY3JvdGFnCSovCisvKjB4NDgqL3U2NCBkY2FjaGVfc3RhZzsJLyogRC1jYWNoZSBzbm9vcHRhZwkqLworCisJLyogSS1jYWNoZSBzdGF0ZSAqLworLyoweDUwKi91NjQgaWNhY2hlX2RhdGFbOF07CS8qIFRoZSBhY3R1YWwgaW5zbnMgKyBwcmVkZWNvZGUJKi8KKy8qMHg5MCovdTY0IGljYWNoZV9pbmRleDsJLyogSS1jYWNoZSBpbmRleAkqLworLyoweDk4Ki91NjQgaWNhY2hlX3RhZzsJCS8qIEktY2FjaGUgcGh5cyB0YWcJKi8KKy8qMHhhMCovdTY0IGljYWNoZV91dGFnOwkvKiBJLWNhY2hlIG1pY3JvdGFnCSovCisvKjB4YTgqL3U2NCBpY2FjaGVfc3RhZzsJLyogSS1jYWNoZSBzbm9vcHRhZwkqLworLyoweGIwKi91NjQgaWNhY2hlX3VwcGVyOwkvKiBJLWNhY2hlIHVwcGVyLXRhZwkqLworLyoweGI4Ki91NjQgaWNhY2hlX2xvd2VyOwkvKiBJLWNhY2hlIGxvd2VyLXRhZwkqLworCisJLyogRS1jYWNoZSBzdGF0ZSAqLworLyoweGMwKi91NjQgZWNhY2hlX2RhdGFbNF07CS8qIDMyIGJ5dGVzIGZyb20gc3RhZ2luZyByZWdpc3RlcnMgKi8KKy8qMHhlMCovdTY0IGVjYWNoZV9pbmRleDsJLyogRS1jYWNoZSBpbmRleAkqLworLyoweGU4Ki91NjQgZWNhY2hlX3RhZzsJCS8qIEUtY2FjaGUgdGFnL3N0YXRlCSovCisKKy8qMHhmMCovdTY0IF9fcGFkWzMyIC0gMzBdOworfTsKKyNkZWZpbmUgQ0hBRlNSX0lOVkFMSUQJCSgodTY0KS0xTCkKKworLyogVGhpcyBpcyBhbGxvY2F0ZWQgYXQgYm9vdCB0aW1lIGJhc2VkIHVwb24gdGhlIGxhcmdlc3QgaGFyZHdhcmUKKyAqIGNwdSBJRCBpbiB0aGUgc3lzdGVtLiAgV2UgYWxsb2NhdGUgdHdvIGVudHJpZXMgcGVyIGNwdSwgb25lIGZvcgorICogVEw9PTAgbG9nZ2luZyBhbmQgb25lIGZvciBUTCA+PSAxIGxvZ2dpbmcuCisgKi8KK2V4dGVybiBzdHJ1Y3QgY2hlZXRhaF9lcnJfaW5mbyAqY2hlZXRhaF9lcnJvcl9sb2c7CisKKy8qIFVQQSBub2RlcyBzZW5kIGludGVycnVwdCBwYWNrZXQgdG8gVWx0cmFTcGFyYyB3aXRoIGZpcnN0IGRhdGEgcmVnCisgKiB2YWx1ZSBsb3cgNSAoNyBvbiBTdGFyZmlyZSkgYml0cyBob2xkaW5nIHRoZSBJUlEgaWRlbnRpZmllciBiZWluZworICogZGVsaXZlcmVkLiAgV2UgbXVzdCB0cmFuc2xhdGUgdGhpcyBpbnRvIGEgbm9uLXZlY3RvciBJUlEgc28gd2UgY2FuCisgKiBzZXQgdGhlIHNvZnRpbnQgb24gdGhpcyBjcHUuCisgKgorICogVG8gbWFrZSBwcm9jZXNzaW5nIHRoZXNlIHBhY2tldHMgZWZmaWNpZW50IGFuZCByYWNlIGZyZWUgd2UgdXNlCisgKiBhbiBhcnJheSBvZiBpcnEgYnVja2V0cyBiZWxvdy4gIFRoZSBpbnRlcnJ1cHQgdmVjdG9yIGhhbmRsZXIgaW4KKyAqIGVudHJ5LlMgZmVlZHMgaW5jb21pbmcgcGFja2V0cyBpbnRvIHBlci1jcHUgcGlsLWluZGV4ZWQgbGlzdHMuCisgKgorICogSWYgeW91IG1ha2UgY2hhbmdlcyB0byBpbm9fYnVja2V0LCBwbGVhc2UgdXBkYXRlIGhhbmQgY29kZWQgYXNzZW1ibGVyCisgKiBvZiB0aGUgdmVjdG9yZWQgaW50ZXJydXB0IHRyYXAgaGFuZGxlcihzKSBpbiBlbnRyeS5TIGFuZCBzdW40dl9pdmVjLlMKKyAqLworc3RydWN0IGlub19idWNrZXQgeworLyoweDAwKi91bnNpZ25lZCBsb25nIF9faXJxX2NoYWluX3BhOworCisJLyogVmlydHVhbCBpbnRlcnJ1cHQgbnVtYmVyIGFzc2lnbmVkIHRvIHRoaXMgSU5PLiAgKi8KKy8qMHgwOCovdW5zaWduZWQgaW50IF9fdmlydF9pcnE7CisvKjB4MGMqL3Vuc2lnbmVkIGludCBfX3BhZDsKK307CisKK2V4dGVybiBzdHJ1Y3QgaW5vX2J1Y2tldCAqaXZlY3Rvcl90YWJsZTsKK2V4dGVybiB1bnNpZ25lZCBsb25nIGl2ZWN0b3JfdGFibGVfcGE7CisKK2V4dGVybiB2b2lkIGhhbmRsZXJfaXJxKGludCBpcnEsIHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKK2V4dGVybiB2b2lkIGluaXRfaXJxd29ya19jdXJjcHUodm9pZCk7CitleHRlcm4gdm9pZCBfX2NwdWluaXQgc3VuNHZfcmVnaXN0ZXJfbW9uZG9fcXVldWVzKGludCB0aGlzX2NwdSk7CisKKyNlbmRpZiAvKiBfRU5UUllfSCAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYzY0L2tlcm5lbC9oZWFkLlMgYi9hcmNoL3NwYXJjNjQva2VybmVsL2hlYWQuUwppbmRleCA0NGIxMDVjLi4zNGY4ZmY1IDEwMDY0NAotLS0gYS9hcmNoL3NwYXJjNjQva2VybmVsL2hlYWQuUworKysgYi9hcmNoL3NwYXJjNjQva2VybmVsL2hlYWQuUwpAQCAtMjg4LDggKzI4OCwxMiBAQAogCS8qIExlYXZlIGFyZzIgYXMtaXMsIHByb21fbW11X2loYW5kbGVfY2FjaGUgKi8KIAltb3YJLTEsICVsMwogCXN0eAklbDMsIFslc3AgKyAyMDQ3ICsgMTI4ICsgMHgyOF0JISBhcmczOiBtb2RlICgtMSBkZWZhdWx0KQotCXNldGhpCSVoaSg4ICogMTAyNCAqIDEwMjQpLCAlbDMKLQlzdHgJJWwzLCBbJXNwICsgMjA0NyArIDEyOCArIDB4MzBdCSEgYXJnNDogc2l6ZSAoOE1CKQorCS8qIDRNQiBhbGlnbiB0aGUga2VybmVsIGltYWdlIHNpemUuICovCisJc2V0CShfZW5kIC0gS0VSTkJBU0UpLCAlbDMKKwlzZXQJKCg0ICogMTAyNCAqIDEwMjQpIC0gMSksICVsNAorCWFkZAklbDMsICVsNCwgJWwzCisJYW5kbgklbDMsICVsNCwgJWwzCisJc3R4CSVsMywgWyVzcCArIDIwNDcgKyAxMjggKyAweDMwXQkhIGFyZzQ6IHJvdW5kdXAoa3NpemUsIDRNQikKIAlzZXRoaQklaGkoS0VSTkJBU0UpLCAlbDMKIAlzdHgJJWwzLCBbJXNwICsgMjA0NyArIDEyOCArIDB4MzhdCSEgYXJnNTogdmFkZHIgKEtFUk5CQVNFKQogCXN0eAklZzAsIFslc3AgKyAyMDQ3ICsgMTI4ICsgMHg0MF0JISBhcmc2OiBlbXB0eQpkaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYzY0L2tlcm5lbC9pb21tdS5jIGIvYXJjaC9zcGFyYzY0L2tlcm5lbC9pb21tdS5jCmluZGV4IGZiYWFiMzQuLjc1NmZhMjQgMTAwNjQ0Ci0tLSBhL2FyY2gvc3BhcmM2NC9rZXJuZWwvaW9tbXUuYworKysgYi9hcmNoL3NwYXJjNjQva2VybmVsL2lvbW11LmMKQEAgLTUxNiw5ICs1MTYsMTEgQEAKIAl1bnNpZ25lZCBsb25nIGZsYWdzLCBoYW5kbGUsIHByb3QsIGN0eDsKIAlkbWFfYWRkcl90IGRtYV9uZXh0ID0gMCwgZG1hX2FkZHI7CiAJdW5zaWduZWQgaW50IG1heF9zZWdfc2l6ZTsKKwl1bnNpZ25lZCBsb25nIHNlZ19ib3VuZGFyeV9zaXplOwogCWludCBvdXRjb3VudCwgaW5jb3VudCwgaTsKIAlzdHJ1Y3Qgc3RyYnVmICpzdHJidWY7CiAJc3RydWN0IGlvbW11ICppb21tdTsKKwl1bnNpZ25lZCBsb25nIGJhc2Vfc2hpZnQ7CiAKIAlCVUdfT04oZGlyZWN0aW9uID09IERNQV9OT05FKTsKIApAQCAtNTQ5LDggKzU1MSwxMSBAQAogCW91dHMtPmRtYV9sZW5ndGggPSAwOwogCiAJbWF4X3NlZ19zaXplID0gZG1hX2dldF9tYXhfc2VnX3NpemUoZGV2KTsKKwlzZWdfYm91bmRhcnlfc2l6ZSA9IEFMSUdOKGRtYV9nZXRfc2VnX2JvdW5kYXJ5KGRldikgKyAxLAorCQkJCSAgSU9fUEFHRV9TSVpFKSA+PiBJT19QQUdFX1NISUZUOworCWJhc2Vfc2hpZnQgPSBpb21tdS0+cGFnZV90YWJsZV9tYXBfYmFzZSA+PiBJT19QQUdFX1NISUZUOwogCWZvcl9lYWNoX3NnKHNnbGlzdCwgcywgbmVsZW1zLCBpKSB7Ci0JCXVuc2lnbmVkIGxvbmcgcGFkZHIsIG5wYWdlcywgZW50cnksIHNsZW47CisJCXVuc2lnbmVkIGxvbmcgcGFkZHIsIG5wYWdlcywgZW50cnksIG91dF9lbnRyeSA9IDAsIHNsZW47CiAJCWlvcHRlX3QgKmJhc2U7CiAKIAkJc2xlbiA9IHMtPmxlbmd0aDsKQEAgLTU5Myw3ICs1OTgsOSBAQAogCQkJICogLSBhbGxvY2F0ZWQgZG1hX2FkZHIgaXNuJ3QgY29udGlndW91cyB0byBwcmV2aW91cyBhbGxvY2F0aW9uCiAJCQkgKi8KIAkJCWlmICgoZG1hX2FkZHIgIT0gZG1hX25leHQpIHx8Ci0JCQkgICAgKG91dHMtPmRtYV9sZW5ndGggKyBzLT5sZW5ndGggPiBtYXhfc2VnX3NpemUpKSB7CisJCQkgICAgKG91dHMtPmRtYV9sZW5ndGggKyBzLT5sZW5ndGggPiBtYXhfc2VnX3NpemUpIHx8CisJCQkgICAgKGlzX3NwYW5fYm91bmRhcnkob3V0X2VudHJ5LCBiYXNlX3NoaWZ0LAorCQkJCQkgICAgICBzZWdfYm91bmRhcnlfc2l6ZSwgb3V0cywgcykpKSB7CiAJCQkJLyogQ2FuJ3QgbWVyZ2U6IGNyZWF0ZSBhIG5ldyBzZWdtZW50ICovCiAJCQkJc2Vnc3RhcnQgPSBzOwogCQkJCW91dGNvdW50Kys7CkBAIC02MDcsNiArNjE0LDcgQEAKIAkJCS8qIFRoaXMgaXMgYSBuZXcgc2VnbWVudCwgZmlsbCBlbnRyaWVzICovCiAJCQlvdXRzLT5kbWFfYWRkcmVzcyA9IGRtYV9hZGRyOwogCQkJb3V0cy0+ZG1hX2xlbmd0aCA9IHNsZW47CisJCQlvdXRfZW50cnkgPSBlbnRyeTsKIAkJfQogCiAJCS8qIENhbGN1bGF0ZSBuZXh0IHBhZ2UgcG9pbnRlciBmb3IgY29udGlndW91cyBjaGVjayAqLwpAQCAtNjI2LDcgKzYzNCw3IEBACiBpb21tdV9tYXBfZmFpbGVkOgogCWZvcl9lYWNoX3NnKHNnbGlzdCwgcywgbmVsZW1zLCBpKSB7CiAJCWlmIChzLT5kbWFfbGVuZ3RoICE9IDApIHsKLQkJCXVuc2lnbmVkIGxvbmcgdmFkZHIsIG5wYWdlcywgZW50cnksIGk7CisJCQl1bnNpZ25lZCBsb25nIHZhZGRyLCBucGFnZXMsIGVudHJ5LCBqOwogCQkJaW9wdGVfdCAqYmFzZTsKIAogCQkJdmFkZHIgPSBzLT5kbWFfYWRkcmVzcyAmIElPX1BBR0VfTUFTSzsKQEAgLTYzNyw4ICs2NDUsOCBAQAogCQkJCT4+IElPX1BBR0VfU0hJRlQ7CiAJCQliYXNlID0gaW9tbXUtPnBhZ2VfdGFibGUgKyBlbnRyeTsKIAotCQkJZm9yIChpID0gMDsgaSA8IG5wYWdlczsgaSsrKQotCQkJCWlvcHRlX21ha2VfZHVtbXkoaW9tbXUsIGJhc2UgKyBpKTsKKwkJCWZvciAoaiA9IDA7IGogPCBucGFnZXM7IGorKykKKwkJCQlpb3B0ZV9tYWtlX2R1bW15KGlvbW11LCBiYXNlICsgaik7CiAKIAkJCXMtPmRtYV9hZGRyZXNzID0gRE1BX0VSUk9SX0NPREU7CiAJCQlzLT5kbWFfbGVuZ3RoID0gMDsKQEAgLTgwMyw3ICs4MTEsNyBAQAogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmlvbW11LT5sb2NrLCBmbGFncyk7CiB9CiAKLWNvbnN0IHN0cnVjdCBkbWFfb3BzIHN1bjR1X2RtYV9vcHMgPSB7CitzdGF0aWMgY29uc3Qgc3RydWN0IGRtYV9vcHMgc3VuNHVfZG1hX29wcyA9IHsKIAkuYWxsb2NfY29oZXJlbnQJCT0gZG1hXzR1X2FsbG9jX2NvaGVyZW50LAogCS5mcmVlX2NvaGVyZW50CQk9IGRtYV80dV9mcmVlX2NvaGVyZW50LAogCS5tYXBfc2luZ2xlCQk9IGRtYV80dV9tYXBfc2luZ2xlLApkaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYzY0L2tlcm5lbC9pb21tdV9jb21tb24uaCBiL2FyY2gvc3BhcmM2NC9rZXJuZWwvaW9tbXVfY29tbW9uLmgKaW5kZXggMDcxM2JkNS4uZjM1NzVhNiAxMDA2NDQKLS0tIGEvYXJjaC9zcGFyYzY0L2tlcm5lbC9pb21tdV9jb21tb24uaAorKysgYi9hcmNoL3NwYXJjNjQva2VybmVsL2lvbW11X2NvbW1vbi5oCkBAIC0xMiw2ICsxMiw3IEBACiAjaW5jbHVkZSA8bGludXgvbW0uaD4KICNpbmNsdWRlIDxsaW51eC9zY2F0dGVybGlzdC5oPgogI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L2lvbW11LWhlbHBlci5oPgogCiAjaW5jbHVkZSA8YXNtL2lvbW11Lmg+CiAjaW5jbHVkZSA8YXNtL3NjYXR0ZXJsaXN0Lmg+CkBAIC00NSwxNyArNDYsMTYgQEAKIAlyZXR1cm4gbnBhZ2VzOwogfQogCi1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgY2FsY19ucGFnZXMoc3RydWN0IHNjYXR0ZXJsaXN0ICpzZ2xpc3QsIGludCBuZWxlbXMpCitzdGF0aWMgaW5saW5lIGludCBpc19zcGFuX2JvdW5kYXJ5KHVuc2lnbmVkIGxvbmcgZW50cnksCisJCQkJICAgdW5zaWduZWQgbG9uZyBzaGlmdCwKKwkJCQkgICB1bnNpZ25lZCBsb25nIGJvdW5kYXJ5X3NpemUsCisJCQkJICAgc3RydWN0IHNjYXR0ZXJsaXN0ICpvdXRzLAorCQkJCSAgIHN0cnVjdCBzY2F0dGVybGlzdCAqc2cpCiB7Ci0JdW5zaWduZWQgbG9uZyBpLCBucGFnZXMgPSAwOwotCXN0cnVjdCBzY2F0dGVybGlzdCAqc2c7CisJdW5zaWduZWQgbG9uZyBwYWRkciA9IFNHX0VOVF9QSFlTX0FERFJFU1Mob3V0cyk7CisJaW50IG5yID0gaW9tbXVfbnVtX3BhZ2VzKHBhZGRyLCBvdXRzLT5kbWFfbGVuZ3RoICsgc2ctPmxlbmd0aCk7CiAKLQlmb3JfZWFjaF9zZyhzZ2xpc3QsIHNnLCBuZWxlbXMsIGkpIHsKLQkJdW5zaWduZWQgbG9uZyBwYWRkciA9IFNHX0VOVF9QSFlTX0FERFJFU1Moc2cpOwotCQlucGFnZXMgKz0gaW9tbXVfbnVtX3BhZ2VzKHBhZGRyLCBzZy0+bGVuZ3RoKTsKLQl9Ci0KLQlyZXR1cm4gbnBhZ2VzOworCXJldHVybiBpb21tdV9pc19zcGFuX2JvdW5kYXJ5KGVudHJ5LCBuciwgc2hpZnQsIGJvdW5kYXJ5X3NpemUpOwogfQogCiBleHRlcm4gdW5zaWduZWQgbG9uZyBpb21tdV9yYW5nZV9hbGxvYyhzdHJ1Y3QgZGV2aWNlICpkZXYsCmRpZmYgLS1naXQgYS9hcmNoL3NwYXJjNjQva2VybmVsL2lycS5jIGIvYXJjaC9zcGFyYzY0L2tlcm5lbC9pcnEuYwppbmRleCA1ZWMwNmM4Li5lYjg4YmQ2IDEwMDY0NAotLS0gYS9hcmNoL3NwYXJjNjQva2VybmVsL2lycS5jCisrKyBiL2FyY2gvc3BhcmM2NC9rZXJuZWwvaXJxLmMKQEAgLTQ0LDI3ICs0NCwxMCBAQAogI2luY2x1ZGUgPGFzbS9oeXBlcnZpc29yLmg+CiAjaW5jbHVkZSA8YXNtL2NhY2hlZmx1c2guaD4KIAotLyogVVBBIG5vZGVzIHNlbmQgaW50ZXJydXB0IHBhY2tldCB0byBVbHRyYVNwYXJjIHdpdGggZmlyc3QgZGF0YSByZWcKLSAqIHZhbHVlIGxvdyA1ICg3IG9uIFN0YXJmaXJlKSBiaXRzIGhvbGRpbmcgdGhlIElSUSBpZGVudGlmaWVyIGJlaW5nCi0gKiBkZWxpdmVyZWQuICBXZSBtdXN0IHRyYW5zbGF0ZSB0aGlzIGludG8gYSBub24tdmVjdG9yIElSUSBzbyB3ZSBjYW4KLSAqIHNldCB0aGUgc29mdGludCBvbiB0aGlzIGNwdS4KLSAqCi0gKiBUbyBtYWtlIHByb2Nlc3NpbmcgdGhlc2UgcGFja2V0cyBlZmZpY2llbnQgYW5kIHJhY2UgZnJlZSB3ZSB1c2UKLSAqIGFuIGFycmF5IG9mIGlycSBidWNrZXRzIGJlbG93LiAgVGhlIGludGVycnVwdCB2ZWN0b3IgaGFuZGxlciBpbgotICogZW50cnkuUyBmZWVkcyBpbmNvbWluZyBwYWNrZXRzIGludG8gcGVyLWNwdSBwaWwtaW5kZXhlZCBsaXN0cy4KLSAqCi0gKiBJZiB5b3UgbWFrZSBjaGFuZ2VzIHRvIGlub19idWNrZXQsIHBsZWFzZSB1cGRhdGUgaGFuZCBjb2RlZCBhc3NlbWJsZXIKLSAqIG9mIHRoZSB2ZWN0b3JlZCBpbnRlcnJ1cHQgdHJhcCBoYW5kbGVyKHMpIGluIGVudHJ5LlMgYW5kIHN1bjR2X2l2ZWMuUwotICovCi1zdHJ1Y3QgaW5vX2J1Y2tldCB7Ci0vKjB4MDAqL3Vuc2lnbmVkIGxvbmcgX19pcnFfY2hhaW5fcGE7Ci0KLQkvKiBWaXJ0dWFsIGludGVycnVwdCBudW1iZXIgYXNzaWduZWQgdG8gdGhpcyBJTk8uICAqLwotLyoweDA4Ki91bnNpZ25lZCBpbnQgX192aXJ0X2lycTsKLS8qMHgwYyovdW5zaWduZWQgaW50IF9fcGFkOwotfTsKKyNpbmNsdWRlICJlbnRyeS5oIgogCiAjZGVmaW5lIE5VTV9JVkVDUwkoSU1BUF9JTlIgKyAxKQorCiBzdHJ1Y3QgaW5vX2J1Y2tldCAqaXZlY3Rvcl90YWJsZTsKIHVuc2lnbmVkIGxvbmcgaXZlY3Rvcl90YWJsZV9wYTsKIApkaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYzY0L2tlcm5lbC9wY2lfc3VuNHYuYyBiL2FyY2gvc3BhcmM2NC9rZXJuZWwvcGNpX3N1bjR2LmMKaW5kZXggZGRjYTZjNi4uMDE4Mzk3MCAxMDA2NDQKLS0tIGEvYXJjaC9zcGFyYzY0L2tlcm5lbC9wY2lfc3VuNHYuYworKysgYi9hcmNoL3NwYXJjNjQva2VybmVsL3BjaV9zdW40di5jCkBAIC0zMzUsOCArMzM1LDEwIEBACiAJdW5zaWduZWQgbG9uZyBmbGFncywgaGFuZGxlLCBwcm90OwogCWRtYV9hZGRyX3QgZG1hX25leHQgPSAwLCBkbWFfYWRkcjsKIAl1bnNpZ25lZCBpbnQgbWF4X3NlZ19zaXplOworCXVuc2lnbmVkIGxvbmcgc2VnX2JvdW5kYXJ5X3NpemU7CiAJaW50IG91dGNvdW50LCBpbmNvdW50LCBpOwogCXN0cnVjdCBpb21tdSAqaW9tbXU7CisJdW5zaWduZWQgbG9uZyBiYXNlX3NoaWZ0OwogCWxvbmcgZXJyOwogCiAJQlVHX09OKGRpcmVjdGlvbiA9PSBETUFfTk9ORSk7CkBAIC0zNjIsOCArMzY0LDExIEBACiAJaW9tbXVfYmF0Y2hfc3RhcnQoZGV2LCBwcm90LCB+MFVMKTsKIAogCW1heF9zZWdfc2l6ZSA9IGRtYV9nZXRfbWF4X3NlZ19zaXplKGRldik7CisJc2VnX2JvdW5kYXJ5X3NpemUgPSBBTElHTihkbWFfZ2V0X3NlZ19ib3VuZGFyeShkZXYpICsgMSwKKwkJCQkgIElPX1BBR0VfU0laRSkgPj4gSU9fUEFHRV9TSElGVDsKKwliYXNlX3NoaWZ0ID0gaW9tbXUtPnBhZ2VfdGFibGVfbWFwX2Jhc2UgPj4gSU9fUEFHRV9TSElGVDsKIAlmb3JfZWFjaF9zZyhzZ2xpc3QsIHMsIG5lbGVtcywgaSkgewotCQl1bnNpZ25lZCBsb25nIHBhZGRyLCBucGFnZXMsIGVudHJ5LCBzbGVuOworCQl1bnNpZ25lZCBsb25nIHBhZGRyLCBucGFnZXMsIGVudHJ5LCBvdXRfZW50cnkgPSAwLCBzbGVuOwogCiAJCXNsZW4gPSBzLT5sZW5ndGg7CiAJCS8qIFNhbml0eSBjaGVjayAqLwpAQCAtNDA2LDcgKzQxMSw5IEBACiAJCQkgKiAtIGFsbG9jYXRlZCBkbWFfYWRkciBpc24ndCBjb250aWd1b3VzIHRvIHByZXZpb3VzIGFsbG9jYXRpb24KIAkJCSAqLwogCQkJaWYgKChkbWFfYWRkciAhPSBkbWFfbmV4dCkgfHwKLQkJCSAgICAob3V0cy0+ZG1hX2xlbmd0aCArIHMtPmxlbmd0aCA+IG1heF9zZWdfc2l6ZSkpIHsKKwkJCSAgICAob3V0cy0+ZG1hX2xlbmd0aCArIHMtPmxlbmd0aCA+IG1heF9zZWdfc2l6ZSkgfHwKKwkJCSAgICAoaXNfc3Bhbl9ib3VuZGFyeShvdXRfZW50cnksIGJhc2Vfc2hpZnQsCisJCQkJCSAgICAgIHNlZ19ib3VuZGFyeV9zaXplLCBvdXRzLCBzKSkpIHsKIAkJCQkvKiBDYW4ndCBtZXJnZTogY3JlYXRlIGEgbmV3IHNlZ21lbnQgKi8KIAkJCQlzZWdzdGFydCA9IHM7CiAJCQkJb3V0Y291bnQrKzsKQEAgLTQyMCw2ICs0MjcsNyBAQAogCQkJLyogVGhpcyBpcyBhIG5ldyBzZWdtZW50LCBmaWxsIGVudHJpZXMgKi8KIAkJCW91dHMtPmRtYV9hZGRyZXNzID0gZG1hX2FkZHI7CiAJCQlvdXRzLT5kbWFfbGVuZ3RoID0gc2xlbjsKKwkJCW91dF9lbnRyeSA9IGVudHJ5OwogCQl9CiAKIAkJLyogQ2FsY3VsYXRlIG5leHQgcGFnZSBwb2ludGVyIGZvciBjb250aWd1b3VzIGNoZWNrICovCmRpZmYgLS1naXQgYS9hcmNoL3NwYXJjNjQva2VybmVsL3Byb2Nlc3MuYyBiL2FyY2gvc3BhcmM2NC9rZXJuZWwvcHJvY2Vzcy5jCmluZGV4IGUxMTZlMzguLmFjZjhjNTIgMTAwNjQ0Ci0tLSBhL2FyY2gvc3BhcmM2NC9rZXJuZWwvcHJvY2Vzcy5jCisrKyBiL2FyY2gvc3BhcmM2NC9rZXJuZWwvcHJvY2Vzcy5jCkBAIC03MzEsOSArNzMxLDYgQEAKIAkJY3VycmVudF90aHJlYWRfaW5mbygpLT54ZnNyWzBdID0gMDsKIAkJY3VycmVudF90aHJlYWRfaW5mbygpLT5mcHNhdmVkWzBdID0gMDsKIAkJcmVncy0+dHN0YXRlICY9IH5UU1RBVEVfUEVGOwotCQl0YXNrX2xvY2soY3VycmVudCk7Ci0JCWN1cnJlbnQtPnB0cmFjZSAmPSB+UFRfRFRSQUNFOwotCQl0YXNrX3VubG9jayhjdXJyZW50KTsKIAl9CiBvdXQ6CiAJcmV0dXJuIGVycm9yOwpkaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYzY0L2tlcm5lbC9wdHJhY2UuYyBiL2FyY2gvc3BhcmM2NC9rZXJuZWwvcHRyYWNlLmMKaW5kZXggOWExYmExZi4uZTlmYzBhYSAxMDA2NDQKLS0tIGEvYXJjaC9zcGFyYzY0L2tlcm5lbC9wdHJhY2UuYworKysgYi9hcmNoL3NwYXJjNjQva2VybmVsL3B0cmFjZS5jCkBAIC0zNSw2ICszNSw5IEBACiAjaW5jbHVkZSA8YXNtL3NwaXRmaXJlLmg+CiAjaW5jbHVkZSA8YXNtL3BhZ2UuaD4KICNpbmNsdWRlIDxhc20vY3B1ZGF0YS5oPgorI2luY2x1ZGUgPGFzbS9jYWNoZWZsdXNoLmg+CisKKyNpbmNsdWRlICJlbnRyeS5oIgogCiAvKiAjZGVmaW5lIEFMTE9XX0lOSVRfVFJBQ0lORyAqLwogCkBAIC02Nyw2ICs3MCw4IEBACiAJaWYgKHRsYl90eXBlID09IGh5cGVydmlzb3IpCiAJCXJldHVybjsKIAorCXByZWVtcHRfZGlzYWJsZSgpOworCiAjaWZkZWYgRENBQ0hFX0FMSUFTSU5HX1BPU1NJQkxFCiAJLyogSWYgYml0IDEzIG9mIHRoZSBrZXJuZWwgYWRkcmVzcyB3ZSB1c2VkIHRvIGFjY2VzcyB0aGUKIAkgKiB1c2VyIHBhZ2UgaXMgdGhlIHNhbWUgYXMgdGhlIHZpcnR1YWwgYWRkcmVzcyB0aGF0IHBhZ2UKQEAgLTEwNSw2ICsxMTAsODcgQEAKIAkJZm9yICg7IHN0YXJ0IDwgZW5kOyBzdGFydCArPSBpY2FjaGVfbGluZV9zaXplKQogCQkJZmx1c2hpKHN0YXJ0KTsKIAl9CisKKwlwcmVlbXB0X2VuYWJsZSgpOworfQorCitzdGF0aWMgaW50IGdldF9mcm9tX3RhcmdldChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhcmdldCwgdW5zaWduZWQgbG9uZyB1YWRkciwKKwkJCSAgIHZvaWQgKmtidWYsIGludCBsZW4pCit7CisJaWYgKHRhcmdldCA9PSBjdXJyZW50KSB7CisJCWlmIChjb3B5X2Zyb21fdXNlcihrYnVmLCAodm9pZCBfX3VzZXIgKikgdWFkZHIsIGxlbikpCisJCQlyZXR1cm4gLUVGQVVMVDsKKwl9IGVsc2UgeworCQlpbnQgbGVuMiA9IGFjY2Vzc19wcm9jZXNzX3ZtKHRhcmdldCwgdWFkZHIsIGtidWYsIGxlbiwgMCk7CisJCWlmIChsZW4yICE9IGxlbikKKwkJCXJldHVybiAtRUZBVUxUOworCX0KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBzZXRfdG9fdGFyZ2V0KHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHVhZGRyLAorCQkJIHZvaWQgKmtidWYsIGludCBsZW4pCit7CisJaWYgKHRhcmdldCA9PSBjdXJyZW50KSB7CisJCWlmIChjb3B5X3RvX3VzZXIoKHZvaWQgX191c2VyICopIHVhZGRyLCBrYnVmLCBsZW4pKQorCQkJcmV0dXJuIC1FRkFVTFQ7CisJfSBlbHNlIHsKKwkJaW50IGxlbjIgPSBhY2Nlc3NfcHJvY2Vzc192bSh0YXJnZXQsIHVhZGRyLCBrYnVmLCBsZW4sIDEpOworCQlpZiAobGVuMiAhPSBsZW4pCisJCQlyZXR1cm4gLUVGQVVMVDsKKwl9CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgcmVnd2luZG93NjRfZ2V0KHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFyZ2V0LAorCQkJICAgY29uc3Qgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsCisJCQkgICBzdHJ1Y3QgcmVnX3dpbmRvdyAqd2J1ZikKK3sKKwl1bnNpZ25lZCBsb25nIHJ3X2FkZHIgPSByZWdzLT51X3JlZ3NbVVJFR19JNl07CisKKwlpZiAodGVzdF90c2tfdGhyZWFkX2ZsYWcoY3VycmVudCwgVElGXzMyQklUKSkgeworCQlzdHJ1Y3QgcmVnX3dpbmRvdzMyIHdpbjMyOworCQlpbnQgaTsKKworCQlpZiAoZ2V0X2Zyb21fdGFyZ2V0KHRhcmdldCwgcndfYWRkciwgJndpbjMyLCBzaXplb2Yod2luMzIpKSkKKwkJCXJldHVybiAtRUZBVUxUOworCQlmb3IgKGkgPSAwOyBpIDwgODsgaSsrKQorCQkJd2J1Zi0+bG9jYWxzW2ldID0gd2luMzIubG9jYWxzW2ldOworCQlmb3IgKGkgPSAwOyBpIDwgODsgaSsrKQorCQkJd2J1Zi0+aW5zW2ldID0gd2luMzIuaW5zW2ldOworCX0gZWxzZSB7CisJCXJ3X2FkZHIgKz0gU1RBQ0tfQklBUzsKKwkJaWYgKGdldF9mcm9tX3RhcmdldCh0YXJnZXQsIHJ3X2FkZHIsIHdidWYsIHNpemVvZigqd2J1ZikpKQorCQkJcmV0dXJuIC1FRkFVTFQ7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgcmVnd2luZG93NjRfc2V0KHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFyZ2V0LAorCQkJICAgY29uc3Qgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsCisJCQkgICBzdHJ1Y3QgcmVnX3dpbmRvdyAqd2J1ZikKK3sKKwl1bnNpZ25lZCBsb25nIHJ3X2FkZHIgPSByZWdzLT51X3JlZ3NbVVJFR19JNl07CisKKwlpZiAodGVzdF90c2tfdGhyZWFkX2ZsYWcoY3VycmVudCwgVElGXzMyQklUKSkgeworCQlzdHJ1Y3QgcmVnX3dpbmRvdzMyIHdpbjMyOworCQlpbnQgaTsKKworCQlmb3IgKGkgPSAwOyBpIDwgODsgaSsrKQorCQkJd2luMzIubG9jYWxzW2ldID0gd2J1Zi0+bG9jYWxzW2ldOworCQlmb3IgKGkgPSAwOyBpIDwgODsgaSsrKQorCQkJd2luMzIuaW5zW2ldID0gd2J1Zi0+aW5zW2ldOworCisJCWlmIChzZXRfdG9fdGFyZ2V0KHRhcmdldCwgcndfYWRkciwgJndpbjMyLCBzaXplb2Yod2luMzIpKSkKKwkJCXJldHVybiAtRUZBVUxUOworCX0gZWxzZSB7CisJCXJ3X2FkZHIgKz0gU1RBQ0tfQklBUzsKKwkJaWYgKHNldF90b190YXJnZXQodGFyZ2V0LCByd19hZGRyLCB3YnVmLCBzaXplb2YoKndidWYpKSkKKwkJCXJldHVybiAtRUZBVUxUOworCX0KKworCXJldHVybiAwOwogfQogCiBlbnVtIHNwYXJjX3JlZ3NldCB7CkBAIC0xMjYsMTYgKzIxMiwxMyBAQAogCXJldCA9IHVzZXJfcmVnc2V0X2NvcHlvdXQoJnBvcywgJmNvdW50LCAma2J1ZiwgJnVidWYsCiAJCQkJICByZWdzLT51X3JlZ3MsCiAJCQkJICAwLCAxNiAqIHNpemVvZih1NjQpKTsKLQlpZiAoIXJldCkgewotCQl1bnNpZ25lZCBsb25nIF9fdXNlciAqcmVnX3dpbmRvdyA9ICh1bnNpZ25lZCBsb25nIF9fdXNlciAqKQotCQkJKHJlZ3MtPnVfcmVnc1tVUkVHX0k2XSArIFNUQUNLX0JJQVMpOwotCQl1bnNpZ25lZCBsb25nIHdpbmRvd1sxNl07CisJaWYgKCFyZXQgJiYgY291bnQgJiYgcG9zIDwgKDMyICogc2l6ZW9mKHU2NCkpKSB7CisJCXN0cnVjdCByZWdfd2luZG93IHdpbmRvdzsKIAotCQlpZiAoY29weV9mcm9tX3VzZXIod2luZG93LCByZWdfd2luZG93LCBzaXplb2Yod2luZG93KSkpCisJCWlmIChyZWd3aW5kb3c2NF9nZXQodGFyZ2V0LCByZWdzLCAmd2luZG93KSkKIAkJCXJldHVybiAtRUZBVUxUOwotCiAJCXJldCA9IHVzZXJfcmVnc2V0X2NvcHlvdXQoJnBvcywgJmNvdW50LCAma2J1ZiwgJnVidWYsCi0JCQkJCSAgd2luZG93LAorCQkJCQkgICZ3aW5kb3csCiAJCQkJCSAgMTYgKiBzaXplb2YodTY0KSwKIAkJCQkJICAzMiAqIHNpemVvZih1NjQpKTsKIAl9CkBAIC0xNTcsMTAgKzI0MCwxMSBAQAogCQkJCQkgIDM2ICogc2l6ZW9mKHU2NCkpOwogCX0KIAotCWlmICghcmV0KQorCWlmICghcmV0KSB7CiAJCXJldCA9IHVzZXJfcmVnc2V0X2NvcHlvdXRfemVybygmcG9zLCAmY291bnQsICZrYnVmLCAmdWJ1ZiwKIAkJCQkJICAgICAgIDM2ICogc2l6ZW9mKHU2NCksIC0xKTsKIAorCX0KIAlyZXR1cm4gcmV0OwogfQogCkBAIC0xNzgsMjAgKzI2MiwxOSBAQAogCXJldCA9IHVzZXJfcmVnc2V0X2NvcHlpbigmcG9zLCAmY291bnQsICZrYnVmLCAmdWJ1ZiwKIAkJCQkgcmVncy0+dV9yZWdzLAogCQkJCSAwLCAxNiAqIHNpemVvZih1NjQpKTsKLQlpZiAoIXJldCAmJiBjb3VudCA+IDApIHsKLQkJdW5zaWduZWQgbG9uZyBfX3VzZXIgKnJlZ193aW5kb3cgPSAodW5zaWduZWQgbG9uZyBfX3VzZXIgKikKLQkJCShyZWdzLT51X3JlZ3NbVVJFR19JNl0gKyBTVEFDS19CSUFTKTsKLQkJdW5zaWduZWQgbG9uZyB3aW5kb3dbMTZdOworCWlmICghcmV0ICYmIGNvdW50ICYmIHBvcyA8ICgzMiAqIHNpemVvZih1NjQpKSkgeworCQlzdHJ1Y3QgcmVnX3dpbmRvdyB3aW5kb3c7CiAKLQkJaWYgKGNvcHlfZnJvbV91c2VyKHdpbmRvdywgcmVnX3dpbmRvdywgc2l6ZW9mKHdpbmRvdykpKQorCQlpZiAocmVnd2luZG93NjRfZ2V0KHRhcmdldCwgcmVncywgJndpbmRvdykpCiAJCQlyZXR1cm4gLUVGQVVMVDsKIAogCQlyZXQgPSB1c2VyX3JlZ3NldF9jb3B5aW4oJnBvcywgJmNvdW50LCAma2J1ZiwgJnVidWYsCi0JCQkJCSB3aW5kb3csCisJCQkJCSAmd2luZG93LAogCQkJCQkgMTYgKiBzaXplb2YodTY0KSwKIAkJCQkJIDMyICogc2l6ZW9mKHU2NCkpOworCiAJCWlmICghcmV0ICYmCi0JCSAgICBjb3B5X3RvX3VzZXIocmVnX3dpbmRvdywgd2luZG93LCBzaXplb2Yod2luZG93KSkpCisJCSAgICByZWd3aW5kb3c2NF9zZXQodGFyZ2V0LCByZWdzLCAmd2luZG93KSkKIAkJCXJldHVybiAtRUZBVUxUOwogCX0KIApAQCAtMzgyLDYgKzQ2NSw3IEBACiAJLnJlZ3NldHMgPSBzcGFyYzY0X3JlZ3NldHMsIC5uID0gQVJSQVlfU0laRShzcGFyYzY0X3JlZ3NldHMpCiB9OwogCisjaWZkZWYgQ09ORklHX0NPTVBBVAogc3RhdGljIGludCBnZW5yZWdzMzJfZ2V0KHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFyZ2V0LAogCQkJIGNvbnN0IHN0cnVjdCB1c2VyX3JlZ3NldCAqcmVnc2V0LAogCQkJIHVuc2lnbmVkIGludCBwb3MsIHVuc2lnbmVkIGludCBjb3VudCwKQEAgLTQwNCw5ICs0ODgsMjIgQEAKIAkJCSprKysgPSByZWdzLT51X3JlZ3NbcG9zKytdOwogCiAJCXJlZ193aW5kb3cgPSAoY29tcGF0X3Vsb25nX3QgX191c2VyICopIHJlZ3MtPnVfcmVnc1tVUkVHX0k2XTsKLQkJZm9yICg7IGNvdW50ID4gMCAmJiBwb3MgPCAzMjsgY291bnQtLSkgewotCQkJaWYgKGdldF91c2VyKCprKyssICZyZWdfd2luZG93W3BvcysrXSkpCi0JCQkJcmV0dXJuIC1FRkFVTFQ7CisJCWlmICh0YXJnZXQgPT0gY3VycmVudCkgeworCQkJZm9yICg7IGNvdW50ID4gMCAmJiBwb3MgPCAzMjsgY291bnQtLSkgeworCQkJCWlmIChnZXRfdXNlcigqaysrLCAmcmVnX3dpbmRvd1twb3MrK10pKQorCQkJCQlyZXR1cm4gLUVGQVVMVDsKKwkJCX0KKwkJfSBlbHNlIHsKKwkJCWZvciAoOyBjb3VudCA+IDAgJiYgcG9zIDwgMzI7IGNvdW50LS0pIHsKKwkJCQlpZiAoYWNjZXNzX3Byb2Nlc3Nfdm0odGFyZ2V0LAorCQkJCQkJICAgICAgKHVuc2lnbmVkIGxvbmcpCisJCQkJCQkgICAgICAmcmVnX3dpbmRvd1twb3NdLAorCQkJCQkJICAgICAgaywgc2l6ZW9mKCprKSwgMCkKKwkJCQkgICAgIT0gc2l6ZW9mKCprKSkKKwkJCQkJcmV0dXJuIC1FRkFVTFQ7CisJCQkJaysrOworCQkJCXBvcysrOworCQkJfQogCQl9CiAJfSBlbHNlIHsKIAkJZm9yICg7IGNvdW50ID4gMCAmJiBwb3MgPCAxNjsgY291bnQtLSkgewpAQCAtNDE1LDEwICs1MTIsMjggQEAKIAkJfQogCiAJCXJlZ193aW5kb3cgPSAoY29tcGF0X3Vsb25nX3QgX191c2VyICopIHJlZ3MtPnVfcmVnc1tVUkVHX0k2XTsKLQkJZm9yICg7IGNvdW50ID4gMCAmJiBwb3MgPCAzMjsgY291bnQtLSkgewotCQkJaWYgKGdldF91c2VyKHJlZywgJnJlZ193aW5kb3dbcG9zKytdKSB8fAotCQkJICAgIHB1dF91c2VyKHJlZywgdSsrKSkKLQkJCQlyZXR1cm4gLUVGQVVMVDsKKwkJaWYgKHRhcmdldCA9PSBjdXJyZW50KSB7CisJCQlmb3IgKDsgY291bnQgPiAwICYmIHBvcyA8IDMyOyBjb3VudC0tKSB7CisJCQkJaWYgKGdldF91c2VyKHJlZywgJnJlZ193aW5kb3dbcG9zKytdKSB8fAorCQkJCSAgICBwdXRfdXNlcihyZWcsIHUrKykpCisJCQkJCXJldHVybiAtRUZBVUxUOworCQkJfQorCQl9IGVsc2UgeworCQkJZm9yICg7IGNvdW50ID4gMCAmJiBwb3MgPCAzMjsgY291bnQtLSkgeworCQkJCWlmIChhY2Nlc3NfcHJvY2Vzc192bSh0YXJnZXQsCisJCQkJCQkgICAgICAodW5zaWduZWQgbG9uZykKKwkJCQkJCSAgICAgICZyZWdfd2luZG93W3Bvc10sCisJCQkJCQkgICAgICAmcmVnLCBzaXplb2YocmVnKSwgMCkKKwkJCQkgICAgIT0gc2l6ZW9mKHJlZykpCisJCQkJCXJldHVybiAtRUZBVUxUOworCQkJCWlmIChhY2Nlc3NfcHJvY2Vzc192bSh0YXJnZXQsCisJCQkJCQkgICAgICAodW5zaWduZWQgbG9uZykgdSwKKwkJCQkJCSAgICAgICZyZWcsIHNpemVvZihyZWcpLCAxKQorCQkJCSAgICAhPSBzaXplb2YocmVnKSkKKwkJCQkJcmV0dXJuIC1FRkFVTFQ7CisJCQkJcG9zKys7CisJCQkJdSsrOworCQkJfQogCQl9CiAJfQogCXdoaWxlIChjb3VudCA+IDApIHsKQEAgLTQ4MCw5ICs1OTUsMjMgQEAKIAkJCXJlZ3MtPnVfcmVnc1twb3MrK10gPSAqaysrOwogCiAJCXJlZ193aW5kb3cgPSAoY29tcGF0X3Vsb25nX3QgX191c2VyICopIHJlZ3MtPnVfcmVnc1tVUkVHX0k2XTsKLQkJZm9yICg7IGNvdW50ID4gMCAmJiBwb3MgPCAzMjsgY291bnQtLSkgewotCQkJaWYgKHB1dF91c2VyKCprKyssICZyZWdfd2luZG93W3BvcysrXSkpCi0JCQkJcmV0dXJuIC1FRkFVTFQ7CisJCWlmICh0YXJnZXQgPT0gY3VycmVudCkgeworCQkJZm9yICg7IGNvdW50ID4gMCAmJiBwb3MgPCAzMjsgY291bnQtLSkgeworCQkJCWlmIChwdXRfdXNlcigqaysrLCAmcmVnX3dpbmRvd1twb3MrK10pKQorCQkJCQlyZXR1cm4gLUVGQVVMVDsKKwkJCX0KKwkJfSBlbHNlIHsKKwkJCWZvciAoOyBjb3VudCA+IDAgJiYgcG9zIDwgMzI7IGNvdW50LS0pIHsKKwkJCQlpZiAoYWNjZXNzX3Byb2Nlc3Nfdm0odGFyZ2V0LAorCQkJCQkJICAgICAgKHVuc2lnbmVkIGxvbmcpCisJCQkJCQkgICAgICAmcmVnX3dpbmRvd1twb3NdLAorCQkJCQkJICAgICAgKHZvaWQgKikgaywKKwkJCQkJCSAgICAgIHNpemVvZigqayksIDEpCisJCQkJICAgICE9IHNpemVvZigqaykpCisJCQkJCXJldHVybiAtRUZBVUxUOworCQkJCWsrKzsKKwkJCQlwb3MrKzsKKwkJCX0KIAkJfQogCX0gZWxzZSB7CiAJCWZvciAoOyBjb3VudCA+IDAgJiYgcG9zIDwgMTY7IGNvdW50LS0pIHsKQEAgLTQ5MiwxMCArNjIxLDI5IEBACiAJCX0KIAogCQlyZWdfd2luZG93ID0gKGNvbXBhdF91bG9uZ190IF9fdXNlciAqKSByZWdzLT51X3JlZ3NbVVJFR19JNl07Ci0JCWZvciAoOyBjb3VudCA+IDAgJiYgcG9zIDwgMzI7IGNvdW50LS0pIHsKLQkJCWlmIChnZXRfdXNlcihyZWcsIHUrKykgfHwKLQkJCSAgICBwdXRfdXNlcihyZWcsICZyZWdfd2luZG93W3BvcysrXSkpCi0JCQkJcmV0dXJuIC1FRkFVTFQ7CisJCWlmICh0YXJnZXQgPT0gY3VycmVudCkgeworCQkJZm9yICg7IGNvdW50ID4gMCAmJiBwb3MgPCAzMjsgY291bnQtLSkgeworCQkJCWlmIChnZXRfdXNlcihyZWcsIHUrKykgfHwKKwkJCQkgICAgcHV0X3VzZXIocmVnLCAmcmVnX3dpbmRvd1twb3MrK10pKQorCQkJCQlyZXR1cm4gLUVGQVVMVDsKKwkJCX0KKwkJfSBlbHNlIHsKKwkJCWZvciAoOyBjb3VudCA+IDAgJiYgcG9zIDwgMzI7IGNvdW50LS0pIHsKKwkJCQlpZiAoYWNjZXNzX3Byb2Nlc3Nfdm0odGFyZ2V0LAorCQkJCQkJICAgICAgKHVuc2lnbmVkIGxvbmcpCisJCQkJCQkgICAgICB1LAorCQkJCQkJICAgICAgJnJlZywgc2l6ZW9mKHJlZyksIDApCisJCQkJICAgICE9IHNpemVvZihyZWcpKQorCQkJCQlyZXR1cm4gLUVGQVVMVDsKKwkJCQlpZiAoYWNjZXNzX3Byb2Nlc3Nfdm0odGFyZ2V0LAorCQkJCQkJICAgICAgKHVuc2lnbmVkIGxvbmcpCisJCQkJCQkgICAgICAmcmVnX3dpbmRvd1twb3NdLAorCQkJCQkJICAgICAgJnJlZywgc2l6ZW9mKHJlZyksIDEpCisJCQkJICAgICE9IHNpemVvZihyZWcpKQorCQkJCQlyZXR1cm4gLUVGQVVMVDsKKwkJCQlwb3MrKzsKKwkJCQl1Kys7CisJCQl9CiAJCX0KIAl9CiAJd2hpbGUgKGNvdW50ID4gMCkgewpAQCAtNjc2LDE0ICs4MjQsMTggQEAKIAkubmFtZSA9ICJzcGFyYyIsIC5lX21hY2hpbmUgPSBFTV9TUEFSQywKIAkucmVnc2V0cyA9IHNwYXJjMzJfcmVnc2V0cywgLm4gPSBBUlJBWV9TSVpFKHNwYXJjMzJfcmVnc2V0cykKIH07CisjZW5kaWYgLyogQ09ORklHX0NPTVBBVCAqLwogCiBjb25zdCBzdHJ1Y3QgdXNlcl9yZWdzZXRfdmlldyAqdGFza191c2VyX3JlZ3NldF92aWV3KHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaykKIHsKKyNpZmRlZiBDT05GSUdfQ09NUEFUCiAJaWYgKHRlc3RfdHNrX3RocmVhZF9mbGFnKHRhc2ssIFRJRl8zMkJJVCkpCiAJCXJldHVybiAmdXNlcl9zcGFyYzMyX3ZpZXc7CisjZW5kaWYKIAlyZXR1cm4gJnVzZXJfc3BhcmM2NF92aWV3OwogfQogCisjaWZkZWYgQ09ORklHX0NPTVBBVAogc3RydWN0IGNvbXBhdF9mcHMgewogCXVuc2lnbmVkIGludCByZWdzWzMyXTsKIAl1bnNpZ25lZCBpbnQgZnNyOwpAQCAtNjk5LDcgKzg1MSw3IEBACiBsb25nIGNvbXBhdF9hcmNoX3B0cmFjZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKmNoaWxkLCBjb21wYXRfbG9uZ190IHJlcXVlc3QsCiAJCQljb21wYXRfdWxvbmdfdCBjYWRkciwgY29tcGF0X3Vsb25nX3QgY2RhdGEpCiB7Ci0JY29uc3Qgc3RydWN0IHVzZXJfcmVnc2V0X3ZpZXcgKnZpZXcgPSB0YXNrX3VzZXJfcmVnc2V0X3ZpZXcoY2hpbGQpOworCWNvbnN0IHN0cnVjdCB1c2VyX3JlZ3NldF92aWV3ICp2aWV3ID0gdGFza191c2VyX3JlZ3NldF92aWV3KGN1cnJlbnQpOwogCWNvbXBhdF91bG9uZ190IGNhZGRyMiA9IHRhc2tfcHRfcmVncyhjdXJyZW50KS0+dV9yZWdzW1VSRUdfSTRdOwogCXN0cnVjdCBwdF9yZWdzMzIgX191c2VyICpwcmVnczsKIAlzdHJ1Y3QgY29tcGF0X2ZwcyBfX3VzZXIgKmZwczsKQEAgLTc5OCw2ICs5NTAsNyBAQAogCiAJcmV0dXJuIHJldDsKIH0KKyNlbmRpZiAvKiBDT05GSUdfQ09NUEFUICovCiAKIHN0cnVjdCBmcHMgewogCXVuc2lnbmVkIGludCByZWdzWzY0XTsKQEAgLTgwNiwxMiArOTU5LDE1IEBACiAKIGxvbmcgYXJjaF9wdHJhY2Uoc3RydWN0IHRhc2tfc3RydWN0ICpjaGlsZCwgbG9uZyByZXF1ZXN0LCBsb25nIGFkZHIsIGxvbmcgZGF0YSkKIHsKLQljb25zdCBzdHJ1Y3QgdXNlcl9yZWdzZXRfdmlldyAqdmlldyA9IHRhc2tfdXNlcl9yZWdzZXRfdmlldyhjaGlsZCk7Ci0Jc3RydWN0IHB0X3JlZ3MgX191c2VyICpwcmVncyA9IChzdHJ1Y3QgcHRfcmVncyBfX3VzZXIgKikgYWRkcjsKKwljb25zdCBzdHJ1Y3QgdXNlcl9yZWdzZXRfdmlldyAqdmlldyA9IHRhc2tfdXNlcl9yZWdzZXRfdmlldyhjdXJyZW50KTsKIAl1bnNpZ25lZCBsb25nIGFkZHIyID0gdGFza19wdF9yZWdzKGN1cnJlbnQpLT51X3JlZ3NbVVJFR19JNF07Ci0Jc3RydWN0IGZwcyBfX3VzZXIgKmZwcyA9IChzdHJ1Y3QgZnBzIF9fdXNlciAqKSBhZGRyOworCXN0cnVjdCBwdF9yZWdzIF9fdXNlciAqcHJlZ3M7CisJc3RydWN0IGZwcyBfX3VzZXIgKmZwczsKIAlpbnQgcmV0OwogCisJcHJlZ3MgPSAoc3RydWN0IHB0X3JlZ3MgX191c2VyICopICh1bnNpZ25lZCBsb25nKSBhZGRyOworCWZwcyA9IChzdHJ1Y3QgZnBzIF9fdXNlciAqKSAodW5zaWduZWQgbG9uZykgYWRkcjsKKwogCXN3aXRjaCAocmVxdWVzdCkgewogCWNhc2UgUFRSQUNFX1BFRUtVU1I6CiAJCXJldCA9IChhZGRyICE9IDApID8gLUVJTyA6IDA7CmRpZmYgLS1naXQgYS9hcmNoL3NwYXJjNjQva2VybmVsL3NldHVwLmMgYi9hcmNoL3NwYXJjNjQva2VybmVsL3NldHVwLmMKaW5kZXggZDAzNmRiZS4uNmFjYjRjNSAxMDA2NDQKLS0tIGEvYXJjaC9zcGFyYzY0L2tlcm5lbC9zZXR1cC5jCisrKyBiL2FyY2gvc3BhcmM2NC9rZXJuZWwvc2V0dXAuYwpAQCAtNTEsNiArNTEsOCBAQAogI2luY2x1ZGUgPG5ldC9pcGNvbmZpZy5oPgogI2VuZGlmCiAKKyNpbmNsdWRlICJlbnRyeS5oIgorCiAvKiBVc2VkIHRvIHN5bmNocm9uaXplIGFjY2Vzc2VzIHRvIE5hdFNlbWkgU1VQRVIgSS9PIGNoaXAgY29uZmlndXJlCiAgKiBvcGVyYXRpb25zIGluIGFzbS9uczg3MzAzLmgKICAqLwpAQCAtMzM1LDkgKzMzNyw2IEBACiAKIC8qIEJVRkZFUiBpcyBQQUdFX1NJWkUgYnl0ZXMgbG9uZy4gKi8KIAotZXh0ZXJuIGNoYXIgKnNwYXJjX2NwdV90eXBlOwotZXh0ZXJuIGNoYXIgKnNwYXJjX2ZwdV90eXBlOwotCiBleHRlcm4gdm9pZCBzbXBfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKik7CiBleHRlcm4gdm9pZCBzbXBfYm9nbyhzdHJ1Y3Qgc2VxX2ZpbGUgKik7CiBleHRlcm4gdm9pZCBtbXVfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKik7CmRpZmYgLS1naXQgYS9hcmNoL3NwYXJjNjQva2VybmVsL3NpZ25hbC5jIGIvYXJjaC9zcGFyYzY0L2tlcm5lbC9zaWduYWwuYwppbmRleCBmYjEzNzc1Li45ZDUxOTU2IDEwMDY0NAotLS0gYS9hcmNoL3NwYXJjNjQva2VybmVsL3NpZ25hbC5jCisrKyBiL2FyY2gvc3BhcmM2NC9rZXJuZWwvc2lnbmFsLmMKQEAgLTMyLDYgKzMyLDkgQEAKICNpbmNsdWRlIDxhc20vc2lnaW5mby5oPgogI2luY2x1ZGUgPGFzbS92aXNhc20uaD4KIAorI2luY2x1ZGUgImVudHJ5LmgiCisjaW5jbHVkZSAic3lzdGJscy5oIgorCiAjZGVmaW5lIF9CTE9DS0FCTEUgKH4oc2lnbWFzayhTSUdLSUxMKSB8IHNpZ21hc2soU0lHU1RPUCkpKQogCiAvKiB7c2V0LCBnZXR9Y29udGV4dCgpIG5lZWRlZCBmb3IgNjQtYml0IFNwYXJjTGludXggdXNlcmxhbmQuICovCkBAIC0zNTQsNyArMzU3LDcgQEAKIHN0YXRpYyBpbmxpbmUgaW50CiBzYXZlX2ZwdV9zdGF0ZShzdHJ1Y3QgcHRfcmVncyAqcmVncywgX19zaWdpbmZvX2ZwdV90IF9fdXNlciAqZnB1KQogewotCXVuc2lnbmVkIGxvbmcgKmZwcmVncyA9ICh1bnNpZ25lZCBsb25nICopKHJlZ3MrMSk7CisJdW5zaWduZWQgbG9uZyAqZnByZWdzID0gY3VycmVudF90aHJlYWRfaW5mbygpLT5mcHJlZ3M7CiAJdW5zaWduZWQgbG9uZyBmcHJzOwogCWludCBlcnIgPSAwOwogCQpkaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYzY0L2tlcm5lbC9zbXAuYyBiL2FyY2gvc3BhcmM2NC9rZXJuZWwvc21wLmMKaW5kZXggY2M0NTQ3My4uNTlmMDIwZCAxMDA2NDQKLS0tIGEvYXJjaC9zcGFyYzY0L2tlcm5lbC9zbXAuYworKysgYi9hcmNoL3NwYXJjNjQva2VybmVsL3NtcC5jCkBAIC0xLDYgKzEsNiBAQAogLyogc21wLmM6IFNwYXJjNjQgU01QIHN1cHBvcnQuCiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk3LCAyMDA3IERhdmlkIFMuIE1pbGxlciAoZGF2ZW1AZGF2ZW1sb2Z0Lm5ldCkKKyAqIENvcHlyaWdodCAoQykgMTk5NywgMjAwNywgMjAwOCBEYXZpZCBTLiBNaWxsZXIgKGRhdmVtQGRhdmVtbG9mdC5uZXQpCiAgKi8KIAogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPGFzbS9jcHVkYXRhLmg+CiAjaW5jbHVkZSA8YXNtL2h2dHJhbXAuaD4KICNpbmNsdWRlIDxhc20vaW8uaD4KKyNpbmNsdWRlIDxhc20vdGltZXIuaD4KIAogI2luY2x1ZGUgPGFzbS9pcnEuaD4KICNpbmNsdWRlIDxhc20vaXJxX3JlZ3MuaD4KQEAgLTI4NCwxNCArMjg1LDE3IEBACiB7CiAJZXh0ZXJuIHVuc2lnbmVkIGxvbmcgc3BhcmM2NF90dGFibGVfdGwwOwogCWV4dGVybiB1bnNpZ25lZCBsb25nIGtlcm5fbG9ja2VkX3R0ZV9kYXRhOwotCWV4dGVybiBpbnQgYmlna2VybmVsOwogCXN0cnVjdCBodnRyYW1wX2Rlc2NyICpoZGVzYzsKIAl1bnNpZ25lZCBsb25nIHRyYW1wb2xpbmVfcmE7CiAJc3RydWN0IHRyYXBfcGVyX2NwdSAqdGI7CiAJdTY0IHR0ZV92YWRkciwgdHRlX2RhdGE7CiAJdW5zaWduZWQgbG9uZyBodl9lcnI7CisJaW50IGk7CiAKLQloZGVzYyA9IGt6YWxsb2Moc2l6ZW9mKCpoZGVzYyksIEdGUF9LRVJORUwpOworCWhkZXNjID0ga3phbGxvYyhzaXplb2YoKmhkZXNjKSArCisJCQkoc2l6ZW9mKHN0cnVjdCBodnRyYW1wX21hcHBpbmcpICoKKwkJCSBudW1fa2VybmVsX2ltYWdlX21hcHBpbmdzIC0gMSksCisJCQlHRlBfS0VSTkVMKTsKIAlpZiAoIWhkZXNjKSB7CiAJCXByaW50ayhLRVJOX0VSUiAibGRvbV9zdGFydGNwdV9jcHVpZDogQ2Fubm90IGFsbG9jYXRlICIKIAkJICAgICAgICJodnRyYW1wX2Rlc2NyLlxuIik7CkBAIC0yOTksNyArMzAzLDcgQEAKIAl9CiAKIAloZGVzYy0+Y3B1ID0gY3B1OwotCWhkZXNjLT5udW1fbWFwcGluZ3MgPSAoYmlna2VybmVsID8gMiA6IDEpOworCWhkZXNjLT5udW1fbWFwcGluZ3MgPSBudW1fa2VybmVsX2ltYWdlX21hcHBpbmdzOwogCiAJdGIgPSAmdHJhcF9ibG9ja1tjcHVdOwogCXRiLT5oZGVzYyA9IGhkZXNjOwpAQCAtMzEyLDEzICszMTYsMTEgQEAKIAl0dGVfdmFkZHIgPSAodW5zaWduZWQgbG9uZykgS0VSTkJBU0U7CiAJdHRlX2RhdGEgPSBrZXJuX2xvY2tlZF90dGVfZGF0YTsKIAotCWhkZXNjLT5tYXBzWzBdLnZhZGRyID0gdHRlX3ZhZGRyOwotCWhkZXNjLT5tYXBzWzBdLnR0ZSAgID0gdHRlX2RhdGE7Ci0JaWYgKGJpZ2tlcm5lbCkgeworCWZvciAoaSA9IDA7IGkgPCBoZGVzYy0+bnVtX21hcHBpbmdzOyBpKyspIHsKKwkJaGRlc2MtPm1hcHNbaV0udmFkZHIgPSB0dGVfdmFkZHI7CisJCWhkZXNjLT5tYXBzW2ldLnR0ZSAgID0gdHRlX2RhdGE7CiAJCXR0ZV92YWRkciArPSAweDQwMDAwMDsKIAkJdHRlX2RhdGEgICs9IDB4NDAwMDAwOwotCQloZGVzYy0+bWFwc1sxXS52YWRkciA9IHR0ZV92YWRkcjsKLQkJaGRlc2MtPm1hcHNbMV0udHRlICAgPSB0dGVfZGF0YTsKIAl9CiAKIAl0cmFtcG9saW5lX3JhID0ga2ltYWdlX2FkZHJfdG9fcmEoaHZfY3B1X3N0YXJ0dXApOwpkaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYzY0L2tlcm5lbC9zdGFja3RyYWNlLmMgYi9hcmNoL3NwYXJjNjQva2VybmVsL3N0YWNrdHJhY2UuYwppbmRleCA0N2Y5MmE1Li44NGQzOWU4IDEwMDY0NAotLS0gYS9hcmNoL3NwYXJjNjQva2VybmVsL3N0YWNrdHJhY2UuYworKysgYi9hcmNoL3NwYXJjNjQva2VybmVsL3N0YWNrdHJhY2UuYwpAQCAtMiwxMyArMiwxNSBAQAogI2luY2x1ZGUgPGxpbnV4L3N0YWNrdHJhY2UuaD4KICNpbmNsdWRlIDxsaW51eC90aHJlYWRfaW5mby5oPgogI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KKyNpbmNsdWRlIDxhc20vc3RhY2t0cmFjZS5oPgogCiB2b2lkIHNhdmVfc3RhY2tfdHJhY2Uoc3RydWN0IHN0YWNrX3RyYWNlICp0cmFjZSkKIHsKIAl1bnNpZ25lZCBsb25nIGtzcCwgZnAsIHRocmVhZF9iYXNlOwogCXN0cnVjdCB0aHJlYWRfaW5mbyAqdHAgPSB0YXNrX3RocmVhZF9pbmZvKGN1cnJlbnQpOwogCi0JZmx1c2h3X2FsbCgpOworCXN0YWNrX3RyYWNlX2ZsdXNoKCk7CisKIAlfX2FzbV9fIF9fdm9sYXRpbGVfXygKIAkJIm1vdgklJWZwLCAlMCIKIAkJOiAiPXIiIChrc3ApCmRpZmYgLS1naXQgYS9hcmNoL3NwYXJjNjQva2VybmVsL3N5c19zcGFyYy5jIGIvYXJjaC9zcGFyYzY0L2tlcm5lbC9zeXNfc3BhcmMuYwppbmRleCAxMzRkODAxLi5mOTUyNzQ1IDEwMDY0NAotLS0gYS9hcmNoL3NwYXJjNjQva2VybmVsL3N5c19zcGFyYy5jCisrKyBiL2FyY2gvc3BhcmM2NC9rZXJuZWwvc3lzX3NwYXJjLmMKQEAgLTEsNSArMSw0IEBACi0vKiAkSWQ6IHN5c19zcGFyYy5jLHYgMS41NyAyMDAyLzAyLzA5IDE5OjQ5OjMwIGRhdmVtIEV4cCAkCi0gKiBsaW51eC9hcmNoL3NwYXJjNjQva2VybmVsL3N5c19zcGFyYy5jCisvKiBsaW51eC9hcmNoL3NwYXJjNjQva2VybmVsL3N5c19zcGFyYy5jCiAgKgogICogVGhpcyBmaWxlIGNvbnRhaW5zIHZhcmlvdXMgcmFuZG9tIHN5c3RlbSBjYWxscyB0aGF0CiAgKiBoYXZlIGEgbm9uLXN0YW5kYXJkIGNhbGxpbmcgc2VxdWVuY2Ugb24gdGhlIExpbnV4L3NwYXJjCkBAIC0zMCw2ICsyOSw5IEBACiAjaW5jbHVkZSA8YXNtL3BlcmZjdHIuaD4KICNpbmNsdWRlIDxhc20vdW5pc3RkLmg+CiAKKyNpbmNsdWRlICJlbnRyeS5oIgorI2luY2x1ZGUgInN5c3RibHMuaCIKKwogLyogI2RlZmluZSBERUJVR19VTklNUF9TWVNDQUxMICovCiAKIGFzbWxpbmthZ2UgdW5zaWduZWQgbG9uZyBzeXNfZ2V0cGFnZXNpemUodm9pZCkKQEAgLTQ0NSw3ICs0NDcsOCBAQAogCQkJZ290byBvdXQ7CiAJCWNhc2UgU0VNVElNRURPUDoKIAkJCWVyciA9IHN5c19zZW10aW1lZG9wKGZpcnN0LCBwdHIsICh1bnNpZ25lZClzZWNvbmQsCi0JCQkJKGNvbnN0IHN0cnVjdCB0aW1lc3BlYyBfX3VzZXIgKikgZmlmdGgpOworCQkJCShjb25zdCBzdHJ1Y3QgdGltZXNwZWMgX191c2VyICopCisJCQkJCSAgICAgKHVuc2lnbmVkIGxvbmcpIGZpZnRoKTsKIAkJCWdvdG8gb3V0OwogCQljYXNlIFNFTUdFVDoKIAkJCWVyciA9IHN5c19zZW1nZXQoZmlyc3QsIChpbnQpc2Vjb25kLCAoaW50KXRoaXJkKTsKQEAgLTc4OCw3ICs3OTEsNyBAQAogCX0gZWxzZSB7CiAJCWlmICgodXRyYXBfaGFuZGxlcl90KWN1cnJlbnRfdGhyZWFkX2luZm8oKS0+dXRyYXBzW3R5cGVdICE9IG5ld19wICYmCiAJCSAgICBjdXJyZW50X3RocmVhZF9pbmZvKCktPnV0cmFwc1swXSA+IDEpIHsKLQkJCWxvbmcgKnAgPSBjdXJyZW50X3RocmVhZF9pbmZvKCktPnV0cmFwczsKKwkJCXVuc2lnbmVkIGxvbmcgKnAgPSBjdXJyZW50X3RocmVhZF9pbmZvKCktPnV0cmFwczsKIAogCQkJY3VycmVudF90aHJlYWRfaW5mbygpLT51dHJhcHMgPQogCQkJCWttYWxsb2MoKFVUX1RSQVBfSU5TVFJVQ1RJT05fMzErMSkqc2l6ZW9mKGxvbmcpLApAQCAtODE2LDcgKzgxOSw4IEBACiAJcmV0dXJuIDA7CiB9CiAKLWxvbmcgc3BhcmNfbWVtb3J5X29yZGVyaW5nKHVuc2lnbmVkIGxvbmcgbW9kZWwsIHN0cnVjdCBwdF9yZWdzICpyZWdzKQorYXNtbGlua2FnZSBsb25nIHNwYXJjX21lbW9yeV9vcmRlcmluZyh1bnNpZ25lZCBsb25nIG1vZGVsLAorCQkJCSAgICAgIHN0cnVjdCBwdF9yZWdzICpyZWdzKQogewogCWlmIChtb2RlbCA+PSAzKQogCQlyZXR1cm4gLUVJTlZBTDsKZGlmZiAtLWdpdCBhL2FyY2gvc3BhcmM2NC9rZXJuZWwvc3lzX3NwYXJjMzIuYyBiL2FyY2gvc3BhcmM2NC9rZXJuZWwvc3lzX3NwYXJjMzIuYwppbmRleCBkZWFiYTJiZC4uMjQ1NWZhNCAxMDA2NDQKLS0tIGEvYXJjaC9zcGFyYzY0L2tlcm5lbC9zeXNfc3BhcmMzMi5jCisrKyBiL2FyY2gvc3BhcmM2NC9rZXJuZWwvc3lzX3NwYXJjMzIuYwpAQCAtNjc4LDkgKzY3OCw2IEBACiAJCWN1cnJlbnRfdGhyZWFkX2luZm8oKS0+eGZzclswXSA9IDA7CiAJCWN1cnJlbnRfdGhyZWFkX2luZm8oKS0+ZnBzYXZlZFswXSA9IDA7CiAJCXJlZ3MtPnRzdGF0ZSAmPSB+VFNUQVRFX1BFRjsKLQkJdGFza19sb2NrKGN1cnJlbnQpOwotCQljdXJyZW50LT5wdHJhY2UgJj0gflBUX0RUUkFDRTsKLQkJdGFza191bmxvY2soY3VycmVudCk7CiAJfQogb3V0OgogCXJldHVybiBlcnJvcjsKZGlmZiAtLWdpdCBhL2FyY2gvc3BhcmM2NC9rZXJuZWwvc3lzX3N1bm9zMzIuYyBiL2FyY2gvc3BhcmM2NC9rZXJuZWwvc3lzX3N1bm9zMzIuYwppbmRleCBjZmMyMmQzLi5lOTExOTRmIDEwMDY0NAotLS0gYS9hcmNoL3NwYXJjNjQva2VybmVsL3N5c19zdW5vczMyLmMKKysrIGIvYXJjaC9zcGFyYzY0L2tlcm5lbC9zeXNfc3Vub3MzMi5jCkBAIC02MTgsNyArNjE4LDcgQEAKIAogCXNvY2tldCA9IFNPQ0tFVF9JKGlub2RlKTsKIAlsb2NhbC5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKLQlsb2NhbC5zaW5fYWRkci5zX2FkZHIgPSBJTkFERFJfQU5ZOworCWxvY2FsLnNpbl9hZGRyLnNfYWRkciA9IGh0b25sKElOQUREUl9BTlkpOwogCiAJLyogSVBQT1JUX1JFU0VSVkVEID0gMTAyNCwgY2FuJ3QgZmluZCB0aGUgZGVmaW5pdGlvbiBpbiB0aGUga2VybmVsICovCiAJdHJ5X3BvcnQgPSAxMDI0OwpkaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYzY0L2tlcm5lbC9zeXN0YmxzLmggYi9hcmNoL3NwYXJjNjQva2VybmVsL3N5c3RibHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTBkMjBhCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9zcGFyYzY0L2tlcm5lbC9zeXN0YmxzLmgKQEAgLTAsMCArMSw1MyBAQAorI2lmbmRlZiBfU1lTVEJMU19ICisjZGVmaW5lIF9TWVNUQkxTX0gKKworI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisjaW5jbHVkZSA8bGludXgvdXRzbmFtZS5oPgorI2luY2x1ZGUgPGFzbS91dHJhcC5oPgorI2luY2x1ZGUgPGFzbS9zaWduYWwuaD4KKworZXh0ZXJuIGFzbWxpbmthZ2UgdW5zaWduZWQgbG9uZyBzeXNfZ2V0cGFnZXNpemUodm9pZCk7CitleHRlcm4gYXNtbGlua2FnZSB1bnNpZ25lZCBsb25nIHNwYXJjX2Jyayh1bnNpZ25lZCBsb25nIGJyayk7CitleHRlcm4gYXNtbGlua2FnZSBsb25nIHNwYXJjX3BpcGUoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOworZXh0ZXJuIGFzbWxpbmthZ2UgbG9uZyBzeXNfaXBjKHVuc2lnbmVkIGludCBjYWxsLCBpbnQgZmlyc3QsCisJCQkgICAgICAgdW5zaWduZWQgbG9uZyBzZWNvbmQsCisJCQkgICAgICAgdW5zaWduZWQgbG9uZyB0aGlyZCwKKwkJCSAgICAgICB2b2lkIF9fdXNlciAqcHRyLCBsb25nIGZpZnRoKTsKK2V4dGVybiBhc21saW5rYWdlIGxvbmcgc3BhcmM2NF9uZXd1bmFtZShzdHJ1Y3QgbmV3X3V0c25hbWUgX191c2VyICpuYW1lKTsKK2V4dGVybiBhc21saW5rYWdlIGxvbmcgc3BhcmM2NF9wZXJzb25hbGl0eSh1bnNpZ25lZCBsb25nIHBlcnNvbmFsaXR5KTsKK2V4dGVybiBhc21saW5rYWdlIHVuc2lnbmVkIGxvbmcgc3lzX21tYXAodW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIGxlbiwKKwkJCQkJIHVuc2lnbmVkIGxvbmcgcHJvdCwgdW5zaWduZWQgbG9uZyBmbGFncywKKwkJCQkJIHVuc2lnbmVkIGxvbmcgZmQsIHVuc2lnbmVkIGxvbmcgb2ZmKTsKK2V4dGVybiBhc21saW5rYWdlIGxvbmcgc3lzNjRfbXVubWFwKHVuc2lnbmVkIGxvbmcgYWRkciwgc2l6ZV90IGxlbik7CitleHRlcm4gYXNtbGlua2FnZSB1bnNpZ25lZCBsb25nIHN5czY0X21yZW1hcCh1bnNpZ25lZCBsb25nIGFkZHIsCisJCQkJCSAgICAgdW5zaWduZWQgbG9uZyBvbGRfbGVuLAorCQkJCQkgICAgIHVuc2lnbmVkIGxvbmcgbmV3X2xlbiwKKwkJCQkJICAgICB1bnNpZ25lZCBsb25nIGZsYWdzLAorCQkJCQkgICAgIHVuc2lnbmVkIGxvbmcgbmV3X2FkZHIpOworZXh0ZXJuIGFzbWxpbmthZ2UgdW5zaWduZWQgbG9uZyBjX3N5c19uaXNfc3lzY2FsbChzdHJ1Y3QgcHRfcmVncyAqcmVncyk7CitleHRlcm4gYXNtbGlua2FnZSBsb25nIHN5c19nZXRkb21haW5uYW1lKGNoYXIgX191c2VyICpuYW1lLCBpbnQgbGVuKTsKK2V4dGVybiBhc21saW5rYWdlIGxvbmcgc29sYXJpc19zeXNjYWxsKHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKK2V4dGVybiBhc21saW5rYWdlIGxvbmcgc3Vub3Nfc3lzY2FsbChzdHJ1Y3QgcHRfcmVncyAqcmVncyk7CitleHRlcm4gYXNtbGlua2FnZSBsb25nIHN5c191dHJhcF9pbnN0YWxsKHV0cmFwX2VudHJ5X3QgdHlwZSwKKwkJCQkJIHV0cmFwX2hhbmRsZXJfdCBuZXdfcCwKKwkJCQkJIHV0cmFwX2hhbmRsZXJfdCBuZXdfZCwKKwkJCQkJIHV0cmFwX2hhbmRsZXJfdCBfX3VzZXIgKm9sZF9wLAorCQkJCQkgdXRyYXBfaGFuZGxlcl90IF9fdXNlciAqb2xkX2QpOworZXh0ZXJuIGFzbWxpbmthZ2UgbG9uZyBzcGFyY19tZW1vcnlfb3JkZXJpbmcodW5zaWduZWQgbG9uZyBtb2RlbCwKKwkJCQkJICAgICBzdHJ1Y3QgcHRfcmVncyAqcmVncyk7CitleHRlcm4gYXNtbGlua2FnZSBsb25nIHN5c19ydF9zaWdhY3Rpb24oaW50IHNpZywKKwkJCQkJY29uc3Qgc3RydWN0IHNpZ2FjdGlvbiBfX3VzZXIgKmFjdCwKKwkJCQkJc3RydWN0IHNpZ2FjdGlvbiBfX3VzZXIgKm9hY3QsCisJCQkJCXZvaWQgX191c2VyICpyZXN0b3JlciwKKwkJCQkJc2l6ZV90IHNpZ3NldHNpemUpOworZXh0ZXJuIGFzbWxpbmthZ2UgbG9uZyBzeXNfcGVyZmN0cihpbnQgb3Bjb2RlLCB1bnNpZ25lZCBsb25nIGFyZzAsCisJCQkJICAgdW5zaWduZWQgbG9uZyBhcmcxLCB1bnNpZ25lZCBsb25nIGFyZzIpOworCitleHRlcm4gYXNtbGlua2FnZSB2b2lkIHNwYXJjNjRfc2V0X2NvbnRleHQoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOworZXh0ZXJuIGFzbWxpbmthZ2Ugdm9pZCBzcGFyYzY0X2dldF9jb250ZXh0KHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKK2V4dGVybiBhc21saW5rYWdlIGxvbmcgc3lzX3NpZ3BhdXNlKHVuc2lnbmVkIGludCBzZXQpOworZXh0ZXJuIGFzbWxpbmthZ2UgbG9uZyBzeXNfc2lnc3VzcGVuZChvbGRfc2lnc2V0X3Qgc2V0KTsKK2V4dGVybiB2b2lkIGRvX3J0X3NpZ3JldHVybihzdHJ1Y3QgcHRfcmVncyAqcmVncyk7CisKKyNlbmRpZiAvKiBfU1lTVEJMU19IICovCmRpZmYgLS1naXQgYS9hcmNoL3NwYXJjNjQva2VybmVsL3RpbWUuYyBiL2FyY2gvc3BhcmM2NC9rZXJuZWwvdGltZS5jCmluZGV4IGQyMDRmMWEuLmU1ZDIzODkgMTAwNjQ0Ci0tLSBhL2FyY2gvc3BhcmM2NC9rZXJuZWwvdGltZS5jCisrKyBiL2FyY2gvc3BhcmM2NC9rZXJuZWwvdGltZS5jCkBAIC0xLDcgKzEsNiBAQAotLyogJElkOiB0aW1lLmMsdiAxLjQyIDIwMDIvMDEvMjMgMTQ6MzM6NTUgZGF2ZW0gRXhwICQKLSAqIHRpbWUuYzogVWx0cmFTcGFyYyB0aW1lciBhbmQgVE9EIGNsb2NrIHN1cHBvcnQuCisvKiB0aW1lLmM6IFVsdHJhU3BhcmMgdGltZXIgYW5kIFRPRCBjbG9jayBzdXBwb3J0LgogICoKLSAqIENvcHlyaWdodCAoQykgMTk5NyBEYXZpZCBTLiBNaWxsZXIgKGRhdmVtQGNhaXAucnV0Z2Vycy5lZHUpCisgKiBDb3B5cmlnaHQgKEMpIDE5OTcsIDIwMDggRGF2aWQgUy4gTWlsbGVyIChkYXZlbUBkYXZlbWxvZnQubmV0KQogICogQ29weXJpZ2h0IChDKSAxOTk4IEVkZGllIEMuIERvc3QgICAoZWNkQHNreW5ldC5iZSkKICAqCiAgKiBCYXNlZCBsYXJnZWx5IG9uIGNvZGUgd2hpY2ggaXM6CkBAIC00OCw2ICs0Nyw4IEBACiAjaW5jbHVkZSA8YXNtL3VhY2Nlc3MuaD4KICNpbmNsdWRlIDxhc20vaXJxX3JlZ3MuaD4KIAorI2luY2x1ZGUgImVudHJ5LmgiCisKIERFRklORV9TUElOTE9DSyhtb3N0ZWtfbG9jayk7CiBERUZJTkVfU1BJTkxPQ0socnRjX2xvY2spOwogdm9pZCBfX2lvbWVtICptc3RrNDh0MDJfcmVncyA9IE5VTEw7CkBAIC01MDgsNiArNTA5LDM3IEBACiAJcmV0dXJuIChkYXRhMSA9PSBkYXRhMik7CS8qIFdhcyB0aGUgd3JpdGUgYmxvY2tlZD8gKi8KIH0KIAorc3RhdGljIHZvaWQgX19pbml0IG1vc3Rla19zZXRfc3lzdGVtX3RpbWUodm9pZCBfX2lvbWVtICptcmVncykKK3sKKwl1bnNpZ25lZCBpbnQgeWVhciwgbW9uLCBkYXksIGhvdXIsIG1pbiwgc2VjOworCXU4IHRtcDsKKworCXNwaW5fbG9ja19pcnEoJm1vc3Rla19sb2NrKTsKKworCS8qIFRyYWRpdGlvbmFsIE1vc3RlayBjaGlwLiAqLworCXRtcCA9IG1vc3Rla19yZWFkKG1yZWdzICsgTU9TVEVLX0NSRUcpOworCXRtcCB8PSBNU1RLX0NSRUdfUkVBRDsKKwltb3N0ZWtfd3JpdGUobXJlZ3MgKyBNT1NURUtfQ1JFRywgdG1wKTsKKworCXNlYyA9IE1TVEtfUkVHX1NFQyhtcmVncyk7CisJbWluID0gTVNUS19SRUdfTUlOKG1yZWdzKTsKKwlob3VyID0gTVNUS19SRUdfSE9VUihtcmVncyk7CisJZGF5ID0gTVNUS19SRUdfRE9NKG1yZWdzKTsKKwltb24gPSBNU1RLX1JFR19NT05USChtcmVncyk7CisJeWVhciA9IE1TVEtfQ1ZUX1lFQVIoIE1TVEtfUkVHX1lFQVIobXJlZ3MpICk7CisKKwl4dGltZS50dl9zZWMgPSBta3RpbWUoeWVhciwgbW9uLCBkYXksIGhvdXIsIG1pbiwgc2VjKTsKKwl4dGltZS50dl9uc2VjID0gKElOSVRJQUxfSklGRklFUyAlIEhaKSAqIChOU0VDX1BFUl9TRUMgLyBIWik7CisJc2V0X25vcm1hbGl6ZWRfdGltZXNwZWMoJndhbGxfdG9fbW9ub3RvbmljLAorIAkgICAgICAgICAgICAgICAgICAgICAgICAteHRpbWUudHZfc2VjLCAteHRpbWUudHZfbnNlYyk7CisKKwl0bXAgPSBtb3N0ZWtfcmVhZChtcmVncyArIE1PU1RFS19DUkVHKTsKKwl0bXAgJj0gfk1TVEtfQ1JFR19SRUFEOworCW1vc3Rla193cml0ZShtcmVncyArIE1PU1RFS19DUkVHLCB0bXApOworCisJc3Bpbl91bmxvY2tfaXJxKCZtb3N0ZWtfbG9jayk7Cit9CisKIC8qIFByb2JlIGZvciB0aGUgcmVhbCB0aW1lIGNsb2NrIGNoaXAuICovCiBzdGF0aWMgdm9pZCBfX2luaXQgc2V0X3N5c3RlbV90aW1lKHZvaWQpCiB7CkBAIC01MjAsNyArNTUyLDYgQEAKIAl1bnNpZ25lZCBsb25nIGRyZWdzID0gMFVMOwogCXZvaWQgX19pb21lbSAqYnJlZ3MgPSAwVUw7CiAjZW5kaWYKLQl1OCB0bXA7CiAKIAlpZiAoIW1yZWdzICYmICFkcmVncyAmJiAhYnJlZ3MpIHsKIAkJcHJvbV9wcmludGYoIlNvbWV0aGluZyB3cm9uZywgY2xvY2sgcmVncyBub3QgbWFwcGVkIHlldC5cbiIpOwpAQCAtNTI4LDIwICs1NTksMTEgQEAKIAl9CQkKIAogCWlmIChtcmVncykgewotCQlzcGluX2xvY2tfaXJxKCZtb3N0ZWtfbG9jayk7CisJCW1vc3Rla19zZXRfc3lzdGVtX3RpbWUobXJlZ3MpOworCQlyZXR1cm47CisJfQogCi0JCS8qIFRyYWRpdGlvbmFsIE1vc3RlayBjaGlwLiAqLwotCQl0bXAgPSBtb3N0ZWtfcmVhZChtcmVncyArIE1PU1RFS19DUkVHKTsKLQkJdG1wIHw9IE1TVEtfQ1JFR19SRUFEOwotCQltb3N0ZWtfd3JpdGUobXJlZ3MgKyBNT1NURUtfQ1JFRywgdG1wKTsKLQotCQlzZWMgPSBNU1RLX1JFR19TRUMobXJlZ3MpOwotCQltaW4gPSBNU1RLX1JFR19NSU4obXJlZ3MpOwotCQlob3VyID0gTVNUS19SRUdfSE9VUihtcmVncyk7Ci0JCWRheSA9IE1TVEtfUkVHX0RPTShtcmVncyk7Ci0JCW1vbiA9IE1TVEtfUkVHX01PTlRIKG1yZWdzKTsKLQkJeWVhciA9IE1TVEtfQ1ZUX1lFQVIoIE1TVEtfUkVHX1lFQVIobXJlZ3MpICk7Ci0JfSBlbHNlIGlmIChicmVncykgeworCWlmIChicmVncykgewogCQl1bnNpZ25lZCBjaGFyIHZhbCA9IHJlYWRiKGJyZWdzICsgMHgwZSk7CiAJCXVuc2lnbmVkIGludCBjZW50dXJ5OwogCkBAIC01OTYsMTQgKzYxOCw2IEBACiAJeHRpbWUudHZfbnNlYyA9IChJTklUSUFMX0pJRkZJRVMgJSBIWikgKiAoTlNFQ19QRVJfU0VDIC8gSFopOwogCXNldF9ub3JtYWxpemVkX3RpbWVzcGVjKCZ3YWxsX3RvX21vbm90b25pYywKICAJICAgICAgICAgICAgICAgICAgICAgICAgLXh0aW1lLnR2X3NlYywgLXh0aW1lLnR2X25zZWMpOwotCi0JaWYgKG1yZWdzKSB7Ci0JCXRtcCA9IG1vc3Rla19yZWFkKG1yZWdzICsgTU9TVEVLX0NSRUcpOwotCQl0bXAgJj0gfk1TVEtfQ1JFR19SRUFEOwotCQltb3N0ZWtfd3JpdGUobXJlZ3MgKyBNT1NURUtfQ1JFRywgdG1wKTsKLQotCQlzcGluX3VubG9ja19pcnEoJm1vc3Rla19sb2NrKTsKLQl9CiB9CiAKIC8qIGRhdmVtIHN1Z2dlc3RzIHdlIGtlZXAgdGhpcyB3aXRoaW4gdGhlIDRNIGxvY2tlZCBrZXJuZWwgaW1hZ2UgKi8KQEAgLTEwMjcsNyArMTA0MSw3IEBACiAJc2V0dXBfY2xvY2tldmVudF9tdWx0aXBsaWVyKGNsb2NrKTsKIAogCXNwYXJjNjRfY2xvY2tldmVudC5tYXhfZGVsdGFfbnMgPQotCQljbG9ja2V2ZW50X2RlbHRhMm5zKDB4N2ZmZmZmZmZmZmZmZmZmZiwgJnNwYXJjNjRfY2xvY2tldmVudCk7CisJCWNsb2NrZXZlbnRfZGVsdGEybnMoMHg3ZmZmZmZmZmZmZmZmZmZmVUwsICZzcGFyYzY0X2Nsb2NrZXZlbnQpOwogCXNwYXJjNjRfY2xvY2tldmVudC5taW5fZGVsdGFfbnMgPQogCQljbG9ja2V2ZW50X2RlbHRhMm5zKDB4RiwgJnNwYXJjNjRfY2xvY2tldmVudCk7CiAKZGlmZiAtLWdpdCBhL2FyY2gvc3BhcmM2NC9rZXJuZWwvdHJhbXBvbGluZS5TIGIvYXJjaC9zcGFyYzY0L2tlcm5lbC90cmFtcG9saW5lLlMKaW5kZXggNGFlMmU1Mi4uNTZmZjU1MiAxMDA2NDQKLS0tIGEvYXJjaC9zcGFyYzY0L2tlcm5lbC90cmFtcG9saW5lLlMKKysrIGIvYXJjaC9zcGFyYzY0L2tlcm5lbC90cmFtcG9saW5lLlMKQEAgLTEwNSw3ICsxMDUsNyBAQAogCXdyCQklZzIsIDAsICV0aWNrX2NtcHIKIAogCS8qIENhbGwgT0JQIGJ5IGhhbmQgdG8gbG9jayBLRVJOQkFTRSBpbnRvIGkvZCB0bGJzLgotCSAqIFdlIGxvY2sgMiBjb25zZXF1ZXRpdmUgZW50cmllcyBpZiB3ZSBhcmUgJ2JpZ2tlcm5lbCcuCisJICogV2UgbG9jayAnbnVtX2tlcm5lbF9pbWFnZV9tYXBwaW5ncycgY29uc2VxdWV0aXZlIGVudHJpZXMuCiAJICovCiAJc2V0aGkJCSVoaShwcm9tX2VudHJ5X2xvY2spLCAlZzIKIDE6CWxkc3R1YgkJWyVnMiArICVsbyhwcm9tX2VudHJ5X2xvY2spXSwgJWcxCkBAIC0xMTksNiArMTE5LDI5IEBACiAJYWRkCQklbDIsIC0oMTkyICsgMTI4KSwgJXNwCiAJZmx1c2h3CiAKKwkvKiBTZXR1cCB0aGUgbG9vcCB2YXJpYWJsZXM6CisJICogJWwzOiBWQUREUiBiYXNlCisJICogJWw0OiBUVEUgYmFzZQorCSAqICVsNTogTG9vcCBpdGVyYXRvciwgaXRlcmF0ZXMgZnJvbSAwIHRvICdudW1fa2VybmVsX2ltYWdlX21hcHBpbmdzJworCSAqICVsNjogTnVtYmVyIG9mIFRURSBlbnRyaWVzIHRvIG1hcAorCSAqICVsNzogSGlnaGVzdCBUVEUgZW50cnkgbnVtYmVyLCB3ZSBjb3VudCBkb3duCisJICovCisJc2V0aGkJCSVoaShLRVJOQkFTRSksICVsMworCXNldGhpCQklaGkoa2Vybl9sb2NrZWRfdHRlX2RhdGEpLCAlbDQKKwlsZHgJCVslbDQgKyAlbG8oa2Vybl9sb2NrZWRfdHRlX2RhdGEpXSwgJWw0CisJY2xyCQklbDUKKwlzZXRoaQkJJWhpKG51bV9rZXJuZWxfaW1hZ2VfbWFwcGluZ3MpLCAlbDYKKwlsZHV3CQlbJWw2ICsgJWxvKG51bV9rZXJuZWxfaW1hZ2VfbWFwcGluZ3MpXSwgJWw2CisJYWRkCQklbDYsIDEsICVsNgorCisJbW92CQkxNSwgJWw3CisJQlJBTkNIX0lGX0FOWV9DSEVFVEFIKGcxLGc1LDJmKQorCisJbW92CQk2MywgJWw3CisyOgorCiszOgorCS8qIExvY2sgaW50byBJLU1NVSAqLwogCXNldGhpCQklaGkoY2FsbF9tZXRob2QpLCAlZzIKIAlvcgkJJWcyLCAlbG8oY2FsbF9tZXRob2QpLCAlZzIKIAlzdHgJCSVnMiwgWyVzcCArIDIwNDcgKyAxMjggKyAweDAwXQpAQCAtMTMyLDYzICsxNTUsMjYgQEAKIAlzZXRoaQkJJWhpKHByb21fbW11X2loYW5kbGVfY2FjaGUpLCAlZzIKIAlsZHV3CQlbJWcyICsgJWxvKHByb21fbW11X2loYW5kbGVfY2FjaGUpXSwgJWcyCiAJc3R4CQklZzIsIFslc3AgKyAyMDQ3ICsgMTI4ICsgMHgyMF0KLQlzZXRoaQkJJWhpKEtFUk5CQVNFKSwgJWcyCi0Jc3R4CQklZzIsIFslc3AgKyAyMDQ3ICsgMTI4ICsgMHgyOF0KLQlzZXRoaQkJJWhpKGtlcm5fbG9ja2VkX3R0ZV9kYXRhKSwgJWcyCi0JbGR4CQlbJWcyICsgJWxvKGtlcm5fbG9ja2VkX3R0ZV9kYXRhKV0sICVnMgotCXN0eAkJJWcyLCBbJXNwICsgMjA0NyArIDEyOCArIDB4MzBdCiAKLQltb3YJCTE1LCAlZzIKLQlCUkFOQ0hfSUZfQU5ZX0NIRUVUQUgoZzEsZzUsMWYpCisJLyogRWFjaCBUVEUgbWFwcyA0TUIsIGNvbnZlcnQgaW5kZXggdG8gb2Zmc2V0LiAgKi8KKwlzbGx4CQklbDUsIDIyLCAlZzEKIAotCW1vdgkJNjMsICVnMgotMToKKwlhZGQJCSVsMywgJWcxLCAlZzIKKwlzdHgJCSVnMiwgWyVzcCArIDIwNDcgKyAxMjggKyAweDI4XQkhIFZBRERSCisJYWRkCQklbDQsICVnMSwgJWcyCisJc3R4CQklZzIsIFslc3AgKyAyMDQ3ICsgMTI4ICsgMHgzMF0JISBUVEUKKworCS8qIFRURSBpbmRleCBpcyBoaWdoZXN0IG1pbnVzIGxvb3AgaW5kZXguICAqLworCXN1YgkJJWw3LCAlbDUsICVnMgogCXN0eAkJJWcyLCBbJXNwICsgMjA0NyArIDEyOCArIDB4MzhdCisKIAlzZXRoaQkJJWhpKHAxMjc1YnVmKSwgJWcyCiAJb3IJCSVnMiwgJWxvKHAxMjc1YnVmKSwgJWcyCiAJbGR4CQlbJWcyICsgMHgwOF0sICVvMQogCWNhbGwJCSVvMQogCSBhZGQJCSVzcCwgKDIwNDcgKyAxMjgpLCAlbzAKIAotCXNldGhpCQklaGkoYmlna2VybmVsKSwgJWcyCi0JbGR1dwkJWyVnMiArICVsbyhiaWdrZXJuZWwpXSwgJWcyCi0JYnJ6LHB0CQklZzIsIGRvX2R0bGIKLQkgbm9wCi0KLQlzZXRoaQkJJWhpKGNhbGxfbWV0aG9kKSwgJWcyCi0Jb3IJCSVnMiwgJWxvKGNhbGxfbWV0aG9kKSwgJWcyCi0Jc3R4CQklZzIsIFslc3AgKyAyMDQ3ICsgMTI4ICsgMHgwMF0KLQltb3YJCTUsICVnMgotCXN0eAkJJWcyLCBbJXNwICsgMjA0NyArIDEyOCArIDB4MDhdCi0JbW92CQkxLCAlZzIKLQlzdHgJCSVnMiwgWyVzcCArIDIwNDcgKyAxMjggKyAweDEwXQotCXNldGhpCQklaGkoaXRsYl9sb2FkKSwgJWcyCi0Jb3IJCSVnMiwgJWxvKGl0bGJfbG9hZCksICVnMgotCXN0eAkJJWcyLCBbJXNwICsgMjA0NyArIDEyOCArIDB4MThdCi0Jc2V0aGkJCSVoaShwcm9tX21tdV9paGFuZGxlX2NhY2hlKSwgJWcyCi0JbGR1dwkJWyVnMiArICVsbyhwcm9tX21tdV9paGFuZGxlX2NhY2hlKV0sICVnMgotCXN0eAkJJWcyLCBbJXNwICsgMjA0NyArIDEyOCArIDB4MjBdCi0Jc2V0aGkJCSVoaShLRVJOQkFTRSArIDB4NDAwMDAwKSwgJWcyCi0Jc3R4CQklZzIsIFslc3AgKyAyMDQ3ICsgMTI4ICsgMHgyOF0KLQlzZXRoaQkJJWhpKGtlcm5fbG9ja2VkX3R0ZV9kYXRhKSwgJWcyCi0JbGR4CQlbJWcyICsgJWxvKGtlcm5fbG9ja2VkX3R0ZV9kYXRhKV0sICVnMgotCXNldGhpCQklaGkoMHg0MDAwMDApLCAlZzEKLQlhZGQJCSVnMiwgJWcxLCAlZzIKLQlzdHgJCSVnMiwgWyVzcCArIDIwNDcgKyAxMjggKyAweDMwXQotCi0JbW92CQkxNCwgJWcyCi0JQlJBTkNIX0lGX0FOWV9DSEVFVEFIKGcxLGc1LDFmKQotCi0JbW92CQk2MiwgJWcyCi0xOgotCXN0eAkJJWcyLCBbJXNwICsgMjA0NyArIDEyOCArIDB4MzhdCi0Jc2V0aGkJCSVoaShwMTI3NWJ1ZiksICVnMgotCW9yCQklZzIsICVsbyhwMTI3NWJ1ZiksICVnMgotCWxkeAkJWyVnMiArIDB4MDhdLCAlbzEKLQljYWxsCQklbzEKLQkgYWRkCQklc3AsICgyMDQ3ICsgMTI4KSwgJW8wCi0KLWRvX2R0bGI6CisJLyogTG9jayBpbnRvIEQtTU1VICovCiAJc2V0aGkJCSVoaShjYWxsX21ldGhvZCksICVnMgogCW9yCQklZzIsICVsbyhjYWxsX21ldGhvZCksICVnMgogCXN0eAkJJWcyLCBbJXNwICsgMjA0NyArIDEyOCArIDB4MDBdCkBAIC0yMDIsNjUgKzE4OCwzMCBAQAogCXNldGhpCQklaGkocHJvbV9tbXVfaWhhbmRsZV9jYWNoZSksICVnMgogCWxkdXcJCVslZzIgKyAlbG8ocHJvbV9tbXVfaWhhbmRsZV9jYWNoZSldLCAlZzIKIAlzdHgJCSVnMiwgWyVzcCArIDIwNDcgKyAxMjggKyAweDIwXQotCXNldGhpCQklaGkoS0VSTkJBU0UpLCAlZzIKLQlzdHgJCSVnMiwgWyVzcCArIDIwNDcgKyAxMjggKyAweDI4XQotCXNldGhpCQklaGkoa2Vybl9sb2NrZWRfdHRlX2RhdGEpLCAlZzIKLQlsZHgJCVslZzIgKyAlbG8oa2Vybl9sb2NrZWRfdHRlX2RhdGEpXSwgJWcyCi0Jc3R4CQklZzIsIFslc3AgKyAyMDQ3ICsgMTI4ICsgMHgzMF0KIAotCW1vdgkJMTUsICVnMgotCUJSQU5DSF9JRl9BTllfQ0hFRVRBSChnMSxnNSwxZikKKwkvKiBFYWNoIFRURSBtYXBzIDRNQiwgY29udmVydCBpbmRleCB0byBvZmZzZXQuICAqLworCXNsbHgJCSVsNSwgMjIsICVnMQogCi0JbW92CQk2MywgJWcyCi0xOgorCWFkZAkJJWwzLCAlZzEsICVnMgorCXN0eAkJJWcyLCBbJXNwICsgMjA0NyArIDEyOCArIDB4MjhdCSEgVkFERFIKKwlhZGQJCSVsNCwgJWcxLCAlZzIKKwlzdHgJCSVnMiwgWyVzcCArIDIwNDcgKyAxMjggKyAweDMwXQkhIFRURQogCisJLyogVFRFIGluZGV4IGlzIGhpZ2hlc3QgbWludXMgbG9vcCBpbmRleC4gICovCisJc3ViCQklbDcsICVsNSwgJWcyCiAJc3R4CQklZzIsIFslc3AgKyAyMDQ3ICsgMTI4ICsgMHgzOF0KKwogCXNldGhpCQklaGkocDEyNzVidWYpLCAlZzIKIAlvcgkJJWcyLCAlbG8ocDEyNzVidWYpLCAlZzIKIAlsZHgJCVslZzIgKyAweDA4XSwgJW8xCiAJY2FsbAkJJW8xCiAJIGFkZAkJJXNwLCAoMjA0NyArIDEyOCksICVvMAogCi0Jc2V0aGkJCSVoaShiaWdrZXJuZWwpLCAlZzIKLQlsZHV3CQlbJWcyICsgJWxvKGJpZ2tlcm5lbCldLCAlZzIKLQlicnoscHQJCSVnMiwgZG9fdW5sb2NrCisJYWRkCQklbDUsIDEsICVsNQorCWNtcAkJJWw1LCAlbDYKKwlibmUscHQJCSV4Y2MsIDNiCiAJIG5vcAogCi0Jc2V0aGkJCSVoaShjYWxsX21ldGhvZCksICVnMgotCW9yCQklZzIsICVsbyhjYWxsX21ldGhvZCksICVnMgotCXN0eAkJJWcyLCBbJXNwICsgMjA0NyArIDEyOCArIDB4MDBdCi0JbW92CQk1LCAlZzIKLQlzdHgJCSVnMiwgWyVzcCArIDIwNDcgKyAxMjggKyAweDA4XQotCW1vdgkJMSwgJWcyCi0Jc3R4CQklZzIsIFslc3AgKyAyMDQ3ICsgMTI4ICsgMHgxMF0KLQlzZXRoaQkJJWhpKGR0bGJfbG9hZCksICVnMgotCW9yCQklZzIsICVsbyhkdGxiX2xvYWQpLCAlZzIKLQlzdHgJCSVnMiwgWyVzcCArIDIwNDcgKyAxMjggKyAweDE4XQotCXNldGhpCQklaGkocHJvbV9tbXVfaWhhbmRsZV9jYWNoZSksICVnMgotCWxkdXcJCVslZzIgKyAlbG8ocHJvbV9tbXVfaWhhbmRsZV9jYWNoZSldLCAlZzIKLQlzdHgJCSVnMiwgWyVzcCArIDIwNDcgKyAxMjggKyAweDIwXQotCXNldGhpCQklaGkoS0VSTkJBU0UgKyAweDQwMDAwMCksICVnMgotCXN0eAkJJWcyLCBbJXNwICsgMjA0NyArIDEyOCArIDB4MjhdCi0Jc2V0aGkJCSVoaShrZXJuX2xvY2tlZF90dGVfZGF0YSksICVnMgotCWxkeAkJWyVnMiArICVsbyhrZXJuX2xvY2tlZF90dGVfZGF0YSldLCAlZzIKLQlzZXRoaQkJJWhpKDB4NDAwMDAwKSwgJWcxCi0JYWRkCQklZzIsICVnMSwgJWcyCi0Jc3R4CQklZzIsIFslc3AgKyAyMDQ3ICsgMTI4ICsgMHgzMF0KLQotCW1vdgkJMTQsICVnMgotCUJSQU5DSF9JRl9BTllfQ0hFRVRBSChnMSxnNSwxZikKLQotCW1vdgkJNjIsICVnMgotMToKLQotCXN0eAkJJWcyLCBbJXNwICsgMjA0NyArIDEyOCArIDB4MzhdCi0Jc2V0aGkJCSVoaShwMTI3NWJ1ZiksICVnMgotCW9yCQklZzIsICVsbyhwMTI3NWJ1ZiksICVnMgotCWxkeAkJWyVnMiArIDB4MDhdLCAlbzEKLQljYWxsCQklbzEKLQkgYWRkCQklc3AsICgyMDQ3ICsgMTI4KSwgJW8wCi0KLWRvX3VubG9jazoKIAlzZXRoaQkJJWhpKHByb21fZW50cnlfbG9jayksICVnMgogCXN0YgkJJWcwLCBbJWcyICsgJWxvKHByb21fZW50cnlfbG9jayldCiAJbWVtYmFyCQkjU3RvcmVTdG9yZSB8ICNTdG9yZUxvYWQKQEAgLTI2OSw0NyArMjIwLDM2IEBACiAJIG5vcAogCiBuaWFnYXJhX2xvY2tfdGxiOgorCXNldGhpCQklaGkoS0VSTkJBU0UpLCAlbDMKKwlzZXRoaQkJJWhpKGtlcm5fbG9ja2VkX3R0ZV9kYXRhKSwgJWw0CisJbGR4CQlbJWw0ICsgJWxvKGtlcm5fbG9ja2VkX3R0ZV9kYXRhKV0sICVsNAorCWNscgkJJWw1CisJc2V0aGkJCSVoaShudW1fa2VybmVsX2ltYWdlX21hcHBpbmdzKSwgJWw2CisJbGR1dwkJWyVsNiArICVsbyhudW1fa2VybmVsX2ltYWdlX21hcHBpbmdzKV0sICVsNgorCWFkZAkJJWw2LCAxLCAlbDYKKworMToKIAltb3YJCUhWX0ZBU1RfTU1VX01BUF9QRVJNX0FERFIsICVvNQotCXNldGhpCQklaGkoS0VSTkJBU0UpLCAlbzAKKwlzbGx4CQklbDUsIDIyLCAlZzIKKwlhZGQJCSVsMywgJWcyLCAlbzAKIAljbHIJCSVvMQotCXNldGhpCQklaGkoa2Vybl9sb2NrZWRfdHRlX2RhdGEpLCAlbzIKLQlsZHgJCVslbzIgKyAlbG8oa2Vybl9sb2NrZWRfdHRlX2RhdGEpXSwgJW8yCisJYWRkCQklbDQsICVnMiwgJW8yCiAJbW92CQlIVl9NTVVfSU1NVSwgJW8zCiAJdGEJCUhWX0ZBU1RfVFJBUAogCiAJbW92CQlIVl9GQVNUX01NVV9NQVBfUEVSTV9BRERSLCAlbzUKLQlzZXRoaQkJJWhpKEtFUk5CQVNFKSwgJW8wCisJc2xseAkJJWw1LCAyMiwgJWcyCisJYWRkCQklbDMsICVnMiwgJW8wCiAJY2xyCQklbzEKLQlzZXRoaQkJJWhpKGtlcm5fbG9ja2VkX3R0ZV9kYXRhKSwgJW8yCi0JbGR4CQlbJW8yICsgJWxvKGtlcm5fbG9ja2VkX3R0ZV9kYXRhKV0sICVvMgorCWFkZAkJJWw0LCAlZzIsICVvMgogCW1vdgkJSFZfTU1VX0RNTVUsICVvMwogCXRhCQlIVl9GQVNUX1RSQVAKIAotCXNldGhpCQklaGkoYmlna2VybmVsKSwgJWcyCi0JbGR1dwkJWyVnMiArICVsbyhiaWdrZXJuZWwpXSwgJWcyCi0JYnJ6LHB0CQklZzIsIGFmdGVyX2xvY2tfdGxiCisJYWRkCQklbDUsIDEsICVsNQorCWNtcAkJJWw1LCAlbDYKKwlibmUscHQJCSV4Y2MsIDFiCiAJIG5vcAogCi0JbW92CQlIVl9GQVNUX01NVV9NQVBfUEVSTV9BRERSLCAlbzUKLQlzZXRoaQkJJWhpKEtFUk5CQVNFICsgMHg0MDAwMDApLCAlbzAKLQljbHIJCSVvMQotCXNldGhpCQklaGkoa2Vybl9sb2NrZWRfdHRlX2RhdGEpLCAlbzIKLQlsZHgJCVslbzIgKyAlbG8oa2Vybl9sb2NrZWRfdHRlX2RhdGEpXSwgJW8yCi0Jc2V0aGkJCSVoaSgweDQwMDAwMCksICVvMwotCWFkZAkJJW8yLCAlbzMsICVvMgotCW1vdgkJSFZfTU1VX0lNTVUsICVvMwotCXRhCQlIVl9GQVNUX1RSQVAKLQotCW1vdgkJSFZfRkFTVF9NTVVfTUFQX1BFUk1fQUREUiwgJW81Ci0Jc2V0aGkJCSVoaShLRVJOQkFTRSArIDB4NDAwMDAwKSwgJW8wCi0JY2xyCQklbzEKLQlzZXRoaQkJJWhpKGtlcm5fbG9ja2VkX3R0ZV9kYXRhKSwgJW8yCi0JbGR4CQlbJW8yICsgJWxvKGtlcm5fbG9ja2VkX3R0ZV9kYXRhKV0sICVvMgotCXNldGhpCQklaGkoMHg0MDAwMDApLCAlbzMKLQlhZGQJCSVvMiwgJW8zLCAlbzIKLQltb3YJCUhWX01NVV9ETU1VLCAlbzMKLQl0YQkJSFZfRkFTVF9UUkFQCi0KIGFmdGVyX2xvY2tfdGxiOgogCXdycHIJCSVnMCwgKFBTVEFURV9QUklWIHwgUFNUQVRFX1BFRiksICVwc3RhdGUKIAl3cgkJJWcwLCAwLCAlZnBycwpkaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYzY0L2tlcm5lbC90cmFwcy5jIGIvYXJjaC9zcGFyYzY0L2tlcm5lbC90cmFwcy5jCmluZGV4IDAwN2Y1MzEuLjk2ZGE4NDcgMTAwNjQ0Ci0tLSBhL2FyY2gvc3BhcmM2NC9rZXJuZWwvdHJhcHMuYworKysgYi9hcmNoL3NwYXJjNjQva2VybmVsL3RyYXBzLmMKQEAgLTQyLDYgKzQyLDcgQEAKICNlbmRpZgogI2luY2x1ZGUgPGFzbS9wcm9tLmg+CiAKKyNpbmNsdWRlICJlbnRyeS5oIgogCiAvKiBXaGVuIGFuIGlycmVjb3ZlcmFibGUgdHJhcCBvY2N1cnMgYXQgdGwgPiAwLCB0aGUgdHJhcCBlbnRyeQogICogY29kZSBsb2dzIHRoZSB0cmFwIHN0YXRlIHJlZ2lzdGVycyBhdCBldmVyeSBsZXZlbCBpbiB0aGUgdHJhcApAQCAtNzcsMTEgKzc4LDYgQEAKIAl9CiB9CiAKLXZvaWQgZG9fY2FsbF9kZWJ1ZyhzdHJ1Y3QgcHRfcmVncyAqcmVncykgCi17IAotCW5vdGlmeV9kaWUoRElFX0NBTEwsICJkZWJ1ZyBjYWxsIiwgcmVncywgMCwgMjU1LCBTSUdJTlQpOyAKLX0KLQogdm9pZCBiYWRfdHJhcChzdHJ1Y3QgcHRfcmVncyAqcmVncywgbG9uZyBsdmwpCiB7CiAJY2hhciBidWZmZXJbMzJdOwpAQCAtNTUwLDQxICs1NDYsNiBAQAogc3RhdGljIHVuc2lnbmVkIGxvbmcgZWNhY2hlX2ZsdXNoX2xpbmVzaXplOwogc3RhdGljIHVuc2lnbmVkIGxvbmcgZWNhY2hlX2ZsdXNoX3NpemU7CiAKLS8qIFdBUk5JTkc6IFRoZSBlcnJvciB0cmFwIGhhbmRsZXJzIGluIGFzc2VtYmx5IGtub3cgdGhlIHByZWNpc2UKLSAqCSAgICBsYXlvdXQgb2YgdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmUuCi0gKgotICogQy1sZXZlbCBoYW5kbGVycyBiZWxvdyB1c2UgdGhpcyBpbmZvcm1hdGlvbiB0byBsb2cgdGhlIGVycm9yCi0gKiBhbmQgdGhlbiBkZXRlcm1pbmUgaG93IHRvIHJlY292ZXIgKGlmIHBvc3NpYmxlKS4KLSAqLwotc3RydWN0IGNoZWV0YWhfZXJyX2luZm8gewotLyoweDAwKi91NjQgYWZzcjsKLS8qMHgwOCovdTY0IGFmYXI7Ci0KLQkvKiBELWNhY2hlIHN0YXRlICovCi0vKjB4MTAqL3U2NCBkY2FjaGVfZGF0YVs0XTsJLyogVGhlIGFjdHVhbCBkYXRhCSovCi0vKjB4MzAqL3U2NCBkY2FjaGVfaW5kZXg7CS8qIEQtY2FjaGUgaW5kZXgJKi8KLS8qMHgzOCovdTY0IGRjYWNoZV90YWc7CQkvKiBELWNhY2hlIHRhZy92YWxpZAkqLwotLyoweDQwKi91NjQgZGNhY2hlX3V0YWc7CS8qIEQtY2FjaGUgbWljcm90YWcJKi8KLS8qMHg0OCovdTY0IGRjYWNoZV9zdGFnOwkvKiBELWNhY2hlIHNub29wdGFnCSovCi0KLQkvKiBJLWNhY2hlIHN0YXRlICovCi0vKjB4NTAqL3U2NCBpY2FjaGVfZGF0YVs4XTsJLyogVGhlIGFjdHVhbCBpbnNucyArIHByZWRlY29kZQkqLwotLyoweDkwKi91NjQgaWNhY2hlX2luZGV4OwkvKiBJLWNhY2hlIGluZGV4CSovCi0vKjB4OTgqL3U2NCBpY2FjaGVfdGFnOwkJLyogSS1jYWNoZSBwaHlzIHRhZwkqLwotLyoweGEwKi91NjQgaWNhY2hlX3V0YWc7CS8qIEktY2FjaGUgbWljcm90YWcJKi8KLS8qMHhhOCovdTY0IGljYWNoZV9zdGFnOwkvKiBJLWNhY2hlIHNub29wdGFnCSovCi0vKjB4YjAqL3U2NCBpY2FjaGVfdXBwZXI7CS8qIEktY2FjaGUgdXBwZXItdGFnCSovCi0vKjB4YjgqL3U2NCBpY2FjaGVfbG93ZXI7CS8qIEktY2FjaGUgbG93ZXItdGFnCSovCi0KLQkvKiBFLWNhY2hlIHN0YXRlICovCi0vKjB4YzAqL3U2NCBlY2FjaGVfZGF0YVs0XTsJLyogMzIgYnl0ZXMgZnJvbSBzdGFnaW5nIHJlZ2lzdGVycyAqLwotLyoweGUwKi91NjQgZWNhY2hlX2luZGV4OwkvKiBFLWNhY2hlIGluZGV4CSovCi0vKjB4ZTgqL3U2NCBlY2FjaGVfdGFnOwkJLyogRS1jYWNoZSB0YWcvc3RhdGUJKi8KLQotLyoweGYwKi91NjQgX19wYWRbMzIgLSAzMF07Ci19OwotI2RlZmluZSBDSEFGU1JfSU5WQUxJRAkJKCh1NjQpLTFMKQotCiAvKiBUaGlzIHRhYmxlIGlzIG9yZGVyZWQgaW4gcHJpb3JpdHkgb2YgZXJyb3JzIGFuZCBtYXRjaGVzIHRoZQogICogQUZBUiBvdmVyd3JpdGUgcG9saWN5IGFzIHdlbGwuCiAgKi8KQEAgLTc1OCwxMCArNzE5LDYgQEAKIHN0YXRpYyBzdHJ1Y3QgYWZzcl9lcnJvcl90YWJsZSAqY2hlZXRhaF9lcnJvcl90YWJsZTsKIHN0YXRpYyB1bnNpZ25lZCBsb25nIGNoZWV0YWhfYWZzcl9lcnJvcnM7CiAKLS8qIFRoaXMgaXMgYWxsb2NhdGVkIGF0IGJvb3QgdGltZSBiYXNlZCB1cG9uIHRoZSBsYXJnZXN0IGhhcmR3YXJlCi0gKiBjcHUgSUQgaW4gdGhlIHN5c3RlbS4gIFdlIGFsbG9jYXRlIHR3byBlbnRyaWVzIHBlciBjcHUsIG9uZSBmb3IKLSAqIFRMPT0wIGxvZ2dpbmcgYW5kIG9uZSBmb3IgVEwgPj0gMSBsb2dnaW5nLgotICovCiBzdHJ1Y3QgY2hlZXRhaF9lcnJfaW5mbyAqY2hlZXRhaF9lcnJvcl9sb2c7CiAKIHN0YXRpYyBpbmxpbmUgc3RydWN0IGNoZWV0YWhfZXJyX2luZm8gKmNoZWV0YWhfZ2V0X2Vycm9yX2xvZyh1bnNpZ25lZCBsb25nIGFmc3IpCkBAIC0yMTAyLDcgKzIwNTksNyBAQAogCWZvcmNlX3NpZ19pbmZvKFNJR0ZQRSwgJmluZm8sIGN1cnJlbnQpOwogfQogCi12b2lkIGluc3RydWN0aW9uX2R1bXAgKHVuc2lnbmVkIGludCAqcGMpCitzdGF0aWMgdm9pZCBpbnN0cnVjdGlvbl9kdW1wKHVuc2lnbmVkIGludCAqcGMpCiB7CiAJaW50IGk7CiAKQEAgLTIxMTUsNyArMjA3Miw3IEBACiAJcHJpbnRrKCJcbiIpOwogfQogCi1zdGF0aWMgdm9pZCB1c2VyX2luc3RydWN0aW9uX2R1bXAgKHVuc2lnbmVkIGludCBfX3VzZXIgKnBjKQorc3RhdGljIHZvaWQgdXNlcl9pbnN0cnVjdGlvbl9kdW1wKHVuc2lnbmVkIGludCBfX3VzZXIgKnBjKQogewogCWludCBpOwogCXVuc2lnbmVkIGludCBidWZbOV07CmRpZmYgLS1naXQgYS9hcmNoL3NwYXJjNjQvbW0vaW5pdC5jIGIvYXJjaC9zcGFyYzY0L21tL2luaXQuYwppbmRleCBiNWMzMDQxLi5mMzcwNzhkIDEwMDY0NAotLS0gYS9hcmNoL3NwYXJjNjQvbW0vaW5pdC5jCisrKyBiL2FyY2gvc3BhcmM2NC9tbS9pbml0LmMKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlIDxhc20vcHJvbS5oPgogI2luY2x1ZGUgPGFzbS9zc3RhdGUuaD4KICNpbmNsdWRlIDxhc20vbWRlc2MuaD4KKyNpbmNsdWRlIDxhc20vY3B1ZGF0YS5oPgogCiAjZGVmaW5lIE1BWF9QSFlTX0FERFJFU1MJKDFVTCA8PCA0MlVMKQogI2RlZmluZSBLUFRFX0JJVE1BUF9DSFVOS19TWgkoMjU2VUwgKiAxMDI0VUwgKiAxMDI0VUwpCkBAIC0xNjYsNyArMTY3LDcgQEAKIHVuc2lnbmVkIGxvbmcgc3BhcmM2NF9rZXJuX3ByaV9udWNfYml0cyBfX3JlYWRfbW9zdGx5OwogdW5zaWduZWQgbG9uZyBzcGFyYzY0X2tlcm5fc2VjX2NvbnRleHQgX19yZWFkX21vc3RseTsKIAotaW50IGJpZ2tlcm5lbCA9IDA7CitpbnQgbnVtX2tlcm5lbF9pbWFnZV9tYXBwaW5nczsKIAogI2lmZGVmIENPTkZJR19ERUJVR19EQ0ZMVVNICiBhdG9taWNfdCBkY3BhZ2VfZmx1c2hlcyA9IEFUT01JQ19JTklUKDApOwpAQCAtNTcyLDcgKzU3Myw3IEBACiBzdGF0aWMgdm9pZCBfX2luaXQgcmVtYXBfa2VybmVsKHZvaWQpCiB7CiAJdW5zaWduZWQgbG9uZyBwaHlzX3BhZ2UsIHR0ZV92YWRkciwgdHRlX2RhdGE7Ci0JaW50IHRsYl9lbnQgPSBzcGFyYzY0X2hpZ2hlc3RfbG9ja2VkX3RsYmVudCgpOworCWludCBpLCB0bGJfZW50ID0gc3BhcmM2NF9oaWdoZXN0X2xvY2tlZF90bGJlbnQoKTsKIAogCXR0ZV92YWRkciA9ICh1bnNpZ25lZCBsb25nKSBLRVJOQkFTRTsKIAlwaHlzX3BhZ2UgPSAocHJvbV9ib290X21hcHBpbmdfcGh5c19sb3cgPj4gMjJVTCkgPDwgMjJVTDsKQEAgLTU4MiwyNyArNTgzLDIwIEBACiAKIAkvKiBOb3cgbG9jayB1cyBpbnRvIHRoZSBUTEJzIHZpYSBIeXBlcnZpc29yIG9yIE9CUC4gKi8KIAlpZiAodGxiX3R5cGUgPT0gaHlwZXJ2aXNvcikgewotCQloeXBlcnZpc29yX3RsYl9sb2NrKHR0ZV92YWRkciwgdHRlX2RhdGEsIEhWX01NVV9ETU1VKTsKLQkJaHlwZXJ2aXNvcl90bGJfbG9jayh0dGVfdmFkZHIsIHR0ZV9kYXRhLCBIVl9NTVVfSU1NVSk7Ci0JCWlmIChiaWdrZXJuZWwpIHsKLQkJCXR0ZV92YWRkciArPSAweDQwMDAwMDsKLQkJCXR0ZV9kYXRhICs9IDB4NDAwMDAwOworCQlmb3IgKGkgPSAwOyBpIDwgbnVtX2tlcm5lbF9pbWFnZV9tYXBwaW5nczsgaSsrKSB7CiAJCQloeXBlcnZpc29yX3RsYl9sb2NrKHR0ZV92YWRkciwgdHRlX2RhdGEsIEhWX01NVV9ETU1VKTsKIAkJCWh5cGVydmlzb3JfdGxiX2xvY2sodHRlX3ZhZGRyLCB0dGVfZGF0YSwgSFZfTU1VX0lNTVUpOworCQkJdHRlX3ZhZGRyICs9IDB4NDAwMDAwOworCQkJdHRlX2RhdGEgKz0gMHg0MDAwMDA7CiAJCX0KIAl9IGVsc2UgewotCQlwcm9tX2R0bGJfbG9hZCh0bGJfZW50LCB0dGVfZGF0YSwgdHRlX3ZhZGRyKTsKLQkJcHJvbV9pdGxiX2xvYWQodGxiX2VudCwgdHRlX2RhdGEsIHR0ZV92YWRkcik7Ci0JCWlmIChiaWdrZXJuZWwpIHsKLQkJCXRsYl9lbnQgLT0gMTsKLQkJCXByb21fZHRsYl9sb2FkKHRsYl9lbnQsCi0JCQkJICAgICAgIHR0ZV9kYXRhICsgMHg0MDAwMDAsIAotCQkJCSAgICAgICB0dGVfdmFkZHIgKyAweDQwMDAwMCk7Ci0JCQlwcm9tX2l0bGJfbG9hZCh0bGJfZW50LAotCQkJCSAgICAgICB0dGVfZGF0YSArIDB4NDAwMDAwLCAKLQkJCQkgICAgICAgdHRlX3ZhZGRyICsgMHg0MDAwMDApOworCQlmb3IgKGkgPSAwOyBpIDwgbnVtX2tlcm5lbF9pbWFnZV9tYXBwaW5nczsgaSsrKSB7CisJCQlwcm9tX2R0bGJfbG9hZCh0bGJfZW50IC0gaSwgdHRlX2RhdGEsIHR0ZV92YWRkcik7CisJCQlwcm9tX2l0bGJfbG9hZCh0bGJfZW50IC0gaSwgdHRlX2RhdGEsIHR0ZV92YWRkcik7CisJCQl0dGVfdmFkZHIgKz0gMHg0MDAwMDA7CisJCQl0dGVfZGF0YSArPSAweDQwMDAwMDsKIAkJfQotCQlzcGFyYzY0X2hpZ2hlc3RfdW5sb2NrZWRfdGxiX2VudCA9IHRsYl9lbnQgLSAxOworCQlzcGFyYzY0X2hpZ2hlc3RfdW5sb2NrZWRfdGxiX2VudCA9IHRsYl9lbnQgLSBpOwogCX0KIAlpZiAodGxiX3R5cGUgPT0gY2hlZXRhaF9wbHVzKSB7CiAJCXNwYXJjNjRfa2Vybl9wcmlfY29udGV4dCA9IChDVFhfQ0hFRVRBSF9QTFVTX0NUWDAgfApAQCAtMTI4MCwxMCArMTI3NCw2IEBACiAKIC8qIHBhZ2luZ19pbml0KCkgc2V0cyB1cCB0aGUgcGFnZSB0YWJsZXMgKi8KIAotZXh0ZXJuIHZvaWQgY2hlZXRhaF9lY2FjaGVfZmx1c2hfaW5pdCh2b2lkKTsKLWV4dGVybiB2b2lkIHN1bjR2X3BhdGNoX3RsYl9oYW5kbGVycyh2b2lkKTsKLQotZXh0ZXJuIHZvaWQgY3B1X3Byb2JlKHZvaWQpOwogZXh0ZXJuIHZvaWQgY2VudHJhbF9wcm9iZSh2b2lkKTsKIAogc3RhdGljIHVuc2lnbmVkIGxvbmcgbGFzdF92YWxpZF9wZm47CkBAIC0xMzUyLDEyICsxMzQyLDkgQEAKIAlzaGlmdCA9IGtlcm5fYmFzZSArIFBBR0VfT0ZGU0VUIC0gKCh1bnNpZ25lZCBsb25nKUtFUk5CQVNFKTsKIAogCXJlYWxfZW5kID0gKHVuc2lnbmVkIGxvbmcpX2VuZDsKLQlpZiAoKHJlYWxfZW5kID4gKCh1bnNpZ25lZCBsb25nKUtFUk5CQVNFICsgMHg0MDAwMDApKSkKLQkJYmlna2VybmVsID0gMTsKLQlpZiAoKHJlYWxfZW5kID4gKCh1bnNpZ25lZCBsb25nKUtFUk5CQVNFICsgMHg4MDAwMDApKSkgewotCQlwcm9tX3ByaW50ZigicGFnaW5nX2luaXQ6IEtlcm5lbCA+IDhNQiwgdG9vIGxhcmdlLlxuIik7Ci0JCXByb21faGFsdCgpOwotCX0KKwludW1fa2VybmVsX2ltYWdlX21hcHBpbmdzID0gRElWX1JPVU5EX1VQKHJlYWxfZW5kIC0gS0VSTkJBU0UsIDEgPDwgMjIpOworCXByaW50aygiS2VybmVsOiBVc2luZyAlZCBsb2NrZWQgVExCIGVudHJpZXMgZm9yIG1haW4ga2VybmVsIGltYWdlLlxuIiwKKwkgICAgICAgbnVtX2tlcm5lbF9pbWFnZV9tYXBwaW5ncyk7CiAKIAkvKiBTZXQga2VybmVsIHBnZCB0byB1cHBlciBhbGlhcyBzbyBwaHlzaWNhbCBwYWdlIGNvbXB1dGF0aW9ucwogCSAqIHdvcmsuCmRpZmYgLS1naXQgYS9hcmNoL3NwYXJjNjQvbW0vdGxiLmMgYi9hcmNoL3NwYXJjNjQvbW0vdGxiLmMKaW5kZXggM2YxMGZjOS4uYWUyNDkxOSAxMDA2NDQKLS0tIGEvYXJjaC9zcGFyYzY0L21tL3RsYi5jCisrKyBiL2FyY2gvc3BhcmM2NC9tbS90bGIuYwpAQCAtMjMsOSArMjMsNyBAQAogCiB2b2lkIGZsdXNoX3RsYl9wZW5kaW5nKHZvaWQpCiB7Ci0Jc3RydWN0IG1tdV9nYXRoZXIgKm1wID0gJl9fZ2V0X2NwdV92YXIobW11X2dhdGhlcnMpOwotCi0JcHJlZW1wdF9kaXNhYmxlKCk7CisJc3RydWN0IG1tdV9nYXRoZXIgKm1wID0gJmdldF9jcHVfdmFyKG1tdV9nYXRoZXJzKTsKIAogCWlmIChtcC0+dGxiX25yKSB7CiAJCWZsdXNoX3RzYl91c2VyKG1wKTsKQEAgLTQyLDcgKzQwLDcgQEAKIAkJbXAtPnRsYl9uciA9IDA7CiAJfQogCi0JcHJlZW1wdF9lbmFibGUoKTsKKwlwdXRfY3B1X3ZhcihtbXVfZ2F0aGVycyk7CiB9CiAKIHZvaWQgdGxiX2JhdGNoX2FkZChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyB2YWRkciwgcHRlX3QgKnB0ZXAsIHB0ZV90IG9yaWcpCmRpZmYgLS1naXQgYS9hcmNoL3VtL2RyaXZlcnMvbmV0X2tlcm4uYyBiL2FyY2gvdW0vZHJpdmVycy9uZXRfa2Vybi5jCmluZGV4IDFlOGY0MWEuLjFkNDNiZGYgMTAwNjQ0Ci0tLSBhL2FyY2gvdW0vZHJpdmVycy9uZXRfa2Vybi5jCisrKyBiL2FyY2gvdW0vZHJpdmVycy9uZXRfa2Vybi5jCkBAIC0yNTYsMTEgKzI1Niw3IEBACiAKIHN0YXRpYyB2b2lkIHVtbF9uZXRfc2V0X211bHRpY2FzdF9saXN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiB7Ci0JaWYgKGRldi0+ZmxhZ3MgJiBJRkZfUFJPTUlTQykKLQkJcmV0dXJuOwotCWVsc2UgaWYgKGRldi0+bWNfY291bnQpCi0JCWRldi0+ZmxhZ3MgfD0gSUZGX0FMTE1VTFRJOwotCWVsc2UgZGV2LT5mbGFncyAmPSB+SUZGX0FMTE1VTFRJOworCXJldHVybjsKIH0KIAogc3RhdGljIHZvaWQgdW1sX25ldF90eF90aW1lb3V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9LY29uZmlnIGIvYXJjaC94ODYvS2NvbmZpZwppbmRleCAyMzdmYzEyLi42YzcwZmVkIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9LY29uZmlnCisrKyBiL2FyY2gveDg2L0tjb25maWcKQEAgLTEyNTksNyArMTI1OSw3IEBACiAJICBtYWNoaW5lcyB3aXRoIG1vcmUgdGhhbiBvbmUgQ1BVLgogCiAJICBJbiBvcmRlciB0byB1c2UgQVBNLCB5b3Ugd2lsbCBuZWVkIHN1cHBvcnRpbmcgc29mdHdhcmUuIEZvciBsb2NhdGlvbgotCSAgYW5kIG1vcmUgaW5mb3JtYXRpb24sIHJlYWQgPGZpbGU6RG9jdW1lbnRhdGlvbi9wbS50eHQ+IGFuZCB0aGUKKwkgIGFuZCBtb3JlIGluZm9ybWF0aW9uLCByZWFkIDxmaWxlOkRvY3VtZW50YXRpb24vcG93ZXIvcG0udHh0PiBhbmQgdGhlCiAJICBCYXR0ZXJ5IFBvd2VyZWQgTGludXggbWluaS1IT1dUTywgYXZhaWxhYmxlIGZyb20KIAkgIDxodHRwOi8vd3d3LnRsZHAub3JnL2RvY3MuaHRtbCNob3d0bz4uCiAKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9hbHRlcm5hdGl2ZS5jIGIvYXJjaC94ODYva2VybmVsL2FsdGVybmF0aXZlLmMKaW5kZXggNDVkNzllYS4uNWZlZDk4YyAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVsL2FsdGVybmF0aXZlLmMKKysrIGIvYXJjaC94ODYva2VybmVsL2FsdGVybmF0aXZlLmMKQEAgLTY1LDcgKzY1LDggQEAKICAgIGdldCB0aGVtIGVhc2lseSBpbnRvIHN0cmluZ3MuICovCiBhc20oIlx0LnNlY3Rpb24gLnJvZGF0YSwgXCJhXCJcbmludGVsbm9wczogIgogCUdFTkVSSUNfTk9QMSBHRU5FUklDX05PUDIgR0VORVJJQ19OT1AzIEdFTkVSSUNfTk9QNCBHRU5FUklDX05PUDUgR0VORVJJQ19OT1A2Ci0JR0VORVJJQ19OT1A3IEdFTkVSSUNfTk9QOCk7CisJR0VORVJJQ19OT1A3IEdFTkVSSUNfTk9QOAorICAgICJcdC5wcmV2aW91cyIpOwogZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIGNoYXIgaW50ZWxub3BzW107CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciAqY29uc3QgaW50ZWxfbm9wc1tBU01fTk9QX01BWCsxXSA9IHsKIAlOVUxMLApAQCAtODMsNyArODQsOCBAQAogI2lmZGVmIEs4X05PUDEKIGFzbSgiXHQuc2VjdGlvbiAucm9kYXRhLCBcImFcIlxuazhub3BzOiAiCiAJSzhfTk9QMSBLOF9OT1AyIEs4X05PUDMgSzhfTk9QNCBLOF9OT1A1IEs4X05PUDYKLQlLOF9OT1A3IEs4X05PUDgpOworCUs4X05PUDcgSzhfTk9QOAorICAgICJcdC5wcmV2aW91cyIpOwogZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIGNoYXIgazhub3BzW107CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciAqY29uc3Qgazhfbm9wc1tBU01fTk9QX01BWCsxXSA9IHsKIAlOVUxMLApAQCAtMTAxLDcgKzEwMyw4IEBACiAjaWZkZWYgSzdfTk9QMQogYXNtKCJcdC5zZWN0aW9uIC5yb2RhdGEsIFwiYVwiXG5rN25vcHM6ICIKIAlLN19OT1AxIEs3X05PUDIgSzdfTk9QMyBLN19OT1A0IEs3X05PUDUgSzdfTk9QNgotCUs3X05PUDcgSzdfTk9QOCk7CisJSzdfTk9QNyBLN19OT1A4CisgICAgIlx0LnByZXZpb3VzIik7CiBleHRlcm4gY29uc3QgdW5zaWduZWQgY2hhciBrN25vcHNbXTsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyICpjb25zdCBrN19ub3BzW0FTTV9OT1BfTUFYKzFdID0gewogCU5VTEwsCkBAIC0xMTksNyArMTIyLDggQEAKICNpZmRlZiBQNl9OT1AxCiBhc20oIlx0LnNlY3Rpb24gLnJvZGF0YSwgXCJhXCJcbnA2bm9wczogIgogCVA2X05PUDEgUDZfTk9QMiBQNl9OT1AzIFA2X05PUDQgUDZfTk9QNSBQNl9OT1A2Ci0JUDZfTk9QNyBQNl9OT1A4KTsKKwlQNl9OT1A3IFA2X05PUDgKKyAgICAiXHQucHJldmlvdXMiKTsKIGV4dGVybiBjb25zdCB1bnNpZ25lZCBjaGFyIHA2bm9wc1tdOwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmNvbnN0IHA2X25vcHNbQVNNX05PUF9NQVgrMV0gPSB7CiAJTlVMTCwKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9hcGVydHVyZV82NC5jIGIvYXJjaC94ODYva2VybmVsL2FwZXJ0dXJlXzY0LmMKaW5kZXggNjA4MTUyYS4uMDBkZjEyNiAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVsL2FwZXJ0dXJlXzY0LmMKKysrIGIvYXJjaC94ODYva2VybmVsL2FwZXJ0dXJlXzY0LmMKQEAgLTE4LDYgKzE4LDcgQEAKICNpbmNsdWRlIDxsaW51eC9wY2kuaD4KICNpbmNsdWRlIDxsaW51eC9iaXRvcHMuaD4KICNpbmNsdWRlIDxsaW51eC9pb3BvcnQuaD4KKyNpbmNsdWRlIDxsaW51eC9zdXNwZW5kLmg+CiAjaW5jbHVkZSA8YXNtL2U4MjAuaD4KICNpbmNsdWRlIDxhc20vaW8uaD4KICNpbmNsdWRlIDxhc20vZ2FydC5oPgpAQCAtNzYsNiArNzcsOCBAQAogCXByaW50ayhLRVJOX0lORk8gIk1hcHBpbmcgYXBlcnR1cmUgb3ZlciAlZCBLQiBvZiBSQU0gQCAlbHhcbiIsCiAJCQlhcGVyX3NpemUgPj4gMTAsIF9fcGEocCkpOwogCWluc2VydF9hcGVydHVyZV9yZXNvdXJjZSgodTMyKV9fcGEocCksIGFwZXJfc2l6ZSk7CisJcmVnaXN0ZXJfbm9zYXZlX3JlZ2lvbigodTMyKV9fcGEocCkgPj4gUEFHRV9TSElGVCwKKwkJCQkodTMyKV9fcGEocCthcGVyX3NpemUpID4+IFBBR0VfU0hJRlQpOwogCiAJcmV0dXJuICh1MzIpX19wYShwKTsKIH0KZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jIGIvYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmMKaW5kZXggMDI3ZTVjMC4uMTcwZDJmNSAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmMKKysrIGIvYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmMKQEAgLTE0MywxNCArMTQzLDYgQEAKICNlbmRpZgogCiAvKgotICogSWYgd2UgY29uZmlndXJlZCBvdXJzZWx2ZXMgZm9yIGEgVFNDLCB3ZSdkIGJldHRlciBoYXZlIG9uZSEKLSAqLwotI2lmZGVmIENPTkZJR19YODZfVFNDCi0JaWYgKCFjcHVfaGFzX3RzYykKLQkJcGFuaWMoIktlcm5lbCBjb21waWxlZCBmb3IgUGVudGl1bSssIHJlcXVpcmVzIFRTQyBmZWF0dXJlISIpOwotI2VuZGlmCi0KLS8qCiAgKiBJZiB3ZSB3ZXJlIHRvbGQgd2UgaGFkIGEgZ29vZCBsb2NhbCBBUElDLCBjaGVjayBmb3IgYnVnZ3kgUGVudGlhLAogICogaS5lLiBhbGwgQiBzdGVwcGluZ3MgYW5kIHRoZSBDMiBzdGVwcGluZyBvZiBQNTRDIHdoZW4gdXNpbmcgdGhlaXIKICAqIGludGVncmF0ZWQgQVBJQyAoc2VlIDExQVAgZXJyYXR1bSBpbiAiUGVudGl1bSBQcm9jZXNzb3IKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9jcHUvY3B1ZnJlcS9zcGVlZHN0ZXAtc21pLmMgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L2NwdWZyZXEvc3BlZWRzdGVwLXNtaS5jCmluZGV4IGYyYjVhNjIuLjhhODVjOTMgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9jcHUvY3B1ZnJlcS9zcGVlZHN0ZXAtc21pLmMKKysrIGIvYXJjaC94ODYva2VybmVsL2NwdS9jcHVmcmVxL3NwZWVkc3RlcC1zbWkuYwpAQCAtNjMsNyArNjMsNyBAQAogICovCiBzdGF0aWMgaW50IHNwZWVkc3RlcF9zbWlfb3duZXJzaGlwICh2b2lkKQogewotCXUzMiBjb21tYW5kLCByZXN1bHQsIG1hZ2ljOworCXUzMiBjb21tYW5kLCByZXN1bHQsIG1hZ2ljLCBkdW1teTsKIAl1MzIgZnVuY3Rpb24gPSBHRVRfU1BFRURTVEVQX09XTkVSOwogCXVuc2lnbmVkIGNoYXIgbWFnaWNfZGF0YVtdID0gIkNvcHlyaWdodCAoYykgMTk5OSBJbnRlbCBDb3Jwb3JhdGlvbiI7CiAKQEAgLTczLDggKzczLDExIEBACiAJZHByaW50aygidHJ5aW5nIHRvIG9idGFpbiBvd25lcnNoaXAgd2l0aCBjb21tYW5kICV4IGF0IHBvcnQgJXhcbiIsIGNvbW1hbmQsIHNtaV9wb3J0KTsKIAogCV9fYXNtX18gX192b2xhdGlsZV9fKAorCQkicHVzaCAlJWVicFxuIgogCQkib3V0ICUlYWwsICglJWR4KVxuIgotCQk6ICI9RCIgKHJlc3VsdCkKKwkJInBvcCAlJWVicFxuIgorCQk6ICI9RCIgKHJlc3VsdCksICI9YSIgKGR1bW15KSwgIj1iIiAoZHVtbXkpLCAiPWMiIChkdW1teSksICI9ZCIgKGR1bW15KSwKKwkJCSI9UyIgKGR1bW15KQogCQk6ICJhIiAoY29tbWFuZCksICJiIiAoZnVuY3Rpb24pLCAiYyIgKDApLCAiZCIgKHNtaV9wb3J0KSwKIAkJCSJEIiAoMCksICJTIiAobWFnaWMpCiAJCTogIm1lbW9yeSIKQEAgLTk2LDcgKzk5LDcgQEAKICAqLwogc3RhdGljIGludCBzcGVlZHN0ZXBfc21pX2dldF9mcmVxcyAodW5zaWduZWQgaW50ICpsb3csIHVuc2lnbmVkIGludCAqaGlnaCkKIHsKLQl1MzIgY29tbWFuZCwgcmVzdWx0ID0gMCwgZWRpLCBoaWdoX21oeiwgbG93X21oejsKKwl1MzIgY29tbWFuZCwgcmVzdWx0ID0gMCwgZWRpLCBoaWdoX21oeiwgbG93X21oeiwgZHVtbXk7CiAJdTMyIHN0YXRlPTA7CiAJdTMyIGZ1bmN0aW9uID0gR0VUX1NQRUVEU1RFUF9GUkVRUzsKIApAQCAtMTA5LDEwICsxMTIsMTIgQEAKIAogCWRwcmludGsoInRyeWluZyB0byBkZXRlcm1pbmUgZnJlcXVlbmNpZXMgd2l0aCBjb21tYW5kICV4IGF0IHBvcnQgJXhcbiIsIGNvbW1hbmQsIHNtaV9wb3J0KTsKIAotCV9fYXNtX18gX192b2xhdGlsZV9fKCJtb3ZsICQwLCAlJWVkaVxuIgorCV9fYXNtX18gX192b2xhdGlsZV9fKAorCQkicHVzaCAlJWVicFxuIgogCQkib3V0ICUlYWwsICglJWR4KVxuIgotCQk6ICI9YSIgKHJlc3VsdCksICI9YiIgKGhpZ2hfbWh6KSwgIj1jIiAobG93X21oeiksICI9ZCIgKHN0YXRlKSwgIj1EIiAoZWRpKQotCQk6ICJhIiAoY29tbWFuZCksICJiIiAoZnVuY3Rpb24pLCAiYyIgKHN0YXRlKSwgImQiIChzbWlfcG9ydCksICJTIiAoMCkKKwkJInBvcCAlJWVicCIKKwkJOiAiPWEiIChyZXN1bHQpLCAiPWIiIChoaWdoX21oeiksICI9YyIgKGxvd19taHopLCAiPWQiIChzdGF0ZSksICI9RCIgKGVkaSksICI9UyIgKGR1bW15KQorCQk6ICJhIiAoY29tbWFuZCksICJiIiAoZnVuY3Rpb24pLCAiYyIgKHN0YXRlKSwgImQiIChzbWlfcG9ydCksICJTIiAoMCksICJEIiAoMCkKIAkpOwogCiAJZHByaW50aygicmVzdWx0ICV4LCBsb3dfZnJlcSAldSwgaGlnaF9mcmVxICV1XG4iLCByZXN1bHQsIGxvd19taHosIGhpZ2hfbWh6KTsKQEAgLTEzNSwxNiArMTQwLDE4IEBACiBzdGF0aWMgaW50IHNwZWVkc3RlcF9nZXRfc3RhdGUgKHZvaWQpCiB7CiAJdTMyIGZ1bmN0aW9uPUdFVF9TUEVFRFNURVBfU1RBVEU7Ci0JdTMyIHJlc3VsdCwgc3RhdGUsIGVkaSwgY29tbWFuZDsKKwl1MzIgcmVzdWx0LCBzdGF0ZSwgZWRpLCBjb21tYW5kLCBkdW1teTsKIAogCWNvbW1hbmQgPSAoc21pX3NpZyAmIDB4ZmZmZmZmMDApIHwgKHNtaV9jbWQgJiAweGZmKTsKIAogCWRwcmludGsoInRyeWluZyB0byBkZXRlcm1pbmUgY3VycmVudCBzZXR0aW5nIHdpdGggY29tbWFuZCAleCBhdCBwb3J0ICV4XG4iLCBjb21tYW5kLCBzbWlfcG9ydCk7CiAKLQlfX2FzbV9fIF9fdm9sYXRpbGVfXygibW92bCAkMCwgJSVlZGlcbiIKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXygKKwkJInB1c2ggJSVlYnBcbiIKIAkJIm91dCAlJWFsLCAoJSVkeClcbiIKLQkJOiAiPWEiIChyZXN1bHQpLCAiPWIiIChzdGF0ZSksICI9RCIgKGVkaSkKLQkJOiAiYSIgKGNvbW1hbmQpLCAiYiIgKGZ1bmN0aW9uKSwgImMiICgwKSwgImQiIChzbWlfcG9ydCksICJTIiAoMCkKKwkJInBvcCAlJWVicFxuIgorCQk6ICI9YSIgKHJlc3VsdCksICI9YiIgKHN0YXRlKSwgIj1EIiAoZWRpKSwgIj1jIiAoZHVtbXkpLCAiPWQiIChkdW1teSksICI9UyIgKGR1bW15KQorCQk6ICJhIiAoY29tbWFuZCksICJiIiAoZnVuY3Rpb24pLCAiYyIgKDApLCAiZCIgKHNtaV9wb3J0KSwgIlMiICgwKSwgIkQiICgwKQogCSk7CiAKIAlkcHJpbnRrKCJzdGF0ZSBpcyAleCwgcmVzdWx0IGlzICV4XG4iLCBzdGF0ZSwgcmVzdWx0KTsKQEAgLTE2MCw3ICsxNjcsNyBAQAogICovCiBzdGF0aWMgdm9pZCBzcGVlZHN0ZXBfc2V0X3N0YXRlICh1bnNpZ25lZCBpbnQgc3RhdGUpCiB7Ci0JdW5zaWduZWQgaW50IHJlc3VsdCA9IDAsIGNvbW1hbmQsIG5ld19zdGF0ZTsKKwl1bnNpZ25lZCBpbnQgcmVzdWx0ID0gMCwgY29tbWFuZCwgbmV3X3N0YXRlLCBkdW1teTsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCXVuc2lnbmVkIGludCBmdW5jdGlvbj1TRVRfU1BFRURTVEVQX1NUQVRFOwogCXVuc2lnbmVkIGludCByZXRyeSA9IDA7CkBAIC0xODIsMTAgKzE4OSwxMiBAQAogCQl9CiAJCXJldHJ5Kys7CiAJCV9fYXNtX18gX192b2xhdGlsZV9fKAotCQkJIm1vdmwgJDAsICUlZWRpXG4iCisJCQkicHVzaCAlJWVicFxuIgogCQkJIm91dCAlJWFsLCAoJSVkeClcbiIKLQkJCTogIj1iIiAobmV3X3N0YXRlKSwgIj1EIiAocmVzdWx0KQotCQkJOiAiYSIgKGNvbW1hbmQpLCAiYiIgKGZ1bmN0aW9uKSwgImMiIChzdGF0ZSksICJkIiAoc21pX3BvcnQpLCAiUyIgKDApCisJCQkicG9wICUlZWJwIgorCQkJOiAiPWIiIChuZXdfc3RhdGUpLCAiPUQiIChyZXN1bHQpLCAiPWMiIChkdW1teSksICI9YSIgKGR1bW15KSwKKwkJCQkiPWQiIChkdW1teSksICI9UyIgKGR1bW15KQorCQkJOiAiYSIgKGNvbW1hbmQpLCAiYiIgKGZ1bmN0aW9uKSwgImMiIChzdGF0ZSksICJkIiAoc21pX3BvcnQpLCAiUyIgKDApLCAiRCIgKDApCiAJCQkpOwogCX0gd2hpbGUgKChuZXdfc3RhdGUgIT0gc3RhdGUpICYmIChyZXRyeSA8PSBTTUlfVFJJRVMpKTsKIApAQCAtMTk1LDcgKzIwNCw3IEBACiAJaWYgKG5ld19zdGF0ZSA9PSBzdGF0ZSkgewogCQlkcHJpbnRrKCJjaGFuZ2UgdG8gJXUgTUh6IHN1Y2NlZWRlZCBhZnRlciAldSB0cmllcyB3aXRoIHJlc3VsdCAldVxuIiwgKHNwZWVkc3RlcF9mcmVxc1tuZXdfc3RhdGVdLmZyZXF1ZW5jeSAvIDEwMDApLCByZXRyeSwgcmVzdWx0KTsKIAl9IGVsc2UgewotCQlwcmludGsoS0VSTl9FUlIgImNwdWZyZXE6IGNoYW5nZSBmYWlsZWQgd2l0aCBuZXdfc3RhdGUgJXUgYW5kIHJlc3VsdCAldVxuIiwgbmV3X3N0YXRlLCByZXN1bHQpOworCQlwcmludGsoS0VSTl9FUlIgImNwdWZyZXE6IGNoYW5nZSB0byBzdGF0ZSAldSBmYWlsZWQgd2l0aCBuZXdfc3RhdGUgJXUgYW5kIHJlc3VsdCAldVxuIiwgc3RhdGUsIG5ld19zdGF0ZSwgcmVzdWx0KTsKIAl9CiAKIAlyZXR1cm47CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvY3B1L210cnIvZ2VuZXJpYy5jIGIvYXJjaC94ODYva2VybmVsL2NwdS9tdHJyL2dlbmVyaWMuYwppbmRleCAxMDNkNjFhLi4zZTE4ZGI0IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwvY3B1L210cnIvZ2VuZXJpYy5jCisrKyBiL2FyY2gveDg2L2tlcm5lbC9jcHUvbXRyci9nZW5lcmljLmMKQEAgLTE3NiwxMiArMTc2LDEzIEBACiB9CiAKIC8qKgotICogQ2hlY2tzIGFuZCB1cGRhdGVzIGFuIGZpeGVkLXJhbmdlIE1UUlIgaWYgaXQgZGlmZmVycyBmcm9tIHRoZSB2YWx1ZSBpdAotICogc2hvdWxkIGhhdmUuIElmIEs4IGV4dGVudGlvbnMgYXJlIHdhbnRlZCwgdXBkYXRlIHRoZSBLOCBTWVNDRkcgTVNSIGFsc28uCi0gKiBzZWUgQU1EIHB1YmxpY2F0aW9uIG5vLiAyNDU5MywgY2hhcHRlciA3LjguMSwgcGFnZSAyMzMgZm9yIG1vcmUgaW5mb3JtYXRpb24KLSAqIFxwYXJhbSBtc3IgTVNSIGFkZHJlc3Mgb2YgdGhlIE1UVFIgd2hpY2ggc2hvdWxkIGJlIGNoZWNrZWQgYW5kIHVwZGF0ZWQKLSAqIFxwYXJhbSBjaGFuZ2VkIHBvaW50ZXIgd2hpY2ggaW5kaWNhdGVzIHdoZXRoZXIgdGhlIE1UUlIgbmVlZGVkIHRvIGJlIGNoYW5nZWQKLSAqIFxwYXJhbSBtc3J3b3JkcyBwb2ludGVyIHRvIHRoZSBNU1IgdmFsdWVzIHdoaWNoIHRoZSBNU1Igc2hvdWxkIGhhdmUKKyAqIHNldF9maXhlZF9yYW5nZSAtIGNoZWNrcyAmIHVwZGF0ZXMgYSBmaXhlZC1yYW5nZSBNVFJSIGlmIGl0IGRpZmZlcnMgZnJvbSB0aGUgdmFsdWUgaXQgc2hvdWxkIGhhdmUKKyAqIEBtc3I6IE1TUiBhZGRyZXNzIG9mIHRoZSBNVFRSIHdoaWNoIHNob3VsZCBiZSBjaGVja2VkIGFuZCB1cGRhdGVkCisgKiBAY2hhbmdlZDogcG9pbnRlciB3aGljaCBpbmRpY2F0ZXMgd2hldGhlciB0aGUgTVRSUiBuZWVkZWQgdG8gYmUgY2hhbmdlZAorICogQG1zcndvcmRzOiBwb2ludGVyIHRvIHRoZSBNU1IgdmFsdWVzIHdoaWNoIHRoZSBNU1Igc2hvdWxkIGhhdmUKKyAqCisgKiBJZiBLOCBleHRlbnRpb25zIGFyZSB3YW50ZWQsIHVwZGF0ZSB0aGUgSzggU1lTQ0ZHIE1TUiBhbHNvLgorICogU2VlIEFNRCBwdWJsaWNhdGlvbiBuby4gMjQ1OTMsIGNoYXB0ZXIgNy44LjEsIHBhZ2UgMjMzIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICovCiBzdGF0aWMgdm9pZCBzZXRfZml4ZWRfcmFuZ2UoaW50IG1zciwgYm9vbCAqY2hhbmdlZCwgdW5zaWduZWQgaW50ICptc3J3b3JkcykKIHsKQEAgLTE5OSwxMiArMjAwLDE1IEBACiAJfQogfQogCisvKioKKyAqIGdlbmVyaWNfZ2V0X2ZyZWVfcmVnaW9uIC0gR2V0IGEgZnJlZSBNVFJSLgorICogQGJhc2U6IFRoZSBzdGFydGluZyAoYmFzZSkgYWRkcmVzcyBvZiB0aGUgcmVnaW9uLgorICogQHNpemU6IFRoZSBzaXplIChpbiBieXRlcykgb2YgdGhlIHJlZ2lvbi4KKyAqIEByZXBsYWNlX3JlZzogbXRyciBpbmRleCB0byBiZSByZXBsYWNlZDsgc2V0IHRvIGludmFsaWQgdmFsdWUgaWYgbm9uZS4KKyAqCisgKiBSZXR1cm5zOiBUaGUgaW5kZXggb2YgdGhlIHJlZ2lvbiBvbiBzdWNjZXNzLCBlbHNlIG5lZ2F0aXZlIG9uIGVycm9yLgorICovCiBpbnQgZ2VuZXJpY19nZXRfZnJlZV9yZWdpb24odW5zaWduZWQgbG9uZyBiYXNlLCB1bnNpZ25lZCBsb25nIHNpemUsIGludCByZXBsYWNlX3JlZykKLS8qICBbU1VNTUFSWV0gR2V0IGEgZnJlZSBNVFJSLgotICAgIDxiYXNlPiBUaGUgc3RhcnRpbmcgKGJhc2UpIGFkZHJlc3Mgb2YgdGhlIHJlZ2lvbi4KLSAgICA8c2l6ZT4gVGhlIHNpemUgKGluIGJ5dGVzKSBvZiB0aGUgcmVnaW9uLgotICAgIFtSRVRVUk5TXSBUaGUgaW5kZXggb2YgdGhlIHJlZ2lvbiBvbiBzdWNjZXNzLCBlbHNlIC0xIG9uIGVycm9yLgotKi8KIHsKIAlpbnQgaSwgbWF4OwogCW10cnJfdHlwZSBsdHlwZTsKQEAgLTI0OSw4ICsyNTMsOCBAQAogfQogCiAvKioKLSAqIENoZWNrcyBhbmQgdXBkYXRlcyB0aGUgZml4ZWQtcmFuZ2UgTVRSUnMgaWYgdGhleSBkaWZmZXIgZnJvbSB0aGUgc2F2ZWQgc2V0Ci0gKiBccGFyYW0gZnJzIHBvaW50ZXIgdG8gZml4ZWQtcmFuZ2UgTVRSUiB2YWx1ZXMsIHNhdmVkIGJ5IGdldF9maXhlZF9yYW5nZXMoKQorICogc2V0X2ZpeGVkX3JhbmdlcyAtIGNoZWNrcyAmIHVwZGF0ZXMgdGhlIGZpeGVkLXJhbmdlIE1UUlJzIGlmIHRoZXkgZGlmZmVyIGZyb20gdGhlIHNhdmVkIHNldAorICogQGZyczogcG9pbnRlciB0byBmaXhlZC1yYW5nZSBNVFJSIHZhbHVlcywgc2F2ZWQgYnkgZ2V0X2ZpeGVkX3JhbmdlcygpCiAgKi8KIHN0YXRpYyBpbnQgc2V0X2ZpeGVkX3JhbmdlcyhtdHJyX3R5cGUgKiBmcnMpCiB7CkBAIC0yOTQsMTMgKzI5OCwxMyBAQAogCiBzdGF0aWMgdTMyIGRlZnR5cGVfbG8sIGRlZnR5cGVfaGk7CiAKKy8qKgorICogc2V0X210cnJfc3RhdGUgLSBTZXQgdGhlIE1UUlIgc3RhdGUgZm9yIHRoaXMgQ1BVLgorICoKKyAqIE5PVEU6IFRoZSBDUFUgbXVzdCBhbHJlYWR5IGJlIGluIGEgc2FmZSBzdGF0ZSBmb3IgTVRSUiBjaGFuZ2VzLgorICogUkVUVVJOUzogMCBpZiBubyBjaGFuZ2VzIG1hZGUsIGVsc2UgYSBtYXNrIGluZGljYXRpbmcgd2hhdCB3YXMgY2hhbmdlZC4KKyAqLwogc3RhdGljIHVuc2lnbmVkIGxvbmcgc2V0X210cnJfc3RhdGUodm9pZCkKLS8qICBbU1VNTUFSWV0gU2V0IHRoZSBNVFJSIHN0YXRlIGZvciB0aGlzIENQVS4KLSAgICA8c3RhdGU+IFRoZSBNVFJSIHN0YXRlIGluZm9ybWF0aW9uIHRvIHJlYWQuCi0gICAgPGN0eHQ+IFNvbWUgcmVsZXZhbnQgQ1BVIGNvbnRleHQuCi0gICAgW05PVEVdIFRoZSBDUFUgbXVzdCBhbHJlYWR5IGJlIGluIGEgc2FmZSBzdGF0ZSBmb3IgTVRSUiBjaGFuZ2VzLgotICAgIFtSRVRVUk5TXSAwIGlmIG5vIGNoYW5nZXMgbWFkZSwgZWxzZSBhIG1hc2sgaW5kaWNhdGlvbiB3aGF0IHdhcyBjaGFuZ2VkLgotKi8KIHsKIAl1bnNpZ25lZCBpbnQgaTsKIAl1bnNpZ25lZCBsb25nIGNoYW5nZV9tYXNrID0gMDsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9jcHUvbXRyci9tYWluLmMgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L210cnIvbWFpbi5jCmluZGV4IGJlODMzMzYuLmE2NDUwYjMgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9jcHUvbXRyci9tYWluLmMKKysrIGIvYXJjaC94ODYva2VybmVsL2NwdS9tdHJyL21haW4uYwpAQCAtNzExLDcgKzcxMSw4IEBACiAJCXRyaW1fc2l6ZSA9IGVuZF9wZm47CiAJCXRyaW1fc2l6ZSA8PD0gUEFHRV9TSElGVDsKIAkJdHJpbV9zaXplIC09IHRyaW1fc3RhcnQ7Ci0JCWFkZF9tZW1vcnlfcmVnaW9uKHRyaW1fc3RhcnQsIHRyaW1fc2l6ZSwgRTgyMF9SRVNFUlZFRCk7CisJCXVwZGF0ZV9tZW1vcnlfcmFuZ2UodHJpbV9zdGFydCwgdHJpbV9zaXplLCBFODIwX1JBTSwKKwkJCQkJRTgyMF9SRVNFUlZFRCk7CiAJCXVwZGF0ZV9lODIwKCk7CiAJCXJldHVybiAxOwogCX0KZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9jcHUvcGVyZmN0ci13YXRjaGRvZy5jIGIvYXJjaC94ODYva2VybmVsL2NwdS9wZXJmY3RyLXdhdGNoZG9nLmMKaW5kZXggOWI4MzgzMi4uYjk0M2UxMCAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVsL2NwdS9wZXJmY3RyLXdhdGNoZG9nLmMKKysrIGIvYXJjaC94ODYva2VybmVsL2NwdS9wZXJmY3RyLXdhdGNoZG9nLmMKQEAgLTY1Miw5ICs2NTIsNiBAQAogCQkJd2Rfb3BzID0gJnA2X3dkX29wczsKIAkJCWJyZWFrOwogCQljYXNlIDE1OgotCQkJaWYgKGJvb3RfY3B1X2RhdGEueDg2X21vZGVsID4gMHg0KQotCQkJCXJldHVybjsKLQogCQkJd2Rfb3BzID0gJnA0X3dkX29wczsKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgpAQCAtNjcwLDggKzY2NywxMCBAQAogewogCWlmICghd2Rfb3BzKSB7CiAJCXByb2JlX25taV93YXRjaGRvZygpOwotCQlpZiAoIXdkX29wcykKKwkJaWYgKCF3ZF9vcHMpIHsKKwkJCXByaW50ayhLRVJOX0lORk8gIk5NSSB3YXRjaGRvZzogQ1BVIG5vdCBzdXBwb3J0ZWRcbiIpOwogCQkJcmV0dXJuIC0xOworCQl9CiAKIAkJaWYgKCF3ZF9vcHMtPnJlc2VydmUoKSkgewogCQkJcHJpbnRrKEtFUk5fRVJSCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvZTgyMF8zMi5jIGIvYXJjaC94ODYva2VybmVsL2U4MjBfMzIuYwppbmRleCA0ZTE2ZWY0Li44MDQ0NGM1IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwvZTgyMF8zMi5jCisrKyBiL2FyY2gveDg2L2tlcm5lbC9lODIwXzMyLmMKQEAgLTc0OSw2ICs3NDksMzIgQEAKIAlyZXR1cm4gMDsKIH0KIGVhcmx5X3BhcmFtKCJtZW1tYXAiLCBwYXJzZV9tZW1tYXApOwordm9pZCBfX2luaXQgdXBkYXRlX21lbW9yeV9yYW5nZSh1NjQgc3RhcnQsIHU2NCBzaXplLCB1bnNpZ25lZCBvbGRfdHlwZSwKKwkJCQl1bnNpZ25lZCBuZXdfdHlwZSkKK3sKKwlpbnQgaTsKKworCUJVR19PTihvbGRfdHlwZSA9PSBuZXdfdHlwZSk7CisKKwlmb3IgKGkgPSAwOyBpIDwgZTgyMC5ucl9tYXA7IGkrKykgeworCQlzdHJ1Y3QgZTgyMGVudHJ5ICplaSA9ICZlODIwLm1hcFtpXTsKKwkJdTY0IGZpbmFsX3N0YXJ0LCBmaW5hbF9lbmQ7CisJCWlmIChlaS0+dHlwZSAhPSBvbGRfdHlwZSkKKwkJCWNvbnRpbnVlOworCQkvKiB0b3RhbGx5IGNvdmVyZWQ/ICovCisJCWlmIChlaS0+YWRkciA+PSBzdGFydCAmJiBlaS0+c2l6ZSA8PSBzaXplKSB7CisJCQllaS0+dHlwZSA9IG5ld190eXBlOworCQkJY29udGludWU7CisJCX0KKwkJLyogcGFydGlhbGx5IGNvdmVyZWQgKi8KKwkJZmluYWxfc3RhcnQgPSBtYXgoc3RhcnQsIGVpLT5hZGRyKTsKKwkJZmluYWxfZW5kID0gbWluKHN0YXJ0ICsgc2l6ZSwgZWktPmFkZHIgKyBlaS0+c2l6ZSk7CisJCWlmIChmaW5hbF9zdGFydCA+PSBmaW5hbF9lbmQpCisJCQljb250aW51ZTsKKwkJYWRkX21lbW9yeV9yZWdpb24oZmluYWxfc3RhcnQsIGZpbmFsX2VuZCAtIGZpbmFsX3N0YXJ0LAorCQkJCQkgbmV3X3R5cGUpOworCX0KK30KIHZvaWQgX19pbml0IHVwZGF0ZV9lODIwKHZvaWQpCiB7CiAJdTggbnJfbWFwOwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL2U4MjBfNjQuYyBiL2FyY2gveDg2L2tlcm5lbC9lODIwXzY0LmMKaW5kZXggOWY2NWI0Yy4uOWJlNjk3MSAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVsL2U4MjBfNjQuYworKysgYi9hcmNoL3g4Ni9rZXJuZWwvZTgyMF82NC5jCkBAIC03NDQsNiArNzQ0LDMzIEBACiAJfQogfQogCit2b2lkIF9faW5pdCB1cGRhdGVfbWVtb3J5X3JhbmdlKHU2NCBzdGFydCwgdTY0IHNpemUsIHVuc2lnbmVkIG9sZF90eXBlLAorCQkJCXVuc2lnbmVkIG5ld190eXBlKQoreworCWludCBpOworCisJQlVHX09OKG9sZF90eXBlID09IG5ld190eXBlKTsKKworCWZvciAoaSA9IDA7IGkgPCBlODIwLm5yX21hcDsgaSsrKSB7CisJCXN0cnVjdCBlODIwZW50cnkgKmVpID0gJmU4MjAubWFwW2ldOworCQl1NjQgZmluYWxfc3RhcnQsIGZpbmFsX2VuZDsKKwkJaWYgKGVpLT50eXBlICE9IG9sZF90eXBlKQorCQkJY29udGludWU7CisJCS8qIHRvdGFsbHkgY292ZXJlZD8gKi8KKwkJaWYgKGVpLT5hZGRyID49IHN0YXJ0ICYmIGVpLT5zaXplIDw9IHNpemUpIHsKKwkJCWVpLT50eXBlID0gbmV3X3R5cGU7CisJCQljb250aW51ZTsKKwkJfQorCQkvKiBwYXJ0aWFsbHkgY292ZXJlZCAqLworCQlmaW5hbF9zdGFydCA9IG1heChzdGFydCwgZWktPmFkZHIpOworCQlmaW5hbF9lbmQgPSBtaW4oc3RhcnQgKyBzaXplLCBlaS0+YWRkciArIGVpLT5zaXplKTsKKwkJaWYgKGZpbmFsX3N0YXJ0ID49IGZpbmFsX2VuZCkKKwkJCWNvbnRpbnVlOworCQlhZGRfbWVtb3J5X3JlZ2lvbihmaW5hbF9zdGFydCwgZmluYWxfZW5kIC0gZmluYWxfc3RhcnQsCisJCQkJCSBuZXdfdHlwZSk7CisJfQorfQorCiB2b2lkIF9faW5pdCB1cGRhdGVfZTgyMCh2b2lkKQogewogCXU4IG5yX21hcDsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9oZWFkXzMyLlMgYi9hcmNoL3g4Ni9rZXJuZWwvaGVhZF8zMi5TCmluZGV4IGZkOGNhNTMuLjc0ZDg3ZWEgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9oZWFkXzMyLlMKKysrIGIvYXJjaC94ODYva2VybmVsL2hlYWRfMzIuUwpAQCAtNjU3LDcgKzY1Nyw3IEBACiAJLmFzY2l6ICJVbmtub3duIGludGVycnVwdCBvciBmYXVsdCBhdCBFSVAgJXAgJXAgJXBcbiIKIAogZmF1bHRfbXNnOgotCS5hc2NpaQkJCQkJCQkJXAorCS5hc2NpegkJCQkJCQkJXAogLyogZmF1bHQgaW5mbzogKi8JIkJVRzogSW50ICVkOiBDUjIgJXBcbiIJCQkJXAogLyogcHVzaGEgcmVnczogKi8JIiAgICAgRURJICVwICBFU0kgJXAgIEVCUCAlcCAgRVNQICVwXG4iCQlcCiAJCQkiICAgICBFQlggJXAgIEVEWCAlcCAgRUNYICVwICBFQVggJXBcbiIJCVwKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9ocGV0LmMgYi9hcmNoL3g4Ni9rZXJuZWwvaHBldC5jCmluZGV4IDIzNWZkNmMuLjM2NjUyZWEgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9ocGV0LmMKKysrIGIvYXJjaC94ODYva2VybmVsL2hwZXQuYwpAQCAtMTMzLDEzICsxMzMsMTYgQEAKICNpZmRlZiBDT05GSUdfSFBFVF9FTVVMQVRFX1JUQwogCWhwZXRfcmVzZXJ2ZV90aW1lcigmaGQsIDEpOwogI2VuZGlmCisKIAloZC5oZF9pcnFbMF0gPSBIUEVUX0xFR0FDWV84MjU0OwogCWhkLmhkX2lycVsxXSA9IEhQRVRfTEVHQUNZX1JUQzsKIAotICAgICAgIGZvciAoaSA9IDI7IGkgPCBucnRpbWVyczsgdGltZXIrKywgaSsrKQotCSAgICAgICBoZC5oZF9pcnFbaV0gPSAodGltZXItPmhwZXRfY29uZmlnICYgVG5fSU5UX1JPVVRFX0NORl9NQVNLKSA+PgotCQkgICAgICAgVG5fSU5UX1JPVVRFX0NORl9TSElGVDsKKwlmb3IgKGkgPSAyOyBpIDwgbnJ0aW1lcnM7IHRpbWVyKyssIGkrKykKKwkJaGQuaGRfaXJxW2ldID0gKHRpbWVyLT5ocGV0X2NvbmZpZyAmIFRuX0lOVF9ST1VURV9DTkZfTUFTSykgPj4KKwkJCVRuX0lOVF9ST1VURV9DTkZfU0hJRlQ7CisKIAlocGV0X2FsbG9jKCZoZCk7CisKIH0KICNlbHNlCiBzdGF0aWMgdm9pZCBocGV0X3Jlc2VydmVfcGxhdGZvcm1fdGltZXJzKHVuc2lnbmVkIGxvbmcgaWQpIHsgfQpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL2lvX2RlbGF5LmMgYi9hcmNoL3g4Ni9rZXJuZWwvaW9fZGVsYXkuYwppbmRleCBjNzA2YTMwLi41OTIxZTVmIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwvaW9fZGVsYXkuYworKysgYi9hcmNoL3g4Ni9rZXJuZWwvaW9fZGVsYXkuYwpAQCAtNzgsNiArNzgsMTQgQEAKIAl9LAogCXsKIAkJLmNhbGxiYWNrCT0gZG1pX2lvX2RlbGF5XzB4ZWRfcG9ydCwKKwkJLmlkZW50CQk9ICJIUCBQYXZpbGlvbiBkdjYwMDAiLAorCQkubWF0Y2hlcwk9IHsKKwkJCURNSV9NQVRDSChETUlfQk9BUkRfVkVORE9SLCAiUXVhbnRhIiksCisJCQlETUlfTUFUQ0goRE1JX0JPQVJEX05BTUUsICIzMEI4IikKKwkJfQorCX0sCisJeworCQkuY2FsbGJhY2sJPSBkbWlfaW9fZGVsYXlfMHhlZF9wb3J0LAogCQkuaWRlbnQJCT0gIkhQIFBhdmlsaW9uIHR4MTAwMCIsCiAJCS5tYXRjaGVzCT0gewogCQkJRE1JX01BVENIKERNSV9CT0FSRF9WRU5ET1IsICJRdWFudGEiKSwKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9tYWNoaW5lX2tleGVjXzY0LmMgYi9hcmNoL3g4Ni9rZXJuZWwvbWFjaGluZV9rZXhlY182NC5jCmluZGV4IDIzNmQyZjguLjU3NmEwM2QgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9tYWNoaW5lX2tleGVjXzY0LmMKKysrIGIvYXJjaC94ODYva2VybmVsL21hY2hpbmVfa2V4ZWNfNjQuYwpAQCAtMjMzLDYgKzIzMyw3IEBACiAKIHZvaWQgYXJjaF9jcmFzaF9zYXZlX3ZtY29yZWluZm8odm9pZCkKIHsKKwlWTUNPUkVJTkZPX1NZTUJPTChwaHlzX2Jhc2UpOwogCVZNQ09SRUlORk9fU1lNQk9MKGluaXRfbGV2ZWw0X3BndCk7CiAKICNpZmRlZiBDT05GSUdfTlVNQQpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL21mZ3B0XzMyLmMgYi9hcmNoL3g4Ni9rZXJuZWwvbWZncHRfMzIuYwppbmRleCAwMjdmYzA2Li5iNDAyYzBmIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwvbWZncHRfMzIuYworKysgYi9hcmNoL3g4Ni9rZXJuZWwvbWZncHRfMzIuYwpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CiAjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CiAjaW5jbHVkZSA8YXNtL2dlb2RlLmg+CiAKIHN0YXRpYyBzdHJ1Y3QgbWZncHRfdGltZXJfdCB7CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvcGNpLWRtYV82NC5jIGIvYXJjaC94ODYva2VybmVsL3BjaS1kbWFfNjQuYwppbmRleCBhODI0NzNkLi4zNzVjYjJiIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwvcGNpLWRtYV82NC5jCisrKyBiL2FyY2gveDg2L2tlcm5lbC9wY2ktZG1hXzY0LmMKQEAgLTUzLDExICs1Myw2IEBACiAJaW50IG5vZGU7CiAKIAlub2RlID0gZGV2X3RvX25vZGUoZGV2KTsKLQlpZiAobm9kZSA9PSAtMSkKLQkJbm9kZSA9IG51bWFfbm9kZV9pZCgpOwotCi0JaWYgKG5vZGUgPCBmaXJzdF9ub2RlKG5vZGVfb25saW5lX21hcCkpCi0JCW5vZGUgPSBmaXJzdF9ub2RlKG5vZGVfb25saW5lX21hcCk7CiAKIAlwYWdlID0gYWxsb2NfcGFnZXNfbm9kZShub2RlLCBnZnAsIG9yZGVyKTsKIAlyZXR1cm4gcGFnZSA/IHBhZ2VfYWRkcmVzcyhwYWdlKSA6IE5VTEw7CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvcGNpLWdhcnRfNjQuYyBiL2FyY2gveDg2L2tlcm5lbC9wY2ktZ2FydF82NC5jCmluZGV4IGZhZjMyMjkuLjcwMGU0NjQgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9wY2ktZ2FydF82NC5jCisrKyBiL2FyY2gveDg2L2tlcm5lbC9wY2ktZ2FydF82NC5jCkBAIC02MTUsOCArNjE1LDggQEAKIAogIG5vbW11OgogCS8qIFNob3VsZCBub3QgaGFwcGVuIGFueW1vcmUgKi8KLQlwcmludGsoS0VSTl9FUlIgIlBDSS1ETUE6IE1vcmUgdGhhbiA0R0Igb2YgUkFNIGFuZCBubyBJT01NVVxuIgotCSAgICAgICBLRVJOX0VSUiAiUENJLURNQTogMzJiaXQgUENJIElPIG1heSBtYWxmdW5jdGlvbi5cbiIpOworCXByaW50ayhLRVJOX1dBUk5JTkcgIlBDSS1ETUE6IE1vcmUgdGhhbiA0R0Igb2YgUkFNIGFuZCBubyBJT01NVVxuIgorCSAgICAgICBLRVJOX1dBUk5JTkcgImZhbGxpbmcgYmFjayB0byBpb21tdT1zb2Z0LlxuIik7CiAJcmV0dXJuIC0xOwogfQogCkBAIC02OTIsOSArNjkyLDkgQEAKIAkgICAgIWdhcnRfaW9tbXVfYXBlcnR1cmUgfHwKIAkgICAgKG5vX2FncCAmJiBpbml0X2s4X2dhdHQoJmluZm8pIDwgMCkpIHsKIAkJaWYgKGVuZF9wZm4gPiBNQVhfRE1BMzJfUEZOKSB7Ci0JCQlwcmludGsoS0VSTl9FUlIgIldBUk5JTkcgbW9yZSB0aGFuIDRHQiBvZiBtZW1vcnkgIgotCQkJCQkiYnV0IEdBUlQgSU9NTVUgbm90IGF2YWlsYWJsZS5cbiIKLQkJCSAgICAgICBLRVJOX0VSUiAiV0FSTklORyAzMmJpdCBQQ0kgbWF5IG1hbGZ1bmN0aW9uLlxuIik7CisJCQlwcmludGsoS0VSTl9XQVJOSU5HICJNb3JlIHRoYW4gNEdCIG9mIG1lbW9yeSAiCisJCQkgICAgICAgCSAgICAgICAgICAiYnV0IEdBUlQgSU9NTVUgbm90IGF2YWlsYWJsZS5cbiIKKwkJCSAgICAgICBLRVJOX1dBUk5JTkcgImZhbGxpbmcgYmFjayB0byBpb21tdT1zb2Z0LlxuIik7CiAJCX0KIAkJcmV0dXJuOwogCX0KZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9wcm9jZXNzXzMyLmMgYi9hcmNoL3g4Ni9rZXJuZWwvcHJvY2Vzc18zMi5jCmluZGV4IGJlM2M3YTIuLjQzOTMwZTcgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9wcm9jZXNzXzMyLmMKKysrIGIvYXJjaC94ODYva2VybmVsL3Byb2Nlc3NfMzIuYwpAQCAtODIsNyArODIsNiBAQAogICovCiB2b2lkICgqcG1faWRsZSkodm9pZCk7CiBFWFBPUlRfU1lNQk9MKHBtX2lkbGUpOwotc3RhdGljIERFRklORV9QRVJfQ1BVKHVuc2lnbmVkIGludCwgY3B1X2lkbGVfc3RhdGUpOwogCiB2b2lkIGRpc2FibGVfaGx0KHZvaWQpCiB7CkBAIC0xOTAsOSArMTg5LDYgQEAKIAkJd2hpbGUgKCFuZWVkX3Jlc2NoZWQoKSkgewogCQkJdm9pZCAoKmlkbGUpKHZvaWQpOwogCi0JCQlpZiAoX19nZXRfY3B1X3ZhcihjcHVfaWRsZV9zdGF0ZSkpCi0JCQkJX19nZXRfY3B1X3ZhcihjcHVfaWRsZV9zdGF0ZSkgPSAwOwotCiAJCQljaGVja19wZ3RfY2FjaGUoKTsKIAkJCXJtYigpOwogCQkJaWRsZSA9IHBtX2lkbGU7CkBAIC0yMjAsNDAgKzIxNiwxOSBAQAogewogfQogCisvKgorICogY3B1X2lkbGVfd2FpdCAtIFVzZWQgdG8gZW5zdXJlIHRoYXQgYWxsIHRoZSBDUFVzIGRpc2NhcmQgb2xkIHZhbHVlIG9mCisgKiBwbV9pZGxlIGFuZCB1cGRhdGUgdG8gbmV3IHBtX2lkbGUgdmFsdWUuIFJlcXVpcmVkIHdoaWxlIGNoYW5naW5nIHBtX2lkbGUKKyAqIGhhbmRsZXIgb24gU01QIHN5c3RlbXMuCisgKgorICogQ2FsbGVyIG11c3QgaGF2ZSBjaGFuZ2VkIHBtX2lkbGUgdG8gdGhlIG5ldyB2YWx1ZSBiZWZvcmUgdGhlIGNhbGwuIE9sZAorICogcG1faWRsZSB2YWx1ZSB3aWxsIG5vdCBiZSB1c2VkIGJ5IGFueSBDUFUgYWZ0ZXIgdGhlIHJldHVybiBvZiB0aGlzIGZ1bmN0aW9uLgorICovCiB2b2lkIGNwdV9pZGxlX3dhaXQodm9pZCkKIHsKLQl1bnNpZ25lZCBpbnQgY3B1LCB0aGlzX2NwdSA9IGdldF9jcHUoKTsKLQljcHVtYXNrX3QgbWFwLCB0bXAgPSBjdXJyZW50LT5jcHVzX2FsbG93ZWQ7Ci0KLQlzZXRfY3B1c19hbGxvd2VkKGN1cnJlbnQsIGNwdW1hc2tfb2ZfY3B1KHRoaXNfY3B1KSk7Ci0JcHV0X2NwdSgpOwotCi0JY3B1c19jbGVhcihtYXApOwotCWZvcl9lYWNoX29ubGluZV9jcHUoY3B1KSB7Ci0JCXBlcl9jcHUoY3B1X2lkbGVfc3RhdGUsIGNwdSkgPSAxOwotCQljcHVfc2V0KGNwdSwgbWFwKTsKLQl9Ci0KLQlfX2dldF9jcHVfdmFyKGNwdV9pZGxlX3N0YXRlKSA9IDA7Ci0KLQl3bWIoKTsKLQlkbyB7Ci0JCXNzbGVlcCgxKTsKLQkJZm9yX2VhY2hfb25saW5lX2NwdShjcHUpIHsKLQkJCWlmIChjcHVfaXNzZXQoY3B1LCBtYXApICYmICFwZXJfY3B1KGNwdV9pZGxlX3N0YXRlLCBjcHUpKQotCQkJCWNwdV9jbGVhcihjcHUsIG1hcCk7Ci0JCX0KLQkJY3B1c19hbmQobWFwLCBtYXAsIGNwdV9vbmxpbmVfbWFwKTsKLQkJLyoKLQkJICogV2Ugd2FpdGVkIDEgc2VjLCBpZiBhIENQVSBzdGlsbCBkaWQgbm90IGNhbGwgaWRsZQotCQkgKiBpdCBtYXkgYmUgYmVjYXVzZSBpdCBpcyBpbiBpZGxlIGFuZCBub3Qgd2FraW5nIHVwCi0JCSAqIGJlY2F1c2UgaXQgaGFzIG5vdGhpbmcgdG8gZG8uCi0JCSAqIEdpdmUgYWxsIHRoZSByZW1haW5pbmcgQ1BVUyBhIGtpY2suCi0JCSAqLwotCQlzbXBfY2FsbF9mdW5jdGlvbl9tYXNrKG1hcCwgZG9fbm90aGluZywgTlVMTCwgMCk7Ci0JfSB3aGlsZSAoIWNwdXNfZW1wdHkobWFwKSk7Ci0KLQlzZXRfY3B1c19hbGxvd2VkKGN1cnJlbnQsIHRtcCk7CisJc21wX21iKCk7CisJLyoga2ljayBhbGwgdGhlIENQVXMgc28gdGhhdCB0aGV5IGV4aXQgb3V0IG9mIHBtX2lkbGUgKi8KKwlzbXBfY2FsbF9mdW5jdGlvbihkb19ub3RoaW5nLCBOVUxMLCAwLCAxKTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGNwdV9pZGxlX3dhaXQpOwogCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvcHJvY2Vzc182NC5jIGIvYXJjaC94ODYva2VybmVsL3Byb2Nlc3NfNjQuYwppbmRleCAzYmFmOWI5Li40NmM0YzU0IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwvcHJvY2Vzc182NC5jCisrKyBiL2FyY2gveDg2L2tlcm5lbC9wcm9jZXNzXzY0LmMKQEAgLTYzLDcgKzYzLDYgQEAKICAqLwogdm9pZCAoKnBtX2lkbGUpKHZvaWQpOwogRVhQT1JUX1NZTUJPTChwbV9pZGxlKTsKLXN0YXRpYyBERUZJTkVfUEVSX0NQVSh1bnNpZ25lZCBpbnQsIGNwdV9pZGxlX3N0YXRlKTsKIAogc3RhdGljIEFUT01JQ19OT1RJRklFUl9IRUFEKGlkbGVfbm90aWZpZXIpOwogCkBAIC0xNzMsOSArMTcyLDYgQEAKIAkJd2hpbGUgKCFuZWVkX3Jlc2NoZWQoKSkgewogCQkJdm9pZCAoKmlkbGUpKHZvaWQpOwogCi0JCQlpZiAoX19nZXRfY3B1X3ZhcihjcHVfaWRsZV9zdGF0ZSkpCi0JCQkJX19nZXRfY3B1X3ZhcihjcHVfaWRsZV9zdGF0ZSkgPSAwOwotCiAJCQlybWIoKTsKIAkJCWlkbGUgPSBwbV9pZGxlOwogCQkJaWYgKCFpZGxlKQpAQCAtMjA3LDQwICsyMDMsMTkgQEAKIHsKIH0KIAorLyoKKyAqIGNwdV9pZGxlX3dhaXQgLSBVc2VkIHRvIGVuc3VyZSB0aGF0IGFsbCB0aGUgQ1BVcyBkaXNjYXJkIG9sZCB2YWx1ZSBvZgorICogcG1faWRsZSBhbmQgdXBkYXRlIHRvIG5ldyBwbV9pZGxlIHZhbHVlLiBSZXF1aXJlZCB3aGlsZSBjaGFuZ2luZyBwbV9pZGxlCisgKiBoYW5kbGVyIG9uIFNNUCBzeXN0ZW1zLgorICoKKyAqIENhbGxlciBtdXN0IGhhdmUgY2hhbmdlZCBwbV9pZGxlIHRvIHRoZSBuZXcgdmFsdWUgYmVmb3JlIHRoZSBjYWxsLiBPbGQKKyAqIHBtX2lkbGUgdmFsdWUgd2lsbCBub3QgYmUgdXNlZCBieSBhbnkgQ1BVIGFmdGVyIHRoZSByZXR1cm4gb2YgdGhpcyBmdW5jdGlvbi4KKyAqLwogdm9pZCBjcHVfaWRsZV93YWl0KHZvaWQpCiB7Ci0JdW5zaWduZWQgaW50IGNwdSwgdGhpc19jcHUgPSBnZXRfY3B1KCk7Ci0JY3B1bWFza190IG1hcCwgdG1wID0gY3VycmVudC0+Y3B1c19hbGxvd2VkOwotCi0Jc2V0X2NwdXNfYWxsb3dlZChjdXJyZW50LCBjcHVtYXNrX29mX2NwdSh0aGlzX2NwdSkpOwotCXB1dF9jcHUoKTsKLQotCWNwdXNfY2xlYXIobWFwKTsKLQlmb3JfZWFjaF9vbmxpbmVfY3B1KGNwdSkgewotCQlwZXJfY3B1KGNwdV9pZGxlX3N0YXRlLCBjcHUpID0gMTsKLQkJY3B1X3NldChjcHUsIG1hcCk7Ci0JfQotCi0JX19nZXRfY3B1X3ZhcihjcHVfaWRsZV9zdGF0ZSkgPSAwOwotCi0Jd21iKCk7Ci0JZG8gewotCQlzc2xlZXAoMSk7Ci0JCWZvcl9lYWNoX29ubGluZV9jcHUoY3B1KSB7Ci0JCQlpZiAoY3B1X2lzc2V0KGNwdSwgbWFwKSAmJiAhcGVyX2NwdShjcHVfaWRsZV9zdGF0ZSwgY3B1KSkKLQkJCQljcHVfY2xlYXIoY3B1LCBtYXApOwotCQl9Ci0JCWNwdXNfYW5kKG1hcCwgbWFwLCBjcHVfb25saW5lX21hcCk7Ci0JCS8qCi0JCSAqIFdlIHdhaXRlZCAxIHNlYywgaWYgYSBDUFUgc3RpbGwgZGlkIG5vdCBjYWxsIGlkbGUKLQkJICogaXQgbWF5IGJlIGJlY2F1c2UgaXQgaXMgaW4gaWRsZSBhbmQgbm90IHdha2luZyB1cAotCQkgKiBiZWNhdXNlIGl0IGhhcyBub3RoaW5nIHRvIGRvLgotCQkgKiBHaXZlIGFsbCB0aGUgcmVtYWluaW5nIENQVVMgYSBraWNrLgotCQkgKi8KLQkJc21wX2NhbGxfZnVuY3Rpb25fbWFzayhtYXAsIGRvX25vdGhpbmcsIDAsIDApOwotCX0gd2hpbGUgKCFjcHVzX2VtcHR5KG1hcCkpOwotCi0Jc2V0X2NwdXNfYWxsb3dlZChjdXJyZW50LCB0bXApOworCXNtcF9tYigpOworCS8qIGtpY2sgYWxsIHRoZSBDUFVzIHNvIHRoYXQgdGhleSBleGl0IG91dCBvZiBwbV9pZGxlICovCisJc21wX2NhbGxfZnVuY3Rpb24oZG9fbm90aGluZywgTlVMTCwgMCwgMSk7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTChjcHVfaWRsZV93YWl0KTsKIApkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL3B0cmFjZS5jIGIvYXJjaC94ODYva2VybmVsL3B0cmFjZS5jCmluZGV4IGQ1OTA0ZWUuLmViOTJjY2IgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9wdHJhY2UuYworKysgYi9hcmNoL3g4Ni9rZXJuZWwvcHRyYWNlLmMKQEAgLTYwMCwyMSArNjAwLDYgQEAKIAlyZXR1cm4gc2l6ZW9mKHJldCk7CiB9CiAKLXN0YXRpYyBpbnQgcHRyYWNlX2J0c193cml0ZV9yZWNvcmQoc3RydWN0IHRhc2tfc3RydWN0ICpjaGlsZCwKLQkJCQkgICBjb25zdCBzdHJ1Y3QgYnRzX3N0cnVjdCAqaW4pCi17Ci0JaW50IHJldHZhbDsKLQotCWlmICghY2hpbGQtPnRocmVhZC5kc19hcmVhX21zcikKLQkJcmV0dXJuIC1FTlhJTzsKLQotCXJldHZhbCA9IGRzX3dyaXRlX2J0cygodm9pZCAqKWNoaWxkLT50aHJlYWQuZHNfYXJlYV9tc3IsIGluKTsKLQlpZiAocmV0dmFsKQotCQlyZXR1cm4gcmV0dmFsOwotCi0JcmV0dXJuIHNpemVvZigqaW4pOwotfQotCiBzdGF0aWMgaW50IHB0cmFjZV9idHNfY2xlYXIoc3RydWN0IHRhc2tfc3RydWN0ICpjaGlsZCkKIHsKIAlpZiAoIWNoaWxkLT50aHJlYWQuZHNfYXJlYV9tc3IpCkBAIC02NTcsNzUgKzY0Miw2IEBACiAJcmV0dXJuIGVuZDsKIH0KIAotc3RhdGljIGludCBwdHJhY2VfYnRzX3JlYWxsb2Moc3RydWN0IHRhc2tfc3RydWN0ICpjaGlsZCwKLQkJCSAgICAgIGludCBzaXplLCBpbnQgcmVkdWNlX3NpemUpCi17Ci0JdW5zaWduZWQgbG9uZyBybGltLCB2bTsKLQlpbnQgcmV0LCBvbGRfc2l6ZTsKLQotCWlmIChzaXplIDwgMCkKLQkJcmV0dXJuIC1FSU5WQUw7Ci0KLQlvbGRfc2l6ZSA9IGRzX2dldF9idHNfc2l6ZSgodm9pZCAqKWNoaWxkLT50aHJlYWQuZHNfYXJlYV9tc3IpOwotCWlmIChvbGRfc2l6ZSA8IDApCi0JCXJldHVybiBvbGRfc2l6ZTsKLQotCXJldCA9IGRzX2ZyZWUoKHZvaWQgKiopJmNoaWxkLT50aHJlYWQuZHNfYXJlYV9tc3IpOwotCWlmIChyZXQgPCAwKQotCQlnb3RvIG91dDsKLQotCXNpemUgPj49IFBBR0VfU0hJRlQ7Ci0Jb2xkX3NpemUgPj49IFBBR0VfU0hJRlQ7Ci0KLQljdXJyZW50LT5tbS0+dG90YWxfdm0gIC09IG9sZF9zaXplOwotCWN1cnJlbnQtPm1tLT5sb2NrZWRfdm0gLT0gb2xkX3NpemU7Ci0KLQlpZiAoc2l6ZSA9PSAwKQotCQlnb3RvIG91dDsKLQotCXJsaW0gPSBjdXJyZW50LT5zaWduYWwtPnJsaW1bUkxJTUlUX0FTXS5ybGltX2N1ciA+PiBQQUdFX1NISUZUOwotCXZtID0gY3VycmVudC0+bW0tPnRvdGFsX3ZtICArIHNpemU7Ci0JaWYgKHJsaW0gPCB2bSkgewotCQlyZXQgPSAtRU5PTUVNOwotCi0JCWlmICghcmVkdWNlX3NpemUpCi0JCQlnb3RvIG91dDsKLQotCQlzaXplID0gcmxpbSAtIGN1cnJlbnQtPm1tLT50b3RhbF92bTsKLQkJaWYgKHNpemUgPD0gMCkKLQkJCWdvdG8gb3V0OwotCX0KLQotCXJsaW0gPSBjdXJyZW50LT5zaWduYWwtPnJsaW1bUkxJTUlUX01FTUxPQ0tdLnJsaW1fY3VyID4+IFBBR0VfU0hJRlQ7Ci0Jdm0gPSBjdXJyZW50LT5tbS0+bG9ja2VkX3ZtICArIHNpemU7Ci0JaWYgKHJsaW0gPCB2bSkgewotCQlyZXQgPSAtRU5PTUVNOwotCi0JCWlmICghcmVkdWNlX3NpemUpCi0JCQlnb3RvIG91dDsKLQotCQlzaXplID0gcmxpbSAtIGN1cnJlbnQtPm1tLT5sb2NrZWRfdm07Ci0JCWlmIChzaXplIDw9IDApCi0JCQlnb3RvIG91dDsKLQl9Ci0KLQlyZXQgPSBkc19hbGxvY2F0ZSgodm9pZCAqKikmY2hpbGQtPnRocmVhZC5kc19hcmVhX21zciwKLQkJCSAgc2l6ZSA8PCBQQUdFX1NISUZUKTsKLQlpZiAocmV0IDwgMCkKLQkJZ290byBvdXQ7Ci0KLQljdXJyZW50LT5tbS0+dG90YWxfdm0gICs9IHNpemU7Ci0JY3VycmVudC0+bW0tPmxvY2tlZF92bSArPSBzaXplOwotCi1vdXQ6Ci0JaWYgKGNoaWxkLT50aHJlYWQuZHNfYXJlYV9tc3IpCi0JCXNldF90c2tfdGhyZWFkX2ZsYWcoY2hpbGQsIFRJRl9EU19BUkVBX01TUik7Ci0JZWxzZQotCQljbGVhcl90c2tfdGhyZWFkX2ZsYWcoY2hpbGQsIFRJRl9EU19BUkVBX01TUik7Ci0KLQlyZXR1cm4gcmV0OwotfQotCiBzdGF0aWMgaW50IHB0cmFjZV9idHNfY29uZmlnKHN0cnVjdCB0YXNrX3N0cnVjdCAqY2hpbGQsCiAJCQkgICAgIGxvbmcgY2ZnX3NpemUsCiAJCQkgICAgIGNvbnN0IHN0cnVjdCBwdHJhY2VfYnRzX2NvbmZpZyBfX3VzZXIgKnVjZmcpCkBAIC04MjgsNiArNzQ0LDkxIEBACiAJcmV0dXJuIHNpemVvZihjZmcpOwogfQogCisKK3N0YXRpYyBpbnQgcHRyYWNlX2J0c193cml0ZV9yZWNvcmQoc3RydWN0IHRhc2tfc3RydWN0ICpjaGlsZCwKKwkJCQkgICBjb25zdCBzdHJ1Y3QgYnRzX3N0cnVjdCAqaW4pCit7CisJaW50IHJldHZhbDsKKworCWlmICghY2hpbGQtPnRocmVhZC5kc19hcmVhX21zcikKKwkJcmV0dXJuIC1FTlhJTzsKKworCXJldHZhbCA9IGRzX3dyaXRlX2J0cygodm9pZCAqKWNoaWxkLT50aHJlYWQuZHNfYXJlYV9tc3IsIGluKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCisJcmV0dXJuIHNpemVvZigqaW4pOworfQorCitzdGF0aWMgaW50IHB0cmFjZV9idHNfcmVhbGxvYyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKmNoaWxkLAorCQkJICAgICAgaW50IHNpemUsIGludCByZWR1Y2Vfc2l6ZSkKK3sKKwl1bnNpZ25lZCBsb25nIHJsaW0sIHZtOworCWludCByZXQsIG9sZF9zaXplOworCisJaWYgKHNpemUgPCAwKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCW9sZF9zaXplID0gZHNfZ2V0X2J0c19zaXplKCh2b2lkICopY2hpbGQtPnRocmVhZC5kc19hcmVhX21zcik7CisJaWYgKG9sZF9zaXplIDwgMCkKKwkJcmV0dXJuIG9sZF9zaXplOworCisJcmV0ID0gZHNfZnJlZSgodm9pZCAqKikmY2hpbGQtPnRocmVhZC5kc19hcmVhX21zcik7CisJaWYgKHJldCA8IDApCisJCWdvdG8gb3V0OworCisJc2l6ZSA+Pj0gUEFHRV9TSElGVDsKKwlvbGRfc2l6ZSA+Pj0gUEFHRV9TSElGVDsKKworCWN1cnJlbnQtPm1tLT50b3RhbF92bSAgLT0gb2xkX3NpemU7CisJY3VycmVudC0+bW0tPmxvY2tlZF92bSAtPSBvbGRfc2l6ZTsKKworCWlmIChzaXplID09IDApCisJCWdvdG8gb3V0OworCisJcmxpbSA9IGN1cnJlbnQtPnNpZ25hbC0+cmxpbVtSTElNSVRfQVNdLnJsaW1fY3VyID4+IFBBR0VfU0hJRlQ7CisJdm0gPSBjdXJyZW50LT5tbS0+dG90YWxfdm0gICsgc2l6ZTsKKwlpZiAocmxpbSA8IHZtKSB7CisJCXJldCA9IC1FTk9NRU07CisKKwkJaWYgKCFyZWR1Y2Vfc2l6ZSkKKwkJCWdvdG8gb3V0OworCisJCXNpemUgPSBybGltIC0gY3VycmVudC0+bW0tPnRvdGFsX3ZtOworCQlpZiAoc2l6ZSA8PSAwKQorCQkJZ290byBvdXQ7CisJfQorCisJcmxpbSA9IGN1cnJlbnQtPnNpZ25hbC0+cmxpbVtSTElNSVRfTUVNTE9DS10ucmxpbV9jdXIgPj4gUEFHRV9TSElGVDsKKwl2bSA9IGN1cnJlbnQtPm1tLT5sb2NrZWRfdm0gICsgc2l6ZTsKKwlpZiAocmxpbSA8IHZtKSB7CisJCXJldCA9IC1FTk9NRU07CisKKwkJaWYgKCFyZWR1Y2Vfc2l6ZSkKKwkJCWdvdG8gb3V0OworCisJCXNpemUgPSBybGltIC0gY3VycmVudC0+bW0tPmxvY2tlZF92bTsKKwkJaWYgKHNpemUgPD0gMCkKKwkJCWdvdG8gb3V0OworCX0KKworCXJldCA9IGRzX2FsbG9jYXRlKCh2b2lkICoqKSZjaGlsZC0+dGhyZWFkLmRzX2FyZWFfbXNyLAorCQkJICBzaXplIDw8IFBBR0VfU0hJRlQpOworCWlmIChyZXQgPCAwKQorCQlnb3RvIG91dDsKKworCWN1cnJlbnQtPm1tLT50b3RhbF92bSAgKz0gc2l6ZTsKKwljdXJyZW50LT5tbS0+bG9ja2VkX3ZtICs9IHNpemU7CisKK291dDoKKwlpZiAoY2hpbGQtPnRocmVhZC5kc19hcmVhX21zcikKKwkJc2V0X3Rza190aHJlYWRfZmxhZyhjaGlsZCwgVElGX0RTX0FSRUFfTVNSKTsKKwllbHNlCisJCWNsZWFyX3Rza190aHJlYWRfZmxhZyhjaGlsZCwgVElGX0RTX0FSRUFfTVNSKTsKKworCXJldHVybiByZXQ7Cit9CisKIHZvaWQgcHRyYWNlX2J0c190YWtlX3RpbWVzdGFtcChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywKIAkJCSAgICAgICBlbnVtIGJ0c19xdWFsaWZpZXIgcXVhbGlmaWVyKQogewpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL3F1aXJrcy5jIGIvYXJjaC94ODYva2VybmVsL3F1aXJrcy5jCmluZGV4IGM0NzIwOGYuLmQ4OWE2NDggMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9xdWlya3MuYworKysgYi9hcmNoL3g4Ni9rZXJuZWwvcXVpcmtzLmMKQEAgLTM2Myw2ICszNjMsOCBAQAogCQkJbnZpZGlhX2ZvcmNlX2VuYWJsZV9ocGV0KTsKIAogLyogTFBDIGJyaWRnZXMgKi8KK0RFQ0xBUkVfUENJX0ZJWFVQX0hFQURFUihQQ0lfVkVORE9SX0lEX05WSURJQSwgMHgwMjYwLAorCQkJbnZpZGlhX2ZvcmNlX2VuYWJsZV9ocGV0KTsKIERFQ0xBUkVfUENJX0ZJWFVQX0hFQURFUihQQ0lfVkVORE9SX0lEX05WSURJQSwgMHgwMzYwLAogCQkJbnZpZGlhX2ZvcmNlX2VuYWJsZV9ocGV0KTsKIERFQ0xBUkVfUENJX0ZJWFVQX0hFQURFUihQQ0lfVkVORE9SX0lEX05WSURJQSwgMHgwMzYxLApkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL3JlYm9vdC5jIGIvYXJjaC94ODYva2VybmVsL3JlYm9vdC5jCmluZGV4IDU1Y2ViOGMuLjQ4NGM0YTggMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9yZWJvb3QuYworKysgYi9hcmNoL3g4Ni9rZXJuZWwvcmVib290LmMKQEAgLTE1Miw2ICsxNTIsMjQgQEAKIAkJCURNSV9NQVRDSChETUlfQk9BUkRfTkFNRSwgIjBXRjgxMCIpLAogCQl9LAogCX0sCisJeyAgICAgICAvKiBIYW5kbGUgcHJvYmxlbXMgd2l0aCByZWJvb3Rpbmcgb24gRGVsbCBPcHRpcGxleCA3NDUncyBERkYqLworCQkuY2FsbGJhY2sgPSBzZXRfYmlvc19yZWJvb3QsCisJCS5pZGVudCA9ICJEZWxsIE9wdGlQbGV4IDc0NSIsCisJCS5tYXRjaGVzID0geworCQkJRE1JX01BVENIKERNSV9TWVNfVkVORE9SLCAiRGVsbCBJbmMuIiksCisJCQlETUlfTUFUQ0goRE1JX1BST0RVQ1RfTkFNRSwgIk9wdGlQbGV4IDc0NSIpLAorCQkJRE1JX01BVENIKERNSV9CT0FSRF9OQU1FLCAiME1NNTk5IiksCisJCX0sCisJfSwKKwl7ICAgICAgIC8qIEhhbmRsZSBwcm9ibGVtcyB3aXRoIHJlYm9vdGluZyBvbiBEZWxsIE9wdGlwbGV4IDc0NSB3aXRoIDBLVzYyNiAqLworCQkuY2FsbGJhY2sgPSBzZXRfYmlvc19yZWJvb3QsCisJCS5pZGVudCA9ICJEZWxsIE9wdGlQbGV4IDc0NSIsCisJCS5tYXRjaGVzID0geworCQkJRE1JX01BVENIKERNSV9TWVNfVkVORE9SLCAiRGVsbCBJbmMuIiksCisJCQlETUlfTUFUQ0goRE1JX1BST0RVQ1RfTkFNRSwgIk9wdGlQbGV4IDc0NSIpLAorCQkJRE1JX01BVENIKERNSV9CT0FSRF9OQU1FLCAiMEtXNjI2IiksCisJCX0sCisJfSwKIAl7CS8qIEhhbmRsZSBwcm9ibGVtcyB3aXRoIHJlYm9vdGluZyBvbiBEZWxsIDI0MDAncyAqLwogCQkuY2FsbGJhY2sgPSBzZXRfYmlvc19yZWJvb3QsCiAJCS5pZGVudCA9ICJEZWxsIFBvd2VyRWRnZSAyNDAwIiwKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9zZXR1cDY0LmMgYi9hcmNoL3g4Ni9rZXJuZWwvc2V0dXA2NC5jCmluZGV4IDMwOTM2NmYuLmUyNGM0NTYgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9zZXR1cDY0LmMKKysrIGIvYXJjaC94ODYva2VybmVsL3NldHVwNjQuYwpAQCAtMTQyLDE0ICsxNDIsMTYgQEAKIAlwcmludGsoS0VSTl9JTkZPICJQRVJDUFU6IEFsbG9jYXRpbmcgJWx1IGJ5dGVzIG9mIHBlciBjcHUgZGF0YVxuIiwgc2l6ZSk7CiAJZm9yX2VhY2hfY3B1X21hc2sgKGksIGNwdV9wb3NzaWJsZV9tYXApIHsKIAkJY2hhciAqcHRyOworI2lmbmRlZiBDT05GSUdfTkVFRF9NVUxUSVBMRV9OT0RFUworCQlwdHIgPSBhbGxvY19ib290bWVtX3BhZ2VzKHNpemUpOworI2Vsc2UKKwkJaW50IG5vZGUgPSBlYXJseV9jcHVfdG9fbm9kZShpKTsKIAotCQlpZiAoIU5PREVfREFUQShlYXJseV9jcHVfdG9fbm9kZShpKSkpIHsKLQkJCXByaW50aygiY3B1IHdpdGggbm8gbm9kZSAlZCwgbnVtX29ubGluZV9ub2RlcyAlZFxuIiwKLQkJCSAgICAgICBpLCBudW1fb25saW5lX25vZGVzKCkpOworCQlpZiAoIW5vZGVfb25saW5lKG5vZGUpIHx8ICFOT0RFX0RBVEEobm9kZSkpCiAJCQlwdHIgPSBhbGxvY19ib290bWVtX3BhZ2VzKHNpemUpOwotCQl9IGVsc2UgeyAKLQkJCXB0ciA9IGFsbG9jX2Jvb3RtZW1fcGFnZXNfbm9kZShOT0RFX0RBVEEoZWFybHlfY3B1X3RvX25vZGUoaSkpLCBzaXplKTsKLQkJfQorCQllbHNlCisJCQlwdHIgPSBhbGxvY19ib290bWVtX3BhZ2VzX25vZGUoTk9ERV9EQVRBKG5vZGUpLCBzaXplKTsKKyNlbmRpZgogCQlpZiAoIXB0cikKIAkJCXBhbmljKCJDYW5ub3QgYWxsb2NhdGUgY3B1IGRhdGEgZm9yIENQVSAlZFxuIiwgaSk7CiAJCWNwdV9wZGEoaSktPmRhdGFfb2Zmc2V0ID0gcHRyIC0gX19wZXJfY3B1X3N0YXJ0OwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL3NldHVwXzMyLmMgYi9hcmNoL3g4Ni9rZXJuZWwvc2V0dXBfMzIuYwppbmRleCBhMWQ3MDcxLi4yYjNlNWQ0IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwvc2V0dXBfMzIuYworKysgYi9hcmNoL3g4Ni9rZXJuZWwvc2V0dXBfMzIuYwpAQCAtNDA2LDggKzQwNiw2IEBACiAJICovCiAJbWluX2xvd19wZm4gPSBQRk5fVVAoaW5pdF9wZ190YWJsZXNfZW5kKTsKIAotCWZpbmRfbWF4X3BmbigpOwotCiAJbWF4X2xvd19wZm4gPSBmaW5kX21heF9sb3dfcGZuKCk7CiAKICNpZmRlZiBDT05GSUdfSElHSE1FTQpAQCAtNzY0LDEyICs3NjIsMTMgQEAKIAlpZiAoZWZpX2VuYWJsZWQpCiAJCWVmaV9pbml0KCk7CiAKLQltYXhfbG93X3BmbiA9IHNldHVwX21lbW9yeSgpOwotCiAJLyogdXBkYXRlIGU4MjAgZm9yIG1lbW9yeSBub3QgY292ZXJlZCBieSBXQiBNVFJScyAqLworCWZpbmRfbWF4X3BmbigpOwogCW10cnJfYnBfaW5pdCgpOwogCWlmIChtdHJyX3RyaW1fdW5jYWNoZWRfbWVtb3J5KG1heF9wZm4pKQotCQltYXhfbG93X3BmbiA9IHNldHVwX21lbW9yeSgpOworCQlmaW5kX21heF9wZm4oKTsKKworCW1heF9sb3dfcGZuID0gc2V0dXBfbWVtb3J5KCk7CiAKICNpZmRlZiBDT05GSUdfVk1JCiAJLyoKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9zZXR1cF82NC5jIGIvYXJjaC94ODYva2VybmVsL3NldHVwXzY0LmMKaW5kZXggNzYzN2RjOS4uZjRmN2VjZiAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVsL3NldHVwXzY0LmMKKysrIGIvYXJjaC94ODYva2VybmVsL3NldHVwXzY0LmMKQEAgLTgwMSw3ICs4MDEsNyBAQAogCS8qIERvbid0IGRvIHRoZSBmdW5reSBmYWxsYmFjayBoZXVyaXN0aWNzIHRoZSBBTUQgdmVyc2lvbiBlbXBsb3lzCiAJICAgZm9yIG5vdy4gKi8KIAlub2RlID0gYXBpY2lkX3RvX25vZGVbYXBpY2lkXTsKLQlpZiAobm9kZSA9PSBOVU1BX05PX05PREUpCisJaWYgKG5vZGUgPT0gTlVNQV9OT19OT0RFIHx8ICFub2RlX29ubGluZShub2RlKSkKIAkJbm9kZSA9IGZpcnN0X25vZGUobm9kZV9vbmxpbmVfbWFwKTsKIAludW1hX3NldF9ub2RlKGNwdSwgbm9kZSk7CiAKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9zdGVwLmMgYi9hcmNoL3g4Ni9rZXJuZWwvc3RlcC5jCmluZGV4IDlkNDA2Y2QuLjA3MWZmNDcgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9zdGVwLmMKKysrIGIvYXJjaC94ODYva2VybmVsL3N0ZXAuYwpAQCAtMTQwLDYgKzE0MCw5IEBACiAgKi8KIHN0YXRpYyB2b2lkIHdyaXRlX2RlYnVnY3RsbXNyKHN0cnVjdCB0YXNrX3N0cnVjdCAqY2hpbGQsIHVuc2lnbmVkIGxvbmcgdmFsKQogeworCWlmIChjaGlsZC0+dGhyZWFkLmRlYnVnY3RsbXNyID09IHZhbCkKKwkJcmV0dXJuOworCiAJY2hpbGQtPnRocmVhZC5kZWJ1Z2N0bG1zciA9IHZhbDsKIAogCWlmIChjaGlsZCAhPSBjdXJyZW50KQpAQCAtMTY1LDExICsxNjgsMTEgQEAKIAkJd3JpdGVfZGVidWdjdGxtc3IoY2hpbGQsCiAJCQkJICBjaGlsZC0+dGhyZWFkLmRlYnVnY3RsbXNyIHwgREVCVUdDVExNU1JfQlRGKTsKIAl9IGVsc2UgewotCSAgICB3cml0ZV9kZWJ1Z2N0bG1zcihjaGlsZCwKLQkJCSAgICAgIGNoaWxkLT50aHJlYWQuZGVidWdjdGxtc3IgJiB+REVCVUdDVExNU1JfQlRGKTsKKwkJd3JpdGVfZGVidWdjdGxtc3IoY2hpbGQsCisJCQkJICBjaGlsZC0+dGhyZWFkLmRlYnVnY3RsbXNyICYgfkRFQlVHQ1RMTVNSX0JURik7CiAKLQkgICAgaWYgKCFjaGlsZC0+dGhyZWFkLmRlYnVnY3RsbXNyKQotCQkgICAgY2xlYXJfdHNrX3RocmVhZF9mbGFnKGNoaWxkLCBUSUZfREVCVUdDVExNU1IpOworCQlpZiAoIWNoaWxkLT50aHJlYWQuZGVidWdjdGxtc3IpCisJCQljbGVhcl90c2tfdGhyZWFkX2ZsYWcoY2hpbGQsIFRJRl9ERUJVR0NUTE1TUik7CiAJfQogfQogCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvdGxzLmMgYi9hcmNoL3g4Ni9rZXJuZWwvdGxzLmMKaW5kZXggMDIyYmNhYS4uYWI2YmYzNyAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVsL3Rscy5jCisrKyBiL2FyY2gveDg2L2tlcm5lbC90bHMuYwpAQCAtOTIsNyArOTIsNyBAQAogYXNtbGlua2FnZSBpbnQgc3lzX3NldF90aHJlYWRfYXJlYShzdHJ1Y3QgdXNlcl9kZXNjIF9fdXNlciAqdV9pbmZvKQogewogCWludCByZXQgPSBkb19zZXRfdGhyZWFkX2FyZWEoY3VycmVudCwgLTEsIHVfaW5mbywgMSk7Ci0JcHJldmVudF90YWlsX2NhbGwocmV0KTsKKwlhc21saW5rYWdlX3Byb3RlY3QoMSwgcmV0LCB1X2luZm8pOwogCXJldHVybiByZXQ7CiB9CiAKQEAgLTE0Miw3ICsxNDIsNyBAQAogYXNtbGlua2FnZSBpbnQgc3lzX2dldF90aHJlYWRfYXJlYShzdHJ1Y3QgdXNlcl9kZXNjIF9fdXNlciAqdV9pbmZvKQogewogCWludCByZXQgPSBkb19nZXRfdGhyZWFkX2FyZWEoY3VycmVudCwgLTEsIHVfaW5mbyk7Ci0JcHJldmVudF90YWlsX2NhbGwocmV0KTsKKwlhc21saW5rYWdlX3Byb3RlY3QoMSwgcmV0LCB1X2luZm8pOwogCXJldHVybiByZXQ7CiB9CiAKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC90c2NfMzIuYyBiL2FyY2gveDg2L2tlcm5lbC90c2NfMzIuYwppbmRleCBmMTRjZmQ5Li5jMjI0MWUwIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwvdHNjXzMyLmMKKysrIGIvYXJjaC94ODYva2VybmVsL3RzY18zMi5jCkBAIC0yNTYsOSArMjU2LDcgQEAKIAkJCQkJCXJlZl9mcmVxLCBmcmVxLT5uZXcpOwogCQkJaWYgKCEoZnJlcS0+ZmxhZ3MgJiBDUFVGUkVRX0NPTlNUX0xPT1BTKSkgewogCQkJCXRzY19raHogPSBjcHVfa2h6OwotCQkJCXByZWVtcHRfZGlzYWJsZSgpOwotCQkJCXNldF9jeWMybnNfc2NhbGUoY3B1X2toeiwgc21wX3Byb2Nlc3Nvcl9pZCgpKTsKLQkJCQlwcmVlbXB0X2VuYWJsZSgpOworCQkJCXNldF9jeWMybnNfc2NhbGUoY3B1X2toeiwgZnJlcS0+Y3B1KTsKIAkJCQkvKgogCQkJCSAqIFRTQyBiYXNlZCBzY2hlZF9jbG9jayB0dXJucwogCQkJCSAqIHRvIGp1bmsgdy8gY3B1ZnJlcQpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL3RzY182NC5jIGIvYXJjaC94ODYva2VybmVsL3RzY182NC5jCmluZGV4IDk0NzU1NGQuLmQzYmViYWEgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC90c2NfNjQuYworKysgYi9hcmNoL3g4Ni9rZXJuZWwvdHNjXzY0LmMKQEAgLTE0OCw5ICsxNDgsNyBAQAogCQkJbWFya190c2NfdW5zdGFibGUoImNwdWZyZXEgY2hhbmdlcyIpOwogCX0KIAotCXByZWVtcHRfZGlzYWJsZSgpOwotCXNldF9jeWMybnNfc2NhbGUodHNjX2toel9yZWYsIHNtcF9wcm9jZXNzb3JfaWQoKSk7Ci0JcHJlZW1wdF9lbmFibGUoKTsKKwlzZXRfY3ljMm5zX3NjYWxlKHRzY19raHpfcmVmLCBmcmVxLT5jcHUpOwogCiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vbW11LmMgYi9hcmNoL3g4Ni9rdm0vbW11LmMKaW5kZXggZDgxNzJhYS4uZTU1YWYxMiAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL21tdS5jCisrKyBiL2FyY2gveDg2L2t2bS9tbXUuYwpAQCAtMjIyLDggKzIyMiw3IEBACiAKIHN0YXRpYyBpbnQgaXNfcm1hcF9wdGUodTY0IHB0ZSkKIHsKLQlyZXR1cm4gcHRlICE9IHNoYWRvd190cmFwX25vbnByZXNlbnRfcHRlCi0JCSYmIHB0ZSAhPSBzaGFkb3dfbm90cmFwX25vbnByZXNlbnRfcHRlOworCXJldHVybiBpc19zaGFkb3dfcHJlc2VudF9wdGUocHRlKTsKIH0KIAogc3RhdGljIGdmbl90IHBzZTM2X2dmbl9kZWx0YSh1MzIgZ3B0ZSkKQEAgLTg5MywxNCArODkyLDI1IEBACiAJCQkgaW50ICpwdHdyaXRlLCBnZm5fdCBnZm4sIHN0cnVjdCBwYWdlICpwYWdlKQogewogCXU2NCBzcHRlOwotCWludCB3YXNfcm1hcHBlZCA9IGlzX3JtYXBfcHRlKCpzaGFkb3dfcHRlKTsKKwlpbnQgd2FzX3JtYXBwZWQgPSAwOwogCWludCB3YXNfd3JpdGVibGUgPSBpc193cml0ZWJsZV9wdGUoKnNoYWRvd19wdGUpOworCWhmbl90IGhvc3RfcGZuID0gKCpzaGFkb3dfcHRlICYgUFQ2NF9CQVNFX0FERFJfTUFTSykgPj4gUEFHRV9TSElGVDsKIAogCXBncHJpbnRrKCIlczogc3B0ZSAlbGx4IGFjY2VzcyAleCB3cml0ZV9mYXVsdCAlZCIKIAkJICIgdXNlcl9mYXVsdCAlZCBnZm4gJWx4XG4iLAogCQkgX19GVU5DVElPTl9fLCAqc2hhZG93X3B0ZSwgcHRfYWNjZXNzLAogCQkgd3JpdGVfZmF1bHQsIHVzZXJfZmF1bHQsIGdmbik7CiAKKwlpZiAoaXNfcm1hcF9wdGUoKnNoYWRvd19wdGUpKSB7CisJCWlmIChob3N0X3BmbiAhPSBwYWdlX3RvX3BmbihwYWdlKSkgeworCQkJcGdwcmludGsoImhmbiBvbGQgJWx4IG5ldyAlbHhcbiIsCisJCQkJIGhvc3RfcGZuLCBwYWdlX3RvX3BmbihwYWdlKSk7CisJCQlybWFwX3JlbW92ZSh2Y3B1LT5rdm0sIHNoYWRvd19wdGUpOworCQl9CisJCWVsc2UKKwkJCXdhc19ybWFwcGVkID0gMTsKKwl9CisKIAkvKgogCSAqIFdlIGRvbid0IHNldCB0aGUgYWNjZXNzZWQgYml0LCBzaW5jZSB3ZSBzb21ldGltZXMgd2FudCB0byBzZWUKIAkgKiB3aGV0aGVyIHRoZSBndWVzdCBhY3R1YWxseSB1c2VkIHRoZSBwdGUgKGluIG9yZGVyIHRvIGRldGVjdApAQCAtMTQwMiw3ICsxNDEyLDcgQEAKIAl1cF9yZWFkKCZjdXJyZW50LT5tbS0+bW1hcF9zZW0pOwogCiAJdmNwdS0+YXJjaC51cGRhdGVfcHRlLmdmbiA9IGdmbjsKLQl2Y3B1LT5hcmNoLnVwZGF0ZV9wdGUucGFnZSA9IGdmbl90b19wYWdlKHZjcHUtPmt2bSwgZ2ZuKTsKKwl2Y3B1LT5hcmNoLnVwZGF0ZV9wdGUucGFnZSA9IHBhZ2U7CiB9CiAKIHZvaWQga3ZtX21tdV9wdGVfd3JpdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBncGEsCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vdm14LmMgYi9hcmNoL3g4Ni9rdm0vdm14LmMKaW5kZXggOTRlYTcyNC4uOGUxNDYyOCAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL3ZteC5jCisrKyBiL2FyY2gveDg2L2t2bS92bXguYwpAQCAtMzQ5LDggKzM0OSw2IEBACiAKIHN0YXRpYyB2b2lkIHJlbG9hZF90c3Modm9pZCkKIHsKLSNpZm5kZWYgQ09ORklHX1g4Nl82NAotCiAJLyoKIAkgKiBWVCByZXN0b3JlcyBUUiBidXQgbm90IGl0cyBzaXplLiAgVXNlbGVzcy4KIAkgKi8KQEAgLTM2MSw3ICszNTksNiBAQAogCWRlc2NzID0gKHZvaWQgKilnZHQuYmFzZTsKIAlkZXNjc1tHRFRfRU5UUllfVFNTXS50eXBlID0gOTsgLyogYXZhaWxhYmxlIFRTUyAqLwogCWxvYWRfVFJfZGVzYygpOwotI2VuZGlmCiB9CiAKIHN0YXRpYyB2b2lkIGxvYWRfdHJhbnNpdGlvbl9lZmVyKHN0cnVjdCB2Y3B1X3ZteCAqdm14KQpAQCAtMTQzNiw3ICsxNDMzLDcgQEAKIAlpbnQgcmV0ID0gMDsKIAlpbnQgcjsKIAotCWRvd25fcmVhZCgmY3VycmVudC0+bW0tPm1tYXBfc2VtKTsKKwlkb3duX3JlYWQoJmt2bS0+c2xvdHNfbG9jayk7CiAJciA9IGt2bV9jbGVhcl9ndWVzdF9wYWdlKGt2bSwgZm4sIDAsIFBBR0VfU0laRSk7CiAJaWYgKHIgPCAwKQogCQlnb3RvIG91dDsKQEAgLTE0NTksNyArMTQ1Niw3IEBACiAKIAlyZXQgPSAxOwogb3V0OgotCXVwX3JlYWQoJmN1cnJlbnQtPm1tLT5tbWFwX3NlbSk7CisJdXBfcmVhZCgma3ZtLT5zbG90c19sb2NrKTsKIAlyZXR1cm4gcmV0OwogfQogCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9sZ3Vlc3QvYm9vdC5jIGIvYXJjaC94ODYvbGd1ZXN0L2Jvb3QuYwppbmRleCBhMTA0YzUzLi4zMzM1YjQ1IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9sZ3Vlc3QvYm9vdC5jCisrKyBiL2FyY2gveDg2L2xndWVzdC9ib290LmMKQEAgLTEwLDIxICsxMCwxOSBAQAogICogKHN1Y2ggYXMgdGhlIGV4YW1wbGUgaW4gRG9jdW1lbnRhdGlvbi9sZ3Vlc3QvbGd1ZXN0LmMpIGlzIGNhbGxlZCB0aGUKICAqIExhdW5jaGVyLgogICoKLSAqIFNlY29uZGx5LCB3ZSBvbmx5IHJ1biBzcGVjaWFsbHkgbW9kaWZpZWQgR3Vlc3RzLCBub3Qgbm9ybWFsIGtlcm5lbHMuICBXaGVuCi0gKiB5b3Ugc2V0IENPTkZJR19MR1VFU1QgdG8gJ3knIG9yICdtJywgdGhpcyBhdXRvbWF0aWNhbGx5IHNldHMKLSAqIENPTkZJR19MR1VFU1RfR1VFU1Q9eSwgd2hpY2ggY29tcGlsZXMgdGhpcyBmaWxlIGludG8gdGhlIGtlcm5lbCBzbyBpdCBrbm93cwotICogaG93IHRvIGJlIGEgR3Vlc3QuICBUaGlzIG1lYW5zIHRoYXQgeW91IGNhbiB1c2UgdGhlIHNhbWUga2VybmVsIHlvdSBib290Ci0gKiBub3JtYWxseSAoaWUuIGFzIGEgSG9zdCkgYXMgYSBHdWVzdC4KKyAqIFNlY29uZGx5LCB3ZSBvbmx5IHJ1biBzcGVjaWFsbHkgbW9kaWZpZWQgR3Vlc3RzLCBub3Qgbm9ybWFsIGtlcm5lbHM6IHNldHRpbmcKKyAqIENPTkZJR19MR1VFU1RfR1VFU1QgdG8gInkiIGNvbXBpbGVzIHRoaXMgZmlsZSBpbnRvIHRoZSBrZXJuZWwgc28gaXQga25vd3MKKyAqIGhvdyB0byBiZSBhIEd1ZXN0IGF0IGJvb3QgdGltZS4gIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIHVzZSB0aGUgc2FtZSBrZXJuZWwKKyAqIHlvdSBib290IG5vcm1hbGx5IChpZS4gYXMgYSBIb3N0KSBhcyBhIEd1ZXN0LgogICoKICAqIFRoZXNlIEd1ZXN0cyBrbm93IHRoYXQgdGhleSBjYW5ub3QgZG8gcHJpdmlsZWdlZCBvcGVyYXRpb25zLCBzdWNoIGFzIGRpc2FibGUKICAqIGludGVycnVwdHMsIGFuZCB0aGF0IHRoZXkgaGF2ZSB0byBhc2sgdGhlIEhvc3QgdG8gZG8gc3VjaCB0aGluZ3MgZXhwbGljaXRseS4KICAqIFRoaXMgZmlsZSBjb25zaXN0cyBvZiBhbGwgdGhlIHJlcGxhY2VtZW50cyBmb3Igc3VjaCBsb3ctbGV2ZWwgbmF0aXZlCiAgKiBoYXJkd2FyZSBvcGVyYXRpb25zOiB0aGVzZSBzcGVjaWFsIEd1ZXN0IHZlcnNpb25zIGNhbGwgdGhlIEhvc3QuCiAgKgotICogU28gaG93IGRvZXMgdGhlIGtlcm5lbCBrbm93IGl0J3MgYSBHdWVzdD8gIFRoZSBHdWVzdCBzdGFydHMgYXQgYSBzcGVjaWFsCi0gKiBlbnRyeSBwb2ludCBtYXJrZWQgd2l0aCBhIG1hZ2ljIHN0cmluZywgd2hpY2ggc2V0cyB1cCBhIGZldyB0aGluZ3MgdGhlbgotICogY2FsbHMgaGVyZS4gIFdlIHJlcGxhY2UgdGhlIG5hdGl2ZSBmdW5jdGlvbnMgdmFyaW91cyAicGFyYXZpcnQiIHN0cnVjdHVyZXMKLSAqIHdpdGggb3VyIEd1ZXN0IHZlcnNpb25zLCB0aGVuIGJvb3QgbGlrZSBub3JtYWwuIDoqLworICogU28gaG93IGRvZXMgdGhlIGtlcm5lbCBrbm93IGl0J3MgYSBHdWVzdD8gIFdlJ2xsIHNlZSB0aGF0IGxhdGVyLCBidXQgbGV0J3MKKyAqIGp1c3Qgc2F5IHRoYXQgd2UgZW5kIHVwIGhlcmUgd2hlcmUgd2UgcmVwbGFjZSB0aGUgbmF0aXZlIGZ1bmN0aW9ucyB2YXJpb3VzCisgKiAicGFyYXZpcnQiIHN0cnVjdHVyZXMgd2l0aCBvdXIgR3Vlc3QgdmVyc2lvbnMsIHRoZW4gYm9vdCBsaWtlIG5vcm1hbC4gOiovCiAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIFJ1c3R5IFJ1c3NlbGwgPHJ1c3R5QHJ1c3Rjb3JwLmNvbS5hdT4gSUJNIENvcnBvcmF0aW9uLgpAQCAtMTM0LDcgKzEzMiw3IEBACiAgKiBsZ3Vlc3RfbGVhdmVfbGF6eV9tb2RlKCkuCiAgKgogICogU28sIHdoZW4gd2UncmUgaW4gbGF6eSBtb2RlLCB3ZSBjYWxsIGFzeW5jX2hjYWxsKCkgdG8gc3RvcmUgdGhlIGNhbGwgZm9yCi0gKiBmdXR1cmUgcHJvY2Vzc2luZy4gKi8KKyAqIGZ1dHVyZSBwcm9jZXNzaW5nOiAqLwogc3RhdGljIHZvaWQgbGF6eV9oY2FsbCh1bnNpZ25lZCBsb25nIGNhbGwsCiAJCSAgICAgICB1bnNpZ25lZCBsb25nIGFyZzEsCiAJCSAgICAgICB1bnNpZ25lZCBsb25nIGFyZzIsCkBAIC0xNDcsNyArMTQ1LDcgQEAKIH0KIAogLyogV2hlbiBsYXp5IG1vZGUgaXMgdHVybmVkIG9mZiByZXNldCB0aGUgcGVyLWNwdSBsYXp5IG1vZGUgdmFyaWFibGUgYW5kIHRoZW4KLSAqIGlzc3VlIGEgaHlwZXJjYWxsIHRvIGZsdXNoIGFueSBzdG9yZWQgY2FsbHMuICovCisgKiBpc3N1ZSB0aGUgZG8tbm90aGluZyBoeXBlcmNhbGwgdG8gZmx1c2ggYW55IHN0b3JlZCBjYWxscy4gKi8KIHN0YXRpYyB2b2lkIGxndWVzdF9sZWF2ZV9sYXp5X21vZGUodm9pZCkKIHsKIAlwYXJhdmlydF9sZWF2ZV9sYXp5KHBhcmF2aXJ0X2dldF9sYXp5X21vZGUoKSk7CkBAIC0xNjQsNyArMTYyLDcgQEAKICAqCiAgKiBTbyBpbnN0ZWFkIHdlIGtlZXAgYW4gImlycV9lbmFibGVkIiBmaWVsZCBpbnNpZGUgb3VyICJzdHJ1Y3QgbGd1ZXN0X2RhdGEiLAogICogd2hpY2ggdGhlIEd1ZXN0IGNhbiB1cGRhdGUgd2l0aCBhIHNpbmdsZSBpbnN0cnVjdGlvbi4gIFRoZSBIb3N0IGtub3dzIHRvCi0gKiBjaGVjayB0aGVyZSB3aGVuIGl0IHdhbnRzIHRvIGRlbGl2ZXIgYW4gaW50ZXJydXB0LgorICogY2hlY2sgdGhlcmUgYmVmb3JlIGl0IHRyaWVzIHRvIGRlbGl2ZXIgYW4gaW50ZXJydXB0LgogICovCiAKIC8qIHNhdmVfZmxhZ3MoKSBpcyBleHBlY3RlZCB0byByZXR1cm4gdGhlIHByb2Nlc3NvciBzdGF0ZSAoaWUuICJmbGFncyIpLiAgVGhlCkBAIC0xOTYsMTAgKzE5NCwxNSBAQAogLypNOjAwMyBOb3RlIHRoYXQgd2UgZG9uJ3QgY2hlY2sgZm9yIG91dHN0YW5kaW5nIGludGVycnVwdHMgd2hlbiB3ZSByZS1lbmFibGUKICAqIHRoZW0gKG9yIHdoZW4gd2UgdW5tYXNrIGFuIGludGVycnVwdCkuICBUaGlzIHNlZW1zIHRvIHdvcmsgZm9yIHRoZSBtb21lbnQsCiAgKiBzaW5jZSBpbnRlcnJ1cHRzIGFyZSByYXJlIGFuZCB3ZSdsbCBqdXN0IGdldCB0aGUgaW50ZXJydXB0IG9uIHRoZSBuZXh0IHRpbWVyCi0gKiB0aWNrLCBidXQgd2hlbiB3ZSB0dXJuIG9uIENPTkZJR19OT19IWiwgd2Ugc2hvdWxkIHJldmlzaXQgdGhpcy4gIE9uZSB3YXkKKyAqIHRpY2ssIGJ1dCBub3cgd2UgY2FuIHJ1biB3aXRoIENPTkZJR19OT19IWiwgd2Ugc2hvdWxkIHJldmlzaXQgdGhpcy4gIE9uZSB3YXkKICAqIHdvdWxkIGJlIHRvIHB1dCB0aGUgImlycV9lbmFibGVkIiBmaWVsZCBpbiBhIHBhZ2UgYnkgaXRzZWxmLCBhbmQgaGF2ZSB0aGUKICAqIEhvc3Qgd3JpdGUtcHJvdGVjdCBpdCB3aGVuIGFuIGludGVycnVwdCBjb21lcyBpbiB3aGVuIGlycXMgYXJlIGRpc2FibGVkLgotICogVGhlcmUgd2lsbCB0aGVuIGJlIGEgcGFnZSBmYXVsdCBhcyBzb29uIGFzIGludGVycnVwdHMgYXJlIHJlLWVuYWJsZWQuIDoqLworICogVGhlcmUgd2lsbCB0aGVuIGJlIGEgcGFnZSBmYXVsdCBhcyBzb29uIGFzIGludGVycnVwdHMgYXJlIHJlLWVuYWJsZWQuCisgKgorICogQSBiZXR0ZXIgbWV0aG9kIGlzIHRvIGltcGxlbWVudCBzb2Z0IGludGVycnVwdCBkaXNhYmxlIGdlbmVyYWxseSBmb3IgeDg2OgorICogaW5zdGVhZCBvZiBkaXNhYmxpbmcgaW50ZXJydXB0cywgd2Ugc2V0IGEgZmxhZy4gIElmIGFuIGludGVycnVwdCBkb2VzIGNvbWUKKyAqIGluLCB3ZSB0aGVuIGRpc2FibGUgdGhlbSBmb3IgcmVhbC4gIFRoaXMgaXMgdW5jb21tb24sIHNvIHdlIGNvdWxkIHNpbXBseSB1c2UKKyAqIGEgaHlwZXJjYWxsIGZvciBpbnRlcnJ1cHQgY29udHJvbCBhbmQgbm90IHdvcnJ5IGFib3V0IGVmZmljaWVuY3kuIDoqLwogCiAvKkc6MDM0CiAgKiBUaGUgSW50ZXJydXB0IERlc2NyaXB0b3IgVGFibGUgKElEVCkuCkBAIC0yMTIsNiArMjE1LDEwIEBACiBzdGF0aWMgdm9pZCBsZ3Vlc3Rfd3JpdGVfaWR0X2VudHJ5KGdhdGVfZGVzYyAqZHQsCiAJCQkJICAgaW50IGVudHJ5bnVtLCBjb25zdCBnYXRlX2Rlc2MgKmcpCiB7CisJLyogVGhlIGdhdGVfZGVzYyBzdHJ1Y3R1cmUgaXMgOCBieXRlcyBsb25nOiB3ZSBoYW5kIGl0IHRvIHRoZSBIb3N0IGluCisJICogdHdvIDMyLWJpdCBjaHVua3MuICBUaGUgd2hvbGUgMzItYml0IGtlcm5lbCB1c2VkIHRvIGhhbmQgZGVzY3JpcHRvcnMKKwkgKiBhcm91bmQgbGlrZSB0aGlzOyB0eXBlc2FmZXR5IHdhc24ndCBhIGJpZyBjb25jZXJuIGluIExpbnV4J3MgZWFybHkKKwkgKiB5ZWFycy4gKi8KIAl1MzIgKmRlc2MgPSAodTMyICopZzsKIAkvKiBLZWVwIHRoZSBsb2NhbCBjb3B5IHVwIHRvIGRhdGUuICovCiAJbmF0aXZlX3dyaXRlX2lkdF9lbnRyeShkdCwgZW50cnludW0sIGcpOwpAQCAtMjQzLDcgKzI1MCw4IEBACiAgKgogICogVGhpcyBpcyB0aGUgb3Bwb3NpdGUgb2YgdGhlIElEVCBjb2RlIHdoZXJlIHdlIGhhdmUgYSBMT0FEX0lEVF9FTlRSWQogICogaHlwZXJjYWxsIGFuZCB1c2UgdGhhdCByZXBlYXRlZGx5IHRvIGxvYWQgYSBuZXcgSURULiAgSSBkb24ndCB0aGluayBpdAotICogcmVhbGx5IG1hdHRlcnMsIGJ1dCB3b3VsZG4ndCBpdCBiZSBuaWNlIGlmIHRoZXkgd2VyZSB0aGUgc2FtZT8KKyAqIHJlYWxseSBtYXR0ZXJzLCBidXQgd291bGRuJ3QgaXQgYmUgbmljZSBpZiB0aGV5IHdlcmUgdGhlIHNhbWU/ICBXb3VsZG4ndAorICogaXQgYmUgZXZlbiBiZXR0ZXIgaWYgeW91IHdlcmUgdGhlIG9uZSB0byBzZW5kIHRoZSBwYXRjaCB0byBmaXggaXQ/CiAgKi8KIHN0YXRpYyB2b2lkIGxndWVzdF9sb2FkX2dkdChjb25zdCBzdHJ1Y3QgZGVzY19wdHIgKmRlc2MpCiB7CkBAIC0yOTgsOSArMzA2LDkgQEAKIAogLyogVGhlICJjcHVpZCIgaW5zdHJ1Y3Rpb24gaXMgYSB3YXkgb2YgcXVlcnlpbmcgYm90aCB0aGUgQ1BVIGlkZW50aXR5CiAgKiAobWFudWZhY3R1cmVyLCBtb2RlbCwgZXRjKSBhbmQgaXRzIGZlYXR1cmVzLiAgSXQgd2FzIGludHJvZHVjZWQgYmVmb3JlIHRoZQotICogUGVudGl1bSBpbiAxOTkzIGFuZCBrZWVwcyBnZXR0aW5nIGV4dGVuZGVkIGJ5IGJvdGggSW50ZWwgYW5kIEFNRC4gIEFzIHlvdQotICogbWlnaHQgaW1hZ2luZSwgYWZ0ZXIgYSBkZWNhZGUgYW5kIGEgaGFsZiB0aGlzIHRyZWF0bWVudCwgaXQgaXMgbm93IGEgZ2lhbnQKLSAqIGJhbGwgb2YgaGFpci4gIEl0cyBlbnRyeSBpbiB0aGUgY3VycmVudCBJbnRlbCBtYW51YWwgcnVucyB0byAyOCBwYWdlcy4KKyAqIFBlbnRpdW0gaW4gMTk5MyBhbmQga2VlcHMgZ2V0dGluZyBleHRlbmRlZCBieSBib3RoIEludGVsLCBBTUQgYW5kIG90aGVycy4KKyAqIEFzIHlvdSBtaWdodCBpbWFnaW5lLCBhZnRlciBhIGRlY2FkZSBhbmQgYSBoYWxmIHRoaXMgdHJlYXRtZW50LCBpdCBpcyBub3cgYQorICogZ2lhbnQgYmFsbCBvZiBoYWlyLiAgSXRzIGVudHJ5IGluIHRoZSBjdXJyZW50IEludGVsIG1hbnVhbCBydW5zIHRvIDI4IHBhZ2VzLgogICoKICAqIFRoaXMgaW5zdHJ1Y3Rpb24gZXZlbiBpdCBoYXMgaXRzIG93biBXaWtpcGVkaWEgZW50cnkuICBUaGUgV2lraXBlZGlhIGVudHJ5CiAgKiBoYXMgYmVlbiB0cmFuc2xhdGVkIGludG8gNCBsYW5ndWFnZXMuICBJIGFtIG5vdCBtYWtpbmcgdGhpcyB1cCEKQEAgLTU5NCwxNyArNjAyLDE3IEBACiAJcmV0dXJuIGxndWVzdF9kYXRhLnRpbWUudHZfc2VjOwogfQogCi0vKiBUaGUgVFNDIGlzIGEgVGltZSBTdGFtcCBDb3VudGVyLiAgVGhlIEhvc3QgdGVsbHMgdXMgd2hhdCBzcGVlZCBpdCBydW5zIGF0LAotICogb3IgMCBpZiBpdCdzIHVudXNhYmxlIGFzIGEgcmVsaWFibGUgY2xvY2sgc291cmNlLiAgVGhpcyBtYXRjaGVzIHdoYXQgd2Ugd2FudAotICogaGVyZTogaWYgd2UgcmV0dXJuIDAgZnJvbSB0aGlzIGZ1bmN0aW9uLCB0aGUgeDg2IFRTQyBjbG9jayB3aWxsIG5vdCByZWdpc3RlcgotICogaXRzZWxmLiAqLworLyogVGhlIFRTQyBpcyBhbiBJbnRlbCB0aGluZyBjYWxsZWQgdGhlIFRpbWUgU3RhbXAgQ291bnRlci4gIFRoZSBIb3N0IHRlbGxzIHVzCisgKiB3aGF0IHNwZWVkIGl0IHJ1bnMgYXQsIG9yIDAgaWYgaXQncyB1bnVzYWJsZSBhcyBhIHJlbGlhYmxlIGNsb2NrIHNvdXJjZS4KKyAqIFRoaXMgbWF0Y2hlcyB3aGF0IHdlIHdhbnQgaGVyZTogaWYgd2UgcmV0dXJuIDAgZnJvbSB0aGlzIGZ1bmN0aW9uLCB0aGUgeDg2CisgKiBUU0MgY2xvY2sgd2lsbCBnaXZlIHVwIGFuZCBub3QgcmVnaXN0ZXIgaXRzZWxmLiAqLwogc3RhdGljIHVuc2lnbmVkIGxvbmcgbGd1ZXN0X2NwdV9raHoodm9pZCkKIHsKIAlyZXR1cm4gbGd1ZXN0X2RhdGEudHNjX2toejsKIH0KIAotLyogSWYgd2UgY2FuJ3QgdXNlIHRoZSBUU0MsIHRoZSBrZXJuZWwgZmFsbHMgYmFjayB0byBvdXIgImxndWVzdF9jbG9jayIsIHdoZXJlCi0gKiB3ZSByZWFkIHRoZSB0aW1lIHZhbHVlIGdpdmVuIHRvIHVzIGJ5IHRoZSBIb3N0LiAqLworLyogSWYgd2UgY2FuJ3QgdXNlIHRoZSBUU0MsIHRoZSBrZXJuZWwgZmFsbHMgYmFjayB0byBvdXIgbG93ZXItcHJpb3JpdHkKKyAqICJsZ3Vlc3RfY2xvY2siLCB3aGVyZSB3ZSByZWFkIHRoZSB0aW1lIHZhbHVlIGdpdmVuIHRvIHVzIGJ5IHRoZSBIb3N0LiAqLwogc3RhdGljIGN5Y2xlX3QgbGd1ZXN0X2Nsb2NrX3JlYWQodm9pZCkKIHsKIAl1bnNpZ25lZCBsb25nIHNlYywgbnNlYzsKQEAgLTY0OCwxMiArNjU2LDE2IEBACiBzdGF0aWMgaW50IGxndWVzdF9jbG9ja2V2ZW50X3NldF9uZXh0X2V2ZW50KHVuc2lnbmVkIGxvbmcgZGVsdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNsb2NrX2V2ZW50X2RldmljZSAqZXZ0KQogeworCS8qIEZJWE1FOiBJIGRvbid0IHRoaW5rIHRoaXMgY2FuIGV2ZXIgaGFwcGVuLCBidXQgSmFtZXMgdGVsbHMgbWUgaGUgaGFkCisJICogdG8gcHV0IHRoaXMgY29kZSBpbi4gIE1heWJlIHdlIHNob3VsZCByZW1vdmUgaXQgbm93LiAgQW55b25lPyAqLwogCWlmIChkZWx0YSA8IExHX0NMT0NLX01JTl9ERUxUQSkgewogCQlpZiAocHJpbnRrX3JhdGVsaW1pdCgpKQogCQkJcHJpbnRrKEtFUk5fREVCVUcgIiVzOiBzbWFsbCBkZWx0YSAlbHUgbnNcbiIsCiAJCQkgICAgICAgX19GVU5DVElPTl9fLCBkZWx0YSk7CiAJCXJldHVybiAtRVRJTUU7CiAJfQorCisJLyogUGxlYXNlIHdha2UgdXMgdGhpcyBmYXIgaW4gdGhlIGZ1dHVyZS4gKi8KIAloY2FsbChMSENBTExfU0VUX0NMT0NLRVZFTlQsIGRlbHRhLCAwLCAwKTsKIAlyZXR1cm4gMDsKIH0KQEAgLTczOCw3ICs3NTAsNyBAQAogICogd2lsbCBub3QgdG9sZXJhdGUgdXMgdHJ5aW5nIHRvIHVzZSB0aGF0KSwgdGhlIHN0YWNrIHBvaW50ZXIsIGFuZCB0aGUgbnVtYmVyCiAgKiBvZiBwYWdlcyBpbiB0aGUgc3RhY2suICovCiBzdGF0aWMgdm9pZCBsZ3Vlc3RfbG9hZF9zcDAoc3RydWN0IHRzc19zdHJ1Y3QgKnRzcywKLQkJCQkgICAgIHN0cnVjdCB0aHJlYWRfc3RydWN0ICp0aHJlYWQpCisJCQkgICAgc3RydWN0IHRocmVhZF9zdHJ1Y3QgKnRocmVhZCkKIHsKIAlsYXp5X2hjYWxsKExIQ0FMTF9TRVRfU1RBQ0ssIF9fS0VSTkVMX0RTfDB4MSwgdGhyZWFkLT5zcDAsCiAJCSAgIFRIUkVBRF9TSVpFL1BBR0VfU0laRSk7CkBAIC03ODYsOSArNzk4LDggQEAKIAloY2FsbChMSENBTExfSEFMVCwgMCwgMCwgMCk7CiB9CiAKLS8qIFBlcmhhcHMgQ1JBU0ggaXNuJ3QgdGhlIGJlc3QgbmFtZSBmb3IgdGhpcyBoeXBlcmNhbGwsIGJ1dCB3ZSB1c2UgaXQgdG8gZ2V0IGEKLSAqIG1lc3NhZ2Ugb3V0IHdoZW4gd2UncmUgY3Jhc2hpbmcgYXMgd2VsbCBhcyBlbGVnYW50IHRlcm1pbmF0aW9uIGxpa2UgcG93ZXJpbmcKLSAqIG9mZi4KKy8qIFRoZSBTSFVURE9XTiBoeXBlcmNhbGwgdGFrZXMgYSBzdHJpbmcgdG8gZGVzY3JpYmUgd2hhdCdzIGhhcHBlbmluZywgYW5kCisgKiBhbiBhcmd1bWVudCB3aGljaCBzYXlzIHdoZXRoZXIgdGhpcyB0byByZXN0YXJ0IChyZWJvb3QpIHRoZSBHdWVzdCBvciBub3QuCiAgKgogICogTm90ZSB0aGF0IHRoZSBIb3N0IGFsd2F5cyBwcmVmZXJzIHRoYXQgdGhlIEd1ZXN0IHNwZWFrIGluIHBoeXNpY2FsIGFkZHJlc3NlcwogICogcmF0aGVyIHRoYW4gdmlydHVhbCBhZGRyZXNzZXMsIHNvIHdlIHVzZSBfX3BhKCkgaGVyZS4gKi8KQEAgLTgxNiw4ICs4MjcsOSBAQAogLyogU2V0dGluZyB1cCBtZW1vcnkgaXMgZmFpcmx5IGVhc3kuICovCiBzdGF0aWMgX19pbml0IGNoYXIgKmxndWVzdF9tZW1vcnlfc2V0dXAodm9pZCkKIHsKLQkvKiBXZSBkbyB0aGlzIGhlcmUgYW5kIG5vdCBlYXJsaWVyIGJlY2F1c2UgbG9ja2NoZWNrIGJhcmZzIGlmIHdlIGRvIGl0Ci0JICogYmVmb3JlIHN0YXJ0X2tlcm5lbCgpICovCisJLyogV2UgZG8gdGhpcyBoZXJlIGFuZCBub3QgZWFybGllciBiZWNhdXNlIGxvY2tjaGVjayB1c2VkIHRvIGJhcmYgaWYgd2UKKwkgKiBkaWQgaXQgYmVmb3JlIHN0YXJ0X2tlcm5lbCgpLiAgSSB0aGluayB3ZSBmaXhlZCB0aGF0LCBzbyBpdCdkIGJlCisJICogbmljZSB0byBtb3ZlIGl0IGJhY2sgdG8gbGd1ZXN0X2luaXQuICBQYXRjaCB3ZWxjb21lLi4uICovCiAJYXRvbWljX25vdGlmaWVyX2NoYWluX3JlZ2lzdGVyKCZwYW5pY19ub3RpZmllcl9saXN0LCAmcGFuaWNlZCk7CiAKIAkvKiBUaGUgTGludXggYm9vdGxvYWRlciBoZWFkZXIgY29udGFpbnMgYW4gImU4MjAiIG1lbW9yeSBtYXA6IHRoZQpAQCAtODUwLDEyICs4NjIsMTkgQEAKIAlyZXR1cm4gbGVuOwogfQogCisvKiBSZWJvb3RpbmcgYWxzbyB0ZWxscyB0aGUgSG9zdCB3ZSdyZSBmaW5pc2hlZCwgYnV0IHRoZSBSRVNUQVJUIGZsYWcgdGVsbHMgdGhlCisgKiBMYXVuY2hlciB0byByZWJvb3QgdXMuICovCitzdGF0aWMgdm9pZCBsZ3Vlc3RfcmVzdGFydChjaGFyICpyZWFzb24pCit7CisJaGNhbGwoTEhDQUxMX1NIVVRET1dOLCBfX3BhKHJlYXNvbiksIExHVUVTVF9TSFVURE9XTl9SRVNUQVJULCAwKTsKK30KKwogLypHOjA1MAogICogUGF0Y2hpbmcgKFBvd2VyZnVsbHkgUGxhY2F0aW5nIFBlcmZvcm1hbmNlIFBlZGFudHMpCiAgKgotICogV2UgaGF2ZSBhbHJlYWR5IHNlZW4gdGhhdCBwdl9vcHMgc3RydWN0dXJlcyBsZXQgdXMgcmVwbGFjZSBzaW1wbGUKLSAqIG5hdGl2ZSBpbnN0cnVjdGlvbnMgd2l0aCBjYWxscyB0byB0aGUgYXBwcm9wcmlhdGUgYmFjayBlbmQgYWxsIHRocm91Z2hvdXQKLSAqIHRoZSBrZXJuZWwuICBUaGlzIGFsbG93cyB0aGUgc2FtZSBrZXJuZWwgdG8gcnVuIGFzIGEgR3Vlc3QgYW5kIGFzIGEgbmF0aXZlCisgKiBXZSBoYXZlIGFscmVhZHkgc2VlbiB0aGF0IHB2X29wcyBzdHJ1Y3R1cmVzIGxldCB1cyByZXBsYWNlIHNpbXBsZSBuYXRpdmUKKyAqIGluc3RydWN0aW9ucyB3aXRoIGNhbGxzIHRvIHRoZSBhcHByb3ByaWF0ZSBiYWNrIGVuZCBhbGwgdGhyb3VnaG91dCB0aGUKKyAqIGtlcm5lbC4gIFRoaXMgYWxsb3dzIHRoZSBzYW1lIGtlcm5lbCB0byBydW4gYXMgYSBHdWVzdCBhbmQgYXMgYSBuYXRpdmUKICAqIGtlcm5lbCwgYnV0IGl0J3Mgc2xvdyBiZWNhdXNlIG9mIGFsbCB0aGUgaW5kaXJlY3QgYnJhbmNoZXMuCiAgKgogICogUmVtZW1iZXIgdGhhdCBEYXZpZCBXaGVlbGVyIHF1b3RlIGFib3V0ICJBbnkgcHJvYmxlbSBpbiBjb21wdXRlciBzY2llbmNlIGNhbgpAQCAtOTA4LDE0ICs5MjcsOSBAQAogCXJldHVybiBpbnNuX2xlbjsKIH0KIAotc3RhdGljIHZvaWQgbGd1ZXN0X3Jlc3RhcnQoY2hhciAqcmVhc29uKQotewotCWhjYWxsKExIQ0FMTF9TSFVURE9XTiwgX19wYShyZWFzb24pLCBMR1VFU1RfU0hVVERPV05fUkVTVEFSVCwgMCk7Ci19Ci0KLS8qRzowMzAgT25jZSB3ZSBnZXQgdG8gbGd1ZXN0X2luaXQoKSwgd2Uga25vdyB3ZSdyZSBhIEd1ZXN0LiAgVGhlIHB2X29wcwotICogc3RydWN0dXJlcyBpbiB0aGUga2VybmVsIHByb3ZpZGUgcG9pbnRzIGZvciAoYWxtb3N0KSBldmVyeSByb3V0aW5lIHdlIGhhdmUKLSAqIHRvIG92ZXJyaWRlIHRvIGF2b2lkIHByaXZpbGVnZWQgaW5zdHJ1Y3Rpb25zLiAqLworLypHOjAzMCBPbmNlIHdlIGdldCB0byBsZ3Vlc3RfaW5pdCgpLCB3ZSBrbm93IHdlJ3JlIGEgR3Vlc3QuICBUaGUgdmFyaW91cworICogcHZfb3BzIHN0cnVjdHVyZXMgaW4gdGhlIGtlcm5lbCBwcm92aWRlIHBvaW50cyBmb3IgKGFsbW9zdCkgZXZlcnkgcm91dGluZSB3ZQorICogaGF2ZSB0byBvdmVycmlkZSB0byBhdm9pZCBwcml2aWxlZ2VkIGluc3RydWN0aW9ucy4gKi8KIF9faW5pdCB2b2lkIGxndWVzdF9pbml0KHZvaWQpCiB7CiAJLyogV2UncmUgdW5kZXIgbGd1ZXN0LCBwYXJhdmlydCBpcyBlbmFibGVkLCBhbmQgd2UncmUgcnVubmluZyBhdApAQCAtMTAwMyw5ICsxMDE3LDkgQEAKIAkgKiB0aGUgbm9ybWFsIGRhdGEgc2VnbWVudCB0byBnZXQgdGhyb3VnaCBib290aW5nLiAqLwogCWFzbSB2b2xhdGlsZSAoIm1vdiAlMCwgJSVmcyIgOiA6ICJyIiAoX19LRVJORUxfRFMpIDogIm1lbW9yeSIpOwogCi0JLyogVGhlIEhvc3QgdXNlcyB0aGUgdG9wIG9mIHRoZSBHdWVzdCdzIHZpcnR1YWwgYWRkcmVzcyBzcGFjZSBmb3IgdGhlCi0JICogSG9zdDwtPkd1ZXN0IFN3aXRjaGVyLCBhbmQgaXQgdGVsbHMgdXMgaG93IGJpZyB0aGF0IGlzIGluCi0JICogbGd1ZXN0X2RhdGEucmVzZXJ2ZV9tZW0sIHNldCB1cCBvbiB0aGUgTEdVRVNUX0lOSVQgaHlwZXJjYWxsLiAqLworCS8qIFRoZSBIb3N0PC0+R3Vlc3QgU3dpdGNoZXIgbGl2ZXMgYXQgdGhlIHRvcCBvZiBvdXIgYWRkcmVzcyBzcGFjZSwgYW5kCisJICogdGhlIEhvc3QgdG9sZCB1cyBob3cgYmlnIGl0IGlzIHdoZW4gd2UgbWFkZSBMR1VFU1RfSU5JVCBoeXBlcmNhbGw6CisJICogaXQgcHV0IHRoZSBhbnN3ZXIgaW4gbGd1ZXN0X2RhdGEucmVzZXJ2ZV9tZW0gICovCiAJcmVzZXJ2ZV90b3BfYWRkcmVzcyhsZ3Vlc3RfZGF0YS5yZXNlcnZlX21lbSk7CiAKIAkvKiBJZiB3ZSBkb24ndCBpbml0aWFsaXplIHRoZSBsb2NrIGRlcGVuZGVuY3kgY2hlY2tlciBub3csIGl0IGNyYXNoZXMKQEAgLTEwMjcsNiArMTA0MSw3IEBACiAJLyogTWF0aCBpcyBhbHdheXMgaGFyZCEgKi8KIAluZXdfY3B1X2RhdGEuaGFyZF9tYXRoID0gMTsKIAorCS8qIFdlIGRvbid0IGhhdmUgZmVhdHVyZXMuICBXZSBoYXZlIHB1cHBpZXMhICBQdXBwaWVzISAqLwogI2lmZGVmIENPTkZJR19YODZfTUNFCiAJbWNlX2Rpc2FibGVkID0gMTsKICNlbmRpZgpAQCAtMTA0NCwxMCArMTA1OSwxMSBAQAogCXZpcnRpb19jb25zX2Vhcmx5X2luaXQoZWFybHlfcHV0X2NoYXJzKTsKIAogCS8qIExhc3Qgb2YgYWxsLCB3ZSBzZXQgdGhlIHBvd2VyIG1hbmFnZW1lbnQgcG93ZXJvZmYgaG9vayB0byBwb2ludCB0bwotCSAqIHRoZSBHdWVzdCByb3V0aW5lIHRvIHBvd2VyIG9mZi4gKi8KKwkgKiB0aGUgR3Vlc3Qgcm91dGluZSB0byBwb3dlciBvZmYsIGFuZCB0aGUgcmVib290IGhvb2sgdG8gb3VyIHJlc3RhcnQKKwkgKiByb3V0aW5lLiAqLwogCXBtX3Bvd2VyX29mZiA9IGxndWVzdF9wb3dlcl9vZmY7Ci0KIAltYWNoaW5lX29wcy5yZXN0YXJ0ID0gbGd1ZXN0X3Jlc3RhcnQ7CisKIAkvKiBOb3cgd2UncmUgc2V0IHVwLCBjYWxsIHN0YXJ0X2tlcm5lbCgpIGluIGluaXQvbWFpbi5jIGFuZCB3ZSBwcm9jZWVkCiAJICogdG8gYm9vdCBhcyBub3JtYWwuICBJdCBuZXZlciByZXR1cm5zLiAqLwogCXN0YXJ0X2tlcm5lbCgpOwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvbGd1ZXN0L2kzODZfaGVhZC5TIGIvYXJjaC94ODYvbGd1ZXN0L2kzODZfaGVhZC5TCmluZGV4IDk1YjZmYmNkLi41YzdjZWYzIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9sZ3Vlc3QvaTM4Nl9oZWFkLlMKKysrIGIvYXJjaC94ODYvbGd1ZXN0L2kzODZfaGVhZC5TCkBAIC01LDEzICs1LDIwIEBACiAjaW5jbHVkZSA8YXNtL3RocmVhZF9pbmZvLmg+CiAjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nvci1mbGFncy5oPgogCi0vKkc6MDIwIFRoaXMgaXMgd2hlcmUgd2UgYmVnaW46IGhlYWQuUyBub3RlcyB0aGF0IHRoZSBib290IGhlYWRlcidzIHBsYXRmb3JtCi0gKiB0eXBlIGZpZWxkIGlzICIxIiAobGd1ZXN0KSwgc28gY2FsbHMgdXMgaGVyZS4KKy8qRzowMjAgT3VyIHN0b3J5IHN0YXJ0cyB3aXRoIHRoZSBrZXJuZWwgYm9vdGluZyBpbnRvIHN0YXJ0dXBfMzIgaW4KKyAqIGFyY2gveDg2L2tlcm5lbC9oZWFkXzMyLlMuICBJdCBleHBlY3RzIGEgYm9vdCBoZWFkZXIsIHdoaWNoIGlzIGNyZWF0ZWQgYnkKKyAqIHRoZSBib290bG9hZGVyICh0aGUgTGF1bmNoZXIgaW4gb3VyIGNhc2UpLgorICoKKyAqIFRoZSBzdGFydHVwXzMyIGZ1bmN0aW9uIGRvZXMgdmVyeSBsaXR0bGU6IGl0IGNsZWFycyB0aGUgdW5pbml0aWFsaXplZCBnbG9iYWwKKyAqIEMgdmFyaWFibGVzIHdoaWNoIHdlIGV4cGVjdCB0byBiZSB6ZXJvIChpZS4gQlNTKSBhbmQgdGhlbiBjb3BpZXMgdGhlIGJvb3QKKyAqIGhlYWRlciBhbmQga2VybmVsIGNvbW1hbmQgbGluZSBzb21ld2hlcmUgc2FmZS4gIEZpbmFsbHkgaXQgY2hlY2tzIHRoZQorICogJ2hhcmR3YXJlX3N1YmFyY2gnIGZpZWxkLiAgVGhpcyB3YXMgaW50cm9kdWNlZCBpbiAyLjYuMjQgZm9yIGxndWVzdCBhbmQgWGVuOgorICogaWYgaXQncyBzZXQgdG8gJzEnIChsZ3Vlc3QncyBhc3NpZ25lZCBudW1iZXIpLCB0aGVuIGl0IGNhbGxzIHVzIGhlcmUuCiAgKgogICogV0FSTklORzogYmUgdmVyeSBjYXJlZnVsIGhlcmUhICBXZSdyZSBydW5uaW5nIGF0IGFkZHJlc3NlcyBlcXVhbCB0byBwaHlzaWNhbAogICogYWRkZXNzZXMgKGFyb3VuZCAwKSwgbm90IGFib3ZlIFBBR0VfT0ZGU0VUIGFzIG1vc3QgY29kZSBleHBlY3RlcwogICogKGVnLiAweEMwMDAwMDAwKS4gIEp1bXBzIGFyZSByZWxhdGl2ZSwgc28gdGhleSdyZSBPSywgYnV0IHdlIGNhbid0IHRvdWNoIGFueQotICogZGF0YS4KKyAqIGRhdGEgd2l0aG91dCByZW1lbWJlcmluZyB0byBzdWJ0cmFjdCBfX1BBR0VfT0ZGU0VUIQogICoKICAqIFRoZSAuc2VjdGlvbiBsaW5lIHB1dHMgdGhpcyBjb2RlIGluIC5pbml0LnRleHQgc28gaXQgd2lsbCBiZSBkaXNjYXJkZWQgYWZ0ZXIKICAqIGJvb3QuICovCkBAIC0yNCw3ICszMSw3IEBACiAJaW50ICRMR1VFU1RfVFJBUF9FTlRSWQogCiAJLyogVGhlIEhvc3QgcHV0IHRoZSB0b3BsZXZlbCBwYWdldGFibGUgaW4gbGd1ZXN0X2RhdGEucGdkaXIuICBUaGUgbW92c2wKLQkgKiBpbnN0cnVjdGlvbiB1c2VzICVlc2kgaW1wbGljaXRseSBhcyB0aGUgc291cmNlIGZvciB0aGUgY29weSB3ZScKKwkgKiBpbnN0cnVjdGlvbiB1c2VzICVlc2kgaW1wbGljaXRseSBhcyB0aGUgc291cmNlIGZvciB0aGUgY29weSB3ZSdyZQogCSAqIGFib3V0IHRvIGRvLiAqLwogCW1vdmwgbGd1ZXN0X2RhdGEgLSBfX1BBR0VfT0ZGU0VUICsgTEdVRVNUX0RBVEFfcGdkaXIsICVlc2kKIApkaWZmIC0tZ2l0IGEvYXJjaC94ODYvbWFjaC1yZGMzMjF4L2dwaW8uYyBiL2FyY2gveDg2L21hY2gtcmRjMzIxeC9ncGlvLmMKaW5kZXggMDMxMjY5MS4uMjQ3ZjMzZCAxMDA2NDQKLS0tIGEvYXJjaC94ODYvbWFjaC1yZGMzMjF4L2dwaW8uYworKysgYi9hcmNoL3g4Ni9tYWNoLXJkYzMyMXgvZ3Bpby5jCkBAIC0xLDkxICsxLDE5NCBAQAogLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDcsIE9wZW5XcnQub3JnLCBGbG9yaWFuIEZhaW5lbGxpIDxmbG9yaWFuQG9wZW53cnQub3JnPgotICogIAlSREMzMjF4IGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBHUElPIHN1cHBvcnQKKyAqICBHUElPIHN1cHBvcnQgZm9yIFJEQyBTb0MgUjMyMTAvUjg2MTAKICAqCi0gKiAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlICBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0gKiAgdW5kZXIgIHRoZSB0ZXJtcyBvZiAgdGhlIEdOVSBHZW5lcmFsICBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0gKiAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyAgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgIExpY2Vuc2UsIG9yIChhdCB5b3VyCi0gKiAgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDcsIEZsb3JpYW4gRmFpbmVsbGkgPGZsb3JpYW5Ab3BlbndydC5vcmc+CisgKiAgQ29weXJpZ2h0IChDKSAyMDA4LCBWb2xrZXIgV2Vpc3MgPGRldkB0aW50dWMuZGU+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCisgKgogICovCiAKLSNpbmNsdWRlIDxsaW51eC9hdXRvY29uZi5oPgotI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKworI2luY2x1ZGUgPGxpbnV4L3NwaW5sb2NrLmg+CiAjaW5jbHVkZSA8bGludXgvaW8uaD4KICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgotI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CiAKKyNpbmNsdWRlIDxhc20vZ3Bpby5oPgogI2luY2x1ZGUgPGFzbS9tYWNoLXJkYzMyMXgvcmRjMzIxeF9kZWZzLmg+CiAKLXN0YXRpYyBpbmxpbmUgaW50IHJkY19ncGlvX2lzX3ZhbGlkKHVuc2lnbmVkIGdwaW8pCisKKy8qIHNwaW4gbG9jayB0byBwcm90ZWN0IG91ciBwcml2YXRlIGNvcHkgb2YgR1BJTyBkYXRhIHJlZ2lzdGVyIHBsdXMKKyAgIHRoZSBhY2Nlc3MgdG8gUENJIGNvbmYgcmVnaXN0ZXJzLiAqLworc3RhdGljIERFRklORV9TUElOTE9DSyhncGlvX2xvY2spOworCisvKiBjb3B5IG9mIEdQSU8gZGF0YSByZWdpc3RlcnMgKi8KK3N0YXRpYyB1MzIgZ3Bpb19kYXRhX3JlZzE7CitzdGF0aWMgdTMyIGdwaW9fZGF0YV9yZWcyOworCitzdGF0aWMgdTMyIGdwaW9fcmVxdWVzdF9kYXRhWzJdOworCisKK3N0YXRpYyBpbmxpbmUgdm9pZCByZGMzMjF4X2NvbmZfd3JpdGUodW5zaWduZWQgYWRkciwgdTMyIHZhbHVlKQogewotCXJldHVybiAoZ3BpbyA8PSBSRENfTUFYX0dQSU8pOworCW91dGwoKDEgPDwgMzEpIHwgKDcgPDwgMTEpIHwgYWRkciwgUkRDMzIxMF9DRkdSRUdfQUREUik7CisJb3V0bCh2YWx1ZSwgUkRDMzIxMF9DRkdSRUdfREFUQSk7CiB9CiAKLXN0YXRpYyB1bnNpZ25lZCBpbnQgcmRjX2dwaW9fcmVhZCh1bnNpZ25lZCBncGlvKQorc3RhdGljIGlubGluZSB2b2lkIHJkYzMyMXhfY29uZl9vcih1bnNpZ25lZCBhZGRyLCB1MzIgdmFsdWUpCiB7Ci0JdW5zaWduZWQgaW50IHZhbDsKLQotCXZhbCA9IDB4ODAwMDAwMDAgfCAoNyA8PCAxMSkgfCAoKGdwaW8mMHgyMD8weDg0OjB4NDgpKTsKLQlvdXRsKHZhbCwgUkRDMzIxMF9DRkdSRUdfQUREUik7Ci0JdWRlbGF5KDEwKTsKLQl2YWwgPSBpbmwoUkRDMzIxMF9DRkdSRUdfREFUQSk7Ci0JdmFsIHw9ICgweDEgPDwgKGdwaW8gJiAweDFGKSk7Ci0Jb3V0bCh2YWwsIFJEQzMyMTBfQ0ZHUkVHX0RBVEEpOwotCXVkZWxheSgxMCk7Ci0JdmFsID0gMHg4MDAwMDAwMCB8ICg3IDw8IDExKSB8ICgoZ3BpbyYweDIwPzB4ODg6MHg0QykpOwotCW91dGwodmFsLCBSREMzMjEwX0NGR1JFR19BRERSKTsKLQl1ZGVsYXkoMTApOwotCXZhbCA9IGlubChSREMzMjEwX0NGR1JFR19EQVRBKTsKLQotCXJldHVybiB2YWw7CisJb3V0bCgoMSA8PCAzMSkgfCAoNyA8PCAxMSkgfCBhZGRyLCBSREMzMjEwX0NGR1JFR19BRERSKTsKKwl2YWx1ZSB8PSBpbmwoUkRDMzIxMF9DRkdSRUdfREFUQSk7CisJb3V0bCh2YWx1ZSwgUkRDMzIxMF9DRkdSRUdfREFUQSk7CiB9CiAKLXN0YXRpYyB2b2lkIHJkY19ncGlvX3dyaXRlKHVuc2lnbmVkIGludCB2YWwpCitzdGF0aWMgaW5saW5lIHUzMiByZGMzMjF4X2NvbmZfcmVhZCh1bnNpZ25lZCBhZGRyKQogewotCWlmICh2YWwpIHsKLQkJb3V0bCh2YWwsIFJEQzMyMTBfQ0ZHUkVHX0RBVEEpOwotCQl1ZGVsYXkoMTApOwotCX0KKwlvdXRsKCgxIDw8IDMxKSB8ICg3IDw8IDExKSB8IGFkZHIsIFJEQzMyMTBfQ0ZHUkVHX0FERFIpOworCisJcmV0dXJuIGlubChSREMzMjEwX0NGR1JFR19EQVRBKTsKIH0KIAorLyogY29uZmlndXJlIHBpbiBhcyBHUElPICovCitzdGF0aWMgdm9pZCByZGMzMjF4X2NvbmZpZ3VyZV9ncGlvKHVuc2lnbmVkIGdwaW8pCit7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZncGlvX2xvY2ssIGZsYWdzKTsKKwlyZGMzMjF4X2NvbmZfb3IoZ3BpbyA8IDMyCisJCT8gUkRDMzIxWF9HUElPX0NUUkxfUkVHMSA6IFJEQzMyMVhfR1BJT19DVFJMX1JFRzIsCisJCTEgPDwgKGdwaW8gJiAweDFmKSk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZ3Bpb19sb2NrLCBmbGFncyk7Cit9CisKKy8qIGluaXRpYWxseSBzZXR1cCB0aGUgMiBjb3BpZXMgb2YgdGhlIGdwaW8gZGF0YSByZWdpc3RlcnMuCisgICBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIGJ5IHRoZSBwbGF0Zm9ybSBzZXR1cCBjb2RlLiAqLwordm9pZCBfX2luaXQgcmRjMzIxeF9ncGlvX3NldHVwKCkKK3sKKwkvKiB0aGlzIG1pZ2h0IG5vdCBiZSwgd2hhdCBvdGhlcnMgKEJJT1MsIGJvb3Rsb2FkZXIsIGV0Yy4pCisJICAgd3JvdGUgdG8gdGhlc2UgcmVnaXN0ZXJzIGJlZm9yZSwgYnV0IGl0J3MgYSBnb29kIGd1ZXNzLiBTdGlsbAorCSAgIGJldHRlciB0aGFuIGp1c3QgdXNpbmcgMHhmZmZmZmZmZi4gKi8KKworCWdwaW9fZGF0YV9yZWcxID0gcmRjMzIxeF9jb25mX3JlYWQoUkRDMzIxWF9HUElPX0RBVEFfUkVHMSk7CisJZ3Bpb19kYXRhX3JlZzIgPSByZGMzMjF4X2NvbmZfcmVhZChSREMzMjFYX0dQSU9fREFUQV9SRUcyKTsKK30KKworLyogZGV0ZXJtaW5lLCBpZiBncGlvIG51bWJlciBpcyB2YWxpZCAqLworc3RhdGljIGlubGluZSBpbnQgcmRjMzIxeF9pc19ncGlvKHVuc2lnbmVkIGdwaW8pCit7CisJcmV0dXJuIGdwaW8gPD0gUkRDMzIxWF9NQVhfR1BJTzsKK30KKworLyogcmVxdWVzdCBHUElPICovCitpbnQgcmRjX2dwaW9fcmVxdWVzdCh1bnNpZ25lZCBncGlvLCBjb25zdCBjaGFyICpsYWJlbCkKK3sKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJaWYgKCFyZGMzMjF4X2lzX2dwaW8oZ3BpbykpCisJCXJldHVybiAtRUlOVkFMOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJmdwaW9fbG9jaywgZmxhZ3MpOworCWlmIChncGlvX3JlcXVlc3RfZGF0YVsoZ3BpbyAmIDB4MjApID8gMSA6IDBdICYgKDEgPDwgKGdwaW8gJiAweDFmKSkpCisJCWdvdG8gaW51c2U7CisJZ3Bpb19yZXF1ZXN0X2RhdGFbKGdwaW8gJiAweDIwKSA/IDEgOiAwXSB8PSAoMSA8PCAoZ3BpbyAmIDB4MWYpKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZncGlvX2xvY2ssIGZsYWdzKTsKKworCXJldHVybiAwOworaW51c2U6CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZ3Bpb19sb2NrLCBmbGFncyk7CisJcmV0dXJuIC1FSU5WQUw7Cit9CitFWFBPUlRfU1lNQk9MKHJkY19ncGlvX3JlcXVlc3QpOworCisvKiByZWxlYXNlIHByZXZpb3VzbHktY2xhaW1lZCBHUElPICovCit2b2lkIHJkY19ncGlvX2ZyZWUodW5zaWduZWQgZ3BpbykKK3sKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJaWYgKCFyZGMzMjF4X2lzX2dwaW8oZ3BpbykpCisJCXJldHVybjsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZncGlvX2xvY2ssIGZsYWdzKTsKKwlncGlvX3JlcXVlc3RfZGF0YVsoZ3BpbyAmIDB4MjApID8gMSA6IDBdICY9IH4oMSA8PCAoZ3BpbyAmIDB4MWYpKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZncGlvX2xvY2ssIGZsYWdzKTsKK30KK0VYUE9SVF9TWU1CT0wocmRjX2dwaW9fZnJlZSk7CisKKy8qIHJlYWQgR1BJTyBwaW4gKi8KIGludCByZGNfZ3Bpb19nZXRfdmFsdWUodW5zaWduZWQgZ3BpbykKIHsKLQlpZiAocmRjX2dwaW9faXNfdmFsaWQoZ3BpbykpCi0JCXJldHVybiAoaW50KXJkY19ncGlvX3JlYWQoZ3Bpbyk7Ci0JZWxzZQotCQlyZXR1cm4gLUVJTlZBTDsKKwl1MzIgcmVnOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmZ3Bpb19sb2NrLCBmbGFncyk7CisJcmVnID0gcmRjMzIxeF9jb25mX3JlYWQoZ3BpbyA8IDMyCisJCT8gUkRDMzIxWF9HUElPX0RBVEFfUkVHMSA6IFJEQzMyMVhfR1BJT19EQVRBX1JFRzIpOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmdwaW9fbG9jaywgZmxhZ3MpOworCisJcmV0dXJuICgxIDw8IChncGlvICYgMHgxZikpICYgcmVnID8gMSA6IDA7CiB9CiBFWFBPUlRfU1lNQk9MKHJkY19ncGlvX2dldF92YWx1ZSk7CiAKKy8qIHNldCBHUElPIHBpbiB0byB2YWx1ZSAqLwogdm9pZCByZGNfZ3Bpb19zZXRfdmFsdWUodW5zaWduZWQgZ3BpbywgaW50IHZhbHVlKQogewotCXVuc2lnbmVkIGludCB2YWw7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwl1MzIgcmVnOwogCi0JaWYgKCFyZGNfZ3Bpb19pc192YWxpZChncGlvKSkKLQkJcmV0dXJuOwotCi0JdmFsID0gcmRjX2dwaW9fcmVhZChncGlvKTsKLQotCWlmICh2YWx1ZSkKLQkJdmFsICY9IH4oMHgxIDw8IChncGlvICYgMHgxRikpOwotCWVsc2UKLQkJdmFsIHw9ICgweDEgPDwgKGdwaW8gJiAweDFGKSk7Ci0KLQlyZGNfZ3Bpb193cml0ZSh2YWwpOworCXJlZyA9IDEgPDwgKGdwaW8gJiAweDFmKTsKKwlpZiAoZ3BpbyA8IDMyKSB7CisJCXNwaW5fbG9ja19pcnFzYXZlKCZncGlvX2xvY2ssIGZsYWdzKTsKKwkJaWYgKHZhbHVlKQorCQkJZ3Bpb19kYXRhX3JlZzEgfD0gcmVnOworCQllbHNlCisJCQlncGlvX2RhdGFfcmVnMSAmPSB+cmVnOworCQlyZGMzMjF4X2NvbmZfd3JpdGUoUkRDMzIxWF9HUElPX0RBVEFfUkVHMSwgZ3Bpb19kYXRhX3JlZzEpOworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZncGlvX2xvY2ssIGZsYWdzKTsKKwl9IGVsc2UgeworCQlzcGluX2xvY2tfaXJxc2F2ZSgmZ3Bpb19sb2NrLCBmbGFncyk7CisJCWlmICh2YWx1ZSkKKwkJCWdwaW9fZGF0YV9yZWcyIHw9IHJlZzsKKwkJZWxzZQorCQkJZ3Bpb19kYXRhX3JlZzIgJj0gfnJlZzsKKwkJcmRjMzIxeF9jb25mX3dyaXRlKFJEQzMyMVhfR1BJT19EQVRBX1JFRzIsIGdwaW9fZGF0YV9yZWcyKTsKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZ3Bpb19sb2NrLCBmbGFncyk7CisJfQogfQogRVhQT1JUX1NZTUJPTChyZGNfZ3Bpb19zZXRfdmFsdWUpOwogCisvKiBjb25maWd1cmUgR1BJTyBwaW4gYXMgaW5wdXQgKi8KIGludCByZGNfZ3Bpb19kaXJlY3Rpb25faW5wdXQodW5zaWduZWQgZ3BpbykKIHsKKwlpZiAoIXJkYzMyMXhfaXNfZ3BpbyhncGlvKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlyZGMzMjF4X2NvbmZpZ3VyZV9ncGlvKGdwaW8pOworCiAJcmV0dXJuIDA7CiB9CiBFWFBPUlRfU1lNQk9MKHJkY19ncGlvX2RpcmVjdGlvbl9pbnB1dCk7CiAKKy8qIGNvbmZpZ3VyZSBHUElPIHBpbiBhcyBvdXRwdXQgYW5kIHNldCB2YWx1ZSAqLwogaW50IHJkY19ncGlvX2RpcmVjdGlvbl9vdXRwdXQodW5zaWduZWQgZ3BpbywgaW50IHZhbHVlKQogeworCWlmICghcmRjMzIxeF9pc19ncGlvKGdwaW8pKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWdwaW9fc2V0X3ZhbHVlKGdwaW8sIHZhbHVlKTsKKwlyZGMzMjF4X2NvbmZpZ3VyZV9ncGlvKGdwaW8pOworCiAJcmV0dXJuIDA7CiB9CiBFWFBPUlRfU1lNQk9MKHJkY19ncGlvX2RpcmVjdGlvbl9vdXRwdXQpOwotCi0KZGlmZiAtLWdpdCBhL2FyY2gveDg2L21hY2gtcmRjMzIxeC9wbGF0Zm9ybS5jIGIvYXJjaC94ODYvbWFjaC1yZGMzMjF4L3BsYXRmb3JtLmMKaW5kZXggZGRhNjAyNC4uYTAzNzA0MSAxMDA2NDQKLS0tIGEvYXJjaC94ODYvbWFjaC1yZGMzMjF4L3BsYXRmb3JtLmMKKysrIGIvYXJjaC94ODYvbWFjaC1yZGMzMjF4L3BsYXRmb3JtLmMKQEAgLTYyLDYgKzYyLDggQEAKIAogc3RhdGljIGludCBfX2luaXQgcmRjX2JvYXJkX3NldHVwKHZvaWQpCiB7CisJcmRjMzIxeF9ncGlvX3NldHVwKCk7CisKIAlyZXR1cm4gcGxhdGZvcm1fYWRkX2RldmljZXMocmRjMzIxeF9kZXZzLCBBUlJBWV9TSVpFKHJkYzMyMXhfZGV2cykpOwogfQogCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9tYWNoLXZpc3dzL3RyYXBzLmMgYi9hcmNoL3g4Ni9tYWNoLXZpc3dzL3RyYXBzLmMKaW5kZXggODQzYjY3YS4uYmZhYzZiYSAxMDA2NDQKLS0tIGEvYXJjaC94ODYvbWFjaC12aXN3cy90cmFwcy5jCisrKyBiL2FyY2gveDg2L21hY2gtdmlzd3MvdHJhcHMuYwpAQCAtNDYsOCArNDYsOSBAQAogCSAqLwogCXNldF9maXhtYXAoRklYX0FQSUNfQkFTRSwgQVBJQ19ERUZBVUxUX1BIWVNfQkFTRSk7CiAJc2V0dXBfbG9jYWxfQVBJQygpOwotCXByaW50ayhLRVJOX0lORk8gIkxvY2FsIEFQSUMgVmVyc2lvbiAlI2x4LCBJRCAlI2x4XG4iLAotCQlhcGljX3JlYWQoQVBJQ19MVlIpLCBhcGljX3JlYWQoQVBJQ19JRCkpOworCXByaW50ayhLRVJOX0lORk8gIkxvY2FsIEFQSUMgVmVyc2lvbiAlI3gsIElEICUjeFxuIiwKKwkJKHVuc2lnbmVkIGludClhcGljX3JlYWQoQVBJQ19MVlIpLAorCQkodW5zaWduZWQgaW50KWFwaWNfcmVhZChBUElDX0lEKSk7CiAKIAlzZXRfZml4bWFwKEZJWF9DT19DUFUsIENPX0NQVV9QSFlTKTsKIAlzZXRfZml4bWFwKEZJWF9DT19BUElDLCBDT19BUElDX1BIWVMpOwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvbW0vZGlzY29udGlnXzMyLmMgYi9hcmNoL3g4Ni9tbS9kaXNjb250aWdfMzIuYwppbmRleCBjMzk0Y2EwLi44ZTI1ZTA2IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9tbS9kaXNjb250aWdfMzIuYworKysgYi9hcmNoL3g4Ni9tbS9kaXNjb250aWdfMzIuYwpAQCAtMzI0LDcgKzMyNCw2IEBACiAJICogdGhpcyBzcGFjZSBhbmQgdXNlIGl0IHRvIGFkanVzdCB0aGUgYm91bmRhcnkgYmV0d2VlbiBaT05FX05PUk1BTAogCSAqIGFuZCBaT05FX0hJR0hNRU0uCiAJICovCi0JZmluZF9tYXhfcGZuKCk7CiAJZ2V0X21lbWNmZ19udW1hKCk7CiAKIAlrdmFfcGFnZXMgPSBjYWxjdWxhdGVfbnVtYV9yZW1hcF9wYWdlcygpOwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvbW0vZmF1bHQuYyBiL2FyY2gveDg2L21tL2ZhdWx0LmMKaW5kZXggZmRjNjY3NC4uZWMwOGQ4MyAxMDA2NDQKLS0tIGEvYXJjaC94ODYvbW0vZmF1bHQuYworKysgYi9hcmNoL3g4Ni9tbS9mYXVsdC5jCkBAIC05MSwxMiArOTEsMTAgQEAKIAlpbnQgcHJlZmV0Y2ggPSAwOwogCXVuc2lnbmVkIGNoYXIgKm1heF9pbnN0cjsKIAotI2lmZGVmIENPTkZJR19YODZfMzIKLQlpZiAoIShfX3N1cHBvcnRlZF9wdGVfbWFzayAmIF9QQUdFX05YKSkKLQkJcmV0dXJuIDA7Ci0jZW5kaWYKLQotCS8qIElmIGl0IHdhcyBhIGV4ZWMgZmF1bHQgb24gTlggcGFnZSwgaWdub3JlICovCisJLyoKKwkgKiBJZiBpdCB3YXMgYSBleGVjIChpbnN0cnVjdGlvbiBmZXRjaCkgZmF1bHQgb24gTlggcGFnZSwgdGhlbgorCSAqIGRvIG5vdCBpZ25vcmUgdGhlIGZhdWx0OgorCSAqLwogCWlmIChlcnJvcl9jb2RlICYgUEZfSU5TVFIpCiAJCXJldHVybiAwOwogCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9tbS9oaWdobWVtXzMyLmMgYi9hcmNoL3g4Ni9tbS9oaWdobWVtXzMyLmMKaW5kZXggM2Q5MzZmMi4uOWNmMzNkMyAxMDA2NDQKLS0tIGEvYXJjaC94ODYvbW0vaGlnaG1lbV8zMi5jCisrKyBiL2FyY2gveDg2L21tL2hpZ2htZW1fMzIuYwpAQCAtNzMsMTUgKzczLDE1IEBACiB7CiAJZW51bSBmaXhlZF9hZGRyZXNzZXMgaWR4OwogCXVuc2lnbmVkIGxvbmcgdmFkZHI7CisKIAkvKiBldmVuICFDT05GSUdfUFJFRU1QVCBuZWVkcyB0aGlzLCBmb3IgaW5fYXRvbWljIGluIGRvX3BhZ2VfZmF1bHQgKi8KLQotCWRlYnVnX2ttYXBfYXRvbWljX3Byb3QodHlwZSk7Ci0KIAlwYWdlZmF1bHRfZGlzYWJsZSgpOwogCiAJaWYgKCFQYWdlSGlnaE1lbShwYWdlKSkKIAkJcmV0dXJuIHBhZ2VfYWRkcmVzcyhwYWdlKTsKIAorCWRlYnVnX2ttYXBfYXRvbWljX3Byb3QodHlwZSk7CisKIAlpZHggPSB0eXBlICsgS01fVFlQRV9OUipzbXBfcHJvY2Vzc29yX2lkKCk7CiAJdmFkZHIgPSBfX2ZpeF90b192aXJ0KEZJWF9LTUFQX0JFR0lOICsgaWR4KTsKIAlCVUdfT04oIXB0ZV9ub25lKCooa21hcF9wdGUtaWR4KSkpOwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvbW0vaHVnZXRsYnBhZ2UuYyBiL2FyY2gveDg2L21tL2h1Z2V0bGJwYWdlLmMKaW5kZXggNGZiYWZiNC4uMGIzZDU2NyAxMDA2NDQKLS0tIGEvYXJjaC94ODYvbW0vaHVnZXRsYnBhZ2UuYworKysgYi9hcmNoL3g4Ni9tbS9odWdldGxicGFnZS5jCkBAIC0xNzgsNyArMTc4LDcgQEAKIAogCXBhZ2UgPSAmcHRlX3BhZ2UoKnB0ZSlbdnBmbiAlIChIUEFHRV9TSVpFL1BBR0VfU0laRSldOwogCi0JV0FSTl9PTighUGFnZUNvbXBvdW5kKHBhZ2UpKTsKKwlXQVJOX09OKCFQYWdlSGVhZChwYWdlKSk7CiAKIAlyZXR1cm4gcGFnZTsKIH0KZGlmZiAtLWdpdCBhL2FyY2gveDg2L21tL2lvcmVtYXAuYyBiL2FyY2gveDg2L21tL2lvcmVtYXAuYwppbmRleCA4ZmU1NzZiLi43OTQ4OTVjIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9tbS9pb3JlbWFwLmMKKysrIGIvYXJjaC94ODYvbW0vaW9yZW1hcC5jCkBAIC0xMDYsNyArMTA2LDcgQEAKICAqIGhhdmUgdG8gY29udmVydCB0aGVtIGludG8gYW4gb2Zmc2V0IGluIGEgcGFnZS1hbGlnbmVkIG1hcHBpbmcsIGJ1dCB0aGUKICAqIGNhbGxlciBzaG91bGRuJ3QgbmVlZCB0byBrbm93IHRoYXQgc21hbGwgZGV0YWlsLgogICovCi1zdGF0aWMgdm9pZCBfX2lvbWVtICpfX2lvcmVtYXAodW5zaWduZWQgbG9uZyBwaHlzX2FkZHIsIHVuc2lnbmVkIGxvbmcgc2l6ZSwKK3N0YXRpYyB2b2lkIF9faW9tZW0gKl9faW9yZW1hcChyZXNvdXJjZV9zaXplX3QgcGh5c19hZGRyLCB1bnNpZ25lZCBsb25nIHNpemUsCiAJCQkgICAgICAgZW51bSBpb3JlbWFwX21vZGUgbW9kZSkKIHsKIAl1bnNpZ25lZCBsb25nIHBmbiwgb2Zmc2V0LCBsYXN0X2FkZHIsIHZhZGRyOwpAQCAtMTM3LDcgKzEzNywxMSBAQAogCXN3aXRjaCAobW9kZSkgewogCWNhc2UgSU9SX01PREVfVU5DQUNIRUQ6CiAJZGVmYXVsdDoKLQkJcHJvdCA9IFBBR0VfS0VSTkVMX05PQ0FDSEU7CisJCS8qCisJCSAqIEZJWE1FOiB3ZSB3aWxsIHVzZSBVQyBNSU5VUyBmb3Igbm93LCBhcyB2aWRlbyBmYiBkcml2ZXJzCisJCSAqIGRlcGVuZCBvbiBpdC4gVXBjb21pbmcgaW9yZW1hcF93YygpIHdpbGwgZml4IHRoaXMgYmVoYXZpb3IuCisJCSAqLworCQlwcm90ID0gUEFHRV9LRVJORUxfVUNfTUlOVVM7CiAJCWJyZWFrOwogCWNhc2UgSU9SX01PREVfQ0FDSEVEOgogCQlwcm90ID0gUEFHRV9LRVJORUw7CkBAIC0xOTMsMTMgKzE5NywxMyBAQAogICoKICAqIE11c3QgYmUgZnJlZWQgd2l0aCBpb3VubWFwLgogICovCi12b2lkIF9faW9tZW0gKmlvcmVtYXBfbm9jYWNoZSh1bnNpZ25lZCBsb25nIHBoeXNfYWRkciwgdW5zaWduZWQgbG9uZyBzaXplKQordm9pZCBfX2lvbWVtICppb3JlbWFwX25vY2FjaGUocmVzb3VyY2Vfc2l6ZV90IHBoeXNfYWRkciwgdW5zaWduZWQgbG9uZyBzaXplKQogewogCXJldHVybiBfX2lvcmVtYXAocGh5c19hZGRyLCBzaXplLCBJT1JfTU9ERV9VTkNBQ0hFRCk7CiB9CiBFWFBPUlRfU1lNQk9MKGlvcmVtYXBfbm9jYWNoZSk7CiAKLXZvaWQgX19pb21lbSAqaW9yZW1hcF9jYWNoZSh1bnNpZ25lZCBsb25nIHBoeXNfYWRkciwgdW5zaWduZWQgbG9uZyBzaXplKQordm9pZCBfX2lvbWVtICppb3JlbWFwX2NhY2hlKHJlc291cmNlX3NpemVfdCBwaHlzX2FkZHIsIHVuc2lnbmVkIGxvbmcgc2l6ZSkKIHsKIAlyZXR1cm4gX19pb3JlbWFwKHBoeXNfYWRkciwgc2l6ZSwgSU9SX01PREVfQ0FDSEVEKTsKIH0KZGlmZiAtLWdpdCBhL2FyY2gveDg2L21tL251bWFfNjQuYyBiL2FyY2gveDg2L21tL251bWFfNjQuYwppbmRleCA4Y2NmZWUxLi4xNmI4MmFkIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9tbS9udW1hXzY0LmMKKysrIGIvYXJjaC94ODYvbW0vbnVtYV82NC5jCkBAIC0yMjEsOCArMjIxLDcgQEAKIAkJCQkgYm9vdG1hcF9wYWdlczw8UEFHRV9TSElGVCwgUEFHRV9TSVpFKTsKIAlpZiAoYm9vdG1hcCA9PSBOVUxMKSAgewogCQlpZiAobm9kZWRhdGFfcGh5cyA8IHN0YXJ0IHx8IG5vZGVkYXRhX3BoeXMgPj0gZW5kKQotCQkJZnJlZV9ib290bWVtKCh1bnNpZ25lZCBsb25nKW5vZGVfZGF0YVtub2RlaWRdLAotCQkJCSAgICAgcGdkYXRfc2l6ZSk7CisJCQlmcmVlX2Jvb3RtZW0obm9kZWRhdGFfcGh5cywgcGdkYXRfc2l6ZSk7CiAJCW5vZGVfZGF0YVtub2RlaWRdID0gTlVMTDsKIAkJcmV0dXJuOwogCX0KZGlmZiAtLWdpdCBhL2FyY2gveDg2L21tL3BhZ2VhdHRyLmMgYi9hcmNoL3g4Ni9tbS9wYWdlYXR0ci5jCmluZGV4IDE0ZTQ4YjUuLjdiNzlmNmIgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L21tL3BhZ2VhdHRyLmMKKysrIGIvYXJjaC94ODYvbW0vcGFnZWF0dHIuYwpAQCAtNzcxLDcgKzc3MSw3IEBACiBpbnQgc2V0X21lbW9yeV91Yyh1bnNpZ25lZCBsb25nIGFkZHIsIGludCBudW1wYWdlcykKIHsKIAlyZXR1cm4gY2hhbmdlX3BhZ2VfYXR0cl9zZXQoYWRkciwgbnVtcGFnZXMsCi0JCQkJICAgIF9fcGdwcm90KF9QQUdFX1BDRCB8IF9QQUdFX1BXVCkpOworCQkJCSAgICBfX3BncHJvdChfUEFHRV9QQ0QpKTsKIH0KIEVYUE9SVF9TWU1CT0woc2V0X21lbW9yeV91Yyk7CiAKZGlmZiAtLWdpdCBhL2FyY2gveDg2L3BjaS9hY3BpLmMgYi9hcmNoL3g4Ni9wY2kvYWNwaS5jCmluZGV4IDAyMzRmMjguLjM3ODEzNmYgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L3BjaS9hY3BpLmMKKysrIGIvYXJjaC94ODYvcGNpL2FjcGkuYwpAQCAtMjE5LDggKzIxOSwyMSBAQAogCWlmIChweG0gPj0gMCkKIAkJc2QtPm5vZGUgPSBweG1fdG9fbm9kZShweG0pOwogI2VuZGlmCisJLyoKKwkgKiBNYXliZSB0aGUgZGVzaXJlZCBwY2kgYnVzIGhhcyBiZWVuIGFscmVhZHkgc2Nhbm5lZC4gSW4gc3VjaCBjYXNlCisJICogaXQgaXMgdW5uZWNlc3NhcnkgdG8gc2NhbiB0aGUgcGNpIGJ1cyB3aXRoIHRoZSBnaXZlbiBkb21haW4sYnVzbnVtLgorCSAqLworCWJ1cyA9IHBjaV9maW5kX2J1cyhkb21haW4sIGJ1c251bSk7CisJaWYgKGJ1cykgeworCQkvKgorCQkgKiBJZiB0aGUgZGVzaXJlZCBidXMgZXhpdHMsIHRoZSBjb250ZW50IG9mIGJ1cy0+c3lzZGF0YSB3aWxsCisJCSAqIGJlIHJlcGxhY2VkIGJ5IHNkLgorCQkgKi8KKwkJbWVtY3B5KGJ1cy0+c3lzZGF0YSwgc2QsIHNpemVvZigqc2QpKTsKKwkJa2ZyZWUoc2QpOworCX0gZWxzZQorCQlidXMgPSBwY2lfc2Nhbl9idXNfcGFyZW50ZWQoTlVMTCwgYnVzbnVtLCAmcGNpX3Jvb3Rfb3BzLCBzZCk7CiAKLQlidXMgPSBwY2lfc2Nhbl9idXNfcGFyZW50ZWQoTlVMTCwgYnVzbnVtLCAmcGNpX3Jvb3Rfb3BzLCBzZCk7CiAJaWYgKCFidXMpCiAJCWtmcmVlKHNkKTsKIApAQCAtMjI4LDcgKzI0MSw3IEBACiAJaWYgKGJ1cyAhPSBOVUxMKSB7CiAJCWlmIChweG0gPj0gMCkgewogCQkJcHJpbnRrKCJidXMgJWQgLT4gcHhtICVkIC0+IG5vZGUgJWRcbiIsCi0JCQkJYnVzbnVtLCBweG0sIHNkLT5ub2RlKTsKKwkJCQlidXNudW0sIHB4bSwgcHhtX3RvX25vZGUocHhtKSk7CiAJCX0KIAl9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gveDg2L3hlbi9lbmxpZ2h0ZW4uYyBiL2FyY2gveDg2L3hlbi9lbmxpZ2h0ZW4uYwppbmRleCA4YjllZTI3Li4yN2VlMjZhIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni94ZW4vZW5saWdodGVuLmMKKysrIGIvYXJjaC94ODYveGVuL2VubGlnaHRlbi5jCkBAIC05NSw3ICs5NSw3IEBACiAgKgogICogMDogbm90IGF2YWlsYWJsZSwgMTogYXZhaWxhYmxlCiAgKi8KLXN0YXRpYyBpbnQgaGF2ZV92Y3B1X2luZm9fcGxhY2VtZW50ID0gMDsKK3N0YXRpYyBpbnQgaGF2ZV92Y3B1X2luZm9fcGxhY2VtZW50ID0gMTsKIAogc3RhdGljIHZvaWQgX19pbml0IHhlbl92Y3B1X3NldHVwKGludCBjcHUpCiB7CkBAIC0xMDMsNiArMTAzLDcgQEAKIAlpbnQgZXJyOwogCXN0cnVjdCB2Y3B1X2luZm8gKnZjcHVwOwogCisJQlVHX09OKEhZUEVSVklTT1Jfc2hhcmVkX2luZm8gPT0gJmR1bW15X3NoYXJlZF9pbmZvKTsKIAlwZXJfY3B1KHhlbl92Y3B1LCBjcHUpID0gJkhZUEVSVklTT1Jfc2hhcmVkX2luZm8tPnZjcHVfaW5mb1tjcHVdOwogCiAJaWYgKCFoYXZlX3ZjcHVfaW5mb19wbGFjZW1lbnQpCkBAIC02NjYsMTAgKzY2NywxMCBAQAogCW1ha2VfbG93bWVtX3BhZ2VfcmVhZHdyaXRlKF9fdmEoUEZOX1BIWVMocGZuKSkpOwogfQogCi1zdGF0aWMgdm9pZCBwaW5fcGFnZXRhYmxlX3Bmbih1bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQgbG9uZyBwZm4pCitzdGF0aWMgdm9pZCBwaW5fcGFnZXRhYmxlX3Bmbih1bnNpZ25lZCBjbWQsIHVuc2lnbmVkIGxvbmcgcGZuKQogewogCXN0cnVjdCBtbXVleHRfb3Agb3A7Ci0Jb3AuY21kID0gbGV2ZWw7CisJb3AuY21kID0gY21kOwogCW9wLmFyZzEubWZuID0gcGZuX3RvX21mbihwZm4pOwogCWlmIChIWVBFUlZJU09SX21tdWV4dF9vcCgmb3AsIDEsIE5VTEwsIERPTUlEX1NFTEYpKQogCQlCVUcoKTsKQEAgLTY4Niw3ICs2ODcsOCBAQAogCiAJCWlmICghUGFnZUhpZ2hNZW0ocGFnZSkpIHsKIAkJCW1ha2VfbG93bWVtX3BhZ2VfcmVhZG9ubHkoX192YShQRk5fUEhZUyhwZm4pKSk7Ci0JCQlwaW5fcGFnZXRhYmxlX3BmbihsZXZlbCwgcGZuKTsKKwkJCWlmIChsZXZlbCA9PSBQVF9QVEUpCisJCQkJcGluX3BhZ2V0YWJsZV9wZm4oTU1VRVhUX1BJTl9MMV9UQUJMRSwgcGZuKTsKIAkJfSBlbHNlCiAJCQkvKiBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIHN0cmF5IG1hcHBpbmdzIG9mCiAJCQkgICB0aGlzIHBhZ2UgKi8KQEAgLTY5NiwyNyArNjk4LDM5IEBACiAKIHN0YXRpYyB2b2lkIHhlbl9hbGxvY19wdChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdTMyIHBmbikKIHsKLQl4ZW5fYWxsb2NfcHRwYWdlKG1tLCBwZm4sIE1NVUVYVF9QSU5fTDFfVEFCTEUpOworCXhlbl9hbGxvY19wdHBhZ2UobW0sIHBmbiwgUFRfUFRFKTsKIH0KIAogc3RhdGljIHZvaWQgeGVuX2FsbG9jX3BkKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1MzIgcGZuKQogewotCXhlbl9hbGxvY19wdHBhZ2UobW0sIHBmbiwgTU1VRVhUX1BJTl9MMl9UQUJMRSk7CisJeGVuX2FsbG9jX3B0cGFnZShtbSwgcGZuLCBQVF9QTUQpOwogfQogCiAvKiBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4gdW50aWwgd2UncmUgT0sgdG8gdXNlIHN0cnVjdCBwYWdlICovCi1zdGF0aWMgdm9pZCB4ZW5fcmVsZWFzZV9wdCh1MzIgcGZuKQorc3RhdGljIHZvaWQgeGVuX3JlbGVhc2VfcHRwYWdlKHUzMiBwZm4sIHVuc2lnbmVkIGxldmVsKQogewogCXN0cnVjdCBwYWdlICpwYWdlID0gcGZuX3RvX3BhZ2UocGZuKTsKIAogCWlmIChQYWdlUGlubmVkKHBhZ2UpKSB7CiAJCWlmICghUGFnZUhpZ2hNZW0ocGFnZSkpIHsKLQkJCXBpbl9wYWdldGFibGVfcGZuKE1NVUVYVF9VTlBJTl9UQUJMRSwgcGZuKTsKKwkJCWlmIChsZXZlbCA9PSBQVF9QVEUpCisJCQkJcGluX3BhZ2V0YWJsZV9wZm4oTU1VRVhUX1VOUElOX1RBQkxFLCBwZm4pOwogCQkJbWFrZV9sb3dtZW1fcGFnZV9yZWFkd3JpdGUoX192YShQRk5fUEhZUyhwZm4pKSk7CiAJCX0KKwkJQ2xlYXJQYWdlUGlubmVkKHBhZ2UpOwogCX0KIH0KIAorc3RhdGljIHZvaWQgeGVuX3JlbGVhc2VfcHQodTMyIHBmbikKK3sKKwl4ZW5fcmVsZWFzZV9wdHBhZ2UocGZuLCBQVF9QVEUpOworfQorCitzdGF0aWMgdm9pZCB4ZW5fcmVsZWFzZV9wZCh1MzIgcGZuKQoreworCXhlbl9yZWxlYXNlX3B0cGFnZShwZm4sIFBUX1BNRCk7Cit9CisKICNpZmRlZiBDT05GSUdfSElHSFBURQogc3RhdGljIHZvaWQgKnhlbl9rbWFwX2F0b21pY19wdGUoc3RydWN0IHBhZ2UgKnBhZ2UsIGVudW0ga21fdHlwZSB0eXBlKQogewpAQCAtODA1LDYgKzgxOSwzMSBAQAogCQkJICBQRk5fRE9XTihfX3BhKHhlbl9zdGFydF9pbmZvLT5wdF9iYXNlKSkpOwogfQogCitzdGF0aWMgX19pbml0IHZvaWQgc2V0dXBfc2hhcmVkX2luZm8odm9pZCkKK3sKKwlpZiAoIXhlbl9mZWF0dXJlKFhFTkZFQVRfYXV0b190cmFuc2xhdGVkX3BoeXNtYXApKSB7CisJCXVuc2lnbmVkIGxvbmcgYWRkciA9IGZpeF90b192aXJ0KEZJWF9QQVJBVklSVF9CT09UTUFQKTsKKworCQkvKgorCQkgKiBDcmVhdGUgYSBtYXBwaW5nIGZvciB0aGUgc2hhcmVkIGluZm8gcGFnZS4KKwkJICogU2hvdWxkIGJlIHNldF9maXhtYXAoKSwgYnV0IHNoYXJlZF9pbmZvIGlzIGEgbWFjaGluZQorCQkgKiBhZGRyZXNzIHdpdGggbm8gY29ycmVzcG9uZGluZyBwc2V1ZG8tcGh5cyBhZGRyZXNzLgorCQkgKi8KKwkJc2V0X3B0ZV9tZm4oYWRkciwKKwkJCSAgICBQRk5fRE9XTih4ZW5fc3RhcnRfaW5mby0+c2hhcmVkX2luZm8pLAorCQkJICAgIFBBR0VfS0VSTkVMKTsKKworCQlIWVBFUlZJU09SX3NoYXJlZF9pbmZvID0gKHN0cnVjdCBzaGFyZWRfaW5mbyAqKWFkZHI7CisJfSBlbHNlCisJCUhZUEVSVklTT1Jfc2hhcmVkX2luZm8gPQorCQkJKHN0cnVjdCBzaGFyZWRfaW5mbyAqKV9fdmEoeGVuX3N0YXJ0X2luZm8tPnNoYXJlZF9pbmZvKTsKKworI2lmbmRlZiBDT05GSUdfU01QCisJLyogSW4gVVAgdGhpcyBpcyBhcyBnb29kIGEgcGxhY2UgYXMgYW55IHRvIHNldCB1cCBzaGFyZWQgaW5mbyAqLworCXhlbl9zZXR1cF92Y3B1X2luZm9fcGxhY2VtZW50KCk7CisjZW5kaWYKK30KKwogc3RhdGljIF9faW5pdCB2b2lkIHhlbl9wYWdldGFibGVfc2V0dXBfZG9uZShwZ2RfdCAqYmFzZSkKIHsKIAkvKiBUaGlzIHdpbGwgd29yayBhcyBsb25nIGFzIHBhdGNoaW5nIGhhc24ndCBoYXBwZW5lZCB5ZXQKQEAgLTgxMiwyNSArODUxLDEwIEBACiAJcHZfbW11X29wcy5hbGxvY19wdCA9IHhlbl9hbGxvY19wdDsKIAlwdl9tbXVfb3BzLmFsbG9jX3BkID0geGVuX2FsbG9jX3BkOwogCXB2X21tdV9vcHMucmVsZWFzZV9wdCA9IHhlbl9yZWxlYXNlX3B0OwotCXB2X21tdV9vcHMucmVsZWFzZV9wZCA9IHhlbl9yZWxlYXNlX3B0OworCXB2X21tdV9vcHMucmVsZWFzZV9wZCA9IHhlbl9yZWxlYXNlX3BkOwogCXB2X21tdV9vcHMuc2V0X3B0ZSA9IHhlbl9zZXRfcHRlOwogCi0JaWYgKCF4ZW5fZmVhdHVyZShYRU5GRUFUX2F1dG9fdHJhbnNsYXRlZF9waHlzbWFwKSkgewotCQkvKgotCQkgKiBDcmVhdGUgYSBtYXBwaW5nIGZvciB0aGUgc2hhcmVkIGluZm8gcGFnZS4KLQkJICogU2hvdWxkIGJlIHNldF9maXhtYXAoKSwgYnV0IHNoYXJlZF9pbmZvIGlzIGEgbWFjaGluZQotCQkgKiBhZGRyZXNzIHdpdGggbm8gY29ycmVzcG9uZGluZyBwc2V1ZG8tcGh5cyBhZGRyZXNzLgotCQkgKi8KLQkJc2V0X3B0ZV9tZm4oZml4X3RvX3ZpcnQoRklYX1BBUkFWSVJUX0JPT1RNQVApLAotCQkJICAgIFBGTl9ET1dOKHhlbl9zdGFydF9pbmZvLT5zaGFyZWRfaW5mbyksCi0JCQkgICAgUEFHRV9LRVJORUwpOwotCi0JCUhZUEVSVklTT1Jfc2hhcmVkX2luZm8gPQotCQkJKHN0cnVjdCBzaGFyZWRfaW5mbyAqKWZpeF90b192aXJ0KEZJWF9QQVJBVklSVF9CT09UTUFQKTsKLQotCX0gZWxzZQotCQlIWVBFUlZJU09SX3NoYXJlZF9pbmZvID0KLQkJCShzdHJ1Y3Qgc2hhcmVkX2luZm8gKilfX3ZhKHhlbl9zdGFydF9pbmZvLT5zaGFyZWRfaW5mbyk7CisJc2V0dXBfc2hhcmVkX2luZm8oKTsKIAogCS8qIEFjdHVhbGx5IHBpbiB0aGUgcGFnZXRhYmxlIGRvd24sIGJ1dCB3ZSBjYW4ndCBzZXQgUEdfcGlubmVkCiAJICAgeWV0IGJlY2F1c2UgdGhlIHBhZ2Ugc3RydWN0dXJlcyBkb24ndCBleGlzdCB5ZXQuICovCkBAIC0xMTgyLDE1ICsxMjA2LDkgQEAKIAl4ODZfd3JpdGVfcGVyY3B1KHhlbl9jcjMsIF9fcGEocGdkKSk7CiAJeDg2X3dyaXRlX3BlcmNwdSh4ZW5fY3VycmVudF9jcjMsIF9fcGEocGdkKSk7CiAKLSNpZmRlZiBDT05GSUdfU01QCiAJLyogRG9uJ3QgZG8gdGhlIGZ1bGwgdmNwdV9pbmZvIHBsYWNlbWVudCBzdHVmZiB1bnRpbCB3ZSBoYXZlIGEKLQkgICBwb3NzaWJsZSBtYXAuICovCisJICAgcG9zc2libGUgbWFwIGFuZCBhIG5vbi1kdW1teSBzaGFyZWRfaW5mby4gKi8KIAlwZXJfY3B1KHhlbl92Y3B1LCAwKSA9ICZIWVBFUlZJU09SX3NoYXJlZF9pbmZvLT52Y3B1X2luZm9bMF07Ci0jZWxzZQotCS8qIE1heSBhcyB3ZWxsIGRvIGl0IG5vdywgc2luY2UgdGhlcmUncyBubyBnb29kIHRpbWUgdG8gY2FsbAotCSAgIGl0IGxhdGVyIG9uIFVQLiAqLwotCXhlbl9zZXR1cF92Y3B1X2luZm9fcGxhY2VtZW50KCk7Ci0jZW5kaWYKIAogCXB2X2luZm8ua2VybmVsX3JwbCA9IDE7CiAJaWYgKHhlbl9mZWF0dXJlKFhFTkZFQVRfc3VwZXJ2aXNvcl9tb2RlX2tlcm5lbCkpCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni94ZW4vbW11LmMgYi9hcmNoL3g4Ni94ZW4vbW11LmMKaW5kZXggMDE0NDM5NS4uMmEwNTRlZiAxMDA2NDQKLS0tIGEvYXJjaC94ODYveGVuL21tdS5jCisrKyBiL2FyY2gveDg2L3hlbi9tbXUuYwpAQCAtMzEwLDEzICszMTAsNiBAQAogfQogI2VuZGlmCS8qIENPTkZJR19YODZfUEFFICovCiAKLWVudW0gcHRfbGV2ZWwgewotCVBUX1BHRCwKLQlQVF9QVUQsCi0JUFRfUE1ELAotCVBUX1BURQotfTsKLQogLyoKICAgKFlldCBhbm90aGVyKSBwYWdldGFibGUgd2Fsa2VyLiAgVGhpcyBvbmUgaXMgaW50ZW5kZWQgZm9yIHBpbm5pbmcgYQogICBwYWdldGFibGUuICBUaGlzIG1lYW5zIHRoYXQgaXQgd2Fsa3MgYSBwYWdldGFibGUgYW5kIGNhbGxzIHRoZQpkaWZmIC0tZ2l0IGEvYXJjaC94ODYveGVuL21tdS5oIGIvYXJjaC94ODYveGVuL21tdS5oCmluZGV4IGM5ZmYyN2YuLmI1ZTE4OWIgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L3hlbi9tbXUuaAorKysgYi9hcmNoL3g4Ni94ZW4vbW11LmgKQEAgLTMsNiArMywxMyBAQAogI2luY2x1ZGUgPGxpbnV4L2xpbmthZ2UuaD4KICNpbmNsdWRlIDxhc20vcGFnZS5oPgogCitlbnVtIHB0X2xldmVsIHsKKwlQVF9QR0QsCisJUFRfUFVELAorCVBUX1BNRCwKKwlQVF9QVEUKK307CisKIC8qCiAgKiBQYWdlLWRpcmVjdG9yeSBhZGRyZXNzZXMgYWJvdmUgNEdCIGRvIG5vdCBmaXQgaW50byBhcmNoaXRlY3R1cmFsICVjcjMuCiAgKiBXaGVuIGFjY2Vzc2luZyAlY3IzLCBvciBlcXVpdmFsZW50IGZpZWxkIGluIHZjcHVfZ3Vlc3RfY29udGV4dCwgZ3Vlc3RzCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni94ZW4veGVuLWFzbS5TIGIvYXJjaC94ODYveGVuL3hlbi1hc20uUwppbmRleCAxYTQzYjYwLi42YjcxOTA0IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni94ZW4veGVuLWFzbS5TCisrKyBiL2FyY2gveDg2L3hlbi94ZW4tYXNtLlMKQEAgLTMzLDEyICszMywxNyBAQAogCWV2ZW50cywgdGhlbiBlbnRlciB0aGUgaHlwZXJ2aXNvciB0byBnZXQgdGhlbSBoYW5kbGVkLgogICovCiBFTlRSWSh4ZW5faXJxX2VuYWJsZV9kaXJlY3QpCi0JLyogQ2xlYXIgbWFzayBhbmQgdGVzdCBwZW5kaW5nICovCi0JYW5kdyAkMHgwMGZmLCBQRVJfQ1BVX1ZBUih4ZW5fdmNwdV9pbmZvKStYRU5fdmNwdV9pbmZvX3BlbmRpbmcKKwkvKiBVbm1hc2sgZXZlbnRzICovCisJbW92YiAkMCwgUEVSX0NQVV9WQVIoeGVuX3ZjcHVfaW5mbykrWEVOX3ZjcHVfaW5mb19tYXNrCisKIAkvKiBQcmVlbXB0IGhlcmUgZG9lc24ndCBtYXR0ZXIgYmVjYXVzZSB0aGF0IHdpbGwgZGVhbCB3aXRoCiAJICAgYW55IHBlbmRpbmcgaW50ZXJydXB0cy4gIFRoZSBwZW5kaW5nIGNoZWNrIG1heSBlbmQgdXAgYmVpbmcKIAkgICBydW4gb24gdGhlIHdyb25nIENQVSwgYnV0IHRoYXQgZG9lc24ndCBodXJ0LiAqLworCisJLyogVGVzdCBmb3IgcGVuZGluZyAqLworCXRlc3RiICQweGZmLCBQRVJfQ1BVX1ZBUih4ZW5fdmNwdV9pbmZvKStYRU5fdmNwdV9pbmZvX3BlbmRpbmcKIAlqeiAxZgorCiAyOgljYWxsIGNoZWNrX2V2ZW50cwogMToKIEVORFBBVENIKHhlbl9pcnFfZW5hYmxlX2RpcmVjdCkKZGlmZiAtLWdpdCBhL2Jsb2NrL0tjb25maWcgYi9ibG9jay9LY29uZmlnCmluZGV4IDliZGE3YmMuLjdkYjlhNDEgMTAwNjQ0Ci0tLSBhL2Jsb2NrL0tjb25maWcKKysrIGIvYmxvY2svS2NvbmZpZwpAQCAtMzgsNyArMzgsNyBAQAogCSAgb24gYSBibG9jayBkZXZpY2UgcXVldWUuIEZvciBtb3JlIGluZm9ybWF0aW9uIChhbmQgdGhlIHVzZXIgc3BhY2UKIAkgIHN1cHBvcnQgdG9vbHMgbmVlZGVkKSwgZmV0Y2ggdGhlIGJsa3RyYWNlIGFwcCBmcm9tOgogCi0JICBnaXQ6Ly9icmljay5rZXJuZWwuZGsvZGF0YS9naXQvYmxrdHJhY2UuZ2l0CisJICBnaXQ6Ly9naXQua2VybmVsLmRrL2Jsa3RyYWNlLmdpdAogCiBjb25maWcgTFNGCiAJYm9vbCAiU3VwcG9ydCBmb3IgTGFyZ2UgU2luZ2xlIEZpbGVzIgpkaWZmIC0tZ2l0IGEvYmxvY2svYmxrLXNldHRpbmdzLmMgYi9ibG9jay9ibGstc2V0dGluZ3MuYwppbmRleCAxMzQ0YTBlLi41NzEzZjdlIDEwMDY0NAotLS0gYS9ibG9jay9ibGstc2V0dGluZ3MuYworKysgYi9ibG9jay9ibGstc2V0dGluZ3MuYwpAQCAtMTQwLDcgKzE0MCw3IEBACiAJLyogQXNzdW1lIGFueXRoaW5nIDw9IDRHQiBjYW4gYmUgaGFuZGxlZCBieSBJT01NVS4KIAkgICBBY3R1YWxseSBzb21lIElPTU1VcyBjYW4gaGFuZGxlIGV2ZXJ5dGhpbmcsIGJ1dCBJIGRvbid0CiAJICAga25vdyBvZiBhIHdheSB0byB0ZXN0IHRoaXMgaGVyZS4gKi8KLQlpZiAoYl9wZm4gPD0gKG1pbl90KHU2NCwgMHhmZmZmZmZmZiwgQkxLX0JPVU5DRV9ISUdIKSA+PiBQQUdFX1NISUZUKSkKKwlpZiAoYl9wZm4gPCAobWluX3QodTY0LCAweDEwMDAwMDAwMFVMLCBCTEtfQk9VTkNFX0hJR0gpID4+IFBBR0VfU0hJRlQpKQogCQlkbWEgPSAxOwogCXEtPmJvdW5jZV9wZm4gPSBtYXhfbG93X3BmbjsKICNlbHNlCmRpZmYgLS1naXQgYS9ibG9jay9jZnEtaW9zY2hlZC5jIGIvYmxvY2svY2ZxLWlvc2NoZWQuYwppbmRleCAwZjk2MmVjLi5mNGUxMDA2IDEwMDY0NAotLS0gYS9ibG9jay9jZnEtaW9zY2hlZC5jCisrKyBiL2Jsb2NrL2NmcS1pb3NjaGVkLmMKQEAgLTExNDMsMjQgKzExNDMsMzcgQEAKIH0KIAogLyoKLSAqIENhbGwgZnVuYyBmb3IgZWFjaCBjaWMgYXR0YWNoZWQgdG8gdGhpcyBpb2MuIFJldHVybnMgbnVtYmVyIG9mIGNpYydzIHNlZW4uCisgKiBDYWxsIGZ1bmMgZm9yIGVhY2ggY2ljIGF0dGFjaGVkIHRvIHRoaXMgaW9jLgogICovCi1zdGF0aWMgdW5zaWduZWQgaW50CitzdGF0aWMgdm9pZAogY2FsbF9mb3JfZWFjaF9jaWMoc3RydWN0IGlvX2NvbnRleHQgKmlvYywKIAkJICB2b2lkICgqZnVuYykoc3RydWN0IGlvX2NvbnRleHQgKiwgc3RydWN0IGNmcV9pb19jb250ZXh0ICopKQogewogCXN0cnVjdCBjZnFfaW9fY29udGV4dCAqY2ljOwogCXN0cnVjdCBobGlzdF9ub2RlICpuOwotCWludCBjYWxsZWQgPSAwOwogCiAJcmN1X3JlYWRfbG9jaygpOwotCWhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShjaWMsIG4sICZpb2MtPmNpY19saXN0LCBjaWNfbGlzdCkgeworCWhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShjaWMsIG4sICZpb2MtPmNpY19saXN0LCBjaWNfbGlzdCkKIAkJZnVuYyhpb2MsIGNpYyk7Ci0JCWNhbGxlZCsrOwotCX0KIAlyY3VfcmVhZF91bmxvY2soKTsKK30KIAotCXJldHVybiBjYWxsZWQ7CitzdGF0aWMgdm9pZCBjZnFfY2ljX2ZyZWVfcmN1KHN0cnVjdCByY3VfaGVhZCAqaGVhZCkKK3sKKwlzdHJ1Y3QgY2ZxX2lvX2NvbnRleHQgKmNpYzsKKworCWNpYyA9IGNvbnRhaW5lcl9vZihoZWFkLCBzdHJ1Y3QgY2ZxX2lvX2NvbnRleHQsIHJjdV9oZWFkKTsKKworCWttZW1fY2FjaGVfZnJlZShjZnFfaW9jX3Bvb2wsIGNpYyk7CisJZWx2X2lvY19jb3VudF9kZWMoaW9jX2NvdW50KTsKKworCWlmIChpb2NfZ29uZSAmJiAhZWx2X2lvY19jb3VudF9yZWFkKGlvY19jb3VudCkpCisJCWNvbXBsZXRlKGlvY19nb25lKTsKK30KKworc3RhdGljIHZvaWQgY2ZxX2NpY19mcmVlKHN0cnVjdCBjZnFfaW9fY29udGV4dCAqY2ljKQoreworCWNhbGxfcmN1KCZjaWMtPnJjdV9oZWFkLCBjZnFfY2ljX2ZyZWVfcmN1KTsKIH0KIAogc3RhdGljIHZvaWQgY2ljX2ZyZWVfZnVuYyhzdHJ1Y3QgaW9fY29udGV4dCAqaW9jLCBzdHJ1Y3QgY2ZxX2lvX2NvbnRleHQgKmNpYykKQEAgLTExNzQsMjQgKzExODcsMTggQEAKIAlobGlzdF9kZWxfcmN1KCZjaWMtPmNpY19saXN0KTsKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpb2MtPmxvY2ssIGZsYWdzKTsKIAotCWttZW1fY2FjaGVfZnJlZShjZnFfaW9jX3Bvb2wsIGNpYyk7CisJY2ZxX2NpY19mcmVlKGNpYyk7CiB9CiAKIHN0YXRpYyB2b2lkIGNmcV9mcmVlX2lvX2NvbnRleHQoc3RydWN0IGlvX2NvbnRleHQgKmlvYykKIHsKLQlpbnQgZnJlZWQ7Ci0KIAkvKgotCSAqIGlvYy0+cmVmY291bnQgaXMgemVybyBoZXJlLCBzbyBubyBtb3JlIGNpYydzIGFyZSBhbGxvd2VkIHRvIGJlCi0JICogbGlua2VkIGludG8gdGhpcyBpb2MuIFNvIGl0IHNob3VsZCBiZSBvayB0byBpdGVyYXRlIG92ZXIgdGhlIGtub3duCi0JICogbGlzdCwgd2Ugd2lsbCBzZWUgYWxsIGNpYydzIHNpbmNlIG5vIG5ldyBvbmVzIGFyZSBhZGRlZC4KKwkgKiBpb2MtPnJlZmNvdW50IGlzIHplcm8gaGVyZSwgb3Igd2UgYXJlIGNhbGxlZCBmcm9tIGVsdl91bnJlZ2lzdGVyKCksCisJICogc28gbm8gbW9yZSBjaWMncyBhcmUgYWxsb3dlZCB0byBiZSBsaW5rZWQgaW50byB0aGlzIGlvYy4gIFNvIGl0CisJICogc2hvdWxkIGJlIG9rIHRvIGl0ZXJhdGUgb3ZlciB0aGUga25vd24gbGlzdCwgd2Ugd2lsbCBzZWUgYWxsIGNpYydzCisJICogc2luY2Ugbm8gbmV3IG9uZXMgYXJlIGFkZGVkLgogCSAqLwotCWZyZWVkID0gY2FsbF9mb3JfZWFjaF9jaWMoaW9jLCBjaWNfZnJlZV9mdW5jKTsKLQotCWVsdl9pb2NfY291bnRfbW9kKGlvY19jb3VudCwgLWZyZWVkKTsKLQotCWlmIChpb2NfZ29uZSAmJiAhZWx2X2lvY19jb3VudF9yZWFkKGlvY19jb3VudCkpCi0JCWNvbXBsZXRlKGlvY19nb25lKTsKKwljYWxsX2Zvcl9lYWNoX2NpYyhpb2MsIGNpY19mcmVlX2Z1bmMpOwogfQogCiBzdGF0aWMgdm9pZCBjZnFfZXhpdF9jZnFxKHN0cnVjdCBjZnFfZGF0YSAqY2ZxZCwgc3RydWN0IGNmcV9xdWV1ZSAqY2ZxcSkKQEAgLTEyMDcsNiArMTIxNCw4IEBACiBzdGF0aWMgdm9pZCBfX2NmcV9leGl0X3NpbmdsZV9pb19jb250ZXh0KHN0cnVjdCBjZnFfZGF0YSAqY2ZxZCwKIAkJCQkJIHN0cnVjdCBjZnFfaW9fY29udGV4dCAqY2ljKQogeworCXN0cnVjdCBpb19jb250ZXh0ICppb2MgPSBjaWMtPmlvYzsKKwogCWxpc3RfZGVsX2luaXQoJmNpYy0+cXVldWVfbGlzdCk7CiAKIAkvKgpAQCAtMTIxNiw2ICsxMjI1LDkgQEAKIAljaWMtPmRlYWRfa2V5ID0gKHVuc2lnbmVkIGxvbmcpIGNpYy0+a2V5OwogCWNpYy0+a2V5ID0gTlVMTDsKIAorCWlmIChpb2MtPmlvY19kYXRhID09IGNpYykKKwkJcmN1X2Fzc2lnbl9wb2ludGVyKGlvYy0+aW9jX2RhdGEsIE5VTEwpOworCiAJaWYgKGNpYy0+Y2ZxcVtBU1lOQ10pIHsKIAkJY2ZxX2V4aXRfY2ZxcShjZnFkLCBjaWMtPmNmcXFbQVNZTkNdKTsKIAkJY2ljLT5jZnFxW0FTWU5DXSA9IE5VTEw7CkBAIC0xMjQ4LDcgKzEyNjAsNiBAQAogICovCiBzdGF0aWMgdm9pZCBjZnFfZXhpdF9pb19jb250ZXh0KHN0cnVjdCBpb19jb250ZXh0ICppb2MpCiB7Ci0JcmN1X2Fzc2lnbl9wb2ludGVyKGlvYy0+aW9jX2RhdGEsIE5VTEwpOwogCWNhbGxfZm9yX2VhY2hfY2ljKGlvYywgY2ZxX2V4aXRfc2luZ2xlX2lvX2NvbnRleHQpOwogfQogCkBAIC0xNDU4LDE1ICsxNDY5LDYgQEAKIAlyZXR1cm4gY2ZxcTsKIH0KIAotc3RhdGljIHZvaWQgY2ZxX2NpY19mcmVlKHN0cnVjdCBjZnFfaW9fY29udGV4dCAqY2ljKQotewotCWttZW1fY2FjaGVfZnJlZShjZnFfaW9jX3Bvb2wsIGNpYyk7Ci0JZWx2X2lvY19jb3VudF9kZWMoaW9jX2NvdW50KTsKLQotCWlmIChpb2NfZ29uZSAmJiAhZWx2X2lvY19jb3VudF9yZWFkKGlvY19jb3VudCkpCi0JCWNvbXBsZXRlKGlvY19nb25lKTsKLX0KLQogLyoKICAqIFdlIGRyb3AgY2ZxIGlvIGNvbnRleHRzIGxhemlseSwgc28gd2UgbWF5IGZpbmQgYSBkZWFkIG9uZS4KICAqLwpAQCAtMTQ4MCw4ICsxNDgyLDcgQEAKIAogCXNwaW5fbG9ja19pcnFzYXZlKCZpb2MtPmxvY2ssIGZsYWdzKTsKIAotCWlmIChpb2MtPmlvY19kYXRhID09IGNpYykKLQkJcmN1X2Fzc2lnbl9wb2ludGVyKGlvYy0+aW9jX2RhdGEsIE5VTEwpOworCUJVR19PTihpb2MtPmlvY19kYXRhID09IGNpYyk7CiAKIAlyYWRpeF90cmVlX2RlbGV0ZSgmaW9jLT5yYWRpeF9yb290LCAodW5zaWduZWQgbG9uZykgY2ZxZCk7CiAJaGxpc3RfZGVsX3JjdSgmY2ljLT5jaWNfbGlzdCk7CkBAIC0yMTM4LDcgKzIxMzksNyBAQAogCWlmICghY2ZxX3Bvb2wpCiAJCWdvdG8gZmFpbDsKIAotCWNmcV9pb2NfcG9vbCA9IEtNRU1fQ0FDSEUoY2ZxX2lvX2NvbnRleHQsIFNMQUJfREVTVFJPWV9CWV9SQ1UpOworCWNmcV9pb2NfcG9vbCA9IEtNRU1fQ0FDSEUoY2ZxX2lvX2NvbnRleHQsIDApOwogCWlmICghY2ZxX2lvY19wb29sKQogCQlnb3RvIGZhaWw7CiAKQEAgLTIyODYsNyArMjI4Nyw2IEBACiAJc21wX3dtYigpOwogCWlmIChlbHZfaW9jX2NvdW50X3JlYWQoaW9jX2NvdW50KSkKIAkJd2FpdF9mb3JfY29tcGxldGlvbihpb2NfZ29uZSk7Ci0Jc3luY2hyb25pemVfcmN1KCk7CiAJY2ZxX3NsYWJfa2lsbCgpOwogfQogCmRpZmYgLS1naXQgYS9ibG9jay9nZW5oZC5jIGIvYmxvY2svZ2VuaGQuYwppbmRleCBjNDQ1MjdkLi4wMGRhNTIxIDEwMDY0NAotLS0gYS9ibG9jay9nZW5oZC5jCisrKyBiL2Jsb2NrL2dlbmhkLmMKQEAgLTM2MCw3ICszNjAsOSBAQAogCiBzdGF0aWMgaW50IF9faW5pdCBnZW5oZF9kZXZpY2VfaW5pdCh2b2lkKQogewotCWNsYXNzX3JlZ2lzdGVyKCZibG9ja19jbGFzcyk7CisJaW50IGVycm9yID0gY2xhc3NfcmVnaXN0ZXIoJmJsb2NrX2NsYXNzKTsKKwlpZiAodW5saWtlbHkoZXJyb3IpKQorCQlyZXR1cm4gZXJyb3I7CiAJYmRldl9tYXAgPSBrb2JqX21hcF9pbml0KGJhc2VfcHJvYmUsICZibG9ja19jbGFzc19sb2NrKTsKIAlibGtfZGV2X2luaXQoKTsKIApkaWZmIC0tZ2l0IGEvY3J5cHRvL2FzeW5jX3R4L2FzeW5jX21lbWNweS5jIGIvY3J5cHRvL2FzeW5jX3R4L2FzeW5jX21lbWNweS5jCmluZGV4IDBmNjI4MjIuLjg0Y2FhNGUgMTAwNjQ0Ci0tLSBhL2NyeXB0by9hc3luY190eC9hc3luY19tZW1jcHkuYworKysgYi9jcnlwdG8vYXN5bmNfdHgvYXN5bmNfbWVtY3B5LmMKQEAgLTY2LDExICs2NiwxMSBAQAogCX0KIAogCWlmICh0eCkgewotCQlwcl9kZWJ1ZygiJXM6IChhc3luYykgbGVuOiAlenVcbiIsIF9fRlVOQ1RJT05fXywgbGVuKTsKKwkJcHJfZGVidWcoIiVzOiAoYXN5bmMpIGxlbjogJXp1XG4iLCBfX2Z1bmNfXywgbGVuKTsKIAkJYXN5bmNfdHhfc3VibWl0KGNoYW4sIHR4LCBmbGFncywgZGVwZW5kX3R4LCBjYl9mbiwgY2JfcGFyYW0pOwogCX0gZWxzZSB7CiAJCXZvaWQgKmRlc3RfYnVmLCAqc3JjX2J1ZjsKLQkJcHJfZGVidWcoIiVzOiAoc3luYykgbGVuOiAlenVcbiIsIF9fRlVOQ1RJT05fXywgbGVuKTsKKwkJcHJfZGVidWcoIiVzOiAoc3luYykgbGVuOiAlenVcbiIsIF9fZnVuY19fLCBsZW4pOwogCiAJCS8qIHdhaXQgZm9yIGFueSBwcmVyZXF1aXNpdGUgb3BlcmF0aW9ucyAqLwogCQlpZiAoZGVwZW5kX3R4KSB7CkBAIC04MCw3ICs4MCw3IEBACiAJCQlCVUdfT04oZGVwZW5kX3R4LT5hY2spOwogCQkJaWYgKGRtYV93YWl0X2Zvcl9hc3luY190eChkZXBlbmRfdHgpID09IERNQV9FUlJPUikKIAkJCQlwYW5pYygiJXM6IERNQV9FUlJPUiB3YWl0aW5nIGZvciBkZXBlbmRfdHhcbiIsCi0JCQkJCV9fRlVOQ1RJT05fXyk7CisJCQkJCV9fZnVuY19fKTsKIAkJfQogCiAJCWRlc3RfYnVmID0ga21hcF9hdG9taWMoZGVzdCwgS01fVVNFUjApICsgZGVzdF9vZmZzZXQ7CmRpZmYgLS1naXQgYS9jcnlwdG8vYXN5bmNfdHgvYXN5bmNfbWVtc2V0LmMgYi9jcnlwdG8vYXN5bmNfdHgvYXN5bmNfbWVtc2V0LmMKaW5kZXggMDljMGU4My4uZjVmZjM5MDYgMTAwNjQ0Ci0tLSBhL2NyeXB0by9hc3luY190eC9hc3luY19tZW1zZXQuYworKysgYi9jcnlwdG8vYXN5bmNfdHgvYXN5bmNfbWVtc2V0LmMKQEAgLTYzLDExICs2MywxMSBAQAogCX0KIAogCWlmICh0eCkgewotCQlwcl9kZWJ1ZygiJXM6IChhc3luYykgbGVuOiAlenVcbiIsIF9fRlVOQ1RJT05fXywgbGVuKTsKKwkJcHJfZGVidWcoIiVzOiAoYXN5bmMpIGxlbjogJXp1XG4iLCBfX2Z1bmNfXywgbGVuKTsKIAkJYXN5bmNfdHhfc3VibWl0KGNoYW4sIHR4LCBmbGFncywgZGVwZW5kX3R4LCBjYl9mbiwgY2JfcGFyYW0pOwogCX0gZWxzZSB7IC8qIHJ1biB0aGUgbWVtc2V0IHN5bmNocm9ub3VzbHkgKi8KIAkJdm9pZCAqZGVzdF9idWY7Ci0JCXByX2RlYnVnKCIlczogKHN5bmMpIGxlbjogJXp1XG4iLCBfX0ZVTkNUSU9OX18sIGxlbik7CisJCXByX2RlYnVnKCIlczogKHN5bmMpIGxlbjogJXp1XG4iLCBfX2Z1bmNfXywgbGVuKTsKIAogCQlkZXN0X2J1ZiA9ICh2b2lkICopICgoKGNoYXIgKikgcGFnZV9hZGRyZXNzKGRlc3QpKSArIG9mZnNldCk7CiAKQEAgLTc5LDcgKzc5LDcgQEAKIAkJCUJVR19PTihkZXBlbmRfdHgtPmFjayk7CiAJCQlpZiAoZG1hX3dhaXRfZm9yX2FzeW5jX3R4KGRlcGVuZF90eCkgPT0gRE1BX0VSUk9SKQogCQkJCXBhbmljKCIlczogRE1BX0VSUk9SIHdhaXRpbmcgZm9yIGRlcGVuZF90eFxuIiwKLQkJCQkJX19GVU5DVElPTl9fKTsKKwkJCQkJX19mdW5jX18pOwogCQl9CiAKIAkJbWVtc2V0KGRlc3RfYnVmLCB2YWwsIGxlbik7CmRpZmYgLS1naXQgYS9jcnlwdG8vYXN5bmNfdHgvYXN5bmNfdHguYyBiL2NyeXB0by9hc3luY190eC9hc3luY190eC5jCmluZGV4IDU2Mjg4MjE4Li4yYmUzYmFlIDEwMDY0NAotLS0gYS9jcnlwdG8vYXN5bmNfdHgvYXN5bmNfdHguYworKysgYi9jcnlwdG8vYXN5bmNfdHgvYXN5bmNfdHguYwpAQCAtNDcyLDExICs0NzIsMTEgQEAKIAkJdHggPSBOVUxMOwogCiAJaWYgKHR4KSB7Ci0JCXByX2RlYnVnKCIlczogKGFzeW5jKVxuIiwgX19GVU5DVElPTl9fKTsKKwkJcHJfZGVidWcoIiVzOiAoYXN5bmMpXG4iLCBfX2Z1bmNfXyk7CiAKIAkJYXN5bmNfdHhfc3VibWl0KGNoYW4sIHR4LCBmbGFncywgZGVwZW5kX3R4LCBjYl9mbiwgY2JfcGFyYW0pOwogCX0gZWxzZSB7Ci0JCXByX2RlYnVnKCIlczogKHN5bmMpXG4iLCBfX0ZVTkNUSU9OX18pOworCQlwcl9kZWJ1ZygiJXM6IChzeW5jKVxuIiwgX19mdW5jX18pOwogCiAJCS8qIHdhaXQgZm9yIGFueSBwcmVyZXF1aXNpdGUgb3BlcmF0aW9ucyAqLwogCQlpZiAoZGVwZW5kX3R4KSB7CkBAIC00ODYsNyArNDg2LDcgQEAKIAkJCUJVR19PTihkZXBlbmRfdHgtPmFjayk7CiAJCQlpZiAoZG1hX3dhaXRfZm9yX2FzeW5jX3R4KGRlcGVuZF90eCkgPT0gRE1BX0VSUk9SKQogCQkJCXBhbmljKCIlczogRE1BX0VSUk9SIHdhaXRpbmcgZm9yIGRlcGVuZF90eFxuIiwKLQkJCQkJX19GVU5DVElPTl9fKTsKKwkJCQkJX19mdW5jX18pOwogCQl9CiAKIAkJYXN5bmNfdHhfc3luY19lcGlsb2coZmxhZ3MsIGRlcGVuZF90eCwgY2JfZm4sIGNiX3BhcmFtKTsKZGlmZiAtLWdpdCBhL2NyeXB0by9hc3luY190eC9hc3luY194b3IuYyBiL2NyeXB0by9hc3luY190eC9hc3luY194b3IuYwppbmRleCAyMjU5YTRmLi4xYzQ0NWM3IDEwMDY0NAotLS0gYS9jcnlwdG8vYXN5bmNfdHgvYXN5bmNfeG9yLmMKKysrIGIvY3J5cHRvL2FzeW5jX3R4L2FzeW5jX3hvci5jCkBAIC00Nyw3ICs0Nyw3IEBACiAJaW50IGk7CiAJdW5zaWduZWQgbG9uZyBkbWFfcHJlcF9mbGFncyA9IGNiX2ZuID8gRE1BX1BSRVBfSU5URVJSVVBUIDogMDsKIAotCXByX2RlYnVnKCIlczogbGVuOiAlenVcbiIsIF9fRlVOQ1RJT05fXywgbGVuKTsKKwlwcl9kZWJ1ZygiJXM6IGxlbjogJXp1XG4iLCBfX2Z1bmNfXywgbGVuKTsKIAogCWRtYV9kZXN0ID0gZG1hX21hcF9wYWdlKGRldmljZS0+ZGV2LCBkZXN0LCBvZmZzZXQsIGxlbiwKIAkJCQlETUFfRlJPTV9ERVZJQ0UpOwpAQCAtODYsNyArODYsNyBAQAogCXZvaWQgKl9kZXN0OwogCWludCBpOwogCi0JcHJfZGVidWcoIiVzOiBsZW46ICV6dVxuIiwgX19GVU5DVElPTl9fLCBsZW4pOworCXByX2RlYnVnKCIlczogbGVuOiAlenVcbiIsIF9fZnVuY19fLCBsZW4pOwogCiAJLyogcmV1c2UgdGhlICdzcmNfbGlzdCcgYXJyYXkgdG8gY29udmVydCB0byBidWZmZXIgcG9pbnRlcnMgKi8KIAlmb3IgKGkgPSAwOyBpIDwgc3JjX2NudDsgaSsrKQpAQCAtMTk2LDcgKzE5Niw3IEBACiAJCQkJCURNQV9FUlJPUikKIAkJCQkJcGFuaWMoIiVzOiBETUFfRVJST1Igd2FpdGluZyBmb3IgIgogCQkJCQkJImRlcGVuZF90eFxuIiwKLQkJCQkJCV9fRlVOQ1RJT05fXyk7CisJCQkJCQlfX2Z1bmNfXyk7CiAJCQl9CiAKIAkJCWRvX3N5bmNfeG9yKGRlc3QsICZzcmNfbGlzdFtzcmNfb2ZmXSwgb2Zmc2V0LApAQCAtMjcxLDEyICsyNzEsMTIgQEAKIAogCUJVR19PTihzcmNfY250IDw9IDEpOwogCi0JaWYgKGRldmljZSkgeworCWlmIChkZXZpY2UgJiYgc3JjX2NudCA8PSBkZXZpY2UtPm1heF94b3IpIHsKIAkJZG1hX2FkZHJfdCAqZG1hX3NyYyA9IChkbWFfYWRkcl90ICopIHNyY19saXN0OwogCQl1bnNpZ25lZCBsb25nIGRtYV9wcmVwX2ZsYWdzID0gY2JfZm4gPyBETUFfUFJFUF9JTlRFUlJVUFQgOiAwOwogCQlpbnQgaTsKIAotCQlwcl9kZWJ1ZygiJXM6IChhc3luYykgbGVuOiAlenVcbiIsIF9fRlVOQ1RJT05fXywgbGVuKTsKKwkJcHJfZGVidWcoIiVzOiAoYXN5bmMpIGxlbjogJXp1XG4iLCBfX2Z1bmNfXywgbGVuKTsKIAogCQlmb3IgKGkgPSAwOyBpIDwgc3JjX2NudDsgaSsrKQogCQkJZG1hX3NyY1tpXSA9IGRtYV9tYXBfcGFnZShkZXZpY2UtPmRldiwgc3JjX2xpc3RbaV0sCkBAIC0yOTksNyArMjk5LDcgQEAKIAl9IGVsc2UgewogCQl1bnNpZ25lZCBsb25nIHhvcl9mbGFncyA9IGZsYWdzOwogCi0JCXByX2RlYnVnKCIlczogKHN5bmMpIGxlbjogJXp1XG4iLCBfX0ZVTkNUSU9OX18sIGxlbik7CisJCXByX2RlYnVnKCIlczogKHN5bmMpIGxlbjogJXp1XG4iLCBfX2Z1bmNfXywgbGVuKTsKIAogCQl4b3JfZmxhZ3MgfD0gQVNZTkNfVFhfWE9SX0RST1BfRFNUOwogCQl4b3JfZmxhZ3MgJj0gfkFTWU5DX1RYX0FDSzsKQEAgLTMxMCw3ICszMTAsNyBAQAogCQlpZiAodHgpIHsKIAkJCWlmIChkbWFfd2FpdF9mb3JfYXN5bmNfdHgodHgpID09IERNQV9FUlJPUikKIAkJCQlwYW5pYygiJXM6IERNQV9FUlJPUiB3YWl0aW5nIGZvciB0eFxuIiwKLQkJCQkJX19GVU5DVElPTl9fKTsKKwkJCQkJX19mdW5jX18pOwogCQkJYXN5bmNfdHhfYWNrKHR4KTsKIAkJfQogCmRpZmYgLS1naXQgYS9jcnlwdG8veGNiYy5jIGIvY3J5cHRvL3hjYmMuYwppbmRleCAyZmViMGYyMy4uYjYzYjYzMyAxMDA2NDQKLS0tIGEvY3J5cHRvL3hjYmMuYworKysgYi9jcnlwdG8veGNiYy5jCkBAIC0xMTYsMTMgKzExNiwxMSBAQAogCXN0cnVjdCBjcnlwdG9feGNiY19jdHggKmN0eCA9IGNyeXB0b19oYXNoX2N0eF9hbGlnbmVkKHBhcmVudCk7CiAJc3RydWN0IGNyeXB0b19jaXBoZXIgKnRmbSA9IGN0eC0+Y2hpbGQ7CiAJaW50IGJzID0gY3J5cHRvX2hhc2hfYmxvY2tzaXplKHBhcmVudCk7Ci0JdW5zaWduZWQgaW50IGkgPSAwOwogCi0JZG8gewotCi0JCXN0cnVjdCBwYWdlICpwZyA9IHNnX3BhZ2UoJnNnW2ldKTsKLQkJdW5zaWduZWQgaW50IG9mZnNldCA9IHNnW2ldLm9mZnNldDsKLQkJdW5zaWduZWQgaW50IHNsZW4gPSBzZ1tpXS5sZW5ndGg7CisJZm9yICg7OykgeworCQlzdHJ1Y3QgcGFnZSAqcGcgPSBzZ19wYWdlKHNnKTsKKwkJdW5zaWduZWQgaW50IG9mZnNldCA9IHNnLT5vZmZzZXQ7CisJCXVuc2lnbmVkIGludCBzbGVuID0gc2ctPmxlbmd0aDsKIAogCQlpZiAodW5saWtlbHkoc2xlbiA+IG5ieXRlcykpCiAJCQlzbGVuID0gbmJ5dGVzOwpAQCAtMTgyLDggKzE4MCwxMSBAQAogCQkJb2Zmc2V0ID0gMDsKIAkJCXBnKys7CiAJCX0KLQkJaSsrOwotCX0gd2hpbGUgKG5ieXRlcz4wKTsKKworCQlpZiAoIW5ieXRlcykKKwkJCWJyZWFrOworCQlzZyA9IHNjYXR0ZXJ3YWxrX3NnX25leHQoc2cpOworCX0KIAogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL0tjb25maWcgYi9kcml2ZXJzL2FjcGkvS2NvbmZpZwppbmRleCBmNjg4YzIxLi5iNGY1ZTg1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvS2NvbmZpZworKysgYi9kcml2ZXJzL2FjcGkvS2NvbmZpZwpAQCAtMjgzLDM0ICsyODMsMjIgQEAKIAkgIElmIHlvdSBoYXZlIGEgbGVnYWN5IGZyZWUgVG9zaGliYSBsYXB0b3AgKHN1Y2ggYXMgdGhlIExpYnJldHRvIEwxCiAJICBzZXJpZXMpLCBzYXkgWS4KIAotY29uZmlnIEFDUElfQ1VTVE9NX0RTRFQKLQlib29sICJJbmNsdWRlIEN1c3RvbSBEU0RUIgorY29uZmlnIEFDUElfQ1VTVE9NX0RTRFRfRklMRQorCXN0cmluZyAiQ3VzdG9tIERTRFQgVGFibGUgZmlsZSB0byBpbmNsdWRlIgorCWRlZmF1bHQgIiIKIAlkZXBlbmRzIG9uICFTVEFOREFMT05FCi0JZGVmYXVsdCBuIAogCWhlbHAKIAkgIFRoaXMgb3B0aW9uIHN1cHBvcnRzIGEgY3VzdG9tIERTRFQgYnkgbGlua2luZyBpdCBpbnRvIHRoZSBrZXJuZWwuCiAJICBTZWUgRG9jdW1lbnRhdGlvbi9hY3BpL2RzZHQtb3ZlcnJpZGUudHh0CiAKLQkgIElmIHVuc3VyZSwgc2F5IE4uCi0KLWNvbmZpZyBBQ1BJX0NVU1RPTV9EU0RUX0ZJTEUKLQlzdHJpbmcgIkN1c3RvbSBEU0RUIFRhYmxlIGZpbGUgdG8gaW5jbHVkZSIKLQlkZXBlbmRzIG9uIEFDUElfQ1VTVE9NX0RTRFQKLQlkZWZhdWx0ICIiCi0JaGVscAogCSAgRW50ZXIgdGhlIGZ1bGwgcGF0aCBuYW1lIHRvIHRoZSBmaWxlIHdoaWNoIGluY2x1ZGVzIHRoZSBBbWxDb2RlCiAJICBkZWNsYXJhdGlvbi4KIAotY29uZmlnIEFDUElfQ1VTVE9NX0RTRFRfSU5JVFJECi0JYm9vbCAiUmVhZCBDdXN0b20gRFNEVCBmcm9tIGluaXRyYW1mcyIKLQlkZXBlbmRzIG9uIEJMS19ERVZfSU5JVFJECi0JZGVmYXVsdCBuCi0JaGVscAotCSAgVGhpcyBvcHRpb24gc3VwcG9ydHMgYSBjdXN0b20gRFNEVCBieSBvcHRpb25hbGx5IGxvYWRpbmcgaXQgZnJvbSBpbml0cmQuCi0JICBTZWUgRG9jdW1lbnRhdGlvbi9hY3BpL2RzZHQtb3ZlcnJpZGUudHh0CisJICBJZiB1bnN1cmUsIGRvbid0IGVudGVyIGEgZmlsZSBuYW1lLgogCi0JICBJZiB5b3UgYXJlIG5vdCB1c2luZyB0aGlzIGZlYXR1cmUgbm93LCBidXQgbWF5IHVzZSBpdCBsYXRlciwKLQkgIGl0IGlzIHNhZmUgdG8gc2F5IFkgaGVyZS4KK2NvbmZpZyBBQ1BJX0NVU1RPTV9EU0RUCisJYm9vbAorCWRlZmF1bHQgQUNQSV9DVVNUT01fRFNEVF9GSUxFICE9ICIiCiAKIGNvbmZpZyBBQ1BJX0JMQUNLTElTVF9ZRUFSCiAJaW50ICJEaXNhYmxlIEFDUEkgZm9yIHN5c3RlbXMgYmVmb3JlIEphbiAxc3QgdGhpcyB5ZWFyIiBpZiBYODZfMzIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9hc3VzX2FjcGkuYyBiL2RyaXZlcnMvYWNwaS9hc3VzX2FjcGkuYwppbmRleCBkMjVlZjk2Li40NGFkOTBjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvYXN1c19hY3BpLmMKKysrIGIvZHJpdmVycy9hY3BpL2FzdXNfYWNwaS5jCkBAIC02MTAsNyArNjEwLDcgQEAKIAkgICAgKGxlZF9vdXQpID8gKGhvdGstPnN0YXR1cyB8IGxlZG1hc2spIDogKGhvdGstPnN0YXR1cyAmIH5sZWRtYXNrKTsKIAogCWlmIChpbnZlcnQpCQkvKiBpbnZlcnQgdGFyZ2V0IHZhbHVlICovCi0JCWxlZF9vdXQgPSAhbGVkX291dCAmIDB4MTsKKwkJbGVkX291dCA9ICFsZWRfb3V0OwogCiAJaWYgKCF3cml0ZV9hY3BpX2ludChob3RrLT5oYW5kbGUsIGxlZG5hbWUsIGxlZF9vdXQsIE5VTEwpKQogCQlwcmludGsoS0VSTl9XQVJOSU5HICJBc3VzIEFDUEk6IExFRCAoJXMpIHdyaXRlIGZhaWxlZFxuIiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9iYXR0ZXJ5LmMgYi9kcml2ZXJzL2FjcGkvYmF0dGVyeS5jCmluZGV4IGY2MjE1ZTguLmQ1NzI5ZDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9iYXR0ZXJ5LmMKKysrIGIvZHJpdmVycy9hY3BpL2JhdHRlcnkuYwpAQCAtMjkzLDEzICsyOTMsMTIgQEAKIAkJCQlzdHJuY3B5KHB0ciwgKHU4ICopJmVsZW1lbnQtPmludGVnZXIudmFsdWUsCiAJCQkJCXNpemVvZihhY3BpX2ludGVnZXIpKTsKIAkJCQlwdHJbc2l6ZW9mKGFjcGlfaW50ZWdlcildID0gMDsKLQkJCX0gZWxzZSByZXR1cm4gLUVGQVVMVDsKKwkJCX0gZWxzZQorCQkJCSpwdHIgPSAwOyAvKiBkb24ndCBoYXZlIHZhbHVlICovCiAJCX0gZWxzZSB7Ci0JCQlpZiAoZWxlbWVudC0+dHlwZSA9PSBBQ1BJX1RZUEVfSU5URUdFUikgewotCQkJCWludCAqeCA9IChpbnQgKikoKHU4ICopYmF0dGVyeSArCi0JCQkJCQlvZmZzZXRzW2ldLm9mZnNldCk7Ci0JCQkJKnggPSBlbGVtZW50LT5pbnRlZ2VyLnZhbHVlOwotCQkJfSBlbHNlIHJldHVybiAtRUZBVUxUOworCQkJaW50ICp4ID0gKGludCAqKSgodTggKiliYXR0ZXJ5ICsgb2Zmc2V0c1tpXS5vZmZzZXQpOworCQkJKnggPSAoZWxlbWVudC0+dHlwZSA9PSBBQ1BJX1RZUEVfSU5URUdFUikgPworCQkJCWVsZW1lbnQtPmludGVnZXIudmFsdWUgOiAtMTsKIAkJfQogCX0KIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9idXMuYyBiL2RyaXZlcnMvYWNwaS9idXMuYwppbmRleCBjZTNjMGEyLi4yZDE5NTVjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvYnVzLmMKKysrIGIvZHJpdmVycy9hY3BpL2J1cy5jCkBAIC0zNzMsMTAgKzM3MywxMSBAQAogCX0KIAogCXNwaW5fbG9ja19pcnFzYXZlKCZhY3BpX2J1c19ldmVudF9sb2NrLCBmbGFncyk7Ci0JZW50cnkgPQotCSAgICBsaXN0X2VudHJ5KGFjcGlfYnVzX2V2ZW50X2xpc3QubmV4dCwgc3RydWN0IGFjcGlfYnVzX2V2ZW50LCBub2RlKTsKLQlpZiAoZW50cnkpCisJaWYgKCFsaXN0X2VtcHR5KCZhY3BpX2J1c19ldmVudF9saXN0KSkgeworCQllbnRyeSA9IGxpc3RfZW50cnkoYWNwaV9idXNfZXZlbnRfbGlzdC5uZXh0LAorCQkJCSAgIHN0cnVjdCBhY3BpX2J1c19ldmVudCwgbm9kZSk7CiAJCWxpc3RfZGVsKCZlbnRyeS0+bm9kZSk7CisJfQogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFjcGlfYnVzX2V2ZW50X2xvY2ssIGZsYWdzKTsKIAogCWlmICghZW50cnkpCkBAIC03NzYsNyArNzc3LDcgQEAKIAogCWFjcGlfa29iaiA9IGtvYmplY3RfY3JlYXRlX2FuZF9hZGQoImFjcGkiLCBmaXJtd2FyZV9rb2JqKTsKIAlpZiAoIWFjcGlfa29iaikgewotCQlwcmludGsoS0VSTl9XQVJOSU5HICIlczoga3NldCBjcmVhdGUgZXJyb3JcbiIsIF9fRlVOQ1RJT05fXyk7CisJCXByaW50ayhLRVJOX1dBUk5JTkcgIiVzOiBrc2V0IGNyZWF0ZSBlcnJvclxuIiwgX19mdW5jX18pOwogCQlhY3BpX2tvYmogPSBOVUxMOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL2J1dHRvbi5jIGIvZHJpdmVycy9hY3BpL2J1dHRvbi5jCmluZGV4IDI0YTc4NjUuLjZjNWRhODMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9idXR0b24uYworKysgYi9kcml2ZXJzL2FjcGkvYnV0dG9uLmMKQEAgLTQ0OSw2ICs0NDksNyBAQAogCWlucHV0LT5waHlzID0gYnV0dG9uLT5waHlzOwogCWlucHV0LT5pZC5idXN0eXBlID0gQlVTX0hPU1Q7CiAJaW5wdXQtPmlkLnByb2R1Y3QgPSBidXR0b24tPnR5cGU7CisJaW5wdXQtPmRldi5wYXJlbnQgPSAmZGV2aWNlLT5kZXY7CiAKIAlzd2l0Y2ggKGJ1dHRvbi0+dHlwZSkgewogCWNhc2UgQUNQSV9CVVRUT05fVFlQRV9QT1dFUjoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9kb2NrLmMgYi9kcml2ZXJzL2FjcGkvZG9jay5jCmluZGV4IDMwN2NlZjYuLmZhNDRmYjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9kb2NrLmMKKysrIGIvZHJpdmVycy9hY3BpL2RvY2suYwpAQCAtNzEwLDYgKzcxMCw3IEBACiAJaWYgKCFjb3VudCkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKKwliZWdpbl91bmRvY2soZG9ja19zdGF0aW9uKTsKIAlyZXQgPSBoYW5kbGVfZWplY3RfcmVxdWVzdChkb2NrX3N0YXRpb24sIEFDUElfTk9USUZZX0VKRUNUX1JFUVVFU1QpOwogCXJldHVybiByZXQgPyByZXQ6IGNvdW50OwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL2VjLmMgYi9kcml2ZXJzL2FjcGkvZWMuYwppbmRleCBjYWY4NzNjLi43MjIyYTE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvZWMuYworKysgYi9kcml2ZXJzL2FjcGkvZWMuYwpAQCAtOTQzLDExICs5NDMsNyBAQAogCQlib290X2VjLT5jb21tYW5kX2FkZHIgPSBlY2R0X3B0ci0+Y29udHJvbC5hZGRyZXNzOwogCQlib290X2VjLT5kYXRhX2FkZHIgPSBlY2R0X3B0ci0+ZGF0YS5hZGRyZXNzOwogCQlib290X2VjLT5ncGUgPSBlY2R0X3B0ci0+Z3BlOwotCQlpZiAoQUNQSV9GQUlMVVJFKGFjcGlfZ2V0X2hhbmRsZShOVUxMLCBlY2R0X3B0ci0+aWQsCi0JCQkJJmJvb3RfZWMtPmhhbmRsZSkpKSB7Ci0JCQlwcl9pbmZvKCJGYWlsZWQgdG8gbG9jYXRlIGhhbmRsZSBmb3IgYm9vdCBFQ1xuIik7Ci0JCQlib290X2VjLT5oYW5kbGUgPSBBQ1BJX1JPT1RfT0JKRUNUOwotCQl9CisJCWJvb3RfZWMtPmhhbmRsZSA9IEFDUElfUk9PVF9PQkpFQ1Q7CiAJfSBlbHNlIHsKIAkJLyogVGhpcyB3b3JrYXJvdW5kIGlzIG5lZWRlZCBvbmx5IG9uIHNvbWUgYnJva2VuIG1hY2hpbmVzLAogCQkgKiB3aGljaCByZXF1aXJlIGVhcmx5IEVDLCBidXQgZmFpbCB0byBwcm92aWRlIEVDRFQgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9vc2wuYyBiL2RyaXZlcnMvYWNwaS9vc2wuYwppbmRleCA4ZWRiYTdiLi5hNjk3ZmI2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvb3NsLmMKKysrIGIvZHJpdmVycy9hY3BpL29zbC5jCkBAIC05MSwxMCArOTEsNiBAQAogI2RlZmluZQlPU0lfU1RSSU5HX0xFTkdUSF9NQVggNjQJLyogYXJiaXRyYXJ5ICovCiBzdGF0aWMgY2hhciBvc2lfYWRkaXRpb25hbF9zdHJpbmdbT1NJX1NUUklOR19MRU5HVEhfTUFYXTsKIAotI2lmZGVmIENPTkZJR19BQ1BJX0NVU1RPTV9EU0RUX0lOSVRSRAotc3RhdGljIGludCBhY3BpX25vX2luaXRyZF9vdmVycmlkZTsKLSNlbmRpZgotCiAvKgogICogIk9kZSB0byBfT1NJKExpbnV4KSIKICAqCkBAIC0zMjQsNjcgKzMyMCw2IEBACiAJcmV0dXJuIEFFX09LOwogfQogCi0jaWZkZWYgQ09ORklHX0FDUElfQ1VTVE9NX0RTRFRfSU5JVFJECi1zdGF0aWMgc3RydWN0IGFjcGlfdGFibGVfaGVhZGVyICphY3BpX2ZpbmRfZHNkdF9pbml0cmQodm9pZCkKLXsKLQlzdHJ1Y3QgZmlsZSAqZmlybXdhcmVfZmlsZTsKLQltbV9zZWdtZW50X3Qgb2xkZnM7Ci0JdW5zaWduZWQgbG9uZyBsZW4sIGxlbjI7Ci0Jc3RydWN0IGFjcGlfdGFibGVfaGVhZGVyICpkc2R0X2J1ZmZlciwgKnJldCA9IE5VTEw7Ci0Jc3RydWN0IGtzdGF0IHN0YXQ7Ci0JY2hhciAqcmFtZnNfZHNkdF9uYW1lID0gIi9EU0RULmFtbCI7Ci0KLQlwcmludGsoS0VSTl9JTkZPIFBSRUZJWCAiQ2hlY2tpbmcgaW5pdHJhbWZzIGZvciBjdXN0b20gRFNEVFxuIik7Ci0KLQkvKgotCSAqIE5ldmVyIGRvIHRoaXMgYXQgaG9tZSwgb25seSB0aGUgdXNlci1zcGFjZSBpcyBhbGxvd2VkIHRvIG9wZW4gYSBmaWxlLgotCSAqIFRoZSBjbGVhbiB3YXkgd291bGQgYmUgdG8gdXNlIHRoZSBmaXJtd2FyZSBsb2FkZXIuCi0JICogQnV0IHRoaXMgY29kZSBtdXN0IGJlIHJ1biBiZWZvcmUgdGhlcmUgaXMgYW55IHVzZXJzcGFjZSBhdmFpbGFibGUuCi0JICogQSBzdGF0aWMvaW5pdCBmaXJtd2FyZSBpbmZyYXN0cnVjdHVyZSBkb2Vzbid0IGV4aXN0IHlldC4uLgotCSAqLwotCWlmICh2ZnNfc3RhdChyYW1mc19kc2R0X25hbWUsICZzdGF0KSA8IDApCi0JCXJldHVybiByZXQ7Ci0KLQlsZW4gPSBzdGF0LnNpemU7Ci0JLyogY2hlY2sgZXNwZWNpYWxseSBhZ2FpbnN0IGVtcHR5IGZpbGVzICovCi0JaWYgKGxlbiA8PSA0KSB7Ci0JCXByaW50ayhLRVJOX0VSUiBQUkVGSVggIkZhaWxlZDogRFNEVCBvbmx5ICVsdSBieXRlcy5cbiIsIGxlbik7Ci0JCXJldHVybiByZXQ7Ci0JfQotCi0JZmlybXdhcmVfZmlsZSA9IGZpbHBfb3BlbihyYW1mc19kc2R0X25hbWUsIE9fUkRPTkxZLCAwKTsKLQlpZiAoSVNfRVJSKGZpcm13YXJlX2ZpbGUpKSB7Ci0JCXByaW50ayhLRVJOX0VSUiBQUkVGSVggIkZhaWxlZCB0byBvcGVuICVzLlxuIiwgcmFtZnNfZHNkdF9uYW1lKTsKLQkJcmV0dXJuIHJldDsKLQl9Ci0KLQlkc2R0X2J1ZmZlciA9IGttYWxsb2MobGVuLCBHRlBfQVRPTUlDKTsKLQlpZiAoIWRzZHRfYnVmZmVyKSB7Ci0JCXByaW50ayhLRVJOX0VSUiBQUkVGSVggIkZhaWxlZCB0byBhbGxvY2F0ZSAlbHUgYnl0ZXMuXG4iLCBsZW4pOwotCQlnb3RvIGVycjsKLQl9Ci0KLQlvbGRmcyA9IGdldF9mcygpOwotCXNldF9mcyhLRVJORUxfRFMpOwotCWxlbjIgPSB2ZnNfcmVhZChmaXJtd2FyZV9maWxlLCAoY2hhciBfX3VzZXIgKilkc2R0X2J1ZmZlciwgbGVuLAotCQkmZmlybXdhcmVfZmlsZS0+Zl9wb3MpOwotCXNldF9mcyhvbGRmcyk7Ci0JaWYgKGxlbjIgPCBsZW4pIHsKLQkJcHJpbnRrKEtFUk5fRVJSIFBSRUZJWCAiRmFpbGVkIHRvIHJlYWQgJWx1IGJ5dGVzIGZyb20gJXMuXG4iLAotCQkJbGVuLCByYW1mc19kc2R0X25hbWUpOwotCQlBQ1BJX0ZSRUUoZHNkdF9idWZmZXIpOwotCQlnb3RvIGVycjsKLQl9Ci0KLQlwcmludGsoS0VSTl9JTkZPIFBSRUZJWCAiRm91bmQgJWx1IGJ5dGUgRFNEVCBpbiAlcy5cbiIsCi0JCQlsZW4sIHJhbWZzX2RzZHRfbmFtZSk7Ci0JcmV0ID0gZHNkdF9idWZmZXI7Ci1lcnI6Ci0JZmlscF9jbG9zZShmaXJtd2FyZV9maWxlLCBOVUxMKTsKLQlyZXR1cm4gcmV0OwotfQotI2VuZGlmCi0KIGFjcGlfc3RhdHVzCiBhY3BpX29zX3RhYmxlX292ZXJyaWRlKHN0cnVjdCBhY3BpX3RhYmxlX2hlYWRlciAqIGV4aXN0aW5nX3RhYmxlLAogCQkgICAgICAgc3RydWN0IGFjcGlfdGFibGVfaGVhZGVyICoqIG5ld190YWJsZSkKQEAgLTM5OCwxNiArMzMzLDYgQEAKIAlpZiAoc3RybmNtcChleGlzdGluZ190YWJsZS0+c2lnbmF0dXJlLCAiRFNEVCIsIDQpID09IDApCiAJCSpuZXdfdGFibGUgPSAoc3RydWN0IGFjcGlfdGFibGVfaGVhZGVyICopQW1sQ29kZTsKICNlbmRpZgotI2lmZGVmIENPTkZJR19BQ1BJX0NVU1RPTV9EU0RUX0lOSVRSRAotCWlmICgoc3RybmNtcChleGlzdGluZ190YWJsZS0+c2lnbmF0dXJlLCAiRFNEVCIsIDQpID09IDApICYmCi0JICAgICFhY3BpX25vX2luaXRyZF9vdmVycmlkZSkgewotCQlzdHJ1Y3QgYWNwaV90YWJsZV9oZWFkZXIgKmluaXRyZF90YWJsZTsKLQotCQlpbml0cmRfdGFibGUgPSBhY3BpX2ZpbmRfZHNkdF9pbml0cmQoKTsKLQkJaWYgKGluaXRyZF90YWJsZSkKLQkJCSpuZXdfdGFibGUgPSBpbml0cmRfdGFibGU7Ci0JfQotI2VuZGlmCiAJaWYgKCpuZXdfdGFibGUgIT0gTlVMTCkgewogCQlwcmludGsoS0VSTl9XQVJOSU5HIFBSRUZJWCAiT3ZlcnJpZGUgWyU0LjRzLSU4LjhzXSwgIgogCQkJICAgInRoaXMgaXMgdW5zYWZlOiB0YWludGluZyBrZXJuZWxcbiIsCkBAIC00MTgsMTUgKzM0Myw2IEBACiAJcmV0dXJuIEFFX09LOwogfQogCi0jaWZkZWYgQ09ORklHX0FDUElfQ1VTVE9NX0RTRFRfSU5JVFJECi1zdGF0aWMgaW50IF9faW5pdCBhY3BpX25vX2luaXRyZF9vdmVycmlkZV9zZXR1cChjaGFyICpzKQotewotCWFjcGlfbm9faW5pdHJkX292ZXJyaWRlID0gMTsKLQlyZXR1cm4gMTsKLX0KLV9fc2V0dXAoImFjcGlfbm9faW5pdHJkX292ZXJyaWRlIiwgYWNwaV9ub19pbml0cmRfb3ZlcnJpZGVfc2V0dXApOwotI2VuZGlmCi0KIHN0YXRpYyBpcnFyZXR1cm5fdCBhY3BpX2lycShpbnQgaXJxLCB2b2lkICpkZXZfaWQpCiB7CiAJdTMyIGhhbmRsZWQ7CkBAIC0xMjM3LDcgKzExNTMsNyBAQAogCiAJaWYgKGNsYXNoKSB7CiAJCWlmIChhY3BpX2VuZm9yY2VfcmVzb3VyY2VzICE9IEVORk9SQ0VfUkVTT1VSQ0VTX05PKSB7Ci0JCQlwcmludGsoS0VSTl9JTkZPICIlc0FDUEk6ICVzIHJlc291cmNlICVzIFsweCVsbHgtMHglbGx4XSIKKwkJCXByaW50aygiJXNBQ1BJOiAlcyByZXNvdXJjZSAlcyBbMHglbGx4LTB4JWxseF0iCiAJCQkgICAgICAgIiBjb25mbGljdHMgd2l0aCBBQ1BJIHJlZ2lvbiAlcyIKIAkJCSAgICAgICAiIFsweCVsbHgtMHglbGx4XVxuIiwKIAkJCSAgICAgICBhY3BpX2VuZm9yY2VfcmVzb3VyY2VzID09IEVORk9SQ0VfUkVTT1VSQ0VTX0xBWApkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL3BjaV9pcnEuYyBiL2RyaXZlcnMvYWNwaS9wY2lfaXJxLmMKaW5kZXggN2YxOTg1OS4uODkwMjJhNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL3BjaV9pcnEuYworKysgYi9kcml2ZXJzL2FjcGkvcGNpX2lycS5jCkBAIC0yNSw2ICsyNSw3IEBACiAgKi8KIAogCisjaW5jbHVkZSA8bGludXgvZG1pLmg+CiAjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CiAjaW5jbHVkZSA8bGludXgvaW5pdC5oPgpAQCAtNzYsNiArNzcsMTAxIEBACiAJcmV0dXJuIE5VTEw7CiB9CiAKKy8qIGh0dHA6Ly9idWd6aWxsYS5rZXJuZWwub3JnL3Nob3dfYnVnLmNnaT9pZD00NzczICovCitzdGF0aWMgc3RydWN0IGRtaV9zeXN0ZW1faWQgbWVkaW9uX21kOTU4MFtdID0geworCXsKKwkJLmlkZW50ID0gIk1lZGlvbiBNRDk1ODAtRiBsYXB0b3AiLAorCQkubWF0Y2hlcyA9IHsKKwkJCURNSV9NQVRDSChETUlfU1lTX1ZFTkRPUiwgIk1FRElPTk5CIiksCisJCQlETUlfTUFUQ0goRE1JX1BST0RVQ1RfTkFNRSwgIkE1NTUiKSwKKwkJfSwKKwl9LAorCXsgfQorfTsKKworLyogaHR0cDovL2J1Z3ppbGxhLmtlcm5lbC5vcmcvc2hvd19idWcuY2dpP2lkPTUwNDQgKi8KK3N0YXRpYyBzdHJ1Y3QgZG1pX3N5c3RlbV9pZCBkZWxsX29wdGlwbGV4W10gPSB7CisJeworCQkuaWRlbnQgPSAiRGVsbCBPcHRpcGxleCBHWDEiLAorCQkubWF0Y2hlcyA9IHsKKwkJCURNSV9NQVRDSChETUlfU1lTX1ZFTkRPUiwgIkRlbGwgQ29tcHV0ZXIgQ29ycG9yYXRpb24iKSwKKwkJCURNSV9NQVRDSChETUlfUFJPRFVDVF9OQU1FLCAiT3B0aVBsZXggR1gxIDYwMFMrIiksCisJCX0sCisJfSwKKwl7IH0KK307CisKKy8qIGh0dHA6Ly9idWd6aWxsYS5rZXJuZWwub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDEzOCAqLworc3RhdGljIHN0cnVjdCBkbWlfc3lzdGVtX2lkIGhwX3Q1NzEwW10gPSB7CisJeworCQkuaWRlbnQgPSAiSFAgdDU3MTAiLAorCQkubWF0Y2hlcyA9IHsKKwkJCURNSV9NQVRDSChETUlfU1lTX1ZFTkRPUiwgIkhld2xldHQtUGFja2FyZCIpLAorCQkJRE1JX01BVENIKERNSV9QUk9EVUNUX05BTUUsICJocCB0NTAwMCBzZXJpZXMiKSwKKwkJCURNSV9NQVRDSChETUlfQk9BUkRfTkFNRSwgIjA5OENoIiksCisJCX0sCisJfSwKKwl7IH0KK307CisKK3N0cnVjdCBwcnRfcXVpcmsgeworCXN0cnVjdCBkbWlfc3lzdGVtX2lkCSpzeXN0ZW07CisJdW5zaWduZWQgaW50CQlzZWdtZW50OworCXVuc2lnbmVkIGludAkJYnVzOworCXVuc2lnbmVkIGludAkJZGV2aWNlOworCXVuc2lnbmVkIGNoYXIJCXBpbjsKKwljaGFyCQkJKnNvdXJjZTsJLyogYWNjb3JkaW5nIHRvIEJJT1MgKi8KKwljaGFyCQkJKmFjdHVhbF9zb3VyY2U7Cit9OworCisvKgorICogVGhlc2Ugc3lzdGVtcyBoYXZlIGluY29ycmVjdCBfUFJUIGVudHJpZXMuICBUaGUgQklPUyBjbGFpbXMgdGhlIFBDSQorICogaW50ZXJydXB0IGF0IHRoZSBsaXN0ZWQgc2VnbWVudC9idXMvZGV2aWNlL3BpbiBpcyBjb25uZWN0ZWQgdG8gdGhlIGZpcnN0CisgKiBsaW5rIGRldmljZSwgYnV0IGl0IGlzIGFjdHVhbGx5IGNvbm5lY3RlZCB0byB0aGUgc2Vjb25kLgorICovCitzdGF0aWMgc3RydWN0IHBydF9xdWlyayBwcnRfcXVpcmtzW10gPSB7CisJeyBtZWRpb25fbWQ5NTgwLCAwLCAwLCA5LCAnQScsCisJCSJcXF9TQl8uUENJMC5JU0FfLkxOS0EiLAorCQkiXFxfU0JfLlBDSTAuSVNBXy5MTktCIn0sCisJeyBkZWxsX29wdGlwbGV4LCAwLCAwLCAweGQsICdBJywKKwkJIlxcX1NCXy5MTktCIiwKKwkJIlxcX1NCXy5MTktBIn0sCisJeyBocF90NTcxMCwgMCwgMCwgMSwgJ0EnLAorCQkiXFxfU0JfLlBDSTAuTE5LMSIsCisJCSJcXF9TQl8uUENJMC5MTkszIn0sCit9OworCitzdGF0aWMgdm9pZAorZG9fcHJ0X2ZpeHVwcyhzdHJ1Y3QgYWNwaV9wcnRfZW50cnkgKmVudHJ5LCBzdHJ1Y3QgYWNwaV9wY2lfcm91dGluZ190YWJsZSAqcHJ0KQoreworCWludCBpOworCXN0cnVjdCBwcnRfcXVpcmsgKnF1aXJrOworCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUocHJ0X3F1aXJrcyk7IGkrKykgeworCQlxdWlyayA9ICZwcnRfcXVpcmtzW2ldOworCisJCS8qIEFsbCBjdXJyZW50IHF1aXJrcyBpbnZvbHZlIGxpbmsgZGV2aWNlcywgbm90IEdTSXMgKi8KKwkJaWYgKCFwcnQtPnNvdXJjZSkKKwkJCWNvbnRpbnVlOworCisJCWlmIChkbWlfY2hlY2tfc3lzdGVtKHF1aXJrLT5zeXN0ZW0pICYmCisJCSAgICBlbnRyeS0+aWQuc2VnbWVudCA9PSBxdWlyay0+c2VnbWVudCAmJgorCQkgICAgZW50cnktPmlkLmJ1cyA9PSBxdWlyay0+YnVzICYmCisJCSAgICBlbnRyeS0+aWQuZGV2aWNlID09IHF1aXJrLT5kZXZpY2UgJiYKKwkJICAgIGVudHJ5LT5waW4gKyAnQScgPT0gcXVpcmstPnBpbiAmJgorCQkgICAgIXN0cmNtcChwcnQtPnNvdXJjZSwgcXVpcmstPnNvdXJjZSkgJiYKKwkJICAgIHN0cmxlbihwcnQtPnNvdXJjZSkgPj0gc3RybGVuKHF1aXJrLT5hY3R1YWxfc291cmNlKSkgeworCQkJcHJpbnRrKEtFUk5fV0FSTklORyBQUkVGSVggImZpcm13YXJlIHJlcG9ydHMgIgorCQkJCSIlMDR4OiUwMng6JTAyeFslY10gY29ubmVjdGVkIHRvICVzOyAiCisJCQkJImNoYW5naW5nIHRvICVzXG4iLAorCQkJCWVudHJ5LT5pZC5zZWdtZW50LCBlbnRyeS0+aWQuYnVzLAorCQkJCWVudHJ5LT5pZC5kZXZpY2UsICdBJyArIGVudHJ5LT5waW4sCisJCQkJcHJ0LT5zb3VyY2UsIHF1aXJrLT5hY3R1YWxfc291cmNlKTsKKwkJCXN0cmNweShwcnQtPnNvdXJjZSwgcXVpcmstPmFjdHVhbF9zb3VyY2UpOworCQl9CisJfQorfQorCiBzdGF0aWMgaW50CiBhY3BpX3BjaV9pcnFfYWRkX2VudHJ5KGFjcGlfaGFuZGxlIGhhbmRsZSwKIAkJICAgICAgIGludCBzZWdtZW50LCBpbnQgYnVzLCBzdHJ1Y3QgYWNwaV9wY2lfcm91dGluZ190YWJsZSAqcHJ0KQpAQCAtOTYsNiArMTkyLDggQEAKIAllbnRyeS0+aWQuZnVuY3Rpb24gPSBwcnQtPmFkZHJlc3MgJiAweEZGRkY7CiAJZW50cnktPnBpbiA9IHBydC0+cGluOwogCisJZG9fcHJ0X2ZpeHVwcyhlbnRyeSwgcHJ0KTsKKwogCS8qCiAJICogVHlwZSAxOiBEeW5hbWljCiAJICogLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvcGNpX3Jvb3QuYyBiL2RyaXZlcnMvYWNwaS9wY2lfcm9vdC5jCmluZGV4IGYxNGZmMWYuLmMzZmVkMzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9wY2lfcm9vdC5jCisrKyBiL2RyaXZlcnMvYWNwaS9wY2lfcm9vdC5jCkBAIC0xODQsNyArMTg0LDcgQEAKIAkJfQogfQogCi1zdGF0aWMgaW50IGFjcGlfcGNpX3Jvb3RfYWRkKHN0cnVjdCBhY3BpX2RldmljZSAqZGV2aWNlKQorc3RhdGljIGludCBfX2RldmluaXQgYWNwaV9wY2lfcm9vdF9hZGQoc3RydWN0IGFjcGlfZGV2aWNlICpkZXZpY2UpCiB7CiAJaW50IHJlc3VsdCA9IDA7CiAJc3RydWN0IGFjcGlfcGNpX3Jvb3QgKnJvb3QgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL3Byb2Nlc3Nvcl9jb3JlLmMgYi9kcml2ZXJzL2FjcGkvcHJvY2Vzc29yX2NvcmUuYwppbmRleCBhM2NjOGE5Li5hODI1YjQzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvcHJvY2Vzc29yX2NvcmUuYworKysgYi9kcml2ZXJzL2FjcGkvcHJvY2Vzc29yX2NvcmUuYwpAQCAtODIyLDcgKzgyMiw3IEBACiAJfQogCiAJcHJvY2Vzc29yc1twci0+aWRdID0gTlVMTDsKLQorCXByb2Nlc3Nvcl9kZXZpY2VfYXJyYXlbcHItPmlkXSA9IE5VTEw7CiAJa2ZyZWUocHIpOwogCiAJcmV0dXJuIDA7CkBAIC04NDAsMTcgKzg0MCwxOSBAQAogCiAKIAlzdGF0dXMgPSBhY3BpX2V2YWx1YXRlX2ludGVnZXIoaGFuZGxlLCAiX1NUQSIsIE5VTEwsICZzdGEpOwotCS8qCi0JICogaWYgYSBwcm9jZXNzb3Igb2JqZWN0IGRvZXMgbm90IGhhdmUgYW4gX1NUQSBvYmplY3QsCi0JICogT1NQTSBhc3N1bWVzIHRoYXQgdGhlIHByb2Nlc3NvciBpcyBwcmVzZW50LgotCSAqLwotCWlmIChzdGF0dXMgPT0gQUVfTk9UX0ZPVU5EKQotCQlyZXR1cm4gMTsKIAogCWlmIChBQ1BJX1NVQ0NFU1Moc3RhdHVzKSAmJiAoc3RhICYgQUNQSV9TVEFfREVWSUNFX1BSRVNFTlQpKQogCQlyZXR1cm4gMTsKIAotCUFDUElfRVhDRVBUSU9OKChBRV9JTkZPLCBzdGF0dXMsICJQcm9jZXNzb3IgRGV2aWNlIGlzIG5vdCBwcmVzZW50IikpOworCS8qCisJICogX1NUQSBpcyBtYW5kYXRvcnkgZm9yIGEgcHJvY2Vzc29yIHRoYXQgc3VwcG9ydHMgaG90IHBsdWcKKwkgKi8KKwlpZiAoc3RhdHVzID09IEFFX05PVF9GT1VORCkKKwkJQUNQSV9ERUJVR19QUklOVCgoQUNQSV9EQl9JTkZPLAorCQkJCSJQcm9jZXNzb3IgZG9lcyBub3Qgc3VwcG9ydCBob3QgcGx1Z1xuIikpOworCWVsc2UKKwkJQUNQSV9FWENFUFRJT04oKEFFX0lORk8sIHN0YXR1cywKKwkJCQkiUHJvY2Vzc29yIERldmljZSBpcyBub3QgcHJlc2VudCIpKTsKIAlyZXR1cm4gMDsKIH0KIApAQCAtODg2LDggKzg4OCw4IEBACiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lkCi1hY3BpX3Byb2Nlc3Nvcl9ob3RwbHVnX25vdGlmeShhY3BpX2hhbmRsZSBoYW5kbGUsIHUzMiBldmVudCwgdm9pZCAqZGF0YSkKK3N0YXRpYyB2b2lkIF9fcmVmIGFjcGlfcHJvY2Vzc29yX2hvdHBsdWdfbm90aWZ5KGFjcGlfaGFuZGxlIGhhbmRsZSwKKwkJCQkJCXUzMiBldmVudCwgdm9pZCAqZGF0YSkKIHsKIAlzdHJ1Y3QgYWNwaV9wcm9jZXNzb3IgKnByOwogCXN0cnVjdCBhY3BpX2RldmljZSAqZGV2aWNlID0gTlVMTDsKQEAgLTg5Nyw5ICs4OTksMTAgQEAKIAlzd2l0Y2ggKGV2ZW50KSB7CiAJY2FzZSBBQ1BJX05PVElGWV9CVVNfQ0hFQ0s6CiAJY2FzZSBBQ1BJX05PVElGWV9ERVZJQ0VfQ0hFQ0s6Ci0JCXByaW50aygiUHJvY2Vzc29yIGRyaXZlciByZWNlaXZlZCAlcyBldmVudFxuIiwKKwkJQUNQSV9ERUJVR19QUklOVCgoQUNQSV9EQl9JTkZPLAorCQkiUHJvY2Vzc29yIGRyaXZlciByZWNlaXZlZCAlcyBldmVudFxuIiwKIAkJICAgICAgIChldmVudCA9PSBBQ1BJX05PVElGWV9CVVNfQ0hFQ0spID8KLQkJICAgICAgICJBQ1BJX05PVElGWV9CVVNfQ0hFQ0siIDogIkFDUElfTk9USUZZX0RFVklDRV9DSEVDSyIpOworCQkgICAgICAgIkFDUElfTk9USUZZX0JVU19DSEVDSyIgOiAiQUNQSV9OT1RJRllfREVWSUNFX0NIRUNLIikpOwogCiAJCWlmICghaXNfcHJvY2Vzc29yX3ByZXNlbnQoaGFuZGxlKSkKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL3Byb2Nlc3Nvcl9pZGxlLmMgYi9kcml2ZXJzL2FjcGkvcHJvY2Vzc29yX2lkbGUuYwppbmRleCA2ZjNiMjE3Li43ODhkYTk3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvcHJvY2Vzc29yX2lkbGUuYworKysgYi9kcml2ZXJzL2FjcGkvcHJvY2Vzc29yX2lkbGUuYwpAQCAtMjE2LDggKzIxNiwxMCBAQAogCSAqIHRlc3QgTkVFRF9SRVNDSEVEOgogCSAqLwogCXNtcF9tYigpOwotCWlmICghbmVlZF9yZXNjaGVkKCkpCisJaWYgKCFuZWVkX3Jlc2NoZWQoKSkgewogCQlzYWZlX2hhbHQoKTsKKwkJbG9jYWxfaXJxX2Rpc2FibGUoKTsKKwl9CiAJY3VycmVudF90aHJlYWRfaW5mbygpLT5zdGF0dXMgfD0gVFNfUE9MTElORzsKIH0KIApAQCAtNDIxLDcgKzQyMyw5IEBACiAJCWVsc2UKIAkJCWFjcGlfc2FmZV9oYWx0KCk7CiAKLQkJbG9jYWxfaXJxX2VuYWJsZSgpOworCQlpZiAoaXJxc19kaXNhYmxlZCgpKQorCQkJbG9jYWxfaXJxX2VuYWJsZSgpOworCiAJCXJldHVybjsKIAl9CiAKQEAgLTUzMCw3ICs1MzQsOSBAQAogCQkgKiAgICAgICBza2V3IG90aGVyd2lzZS4KIAkJICovCiAJCXNsZWVwX3RpY2tzID0gMHhGRkZGRkZGRjsKLQkJbG9jYWxfaXJxX2VuYWJsZSgpOworCQlpZiAoaXJxc19kaXNhYmxlZCgpKQorCQkJbG9jYWxfaXJxX2VuYWJsZSgpOworCiAJCWJyZWFrOwogCiAJY2FzZSBBQ1BJX1NUQVRFX0MyOgpAQCAtMTQ4MSw3ICsxNDg3LDYgQEAKIAkJcmV0dXJuIDA7CiAJfQogCi0JYWNwaV91bmxhenlfdGxiKHNtcF9wcm9jZXNzb3JfaWQoKSk7CiAJLyoKIAkgKiBNdXN0IGJlIGRvbmUgYmVmb3JlIGJ1c21hc3RlciBkaXNhYmxlIGFzIHdlIG1pZ2h0IG5lZWQgdG8KIAkgKiBhY2Nlc3MgSFBFVCAhCkBAIC0xNTcxLDYgKzE1NzYsOCBAQAogCQlyZXR1cm4gMDsKIAl9CiAKKwlhY3BpX3VubGF6eV90bGIoc21wX3Byb2Nlc3Nvcl9pZCgpKTsKKwogCS8qIFRlbGwgdGhlIHNjaGVkdWxlciB0aGF0IHdlIGFyZSBnb2luZyBkZWVwLWlkbGU6ICovCiAJc2NoZWRfY2xvY2tfaWRsZV9zbGVlcF9ldmVudCgpOwogCS8qCkBAIC0xNjg2LDcgKzE2OTMsOSBAQAogCQlzd2l0Y2ggKGN4LT50eXBlKSB7CiAJCQljYXNlIEFDUElfU1RBVEVfQzE6CiAJCQlzdGF0ZS0+ZmxhZ3MgfD0gQ1BVSURMRV9GTEFHX1NIQUxMT1c7Ci0JCQlzdGF0ZS0+ZmxhZ3MgfD0gQ1BVSURMRV9GTEFHX1RJTUVfVkFMSUQ7CisJCQlpZiAoY3gtPmVudHJ5X21ldGhvZCA9PSBBQ1BJX0NTVEFURV9GRkgpCisJCQkJc3RhdGUtPmZsYWdzIHw9IENQVUlETEVfRkxBR19USU1FX1ZBTElEOworCiAJCQlzdGF0ZS0+ZW50ZXIgPSBhY3BpX2lkbGVfZW50ZXJfYzE7CiAJCQlkZXYtPnNhZmVfc3RhdGUgPSBzdGF0ZTsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL3Nic2hjLmMgYi9kcml2ZXJzL2FjcGkvc2JzaGMuYwppbmRleCBhMmNmMzAwLi5iY2YyYzcwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvc2JzaGMuYworKysgYi9kcml2ZXJzL2FjcGkvc2JzaGMuYwpAQCAtMTMwLDcgKzEzMCw2IEBACiAJCWdvdG8gZW5kOwogCX0KIAlzbWJfaGNfd3JpdGUoaGMsIEFDUElfU01CX0NPTU1BTkQsIGNvbW1hbmQpOwotCXNtYl9oY193cml0ZShoYywgQUNQSV9TTUJfQ09NTUFORCwgY29tbWFuZCk7CiAJaWYgKCEocHJvdG9jb2wgJiAweDAxKSkgewogCQlzbWJfaGNfd3JpdGUoaGMsIEFDUElfU01CX0JMT0NLX0NPVU5ULCBsZW5ndGgpOwogCQlmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvc2Nhbi5jIGIvZHJpdmVycy9hY3BpL3NjYW4uYwppbmRleCAzZmFjMDExLi5lNmNlMjYyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvc2Nhbi5jCisrKyBiL2RyaXZlcnMvYWNwaS9zY2FuLmMKQEAgLTM5LDIwICszOSwyNiBAQAogCQkJICAgaW50IHNpemUpCiB7CiAJaW50IGxlbjsKKwlpbnQgY291bnQ7CiAKLQlpZiAoIWFjcGlfZGV2LT5mbGFncy5oYXJkd2FyZV9pZCkKKwlpZiAoIWFjcGlfZGV2LT5mbGFncy5oYXJkd2FyZV9pZCAmJiAhYWNwaV9kZXYtPmZsYWdzLmNvbXBhdGlibGVfaWRzKQogCQlyZXR1cm4gLUVOT0RFVjsKIAotCWxlbiA9IHNucHJpbnRmKG1vZGFsaWFzLCBzaXplLCAiYWNwaTolczoiLAotCQkgICAgICAgYWNwaV9kZXYtPnBucC5oYXJkd2FyZV9pZCk7Ci0JaWYgKGxlbiA8IDAgfHwgbGVuID49IHNpemUpCi0JCXJldHVybiAtRUlOVkFMOworCWxlbiA9IHNucHJpbnRmKG1vZGFsaWFzLCBzaXplLCAiYWNwaToiKTsKIAlzaXplIC09IGxlbjsKIAorCWlmIChhY3BpX2Rldi0+ZmxhZ3MuaGFyZHdhcmVfaWQpIHsKKwkJY291bnQgPSBzbnByaW50ZigmbW9kYWxpYXNbbGVuXSwgc2l6ZSwgIiVzOiIsCisJCQkJIGFjcGlfZGV2LT5wbnAuaGFyZHdhcmVfaWQpOworCQlpZiAoY291bnQgPCAwIHx8IGNvdW50ID49IHNpemUpCisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJbGVuICs9IGNvdW50OworCQlzaXplIC09IGNvdW50OworCX0KKwogCWlmIChhY3BpX2Rldi0+ZmxhZ3MuY29tcGF0aWJsZV9pZHMpIHsKIAkJc3RydWN0IGFjcGlfY29tcGF0aWJsZV9pZF9saXN0ICpjaWRfbGlzdDsKIAkJaW50IGk7Ci0JCWludCBjb3VudDsKIAogCQljaWRfbGlzdCA9IGFjcGlfZGV2LT5wbnAuY2lkX2xpc3Q7CiAJCWZvciAoaSA9IDA7IGkgPCBjaWRfbGlzdC0+Y291bnQ7IGkrKykgewpAQCAtNjA5LDcgKzYxNSw4IEBACiAJc3RhdHVzID0gYWNwaV9ldmFsdWF0ZV9vYmplY3QoaGFuZGxlLCAiX0VKRCIsIE5VTEwsICZidWZmZXIpOwogCWlmIChBQ1BJX1NVQ0NFU1Moc3RhdHVzKSkgewogCQlvYmogPSBidWZmZXIucG9pbnRlcjsKLQkJc3RhdHVzID0gYWNwaV9nZXRfaGFuZGxlKE5VTEwsIG9iai0+c3RyaW5nLnBvaW50ZXIsIGVqZCk7CisJCXN0YXR1cyA9IGFjcGlfZ2V0X2hhbmRsZShBQ1BJX1JPT1RfT0JKRUNULCBvYmotPnN0cmluZy5wb2ludGVyLAorCQkJCQkgZWpkKTsKIAkJa2ZyZWUoYnVmZmVyLnBvaW50ZXIpOwogCX0KIAlyZXR1cm4gc3RhdHVzOwpAQCAtOTY2LDcgKzk3Myw3IEBACiAJY2FzZSBBQ1BJX0JVU19UWVBFX0RFVklDRToKIAkJc3RhdHVzID0gYWNwaV9nZXRfb2JqZWN0X2luZm8oaGFuZGxlLCAmYnVmZmVyKTsKIAkJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7Ci0JCQlwcmludGsoS0VSTl9FUlIgUFJFRklYICIlczogRXJyb3IgcmVhZGluZyBkZXZpY2UgaW5mb1xuIiwgX19GVU5DVElPTl9fKTsKKwkJCXByaW50ayhLRVJOX0VSUiBQUkVGSVggIiVzOiBFcnJvciByZWFkaW5nIGRldmljZSBpbmZvXG4iLCBfX2Z1bmNfXyk7CiAJCQlyZXR1cm47CiAJCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL3NsZWVwL21haW4uYyBiL2RyaXZlcnMvYWNwaS9zbGVlcC9tYWluLmMKaW5kZXggMjkzYTFjYi4uNzExODNlZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL3NsZWVwL21haW4uYworKysgYi9kcml2ZXJzL2FjcGkvc2xlZXAvbWFpbi5jCkBAIC0yNiwyMSArMjYsNiBAQAogCiAjaWZkZWYgQ09ORklHX1BNX1NMRUVQCiBzdGF0aWMgdTMyIGFjcGlfdGFyZ2V0X3NsZWVwX3N0YXRlID0gQUNQSV9TVEFURV9TMDsKLXN0YXRpYyBib29sIGFjcGlfc2xlZXBfZmluaXNoX3dha2VfdXA7Ci0KLS8qCi0gKiBBQ1BJIDIuMCBhbmQgbGF0ZXIgd2FudCB1cyB0byBleGVjdXRlIF9QVFMgYWZ0ZXIgc3VzcGVuZGluZyBkZXZpY2VzLCBzbyB3ZQotICogYWxsb3cgdGhlIHVzZXIgdG8gcmVxdWVzdCB0aGF0IGJlaGF2aW9yIGJ5IHVzaW5nIHRoZSAnYWNwaV9uZXdfcHRzX29yZGVyaW5nJwotICoga2VybmVsIGNvbW1hbmQgbGluZSBvcHRpb24gdGhhdCBjYXVzZXMgdGhlIGZvbGxvd2luZyB2YXJpYWJsZSB0byBiZSBzZXQuCi0gKi8KLXN0YXRpYyBib29sIG5ld19wdHNfb3JkZXJpbmc7Ci0KLXN0YXRpYyBpbnQgX19pbml0IGFjcGlfbmV3X3B0c19vcmRlcmluZyhjaGFyICpzdHIpCi17Ci0JbmV3X3B0c19vcmRlcmluZyA9IHRydWU7Ci0JcmV0dXJuIDE7Ci19Ci1fX3NldHVwKCJhY3BpX25ld19wdHNfb3JkZXJpbmciLCBhY3BpX25ld19wdHNfb3JkZXJpbmcpOwogI2VuZGlmCiAKIHN0YXRpYyBpbnQgYWNwaV9zbGVlcF9wcmVwYXJlKHUzMiBhY3BpX3N0YXRlKQpAQCAtOTEsMTQgKzc2LDYgQEAKIAogCWlmIChzbGVlcF9zdGF0ZXNbYWNwaV9zdGF0ZV0pIHsKIAkJYWNwaV90YXJnZXRfc2xlZXBfc3RhdGUgPSBhY3BpX3N0YXRlOwotCQlpZiAobmV3X3B0c19vcmRlcmluZykKLQkJCXJldHVybiAwOwotCi0JCWVycm9yID0gYWNwaV9zbGVlcF9wcmVwYXJlKGFjcGlfc3RhdGUpOwotCQlpZiAoZXJyb3IpCi0JCQlhY3BpX3RhcmdldF9zbGVlcF9zdGF0ZSA9IEFDUElfU1RBVEVfUzA7Ci0JCWVsc2UKLQkJCWFjcGlfc2xlZXBfZmluaXNoX3dha2VfdXAgPSB0cnVlOwogCX0gZWxzZSB7CiAJCXByaW50ayhLRVJOX0VSUiAiQUNQSSBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgc3RhdGU6ICVkXG4iLAogCQkJcG1fc3RhdGUpOwpAQCAtMTE2LDE0ICs5MywxMSBAQAogCiBzdGF0aWMgaW50IGFjcGlfcG1fcHJlcGFyZSh2b2lkKQogewotCWlmIChuZXdfcHRzX29yZGVyaW5nKSB7Ci0JCWludCBlcnJvciA9IGFjcGlfc2xlZXBfcHJlcGFyZShhY3BpX3RhcmdldF9zbGVlcF9zdGF0ZSk7CisJaW50IGVycm9yID0gYWNwaV9zbGVlcF9wcmVwYXJlKGFjcGlfdGFyZ2V0X3NsZWVwX3N0YXRlKTsKIAotCQlpZiAoZXJyb3IpIHsKLQkJCWFjcGlfdGFyZ2V0X3NsZWVwX3N0YXRlID0gQUNQSV9TVEFURV9TMDsKLQkJCXJldHVybiBlcnJvcjsKLQkJfQotCQlhY3BpX3NsZWVwX2ZpbmlzaF93YWtlX3VwID0gdHJ1ZTsKKwlpZiAoZXJyb3IpIHsKKwkJYWNwaV90YXJnZXRfc2xlZXBfc3RhdGUgPSBBQ1BJX1NUQVRFX1MwOworCQlyZXR1cm4gZXJyb3I7CiAJfQogCiAJcmV0dXJuIEFDUElfU1VDQ0VTUyhhY3BpX2h3X2Rpc2FibGVfYWxsX2dwZXMoKSkgPyAwIDogLUVGQVVMVDsKQEAgLTIxMiw3ICsxODYsNiBAQAogCWFjcGlfc2V0X2Zpcm13YXJlX3dha2luZ192ZWN0b3IoKGFjcGlfcGh5c2ljYWxfYWRkcmVzcykgMCk7CiAKIAlhY3BpX3RhcmdldF9zbGVlcF9zdGF0ZSA9IEFDUElfU1RBVEVfUzA7Ci0JYWNwaV9zbGVlcF9maW5pc2hfd2FrZV91cCA9IGZhbHNlOwogCiAjaWZkZWYgQ09ORklHX1g4NgogCWlmIChpbml0XzgyNTlBX2FmdGVyX1MxKSB7CkBAIC0yMjksMTEgKzIwMiwxMCBAQAogc3RhdGljIHZvaWQgYWNwaV9wbV9lbmQodm9pZCkKIHsKIAkvKgotCSAqIFRoaXMgaXMgbmVjZXNzYXJ5IGluIGNhc2UgYWNwaV9wbV9maW5pc2goKSBpcyBub3QgY2FsbGVkIGRpcmVjdGx5Ci0JICogZHVyaW5nIGEgZmFpbGluZyB0cmFuc2l0aW9uIHRvIGEgc2xlZXAgc3RhdGUuCisJICogVGhpcyBpcyBuZWNlc3NhcnkgaW4gY2FzZSBhY3BpX3BtX2ZpbmlzaCgpIGlzIG5vdCBjYWxsZWQgZHVyaW5nIGEKKwkgKiBmYWlsaW5nIHRyYW5zaXRpb24gdG8gYSBzbGVlcCBzdGF0ZS4KIAkgKi8KLQlpZiAoYWNwaV9zbGVlcF9maW5pc2hfd2FrZV91cCkKLQkJYWNwaV9wbV9maW5pc2goKTsKKwlhY3BpX3RhcmdldF9zbGVlcF9zdGF0ZSA9IEFDUElfU1RBVEVfUzA7CiB9CiAKIHN0YXRpYyBpbnQgYWNwaV9wbV9zdGF0ZV92YWxpZChzdXNwZW5kX3N0YXRlX3QgcG1fc3RhdGUpCkBAIC0yODUsMzEgKzI1NywxOCBAQAogI2lmZGVmIENPTkZJR19ISUJFUk5BVElPTgogc3RhdGljIGludCBhY3BpX2hpYmVybmF0aW9uX2JlZ2luKHZvaWQpCiB7Ci0JaW50IGVycm9yOwotCiAJYWNwaV90YXJnZXRfc2xlZXBfc3RhdGUgPSBBQ1BJX1NUQVRFX1M0OwotCWlmIChuZXdfcHRzX29yZGVyaW5nKQotCQlyZXR1cm4gMDsKIAotCWVycm9yID0gYWNwaV9zbGVlcF9wcmVwYXJlKEFDUElfU1RBVEVfUzQpOwotCWlmIChlcnJvcikKLQkJYWNwaV90YXJnZXRfc2xlZXBfc3RhdGUgPSBBQ1BJX1NUQVRFX1MwOwotCWVsc2UKLQkJYWNwaV9zbGVlcF9maW5pc2hfd2FrZV91cCA9IHRydWU7Ci0KLQlyZXR1cm4gZXJyb3I7CisJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQgYWNwaV9oaWJlcm5hdGlvbl9wcmVwYXJlKHZvaWQpCiB7Ci0JaWYgKG5ld19wdHNfb3JkZXJpbmcpIHsKLQkJaW50IGVycm9yID0gYWNwaV9zbGVlcF9wcmVwYXJlKEFDUElfU1RBVEVfUzQpOworCWludCBlcnJvciA9IGFjcGlfc2xlZXBfcHJlcGFyZShBQ1BJX1NUQVRFX1M0KTsKIAotCQlpZiAoZXJyb3IpIHsKLQkJCWFjcGlfdGFyZ2V0X3NsZWVwX3N0YXRlID0gQUNQSV9TVEFURV9TMDsKLQkJCXJldHVybiBlcnJvcjsKLQkJfQotCQlhY3BpX3NsZWVwX2ZpbmlzaF93YWtlX3VwID0gdHJ1ZTsKKwlpZiAoZXJyb3IpIHsKKwkJYWNwaV90YXJnZXRfc2xlZXBfc3RhdGUgPSBBQ1BJX1NUQVRFX1MwOworCQlyZXR1cm4gZXJyb3I7CiAJfQogCiAJcmV0dXJuIEFDUElfU1VDQ0VTUyhhY3BpX2h3X2Rpc2FibGVfYWxsX2dwZXMoKSkgPyAwIDogLUVGQVVMVDsKQEAgLTM1MywxNyArMzEyLDE1IEBACiAJYWNwaV9zZXRfZmlybXdhcmVfd2FraW5nX3ZlY3RvcigoYWNwaV9waHlzaWNhbF9hZGRyZXNzKSAwKTsKIAogCWFjcGlfdGFyZ2V0X3NsZWVwX3N0YXRlID0gQUNQSV9TVEFURV9TMDsKLQlhY3BpX3NsZWVwX2ZpbmlzaF93YWtlX3VwID0gZmFsc2U7CiB9CiAKIHN0YXRpYyB2b2lkIGFjcGlfaGliZXJuYXRpb25fZW5kKHZvaWQpCiB7CiAJLyoKIAkgKiBUaGlzIGlzIG5lY2Vzc2FyeSBpbiBjYXNlIGFjcGlfaGliZXJuYXRpb25fZmluaXNoKCkgaXMgbm90IGNhbGxlZAotCSAqIGRpcmVjdGx5IGR1cmluZyBhIGZhaWxpbmcgdHJhbnNpdGlvbiB0byB0aGUgc2xlZXAgc3RhdGUuCisJICogZHVyaW5nIGEgZmFpbGluZyB0cmFuc2l0aW9uIHRvIHRoZSBzbGVlcCBzdGF0ZS4KIAkgKi8KLQlpZiAoYWNwaV9zbGVlcF9maW5pc2hfd2FrZV91cCkKLQkJYWNwaV9oaWJlcm5hdGlvbl9maW5pc2goKTsKKwlhY3BpX3RhcmdldF9zbGVlcF9zdGF0ZSA9IEFDUElfU1RBVEVfUzA7CiB9CiAKIHN0YXRpYyBpbnQgYWNwaV9oaWJlcm5hdGlvbl9wcmVfcmVzdG9yZSh2b2lkKQpAQCAtNTA0LDcgKzQ2MSw3IEBACiBzdGF0aWMgdm9pZCBhY3BpX3Bvd2VyX29mZih2b2lkKQogewogCS8qIGFjcGlfc2xlZXBfcHJlcGFyZShBQ1BJX1NUQVRFX1M1KSBzaG91bGQgaGF2ZSBhbHJlYWR5IGJlZW4gY2FsbGVkICovCi0JcHJpbnRrKCIlcyBjYWxsZWRcbiIsIF9fRlVOQ1RJT05fXyk7CisJcHJpbnRrKCIlcyBjYWxsZWRcbiIsIF9fZnVuY19fKTsKIAlsb2NhbF9pcnFfZGlzYWJsZSgpOwogCWFjcGlfZW5hYmxlX3dha2V1cF9kZXZpY2UoQUNQSV9TVEFURV9TNSk7CiAJYWNwaV9lbnRlcl9zbGVlcF9zdGF0ZShBQ1BJX1NUQVRFX1M1KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9zeXN0ZW0uYyBiL2RyaXZlcnMvYWNwaS9zeXN0ZW0uYwppbmRleCA1NWNmNGMwLi40NzQ5ZjM3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvc3lzdGVtLmMKKysrIGIvZHJpdmVycy9hY3BpL3N5c3RlbS5jCkBAIC0zMTksNyArMzE5LDcgQEAKIAkJZ290byBmYWlsOwogCiAJZm9yIChpID0gMDsgaSA8IG51bV9jb3VudGVyczsgKytpKSB7Ci0JCWNoYXIgYnVmZmVyWzEwXTsKKwkJY2hhciBidWZmZXJbMTJdOwogCQljaGFyICpuYW1lOwogCiAJCWlmIChpIDwgbnVtX2dwZXMpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvdGhlcm1hbC5jIGIvZHJpdmVycy9hY3BpL3RoZXJtYWwuYwppbmRleCA4ZDRiNzliLi4xYmNlY2M3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvdGhlcm1hbC5jCisrKyBiL2RyaXZlcnMvYWNwaS90aGVybWFsLmMKQEAgLTg3OSw2ICs4NzksOCBAQAogfQogCiAvKiBzeXMgSS9GIGZvciBnZW5lcmljIHRoZXJtYWwgc3lzZnMgc3VwcG9ydCAqLworI2RlZmluZSBLRUxWSU5fVE9fTUlMTElDRUxTSVVTKHQpICh0ICogMTAwIC0gMjczMjAwKQorCiBzdGF0aWMgaW50IHRoZXJtYWxfZ2V0X3RlbXAoc3RydWN0IHRoZXJtYWxfem9uZV9kZXZpY2UgKnRoZXJtYWwsIGNoYXIgKmJ1ZikKIHsKIAlzdHJ1Y3QgYWNwaV90aGVybWFsICp0eiA9IHRoZXJtYWwtPmRldmRhdGE7CkBAIC04ODYsNyArODg4LDcgQEAKIAlpZiAoIXR6KQogCQlyZXR1cm4gLUVJTlZBTDsKIAotCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVsZFxuIiwgS0VMVklOX1RPX0NFTFNJVVModHotPnRlbXBlcmF0dXJlKSk7CisJcmV0dXJuIHNwcmludGYoYnVmLCAiJWxkXG4iLCBLRUxWSU5fVE9fTUlMTElDRUxTSVVTKHR6LT50ZW1wZXJhdHVyZSkpOwogfQogCiBzdGF0aWMgY29uc3QgY2hhciBlbmFibGVkW10gPSAia2VybmVsIjsKQEAgLTk4MCwyMSArOTgyLDIxIEBACiAKIAlpZiAodHotPnRyaXBzLmNyaXRpY2FsLmZsYWdzLnZhbGlkKSB7CiAJCWlmICghdHJpcCkKLQkJCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVsZFxuIiwgS0VMVklOX1RPX0NFTFNJVVMoCisJCQlyZXR1cm4gc3ByaW50ZihidWYsICIlbGRcbiIsIEtFTFZJTl9UT19NSUxMSUNFTFNJVVMoCiAJCQkJdHotPnRyaXBzLmNyaXRpY2FsLnRlbXBlcmF0dXJlKSk7CiAJCXRyaXAtLTsKIAl9CiAKIAlpZiAodHotPnRyaXBzLmhvdC5mbGFncy52YWxpZCkgewogCQlpZiAoIXRyaXApCi0JCQlyZXR1cm4gc3ByaW50ZihidWYsICIlbGRcbiIsIEtFTFZJTl9UT19DRUxTSVVTKAorCQkJcmV0dXJuIHNwcmludGYoYnVmLCAiJWxkXG4iLCBLRUxWSU5fVE9fTUlMTElDRUxTSVVTKAogCQkJCQl0ei0+dHJpcHMuaG90LnRlbXBlcmF0dXJlKSk7CiAJCXRyaXAtLTsKIAl9CiAKIAlpZiAodHotPnRyaXBzLnBhc3NpdmUuZmxhZ3MudmFsaWQpIHsKIAkJaWYgKCF0cmlwKQotCQkJcmV0dXJuIHNwcmludGYoYnVmLCAiJWxkXG4iLCBLRUxWSU5fVE9fQ0VMU0lVUygKKwkJCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVsZFxuIiwgS0VMVklOX1RPX01JTExJQ0VMU0lVUygKIAkJCQkJdHotPnRyaXBzLnBhc3NpdmUudGVtcGVyYXR1cmUpKTsKIAkJdHJpcC0tOwogCX0KQEAgLTEwMDIsNyArMTAwNCw3IEBACiAJZm9yIChpID0gMDsgaSA8IEFDUElfVEhFUk1BTF9NQVhfQUNUSVZFICYmCiAJCXR6LT50cmlwcy5hY3RpdmVbaV0uZmxhZ3MudmFsaWQ7IGkrKykgewogCQlpZiAoIXRyaXApCi0JCQlyZXR1cm4gc3ByaW50ZihidWYsICIlbGRcbiIsIEtFTFZJTl9UT19DRUxTSVVTKAorCQkJcmV0dXJuIHNwcmludGYoYnVmLCAiJWxkXG4iLCBLRUxWSU5fVE9fTUlMTElDRUxTSVVTKAogCQkJCQl0ei0+dHJpcHMuYWN0aXZlW2ldLnRlbXBlcmF0dXJlKSk7CiAJCXRyaXAtLTsKIAl9CkBAIC0xMTIzLDcgKzExMjUsNyBAQAogCQkJdHotPnRyaXBzLmFjdGl2ZVtpXS5mbGFncy52YWxpZDsgaSsrLCB0cmlwcysrKTsKIAl0ei0+dGhlcm1hbF96b25lID0gdGhlcm1hbF96b25lX2RldmljZV9yZWdpc3RlcigiQUNQSSB0aGVybWFsIHpvbmUiLAogCQkJCQl0cmlwcywgdHosICZhY3BpX3RoZXJtYWxfem9uZV9vcHMpOwotCWlmICghdHotPnRoZXJtYWxfem9uZSkKKwlpZiAoSVNfRVJSKHR6LT50aGVybWFsX3pvbmUpKQogCQlyZXR1cm4gLUVOT0RFVjsKIAogCXJlc3VsdCA9IHN5c2ZzX2NyZWF0ZV9saW5rKCZ0ei0+ZGV2aWNlLT5kZXYua29iaiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS90b3NoaWJhX2FjcGkuYyBiL2RyaXZlcnMvYWNwaS90b3NoaWJhX2FjcGkuYwppbmRleCA5ZThjMjBjLi4wYTQzYzhlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvdG9zaGliYV9hY3BpLmMKKysrIGIvZHJpdmVycy9hY3BpL3Rvc2hpYmFfYWNwaS5jCkBAIC05OSw2ICs5OSwxMyBAQAogI2RlZmluZSBIQ0lfVklERU9fT1VUX0NSVAkJMHgyCiAjZGVmaW5lIEhDSV9WSURFT19PVVRfVFYJCTB4NAogCitzdGF0aWMgY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlX2lkIHRvc2hpYmFfZGV2aWNlX2lkc1tdID0geworCXsiVE9TNjIwMCIsIDB9LAorCXsiVE9TMTkwMCIsIDB9LAorCXsiIiwgMH0sCit9OworTU9EVUxFX0RFVklDRV9UQUJMRShhY3BpLCB0b3NoaWJhX2RldmljZV9pZHMpOworCiAvKiB1dGlsaXR5CiAgKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL3V0aWxpdGllcy91dGRlYnVnLmMgYi9kcml2ZXJzL2FjcGkvdXRpbGl0aWVzL3V0ZGVidWcuYwppbmRleCBjN2UxMjhlLi43MzYxMjA0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvdXRpbGl0aWVzL3V0ZGVidWcuYworKysgYi9kcml2ZXJzL2FjcGkvdXRpbGl0aWVzL3V0ZGVidWcuYwpAQCAtMTA5LDcgKzEwOSw3IEBACiAgKiBSRVRVUk46ICAgICAgVXBkYXRlZCBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiBuYW1lCiAgKgogICogREVTQ1JJUFRJT046IFJlbW92ZSB0aGUgIkFjcGkiIHByZWZpeCBmcm9tIHRoZSBmdW5jdGlvbiBuYW1lLCBpZiBwcmVzZW50LgotICogICAgICAgICAgICAgIFRoaXMgYWxsb3dzIGNvbXBpbGVyIG1hY3JvcyBzdWNoIGFzIF9fRlVOQ1RJT05fXyB0byBiZSB1c2VkCisgKiAgICAgICAgICAgICAgVGhpcyBhbGxvd3MgY29tcGlsZXIgbWFjcm9zIHN1Y2ggYXMgX19mdW5jX18gdG8gYmUgdXNlZAogICogICAgICAgICAgICAgIHdpdGggbm8gY2hhbmdlIHRvIHRoZSBkZWJ1ZyBvdXRwdXQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS91dGlsaXRpZXMvdXRvYmplY3QuYyBiL2RyaXZlcnMvYWNwaS91dGlsaXRpZXMvdXRvYmplY3QuYwppbmRleCA3NmVlNzY2Li5lMDhiM2ZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvdXRpbGl0aWVzL3V0b2JqZWN0LmMKKysrIGIvZHJpdmVycy9hY3BpL3V0aWxpdGllcy91dG9iamVjdC5jCkBAIC00MzIsNyArNDMyLDcgQEAKIAkgKiBlbGVtZW50IC0tIHdoaWNoIGlzIGxlZ2FsKQogCSAqLwogCWlmICghaW50ZXJuYWxfb2JqZWN0KSB7Ci0JCSpvYmpfbGVuZ3RoID0gMDsKKwkJKm9ial9sZW5ndGggPSBzaXplb2YodW5pb24gYWNwaV9vYmplY3QpOwogCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfT0spOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL3V0aWxzLmMgYi9kcml2ZXJzL2FjcGkvdXRpbHMuYwppbmRleCBlYmE1NWI3Li40NGVhNjBjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvdXRpbHMuYworKysgYi9kcml2ZXJzL2FjcGkvdXRpbHMuYwpAQCAtNDA3LDYgKzQwNywxMiBAQAogCQkJYnJlYWs7CiAJCX0KIAorCQlpZiAoIWVsZW1lbnQtPnJlZmVyZW5jZS5oYW5kbGUpIHsKKwkJCXByaW50ayhLRVJOX1dBUk5JTkcgUFJFRklYICJJbnZhbGlkIHJlZmVyZW5jZSBpbiIKKwkJCSAgICAgICAiIHBhY2thZ2UgJXNcbiIsIHBhdGhuYW1lKTsKKwkJCXN0YXR1cyA9IEFFX05VTExfRU5UUlk7CisJCQlicmVhazsKKwkJfQogCQkvKiBHZXQgdGhlICBhY3BpX2hhbmRsZS4gKi8KIAogCQlsaXN0LT5oYW5kbGVzW2ldID0gZWxlbWVudC0+cmVmZXJlbmNlLmhhbmRsZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS92aWRlby5jIGIvZHJpdmVycy9hY3BpL3ZpZGVvLmMKaW5kZXggMTJjY2U2OS4uOTgwYTc0MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL3ZpZGVvLmMKKysrIGIvZHJpdmVycy9hY3BpL3ZpZGVvLmMKQEAgLTgwNyw0MCArODA3LDExIEBACiBzdGF0aWMgaW50IGFjcGlfdmlkZW9fYnVzX2NoZWNrKHN0cnVjdCBhY3BpX3ZpZGVvX2J1cyAqdmlkZW8pCiB7CiAJYWNwaV9zdGF0dXMgc3RhdHVzID0gLUVOT0VOVDsKLQlsb25nIGRldmljZV9pZDsKLQlzdHJ1Y3QgZGV2aWNlICpkZXY7Ci0Jc3RydWN0IGFjcGlfZGV2aWNlICpkZXZpY2U7CisKIAogCWlmICghdmlkZW8pCiAJCXJldHVybiAtRUlOVkFMOwogCi0JZGV2aWNlID0gdmlkZW8tPmRldmljZTsKLQotCXN0YXR1cyA9Ci0JICAgIGFjcGlfZXZhbHVhdGVfaW50ZWdlcihkZXZpY2UtPmhhbmRsZSwgIl9BRFIiLCBOVUxMLCAmZGV2aWNlX2lkKTsKLQotCWlmICghQUNQSV9TVUNDRVNTKHN0YXR1cykpCi0JCXJldHVybiAtRU5PREVWOwotCi0JLyogV2UgbmVlZCB0byBhdHRlbXB0IHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBfQURSIHJlZmVycyB0byBhCi0JICAgUENJIGRldmljZSBvciBub3QuIFRoZXJlJ3Mgbm8gdGVycmlibHkgZ29vZCB3YXkgdG8gZG8gdGhpcywKLQkgICBzbyB0aGUgYmVzdCB3ZSBjYW4gaG9wZSBmb3IgaXMgdG8gYXNzdW1lIHRoYXQgdGhlcmUnbGwgbmV2ZXIKLQkgICBiZSBhIHZpZGVvIGRldmljZSBpbiB0aGUgaG9zdCBicmlkZ2UgKi8KLQlpZiAoZGV2aWNlX2lkID49IDB4MTAwMDApIHsKLQkJLyogSXQgbG9va3MgbGlrZSBhIFBDSSBkZXZpY2UuIERvZXMgaXQgZXhpc3Q/ICovCi0JCWRldiA9IGFjcGlfZ2V0X3BoeXNpY2FsX2RldmljZShkZXZpY2UtPmhhbmRsZSk7Ci0JfSBlbHNlIHsKLQkJLyogSXQgZG9lc24ndCBsb29rIGxpa2UgYSBQQ0kgZGV2aWNlLiBEb2VzIGl0cyBwYXJlbnQKLQkJICAgZXhpc3Q/ICovCi0JCWFjcGlfaGFuZGxlIHBoYW5kbGU7Ci0JCWlmIChhY3BpX2dldF9wYXJlbnQoZGV2aWNlLT5oYW5kbGUsICZwaGFuZGxlKSkKLQkJCXJldHVybiAtRU5PREVWOwotCQlkZXYgPSBhY3BpX2dldF9waHlzaWNhbF9kZXZpY2UocGhhbmRsZSk7Ci0JfQotCWlmICghZGV2KQotCQlyZXR1cm4gLUVOT0RFVjsKLQlwdXRfZGV2aWNlKGRldik7Ci0KIAkvKiBTaW5jZSB0aGVyZSBpcyBubyBISUQsIENJRCBhbmQgc28gb24gZm9yIFZHQSBkcml2ZXIsIHdlIGhhdmUKIAkgKiB0byBjaGVjayB3ZWxsIGtub3duIHJlcXVpcmVkIG5vZGVzLgogCSAqLwpAQCAtMTIwMSw3ICsxMTcyLDcgQEAKIAlpZiAoIXZpZGVvKQogCQlnb3RvIGVuZDsKIAotCXByaW50ayhLRVJOX0lORk8gUFJFRklYICJQbGVhc2UgaW1wbGVtZW50ICVzXG4iLCBfX0ZVTkNUSU9OX18pOworCXByaW50ayhLRVJOX0lORk8gUFJFRklYICJQbGVhc2UgaW1wbGVtZW50ICVzXG4iLCBfX2Z1bmNfXyk7CiAJc2VxX3ByaW50ZihzZXEsICI8VE9ETz5cbiIpOwogCiAgICAgICBlbmQ6CkBAIC0xMzY2LDM3ICsxMzM3LDggQEAKIAogc3RhdGljIGludCBhY3BpX3ZpZGVvX2J1c19hZGRfZnMoc3RydWN0IGFjcGlfZGV2aWNlICpkZXZpY2UpCiB7Ci0JbG9uZyBkZXZpY2VfaWQ7Ci0JaW50IHN0YXR1czsKIAlzdHJ1Y3QgcHJvY19kaXJfZW50cnkgKmVudHJ5ID0gTlVMTDsKIAlzdHJ1Y3QgYWNwaV92aWRlb19idXMgKnZpZGVvOwotCXN0cnVjdCBkZXZpY2UgKmRldjsKLQotCXN0YXR1cyA9Ci0JICAgIGFjcGlfZXZhbHVhdGVfaW50ZWdlcihkZXZpY2UtPmhhbmRsZSwgIl9BRFIiLCBOVUxMLCAmZGV2aWNlX2lkKTsKLQotCWlmICghQUNQSV9TVUNDRVNTKHN0YXR1cykpCi0JCXJldHVybiAtRU5PREVWOwotCi0JLyogV2UgbmVlZCB0byBhdHRlbXB0IHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBfQURSIHJlZmVycyB0byBhCi0JICAgUENJIGRldmljZSBvciBub3QuIFRoZXJlJ3Mgbm8gdGVycmlibHkgZ29vZCB3YXkgdG8gZG8gdGhpcywKLQkgICBzbyB0aGUgYmVzdCB3ZSBjYW4gaG9wZSBmb3IgaXMgdG8gYXNzdW1lIHRoYXQgdGhlcmUnbGwgbmV2ZXIKLQkgICBiZSBhIHZpZGVvIGRldmljZSBpbiB0aGUgaG9zdCBicmlkZ2UgKi8KLQlpZiAoZGV2aWNlX2lkID49IDB4MTAwMDApIHsKLQkJLyogSXQgbG9va3MgbGlrZSBhIFBDSSBkZXZpY2UuIERvZXMgaXQgZXhpc3Q/ICovCi0JCWRldiA9IGFjcGlfZ2V0X3BoeXNpY2FsX2RldmljZShkZXZpY2UtPmhhbmRsZSk7Ci0JfSBlbHNlIHsKLQkJLyogSXQgZG9lc24ndCBsb29rIGxpa2UgYSBQQ0kgZGV2aWNlLiBEb2VzIGl0cyBwYXJlbnQKLQkJICAgZXhpc3Q/ICovCi0JCWFjcGlfaGFuZGxlIHBoYW5kbGU7Ci0JCWlmIChhY3BpX2dldF9wYXJlbnQoZGV2aWNlLT5oYW5kbGUsICZwaGFuZGxlKSkKLQkJCXJldHVybiAtRU5PREVWOwotCQlkZXYgPSBhY3BpX2dldF9waHlzaWNhbF9kZXZpY2UocGhhbmRsZSk7Ci0JfQotCWlmICghZGV2KQotCQlyZXR1cm4gLUVOT0RFVjsKLQlwdXRfZGV2aWNlKGRldik7Ci0KIAogCiAJdmlkZW8gPSBhY3BpX2RyaXZlcl9kYXRhKGRldmljZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvd21pLmMgYi9kcml2ZXJzL2FjcGkvd21pLmMKaW5kZXggZWZhY2M5Zi4uYzMzYjFjNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL3dtaS5jCisrKyBiL2RyaXZlcnMvYWNwaS93bWkuYwpAQCAtMjkzLDcgKzI5Myw3IEBACiB7CiAJc3RydWN0IGd1aWRfYmxvY2sgKmJsb2NrID0gTlVMTDsKIAlzdHJ1Y3Qgd21pX2Jsb2NrICp3YmxvY2sgPSBOVUxMOwotCWFjcGlfaGFuZGxlIGhhbmRsZTsKKwlhY3BpX2hhbmRsZSBoYW5kbGUsIHdjX2hhbmRsZTsKIAlhY3BpX3N0YXR1cyBzdGF0dXMsIHdjX3N0YXR1cyA9IEFFX0VSUk9SOwogCXN0cnVjdCBhY3BpX29iamVjdF9saXN0IGlucHV0LCB3Y19pbnB1dDsKIAl1bmlvbiBhY3BpX29iamVjdCB3Y19wYXJhbXNbMV0sIHdxX3BhcmFtc1sxXTsKQEAgLTMzOCw4ICszMzgsMTAgQEAKIAkJICogZXhwZW5zaXZlLCBidXQgaGF2ZSBubyBjb3JyZXNwb25kaW5nIFdDeHggbWV0aG9kLiBTbyB3ZQogCQkgKiBzaG91bGQgbm90IGZhaWwgaWYgdGhpcyBoYXBwZW5zLgogCQkgKi8KLQkJd2Nfc3RhdHVzID0gYWNwaV9ldmFsdWF0ZV9vYmplY3QoaGFuZGxlLCB3Y19tZXRob2QsCi0JCQkmd2NfaW5wdXQsIE5VTEwpOworCQl3Y19zdGF0dXMgPSBhY3BpX2dldF9oYW5kbGUoaGFuZGxlLCB3Y19tZXRob2QsICZ3Y19oYW5kbGUpOworCQlpZiAoQUNQSV9TVUNDRVNTKHdjX3N0YXR1cykpCisJCQl3Y19zdGF0dXMgPSBhY3BpX2V2YWx1YXRlX29iamVjdChoYW5kbGUsIHdjX21ldGhvZCwKKwkJCQkmd2NfaW5wdXQsIE5VTEwpOwogCX0KIAogCXN0cmNweShtZXRob2QsICJXUSIpOwpAQCAtMzUxLDcgKzM1Myw3IEBACiAJICogSWYgQUNQSV9XTUlfRVhQRU5TSVZFLCBjYWxsIHRoZSByZWxldmFudCBXQ3h4IG1ldGhvZCwgZXZlbiBpZgogCSAqIHRoZSBXUXh4IG1ldGhvZCBmYWlsZWQgLSB3ZSBzaG91bGQgZGlzYWJsZSBjb2xsZWN0aW9uIGFueXdheS4KIAkgKi8KLQlpZiAoKGJsb2NrLT5mbGFncyAmIEFDUElfV01JX0VYUEVOU0lWRSkgJiYgd2Nfc3RhdHVzKSB7CisJaWYgKChibG9jay0+ZmxhZ3MgJiBBQ1BJX1dNSV9FWFBFTlNJVkUpICYmIEFDUElfU1VDQ0VTUyh3Y19zdGF0dXMpKSB7CiAJCXdjX3BhcmFtc1swXS5pbnRlZ2VyLnZhbHVlID0gMDsKIAkJc3RhdHVzID0gYWNwaV9ldmFsdWF0ZV9vYmplY3QoaGFuZGxlLAogCQl3Y19tZXRob2QsICZ3Y19pbnB1dCwgTlVMTCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0YS9LY29uZmlnIGIvZHJpdmVycy9hdGEvS2NvbmZpZwppbmRleCBlNDY5NjQ3Li4yNWFiYTY5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0YS9LY29uZmlnCisrKyBiL2RyaXZlcnMvYXRhL0tjb25maWcKQEAgLTMwLDYgKzMwLDcgQEAKIGNvbmZpZyBBVEFfQUNQSQogCWJvb2wKIAlkZXBlbmRzIG9uIEFDUEkgJiYgUENJCisJc2VsZWN0IEFDUElfRE9DSwogCWRlZmF1bHQgeQogCWhlbHAKIAkgIFRoaXMgb3B0aW9uIGFkZHMgc3VwcG9ydCBmb3IgQVRBLXJlbGF0ZWQgQUNQSSBvYmplY3RzLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdGEvYWhjaS5jIGIvZHJpdmVycy9hdGEvYWhjaS5jCmluZGV4IDY5Nzg0NjkuLmIxZWI0ZTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRhL2FoY2kuYworKysgYi9kcml2ZXJzL2F0YS9haGNpLmMKQEAgLTQ5LDYgKzQ5LDEwIEBACiAjZGVmaW5lIERSVl9OQU1FCSJhaGNpIgogI2RlZmluZSBEUlZfVkVSU0lPTgkiMy4wIgogCitzdGF0aWMgaW50IGFoY2lfc2tpcF9ob3N0X3Jlc2V0OworbW9kdWxlX3BhcmFtX25hbWVkKHNraXBfaG9zdF9yZXNldCwgYWhjaV9za2lwX2hvc3RfcmVzZXQsIGludCwgMDQ0NCk7CitNT0RVTEVfUEFSTV9ERVNDKHNraXBfaG9zdF9yZXNldCwgInNraXAgZ2xvYmFsIGhvc3QgcmVzZXQgKDA9ZG9uJ3Qgc2tpcCwgMT1za2lwKSIpOworCiBzdGF0aWMgaW50IGFoY2lfZW5hYmxlX2FscG0oc3RydWN0IGF0YV9wb3J0ICphcCwKIAkJZW51bSBsaW5rX3BtIHBvbGljeSk7CiBzdGF0aWMgdm9pZCBhaGNpX2Rpc2FibGVfYWxwbShzdHJ1Y3QgYXRhX3BvcnQgKmFwKTsKQEAgLTQyOSw2ICs0MzMsNyBAQAogCS8qIGJvYXJkX2FoY2lfc2I2MDAgKi8KIAl7CiAJCUFIQ0lfSEZMQUdTCShBSENJX0hGTEFHX0lHTl9TRVJSX0lOVEVSTkFMIHwKKwkJCQkgQUhDSV9IRkxBR18zMkJJVF9PTkxZIHwKIAkJCQkgQUhDSV9IRkxBR19TRUNUMjU1IHwgQUhDSV9IRkxBR19OT19QTVApLAogCQkuZmxhZ3MJCT0gQUhDSV9GTEFHX0NPTU1PTiwKIAkJLmxpbmtfZmxhZ3MJPSBBSENJX0xGTEFHX0NPTU1PTiwKQEAgLTU4Nyw2ICs1OTIsNyBAQAogCiAJLyogTWFydmVsbCAqLwogCXsgUENJX1ZERVZJQ0UoTUFSVkVMTCwgMHg2MTQ1KSwgYm9hcmRfYWhjaV9tdiB9LAkvKiA2MTQ1ICovCisJeyBQQ0lfVkRFVklDRShNQVJWRUxMLCAweDYxMjEpLCBib2FyZF9haGNpX212IH0sCS8qIDYxMjEgKi8KIAogCS8qIEdlbmVyaWMsIFBDSSBjbGFzcyBjb2RlIGZvciBBSENJICovCiAJeyBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELApAQCAtNjYxLDYgKzY2Nyw3IEBACiAJdm9pZCBfX2lvbWVtICptbWlvID0gcGNpbV9pb21hcF90YWJsZShwZGV2KVtBSENJX1BDSV9CQVJdOwogCXUzMiBjYXAsIHBvcnRfbWFwOwogCWludCBpOworCWludCBtdjsKIAogCS8qIG1ha2Ugc3VyZSBBSENJIG1vZGUgaXMgZW5hYmxlZCBiZWZvcmUgYWNjZXNzaW5nIENBUCAqLwogCWFoY2lfZW5hYmxlX2FoY2kobW1pbyk7CkBAIC02OTYsMTIgKzcwMywxNiBAQAogCSAqIHByZXNlbmNlIHJlZ2lzdGVyLCBhcyBiaXQgNCAoY291bnRpbmcgZnJvbSAwKQogCSAqLwogCWlmIChocHJpdi0+ZmxhZ3MgJiBBSENJX0hGTEFHX01WX1BBVEEpIHsKKwkJaWYgKHBkZXYtPmRldmljZSA9PSAweDYxMjEpCisJCQltdiA9IDB4MzsKKwkJZWxzZQorCQkJbXYgPSAweGY7CiAJCWRldl9wcmludGsoS0VSTl9FUlIsICZwZGV2LT5kZXYsCiAJCQkgICAiTVZfQUhDSSBIQUNLOiBwb3J0X21hcCAleCAtPiAleFxuIiwKLQkJCSAgIGhwcml2LT5wb3J0X21hcCwKLQkJCSAgIGhwcml2LT5wb3J0X21hcCAmIDB4Zik7CisJCQkgICBwb3J0X21hcCwKKwkJCSAgIHBvcnRfbWFwICYgbXYpOwogCi0JCXBvcnRfbWFwICY9IDB4ZjsKKwkJcG9ydF9tYXAgJj0gbXY7CiAJfQogCiAJLyogY3Jvc3MgY2hlY2sgcG9ydF9tYXAgYW5kIGNhcC5uX3BvcnRzICovCkBAIC0xMDg4LDI5ICsxMDk5LDM1IEBACiAJYWhjaV9lbmFibGVfYWhjaShtbWlvKTsKIAogCS8qIGdsb2JhbCBjb250cm9sbGVyIHJlc2V0ICovCi0JdG1wID0gcmVhZGwobW1pbyArIEhPU1RfQ1RMKTsKLQlpZiAoKHRtcCAmIEhPU1RfUkVTRVQpID09IDApIHsKLQkJd3JpdGVsKHRtcCB8IEhPU1RfUkVTRVQsIG1taW8gKyBIT1NUX0NUTCk7Ci0JCXJlYWRsKG1taW8gKyBIT1NUX0NUTCk7IC8qIGZsdXNoICovCi0JfQorCWlmICghYWhjaV9za2lwX2hvc3RfcmVzZXQpIHsKKwkJdG1wID0gcmVhZGwobW1pbyArIEhPU1RfQ1RMKTsKKwkJaWYgKCh0bXAgJiBIT1NUX1JFU0VUKSA9PSAwKSB7CisJCQl3cml0ZWwodG1wIHwgSE9TVF9SRVNFVCwgbW1pbyArIEhPU1RfQ1RMKTsKKwkJCXJlYWRsKG1taW8gKyBIT1NUX0NUTCk7IC8qIGZsdXNoICovCisJCX0KIAotCS8qIHJlc2V0IG11c3QgY29tcGxldGUgd2l0aGluIDEgc2Vjb25kLCBvcgotCSAqIHRoZSBoYXJkd2FyZSBzaG91bGQgYmUgY29uc2lkZXJlZCBmcmllZC4KLQkgKi8KLQlzc2xlZXAoMSk7CisJCS8qIHJlc2V0IG11c3QgY29tcGxldGUgd2l0aGluIDEgc2Vjb25kLCBvcgorCQkgKiB0aGUgaGFyZHdhcmUgc2hvdWxkIGJlIGNvbnNpZGVyZWQgZnJpZWQuCisJCSAqLworCQlzc2xlZXAoMSk7CiAKLQl0bXAgPSByZWFkbChtbWlvICsgSE9TVF9DVEwpOwotCWlmICh0bXAgJiBIT1NUX1JFU0VUKSB7Ci0JCWRldl9wcmludGsoS0VSTl9FUlIsIGhvc3QtPmRldiwKLQkJCSAgICJjb250cm9sbGVyIHJlc2V0IGZhaWxlZCAoMHgleClcbiIsIHRtcCk7Ci0JCXJldHVybiAtRUlPOwotCX0KKwkJdG1wID0gcmVhZGwobW1pbyArIEhPU1RfQ1RMKTsKKwkJaWYgKHRtcCAmIEhPU1RfUkVTRVQpIHsKKwkJCWRldl9wcmludGsoS0VSTl9FUlIsIGhvc3QtPmRldiwKKwkJCQkgICAiY29udHJvbGxlciByZXNldCBmYWlsZWQgKDB4JXgpXG4iLCB0bXApOworCQkJcmV0dXJuIC1FSU87CisJCX0KIAotCS8qIHR1cm4gb24gQUhDSSBtb2RlICovCi0JYWhjaV9lbmFibGVfYWhjaShtbWlvKTsKKwkJLyogdHVybiBvbiBBSENJIG1vZGUgKi8KKwkJYWhjaV9lbmFibGVfYWhjaShtbWlvKTsKIAotCS8qIHNvbWUgcmVnaXN0ZXJzIG1pZ2h0IGJlIGNsZWFyZWQgb24gcmVzZXQuICByZXN0b3JlIGluaXRpYWwgdmFsdWVzICovCi0JYWhjaV9yZXN0b3JlX2luaXRpYWxfY29uZmlnKGhvc3QpOworCQkvKiBTb21lIHJlZ2lzdGVycyBtaWdodCBiZSBjbGVhcmVkIG9uIHJlc2V0LiAgUmVzdG9yZQorCQkgKiBpbml0aWFsIHZhbHVlcy4KKwkJICovCisJCWFoY2lfcmVzdG9yZV9pbml0aWFsX2NvbmZpZyhob3N0KTsKKwl9IGVsc2UKKwkJZGV2X3ByaW50ayhLRVJOX0lORk8sIGhvc3QtPmRldiwKKwkJCSAgICJza2lwcGluZyBnbG9iYWwgaG9zdCByZXNldFxuIik7CiAKIAlpZiAocGRldi0+dmVuZG9yID09IFBDSV9WRU5ET1JfSURfSU5URUwpIHsKIAkJdTE2IHRtcDE2OwpAQCAtMTE2Miw5ICsxMTc5LDE0IEBACiAJaW50IGk7CiAJdm9pZCBfX2lvbWVtICpwb3J0X21taW87CiAJdTMyIHRtcDsKKwlpbnQgbXY7CiAKIAlpZiAoaHByaXYtPmZsYWdzICYgQUhDSV9IRkxBR19NVl9QQVRBKSB7Ci0JCXBvcnRfbW1pbyA9IF9fYWhjaV9wb3J0X2Jhc2UoaG9zdCwgNCk7CisJCWlmIChwZGV2LT5kZXZpY2UgPT0gMHg2MTIxKQorCQkJbXYgPSAyOworCQllbHNlCisJCQltdiA9IDQ7CisJCXBvcnRfbW1pbyA9IF9fYWhjaV9wb3J0X2Jhc2UoaG9zdCwgbXYpOwogCiAJCXdyaXRlbCgwLCBwb3J0X21taW8gKyBQT1JUX0lSUV9NQVNLKTsKIApAQCAtMTE5Niw4ICsxMjE4LDExIEBACiB7CiAJc3RydWN0IGFoY2lfaG9zdF9wcml2ICpocHJpdiA9IGRldi0+bGluay0+YXAtPmhvc3QtPnByaXZhdGVfZGF0YTsKIAotCWlmIChocHJpdi0+ZmxhZ3MgJiBBSENJX0hGTEFHX1NFQ1QyNTUpCisJaWYgKGhwcml2LT5mbGFncyAmIEFIQ0lfSEZMQUdfU0VDVDI1NSkgewogCQlkZXYtPm1heF9zZWN0b3JzID0gMjU1OworCQlhdGFfZGV2X3ByaW50ayhkZXYsIEtFUk5fSU5GTywKKwkJCSAgICAgICAiU0I2MDAgQUhDSTogbGltaXRpbmcgdG8gMjU1IHNlY3RvcnMgcGVyIGNtZFxuIik7CisJfQogfQogCiBzdGF0aWMgdW5zaWduZWQgaW50IGFoY2lfZGV2X2NsYXNzaWZ5KHN0cnVjdCBhdGFfcG9ydCAqYXApCkBAIC0yMjQxLDcgKzIyNjYsMTAgQEAKIAlpZiAocmMpCiAJCXJldHVybiByYzsKIAotCXJjID0gcGNpbV9pb21hcF9yZWdpb25zKHBkZXYsIDEgPDwgQUhDSV9QQ0lfQkFSLCBEUlZfTkFNRSk7CisJLyogQUhDSSBjb250cm9sbGVycyBvZnRlbiBpbXBsZW1lbnQgU0ZGIGNvbXBhdGlibGUgaW50ZXJmYWNlLgorCSAqIEdyYWIgYWxsIFBDSSBCQVJzIGp1c3QgaW4gY2FzZS4KKwkgKi8KKwlyYyA9IHBjaW1faW9tYXBfcmVnaW9uc19yZXF1ZXN0X2FsbChwZGV2LCAxIDw8IEFIQ0lfUENJX0JBUiwgRFJWX05BTUUpOwogCWlmIChyYyA9PSAtRUJVU1kpCiAJCXBjaW1fcGluX2RldmljZShwZGV2KTsKIAlpZiAocmMpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0YS9saWJhdGEtYWNwaS5jIGIvZHJpdmVycy9hdGEvbGliYXRhLWFjcGkuYwppbmRleCAwNzcwY2I3Li5iZjk4YTU2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0YS9saWJhdGEtYWNwaS5jCisrKyBiL2RyaXZlcnMvYXRhL2xpYmF0YS1hY3BpLmMKQEAgLTExOCw0NSArMTE4LDc3IEBACiAJCWFwLT5wZmxhZ3MgfD0gQVRBX1BGTEFHX0lOSVRfR1RNX1ZBTElEOwogfQogCi1zdGF0aWMgdm9pZCBhdGFfYWNwaV9oYW5kbGVfaG90cGx1ZyhzdHJ1Y3QgYXRhX3BvcnQgKmFwLCBzdHJ1Y3Qga29iamVjdCAqa29iaiwKK3N0YXRpYyB2b2lkIGF0YV9hY3BpX2hhbmRsZV9ob3RwbHVnKHN0cnVjdCBhdGFfcG9ydCAqYXAsIHN0cnVjdCBhdGFfZGV2aWNlICpkZXYsCiAJCQkJICAgIHUzMiBldmVudCkKIHsKIAljaGFyIGV2ZW50X3N0cmluZ1sxMl07CiAJY2hhciAqZW52cFtdID0geyBldmVudF9zdHJpbmcsIE5VTEwgfTsKLQlzdHJ1Y3QgYXRhX2VoX2luZm8gKmVoaSA9ICZhcC0+bGluay5laF9pbmZvOworCXN0cnVjdCBhdGFfZWhfaW5mbyAqZWhpOworCXN0cnVjdCBrb2JqZWN0ICprb2JqID0gTlVMTDsKKwlpbnQgd2FpdCA9IDA7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKIAotCWlmIChldmVudCA9PSAwIHx8IGV2ZW50ID09IDEpIHsKLQkgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKLQkgICAgICAgc3Bpbl9sb2NrX2lycXNhdmUoYXAtPmxvY2ssIGZsYWdzKTsKLQkgICAgICAgYXRhX2VoaV9jbGVhcl9kZXNjKGVoaSk7Ci0JICAgICAgIGF0YV9laGlfcHVzaF9kZXNjKGVoaSwgIkFDUEkgZXZlbnQiKTsKLQkgICAgICAgYXRhX2VoaV9ob3RwbHVnZ2VkKGVoaSk7Ci0JICAgICAgIGF0YV9wb3J0X2ZyZWV6ZShhcCk7Ci0JICAgICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoYXAtPmxvY2ssIGZsYWdzKTsKKwlpZiAoIWFwKQorCQlhcCA9IGRldi0+bGluay0+YXA7CisJZWhpID0gJmFwLT5saW5rLmVoX2luZm87CisKKwlzcGluX2xvY2tfaXJxc2F2ZShhcC0+bG9jaywgZmxhZ3MpOworCisJc3dpdGNoIChldmVudCkgeworCWNhc2UgQUNQSV9OT1RJRllfQlVTX0NIRUNLOgorCWNhc2UgQUNQSV9OT1RJRllfREVWSUNFX0NIRUNLOgorCQlhdGFfZWhpX3B1c2hfZGVzYyhlaGksICJBQ1BJIGV2ZW50Iik7CisJCWF0YV9laGlfaG90cGx1Z2dlZChlaGkpOworCQlhdGFfcG9ydF9mcmVlemUoYXApOworCQlicmVhazsKKworCWNhc2UgQUNQSV9OT1RJRllfRUpFQ1RfUkVRVUVTVDoKKwkJYXRhX2VoaV9wdXNoX2Rlc2MoZWhpLCAiQUNQSSBldmVudCIpOworCQlpZiAoZGV2KQorCQkJZGV2LT5mbGFncyB8PSBBVEFfREZMQUdfREVUQUNIOworCQllbHNlIHsKKwkJCXN0cnVjdCBhdGFfbGluayAqdGxpbms7CisJCQlzdHJ1Y3QgYXRhX2RldmljZSAqdGRldjsKKworCQkJYXRhX3BvcnRfZm9yX2VhY2hfbGluayh0bGluaywgYXApCisJCQkJYXRhX2xpbmtfZm9yX2VhY2hfZGV2KHRkZXYsIHRsaW5rKQorCQkJCQl0ZGV2LT5mbGFncyB8PSBBVEFfREZMQUdfREVUQUNIOworCQl9CisKKwkJYXRhX3BvcnRfc2NoZWR1bGVfZWgoYXApOworCQl3YWl0ID0gMTsKKwkJYnJlYWs7CiAJfQogCisJaWYgKGRldikgeworCQlpZiAoZGV2LT5zZGV2KQorCQkJa29iaiA9ICZkZXYtPnNkZXYtPnNkZXZfZ2VuZGV2LmtvYmo7CisJfSBlbHNlCisJCWtvYmogPSAmYXAtPmRldi0+a29iajsKKwogCWlmIChrb2JqKSB7CiAJCXNwcmludGYoZXZlbnRfc3RyaW5nLCAiQkFZX0VWRU5UPSVkIiwgZXZlbnQpOwogCQlrb2JqZWN0X3VldmVudF9lbnYoa29iaiwgS09CSl9DSEFOR0UsIGVudnApOwogCX0KKworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoYXAtPmxvY2ssIGZsYWdzKTsKKworCWlmICh3YWl0KQorCQlhdGFfcG9ydF93YWl0X2VoKGFwKTsKIH0KIAogc3RhdGljIHZvaWQgYXRhX2FjcGlfZGV2X25vdGlmeShhY3BpX2hhbmRsZSBoYW5kbGUsIHUzMiBldmVudCwgdm9pZCAqZGF0YSkKIHsKIAlzdHJ1Y3QgYXRhX2RldmljZSAqZGV2ID0gZGF0YTsKLQlzdHJ1Y3Qga29iamVjdCAqa29iaiA9IE5VTEw7CiAKLQlpZiAoZGV2LT5zZGV2KQotCQlrb2JqID0gJmRldi0+c2Rldi0+c2Rldl9nZW5kZXYua29iajsKLQotCWF0YV9hY3BpX2hhbmRsZV9ob3RwbHVnKGRldi0+bGluay0+YXAsIGtvYmosIGV2ZW50KTsKKwlhdGFfYWNwaV9oYW5kbGVfaG90cGx1ZyhOVUxMLCBkZXYsIGV2ZW50KTsKIH0KIAogc3RhdGljIHZvaWQgYXRhX2FjcGlfYXBfbm90aWZ5KGFjcGlfaGFuZGxlIGhhbmRsZSwgdTMyIGV2ZW50LCB2b2lkICpkYXRhKQogewogCXN0cnVjdCBhdGFfcG9ydCAqYXAgPSBkYXRhOwogCi0JYXRhX2FjcGlfaGFuZGxlX2hvdHBsdWcoYXAsICZhcC0+ZGV2LT5rb2JqLCBldmVudCk7CisJYXRhX2FjcGlfaGFuZGxlX2hvdHBsdWcoYXAsIE5VTEwsIGV2ZW50KTsKIH0KIAogLyoqCkBAIC0xOTEsMjAgKzIyMywzMCBAQAogCQllbHNlCiAJCQlhdGFfYWNwaV9hc3NvY2lhdGVfaWRlX3BvcnQoYXApOwogCi0JCWlmIChhcC0+YWNwaV9oYW5kbGUpCi0JCQlhY3BpX2luc3RhbGxfbm90aWZ5X2hhbmRsZXIgKGFwLT5hY3BpX2hhbmRsZSwKLQkJCQkJCSAgICAgQUNQSV9TWVNURU1fTk9USUZZLAotCQkJCQkJICAgICBhdGFfYWNwaV9hcF9ub3RpZnksCi0JCQkJCQkgICAgIGFwKTsKKwkJaWYgKGFwLT5hY3BpX2hhbmRsZSkgeworCQkJYWNwaV9pbnN0YWxsX25vdGlmeV9oYW5kbGVyKGFwLT5hY3BpX2hhbmRsZSwKKwkJCQkJCSAgICBBQ1BJX1NZU1RFTV9OT1RJRlksCisJCQkJCQkgICAgYXRhX2FjcGlfYXBfbm90aWZ5LCBhcCk7CisjaWYgZGVmaW5lZChDT05GSUdfQUNQSV9ET0NLKSB8fCBkZWZpbmVkKENPTkZJR19BQ1BJX0RPQ0tfTU9EVUxFKQorCQkJLyogd2UgbWlnaHQgYmUgb24gYSBkb2NraW5nIHN0YXRpb24gKi8KKwkJCXJlZ2lzdGVyX2hvdHBsdWdfZG9ja19kZXZpY2UoYXAtPmFjcGlfaGFuZGxlLAorCQkJCQkJICAgICBhdGFfYWNwaV9hcF9ub3RpZnksIGFwKTsKKyNlbmRpZgorCQl9CiAKIAkJZm9yIChqID0gMDsgaiA8IGF0YV9saW5rX21heF9kZXZpY2VzKCZhcC0+bGluayk7IGorKykgewogCQkJc3RydWN0IGF0YV9kZXZpY2UgKmRldiA9ICZhcC0+bGluay5kZXZpY2Vbal07CiAKLQkJCWlmIChkZXYtPmFjcGlfaGFuZGxlKQotCQkJCWFjcGlfaW5zdGFsbF9ub3RpZnlfaGFuZGxlciAoZGV2LT5hY3BpX2hhbmRsZSwKLQkJCQkJCQkgICAgIEFDUElfU1lTVEVNX05PVElGWSwKLQkJCQkJCQkgICAgIGF0YV9hY3BpX2Rldl9ub3RpZnksCi0JCQkJCQkJICAgICBkZXYpOworCQkJaWYgKGRldi0+YWNwaV9oYW5kbGUpIHsKKwkJCQlhY3BpX2luc3RhbGxfbm90aWZ5X2hhbmRsZXIoZGV2LT5hY3BpX2hhbmRsZSwKKwkJCQkJCUFDUElfU1lTVEVNX05PVElGWSwKKwkJCQkJCWF0YV9hY3BpX2Rldl9ub3RpZnksIGRldik7CisjaWYgZGVmaW5lZChDT05GSUdfQUNQSV9ET0NLKSB8fCBkZWZpbmVkKENPTkZJR19BQ1BJX0RPQ0tfTU9EVUxFKQorCQkJCS8qIHdlIG1pZ2h0IGJlIG9uIGEgZG9ja2luZyBzdGF0aW9uICovCisJCQkJcmVnaXN0ZXJfaG90cGx1Z19kb2NrX2RldmljZShkZXYtPmFjcGlfaGFuZGxlLAorCQkJCQkJYXRhX2FjcGlfZGV2X25vdGlmeSwgZGV2KTsKKyNlbmRpZgorCQkJfQogCQl9CiAJfQogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdGEvbGliYXRhLWNvcmUuYyBiL2RyaXZlcnMvYXRhL2xpYmF0YS1jb3JlLmMKaW5kZXggNGJiZTMxZi4uYmU5NWZkYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEvbGliYXRhLWNvcmUuYworKysgYi9kcml2ZXJzL2F0YS9saWJhdGEtY29yZS5jCkBAIC0zMjYsNiArMzI2LDQ0IEBACiB9CiAKIC8qKgorICoJYXRhcGlfY21kX3R5cGUgLSBEZXRlcm1pbmUgQVRBUEkgY29tbWFuZCB0eXBlIGZyb20gU0NTSSBvcGNvZGUKKyAqCUBvcGNvZGU6IFNDU0kgb3Bjb2RlCisgKgorICoJRGV0ZXJtaW5lIEFUQVBJIGNvbW1hbmQgdHlwZSBmcm9tIEBvcGNvZGUuCisgKgorICoJTE9DS0lORzoKKyAqCU5vbmUuCisgKgorICoJUkVUVVJOUzoKKyAqCUFUQVBJX3tSRUFEfFdSSVRFfFJFQURfQ0R8UEFTU19USFJVfE1JU0N9CisgKi8KK2ludCBhdGFwaV9jbWRfdHlwZSh1OCBvcGNvZGUpCit7CisJc3dpdGNoIChvcGNvZGUpIHsKKwljYXNlIEdQQ01EX1JFQURfMTA6CisJY2FzZSBHUENNRF9SRUFEXzEyOgorCQlyZXR1cm4gQVRBUElfUkVBRDsKKworCWNhc2UgR1BDTURfV1JJVEVfMTA6CisJY2FzZSBHUENNRF9XUklURV8xMjoKKwljYXNlIEdQQ01EX1dSSVRFX0FORF9WRVJJRllfMTA6CisJCXJldHVybiBBVEFQSV9XUklURTsKKworCWNhc2UgR1BDTURfUkVBRF9DRDoKKwljYXNlIEdQQ01EX1JFQURfQ0RfTVNGOgorCQlyZXR1cm4gQVRBUElfUkVBRF9DRDsKKworCWNhc2UgQVRBXzE2OgorCWNhc2UgQVRBXzEyOgorCQlpZiAoYXRhcGlfcGFzc3RocnUxNikKKwkJCXJldHVybiBBVEFQSV9QQVNTX1RIUlU7CisJCS8qIGZhbGwgdGhydSAqLworCWRlZmF1bHQ6CisJCXJldHVybiBBVEFQSV9NSVNDOworCX0KK30KKworLyoqCiAgKglhdGFfdGZfdG9fZmlzIC0gQ29udmVydCBBVEEgdGFza2ZpbGUgdG8gU0FUQSBGSVMgc3RydWN0dXJlCiAgKglAdGY6IFRhc2tmaWxlIHRvIGNvbnZlcnQKICAqCUBwbXA6IFBvcnQgbXVsdGlwbGllciBwb3J0CkBAIC05NzIsNyArMTAxMCw3IEBACiB2b2lkIGF0YV9scG1fc2NoZWR1bGUoc3RydWN0IGF0YV9wb3J0ICphcCwgZW51bSBsaW5rX3BtIHBvbGljeSkKIHsKIAlhcC0+cG1fcG9saWN5ID0gcG9saWN5OwotCWFwLT5saW5rLmVoX2luZm8uYWN0aW9uIHw9IEFUQV9FSElfTFBNOworCWFwLT5saW5rLmVoX2luZm8uYWN0aW9uIHw9IEFUQV9FSF9MUE07CiAJYXAtPmxpbmsuZWhfaW5mby5mbGFncyB8PSBBVEFfRUhJX05PX0FVVE9QU1k7CiAJYXRhX3BvcnRfc2NoZWR1bGVfZWgoYXApOwogfQpAQCAtMTQxNiwxMiArMTQ1NCwxMiBAQAogCS8qIHJlYWQgbmF0aXZlIG1heCBhZGRyZXNzICovCiAJcmMgPSBhdGFfcmVhZF9uYXRpdmVfbWF4X2FkZHJlc3MoZGV2LCAmbmF0aXZlX3NlY3RvcnMpOwogCWlmIChyYykgewotCQkvKiBJZiBIUEEgaXNuJ3QgZ29pbmcgdG8gYmUgdW5sb2NrZWQsIHNraXAgSFBBCi0JCSAqIHJlc2l6aW5nIGZyb20gdGhlIG5leHQgdHJ5LgorCQkvKiBJZiBkZXZpY2UgYWJvcnRlZCB0aGUgY29tbWFuZCBvciBIUEEgaXNuJ3QgZ29pbmcgdG8KKwkJICogYmUgdW5sb2NrZWQsIHNraXAgSFBBIHJlc2l6aW5nLgogCQkgKi8KLQkJaWYgKCFhdGFfaWdub3JlX2hwYSkgeworCQlpZiAocmMgPT0gLUVBQ0NFUyB8fCAhYXRhX2lnbm9yZV9ocGEpIHsKIAkJCWF0YV9kZXZfcHJpbnRrKGRldiwgS0VSTl9XQVJOSU5HLCAiSFBBIHN1cHBvcnQgc2VlbXMgIgotCQkJCSAgICAgICAiYnJva2VuLCB3aWxsIHNraXAgSFBBIGhhbmRsaW5nXG4iKTsKKwkJCQkgICAgICAgImJyb2tlbiwgc2tpcHBpbmcgSFBBIGhhbmRsaW5nXG4iKTsKIAkJCWRldi0+aG9ya2FnZSB8PSBBVEFfSE9SS0FHRV9CUk9LRU5fSFBBOwogCiAJCQkvKiB3ZSBjYW4gY29udGludWUgaWYgZGV2aWNlIGFib3J0ZWQgdGhlIGNvbW1hbmQgKi8KQEAgLTIwOTIsMjQgKzIxMzAsMzQgQEAKIAkJCQkgICAgIGlkLCBzaXplb2YoaWRbMF0pICogQVRBX0lEX1dPUkRTLCAwKTsKIAlpZiAoZXJyX21hc2spIHsKIAkJaWYgKGVycl9tYXNrICYgQUNfRVJSX05PREVWX0hJTlQpIHsKLQkJCURQUklOVEsoImF0YSV1LiVkOiBOT0RFViBhZnRlciBwb2xsaW5nIGRldGVjdGlvblxuIiwKLQkJCQlhcC0+cHJpbnRfaWQsIGRldi0+ZGV2bm8pOworCQkJYXRhX2Rldl9wcmludGsoZGV2LCBLRVJOX0RFQlVHLAorCQkJCSAgICAgICAiTk9ERVYgYWZ0ZXIgcG9sbGluZyBkZXRlY3Rpb25cbiIpOwogCQkJcmV0dXJuIC1FTk9FTlQ7CiAJCX0KIAotCQkvKiBEZXZpY2Ugb3IgY29udHJvbGxlciBtaWdodCBoYXZlIHJlcG9ydGVkIHRoZSB3cm9uZwotCQkgKiBkZXZpY2UgY2xhc3MuICBHaXZlIGEgc2hvdCBhdCB0aGUgb3RoZXIgSURFTlRJRlkgaWYKLQkJICogdGhlIGN1cnJlbnQgb25lIGlzIGFib3J0ZWQgYnkgdGhlIGRldmljZS4KLQkJICovCi0JCWlmIChtYXlfZmFsbGJhY2sgJiYKLQkJICAgIChlcnJfbWFzayA9PSBBQ19FUlJfREVWKSAmJiAodGYuZmVhdHVyZSAmIEFUQV9BQk9SVEVEKSkgewotCQkJbWF5X2ZhbGxiYWNrID0gMDsKKwkJaWYgKChlcnJfbWFzayA9PSBBQ19FUlJfREVWKSAmJiAodGYuZmVhdHVyZSAmIEFUQV9BQk9SVEVEKSkgeworCQkJLyogRGV2aWNlIG9yIGNvbnRyb2xsZXIgbWlnaHQgaGF2ZSByZXBvcnRlZAorCQkJICogdGhlIHdyb25nIGRldmljZSBjbGFzcy4gIEdpdmUgYSBzaG90IGF0IHRoZQorCQkJICogb3RoZXIgSURFTlRJRlkgaWYgdGhlIGN1cnJlbnQgb25lIGlzCisJCQkgKiBhYm9ydGVkIGJ5IHRoZSBkZXZpY2UuCisJCQkgKi8KKwkJCWlmIChtYXlfZmFsbGJhY2spIHsKKwkJCQltYXlfZmFsbGJhY2sgPSAwOwogCi0JCQlpZiAoY2xhc3MgPT0gQVRBX0RFVl9BVEEpCi0JCQkJY2xhc3MgPSBBVEFfREVWX0FUQVBJOwotCQkJZWxzZQotCQkJCWNsYXNzID0gQVRBX0RFVl9BVEE7Ci0JCQlnb3RvIHJldHJ5OworCQkJCWlmIChjbGFzcyA9PSBBVEFfREVWX0FUQSkKKwkJCQkJY2xhc3MgPSBBVEFfREVWX0FUQVBJOworCQkJCWVsc2UKKwkJCQkJY2xhc3MgPSBBVEFfREVWX0FUQTsKKwkJCQlnb3RvIHJldHJ5OworCQkJfQorCisJCQkvKiBDb250cm9sIHJlYWNoZXMgaGVyZSBpZmYgdGhlIGRldmljZSBhYm9ydGVkCisJCQkgKiBib3RoIGZsYXZvcnMgb2YgSURFTlRJRllzIHdoaWNoIGhhcHBlbnMKKwkJCSAqIHNvbWV0aW1lcyB3aXRoIHBoYW50b20gZGV2aWNlcy4KKwkJCSAqLworCQkJYXRhX2Rldl9wcmludGsoZGV2LCBLRVJOX0RFQlVHLAorCQkJCSAgICAgICAiYm90aCBJREVOVElGWXMgYWJvcnRlZCwgYXNzdW1pbmcgTk9ERVZcbiIpOworCQkJcmV0dXJuIC1FTk9FTlQ7CiAJCX0KIAogCQlyYyA9IC1FSU87CkBAIC0yNjUwLDcgKzI2OTgsNyBAQAogCSAgIHNwZWNpZmljIHNlcXVlbmNlIGJhc3MtYWNrd2FyZHMgc28gdGhhdCBQRElBRy0gaXMgcmVsZWFzZWQgYnkKIAkgICB0aGUgc2xhdmUgZGV2aWNlICovCiAKLQlhdGFfbGlua19mb3JfZWFjaF9kZXYoZGV2LCAmYXAtPmxpbmspIHsKKwlhdGFfbGlua19mb3JfZWFjaF9kZXZfcmV2ZXJzZShkZXYsICZhcC0+bGluaykgewogCQlpZiAodHJpZXNbZGV2LT5kZXZub10pCiAJCQlkZXYtPmNsYXNzID0gY2xhc3Nlc1tkZXYtPmRldm5vXTsKIApAQCAtNzc2NCw2ICs3ODEyLDcgQEAKIEVYUE9SVF9TWU1CT0xfR1BMKGF0YV9ub29wX2Rldl9zZWxlY3QpOwogRVhQT1JUX1NZTUJPTF9HUEwoYXRhX3N0ZF9kZXZfc2VsZWN0KTsKIEVYUE9SVF9TWU1CT0xfR1BMKHNhdGFfcHJpbnRfbGlua19zdGF0dXMpOworRVhQT1JUX1NZTUJPTF9HUEwoYXRhcGlfY21kX3R5cGUpOwogRVhQT1JUX1NZTUJPTF9HUEwoYXRhX3RmX3RvX2Zpcyk7CiBFWFBPUlRfU1lNQk9MX0dQTChhdGFfdGZfZnJvbV9maXMpOwogRVhQT1JUX1NZTUJPTF9HUEwoYXRhX3BhY2tfeGZlcm1hc2spOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdGEvbGliYXRhLWVoLmMgYi9kcml2ZXJzL2F0YS9saWJhdGEtZWguYwppbmRleCA2ODEyNTJmLi5hNTgzMDMyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0YS9saWJhdGEtZWguYworKysgYi9kcml2ZXJzL2F0YS9saWJhdGEtZWguYwpAQCAtMjc0OCw3ICsyNzQ4LDcgQEAKIAkJCWVoYy0+aS5mbGFncyAmPSB+QVRBX0VISV9TRVRNT0RFOwogCQl9CiAKLQkJaWYgKGVoYy0+aS5hY3Rpb24gJiBBVEFfRUhJX0xQTSkKKwkJaWYgKGVoYy0+aS5hY3Rpb24gJiBBVEFfRUhfTFBNKQogCQkJYXRhX2xpbmtfZm9yX2VhY2hfZGV2KGRldiwgbGluaykKIAkJCQlhdGFfZGV2X2VuYWJsZV9wbShkZXYsIGFwLT5wbV9wb2xpY3kpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0YS9saWJhdGEtc2NzaS5jIGIvZHJpdmVycy9hdGEvbGliYXRhLXNjc2kuYwppbmRleCA4ZjBlOGYyLi4xNTc5NTM5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0YS9saWJhdGEtc2NzaS5jCisrKyBiL2RyaXZlcnMvYXRhL2xpYmF0YS1zY3NpLmMKQEAgLTUyNyw2ICs1MjcsMTQgQEAKIAlyZXR1cm4gcWM7CiB9CiAKK3N0YXRpYyB2b2lkIGF0YV9xY19zZXRfcGNfbmJ5dGVzKHN0cnVjdCBhdGFfcXVldWVkX2NtZCAqcWMpCit7CisJc3RydWN0IHNjc2lfY21uZCAqc2NtZCA9IHFjLT5zY3NpY21kOworCisJcWMtPmV4dHJhYnl0ZXMgPSBzY21kLT5yZXF1ZXN0LT5leHRyYV9sZW47CisJcWMtPm5ieXRlcyA9IHNjc2lfYnVmZmxlbihzY21kKSArIHFjLT5leHRyYWJ5dGVzOworfQorCiAvKioKICAqCWF0YV9kdW1wX3N0YXR1cyAtIHVzZXIgZnJpZW5kbHkgZGlzcGxheSBvZiBlcnJvciBpbmZvCiAgKglAaWQ6IGlkIG9mIHRoZSBwb3J0IGluIHF1ZXN0aW9uCkBAIC0yNTM5LDcgKzI1NDcsNyBAQAogCX0KIAogCXFjLT50Zi5jb21tYW5kID0gQVRBX0NNRF9QQUNLRVQ7Ci0JcWMtPm5ieXRlcyA9IHNjc2lfYnVmZmxlbihzY21kKSArIHNjbWQtPnJlcXVlc3QtPmV4dHJhX2xlbjsKKwlhdGFfcWNfc2V0X3BjX25ieXRlcyhxYyk7CiAKIAkvKiBjaGVjayB3aGV0aGVyIEFUQVBJIERNQSBpcyBzYWZlICovCiAJaWYgKCF1c2luZ19waW8gJiYgYXRhX2NoZWNrX2F0YXBpX2RtYShxYykpCkBAIC0yNTUwLDcgKzI1NTgsNyBAQAogCSAqIHdhbnQgdG8gc2V0IGl0IHByb3Blcmx5LCBhbmQgZm9yIERNQSB3aGVyZSBpdCBpcwogCSAqIGVmZmVjdGl2ZWx5IG1lYW5pbmdsZXNzLgogCSAqLwotCW5ieXRlcyA9IG1pbihzY21kLT5yZXF1ZXN0LT5kYXRhX2xlbiwgKHVuc2lnbmVkIGludCk2MyAqIDEwMjQpOworCW5ieXRlcyA9IG1pbihhdGFfcWNfcmF3X25ieXRlcyhxYyksICh1bnNpZ25lZCBpbnQpNjMgKiAxMDI0KTsKIAogCS8qIE1vc3QgQVRBUEkgZGV2aWNlcyB3aGljaCBob25vciB0cmFuc2ZlciBjaHVuayBzaXplIGRvbid0CiAJICogYmVoYXZlIGFjY29yZGluZyB0byB0aGUgc3BlYyB3aGVuIG9kZCBjaHVuayBzaXplIHdoaWNoCkBAIC0yODc2LDcgKzI4ODQsNyBAQAogCSAqIFRPRE86IGZpbmQgb3V0IGlmIHdlIG5lZWQgdG8gZG8gbW9yZSBoZXJlIHRvCiAJICogICAgICAgY292ZXIgc2NhdHRlci9nYXRoZXIgY2FzZS4KIAkgKi8KLQlxYy0+bmJ5dGVzID0gc2NzaV9idWZmbGVuKHNjbWQpICsgc2NtZC0+cmVxdWVzdC0+ZXh0cmFfbGVuOworCWF0YV9xY19zZXRfcGNfbmJ5dGVzKHFjKTsKIAogCS8qIHJlcXVlc3QgcmVzdWx0IFRGIGFuZCBiZSBxdWlldCBhYm91dCBkZXZpY2UgZXJyb3IgKi8KIAlxYy0+ZmxhZ3MgfD0gQVRBX1FDRkxBR19SRVNVTFRfVEYgfCBBVEFfUUNGTEFHX1FVSUVUOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdGEvcGF0YV9hbGkuYyBiL2RyaXZlcnMvYXRhL3BhdGFfYWxpLmMKaW5kZXggN2U2OGVkZi4uNTExYTgzMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEvcGF0YV9hbGkuYworKysgYi9kcml2ZXJzL2F0YS9wYXRhX2FsaS5jCkBAIC0zNiw2ICszNiwxMCBAQAogI2RlZmluZSBEUlZfTkFNRSAicGF0YV9hbGkiCiAjZGVmaW5lIERSVl9WRVJTSU9OICIwLjcuNSIKIAorc3RhdGljIGludCBhbGlfYXRhcGlfZG1hID0gMDsKK21vZHVsZV9wYXJhbV9uYW1lZChhdGFwaV9kbWEsIGFsaV9hdGFwaV9kbWEsIGludCwgMDY0NCk7CitNT0RVTEVfUEFSTV9ERVNDKGF0YXBpX2RtYSwgIkVuYWJsZSBBVEFQSSBETUEgKDA9ZGlzYWJsZSwgMT1lbmFibGUpIik7CisKIC8qCiAgKglDYWJsZSBzcGVjaWFsIGNhc2VzCiAgKi8KQEAgLTI3MCw2ICsyNzQsMjcgQEAKIH0KIAogLyoqCisgKglhbGlfd2Fybl9hdGFwaV9kbWEJLQlXYXJuIGFib3V0IEFUQVBJIERNQSBkaXNhYmxlbWVudAorICoJQGFkZXY6IERldmljZQorICoKKyAqCVdoaW5lIGFib3V0IEFUQVBJIERNQSBkaXNhYmxlbWVudCBpZiBAYWRldiBpcyBhbiBBVEFQSSBkZXZpY2UuCisgKglDYW4gYmUgdXNlZCBhcyAtPmRldl9jb25maWcuCisgKi8KKworc3RhdGljIHZvaWQgYWxpX3dhcm5fYXRhcGlfZG1hKHN0cnVjdCBhdGFfZGV2aWNlICphZGV2KQoreworCXN0cnVjdCBhdGFfZWhfY29udGV4dCAqZWhjID0gJmFkZXYtPmxpbmstPmVoX2NvbnRleHQ7CisJaW50IHByaW50X2luZm8gPSBlaGMtPmkuZmxhZ3MgJiBBVEFfRUhJX1BSSU5USU5GTzsKKworCWlmIChwcmludF9pbmZvICYmIGFkZXYtPmNsYXNzID09IEFUQV9ERVZfQVRBUEkgJiYgIWFsaV9hdGFwaV9kbWEpIHsKKwkJYXRhX2Rldl9wcmludGsoYWRldiwgS0VSTl9XQVJOSU5HLAorCQkJICAgICAgICJXQVJOSU5HOiBBVEFQSSBETUEgZGlzYWJsZWQgZm9yIHJlbGlhYmxpdHkgaXNzdWVzLiAgSXQgY2FuIGJlIGVuYWJsZWRcbiIpOworCQlhdGFfZGV2X3ByaW50ayhhZGV2LCBLRVJOX1dBUk5JTkcsCisJCQkgICAgICAgIldBUk5JTkc6IHZpYSBwYXRhX2FsaS5hdGFwaV9kbWEgbW9kcGFyYW0gb3IgY29ycmVzcG9uZGluZyBzeXNmcyBub2RlLlxuIik7CisJfQorfQorCisvKioKICAqCWFsaV9sb2NrX3NlY3RvcnMJLQlLZWVwIG9sZGVyIGRldmljZXMgdG8gMjU1IHNlY3RvciBtb2RlCiAgKglAYWRldjogRGV2aWNlCiAgKgpAQCAtMjgzLDYgKzMwOCw3IEBACiBzdGF0aWMgdm9pZCBhbGlfbG9ja19zZWN0b3JzKHN0cnVjdCBhdGFfZGV2aWNlICphZGV2KQogewogCWFkZXYtPm1heF9zZWN0b3JzID0gMjU1OworCWFsaV93YXJuX2F0YXBpX2RtYShhZGV2KTsKIH0KIAogLyoqCkBAIC0yOTQsOCArMzIwLDIwIEBACiAKIHN0YXRpYyBpbnQgYWxpX2NoZWNrX2F0YXBpX2RtYShzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjKQogeworCWlmICghYWxpX2F0YXBpX2RtYSkgeworCQkvKiBGSVhNRTogcGF0YV9hbGkgY2FuJ3QgZG8gQVRBUEkgRE1BIHJlbGlhYmx5IGJ1dCB0aGUKKwkJICogSURFIGFsaW0xNXgzIGRyaXZlciBjYW4uICBJIHRyaWVkIGxvdHMgb2YgdGhpbmdzCisJCSAqIGJ1dCBjb3VsZG4ndCBmaW5kIHdoYXQgdGhlIGFjdHVhbCBkaWZmZXJlbmNlIHdhcy4KKwkJICogSWYgeW91IGdvdCBhbiBpZGVhLCBwbGVhc2Ugd3JpdGUgaXQgdG8KKwkJICogbGludXgtaWRlQHZnZXIua2VybmVsLm9yZyBhbmQgY2MgaHRlanVuQGdtYWlsLmNvbS4KKwkJICoKKwkJICogRGlzYWJsZSBBVEFQSSBETUEgZm9yIG5vdy4KKwkJICovCisJCXJldHVybiAtRU9QTk9UU1VQUDsKKwl9CisKIAkvKiBJZiBpdHMgbm90IGEgbWVkaWEgY29tbWFuZCwgaXRzIG5vdCB3b3J0aCBpdCAqLwotCWlmIChxYy0+bmJ5dGVzIDwgMjA0OCkKKwlpZiAoYXRhcGlfY21kX3R5cGUocWMtPmNkYlswXSkgPT0gQVRBUElfTUlTQykKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCXJldHVybiAwOwogfQpAQCAtMzU5LDYgKzM5Nyw3IEBACiAKIAkudGZfbG9hZAk9IGF0YV90Zl9sb2FkLAogCS50Zl9yZWFkCT0gYXRhX3RmX3JlYWQsCisJLmNoZWNrX2F0YXBpX2RtYSA9IGFsaV9jaGVja19hdGFwaV9kbWEsCiAJLmNoZWNrX3N0YXR1cyAJPSBhdGFfY2hlY2tfc3RhdHVzLAogCS5leGVjX2NvbW1hbmQJPSBhdGFfZXhlY19jb21tYW5kLAogCS5kZXZfc2VsZWN0IAk9IGF0YV9zdGRfZGV2X3NlbGVjdCwKQEAgLTQzOCw2ICs0NzcsNyBAQAogCS5jaGVja19zdGF0dXMgCT0gYXRhX2NoZWNrX3N0YXR1cywKIAkuZXhlY19jb21tYW5kCT0gYXRhX2V4ZWNfY29tbWFuZCwKIAkuZGV2X3NlbGVjdCAJPSBhdGFfc3RkX2Rldl9zZWxlY3QsCisJLmRldl9jb25maWcJPSBhbGlfd2Fybl9hdGFwaV9kbWEsCiAKIAkuZnJlZXplCQk9IGF0YV9ibWRtYV9mcmVlemUsCiAJLnRoYXcJCT0gYXRhX2JtZG1hX3RoYXcsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0YS9wYXRhX2l0ODIxeC5jIGIvZHJpdmVycy9hdGEvcGF0YV9pdDgyMXguYwppbmRleCAxMDlkZGQ0Li4yNTc5NTFkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0YS9wYXRhX2l0ODIxeC5jCisrKyBiL2RyaXZlcnMvYXRhL3BhdGFfaXQ4MjF4LmMKQEAgLTU2NCw3ICs1NjQsNyBAQAogCXN0cnVjdCBpdDgyMXhfZGV2ICppdGRldiA9IGFwLT5wcml2YXRlX2RhdGE7CiAKIAkvKiBPbmx5IHVzZSBkbWEgZm9yIHRyYW5zZmVycyB0by9mcm9tIHRoZSBtZWRpYS4gKi8KLQlpZiAocWMtPm5ieXRlcyA8IDIwNDgpCisJaWYgKGF0YV9xY19yYXdfbmJ5dGVzKHFjKSA8IDIwNDgpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAogCS8qIE5vIEFUQVBJIERNQSBpbiBzbWFydCBtb2RlICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0YS9wYXRhX3NpbDY4MC5jIGIvZHJpdmVycy9hdGEvcGF0YV9zaWw2ODAuYwppbmRleCA1MDMyNDVhLi43YzViMmRkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0YS9wYXRhX3NpbDY4MC5jCisrKyBiL2RyaXZlcnMvYXRhL3BhdGFfc2lsNjgwLmMKQEAgLTI2OSw3ICsyNjksMTEgQEAKIAlkZXZfZGJnKCZwZGV2LT5kZXYsICJzaWw2ODA6IEJBNV9FTiA9ICVkIGNsb2NrID0gJTAyWFxuIiwKIAkJdG1wYnl0ZSAmIDEsIHRtcGJ5dGUgJiAweDMwKTsKIAotCSp0cnlfbW1pbyA9ICh0bXBieXRlICYgMSkgfHwgcGNpX3Jlc291cmNlX3N0YXJ0KHBkZXYsIDUpOworCSp0cnlfbW1pbyA9IDA7CisjaWZkZWYgQ09ORklHX1BQQ19NRVJHRQorCWlmIChtYWNoaW5lX2lzKGNlbGwpKQorCQkqdHJ5X21taW8gPSAodG1wYnl0ZSAmIDEpIHx8IHBjaV9yZXNvdXJjZV9zdGFydChwZGV2LCA1KTsKKyNlbmRpZgogCiAJc3dpdGNoKHRtcGJ5dGUgJiAweDMwKSB7CiAJCWNhc2UgMHgwMDoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRhL3NhdGFfZnNsLmMgYi9kcml2ZXJzL2F0YS9zYXRhX2ZzbC5jCmluZGV4IDA3NzkxYTcuLjlkMWUzY2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRhL3NhdGFfZnNsLmMKKysrIGIvZHJpdmVycy9hdGEvc2F0YV9mc2wuYwpAQCAtMTI1Niw3ICsxMjU2LDYgQEAKIAl2b2lkIF9faW9tZW0gKnNzcl9iYXNlID0gTlVMTDsKIAl2b2lkIF9faW9tZW0gKmNzcl9iYXNlID0gTlVMTDsKIAlzdHJ1Y3Qgc2F0YV9mc2xfaG9zdF9wcml2ICpob3N0X3ByaXYgPSBOVUxMOwotCXN0cnVjdCByZXNvdXJjZSAqcjsKIAlpbnQgaXJxOwogCXN0cnVjdCBhdGFfaG9zdCAqaG9zdDsKIApAQCAtMTI2Niw4ICsxMjY1LDYgQEAKIAlkZXZfcHJpbnRrKEtFUk5fSU5GTywgJm9mZGV2LT5kZXYsCiAJCSAgICJTYXRhIEZTTCBQbGF0Zm9ybS9DU0IgRHJpdmVyIGluaXRcbiIpOwogCi0JciA9IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCByZXNvdXJjZSksIEdGUF9LRVJORUwpOwotCiAJaGNyX2Jhc2UgPSBvZl9pb21hcChvZmRldi0+bm9kZSwgMCk7CiAJaWYgKCFoY3JfYmFzZSkKIAkJZ290byBlcnJvcl9leGl0X3dpdGhfY2xlYW51cDsKQEAgLTEzNDgsMTAgKzEzNDUsNyBAQAogCiBzdGF0aWMgc3RydWN0IG9mX2RldmljZV9pZCBmc2xfc2F0YV9tYXRjaFtdID0gewogCXsKLQkJLmNvbXBhdGlibGUgPSAiZnNsLG1wYzgzMTUtc2F0YSIsCi0JfSwKLQl7Ci0JCS5jb21wYXRpYmxlID0gImZzbCxtcGM4Mzc5LXNhdGEiLAorCQkuY29tcGF0aWJsZSA9ICJmc2wscHEtc2F0YSIsCiAJfSwKIAl7fSwKIH07CmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0YS9zYXRhX3Byb21pc2UuYyBiL2RyaXZlcnMvYXRhL3NhdGFfcHJvbWlzZS5jCmluZGV4IGYyNTFhNWYuLjExYzFhZmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRhL3NhdGFfcHJvbWlzZS5jCisrKyBiL2RyaXZlcnMvYXRhL3NhdGFfcHJvbWlzZS5jCkBAIC00Niw3ICs0Niw3IEBACiAjaW5jbHVkZSAic2F0YV9wcm9taXNlLmgiCiAKICNkZWZpbmUgRFJWX05BTUUJInNhdGFfcHJvbWlzZSIKLSNkZWZpbmUgRFJWX1ZFUlNJT04JIjIuMTEiCisjZGVmaW5lIERSVl9WRVJTSU9OCSIyLjEyIgogCiBlbnVtIHsKIAlQRENfTUFYX1BPUlRTCQk9IDQsCkBAIC0xNDUsNyArMTQ1LDkgQEAKIHN0YXRpYyB2b2lkIHBkY19pcnFfY2xlYXIoc3RydWN0IGF0YV9wb3J0ICphcCk7CiBzdGF0aWMgdW5zaWduZWQgaW50IHBkY19xY19pc3N1ZV9wcm90KHN0cnVjdCBhdGFfcXVldWVkX2NtZCAqcWMpOwogc3RhdGljIHZvaWQgcGRjX2ZyZWV6ZShzdHJ1Y3QgYXRhX3BvcnQgKmFwKTsKK3N0YXRpYyB2b2lkIHBkY19zYXRhX2ZyZWV6ZShzdHJ1Y3QgYXRhX3BvcnQgKmFwKTsKIHN0YXRpYyB2b2lkIHBkY190aGF3KHN0cnVjdCBhdGFfcG9ydCAqYXApOworc3RhdGljIHZvaWQgcGRjX3NhdGFfdGhhdyhzdHJ1Y3QgYXRhX3BvcnQgKmFwKTsKIHN0YXRpYyB2b2lkIHBkY19wYXRhX2Vycm9yX2hhbmRsZXIoc3RydWN0IGF0YV9wb3J0ICphcCk7CiBzdGF0aWMgdm9pZCBwZGNfc2F0YV9lcnJvcl9oYW5kbGVyKHN0cnVjdCBhdGFfcG9ydCAqYXApOwogc3RhdGljIHZvaWQgcGRjX3Bvc3RfaW50ZXJuYWxfY21kKHN0cnVjdCBhdGFfcXVldWVkX2NtZCAqcWMpOwpAQCAtMTgwLDggKzE4Miw4IEBACiAKIAkucWNfcHJlcAkJPSBwZGNfcWNfcHJlcCwKIAkucWNfaXNzdWUJCT0gcGRjX3FjX2lzc3VlX3Byb3QsCi0JLmZyZWV6ZQkJCT0gcGRjX2ZyZWV6ZSwKLQkudGhhdwkJCT0gcGRjX3RoYXcsCisJLmZyZWV6ZQkJCT0gcGRjX3NhdGFfZnJlZXplLAorCS50aGF3CQkJPSBwZGNfc2F0YV90aGF3LAogCS5lcnJvcl9oYW5kbGVyCQk9IHBkY19zYXRhX2Vycm9yX2hhbmRsZXIsCiAJLnBvc3RfaW50ZXJuYWxfY21kCT0gcGRjX3Bvc3RfaW50ZXJuYWxfY21kLAogCS5jYWJsZV9kZXRlY3QJCT0gcGRjX3NhdGFfY2FibGVfZGV0ZWN0LApAQCAtMjA1LDggKzIwNyw4IEBACiAKIAkucWNfcHJlcAkJPSBwZGNfcWNfcHJlcCwKIAkucWNfaXNzdWUJCT0gcGRjX3FjX2lzc3VlX3Byb3QsCi0JLmZyZWV6ZQkJCT0gcGRjX2ZyZWV6ZSwKLQkudGhhdwkJCT0gcGRjX3RoYXcsCisJLmZyZWV6ZQkJCT0gcGRjX3NhdGFfZnJlZXplLAorCS50aGF3CQkJPSBwZGNfc2F0YV90aGF3LAogCS5lcnJvcl9oYW5kbGVyCQk9IHBkY19zYXRhX2Vycm9yX2hhbmRsZXIsCiAJLnBvc3RfaW50ZXJuYWxfY21kCT0gcGRjX3Bvc3RfaW50ZXJuYWxfY21kLAogCS5jYWJsZV9kZXRlY3QJCT0gcGRjX3NhdGFfY2FibGVfZGV0ZWN0LApAQCAtNjMxLDYgKzYzMyw0MSBAQAogCX0KIH0KIAorc3RhdGljIGludCBwZGNfaXNfc2F0YWlpX3R4NCh1bnNpZ25lZCBsb25nIGZsYWdzKQoreworCWNvbnN0IHVuc2lnbmVkIGxvbmcgbWFzayA9IFBEQ19GTEFHX0dFTl9JSSB8IFBEQ19GTEFHXzRfUE9SVFM7CisJcmV0dXJuIChmbGFncyAmIG1hc2spID09IG1hc2s7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBpbnQgcGRjX3BvcnRfbm9fdG9fYXRhX25vKHVuc2lnbmVkIGludCBwb3J0X25vLAorCQkJCQkgIGludCBpc19zYXRhaWlfdHg0KQoreworCXN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNhdGFpaV90eDRfcG9ydF9yZW1hcFs0XSA9IHsgMywgMSwgMCwgMn07CisJcmV0dXJuIGlzX3NhdGFpaV90eDQgPyBzYXRhaWlfdHg0X3BvcnRfcmVtYXBbcG9ydF9ub10gOiBwb3J0X25vOworfQorCitzdGF0aWMgdW5zaWduZWQgaW50IHBkY19zYXRhX25yX3BvcnRzKGNvbnN0IHN0cnVjdCBhdGFfcG9ydCAqYXApCit7CisJcmV0dXJuIChhcC0+ZmxhZ3MgJiBQRENfRkxBR180X1BPUlRTKSA/IDQgOiAyOworfQorCitzdGF0aWMgdW5zaWduZWQgaW50IHBkY19zYXRhX2F0YV9wb3J0X3RvX2F0YV9ubyhjb25zdCBzdHJ1Y3QgYXRhX3BvcnQgKmFwKQoreworCWNvbnN0IHN0cnVjdCBhdGFfaG9zdCAqaG9zdCA9IGFwLT5ob3N0OworCXVuc2lnbmVkIGludCBucl9wb3J0cyA9IHBkY19zYXRhX25yX3BvcnRzKGFwKTsKKwl1bnNpZ25lZCBpbnQgaTsKKworCWZvcihpID0gMDsgaSA8IG5yX3BvcnRzICYmIGhvc3QtPnBvcnRzW2ldICE9IGFwOyArK2kpCisJCTsKKwlCVUdfT04oaSA+PSBucl9wb3J0cyk7CisJcmV0dXJuIHBkY19wb3J0X25vX3RvX2F0YV9ubyhpLCBwZGNfaXNfc2F0YWlpX3R4NChhcC0+ZmxhZ3MpKTsKK30KKworc3RhdGljIHVuc2lnbmVkIGludCBwZGNfc2F0YV9ob3RwbHVnX29mZnNldChjb25zdCBzdHJ1Y3QgYXRhX3BvcnQgKmFwKQoreworCXJldHVybiAoYXAtPmZsYWdzICYgUERDX0ZMQUdfR0VOX0lJKSA/IFBEQzJfU0FUQV9QTFVHX0NTUiA6IFBEQ19TQVRBX1BMVUdfQ1NSOworfQorCiBzdGF0aWMgdm9pZCBwZGNfZnJlZXplKHN0cnVjdCBhdGFfcG9ydCAqYXApCiB7CiAJdm9pZCBfX2lvbWVtICptbWlvID0gYXAtPmlvYWRkci5jbWRfYWRkcjsKQEAgLTY0Myw2ICs2ODAsMjkgQEAKIAlyZWFkbChtbWlvICsgUERDX0NUTFNUQVQpOyAvKiBmbHVzaCAqLwogfQogCitzdGF0aWMgdm9pZCBwZGNfc2F0YV9mcmVlemUoc3RydWN0IGF0YV9wb3J0ICphcCkKK3sKKwlzdHJ1Y3QgYXRhX2hvc3QgKmhvc3QgPSBhcC0+aG9zdDsKKwl2b2lkIF9faW9tZW0gKmhvc3RfbW1pbyA9IGhvc3QtPmlvbWFwW1BEQ19NTUlPX0JBUl07CisJdW5zaWduZWQgaW50IGhvdHBsdWdfb2Zmc2V0ID0gcGRjX3NhdGFfaG90cGx1Z19vZmZzZXQoYXApOworCXVuc2lnbmVkIGludCBhdGFfbm8gPSBwZGNfc2F0YV9hdGFfcG9ydF90b19hdGFfbm8oYXApOworCXUzMiBob3RwbHVnX3N0YXR1czsKKworCS8qIERpc2FibGUgaG90cGx1ZyBldmVudHMgb24gdGhpcyBwb3J0LgorCSAqCisJICogTG9ja2luZzoKKwkgKiAxKSBob3RwbHVnIHJlZ2lzdGVyIGFjY2Vzc2VzIG11c3QgYmUgc2VyaWFsaXNlZCB2aWEgaG9zdC0+bG9jaworCSAqIDIpIGFwLT5sb2NrID09ICZhcC0+aG9zdC0+bG9jaworCSAqIDMpIC0+ZnJlZXplKCkgYW5kIC0+dGhhdygpIGFyZSBjYWxsZWQgd2l0aCBhcC0+bG9jayBoZWxkCisJICovCisJaG90cGx1Z19zdGF0dXMgPSByZWFkbChob3N0X21taW8gKyBob3RwbHVnX29mZnNldCk7CisJaG90cGx1Z19zdGF0dXMgfD0gMHgxMSA8PCAoYXRhX25vICsgMTYpOworCXdyaXRlbChob3RwbHVnX3N0YXR1cywgaG9zdF9tbWlvICsgaG90cGx1Z19vZmZzZXQpOworCXJlYWRsKGhvc3RfbW1pbyArIGhvdHBsdWdfb2Zmc2V0KTsgLyogZmx1c2ggKi8KKworCXBkY19mcmVlemUoYXApOworfQorCiBzdGF0aWMgdm9pZCBwZGNfdGhhdyhzdHJ1Y3QgYXRhX3BvcnQgKmFwKQogewogCXZvaWQgX19pb21lbSAqbW1pbyA9IGFwLT5pb2FkZHIuY21kX2FkZHI7CkBAIC02NTgsNiArNzE4LDI2IEBACiAJcmVhZGwobW1pbyArIFBEQ19DVExTVEFUKTsgLyogZmx1c2ggKi8KIH0KIAorc3RhdGljIHZvaWQgcGRjX3NhdGFfdGhhdyhzdHJ1Y3QgYXRhX3BvcnQgKmFwKQoreworCXN0cnVjdCBhdGFfaG9zdCAqaG9zdCA9IGFwLT5ob3N0OworCXZvaWQgX19pb21lbSAqaG9zdF9tbWlvID0gaG9zdC0+aW9tYXBbUERDX01NSU9fQkFSXTsKKwl1bnNpZ25lZCBpbnQgaG90cGx1Z19vZmZzZXQgPSBwZGNfc2F0YV9ob3RwbHVnX29mZnNldChhcCk7CisJdW5zaWduZWQgaW50IGF0YV9ubyA9IHBkY19zYXRhX2F0YV9wb3J0X3RvX2F0YV9ubyhhcCk7CisJdTMyIGhvdHBsdWdfc3RhdHVzOworCisJcGRjX3RoYXcoYXApOworCisJLyogRW5hYmxlIGhvdHBsdWcgZXZlbnRzIG9uIHRoaXMgcG9ydC4KKwkgKiBMb2NraW5nOiBzZWUgcGRjX3NhdGFfZnJlZXplKCkuCisJICovCisJaG90cGx1Z19zdGF0dXMgPSByZWFkbChob3N0X21taW8gKyBob3RwbHVnX29mZnNldCk7CisJaG90cGx1Z19zdGF0dXMgfD0gMHgxMSA8PCBhdGFfbm87CisJaG90cGx1Z19zdGF0dXMgJj0gfigweDExIDw8IChhdGFfbm8gKyAxNikpOworCXdyaXRlbChob3RwbHVnX3N0YXR1cywgaG9zdF9tbWlvICsgaG90cGx1Z19vZmZzZXQpOworCXJlYWRsKGhvc3RfbW1pbyArIGhvdHBsdWdfb2Zmc2V0KTsgLyogZmx1c2ggKi8KK30KKwogc3RhdGljIHZvaWQgcGRjX2NvbW1vbl9lcnJvcl9oYW5kbGVyKHN0cnVjdCBhdGFfcG9ydCAqYXAsIGF0YV9yZXNldF9mbl90IGhhcmRyZXNldCkKIHsKIAlpZiAoIShhcC0+cGZsYWdzICYgQVRBX1BGTEFHX0ZST1pFTikpCkBAIC03NjUsMTkgKzg0NSw2IEBACiAJcmVhZGwobW1pbyArIFBEQ19JTlRfU0VRTUFTSyk7CiB9CiAKLXN0YXRpYyBpbnQgcGRjX2lzX3NhdGFpaV90eDQodW5zaWduZWQgbG9uZyBmbGFncykKLXsKLQljb25zdCB1bnNpZ25lZCBsb25nIG1hc2sgPSBQRENfRkxBR19HRU5fSUkgfCBQRENfRkxBR180X1BPUlRTOwotCXJldHVybiAoZmxhZ3MgJiBtYXNrKSA9PSBtYXNrOwotfQotCi1zdGF0aWMgdW5zaWduZWQgaW50IHBkY19wb3J0X25vX3RvX2F0YV9ubyh1bnNpZ25lZCBpbnQgcG9ydF9ubywKLQkJCQkJICBpbnQgaXNfc2F0YWlpX3R4NCkKLXsKLQlzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzYXRhaWlfdHg0X3BvcnRfcmVtYXBbNF0gPSB7IDMsIDEsIDAsIDJ9OwotCXJldHVybiBpc19zYXRhaWlfdHg0ID8gc2F0YWlpX3R4NF9wb3J0X3JlbWFwW3BvcnRfbm9dIDogcG9ydF9ubzsKLX0KLQogc3RhdGljIGlycXJldHVybl90IHBkY19pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2luc3RhbmNlKQogewogCXN0cnVjdCBhdGFfaG9zdCAqaG9zdCA9IGRldl9pbnN0YW5jZTsKQEAgLTc5OSw2ICs4NjYsOCBAQAogCiAJbW1pb19iYXNlID0gaG9zdC0+aW9tYXBbUERDX01NSU9fQkFSXTsKIAorCXNwaW5fbG9jaygmaG9zdC0+bG9jayk7CisKIAkvKiByZWFkIGFuZCBjbGVhciBob3RwbHVnIGZsYWdzIGZvciBhbGwgcG9ydHMgKi8KIAlpZiAoaG9zdC0+cG9ydHNbMF0tPmZsYWdzICYgUERDX0ZMQUdfR0VOX0lJKQogCQlob3RwbHVnX29mZnNldCA9IFBEQzJfU0FUQV9QTFVHX0NTUjsKQEAgLTgxNCwxMSArODgzLDkgQEAKIAogCWlmIChtYXNrID09IDB4ZmZmZmZmZmYgJiYgaG90cGx1Z19zdGF0dXMgPT0gMCkgewogCQlWUFJJTlRLKCJRVUlDSyBFWElUIDJcbiIpOwotCQlyZXR1cm4gSVJRX05PTkU7CisJCWdvdG8gZG9uZV9pcnE7CiAJfQogCi0Jc3Bpbl9sb2NrKCZob3N0LT5sb2NrKTsKLQogCW1hc2sgJj0gMHhmZmZmOwkJLyogb25seSAxNiB0YWdzIHBvc3NpYmxlICovCiAJaWYgKG1hc2sgPT0gMCAmJiBob3RwbHVnX3N0YXR1cyA9PSAwKSB7CiAJCVZQUklOVEsoIlFVSUNLIEVYSVQgM1xuIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0YS9zYXRhX3N2dy5jIGIvZHJpdmVycy9hdGEvc2F0YV9zdncuYwppbmRleCA4NDBkMWM0Li4wMTllMzY3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0YS9zYXRhX3N2dy5jCisrKyBiL2RyaXZlcnMvYXRhL3NhdGFfc3Z3LmMKQEAgLTUzMSw4ICs1MzEsOCBAQAogICogKi8KIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBrMl9zYXRhX3BjaV90YmxbXSA9IHsKIAl7IFBDSV9WREVWSUNFKFNFUlZFUldPUktTLCAweDAyNDApLCBjaGlwX3N2dzQgfSwKLQl7IFBDSV9WREVWSUNFKFNFUlZFUldPUktTLCAweDAyNDEpLCBjaGlwX3N2dzQgfSwKLQl7IFBDSV9WREVWSUNFKFNFUlZFUldPUktTLCAweDAyNDIpLCBjaGlwX3N2dzggfSwKKwl7IFBDSV9WREVWSUNFKFNFUlZFUldPUktTLCAweDAyNDEpLCBjaGlwX3N2dzggfSwKKwl7IFBDSV9WREVWSUNFKFNFUlZFUldPUktTLCAweDAyNDIpLCBjaGlwX3N2dzQgfSwKIAl7IFBDSV9WREVWSUNFKFNFUlZFUldPUktTLCAweDAyNGEpLCBjaGlwX3N2dzQgfSwKIAl7IFBDSV9WREVWSUNFKFNFUlZFUldPUktTLCAweDAyNGIpLCBjaGlwX3N2dzQgfSwKIAl7IFBDSV9WREVWSUNFKFNFUlZFUldPUktTLCAweDA0MTApLCBjaGlwX3N2dzQyIH0sCmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0bS9maXJlc3RyZWFtLmMgYi9kcml2ZXJzL2F0bS9maXJlc3RyZWFtLmMKaW5kZXggYzY2MmQ2OC4uOTgwOTlmNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdG0vZmlyZXN0cmVhbS5jCisrKyBiL2RyaXZlcnMvYXRtL2ZpcmVzdHJlYW0uYwpAQCAtMzMxLDggKzMzMSw4IEBACiAjZGVmaW5lIEZTX0RFQlVHX1FTSVpFICAgMHgwMDAwMTAwMAogCiAKLSNkZWZpbmUgZnVuY19lbnRlcigpIGZzX2RwcmludGsgKEZTX0RFQlVHX0ZMT1csICJmczogZW50ZXIgJXNcbiIsIF9fRlVOQ1RJT05fXykKLSNkZWZpbmUgZnVuY19leGl0KCkgIGZzX2RwcmludGsgKEZTX0RFQlVHX0ZMT1csICJmczogZXhpdCAgJXNcbiIsIF9fRlVOQ1RJT05fXykKKyNkZWZpbmUgZnVuY19lbnRlcigpIGZzX2RwcmludGsoRlNfREVCVUdfRkxPVywgImZzOiBlbnRlciAlc1xuIiwgX19mdW5jX18pCisjZGVmaW5lIGZ1bmNfZXhpdCgpICBmc19kcHJpbnRrKEZTX0RFQlVHX0ZMT1csICJmczogZXhpdCAgJXNcbiIsIF9fZnVuY19fKQogCiAKIHN0YXRpYyBzdHJ1Y3QgZnNfZGV2ICpmc19ib2FyZHMgPSBOVUxMOwpAQCAtOTc4LDYgKzk3OCw3IEBACiAJCS8qIERvY3MgYXJlIHZhZ3VlIGFib3V0IHRoaXMgYXRtX2hkciBmaWVsZC4gQnkgdGhlIHdheSwgdGhlIEZTCiAJCSAqIGNoaXAgbWFrZXMgb2RkIGVycm9ycyBpZiBsb3dlciBiaXRzIGFyZSBzZXQuLi4uIC0tIFJFVyAqLwogCQl0Yy0+YXRtX2hkciA9ICAodnBpIDw8IDIwKSB8ICh2Y2kgPDwgNCk7IAorCQl0bWMwID0gMDsKIAkJewogCQkJaW50IHBjciA9IGF0bV9wY3JfZ29hbCAodHh0cCk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRtL2ZvcmUyMDBlLmMgYi9kcml2ZXJzL2F0bS9mb3JlMjAwZS5jCmluZGV4IGY5N2UwNTAuLjQzMjE4MWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRtL2ZvcmUyMDBlLmMKKysrIGIvZHJpdmVycy9hdG0vZm9yZTIwMGUuYwpAQCAtOTUsOCArOTUsOCBAQAogI2lmIDEKICNkZWZpbmUgQVNTRVJUKGV4cHIpICAgICBpZiAoIShleHByKSkgeyBcCiAJCQkgICAgIHByaW50ayhGT1JFMjAwRSAiYXNzZXJ0aW9uIGZhaWxlZCEgJXNbJWRdOiAlc1xuIiwgXAotCQkJCSAgICBfX0ZVTkNUSU9OX18sIF9fTElORV9fLCAjZXhwcik7IFwKLQkJCSAgICAgcGFuaWMoRk9SRTIwMEUgIiVzIiwgX19GVU5DVElPTl9fKTsgXAorCQkJCSAgICBfX2Z1bmNfXywgX19MSU5FX18sICNleHByKTsgXAorCQkJICAgICBwYW5pYyhGT1JFMjAwRSAiJXMiLCBfX2Z1bmNfXyk7IFwKIAkJCSB9CiAjZWxzZQogI2RlZmluZSBBU1NFUlQoZXhwcikgICAgIGRvIHt9IHdoaWxlICgwKQpAQCAtMTk4OCwxOSArMTk4OCwxOSBAQAogICAgIGlmIChmb3JlMjAwZV9nZXRzdGF0cyhmb3JlMjAwZSkgPCAwKQogCXJldHVybiAtRUlPOwogCi0gICAgdG1wLnNlY3Rpb25fYmlwID0gY3B1X3RvX2JlMzIoZm9yZTIwMGUtPnN0YXRzLT5vYzMuc2VjdGlvbl9iaXA4X2Vycm9ycyk7Ci0gICAgdG1wLmxpbmVfYmlwICAgID0gY3B1X3RvX2JlMzIoZm9yZTIwMGUtPnN0YXRzLT5vYzMubGluZV9iaXAyNF9lcnJvcnMpOwotICAgIHRtcC5wYXRoX2JpcCAgICA9IGNwdV90b19iZTMyKGZvcmUyMDBlLT5zdGF0cy0+b2MzLnBhdGhfYmlwOF9lcnJvcnMpOwotICAgIHRtcC5saW5lX2ZlYmUgICA9IGNwdV90b19iZTMyKGZvcmUyMDBlLT5zdGF0cy0+b2MzLmxpbmVfZmViZV9lcnJvcnMpOwotICAgIHRtcC5wYXRoX2ZlYmUgICA9IGNwdV90b19iZTMyKGZvcmUyMDBlLT5zdGF0cy0+b2MzLnBhdGhfZmViZV9lcnJvcnMpOwotICAgIHRtcC5jb3JyX2hjcyAgICA9IGNwdV90b19iZTMyKGZvcmUyMDBlLT5zdGF0cy0+b2MzLmNvcnJfaGNzX2Vycm9ycyk7Ci0gICAgdG1wLnVuY29ycl9oY3MgID0gY3B1X3RvX2JlMzIoZm9yZTIwMGUtPnN0YXRzLT5vYzMudWNvcnJfaGNzX2Vycm9ycyk7Ci0gICAgdG1wLnR4X2NlbGxzICAgID0gY3B1X3RvX2JlMzIoZm9yZTIwMGUtPnN0YXRzLT5hYWwwLmNlbGxzX3RyYW5zbWl0dGVkKSAgKwotCSAgICAgICAgICAgICAgY3B1X3RvX2JlMzIoZm9yZTIwMGUtPnN0YXRzLT5hYWwzNC5jZWxsc190cmFuc21pdHRlZCkgKwotCSAgICAgICAgICAgICAgY3B1X3RvX2JlMzIoZm9yZTIwMGUtPnN0YXRzLT5hYWw1LmNlbGxzX3RyYW5zbWl0dGVkKTsKLSAgICB0bXAucnhfY2VsbHMgICAgPSBjcHVfdG9fYmUzMihmb3JlMjAwZS0+c3RhdHMtPmFhbDAuY2VsbHNfcmVjZWl2ZWQpICAgICArCi0JICAgICAgICAgICAgICBjcHVfdG9fYmUzMihmb3JlMjAwZS0+c3RhdHMtPmFhbDM0LmNlbGxzX3JlY2VpdmVkKSAgICArCi0JICAgICAgICAgICAgICBjcHVfdG9fYmUzMihmb3JlMjAwZS0+c3RhdHMtPmFhbDUuY2VsbHNfcmVjZWl2ZWQpOworICAgIHRtcC5zZWN0aW9uX2JpcCA9IGJlMzJfdG9fY3B1KGZvcmUyMDBlLT5zdGF0cy0+b2MzLnNlY3Rpb25fYmlwOF9lcnJvcnMpOworICAgIHRtcC5saW5lX2JpcCAgICA9IGJlMzJfdG9fY3B1KGZvcmUyMDBlLT5zdGF0cy0+b2MzLmxpbmVfYmlwMjRfZXJyb3JzKTsKKyAgICB0bXAucGF0aF9iaXAgICAgPSBiZTMyX3RvX2NwdShmb3JlMjAwZS0+c3RhdHMtPm9jMy5wYXRoX2JpcDhfZXJyb3JzKTsKKyAgICB0bXAubGluZV9mZWJlICAgPSBiZTMyX3RvX2NwdShmb3JlMjAwZS0+c3RhdHMtPm9jMy5saW5lX2ZlYmVfZXJyb3JzKTsKKyAgICB0bXAucGF0aF9mZWJlICAgPSBiZTMyX3RvX2NwdShmb3JlMjAwZS0+c3RhdHMtPm9jMy5wYXRoX2ZlYmVfZXJyb3JzKTsKKyAgICB0bXAuY29ycl9oY3MgICAgPSBiZTMyX3RvX2NwdShmb3JlMjAwZS0+c3RhdHMtPm9jMy5jb3JyX2hjc19lcnJvcnMpOworICAgIHRtcC51bmNvcnJfaGNzICA9IGJlMzJfdG9fY3B1KGZvcmUyMDBlLT5zdGF0cy0+b2MzLnVjb3JyX2hjc19lcnJvcnMpOworICAgIHRtcC50eF9jZWxscyAgICA9IGJlMzJfdG9fY3B1KGZvcmUyMDBlLT5zdGF0cy0+YWFsMC5jZWxsc190cmFuc21pdHRlZCkgICsKKwkgICAgICAgICAgICAgIGJlMzJfdG9fY3B1KGZvcmUyMDBlLT5zdGF0cy0+YWFsMzQuY2VsbHNfdHJhbnNtaXR0ZWQpICsKKwkgICAgICAgICAgICAgIGJlMzJfdG9fY3B1KGZvcmUyMDBlLT5zdGF0cy0+YWFsNS5jZWxsc190cmFuc21pdHRlZCk7CisgICAgdG1wLnJ4X2NlbGxzICAgID0gYmUzMl90b19jcHUoZm9yZTIwMGUtPnN0YXRzLT5hYWwwLmNlbGxzX3JlY2VpdmVkKSAgICAgKworCSAgICAgICAgICAgICAgYmUzMl90b19jcHUoZm9yZTIwMGUtPnN0YXRzLT5hYWwzNC5jZWxsc19yZWNlaXZlZCkgICAgKworCSAgICAgICAgICAgICAgYmUzMl90b19jcHUoZm9yZTIwMGUtPnN0YXRzLT5hYWw1LmNlbGxzX3JlY2VpdmVkKTsKIAogICAgIGlmIChhcmcpCiAJcmV0dXJuIGNvcHlfdG9fdXNlcihhcmcsICZ0bXAsIHNpemVvZihzdHJ1Y3Qgc29uZXRfc3RhdHMpKSA/IC1FRkFVTFQgOiAwOwkKQEAgLTI1ODcsNyArMjU4Nyw3IEBACiBzdGF0aWMgaW50IF9fZGV2aW5pdAogZm9yZTIwMGVfbG9hZF9mdyhzdHJ1Y3QgZm9yZTIwMGUqIGZvcmUyMDBlKQogewotICAgIHUzMiogZndfZGF0YSA9ICh1MzIqKSBmb3JlMjAwZS0+YnVzLT5md19kYXRhOworICAgIF9fbGUzMiogZndfZGF0YSA9IChfX2xlMzIqKSBmb3JlMjAwZS0+YnVzLT5md19kYXRhOwogICAgIHUzMiAgZndfc2l6ZSA9ICh1MzIpICpmb3JlMjAwZS0+YnVzLT5md19zaXplIC8gc2l6ZW9mKHUzMik7CiAKICAgICBzdHJ1Y3QgZndfaGVhZGVyKiBmd19oZWFkZXIgPSAoc3RydWN0IGZ3X2hlYWRlciopIGZ3X2RhdGE7CkBAIC0yOTY1LDggKzI5NjUsOCBAQAogCQkgICAgICAgIiAgNGI1YjpcbiIKIAkJICAgICAgICIgICAgIGNyY19oZWFkZXJfZXJyb3JzOlx0XHQlMTB1XG4iCiAJCSAgICAgICAiICAgICBmcmFtaW5nX2Vycm9yczpcdFx0JTEwdVxuIiwKLQkJICAgICAgIGNwdV90b19iZTMyKGZvcmUyMDBlLT5zdGF0cy0+cGh5LmNyY19oZWFkZXJfZXJyb3JzKSwKLQkJICAgICAgIGNwdV90b19iZTMyKGZvcmUyMDBlLT5zdGF0cy0+cGh5LmZyYW1pbmdfZXJyb3JzKSk7CisJCSAgICAgICBiZTMyX3RvX2NwdShmb3JlMjAwZS0+c3RhdHMtPnBoeS5jcmNfaGVhZGVyX2Vycm9ycyksCisJCSAgICAgICBiZTMyX3RvX2NwdShmb3JlMjAwZS0+c3RhdHMtPnBoeS5mcmFtaW5nX2Vycm9ycykpOwogICAgIAogICAgIGlmICghbGVmdC0tKQogCXJldHVybiBzcHJpbnRmKHBhZ2UsICJcbiIKQEAgLTI5NzgsMTMgKzI5NzgsMTMgQEAKIAkJICAgICAgICIgICAgIHBhdGhfZmViZV9lcnJvcnM6XHRcdCUxMHVcbiIKIAkJICAgICAgICIgICAgIGNvcnJfaGNzX2Vycm9yczpcdFx0JTEwdVxuIgogCQkgICAgICAgIiAgICAgdWNvcnJfaGNzX2Vycm9yczpcdFx0JTEwdVxuIiwKLQkJICAgICAgIGNwdV90b19iZTMyKGZvcmUyMDBlLT5zdGF0cy0+b2MzLnNlY3Rpb25fYmlwOF9lcnJvcnMpLAotCQkgICAgICAgY3B1X3RvX2JlMzIoZm9yZTIwMGUtPnN0YXRzLT5vYzMucGF0aF9iaXA4X2Vycm9ycyksCi0JCSAgICAgICBjcHVfdG9fYmUzMihmb3JlMjAwZS0+c3RhdHMtPm9jMy5saW5lX2JpcDI0X2Vycm9ycyksCi0JCSAgICAgICBjcHVfdG9fYmUzMihmb3JlMjAwZS0+c3RhdHMtPm9jMy5saW5lX2ZlYmVfZXJyb3JzKSwKLQkJICAgICAgIGNwdV90b19iZTMyKGZvcmUyMDBlLT5zdGF0cy0+b2MzLnBhdGhfZmViZV9lcnJvcnMpLAotCQkgICAgICAgY3B1X3RvX2JlMzIoZm9yZTIwMGUtPnN0YXRzLT5vYzMuY29ycl9oY3NfZXJyb3JzKSwKLQkJICAgICAgIGNwdV90b19iZTMyKGZvcmUyMDBlLT5zdGF0cy0+b2MzLnVjb3JyX2hjc19lcnJvcnMpKTsKKwkJICAgICAgIGJlMzJfdG9fY3B1KGZvcmUyMDBlLT5zdGF0cy0+b2MzLnNlY3Rpb25fYmlwOF9lcnJvcnMpLAorCQkgICAgICAgYmUzMl90b19jcHUoZm9yZTIwMGUtPnN0YXRzLT5vYzMucGF0aF9iaXA4X2Vycm9ycyksCisJCSAgICAgICBiZTMyX3RvX2NwdShmb3JlMjAwZS0+c3RhdHMtPm9jMy5saW5lX2JpcDI0X2Vycm9ycyksCisJCSAgICAgICBiZTMyX3RvX2NwdShmb3JlMjAwZS0+c3RhdHMtPm9jMy5saW5lX2ZlYmVfZXJyb3JzKSwKKwkJICAgICAgIGJlMzJfdG9fY3B1KGZvcmUyMDBlLT5zdGF0cy0+b2MzLnBhdGhfZmViZV9lcnJvcnMpLAorCQkgICAgICAgYmUzMl90b19jcHUoZm9yZTIwMGUtPnN0YXRzLT5vYzMuY29ycl9oY3NfZXJyb3JzKSwKKwkJICAgICAgIGJlMzJfdG9fY3B1KGZvcmUyMDBlLT5zdGF0cy0+b2MzLnVjb3JyX2hjc19lcnJvcnMpKTsKIAogICAgIGlmICghbGVmdC0tKQogCXJldHVybiBzcHJpbnRmKHBhZ2UsIlxuIgpAQCAtMjk5NSwxMiArMjk5NSwxMiBAQAogCQkgICAgICAgIiAgICAgdnBpIG5vIGNvbm46XHRcdCUxMHVcbiIKIAkJICAgICAgICIgICAgIHZjaSBvdXQgb2YgcmFuZ2U6XHRcdCUxMHVcbiIKIAkJICAgICAgICIgICAgIHZjaSBubyBjb25uOlx0XHQlMTB1XG4iLAotCQkgICAgICAgY3B1X3RvX2JlMzIoZm9yZTIwMGUtPnN0YXRzLT5hdG0uY2VsbHNfdHJhbnNtaXR0ZWQpLAotCQkgICAgICAgY3B1X3RvX2JlMzIoZm9yZTIwMGUtPnN0YXRzLT5hdG0uY2VsbHNfcmVjZWl2ZWQpLAotCQkgICAgICAgY3B1X3RvX2JlMzIoZm9yZTIwMGUtPnN0YXRzLT5hdG0udnBpX2JhZF9yYW5nZSksCi0JCSAgICAgICBjcHVfdG9fYmUzMihmb3JlMjAwZS0+c3RhdHMtPmF0bS52cGlfbm9fY29ubiksCi0JCSAgICAgICBjcHVfdG9fYmUzMihmb3JlMjAwZS0+c3RhdHMtPmF0bS52Y2lfYmFkX3JhbmdlKSwKLQkJICAgICAgIGNwdV90b19iZTMyKGZvcmUyMDBlLT5zdGF0cy0+YXRtLnZjaV9ub19jb25uKSk7CisJCSAgICAgICBiZTMyX3RvX2NwdShmb3JlMjAwZS0+c3RhdHMtPmF0bS5jZWxsc190cmFuc21pdHRlZCksCisJCSAgICAgICBiZTMyX3RvX2NwdShmb3JlMjAwZS0+c3RhdHMtPmF0bS5jZWxsc19yZWNlaXZlZCksCisJCSAgICAgICBiZTMyX3RvX2NwdShmb3JlMjAwZS0+c3RhdHMtPmF0bS52cGlfYmFkX3JhbmdlKSwKKwkJICAgICAgIGJlMzJfdG9fY3B1KGZvcmUyMDBlLT5zdGF0cy0+YXRtLnZwaV9ub19jb25uKSwKKwkJICAgICAgIGJlMzJfdG9fY3B1KGZvcmUyMDBlLT5zdGF0cy0+YXRtLnZjaV9iYWRfcmFuZ2UpLAorCQkgICAgICAgYmUzMl90b19jcHUoZm9yZTIwMGUtPnN0YXRzLT5hdG0udmNpX25vX2Nvbm4pKTsKICAgICAKICAgICBpZiAoIWxlZnQtLSkKIAlyZXR1cm4gc3ByaW50ZihwYWdlLCJcbiIKQEAgLTMwMDgsOSArMzAwOCw5IEBACiAJCSAgICAgICAiICAgICBUWDpcdFx0XHQlMTB1XG4iCiAJCSAgICAgICAiICAgICBSWDpcdFx0XHQlMTB1XG4iCiAJCSAgICAgICAiICAgICBkcm9wcGVkOlx0XHRcdCUxMHVcbiIsCi0JCSAgICAgICBjcHVfdG9fYmUzMihmb3JlMjAwZS0+c3RhdHMtPmFhbDAuY2VsbHNfdHJhbnNtaXR0ZWQpLAotCQkgICAgICAgY3B1X3RvX2JlMzIoZm9yZTIwMGUtPnN0YXRzLT5hYWwwLmNlbGxzX3JlY2VpdmVkKSwKLQkJICAgICAgIGNwdV90b19iZTMyKGZvcmUyMDBlLT5zdGF0cy0+YWFsMC5jZWxsc19kcm9wcGVkKSk7CisJCSAgICAgICBiZTMyX3RvX2NwdShmb3JlMjAwZS0+c3RhdHMtPmFhbDAuY2VsbHNfdHJhbnNtaXR0ZWQpLAorCQkgICAgICAgYmUzMl90b19jcHUoZm9yZTIwMGUtPnN0YXRzLT5hYWwwLmNlbGxzX3JlY2VpdmVkKSwKKwkJICAgICAgIGJlMzJfdG9fY3B1KGZvcmUyMDBlLT5zdGF0cy0+YWFsMC5jZWxsc19kcm9wcGVkKSk7CiAgICAgCiAgICAgaWYgKCFsZWZ0LS0pCiAJcmV0dXJuIHNwcmludGYocGFnZSwiXG4iCkBAIC0zMDI2LDE1ICszMDI2LDE1IEBACiAJCSAgICAgICAiICAgICAgIFJYOlx0XHRcdCUxMHVcbiIKIAkJICAgICAgICIgICAgICAgZHJvcHBlZDpcdFx0XHQlMTB1XG4iCiAJCSAgICAgICAiICAgICAgIHByb3RvY29sIGVycm9yczpcdFx0JTEwdVxuIiwKLQkJICAgICAgIGNwdV90b19iZTMyKGZvcmUyMDBlLT5zdGF0cy0+YWFsMzQuY2VsbHNfdHJhbnNtaXR0ZWQpLAotCQkgICAgICAgY3B1X3RvX2JlMzIoZm9yZTIwMGUtPnN0YXRzLT5hYWwzNC5jZWxsc19yZWNlaXZlZCksCi0JCSAgICAgICBjcHVfdG9fYmUzMihmb3JlMjAwZS0+c3RhdHMtPmFhbDM0LmNlbGxzX2Ryb3BwZWQpLAotCQkgICAgICAgY3B1X3RvX2JlMzIoZm9yZTIwMGUtPnN0YXRzLT5hYWwzNC5jZWxsc19jcmNfZXJyb3JzKSwKLQkJICAgICAgIGNwdV90b19iZTMyKGZvcmUyMDBlLT5zdGF0cy0+YWFsMzQuY2VsbHNfcHJvdG9jb2xfZXJyb3JzKSwKLQkJICAgICAgIGNwdV90b19iZTMyKGZvcmUyMDBlLT5zdGF0cy0+YWFsMzQuY3NwZHVzX3RyYW5zbWl0dGVkKSwKLQkJICAgICAgIGNwdV90b19iZTMyKGZvcmUyMDBlLT5zdGF0cy0+YWFsMzQuY3NwZHVzX3JlY2VpdmVkKSwKLQkJICAgICAgIGNwdV90b19iZTMyKGZvcmUyMDBlLT5zdGF0cy0+YWFsMzQuY3NwZHVzX2Ryb3BwZWQpLAotCQkgICAgICAgY3B1X3RvX2JlMzIoZm9yZTIwMGUtPnN0YXRzLT5hYWwzNC5jc3BkdXNfcHJvdG9jb2xfZXJyb3JzKSk7CisJCSAgICAgICBiZTMyX3RvX2NwdShmb3JlMjAwZS0+c3RhdHMtPmFhbDM0LmNlbGxzX3RyYW5zbWl0dGVkKSwKKwkJICAgICAgIGJlMzJfdG9fY3B1KGZvcmUyMDBlLT5zdGF0cy0+YWFsMzQuY2VsbHNfcmVjZWl2ZWQpLAorCQkgICAgICAgYmUzMl90b19jcHUoZm9yZTIwMGUtPnN0YXRzLT5hYWwzNC5jZWxsc19kcm9wcGVkKSwKKwkJICAgICAgIGJlMzJfdG9fY3B1KGZvcmUyMDBlLT5zdGF0cy0+YWFsMzQuY2VsbHNfY3JjX2Vycm9ycyksCisJCSAgICAgICBiZTMyX3RvX2NwdShmb3JlMjAwZS0+c3RhdHMtPmFhbDM0LmNlbGxzX3Byb3RvY29sX2Vycm9ycyksCisJCSAgICAgICBiZTMyX3RvX2NwdShmb3JlMjAwZS0+c3RhdHMtPmFhbDM0LmNzcGR1c190cmFuc21pdHRlZCksCisJCSAgICAgICBiZTMyX3RvX2NwdShmb3JlMjAwZS0+c3RhdHMtPmFhbDM0LmNzcGR1c19yZWNlaXZlZCksCisJCSAgICAgICBiZTMyX3RvX2NwdShmb3JlMjAwZS0+c3RhdHMtPmFhbDM0LmNzcGR1c19kcm9wcGVkKSwKKwkJICAgICAgIGJlMzJfdG9fY3B1KGZvcmUyMDBlLT5zdGF0cy0+YWFsMzQuY3NwZHVzX3Byb3RvY29sX2Vycm9ycykpOwogICAgIAogICAgIGlmICghbGVmdC0tKQogCXJldHVybiBzcHJpbnRmKHBhZ2UsIlxuIgpAQCAtMzA1MCwxNSArMzA1MCwxNSBAQAogCQkgICAgICAgIiAgICAgICBkcm9wcGVkOlx0XHRcdCUxMHVcbiIKIAkJICAgICAgICIgICAgICAgQ1JDIGVycm9yczpcdFx0JTEwdVxuIgogCQkgICAgICAgIiAgICAgICBwcm90b2NvbCBlcnJvcnM6XHRcdCUxMHVcbiIsCi0JCSAgICAgICBjcHVfdG9fYmUzMihmb3JlMjAwZS0+c3RhdHMtPmFhbDUuY2VsbHNfdHJhbnNtaXR0ZWQpLAotCQkgICAgICAgY3B1X3RvX2JlMzIoZm9yZTIwMGUtPnN0YXRzLT5hYWw1LmNlbGxzX3JlY2VpdmVkKSwKLQkJICAgICAgIGNwdV90b19iZTMyKGZvcmUyMDBlLT5zdGF0cy0+YWFsNS5jZWxsc19kcm9wcGVkKSwKLQkJICAgICAgIGNwdV90b19iZTMyKGZvcmUyMDBlLT5zdGF0cy0+YWFsNS5jb25nZXN0aW9uX2V4cGVyaWVuY2VkKSwKLQkJICAgICAgIGNwdV90b19iZTMyKGZvcmUyMDBlLT5zdGF0cy0+YWFsNS5jc3BkdXNfdHJhbnNtaXR0ZWQpLAotCQkgICAgICAgY3B1X3RvX2JlMzIoZm9yZTIwMGUtPnN0YXRzLT5hYWw1LmNzcGR1c19yZWNlaXZlZCksCi0JCSAgICAgICBjcHVfdG9fYmUzMihmb3JlMjAwZS0+c3RhdHMtPmFhbDUuY3NwZHVzX2Ryb3BwZWQpLAotCQkgICAgICAgY3B1X3RvX2JlMzIoZm9yZTIwMGUtPnN0YXRzLT5hYWw1LmNzcGR1c19jcmNfZXJyb3JzKSwKLQkJICAgICAgIGNwdV90b19iZTMyKGZvcmUyMDBlLT5zdGF0cy0+YWFsNS5jc3BkdXNfcHJvdG9jb2xfZXJyb3JzKSk7CisJCSAgICAgICBiZTMyX3RvX2NwdShmb3JlMjAwZS0+c3RhdHMtPmFhbDUuY2VsbHNfdHJhbnNtaXR0ZWQpLAorCQkgICAgICAgYmUzMl90b19jcHUoZm9yZTIwMGUtPnN0YXRzLT5hYWw1LmNlbGxzX3JlY2VpdmVkKSwKKwkJICAgICAgIGJlMzJfdG9fY3B1KGZvcmUyMDBlLT5zdGF0cy0+YWFsNS5jZWxsc19kcm9wcGVkKSwKKwkJICAgICAgIGJlMzJfdG9fY3B1KGZvcmUyMDBlLT5zdGF0cy0+YWFsNS5jb25nZXN0aW9uX2V4cGVyaWVuY2VkKSwKKwkJICAgICAgIGJlMzJfdG9fY3B1KGZvcmUyMDBlLT5zdGF0cy0+YWFsNS5jc3BkdXNfdHJhbnNtaXR0ZWQpLAorCQkgICAgICAgYmUzMl90b19jcHUoZm9yZTIwMGUtPnN0YXRzLT5hYWw1LmNzcGR1c19yZWNlaXZlZCksCisJCSAgICAgICBiZTMyX3RvX2NwdShmb3JlMjAwZS0+c3RhdHMtPmFhbDUuY3NwZHVzX2Ryb3BwZWQpLAorCQkgICAgICAgYmUzMl90b19jcHUoZm9yZTIwMGUtPnN0YXRzLT5hYWw1LmNzcGR1c19jcmNfZXJyb3JzKSwKKwkJICAgICAgIGJlMzJfdG9fY3B1KGZvcmUyMDBlLT5zdGF0cy0+YWFsNS5jc3BkdXNfcHJvdG9jb2xfZXJyb3JzKSk7CiAgICAgCiAgICAgaWYgKCFsZWZ0LS0pCiAJcmV0dXJuIHNwcmludGYocGFnZSwiXG4iCkBAIC0zMDY5LDExICszMDY5LDExIEBACiAJCSAgICAgICAiICAgICBsYXJnZSBiMjpcdFx0XHQlMTB1XG4iCiAJCSAgICAgICAiICAgICBSWCBQRFVzOlx0XHRcdCUxMHVcbiIKIAkJICAgICAgICIgICAgIFRYIFBEVXM6XHRcdFx0JTEwbHVcbiIsCi0JCSAgICAgICBjcHVfdG9fYmUzMihmb3JlMjAwZS0+c3RhdHMtPmF1eC5zbWFsbF9iMV9mYWlsZWQpLAotCQkgICAgICAgY3B1X3RvX2JlMzIoZm9yZTIwMGUtPnN0YXRzLT5hdXgubGFyZ2VfYjFfZmFpbGVkKSwKLQkJICAgICAgIGNwdV90b19iZTMyKGZvcmUyMDBlLT5zdGF0cy0+YXV4LnNtYWxsX2IyX2ZhaWxlZCksCi0JCSAgICAgICBjcHVfdG9fYmUzMihmb3JlMjAwZS0+c3RhdHMtPmF1eC5sYXJnZV9iMl9mYWlsZWQpLAotCQkgICAgICAgY3B1X3RvX2JlMzIoZm9yZTIwMGUtPnN0YXRzLT5hdXgucnBkX2FsbG9jX2ZhaWxlZCksCisJCSAgICAgICBiZTMyX3RvX2NwdShmb3JlMjAwZS0+c3RhdHMtPmF1eC5zbWFsbF9iMV9mYWlsZWQpLAorCQkgICAgICAgYmUzMl90b19jcHUoZm9yZTIwMGUtPnN0YXRzLT5hdXgubGFyZ2VfYjFfZmFpbGVkKSwKKwkJICAgICAgIGJlMzJfdG9fY3B1KGZvcmUyMDBlLT5zdGF0cy0+YXV4LnNtYWxsX2IyX2ZhaWxlZCksCisJCSAgICAgICBiZTMyX3RvX2NwdShmb3JlMjAwZS0+c3RhdHMtPmF1eC5sYXJnZV9iMl9mYWlsZWQpLAorCQkgICAgICAgYmUzMl90b19jcHUoZm9yZTIwMGUtPnN0YXRzLT5hdXgucnBkX2FsbG9jX2ZhaWxlZCksCiAJCSAgICAgICBmb3JlMjAwZS0+dHhfc2F0KTsKICAgICAKICAgICBpZiAoIWxlZnQtLSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRtL2ZvcmUyMDBlLmggYi9kcml2ZXJzL2F0bS9mb3JlMjAwZS5oCmluZGV4IGI4NWE1NDYuLjE4Mzg0MWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRtL2ZvcmUyMDBlLmgKKysrIGIvZHJpdmVycy9hdG0vZm9yZTIwMGUuaApAQCAtMzQ5LDkwICszNDksOTAgQEAKIC8qIHBoeXNpY2FsIGVuY29kaW5nIHN0YXRpc3RpY3MgKi8KIAogdHlwZWRlZiBzdHJ1Y3Qgc3RhdHNfcGh5IHsKLSAgICB1MzIgY3JjX2hlYWRlcl9lcnJvcnM7ICAgIC8qIGNlbGxzIHJlY2VpdmVkIHdpdGggYmFkIGhlYWRlciBDUkMgKi8KLSAgICB1MzIgZnJhbWluZ19lcnJvcnM7ICAgICAgIC8qIGNlbGxzIHJlY2VpdmVkIHdpdGggYmFkIGZyYW1pbmcgICAgKi8KLSAgICB1MzIgcGFkWyAyIF07ICAgICAgICAgICAgIC8qIGk5NjAgcGFkZGluZyAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBfX2JlMzIgY3JjX2hlYWRlcl9lcnJvcnM7ICAgIC8qIGNlbGxzIHJlY2VpdmVkIHdpdGggYmFkIGhlYWRlciBDUkMgKi8KKyAgICBfX2JlMzIgZnJhbWluZ19lcnJvcnM7ICAgICAgIC8qIGNlbGxzIHJlY2VpdmVkIHdpdGggYmFkIGZyYW1pbmcgICAgKi8KKyAgICBfX2JlMzIgcGFkWyAyIF07ICAgICAgICAgICAgIC8qIGk5NjAgcGFkZGluZyAgICAgICAgICAgICAgICAgICAgICAgKi8KIH0gc3RhdHNfcGh5X3Q7CiAKIAogLyogT0MtMyBzdGF0aXN0aWNzICovCiAKIHR5cGVkZWYgc3RydWN0IHN0YXRzX29jMyB7Ci0gICAgdTMyIHNlY3Rpb25fYmlwOF9lcnJvcnM7ICAgIC8qIHNlY3Rpb24gOCBiaXQgaW50ZXJsZWF2ZWQgcGFyaXR5ICAgICovCi0gICAgdTMyIHBhdGhfYmlwOF9lcnJvcnM7ICAgICAgIC8qIHBhdGggOCBiaXQgaW50ZXJsZWF2ZWQgcGFyaXR5ICAgICAgICovCi0gICAgdTMyIGxpbmVfYmlwMjRfZXJyb3JzOyAgICAgIC8qIGxpbmUgMjQgYml0IGludGVybGVhdmVkIHBhcml0eSAgICAgICovCi0gICAgdTMyIGxpbmVfZmViZV9lcnJvcnM7ICAgICAgIC8qIGxpbmUgZmFyIGVuZCBibG9jayBlcnJvcnMgICAgICAgICAgICovCi0gICAgdTMyIHBhdGhfZmViZV9lcnJvcnM7ICAgICAgIC8qIHBhdGggZmFyIGVuZCBibG9jayBlcnJvcnMgICAgICAgICAgICovCi0gICAgdTMyIGNvcnJfaGNzX2Vycm9yczsgICAgICAgIC8qIGNvcnJlY3RhYmxlIGhlYWRlciBjaGVjayBzZXF1ZW5jZSAgICovCi0gICAgdTMyIHVjb3JyX2hjc19lcnJvcnM7ICAgICAgIC8qIHVuY29ycmVjdGFibGUgaGVhZGVyIGNoZWNrIHNlcXVlbmNlICovCi0gICAgdTMyIHBhZFsgMSBdOyAgICAgICAgICAgICAgIC8qIGk5NjAgcGFkZGluZyAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgX19iZTMyIHNlY3Rpb25fYmlwOF9lcnJvcnM7ICAgIC8qIHNlY3Rpb24gOCBiaXQgaW50ZXJsZWF2ZWQgcGFyaXR5ICAgICovCisgICAgX19iZTMyIHBhdGhfYmlwOF9lcnJvcnM7ICAgICAgIC8qIHBhdGggOCBiaXQgaW50ZXJsZWF2ZWQgcGFyaXR5ICAgICAgICovCisgICAgX19iZTMyIGxpbmVfYmlwMjRfZXJyb3JzOyAgICAgIC8qIGxpbmUgMjQgYml0IGludGVybGVhdmVkIHBhcml0eSAgICAgICovCisgICAgX19iZTMyIGxpbmVfZmViZV9lcnJvcnM7ICAgICAgIC8qIGxpbmUgZmFyIGVuZCBibG9jayBlcnJvcnMgICAgICAgICAgICovCisgICAgX19iZTMyIHBhdGhfZmViZV9lcnJvcnM7ICAgICAgIC8qIHBhdGggZmFyIGVuZCBibG9jayBlcnJvcnMgICAgICAgICAgICovCisgICAgX19iZTMyIGNvcnJfaGNzX2Vycm9yczsgICAgICAgIC8qIGNvcnJlY3RhYmxlIGhlYWRlciBjaGVjayBzZXF1ZW5jZSAgICovCisgICAgX19iZTMyIHVjb3JyX2hjc19lcnJvcnM7ICAgICAgIC8qIHVuY29ycmVjdGFibGUgaGVhZGVyIGNoZWNrIHNlcXVlbmNlICovCisgICAgX19iZTMyIHBhZFsgMSBdOyAgICAgICAgICAgICAgIC8qIGk5NjAgcGFkZGluZyAgICAgICAgICAgICAgICAgICAgICAgICovCiB9IHN0YXRzX29jM190OwogCiAKIC8qIEFUTSBzdGF0aXN0aWNzICovCiAKIHR5cGVkZWYgc3RydWN0IHN0YXRzX2F0bSB7Ci0gICAgdTMyCWNlbGxzX3RyYW5zbWl0dGVkOyAgICAvKiBjZWxscyB0cmFuc21pdHRlZCAgICAgICAgICAgICAgICAgKi8KLSAgICB1MzIJY2VsbHNfcmVjZWl2ZWQ7ICAgICAgIC8qIGNlbGxzIHJlY2VpdmVkICAgICAgICAgICAgICAgICAgICAqLwotICAgIHUzMgl2cGlfYmFkX3JhbmdlOyAgICAgICAgLyogY2VsbCBkcm9wczogVlBJIG91dCBvZiByYW5nZSAgICAgICovCi0gICAgdTMyCXZwaV9ub19jb25uOyAgICAgICAgICAvKiBjZWxsIGRyb3BzOiBubyBjb25uZWN0aW9uIGZvciBWUEkgKi8KLSAgICB1MzIJdmNpX2JhZF9yYW5nZTsgICAgICAgIC8qIGNlbGwgZHJvcHM6IFZDSSBvdXQgb2YgcmFuZ2UgICAgICAqLwotICAgIHUzMgl2Y2lfbm9fY29ubjsgICAgICAgICAgLyogY2VsbCBkcm9wczogbm8gY29ubmVjdGlvbiBmb3IgVkNJICovCi0gICAgdTMyCXBhZFsgMiBdOyAgICAgICAgICAgICAvKiBpOTYwIHBhZGRpbmcgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBfX2JlMzIJY2VsbHNfdHJhbnNtaXR0ZWQ7ICAgIC8qIGNlbGxzIHRyYW5zbWl0dGVkICAgICAgICAgICAgICAgICAqLworICAgIF9fYmUzMgljZWxsc19yZWNlaXZlZDsgICAgICAgLyogY2VsbHMgcmVjZWl2ZWQgICAgICAgICAgICAgICAgICAgICovCisgICAgX19iZTMyCXZwaV9iYWRfcmFuZ2U7ICAgICAgICAvKiBjZWxsIGRyb3BzOiBWUEkgb3V0IG9mIHJhbmdlICAgICAgKi8KKyAgICBfX2JlMzIJdnBpX25vX2Nvbm47ICAgICAgICAgIC8qIGNlbGwgZHJvcHM6IG5vIGNvbm5lY3Rpb24gZm9yIFZQSSAqLworICAgIF9fYmUzMgl2Y2lfYmFkX3JhbmdlOyAgICAgICAgLyogY2VsbCBkcm9wczogVkNJIG91dCBvZiByYW5nZSAgICAgICovCisgICAgX19iZTMyCXZjaV9ub19jb25uOyAgICAgICAgICAvKiBjZWxsIGRyb3BzOiBubyBjb25uZWN0aW9uIGZvciBWQ0kgKi8KKyAgICBfX2JlMzIJcGFkWyAyIF07ICAgICAgICAgICAgIC8qIGk5NjAgcGFkZGluZyAgICAgICAgICAgICAgICAgICAgICAqLwogfSBzdGF0c19hdG1fdDsKIAogLyogQUFMMCBzdGF0aXN0aWNzICovCiAKIHR5cGVkZWYgc3RydWN0IHN0YXRzX2FhbDAgewotICAgIHUzMgljZWxsc190cmFuc21pdHRlZDsgICAgLyogY2VsbHMgdHJhbnNtaXR0ZWQgKi8KLSAgICB1MzIJY2VsbHNfcmVjZWl2ZWQ7ICAgICAgIC8qIGNlbGxzIHJlY2VpdmVkICAgICovCi0gICAgdTMyCWNlbGxzX2Ryb3BwZWQ7ICAgICAgICAvKiBjZWxscyBkcm9wcGVkICAgICAqLwotICAgIHUzMglwYWRbIDEgXTsgICAgICAgICAgICAgLyogaTk2MCBwYWRkaW5nICAgICAgKi8KKyAgICBfX2JlMzIJY2VsbHNfdHJhbnNtaXR0ZWQ7ICAgIC8qIGNlbGxzIHRyYW5zbWl0dGVkICovCisgICAgX19iZTMyCWNlbGxzX3JlY2VpdmVkOyAgICAgICAvKiBjZWxscyByZWNlaXZlZCAgICAqLworICAgIF9fYmUzMgljZWxsc19kcm9wcGVkOyAgICAgICAgLyogY2VsbHMgZHJvcHBlZCAgICAgKi8KKyAgICBfX2JlMzIJcGFkWyAxIF07ICAgICAgICAgICAgIC8qIGk5NjAgcGFkZGluZyAgICAgICovCiB9IHN0YXRzX2FhbDBfdDsKIAogCiAvKiBBQUwzLzQgc3RhdGlzdGljcyAqLwogCiB0eXBlZGVmIHN0cnVjdCBzdGF0c19hYWwzNCB7Ci0gICAgdTMyCWNlbGxzX3RyYW5zbWl0dGVkOyAgICAgICAgIC8qIGNlbGxzIHRyYW5zbWl0dGVkIGZyb20gc2VnbWVudGVkIFBEVXMgKi8KLSAgICB1MzIJY2VsbHNfcmVjZWl2ZWQ7ICAgICAgICAgICAgLyogY2VsbHMgcmVhc3NlbWJsZWQgaW50byBQRFVzICAgICAgICAgICAqLwotICAgIHUzMgljZWxsc19jcmNfZXJyb3JzOyAgICAgICAgICAvKiBwYXlsb2FkIENSQyBlcnJvciBjb3VudCAgICAgICAgICAgICAgICovCi0gICAgdTMyCWNlbGxzX3Byb3RvY29sX2Vycm9yczsgICAgIC8qIFNBUiBvciBDUyBsYXllciBwcm90b2NvbCBlcnJvcnMgICAgICAgKi8KLSAgICB1MzIJY2VsbHNfZHJvcHBlZDsgICAgICAgICAgICAgLyogY2VsbHMgZHJvcHBlZDogcGFydGlhbCByZWFzc2VtYmx5ICAgICAqLwotICAgIHUzMgljc3BkdXNfdHJhbnNtaXR0ZWQ7ICAgICAgICAvKiBDUyBQRFVzIHRyYW5zbWl0dGVkICAgICAgICAgICAgICAgICAgICovCi0gICAgdTMyCWNzcGR1c19yZWNlaXZlZDsgICAgICAgICAgIC8qIENTIFBEVXMgcmVjZWl2ZWQgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICB1MzIJY3NwZHVzX3Byb3RvY29sX2Vycm9yczsgICAgLyogQ1MgbGF5ZXIgcHJvdG9jb2wgZXJyb3JzICAgICAgICAgICAgICAqLwotICAgIHUzMgljc3BkdXNfZHJvcHBlZDsgICAgICAgICAgICAvKiByZWFzc2VtYmxlZCBQRFVzIGRyb3AnZCAoaW4gY2VsbHMpICAgICovCi0gICAgdTMyCXBhZFsgMyBdOyAgICAgICAgICAgICAgICAgIC8qIGk5NjAgcGFkZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBfX2JlMzIJY2VsbHNfdHJhbnNtaXR0ZWQ7ICAgICAgICAgLyogY2VsbHMgdHJhbnNtaXR0ZWQgZnJvbSBzZWdtZW50ZWQgUERVcyAqLworICAgIF9fYmUzMgljZWxsc19yZWNlaXZlZDsgICAgICAgICAgICAvKiBjZWxscyByZWFzc2VtYmxlZCBpbnRvIFBEVXMgICAgICAgICAgICovCisgICAgX19iZTMyCWNlbGxzX2NyY19lcnJvcnM7ICAgICAgICAgIC8qIHBheWxvYWQgQ1JDIGVycm9yIGNvdW50ICAgICAgICAgICAgICAgKi8KKyAgICBfX2JlMzIJY2VsbHNfcHJvdG9jb2xfZXJyb3JzOyAgICAgLyogU0FSIG9yIENTIGxheWVyIHByb3RvY29sIGVycm9ycyAgICAgICAqLworICAgIF9fYmUzMgljZWxsc19kcm9wcGVkOyAgICAgICAgICAgICAvKiBjZWxscyBkcm9wcGVkOiBwYXJ0aWFsIHJlYXNzZW1ibHkgICAgICovCisgICAgX19iZTMyCWNzcGR1c190cmFuc21pdHRlZDsgICAgICAgIC8qIENTIFBEVXMgdHJhbnNtaXR0ZWQgICAgICAgICAgICAgICAgICAgKi8KKyAgICBfX2JlMzIJY3NwZHVzX3JlY2VpdmVkOyAgICAgICAgICAgLyogQ1MgUERVcyByZWNlaXZlZCAgICAgICAgICAgICAgICAgICAgICAqLworICAgIF9fYmUzMgljc3BkdXNfcHJvdG9jb2xfZXJyb3JzOyAgICAvKiBDUyBsYXllciBwcm90b2NvbCBlcnJvcnMgICAgICAgICAgICAgICovCisgICAgX19iZTMyCWNzcGR1c19kcm9wcGVkOyAgICAgICAgICAgIC8qIHJlYXNzZW1ibGVkIFBEVXMgZHJvcCdkIChpbiBjZWxscykgICAgKi8KKyAgICBfX2JlMzIJcGFkWyAzIF07ICAgICAgICAgICAgICAgICAgLyogaTk2MCBwYWRkaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogfSBzdGF0c19hYWwzNF90OwogCiAKIC8qIEFBTDUgc3RhdGlzdGljcyAqLwogCiB0eXBlZGVmIHN0cnVjdCBzdGF0c19hYWw1IHsKLSAgICB1MzIJY2VsbHNfdHJhbnNtaXR0ZWQ7ICAgICAgICAgLyogY2VsbHMgdHJhbnNtaXR0ZWQgZnJvbSBzZWdtZW50ZWQgU0RVcyAqLwotICAgIHUzMgljZWxsc19yZWNlaXZlZDsJCSAgIC8qIGNlbGxzIHJlYXNzZW1ibGVkIGludG8gU0RVcyAgICAgICAgICAgKi8KLSAgICB1MzIJY2VsbHNfZHJvcHBlZDsJCSAgIC8qIHJlYXNzZW1ibGVkIFBEVXMgZHJvcHBlZCAoaW4gY2VsbHMpICAgKi8KLSAgICB1MzIJY29uZ2VzdGlvbl9leHBlcmllbmNlZDsgICAgLyogQ1JDIGVycm9yIGFuZCBsZW5ndGggd3JvbmcgICAgICAgICAgICAqLwotICAgIHUzMgljc3BkdXNfdHJhbnNtaXR0ZWQ7ICAgICAgICAvKiBDUyBQRFVzIHRyYW5zbWl0dGVkICAgICAgICAgICAgICAgICAgICovCi0gICAgdTMyCWNzcGR1c19yZWNlaXZlZDsgICAgICAgICAgIC8qIENTIFBEVXMgcmVjZWl2ZWQgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICB1MzIJY3NwZHVzX2NyY19lcnJvcnM7ICAgICAgICAgLyogQ1MgUERVcyBDUkMgZXJyb3JzICAgICAgICAgICAgICAgICAgICAqLwotICAgIHUzMgljc3BkdXNfcHJvdG9jb2xfZXJyb3JzOyAgICAvKiBDUyBsYXllciBwcm90b2NvbCBlcnJvcnMgICAgICAgICAgICAgICovCi0gICAgdTMyCWNzcGR1c19kcm9wcGVkOyAgICAgICAgICAgIC8qIHJlYXNzZW1ibGVkIFBEVXMgZHJvcHBlZCAgICAgICAgICAgICAgKi8KLSAgICB1MzIJcGFkWyAzIF07ICAgICAgICAgICAgICAgICAgLyogaTk2MCBwYWRkaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIF9fYmUzMgljZWxsc190cmFuc21pdHRlZDsgICAgICAgICAvKiBjZWxscyB0cmFuc21pdHRlZCBmcm9tIHNlZ21lbnRlZCBTRFVzICovCisgICAgX19iZTMyCWNlbGxzX3JlY2VpdmVkOwkJICAgLyogY2VsbHMgcmVhc3NlbWJsZWQgaW50byBTRFVzICAgICAgICAgICAqLworICAgIF9fYmUzMgljZWxsc19kcm9wcGVkOwkJICAgLyogcmVhc3NlbWJsZWQgUERVcyBkcm9wcGVkIChpbiBjZWxscykgICAqLworICAgIF9fYmUzMgljb25nZXN0aW9uX2V4cGVyaWVuY2VkOyAgICAvKiBDUkMgZXJyb3IgYW5kIGxlbmd0aCB3cm9uZyAgICAgICAgICAgICovCisgICAgX19iZTMyCWNzcGR1c190cmFuc21pdHRlZDsgICAgICAgIC8qIENTIFBEVXMgdHJhbnNtaXR0ZWQgICAgICAgICAgICAgICAgICAgKi8KKyAgICBfX2JlMzIJY3NwZHVzX3JlY2VpdmVkOyAgICAgICAgICAgLyogQ1MgUERVcyByZWNlaXZlZCAgICAgICAgICAgICAgICAgICAgICAqLworICAgIF9fYmUzMgljc3BkdXNfY3JjX2Vycm9yczsgICAgICAgICAvKiBDUyBQRFVzIENSQyBlcnJvcnMgICAgICAgICAgICAgICAgICAgICovCisgICAgX19iZTMyCWNzcGR1c19wcm90b2NvbF9lcnJvcnM7ICAgIC8qIENTIGxheWVyIHByb3RvY29sIGVycm9ycyAgICAgICAgICAgICAgKi8KKyAgICBfX2JlMzIJY3NwZHVzX2Ryb3BwZWQ7ICAgICAgICAgICAgLyogcmVhc3NlbWJsZWQgUERVcyBkcm9wcGVkICAgICAgICAgICAgICAqLworICAgIF9fYmUzMglwYWRbIDMgXTsgICAgICAgICAgICAgICAgICAvKiBpOTYwIHBhZGRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICovCiB9IHN0YXRzX2FhbDVfdDsKIAogCiAvKiBhdXhpbGlhcnkgc3RhdGlzdGljcyAqLwogCiB0eXBlZGVmIHN0cnVjdCBzdGF0c19hdXggewotICAgIHUzMglzbWFsbF9iMV9mYWlsZWQ7ICAgICAvKiByZWNlaXZlIEJEIGFsbG9jYXRpb24gZmFpbHVyZXMgICovCi0gICAgdTMyCWxhcmdlX2IxX2ZhaWxlZDsgICAgIC8qIHJlY2VpdmUgQkQgYWxsb2NhdGlvbiBmYWlsdXJlcyAgKi8KLSAgICB1MzIJc21hbGxfYjJfZmFpbGVkOyAgICAgLyogcmVjZWl2ZSBCRCBhbGxvY2F0aW9uIGZhaWx1cmVzICAqLwotICAgIHUzMglsYXJnZV9iMl9mYWlsZWQ7ICAgICAvKiByZWNlaXZlIEJEIGFsbG9jYXRpb24gZmFpbHVyZXMgICovCi0gICAgdTMyCXJwZF9hbGxvY19mYWlsZWQ7ICAgIC8qIHJlY2VpdmUgUERVIGFsbG9jYXRpb24gZmFpbHVyZXMgKi8KLSAgICB1MzIJcmVjZWl2ZV9jYXJyaWVyOyAgICAgLyogbm8gY2FycmllciA9IDAsIGNhcnJpZXIgPSAxICAgICAqLwotICAgIHUzMglwYWRbIDIgXTsgICAgICAgICAgICAvKiBpOTYwIHBhZGRpbmcgICAgICAgICAgICAgICAgICAgICovCisgICAgX19iZTMyCXNtYWxsX2IxX2ZhaWxlZDsgICAgIC8qIHJlY2VpdmUgQkQgYWxsb2NhdGlvbiBmYWlsdXJlcyAgKi8KKyAgICBfX2JlMzIJbGFyZ2VfYjFfZmFpbGVkOyAgICAgLyogcmVjZWl2ZSBCRCBhbGxvY2F0aW9uIGZhaWx1cmVzICAqLworICAgIF9fYmUzMglzbWFsbF9iMl9mYWlsZWQ7ICAgICAvKiByZWNlaXZlIEJEIGFsbG9jYXRpb24gZmFpbHVyZXMgICovCisgICAgX19iZTMyCWxhcmdlX2IyX2ZhaWxlZDsgICAgIC8qIHJlY2VpdmUgQkQgYWxsb2NhdGlvbiBmYWlsdXJlcyAgKi8KKyAgICBfX2JlMzIJcnBkX2FsbG9jX2ZhaWxlZDsgICAgLyogcmVjZWl2ZSBQRFUgYWxsb2NhdGlvbiBmYWlsdXJlcyAqLworICAgIF9fYmUzMglyZWNlaXZlX2NhcnJpZXI7ICAgICAvKiBubyBjYXJyaWVyID0gMCwgY2FycmllciA9IDEgICAgICovCisgICAgX19iZTMyCXBhZFsgMiBdOyAgICAgICAgICAgIC8qIGk5NjAgcGFkZGluZyAgICAgICAgICAgICAgICAgICAgKi8KIH0gc3RhdHNfYXV4X3Q7CiAKIApAQCAtNjQzLDEwICs2NDMsMTAgQEAKIC8qIGhlYWRlciBvZiB0aGUgZmlybXdhcmUgaW1hZ2UgKi8KIAogdHlwZWRlZiBzdHJ1Y3QgZndfaGVhZGVyIHsKLSAgICB1MzIgbWFnaWM7ICAgICAgICAgICAvKiBtYWdpYyBudW1iZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICB1MzIgdmVyc2lvbjsgICAgICAgICAvKiBmaXJtd2FyZSB2ZXJzaW9uIGlkICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICB1MzIgbG9hZF9vZmZzZXQ7ICAgICAvKiBmdyBsb2FkIG9mZnNldCBpbiBib2FyZCBtZW1vcnkgICAgICAgICAgICAgKi8KLSAgICB1MzIgc3RhcnRfb2Zmc2V0OyAgICAvKiBmdyBleGVjdXRpb24gc3RhcnQgYWRkcmVzcyBpbiBib2FyZCBtZW1vcnkgKi8KKyAgICBfX2xlMzIgbWFnaWM7ICAgICAgICAgICAvKiBtYWdpYyBudW1iZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBfX2xlMzIgdmVyc2lvbjsgICAgICAgICAvKiBmaXJtd2FyZSB2ZXJzaW9uIGlkICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBfX2xlMzIgbG9hZF9vZmZzZXQ7ICAgICAvKiBmdyBsb2FkIG9mZnNldCBpbiBib2FyZCBtZW1vcnkgICAgICAgICAgICAgKi8KKyAgICBfX2xlMzIgc3RhcnRfb2Zmc2V0OyAgICAvKiBmdyBleGVjdXRpb24gc3RhcnQgYWRkcmVzcyBpbiBib2FyZCBtZW1vcnkgKi8KIH0gZndfaGVhZGVyX3Q7CiAKICNkZWZpbmUgRldfSEVBREVSX01BR0lDICAweDY1NzI2ZjY2ICAgIC8qICdmb3JlJyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdG0vaGUuYyBiL2RyaXZlcnMvYXRtL2hlLmMKaW5kZXggMmUzMzk1Yi4uZmZjNGE1YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdG0vaGUuYworKysgYi9kcml2ZXJzL2F0bS9oZS5jCkBAIC0zMDAwLDggKzMwMDAsNyBAQAogCiAvKiBlZXByb20gcm91dGluZXMgIC0tIHNlZSA0LjcgKi8KIAotdTgKLXJlYWRfcHJvbV9ieXRlKHN0cnVjdCBoZV9kZXYgKmhlX2RldiwgaW50IGFkZHIpCitzdGF0aWMgdTggcmVhZF9wcm9tX2J5dGUoc3RydWN0IGhlX2RldiAqaGVfZGV2LCBpbnQgYWRkcikKIHsKIAl1MzIgdmFsID0gMCwgdG1wX3JlYWQgPSAwOwogCWludCBpLCBqID0gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRtL2lkdDc3MjUyLmMgYi9kcml2ZXJzL2F0bS9pZHQ3NzI1Mi5jCmluZGV4IGVlZTU0YzAuLjI4ZDc3YjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRtL2lkdDc3MjUyLmMKKysrIGIvZHJpdmVycy9hdG0vaWR0NzcyNTIuYwpAQCAtNTU1LDcgKzU1NSw3IEBACiAJc3RydWN0IHZjX21hcCAqdmM7CiAJaW50IGk7CiAKLQlwcmludGsoIiVzXG4iLCBfX0ZVTkNUSU9OX18pOworCXByaW50aygiJXNcbiIsIF9fZnVuY19fKTsKIAlmb3IgKGkgPSAwOyBpIDwgY2FyZC0+dGN0X3NpemU7IGkrKykgewogCQl2YyA9IGNhcmQtPnZjc1tpXTsKIAkJaWYgKCF2YykKQEAgLTEwMzUsNyArMTAzNSw3IEBACiAJc2tiID0gc2JfcG9vbF9za2IoY2FyZCwgbGUzMl90b19jcHUocnNxZS0+d29yZF8yKSk7CiAJaWYgKHNrYiA9PSBOVUxMKSB7CiAJCXByaW50aygiJXM6IE5VTEwgc2tiIGluICVzLCByc3FlOiAlMDh4ICUwOHggJTA4eCAlMDh4XG4iLAotCQkgICAgICAgY2FyZC0+bmFtZSwgX19GVU5DVElPTl9fLAorCQkgICAgICAgY2FyZC0+bmFtZSwgX19mdW5jX18sCiAJCSAgICAgICBsZTMyX3RvX2NwdShyc3FlLT53b3JkXzEpLCBsZTMyX3RvX2NwdShyc3FlLT53b3JkXzIpLAogCQkgICAgICAgbGUzMl90b19jcHUocnNxZS0+d29yZF8zKSwgbGUzMl90b19jcHUocnNxZS0+d29yZF80KSk7CiAJCXJldHVybjsKQEAgLTE4NzMsNyArMTg3Myw3IEBACiAJCQlyZXR1cm47CiAKIAkJaWYgKHNiX3Bvb2xfYWRkKGNhcmQsIHNrYiwgcXVldWUpKSB7Ci0JCQlwcmludGsoIiVzOiBTQiBQT09MIGZ1bGxcbiIsIF9fRlVOQ1RJT05fXyk7CisJCQlwcmludGsoIiVzOiBTQiBQT09MIGZ1bGxcbiIsIF9fZnVuY19fKTsKIAkJCWdvdG8gb3V0ZnJlZTsKIAkJfQogCkBAIC0xODgzLDcgKzE4ODMsNyBAQAogCQlJRFQ3NzI1Ml9QUlZfUEFERFIoc2tiKSA9IHBhZGRyOwogCiAJCWlmIChwdXNoX3J4X3NrYihjYXJkLCBza2IsIHF1ZXVlKSkgewotCQkJcHJpbnRrKCIlczogRkIgUVVFVUUgZnVsbFxuIiwgX19GVU5DVElPTl9fKTsKKwkJCXByaW50aygiJXM6IEZCIFFVRVVFIGZ1bGxcbiIsIF9fZnVuY19fKTsKIAkJCWdvdG8gb3V0dW5tYXA7CiAJCX0KIAl9CkBAIC0yMDE2LDggKzIwMTYsNyBAQAogCXJldHVybiAwOwogfQogCi1pbnQKLWlkdDc3MjUyX3NlbmQoc3RydWN0IGF0bV92Y2MgKnZjYywgc3RydWN0IHNrX2J1ZmYgKnNrYikKK3N0YXRpYyBpbnQgaWR0NzcyNTJfc2VuZChzdHJ1Y3QgYXRtX3ZjYyAqdmNjLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogewogCXJldHVybiBpZHQ3NzI1Ml9zZW5kX3NrYih2Y2MsIHNrYiwgMCk7CiB9CkBAIC0zMDcyLDggKzMwNzEsNyBAQAogCXJldHVybiAwOwogfQogCi12b2lkCi1pZHQ3NzI1Ml9kZXZfY2xvc2Uoc3RydWN0IGF0bV9kZXYgKmRldikKK3N0YXRpYyB2b2lkIGlkdDc3MjUyX2Rldl9jbG9zZShzdHJ1Y3QgYXRtX2RldiAqZGV2KQogewogCXN0cnVjdCBpZHQ3NzI1Ml9kZXYgKmNhcmQgPSBkZXYtPmRldl9kYXRhOwogCXUzMiBjb25mOwpAQCAtMzgyMSwxMiArMzgxOSwxMiBAQAogewogCXN0cnVjdCBza19idWZmICpza2I7CiAKLQlwcmludGsoIiVzOiBhdCAlcFxuIiwgX19GVU5DVElPTl9fLCBpZHQ3NzI1Ml9pbml0KTsKKwlwcmludGsoIiVzOiBhdCAlcFxuIiwgX19mdW5jX18sIGlkdDc3MjUyX2luaXQpOwogCiAJaWYgKHNpemVvZihza2ItPmNiKSA8IHNpemVvZihzdHJ1Y3QgYXRtX3NrYl9kYXRhKSArCiAJCQkgICAgICBzaXplb2Yoc3RydWN0IGlkdDc3MjUyX3NrYl9wcnYpKSB7CiAJCXByaW50ayhLRVJOX0VSUiAiJXM6IHNrYi0+Y2IgaXMgdG9vIHNtYWxsICglbHUgPCAlbHUpXG4iLAotCQkgICAgICAgX19GVU5DVElPTl9fLCAodW5zaWduZWQgbG9uZykgc2l6ZW9mKHNrYi0+Y2IpLAorCQkgICAgICAgX19mdW5jX18sICh1bnNpZ25lZCBsb25nKSBzaXplb2Yoc2tiLT5jYiksCiAJCSAgICAgICAodW5zaWduZWQgbG9uZykgc2l6ZW9mKHN0cnVjdCBhdG1fc2tiX2RhdGEpICsKIAkJCQkgICAgICAgc2l6ZW9mKHN0cnVjdCBpZHQ3NzI1Ml9za2JfcHJ2KSk7CiAJCXJldHVybiAtRUlPOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdG0vaXBoYXNlLmMgYi9kcml2ZXJzL2F0bS9pcGhhc2UuYwppbmRleCBlZjUyNDUyLi42NzBjMDkzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0bS9pcGhhc2UuYworKysgYi9kcml2ZXJzL2F0bS9pcGhhc2UuYwpAQCAtOTU4LDYgKzk1OCw3IEBACiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBJQV9MSUIgRU5EICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogICAgIAorI2lmZGVmIENPTkZJR19BVE1fSUFfREVCVUcKIHN0YXRpYyBpbnQgdGNudGVyID0gMDsKIHN0YXRpYyB2b2lkIHhkdW1wKCB1X2NoYXIqICBjcCwgaW50ICBsZW5ndGgsIGNoYXIqICBwcmVmaXggKQogewpAQCAtOTkyLDYgKzk5Myw3IEBACiAgICAgfQogCiB9ICAvKiBjbG9zZSB4ZHVtcCguLi4gKi8KKyNlbmRpZiAvKiBDT05GSUdfQVRNX0lBX0RFQlVHICovCiAKICAgCiBzdGF0aWMgc3RydWN0IGF0bV9kZXYgKmlhX2JvYXJkcyA9IE5VTEw7ICAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmFzZS9jb3JlLmMgYi9kcml2ZXJzL2Jhc2UvY29yZS5jCmluZGV4IDdkZTU0M2QuLjI0MTk4YWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmFzZS9jb3JlLmMKKysrIGIvZHJpdmVycy9iYXNlL2NvcmUuYwpAQCAtMTksNiArMTksNyBAQAogI2luY2x1ZGUgPGxpbnV4L2tkZXZfdC5oPgogI2luY2x1ZGUgPGxpbnV4L25vdGlmaWVyLmg+CiAjaW5jbHVkZSA8bGludXgvZ2VuaGQuaD4KKyNpbmNsdWRlIDxsaW51eC9rYWxsc3ltcy5oPgogI2luY2x1ZGUgPGFzbS9zZW1hcGhvcmUuaD4KIAogI2luY2x1ZGUgImJhc2UuaCIKQEAgLTY4LDYgKzY5LDEwIEBACiAKIAlpZiAoZGV2X2F0dHItPnNob3cpCiAJCXJldCA9IGRldl9hdHRyLT5zaG93KGRldiwgZGV2X2F0dHIsIGJ1Zik7CisJaWYgKHJldCA+PSAoc3NpemVfdClQQUdFX1NJWkUpIHsKKwkJcHJpbnRfc3ltYm9sKCJkZXZfYXR0cl9zaG93OiAlcyByZXR1cm5lZCBiYWQgY291bnRcbiIsCisJCQkJKHVuc2lnbmVkIGxvbmcpZGV2X2F0dHItPnNob3cpOworCX0KIAlyZXR1cm4gcmV0OwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jhc2UvZHJpdmVyLmMgYi9kcml2ZXJzL2Jhc2UvZHJpdmVyLmMKaW5kZXggYmYzMWEwMS4uOWE2NTM3ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9iYXNlL2RyaXZlci5jCisrKyBiL2RyaXZlcnMvYmFzZS9kcml2ZXIuYwpAQCAtMTMzLDYgKzEzMyw3IEBACiB7CiAJdmFfbGlzdCBhcmdzOwogCWNoYXIgKm5hbWU7CisJaW50IHJldDsKIAogCXZhX3N0YXJ0KGFyZ3MsIGZtdCk7CiAJbmFtZSA9IGt2YXNwcmludGYoR0ZQX0tFUk5FTCwgZm10LCBhcmdzKTsKQEAgLTE0MSw3ICsxNDIsOSBAQAogCWlmICghbmFtZSkKIAkJcmV0dXJuIC1FTk9NRU07CiAKLQlyZXR1cm4ga29iamVjdF9hZGQoa29iaiwgJmRydi0+cC0+a29iaiwgIiVzIiwgbmFtZSk7CisJcmV0ID0ga29iamVjdF9hZGQoa29iaiwgJmRydi0+cC0+a29iaiwgIiVzIiwgbmFtZSk7CisJa2ZyZWUobmFtZSk7CisJcmV0dXJuIHJldDsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGRyaXZlcl9hZGRfa29iaik7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svS2NvbmZpZyBiL2RyaXZlcnMvYmxvY2svS2NvbmZpZwppbmRleCBiNmQyMzBiLi4wZDFkMjEzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL0tjb25maWcKKysrIGIvZHJpdmVycy9ibG9jay9LY29uZmlnCkBAIC00NCwxNiArNDQsNiBAQAogCSAgSWYgeW91IGhhdmUgYSBTV0lNLTMgKFN1cGVyIFdveiBJbnRlZ3JhdGVkIE1hY2hpbmUgMzsgZnJvbSBBcHBsZSkKIAkgIGZsb3BweSBjb250cm9sbGVyLCBzYXkgWSBoZXJlLiBNb3N0IGNvbW1vbmx5IGZvdW5kIGluIFBvd2VyTWFjcy4KIAotY29uZmlnIEJMS19ERVZfUFMyCi0JdHJpc3RhdGUgIlBTLzIgRVNESSBoYXJkIGRpc2sgc3VwcG9ydCIKLQlkZXBlbmRzIG9uIE1DQSAmJiBNQ0FfTEVHQUNZICYmIEJST0tFTgotCWhlbHAKLQkgIFNheSBZIGhlcmUgaWYgeW91IGhhdmUgYSBQUy8yIG1hY2hpbmUgd2l0aCBhIE1DQSBidXMgYW5kIGFuIEVTREkKLQkgIGhhcmQgZGlzay4KLQotCSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlCi0JICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgcHMyZXNkaS4KLQogY29uZmlnIEFNSUdBX1oyUkFNCiAJdHJpc3RhdGUgIkFtaWdhIFpvcnJvIElJIHJhbWRpc2sgc3VwcG9ydCIKIAlkZXBlbmRzIG9uIFpPUlJPCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL01ha2VmaWxlIGIvZHJpdmVycy9ibG9jay9NYWtlZmlsZQppbmRleCAwMWM5NzI0Li41ZTU4NDMwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvYmxvY2svTWFrZWZpbGUKQEAgLTEzLDcgKzEzLDYgQEAKIG9iai0kKENPTkZJR19BTUlHQV9aMlJBTSkJKz0gejJyYW0ubwogb2JqLSQoQ09ORklHX0JMS19ERVZfUkFNKQkrPSBicmQubwogb2JqLSQoQ09ORklHX0JMS19ERVZfTE9PUCkJKz0gbG9vcC5vCi1vYmotJChDT05GSUdfQkxLX0RFVl9QUzIpCSs9IHBzMmVzZGkubwogb2JqLSQoQ09ORklHX0JMS19ERVZfWEQpCSs9IHhkLm8KIG9iai0kKENPTkZJR19CTEtfQ1BRX0RBKQkrPSBjcHFhcnJheS5vCiBvYmotJChDT05GSUdfQkxLX0NQUV9DSVNTX0RBKSAgKz0gY2Npc3MubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9jY2lzcy5jIGIvZHJpdmVycy9ibG9jay9jY2lzcy5jCmluZGV4IDU1YmQzNWMuLjljOTYyN2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svY2Npc3MuYworKysgYi9kcml2ZXJzL2Jsb2NrL2NjaXNzLmMKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlIDxzY3NpL3NnLmg+CiAjaW5jbHVkZSA8c2NzaS9zY3NpX2lvY3RsLmg+CiAjaW5jbHVkZSA8bGludXgvY2Ryb20uaD4KKyNpbmNsdWRlIDxsaW51eC9zY2F0dGVybGlzdC5oPgogCiAjZGVmaW5lIENDSVNTX0RSSVZFUl9WRVJTSU9OKG1haixtaW4sc3VibWluKSAoKG1hajw8MTYpfChtaW48PDgpfChzdWJtaW4pKQogI2RlZmluZSBEUklWRVJfTkFNRSAiSFAgQ0lTUyBEcml2ZXIgKHYgMy42LjE0KSIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZmxvcHB5LmMgYi9kcml2ZXJzL2Jsb2NrL2Zsb3BweS5jCmluZGV4IDMyYzc5YTUuLjc2NTJlODdkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2Zsb3BweS5jCisrKyBiL2RyaXZlcnMvYmxvY2svZmxvcHB5LmMKQEAgLTIxNyw3ICsyMTcsNiBAQAogICovCiAKIHN0YXRpYyBERUZJTkVfU1BJTkxPQ0soZmxvcHB5X2xvY2spOwotc3RhdGljIHN0cnVjdCBjb21wbGV0aW9uIGRldmljZV9yZWxlYXNlOwogCiBzdGF0aWMgdW5zaWduZWQgc2hvcnQgdmlydHVhbF9kbWFfcG9ydCA9IDB4M2YwOwogaXJxcmV0dXJuX3QgZmxvcHB5X2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkZXZfaWQpOwpAQCAtNDE0NCw3ICs0MTQzLDYgQEAKIAogc3RhdGljIHZvaWQgZmxvcHB5X2RldmljZV9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldikKIHsKLQljb21wbGV0ZSgmZGV2aWNlX3JlbGVhc2UpOwogfQogCiBzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBmbG9wcHlfZGV2aWNlW05fRFJJVkVdOwpAQCAtNDUzOSw3ICs0NTM3LDYgQEAKIHsKIAlpbnQgZHJpdmU7CiAKLQlpbml0X2NvbXBsZXRpb24oJmRldmljZV9yZWxlYXNlKTsKIAlibGtfdW5yZWdpc3Rlcl9yZWdpb24oTUtERVYoRkxPUFBZX01BSk9SLCAwKSwgMjU2KTsKIAl1bnJlZ2lzdGVyX2Jsa2RldihGTE9QUFlfTUFKT1IsICJmZCIpOwogCkBAIC00NTY0LDggKzQ1NjEsNiBAQAogCiAJLyogZWplY3QgZGlzaywgaWYgYW55ICovCiAJZmRfZWplY3QoMCk7Ci0KLQl3YWl0X2Zvcl9jb21wbGV0aW9uKCZkZXZpY2VfcmVsZWFzZSk7CiB9CiAKIG1vZHVsZV9wYXJhbShmbG9wcHksIGNoYXJwLCAwKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbmJkLmMgYi9kcml2ZXJzL2Jsb2NrL25iZC5jCmluZGV4IGI1M2ZkYjAuLjYwY2M1NDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svbmJkLmMKKysrIGIvZHJpdmVycy9ibG9jay9uYmQuYwpAQCAtMTUzLDYgKzE1MywxMiBAQAogCXN0cnVjdCBrdmVjIGlvdjsKIAlzaWdzZXRfdCBibG9ja2VkLCBvbGRzZXQ7CiAKKwlpZiAodW5saWtlbHkoIXNvY2spKSB7CisJCXByaW50ayhLRVJOX0VSUiAiJXM6IEF0dGVtcHRlZCAlcyBvbiBjbG9zZWQgc29ja2V0IGluIHNvY2tfeG1pdFxuIiwKKwkJICAgICAgIGxvLT5kaXNrLT5kaXNrX25hbWUsIChzZW5kID8gInNlbmQiIDogInJlY3YiKSk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKwogCS8qIEFsbG93IGludGVyY2VwdGlvbiBvZiBTSUdLSUxMIG9ubHkKIAkgKiBEb24ndCBhbGxvdyBvdGhlciBzaWduYWxzIHRvIGludGVycnVwdCB0aGUgdHJhbnNtaXNzaW9uICovCiAJc2lnaW5pdHNldGludigmYmxvY2tlZCwgc2lnbWFzayhTSUdLSUxMKSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3BzMmVzZGkuYyBiL2RyaXZlcnMvYmxvY2svcHMyZXNkaS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYzc5NmUyLi4wMDAwMDAwCi0tLSBhL2RyaXZlcnMvYmxvY2svcHMyZXNkaS5jCisrKyAvZGV2L251bGwKQEAgLTEsMTA3OSArMCwwIEBACi0vKiBwczJlc2RpIGRyaXZlciBiYXNlZCBvbiBhc3NlbWJsZXIgY29kZSBieSBBcmluZGFtIEJhbmVyamksCi0gICB3cml0dGVuIGJ5IFBldGVyIERlIFNjaHJpanZlciAqLwotLyogUmVhc3N1cmluZyBub3RlIHRvIElCTSA6IFRoaXMgZHJpdmVyIHdhcyBOT1QgZGV2ZWxvcGVkIGJ5IHZpY2UtdmVyc2EKLSAgIGVuZ2luZWVyaW5nIHRoZSBQUy8yJ3MgQklPUyAqLwotLyogRGVkaWNhdGVkIHRvIFdhbm5lcywgVG9ma2UsIFlra2UsIEdvZG90LCBLaWxscm95IGFuZCBhbGwgdGhvc2UgCi0gICBvdGhlciBsb3ZlbHkgZmlzaCBvdXQgdGhlcmUuLi4gKi8KLS8qIFRoaXMgY29kZSB3YXMgd3JpdHRlbiBkdXJpbmcgdGhlIGxvbmcgYW5kIGJvcmluZyBXSU5BIAotICAgZWxlY3Rpb25zIDE5OTQgKi8KLS8qIFRoYW5rcyB0byBBcmluZGFtIEJhbmVyaWogZm9yIGdpdmluZyBtZSB0aGUgc291cmNlIG9mIGhpcyBkcml2ZXIgKi8KLS8qIFRoaXMgY29kZSBtYXkgYmUgZnJlZWx5IGRpc3RyaWJ1dGVkIGFuZCBtb2RpZmllZCBpbiBhbnkgd2F5LCAKLSAgIGFzIGxvbmcgYXMgdGhlc2Ugbm90ZXMgcmVtYWluIGludGFjdCAqLwotCi0vKiAgUmV2aXNlZDogMDUvMDcvOTQgYnkgQXJpbmRhbSBCYW5lcmppIChheGJAY3NlLm5kLmVkdSkgKi8KLS8qICBSZXZpc2VkOiAwOS8wOC85NCBieSBQZXRlciBEZSBTY2hyaWp2ZXIgKHN0dWQxMUBjYzQua3VsZXV2ZW4uYWMuYmUpCi0gICBUaGFua3MgdG8gQXJpbmRhbSBCYW5lcmlqIGZvciBzZW5kaW5nIG1lIHRoZSBkb2NzIG9mIHRoZSBhZGFwdGVyICovCi0KLS8qIEJBIE1vZGlmaWVkIGZvciBUaGlua1BhZCA3MjAgYnkgQm9yaXMgQXNoa2luYXppICovCi0vKiAgICAgICAgICAgICAgICAgICAgKGJhc2hAdm5ldC5pYm0uY29tKSAwOC8wOC85NSAqLwotCi0vKiBNb2RpZmllZCBmdXJ0aGVyIGZvciBUaGlua1BhZC03MjBDIGJ5IFVyaSBCbHVtZW50aGFsICovCi0vKiAgICAgICAgICAgICAgICAgICAgKHVyaUB3YXRzb24uaWJtLmNvbSkgU2VwIDExLCAxOTk1ICovCi0KLS8qIFRPRE8gOiAKLSAgICsgVGltZW91dHMKLSAgICsgR2V0IGRpc2sgcGFyYW1ldGVycwotICAgKyBETUEgYWJvdmUgMTZNQgotICAgKyByZXNldCBhZnRlciByZWFkL3dyaXRlIGVycm9yCi0gKi8KLQotI2RlZmluZSBERVZJQ0VfTkFNRSAiUFMvMiBFU0RJIgotCi0jaW5jbHVkZSA8bGludXgvbWFqb3IuaD4KLSNpbmNsdWRlIDxsaW51eC9lcnJuby5oPgotI2luY2x1ZGUgPGxpbnV4L3dhaXQuaD4KLSNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KLSNpbmNsdWRlIDxsaW51eC9mcy5oPgotI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgotI2luY2x1ZGUgPGxpbnV4L2dlbmhkLmg+Ci0jaW5jbHVkZSA8bGludXgvcHMyZXNkaS5oPgotI2luY2x1ZGUgPGxpbnV4L2Jsa2Rldi5oPgotI2luY2x1ZGUgPGxpbnV4L21jYS1sZWdhY3kuaD4KLSNpbmNsdWRlIDxsaW51eC9pbml0Lmg+Ci0jaW5jbHVkZSA8bGludXgvaW9wb3J0Lmg+Ci0jaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Ci0jaW5jbHVkZSA8bGludXgvaGRyZWcuaD4KLQotI2luY2x1ZGUgPGFzbS9zeXN0ZW0uaD4KLSNpbmNsdWRlIDxhc20vaW8uaD4KLSNpbmNsdWRlIDxhc20vZG1hLmg+Ci0jaW5jbHVkZSA8YXNtL21jYV9kbWEuaD4KLSNpbmNsdWRlIDxhc20vdWFjY2Vzcy5oPgotCi0jZGVmaW5lIFBTMkVTRElfSVJRIDE0Ci0jZGVmaW5lIE1BWF9IRCAyCi0jZGVmaW5lIE1BWF9SRVRSSUVTIDUKLSNkZWZpbmUgTUFYXzE2QklUIDY1NTM2Ci0jZGVmaW5lIEVTRElfVElNRU9VVCAgIDB4ZjAwMAotI2RlZmluZSBFU0RJX1NUQVRfVElNRU9VVCA0Ci0KLSNkZWZpbmUgVFlQRV8wX0NNRF9CTEtfTEVOR1RIIDIKLSNkZWZpbmUgVFlQRV8xX0NNRF9CTEtfTEVOR1RIIDQKLQotc3RhdGljIHZvaWQgcmVzZXRfY3RybCh2b2lkKTsKLQotc3RhdGljIGludCBwczJlc2RpX2dlbmluaXQodm9pZCk7Ci0KLXN0YXRpYyB2b2lkIGRvX3BzMmVzZGlfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqIHEpOwotCi1zdGF0aWMgdm9pZCBwczJlc2RpX3JlYWR3cml0ZShpbnQgY21kLCBzdHJ1Y3QgcmVxdWVzdCAqcmVxKTsKLQotc3RhdGljIHZvaWQgcHMyZXNkaV9maWxsX2NtZF9ibG9jayh1X3Nob3J0ICogY21kX2JsaywgdV9zaG9ydCBjbWQsCi11X3Nob3J0IGN5bCwgdV9zaG9ydCBoZWFkLCB1X3Nob3J0IHNlY3RvciwgdV9zaG9ydCBsZW5ndGgsIHVfY2hhciBkcml2ZSk7Ci0KLXN0YXRpYyBpbnQgcHMyZXNkaV9vdXRfY21kX2Jsayh1X3Nob3J0ICogY21kX2Jsayk7Ci0KLXN0YXRpYyB2b2lkIHBzMmVzZGlfcHJlcF9kbWEoY2hhciAqYnVmZmVyLCB1X3Nob3J0IGxlbmd0aCwgdV9jaGFyIGRtYV94bW9kZSk7Ci0KLXN0YXRpYyBpcnFyZXR1cm5fdCBwczJlc2RpX2ludGVycnVwdF9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRldl9pZCk7Ci1zdGF0aWMgdm9pZCAoKmN1cnJlbnRfaW50X2hhbmRsZXIpICh1X2ludCkgPSBOVUxMOwotc3RhdGljIHZvaWQgcHMyZXNkaV9ub3JtYWxfaW50ZXJydXB0X2hhbmRsZXIodV9pbnQpOwotc3RhdGljIHZvaWQgcHMyZXNkaV9pbml0aWFsX3Jlc2V0X2ludF9oYW5kbGVyKHVfaW50KTsKLXN0YXRpYyB2b2lkIHBzMmVzZGlfZ2VvbWV0cnlfaW50X2hhbmRsZXIodV9pbnQpOwotc3RhdGljIGludCBwczJlc2RpX2dldGdlbyhzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBzdHJ1Y3QgaGRfZ2VvbWV0cnkgKmdlbyk7Ci0KLXN0YXRpYyBpbnQgcHMyZXNkaV9yZWFkX3N0YXR1c193b3JkcyhpbnQgbnVtX3dvcmRzLCBpbnQgbWF4X3dvcmRzLCB1X3Nob3J0ICogYnVmZmVyKTsKLQotc3RhdGljIHZvaWQgZHVtcF9jbWRfY29tcGxldGVfc3RhdHVzKHVfaW50IGludF9yZXRfY29kZSk7Ci0KLXN0YXRpYyB2b2lkIHBzMmVzZGlfZ2V0X2RldmljZV9jZmcodm9pZCk7Ci0KLXN0YXRpYyB2b2lkIHBzMmVzZGlfcmVzZXRfdGltZXIodW5zaWduZWQgbG9uZyB1bnVzZWQpOwotCi1zdGF0aWMgdV9pbnQgZG1hX2FyYl9sZXZlbDsJCS8qIERNQSBhcmJpdHJhdGlvbiBsZXZlbCAqLwotCi1zdGF0aWMgREVDTEFSRV9XQUlUX1FVRVVFX0hFQUQocHMyZXNkaV9pbnQpOwotCi1zdGF0aWMgaW50IG5vX2ludF95ZXQ7Ci1zdGF0aWMgaW50IHBzMmVzZGlfZHJpdmVzOwotc3RhdGljIHVfc2hvcnQgaW9fYmFzZTsKLXN0YXRpYyBERUZJTkVfVElNRVIoZXNkaV90aW1lciwgcHMyZXNkaV9yZXNldF90aW1lciwgMCwgMCk7Ci1zdGF0aWMgaW50IHJlc2V0X3N0YXR1czsKLXN0YXRpYyBpbnQgcHMyZXNkaV9zbG90ID0gLTE7Ci1zdGF0aWMgaW50IHRwNzIwZXNkaSA9IDA7CS8qIElzIGl0IEludGVncmF0ZWQgRVNESSBvZiBUaGlua1BhZC03MjA/ICovCi1zdGF0aWMgaW50IGludGdfZXNkaSA9IDA7ICAgICAgIC8qIElmIGludGVncmF0ZWQgYWRhcHRlciAqLwotc3RydWN0IHBzMmVzZGlfaV9zdHJ1Y3QgewotCXVuc2lnbmVkIGludCBoZWFkLCBzZWN0LCBjeWwsIHdwY29tLCBsem9uZSwgY3RsOwotfTsKLXN0YXRpYyBERUZJTkVfU1BJTkxPQ0socHMyZXNkaV9sb2NrKTsKLXN0YXRpYyBzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcHMyZXNkaV9xdWV1ZTsKLXN0YXRpYyBzdHJ1Y3QgcmVxdWVzdCAqY3VycmVudF9yZXE7Ci0KLSNpZiAwCi0jaWYgMAkJCQkvKiB0cnkgYm90aCAtIEkgZG9uJ3Qga25vdyB3aGljaCBvbmUgaXMgYmV0dGVyLi4uIFVCICovCi1zdGF0aWMgc3RydWN0IHBzMmVzZGlfaV9zdHJ1Y3QgcHMyZXNkaV9pbmZvW01BWF9IRF0gPQotewotCXs0LCA0OCwgMTU1MywgMCwgMCwgMH0sCi0JezAsIDAsIDAsIDAsIDAsIDB9fTsKLSNlbHNlCi1zdGF0aWMgc3RydWN0IHBzMmVzZGlfaV9zdHJ1Y3QgcHMyZXNkaV9pbmZvW01BWF9IRF0gPQotewotCXs2NCwgMzIsIDE2MSwgMCwgMCwgMH0sCi0JezAsIDAsIDAsIDAsIDAsIDB9fTsKLSNlbmRpZgotI2VuZGlmCi1zdGF0aWMgc3RydWN0IHBzMmVzZGlfaV9zdHJ1Y3QgcHMyZXNkaV9pbmZvW01BWF9IRF0gPQotewotCXswLCAwLCAwLCAwLCAwLCAwfSwKLQl7MCwgMCwgMCwgMCwgMCwgMH19OwotCi1zdGF0aWMgc3RydWN0IGJsb2NrX2RldmljZV9vcGVyYXRpb25zIHBzMmVzZGlfZm9wcyA9Ci17Ci0JLm93bmVyCQk9IFRISVNfTU9EVUxFLAotCS5nZXRnZW8JCT0gcHMyZXNkaV9nZXRnZW8sCi19OwotCi1zdGF0aWMgc3RydWN0IGdlbmRpc2sgKnBzMmVzZGlfZ2VuZGlza1syXTsKLQotLyogaW5pdGlhbGl6YXRpb24gcm91dGluZSBjYWxsZWQgYnkgbGxfcndfYmxrLmMgICAqLwotc3RhdGljIGludCBfX2luaXQgcHMyZXNkaV9pbml0KHZvaWQpCi17Ci0KLQlpbnQgZXJyb3IgPSAwOwotCi0JLyogcmVnaXN0ZXIgdGhlIGRldmljZSAtIHBhc3MgdGhlIG5hbWUgYW5kIG1ham9yIG51bWJlciAqLwotCWlmIChyZWdpc3Rlcl9ibGtkZXYoUFMyRVNESV9NQUpPUiwgImVkIikpCi0JCXJldHVybiAtRUJVU1k7Ci0KLQkvKiBzZXQgdXAgc29tZSBnbG9iYWwgaW5mb3JtYXRpb24gLSBpbmRpY2F0aW5nIGRldmljZSBzcGVjaWZpYyBpbmZvICovCi0JcHMyZXNkaV9xdWV1ZSA9IGJsa19pbml0X3F1ZXVlKGRvX3BzMmVzZGlfcmVxdWVzdCwgJnBzMmVzZGlfbG9jayk7Ci0JaWYgKCFwczJlc2RpX3F1ZXVlKSB7Ci0JCXVucmVnaXN0ZXJfYmxrZGV2KFBTMkVTRElfTUFKT1IsICJlZCIpOwotCQlyZXR1cm4gLUVOT01FTTsKLQl9Ci0KLQkvKiBzb21lIG1pbm9yIGhvdXNla2VlcGluZyAtIHNldHVwIHRoZSBnbG9iYWwgZ2VuZGlzayBzdHJ1Y3R1cmUgKi8KLQllcnJvciA9IHBzMmVzZGlfZ2VuaW5pdCgpOwotCWlmIChlcnJvcikgewotCQlwcmludGsoS0VSTl9XQVJOSU5HICJQUzJFU0RJOiBlcnJvciBpbml0aWFsaXNpbmciCi0JCQkiIGRldmljZSwgcmVsZWFzaW5nIHJlc291cmNlc1xuIik7Ci0JCXVucmVnaXN0ZXJfYmxrZGV2KFBTMkVTRElfTUFKT1IsICJlZCIpOwotCQlibGtfY2xlYW51cF9xdWV1ZShwczJlc2RpX3F1ZXVlKTsKLQkJcmV0dXJuIGVycm9yOwotCX0KLQlyZXR1cm4gMDsKLX0JCQkJLyogcHMyZXNkaV9pbml0ICovCi0KLSNpZm5kZWYgTU9EVUxFCi0KLW1vZHVsZV9pbml0KHBzMmVzZGlfaW5pdCk7Ci0KLSNlbHNlCi0KLXN0YXRpYyBpbnQgY3lsW01BWF9IRF0gPSB7LTEsLTF9Owotc3RhdGljIGludCBoZWFkW01BWF9IRF0gPSB7LTEsIC0xfTsKLXN0YXRpYyBpbnQgc2VjdFtNQVhfSERdID0gey0xLCAtMX07Ci0KLW1vZHVsZV9wYXJhbSh0cDcyMGVzZGksIGJvb2wsIDApOwotbW9kdWxlX3BhcmFtX2FycmF5KGN5bCwgaW50LCBOVUxMLCAwKTsKLW1vZHVsZV9wYXJhbV9hcnJheShoZWFkLCBpbnQsIE5VTEwsIDApOwotbW9kdWxlX3BhcmFtX2FycmF5KHNlY3QsIGludCwgTlVMTCwgMCk7Ci1NT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLWludCBpbml0X21vZHVsZSh2b2lkKSB7Ci0JaW50IGRyaXZlOwotCi0JZm9yKGRyaXZlID0gMDsgZHJpdmUgPCBNQVhfSEQ7IGRyaXZlKyspIHsKLQkgICAgICAgIHN0cnVjdCBwczJlc2RpX2lfc3RydWN0ICppbmZvID0gJnBzMmVzZGlfaW5mb1tkcml2ZV07Ci0KLSAgICAgICAgCWlmIChjeWxbZHJpdmVdICE9IC0xKSB7Ci0JCSAgCWluZm8tPmN5bCA9IGluZm8tPmx6b25lID0gY3lsW2RyaXZlXTsKLQkJCWluZm8tPndwY29tID0gMDsKLQkJfQotICAgICAgICAJaWYgKGhlYWRbZHJpdmVdICE9IC0xKSB7Ci0JCQlpbmZvLT5oZWFkID0gaGVhZFtkcml2ZV07Ci0JCQlpbmZvLT5jdGwgPSAoaGVhZFtkcml2ZV0gPiA4ID8gOCA6IDApOwotCQl9Ci0gICAgICAgIAlpZiAoc2VjdFtkcml2ZV0gIT0gLTEpIGluZm8tPnNlY3QgPSBzZWN0W2RyaXZlXTsKLQl9Ci0JcmV0dXJuIHBzMmVzZGlfaW5pdCgpOwotfQotCi12b2lkCi1jbGVhbnVwX21vZHVsZSh2b2lkKSB7Ci0JaW50IGk7Ci0JaWYocHMyZXNkaV9zbG90KSB7Ci0JCW1jYV9tYXJrX2FzX3VudXNlZChwczJlc2RpX3Nsb3QpOwotCQltY2Ffc2V0X2FkYXB0ZXJfcHJvY2ZuKHBzMmVzZGlfc2xvdCwgTlVMTCwgTlVMTCk7Ci0JfQotCXJlbGVhc2VfcmVnaW9uKGlvX2Jhc2UsIDQpOwotCWZyZWVfZG1hKGRtYV9hcmJfbGV2ZWwpOwotCWZyZWVfaXJxKFBTMkVTRElfSVJRLCAmcHMyZXNkaV9nZW5kaXNrKTsKLQl1bnJlZ2lzdGVyX2Jsa2RldihQUzJFU0RJX01BSk9SLCAiZWQiKTsKLQlibGtfY2xlYW51cF9xdWV1ZShwczJlc2RpX3F1ZXVlKTsKLQlmb3IgKGkgPSAwOyBpIDwgcHMyZXNkaV9kcml2ZXM7IGkrKykgewotCQlkZWxfZ2VuZGlzayhwczJlc2RpX2dlbmRpc2tbaV0pOwotCQlwdXRfZGlzayhwczJlc2RpX2dlbmRpc2tbaV0pOwotCX0KLX0KLSNlbmRpZiAvKiBNT0RVTEUgKi8KLQotLyogaGFuZGxlcyBib290IHRpbWUgY29tbWFuZCBsaW5lIHBhcmFtZXRlcnMgKi8KLXZvaWQgX19pbml0IHRwNzIwX3NldHVwKGNoYXIgKnN0ciwgaW50ICppbnRzKQotewotCS8qIG5vIHBhcmFtcywganVzdCBzZXRzIHRoZSB0cDcyMGVzZGkgZmxhZyBpZiBpdCBleGlzdHMgKi8KLQotCXByaW50aygiJXM6IFRQIDcyMCBFU0RJIGZsYWcgc2V0XG4iLCBERVZJQ0VfTkFNRSk7Ci0JdHA3MjBlc2RpID0gMTsKLX0KLQotdm9pZCBfX2luaXQgZWRfc2V0dXAoY2hhciAqc3RyLCBpbnQgKmludHMpCi17Ci0JaW50IGhkaW5kID0gMDsKLQotCS8qIGhhbmRsZXMgMyBwYXJhbWV0ZXJzIG9ubHkgLSBjb3JyZXNwb25kaW5nIHRvCi0JICAgMS4gTnVtYmVyIG9mIGN5bGluZGVycwotCSAgIDIuIE51bWJlciBvZiBoZWFkcwotCSAgIDMuIFNlY3RvcnMvdHJhY2sKLQkgKi8KLQotCWlmIChpbnRzWzBdICE9IDMpCi0JCXJldHVybjsKLQotCS8qIHByaW50IG91dCB0aGUgaW5mb3JtYXRpb24gLSBzZWVuIGF0IGJvb3QgdGltZSAqLwotCXByaW50aygiJXM6IGludHNbMF09JWQgaW50c1sxXT0lZCBpbnRzWzJdPSVkIGludHNbM109JWRcbiIsCi0JICAgICAgIERFVklDRV9OQU1FLCBpbnRzWzBdLCBpbnRzWzFdLCBpbnRzWzJdLCBpbnRzWzNdKTsKLQotCS8qIHNldCB0aGUgaW5kZXggaW50byBkZXZpY2Ugc3BlY2lmaWMgaW5mb3JtYXRpb24gdGFibGUgKi8KLQlpZiAocHMyZXNkaV9pbmZvWzBdLmhlYWQgIT0gMCkKLQkJaGRpbmQgPSAxOwotCi0JLyogc2V0IHVwIGFsbCB0aGUgZGV2aWNlIGluZm9ybWF0aW9uICovCi0JcHMyZXNkaV9pbmZvW2hkaW5kXS5oZWFkID0gaW50c1syXTsKLQlwczJlc2RpX2luZm9baGRpbmRdLnNlY3QgPSBpbnRzWzNdOwotCXBzMmVzZGlfaW5mb1toZGluZF0uY3lsID0gaW50c1sxXTsKLQlwczJlc2RpX2luZm9baGRpbmRdLndwY29tID0gMDsKLQlwczJlc2RpX2luZm9baGRpbmRdLmx6b25lID0gaW50c1sxXTsKLQlwczJlc2RpX2luZm9baGRpbmRdLmN0bCA9IChpbnRzWzJdID4gOCA/IDggOiAwKTsKLSNpZiAwCQkJCS8qIHRoaXMgbWF5IGJlIG5lZWRlZCBmb3IgUFMyL01vZC44MCwgYnV0IGl0IGh1cnRzIFRoaW5rUGFkISAqLwotCXBzMmVzZGlfZHJpdmVzID0gaGRpbmQgKyAxOwkvKiBpbmNyZW1lbnQgaW5kZXggZm9yIHRoZSBuZXh0IHRpbWUgKi8KLSNlbmRpZgotfQkJCQkvKiBlZF9zZXR1cCAqLwotCi1zdGF0aWMgaW50IHBzMmVzZGlfZ2V0aW5mbyhjaGFyICpidWYsIGludCBzbG90LCB2b2lkICpkKQotewotCWludCBsZW4gPSAwOwotCi0JbGVuICs9IHNwcmludGYoYnVmICsgbGVuLCAiRE1BIEFyYml0cmF0aW9uIExldmVsOiAlZFxuIiwKLQkJICAgICAgIGRtYV9hcmJfbGV2ZWwpOwotCWxlbiArPSBzcHJpbnRmKGJ1ZiArIGxlbiwgIklPIFBvcnQ6ICV4XG4iLCBpb19iYXNlKTsKLQlsZW4gKz0gc3ByaW50ZihidWYgKyBsZW4sICJJUlE6IDE0XG4iKTsKLQlsZW4gKz0gc3ByaW50ZihidWYgKyBsZW4sICJEcml2ZXM6ICVkXG4iLCBwczJlc2RpX2RyaXZlcyk7Ci0KLQlyZXR1cm4gbGVuOwotfQotCi0vKiBwczIgZXNkaSBzcGVjaWZpYyBpbml0aWFsaXphdGlvbiAtIGNhbGxlZCB0aHJ1IHRoZSBnZW5kaXNrIGNoYWluICovCi1zdGF0aWMgaW50IF9faW5pdCBwczJlc2RpX2dlbmluaXQodm9pZCkKLXsKLQkvKgotCSAgIFRoZSBmaXJzdCBwYXJ0IGNvbnRhaW5zIHRoZSBpbml0aWFsaXphdGlvbiBjb2RlCi0JICAgZm9yIHRoZSBFU0RJIGRpc2sgc3Vic3lzdGVtLiAgQWxsIHdlIHJlYWxseSBkbwotCSAgIGlzIHNlYXJjaCBmb3IgdGhlIFBPUyByZWdpc3RlcnMgb2YgdGhlIGNvbnRyb2xsZXIKLQkgICB0byBkbyBzb21lIHNpbXBsZSBzZXR1cCBvcGVyYXRpb25zLiAgRmlyc3QsIHdlCi0JICAgbXVzdCBlbnN1cmUgdGhhdCB0aGUgY29udHJvbGxlciBpcyBpbnN0YWxsZWQsCi0JICAgZW5hYmxlZCwgYW5kIGNvbmZpZ3VyZWQgYXMgUFJJTUFSWS4gIFRoZW4gd2UgbXVzdAotCSAgIGRldGVybWluZSB0aGUgRE1BIGFyYml0cmF0aW9uIGxldmVsIGJlaW5nIHVzZWQgYnkKLQkgICB0aGUgY29udHJvbGxlciBzbyB3ZSBjYW4gaGFuZGxlIGRhdGEgdHJhbnNmZXIKLQkgICBvcGVyYXRpb25zIHByb3Blcmx5LiAgSWYgYWxsIG9mIHRoaXMgd29ya3MsIHRoZW4KLQkgICB3ZSB3aWxsIHNldCB0aGUgSU5JVF9GTEFHIHRvIGEgbm9uLXplcm8gdmFsdWUuCi0JICovCi0KLQlpbnQgc2xvdCA9IDAsIGksIHJlc2V0X3N0YXJ0LCByZXNldF9lbmQ7Ci0JdV9jaGFyIHN0YXR1czsKLQl1bnNpZ25lZCBzaG9ydCBhZGFwdGVySUQ7Ci0JaW50IGVycm9yID0gMDsKLQotCWlmICgoc2xvdCA9IG1jYV9maW5kX2FkYXB0ZXIoSU5UR19FU0RJX0lELCAwKSkgIT0gTUNBX05PVEZPVU5EKSB7Ci0JCWFkYXB0ZXJJRCA9IElOVEdfRVNESV9JRDsKLQkJcHJpbnRrKCIlczogaW50ZWdyYXRlZCBFU0RJIGFkYXB0ZXIgZm91bmQgaW4gc2xvdCAlZFxuIiwKLQkJICAgICAgIERFVklDRV9OQU1FLCBzbG90KzEpOwotI2lmbmRlZiBNT0RVTEUKLQkJbWNhX3NldF9hZGFwdGVyX25hbWUoc2xvdCwgIlBTLzIgSW50ZWdyYXRlZCBFU0RJIik7Ci0jZW5kaWYKLQl9IGVsc2UgaWYgKChzbG90ID0gbWNhX2ZpbmRfYWRhcHRlcihOUk1MX0VTRElfSUQsIDApKSAhPSAtMSkgewotCQlhZGFwdGVySUQgPSBOUk1MX0VTRElfSUQ7Ci0JCXByaW50aygiJXM6IG5vcm1hbCBFU0RJIGFkYXB0ZXIgZm91bmQgaW4gc2xvdCAlZFxuIiwKLQkJICAgICAgIERFVklDRV9OQU1FLCBzbG90KzEpOwotCQltY2Ffc2V0X2FkYXB0ZXJfbmFtZShzbG90LCAiUFMvMiBFU0RJIik7Ci0JfSBlbHNlIHsKLQkJcmV0dXJuIC1FTk9ERVY7Ci0JfQotCi0JcHMyZXNkaV9zbG90ID0gc2xvdDsKLQltY2FfbWFya19hc191c2VkKHNsb3QpOwotCW1jYV9zZXRfYWRhcHRlcl9wcm9jZm4oc2xvdCwgKE1DQV9Qcm9jRm4pIHBzMmVzZGlfZ2V0aW5mbywgTlVMTCk7Ci0KLQkvKiBGb3VuZCB0aGUgc2xvdCAtIHJlYWQgdGhlIFBPUyByZWdpc3RlciAyIHRvIGdldCB0aGUgbmVjZXNzYXJ5Ci0JICAgY29uZmlndXJhdGlvbiBhbmQgc3RhdHVzIGluZm9ybWF0aW9uLiAgUE9TIHJlZ2lzdGVyIDIgaGFzIHRoZQotCSAgIGZvbGxvd2luZyBpbmZvcm1hdGlvbiA6Ci0JICAgQml0ICAgICAgICAgICBGdW5jdGlvbgotCSAgIDcgICAgICAgICAgICAgcmVzZXJ2ZWQgPSAwCi0JICAgNiAgICAgICAgICAgICBhcmJpdHJhdGlvbiBtZXRob2QKLQkgICAwIC0gZmFpcm5lc3MgZW5hYmxlZAotCSAgIDEgLSBmYWlybmVzcyBkaXNhYmxlZCwgbGluZWFyIHByaW9yaXR5IGFzc2lnbm1lbnQKLQkgICA1LTIgICAgICAgICAgIGFyYml0cmF0aW9uIGxldmVsCi0JICAgMSAgICAgICAgICAgICBhbHRlcm5hdGUgYWRkcmVzcwotCSAgIDEgICAgICAgICAgICAgIGFsdGVybmF0ZSBhZGRyZXNzCi0JICAgMCAtIHVzZSBhZGRyZXNzZXMgMHgzNTEwIC0gMHgzNTE3Ci0JICAgMCAgICAgICAgICAgICBhZGFwdGVyIGVuYWJsZQotCSAqLwotCi0Jc3RhdHVzID0gbWNhX3JlYWRfc3RvcmVkX3BvcyhzbG90LCAyKTsKLQkvKiBpcyBpdCBlbmFibGVkID8gKi8KLQlpZiAoIShzdGF0dXMgJiBTVEFUVVNfRU5BQkxFRCkpIHsKLQkJcHJpbnRrKCIlczogRVNESSBhZGFwdGVyIGRpc2FibGVkXG4iLCBERVZJQ0VfTkFNRSk7Ci0JCWVycm9yID0gLUVOT0RFVjsKLQkJZ290byBlcnJfb3V0MTsKLQl9Ci0JLyogdHJ5IHRvIGdyYWIgSVJRLCBhbmQgdHJ5IHRvIGdyYWIgYSBzbG93IElSUSBpZiBpdCBmYWlscywgc28gd2UgY2FuCi0JICAgc2hhcmUgd2l0aCB0aGUgU0NTSSBkcml2ZXIgKi8KLQlpZiAocmVxdWVzdF9pcnEoUFMyRVNESV9JUlEsIHBzMmVzZGlfaW50ZXJydXB0X2hhbmRsZXIsCi0JCSAgSVJRRl9ESVNBQkxFRCB8IElSUUZfU0hBUkVELCAiUFMvMiBFU0RJIiwgJnBzMmVzZGlfZ2VuZGlzaykKLQkgICAgJiYgcmVxdWVzdF9pcnEoUFMyRVNESV9JUlEsIHBzMmVzZGlfaW50ZXJydXB0X2hhbmRsZXIsCi0JCQkgICBJUlFGX1NIQVJFRCwgIlBTLzIgRVNESSIsICZwczJlc2RpX2dlbmRpc2spCi0JICAgICkgewotCQlwcmludGsoIiVzOiBVbmFibGUgdG8gZ2V0IElSUSAlZFxuIiwgREVWSUNFX05BTUUsIFBTMkVTRElfSVJRKTsKLQkJZXJyb3IgPSAtRUJVU1k7Ci0JCWdvdG8gZXJyX291dDE7Ci0JfQotCWlmIChzdGF0dXMgJiBTVEFUVVNfQUxURVJOQVRFKQotCQlpb19iYXNlID0gQUxUX0lPX0JBU0U7Ci0JZWxzZQotCQlpb19iYXNlID0gUFJJTUFSWV9JT19CQVNFOwotCi0JaWYgKCFyZXF1ZXN0X3JlZ2lvbihpb19iYXNlLCA0LCAiZWQiKSkgewotCQlwcmludGsoS0VSTl9XQVJOSU5HIlVuYWJsZSB0byByZXF1ZXN0IHJlZ2lvbiAweCV4XG4iLCBpb19iYXNlKTsKLQkJZXJyb3IgPSAtRUJVU1k7Ci0JCWdvdG8gZXJyX291dDI7Ci0JfQotCS8qIGdldCB0aGUgZG1hIGFyYml0cmF0aW9uIGxldmVsICovCi0JZG1hX2FyYl9sZXZlbCA9IChzdGF0dXMgPj4gMikgJiAweGY7Ci0KLQkvKiBCQSAqLwotCXByaW50aygiJXM6IERNQSBhcmJpdHJhdGlvbiBsZXZlbCA6ICVkXG4iLAotCSAgICAgICBERVZJQ0VfTkFNRSwgZG1hX2FyYl9sZXZlbCk7Ci0KLQlMSVRFX09OOwotCWN1cnJlbnRfaW50X2hhbmRsZXIgPSBwczJlc2RpX2luaXRpYWxfcmVzZXRfaW50X2hhbmRsZXI7Ci0JcmVzZXRfY3RybCgpOwotCXJlc2V0X3N0YXR1cyA9IDA7Ci0JcmVzZXRfc3RhcnQgPSBqaWZmaWVzOwotCXdoaWxlICghcmVzZXRfc3RhdHVzKSB7Ci0JCWluaXRfdGltZXIoJmVzZGlfdGltZXIpOwotCQllc2RpX3RpbWVyLmV4cGlyZXMgPSBqaWZmaWVzICsgSFo7Ci0JCWVzZGlfdGltZXIuZGF0YSA9IDA7Ci0JCWFkZF90aW1lcigmZXNkaV90aW1lcik7Ci0JCXNsZWVwX29uKCZwczJlc2RpX2ludCk7Ci0JfQotCXJlc2V0X2VuZCA9IGppZmZpZXM7Ci0JTElURV9PRkY7Ci0JcHJpbnRrKCIlczogcmVzZXQgaW50ZXJydXB0IGFmdGVyICVkIGppZmZpZXMsICAldS4lMDJ1IHNlY3NcbiIsCi0JICAgICAgIERFVklDRV9OQU1FLCByZXNldF9lbmQgLSByZXNldF9zdGFydCwgKHJlc2V0X2VuZCAtIHJlc2V0X3N0YXJ0KSAvIEhaLAotCSAgICAgICAocmVzZXRfZW5kIC0gcmVzZXRfc3RhcnQpICUgSFopOwotCi0KLQkvKiBJbnRlZ3JhdGVkIEVTREkgRGlzayBhbmQgQ29udHJvbGxlciBoYXMgb25seSBvbmUgZHJpdmUhICovCi0JaWYgKGFkYXB0ZXJJRCA9PSBJTlRHX0VTRElfSUQpIHsvKiBpZiBub3QgIm5vcm1hbCIgUFMyIEVTREkgYWRhcHRlciAqLwotCQlwczJlc2RpX2RyaXZlcyA9IDE7CS8qIHRoZW4gd2UgaGF2ZSBvbmx5IG9uZSBwaHlzaWNhbCBkaXNrISAqLwkJaW50Z19lc2RpID0gMTsKLQl9Ci0KLQotCi0JLyogZmluYWxseSB0aGlzIHBhcnQgc2V0cyB1cCBzb21lIGdsb2JhbCBkYXRhIHN0cnVjdHVyZXMgZXRjLiAqLwotCi0JcHMyZXNkaV9nZXRfZGV2aWNlX2NmZygpOwotCi0JLyogc29tZSBhbm5veWFuY2UgaW4gdGhlIGFib3ZlIHJvdXRpbmUgcmV0dXJucyBUV08gZHJpdmVzPwotCSBJcyBzb21ldGhpbmcgZWxzZSBoYXBwaW5pbmcgaW4gdGhlIGJhY2tncm91bmQ/Ci0JIFJlZ2F1cmRsZXNzIHdlIGZpeCB0aGUgIyBvZiBkcml2ZXMgYWdhaW4uIEFKSyAqLwotCS8qIEludGVncmF0ZWQgRVNESSBEaXNrIGFuZCBDb250cm9sbGVyIGhhcyBvbmx5IG9uZSBkcml2ZSEgKi8KLQlpZiAoYWRhcHRlcklEID09IElOVEdfRVNESV9JRCkJLyogaWYgbm90ICJub3JtYWwiIFBTMiBFU0RJIGFkYXB0ZXIgKi8KLQkJcHMyZXNkaV9kcml2ZXMgPSAxOwkvKiBOb3QgdGhyZWUgb3IgdHdvLCBPTkUgREFNTklUISAqLwotCi0JY3VycmVudF9pbnRfaGFuZGxlciA9IHBzMmVzZGlfbm9ybWFsX2ludGVycnVwdF9oYW5kbGVyOwotCi0JaWYgKHJlcXVlc3RfZG1hKGRtYV9hcmJfbGV2ZWwsICJlZCIpICE9MCkgewotCQlwcmludGsoS0VSTl9XQVJOSU5HICJQUzJFU0RJOiBDYW4ndCByZXF1ZXN0IGRtYS1jaGFubmVsICVkXG4iCi0JCQksKGludCkgZG1hX2FyYl9sZXZlbCk7Ci0JCWVycm9yID0gLUVCVVNZOwotCQlnb3RvIGVycl9vdXQzOwotCX0KLQlibGtfcXVldWVfbWF4X3NlY3RvcnMocHMyZXNkaV9xdWV1ZSwgMTI4KTsKLQotCWVycm9yID0gLUVOT01FTTsKLQlmb3IgKGkgPSAwOyBpIDwgcHMyZXNkaV9kcml2ZXM7IGkrKykgewotCQlzdHJ1Y3QgZ2VuZGlzayAqZGlzayA9IGFsbG9jX2Rpc2soNjQpOwotCQlpZiAoIWRpc2spCi0JCQlnb3RvIGVycl9vdXQ0OwotCQlkaXNrLT5tYWpvciA9IFBTMkVTRElfTUFKT1I7Ci0JCWRpc2stPmZpcnN0X21pbm9yID0gaTw8NjsKLQkJc3ByaW50ZihkaXNrLT5kaXNrX25hbWUsICJlZCVjIiwgJ2EnK2kpOwotCQlkaXNrLT5mb3BzID0gJnBzMmVzZGlfZm9wczsKLQkJcHMyZXNkaV9nZW5kaXNrW2ldID0gZGlzazsKLQl9Ci0KLQlmb3IgKGkgPSAwOyBpIDwgcHMyZXNkaV9kcml2ZXM7IGkrKykgewotCQlzdHJ1Y3QgZ2VuZGlzayAqZGlzayA9IHBzMmVzZGlfZ2VuZGlza1tpXTsKLQkJc2V0X2NhcGFjaXR5KGRpc2ssIHBzMmVzZGlfaW5mb1tpXS5oZWFkICogcHMyZXNkaV9pbmZvW2ldLnNlY3QgKgotCQkJCXBzMmVzZGlfaW5mb1tpXS5jeWwpOwotCQlkaXNrLT5xdWV1ZSA9IHBzMmVzZGlfcXVldWU7Ci0JCWRpc2stPnByaXZhdGVfZGF0YSA9ICZwczJlc2RpX2luZm9baV07Ci0JCWFkZF9kaXNrKGRpc2spOwotCX0KLQlyZXR1cm4gMDsKLWVycl9vdXQ0OgotCXdoaWxlIChpLS0pCi0JCXB1dF9kaXNrKHBzMmVzZGlfZ2VuZGlza1tpXSk7Ci1lcnJfb3V0MzoKLQlyZWxlYXNlX3JlZ2lvbihpb19iYXNlLCA0KTsKLWVycl9vdXQyOgotCWZyZWVfaXJxKFBTMkVTRElfSVJRLCAmcHMyZXNkaV9nZW5kaXNrKTsKLWVycl9vdXQxOgotCWlmKHBzMmVzZGlfc2xvdCkgewotCQltY2FfbWFya19hc191bnVzZWQocHMyZXNkaV9zbG90KTsKLQkJbWNhX3NldF9hZGFwdGVyX3Byb2NmbihwczJlc2RpX3Nsb3QsIE5VTEwsIE5VTEwpOwotCX0KLQlyZXR1cm4gZXJyb3I7Ci19Ci0KLXN0YXRpYyB2b2lkIF9faW5pdCBwczJlc2RpX2dldF9kZXZpY2VfY2ZnKHZvaWQpCi17Ci0JdV9zaG9ydCBjbWRfYmxrW1RZUEVfMF9DTURfQkxLX0xFTkdUSF07Ci0KLQkvKkJBICovIHByaW50aygiJXM6IERyaXZlIDBcbiIsIERFVklDRV9OQU1FKTsKLQljdXJyZW50X2ludF9oYW5kbGVyID0gcHMyZXNkaV9nZW9tZXRyeV9pbnRfaGFuZGxlcjsKLQljbWRfYmxrWzBdID0gQ01EX0dFVF9ERVZfQ09ORklHIHwgMHg2MDA7Ci0JY21kX2Jsa1sxXSA9IDA7Ci0Jbm9faW50X3lldCA9IFRSVUU7Ci0JcHMyZXNkaV9vdXRfY21kX2JsayhjbWRfYmxrKTsKLQlpZiAobm9faW50X3lldCkKLQkJc2xlZXBfb24oJnBzMmVzZGlfaW50KTsKLQotCWlmIChwczJlc2RpX2RyaXZlcyA+IDEpIHsKLQkJcHJpbnRrKCIlczogRHJpdmUgMVxuIiwgREVWSUNFX05BTUUpOwkvKkJBICovCi0JCWNtZF9ibGtbMF0gPSBDTURfR0VUX0RFVl9DT05GSUcgfCAoMSA8PCA1KSB8IDB4NjAwOwotCQljbWRfYmxrWzFdID0gMDsKLQkJbm9faW50X3lldCA9IFRSVUU7Ci0JCXBzMmVzZGlfb3V0X2NtZF9ibGsoY21kX2Jsayk7Ci0JCWlmIChub19pbnRfeWV0KQotCQkJc2xlZXBfb24oJnBzMmVzZGlfaW50KTsKLQl9CQkJLyogaWYgc2Vjb25kIHBoeXNpY2FsIGRyaXZlIGlzIHByZXNlbnQgKi8KLQlyZXR1cm47Ci19Ci0KLS8qIHN0cmF0ZWd5IHJvdXRpbmUgdGhhdCBoYW5kbGVzIG1vc3Qgb2YgdGhlIElPIHJlcXVlc3RzICovCi1zdGF0aWMgdm9pZCBkb19wczJlc2RpX3JlcXVlc3Qoc3RydWN0IHJlcXVlc3RfcXVldWUgKiBxKQotewotCXN0cnVjdCByZXF1ZXN0ICpyZXE7Ci0JLyogc2luY2UsIHRoaXMgcm91dGluZSBpcyBjYWxsZWQgd2l0aCBpbnRlcnJ1cHRzIGNsZWFyZWQgLSB0aGV5IAotCSAgIG11c3QgYmUgYmVmb3JlIGl0IGZpbmlzaGVzICAqLwotCi0JcmVxID0gZWx2X25leHRfcmVxdWVzdChxKTsKLQlpZiAoIXJlcSkKLQkJcmV0dXJuOwotCi0jaWYgMAotCXByaW50aygiJXM6Z290IHJlcXVlc3QuIGRldmljZSA6ICVzIGNvbW1hbmQgOiAlZCAgc2VjdG9yIDogJWxkIGNvdW50IDogJWxkLCBidWZmZXI6ICVwXG4iLAotCSAgICAgICBERVZJQ0VfTkFNRSwKLQkgICAgICAgcmVxLT5ycV9kaXNrLT5kaXNrX25hbWUsCi0JICAgICAgIHJlcS0+Y21kLCByZXEtPnNlY3RvciwKLQkgICAgICAgcmVxLT5jdXJyZW50X25yX3NlY3RvcnMsIHJlcS0+YnVmZmVyKTsKLSNlbmRpZgotCi0JLyogY2hlY2sgZm9yIGFib3ZlIDE2TWIgZG1hcyAqLwotCWlmIChpc2FfdmlydF90b19idXMocmVxLT5idWZmZXIgKyByZXEtPmN1cnJlbnRfbnJfc2VjdG9ycyAqIDUxMikgPiAxNiAqIE1CKSB7Ci0JCXByaW50aygiJXM6IERNQSBhYm92ZSAxNk1CIG5vdCBzdXBwb3J0ZWRcbiIsIERFVklDRV9OQU1FKTsKLQkJZW5kX3JlcXVlc3QocmVxLCBGQUlMKTsKLQkJcmV0dXJuOwotCX0KLQotCWlmIChyZXEtPnNlY3RvcityZXEtPmN1cnJlbnRfbnJfc2VjdG9ycyA+IGdldF9jYXBhY2l0eShyZXEtPnJxX2Rpc2spKSB7Ci0JCXByaW50aygiR3Jyci4gZXJyb3IuIHBzMmVzZGlfZHJpdmVzOiAlZCwgJWxsdSAlbGx1XG4iLAotCQkgICAgcHMyZXNkaV9kcml2ZXMsIHJlcS0+c2VjdG9yLAotCQkgICAgKHVuc2lnbmVkIGxvbmcgbG9uZylnZXRfY2FwYWNpdHkocmVxLT5ycV9kaXNrKSk7Ci0JCWVuZF9yZXF1ZXN0KHJlcSwgRkFJTCk7Ci0JCXJldHVybjsKLQl9Ci0KLQlzd2l0Y2ggKHJxX2RhdGFfZGlyKHJlcSkpIHsKLQljYXNlIFJFQUQ6Ci0JCXBzMmVzZGlfcmVhZHdyaXRlKFJFQUQsIHJlcSk7Ci0JCWJyZWFrOwotCWNhc2UgV1JJVEU6Ci0JCXBzMmVzZGlfcmVhZHdyaXRlKFdSSVRFLCByZXEpOwotCQlicmVhazsKLQlkZWZhdWx0OgotCQlwcmludGsoIiVzOiBVbmtub3duIGNvbW1hbmRcbiIsIHJlcS0+cnFfZGlzay0+ZGlza19uYW1lKTsKLQkJZW5kX3JlcXVlc3QocmVxLCBGQUlMKTsKLQkJYnJlYWs7Ci0JfQkJLyogaGFuZGxlIGRpZmZlcmVudCBjb21tYW5kcyAqLwotfQkJCQkvKiBtYWluIHN0cmF0ZWd5IHJvdXRpbmUgKi8KLQotLyogcmVzZXRzIHRoZSBFU0RJIGFkYXB0ZXIgKi8KLXN0YXRpYyB2b2lkIHJlc2V0X2N0cmwodm9pZCkKLXsKLQotCXVfbG9uZyBleHBpcmU7Ci0JdV9zaG9ydCBzdGF0dXM7Ci0KLQkvKiBlbmFibGUgaW50ZXJydXB0cyBvbiB0aGUgY29udHJvbGxlciAqLwotCXN0YXR1cyA9IGluYihFU0RJX0lOVFJQVCk7Ci0Jb3V0Yigoc3RhdHVzICYgMHhlMCkgfCBBVFRfRU9JLCBFU0RJX0FUVE4pOwkvKiB0byBiZSBzdXJlIHdlIGRvbid0IGhhdmUKLQkJCQkJCQkgICBhbnkgaW50ZXJydXB0IHBlbmRpbmcuLi4gKi8KLQlvdXRiX3AoQ1RSTF9FTkFCTEVfSU5UUiwgRVNESV9DT05UUk9MKTsKLQotCS8qIHJlYWQgdGhlIEVTREkgc3RhdHVzIHBvcnQgLSBpZiB0aGUgY29udHJvbGxlciBpcyBub3QgYnVzeSwKLQkgICBzaW1wbHkgZG8gYSBzb2Z0IHJlc2V0IChmYXN0KSAtIG90aGVyd2lzZSB3ZSdsbCBoYXZlIHRvIGRvIGEKLQkgICBoYXJkIChzbG93KSByZXNldC4gICovCi0JaWYgKCEoaW5iX3AoRVNESV9TVEFUVVMpICYgU1RBVFVTX0JVU1kpKSB7Ci0JCS8qQkEgKi8gcHJpbnRrKCIlczogc29mdCByZXNldC4uLlxuIiwgREVWSUNFX05BTUUpOwotCQlvdXRiX3AoQ1RSTF9TT0ZUX1JFU0VULCBFU0RJX0FUVE4pOwotCX0KLQkvKiBzb2Z0IHJlc2V0ICovIAotCWVsc2UgewotCQkvKkJBICovCi0JCXByaW50aygiJXM6IGhhcmQgcmVzZXQuLi5cbiIsIERFVklDRV9OQU1FKTsKLQkJb3V0Yl9wKENUUkxfSEFSRF9SRVNFVCwgRVNESV9DT05UUk9MKTsKLQkJZXhwaXJlID0gamlmZmllcyArIDIqSFo7Ci0JCXdoaWxlICh0aW1lX2JlZm9yZShqaWZmaWVzLCBleHBpcmUpKTsKLQkJb3V0Yl9wKDEsIEVTRElfQ09OVFJPTCk7Ci0JfQkJCS8qIGhhcmQgcmVzZXQgKi8KLQotCi19CQkJCS8qIHJlc2V0IHRoZSBjb250cm9sbGVyICovCi0KLS8qIGNhbGxlZCBieSB0aGUgc3RyYXRlZ3kgcm91dGluZSB0byBoYW5kbGUgcmVhZCBhbmQgd3JpdGUgcmVxdWVzdHMgKi8KLXN0YXRpYyB2b2lkIHBzMmVzZGlfcmVhZHdyaXRlKGludCBjbWQsIHN0cnVjdCByZXF1ZXN0ICpyZXEpCi17Ci0Jc3RydWN0IHBzMmVzZGlfaV9zdHJ1Y3QgKnAgPSByZXEtPnJxX2Rpc2stPnByaXZhdGVfZGF0YTsKLQl1bnNpZ25lZCBibG9jayA9IHJlcS0+c2VjdG9yOwotCXVuc2lnbmVkIGNvdW50ID0gcmVxLT5jdXJyZW50X25yX3NlY3RvcnM7Ci0JaW50IGRyaXZlID0gcCAtIHBzMmVzZGlfaW5mbzsKLQl1X3Nob3J0IHRyYWNrLCBoZWFkLCBjeWxpbmRlciwgc2VjdG9yOwotCXVfc2hvcnQgY21kX2Jsa1tUWVBFXzFfQ01EX0JMS19MRU5HVEhdOwotCi0JLyogZG8gc29tZSByZWxldmFudCBhcml0aG1hdGljICovCi0JdHJhY2sgPSBibG9jayAvIHAtPnNlY3Q7Ci0JaGVhZCA9IHRyYWNrICUgcC0+aGVhZDsKLQljeWxpbmRlciA9IHRyYWNrIC8gcC0+aGVhZDsKLQlzZWN0b3IgPSBibG9jayAlIHAtPnNlY3Q7Ci0KLSNpZiAwCi0JcHJpbnRrKCIlczogY3lsPSVkIGhlYWQ9JWQgc2VjdD0lZFxuIiwgREVWSUNFX05BTUUsIGN5bGluZGVyLCBoZWFkLCBzZWN0b3IpOwotI2VuZGlmCi0JLyogY2FsbCB0aGUgcm91dGluZSB0aGF0IGFjdHVhbGx5IGZpbGxzIG91dCBhIGNvbW1hbmQgYmxvY2sgKi8KLQlwczJlc2RpX2ZpbGxfY21kX2Jsb2NrCi0JICAgIChjbWRfYmxrLAotCSAgICAgKGNtZCA9PSBSRUFEKSA/IENNRF9SRUFEIDogQ01EX1dSSVRFLAotCSAgICAgY3lsaW5kZXIsIGhlYWQsIHNlY3RvciwgY291bnQsIGRyaXZlKTsKLQotCS8qIHNlbmQgdGhlIGNvbW1hbmQgYmxvY2sgdG8gdGhlIGNvbnRyb2xsZXIgKi8KLQljdXJyZW50X3JlcSA9IHJlcTsKLQlzcGluX3VubG9ja19pcnEoJnBzMmVzZGlfbG9jayk7Ci0JaWYgKHBzMmVzZGlfb3V0X2NtZF9ibGsoY21kX2JsaykpIHsKLQkJc3Bpbl9sb2NrX2lycSgmcHMyZXNkaV9sb2NrKTsKLQkJcHJpbnRrKCIlczogQ29udHJvbGxlciBmYWlsZWRcbiIsIERFVklDRV9OQU1FKTsKLQkJaWYgKCgrK3JlcS0+ZXJyb3JzKSA+PSBNQVhfUkVUUklFUykKLQkJCWVuZF9yZXF1ZXN0KHJlcSwgRkFJTCk7Ci0JfQotCS8qIGNoZWNrIGZvciBmYWlsdXJlIHRvIHB1dCBvdXQgdGhlIGNvbW1hbmQgYmxvY2sgKi8gCi0JZWxzZSB7Ci0JCXNwaW5fbG9ja19pcnEoJnBzMmVzZGlfbG9jayk7Ci0jaWYgMAotCQlwcmludGsoIiVzOiB3YWl0aW5nIGZvciB4ZmVyXG4iLCBERVZJQ0VfTkFNRSk7Ci0jZW5kaWYKLQkJLyogdHVybiBkaXNrIGxpZ2h0cyBvbiAqLwotCQlMSVRFX09OOwotCX0KLQotfQkJCQkvKiBwczJlc2RpX3JlYWR3cml0ZSAqLwotCi0vKiBmaWxsIG91dCB0aGUgY29tbWFuZCBibG9jayAqLwotc3RhdGljIHZvaWQgcHMyZXNkaV9maWxsX2NtZF9ibG9jayh1X3Nob3J0ICogY21kX2JsaywgdV9zaG9ydCBjbWQsCi0gdV9zaG9ydCBjeWwsIHVfc2hvcnQgaGVhZCwgdV9zaG9ydCBzZWN0b3IsIHVfc2hvcnQgbGVuZ3RoLCB1X2NoYXIgZHJpdmUpCi17Ci0KLQljbWRfYmxrWzBdID0gKGRyaXZlIDw8IDUpIHwgY21kOwotCWNtZF9ibGtbMV0gPSBsZW5ndGg7Ci0JY21kX2Jsa1syXSA9ICgoY3lsICYgMHgxZikgPDwgMTEpIHwgKGhlYWQgPDwgNSkgfCBzZWN0b3I7Ci0JY21kX2Jsa1szXSA9IChjeWwgJiAweDNFMCkgPj4gNTsKLQotfQkJCQkvKiBmaWxsIG91dCB0aGUgY29tbWFuZCBibG9jayAqLwotCi0vKiB3cml0ZSBhIGNvbW1hbmQgYmxvY2sgdG8gdGhlIGNvbnRyb2xsZXIgKi8KLXN0YXRpYyBpbnQgcHMyZXNkaV9vdXRfY21kX2Jsayh1X3Nob3J0ICogY21kX2JsaykKLXsKLQotCWludCBpOwotCXVuc2lnbmVkIGxvbmcgamlmOwotCXVfY2hhciBzdGF0dXM7Ci0KLQkvKiBlbmFibGUgaW50ZXJydXB0cyAqLwotCW91dGIoQ1RSTF9FTkFCTEVfSU5UUiwgRVNESV9DT05UUk9MKTsKLQotCS8qIGRvIG5vdCB3cml0ZSB0byB0aGUgY29udHJvbGxlciwgaWYgaXQgaXMgYnVzeSAqLwotCWZvciAoamlmID0gamlmZmllcyArIEVTRElfU1RBVF9USU1FT1VUOwotCQl0aW1lX2FmdGVyKGppZiwgamlmZmllcykgJiYKLQkJCShpbmIoRVNESV9TVEFUVVMpICYgU1RBVFVTX0JVU1kpOyApCi0JCTsKLQotI2lmIDAKLQlwcmludGsoIiVzOiBpKDEpPSVsZFxuIiwgREVWSUNFX05BTUUsIGppZik7Ci0jZW5kaWYKLQotCS8qIGlmIGRldmljZSBpcyBzdGlsbCBidXN5IC0gdGhlbiBqdXN0IHRpbWUgb3V0ICovCi0JaWYgKGluYihFU0RJX1NUQVRVUykgJiBTVEFUVVNfQlVTWSkgewotCQlwcmludGsoIiVzOiBwczJlc2RpX291dF9jbWQgdGltZWQgb3V0ICgxKVxuIiwgREVWSUNFX05BTUUpOwotCQlyZXR1cm4gRVJST1I7Ci0JfQkJCS8qIHRpbWVvdXQgPz8/ICovCi0JLyogU2V0IHVwIHRoZSBhdHRlbnRpb24gcmVnaXN0ZXIgaW4gdGhlIGNvbnRyb2xsZXIgKi8KLQlvdXRiKCgoKmNtZF9ibGspICYgMHhFMCkgfCAxLCBFU0RJX0FUVE4pOwotCi0jaWYgMAotCXByaW50aygiJXM6IHNlbmRpbmcgJWQgd29yZHMgdG8gY29udHJvbGxlclxuIiwgREVWSUNFX05BTUUsICgoKCpjbWRfYmxrKSA+PiAxNCkgKyAxKSA8PCAxKTsKLSNlbmRpZgotCi0JLyogb25lIGJ5IG9uZSBzZW5kIGVhY2ggd29yZCBvdXQgKi8KLQlmb3IgKGkgPSAoKCgqY21kX2JsaykgPj4gMTQpICsgMSkgPDwgMTsgaTsgaS0tKSB7Ci0JCXN0YXR1cyA9IGluYihFU0RJX1NUQVRVUyk7Ci0JCWZvciAoamlmID0gamlmZmllcyArIEVTRElfU1RBVF9USU1FT1VUOwotCQkgICAgIHRpbWVfYWZ0ZXIoamlmLCBqaWZmaWVzKSAmJiAoc3RhdHVzICYgU1RBVFVTX0JVU1kpICYmCi0JCSAgIChzdGF0dXMgJiBTVEFUVVNfQ01EX0lORik7IHN0YXR1cyA9IGluYihFU0RJX1NUQVRVUykpOwotCQlpZiAoKHN0YXR1cyAmIChTVEFUVVNfQlVTWSB8IFNUQVRVU19DTURfSU5GKSkgPT0gU1RBVFVTX0JVU1kpIHsKLSNpZiAwCi0JCQlwcmludGsoIiVzOiBzZW5kaW5nICUwNFhcbiIsIERFVklDRV9OQU1FLCAqY21kX2Jsayk7Ci0jZW5kaWYKLQkJCW91dHcoKmNtZF9ibGsrKywgRVNESV9DTURfSU5UKTsKLQkJfSBlbHNlIHsKLQkJCXByaW50aygiJXM6IHBzMmVzZGlfb3V0X2NtZCB0aW1lZCBvdXQgd2hpbGUgc2VuZGluZyBjb21tYW5kIChzdGF0dXM9JTAyWClcbiIsCi0JCQkgICAgICAgREVWSUNFX05BTUUsIHN0YXR1cyk7Ci0JCQlyZXR1cm4gRVJST1I7Ci0JCX0KLQl9CQkJLyogc2VuZCBhbGwgd29yZHMgb3V0ICovCi0JcmV0dXJuIE9LOwotfQkJCQkvKiBzZW5kIG91dCB0aGUgY29tbWFuZHMgKi8KLQotCi0vKiBwcmVwYXJlIGZvciBkbWEgLSBkbyBhbGwgdGhlIG5lY2Vzc2FyeSBzZXR1cCAqLwotc3RhdGljIHZvaWQgcHMyZXNkaV9wcmVwX2RtYShjaGFyICpidWZmZXIsIHVfc2hvcnQgbGVuZ3RoLCB1X2NoYXIgZG1hX3htb2RlKQotewotCXVuc2lnbmVkIGxvbmcgZmxhZ3MgPSBjbGFpbV9kbWFfbG9jaygpOwotCi0JbWNhX2Rpc2FibGVfZG1hKGRtYV9hcmJfbGV2ZWwpOwotCi0JbWNhX3NldF9kbWFfYWRkcihkbWFfYXJiX2xldmVsLCBpc2FfdmlydF90b19idXMoYnVmZmVyKSk7Ci0KLQltY2Ffc2V0X2RtYV9jb3VudChkbWFfYXJiX2xldmVsLCBsZW5ndGggKiA1MTIgLyAyKTsKLQotCW1jYV9zZXRfZG1hX21vZGUoZG1hX2FyYl9sZXZlbCwgZG1hX3htb2RlKTsKLQotCW1jYV9lbmFibGVfZG1hKGRtYV9hcmJfbGV2ZWwpOwotCi0JcmVsZWFzZV9kbWFfbG9jayhmbGFncyk7Ci0KLX0JCQkJLyogcHJlcGFyZSBmb3IgZG1hICovCi0KLQotCi1zdGF0aWMgaXJxcmV0dXJuX3QgcHMyZXNkaV9pbnRlcnJ1cHRfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkZXZfaWQpCi17Ci0JdV9pbnQgaW50X3JldF9jb2RlOwotCi0JaWYgKGluYihFU0RJX1NUQVRVUykgJiBTVEFUVVNfSU5UUikgewotCQlpbnRfcmV0X2NvZGUgPSBpbmIoRVNESV9JTlRSUFQpOwotCQlpZiAoY3VycmVudF9pbnRfaGFuZGxlcikgewotCQkJLyogRGlzYWJsZSBhZGFwdGVyIGludGVycnVwdHMgdGlsbCBwcm9jZXNzaW5nIGlzIGZpbmlzaGVkICovCi0JCQlvdXRiKENUUkxfRElTQUJMRV9JTlRSLCBFU0RJX0NPTlRST0wpOwotCQkJY3VycmVudF9pbnRfaGFuZGxlcihpbnRfcmV0X2NvZGUpOwotCQl9IGVsc2UKLQkJCXByaW50aygiJXM6IGhlbHAgISBObyBpbnRlcnJ1cHQgaGFuZGxlci5cbiIsIERFVklDRV9OQU1FKTsKLQl9IGVsc2UgewotCQlyZXR1cm4gSVJRX05PTkU7Ci0JfQotCXJldHVybiBJUlFfSEFORExFRDsKLX0KLQotc3RhdGljIHZvaWQgcHMyZXNkaV9pbml0aWFsX3Jlc2V0X2ludF9oYW5kbGVyKHVfaW50IGludF9yZXRfY29kZSkKLXsKLQotCXN3aXRjaCAoaW50X3JldF9jb2RlICYgMHhmKSB7Ci0JY2FzZSBJTlRfUkVTRVQ6Ci0JCS8qQkEgKi8KLQkJcHJpbnRrKCIlczogaW5pdGlhbCByZXNldCBjb21wbGV0ZWQuXG4iLCBERVZJQ0VfTkFNRSk7Ci0JCW91dGIoKGludF9yZXRfY29kZSAmIDB4ZTApIHwgQVRUX0VPSSwgRVNESV9BVFROKTsKLQkJd2FrZV91cCgmcHMyZXNkaV9pbnQpOwotCQlicmVhazsKLQljYXNlIElOVF9BVFROX0VSUk9SOgotCQlwcmludGsoIiVzOiBBdHRlbnRpb24gZXJyb3IuIGludGVycnVwdCBzdGF0dXMgOiAlMDJYXG4iLCBERVZJQ0VfTkFNRSwKLQkJICAgICAgIGludF9yZXRfY29kZSk7Ci0JCXByaW50aygiJXM6IHN0YXR1czogJTAyeFxuIiwgREVWSUNFX05BTUUsIGluYihFU0RJX1NUQVRVUykpOwotCQlicmVhazsKLQlkZWZhdWx0OgotCQlwcmludGsoIiVzOiBpbml0aWFsIHJlc2V0IGhhbmRsZXIgcmVjZWl2ZWQgaW50ZXJydXB0OiAlMDJYXG4iLAotCQkgICAgICAgREVWSUNFX05BTUUsIGludF9yZXRfY29kZSk7Ci0JCW91dGIoKGludF9yZXRfY29kZSAmIDB4ZTApIHwgQVRUX0VPSSwgRVNESV9BVFROKTsKLQkJYnJlYWs7Ci0JfQotCW91dGIoQ1RSTF9FTkFCTEVfSU5UUiwgRVNESV9DT05UUk9MKTsKLX0KLQotCi1zdGF0aWMgdm9pZCBwczJlc2RpX2dlb21ldHJ5X2ludF9oYW5kbGVyKHVfaW50IGludF9yZXRfY29kZSkKLXsKLQl1X2ludCBzdGF0dXMsIGRyaXZlX251bTsKLQl1bnNpZ25lZCBsb25nIHJiYTsKLQlpbnQgaTsKLQotCWRyaXZlX251bSA9IGludF9yZXRfY29kZSA+PiA1OwotCXN3aXRjaCAoaW50X3JldF9jb2RlICYgMHhmKSB7Ci0JY2FzZSBJTlRfQ01EX0NPTVBMRVRFOgotCQlmb3IgKGkgPSBFU0RJX1RJTUVPVVQ7IGkgJiYgIShpbmIoRVNESV9TVEFUVVMpICYgU1RBVFVTX1NUQVRfQVZBSUwpOyBpLS0pOwotCQlpZiAoIShpbmIoRVNESV9TVEFUVVMpICYgU1RBVFVTX1NUQVRfQVZBSUwpKSB7Ci0JCQlwcmludGsoIiVzOiB0aW1lb3V0IHJlYWRpbmcgc3RhdHVzIHdvcmRcbiIsIERFVklDRV9OQU1FKTsKLQkJCW91dGIoKGludF9yZXRfY29kZSAmIDB4ZTApIHwgQVRUX0VPSSwgRVNESV9BVFROKTsKLQkJCWJyZWFrOwotCQl9Ci0JCXN0YXR1cyA9IGludyhFU0RJX1NUVF9JTlQpOwotCQlpZiAoKHN0YXR1cyAmIDB4MUYpID09IENNRF9HRVRfREVWX0NPTkZJRykgewotI2RlZmluZSBSRVBMWV9XT1JEUyA1CQkvKiB3ZSBhbHJlYWR5IHJlYWQgd29yZCAwICovCi0JCQl1X3Nob3J0IHJlcGx5W1JFUExZX1dPUkRTXTsKLQotCQkJaWYgKHBzMmVzZGlfcmVhZF9zdGF0dXNfd29yZHMoKHN0YXR1cyA+PiA4KSAtIDEsIFJFUExZX1dPUkRTLCByZXBseSkpIHsKLQkJCQkvKkJBICovCi0JCQkJcHJpbnRrKCIlczogRGV2aWNlIENvbmZpZ3VyYXRpb24gU3RhdHVzIGZvciBkcml2ZSAldVxuIiwKLQkJCQkgICAgICAgREVWSUNFX05BTUUsIGRyaXZlX251bSk7Ci0KLQkJCQlwcmludGsoIiVzOiBTcGFyZXMvY3lsczogJXUiLCBERVZJQ0VfTkFNRSwgcmVwbHlbMF0gPj4gOCk7Ci0KLQkJCQlwcmludGsKLQkJCQkgICAgKCJDb25maWcgYml0czogJXMlcyVzJXMlc1xuIiwKLQkJCQkgICAgIChyZXBseVswXSAmIENPTkZJR19JUykgPyAiSW52YWxpZCBTZWNvbmRhcnksICIgOiAiIiwKLQkJCQkgICAgICgocmVwbHlbMF0gJiBDT05GSUdfWkQpICYmICEocmVwbHlbMF0gJiBDT05GSUdfSVMpKQotCQkJCSA/ICJaZXJvIERlZmVjdCwgIiA6ICJEZWZlY3RzIFByZXNlbnQsICIsCi0JCQkJICAgICAocmVwbHlbMF0gJiBDT05GSUdfU0YpID8gIlNrZXdlZCBGb3JtYXQsICIgOiAiIiwKLQkJCQkgICAgIChyZXBseVswXSAmIENPTkZJR19GUikgPyAiUmVtb3ZhYmxlLCAiIDogIk5vbi1SZW1vdmFibGUsICIsCi0JCQkJICAgICAocmVwbHlbMF0gJiBDT05GSUdfUlQpID8gIk5vIFJldHJpZXMiIDogIlJldHJpZXMiKTsKLQotCQkJCXJiYSA9IHJlcGx5WzFdIHwgKCh1bnNpZ25lZCBsb25nKSByZXBseVsyXSA8PCAxNik7Ci0JCQkJcHJpbnRrKCIlczogTnVtYmVyIG9mIFJCQSdzOiAlbHVcbiIsIERFVklDRV9OQU1FLCByYmEpOwotCi0JCQkJcHJpbnRrKCIlczogUGh5c2ljYWwgbnVtYmVyIG9mIGN5bGluZGVyczogJXUsIFNlY3RvcnMvVHJhY2s6ICV1LCBIZWFkczogJXVcbiIsCi0JCQkJICAgICAgIERFVklDRV9OQU1FLCByZXBseVszXSwgcmVwbHlbNF0gPj4gOCwgcmVwbHlbNF0gJiAweGZmKTsKLQotCQkJCWlmICghcHMyZXNkaV9pbmZvW2RyaXZlX251bV0uaGVhZCkgewotCQkJCQlwczJlc2RpX2luZm9bZHJpdmVfbnVtXS5oZWFkID0gNjQ7Ci0JCQkJCXBzMmVzZGlfaW5mb1tkcml2ZV9udW1dLnNlY3QgPSAzMjsKLQkJCQkJcHMyZXNkaV9pbmZvW2RyaXZlX251bV0uY3lsID0gcmJhIC8gKDY0ICogMzIpOwotCQkJCQlwczJlc2RpX2luZm9bZHJpdmVfbnVtXS53cGNvbSA9IDA7Ci0JCQkJCXBzMmVzZGlfaW5mb1tkcml2ZV9udW1dLmx6b25lID0gcHMyZXNkaV9pbmZvW2RyaXZlX251bV0uY3lsOwotCQkJCQlwczJlc2RpX2luZm9bZHJpdmVfbnVtXS5jdGwgPSA4OwotCQkJCQlpZiAodHA3MjBlc2RpKSB7CS8qIHN0b3JlIHRoZSByZXRyaWV2ZWQgcGFyYW1ldGVycyAqLwotCQkJCQkJcHMyZXNkaV9pbmZvWzBdLmhlYWQgPSByZXBseVs0XSAmIDBYZmY7Ci0JCQkJCQlwczJlc2RpX2luZm9bMF0uc2VjdCA9IHJlcGx5WzRdID4+IDg7Ci0JCQkJCQlwczJlc2RpX2luZm9bMF0uY3lsID0gcmVwbHlbM107Ci0JCQkJCQlwczJlc2RpX2luZm9bMF0ud3Bjb20gPSAwOwotCQkJCQkJcHMyZXNkaV9pbmZvWzBdLmx6b25lID0gcmVwbHlbM107Ci0JCQkJCX0gZWxzZSB7Ci0JCQkJCQlpZiAoIWludGdfZXNkaSkKLQkJCQkJCQlwczJlc2RpX2RyaXZlcysrOwotCQkJCQl9Ci0JCQkJfQotI2lmZGVmIE9CU09MRVRFCi0JCQkJaWYgKCFwczJlc2RpX2luZm9bZHJpdmVfbnVtXS5oZWFkKSB7Ci0JCQkJCXBzMmVzZGlfaW5mb1tkcml2ZV9udW1dLmhlYWQgPSByZXBseVs0XSAmIDBYZmY7Ci0JCQkJCXBzMmVzZGlfaW5mb1tkcml2ZV9udW1dLnNlY3QgPSByZXBseVs0XSA+PiA4OwotCQkJCQlwczJlc2RpX2luZm9bZHJpdmVfbnVtXS5jeWwgPSByZXBseVszXTsKLQkJCQkJcHMyZXNkaV9pbmZvW2RyaXZlX251bV0ud3Bjb20gPSAwOwotCQkJCQlwczJlc2RpX2luZm9bZHJpdmVfbnVtXS5sem9uZSA9IHJlcGx5WzNdOwotCQkJCQlpZiAodHA3MjBlc2RpKSB7CS8qIHN0b3JlIHRoZSByZXRyaWV2ZWQgcGFyYW1ldGVycyAqLwotCQkJCQkJcHMyZXNkaV9pbmZvWzBdLmhlYWQgPSByZXBseVs0XSAmIDBYZmY7Ci0JCQkJCQlwczJlc2RpX2luZm9bMF0uc2VjdCA9IHJlcGx5WzRdID4+IDg7Ci0JCQkJCQlwczJlc2RpX2luZm9bMF0uY3lsID0gcmVwbHlbM107Ci0JCQkJCQlwczJlc2RpX2luZm9bMF0ud3Bjb20gPSAwOwotCQkJCQkJcHMyZXNkaV9pbmZvWzBdLmx6b25lID0gcmVwbHlbM107Ci0JCQkJCX0gZWxzZSB7Ci0JCQkJCQlwczJlc2RpX2RyaXZlcysrOwotCQkJCQl9Ci0JCQkJfQotI2VuZGlmCi0KLQkJCX0gZWxzZQotCQkJCXByaW50aygiJXM6IGZhaWxlZCB3aGlsZSBnZXR0aW5nIGRldmljZSBjb25maWdcbiIsIERFVklDRV9OQU1FKTsKLSN1bmRlZiBSRVBMWV9XT1JEUwotCQl9IGVsc2UKLQkJCXByaW50aygiJXM6IGNvbW1hbmQgJTAyWCB1bmtub3duIGJ5IGdlb21ldHJ5IGhhbmRsZXJcbiIsCi0JCQkgICAgICAgREVWSUNFX05BTUUsIHN0YXR1cyAmIDB4MWYpOwotCi0JCW91dGIoKGludF9yZXRfY29kZSAmIDB4ZTApIHwgQVRUX0VPSSwgRVNESV9BVFROKTsKLQkJYnJlYWs7Ci0KLQljYXNlIElOVF9BVFROX0VSUk9SOgotCQlwcmludGsoIiVzOiBBdHRlbnRpb24gZXJyb3IuIGludGVycnVwdCBzdGF0dXMgOiAlMDJYXG4iLCBERVZJQ0VfTkFNRSwKLQkJICAgICAgIGludF9yZXRfY29kZSk7Ci0JCXByaW50aygiJXM6IERldmljZSBub3QgYXZhaWxhYmxlXG4iLCBERVZJQ0VfTkFNRSk7Ci0JCWJyZWFrOwotCWNhc2UgSU5UX0NNRF9FQ0M6Ci0JY2FzZSBJTlRfQ01EX1JFVFJZOgotCWNhc2UgSU5UX0NNRF9FQ0NfUkVUUlk6Ci0JY2FzZSBJTlRfQ01EX1dBUk5JTkc6Ci0JY2FzZSBJTlRfQ01EX0FCT1JUOgotCWNhc2UgSU5UX0NNRF9GQUlMRUQ6Ci0JY2FzZSBJTlRfRE1BX0VSUjoKLQljYXNlIElOVF9DTURfQkxLX0VSUjoKLQkJLypCQSAqLyBwcmludGsoIiVzOiBXaGFhLiBFcnJvciBvY2N1cnJlZC4uLlxuIiwgREVWSUNFX05BTUUpOwotCQlkdW1wX2NtZF9jb21wbGV0ZV9zdGF0dXMoaW50X3JldF9jb2RlKTsKLQkJb3V0YigoaW50X3JldF9jb2RlICYgMHhlMCkgfCBBVFRfRU9JLCBFU0RJX0FUVE4pOwotCQlicmVhazsKLQlkZWZhdWx0OgotCQlwcmludGsoIiVzOiBVbmtub3duIGludGVycnVwdCByZWFzb246ICUwMlhcbiIsCi0JCSAgICAgICBERVZJQ0VfTkFNRSwgaW50X3JldF9jb2RlICYgMHhmKTsKLQkJb3V0YigoaW50X3JldF9jb2RlICYgMHhlMCkgfCBBVFRfRU9JLCBFU0RJX0FUVE4pOwotCQlicmVhazsKLQl9Ci0KLQl3YWtlX3VwKCZwczJlc2RpX2ludCk7Ci0Jbm9faW50X3lldCA9IEZBTFNFOwotCW91dGIoQ1RSTF9FTkFCTEVfSU5UUiwgRVNESV9DT05UUk9MKTsKLQotfQotCi1zdGF0aWMgdm9pZCBwczJlc2RpX25vcm1hbF9pbnRlcnJ1cHRfaGFuZGxlcih1X2ludCBpbnRfcmV0X2NvZGUpCi17Ci0JdW5zaWduZWQgbG9uZyBmbGFnczsKLQl1X2ludCBzdGF0dXM7Ci0JdV9pbnQgZW5kaW5nOwotCWludCBpOwotCi0Jc3dpdGNoIChpbnRfcmV0X2NvZGUgJiAweDBmKSB7Ci0JY2FzZSBJTlRfVFJBTlNGRVJfUkVROgotCQlwczJlc2RpX3ByZXBfZG1hKGN1cnJlbnRfcmVxLT5idWZmZXIsCi0JCQkJIGN1cnJlbnRfcmVxLT5jdXJyZW50X25yX3NlY3RvcnMsCi0JCSAgICAocnFfZGF0YV9kaXIoY3VycmVudF9yZXEpID09IFJFQUQpCi0JCSAgICA/IE1DQV9ETUFfTU9ERV8xNiB8IE1DQV9ETUFfTU9ERV9XUklURSB8IE1DQV9ETUFfTU9ERV9YRkVSCi0JCSAgICA6IE1DQV9ETUFfTU9ERV8xNiB8IE1DQV9ETUFfTU9ERV9SRUFEKTsKLQkJb3V0YihDVFJMX0VOQUJMRV9ETUEgfCBDVFJMX0VOQUJMRV9JTlRSLCBFU0RJX0NPTlRST0wpOwotCQllbmRpbmcgPSAtMTsKLQkJYnJlYWs7Ci0KLQljYXNlIElOVF9BVFROX0VSUk9SOgotCQlwcmludGsoIiVzOiBBdHRlbnRpb24gZXJyb3IuIGludGVycnVwdCBzdGF0dXMgOiAlMDJYXG4iLCBERVZJQ0VfTkFNRSwKLQkJICAgICAgIGludF9yZXRfY29kZSk7Ci0JCW91dGIoQ1RSTF9FTkFCTEVfSU5UUiwgRVNESV9DT05UUk9MKTsKLQkJZW5kaW5nID0gRkFJTDsKLQkJYnJlYWs7Ci0KLQljYXNlIElOVF9DTURfQ09NUExFVEU6Ci0JCWZvciAoaSA9IEVTRElfVElNRU9VVDsgaSAmJiAhKGluYihFU0RJX1NUQVRVUykgJiBTVEFUVVNfU1RBVF9BVkFJTCk7IGktLSk7Ci0JCWlmICghKGluYihFU0RJX1NUQVRVUykgJiBTVEFUVVNfU1RBVF9BVkFJTCkpIHsKLQkJCXByaW50aygiJXM6IHRpbWVvdXQgcmVhZGluZyBzdGF0dXMgd29yZFxuIiwgREVWSUNFX05BTUUpOwotCQkJb3V0YigoaW50X3JldF9jb2RlICYgMHhlMCkgfCBBVFRfRU9JLCBFU0RJX0FUVE4pOwotCQkJb3V0YihDVFJMX0VOQUJMRV9JTlRSLCBFU0RJX0NPTlRST0wpOwotCQkJaWYgKCgrK2N1cnJlbnRfcmVxLT5lcnJvcnMpID49IE1BWF9SRVRSSUVTKQotCQkJCWVuZGluZyA9IEZBSUw7Ci0JCQllbHNlCi0JCQkJZW5kaW5nID0gLTE7Ci0JCQlicmVhazsKLQkJfQotCQlzdGF0dXMgPSBpbncoRVNESV9TVFRfSU5UKTsKLQkJc3dpdGNoIChzdGF0dXMgJiAweDFGKSB7Ci0JCWNhc2UgKENNRF9SRUFEICYgMHhmZik6Ci0JCWNhc2UgKENNRF9XUklURSAmIDB4ZmYpOgotCQkJTElURV9PRkY7Ci0JCQlvdXRiKChpbnRfcmV0X2NvZGUgJiAweGUwKSB8IEFUVF9FT0ksIEVTRElfQVRUTik7Ci0JCQlvdXRiKENUUkxfRU5BQkxFX0lOVFIsIEVTRElfQ09OVFJPTCk7Ci0JCQllbmRpbmcgPSBTVUNDRVM7Ci0JCQlicmVhazsKLQkJZGVmYXVsdDoKLQkJCXByaW50aygiJXM6IGludGVycnVwdCBmb3IgdW5rbm93biBjb21tYW5kICUwMlhcbiIsCi0JCQkgICAgICAgREVWSUNFX05BTUUsIHN0YXR1cyAmIDB4MWYpOwotCQkJb3V0YigoaW50X3JldF9jb2RlICYgMHhlMCkgfCBBVFRfRU9JLCBFU0RJX0FUVE4pOwotCQkJb3V0YihDVFJMX0VOQUJMRV9JTlRSLCBFU0RJX0NPTlRST0wpOwotCQkJZW5kaW5nID0gLTE7Ci0JCQlicmVhazsKLQkJfQotCQlicmVhazsKLQljYXNlIElOVF9DTURfRUNDOgotCWNhc2UgSU5UX0NNRF9SRVRSWToKLQljYXNlIElOVF9DTURfRUNDX1JFVFJZOgotCQlMSVRFX09GRjsKLQkJZHVtcF9jbWRfY29tcGxldGVfc3RhdHVzKGludF9yZXRfY29kZSk7Ci0JCW91dGIoKGludF9yZXRfY29kZSAmIDB4ZTApIHwgQVRUX0VPSSwgRVNESV9BVFROKTsKLQkJb3V0YihDVFJMX0VOQUJMRV9JTlRSLCBFU0RJX0NPTlRST0wpOwotCQllbmRpbmcgPSBTVUNDRVM7Ci0JCWJyZWFrOwotCWNhc2UgSU5UX0NNRF9XQVJOSU5HOgotCWNhc2UgSU5UX0NNRF9BQk9SVDoKLQljYXNlIElOVF9DTURfRkFJTEVEOgotCWNhc2UgSU5UX0RNQV9FUlI6Ci0JCUxJVEVfT0ZGOwotCQlkdW1wX2NtZF9jb21wbGV0ZV9zdGF0dXMoaW50X3JldF9jb2RlKTsKLQkJb3V0YigoaW50X3JldF9jb2RlICYgMHhlMCkgfCBBVFRfRU9JLCBFU0RJX0FUVE4pOwotCQlvdXRiKENUUkxfRU5BQkxFX0lOVFIsIEVTRElfQ09OVFJPTCk7Ci0JCWlmICgoKytjdXJyZW50X3JlcS0+ZXJyb3JzKSA+PSBNQVhfUkVUUklFUykKLQkJCWVuZGluZyA9IEZBSUw7Ci0JCWVsc2UKLQkJCWVuZGluZyA9IC0xOwotCQlicmVhazsKLQotCWNhc2UgSU5UX0NNRF9CTEtfRVJSOgotCQlkdW1wX2NtZF9jb21wbGV0ZV9zdGF0dXMoaW50X3JldF9jb2RlKTsKLQkJb3V0YigoaW50X3JldF9jb2RlICYgMHhlMCkgfCBBVFRfRU9JLCBFU0RJX0FUVE4pOwotCQlvdXRiKENUUkxfRU5BQkxFX0lOVFIsIEVTRElfQ09OVFJPTCk7Ci0JCWVuZGluZyA9IEZBSUw7Ci0JCWJyZWFrOwotCi0JY2FzZSBJTlRfQ01EX0ZPUk1BVDoKLQkJcHJpbnRrKCIlczogaHVoID8gV2hvIGlzc3VlZCB0aGlzIGZvcm1hdCBjb21tYW5kID9cbiIKLQkJICAgICAgICxERVZJQ0VfTkFNRSk7Ci0JCW91dGIoKGludF9yZXRfY29kZSAmIDB4ZTApIHwgQVRUX0VPSSwgRVNESV9BVFROKTsKLQkJb3V0YihDVFJMX0VOQUJMRV9JTlRSLCBFU0RJX0NPTlRST0wpOwotCQllbmRpbmcgPSAtMTsKLQkJYnJlYWs7Ci0KLQljYXNlIElOVF9SRVNFVDoKLQkJLyogQkEgcHJpbnRrKCIlczogcmVzZXQgY29tcGxldGVkLlxuIiwgREVWSUNFX05BTUUpICovIDsKLQkJb3V0YigoaW50X3JldF9jb2RlICYgMHhlMCkgfCBBVFRfRU9JLCBFU0RJX0FUVE4pOwotCQlvdXRiKENUUkxfRU5BQkxFX0lOVFIsIEVTRElfQ09OVFJPTCk7Ci0JCWVuZGluZyA9IC0xOwotCQlicmVhazsKLQotCWRlZmF1bHQ6Ci0JCXByaW50aygiJXM6IFVua25vd24gaW50ZXJydXB0IHJlYXNvbjogJTAyWFxuIiwKLQkJICAgICAgIERFVklDRV9OQU1FLCBpbnRfcmV0X2NvZGUgJiAweGYpOwotCQlvdXRiKChpbnRfcmV0X2NvZGUgJiAweGUwKSB8IEFUVF9FT0ksIEVTRElfQVRUTik7Ci0JCW91dGIoQ1RSTF9FTkFCTEVfSU5UUiwgRVNESV9DT05UUk9MKTsKLQkJZW5kaW5nID0gLTE7Ci0JCWJyZWFrOwotCX0KLQlpZihlbmRpbmcgIT0gLTEpIHsKLQkJc3Bpbl9sb2NrX2lycXNhdmUoJnBzMmVzZGlfbG9jaywgZmxhZ3MpOwotCQllbmRfcmVxdWVzdChjdXJyZW50X3JlcSwgZW5kaW5nKTsKLQkJY3VycmVudF9yZXEgPSBOVUxMOwotCQlkb19wczJlc2RpX3JlcXVlc3QocHMyZXNkaV9xdWV1ZSk7Ci0JCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnBzMmVzZGlfbG9jaywgZmxhZ3MpOwotCX0KLX0JCQkJLyogaGFuZGxlIGludGVycnVwdHMgKi8KLQotCi0KLXN0YXRpYyBpbnQgcHMyZXNkaV9yZWFkX3N0YXR1c193b3JkcyhpbnQgbnVtX3dvcmRzLAotCQkJCSAgICAgaW50IG1heF93b3JkcywKLQkJCQkgICAgIHVfc2hvcnQgKiBidWZmZXIpCi17Ci0JaW50IGk7Ci0KLQlmb3IgKDsgbWF4X3dvcmRzICYmIG51bV93b3JkczsgbWF4X3dvcmRzLS0sIG51bV93b3Jkcy0tLCBidWZmZXIrKykgewotCQlmb3IgKGkgPSBFU0RJX1RJTUVPVVQ7IGkgJiYgIShpbmIoRVNESV9TVEFUVVMpICYgU1RBVFVTX1NUQVRfQVZBSUwpOyBpLS0pOwotCQlpZiAoIShpbmIoRVNESV9TVEFUVVMpICYgU1RBVFVTX1NUQVRfQVZBSUwpKSB7Ci0JCQlwcmludGsoIiVzOiB0aW1lb3V0IHJlYWRpbmcgc3RhdHVzIHdvcmRcbiIsIERFVklDRV9OQU1FKTsKLQkJCXJldHVybiBGQUlMOwotCQl9Ci0JCSpidWZmZXIgPSBpbncoRVNESV9TVFRfSU5UKTsKLQl9Ci0JcmV0dXJuIFNVQ0NFUzsKLX0KLQotCi0KLQotc3RhdGljIHZvaWQgZHVtcF9jbWRfY29tcGxldGVfc3RhdHVzKHVfaW50IGludF9yZXRfY29kZSkKLXsKLSNkZWZpbmUgV0FJVF9GT1JfU1RBVFVTIFwKLSAgZm9yKGk9RVNESV9USU1FT1VUO2kgJiYgIShpbmIoRVNESV9TVEFUVVMpICYgU1RBVFVTX1NUQVRfQVZBSUwpO2ktLSk7IFwKLSAgICBpZighKGluYihFU0RJX1NUQVRVUykgJiBTVEFUVVNfU1RBVF9BVkFJTCkpIHsgXAotICAgIHByaW50aygiJXM6IHRpbWVvdXQgcmVhZGluZyBzdGF0dXMgd29yZFxuIixERVZJQ0VfTkFNRSk7IFwKLSAgICByZXR1cm47IFwKLSAgICB9Ci0KLQlpbnQgaSwgd29yZF9jb3VudDsKLQl1X3Nob3J0IHN0YXRfd29yZDsKLQl1X2xvbmcgcmJhOwotCi0JcHJpbnRrKCIlczogRGV2aWNlOiAldSwgaW50ZXJydXB0IElEOiAlMDJYXG4iLAotCSAgICAgICBERVZJQ0VfTkFNRSwgaW50X3JldF9jb2RlID4+IDUsCi0JICAgICAgIGludF9yZXRfY29kZSAmIDB4Zik7Ci0KLQlXQUlUX0ZPUl9TVEFUVVM7Ci0Jc3RhdF93b3JkID0gaW53KEVTRElfU1RUX0lOVCk7Ci0Jd29yZF9jb3VudCA9IChzdGF0X3dvcmQgPj4gOCkgLSAxOwotCXByaW50aygiJXM6ICV1IHN0YXR1cyB3b3JkcywgY29tbWFuZDogJTAyWFxuIiwgREVWSUNFX05BTUUsIHdvcmRfY291bnQsCi0JICAgICAgIHN0YXRfd29yZCAmIDB4ZmYpOwotCi0JaWYgKHdvcmRfY291bnQtLSkgewotCQlXQUlUX0ZPUl9TVEFUVVM7Ci0JCXN0YXRfd29yZCA9IGludyhFU0RJX1NUVF9JTlQpOwotCQlwcmludGsoIiVzOiBjb21tYW5kIHN0YXR1cyBjb2RlOiAlMDJYLCBjb21tYW5kIGVycm9yIGNvZGU6ICUwMlhcbiIsCi0JCSAgICAgICBERVZJQ0VfTkFNRSwgc3RhdF93b3JkID4+IDgsIHN0YXRfd29yZCAmIDB4ZmYpOwotCX0KLQlpZiAod29yZF9jb3VudC0tKSB7Ci0JCVdBSVRfRk9SX1NUQVRVUzsKLQkJc3RhdF93b3JkID0gaW53KEVTRElfU1RUX0lOVCk7Ci0JCXByaW50aygiJXM6IGRldmljZSBlcnJvciBjb2RlOiAlcyVzJXMlcyVzLCUwMlhcbiIsIERFVklDRV9OQU1FLAotCQkgICAgICAgKHN0YXRfd29yZCAmIDB4MTAwMCkgPyAiUmVhZHksICIgOiAiTm90IFJlYWR5LCAiLAotCQkgIChzdGF0X3dvcmQgJiAweDA4MDApID8gIlNlbGVjdGVkLCAiIDogIk5vdCBTZWxlY3RlZCwgIiwKLQkJICAgICAgIChzdGF0X3dvcmQgJiAweDA0MDApID8gIldyaXRlIEZhdWx0LCAiIDogIiIsCi0JCSAgICAgICAoc3RhdF93b3JkICYgMHgwMjAwKSA/ICJUcmFjayAwLCAiIDogIiIsCi0JCShzdGF0X3dvcmQgJiAweDAxMDApID8gIlNlZWsgb3IgY29tbWFuZCBjb21wbGV0ZSwgIiA6ICIiLAotCQkgICAgICAgc3RhdF93b3JkID4+IDgpOwotCX0KLQlpZiAod29yZF9jb3VudC0tKSB7Ci0JCVdBSVRfRk9SX1NUQVRVUzsKLQkJc3RhdF93b3JkID0gaW53KEVTRElfU1RUX0lOVCk7Ci0JCXByaW50aygiJXM6IEJsb2NrcyB0byBkbzogJXUiLCBERVZJQ0VfTkFNRSwgc3RhdF93b3JkKTsKLQl9Ci0JaWYgKHdvcmRfY291bnQgLT0gMikgewotCQlXQUlUX0ZPUl9TVEFUVVM7Ci0JCXJiYSA9IGludyhFU0RJX1NUVF9JTlQpOwotCQlXQUlUX0ZPUl9TVEFUVVM7Ci0JCXJiYSB8PSBpbncoRVNESV9TVFRfSU5UKSA8PCAxNjsKLQkJcHJpbnRrKCIsIExhc3QgQ3lsOiAldSBIZWFkOiAldSBTZWN0b3I6ICV1XG4iLAotCQkgICAgICAgKHVfc2hvcnQpICgocmJhICYgMHgxZmY4MDAwMCkgPj4gMTEpLAotCQkgKHVfc2hvcnQpICgocmJhICYgMHg3RTApID4+IDUpLCAodV9zaG9ydCkgKHJiYSAmIDB4MWYpKTsKLQl9IGVsc2UKLQkJcHJpbnRrKCJcbiIpOwotCi0JaWYgKHdvcmRfY291bnQtLSkgewotCQlXQUlUX0ZPUl9TVEFUVVM7Ci0JCXN0YXRfd29yZCA9IGludyhFU0RJX1NUVF9JTlQpOwotCQlwcmludGsoIiVzOiBCbG9ja3MgcmVxdWlyZWQgRUNDOiAldSIsIERFVklDRV9OQU1FLCBzdGF0X3dvcmQpOwotCX0KLQlwcmludGsoIlxuIik7Ci0KLSN1bmRlZiBXQUlUX0ZPUl9TVEFUVVMKLQotfQotCi1zdGF0aWMgaW50IHBzMmVzZGlfZ2V0Z2VvKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIHN0cnVjdCBoZF9nZW9tZXRyeSAqZ2VvKQotewotCXN0cnVjdCBwczJlc2RpX2lfc3RydWN0ICpwID0gYmRldi0+YmRfZGlzay0+cHJpdmF0ZV9kYXRhOwotCi0JZ2VvLT5oZWFkcyA9IHAtPmhlYWQ7Ci0JZ2VvLT5zZWN0b3JzID0gcC0+c2VjdDsKLQlnZW8tPmN5bGluZGVycyA9IHAtPmN5bDsKLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIHZvaWQgcHMyZXNkaV9yZXNldF90aW1lcih1bnNpZ25lZCBsb25nIHVudXNlZCkKLXsKLQotCWludCBzdGF0dXM7Ci0KLQlzdGF0dXMgPSBpbmIoRVNESV9JTlRSUFQpOwotCWlmICgoc3RhdHVzICYgMHhmKSA9PSBJTlRfUkVTRVQpIHsKLQkJb3V0Yigoc3RhdHVzICYgMHhlMCkgfCBBVFRfRU9JLCBFU0RJX0FUVE4pOwotCQlvdXRiKENUUkxfRU5BQkxFX0lOVFIsIEVTRElfQ09OVFJPTCk7Ci0JCXJlc2V0X3N0YXR1cyA9IDE7Ci0JfQotCXdha2VfdXAoJnBzMmVzZGlfaW50KTsKLX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svdWIuYyBiL2RyaXZlcnMvYmxvY2svdWIuYwppbmRleCBjNDUyZTJkLi4yN2JmZTcyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL3ViLmMKKysrIGIvZHJpdmVycy9ibG9jay91Yi5jCkBAIC04LDYgKzgsNyBAQAogICogYW5kIGlzIG5vdCBsaWNlbnNlZCBzZXBhcmF0ZWx5LiBTZWUgZmlsZSBDT1BZSU5HIGZvciBkZXRhaWxzLgogICoKICAqIFRPRE8gKHNvcnRlZCBieSBkZWNyZWFzaW5nIHByaW9yaXR5KQorICogIC0tIFJldHVybiBzZW5zZSBub3cgdGhhdCBycSBhbGxvd3MgaXQgKHdlIGFsd2F5cyBhdXRvLXNlbnNlIGFueXdheSkuCiAgKiAgLS0gc2V0IHJlYWRvbmx5IGZsYWcgZm9yIENEcywgc2V0IHJlbW92YWJsZSBmbGFnIGZvciBDRiByZWFkZXJzCiAgKiAgLS0gZG8gaW5xdWlyeSBhbmQgdmVyaWZ5IHdlIGdvdCBhIGRpc2sgYW5kIG5vdCBhIHRhcGUgKGZvciBMVU4gbWlzbWF0Y2gpCiAgKiAgLS0gdmVyaWZ5IHRoZSAxMyBjb25kaXRpb25zIGFuZCBkbyBidWxrIHJlc2V0cwpAQCAtMzU5LDcgKzM2MCw4IEBACiBzdGF0aWMgdm9pZCB1Yl9jbWRfYnVpbGRfcGFja2V0KHN0cnVjdCB1Yl9kZXYgKnNjLCBzdHJ1Y3QgdWJfbHVuICpsdW4sCiAgICAgc3RydWN0IHViX3Njc2lfY21kICpjbWQsIHN0cnVjdCB1Yl9yZXF1ZXN0ICp1cnEpOwogc3RhdGljIHZvaWQgdWJfcndfY21kX2RvbmUoc3RydWN0IHViX2RldiAqc2MsIHN0cnVjdCB1Yl9zY3NpX2NtZCAqY21kKTsKLXN0YXRpYyB2b2lkIHViX2VuZF9ycShzdHJ1Y3QgcmVxdWVzdCAqcnEsIHVuc2lnbmVkIGludCBzdGF0dXMpOworc3RhdGljIHZvaWQgdWJfZW5kX3JxKHN0cnVjdCByZXF1ZXN0ICpycSwgdW5zaWduZWQgaW50IHN0YXR1cywKKyAgICB1bnNpZ25lZCBpbnQgY21kX2xlbik7CiBzdGF0aWMgaW50IHViX3J3X2NtZF9yZXRyeShzdHJ1Y3QgdWJfZGV2ICpzYywgc3RydWN0IHViX2x1biAqbHVuLAogICAgIHN0cnVjdCB1Yl9yZXF1ZXN0ICp1cnEsIHN0cnVjdCB1Yl9zY3NpX2NtZCAqY21kKTsKIHN0YXRpYyBpbnQgdWJfc3VibWl0X3Njc2koc3RydWN0IHViX2RldiAqc2MsIHN0cnVjdCB1Yl9zY3NpX2NtZCAqY21kKTsKQEAgLTY0MiwxMyArNjQ0LDEzIEBACiAKIAlpZiAoYXRvbWljX3JlYWQoJnNjLT5wb2lzb24pKSB7CiAJCWJsa2Rldl9kZXF1ZXVlX3JlcXVlc3QocnEpOwotCQl1Yl9lbmRfcnEocnEsIERJRF9OT19DT05ORUNUIDw8IDE2KTsKKwkJdWJfZW5kX3JxKHJxLCBESURfTk9fQ09OTkVDVCA8PCAxNiwgYmxrX3JxX2J5dGVzKHJxKSk7CiAJCXJldHVybiAwOwogCX0KIAogCWlmIChsdW4tPmNoYW5nZWQgJiYgIWJsa19wY19yZXF1ZXN0KHJxKSkgewogCQlibGtkZXZfZGVxdWV1ZV9yZXF1ZXN0KHJxKTsKLQkJdWJfZW5kX3JxKHJxLCBTQU1fU1RBVF9DSEVDS19DT05ESVRJT04pOworCQl1Yl9lbmRfcnEocnEsIFNBTV9TVEFUX0NIRUNLX0NPTkRJVElPTiwgYmxrX3JxX2J5dGVzKHJxKSk7CiAJCXJldHVybiAwOwogCX0KIApAQCAtNzAxLDcgKzcwMyw3IEBACiAKIGRyb3A6CiAJdWJfcHV0X2NtZChsdW4sIGNtZCk7Ci0JdWJfZW5kX3JxKHJxLCBESURfRVJST1IgPDwgMTYpOworCXViX2VuZF9ycShycSwgRElEX0VSUk9SIDw8IDE2LCBibGtfcnFfYnl0ZXMocnEpKTsKIAlyZXR1cm4gMDsKIH0KIApAQCAtNzcwLDYgKzc3Miw3IEBACiAJc3RydWN0IHViX3JlcXVlc3QgKnVycSA9IGNtZC0+YmFjazsKIAlzdHJ1Y3QgcmVxdWVzdCAqcnE7CiAJdW5zaWduZWQgaW50IHNjc2lfc3RhdHVzOworCXVuc2lnbmVkIGludCBjbWRfbGVuOwogCiAJcnEgPSB1cnEtPnJxOwogCkBAIC03NzksOCArNzgyLDE4IEBACiAJCQkJcnEtPmRhdGFfbGVuID0gMDsKIAkJCWVsc2UKIAkJCQlycS0+ZGF0YV9sZW4gLT0gY21kLT5hY3RfbGVuOworCQkJc2NzaV9zdGF0dXMgPSAwOworCQl9IGVsc2UgeworCQkJaWYgKGNtZC0+YWN0X2xlbiAhPSBjbWQtPmxlbikgeworCQkJCWlmICgoY21kLT5rZXkgPT0gTUVESVVNX0VSUk9SIHx8CisJCQkJICAgICBjbWQtPmtleSA9PSBVTklUX0FUVEVOVElPTikgJiYKKwkJCQkgICAgdWJfcndfY21kX3JldHJ5KHNjLCBsdW4sIHVycSwgY21kKSA9PSAwKQorCQkJCQlyZXR1cm47CisJCQkJc2NzaV9zdGF0dXMgPSBTQU1fU1RBVF9DSEVDS19DT05ESVRJT047CisJCQl9IGVsc2UgeworCQkJCXNjc2lfc3RhdHVzID0gMDsKKwkJCX0KIAkJfQotCQlzY3NpX3N0YXR1cyA9IDA7CiAJfSBlbHNlIHsKIAkJaWYgKGJsa19wY19yZXF1ZXN0KHJxKSkgewogCQkJLyogVUJfU0VOU0VfU0laRSBpcyBzbWFsbGVyIHRoYW4gU0NTSV9TRU5TRV9CVUZGRVJTSVpFICovCkBAIC04MDEsMTQgKzgxNCwxNyBAQAogCiAJdXJxLT5ycSA9IE5VTEw7CiAKKwljbWRfbGVuID0gY21kLT5sZW47CiAJdWJfcHV0X2NtZChsdW4sIGNtZCk7Ci0JdWJfZW5kX3JxKHJxLCBzY3NpX3N0YXR1cyk7CisJdWJfZW5kX3JxKHJxLCBzY3NpX3N0YXR1cywgY21kX2xlbik7CiAJYmxrX3N0YXJ0X3F1ZXVlKGx1bi0+ZGlzay0+cXVldWUpOwogfQogCi1zdGF0aWMgdm9pZCB1Yl9lbmRfcnEoc3RydWN0IHJlcXVlc3QgKnJxLCB1bnNpZ25lZCBpbnQgc2NzaV9zdGF0dXMpCitzdGF0aWMgdm9pZCB1Yl9lbmRfcnEoc3RydWN0IHJlcXVlc3QgKnJxLCB1bnNpZ25lZCBpbnQgc2NzaV9zdGF0dXMsCisgICAgdW5zaWduZWQgaW50IGNtZF9sZW4pCiB7CiAJaW50IGVycm9yOworCWxvbmcgcnFsZW47CiAKIAlpZiAoc2NzaV9zdGF0dXMgPT0gMCkgewogCQllcnJvciA9IDA7CkBAIC04MTYsOCArODMyLDEyIEBACiAJCWVycm9yID0gLUVJTzsKIAkJcnEtPmVycm9ycyA9IHNjc2lfc3RhdHVzOwogCX0KLQlpZiAoX19ibGtfZW5kX3JlcXVlc3QocnEsIGVycm9yLCBibGtfcnFfYnl0ZXMocnEpKSkKLQkJQlVHKCk7CisJcnFsZW4gPSBibGtfcnFfYnl0ZXMocnEpOyAgICAvKiBPZGRseSBlbm91Z2gsIHRoaXMgaXMgdGhlIHJlc2lkdWUuICovCisJaWYgKF9fYmxrX2VuZF9yZXF1ZXN0KHJxLCBlcnJvciwgY21kX2xlbikpIHsKKwkJcHJpbnRrKEtFUk5fV0FSTklORyBEUlZfTkFNRQorCQkgICAgIjogX19ibGtfZW5kX3JlcXVlc3QgYmxldywgJXMtY21kIHRvdGFsICV1IHJxbGVuICVsZFxuIiwKKwkJICAgIGJsa19wY19yZXF1ZXN0KHJxKT8gInBjIjogImZzIiwgY21kX2xlbiwgcnFsZW4pOworCX0KIH0KIAogc3RhdGljIGludCB1Yl9yd19jbWRfcmV0cnkoc3RydWN0IHViX2RldiAqc2MsIHN0cnVjdCB1Yl9sdW4gKmx1biwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svdmlvZGFzZC5jIGIvZHJpdmVycy9ibG9jay92aW9kYXNkLmMKaW5kZXggOWU2MWZjYS4uNDFjYTcyMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay92aW9kYXNkLmMKKysrIGIvZHJpdmVycy9ibG9jay92aW9kYXNkLmMKQEAgLTUyOCw4ICs1MjgsNyBAQAogCQludW1zZyA9IFZJT01BWEJMT0NLRE1BOwogCiAJKnRvdGFsX2xlbiA9IDA7Ci0JbWVtc2V0KHNnLCAwLCBzaXplb2Yoc2dbMF0pICogVklPTUFYQkxPQ0tETUEpOwotCisJc2dfaW5pdF90YWJsZShzZywgVklPTUFYQkxPQ0tETUEpOwogCWZvciAoaSA9IDA7IChpIDwgbnVtc2cpICYmIChyd19kYXRhLT5kbWFfaW5mb1tpXS5sZW4gPiAwKTsgKytpKSB7CiAJCXNnX2RtYV9hZGRyZXNzKCZzZ1tpXSkgPSByd19kYXRhLT5kbWFfaW5mb1tpXS50b2tlbjsKIAkJc2dfZG1hX2xlbigmc2dbaV0pID0gcndfZGF0YS0+ZG1hX2luZm9baV0ubGVuOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmMgYi9kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYwppbmRleCAzYjFhNjhkLi4wY2ZiZThjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYworKysgYi9kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYwpAQCAtMjM4LDYgKzIzOCw3IEBACiAJdmJsay0+ZGlzay0+Zmlyc3RfbWlub3IgPSBpbmRleF90b19taW5vcihpbmRleCk7CiAJdmJsay0+ZGlzay0+cHJpdmF0ZV9kYXRhID0gdmJsazsKIAl2YmxrLT5kaXNrLT5mb3BzID0gJnZpcnRibGtfZm9wczsKKwl2YmxrLT5kaXNrLT5kcml2ZXJmc19kZXYgPSAmdmRldi0+ZGV2OwogCWluZGV4Kys7CiAKIAkvKiBJZiBiYXJyaWVycyBhcmUgc3VwcG9ydGVkLCB0ZWxsIGJsb2NrIGxheWVyIHRoYXQgcXVldWUgaXMgb3JkZXJlZCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibHVldG9vdGgvaGNpX3VzYi5jIGIvZHJpdmVycy9ibHVldG9vdGgvaGNpX3VzYi5jCmluZGV4IGYxNmM5NGMuLjhiODg0ZjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmx1ZXRvb3RoL2hjaV91c2IuYworKysgYi9kcml2ZXJzL2JsdWV0b290aC9oY2lfdXNiLmMKQEAgLTE0OSw2ICsxNDksOSBAQAogCXsgVVNCX0RFVklDRSgweDA0MDAsIDB4MDgwNyksIC5kcml2ZXJfaW5mbyA9IEhDSV9CUk9LRU5fSVNPQyB9LAogCXsgVVNCX0RFVklDRSgweDA0MDAsIDB4MDgwYSksIC5kcml2ZXJfaW5mbyA9IEhDSV9CUk9LRU5fSVNPQyB9LAogCisJLyogQ09OV0lTRSBUZWNobm9sb2d5IGJhc2VkIGFkYXB0ZXJzIHdpdGggYnVnZ3kgU0NPIHN1cHBvcnQgKi8KKwl7IFVTQl9ERVZJQ0UoMHgwZTVlLCAweDY2MjIpLCAuZHJpdmVyX2luZm8gPSBIQ0lfQlJPS0VOX0lTT0MgfSwKKwogCS8qIEJlbGtpbiBGOFQwMTIgYW5kIEY4VDAxMyBkZXZpY2VzICovCiAJeyBVU0JfREVWSUNFKDB4MDUwZCwgMHgwMDEyKSwgLmRyaXZlcl9pbmZvID0gSENJX1JFU0VUIHwgSENJX1dST05HX1NDT19NVFUgfSwKIAl7IFVTQl9ERVZJQ0UoMHgwNTBkLCAweDAwMTMpLCAuZHJpdmVyX2luZm8gPSBIQ0lfUkVTRVQgfCBIQ0lfV1JPTkdfU0NPX01UVSB9LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9jaGFyL2RybS9hdGlfcGNpZ2FydC5jIGIvZHJpdmVycy9jaGFyL2RybS9hdGlfcGNpZ2FydC5jCmluZGV4IGQzNTJkYmIuLjE0MWY0ZGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY2hhci9kcm0vYXRpX3BjaWdhcnQuYworKysgYi9kcml2ZXJzL2NoYXIvZHJtL2F0aV9wY2lnYXJ0LmMKQEAgLTM1LDQyICszNSwyMyBAQAogCiAjIGRlZmluZSBBVElfUENJR0FSVF9QQUdFX1NJWkUJCTQwOTYJLyoqPCBQQ0kgR0FSVCBwYWdlIHNpemUgKi8KIAotc3RhdGljIHZvaWQgKmRybV9hdGlfYWxsb2NfcGNpZ2FydF90YWJsZShpbnQgb3JkZXIpCitzdGF0aWMgaW50IGRybV9hdGlfYWxsb2NfcGNpZ2FydF90YWJsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQkJCSAgICAgICBzdHJ1Y3QgZHJtX2F0aV9wY2lnYXJ0X2luZm8gKmdhcnRfaW5mbykKIHsKLQl1bnNpZ25lZCBsb25nIGFkZHJlc3M7Ci0Jc3RydWN0IHBhZ2UgKnBhZ2U7Ci0JaW50IGk7CisJZ2FydF9pbmZvLT50YWJsZV9oYW5kbGUgPSBkcm1fcGNpX2FsbG9jKGRldiwgZ2FydF9pbmZvLT50YWJsZV9zaXplLAorCQkJCQkJUEFHRV9TSVpFLAorCQkJCQkJZ2FydF9pbmZvLT50YWJsZV9tYXNrKTsKKwlpZiAoZ2FydF9pbmZvLT50YWJsZV9oYW5kbGUgPT0gTlVMTCkKKwkJcmV0dXJuIC1FTk9NRU07CiAKLQlEUk1fREVCVUcoIiVkIG9yZGVyXG4iLCBvcmRlcik7Ci0KLQlhZGRyZXNzID0gX19nZXRfZnJlZV9wYWdlcyhHRlBfS0VSTkVMIHwgX19HRlBfQ09NUCwKLQkJCQkgICBvcmRlcik7Ci0JaWYgKGFkZHJlc3MgPT0gMFVMKSB7Ci0JCXJldHVybiBOVUxMOwotCX0KLQotCXBhZ2UgPSB2aXJ0X3RvX3BhZ2UoYWRkcmVzcyk7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgb3JkZXI7IGkrKywgcGFnZSsrKQotCQlTZXRQYWdlUmVzZXJ2ZWQocGFnZSk7Ci0KLQlEUk1fREVCVUcoInJldHVybmluZyAweCUwOGx4XG4iLCBhZGRyZXNzKTsKLQlyZXR1cm4gKHZvaWQgKilhZGRyZXNzOworCXJldHVybiAwOwogfQogCi1zdGF0aWMgdm9pZCBkcm1fYXRpX2ZyZWVfcGNpZ2FydF90YWJsZSh2b2lkICphZGRyZXNzLCBpbnQgb3JkZXIpCitzdGF0aWMgdm9pZCBkcm1fYXRpX2ZyZWVfcGNpZ2FydF90YWJsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQkJCSAgICAgICBzdHJ1Y3QgZHJtX2F0aV9wY2lnYXJ0X2luZm8gKmdhcnRfaW5mbykKIHsKLQlzdHJ1Y3QgcGFnZSAqcGFnZTsKLQlpbnQgaTsKLQlpbnQgbnVtX3BhZ2VzID0gMSA8PCBvcmRlcjsKLQlEUk1fREVCVUcoIlxuIik7Ci0KLQlwYWdlID0gdmlydF90b19wYWdlKCh1bnNpZ25lZCBsb25nKWFkZHJlc3MpOwotCi0JZm9yIChpID0gMDsgaSA8IG51bV9wYWdlczsgaSsrLCBwYWdlKyspCi0JCUNsZWFyUGFnZVJlc2VydmVkKHBhZ2UpOwotCi0JZnJlZV9wYWdlcygodW5zaWduZWQgbG9uZylhZGRyZXNzLCBvcmRlcik7CisJZHJtX3BjaV9mcmVlKGRldiwgZ2FydF9pbmZvLT50YWJsZV9oYW5kbGUpOworCWdhcnRfaW5mby0+dGFibGVfaGFuZGxlID0gTlVMTDsKIH0KIAogaW50IGRybV9hdGlfcGNpZ2FydF9jbGVhbnVwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fYXRpX3BjaWdhcnRfaW5mbyAqZ2FydF9pbmZvKQpAQCAtNzgsOCArNTksNyBAQAogCXN0cnVjdCBkcm1fc2dfbWVtICplbnRyeSA9IGRldi0+c2c7CiAJdW5zaWduZWQgbG9uZyBwYWdlczsKIAlpbnQgaTsKLQlpbnQgb3JkZXI7Ci0JaW50IG51bV9wYWdlcywgbWF4X3BhZ2VzOworCWludCBtYXhfcGFnZXM7CiAKIAkvKiB3ZSBuZWVkIHRvIHN1cHBvcnQgbGFyZ2UgbWVtb3J5IGNvbmZpZ3VyYXRpb25zICovCiAJaWYgKCFlbnRyeSkgewpAQCAtODcsMTUgKzY3LDcgQEAKIAkJcmV0dXJuIDA7CiAJfQogCi0Jb3JkZXIgPSBkcm1fb3JkZXIoKGdhcnRfaW5mby0+dGFibGVfc2l6ZSArIChQQUdFX1NJWkUtMSkpIC8gUEFHRV9TSVpFKTsKLQludW1fcGFnZXMgPSAxIDw8IG9yZGVyOwotCiAJaWYgKGdhcnRfaW5mby0+YnVzX2FkZHIpIHsKLQkJaWYgKGdhcnRfaW5mby0+Z2FydF90YWJsZV9sb2NhdGlvbiA9PSBEUk1fQVRJX0dBUlRfTUFJTikgewotCQkJcGNpX3VubWFwX3NpbmdsZShkZXYtPnBkZXYsIGdhcnRfaW5mby0+YnVzX2FkZHIsCi0JCQkJCSBudW1fcGFnZXMgKiBQQUdFX1NJWkUsCi0JCQkJCSBQQ0lfRE1BX1RPREVWSUNFKTsKLQkJfQogCiAJCW1heF9wYWdlcyA9IChnYXJ0X2luZm8tPnRhYmxlX3NpemUgLyBzaXplb2YodTMyKSk7CiAJCXBhZ2VzID0gKGVudHJ5LT5wYWdlcyA8PSBtYXhfcGFnZXMpCkBAIC0xMTIsMTAgKzg0LDkgQEAKIAkJCWdhcnRfaW5mby0+YnVzX2FkZHIgPSAwOwogCX0KIAotCWlmIChnYXJ0X2luZm8tPmdhcnRfdGFibGVfbG9jYXRpb24gPT0gRFJNX0FUSV9HQVJUX01BSU4KLQkgICAgJiYgZ2FydF9pbmZvLT5hZGRyKSB7Ci0JCWRybV9hdGlfZnJlZV9wY2lnYXJ0X3RhYmxlKGdhcnRfaW5mby0+YWRkciwgb3JkZXIpOwotCQlnYXJ0X2luZm8tPmFkZHIgPSBOVUxMOworCWlmIChnYXJ0X2luZm8tPmdhcnRfdGFibGVfbG9jYXRpb24gPT0gRFJNX0FUSV9HQVJUX01BSU4gJiYKKwkgICAgZ2FydF9pbmZvLT50YWJsZV9oYW5kbGUpIHsKKwkJZHJtX2F0aV9mcmVlX3BjaWdhcnRfdGFibGUoZGV2LCBnYXJ0X2luZm8pOwogCX0KIAogCXJldHVybiAxOwpAQCAtMTI3LDExICs5OCwxMCBAQAogCXN0cnVjdCBkcm1fc2dfbWVtICplbnRyeSA9IGRldi0+c2c7CiAJdm9pZCAqYWRkcmVzcyA9IE5VTEw7CiAJdW5zaWduZWQgbG9uZyBwYWdlczsKLQl1MzIgKnBjaV9nYXJ0LCBwYWdlX2Jhc2UsIGJ1c19hZGRyZXNzID0gMDsKKwl1MzIgKnBjaV9nYXJ0LCBwYWdlX2Jhc2U7CisJZG1hX2FkZHJfdCBidXNfYWRkcmVzcyA9IDA7CiAJaW50IGksIGosIHJldCA9IDA7Ci0JaW50IG9yZGVyOwogCWludCBtYXhfcGFnZXM7Ci0JaW50IG51bV9wYWdlczsKIAogCWlmICghZW50cnkpIHsKIAkJRFJNX0VSUk9SKCJubyBzY2F0dGVyL2dhdGhlciBtZW1vcnkhXG4iKTsKQEAgLTE0MSwzNiArMTExLDIwIEBACiAJaWYgKGdhcnRfaW5mby0+Z2FydF90YWJsZV9sb2NhdGlvbiA9PSBEUk1fQVRJX0dBUlRfTUFJTikgewogCQlEUk1fREVCVUcoIlBDSTogbm8gdGFibGUgaW4gVlJBTTogdXNpbmcgbm9ybWFsIFJBTVxuIik7CiAKLQkJb3JkZXIgPSBkcm1fb3JkZXIoKGdhcnRfaW5mby0+dGFibGVfc2l6ZSArCi0JCQkJICAgKFBBR0VfU0laRS0xKSkgLyBQQUdFX1NJWkUpOwotCQludW1fcGFnZXMgPSAxIDw8IG9yZGVyOwotCQlhZGRyZXNzID0gZHJtX2F0aV9hbGxvY19wY2lnYXJ0X3RhYmxlKG9yZGVyKTsKLQkJaWYgKCFhZGRyZXNzKSB7CisJCXJldCA9IGRybV9hdGlfYWxsb2NfcGNpZ2FydF90YWJsZShkZXYsIGdhcnRfaW5mbyk7CisJCWlmIChyZXQpIHsKIAkJCURSTV9FUlJPUigiY2Fubm90IGFsbG9jYXRlIFBDSSBHQVJUIHBhZ2UhXG4iKTsKIAkJCWdvdG8gZG9uZTsKIAkJfQogCi0JCWlmICghZGV2LT5wZGV2KSB7Ci0JCQlEUk1fRVJST1IoIlBDSSBkZXZpY2UgdW5rbm93biFcbiIpOwotCQkJZ290byBkb25lOwotCQl9Ci0KLQkJYnVzX2FkZHJlc3MgPSBwY2lfbWFwX3NpbmdsZShkZXYtPnBkZXYsIGFkZHJlc3MsCi0JCQkJCSAgICAgbnVtX3BhZ2VzICogUEFHRV9TSVpFLAotCQkJCQkgICAgIFBDSV9ETUFfVE9ERVZJQ0UpOwotCQlpZiAoYnVzX2FkZHJlc3MgPT0gMCkgewotCQkJRFJNX0VSUk9SKCJ1bmFibGUgdG8gbWFwIFBDSUdBUlQgcGFnZXMhXG4iKTsKLQkJCW9yZGVyID0gZHJtX29yZGVyKChnYXJ0X2luZm8tPnRhYmxlX3NpemUgKwotCQkJCQkgICAoUEFHRV9TSVpFLTEpKSAvIFBBR0VfU0laRSk7Ci0JCQlkcm1fYXRpX2ZyZWVfcGNpZ2FydF90YWJsZShhZGRyZXNzLCBvcmRlcik7Ci0JCQlhZGRyZXNzID0gTlVMTDsKLQkJCWdvdG8gZG9uZTsKLQkJfQorCQlhZGRyZXNzID0gZ2FydF9pbmZvLT50YWJsZV9oYW5kbGUtPnZhZGRyOworCQlidXNfYWRkcmVzcyA9IGdhcnRfaW5mby0+dGFibGVfaGFuZGxlLT5idXNhZGRyOwogCX0gZWxzZSB7CiAJCWFkZHJlc3MgPSBnYXJ0X2luZm8tPmFkZHI7CiAJCWJ1c19hZGRyZXNzID0gZ2FydF9pbmZvLT5idXNfYWRkcjsKLQkJRFJNX0RFQlVHKCJQQ0k6IEdhcnQgVGFibGU6IFZSQU0gJTA4WCBtYXBwZWQgYXQgJTA4bFhcbiIsCi0JCQkgIGJ1c19hZGRyZXNzLCAodW5zaWduZWQgbG9uZylhZGRyZXNzKTsKKwkJRFJNX0RFQlVHKCJQQ0k6IEdhcnQgVGFibGU6IFZSQU0gJTA4TFggbWFwcGVkIGF0ICUwOGxYXG4iLAorCQkJICAodW5zaWduZWQgbG9uZyBsb25nKWJ1c19hZGRyZXNzLAorCQkJICAodW5zaWduZWQgbG9uZylhZGRyZXNzKTsKIAl9CiAKIAlwY2lfZ2FydCA9ICh1MzIgKikgYWRkcmVzczsKQEAgLTIxNCw2ICsxNjgsMTIgQEAKIAkJfQogCX0KIAorCWlmIChnYXJ0X2luZm8tPmdhcnRfdGFibGVfbG9jYXRpb24gPT0gRFJNX0FUSV9HQVJUX01BSU4pCisJCWRtYV9zeW5jX3NpbmdsZV9mb3JfZGV2aWNlKCZkZXYtPnBkZXYtPmRldiwKKwkJCQkJICAgYnVzX2FkZHJlc3MsCisJCQkJCSAgIG1heF9wYWdlcyAqIHNpemVvZih1MzIpLAorCQkJCQkgICBQQ0lfRE1BX1RPREVWSUNFKTsKKwogCXJldCA9IDE7CiAKICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pCmRpZmYgLS1naXQgYS9kcml2ZXJzL2NoYXIvZHJtL2RybVAuaCBiL2RyaXZlcnMvY2hhci9kcm0vZHJtUC5oCmluZGV4IGE2Nzg5ZjIuLjhlYTlkZDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY2hhci9kcm0vZHJtUC5oCisrKyBiL2RyaXZlcnMvY2hhci9kcm0vZHJtUC5oCkBAIC01NCw2ICs1NCw3IEBACiAjaW5jbHVkZSA8bGludXgvcGNpLmg+CiAjaW5jbHVkZSA8bGludXgvamlmZmllcy5oPgogI2luY2x1ZGUgPGxpbnV4L3NtcF9sb2NrLmg+CS8qIEZvciAodW4pbG9ja19rZXJuZWwgKi8KKyNpbmNsdWRlIDxsaW51eC9kbWEtbWFwcGluZy5oPgogI2luY2x1ZGUgPGxpbnV4L21tLmg+CiAjaW5jbHVkZSA8bGludXgvY2Rldi5oPgogI2luY2x1ZGUgPGxpbnV4L211dGV4Lmg+CkBAIC01NTEsNiArNTUyLDggQEAKIAlpbnQgZ2FydF9yZWdfaWY7CiAJdm9pZCAqYWRkcjsKIAlkbWFfYWRkcl90IGJ1c19hZGRyOworCWRtYV9hZGRyX3QgdGFibGVfbWFzazsKKwlzdHJ1Y3QgZHJtX2RtYV9oYW5kbGUgKnRhYmxlX2hhbmRsZTsKIAlkcm1fbG9jYWxfbWFwX3QgbWFwcGluZzsKIAlpbnQgdGFibGVfc2l6ZTsKIH07CmRpZmYgLS1naXQgYS9kcml2ZXJzL2NoYXIvZHJtL2RybV9mb3BzLmMgYi9kcml2ZXJzL2NoYXIvZHJtL2RybV9mb3BzLmMKaW5kZXggMzk5MmY3My4uZjA5ZDRiNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9jaGFyL2RybS9kcm1fZm9wcy5jCisrKyBiL2RyaXZlcnMvY2hhci9kcm0vZHJtX2ZvcHMuYwpAQCAtMzI2LDYgKzMyNiw3IEBACiAJc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYgPSBmaWxwLT5wcml2YXRlX2RhdGE7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGZpbGVfcHJpdi0+aGVhZC0+ZGV2OwogCWludCByZXRjb2RlID0gMDsKKwl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwogCiAJbG9ja19rZXJuZWwoKTsKIApAQCAtMzU3LDkgKzM1OCwxMSBAQAogCQkJICovCiAKIAkJCWRvewotCQkJCXNwaW5fbG9jaygmZGV2LT5sb2NrLnNwaW5sb2NrKTsKKwkJCQlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2LT5sb2NrLnNwaW5sb2NrLAorCQkJCQkJICBpcnFmbGFncyk7CiAJCQkJbG9ja2VkID0gZGV2LT5sb2NrLmlkbGVfaGFzX2xvY2s7Ci0JCQkJc3Bpbl91bmxvY2soJmRldi0+bG9jay5zcGlubG9jayk7CisJCQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT5sb2NrLnNwaW5sb2NrLAorCQkJCQkJICAgICAgIGlycWZsYWdzKTsKIAkJCQlpZiAobG9ja2VkKQogCQkJCQlicmVhazsKIAkJCQlzY2hlZHVsZSgpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jaGFyL2RybS9kcm1fbG9jay5jIGIvZHJpdmVycy9jaGFyL2RybS9kcm1fbG9jay5jCmluZGV4IGJlYTJhN2QuLjEyZGNkZDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY2hhci9kcm0vZHJtX2xvY2suYworKysgYi9kcml2ZXJzL2NoYXIvZHJtL2RybV9sb2NrLmMKQEAgLTUzLDYgKzUzLDcgQEAKIAlERUNMQVJFX1dBSVRRVUVVRShlbnRyeSwgY3VycmVudCk7CiAJc3RydWN0IGRybV9sb2NrICpsb2NrID0gZGF0YTsKIAlpbnQgcmV0ID0gMDsKKwl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwogCiAJKytmaWxlX3ByaXYtPmxvY2tfY291bnQ7CiAKQEAgLTcxLDkgKzcyLDkgQEAKIAkJCXJldHVybiAtRUlOVkFMOwogCiAJYWRkX3dhaXRfcXVldWUoJmRldi0+bG9jay5sb2NrX3F1ZXVlLCAmZW50cnkpOwotCXNwaW5fbG9jaygmZGV2LT5sb2NrLnNwaW5sb2NrKTsKKwlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2LT5sb2NrLnNwaW5sb2NrLCBpcnFmbGFncyk7CiAJZGV2LT5sb2NrLnVzZXJfd2FpdGVycysrOwotCXNwaW5fdW5sb2NrKCZkZXYtPmxvY2suc3BpbmxvY2spOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldi0+bG9jay5zcGlubG9jaywgaXJxZmxhZ3MpOwogCWZvciAoOzspIHsKIAkJX19zZXRfY3VycmVudF9zdGF0ZShUQVNLX0lOVEVSUlVQVElCTEUpOwogCQlpZiAoIWRldi0+bG9jay5od19sb2NrKSB7CkBAIC05NSw5ICs5Niw5IEBACiAJCQlicmVhazsKIAkJfQogCX0KLQlzcGluX2xvY2soJmRldi0+bG9jay5zcGlubG9jayk7CisJc3Bpbl9sb2NrX2lycXNhdmUoJmRldi0+bG9jay5zcGlubG9jaywgaXJxZmxhZ3MpOwogCWRldi0+bG9jay51c2VyX3dhaXRlcnMtLTsKLQlzcGluX3VubG9jaygmZGV2LT5sb2NrLnNwaW5sb2NrKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXYtPmxvY2suc3BpbmxvY2ssIGlycWZsYWdzKTsKIAlfX3NldF9jdXJyZW50X3N0YXRlKFRBU0tfUlVOTklORyk7CiAJcmVtb3ZlX3dhaXRfcXVldWUoJmRldi0+bG9jay5sb2NrX3F1ZXVlLCAmZW50cnkpOwogCkBAIC0xOTgsOCArMTk5LDkgQEAKIHsKIAl1bnNpZ25lZCBpbnQgb2xkLCBuZXcsIHByZXY7CiAJdm9sYXRpbGUgdW5zaWduZWQgaW50ICpsb2NrID0gJmxvY2tfZGF0YS0+aHdfbG9jay0+bG9jazsKKwl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwogCi0Jc3Bpbl9sb2NrKCZsb2NrX2RhdGEtPnNwaW5sb2NrKTsKKwlzcGluX2xvY2tfaXJxc2F2ZSgmbG9ja19kYXRhLT5zcGlubG9jaywgaXJxZmxhZ3MpOwogCWRvIHsKIAkJb2xkID0gKmxvY2s7CiAJCWlmIChvbGQgJiBfRFJNX0xPQ0tfSEVMRCkKQEAgLTIxMSw3ICsyMTMsNyBAQAogCQl9CiAJCXByZXYgPSBjbXB4Y2hnKGxvY2ssIG9sZCwgbmV3KTsKIAl9IHdoaWxlIChwcmV2ICE9IG9sZCk7Ci0Jc3Bpbl91bmxvY2soJmxvY2tfZGF0YS0+c3BpbmxvY2spOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmxvY2tfZGF0YS0+c3BpbmxvY2ssIGlycWZsYWdzKTsKIAogCWlmIChfRFJNX0xPQ0tJTkdfQ09OVEVYVChvbGQpID09IGNvbnRleHQpIHsKIAkJaWYgKG9sZCAmIF9EUk1fTE9DS19IRUxEKSB7CkBAIC0yNzIsMTUgKzI3NCwxNiBAQAogewogCXVuc2lnbmVkIGludCBvbGQsIG5ldywgcHJldjsKIAl2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKmxvY2sgPSAmbG9ja19kYXRhLT5od19sb2NrLT5sb2NrOworCXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7CiAKLQlzcGluX2xvY2soJmxvY2tfZGF0YS0+c3BpbmxvY2spOworCXNwaW5fbG9ja19pcnFzYXZlKCZsb2NrX2RhdGEtPnNwaW5sb2NrLCBpcnFmbGFncyk7CiAJaWYgKGxvY2tfZGF0YS0+a2VybmVsX3dhaXRlcnMgIT0gMCkgewogCQlkcm1fbG9ja190cmFuc2Zlcihsb2NrX2RhdGEsIDApOwogCQlsb2NrX2RhdGEtPmlkbGVfaGFzX2xvY2sgPSAxOwotCQlzcGluX3VubG9jaygmbG9ja19kYXRhLT5zcGlubG9jayk7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmxvY2tfZGF0YS0+c3BpbmxvY2ssIGlycWZsYWdzKTsKIAkJcmV0dXJuIDE7CiAJfQotCXNwaW5fdW5sb2NrKCZsb2NrX2RhdGEtPnNwaW5sb2NrKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZsb2NrX2RhdGEtPnNwaW5sb2NrLCBpcnFmbGFncyk7CiAKIAlkbyB7CiAJCW9sZCA9ICpsb2NrOwpAQCAtMzQ0LDE5ICszNDcsMjAgQEAKIHZvaWQgZHJtX2lkbGVsb2NrX3Rha2Uoc3RydWN0IGRybV9sb2NrX2RhdGEgKmxvY2tfZGF0YSkKIHsKIAlpbnQgcmV0ID0gMDsKKwl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwogCi0Jc3Bpbl9sb2NrKCZsb2NrX2RhdGEtPnNwaW5sb2NrKTsKKwlzcGluX2xvY2tfaXJxc2F2ZSgmbG9ja19kYXRhLT5zcGlubG9jaywgaXJxZmxhZ3MpOwogCWxvY2tfZGF0YS0+a2VybmVsX3dhaXRlcnMrKzsKIAlpZiAoIWxvY2tfZGF0YS0+aWRsZV9oYXNfbG9jaykgewogCi0JCXNwaW5fdW5sb2NrKCZsb2NrX2RhdGEtPnNwaW5sb2NrKTsKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmbG9ja19kYXRhLT5zcGlubG9jaywgaXJxZmxhZ3MpOwogCQlyZXQgPSBkcm1fbG9ja190YWtlKGxvY2tfZGF0YSwgRFJNX0tFUk5FTF9DT05URVhUKTsKLQkJc3Bpbl9sb2NrKCZsb2NrX2RhdGEtPnNwaW5sb2NrKTsKKwkJc3Bpbl9sb2NrX2lycXNhdmUoJmxvY2tfZGF0YS0+c3BpbmxvY2ssIGlycWZsYWdzKTsKIAogCQlpZiAocmV0ID09IDEpCiAJCQlsb2NrX2RhdGEtPmlkbGVfaGFzX2xvY2sgPSAxOwogCX0KLQlzcGluX3VubG9jaygmbG9ja19kYXRhLT5zcGlubG9jayk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmbG9ja19kYXRhLT5zcGlubG9jaywgaXJxZmxhZ3MpOwogfQogRVhQT1JUX1NZTUJPTChkcm1faWRsZWxvY2tfdGFrZSk7CiAKQEAgLTM2NCw4ICszNjgsOSBAQAogewogCXVuc2lnbmVkIGludCBvbGQsIHByZXY7CiAJdm9sYXRpbGUgdW5zaWduZWQgaW50ICpsb2NrID0gJmxvY2tfZGF0YS0+aHdfbG9jay0+bG9jazsKKwl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwogCi0Jc3Bpbl9sb2NrKCZsb2NrX2RhdGEtPnNwaW5sb2NrKTsKKwlzcGluX2xvY2tfaXJxc2F2ZSgmbG9ja19kYXRhLT5zcGlubG9jaywgaXJxZmxhZ3MpOwogCWlmICgtLWxvY2tfZGF0YS0+a2VybmVsX3dhaXRlcnMgPT0gMCkgewogCQlpZiAobG9ja19kYXRhLT5pZGxlX2hhc19sb2NrKSB7CiAJCQlkbyB7CkBAIC0zNzYsNyArMzgxLDcgQEAKIAkJCWxvY2tfZGF0YS0+aWRsZV9oYXNfbG9jayA9IDA7CiAJCX0KIAl9Ci0Jc3Bpbl91bmxvY2soJmxvY2tfZGF0YS0+c3BpbmxvY2spOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmxvY2tfZGF0YS0+c3BpbmxvY2ssIGlycWZsYWdzKTsKIH0KIEVYUE9SVF9TWU1CT0woZHJtX2lkbGVsb2NrX3JlbGVhc2UpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2NoYXIvZHJtL2RybV9wY2lpZHMuaCBiL2RyaXZlcnMvY2hhci9kcm0vZHJtX3BjaWlkcy5oCmluZGV4IDcxNWIzNjEuLmE2YTQ5OWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY2hhci9kcm0vZHJtX3BjaWlkcy5oCisrKyBiL2RyaXZlcnMvY2hhci9kcm0vZHJtX3BjaWlkcy5oCkBAIC0yMDUsOSArMjA1LDkgQEAKIAl7MHgxMDAyLCAweDcxRDYsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIENISVBfUlY1MzB8UkFERU9OX0lTX01PQklMSVRZfFJBREVPTl9ORVdfTUVNTUFQfSwgXAogCXsweDEwMDIsIDB4NzFEQSwgUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwgQ0hJUF9SVjUzMHxSQURFT05fTkVXX01FTU1BUH0sIFwKIAl7MHgxMDAyLCAweDcxREUsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIENISVBfUlY1MzB8UkFERU9OX0lTX01PQklMSVRZfFJBREVPTl9ORVdfTUVNTUFQfSwgXAotCXsweDEwMDIsIDB4NzIwMCwgUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwgQ0hJUF9SVjUzMHxSQURFT05fTkVXX01FTU1BUH0sIFwKLQl7MHgxMDAyLCAweDcyMTAsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIENISVBfUlY1MzB8UkFERU9OX0lTX01PQklMSVRZfFJBREVPTl9ORVdfTUVNTUFQfSwgXAotCXsweDEwMDIsIDB4NzIxMSwgUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwgQ0hJUF9SVjUzMHxSQURFT05fSVNfTU9CSUxJVFl8UkFERU9OX05FV19NRU1NQVB9LCBcCisJezB4MTAwMiwgMHg3MjAwLCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCBDSElQX1JWNTE1fFJBREVPTl9ORVdfTUVNTUFQfSwgXAorCXsweDEwMDIsIDB4NzIxMCwgUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwgQ0hJUF9SVjUxNXxSQURFT05fSVNfTU9CSUxJVFl8UkFERU9OX05FV19NRU1NQVB9LCBcCisJezB4MTAwMiwgMHg3MjExLCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCBDSElQX1JWNTE1fFJBREVPTl9JU19NT0JJTElUWXxSQURFT05fTkVXX01FTU1BUH0sIFwKIAl7MHgxMDAyLCAweDcyNDAsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIENISVBfUjU4MHxSQURFT05fTkVXX01FTU1BUH0sIFwKIAl7MHgxMDAyLCAweDcyNDMsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIENISVBfUjU4MHxSQURFT05fTkVXX01FTU1BUH0sIFwKIAl7MHgxMDAyLCAweDcyNDQsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIENISVBfUjU4MHxSQURFT05fTkVXX01FTU1BUH0sIFwKQEAgLTIzOCw2ICsyMzgsNyBAQAogCXsweDEwMDIsIDB4NzgzNCwgUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwgQ0hJUF9SUzMwMHxSQURFT05fSVNfSUdQfFJBREVPTl9ORVdfTUVNTUFQfSwgXAogCXsweDEwMDIsIDB4NzgzNSwgUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwgQ0hJUF9SUzMwMHxSQURFT05fSVNfSUdQfFJBREVPTl9JU19NT0JJTElUWXxSQURFT05fTkVXX01FTU1BUH0sIFwKIAl7MHgxMDAyLCAweDc5MWUsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIENISVBfUlM2OTB8UkFERU9OX0lTX0lHUHxSQURFT05fTkVXX01FTU1BUHxSQURFT05fSVNfSUdQR0FSVH0sIFwKKwl7MHgxMDAyLCAweDc5MWYsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIENISVBfUlM2OTB8UkFERU9OX0lTX0lHUHxSQURFT05fTkVXX01FTU1BUHxSQURFT05fSVNfSUdQR0FSVH0sIFwKIAl7MCwgMCwgMH0KIAogI2RlZmluZSByMTI4X1BDSV9JRFMgXApkaWZmIC0tZ2l0IGEvZHJpdmVycy9jaGFyL2RybS9kcm1fc2NhdHRlci5jIGIvZHJpdmVycy9jaGFyL2RybS9kcm1fc2NhdHRlci5jCmluZGV4IDI2ZDhmNjcuLmIyYjBmM2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY2hhci9kcm0vZHJtX3NjYXR0ZXIuYworKysgYi9kcml2ZXJzL2NoYXIvZHJtL2RybV9zY2F0dGVyLmMKQEAgLTM2LDYgKzM2LDE1IEBACiAKICNkZWZpbmUgREVCVUdfU0NBVFRFUiAwCiAKK3N0YXRpYyBpbmxpbmUgdm9pZCAqZHJtX3ZtYWxsb2NfZG1hKHVuc2lnbmVkIGxvbmcgc2l6ZSkKK3sKKyNpZiBkZWZpbmVkKF9fcG93ZXJwY19fKSAmJiBkZWZpbmVkKENPTkZJR19OT1RfQ09IRVJFTlRfQ0FDSEUpCisJcmV0dXJuIF9fdm1hbGxvYyhzaXplLCBHRlBfS0VSTkVMLCBQQUdFX0tFUk5FTCB8IF9QQUdFX05PX0NBQ0hFKTsKKyNlbHNlCisJcmV0dXJuIHZtYWxsb2NfMzIoc2l6ZSk7CisjZW5kaWYKK30KKwogdm9pZCBkcm1fc2dfY2xlYW51cChzdHJ1Y3QgZHJtX3NnX21lbSAqIGVudHJ5KQogewogCXN0cnVjdCBwYWdlICpwYWdlOwpAQCAtMTA0LDcgKzExMyw3IEBACiAJfQogCW1lbXNldCgodm9pZCAqKWVudHJ5LT5idXNhZGRyLCAwLCBwYWdlcyAqIHNpemVvZigqZW50cnktPmJ1c2FkZHIpKTsKIAotCWVudHJ5LT52aXJ0dWFsID0gdm1hbGxvY18zMihwYWdlcyA8PCBQQUdFX1NISUZUKTsKKwllbnRyeS0+dmlydHVhbCA9IGRybV92bWFsbG9jX2RtYShwYWdlcyA8PCBQQUdFX1NISUZUKTsKIAlpZiAoIWVudHJ5LT52aXJ0dWFsKSB7CiAJCWRybV9mcmVlKGVudHJ5LT5idXNhZGRyLAogCQkJIGVudHJ5LT5wYWdlcyAqIHNpemVvZigqZW50cnktPmJ1c2FkZHIpLCBEUk1fTUVNX1BBR0VTKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci9kcm0vZHJtX3ZtLmMgYi9kcml2ZXJzL2NoYXIvZHJtL2RybV92bS5jCmluZGV4IDNkNjVjNGQuLjk0NWRmNzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY2hhci9kcm0vZHJtX3ZtLmMKKysrIGIvZHJpdmVycy9jaGFyL2RybS9kcm1fdm0uYwpAQCAtNTQsMTMgKzU0LDI0IEBACiAJcGdwcm90X3ZhbCh0bXApIHw9IF9QQUdFX05PX0NBQ0hFOwogCWlmIChtYXBfdHlwZSA9PSBfRFJNX1JFR0lTVEVSUykKIAkJcGdwcm90X3ZhbCh0bXApIHw9IF9QQUdFX0dVQVJERUQ7Ci0jZW5kaWYKLSNpZiBkZWZpbmVkKF9faWE2NF9fKQorI2VsaWYgZGVmaW5lZChfX2lhNjRfXykKIAlpZiAoZWZpX3JhbmdlX2lzX3djKHZtYS0+dm1fc3RhcnQsIHZtYS0+dm1fZW5kIC0KIAkJCQkgICAgdm1hLT52bV9zdGFydCkpCiAJCXRtcCA9IHBncHJvdF93cml0ZWNvbWJpbmUodG1wKTsKIAllbHNlCiAJCXRtcCA9IHBncHJvdF9ub25jYWNoZWQodG1wKTsKKyNlbGlmIGRlZmluZWQoX19zcGFyY19fKQorCXRtcCA9IHBncHJvdF9ub25jYWNoZWQodG1wKTsKKyNlbmRpZgorCXJldHVybiB0bXA7Cit9CisKK3N0YXRpYyBwZ3Byb3RfdCBkcm1fZG1hX3Byb3QodWludDMyX3QgbWFwX3R5cGUsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQoreworCXBncHJvdF90IHRtcCA9IHZtX2dldF9wYWdlX3Byb3Qodm1hLT52bV9mbGFncyk7CisKKyNpZiBkZWZpbmVkKF9fcG93ZXJwY19fKSAmJiBkZWZpbmVkKENPTkZJR19OT1RfQ09IRVJFTlRfQ0FDSEUpCisJdG1wIHw9IF9QQUdFX05PX0NBQ0hFOwogI2VuZGlmCiAJcmV0dXJuIHRtcDsKIH0KQEAgLTYwMyw5ICs2MTQsNiBAQAogCQlvZmZzZXQgPSBkZXYtPmRyaXZlci0+Z2V0X3JlZ19vZnMoZGV2KTsKIAkJdm1hLT52bV9mbGFncyB8PSBWTV9JTzsJLyogbm90IGluIGNvcmUgZHVtcCAqLwogCQl2bWEtPnZtX3BhZ2VfcHJvdCA9IGRybV9pb19wcm90KG1hcC0+dHlwZSwgdm1hKTsKLSNpZmRlZiBfX3NwYXJjX18KLQkJdm1hLT52bV9wYWdlX3Byb3QgPSBwZ3Byb3Rfbm9uY2FjaGVkKHZtYS0+dm1fcGFnZV9wcm90KTsKLSNlbmRpZgogCQlpZiAoaW9fcmVtYXBfcGZuX3JhbmdlKHZtYSwgdm1hLT52bV9zdGFydCwKIAkJCQkgICAgICAgKG1hcC0+b2Zmc2V0ICsgb2Zmc2V0KSA+PiBQQUdFX1NISUZULAogCQkJCSAgICAgICB2bWEtPnZtX2VuZCAtIHZtYS0+dm1fc3RhcnQsCkBAIC02MjQsNiArNjMyLDcgQEAKIAkJICAgIHBhZ2VfdG9fcGZuKHZpcnRfdG9fcGFnZShtYXAtPmhhbmRsZSkpLAogCQkgICAgdm1hLT52bV9lbmQgLSB2bWEtPnZtX3N0YXJ0LCB2bWEtPnZtX3BhZ2VfcHJvdCkpCiAJCQlyZXR1cm4gLUVBR0FJTjsKKwkJdm1hLT52bV9wYWdlX3Byb3QgPSBkcm1fZG1hX3Byb3QobWFwLT50eXBlLCB2bWEpOwogCS8qIGZhbGwgdGhyb3VnaCB0byBfRFJNX1NITSAqLwogCWNhc2UgX0RSTV9TSE06CiAJCXZtYS0+dm1fb3BzID0gJmRybV92bV9zaG1fb3BzOwpAQCAtNjMxLDYgKzY0MCw3IEBACiAJCS8qIERvbid0IGxldCB0aGlzIGFyZWEgc3dhcC4gIENoYW5nZSB3aGVuCiAJCSAgIERSTV9LRVJORUwgYWR2aXNvcnkgaXMgc3VwcG9ydGVkLiAqLwogCQl2bWEtPnZtX2ZsYWdzIHw9IFZNX1JFU0VSVkVEOworCQl2bWEtPnZtX3BhZ2VfcHJvdCA9IGRybV9kbWFfcHJvdChtYXAtPnR5cGUsIHZtYSk7CiAJCWJyZWFrOwogCWNhc2UgX0RSTV9TQ0FUVEVSX0dBVEhFUjoKIAkJdm1hLT52bV9vcHMgPSAmZHJtX3ZtX3NnX29wczsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci9kcm0vaTkxNV9kbWEuYyBiL2RyaXZlcnMvY2hhci9kcm0vaTkxNV9kbWEuYwppbmRleCBlOWQ2NjYzLi5hMDQzYmIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2NoYXIvZHJtL2k5MTVfZG1hLmMKKysrIGIvZHJpdmVycy9jaGFyL2RybS9pOTE1X2RtYS5jCkBAIC04MDQsNiArODA0LDkgQEAKIHsKIAlkcm1faTkxNV9wcml2YXRlX3QgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAorCWlmICghZGV2X3ByaXYpCisJCXJldHVybjsKKwogCWlmIChkZXZfcHJpdi0+YWdwX2hlYXApCiAJCWk5MTVfbWVtX3Rha2Vkb3duKCYoZGV2X3ByaXYtPmFncF9oZWFwKSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci9kcm0vaTkxNV9kcnYuaCBiL2RyaXZlcnMvY2hhci9kcm0vaTkxNV9kcnYuaAppbmRleCBjMTBkMTI4Li42NzVkODhiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2NoYXIvZHJtL2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9jaGFyL2RybS9pOTE1X2Rydi5oCkBAIC0xMDkyLDggKzEwOTIsOCBAQAogI2RlZmluZSBJU19JOTE1RyhkZXYpICgoZGV2KS0+cGNpX2RldmljZSA9PSAweDI1ODIgfHwgKGRldiktPnBjaV9kZXZpY2UgPT0gMHgyNThhKQogI2RlZmluZSBJU19JOTE1R00oZGV2KSAoKGRldiktPnBjaV9kZXZpY2UgPT0gMHgyNTkyKQogI2RlZmluZSBJU19JOTQ1RyhkZXYpICgoZGV2KS0+cGNpX2RldmljZSA9PSAweDI3NzIpCi0jZGVmaW5lIElTX0k5NDVHTShkZXYpICgoZGV2KS0+cGNpX2RldmljZSA9PSAweDI3QTIpCi0KKyNkZWZpbmUgSVNfSTk0NUdNKGRldikgKChkZXYpLT5wY2lfZGV2aWNlID09IDB4MjdBMiB8fFwKKwkJICAgICAgICAoZGV2KS0+cGNpX2RldmljZSA9PSAweDI3QUUpCiAjZGVmaW5lIElTX0k5NjVHKGRldikgKChkZXYpLT5wY2lfZGV2aWNlID09IDB4Mjk3MiB8fCBcCiAJCSAgICAgICAoZGV2KS0+cGNpX2RldmljZSA9PSAweDI5ODIgfHwgXAogCQkgICAgICAgKGRldiktPnBjaV9kZXZpY2UgPT0gMHgyOTkyIHx8IFwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci9kcm0vcjEyOF9jY2UuYyBiL2RyaXZlcnMvY2hhci9kcm0vcjEyOF9jY2UuYwppbmRleCA4OTJlMGE1Li5mMzZhZGJkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2NoYXIvZHJtL3IxMjhfY2NlLmMKKysrIGIvZHJpdmVycy9jaGFyL2RybS9yMTI4X2NjZS5jCkBAIC01NTgsNiArNTU4LDcgQEAKICNpZiBfX09TX0hBU19BR1AKIAlpZiAoZGV2X3ByaXYtPmlzX3BjaSkgewogI2VuZGlmCisJCWRldl9wcml2LT5nYXJ0X2luZm8udGFibGVfbWFzayA9IERNQV9CSVRfTUFTSygzMik7CiAJCWRldl9wcml2LT5nYXJ0X2luZm8uZ2FydF90YWJsZV9sb2NhdGlvbiA9IERSTV9BVElfR0FSVF9NQUlOOwogCQlkZXZfcHJpdi0+Z2FydF9pbmZvLnRhYmxlX3NpemUgPSBSMTI4X1BDSUdBUlRfVEFCTEVfU0laRTsKIAkJZGV2X3ByaXYtPmdhcnRfaW5mby5hZGRyID0gTlVMTDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci9kcm0vcjMwMF9jbWRidWYuYyBiL2RyaXZlcnMvY2hhci9kcm0vcjMwMF9jbWRidWYuYwppbmRleCAwZjRhZmM0Li5mNTM1ODEyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2NoYXIvZHJtL3IzMDBfY21kYnVmLmMKKysrIGIvZHJpdmVycy9jaGFyL2RybS9yMzAwX2NtZGJ1Zi5jCkBAIC03MjksNiArNzI5LDQ3IEBACiAJYnVmLT51c2VkID0gMDsKIH0KIAorc3RhdGljIHZvaWQgcjMwMF9jbWRfd2FpdChkcm1fcmFkZW9uX3ByaXZhdGVfdCAqIGRldl9wcml2LAorCQkJICBkcm1fcjMwMF9jbWRfaGVhZGVyX3QgaGVhZGVyKQoreworCXUzMiB3YWl0X3VudGlsOworCVJJTkdfTE9DQUxTOworCisJaWYgKCFoZWFkZXIud2FpdC5mbGFncykKKwkJcmV0dXJuOworCisJd2FpdF91bnRpbCA9IDA7CisKKwlzd2l0Y2goaGVhZGVyLndhaXQuZmxhZ3MpIHsKKwljYXNlIFIzMDBfV0FJVF8yRDoKKwkJd2FpdF91bnRpbCA9IFJBREVPTl9XQUlUXzJEX0lETEU7CisJCWJyZWFrOworCWNhc2UgUjMwMF9XQUlUXzNEOgorCQl3YWl0X3VudGlsID0gUkFERU9OX1dBSVRfM0RfSURMRTsKKwkJYnJlYWs7CisJY2FzZSBSMzAwX05FV19XQUlUXzJEXzNEOgorCQl3YWl0X3VudGlsID0gUkFERU9OX1dBSVRfMkRfSURMRXxSQURFT05fV0FJVF8zRF9JRExFOworCQlicmVhazsKKwljYXNlIFIzMDBfTkVXX1dBSVRfMkRfMkRfQ0xFQU46CisJCXdhaXRfdW50aWwgPSBSQURFT05fV0FJVF8yRF9JRExFfFJBREVPTl9XQUlUXzJEX0lETEVDTEVBTjsKKwkJYnJlYWs7CisJY2FzZSBSMzAwX05FV19XQUlUXzNEXzNEX0NMRUFOOgorCQl3YWl0X3VudGlsID0gUkFERU9OX1dBSVRfM0RfSURMRXxSQURFT05fV0FJVF8zRF9JRExFQ0xFQU47CisJCWJyZWFrOworCWNhc2UgUjMwMF9ORVdfV0FJVF8yRF8yRF9DTEVBTl8zRF8zRF9DTEVBTjoKKwkJd2FpdF91bnRpbCA9IFJBREVPTl9XQUlUXzJEX0lETEV8UkFERU9OX1dBSVRfMkRfSURMRUNMRUFOOworCQl3YWl0X3VudGlsIHw9IFJBREVPTl9XQUlUXzNEX0lETEV8UkFERU9OX1dBSVRfM0RfSURMRUNMRUFOOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlyZXR1cm47CisJfQorCisJQkVHSU5fUklORygyKTsKKwlPVVRfUklORyhDUF9QQUNLRVQwKFJBREVPTl9XQUlUX1VOVElMLCAwKSk7CisJT1VUX1JJTkcod2FpdF91bnRpbCk7CisJQURWQU5DRV9SSU5HKCk7Cit9CisKIHN0YXRpYyBpbnQgcjMwMF9zY3JhdGNoKGRybV9yYWRlb25fcHJpdmF0ZV90ICpkZXZfcHJpdiwKIAkJCWRybV9yYWRlb25fa2NtZF9idWZmZXJfdCAqY21kYnVmLAogCQkJZHJtX3IzMDBfY21kX2hlYWRlcl90IGhlYWRlcikKQEAgLTkwOSwxOSArOTUwLDggQEAKIAkJCWJyZWFrOwogCiAJCWNhc2UgUjMwMF9DTURfV0FJVDoKLQkJCS8qIHNpbXBsZSBlbm91Z2gsIHdlIGNhbiBkbyBpdCBoZXJlICovCiAJCQlEUk1fREVCVUcoIlIzMDBfQ01EX1dBSVRcbiIpOwotCQkJaWYgKGhlYWRlci53YWl0LmZsYWdzID09IDApCi0JCQkJYnJlYWs7CS8qIG5vdGhpbmcgdG8gZG8gKi8KLQotCQkJewotCQkJCVJJTkdfTE9DQUxTOwotCi0JCQkJQkVHSU5fUklORygyKTsKLQkJCQlPVVRfUklORyhDUF9QQUNLRVQwKFJBREVPTl9XQUlUX1VOVElMLCAwKSk7Ci0JCQkJT1VUX1JJTkcoKGhlYWRlci53YWl0LmZsYWdzICYgMHhmKSA8PCAxNCk7Ci0JCQkJQURWQU5DRV9SSU5HKCk7Ci0JCQl9CisJCQlyMzAwX2NtZF93YWl0KGRldl9wcml2LCBoZWFkZXIpOwogCQkJYnJlYWs7CiAKIAkJY2FzZSBSMzAwX0NNRF9TQ1JBVENIOgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jaGFyL2RybS9yYWRlb25fY3AuYyBiL2RyaXZlcnMvY2hhci9kcm0vcmFkZW9uX2NwLmMKaW5kZXggODMzYWJjNy4uOTA3MmU0YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9jaGFyL2RybS9yYWRlb25fY3AuYworKysgYi9kcml2ZXJzL2NoYXIvZHJtL3JhZGVvbl9jcC5jCkBAIC0xODA3LDYgKzE4MDcsNyBAQAogCX0gZWxzZQogI2VuZGlmCiAJeworCQlkZXZfcHJpdi0+Z2FydF9pbmZvLnRhYmxlX21hc2sgPSBETUFfQklUX01BU0soMzIpOwogCQkvKiBpZiB3ZSBoYXZlIGFuIG9mZnNldCBzZXQgZnJvbSB1c2Vyc3BhY2UgKi8KIAkJaWYgKGRldl9wcml2LT5wY2lnYXJ0X29mZnNldF9zZXQpIHsKIAkJCWRldl9wcml2LT5nYXJ0X2luZm8uYnVzX2FkZHIgPQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jaGFyL2RybS9yYWRlb25fZHJtLmggYi9kcml2ZXJzL2NoYXIvZHJtL3JhZGVvbl9kcm0uaAppbmRleCA3MWU1YjIxLi5hYWI4MmUxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2NoYXIvZHJtL3JhZGVvbl9kcm0uaAorKysgYi9kcml2ZXJzL2NoYXIvZHJtL3JhZGVvbl9kcm0uaApAQCAtMjI1LDggKzIyNSwyMCBAQAogI2RlZmluZSBSMzAwX0NNRF9XQUlUCQkJNwogIwlkZWZpbmUgUjMwMF9XQUlUXzJECQkweDEKICMJZGVmaW5lIFIzMDBfV0FJVF8zRAkJMHgyCisvKiB0aGVzZSB0d28gZGVmaW5lcyBhcmUgRE9JTkcgSVQgV1JPTkcgLSBob3dldmVyCisgKiB3ZSBoYXZlIHVzZXJzcGFjZSB3aGljaCByZWxpZXMgb24gdXNpbmcgdGhlc2UuCisgKiBUaGUgd2FpdCBpbnRlcmZhY2UgaXMgYmFja3dhcmRzIGNvbXBhdCBuZXcgCisgKiBjb2RlIHNob3VsZCB1c2UgdGhlIE5FV19XQUlUIGRlZmluZXMgYmVsb3cKKyAqIFRIRVNFIEFSRSBOT1QgQklUIEZJRUxEUworICovCiAjCWRlZmluZSBSMzAwX1dBSVRfMkRfQ0xFQU4JMHgzCiAjCWRlZmluZSBSMzAwX1dBSVRfM0RfQ0xFQU4JMHg0CisKKyMJZGVmaW5lIFIzMDBfTkVXX1dBSVRfMkRfM0QJMHgzCisjCWRlZmluZSBSMzAwX05FV19XQUlUXzJEXzJEX0NMRUFOCTB4NAorIwlkZWZpbmUgUjMwMF9ORVdfV0FJVF8zRF8zRF9DTEVBTgkweDYKKyMJZGVmaW5lIFIzMDBfTkVXX1dBSVRfMkRfMkRfQ0xFQU5fM0RfM0RfQ0xFQU4JMHg4CisKICNkZWZpbmUgUjMwMF9DTURfU0NSQVRDSAkJOAogCiB0eXBlZGVmIHVuaW9uIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci9kcm0vcmFkZW9uX21lbS5jIGIvZHJpdmVycy9jaGFyL2RybS9yYWRlb25fbWVtLmMKaW5kZXggNzhiMzRmYS4uNGFmNTI4NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9jaGFyL2RybS9yYWRlb25fbWVtLmMKKysrIGIvZHJpdmVycy9jaGFyL2RybS9yYWRlb25fbWVtLmMKQEAgLTg4LDcgKzg4LDcgQEAKIAogCWxpc3RfZm9yX2VhY2gocCwgaGVhcCkgewogCQlpbnQgc3RhcnQgPSAocC0+c3RhcnQgKyBtYXNrKSAmIH5tYXNrOwotCQlpZiAocC0+ZmlsZV9wcml2ID09IDAgJiYgc3RhcnQgKyBzaXplIDw9IHAtPnN0YXJ0ICsgcC0+c2l6ZSkKKwkJaWYgKHAtPmZpbGVfcHJpdiA9PSBOVUxMICYmIHN0YXJ0ICsgc2l6ZSA8PSBwLT5zdGFydCArIHAtPnNpemUpCiAJCQlyZXR1cm4gc3BsaXRfYmxvY2socCwgc3RhcnQsIHNpemUsIGZpbGVfcHJpdik7CiAJfQogCkBAIC0xMTMsNyArMTEzLDcgQEAKIAkvKiBBc3N1bWVzIGEgc2luZ2xlIGNvbnRpZ3VvdXMgcmFuZ2UuICBOZWVkcyBhIHNwZWNpYWwgZmlsZV9wcml2IGluCiAJICogJ2hlYXAnIHRvIHN0b3AgaXQgYmVpbmcgc3Vic3VtZWQuCiAJICovCi0JaWYgKHAtPm5leHQtPmZpbGVfcHJpdiA9PSAwKSB7CisJaWYgKHAtPm5leHQtPmZpbGVfcHJpdiA9PSBOVUxMKSB7CiAJCXN0cnVjdCBtZW1fYmxvY2sgKnEgPSBwLT5uZXh0OwogCQlwLT5zaXplICs9IHEtPnNpemU7CiAJCXAtPm5leHQgPSBxLT5uZXh0OwpAQCAtMTIxLDcgKzEyMSw3IEBACiAJCWRybV9mcmVlKHEsIHNpemVvZigqcSksIERSTV9NRU1fQlVGUyk7CiAJfQogCi0JaWYgKHAtPnByZXYtPmZpbGVfcHJpdiA9PSAwKSB7CisJaWYgKHAtPnByZXYtPmZpbGVfcHJpdiA9PSBOVUxMKSB7CiAJCXN0cnVjdCBtZW1fYmxvY2sgKnEgPSBwLT5wcmV2OwogCQlxLT5zaXplICs9IHAtPnNpemU7CiAJCXEtPm5leHQgPSBwLT5uZXh0OwpAQCAtMTc0LDcgKzE3NCw3IEBACiAJICogJ2hlYXAnIHRvIHN0b3AgaXQgYmVpbmcgc3Vic3VtZWQuCiAJICovCiAJbGlzdF9mb3JfZWFjaChwLCBoZWFwKSB7Ci0JCXdoaWxlIChwLT5maWxlX3ByaXYgPT0gMCAmJiBwLT5uZXh0LT5maWxlX3ByaXYgPT0gMCkgeworCQl3aGlsZSAocC0+ZmlsZV9wcml2ID09IE5VTEwgJiYgcC0+bmV4dC0+ZmlsZV9wcml2ID09IE5VTEwpIHsKIAkJCXN0cnVjdCBtZW1fYmxvY2sgKnEgPSBwLT5uZXh0OwogCQkJcC0+c2l6ZSArPSBxLT5zaXplOwogCQkJcC0+bmV4dCA9IHEtPm5leHQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2NoYXIvZHJtL3ZpYV9kbWEuYyBiL2RyaXZlcnMvY2hhci9kcm0vdmlhX2RtYS5jCmluZGV4IDk0YmFlYzYuLjdhMzM5ZGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY2hhci9kcm0vdmlhX2RtYS5jCisrKyBiL2RyaXZlcnMvY2hhci9kcm0vdmlhX2RtYS5jCkBAIC0xMjYsNiArMTI2LDggQEAKIAkJCSAgICAgaHdfYWRkciwgY3VyX2FkZHIsIG5leHRfYWRkcik7CiAJCQlyZXR1cm4gLTE7CiAJCX0KKwkJaWYgICgoY3VyX2FkZHIgPCBod19hZGRyKSAmJiAobmV4dF9hZGRyID49IGh3X2FkZHIpKQorCQkJbXNsZWVwKDEpOwogCX0gd2hpbGUgKChjdXJfYWRkciA8IGh3X2FkZHIpICYmIChuZXh0X2FkZHIgPj0gaHdfYWRkcikpOwogCXJldHVybiAwOwogfQpAQCAtNDE2LDI3ICs0MTgsNTAgQEAKIAlpbnQgcGF1c2VkLCBjb3VudDsKIAl2b2xhdGlsZSB1aW50MzJfdCAqcGF1c2VkX2F0ID0gZGV2X3ByaXYtPmxhc3RfcGF1c2VfcHRyOwogCXVpbnQzMl90IHJlYWRlcixwdHI7CisJdWludDMyX3QgZGlmZjsKIAogCXBhdXNlZCA9IDA7CiAJdmlhX2ZsdXNoX3dyaXRlX2NvbWJpbmUoKTsKIAkodm9pZCkgKih2b2xhdGlsZSB1aW50MzJfdCAqKSh2aWFfZ2V0X2RtYShkZXZfcHJpdikgLTEpOworCiAJKnBhdXNlZF9hdCA9IHBhdXNlX2FkZHJfbG87CiAJdmlhX2ZsdXNoX3dyaXRlX2NvbWJpbmUoKTsKIAkodm9pZCkgKnBhdXNlZF9hdDsKKwogCXJlYWRlciA9ICooZGV2X3ByaXYtPmh3X2FkZHJfcHRyKTsKIAlwdHIgPSAoKHZvbGF0aWxlIGNoYXIgKilwYXVzZWRfYXQgLSBkZXZfcHJpdi0+ZG1hX3B0cikgKwogCQlkZXZfcHJpdi0+ZG1hX29mZnNldCArICh1aW50MzJfdCkgZGV2X3ByaXYtPmFncEFkZHIgKyA0OworCiAJZGV2X3ByaXYtPmxhc3RfcGF1c2VfcHRyID0gdmlhX2dldF9kbWEoZGV2X3ByaXYpIC0gMTsKIAotCWlmICgocHRyIC0gcmVhZGVyKSA8PSBkZXZfcHJpdi0+ZG1hX2RpZmYgKSB7Ci0JCWNvdW50ID0gMTAwMDAwMDA7Ci0JCXdoaWxlICghKHBhdXNlZCA9IChWSUFfUkVBRCgweDQxYykgJiAweDgwMDAwMDAwKSkgJiYgY291bnQtLSk7CisJLyoKKwkgKiBJZiB0aGVyZSBpcyBhIHBvc3NpYmlsaXR5IHRoYXQgdGhlIGNvbW1hbmQgcmVhZGVyIHdpbGwgCisJICogbWlzcyB0aGUgbmV3IHBhdXNlIGFkZHJlc3MgYW5kIHBhdXNlIG9uIHRoZSBvbGQgb25lLAorCSAqIEluIHRoYXQgY2FzZSB3ZSBuZWVkIHRvIHByb2dyYW0gdGhlIG5ldyBzdGFydCBhZGRyZXNzCisJICogdXNpbmcgUENJLgorCSAqLworCisJZGlmZiA9ICh1aW50MzJfdCkgKHB0ciAtIHJlYWRlcikgLSBkZXZfcHJpdi0+ZG1hX2RpZmY7CisJY291bnQgPSAxMDAwMDAwMDsKKwl3aGlsZShkaWZmID09IDAgJiYgY291bnQtLSkgeworCQlwYXVzZWQgPSAoVklBX1JFQUQoMHg0MWMpICYgMHg4MDAwMDAwMCk7CisJCWlmIChwYXVzZWQpIAorCQkJYnJlYWs7CisJCXJlYWRlciA9ICooZGV2X3ByaXYtPmh3X2FkZHJfcHRyKTsKKwkJZGlmZiA9ICh1aW50MzJfdCkgKHB0ciAtIHJlYWRlcikgLSBkZXZfcHJpdi0+ZG1hX2RpZmY7CiAJfQogCisJcGF1c2VkID0gVklBX1JFQUQoMHg0MWMpICYgMHg4MDAwMDAwMDsKKwogCWlmIChwYXVzZWQgJiYgIW5vX3BjaV9maXJlKSB7CiAJCXJlYWRlciA9ICooZGV2X3ByaXYtPmh3X2FkZHJfcHRyKTsKLQkJaWYgKChwdHIgLSByZWFkZXIpID09IGRldl9wcml2LT5kbWFfZGlmZikgewotCisJCWRpZmYgPSAodWludDMyX3QpIChwdHIgLSByZWFkZXIpIC0gZGV2X3ByaXYtPmRtYV9kaWZmOworCQlkaWZmICY9IChkZXZfcHJpdi0+ZG1hX2hpZ2ggLSAxKTsKKwkJaWYgKGRpZmYgIT0gMCAmJiBkaWZmIDwgKGRldl9wcml2LT5kbWFfaGlnaCA+PiAxKSkgeworCQkJRFJNX0VSUk9SKCJQYXVzZWQgYXQgaW5jb3JyZWN0IGFkZHJlc3MuICIKKwkJCQkgICIweCUwOHgsIDB4JTA4eCAweCUwOHhcbiIsCisJCQkJICBwdHIsIHJlYWRlciwgZGV2X3ByaXYtPmRtYV9kaWZmKTsKKwkJfSBlbHNlIGlmIChkaWZmID09IDApIHsKIAkJCS8qCiAJCQkgKiBUaGVyZSBpcyBhIGNvbmNlcm4gdGhhdCB0aGVzZSB3cml0ZXMgbWF5IHN0YWxsIHRoZSBQQ0kgYnVzCiAJCQkgKiBpZiB0aGUgR1BVIGlzIG5vdCBpZGxlLiBIb3dldmVyLCBpZGxpbmcgdGhlIEdQVSBmaXJzdApAQCAtNTc3LDYgKzYwMiw3IEBACiAJdWludDMyX3QgcGF1c2VfYWRkcl9sbywgcGF1c2VfYWRkcl9oaTsKIAl1aW50MzJfdCBqdW1wX2FkZHJfbG8sIGp1bXBfYWRkcl9oaTsKIAl2b2xhdGlsZSB1aW50MzJfdCAqbGFzdF9wYXVzZV9wdHI7CisJdWludDMyX3QgZG1hX2xvd19zYXZlMSwgZG1hX2xvd19zYXZlMjsKIAogCWFncF9iYXNlID0gZGV2X3ByaXYtPmRtYV9vZmZzZXQgKyAodWludDMyX3QpIGRldl9wcml2LT5hZ3BBZGRyOwogCXZpYV9hbGlnbl9jbWQoZGV2X3ByaXYsIEhDX0hBR1BCcElEX0pVTVAsIDAsICZqdW1wX2FkZHJfaGksCkBAIC02MDMsOCArNjI5LDI5IEBACiAJCSAgICAgICZwYXVzZV9hZGRyX2xvLCAwKTsKIAogCSpsYXN0X3BhdXNlX3B0ciA9IHBhdXNlX2FkZHJfbG87CisJZG1hX2xvd19zYXZlMSA9IGRldl9wcml2LT5kbWFfbG93OwogCi0JdmlhX2hvb2tfc2VnbWVudCggZGV2X3ByaXYsIGp1bXBfYWRkcl9oaSwganVtcF9hZGRyX2xvLCAwKTsKKwkvKgorCSAqIE5vdywgc2V0IGEgdHJhcCB0aGF0IHdpbGwgcGF1c2UgdGhlIHJlZ3VsYXRvciBpZiBpdCB0cmllcyB0byByZXJ1biB0aGUgb2xkCisJICogY29tbWFuZCBidWZmZXIuIChXaGljaCBtYXkgaGFwcGVuIGlmIHZpYV9ob29rX3NlZ21lbnQgZGV0ZWNzIGEgY29tbWFuZCByZWd1bGF0b3IgcGF1c2UKKwkgKiBhbmQgcmVpc3N1ZXMgdGhlIGp1bXAgY29tbWFuZCBvdmVyIFBDSSwgd2hpbGUgdGhlIHJlZ3VsYXRvciBoYXMgYWxyZWFkeSB0YWtlbiB0aGUganVtcAorCSAqIGFuZCBhY3R1YWxseSBwYXVzZWQgYXQgdGhlIGN1cnJlbnQgYnVmZmVyIGVuZCkuCisJICogVGhlcmUgYXBwZWFycyB0byBiZSBubyBvdGhlciB3YXkgdG8gZGV0ZWN0IHRoaXMgY29uZGl0aW9uLCBzaW5jZSB0aGUgaHdfYWRkcl9wb2ludGVyCisJICogZG9lcyBub3Qgc2VlbSB0byBnZXQgdXBkYXRlZCBpbW1lZGlhdGVseSB3aGVuIGEganVtcCBvY2N1cnMuCisJICovCisKKwlsYXN0X3BhdXNlX3B0ciA9CisJCXZpYV9hbGlnbl9jbWQoZGV2X3ByaXYsIEhDX0hBR1BCcElEX1BBVVNFLCAwLCAmcGF1c2VfYWRkcl9oaSwKKwkJCSAgICAgICZwYXVzZV9hZGRyX2xvLCAwKSAtIDE7CisJdmlhX2FsaWduX2NtZChkZXZfcHJpdiwgSENfSEFHUEJwSURfUEFVU0UsIDAsICZwYXVzZV9hZGRyX2hpLAorCQkgICAgICAmcGF1c2VfYWRkcl9sbywgMCk7CisJKmxhc3RfcGF1c2VfcHRyID0gcGF1c2VfYWRkcl9sbzsKKworCWRtYV9sb3dfc2F2ZTIgPSBkZXZfcHJpdi0+ZG1hX2xvdzsKKwlkZXZfcHJpdi0+ZG1hX2xvdyA9IGRtYV9sb3dfc2F2ZTE7CisJdmlhX2hvb2tfc2VnbWVudChkZXZfcHJpdiwganVtcF9hZGRyX2hpLCBqdW1wX2FkZHJfbG8sIDApOworCWRldl9wcml2LT5kbWFfbG93ID0gZG1hX2xvd19zYXZlMjsKKwl2aWFfaG9va19zZWdtZW50KGRldl9wcml2LCBwYXVzZV9hZGRyX2hpLCBwYXVzZV9hZGRyX2xvLCAwKTsKIH0KIAogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2NoYXIvZHJtL3ZpYV9kbWFibGl0LmMgYi9kcml2ZXJzL2NoYXIvZHJtL3ZpYV9kbWFibGl0LmMKaW5kZXggMzNjNTE5Ny4uNDA5ZTAwYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9jaGFyL2RybS92aWFfZG1hYmxpdC5jCisrKyBiL2RyaXZlcnMvY2hhci9kcm0vdmlhX2RtYWJsaXQuYwpAQCAtNjAzLDcgKzYwMyw3IEBACiAJICogKE5vdCBhIGJpZyBsaW1pdGF0aW9uIGFueXdheS4pCiAJICovCiAKLQlpZiAoKHhmZXItPm1lbV9zdHJpZGUgLSB4ZmVyLT5saW5lX2xlbmd0aCkgPj0gUEFHRV9TSVpFKSB7CisJaWYgKCh4ZmVyLT5tZW1fc3RyaWRlIC0geGZlci0+bGluZV9sZW5ndGgpID4gMipQQUdFX1NJWkUpIHsKIAkJRFJNX0VSUk9SKCJUb28gbGFyZ2Ugc3lzdGVtIG1lbW9yeSBzdHJpZGUuIFN0cmlkZTogJWQsICIKIAkJCSAgIkxlbmd0aDogJWRcbiIsIHhmZXItPm1lbV9zdHJpZGUsIHhmZXItPmxpbmVfbGVuZ3RoKTsKIAkJcmV0dXJuIC1FSU5WQUw7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2NoYXIvaHBldC5jIGIvZHJpdmVycy9jaGFyL2hwZXQuYwppbmRleCA0NjVhZDM1Li4xMzk5OTcxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2NoYXIvaHBldC5jCisrKyBiL2RyaXZlcnMvY2hhci9ocGV0LmMKQEAgLTczMSwxNCArNzMxLDE0IEBACiAKIGludCBocGV0X2FsbG9jKHN0cnVjdCBocGV0X2RhdGEgKmhkcCkKIHsKLQl1NjQgY2FwLCBtY2ZnLCBocGV0X2NvbmZpZzsKKwl1NjQgY2FwLCBtY2ZnOwogCXN0cnVjdCBocGV0X2RldiAqZGV2cDsKLQl1MzIgaSwgbnRpbWVyLCBpcnE7CisJdTMyIGksIG50aW1lcjsKIAlzdHJ1Y3QgaHBldHMgKmhwZXRwOwogCXNpemVfdCBzaXo7CiAJc3RydWN0IGhwZXQgX19pb21lbSAqaHBldDsKIAlzdGF0aWMgc3RydWN0IGhwZXRzICpsYXN0ID0gTlVMTDsKLQl1bnNpZ25lZCBsb25nIHBlcmlvZCwgaXJxX2JpdG1hcDsKKwl1bnNpZ25lZCBsb25nIHBlcmlvZDsKIAl1bnNpZ25lZCBsb25nIGxvbmcgdGVtcDsKIAogCS8qCkBAIC03NjUsNDggKzc2NSwxMiBAQAogCWhwZXRwLT5ocF9ocGV0X3BoeXMgPSBoZHAtPmhkX3BoeXNfYWRkcmVzczsKIAogCWhwZXRwLT5ocF9udGltZXIgPSBoZHAtPmhkX25pcnFzOworCisJZm9yIChpID0gMDsgaSA8IGhkcC0+aGRfbmlycXM7IGkrKykKKwkJaHBldHAtPmhwX2RldltpXS5oZF9oZHdpcnEgPSBoZHAtPmhkX2lycVtpXTsKKwogCWhwZXQgPSBocGV0cC0+aHBfaHBldDsKIAotCS8qIEFzc2lnbiBJUlFzIHN0YXRpY2FsbHkgZm9yIGxlZ2FjeSBkZXZpY2VzICovCi0JaHBldHAtPmhwX2RldlswXS5oZF9oZHdpcnEgPSBoZHAtPmhkX2lycVswXTsKLQlocGV0cC0+aHBfZGV2WzFdLmhkX2hkd2lycSA9IGhkcC0+aGRfaXJxWzFdOwotCi0JLyogQXNzaWduIElSUXMgZHluYW1pY2FsbHkgZm9yIHRoZSBvdGhlcnMgKi8KLQlmb3IgKGkgPSAyLCBkZXZwID0gJmhwZXRwLT5ocF9kZXZbMl07IGkgPCBoZHAtPmhkX25pcnFzOyBpKyssIGRldnArKykgewotCQlzdHJ1Y3QgaHBldF90aW1lciBfX2lvbWVtICp0aW1lcjsKLQotCQl0aW1lciA9ICZocGV0LT5ocGV0X3RpbWVyc1tkZXZwIC0gaHBldHAtPmhwX2Rldl07Ci0KLQkJLyogQ2hlY2sgaWYgdGhlcmUncyBhbHJlYWR5IGFuIElSUSBhc3NpZ25lZCB0byB0aGUgdGltZXIgKi8KLQkJaWYgKGhkcC0+aGRfaXJxW2ldKSB7Ci0JCQlocGV0cC0+aHBfZGV2W2ldLmhkX2hkd2lycSA9IGhkcC0+aGRfaXJxW2ldOwotCQkJY29udGludWU7Ci0JCX0KLQotCQlocGV0X2NvbmZpZyA9IHJlYWRxKCZ0aW1lci0+aHBldF9jb25maWcpOwotCQlpcnFfYml0bWFwID0gKGhwZXRfY29uZmlnICYgVG5fSU5UX1JPVVRFX0NBUF9NQVNLKQotCQkJPj4gVG5fSU5UX1JPVVRFX0NBUF9TSElGVDsKLQkJaWYgKCFpcnFfYml0bWFwKQotCQkJaXJxID0gMDsgICAgICAgIC8qIE5vIHZhbGlkIElSUSBBc3NpZ25hYmxlICovCi0JCWVsc2UgewotCQkJaXJxID0gZmluZF9maXJzdF9iaXQoJmlycV9iaXRtYXAsIDMyKTsKLQkJCWRvIHsKLQkJCQlocGV0X2NvbmZpZyB8PSBpcnEgPDwgVG5fSU5UX1JPVVRFX0NORl9TSElGVDsKLQkJCQl3cml0ZXEoaHBldF9jb25maWcsICZ0aW1lci0+aHBldF9jb25maWcpOwotCi0JCQkJLyoKLQkJCQkgKiBWZXJpZnkgd2hldGhlciB3ZSBoYXZlIHdyaXR0ZW4gYSB2YWxpZAotCQkJCSAqIElSUSBudW1iZXIgYnkgcmVhZGluZyBpdCBiYWNrIGFnYWluCi0JCQkJICovCi0JCQkJaHBldF9jb25maWcgPSByZWFkcSgmdGltZXItPmhwZXRfY29uZmlnKTsKLQkJCQlpZiAoaXJxID09IChocGV0X2NvbmZpZyAmIFRuX0lOVF9ST1VURV9DTkZfTUFTSykKLQkJCQkJCT4+IFRuX0lOVF9ST1VURV9DTkZfU0hJRlQpCi0JCQkJCWJyZWFrOyAgLyogU3VjY2VzcyAqLwotCQkJfSB3aGlsZSAoKGlycSA9IChmaW5kX25leHRfYml0KCZpcnFfYml0bWFwLCAzMiwgaXJxKSkpKTsKLQkJfQotCQlocGV0cC0+aHBfZGV2W2ldLmhkX2hkd2lycSA9IGlycTsKLQl9Ci0KIAljYXAgPSByZWFkcSgmaHBldC0+aHBldF9jYXApOwogCiAJbnRpbWVyID0gKChjYXAgJiBIUEVUX05VTV9USU1fQ0FQX01BU0spID4+IEhQRVRfTlVNX1RJTV9DQVBfU0hJRlQpICsgMTsKQEAgLTgzNiw4ICs4MDAsNyBAQAogCQlocGV0cC0+aHBfd2hpY2gsIGhkcC0+aGRfcGh5c19hZGRyZXNzLAogCQlocGV0cC0+aHBfbnRpbWVyID4gMSA/ICJzIiA6ICIiKTsKIAlmb3IgKGkgPSAwOyBpIDwgaHBldHAtPmhwX250aW1lcjsgaSsrKQotCQlwcmludGsoIiVzICVkIiwgaSA+IDAgPyAiLCIgOiAiIiwKLQkJCQlocGV0cC0+aHBfZGV2W2ldLmhkX2hkd2lycSk7CisJCXByaW50aygiJXMgJWQiLCBpID4gMCA/ICIsIiA6ICIiLCBoZHAtPmhkX2lycVtpXSk7CiAJcHJpbnRrKCJcbiIpOwogCiAJcHJpbnRrKEtFUk5fSU5GTyAiaHBldCV1OiAldSAlZC1iaXQgdGltZXJzLCAlTHUgSHpcbiIsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL0tjb25maWcgYi9kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL0tjb25maWcKaW5kZXggNmJiZDRmYS4uOGQ2YzIwOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9LY29uZmlnCisrKyBiL2RyaXZlcnMvY2hhci9od19yYW5kb20vS2NvbmZpZwpAQCAtOSw3ICs5LDE0IEBACiAJICBIYXJkd2FyZSBSYW5kb20gTnVtYmVyIEdlbmVyYXRvciBDb3JlIGluZnJhc3RydWN0dXJlLgogCiAJICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUKLQkgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBybmctY29yZS4KKwkgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBybmctY29yZS4gIFRoaXMgcHJvdmlkZXMgYSBkZXZpY2UKKwkgIHRoYXQncyB1c3VhbGx5IGNhbGxlZCAvZGV2L2h3X3JhbmRvbSwgYW5kIHdoaWNoIGV4cG9zZXMgb25lCisJICBvZiBwb3NzaWJseSBzZXZlcmFsIGhhcmR3YXJlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9ycy4KKworCSAgVGhlc2UgaGFyZHdhcmUgcmFuZG9tIG51bWJlciBnZW5lcmF0b3JzIGRvIG5vdCBmZWVkIGRpcmVjdGx5CisJICBpbnRvIHRoZSBrZXJuZWwncyByYW5kb20gbnVtYmVyIGdlbmVyYXRvci4gIFRoYXQgaXMgdXN1YWxseQorCSAgaGFuZGxlZCBieSB0aGUgInJuZ2QiIGRhZW1vbi4gIERvY3VtZW50YXRpb24vaHdfcmFuZG9tLnR4dAorCSAgaGFzIG1vcmUgaW5mb3JtYXRpb24uCiAKIAkgIElmIHVuc3VyZSwgc2F5IFkuCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci9pcDIvaTJsaWIuYyBiL2RyaXZlcnMvY2hhci9pcDIvaTJsaWIuYwppbmRleCBkNjU2N2IzLi45YzI1MzIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2NoYXIvaXAyL2kybGliLmMKKysrIGIvZHJpdmVycy9jaGFyL2lwMi9pMmxpYi5jCkBAIC02NDQsMTIgKzY0NCwxMiBAQAogCQkJCS8vIE5vcm1hbCBFeHBlY3RlZCBwYXRoIC0gV2Ugc3RpbGwgaG9sZCBMT0NLCiAJCQkJYnJlYWs7IC8qIGZyb20gZm9yKCktIEVub3VnaCByb29tOiBnb3RvIHByb2NlZWQgKi8KIAkJCX0KLQkJfQorCQkJaXAydHJhY2UoQ0hBTk4sIElUUkNfUVVFVUUsIDMsIDEsIHRvdGFsc2l6ZSk7CisJCQlXUklURV9VTkxPQ0tfSVJRUkVTVE9SRShsb2NrX3Zhcl9wLCBmbGFncyk7CisJCX0gZWxzZQorCQkJaXAydHJhY2UoQ0hBTk4sIElUUkNfUVVFVUUsIDMsIDEsIHRvdGFsc2l6ZSk7CiAKLQkJaXAydHJhY2UgKENIQU5OLCBJVFJDX1FVRVVFLCAzLCAxLCB0b3RhbHNpemUgKTsKLQotCQkvLyBQcmVwYXJlIHRvIHdhaXQgZm9yIGJ1ZmZlcnMgdG8gZW1wdHkKLQkJV1JJVEVfVU5MT0NLX0lSUVJFU1RPUkUobG9ja192YXJfcCxmbGFncyk7IAorCQkvKiBQcmVwYXJlIHRvIHdhaXQgZm9yIGJ1ZmZlcnMgdG8gZW1wdHkgKi8KIAkJc2VydmljZU91dGdvaW5nRmlmbyhwQik7CS8vIER1bXAgd2hhdCB3ZSBnb3QKIAogCQlpZiAodGltZW91dCA9PSAwKSB7CkBAIC0xODMwLDYgKzE4MzAsOCBAQAogCQlkZWZhdWx0OiAvLyBOZWl0aGVyIHBhY2tldD8gc2hvdWxkIGJlIGltcG9zc2libGUKIAkJCWlwMnRyYWNlIChJVFJDX05PX1BPUlQsIElUUkNfU0ZJRk8sIDUsIDEsCiAJCQkJUFRZUEVfT0YocEItPmkyZUxlYWRvZmZXb3JkKSApOworCQkJV1JJVEVfVU5MT0NLX0lSUVJFU1RPUkUoJnBCLT5yZWFkX2ZpZm9fc3BpbmxvY2ssCisJCQkJCWJmbGFncyk7CiAKIAkJCWJyZWFrOwogCQl9ICAvLyBFbmQgb2Ygc3dpdGNoIG9uIHR5cGUgb2YgcGFja2V0cwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jaGFyL25fdHR5LmMgYi9kcml2ZXJzL2NoYXIvbl90dHkuYwppbmRleCA0NmIyYTFjLi4wYzA5NDA5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2NoYXIvbl90dHkuYworKysgYi9kcml2ZXJzL2NoYXIvbl90dHkuYwpAQCAtMTE4Myw3ICsxMTgzLDcgQEAKIAlyZXR1cm4gcmV0dmFsOwogfQogCi1leHRlcm4gc3NpemVfdCByZWRpcmVjdGVkX3R0eV93cml0ZShzdHJ1Y3QgZmlsZSAqLCBjb25zdCBjaGFyICosCitleHRlcm4gc3NpemVfdCByZWRpcmVjdGVkX3R0eV93cml0ZShzdHJ1Y3QgZmlsZSAqLCBjb25zdCBjaGFyIF9fdXNlciAqLAogCQkJCQkJCXNpemVfdCwgbG9mZl90ICopOwogCiAvKioKZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci9ub3pvbWkuYyBiL2RyaXZlcnMvY2hhci9ub3pvbWkuYwppbmRleCA2ZDBkYzVmLi42YTY4NDNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2NoYXIvbm96b21pLmMKKysrIGIvZHJpdmVycy9jaGFyL25vem9taS5jCkBAIC00MzgsNyArNDM4LDcgQEAKIAkJCXUzMiBzaXplX2J5dGVzKQogewogCXUzMiBpID0gMDsKLQljb25zdCB1MzIgKnB0ciA9IChfX2ZvcmNlIHUzMiAqKSBtZW1fYWRkcl9zdGFydDsKKwljb25zdCB1MzIgX19pb21lbSAqcHRyID0gbWVtX2FkZHJfc3RhcnQ7CiAJdTE2ICpidWYxNjsKIAogCWlmICh1bmxpa2VseSghcHRyIHx8ICFidWYpKQpAQCAtNDQ4LDExICs0NDgsMTEgQEAKIAlzd2l0Y2ggKHNpemVfYnl0ZXMpIHsKIAljYXNlIDI6CS8qIDIgYnl0ZXMgKi8KIAkJYnVmMTYgPSAodTE2ICopIGJ1ZjsKLQkJKmJ1ZjE2ID0gX19sZTE2X3RvX2NwdShyZWFkdygodm9pZCBfX2lvbWVtICopcHRyKSk7CisJCSpidWYxNiA9IF9fbGUxNl90b19jcHUocmVhZHcocHRyKSk7CiAJCWdvdG8gb3V0OwogCQlicmVhazsKIAljYXNlIDQ6CS8qIDQgYnl0ZXMgKi8KLQkJKihidWYpID0gX19sZTMyX3RvX2NwdShyZWFkbCgodm9pZCBfX2lvbWVtICopcHRyKSk7CisJCSooYnVmKSA9IF9fbGUzMl90b19jcHUocmVhZGwocHRyKSk7CiAJCWdvdG8gb3V0OwogCQlicmVhazsKIAl9CkBAIC00NjEsMTEgKzQ2MSwxMSBAQAogCQlpZiAoc2l6ZV9ieXRlcyAtIGkgPT0gMikgewogCQkJLyogSGFuZGxlIDIgYnl0ZXMgaW4gdGhlIGVuZCAqLwogCQkJYnVmMTYgPSAodTE2ICopIGJ1ZjsKLQkJCSooYnVmMTYpID0gX19sZTE2X3RvX2NwdShyZWFkdygodm9pZCBfX2lvbWVtICopcHRyKSk7CisJCQkqKGJ1ZjE2KSA9IF9fbGUxNl90b19jcHUocmVhZHcocHRyKSk7CiAJCQlpICs9IDI7CiAJCX0gZWxzZSB7CiAJCQkvKiBSZWFkIDQgYnl0ZXMgKi8KLQkJCSooYnVmKSA9IF9fbGUzMl90b19jcHUocmVhZGwoKHZvaWQgX19pb21lbSAqKXB0cikpOworCQkJKihidWYpID0gX19sZTMyX3RvX2NwdShyZWFkbChwdHIpKTsKIAkJCWkgKz0gNDsKIAkJfQogCQlidWYrKzsKQEAgLTQ4NCw3ICs0ODQsNyBAQAogCQkJdTMyIHNpemVfYnl0ZXMpCiB7CiAJdTMyIGkgPSAwOwotCXUzMiAqcHRyID0gKF9fZm9yY2UgdTMyICopIG1lbV9hZGRyX3N0YXJ0OworCXUzMiBfX2lvbWVtICpwdHIgPSBtZW1fYWRkcl9zdGFydDsKIAljb25zdCB1MTYgKmJ1ZjE2OwogCiAJaWYgKHVubGlrZWx5KCFwdHIgfHwgIWJ1ZikpCkBAIC00OTQsNyArNDk0LDcgQEAKIAlzd2l0Y2ggKHNpemVfYnl0ZXMpIHsKIAljYXNlIDI6CS8qIDIgYnl0ZXMgKi8KIAkJYnVmMTYgPSAoY29uc3QgdTE2ICopYnVmOwotCQl3cml0ZXcoX19jcHVfdG9fbGUxNigqYnVmMTYpLCAodm9pZCBfX2lvbWVtICopcHRyKTsKKwkJd3JpdGV3KF9fY3B1X3RvX2xlMTYoKmJ1ZjE2KSwgcHRyKTsKIAkJcmV0dXJuIDI7CiAJCWJyZWFrOwogCWNhc2UgMTogLyoKQEAgLTUwMiw3ICs1MDIsNyBAQAogCQkgKiBzbyBmYWxsaW5nIHRocm91Z2guLgogCQkgKi8KIAljYXNlIDQ6IC8qIDQgYnl0ZXMgKi8KLQkJd3JpdGVsKF9fY3B1X3RvX2xlMzIoKmJ1ZiksICh2b2lkIF9faW9tZW0gKilwdHIpOworCQl3cml0ZWwoX19jcHVfdG9fbGUzMigqYnVmKSwgcHRyKTsKIAkJcmV0dXJuIDQ7CiAJCWJyZWFrOwogCX0KQEAgLTUxMSwxMSArNTExLDExIEBACiAJCWlmIChzaXplX2J5dGVzIC0gaSA9PSAyKSB7CiAJCQkvKiAyIGJ5dGVzICovCiAJCQlidWYxNiA9IChjb25zdCB1MTYgKilidWY7Ci0JCQl3cml0ZXcoX19jcHVfdG9fbGUxNigqYnVmMTYpLCAodm9pZCBfX2lvbWVtICopcHRyKTsKKwkJCXdyaXRldyhfX2NwdV90b19sZTE2KCpidWYxNiksIHB0cik7CiAJCQlpICs9IDI7CiAJCX0gZWxzZSB7CiAJCQkvKiA0IGJ5dGVzICovCi0JCQl3cml0ZWwoX19jcHVfdG9fbGUzMigqYnVmKSwgKHZvaWQgX19pb21lbSAqKXB0cik7CisJCQl3cml0ZWwoX19jcHVfdG9fbGUzMigqYnVmKSwgcHRyKTsKIAkJCWkgKz0gNDsKIAkJfQogCQlidWYrKzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci9yaW8vcmlvdGFibGUuYyBiL2RyaXZlcnMvY2hhci9yaW8vcmlvdGFibGUuYwppbmRleCA5OTExMTljLi45YjUyODkyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2NoYXIvcmlvL3Jpb3RhYmxlLmMKKysrIGIvZHJpdmVycy9jaGFyL3Jpby9yaW90YWJsZS5jCkBAIC00MjUsOCArNDI1LDEwIEBACiAKIAkJTWFwUCA9ICZwLT5SSU9Db25uZWN0VGFibGVbTmV4dCsrXTsKIAkJTWFwUC0+SG9zdFVuaXF1ZU51bSA9IEhvc3RQLT5VbmlxdWVOdW07Ci0JCWlmICgoSG9zdFAtPkZsYWdzICYgUlVOX1NUQVRFKSAhPSBSQ19SVU5OSU5HKQorCQlpZiAoKEhvc3RQLT5GbGFncyAmIFJVTl9TVEFURSkgIT0gUkNfUlVOTklORykgeworCQkJcmlvX3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoJkhvc3RQLT5Ib3N0TG9jaywgZmxhZ3MpOwogCQkJY29udGludWU7CisJCX0KIAkJTWFwUC0+UnRhVW5pcXVlTnVtID0gMDsKIAkJTWFwUC0+SUQgPSAwOwogCQlNYXBQLT5GbGFncyA9IFNMT1RfSU5fVVNFOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jaGFyL3Jpby9yaW90dHkuYyBiL2RyaXZlcnMvY2hhci9yaW8vcmlvdHR5LmMKaW5kZXggYTRmMGIxZS4uY2ZhNTQzNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9jaGFyL3Jpby9yaW90dHkuYworKysgYi9kcml2ZXJzL2NoYXIvcmlvL3Jpb3R0eS5jCkBAIC0zMTksNiArMzE5LDcgQEAKIAkJCVBvcnRQLT5TdGF0ZSB8PSBSSU9fV09QRU47CiAJCQlyaW9fc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmUG9ydFAtPnBvcnRTZW0sIGZsYWdzKTsKIAkJCWlmIChSSU9EZWxheShQb3J0UCwgSFVORFJFRF9NUykgPT0gUklPX0ZBSUwpIHsKKwkJCQlyaW9fc3Bpbl9sb2NrX2lycXNhdmUoJlBvcnRQLT5wb3J0U2VtLCBmbGFncyk7CiAJCQkJLyoKIAkJCQkgKiogQUNUSU9OOiB2ZXJpZnkgdGhhdCB0aGlzIGlzIGEgZ29vZCB0aGluZwogCQkJCSAqKiB0byBkbyBoZXJlLiAtLSA/Pz8KQEAgLTMzNCw2ICszMzUsNyBAQAogCQkJCWZ1bmNfZXhpdCgpOwogCQkJCXJldHVybiAtRUlOVFI7CiAJCQl9CisJCQlyaW9fc3Bpbl9sb2NrX2lycXNhdmUoJlBvcnRQLT5wb3J0U2VtLCBmbGFncyk7CiAJCX0KIAkJUG9ydFAtPlN0YXRlICY9IH5SSU9fV09QRU47CiAJfQpAQCAtNDkzLDYgKzQ5NSw3IEBACiAKIAlpZiAoUklPU2hvcnRDb21tYW5kKHAsIFBvcnRQLCBDTE9TRSwgMSwgMCkgPT0gUklPX0ZBSUwpIHsKIAkJUklPUHJlZW1wdGl2ZUNtZChwLCBQb3J0UCwgRkNMT1NFKTsKKwkJcmlvX3NwaW5fbG9ja19pcnFzYXZlKCZQb3J0UC0+cG9ydFNlbSwgZmxhZ3MpOwogCQlnb3RvIGNsb3NlX2VuZDsKIAl9CiAKQEAgLTUwOCw2ICs1MTEsNyBAQAogCiAJCQlpZiAocC0+UklPSGFsdGVkKSB7CiAJCQkJUklPQ2xlYXJVcChQb3J0UCk7CisJCQkJcmlvX3NwaW5fbG9ja19pcnFzYXZlKCZQb3J0UC0+cG9ydFNlbSwgZmxhZ3MpOwogCQkJCWdvdG8gY2xvc2VfZW5kOwogCQkJfQogCQkJaWYgKFJJT0RlbGF5KFBvcnRQLCBIVU5EUkVEX01TKSA9PSBSSU9fRkFJTCkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jaGFyL3Jpc2NvbTguYyBiL2RyaXZlcnMvY2hhci9yaXNjb204LmMKaW5kZXggNTg5YWM2Zi4uM2Y5ZDBhOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9jaGFyL3Jpc2NvbTguYworKysgYi9kcml2ZXJzL2NoYXIvcmlzY29tOC5jCkBAIC0xNzA5LDcgKzE3MDksNyBAQAogCiAJaWYgKGlvYmFzZSB8fCBpb2Jhc2UxIHx8IGlvYmFzZTIgfHwgaW9iYXNlMykgewogCQlmb3IoaSA9IDA7IGkgPCBSQ19OQk9BUkQ7IGkrKykKLQkJCXJjX2JvYXJkWzBdLmJhc2UgPSAwOworCQkJcmNfYm9hcmRbaV0uYmFzZSA9IDA7CiAJfQogCiAJaWYgKGlvYmFzZSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci9yb2NrZXQuYyBiL2RyaXZlcnMvY2hhci9yb2NrZXQuYwppbmRleCA3MmYyODkyLi5mNTg1YmM4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2NoYXIvcm9ja2V0LmMKKysrIGIvZHJpdmVycy9jaGFyL3JvY2tldC5jCkBAIC04Myw2ICs4Myw3IEBACiAjaW5jbHVkZSA8bGludXgvcGNpLmg+CiAjaW5jbHVkZSA8YXNtL3VhY2Nlc3MuaD4KICNpbmNsdWRlIDxhc20vYXRvbWljLmg+CisjaW5jbHVkZSA8YXNtL3VuYWxpZ25lZC5oPgogI2luY2x1ZGUgPGxpbnV4L2JpdG9wcy5oPgogI2luY2x1ZGUgPGxpbnV4L3NwaW5sb2NrLmg+CiAjaW5jbHVkZSA8bGludXgvaW5pdC5oPgpAQCAtMTMxMiw3ICsxMzEzLDcgQEAKIAlpZiAoY2xlYXIgJiBUSU9DTV9EVFIpCiAJCWluZm8tPmNoYW5uZWwuVHhDb250cm9sWzNdICY9IH5TRVRfRFRSOwogCi0Jc091dERXKGluZm8tPmNoYW5uZWwuSW5kZXhBZGRyLCAqKERXb3JkX3QgKikgJiAoaW5mby0+Y2hhbm5lbC5UeENvbnRyb2xbMF0pKTsKKwlvdXQzMihpbmZvLT5jaGFubmVsLkluZGV4QWRkciwgaW5mby0+Y2hhbm5lbC5UeENvbnRyb2wpOwogCXJldHVybiAwOwogfQogCkBAIC0xNzQ4LDcgKzE3NDksNyBAQAogCiAJLyogIFdyaXRlIHJlbWFpbmluZyBkYXRhIGludG8gdGhlIHBvcnQncyB4bWl0X2J1ZiAqLwogCXdoaWxlICgxKSB7Ci0JCWlmIChpbmZvLT50dHkgPT0gMCkJLyogICBTZWVtaW5nbHkgb2JsaWdhdG9yeSBjaGVjay4uLiAqLworCQlpZiAoIWluZm8tPnR0eSkJLyogICBTZWVtaW5nbHkgb2JsaWdhdG9yeSBjaGVjay4uLiAqLwogCQkJZ290byBlbmQ7CiAKIAkJYyA9IG1pbihjb3VudCwgbWluKFhNSVRfQlVGX1NJWkUgLSBpbmZvLT54bWl0X2NudCAtIDEsIFhNSVRfQlVGX1NJWkUgLSBpbmZvLT54bWl0X2hlYWQpKTsKQEAgLTI3OTgsNyArMjc5OSw3IEBACiAJc3RhdGljIEJ5dGVfdCBSWzRdID0geyAweDAwLCAweDAwLCAweDM0LCAweDEyIH07CiAKIAkvKiB3cml0ZSB0byBjaGFuIDAgU1JBTSAqLwotCXNPdXREVygoRFdvcmRJT190KSBpbyArIF9JTkRYX0FERFIsICooKERXb3JkX3QgKikgJiBSWzBdKSk7CisJb3V0MzIoKERXb3JkSU9fdCkgaW8gKyBfSU5EWF9BRERSLCBSKTsKIAlzT3V0VyhpbyArIF9JTkRYX0FERFIsIDApOwkvKiByZWFkIGZyb20gU1JBTSwgY2hhbiAwICovCiAJeCA9IHNJblcoaW8gKyBfSU5EWF9EQVRBKTsKIAlzT3V0VyhpbyArIF9JTkRYX0FERFIsIDB4NDAwMCk7CS8qIHJlYWQgZnJvbSBTUkFNLCBjaGFuIDQgKi8KQEAgLTI4NjQsNyArMjg2NSw3IEBACiAJCVJbMV0gPSBSRGF0YVtpICsgMV0gKyAweDEwICogQ2hhbk51bTsKIAkJUlsyXSA9IFJEYXRhW2kgKyAyXTsKIAkJUlszXSA9IFJEYXRhW2kgKyAzXTsKLQkJc091dERXKENoUC0+SW5kZXhBZGRyLCAqKChEV29yZF90ICopICYgUlswXSkpOworCQlvdXQzMihDaFAtPkluZGV4QWRkciwgUik7CiAJfQogCiAJQ2hSID0gQ2hQLT5SOwpAQCAtMjg4Nyw0MyArMjg4OCw0MyBAQAogCUNoUC0+QmF1ZERpdlsxXSA9IChCeXRlX3QpICgoQ2hPZmYgKyBfQkFVRCkgPj4gOCk7CiAJQ2hQLT5CYXVkRGl2WzJdID0gKEJ5dGVfdCkgYnJkOTYwMDsKIAlDaFAtPkJhdWREaXZbM10gPSAoQnl0ZV90KSAoYnJkOTYwMCA+PiA4KTsKLQlzT3V0RFcoQ2hQLT5JbmRleEFkZHIsICooRFdvcmRfdCAqKSAmIENoUC0+QmF1ZERpdlswXSk7CisJb3V0MzIoQ2hQLT5JbmRleEFkZHIsIENoUC0+QmF1ZERpdik7CiAKIAlDaFAtPlR4Q29udHJvbFswXSA9IChCeXRlX3QpIChDaE9mZiArIF9UWF9DVFJMKTsKIAlDaFAtPlR4Q29udHJvbFsxXSA9IChCeXRlX3QpICgoQ2hPZmYgKyBfVFhfQ1RSTCkgPj4gOCk7CiAJQ2hQLT5UeENvbnRyb2xbMl0gPSAwOwogCUNoUC0+VHhDb250cm9sWzNdID0gMDsKLQlzT3V0RFcoQ2hQLT5JbmRleEFkZHIsICooRFdvcmRfdCAqKSAmIENoUC0+VHhDb250cm9sWzBdKTsKKwlvdXQzMihDaFAtPkluZGV4QWRkciwgQ2hQLT5UeENvbnRyb2wpOwogCiAJQ2hQLT5SeENvbnRyb2xbMF0gPSAoQnl0ZV90KSAoQ2hPZmYgKyBfUlhfQ1RSTCk7CiAJQ2hQLT5SeENvbnRyb2xbMV0gPSAoQnl0ZV90KSAoKENoT2ZmICsgX1JYX0NUUkwpID4+IDgpOwogCUNoUC0+UnhDb250cm9sWzJdID0gMDsKIAlDaFAtPlJ4Q29udHJvbFszXSA9IDA7Ci0Jc091dERXKENoUC0+SW5kZXhBZGRyLCAqKERXb3JkX3QgKikgJiBDaFAtPlJ4Q29udHJvbFswXSk7CisJb3V0MzIoQ2hQLT5JbmRleEFkZHIsIENoUC0+UnhDb250cm9sKTsKIAogCUNoUC0+VHhFbmFibGVzWzBdID0gKEJ5dGVfdCkgKENoT2ZmICsgX1RYX0VOQkxTKTsKIAlDaFAtPlR4RW5hYmxlc1sxXSA9IChCeXRlX3QpICgoQ2hPZmYgKyBfVFhfRU5CTFMpID4+IDgpOwogCUNoUC0+VHhFbmFibGVzWzJdID0gMDsKIAlDaFAtPlR4RW5hYmxlc1szXSA9IDA7Ci0Jc091dERXKENoUC0+SW5kZXhBZGRyLCAqKERXb3JkX3QgKikgJiBDaFAtPlR4RW5hYmxlc1swXSk7CisJb3V0MzIoQ2hQLT5JbmRleEFkZHIsIENoUC0+VHhFbmFibGVzKTsKIAogCUNoUC0+VHhDb21wYXJlWzBdID0gKEJ5dGVfdCkgKENoT2ZmICsgX1RYQ01QMSk7CiAJQ2hQLT5UeENvbXBhcmVbMV0gPSAoQnl0ZV90KSAoKENoT2ZmICsgX1RYQ01QMSkgPj4gOCk7CiAJQ2hQLT5UeENvbXBhcmVbMl0gPSAwOwogCUNoUC0+VHhDb21wYXJlWzNdID0gMDsKLQlzT3V0RFcoQ2hQLT5JbmRleEFkZHIsICooRFdvcmRfdCAqKSAmIENoUC0+VHhDb21wYXJlWzBdKTsKKwlvdXQzMihDaFAtPkluZGV4QWRkciwgQ2hQLT5UeENvbXBhcmUpOwogCiAJQ2hQLT5UeFJlcGxhY2UxWzBdID0gKEJ5dGVfdCkgKENoT2ZmICsgX1RYUkVQMUIxKTsKIAlDaFAtPlR4UmVwbGFjZTFbMV0gPSAoQnl0ZV90KSAoKENoT2ZmICsgX1RYUkVQMUIxKSA+PiA4KTsKIAlDaFAtPlR4UmVwbGFjZTFbMl0gPSAwOwogCUNoUC0+VHhSZXBsYWNlMVszXSA9IDA7Ci0Jc091dERXKENoUC0+SW5kZXhBZGRyLCAqKERXb3JkX3QgKikgJiBDaFAtPlR4UmVwbGFjZTFbMF0pOworCW91dDMyKENoUC0+SW5kZXhBZGRyLCBDaFAtPlR4UmVwbGFjZTEpOwogCiAJQ2hQLT5UeFJlcGxhY2UyWzBdID0gKEJ5dGVfdCkgKENoT2ZmICsgX1RYUkVQMik7CiAJQ2hQLT5UeFJlcGxhY2UyWzFdID0gKEJ5dGVfdCkgKChDaE9mZiArIF9UWFJFUDIpID4+IDgpOwogCUNoUC0+VHhSZXBsYWNlMlsyXSA9IDA7CiAJQ2hQLT5UeFJlcGxhY2UyWzNdID0gMDsKLQlzT3V0RFcoQ2hQLT5JbmRleEFkZHIsICooRFdvcmRfdCAqKSAmIENoUC0+VHhSZXBsYWNlMlswXSk7CisJb3V0MzIoQ2hQLT5JbmRleEFkZHIsIENoUC0+VHhSZXBsYWNlMik7CiAKIAlDaFAtPlR4RklGT1B0cnMgPSBDaE9mZiArIF9UWEZfT1VUUDsKIAlDaFAtPlR4RklGTyA9IENoT2ZmICsgX1RYX0ZJRk87CkBAIC0yOTc5LDcgKzI5ODAsNyBAQAogCVJbMV0gPSBDaFAtPlJbMV07CiAJUlsyXSA9IDB4MGE7CiAJUlszXSA9IENoUC0+UlszXTsKLQlzT3V0RFcoQ2hQLT5JbmRleEFkZHIsICooRFdvcmRfdCAqKSAmIFJbMF0pOworCW91dDMyKENoUC0+SW5kZXhBZGRyLCBSKTsKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtMzA5NCwxMyArMzA5NSwxMyBAQAogCQkqV29yZFB0ciA9IENoUC0+VHhQcmlvQnVmOwkvKiBkYXRhIGJ5dGUgYWRkcmVzcyAqLwogCiAJCURXQnVmWzJdID0gRGF0YTsJLyogZGF0YSBieXRlIHZhbHVlICovCi0JCXNPdXREVyhJbmRleEFkZHIsICooKERXb3JkX3QgKikgKCZEV0J1ZlswXSkpKTsJLyogd3JpdGUgaXQgb3V0ICovCisJCW91dDMyKEluZGV4QWRkciwgRFdCdWYpOwkvKiB3cml0ZSBpdCBvdXQgKi8KIAogCQkqV29yZFB0ciA9IENoUC0+VHhQcmlvQ250OwkvKiBUeCBwcmlvcml0eSBjb3VudCBhZGRyZXNzICovCiAKIAkJRFdCdWZbMl0gPSBQUklfUEVORCArIDE7CS8qIGluZGljYXRlIDEgYnl0ZSBwZW5kaW5nICovCiAJCURXQnVmWzNdID0gMDsJLyogcHJpb3JpdHkgYnVmZmVyIHBvaW50ZXIgKi8KLQkJc091dERXKEluZGV4QWRkciwgKigoRFdvcmRfdCAqKSAoJkRXQnVmWzBdKSkpOwkvKiB3cml0ZSBpdCBvdXQgKi8KKwkJb3V0MzIoSW5kZXhBZGRyLCBEV0J1Zik7CS8qIHdyaXRlIGl0IG91dCAqLwogCX0gZWxzZSB7CQkvKiB3cml0ZSBpdCB0byBUeCBGSUZPICovCiAKIAkJc1dyaXRlVHhCeXRlKHNHZXRUeFJ4RGF0YUlPKENoUCksIERhdGEpOwpAQCAtMzE0NywxMSArMzE0OCwxMSBAQAogCUNoUC0+UnhDb250cm9sWzJdIHw9CiAJICAgICgoQnl0ZV90KSBGbGFncyAmIChSWElOVF9FTiB8IFNSQ0lOVF9FTiB8IE1DSU5UX0VOKSk7CiAKLQlzT3V0RFcoQ2hQLT5JbmRleEFkZHIsICooRFdvcmRfdCAqKSAmIENoUC0+UnhDb250cm9sWzBdKTsKKwlvdXQzMihDaFAtPkluZGV4QWRkciwgQ2hQLT5SeENvbnRyb2wpOwogCiAJQ2hQLT5UeENvbnRyb2xbMl0gfD0gKChCeXRlX3QpIEZsYWdzICYgVFhJTlRfRU4pOwogCi0Jc091dERXKENoUC0+SW5kZXhBZGRyLCAqKERXb3JkX3QgKikgJiBDaFAtPlR4Q29udHJvbFswXSk7CisJb3V0MzIoQ2hQLT5JbmRleEFkZHIsIENoUC0+VHhDb250cm9sKTsKIAogCWlmIChGbGFncyAmIENIQU5JTlRfRU4pIHsKIAkJTWFzayA9IHNJbkIoQ2hQLT5JbnRNYXNrKSB8IHNCaXRNYXBTZXRUYmxbQ2hQLT5DaGFuTnVtXTsKQEAgLTMxOTAsOSArMzE5MSw5IEBACiAKIAlDaFAtPlJ4Q29udHJvbFsyXSAmPQogCSAgICB+KChCeXRlX3QpIEZsYWdzICYgKFJYSU5UX0VOIHwgU1JDSU5UX0VOIHwgTUNJTlRfRU4pKTsKLQlzT3V0RFcoQ2hQLT5JbmRleEFkZHIsICooRFdvcmRfdCAqKSAmIENoUC0+UnhDb250cm9sWzBdKTsKKwlvdXQzMihDaFAtPkluZGV4QWRkciwgQ2hQLT5SeENvbnRyb2wpOwogCUNoUC0+VHhDb250cm9sWzJdICY9IH4oKEJ5dGVfdCkgRmxhZ3MgJiBUWElOVF9FTik7Ci0Jc091dERXKENoUC0+SW5kZXhBZGRyLCAqKERXb3JkX3QgKikgJiBDaFAtPlR4Q29udHJvbFswXSk7CisJb3V0MzIoQ2hQLT5JbmRleEFkZHIsIENoUC0+VHhDb250cm9sKTsKIAogCWlmIChGbGFncyAmIENIQU5JTlRfRU4pIHsKIAkJTWFzayA9IHNJbkIoQ2hQLT5JbnRNYXNrKSAmIHNCaXRNYXBDbHJUYmxbQ2hQLT5DaGFuTnVtXTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci9yb2NrZXRfaW50LmggYi9kcml2ZXJzL2NoYXIvcm9ja2V0X2ludC5oCmluZGV4IGYzYTc1NzkuLmIwMWQzODEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY2hhci9yb2NrZXRfaW50LmgKKysrIGIvZHJpdmVycy9jaGFyL3JvY2tldF9pbnQuaApAQCAtMjYsNyArMjYsNiBAQAogdHlwZWRlZiB1bnNpZ25lZCBpbnQgV29yZF90OwogdHlwZWRlZiB1bnNpZ25lZCBpbnQgV29yZElPX3Q7CiAKLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBEV29yZF90OwogdHlwZWRlZiB1bnNpZ25lZCBpbnQgRFdvcmRJT190OwogCiAvKgpAQCAtMzgsNyArMzcsNiBAQAogICogaW5zdHJ1Y3Rpb24uCiAgKi8KIAotI2lmZGVmIFJPQ0tFVF9ERUJVR19JTwogc3RhdGljIGlubGluZSB2b2lkIHNPdXRCKHVuc2lnbmVkIHNob3J0IHBvcnQsIHVuc2lnbmVkIGNoYXIgdmFsdWUpCiB7CiAjaWZkZWYgUk9DS0VUX0RFQlVHX0lPCkBAIC01NSwxMiArNTMsMTMgQEAKIAlvdXR3X3AodmFsdWUsIHBvcnQpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgc091dERXKHVuc2lnbmVkIHNob3J0IHBvcnQsIHVuc2lnbmVkIGxvbmcgdmFsdWUpCitzdGF0aWMgaW5saW5lIHZvaWQgb3V0MzIodW5zaWduZWQgc2hvcnQgcG9ydCwgQnl0ZV90ICpwKQogeworCXUzMiB2YWx1ZSA9IGxlMzJfdG9fY3B1KGdldF91bmFsaWduZWQoKF9fbGUzMiAqKXApKTsKICNpZmRlZiBST0NLRVRfREVCVUdfSU8KLQlwcmludGsoS0VSTl9ERUJVRyAic091dERXKCV4LCAlbHgpLi4uXG4iLCBwb3J0LCB2YWx1ZSk7CisJcHJpbnRrKEtFUk5fREVCVUcgIm91dDMyKCV4LCAlbHgpLi4uXG4iLCBwb3J0LCB2YWx1ZSk7CiAjZW5kaWYKLQlvdXRsX3AoY3B1X3RvX2xlMzIodmFsdWUpLCBwb3J0KTsKKwlvdXRsX3AodmFsdWUsIHBvcnQpOwogfQogCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNoYXIgc0luQih1bnNpZ25lZCBzaG9ydCBwb3J0KQpAQCAtNzMsMTQgKzcyLDYgQEAKIAlyZXR1cm4gaW53X3AocG9ydCk7CiB9CiAKLSNlbHNlCQkJCS8qICFST0NLRVRfREVCVUdfSU8gKi8KLSNkZWZpbmUgc091dEIoYSwgYikgb3V0Yl9wKGIsIGEpCi0jZGVmaW5lIHNPdXRXKGEsIGIpIG91dHdfcChiLCBhKQotI2RlZmluZSBzT3V0RFcocG9ydCwgdmFsdWUpIG91dGxfcChjcHVfdG9fbGUzMih2YWx1ZSksIHBvcnQpCi0jZGVmaW5lIHNJbkIoYSkgKGluYl9wKGEpKQotI2RlZmluZSBzSW5XKGEpIChpbndfcChhKSkKLSNlbmRpZgkJCQkvKiBST0NLRVRfREVCVUdfSU8gKi8KLQogLyogVGhpcyBpcyB1c2VkIHRvIG1vdmUgYXJyYXlzIG9mIGJ5dGVzIHNvIGJ5dGUgc3dhcHBpbmcgaXNuJ3QgYXBwcm9wcmlhdGUuICovCiAjZGVmaW5lIHNPdXRTdHJXKHBvcnQsIGFkZHIsIGNvdW50KSBpZiAoY291bnQpIG91dHN3KHBvcnQsIGFkZHIsIGNvdW50KQogI2RlZmluZSBzSW5TdHJXKHBvcnQsIGFkZHIsIGNvdW50KSBpZiAoY291bnQpIGluc3cocG9ydCwgYWRkciwgY291bnQpCkBAIC0zOTAsNyArMzgxLDcgQEAKICNkZWZpbmUgc0NsckJyZWFrKENoUCkgXAogZG8geyBcCiAgICAoQ2hQKS0+VHhDb250cm9sWzNdICY9IH5TRVRCUkVBSzsgXAotICAgc091dERXKChDaFApLT5JbmRleEFkZHIsKihEV29yZF90ICopJihDaFApLT5UeENvbnRyb2xbMF0pOyBcCisgICBvdXQzMigoQ2hQKS0+SW5kZXhBZGRyLChDaFApLT5UeENvbnRyb2wpOyBcCiB9IHdoaWxlICgwKQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC00MDIsNyArMzkzLDcgQEAKICNkZWZpbmUgc0NsckRUUihDaFApIFwKIGRvIHsgXAogICAgKENoUCktPlR4Q29udHJvbFszXSAmPSB+U0VUX0RUUjsgXAotICAgc091dERXKChDaFApLT5JbmRleEFkZHIsKihEV29yZF90ICopJihDaFApLT5UeENvbnRyb2xbMF0pOyBcCisgICBvdXQzMigoQ2hQKS0+SW5kZXhBZGRyLChDaFApLT5UeENvbnRyb2wpOyBcCiB9IHdoaWxlICgwKQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC00MTUsNyArNDA2LDcgQEAKIGRvIHsgXAogICAgaWYgKChDaFApLT5ydHNUb2dnbGUpIGJyZWFrOyBcCiAgICAoQ2hQKS0+VHhDb250cm9sWzNdICY9IH5TRVRfUlRTOyBcCi0gICBzT3V0RFcoKENoUCktPkluZGV4QWRkciwqKERXb3JkX3QgKikmKENoUCktPlR4Q29udHJvbFswXSk7IFwKKyAgIG91dDMyKChDaFApLT5JbmRleEFkZHIsKENoUCktPlR4Q29udHJvbCk7IFwKIH0gd2hpbGUgKDApCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTQ4OSw3ICs0ODAsNyBAQAogI2RlZmluZSBzRGlzQ1RTRmxvd0N0bChDaFApIFwKIGRvIHsgXAogICAgKENoUCktPlR4Q29udHJvbFsyXSAmPSB+Q1RTRkNfRU47IFwKLSAgIHNPdXREVygoQ2hQKS0+SW5kZXhBZGRyLCooRFdvcmRfdCAqKSYoQ2hQKS0+VHhDb250cm9sWzBdKTsgXAorICAgb3V0MzIoKENoUCktPkluZGV4QWRkciwoQ2hQKS0+VHhDb250cm9sKTsgXAogfSB3aGlsZSAoMCkKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtNTAxLDcgKzQ5Miw3IEBACiAjZGVmaW5lIHNEaXNJWEFOWShDaFApIFwKIGRvIHsgXAogICAgKENoUCktPlJbMHgwZV0gPSAweDg2OyBcCi0gICBzT3V0RFcoKENoUCktPkluZGV4QWRkciwqKERXb3JkX3QgKikmKENoUCktPlJbMHgwY10pOyBcCisgICBvdXQzMigoQ2hQKS0+SW5kZXhBZGRyLCYoQ2hQKS0+UlsweDBjXSk7IFwKIH0gd2hpbGUgKDApCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTUxNSw3ICs1MDYsNyBAQAogI2RlZmluZSBzRGlzUGFyaXR5KENoUCkgXAogZG8geyBcCiAgICAoQ2hQKS0+VHhDb250cm9sWzJdICY9IH5QQVJJVFlfRU47IFwKLSAgIHNPdXREVygoQ2hQKS0+SW5kZXhBZGRyLCooRFdvcmRfdCAqKSYoQ2hQKS0+VHhDb250cm9sWzBdKTsgXAorICAgb3V0MzIoKENoUCktPkluZGV4QWRkciwoQ2hQKS0+VHhDb250cm9sKTsgXAogfSB3aGlsZSAoMCkKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtNTI3LDcgKzUxOCw3IEBACiAjZGVmaW5lIHNEaXNSVFNUb2dnbGUoQ2hQKSBcCiBkbyB7IFwKICAgIChDaFApLT5UeENvbnRyb2xbMl0gJj0gflJUU1RPR19FTjsgXAotICAgc091dERXKChDaFApLT5JbmRleEFkZHIsKihEV29yZF90ICopJihDaFApLT5UeENvbnRyb2xbMF0pOyBcCisgICBvdXQzMigoQ2hQKS0+SW5kZXhBZGRyLChDaFApLT5UeENvbnRyb2wpOyBcCiAgICAoQ2hQKS0+cnRzVG9nZ2xlID0gMDsgXAogfSB3aGlsZSAoMCkKIApAQCAtNTQwLDcgKzUzMSw3IEBACiAjZGVmaW5lIHNEaXNSeEZJRk8oQ2hQKSBcCiBkbyB7IFwKICAgIChDaFApLT5SWzB4MzJdID0gMHgwYTsgXAotICAgc091dERXKChDaFApLT5JbmRleEFkZHIsKihEV29yZF90ICopJihDaFApLT5SWzB4MzBdKTsgXAorICAgb3V0MzIoKENoUCktPkluZGV4QWRkciwmKENoUCktPlJbMHgzMF0pOyBcCiB9IHdoaWxlICgwKQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC01NjcsNyArNTU4LDcgQEAKICNkZWZpbmUgc0Rpc1RyYW5zbWl0KENoUCkgXAogZG8geyBcCiAgICAoQ2hQKS0+VHhDb250cm9sWzNdICY9IH5UWF9FTkFCTEU7IFwKLSAgIHNPdXREVygoQ2hQKS0+SW5kZXhBZGRyLCooRFdvcmRfdCAqKSYoQ2hQKS0+VHhDb250cm9sWzBdKTsgXAorICAgb3V0MzIoKENoUCktPkluZGV4QWRkciwoQ2hQKS0+VHhDb250cm9sKTsgXAogfSB3aGlsZSAoMCkKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtNTc5LDcgKzU3MCw3IEBACiAjZGVmaW5lIHNEaXNUeFNvZnRGbG93Q3RsKENoUCkgXAogZG8geyBcCiAgICAoQ2hQKS0+UlsweDA2XSA9IDB4OGE7IFwKLSAgIHNPdXREVygoQ2hQKS0+SW5kZXhBZGRyLCooRFdvcmRfdCAqKSYoQ2hQKS0+UlsweDA0XSk7IFwKKyAgIG91dDMyKChDaFApLT5JbmRleEFkZHIsJihDaFApLT5SWzB4MDRdKTsgXAogfSB3aGlsZSAoMCkKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtNjA0LDcgKzU5NSw3IEBACiAjZGVmaW5lIHNFbkNUU0Zsb3dDdGwoQ2hQKSBcCiBkbyB7IFwKICAgIChDaFApLT5UeENvbnRyb2xbMl0gfD0gQ1RTRkNfRU47IFwKLSAgIHNPdXREVygoQ2hQKS0+SW5kZXhBZGRyLCooRFdvcmRfdCAqKSYoQ2hQKS0+VHhDb250cm9sWzBdKTsgXAorICAgb3V0MzIoKENoUCktPkluZGV4QWRkciwoQ2hQKS0+VHhDb250cm9sKTsgXAogfSB3aGlsZSAoMCkKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtNjE2LDcgKzYwNyw3IEBACiAjZGVmaW5lIHNFbklYQU5ZKENoUCkgXAogZG8geyBcCiAgICAoQ2hQKS0+UlsweDBlXSA9IDB4MjE7IFwKLSAgIHNPdXREVygoQ2hQKS0+SW5kZXhBZGRyLCooRFdvcmRfdCAqKSYoQ2hQKS0+UlsweDBjXSk7IFwKKyAgIG91dDMyKChDaFApLT5JbmRleEFkZHIsJihDaFApLT5SWzB4MGNdKTsgXAogfSB3aGlsZSAoMCkKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtNjMzLDcgKzYyNCw3IEBACiAjZGVmaW5lIHNFblBhcml0eShDaFApIFwKIGRvIHsgXAogICAgKENoUCktPlR4Q29udHJvbFsyXSB8PSBQQVJJVFlfRU47IFwKLSAgIHNPdXREVygoQ2hQKS0+SW5kZXhBZGRyLCooRFdvcmRfdCAqKSYoQ2hQKS0+VHhDb250cm9sWzBdKTsgXAorICAgb3V0MzIoKENoUCktPkluZGV4QWRkciwoQ2hQKS0+VHhDb250cm9sKTsgXAogfSB3aGlsZSAoMCkKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtNjQ3LDEwICs2MzgsMTAgQEAKICNkZWZpbmUgc0VuUlRTVG9nZ2xlKENoUCkgXAogZG8geyBcCiAgICAoQ2hQKS0+UnhDb250cm9sWzJdICY9IH5SVFNGQ19FTjsgXAotICAgc091dERXKChDaFApLT5JbmRleEFkZHIsKihEV29yZF90ICopJihDaFApLT5SeENvbnRyb2xbMF0pOyBcCisgICBvdXQzMigoQ2hQKS0+SW5kZXhBZGRyLChDaFApLT5SeENvbnRyb2wpOyBcCiAgICAoQ2hQKS0+VHhDb250cm9sWzJdIHw9IFJUU1RPR19FTjsgXAogICAgKENoUCktPlR4Q29udHJvbFszXSAmPSB+U0VUX1JUUzsgXAotICAgc091dERXKChDaFApLT5JbmRleEFkZHIsKihEV29yZF90ICopJihDaFApLT5UeENvbnRyb2xbMF0pOyBcCisgICBvdXQzMigoQ2hQKS0+SW5kZXhBZGRyLChDaFApLT5UeENvbnRyb2wpOyBcCiAgICAoQ2hQKS0+cnRzVG9nZ2xlID0gMTsgXAogfSB3aGlsZSAoMCkKIApAQCAtNjYzLDcgKzY1NCw3IEBACiAjZGVmaW5lIHNFblJ4RklGTyhDaFApIFwKIGRvIHsgXAogICAgKENoUCktPlJbMHgzMl0gPSAweDA4OyBcCi0gICBzT3V0RFcoKENoUCktPkluZGV4QWRkciwqKERXb3JkX3QgKikmKENoUCktPlJbMHgzMF0pOyBcCisgICBvdXQzMigoQ2hQKS0+SW5kZXhBZGRyLCYoQ2hQKS0+UlsweDMwXSk7IFwKIH0gd2hpbGUgKDApCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTY4NCw3ICs2NzUsNyBAQAogI2RlZmluZSBzRW5SeFByb2Nlc3NvcihDaFApIFwKIGRvIHsgXAogICAgKENoUCktPlJ4Q29udHJvbFsyXSB8PSBSWFBST0NfRU47IFwKLSAgIHNPdXREVygoQ2hQKS0+SW5kZXhBZGRyLCooRFdvcmRfdCAqKSYoQ2hQKS0+UnhDb250cm9sWzBdKTsgXAorICAgb3V0MzIoKENoUCktPkluZGV4QWRkciwoQ2hQKS0+UnhDb250cm9sKTsgXAogfSB3aGlsZSAoMCkKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtNzA4LDcgKzY5OSw3IEBACiAjZGVmaW5lIHNFblRyYW5zbWl0KENoUCkgXAogZG8geyBcCiAgICAoQ2hQKS0+VHhDb250cm9sWzNdIHw9IFRYX0VOQUJMRTsgXAotICAgc091dERXKChDaFApLT5JbmRleEFkZHIsKihEV29yZF90ICopJihDaFApLT5UeENvbnRyb2xbMF0pOyBcCisgICBvdXQzMigoQ2hQKS0+SW5kZXhBZGRyLChDaFApLT5UeENvbnRyb2wpOyBcCiB9IHdoaWxlICgwKQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC03MjAsNyArNzExLDcgQEAKICNkZWZpbmUgc0VuVHhTb2Z0Rmxvd0N0bChDaFApIFwKIGRvIHsgXAogICAgKENoUCktPlJbMHgwNl0gPSAweGM1OyBcCi0gICBzT3V0RFcoKENoUCktPkluZGV4QWRkciwqKERXb3JkX3QgKikmKENoUCktPlJbMHgwNF0pOyBcCisgICBvdXQzMigoQ2hQKS0+SW5kZXhBZGRyLCYoQ2hQKS0+UlsweDA0XSk7IFwKIH0gd2hpbGUgKDApCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTkyNyw3ICs5MTgsNyBAQAogI2RlZmluZSBzU2VuZEJyZWFrKENoUCkgXAogZG8geyBcCiAgICAoQ2hQKS0+VHhDb250cm9sWzNdIHw9IFNFVEJSRUFLOyBcCi0gICBzT3V0RFcoKENoUCktPkluZGV4QWRkciwqKERXb3JkX3QgKikmKENoUCktPlR4Q29udHJvbFswXSk7IFwKKyAgIG91dDMyKChDaFApLT5JbmRleEFkZHIsKENoUCktPlR4Q29udHJvbCk7IFwKIH0gd2hpbGUgKDApCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTk0MSw3ICs5MzIsNyBAQAogZG8geyBcCiAgICAoQ2hQKS0+QmF1ZERpdlsyXSA9IChCeXRlX3QpKERJVklTT1IpOyBcCiAgICAoQ2hQKS0+QmF1ZERpdlszXSA9IChCeXRlX3QpKChESVZJU09SKSA+PiA4KTsgXAotICAgc091dERXKChDaFApLT5JbmRleEFkZHIsKihEV29yZF90ICopJihDaFApLT5CYXVkRGl2WzBdKTsgXAorICAgb3V0MzIoKENoUCktPkluZGV4QWRkciwoQ2hQKS0+QmF1ZERpdik7IFwKIH0gd2hpbGUgKDApCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTk1Myw3ICs5NDQsNyBAQAogI2RlZmluZSBzU2V0RGF0YTcoQ2hQKSBcCiBkbyB7IFwKICAgIChDaFApLT5UeENvbnRyb2xbMl0gJj0gfkRBVEE4QklUOyBcCi0gICBzT3V0RFcoKENoUCktPkluZGV4QWRkciwqKERXb3JkX3QgKikmKENoUCktPlR4Q29udHJvbFswXSk7IFwKKyAgIG91dDMyKChDaFApLT5JbmRleEFkZHIsKENoUCktPlR4Q29udHJvbCk7IFwKIH0gd2hpbGUgKDApCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTk2NSw3ICs5NTYsNyBAQAogI2RlZmluZSBzU2V0RGF0YTgoQ2hQKSBcCiBkbyB7IFwKICAgIChDaFApLT5UeENvbnRyb2xbMl0gfD0gREFUQThCSVQ7IFwKLSAgIHNPdXREVygoQ2hQKS0+SW5kZXhBZGRyLCooRFdvcmRfdCAqKSYoQ2hQKS0+VHhDb250cm9sWzBdKTsgXAorICAgb3V0MzIoKENoUCktPkluZGV4QWRkciwoQ2hQKS0+VHhDb250cm9sKTsgXAogfSB3aGlsZSAoMCkKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtOTc3LDcgKzk2OCw3IEBACiAjZGVmaW5lIHNTZXREVFIoQ2hQKSBcCiBkbyB7IFwKICAgIChDaFApLT5UeENvbnRyb2xbM10gfD0gU0VUX0RUUjsgXAotICAgc091dERXKChDaFApLT5JbmRleEFkZHIsKihEV29yZF90ICopJihDaFApLT5UeENvbnRyb2xbMF0pOyBcCisgICBvdXQzMigoQ2hQKS0+SW5kZXhBZGRyLChDaFApLT5UeENvbnRyb2wpOyBcCiB9IHdoaWxlICgwKQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC05OTQsNyArOTg1LDcgQEAKICNkZWZpbmUgc1NldEV2ZW5QYXJpdHkoQ2hQKSBcCiBkbyB7IFwKICAgIChDaFApLT5UeENvbnRyb2xbMl0gfD0gRVZFTl9QQVI7IFwKLSAgIHNPdXREVygoQ2hQKS0+SW5kZXhBZGRyLCooRFdvcmRfdCAqKSYoQ2hQKS0+VHhDb250cm9sWzBdKTsgXAorICAgb3V0MzIoKENoUCktPkluZGV4QWRkciwoQ2hQKS0+VHhDb250cm9sKTsgXAogfSB3aGlsZSAoMCkKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtMTAxMSw3ICsxMDAyLDcgQEAKICNkZWZpbmUgc1NldE9kZFBhcml0eShDaFApIFwKIGRvIHsgXAogICAgKENoUCktPlR4Q29udHJvbFsyXSAmPSB+RVZFTl9QQVI7IFwKLSAgIHNPdXREVygoQ2hQKS0+SW5kZXhBZGRyLCooRFdvcmRfdCAqKSYoQ2hQKS0+VHhDb250cm9sWzBdKTsgXAorICAgb3V0MzIoKENoUCktPkluZGV4QWRkciwoQ2hQKS0+VHhDb250cm9sKTsgXAogfSB3aGlsZSAoMCkKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtMTAyNCw3ICsxMDE1LDcgQEAKIGRvIHsgXAogICAgaWYgKChDaFApLT5ydHNUb2dnbGUpIGJyZWFrOyBcCiAgICAoQ2hQKS0+VHhDb250cm9sWzNdIHw9IFNFVF9SVFM7IFwKLSAgIHNPdXREVygoQ2hQKS0+SW5kZXhBZGRyLCooRFdvcmRfdCAqKSYoQ2hQKS0+VHhDb250cm9sWzBdKTsgXAorICAgb3V0MzIoKENoUCktPkluZGV4QWRkciwoQ2hQKS0+VHhDb250cm9sKTsgXAogfSB3aGlsZSAoMCkKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtMTA1MCw3ICsxMDQxLDcgQEAKIGRvIHsgXAogICAgKENoUCktPlJ4Q29udHJvbFsyXSAmPSB+VFJJR19NQVNLOyBcCiAgICAoQ2hQKS0+UnhDb250cm9sWzJdIHw9IExFVkVMOyBcCi0gICBzT3V0RFcoKENoUCktPkluZGV4QWRkciwqKERXb3JkX3QgKikmKENoUCktPlJ4Q29udHJvbFswXSk7IFwKKyAgIG91dDMyKChDaFApLT5JbmRleEFkZHIsKENoUCktPlJ4Q29udHJvbCk7IFwKIH0gd2hpbGUgKDApCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTEwNjIsNyArMTA1Myw3IEBACiAjZGVmaW5lIHNTZXRTdG9wMShDaFApIFwKIGRvIHsgXAogICAgKENoUCktPlR4Q29udHJvbFsyXSAmPSB+U1RPUDI7IFwKLSAgIHNPdXREVygoQ2hQKS0+SW5kZXhBZGRyLCooRFdvcmRfdCAqKSYoQ2hQKS0+VHhDb250cm9sWzBdKTsgXAorICAgb3V0MzIoKENoUCktPkluZGV4QWRkciwoQ2hQKS0+VHhDb250cm9sKTsgXAogfSB3aGlsZSAoMCkKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtMTA3NCw3ICsxMDY1LDcgQEAKICNkZWZpbmUgc1NldFN0b3AyKENoUCkgXAogZG8geyBcCiAgICAoQ2hQKS0+VHhDb250cm9sWzJdIHw9IFNUT1AyOyBcCi0gICBzT3V0RFcoKENoUCktPkluZGV4QWRkciwqKERXb3JkX3QgKikmKENoUCktPlR4Q29udHJvbFswXSk7IFwKKyAgIG91dDMyKChDaFApLT5JbmRleEFkZHIsKENoUCktPlR4Q29udHJvbCk7IFwKIH0gd2hpbGUgKDApCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTEwODcsNyArMTA3OCw3IEBACiAjZGVmaW5lIHNTZXRUeFhPRkZDaGFyKENoUCxDSCkgXAogZG8geyBcCiAgICAoQ2hQKS0+UlsweDA3XSA9IChDSCk7IFwKLSAgIHNPdXREVygoQ2hQKS0+SW5kZXhBZGRyLCooRFdvcmRfdCAqKSYoQ2hQKS0+UlsweDA0XSk7IFwKKyAgIG91dDMyKChDaFApLT5JbmRleEFkZHIsJihDaFApLT5SWzB4MDRdKTsgXAogfSB3aGlsZSAoMCkKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtMTEwMCw3ICsxMDkxLDcgQEAKICNkZWZpbmUgc1NldFR4WE9OQ2hhcihDaFAsQ0gpIFwKIGRvIHsgXAogICAgKENoUCktPlJbMHgwYl0gPSAoQ0gpOyBcCi0gICBzT3V0RFcoKENoUCktPkluZGV4QWRkciwqKERXb3JkX3QgKikmKENoUCktPlJbMHgwOF0pOyBcCisgICBvdXQzMigoQ2hQKS0+SW5kZXhBZGRyLCYoQ2hQKS0+UlsweDA4XSk7IFwKIH0gd2hpbGUgKDApCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTExMTMsNyArMTEwNCw3IEBACiAgICAgICAgICAgd2lsbCByZXN0YXJ0IGJvdGggdGhlIFJ4IHByb2Nlc3NvciBhbmQgc29mdHdhcmUgaW5wdXQgZmxvdyBjb250cm9sLgogCiAqLwotI2RlZmluZSBzU3RhcnRSeFByb2Nlc3NvcihDaFApIHNPdXREVygoQ2hQKS0+SW5kZXhBZGRyLCooRFdvcmRfdCAqKSYoQ2hQKS0+UlswXSkKKyNkZWZpbmUgc1N0YXJ0UnhQcm9jZXNzb3IoQ2hQKSBvdXQzMigoQ2hQKS0+SW5kZXhBZGRyLCYoQ2hQKS0+UlswXSkKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogRnVuY3Rpb246IHNXcml0ZVR4Qnl0ZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jb25uZWN0b3IvY25fcXVldWUuYyBiL2RyaXZlcnMvY29ubmVjdG9yL2NuX3F1ZXVlLmMKaW5kZXggNTczMmNhMy4uYjZmZTdlNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9jb25uZWN0b3IvY25fcXVldWUuYworKysgYi9kcml2ZXJzL2Nvbm5lY3Rvci9jbl9xdWV1ZS5jCkBAIC0xNDYsNyArMTQ2LDcgQEAKIAogCWRldi0+bmxzID0gbmxzOwogCi0JZGV2LT5jbl9xdWV1ZSA9IGNyZWF0ZV93b3JrcXVldWUoZGV2LT5uYW1lKTsKKwlkZXYtPmNuX3F1ZXVlID0gY3JlYXRlX3NpbmdsZXRocmVhZF93b3JrcXVldWUoZGV2LT5uYW1lKTsKIAlpZiAoIWRldi0+Y25fcXVldWUpIHsKIAkJa2ZyZWUoZGV2KTsKIAkJcmV0dXJuIE5VTEw7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS5jIGIvZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUuYwppbmRleCBkNzM2NjNhLi5mYzU1NWE5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS5jCisrKyBiL2RyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLmMKQEAgLTY3LDcgKzY3LDcgQEAKIAkvKiBlbnRlciB0aGUgc3RhdGUgYW5kIHVwZGF0ZSBzdGF0cyAqLwogCWRldi0+bGFzdF9yZXNpZGVuY3kgPSB0YXJnZXRfc3RhdGUtPmVudGVyKGRldiwgdGFyZ2V0X3N0YXRlKTsKIAlkZXYtPmxhc3Rfc3RhdGUgPSB0YXJnZXRfc3RhdGU7Ci0JdGFyZ2V0X3N0YXRlLT50aW1lICs9IGRldi0+bGFzdF9yZXNpZGVuY3k7CisJdGFyZ2V0X3N0YXRlLT50aW1lICs9ICh1bnNpZ25lZCBsb25nIGxvbmcpZGV2LT5sYXN0X3Jlc2lkZW5jeTsKIAl0YXJnZXRfc3RhdGUtPnVzYWdlKys7CiAKIAkvKiBnaXZlIHRoZSBnb3Zlcm5vciBhbiBvcHBvcnR1bml0eSB0byByZWZsZWN0IG9uIHRoZSBvdXRjb21lICovCkBAIC0yMjQsNyArMjI0LDcgQEAKIAlzdGF0ZS0+ZXhpdF9sYXRlbmN5ID0gMDsKIAlzdGF0ZS0+dGFyZ2V0X3Jlc2lkZW5jeSA9IDA7CiAJc3RhdGUtPnBvd2VyX3VzYWdlID0gLTE7Ci0Jc3RhdGUtPmZsYWdzID0gQ1BVSURMRV9GTEFHX1BPTEwgfCBDUFVJRExFX0ZMQUdfVElNRV9WQUxJRDsKKwlzdGF0ZS0+ZmxhZ3MgPSBDUFVJRExFX0ZMQUdfUE9MTDsKIAlzdGF0ZS0+ZW50ZXIgPSBwb2xsX2lkbGU7CiB9CiAjZWxzZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jcHVpZGxlL3N5c2ZzLmMgYi9kcml2ZXJzL2NwdWlkbGUvc3lzZnMuYwppbmRleCA2OTEwMmNhLi5lOTQ5NjE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2NwdWlkbGUvc3lzZnMuYworKysgYi9kcml2ZXJzL2NwdWlkbGUvc3lzZnMuYwpAQCAtMjE4LDYgKzIxOCwxMiBAQAogCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiV1XG4iLCBzdGF0ZS0+X25hbWUpO1wKIH0KIAorI2RlZmluZSBkZWZpbmVfc2hvd19zdGF0ZV91bGxfZnVuY3Rpb24oX25hbWUpIFwKK3N0YXRpYyBzc2l6ZV90IHNob3dfc3RhdGVfIyNfbmFtZShzdHJ1Y3QgY3B1aWRsZV9zdGF0ZSAqc3RhdGUsIGNoYXIgKmJ1ZikgXAoreyBcCisJcmV0dXJuIHNwcmludGYoYnVmLCAiJWxsdVxuIiwgc3RhdGUtPl9uYW1lKTtcCit9CisKICNkZWZpbmUgZGVmaW5lX3Nob3dfc3RhdGVfc3RyX2Z1bmN0aW9uKF9uYW1lKSBcCiBzdGF0aWMgc3NpemVfdCBzaG93X3N0YXRlXyMjX25hbWUoc3RydWN0IGNwdWlkbGVfc3RhdGUgKnN0YXRlLCBjaGFyICpidWYpIFwKIHsgXApAQCAtMjI4LDggKzIzNCw4IEBACiAKIGRlZmluZV9zaG93X3N0YXRlX2Z1bmN0aW9uKGV4aXRfbGF0ZW5jeSkKIGRlZmluZV9zaG93X3N0YXRlX2Z1bmN0aW9uKHBvd2VyX3VzYWdlKQotZGVmaW5lX3Nob3dfc3RhdGVfZnVuY3Rpb24odXNhZ2UpCi1kZWZpbmVfc2hvd19zdGF0ZV9mdW5jdGlvbih0aW1lKQorZGVmaW5lX3Nob3dfc3RhdGVfdWxsX2Z1bmN0aW9uKHVzYWdlKQorZGVmaW5lX3Nob3dfc3RhdGVfdWxsX2Z1bmN0aW9uKHRpbWUpCiBkZWZpbmVfc2hvd19zdGF0ZV9zdHJfZnVuY3Rpb24obmFtZSkKIGRlZmluZV9zaG93X3N0YXRlX3N0cl9mdW5jdGlvbihkZXNjKQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2NyeXB0by9oaWZuXzc5NXguYyBiL2RyaXZlcnMvY3J5cHRvL2hpZm5fNzk1eC5jCmluZGV4IDMxMTBiZjcuLjgxZjNmOTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY3J5cHRvL2hpZm5fNzk1eC5jCisrKyBiL2RyaXZlcnMvY3J5cHRvL2hpZm5fNzk1eC5jCkBAIC0zOTIsOCArMzkyLDggQEAKIAogc3RydWN0IGhpZm5fZGVzYwogewotCXZvbGF0aWxlIHUzMgkJbDsKLQl2b2xhdGlsZSB1MzIJCXA7CisJdm9sYXRpbGUgX19sZTMyCQlsOworCXZvbGF0aWxlIF9fbGUzMgkJcDsKIH07CiAKIHN0cnVjdCBoaWZuX2RtYSB7CkBAIC00ODEsMTAgKzQ4MSwxMCBAQAogCiBzdHJ1Y3QgaGlmbl9iYXNlX2NvbW1hbmQKIHsKLQl2b2xhdGlsZSB1MTYJCW1hc2tzOwotCXZvbGF0aWxlIHUxNgkJc2Vzc2lvbl9udW07Ci0Jdm9sYXRpbGUgdTE2CQl0b3RhbF9zb3VyY2VfY291bnQ7Ci0Jdm9sYXRpbGUgdTE2CQl0b3RhbF9kZXN0X2NvdW50OworCXZvbGF0aWxlIF9fbGUxNgkJbWFza3M7CisJdm9sYXRpbGUgX19sZTE2CQlzZXNzaW9uX251bTsKKwl2b2xhdGlsZSBfX2xlMTYJCXRvdGFsX3NvdXJjZV9jb3VudDsKKwl2b2xhdGlsZSBfX2xlMTYJCXRvdGFsX2Rlc3RfY291bnQ7CiB9OwogCiAjZGVmaW5lCUhJRk5fQkFTRV9DTURfQ09NUAkJMHgwMTAwCS8qIGVuYWJsZSBjb21wcmVzc2lvbiBlbmdpbmUgKi8KQEAgLTUwNCwxMCArNTA0LDEwIEBACiAgKi8KIHN0cnVjdCBoaWZuX2NyeXB0X2NvbW1hbmQKIHsKLQl2b2xhdGlsZSB1MTYgCQltYXNrczsKLQl2b2xhdGlsZSB1MTYgCQloZWFkZXJfc2tpcDsKLQl2b2xhdGlsZSB1MTYgCQlzb3VyY2VfY291bnQ7Ci0Jdm9sYXRpbGUgdTE2IAkJcmVzZXJ2ZWQ7CisJdm9sYXRpbGUgX19sZTE2IAkJbWFza3M7CisJdm9sYXRpbGUgX19sZTE2IAkJaGVhZGVyX3NraXA7CisJdm9sYXRpbGUgX19sZTE2IAkJc291cmNlX2NvdW50OworCXZvbGF0aWxlIF9fbGUxNiAJCXJlc2VydmVkOwogfTsKIAogI2RlZmluZQlISUZOX0NSWVBUX0NNRF9BTEdfTUFTSwkJMHgwMDAzCQkvKiBhbGdvcml0aG06ICovCkBAIC02NzAsNyArNjcwLDcgQEAKIHsKIAl1MzIgcmV0OwogCi0JcmV0ID0gcmVhZGwoKGNoYXIgKikoZGV2LT5iYXJbMF0pICsgcmVnKTsKKwlyZXQgPSByZWFkbChkZXYtPmJhclswXSArIHJlZyk7CiAKIAlyZXR1cm4gcmV0OwogfQpAQCAtNjc5LDE5ICs2NzksMTkgQEAKIHsKIAl1MzIgcmV0OwogCi0JcmV0ID0gcmVhZGwoKGNoYXIgKikoZGV2LT5iYXJbMV0pICsgcmVnKTsKKwlyZXQgPSByZWFkbChkZXYtPmJhclsxXSArIHJlZyk7CiAKIAlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgaGlmbl93cml0ZV8wKHN0cnVjdCBoaWZuX2RldmljZSAqZGV2LCB1MzIgcmVnLCB1MzIgdmFsKQogewotCXdyaXRlbCh2YWwsIChjaGFyICopKGRldi0+YmFyWzBdKSArIHJlZyk7CisJd3JpdGVsKHZhbCwgZGV2LT5iYXJbMF0gKyByZWcpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgaGlmbl93cml0ZV8xKHN0cnVjdCBoaWZuX2RldmljZSAqZGV2LCB1MzIgcmVnLCB1MzIgdmFsKQogewotCXdyaXRlbCh2YWwsIChjaGFyICopKGRldi0+YmFyWzFdKSArIHJlZyk7CisJd3JpdGVsKHZhbCwgZGV2LT5iYXJbMV0gKyByZWcpOwogfQogCiBzdGF0aWMgdm9pZCBoaWZuX3dhaXRfcHVjKHN0cnVjdCBoaWZuX2RldmljZSAqZGV2KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEvZG1hZW5naW5lLmMgYi9kcml2ZXJzL2RtYS9kbWFlbmdpbmUuYwppbmRleCAyOTk2NTIzLi44ZGIwZTdmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2RtYS9kbWFlbmdpbmUuYworKysgYi9kcml2ZXJzL2RtYS9kbWFlbmdpbmUuYwpAQCAtMzU3LDcgKzM1Nyw3IEBACiAJCSFkZXZpY2UtPmRldmljZV9wcmVwX2RtYV96ZXJvX3N1bSk7CiAJQlVHX09OKGRtYV9oYXNfY2FwKERNQV9NRU1TRVQsIGRldmljZS0+Y2FwX21hc2spICYmCiAJCSFkZXZpY2UtPmRldmljZV9wcmVwX2RtYV9tZW1zZXQpOwotCUJVR19PTihkbWFfaGFzX2NhcChETUFfWkVST19TVU0sIGRldmljZS0+Y2FwX21hc2spICYmCisJQlVHX09OKGRtYV9oYXNfY2FwKERNQV9JTlRFUlJVUFQsIGRldmljZS0+Y2FwX21hc2spICYmCiAJCSFkZXZpY2UtPmRldmljZV9wcmVwX2RtYV9pbnRlcnJ1cHQpOwogCiAJQlVHX09OKCFkZXZpY2UtPmRldmljZV9hbGxvY19jaGFuX3Jlc291cmNlcyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS9mc2xkbWEuYyBiL2RyaXZlcnMvZG1hL2ZzbGRtYS5jCmluZGV4IGNjOWE2ODEuLmRmMTYzNjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZG1hL2ZzbGRtYS5jCisrKyBiL2RyaXZlcnMvZG1hL2ZzbGRtYS5jCkBAIC01NywxMiArNTcsMTIgQEAKIAogfQogCi1zdGF0aWMgdm9pZCBzZXRfc3Ioc3RydWN0IGZzbF9kbWFfY2hhbiAqZnNsX2NoYW4sIGRtYV9hZGRyX3QgdmFsKQorc3RhdGljIHZvaWQgc2V0X3NyKHN0cnVjdCBmc2xfZG1hX2NoYW4gKmZzbF9jaGFuLCB1MzIgdmFsKQogewogCURNQV9PVVQoZnNsX2NoYW4sICZmc2xfY2hhbi0+cmVnX2Jhc2UtPnNyLCB2YWwsIDMyKTsKIH0KIAotc3RhdGljIGRtYV9hZGRyX3QgZ2V0X3NyKHN0cnVjdCBmc2xfZG1hX2NoYW4gKmZzbF9jaGFuKQorc3RhdGljIHUzMiBnZXRfc3Ioc3RydWN0IGZzbF9kbWFfY2hhbiAqZnNsX2NoYW4pCiB7CiAJcmV0dXJuIERNQV9JTihmc2xfY2hhbiwgJmZzbF9jaGFuLT5yZWdfYmFzZS0+c3IsIDMyKTsKIH0KQEAgLTEyMyw2ICsxMjMsMTEgQEAKIAlyZXR1cm4gRE1BX0lOKGZzbF9jaGFuLCAmZnNsX2NoYW4tPnJlZ19iYXNlLT5uZGFyLCA2NCk7CiB9CiAKK3N0YXRpYyB1MzIgZ2V0X2JjcihzdHJ1Y3QgZnNsX2RtYV9jaGFuICpmc2xfY2hhbikKK3sKKwlyZXR1cm4gRE1BX0lOKGZzbF9jaGFuLCAmZnNsX2NoYW4tPnJlZ19iYXNlLT5iY3IsIDMyKTsKK30KKwogc3RhdGljIGludCBkbWFfaXNfaWRsZShzdHJ1Y3QgZnNsX2RtYV9jaGFuICpmc2xfY2hhbikKIHsKIAl1MzIgc3IgPSBnZXRfc3IoZnNsX2NoYW4pOwpAQCAtNDA2LDYgKzQxMSwzNSBAQAogCWRtYV9wb29sX2Rlc3Ryb3koZnNsX2NoYW4tPmRlc2NfcG9vbCk7CiB9CiAKK3N0YXRpYyBzdHJ1Y3QgZG1hX2FzeW5jX3R4X2Rlc2NyaXB0b3IgKgorZnNsX2RtYV9wcmVwX2ludGVycnVwdChzdHJ1Y3QgZG1hX2NoYW4gKmNoYW4pCit7CisJc3RydWN0IGZzbF9kbWFfY2hhbiAqZnNsX2NoYW47CisJc3RydWN0IGZzbF9kZXNjX3N3ICpuZXc7CisKKwlpZiAoIWNoYW4pCisJCXJldHVybiBOVUxMOworCisJZnNsX2NoYW4gPSB0b19mc2xfY2hhbihjaGFuKTsKKworCW5ldyA9IGZzbF9kbWFfYWxsb2NfZGVzY3JpcHRvcihmc2xfY2hhbik7CisJaWYgKCFuZXcpIHsKKwkJZGV2X2Vycihmc2xfY2hhbi0+ZGV2LCAiTm8gZnJlZSBtZW1vcnkgZm9yIGxpbmsgZGVzY3JpcHRvclxuIik7CisJCXJldHVybiBOVUxMOworCX0KKworCW5ldy0+YXN5bmNfdHguY29va2llID0gLUVCVVNZOworCW5ldy0+YXN5bmNfdHguYWNrID0gMDsKKworCS8qIEluc2VydCB0aGUgbGluayBkZXNjcmlwdG9yIHRvIHRoZSBMRCByaW5nICovCisJbGlzdF9hZGRfdGFpbCgmbmV3LT5ub2RlLCAmbmV3LT5hc3luY190eC50eF9saXN0KTsKKworCS8qIFNldCBFbmQtb2YtbGluayB0byB0aGUgbGFzdCBsaW5rIGRlc2NyaXB0b3Igb2YgbmV3IGxpc3QqLworCXNldF9sZF9lb2woZnNsX2NoYW4sIG5ldyk7CisKKwlyZXR1cm4gJm5ldy0+YXN5bmNfdHg7Cit9CisKIHN0YXRpYyBzdHJ1Y3QgZG1hX2FzeW5jX3R4X2Rlc2NyaXB0b3IgKmZzbF9kbWFfcHJlcF9tZW1jcHkoCiAJc3RydWN0IGRtYV9jaGFuICpjaGFuLCBkbWFfYWRkcl90IGRtYV9kZXN0LCBkbWFfYWRkcl90IGRtYV9zcmMsCiAJc2l6ZV90IGxlbiwgdW5zaWduZWQgbG9uZyBmbGFncykKQEAgLTQzNiw3ICs0NzAsNyBAQAogCQlkZXZfZGJnKGZzbF9jaGFuLT5kZXYsICJuZXcgbGluayBkZXNjIGFsbG9jICVwXG4iLCBuZXcpOwogI2VuZGlmCiAKLQkJY29weSA9IG1pbihsZW4sIEZTTF9ETUFfQkNSX01BWF9DTlQpOworCQljb3B5ID0gbWluKGxlbiwgKHNpemVfdClGU0xfRE1BX0JDUl9NQVhfQ05UKTsKIAogCQlzZXRfZGVzY19jbnQoZnNsX2NoYW4sICZuZXctPmh3LCBjb3B5KTsKIAkJc2V0X2Rlc2Nfc3JjKGZzbF9jaGFuLCAmbmV3LT5odywgZG1hX3NyYyk7CkBAIC01MTMsNyArNTQ3LDYgQEAKIAogCXNwaW5fbG9ja19pcnFzYXZlKCZmc2xfY2hhbi0+ZGVzY19sb2NrLCBmbGFncyk7CiAKLQlmc2xfZG1hX3VwZGF0ZV9jb21wbGV0ZWRfY29va2llKGZzbF9jaGFuKTsKIAlkZXZfZGJnKGZzbF9jaGFuLT5kZXYsICJjaGFuIGNvbXBsZXRlZF9jb29raWUgPSAlZFxuIiwKIAkJCWZzbF9jaGFuLT5jb21wbGV0ZWRfY29va2llKTsKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZGVzYywgX2Rlc2MsICZmc2xfY2hhbi0+bGRfcXVldWUsIG5vZGUpIHsKQEAgLTU4MSw4ICs2MTQsOCBAQAogCWlmIChsZF9ub2RlICE9ICZmc2xfY2hhbi0+bGRfcXVldWUpIHsKIAkJLyogR2V0IHRoZSBsZCBzdGFydCBhZGRyZXNzIGZyb20gbGRfcXVldWUgKi8KIAkJbmV4dF9kZXN0X2FkZHIgPSB0b19mc2xfZGVzYyhsZF9ub2RlKS0+YXN5bmNfdHgucGh5czsKLQkJZGV2X2RiZyhmc2xfY2hhbi0+ZGV2LCAieGZlciBMRHMgc3RhcmluZyBmcm9tIDB4JTAxNmxseFxuIiwKLQkJCQkodTY0KW5leHRfZGVzdF9hZGRyKTsKKwkJZGV2X2RiZyhmc2xfY2hhbi0+ZGV2LCAieGZlciBMRHMgc3RhcmluZyBmcm9tICVwXG4iLAorCQkJCSh2b2lkICopbmV4dF9kZXN0X2FkZHIpOwogCQlzZXRfY2Rhcihmc2xfY2hhbiwgbmV4dF9kZXN0X2FkZHIpOwogCQlkbWFfc3RhcnQoZnNsX2NoYW4pOwogCX0gZWxzZSB7CkBAIC02NjIsNyArNjk1LDcgQEAKIHN0YXRpYyBpcnFyZXR1cm5fdCBmc2xfZG1hX2NoYW5fZG9faW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmRhdGEpCiB7CiAJc3RydWN0IGZzbF9kbWFfY2hhbiAqZnNsX2NoYW4gPSAoc3RydWN0IGZzbF9kbWFfY2hhbiAqKWRhdGE7Ci0JZG1hX2FkZHJfdCBzdGF0OworCXUzMiBzdGF0OwogCiAJc3RhdCA9IGdldF9zcihmc2xfY2hhbik7CiAJZGV2X2RiZyhmc2xfY2hhbi0+ZGV2LCAiZXZlbnQ6IGNoYW5uZWwgJWQsIHN0YXQgPSAweCV4XG4iLApAQCAtNjc2LDE1ICs3MDksMzIgQEAKIAlpZiAoc3RhdCAmIEZTTF9ETUFfU1JfVEUpCiAJCWRldl9lcnIoZnNsX2NoYW4tPmRldiwgIlRyYW5zZmVyIEVycm9yIVxuIik7CiAKKwkvKiBQcm9ncmFtbWluZyBFcnJvcgorCSAqIFRoZSBETUFfSU5URVJSVVBUIGFzeW5jX3R4IGlzIGEgTlVMTCB0cmFuc2Zlciwgd2hpY2ggd2lsbAorCSAqIHRyaWdlciBhIFBFIGludGVycnVwdC4KKwkgKi8KKwlpZiAoc3RhdCAmIEZTTF9ETUFfU1JfUEUpIHsKKwkJZGV2X2RiZyhmc2xfY2hhbi0+ZGV2LCAiZXZlbnQ6IFByb2dyYW1taW5nIEVycm9yIElOVFxuIik7CisJCWlmIChnZXRfYmNyKGZzbF9jaGFuKSA9PSAwKSB7CisJCQkvKiBCQ1IgcmVnaXN0ZXIgaXMgMCwgdGhpcyBpcyBhIERNQV9JTlRFUlJVUFQgYXN5bmNfdHguCisJCQkgKiBOb3csIHVwZGF0ZSB0aGUgY29tcGxldGVkIGNvb2tpZSwgYW5kIGNvbnRpbnVlIHRoZQorCQkJICogbmV4dCB1bmNvbXBsZXRlZCB0cmFuc2Zlci4KKwkJCSAqLworCQkJZnNsX2RtYV91cGRhdGVfY29tcGxldGVkX2Nvb2tpZShmc2xfY2hhbik7CisJCQlmc2xfY2hhbl94ZmVyX2xkX3F1ZXVlKGZzbF9jaGFuKTsKKwkJfQorCQlzdGF0ICY9IH5GU0xfRE1BX1NSX1BFOworCX0KKwogCS8qIElmIHRoZSBsaW5rIGRlc2NyaXB0b3Igc2VnbWVudCB0cmFuc2ZlciBmaW5pc2hlcywKIAkgKiB3ZSB3aWxsIHJlY3ljbGUgdGhlIHVzZWQgZGVzY3JpcHRvci4KIAkgKi8KIAlpZiAoc3RhdCAmIEZTTF9ETUFfU1JfRU9TSSkgewogCQlkZXZfZGJnKGZzbF9jaGFuLT5kZXYsICJldmVudDogRW5kLW9mLXNlZ21lbnRzIElOVFxuIik7Ci0JCWRldl9kYmcoZnNsX2NoYW4tPmRldiwgImV2ZW50OiBjbG5kYXIgMHglMDE2bGx4LCAiCi0JCQkJIm5sbmRhciAweCUwMTZsbHhcbiIsICh1NjQpZ2V0X2NkYXIoZnNsX2NoYW4pLAotCQkJCSh1NjQpZ2V0X25kYXIoZnNsX2NoYW4pKTsKKwkJZGV2X2RiZyhmc2xfY2hhbi0+ZGV2LCAiZXZlbnQ6IGNsbmRhciAlcCwgbmxuZGFyICVwXG4iLAorCQkJKHZvaWQgKilnZXRfY2Rhcihmc2xfY2hhbiksICh2b2lkICopZ2V0X25kYXIoZnNsX2NoYW4pKTsKIAkJc3RhdCAmPSB+RlNMX0RNQV9TUl9FT1NJOworCQlmc2xfZG1hX3VwZGF0ZV9jb21wbGV0ZWRfY29va2llKGZzbF9jaGFuKTsKIAl9CiAKIAkvKiBJZiBpdCBjdXJyZW50IHRyYW5zZmVyIGlzIHRoZSBlbmQtb2YtdHJhbnNmZXIsCkBAIC03MjYsMTIgKzc3NiwxNSBAQAogCWZzbF9jaGFuX2xkX2NsZWFudXAoZnNsX2NoYW4pOwogfQogCisjaWZkZWYgRlNMX0RNQV9DQUxMQkFDS1RFU1QKIHN0YXRpYyB2b2lkIGZzbF9kbWFfY2FsbGJhY2tfdGVzdChzdHJ1Y3QgZnNsX2RtYV9jaGFuICpmc2xfY2hhbikKIHsKIAlpZiAoZnNsX2NoYW4pCiAJCWRldl9pbmZvKGZzbF9jaGFuLT5kZXYsICJzZWxmdGVzdDogY2FsbGJhY2sgaXMgb2shXG4iKTsKIH0KKyNlbmRpZgogCisjaWZkZWYgQ09ORklHX0ZTTF9ETUFfU0VMRlRFU1QKIHN0YXRpYyBpbnQgZnNsX2RtYV9zZWxmX3Rlc3Qoc3RydWN0IGZzbF9kbWFfY2hhbiAqZnNsX2NoYW4pCiB7CiAJc3RydWN0IGRtYV9jaGFuICpjaGFuOwpAQCAtODEzLDYgKzg2NiwxMSBAQAogCXR4MyA9IGZzbF9kbWFfcHJlcF9tZW1jcHkoY2hhbiwgZG1hX2Rlc3QsIGRtYV9zcmMsIHRlc3Rfc2l6ZSAvIDQsIDApOwogCWFzeW5jX3R4X2Fjayh0eDMpOwogCisJLyogSW50ZXJydXB0IHR4IHRlc3QgKi8KKwl0eDEgPSBmc2xfZG1hX3ByZXBfaW50ZXJydXB0KGNoYW4pOworCWFzeW5jX3R4X2Fjayh0eDEpOworCWNvb2tpZSA9IGZzbF9kbWFfdHhfc3VibWl0KHR4MSk7CisKIAkvKiBUZXN0IGV4Y2hhbmdpbmcgdGhlIHByZXBhcmVkIHR4IHNvcnQgKi8KIAljb29raWUgPSBmc2xfZG1hX3R4X3N1Ym1pdCh0eDMpOwogCWNvb2tpZSA9IGZzbF9kbWFfdHhfc3VibWl0KHR4Mik7CkBAIC04MzcsOSArODk1LDkgQEAKIAlpZiAoZXJyKSB7CiAJCWZvciAoaSA9IDA7ICgqKHNyYyArIGkpID09ICooZGVzdCArIGkpKSAmJiAoaSA8IHRlc3Rfc2l6ZSk7CiAJCQkJaSsrKTsKLQkJZGV2X2Vycihmc2xfY2hhbi0+ZGV2LCAic2VsZnRlc3Q6IFRlc3QgZmFpbGVkLCBkYXRhICVkLyVkIGlzICIKKwkJZGV2X2Vycihmc2xfY2hhbi0+ZGV2LCAic2VsZnRlc3Q6IFRlc3QgZmFpbGVkLCBkYXRhICVkLyVsZCBpcyAiCiAJCQkJImVycm9yISBzcmMgMHgleCwgZGVzdCAweCV4XG4iLAotCQkJCWksIHRlc3Rfc2l6ZSwgKihzcmMgKyBpKSwgKihkZXN0ICsgaSkpOworCQkJCWksIChsb25nKXRlc3Rfc2l6ZSwgKihzcmMgKyBpKSwgKihkZXN0ICsgaSkpOwogCX0KIAogZnJlZV9yZXNvdXJjZXM6CkBAIC04NDgsNiArOTA2LDcgQEAKIAlrZnJlZShzcmMpOwogCXJldHVybiBlcnI7CiB9CisjZW5kaWYKIAogc3RhdGljIGludCBfX2RldmluaXQgb2ZfZnNsX2RtYV9jaGFuX3Byb2JlKHN0cnVjdCBvZl9kZXZpY2UgKmRldiwKIAkJCWNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgKm1hdGNoKQpAQCAtOTYyLDExICsxMDIxLDExIEBACiAKIHN0YXRpYyBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG9mX2ZzbF9kbWFfY2hhbl9pZHNbXSA9IHsKIAl7Ci0JCS5jb21wYXRpYmxlID0gImZzbCxtcGM4NTQwLWRtYS1jaGFubmVsIiwKKwkJLmNvbXBhdGlibGUgPSAiZnNsLGVsb3BsdXMtZG1hLWNoYW5uZWwiLAogCQkuZGF0YSA9ICh2b2lkICopJm1wYzg1NDBfZG1hX2lwX2ZlYXR1cmUsCiAJfSwKIAl7Ci0JCS5jb21wYXRpYmxlID0gImZzbCxtcGM4MzQ5LWRtYS1jaGFubmVsIiwKKwkJLmNvbXBhdGlibGUgPSAiZnNsLGVsby1kbWEtY2hhbm5lbCIsCiAJCS5kYXRhID0gKHZvaWQgKikmbXBjODM0OV9kbWFfaXBfZmVhdHVyZSwKIAl9LAogCXt9CkBAIC0xMDA4LDggKzEwNjcsOCBAQAogCX0KIAogCWRldl9pbmZvKCZkZXYtPmRldiwgIlByb2JlIHRoZSBGcmVlc2NhbGUgRE1BIGRyaXZlciBmb3IgJXMgIgotCQkJImNvbnRyb2xsZXIgYXQgMHglMDh4Li4uXG4iLAotCQkJbWF0Y2gtPmNvbXBhdGlibGUsIGZkZXYtPnJlZy5zdGFydCk7CisJCQkiY29udHJvbGxlciBhdCAlcC4uLlxuIiwKKwkJCW1hdGNoLT5jb21wYXRpYmxlLCAodm9pZCAqKWZkZXYtPnJlZy5zdGFydCk7CiAJZmRldi0+cmVnX2Jhc2UgPSBpb3JlbWFwKGZkZXYtPnJlZy5zdGFydCwgZmRldi0+cmVnLmVuZAogCQkJCQkJLSBmZGV2LT5yZWcuc3RhcnQgKyAxKTsKIApAQCAtMTAxNyw2ICsxMDc2LDcgQEAKIAlkbWFfY2FwX3NldChETUFfSU5URVJSVVBULCBmZGV2LT5jb21tb24uY2FwX21hc2spOwogCWZkZXYtPmNvbW1vbi5kZXZpY2VfYWxsb2NfY2hhbl9yZXNvdXJjZXMgPSBmc2xfZG1hX2FsbG9jX2NoYW5fcmVzb3VyY2VzOwogCWZkZXYtPmNvbW1vbi5kZXZpY2VfZnJlZV9jaGFuX3Jlc291cmNlcyA9IGZzbF9kbWFfZnJlZV9jaGFuX3Jlc291cmNlczsKKwlmZGV2LT5jb21tb24uZGV2aWNlX3ByZXBfZG1hX2ludGVycnVwdCA9IGZzbF9kbWFfcHJlcF9pbnRlcnJ1cHQ7CiAJZmRldi0+Y29tbW9uLmRldmljZV9wcmVwX2RtYV9tZW1jcHkgPSBmc2xfZG1hX3ByZXBfbWVtY3B5OwogCWZkZXYtPmNvbW1vbi5kZXZpY2VfaXNfdHhfY29tcGxldGUgPSBmc2xfZG1hX2lzX2NvbXBsZXRlOwogCWZkZXYtPmNvbW1vbi5kZXZpY2VfaXNzdWVfcGVuZGluZyA9IGZzbF9kbWFfbWVtY3B5X2lzc3VlX3BlbmRpbmc7CkBAIC0xMDQ3LDggKzExMDcsOCBAQAogfQogCiBzdGF0aWMgc3RydWN0IG9mX2RldmljZV9pZCBvZl9mc2xfZG1hX2lkc1tdID0gewotCXsgLmNvbXBhdGlibGUgPSAiZnNsLG1wYzg1NDAtZG1hIiwgfSwKLQl7IC5jb21wYXRpYmxlID0gImZzbCxtcGM4MzQ5LWRtYSIsIH0sCisJeyAuY29tcGF0aWJsZSA9ICJmc2wsZWxvcGx1cy1kbWEiLCB9LAorCXsgLmNvbXBhdGlibGUgPSAiZnNsLGVsby1kbWEiLCB9LAogCXt9CiB9OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS9mc2xkbWEuaCBiL2RyaXZlcnMvZG1hL2ZzbGRtYS5oCmluZGV4IGJhNzhjNDIuLjZmYWYwN2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZG1hL2ZzbGRtYS5oCisrKyBiL2RyaXZlcnMvZG1hL2ZzbGRtYS5oCkBAIC00MCw2ICs0MCw3IEBACiAjZGVmaW5lIEZTTF9ETUFfTVJfRU9USUUJMHgwMDAwMDA4MAogCiAjZGVmaW5lIEZTTF9ETUFfU1JfQ0gJCTB4MDAwMDAwMjAKKyNkZWZpbmUgRlNMX0RNQV9TUl9QRQkJMHgwMDAwMDAxMAogI2RlZmluZSBGU0xfRE1BX1NSX0NCCQkweDAwMDAwMDA0CiAjZGVmaW5lIEZTTF9ETUFfU1JfVEUJCTB4MDAwMDAwODAKICNkZWZpbmUgRlNMX0RNQV9TUl9FT1NJCQkweDAwMDAwMDAyCkBAIC03NCwxMiArNzUsMTUgQEAKICNkZWZpbmUgRlNMX0RNQV9ER1NSX0VPU0kJMHgwMgogI2RlZmluZSBGU0xfRE1BX0RHU1JfRU9MU0kJMHgwMQogCit0eXBlZGVmIHU2NCBfX2JpdHdpc2UgdjY0OwordHlwZWRlZiB1MzIgX19iaXR3aXNlIHYzMjsKKwogc3RydWN0IGZzbF9kbWFfbGRfaHcgewotCXU2NCBfX2JpdHdpc2UJc3JjX2FkZHI7Ci0JdTY0IF9fYml0d2lzZQlkc3RfYWRkcjsKLQl1NjQgX19iaXR3aXNlCW5leHRfbG5fYWRkcjsKLQl1MzIgX19iaXR3aXNlCWNvdW50OwotCXUzMiBfX2JpdHdpc2UJcmVzZXJ2ZTsKKwl2NjQgc3JjX2FkZHI7CisJdjY0IGRzdF9hZGRyOworCXY2NCBuZXh0X2xuX2FkZHI7CisJdjMyIGNvdW50OworCXYzMiByZXNlcnZlOwogfSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDMyKSkpOwogCiBzdHJ1Y3QgZnNsX2Rlc2Nfc3cgewpAQCAtOTEsMTMgKzk1LDEzIEBACiB9IF9fYXR0cmlidXRlX18oKGFsaWduZWQoMzIpKSk7CiAKIHN0cnVjdCBmc2xfZG1hX2NoYW5fcmVncyB7Ci0JdTMyIF9fYml0d2lzZQltcjsJLyogMHgwMCAtIE1vZGUgUmVnaXN0ZXIgKi8KLQl1MzIgX19iaXR3aXNlCXNyOwkvKiAweDA0IC0gU3RhdHVzIFJlZ2lzdGVyICovCi0JdTY0IF9fYml0d2lzZQljZGFyOwkvKiAweDA4IC0gQ3VycmVudCBkZXNjcmlwdG9yIGFkZHJlc3MgcmVnaXN0ZXIgKi8KLQl1NjQgX19iaXR3aXNlCXNhcjsJLyogMHgxMCAtIFNvdXJjZSBBZGRyZXNzIFJlZ2lzdGVyICovCi0JdTY0IF9fYml0d2lzZQlkYXI7CS8qIDB4MTggLSBEZXN0aW5hdGlvbiBBZGRyZXNzIFJlZ2lzdGVyICovCi0JdTMyIF9fYml0d2lzZQliY3I7CS8qIDB4MjAgLSBCeXRlIENvdW50IFJlZ2lzdGVyICovCi0JdTY0IF9fYml0d2lzZQluZGFyOwkvKiAweDI0IC0gTmV4dCBEZXNjcmlwdG9yIEFkZHJlc3MgUmVnaXN0ZXIgKi8KKwl1MzIgbXI7CS8qIDB4MDAgLSBNb2RlIFJlZ2lzdGVyICovCisJdTMyIHNyOwkvKiAweDA0IC0gU3RhdHVzIFJlZ2lzdGVyICovCisJdTY0IGNkYXI7CS8qIDB4MDggLSBDdXJyZW50IGRlc2NyaXB0b3IgYWRkcmVzcyByZWdpc3RlciAqLworCXU2NCBzYXI7CS8qIDB4MTAgLSBTb3VyY2UgQWRkcmVzcyBSZWdpc3RlciAqLworCXU2NCBkYXI7CS8qIDB4MTggLSBEZXN0aW5hdGlvbiBBZGRyZXNzIFJlZ2lzdGVyICovCisJdTMyIGJjcjsJLyogMHgyMCAtIEJ5dGUgQ291bnQgUmVnaXN0ZXIgKi8KKwl1NjQgbmRhcjsJLyogMHgyNCAtIE5leHQgRGVzY3JpcHRvciBBZGRyZXNzIFJlZ2lzdGVyICovCiB9OwogCiBzdHJ1Y3QgZnNsX2RtYV9jaGFuOwpAQCAtMTUwLDI1ICsxNTQsMjcgQEAKICNpZm5kZWYgX19wb3dlcnBjNjRfXwogc3RhdGljIHU2NCBpbl9iZTY0KGNvbnN0IHU2NCBfX2lvbWVtICphZGRyKQogewotCXJldHVybiAoKHU2NClpbl9iZTMyKCh1MzIgKilhZGRyKSA8PCAzMikgfCAoaW5fYmUzMigodTMyICopYWRkciArIDEpKTsKKwlyZXR1cm4gKCh1NjQpaW5fYmUzMigodTMyIF9faW9tZW0gKilhZGRyKSA8PCAzMikgfAorCQkoaW5fYmUzMigodTMyIF9faW9tZW0gKilhZGRyICsgMSkpOwogfQogCiBzdGF0aWMgdm9pZCBvdXRfYmU2NCh1NjQgX19pb21lbSAqYWRkciwgdTY0IHZhbCkKIHsKLQlvdXRfYmUzMigodTMyICopYWRkciwgdmFsID4+IDMyKTsKLQlvdXRfYmUzMigodTMyICopYWRkciArIDEsICh1MzIpdmFsKTsKKwlvdXRfYmUzMigodTMyIF9faW9tZW0gKilhZGRyLCB2YWwgPj4gMzIpOworCW91dF9iZTMyKCh1MzIgX19pb21lbSAqKWFkZHIgKyAxLCAodTMyKXZhbCk7CiB9CiAKIC8qIFRoZXJlIGlzIG5vIGFzbSBpbnN0cnVjdGlvbnMgZm9yIDY0IGJpdHMgcmV2ZXJzZSBsb2FkcyBhbmQgc3RvcmVzICovCiBzdGF0aWMgdTY0IGluX2xlNjQoY29uc3QgdTY0IF9faW9tZW0gKmFkZHIpCiB7Ci0JcmV0dXJuICgodTY0KWluX2xlMzIoKHUzMiAqKWFkZHIgKyAxKSA8PCAzMikgfCAoaW5fbGUzMigodTMyICopYWRkcikpOworCXJldHVybiAoKHU2NClpbl9sZTMyKCh1MzIgX19pb21lbSAqKWFkZHIgKyAxKSA8PCAzMikgfAorCQkoaW5fbGUzMigodTMyIF9faW9tZW0gKilhZGRyKSk7CiB9CiAKIHN0YXRpYyB2b2lkIG91dF9sZTY0KHU2NCBfX2lvbWVtICphZGRyLCB1NjQgdmFsKQogewotCW91dF9sZTMyKCh1MzIgKilhZGRyICsgMSwgdmFsID4+IDMyKTsKLQlvdXRfbGUzMigodTMyICopYWRkciwgKHUzMil2YWwpOworCW91dF9sZTMyKCh1MzIgX19pb21lbSAqKWFkZHIgKyAxLCB2YWwgPj4gMzIpOworCW91dF9sZTMyKCh1MzIgX19pb21lbSAqKWFkZHIsICh1MzIpdmFsKTsKIH0KICNlbmRpZgogCkBAIC0xODEsOSArMTg3LDExIEBACiAKICNkZWZpbmUgRE1BX1RPX0NQVShmc2xfY2hhbiwgZCwgd2lkdGgpCQkJCQlcCiAJCSgoKGZzbF9jaGFuKS0+ZmVhdHVyZSAmIEZTTF9ETUFfQklHX0VORElBTikgPwkJXAotCQkJYmUjI3dpZHRoIyNfdG9fY3B1KGQpIDoJbGUjI3dpZHRoIyNfdG9fY3B1KGQpKQorCQkJYmUjI3dpZHRoIyNfdG9fY3B1KChfX2ZvcmNlIF9fYmUjI3dpZHRoKSh2IyN3aWR0aClkKSA6IFwKKwkJCWxlIyN3aWR0aCMjX3RvX2NwdSgoX19mb3JjZSBfX2xlIyN3aWR0aCkodiMjd2lkdGgpZCkpCiAjZGVmaW5lIENQVV9UT19ETUEoZnNsX2NoYW4sIGMsIHdpZHRoKQkJCQkJXAogCQkoKChmc2xfY2hhbiktPmZlYXR1cmUgJiBGU0xfRE1BX0JJR19FTkRJQU4pID8JCVwKLQkJCWNwdV90b19iZSMjd2lkdGgoYykgOiBjcHVfdG9fbGUjI3dpZHRoKGMpKQorCQkJKF9fZm9yY2UgdiMjd2lkdGgpY3B1X3RvX2JlIyN3aWR0aChjKSA6CQlcCisJCQkoX19mb3JjZSB2IyN3aWR0aCljcHVfdG9fbGUjI3dpZHRoKGMpKQogCiAjZW5kaWYJLyogX19ETUFfRlNMRE1BX0ggKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hL2lvYXRfZGNhLmMgYi9kcml2ZXJzL2RtYS9pb2F0X2RjYS5jCmluZGV4IDBmYThhOTguLjllOTIyNzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZG1hL2lvYXRfZGNhLmMKKysrIGIvZHJpdmVycy9kbWEvaW9hdF9kY2EuYwpAQCAtOTgsNyArOTgsNyBAQAogCiBzdHJ1Y3QgaW9hdF9kY2FfcHJpdiB7CiAJdm9pZCBfX2lvbWVtCQkqaW9iYXNlOwotCXZvaWQJCQkqZGNhX2Jhc2U7CisJdm9pZCBfX2lvbWVtCQkqZGNhX2Jhc2U7CiAJaW50CQkJIG1heF9yZXF1ZXN0ZXJzOwogCWludAkJCSByZXF1ZXN0ZXJfY291bnQ7CiAJdTgJCQkgdGFnX21hcFtJT0FUX1RBR19NQVBfTEVOXTsKQEAgLTMzOCw3ICszMzgsNyBAQAogCS5nZXRfdGFnCQk9IGlvYXQyX2RjYV9nZXRfdGFnLAogfTsKIAotc3RhdGljIGludCBpb2F0Ml9kY2FfY291bnRfZGNhX3Nsb3RzKHZvaWQgKmlvYmFzZSwgdTE2IGRjYV9vZmZzZXQpCitzdGF0aWMgaW50IGlvYXQyX2RjYV9jb3VudF9kY2Ffc2xvdHModm9pZCBfX2lvbWVtICppb2Jhc2UsIHUxNiBkY2Ffb2Zmc2V0KQogewogCWludCBzbG90cyA9IDA7CiAJdTMyIHJlcTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hL2lvcC1hZG1hLmMgYi9kcml2ZXJzL2RtYS9pb3AtYWRtYS5jCmluZGV4IDM5ODZkNTQuLmY4MmIwOTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZG1hL2lvcC1hZG1hLmMKKysrIGIvZHJpdmVycy9kbWEvaW9wLWFkbWEuYwpAQCAtMTQwLDcgKzE0MCw3IEBACiAJaW50IGJ1c3kgPSBpb3BfY2hhbl9pc19idXN5KGlvcF9jaGFuKTsKIAlpbnQgc2Vlbl9jdXJyZW50ID0gMCwgc2xvdF9jbnQgPSAwLCBzbG90c19wZXJfb3AgPSAwOwogCi0JZGV2X2RiZyhpb3BfY2hhbi0+ZGV2aWNlLT5jb21tb24uZGV2LCAiJXNcbiIsIF9fRlVOQ1RJT05fXyk7CisJZGV2X2RiZyhpb3BfY2hhbi0+ZGV2aWNlLT5jb21tb24uZGV2LCAiJXNcbiIsIF9fZnVuY19fKTsKIAkvKiBmcmVlIGNvbXBsZXRlZCBzbG90cyBmcm9tIHRoZSBjaGFpbiBzdGFydGluZyB3aXRoCiAJICogdGhlIG9sZGVzdCBkZXNjcmlwdG9yCiAJICovCkBAIC00MzgsNyArNDM4LDcgQEAKIAlzcGluX3VubG9ja19iaCgmaW9wX2NoYW4tPmxvY2spOwogCiAJZGV2X2RiZyhpb3BfY2hhbi0+ZGV2aWNlLT5jb21tb24uZGV2LCAiJXMgY29va2llOiAlZCBzbG90OiAlZFxuIiwKLQkJX19GVU5DVElPTl9fLCBzd19kZXNjLT5hc3luY190eC5jb29raWUsIHN3X2Rlc2MtPmlkeCk7CisJCV9fZnVuY19fLCBzd19kZXNjLT5hc3luY190eC5jb29raWUsIHN3X2Rlc2MtPmlkeCk7CiAKIAlyZXR1cm4gY29va2llOwogfQpAQCAtNTIwLDcgKzUyMCw3IEBACiAJc3RydWN0IGlvcF9hZG1hX2Rlc2Nfc2xvdCAqc3dfZGVzYywgKmdycF9zdGFydDsKIAlpbnQgc2xvdF9jbnQsIHNsb3RzX3Blcl9vcDsKIAotCWRldl9kYmcoaW9wX2NoYW4tPmRldmljZS0+Y29tbW9uLmRldiwgIiVzXG4iLCBfX0ZVTkNUSU9OX18pOworCWRldl9kYmcoaW9wX2NoYW4tPmRldmljZS0+Y29tbW9uLmRldiwgIiVzXG4iLCBfX2Z1bmNfXyk7CiAKIAlzcGluX2xvY2tfYmgoJmlvcF9jaGFuLT5sb2NrKTsKIAlzbG90X2NudCA9IGlvcF9jaGFuX2ludGVycnVwdF9zbG90X2NvdW50KCZzbG90c19wZXJfb3AsIGlvcF9jaGFuKTsKQEAgLTU0OCw3ICs1NDgsNyBAQAogCUJVR19PTih1bmxpa2VseShsZW4gPiBJT1BfQURNQV9NQVhfQllURV9DT1VOVCkpOwogCiAJZGV2X2RiZyhpb3BfY2hhbi0+ZGV2aWNlLT5jb21tb24uZGV2LCAiJXMgbGVuOiAldVxuIiwKLQkJX19GVU5DVElPTl9fLCBsZW4pOworCQlfX2Z1bmNfXywgbGVuKTsKIAogCXNwaW5fbG9ja19iaCgmaW9wX2NoYW4tPmxvY2spOwogCXNsb3RfY250ID0gaW9wX2NoYW5fbWVtY3B5X3Nsb3RfY291bnQobGVuLCAmc2xvdHNfcGVyX29wKTsKQEAgLTU4MCw3ICs1ODAsNyBAQAogCUJVR19PTih1bmxpa2VseShsZW4gPiBJT1BfQURNQV9NQVhfQllURV9DT1VOVCkpOwogCiAJZGV2X2RiZyhpb3BfY2hhbi0+ZGV2aWNlLT5jb21tb24uZGV2LCAiJXMgbGVuOiAldVxuIiwKLQkJX19GVU5DVElPTl9fLCBsZW4pOworCQlfX2Z1bmNfXywgbGVuKTsKIAogCXNwaW5fbG9ja19iaCgmaW9wX2NoYW4tPmxvY2spOwogCXNsb3RfY250ID0gaW9wX2NoYW5fbWVtc2V0X3Nsb3RfY291bnQobGVuLCAmc2xvdHNfcGVyX29wKTsKQEAgLTYxNCw3ICs2MTQsNyBAQAogCiAJZGV2X2RiZyhpb3BfY2hhbi0+ZGV2aWNlLT5jb21tb24uZGV2LAogCQkiJXMgc3JjX2NudDogJWQgbGVuOiAldSBmbGFnczogJWx4XG4iLAotCQlfX0ZVTkNUSU9OX18sIHNyY19jbnQsIGxlbiwgZmxhZ3MpOworCQlfX2Z1bmNfXywgc3JjX2NudCwgbGVuLCBmbGFncyk7CiAKIAlzcGluX2xvY2tfYmgoJmlvcF9jaGFuLT5sb2NrKTsKIAlzbG90X2NudCA9IGlvcF9jaGFuX3hvcl9zbG90X2NvdW50KGxlbiwgc3JjX2NudCwgJnNsb3RzX3Blcl9vcCk7CkBAIC02NDgsNyArNjQ4LDcgQEAKIAkJcmV0dXJuIE5VTEw7CiAKIAlkZXZfZGJnKGlvcF9jaGFuLT5kZXZpY2UtPmNvbW1vbi5kZXYsICIlcyBzcmNfY250OiAlZCBsZW46ICV1XG4iLAotCQlfX0ZVTkNUSU9OX18sIHNyY19jbnQsIGxlbik7CisJCV9fZnVuY19fLCBzcmNfY250LCBsZW4pOwogCiAJc3Bpbl9sb2NrX2JoKCZpb3BfY2hhbi0+bG9jayk7CiAJc2xvdF9jbnQgPSBpb3BfY2hhbl96ZXJvX3N1bV9zbG90X2NvdW50KGxlbiwgc3JjX2NudCwgJnNsb3RzX3Blcl9vcCk7CkBAIC02NTksNyArNjU5LDcgQEAKIAkJaW9wX2Rlc2Nfc2V0X3plcm9fc3VtX2J5dGVfY291bnQoZ3JwX3N0YXJ0LCBsZW4pOwogCQlncnBfc3RhcnQtPnhvcl9jaGVja19yZXN1bHQgPSByZXN1bHQ7CiAJCXByX2RlYnVnKCJcdCVzOiBncnBfc3RhcnQtPnhvcl9jaGVja19yZXN1bHQ6ICVwXG4iLAotCQkJX19GVU5DVElPTl9fLCBncnBfc3RhcnQtPnhvcl9jaGVja19yZXN1bHQpOworCQkJX19mdW5jX18sIGdycF9zdGFydC0+eG9yX2NoZWNrX3Jlc3VsdCk7CiAJCXN3X2Rlc2MtPnVubWFwX3NyY19jbnQgPSBzcmNfY250OwogCQlzd19kZXNjLT51bm1hcF9sZW4gPSBsZW47CiAJCXdoaWxlIChzcmNfY250LS0pCkBAIC03MDAsNyArNzAwLDcgQEAKIAlpb3BfY2hhbi0+bGFzdF91c2VkID0gTlVMTDsKIAogCWRldl9kYmcoaW9wX2NoYW4tPmRldmljZS0+Y29tbW9uLmRldiwgIiVzIHNsb3RzX2FsbG9jYXRlZCAlZFxuIiwKLQkJX19GVU5DVElPTl9fLCBpb3BfY2hhbi0+c2xvdHNfYWxsb2NhdGVkKTsKKwkJX19mdW5jX18sIGlvcF9jaGFuLT5zbG90c19hbGxvY2F0ZWQpOwogCXNwaW5fdW5sb2NrX2JoKCZpb3BfY2hhbi0+bG9jayk7CiAKIAkvKiBvbmUgaXMgb2sgc2luY2Ugd2UgbGVmdCBpdCBvbiB0aGVyZSBvbiBwdXJwb3NlICovCkBAIC03NTMsNyArNzUzLDcgQEAKIHsKIAlzdHJ1Y3QgaW9wX2FkbWFfY2hhbiAqY2hhbiA9IGRhdGE7CiAKLQlkZXZfZGJnKGNoYW4tPmRldmljZS0+Y29tbW9uLmRldiwgIiVzXG4iLCBfX0ZVTkNUSU9OX18pOworCWRldl9kYmcoY2hhbi0+ZGV2aWNlLT5jb21tb24uZGV2LCAiJXNcbiIsIF9fZnVuY19fKTsKIAogCXRhc2tsZXRfc2NoZWR1bGUoJmNoYW4tPmlycV90YXNrbGV0KTsKIApAQCAtNzY2LDcgKzc2Niw3IEBACiB7CiAJc3RydWN0IGlvcF9hZG1hX2NoYW4gKmNoYW4gPSBkYXRhOwogCi0JZGV2X2RiZyhjaGFuLT5kZXZpY2UtPmNvbW1vbi5kZXYsICIlc1xuIiwgX19GVU5DVElPTl9fKTsKKwlkZXZfZGJnKGNoYW4tPmRldmljZS0+Y29tbW9uLmRldiwgIiVzXG4iLCBfX2Z1bmNfXyk7CiAKIAl0YXNrbGV0X3NjaGVkdWxlKCZjaGFuLT5pcnFfdGFza2xldCk7CiAKQEAgLTgyMyw3ICs4MjMsNyBAQAogCWludCBlcnIgPSAwOwogCXN0cnVjdCBpb3BfYWRtYV9jaGFuICppb3BfY2hhbjsKIAotCWRldl9kYmcoZGV2aWNlLT5jb21tb24uZGV2LCAiJXNcbiIsIF9fRlVOQ1RJT05fXyk7CisJZGV2X2RiZyhkZXZpY2UtPmNvbW1vbi5kZXYsICIlc1xuIiwgX19mdW5jX18pOwogCiAJc3JjID0ga3phbGxvYyhzaXplb2YodTgpICogSU9QX0FETUFfVEVTVF9TSVpFLCBHRlBfS0VSTkVMKTsKIAlpZiAoIXNyYykKQEAgLTkwNiw3ICs5MDYsNyBAQAogCWludCBlcnIgPSAwOwogCXN0cnVjdCBpb3BfYWRtYV9jaGFuICppb3BfY2hhbjsKIAotCWRldl9kYmcoZGV2aWNlLT5jb21tb24uZGV2LCAiJXNcbiIsIF9fRlVOQ1RJT05fXyk7CisJZGV2X2RiZyhkZXZpY2UtPmNvbW1vbi5kZXYsICIlc1xuIiwgX19mdW5jX18pOwogCiAJZm9yIChzcmNfaWR4ID0gMDsgc3JjX2lkeCA8IElPUF9BRE1BX05VTV9TUkNfVEVTVDsgc3JjX2lkeCsrKSB7CiAJCXhvcl9zcmNzW3NyY19pZHhdID0gYWxsb2NfcGFnZShHRlBfS0VSTkVMKTsKQEAgLTExNTksNyArMTE1OSw3IEBACiAJfQogCiAJZGV2X2RiZygmcGRldi0+ZGV2LCAiJXM6IGFsbG9jdGVkIGRlc2NyaXB0b3IgcG9vbCB2aXJ0ICVwIHBoeXMgJXBcbiIsCi0JCV9fRlVOQ1RJT05fXywgYWRldi0+ZG1hX2Rlc2NfcG9vbF92aXJ0LAorCQlfX2Z1bmNfXywgYWRldi0+ZG1hX2Rlc2NfcG9vbF92aXJ0LAogCQkodm9pZCAqKSBhZGV2LT5kbWFfZGVzY19wb29sKTsKIAogCWFkZXYtPmlkID0gcGxhdF9kYXRhLT5od19pZDsKQEAgLTEyODksNyArMTI4OSw3IEBACiAJZG1hX2Nvb2tpZV90IGNvb2tpZTsKIAlpbnQgc2xvdF9jbnQsIHNsb3RzX3Blcl9vcDsKIAotCWRldl9kYmcoaW9wX2NoYW4tPmRldmljZS0+Y29tbW9uLmRldiwgIiVzXG4iLCBfX0ZVTkNUSU9OX18pOworCWRldl9kYmcoaW9wX2NoYW4tPmRldmljZS0+Y29tbW9uLmRldiwgIiVzXG4iLCBfX2Z1bmNfXyk7CiAKIAlzcGluX2xvY2tfYmgoJmlvcF9jaGFuLT5sb2NrKTsKIAlzbG90X2NudCA9IGlvcF9jaGFuX21lbWNweV9zbG90X2NvdW50KDAsICZzbG90c19wZXJfb3ApOwpAQCAtMTM0Niw3ICsxMzQ2LDcgQEAKIAlkbWFfY29va2llX3QgY29va2llOwogCWludCBzbG90X2NudCwgc2xvdHNfcGVyX29wOwogCi0JZGV2X2RiZyhpb3BfY2hhbi0+ZGV2aWNlLT5jb21tb24uZGV2LCAiJXNcbiIsIF9fRlVOQ1RJT05fXyk7CisJZGV2X2RiZyhpb3BfY2hhbi0+ZGV2aWNlLT5jb21tb24uZGV2LCAiJXNcbiIsIF9fZnVuY19fKTsKIAogCXNwaW5fbG9ja19iaCgmaW9wX2NoYW4tPmxvY2spOwogCXNsb3RfY250ID0gaW9wX2NoYW5feG9yX3Nsb3RfY291bnQoMCwgMiwgJnNsb3RzX3Blcl9vcCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2ZpcmV3aXJlL0tjb25maWcgYi9kcml2ZXJzL2ZpcmV3aXJlL0tjb25maWcKaW5kZXggZmU5ZTc2OC4uMjViZGMyZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9maXJld2lyZS9LY29uZmlnCisrKyBiL2RyaXZlcnMvZmlyZXdpcmUvS2NvbmZpZwpAQCAtMSw1ICsxLDMgQEAKLSMgLSotIHNoZWxsLXNjcmlwdCAtKi0KLQogY29tbWVudCAiQW4gYWx0ZXJuYXRpdmUgRmlyZVdpcmUgc3RhY2sgaXMgYXZhaWxhYmxlIHdpdGggRVhQRVJJTUVOVEFMPXkiCiAJZGVwZW5kcyBvbiBFWFBFUklNRU5UQUw9bgogCkBAIC0yMSwyNyArMTksNyBAQAogICAgICAgICAgIE5PVEU6CiAKIAkgIFlvdSBzaG91bGQgb25seSBidWlsZCBPTkUgb2YgdGhlIHN0YWNrcywgdW5sZXNzIHlvdSBSRUFMTFkga25vdyB3aGF0Ci0JICB5b3UgYXJlIGRvaW5nLiAgSWYgeW91IGluc3RhbGwgYm90aCwgeW91IHNob3VsZCBjb25maWd1cmUgdGhlbSBvbmx5IGFzCi0JICBtb2R1bGVzIHJhdGhlciB0aGFuIGxpbmsgdGhlbSBzdGF0aWNhbGx5LCBhbmQgeW91IHNob3VsZCBibGFja2xpc3Qgb25lCi0JICBvZiB0aGUgY29uY3VycmVudCBsb3ctbGV2ZWwgZHJpdmVycyBpbiAvZXRjL21vZHByb2JlLmNvbmYuICBBZGQgZWl0aGVyCi0KLQkgICAgICBibGFja2xpc3QgZmlyZXdpcmUtb2hjaQotCSAgb3IKLQkgICAgICBibGFja2xpc3Qgb2hjaTEzOTQKLQotCSAgdGhlcmUgZGVwZW5kaW5nIG9uIHdoaWNoIGRyaXZlciB5b3UgRE9OJ1Qgd2FudCB0byBoYXZlIGF1dG8tbG9hZGVkLgotCSAgWW91IGNhbiBvcHRpb25hbGx5IGRvIHRoZSBzYW1lIHdpdGggdGhlIG90aGVyIElFRUUgMTM5NC8gRmlyZVdpcmUKLQkgIGRyaXZlcnMuCi0KLQkgIElmIHlvdSBoYXZlIGFuIG9sZCBtb2Rwcm9iZSB3aGljaCBkb2Vzbid0IGltcGxlbWVudCB0aGUgYmxhY2tsaXN0Ci0JICBkaXJlY3RpdmUsIHVzZSBlaXRoZXIKLQotCSAgICAgICBpbnN0YWxsIGZpcmV3aXJlLW9oY2kgL2Jpbi90cnVlCi0JICBvcgotCSAgICAgICBpbnN0YWxsIG9oY2kxMzk0IC9iaW4vdHJ1ZQotCi0JICBhbmQgc28gb24sIGRlcGVuZGluZyBvbiB3aGljaCBtb2R1bGVzIHlvdSBET04ndCB3YW50IHRvIGhhdmUKLQkgIGF1dG8tbG9hZGVkLgorCSAgeW91IGFyZSBkb2luZy4KIAogY29uZmlnIEZJUkVXSVJFX09IQ0kKIAl0cmlzdGF0ZSAiU3VwcG9ydCBmb3IgT0hDSSBGaXJlV2lyZSBob3N0IGNvbnRyb2xsZXJzIgpAQCAtNTcsOCArMzUsMjQgQEAKIAogICAgICAgICAgIE5PVEU6CiAKLQkgIElmIHlvdSBhbHNvIGJ1aWxkIG9oY2kxMzk0IG9mIHRoZSBjbGFzc2ljIHN0YWNrLCBibGFja2xpc3QgZWl0aGVyCi0JICBvaGNpMTM5NCBvciBmaXJld2lyZS1vaGNpIHRvIGxldCBob3RwbHVnIGxvYWQgb25seSB0aGUgZGVzaXJlZCBkcml2ZXIuCisJICBZb3Ugc2hvdWxkIG9ubHkgYnVpbGQgb2hjaTEzOTQgb3IgZmlyZXdpcmUtb2hjaSwgYnV0IG5vdCBib3RoLgorCSAgSWYgeW91IG5ldmVydGhlbGVzcyB3YW50IHRvIGluc3RhbGwgYm90aCwgeW91IHNob3VsZCBjb25maWd1cmUgdGhlbQorCSAgb25seSBhcyBtb2R1bGVzIGFuZCBibGFja2xpc3QgdGhlIGRyaXZlcihzKSB3aGljaCB5b3UgZG9uJ3Qgd2FudCB0bworCSAgaGF2ZSBhdXRvLWxvYWRlZC4gIEFkZCBlaXRoZXIKKworCSAgICAgIGJsYWNrbGlzdCBmaXJld2lyZS1vaGNpCisJICBvcgorCSAgICAgIGJsYWNrbGlzdCBvaGNpMTM5NAorCSAgICAgIGJsYWNrbGlzdCB2aWRlbzEzOTQKKwkgICAgICBibGFja2xpc3QgZHYxMzk0CisKKwkgIHRvIC9ldGMvbW9kcHJvYmUuY29uZiBvciAvZXRjL21vZHByb2JlLmQvKiBhbmQgdXBkYXRlIG1vZHByb2JlLmNvbmYKKwkgIGRlcGVuZGluZyBvbiB5b3VyIGRpc3RyaWJ1dGlvbi4gIFRoZSBsYXR0ZXIgdHdvIG1vZHVsZXMgc2hvdWxkIGJlCisJICBibGFja2xpc3RlZCB0b2dldGhlciB3aXRoIG9oY2kxMzk0IGJlY2F1c2UgdGhleSBkZXBlbmQgb24gb2hjaTEzOTQuCisKKwkgIElmIHlvdSBoYXZlIGFuIG9sZCBtb2Rwcm9iZSB3aGljaCBkb2Vzbid0IGltcGxlbWVudCB0aGUgYmxhY2tsaXN0CisJICBkaXJlY3RpdmUsIHVzZSAiaW5zdGFsbCBtb2R1bGVuYW1lIC9iaW4vdHJ1ZSIgZm9yIHRoZSBtb2R1bGVzIHRvIGJlCisJICBibGFja2xpc3RlZC4KIAogY29uZmlnIEZJUkVXSVJFX1NCUDIKIAl0cmlzdGF0ZSAiU3VwcG9ydCBmb3Igc3RvcmFnZSBkZXZpY2VzIChTQlAtMiBwcm90b2NvbCBkcml2ZXIpIgpAQCAtNzUsOSArNjksMyBAQAogCiAJICBZb3Ugc2hvdWxkIGFsc28gZW5hYmxlIHN1cHBvcnQgZm9yIGRpc2tzLCBDRC1ST01zLCBldGMuIGluIHRoZSBTQ1NJCiAJICBjb25maWd1cmF0aW9uIHNlY3Rpb24uCi0KLSAgICAgICAgICBOT1RFOgotCi0JICBJZiB5b3UgYWxzbyBidWlsZCBzYnAyIG9mIHRoZSBjbGFzc2ljIHN0YWNrLCBibGFja2xpc3QgZWl0aGVyIHNicDIKLQkgIG9yIGZpcmV3aXJlLXNicDIgdG8gbGV0IGhvdHBsdWcgbG9hZCBvbmx5IHRoZSBkZXNpcmVkIGRyaXZlci4KLQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9maXJld2lyZS9mdy1vaGNpLmMgYi9kcml2ZXJzL2ZpcmV3aXJlL2Z3LW9oY2kuYwppbmRleCA3ZWJhZDNjLi5jYTZkNTFlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2ZpcmV3aXJlL2Z3LW9oY2kuYworKysgYi9kcml2ZXJzL2ZpcmV3aXJlL2Z3LW9oY2kuYwpAQCAtMzMsNiArMzMsMTAgQEAKICNpbmNsdWRlIDxhc20vcGFnZS5oPgogI2luY2x1ZGUgPGFzbS9zeXN0ZW0uaD4KIAorI2lmZGVmIENPTkZJR19QUENfUE1BQworI2luY2x1ZGUgPGFzbS9wbWFjX2ZlYXR1cmUuaD4KKyNlbmRpZgorCiAjaW5jbHVkZSAiZnctb2hjaS5oIgogI2luY2x1ZGUgImZ3LXRyYW5zYWN0aW9uLmgiCiAKQEAgLTE3NSw2ICsxNzksNyBAQAogCWludCBnZW5lcmF0aW9uOwogCWludCByZXF1ZXN0X2dlbmVyYXRpb247CiAJdTMyIGJ1c19zZWNvbmRzOworCWJvb2wgb2xkX3VuaW5vcnRoOwogCiAJLyoKIAkgKiBTcGlubG9jayBmb3IgYWNjZXNzaW5nIGZ3X29oY2kgZGF0YS4gIE5ldmVyIGNhbGwgb3V0IG9mCkBAIC0yNzYsMTkgKzI4MSwxMyBAQAogewogCXN0cnVjdCBkZXZpY2UgKmRldiA9IGN0eC0+b2hjaS0+Y2FyZC5kZXZpY2U7CiAJc3RydWN0IGFyX2J1ZmZlciAqYWI7Ci0JZG1hX2FkZHJfdCBhYl9idXM7CisJZG1hX2FkZHJfdCB1bmluaXRpYWxpemVkX3ZhcihhYl9idXMpOwogCXNpemVfdCBvZmZzZXQ7CiAKLQlhYiA9IChzdHJ1Y3QgYXJfYnVmZmVyICopIF9fZ2V0X2ZyZWVfcGFnZShHRlBfQVRPTUlDKTsKKwlhYiA9IGRtYV9hbGxvY19jb2hlcmVudChkZXYsIFBBR0VfU0laRSwgJmFiX2J1cywgR0ZQX0FUT01JQyk7CiAJaWYgKGFiID09IE5VTEwpCiAJCXJldHVybiAtRU5PTUVNOwogCi0JYWJfYnVzID0gZG1hX21hcF9zaW5nbGUoZGV2LCBhYiwgUEFHRV9TSVpFLCBETUFfQklESVJFQ1RJT05BTCk7Ci0JaWYgKGRtYV9tYXBwaW5nX2Vycm9yKGFiX2J1cykpIHsKLQkJZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKSBhYik7Ci0JCXJldHVybiAtRU5PTUVNOwotCX0KLQogCW1lbXNldCgmYWItPmRlc2NyaXB0b3IsIDAsIHNpemVvZihhYi0+ZGVzY3JpcHRvcikpOwogCWFiLT5kZXNjcmlwdG9yLmNvbnRyb2wgICAgICAgID0gY3B1X3RvX2xlMTYoREVTQ1JJUFRPUl9JTlBVVF9NT1JFIHwKIAkJCQkJCSAgICBERVNDUklQVE9SX1NUQVRVUyB8CkBAIC0yOTksOCArMjk4LDYgQEAKIAlhYi0+ZGVzY3JpcHRvci5yZXNfY291bnQgICAgICA9IGNwdV90b19sZTE2KFBBR0VfU0laRSAtIG9mZnNldCk7CiAJYWItPmRlc2NyaXB0b3IuYnJhbmNoX2FkZHJlc3MgPSAwOwogCi0JZG1hX3N5bmNfc2luZ2xlX2Zvcl9kZXZpY2UoZGV2LCBhYl9idXMsIFBBR0VfU0laRSwgRE1BX0JJRElSRUNUSU9OQUwpOwotCiAJY3R4LT5sYXN0X2J1ZmZlci0+ZGVzY3JpcHRvci5icmFuY2hfYWRkcmVzcyA9IGNwdV90b19sZTMyKGFiX2J1cyB8IDEpOwogCWN0eC0+bGFzdF9idWZmZXItPm5leHQgPSBhYjsKIAljdHgtPmxhc3RfYnVmZmVyID0gYWI7CkBAIC0zMTEsMTUgKzMwOCwyMiBAQAogCXJldHVybiAwOwogfQogCisjaWYgZGVmaW5lZChDT05GSUdfUFBDX1BNQUMpICYmIGRlZmluZWQoQ09ORklHX1BQQzMyKQorI2RlZmluZSBjb25kX2xlMzJfdG9fY3B1KHYpIFwKKwkob2hjaS0+b2xkX3VuaW5vcnRoID8gKF9fZm9yY2UgX191MzIpKHYpIDogbGUzMl90b19jcHUodikpCisjZWxzZQorI2RlZmluZSBjb25kX2xlMzJfdG9fY3B1KHYpIGxlMzJfdG9fY3B1KHYpCisjZW5kaWYKKwogc3RhdGljIF9fbGUzMiAqaGFuZGxlX2FyX3BhY2tldChzdHJ1Y3QgYXJfY29udGV4dCAqY3R4LCBfX2xlMzIgKmJ1ZmZlcikKIHsKIAlzdHJ1Y3QgZndfb2hjaSAqb2hjaSA9IGN0eC0+b2hjaTsKIAlzdHJ1Y3QgZndfcGFja2V0IHA7CiAJdTMyIHN0YXR1cywgbGVuZ3RoLCB0Y29kZTsKIAotCXAuaGVhZGVyWzBdID0gbGUzMl90b19jcHUoYnVmZmVyWzBdKTsKLQlwLmhlYWRlclsxXSA9IGxlMzJfdG9fY3B1KGJ1ZmZlclsxXSk7Ci0JcC5oZWFkZXJbMl0gPSBsZTMyX3RvX2NwdShidWZmZXJbMl0pOworCXAuaGVhZGVyWzBdID0gY29uZF9sZTMyX3RvX2NwdShidWZmZXJbMF0pOworCXAuaGVhZGVyWzFdID0gY29uZF9sZTMyX3RvX2NwdShidWZmZXJbMV0pOworCXAuaGVhZGVyWzJdID0gY29uZF9sZTMyX3RvX2NwdShidWZmZXJbMl0pOwogCiAJdGNvZGUgPSAocC5oZWFkZXJbMF0gPj4gNCkgJiAweDBmOwogCXN3aXRjaCAodGNvZGUpIHsKQEAgLTMzMSw3ICszMzUsNyBAQAogCQlicmVhazsKIAogCWNhc2UgVENPREVfUkVBRF9CTE9DS19SRVFVRVNUIDoKLQkJcC5oZWFkZXJbM10gPSBsZTMyX3RvX2NwdShidWZmZXJbM10pOworCQlwLmhlYWRlclszXSA9IGNvbmRfbGUzMl90b19jcHUoYnVmZmVyWzNdKTsKIAkJcC5oZWFkZXJfbGVuZ3RoID0gMTY7CiAJCXAucGF5bG9hZF9sZW5ndGggPSAwOwogCQlicmVhazsKQEAgLTM0MCw3ICszNDQsNyBAQAogCWNhc2UgVENPREVfUkVBRF9CTE9DS19SRVNQT05TRToKIAljYXNlIFRDT0RFX0xPQ0tfUkVRVUVTVDoKIAljYXNlIFRDT0RFX0xPQ0tfUkVTUE9OU0U6Ci0JCXAuaGVhZGVyWzNdID0gbGUzMl90b19jcHUoYnVmZmVyWzNdKTsKKwkJcC5oZWFkZXJbM10gPSBjb25kX2xlMzJfdG9fY3B1KGJ1ZmZlclszXSk7CiAJCXAuaGVhZGVyX2xlbmd0aCA9IDE2OwogCQlwLnBheWxvYWRfbGVuZ3RoID0gcC5oZWFkZXJbM10gPj4gMTY7CiAJCWJyZWFrOwpAQCAtMzU3LDcgKzM2MSw3IEBACiAKIAkvKiBGSVhNRTogV2hhdCB0byBkbyBhYm91dCBldnRfKiBlcnJvcnM/ICovCiAJbGVuZ3RoID0gKHAuaGVhZGVyX2xlbmd0aCArIHAucGF5bG9hZF9sZW5ndGggKyAzKSAvIDQ7Ci0Jc3RhdHVzID0gbGUzMl90b19jcHUoYnVmZmVyW2xlbmd0aF0pOworCXN0YXR1cyA9IGNvbmRfbGUzMl90b19jcHUoYnVmZmVyW2xlbmd0aF0pOwogCiAJcC5hY2sgICAgICAgID0gKChzdGF0dXMgPj4gMTYpICYgMHgxZikgLSAxNjsKIAlwLnNwZWVkICAgICAgPSAoc3RhdHVzID4+IDIxKSAmIDB4NzsKQEAgLTM3NSw3ICszNzksNyBAQAogCSAqLwogCiAJaWYgKHAuYWNrICsgMTYgPT0gMHgwOSkKLQkJb2hjaS0+cmVxdWVzdF9nZW5lcmF0aW9uID0gKGJ1ZmZlclsyXSA+PiAxNikgJiAweGZmOworCQlvaGNpLT5yZXF1ZXN0X2dlbmVyYXRpb24gPSAocC5oZWFkZXJbMl0gPj4gMTYpICYgMHhmZjsKIAllbHNlIGlmIChjdHggPT0gJm9oY2ktPmFyX3JlcXVlc3RfY3R4KQogCQlmd19jb3JlX2hhbmRsZV9yZXF1ZXN0KCZvaGNpLT5jYXJkLCAmcCk7CiAJZWxzZQpAQCAtMzk3LDYgKzQwMSw4IEBACiAKIAlpZiAoZC0+cmVzX2NvdW50ID09IDApIHsKIAkJc2l6ZV90IHNpemUsIHJlc3QsIG9mZnNldDsKKwkJZG1hX2FkZHJfdCBzdGFydF9idXM7CisJCXZvaWQgKnN0YXJ0OwogCiAJCS8qCiAJCSAqIFRoaXMgZGVzY3JpcHRvciBpcyBmaW5pc2hlZCBhbmQgd2UgbWF5IGhhdmUgYQpAQCAtNDA1LDExICs0MTEsOSBAQAogCQkgKi8KIAogCQlvZmZzZXQgPSBvZmZzZXRvZihzdHJ1Y3QgYXJfYnVmZmVyLCBkYXRhKTsKLQkJZG1hX3VubWFwX3NpbmdsZShvaGNpLT5jYXJkLmRldmljZSwKLQkJCWxlMzJfdG9fY3B1KGFiLT5kZXNjcmlwdG9yLmRhdGFfYWRkcmVzcykgLSBvZmZzZXQsCi0JCQlQQUdFX1NJWkUsIERNQV9CSURJUkVDVElPTkFMKTsKKwkJc3RhcnQgPSBidWZmZXIgPSBhYjsKKwkJc3RhcnRfYnVzID0gbGUzMl90b19jcHUoYWItPmRlc2NyaXB0b3IuZGF0YV9hZGRyZXNzKSAtIG9mZnNldDsKIAotCQlidWZmZXIgPSBhYjsKIAkJYWIgPSBhYi0+bmV4dDsKIAkJZCA9ICZhYi0+ZGVzY3JpcHRvcjsKIAkJc2l6ZSA9IGJ1ZmZlciArIFBBR0VfU0laRSAtIGN0eC0+cG9pbnRlcjsKQEAgLTQyMyw3ICs0MjcsOCBAQAogCQl3aGlsZSAoYnVmZmVyIDwgZW5kKQogCQkJYnVmZmVyID0gaGFuZGxlX2FyX3BhY2tldChjdHgsIGJ1ZmZlcik7CiAKLQkJZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKWJ1ZmZlcik7CisJCWRtYV9mcmVlX2NvaGVyZW50KG9oY2ktPmNhcmQuZGV2aWNlLCBQQUdFX1NJWkUsCisJCQkJICBzdGFydCwgc3RhcnRfYnVzKTsKIAkJYXJfY29udGV4dF9hZGRfcGFnZShjdHgpOwogCX0gZWxzZSB7CiAJCWJ1ZmZlciA9IGN0eC0+cG9pbnRlcjsKQEAgLTUzMiw3ICs1MzcsNyBAQAogY29udGV4dF9hZGRfYnVmZmVyKHN0cnVjdCBjb250ZXh0ICpjdHgpCiB7CiAJc3RydWN0IGRlc2NyaXB0b3JfYnVmZmVyICpkZXNjOwotCWRtYV9hZGRyX3QgYnVzX2FkZHI7CisJZG1hX2FkZHJfdCB1bmluaXRpYWxpemVkX3ZhcihidXNfYWRkcik7CiAJaW50IG9mZnNldDsKIAogCS8qCkBAIC0xMDIyLDEzICsxMDI3LDE0IEBACiAJICovCiAKIAlzZWxmX2lkX2NvdW50ID0gKHJlZ19yZWFkKG9oY2ksIE9IQ0kxMzk0X1NlbGZJRENvdW50KSA+PiAzKSAmIDB4M2ZmOwotCWdlbmVyYXRpb24gPSAobGUzMl90b19jcHUob2hjaS0+c2VsZl9pZF9jcHVbMF0pID4+IDE2KSAmIDB4ZmY7CisJZ2VuZXJhdGlvbiA9IChjb25kX2xlMzJfdG9fY3B1KG9oY2ktPnNlbGZfaWRfY3B1WzBdKSA+PiAxNikgJiAweGZmOwogCXJtYigpOwogCiAJZm9yIChpID0gMSwgaiA9IDA7IGogPCBzZWxmX2lkX2NvdW50OyBpICs9IDIsIGorKykgewogCQlpZiAob2hjaS0+c2VsZl9pZF9jcHVbaV0gIT0gfm9oY2ktPnNlbGZfaWRfY3B1W2kgKyAxXSkKIAkJCWZ3X2Vycm9yKCJpbmNvbnNpc3RlbnQgc2VsZiBJRHNcbiIpOwotCQlvaGNpLT5zZWxmX2lkX2J1ZmZlcltqXSA9IGxlMzJfdG9fY3B1KG9oY2ktPnNlbGZfaWRfY3B1W2ldKTsKKwkJb2hjaS0+c2VsZl9pZF9idWZmZXJbal0gPQorCQkJCWNvbmRfbGUzMl90b19jcHUob2hjaS0+c2VsZl9pZF9jcHVbaV0pOwogCX0KIAlybWIoKTsKIApAQCAtMTMxNiw3ICsxMzIyLDcgQEAKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCWludCByZXR2YWwgPSAtRUJVU1k7CiAJX19iZTMyICpuZXh0X2NvbmZpZ19yb207Ci0JZG1hX2FkZHJfdCBuZXh0X2NvbmZpZ19yb21fYnVzOworCWRtYV9hZGRyX3QgdW5pbml0aWFsaXplZF92YXIobmV4dF9jb25maWdfcm9tX2J1cyk7CiAKIAlvaGNpID0gZndfb2hjaShjYXJkKTsKIApAQCAtMTQ4Nyw3ICsxNDkzLDcgQEAKIAl2b2lkICpwLCAqZW5kOwogCWludCBpOwogCi0JaWYgKGRiLT5maXJzdF9yZXNfY291bnQgPiAwICYmIGRiLT5zZWNvbmRfcmVzX2NvdW50ID4gMCkgeworCWlmIChkYi0+Zmlyc3RfcmVzX2NvdW50ICE9IDAgJiYgZGItPnNlY29uZF9yZXNfY291bnQgIT0gMCkgewogCQlpZiAoY3R4LT5leGNlc3NfYnl0ZXMgPD0gbGUxNl90b19jcHUoZGItPnNlY29uZF9yZXFfY291bnQpKSB7CiAJCQkvKiBUaGlzIGRlc2NyaXB0b3IgaXNuJ3QgZG9uZSB5ZXQsIHN0b3AgaXRlcmF0aW9uLiAqLwogCQkJcmV0dXJuIDA7CkBAIC0xNTEzLDcgKzE1MTksNyBAQAogCQltZW1jcHkoY3R4LT5oZWFkZXIgKyBpICsgNCwgcCArIDgsIGN0eC0+YmFzZS5oZWFkZXJfc2l6ZSAtIDQpOwogCQlpICs9IGN0eC0+YmFzZS5oZWFkZXJfc2l6ZTsKIAkJY3R4LT5leGNlc3NfYnl0ZXMgKz0KLQkJCShsZTMyX3RvX2NwdSgqKHUzMiAqKShwICsgNCkpID4+IDE2KSAmIDB4ZmZmZjsKKwkJCShsZTMyX3RvX2NwdSgqKF9fbGUzMiAqKShwICsgNCkpID4+IDE2KSAmIDB4ZmZmZjsKIAkJcCArPSBjdHgtPmJhc2UuaGVhZGVyX3NpemUgKyA0OwogCX0KIAljdHgtPmhlYWRlcl9sZW5ndGggPSBpOwpAQCAtMjA0OCw2ICsyMDU0LDE4IEBACiAJaW50IGVycjsKIAlzaXplX3Qgc2l6ZTsKIAorI2lmZGVmIENPTkZJR19QUENfUE1BQworCS8qIE5lY2Vzc2FyeSBvbiBzb21lIG1hY2hpbmVzIGlmIGZ3LW9oY2kgd2FzIGxvYWRlZC8gdW5sb2FkZWQgYmVmb3JlICovCisJaWYgKG1hY2hpbmVfaXMocG93ZXJtYWMpKSB7CisJCXN0cnVjdCBkZXZpY2Vfbm9kZSAqb2ZuID0gcGNpX2RldmljZV90b19PRl9ub2RlKGRldik7CisKKwkJaWYgKG9mbikgeworCQkJcG1hY19jYWxsX2ZlYXR1cmUoUE1BQ19GVFJfMTM5NF9DQUJMRV9QT1dFUiwgb2ZuLCAwLCAxKTsKKwkJCXBtYWNfY2FsbF9mZWF0dXJlKFBNQUNfRlRSXzEzOTRfRU5BQkxFLCBvZm4sIDAsIDEpOworCQl9CisJfQorI2VuZGlmIC8qIENPTkZJR19QUENfUE1BQyAqLworCiAJb2hjaSA9IGt6YWxsb2Moc2l6ZW9mKCpvaGNpKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKG9oY2kgPT0gTlVMTCkgewogCQlmd19lcnJvcigiQ291bGQgbm90IG1hbGxvYyBmd19vaGNpIGRhdGEuXG4iKTsKQEAgLTIwNjYsNiArMjA4NCwxMCBAQAogCXBjaV93cml0ZV9jb25maWdfZHdvcmQoZGV2LCBPSENJMTM5NF9QQ0lfSENJX0NvbnRyb2wsIDApOwogCXBjaV9zZXRfZHJ2ZGF0YShkZXYsIG9oY2kpOwogCisjaWYgZGVmaW5lZChDT05GSUdfUFBDX1BNQUMpICYmIGRlZmluZWQoQ09ORklHX1BQQzMyKQorCW9oY2ktPm9sZF91bmlub3J0aCA9IGRldi0+dmVuZG9yID09IFBDSV9WRU5ET1JfSURfQVBQTEUgJiYKKwkJCSAgICAgZGV2LT5kZXZpY2UgPT0gUENJX0RFVklDRV9JRF9BUFBMRV9VTklfTl9GVzsKKyNlbmRpZgogCXNwaW5fbG9ja19pbml0KCZvaGNpLT5sb2NrKTsKIAogCXRhc2tsZXRfaW5pdCgmb2hjaS0+YnVzX3Jlc2V0X3Rhc2tsZXQsCkBAIC0yMTgyLDYgKzIyMDQsMTkgQEAKIAlwY2lfZGlzYWJsZV9kZXZpY2UoZGV2KTsKIAlmd19jYXJkX3B1dCgmb2hjaS0+Y2FyZCk7CiAKKyNpZmRlZiBDT05GSUdfUFBDX1BNQUMKKwkvKiBPbiBVbmlOb3J0aCwgcG93ZXIgZG93biB0aGUgY2FibGUgYW5kIHR1cm4gb2ZmIHRoZSBjaGlwIGNsb2NrCisJICogdG8gc2F2ZSBwb3dlciBvbiBsYXB0b3BzICovCisJaWYgKG1hY2hpbmVfaXMocG93ZXJtYWMpKSB7CisJCXN0cnVjdCBkZXZpY2Vfbm9kZSAqb2ZuID0gcGNpX2RldmljZV90b19PRl9ub2RlKGRldik7CisKKwkJaWYgKG9mbikgeworCQkJcG1hY19jYWxsX2ZlYXR1cmUoUE1BQ19GVFJfMTM5NF9FTkFCTEUsIG9mbiwgMCwgMCk7CisJCQlwbWFjX2NhbGxfZmVhdHVyZShQTUFDX0ZUUl8xMzk0X0NBQkxFX1BPV0VSLCBvZm4sIDAsIDApOworCQl9CisJfQorI2VuZGlmIC8qIENPTkZJR19QUENfUE1BQyAqLworCiAJZndfbm90aWZ5KCJSZW1vdmVkIGZ3LW9oY2kgZGV2aWNlLlxuIik7CiB9CiAKQEAgLTIyMDIsNiArMjIzNywxNiBAQAogCWlmIChlcnIpCiAJCWZ3X2Vycm9yKCJwY2lfc2V0X3Bvd2VyX3N0YXRlIGZhaWxlZCB3aXRoICVkXG4iLCBlcnIpOwogCisvKiBQb3dlck1hYyBzdXNwZW5kIGNvZGUgY29tZXMgbGFzdCAqLworI2lmZGVmIENPTkZJR19QUENfUE1BQworCWlmIChtYWNoaW5lX2lzKHBvd2VybWFjKSkgeworCQlzdHJ1Y3QgZGV2aWNlX25vZGUgKm9mbiA9IHBjaV9kZXZpY2VfdG9fT0Zfbm9kZShwZGV2KTsKKworCQlpZiAob2ZuKQorCQkJcG1hY19jYWxsX2ZlYXR1cmUoUE1BQ19GVFJfMTM5NF9FTkFCTEUsIG9mbiwgMCwgMCk7CisJfQorI2VuZGlmIC8qIENPTkZJR19QUENfUE1BQyAqLworCiAJcmV0dXJuIDA7CiB9CiAKQEAgLTIyMTAsNiArMjI1NSwxNiBAQAogCXN0cnVjdCBmd19vaGNpICpvaGNpID0gcGNpX2dldF9kcnZkYXRhKHBkZXYpOwogCWludCBlcnI7CiAKKy8qIFBvd2VyTWFjIHJlc3VtZSBjb2RlIGNvbWVzIGZpcnN0ICovCisjaWZkZWYgQ09ORklHX1BQQ19QTUFDCisJaWYgKG1hY2hpbmVfaXMocG93ZXJtYWMpKSB7CisJCXN0cnVjdCBkZXZpY2Vfbm9kZSAqb2ZuID0gcGNpX2RldmljZV90b19PRl9ub2RlKHBkZXYpOworCisJCWlmIChvZm4pCisJCQlwbWFjX2NhbGxfZmVhdHVyZShQTUFDX0ZUUl8xMzk0X0VOQUJMRSwgb2ZuLCAwLCAxKTsKKwl9CisjZW5kaWYgLyogQ09ORklHX1BQQ19QTUFDICovCisKIAlwY2lfc2V0X3Bvd2VyX3N0YXRlKHBkZXYsIFBDSV9EMCk7CiAJcGNpX3Jlc3RvcmVfc3RhdGUocGRldik7CiAJZXJyID0gcGNpX2VuYWJsZV9kZXZpY2UocGRldik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2ZpcmV3aXJlL2Z3LXNicDIuYyBiL2RyaXZlcnMvZmlyZXdpcmUvZnctc2JwMi5jCmluZGV4IDAzMDY5YTQuLjYyYjRlNDcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZmlyZXdpcmUvZnctc2JwMi5jCisrKyBiL2RyaXZlcnMvZmlyZXdpcmUvZnctc2JwMi5jCkBAIC0xNzMsNiArMTczLDcgQEAKICNkZWZpbmUgU0JQMl9PUkJfVElNRU9VVAkJMjAwMFUJLyogVGltZW91dCBpbiBtcyAqLwogI2RlZmluZSBTQlAyX09SQl9OVUxMCQkJMHg4MDAwMDAwMAogI2RlZmluZSBTQlAyX01BWF9TR19FTEVNRU5UX0xFTkdUSAkweGYwMDAKKyNkZWZpbmUgU0JQMl9SRVRSWV9MSU1JVAkJMHhmCS8qIDE1IHJldHJpZXMgKi8KIAogI2RlZmluZSBTQlAyX0RJUkVDVElPTl9UT19NRURJQQkJMHgwCiAjZGVmaW5lIFNCUDJfRElSRUNUSU9OX0ZST01fTUVESUEJMHgxCkBAIC0zMzAsNiArMzMxLDExIEBACiAJCS5tb2RlbAkJCT0gfjAsCiAJCS53b3JrYXJvdW5kcwkJPSBTQlAyX1dPUktBUk9VTkRfMTI4S19NQVhfVFJBTlMsCiAJfSwKKwkvKiBEYXRhZmFiIE1EMi1GVzIgd2l0aCBTeW1iaW9zL0xTSUxvZ2ljIFNZTTEzRlc1MDAgYnJpZGdlICovIHsKKwkJLmZpcm13YXJlX3JldmlzaW9uCT0gMHgwMDI2MDAsCisJCS5tb2RlbAkJCT0gfjAsCisJCS53b3JrYXJvdW5kcwkJPSBTQlAyX1dPUktBUk9VTkRfMTI4S19NQVhfVFJBTlMsCisJfSwKIAogCS8qCiAJICogVGhlcmUgYXJlIGlQb2RzICgybmQgZ2VuLCAzcmQgZ2VuKSB3aXRoIG1vZGVsX2lkID09IDAsIGJ1dApAQCAtODEyLDYgKzgxOCwzMCBAQAogCWtyZWZfcHV0KCZ0Z3QtPmtyZWYsIHNicDJfcmVsZWFzZV90YXJnZXQpOwogfQogCitzdGF0aWMgdm9pZAorY29tcGxldGVfc2V0X2J1c3lfdGltZW91dChzdHJ1Y3QgZndfY2FyZCAqY2FyZCwgaW50IHJjb2RlLAorCQkJICB2b2lkICpwYXlsb2FkLCBzaXplX3QgbGVuZ3RoLCB2b2lkICpkb25lKQoreworCWNvbXBsZXRlKGRvbmUpOworfQorCitzdGF0aWMgdm9pZCBzYnAyX3NldF9idXN5X3RpbWVvdXQoc3RydWN0IHNicDJfbG9naWNhbF91bml0ICpsdSkKK3sKKwlzdHJ1Y3QgZndfZGV2aWNlICpkZXZpY2UgPSBmd19kZXZpY2UobHUtPnRndC0+dW5pdC0+ZGV2aWNlLnBhcmVudCk7CisJREVDTEFSRV9DT01QTEVUSU9OX09OU1RBQ0soZG9uZSk7CisJc3RydWN0IGZ3X3RyYW5zYWN0aW9uIHQ7CisJc3RhdGljIF9fYmUzMiBidXN5X3RpbWVvdXQ7CisKKwkvKiBGSVhNRTogd2Ugc2hvdWxkIHRyeSB0byBzZXQgZHVhbC1waGFzZSBjeWNsZV9saW1pdCB0b28gKi8KKwlidXN5X3RpbWVvdXQgPSBjcHVfdG9fYmUzMihTQlAyX1JFVFJZX0xJTUlUKTsKKworCWZ3X3NlbmRfcmVxdWVzdChkZXZpY2UtPmNhcmQsICZ0LCBUQ09ERV9XUklURV9RVUFETEVUX1JFUVVFU1QsCisJCQlsdS0+dGd0LT5ub2RlX2lkLCBsdS0+Z2VuZXJhdGlvbiwgZGV2aWNlLT5tYXhfc3BlZWQsCisJCQlDU1JfUkVHSVNURVJfQkFTRSArIENTUl9CVVNZX1RJTUVPVVQsICZidXN5X3RpbWVvdXQsCisJCQlzaXplb2YoYnVzeV90aW1lb3V0KSwgY29tcGxldGVfc2V0X2J1c3lfdGltZW91dCwgJmRvbmUpOworCXdhaXRfZm9yX2NvbXBsZXRpb24oJmRvbmUpOworfQorCiBzdGF0aWMgdm9pZCBzYnAyX3JlY29ubmVjdChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspOwogCiBzdGF0aWMgdm9pZCBzYnAyX2xvZ2luKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKQEAgLTg2NCwxMCArODk0LDggQEAKIAlmd19ub3RpZnkoIiVzOiBsb2dnZWQgaW4gdG8gTFVOICUwNHggKCVkIHJldHJpZXMpXG4iLAogCQkgIHRndC0+YnVzX2lkLCBsdS0+bHVuLCBsdS0+cmV0cmllcyk7CiAKLSNpZiAwCi0JLyogRklYTUU6IFRoZSBsaW51eDEzOTQgc2JwMiBkb2VzIHRoaXMgbGFzdCBzdGVwLiAqLwotCXNicDJfc2V0X2J1c3lfdGltZW91dChzY3NpX2lkKTsKLSNlbmRpZgorCS8qIHNldCBhcHByb3ByaWF0ZSByZXRyeSBsaW1pdChzKSBpbiBCVVNZX1RJTUVPVVQgcmVnaXN0ZXIgKi8KKwlzYnAyX3NldF9idXN5X3RpbWVvdXQobHUpOwogCiAJUFJFUEFSRV9ERUxBWUVEX1dPUksoJmx1LT53b3JrLCBzYnAyX3JlY29ubmVjdCk7CiAJc2JwMl9hZ2VudF9yZXNldChsdSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2ZpcmV3aXJlL2Z3LXRvcG9sb2d5LmMgYi9kcml2ZXJzL2ZpcmV3aXJlL2Z3LXRvcG9sb2d5LmMKaW5kZXggZTQ3YmIwNC4uZDJjN2EzZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9maXJld2lyZS9mdy10b3BvbG9neS5jCisrKyBiL2RyaXZlcnMvZmlyZXdpcmUvZnctdG9wb2xvZ3kuYwpAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgogI2luY2x1ZGUgPGxpbnV4L3dhaXQuaD4KICNpbmNsdWRlIDxsaW51eC9lcnJuby5oPgorI2luY2x1ZGUgPGFzbS9idWcuaD4KICNpbmNsdWRlIDxhc20vc3lzdGVtLmg+CiAjaW5jbHVkZSAiZnctdHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJmdy10b3BvbG9neS5oIgpAQCAtNDI0LDggKzQyNSw4IEBACiAJbm9kZTEgPSBmd19ub2RlKGxpc3QxLm5leHQpOwogCiAJd2hpbGUgKCZub2RlMC0+bGluayAhPSAmbGlzdDApIHsKKwkJV0FSTl9PTihub2RlMC0+cG9ydF9jb3VudCAhPSBub2RlMS0+cG9ydF9jb3VudCk7CiAKLQkJLyogYXNzZXJ0KG5vZGUwLT5wb3J0X2NvdW50ID09IG5vZGUxLT5wb3J0X2NvdW50KTsgKi8KIAkJaWYgKG5vZGUwLT5saW5rX29uICYmICFub2RlMS0+bGlua19vbikKIAkJCWV2ZW50ID0gRldfTk9ERV9MSU5LX09GRjsKIAkJZWxzZSBpZiAoIW5vZGUwLT5saW5rX29uICYmIG5vZGUxLT5saW5rX29uKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9maXJld2lyZS9mdy10cmFuc2FjdGlvbi5jIGIvZHJpdmVycy9maXJld2lyZS9mdy10cmFuc2FjdGlvbi5jCmluZGV4IDdmY2M1OWQuLmU2ZjFiZGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZmlyZXdpcmUvZnctdHJhbnNhY3Rpb24uYworKysgYi9kcml2ZXJzL2ZpcmV3aXJlL2Z3LXRyYW5zYWN0aW9uLmMKQEAgLTczNiw2ICs3MzYsMTIgQEAKIAkJYnJlYWs7CiAJfQogCisJLyoKKwkgKiBUaGUgcmVzcG9uc2UgaGFuZGxlciBtYXkgYmUgZXhlY3V0ZWQgd2hpbGUgdGhlIHJlcXVlc3QgaGFuZGxlcgorCSAqIGlzIHN0aWxsIHBlbmRpbmcuICBDYW5jZWwgdGhlIHJlcXVlc3QgaGFuZGxlci4KKwkgKi8KKwljYXJkLT5kcml2ZXItPmNhbmNlbF9wYWNrZXQoY2FyZCwgJnQtPnBhY2tldCk7CisKIAl0LT5jYWxsYmFjayhjYXJkLCByY29kZSwgZGF0YSwgZGF0YV9sZW5ndGgsIHQtPmNhbGxiYWNrX2RhdGEpOwogfQogRVhQT1JUX1NZTUJPTChmd19jb3JlX2hhbmRsZV9yZXNwb25zZSk7CkBAIC03NTEsNyArNzU3LDcgQEAKIAkJICAgIHZvaWQgKnBheWxvYWQsIHNpemVfdCBsZW5ndGgsIHZvaWQgKmNhbGxiYWNrX2RhdGEpCiB7CiAJaW50IGksIHN0YXJ0LCBlbmQ7Ci0JdTMyICptYXA7CisJX19iZTMyICptYXA7CiAKIAlpZiAoIVRDT0RFX0lTX1JFQURfUkVRVUVTVCh0Y29kZSkpIHsKIAkJZndfc2VuZF9yZXNwb25zZShjYXJkLCByZXF1ZXN0LCBSQ09ERV9UWVBFX0VSUk9SKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZmlyZXdpcmUvZnctdHJhbnNhY3Rpb24uaCBiL2RyaXZlcnMvZmlyZXdpcmUvZnctdHJhbnNhY3Rpb24uaAppbmRleCAwOWNiNzI4Li5hNDNiYjIyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2ZpcmV3aXJlL2Z3LXRyYW5zYWN0aW9uLmgKKysrIGIvZHJpdmVycy9maXJld2lyZS9mdy10cmFuc2FjdGlvbi5oCkBAIC04NiwxMiArODYsMTIgQEAKIHN0YXRpYyBpbmxpbmUgdm9pZAogZndfbWVtY3B5X2Zyb21fYmUzMih2b2lkICpfZHN0LCB2b2lkICpfc3JjLCBzaXplX3Qgc2l6ZSkKIHsKLQl1MzIgKmRzdCA9IF9kc3Q7Ci0JdTMyICpzcmMgPSBfc3JjOworCXUzMiAgICAqZHN0ID0gX2RzdDsKKwlfX2JlMzIgKnNyYyA9IF9zcmM7CiAJaW50IGk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgc2l6ZSAvIDQ7IGkrKykKLQkJZHN0W2ldID0gY3B1X3RvX2JlMzIoc3JjW2ldKTsKKwkJZHN0W2ldID0gYmUzMl90b19jcHUoc3JjW2ldKTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Zpcm13YXJlL2RtaV9zY2FuLmMgYi9kcml2ZXJzL2Zpcm13YXJlL2RtaV9zY2FuLmMKaW5kZXggNDA3MjQ0OS4uYzVlM2VkNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9maXJtd2FyZS9kbWlfc2Nhbi5jCisrKyBiL2RyaXZlcnMvZmlybXdhcmUvZG1pX3NjYW4uYwpAQCAtMjY2LDcgKzI2Niw3IEBACiAJZGV2LT5uYW1lID0gIklQTUkgY29udHJvbGxlciI7CiAJZGV2LT5kZXZpY2VfZGF0YSA9IGRhdGE7CiAKLQlsaXN0X2FkZCgmZGV2LT5saXN0LCAmZG1pX2RldmljZXMpOworCWxpc3RfYWRkX3RhaWwoJmRldi0+bGlzdCwgJmRtaV9kZXZpY2VzKTsKIH0KIAogc3RhdGljIHZvaWQgX19pbml0IGRtaV9zYXZlX2V4dGVuZGVkX2RldmljZXMoY29uc3Qgc3RydWN0IGRtaV9oZWFkZXIgKmRtKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9oaWQvaGlkLWNvcmUuYyBiL2RyaXZlcnMvaGlkL2hpZC1jb3JlLmMKaW5kZXggZDczYTc2OC4uZjBiMDBlYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9oaWQvaGlkLWNvcmUuYworKysgYi9kcml2ZXJzL2hpZC9oaWQtY29yZS5jCkBAIC05NjgsNyArOTY4LDcgQEAKIAkJc2l6ZS0tOwogCX0KIAotCS8qIGR1bXAgdGhlIHJlcG9ydCBkZXNjcmlwdG9yICovCisJLyogZHVtcCB0aGUgcmVwb3J0ICovCiAJZGJnX2hpZCgicmVwb3J0ICVkIChzaXplICV1KSA9ICIsIG4sIHNpemUpOwogCWZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspCiAJCWRiZ19oaWRfbGluZSgiICUwMngiLCBkYXRhW2ldKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaGlkL2hpZC1pbnB1dC5jIGIvZHJpdmVycy9oaWQvaGlkLWlucHV0LmMKaW5kZXggNWEzOGZiMi4uYzNlYjNmMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9oaWQvaGlkLWlucHV0LmMKKysrIGIvZHJpdmVycy9oaWQvaGlkLWlucHV0LmMKQEAgLTk4LDE4ICs5OCwxNiBAQAogCiBzdGF0aWMgc3RydWN0IGhpZGlucHV0X2tleV90cmFuc2xhdGlvbiBhcHBsZV9mbl9rZXlzW10gPSB7CiAJeyBLRVlfQkFDS1NQQUNFLCBLRVlfREVMRVRFIH0sCi0JeyBLRVlfRjEsICAgICAgIEtFWV9CUklHSFRORVNTRE9XTiwgICAgIEFQUExFX0ZMQUdfRktFWSB9LAotCXsgS0VZX0YyLCAgICAgICBLRVlfQlJJR0hUTkVTU1VQLCAgICAgICBBUFBMRV9GTEFHX0ZLRVkgfSwKLQl7IEtFWV9GMywgICAgICAgS0VZX0NZQ0xFV0lORE9XUywgICAgICAgQVBQTEVfRkxBR19GS0VZIH0sIC8qIEV4cG9zw6kgKi8KLQl7IEtFWV9GNCwgICAgICAgS0VZX0ZOX0Y0LCAgICAgICAgICAgICAgQVBQTEVfRkxBR19GS0VZIH0sIC8qIERhc2hib2FyZCAqLwotCXsgS0VZX0Y1LCAgICAgICBLRVlfRk5fRjUgfSwKLQl7IEtFWV9GNiwgICAgICAgS0VZX0ZOX0Y2IH0sCi0JeyBLRVlfRjcsICAgICAgIEtFWV9CQUNLLCAgICAgICAgICAgICAgIEFQUExFX0ZMQUdfRktFWSB9LAotCXsgS0VZX0Y4LCAgICAgICBLRVlfUExBWVBBVVNFLCAgICAgICAgICBBUFBMRV9GTEFHX0ZLRVkgfSwKLQl7IEtFWV9GOSwgICAgICAgS0VZX0ZPUldBUkQsICAgICAgICAgICAgQVBQTEVfRkxBR19GS0VZIH0sCi0JeyBLRVlfRjEwLCAgICAgIEtFWV9NVVRFLCAgICAgICAgICAgICAgIEFQUExFX0ZMQUdfRktFWSB9LAotCXsgS0VZX0YxMSwgICAgICBLRVlfVk9MVU1FRE9XTiwgICAgICAgICBBUFBMRV9GTEFHX0ZLRVkgfSwKLQl7IEtFWV9GMTIsICAgICAgS0VZX1ZPTFVNRVVQLCAgICAgICAgICAgQVBQTEVfRkxBR19GS0VZIH0sCisJeyBLRVlfRjEsICAgICAgIEtFWV9CUklHSFRORVNTRE9XTiwgQVBQTEVfRkxBR19GS0VZIH0sCisJeyBLRVlfRjIsICAgICAgIEtFWV9CUklHSFRORVNTVVAsICAgQVBQTEVfRkxBR19GS0VZIH0sCisJeyBLRVlfRjMsICAgICAgIEtFWV9GTl9GNSwgICAgICAgICAgQVBQTEVfRkxBR19GS0VZIH0sIC8qIEV4cG9z6SAqLworCXsgS0VZX0Y0LCAgICAgICBLRVlfRk5fRjQsICAgICAgICAgIEFQUExFX0ZMQUdfRktFWSB9LCAvKiBEYXNoYm9hcmQgKi8KKwl7IEtFWV9GNywgICAgICAgS0VZX1BSRVZJT1VTU09ORywgICBBUFBMRV9GTEFHX0ZLRVkgfSwKKwl7IEtFWV9GOCwgICAgICAgS0VZX1BMQVlQQVVTRSwgICAgICBBUFBMRV9GTEFHX0ZLRVkgfSwKKwl7IEtFWV9GOSwgICAgICAgS0VZX05FWFRTT05HLCAgICAgICBBUFBMRV9GTEFHX0ZLRVkgfSwKKwl7IEtFWV9GMTAsICAgICAgS0VZX01VVEUsICAgICAgICAgICBBUFBMRV9GTEFHX0ZLRVkgfSwKKwl7IEtFWV9GMTEsICAgICAgS0VZX1ZPTFVNRURPV04sICAgICBBUFBMRV9GTEFHX0ZLRVkgfSwKKwl7IEtFWV9GMTIsICAgICAgS0VZX1ZPTFVNRVVQLCAgICAgICBBUFBMRV9GTEFHX0ZLRVkgfSwKIAl7IEtFWV9VUCwgICAgICAgS0VZX1BBR0VVUCB9LAogCXsgS0VZX0RPV04sICAgICBLRVlfUEFHRURPV04gfSwKIAl7IEtFWV9MRUZULCAgICAgS0VZX0hPTUUgfSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaGlkL3VzYmhpZC9oaWQtY29yZS5jIGIvZHJpdmVycy9oaWQvdXNiaGlkL2hpZC1jb3JlLmMKaW5kZXggYjM4ZTU1OS4uZDk1OTc5ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9oaWQvdXNiaGlkL2hpZC1jb3JlLmMKKysrIGIvZHJpdmVycy9oaWQvdXNiaGlkL2hpZC1jb3JlLmMKQEAgLTI3OCw3ICsyNzgsNyBAQAogCQl1c2JoaWQtPnVyYmN0cmwtPnBpcGUgPSB1c2JfcmN2Y3RybHBpcGUoaGlkX3RvX3VzYl9kZXYoaGlkKSwgMCk7CiAJCW1heHBhY2tldCA9IHVzYl9tYXhwYWNrZXQoaGlkX3RvX3VzYl9kZXYoaGlkKSwgdXNiaGlkLT51cmJjdHJsLT5waXBlLCAwKTsKIAkJaWYgKG1heHBhY2tldCA+IDApIHsKLQkJCXBhZGxlbiA9IChsZW4gKyBtYXhwYWNrZXQgLSAxKSAvIG1heHBhY2tldDsKKwkJCXBhZGxlbiA9IERJVl9ST1VORF9VUChsZW4sIG1heHBhY2tldCk7CiAJCQlwYWRsZW4gKj0gbWF4cGFja2V0OwogCQkJaWYgKHBhZGxlbiA+IHVzYmhpZC0+YnVmc2l6ZSkKIAkJCQlwYWRsZW4gPSB1c2JoaWQtPmJ1ZnNpemU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2hpZC91c2JoaWQvaGlkLXF1aXJrcy5jIGIvZHJpdmVycy9oaWQvdXNiaGlkL2hpZC1xdWlya3MuYwppbmRleCBlNmQwNWY2Li5lMjlhMDU3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2hpZC91c2JoaWQvaGlkLXF1aXJrcy5jCisrKyBiL2RyaXZlcnMvaGlkL3VzYmhpZC9oaWQtcXVpcmtzLmMKQEAgLTM0NSw2ICszNDUsOSBAQAogI2RlZmluZSBVU0JfVkVORE9SX0lEX05BVElPTkFMX1NFTUlDT05EVUNUT1IgMHgwNDAwCiAjZGVmaW5lIFVTQl9ERVZJQ0VfSURfTl9TX0hBUk1PTlkgICAgICAgMHhjMzU5CiAKKyNkZWZpbmUgVVNCX1ZFTkRPUl9JRF9OQVRTVSAgICAgICAgICAgICAweDA4YjcKKyNkZWZpbmUgVVNCX0RFVklDRV9JRF9OQVRTVV9HQU1FUEFEICAgICAweDAwMDEKKwogI2RlZmluZSBVU0JfVkVORE9SX0lEX05FQwkJMHgwNzNlCiAjZGVmaW5lIFVTQl9ERVZJQ0VfSURfTkVDX1VTQl9HQU1FX1BBRAkweDAzMDEKIApAQCAtNDI2LDYgKzQyOSw3IEBACiAJeyBVU0JfVkVORE9SX0lEX0hBUFAsIFVTQl9ERVZJQ0VfSURfVUdDSV9EUklWSU5HLCBISURfUVVJUktfQkFEUEFEIHwgSElEX1FVSVJLX01VTFRJX0lOUFVUIH0sCiAJeyBVU0JfVkVORE9SX0lEX0hBUFAsIFVTQl9ERVZJQ0VfSURfVUdDSV9GTFlJTkcsIEhJRF9RVUlSS19CQURQQUQgfCBISURfUVVJUktfTVVMVElfSU5QVVQgfSwKIAl7IFVTQl9WRU5ET1JfSURfSEFQUCwgVVNCX0RFVklDRV9JRF9VR0NJX0ZJR0hUSU5HLCBISURfUVVJUktfQkFEUEFEIHwgSElEX1FVSVJLX01VTFRJX0lOUFVUIH0sCisJeyBVU0JfVkVORE9SX0lEX05BVFNVLCBVU0JfREVWSUNFX0lEX05BVFNVX0dBTUVQQUQsIEhJRF9RVUlSS19CQURQQUQgfSwKIAl7IFVTQl9WRU5ET1JfSURfTkVDLCBVU0JfREVWSUNFX0lEX05FQ19VU0JfR0FNRV9QQUQsIEhJRF9RVUlSS19CQURQQUQgfSwKIAl7IFVTQl9WRU5ET1JfSURfU0FJVEVLLCBVU0JfREVWSUNFX0lEX1NBSVRFS19SVU1CTEVQQUQsIEhJRF9RVUlSS19CQURQQUQgfSwKIAl7IFVTQl9WRU5ET1JfSURfVE9QTUFYLCBVU0JfREVWSUNFX0lEX1RPUE1BWF9DT0JSQVBBRCwgSElEX1FVSVJLX0JBRFBBRCB9LApAQCAtNjI0LDcgKzYyOCw3IEBACiAJeyBVU0JfVkVORE9SX0lEX0FQUExFLCBVU0JfREVWSUNFX0lEX0FQUExFX0FMVV9JU08sIEhJRF9RVUlSS19BUFBMRV9IQVNfRk4gfCBISURfUVVJUktfQVBQTEVfSVNPX0tFWUJPQVJEIH0sCiAJeyBVU0JfVkVORE9SX0lEX0FQUExFLCBVU0JfREVWSUNFX0lEX0FQUExFX0FMVV9KSVMsIEhJRF9RVUlSS19BUFBMRV9IQVNfRk4gfSwKIAl7IFVTQl9WRU5ET1JfSURfQVBQTEUsIFVTQl9ERVZJQ0VfSURfQVBQTEVfR0VZU0VSNF9IRl9BTlNJLCBISURfUVVJUktfQVBQTEVfSEFTX0ZOIHwgSElEX1FVSVJLX0lHTk9SRV9NT1VTRSB9LAotCXsgVVNCX1ZFTkRPUl9JRF9BUFBMRSwgVVNCX0RFVklDRV9JRF9BUFBMRV9HRVlTRVI0X0hGX0lTTywgSElEX1FVSVJLX0FQUExFX0hBU19GTiB8IEhJRF9RVUlSS19JR05PUkVfTU9VU0UgfCBISURfUVVJUktfQVBQTEVfSVNPX0tFWUJPQVJEIH0sCisJeyBVU0JfVkVORE9SX0lEX0FQUExFLCBVU0JfREVWSUNFX0lEX0FQUExFX0dFWVNFUjRfSEZfSVNPLCBISURfUVVJUktfQVBQTEVfSEFTX0ZOIHwgSElEX1FVSVJLX0lHTk9SRV9NT1VTRSB9LAogCXsgVVNCX1ZFTkRPUl9JRF9BUFBMRSwgVVNCX0RFVklDRV9JRF9BUFBMRV9HRVlTRVI0X0hGX0pJUywgSElEX1FVSVJLX0FQUExFX0hBU19GTiB8IEhJRF9RVUlSS19JR05PUkVfTU9VU0UgfSwKIAl7IFVTQl9WRU5ET1JfSURfQVBQTEUsIFVTQl9ERVZJQ0VfSURfQVBQTEVfQUxVX1dJUkVMRVNTX0FOU0ksIEhJRF9RVUlSS19BUFBMRV9IQVNfRk4gfSwKIAl7IFVTQl9WRU5ET1JfSURfQVBQTEUsIFVTQl9ERVZJQ0VfSURfQVBQTEVfQUxVX1dJUkVMRVNTX0lTTywgSElEX1FVSVJLX0FQUExFX0hBU19GTiB8IEhJRF9RVUlSS19BUFBMRV9JU09fS0VZQk9BUkQgfSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vS2NvbmZpZyBiL2RyaXZlcnMvaHdtb24vS2NvbmZpZwppbmRleCAzNjg4NzlmLi40ZGM3NmJjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL0tjb25maWcKKysrIGIvZHJpdmVycy9od21vbi9LY29uZmlnCkBAIC0zMzcsOCArMzM3LDkgQEAKIAloZWxwCiAJICBJZiB5b3Ugc2F5IHllcyBoZXJlIHlvdSBnZXQgc3VwcG9ydCBmb3IgdGhlIHRlbXBlcmF0dXJlIGFuZAogCSAgcG93ZXIgc2Vuc29ycyBpbiB2YXJpb3VzIElCTSBTeXN0ZW0gWCBzZXJ2ZXJzIHRoYXQgc3VwcG9ydAotCSAgUG93ZXJFeGVjdXRpdmUuICBTbyBmYXIgdGhpcyBpbmNsdWRlcyB0aGUgeDM1NTAsIHgzNjUwLCB4MzY1NSwKLQkgIHgzNzU1LCBhbmQgY2VydGFpbiBIUzIwIGJsYWRlcy4KKwkgIFBvd2VyRXhlY3V0aXZlLiAgU28gZmFyIHRoaXMgaW5jbHVkZXMgdGhlIHgzMzUwLCB4MzU1MCwgeDM2NTAsCisJICB4MzY1NSwgYW5kIHgzNzU1OyB0aGUgeDM4MDAsIHgzODUwLCBhbmQgeDM5NTAgbW9kZWxzIHRoYXQgaGF2ZQorCSAgUENJIEV4cHJlc3M7IGFuZCBzb21lIG9mIHRoZSBIUzJ4LCBMUzJ4LCBhbmQgUVMyeCBibGFkZXMuCiAKIAkgIFRoaXMgZHJpdmVyIGNhbiBhbHNvIGJlIGJ1aWx0IGFzIGEgbW9kdWxlLiAgSWYgc28sIHRoZSBtb2R1bGUKIAkgIHdpbGwgYmUgY2FsbGVkIGlibXBleC4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vaWJtcGV4LmMgYi9kcml2ZXJzL2h3bW9uL2libXBleC5jCmluZGV4IDljOWNkYjAuLjRlOWIxOWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vaWJtcGV4LmMKKysrIGIvZHJpdmVycy9od21vbi9pYm1wZXguYwpAQCAtMzI3LDEwICszMjcsMTQgQEAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBwb3dlcl9zZW5zb3JfbXVsdGlwbGllcihjb25zdCBjaGFyICpzZW5zb3JfaWQsIGludCBsZW4pCitzdGF0aWMgaW50IHBvd2VyX3NlbnNvcl9tdWx0aXBsaWVyKHN0cnVjdCBpYm1wZXhfYm1jX2RhdGEgKmRhdGEsCisJCQkJICAgY29uc3QgY2hhciAqc2Vuc29yX2lkLCBpbnQgbGVuKQogewogCWludCBpOwogCisJaWYgKGRhdGEtPnNlbnNvcl9tYWpvciA9PSAyKQorCQlyZXR1cm4gMTAwMDAwMDsKKwogCWZvciAoaSA9IFBFWF9TRU5TT1JfVFlQRV9MRU47IGkgPCBsZW4gLSAxOyBpKyspCiAJCWlmICghbWVtY21wKCZzZW5zb3JfaWRbaV0sIHdhdHRfc2Vuc29yX3NpZywgUEVYX01VTFRfTEVOKSkKIAkJCXJldHVybiAxMDAwMDAwOwpAQCAtMzk4LDE0ICs0MDIsMTUgQEAKIAkJCW51bV9wb3dlcisrOwogCQkJc2Vuc29yX2NvdW50ZXIgPSBudW1fcG93ZXI7CiAJCQlkYXRhLT5zZW5zb3JzW2ldLm11bHRpcGxpZXIgPQotCQkJCXBvd2VyX3NlbnNvcl9tdWx0aXBsaWVyKGRhdGEtPnJ4X21zZ19kYXRhLAotCQkJCQkJICAgICBkYXRhLT5yeF9tc2dfbGVuKTsKKwkJCQlwb3dlcl9zZW5zb3JfbXVsdGlwbGllcihkYXRhLAorCQkJCQkJCWRhdGEtPnJ4X21zZ19kYXRhLAorCQkJCQkJCWRhdGEtPnJ4X21zZ19sZW4pOwogCQl9IGVsc2UgaWYgKGlzX3RlbXBfc2Vuc29yKGRhdGEtPnJ4X21zZ19kYXRhLAogCQkJCQkgIGRhdGEtPnJ4X21zZ19sZW4pKSB7CiAJCQlzZW5zb3JfdHlwZSA9IFRFTVBfU0VOU09SOwogCQkJbnVtX3RlbXArKzsKIAkJCXNlbnNvcl9jb3VudGVyID0gbnVtX3RlbXA7Ci0JCQlkYXRhLT5zZW5zb3JzW2ldLm11bHRpcGxpZXIgPSAxOworCQkJZGF0YS0+c2Vuc29yc1tpXS5tdWx0aXBsaWVyID0gMTAwMDsKIAkJfSBlbHNlCiAJCQljb250aW51ZTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi93ODM3ODFkLmMgYi9kcml2ZXJzL2h3bW9uL3c4Mzc4MWQuYwppbmRleCA1Yzg1NjcwLi5mOTQyZWNkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL3c4Mzc4MWQuYworKysgYi9kcml2ZXJzL2h3bW9uL3c4Mzc4MWQuYwpAQCAtMTM2Nyw3ICsxMzY3LDggQEAKIAogCS8qIFJlc2VydmUgdGhlIElTQSByZWdpb24gKi8KIAlyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9JTywgMCk7Ci0JaWYgKCFyZXF1ZXN0X3JlZ2lvbihyZXMtPnN0YXJ0LCBXODM3ODFEX0VYVEVOVCwgInc4Mzc4MWQiKSkgeworCWlmICghcmVxdWVzdF9yZWdpb24ocmVzLT5zdGFydCArIFc4Mzc4MURfQUREUl9SRUdfT0ZGU0VULCAyLAorCQkJICAgICJ3ODM3ODFkIikpIHsKIAkJZXJyID0gLUVCVVNZOwogCQlnb3RvIGV4aXQ7CiAJfQpAQCAtMTQxNSw3ICsxNDE2LDcgQEAKIAlkZXZpY2VfcmVtb3ZlX2ZpbGUoJnBkZXYtPmRldiwgJmRldl9hdHRyX25hbWUpOwogCWtmcmVlKGRhdGEpOwogIGV4aXRfcmVsZWFzZV9yZWdpb246Ci0JcmVsZWFzZV9yZWdpb24ocmVzLT5zdGFydCwgVzgzNzgxRF9FWFRFTlQpOworCXJlbGVhc2VfcmVnaW9uKHJlcy0+c3RhcnQgKyBXODM3ODFEX0FERFJfUkVHX09GRlNFVCwgMik7CiAgZXhpdDoKIAlyZXR1cm4gZXJyOwogfQpAQCAtMTQyOSw3ICsxNDMwLDcgQEAKIAlzeXNmc19yZW1vdmVfZ3JvdXAoJnBkZXYtPmRldi5rb2JqLCAmdzgzNzgxZF9ncm91cCk7CiAJc3lzZnNfcmVtb3ZlX2dyb3VwKCZwZGV2LT5kZXYua29iaiwgJnc4Mzc4MWRfZ3JvdXBfb3B0KTsKIAlkZXZpY2VfcmVtb3ZlX2ZpbGUoJnBkZXYtPmRldiwgJmRldl9hdHRyX25hbWUpOwotCXJlbGVhc2VfcmVnaW9uKGRhdGEtPmNsaWVudC5hZGRyLCBXODM3ODFEX0VYVEVOVCk7CisJcmVsZWFzZV9yZWdpb24oZGF0YS0+Y2xpZW50LmFkZHIgKyBXODM3ODFEX0FERFJfUkVHX09GRlNFVCwgMik7CiAJa2ZyZWUoZGF0YSk7CiAKIAlyZXR1cm4gMDsKQEAgLTE3OTcsOCArMTc5OCwxNyBAQAogewogCWludCB2YWwsIHNhdmUsIGZvdW5kID0gMDsKIAotCWlmICghcmVxdWVzdF9yZWdpb24oYWRkcmVzcywgVzgzNzgxRF9FWFRFTlQsICJ3ODM3ODFkIikpCisJLyogV2UgaGF2ZSB0byByZXF1ZXN0IHRoZSByZWdpb24gaW4gdHdvIHBhcnRzIGJlY2F1c2Ugc29tZQorCSAgIGJvYXJkcyBkZWNsYXJlIGJhc2UrNCB0byBiYXNlKzcgYXMgYSBQTlAgZGV2aWNlICovCisJaWYgKCFyZXF1ZXN0X3JlZ2lvbihhZGRyZXNzLCA0LCAidzgzNzgxZCIpKSB7CisJCXByX2RlYnVnKCJ3ODM3ODFkOiBGYWlsZWQgdG8gcmVxdWVzdCBsb3cgcGFydCBvZiByZWdpb25cbiIpOwogCQlyZXR1cm4gMDsKKwl9CisJaWYgKCFyZXF1ZXN0X3JlZ2lvbihhZGRyZXNzICsgNCwgNCwgInc4Mzc4MWQiKSkgeworCQlwcl9kZWJ1ZygidzgzNzgxZDogRmFpbGVkIHRvIHJlcXVlc3QgaGlnaCBwYXJ0IG9mIHJlZ2lvblxuIik7CisJCXJlbGVhc2VfcmVnaW9uKGFkZHJlc3MsIDQpOworCQlyZXR1cm4gMDsKKwl9CiAKICNkZWZpbmUgUkVBTExZX1NMT1dfSU8KIAkvKiBXZSBuZWVkIHRoZSB0aW1lb3V0cyBmb3IgYXQgbGVhc3Qgc29tZSBXODM3ODFELWxpa2UKQEAgLTE4NzEsNyArMTg4MSw4IEBACiAJCQl2YWwgPT0gMHgzMCA/ICJXODM3ODJEIiA6ICJXODM3ODFEIiwgKGludClhZGRyZXNzKTsKIAogIHJlbGVhc2U6Ci0JcmVsZWFzZV9yZWdpb24oYWRkcmVzcywgVzgzNzgxRF9FWFRFTlQpOworCXJlbGVhc2VfcmVnaW9uKGFkZHJlc3MgKyA0LCA0KTsKKwlyZWxlYXNlX3JlZ2lvbihhZGRyZXNzLCA0KTsKIAlyZXR1cm4gZm91bmQ7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9LY29uZmlnIGIvZHJpdmVycy9pMmMvYnVzc2VzL0tjb25maWcKaW5kZXggNDc2YjBiYi4uNWZhOWMzYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9pMmMvYnVzc2VzL0tjb25maWcKKysrIGIvZHJpdmVycy9pMmMvYnVzc2VzL0tjb25maWcKQEAgLTEwMCw3ICsxMDAsNyBAQAogCiBjb25maWcgSTJDX0JMQUNLRklOX1RXSQogCXRyaXN0YXRlICJCbGFja2ZpbiBUV0kgSTJDIHN1cHBvcnQiCi0JZGVwZW5kcyBvbiBCRjUzNCB8fCBCRjUzNiB8fCBCRjUzNyB8fCBCRjU0eAorCWRlcGVuZHMgb24gQkY1MzQgfHwgQkY1MzYgfHwgQkY1MzcKIAloZWxwCiAJICBUaGlzIGlzIHRoZSBUV0kgSTJDIGRldmljZSBkcml2ZXIgZm9yIEJsYWNrZmluIDUzNC81MzYvNTM3LzU0eC4KIAkgIFRoaXMgZHJpdmVyIGNhbiBhbHNvIGJlIGJ1aWx0IGFzIGEgbW9kdWxlLiAgSWYgc28sIHRoZSBtb2R1bGUKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtYW1kNzU2LmMgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWFtZDc1Ni5jCmluZGV4IDU3M2FiZTQuLjJmYTQzMTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtYW1kNzU2LmMKKysrIGIvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1hbWQ3NTYuYwpAQCAtMzM1LDcgKzMzNSw3IEBACiAJdTggdGVtcDsKIAkKIAkvKiBkcml2ZXJfZGF0YSBtaWdodCBjb21lIGZyb20gdXNlci1zcGFjZSwgc28gY2hlY2sgaXQgKi8KLQlpZiAoaWQtPmRyaXZlcl9kYXRhID4gQVJSQVlfU0laRShjaGlwbmFtZSkpCisJaWYgKGlkLT5kcml2ZXJfZGF0YSA+PSBBUlJBWV9TSVpFKGNoaXBuYW1lKSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKIAlpZiAoYW1kNzU2X2lvcG9ydCkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1kYXZpbmNpLmMgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWRhdmluY2kuYwppbmRleCBjY2U1YTYxLi5mZGUyNjM0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWRhdmluY2kuYworKysgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWRhdmluY2kuYwpAQCAtMzgyLDkgKzM4Miw4IEBACiAJCQlicmVhazsKIAogCQljYXNlIERBVklOQ0lfSTJDX0lWUl9BUkRZOgotCQkJdyA9IGRhdmluY2lfaTJjX3JlYWRfcmVnKGRldiwgREFWSU5DSV9JMkNfU1RSX1JFRyk7Ci0JCQlNT0RfUkVHX0JJVCh3LCBEQVZJTkNJX0kyQ19TVFJfQVJEWSwgMSk7Ci0JCQlkYXZpbmNpX2kyY193cml0ZV9yZWcoZGV2LCBEQVZJTkNJX0kyQ19TVFJfUkVHLCB3KTsKKwkJCWRhdmluY2lfaTJjX3dyaXRlX3JlZyhkZXYsCisJCQkJREFWSU5DSV9JMkNfU1RSX1JFRywgREFWSU5DSV9JMkNfU1RSX0FSRFkpOwogCQkJY29tcGxldGUoJmRldi0+Y21kX2NvbXBsZXRlKTsKIAkJCWJyZWFrOwogCkBAIC0zOTcsMTIgKzM5Niw5IEBACiAJCQkJaWYgKGRldi0+YnVmX2xlbikKIAkJCQkJY29udGludWU7CiAKLQkJCQl3ID0gZGF2aW5jaV9pMmNfcmVhZF9yZWcoZGV2LAotCQkJCQkJCSBEQVZJTkNJX0kyQ19TVFJfUkVHKTsKLQkJCQlNT0RfUkVHX0JJVCh3LCBEQVZJTkNJX0kyQ19JTVJfUlJEWSwgMCk7CiAJCQkJZGF2aW5jaV9pMmNfd3JpdGVfcmVnKGRldiwKLQkJCQkJCSAgICAgIERBVklOQ0lfSTJDX1NUUl9SRUcsCi0JCQkJCQkgICAgICB3KTsKKwkJCQkJREFWSU5DSV9JMkNfU1RSX1JFRywKKwkJCQkJREFWSU5DSV9JMkNfSU1SX1JSRFkpOwogCQkJfSBlbHNlCiAJCQkJZGV2X2VycihkZXYtPmRldiwgIlJEUiBJUlEgd2hpbGUgbm8gIgogCQkJCQkiZGF0YSByZXF1ZXN0ZWRcbiIpOwpAQCAtNDI4LDkgKzQyNCw4IEBACiAJCQlicmVhazsKIAogCQljYXNlIERBVklOQ0lfSTJDX0lWUl9TQ0Q6Ci0JCQl3ID0gZGF2aW5jaV9pMmNfcmVhZF9yZWcoZGV2LCBEQVZJTkNJX0kyQ19TVFJfUkVHKTsKLQkJCU1PRF9SRUdfQklUKHcsIERBVklOQ0lfSTJDX1NUUl9TQ0QsIDEpOwotCQkJZGF2aW5jaV9pMmNfd3JpdGVfcmVnKGRldiwgREFWSU5DSV9JMkNfU1RSX1JFRywgdyk7CisJCQlkYXZpbmNpX2kyY193cml0ZV9yZWcoZGV2LAorCQkJCURBVklOQ0lfSTJDX1NUUl9SRUcsIERBVklOQ0lfSTJDX1NUUl9TQ0QpOwogCQkJY29tcGxldGUoJmRldi0+Y21kX2NvbXBsZXRlKTsKIAkJCWJyZWFrOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWlibV9paWMuYyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaWJtX2lpYy5jCmluZGV4IDdjN2ViMGMuLjIyYmIyNDcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaWJtX2lpYy5jCisrKyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaWJtX2lpYy5jCkBAIC01NSw3ICs1NSw3IEBACiAKIHN0YXRpYyBpbnQgaWljX2ZvcmNlX2Zhc3Q7CiBtb2R1bGVfcGFyYW0oaWljX2ZvcmNlX2Zhc3QsIGJvb2wsIDApOwotTU9EVUxFX1BBUk1fREVTQyhpaWNfZmFzdF9wb2xsLCAiRm9yY2UgZmFzdCBtb2RlICg0MDAga0h6KSIpOworTU9EVUxFX1BBUk1fREVTQyhpaWNfZm9yY2VfZmFzdCwgIkZvcmNlIGZhc3QgbW9kZSAoNDAwIGtIeikiKTsKIAogI2RlZmluZSBEQkdfTEVWRUwgMAogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLW9tYXAuYyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtb21hcC5jCmluZGV4IGRhNjYzOTcuLjdiYTMxNzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtb21hcC5jCisrKyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtb21hcC5jCkBAIC0xMjgsNiArMTI4LDggQEAKIAlzaXplX3QJCQlidWZfbGVuOwogCXN0cnVjdCBpMmNfYWRhcHRlcglhZGFwdGVyOwogCXVuc2lnbmVkCQlyZXYxOjE7CisJdW5zaWduZWQJCWlkbGU6MTsKKwl1MTYJCQlpZXN0YXRlOwkvKiBTYXZlZCBpbnRlcnJ1cHQgcmVnaXN0ZXIgKi8KIH07CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBvbWFwX2kyY193cml0ZV9yZWcoc3RydWN0IG9tYXBfaTJjX2RldiAqaTJjX2RldiwKQEAgLTE3NCwxOCArMTc2LDMwIEBACiAJfQogfQogCi1zdGF0aWMgdm9pZCBvbWFwX2kyY19lbmFibGVfY2xvY2tzKHN0cnVjdCBvbWFwX2kyY19kZXYgKmRldikKK3N0YXRpYyB2b2lkIG9tYXBfaTJjX3VuaWRsZShzdHJ1Y3Qgb21hcF9pMmNfZGV2ICpkZXYpCiB7CiAJaWYgKGRldi0+aWNsayAhPSBOVUxMKQogCQljbGtfZW5hYmxlKGRldi0+aWNsayk7CiAJY2xrX2VuYWJsZShkZXYtPmZjbGspOworCWlmIChkZXYtPmllc3RhdGUpCisJCW9tYXBfaTJjX3dyaXRlX3JlZyhkZXYsIE9NQVBfSTJDX0lFX1JFRywgZGV2LT5pZXN0YXRlKTsKKwlkZXYtPmlkbGUgPSAwOwogfQogCi1zdGF0aWMgdm9pZCBvbWFwX2kyY19kaXNhYmxlX2Nsb2NrcyhzdHJ1Y3Qgb21hcF9pMmNfZGV2ICpkZXYpCitzdGF0aWMgdm9pZCBvbWFwX2kyY19pZGxlKHN0cnVjdCBvbWFwX2kyY19kZXYgKmRldikKIHsKKwl1MTYgaXY7CisKKwlkZXYtPmlkbGUgPSAxOworCWRldi0+aWVzdGF0ZSA9IG9tYXBfaTJjX3JlYWRfcmVnKGRldiwgT01BUF9JMkNfSUVfUkVHKTsKKwlvbWFwX2kyY193cml0ZV9yZWcoZGV2LCBPTUFQX0kyQ19JRV9SRUcsIDApOworCWlmIChkZXYtPnJldjEpCisJCWl2ID0gb21hcF9pMmNfcmVhZF9yZWcoZGV2LCBPTUFQX0kyQ19JVl9SRUcpOwkvKiBSZWFkIGNsZWFycyAqLworCWVsc2UKKwkJb21hcF9pMmNfd3JpdGVfcmVnKGRldiwgT01BUF9JMkNfU1RBVF9SRUcsIGRldi0+aWVzdGF0ZSk7CisJY2xrX2Rpc2FibGUoZGV2LT5mY2xrKTsKIAlpZiAoZGV2LT5pY2xrICE9IE5VTEwpCiAJCWNsa19kaXNhYmxlKGRldi0+aWNsayk7Ci0JY2xrX2Rpc2FibGUoZGV2LT5mY2xrKTsKIH0KIAogc3RhdGljIGludCBvbWFwX2kyY19pbml0KHN0cnVjdCBvbWFwX2kyY19kZXYgKmRldikKQEAgLTM2MCw3ICszNzQsNyBAQAogCWludCBpOwogCWludCByOwogCi0Jb21hcF9pMmNfZW5hYmxlX2Nsb2NrcyhkZXYpOworCW9tYXBfaTJjX3VuaWRsZShkZXYpOwogCiAJaWYgKChyID0gb21hcF9pMmNfd2FpdF9mb3JfYmIoZGV2KSkgPCAwKQogCQlnb3RvIG91dDsKQEAgLTM3NCw3ICszODgsNyBAQAogCWlmIChyID09IDApCiAJCXIgPSBudW07CiBvdXQ6Ci0Jb21hcF9pMmNfZGlzYWJsZV9jbG9ja3MoZGV2KTsKKwlvbWFwX2kyY19pZGxlKGRldik7CiAJcmV0dXJuIHI7CiB9CiAKQEAgLTQwMyw2ICs0MTcsOSBAQAogCXN0cnVjdCBvbWFwX2kyY19kZXYgKmRldiA9IGRldl9pZDsKIAl1MTYgaXYsIHc7CiAKKwlpZiAoZGV2LT5pZGxlKQorCQlyZXR1cm4gSVJRX05PTkU7CisKIAlpdiA9IG9tYXBfaTJjX3JlYWRfcmVnKGRldiwgT01BUF9JMkNfSVZfUkVHKTsKIAlzd2l0Y2ggKGl2KSB7CiAJY2FzZSAweDAwOgkvKiBOb25lICovCkBAIC00NTcsNiArNDc0LDkgQEAKIAl1MTYgc3RhdCwgdzsKIAlpbnQgY291bnQgPSAwOwogCisJaWYgKGRldi0+aWRsZSkKKwkJcmV0dXJuIElSUV9OT05FOworCiAJYml0cyA9IG9tYXBfaTJjX3JlYWRfcmVnKGRldiwgT01BUF9JMkNfSUVfUkVHKTsKIAl3aGlsZSAoKHN0YXQgPSAob21hcF9pMmNfcmVhZF9yZWcoZGV2LCBPTUFQX0kyQ19TVEFUX1JFRykpKSAmIGJpdHMpIHsKIAkJZGV2X2RiZyhkZXYtPmRldiwgIklSUSAoSVNSID0gMHglMDR4KVxuIiwgc3RhdCk7CkBAIC01NzUsNyArNTk1LDcgQEAKIAlpZiAoKHIgPSBvbWFwX2kyY19nZXRfY2xvY2tzKGRldikpICE9IDApCiAJCWdvdG8gZXJyX2ZyZWVfbWVtOwogCi0Jb21hcF9pMmNfZW5hYmxlX2Nsb2NrcyhkZXYpOworCW9tYXBfaTJjX3VuaWRsZShkZXYpOwogCiAJaWYgKGNwdV9pc19vbWFwMTV4eCgpKQogCQlkZXYtPnJldjEgPSBvbWFwX2kyY19yZWFkX3JlZyhkZXYsIE9NQVBfSTJDX1JFVl9SRUcpIDwgMHgyMDsKQEAgLTYxMCw3ICs2MzAsNyBAQAogCQlnb3RvIGVycl9mcmVlX2lycTsKIAl9CiAKLQlvbWFwX2kyY19kaXNhYmxlX2Nsb2NrcyhkZXYpOworCW9tYXBfaTJjX2lkbGUoZGV2KTsKIAogCXJldHVybiAwOwogCkBAIC02MTgsNyArNjM4LDcgQEAKIAlmcmVlX2lycShkZXYtPmlycSwgZGV2KTsKIGVycl91bnVzZV9jbG9ja3M6CiAJb21hcF9pMmNfd3JpdGVfcmVnKGRldiwgT01BUF9JMkNfQ09OX1JFRywgMCk7Ci0Jb21hcF9pMmNfZGlzYWJsZV9jbG9ja3MoZGV2KTsKKwlvbWFwX2kyY19pZGxlKGRldik7CiAJb21hcF9pMmNfcHV0X2Nsb2NrcyhkZXYpOwogZXJyX2ZyZWVfbWVtOgogCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIE5VTEwpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy10aW55LXVzYi5jIGIvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy10aW55LXVzYi5jCmluZGV4IGNiOWFiZTcuLmIxYzA1MGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtdGlueS11c2IuYworKysgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLXRpbnktdXNiLmMKQEAgLTEzMSwxMSArMTMxLDE1IEBACiAKIC8qIC0tLS0tIGJlZ2luIG9mIHVzYiBsYXllciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLS8qIFRoZSB1c2IgaTJjIGludGVyZmFjZSB1c2VzIGEgdmlkL3BpZCBwYWlyIGRvbmF0ZWQgYnkgKi8KLS8qIEZ1dHVyZSBUZWNobm9sb2d5IERldmljZXMgSW50ZXJuYXRpb25hbCBMdGQuICovCisvKgorICogSW5pdGlhbGx5IHRoZSB1c2IgaTJjIGludGVyZmFjZSB1c2VzIGEgdmlkL3BpZCBwYWlyIGRvbmF0ZWQgYnkKKyAqIEZ1dHVyZSBUZWNobm9sb2d5IERldmljZXMgSW50ZXJuYXRpb25hbCBMdGQuLCBsYXRlciBhIHBhaXIgd2FzCisgKiBib3VnaHQgZnJvbSBFWlByb3RvdHlwZXMKKyAqLwogc3RhdGljIHN0cnVjdCB1c2JfZGV2aWNlX2lkIGkyY190aW55X3VzYl90YWJsZSBbXSA9IHsKLQl7IFVTQl9ERVZJQ0UoMHgwNDAzLCAweGM2MzEpIH0sCi0JeyB9CQkJLyogVGVybWluYXRpbmcgZW50cnkgKi8KKwl7IFVTQl9ERVZJQ0UoMHgwNDAzLCAweGM2MzEpIH0sICAgLyogRlRESSAqLworCXsgVVNCX0RFVklDRSgweDFjNDAsIDB4MDUzNCkgfSwgICAvKiBFWlByb3RvdHlwZXMgKi8KKwl7IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVGVybWluYXRpbmcgZW50cnkgKi8KIH07CiAKIE1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBpMmNfdGlueV91c2JfdGFibGUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvY2hpcHMvTWFrZWZpbGUgYi9kcml2ZXJzL2kyYy9jaGlwcy9NYWtlZmlsZQppbmRleCA1MDFmMDBjLi5lNDdhY2EwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2kyYy9jaGlwcy9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2kyYy9jaGlwcy9NYWtlZmlsZQpAQCAtMSw2ICsxLDEzIEBACiAjCiAjIE1ha2VmaWxlIGZvciBtaXNjZWxsYW5lb3VzIEkyQyBjaGlwIGRyaXZlcnMuCiAjCisjIFRoaW5rIHR3aWNlIGJlZm9yZSB5b3UgYWRkIGEgbmV3IGRyaXZlciB0byB0aGlzIGRpcmVjdG9yeS4KKyMgRGV2aWNlIGRyaXZlcnMgYXJlIGJldHRlciBncm91cGVkIGFjY29yZGluZyB0byB0aGUgZnVuY3Rpb25hbGl0eSB0aGV5CisjIGltcGxlbWVudCByYXRoZXIgdGhhbiB0byB0aGUgYnVzIHRoZXkgYXJlIGNvbm5lY3RlZCB0by4gSW4gcGFydGljdWxhcjoKKyMgKiBIYXJkd2FyZSBtb25pdG9yaW5nIGNoaXAgZHJpdmVycyBnbyB0byBkcml2ZXJzL2h3bW9uCisjICogUlRDIGNoaXAgZHJpdmVycyBnbyB0byBkcml2ZXJzL3J0YworIyAqIEkvTyBleHBhbmRlciBkcml2ZXJzIGdvIHRvIGRyaXZlcnMvZ3BpbworIwogCiBvYmotJChDT05GSUdfRFMxNjgyKQkJKz0gZHMxNjgyLm8KIG9iai0kKENPTkZJR19TRU5TT1JTX0VFUFJPTSkJKz0gZWVwcm9tLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaTJjL2kyYy1jb3JlLmMgYi9kcml2ZXJzL2kyYy9pMmMtY29yZS5jCmluZGV4IDk2ZGEyMmUuLjhiNjQ1YzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaTJjL2kyYy1jb3JlLmMKKysrIGIvZHJpdmVycy9pMmMvaTJjLWNvcmUuYwpAQCAtOTAsMTIgKzkwLDE2IEBACiB7CiAJc3RydWN0IGkyY19jbGllbnQJKmNsaWVudCA9IHRvX2kyY19jbGllbnQoZGV2KTsKIAlzdHJ1Y3QgaTJjX2RyaXZlcgkqZHJpdmVyID0gdG9faTJjX2RyaXZlcihkZXYtPmRyaXZlcik7CisJaW50IHN0YXR1czsKIAogCWlmICghZHJpdmVyLT5wcm9iZSkKIAkJcmV0dXJuIC1FTk9ERVY7CiAJY2xpZW50LT5kcml2ZXIgPSBkcml2ZXI7CiAJZGV2X2RiZyhkZXYsICJwcm9iZVxuIik7Ci0JcmV0dXJuIGRyaXZlci0+cHJvYmUoY2xpZW50KTsKKwlzdGF0dXMgPSBkcml2ZXItPnByb2JlKGNsaWVudCk7CisJaWYgKHN0YXR1cykKKwkJY2xpZW50LT5kcml2ZXIgPSBOVUxMOworCXJldHVybiBzdGF0dXM7CiB9CiAKIHN0YXRpYyBpbnQgaTJjX2RldmljZV9yZW1vdmUoc3RydWN0IGRldmljZSAqZGV2KQpAQCAtNDg1LDggKzQ4OSw4IEBACiAgKiBDb250ZXh0OiBjYW4gc2xlZXAKICAqCiAgKiBUaGlzIHJvdXRpbmUgaXMgdXNlZCB0byBkZWNsYXJlIGFuIEkyQyBhZGFwdGVyIHdoZW4gaXRzIGJ1cyBudW1iZXIKLSAqIG1hdHRlcnMuICBFeGFtcGxlOiBmb3IgSTJDIGFkYXB0ZXJzIGZyb20gc3lzdGVtLW9uLWNoaXAgQ1BVcywgb3IKLSAqIG90aGVyd2lzZSBidWlsdCBpbiB0byB0aGUgc3lzdGVtJ3MgbWFpbmJvYXJkLCBhbmQgd2hlcmUgaTJjX2JvYXJkX2luZm8KKyAqIG1hdHRlcnMuICBGb3IgZXhhbXBsZSwgdXNlIGl0IGZvciBJMkMgYWRhcHRlcnMgZnJvbSBzeXN0ZW0tb24tY2hpcCBDUFVzLAorICogb3Igb3RoZXJ3aXNlIGJ1aWx0IGluIHRvIHRoZSBzeXN0ZW0ncyBtYWluYm9hcmQsIGFuZCB3aGVyZSBpMmNfYm9hcmRfaW5mbwogICogaXMgdXNlZCB0byBwcm9wZXJseSBjb25maWd1cmUgSTJDIGRldmljZXMuCiAgKgogICogSWYgbm8gZGV2aWNlcyBoYXZlIHByZS1iZWVuIGRlY2xhcmVkIGZvciB0aGlzIGJ1cywgdGhlbiBiZSBzdXJlIHRvCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lkZS9hcm0vaWRlX2FybS5jIGIvZHJpdmVycy9pZGUvYXJtL2lkZV9hcm0uYwppbmRleCA0M2E3MGU5Li5iZTlmZjczIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lkZS9hcm0vaWRlX2FybS5jCisrKyBiL2RyaXZlcnMvaWRlL2FybS9pZGVfYXJtLmMKQEAgLTQ2LDMgKzQ2LDUgQEAKIH0KIAogbW9kdWxlX2luaXQoaWRlX2FybV9pbml0KTsKKworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pZGUvY3Jpcy9pZGUtY3Jpcy5jIGIvZHJpdmVycy9pZGUvY3Jpcy9pZGUtY3Jpcy5jCmluZGV4IGU3OWJmOGYuLmM4ZmZiYWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWRlL2NyaXMvaWRlLWNyaXMuYworKysgYi9kcml2ZXJzL2lkZS9jcmlzL2lkZS1jcmlzLmMKQEAgLTEwNjcsMyArMTA2Nyw1IEBACiB9CiAKIG1vZHVsZV9pbml0KGluaXRfZTEwMF9pZGUpOworCitNT0RVTEVfTElDRU5TRSgiR1BMIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lkZS9oODMwMC9pZGUtaDgzMDAuYyBiL2RyaXZlcnMvaWRlL2g4MzAwL2lkZS1oODMwMC5jCmluZGV4IDUyMGFlYzAuLjQxMDhlYzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWRlL2g4MzAwL2lkZS1oODMwMC5jCisrKyBiL2RyaXZlcnMvaWRlL2g4MzAwL2lkZS1oODMwMC5jCkBAIC0xMTAsNiArMTEwLDcgQEAKIAlpZGVfaW5pdF9wb3J0X2RhdGEoaHdpZiwgaW5kZXgpOwogCWlkZV9pbml0X3BvcnRfaHcoaHdpZiwgJmh3KTsKIAlod2lmX3NldHVwKGh3aWYpOworCWh3aWYtPmhvc3RfZmxhZ3MgPSBJREVfSEZMQUdfTk9fSU9fMzJCSVQ7CiAJcHJpbnRrKEtFUk5fSU5GTyAiaWRlJWQ6IEg4LzMwMCBnZW5lcmljIElERSBpbnRlcmZhY2VcbiIsIGluZGV4KTsKIAogCWlkeFswXSA9IGluZGV4OwpAQCAtMTI1LDMgKzEyNiw1IEBACiB9CiAKIG1vZHVsZV9pbml0KGg4MzAwX2lkZV9pbml0KTsKKworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pZGUvaWRlLWlvcHMuYyBiL2RyaXZlcnMvaWRlL2lkZS1pb3BzLmMKaW5kZXggYzQxOTI2Ni4uZTc3Y2VlMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pZGUvaWRlLWlvcHMuYworKysgYi9kcml2ZXJzL2lkZS9pZGUtaW9wcy5jCkBAIC01OTUsNiArNTk1LDcgQEAKIAogCS8qCiAJICogRklYTUU6CisJICogLSBjaGFuZ2UgbWFzdGVyL3NsYXZlIElERU5USUZZIG9yZGVyCiAJICogLSBmb3JjZSBiaXQxMyAoODBjIGNhYmxlIHByZXNlbnQpIGNoZWNrIGFsc28gZm9yICFpdmIgZGV2aWNlcwogCSAqICAgKHVubGVzcyB0aGUgc2xhdmUgZGV2aWNlIGlzIHByZS1BVEEzKQogCSAqLwpAQCAtNjU3LDcgKzY1OCw3IEBACiAJCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKIAkJcmV0dXJuIDA7CiAJfQotCWF0YV9pbnB1dF9kYXRhKGRyaXZlLCBpZCwgU0VDVE9SX1dPUkRTKTsKKwlod2lmLT5hdGFfaW5wdXRfZGF0YShkcml2ZSwgaWQsIFNFQ1RPUl9XT1JEUyk7CiAJKHZvaWQpaWRlX3JlYWRfc3RhdHVzKGRyaXZlKTsJLyogY2xlYXIgZHJpdmUgSVJRICovCiAJbG9jYWxfaXJxX2VuYWJsZSgpOwogCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWRlL2lkZS1saWIuYyBiL2RyaXZlcnMvaWRlL2lkZS1saWIuYwppbmRleCAyOWUyYzk3Li43MDMxYThkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lkZS9pZGUtbGliLmMKKysrIGIvZHJpdmVycy9pZGUvaWRlLWxpYi5jCkBAIC0xMjIsNyArMTIyLDYgQEAKIAljb25zdCBjaGFyCSpuYW1lOwogCWludAkJcGlvOwogfSBpZGVfcGlvX2JsYWNrbGlzdCBbXSA9IHsKLS8qCXsgIkNvbm5lciBQZXJpcGhlcmFscyAxMjc1TUIgLSBDRlMxMjc1QSIsIDQgfSwgKi8KIAl7ICJDb25uZXIgUGVyaXBoZXJhbHMgNTQwTUIgLSBDRlM1NDBBIiwgMyB9LAogCiAJeyAiV0RDIEFDMjcwMCIsICAzIH0sCkBAIC0xMzgsMTAgKzEzNyw4IEBACiAJeyAiV0RDIEFDMTE3MCIsICAxIH0sCiAJeyAiV0RDIEFDMTIxMCIsICAxIH0sCiAJeyAiV0RDIEFDMjgwIiwgICAwIH0sCi0vKgl7ICJXREMgQUMyMTAwMCIsIDQgfSwgKi8KIAl7ICJXREMgQUMzMTAwMCIsIDMgfSwKIAl7ICJXREMgQUMzMTIwMCIsIDMgfSwKLS8qCXsgIldEQyBBQzMxNjAwIiwgNCB9LCAqLwogCiAJeyAiTWF4dG9yIDcxMzEgQVQiLCAxIH0sCiAJeyAiTWF4dG9yIDcxNzEgQVQiLCAxIH0sCkBAIC0xNTUsMTMgKzE1Miw2IEBACiAJeyAiU0FNU1VORyBTSEQtMzEyMkEiLCAxIH0sCiAJeyAiU0FNU1VORyBTSEQtMzE3MkEiLCAxIH0sCiAKLS8qCXsgIlNUNTEwODBBIiwgNCB9LAotICoJeyAiU1Q1MTI3MEEiLCA0IH0sCi0gKgl7ICJTVDMxMjIwQSIsIDQgfSwKLSAqCXsgIlNUMzE2NDBBIiwgNCB9LAotICoJeyAiU1QzMjE0MEEiLCA0IH0sCi0gKgl7ICJTVDM3ODBBIiwgIDQgfSwKLSAqLwogCXsgIlNUNTY2MEEiLCAgMyB9LAogCXsgIlNUMzY2MEEiLCAgMyB9LAogCXsgIlNUMzYzMEEiLCAgMyB9LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pZGUvaWRlLXBucC5jIGIvZHJpdmVycy9pZGUvaWRlLXBucC5jCmluZGV4IGIxNjNiMmUuLmMxNGJiNTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWRlL2lkZS1wbnAuYworKysgYi9kcml2ZXJzL2lkZS9pZGUtcG5wLmMKQEAgLTg2LDMgKzg2LDUgQEAKIAogbW9kdWxlX2luaXQocG5waWRlX2luaXQpOwogbW9kdWxlX2V4aXQocG5waWRlX2V4aXQpOworCitNT0RVTEVfTElDRU5TRSgiR1BMIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lkZS9pZGUtcHJvYmUuYyBiL2RyaXZlcnMvaWRlL2lkZS1wcm9iZS5jCmluZGV4IDE5NGVjYjAuLjQ3YTExNDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWRlL2lkZS1wcm9iZS5jCisrKyBiL2RyaXZlcnMvaWRlL2lkZS1wcm9iZS5jCkBAIC03NzQsOSArNzc0LDEwIEBACiAJCXByaW50ayhLRVJOX0RFQlVHICIlczogV2FpdCBmb3IgcmVhZHkgZmFpbGVkIGJlZm9yZSBwcm9iZSAhXG4iLCBod2lmLT5uYW1lKTsKIAogCS8qCi0JICogTmVlZCB0byBwcm9iZSBzbGF2ZSBkZXZpY2UgZmlyc3QgdG8gbWFrZSBpdCByZWxlYXNlIFBESUFHLS4KKwkgKiBTZWNvbmQgZHJpdmUgc2hvdWxkIG9ubHkgZXhpc3QgaWYgZmlyc3QgZHJpdmUgd2FzIGZvdW5kLAorCSAqIGJ1dCBhIGxvdCBvZiBjZHJvbSBkcml2ZXMgYXJlIGNvbmZpZ3VyZWQgYXMgc2luZ2xlIHNsYXZlcy4KIAkgKi8KLQlmb3IgKHVuaXQgPSBNQVhfRFJJVkVTIC0gMTsgdW5pdCA+PSAwOyB1bml0LS0pIHsKKwlmb3IgKHVuaXQgPSAwOyB1bml0IDwgTUFYX0RSSVZFUzsgKyt1bml0KSB7CiAJCWlkZV9kcml2ZV90ICpkcml2ZSA9ICZod2lmLT5kcml2ZXNbdW5pdF07CiAJCWRyaXZlLT5kbiA9IChod2lmLT5jaGFubmVsID8gMiA6IDApICsgdW5pdDsKIAkJKHZvaWQpIHByb2JlX2Zvcl9kcml2ZShkcml2ZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lkZS9pZGUtdGFwZS5jIGIvZHJpdmVycy9pZGUvaWRlLXRhcGUuYwppbmRleCA0M2UwZTA1Li4wNTk4ZWNmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lkZS9pZGUtdGFwZS5jCisrKyBiL2RyaXZlcnMvaWRlL2lkZS10YXBlLmMKQEAgLTM3NjUsMTEgKzM3NjUsNiBAQAogCWctPmZvcHMgPSAmaWRldGFwZV9ibG9ja19vcHM7CiAJaWRlX3JlZ2lzdGVyX3JlZ2lvbihnKTsKIAotCXByaW50ayhLRVJOX1dBUk5JTkcgIkl0IGlzIHBvc3NpYmxlIHRoYXQgdGhpcyBkcml2ZXIgZG9lcyBub3QgaGF2ZSBhbnkiCi0JCSIgdXNlcnMgYW55bW9yZSBhbmQsIGFzIGEgcmVzdWx0LCBpdCB3aWxsIGJlIFJFTU9WRUQgc29vbi4iCi0JCSIgUGxlYXNlIG5vdGlmeSBCYXJ0IDxiem9sbmllckBnbWFpbC5jb20+IG9yIEJvcmlzIgotCQkiIDxwZXRrb3ZiYkBnbWFpbC5jb20+IGluIGNhc2UgeW91IHN0aWxsIG5lZWQgaXQuXG4iKTsKLQogCXJldHVybiAwOwogCiBvdXRfZnJlZV90YXBlOgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pZGUvaWRlLXRhc2tmaWxlLmMgYi9kcml2ZXJzL2lkZS9pZGUtdGFza2ZpbGUuYwppbmRleCAwNTE4YTJlLi40Yzg2YThkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lkZS9pZGUtdGFza2ZpbGUuYworKysgYi9kcml2ZXJzL2lkZS9pZGUtdGFza2ZpbGUuYwpAQCAtNDIzLDYgKzQyMywyNSBAQAogfQogCiAvKgorICogV2UgZ290IGFuIGludGVycnVwdCBvbiBhIHRhc2tfaW4gY2FzZSwgYnV0IG5vIGVycm9ycyBhbmQgbm8gRFJRLgorICoKKyAqIEl0IG1pZ2h0IGJlIGEgc3B1cmlvdXMgaXJxIChzaGFyZWQgaXJxKSwgYnV0IGl0IG1pZ2h0IGJlIGEKKyAqIGNvbW1hbmQgdGhhdCBoYWQgbm8gb3V0cHV0LgorICovCitzdGF0aWMgaWRlX3N0YXJ0c3RvcF90IHRhc2tfaW5fdW5leHBlY3RlZChpZGVfZHJpdmVfdCAqZHJpdmUsIHN0cnVjdCByZXF1ZXN0ICpycSwgdTggc3RhdCkKK3sKKwkvKiBDb21tYW5kIGFsbCBkb25lPyAqLworCWlmIChPS19TVEFUKHN0YXQsIFJFQURZX1NUQVQsIEJVU1lfU1RBVCkpIHsKKwkJdGFza19lbmRfcmVxdWVzdChkcml2ZSwgcnEsIHN0YXQpOworCQlyZXR1cm4gaWRlX3N0b3BwZWQ7CisJfQorCisJLyogQXNzdW1lIGl0IHdhcyBhIHNwdXJpb3VzIGlycSAqLworCWlkZV9zZXRfaGFuZGxlcihkcml2ZSwgJnRhc2tfaW5faW50ciwgV0FJVF9XT1JTVENBU0UsIE5VTEwpOworCXJldHVybiBpZGVfc3RhcnRlZDsKK30KKworLyoKICAqIEhhbmRsZXIgZm9yIGNvbW1hbmQgd2l0aCBQSU8gZGF0YS1pbiBwaGFzZSAoUmVhZC9SZWFkIE11bHRpcGxlKS4KICAqLwogc3RhdGljIGlkZV9zdGFydHN0b3BfdCB0YXNrX2luX2ludHIoaWRlX2RyaXZlX3QgKmRyaXZlKQpAQCAtNDMxLDE4ICs0NTAsMTcgQEAKIAlzdHJ1Y3QgcmVxdWVzdCAqcnEgPSBIV0dST1VQKGRyaXZlKS0+cnE7CiAJdTggc3RhdCA9IGlkZV9yZWFkX3N0YXR1cyhkcml2ZSk7CiAKLQkvKiBuZXcgd2F5IGZvciBkZWFsaW5nIHdpdGggcHJlbWF0dXJlIHNoYXJlZCBQQ0kgaW50ZXJydXB0cyAqLwotCWlmICghT0tfU1RBVChzdGF0LCBEUlFfU1RBVCwgQkFEX1JfU1RBVCkpIHsKLQkJaWYgKHN0YXQgJiAoRVJSX1NUQVQgfCBEUlFfU1RBVCkpCi0JCQlyZXR1cm4gdGFza19lcnJvcihkcml2ZSwgcnEsIF9fRlVOQ1RJT05fXywgc3RhdCk7Ci0JCS8qIE5vIGRhdGEgeWV0LCBzbyB3YWl0IGZvciBhbm90aGVyIElSUS4gKi8KLQkJaWRlX3NldF9oYW5kbGVyKGRyaXZlLCAmdGFza19pbl9pbnRyLCBXQUlUX1dPUlNUQ0FTRSwgTlVMTCk7Ci0JCXJldHVybiBpZGVfc3RhcnRlZDsKLQl9CisJLyogRXJyb3I/ICovCisJaWYgKHN0YXQgJiBFUlJfU1RBVCkKKwkJcmV0dXJuIHRhc2tfZXJyb3IoZHJpdmUsIHJxLCBfX0ZVTkNUSU9OX18sIHN0YXQpOworCisJLyogRGlkbid0IHdhbnQgYW55IGRhdGE/IE9kZC4gKi8KKwlpZiAoIShzdGF0ICYgRFJRX1NUQVQpKQorCQlyZXR1cm4gdGFza19pbl91bmV4cGVjdGVkKGRyaXZlLCBycSwgc3RhdCk7CiAKIAlpZGVfcGlvX2RhdGFibG9jayhkcml2ZSwgcnEsIDApOwogCi0JLyogSWYgaXQgd2FzIHRoZSBsYXN0IGRhdGFibG9jayBjaGVjayBzdGF0dXMgYW5kIGZpbmlzaCB0cmFuc2Zlci4gKi8KKwkvKiBBcmUgd2UgZG9uZT8gQ2hlY2sgc3RhdHVzIGFuZCBmaW5pc2ggdHJhbnNmZXIuICovCiAJaWYgKCFod2lmLT5ubGVmdCkgewogCQlzdGF0ID0gd2FpdF9kcml2ZV9ub3RfYnVzeShkcml2ZSk7CiAJCWlmICghT0tfU1RBVChzdGF0LCAwLCBCQURfU1RBVCkpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lkZS9pZGUuYyBiL2RyaXZlcnMvaWRlL2lkZS5jCmluZGV4IDk5NzZmOWQuLmZjNjlmZTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWRlL2lkZS5jCisrKyBiL2RyaXZlcnMvaWRlL2lkZS5jCkBAIC0xMjU4LDcgKzEyNTgsNyBAQAogCQlkcml2ZSA9ICZod2lmLT5kcml2ZXNbdW5pdF07CiAJCWlmIChzdHJuY21wKHMgKyA0LCAiaWRlLSIsIDQpID09IDApIHsKIAkJCXN0cmxjcHkoZHJpdmUtPmRyaXZlcl9yZXEsIHMgKyA0LCBzaXplb2YoZHJpdmUtPmRyaXZlcl9yZXEpKTsKLQkJCWdvdG8gZG9uZTsKKwkJCWdvdG8gb2Jzb2xldGVfb3B0aW9uOwogCQl9CiAJCXN3aXRjaCAobWF0Y2hfcGFybSgmc1szXSwgaGRfd29yZHMsIHZhbHMsIDMpKSB7CiAJCQljYXNlIC0xOiAvKiAibm9uZSIgKi8KQEAgLTEyOTAsMTMgKzEyOTAsMTMgQEAKIAkJCQlnb3RvIGRvbmU7CiAJCQljYXNlIC0xMjogLyogInJlbWFwIiAqLwogCQkJCWRyaXZlLT5yZW1hcF8wX3RvXzEgPSAxOwotCQkJCWdvdG8gZG9uZTsKKwkJCQlnb3RvIG9ic29sZXRlX29wdGlvbjsKIAkJCWNhc2UgLTEzOiAvKiAicmVtYXA2MyIgKi8KIAkJCQlkcml2ZS0+c2VjdDAgPSA2MzsKLQkJCQlnb3RvIGRvbmU7CisJCQkJZ290byBvYnNvbGV0ZV9vcHRpb247CiAJCQljYXNlIC0xNDogLyogInNjc2kiICovCiAJCQkJZHJpdmUtPnNjc2kgPSAxOwotCQkJCWdvdG8gZG9uZTsKKwkJCQlnb3RvIG9ic29sZXRlX29wdGlvbjsKIAkJCWNhc2UgMzogLyogY3lsLGhlYWQsc2VjdCAqLwogCQkJCWRyaXZlLT5tZWRpYQk9IGlkZV9kaXNrOwogCQkJCWRyaXZlLT5yZWFkeV9zdGF0ID0gUkVBRFlfU1RBVDsKQEAgLTEzNzAsMzIgKzEzNzAsMzIgQEAKICNpZmRlZiBDT05GSUdfQkxLX0RFVl9BTEkxNFhYCiAJCQljYXNlIC0xNzogLyogImFsaTE0eHgiICovCiAJCQkJcHJvYmVfYWxpMTR4eCA9IDE7Ci0JCQkJZ290byBkb25lOworCQkJCWdvdG8gb2Jzb2xldGVfb3B0aW9uOwogI2VuZGlmCiAjaWZkZWYgQ09ORklHX0JMS19ERVZfVU1DODY3MgogCQkJY2FzZSAtMTY6IC8qICJ1bWM4NjcyIiAqLwogCQkJCXByb2JlX3VtYzg2NzIgPSAxOwotCQkJCWdvdG8gZG9uZTsKKwkJCQlnb3RvIG9ic29sZXRlX29wdGlvbjsKICNlbmRpZgogI2lmZGVmIENPTkZJR19CTEtfREVWX0RUQzIyNzgKIAkJCWNhc2UgLTE1OiAvKiAiZHRjMjI3OCIgKi8KIAkJCQlwcm9iZV9kdGMyMjc4ID0gMTsKLQkJCQlnb3RvIGRvbmU7CisJCQkJZ290byBvYnNvbGV0ZV9vcHRpb247CiAjZW5kaWYKICNpZmRlZiBDT05GSUdfQkxLX0RFVl9DTUQ2NDAKIAkJCWNhc2UgLTE0OiAvKiAiY21kNjQwX3ZsYiIgKi8KIAkJCQljbWQ2NDBfdmxiID0gMTsKLQkJCQlnb3RvIGRvbmU7CisJCQkJZ290byBvYnNvbGV0ZV9vcHRpb247CiAjZW5kaWYKICNpZmRlZiBDT05GSUdfQkxLX0RFVl9IVDY1NjBCCiAJCQljYXNlIC0xMzogLyogImh0NjU2MGIiICovCiAJCQkJcHJvYmVfaHQ2NTYwYiA9IDE7Ci0JCQkJZ290byBkb25lOworCQkJCWdvdG8gb2Jzb2xldGVfb3B0aW9uOwogI2VuZGlmCiAjaWZkZWYgQ09ORklHX0JMS19ERVZfUUQ2NVhYCiAJCQljYXNlIC0xMjogLyogInFkNjV4eCIgKi8KIAkJCQlwcm9iZV9xZDY1eHggPSAxOwotCQkJCWdvdG8gZG9uZTsKKwkJCQlnb3RvIG9ic29sZXRlX29wdGlvbjsKICNlbmRpZgogI2lmZGVmIENPTkZJR19CTEtfREVWXzREUklWRVMKIAkJCWNhc2UgLTExOiAvKiAiZm91ciIgZHJpdmVzIG9uIG9uZSBzZXQgb2YgcG9ydHMgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWRlL2xlZ2FjeS9idWRkaGEuYyBiL2RyaXZlcnMvaWRlL2xlZ2FjeS9idWRkaGEuYwppbmRleCA1MGZmYTg3Li5mZGQzNzkxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lkZS9sZWdhY3kvYnVkZGhhLmMKKysrIGIvZHJpdmVycy9pZGUvbGVnYWN5L2J1ZGRoYS5jCkBAIC0yNDEsMyArMjQxLDUgQEAKIH0KIAogbW9kdWxlX2luaXQoYnVkZGhhX2luaXQpOworCitNT0RVTEVfTElDRU5TRSgiR1BMIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lkZS9sZWdhY3kvZmFsY29uaWRlLmMgYi9kcml2ZXJzL2lkZS9sZWdhY3kvZmFsY29uaWRlLmMKaW5kZXggODk0OWNlNy4uZTk1MGFmYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pZGUvbGVnYWN5L2ZhbGNvbmlkZS5jCisrKyBiL2RyaXZlcnMvaWRlL2xlZ2FjeS9mYWxjb25pZGUuYwpAQCAtOTMsMyArOTMsNSBAQAogfQogCiBtb2R1bGVfaW5pdChmYWxjb25pZGVfaW5pdCk7CisKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWRlL2xlZ2FjeS9nYXlsZS5jIGIvZHJpdmVycy9pZGUvbGVnYWN5L2dheWxlLmMKaW5kZXggYjdkODEwOS4uZTNiNDYzOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pZGUvbGVnYWN5L2dheWxlLmMKKysrIGIvZHJpdmVycy9pZGUvbGVnYWN5L2dheWxlLmMKQEAgLTE5NSwzICsxOTUsNSBAQAogfQogCiBtb2R1bGVfaW5pdChnYXlsZV9pbml0KTsKKworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pZGUvbGVnYWN5L21hY2lkZS5jIGIvZHJpdmVycy9pZGUvbGVnYWN5L21hY2lkZS5jCmluZGV4IDlhNzkwOTguLmVhZjVkYmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWRlL2xlZ2FjeS9tYWNpZGUuYworKysgYi9kcml2ZXJzL2lkZS9sZWdhY3kvbWFjaWRlLmMKQEAgLTEzNywzICsxMzcsNSBAQAogfQogCiBtb2R1bGVfaW5pdChtYWNpZGVfaW5pdCk7CisKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWRlL2xlZ2FjeS9xNDBpZGUuYyBiL2RyaXZlcnMvaWRlL2xlZ2FjeS9xNDBpZGUuYwppbmRleCAxMzgxYjkxLi4yZGEyODc1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lkZS9sZWdhY3kvcTQwaWRlLmMKKysrIGIvZHJpdmVycy9pZGUvbGVnYWN5L3E0MGlkZS5jCkBAIC0xNTMsMyArMTUzLDUgQEAKIH0KIAogbW9kdWxlX2luaXQocTQwaWRlX2luaXQpOworCitNT0RVTEVfTElDRU5TRSgiR1BMIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lkZS9taXBzL2F1MXh4eC1pZGUuYyBiL2RyaXZlcnMvaWRlL21pcHMvYXUxeHh4LWlkZS5jCmluZGV4IDBmNGJmNWQuLjg1YzAxNmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWRlL21pcHMvYXUxeHh4LWlkZS5jCisrKyBiL2RyaXZlcnMvaWRlL21pcHMvYXUxeHh4LWlkZS5jCkBAIC0zMiwxOSArMzIsMTIgQEAKICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KICNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgogI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgotCiAjaW5jbHVkZSA8bGludXgvaW5pdC5oPgogI2luY2x1ZGUgPGxpbnV4L2lkZS5oPgotI2luY2x1ZGUgPGxpbnV4L3N5c2Rldi5oPgorI2luY2x1ZGUgPGxpbnV4L3NjYXR0ZXJsaXN0Lmg+CiAKLSNpbmNsdWRlIDxsaW51eC9kbWEtbWFwcGluZy5oPgotCi0jaW5jbHVkZSAiaWRlLXRpbWluZy5oIgotCi0jaW5jbHVkZSA8YXNtL2lvLmg+CiAjaW5jbHVkZSA8YXNtL21hY2gtYXUxeDAwL2F1MXh4eC5oPgogI2luY2x1ZGUgPGFzbS9tYWNoLWF1MXgwMC9hdTF4eHhfZGJkbWEuaD4KLQogI2luY2x1ZGUgPGFzbS9tYWNoLWF1MXgwMC9hdTF4eHhfaWRlLmg+CiAKICNkZWZpbmUgRFJWX05BTUUJImF1MTIwMC1pZGUiCkBAIC01Niw2ICs0OSw4IEBACiBzdGF0aWMgX2F1aWRlX2h3aWYgYXVpZGVfaHdpZjsKIHN0YXRpYyBpbnQgZGJkbWFfaW5pdF9kb25lOwogCitzdGF0aWMgaW50IGF1aWRlX2RkbWFfaW5pdChfYXVpZGVfaHdpZiAqYXVpZGUpOworCiAjaWYgZGVmaW5lZChDT05GSUdfQkxLX0RFVl9JREVfQVUxWFhYX1BJT19EQkRNQSkKIAogdm9pZCBhdWlkZV9pbnN3KHVuc2lnbmVkIGxvbmcgcG9ydCwgdm9pZCAqYWRkciwgdTMyIGNvdW50KQpAQCAtNTkxLDEzICs1ODYsMTQgQEAKIAkJZ290byBvdXQ7CiAJfQogCi0JaWYgKCFyZXF1ZXN0X21lbV9yZWdpb24gKHJlcy0+c3RhcnQsIHJlcy0+ZW5kLXJlcy0+c3RhcnQsIHBkZXYtPm5hbWUpKSB7CisJaWYgKCFyZXF1ZXN0X21lbV9yZWdpb24ocmVzLT5zdGFydCwgcmVzLT5lbmQgLSByZXMtPnN0YXJ0ICsgMSwKKwkJCQlwZGV2LT5uYW1lKSkgewogCQlwcl9kZWJ1ZygiJXM6IHJlcXVlc3RfbWVtX3JlZ2lvbiBmYWlsZWRcbiIsIERSVl9OQU1FKTsKIAkJcmV0ID0gIC1FQlVTWTsKIAkJZ290byBvdXQ7CiAJfQogCi0JYWh3aWYtPnJlZ2Jhc2UgPSAodTMyKWlvcmVtYXAocmVzLT5zdGFydCwgcmVzLT5lbmQtcmVzLT5zdGFydCk7CisJYWh3aWYtPnJlZ2Jhc2UgPSAodTMyKWlvcmVtYXAocmVzLT5zdGFydCwgcmVzLT5lbmQgLSByZXMtPnN0YXJ0ICsgMSk7CiAJaWYgKGFod2lmLT5yZWdiYXNlID09IDApIHsKIAkJcmV0ID0gLUVOT01FTTsKIAkJZ290byBvdXQ7CkBAIC02ODIsNyArNjc4LDcgQEAKIAlpb3VubWFwKCh2b2lkICopYWh3aWYtPnJlZ2Jhc2UpOwogCiAJcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTsKLQlyZWxlYXNlX21lbV9yZWdpb24ocmVzLT5zdGFydCwgcmVzLT5lbmQgLSByZXMtPnN0YXJ0KTsKKwlyZWxlYXNlX21lbV9yZWdpb24ocmVzLT5zdGFydCwgcmVzLT5lbmQgLSByZXMtPnN0YXJ0ICsgMSk7CiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWRlL3BjaS9jbWQ2NDAuYyBiL2RyaXZlcnMvaWRlL3BjaS9jbWQ2NDAuYwppbmRleCBlYzY2Nzk4Li4yOWZiYzVlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lkZS9wY2kvY21kNjQwLmMKKysrIGIvZHJpdmVycy9pZGUvcGNpL2NtZDY0MC5jCkBAIC04ODEsMyArODgxLDUgQEAKIE1PRFVMRV9QQVJNX0RFU0MocHJvYmVfdmxiLCAicHJvYmUgZm9yIFZMQiB2ZXJzaW9uIG9mIENNRDY0MCBjaGlwc2V0Iik7CiAKIG1vZHVsZV9pbml0KGNtZDY0MHhfaW5pdCk7CisKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWRlL3BjaS9pdDgyMXguYyBiL2RyaXZlcnMvaWRlL3BjaS9pdDgyMXguYwppbmRleCAxNTk3ZjBjLi5kOGExNjc0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lkZS9wY2kvaXQ4MjF4LmMKKysrIGIvZHJpdmVycy9pZGUvcGNpL2l0ODIxeC5jCkBAIC02NjcsNyArNjY3LDcgQEAKIG1vZHVsZV9pbml0KGl0ODIxeF9pZGVfaW5pdCk7CiAKIG1vZHVsZV9wYXJhbV9uYW1lZChub3JhaWQsIGl0ODIxMl9ub3JhaWQsIGludCwgU19JUlVHTyk7Ci1NT0RVTEVfUEFSTV9ERVNDKGl0ODIxMl9ub3JhaWQsICJGb3JjZSBjYXJkIGludG8gYnlwYXNzIG1vZGUiKTsKK01PRFVMRV9QQVJNX0RFU0Mobm9yYWlkLCAiRm9yY2UgY2FyZCBpbnRvIGJ5cGFzcyBtb2RlIik7CiAKIE1PRFVMRV9BVVRIT1IoIkFsYW4gQ294Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIlBDSSBkcml2ZXIgbW9kdWxlIGZvciB0aGUgSVRFIDgyMXgiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWRlL3BjaS9zaWltYWdlLmMgYi9kcml2ZXJzL2lkZS9wY2kvc2lpbWFnZS5jCmluZGV4IGNjNGJlOTYuLjhkNjI0YWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWRlL3BjaS9zaWltYWdlLmMKKysrIGIvZHJpdmVycy9pZGUvcGNpL3NpaW1hZ2UuYwpAQCAtNDkyLDcgKzQ5Miw3IEBACiAgCiBzdGF0aWMgdW5zaWduZWQgaW50IHNldHVwX21taW9fc2lpbWFnZSAoc3RydWN0IHBjaV9kZXYgKmRldiwgY29uc3QgY2hhciAqbmFtZSkKIHsKLQl1bnNpZ25lZCBsb25nIGJhcjUJPSBwY2lfcmVzb3VyY2Vfc3RhcnQoZGV2LCA1KTsKKwlyZXNvdXJjZV9zaXplX3QgYmFyNQk9IHBjaV9yZXNvdXJjZV9zdGFydChkZXYsIDUpOwogCXVuc2lnbmVkIGxvbmcgYmFyc2l6ZQk9IHBjaV9yZXNvdXJjZV9sZW4oZGV2LCA1KTsKIAl1OCB0bXBieXRlCT0gMDsKIAl2b2lkIF9faW9tZW0gKmlvYWRkcjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWRlL3BwYy9tcGM4eHguYyBiL2RyaXZlcnMvaWRlL3BwYy9tcGM4eHguYwppbmRleCAzOGZiZmI4Li5lYmFiYTAxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lkZS9wcGMvbXBjOHh4LmMKKysrIGIvZHJpdmVycy9pZGUvcHBjL21wYzh4eC5jCkBAIC04NTMsMyArODUzLDUgQEAKIH0KIAogbW9kdWxlX2luaXQobXBjOHh4X2lkZV9wcm9iZSk7CisKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWRlL3BwYy9wbWFjLmMgYi9kcml2ZXJzL2lkZS9wcGMvcG1hYy5jCmluZGV4IDc4YzllZWIuLmQ5Y2E1MmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWRlL3BwYy9wbWFjLmMKKysrIGIvZHJpdmVycy9pZGUvcHBjL3BtYWMuYwpAQCAtMTc3MSwzICsxNzcxLDUgQEAKICNlbmRpZiAvKiBDT05GSUdfQkxLX0RFVl9JREVETUFfUE1BQyAqLwogCiBtb2R1bGVfaW5pdChwbWFjX2lkZV9wcm9iZSk7CisKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWVlZTEzOTQvc2JwMi5jIGIvZHJpdmVycy9pZWVlMTM5NC9zYnAyLmMKaW5kZXggOWUyYjE5Ni4uZjUzZjcyZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pZWVlMTM5NC9zYnAyLmMKKysrIGIvZHJpdmVycy9pZWVlMTM5NC9zYnAyLmMKQEAgLTM3Niw2ICszNzYsMTEgQEAKIAkJLm1vZGVsX2lkCQk9IFNCUDJfUk9NX1ZBTFVFX1dJTERDQVJELAogCQkud29ya2Fyb3VuZHMJCT0gU0JQMl9XT1JLQVJPVU5EXzEyOEtfTUFYX1RSQU5TLAogCX0sCisJLyogRGF0YWZhYiBNRDItRlcyIHdpdGggU3ltYmlvcy9MU0lMb2dpYyBTWU0xM0ZXNTAwIGJyaWRnZSAqLyB7CisJCS5maXJtd2FyZV9yZXZpc2lvbgk9IDB4MDAyNjAwLAorCQkubW9kZWxfaWQJCT0gU0JQMl9ST01fVkFMVUVfV0lMRENBUkQsCisJCS53b3JrYXJvdW5kcwkJPSBTQlAyX1dPUktBUk9VTkRfMTI4S19NQVhfVFJBTlMsCisJfSwKIAkvKiBpUG9kIDR0aCBnZW5lcmF0aW9uICovIHsKIAkJLmZpcm13YXJlX3JldmlzaW9uCT0gMHgwYTI3MDAsCiAJCS5tb2RlbF9pZAkJPSAweDAwMDAyMSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL2FkZHIuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL2FkZHIuYwppbmRleCBhNThhZDhhLi43ODFlYTU5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvY29yZS9hZGRyLmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvYWRkci5jCkBAIC0xNTQsNyArMTU0LDcgQEAKIHsKIAlzdHJ1Y3QgcnRhYmxlICpydDsKIAlzdHJ1Y3QgZmxvd2kgZmw7Ci0JdTMyIGRzdF9pcCA9IGRzdF9pbi0+c2luX2FkZHIuc19hZGRyOworCV9fYmUzMiBkc3RfaXAgPSBkc3RfaW4tPnNpbl9hZGRyLnNfYWRkcjsKIAogCW1lbXNldCgmZmwsIDAsIHNpemVvZiBmbCk7CiAJZmwubmxfdS5pcDRfdS5kYWRkciA9IGRzdF9pcDsKQEAgLTE2OSw4ICsxNjksOCBAQAogCQkJICAgICAgIHN0cnVjdCBzb2NrYWRkcl9pbiAqZHN0X2luLAogCQkJICAgICAgIHN0cnVjdCByZG1hX2Rldl9hZGRyICphZGRyKQogewotCXUzMiBzcmNfaXAgPSBzcmNfaW4tPnNpbl9hZGRyLnNfYWRkcjsKLQl1MzIgZHN0X2lwID0gZHN0X2luLT5zaW5fYWRkci5zX2FkZHI7CisJX19iZTMyIHNyY19pcCA9IHNyY19pbi0+c2luX2FkZHIuc19hZGRyOworCV9fYmUzMiBkc3RfaXAgPSBkc3RfaW4tPnNpbl9hZGRyLnNfYWRkcjsKIAlzdHJ1Y3QgZmxvd2kgZmw7CiAJc3RydWN0IHJ0YWJsZSAqcnQ7CiAJc3RydWN0IG5laWdoYm91ciAqbmVpZ2g7CkBAIC0yNTcsNyArMjU3LDcgQEAKIAkJCSAgICAgIHN0cnVjdCByZG1hX2Rldl9hZGRyICphZGRyKQogewogCXN0cnVjdCBuZXRfZGV2aWNlICpkZXY7Ci0JdTMyIHNyY19pcCA9IHNyY19pbi0+c2luX2FkZHIuc19hZGRyOworCV9fYmUzMiBzcmNfaXAgPSBzcmNfaW4tPnNpbl9hZGRyLnNfYWRkcjsKIAlfX2JlMzIgZHN0X2lwID0gZHN0X2luLT5zaW5fYWRkci5zX2FkZHI7CiAJaW50IHJldDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvY20uYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL2NtLmMKaW5kZXggNGRmNDA1MS4uZmFhN2NlMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvY20uYworKysgYi9kcml2ZXJzL2luZmluaWJhbmQvY29yZS9jbS5jCkBAIC0zOTMsNyArMzkzLDcgQEAKIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY20ubG9jaywgZmxhZ3MpOwogCX0gd2hpbGUoIChyZXQgPT0gLUVBR0FJTikgJiYgaWRyX3ByZV9nZXQoJmNtLmxvY2FsX2lkX3RhYmxlLCBHRlBfS0VSTkVMKSApOwogCi0JY21faWRfcHJpdi0+aWQubG9jYWxfaWQgPSAoX19mb3JjZSBfX2JlMzIpIChpZCBeIGNtLnJhbmRvbV9pZF9vcGVyYW5kKTsKKwljbV9pZF9wcml2LT5pZC5sb2NhbF9pZCA9IChfX2ZvcmNlIF9fYmUzMilpZCBeIGNtLnJhbmRvbV9pZF9vcGVyYW5kOwogCXJldHVybiByZXQ7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL2NtYS5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvY21hLmMKaW5kZXggMzQ1MDdkYS4uZDgxYzE1NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvY21hLmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvY21hLmMKQEAgLTE2OCwxNSArMTY4LDE1IEBACiB1bmlvbiBjbWFfaXBfYWRkciB7CiAJc3RydWN0IGluNl9hZGRyIGlwNjsKIAlzdHJ1Y3QgewotCQlfX3UzMiBwYWRbM107Ci0JCV9fdTMyIGFkZHI7CisJCV9fYmUzMiBwYWRbM107CisJCV9fYmUzMiBhZGRyOwogCX0gaXA0OwogfTsKIAogc3RydWN0IGNtYV9oZHIgewogCXU4IGNtYV92ZXJzaW9uOwogCXU4IGlwX3ZlcnNpb247CS8qIElQIHZlcnNpb246IDc6NCAqLwotCV9fdTE2IHBvcnQ7CisJX19iZTE2IHBvcnQ7CiAJdW5pb24gY21hX2lwX2FkZHIgc3JjX2FkZHI7CiAJdW5pb24gY21hX2lwX2FkZHIgZHN0X2FkZHI7CiB9OwpAQCAtMTg2LDggKzE4Niw4IEBACiAJdTggc2RwX3ZlcnNpb247IC8qIE1ham9yIHZlcnNpb246IDc6NCAqLwogCXU4IGlwX3ZlcnNpb247CS8qIElQIHZlcnNpb246IDc6NCAqLwogCXU4IHNkcF9zcGVjaWZpYzFbMTBdOwotCV9fdTE2IHBvcnQ7Ci0JX191MTYgc2RwX3NwZWNpZmljMjsKKwlfX2JlMTYgcG9ydDsKKwlfX2JlMTYgc2RwX3NwZWNpZmljMjsKIAl1bmlvbiBjbWFfaXBfYWRkciBzcmNfYWRkcjsKIAl1bmlvbiBjbWFfaXBfYWRkciBkc3RfYWRkcjsKIH07CkBAIC02NjMsNyArNjYzLDcgQEAKIH0KIAogc3RhdGljIGludCBjbWFfZ2V0X25ldF9pbmZvKHZvaWQgKmhkciwgZW51bSByZG1hX3BvcnRfc3BhY2UgcHMsCi0JCQkgICAgdTggKmlwX3ZlciwgX191MTYgKnBvcnQsCisJCQkgICAgdTggKmlwX3ZlciwgX19iZTE2ICpwb3J0LAogCQkJICAgIHVuaW9uIGNtYV9pcF9hZGRyICoqc3JjLCB1bmlvbiBjbWFfaXBfYWRkciAqKmRzdCkKIHsKIAlzd2l0Y2ggKHBzKSB7CkBAIC02OTUsNyArNjk1LDcgQEAKIAogc3RhdGljIHZvaWQgY21hX3NhdmVfbmV0X2luZm8oc3RydWN0IHJkbWFfYWRkciAqYWRkciwKIAkJCSAgICAgIHN0cnVjdCByZG1hX2FkZHIgKmxpc3Rlbl9hZGRyLAotCQkJICAgICAgdTggaXBfdmVyLCBfX3UxNiBwb3J0LAorCQkJICAgICAgdTggaXBfdmVyLCBfX2JlMTYgcG9ydCwKIAkJCSAgICAgIHVuaW9uIGNtYV9pcF9hZGRyICpzcmMsIHVuaW9uIGNtYV9pcF9hZGRyICpkc3QpCiB7CiAJc3RydWN0IHNvY2thZGRyX2luICpsaXN0ZW40LCAqaXA0OwpAQCAtOTk2LDcgKzk5Niw3IEBACiAJc3RydWN0IHJkbWFfY21faWQgKmlkOwogCXN0cnVjdCByZG1hX3JvdXRlICpydDsKIAl1bmlvbiBjbWFfaXBfYWRkciAqc3JjLCAqZHN0OwotCV9fdTE2IHBvcnQ7CisJX19iZTE2IHBvcnQ7CiAJdTggaXBfdmVyOwogCiAJaWYgKGNtYV9nZXRfbmV0X2luZm8oaWJfZXZlbnQtPnByaXZhdGVfZGF0YSwgbGlzdGVuX2lkLT5wcywKQEAgLTEwNDMsNyArMTA0Myw3IEBACiAJc3RydWN0IHJkbWFfaWRfcHJpdmF0ZSAqaWRfcHJpdjsKIAlzdHJ1Y3QgcmRtYV9jbV9pZCAqaWQ7CiAJdW5pb24gY21hX2lwX2FkZHIgKnNyYywgKmRzdDsKLQlfX3UxNiBwb3J0OworCV9fYmUxNiBwb3J0OwogCXU4IGlwX3ZlcjsKIAlpbnQgcmV0OwogCkBAIC0xMTY1LDcgKzExNjUsNyBAQAogewogCXN0cnVjdCBjbWFfaGRyICpjbWFfZGF0YSwgKmNtYV9tYXNrOwogCXN0cnVjdCBzZHBfaGggKnNkcF9kYXRhLCAqc2RwX21hc2s7Ci0JX191MzIgaXA0X2FkZHI7CisJX19iZTMyIGlwNF9hZGRyOwogCXN0cnVjdCBpbjZfYWRkciBpcDZfYWRkcjsKIAogCW1lbXNldChjb21wYXJlLCAwLCBzaXplb2YgKmNvbXBhcmUpOwpAQCAtMTE4MSwxMiArMTE4MSwxMiBAQAogCQkJc2RwX3NldF9pcF92ZXIoc2RwX2RhdGEsIDQpOwogCQkJc2RwX3NldF9pcF92ZXIoc2RwX21hc2ssIDB4Rik7CiAJCQlzZHBfZGF0YS0+ZHN0X2FkZHIuaXA0LmFkZHIgPSBpcDRfYWRkcjsKLQkJCXNkcF9tYXNrLT5kc3RfYWRkci5pcDQuYWRkciA9IH4wOworCQkJc2RwX21hc2stPmRzdF9hZGRyLmlwNC5hZGRyID0gaHRvbmwofjApOwogCQl9IGVsc2UgewogCQkJY21hX3NldF9pcF92ZXIoY21hX2RhdGEsIDQpOwogCQkJY21hX3NldF9pcF92ZXIoY21hX21hc2ssIDB4Rik7CiAJCQljbWFfZGF0YS0+ZHN0X2FkZHIuaXA0LmFkZHIgPSBpcDRfYWRkcjsKLQkJCWNtYV9tYXNrLT5kc3RfYWRkci5pcDQuYWRkciA9IH4wOworCQkJY21hX21hc2stPmRzdF9hZGRyLmlwNC5hZGRyID0gaHRvbmwofjApOwogCQl9CiAJCWJyZWFrOwogCWNhc2UgQUZfSU5FVDY6CmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvY3hnYjMvaXdjaF9jbS5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2N4Z2IzL2l3Y2hfY20uYwppbmRleCAzMjBmMmI2Li45OWYyZjJhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvY3hnYjMvaXdjaF9jbS5jCisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9jeGdiMy9pd2NoX2NtLmMKQEAgLTE3NDUsNyArMTc0NSw3IEBACiAKIAkvKiBiaW5kIFFQIHRvIEVQIGFuZCBtb3ZlIHRvIFJUUyAqLwogCWF0dHJzLm1wYV9hdHRyID0gZXAtPm1wYV9hdHRyOwotCWF0dHJzLm1heF9pcmQgPSBlcC0+b3JkOworCWF0dHJzLm1heF9pcmQgPSBlcC0+aXJkOwogCWF0dHJzLm1heF9vcmQgPSBlcC0+b3JkOwogCWF0dHJzLmxscF9zdHJlYW1faGFuZGxlID0gZXA7CiAJYXR0cnMubmV4dF9zdGF0ZSA9IElXQ0hfUVBfU1RBVEVfUlRTOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L2lwYXRoL2lwYXRoX2NvbW1vbi5oIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2lwYXRoL2lwYXRoX2NvbW1vbi5oCmluZGV4IDQxNDYyMTAuLjU5MTkwMWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9pcGF0aC9pcGF0aF9jb21tb24uaAorKysgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvaXBhdGgvaXBhdGhfY29tbW9uLmgKQEAgLTc1LDcgKzc1LDcgQEAKICNkZWZpbmUgSVBBVEhfSUJfTElOS0RPV04JCTAKICNkZWZpbmUgSVBBVEhfSUJfTElOS0FSTQkJMQogI2RlZmluZSBJUEFUSF9JQl9MSU5LQUNUSVZFCQkyCi0jZGVmaW5lIElQQVRIX0lCX0xJTktJTklUCQkzCisjZGVmaW5lIElQQVRIX0lCX0xJTktET1dOX09OTFkJCTMKICNkZWZpbmUgSVBBVEhfSUJfTElOS0RPV05fU0xFRVAJCTQKICNkZWZpbmUgSVBBVEhfSUJfTElOS0RPV05fRElTQUJMRQk1CiAjZGVmaW5lIElQQVRIX0lCX0xJTktfTE9PUEJBQ0sJNiAvKiBlbmFibGUgbG9jYWwgbG9vcGJhY2sgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9pcGF0aC9pcGF0aF9kcml2ZXIuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9pcGF0aC9pcGF0aF9kcml2ZXIuYwppbmRleCBkNWZmNmNhLi5jYTRkMGFjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvaXBhdGgvaXBhdGhfZHJpdmVyLmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2lwYXRoL2lwYXRoX2RyaXZlci5jCkBAIC04NTEsOCArODUxLDcgQEAKICAqIC1FVElNRURPVVQgc3RhdGUgY2FuIGhhdmUgbXVsdGlwbGUgc3RhdGVzIHNldCwgZm9yIGFueSBvZiBzZXZlcmFsCiAgKiB0cmFuc2l0aW9ucy4KICAqLwotc3RhdGljIGludCBpcGF0aF93YWl0X2xpbmtzdGF0ZShzdHJ1Y3QgaXBhdGhfZGV2ZGF0YSAqZGQsIHUzMiBzdGF0ZSwKLQkJCQlpbnQgbXNlY3MpCitpbnQgaXBhdGhfd2FpdF9saW5rc3RhdGUoc3RydWN0IGlwYXRoX2RldmRhdGEgKmRkLCB1MzIgc3RhdGUsIGludCBtc2VjcykKIHsKIAlkZC0+aXBhdGhfc3RhdGVfd2FudGVkID0gc3RhdGU7CiAJd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlX3RpbWVvdXQoaXBhdGhfc3RhdGVfd2FpdCwKQEAgLTE2NTYsOCArMTY1NSw4IEBACiBzdGF0aWMgdm9pZCBpcGF0aF9zZXRfaWJfbHN0YXRlKHN0cnVjdCBpcGF0aF9kZXZkYXRhICpkZCwgaW50IHdoaWNoKQogewogCXN0YXRpYyBjb25zdCBjaGFyICp3aGF0WzRdID0gewotCQlbMF0gPSAiRE9XTiIsCi0JCVtJTkZJTklQQVRIX0lCQ0NfTElOS0NNRF9JTklUXSA9ICJJTklUIiwKKwkJWzBdID0gIk5PUCIsCisJCVtJTkZJTklQQVRIX0lCQ0NfTElOS0NNRF9ET1dOXSA9ICJET1dOIiwKIAkJW0lORklOSVBBVEhfSUJDQ19MSU5LQ01EX0FSTUVEXSA9ICJBUk1FRCIsCiAJCVtJTkZJTklQQVRIX0lCQ0NfTElOS0NNRF9BQ1RJVkVdID0gIkFDVElWRSIKIAl9OwpAQCAtMTY3Miw5ICsxNjcxLDkgQEAKIAkJCSAgICAoZGQsIGRkLT5pcGF0aF9rcmVncy0+a3JfaWJjc3RhdHVzKSA+PgogCQkJICAgIElORklOSVBBVEhfSUJDU19MSU5LVFJBSU5JTkdTVEFURV9TSElGVCkgJgogCQkJICAgSU5GSU5JUEFUSF9JQkNTX0xJTktUUkFJTklOR1NUQVRFX01BU0tdKTsKLQkvKiBmbHVzaCBhbGwgcXVldWVkIHNlbmRzIHdoZW4gZ29pbmcgdG8gRE9XTiBvciBJTklULCB0byBiZSBzdXJlIHRoYXQKKwkvKiBmbHVzaCBhbGwgcXVldWVkIHNlbmRzIHdoZW4gZ29pbmcgdG8gRE9XTiB0byBiZSBzdXJlIHRoYXQKIAkgKiB0aGV5IGRvbid0IGJsb2NrIE1BRCBwYWNrZXRzICovCi0JaWYgKCFsaW5rY21kIHx8IGxpbmtjbWQgPT0gSU5GSU5JUEFUSF9JQkNDX0xJTktDTURfSU5JVCkKKwlpZiAobGlua2NtZCA9PSBJTkZJTklQQVRIX0lCQ0NfTElOS0NNRF9ET1dOKQogCQlpcGF0aF9jYW5jZWxfc2VuZHMoZGQsIDEpOwogCiAJaXBhdGhfd3JpdGVfa3JlZyhkZCwgZGQtPmlwYXRoX2tyZWdzLT5rcl9pYmNjdHJsLApAQCAtMTY4Nyw2ICsxNjg2LDEzIEBACiAJaW50IHJldDsKIAogCXN3aXRjaCAobmV3c3RhdGUpIHsKKwljYXNlIElQQVRIX0lCX0xJTktET1dOX09OTFk6CisJCWlwYXRoX3NldF9pYl9sc3RhdGUoZGQsIElORklOSVBBVEhfSUJDQ19MSU5LQ01EX0RPV04gPDwKKwkJCQkgICAgSU5GSU5JUEFUSF9JQkNDX0xJTktDTURfU0hJRlQpOworCQkvKiBkb24ndCB3YWl0ICovCisJCXJldCA9IDA7CisJCWdvdG8gYmFpbDsKKwogCWNhc2UgSVBBVEhfSUJfTElOS0RPV046CiAJCWlwYXRoX3NldF9pYl9sc3RhdGUoZGQsIElORklOSVBBVEhfSUJDQ19MSU5LSU5JVENNRF9QT0xMIDw8CiAJCQkJICAgIElORklOSVBBVEhfSUJDQ19MSU5LSU5JVENNRF9TSElGVCk7CkBAIC0xNzA5LDE2ICsxNzE1LDYgQEAKIAkJcmV0ID0gMDsKIAkJZ290byBiYWlsOwogCi0JY2FzZSBJUEFUSF9JQl9MSU5LSU5JVDoKLQkJaWYgKGRkLT5pcGF0aF9mbGFncyAmIElQQVRIX0xJTktJTklUKSB7Ci0JCQlyZXQgPSAwOwotCQkJZ290byBiYWlsOwotCQl9Ci0JCWlwYXRoX3NldF9pYl9sc3RhdGUoZGQsIElORklOSVBBVEhfSUJDQ19MSU5LQ01EX0lOSVQgPDwKLQkJCQkgICAgSU5GSU5JUEFUSF9JQkNDX0xJTktDTURfU0hJRlQpOwotCQlsc3RhdGUgPSBJUEFUSF9MSU5LSU5JVDsKLQkJYnJlYWs7Ci0KIAljYXNlIElQQVRIX0lCX0xJTktBUk06CiAJCWlmIChkZC0+aXBhdGhfZmxhZ3MgJiBJUEFUSF9MSU5LQVJNRUQpIHsKIAkJCXJldCA9IDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvaXBhdGgvaXBhdGhfa2VybmVsLmggYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvaXBhdGgvaXBhdGhfa2VybmVsLmgKaW5kZXggNGNjMGY5NS4uZWNmM2Y3ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L2lwYXRoL2lwYXRoX2tlcm5lbC5oCisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9pcGF0aC9pcGF0aF9rZXJuZWwuaApAQCAtNzY3LDYgKzc2Nyw3IEBACiBpbnQgaXBhdGhfc2V0cmN2aGRyc2l6ZShzdHJ1Y3QgaXBhdGhfZGV2ZGF0YSAqLCB1bnNpZ25lZCk7CiBpbnQgaXBhdGhfcmVzZXRfZGV2aWNlKGludCk7CiB2b2lkIGlwYXRoX2dldF9mYXN0c3RhdHModW5zaWduZWQgbG9uZyk7CitpbnQgaXBhdGhfd2FpdF9saW5rc3RhdGUoc3RydWN0IGlwYXRoX2RldmRhdGEgKiwgdTMyLCBpbnQpOwogaW50IGlwYXRoX3NldF9saW5rc3RhdGUoc3RydWN0IGlwYXRoX2RldmRhdGEgKiwgdTgpOwogaW50IGlwYXRoX3NldF9tdHUoc3RydWN0IGlwYXRoX2RldmRhdGEgKiwgdTE2KTsKIGludCBpcGF0aF9zZXRfbGlkKHN0cnVjdCBpcGF0aF9kZXZkYXRhICosIHUzMiwgdTgpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L2lwYXRoL2lwYXRoX21hZC5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2lwYXRoL2lwYXRoX21hZC5jCmluZGV4IGQ5OGQ1ZjEuLmIzNGI5MWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9pcGF0aC9pcGF0aF9tYWQuYworKysgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvaXBhdGgvaXBhdGhfbWFkLmMKQEAgLTU1NSwxMCArNTU1LDcgQEAKIAkJLyogRkFMTFRIUk9VR0ggKi8KIAljYXNlIElCX1BPUlRfRE9XTjoKIAkJaWYgKGxzdGF0ZSA9PSAwKQotCQkJaWYgKGdldF9saW5rZG93bmRlZmF1bHRzdGF0ZShkZCkpCi0JCQkJbHN0YXRlID0gSVBBVEhfSUJfTElOS0RPV05fU0xFRVA7Ci0JCQllbHNlCi0JCQkJbHN0YXRlID0gSVBBVEhfSUJfTElOS0RPV047CisJCQlsc3RhdGUgPSBJUEFUSF9JQl9MSU5LRE9XTl9PTkxZOwogCQllbHNlIGlmIChsc3RhdGUgPT0gMSkKIAkJCWxzdGF0ZSA9IElQQVRIX0lCX0xJTktET1dOX1NMRUVQOwogCQllbHNlIGlmIChsc3RhdGUgPT0gMikKQEAgLTU2OCw2ICs1NjUsOCBAQAogCQllbHNlCiAJCQlnb3RvIGVycjsKIAkJaXBhdGhfc2V0X2xpbmtzdGF0ZShkZCwgbHN0YXRlKTsKKwkJaXBhdGhfd2FpdF9saW5rc3RhdGUoZGQsIElQQVRIX0xJTktJTklUIHwgSVBBVEhfTElOS0FSTUVEIHwKKwkJCQlJUEFUSF9MSU5LQUNUSVZFLCAxMDAwKTsKIAkJYnJlYWs7CiAJY2FzZSBJQl9QT1JUX0FSTUVEOgogCQlpcGF0aF9zZXRfbGlua3N0YXRlKGRkLCBJUEFUSF9JQl9MSU5LQVJNKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9pcGF0aC9pcGF0aF9xcC5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2lwYXRoL2lwYXRoX3FwLmMKaW5kZXggODBkYzYyMy4uMDg3ZWQzMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L2lwYXRoL2lwYXRoX3FwLmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2lwYXRoL2lwYXRoX3FwLmMKQEAgLTMyOSw4ICszMjksOSBAQAogLyoqCiAgKiBpcGF0aF9yZXNldF9xcCAtIGluaXRpYWxpemUgdGhlIFFQIHN0YXRlIHRvIHRoZSByZXNldCBzdGF0ZQogICogQHFwOiB0aGUgUVAgdG8gcmVzZXQKKyAqIEB0eXBlOiB0aGUgUVAgdHlwZQogICovCi1zdGF0aWMgdm9pZCBpcGF0aF9yZXNldF9xcChzdHJ1Y3QgaXBhdGhfcXAgKnFwKQorc3RhdGljIHZvaWQgaXBhdGhfcmVzZXRfcXAoc3RydWN0IGlwYXRoX3FwICpxcCwgZW51bSBpYl9xcF90eXBlIHR5cGUpCiB7CiAJcXAtPnJlbW90ZV9xcG4gPSAwOwogCXFwLT5xa2V5ID0gMDsKQEAgLTM0Miw3ICszNDMsNyBAQAogCXFwLT5zX3BzbiA9IDA7CiAJcXAtPnJfcHNuID0gMDsKIAlxcC0+cl9tc24gPSAwOwotCWlmIChxcC0+aWJxcC5xcF90eXBlID09IElCX1FQVF9SQykgeworCWlmICh0eXBlID09IElCX1FQVF9SQykgewogCQlxcC0+c19zdGF0ZSA9IElCX09QQ09ERV9SQ19TRU5EX0xBU1Q7CiAJCXFwLT5yX3N0YXRlID0gSUJfT1BDT0RFX1JDX1NFTkRfTEFTVDsKIAl9IGVsc2UgewpAQCAtNDE0LDcgKzQxNSw3IEBACiAJCXdjLndyX2lkID0gcXAtPnJfd3JfaWQ7CiAJCXdjLm9wY29kZSA9IElCX1dDX1JFQ1Y7CiAJCXdjLnN0YXR1cyA9IGVycjsKLQkJaXBhdGhfY3FfZW50ZXIodG9faWNxKHFwLT5pYnFwLnNlbmRfY3EpLCAmd2MsIDEpOworCQlpcGF0aF9jcV9lbnRlcih0b19pY3EocXAtPmlicXAucmVjdl9jcSksICZ3YywgMSk7CiAJfQogCXdjLnN0YXR1cyA9IElCX1dDX1dSX0ZMVVNIX0VSUjsKIApAQCAtNTM0LDcgKzUzNSw3IEBACiAKIAlzd2l0Y2ggKG5ld19zdGF0ZSkgewogCWNhc2UgSUJfUVBTX1JFU0VUOgotCQlpcGF0aF9yZXNldF9xcChxcCk7CisJCWlwYXRoX3Jlc2V0X3FwKHFwLCBpYnFwLT5xcF90eXBlKTsKIAkJYnJlYWs7CiAKIAljYXNlIElCX1FQU19FUlI6CkBAIC02NDcsNyArNjQ4LDcgQEAKIAlhdHRyLT5wb3J0X251bSA9IDE7CiAJYXR0ci0+dGltZW91dCA9IHFwLT50aW1lb3V0OwogCWF0dHItPnJldHJ5X2NudCA9IHFwLT5zX3JldHJ5X2NudDsKLQlhdHRyLT5ybnJfcmV0cnkgPSBxcC0+c19ybnJfcmV0cnk7CisJYXR0ci0+cm5yX3JldHJ5ID0gcXAtPnNfcm5yX3JldHJ5X2NudDsKIAlhdHRyLT5hbHRfcG9ydF9udW0gPSAwOwogCWF0dHItPmFsdF90aW1lb3V0ID0gMDsKIApAQCAtODM5LDcgKzg0MCw3IEBACiAJCQlnb3RvIGJhaWxfcXA7CiAJCX0KIAkJcXAtPmlwID0gTlVMTDsKLQkJaXBhdGhfcmVzZXRfcXAocXApOworCQlpcGF0aF9yZXNldF9xcChxcCwgaW5pdF9hdHRyLT5xcF90eXBlKTsKIAkJYnJlYWs7CiAKIAlkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L2lwYXRoL2lwYXRoX3JjLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvaXBhdGgvaXBhdGhfcmMuYwppbmRleCA0NTllNDZlLi40MGYzZTM3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvaXBhdGgvaXBhdGhfcmMuYworKysgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvaXBhdGgvaXBhdGhfcmMuYwpAQCAtMTE5Niw2ICsxMTk2LDEwIEBACiAJCQlsaXN0X21vdmVfdGFpbCgmcXAtPnRpbWVyd2FpdCwKIAkJCQkgICAgICAgJmRldi0+cGVuZGluZ1tkZXYtPnBlbmRpbmdfaW5kZXhdKTsKIAkJc3Bpbl91bmxvY2soJmRldi0+cGVuZGluZ19sb2NrKTsKKworCQlpZiAob3Bjb2RlID09IE9QKFJETUFfUkVBRF9SRVNQT05TRV9NSURETEUpKQorCQkJcXAtPnNfcmV0cnkgPSBxcC0+c19yZXRyeV9jbnQ7CisKIAkJLyoKIAkJICogVXBkYXRlIHRoZSBSRE1BIHJlY2VpdmUgc3RhdGUgYnV0IGRvIHRoZSBjb3B5IHcvbwogCQkgKiBob2xkaW5nIHRoZSBsb2NrcyBhbmQgYmxvY2tpbmcgaW50ZXJydXB0cy4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9pcGF0aC9pcGF0aF9yZWdpc3RlcnMuaCBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9pcGF0aC9pcGF0aF9yZWdpc3RlcnMuaAppbmRleCA2ZDJhMTdmLi45MmFkNzNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvaXBhdGgvaXBhdGhfcmVnaXN0ZXJzLmgKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2lwYXRoL2lwYXRoX3JlZ2lzdGVycy5oCkBAIC0xODUsNyArMTg1LDcgQEAKICNkZWZpbmUgSU5GSU5JUEFUSF9JQkNDX0xJTktJTklUQ01EX1NMRUVQIDMKICNkZWZpbmUgSU5GSU5JUEFUSF9JQkNDX0xJTktJTklUQ01EX1NISUZUIDE2CiAjZGVmaW5lIElORklOSVBBVEhfSUJDQ19MSU5LQ01EX01BU0sgMHgzVUxMCi0jZGVmaW5lIElORklOSVBBVEhfSUJDQ19MSU5LQ01EX0lOSVQgMQkvKiBtb3ZlIHRvIDB4MTEgKi8KKyNkZWZpbmUgSU5GSU5JUEFUSF9JQkNDX0xJTktDTURfRE9XTiAxCS8qIG1vdmUgdG8gMHgxMSAqLwogI2RlZmluZSBJTkZJTklQQVRIX0lCQ0NfTElOS0NNRF9BUk1FRCAyCS8qIG1vdmUgdG8gMHgyMSAqLwogI2RlZmluZSBJTkZJTklQQVRIX0lCQ0NfTElOS0NNRF9BQ1RJVkUgMwkvKiBtb3ZlIHRvIDB4MzEgKi8KICNkZWZpbmUgSU5GSU5JUEFUSF9JQkNDX0xJTktDTURfU0hJRlQgMTgKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9uZXMvbmVzX2NtLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvbmVzL25lc19jbS5jCmluZGV4IDM5YWRiMjYuLjBiZWY4NzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9uZXMvbmVzX2NtLmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L25lcy9uZXNfY20uYwpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgPGxpbnV4L3RjcC5oPgogI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KICNpbmNsdWRlIDxsaW51eC9pZl9hcnAuaD4KKyNpbmNsdWRlIDxsaW51eC9pZl92bGFuLmg+CiAjaW5jbHVkZSA8bGludXgvbm90aWZpZXIuaD4KICNpbmNsdWRlIDxsaW51eC9uZXQuaD4KICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgpAQCAtMTA3Miw3ICsxMDczLDcgQEAKIAl0cyA9IGN1cnJlbnRfa2VybmVsX3RpbWUoKTsKIAljbV9ub2RlLT50Y3BfY250eHQubG9jX3NlcV9udW0gPSBodG9ubCh0cy50dl9uc2VjKTsKIAljbV9ub2RlLT50Y3BfY250eHQubXNzID0gbmVzdm5pYy0+bWF4X2ZyYW1lX3NpemUgLSBzaXplb2Yoc3RydWN0IGlwaGRyKSAtCi0JCQlzaXplb2Yoc3RydWN0IHRjcGhkcikgLSBFVEhfSExFTjsKKwkJCXNpemVvZihzdHJ1Y3QgdGNwaGRyKSAtIEVUSF9ITEVOIC0gVkxBTl9ITEVOOwogCWNtX25vZGUtPnRjcF9jbnR4dC5yY3Zfbnh0ID0gMDsKIAkvKiBnZXQgYSB1bmlxdWUgc2Vzc2lvbiBJRCAsIGFkZCB0aHJlYWRfaWQgdG8gYW4gdXBjb3VudGVyIHRvIGhhbmRsZSByYWNlICovCiAJYXRvbWljX2luYygmY21fY29yZS0+bm9kZV9jbnQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9pcG9pYl9jbS5jIGIvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9pcG9pYl9jbS5jCmluZGV4IDUyYjFiZWIuLjI0OTBiMmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfY20uYworKysgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX2NtLmMKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlIDxuZXQvaWNtcC5oPgogI2luY2x1ZGUgPGxpbnV4L2ljbXB2Ni5oPgogI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisjaW5jbHVkZSA8bGludXgvdm1hbGxvYy5oPgogCiAjaW5jbHVkZSAiaXBvaWIuaCIKIApAQCAtNjM3LDYgKzYzOCw3IEBACiAJcHJpdi0+dHhfc2dlWzBdLmFkZHIgICAgICAgICAgPSBhZGRyOwogCXByaXYtPnR4X3NnZVswXS5sZW5ndGggICAgICAgID0gbGVuOwogCisJcHJpdi0+dHhfd3IubnVtX3NnZQk9IDE7CiAJcHJpdi0+dHhfd3Iud3JfaWQJPSB3cl9pZCB8IElQT0lCX09QX0NNOwogCiAJcmV0dXJuIGliX3Bvc3Rfc2VuZCh0eC0+cXAsICZwcml2LT50eF93ciwgJmJhZF93cik7CkBAIC0xMDMwLDEzICsxMDMyLDEzIEBACiAJc3RydWN0IGlwb2liX2Rldl9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYocC0+ZGV2KTsKIAlpbnQgcmV0OwogCi0JcC0+dHhfcmluZyA9IGt6YWxsb2MoaXBvaWJfc2VuZHFfc2l6ZSAqIHNpemVvZiAqcC0+dHhfcmluZywKLQkJCQlHRlBfS0VSTkVMKTsKKwlwLT50eF9yaW5nID0gdm1hbGxvYyhpcG9pYl9zZW5kcV9zaXplICogc2l6ZW9mICpwLT50eF9yaW5nKTsKIAlpZiAoIXAtPnR4X3JpbmcpIHsKIAkJaXBvaWJfd2Fybihwcml2LCAiZmFpbGVkIHRvIGFsbG9jYXRlIHR4IHJpbmdcbiIpOwogCQlyZXQgPSAtRU5PTUVNOwogCQlnb3RvIGVycl90eDsKIAl9CisJbWVtc2V0KHAtPnR4X3JpbmcsIDAsIGlwb2liX3NlbmRxX3NpemUgKiBzaXplb2YgKnAtPnR4X3JpbmcpOwogCiAJcC0+cXAgPSBpcG9pYl9jbV9jcmVhdGVfdHhfcXAocC0+ZGV2LCBwKTsKIAlpZiAoSVNfRVJSKHAtPnFwKSkgewpAQCAtMTA3Nyw2ICsxMDc5LDcgQEAKIAlpYl9kZXN0cm95X3FwKHAtPnFwKTsKIGVycl9xcDoKIAlwLT5xcCA9IE5VTEw7CisJdmZyZWUocC0+dHhfcmluZyk7CiBlcnJfdHg6CiAJcmV0dXJuIHJldDsKIH0KQEAgLTExMjcsNyArMTEzMCw3IEBACiAJaWYgKHAtPnFwKQogCQlpYl9kZXN0cm95X3FwKHAtPnFwKTsKIAotCWtmcmVlKHAtPnR4X3JpbmcpOworCXZmcmVlKHAtPnR4X3JpbmcpOwogCWtmcmVlKHApOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX21haW4uYyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfbWFpbi5jCmluZGV4IGY5NjQ3N2EuLjU3MjgyMDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfbWFpbi5jCisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfbWFpbi5jCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSA8bGludXgvaW5pdC5oPgogI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC92bWFsbG9jLmg+CiAKICNpbmNsdWRlIDxsaW51eC9pZl9hcnAuaD4JLyogRm9yIEFSUEhSRF94eHggKi8KIApAQCAtODg3LDEzICs4ODgsMTMgQEAKIAkJZ290byBvdXQ7CiAJfQogCi0JcHJpdi0+dHhfcmluZyA9IGt6YWxsb2MoaXBvaWJfc2VuZHFfc2l6ZSAqIHNpemVvZiAqcHJpdi0+dHhfcmluZywKLQkJCQlHRlBfS0VSTkVMKTsKKwlwcml2LT50eF9yaW5nID0gdm1hbGxvYyhpcG9pYl9zZW5kcV9zaXplICogc2l6ZW9mICpwcml2LT50eF9yaW5nKTsKIAlpZiAoIXByaXYtPnR4X3JpbmcpIHsKIAkJcHJpbnRrKEtFUk5fV0FSTklORyAiJXM6IGZhaWxlZCB0byBhbGxvY2F0ZSBUWCByaW5nICglZCBlbnRyaWVzKVxuIiwKIAkJICAgICAgIGNhLT5uYW1lLCBpcG9pYl9zZW5kcV9zaXplKTsKIAkJZ290byBvdXRfcnhfcmluZ19jbGVhbnVwOwogCX0KKwltZW1zZXQocHJpdi0+dHhfcmluZywgMCwgaXBvaWJfc2VuZHFfc2l6ZSAqIHNpemVvZiAqcHJpdi0+dHhfcmluZyk7CiAKIAkvKiBwcml2LT50eF9oZWFkLCB0eF90YWlsICYgdHhfb3V0c3RhbmRpbmcgYXJlIGFscmVhZHkgMCAqLwogCkBAIC05MDMsNyArOTA0LDcgQEAKIAlyZXR1cm4gMDsKIAogb3V0X3R4X3JpbmdfY2xlYW51cDoKLQlrZnJlZShwcml2LT50eF9yaW5nKTsKKwl2ZnJlZShwcml2LT50eF9yaW5nKTsKIAogb3V0X3J4X3JpbmdfY2xlYW51cDoKIAlrZnJlZShwcml2LT5yeF9yaW5nKTsKQEAgLTkyOCw3ICs5MjksNyBAQAogCWlwb2liX2liX2Rldl9jbGVhbnVwKGRldik7CiAKIAlrZnJlZShwcml2LT5yeF9yaW5nKTsKLQlrZnJlZShwcml2LT50eF9yaW5nKTsKKwl2ZnJlZShwcml2LT50eF9yaW5nKTsKIAogCXByaXYtPnJ4X3JpbmcgPSBOVUxMOwogCXByaXYtPnR4X3JpbmcgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9pcG9pYl9tdWx0aWNhc3QuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfbXVsdGljYXN0LmMKaW5kZXggMjYyODMzOS4uMzFhNTNjNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9pcG9pYl9tdWx0aWNhc3QuYworKysgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX211bHRpY2FzdC5jCkBAIC02NTAsNyArNjUwLDcgQEAKIAkgKi8KIAlzcGluX2xvY2soJnByaXYtPmxvY2spOwogCi0JaWYgKCF0ZXN0X2JpdChJUE9JQl9NQ0FTVF9TVEFSVEVELCAmcHJpdi0+ZmxhZ3MpCXx8CisJaWYgKCF0ZXN0X2JpdChJUE9JQl9GTEFHX09QRVJfVVAsICZwcml2LT5mbGFncykJCXx8CiAJICAgICFwcml2LT5icm9hZGNhc3QJCQkJCXx8CiAJICAgICF0ZXN0X2JpdChJUE9JQl9NQ0FTVF9GTEFHX0FUVEFDSEVELCAmcHJpdi0+YnJvYWRjYXN0LT5mbGFncykpIHsKIAkJKytkZXYtPnN0YXRzLnR4X2Ryb3BwZWQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L2FwbS1wb3dlci5jIGIvZHJpdmVycy9pbnB1dC9hcG0tcG93ZXIuYwppbmRleCBjMzZkMTEwLi43ZDYxYTk2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L2FwbS1wb3dlci5jCisrKyBiL2RyaXZlcnMvaW5wdXQvYXBtLXBvd2VyLmMKQEAgLTYzLDggKzYzLDYgQEAKIAloYW5kbGUtPmhhbmRsZXIgPSBoYW5kbGVyOwogCWhhbmRsZS0+bmFtZSA9ICJhcG0tcG93ZXIiOwogCi0JaGFuZGxlci0+cHJpdmF0ZSA9IGhhbmRsZTsKLQogCWVycm9yID0gaW5wdXRfcmVnaXN0ZXJfaGFuZGxlKGhhbmRsZSk7CiAJaWYgKGVycm9yKSB7CiAJCXByaW50ayhLRVJOX0VSUgpAQCAtODcsMTEgKzg1LDEwIEBACiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lkIGFwbXBvd2VyX2Rpc2Nvbm5lY3Qoc3RydWN0IGlucHV0X2hhbmRsZSAqaGFuZGxlcikKK3N0YXRpYyB2b2lkIGFwbXBvd2VyX2Rpc2Nvbm5lY3Qoc3RydWN0IGlucHV0X2hhbmRsZSAqaGFuZGxlKQogewotCXN0cnVjdCBpbnB1dF9oYW5kbGUgKmhhbmRsZSA9IGhhbmRsZXItPnByaXZhdGU7Ci0KIAlpbnB1dF9jbG9zZV9kZXZpY2UoaGFuZGxlKTsKKwlpbnB1dF91bnJlZ2lzdGVyX2hhbmRsZShoYW5kbGUpOwogCWtmcmVlKGhhbmRsZSk7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQvZXZkZXYuYyBiL2RyaXZlcnMvaW5wdXQvZXZkZXYuYwppbmRleCAwNzI3YjBhLi5iMzI5ODRiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L2V2ZGV2LmMKKysrIGIvZHJpdmVycy9pbnB1dC9ldmRldi5jCkBAIC0xMjQsNiArMTI0LDcgQEAKIHsKIAlzdHJ1Y3QgZXZkZXYgKmV2ZGV2ID0gY29udGFpbmVyX29mKGRldiwgc3RydWN0IGV2ZGV2LCBkZXYpOwogCisJaW5wdXRfcHV0X2RldmljZShldmRldi0+aGFuZGxlLmRldik7CiAJa2ZyZWUoZXZkZXYpOwogfQogCkBAIC04OTMsNyArODk0LDcgQEAKIAlldmRldi0+ZXhpc3QgPSAxOwogCWV2ZGV2LT5taW5vciA9IG1pbm9yOwogCi0JZXZkZXYtPmhhbmRsZS5kZXYgPSBkZXY7CisJZXZkZXYtPmhhbmRsZS5kZXYgPSBpbnB1dF9nZXRfZGV2aWNlKGRldik7CiAJZXZkZXYtPmhhbmRsZS5uYW1lID0gZXZkZXYtPm5hbWU7CiAJZXZkZXYtPmhhbmRsZS5oYW5kbGVyID0gaGFuZGxlcjsKIAlldmRldi0+aGFuZGxlLnByaXZhdGUgPSBldmRldjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQvam95ZGV2LmMgYi9kcml2ZXJzL2lucHV0L2pveWRldi5jCmluZGV4IDIyYjI3ODkuLjY1ZDcwNzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5wdXQvam95ZGV2LmMKKysrIGIvZHJpdmVycy9pbnB1dC9qb3lkZXYuYwpAQCAtMTcxLDYgKzE3MSw3IEBACiB7CiAJc3RydWN0IGpveWRldiAqam95ZGV2ID0gY29udGFpbmVyX29mKGRldiwgc3RydWN0IGpveWRldiwgZGV2KTsKIAorCWlucHV0X3B1dF9kZXZpY2Uoam95ZGV2LT5oYW5kbGUuZGV2KTsKIAlrZnJlZShqb3lkZXYpOwogfQogCkBAIC03NTAsNyArNzUxLDcgQEAKIAlqb3lkZXYtPm1pbm9yID0gbWlub3I7CiAKIAlqb3lkZXYtPmV4aXN0ID0gMTsKLQlqb3lkZXYtPmhhbmRsZS5kZXYgPSBkZXY7CisJam95ZGV2LT5oYW5kbGUuZGV2ID0gaW5wdXRfZ2V0X2RldmljZShkZXYpOwogCWpveWRldi0+aGFuZGxlLm5hbWUgPSBqb3lkZXYtPm5hbWU7CiAJam95ZGV2LT5oYW5kbGUuaGFuZGxlciA9IGhhbmRsZXI7CiAJam95ZGV2LT5oYW5kbGUucHJpdmF0ZSA9IGpveWRldjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQva2V5Ym9hcmQvcHhhMjd4X2tleXBhZC5jIGIvZHJpdmVycy9pbnB1dC9rZXlib2FyZC9weGEyN3hfa2V5cGFkLmMKaW5kZXggNjIyNGMyZi4uNGU2NTFjMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC9rZXlib2FyZC9weGEyN3hfa2V5cGFkLmMKKysrIGIvZHJpdmVycy9pbnB1dC9rZXlib2FyZC9weGEyN3hfa2V5cGFkLmMKQEAgLTUwLDkgKzUwLDkgQEAKICNkZWZpbmUgS1BLREkgICAgICAgICAgIDB4MDA0OAogCiAvKiBiaXQgZGVmaW5pdGlvbnMgKi8KLSNkZWZpbmUgS1BDX01LUk4obikJKCgoKG4pICYgMHg3KSAtIDEpIDw8IDI2KSAvKiBtYXRyaXgga2V5IHJvdyBudW1iZXIgKi8KLSNkZWZpbmUgS1BDX01LQ04obikJKCgoKG4pICYgMHg3KSAtIDEpIDw8IDIzKSAvKiBtYXRyaXgga2V5IGNvbHVtbiBudW1iZXIgKi8KLSNkZWZpbmUgS1BDX0RLTihuKQkoKCgobikgJiAweDcpIC0gMSkgPDwgNikgIC8qIGRpcmVjdCBrZXkgbnVtYmVyICovCisjZGVmaW5lIEtQQ19NS1JOKG4pCSgoKChuKSAtIDEpICYgMHg3KSA8PCAyNikgLyogbWF0cml4IGtleSByb3cgbnVtYmVyICovCisjZGVmaW5lIEtQQ19NS0NOKG4pCSgoKChuKSAtIDEpICYgMHg3KSA8PCAyMykgLyogbWF0cml4IGtleSBjb2x1bW4gbnVtYmVyICovCisjZGVmaW5lIEtQQ19ES04obikJKCgoKG4pIC0gMSkgJiAweDcpIDw8IDYpICAvKiBkaXJlY3Qga2V5IG51bWJlciAqLwogCiAjZGVmaW5lIEtQQ19BUyAgICAgICAgICAoMHgxIDw8IDMwKSAgLyogQXV0b21hdGljIFNjYW4gYml0ICovCiAjZGVmaW5lIEtQQ19BU0FDVCAgICAgICAoMHgxIDw8IDI5KSAgLyogQXV0b21hdGljIFNjYW4gb24gQWN0aXZpdHkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQvbWlzYy9jb2JhbHRfYnRucy5jIGIvZHJpdmVycy9pbnB1dC9taXNjL2NvYmFsdF9idG5zLmMKaW5kZXggNDgzM2IxYS4uNTUxMWVmMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC9taXNjL2NvYmFsdF9idG5zLmMKKysrIGIvZHJpdmVycy9pbnB1dC9taXNjL2NvYmFsdF9idG5zLmMKQEAgLTEsNyArMSw3IEBACiAvKgogICogIENvYmFsdCBidXR0b24gaW50ZXJmYWNlIGRyaXZlci4KICAqCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA3ICBZb2ljaGkgWXVhc2EgPHlvaWNoaV95dWFzYUB0cmlwZWFrcy5jby5qcD4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOCAgWW9pY2hpIFl1YXNhIDx5b2ljaGlfeXVhc2FAdHJpcGVha3MuY28uanA+CiAgKgogICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTE1LDcgKzE1LDcgQEAKICAqCiAgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKICAqLwogI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KICNpbmNsdWRlIDxsaW51eC9pbnB1dC1wb2xsZGV2Lmg+CkBAIC01NSw3ICs1NSw3IEBACiAJc3RhdHVzID0gfnJlYWRsKGJkZXYtPnJlZykgPj4gMjQ7CiAKIAlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShiZGV2LT5rZXltYXApOyBpKyspIHsKLQkJaWYgKHN0YXR1cyAmICgxVUwgPDwgaSkpIHsKKwkJaWYgKHN0YXR1cyAmICgxVSA8PCBpKSkgewogCQkJaWYgKCsrYmRldi0+Y291bnRbaV0gPT0gQlVUVE9OU19DT1VOVF9USFJFU0hPTEQpIHsKIAkJCQlpbnB1dF9ldmVudChpbnB1dCwgRVZfTVNDLCBNU0NfU0NBTiwgaSk7CiAJCQkJaW5wdXRfcmVwb3J0X2tleShpbnB1dCwgYmRldi0+a2V5bWFwW2ldLCAxKTsKQEAgLTk3LDE2ICs5NywxNiBAQAogCWlucHV0LT5uYW1lID0gIkNvYmFsdCBidXR0b25zIjsKIAlpbnB1dC0+cGh5cyA9ICJjb2JhbHQvaW5wdXQwIjsKIAlpbnB1dC0+aWQuYnVzdHlwZSA9IEJVU19IT1NUOwotCWlucHV0LT5jZGV2LmRldiA9ICZwZGV2LT5kZXY7CisJaW5wdXQtPmRldi5wYXJlbnQgPSAmcGRldi0+ZGV2OwogCi0JaW5wdXQtPmtleWNvZGUgPSBwZGV2LT5rZXltYXA7Ci0JaW5wdXQtPmtleWNvZGVtYXggPSBBUlJBWV9TSVpFKHBkZXYtPmtleW1hcCk7CisJaW5wdXQtPmtleWNvZGUgPSBiZGV2LT5rZXltYXA7CisJaW5wdXQtPmtleWNvZGVtYXggPSBBUlJBWV9TSVpFKGJkZXYtPmtleW1hcCk7CiAJaW5wdXQtPmtleWNvZGVzaXplID0gc2l6ZW9mKHVuc2lnbmVkIHNob3J0KTsKIAogCWlucHV0X3NldF9jYXBhYmlsaXR5KGlucHV0LCBFVl9NU0MsIE1TQ19TQ0FOKTsKIAlfX3NldF9iaXQoRVZfS0VZLCBpbnB1dC0+ZXZiaXQpOwotCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGJ1dHRvbnNfbWFwKTsgaSsrKQotCQlfX3NldF9iaXQoaW5wdXQtPmtleWNvZGVbaV0sIGlucHV0LT5rZXliaXQpOworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGNvYmFsdF9tYXApOyBpKyspCisJCV9fc2V0X2JpdChiZGV2LT5rZXltYXBbaV0sIGlucHV0LT5rZXliaXQpOwogCV9fY2xlYXJfYml0KEtFWV9SRVNFUlZFRCwgaW5wdXQtPmtleWJpdCk7CiAKIAlyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDApOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9taXNjL2l4cDR4eC1iZWVwZXIuYyBiL2RyaXZlcnMvaW5wdXQvbWlzYy9peHA0eHgtYmVlcGVyLmMKaW5kZXggZDJhZGU3NC4uNzk4ZDg0YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC9taXNjL2l4cDR4eC1iZWVwZXIuYworKysgYi9kcml2ZXJzL2lucHV0L21pc2MvaXhwNHh4LWJlZXBlci5jCkBAIC0yNSw2ICsyNSw3IEBACiBNT0RVTEVfQVVUSE9SKCJBbGVzc2FuZHJvIFp1bW1vIDxhLnp1bW1vQHRvd2VydGVjaC5pdD4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiaXhwNHh4IGJlZXBlciBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06aXhwNHh4LWJlZXBlciIpOwogCiBzdGF0aWMgREVGSU5FX1NQSU5MT0NLKGJlZXBfbG9jayk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQvbW91c2UvYWxwcy5jIGIvZHJpdmVycy9pbnB1dC9tb3VzZS9hbHBzLmMKaW5kZXggYjM0NmEzYi4uMzg1ZTMyYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC9tb3VzZS9hbHBzLmMKKysrIGIvZHJpdmVycy9pbnB1dC9tb3VzZS9hbHBzLmMKQEAgLTExNiw4ICsxMTYsOCBAQAogCX0KIAogCWlmIChwcml2LT5pLT5mbGFncyAmIEFMUFNfRldfQktfMSkgewotCQliYWNrID0gcGFja2V0WzJdICYgNDsKLQkJZm9yd2FyZCA9IHBhY2tldFswXSAmIDB4MTA7CisJCWJhY2sgPSBwYWNrZXRbMF0gJiAweDEwOworCQlmb3J3YXJkID0gcGFja2V0WzJdICYgNDsKIAl9CiAKIAlpZiAocHJpdi0+aS0+ZmxhZ3MgJiBBTFBTX0ZXX0JLXzIpIHsKQEAgLTQ4Myw2ICs0ODMsNyBAQAogCWRldjItPmlkLnZlbmRvciAgPSAweDAwMDI7CiAJZGV2Mi0+aWQucHJvZHVjdCA9IFBTTU9VU0VfQUxQUzsKIAlkZXYyLT5pZC52ZXJzaW9uID0gMHgwMDAwOworCWRldjItPmRldi5wYXJlbnQgPSAmcHNtb3VzZS0+cHMyZGV2LnNlcmlvLT5kZXY7CiAKIAlkZXYyLT5ldmJpdFswXSA9IEJJVF9NQVNLKEVWX0tFWSkgfCBCSVRfTUFTSyhFVl9SRUwpOwogCWRldjItPnJlbGJpdFtCSVRfV09SRChSRUxfWCldIHw9IEJJVF9NQVNLKFJFTF9YKSB8IEJJVF9NQVNLKFJFTF9ZKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQvbW91c2UvYXBwbGV0b3VjaC5jIGIvZHJpdmVycy9pbnB1dC9tb3VzZS9hcHBsZXRvdWNoLmMKaW5kZXggYjQ0MjNhNC4uOGRkMzk0MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC9tb3VzZS9hcHBsZXRvdWNoLmMKKysrIGIvZHJpdmVycy9pbnB1dC9tb3VzZS9hcHBsZXRvdWNoLmMKQEAgLTYyLDYgKzYyLDEwIEBACiAjZGVmaW5lIEdFWVNFUjRfSVNPX1BST0RVQ1RfSUQJMHgwMjFCCiAjZGVmaW5lIEdFWVNFUjRfSklTX1BST0RVQ1RfSUQJMHgwMjFDCiAKKyNkZWZpbmUgR0VZU0VSNF9IRl9BTlNJX1BST0RVQ1RfSUQJMHgwMjI5CisjZGVmaW5lIEdFWVNFUjRfSEZfSVNPX1BST0RVQ1RfSUQJMHgwMjJBCisjZGVmaW5lIEdFWVNFUjRfSEZfSklTX1BST0RVQ1RfSUQJMHgwMjJCCisKICNkZWZpbmUgQVRQX0RFVklDRShwcm9kKQkJCQkJXAogCS5tYXRjaF9mbGFncyA9IFVTQl9ERVZJQ0VfSURfTUFUQ0hfREVWSUNFIHwJCVwKIAkJICAgICAgIFVTQl9ERVZJQ0VfSURfTUFUQ0hfSU5UX0NMQVNTIHwJCVwKQEAgLTkzLDYgKzk3LDEwIEBACiAJeyBBVFBfREVWSUNFKEdFWVNFUjRfSVNPX1BST0RVQ1RfSUQpIH0sCiAJeyBBVFBfREVWSUNFKEdFWVNFUjRfSklTX1BST0RVQ1RfSUQpIH0sCiAKKwl7IEFUUF9ERVZJQ0UoR0VZU0VSNF9IRl9BTlNJX1BST0RVQ1RfSUQpIH0sCisJeyBBVFBfREVWSUNFKEdFWVNFUjRfSEZfSVNPX1BST0RVQ1RfSUQpIH0sCisJeyBBVFBfREVWSUNFKEdFWVNFUjRfSEZfSklTX1BST0RVQ1RfSUQpIH0sCisKIAkvKiBUZXJtaW5hdGluZyBlbnRyeSAqLwogCXsgfQogfTsKQEAgLTIxNyw3ICsyMjUsMTAgQEAKIAkJKHByb2R1Y3RJZCA9PSBHRVlTRVIzX0pJU19QUk9EVUNUX0lEKSB8fAogCQkocHJvZHVjdElkID09IEdFWVNFUjRfQU5TSV9QUk9EVUNUX0lEKSB8fAogCQkocHJvZHVjdElkID09IEdFWVNFUjRfSVNPX1BST0RVQ1RfSUQpIHx8Ci0JCShwcm9kdWN0SWQgPT0gR0VZU0VSNF9KSVNfUFJPRFVDVF9JRCk7CisJCShwcm9kdWN0SWQgPT0gR0VZU0VSNF9KSVNfUFJPRFVDVF9JRCkgfHwKKwkJKHByb2R1Y3RJZCA9PSBHRVlTRVI0X0hGX0FOU0lfUFJPRFVDVF9JRCkgfHwKKwkJKHByb2R1Y3RJZCA9PSBHRVlTRVI0X0hGX0lTT19QUk9EVUNUX0lEKSB8fAorCQkocHJvZHVjdElkID09IEdFWVNFUjRfSEZfSklTX1BST0RVQ1RfSUQpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9tb3VzZWRldi5jIGIvZHJpdmVycy9pbnB1dC9tb3VzZWRldi5jCmluZGV4IGJiYmU1ZTguLmI5ODk3NDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5wdXQvbW91c2VkZXYuYworKysgYi9kcml2ZXJzL2lucHV0L21vdXNlZGV2LmMKQEAgLTQxNCw2ICs0MTQsNyBAQAogewogCXN0cnVjdCBtb3VzZWRldiAqbW91c2VkZXYgPSBjb250YWluZXJfb2YoZGV2LCBzdHJ1Y3QgbW91c2VkZXYsIGRldik7CiAKKwlpbnB1dF9wdXRfZGV2aWNlKG1vdXNlZGV2LT5oYW5kbGUuZGV2KTsKIAlrZnJlZShtb3VzZWRldik7CiB9CiAKQEAgLTg2NSw3ICs4NjYsNyBAQAogCiAJbW91c2VkZXYtPm1pbm9yID0gbWlub3I7CiAJbW91c2VkZXYtPmV4aXN0ID0gMTsKLQltb3VzZWRldi0+aGFuZGxlLmRldiA9IGRldjsKKwltb3VzZWRldi0+aGFuZGxlLmRldiA9IGlucHV0X2dldF9kZXZpY2UoZGV2KTsKIAltb3VzZWRldi0+aGFuZGxlLm5hbWUgPSBtb3VzZWRldi0+bmFtZTsKIAltb3VzZWRldi0+aGFuZGxlLmhhbmRsZXIgPSBoYW5kbGVyOwogCW1vdXNlZGV2LT5oYW5kbGUucHJpdmF0ZSA9IG1vdXNlZGV2OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9zZXJpby9pODA0Mi1zbmlybS5oIGIvZHJpdmVycy9pbnB1dC9zZXJpby9pODA0Mi1zbmlybS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwOWE5MzQKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2lucHV0L3NlcmlvL2k4MDQyLXNuaXJtLmgKQEAgLTAsMCArMSw3NSBAQAorI2lmbmRlZiBfSTgwNDJfU05JUk1fSAorI2RlZmluZSBfSTgwNDJfU05JUk1fSAorCisjaW5jbHVkZSA8YXNtL3NuaS5oPgorCisvKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworCisvKgorICogTmFtZXMuCisgKi8KKworI2RlZmluZSBJODA0Ml9LQkRfUEhZU19ERVNDICJvbmJvYXJkL3NlcmlvMCIKKyNkZWZpbmUgSTgwNDJfQVVYX1BIWVNfREVTQyAib25ib2FyZC9zZXJpbzEiCisjZGVmaW5lIEk4MDQyX01VWF9QSFlTX0RFU0MgIm9uYm9hcmQvc2VyaW8lZCIKKworLyoKKyAqIElSUXMuCisgKi8KK3N0YXRpYyBpbnQgaTgwNDJfa2JkX2lycTsKK3N0YXRpYyBpbnQgaTgwNDJfYXV4X2lycTsKKyNkZWZpbmUgSTgwNDJfS0JEX0lSUSBpODA0Ml9rYmRfaXJxCisjZGVmaW5lIEk4MDQyX0FVWF9JUlEgaTgwNDJfYXV4X2lycQorCitzdGF0aWMgdm9pZCBfX2lvbWVtICprYmRfaW9iYXNlOworCisjZGVmaW5lIEk4MDQyX0NPTU1BTkRfUkVHCShrYmRfaW9iYXNlICsgMHg2NFVMKQorI2RlZmluZSBJODA0Ml9EQVRBX1JFRwkJKGtiZF9pb2Jhc2UgKyAweDYwVUwpCisKK3N0YXRpYyBpbmxpbmUgaW50IGk4MDQyX3JlYWRfZGF0YSh2b2lkKQoreworCXJldHVybiByZWFkYihrYmRfaW9iYXNlICsgMHg2MFVMKTsKK30KKworc3RhdGljIGlubGluZSBpbnQgaTgwNDJfcmVhZF9zdGF0dXModm9pZCkKK3sKKwlyZXR1cm4gcmVhZGIoa2JkX2lvYmFzZSArIDB4NjRVTCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBpODA0Ml93cml0ZV9kYXRhKGludCB2YWwpCit7CisJd3JpdGViKHZhbCwga2JkX2lvYmFzZSArIDB4NjBVTCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBpODA0Ml93cml0ZV9jb21tYW5kKGludCB2YWwpCit7CisJd3JpdGViKHZhbCwga2JkX2lvYmFzZSArIDB4NjRVTCk7Cit9CitzdGF0aWMgaW5saW5lIGludCBpODA0Ml9wbGF0Zm9ybV9pbml0KHZvaWQpCit7CisJLyogUk0yMDAgaXMgc3RyYW5nZSAuLi4gKi8KKwlpZiAoc25pX2JyZF90eXBlID09IFNOSV9CUkRfUk0yMDApIHsKKwkJa2JkX2lvYmFzZSA9IGlvcmVtYXAoMHgxNjAwMDAwMCwgNCk7CisJCWk4MDQyX2tiZF9pcnEgPSAzMzsKKwkJaTgwNDJfYXV4X2lycSA9IDQ0OworCX0gZWxzZSB7CisJCWtiZF9pb2Jhc2UgPSBpb3JlbWFwKDB4MTQwMDAwMDAsIDQpOworCQlpODA0Ml9rYmRfaXJxID0gMTsKKwkJaTgwNDJfYXV4X2lycSA9IDEyOworCX0KKwlpZiAoIWtiZF9pb2Jhc2UpCisJCXJldHVybiAtRU5PTUVNOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBpODA0Ml9wbGF0Zm9ybV9leGl0KHZvaWQpCit7CisKK30KKworI2VuZGlmIC8qIF9JODA0Ml9TTklSTV9IICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L3NlcmlvL2k4MDQyLXg4NmlhNjRpby5oIGIvZHJpdmVycy9pbnB1dC9zZXJpby9pODA0Mi14ODZpYTY0aW8uaAppbmRleCA2NjJlODQ0Li42MDkzMWFjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L3NlcmlvL2k4MDQyLXg4NmlhNjRpby5oCisrKyBiL2RyaXZlcnMvaW5wdXQvc2VyaW8vaTgwNDIteDg2aWE2NGlvLmgKQEAgLTI3Nyw2ICsyNzcsMTMgQEAKIAkJCURNSV9NQVRDSChETUlfUFJPRFVDVF9OQU1FLCAiTTYzNi9BNzM3IHBsYXRmb3JtIiksCiAJCX0sCiAJfSwKKwl7CisJCS5pZGVudCA9ICJMZW5vdm8gMzAwMCBuMTAwIiwKKwkJLm1hdGNoZXMgPSB7CisJCQlETUlfTUFUQ0goRE1JX1NZU19WRU5ET1IsICJMRU5PVk8iKSwKKwkJCURNSV9NQVRDSChETUlfUFJPRFVDVF9WRVJTSU9OLCAiMzAwMCBOMTAwIiksCisJCX0sCisJfSwKIAl7IH0KIH07CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQvc2VyaW8vaTgwNDIuYyBiL2RyaXZlcnMvaW5wdXQvc2VyaW8vaTgwNDIuYwppbmRleCAyNzYzMzk0Li42NWE3NGNmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L3NlcmlvL2k4MDQyLmMKKysrIGIvZHJpdmVycy9pbnB1dC9zZXJpby9pODA0Mi5jCkBAIC0xMTUxLDcgKzExNTEsNiBAQAogc3RhdGljIGludCBfX2RldmluaXQgaTgwNDJfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2KQogewogCWludCBlcnJvcjsKLQljaGFyIHBhcmFtOwogCiAJZXJyb3IgPSBpODA0Ml9jb250cm9sbGVyX3NlbGZ0ZXN0KCk7CiAJaWYgKGVycm9yKQpAQCAtMTE3NCw3ICsxMTczLDcgQEAKIAl9CiAjaWZkZWYgQ09ORklHX1g4NgogCWlmIChpODA0Ml9kcml0ZWspIHsKLQkJcGFyYW0gPSAweDkwOworCQljaGFyIHBhcmFtID0gMHg5MDsKIAkJZXJyb3IgPSBpODA0Ml9jb21tYW5kKCZwYXJhbSwgMHgxMDU5KTsKIAkJaWYgKGVycm9yKQogCQkJZ290byBvdXRfZmFpbDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQvc2VyaW8vaTgwNDIuaCBiL2RyaXZlcnMvaW5wdXQvc2VyaW8vaTgwNDIuaAppbmRleCBjOTcyZTVkLi5jYmMxYmViIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L3NlcmlvL2k4MDQyLmgKKysrIGIvZHJpdmVycy9pbnB1dC9zZXJpby9pODA0Mi5oCkBAIC0xOCw2ICsxOCw4IEBACiAjaW5jbHVkZSAiaTgwNDItamF6emlvLmgiCiAjZWxpZiBkZWZpbmVkKENPTkZJR19TR0lfSEFTX0k4MDQyKQogI2luY2x1ZGUgImk4MDQyLWlwMjJpby5oIgorI2VsaWYgZGVmaW5lZChDT05GSUdfU05JX1JNKQorI2luY2x1ZGUgImk4MDQyLXNuaXJtLmgiCiAjZWxpZiBkZWZpbmVkKENPTkZJR19QUEMpCiAjaW5jbHVkZSAiaTgwNDItcHBjaW8uaCIKICNlbGlmIGRlZmluZWQoQ09ORklHX1NQQVJDKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC90YWJsZXQvd2Fjb20uaCBiL2RyaXZlcnMvaW5wdXQvdGFibGV0L3dhY29tLmgKaW5kZXggNjU0MmVkYi4uYWNmOTgzMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC90YWJsZXQvd2Fjb20uaAorKysgYi9kcml2ZXJzL2lucHV0L3RhYmxldC93YWNvbS5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKiAgQ29weXJpZ2h0IChjKSAyMDAwIERhbmllbCBFZ2dlcgkJPGVnZ2VyQHN1c2UuZGU+CiAgKiAgQ29weXJpZ2h0IChjKSAyMDAxIEZyZWRlcmljIExlcGllZAkJPGZsZXBpZWRAbWFuZHJha2Vzb2Z0LmNvbT4KICAqICBDb3B5cmlnaHQgKGMpIDIwMDQgUGFuYWdpb3RpcyBJc3NhcmlzCTxwYW5hZ2lvdGlzLmlzc2FyaXNAbWVjaC5rdWxldXZlbi5hYy5iZT4KLSAqICBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNyBQaW5nIENoZW5nCQk8cGluZ2NAd2Fjb20uY29tPgorICogIENvcHlyaWdodCAoYykgMjAwMi0yMDA4IFBpbmcgQ2hlbmcJCTxwaW5nY0B3YWNvbS5jb20+CiAgKgogICogIENoYW5nZUxvZzoKICAqICAgICAgdjAuMSAodnApICAtIEluaXRpYWwgcmVsZWFzZQpAQCAtNjUsNiArNjUsNyBAQAogICoJCSAgIC0gYW5kIHdhY29tX3dhYy5jIGRlYWxzIHdpdGggV2Fjb20gc3BlY2lmaWMgY29kZQogICoJCSAgIC0gU3VwcG9ydCBJbnR1b3MzIDR4NgogICogICAgICB2MS40NyAocGMpIC0gQWRkZWQgc3VwcG9ydCBmb3IgQmFtYm9vCisgKiAgICAgIHYxLjQ4IChwYykgLSBBZGRlZCBzdXBwb3J0IGZvciBCYW1ib28xLCBCYW1ib29GdW4sIGFuZCBDaW50aXEgMTJXWAogICovCiAKIC8qCkBAIC04NSw3ICs4Niw3IEBACiAvKgogICogVmVyc2lvbiBJbmZvcm1hdGlvbgogICovCi0jZGVmaW5lIERSSVZFUl9WRVJTSU9OICJ2MS40NyIKKyNkZWZpbmUgRFJJVkVSX1ZFUlNJT04gInYxLjQ4IgogI2RlZmluZSBEUklWRVJfQVVUSE9SICJWb2p0ZWNoIFBhdmxpayA8dm9qdGVjaEB1Y3cuY3o+IgogI2RlZmluZSBEUklWRVJfREVTQyAiVVNCIFdhY29tIEdyYXBoaXJlIGFuZCBXYWNvbSBJbnR1b3MgdGFibGV0IGRyaXZlciIKICNkZWZpbmUgRFJJVkVSX0xJQ0VOU0UgIkdQTCIKQEAgLTEyNSw2ICsxMjYsNyBAQAogZXh0ZXJuIHZvaWQgaW5wdXRfZGV2X3BsKHN0cnVjdCBpbnB1dF9kZXYgKmlucHV0X2Rldiwgc3RydWN0IHdhY29tX3dhYyAqd2Fjb21fd2FjKTsKIGV4dGVybiB2b2lkIGlucHV0X2Rldl9wdChzdHJ1Y3QgaW5wdXRfZGV2ICppbnB1dF9kZXYsIHN0cnVjdCB3YWNvbV93YWMgKndhY29tX3dhYyk7CiBleHRlcm4gdm9pZCBpbnB1dF9kZXZfbW8oc3RydWN0IGlucHV0X2RldiAqaW5wdXRfZGV2LCBzdHJ1Y3Qgd2Fjb21fd2FjICp3YWNvbV93YWMpOworZXh0ZXJuIHZvaWQgaW5wdXRfZGV2X2JlZShzdHJ1Y3QgaW5wdXRfZGV2ICppbnB1dF9kZXYsIHN0cnVjdCB3YWNvbV93YWMgKndhY29tX3dhYyk7CiBleHRlcm4gX191MTYgd2Fjb21fbGUxNl90b19jcHUodW5zaWduZWQgY2hhciAqZGF0YSk7CiBleHRlcm4gX191MTYgd2Fjb21fYmUxNl90b19jcHUodW5zaWduZWQgY2hhciAqZGF0YSk7CiBleHRlcm4gc3RydWN0IHdhY29tX2ZlYXR1cmVzICogZ2V0X3dhY29tX2ZlYXR1cmUoY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQvdGFibGV0L3dhY29tX3N5cy5jIGIvZHJpdmVycy9pbnB1dC90YWJsZXQvd2Fjb21fc3lzLmMKaW5kZXggZDY0YjFlYTEuLjQxY2FhZWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5wdXQvdGFibGV0L3dhY29tX3N5cy5jCisrKyBiL2RyaXZlcnMvaW5wdXQvdGFibGV0L3dhY29tX3N5cy5jCkBAIC0xNzEsNiArMTcxLDcgQEAKIAlpbnB1dF9kZXYtPmtleWJpdFtCSVRfV09SRChCVE5fTEVGVCldIHw9IEJJVF9NQVNLKEJUTl8wKSB8CiAJCUJJVF9NQVNLKEJUTl8xKSB8IEJJVF9NQVNLKEJUTl8yKSB8IEJJVF9NQVNLKEJUTl8zKTsKIAlpbnB1dF9zZXRfYWJzX3BhcmFtcyhpbnB1dF9kZXYsIEFCU19SWCwgMCwgNDA5NiwgMCwgMCk7CisJaW5wdXRfc2V0X2Fic19wYXJhbXMoaW5wdXRfZGV2LCBBQlNfWiwgLTkwMCwgODk5LCAwLCAwKTsKIH0KIAogdm9pZCBpbnB1dF9kZXZfaTMoc3RydWN0IGlucHV0X2RldiAqaW5wdXRfZGV2LCBzdHJ1Y3Qgd2Fjb21fd2FjICp3YWNvbV93YWMpCkBAIC0xODAsNiArMTgxLDExIEBACiAJaW5wdXRfc2V0X2Fic19wYXJhbXMoaW5wdXRfZGV2LCBBQlNfUlksIDAsIDQwOTYsIDAsIDApOwogfQogCit2b2lkIGlucHV0X2Rldl9iZWUoc3RydWN0IGlucHV0X2RldiAqaW5wdXRfZGV2LCBzdHJ1Y3Qgd2Fjb21fd2FjICp3YWNvbV93YWMpCit7CisJaW5wdXRfZGV2LT5rZXliaXRbQklUX1dPUkQoQlROX0xFRlQpXSB8PSBCSVRfTUFTSyhCVE5fOCkgfCBCSVRfTUFTSyhCVE5fOSk7Cit9CisKIHZvaWQgaW5wdXRfZGV2X2koc3RydWN0IGlucHV0X2RldiAqaW5wdXRfZGV2LCBzdHJ1Y3Qgd2Fjb21fd2FjICp3YWNvbV93YWMpCiB7CiAJaW5wdXRfZGV2LT5ldmJpdFswXSB8PSBCSVRfTUFTSyhFVl9NU0MpIHwgQklUX01BU0soRVZfUkVMKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQvdGFibGV0L3dhY29tX3dhYy5jIGIvZHJpdmVycy9pbnB1dC90YWJsZXQvd2Fjb21fd2FjLmMKaW5kZXggZmMwM2JhMi4uZmZlMzM4NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC90YWJsZXQvd2Fjb21fd2FjLmMKKysrIGIvZHJpdmVycy9pbnB1dC90YWJsZXQvd2Fjb21fd2FjLmMKQEAgLTE2Myw3ICsxNjMsOSBAQAogCX0KIAogCWlkID0gU1RZTFVTX0RFVklDRV9JRDsKLQlpZiAoZGF0YVsxXSAmIDB4ODApIHsgLyogaW4gcHJveCAqLworCWlmICgoZGF0YVsxXSAmIDB4ODApICYmICgoZGF0YVsxXSAmIDB4MDcpIHx8IGRhdGFbMl0gfHwgZGF0YVszXSB8fCBkYXRhWzRdCisJCQl8fCBkYXRhWzVdIHx8IGRhdGFbNl0gfHwgKGRhdGFbN10gJiAweDA3KSkpIHsKKwkJLyogaW4gcHJveCBhbmQgbm90IGEgcGFkIGRhdGEgKi8KIAogCQlzd2l0Y2ggKChkYXRhWzFdID4+IDUpICYgMykgewogCkBAIC0yMzMsNyArMjM1LDYgQEAKIAkJaWYgKGRhdGFbN10gJiAweGY4KSB7CiAJCQl3YWNvbV9pbnB1dF9zeW5jKHdjb21ibyk7IC8qIHN5bmMgbGFzdCBldmVudCAqLwogCQkJd2Fjb20tPmlkWzFdID0gMTsKLQkJCXdhY29tLT5zZXJpYWxbMV0gPSAoZGF0YVs3XSAmIDB4ZjgpOwogCQkJd2Fjb21fcmVwb3J0X2tleSh3Y29tYm8sIEJUTl8wLCAoZGF0YVs3XSAmIDB4NDApKTsKIAkJCXdhY29tX3JlcG9ydF9rZXkod2NvbWJvLCBCVE5fNCwgKGRhdGFbN10gJiAweDgwKSk7CiAJCQlydyA9ICgoZGF0YVs3XSAmIDB4MTgpID4+IDMpIC0gKChkYXRhWzddICYgMHgyMCkgPj4gMyk7CkBAIC0yNTIsMTAgKzI1Myw5IEBACiAJCX0KIAkJYnJlYWs7CiAJICAgIGNhc2UgV0FDT01fTU86Ci0JCWlmICgoZGF0YVs3XSAmIDB4ZjgpIHx8IChkYXRhWzhdICYgMHg4MCkpIHsKKwkJaWYgKChkYXRhWzddICYgMHhmOCkgfHwgKGRhdGFbOF0gJiAweGZmKSkgewogCQkJd2Fjb21faW5wdXRfc3luYyh3Y29tYm8pOyAvKiBzeW5jIGxhc3QgZXZlbnQgKi8KIAkJCXdhY29tLT5pZFsxXSA9IDE7Ci0JCQl3YWNvbS0+c2VyaWFsWzFdID0gKGRhdGFbN10gJiAweGY4KTsKIAkJCXdhY29tX3JlcG9ydF9rZXkod2NvbWJvLCBCVE5fMCwgKGRhdGFbN10gJiAweDA4KSk7CiAJCQl3YWNvbV9yZXBvcnRfa2V5KHdjb21ibywgQlROXzEsIChkYXRhWzddICYgMHgyMCkpOwogCQkJd2Fjb21fcmVwb3J0X2tleSh3Y29tYm8sIEJUTl80LCAoZGF0YVs3XSAmIDB4MTApKTsKQEAgLTQzNCwxMCArNDM0LDEyIEBACiAJCXdhY29tX3JlcG9ydF9rZXkod2NvbWJvLCBCVE5fNSwgKGRhdGFbNl0gJiAweDAyKSk7CiAJCXdhY29tX3JlcG9ydF9rZXkod2NvbWJvLCBCVE5fNiwgKGRhdGFbNl0gJiAweDA0KSk7CiAJCXdhY29tX3JlcG9ydF9rZXkod2NvbWJvLCBCVE5fNywgKGRhdGFbNl0gJiAweDA4KSk7CisJCXdhY29tX3JlcG9ydF9rZXkod2NvbWJvLCBCVE5fOCwgKGRhdGFbNV0gJiAweDEwKSk7CisJCXdhY29tX3JlcG9ydF9rZXkod2NvbWJvLCBCVE5fOSwgKGRhdGFbNl0gJiAweDEwKSk7CiAJCXdhY29tX3JlcG9ydF9hYnMod2NvbWJvLCBBQlNfUlgsICgoZGF0YVsxXSAmIDB4MWYpIDw8IDgpIHwgZGF0YVsyXSk7CiAJCXdhY29tX3JlcG9ydF9hYnMod2NvbWJvLCBBQlNfUlksICgoZGF0YVszXSAmIDB4MWYpIDw8IDgpIHwgZGF0YVs0XSk7CiAKLQkJaWYoKGRhdGFbNV0gJiAweDBmKSB8IChkYXRhWzZdICYgMHgwZikgfCAoZGF0YVsxXSAmIDB4MWYpIHwKKwkJaWYgKChkYXRhWzVdICYgMHgxZikgfCAoZGF0YVs2XSAmIDB4MWYpIHwgKGRhdGFbMV0gJiAweDFmKSB8CiAJCQlkYXRhWzJdIHwgKGRhdGFbM10gJiAweDFmKSB8IGRhdGFbNF0pCiAJCQl3YWNvbV9yZXBvcnRfa2V5KHdjb21ibywgd2Fjb20tPnRvb2xbMV0sIDEpOwogCQllbHNlCkBAIC00ODEsMTMgKzQ4MywxMSBAQAogCQlpZiAoZGF0YVsxXSAmIDB4MDIpIHsKIAkJCS8qIFJvdGF0aW9uIHBhY2tldCAqLwogCQkJaWYgKHdhY29tLT5mZWF0dXJlcy0+dHlwZSA+PSBJTlRVT1MzUykgewotCQkJCS8qIEkzIG1hcmtlciBwZW4gcm90YXRpb24gcmVwb3J0ZWQgYXMgd2hlZWwKLQkJCQkgKiBkdWUgdG8gdmFsdWF0b3IgbGltaXRhdGlvbgotCQkJCSAqLworCQkJCS8qIEkzIG1hcmtlciBwZW4gcm90YXRpb24gKi8KIAkJCQl0ID0gKGRhdGFbNl0gPDwgMykgfCAoKGRhdGFbN10gPj4gNSkgJiA3KTsKIAkJCQl0ID0gKGRhdGFbN10gJiAweDIwKSA/ICgodCA+IDkwMCkgPyAoKHQtMSkgLyAyIC0gMTM1MCkgOgogCQkJCQkoKHQtMSkgLyAyICsgNDUwKSkgOiAoNDUwIC0gdCAvIDIpIDsKLQkJCQl3YWNvbV9yZXBvcnRfYWJzKHdjb21ibywgQUJTX1dIRUVMLCB0KTsKKwkJCQl3YWNvbV9yZXBvcnRfYWJzKHdjb21ibywgQUJTX1osIHQpOwogCQkJfSBlbHNlIHsKIAkJCQkvKiA0RCBtb3VzZSByb3RhdGlvbiBwYWNrZXQgKi8KIAkJCQl0ID0gKGRhdGFbNl0gPDwgMykgfCAoKGRhdGFbN10gPj4gNSkgJiA3KTsKQEAgLTU1OCw2ICs1NTgsNyBAQAogCQljYXNlIElOVFVPUzM6CiAJCWNhc2UgSU5UVU9TM0w6CiAJCWNhc2UgQ0lOVElROgorCQljYXNlIFdBQ09NX0JFRToKIAkJCXJldHVybiAod2Fjb21faW50dW9zX2lycSh3YWNvbV93YWMsIHdjb21ibykpOwogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CkBAIC01NzcsNiArNTc4LDggQEAKIAkJY2FzZSBHUkFQSElSRToKIAkJCWlucHV0X2Rldl9nKGlucHV0X2Rldiwgd2Fjb21fd2FjKTsKIAkJCWJyZWFrOworCQljYXNlIFdBQ09NX0JFRToKKwkJCWlucHV0X2Rldl9iZWUoaW5wdXRfZGV2LCB3YWNvbV93YWMpOwogCQljYXNlIElOVFVPUzM6CiAJCWNhc2UgSU5UVU9TM0w6CiAJCWNhc2UgQ0lOVElROgpAQCAtNjA3LDEyICs2MTAsMTUgQEAKIAl7ICJXYWNvbSBHcmFwaGlyZTMgNng4IiwgOCwgIDE2NzA0LCAxMjA2NCwgIDUxMSwgNjMsIEdSQVBISVJFIH0sCiAJeyAiV2Fjb20gR3JhcGhpcmU0IDR4NSIsIDgsICAxMDIwOCwgIDc0MjQsICA1MTEsIDYzLCBXQUNPTV9HNCB9LAogCXsgIldhY29tIEdyYXBoaXJlNCA2eDgiLCA4LCAgMTY3MDQsIDEyMDY0LCAgNTExLCA2MywgV0FDT01fRzQgfSwKKwl7ICJXYWNvbSBCYW1ib29GdW4gNHg1IiwgOSwgIDE0NzYwLCAgOTIyNSwgIDUxMSwgNjMsIFdBQ09NX01PIH0sCisJeyAiV2Fjb20gQmFtYm9vRnVuIDZ4OCIsIDksICAyMTY0OCwgMTM1MzAsICA1MTEsIDYzLCBXQUNPTV9NTyB9LAogCXsgIldhY29tIFZvbGl0byIsICAgICAgICA4LCAgIDUxMDQsICAzNzEyLCAgNTExLCA2MywgR1JBUEhJUkUgfSwKIAl7ICJXYWNvbSBQZW5TdGF0aW9uMiIsICAgOCwgICAzMjUwLCAgMjMyMCwgIDI1NSwgNjMsIEdSQVBISVJFIH0sCiAJeyAiV2Fjb20gVm9saXRvMiA0eDUiLCAgIDgsICAgNTEwNCwgIDM3MTIsICA1MTEsIDYzLCBHUkFQSElSRSB9LAogCXsgIldhY29tIFZvbGl0bzIgMngzIiwgICA4LCAgIDMyNDgsICAyMzIwLCAgNTExLCA2MywgR1JBUEhJUkUgfSwKLQl7ICJXYWNvbSBQZW5QYXJ0bmVyMiIsICAgOCwgICAzMjUwLCAgMjMyMCwgIDI1NSwgNjMsIEdSQVBISVJFIH0sCisJeyAiV2Fjb20gUGVuUGFydG5lcjIiLCAgIDgsICAgMzI1MCwgIDIzMjAsICA1MTEsIDYzLCBHUkFQSElSRSB9LAogCXsgIldhY29tIEJhbWJvbyIsICAgICAgICA5LCAgMTQ3NjAsICA5MjI1LCAgNTExLCA2MywgV0FDT01fTU8gfSwKKwl7ICJXYWNvbSBCYW1ib28xIiwgICAgICAgOCwgICA1MTA0LCAgMzcxMiwgIDUxMSwgNjMsIEdSQVBISVJFIH0sCiAJeyAiV2Fjb20gSW50dW9zIDR4NSIsICAgMTAsICAxMjcwMCwgMTA2MDAsIDEwMjMsIDMxLCBJTlRVT1MgfSwKIAl7ICJXYWNvbSBJbnR1b3MgNng4IiwgICAxMCwgIDIwMzIwLCAxNjI0MCwgMTAyMywgMzEsIElOVFVPUyB9LAogCXsgIldhY29tIEludHVvcyA5eDEyIiwgIDEwLCAgMzA0ODAsIDI0MDYwLCAxMDIzLCAzMSwgSU5UVU9TIH0sCkBAIC02NDMsNiArNjQ5LDcgQEAKIAl7ICJXYWNvbSBJbnR1b3MzIDZ4MTEiLCAgMTAsIDU0MjA0LCAzMTc1MCwgMTAyMywgNjMsIElOVFVPUzMgfSwKIAl7ICJXYWNvbSBJbnR1b3MzIDR4NiIsICAgMTAsIDMxNDk2LCAxOTY4NSwgMTAyMywgNjMsIElOVFVPUzNTIH0sCiAJeyAiV2Fjb20gQ2ludGlxIDIxVVgiLCAgIDEwLCA4NzIwMCwgNjU2MDAsIDEwMjMsIDYzLCBDSU5USVEgfSwKKwl7ICJXYWNvbSBDaW50aXEgMTJXWCIsICAgMTAsIDUzMDIwLCAzMzQ0MCwgMTAyMywgNjMsIFdBQ09NX0JFRSB9LAogCXsgIldhY29tIEludHVvczIgNng4IiwgICAxMCwgMjAzMjAsIDE2MjQwLCAxMDIzLCAzMSwgSU5UVU9TIH0sCiAJeyB9CiB9OwpAQCAtNjU2LDEyICs2NjMsMTUgQEAKIAl7IFVTQl9ERVZJQ0UoVVNCX1ZFTkRPUl9JRF9XQUNPTSwgMHgxNCkgfSwKIAl7IFVTQl9ERVZJQ0UoVVNCX1ZFTkRPUl9JRF9XQUNPTSwgMHgxNSkgfSwKIAl7IFVTQl9ERVZJQ0UoVVNCX1ZFTkRPUl9JRF9XQUNPTSwgMHgxNikgfSwKKwl7IFVTQl9ERVZJQ0UoVVNCX1ZFTkRPUl9JRF9XQUNPTSwgMHgxNykgfSwKKwl7IFVTQl9ERVZJQ0UoVVNCX1ZFTkRPUl9JRF9XQUNPTSwgMHgxOCkgfSwKIAl7IFVTQl9ERVZJQ0UoVVNCX1ZFTkRPUl9JRF9XQUNPTSwgMHg2MCkgfSwKIAl7IFVTQl9ERVZJQ0UoVVNCX1ZFTkRPUl9JRF9XQUNPTSwgMHg2MSkgfSwKIAl7IFVTQl9ERVZJQ0UoVVNCX1ZFTkRPUl9JRF9XQUNPTSwgMHg2MikgfSwKIAl7IFVTQl9ERVZJQ0UoVVNCX1ZFTkRPUl9JRF9XQUNPTSwgMHg2MykgfSwKIAl7IFVTQl9ERVZJQ0UoVVNCX1ZFTkRPUl9JRF9XQUNPTSwgMHg2NCkgfSwKIAl7IFVTQl9ERVZJQ0UoVVNCX1ZFTkRPUl9JRF9XQUNPTSwgMHg2NSkgfSwKKwl7IFVTQl9ERVZJQ0UoVVNCX1ZFTkRPUl9JRF9XQUNPTSwgMHg2OSkgfSwKIAl7IFVTQl9ERVZJQ0UoVVNCX1ZFTkRPUl9JRF9XQUNPTSwgMHgyMCkgfSwKIAl7IFVTQl9ERVZJQ0UoVVNCX1ZFTkRPUl9JRF9XQUNPTSwgMHgyMSkgfSwKIAl7IFVTQl9ERVZJQ0UoVVNCX1ZFTkRPUl9JRF9XQUNPTSwgMHgyMikgfSwKQEAgLTY5Miw2ICs3MDIsNyBAQAogCXsgVVNCX0RFVklDRShVU0JfVkVORE9SX0lEX1dBQ09NLCAweEI1KSB9LAogCXsgVVNCX0RFVklDRShVU0JfVkVORE9SX0lEX1dBQ09NLCAweEI3KSB9LAogCXsgVVNCX0RFVklDRShVU0JfVkVORE9SX0lEX1dBQ09NLCAweDNGKSB9LAorCXsgVVNCX0RFVklDRShVU0JfVkVORE9SX0lEX1dBQ09NLCAweEM2KSB9LAogCXsgVVNCX0RFVklDRShVU0JfVkVORE9SX0lEX1dBQ09NLCAweDQ3KSB9LAogCXsgfQogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQvdGFibGV0L3dhY29tX3dhYy5oIGIvZHJpdmVycy9pbnB1dC90YWJsZXQvd2Fjb21fd2FjLmgKaW5kZXggYTMwMmUyMi4uMzM0MmJjMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC90YWJsZXQvd2Fjb21fd2FjLmgKKysrIGIvZHJpdmVycy9pbnB1dC90YWJsZXQvd2Fjb21fd2FjLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAlJTlRVT1MzLAogCUlOVFVPUzNMLAogCUNJTlRJUSwKKwlXQUNPTV9CRUUsCiAJV0FDT01fTU8sCiAJTUFYX1RZUEUKIH07CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL2Fkczc4NDYuYyBiL2RyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vYWRzNzg0Ni5jCmluZGV4IDU4OTM0YTQuLjU3YTFjMjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vYWRzNzg0Ni5jCisrKyBiL2RyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vYWRzNzg0Ni5jCkBAIC0yMTMsNyArMjEzLDcgQEAKIAlzdHJ1Y3QgYWRzNzg0NgkJKnRzID0gZGV2X2dldF9kcnZkYXRhKGRldik7CiAJc3RydWN0IHNlcl9yZXEJCSpyZXEgPSBremFsbG9jKHNpemVvZiAqcmVxLCBHRlBfS0VSTkVMKTsKIAlpbnQJCQlzdGF0dXM7Ci0JaW50CQkJc2FtcGxlOworCWludAkJCXVuaW5pdGlhbGl6ZWRfdmFyKHNhbXBsZSk7CiAJaW50CQkJdXNlX2ludGVybmFsOwogCiAJaWYgKCFyZXEpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lzZG4vaTRsL2lzZG5fY29tbW9uLmMgYi9kcml2ZXJzL2lzZG4vaTRsL2lzZG5fY29tbW9uLmMKaW5kZXggOWNlZjZmYy4uZDRhZDY5OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pc2RuL2k0bC9pc2RuX2NvbW1vbi5jCisrKyBiL2RyaXZlcnMvaXNkbi9pNGwvaXNkbl9jb21tb24uYwpAQCAtOTgxLDEzICs5ODEsMTMgQEAKIH0KIAogCi1zdGF0aWMgX19pbmxpbmUgaW50CitzdGF0aWMgaW5saW5lIGludAogaXNkbl9taW5vcjJkcnYoaW50IG1pbm9yKQogewogCXJldHVybiAoZGV2LT5kcnZtYXBbbWlub3JdKTsKIH0KIAotc3RhdGljIF9faW5saW5lIGludAorc3RhdGljIGlubGluZSBpbnQKIGlzZG5fbWlub3IyY2hhbihpbnQgbWlub3IpCiB7CiAJcmV0dXJuIChkZXYtPmNoYW5tYXBbbWlub3JdKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXNkbi9pNGwvaXNkbl9uZXQuYyBiL2RyaXZlcnMvaXNkbi9pNGwvaXNkbl9uZXQuYwppbmRleCBjZWQ4M2MyLi5lZjFhMzAwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lzZG4vaTRsL2lzZG5fbmV0LmMKKysrIGIvZHJpdmVycy9pc2RuL2k0bC9pc2RuX25ldC5jCkBAIC0yMDEwLDYgKzIwMTAsNyBAQAogCW5kZXYtPmZsYWdzID0gSUZGX05PQVJQfElGRl9QT0lOVE9QT0lOVDsKIAluZGV2LT50eXBlID0gQVJQSFJEX0VUSEVSOwogCW5kZXYtPmFkZHJfbGVuID0gRVRIX0FMRU47CisJbmRldi0+dmFsaWRhdGVfYWRkciA9IE5VTEw7CiAKIAkvKiBmb3IgY2xpZW50cyB3aXRoIE1QUFAgbWF5YmUgaGlnaGVyIHZhbHVlcyBiZXR0ZXIgKi8KIAluZGV2LT50eF9xdWV1ZV9sZW4gPSAzMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXNkbi9pNGwvaXNkbl92MTEwLmMgYi9kcml2ZXJzL2lzZG4vaTRsL2lzZG5fdjExMC5jCmluZGV4IDU0ODRkM2MuLmM1ZDAyYjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaXNkbi9pNGwvaXNkbl92MTEwLmMKKysrIGIvZHJpdmVycy9pc2RuL2k0bC9pc2RuX3YxMTAuYwpAQCAtNjIsNyArNjIsNyBAQAogICogYW5kIHRvIDY3NDUyMzAxIHdoZW4ga2V5bGVuID0gMi4gVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBvcmRlcmluZyBvbgogICogdGhlIGlzZG4gbGluZSBpcyB0aGUgb3RoZXIgd2F5LgogICovCi1zdGF0aWMgX19pbmxpbmUgdW5zaWduZWQgY2hhcgorc3RhdGljIGlubGluZSB1bnNpZ25lZCBjaGFyCiBGbGlwQml0cyh1bnNpZ25lZCBjaGFyIGMsIGludCBrZXlsZW4pCiB7CiAJdW5zaWduZWQgY2hhciBiID0gYzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbGVkcy9sZWRzLWFtcy1kZWx0YS5jIGIvZHJpdmVycy9sZWRzL2xlZHMtYW1zLWRlbHRhLmMKaW5kZXggOWUzMDc3NC4uYzM3YmIwZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9sZWRzL2xlZHMtYW1zLWRlbHRhLmMKKysrIGIvZHJpdmVycy9sZWRzL2xlZHMtYW1zLWRlbHRhLmMKQEAgLTE0MCw2ICsxNDAsNyBAQAogCS5yZXN1bWUJCT0gYW1zX2RlbHRhX2xlZF9yZXN1bWUsCiAJLmRyaXZlcgkJPSB7CiAJCS5uYW1lID0gImFtcy1kZWx0YS1sZWQiLAorCQkub3duZXIgPSBUSElTX01PRFVMRSwKIAl9LAogfTsKIApAQCAtMTU5LDMgKzE2MCw0IEBACiBNT0RVTEVfQVVUSE9SKCJKb25hdGhhbiBNY0Rvd2VsbCA8bm9vZGxlc0BlYXJ0aC5saT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiQW1zdHJhZCBEZWx0YSBMRUQgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOmFtcy1kZWx0YS1sZWQiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbGVkcy9sZWRzLWF0bWVsLXB3bS5jIGIvZHJpdmVycy9sZWRzL2xlZHMtYXRtZWwtcHdtLmMKaW5kZXggYWY2MWY1NS4uMjhkYjZjMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9sZWRzL2xlZHMtYXRtZWwtcHdtLmMKKysrIGIvZHJpdmVycy9sZWRzL2xlZHMtYXRtZWwtcHdtLmMKQEAgLTEzMiw2ICsxMzIsOSBAQAogCXJldHVybiAwOwogfQogCisvKiB3b3JrIHdpdGggaG90cGx1ZyBhbmQgY29sZHBsdWcgKi8KK01PRFVMRV9BTElBUygicGxhdGZvcm06bGVkcy1hdG1lbC1wd20iKTsKKwogc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgcHdtbGVkX2RyaXZlciA9IHsKIAkuZHJpdmVyID0gewogCQkubmFtZSA9CQkibGVkcy1hdG1lbC1wd20iLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9sZWRzL2xlZHMtY2xldm8tbWFpbC5jIGIvZHJpdmVycy9sZWRzL2xlZHMtY2xldm8tbWFpbC5jCmluZGV4IDZjM2QzM2IuLjU3NTBiMDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbGVkcy9sZWRzLWNsZXZvLW1haWwuYworKysgYi9kcml2ZXJzL2xlZHMvbGVkcy1jbGV2by1tYWlsLmMKQEAgLTE3MCw2ICsxNzAsNyBAQAogCS5yZXN1bWUJCT0gY2xldm9fbWFpbF9sZWRfcmVzdW1lLAogCS5kcml2ZXIJCT0gewogCQkubmFtZQkJPSBLQlVJTERfTU9ETkFNRSwKKwkJLm93bmVyCQk9IFRISVNfTU9EVUxFLAogCX0sCiB9OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2xlZHMvbGVkcy1jbS14MjcwLmMgYi9kcml2ZXJzL2xlZHMvbGVkcy1jbS14MjcwLmMKaW5kZXggOWFlYmVmMC4uYWNjYzdlZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9sZWRzL2xlZHMtY20teDI3MC5jCisrKyBiL2RyaXZlcnMvbGVkcy9sZWRzLWNtLXgyNzAuYwpAQCAtMTAxLDYgKzEwMSw3IEBACiAjZW5kaWYKIAkuZHJpdmVyCQk9IHsKIAkJLm5hbWUJCT0gImNtLXgyNzAtbGVkIiwKKwkJLm93bmVyCQk9IFRISVNfTU9EVUxFLAogCX0sCiB9OwogCkBAIC0xMjAsMyArMTIxLDQgQEAKIE1PRFVMRV9BVVRIT1IoIk1pa2UgUmFwb3BvcnQgPG1pa2VAY29tcHVsYWIuY28uaWw+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkNNLXgyNzAgTEVEIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybTpjbS14MjcwLWxlZCIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9sZWRzL2xlZHMtY29iYWx0LXF1YmUuYyBiL2RyaXZlcnMvbGVkcy9sZWRzLWNvYmFsdC1xdWJlLmMKaW5kZXggZDJiNTRiNS4uMDk2ODgxYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9sZWRzL2xlZHMtY29iYWx0LXF1YmUuYworKysgYi9kcml2ZXJzL2xlZHMvbGVkcy1jb2JhbHQtcXViZS5jCkBAIC03NSw2ICs3NSw5IEBACiAJcmV0dXJuIDA7CiB9CiAKKy8qIHdvcmsgd2l0aCBob3RwbHVnIGFuZCBjb2xkcGx1ZyAqLworTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybTpjb2JhbHQtcXViZS1sZWRzIik7CisKIHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGNvYmFsdF9xdWJlX2xlZF9kcml2ZXIgPSB7CiAJLnByb2JlCT0gY29iYWx0X3F1YmVfbGVkX3Byb2JlLAogCS5yZW1vdmUJPSBfX2RldmV4aXRfcChjb2JhbHRfcXViZV9sZWRfcmVtb3ZlKSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbGVkcy9sZWRzLWNvcmdpLmMgYi9kcml2ZXJzL2xlZHMvbGVkcy1jb3JnaS5jCmluZGV4IGU0NWY2YzQuLjI5ZTkzMWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbGVkcy9sZWRzLWNvcmdpLmMKKysrIGIvZHJpdmVycy9sZWRzL2xlZHMtY29yZ2kuYwpAQCAtOTksNiArOTksNyBAQAogI2VuZGlmCiAJLmRyaXZlcgkJPSB7CiAJCS5uYW1lCQk9ICJjb3JnaS1sZWQiLAorCQkub3duZXIJCT0gVEhJU19NT0RVTEUsCiAJfSwKIH07CiAKQEAgLTExOCwzICsxMTksNCBAQAogTU9EVUxFX0FVVEhPUigiUmljaGFyZCBQdXJkaWUgPHJwdXJkaWVAb3BlbmVkaGFuZC5jb20+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkNvcmdpIExFRCBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06Y29yZ2ktbGVkIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2xlZHMvbGVkcy1ncGlvLmMgYi9kcml2ZXJzL2xlZHMvbGVkcy1ncGlvLmMKaW5kZXggNmMwYTljNC4uMWFhZThiMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9sZWRzL2xlZHMtZ3Bpby5jCisrKyBiL2RyaXZlcnMvbGVkcy9sZWRzLWdwaW8uYwpAQCAtNDksMTMgKzQ5LDEzIEBACiAJaWYgKGxlZF9kYXQtPmFjdGl2ZV9sb3cpCiAJCWxldmVsID0gIWxldmVsOwogCi0JLyogc2V0dGluZyBHUElPcyB3aXRoIEkyQy9ldGMgcmVxdWlyZXMgYSBwcmVlbXB0aWJsZSB0YXNrIGNvbnRleHQgKi8KKwkvKiBTZXR0aW5nIEdQSU9zIHdpdGggSTJDL2V0YyByZXF1aXJlcyBhIHRhc2sgY29udGV4dCwgYW5kIHdlIGRvbid0CisJICogc2VlbSB0byBoYXZlIGEgcmVsaWFibGUgd2F5IHRvIGtub3cgaWYgd2UncmUgYWxyZWFkeSBpbiBvbmU7IHNvCisJICogbGV0J3MganVzdCBhc3N1bWUgdGhlIHdvcnN0LgorCSAqLwogCWlmIChsZWRfZGF0LT5jYW5fc2xlZXApIHsKLQkJaWYgKHByZWVtcHRfY291bnQoKSkgewotCQkJbGVkX2RhdC0+bmV3X2xldmVsID0gbGV2ZWw7Ci0JCQlzY2hlZHVsZV93b3JrKCZsZWRfZGF0LT53b3JrKTsKLQkJfSBlbHNlCi0JCQlncGlvX3NldF92YWx1ZV9jYW5zbGVlcChsZWRfZGF0LT5ncGlvLCBsZXZlbCk7CisJCWxlZF9kYXQtPm5ld19sZXZlbCA9IGxldmVsOworCQlzY2hlZHVsZV93b3JrKCZsZWRfZGF0LT53b3JrKTsKIAl9IGVsc2UKIAkJZ3Bpb19zZXRfdmFsdWUobGVkX2RhdC0+Z3BpbywgbGV2ZWwpOwogfQpAQCAtNzksNiArNzksMTAgQEAKIAkJY3VyX2xlZCA9ICZwZGF0YS0+bGVkc1tpXTsKIAkJbGVkX2RhdCA9ICZsZWRzX2RhdGFbaV07CiAKKwkJcmV0ID0gZ3Bpb19yZXF1ZXN0KGN1cl9sZWQtPmdwaW8sIGN1cl9sZWQtPm5hbWUpOworCQlpZiAocmV0IDwgMCkKKwkJCWdvdG8gZXJyOworCiAJCWxlZF9kYXQtPmNkZXYubmFtZSA9IGN1cl9sZWQtPm5hbWU7CiAJCWxlZF9kYXQtPmNkZXYuZGVmYXVsdF90cmlnZ2VyID0gY3VyX2xlZC0+ZGVmYXVsdF90cmlnZ2VyOwogCQlsZWRfZGF0LT5ncGlvID0gY3VyX2xlZC0+Z3BpbzsKQEAgLTg3LDEwICs5MSw2IEBACiAJCWxlZF9kYXQtPmNkZXYuYnJpZ2h0bmVzc19zZXQgPSBncGlvX2xlZF9zZXQ7CiAJCWxlZF9kYXQtPmNkZXYuYnJpZ2h0bmVzcyA9IExFRF9PRkY7CiAKLQkJcmV0ID0gZ3Bpb19yZXF1ZXN0KGxlZF9kYXQtPmdwaW8sIGxlZF9kYXQtPmNkZXYubmFtZSk7Ci0JCWlmIChyZXQgPCAwKQotCQkJZ290byBlcnI7Ci0KIAkJZ3Bpb19kaXJlY3Rpb25fb3V0cHV0KGxlZF9kYXQtPmdwaW8sIGxlZF9kYXQtPmFjdGl2ZV9sb3cpOwogCiAJCUlOSVRfV09SSygmbGVkX2RhdC0+d29yaywgZ3Bpb19sZWRfd29yayk7CkBAIC0xOTksMyArMTk5LDQgQEAKIE1PRFVMRV9BVVRIT1IoIlJhcGhhZWwgQXNzZW5hdCA8cmFwaEA4ZC5jb20+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkdQSU8gTEVEIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybTpsZWRzLWdwaW8iKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbGVkcy9sZWRzLWgxOTQwLmMgYi9kcml2ZXJzL2xlZHMvbGVkcy1oMTk0MC5jCmluZGV4IDY3N2M5OTMuLjZlNTFjOWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbGVkcy9sZWRzLWgxOTQwLmMKKysrIGIvZHJpdmVycy9sZWRzL2xlZHMtaDE5NDAuYwpAQCAtMTM5LDYgKzEzOSw3IEBACiBzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBoMTk0MGxlZHNfZHJpdmVyID0gewogCS5kcml2ZXIJCT0gewogCQkubmFtZQk9ICJoMTk0MC1sZWRzIiwKKwkJLm93bmVyCT0gVEhJU19NT0RVTEUsCiAJfSwKIAkucHJvYmUJCT0gaDE5NDBsZWRzX3Byb2JlLAogCS5yZW1vdmUJCT0gaDE5NDBsZWRzX3JlbW92ZSwKQEAgLTE2MSwzICsxNjIsNCBAQAogTU9EVUxFX0FVVEhPUigiQXJuYXVkIFBhdGFyZCA8YXJuYXVkLnBhdGFyZEBydHAtbmV0Lm9yZz4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTEVEIGRyaXZlciBmb3IgdGhlIGlQQVEgSDE5NDAiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06aDE5NDAtbGVkcyIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9sZWRzL2xlZHMtaHA2eHguYyBiL2RyaXZlcnMvbGVkcy9sZWRzLWhwNnh4LmMKaW5kZXggODJkNGVjMy4uODcwZjVhMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9sZWRzL2xlZHMtaHA2eHguYworKysgYi9kcml2ZXJzL2xlZHMvbGVkcy1ocDZ4eC5jCkBAIC05MCw2ICs5MCw5IEBACiAJcmV0dXJuIDA7CiB9CiAKKy8qIHdvcmsgd2l0aCBob3RwbHVnIGFuZCBjb2xkcGx1ZyAqLworTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybTpocDZ4eC1sZWQiKTsKKwogc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgaHA2eHhsZWRfZHJpdmVyID0gewogCS5wcm9iZQkJPSBocDZ4eGxlZF9wcm9iZSwKIAkucmVtb3ZlCQk9IGhwNnh4bGVkX3JlbW92ZSwKQEAgLTk5LDYgKzEwMiw3IEBACiAjZW5kaWYKIAkuZHJpdmVyCQk9IHsKIAkJLm5hbWUJCT0gImhwNnh4LWxlZCIsCisJCS5vd25lcgkJPSBUSElTX01PRFVMRSwKIAl9LAogfTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9sZWRzL2xlZHMtczNjMjR4eC5jIGIvZHJpdmVycy9sZWRzL2xlZHMtczNjMjR4eC5jCmluZGV4IDBmZDY0MDcuLjBkMTBlMTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbGVkcy9sZWRzLXMzYzI0eHguYworKysgYi9kcml2ZXJzL2xlZHMvbGVkcy1zM2MyNHh4LmMKQEAgLTE2MCwzICsxNjAsNCBAQAogTU9EVUxFX0FVVEhPUigiQmVuIERvb2tzIDxiZW5Ac2ltdGVjLmNvLnVrPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJTM0MyNFhYIExFRCBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06czNjMjR4eF9sZWQiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbGVkcy9sZWRzLXNwaXR6LmMgYi9kcml2ZXJzL2xlZHMvbGVkcy1zcGl0ei5jCmluZGV4IDkzZTEwMTIuLjg3MDA3Y2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbGVkcy9sZWRzLXNwaXR6LmMKKysrIGIvZHJpdmVycy9sZWRzL2xlZHMtc3BpdHouYwpAQCAtMTA1LDYgKzEwNSw3IEBACiAjZW5kaWYKIAkuZHJpdmVyCQk9IHsKIAkJLm5hbWUJCT0gInNwaXR6LWxlZCIsCisJCS5vd25lcgkJPSBUSElTX01PRFVMRSwKIAl9LAogfTsKIApAQCAtMTI0LDMgKzEyNSw0IEBACiBNT0RVTEVfQVVUSE9SKCJSaWNoYXJkIFB1cmRpZSA8cnB1cmRpZUBvcGVuZWRoYW5kLmNvbT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiU3BpdHogTEVEIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybTpzcGl0ei1sZWQiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbGVkcy9sZWRzLXRvc2EuYyBiL2RyaXZlcnMvbGVkcy9sZWRzLXRvc2EuYwppbmRleCA5ZTBhMTg4Li43ZWJlY2M0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2xlZHMvbGVkcy10b3NhLmMKKysrIGIvZHJpdmVycy9sZWRzL2xlZHMtdG9zYS5jCkBAIC0xMDksNiArMTA5LDcgQEAKIAkucmVzdW1lCQk9IHRvc2FsZWRfcmVzdW1lLAogCS5kcml2ZXIJCT0gewogCQkubmFtZQkJPSAidG9zYS1sZWQiLAorCQkub3duZXIJCT0gVEhJU19NT0RVTEUsCiAJfSwKIH07CiAKQEAgLTEyOCwzICsxMjksNCBAQAogTU9EVUxFX0FVVEhPUigiRGlyayBPcGZlciA8RGlya0BPcGZlci1PbmxpbmUuZGU+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIlRvc2EgTEVEIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybTp0b3NhLWxlZCIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9sZ3Vlc3QvTWFrZWZpbGUgYi9kcml2ZXJzL2xndWVzdC9NYWtlZmlsZQppbmRleCA1ZTgyNzJkLi43ZDQ2M2MyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2xndWVzdC9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2xndWVzdC9NYWtlZmlsZQpAQCAtMTksMyArMTksMTEgQEAKIAlAZm9yIGYgaW4gUHJlcGFyYXRpb24gR3Vlc3QgRHJpdmVycyBMYXVuY2hlciBIb3N0IFN3aXRjaGVyIE1hc3Rlcnk7IGRvIGVjaG8gIns9PS0gJCRmIC09PX0iOyBtYWtlIC1zICQkZjsgZG9uZTsgZWNobyAiez09LT09fSIKIFByZXBhcmF0aW9uIFByZXBhcmF0aW9uISBHdWVzdCBEcml2ZXJzIExhdW5jaGVyIEhvc3QgU3dpdGNoZXIgTWFzdGVyeToKIAlAc2ggLi4vLi4vRG9jdW1lbnRhdGlvbi9sZ3Vlc3QvZXh0cmFjdCAkKFBSRUZJWCkgYGZpbmQgLi4vLi4vKiAtbmFtZSAnKi5bY2hTXScgLXdob2xlbmFtZSAnKmxndWVzdConYAorUHVwcHk6CisJQGNsZWFyCisJQHByaW50ZiAiICAgICAgX18gIFxuIChfX18oKSdcYDtcbiAvLCAgICAvXGBcbiBcXFxcXFxcIi0tXFxcXFxcICAgXG4iCisJQHNsZWVwIDI7IGNsZWFyOyBwcmludGYgIlxuXG4gICBTaXQhXG5cbiI7IHNsZWVwIDE7IGNsZWFyCisJQHByaW50ZiAiICAgIF9fICAgIFxuICAgKCknXGA7ICBcbiAgIC9cXHxcYCBcbiAgLyAgfCAgXG4oL18pX3xfICAgXG4iCisJQHNsZWVwIDI7IGNsZWFyOyBwcmludGYgIlxuXG4gIFN0YW5kIVxuXG4iOyBzbGVlcCAxOyBjbGVhcgorCUBwcmludGYgIiAgICBfXyAgICBcbiAgICgpJ1xgOyAgXG4gICAvXFx8XGAgXG4gIC8uXy49IFxuIC98IC8gICAgIFxuKF9cXylfICAgIFxuIgorCUBzbGVlcCAyOyBjbGVhcjsgcHJpbnRmICJcblxuICBHb29kIHB1cHB5IVxuXG4iOyBzbGVlcCAxOyBjbGVhcgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9sZ3Vlc3QvY29yZS5jIGIvZHJpdmVycy9sZ3Vlc3QvY29yZS5jCmluZGV4IGM2MzJjMDguLjVlZWE0MzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbGd1ZXN0L2NvcmUuYworKysgYi9kcml2ZXJzL2xndWVzdC9jb3JlLmMKQEAgLTEsOCArMSw2IEBACiAvKlA6NDAwIFRoaXMgY29udGFpbnMgcnVuX2d1ZXN0KCkgd2hpY2ggYWN0dWFsbHkgY2FsbHMgaW50byB0aGUgSG9zdDwtPkd1ZXN0CiAgKiBTd2l0Y2hlciBhbmQgYW5hbHl6ZXMgdGhlIHJldHVybiwgc3VjaCBhcyBkZXRlcm1pbmluZyBpZiB0aGUgR3Vlc3Qgd2FudHMgdGhlCi0gKiBIb3N0IHRvIGRvIHNvbWV0aGluZy4gIFRoaXMgZmlsZSBhbHNvIGNvbnRhaW5zIHVzZWZ1bCBoZWxwZXIgcm91dGluZXMsIGFuZCBhCi0gKiBjb3VwbGUgb2Ygbm9uLW9idmlvdXMgc2V0dXAgYW5kIHRlYXJkb3duIHBpZWNlcyB3aGljaCB3ZXJlIGltcGxlbWVudGVkIGFmdGVyCi0gKiBkYXlzIG9mIGRlYnVnZ2luZyBwYWluLiA6Ki8KKyAqIEhvc3QgdG8gZG8gc29tZXRoaW5nLiAgVGhpcyBmaWxlIGFsc28gY29udGFpbnMgdXNlZnVsIGhlbHBlciByb3V0aW5lcy4gOiovCiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CiAjaW5jbHVkZSA8bGludXgvc3RyaW5naWZ5Lmg+CiAjaW5jbHVkZSA8bGludXgvc3RkZGVmLmg+CkBAIC00OSw4ICs0Nyw4IEBACiAJICogZWFzeS4KIAkgKi8KIAotCS8qIFdlIGFsbG9jYXRlIGFuIGFycmF5IG9mICJzdHJ1Y3QgcGFnZSJzLiAgbWFwX3ZtX2FyZWEoKSB3YW50cyB0aGUKLQkgKiBwYWdlcyBpbiB0aGlzIGZvcm0sIHJhdGhlciB0aGFuIGp1c3QgYW4gYXJyYXkgb2YgcG9pbnRlcnMuICovCisJLyogV2UgYWxsb2NhdGUgYW4gYXJyYXkgb2Ygc3RydWN0IHBhZ2UgcG9pbnRlcnMuICBtYXBfdm1fYXJlYSgpIHdhbnRzCisJICogdGhpcywgcmF0aGVyIHRoYW4ganVzdCBhbiBhcnJheSBvZiBwYWdlcy4gKi8KIAlzd2l0Y2hlcl9wYWdlID0ga21hbGxvYyhzaXplb2Yoc3dpdGNoZXJfcGFnZVswXSkqVE9UQUxfU1dJVENIRVJfUEFHRVMsCiAJCQkJR0ZQX0tFUk5FTCk7CiAJaWYgKCFzd2l0Y2hlcl9wYWdlKSB7CkBAIC0xNzIsNyArMTcwLDcgQEAKIAl9CiB9CiAKLS8qIFRoaXMgaXMgdGhlIHdyaXRlIChjb3B5IGludG8gZ3Vlc3QpIHZlcnNpb24uICovCisvKiBUaGlzIGlzIHRoZSB3cml0ZSAoY29weSBpbnRvIEd1ZXN0KSB2ZXJzaW9uLiAqLwogdm9pZCBfX2xnd3JpdGUoc3RydWN0IGxnX2NwdSAqY3B1LCB1bnNpZ25lZCBsb25nIGFkZHIsIGNvbnN0IHZvaWQgKmIsCiAJICAgICAgIHVuc2lnbmVkIGJ5dGVzKQogewpAQCAtMjA5LDkgKzIwNyw5IEBACiAJCWlmIChjcHUtPmJyZWFrX291dCkKIAkJCXJldHVybiAtRUFHQUlOOwogCi0JCS8qIENoZWNrIGlmIHRoZXJlIGFyZSBhbnkgaW50ZXJydXB0cyB3aGljaCBjYW4gYmUgZGVsaXZlcmVkCi0JCSAqIG5vdzogaWYgc28sIHRoaXMgc2V0cyB1cCB0aGUgaGFuZGVyIHRvIGJlIGV4ZWN1dGVkIHdoZW4gd2UKLQkJICogbmV4dCBydW4gdGhlIEd1ZXN0LiAqLworCQkvKiBDaGVjayBpZiB0aGVyZSBhcmUgYW55IGludGVycnVwdHMgd2hpY2ggY2FuIGJlIGRlbGl2ZXJlZCBub3c6CisJCSAqIGlmIHNvLCB0aGlzIHNldHMgdXAgdGhlIGhhbmRlciB0byBiZSBleGVjdXRlZCB3aGVuIHdlIG5leHQKKwkJICogcnVuIHRoZSBHdWVzdC4gKi8KIAkJbWF5YmVfZG9faW50ZXJydXB0KGNwdSk7CiAKIAkJLyogQWxsIGxvbmctbGl2ZWQga2VybmVsIGxvb3BzIG5lZWQgdG8gY2hlY2sgd2l0aCB0aGlzIGhvcnJpYmxlCkBAIC0yNDYsOCArMjQ0LDEwIEBACiAJCWxndWVzdF9hcmNoX2hhbmRsZV90cmFwKGNwdSk7CiAJfQogCisJLyogU3BlY2lhbCBjYXNlOiBHdWVzdCBpcyAnZGVhZCcgYnV0IHdhbnRzIGEgcmVib290LiAqLwogCWlmIChjcHUtPmxnLT5kZWFkID09IEVSUl9QVFIoLUVSRVNUQVJUKSkKIAkJcmV0dXJuIC1FUkVTVEFSVDsKKwogCS8qIFRoZSBHdWVzdCBpcyBkZWFkID0+ICJObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5IiAqLwogCXJldHVybiAtRU5PRU5UOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9sZ3Vlc3QvaHlwZXJjYWxscy5jIGIvZHJpdmVycy9sZ3Vlc3QvaHlwZXJjYWxscy5jCmluZGV4IDBmMmNiNGYuLjU0ZDY2ZjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbGd1ZXN0L2h5cGVyY2FsbHMuYworKysgYi9kcml2ZXJzL2xndWVzdC9oeXBlcmNhbGxzLmMKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJsZy5oIgogCiAvKkg6MTIwIFRoaXMgaXMgdGhlIGNvcmUgaHlwZXJjYWxsIHJvdXRpbmU6IHdoZXJlIHRoZSBHdWVzdCBnZXRzIHdoYXQgaXQgd2FudHMuCi0gKiBPciBnZXRzIGtpbGxlZC4gIE9yLCBpbiB0aGUgY2FzZSBvZiBMSENBTExfQ1JBU0gsIGJvdGguICovCisgKiBPciBnZXRzIGtpbGxlZC4gIE9yLCBpbiB0aGUgY2FzZSBvZiBMSENBTExfU0hVVERPV04sIGJvdGguICovCiBzdGF0aWMgdm9pZCBkb19oY2FsbChzdHJ1Y3QgbGdfY3B1ICpjcHUsIHN0cnVjdCBoY2FsbF9hcmdzICphcmdzKQogewogCXN3aXRjaCAoYXJncy0+YXJnMCkgewpAQCAtMTkwLDYgKzE5MCwxMyBAQAogCSAqIHBhZ2V0YWJsZS4gKi8KIAlndWVzdF9wYWdldGFibGVfY2xlYXJfYWxsKGNwdSk7CiB9CisvKjoqLworCisvKk06MDEzIElmIGEgR3Vlc3QgcmVhZHMgZnJvbSBhIHBhZ2UgKHNvIGNyZWF0ZXMgYSBtYXBwaW5nKSB0aGF0IGl0IGhhcyBuZXZlcgorICogd3JpdHRlbiB0bywgYW5kIHRoZW4gdGhlIExhdW5jaGVyIHdyaXRlcyB0byBpdCAoaWUuIHRoZSBvdXRwdXQgb2YgYSB2aXJ0dWFsCisgKiBkZXZpY2UpLCB0aGUgR3Vlc3Qgd2lsbCBzdGlsbCBzZWUgdGhlIG9sZCBwYWdlLiAgSW4gcHJhY3RpY2UsIHRoaXMgbmV2ZXIKKyAqIGhhcHBlbnM6IHdoeSB3b3VsZCB0aGUgR3Vlc3QgcmVhZCBhIHBhZ2Ugd2hpY2ggaXQgaGFzIG5ldmVyIHdyaXR0ZW4gdG8/ICBCdXQKKyAqIGEgc2ltaWxhciBzY2VuYXJpbyBtaWdodCBvbmUgZGF5IGJpdGUgdXMsIHNvIGl0J3Mgd29ydGggbWVudGlvbmluZy4gOiovCiAKIC8qSDoxMDAKICAqIEh5cGVyY2FsbHMKQEAgLTIyNyw3ICsyMzQsNyBAQAogCQkgKiBIb3dldmVyLCBpZiB3ZSBhcmUgc2lnbmFsbGVkIG9yIHRoZSBHdWVzdCBzZW5kcyBJL08gdG8gdGhlCiAJCSAqIExhdW5jaGVyLCB0aGUgcnVuX2d1ZXN0KCkgbG9vcCB3aWxsIGV4aXQgd2l0aG91dCBydW5uaW5nIHRoZQogCQkgKiBHdWVzdC4gIFdoZW4gaXQgY29tZXMgYmFjayBpdCB3b3VsZCB0cnkgdG8gcmUtcnVuIHRoZQotCQkgKiBoeXBlcmNhbGwuICovCisJCSAqIGh5cGVyY2FsbC4gIEZpbmRpbmcgdGhhdCBidWcgc3Vja2VkLiAqLwogCQljcHUtPmhjYWxsID0gTlVMTDsKIAl9CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2xndWVzdC9pbnRlcnJ1cHRzX2FuZF90cmFwcy5jIGIvZHJpdmVycy9sZ3Vlc3QvaW50ZXJydXB0c19hbmRfdHJhcHMuYwppbmRleCAzMmU5N2MxLi4wNDE0ZGRmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2xndWVzdC9pbnRlcnJ1cHRzX2FuZF90cmFwcy5jCisrKyBiL2RyaXZlcnMvbGd1ZXN0L2ludGVycnVwdHNfYW5kX3RyYXBzLmMKQEAgLTE0NCw3ICsxNDQsNiBAQAogCWlmIChjb3B5X2Zyb21fdXNlcigmYmxrLCBjcHUtPmxnLT5sZ3Vlc3RfZGF0YS0+YmxvY2tlZF9pbnRlcnJ1cHRzLAogCQkJICAgc2l6ZW9mKGJsaykpKQogCQlyZXR1cm47Ci0KIAliaXRtYXBfYW5kbm90KGJsaywgY3B1LT5pcnFzX3BlbmRpbmcsIGJsaywgTEdVRVNUX0lSUVMpOwogCiAJLyogRmluZCB0aGUgZmlyc3QgaW50ZXJydXB0LiAqLwpAQCAtMjM3LDkgKzIzNiw5IEBACiAJCWNsZWFyX2JpdChzeXNjYWxsX3ZlY3RvciwgdXNlZF92ZWN0b3JzKTsKIH0KIAotLypIOjIyMCBOb3cgd2UndmUgZ290IHRoZSByb3V0aW5lcyB0byBkZWxpdmVyIGludGVycnVwdHMsIGRlbGl2ZXJpbmcgdHJhcHMKLSAqIGxpa2UgcGFnZSBmYXVsdCBpcyBlYXN5LiAgVGhlIG9ubHkgdHJpY2sgaXMgdGhhdCBJbnRlbCBkZWNpZGVkIHRoYXQgc29tZQotICogdHJhcHMgc2hvdWxkIGhhdmUgZXJyb3IgY29kZXM6ICovCisvKkg6MjIwIE5vdyB3ZSd2ZSBnb3QgdGhlIHJvdXRpbmVzIHRvIGRlbGl2ZXIgaW50ZXJydXB0cywgZGVsaXZlcmluZyB0cmFwcyBsaWtlCisgKiBwYWdlIGZhdWx0IGlzIGVhc3kuICBUaGUgb25seSB0cmljayBpcyB0aGF0IEludGVsIGRlY2lkZWQgdGhhdCBzb21lIHRyYXBzCisgKiBzaG91bGQgaGF2ZSBlcnJvciBjb2RlczogKi8KIHN0YXRpYyBpbnQgaGFzX2Vycih1bnNpZ25lZCBpbnQgdHJhcCkKIHsKIAlyZXR1cm4gKHRyYXAgPT0gOCB8fCAodHJhcCA+PSAxMCAmJiB0cmFwIDw9IDE0KSB8fCB0cmFwID09IDE3KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbGd1ZXN0L2xndWVzdF9kZXZpY2UuYyBiL2RyaXZlcnMvbGd1ZXN0L2xndWVzdF9kZXZpY2UuYwppbmRleCAxYjJlYzBiLi4yYmM5YmY3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2xndWVzdC9sZ3Vlc3RfZGV2aWNlLmMKKysrIGIvZHJpdmVycy9sZ3Vlc3QvbGd1ZXN0X2RldmljZS5jCkBAIC0xLDEwICsxLDEwIEBACiAvKlA6MDUwIExndWVzdCBndWVzdHMgdXNlIGEgdmVyeSBzaW1wbGUgbWV0aG9kIHRvIGRlc2NyaWJlIGRldmljZXMuICBJdCdzIGEKLSAqIHNlcmllcyBvZiBkZXZpY2UgZGVzY3JpcHRvcnMgY29udGFpbmVkIGp1c3QgYWJvdmUgdGhlIHRvcCBvZiBub3JtYWwKKyAqIHNlcmllcyBvZiBkZXZpY2UgZGVzY3JpcHRvcnMgY29udGFpbmVkIGp1c3QgYWJvdmUgdGhlIHRvcCBvZiBub3JtYWwgR3Vlc3QKICAqIG1lbW9yeS4KICAqCiAgKiBXZSB1c2UgdGhlIHN0YW5kYXJkICJ2aXJ0aW8iIGRldmljZSBpbmZyYXN0cnVjdHVyZSwgd2hpY2ggcHJvdmlkZXMgdXMgd2l0aCBhCiAgKiBjb25zb2xlLCBhIG5ldHdvcmsgYW5kIGEgYmxvY2sgZHJpdmVyLiAgRWFjaCBvbmUgZXhwZWN0cyBzb21lIGNvbmZpZ3VyYXRpb24KLSAqIGluZm9ybWF0aW9uIGFuZCBhICJ2aXJ0cXVldWUiIG1lY2hhbmlzbSB0byBzZW5kIGFuZCByZWNlaXZlIGRhdGEuIDoqLworICogaW5mb3JtYXRpb24gYW5kIGEgInZpcnRxdWV1ZSIgb3IgdHdvIHRvIHNlbmQgYW5kIHJlY2VpdmUgZGF0YS4gOiovCiAjaW5jbHVkZSA8bGludXgvaW5pdC5oPgogI2luY2x1ZGUgPGxpbnV4L2Jvb3RtZW0uaD4KICNpbmNsdWRlIDxsaW51eC9sZ3Vlc3RfbGF1bmNoZXIuaD4KQEAgLTUzLDcgKzUzLDcgQEAKICAqIERldmljZSBjb25maWd1cmF0aW9ucwogICoKICAqIFRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciBhIGRldmljZSBjb25zaXN0cyBvZiBvbmUgb3IgbW9yZQotICogdmlydHF1ZXVlcywgYSBmZWF0dXJlIGJpdG1ha3MsIGFuZCBzb21lIGNvbmZpZ3VyYXRpb24gYnl0ZXMuICBUaGUKKyAqIHZpcnRxdWV1ZXMsIGEgZmVhdHVyZSBiaXRtYXAsIGFuZCBzb21lIGNvbmZpZ3VyYXRpb24gYnl0ZXMuICBUaGUKICAqIGNvbmZpZ3VyYXRpb24gYnl0ZXMgZG9uJ3QgcmVhbGx5IG1hdHRlciB0byB1czogdGhlIExhdW5jaGVyIHNldHMgdGhlbSB1cCwgYW5kCiAgKiB0aGUgZHJpdmVyIHdpbGwgbG9vayBhdCB0aGVtIGR1cmluZyBzZXR1cC4KICAqCkBAIC0xNzksNyArMTc5LDcgQEAKIH07CiAKIC8qIFdoZW4gdGhlIHZpcnRpb19yaW5nIGNvZGUgd2FudHMgdG8gcHJvZCB0aGUgSG9zdCwgaXQgY2FsbHMgdXMgaGVyZSBhbmQgd2UKLSAqIG1ha2UgYSBoeXBlcmNhbGwuICBXZSBoYW5kIHRoZSBwYWdlIG51bWJlciBvZiB0aGUgdmlydHF1ZXVlIHNvIHRoZSBIb3N0CisgKiBtYWtlIGEgaHlwZXJjYWxsLiAgV2UgaGFuZCB0aGUgcGh5c2ljYWwgYWRkcmVzcyBvZiB0aGUgdmlydHF1ZXVlIHNvIHRoZSBIb3N0CiAgKiBrbm93cyB3aGljaCB2aXJ0cXVldWUgd2UncmUgdGFsa2luZyBhYm91dC4gKi8KIHN0YXRpYyB2b2lkIGxnX25vdGlmeShzdHJ1Y3QgdmlydHF1ZXVlICp2cSkKIHsKQEAgLTE5OSw3ICsxOTksOCBAQAogICogYWxsb2NhdGUgaXRzIG93biBwYWdlcyBhbmQgdGVsbCB0aGUgSG9zdCB3aGVyZSB0aGV5IGFyZSwgYnV0IGZvciBsZ3Vlc3QgaXQncwogICogc2ltcGxlciBmb3IgdGhlIEhvc3QgdG8gc2ltcGx5IHRlbGwgdXMgd2hlcmUgdGhlIHBhZ2VzIGFyZS4KICAqCi0gKiBTbyB3ZSBwcm92aWRlIGRldmljZXMgd2l0aCBhICJmaW5kIHZpcnRxdWV1ZSBhbmQgc2V0IGl0IHVwIiBmdW5jdGlvbi4gKi8KKyAqIFNvIHdlIHByb3ZpZGUgZHJpdmVycyB3aXRoIGEgImZpbmQgdGhlIE50aCB2aXJ0cXVldWUgYW5kIHNldCBpdCB1cCIKKyAqIGZ1bmN0aW9uLiAqLwogc3RhdGljIHN0cnVjdCB2aXJ0cXVldWUgKmxnX2ZpbmRfdnEoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYsCiAJCQkJICAgIHVuc2lnbmVkIGluZGV4LAogCQkJCSAgICB2b2lkICgqY2FsbGJhY2spKHN0cnVjdCB2aXJ0cXVldWUgKnZxKSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbGd1ZXN0L2xndWVzdF91c2VyLmMgYi9kcml2ZXJzL2xndWVzdC9sZ3Vlc3RfdXNlci5jCmluZGV4IDIyMjE0ODUuLjY0NWU2ZTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbGd1ZXN0L2xndWVzdF91c2VyLmMKKysrIGIvZHJpdmVycy9sZ3Vlc3QvbGd1ZXN0X3VzZXIuYwpAQCAtNzMsNyArNzMsNyBAQAogCWlmIChjdXJyZW50ICE9IGNwdS0+dHNrKQogCQlyZXR1cm4gLUVQRVJNOwogCi0JLyogSWYgdGhlIGd1ZXN0IGlzIGFscmVhZHkgZGVhZCwgd2UgaW5kaWNhdGUgd2h5ICovCisJLyogSWYgdGhlIEd1ZXN0IGlzIGFscmVhZHkgZGVhZCwgd2UgaW5kaWNhdGUgd2h5ICovCiAJaWYgKGxnLT5kZWFkKSB7CiAJCXNpemVfdCBsZW47CiAKQEAgLTg4LDcgKzg4LDcgQEAKIAkJcmV0dXJuIGxlbjsKIAl9CiAKLQkvKiBJZiB3ZSByZXR1cm5lZCBmcm9tIHJlYWQoKSBsYXN0IHRpbWUgYmVjYXVzZSB0aGUgR3Vlc3Qgbm90aWZpZWQsCisJLyogSWYgd2UgcmV0dXJuZWQgZnJvbSByZWFkKCkgbGFzdCB0aW1lIGJlY2F1c2UgdGhlIEd1ZXN0IHNlbnQgSS9PLAogCSAqIGNsZWFyIHRoZSBmbGFnLiAqLwogCWlmIChjcHUtPnBlbmRpbmdfbm90aWZ5KQogCQljcHUtPnBlbmRpbmdfbm90aWZ5ID0gMDsKQEAgLTk3LDE0ICs5NywyMCBAQAogCXJldHVybiBydW5fZ3Vlc3QoY3B1LCAodW5zaWduZWQgbG9uZyBfX3VzZXIgKil1c2VyKTsKIH0KIAorLypMOjAyNSBUaGlzIGFjdHVhbGx5IGluaXRpYWxpemVzIGEgQ1BVLiAgRm9yIHRoZSBtb21lbnQsIGEgR3Vlc3QgaXMgb25seQorICogdW5pcHJvY2Vzc29yLCBzbyAiaWQiIGlzIGFsd2F5cyAwLiAqLwogc3RhdGljIGludCBsZ19jcHVfc3RhcnQoc3RydWN0IGxnX2NwdSAqY3B1LCB1bnNpZ25lZCBpZCwgdW5zaWduZWQgbG9uZyBzdGFydF9pcCkKIHsKKwkvKiBXZSBoYXZlIGEgbGltaXRlZCBudW1iZXIgdGhlIG51bWJlciBvZiBDUFVzIGluIHRoZSBsZ3Vlc3Qgc3RydWN0LiAqLwogCWlmIChpZCA+PSBOUl9DUFVTKQogCQlyZXR1cm4gLUVJTlZBTDsKIAorCS8qIFNldCB1cCB0aGlzIENQVSdzIGlkLCBhbmQgcG9pbnRlciBiYWNrIHRvIHRoZSBsZ3Vlc3Qgc3RydWN0LiAqLwogCWNwdS0+aWQgPSBpZDsKIAljcHUtPmxnID0gY29udGFpbmVyX29mKChjcHUgLSBpZCksIHN0cnVjdCBsZ3Vlc3QsIGNwdXNbMF0pOwogCWNwdS0+bGctPm5yX2NwdXMrKzsKKworCS8qIEVhY2ggQ1BVIGhhcyBhIHRpbWVyIGl0IGNhbiBzZXQuICovCiAJaW5pdF9jbG9ja2RldihjcHUpOwogCiAJLyogV2UgbmVlZCBhIGNvbXBsZXRlIHBhZ2UgZm9yIHRoZSBHdWVzdCByZWdpc3RlcnM6IHRoZXkgYXJlIGFjY2Vzc2libGUKQEAgLTEyMCwxMSArMTI2LDExIEBACiAJICogYWRkcmVzcy4gKi8KIAlsZ3Vlc3RfYXJjaF9zZXR1cF9yZWdzKGNwdSwgc3RhcnRfaXApOwogCi0JLyogSW5pdGlhbGl6ZSB0aGUgcXVldWUgZm9yIHRoZSB3YWtlciB0byB3YWl0IG9uICovCisJLyogSW5pdGlhbGl6ZSB0aGUgcXVldWUgZm9yIHRoZSBXYWtlciB0byB3YWl0IG9uICovCiAJaW5pdF93YWl0cXVldWVfaGVhZCgmY3B1LT5icmVha193cSk7CiAKIAkvKiBXZSBrZWVwIGEgcG9pbnRlciB0byB0aGUgTGF1bmNoZXIgdGFzayAoaWUuIGN1cnJlbnQgdGFzaykgZm9yIHdoZW4KLQkgKiBvdGhlciBHdWVzdHMgd2FudCB0byB3YWtlIHRoaXMgb25lIChpbnRlci1HdWVzdCBJL08pLiAqLworCSAqIG90aGVyIEd1ZXN0cyB3YW50IHRvIHdha2UgdGhpcyBvbmUgKGVnLiBjb25zb2xlIGlucHV0KS4gKi8KIAljcHUtPnRzayA9IGN1cnJlbnQ7CiAKIAkvKiBXZSBuZWVkIHRvIGtlZXAgYSBwb2ludGVyIHRvIHRoZSBMYXVuY2hlcidzIG1lbW9yeSBtYXAsIGJlY2F1c2UgaWYKQEAgLTEzNiw2ICsxNDIsNyBAQAogCSAqIHdoZW4gdGhlIHNhbWUgR3Vlc3QgcnVucyBvbiB0aGUgc2FtZSBDUFUgdHdpY2UuICovCiAJY3B1LT5sYXN0X3BhZ2VzID0gTlVMTDsKIAorCS8qIE5vIGVycm9yID09IHN1Y2Nlc3MuICovCiAJcmV0dXJuIDA7CiB9CiAKQEAgLTE4MiwxNyArMTg5LDE2IEBACiAJfQogCiAJLyogUG9wdWxhdGUgdGhlIGVhc3kgZmllbGRzIG9mIG91ciAic3RydWN0IGxndWVzdCIgKi8KLQlsZy0+bWVtX2Jhc2UgPSAodm9pZCBfX3VzZXIgKikobG9uZylhcmdzWzBdOworCWxnLT5tZW1fYmFzZSA9ICh2b2lkIF9fdXNlciAqKWFyZ3NbMF07CiAJbGctPnBmbl9saW1pdCA9IGFyZ3NbMV07CiAKLQkvKiBUaGlzIGlzIHRoZSBmaXJzdCBjcHUgKi8KKwkvKiBUaGlzIGlzIHRoZSBmaXJzdCBjcHUgKGNwdSAwKSBhbmQgaXQgd2lsbCBzdGFydCBib290aW5nIGF0IGFyZ3NbM10gKi8KIAllcnIgPSBsZ19jcHVfc3RhcnQoJmxnLT5jcHVzWzBdLCAwLCBhcmdzWzNdKTsKIAlpZiAoZXJyKQogCQlnb3RvIHJlbGVhc2VfZ3Vlc3Q7CiAKIAkvKiBJbml0aWFsaXplIHRoZSBHdWVzdCdzIHNoYWRvdyBwYWdlIHRhYmxlcywgdXNpbmcgdGhlIHRvcGxldmVsCi0JICogYWRkcmVzcyB0aGUgTGF1bmNoZXIgZ2F2ZSB1cy4gIFRoaXMgYWxsb2NhdGVzIG1lbW9yeSwgc28gY2FuCi0JICogZmFpbC4gKi8KKwkgKiBhZGRyZXNzIHRoZSBMYXVuY2hlciBnYXZlIHVzLiAgVGhpcyBhbGxvY2F0ZXMgbWVtb3J5LCBzbyBjYW4gZmFpbC4gKi8KIAllcnIgPSBpbml0X2d1ZXN0X3BhZ2V0YWJsZShsZywgYXJnc1syXSk7CiAJaWYgKGVycikKIAkJZ290byBmcmVlX3JlZ3M7CkBAIC0yMTgsMTEgKzIyNCwxNiBAQAogLypMOjAxMCBUaGUgZmlyc3Qgb3BlcmF0aW9uIHRoZSBMYXVuY2hlciBkb2VzIG11c3QgYmUgYSB3cml0ZS4gIEFsbCB3cml0ZXMKICAqIHN0YXJ0IHdpdGggYW4gdW5zaWduZWQgbG9uZyBudW1iZXI6IGZvciB0aGUgZmlyc3Qgd3JpdGUgdGhpcyBtdXN0IGJlCiAgKiBMSFJFUV9JTklUSUFMSVpFIHRvIHNldCB1cCB0aGUgR3Vlc3QuICBBZnRlciB0aGF0IHRoZSBMYXVuY2hlciBjYW4gdXNlCi0gKiB3cml0ZXMgb2Ygb3RoZXIgdmFsdWVzIHRvIHNlbmQgaW50ZXJydXB0cy4gKi8KKyAqIHdyaXRlcyBvZiBvdGhlciB2YWx1ZXMgdG8gc2VuZCBpbnRlcnJ1cHRzLgorICoKKyAqIE5vdGUgdGhhdCB3ZSBvdmVybG9hZCB0aGUgIm9mZnNldCIgaW4gdGhlIC9kZXYvbGd1ZXN0IGZpbGUgdG8gaW5kaWNhdGUgd2hhdAorICogQ1BVIG51bWJlciB3ZSdyZSBkZWFsaW5nIHdpdGguICBDdXJyZW50bHkgdGhpcyBpcyBhbHdheXMgMCwgc2luY2Ugd2Ugb25seQorICogc3VwcG9ydCB1bmlwcm9jZXNzb3IgR3Vlc3RzLCBidXQgeW91IGNhbiBzZWUgdGhlIGJlZ2lubmluZ3Mgb2YgU01QIHN1cHBvcnQKKyAqIGhlcmUuICovCiBzdGF0aWMgc3NpemVfdCB3cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKmluLAogCQkgICAgIHNpemVfdCBzaXplLCBsb2ZmX3QgKm9mZikKIHsKLQkvKiBPbmNlIHRoZSBndWVzdCBpcyBpbml0aWFsaXplZCwgd2UgaG9sZCB0aGUgInN0cnVjdCBsZ3Vlc3QiIGluIHRoZQorCS8qIE9uY2UgdGhlIEd1ZXN0IGlzIGluaXRpYWxpemVkLCB3ZSBob2xkIHRoZSAic3RydWN0IGxndWVzdCIgaW4gdGhlCiAJICogZmlsZSBwcml2YXRlIGRhdGEuICovCiAJc3RydWN0IGxndWVzdCAqbGcgPSBmaWxlLT5wcml2YXRlX2RhdGE7CiAJY29uc3QgdW5zaWduZWQgbG9uZyBfX3VzZXIgKmlucHV0ID0gKGNvbnN0IHVuc2lnbmVkIGxvbmcgX191c2VyICopaW47CkBAIC0yMzAsNiArMjQxLDcgQEAKIAlzdHJ1Y3QgbGdfY3B1ICp1bmluaXRpYWxpemVkX3ZhcihjcHUpOwogCXVuc2lnbmVkIGludCBjcHVfaWQgPSAqb2ZmOwogCisJLyogVGhlIGZpcnN0IHZhbHVlIHRlbGxzIHVzIHdoYXQgdGhpcyByZXF1ZXN0IGlzLiAqLwogCWlmIChnZXRfdXNlcihyZXEsIGlucHV0KSAhPSAwKQogCQlyZXR1cm4gLUVGQVVMVDsKIAlpbnB1dCsrOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9sZ3Vlc3QvcGFnZV90YWJsZXMuYyBiL2RyaXZlcnMvbGd1ZXN0L3BhZ2VfdGFibGVzLmMKaW5kZXggYTdmNjRhOS4uZDkzNTAwZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9sZ3Vlc3QvcGFnZV90YWJsZXMuYworKysgYi9kcml2ZXJzL2xndWVzdC9wYWdlX3RhYmxlcy5jCkBAIC0yLDggKzIsOCBAQAogICogcHJldmlvdXMgZW5jb3VudGVycy4gIEl0J3MgZnVuY3Rpb25hbCwgYW5kIGFzIG5lYXQgYXMgaXQgY2FuIGJlIGluIHRoZQogICogY2lyY3Vtc3RhbmNlcywgYnV0IGJlIHdhcnksIGZvciB0aGVzZSB0aGluZ3MgYXJlIHN1YnRsZSBhbmQgYnJlYWsgZWFzaWx5LgogICogVGhlIEd1ZXN0IHByb3ZpZGVzIGEgdmlydHVhbCB0byBwaHlzaWNhbCBtYXBwaW5nLCBidXQgd2UgY2FuIG5laXRoZXIgdHJ1c3QKLSAqIGl0IG5vciB1c2UgaXQ6IHdlIHZlcmlmeSBhbmQgY29udmVydCBpdCBoZXJlIHRvIHBvaW50IHRoZSBoYXJkd2FyZSB0byB0aGUKLSAqIGFjdHVhbCBHdWVzdCBwYWdlcyB3aGVuIHJ1bm5pbmcgdGhlIEd1ZXN0LiA6Ki8KKyAqIGl0IG5vciB1c2UgaXQ6IHdlIHZlcmlmeSBhbmQgY29udmVydCBpdCBoZXJlIHRoZW4gcG9pbnQgdGhlIENQVSB0byB0aGUKKyAqIGNvbnZlcnRlZCBHdWVzdCBwYWdlcyB3aGVuIHJ1bm5pbmcgdGhlIEd1ZXN0LiA6Ki8KIAogLyogQ29weXJpZ2h0IChDKSBSdXN0eSBSdXNzZWxsIElCTSBDb3Jwb3JhdGlvbiAyMDA2LgogICogR1BMIHYyIGFuZCBhbnkgbGF0ZXIgdmVyc2lvbiAqLwpAQCAtMTA2LDYgKzEwNiwxMSBAQAogCUJVR19PTighKHBnZF9mbGFncyhncGdkKSAmIF9QQUdFX1BSRVNFTlQpKTsKIAlyZXR1cm4gZ3BhZ2UgKyAoKHZhZGRyPj5QQUdFX1NISUZUKSAlIFBUUlNfUEVSX1BURSkgKiBzaXplb2YocHRlX3QpOwogfQorLyo6Ki8KKworLypNOjAxNCBnZXRfcGZuIGlzIHNsb3c7IGl0IHRha2VzIHRoZSBtbWFwIHNlbSBhbmQgY2FsbHMgZ2V0X3VzZXJfcGFnZXMuICBXZQorICogY291bGQgcHJvYmFibHkgdHJ5IHRvIGdyYWIgYmF0Y2hlcyBvZiBwYWdlcyBoZXJlIGFzIGFuIG9wdGltaXphdGlvbgorICogKGllLiBwcmUtZmF1bHRpbmcpLiA6Ki8KIAogLypIOjM1MCBUaGlzIHJvdXRpbmUgdGFrZXMgYSBwYWdlIG51bWJlciBnaXZlbiBieSB0aGUgR3Vlc3QgYW5kIGNvbnZlcnRzIGl0IHRvCiAgKiBhbiBhY3R1YWwsIHBoeXNpY2FsIHBhZ2UgbnVtYmVyLiAgSXQgY2FuIGZhaWwgZm9yIHNldmVyYWwgcmVhc29uczogdGhlCkBAIC0xMTMsOCArMTE4LDggQEAKICAqIGFuZCB0aGUgcGFnZSBpcyByZWFkLW9ubHksIG9yIHRoZSB3cml0ZSBmbGFnIHdhcyBzZXQgYW5kIHRoZSBwYWdlIHdhcwogICogc2hhcmVkIHNvIGhhZCB0byBiZSBjb3BpZWQsIGJ1dCB3ZSByYW4gb3V0IG9mIG1lbW9yeS4KICAqCi0gKiBUaGlzIGhvbGRzIGEgcmVmZXJlbmNlIHRvIHRoZSBwYWdlLCBzbyByZWxlYXNlX3B0ZSgpIGlzIGNhcmVmdWwgdG8KLSAqIHB1dCB0aGF0IGJhY2suICovCisgKiBUaGlzIGhvbGRzIGEgcmVmZXJlbmNlIHRvIHRoZSBwYWdlLCBzbyByZWxlYXNlX3B0ZSgpIGlzIGNhcmVmdWwgdG8gcHV0IHRoYXQKKyAqIGJhY2suICovCiBzdGF0aWMgdW5zaWduZWQgbG9uZyBnZXRfcGZuKHVuc2lnbmVkIGxvbmcgdmlydHBmbiwgaW50IHdyaXRlKQogewogCXN0cnVjdCBwYWdlICpwYWdlOwpAQCAtNTMyLDEzICs1MzcsMTMgQEAKICAqIGFsbCBwcm9jZXNzZXMuICBTbyB3aGVuIHRoZSBwYWdlIHRhYmxlIGFib3ZlIHRoYXQgYWRkcmVzcyBjaGFuZ2VzLCB3ZSB1cGRhdGUKICAqIGFsbCB0aGUgcGFnZSB0YWJsZXMsIG5vdCBqdXN0IHRoZSBjdXJyZW50IG9uZS4gIFRoaXMgaXMgcmFyZS4KICAqCi0gKiBUaGUgYmVuZWZpdCBpcyB0aGF0IHdoZW4gd2UgaGF2ZSB0byB0cmFjayBhIG5ldyBwYWdlIHRhYmxlLCB3ZSBjYW4gY29weSBrZWVwCi0gKiBhbGwgdGhlIGtlcm5lbCBtYXBwaW5ncy4gIFRoaXMgc3BlZWRzIHVwIGNvbnRleHQgc3dpdGNoIGltbWVuc2VseS4gKi8KKyAqIFRoZSBiZW5lZml0IGlzIHRoYXQgd2hlbiB3ZSBoYXZlIHRvIHRyYWNrIGEgbmV3IHBhZ2UgdGFibGUsIHdlIGNhbiBrZWVwIGFsbAorICogdGhlIGtlcm5lbCBtYXBwaW5ncy4gIFRoaXMgc3BlZWRzIHVwIGNvbnRleHQgc3dpdGNoIGltbWVuc2VseS4gKi8KIHZvaWQgZ3Vlc3Rfc2V0X3B0ZShzdHJ1Y3QgbGdfY3B1ICpjcHUsCiAJCSAgIHVuc2lnbmVkIGxvbmcgZ3BnZGlyLCB1bnNpZ25lZCBsb25nIHZhZGRyLCBwdGVfdCBncHRlKQogewotCS8qIEtlcm5lbCBtYXBwaW5ncyBtdXN0IGJlIGNoYW5nZWQgb24gYWxsIHRvcCBsZXZlbHMuICBTbG93LCBidXQKLQkgKiBkb2Vzbid0IGhhcHBlbiBvZnRlbi4gKi8KKwkvKiBLZXJuZWwgbWFwcGluZ3MgbXVzdCBiZSBjaGFuZ2VkIG9uIGFsbCB0b3AgbGV2ZWxzLiAgU2xvdywgYnV0IGRvZXNuJ3QKKwkgKiBoYXBwZW4gb2Z0ZW4uICovCiAJaWYgKHZhZGRyID49IGNwdS0+bGctPmtlcm5lbF9hZGRyZXNzKSB7CiAJCXVuc2lnbmVkIGludCBpOwogCQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShjcHUtPmxnLT5wZ2RpcnMpOyBpKyspCkBAIC03MDQsMTIgKzcwOSwxMSBAQAogLyogV2UndmUgbWFkZSBpdCB0aHJvdWdoIHRoZSBwYWdlIHRhYmxlIGNvZGUuICBQZXJoYXBzIG91ciB0aXJlZCBicmFpbnMgYXJlCiAgKiBzdGlsbCBwcm9jZXNzaW5nIHRoZSBkZXRhaWxzLCBvciBwZXJoYXBzIHdlJ3JlIHNpbXBseSBnbGFkIGl0J3Mgb3Zlci4KICAqCi0gKiBJZiBub3RoaW5nIGVsc2UsIG5vdGUgdGhhdCBhbGwgdGhpcyBjb21wbGV4aXR5IGluIGp1Z2dsaW5nIHNoYWRvdyBwYWdlCi0gKiB0YWJsZXMgaW4gc3luYyB3aXRoIHRoZSBHdWVzdCdzIHBhZ2UgdGFibGVzIGlzIGZvciBvbmUgcmVhc29uOiBmb3IgbW9zdAotICogR3Vlc3RzIHRoaXMgcGFnZSB0YWJsZSBkYW5jZSBkZXRlcm1pbmVzIGhvdyBiYWQgcGVyZm9ybWFuY2Ugd2lsbCBiZS4gIFRoaXMKLSAqIGlzIHdoeSBYZW4gdXNlcyBleG90aWMgZGlyZWN0IEd1ZXN0IHBhZ2V0YWJsZSBtYW5pcHVsYXRpb24sIGFuZCB3aHkgYm90aAotICogSW50ZWwgYW5kIEFNRCBoYXZlIGltcGxlbWVudGVkIHNoYWRvdyBwYWdlIHRhYmxlIHN1cHBvcnQgZGlyZWN0bHkgaW50bwotICogaGFyZHdhcmUuCisgKiBJZiBub3RoaW5nIGVsc2UsIG5vdGUgdGhhdCBhbGwgdGhpcyBjb21wbGV4aXR5IGluIGp1Z2dsaW5nIHNoYWRvdyBwYWdlIHRhYmxlcworICogaW4gc3luYyB3aXRoIHRoZSBHdWVzdCdzIHBhZ2UgdGFibGVzIGlzIGZvciBvbmUgcmVhc29uOiBmb3IgbW9zdCBHdWVzdHMgdGhpcworICogcGFnZSB0YWJsZSBkYW5jZSBkZXRlcm1pbmVzIGhvdyBiYWQgcGVyZm9ybWFuY2Ugd2lsbCBiZS4gIFRoaXMgaXMgd2h5IFhlbgorICogdXNlcyBleG90aWMgZGlyZWN0IEd1ZXN0IHBhZ2V0YWJsZSBtYW5pcHVsYXRpb24sIGFuZCB3aHkgYm90aCBJbnRlbCBhbmQgQU1ECisgKiBoYXZlIGltcGxlbWVudGVkIHNoYWRvdyBwYWdlIHRhYmxlIHN1cHBvcnQgZGlyZWN0bHkgaW50byBoYXJkd2FyZS4KICAqCiAgKiBUaGVyZSBpcyBqdXN0IG9uZSBmaWxlIHJlbWFpbmluZyBpbiB0aGUgSG9zdC4gKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9sZ3Vlc3QveDg2L2NvcmUuYyBiL2RyaXZlcnMvbGd1ZXN0L3g4Ni9jb3JlLmMKaW5kZXggNjM1MTg3OC4uNTEyNmQ1ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9sZ3Vlc3QveDg2L2NvcmUuYworKysgYi9kcml2ZXJzL2xndWVzdC94ODYvY29yZS5jCkBAIC0xNyw2ICsxNywxMyBAQAogICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICAqIEZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgogICovCisvKlA6NDUwIFRoaXMgZmlsZSBjb250YWlucyB0aGUgeDg2LXNwZWNpZmljIGxndWVzdCBjb2RlLiAgSXQgdXNlZCB0byBiZSBhbGwKKyAqIG1peGVkIGluIHdpdGggZHJpdmVycy9sZ3Vlc3QvY29yZS5jIGJ1dCBzZXZlcmFsIGZvb2xoYXJkeSBjb2RlIHNsYXNoZXJzCisgKiB3cmVzdGxlZCBtb3N0IG9mIHRoZSBkZXBlbmRlbmNpZXMgb3V0IHRvIGhlcmUgaW4gcHJlcGFyYXRpb24gZm9yIHBvcnRpbmcKKyAqIGxndWVzdCB0byBvdGhlciBhcmNoaXRlY3R1cmVzIChzZWUgd2hhdCBJIG1lYW4gYnkgZm9vbGhhcmR5PykuCisgKgorICogVGhpcyBhbHNvIGNvbnRhaW5zIGEgY291cGxlIG9mIG5vbi1vYnZpb3VzIHNldHVwIGFuZCB0ZWFyZG93biBwaWVjZXMgd2hpY2gKKyAqIHdlcmUgaW1wbGVtZW50ZWQgYWZ0ZXIgZGF5cyBvZiBkZWJ1Z2dpbmcgcGFpbi4gOiovCiAjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CiAjaW5jbHVkZSA8bGludXgvc3RhcnRfa2VybmVsLmg+CiAjaW5jbHVkZSA8bGludXgvc3RyaW5nLmg+CkBAIC0xNTcsNiArMTY0LDggQEAKICAqIGFsc28gc2ltcGxpZnkgY29weV9pbl9ndWVzdF9pbmZvKCkuICBOb3RlIHRoYXQgd2UnZCBzdGlsbCBuZWVkIHRvIHJlc3RvcmUKICAqIHRoaW5ncyB3aGVuIHdlIGV4aXQgdG8gTGF1bmNoZXIgdXNlcnNwYWNlLCBidXQgdGhhdCdzIGZhaXJseSBlYXN5LgogICoKKyAqIFdlIGNvdWxkIGFsc28gdHJ5IHVzaW5nIHRoaXMgaG9va3MgZm9yIFBHRSwgYnV0IHRoYXQgbWlnaHQgYmUgdG9vIGV4cGVuc2l2ZS4KKyAqCiAgKiBUaGUgaG9va3Mgd2VyZSBkZXNpZ25lZCBmb3IgS1ZNLCBidXQgd2UgY2FuIGFsc28gcHV0IHRoZW0gdG8gZ29vZCB1c2UuIDoqLwogCiAvKkg6MDQwIFRoaXMgaXMgdGhlIGkzODYtc3BlY2lmaWMgY29kZSB0byBzZXR1cCBhbmQgcnVuIHRoZSBHdWVzdC4gIEludGVycnVwdHMKQEAgLTE4Miw3ICsxOTEsNyBAQAogCSAqIHdhcyBkb2luZy4gKi8KIAlydW5fZ3Vlc3Rfb25jZShjcHUsIGxndWVzdF9wYWdlcyhyYXdfc21wX3Byb2Nlc3Nvcl9pZCgpKSk7CiAKLQkvKiBOb3RlIHRoYXQgdGhlICJyZWdzIiBwb2ludGVyIGNvbnRhaW5zIHR3byBleHRyYSBlbnRyaWVzIHdoaWNoIGFyZQorCS8qIE5vdGUgdGhhdCB0aGUgInJlZ3MiIHN0cnVjdHVyZSBjb250YWlucyB0d28gZXh0cmEgZW50cmllcyB3aGljaCBhcmUKIAkgKiBub3QgcmVhbGx5IHJlZ2lzdGVyczogYSB0cmFwIG51bWJlciB3aGljaCBzYXlzIHdoYXQgaW50ZXJydXB0IG9yCiAJICogdHJhcCBtYWRlIHRoZSBzd2l0Y2hlciBjb2RlIGNvbWUgYmFjaywgYW5kIGFuIGVycm9yIGNvZGUgd2hpY2ggc29tZQogCSAqIHRyYXBzIHNldC4gICovCkBAIC0yOTMsMTEgKzMwMiwxMCBAQAogCQlicmVhazsKIAljYXNlIDE0OiAvKiBXZSd2ZSBpbnRlcmNlcHRlZCBhIFBhZ2UgRmF1bHQuICovCiAJCS8qIFRoZSBHdWVzdCBhY2Nlc3NlZCBhIHZpcnR1YWwgYWRkcmVzcyB0aGF0IHdhc24ndCBtYXBwZWQuCi0JCSAqIFRoaXMgaGFwcGVucyBhIGxvdDogd2UgZG9uJ3QgYWN0dWFsbHkgc2V0IHVwIG1vc3Qgb2YgdGhlCi0JCSAqIHBhZ2UgdGFibGVzIGZvciB0aGUgR3Vlc3QgYXQgYWxsIHdoZW4gd2Ugc3RhcnQ6IGFzIGl0IHJ1bnMKLQkJICogaXQgYXNrcyBmb3IgbW9yZSBhbmQgbW9yZSwgYW5kIHdlIHNldCB0aGVtIHVwIGFzCi0JCSAqIHJlcXVpcmVkLiBJbiB0aGlzIGNhc2UsIHdlIGRvbid0IGV2ZW4gdGVsbCB0aGUgR3Vlc3QgdGhhdAotCQkgKiB0aGUgZmF1bHQgaGFwcGVuZWQuCisJCSAqIFRoaXMgaGFwcGVucyBhIGxvdDogd2UgZG9uJ3QgYWN0dWFsbHkgc2V0IHVwIG1vc3Qgb2YgdGhlIHBhZ2UKKwkJICogdGFibGVzIGZvciB0aGUgR3Vlc3QgYXQgYWxsIHdoZW4gd2Ugc3RhcnQ6IGFzIGl0IHJ1bnMgaXQgYXNrcworCQkgKiBmb3IgbW9yZSBhbmQgbW9yZSwgYW5kIHdlIHNldCB0aGVtIHVwIGFzIHJlcXVpcmVkLiBJbiB0aGlzCisJCSAqIGNhc2UsIHdlIGRvbid0IGV2ZW4gdGVsbCB0aGUgR3Vlc3QgdGhhdCB0aGUgZmF1bHQgaGFwcGVuZWQuCiAJCSAqCiAJCSAqIFRoZSBlcnJjb2RlIHRlbGxzIHdoZXRoZXIgdGhpcyB3YXMgYSByZWFkIG9yIGEgd3JpdGUsIGFuZAogCQkgKiB3aGV0aGVyIGtlcm5lbCBvciB1c2Vyc3BhY2UgY29kZS4gKi8KQEAgLTM0Miw3ICszNTAsNyBAQAogCWlmICghZGVsaXZlcl90cmFwKGNwdSwgY3B1LT5yZWdzLT50cmFwbnVtKSkKIAkJLyogSWYgdGhlIEd1ZXN0IGRvZXNuJ3QgaGF2ZSBhIGhhbmRsZXIgKGVpdGhlciBpdCBoYXNuJ3QKIAkJICogcmVnaXN0ZXJlZCBhbnkgeWV0LCBvciBpdCdzIG9uZSBvZiB0aGUgZmF1bHRzIHdlIGRvbid0IGxldAotCQkgKiBpdCBoYW5kbGUpLCBpdCBkaWVzIHdpdGggYSBjcnlwdGljIGVycm9yIG1lc3NhZ2UuICovCisJCSAqIGl0IGhhbmRsZSksIGl0IGRpZXMgd2l0aCB0aGlzIGNyeXB0aWMgZXJyb3IgbWVzc2FnZS4gKi8KIAkJa2lsbF9ndWVzdChjcHUsICJ1bmhhbmRsZWQgdHJhcCAlbGkgYXQgJSNseCAoJSNseCkiLAogCQkJICAgY3B1LT5yZWdzLT50cmFwbnVtLCBjcHUtPnJlZ3MtPmVpcCwKIAkJCSAgIGNwdS0+cmVncy0+dHJhcG51bSA9PSAxNCA/IGNwdS0+YXJjaC5sYXN0X3BhZ2VmYXVsdApAQCAtMzc1LDggKzM4Myw4IEBACiAJICogVGhlIG9ubHkgZXhjZXB0aW9uIGlzIHRoZSBpbnRlcnJ1cHQgaGFuZGxlcnMgaW4gc3dpdGNoZXIuUzogdGhlaXIKIAkgKiBhZGRyZXNzZXMgYXJlIHBsYWNlZCBpbiBhIHRhYmxlIChkZWZhdWx0X2lkdF9lbnRyaWVzKSwgc28gd2UgbmVlZCB0bwogCSAqIHVwZGF0ZSB0aGUgdGFibGUgd2l0aCB0aGUgbmV3IGFkZHJlc3Nlcy4gIHN3aXRjaGVyX29mZnNldCgpIGlzIGEKLQkgKiBjb252ZW5pZW5jZSBmdW5jdGlvbiB3aGljaCByZXR1cm5zIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBidWlsdGluCi0JICogc3dpdGNoZXIgY29kZSBhbmQgdGhlIGhpZ2gtbWFwcGVkIGNvcHkgd2UganVzdCBtYWRlLiAqLworCSAqIGNvbnZlbmllbmNlIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgdGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlCisJICogY29tcGlsZWQtaW4gc3dpdGNoZXIgY29kZSBhbmQgdGhlIGhpZ2gtbWFwcGVkIGNvcHkgd2UganVzdCBtYWRlLiAqLwogCWZvciAoaSA9IDA7IGkgPCBJRFRfRU5UUklFUzsgaSsrKQogCQlkZWZhdWx0X2lkdF9lbnRyaWVzW2ldICs9IHN3aXRjaGVyX29mZnNldCgpOwogCkBAIC00MTYsNyArNDI0LDcgQEAKIAkJc3RhdGUtPmd1ZXN0X2dkdF9kZXNjLmFkZHJlc3MgPSAobG9uZykmc3RhdGUtPmd1ZXN0X2dkdDsKIAogCQkvKiBXZSBrbm93IHdoZXJlIHdlIHdhbnQgdGhlIHN0YWNrIHRvIGJlIHdoZW4gdGhlIEd1ZXN0IGVudGVycwotCQkgKiB0aGUgc3dpdGNoZXI6IGluIHBhZ2VzLT5yZWdzLiAgVGhlIHN0YWNrIGdyb3dzIHVwd2FyZHMsIHNvCisJCSAqIHRoZSBTd2l0Y2hlcjogaW4gcGFnZXMtPnJlZ3MuICBUaGUgc3RhY2sgZ3Jvd3MgdXB3YXJkcywgc28KIAkJICogd2Ugc3RhcnQgaXQgYXQgdGhlIGVuZCBvZiB0aGF0IHN0cnVjdHVyZS4gKi8KIAkJc3RhdGUtPmd1ZXN0X3Rzcy5zcDAgPSAobG9uZykoJnBhZ2VzLT5yZWdzICsgMSk7CiAJCS8qIEFuZCB0aGlzIGlzIHRoZSBHRFQgZW50cnkgdG8gdXNlIGZvciB0aGUgc3RhY2s6IHdlIGtlZXAgYQpAQCAtNTEzLDggKzUyMSw4IEBACiB7CiAJdTMyIHRzY19zcGVlZDsKIAotCS8qIFRoZSBwb2ludGVyIHRvIHRoZSBHdWVzdCdzICJzdHJ1Y3QgbGd1ZXN0X2RhdGEiIGlzIHRoZSBvbmx5Ci0JICogYXJndW1lbnQuICBXZSBjaGVjayB0aGF0IGFkZHJlc3Mgbm93LiAqLworCS8qIFRoZSBwb2ludGVyIHRvIHRoZSBHdWVzdCdzICJzdHJ1Y3QgbGd1ZXN0X2RhdGEiIGlzIHRoZSBvbmx5IGFyZ3VtZW50LgorCSAqIFdlIGNoZWNrIHRoYXQgYWRkcmVzcyBub3cuICovCiAJaWYgKCFsZ3Vlc3RfYWRkcmVzc19vayhjcHUtPmxnLCBjcHUtPmhjYWxsLT5hcmcxLAogCQkJICAgICAgIHNpemVvZigqY3B1LT5sZy0+bGd1ZXN0X2RhdGEpKSkKIAkJcmV0dXJuIC1FRkFVTFQ7CkBAIC01NDYsNiArNTU0LDcgQEAKIAogCXJldHVybiAwOwogfQorLyo6Ki8KIAogLypMOjAzMCBsZ3Vlc3RfYXJjaF9zZXR1cF9yZWdzKCkKICAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL2xndWVzdC94ODYvc3dpdGNoZXJfMzIuUyBiL2RyaXZlcnMvbGd1ZXN0L3g4Ni9zd2l0Y2hlcl8zMi5TCmluZGV4IDBhZjhiYWEuLjNmYzE1MzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbGd1ZXN0L3g4Ni9zd2l0Y2hlcl8zMi5TCisrKyBiL2RyaXZlcnMvbGd1ZXN0L3g4Ni9zd2l0Y2hlcl8zMi5TCkBAIC0xLDYgKzEsNiBAQAotLypQOjkwMCBUaGlzIGlzIHRoZSBTd2l0Y2hlcjogY29kZSB3aGljaCBzaXRzIGF0IDB4RkZDMDAwMDAgdG8gZG8gdGhlIGxvdy1sZXZlbAotICogR3Vlc3Q8LT5Ib3N0IHN3aXRjaC4gIEl0IGlzIGFzIHNpbXBsZSBhcyBpdCBjYW4gYmUgbWFkZSwgYnV0IGl0J3MgbmF0dXJhbGx5Ci0gKiB2ZXJ5IHNwZWNpZmljIHRvIHg4Ni4KKy8qUDo5MDAgVGhpcyBpcyB0aGUgU3dpdGNoZXI6IGNvZGUgd2hpY2ggc2l0cyBhdCAweEZGQzAwMDAwIGFzdHJpZGUgYm90aCB0aGUKKyAqIEhvc3QgYW5kIEd1ZXN0IHRvIGRvIHRoZSBsb3ctbGV2ZWwgR3Vlc3Q8LT5Ib3N0IHN3aXRjaC4gIEl0IGlzIGFzIHNpbXBsZSBhcworICogaXQgY2FuIGJlIG1hZGUsIGJ1dCBpdCdzIG5hdHVyYWxseSB2ZXJ5IHNwZWNpZmljIHRvIHg4Ni4KICAqCiAgKiBZb3UgaGF2ZSBub3cgY29tcGxldGVkIFByZXBhcmF0aW9uLiAgSWYgdGhpcyBoYXMgd2hldCB5b3VyIGFwcGV0aXRlOyBpZiB5b3UKICAqIGFyZSBmZWVsaW5nIGludmlnb3JhdGVkIGFuZCByZWZyZXNoZWQgdGhlbiB0aGUgbmV4dCwgbW9yZSBjaGFsbGVuZ2luZyBzdGFnZQpAQCAtMTg5LDcgKzE4OSw3IEBACiAJLy8gSW50ZXJydXB0cyBhcmUgdHVybmVkIGJhY2sgb246IHdlIGFyZSBHdWVzdC4KIAlpcmV0CiAKLS8vIFdlIHRyZWF0IHR3byBwYXRocyB0byBzd2l0Y2ggYmFjayB0byB0aGUgSG9zdAorLy8gV2UgdHJlYWQgdHdvIHBhdGhzIHRvIHN3aXRjaCBiYWNrIHRvIHRoZSBIb3N0CiAvLyBZZXQgYm90aCBtdXN0IHNhdmUgR3Vlc3Qgc3RhdGUgYW5kIHJlc3RvcmUgSG9zdAogLy8gU28gd2UgcHV0IHRoZSByb3V0aW5lIGluIGEgbWFjcm8uCiAjZGVmaW5lIFNXSVRDSF9UT19IT1NUCQkJCQkJCVwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWFjaW50b3NoL3ZpYS1wbXUtYmFja2xpZ2h0LmMgYi9kcml2ZXJzL21hY2ludG9zaC92aWEtcG11LWJhY2tsaWdodC5jCmluZGV4IDc0MWEyZTMuLmEzNDhiYjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWFjaW50b3NoL3ZpYS1wbXUtYmFja2xpZ2h0LmMKKysrIGIvZHJpdmVycy9tYWNpbnRvc2gvdmlhLXBtdS1iYWNrbGlnaHQuYwpAQCAtMTcsNyArMTcsNyBAQAogCiBzdGF0aWMgc3RydWN0IGJhY2tsaWdodF9vcHMgcG11X2JhY2tsaWdodF9kYXRhOwogc3RhdGljIERFRklORV9TUElOTE9DSyhwbXVfYmFja2xpZ2h0X2xvY2spOwotc3RhdGljIGludCBzbGVlcGluZzsKK3N0YXRpYyBpbnQgc2xlZXBpbmcsIHVzZXNfcG11X2JsOwogc3RhdGljIHU4IGJsX2N1cnZlW0ZCX0JBQ0tMSUdIVF9MRVZFTFNdOwogCiBzdGF0aWMgdm9pZCBwbXVfYmFja2xpZ2h0X2luaXRfY3VydmUodTggb2ZmLCB1OCBtaW4sIHU4IG1heCkKQEAgLTEyOCw3ICsxMjgsNyBAQAogCiAJc3Bpbl9sb2NrX2lycXNhdmUoJnBtdV9iYWNrbGlnaHRfbG9jaywgZmxhZ3MpOwogCXNsZWVwaW5nID0gc2xlZXA7Ci0JaWYgKHBtYWNfYmFja2xpZ2h0KSB7CisJaWYgKHBtYWNfYmFja2xpZ2h0ICYmIHVzZXNfcG11X2JsKSB7CiAJCWlmIChzbGVlcCkgewogCQkJc3RydWN0IGFkYl9yZXF1ZXN0IHJlcTsKIApAQCAtMTY2LDYgKzE2Niw3IEBACiAJCXByaW50ayhLRVJOX0VSUiAiUE1VIEJhY2tsaWdodCByZWdpc3RyYXRpb24gZmFpbGVkXG4iKTsKIAkJcmV0dXJuOwogCX0KKwl1c2VzX3BtdV9ibCA9IDE7CiAJYmQtPnByb3BzLm1heF9icmlnaHRuZXNzID0gRkJfQkFDS0xJR0hUX0xFVkVMUyAtIDE7CiAJcG11X2JhY2tsaWdodF9pbml0X2N1cnZlKDB4N0YsIDB4NDYsIDB4MEUpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL21hY2ludG9zaC92aWEtcG11LmMgYi9kcml2ZXJzL21hY2ludG9zaC92aWEtcG11LmMKaW5kZXggZWJlYzY2My4uZDYzNjVhOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tYWNpbnRvc2gvdmlhLXBtdS5jCisrKyBiL2RyaXZlcnMvbWFjaW50b3NoL3ZpYS1wbXUuYwpAQCAtMjUyOCw3ICsyNTI4LDcgQEAKIEVYUE9SVF9TWU1CT0wocG11X3N1c3BlbmQpOwogRVhQT1JUX1NZTUJPTChwbXVfcmVzdW1lKTsKIEVYUE9SVF9TWU1CT0wocG11X3VubG9jayk7Ci0jaWYgZGVmaW5lZChDT05GSUdfU1VTUEVORCkgJiYgZGVmaW5lZChDT05GSUdfUFBDMzIpCisjaWYgZGVmaW5lZChDT05GSUdfUFBDMzIpCiBFWFBPUlRfU1lNQk9MKHBtdV9lbmFibGVfaXJsZWQpOwogRVhQT1JUX1NZTUJPTChwbXVfYmF0dGVyeV9jb3VudCk7CiBFWFBPUlRfU1lNQk9MKHBtdV9iYXR0ZXJpZXMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9kbS1jcnlwdC5jIGIvZHJpdmVycy9tZC9kbS1jcnlwdC5jCmluZGV4IGIwNGY5OGQuLjgzNWRlZjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZG0tY3J5cHQuYworKysgYi9kcml2ZXJzL21kL2RtLWNyeXB0LmMKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDAzIENocmlzdG9waGUgU2FvdXQgPGNocmlzdG9waGVAc2FvdXQuZGU+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQgQ2xlbWVucyBGcnVod2lydGggPGNsZW1lbnNAZW5kb3JwaGluLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwNi0yMDA3IFJlZCBIYXQsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDA4IFJlZCBIYXQsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIEdQTC4KICAqLwpAQCAtOTMsNiArOTMsOCBAQAogCiAJc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKmlvX3F1ZXVlOwogCXN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICpjcnlwdF9xdWV1ZTsKKwl3YWl0X3F1ZXVlX2hlYWRfdCB3cml0ZXE7CisKIAkvKgogCSAqIGNyeXB0byByZWxhdGVkIGRhdGEKIAkgKi8KQEAgLTMzMSwxNCArMzMzLDcgQEAKIAljdHgtPmlkeF9vdXQgPSBiaW9fb3V0ID8gYmlvX291dC0+YmlfaWR4IDogMDsKIAljdHgtPnNlY3RvciA9IHNlY3RvciArIGNjLT5pdl9vZmZzZXQ7CiAJaW5pdF9jb21wbGV0aW9uKCZjdHgtPnJlc3RhcnQpOwotCS8qCi0JICogQ3J5cHRvIG9wZXJhdGlvbiBjYW4gYmUgYXN5bmNocm9ub3VzLAotCSAqIGN0eC0+cGVuZGluZyBpcyBpbmNyZWFzZWQgYWZ0ZXIgcmVxdWVzdCBzdWJtaXNzaW9uLgotCSAqIFdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgd2UgZG9uJ3QgY2FsbCB0aGUgY3J5cHQgZmluaXNoCi0JICogb3BlcmF0aW9uIGJlZm9yZSBwZW5kaW5nIGdvdCBpbmNyZW1lbnRlZAotCSAqIChkZXBlbmRlbnQgb24gY3J5cHQgc3VibWlzc2lvbiByZXR1cm4gY29kZSkuCi0JICovCi0JYXRvbWljX3NldCgmY3R4LT5wZW5kaW5nLCAyKTsKKwlhdG9taWNfc2V0KCZjdHgtPnBlbmRpbmcsIDEpOwogfQogCiBzdGF0aWMgaW50IGNyeXB0X2NvbnZlcnRfYmxvY2soc3RydWN0IGNyeXB0X2NvbmZpZyAqY2MsCkBAIC00MTEsNDMgKzQwNiw0MiBAQAogc3RhdGljIGludCBjcnlwdF9jb252ZXJ0KHN0cnVjdCBjcnlwdF9jb25maWcgKmNjLAogCQkJIHN0cnVjdCBjb252ZXJ0X2NvbnRleHQgKmN0eCkKIHsKLQlpbnQgciA9IDA7CisJaW50IHI7CiAKIAl3aGlsZShjdHgtPmlkeF9pbiA8IGN0eC0+YmlvX2luLT5iaV92Y250ICYmCiAJICAgICAgY3R4LT5pZHhfb3V0IDwgY3R4LT5iaW9fb3V0LT5iaV92Y250KSB7CiAKIAkJY3J5cHRfYWxsb2NfcmVxKGNjLCBjdHgpOwogCisJCWF0b21pY19pbmMoJmN0eC0+cGVuZGluZyk7CisKIAkJciA9IGNyeXB0X2NvbnZlcnRfYmxvY2soY2MsIGN0eCwgY2MtPnJlcSk7CiAKIAkJc3dpdGNoIChyKSB7CisJCS8qIGFzeW5jICovCiAJCWNhc2UgLUVCVVNZOgogCQkJd2FpdF9mb3JfY29tcGxldGlvbigmY3R4LT5yZXN0YXJ0KTsKIAkJCUlOSVRfQ09NUExFVElPTihjdHgtPnJlc3RhcnQpOwogCQkJLyogZmFsbCB0aHJvdWdoKi8KIAkJY2FzZSAtRUlOUFJPR1JFU1M6Ci0JCQlhdG9taWNfaW5jKCZjdHgtPnBlbmRpbmcpOwogCQkJY2MtPnJlcSA9IE5VTEw7Ci0JCQlyID0gMDsKLQkJCS8qIGZhbGwgdGhyb3VnaCovCi0JCWNhc2UgMDoKIAkJCWN0eC0+c2VjdG9yKys7CiAJCQljb250aW51ZTsKLQkJfQogCi0JCWJyZWFrOworCQkvKiBzeW5jICovCisJCWNhc2UgMDoKKwkJCWF0b21pY19kZWMoJmN0eC0+cGVuZGluZyk7CisJCQljdHgtPnNlY3RvcisrOworCQkJY29udGludWU7CisKKwkJLyogZXJyb3IgKi8KKwkJZGVmYXVsdDoKKwkJCWF0b21pY19kZWMoJmN0eC0+cGVuZGluZyk7CisJCQlyZXR1cm4gcjsKKwkJfQogCX0KIAotCS8qCi0JICogSWYgdGhlcmUgYXJlIHBlbmRpbmcgY3J5cHRvIG9wZXJhdGlvbiBydW4gYXN5bmMKLQkgKiBjb2RlLiBPdGhlcndpc2UgcHJvY2VzcyByZXR1cm4gY29kZSBzeW5jaHJvbm91c2x5LgotCSAqIFRoZSBzdGVwIG9mIDIgZW5zdXJlcyB0aGF0IGFzeW5jIGZpbmlzaCBkb2Vzbid0Ci0JICogY2FsbCBjcnlwdG8gZmluaXNoIHRvbyBlYXJseS4KLQkgKi8KLQlpZiAoYXRvbWljX3N1Yl9yZXR1cm4oMiwgJmN0eC0+cGVuZGluZykpCi0JCXJldHVybiAtRUlOUFJPR1JFU1M7Ci0KLQlyZXR1cm4gcjsKKwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIHZvaWQgZG1fY3J5cHRfYmlvX2Rlc3RydWN0b3Ioc3RydWN0IGJpbyAqYmlvKQpAQCAtNjI0LDggKzYxOCwxMCBAQAogc3RhdGljIHZvaWQga2NyeXB0ZF9pb193cml0ZShzdHJ1Y3QgZG1fY3J5cHRfaW8gKmlvKQogewogCXN0cnVjdCBiaW8gKmNsb25lID0gaW8tPmN0eC5iaW9fb3V0OworCXN0cnVjdCBjcnlwdF9jb25maWcgKmNjID0gaW8tPnRhcmdldC0+cHJpdmF0ZTsKIAogCWdlbmVyaWNfbWFrZV9yZXF1ZXN0KGNsb25lKTsKKwl3YWtlX3VwKCZjYy0+d3JpdGVxKTsKIH0KIAogc3RhdGljIHZvaWQga2NyeXB0ZF9pbyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCkBAIC02OTgsNyArNjk0LDggQEAKIAogCQlyID0gY3J5cHRfY29udmVydChjYywgJmlvLT5jdHgpOwogCi0JCWlmIChyICE9IC1FSU5QUk9HUkVTUykgeworCQlpZiAoYXRvbWljX2RlY19hbmRfdGVzdCgmaW8tPmN0eC5wZW5kaW5nKSkgeworCQkJLyogcHJvY2Vzc2VkLCBubyBydW5uaW5nIGFzeW5jIGNyeXB0byAgKi8KIAkJCWtjcnlwdGRfY3J5cHRfd3JpdGVfaW9fc3VibWl0KGlvLCByLCAwKTsKIAkJCWlmICh1bmxpa2VseShyIDwgMCkpCiAJCQkJcmV0dXJuOwpAQCAtNzA2LDggKzcwMywxMiBAQAogCQkJYXRvbWljX2luYygmaW8tPnBlbmRpbmcpOwogCiAJCS8qIG91dCBvZiBtZW1vcnkgLT4gcnVuIHF1ZXVlcyAqLwotCQlpZiAodW5saWtlbHkocmVtYWluaW5nKSkKKwkJaWYgKHVubGlrZWx5KHJlbWFpbmluZykpIHsKKwkJCS8qIHdhaXQgZm9yIGFzeW5jIGNyeXB0byB0aGVuIHJlaW5pdGlhbGl6ZSBwZW5kaW5nICovCisJCQl3YWl0X2V2ZW50KGNjLT53cml0ZXEsICFhdG9taWNfcmVhZCgmaW8tPmN0eC5wZW5kaW5nKSk7CisJCQlhdG9taWNfc2V0KCZpby0+Y3R4LnBlbmRpbmcsIDEpOwogCQkJY29uZ2VzdGlvbl93YWl0KFdSSVRFLCBIWi8xMDApOworCQl9CiAJfQogfQogCkBAIC03NDYsNyArNzQ3LDcgQEAKIAogCXIgPSBjcnlwdF9jb252ZXJ0KGNjLCAmaW8tPmN0eCk7CiAKLQlpZiAociAhPSAtRUlOUFJPR1JFU1MpCisJaWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoJmlvLT5jdHgucGVuZGluZykpCiAJCWtjcnlwdGRfY3J5cHRfcmVhZF9kb25lKGlvLCByKTsKIAogCWNyeXB0X2RlY19wZW5kaW5nKGlvKTsKQEAgLTEwNDcsNiArMTA0OCw3IEBACiAJCWdvdG8gYmFkX2NyeXB0X3F1ZXVlOwogCX0KIAorCWluaXRfd2FpdHF1ZXVlX2hlYWQoJmNjLT53cml0ZXEpOwogCXRpLT5wcml2YXRlID0gY2M7CiAJcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0taW8uYyBiL2RyaXZlcnMvbWQvZG0taW8uYwppbmRleCBiOGUzNDJmLi44ZjI1ZjYyIDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2RtLWlvLmMKKysrIGIvZHJpdmVycy9tZC9kbS1pby5jCkBAIC0xMTQsNyArMTE0LDcgQEAKIAkJCXdha2VfdXBfcHJvY2Vzcyhpby0+c2xlZXBlcik7CiAKIAkJZWxzZSB7Ci0JCQlpbnQgciA9IGlvLT5lcnJvcjsKKwkJCXVuc2lnbmVkIGxvbmcgciA9IGlvLT5lcnJvcjsKIAkJCWlvX25vdGlmeV9mbiBmbiA9IGlvLT5jYWxsYmFjazsKIAkJCXZvaWQgKmNvbnRleHQgPSBpby0+Y29udGV4dDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9kbS1yYWlkMS5jIGIvZHJpdmVycy9tZC9kbS1yYWlkMS5jCmluZGV4IDUxNjA1ODcuLjc2MmNiMDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZG0tcmFpZDEuYworKysgYi9kcml2ZXJzL21kL2RtLXJhaWQxLmMKQEAgLTc1Myw3ICs3NTMsNyBAQAogICogYXJlIGluIHRoZSBuby1zeW5jIHN0YXRlLiAgV2UgaGF2ZSB0byByZWNvdmVyIHRoZXNlIGJ5CiAgKiByZWNvcHlpbmcgZnJvbSB0aGUgZGVmYXVsdCBtaXJyb3IgdG8gYWxsIHRoZSBvdGhlcnMuCiAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1zdGF0aWMgdm9pZCByZWNvdmVyeV9jb21wbGV0ZShpbnQgcmVhZF9lcnIsIHVuc2lnbmVkIGludCB3cml0ZV9lcnIsCitzdGF0aWMgdm9pZCByZWNvdmVyeV9jb21wbGV0ZShpbnQgcmVhZF9lcnIsIHVuc2lnbmVkIGxvbmcgd3JpdGVfZXJyLAogCQkJICAgICAgdm9pZCAqY29udGV4dCkKIHsKIAlzdHJ1Y3QgcmVnaW9uICpyZWcgPSAoc3RydWN0IHJlZ2lvbiAqKWNvbnRleHQ7CkBAIC03NjcsNyArNzY3LDcgQEAKIAl9CiAKIAlpZiAod3JpdGVfZXJyKSB7Ci0JCURNRVJSX0xJTUlUKCJXcml0ZSBlcnJvciBkdXJpbmcgcmVjb3ZlcnkgKGVycm9yID0gMHgleCkiLAorCQlETUVSUl9MSU1JVCgiV3JpdGUgZXJyb3IgZHVyaW5nIHJlY292ZXJ5IChlcnJvciA9IDB4JWx4KSIsCiAJCQkgICAgd3JpdGVfZXJyKTsKIAkJLyoKIAkJICogQml0cyBjb3JyZXNwb25kIHRvIGRldmljZXMgKGV4Y2x1ZGluZyBkZWZhdWx0IG1pcnJvcikuCmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL2RtLXNuYXAuYyBiL2RyaXZlcnMvbWQvZG0tc25hcC5jCmluZGV4IGFlMjRlYWIuLjRkYzhhNDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZG0tc25hcC5jCisrKyBiL2RyaXZlcnMvbWQvZG0tc25hcC5jCkBAIC04MDQsNyArODA0LDcgQEAKICAqIENhbGxlZCB3aGVuIHRoZSBjb3B5IEkvTyBoYXMgZmluaXNoZWQuICBrY29weWQgYWN0dWFsbHkgcnVucwogICogdGhpcyBjb2RlIHNvIGRvbid0IGJsb2NrLgogICovCi1zdGF0aWMgdm9pZCBjb3B5X2NhbGxiYWNrKGludCByZWFkX2VyciwgdW5zaWduZWQgaW50IHdyaXRlX2Vyciwgdm9pZCAqY29udGV4dCkKK3N0YXRpYyB2b2lkIGNvcHlfY2FsbGJhY2soaW50IHJlYWRfZXJyLCB1bnNpZ25lZCBsb25nIHdyaXRlX2Vyciwgdm9pZCAqY29udGV4dCkKIHsKIAlzdHJ1Y3QgZG1fc25hcF9wZW5kaW5nX2V4Y2VwdGlvbiAqcGUgPSBjb250ZXh0OwogCXN0cnVjdCBkbV9zbmFwc2hvdCAqcyA9IHBlLT5zbmFwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9rY29weWQuYyBiL2RyaXZlcnMvbWQva2NvcHlkLmMKaW5kZXggZjM4MzFmMy4uZTc2YjUyYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9rY29weWQuYworKysgYi9kcml2ZXJzL21kL2tjb3B5ZC5jCkBAIC0xNjksNyArMTY5LDcgQEAKIAkgKiBFcnJvciBzdGF0ZSBvZiB0aGUgam9iLgogCSAqLwogCWludCByZWFkX2VycjsKLQl1bnNpZ25lZCBpbnQgd3JpdGVfZXJyOworCXVuc2lnbmVkIGxvbmcgd3JpdGVfZXJyOwogCiAJLyoKIAkgKiBFaXRoZXIgUkVBRCBvciBXUklURQpAQCAtMjkzLDcgKzI5Myw3IEBACiB7CiAJdm9pZCAqY29udGV4dCA9IGpvYi0+Y29udGV4dDsKIAlpbnQgcmVhZF9lcnIgPSBqb2ItPnJlYWRfZXJyOwotCXVuc2lnbmVkIGludCB3cml0ZV9lcnIgPSBqb2ItPndyaXRlX2VycjsKKwl1bnNpZ25lZCBsb25nIHdyaXRlX2VyciA9IGpvYi0+d3JpdGVfZXJyOwogCWtjb3B5ZF9ub3RpZnlfZm4gZm4gPSBqb2ItPmZuOwogCXN0cnVjdCBrY29weWRfY2xpZW50ICprYyA9IGpvYi0+a2M7CiAKQEAgLTM5Niw3ICszOTYsNyBAQAogCQlpZiAociA8IDApIHsKIAkJCS8qIGVycm9yIHRoaXMgcm9ndWUgam9iICovCiAJCQlpZiAoam9iLT5ydyA9PSBXUklURSkKLQkJCQlqb2ItPndyaXRlX2VyciA9ICh1bnNpZ25lZCBpbnQpIC0xOworCQkJCWpvYi0+d3JpdGVfZXJyID0gKHVuc2lnbmVkIGxvbmcpIC0xTDsKIAkJCWVsc2UKIAkJCQlqb2ItPnJlYWRfZXJyID0gMTsKIAkJCXB1c2goJl9jb21wbGV0ZV9qb2JzLCBqb2IpOwpAQCAtNDQ4LDggKzQ0OCw4IEBACiB9CiAKICNkZWZpbmUgU1VCX0pPQl9TSVpFIDEyOAotc3RhdGljIHZvaWQgc2VnbWVudF9jb21wbGV0ZShpbnQgcmVhZF9lcnIsCi0JCQkgICAgIHVuc2lnbmVkIGludCB3cml0ZV9lcnIsIHZvaWQgKmNvbnRleHQpCitzdGF0aWMgdm9pZCBzZWdtZW50X2NvbXBsZXRlKGludCByZWFkX2VyciwgdW5zaWduZWQgbG9uZyB3cml0ZV9lcnIsCisJCQkgICAgIHZvaWQgKmNvbnRleHQpCiB7CiAJLyogRklYTUU6IHRpZHkgdGhpcyBmdW5jdGlvbiAqLwogCXNlY3Rvcl90IHByb2dyZXNzID0gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQva2NvcHlkLmggYi9kcml2ZXJzL21kL2tjb3B5ZC5oCmluZGV4IDQ2MjFlYTAuLjQ4NDVmMmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQva2NvcHlkLmgKKysrIGIvZHJpdmVycy9tZC9rY29weWQuaApAQCAtMzIsOCArMzIsOCBAQAogICogcmVhZF9lcnIgaXMgYSBib29sZWFuLAogICogd3JpdGVfZXJyIGlzIGEgYml0c2V0LCB3aXRoIDEgYml0IGZvciBlYWNoIGRlc3RpbmF0aW9uIHJlZ2lvbgogICovCi10eXBlZGVmIHZvaWQgKCprY29weWRfbm90aWZ5X2ZuKShpbnQgcmVhZF9lcnIsCi0JCQkJIHVuc2lnbmVkIGludCB3cml0ZV9lcnIsIHZvaWQgKmNvbnRleHQpOwordHlwZWRlZiB2b2lkICgqa2NvcHlkX25vdGlmeV9mbikoaW50IHJlYWRfZXJyLCB1bnNpZ25lZCBsb25nIHdyaXRlX2VyciwKKwkJCQkgdm9pZCAqY29udGV4dCk7CiAKIGludCBrY29weWRfY29weShzdHJ1Y3Qga2NvcHlkX2NsaWVudCAqa2MsIHN0cnVjdCBpb19yZWdpb24gKmZyb20sCiAJCXVuc2lnbmVkIGludCBudW1fZGVzdHMsIHN0cnVjdCBpb19yZWdpb24gKmRlc3RzLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9tZC5jIGIvZHJpdmVycy9tZC9tZC5jCmluZGV4IGNjYmJmNjMuLjYxY2NiZDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvbWQuYworKysgYi9kcml2ZXJzL21kL21kLmMKQEAgLTE4NjQsMTcgKzE4NjQsNiBAQAogX19BVFRSKHN0YXRlLCBTX0lSVUdPfFNfSVdVU1IsIHN0YXRlX3Nob3csIHN0YXRlX3N0b3JlKTsKIAogc3RhdGljIHNzaXplX3QKLXN1cGVyX3Nob3cobWRrX3JkZXZfdCAqcmRldiwgY2hhciAqcGFnZSkKLXsKLQlpZiAocmRldi0+c2JfbG9hZGVkICYmIHJkZXYtPnNiX3NpemUpIHsKLQkJbWVtY3B5KHBhZ2UsIHBhZ2VfYWRkcmVzcyhyZGV2LT5zYl9wYWdlKSwgcmRldi0+c2Jfc2l6ZSk7Ci0JCXJldHVybiByZGV2LT5zYl9zaXplOwotCX0gZWxzZQotCQlyZXR1cm4gMDsKLX0KLXN0YXRpYyBzdHJ1Y3QgcmRldl9zeXNmc19lbnRyeSByZGV2X3N1cGVyID0gX19BVFRSX1JPKHN1cGVyKTsKLQotc3RhdGljIHNzaXplX3QKIGVycm9yc19zaG93KG1ka19yZGV2X3QgKnJkZXYsIGNoYXIgKnBhZ2UpCiB7CiAJcmV0dXJuIHNwcmludGYocGFnZSwgIiVkXG4iLCBhdG9taWNfcmVhZCgmcmRldi0+Y29ycmVjdGVkX2Vycm9ycykpOwpAQCAtMjA2MCw3ICsyMDQ5LDYgQEAKIAogc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKnJkZXZfZGVmYXVsdF9hdHRyc1tdID0gewogCSZyZGV2X3N0YXRlLmF0dHIsCi0JJnJkZXZfc3VwZXIuYXR0ciwKIAkmcmRldl9lcnJvcnMuYXR0ciwKIAkmcmRldl9zbG90LmF0dHIsCiAJJnJkZXZfb2Zmc2V0LmF0dHIsCmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL3JhaWQ1LmMgYi9kcml2ZXJzL21kL3JhaWQ1LmMKaW5kZXggMmQ2ZjFhNS4uYjE2MmI4MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9yYWlkNS5jCisrKyBiL2RyaXZlcnMvbWQvcmFpZDUuYwpAQCAtMTE0Myw3ICsxMTQzLDcgQEAKIAkJCXJkZXYgPSBjb25mLT5kaXNrc1tpXS5yZGV2OwogCQkJcHJpbnRrKEtFUk5fSU5GTyAicmFpZDU6JXM6IHJlYWQgZXJyb3IgY29ycmVjdGVkICglbHUgc2VjdG9ycyBhdCAlbGx1IG9uICVzKVxuIiwKIAkJCSAgICAgICBtZG5hbWUoY29uZi0+bWRkZXYpLCBTVFJJUEVfU0VDVE9SUywKLQkJCSAgICAgICAodW5zaWduZWQgbG9uZyBsb25nKXNoLT5zZWN0b3IgKyByZGV2LT5kYXRhX29mZnNldCwKKwkJCSAgICAgICAodW5zaWduZWQgbG9uZyBsb25nKShzaC0+c2VjdG9yICsgcmRldi0+ZGF0YV9vZmZzZXQpLAogCQkJICAgICAgIGJkZXZuYW1lKHJkZXYtPmJkZXYsIGIpKTsKIAkJCWNsZWFyX2JpdChSNV9SZWFkRXJyb3IsICZzaC0+ZGV2W2ldLmZsYWdzKTsKIAkJCWNsZWFyX2JpdChSNV9SZVdyaXRlLCAmc2gtPmRldltpXS5mbGFncyk7CkBAIC0xMTYwLDEzICsxMTYwLDEzIEBACiAJCWlmIChjb25mLT5tZGRldi0+ZGVncmFkZWQpCiAJCQlwcmludGsoS0VSTl9XQVJOSU5HICJyYWlkNTolczogcmVhZCBlcnJvciBub3QgY29ycmVjdGFibGUgKHNlY3RvciAlbGx1IG9uICVzKS5cbiIsCiAJCQkgICAgICAgbWRuYW1lKGNvbmYtPm1kZGV2KSwKLQkJCSAgICAgICAodW5zaWduZWQgbG9uZyBsb25nKXNoLT5zZWN0b3IgKyByZGV2LT5kYXRhX29mZnNldCwKKwkJCSAgICAgICAodW5zaWduZWQgbG9uZyBsb25nKShzaC0+c2VjdG9yICsgcmRldi0+ZGF0YV9vZmZzZXQpLAogCQkJICAgICAgIGJkbik7CiAJCWVsc2UgaWYgKHRlc3RfYml0KFI1X1JlV3JpdGUsICZzaC0+ZGV2W2ldLmZsYWdzKSkKIAkJCS8qIE9oLCBubyEhISAqLwogCQkJcHJpbnRrKEtFUk5fV0FSTklORyAicmFpZDU6JXM6IHJlYWQgZXJyb3IgTk9UIGNvcnJlY3RlZCEhIChzZWN0b3IgJWxsdSBvbiAlcykuXG4iLAogCQkJICAgICAgIG1kbmFtZShjb25mLT5tZGRldiksCi0JCQkgICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZylzaC0+c2VjdG9yICsgcmRldi0+ZGF0YV9vZmZzZXQsCisJCQkgICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZykoc2gtPnNlY3RvciArIHJkZXYtPmRhdGFfb2Zmc2V0KSwKIAkJCSAgICAgICBiZG4pOwogCQllbHNlIGlmIChhdG9taWNfcmVhZCgmcmRldi0+cmVhZF9lcnJvcnMpCiAJCQkgPiBjb25mLT5tYXhfbnJfc3RyaXBlcykKQEAgLTIzNDgsMjUgKzIzNDgsMTUgQEAKIHN0YXRpYyB2b2lkIGhhbmRsZV9wYXJpdHlfY2hlY2tzNShyYWlkNV9jb25mX3QgKmNvbmYsIHN0cnVjdCBzdHJpcGVfaGVhZCAqc2gsCiAJCQkJc3RydWN0IHN0cmlwZV9oZWFkX3N0YXRlICpzLCBpbnQgZGlza3MpCiB7Ci0Jc2V0X2JpdChTVFJJUEVfSEFORExFLCAmc2gtPnN0YXRlKTsKLQkvKiBUYWtlIG9uZSBvZiB0aGUgZm9sbG93aW5nIGFjdGlvbnM6Ci0JICogMS8gc3RhcnQgYSBjaGVjayBwYXJpdHkgb3BlcmF0aW9uIGlmICh1cHRvZGF0ZSA9PSBkaXNrcykKLQkgKiAyLyBmaW5pc2ggYSBjaGVjayBwYXJpdHkgb3BlcmF0aW9uIGFuZCBhY3Qgb24gdGhlIHJlc3VsdAotCSAqIDMvIHNraXAgdG8gdGhlIHdyaXRlYmFjayBzZWN0aW9uIGlmIHdlIHByZXZpb3VzbHkKLQkgKiAgICBpbml0aWF0ZWQgYSByZWNvdmVyeSBvcGVyYXRpb24KLQkgKi8KLQlpZiAocy0+ZmFpbGVkID09IDAgJiYKLQkgICAgIXRlc3RfYml0KFNUUklQRV9PUF9NT0RfUkVQQUlSX1BELCAmc2gtPm9wcy5wZW5kaW5nKSkgewotCQlpZiAoIXRlc3RfYW5kX3NldF9iaXQoU1RSSVBFX09QX0NIRUNLLCAmc2gtPm9wcy5wZW5kaW5nKSkgewotCQkJQlVHX09OKHMtPnVwdG9kYXRlICE9IGRpc2tzKTsKLQkJCWNsZWFyX2JpdChSNV9VUFRPREFURSwgJnNoLT5kZXZbc2gtPnBkX2lkeF0uZmxhZ3MpOwotCQkJc2gtPm9wcy5jb3VudCsrOwotCQkJcy0+dXB0b2RhdGUtLTsKLQkJfSBlbHNlIGlmICgKLQkJICAgICAgIHRlc3RfYW5kX2NsZWFyX2JpdChTVFJJUEVfT1BfQ0hFQ0ssICZzaC0+b3BzLmNvbXBsZXRlKSkgewotCQkJY2xlYXJfYml0KFNUUklQRV9PUF9DSEVDSywgJnNoLT5vcHMuYWNrKTsKLQkJCWNsZWFyX2JpdChTVFJJUEVfT1BfQ0hFQ0ssICZzaC0+b3BzLnBlbmRpbmcpOworCWludCBjYW5jZWxlZF9jaGVjayA9IDA7CiAKKwlzZXRfYml0KFNUUklQRV9IQU5ETEUsICZzaC0+c3RhdGUpOworCisJLyogY29tcGxldGUgYSBjaGVjayBvcGVyYXRpb24gKi8KKwlpZiAodGVzdF9hbmRfY2xlYXJfYml0KFNUUklQRV9PUF9DSEVDSywgJnNoLT5vcHMuY29tcGxldGUpKSB7CisJICAgIGNsZWFyX2JpdChTVFJJUEVfT1BfQ0hFQ0ssICZzaC0+b3BzLmFjayk7CisJICAgIGNsZWFyX2JpdChTVFJJUEVfT1BfQ0hFQ0ssICZzaC0+b3BzLnBlbmRpbmcpOworCQlpZiAocy0+ZmFpbGVkID09IDApIHsKIAkJCWlmIChzaC0+b3BzLnplcm9fc3VtX3Jlc3VsdCA9PSAwKQogCQkJCS8qIHBhcml0eSBpcyBjb3JyZWN0IChvbiBkaXNjLAogCQkJCSAqIG5vdCBpbiBidWZmZXIgYW55IG1vcmUpCkBAIC0yMzkxLDcgKzIzODEsOCBAQAogCQkJCQlzLT51cHRvZGF0ZSsrOwogCQkJCX0KIAkJCX0KLQkJfQorCQl9IGVsc2UKKwkJCWNhbmNlbGVkX2NoZWNrID0gMTsgLyogU1RSSVBFX0lOU1lOQyBpcyBub3Qgc2V0ICovCiAJfQogCiAJLyogY2hlY2sgaWYgd2UgY2FuIGNsZWFyIGEgcGFyaXR5IGRpc2sgcmVjb25zdHJ1Y3QgKi8KQEAgLTI0MDQsMTIgKzIzOTUsMjggQEAKIAkJY2xlYXJfYml0KFNUUklQRV9PUF9DT01QVVRFX0JMSywgJnNoLT5vcHMucGVuZGluZyk7CiAJfQogCi0JLyogV2FpdCBmb3IgY2hlY2sgcGFyaXR5IGFuZCBjb21wdXRlIGJsb2NrIG9wZXJhdGlvbnMgdG8gY29tcGxldGUKLQkgKiBiZWZvcmUgd3JpdGUtYmFjaworCS8qIHN0YXJ0IGEgbmV3IGNoZWNrIG9wZXJhdGlvbiBpZiB0aGVyZSBhcmUgbm8gZmFpbHVyZXMsIHRoZSBzdHJpcGUgaXMKKwkgKiBub3QgaW5zeW5jLCBhbmQgYSByZXBhaXIgaXMgbm90IGluIGZsaWdodAogCSAqLwotCWlmICghdGVzdF9iaXQoU1RSSVBFX0lOU1lOQywgJnNoLT5zdGF0ZSkgJiYKLQkJIXRlc3RfYml0KFNUUklQRV9PUF9DSEVDSywgJnNoLT5vcHMucGVuZGluZykgJiYKLQkJIXRlc3RfYml0KFNUUklQRV9PUF9DT01QVVRFX0JMSywgJnNoLT5vcHMucGVuZGluZykpIHsKKwlpZiAocy0+ZmFpbGVkID09IDAgJiYKKwkgICAgIXRlc3RfYml0KFNUUklQRV9JTlNZTkMsICZzaC0+c3RhdGUpICYmCisJICAgICF0ZXN0X2JpdChTVFJJUEVfT1BfTU9EX1JFUEFJUl9QRCwgJnNoLT5vcHMucGVuZGluZykpIHsKKwkJaWYgKCF0ZXN0X2FuZF9zZXRfYml0KFNUUklQRV9PUF9DSEVDSywgJnNoLT5vcHMucGVuZGluZykpIHsKKwkJCUJVR19PTihzLT51cHRvZGF0ZSAhPSBkaXNrcyk7CisJCQljbGVhcl9iaXQoUjVfVVBUT0RBVEUsICZzaC0+ZGV2W3NoLT5wZF9pZHhdLmZsYWdzKTsKKwkJCXNoLT5vcHMuY291bnQrKzsKKwkJCXMtPnVwdG9kYXRlLS07CisJCX0KKwl9CisKKwkvKiBXYWl0IGZvciBjaGVjayBwYXJpdHkgYW5kIGNvbXB1dGUgYmxvY2sgb3BlcmF0aW9ucyB0byBjb21wbGV0ZQorCSAqIGJlZm9yZSB3cml0ZS1iYWNrLiAgSWYgYSBmYWlsdXJlIG9jY3VycmVkIHdoaWxlIHRoZSBjaGVjayBvcGVyYXRpb24KKwkgKiB3YXMgaW4gZmxpZ2h0IHdlIG5lZWQgdG8gY3ljbGUgdGhpcyBzdHJpcGUgdGhyb3VnaCBoYW5kbGVfc3RyaXBlCisJICogc2luY2UgdGhlIHBhcml0eSBibG9jayBtYXkgbm90IGJlIHVwdG9kYXRlCisJICovCisJaWYgKCFjYW5jZWxlZF9jaGVjayAmJiAhdGVzdF9iaXQoU1RSSVBFX0lOU1lOQywgJnNoLT5zdGF0ZSkgJiYKKwkgICAgIXRlc3RfYml0KFNUUklQRV9PUF9DSEVDSywgJnNoLT5vcHMucGVuZGluZykgJiYKKwkgICAgIXRlc3RfYml0KFNUUklQRV9PUF9DT01QVVRFX0JMSywgJnNoLT5vcHMucGVuZGluZykpIHsKIAkJc3RydWN0IHI1ZGV2ICpkZXY7CiAJCS8qIGVpdGhlciBmYWlsZWQgcGFyaXR5IGNoZWNrLCBvciByZWNvdmVyeSBpcyBoYXBwZW5pbmcgKi8KIAkJaWYgKHMtPmZhaWxlZCA9PSAwKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9NYWtlZmlsZSBiL2RyaXZlcnMvbWVkaWEvTWFrZWZpbGUKaW5kZXggOGNmOTEzNS4uN2I4YmI2OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL21lZGlhL01ha2VmaWxlCkBAIC02LDMgKzYsNiBAQAogb2JqLXkgKz0gdmlkZW8vCiBvYmotJChDT05GSUdfVklERU9fREVWKSArPSByYWRpby8KIG9iai0kKENPTkZJR19EVkJfQ09SRSkgICs9IGR2Yi8KK2lmZXEgKCQoQ09ORklHX0RWQl9DT1JFKSwpCisgIG9iai0kKENPTkZJR19WSURFT19UVU5FUikgICs9IGR2Yi9mcm9udGVuZHMvCitlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9jb21tb24vc2FhNzE0Nl9jb3JlLmMgYi9kcml2ZXJzL21lZGlhL2NvbW1vbi9zYWE3MTQ2X2NvcmUuYwppbmRleCAxNjhhOGQzLi43NzA3YjhjIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL2NvbW1vbi9zYWE3MTQ2X2NvcmUuYworKysgYi9kcml2ZXJzL21lZGlhL2NvbW1vbi9zYWE3MTQ2X2NvcmUuYwpAQCAtMzA2LDI1ICszMDYsMjIgQEAKIAkJcmV0dXJuIElSUV9OT05FOwogCX0KIAotCWlmKCAwICE9IChkZXYtPmV4dCkpIHsKLQkJaWYoIDAgIT0gKGRldi0+ZXh0LT5pcnFfbWFzayAmIGlzciApKSB7Ci0JCQlpZiggMCAhPSBkZXYtPmV4dC0+aXJxX2Z1bmMgKSB7CisJaWYgKGRldi0+ZXh0KSB7CisJCWlmIChkZXYtPmV4dC0+aXJxX21hc2sgJiBpc3IpIHsKKwkJCWlmIChkZXYtPmV4dC0+aXJxX2Z1bmMpCiAJCQkJZGV2LT5leHQtPmlycV9mdW5jKGRldiwgJmlzcik7Ci0JCQl9CiAJCQlpc3IgJj0gfmRldi0+ZXh0LT5pcnFfbWFzazsKIAkJfQogCX0KIAlpZiAoMCAhPSAoaXNyICYgKE1BU0tfMjcpKSkgewogCQlERUJfSU5UKCgiaXJxOiBSUFMwICgweCUwOHgpLlxuIixpc3IpKTsKLQkJaWYoIDAgIT0gZGV2LT52dl9kYXRhICYmIDAgIT0gZGV2LT52dl9jYWxsYmFjaykgeworCQlpZiAoZGV2LT52dl9kYXRhICYmIGRldi0+dnZfY2FsbGJhY2spCiAJCQlkZXYtPnZ2X2NhbGxiYWNrKGRldixpc3IpOwotCQl9CiAJCWlzciAmPSB+TUFTS18yNzsKIAl9CiAJaWYgKDAgIT0gKGlzciAmIChNQVNLXzI4KSkpIHsKLQkJaWYoIDAgIT0gZGV2LT52dl9kYXRhICYmIDAgIT0gZGV2LT52dl9jYWxsYmFjaykgeworCQlpZiAoZGV2LT52dl9kYXRhICYmIGRldi0+dnZfY2FsbGJhY2spCiAJCQlkZXYtPnZ2X2NhbGxiYWNrKGRldixpc3IpOwotCQl9CiAJCWlzciAmPSB+TUFTS18yODsKIAl9CiAJaWYgKDAgIT0gKGlzciAmIChNQVNLXzE2fE1BU0tfMTcpKSkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9jb21tb24vc2FhNzE0Nl9mb3BzLmMgYi9kcml2ZXJzL21lZGlhL2NvbW1vbi9zYWE3MTQ2X2ZvcHMuYwppbmRleCBmMDcwM2Q4Li4xNzFhZmU3IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL2NvbW1vbi9zYWE3MTQ2X2ZvcHMuYworKysgYi9kcml2ZXJzL21lZGlhL2NvbW1vbi9zYWE3MTQ2X2ZvcHMuYwpAQCAtMjcyLDcgKzI3Miw3IEBACiAKIAlyZXN1bHQgPSAwOwogb3V0OgotCWlmKCBmaCAhPSAwICYmIHJlc3VsdCAhPSAwICkgeworCWlmIChmaCAmJiByZXN1bHQgIT0gMCkgewogCQlrZnJlZShmaCk7CiAJCWZpbGUtPnByaXZhdGVfZGF0YSA9IE5VTEw7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9kdmIvZHZiLWNvcmUvZHZiX25ldC5jIGIvZHJpdmVycy9tZWRpYS9kdmIvZHZiLWNvcmUvZHZiX25ldC5jCmluZGV4IGVkM2Y4MjYuLjRjOGI2MmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvZHZiL2R2Yi1jb3JlL2R2Yl9uZXQuYworKysgYi9kcml2ZXJzL21lZGlhL2R2Yi9kdmItY29yZS9kdmJfbmV0LmMKQEAgLTc4NCw4ICs3ODQsOCBAQAogewogCXN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBmZWVkLT5wcml2OwogCi0JaWYgKGJ1ZmZlcjIgIT0gMCkKLQkJcHJpbnRrKEtFUk5fV0FSTklORyAiYnVmZmVyMiBub3QgMDogJXAuXG4iLCBidWZmZXIyKTsKKwlpZiAoYnVmZmVyMikKKwkJcHJpbnRrKEtFUk5fV0FSTklORyAiYnVmZmVyMiBub3QgTlVMTDogJXAuXG4iLCBidWZmZXIyKTsKIAlpZiAoYnVmZmVyMV9sZW4gPiAzMjc2OCkKIAkJcHJpbnRrKEtFUk5fV0FSTklORyAibGVuZ3RoID4gMzJrOiAlenUuXG4iLCBidWZmZXIxX2xlbik7CiAJLyogcHJpbnRrKCJUUyBjYWxsYmFjazogJXUgYnl0ZXMsICV1IFRTIGNlbGxzIEAgJXAuXG4iLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9kdmIvZHZiLXVzYi9vcGVyYTEuYyBiL2RyaXZlcnMvbWVkaWEvZHZiL2R2Yi11c2Ivb3BlcmExLmMKaW5kZXggMjE5MzViZi4uMzAyY2M2NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9kdmIvZHZiLXVzYi9vcGVyYTEuYworKysgYi9kcml2ZXJzL21lZGlhL2R2Yi9kdmItdXNiL29wZXJhMS5jCkBAIC00NzgsOSArNDc4LDkgQEAKIAkJCQllcnIoImNvdWxkIG5vdCByZXN0YXJ0IHRoZSBVU0IgY29udHJvbGxlciBDUFUuIik7CiAJCQkJcmV0ID0gLUVJTlZBTDsKIAkJCX0KLQkJCWtmcmVlKHApOwogCQl9CiAJfQorCWtmcmVlKHApOwogCWlmIChmdykgewogCQlyZWxlYXNlX2Zpcm13YXJlKGZ3KTsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvczVoMTQwOS5jIGIvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL3M1aDE0MDkuYwppbmRleCA4MTk0MzM0Li4xYTRkODMxIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvczVoMTQwOS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9zNWgxNDA5LmMKQEAgLTQ0NSw3ICs0NDUsNyBAQAogCQkJczVoMTQwOV9yZWFkcmVnKHN0YXRlLCAweGUzKSB8IDB4MTEwMCk7CiAJZWxzZQogCQlyZXR1cm4gczVoMTQwOV93cml0ZXJlZyhzdGF0ZSwgMHhlMywKLQkJCXM1aDE0MDlfcmVhZHJlZyhzdGF0ZSwgMHhlMykgJiAweGVlZmYpOworCQkJczVoMTQwOV9yZWFkcmVnKHN0YXRlLCAweGUzKSAmIDB4ZmVmZik7CiB9CiAKIHN0YXRpYyBpbnQgczVoMTQwOV9zbGVlcChzdHJ1Y3QgZHZiX2Zyb250ZW5kKiBmZSwgaW50IGVuYWJsZSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcmFkaW8vcmFkaW8tY2FkZXQuYyBiL2RyaXZlcnMvbWVkaWEvcmFkaW8vcmFkaW8tY2FkZXQuYwppbmRleCAzNGUzMTdjLi41N2I5ZTNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3JhZGlvL3JhZGlvLWNhZGV0LmMKKysrIGIvZHJpdmVycy9tZWRpYS9yYWRpby9yYWRpby1jYWRldC5jCkBAIC01ODcsNiArNTg3LDggQEAKIAkudmlkaW9jX3NfaW5wdXQgICAgID0gdmlkaW9jX3NfaW5wdXQsCiB9OwogCisjaWZkZWYgQ09ORklHX1BOUAorCiBzdGF0aWMgc3RydWN0IHBucF9kZXZpY2VfaWQgY2FkZXRfcG5wX2RldmljZXNbXSA9IHsKIAkvKiBBRFMgQ2FkZXQgQU0vRk0gUmFkaW8gQ2FyZCAqLwogCXsuaWQgPSAiTVNNMGMyNCIsIC5kcml2ZXJfZGF0YSA9IDB9LApAQCAtNjIxLDYgKzYyMywxMCBAQAogCS5yZW1vdmUJCT0gTlVMTCwKIH07CiAKKyNlbHNlCitzdGF0aWMgc3RydWN0IHBucF9kcml2ZXIgY2FkZXRfcG5wX2RyaXZlcjsKKyNlbmRpZgorCiBzdGF0aWMgaW50IGNhZGV0X3Byb2JlKHZvaWQpCiB7CiAJc3RhdGljIGludCBpb3ZhbHNbOF09ezB4MzMwLDB4MzMyLDB4MzM0LDB4MzM2LDB4MzM4LDB4MzNhLDB4MzNjLDB4MzNlfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vS2NvbmZpZyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vS2NvbmZpZwppbmRleCAzNzA3MmEyLi4xODMyOTY2IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL0tjb25maWcKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9LY29uZmlnCkBAIC0zMDUsNyArMzA1LDcgQEAKIAogY29uZmlnIFZJREVPX0NYMjM0MVgKIAl0cmlzdGF0ZSAiQ29uZXhhbnQgQ1gyMzQxeCBNUEVHIGVuY29kZXJzIgotCWRlcGVuZHMgb24gVklERU9fVjRMMiAmJiBFWFBFUklNRU5UQUwKKwlkZXBlbmRzIG9uIFZJREVPX1Y0TDIgJiYgRVhQRVJJTUVOVEFMICYmIFZJREVPX1Y0TDJfQ09NTU9OCiAJLS0taGVscC0tLQogCSAgU3VwcG9ydCBmb3IgdGhlIENvbmV4YW50IENYMjM0MTYgTVBFRyBlbmNvZGVycwogCSAgYW5kIENYMjM0MTUgTVBFRyBlbmNvZGVyL2RlY29kZXJzLgpAQCAtMzgyLDcgKzM4Miw3IEBACiAKIGNvbmZpZyBWSURFT19WSVZJCiAJdHJpc3RhdGUgIlZpcnR1YWwgVmlkZW8gRHJpdmVyIgotCWRlcGVuZHMgb24gVklERU9fVjRMMiAmJiAhU1BBUkMzMiAmJiAhU1BBUkM2NAorCWRlcGVuZHMgb24gVklERU9fREVWICYmIFZJREVPX1Y0TDIgJiYgIVNQQVJDMzIgJiYgIVNQQVJDNjQKIAlzZWxlY3QgVklERU9CVUZfVk1BTExPQwogCWRlZmF1bHQgbgogCS0tLWhlbHAtLS0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vYWR2NzE3MC5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9hZHY3MTcwLmMKaW5kZXggY2JhYjUzZi4uZmVhMmU3MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9hZHY3MTcwLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9hZHY3MTcwLmMKQEAgLTQwOCw3ICs0MDgsNyBAQAogCQlyZXR1cm4gMDsKIAogCWNsaWVudCA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBpMmNfY2xpZW50KSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKGNsaWVudCA9PSAwKQorCWlmICghY2xpZW50KQogCQlyZXR1cm4gLUVOT01FTTsKIAljbGllbnQtPmFkZHIgPSBhZGRyZXNzOwogCWNsaWVudC0+YWRhcHRlciA9IGFkYXB0ZXI7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2FkdjcxNzUuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vYWR2NzE3NS5jCmluZGV4IDBkMGM1NTQuLjEwZDRkODkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vYWR2NzE3NS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vYWR2NzE3NS5jCkBAIC00MjYsNyArNDI2LDcgQEAKIAkJcmV0dXJuIDA7CiAKIAljbGllbnQgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgaTJjX2NsaWVudCksIEdGUF9LRVJORUwpOwotCWlmIChjbGllbnQgPT0gMCkKKwlpZiAoIWNsaWVudCkKIAkJcmV0dXJuIC1FTk9NRU07CiAJY2xpZW50LT5hZGRyID0gYWRkcmVzczsKIAljbGllbnQtPmFkYXB0ZXIgPSBhZGFwdGVyOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9idDgxOS5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9idDgxOS5jCmluZGV4IDEyZDFiOTIuLmU2NjNjYzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vYnQ4MTkuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2J0ODE5LmMKQEAgLTUyNCw3ICs1MjQsNyBAQAogCQlyZXR1cm4gMDsKIAogCWNsaWVudCA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBpMmNfY2xpZW50KSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKGNsaWVudCA9PSAwKQorCWlmICghY2xpZW50KQogCQlyZXR1cm4gLUVOT01FTTsKIAljbGllbnQtPmFkZHIgPSBhZGRyZXNzOwogCWNsaWVudC0+YWRhcHRlciA9IGFkYXB0ZXI7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2J0ODU2LmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2J0ODU2LmMKaW5kZXggZTEwMjhhNy4uN2RlZTJlMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9idDg1Ni5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vYnQ4NTYuYwpAQCAtMzExLDcgKzMxMSw3IEBACiAJCXJldHVybiAwOwogCiAJY2xpZW50ID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGkyY19jbGllbnQpLCBHRlBfS0VSTkVMKTsKLQlpZiAoY2xpZW50ID09IDApCisJaWYgKCFjbGllbnQpCiAJCXJldHVybiAtRU5PTUVNOwogCWNsaWVudC0+YWRkciA9IGFkZHJlc3M7CiAJY2xpZW50LT5hZGFwdGVyID0gYWRhcHRlcjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vYnQ4eHgvYnQ4MzIuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vYnQ4eHgvYnQ4MzIuYwppbmRleCBhNTE4NzYxLi5mOTJmMDZkIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2J0OHh4L2J0ODMyLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9idDh4eC9idDgzMi5jCkBAIC05Nyw2ICs5NywxMSBAQAogCWludCByYzsKIAogCWJ1Zj1rbWFsbG9jKDY1LEdGUF9LRVJORUwpOworCWlmICghYnVmKSB7CisJCXY0bF9lcnIoJnQtPmNsaWVudCwKKwkJCSJVbmFibGUgdG8gYWxsb2NhdGUgbWVtb3J5LiBEZXRhY2hpbmcuXG4iKTsKKwkJcmV0dXJuIDA7CisJfQogCWJ0ODMyX2hleGR1bXAoaTJjX2NsaWVudF9zLGJ1Zik7CiAKIAlpZihidWZbMHg0MF0gIT0gMHgzMSkgewpAQCAtMjExLDcgKzIxNiwxMiBAQAogCXN3aXRjaCAoY21kKSB7CiAJCWNhc2UgQlQ4MzJfSEVYRFVNUDogewogCQkJdW5zaWduZWQgY2hhciAqYnVmOwotCQkJYnVmPWttYWxsb2MoNjUsR0ZQX0tFUk5FTCk7CisJCQlidWYgPSBrbWFsbG9jKDY1LCBHRlBfS0VSTkVMKTsKKwkJCWlmICghYnVmKSB7CisJCQkJdjRsX2VycigmdC0+Y2xpZW50LAorCQkJCQkiVW5hYmxlIHRvIGFsbG9jYXRlIG1lbW9yeVxuIik7CisJCQkJYnJlYWs7CisJCQl9CiAJCQlidDgzMl9oZXhkdW1wKCZ0LT5jbGllbnQsYnVmKTsKIAkJCWtmcmVlKGJ1Zik7CiAJCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vYnQ4eHgvYnR0di1kcml2ZXIuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vYnQ4eHgvYnR0di1kcml2ZXIuYwppbmRleCA1NDA0ZmNjLi5mY2Y4ZjJkIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2J0OHh4L2J0dHYtZHJpdmVyLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9idDh4eC9idHR2LWRyaXZlci5jCkBAIC0xOTkwLDcgKzE5OTAsNyBAQAogCWlmICgwICE9IGVycikKIAkJcmV0dXJuIGVycjsKIAotCWYtPnR5cGUgPSBWNEwyX1RVTkVSX0FOQUxPR19UVjsKKwlmLT50eXBlID0gYnR2LT5yYWRpb191c2VyID8gVjRMMl9UVU5FUl9SQURJTyA6IFY0TDJfVFVORVJfQU5BTE9HX1RWOwogCWYtPmZyZXF1ZW5jeSA9IGJ0di0+ZnJlcTsKIAogCXJldHVybiAwOwpAQCAtMjAwOSw3ICsyMDA5LDggQEAKIAogCWlmICh1bmxpa2VseShmLT50dW5lciAhPSAwKSkKIAkJcmV0dXJuIC1FSU5WQUw7Ci0JaWYgKHVubGlrZWx5KGYtPnR5cGUgIT0gVjRMMl9UVU5FUl9BTkFMT0dfVFYpKQorCWlmICh1bmxpa2VseShmLT50eXBlICE9IChidHYtPnJhZGlvX3VzZXIKKwkJPyBWNEwyX1RVTkVSX1JBRElPIDogVjRMMl9UVU5FUl9BTkFMT0dfVFYpKSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAJbXV0ZXhfbG9jaygmYnR2LT5sb2NrKTsKIAlidHYtPmZyZXEgPSBmLT5mcmVxdWVuY3k7CkBAIC0zMzg5LDcgKzMzOTAsNiBAQAogCS52aWRpb2NnbWJ1ZiAgICAgICAgICAgICAgICAgICAgPSB2aWRpb2NnbWJ1ZiwKICNlbmRpZgogCS52aWRpb2NfZ19jcm9wICAgICAgICAgICAgICAgICAgPSBidHR2X2dfY3JvcCwKLQkudmlkaW9jX2dfY3JvcCAgICAgICAgICAgICAgICAgID0gYnR0dl9nX2Nyb3AsCiAJLnZpZGlvY19zX2Nyb3AgICAgICAgICAgICAgICAgICA9IGJ0dHZfc19jcm9wLAogCS52aWRpb2NfZ19mYnVmICAgICAgICAgICAgICAgICAgPSBidHR2X2dfZmJ1ZiwKIAkudmlkaW9jX3NfZmJ1ZiAgICAgICAgICAgICAgICAgID0gYnR0dl9zX2ZidWYsCkBAIC0zNDE2LDYgKzM0MTYsNyBAQAogewogCWludCBtaW5vciA9IGltaW5vcihpbm9kZSk7CiAJc3RydWN0IGJ0dHYgKmJ0diA9IE5VTEw7CisJc3RydWN0IGJ0dHZfZmggKmZoOwogCXVuc2lnbmVkIGludCBpOwogCiAJZHByaW50aygiYnR0djogb3BlbiBtaW5vcj0lZFxuIixtaW5vcik7CkBAIC0zNDMwLDEyICszNDMxLDE5IEBACiAJCXJldHVybiAtRU5PREVWOwogCiAJZHByaW50aygiYnR0diVkOiBvcGVuIGNhbGxlZCAocmFkaW8pXG4iLGJ0di0+Yy5ucik7CisKKwkvKiBhbGxvY2F0ZSBwZXIgZmlsZWhhbmRsZSBkYXRhICovCisJZmggPSBrbWFsbG9jKHNpemVvZigqZmgpLCBHRlBfS0VSTkVMKTsKKwlpZiAoTlVMTCA9PSBmaCkKKwkJcmV0dXJuIC1FTk9NRU07CisJZmlsZS0+cHJpdmF0ZV9kYXRhID0gZmg7CisJKmZoID0gYnR2LT5pbml0OworCXY0bDJfcHJpb19vcGVuKCZidHYtPnByaW8sICZmaC0+cHJpbyk7CisKIAltdXRleF9sb2NrKCZidHYtPmxvY2spOwogCiAJYnR2LT5yYWRpb191c2VyKys7CiAKLQlmaWxlLT5wcml2YXRlX2RhdGEgPSBidHY7Ci0KIAlidHR2X2NhbGxfaTJjX2NsaWVudHMoYnR2LEFVRENfU0VUX1JBRElPLE5VTEwpOwogCWF1ZGlvX2lucHV0KGJ0dixUVkFVRElPX0lOUFVUX1JBRElPKTsKIApAQCAtMzQ0NSw3ICszNDUzLDggQEAKIAogc3RhdGljIGludCByYWRpb19yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKQogewotCXN0cnVjdCBidHR2ICpidHYgPSBmaWxlLT5wcml2YXRlX2RhdGE7CisJc3RydWN0IGJ0dHZfZmggKmZoID0gZmlsZS0+cHJpdmF0ZV9kYXRhOworCXN0cnVjdCBidHR2ICpidHYgPSBmaC0+YnR2OwogCXN0cnVjdCByZHNfY29tbWFuZCBjbWQ7CiAKIAlidHYtPnJhZGlvX3VzZXItLTsKQEAgLTM1MDksOCArMzUxOCwxMiBAQAogc3RhdGljIGludCByYWRpb19nX2F1ZGlvKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpwcml2LAogCQkJCQlzdHJ1Y3QgdjRsMl9hdWRpbyAqYSkKIHsKKwlpZiAoYS0+aW5kZXggIT0gMCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKIAltZW1zZXQoYSwgMCwgc2l6ZW9mKCphKSk7CiAJc3RyY3B5KGEtPm5hbWUsICJSYWRpbyIpOworCiAJcmV0dXJuIDA7CiB9CiAKQEAgLTM1NzAsNyArMzU4Myw4IEBACiBzdGF0aWMgc3NpemVfdCByYWRpb19yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqZGF0YSwKIAkJCSBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcykKIHsKLQlzdHJ1Y3QgYnR0diAgICAqYnR2ID0gZmlsZS0+cHJpdmF0ZV9kYXRhOworCXN0cnVjdCBidHR2X2ZoICpmaCA9IGZpbGUtPnByaXZhdGVfZGF0YTsKKwlzdHJ1Y3QgYnR0diAqYnR2ID0gZmgtPmJ0djsKIAlzdHJ1Y3QgcmRzX2NvbW1hbmQgY21kOwogCWNtZC5ibG9ja19jb3VudCA9IGNvdW50LzM7CiAJY21kLmJ1ZmZlciA9IGRhdGE7CkBAIC0zNTg0LDcgKzM1OTgsOCBAQAogCiBzdGF0aWMgdW5zaWduZWQgaW50IHJhZGlvX3BvbGwoc3RydWN0IGZpbGUgKmZpbGUsIHBvbGxfdGFibGUgKndhaXQpCiB7Ci0Jc3RydWN0IGJ0dHYgICAgKmJ0diA9IGZpbGUtPnByaXZhdGVfZGF0YTsKKwlzdHJ1Y3QgYnR0dl9maCAqZmggPSBmaWxlLT5wcml2YXRlX2RhdGE7CisJc3RydWN0IGJ0dHYgKmJ0diA9IGZoLT5idHY7CiAJc3RydWN0IHJkc19jb21tYW5kIGNtZDsKIAljbWQuaW5zdGFuY2UgPSBmaWxlOwogCWNtZC5ldmVudF9saXN0ID0gd2FpdDsKQEAgLTM2MDAsNiArMzYxNSw3IEBACiAJLm9wZW4JICA9IHJhZGlvX29wZW4sCiAJLnJlYWQgICAgID0gcmFkaW9fcmVhZCwKIAkucmVsZWFzZSAgPSByYWRpb19yZWxlYXNlLAorCS5jb21wYXRfaW9jdGwJPSB2NGxfY29tcGF0X2lvY3RsMzIsCiAJLmlvY3RsCSAgPSB2aWRlb19pb2N0bDIsCiAJLmxsc2VlawkgID0gbm9fbGxzZWVrLAogCS5wb2xsICAgICA9IHJhZGlvX3BvbGwsCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjM4ODUvY3gyMzg4NS1jYXJkcy5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9jeDIzODg1L2N4MjM4ODUtY2FyZHMuYwppbmRleCAyZDQxNGRhLi5kZmEyNjk4IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjM4ODUvY3gyMzg4NS1jYXJkcy5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gyMzg4NS9jeDIzODg1LWNhcmRzLmMKQEAgLTIzMiw2ICsyMzIsNyBAQAogCWNhc2UgNzg2MzE6IC8qIFdpblRWLUhWUjE4MDAgKFBDSWUsIE9FTSwgTm8gSVIsIE5vIEZNLCBEdWFsIGNoYW5uZWwgQVRTQyBhbmQgTVBFRzIgSFcgRW5jb2RlciAqLwogCWNhc2UgNzkwMDE6IC8qIFdpblRWLUhWUjEyNTAgKFBDSWUsIFJldGFpbCwgSVIsIGZ1bGwgaGVpZ2h0LCBBVFNDIGFuZCBCYXNpYyBhbmFsb2cgKi8KIAljYXNlIDc5MTAxOiAvKiBXaW5UVi1IVlIxMjUwIChQQ0llLCBSZXRhaWwsIElSLCBoYWxmIGhlaWdodCwgQVRTQyBhbmQgQmFzaWMgYW5hbG9nICovCisJY2FzZSA3OTU2MTogLyogV2luVFYtSFZSMTI1MCAoUENJZSwgT0VNLCBObyBJUiwgaGFsZiBoZWlnaHQsIEFUU0MgYW5kIEJhc2ljIGFuYWxvZyAqLwogCWNhc2UgNzk1NzE6IC8qIFdpblRWLUhWUjEyNTAgKFBDSWUsIE9FTSwgTm8gSVIsIGZ1bGwgaGVpZ2h0LCBBVFNDIGFuZCBCYXNpYyBhbmFsb2cgKi8KIAljYXNlIDc5NjcxOiAvKiBXaW5UVi1IVlIxMjUwIChQQ0llLCBPRU0sIE5vIElSLCBoYWxmIGhlaWdodCwgQVRTQyBhbmQgQmFzaWMgYW5hbG9nICovCiAJCWJyZWFrOwpAQCAtMzQ3LDEwICszNDgsMTMgQEAKIAljYXNlIENYMjM4ODVfQk9BUkRfSEFVUFBBVUdFX0hWUjEyNTA6CiAJY2FzZSBDWDIzODg1X0JPQVJEX0hBVVBQQVVHRV9IVlIxNTAwOgogCWNhc2UgQ1gyMzg4NV9CT0FSRF9IQVVQUEFVR0VfSFZSMTUwMFE6CisJCWlmIChkZXYtPmkyY19idXNbMF0uaTJjX3JjID09IDApCisJCQloYXVwcGF1Z2VfZWVwcm9tKGRldiwgZWVwcm9tKzB4ODApOworCQlicmVhazsKIAljYXNlIENYMjM4ODVfQk9BUkRfSEFVUFBBVUdFX0hWUjE4MDA6CiAJY2FzZSBDWDIzODg1X0JPQVJEX0hBVVBQQVVHRV9IVlIxODAwbHA6CiAJCWlmIChkZXYtPmkyY19idXNbMF0uaTJjX3JjID09IDApCi0JCQloYXVwcGF1Z2VfZWVwcm9tKGRldiwgZWVwcm9tKzB4ODApOworCQkJaGF1cHBhdWdlX2VlcHJvbShkZXYsIGVlcHJvbSsweGMwKTsKIAkJYnJlYWs7CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjM4ODUvY3gyMzg4NS1jb3JlLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjM4ODUvY3gyMzg4NS1jb3JlLmMKaW5kZXggOGU0MGM3Yi4uN2YxMGIyNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9jeDIzODg1L2N4MjM4ODUtY29yZS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gyMzg4NS9jeDIzODg1LWNvcmUuYwpAQCAtNTYsMTM3ICs1Niw2IEBACiAKICNkZWZpbmUgTk9fU1lOQ19MSU5FICgtMVUpCiAKLS8qCi0gKiBDWDIzODg1IEFzc3VtcHRpb25zCi0gKiAxIGxpbmUgPSAxNiBieXRlcyBvZiBDRFQKLSAqIGNtZHMgc2l6ZSA9IDgwCi0gKiBjZHQgc2l6ZSA9IDE2ICogbGluZXNpemUKLSAqIGlxc2l6ZSA9IDY0Ci0gKiBtYXhsaW5lcyA9IDYKLSAqCi0gKiBBZGRyZXNzIFNwYWNlOgotICogMHgwMDAwMDAwMCAweDAwMDA4ZmZmIEZJRk8gY2x1c3RlcnMKLSAqIDB4MDAwMTAwMDAgMHgwMDAxMDRhZiBDaGFubmVsIE1hbmFnZW1lbnQgRGF0YSBTdHJ1Y3R1cmVzCi0gKiAweDAwMDEwNGIwIDB4MDAwMTA0ZmYgRnJlZQotICogMHgwMDAxMDUwMCAweDAwMDEwOGJmIDE1IGNoYW5uZWxzICogaXFzaXplCi0gKiAweDAwMDEwOGMwIDB4MDAwMTA4ZmYgRnJlZQotICogMHgwMDAxMDkwMCAweDAwMDEwZTlmIElRJ3MgKyBDbHVzdGVyIERlc2NyaXB0b3IgVGFibGVzCi0gKiAgICAgICAgICAgICAgICAgICAgICAgMTUgY2hhbm5lbHMgKiAoaXFzaXplICsgKG1heGxpbmVzICogbGluZXNpemUpKQotICogMHgwMDAxMGVhMCAweDAwMDEweHh4IEZyZWUKLSAqLwotCi1zdGF0aWMgc3RydWN0IHNyYW1fY2hhbm5lbCBjeDIzODg1X3NyYW1fY2hhbm5lbHNbXSA9IHsKLQlbU1JBTV9DSDAxXSA9IHsKLQkJLm5hbWUJCT0gIlZJRCBBIiwKLQkJLmNtZHNfc3RhcnQJPSAweDEwMDAwLAotCQkuY3RybF9zdGFydAk9IDB4MTA1YjAsCi0JCS5jZHQJCT0gMHgxMDdiMCwKLQkJLmZpZm9fc3RhcnQJPSAweDQwLAotCQkuZmlmb19zaXplCT0gMHgyODAwLAotCQkucHRyMV9yZWcJPSBETUExX1BUUjEsCi0JCS5wdHIyX3JlZwk9IERNQTFfUFRSMiwKLQkJLmNudDFfcmVnCT0gRE1BMV9DTlQxLAotCQkuY250Ml9yZWcJPSBETUExX0NOVDIsCi0JCS5qdW1wb25seQk9IDEsCi0JfSwKLQlbU1JBTV9DSDAyXSA9IHsKLQkJLm5hbWUJCT0gImNoMiIsCi0JCS5jbWRzX3N0YXJ0CT0gMHgwLAotCQkuY3RybF9zdGFydAk9IDB4MCwKLQkJLmNkdAkJPSAweDAsCi0JCS5maWZvX3N0YXJ0CT0gMHgwLAotCQkuZmlmb19zaXplCT0gMHgwLAotCQkucHRyMV9yZWcJPSBETUEyX1BUUjEsCi0JCS5wdHIyX3JlZwk9IERNQTJfUFRSMiwKLQkJLmNudDFfcmVnCT0gRE1BMl9DTlQxLAotCQkuY250Ml9yZWcJPSBETUEyX0NOVDIsCi0JfSwKLQlbU1JBTV9DSDAzXSA9IHsKLQkJLm5hbWUJCT0gIlRTMSBCIiwKLQkJLmNtZHNfc3RhcnQJPSAweDEwMEEwLAotCQkuY3RybF9zdGFydAk9IDB4MTA2MzAsCi0JCS5jZHQJCT0gMHgxMDg3MCwKLQkJLmZpZm9fc3RhcnQJPSAweDUwMDAsCi0JCS5maWZvX3NpemUJPSAweDEwMDAsCi0JCS5wdHIxX3JlZwk9IERNQTNfUFRSMSwKLQkJLnB0cjJfcmVnCT0gRE1BM19QVFIyLAotCQkuY250MV9yZWcJPSBETUEzX0NOVDEsCi0JCS5jbnQyX3JlZwk9IERNQTNfQ05UMiwKLQl9LAotCVtTUkFNX0NIMDRdID0gewotCQkubmFtZQkJPSAiY2g0IiwKLQkJLmNtZHNfc3RhcnQJPSAweDAsCi0JCS5jdHJsX3N0YXJ0CT0gMHgwLAotCQkuY2R0CQk9IDB4MCwKLQkJLmZpZm9fc3RhcnQJPSAweDAsCi0JCS5maWZvX3NpemUJPSAweDAsCi0JCS5wdHIxX3JlZwk9IERNQTRfUFRSMSwKLQkJLnB0cjJfcmVnCT0gRE1BNF9QVFIyLAotCQkuY250MV9yZWcJPSBETUE0X0NOVDEsCi0JCS5jbnQyX3JlZwk9IERNQTRfQ05UMiwKLQl9LAotCVtTUkFNX0NIMDVdID0gewotCQkubmFtZQkJPSAiY2g1IiwKLQkJLmNtZHNfc3RhcnQJPSAweDAsCi0JCS5jdHJsX3N0YXJ0CT0gMHgwLAotCQkuY2R0CQk9IDB4MCwKLQkJLmZpZm9fc3RhcnQJPSAweDAsCi0JCS5maWZvX3NpemUJPSAweDAsCi0JCS5wdHIxX3JlZwk9IERNQTVfUFRSMSwKLQkJLnB0cjJfcmVnCT0gRE1BNV9QVFIyLAotCQkuY250MV9yZWcJPSBETUE1X0NOVDEsCi0JCS5jbnQyX3JlZwk9IERNQTVfQ05UMiwKLQl9LAotCVtTUkFNX0NIMDZdID0gewotCQkubmFtZQkJPSAiVFMyIEMiLAotCQkuY21kc19zdGFydAk9IDB4MTAxNDAsCi0JCS5jdHJsX3N0YXJ0CT0gMHgxMDY4MCwKLQkJLmNkdAkJPSAweDEwOGQwLAotCQkuZmlmb19zdGFydAk9IDB4NjAwMCwKLQkJLmZpZm9fc2l6ZQk9IDB4MTAwMCwKLQkJLnB0cjFfcmVnCT0gRE1BNV9QVFIxLAotCQkucHRyMl9yZWcJPSBETUE1X1BUUjIsCi0JCS5jbnQxX3JlZwk9IERNQTVfQ05UMSwKLQkJLmNudDJfcmVnCT0gRE1BNV9DTlQyLAotCX0sCi0JW1NSQU1fQ0gwN10gPSB7Ci0JCS5uYW1lCQk9ICJjaDciLAotCQkuY21kc19zdGFydAk9IDB4MCwKLQkJLmN0cmxfc3RhcnQJPSAweDAsCi0JCS5jZHQJCT0gMHgwLAotCQkuZmlmb19zdGFydAk9IDB4MCwKLQkJLmZpZm9fc2l6ZQk9IDB4MCwKLQkJLnB0cjFfcmVnCT0gRE1BNl9QVFIxLAotCQkucHRyMl9yZWcJPSBETUE2X1BUUjIsCi0JCS5jbnQxX3JlZwk9IERNQTZfQ05UMSwKLQkJLmNudDJfcmVnCT0gRE1BNl9DTlQyLAotCX0sCi0JW1NSQU1fQ0gwOF0gPSB7Ci0JCS5uYW1lCQk9ICJjaDgiLAotCQkuY21kc19zdGFydAk9IDB4MCwKLQkJLmN0cmxfc3RhcnQJPSAweDAsCi0JCS5jZHQJCT0gMHgwLAotCQkuZmlmb19zdGFydAk9IDB4MCwKLQkJLmZpZm9fc2l6ZQk9IDB4MCwKLQkJLnB0cjFfcmVnCT0gRE1BN19QVFIxLAotCQkucHRyMl9yZWcJPSBETUE3X1BUUjIsCi0JCS5jbnQxX3JlZwk9IERNQTdfQ05UMSwKLQkJLmNudDJfcmVnCT0gRE1BN19DTlQyLAotCX0sCi0JW1NSQU1fQ0gwOV0gPSB7Ci0JCS5uYW1lCQk9ICJjaDkiLAotCQkuY21kc19zdGFydAk9IDB4MCwKLQkJLmN0cmxfc3RhcnQJPSAweDAsCi0JCS5jZHQJCT0gMHgwLAotCQkuZmlmb19zdGFydAk9IDB4MCwKLQkJLmZpZm9fc2l6ZQk9IDB4MCwKLQkJLnB0cjFfcmVnCT0gRE1BOF9QVFIxLAotCQkucHRyMl9yZWcJPSBETUE4X1BUUjIsCi0JCS5jbnQxX3JlZwk9IERNQThfQ05UMSwKLQkJLmNudDJfcmVnCT0gRE1BOF9DTlQyLAotCX0sCi19OwotCiAvKiBGSVhNRSwgdGhlc2UgYWxsb2NhdGlvbnMgd2lsbCBjaGFuZ2Ugd2hlbgogICogYW5hbG9nIGFycml2ZXMuIFRoZSBiZSByZXZpZXdlZC4KICAqIENYMjM4ODcgQXNzdW1wdGlvbnMKQEAgLTc1NCw2ICs2MjMsNyBAQAogCWF0b21pY19pbmMoJmRldi0+cmVmY291bnQpOwogCiAJZGV2LT5uciA9IGN4MjM4ODVfZGV2Y291bnQrKzsKKwlkZXYtPnNyYW1fY2hhbm5lbHMgPSBjeDIzODg3X3NyYW1fY2hhbm5lbHM7CiAJc3ByaW50ZihkZXYtPm5hbWUsICJjeDIzODg1WyVkXSIsIGRldi0+bnIpOwogCiAJbXV0ZXhfbG9jaygmZGV2bGlzdCk7CkBAIC03NjMsMTMgKzYzMywxMSBAQAogCS8qIENvbmZpZ3VyZSB0aGUgaW50ZXJuYWwgbWVtb3J5ICovCiAJaWYoZGV2LT5wY2ktPmRldmljZSA9PSAweDg4ODApIHsKIAkJZGV2LT5icmlkZ2UgPSBDWDIzODg1X0JSSURHRV84ODc7Ci0JCWRldi0+c3JhbV9jaGFubmVscyA9IGN4MjM4ODdfc3JhbV9jaGFubmVsczsKIAkJLyogQXBwbHkgYSBzZW5zaWJsZSBjbG9jayBmcmVxdWVuY3kgZm9yIHRoZSBQQ0llIGJyaWRnZSAqLwogCQlkZXYtPmNsa19mcmVxID0gMjUwMDAwMDA7CiAJfSBlbHNlCiAJaWYoZGV2LT5wY2ktPmRldmljZSA9PSAweDg4NTIpIHsKIAkJZGV2LT5icmlkZ2UgPSBDWDIzODg1X0JSSURHRV84ODU7Ci0JCWRldi0+c3JhbV9jaGFubmVscyA9IGN4MjM4ODVfc3JhbV9jaGFubmVsczsKIAkJLyogQXBwbHkgYSBzZW5zaWJsZSBjbG9jayBmcmVxdWVuY3kgZm9yIHRoZSBQQ0llIGJyaWRnZSAqLwogCQlkZXYtPmNsa19mcmVxID0gMjgwMDAwMDA7CiAJfSBlbHNlCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4ODgvY3g4OC1jYXJkcy5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9jeDg4L2N4ODgtY2FyZHMuYwppbmRleCBlNmI3ZjUxLi44YzlhOGFkIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4ODgvY3g4OC1jYXJkcy5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3g4OC9jeDg4LWNhcmRzLmMKQEAgLTIxOTYsNiArMjE5NiwxMSBAQAogCWN4ODhfcmVzZXQoY29yZSk7CiAJY3g4OF9jYXJkX3NldHVwX3ByZV9pMmMoY29yZSk7CiAJY3g4OF9pMmNfaW5pdChjb3JlLCBwY2kpOworCisJLyogbG9hZCB0dW5lciBtb2R1bGUsIGlmIG5lZWRlZCAqLworCWlmIChUVU5FUl9BQlNFTlQgIT0gY29yZS0+Ym9hcmQudHVuZXJfdHlwZSkKKwkJcmVxdWVzdF9tb2R1bGUoInR1bmVyIik7CisKIAljeDg4X2NhbGxfaTJjX2NsaWVudHMgKGNvcmUsIFRVTkVSX1NFVF9TVEFOREJZLCBOVUxMKTsKIAljeDg4X2NhcmRfc2V0dXAoY29yZSk7CiAJY3g4OF9pcl9pbml0KGNvcmUsIHBjaSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4ODgvY3g4OC12aWRlby5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9jeDg4L2N4ODgtdmlkZW8uYwppbmRleCA3ZjE5MzFhLi4yMjcxNzk2IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4ODgvY3g4OC12aWRlby5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3g4OC9jeDg4LXZpZGVvLmMKQEAgLTE4MjYsOCArMTgyNiw2IEBACiAJY3hfc2V0KE1PX1BDSV9JTlRNU0ssIGNvcmUtPnBjaV9pcnFtYXNrKTsKIAogCS8qIGxvYWQgYW5kIGNvbmZpZ3VyZSBoZWxwZXIgbW9kdWxlcyAqLwotCWlmIChUVU5FUl9BQlNFTlQgIT0gY29yZS0+Ym9hcmQudHVuZXJfdHlwZSkKLQkJcmVxdWVzdF9tb2R1bGUoInR1bmVyIik7CiAKIAlpZiAoY29yZS0+Ym9hcmQuYXVkaW9fY2hpcCA9PSBBVURJT19DSElQX1dNODc3NSkKIAkJcmVxdWVzdF9tb2R1bGUoIndtODc3NSIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9kcGM3MTQ2LmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2RwYzcxNDYuYwppbmRleCA1NjZlNDc5Li45Y2ViNmIyIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2RwYzcxNDYuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2RwYzcxNDYuYwpAQCAtMTMxLDcgKzEzMSw3IEBACiAJZGV2aWNlX2Zvcl9lYWNoX2NoaWxkKCZkcGMtPmkyY19hZGFwdGVyLmRldiwgZHBjLCBkcGNfY2hlY2tfY2xpZW50cyk7CiAKIAkvKiBjaGVjayBpZiBhbGwgZGV2aWNlcyBhcmUgcHJlc2VudCAqLwotCWlmKCAwID09IGRwYy0+c2FhNzExMWEgKSB7CisJaWYgKCFkcGMtPnNhYTcxMTFhKSB7CiAJCURFQl9EKCgiZHBjX3Y0bDIubzogZHBjX2F0dGFjaCBmYWlsZWQgZm9yIHRoaXMgZGV2aWNlLlxuIikpOwogCQlpMmNfZGVsX2FkYXB0ZXIoJmRwYy0+aTJjX2FkYXB0ZXIpOwogCQlrZnJlZShkcGMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9lbTI4eHgvZW0yOHh4LWNvcmUuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vZW0yOHh4L2VtMjh4eC1jb3JlLmMKaW5kZXggN2QxNTM3Yy4uYzFjYWFhOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9lbTI4eHgvZW0yOHh4LWNvcmUuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2VtMjh4eC9lbTI4eHgtY29yZS5jCkBAIC0yNjcsNyArMjY3LDcgQEAKIAlmb3IgKGkgPSAwOyBpIDwgMTA7IGkrKykgewogCQlpZiAoKHJldCA9IGVtMjh4eF9yZWFkX3JlZyhkZXYsIEFDOTdCVVNZX1JFRykpIDwgMCkKIAkJCXJldHVybiByZXQ7Ci0JCWlmICghKCh1OCkgcmV0KSAmIDB4MDEpCisJCWlmICghKHJldCAmIDB4MDEpKQogCQkJcmV0dXJuIDA7CiAJCW1zbGVlcCg1KTsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2l2dHYvaXZ0di1kcml2ZXIuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vaXZ0di9pdnR2LWRyaXZlci5jCmluZGV4IGQ0MmYxMjAuLjk0OGNhMzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vaXZ0di9pdnR2LWRyaXZlci5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vaXZ0di9pdnR2LWRyaXZlci5jCkBAIC01NCw3ICs1NCw2IEBACiAjaW5jbHVkZSAiaXZ0di12YmkuaCIKICNpbmNsdWRlICJpdnR2LXJvdXRpbmcuaCIKICNpbmNsdWRlICJpdnR2LWdwaW8uaCIKLSNpbmNsdWRlICJpdnR2LXl1di5oIgogCiAjaW5jbHVkZSA8bWVkaWEvdHZlZXByb20uaD4KICNpbmNsdWRlIDxtZWRpYS9zYWE3MTE1Lmg+CkBAIC03MDAsNiArNjk5LDkgQEAKIAlpdHYtPnZiaS5pbi50eXBlID0gVjRMMl9CVUZfVFlQRV9TTElDRURfVkJJX0NBUFRVUkU7CiAJaXR2LT52Ymkuc2xpY2VkX2luID0gJml0di0+dmJpLmluLmZtdC5zbGljZWQ7CiAKKwkvKiBJbml0IHRoZSBzZyB0YWJsZSBmb3Igb3NkL3l1diBvdXRwdXQgKi8KKwlzZ19pbml0X3RhYmxlKGl0di0+dWRtYS5TR2xpc3QsIElWVFZfRE1BX1NHX09TRF9FTlQpOworCiAJLyogT1NEICovCiAJaXR2LT5vc2RfZ2xvYmFsX2FscGhhX3N0YXRlID0gMTsKIAlpdHYtPm9zZF9nbG9iYWxfYWxwaGEgPSAyNTU7CkBAIC0xMDUzLDkgKzEwNTUsNiBAQAogCQlnb3RvIGZyZWVfaW87CiAJfQogCi0JLyogQ2hlY2sgeXV2IG91dHB1dCBmaWx0ZXIgdGFibGUgKi8KLQlpZiAoaXR2LT5oYXNfY3gyMzQxNSkgaXZ0dl95dXZfZmlsdGVyX2NoZWNrKGl0dik7Ci0KIAlpdnR2X2dwaW9faW5pdChpdHYpOwogCiAJLyogYWN0aXZlIGkyYyAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vaXZ0di9pdnR2LWZpcm13YXJlLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2l2dHYvaXZ0di1maXJtd2FyZS5jCmluZGV4IDQyNWViMTAuLjZkYmE1NWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vaXZ0di9pdnR2LWZpcm13YXJlLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9pdnR2L2l2dHYtZmlybXdhcmUuYwpAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIml2dHYtZHJpdmVyLmgiCiAjaW5jbHVkZSAiaXZ0di1tYWlsYm94LmgiCiAjaW5jbHVkZSAiaXZ0di1maXJtd2FyZS5oIgorI2luY2x1ZGUgIml2dHYteXV2LmgiCiAjaW5jbHVkZSA8bGludXgvZmlybXdhcmUuaD4KIAogI2RlZmluZSBJVlRWX01BU0tfU1BVX0VOQUJMRSAJCTB4RkZGRkZGRkUKQEAgLTIyNSwxMSArMjI2LDE0IEBACiAJCXJldHVybiAwOwogCiAJaXR2LT5kZWNfbWJveC5tYm94ID0gaXZ0dl9zZWFyY2hfbWFpbGJveChpdHYtPmRlY19tZW0sIElWVFZfREVDT0RFUl9TSVpFKTsKLQlpZiAoaXR2LT5kZWNfbWJveC5tYm94ID09IE5VTEwpCisJaWYgKGl0di0+ZGVjX21ib3gubWJveCA9PSBOVUxMKSB7CiAJCUlWVFZfRVJSKCJEZWNvZGVyIG1haWxib3ggbm90IGZvdW5kXG4iKTsKLQllbHNlIGlmIChpdHYtPmhhc19jeDIzNDE1ICYmIGl2dHZfdmFwaShpdHYsIENYMjM0MVhfREVDX1BJTkdfRlcsIDApKSB7CisJfSBlbHNlIGlmIChpdHYtPmhhc19jeDIzNDE1ICYmIGl2dHZfdmFwaShpdHYsIENYMjM0MVhfREVDX1BJTkdfRlcsIDApKSB7CiAJCUlWVFZfRVJSKCJEZWNvZGVyIGZpcm13YXJlIGRlYWQhXG4iKTsKIAkJaXR2LT5kZWNfbWJveC5tYm94ID0gTlVMTDsKKwl9IGVsc2UgeworCQkvKiBGaXJtd2FyZSBva2F5LCBzbyBjaGVjayB5dXYgb3V0cHV0IGZpbHRlciB0YWJsZSAqLworCQlpdnR2X3l1dl9maWx0ZXJfY2hlY2soaXR2KTsKIAl9CiAJcmV0dXJuIGl0di0+ZGVjX21ib3gubWJveCA/IDAgOiAtRU5PREVWOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9tdDIweHguYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vbXQyMHh4LmMKaW5kZXggNThiYWI2NS4uNzRmZDZhMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9tdDIweHguYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL210MjB4eC5jCkBAIC02NDcsNyArNjQ3LDcgQEAKIAlkZWZhdWx0OgogCQl0dW5lcl9pbmZvKCJtaWNyb3R1bmUgJXMgZm91bmQsIG5vdCAoeWV0Pykgc3VwcG9ydGVkLCBzb3JyeSA6LS9cbiIsCiAJCQkgICBuYW1lKTsKLQkJcmV0dXJuIDA7CisJCXJldHVybiBOVUxMOwogCX0KIAogCXN0cmxjcHkoZmUtPm9wcy50dW5lcl9vcHMuaW5mby5uYW1lLCBuYW1lLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9teGIuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vbXhiLmMKaW5kZXggYWRkNmQwZC4uY2I1YTUxMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9teGIuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL214Yi5jCkBAIC0yMjEsOSArMjIxLDggQEAKIAlkZXZpY2VfZm9yX2VhY2hfY2hpbGQoJm14Yi0+aTJjX2FkYXB0ZXIuZGV2LCBteGIsIG14Yl9jaGVja19jbGllbnRzKTsKIAogCS8qIGNoZWNrIGlmIGFsbCBkZXZpY2VzIGFyZSBwcmVzZW50ICovCi0JaWYoICAgIDAgPT0gbXhiLT50ZWE2NDIwXzEJfHwgMCA9PSBteGItPnRlYTY0MjBfMgl8fCAwID09IG14Yi0+dGVhNjQxNWMKLQkgICAgfHwgMCA9PSBteGItPnRkYTk4NDAJfHwgMCA9PSBteGItPnNhYTcxMTFhCXx8IDAgPT0gbXhiLT50dW5lciApIHsKLQorCWlmICghbXhiLT50ZWE2NDIwXzEgfHwgIW14Yi0+dGVhNjQyMF8yIHx8ICFteGItPnRlYTY0MTVjIHx8CisJICAgICFteGItPnRkYTk4NDAgfHwgIW14Yi0+c2FhNzExMWEgfHwgIW14Yi0+dHVuZXIpIHsKIAkJcHJpbnRrKCJteGI6IGRpZCBub3QgZmluZCBhbGwgaTJjIGRldmljZXMuIGFib3J0aW5nXG4iKTsKIAkJaTJjX2RlbF9hZGFwdGVyKCZteGItPmkyY19hZGFwdGVyKTsKIAkJa2ZyZWUobXhiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vcHZydXNiMi9wdnJ1c2IyLWN0cmwuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vcHZydXNiMi9wdnJ1c2IyLWN0cmwuYwppbmRleCA0NmYxNTZmLi41YTNlOGQyIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3B2cnVzYjIvcHZydXNiMi1jdHJsLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9wdnJ1c2IyL3B2cnVzYjItY3RybC5jCkBAIC02MCw3ICs2MCw3IEBACiAJaW50IHJldCA9IDA7CiAJaWYgKCFjcHRyKSByZXR1cm4gLUVJTlZBTDsKIAlMT0NLX1RBS0UoY3B0ci0+aGR3LT5iaWdfbG9jayk7IGRvIHsKLQkJaWYgKGNwdHItPmluZm8tPnNldF92YWx1ZSAhPSAwKSB7CisJCWlmIChjcHRyLT5pbmZvLT5zZXRfdmFsdWUpIHsKIAkJCWlmIChjcHRyLT5pbmZvLT50eXBlID09IHB2cjJfY3RsX2JpdG1hc2spIHsKIAkJCQltYXNrICY9IGNwdHItPmluZm8tPmRlZi50eXBlX2JpdG1hc2sudmFsaWRfYml0czsKIAkJCX0gZWxzZSBpZiAoY3B0ci0+aW5mby0+dHlwZSA9PSBwdnIyX2N0bF9pbnQpIHsKQEAgLTI2NSw3ICsyNjUsNyBAQAogaW50IHB2cjJfY3RybF9pc193cml0YWJsZShzdHJ1Y3QgcHZyMl9jdHJsICpjcHRyKQogewogCWlmICghY3B0cikgcmV0dXJuIDA7Ci0JcmV0dXJuIGNwdHItPmluZm8tPnNldF92YWx1ZSAhPSAwOworCXJldHVybiBjcHRyLT5pbmZvLT5zZXRfdmFsdWUgIT0gTlVMTDsKIH0KIAogCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3B2cnVzYjIvcHZydXNiMi1kZXZhdHRyLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3B2cnVzYjIvcHZydXNiMi1kZXZhdHRyLmMKaW5kZXggNGRmNmQ2ZC4uZmU5OTkxYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9wdnJ1c2IyL3B2cnVzYjItZGV2YXR0ci5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vcHZydXNiMi9wdnJ1c2IyLWRldmF0dHIuYwpAQCAtMTU1LDYgKzE1NSw0MSBAQAogCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qIEhhdXBwYXVnZSBQVlItVVNCMiBNb2RlbCA3M3h4eCAqLworCitzdGF0aWMgY29uc3QgY2hhciAqcHZyMl9jbGllbnRfNzN4eHhbXSA9IHsKKwkiY3gyNTg0MCIsCisJInR1bmVyIiwKK307CisKK3N0YXRpYyBjb25zdCBjaGFyICpwdnIyX2Z3MV9uYW1lc183M3h4eFtdID0geworCQkidjRsLXB2cnVzYjItNzN4eHgtMDEuZnciLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBwdnIyX2RldmljZV9kZXNjIHB2cjJfZGV2aWNlXzczeHh4ID0geworCQkuZGVzY3JpcHRpb24gPSAiV2luVFYgUFZSIFVTQjIgTW9kZWwgQ2F0ZWdvcnkgNzN4eHh4IiwKKwkJLnNob3J0bmFtZSA9ICI3M3h4eCIsCisJCS5jbGllbnRfbW9kdWxlcy5sc3QgPSBwdnIyX2NsaWVudF83M3h4eCwKKwkJLmNsaWVudF9tb2R1bGVzLmNudCA9IEFSUkFZX1NJWkUocHZyMl9jbGllbnRfNzN4eHgpLAorCQkuZngyX2Zpcm13YXJlLmxzdCA9IHB2cjJfZncxX25hbWVzXzczeHh4LAorCQkuZngyX2Zpcm13YXJlLmNudCA9IEFSUkFZX1NJWkUocHZyMl9mdzFfbmFtZXNfNzN4eHgpLAorCQkuZmxhZ19oYXNfY3gyNTg0MCA9ICEwLAorCQkuZmxhZ19oYXNfaGF1cHBhdWdlX3JvbSA9ICEwLAorI2lmIDAKKwkJLmZsYWdfaGFzX2FuYWxvZ3R1bmVyID0gITAsCisJCS5mbGFnX2hhc19jb21wb3NpdGUgPSAhMCwKKwkJLmZsYWdfaGFzX3N2aWRlbyA9ICEwLAorCQkuc2lnbmFsX3JvdXRpbmdfc2NoZW1lID0gUFZSMl9ST1VUSU5HX1NDSEVNRV9IQVVQUEFVR0UsCisJCS5kaWdpdGFsX2NvbnRyb2xfc2NoZW1lID0gUFZSMl9ESUdJVEFMX1NDSEVNRV9IQVVQUEFVR0UsCisJCS5sZWRfc2NoZW1lID0gUFZSMl9MRURfU0NIRU1FX0hBVVBQQVVHRSwKKyNlbHNlCisJCS5zaWduYWxfcm91dGluZ19zY2hlbWUgPSBQVlIyX1JPVVRJTkdfU0NIRU1FX0hBVVBQQVVHRSwKKyNlbmRpZgorfTsKKworCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIC8qIEhhdXBwYXVnZSBQVlItVVNCMiBNb2RlbCA3NXh4eCAqLwogCiBzdGF0aWMgY29uc3QgY2hhciAqcHZyMl9jbGllbnRfNzV4eHhbXSA9IHsKQEAgLTE5OCw4ICsyMzMsMTIgQEAKIAl7IFVTQl9ERVZJQ0UoMHgxMWJhLCAweDEwMDEpLAogCSAgLmRyaXZlcl9pbmZvID0gKGtlcm5lbF91bG9uZ190KSZwdnIyX2RldmljZV9vbmFpcl91c2IyfSwKICNlbmRpZgorCXsgVVNCX0RFVklDRSgweDIwNDAsIDB4NzMwMCksCisJICAuZHJpdmVyX2luZm8gPSAoa2VybmVsX3Vsb25nX3QpJnB2cjJfZGV2aWNlXzczeHh4fSwKIAl7IFVTQl9ERVZJQ0UoMHgyMDQwLCAweDc1MDApLAogCSAgLmRyaXZlcl9pbmZvID0gKGtlcm5lbF91bG9uZ190KSZwdnIyX2RldmljZV83NXh4eH0sCisJeyBVU0JfREVWSUNFKDB4MjA0MCwgMHg3NTAxKSwKKwkgIC5kcml2ZXJfaW5mbyA9IChrZXJuZWxfdWxvbmdfdCkmcHZyMl9kZXZpY2VfNzV4eHh9LAogCXsgfQogfTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9wdnJ1c2IyL3B2cnVzYjItaGR3LmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3B2cnVzYjIvcHZydXNiMi1oZHcuYwppbmRleCA0MWFlOTgwLi5kNjk1NWZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3B2cnVzYjIvcHZydXNiMi1oZHcuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3B2cnVzYjIvcHZydXNiMi1oZHcuYwpAQCAtMjI5MSw3ICsyMjkxLDcgQEAKIAogCWZvciAoaWR4ID0gMDsgaWR4IDwgaGR3LT5jb250cm9sX2NudDsgaWR4KyspIHsKIAkJY3B0ciA9IGhkdy0+Y29udHJvbHMgKyBpZHg7Ci0JCWlmIChjcHRyLT5pbmZvLT5pc19kaXJ0eSA9PSAwKSBjb250aW51ZTsKKwkJaWYgKCFjcHRyLT5pbmZvLT5pc19kaXJ0eSkgY29udGludWU7CiAJCWlmICghY3B0ci0+aW5mby0+aXNfZGlydHkoY3B0cikpIGNvbnRpbnVlOwogCQljb21taXRfZmxhZyA9ICEwOwogCkBAIC0yNjQ2LDcgKzI2NDYsNyBAQAogCXUxNiBhZGRyZXNzOwogCXVuc2lnbmVkIGludCBwaXBlOwogCUxPQ0tfVEFLRShoZHctPmJpZ19sb2NrKTsgZG8gewotCQlpZiAoKGhkdy0+ZndfYnVmZmVyID09IDApID09ICFlbmFibGVfZmxhZykgYnJlYWs7CisJCWlmICgoaGR3LT5md19idWZmZXIgPT0gTlVMTCkgPT0gIWVuYWJsZV9mbGFnKSBicmVhazsKIAogCQlpZiAoIWVuYWJsZV9mbGFnKSB7CiAJCQlwdnIyX3RyYWNlKFBWUjJfVFJBQ0VfRklSTVdBUkUsCkBAIC0yNzE1LDcgKzI3MTUsNyBAQAogLyogUmV0dXJuIHRydWUgaWYgd2UncmUgaW4gYSBtb2RlIGZvciByZXRyaWV2YWwgQ1BVIGZpcm13YXJlICovCiBpbnQgcHZyMl9oZHdfY3B1ZndfZ2V0X2VuYWJsZWQoc3RydWN0IHB2cjJfaGR3ICpoZHcpCiB7Ci0JcmV0dXJuIGhkdy0+ZndfYnVmZmVyICE9IDA7CisJcmV0dXJuIGhkdy0+ZndfYnVmZmVyICE9IE5VTEw7CiB9CiAKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9wdnJ1c2IyL3B2cnVzYjItaW8uYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vcHZydXNiMi9wdnJ1c2IyLWlvLmMKaW5kZXggY2UzYzg5OC4uYTk4ODlmZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9wdnJ1c2IyL3B2cnVzYjItaW8uYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3B2cnVzYjIvcHZydXNiMi1pby5jCkBAIC01NjMsNyArNTYzLDcgQEAKIAlzdHJ1Y3QgcHZyMl9idWZmZXIgKmJwOwogCW11dGV4X2xvY2soJnNwLT5tdXRleCk7IGRvIHsKIAkJcHZyMl9zdHJlYW1faW50ZXJuYWxfZmx1c2goc3ApOwotCQl3aGlsZSAoKGJwID0gcHZyMl9zdHJlYW1fZ2V0X3JlYWR5X2J1ZmZlcihzcCkpICE9IDApIHsKKwkJd2hpbGUgKChicCA9IHB2cjJfc3RyZWFtX2dldF9yZWFkeV9idWZmZXIoc3ApKSAhPSBOVUxMKSB7CiAJCQlwdnIyX2J1ZmZlcl9zZXRfaWRsZShicCk7CiAJCX0KIAkJaWYgKHNwLT5idWZmZXJfdG90YWxfY291bnQgIT0gc3AtPmJ1ZmZlcl90YXJnZXRfY291bnQpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vcHZydXNiMi9wdnJ1c2IyLWlvcmVhZC5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9wdnJ1c2IyL3B2cnVzYjItaW9yZWFkLmMKaW5kZXggZjc4MjQxOC4uYzU3MjIxMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9wdnJ1c2IyL3B2cnVzYjItaW9yZWFkLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9wdnJ1c2IyL3B2cnVzYjItaW9yZWFkLmMKQEAgLTE2NSw3ICsxNjUsNyBAQAogCWlmICghKGNwLT5zdHJlYW0pKSByZXR1cm4gMDsKIAlwdnIyX3RyYWNlKFBWUjJfVFJBQ0VfU1RBUlRfU1RPUCwKIAkJICAgIi8qLS0tVFJBQ0VfUkVBRC0tLSovIHB2cjJfaW9yZWFkX3N0YXJ0IGlkPSVwIixjcCk7Ci0Jd2hpbGUgKChicCA9IHB2cjJfc3RyZWFtX2dldF9pZGxlX2J1ZmZlcihjcC0+c3RyZWFtKSkgIT0gMCkgeworCXdoaWxlICgoYnAgPSBwdnIyX3N0cmVhbV9nZXRfaWRsZV9idWZmZXIoY3AtPnN0cmVhbSkpICE9IE5VTEwpIHsKIAkJc3RhdCA9IHB2cjJfYnVmZmVyX3F1ZXVlKGJwKTsKIAkJaWYgKHN0YXQgPCAwKSB7CiAJCQlwdnIyX3RyYWNlKFBWUjJfVFJBQ0VfREFUQV9GTE9XLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9wd2MvcHdjLWlmLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3B3Yy9wd2MtaWYuYwppbmRleCBmOTkxZDcyLi5lMGE0NTNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3B3Yy9wd2MtaWYuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3B3Yy9wd2MtaWYuYwpAQCAtOTE1LDcgKzkxNSw3IEBACiAJCXN0cnVjdCB1cmIgKnVyYjsKIAogCQl1cmIgPSBwZGV2LT5zYnVmW2ldLnVyYjsKLQkJaWYgKHVyYiAhPSAwKSB7CisJCWlmICh1cmIpIHsKIAkJCVBXQ19ERUJVR19NRU1PUlkoIlVubGlua2luZyBVUkIgJXBcbiIsIHVyYik7CiAJCQl1c2Jfa2lsbF91cmIodXJiKTsKIAkJfQpAQCAtOTMxLDcgKzkzMSw3IEBACiAJCXN0cnVjdCB1cmIgKnVyYjsKIAogCQl1cmIgPSBwZGV2LT5zYnVmW2ldLnVyYjsKLQkJaWYgKHVyYiAhPSAwKSB7CisJCWlmICh1cmIpIHsKIAkJCVBXQ19ERUJVR19NRU1PUlkoIkZyZWVpbmcgVVJCXG4iKTsKIAkJCXVzYl9mcmVlX3VyYih1cmIpOwogCQkJcGRldi0+c2J1ZltpXS51cmIgPSBOVUxMOwpAQCAtMTc1OSw4ICsxNzU5LDcgQEAKIAogCS8qIEFsbG9jYXRlIHZpZGVvX2RldmljZSBzdHJ1Y3R1cmUgKi8KIAlwZGV2LT52ZGV2ID0gdmlkZW9fZGV2aWNlX2FsbG9jKCk7Ci0JaWYgKHBkZXYtPnZkZXYgPT0gMCkKLQl7CisJaWYgKCFwZGV2LT52ZGV2KSB7CiAJCVBXQ19FUlJPUigiRXJyLCBjYW5ub3QgYWxsb2NhdGUgdmlkZW9fZGV2aWNlIHN0cnV0dXJlLiBGYWlsaW5nIHByb2JlLiIpOwogCQlrZnJlZShwZGV2KTsKIAkJcmV0dXJuIC1FTk9NRU07CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3NhYTcxMTAuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vc2FhNzExMC5jCmluZGV4IDA2MTEzNGEuLjFkZjI2MDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vc2FhNzExMC5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vc2FhNzExMC5jCkBAIC00ODgsNyArNDg4LDcgQEAKIAkJcmV0dXJuIDA7CiAKIAljbGllbnQgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgaTJjX2NsaWVudCksIEdGUF9LRVJORUwpOwotCWlmIChjbGllbnQgPT0gMCkKKwlpZiAoIWNsaWVudCkKIAkJcmV0dXJuIC1FTk9NRU07CiAJY2xpZW50LT5hZGRyID0gYWRkcmVzczsKIAljbGllbnQtPmFkYXB0ZXIgPSBhZGFwdGVyOwpAQCAtNDk2LDcgKzQ5Niw3IEBACiAJc3RybGNweShJMkNfTkFNRShjbGllbnQpLCAic2FhNzExMCIsIHNpemVvZihJMkNfTkFNRShjbGllbnQpKSk7CiAKIAlkZWNvZGVyID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IHNhYTcxMTApLCBHRlBfS0VSTkVMKTsKLQlpZiAoZGVjb2RlciA9PSAwKSB7CisJaWYgKCFkZWNvZGVyKSB7CiAJCWtmcmVlKGNsaWVudCk7CiAJCXJldHVybiAtRU5PTUVNOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vc2FhNzExMS5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9zYWE3MTExLmMKaW5kZXggN2FlMmQ2NC4uYTA3NzJjNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9zYWE3MTExLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9zYWE3MTExLmMKQEAgLTUwMiw3ICs1MDIsNyBAQAogCQlyZXR1cm4gMDsKIAogCWNsaWVudCA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBpMmNfY2xpZW50KSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKGNsaWVudCA9PSAwKQorCWlmICghY2xpZW50KQogCQlyZXR1cm4gLUVOT01FTTsKIAljbGllbnQtPmFkZHIgPSBhZGRyZXNzOwogCWNsaWVudC0+YWRhcHRlciA9IGFkYXB0ZXI7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3NhYTcxMTQuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vc2FhNzExNC5jCmluZGV4IDY3N2RmNTEuLmJmOTFhNGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vc2FhNzExNC5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vc2FhNzExNC5jCkBAIC04NDEsNyArODQxLDcgQEAKIAkJcmV0dXJuIDA7CiAKIAljbGllbnQgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgaTJjX2NsaWVudCksIEdGUF9LRVJORUwpOwotCWlmIChjbGllbnQgPT0gMCkKKwlpZiAoIWNsaWVudCkKIAkJcmV0dXJuIC1FTk9NRU07CiAJY2xpZW50LT5hZGRyID0gYWRkcmVzczsKIAljbGllbnQtPmFkYXB0ZXIgPSBhZGFwdGVyOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9zYWE3MTM0L3NhYTcxMzQtY2FyZHMuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vc2FhNzEzNC9zYWE3MTM0LWNhcmRzLmMKaW5kZXggMjYyODMwZC4uNmY1NzQ0MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9zYWE3MTM0L3NhYTcxMzQtY2FyZHMuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3NhYTcxMzQvc2FhNzEzNC1jYXJkcy5jCkBAIC0yNDg0LDI3ICsyNDg0LDI4IEBACiAJCS50dW5lcl9hZGRyICAgICA9IEFERFJfVU5TRVQsCiAJCS5yYWRpb19hZGRyICAgICA9IEFERFJfVU5TRVQsCiAJCS5ncGlvbWFzayAgICAgICA9IDB4MDgwMjAwMDAwLAotCQkuaW5wdXRzICAgICAgICAgPSB7ewotCQkJICAubmFtZSA9IG5hbWVfdHYsCi0JCQkgIC52bXV4ID0gNCwKLQkJCSAgLmFtdXggPSBUViwKLQkJCSAgLnR2ICAgPSAxLAotCQl9LHsKLQkJCSAgLm5hbWUgPSBuYW1lX2NvbXAxLAotCQkJICAudm11eCA9IDEsCi0JCQkgLmFtdXggPSBMSU5FMiwKLQkgICAgICAgfSx7Ci0JCQkgLm5hbWUgPSBuYW1lX2NvbXAyLAotCQkJIC52bXV4ID0gMCwKLQkJCSAgLmFtdXggPSBMSU5FMiwKLQkJfSx7Ci0JCQkgIC5uYW1lID0gbmFtZV9zdmlkZW8sCi0JCQkgIC52bXV4ID0gOCwKLQkJCSAgLmFtdXggPSBMSU5FMiwKLQkJfX0sCisJCS5pbnB1dHMgICAgICAgICA9IHsgeworCQkJLm5hbWUgPSBuYW1lX3R2LAorCQkJLnZtdXggPSA0LAorCQkJLmFtdXggPSBUViwKKwkJCS50diAgID0gMSwKKwkJfSwgeworCQkJLm5hbWUgPSBuYW1lX2NvbXAxLAorCQkJLnZtdXggPSAxLAorCQkJLmFtdXggPSBMSU5FMiwKKwkJfSwgeworCQkJLm5hbWUgPSBuYW1lX2NvbXAyLAorCQkJLnZtdXggPSAwLAorCQkJLmFtdXggPSBMSU5FMiwKKwkJfSwgeworCQkJLm5hbWUgPSBuYW1lX3N2aWRlbywKKwkJCS52bXV4ID0gOCwKKwkJCS5hbXV4ID0gTElORTIsCisJCX0gfSwKIAkJLnJhZGlvID0gewotCQkJICAubmFtZSA9IG5hbWVfcmFkaW8sCi0JCQkgIC5hbXV4ID0gTElORTEsCisJCQkubmFtZSA9IG5hbWVfcmFkaW8sCisJCQkuYW11eCA9IFRWLAorCQkJLmdwaW8gPSAweDAyMDAwMDAsCiAJCX0sCiAJfSwKIAlbU0FBNzEzNF9CT0FSRF9BU1VTVGVLX1A3MTMxX0RVQUxdID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9zYWE3MTM0L3NhYTcxMzQtY29yZS5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9zYWE3MTM0L3NhYTcxMzQtY29yZS5jCmluZGV4IDUyYmFhNGYuLjU4YWIxNjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vc2FhNzEzNC9zYWE3MTM0LWNvcmUuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3NhYTcxMzQvc2FhNzEzNC1jb3JlLmMKQEAgLTEwMjIsMTIgKzEwMjIsMTMgQEAKIAlzYWE3MTM0X2kyY19yZWdpc3RlcihkZXYpOwogCiAJLyogaW5pdGlhbGl6ZSBoYXJkd2FyZSAjMiAqLworCWlmIChUVU5FUl9BQlNFTlQgIT0gZGV2LT50dW5lcl90eXBlKQorCQlyZXF1ZXN0X21vZHVsZSgidHVuZXIiKTsKIAlzYWE3MTM0X2JvYXJkX2luaXQyKGRldik7CisKIAlzYWE3MTM0X2h3aW5pdDIoZGV2KTsKIAogCS8qIGxvYWQgaTJjIGhlbHBlcnMgKi8KLQlpZiAoVFVORVJfQUJTRU5UICE9IGRldi0+dHVuZXJfdHlwZSkKLQkJcmVxdWVzdF9tb2R1bGUoInR1bmVyIik7CiAJaWYgKGNhcmRfaXNfZW1wcmVzcyhkZXYpKSB7CiAJCXJlcXVlc3RfbW9kdWxlKCJzYWE2NzUyaHMiKTsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3NhYTcxODUuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vc2FhNzE4NS5jCmluZGV4IDY2Y2M5MmMuLjQxZjcwNDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vc2FhNzE4NS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vc2FhNzE4NS5jCkBAIC00MDMsNyArNDAzLDcgQEAKIAkJcmV0dXJuIDA7CiAKIAljbGllbnQgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgaTJjX2NsaWVudCksIEdGUF9LRVJORUwpOwotCWlmIChjbGllbnQgPT0gMCkKKwlpZiAoIWNsaWVudCkKIAkJcmV0dXJuIC1FTk9NRU07CiAJY2xpZW50LT5hZGRyID0gYWRkcmVzczsKIAljbGllbnQtPmFkYXB0ZXIgPSBhZGFwdGVyOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby90ZGE5ODQwLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3RkYTk4NDAuYwppbmRleCBlZjQ5NGZlLi5iZGNhNWQyIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3RkYTk4NDAuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3RkYTk4NDAuYwpAQCAtMTcyLDcgKzE3Miw3IEBACiAKIAkvKiBhbGxvY2F0ZSBtZW1vcnkgZm9yIGNsaWVudCBzdHJ1Y3R1cmUgKi8KIAljbGllbnQgPSBrbWFsbG9jKHNpemVvZihzdHJ1Y3QgaTJjX2NsaWVudCksIEdGUF9LRVJORUwpOwotCWlmICgwID09IGNsaWVudCkgeworCWlmICghY2xpZW50KSB7CiAJCXByaW50aygibm90IGVub3VnaCBrZXJuZWwgbWVtb3J5XG4iKTsKIAkJcmV0dXJuIC1FTk9NRU07CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby90ZWE2NDE1Yy5jIGIvZHJpdmVycy9tZWRpYS92aWRlby90ZWE2NDE1Yy5jCmluZGV4IDUyM2RmMGIuLmRmMmZhZDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vdGVhNjQxNWMuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3RlYTY0MTVjLmMKQEAgLTY0LDcgKzY0LDcgQEAKIAogCS8qIGFsbG9jYXRlIG1lbW9yeSBmb3IgY2xpZW50IHN0cnVjdHVyZSAqLwogCWNsaWVudCA9IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCBpMmNfY2xpZW50KSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKDAgPT0gY2xpZW50KSB7CisJaWYgKCFjbGllbnQpIHsKIAkJcmV0dXJuIC1FTk9NRU07CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3RlYTY0MjAuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vdGVhNjQyMC5jCmluZGV4IGNhMDVjZDYuLjRmZjZjNjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vdGVhNjQyMC5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vdGVhNjQyMC5jCkBAIC0xMDEsNyArMTAxLDcgQEAKIAogCS8qIGFsbG9jYXRlIG1lbW9yeSBmb3IgY2xpZW50IHN0cnVjdHVyZSAqLwogCWNsaWVudCA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBpMmNfY2xpZW50KSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKDAgPT0gY2xpZW50KSB7CisJaWYgKCFjbGllbnQpIHsKIAkJcmV0dXJuIC1FTk9NRU07CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3R2cDUxNTAuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vdHZwNTE1MC5jCmluZGV4IDQ0NWViYTQuLmI2ZTI0ZTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vdHZwNTE1MC5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vdHZwNTE1MC5jCkBAIC02NzIsNyArNjcyLDcgQEAKIAlpZiAoc3RkID09IFY0TDJfU1REX0FMTCkgewogCQl0dnA1MTUwX2VycigiVkJJIGNhbid0IGJlIGNvbmZpZ3VyZWQgd2l0aG91dCBrbm93aW5nIG51bWJlciBvZiBsaW5lc1xuIik7CiAJCXJldHVybiAwOwotCX0gZWxzZSBpZiAoc3RkICYmIFY0TDJfU1REXzYyNV81MCkgeworCX0gZWxzZSBpZiAoc3RkICYgVjRMMl9TVERfNjI1XzUwKSB7CiAJCS8qIERvbid0IGZvbGxvdyBOVFNDIExpbmUgbnVtYmVyIGNvbnZlbnNpb24gKi8KIAkJbGluZSArPSAzOwogCX0KQEAgLTcxOSw3ICs3MTksNyBAQAogCWlmIChzdGQgPT0gVjRMMl9TVERfQUxMKSB7CiAJCXR2cDUxNTBfZXJyKCJWQkkgY2FuJ3QgYmUgY29uZmlndXJlZCB3aXRob3V0IGtub3dpbmcgbnVtYmVyIG9mIGxpbmVzXG4iKTsKIAkJcmV0dXJuIDA7Ci0JfSBlbHNlIGlmIChzdGQgJiYgVjRMMl9TVERfNjI1XzUwKSB7CisJfSBlbHNlIGlmIChzdGQgJiBWNEwyX1NURF82MjVfNTApIHsKIAkJLyogRG9uJ3QgZm9sbG93IE5UU0MgTGluZSBudW1iZXIgY29udmVuc2lvbiAqLwogCQlsaW5lICs9IDM7CiAJfQpAQCAtMTA3MiwxMiArMTA3MiwxMiBAQAogCQlyZXR1cm4gMDsKIAogCWMgPSBrbWFsbG9jKHNpemVvZihzdHJ1Y3QgaTJjX2NsaWVudCksIEdGUF9LRVJORUwpOwotCWlmIChjID09IDApCisJaWYgKCFjKQogCQlyZXR1cm4gLUVOT01FTTsKIAltZW1jcHkoYywgJmNsaWVudF90ZW1wbGF0ZSwgc2l6ZW9mKHN0cnVjdCBpMmNfY2xpZW50KSk7CiAKIAljb3JlID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IHR2cDUxNTApLCBHRlBfS0VSTkVMKTsKLQlpZiAoY29yZSA9PSAwKSB7CisJaWYgKCFjb3JlKSB7CiAJCWtmcmVlKGMpOwogCQlyZXR1cm4gLUVOT01FTTsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3VzYnZpZGVvL3VzYnZpZGVvLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3VzYnZpZGVvL3VzYnZpZGVvLmMKaW5kZXggZmI0MzRiNS4uNWQzNjNiZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby91c2J2aWRlby91c2J2aWRlby5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vdXNidmlkZW8vdXNidmlkZW8uYwpAQCAtMTAzNCw2ICsxMDM0LDExIEBACiAJCWluZm8oIiVzOiBpZmFjZT0lZC4gZW5kcG9pbnQ9JCUwMnggcGFsZXR0ZUJpdHM9JCUwOGx4IiwKIAkJICAgICBfX0ZVTkNUSU9OX18sIHV2ZC0+aWZhY2UsIHV2ZC0+dmlkZW9fZW5kcCwgdXZkLT5wYWxldHRlQml0cyk7CiAJfQorCWlmICh1dmQtPmRldiA9PSBOVUxMKSB7CisJCWVycigiJXM6IHV2ZC0+ZGV2ID09IE5VTEwiLCBfX0ZVTkNUSU9OX18pOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisJdXZkLT52ZGV2LmRldj0mKHV2ZC0+ZGV2LT5kZXYpOwogCWlmICh2aWRlb19yZWdpc3Rlcl9kZXZpY2UoJnV2ZC0+dmRldiwgVkZMX1RZUEVfR1JBQkJFUiwgdmlkZW9fbnIpID09IC0xKSB7CiAJCWVycigiJXM6IHZpZGVvX3JlZ2lzdGVyX2RldmljZSBmYWlsZWQiLCBfX0ZVTkNUSU9OX18pOwogCQlyZXR1cm4gLUVQSVBFOwpAQCAtMTA0MSwxMCArMTA0Niw2IEBACiAJaWYgKHV2ZC0+ZGVidWcgPiAxKSB7CiAJCWluZm8oIiVzOiB2aWRlb19yZWdpc3Rlcl9kZXZpY2UoKSBzdWNjZXNzZnVsIiwgX19GVU5DVElPTl9fKTsKIAl9Ci0JaWYgKHV2ZC0+ZGV2ID09IE5VTEwpIHsKLQkJZXJyKCIlczogdXZkLT5kZXYgPT0gTlVMTCIsIF9fRlVOQ1RJT05fXyk7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KIAogCWluZm8oIiVzIG9uIC9kZXYvdmlkZW8lZDogY2FudmFzPSVzIHZpZGVvc2l6ZT0lcyIsCiAJICAgICAodXZkLT5oYW5kbGUgIT0gTlVMTCkgPyB1dmQtPmhhbmRsZS0+ZHJ2TmFtZSA6ICI/Pz8iLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby92NGwxLWNvbXBhdC5jIGIvZHJpdmVycy9tZWRpYS92aWRlby92NGwxLWNvbXBhdC5jCmluZGV4IGRjZjIyYTMuLjUwZTFmZjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vdjRsMS1jb21wYXQuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3Y0bDEtY29tcGF0LmMKQEAgLTMwMyw3ICszMDMsMTEgQEAKIAl7CiAJCXN0cnVjdCB2aWRlb19jYXBhYmlsaXR5ICpjYXAgPSBhcmc7CiAKLQkJY2FwMiA9IGt6YWxsb2Moc2l6ZW9mKCpjYXAyKSxHRlBfS0VSTkVMKTsKKwkJY2FwMiA9IGt6YWxsb2Moc2l6ZW9mKCpjYXAyKSwgR0ZQX0tFUk5FTCk7CisJCWlmICghY2FwMikgeworCQkJZXJyID0gLUVOT01FTTsKKwkJCWJyZWFrOworCQl9CiAJCW1lbXNldChjYXAsIDAsIHNpemVvZigqY2FwKSk7CiAJCW1lbXNldCgmZmJ1ZjIsIDAsIHNpemVvZihmYnVmMikpOwogCkBAIC00MjYsNyArNDMwLDExIEBACiAJewogCQlzdHJ1Y3QgdmlkZW9fd2luZG93CSp3aW4gPSBhcmc7CiAKLQkJZm10MiA9IGt6YWxsb2Moc2l6ZW9mKCpmbXQyKSxHRlBfS0VSTkVMKTsKKwkJZm10MiA9IGt6YWxsb2Moc2l6ZW9mKCpmbXQyKSwgR0ZQX0tFUk5FTCk7CisJCWlmICghZm10MikgeworCQkJZXJyID0gLUVOT01FTTsKKwkJCWJyZWFrOworCQl9CiAJCW1lbXNldCh3aW4sMCxzaXplb2YoKndpbikpOwogCiAJCWZtdDItPnR5cGUgPSBWNEwyX0JVRl9UWVBFX1ZJREVPX09WRVJMQVk7CkBAIC00NjQsNyArNDcyLDExIEBACiAJCXN0cnVjdCB2aWRlb193aW5kb3cJKndpbiA9IGFyZzsKIAkJaW50IGVycjEsZXJyMjsKIAotCQlmbXQyID0ga3phbGxvYyhzaXplb2YoKmZtdDIpLEdGUF9LRVJORUwpOworCQlmbXQyID0ga3phbGxvYyhzaXplb2YoKmZtdDIpLCBHRlBfS0VSTkVMKTsKKwkJaWYgKCFmbXQyKSB7CisJCQllcnIgPSAtRU5PTUVNOworCQkJYnJlYWs7CisJCX0KIAkJZm10Mi0+dHlwZSA9IFY0TDJfQlVGX1RZUEVfVklERU9fQ0FQVFVSRTsKIAkJZHJ2KGlub2RlLCBmaWxlLCBWSURJT0NfU1RSRUFNT0ZGLCAmZm10Mi0+dHlwZSk7CiAJCWVycjEgPSBkcnYoaW5vZGUsIGZpbGUsIFZJRElPQ19HX0ZNVCwgZm10Mik7CkBAIC01ODYsNiArNTk4LDEyIEBACiAJewogCQlzdHJ1Y3QgdmlkZW9fcGljdHVyZQkqcGljdCA9IGFyZzsKIAorCQlmbXQyID0ga3phbGxvYyhzaXplb2YoKmZtdDIpLCBHRlBfS0VSTkVMKTsKKwkJaWYgKCFmbXQyKSB7CisJCQllcnIgPSAtRU5PTUVNOworCQkJYnJlYWs7CisJCX0KKwogCQlwaWN0LT5icmlnaHRuZXNzID0gZ2V0X3Y0bF9jb250cm9sKGlub2RlLCBmaWxlLAogCQkJCQkJICAgVjRMMl9DSURfQlJJR0hUTkVTUyxkcnYpOwogCQlwaWN0LT5odWUgPSBnZXRfdjRsX2NvbnRyb2woaW5vZGUsIGZpbGUsCkBAIC01OTcsNyArNjE1LDYgQEAKIAkJcGljdC0+d2hpdGVuZXNzID0gZ2V0X3Y0bF9jb250cm9sKGlub2RlLCBmaWxlLAogCQkJCQkJICBWNEwyX0NJRF9XSElURU5FU1MsIGRydik7CiAKLQkJZm10MiA9IGt6YWxsb2Moc2l6ZW9mKCpmbXQyKSxHRlBfS0VSTkVMKTsKIAkJZm10Mi0+dHlwZSA9IFY0TDJfQlVGX1RZUEVfVklERU9fQ0FQVFVSRTsKIAkJZXJyID0gZHJ2KGlub2RlLCBmaWxlLCBWSURJT0NfR19GTVQsIGZtdDIpOwogCQlpZiAoZXJyIDwgMCkgewpAQCAtNjE3LDYgKzYzNCwxMSBAQAogCQlzdHJ1Y3QgdmlkZW9fcGljdHVyZQkqcGljdCA9IGFyZzsKIAkJaW50IG1lbV9lcnIgPSAwLCBvdmxfZXJyID0gMDsKIAorCQlmbXQyID0ga3phbGxvYyhzaXplb2YoKmZtdDIpLCBHRlBfS0VSTkVMKTsKKwkJaWYgKCFmbXQyKSB7CisJCQllcnIgPSAtRU5PTUVNOworCQkJYnJlYWs7CisJCX0KIAkJbWVtc2V0KCZmYnVmMiwgMCwgc2l6ZW9mKGZidWYyKSk7CiAKIAkJc2V0X3Y0bF9jb250cm9sKGlub2RlLCBmaWxlLApAQCAtNjM2LDcgKzY1OCw2IEBACiAJCSAqIGRpZmZlcmVudCBwaXhlbCBmb3JtYXRzIGZvciBtZW1vcnkgdnMgb3ZlcmxheS4KIAkJICovCiAKLQkJZm10MiA9IGt6YWxsb2Moc2l6ZW9mKCpmbXQyKSxHRlBfS0VSTkVMKTsKIAkJZm10Mi0+dHlwZSA9IFY0TDJfQlVGX1RZUEVfVklERU9fQ0FQVFVSRTsKIAkJZXJyID0gZHJ2KGlub2RlLCBmaWxlLCBWSURJT0NfR19GTVQsIGZtdDIpOwogCQkvKiBJZiBWSURJT0NfR19GTVQgZmFpbGVkLCB0aGVuIHRoZSBkcml2ZXIgbGlrZWx5IGRvZXNuJ3QKQEAgLTg5MCw3ICs5MTEsMTEgQEAKIAl7CiAJCXN0cnVjdCB2aWRlb19tbWFwCSptbSA9IGFyZzsKIAotCQlmbXQyID0ga3phbGxvYyhzaXplb2YoKmZtdDIpLEdGUF9LRVJORUwpOworCQlmbXQyID0ga3phbGxvYyhzaXplb2YoKmZtdDIpLCBHRlBfS0VSTkVMKTsKKwkJaWYgKCFmbXQyKSB7CisJCQllcnIgPSAtRU5PTUVNOworCQkJYnJlYWs7CisJCX0KIAkJbWVtc2V0KCZidWYyLDAsc2l6ZW9mKGJ1ZjIpKTsKIAogCQlmbXQyLT50eXBlID0gVjRMMl9CVUZfVFlQRV9WSURFT19DQVBUVVJFOwpAQCAtOTg2LDcgKzEwMTEsMTEgQEAKIAl7CiAJCXN0cnVjdCB2YmlfZm9ybWF0ICAgICAgKmZtdCA9IGFyZzsKIAotCQlmbXQyID0ga3phbGxvYyhzaXplb2YoKmZtdDIpLEdGUF9LRVJORUwpOworCQlmbXQyID0ga3phbGxvYyhzaXplb2YoKmZtdDIpLCBHRlBfS0VSTkVMKTsKKwkJaWYgKCFmbXQyKSB7CisJCQllcnIgPSAtRU5PTUVNOworCQkJYnJlYWs7CisJCX0KIAkJZm10Mi0+dHlwZSA9IFY0TDJfQlVGX1RZUEVfVkJJX0NBUFRVUkU7CiAKIAkJZXJyID0gZHJ2KGlub2RlLCBmaWxlLCBWSURJT0NfR19GTVQsIGZtdDIpOwpAQCAtMTAxOCw4ICsxMDQ3LDExIEBACiAJCQlicmVhazsKIAkJfQogCi0JCWZtdDIgPSBremFsbG9jKHNpemVvZigqZm10MiksR0ZQX0tFUk5FTCk7Ci0KKwkJZm10MiA9IGt6YWxsb2Moc2l6ZW9mKCpmbXQyKSwgR0ZQX0tFUk5FTCk7CisJCWlmICghZm10MikgeworCQkJZXJyID0gLUVOT01FTTsKKwkJCWJyZWFrOworCQl9CiAJCWZtdDItPnR5cGUgPSBWNEwyX0JVRl9UWVBFX1ZCSV9DQVBUVVJFOwogCQlmbXQyLT5mbXQudmJpLnNhbXBsZXNfcGVyX2xpbmUgPSBmbXQtPnNhbXBsZXNfcGVyX2xpbmU7CiAJCWZtdDItPmZtdC52Ymkuc2FtcGxpbmdfcmF0ZSAgICA9IGZtdC0+c2FtcGxpbmdfcmF0ZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vdjRsMi1pbnQtZGV2aWNlLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3Y0bDItaW50LWRldmljZS5jCmluZGV4IGE1NDVkY2EuLjBlNDU0OTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vdjRsMi1pbnQtZGV2aWNlLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby92NGwyLWludC1kZXZpY2UuYwpAQCAtMTU2LDMgKzE1Niw1IEBACiAJCWZpbmRfaW9jdGwoZC0+dS5zbGF2ZSwgY21kLAogCQkJICAgKHY0bDJfaW50X2lvY3RsX2Z1bmMgKilub19zdWNoX2lvY3RsXzEpKShkLCBhcmcpOwogfQorCitNT0RVTEVfTElDRU5TRSgiR1BMIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3pvcmFuX2RyaXZlci5jIGIvZHJpdmVycy9tZWRpYS92aWRlby96b3Jhbl9kcml2ZXIuYwppbmRleCBkZDNkN2QyLi5mZWE0OTQ2IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3pvcmFuX2RyaXZlci5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vem9yYW5fZHJpdmVyLmMKQEAgLTMzOSw3ICszMzksNyBAQAogCQkJLyogVXNlIGttYWxsb2MgKi8KIAogCQkJbWVtID0ga21hbGxvYyhmaC0+djRsX2J1ZmZlcnMuYnVmZmVyX3NpemUsIEdGUF9LRVJORUwpOwotCQkJaWYgKG1lbSA9PSAwKSB7CisJCQlpZiAoIW1lbSkgewogCQkJCWRwcmludGsoMSwKIAkJCQkJS0VSTl9FUlIKIAkJCQkJIiVzOiB2NGxfZmJ1ZmZlcl9hbGxvYygpIC0ga21hbGxvYyBmb3IgVjRMIGJ1ZiAlZCBmYWlsZWRcbiIsCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3pyMzY0eHguYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8venIzNjR4eC5jCmluZGV4IDFiNDQ3ODQuLjA0OTQ5YzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8venIzNjR4eC5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8venIzNjR4eC5jCkBAIC0zOTAsNyArMzkwLDcgQEAKIH0KIAogCi1zdGF0aWMgc3NpemVfdCB6cjM2NHh4X3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgKmJ1Ziwgc2l6ZV90IGNudCwKK3N0YXRpYyBzc2l6ZV90IHpyMzY0eHhfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKmJ1Ziwgc2l6ZV90IGNudCwKIAkJCSAgICBsb2ZmX3QgKiBwcG9zKQogewogCXVuc2lnbmVkIGxvbmcgY291bnQgPSBjbnQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lbXN0aWNrL2NvcmUvbWVtc3RpY2suYyBiL2RyaXZlcnMvbWVtc3RpY2svY29yZS9tZW1zdGljay5jCmluZGV4IGRlODBkYmEuLjk0NmUzZDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVtc3RpY2svY29yZS9tZW1zdGljay5jCisrKyBiL2RyaXZlcnMvbWVtc3RpY2svY29yZS9tZW1zdGljay5jCkBAIC0yNzYsOCArMjc2LDYgQEAKIAkJbXJxLT5uZWVkX2NhcmRfaW50ID0gMTsKIAllbHNlCiAJCW1ycS0+bmVlZF9jYXJkX2ludCA9IDA7Ci0KLQltcnEtPmdldF9pbnRfcmVnID0gMDsKIH0KIEVYUE9SVF9TWU1CT0wobWVtc3RpY2tfaW5pdF9yZXFfc2cpOwogCkBAIC0zMTEsOCArMzA5LDYgQEAKIAkJbXJxLT5uZWVkX2NhcmRfaW50ID0gMTsKIAllbHNlCiAJCW1ycS0+bmVlZF9jYXJkX2ludCA9IDA7Ci0KLQltcnEtPmdldF9pbnRfcmVnID0gMDsKIH0KIEVYUE9SVF9TWU1CT0wobWVtc3RpY2tfaW5pdF9yZXEpOwogCkBAIC0zNDIsNiArMzM4LDcgQEAKIAkJCWNhcmQtPmlkLmNsYXNzID0gaWRfcmVnLmNsYXNzOwogCQl9CiAJCWNvbXBsZXRlKCZjYXJkLT5tcnFfY29tcGxldGUpOworCQlkZXZfZGJnKCZjYXJkLT5kZXYsICJpZl9tb2RlID0gJTAyeFxuIiwgaWRfcmVnLmlmX21vZGUpOwogCQlyZXR1cm4gLUVBR0FJTjsKIAl9CiB9CkBAIC00MjIsNyArNDE5LDYgQEAKIHsKIAlob3N0LT5zZXRfcGFyYW0oaG9zdCwgTUVNU1RJQ0tfUE9XRVIsIE1FTVNUSUNLX1BPV0VSX09OKTsKIAlob3N0LT5zZXRfcGFyYW0oaG9zdCwgTUVNU1RJQ0tfSU5URVJGQUNFLCBNRU1TVElDS19TRVJJQUwpOwotCW1zbGVlcCgxKTsKIH0KIAogc3RhdGljIHZvaWQgbWVtc3RpY2tfY2hlY2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQpAQCAtNTc5LDcgKzU3NSw4IEBACiB2b2lkIG1lbXN0aWNrX3Jlc3VtZV9ob3N0KHN0cnVjdCBtZW1zdGlja19ob3N0ICpob3N0KQogewogCW11dGV4X2xvY2soJmhvc3QtPmxvY2spOwotCWhvc3QtPnNldF9wYXJhbShob3N0LCBNRU1TVElDS19QT1dFUiwgTUVNU1RJQ0tfUE9XRVJfT04pOworCWlmIChob3N0LT5jYXJkKQorCQltZW1zdGlja19wb3dlcl9vbihob3N0KTsKIAltdXRleF91bmxvY2soJmhvc3QtPmxvY2spOwogCW1lbXN0aWNrX2RldGVjdF9jaGFuZ2UoaG9zdCk7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lbXN0aWNrL2NvcmUvbXNwcm9fYmxvY2suYyBiL2RyaXZlcnMvbWVtc3RpY2svY29yZS9tc3Byb19ibG9jay5jCmluZGV4IDFkNjM3ZTQuLjU1N2RiYmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVtc3RpY2svY29yZS9tc3Byb19ibG9jay5jCisrKyBiL2RyaXZlcnMvbWVtc3RpY2svY29yZS9tc3Byb19ibG9jay5jCkBAIC0xMzMsNiArMTMzLDcgQEAKIHN0cnVjdCBtc3Byb19ibG9ja19kYXRhIHsKIAlzdHJ1Y3QgbWVtc3RpY2tfZGV2ICAgKmNhcmQ7CiAJdW5zaWduZWQgaW50ICAgICAgICAgIHVzYWdlX2NvdW50OworCXVuc2lnbmVkIGludCAgICAgICAgICBjYXBzOwogCXN0cnVjdCBnZW5kaXNrICAgICAgICAqZGlzazsKIAlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAgKnF1ZXVlOwogCXNwaW5sb2NrX3QgICAgICAgICAgICBxX2xvY2s7CkBAIC01NzcsNyArNTc4LDYgQEAKIHN0YXRpYyBpbnQgaF9tc3Byb19ibG9ja190cmFuc2Zlcl9kYXRhKHN0cnVjdCBtZW1zdGlja19kZXYgKmNhcmQsCiAJCQkJICAgICAgIHN0cnVjdCBtZW1zdGlja19yZXF1ZXN0ICoqbXJxKQogewotCXN0cnVjdCBtZW1zdGlja19ob3N0ICpob3N0ID0gY2FyZC0+aG9zdDsKIAlzdHJ1Y3QgbXNwcm9fYmxvY2tfZGF0YSAqbXNiID0gbWVtc3RpY2tfZ2V0X2RydmRhdGEoY2FyZCk7CiAJdW5zaWduZWQgY2hhciB0X3ZhbCA9IDA7CiAJc3RydWN0IHNjYXR0ZXJsaXN0IHRfc2cgPSB7IDAgfTsKQEAgLTU5MSwxMiArNTkxLDEyIEBACiAJc3dpdGNoICgoKm1ycSktPnRwYykgewogCWNhc2UgTVNfVFBDX1dSSVRFX1JFRzoKIAkJbWVtc3RpY2tfaW5pdF9yZXEoKm1ycSwgTVNfVFBDX1NFVF9DTUQsICZtc2ItPnRyYW5zZmVyX2NtZCwgMSk7Ci0JCSgqbXJxKS0+Z2V0X2ludF9yZWcgPSAxOworCQkoKm1ycSktPm5lZWRfY2FyZF9pbnQgPSAxOwogCQlyZXR1cm4gMDsKIAljYXNlIE1TX1RQQ19TRVRfQ01EOgogCQl0X3ZhbCA9ICgqbXJxKS0+aW50X3JlZzsKIAkJbWVtc3RpY2tfaW5pdF9yZXEoKm1ycSwgTVNfVFBDX0dFVF9JTlQsIE5VTEwsIDEpOwotCQlpZiAoaG9zdC0+Y2FwcyAmIE1FTVNUSUNLX0NBUF9BVVRPX0dFVF9JTlQpCisJCWlmIChtc2ItPmNhcHMgJiBNRU1TVElDS19DQVBfQVVUT19HRVRfSU5UKQogCQkJZ290byBoYXNfaW50X3JlZzsKIAkJcmV0dXJuIDA7CiAJY2FzZSBNU19UUENfR0VUX0lOVDoKQEAgLTY0NiwxMiArNjQ2LDEyIEBACiAJCQkJCSAgID8gTVNfVFBDX1JFQURfTE9OR19EQVRBCiAJCQkJCSAgIDogTVNfVFBDX1dSSVRFX0xPTkdfREFUQSwKIAkJCQkgICAgICZ0X3NnKTsKLQkJKCptcnEpLT5nZXRfaW50X3JlZyA9IDE7CisJCSgqbXJxKS0+bmVlZF9jYXJkX2ludCA9IDE7CiAJCXJldHVybiAwOwogCWNhc2UgTVNfVFBDX1JFQURfTE9OR19EQVRBOgogCWNhc2UgTVNfVFBDX1dSSVRFX0xPTkdfREFUQToKIAkJbXNiLT5jdXJyZW50X3BhZ2UrKzsKLQkJaWYgKGhvc3QtPmNhcHMgJiBNRU1TVElDS19DQVBfQVVUT19HRVRfSU5UKSB7CisJCWlmIChtc2ItPmNhcHMgJiBNRU1TVElDS19DQVBfQVVUT19HRVRfSU5UKSB7CiAJCQl0X3ZhbCA9ICgqbXJxKS0+aW50X3JlZzsKIAkJCWdvdG8gaGFzX2ludF9yZWc7CiAJCX0gZWxzZSB7CkBAIC04MTYsMTIgKzgxNiwxMyBAQAogCXJldHVybiBjYXJkLT5jdXJyZW50X21ycS5lcnJvcjsKIH0KIAotc3RhdGljIGludCBtc3Byb19ibG9ja19zd2l0Y2hfdG9fcGFyYWxsZWwoc3RydWN0IG1lbXN0aWNrX2RldiAqY2FyZCkKK3N0YXRpYyBpbnQgbXNwcm9fYmxvY2tfc2V0X2ludGVyZmFjZShzdHJ1Y3QgbWVtc3RpY2tfZGV2ICpjYXJkLAorCQkJCSAgICAgdW5zaWduZWQgY2hhciBzeXNfcmVnKQogewogCXN0cnVjdCBtZW1zdGlja19ob3N0ICpob3N0ID0gY2FyZC0+aG9zdDsKIAlzdHJ1Y3QgbXNwcm9fYmxvY2tfZGF0YSAqbXNiID0gbWVtc3RpY2tfZ2V0X2RydmRhdGEoY2FyZCk7CiAJc3RydWN0IG1zcHJvX3BhcmFtX3JlZ2lzdGVyIHBhcmFtID0gewotCQkuc3lzdGVtID0gTUVNU1RJQ0tfU1lTX1BBUjQsCisJCS5zeXN0ZW0gPSBzeXNfcmVnLAogCQkuZGF0YV9jb3VudCA9IDAsCiAJCS5kYXRhX2FkZHJlc3MgPSAwLAogCQkudHBjX3BhcmFtID0gMApAQCAtODMzLDQxICs4MzQsNzAgQEAKIAkJCSAgc2l6ZW9mKHBhcmFtKSk7CiAJbWVtc3RpY2tfbmV3X3JlcShob3N0KTsKIAl3YWl0X2Zvcl9jb21wbGV0aW9uKCZjYXJkLT5tcnFfY29tcGxldGUpOwotCWlmIChjYXJkLT5jdXJyZW50X21ycS5lcnJvcikKLQkJcmV0dXJuIGNhcmQtPmN1cnJlbnRfbXJxLmVycm9yOworCXJldHVybiBjYXJkLT5jdXJyZW50X21ycS5lcnJvcjsKK30KKworc3RhdGljIGludCBtc3Byb19ibG9ja19zd2l0Y2hfaW50ZXJmYWNlKHN0cnVjdCBtZW1zdGlja19kZXYgKmNhcmQpCit7CisJc3RydWN0IG1lbXN0aWNrX2hvc3QgKmhvc3QgPSBjYXJkLT5ob3N0OworCXN0cnVjdCBtc3Byb19ibG9ja19kYXRhICptc2IgPSBtZW1zdGlja19nZXRfZHJ2ZGF0YShjYXJkKTsKKwlpbnQgcmMgPSAwOworCisJaWYgKG1zYi0+Y2FwcyAmIE1FTVNUSUNLX0NBUF9QQVI0KQorCQlyYyA9IG1zcHJvX2Jsb2NrX3NldF9pbnRlcmZhY2UoY2FyZCwgTUVNU1RJQ0tfU1lTX1BBUjQpOworCWVsc2UKKwkJcmV0dXJuIDA7CisKKwlpZiAocmMpIHsKKwkJcHJpbnRrKEtFUk5fV0FSTklORworCQkgICAgICAgIiVzOiBjb3VsZCBub3Qgc3dpdGNoIHRvIDQtYml0IG1vZGUsIGVycm9yICVkXG4iLAorCQkgICAgICAgY2FyZC0+ZGV2LmJ1c19pZCwgcmMpOworCQlyZXR1cm4gMDsKKwl9CiAKIAltc2ItPnN5c3RlbSA9IE1FTVNUSUNLX1NZU19QQVI0OwogCWhvc3QtPnNldF9wYXJhbShob3N0LCBNRU1TVElDS19JTlRFUkZBQ0UsIE1FTVNUSUNLX1BBUjQpOworCXByaW50ayhLRVJOX0lORk8gIiVzOiBzd2l0Y2hpbmcgdG8gNC1iaXQgcGFyYWxsZWwgbW9kZVxuIiwKKwkgICAgICAgY2FyZC0+ZGV2LmJ1c19pZCk7CisKKwlpZiAobXNiLT5jYXBzICYgTUVNU1RJQ0tfQ0FQX1BBUjgpIHsKKwkJcmMgPSBtc3Byb19ibG9ja19zZXRfaW50ZXJmYWNlKGNhcmQsIE1FTVNUSUNLX1NZU19QQVI4KTsKKworCQlpZiAoIXJjKSB7CisJCQltc2ItPnN5c3RlbSA9IE1FTVNUSUNLX1NZU19QQVI4OworCQkJaG9zdC0+c2V0X3BhcmFtKGhvc3QsIE1FTVNUSUNLX0lOVEVSRkFDRSwKKwkJCQkJTUVNU1RJQ0tfUEFSOCk7CisJCQlwcmludGsoS0VSTl9JTkZPCisJCQkgICAgICAgIiVzOiBzd2l0Y2hpbmcgdG8gOC1iaXQgcGFyYWxsZWwgbW9kZVxuIiwKKwkJCSAgICAgICBjYXJkLT5kZXYuYnVzX2lkKTsKKwkJfSBlbHNlCisJCQlwcmludGsoS0VSTl9XQVJOSU5HCisJCQkgICAgICAgIiVzOiBjb3VsZCBub3Qgc3dpdGNoIHRvIDgtYml0IG1vZGUsIGVycm9yICVkXG4iLAorCQkJICAgICAgIGNhcmQtPmRldi5idXNfaWQsIHJjKTsKKwl9CiAKIAljYXJkLT5uZXh0X3JlcXVlc3QgPSBoX21zcHJvX2Jsb2NrX3JlcV9pbml0OwogCW1zYi0+bXJxX2hhbmRsZXIgPSBoX21zcHJvX2Jsb2NrX2RlZmF1bHQ7CiAJbWVtc3RpY2tfaW5pdF9yZXEoJmNhcmQtPmN1cnJlbnRfbXJxLCBNU19UUENfR0VUX0lOVCwgTlVMTCwgMSk7CiAJbWVtc3RpY2tfbmV3X3JlcShjYXJkLT5ob3N0KTsKIAl3YWl0X2Zvcl9jb21wbGV0aW9uKCZjYXJkLT5tcnFfY29tcGxldGUpOworCXJjID0gY2FyZC0+Y3VycmVudF9tcnEuZXJyb3I7CiAKLQlpZiAoY2FyZC0+Y3VycmVudF9tcnEuZXJyb3IpIHsKKwlpZiAocmMpIHsKKwkJcHJpbnRrKEtFUk5fV0FSTklORworCQkgICAgICAgIiVzOiBpbnRlcmZhY2UgZXJyb3IsIHRyeWluZyB0byBmYWxsIGJhY2sgdG8gc2VyaWFsXG4iLAorCQkgICAgICAgY2FyZC0+ZGV2LmJ1c19pZCk7CiAJCW1zYi0+c3lzdGVtID0gTUVNU1RJQ0tfU1lTX1NFUklBTDsKIAkJaG9zdC0+c2V0X3BhcmFtKGhvc3QsIE1FTVNUSUNLX1BPV0VSLCBNRU1TVElDS19QT1dFUl9PRkYpOwotCQltc2xlZXAoMTAwMCk7CisJCW1zbGVlcCgxMCk7CiAJCWhvc3QtPnNldF9wYXJhbShob3N0LCBNRU1TVElDS19QT1dFUiwgTUVNU1RJQ0tfUE9XRVJfT04pOwogCQlob3N0LT5zZXRfcGFyYW0oaG9zdCwgTUVNU1RJQ0tfSU5URVJGQUNFLCBNRU1TVElDS19TRVJJQUwpOwogCi0JCWlmIChtZW1zdGlja19zZXRfcndfYWRkcihjYXJkKSkKLQkJCXJldHVybiBjYXJkLT5jdXJyZW50X21ycS5lcnJvcjsKLQotCQlwYXJhbS5zeXN0ZW0gPSBtc2ItPnN5c3RlbTsKLQotCQljYXJkLT5uZXh0X3JlcXVlc3QgPSBoX21zcHJvX2Jsb2NrX3JlcV9pbml0OwotCQltc2ItPm1ycV9oYW5kbGVyID0gaF9tc3Byb19ibG9ja19kZWZhdWx0OwotCQltZW1zdGlja19pbml0X3JlcSgmY2FyZC0+Y3VycmVudF9tcnEsIE1TX1RQQ19XUklURV9SRUcsICZwYXJhbSwKLQkJCQkgIHNpemVvZihwYXJhbSkpOwotCQltZW1zdGlja19uZXdfcmVxKGhvc3QpOwotCQl3YWl0X2Zvcl9jb21wbGV0aW9uKCZjYXJkLT5tcnFfY29tcGxldGUpOwotCi0JCXJldHVybiAtRUZBVUxUOworCQlyYyA9IG1lbXN0aWNrX3NldF9yd19hZGRyKGNhcmQpOworCQlpZiAoIXJjKQorCQkJcmMgPSBtc3Byb19ibG9ja19zZXRfaW50ZXJmYWNlKGNhcmQsIG1zYi0+c3lzdGVtKTsKIAl9Ci0KLQlyZXR1cm4gMDsKKwlyZXR1cm4gcmM7CiB9CiAKIC8qIE1lbW9yeSBhbGxvY2F0ZWQgZm9yIGF0dHJpYnV0ZXMgYnkgdGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgZnJlZWQgYnkKQEAgLTEwNTIsMTYgKzEwODIsMTggQEAKIAlpZiAobWVtc3RpY2tfc2V0X3J3X2FkZHIoY2FyZCkpCiAJCXJldHVybiAtRUlPOwogCi0JaWYgKGhvc3QtPmNhcHMgJiBNRU1TVElDS19DQVBfUEFSNCkgewotCQlpZiAobXNwcm9fYmxvY2tfc3dpdGNoX3RvX3BhcmFsbGVsKGNhcmQpKQotCQkJcHJpbnRrKEtFUk5fV0FSTklORyAiJXM6IGNvdWxkIG5vdCBzd2l0Y2ggdG8gIgotCQkJICAgICAgICJwYXJhbGxlbCBpbnRlcmZhY2VcbiIsIGNhcmQtPmRldi5idXNfaWQpOwotCX0KKwltc2ItPmNhcHMgPSBob3N0LT5jYXBzOworCXJjID0gbXNwcm9fYmxvY2tfc3dpdGNoX2ludGVyZmFjZShjYXJkKTsKKwlpZiAocmMpCisJCXJldHVybiByYzsKIAorCW1zbGVlcCgyMDApOwogCXJjID0gbXNwcm9fYmxvY2tfd2FpdF9mb3JfY2VkKGNhcmQpOwogCWlmIChyYykKIAkJcmV0dXJuIHJjOwogCWRldl9kYmcoJmNhcmQtPmRldiwgImNhcmQgYWN0aXZhdGVkXG4iKTsKKwlpZiAobXNiLT5zeXN0ZW0gIT0gTUVNU1RJQ0tfU1lTX1NFUklBTCkKKwkJbXNiLT5jYXBzIHw9IE1FTVNUSUNLX0NBUF9BVVRPX0dFVF9JTlQ7CiAKIAljYXJkLT5uZXh0X3JlcXVlc3QgPSBoX21zcHJvX2Jsb2NrX3JlcV9pbml0OwogCW1zYi0+bXJxX2hhbmRsZXIgPSBoX21zcHJvX2Jsb2NrX2dldF9ybzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVtc3RpY2svaG9zdC9qbWIzOHhfbXMuYyBiL2RyaXZlcnMvbWVtc3RpY2svaG9zdC9qbWIzOHhfbXMuYwppbmRleCAwM2ZlODc4Li44NzcwYTVmIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lbXN0aWNrL2hvc3Qvam1iMzh4X21zLmMKKysrIGIvZHJpdmVycy9tZW1zdGljay9ob3N0L2ptYjM4eF9tcy5jCkBAIC0xMiw2ICsxMiw3IEBACiAjaW5jbHVkZSA8bGludXgvc3BpbmxvY2suaD4KICNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KICNpbmNsdWRlIDxsaW51eC9wY2kuaD4KKyNpbmNsdWRlIDxsaW51eC9kbWEtbWFwcGluZy5oPgogI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CiAjaW5jbHVkZSA8bGludXgvaGlnaG1lbS5oPgogI2luY2x1ZGUgPGxpbnV4L21lbXN0aWNrLmg+CkBAIC01Niw4ICs1Nyw2IEBACiAJdW5zaWduZWQgbG9uZyAgICAgICAgICAgdGltZW91dF9qaWZmaWVzOwogCXN0cnVjdCB0aW1lcl9saXN0ICAgICAgIHRpbWVyOwogCXN0cnVjdCBtZW1zdGlja19yZXF1ZXN0ICpyZXE7Ci0JdW5zaWduZWQgY2hhciAgICAgICAgICAgZWplY3Q6MSwKLQkJCQl1c2VfZG1hOjE7CiAJdW5zaWduZWQgY2hhciAgICAgICAgICAgY21kX2ZsYWdzOwogCXVuc2lnbmVkIGNoYXIgICAgICAgICAgIGlvX3BvczsKIAl1bnNpZ25lZCBpbnQgICAgICAgICAgICBpb193b3JkWzJdOwpAQCAtOTQsOSArOTMsMjIgQEAKICNkZWZpbmUgSE9TVF9DT05UUk9MX0lGX1BBUjQgICAweDEKICNkZWZpbmUgSE9TVF9DT05UUk9MX0lGX1BBUjggICAweDMKIAorI2RlZmluZSBTVEFUVVNfQlVTWSAgICAgICAgICAgICAweDAwMDgwMDAwCisjZGVmaW5lIFNUQVRVU19NU19EQVQ3ICAgICAgICAgIDB4MDAwNDAwMDAKKyNkZWZpbmUgU1RBVFVTX01TX0RBVDYgICAgICAgICAgMHgwMDAyMDAwMAorI2RlZmluZSBTVEFUVVNfTVNfREFUNSAgICAgICAgICAweDAwMDEwMDAwCisjZGVmaW5lIFNUQVRVU19NU19EQVQ0ICAgICAgICAgIDB4MDAwMDgwMDAKKyNkZWZpbmUgU1RBVFVTX01TX0RBVDMgICAgICAgICAgMHgwMDAwNDAwMAorI2RlZmluZSBTVEFUVVNfTVNfREFUMiAgICAgICAgICAweDAwMDAyMDAwCisjZGVmaW5lIFNUQVRVU19NU19EQVQxICAgICAgICAgIDB4MDAwMDEwMDAKKyNkZWZpbmUgU1RBVFVTX01TX0RBVDAgICAgICAgICAgMHgwMDAwMDgwMAogI2RlZmluZSBTVEFUVVNfSEFTX01FRElBICAgICAgICAweDAwMDAwNDAwCiAjZGVmaW5lIFNUQVRVU19GSUZPX0VNUFRZICAgICAgIDB4MDAwMDAyMDAKICNkZWZpbmUgU1RBVFVTX0ZJRk9fRlVMTCAgICAgICAgMHgwMDAwMDEwMAorI2RlZmluZSBTVEFUVVNfTVNfQ0VEICAgICAgICAgICAweDAwMDAwMDgwCisjZGVmaW5lIFNUQVRVU19NU19FUlIgICAgICAgICAgIDB4MDAwMDAwNDAKKyNkZWZpbmUgU1RBVFVTX01TX0JSUSAgICAgICAgICAgMHgwMDAwMDAyMAorI2RlZmluZSBTVEFUVVNfTVNfQ05LICAgICAgICAgICAweDAwMDAwMDAxCiAKICNkZWZpbmUgSU5UX1NUQVRVU19UUENfRVJSICAgICAgMHgwMDA4MDAwMAogI2RlZmluZSBJTlRfU1RBVFVTX0NSQ19FUlIgICAgICAweDAwMDQwMDAwCkBAIC0xMTksMTEgKzEzMSwxNyBAQAogI2RlZmluZSBQQURfUFVfUERfT05fTVNfU09DSzAgMHg1ZjhmMDAwMAogI2RlZmluZSBQQURfUFVfUERfT05fTVNfU09DSzEgMHgwZjBmMDAwMAogCisjZGVmaW5lIENMT0NLX0NPTlRST0xfNDBNSFogICAweDAwMDAwMDAxCisjZGVmaW5lIENMT0NLX0NPTlRST0xfNTBNSFogICAweDAwMDAwMDAyCisjZGVmaW5lIENMT0NLX0NPTlRST0xfNjBNSFogICAweDAwMDAwMDA4CisjZGVmaW5lIENMT0NLX0NPTlRST0xfNjJfNU1IWiAweDAwMDAwMDBjCisjZGVmaW5lIENMT0NLX0NPTlRST0xfT0ZGICAgICAweDAwMDAwMDAwCisKIGVudW0gewogCUNNRF9SRUFEWSAgICA9IDB4MDEsCiAJRklGT19SRUFEWSAgID0gMHgwMiwKIAlSRUdfREFUQSAgICAgPSAweDA0LAotCUFVVE9fR0VUX0lOVCA9IDB4MDgKKwlETUFfREFUQSAgICAgPSAweDA4CiB9OwogCiBzdGF0aWMgdW5zaWduZWQgaW50IGptYjM4eF9tc19yZWFkX2RhdGEoc3RydWN0IGptYjM4eF9tc19ob3N0ICpob3N0LApAQCAtMjczLDcgKzI5MSw3IEBACiB7CiAJdW5zaWduZWQgaW50IGxlbmd0aDsKIAl1bnNpZ25lZCBpbnQgb2ZmOwotCXVuc2lnbmVkIGludCB0X3NpemUsIHBfb2ZmLCBwX2NudDsKKwl1bnNpZ25lZCBpbnQgdF9zaXplLCBwX2NudDsKIAl1bnNpZ25lZCBjaGFyICpidWY7CiAJc3RydWN0IHBhZ2UgKnBnOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3MgPSAwOwpAQCAtMjg3LDYgKzMwNSw4IEBACiAJfQogCiAJd2hpbGUgKGxlbmd0aCkgeworCQl1bnNpZ25lZCBpbnQgdW5pbml0aWFsaXplZF92YXIocF9vZmYpOworCiAJCWlmIChob3N0LT5yZXEtPmxvbmdfZGF0YSkgewogCQkJcGcgPSBudGhfcGFnZShzZ19wYWdlKCZob3N0LT5yZXEtPnNnKSwKIAkJCQkgICAgICBvZmYgPj4gUEFHRV9TSElGVCk7CkBAIC0zNjQsMjggKzM4NCwyNyBAQAogCQljbWQgfD0gVFBDX0RJUjsKIAlpZiAoaG9zdC0+cmVxLT5uZWVkX2NhcmRfaW50KQogCQljbWQgfD0gVFBDX1dBSVRfSU5UOwotCWlmIChob3N0LT5yZXEtPmdldF9pbnRfcmVnKQotCQljbWQgfD0gVFBDX0dFVF9JTlQ7CiAKIAlkYXRhID0gaG9zdC0+cmVxLT5kYXRhOwogCi0JaG9zdC0+dXNlX2RtYSA9ICFub19kbWE7CisJaWYgKCFub19kbWEpCisJCWhvc3QtPmNtZF9mbGFncyB8PSBETUFfREFUQTsKIAogCWlmIChob3N0LT5yZXEtPmxvbmdfZGF0YSkgewogCQlkYXRhX2xlbiA9IGhvc3QtPnJlcS0+c2cubGVuZ3RoOwogCX0gZWxzZSB7CiAJCWRhdGFfbGVuID0gaG9zdC0+cmVxLT5kYXRhX2xlbjsKLQkJaG9zdC0+dXNlX2RtYSA9IDA7CisJCWhvc3QtPmNtZF9mbGFncyAmPSB+RE1BX0RBVEE7CiAJfQogCiAJaWYgKGRhdGFfbGVuIDw9IDgpIHsKIAkJY21kICY9IH4oVFBDX0RBVEFfU0VMIHwgMHhmKTsKIAkJaG9zdC0+Y21kX2ZsYWdzIHw9IFJFR19EQVRBOwogCQljbWQgfD0gZGF0YV9sZW4gJiAweGY7Ci0JCWhvc3QtPnVzZV9kbWEgPSAwOworCQlob3N0LT5jbWRfZmxhZ3MgJj0gfkRNQV9EQVRBOwogCX0KIAotCWlmIChob3N0LT51c2VfZG1hKSB7CisJaWYgKGhvc3QtPmNtZF9mbGFncyAmIERNQV9EQVRBKSB7CiAJCWlmICgxICE9IHBjaV9tYXBfc2coaG9zdC0+Y2hpcC0+cGRldiwgJmhvc3QtPnJlcS0+c2csIDEsCiAJCQkJICAgIGhvc3QtPnJlcS0+ZGF0YV9kaXIgPT0gUkVBRAogCQkJCSAgICA/IFBDSV9ETUFfRlJPTURFVklDRQpAQCAtNDQ4LDEzICs0NjcsMTIgQEAKIAkJcmVhZGwoaG9zdC0+YWRkciArIElOVF9TVEFUVVMpKTsKIAlkZXZfZGJnKG1zaC0+Y2Rldi5kZXYsICJjIGhzdGF0dXMgJTA4eFxuIiwgcmVhZGwoaG9zdC0+YWRkciArIFNUQVRVUykpOwogCi0JaWYgKGhvc3QtPnJlcS0+Z2V0X2ludF9yZWcpIHsKLQkJdF92YWwgPSByZWFkbChob3N0LT5hZGRyICsgVFBDX1AwKTsKLQkJaG9zdC0+cmVxLT5pbnRfcmVnID0gKHRfdmFsICYgMHhmZik7Ci0JfQorCWhvc3QtPnJlcS0+aW50X3JlZyA9IHJlYWRsKGhvc3QtPmFkZHIgKyBTVEFUVVMpICYgMHhmZjsKIAotCWlmIChob3N0LT51c2VfZG1hKSB7Ci0JCXdyaXRlbCgwLCBob3N0LT5hZGRyICsgRE1BX0NPTlRST0wpOworCXdyaXRlbCgwLCBob3N0LT5hZGRyICsgQkxPQ0spOworCXdyaXRlbCgwLCBob3N0LT5hZGRyICsgRE1BX0NPTlRST0wpOworCisJaWYgKGhvc3QtPmNtZF9mbGFncyAmIERNQV9EQVRBKSB7CiAJCXBjaV91bm1hcF9zZyhob3N0LT5jaGlwLT5wZGV2LCAmaG9zdC0+cmVxLT5zZywgMSwKIAkJCSAgICAgaG9zdC0+cmVxLT5kYXRhX2RpciA9PSBSRUFECiAJCQkgICAgID8gUENJX0RNQV9GUk9NREVWSUNFIDogUENJX0RNQV9UT0RFVklDRSk7CkBAIC01MDYsNyArNTI0LDcgQEAKIAkJCWVsc2UKIAkJCQlob3N0LT5yZXEtPmVycm9yID0gLUVUSU1FOwogCQl9IGVsc2UgewotCQkJaWYgKGhvc3QtPnVzZV9kbWEpIHsKKwkJCWlmIChob3N0LT5jbWRfZmxhZ3MgJiBETUFfREFUQSkgewogCQkJCWlmIChpcnFfc3RhdHVzICYgSU5UX1NUQVRVU19FT1RSQU4pCiAJCQkJCWhvc3QtPmNtZF9mbGFncyB8PSBGSUZPX1JFQURZOwogCQkJfSBlbHNlIHsKQEAgLTU5NSwxOSArNjEzLDE4IEBACiB7CiAJdW5zaWduZWQgaW50IGhvc3RfY3RsID0gcmVhZGwoaG9zdC0+YWRkciArIEhPU1RfQ09OVFJPTCk7CiAKLQl3cml0ZWwoaG9zdF9jdGwgfCBIT1NUX0NPTlRST0xfUkVTRVRfUkVRIHwgSE9TVF9DT05UUk9MX1JFU0VULAotCSAgICAgICBob3N0LT5hZGRyICsgSE9TVF9DT05UUk9MKTsKKwl3cml0ZWwoSE9TVF9DT05UUk9MX1JFU0VUX1JFUSwgaG9zdC0+YWRkciArIEhPU1RfQ09OVFJPTCk7CiAKIAl3aGlsZSAoSE9TVF9DT05UUk9MX1JFU0VUX1JFUQogCSAgICAgICAmIChob3N0X2N0bCA9IHJlYWRsKGhvc3QtPmFkZHIgKyBIT1NUX0NPTlRST0wpKSkgewotCQluZGVsYXkoMTAwKTsKLQkJZGV2X2RiZygmaG9zdC0+Y2hpcC0+cGRldi0+ZGV2LCAicmVzZXRcbiIpOworCQluZGVsYXkoMjApOworCQlkZXZfZGJnKCZob3N0LT5jaGlwLT5wZGV2LT5kZXYsICJyZXNldCAlMDh4XG4iLCBob3N0X2N0bCk7CiAJfQogCi0Jd3JpdGVsKElOVF9TVEFUVVNfQUxMLCBob3N0LT5hZGRyICsgSU5UX1NUQVRVU19FTkFCTEUpOworCXdyaXRlbChIT1NUX0NPTlRST0xfUkVTRVQsIGhvc3QtPmFkZHIgKyBIT1NUX0NPTlRST0wpOworCW1taW93YigpOwogCXdyaXRlbChJTlRfU1RBVFVTX0FMTCwgaG9zdC0+YWRkciArIElOVF9TSUdOQUxfRU5BQkxFKTsKLQotCWRldl9kYmcoJmhvc3QtPmNoaXAtPnBkZXYtPmRldiwgInJlc2V0XG4iKTsKKwl3cml0ZWwoSU5UX1NUQVRVU19BTEwsIGhvc3QtPmFkZHIgKyBJTlRfU1RBVFVTX0VOQUJMRSk7CiB9CiAKIHN0YXRpYyB2b2lkIGptYjM4eF9tc19zZXRfcGFyYW0oc3RydWN0IG1lbXN0aWNrX2hvc3QgKm1zaCwKQEAgLTYxNSwxMCArNjMyLDggQEAKIAkJCQlpbnQgdmFsdWUpCiB7CiAJc3RydWN0IGptYjM4eF9tc19ob3N0ICpob3N0ID0gbWVtc3RpY2tfcHJpdihtc2gpOwotCXVuc2lnbmVkIGludCBob3N0X2N0bDsKLQl1bnNpZ25lZCBsb25nIGZsYWdzOwotCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJmhvc3QtPmxvY2ssIGZsYWdzKTsKKwl1bnNpZ25lZCBpbnQgaG9zdF9jdGwgPSByZWFkbChob3N0LT5hZGRyICsgSE9TVF9DT05UUk9MKTsKKwl1bnNpZ25lZCBpbnQgY2xvY2tfY3RsID0gQ0xPQ0tfQ09OVFJPTF80ME1IWiwgY2xvY2tfZGVsYXkgPSAwOwogCiAJc3dpdGNoIChwYXJhbSkgewogCWNhc2UgTUVNU1RJQ0tfUE9XRVI6CkBAIC02MjYsNjAgKzY0MSw1NyBAQAogCQkJam1iMzh4X21zX3Jlc2V0KGhvc3QpOwogCiAJCQl3cml0ZWwoaG9zdC0+aWQgPyBQQURfUFVfUERfT05fTVNfU09DSzEKLQkJCQkJICA6IFBBRF9QVV9QRF9PTl9NU19TT0NLMCwKKwkJCQkJOiBQQURfUFVfUERfT05fTVNfU09DSzAsCiAJCQkgICAgICAgaG9zdC0+YWRkciArIFBBRF9QVV9QRCk7CiAKIAkJCXdyaXRlbChQQURfT1VUUFVUX0VOQUJMRV9NUywKIAkJCSAgICAgICBob3N0LT5hZGRyICsgUEFEX09VVFBVVF9FTkFCTEUpOwogCi0JCQlob3N0X2N0bCA9IHJlYWRsKGhvc3QtPmFkZHIgKyBIT1NUX0NPTlRST0wpOwotCQkJaG9zdF9jdGwgfD0gNzsKLQkJCXdyaXRlbChob3N0X2N0bCB8IChIT1NUX0NPTlRST0xfUE9XRVJfRU4KLQkJCQkJICAgfCBIT1NUX0NPTlRST0xfQ0xPQ0tfRU4pLAotCQkJICAgICAgIGhvc3QtPmFkZHIgKyBIT1NUX0NPTlRST0wpOworCQkJaG9zdF9jdGwgPSA3OworCQkJaG9zdF9jdGwgfD0gSE9TVF9DT05UUk9MX1BPV0VSX0VOCisJCQkJIHwgSE9TVF9DT05UUk9MX0NMT0NLX0VOOworCQkJd3JpdGVsKGhvc3RfY3RsLCBob3N0LT5hZGRyICsgSE9TVF9DT05UUk9MKTsKIAogCQkJZGV2X2RiZygmaG9zdC0+Y2hpcC0+cGRldi0+ZGV2LCAicG93ZXIgb25cbiIpOwogCQl9IGVsc2UgaWYgKHZhbHVlID09IE1FTVNUSUNLX1BPV0VSX09GRikgewotCQkJd3JpdGVsKHJlYWRsKGhvc3QtPmFkZHIgKyBIT1NUX0NPTlRST0wpCi0JCQkgICAgICAgJiB+KEhPU1RfQ09OVFJPTF9QT1dFUl9FTgotCQkJCSAgIHwgSE9TVF9DT05UUk9MX0NMT0NLX0VOKSwKLQkJCSAgICAgICBob3N0LT5hZGRyICsgIEhPU1RfQ09OVFJPTCk7CisJCQlob3N0X2N0bCAmPSB+KEhPU1RfQ09OVFJPTF9QT1dFUl9FTgorCQkJCSAgICAgIHwgSE9TVF9DT05UUk9MX0NMT0NLX0VOKTsKKwkJCXdyaXRlbChob3N0X2N0bCwgaG9zdC0+YWRkciArICBIT1NUX0NPTlRST0wpOwogCQkJd3JpdGVsKDAsIGhvc3QtPmFkZHIgKyBQQURfT1VUUFVUX0VOQUJMRSk7CiAJCQl3cml0ZWwoUEFEX1BVX1BEX09GRiwgaG9zdC0+YWRkciArIFBBRF9QVV9QRCk7CiAJCQlkZXZfZGJnKCZob3N0LT5jaGlwLT5wZGV2LT5kZXYsICJwb3dlciBvZmZcbiIpOwogCQl9CiAJCWJyZWFrOwogCWNhc2UgTUVNU1RJQ0tfSU5URVJGQUNFOgotCQkvKiBqbWIzOHhfbXNfcmVzZXQoaG9zdCk7ICovCi0KLQkJaG9zdF9jdGwgPSByZWFkbChob3N0LT5hZGRyICsgSE9TVF9DT05UUk9MKTsKIAkJaG9zdF9jdGwgJj0gfigzIDw8IEhPU1RfQ09OVFJPTF9JRl9TSElGVCk7Ci0JCS8qIGhvc3RfY3RsIHw9IDc7ICovCiAKIAkJaWYgKHZhbHVlID09IE1FTVNUSUNLX1NFUklBTCkgewogCQkJaG9zdF9jdGwgJj0gfkhPU1RfQ09OVFJPTF9GQVNUX0NMSzsKIAkJCWhvc3RfY3RsIHw9IEhPU1RfQ09OVFJPTF9JRl9TRVJJQUwKIAkJCQkgICAgPDwgSE9TVF9DT05UUk9MX0lGX1NISUZUOwogCQkJaG9zdF9jdGwgfD0gSE9TVF9DT05UUk9MX1JFSTsKLQkJCXdyaXRlbCgwLCBob3N0LT5hZGRyICsgQ0xPQ0tfREVMQVkpOworCQkJY2xvY2tfY3RsID0gQ0xPQ0tfQ09OVFJPTF80ME1IWjsKKwkJCWNsb2NrX2RlbGF5ID0gMDsKIAkJfSBlbHNlIGlmICh2YWx1ZSA9PSBNRU1TVElDS19QQVI0KSB7CiAJCQlob3N0X2N0bCB8PSBIT1NUX0NPTlRST0xfRkFTVF9DTEs7CiAJCQlob3N0X2N0bCB8PSBIT1NUX0NPTlRST0xfSUZfUEFSNAogCQkJCSAgICA8PCBIT1NUX0NPTlRST0xfSUZfU0hJRlQ7CiAJCQlob3N0X2N0bCAmPSB+SE9TVF9DT05UUk9MX1JFSTsKLQkJCXdyaXRlbCg0LCBob3N0LT5hZGRyICsgQ0xPQ0tfREVMQVkpOworCQkJY2xvY2tfY3RsID0gQ0xPQ0tfQ09OVFJPTF80ME1IWjsKKwkJCWNsb2NrX2RlbGF5ID0gNDsKIAkJfSBlbHNlIGlmICh2YWx1ZSA9PSBNRU1TVElDS19QQVI4KSB7CiAJCQlob3N0X2N0bCB8PSBIT1NUX0NPTlRST0xfRkFTVF9DTEs7CiAJCQlob3N0X2N0bCB8PSBIT1NUX0NPTlRST0xfSUZfUEFSOAogCQkJCSAgICA8PCBIT1NUX0NPTlRST0xfSUZfU0hJRlQ7CiAJCQlob3N0X2N0bCAmPSB+SE9TVF9DT05UUk9MX1JFSTsKLQkJCXdyaXRlbCg0LCBob3N0LT5hZGRyICsgQ0xPQ0tfREVMQVkpOworCQkJY2xvY2tfY3RsID0gQ0xPQ0tfQ09OVFJPTF82ME1IWjsKKwkJCWNsb2NrX2RlbGF5ID0gMDsKIAkJfQogCQl3cml0ZWwoaG9zdF9jdGwsIGhvc3QtPmFkZHIgKyBIT1NUX0NPTlRST0wpOworCQl3cml0ZWwoY2xvY2tfY3RsLCBob3N0LT5hZGRyICsgQ0xPQ0tfQ09OVFJPTCk7CisJCXdyaXRlbChjbG9ja19kZWxheSwgaG9zdC0+YWRkciArIENMT0NLX0RFTEFZKTsKIAkJYnJlYWs7CiAJfTsKLQotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmhvc3QtPmxvY2ssIGZsYWdzKTsKIH0KIAogI2lmZGVmIENPTkZJR19QTQpAQCAtNzcyLDEzICs3ODQsMTAgQEAKIAlzbnByaW50Zihob3N0LT5ob3N0X2lkLCBERVZJQ0VfSURfU0laRSwgRFJJVkVSX05BTUUgIjpzbG90JWQiLAogCQkgaG9zdC0+aWQpOwogCWhvc3QtPmlycSA9IGptLT5wZGV2LT5pcnE7Ci0JaG9zdC0+dGltZW91dF9qaWZmaWVzID0gbXNlY3NfdG9famlmZmllcyg0MDAwKTsKKwlob3N0LT50aW1lb3V0X2ppZmZpZXMgPSBtc2Vjc190b19qaWZmaWVzKDEwMDApOwogCW1zaC0+cmVxdWVzdCA9IGptYjM4eF9tc19yZXF1ZXN0OwogCW1zaC0+c2V0X3BhcmFtID0gam1iMzh4X21zX3NldF9wYXJhbTsKLQkvKgotCW1zaC0+Y2FwcyA9IE1FTVNUSUNLX0NBUF9BVVRPX0dFVF9JTlQgfCBNRU1TVElDS19DQVBfUEFSNAotCQkgICAgfCBNRU1TVElDS19DQVBfUEFSODsKLQkqLworCiAJbXNoLT5jYXBzID0gTUVNU1RJQ0tfQ0FQX1BBUjQgfCBNRU1TVElDS19DQVBfUEFSODsKIAogCXNldHVwX3RpbWVyKCZob3N0LT50aW1lciwgam1iMzh4X21zX2Fib3J0LCAodW5zaWduZWQgbG9uZyltc2gpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZW1zdGljay9ob3N0L3RpZm1fbXMuYyBiL2RyaXZlcnMvbWVtc3RpY2svaG9zdC90aWZtX21zLmMKaW5kZXggMmI1YmY1Mi4uODU3N2RlNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZW1zdGljay9ob3N0L3RpZm1fbXMuYworKysgYi9kcml2ZXJzL21lbXN0aWNrL2hvc3QvdGlmbV9tcy5jCkBAIC0xODIsNyArMTgyLDcgQEAKIAlzdHJ1Y3QgdGlmbV9kZXYgKnNvY2sgPSBob3N0LT5kZXY7CiAJdW5zaWduZWQgaW50IGxlbmd0aDsKIAl1bnNpZ25lZCBpbnQgb2ZmOwotCXVuc2lnbmVkIGludCB0X3NpemUsIHBfb2ZmLCBwX2NudDsKKwl1bnNpZ25lZCBpbnQgdF9zaXplLCBwX2NudDsKIAl1bnNpZ25lZCBjaGFyICpidWY7CiAJc3RydWN0IHBhZ2UgKnBnOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3MgPSAwOwpAQCAtMTk4LDYgKzE5OCw4IEBACiAJCWhvc3QtPmJsb2NrX3Bvcyk7CiAKIAl3aGlsZSAobGVuZ3RoKSB7CisJCXVuc2lnbmVkIGludCB1bmluaXRpYWxpemVkX3ZhcihwX29mZik7CisKIAkJaWYgKGhvc3QtPnJlcS0+bG9uZ19kYXRhKSB7CiAJCQlwZyA9IG50aF9wYWdlKHNnX3BhZ2UoJmhvc3QtPnJlcS0+c2cpLAogCQkJCSAgICAgIG9mZiA+PiBQQUdFX1NISUZUKTsKQEAgLTM0MCwxMSArMzQyLDIwIEBACiAKIAlkZWxfdGltZXIoJmhvc3QtPnRpbWVyKTsKIAotCWlmIChob3N0LT51c2VfZG1hKQorCWhvc3QtPnJlcS0+aW50X3JlZyA9IHJlYWRsKHNvY2stPmFkZHIgKyBTT0NLX01TX1NUQVRVUykgJiAweGZmOworCWhvc3QtPnJlcS0+aW50X3JlZyA9IChob3N0LT5yZXEtPmludF9yZWcgJiAxKQorCQkJICAgICB8ICgoaG9zdC0+cmVxLT5pbnRfcmVnIDw8IDQpICYgMHhlMCk7CisKKwl3cml0ZWwoVElGTV9GSUZPX0lOVF9TRVRBTEwsCisJICAgICAgIHNvY2stPmFkZHIgKyBTT0NLX0RNQV9GSUZPX0lOVF9FTkFCTEVfQ0xFQVIpOworCXdyaXRlbChUSUZNX0RNQV9SRVNFVCwgc29jay0+YWRkciArIFNPQ0tfRE1BX0NPTlRST0wpOworCisJaWYgKGhvc3QtPnVzZV9kbWEpIHsKIAkJdGlmbV91bm1hcF9zZyhzb2NrLCAmaG9zdC0+cmVxLT5zZywgMSwKIAkJCSAgICAgIGhvc3QtPnJlcS0+ZGF0YV9kaXIgPT0gUkVBRAogCQkJICAgICAgPyBQQ0lfRE1BX0ZST01ERVZJQ0UKIAkJCSAgICAgIDogUENJX0RNQV9UT0RFVklDRSk7CisJfQogCiAJd3JpdGVsKCh+VElGTV9DVFJMX0xFRCkgJiByZWFkbChzb2NrLT5hZGRyICsgU09DS19DT05UUk9MKSwKIAkgICAgICAgc29jay0+YWRkciArIFNPQ0tfQ09OVFJPTCk7CkBAIC00MjQsMTIgKzQzNSw2IEBACiAJCWVsc2UgaWYgKGhvc3Rfc3RhdHVzICYgVElGTV9NU19TVEFUX0NSQykKIAkJCWhvc3QtPnJlcS0+ZXJyb3IgPSAtRUlMU0VROwogCi0JCWlmIChob3N0LT5yZXEtPmVycm9yKSB7Ci0JCQl3cml0ZWwoVElGTV9GSUZPX0lOVF9TRVRBTEwsCi0JCQkgICAgICAgc29jay0+YWRkciArIFNPQ0tfRE1BX0ZJRk9fSU5UX0VOQUJMRV9DTEVBUik7Ci0JCQl3cml0ZWwoVElGTV9ETUFfUkVTRVQsIHNvY2stPmFkZHIgKyBTT0NLX0RNQV9DT05UUk9MKTsKLQkJfQotCiAJCWlmIChob3N0X3N0YXR1cyAmIFRJRk1fTVNfU1RBVF9SRFkpCiAJCQlob3N0LT5jbWRfZmxhZ3MgfD0gQ01EX1JFQURZOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lc3NhZ2UvZnVzaW9uL21wdGJhc2UuYyBiL2RyaXZlcnMvbWVzc2FnZS9mdXNpb24vbXB0YmFzZS5jCmluZGV4IDZiNmRmODYuLmM2YmU2ZWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVzc2FnZS9mdXNpb24vbXB0YmFzZS5jCisrKyBiL2RyaXZlcnMvbWVzc2FnZS9mdXNpb24vbXB0YmFzZS5jCkBAIC0xNDMwLDYgKzE0MzAsOTggQEAKIAkJc3ByaW50Zihwcm9kX25hbWUsICIlcyIsIHByb2R1Y3Rfc3RyKTsKIH0KIAorLyoqCisgKgltcHRfbWFwcmVzb3VyY2VzIC0gbWFwIGluIG1lbW9yeSBtYXBwZWQgaW8KKyAqCUBpb2M6IFBvaW50ZXIgdG8gcG9pbnRlciB0byBJT0MgYWRhcHRlcgorICoKKyAqKi8KK3N0YXRpYyBpbnQKK21wdF9tYXByZXNvdXJjZXMoTVBUX0FEQVBURVIgKmlvYykKK3sKKwl1OAkJX19pb21lbSAqbWVtOworCWludAkJIGlpOworCXVuc2lnbmVkIGxvbmcJIG1lbV9waHlzOworCXVuc2lnbmVkIGxvbmcJIHBvcnQ7CisJdTMyCQkgbXNpemU7CisJdTMyCQkgcHNpemU7CisJdTgJCSByZXZpc2lvbjsKKwlpbnQJCSByID0gLUVOT0RFVjsKKwlzdHJ1Y3QgcGNpX2RldiAqcGRldjsKKworCXBkZXYgPSBpb2MtPnBjaWRldjsKKwlpb2MtPmJhcnMgPSBwY2lfc2VsZWN0X2JhcnMocGRldiwgSU9SRVNPVVJDRV9NRU0pOworCWlmIChwY2lfZW5hYmxlX2RldmljZV9tZW0ocGRldikpIHsKKwkJcHJpbnRrKE1ZSU9DX3NfRVJSX0ZNVCAicGNpX2VuYWJsZV9kZXZpY2VfbWVtKCkgIgorCQkgICAgImZhaWxlZFxuIiwgaW9jLT5uYW1lKTsKKwkJcmV0dXJuIHI7CisJfQorCWlmIChwY2lfcmVxdWVzdF9zZWxlY3RlZF9yZWdpb25zKHBkZXYsIGlvYy0+YmFycywgIm1wdCIpKSB7CisJCXByaW50ayhNWUlPQ19zX0VSUl9GTVQgInBjaV9yZXF1ZXN0X3NlbGVjdGVkX3JlZ2lvbnMoKSB3aXRoICIKKwkJICAgICJNRU0gZmFpbGVkXG4iLCBpb2MtPm5hbWUpOworCQlyZXR1cm4gcjsKKwl9CisKKwlwY2lfcmVhZF9jb25maWdfYnl0ZShwZGV2LCBQQ0lfQ0xBU1NfUkVWSVNJT04sICZyZXZpc2lvbik7CisKKwlpZiAoIXBjaV9zZXRfZG1hX21hc2socGRldiwgRE1BXzY0QklUX01BU0spCisJICAgICYmICFwY2lfc2V0X2NvbnNpc3RlbnRfZG1hX21hc2socGRldiwgRE1BXzY0QklUX01BU0spKSB7CisJCWRpbml0cHJpbnRrKGlvYywgcHJpbnRrKE1ZSU9DX3NfSU5GT19GTVQKKwkJICAgICI6IDY0IEJJVCBQQ0kgQlVTIERNQSBBRERSRVNTSU5HIFNVUFBPUlRFRFxuIiwKKwkJICAgIGlvYy0+bmFtZSkpOworCX0gZWxzZSBpZiAoIXBjaV9zZXRfZG1hX21hc2socGRldiwgRE1BXzMyQklUX01BU0spCisJICAgICYmICFwY2lfc2V0X2NvbnNpc3RlbnRfZG1hX21hc2socGRldiwgRE1BXzMyQklUX01BU0spKSB7CisJCWRpbml0cHJpbnRrKGlvYywgcHJpbnRrKE1ZSU9DX3NfSU5GT19GTVQKKwkJICAgICI6IDMyIEJJVCBQQ0kgQlVTIERNQSBBRERSRVNTSU5HIFNVUFBPUlRFRFxuIiwKKwkJICAgIGlvYy0+bmFtZSkpOworCX0gZWxzZSB7CisJCXByaW50ayhNWUlPQ19zX1dBUk5fRk1UICJubyBzdWl0YWJsZSBETUEgbWFzayBmb3IgJXNcbiIsCisJCSAgICBpb2MtPm5hbWUsIHBjaV9uYW1lKHBkZXYpKTsKKwkJcGNpX3JlbGVhc2Vfc2VsZWN0ZWRfcmVnaW9ucyhwZGV2LCBpb2MtPmJhcnMpOworCQlyZXR1cm4gcjsKKwl9CisKKwltZW1fcGh5cyA9IG1zaXplID0gMDsKKwlwb3J0ID0gcHNpemUgPSAwOworCWZvciAoaWkgPSAwOyBpaSA8IERFVklDRV9DT1VOVF9SRVNPVVJDRTsgaWkrKykgeworCQlpZiAocGNpX3Jlc291cmNlX2ZsYWdzKHBkZXYsIGlpKSAmIFBDSV9CQVNFX0FERFJFU1NfU1BBQ0VfSU8pIHsKKwkJCWlmIChwc2l6ZSkKKwkJCQljb250aW51ZTsKKwkJCS8qIEdldCBJL08gc3BhY2UhICovCisJCQlwb3J0ID0gcGNpX3Jlc291cmNlX3N0YXJ0KHBkZXYsIGlpKTsKKwkJCXBzaXplID0gcGNpX3Jlc291cmNlX2xlbihwZGV2LCBpaSk7CisJCX0gZWxzZSB7CisJCQlpZiAobXNpemUpCisJCQkJY29udGludWU7CisJCQkvKiBHZXQgbWVtbWFwICovCisJCQltZW1fcGh5cyA9IHBjaV9yZXNvdXJjZV9zdGFydChwZGV2LCBpaSk7CisJCQltc2l6ZSA9IHBjaV9yZXNvdXJjZV9sZW4ocGRldiwgaWkpOworCQl9CisJfQorCWlvYy0+bWVtX3NpemUgPSBtc2l6ZTsKKworCW1lbSA9IE5VTEw7CisJLyogR2V0IGxvZ2ljYWwgcHRyIGZvciBQY2lNZW0wIHNwYWNlICovCisJLyptZW0gPSBpb3JlbWFwKG1lbV9waHlzLCBtc2l6ZSk7Ki8KKwltZW0gPSBpb3JlbWFwKG1lbV9waHlzLCBtc2l6ZSk7CisJaWYgKG1lbSA9PSBOVUxMKSB7CisJCXByaW50ayhNWUlPQ19zX0VSUl9GTVQgIjogRVJST1IgLSBVbmFibGUgdG8gbWFwIGFkYXB0ZXIiCisJCQkiIG1lbW9yeSFcbiIsIGlvYy0+bmFtZSk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKwlpb2MtPm1lbW1hcCA9IG1lbTsKKwlkaW5pdHByaW50ayhpb2MsIHByaW50ayhNWUlPQ19zX0lORk9fRk1UICJtZW0gPSAlcCwgbWVtX3BoeXMgPSAlbHhcbiIsCisJICAgIGlvYy0+bmFtZSwgbWVtLCBtZW1fcGh5cykpOworCisJaW9jLT5tZW1fcGh5cyA9IG1lbV9waHlzOworCWlvYy0+Y2hpcCA9IChTWVNJRl9SRUdTIF9faW9tZW0gKiltZW07CisKKwkvKiBTYXZlIFBvcnQgSU8gdmFsdWVzIGluIGNhc2Ugd2UgbmVlZCB0byBkbyBkb3dubG9hZGJvb3QgKi8KKwlpb2MtPnBpb19tZW1fcGh5cyA9IHBvcnQ7CisJaW9jLT5waW9fY2hpcCA9IChTWVNJRl9SRUdTIF9faW9tZW0gKilwb3J0OworCisJcmV0dXJuIDA7Cit9CisKIC8qPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09Ki8KIC8qKgogICoJbXB0X2F0dGFjaCAtIEluc3RhbGwgYSBQQ0kgaW50ZWxsaWdlbnQgTVBUIGFkYXB0ZXIuCkBAIC0xNDUyLDEzICsxNTQ0LDYgQEAKIG1wdF9hdHRhY2goc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZCkKIHsKIAlNUFRfQURBUFRFUgkqaW9jOwotCXU4CQlfX2lvbWVtICptZW07Ci0JdTgJCV9faW9tZW0gKnBtZW07Ci0JdW5zaWduZWQgbG9uZwkgbWVtX3BoeXM7Ci0JdW5zaWduZWQgbG9uZwkgcG9ydDsKLQl1MzIJCSBtc2l6ZTsKLQl1MzIJCSBwc2l6ZTsKLQlpbnQJCSBpaTsKIAl1OAkJIGNiX2lkeDsKIAlpbnQJCSByID0gLUVOT0RFVjsKIAl1OAkJIHJldmlzaW9uOwpAQCAtMTQ2OCw1MiArMTU1MywzMiBAQAogCXN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqZGVudCwgKmVudDsKICNlbmRpZgogCi0JaWYgKG1wdF9kZWJ1Z19sZXZlbCkKLQkJcHJpbnRrKEtFUk5fSU5GTyBNWU5BTSAiOiBtcHRfZGVidWdfbGV2ZWw9JXhoXG4iLCBtcHRfZGVidWdfbGV2ZWwpOwotCiAJaW9jID0ga3phbGxvYyhzaXplb2YoTVBUX0FEQVBURVIpLCBHRlBfQVRPTUlDKTsKIAlpZiAoaW9jID09IE5VTEwpIHsKIAkJcHJpbnRrKEtFUk5fRVJSIE1ZTkFNICI6IEVSUk9SIC0gSW5zdWZmaWNpZW50IG1lbW9yeSB0byBhZGQgYWRhcHRlciFcbiIpOwogCQlyZXR1cm4gLUVOT01FTTsKIAl9Ci0JaW9jLT5kZWJ1Z19sZXZlbCA9IG1wdF9kZWJ1Z19sZXZlbDsKKwogCWlvYy0+aWQgPSBtcHRfaWRzKys7CiAJc3ByaW50Zihpb2MtPm5hbWUsICJpb2MlZCIsIGlvYy0+aWQpOwogCi0JaW9jLT5iYXJzID0gcGNpX3NlbGVjdF9iYXJzKHBkZXYsIElPUkVTT1VSQ0VfTUVNKTsKLQlpZiAocGNpX2VuYWJsZV9kZXZpY2VfbWVtKHBkZXYpKSB7Ci0JCXByaW50ayhNWUlPQ19zX0VSUl9GTVQgInBjaV9lbmFibGVfZGV2aWNlX21lbSgpICIKLQkJICAgICAgICJmYWlsZWRcbiIsIGlvYy0+bmFtZSk7Ci0JCWtmcmVlKGlvYyk7Ci0JCXJldHVybiByOwotCX0KLQlpZiAocGNpX3JlcXVlc3Rfc2VsZWN0ZWRfcmVnaW9ucyhwZGV2LCBpb2MtPmJhcnMsICJtcHQiKSkgewotCQlwcmludGsoTVlJT0Nfc19FUlJfRk1UICJwY2lfcmVxdWVzdF9zZWxlY3RlZF9yZWdpb25zKCkgd2l0aCAiCi0JCSAgICAgICAiTUVNIGZhaWxlZFxuIiwgaW9jLT5uYW1lKTsKLQkJa2ZyZWUoaW9jKTsKLQkJcmV0dXJuIHI7Ci0JfQorCS8qCisJICogc2V0IGluaXRpYWwgZGVidWcgbGV2ZWwKKwkgKiAocmVmZXIgdG8gbXB0ZGVidWcuaCkKKwkgKgorCSAqLworCWlvYy0+ZGVidWdfbGV2ZWwgPSBtcHRfZGVidWdfbGV2ZWw7CisJaWYgKG1wdF9kZWJ1Z19sZXZlbCkKKwkJcHJpbnRrKEtFUk5fSU5GTyAibXB0X2RlYnVnX2xldmVsPSV4aFxuIiwgbXB0X2RlYnVnX2xldmVsKTsKIAogCWRpbml0cHJpbnRrKGlvYywgcHJpbnRrKE1ZSU9DX3NfSU5GT19GTVQgIjogbXB0X2FkYXB0ZXJfaW5zdGFsbFxuIiwgaW9jLT5uYW1lKSk7CiAKLQlpZiAoIXBjaV9zZXRfZG1hX21hc2socGRldiwgRE1BXzY0QklUX01BU0spKSB7Ci0JCWRwcmludGsoaW9jLCBwcmludGsoTVlJT0Nfc19JTkZPX0ZNVAotCQkJIjogNjQgQklUIFBDSSBCVVMgRE1BIEFERFJFU1NJTkcgU1VQUE9SVEVEXG4iLCBpb2MtPm5hbWUpKTsKLQl9IGVsc2UgaWYgKHBjaV9zZXRfZG1hX21hc2socGRldiwgRE1BXzMyQklUX01BU0spKSB7Ci0JCXByaW50ayhNWUlPQ19zX1dBUk5fRk1UICI6IDMyIEJJVCBQQ0kgQlVTIERNQSBBRERSRVNTSU5HIE5PVCBTVVBQT1JURURcbiIsCi0JCSAgICBpb2MtPm5hbWUpOworCWlvYy0+cGNpZGV2ID0gcGRldjsKKwlpZiAobXB0X21hcHJlc291cmNlcyhpb2MpKSB7CiAJCWtmcmVlKGlvYyk7CiAJCXJldHVybiByOwogCX0KIAotCWlmICghcGNpX3NldF9jb25zaXN0ZW50X2RtYV9tYXNrKHBkZXYsIERNQV82NEJJVF9NQVNLKSkgewotCQlkcHJpbnRrKGlvYywgcHJpbnRrKE1ZSU9DX3NfSU5GT19GTVQKLQkJCSI6IFVzaW5nIDY0IGJpdCBjb25zaXN0ZW50IG1hc2tcbiIsIGlvYy0+bmFtZSkpOwotCX0gZWxzZSB7Ci0JCWRwcmludGsoaW9jLCBwcmludGsoTVlJT0Nfc19JTkZPX0ZNVAotCQkJIjogTm90IHVzaW5nIDY0IGJpdCBjb25zaXN0ZW50IG1hc2tcbiIsIGlvYy0+bmFtZSkpOwotCX0KLQogCWlvYy0+YWxsb2NfdG90YWwgPSBzaXplb2YoTVBUX0FEQVBURVIpOwogCWlvYy0+cmVxX3N6ID0gTVBUX0RFRkFVTFRfRlJBTUVfU0laRTsJCS8qIGF2b2lkIGRpdiBieSB6ZXJvISAqLwogCWlvYy0+cmVwbHlfc3ogPSBNUFRfUkVQTFlfRlJBTUVfU0laRTsKQEAgLTE1NTEsNDggKzE2MTYsOSBAQAogCS8qIEZpbmQgbG9va3VwIHNsb3QuICovCiAJSU5JVF9MSVNUX0hFQUQoJmlvYy0+bGlzdCk7CiAKLQltZW1fcGh5cyA9IG1zaXplID0gMDsKLQlwb3J0ID0gcHNpemUgPSAwOwotCWZvciAoaWk9MDsgaWkgPCBERVZJQ0VfQ09VTlRfUkVTT1VSQ0U7IGlpKyspIHsKLQkJaWYgKHBjaV9yZXNvdXJjZV9mbGFncyhwZGV2LCBpaSkgJiBQQ0lfQkFTRV9BRERSRVNTX1NQQUNFX0lPKSB7Ci0JCQlpZiAocHNpemUpCi0JCQkJY29udGludWU7Ci0JCQkvKiBHZXQgSS9PIHNwYWNlISAqLwotCQkJcG9ydCA9IHBjaV9yZXNvdXJjZV9zdGFydChwZGV2LCBpaSk7Ci0JCQlwc2l6ZSA9IHBjaV9yZXNvdXJjZV9sZW4ocGRldixpaSk7Ci0JCX0gZWxzZSB7Ci0JCQlpZiAobXNpemUpCi0JCQkJY29udGludWU7Ci0JCQkvKiBHZXQgbWVtbWFwICovCi0JCQltZW1fcGh5cyA9IHBjaV9yZXNvdXJjZV9zdGFydChwZGV2LCBpaSk7Ci0JCQltc2l6ZSA9IHBjaV9yZXNvdXJjZV9sZW4ocGRldixpaSk7Ci0JCX0KLQl9Ci0JaW9jLT5tZW1fc2l6ZSA9IG1zaXplOwotCi0JbWVtID0gTlVMTDsKLQkvKiBHZXQgbG9naWNhbCBwdHIgZm9yIFBjaU1lbTAgc3BhY2UgKi8KLQkvKm1lbSA9IGlvcmVtYXAobWVtX3BoeXMsIG1zaXplKTsqLwotCW1lbSA9IGlvcmVtYXAobWVtX3BoeXMsIG1zaXplKTsKLQlpZiAobWVtID09IE5VTEwpIHsKLQkJcHJpbnRrKE1ZSU9DX3NfRVJSX0ZNVCAiVW5hYmxlIHRvIG1hcCBhZGFwdGVyIG1lbW9yeSFcbiIsIGlvYy0+bmFtZSk7Ci0JCWtmcmVlKGlvYyk7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KLQlpb2MtPm1lbW1hcCA9IG1lbTsKLQlkaW5pdHByaW50ayhpb2MsIHByaW50ayhNWUlPQ19zX0lORk9fRk1UICJtZW0gPSAlcCwgbWVtX3BoeXMgPSAlbHhcbiIsIGlvYy0+bmFtZSwgbWVtLCBtZW1fcGh5cykpOwotCiAJZGluaXRwcmludGsoaW9jLCBwcmludGsoTVlJT0Nfc19JTkZPX0ZNVCAiZmFjdHMgQCAlcCwgcGZhY3RzWzBdIEAgJXBcbiIsCiAJICAgIGlvYy0+bmFtZSwgJmlvYy0+ZmFjdHMsICZpb2MtPnBmYWN0c1swXSkpOwogCi0JaW9jLT5tZW1fcGh5cyA9IG1lbV9waHlzOwotCWlvYy0+Y2hpcCA9IChTWVNJRl9SRUdTIF9faW9tZW0gKiltZW07Ci0KLQkvKiBTYXZlIFBvcnQgSU8gdmFsdWVzIGluIGNhc2Ugd2UgbmVlZCB0byBkbyBkb3dubG9hZGJvb3QgKi8KLQlpb2MtPnBpb19tZW1fcGh5cyA9IHBvcnQ7Ci0JcG1lbSA9ICh1OCBfX2lvbWVtICopcG9ydDsKLQlpb2MtPnBpb19jaGlwID0gKFNZU0lGX1JFR1MgX19pb21lbSAqKXBtZW07Ci0KIAlwY2lfcmVhZF9jb25maWdfYnl0ZShwZGV2LCBQQ0lfQ0xBU1NfUkVWSVNJT04sICZyZXZpc2lvbik7CiAJbXB0X2dldF9wcm9kdWN0X25hbWUocGRldi0+dmVuZG9yLCBwZGV2LT5kZXZpY2UsIHJldmlzaW9uLCBpb2MtPnByb2RfbmFtZSk7CiAKQEAgLTE2ODgsNyArMTcxNCw5IEBACiAJCWxpc3RfZGVsKCZpb2MtPmxpc3QpOwogCQlpZiAoaW9jLT5hbHRfaW9jKQogCQkJaW9jLT5hbHRfaW9jLT5hbHRfaW9jID0gTlVMTDsKLQkJaW91bm1hcChtZW0pOworCQlpb3VubWFwKGlvYy0+bWVtbWFwKTsKKwkJaWYgKHIgIT0gLTUpCisJCQlwY2lfcmVsZWFzZV9zZWxlY3RlZF9yZWdpb25zKHBkZXYsIGlvYy0+YmFycyk7CiAJCWtmcmVlKGlvYyk7CiAJCXBjaV9zZXRfZHJ2ZGF0YShwZGV2LCBOVUxMKTsKIAkJcmV0dXJuIHI7CkBAIC0xNzg0LDEzICsxODEyLDEwIEBACiAJdTMyIGRldmljZV9zdGF0ZTsKIAlNUFRfQURBUFRFUiAqaW9jID0gcGNpX2dldF9kcnZkYXRhKHBkZXYpOwogCi0JZGV2aWNlX3N0YXRlPXBjaV9jaG9vc2Vfc3RhdGUocGRldiwgc3RhdGUpOwotCi0JcHJpbnRrKE1ZSU9DX3NfSU5GT19GTVQKLQkicGNpLXN1c3BlbmQ6IHBkZXY9MHglcCwgc2xvdD0lcywgRW50ZXJpbmcgb3BlcmF0aW5nIHN0YXRlIFtEJWRdXG4iLAotCQlpb2MtPm5hbWUsIHBkZXYsIHBjaV9uYW1lKHBkZXYpLCBkZXZpY2Vfc3RhdGUpOwotCi0JcGNpX3NhdmVfc3RhdGUocGRldik7CisJZGV2aWNlX3N0YXRlID0gcGNpX2Nob29zZV9zdGF0ZShwZGV2LCBzdGF0ZSk7CisJcHJpbnRrKE1ZSU9DX3NfSU5GT19GTVQgInBjaS1zdXNwZW5kOiBwZGV2PTB4JXAsIHNsb3Q9JXMsIEVudGVyaW5nICIKKwkgICAgIm9wZXJhdGluZyBzdGF0ZSBbRCVkXVxuIiwgaW9jLT5uYW1lLCBwZGV2LCBwY2lfbmFtZShwZGV2KSwKKwkgICAgZGV2aWNlX3N0YXRlKTsKIAogCS8qIHB1dCBpb2MgaW50byBSRUFEWV9TVEFURSAqLwogCWlmKFNlbmRJb2NSZXNldChpb2MsIE1QSV9GVU5DVElPTl9JT0NfTUVTU0FHRV9VTklUX1JFU0VULCBDQU5fU0xFRVApKSB7CkBAIC0xODA1LDEwICsxODMwLDE0IEBACiAJLyogQ2xlYXIgYW55IGxpbmdlcmluZyBpbnRlcnJ1cHQgKi8KIAlDSElQUkVHX1dSSVRFMzIoJmlvYy0+Y2hpcC0+SW50U3RhdHVzLCAwKTsKIAorCWZyZWVfaXJxKGlvYy0+cGNpX2lycSwgaW9jKTsKKwlpZiAobXB0X21zaV9lbmFibGUpCisJCXBjaV9kaXNhYmxlX21zaShpb2MtPnBjaWRldik7CisJaW9jLT5wY2lfaXJxID0gLTE7CisJcGNpX3NhdmVfc3RhdGUocGRldik7CiAJcGNpX2Rpc2FibGVfZGV2aWNlKHBkZXYpOwogCXBjaV9yZWxlYXNlX3NlbGVjdGVkX3JlZ2lvbnMocGRldiwgaW9jLT5iYXJzKTsKIAlwY2lfc2V0X3Bvd2VyX3N0YXRlKHBkZXYsIGRldmljZV9zdGF0ZSk7Ci0KIAlyZXR1cm4gMDsKIH0KIApAQCAtMTgyMyw0OCArMTg1Miw1NCBAQAogCU1QVF9BREFQVEVSICppb2MgPSBwY2lfZ2V0X2RydmRhdGEocGRldik7CiAJdTMyIGRldmljZV9zdGF0ZSA9IHBkZXYtPmN1cnJlbnRfc3RhdGU7CiAJaW50IHJlY292ZXJ5X3N0YXRlOworCWludCBlcnI7CiAKLQlwcmludGsoTVlJT0Nfc19JTkZPX0ZNVAotCSJwY2ktcmVzdW1lOiBwZGV2PTB4JXAsIHNsb3Q9JXMsIFByZXZpb3VzIG9wZXJhdGluZyBzdGF0ZSBbRCVkXVxuIiwKLQkJaW9jLT5uYW1lLCBwZGV2LCBwY2lfbmFtZShwZGV2KSwgZGV2aWNlX3N0YXRlKTsKKwlwcmludGsoTVlJT0Nfc19JTkZPX0ZNVCAicGNpLXJlc3VtZTogcGRldj0weCVwLCBzbG90PSVzLCBQcmV2aW91cyAiCisJICAgICJvcGVyYXRpbmcgc3RhdGUgW0QlZF1cbiIsIGlvYy0+bmFtZSwgcGRldiwgcGNpX25hbWUocGRldiksCisJICAgIGRldmljZV9zdGF0ZSk7CiAKLQlwY2lfc2V0X3Bvd2VyX3N0YXRlKHBkZXYsIDApOworCXBjaV9zZXRfcG93ZXJfc3RhdGUocGRldiwgUENJX0QwKTsKKwlwY2lfZW5hYmxlX3dha2UocGRldiwgUENJX0QwLCAwKTsKIAlwY2lfcmVzdG9yZV9zdGF0ZShwZGV2KTsKLQlpZiAoaW9jLT5mYWN0cy5GbGFncyAmIE1QSV9JT0NGQUNUU19GTEFHU19GV19ET1dOTE9BRF9CT09UKSB7Ci0JCWlvYy0+YmFycyA9IHBjaV9zZWxlY3RfYmFycyhpb2MtPnBjaWRldiwgSU9SRVNPVVJDRV9NRU0gfAotCQkJSU9SRVNPVVJDRV9JTyk7Ci0JCWlmIChwY2lfZW5hYmxlX2RldmljZShwZGV2KSkKLQkJCXJldHVybiAwOwotCX0gZWxzZSB7Ci0JCWlvYy0+YmFycyA9IHBjaV9zZWxlY3RfYmFycyhwZGV2LCBJT1JFU09VUkNFX01FTSk7Ci0JCWlmIChwY2lfZW5hYmxlX2RldmljZV9tZW0ocGRldikpCi0JCQlyZXR1cm4gMDsKKwlpb2MtPnBjaWRldiA9IHBkZXY7CisJZXJyID0gbXB0X21hcHJlc291cmNlcyhpb2MpOworCWlmIChlcnIpCisJCXJldHVybiBlcnI7CisKKwlwcmludGsoTVlJT0Nfc19JTkZPX0ZNVCAicGNpLXJlc3VtZTogaW9jLXN0YXRlPTB4JXgsZG9vcmJlbGw9MHgleFxuIiwKKwkgICAgaW9jLT5uYW1lLCAobXB0X0dldElvY1N0YXRlKGlvYywgMSkgPj4gTVBJX0lPQ19TVEFURV9TSElGVCksCisJICAgIENISVBSRUdfUkVBRDMyKCZpb2MtPmNoaXAtPkRvb3JiZWxsKSk7CisKKwkvKgorCSAqIEVycmF0YSB3b3JrYXJvdW5kIGZvciBTQVMgcGNpIGV4cHJlc3M6CisJICogVXBvbiByZXR1cm5pbmcgdG8gdGhlIEQwIHN0YXRlLCB0aGUgY29udGVudHMgb2YgdGhlIGRvb3JiZWxsIHdpbGwgYmUKKwkgKiBzdGFsZSBkYXRhLCBhbmQgdGhpcyB3aWxsIGluY29ycmVjdGx5IHNpZ25hbCB0byB0aGUgaG9zdCBkcml2ZXIgdGhhdAorCSAqIHRoZSBmaXJtd2FyZSBpcyByZWFkeSB0byBwcm9jZXNzIG1wdCBjb21tYW5kcy4gICBUaGUgd29ya2Fyb3VuZCBpcworCSAqIHRvIGlzc3VlIGEgZGlhZ25vc3RpYyByZXNldC4KKwkgKi8KKwlpZiAoaW9jLT5idXNfdHlwZSA9PSBTQVMgJiYgKHBkZXYtPmRldmljZSA9PQorCSAgICBNUElfTUFOVUZBQ1RQQUdFX0RFVklEX1NBUzEwNjhFIHx8IHBkZXYtPmRldmljZSA9PQorCSAgICBNUElfTUFOVUZBQ1RQQUdFX0RFVklEX1NBUzEwNjRFKSkgeworCQlpZiAoS2lja1N0YXJ0KGlvYywgMSwgQ0FOX1NMRUVQKSA8IDApIHsKKwkJCXByaW50ayhNWUlPQ19zX1dBUk5fRk1UICJwY2ktcmVzdW1lOiBDYW5ub3QgcmVjb3ZlclxuIiwKKwkJCSAgICBpb2MtPm5hbWUpOworCQkJZ290byBvdXQ7CisJCX0KIAl9Ci0JaWYgKHBjaV9yZXF1ZXN0X3NlbGVjdGVkX3JlZ2lvbnMocGRldiwgaW9jLT5iYXJzLCAibXB0IikpCi0JCXJldHVybiAwOwotCi0JLyogZW5hYmxlIGludGVycnVwdHMgKi8KLQlDSElQUkVHX1dSSVRFMzIoJmlvYy0+Y2hpcC0+SW50TWFzaywgTVBJX0hJTV9ESU0pOwotCWlvYy0+YWN0aXZlID0gMTsKLQotCXByaW50ayhNWUlPQ19zX0lORk9fRk1UCi0JCSJwY2ktcmVzdW1lOiBpb2Mtc3RhdGU9MHgleCxkb29yYmVsbD0weCV4XG4iLAotCQlpb2MtPm5hbWUsCi0JCShtcHRfR2V0SW9jU3RhdGUoaW9jLCAxKSA+PiBNUElfSU9DX1NUQVRFX1NISUZUKSwKLQkJQ0hJUFJFR19SRUFEMzIoJmlvYy0+Y2hpcC0+RG9vcmJlbGwpKTsKIAogCS8qIGJyaW5nIGlvYyB0byBvcGVyYXRpb25hbCBzdGF0ZSAqLwotCWlmICgocmVjb3Zlcnlfc3RhdGUgPSBtcHRfZG9faW9jX3JlY292ZXJ5KGlvYywKLQkgICAgTVBUX0hPU1RFVkVOVF9JT0NfUkVDT1ZFUiwgQ0FOX1NMRUVQKSkgIT0gMCkgeworCXByaW50ayhNWUlPQ19zX0lORk9fRk1UICJTZW5kaW5nIG1wdF9kb19pb2NfcmVjb3ZlcnlcbiIsIGlvYy0+bmFtZSk7CisJcmVjb3Zlcnlfc3RhdGUgPSBtcHRfZG9faW9jX3JlY292ZXJ5KGlvYywgTVBUX0hPU1RFVkVOVF9JT0NfQlJJTkdVUCwKKwkJCQkJCSBDQU5fU0xFRVApOworCWlmIChyZWNvdmVyeV9zdGF0ZSAhPSAwKQorCQlwcmludGsoTVlJT0Nfc19XQVJOX0ZNVCAicGNpLXJlc3VtZTogQ2Fubm90IHJlY292ZXIsICIKKwkJICAgICJlcnJvcjpbJXhdXG4iLCBpb2MtPm5hbWUsIHJlY292ZXJ5X3N0YXRlKTsKKwllbHNlCiAJCXByaW50ayhNWUlPQ19zX0lORk9fRk1UCi0JCQkicGNpLXJlc3VtZTogQ2Fubm90IHJlY292ZXIsIGVycm9yOlsleF1cbiIsCi0JCQlpb2MtPm5hbWUsIHJlY292ZXJ5X3N0YXRlKTsKLQl9IGVsc2UgewotCQlwcmludGsoTVlJT0Nfc19JTkZPX0ZNVAotCQkJInBjaS1yZXN1bWU6IHN1Y2Nlc3NcbiIsIGlvYy0+bmFtZSk7Ci0JfQotCisJCSAgICAicGNpLXJlc3VtZTogc3VjY2Vzc1xuIiwgaW9jLT5uYW1lKTsKKyBvdXQ6CiAJcmV0dXJuIDA7CisKIH0KICNlbmRpZgogCkBAIC0xOTAzLDYgKzE5MzgsNyBAQAogICoJCS0zIGlmIFJFQURZIGJ1dCBQcmltZUlPQ0ZpZm9zIEZhaWxlZAogICoJCS00IGlmIFJFQURZIGJ1dCBJT0NJbml0IEZhaWxlZAogICoJCS01IGlmIGZhaWxlZCB0byBlbmFibGVfZGV2aWNlIGFuZC9vciByZXF1ZXN0X3NlbGVjdGVkX3JlZ2lvbnMKKyAqCQktNiBpZiBmYWlsZWQgdG8gdXBsb2FkIGZpcm13YXJlCiAgKi8KIHN0YXRpYyBpbnQKIG1wdF9kb19pb2NfcmVjb3ZlcnkoTVBUX0FEQVBURVIgKmlvYywgdTMyIHJlYXNvbiwgaW50IHNsZWVwRmxhZykKQEAgLTIwOTcsNyArMjEzMyw3IEBACiAJCQkJfSBlbHNlIHsKIAkJCQkJcHJpbnRrKE1ZSU9DX3NfV0FSTl9GTVQKIAkJCQkJICAgICJmaXJtd2FyZSB1cGxvYWQgZmFpbHVyZSFcbiIsIGlvYy0+bmFtZSk7Ci0JCQkJCXJldCA9IC01OworCQkJCQlyZXQgPSAtNjsKIAkJCQl9CiAJCQl9CiAJCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVzc2FnZS9mdXNpb24vbXB0c2NzaWguYyBiL2RyaXZlcnMvbWVzc2FnZS9mdXNpb24vbXB0c2NzaWguYwppbmRleCAwYzI1MmY2Li5jMjA3YmRhIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lc3NhZ2UvZnVzaW9uL21wdHNjc2loLmMKKysrIGIvZHJpdmVycy9tZXNzYWdlL2Z1c2lvbi9tcHRzY3NpaC5jCkBAIC0xMTcwLDYgKzExNzAsMTAgQEAKIGludAogbXB0c2NzaWhfc3VzcGVuZChzdHJ1Y3QgcGNpX2RldiAqcGRldiwgcG1fbWVzc2FnZV90IHN0YXRlKQogeworCU1QVF9BREFQVEVSIAkJKmlvYyA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTsKKworCXNjc2lfYmxvY2tfcmVxdWVzdHMoaW9jLT5zaCk7CisJZmx1c2hfc2NoZWR1bGVkX3dvcmsoKTsKIAltcHRzY3NpaF9zaHV0ZG93bihwZGV2KTsKIAlyZXR1cm4gbXB0X3N1c3BlbmQocGRldixzdGF0ZSk7CiB9CkBAIC0xMTgzLDcgKzExODcsMTIgQEAKIGludAogbXB0c2NzaWhfcmVzdW1lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQogewotCXJldHVybiBtcHRfcmVzdW1lKHBkZXYpOworCU1QVF9BREFQVEVSIAkJKmlvYyA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTsKKwlpbnQgcmM7CisKKwlyYyA9IG1wdF9yZXN1bWUocGRldik7CisJc2NzaV91bmJsb2NrX3JlcXVlc3RzKGlvYy0+c2gpOworCXJldHVybiByYzsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL21mZC9hc2ljMy5jIGIvZHJpdmVycy9tZmQvYXNpYzMuYwppbmRleCA2M2ZiMWZmMy4uZjZmMmQ5NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZmQvYXNpYzMuYworKysgYi9kcml2ZXJzL21mZC9hc2ljMy5jCkBAIC0yOCwxNCArMjgsMTQgQEAKIHN0YXRpYyBpbmxpbmUgdm9pZCBhc2ljM193cml0ZV9yZWdpc3RlcihzdHJ1Y3QgYXNpYzMgKmFzaWMsCiAJCQkJIHVuc2lnbmVkIGludCByZWcsIHUzMiB2YWx1ZSkKIHsKLQlpb3dyaXRlMTYodmFsdWUsICh1bnNpZ25lZCBsb25nKWFzaWMtPm1hcHBpbmcgKworCWlvd3JpdGUxNih2YWx1ZSwgYXNpYy0+bWFwcGluZyArCiAJCSAgKHJlZyA+PiBhc2ljLT5idXNfc2hpZnQpKTsKIH0KIAogc3RhdGljIGlubGluZSB1MzIgYXNpYzNfcmVhZF9yZWdpc3RlcihzdHJ1Y3QgYXNpYzMgKmFzaWMsCiAJCQkgICAgICAgdW5zaWduZWQgaW50IHJlZykKIHsKLQlyZXR1cm4gaW9yZWFkMTYoKHVuc2lnbmVkIGxvbmcpYXNpYy0+bWFwcGluZyArCisJcmV0dXJuIGlvcmVhZDE2KGFzaWMtPm1hcHBpbmcgKwogCQkJKHJlZyA+PiBhc2ljLT5idXNfc2hpZnQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9taXNjL0tjb25maWcgYi9kcml2ZXJzL21pc2MvS2NvbmZpZwppbmRleCA5ODJlMjdiLi45NjI4MTdlIDEwMDY0NAotLS0gYS9kcml2ZXJzL21pc2MvS2NvbmZpZworKysgYi9kcml2ZXJzL21pc2MvS2NvbmZpZwpAQCAtMTA4LDYgKzEwOCw3IEBACiAJZGVwZW5kcyBvbiBBQ1BJCiAJZGVwZW5kcyBvbiBMRURTX0NMQVNTCiAJZGVwZW5kcyBvbiBCQUNLTElHSFRfQ0xBU1NfREVWSUNFCisJZGVwZW5kcyBvbiBTRVJJT19JODA0MgogCXNlbGVjdCBBQ1BJX1dNSQogCS0tLWhlbHAtLS0KIAkgIFRoaXMgaXMgYSBkcml2ZXIgZm9yIG5ld2VyIEFjZXIgKGFuZCBXaXN0cm9uKSBsYXB0b3BzLiBJdCBhZGRzCmRpZmYgLS1naXQgYS9kcml2ZXJzL21pc2MvYWNlci13bWkuYyBiL2RyaXZlcnMvbWlzYy9hY2VyLXdtaS5jCmluZGV4IDc0ZDEyYjQuLmRkMTNhMzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWlzYy9hY2VyLXdtaS5jCisrKyBiL2RyaXZlcnMvbWlzYy9hY2VyLXdtaS5jCkBAIC0yMTksNiArMjE5LDE1IEBACiAJfSwKIAl7CiAJCS5jYWxsYmFjayA9IGRtaV9tYXRjaGVkLAorCQkuaWRlbnQgPSAiQWNlciBBc3BpcmUgMzYxMCIsCisJCS5tYXRjaGVzID0geworCQkJRE1JX01BVENIKERNSV9TWVNfVkVORE9SLCAiQWNlciIpLAorCQkJRE1JX01BVENIKERNSV9QUk9EVUNUX05BTUUsICJBc3BpcmUgMzYxMCIpLAorCQl9LAorCQkuZHJpdmVyX2RhdGEgPSAmcXVpcmtfYWNlcl90cmF2ZWxtYXRlXzI0OTAsCisJfSwKKwl7CisJCS5jYWxsYmFjayA9IGRtaV9tYXRjaGVkLAogCQkuaWRlbnQgPSAiQWNlciBBc3BpcmUgNTEwMCIsCiAJCS5tYXRjaGVzID0gewogCQkJRE1JX01BVENIKERNSV9TWVNfVkVORE9SLCAiQWNlciIpLApAQCAtMjI4LDYgKzIzNywxNSBAQAogCX0sCiAJewogCQkuY2FsbGJhY2sgPSBkbWlfbWF0Y2hlZCwKKwkJLmlkZW50ID0gIkFjZXIgQXNwaXJlIDU2MTAiLAorCQkubWF0Y2hlcyA9IHsKKwkJCURNSV9NQVRDSChETUlfU1lTX1ZFTkRPUiwgIkFjZXIiKSwKKwkJCURNSV9NQVRDSChETUlfUFJPRFVDVF9OQU1FLCAiQXNwaXJlIDU2MTAiKSwKKwkJfSwKKwkJLmRyaXZlcl9kYXRhID0gJnF1aXJrX2FjZXJfdHJhdmVsbWF0ZV8yNDkwLAorCX0sCisJeworCQkuY2FsbGJhY2sgPSBkbWlfbWF0Y2hlZCwKIAkJLmlkZW50ID0gIkFjZXIgQXNwaXJlIDU2MzAiLAogCQkubWF0Y2hlcyA9IHsKIAkJCURNSV9NQVRDSChETUlfU1lTX1ZFTkRPUiwgIkFjZXIiKSwKQEAgLTc2MSwxMSArNzc5LDExIEBACiB9CiAKIHN0YXRpYyBzdHJ1Y3QgbGVkX2NsYXNzZGV2IG1haWxfbGVkID0gewotCS5uYW1lID0gImFjZXItbWFpbDpncmVlbiIsCisJLm5hbWUgPSAiYWNlci13bWk6Om1haWwiLAogCS5icmlnaHRuZXNzX3NldCA9IG1haWxfbGVkX3NldCwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IGFjZXJfbGVkX2luaXQoc3RydWN0IGRldmljZSAqZGV2KQorc3RhdGljIGludCBfX2RldmluaXQgYWNlcl9sZWRfaW5pdChzdHJ1Y3QgZGV2aWNlICpkZXYpCiB7CiAJcmV0dXJuIGxlZF9jbGFzc2Rldl9yZWdpc3RlcihkZXYsICZtYWlsX2xlZCk7CiB9CkBAIC03OTgsNyArODE2LDcgQEAKIAkudXBkYXRlX3N0YXR1cyA9IHVwZGF0ZV9ibF9zdGF0dXMsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCBhY2VyX2JhY2tsaWdodF9pbml0KHN0cnVjdCBkZXZpY2UgKmRldikKK3N0YXRpYyBpbnQgX19kZXZpbml0IGFjZXJfYmFja2xpZ2h0X2luaXQoc3RydWN0IGRldmljZSAqZGV2KQogewogCXN0cnVjdCBiYWNrbGlnaHRfZGV2aWNlICpiZDsKIApAQCAtODE3LDcgKzgzNSw3IEBACiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lkIF9fZXhpdCBhY2VyX2JhY2tsaWdodF9leGl0KHZvaWQpCitzdGF0aWMgdm9pZCBhY2VyX2JhY2tsaWdodF9leGl0KHZvaWQpCiB7CiAJYmFja2xpZ2h0X2RldmljZV91bnJlZ2lzdGVyKGFjZXJfYmFja2xpZ2h0X2RldmljZSk7CiB9CkBAIC0xMDUyLDExICsxMDcwLDEyIEBACiAKIAlpZiAod21pX2hhc19ndWlkKFdNSURfR1VJRDIpICYmIGludGVyZmFjZSkgewogCQlpZiAoQUNQSV9GQUlMVVJFKFdNSURfc2V0X2NhcGFiaWxpdGllcygpKSkgewotCQkJcHJpbnRrKEFDRVJfRVJSICJVbmFibGUgdG8gZGV0ZWN0IGF2YWlsYWJsZSBkZXZpY2VzXG4iKTsKKwkJCXByaW50ayhBQ0VSX0VSUiAiVW5hYmxlIHRvIGRldGVjdCBhdmFpbGFibGUgV01JRCAiCisJCQkJCSJkZXZpY2VzXG4iKTsKIAkJCXJldHVybiAtRU5PREVWOwogCQl9CiAJfSBlbHNlIGlmICghd21pX2hhc19ndWlkKFdNSURfR1VJRDIpICYmIGludGVyZmFjZSkgewotCQlwcmludGsoQUNFUl9FUlIgIlVuYWJsZSB0byBkZXRlY3QgYXZhaWxhYmxlIGRldmljZXNcbiIpOworCQlwcmludGsoQUNFUl9FUlIgIk5vIFdNSUQgZGV2aWNlIGRldGVjdGlvbiBtZXRob2QgZm91bmRcbiIpOwogCQlyZXR1cm4gLUVOT0RFVjsKIAl9CiAKQEAgLTEwNjQsMjEgKzEwODMsMjAgQEAKIAkJaW50ZXJmYWNlID0gJkFNVzBfaW50ZXJmYWNlOwogCiAJCWlmIChBQ1BJX0ZBSUxVUkUoQU1XMF9zZXRfY2FwYWJpbGl0aWVzKCkpKSB7Ci0JCQlwcmludGsoQUNFUl9FUlIgIlVuYWJsZSB0byBkZXRlY3QgYXZhaWxhYmxlIGRldmljZXNcbiIpOworCQkJcHJpbnRrKEFDRVJfRVJSICJVbmFibGUgdG8gZGV0ZWN0IGF2YWlsYWJsZSBBTVcwICIKKwkJCQkJImRldmljZXNcbiIpOwogCQkJcmV0dXJuIC1FTk9ERVY7CiAJCX0KIAl9CiAKLQlpZiAod21pX2hhc19ndWlkKEFNVzBfR1VJRDEpKSB7Ci0JCWlmIChBQ1BJX0ZBSUxVUkUoQU1XMF9maW5kX21haWxsZWQoKSkpCi0JCQlwcmludGsoQUNFUl9FUlIgIlVuYWJsZSB0byBkZXRlY3QgbWFpbCBMRURcbiIpOwotCX0KKwlpZiAod21pX2hhc19ndWlkKEFNVzBfR1VJRDEpKQorCQlBTVcwX2ZpbmRfbWFpbGxlZCgpOwogCiAJZmluZF9xdWlya3MoKTsKIAogCWlmICghaW50ZXJmYWNlKSB7Ci0JCXByaW50ayhBQ0VSX0VSUiAiTm8gb3IgdW5zdXBwb3J0ZWQgV01JIGludGVyZmFjZSwgdW5hYmxlIHRvICIpOwotCQlwcmludGsoS0VSTl9DT05UICJsb2FkLlxuIik7CisJCXByaW50ayhBQ0VSX0VSUiAiTm8gb3IgdW5zdXBwb3J0ZWQgV01JIGludGVyZmFjZSwgdW5hYmxlIHRvICIKKwkJCQkibG9hZFxuIik7CiAJCXJldHVybiAtRU5PREVWOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9taXNjL2F0bWVsLXNzYy5jIGIvZHJpdmVycy9taXNjL2F0bWVsLXNzYy5jCmluZGV4IDA1OGNjYWMuLmUxNzE2NTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWlzYy9hdG1lbC1zc2MuYworKysgYi9kcml2ZXJzL21pc2MvYXRtZWwtc3NjLmMKQEAgLTE1NCw2ICsxNTQsNyBAQAogCS5yZW1vdmUJCT0gX19kZXZleGl0X3Aoc3NjX3JlbW92ZSksCiAJLmRyaXZlcgkJPSB7CiAJCS5uYW1lCQk9ICJzc2MiLAorCQkub3duZXIJCT0gVEhJU19NT0RVTEUsCiAJfSwKIH07CiAKQEAgLTE3MiwzICsxNzMsNCBAQAogTU9EVUxFX0FVVEhPUigiSGFucy1DaHJpc3RpYW4gRWd0dmVkdCA8aGNlZ3R2ZWR0QGF0bWVsLmNvbT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiU1NDIGRyaXZlciBmb3IgQXRtZWwgQVZSMzIgYW5kIEFUOTEiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06c3NjIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21pc2MvYXRtZWxfcHdtLmMgYi9kcml2ZXJzL21pc2MvYXRtZWxfcHdtLmMKaW5kZXggZjhkM2I5YS4uMGQ1Y2UwMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9taXNjL2F0bWVsX3B3bS5jCisrKyBiL2RyaXZlcnMvbWlzYy9hdG1lbF9wd20uYwpAQCAtNDA3LDMgKzQwNyw0IEBACiAKIE1PRFVMRV9ERVNDUklQVElPTigiRHJpdmVyIGZvciBBVDMyL0FUOTEgUFdNIG1vZHVsZSIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybTphdG1lbF9wd20iKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWlzYy9mdWppdHN1LWxhcHRvcC5jIGIvZHJpdmVycy9taXNjL2Z1aml0c3UtbGFwdG9wLmMKaW5kZXggMWNmZDdmMy4uZTJlN2MwNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9taXNjL2Z1aml0c3UtbGFwdG9wLmMKKysrIGIvZHJpdmVycy9taXNjL2Z1aml0c3UtbGFwdG9wLmMKQEAgLTIzMSw3ICsyMzEsNyBAQAogCiAJaWYgKCFkZXZpY2UgfHwgIWFjcGlfZHJpdmVyX2RhdGEoZGV2aWNlKSkKIAkJcmV0dXJuIC1FSU5WQUw7Ci0JZnVqaXRzdS0+YWNwaV9oYW5kbGUgPSAwOworCWZ1aml0c3UtPmFjcGlfaGFuZGxlID0gTlVMTDsKIAogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9taXNjL2hkcHVmdHJzL2hkcHVfY3B1c3RhdGUuYyBiL2RyaXZlcnMvbWlzYy9oZHB1ZnRycy9oZHB1X2NwdXN0YXRlLmMKaW5kZXggYWE4Y2U3YS4uMzAyZTkyNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9taXNjL2hkcHVmdHJzL2hkcHVfY3B1c3RhdGUuYworKysgYi9kcml2ZXJzL21pc2MvaGRwdWZ0cnMvaGRwdV9jcHVzdGF0ZS5jCkBAIC0xNjQsNiArMTY0LDcgQEAKIAkucmVtb3ZlID0gaGRwdV9jcHVzdGF0ZV9yZW1vdmUsCiAJLmRyaXZlciA9IHsKIAkJLm5hbWUgPSBIRFBVX0NQVVNUQVRFX05BTUUsCisJCS5vd25lciA9IFRISVNfTU9EVUxFLAogCX0sCiB9OwogCkBAIC0yNDgsMyArMjQ5LDQgQEAKIAogTU9EVUxFX0FVVEhPUigiQnJpYW4gV2FpdGUiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06IiBIRFBVX0NQVVNUQVRFX05BTUUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9taXNjL2hkcHVmdHJzL2hkcHVfbmV4dXMuYyBiL2RyaXZlcnMvbWlzYy9oZHB1ZnRycy9oZHB1X25leHVzLmMKaW5kZXggMjg4N2IyMS4uMmZhMzZmNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9taXNjL2hkcHVmdHJzL2hkcHVfbmV4dXMuYworKysgYi9kcml2ZXJzL21pc2MvaGRwdWZ0cnMvaGRwdV9uZXh1cy5jCkBAIC01NSw2ICs1NSw3IEBACiAJLnJlbW92ZSA9IGhkcHVfbmV4dXNfcmVtb3ZlLAogCS5kcml2ZXIgPSB7CiAJCS5uYW1lID0gSERQVV9ORVhVU19OQU1FLAorCQkub3duZXIgPSBUSElTX01PRFVMRSwKIAl9LAogfTsKIApAQCAtMTUxLDMgKzE1Miw0IEBACiAKIE1PRFVMRV9BVVRIT1IoIkJyaWFuIFdhaXRlIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOiIgSERQVV9ORVhVU19OQU1FKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWlzYy9pYm1hc20vbW9kdWxlLmMgYi9kcml2ZXJzL21pc2MvaWJtYXNtL21vZHVsZS5jCmluZGV4IDRmOWQ0YTkuLmI1ZjZhZGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWlzYy9pYm1hc20vbW9kdWxlLmMKKysrIGIvZHJpdmVycy9taXNjL2libWFzbS9tb2R1bGUuYwpAQCAtMTA2LDcgKzEwNiw3IEBACiAJc3AtPmlycSA9IHBkZXYtPmlycTsKIAlzcC0+YmFzZV9hZGRyZXNzID0gaW9yZW1hcChwY2lfcmVzb3VyY2Vfc3RhcnQocGRldiwgMCksCiAJCQkJCXBjaV9yZXNvdXJjZV9sZW4ocGRldiwgMCkpOwotCWlmIChzcC0+YmFzZV9hZGRyZXNzID09IDApIHsKKwlpZiAoIXNwLT5iYXNlX2FkZHJlc3MpIHsKIAkJZGV2X2VycihzcC0+ZGV2LCAiRmFpbGVkIHRvIGlvcmVtYXAgcGNpIG1lbW9yeVxuIik7CiAJCXJlc3VsdCA9ICAtRU5PREVWOwogCQlnb3RvIGVycm9yX2lvcmVtYXA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21pc2MvbGtkdG0uYyBiL2RyaXZlcnMvbWlzYy9sa2R0bS5jCmluZGV4IGM4ODQ3MzAuLjFiZmU1ZDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWlzYy9sa2R0bS5jCisrKyBiL2RyaXZlcnMvbWlzYy9sa2R0bS5jCkBAIC0xOTcsNyArMTk3LDcgQEAKIHsKIAlpbnQgaTsKIAotCWlmIChjcG9pbnRfbmFtZSA9PSBJTlZBTElEIHx8IGNwb2ludF90eXBlID09IE5PTkUgfHwKKwlpZiAoY3BvaW50X25hbWUgPT0gTlVMTCB8fCBjcG9pbnRfdHlwZSA9PSBOVUxMIHx8CiAJCQkJCWNwb2ludF9jb3VudCA8IDEgfHwgcmVjdXJfY291bnQgPCAxKQogCQlyZXR1cm4gLUVJTlZBTDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9taXNjL3NvbnktbGFwdG9wLmMgYi9kcml2ZXJzL21pc2Mvc29ueS1sYXB0b3AuYwppbmRleCA4OTllM2Y3Li4wMmZmM2QxIDEwMDY0NAotLS0gYS9kcml2ZXJzL21pc2Mvc29ueS1sYXB0b3AuYworKysgYi9kcml2ZXJzL21pc2Mvc29ueS1sYXB0b3AuYwpAQCAtMzE1LDcgKzMxNSw3IEBACiAJCWJyZWFrOwogCiAJZGVmYXVsdDoKLQkJaWYgKGV2ZW50ID4gQVJSQVlfU0laRShzb255X2xhcHRvcF9pbnB1dF9pbmRleCkpIHsKKwkJaWYgKGV2ZW50ID49IEFSUkFZX1NJWkUoc29ueV9sYXB0b3BfaW5wdXRfaW5kZXgpKSB7CiAJCQlkcHJpbnRrKCJzb255X2xhcHRvcF9yZXBvcnRfaW5wdXRfZXZlbnQsIGV2ZW50IG5vdCBrbm93bjogJWRcbiIsIGV2ZW50KTsKIAkJCWJyZWFrOwogCQl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9jb3JlL01ha2VmaWxlIGIvZHJpdmVycy9tbWMvY29yZS9NYWtlZmlsZQppbmRleCA0OTg1ODA3Li4xOWExYTI1IDEwMDY0NAotLS0gYS9kcml2ZXJzL21tYy9jb3JlL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvbW1jL2NvcmUvTWFrZWZpbGUKQEAgLTcsNyArNyw3IEBACiBlbmRpZgogCiBvYmotJChDT05GSUdfTU1DKQkJKz0gbW1jX2NvcmUubwotbW1jX2NvcmUteQkJCTo9IGNvcmUubyBzeXNmcy5vIGJ1cy5vIGhvc3QubyBcCittbWNfY29yZS15CQkJOj0gY29yZS5vIGJ1cy5vIGhvc3QubyBcCiAJCQkJICAgbW1jLm8gbW1jX29wcy5vIHNkLm8gc2Rfb3BzLm8gXAogCQkJCSAgIHNkaW8ubyBzZGlvX29wcy5vIHNkaW9fYnVzLm8gXAogCQkJCSAgIHNkaW9fY2lzLm8gc2Rpb19pby5vIHNkaW9faXJxLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbW1jL2NvcmUvYnVzLmMgYi9kcml2ZXJzL21tYy9jb3JlL2J1cy5jCmluZGV4IGIwYzIyY2EuLmZkOTViMTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbW1jL2NvcmUvYnVzLmMKKysrIGIvZHJpdmVycy9tbWMvY29yZS9idXMuYwpAQCAtMTcsNyArMTcsNiBAQAogI2luY2x1ZGUgPGxpbnV4L21tYy9jYXJkLmg+CiAjaW5jbHVkZSA8bGludXgvbW1jL2hvc3QuaD4KIAotI2luY2x1ZGUgInN5c2ZzLmgiCiAjaW5jbHVkZSAiY29yZS5oIgogI2luY2x1ZGUgInNkaW9fY2lzLmgiCiAjaW5jbHVkZSAiYnVzLmgiCkBAIC00Myw3ICs0Miw3IEBACiB9CiAKIHN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBtbWNfZGV2X2F0dHJzW10gPSB7Ci0JTU1DX0FUVFJfUk8odHlwZSksCisJX19BVFRSKHR5cGUsIFNfSVJVR08sIG1tY190eXBlX3Nob3csIE5VTEwpLAogCV9fQVRUUl9OVUxMLAogfTsKIApAQCAtMTg5LDcgKzE4OCw3IEBACiAvKgogICogQWxsb2NhdGUgYW5kIGluaXRpYWxpc2UgYSBuZXcgTU1DIGNhcmQgc3RydWN0dXJlLgogICovCi1zdHJ1Y3QgbW1jX2NhcmQgKm1tY19hbGxvY19jYXJkKHN0cnVjdCBtbWNfaG9zdCAqaG9zdCkKK3N0cnVjdCBtbWNfY2FyZCAqbW1jX2FsbG9jX2NhcmQoc3RydWN0IG1tY19ob3N0ICpob3N0LCBzdHJ1Y3QgZGV2aWNlX3R5cGUgKnR5cGUpCiB7CiAJc3RydWN0IG1tY19jYXJkICpjYXJkOwogCkBAIC0yMDQsNiArMjAzLDcgQEAKIAljYXJkLT5kZXYucGFyZW50ID0gbW1jX2NsYXNzZGV2KGhvc3QpOwogCWNhcmQtPmRldi5idXMgPSAmbW1jX2J1c190eXBlOwogCWNhcmQtPmRldi5yZWxlYXNlID0gbW1jX3JlbGVhc2VfY2FyZDsKKwljYXJkLT5kZXYudHlwZSA9IHR5cGU7CiAKIAlyZXR1cm4gY2FyZDsKIH0KQEAgLTI0OCwyNCArMjQ4LDEwIEBACiAJCQl0eXBlLCBjYXJkLT5yY2EpOwogCX0KIAotCWNhcmQtPmRldi51ZXZlbnRfc3VwcHJlc3MgPSAxOwotCiAJcmV0ID0gZGV2aWNlX2FkZCgmY2FyZC0+ZGV2KTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JaWYgKGNhcmQtPmhvc3QtPmJ1c19vcHMtPnN5c2ZzX2FkZCkgewotCQlyZXQgPSBjYXJkLT5ob3N0LT5idXNfb3BzLT5zeXNmc19hZGQoY2FyZC0+aG9zdCwgY2FyZCk7Ci0JCWlmIChyZXQpIHsKLQkJCWRldmljZV9kZWwoJmNhcmQtPmRldik7Ci0JCQlyZXR1cm4gcmV0OwotCQkgfQotCX0KLQotCWNhcmQtPmRldi51ZXZlbnRfc3VwcHJlc3MgPSAwOwotCi0Ja29iamVjdF91ZXZlbnQoJmNhcmQtPmRldi5rb2JqLCBLT0JKX0FERCk7Ci0KIAltbWNfY2FyZF9zZXRfcHJlc2VudChjYXJkKTsKIAogCXJldHVybiAwOwpAQCAtMjg1LDkgKzI3MSw2IEBACiAJCQlwcmludGsoS0VSTl9JTkZPICIlczogY2FyZCAlMDR4IHJlbW92ZWRcbiIsCiAJCQkJbW1jX2hvc3RuYW1lKGNhcmQtPmhvc3QpLCBjYXJkLT5yY2EpOwogCQl9Ci0KLQkJaWYgKGNhcmQtPmhvc3QtPmJ1c19vcHMtPnN5c2ZzX3JlbW92ZSkKLQkJCWNhcmQtPmhvc3QtPmJ1c19vcHMtPnN5c2ZzX3JlbW92ZShjYXJkLT5ob3N0LCBjYXJkKTsKIAkJZGV2aWNlX2RlbCgmY2FyZC0+ZGV2KTsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbW1jL2NvcmUvYnVzLmggYi9kcml2ZXJzL21tYy9jb3JlL2J1cy5oCmluZGV4IDRmMzU0MzEuLjE4MTc4NzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbW1jL2NvcmUvYnVzLmgKKysrIGIvZHJpdmVycy9tbWMvY29yZS9idXMuaApAQCAtMTEsNyArMTEsMTYgQEAKICNpZm5kZWYgX01NQ19DT1JFX0JVU19ICiAjZGVmaW5lIF9NTUNfQ09SRV9CVVNfSAogCi1zdHJ1Y3QgbW1jX2NhcmQgKm1tY19hbGxvY19jYXJkKHN0cnVjdCBtbWNfaG9zdCAqaG9zdCk7CisjZGVmaW5lIE1NQ19ERVZfQVRUUihuYW1lLCBmbXQsIGFyZ3MuLi4pCQkJCQlcCitzdGF0aWMgc3NpemVfdCBtbWNfIyNuYW1lIyNfc2hvdyAoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQlcCit7CQkJCQkJCQkJCVwKKwlzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQgPSBjb250YWluZXJfb2YoZGV2LCBzdHJ1Y3QgbW1jX2NhcmQsIGRldik7CVwKKwlyZXR1cm4gc3ByaW50ZihidWYsIGZtdCwgYXJncyk7CQkJCQkJXAorfQkJCQkJCQkJCQlcCitzdGF0aWMgREVWSUNFX0FUVFIobmFtZSwgU19JUlVHTywgbW1jXyMjbmFtZSMjX3Nob3csIE5VTEwpCisKK3N0cnVjdCBtbWNfY2FyZCAqbW1jX2FsbG9jX2NhcmQoc3RydWN0IG1tY19ob3N0ICpob3N0LAorCXN0cnVjdCBkZXZpY2VfdHlwZSAqdHlwZSk7CiBpbnQgbW1jX2FkZF9jYXJkKHN0cnVjdCBtbWNfY2FyZCAqY2FyZCk7CiB2b2lkIG1tY19yZW1vdmVfY2FyZChzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9jb3JlL2NvcmUuaCBiL2RyaXZlcnMvbW1jL2NvcmUvY29yZS5oCmluZGV4IDM5ZGFmMmYuLmNmYThlMTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbW1jL2NvcmUvY29yZS5oCisrKyBiL2RyaXZlcnMvbW1jL2NvcmUvY29yZS5oCkBAIC0xOCw4ICsxOCw2IEBACiBzdHJ1Y3QgbW1jX2J1c19vcHMgewogCXZvaWQgKCpyZW1vdmUpKHN0cnVjdCBtbWNfaG9zdCAqKTsKIAl2b2lkICgqZGV0ZWN0KShzdHJ1Y3QgbW1jX2hvc3QgKik7Ci0JaW50ICgqc3lzZnNfYWRkKShzdHJ1Y3QgbW1jX2hvc3QgKiwgc3RydWN0IG1tY19jYXJkICpjYXJkKTsKLQl2b2lkICgqc3lzZnNfcmVtb3ZlKShzdHJ1Y3QgbW1jX2hvc3QgKiwgc3RydWN0IG1tY19jYXJkICpjYXJkKTsKIAl2b2lkICgqc3VzcGVuZCkoc3RydWN0IG1tY19ob3N0ICopOwogCXZvaWQgKCpyZXN1bWUpKHN0cnVjdCBtbWNfaG9zdCAqKTsKIH07CmRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9jb3JlL21tYy5jIGIvZHJpdmVycy9tbWMvY29yZS9tbWMuYwppbmRleCA2OGMwZTNiLi4zZGEyOWVlIDEwMDY0NAotLS0gYS9kcml2ZXJzL21tYy9jb3JlL21tYy5jCisrKyBiL2RyaXZlcnMvbW1jL2NvcmUvbW1jLmMKQEAgLTE3LDcgKzE3LDYgQEAKICNpbmNsdWRlIDxsaW51eC9tbWMvbW1jLmg+CiAKICNpbmNsdWRlICJjb3JlLmgiCi0jaW5jbHVkZSAic3lzZnMuaCIKICNpbmNsdWRlICJidXMuaCIKICNpbmNsdWRlICJtbWNfb3BzLmgiCiAKQEAgLTI0OCw2ICsyNDcsNDQgQEAKIAlyZXR1cm4gZXJyOwogfQogCitNTUNfREVWX0FUVFIoY2lkLCAiJTA4eCUwOHglMDh4JTA4eFxuIiwgY2FyZC0+cmF3X2NpZFswXSwgY2FyZC0+cmF3X2NpZFsxXSwKKwljYXJkLT5yYXdfY2lkWzJdLCBjYXJkLT5yYXdfY2lkWzNdKTsKK01NQ19ERVZfQVRUUihjc2QsICIlMDh4JTA4eCUwOHglMDh4XG4iLCBjYXJkLT5yYXdfY3NkWzBdLCBjYXJkLT5yYXdfY3NkWzFdLAorCWNhcmQtPnJhd19jc2RbMl0sIGNhcmQtPnJhd19jc2RbM10pOworTU1DX0RFVl9BVFRSKGRhdGUsICIlMDJkLyUwNGRcbiIsIGNhcmQtPmNpZC5tb250aCwgY2FyZC0+Y2lkLnllYXIpOworTU1DX0RFVl9BVFRSKGZ3cmV2LCAiMHgleFxuIiwgY2FyZC0+Y2lkLmZ3cmV2KTsKK01NQ19ERVZfQVRUUihod3JldiwgIjB4JXhcbiIsIGNhcmQtPmNpZC5od3Jldik7CitNTUNfREVWX0FUVFIobWFuZmlkLCAiMHglMDZ4XG4iLCBjYXJkLT5jaWQubWFuZmlkKTsKK01NQ19ERVZfQVRUUihuYW1lLCAiJXNcbiIsIGNhcmQtPmNpZC5wcm9kX25hbWUpOworTU1DX0RFVl9BVFRSKG9lbWlkLCAiMHglMDR4XG4iLCBjYXJkLT5jaWQub2VtaWQpOworTU1DX0RFVl9BVFRSKHNlcmlhbCwgIjB4JTA4eFxuIiwgY2FyZC0+Y2lkLnNlcmlhbCk7CisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICptbWNfc3RkX2F0dHJzW10gPSB7CisJJmRldl9hdHRyX2NpZC5hdHRyLAorCSZkZXZfYXR0cl9jc2QuYXR0ciwKKwkmZGV2X2F0dHJfZGF0ZS5hdHRyLAorCSZkZXZfYXR0cl9md3Jldi5hdHRyLAorCSZkZXZfYXR0cl9od3Jldi5hdHRyLAorCSZkZXZfYXR0cl9tYW5maWQuYXR0ciwKKwkmZGV2X2F0dHJfbmFtZS5hdHRyLAorCSZkZXZfYXR0cl9vZW1pZC5hdHRyLAorCSZkZXZfYXR0cl9zZXJpYWwuYXR0ciwKKwlOVUxMLAorfTsKKworc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgbW1jX3N0ZF9hdHRyX2dyb3VwID0geworCS5hdHRycyA9IG1tY19zdGRfYXR0cnMsCit9OworCitzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqbW1jX2F0dHJfZ3JvdXBzW10gPSB7CisJJm1tY19zdGRfYXR0cl9ncm91cCwKKwlOVUxMLAorfTsKKworc3RhdGljIHN0cnVjdCBkZXZpY2VfdHlwZSBtbWNfdHlwZSA9IHsKKwkuZ3JvdXBzID0gbW1jX2F0dHJfZ3JvdXBzLAorfTsKKwogLyoKICAqIEhhbmRsZSB0aGUgZGV0ZWN0aW9uIGFuZCBpbml0aWFsaXNhdGlvbiBvZiBhIGNhcmQuCiAgKgpAQCAtMzA4LDcgKzM0NSw3IEBACiAJCS8qCiAJCSAqIEFsbG9jYXRlIGNhcmQgc3RydWN0dXJlLgogCQkgKi8KLQkJY2FyZCA9IG1tY19hbGxvY19jYXJkKGhvc3QpOworCQljYXJkID0gbW1jX2FsbG9jX2NhcmQoaG9zdCwgJm1tY190eXBlKTsKIAkJaWYgKElTX0VSUihjYXJkKSkgewogCQkJZXJyID0gUFRSX0VSUihjYXJkKTsKIAkJCWdvdG8gZXJyOwpAQCAtNDU5LDUzICs0OTYsNiBAQAogCX0KIH0KIAotTU1DX0FUVFJfRk4oY2lkLCAiJTA4eCUwOHglMDh4JTA4eFxuIiwgY2FyZC0+cmF3X2NpZFswXSwgY2FyZC0+cmF3X2NpZFsxXSwKLQljYXJkLT5yYXdfY2lkWzJdLCBjYXJkLT5yYXdfY2lkWzNdKTsKLU1NQ19BVFRSX0ZOKGNzZCwgIiUwOHglMDh4JTA4eCUwOHhcbiIsIGNhcmQtPnJhd19jc2RbMF0sIGNhcmQtPnJhd19jc2RbMV0sCi0JY2FyZC0+cmF3X2NzZFsyXSwgY2FyZC0+cmF3X2NzZFszXSk7Ci1NTUNfQVRUUl9GTihkYXRlLCAiJTAyZC8lMDRkXG4iLCBjYXJkLT5jaWQubW9udGgsIGNhcmQtPmNpZC55ZWFyKTsKLU1NQ19BVFRSX0ZOKGZ3cmV2LCAiMHgleFxuIiwgY2FyZC0+Y2lkLmZ3cmV2KTsKLU1NQ19BVFRSX0ZOKGh3cmV2LCAiMHgleFxuIiwgY2FyZC0+Y2lkLmh3cmV2KTsKLU1NQ19BVFRSX0ZOKG1hbmZpZCwgIjB4JTA2eFxuIiwgY2FyZC0+Y2lkLm1hbmZpZCk7Ci1NTUNfQVRUUl9GTihuYW1lLCAiJXNcbiIsIGNhcmQtPmNpZC5wcm9kX25hbWUpOwotTU1DX0FUVFJfRk4ob2VtaWQsICIweCUwNHhcbiIsIGNhcmQtPmNpZC5vZW1pZCk7Ci1NTUNfQVRUUl9GTihzZXJpYWwsICIweCUwOHhcbiIsIGNhcmQtPmNpZC5zZXJpYWwpOwotCi1zdGF0aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgbW1jX2Rldl9hdHRyc1tdID0gewotCU1NQ19BVFRSX1JPKGNpZCksCi0JTU1DX0FUVFJfUk8oY3NkKSwKLQlNTUNfQVRUUl9STyhkYXRlKSwKLQlNTUNfQVRUUl9STyhmd3JldiksCi0JTU1DX0FUVFJfUk8oaHdyZXYpLAotCU1NQ19BVFRSX1JPKG1hbmZpZCksCi0JTU1DX0FUVFJfUk8obmFtZSksCi0JTU1DX0FUVFJfUk8ob2VtaWQpLAotCU1NQ19BVFRSX1JPKHNlcmlhbCksCi0JX19BVFRSX05VTEwsCi19OwotCi0vKgotICogQWRkcyBzeXNmcyBlbnRyaWVzIGFzIHJlbGV2YW50LgotICovCi1zdGF0aWMgaW50IG1tY19zeXNmc19hZGQoc3RydWN0IG1tY19ob3N0ICpob3N0LCBzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpCi17Ci0JaW50IHJldDsKLQotCXJldCA9IG1tY19hZGRfYXR0cnMoY2FyZCwgbW1jX2Rldl9hdHRycyk7Ci0JaWYgKHJldCA8IDApCi0JCXJldHVybiByZXQ7Ci0KLQlyZXR1cm4gMDsKLX0KLQotLyoKLSAqIFJlbW92ZXMgdGhlIHN5c2ZzIGVudHJpZXMgYWRkZWQgYnkgbW1jX3N5c2ZzX2FkZCgpLgotICovCi1zdGF0aWMgdm9pZCBtbWNfc3lzZnNfcmVtb3ZlKHN0cnVjdCBtbWNfaG9zdCAqaG9zdCwgc3RydWN0IG1tY19jYXJkICpjYXJkKQotewotCW1tY19yZW1vdmVfYXR0cnMoY2FyZCwgbW1jX2Rldl9hdHRycyk7Ci19Ci0KICNpZmRlZiBDT05GSUdfTU1DX1VOU0FGRV9SRVNVTUUKIAogLyoKQEAgLTU2MCw4ICs1NTAsNiBAQAogc3RhdGljIGNvbnN0IHN0cnVjdCBtbWNfYnVzX29wcyBtbWNfb3BzID0gewogCS5yZW1vdmUgPSBtbWNfcmVtb3ZlLAogCS5kZXRlY3QgPSBtbWNfZGV0ZWN0LAotCS5zeXNmc19hZGQgPSBtbWNfc3lzZnNfYWRkLAotCS5zeXNmc19yZW1vdmUgPSBtbWNfc3lzZnNfcmVtb3ZlLAogCS5zdXNwZW5kID0gbW1jX3N1c3BlbmQsCiAJLnJlc3VtZSA9IG1tY19yZXN1bWUsCiB9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tbWMvY29yZS9zZC5jIGIvZHJpdmVycy9tbWMvY29yZS9zZC5jCmluZGV4IGQxYzFlMGYuLjdlZjNiMTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbW1jL2NvcmUvc2QuYworKysgYi9kcml2ZXJzL21tYy9jb3JlL3NkLmMKQEAgLTE4LDcgKzE4LDYgQEAKICNpbmNsdWRlIDxsaW51eC9tbWMvc2QuaD4KIAogI2luY2x1ZGUgImNvcmUuaCIKLSNpbmNsdWRlICJzeXNmcy5oIgogI2luY2x1ZGUgImJ1cy5oIgogI2luY2x1ZGUgIm1tY19vcHMuaCIKICNpbmNsdWRlICJzZF9vcHMuaCIKQEAgLTI4Myw2ICsyODIsNDcgQEAKIAlyZXR1cm4gZXJyOwogfQogCitNTUNfREVWX0FUVFIoY2lkLCAiJTA4eCUwOHglMDh4JTA4eFxuIiwgY2FyZC0+cmF3X2NpZFswXSwgY2FyZC0+cmF3X2NpZFsxXSwKKwljYXJkLT5yYXdfY2lkWzJdLCBjYXJkLT5yYXdfY2lkWzNdKTsKK01NQ19ERVZfQVRUUihjc2QsICIlMDh4JTA4eCUwOHglMDh4XG4iLCBjYXJkLT5yYXdfY3NkWzBdLCBjYXJkLT5yYXdfY3NkWzFdLAorCWNhcmQtPnJhd19jc2RbMl0sIGNhcmQtPnJhd19jc2RbM10pOworTU1DX0RFVl9BVFRSKHNjciwgIiUwOHglMDh4XG4iLCBjYXJkLT5yYXdfc2NyWzBdLCBjYXJkLT5yYXdfc2NyWzFdKTsKK01NQ19ERVZfQVRUUihkYXRlLCAiJTAyZC8lMDRkXG4iLCBjYXJkLT5jaWQubW9udGgsIGNhcmQtPmNpZC55ZWFyKTsKK01NQ19ERVZfQVRUUihmd3JldiwgIjB4JXhcbiIsIGNhcmQtPmNpZC5md3Jldik7CitNTUNfREVWX0FUVFIoaHdyZXYsICIweCV4XG4iLCBjYXJkLT5jaWQuaHdyZXYpOworTU1DX0RFVl9BVFRSKG1hbmZpZCwgIjB4JTA2eFxuIiwgY2FyZC0+Y2lkLm1hbmZpZCk7CitNTUNfREVWX0FUVFIobmFtZSwgIiVzXG4iLCBjYXJkLT5jaWQucHJvZF9uYW1lKTsKK01NQ19ERVZfQVRUUihvZW1pZCwgIjB4JTA0eFxuIiwgY2FyZC0+Y2lkLm9lbWlkKTsKK01NQ19ERVZfQVRUUihzZXJpYWwsICIweCUwOHhcbiIsIGNhcmQtPmNpZC5zZXJpYWwpOworCisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpzZF9zdGRfYXR0cnNbXSA9IHsKKwkmZGV2X2F0dHJfY2lkLmF0dHIsCisJJmRldl9hdHRyX2NzZC5hdHRyLAorCSZkZXZfYXR0cl9zY3IuYXR0ciwKKwkmZGV2X2F0dHJfZGF0ZS5hdHRyLAorCSZkZXZfYXR0cl9md3Jldi5hdHRyLAorCSZkZXZfYXR0cl9od3Jldi5hdHRyLAorCSZkZXZfYXR0cl9tYW5maWQuYXR0ciwKKwkmZGV2X2F0dHJfbmFtZS5hdHRyLAorCSZkZXZfYXR0cl9vZW1pZC5hdHRyLAorCSZkZXZfYXR0cl9zZXJpYWwuYXR0ciwKKwlOVUxMLAorfTsKKworc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgc2Rfc3RkX2F0dHJfZ3JvdXAgPSB7CisJLmF0dHJzID0gc2Rfc3RkX2F0dHJzLAorfTsKKworc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKnNkX2F0dHJfZ3JvdXBzW10gPSB7CisJJnNkX3N0ZF9hdHRyX2dyb3VwLAorCU5VTEwsCit9OworCitzdGF0aWMgc3RydWN0IGRldmljZV90eXBlIHNkX3R5cGUgPSB7CisJLmdyb3VwcyA9IHNkX2F0dHJfZ3JvdXBzLAorfTsKKwogLyoKICAqIEhhbmRsZSB0aGUgZGV0ZWN0aW9uIGFuZCBpbml0aWFsaXNhdGlvbiBvZiBhIGNhcmQuCiAgKgpAQCAtMzUyLDcgKzM5Miw3IEBACiAJCS8qCiAJCSAqIEFsbG9jYXRlIGNhcmQgc3RydWN0dXJlLgogCQkgKi8KLQkJY2FyZCA9IG1tY19hbGxvY19jYXJkKGhvc3QpOworCQljYXJkID0gbW1jX2FsbG9jX2NhcmQoaG9zdCwgJnNkX3R5cGUpOwogCQlpZiAoSVNfRVJSKGNhcmQpKSB7CiAJCQllcnIgPSBQVFJfRVJSKGNhcmQpOwogCQkJZ290byBlcnI7CkBAIC01MTgsNTUgKzU1OCw2IEBACiAJfQogfQogCi1NTUNfQVRUUl9GTihjaWQsICIlMDh4JTA4eCUwOHglMDh4XG4iLCBjYXJkLT5yYXdfY2lkWzBdLCBjYXJkLT5yYXdfY2lkWzFdLAotCWNhcmQtPnJhd19jaWRbMl0sIGNhcmQtPnJhd19jaWRbM10pOwotTU1DX0FUVFJfRk4oY3NkLCAiJTA4eCUwOHglMDh4JTA4eFxuIiwgY2FyZC0+cmF3X2NzZFswXSwgY2FyZC0+cmF3X2NzZFsxXSwKLQljYXJkLT5yYXdfY3NkWzJdLCBjYXJkLT5yYXdfY3NkWzNdKTsKLU1NQ19BVFRSX0ZOKHNjciwgIiUwOHglMDh4XG4iLCBjYXJkLT5yYXdfc2NyWzBdLCBjYXJkLT5yYXdfc2NyWzFdKTsKLU1NQ19BVFRSX0ZOKGRhdGUsICIlMDJkLyUwNGRcbiIsIGNhcmQtPmNpZC5tb250aCwgY2FyZC0+Y2lkLnllYXIpOwotTU1DX0FUVFJfRk4oZndyZXYsICIweCV4XG4iLCBjYXJkLT5jaWQuZndyZXYpOwotTU1DX0FUVFJfRk4oaHdyZXYsICIweCV4XG4iLCBjYXJkLT5jaWQuaHdyZXYpOwotTU1DX0FUVFJfRk4obWFuZmlkLCAiMHglMDZ4XG4iLCBjYXJkLT5jaWQubWFuZmlkKTsKLU1NQ19BVFRSX0ZOKG5hbWUsICIlc1xuIiwgY2FyZC0+Y2lkLnByb2RfbmFtZSk7Ci1NTUNfQVRUUl9GTihvZW1pZCwgIjB4JTA0eFxuIiwgY2FyZC0+Y2lkLm9lbWlkKTsKLU1NQ19BVFRSX0ZOKHNlcmlhbCwgIjB4JTA4eFxuIiwgY2FyZC0+Y2lkLnNlcmlhbCk7Ci0KLXN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBtbWNfc2RfZGV2X2F0dHJzW10gPSB7Ci0JTU1DX0FUVFJfUk8oY2lkKSwKLQlNTUNfQVRUUl9STyhjc2QpLAotCU1NQ19BVFRSX1JPKHNjciksCi0JTU1DX0FUVFJfUk8oZGF0ZSksCi0JTU1DX0FUVFJfUk8oZndyZXYpLAotCU1NQ19BVFRSX1JPKGh3cmV2KSwKLQlNTUNfQVRUUl9STyhtYW5maWQpLAotCU1NQ19BVFRSX1JPKG5hbWUpLAotCU1NQ19BVFRSX1JPKG9lbWlkKSwKLQlNTUNfQVRUUl9STyhzZXJpYWwpLAotCV9fQVRUUl9OVUxMLAotfTsKLQotLyoKLSAqIEFkZHMgc3lzZnMgZW50cmllcyBhcyByZWxldmFudC4KLSAqLwotc3RhdGljIGludCBtbWNfc2Rfc3lzZnNfYWRkKHN0cnVjdCBtbWNfaG9zdCAqaG9zdCwgc3RydWN0IG1tY19jYXJkICpjYXJkKQotewotCWludCByZXQ7Ci0KLQlyZXQgPSBtbWNfYWRkX2F0dHJzKGNhcmQsIG1tY19zZF9kZXZfYXR0cnMpOwotCWlmIChyZXQgPCAwKQotCQlyZXR1cm4gcmV0OwotCi0JcmV0dXJuIDA7Ci19Ci0KLS8qCi0gKiBSZW1vdmVzIHRoZSBzeXNmcyBlbnRyaWVzIGFkZGVkIGJ5IG1tY19zeXNmc19hZGQoKS4KLSAqLwotc3RhdGljIHZvaWQgbW1jX3NkX3N5c2ZzX3JlbW92ZShzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QsIHN0cnVjdCBtbWNfY2FyZCAqY2FyZCkKLXsKLQltbWNfcmVtb3ZlX2F0dHJzKGNhcmQsIG1tY19zZF9kZXZfYXR0cnMpOwotfQotCiAjaWZkZWYgQ09ORklHX01NQ19VTlNBRkVfUkVTVU1FCiAKIC8qCkBAIC02MjEsOCArNjEyLDYgQEAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbW1jX2J1c19vcHMgbW1jX3NkX29wcyA9IHsKIAkucmVtb3ZlID0gbW1jX3NkX3JlbW92ZSwKIAkuZGV0ZWN0ID0gbW1jX3NkX2RldGVjdCwKLQkuc3lzZnNfYWRkID0gbW1jX3NkX3N5c2ZzX2FkZCwKLQkuc3lzZnNfcmVtb3ZlID0gbW1jX3NkX3N5c2ZzX3JlbW92ZSwKIAkuc3VzcGVuZCA9IG1tY19zZF9zdXNwZW5kLAogCS5yZXN1bWUgPSBtbWNfc2RfcmVzdW1lLAogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbW1jL2NvcmUvc2Rpby5jIGIvZHJpdmVycy9tbWMvY29yZS9zZGlvLmMKaW5kZXggODdhNTBmNC4uNGVhYjc5ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tbWMvY29yZS9zZGlvLmMKKysrIGIvZHJpdmVycy9tbWMvY29yZS9zZGlvLmMKQEAgLTI4Nyw3ICsyODcsNyBAQAogCS8qCiAJICogQWxsb2NhdGUgY2FyZCBzdHJ1Y3R1cmUuCiAJICovCi0JY2FyZCA9IG1tY19hbGxvY19jYXJkKGhvc3QpOworCWNhcmQgPSBtbWNfYWxsb2NfY2FyZChob3N0LCBOVUxMKTsKIAlpZiAoSVNfRVJSKGNhcmQpKSB7CiAJCWVyciA9IFBUUl9FUlIoY2FyZCk7CiAJCWdvdG8gZXJyOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tbWMvY29yZS9zeXNmcy5jIGIvZHJpdmVycy9tbWMvY29yZS9zeXNmcy5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMGE5N2U3Li4wMDAwMDAwCi0tLSBhL2RyaXZlcnMvbW1jL2NvcmUvc3lzZnMuYworKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiAgbGludXgvZHJpdmVycy9tbWMvY29yZS9zeXNmcy5jCi0gKgotICogIENvcHlyaWdodCAoQykgMjAwMyBSdXNzZWxsIEtpbmcsIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKiAgQ29weXJpZ2h0IDIwMDcgUGllcnJlIE9zc21hbgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcwotICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCi0gKgotICogIE1NQyBzeXNmcy9kcml2ZXIgbW9kZWwgc3VwcG9ydC4KLSAqLwotI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPgotCi0jaW5jbHVkZSA8bGludXgvbW1jL2NhcmQuaD4KLQotI2luY2x1ZGUgInN5c2ZzLmgiCi0KLWludCBtbWNfYWRkX2F0dHJzKHN0cnVjdCBtbWNfY2FyZCAqY2FyZCwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHJzKQotewotCWludCBlcnJvciA9IDA7Ci0JaW50IGk7Ci0KLQlmb3IgKGkgPSAwOyBhdHRyX25hbWUoYXR0cnNbaV0pOyBpKyspIHsKLQkJZXJyb3IgPSBkZXZpY2VfY3JlYXRlX2ZpbGUoJmNhcmQtPmRldiwgJmF0dHJzW2ldKTsKLQkJaWYgKGVycm9yKSB7Ci0JCQl3aGlsZSAoLS1pID49IDApCi0JCQkJZGV2aWNlX3JlbW92ZV9maWxlKCZjYXJkLT5kZXYsICZhdHRyc1tpXSk7Ci0JCQlicmVhazsKLQkJfQotCX0KLQotCXJldHVybiBlcnJvcjsKLX0KLQotdm9pZCBtbWNfcmVtb3ZlX2F0dHJzKHN0cnVjdCBtbWNfY2FyZCAqY2FyZCwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHJzKQotewotCWludCBpOwotCi0JZm9yIChpID0gMDsgYXR0cl9uYW1lKGF0dHJzW2ldKTsgaSsrKQotCQlkZXZpY2VfcmVtb3ZlX2ZpbGUoJmNhcmQtPmRldiwgJmF0dHJzW2ldKTsKLX0KLQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tbWMvY29yZS9zeXNmcy5oIGIvZHJpdmVycy9tbWMvY29yZS9zeXNmcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YjhmNjcwLi4wMDAwMDAwCi0tLSBhL2RyaXZlcnMvbW1jL2NvcmUvc3lzZnMuaAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLS8qCi0gKiAgbGludXgvZHJpdmVycy9tbWMvY29yZS9zeXNmcy5oCi0gKgotICogIENvcHlyaWdodCAoQykgMjAwMyBSdXNzZWxsIEtpbmcsIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKiAgQ29weXJpZ2h0IDIwMDcgUGllcnJlIE9zc21hbgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcwotICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCi0gKi8KLSNpZm5kZWYgX01NQ19DT1JFX1NZU0ZTX0gKLSNkZWZpbmUgX01NQ19DT1JFX1NZU0ZTX0gKLQotI2RlZmluZSBNTUNfQVRUUl9GTihuYW1lLCBmbXQsIGFyZ3MuLi4pCQkJCQlcCi1zdGF0aWMgc3NpemVfdCBtbWNfIyNuYW1lIyNfc2hvdyAoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQlcCi17CQkJCQkJCQkJXAotCXN0cnVjdCBtbWNfY2FyZCAqY2FyZCA9IGNvbnRhaW5lcl9vZihkZXYsIHN0cnVjdCBtbWNfY2FyZCwgZGV2KTtcCi0JcmV0dXJuIHNwcmludGYoYnVmLCBmbXQsIGFyZ3MpOwkJCQkJXAotfQotCi0jZGVmaW5lIE1NQ19BVFRSX1JPKG5hbWUpIF9fQVRUUihuYW1lLCBTX0lSVUdPLCBtbWNfIyNuYW1lIyNfc2hvdywgTlVMTCkKLQotaW50IG1tY19hZGRfYXR0cnMoc3RydWN0IG1tY19jYXJkICpjYXJkLCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cnMpOwotdm9pZCBtbWNfcmVtb3ZlX2F0dHJzKHN0cnVjdCBtbWNfY2FyZCAqY2FyZCwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHJzKTsKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9ob3N0L2F0OTFfbWNpLmMgYi9kcml2ZXJzL21tYy9ob3N0L2F0OTFfbWNpLmMKaW5kZXggMjFhY2VjYy4uYTI4ZmMyZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tbWMvaG9zdC9hdDkxX21jaS5jCisrKyBiL2RyaXZlcnMvbW1jL2hvc3QvYXQ5MV9tY2kuYwpAQCAtMTA3NSwzICsxMDc1LDQgQEAKIE1PRFVMRV9ERVNDUklQVElPTigiQVQ5MSBNdWx0aW1lZGlhIENhcmQgSW50ZXJmYWNlIGRyaXZlciIpOwogTU9EVUxFX0FVVEhPUigiTmljayBSYW5kZWxsIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOmF0OTFfbWNpIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9ob3N0L2F1MXhtbWMuYyBiL2RyaXZlcnMvbW1jL2hvc3QvYXUxeG1tYy5jCmluZGV4IGMzOTI2ZWIuLmNjNWY3YmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbW1jL2hvc3QvYXUxeG1tYy5jCisrKyBiL2RyaXZlcnMvbW1jL2hvc3QvYXUxeG1tYy5jCkBAIC05OTgsNiArOTk4LDcgQEAKIAkucmVzdW1lICAgICAgICA9IE5VTEwsCiAJLmRyaXZlciAgICAgICAgPSB7CiAJCS5uYW1lICA9IERSSVZFUl9OQU1FLAorCQkub3duZXIgPSBUSElTX01PRFVMRSwKIAl9LAogfTsKIApAQCAtMTAxOCw1ICsxMDE5LDYgQEAKIE1PRFVMRV9BVVRIT1IoIkFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYyIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJNTUMvU0QgZHJpdmVyIGZvciB0aGUgQWxjaGVteSBBdTFYWFgiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06YXUxeHh4LW1tYyIpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbW1jL2hvc3QvaW14bW1jLmMgYi9kcml2ZXJzL21tYy9ob3N0L2lteG1tYy5jCmluZGV4IGYyMDcwYTEuLjk1ZjMzZTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbW1jL2hvc3QvaW14bW1jLmMKKysrIGIvZHJpdmVycy9tbWMvaG9zdC9pbXhtbWMuYwpAQCAtMTEyOCw2ICsxMTI4LDcgQEAKIAkucmVzdW1lCQk9IGlteG1jaV9yZXN1bWUsCiAJLmRyaXZlcgkJPSB7CiAJCS5uYW1lCQk9IERSSVZFUl9OQU1FLAorCQkub3duZXIJCT0gVEhJU19NT0RVTEUsCiAJfQogfTsKIApAQCAtMTE0NywzICsxMTQ4LDQgQEAKIE1PRFVMRV9ERVNDUklQVElPTigiaS5NWCBNdWx0aW1lZGlhIENhcmQgSW50ZXJmYWNlIERyaXZlciIpOwogTU9EVUxFX0FVVEhPUigiU2FzY2hhIEhhdWVyLCBQZW5ndXRyb25peCIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybTppbXgtbW1jIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9ob3N0L29tYXAuYyBiL2RyaXZlcnMvbW1jL2hvc3Qvb21hcC5jCmluZGV4IGM5ZGZlYjEuLjkwYzM1OGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbW1jL2hvc3Qvb21hcC5jCisrKyBiL2RyaXZlcnMvbW1jL2hvc3Qvb21hcC5jCkBAIC0xMjU1LDYgKzEyNTUsNyBAQAogCS5yZXN1bWUJCT0gbW1jX29tYXBfcmVzdW1lLAogCS5kcml2ZXIJCT0gewogCQkubmFtZQk9IERSSVZFUl9OQU1FLAorCQkub3duZXIJPSBUSElTX01PRFVMRSwKIAl9LAogfTsKIApAQCAtMTI3Myw1ICsxMjc0LDUgQEAKIAogTU9EVUxFX0RFU0NSSVBUSU9OKCJPTUFQIE11bHRpbWVkaWEgQ2FyZCBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLU1PRFVMRV9BTElBUyhEUklWRVJfTkFNRSk7CitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOiIgRFJJVkVSX05BTUUpOwogTU9EVUxFX0FVVEhPUigiSnVoYSBZcmr2bOQiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbW1jL2hvc3QvcHhhbWNpLmMgYi9kcml2ZXJzL21tYy9ob3N0L3B4YW1jaS5jCmluZGV4IDFlYTg0ODIuLjY1MjEwZmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbW1jL2hvc3QvcHhhbWNpLmMKKysrIGIvZHJpdmVycy9tbWMvaG9zdC9weGFtY2kuYwpAQCAtNjkzLDYgKzY5Myw3IEBACiAJLnJlc3VtZQkJPSBweGFtY2lfcmVzdW1lLAogCS5kcml2ZXIJCT0gewogCQkubmFtZQk9IERSSVZFUl9OQU1FLAorCQkub3duZXIJPSBUSElTX01PRFVMRSwKIAl9LAogfTsKIApAQCAtNzExLDMgKzcxMiw0IEBACiAKIE1PRFVMRV9ERVNDUklQVElPTigiUFhBIE11bHRpbWVkaWEgQ2FyZCBJbnRlcmZhY2UgRHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOnB4YTJ4eC1tY2kiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbW1jL2hvc3QvdGlmbV9zZC5jIGIvZHJpdmVycy9tbWMvaG9zdC90aWZtX3NkLmMKaW5kZXggMjBkNWM3Yi4uMWMxNGExOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tbWMvaG9zdC90aWZtX3NkLmMKKysrIGIvZHJpdmVycy9tbWMvaG9zdC90aWZtX3NkLmMKQEAgLTE4MCw3ICsxODAsNyBAQAogCQkJaG9zdC0+c2dfcG9zKys7CiAJCQlpZiAoaG9zdC0+c2dfcG9zID09IGhvc3QtPnNnX2xlbikgewogCQkJCWlmICgocl9kYXRhLT5mbGFncyAmIE1NQ19EQVRBX1dSSVRFKQotCQkJCSAgICAmJiBEQVRBX0NBUlJZKQorCQkJCSAgICAmJiAoaG9zdC0+Y21kX2ZsYWdzICYgREFUQV9DQVJSWSkpCiAJCQkJCXdyaXRlbChob3N0LT5ib3VuY2VfYnVmX2RhdGFbMF0sCiAJCQkJCSAgICAgICBob3N0LT5kZXYtPmFkZHIKIAkJCQkJICAgICAgICsgU09DS19NTUNTRF9EQVRBKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbW1jL2hvc3Qvd2JzZC5jIGIvZHJpdmVycy9tbWMvaG9zdC93YnNkLmMKaW5kZXggNGQ1ZjM3NC4uYmU2MjRhMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tbWMvaG9zdC93YnNkLmMKKysrIGIvZHJpdmVycy9tbWMvaG9zdC93YnNkLmMKQEAgLTE5NDgsNiArMTk0OCw3IEBACiAJLnJlc3VtZQkJPSB3YnNkX3BsYXRmb3JtX3Jlc3VtZSwKIAkuZHJpdmVyCQk9IHsKIAkJLm5hbWUJPSBEUklWRVJfTkFNRSwKKwkJLm93bmVyCT0gVEhJU19NT0RVTEUsCiAJfSwKIH07CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL2NoaXBzL2NmaV9jbWRzZXRfMDAwMS5jIGIvZHJpdmVycy9tdGQvY2hpcHMvY2ZpX2NtZHNldF8wMDAxLmMKaW5kZXggNDc3OTRkMi4uMDA4MDQ1MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvY2hpcHMvY2ZpX2NtZHNldF8wMDAxLmMKKysrIGIvZHJpdmVycy9tdGQvY2hpcHMvY2ZpX2NtZHNldF8wMDAxLmMKQEAgLTcxOCw3ICs3MTgsNyBAQAogCQkJLyogU29tZW9uZSBlbHNlIG1pZ2h0IGhhdmUgYmVlbiBwbGF5aW5nIHdpdGggaXQuICovCiAJCQlyZXR1cm4gLUVBR0FJTjsKIAkJfQotCisJCS8qIEZhbGwgdGhyb3VnaCAqLwogCWNhc2UgRkxfUkVBRFk6CiAJY2FzZSBGTF9DRklfUVVFUlk6CiAJY2FzZSBGTF9KRURFQ19RVUVSWToKQEAgLTc3OCwxNCArNzc4LDE0IEBACiAJCWNoaXAtPnN0YXRlID0gRkxfUkVBRFk7CiAJCXJldHVybiAwOwogCisJY2FzZSBGTF9TSFVURE9XTjoKKwkJLyogVGhlIG1hY2hpbmUgaXMgcmVib290aW5nIG5vdyxzbyBubyBvbmUgY2FuIGdldCBjaGlwIGFueW1vcmUgKi8KKwkJcmV0dXJuIC1FSU87CiAJY2FzZSBGTF9QT0lOVDoKIAkJLyogT25seSBpZiB0aGVyZSdzIG5vIG9wZXJhdGlvbiBzdXNwZW5kZWQuLi4gKi8KIAkJaWYgKG1vZGUgPT0gRkxfUkVBRFkgJiYgY2hpcC0+b2xkc3RhdGUgPT0gRkxfUkVBRFkpCiAJCQlyZXR1cm4gMDsKLQotCWNhc2UgRkxfU0hVVERPV046Ci0JCS8qIFRoZSBtYWNoaW5lIGlzIHJlYm9vdGluZyBub3csc28gbm8gb25lIGNhbiBnZXQgY2hpcCBhbnltb3JlICovCi0JCXJldHVybiAtRUlPOworCQkvKiBGYWxsIHRocm91Z2ggKi8KIAlkZWZhdWx0OgogCXNsZWVwOgogCQlzZXRfY3VycmVudF9zdGF0ZShUQVNLX1VOSU5URVJSVVBUSUJMRSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9jaGlwcy9jZmlfY21kc2V0XzAwMDIuYyBiL2RyaXZlcnMvbXRkL2NoaXBzL2NmaV9jbWRzZXRfMDAwMi5jCmluZGV4IGQwNzJlODcuLjQ1OGQ0NzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL2NoaXBzL2NmaV9jbWRzZXRfMDAwMi5jCisrKyBiL2RyaXZlcnMvbXRkL2NoaXBzL2NmaV9jbWRzZXRfMDAwMi5jCkBAIC0xNzYzLDYgKzE3NjMsNyBAQAogCiAJCWRlZmF1bHQ6CiAJCQkvKiBOb3QgYW4gaWRsZSBzdGF0ZSAqLworCQkJc2V0X2N1cnJlbnRfc3RhdGUoVEFTS19VTklOVEVSUlVQVElCTEUpOwogCQkJYWRkX3dhaXRfcXVldWUoJmNoaXAtPndxLCAmd2FpdCk7CiAKIAkJCXNwaW5fdW5sb2NrKGNoaXAtPm11dGV4KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL2NoaXBzL2NmaV9jbWRzZXRfMDAyMC5jIGIvZHJpdmVycy9tdGQvY2hpcHMvY2ZpX2NtZHNldF8wMDIwLmMKaW5kZXggYjM0NGZmOC4uNDkyZTJhYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvY2hpcHMvY2ZpX2NtZHNldF8wMDIwLmMKKysrIGIvZHJpdmVycy9tdGQvY2hpcHMvY2ZpX2NtZHNldF8wMDIwLmMKQEAgLTEwMTUsNiArMTAxNSw3IEBACiAKIAkJZGVmYXVsdDoKIAkJCS8qIE5vdCBhbiBpZGxlIHN0YXRlICovCisJCQlzZXRfY3VycmVudF9zdGF0ZShUQVNLX1VOSU5URVJSVVBUSUJMRSk7CiAJCQlhZGRfd2FpdF9xdWV1ZSgmY2hpcC0+d3EsICZ3YWl0KTsKIAogCQkJc3Bpbl91bmxvY2tfYmgoY2hpcC0+bXV0ZXgpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvZGV2aWNlcy9ibG9jazJtdGQuYyBiL2RyaXZlcnMvbXRkL2RldmljZXMvYmxvY2sybXRkLmMKaW5kZXggZWVhYWE5ZC4uYWQxODgwYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvZGV2aWNlcy9ibG9jazJtdGQuYworKysgYi9kcml2ZXJzL210ZC9kZXZpY2VzL2Jsb2NrMm10ZC5jCkBAIC00MDgsNyArNDA4LDYgQEAKIAlpZiAodG9rZW5bMV0pIHsKIAkJcmV0ID0gcGFyc2VfbnVtKCZlcmFzZV9zaXplLCB0b2tlblsxXSk7CiAJCWlmIChyZXQpIHsKLQkJCWtmcmVlKG5hbWUpOwogCQkJcGFyc2VfZXJyKCJpbGxlZ2FsIGVyYXNlIHNpemUiKTsKIAkJfQogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL21hcHMvcGh5c21hcC5jIGIvZHJpdmVycy9tdGQvbWFwcy9waHlzbWFwLmMKaW5kZXggZjAwZTA0ZS4uYmM0NjQ5YTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL21hcHMvcGh5c21hcC5jCisrKyBiL2RyaXZlcnMvbXRkL21hcHMvcGh5c21hcC5jCkBAIC0yMDIsOSArMjAyLDggQEAKIAlpbnQgcmV0ID0gMDsKIAlpbnQgaTsKIAotCWlmIChpbmZvKQotCQlmb3IgKGkgPSAwOyBpIDwgTUFYX1JFU09VUkNFUzsgaSsrKQotCQkJcmV0IHw9IGluZm8tPm10ZFtpXS0+c3VzcGVuZChpbmZvLT5tdGRbaV0pOworCWZvciAoaSA9IDA7IGkgPCBNQVhfUkVTT1VSQ0VTICYmIGluZm8tPm10ZFtpXTsgaSsrKQorCQlyZXQgfD0gaW5mby0+bXRkW2ldLT5zdXNwZW5kKGluZm8tPm10ZFtpXSk7CiAKIAlyZXR1cm4gcmV0OwogfQpAQCAtMjE0LDkgKzIxMyw5IEBACiAJc3RydWN0IHBoeXNtYXBfZmxhc2hfaW5mbyAqaW5mbyA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKGRldik7CiAJaW50IGk7CiAKLQlpZiAoaW5mbykKLQkJZm9yIChpID0gMDsgaSA8IE1BWF9SRVNPVVJDRVM7IGkrKykKLQkJCWluZm8tPm10ZFtpXS0+cmVzdW1lKGluZm8tPm10ZFtpXSk7CisJZm9yIChpID0gMDsgaSA8IE1BWF9SRVNPVVJDRVMgJiYgaW5mby0+bXRkW2ldOyBpKyspCisJCWluZm8tPm10ZFtpXS0+cmVzdW1lKGluZm8tPm10ZFtpXSk7CisKIAlyZXR1cm4gMDsKIH0KIApAQCAtMjI1LDggKzIyNCw4IEBACiAJc3RydWN0IHBoeXNtYXBfZmxhc2hfaW5mbyAqaW5mbyA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKGRldik7CiAJaW50IGk7CiAKLQlmb3IgKGkgPSAwOyBpIDwgTUFYX1JFU09VUkNFUzsgaSsrKQotCQlpZiAoaW5mbyAmJiBpbmZvLT5tdGRbaV0tPnN1c3BlbmQoaW5mby0+bXRkW2ldKSA9PSAwKQorCWZvciAoaSA9IDA7IGkgPCBNQVhfUkVTT1VSQ0VTICYmIGluZm8tPm10ZFtpXTsgaSsrKQorCQlpZiAoaW5mby0+bXRkW2ldLT5zdXNwZW5kKGluZm8tPm10ZFtpXSkgPT0gMCkKIAkJCWluZm8tPm10ZFtpXS0+cmVzdW1lKGluZm8tPm10ZFtpXSk7CiB9CiAjZWxzZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvbmFuZC9ydGNfZnJvbTQuYyBiL2RyaXZlcnMvbXRkL25hbmQvcnRjX2Zyb200LmMKaW5kZXggOTE4OWVjOC4uMGY2YWMyNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvbmFuZC9ydGNfZnJvbTQuYworKysgYi9kcml2ZXJzL210ZC9uYW5kL3J0Y19mcm9tNC5jCkBAIC00NjAsNyArNDYwLDcgQEAKIAkJCWVyX3N0YXQgfD0gMSA8PCAxOwogCQlrZnJlZShidWYpOwogCX0KLQorb3V0OgogCXJ0biA9IHN0YXR1czsKIAlpZiAoZXJfc3RhdCA9PSAwKSB7CS8qIGlmIEVDQyBpcyBhdmFpbGFibGUgICAqLwogCQlydG4gPSAoc3RhdHVzICYgfk5BTkRfU1RBVFVTX0ZBSUwpOwkvKiAgIGNsZWFyIHRoZSBlcnJvciBiaXQgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0LzNjNTAxLmMgYi9kcml2ZXJzL25ldC8zYzUwMS5jCmluZGV4IDdkMjUzNjguLjViYTRiYWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0LzNjNTAxLmMKKysrIGIvZHJpdmVycy9uZXQvM2M1MDEuYwpAQCAtNDg1LDkgKzQ4NSw3IEBACiAJCQlwcmludGsoS0VSTl9ERUJVRyAiJXM6IGJ1cnBlZCBkdXJpbmcgdHggbG9hZC5cbiIsCiAJCQkJZGV2LT5uYW1lKTsKIAkJc3Bpbl9sb2NrX2lycXNhdmUoJmxwLT5sb2NrLCBmbGFncyk7Ci0JfQotCXdoaWxlICgxKTsKLQorCX0gd2hpbGUgKDEpOwogfQogCiAvKioKQEAgLTYxMiw3ICs2MTAsOCBAQAogCQkJZGV2LT5zdGF0cy50eF9wYWNrZXRzKys7CiAJCQlpZiAoZWxfZGVidWcgPiA2KQogCQkJCXByaW50ayhLRVJOX0RFQlVHICIgVHggc3VjY2VlZGVkICVzXG4iLAotCQkJCQkodHhzciAmIFRYX1JEWSkgPyAiLiIgOiAiYnV0IHR4IGlzIGJ1c3khIik7CisJCQkJCSh0eHNyICYgVFhfUkRZKSA/ICIuIiA6CisJCQkJCQkJImJ1dCB0eCBpcyBidXN5ISIpOwogCQkJLyoKIAkJCSAqCVRoaXMgaXMgc2FmZSB0aGUgaW50ZXJydXB0IGlzIGF0b21pYyBXUlQgaXRzZWxmLgogCQkJICovCkBAIC02OTMsNyArNjkyLDggQEAKIAogCWlmIChwa3RfbGVuIDwgNjAgfHwgcGt0X2xlbiA+IDE1MzYpIHsKIAkJaWYgKGVsX2RlYnVnKQotCQkJcHJpbnRrKEtFUk5fREVCVUcgIiVzOiBib2d1cyBwYWNrZXQsIGxlbmd0aD0lZFxuIiwgZGV2LT5uYW1lLCBwa3RfbGVuKTsKKwkJCXByaW50ayhLRVJOX0RFQlVHICIlczogYm9ndXMgcGFja2V0LCBsZW5ndGg9JWRcbiIsCisJCQkJCQlkZXYtPm5hbWUsIHBrdF9sZW4pOwogCQlkZXYtPnN0YXRzLnJ4X292ZXJfZXJyb3JzKys7CiAJCXJldHVybjsKIAl9CkBAIC03MTEsNyArNzExLDggQEAKIAogCW91dHcoMHgwMCwgR1BfTE9XKTsKIAlpZiAoc2tiID09IE5VTEwpIHsKLQkJcHJpbnRrKEtFUk5fSU5GTyAiJXM6IE1lbW9yeSBzcXVlZXplLCBkcm9wcGluZyBwYWNrZXQuXG4iLCBkZXYtPm5hbWUpOworCQlwcmludGsoS0VSTl9JTkZPICIlczogTWVtb3J5IHNxdWVlemUsIGRyb3BwaW5nIHBhY2tldC5cbiIsCisJCQkJCQkJCWRldi0+bmFtZSk7CiAJCWRldi0+c3RhdHMucnhfZHJvcHBlZCsrOwogCQlyZXR1cm47CiAJfSBlbHNlIHsKQEAgLTc0OCw3ICs3NDksOCBAQAogCWlmIChlbF9kZWJ1ZyA+IDIpCiAJCXByaW50ayhLRVJOX0lORk8gIjNjNTAxIHJlc2V0Li4uIik7CiAJb3V0YihBWF9SRVNFVCwgQVhfQ01EKTsJCS8qIFJlc2V0IHRoZSBjaGlwICovCi0Jb3V0YihBWF9MT09QLCBBWF9DTUQpOwkJLyogQXV4IGNvbnRyb2wsIGlycSBhbmQgbG9vcGJhY2sgZW5hYmxlZCAqLworCS8qIEF1eCBjb250cm9sLCBpcnEgYW5kIGxvb3BiYWNrIGVuYWJsZWQgKi8KKwlvdXRiKEFYX0xPT1AsIEFYX0NNRCk7CiAJewogCQlpbnQgaTsKIAkJZm9yIChpID0gMDsgaSA8IDY7IGkrKykJLyogU2V0IHRoZSBzdGF0aW9uIGFkZHJlc3MuICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9LY29uZmlnIGIvZHJpdmVycy9uZXQvS2NvbmZpZwppbmRleCBhMGYwZTYwLi4zYTBiMjBhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9LY29uZmlnCisrKyBiL2RyaXZlcnMvbmV0L0tjb25maWcKQEAgLTIzNjYsMTUgKzIzNjYsMTUgQEAKIAkgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBwczNfZ2VsaWMuCiAKIGNvbmZpZyBHRUxJQ19XSVJFTEVTUwotICAgICAgIGJvb2wgIlBTMyBXaXJlbGVzcyBzdXBwb3J0IgotICAgICAgIGRlcGVuZHMgb24gR0VMSUNfTkVUCi0gICAgICAgc2VsZWN0IFdJUkVMRVNTX0VYVAotICAgICAgIGhlbHAKLSAgICAgICAgVGhpcyBvcHRpb24gYWRkcyB0aGUgc3VwcG9ydCBmb3IgdGhlIHdpcmVsZXNzIGZlYXR1cmUgb2YgUFMzLgotICAgICAgICBJZiB5b3UgaGF2ZSB0aGUgd2lyZWxlc3MtbGVzcyBtb2RlbCBvZiBQUzMgb3IgaGF2ZSBubyBwbGFuIHRvCi0gICAgICAgIHVzZSB3aXJlbGVzcyBmZWF0dXJlLCBkaXNhYmxpbmcgdGhpcyBvcHRpb24gc2F2ZXMgbWVtb3J5LiAgQXMKLSAgICAgICAgdGhlIGRyaXZlciBhdXRvbWF0aWNhbGx5IGRpc3Rpbmd1aXNoZXMgdGhlIG1vZGVscywgeW91IGNhbgotICAgICAgICBzYWZlbHkgZW5hYmxlIHRoaXMgb3B0aW9uIGV2ZW4gaWYgeW91IGhhdmUgYSB3aXJlbGVzcy1sZXNzIG1vZGVsLgorCWJvb2wgIlBTMyBXaXJlbGVzcyBzdXBwb3J0IgorCWRlcGVuZHMgb24gR0VMSUNfTkVUCisJc2VsZWN0IFdJUkVMRVNTX0VYVAorCWhlbHAKKwkgIFRoaXMgb3B0aW9uIGFkZHMgdGhlIHN1cHBvcnQgZm9yIHRoZSB3aXJlbGVzcyBmZWF0dXJlIG9mIFBTMy4KKwkgIElmIHlvdSBoYXZlIHRoZSB3aXJlbGVzcy1sZXNzIG1vZGVsIG9mIFBTMyBvciBoYXZlIG5vIHBsYW4gdG8KKwkgIHVzZSB3aXJlbGVzcyBmZWF0dXJlLCBkaXNhYmxpbmcgdGhpcyBvcHRpb24gc2F2ZXMgbWVtb3J5LiAgQXMKKwkgIHRoZSBkcml2ZXIgYXV0b21hdGljYWxseSBkaXN0aW5ndWlzaGVzIHRoZSBtb2RlbHMsIHlvdSBjYW4KKwkgIHNhZmVseSBlbmFibGUgdGhpcyBvcHRpb24gZXZlbiBpZiB5b3UgaGF2ZSBhIHdpcmVsZXNzLWxlc3MgbW9kZWwuCiAKIGNvbmZpZyBHSUFORkFSCiAJdHJpc3RhdGUgIkdpYW5mYXIgRXRoZXJuZXQiCkBAIC0yNTE5LDcgKzI1MTksNyBAQAogCiBjb25maWcgRUhFQQogCXRyaXN0YXRlICJlSEVBIEV0aGVybmV0IHN1cHBvcnQiCi0JZGVwZW5kcyBvbiBJQk1FQlVTICYmIElORVQKKwlkZXBlbmRzIG9uIElCTUVCVVMgJiYgSU5FVCAmJiBTUEFSU0VNRU0KIAlzZWxlY3QgSU5FVF9MUk8KIAktLS1oZWxwLS0tCiAJICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgSUJNIHBTZXJpZXMgZUhFQSBldGhlcm5ldCBhZGFwdGVyLgpAQCAtMjYzNSw3ICsyNjM1LDcgQEAKIAogY29uZmlnIFBBU0VNSV9NQUMKIAl0cmlzdGF0ZSAiUEEgU2VtaSAxLzEwR2JpdCBNQUMiCi0JZGVwZW5kcyBvbiBQUEM2NCAmJiBQQ0kKKwlkZXBlbmRzIG9uIFBQQ19QQVNFTUkgJiYgUENJCiAJc2VsZWN0IFBIWUxJQgogCXNlbGVjdCBJTkVUX0xSTwogCWhlbHAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2FjMzIwMC5jIGIvZHJpdmVycy9uZXQvYWMzMjAwLmMKaW5kZXggNTEzNmQ5NDkuLmIxNDQ4NjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2FjMzIwMC5jCisrKyBiL2RyaXZlcnMvbmV0L2FjMzIwMC5jCkBAIC0zNjksNyArMzY5LDcgQEAKIE1PRFVMRV9ERVNDUklQVElPTigiQW5zZWwgQUMzMjAwIEVJU0EgZXRoZXJuZXQgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CiAKLWludCBfX2luaXQgaW5pdF9tb2R1bGUodm9pZCkKK3N0YXRpYyBpbnQgX19pbml0IGFjMzIwMF9tb2R1bGVfaW5pdCh2b2lkKQogewogCXN0cnVjdCBuZXRfZGV2aWNlICpkZXY7CiAJaW50IHRoaXNfZGV2LCBmb3VuZCA9IDA7CkBAIC00MDQsOCArNDA0LDcgQEAKIAlpb3VubWFwKGVpX3N0YXR1cy5tZW0pOwogfQogCi12b2lkIF9fZXhpdAotY2xlYW51cF9tb2R1bGUodm9pZCkKK3N0YXRpYyB2b2lkIF9fZXhpdCBhYzMyMDBfbW9kdWxlX2V4aXQodm9pZCkKIHsKIAlpbnQgdGhpc19kZXY7CiAKQEAgLTQxOCw0ICs0MTcsNiBAQAogCQl9CiAJfQogfQorbW9kdWxlX2luaXQoYWMzMjAwX21vZHVsZV9pbml0KTsKK21vZHVsZV9leGl0KGFjMzIwMF9tb2R1bGVfZXhpdCk7CiAjZW5kaWYgLyogTU9EVUxFICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9hcG5lLmMgYi9kcml2ZXJzL25ldC9hcG5lLmMKaW5kZXggYzEyY2JkZi4uNDdhODI3NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvYXBuZS5jCisrKyBiL2RyaXZlcnMvbmV0L2FwbmUuYwpAQCAtNTY5LDcgKzU2OSw3IEBACiAjaWZkZWYgTU9EVUxFCiBzdGF0aWMgc3RydWN0IG5ldF9kZXZpY2UgKmFwbmVfZGV2OwogCi1pbnQgX19pbml0IGluaXRfbW9kdWxlKHZvaWQpCitzdGF0aWMgaW50IF9faW5pdCBhcG5lX21vZHVsZV9pbml0KHZvaWQpCiB7CiAJYXBuZV9kZXYgPSBhcG5lX3Byb2JlKC0xKTsKIAlpZiAoSVNfRVJSKGFwbmVfZGV2KSkKQEAgLTU3Nyw3ICs1NzcsNyBAQAogCXJldHVybiAwOwogfQogCi12b2lkIF9fZXhpdCBjbGVhbnVwX21vZHVsZSh2b2lkKQorc3RhdGljIHZvaWQgX19leGl0IGFwbmVfbW9kdWxlX2V4aXQodm9pZCkKIHsKIAl1bnJlZ2lzdGVyX25ldGRldihhcG5lX2Rldik7CiAKQEAgLTU5MSw3ICs1OTEsOCBAQAogCiAJZnJlZV9uZXRkZXYoYXBuZV9kZXYpOwogfQotCittb2R1bGVfaW5pdChhcG5lX21vZHVsZV9pbml0KTsKK21vZHVsZV9leGl0KGFwbmVfbW9kdWxlX2V4aXQpOwogI2VuZGlmCiAKIHN0YXRpYyBpbnQgaW5pdF9wY21jaWEodm9pZCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2FwcGxldGFsay9sdHBjLmMgYi9kcml2ZXJzL25ldC9hcHBsZXRhbGsvbHRwYy5jCmluZGV4IDZhYjJjMmQuLmZlZjU1NjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2FwcGxldGFsay9sdHBjLmMKKysrIGIvZHJpdmVycy9uZXQvYXBwbGV0YWxrL2x0cGMuYwpAQCAtMTI1Miw3ICsxMjUyLDcgQEAKIG1vZHVsZV9wYXJhbShkbWEsIGludCwgMCk7CiAKIAotaW50IF9faW5pdCBpbml0X21vZHVsZSh2b2lkKQorc3RhdGljIGludCBfX2luaXQgbHRwY19tb2R1bGVfaW5pdCh2b2lkKQogewogICAgICAgICBpZihpbyA9PSAwKQogCQlwcmludGsoS0VSTl9OT1RJQ0UKQEAgLTEyNjMsNiArMTI2Myw3IEBACiAJCXJldHVybiBQVFJfRVJSKGRldl9sdHBjKTsKIAlyZXR1cm4gMDsKIH0KK21vZHVsZV9pbml0KGx0cGNfbW9kdWxlX2luaXQpOwogI2VuZGlmCiAKIHN0YXRpYyB2b2lkIF9fZXhpdCBsdHBjX2NsZWFudXAodm9pZCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2FyY25ldC9jYXBtb2RlLmMgYi9kcml2ZXJzL25ldC9hcmNuZXQvY2FwbW9kZS5jCmluZGV4IGNjNDYxMGQuLjAyY2I4ZjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2FyY25ldC9jYXBtb2RlLmMKKysrIGIvZHJpdmVycy9uZXQvYXJjbmV0L2NhcG1vZGUuYwpAQCAtODAsMTcgKzgwLDE5IEBACiAKICNpZmRlZiBNT0RVTEUKIAotaW50IF9faW5pdCBpbml0X21vZHVsZSh2b2lkKQorc3RhdGljIGludCBfX2luaXQgY2FwbW9kZV9tb2R1bGVfaW5pdCh2b2lkKQogewogCXByaW50ayhWRVJTSU9OKTsKIAlhcmNuZXRfY2FwX2luaXQoKTsKIAlyZXR1cm4gMDsKIH0KIAotdm9pZCBjbGVhbnVwX21vZHVsZSh2b2lkKQorc3RhdGljIHZvaWQgX19leGl0IGNhcG1vZGVfbW9kdWxlX2V4aXQodm9pZCkKIHsKIAlhcmNuZXRfdW5yZWdpc3Rlcl9wcm90bygmY2FwbW9kZV9wcm90byk7CiB9Cittb2R1bGVfaW5pdChjYXBtb2RlX21vZHVsZV9pbml0KTsKK21vZHVsZV9leGl0KGNhcG1vZGVfbW9kdWxlX2V4aXQpOwogCiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CiAjZW5kaWYJCQkJLyogTU9EVUxFICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9hdGFyaWxhbmNlLmMgYi9kcml2ZXJzL25ldC9hdGFyaWxhbmNlLmMKaW5kZXggYjc0ZGJlZS4uMTNjMjkzYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvYXRhcmlsYW5jZS5jCisrKyBiL2RyaXZlcnMvbmV0L2F0YXJpbGFuY2UuYwpAQCAtMzM2LDggKzMzNiw2IEBACiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBQcm90b3R5cGVzICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi1zdGF0aWMgaW50IGFkZHJfYWNjZXNzaWJsZSggdm9sYXRpbGUgdm9pZCAqcmVncCwgaW50IHdvcmRmbGFnLCBpbnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZWZsYWcgKTsKIHN0YXRpYyB1bnNpZ25lZCBsb25nIGxhbmNlX3Byb2JlMSggc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGxhbmNlX2FkZHIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmluaXRfcmVjICk7CiBzdGF0aWMgaW50IGxhbmNlX29wZW4oIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgKTsKQEAgLTQwNiw3ICs0MDQsOCBAQAogCiAvKiBEZXJpdmVkIGZyb20gaHdyZWdfcHJlc2VudCgpIGluIGF0YXJpL2NvbmZpZy5jOiAqLwogCi1zdGF0aWMgaW50IF9faW5pdCBhZGRyX2FjY2Vzc2libGUoIHZvbGF0aWxlIHZvaWQgKnJlZ3AsIGludCB3b3JkZmxhZywgaW50IHdyaXRlZmxhZyApCitzdGF0aWMgbm9pbmxpbmUgaW50IF9faW5pdCBhZGRyX2FjY2Vzc2libGUodm9sYXRpbGUgdm9pZCAqcmVncCwgaW50IHdvcmRmbGFnLAorCQkJCQkgICBpbnQgd3JpdGVmbGFnKQogewogCWludAkJcmV0OwogCWxvbmcJZmxhZ3M7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9hdGwxL2F0bDFfbWFpbi5jIGIvZHJpdmVycy9uZXQvYXRsMS9hdGwxX21haW4uYwppbmRleCA5MjAwZWU1Li4xMjliOGIzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9hdGwxL2F0bDFfbWFpbi5jCisrKyBiL2RyaXZlcnMvbmV0L2F0bDEvYXRsMV9tYWluLmMKQEAgLTE3NjUsMTUgKzE3NjUsMTIgQEAKIHsKIAlzdHJ1Y3QgYXRsMV9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYoZGF0YSk7CiAJdTMyIHN0YXR1czsKLQl1OCB1cGRhdGVfcng7CiAJaW50IG1heF9pbnRzID0gMTA7CiAKIAlzdGF0dXMgPSBhZGFwdGVyLT5jbWIuY21iLT5pbnRfc3RhdHM7CiAJaWYgKCFzdGF0dXMpCiAJCXJldHVybiBJUlFfTk9ORTsKIAotCXVwZGF0ZV9yeCA9IDA7Ci0KIAlkbyB7CiAJCS8qIGNsZWFyIENNQiBpbnRlcnJ1cHQgc3RhdHVzIGF0IG9uY2UgKi8KIAkJYWRhcHRlci0+Y21iLmNtYi0+aW50X3N0YXRzID0gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2I0NC5jIGIvZHJpdmVycy9uZXQvYjQ0LmMKaW5kZXggZWEyYTJiNS4uNTlkY2U2YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvYjQ0LmMKKysrIGIvZHJpdmVycy9uZXQvYjQ0LmMKQEAgLTE0OCw3ICsxNDgsNyBAQAogCQkJCQkJdW5zaWduZWQgbG9uZyBvZmZzZXQsCiAJCQkJCQllbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIpCiB7Ci0JZG1hX3N5bmNfc2luZ2xlX3JhbmdlX2Zvcl9kZXZpY2Uoc2Rldi0+ZGV2LCBkbWFfYmFzZSwKKwlkbWFfc3luY19zaW5nbGVfcmFuZ2VfZm9yX2RldmljZShzZGV2LT5kbWFfZGV2LCBkbWFfYmFzZSwKIAkJCQkJIG9mZnNldCAmIGRtYV9kZXNjX2FsaWduX21hc2ssCiAJCQkJCSBkbWFfZGVzY19zeW5jX3NpemUsIGRpcik7CiB9CkBAIC0xNTgsNyArMTU4LDcgQEAKIAkJCQkJICAgICB1bnNpZ25lZCBsb25nIG9mZnNldCwKIAkJCQkJICAgICBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIpCiB7Ci0JZG1hX3N5bmNfc2luZ2xlX3JhbmdlX2Zvcl9jcHUoc2Rldi0+ZGV2LCBkbWFfYmFzZSwKKwlkbWFfc3luY19zaW5nbGVfcmFuZ2VfZm9yX2NwdShzZGV2LT5kbWFfZGV2LCBkbWFfYmFzZSwKIAkJCQkgICAgICBvZmZzZXQgJiBkbWFfZGVzY19hbGlnbl9tYXNrLAogCQkJCSAgICAgIGRtYV9kZXNjX3N5bmNfc2l6ZSwgZGlyKTsKIH0KQEAgLTYxMyw3ICs2MTMsNyBAQAogCiAJCUJVR19PTihza2IgPT0gTlVMTCk7CiAKLQkJZG1hX3VubWFwX3NpbmdsZShicC0+c2Rldi0+ZGV2LAorCQlkbWFfdW5tYXBfc2luZ2xlKGJwLT5zZGV2LT5kbWFfZGV2LAogCQkJCSBycC0+bWFwcGluZywKIAkJCQkgc2tiLT5sZW4sCiAJCQkJIERNQV9UT19ERVZJQ0UpOwpAQCAtNjUzLDcgKzY1Myw3IEBACiAJaWYgKHNrYiA9PSBOVUxMKQogCQlyZXR1cm4gLUVOT01FTTsKIAotCW1hcHBpbmcgPSBkbWFfbWFwX3NpbmdsZShicC0+c2Rldi0+ZGV2LCBza2ItPmRhdGEsCisJbWFwcGluZyA9IGRtYV9tYXBfc2luZ2xlKGJwLT5zZGV2LT5kbWFfZGV2LCBza2ItPmRhdGEsCiAJCQkJIFJYX1BLVF9CVUZfU1osCiAJCQkJIERNQV9GUk9NX0RFVklDRSk7CiAKQEAgLTY2MywxOSArNjYzLDE5IEBACiAJCW1hcHBpbmcgKyBSWF9QS1RfQlVGX1NaID4gRE1BXzMwQklUX01BU0spIHsKIAkJLyogU2lnaC4uLiAqLwogCQlpZiAoIWRtYV9tYXBwaW5nX2Vycm9yKG1hcHBpbmcpKQotCQkJZG1hX3VubWFwX3NpbmdsZShicC0+c2Rldi0+ZGV2LCBtYXBwaW5nLAorCQkJZG1hX3VubWFwX3NpbmdsZShicC0+c2Rldi0+ZG1hX2RldiwgbWFwcGluZywKIAkJCQkJUlhfUEtUX0JVRl9TWiwgRE1BX0ZST01fREVWSUNFKTsKIAkJZGV2X2tmcmVlX3NrYl9hbnkoc2tiKTsKIAkJc2tiID0gX19uZXRkZXZfYWxsb2Nfc2tiKGJwLT5kZXYsIFJYX1BLVF9CVUZfU1osIEdGUF9BVE9NSUN8R0ZQX0RNQSk7CiAJCWlmIChza2IgPT0gTlVMTCkKIAkJCXJldHVybiAtRU5PTUVNOwotCQltYXBwaW5nID0gZG1hX21hcF9zaW5nbGUoYnAtPnNkZXYtPmRldiwgc2tiLT5kYXRhLAorCQltYXBwaW5nID0gZG1hX21hcF9zaW5nbGUoYnAtPnNkZXYtPmRtYV9kZXYsIHNrYi0+ZGF0YSwKIAkJCQkJIFJYX1BLVF9CVUZfU1osCiAJCQkJCSBETUFfRlJPTV9ERVZJQ0UpOwogCQlpZiAoZG1hX21hcHBpbmdfZXJyb3IobWFwcGluZykgfHwKIAkJCW1hcHBpbmcgKyBSWF9QS1RfQlVGX1NaID4gRE1BXzMwQklUX01BU0spIHsKIAkJCWlmICghZG1hX21hcHBpbmdfZXJyb3IobWFwcGluZykpCi0JCQkJZG1hX3VubWFwX3NpbmdsZShicC0+c2Rldi0+ZGV2LCBtYXBwaW5nLCBSWF9QS1RfQlVGX1NaLERNQV9GUk9NX0RFVklDRSk7CisJCQkJZG1hX3VubWFwX3NpbmdsZShicC0+c2Rldi0+ZG1hX2RldiwgbWFwcGluZywgUlhfUEtUX0JVRl9TWixETUFfRlJPTV9ERVZJQ0UpOwogCQkJZGV2X2tmcmVlX3NrYl9hbnkoc2tiKTsKIAkJCXJldHVybiAtRU5PTUVNOwogCQl9CkBAIC03NTAsNyArNzUwLDcgQEAKIAkJCQkJICAgICBkZXN0X2lkeCAqIHNpemVvZihkZXN0X2Rlc2MpLAogCQkJCQkgICAgIERNQV9CSURJUkVDVElPTkFMKTsKIAotCWRtYV9zeW5jX3NpbmdsZV9mb3JfZGV2aWNlKGJwLT5zZGV2LT5kZXYsIGxlMzJfdG9fY3B1KHNyY19kZXNjLT5hZGRyKSwKKwlkbWFfc3luY19zaW5nbGVfZm9yX2RldmljZShicC0+c2Rldi0+ZG1hX2RldiwgbGUzMl90b19jcHUoc3JjX2Rlc2MtPmFkZHIpLAogCQkJCSAgIFJYX1BLVF9CVUZfU1osCiAJCQkJICAgRE1BX0ZST01fREVWSUNFKTsKIH0KQEAgLTc3Miw3ICs3NzIsNyBAQAogCQlzdHJ1Y3QgcnhfaGVhZGVyICpyaDsKIAkJdTE2IGxlbjsKIAotCQlkbWFfc3luY19zaW5nbGVfZm9yX2NwdShicC0+c2Rldi0+ZGV2LCBtYXAsCisJCWRtYV9zeW5jX3NpbmdsZV9mb3JfY3B1KGJwLT5zZGV2LT5kbWFfZGV2LCBtYXAsCiAJCQkJCSAgICBSWF9QS1RfQlVGX1NaLAogCQkJCQkgICAgRE1BX0ZST01fREVWSUNFKTsKIAkJcmggPSAoc3RydWN0IHJ4X2hlYWRlciAqKSBza2ItPmRhdGE7CkBAIC04MDYsNyArODA2LDcgQEAKIAkJCXNrYl9zaXplID0gYjQ0X2FsbG9jX3J4X3NrYihicCwgY29ucywgYnAtPnJ4X3Byb2QpOwogCQkJaWYgKHNrYl9zaXplIDwgMCkKIAkJCQlnb3RvIGRyb3BfaXQ7Ci0JCQlkbWFfdW5tYXBfc2luZ2xlKGJwLT5zZGV2LT5kZXYsIG1hcCwKKwkJCWRtYV91bm1hcF9zaW5nbGUoYnAtPnNkZXYtPmRtYV9kZXYsIG1hcCwKIAkJCQkJIHNrYl9zaXplLCBETUFfRlJPTV9ERVZJQ0UpOwogCQkJLyogTGVhdmUgb3V0IHJ4X2hlYWRlciAqLwogICAgICAgICAgICAgICAgIAlza2JfcHV0KHNrYiwgbGVuICsgUlhfUEtUX09GRlNFVCk7CkBAIC05NjYsMjQgKzk2NiwyNCBAQAogCQlnb3RvIGVycl9vdXQ7CiAJfQogCi0JbWFwcGluZyA9IGRtYV9tYXBfc2luZ2xlKGJwLT5zZGV2LT5kZXYsIHNrYi0+ZGF0YSwgbGVuLCBETUFfVE9fREVWSUNFKTsKKwltYXBwaW5nID0gZG1hX21hcF9zaW5nbGUoYnAtPnNkZXYtPmRtYV9kZXYsIHNrYi0+ZGF0YSwgbGVuLCBETUFfVE9fREVWSUNFKTsKIAlpZiAoZG1hX21hcHBpbmdfZXJyb3IobWFwcGluZykgfHwgbWFwcGluZyArIGxlbiA+IERNQV8zMEJJVF9NQVNLKSB7CiAJCXN0cnVjdCBza19idWZmICpib3VuY2Vfc2tiOwogCiAJCS8qIENoaXAgY2FuJ3QgaGFuZGxlIERNQSB0by9mcm9tID4xR0IsIHVzZSBib3VuY2UgYnVmZmVyICovCiAJCWlmICghZG1hX21hcHBpbmdfZXJyb3IobWFwcGluZykpCi0JCQlkbWFfdW5tYXBfc2luZ2xlKGJwLT5zZGV2LT5kZXYsIG1hcHBpbmcsIGxlbiwKKwkJCWRtYV91bm1hcF9zaW5nbGUoYnAtPnNkZXYtPmRtYV9kZXYsIG1hcHBpbmcsIGxlbiwKIAkJCQkJRE1BX1RPX0RFVklDRSk7CiAKIAkJYm91bmNlX3NrYiA9IF9fZGV2X2FsbG9jX3NrYihsZW4sIEdGUF9BVE9NSUMgfCBHRlBfRE1BKTsKIAkJaWYgKCFib3VuY2Vfc2tiKQogCQkJZ290byBlcnJfb3V0OwogCi0JCW1hcHBpbmcgPSBkbWFfbWFwX3NpbmdsZShicC0+c2Rldi0+ZGV2LCBib3VuY2Vfc2tiLT5kYXRhLAorCQltYXBwaW5nID0gZG1hX21hcF9zaW5nbGUoYnAtPnNkZXYtPmRtYV9kZXYsIGJvdW5jZV9za2ItPmRhdGEsCiAJCQkJCSBsZW4sIERNQV9UT19ERVZJQ0UpOwogCQlpZiAoZG1hX21hcHBpbmdfZXJyb3IobWFwcGluZykgfHwgbWFwcGluZyArIGxlbiA+IERNQV8zMEJJVF9NQVNLKSB7CiAJCQlpZiAoIWRtYV9tYXBwaW5nX2Vycm9yKG1hcHBpbmcpKQotCQkJCWRtYV91bm1hcF9zaW5nbGUoYnAtPnNkZXYtPmRldiwgbWFwcGluZywKKwkJCQlkbWFfdW5tYXBfc2luZ2xlKGJwLT5zZGV2LT5kbWFfZGV2LCBtYXBwaW5nLAogCQkJCQkgbGVuLCBETUFfVE9fREVWSUNFKTsKIAkJCWRldl9rZnJlZV9za2JfYW55KGJvdW5jZV9za2IpOwogCQkJZ290byBlcnJfb3V0OwpAQCAtMTA4Miw3ICsxMDgyLDcgQEAKIAogCQlpZiAocnAtPnNrYiA9PSBOVUxMKQogCQkJY29udGludWU7Ci0JCWRtYV91bm1hcF9zaW5nbGUoYnAtPnNkZXYtPmRldiwgcnAtPm1hcHBpbmcsIFJYX1BLVF9CVUZfU1osCisJCWRtYV91bm1hcF9zaW5nbGUoYnAtPnNkZXYtPmRtYV9kZXYsIHJwLT5tYXBwaW5nLCBSWF9QS1RfQlVGX1NaLAogCQkJCQlETUFfRlJPTV9ERVZJQ0UpOwogCQlkZXZfa2ZyZWVfc2tiX2FueShycC0+c2tiKTsKIAkJcnAtPnNrYiA9IE5VTEw7CkBAIC0xMDk0LDcgKzEwOTQsNyBAQAogCiAJCWlmIChycC0+c2tiID09IE5VTEwpCiAJCQljb250aW51ZTsKLQkJZG1hX3VubWFwX3NpbmdsZShicC0+c2Rldi0+ZGV2LCBycC0+bWFwcGluZywgcnAtPnNrYi0+bGVuLAorCQlkbWFfdW5tYXBfc2luZ2xlKGJwLT5zZGV2LT5kbWFfZGV2LCBycC0+bWFwcGluZywgcnAtPnNrYi0+bGVuLAogCQkJCQlETUFfVE9fREVWSUNFKTsKIAkJZGV2X2tmcmVlX3NrYl9hbnkocnAtPnNrYik7CiAJCXJwLT5za2IgPSBOVUxMOwpAQCAtMTExNywxMiArMTExNywxMiBAQAogCW1lbXNldChicC0+dHhfcmluZywgMCwgQjQ0X1RYX1JJTkdfQllURVMpOwogCiAJaWYgKGJwLT5mbGFncyAmIEI0NF9GTEFHX1JYX1JJTkdfSEFDSykKLQkJZG1hX3N5bmNfc2luZ2xlX2Zvcl9kZXZpY2UoYnAtPnNkZXYtPmRldiwgYnAtPnJ4X3JpbmdfZG1hLAorCQlkbWFfc3luY19zaW5nbGVfZm9yX2RldmljZShicC0+c2Rldi0+ZG1hX2RldiwgYnAtPnJ4X3JpbmdfZG1hLAogCQkJICAgICAgICAgICAgICAgICAgRE1BX1RBQkxFX0JZVEVTLAogCQkJICAgICAgICAgICAgICAgICAgRE1BX0JJRElSRUNUSU9OQUwpOwogCiAJaWYgKGJwLT5mbGFncyAmIEI0NF9GTEFHX1RYX1JJTkdfSEFDSykKLQkJZG1hX3N5bmNfc2luZ2xlX2Zvcl9kZXZpY2UoYnAtPnNkZXYtPmRldiwgYnAtPnR4X3JpbmdfZG1hLAorCQlkbWFfc3luY19zaW5nbGVfZm9yX2RldmljZShicC0+c2Rldi0+ZG1hX2RldiwgYnAtPnR4X3JpbmdfZG1hLAogCQkJICAgICAgICAgICAgICAgICAgRE1BX1RBQkxFX0JZVEVTLAogCQkJICAgICAgICAgICAgICAgICAgRE1BX1RPX0RFVklDRSk7CiAKQEAgLTExNDQsMjQgKzExNDQsMjQgQEAKIAlicC0+dHhfYnVmZmVycyA9IE5VTEw7CiAJaWYgKGJwLT5yeF9yaW5nKSB7CiAJCWlmIChicC0+ZmxhZ3MgJiBCNDRfRkxBR19SWF9SSU5HX0hBQ0spIHsKLQkJCWRtYV91bm1hcF9zaW5nbGUoYnAtPnNkZXYtPmRldiwgYnAtPnJ4X3JpbmdfZG1hLAorCQkJZG1hX3VubWFwX3NpbmdsZShicC0+c2Rldi0+ZG1hX2RldiwgYnAtPnJ4X3JpbmdfZG1hLAogCQkJCQlETUFfVEFCTEVfQllURVMsCiAJCQkJCURNQV9CSURJUkVDVElPTkFMKTsKIAkJCWtmcmVlKGJwLT5yeF9yaW5nKTsKIAkJfSBlbHNlCi0JCQlkbWFfZnJlZV9jb2hlcmVudChicC0+c2Rldi0+ZGV2LCBETUFfVEFCTEVfQllURVMsCisJCQlkbWFfZnJlZV9jb2hlcmVudChicC0+c2Rldi0+ZG1hX2RldiwgRE1BX1RBQkxFX0JZVEVTLAogCQkJCQkgICAgYnAtPnJ4X3JpbmcsIGJwLT5yeF9yaW5nX2RtYSk7CiAJCWJwLT5yeF9yaW5nID0gTlVMTDsKIAkJYnAtPmZsYWdzICY9IH5CNDRfRkxBR19SWF9SSU5HX0hBQ0s7CiAJfQogCWlmIChicC0+dHhfcmluZykgewogCQlpZiAoYnAtPmZsYWdzICYgQjQ0X0ZMQUdfVFhfUklOR19IQUNLKSB7Ci0JCQlkbWFfdW5tYXBfc2luZ2xlKGJwLT5zZGV2LT5kZXYsIGJwLT50eF9yaW5nX2RtYSwKKwkJCWRtYV91bm1hcF9zaW5nbGUoYnAtPnNkZXYtPmRtYV9kZXYsIGJwLT50eF9yaW5nX2RtYSwKIAkJCQkJRE1BX1RBQkxFX0JZVEVTLAogCQkJCQlETUFfVE9fREVWSUNFKTsKIAkJCWtmcmVlKGJwLT50eF9yaW5nKTsKIAkJfSBlbHNlCi0JCQlkbWFfZnJlZV9jb2hlcmVudChicC0+c2Rldi0+ZGV2LCBETUFfVEFCTEVfQllURVMsCisJCQlkbWFfZnJlZV9jb2hlcmVudChicC0+c2Rldi0+ZG1hX2RldiwgRE1BX1RBQkxFX0JZVEVTLAogCQkJCQkgICAgYnAtPnR4X3JpbmcsIGJwLT50eF9yaW5nX2RtYSk7CiAJCWJwLT50eF9yaW5nID0gTlVMTDsKIAkJYnAtPmZsYWdzICY9IH5CNDRfRkxBR19UWF9SSU5HX0hBQ0s7CkBAIC0xMTg3LDcgKzExODcsNyBAQAogCQlnb3RvIG91dF9lcnI7CiAKIAlzaXplID0gRE1BX1RBQkxFX0JZVEVTOwotCWJwLT5yeF9yaW5nID0gZG1hX2FsbG9jX2NvaGVyZW50KGJwLT5zZGV2LT5kZXYsIHNpemUsICZicC0+cnhfcmluZ19kbWEsIGdmcCk7CisJYnAtPnJ4X3JpbmcgPSBkbWFfYWxsb2NfY29oZXJlbnQoYnAtPnNkZXYtPmRtYV9kZXYsIHNpemUsICZicC0+cnhfcmluZ19kbWEsIGdmcCk7CiAJaWYgKCFicC0+cnhfcmluZykgewogCQkvKiBBbGxvY2F0aW9uIG1heSBoYXZlIGZhaWxlZCBkdWUgdG8gcGNpX2FsbG9jX2NvbnNpc3RlbnQKIAkJICAgaW5zaXN0aW5nIG9uIHVzZSBvZiBHRlBfRE1BLCB3aGljaCBpcyBtb3JlIHJlc3RyaWN0aXZlCkBAIC0xMTk5LDcgKzExOTksNyBAQAogCQlpZiAoIXJ4X3JpbmcpCiAJCQlnb3RvIG91dF9lcnI7CiAKLQkJcnhfcmluZ19kbWEgPSBkbWFfbWFwX3NpbmdsZShicC0+c2Rldi0+ZGV2LCByeF9yaW5nLAorCQlyeF9yaW5nX2RtYSA9IGRtYV9tYXBfc2luZ2xlKGJwLT5zZGV2LT5kbWFfZGV2LCByeF9yaW5nLAogCQkJICAgICAgICAgICAgICAgICAgICBETUFfVEFCTEVfQllURVMsCiAJCQkgICAgICAgICAgICAgICAgICAgIERNQV9CSURJUkVDVElPTkFMKTsKIApAQCAtMTIxNCw3ICsxMjE0LDcgQEAKIAkJYnAtPmZsYWdzIHw9IEI0NF9GTEFHX1JYX1JJTkdfSEFDSzsKIAl9CiAKLQlicC0+dHhfcmluZyA9IGRtYV9hbGxvY19jb2hlcmVudChicC0+c2Rldi0+ZGV2LCBzaXplLCAmYnAtPnR4X3JpbmdfZG1hLCBnZnApOworCWJwLT50eF9yaW5nID0gZG1hX2FsbG9jX2NvaGVyZW50KGJwLT5zZGV2LT5kbWFfZGV2LCBzaXplLCAmYnAtPnR4X3JpbmdfZG1hLCBnZnApOwogCWlmICghYnAtPnR4X3JpbmcpIHsKIAkJLyogQWxsb2NhdGlvbiBtYXkgaGF2ZSBmYWlsZWQgZHVlIHRvIGRtYV9hbGxvY19jb2hlcmVudAogCQkgICBpbnNpc3Rpbmcgb24gdXNlIG9mIEdGUF9ETUEsIHdoaWNoIGlzIG1vcmUgcmVzdHJpY3RpdmUKQEAgLTEyMjYsNyArMTIyNiw3IEBACiAJCWlmICghdHhfcmluZykKIAkJCWdvdG8gb3V0X2VycjsKIAotCQl0eF9yaW5nX2RtYSA9IGRtYV9tYXBfc2luZ2xlKGJwLT5zZGV2LT5kZXYsIHR4X3JpbmcsCisJCXR4X3JpbmdfZG1hID0gZG1hX21hcF9zaW5nbGUoYnAtPnNkZXYtPmRtYV9kZXYsIHR4X3JpbmcsCiAJCQkgICAgICAgICAgICAgICAgICAgIERNQV9UQUJMRV9CWVRFUywKIAkJCSAgICAgICAgICAgICAgICAgICAgRE1BX1RPX0RFVklDRSk7CiAKQEAgLTIwODIsNiArMjA4MiwxMSBAQAogCQlhZGRyID0gc2Rldi0+YnVzLT5zcHJvbS5ldDBtYWM7CiAJCWJwLT5waHlfYWRkciA9IHNkZXYtPmJ1cy0+c3Byb20uZXQwcGh5YWRkcjsKIAl9CisJLyogU29tZSBST01zIGhhdmUgYnVnZ3kgUEhZIGFkZHJlc3NlcyB3aXRoIHRoZSBoaWdoCisJICogYml0cyBzZXQgKHNpZ24gZXh0ZW5zaW9uPykuIFRydW5jYXRlIHRoZW0gdG8gYQorCSAqIHZhbGlkIFBIWSBhZGRyZXNzLiAqLworCWJwLT5waHlfYWRkciAmPSAweDFGOworCiAJbWVtY3B5KGJwLT5kZXYtPmRldl9hZGRyLCBhZGRyLCA2KTsKIAogCWlmICghaXNfdmFsaWRfZXRoZXJfYWRkcigmYnAtPmRldi0+ZGV2X2FkZHJbMF0pKXsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2JmaW5fbWFjLmMgYi9kcml2ZXJzL25ldC9iZmluX21hYy5jCmluZGV4IGM5OTNhMzIuLjI2YjJkZDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2JmaW5fbWFjLmMKKysrIGIvZHJpdmVycy9uZXQvYmZpbl9tYWMuYwpAQCAtNTc1LDcgKzU3NSw2IEBACiBzdGF0aWMgaW50IGJmNTM3bWFjX2hhcmRfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJCXN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiB7Ci0Jc3RydWN0IGJmNTM3bWFjX2xvY2FsICpscCA9IG5ldGRldl9wcml2KGRldik7CiAJdW5zaWduZWQgaW50IGRhdGE7CiAKIAljdXJyZW50X3R4X3B0ci0+c2tiID0gc2tiOwpAQCAtNjM0LDcgKzYzMyw2IEBACiBzdGF0aWMgdm9pZCBiZjUzN21hY19yeChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogewogCXN0cnVjdCBza19idWZmICpza2IsICpuZXdfc2tiOwotCXN0cnVjdCBiZjUzN21hY19sb2NhbCAqbHAgPSBuZXRkZXZfcHJpdihkZXYpOwogCXVuc2lnbmVkIHNob3J0IGxlbjsKIAogCS8qIGFsbG9jYXRlIGEgbmV3IHNrYiBmb3IgbmV4dCB0aW1lIHJlY2VpdmUgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2JueDJ4LmMgYi9kcml2ZXJzL25ldC9ibngyeC5jCmluZGV4IDhhZjE0MmMuLjdiZGI1YWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2JueDJ4LmMKKysrIGIvZHJpdmVycy9uZXQvYm54MnguYwpAQCAtNjMsOCArNjMsOCBAQAogI2luY2x1ZGUgImJueDJ4LmgiCiAjaW5jbHVkZSAiYm54MnhfaW5pdC5oIgogCi0jZGVmaW5lIERSVl9NT0RVTEVfVkVSU0lPTiAgICAgICIxLjQwLjIyIgotI2RlZmluZSBEUlZfTU9EVUxFX1JFTERBVEUgICAgICAiMjAwNy8xMS8yNyIKKyNkZWZpbmUgRFJWX01PRFVMRV9WRVJTSU9OICAgICAgIjEuNDIuNCIKKyNkZWZpbmUgRFJWX01PRFVMRV9SRUxEQVRFICAgICAgIjIwMDgvNC85IgogI2RlZmluZSBCTlgyWF9CQ19WRVIgICAgCTB4MDQwMjAwCiAKIC8qIFRpbWUgaW4gamlmZmllcyBiZWZvcmUgY29uY2x1ZGluZyB0aGUgdHJhbnNtaXR0ZXIgaXMgaHVuZy4gKi8KQEAgLTYxNTMsNyArNjE1Myw3IEBACiAJCSAgIGZ1bmMsIG1vZGUpOwogCQlSRUdfV1IoYnAsIEdSQ0JBU0VfTUlTQyArIE1JU0NfUkVHSVNURVJTX1JFU0VUX1JFR18xX1NFVCwKIAkJICAgICAgIDB4ZmZmZmZmZmYpOwotCQlSRUdfV1IoYnAsIEdSQ0JBU0VfTUlTQyArIE1JU0NfUkVHSVNURVJTX1JFU0VUX1JFR18xX1NFVCwKKwkJUkVHX1dSKGJwLCBHUkNCQVNFX01JU0MgKyBNSVNDX1JFR0lTVEVSU19SRVNFVF9SRUdfMl9TRVQsCiAJCSAgICAgICAweGZmZmMpOwogCQlibngyeF9pbml0X2Jsb2NrKGJwLCBNSVNDX0NPTU1PTl9TVEFSVCwgTUlTQ19DT01NT05fRU5EKTsKIApAQCAtODAwOCwzOCArODAwOCw2IEBACiAJICAgY21kLT5kdXBsZXgsIGNtZC0+cG9ydCwgY21kLT5waHlfYWRkcmVzcywgY21kLT50cmFuc2NlaXZlciwKIAkgICBjbWQtPmF1dG9uZWcsIGNtZC0+bWF4dHhwa3QsIGNtZC0+bWF4cnhwa3QpOwogCi0Jc3dpdGNoIChjbWQtPnBvcnQpIHsKLQljYXNlIFBPUlRfVFA6Ci0JCWlmICghKGJwLT5zdXBwb3J0ZWQgJiBTVVBQT1JURURfVFApKSB7Ci0JCQlEUChORVRJRl9NU0dfTElOSywgIlRQIG5vdCBzdXBwb3J0ZWRcbiIpOwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQotCQlpZiAoYnAtPnBoeV9mbGFncyAmIFBIWV9YR1hTX0ZMQUcpIHsKLQkJCWJueDJ4X2xpbmtfcmVzZXQoYnApOwotCQkJYm54MnhfbGlua19zZXR0aW5nc19zdXBwb3J0ZWQoYnAsIFNXSVRDSF9DRkdfMUcpOwotCQkJYm54MnhfcGh5X2RlYXNzZXJ0KGJwKTsKLQkJfQotCQlicmVhazsKLQotCWNhc2UgUE9SVF9GSUJSRToKLQkJaWYgKCEoYnAtPnN1cHBvcnRlZCAmIFNVUFBPUlRFRF9GSUJSRSkpIHsKLQkJCURQKE5FVElGX01TR19MSU5LLCAiRklCUkUgbm90IHN1cHBvcnRlZFxuIik7Ci0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQotCi0JCWlmICghKGJwLT5waHlfZmxhZ3MgJiBQSFlfWEdYU19GTEFHKSkgewotCQkJYm54MnhfbGlua19yZXNldChicCk7Ci0JCQlibngyeF9saW5rX3NldHRpbmdzX3N1cHBvcnRlZChicCwgU1dJVENIX0NGR18xMEcpOwotCQkJYm54MnhfcGh5X2RlYXNzZXJ0KGJwKTsKLQkJfQotCQlicmVhazsKLQotCWRlZmF1bHQ6Ci0JCURQKE5FVElGX01TR19MSU5LLCAiVW5rbm93biBwb3J0IHR5cGVcbiIpOwotCQlyZXR1cm4gLUVJTlZBTDsKLQl9Ci0KIAlpZiAoY21kLT5hdXRvbmVnID09IEFVVE9ORUdfRU5BQkxFKSB7CiAJCWlmICghKGJwLT5zdXBwb3J0ZWQgJiBTVVBQT1JURURfQXV0b25lZykpIHsKIAkJCURQKE5FVElGX01TR19MSU5LLCAiQW90b25lZyBub3Qgc3VwcG9ydGVkXG4iKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYwppbmRleCBjYjNjNmZhLi5kMTZlMGUxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMKKysrIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jCkBAIC0zMTAsNyArMzEwLDcgQEAKICAqLwogc3RhdGljIGlubGluZSB2b2lkIF9fZ2V0X3J4X21hY2hpbmVfbG9jayhzdHJ1Y3QgcG9ydCAqcG9ydCkKIHsKLQlzcGluX2xvY2soJihTTEFWRV9BRF9JTkZPKHBvcnQtPnNsYXZlKS5yeF9tYWNoaW5lX2xvY2spKTsKKwlzcGluX2xvY2tfYmgoJihTTEFWRV9BRF9JTkZPKHBvcnQtPnNsYXZlKS5yeF9tYWNoaW5lX2xvY2spKTsKIH0KIAogLyoqCkBAIC0zMjAsNyArMzIwLDcgQEAKICAqLwogc3RhdGljIGlubGluZSB2b2lkIF9fcmVsZWFzZV9yeF9tYWNoaW5lX2xvY2soc3RydWN0IHBvcnQgKnBvcnQpCiB7Ci0Jc3Bpbl91bmxvY2soJihTTEFWRV9BRF9JTkZPKHBvcnQtPnNsYXZlKS5yeF9tYWNoaW5lX2xvY2spKTsKKwlzcGluX3VubG9ja19iaCgmKFNMQVZFX0FEX0lORk8ocG9ydC0+c2xhdmUpLnJ4X21hY2hpbmVfbG9jaykpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYwppbmRleCBiNTdiYzk0Li4zZjU4YzNkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmMKKysrIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jCkBAIC02NzgsMTIgKzY3OCw4IEBACiAJCX0KIAogCQlpZiAoIWxpc3RfZW1wdHkoJmJvbmQtPnZsYW5fbGlzdCkpIHsKLQkJCXVuc2lnbmVkIHNob3J0IHZsYW5faWQ7Ci0JCQlpbnQgcmVzID0gdmxhbl9nZXRfdGFnKHNrYiwgJnZsYW5faWQpOwotCQkJaWYgKCFyZXMpIHsKKwkJCWlmICghdmxhbl9nZXRfdGFnKHNrYiwgJmNsaWVudF9pbmZvLT52bGFuX2lkKSkKIAkJCQljbGllbnRfaW5mby0+dGFnID0gMTsKLQkJCQljbGllbnRfaW5mby0+dmxhbl9pZCA9IHZsYW5faWQ7Ci0JCQl9CiAJCX0KIAogCQlpZiAoIWNsaWVudF9pbmZvLT5hc3NpZ25lZCkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMKaW5kZXggMDk0MmQ4Mi4uMGYwNjc1MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYworKysgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jCkBAIC0zODMsNyArMzgzLDcgQEAKICAqLwogaW50IGJvbmRfZGV2X3F1ZXVlX3htaXQoc3RydWN0IGJvbmRpbmcgKmJvbmQsIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpzbGF2ZV9kZXYpCiB7Ci0JdW5zaWduZWQgc2hvcnQgdmxhbl9pZDsKKwl1bnNpZ25lZCBzaG9ydCB1bmluaXRpYWxpemVkX3Zhcih2bGFuX2lkKTsKIAogCWlmICghbGlzdF9lbXB0eSgmYm9uZC0+dmxhbl9saXN0KSAmJgogCSAgICAhKHNsYXZlX2Rldi0+ZmVhdHVyZXMgJiBORVRJRl9GX0hXX1ZMQU5fVFgpICYmCkBAIC00NTI4LDggKzQ1MjgsNyBAQAogCQluZXRpZl90eF91bmxvY2tfYmgoYm9uZF9kZXYpOwogCQkvKiBSZWxlYXNlIHRoZSBib25kZWQgc2xhdmVzICovCiAJCWJvbmRfcmVsZWFzZV9hbGwoYm9uZF9kZXYpOwotCQlib25kX2RlaW5pdChib25kX2Rldik7Ci0JCXVucmVnaXN0ZXJfbmV0ZGV2aWNlKGJvbmRfZGV2KTsKKwkJYm9uZF9kZXN0cm95KGJvbmQpOwogCX0KIAogI2lmZGVmIENPTkZJR19QUk9DX0ZTCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfc3lzZnMuYyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9zeXNmcy5jCmluZGV4IDkwYTFmMzEuLjk3OWMyZDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9zeXNmcy5jCisrKyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9zeXNmcy5jCkBAIC0zNDEsNiArMzQxLDcgQEAKIAogCWlmIChjb21tYW5kWzBdID09ICctJykgewogCQlkZXYgPSBOVUxMOworCQlvcmlnaW5hbF9tdHUgPSAwOwogCQlib25kX2Zvcl9lYWNoX3NsYXZlKGJvbmQsIHNsYXZlLCBpKQogCQkJaWYgKHN0cm5pY21wKHNsYXZlLT5kZXYtPm5hbWUsIGlmbmFtZSwgSUZOQU1TSVopID09IDApIHsKIAkJCQlkZXYgPSBzbGF2ZS0+ZGV2OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kaW5nLmggYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRpbmcuaAppbmRleCA2N2NjYWQ2Li5hM2M3NGUyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRpbmcuaAorKysgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRpbmcuaApAQCAtMjIsOCArMjIsOCBAQAogI2luY2x1ZGUgImJvbmRfM2FkLmgiCiAjaW5jbHVkZSAiYm9uZF9hbGIuaCIKIAotI2RlZmluZSBEUlZfVkVSU0lPTgkiMy4yLjQiCi0jZGVmaW5lIERSVl9SRUxEQVRFCSJKYW51YXJ5IDI4LCAyMDA4IgorI2RlZmluZSBEUlZfVkVSU0lPTgkiMy4yLjUiCisjZGVmaW5lIERSVl9SRUxEQVRFCSJNYXJjaCAyMSwgMjAwOCIKICNkZWZpbmUgRFJWX05BTUUJImJvbmRpbmciCiAjZGVmaW5lIERSVl9ERVNDUklQVElPTgkiRXRoZXJuZXQgQ2hhbm5lbCBCb25kaW5nIERyaXZlciIKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY3hnYjMvc2dlLmMgYi9kcml2ZXJzL25ldC9jeGdiMy9zZ2UuYwppbmRleCA5NzlmM2ZjLi45OGE2YmJkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9jeGdiMy9zZ2UuYworKysgYi9kcml2ZXJzL25ldC9jeGdiMy9zZ2UuYwpAQCAtNTU3LDkgKzU1Nyw5IEBACiAKIAlmb3IgKGkgPSAwOyBpIDwgU0dFX1JYUV9QRVJfU0VUOyArK2kpCiAJCWlmIChxLT5mbFtpXS5kZXNjKSB7Ci0JCQlzcGluX2xvY2soJmFkYXB0ZXItPnNnZS5yZWdfbG9jayk7CisJCQlzcGluX2xvY2tfaXJxKCZhZGFwdGVyLT5zZ2UucmVnX2xvY2spOwogCQkJdDNfc2dlX2Rpc2FibGVfZmwoYWRhcHRlciwgcS0+ZmxbaV0uY250eHRfaWQpOwotCQkJc3Bpbl91bmxvY2soJmFkYXB0ZXItPnNnZS5yZWdfbG9jayk7CisJCQlzcGluX3VubG9ja19pcnEoJmFkYXB0ZXItPnNnZS5yZWdfbG9jayk7CiAJCQlmcmVlX3J4X2J1ZnMocGRldiwgJnEtPmZsW2ldKTsKIAkJCWtmcmVlKHEtPmZsW2ldLnNkZXNjKTsKIAkJCWRtYV9mcmVlX2NvaGVyZW50KCZwZGV2LT5kZXYsCkBAIC01NzAsOSArNTcwLDkgQEAKIAogCWZvciAoaSA9IDA7IGkgPCBTR0VfVFhRX1BFUl9TRVQ7ICsraSkKIAkJaWYgKHEtPnR4cVtpXS5kZXNjKSB7Ci0JCQlzcGluX2xvY2soJmFkYXB0ZXItPnNnZS5yZWdfbG9jayk7CisJCQlzcGluX2xvY2tfaXJxKCZhZGFwdGVyLT5zZ2UucmVnX2xvY2spOwogCQkJdDNfc2dlX2VuYWJsZV9lY250eHQoYWRhcHRlciwgcS0+dHhxW2ldLmNudHh0X2lkLCAwKTsKLQkJCXNwaW5fdW5sb2NrKCZhZGFwdGVyLT5zZ2UucmVnX2xvY2spOworCQkJc3Bpbl91bmxvY2tfaXJxKCZhZGFwdGVyLT5zZ2UucmVnX2xvY2spOwogCQkJaWYgKHEtPnR4cVtpXS5zZGVzYykgewogCQkJCWZyZWVfdHhfZGVzYyhhZGFwdGVyLCAmcS0+dHhxW2ldLAogCQkJCQkgICAgIHEtPnR4cVtpXS5pbl91c2UpOwpAQCAtNTg2LDkgKzU4Niw5IEBACiAJCX0KIAogCWlmIChxLT5yc3BxLmRlc2MpIHsKLQkJc3Bpbl9sb2NrKCZhZGFwdGVyLT5zZ2UucmVnX2xvY2spOworCQlzcGluX2xvY2tfaXJxKCZhZGFwdGVyLT5zZ2UucmVnX2xvY2spOwogCQl0M19zZ2VfZGlzYWJsZV9yc3BjbnR4dChhZGFwdGVyLCBxLT5yc3BxLmNudHh0X2lkKTsKLQkJc3Bpbl91bmxvY2soJmFkYXB0ZXItPnNnZS5yZWdfbG9jayk7CisJCXNwaW5fdW5sb2NrX2lycSgmYWRhcHRlci0+c2dlLnJlZ19sb2NrKTsKIAkJZG1hX2ZyZWVfY29oZXJlbnQoJnBkZXYtPmRldiwKIAkJCQkgIHEtPnJzcHEuc2l6ZSAqIHNpemVvZihzdHJ1Y3QgcnNwX2Rlc2MpLAogCQkJCSAgcS0+cnNwcS5kZXNjLCBxLT5yc3BxLnBoeXNfYWRkcik7CkBAIC0xMTA3LDkgKzExMDcsMTUgQEAKIAl9CiAKIAlxLT5pbl91c2UgKz0gbmRlc2M7Ci0JaWYgKHVubGlrZWx5KGNyZWRpdHMgLSBuZGVzYyA8IHEtPnN0b3BfdGhyZXMpKQotCQlpZiAoVVNFX0dUUyB8fCAhc2hvdWxkX3Jlc3RhcnRfdHgocSkpCi0JCQl0M19zdG9wX3F1ZXVlKGRldiwgcXMsIHEpOworCWlmICh1bmxpa2VseShjcmVkaXRzIC0gbmRlc2MgPCBxLT5zdG9wX3RocmVzKSkgeworCQl0M19zdG9wX3F1ZXVlKGRldiwgcXMsIHEpOworCisJCWlmIChzaG91bGRfcmVzdGFydF90eChxKSAmJgorCQkgICAgdGVzdF9hbmRfY2xlYXJfYml0KFRYUV9FVEgsICZxcy0+dHhxX3N0b3BwZWQpKSB7CisJCQlxLT5yZXN0YXJ0cysrOworCQkJbmV0aWZfd2FrZV9xdWV1ZShkZXYpOworCQl9CisJfQogCiAJZ2VuID0gcS0+Z2VuOwogCXEtPnVuYWNrZWQgKz0gbmRlc2M7CkBAIC0yNjYxLDcgKzI2NjcsNyBAQAogCQkoMTYgKiAxMDI0KSAtIFNLQl9EQVRBX0FMSUdOKHNpemVvZihzdHJ1Y3Qgc2tiX3NoYXJlZF9pbmZvKSkgOgogCQlNQVhfRlJBTUVfU0laRSArIDIgKyBzaXplb2Yoc3RydWN0IGNwbF9yeF9wa3QpOwogCi0Jc3Bpbl9sb2NrKCZhZGFwdGVyLT5zZ2UucmVnX2xvY2spOworCXNwaW5fbG9ja19pcnEoJmFkYXB0ZXItPnNnZS5yZWdfbG9jayk7CiAKIAkvKiBGTCB0aHJlc2hvbGQgY29tcGFyaXNvbiB1c2VzIDwgKi8KIAlyZXQgPSB0M19zZ2VfaW5pdF9yc3BjbnR4dChhZGFwdGVyLCBxLT5yc3BxLmNudHh0X2lkLCBpcnFfdmVjX2lkeCwKQEAgLTI3MDUsNyArMjcxMSw3IEBACiAJCQlnb3RvIGVycl91bmxvY2s7CiAJfQogCi0Jc3Bpbl91bmxvY2soJmFkYXB0ZXItPnNnZS5yZWdfbG9jayk7CisJc3Bpbl91bmxvY2tfaXJxKCZhZGFwdGVyLT5zZ2UucmVnX2xvY2spOwogCiAJcS0+YWRhcCA9IGFkYXB0ZXI7CiAJcS0+bmV0ZGV2ID0gZGV2OwpAQCAtMjcyMiw3ICsyNzI4LDcgQEAKIAlyZXR1cm4gMDsKIAogICAgICAgZXJyX3VubG9jazoKLQlzcGluX3VubG9jaygmYWRhcHRlci0+c2dlLnJlZ19sb2NrKTsKKwlzcGluX3VubG9ja19pcnEoJmFkYXB0ZXItPnNnZS5yZWdfbG9jayk7CiAgICAgICBlcnI6CiAJdDNfZnJlZV9xc2V0KGFkYXB0ZXIsIHEpOwogCXJldHVybiByZXQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kbTkwMDAuYyBiL2RyaXZlcnMvbmV0L2RtOTAwMC5jCmluZGV4IDFmZTMwNWMuLmQ2M2NjOTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2RtOTAwMC5jCisrKyBiL2RyaXZlcnMvbmV0L2RtOTAwMC5jCkBAIC03OTgsOCArNzk4LDYgQEAKIAkvKiBTZXQgYWRkcmVzcyBmaWx0ZXIgdGFibGUgKi8KIAlkbTkwMDBfaGFzaF90YWJsZShkZXYpOwogCi0JLyogQWN0aXZhdGUgRE05MDAwICovCi0JaW93KGRiLCBETTkwMDBfUkNSLCBSQ1JfRElTX0xPTkcgfCBSQ1JfRElTX0NSQyB8IFJDUl9SWEVOKTsKIAkvKiBFbmFibGUgVFgvUlggaW50ZXJydXB0IG1hc2sgKi8KIAlpb3coZGIsIERNOTAwMF9JTVIsIElNUl9QQVIgfCBJTVJfUFRNIHwgSU1SX1BSTSk7CiAKQEAgLTk3MCw3ICs5NjgsNyBAQAogc3RydWN0IGRtOTAwMF9yeGhkciB7CiAJdTgJUnhQa3RSZWFkeTsKIAl1OAlSeFN0YXR1czsKLQl1MTYJUnhMZW47CisJX19sZTE2CVJ4TGVuOwogfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fKSk7CiAKIC8qCkBAIC0xMTk3LDYgKzExOTUsNyBAQAogCWludCBpLCBvZnQ7CiAJdTMyIGhhc2hfdmFsOwogCXUxNiBoYXNoX3RhYmxlWzRdOworCXU4IHJjciA9IFJDUl9ESVNfTE9ORyB8IFJDUl9ESVNfQ1JDIHwgUkNSX1JYRU47CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAogCWRtOTAwMF9kYmcoZGIsIDEsICJlbnRlcmluZyAlc1xuIiwgX19mdW5jX18pOwpAQCAtMTIxMyw2ICsxMjEyLDEyIEBACiAJLyogYnJvYWRjYXN0IGFkZHJlc3MgKi8KIAloYXNoX3RhYmxlWzNdID0gMHg4MDAwOwogCisJaWYgKGRldi0+ZmxhZ3MgJiBJRkZfUFJPTUlTQykKKwkJcmNyIHw9IFJDUl9QUk1TQzsKKworCWlmIChkZXYtPmZsYWdzICYgSUZGX0FMTE1VTFRJKQorCQlyY3IgfD0gUkNSX0FMTDsKKwogCS8qIHRoZSBtdWx0aWNhc3QgYWRkcmVzcyBpbiBIYXNoIFRhYmxlIDogNjQgYml0cyAqLwogCWZvciAoaSA9IDA7IGkgPCBtY19jbnQ7IGkrKywgbWNwdHIgPSBtY3B0ci0+bmV4dCkgewogCQloYXNoX3ZhbCA9IGV0aGVyX2NyY19sZSg2LCBtY3B0ci0+ZG1pX2FkZHIpICYgMHgzZjsKQEAgLTEyMjUsNiArMTIzMCw3IEBACiAJCWlvdyhkYiwgb2Z0KyssIGhhc2hfdGFibGVbaV0gPj4gOCk7CiAJfQogCisJaW93KGRiLCBETTkwMDBfUkNSLCByY3IpOwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRiLT5sb2NrLCBmbGFncyk7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2UxMDAuYyBiL2RyaXZlcnMvbmV0L2UxMDAuYwppbmRleCAzNmJhNmRjLi4yZDEzOWVjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9lMTAwLmMKKysrIGIvZHJpdmVycy9uZXQvZTEwMC5jCkBAIC05NjAsNyArOTYwLDcgQEAKIAogCS8qIFRlbXBsYXRlIGZvciBhIGZyZXNobHkgYWxsb2NhdGVkIFJGRCAqLwogCW5pYy0+YmxhbmtfcmZkLmNvbW1hbmQgPSAwOwotCW5pYy0+YmxhbmtfcmZkLnJiZCA9IDB4RkZGRkZGRkY7CisJbmljLT5ibGFua19yZmQucmJkID0gY3B1X3RvX2xlMzIoMHhGRkZGRkZGRik7CiAJbmljLT5ibGFua19yZmQuc2l6ZSA9IGNwdV90b19sZTE2KFZMQU5fRVRIX0ZSQU1FX0xFTik7CiAKIAkvKiBNSUkgc2V0dXAgKi8KQEAgLTI3ODIsMTYgKzI3ODIsMTMgQEAKIAl9CiB9CiAKLSNpZmRlZiBDT05GSUdfUE0KIHN0YXRpYyBpbnQgZTEwMF9zdXNwZW5kKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBwbV9tZXNzYWdlX3Qgc3RhdGUpCiB7CiAJc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTsKIAlzdHJ1Y3QgbmljICpuaWMgPSBuZXRkZXZfcHJpdihuZXRkZXYpOwogCiAJaWYgKG5ldGlmX3J1bm5pbmcobmV0ZGV2KSkKLQkJbmFwaV9kaXNhYmxlKCZuaWMtPm5hcGkpOwotCWRlbF90aW1lcl9zeW5jKCZuaWMtPndhdGNoZG9nKTsKLQluZXRpZl9jYXJyaWVyX29mZihuaWMtPm5ldGRldik7CisJCWUxMDBfZG93bihuaWMpOwogCW5ldGlmX2RldmljZV9kZXRhY2gobmV0ZGV2KTsKIAogCXBjaV9zYXZlX3N0YXRlKHBkZXYpOwpAQCAtMjgwNCwxNCArMjgwMSwxMyBAQAogCQlwY2lfZW5hYmxlX3dha2UocGRldiwgUENJX0QzY29sZCwgMCk7CiAJfQogCi0JZnJlZV9pcnEocGRldi0+aXJxLCBuZXRkZXYpOwotCiAJcGNpX2Rpc2FibGVfZGV2aWNlKHBkZXYpOwogCXBjaV9zZXRfcG93ZXJfc3RhdGUocGRldiwgUENJX0QzaG90KTsKIAogCXJldHVybiAwOwogfQogCisjaWZkZWYgQ09ORklHX1BNCiBzdGF0aWMgaW50IGUxMDBfcmVzdW1lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQogewogCXN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYgPSBwY2lfZ2V0X2RydmRhdGEocGRldik7CkBAIC0yODMyLDI2ICsyODI4LDcgQEAKIAogc3RhdGljIHZvaWQgZTEwMF9zaHV0ZG93bihzdHJ1Y3QgcGNpX2RldiAqcGRldikKIHsKLQlzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2ID0gcGNpX2dldF9kcnZkYXRhKHBkZXYpOwotCXN0cnVjdCBuaWMgKm5pYyA9IG5ldGRldl9wcml2KG5ldGRldik7Ci0KLQlpZiAobmV0aWZfcnVubmluZyhuZXRkZXYpKQotCQluYXBpX2Rpc2FibGUoJm5pYy0+bmFwaSk7Ci0JZGVsX3RpbWVyX3N5bmMoJm5pYy0+d2F0Y2hkb2cpOwotCW5ldGlmX2NhcnJpZXJfb2ZmKG5pYy0+bmV0ZGV2KTsKLQotCWlmICgobmljLT5mbGFncyAmIHdvbF9tYWdpYykgfCBlMTAwX2FzZihuaWMpKSB7Ci0JCXBjaV9lbmFibGVfd2FrZShwZGV2LCBQQ0lfRDNob3QsIDEpOwotCQlwY2lfZW5hYmxlX3dha2UocGRldiwgUENJX0QzY29sZCwgMSk7Ci0JfSBlbHNlIHsKLQkJcGNpX2VuYWJsZV93YWtlKHBkZXYsIFBDSV9EM2hvdCwgMCk7Ci0JCXBjaV9lbmFibGVfd2FrZShwZGV2LCBQQ0lfRDNjb2xkLCAwKTsKLQl9Ci0KLQlmcmVlX2lycShwZGV2LT5pcnEsIG5ldGRldik7Ci0KLQlwY2lfZGlzYWJsZV9kZXZpY2UocGRldik7Ci0JcGNpX3NldF9wb3dlcl9zdGF0ZShwZGV2LCBQQ0lfRDNob3QpOworCWUxMDBfc3VzcGVuZChwZGV2LCBQTVNHX1NVU1BFTkQpOwogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0gUENJIEVycm9yIFJlY292ZXJ5IGluZnJhc3RydWN0dXJlICAtLS0tLS0tLS0tLS0tLSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZWhlYS9laGVhLmggYi9kcml2ZXJzL25ldC9laGVhL2VoZWEuaAppbmRleCA3YzRlYWQzLi5hOGQzMjgwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9laGVhL2VoZWEuaAorKysgYi9kcml2ZXJzL25ldC9laGVhL2VoZWEuaApAQCAtNDAsNyArNDAsNyBAQAogI2luY2x1ZGUgPGFzbS9pby5oPgogCiAjZGVmaW5lIERSVl9OQU1FCSJlaGVhIgotI2RlZmluZSBEUlZfVkVSU0lPTgkiRUhFQV8wMDg3IgorI2RlZmluZSBEUlZfVkVSU0lPTgkiRUhFQV8wMDkwIgogCiAvKiBlSEVBIGNhcGFiaWxpdHkgZmxhZ3MgKi8KICNkZWZpbmUgRExQQVJfUE9SVF9BRERfUkVNIDEKQEAgLTM3MSw2ICszNzEsNyBAQAogCXN0cnVjdCBlaGVhX3Ffc2tiX2FyciBycTJfc2tiYTsKIAlzdHJ1Y3QgZWhlYV9xX3NrYl9hcnIgcnEzX3NrYmE7CiAJc3RydWN0IGVoZWFfcV9za2JfYXJyIHNxX3NrYmE7CisJaW50IHNxX3NrYmFfc2l6ZTsKIAlzcGlubG9ja190IG5ldGlmX3F1ZXVlOwogCWludCBxdWV1ZV9zdG9wcGVkOwogCWludCBzd3FlX3JlZmlsbF90aDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2VoZWEvZWhlYV9tYWluLmMgYi9kcml2ZXJzL25ldC9laGVhL2VoZWFfbWFpbi5jCmluZGV4IDIxYWY2NzQuLmY0NjBiNjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2VoZWEvZWhlYV9tYWluLmMKKysrIGIvZHJpdmVycy9uZXQvZWhlYS9laGVhX21haW4uYwpAQCAtMzQ5LDcgKzM0OSw4IEBACiAJcHItPnJxMV9za2JhLm9zX3NrYnMgPSAwOwogCiAJaWYgKHVubGlrZWx5KHRlc3RfYml0KF9fRUhFQV9TVE9QX1hGRVIsICZlaGVhX2RyaXZlcl9mbGFncykpKSB7Ci0JCXByLT5ycTFfc2tiYS5pbmRleCA9IGluZGV4OworCQlpZiAobnJfb2Zfd3FlcyA+IDApCisJCQlwci0+cnExX3NrYmEuaW5kZXggPSBpbmRleDsKIAkJcHItPnJxMV9za2JhLm9zX3NrYnMgPSBmaWxsX3dxZXM7CiAJCXJldHVybjsKIAl9CkBAIC0xNDY0LDcgKzE0NjUsOSBAQAogCQkJICBpbml0X2F0dHItPmFjdF9ucl9yd3Flc19ycTIsCiAJCQkgIGluaXRfYXR0ci0+YWN0X25yX3J3cWVzX3JxMyk7CiAKLQlyZXQgPSBlaGVhX2luaXRfcV9za2JhKCZwci0+c3Ffc2tiYSwgaW5pdF9hdHRyLT5hY3RfbnJfc2VuZF93cWVzICsgMSk7CisJcHItPnNxX3NrYmFfc2l6ZSA9IGluaXRfYXR0ci0+YWN0X25yX3NlbmRfd3FlcyArIDE7CisKKwlyZXQgPSBlaGVhX2luaXRfcV9za2JhKCZwci0+c3Ffc2tiYSwgcHItPnNxX3NrYmFfc2l6ZSk7CiAJcmV0IHw9IGVoZWFfaW5pdF9xX3NrYmEoJnByLT5ycTFfc2tiYSwgaW5pdF9hdHRyLT5hY3RfbnJfcndxZXNfcnExICsgMSk7CiAJcmV0IHw9IGVoZWFfaW5pdF9xX3NrYmEoJnByLT5ycTJfc2tiYSwgaW5pdF9hdHRyLT5hY3RfbnJfcndxZXNfcnEyICsgMSk7CiAJcmV0IHw9IGVoZWFfaW5pdF9xX3NrYmEoJnByLT5ycTNfc2tiYSwgaW5pdF9hdHRyLT5hY3RfbnJfcndxZXNfcnEzICsgMSk7CkBAIC0yNjIxLDYgKzI2MjQsMjIgQEAKIAl9CiB9CiAKK3ZvaWQgZWhlYV9mbHVzaF9zcShzdHJ1Y3QgZWhlYV9wb3J0ICpwb3J0KQoreworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8IHBvcnQtPm51bV9kZWZfcXBzICsgcG9ydC0+bnVtX2FkZF90eF9xcHM7IGkrKykgeworCQlzdHJ1Y3QgZWhlYV9wb3J0X3JlcyAqcHIgPSAmcG9ydC0+cG9ydF9yZXNbaV07CisJCWludCBzd3FlX21heCA9IHByLT5zcV9za2JhX3NpemUgLSAyIC0gcHItPnN3cWVfbGxfY291bnQ7CisJCWludCBrID0gMDsKKwkJd2hpbGUgKGF0b21pY19yZWFkKCZwci0+c3dxZV9hdmFpbCkgPCBzd3FlX21heCkgeworCQkJbXNsZWVwKDUpOworCQkJaWYgKCsrayA9PSAyMCkKKwkJCQlicmVhazsKKwkJfQorCX0KK30KKwogaW50IGVoZWFfc3RvcF9xcHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3QgZWhlYV9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYoZGV2KTsKQEAgLTI4NDUsNiArMjg2NCw3IEBACiAJCQkJCWlmIChkZXYtPmZsYWdzICYgSUZGX1VQKSB7CiAJCQkJCQlkb3duKCZwb3J0LT5wb3J0X2xvY2spOwogCQkJCQkJbmV0aWZfc3RvcF9xdWV1ZShkZXYpOworCQkJCQkJZWhlYV9mbHVzaF9zcShwb3J0KTsKIAkJCQkJCXJldCA9IGVoZWFfc3RvcF9xcHMoZGV2KTsKIAkJCQkJCWlmIChyZXQpIHsKIAkJCQkJCQl1cCgmcG9ydC0+cG9ydF9sb2NrKTsKQEAgLTMxMDgsNyArMzEyOCw3IEBACiAJZGV2LT52bGFuX3J4X2FkZF92aWQgPSBlaGVhX3ZsYW5fcnhfYWRkX3ZpZDsKIAlkZXYtPnZsYW5fcnhfa2lsbF92aWQgPSBlaGVhX3ZsYW5fcnhfa2lsbF92aWQ7CiAJZGV2LT5mZWF0dXJlcyA9IE5FVElGX0ZfU0cgfCBORVRJRl9GX0ZSQUdMSVNUIHwgTkVUSUZfRl9UU08KLQkJICAgICAgfCBORVRJRl9GX0hJR0hETUEgfCBORVRJRl9GX0hXX0NTVU0gfCBORVRJRl9GX0hXX1ZMQU5fVFgKKwkJICAgICAgfCBORVRJRl9GX0hJR0hETUEgfCBORVRJRl9GX0lQX0NTVU0gfCBORVRJRl9GX0hXX1ZMQU5fVFgKIAkJICAgICAgfCBORVRJRl9GX0hXX1ZMQU5fUlggfCBORVRJRl9GX0hXX1ZMQU5fRklMVEVSCiAJCSAgICAgIHwgTkVUSUZfRl9MTFRYOwogCWRldi0+dHhfdGltZW91dCA9ICZlaGVhX3R4X3dhdGNoZG9nOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZW5jMjhqNjAuYyBiL2RyaXZlcnMvbmV0L2VuYzI4ajYwLmMKaW5kZXggMDgwOWE2YS4uNDZhOTBlOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZW5jMjhqNjAuYworKysgYi9kcml2ZXJzL25ldC9lbmMyOGo2MC5jCkBAIC05MDAsNyArOTAwLDcgQEAKIAkJaWYgKFJTVl9HRVRCSVQocnhzdGF0LCBSU1ZfTEVOQ0hFQ0tFUlIpKQogCQkJbmRldi0+c3RhdHMucnhfZnJhbWVfZXJyb3JzKys7CiAJfSBlbHNlIHsKLQkJc2tiID0gZGV2X2FsbG9jX3NrYihsZW4pOworCQlza2IgPSBkZXZfYWxsb2Nfc2tiKGxlbiArIE5FVF9JUF9BTElHTik7CiAJCWlmICghc2tiKSB7CiAJCQlpZiAobmV0aWZfbXNnX3J4X2Vycihwcml2KSkKIAkJCQlkZXZfZXJyKCZuZGV2LT5kZXYsCkBAIC05MDgsNiArOTA4LDcgQEAKIAkJCW5kZXYtPnN0YXRzLnJ4X2Ryb3BwZWQrKzsKIAkJfSBlbHNlIHsKIAkJCXNrYi0+ZGV2ID0gbmRldjsKKwkJCXNrYl9yZXNlcnZlKHNrYiwgTkVUX0lQX0FMSUdOKTsKIAkJCS8qIGNvcHkgdGhlIHBhY2tldCBmcm9tIHRoZSByZWNlaXZlIGJ1ZmZlciAqLwogCQkJZW5jMjhqNjBfbWVtX3JlYWQocHJpdiwgcHJpdi0+bmV4dF9wa19wdHIgKyBzaXplb2YocnN2KSwKIAkJCQkJbGVuLCBza2JfcHV0KHNrYiwgbGVuKSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9lcGljMTAwLmMgYi9kcml2ZXJzL25ldC9lcGljMTAwLmMKaW5kZXggMGIzNjViOC4uNzYxMThkZGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2VwaWMxMDAuYworKysgYi9kcml2ZXJzL25ldC9lcGljMTAwLmMKQEAgLTEzMSw4ICsxMzEsOCBAQAogCiBJVmIuIFJlZmVyZW5jZXMKIAotaHR0cDovL3d3dy5zbXNjLmNvbS9tYWluL2RhdGFzaGVldHMvODNjMTcxLnBkZgotaHR0cDovL3d3dy5zbXNjLmNvbS9tYWluL2RhdGFzaGVldHMvODNjMTc1LnBkZgoraHR0cDovL3d3dy5zbXNjLmNvbS9tYWluL3Rvb2xzL2Rpc2NvbnRpbnVlZC84M2MxNzEucGRmCitodHRwOi8vd3d3LnNtc2MuY29tL21haW4vdG9vbHMvZGlzY29udGludWVkLzgzYzE3NS5wZGYKIGh0dHA6Ly9zY3lsZC5jb20vZXhwZXJ0L05XYXkuaHRtbAogaHR0cDovL3d3dy5uYXRpb25hbC5jb20vcGYvRFAvRFA4Mzg0MEEuaHRtbAogCkBAIC0yMjcsNyArMjI3LDEyIEBACiAJMCwgMHgwQzAwLCAweDBDMDAsIDB4MjAwMCwgIDB4MDEwMCwgMHgyMTAwLCAwLCAwLAogCTAsIDAsIDAsIDAsICAwLCAwLCAwLCAwIH07CiAKLS8qIFRoZSBFUElDMTAwIFJ4IGFuZCBUeCBidWZmZXIgZGVzY3JpcHRvcnMuICovCisvKgorICogVGhlIEVQSUMxMDAgUnggYW5kIFR4IGJ1ZmZlciBkZXNjcmlwdG9ycy4gIE5vdGUgdGhhdCB0aGVzZQorICogcmVhbGx5IEFSRSBob3N0LWVuZGlhbjsgaXQncyBub3QgYSBtaXNhbm5vdGF0aW9uLiAgV2UgdGVsbAorICogdGhlIGNhcmQgdG8gYnl0ZXN3YXAgdGhlbSBpbnRlcm5hbGx5IG9uIGJpZy1lbmRpYW4gaG9zdHMgLQorICogbG9vayBmb3IgI2lmZGVmIENPTkZJR19CSUdfRU5ESUFOIGluIGVwaWNfb3BlbigpLgorICovCiAKIHN0cnVjdCBlcGljX3R4X2Rlc2MgewogCXUzMiB0eHN0YXR1czsKQEAgLTQxOCw3ICs0MjMsNyBAQAogCiAJLyogTm90ZTogdGhlICcxNzUgZG9lcyBub3QgaGF2ZSBhIHNlcmlhbCBFRVBST00uICovCiAJZm9yIChpID0gMDsgaSA8IDM7IGkrKykKLQkJKCh1MTYgKilkZXYtPmRldl9hZGRyKVtpXSA9IGxlMTZfdG9fY3B1KGludyhpb2FkZHIgKyBMQU4wICsgaSo0KSk7CisJCSgoX19sZTE2ICopZGV2LT5kZXZfYWRkcilbaV0gPSBjcHVfdG9fbGUxNihpbncoaW9hZGRyICsgTEFOMCArIGkqNCkpOwogCiAJaWYgKGRlYnVnID4gMikgewogCQlkZXZfcHJpbnRrKEtFUk5fREVCVUcsICZwZGV2LT5kZXYsICJFRVBST00gY29udGVudHM6XG4iKTsKQEAgLTY4Miw3ICs2ODcsOCBAQAogCWlmIChlcC0+Y2hpcF9mbGFncyAmIE1JSV9QV1JEV04pCiAJCW91dGwoKGlubChpb2FkZHIgKyBOVkNUTCkgJiB+MHgwMDNDKSB8IDB4NDgwMCwgaW9hZGRyICsgTlZDVEwpOwogCi0jaWYgZGVmaW5lZChfX3Bvd2VycGNfXykgfHwgZGVmaW5lZChfX3NwYXJjX18pCQkvKiBCaWcgZW5kaWFuICovCisJLyogVGVsbCB0aGUgY2hpcCB0byBieXRlc3dhcCBkZXNjcmlwdG9ycyBvbiBiaWctZW5kaWFuIGhvc3RzICovCisjaWZkZWYgQ09ORklHX0JJR19FTkRJQU4KIAlvdXRsKDB4NDQzMiB8IChSWF9GSUZPX1RIUkVTSDw8OCksIGlvYWRkciArIEdFTkNUTCk7CiAJaW5sKGlvYWRkciArIEdFTkNUTCk7CiAJb3V0bCgweDA0MzIgfCAoUlhfRklGT19USFJFU0g8PDgpLCBpb2FkZHIgKyBHRU5DVEwpOwpAQCAtNjk1LDcgKzcwMSw3IEBACiAJdWRlbGF5KDIwKTsgLyogTG9va3MgbGlrZSBFUElJIG5lZWRzIHRoYXQgaWYgeW91IHdhbnQgcmVsaWFibGUgUlggaW5pdC4gRklYTUU6IHBjaSBwb3N0aW5nIGJ1Zz8gKi8KIAogCWZvciAoaSA9IDA7IGkgPCAzOyBpKyspCi0JCW91dGwoY3B1X3RvX2xlMTYoKCh1MTYqKWRldi0+ZGV2X2FkZHIpW2ldKSwgaW9hZGRyICsgTEFOMCArIGkqNCk7CisJCW91dGwobGUxNl90b19jcHUoKChfX2xlMTYqKWRldi0+ZGV2X2FkZHIpW2ldKSwgaW9hZGRyICsgTEFOMCArIGkqNCk7CiAKIAllcC0+dHhfdGhyZXNob2xkID0gVFhfRklGT19USFJFU0g7CiAJb3V0bChlcC0+dHhfdGhyZXNob2xkLCBpb2FkZHIgKyBUeFRocmVzaCk7CkBAIC03OTgsNyArODA0LDcgQEAKIAlmb3IgKGkgPSAxNjsgaSA+IDA7IGktLSkKIAkJb3V0bCgweDAwMDgsIGlvYWRkciArIFRFU1QxKTsKIAotI2lmIGRlZmluZWQoX19wb3dlcnBjX18pIHx8IGRlZmluZWQoX19zcGFyY19fKQkJLyogQmlnIGVuZGlhbiAqLworI2lmZGVmIENPTkZJR19CSUdfRU5ESUFOCiAJb3V0bCgweDA0MzIgfCAoUlhfRklGT19USFJFU0g8PDgpLCBpb2FkZHIgKyBHRU5DVEwpOwogI2Vsc2UKIAlvdXRsKDB4MDQxMiB8IChSWF9GSUZPX1RIUkVTSDw8OCksIGlvYWRkciArIEdFTkNUTCk7CkBAIC04MDgsNyArODE0LDcgQEAKIAkJb3V0bCgoaW5sKGlvYWRkciArIE5WQ1RMKSAmIH4weDAwM0MpIHwgMHg0ODAwLCBpb2FkZHIgKyBOVkNUTCk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKQotCQlvdXRsKGNwdV90b19sZTE2KCgodTE2KilkZXYtPmRldl9hZGRyKVtpXSksIGlvYWRkciArIExBTjAgKyBpKjQpOworCQlvdXRsKGxlMTZfdG9fY3B1KCgoX19sZTE2KilkZXYtPmRldl9hZGRyKVtpXSksIGlvYWRkciArIExBTjAgKyBpKjQpOwogCiAJZXAtPnR4X3RocmVzaG9sZCA9IFRYX0ZJRk9fVEhSRVNIOwogCW91dGwoZXAtPnR4X3RocmVzaG9sZCwgaW9hZGRyICsgVHhUaHJlc2gpOwpAQCAtOTE5LDcgKzkyNSw3IEBACiAJLyogSW5pdGlhbGl6ZSBhbGwgUnggZGVzY3JpcHRvcnMuICovCiAJZm9yIChpID0gMDsgaSA8IFJYX1JJTkdfU0laRTsgaSsrKSB7CiAJCWVwLT5yeF9yaW5nW2ldLnJ4c3RhdHVzID0gMDsKLQkJZXAtPnJ4X3JpbmdbaV0uYnVmbGVuZ3RoID0gY3B1X3RvX2xlMzIoZXAtPnJ4X2J1Zl9zeik7CisJCWVwLT5yeF9yaW5nW2ldLmJ1Zmxlbmd0aCA9IGVwLT5yeF9idWZfc3o7CiAJCWVwLT5yeF9yaW5nW2ldLm5leHQgPSBlcC0+cnhfcmluZ19kbWEgKwogCQkJCSAgICAgIChpKzEpKnNpemVvZihzdHJ1Y3QgZXBpY19yeF9kZXNjKTsKIAkJZXAtPnJ4X3NrYnVmZltpXSA9IE5VTEw7CkBAIC05MzYsNyArOTQyLDcgQEAKIAkJc2tiX3Jlc2VydmUoc2tiLCAyKTsJLyogMTYgYnl0ZSBhbGlnbiB0aGUgSVAgaGVhZGVyLiAqLwogCQllcC0+cnhfcmluZ1tpXS5idWZhZGRyID0gcGNpX21hcF9zaW5nbGUoZXAtPnBjaV9kZXYsCiAJCQlza2ItPmRhdGEsIGVwLT5yeF9idWZfc3osIFBDSV9ETUFfRlJPTURFVklDRSk7Ci0JCWVwLT5yeF9yaW5nW2ldLnJ4c3RhdHVzID0gY3B1X3RvX2xlMzIoRGVzY093bik7CisJCWVwLT5yeF9yaW5nW2ldLnJ4c3RhdHVzID0gRGVzY093bjsKIAl9CiAJZXAtPmRpcnR5X3J4ID0gKHVuc2lnbmVkIGludCkoaSAtIFJYX1JJTkdfU0laRSk7CiAKQEAgLTk3NCwyMCArOTgwLDIwIEBACiAJZXAtPnR4X3JpbmdbZW50cnldLmJ1ZmFkZHIgPSBwY2lfbWFwX3NpbmdsZShlcC0+cGNpX2Rldiwgc2tiLT5kYXRhLAogCQkgCQkJICAgICAgICAgICAgc2tiLT5sZW4sIFBDSV9ETUFfVE9ERVZJQ0UpOwogCWlmIChmcmVlX2NvdW50IDwgVFhfUVVFVUVfTEVOLzIpIHsvKiBUeXBpY2FsIHBhdGggKi8KLQkJY3RybF93b3JkID0gY3B1X3RvX2xlMzIoMHgxMDAwMDApOyAvKiBObyBpbnRlcnJ1cHQgKi8KKwkJY3RybF93b3JkID0gMHgxMDAwMDA7IC8qIE5vIGludGVycnVwdCAqLwogCX0gZWxzZSBpZiAoZnJlZV9jb3VudCA9PSBUWF9RVUVVRV9MRU4vMikgewotCQljdHJsX3dvcmQgPSBjcHVfdG9fbGUzMigweDE0MDAwMCk7IC8qIFR4LWRvbmUgaW50ci4gKi8KKwkJY3RybF93b3JkID0gMHgxNDAwMDA7IC8qIFR4LWRvbmUgaW50ci4gKi8KIAl9IGVsc2UgaWYgKGZyZWVfY291bnQgPCBUWF9RVUVVRV9MRU4gLSAxKSB7Ci0JCWN0cmxfd29yZCA9IGNwdV90b19sZTMyKDB4MTAwMDAwKTsgLyogTm8gVHgtZG9uZSBpbnRyLiAqLworCQljdHJsX3dvcmQgPSAweDEwMDAwMDsgLyogTm8gVHgtZG9uZSBpbnRyLiAqLwogCX0gZWxzZSB7CiAJCS8qIExlYXZlIHJvb20gZm9yIGFuIGFkZGl0aW9uYWwgZW50cnkuICovCi0JCWN0cmxfd29yZCA9IGNwdV90b19sZTMyKDB4MTQwMDAwKTsgLyogVHgtZG9uZSBpbnRyLiAqLworCQljdHJsX3dvcmQgPSAweDE0MDAwMDsgLyogVHgtZG9uZSBpbnRyLiAqLwogCQllcC0+dHhfZnVsbCA9IDE7CiAJfQotCWVwLT50eF9yaW5nW2VudHJ5XS5idWZsZW5ndGggPSBjdHJsX3dvcmQgfCBjcHVfdG9fbGUzMihza2ItPmxlbik7CisJZXAtPnR4X3JpbmdbZW50cnldLmJ1Zmxlbmd0aCA9IGN0cmxfd29yZCB8IHNrYi0+bGVuOwogCWVwLT50eF9yaW5nW2VudHJ5XS50eHN0YXR1cyA9CiAJCSgoc2tiLT5sZW4gPj0gRVRIX1pMRU4gPyBza2ItPmxlbiA6IEVUSF9aTEVOKSA8PCAxNikKLQkJfCBjcHVfdG9fbGUzMihEZXNjT3duKTsKKwkJCSAgICB8IERlc2NPd247CiAKIAllcC0+Y3VyX3R4Kys7CiAJaWYgKGVwLT50eF9mdWxsKQpAQCAtMTA0MSw3ICsxMDQ3LDcgQEAKIAlmb3IgKGRpcnR5X3R4ID0gZXAtPmRpcnR5X3R4OyBjdXJfdHggLSBkaXJ0eV90eCA+IDA7IGRpcnR5X3R4KyspIHsKIAkJc3RydWN0IHNrX2J1ZmYgKnNrYjsKIAkJaW50IGVudHJ5ID0gZGlydHlfdHggJSBUWF9SSU5HX1NJWkU7Ci0JCWludCB0eHN0YXR1cyA9IGxlMzJfdG9fY3B1KGVwLT50eF9yaW5nW2VudHJ5XS50eHN0YXR1cyk7CisJCWludCB0eHN0YXR1cyA9IGVwLT50eF9yaW5nW2VudHJ5XS50eHN0YXR1czsKIAogCQlpZiAodHhzdGF0dXMgJiBEZXNjT3duKQogCQkJYnJlYWs7CS8qIEl0IHN0aWxsIGhhc24ndCBiZWVuIFR4ZWQgKi8KQEAgLTExNjMsOCArMTE2OSw4IEBACiAJCXJ4X3dvcmtfbGltaXQgPSBidWRnZXQ7CiAKIAkvKiBJZiB3ZSBvd24gdGhlIG5leHQgZW50cnksIGl0J3MgYSBuZXcgcGFja2V0LiBTZW5kIGl0IHVwLiAqLwotCXdoaWxlICgoZXAtPnJ4X3JpbmdbZW50cnldLnJ4c3RhdHVzICYgY3B1X3RvX2xlMzIoRGVzY093bikpID09IDApIHsKLQkJaW50IHN0YXR1cyA9IGxlMzJfdG9fY3B1KGVwLT5yeF9yaW5nW2VudHJ5XS5yeHN0YXR1cyk7CisJd2hpbGUgKChlcC0+cnhfcmluZ1tlbnRyeV0ucnhzdGF0dXMgJiBEZXNjT3duKSA9PSAwKSB7CisJCWludCBzdGF0dXMgPSBlcC0+cnhfcmluZ1tlbnRyeV0ucnhzdGF0dXM7CiAKIAkJaWYgKGRlYnVnID4gNCkKIAkJCXByaW50ayhLRVJOX0RFQlVHICIgIGVwaWNfcngoKSBzdGF0dXMgd2FzICU4Ljh4LlxuIiwgc3RhdHVzKTsKQEAgLTEyMzgsNyArMTI0NCw4IEBACiAJCQkJc2tiLT5kYXRhLCBlcC0+cnhfYnVmX3N6LCBQQ0lfRE1BX0ZST01ERVZJQ0UpOwogCQkJd29ya19kb25lKys7CiAJCX0KLQkJZXAtPnJ4X3JpbmdbZW50cnldLnJ4c3RhdHVzID0gY3B1X3RvX2xlMzIoRGVzY093bik7CisJCS8qIEFWOiBzaG91bGRuJ3Qgd2UgYWRkIGEgYmFycmllciBoZXJlPyAqLworCQllcC0+cnhfcmluZ1tlbnRyeV0ucnhzdGF0dXMgPSBEZXNjT3duOwogCX0KIAlyZXR1cm4gd29ya19kb25lOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZmVjX21wYzUyeHguYyBiL2RyaXZlcnMvbmV0L2ZlY19tcGM1Mnh4LmMKaW5kZXggNThiNzFlNi4uZmU1OWMyNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZmVjX21wYzUyeHguYworKysgYi9kcml2ZXJzL25ldC9mZWNfbXBjNTJ4eC5jCkBAIC0xMDU3LDYgKzEwNTcsNyBAQAogI2VuZGlmCiAKIHN0YXRpYyBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG1wYzUyeHhfZmVjX21hdGNoW10gPSB7CisJeyAudHlwZSA9ICJuZXR3b3JrIiwgLmNvbXBhdGlibGUgPSAiZnNsLG1wYzUyMDBiLWZlYyIsIH0sCiAJeyAudHlwZSA9ICJuZXR3b3JrIiwgLmNvbXBhdGlibGUgPSAiZnNsLG1wYzUyMDAtZmVjIiwgfSwKIAl7IC50eXBlID0gIm5ldHdvcmsiLCAuY29tcGF0aWJsZSA9ICJtcGM1MjAwLWZlYyIsIH0sCiAJeyB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9mZWNfbXBjNTJ4eF9waHkuYyBiL2RyaXZlcnMvbmV0L2ZlY19tcGM1Mnh4X3BoeS5jCmluZGV4IDE4Mzc1ODRjLi4xZDBjZDFkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9mZWNfbXBjNTJ4eF9waHkuYworKysgYi9kcml2ZXJzL25ldC9mZWNfbXBjNTJ4eF9waHkuYwpAQCAtMTA5LDcgKzEwOSw4IEBACiAJCWludCBpcnEgPSBpcnFfb2ZfcGFyc2VfYW5kX21hcChjaGlsZCwgMCk7CiAJCWlmIChpcnEgIT0gTk9fSVJRKSB7CiAJCQljb25zdCB1MzIgKmlkID0gb2ZfZ2V0X3Byb3BlcnR5KGNoaWxkLCAicmVnIiwgTlVMTCk7Ci0JCQlidXMtPmlycVsqaWRdID0gaXJxOworCQkJaWYgKGlkKQorCQkJCWJ1cy0+aXJxWyppZF0gPSBpcnE7CiAJCX0KIAl9CiAKQEAgLTE3OCw2ICsxNzksNyBAQAogCiBzdGF0aWMgc3RydWN0IG9mX2RldmljZV9pZCBtcGM1Mnh4X2ZlY19tZGlvX21hdGNoW10gPSB7CiAJeyAuY29tcGF0aWJsZSA9ICJmc2wsbXBjNTIwMGItbWRpbyIsIH0sCisJeyAuY29tcGF0aWJsZSA9ICJmc2wsbXBjNTIwMC1tZGlvIiwgfSwKIAl7IC5jb21wYXRpYmxlID0gIm1wYzUyMDBiLWZlYy1waHkiLCB9LAogCXt9CiB9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZm9yY2VkZXRoLmMgYi9kcml2ZXJzL25ldC9mb3JjZWRldGguYwppbmRleCA4MDFiNGQ5Li45ZjA4OGE0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9mb3JjZWRldGguYworKysgYi9kcml2ZXJzL25ldC9mb3JjZWRldGguYwpAQCAtMTg0LDYgKzE4NCw3IEBACiAjZGVmaW5lIERFVl9IQVNfUEFVU0VGUkFNRV9UWF9WMSAgIDB4MDgwMDAgIC8qIGRldmljZSBzdXBwb3J0cyB0eCBwYXVzZSBmcmFtZXMgdmVyc2lvbiAxICovCiAjZGVmaW5lIERFVl9IQVNfUEFVU0VGUkFNRV9UWF9WMiAgIDB4MTAwMDAgIC8qIGRldmljZSBzdXBwb3J0cyB0eCBwYXVzZSBmcmFtZXMgdmVyc2lvbiAyICovCiAjZGVmaW5lIERFVl9IQVNfUEFVU0VGUkFNRV9UWF9WMyAgIDB4MjAwMDAgIC8qIGRldmljZSBzdXBwb3J0cyB0eCBwYXVzZSBmcmFtZXMgdmVyc2lvbiAzICovCisjZGVmaW5lIERFVl9ORUVEX1RYX0xJTUlUICAgICAgICAgIDB4NDAwMDAgIC8qIGRldmljZSBuZWVkcyB0byBsaW1pdCB0eCAqLwogCiBlbnVtIHsKIAlOdlJlZ0lycVN0YXR1cyA9IDB4MDAwLApAQCAtNjM1LDYgKzYzNiw4IEBACiAjZGVmaW5lIE5WX1JFU1RBUlRfVFggICAgICAgICAweDEKICNkZWZpbmUgTlZfUkVTVEFSVF9SWCAgICAgICAgIDB4MgogCisjZGVmaW5lIE5WX1RYX0xJTUlUX0NPVU5UICAgICAxNgorCiAvKiBzdGF0aXN0aWNzICovCiBzdHJ1Y3QgbnZfZXRodG9vbF9zdHIgewogCWNoYXIgbmFtZVtFVEhfR1NUUklOR19MRU5dOwpAQCAtNzQzLDYgKzc0Niw4IEBACiAJc3RydWN0IHNrX2J1ZmYgKnNrYjsKIAlkbWFfYWRkcl90IGRtYTsKIAl1bnNpZ25lZCBpbnQgZG1hX2xlbjsKKwlzdHJ1Y3QgcmluZ19kZXNjX2V4ICpmaXJzdF90eF9kZXNjOworCXN0cnVjdCBudl9za2JfbWFwICpuZXh0X3R4X2N0eDsKIH07CiAKIC8qCkBAIC04MjcsNiArODMyLDEwIEBACiAJdW5pb24gcmluZ190eXBlIHR4X3Jpbmc7CiAJdTMyIHR4X2ZsYWdzOwogCWludCB0eF9yaW5nX3NpemU7CisJaW50IHR4X2xpbWl0OworCXUzMiB0eF9wa3RzX2luX3Byb2dyZXNzOworCXN0cnVjdCBudl9za2JfbWFwICp0eF9jaGFuZ2Vfb3duZXI7CisJc3RydWN0IG52X3NrYl9tYXAgKnR4X2VuZF9mbGlwOwogCWludCB0eF9zdG9wOwogCiAJLyogdmxhbiBmaWVsZHMgKi8KQEAgLTE3MDcsNiArMTcxNiw5IEBACiAJCW5wLT5sYXN0X3R4LmV4ID0gJm5wLT50eF9yaW5nLmV4W25wLT50eF9yaW5nX3NpemUtMV07CiAJbnAtPmdldF90eF9jdHggPSBucC0+cHV0X3R4X2N0eCA9IG5wLT5maXJzdF90eF9jdHggPSBucC0+dHhfc2tiOwogCW5wLT5sYXN0X3R4X2N0eCA9ICZucC0+dHhfc2tiW25wLT50eF9yaW5nX3NpemUtMV07CisJbnAtPnR4X3BrdHNfaW5fcHJvZ3Jlc3MgPSAwOworCW5wLT50eF9jaGFuZ2Vfb3duZXIgPSBOVUxMOworCW5wLT50eF9lbmRfZmxpcCA9IE5VTEw7CiAKIAlmb3IgKGkgPSAwOyBpIDwgbnAtPnR4X3Jpbmdfc2l6ZTsgaSsrKSB7CiAJCWlmIChucC0+ZGVzY192ZXIgPT0gREVTQ19WRVJfMSB8fCBucC0+ZGVzY192ZXIgPT0gREVTQ19WRVJfMikgewpAQCAtMTcyMCw2ICsxNzMyLDkgQEAKIAkJfQogCQlucC0+dHhfc2tiW2ldLnNrYiA9IE5VTEw7CiAJCW5wLT50eF9za2JbaV0uZG1hID0gMDsKKwkJbnAtPnR4X3NrYltpXS5kbWFfbGVuID0gMDsKKwkJbnAtPnR4X3NrYltpXS5maXJzdF90eF9kZXNjID0gTlVMTDsKKwkJbnAtPnR4X3NrYltpXS5uZXh0X3R4X2N0eCA9IE5VTEw7CiAJfQogfQogCkBAIC0xNzcxLDcgKzE3ODYsMTQgQEAKIAkJfQogCQlpZiAobnZfcmVsZWFzZV90eHNrYihkZXYsICZucC0+dHhfc2tiW2ldKSkKIAkJCWRldi0+c3RhdHMudHhfZHJvcHBlZCsrOworCQlucC0+dHhfc2tiW2ldLmRtYSA9IDA7CisJCW5wLT50eF9za2JbaV0uZG1hX2xlbiA9IDA7CisJCW5wLT50eF9za2JbaV0uZmlyc3RfdHhfZGVzYyA9IE5VTEw7CisJCW5wLT50eF9za2JbaV0ubmV4dF90eF9jdHggPSBOVUxMOwogCX0KKwlucC0+dHhfcGt0c19pbl9wcm9ncmVzcyA9IDA7CisJbnAtPnR4X2NoYW5nZV9vd25lciA9IE5VTEw7CisJbnAtPnR4X2VuZF9mbGlwID0gTlVMTDsKIH0KIAogc3RhdGljIHZvaWQgbnZfZHJhaW5fcngoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKQEAgLTE4MzIsNiArMTg1NCw3IEBACiAJc3RydWN0IHJpbmdfZGVzYyogc3RhcnRfdHg7CiAJc3RydWN0IHJpbmdfZGVzYyogcHJldl90eDsKIAlzdHJ1Y3QgbnZfc2tiX21hcCogcHJldl90eF9jdHg7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKIAogCS8qIGFkZCBmcmFnbWVudHMgdG8gZW50cmllcyBjb3VudCAqLwogCWZvciAoaSA9IDA7IGkgPCBmcmFnbWVudHM7IGkrKykgewpAQCAtMTg0MSwxMCArMTg2NCwxMCBAQAogCiAJZW1wdHlfc2xvdHMgPSBudl9nZXRfZW1wdHlfdHhfc2xvdHMobnApOwogCWlmICh1bmxpa2VseShlbXB0eV9zbG90cyA8PSBlbnRyaWVzKSkgewotCQlzcGluX2xvY2tfaXJxKCZucC0+bG9jayk7CisJCXNwaW5fbG9ja19pcnFzYXZlKCZucC0+bG9jaywgZmxhZ3MpOwogCQluZXRpZl9zdG9wX3F1ZXVlKGRldik7CiAJCW5wLT50eF9zdG9wID0gMTsKLQkJc3Bpbl91bmxvY2tfaXJxKCZucC0+bG9jayk7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJm5wLT5sb2NrLCBmbGFncyk7CiAJCXJldHVybiBORVRERVZfVFhfQlVTWTsKIAl9CiAKQEAgLTE5MDcsMTMgKzE5MzAsMTMgQEAKIAkJdHhfZmxhZ3NfZXh0cmEgPSBza2ItPmlwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMID8KIAkJCSBOVl9UWDJfQ0hFQ0tTVU1fTDMgfCBOVl9UWDJfQ0hFQ0tTVU1fTDQgOiAwOwogCi0Jc3Bpbl9sb2NrX2lycSgmbnAtPmxvY2spOworCXNwaW5fbG9ja19pcnFzYXZlKCZucC0+bG9jaywgZmxhZ3MpOwogCiAJLyogc2V0IHR4IGZsYWdzICovCiAJc3RhcnRfdHgtPmZsYWdsZW4gfD0gY3B1X3RvX2xlMzIodHhfZmxhZ3MgfCB0eF9mbGFnc19leHRyYSk7CiAJbnAtPnB1dF90eC5vcmlnID0gcHV0X3R4OwogCi0Jc3Bpbl91bmxvY2tfaXJxKCZucC0+bG9jayk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmbnAtPmxvY2ssIGZsYWdzKTsKIAogCWRwcmludGsoS0VSTl9ERUJVRyAiJXM6IG52X3N0YXJ0X3htaXQ6IGVudHJpZXMgJWQgcXVldWVkIGZvciB0cmFuc21pc3Npb24uIHR4X2ZsYWdzX2V4dHJhOiAleFxuIiwKIAkJZGV2LT5uYW1lLCBlbnRyaWVzLCB0eF9mbGFnc19leHRyYSk7CkBAIC0xOTQ4LDYgKzE5NzEsOCBAQAogCXN0cnVjdCByaW5nX2Rlc2NfZXgqIHN0YXJ0X3R4OwogCXN0cnVjdCByaW5nX2Rlc2NfZXgqIHByZXZfdHg7CiAJc3RydWN0IG52X3NrYl9tYXAqIHByZXZfdHhfY3R4OworCXN0cnVjdCBudl9za2JfbWFwKiBzdGFydF90eF9jdHg7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKIAogCS8qIGFkZCBmcmFnbWVudHMgdG8gZW50cmllcyBjb3VudCAqLwogCWZvciAoaSA9IDA7IGkgPCBmcmFnbWVudHM7IGkrKykgewpAQCAtMTk1NywxNCArMTk4MiwxNSBAQAogCiAJZW1wdHlfc2xvdHMgPSBudl9nZXRfZW1wdHlfdHhfc2xvdHMobnApOwogCWlmICh1bmxpa2VseShlbXB0eV9zbG90cyA8PSBlbnRyaWVzKSkgewotCQlzcGluX2xvY2tfaXJxKCZucC0+bG9jayk7CisJCXNwaW5fbG9ja19pcnFzYXZlKCZucC0+bG9jaywgZmxhZ3MpOwogCQluZXRpZl9zdG9wX3F1ZXVlKGRldik7CiAJCW5wLT50eF9zdG9wID0gMTsKLQkJc3Bpbl91bmxvY2tfaXJxKCZucC0+bG9jayk7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJm5wLT5sb2NrLCBmbGFncyk7CiAJCXJldHVybiBORVRERVZfVFhfQlVTWTsKIAl9CiAKIAlzdGFydF90eCA9IHB1dF90eCA9IG5wLT5wdXRfdHguZXg7CisJc3RhcnRfdHhfY3R4ID0gbnAtPnB1dF90eF9jdHg7CiAKIAkvKiBzZXR1cCB0aGUgaGVhZGVyIGJ1ZmZlciAqLwogCWRvIHsKQEAgLTIwMzUsMTMgKzIwNjEsMzMgQEAKIAkJCXN0YXJ0X3R4LT50eHZsYW4gPSAwOwogCX0KIAotCXNwaW5fbG9ja19pcnEoJm5wLT5sb2NrKTsKKwlzcGluX2xvY2tfaXJxc2F2ZSgmbnAtPmxvY2ssIGZsYWdzKTsKKworCWlmIChucC0+dHhfbGltaXQpIHsKKwkJLyogTGltaXQgdGhlIG51bWJlciBvZiBvdXRzdGFuZGluZyB0eC4gU2V0dXAgYWxsIGZyYWdtZW50cywgYnV0CisJCSAqIGRvIG5vdCBzZXQgdGhlIFZBTElEIGJpdCBvbiB0aGUgZmlyc3QgZGVzY3JpcHRvci4gU2F2ZSBhIHBvaW50ZXIKKwkJICogdG8gdGhhdCBkZXNjcmlwdG9yIGFuZCBhbHNvIGZvciBuZXh0IHNrYl9tYXAgZWxlbWVudC4KKwkJICovCisKKwkJaWYgKG5wLT50eF9wa3RzX2luX3Byb2dyZXNzID09IE5WX1RYX0xJTUlUX0NPVU5UKSB7CisJCQlpZiAoIW5wLT50eF9jaGFuZ2Vfb3duZXIpCisJCQkJbnAtPnR4X2NoYW5nZV9vd25lciA9IHN0YXJ0X3R4X2N0eDsKKworCQkJLyogcmVtb3ZlIFZBTElEIGJpdCAqLworCQkJdHhfZmxhZ3MgJj0gfk5WX1RYMl9WQUxJRDsKKwkJCXN0YXJ0X3R4X2N0eC0+Zmlyc3RfdHhfZGVzYyA9IHN0YXJ0X3R4OworCQkJc3RhcnRfdHhfY3R4LT5uZXh0X3R4X2N0eCA9IG5wLT5wdXRfdHhfY3R4OworCQkJbnAtPnR4X2VuZF9mbGlwID0gbnAtPnB1dF90eF9jdHg7CisJCX0gZWxzZSB7CisJCQlucC0+dHhfcGt0c19pbl9wcm9ncmVzcysrOworCQl9CisJfQogCiAJLyogc2V0IHR4IGZsYWdzICovCiAJc3RhcnRfdHgtPmZsYWdsZW4gfD0gY3B1X3RvX2xlMzIodHhfZmxhZ3MgfCB0eF9mbGFnc19leHRyYSk7CiAJbnAtPnB1dF90eC5leCA9IHB1dF90eDsKIAotCXNwaW5fdW5sb2NrX2lycSgmbnAtPmxvY2spOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJm5wLT5sb2NrLCBmbGFncyk7CiAKIAlkcHJpbnRrKEtFUk5fREVCVUcgIiVzOiBudl9zdGFydF94bWl0X29wdGltaXplZDogZW50cmllcyAlZCBxdWV1ZWQgZm9yIHRyYW5zbWlzc2lvbi4gdHhfZmxhZ3NfZXh0cmE6ICV4XG4iLAogCQlkZXYtPm5hbWUsIGVudHJpZXMsIHR4X2ZsYWdzX2V4dHJhKTsKQEAgLTIwNjAsNiArMjEwNiwyNCBAQAogCXJldHVybiBORVRERVZfVFhfT0s7CiB9CiAKK3N0YXRpYyBpbmxpbmUgdm9pZCBudl90eF9mbGlwX293bmVyc2hpcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQoreworCXN0cnVjdCBmZV9wcml2ICpucCA9IG5ldGRldl9wcml2KGRldik7CisKKwlucC0+dHhfcGt0c19pbl9wcm9ncmVzcy0tOworCWlmIChucC0+dHhfY2hhbmdlX293bmVyKSB7CisJCW5wLT50eF9jaGFuZ2Vfb3duZXItPmZpcnN0X3R4X2Rlc2MtPmZsYWdsZW4gfD0KKwkJCWNwdV90b19sZTMyKE5WX1RYMl9WQUxJRCk7CisJCW5wLT50eF9wa3RzX2luX3Byb2dyZXNzKys7CisKKwkJbnAtPnR4X2NoYW5nZV9vd25lciA9IG5wLT50eF9jaGFuZ2Vfb3duZXItPm5leHRfdHhfY3R4OworCQlpZiAobnAtPnR4X2NoYW5nZV9vd25lciA9PSBucC0+dHhfZW5kX2ZsaXApCisJCQlucC0+dHhfY2hhbmdlX293bmVyID0gTlVMTDsKKworCQl3cml0ZWwoTlZSRUdfVFhSWENUTF9LSUNLfG5wLT50eHJ4Y3RsX2JpdHMsIGdldF9od2Jhc2UoZGV2KSArIE52UmVnVHhSeENvbnRyb2wpOworCX0KK30KKwogLyoKICAqIG52X3R4X2RvbmU6IGNoZWNrIGZvciBjb21wbGV0ZWQgcGFja2V0cywgcmVsZWFzZSB0aGUgc2ticy4KICAqCkBAIC0yMTQ3LDYgKzIyMTEsMTAgQEAKIAkJCQlkZXYtPnN0YXRzLnR4X3BhY2tldHMrKzsKIAkJCWRldl9rZnJlZV9za2JfYW55KG5wLT5nZXRfdHhfY3R4LT5za2IpOwogCQkJbnAtPmdldF90eF9jdHgtPnNrYiA9IE5VTEw7CisKKwkJCWlmIChucC0+dHhfbGltaXQpIHsKKwkJCQludl90eF9mbGlwX293bmVyc2hpcChkZXYpOworCQkJfQogCQl9CiAJCWlmICh1bmxpa2VseShucC0+Z2V0X3R4LmV4KysgPT0gbnAtPmxhc3RfdHguZXgpKQogCQkJbnAtPmdldF90eC5leCA9IG5wLT5maXJzdF90eC5leDsKQEAgLTUyNDgsOCArNTMxNiw3IEBACiAKIAkvKiBjaGVjayB0aGUgd29ya2Fyb3VuZCBiaXQgZm9yIGNvcnJlY3QgbWFjIGFkZHJlc3Mgb3JkZXIgKi8KIAl0eHJlZyA9IHJlYWRsKGJhc2UgKyBOdlJlZ1RyYW5zbWl0UG9sbCk7Ci0JaWYgKCh0eHJlZyAmIE5WUkVHX1RSQU5TTUlUUE9MTF9NQUNfQUREUl9SRVYpIHx8Ci0JICAgIChpZC0+ZHJpdmVyX2RhdGEgJiBERVZfSEFTX0NPUlJFQ1RfTUFDQUREUikpIHsKKwlpZiAoaWQtPmRyaXZlcl9kYXRhICYgREVWX0hBU19DT1JSRUNUX01BQ0FERFIpIHsKIAkJLyogbWFjIGFkZHJlc3MgaXMgYWxyZWFkeSBpbiBjb3JyZWN0IG9yZGVyICovCiAJCWRldi0+ZGV2X2FkZHJbMF0gPSAobnAtPm9yaWdfbWFjWzBdID4+ICAwKSAmIDB4ZmY7CiAJCWRldi0+ZGV2X2FkZHJbMV0gPSAobnAtPm9yaWdfbWFjWzBdID4+ICA4KSAmIDB4ZmY7CkBAIC01MjU3LDYgKzUzMjQsMjIgQEAKIAkJZGV2LT5kZXZfYWRkclszXSA9IChucC0+b3JpZ19tYWNbMF0gPj4gMjQpICYgMHhmZjsKIAkJZGV2LT5kZXZfYWRkcls0XSA9IChucC0+b3JpZ19tYWNbMV0gPj4gIDApICYgMHhmZjsKIAkJZGV2LT5kZXZfYWRkcls1XSA9IChucC0+b3JpZ19tYWNbMV0gPj4gIDgpICYgMHhmZjsKKwl9IGVsc2UgaWYgKHR4cmVnICYgTlZSRUdfVFJBTlNNSVRQT0xMX01BQ19BRERSX1JFVikgeworCQkvKiBtYWMgYWRkcmVzcyBpcyBhbHJlYWR5IGluIGNvcnJlY3Qgb3JkZXIgKi8KKwkJZGV2LT5kZXZfYWRkclswXSA9IChucC0+b3JpZ19tYWNbMF0gPj4gIDApICYgMHhmZjsKKwkJZGV2LT5kZXZfYWRkclsxXSA9IChucC0+b3JpZ19tYWNbMF0gPj4gIDgpICYgMHhmZjsKKwkJZGV2LT5kZXZfYWRkclsyXSA9IChucC0+b3JpZ19tYWNbMF0gPj4gMTYpICYgMHhmZjsKKwkJZGV2LT5kZXZfYWRkclszXSA9IChucC0+b3JpZ19tYWNbMF0gPj4gMjQpICYgMHhmZjsKKwkJZGV2LT5kZXZfYWRkcls0XSA9IChucC0+b3JpZ19tYWNbMV0gPj4gIDApICYgMHhmZjsKKwkJZGV2LT5kZXZfYWRkcls1XSA9IChucC0+b3JpZ19tYWNbMV0gPj4gIDgpICYgMHhmZjsKKwkJLyoKKwkJICogU2V0IG9yaWcgbWFjIGFkZHJlc3MgYmFjayB0byB0aGUgcmV2ZXJzZWQgdmVyc2lvbi4KKwkJICogVGhpcyBmbGFnIHdpbGwgYmUgY2xlYXJlZCBkdXJpbmcgbG93IHBvd2VyIHRyYW5zaXRpb24uCisJCSAqIFRoZXJlZm9yZSwgd2Ugc2hvdWxkIGFsd2F5cyBwdXQgYmFjayB0aGUgcmV2ZXJzZWQgYWRkcmVzcy4KKwkJICovCisJCW5wLT5vcmlnX21hY1swXSA9IChkZXYtPmRldl9hZGRyWzVdIDw8IDApICsgKGRldi0+ZGV2X2FkZHJbNF0gPDwgOCkgKworCQkJKGRldi0+ZGV2X2FkZHJbM10gPDwgMTYpICsgKGRldi0+ZGV2X2FkZHJbMl0gPDwgMjQpOworCQlucC0+b3JpZ19tYWNbMV0gPSAoZGV2LT5kZXZfYWRkclsxXSA8PCAwKSArIChkZXYtPmRldl9hZGRyWzBdIDw8IDgpOwogCX0gZWxzZSB7CiAJCS8qIG5lZWQgdG8gcmV2ZXJzZSBtYWMgYWRkcmVzcyB0byBjb3JyZWN0IG9yZGVyICovCiAJCWRldi0+ZGV2X2FkZHJbMF0gPSAobnAtPm9yaWdfbWFjWzFdID4+ICA4KSAmIDB4ZmY7CkBAIC01MzMzLDYgKzU0MTYsMjEgQEAKIAkJbnAtPm5lZWRfbGlua3RpbWVyID0gMDsKIAl9CiAKKwkvKiBMaW1pdCB0aGUgbnVtYmVyIG9mIHR4J3Mgb3V0c3RhbmRpbmcgZm9yIGh3IGJ1ZyAqLworCWlmIChpZC0+ZHJpdmVyX2RhdGEgJiBERVZfTkVFRF9UWF9MSU1JVCkgeworCQlucC0+dHhfbGltaXQgPSAxOworCQlpZiAoKGlkLT5kZXZpY2UgPT0gUENJX0RFVklDRV9JRF9OVklESUFfTlZFTkVUXzMyIHx8CisJCSAgICAgaWQtPmRldmljZSA9PSBQQ0lfREVWSUNFX0lEX05WSURJQV9OVkVORVRfMzMgfHwKKwkJICAgICBpZC0+ZGV2aWNlID09IFBDSV9ERVZJQ0VfSURfTlZJRElBX05WRU5FVF8zNCB8fAorCQkgICAgIGlkLT5kZXZpY2UgPT0gUENJX0RFVklDRV9JRF9OVklESUFfTlZFTkVUXzM1IHx8CisJCSAgICAgaWQtPmRldmljZSA9PSBQQ0lfREVWSUNFX0lEX05WSURJQV9OVkVORVRfMzYgfHwKKwkJICAgICBpZC0+ZGV2aWNlID09IFBDSV9ERVZJQ0VfSURfTlZJRElBX05WRU5FVF8zNyB8fAorCQkgICAgIGlkLT5kZXZpY2UgPT0gUENJX0RFVklDRV9JRF9OVklESUFfTlZFTkVUXzM4IHx8CisJCSAgICAgaWQtPmRldmljZSA9PSBQQ0lfREVWSUNFX0lEX05WSURJQV9OVkVORVRfMzkpICYmCisJCSAgICBwY2lfZGV2LT5yZXZpc2lvbiA+PSAweEEyKQorCQkJbnAtPnR4X2xpbWl0ID0gMDsKKwl9CisKIAkvKiBjbGVhciBwaHkgc3RhdGUgYW5kIHRlbXBvcmFyaWx5IGhhbHQgcGh5IGludGVycnVwdHMgKi8KIAl3cml0ZWwoMCwgYmFzZSArIE52UmVnTUlJTWFzayk7CiAJcGh5c3RhdGUgPSByZWFkbChiYXNlICsgTnZSZWdBZGFwdGVyQ29udHJvbCk7CkBAIC01NTEyLDcgKzU2MTAsOSBAQAogc3RhdGljIGludCBudl9yZXN1bWUoc3RydWN0IHBjaV9kZXYgKnBkZXYpCiB7CiAJc3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTsKKwl1OCBfX2lvbWVtICpiYXNlID0gZ2V0X2h3YmFzZShkZXYpOwogCWludCByYyA9IDA7CisJdTMyIHR4cmVnOwogCiAJaWYgKCFuZXRpZl9ydW5uaW5nKGRldikpCiAJCWdvdG8gb3V0OwpAQCAtNTUyMyw2ICs1NjIzLDExIEBACiAJcGNpX3Jlc3RvcmVfc3RhdGUocGRldik7CiAJcGNpX2VuYWJsZV93YWtlKHBkZXYsIFBDSV9EMCwgMCk7CiAKKwkvKiByZXN0b3JlIG1hYyBhZGRyZXNzIHJldmVyc2UgZmxhZyAqLworCXR4cmVnID0gcmVhZGwoYmFzZSArIE52UmVnVHJhbnNtaXRQb2xsKTsKKwl0eHJlZyB8PSBOVlJFR19UUkFOU01JVFBPTExfTUFDX0FERFJfUkVWOworCXdyaXRlbCh0eHJlZywgYmFzZSArIE52UmVnVHJhbnNtaXRQb2xsKTsKKwogCXJjID0gbnZfb3BlbihkZXYpOwogb3V0OgogCXJldHVybiByYzsKQEAgLTU1NjMsMTkgKzU2NjgsMTkgQEAKIAl9LAogCXsJLyogQ0s4MDQgRXRoZXJuZXQgQ29udHJvbGxlciAqLwogCQlQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTlZJRElBLCBQQ0lfREVWSUNFX0lEX05WSURJQV9OVkVORVRfOCksCi0JCS5kcml2ZXJfZGF0YSA9IERFVl9ORUVEX1RJTUVSSVJRfERFVl9ORUVEX0xJTktUSU1FUnxERVZfSEFTX0xBUkdFREVTQ3xERVZfSEFTX0NIRUNLU1VNfERFVl9IQVNfSElHSF9ETUF8REVWX0hBU19TVEFUSVNUSUNTX1YxLAorCQkuZHJpdmVyX2RhdGEgPSBERVZfTkVFRF9USU1FUklSUXxERVZfTkVFRF9MSU5LVElNRVJ8REVWX0hBU19MQVJHRURFU0N8REVWX0hBU19DSEVDS1NVTXxERVZfSEFTX0hJR0hfRE1BfERFVl9IQVNfU1RBVElTVElDU19WMXxERVZfTkVFRF9UWF9MSU1JVCwKIAl9LAogCXsJLyogQ0s4MDQgRXRoZXJuZXQgQ29udHJvbGxlciAqLwogCQlQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTlZJRElBLCBQQ0lfREVWSUNFX0lEX05WSURJQV9OVkVORVRfOSksCi0JCS5kcml2ZXJfZGF0YSA9IERFVl9ORUVEX1RJTUVSSVJRfERFVl9ORUVEX0xJTktUSU1FUnxERVZfSEFTX0xBUkdFREVTQ3xERVZfSEFTX0NIRUNLU1VNfERFVl9IQVNfSElHSF9ETUF8REVWX0hBU19TVEFUSVNUSUNTX1YxLAorCQkuZHJpdmVyX2RhdGEgPSBERVZfTkVFRF9USU1FUklSUXxERVZfTkVFRF9MSU5LVElNRVJ8REVWX0hBU19MQVJHRURFU0N8REVWX0hBU19DSEVDS1NVTXxERVZfSEFTX0hJR0hfRE1BfERFVl9IQVNfU1RBVElTVElDU19WMXxERVZfTkVFRF9UWF9MSU1JVCwKIAl9LAogCXsJLyogTUNQMDQgRXRoZXJuZXQgQ29udHJvbGxlciAqLwogCQlQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTlZJRElBLCBQQ0lfREVWSUNFX0lEX05WSURJQV9OVkVORVRfMTApLAotCQkuZHJpdmVyX2RhdGEgPSBERVZfTkVFRF9USU1FUklSUXxERVZfTkVFRF9MSU5LVElNRVJ8REVWX0hBU19MQVJHRURFU0N8REVWX0hBU19DSEVDS1NVTXxERVZfSEFTX0hJR0hfRE1BfERFVl9IQVNfU1RBVElTVElDU19WMSwKKwkJLmRyaXZlcl9kYXRhID0gREVWX05FRURfVElNRVJJUlF8REVWX05FRURfTElOS1RJTUVSfERFVl9IQVNfTEFSR0VERVNDfERFVl9IQVNfQ0hFQ0tTVU18REVWX0hBU19ISUdIX0RNQXxERVZfSEFTX1NUQVRJU1RJQ1NfVjF8REVWX05FRURfVFhfTElNSVQsCiAJfSwKIAl7CS8qIE1DUDA0IEV0aGVybmV0IENvbnRyb2xsZXIgKi8KIAkJUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX05WSURJQSwgUENJX0RFVklDRV9JRF9OVklESUFfTlZFTkVUXzExKSwKLQkJLmRyaXZlcl9kYXRhID0gREVWX05FRURfVElNRVJJUlF8REVWX05FRURfTElOS1RJTUVSfERFVl9IQVNfTEFSR0VERVNDfERFVl9IQVNfQ0hFQ0tTVU18REVWX0hBU19ISUdIX0RNQXxERVZfSEFTX1NUQVRJU1RJQ1NfVjEsCisJCS5kcml2ZXJfZGF0YSA9IERFVl9ORUVEX1RJTUVSSVJRfERFVl9ORUVEX0xJTktUSU1FUnxERVZfSEFTX0xBUkdFREVTQ3xERVZfSEFTX0NIRUNLU1VNfERFVl9IQVNfSElHSF9ETUF8REVWX0hBU19TVEFUSVNUSUNTX1YxfERFVl9ORUVEX1RYX0xJTUlULAogCX0sCiAJewkvKiBNQ1A1MSBFdGhlcm5ldCBDb250cm9sbGVyICovCiAJCVBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9OVklESUEsIFBDSV9ERVZJQ0VfSURfTlZJRElBX05WRU5FVF8xMiksCkBAIC01NTg3LDExICs1NjkyLDExIEBACiAJfSwKIAl7CS8qIE1DUDU1IEV0aGVybmV0IENvbnRyb2xsZXIgKi8KIAkJUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX05WSURJQSwgUENJX0RFVklDRV9JRF9OVklESUFfTlZFTkVUXzE0KSwKLQkJLmRyaXZlcl9kYXRhID0gREVWX05FRURfVElNRVJJUlF8REVWX05FRURfTElOS1RJTUVSfERFVl9IQVNfTEFSR0VERVNDfERFVl9IQVNfQ0hFQ0tTVU18REVWX0hBU19ISUdIX0RNQXxERVZfSEFTX1ZMQU58REVWX0hBU19NU0l8REVWX0hBU19NU0lfWHxERVZfSEFTX1BPV0VSX0NOVFJMfERFVl9IQVNfUEFVU0VGUkFNRV9UWF9WMXxERVZfSEFTX1NUQVRJU1RJQ1NfVjJ8REVWX0hBU19URVNUX0VYVEVOREVEfERFVl9IQVNfTUdNVF9VTklULAorCQkuZHJpdmVyX2RhdGEgPSBERVZfTkVFRF9USU1FUklSUXxERVZfTkVFRF9MSU5LVElNRVJ8REVWX0hBU19MQVJHRURFU0N8REVWX0hBU19DSEVDS1NVTXxERVZfSEFTX0hJR0hfRE1BfERFVl9IQVNfVkxBTnxERVZfSEFTX01TSXxERVZfSEFTX01TSV9YfERFVl9IQVNfUE9XRVJfQ05UUkx8REVWX0hBU19QQVVTRUZSQU1FX1RYX1YxfERFVl9IQVNfU1RBVElTVElDU19WMnxERVZfSEFTX1RFU1RfRVhURU5ERUR8REVWX0hBU19NR01UX1VOSVR8REVWX05FRURfVFhfTElNSVQsCiAJfSwKIAl7CS8qIE1DUDU1IEV0aGVybmV0IENvbnRyb2xsZXIgKi8KIAkJUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX05WSURJQSwgUENJX0RFVklDRV9JRF9OVklESUFfTlZFTkVUXzE1KSwKLQkJLmRyaXZlcl9kYXRhID0gREVWX05FRURfVElNRVJJUlF8REVWX05FRURfTElOS1RJTUVSfERFVl9IQVNfTEFSR0VERVNDfERFVl9IQVNfQ0hFQ0tTVU18REVWX0hBU19ISUdIX0RNQXxERVZfSEFTX1ZMQU58REVWX0hBU19NU0l8REVWX0hBU19NU0lfWHxERVZfSEFTX1BPV0VSX0NOVFJMfERFVl9IQVNfUEFVU0VGUkFNRV9UWF9WMXxERVZfSEFTX1NUQVRJU1RJQ1NfVjJ8REVWX0hBU19URVNUX0VYVEVOREVEfERFVl9IQVNfTUdNVF9VTklULAorCQkuZHJpdmVyX2RhdGEgPSBERVZfTkVFRF9USU1FUklSUXxERVZfTkVFRF9MSU5LVElNRVJ8REVWX0hBU19MQVJHRURFU0N8REVWX0hBU19DSEVDS1NVTXxERVZfSEFTX0hJR0hfRE1BfERFVl9IQVNfVkxBTnxERVZfSEFTX01TSXxERVZfSEFTX01TSV9YfERFVl9IQVNfUE9XRVJfQ05UUkx8REVWX0hBU19QQVVTRUZSQU1FX1RYX1YxfERFVl9IQVNfU1RBVElTVElDU19WMnxERVZfSEFTX1RFU1RfRVhURU5ERUR8REVWX0hBU19NR01UX1VOSVR8REVWX05FRURfVFhfTElNSVQsCiAJfSwKIAl7CS8qIE1DUDYxIEV0aGVybmV0IENvbnRyb2xsZXIgKi8KIAkJUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX05WSURJQSwgUENJX0RFVklDRV9JRF9OVklESUFfTlZFTkVUXzE2KSwKQEAgLTU2MTEsMTkgKzU3MTYsMTkgQEAKIAl9LAogCXsJLyogTUNQNjUgRXRoZXJuZXQgQ29udHJvbGxlciAqLwogCQlQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTlZJRElBLCBQQ0lfREVWSUNFX0lEX05WSURJQV9OVkVORVRfMjApLAotCQkuZHJpdmVyX2RhdGEgPSBERVZfTkVFRF9USU1FUklSUXxERVZfTkVFRF9MSU5LVElNRVJ8REVWX0hBU19MQVJHRURFU0N8REVWX0hBU19ISUdIX0RNQXxERVZfSEFTX1BPV0VSX0NOVFJMfERFVl9IQVNfTVNJfERFVl9IQVNfUEFVU0VGUkFNRV9UWF9WMXxERVZfSEFTX1NUQVRJU1RJQ1NfVjJ8REVWX0hBU19URVNUX0VYVEVOREVEfERFVl9IQVNfTUdNVF9VTklUfERFVl9IQVNfQ09SUkVDVF9NQUNBRERSLAorCQkuZHJpdmVyX2RhdGEgPSBERVZfTkVFRF9USU1FUklSUXxERVZfTkVFRF9MSU5LVElNRVJ8REVWX0hBU19MQVJHRURFU0N8REVWX0hBU19ISUdIX0RNQXxERVZfSEFTX1BPV0VSX0NOVFJMfERFVl9IQVNfTVNJfERFVl9IQVNfUEFVU0VGUkFNRV9UWF9WMXxERVZfSEFTX1NUQVRJU1RJQ1NfVjJ8REVWX0hBU19URVNUX0VYVEVOREVEfERFVl9IQVNfTUdNVF9VTklUfERFVl9IQVNfQ09SUkVDVF9NQUNBRERSfERFVl9ORUVEX1RYX0xJTUlUfERFVl9ORUVEX1RYX0xJTUlULAogCX0sCiAJewkvKiBNQ1A2NSBFdGhlcm5ldCBDb250cm9sbGVyICovCiAJCVBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9OVklESUEsIFBDSV9ERVZJQ0VfSURfTlZJRElBX05WRU5FVF8yMSksCi0JCS5kcml2ZXJfZGF0YSA9IERFVl9ORUVEX1RJTUVSSVJRfERFVl9ORUVEX0xJTktUSU1FUnxERVZfSEFTX0xBUkdFREVTQ3xERVZfSEFTX0hJR0hfRE1BfERFVl9IQVNfUE9XRVJfQ05UUkx8REVWX0hBU19NU0l8REVWX0hBU19QQVVTRUZSQU1FX1RYX1YxfERFVl9IQVNfU1RBVElTVElDU19WMnxERVZfSEFTX1RFU1RfRVhURU5ERUR8REVWX0hBU19NR01UX1VOSVR8REVWX0hBU19DT1JSRUNUX01BQ0FERFIsCisJCS5kcml2ZXJfZGF0YSA9IERFVl9ORUVEX1RJTUVSSVJRfERFVl9ORUVEX0xJTktUSU1FUnxERVZfSEFTX0xBUkdFREVTQ3xERVZfSEFTX0hJR0hfRE1BfERFVl9IQVNfUE9XRVJfQ05UUkx8REVWX0hBU19NU0l8REVWX0hBU19QQVVTRUZSQU1FX1RYX1YxfERFVl9IQVNfU1RBVElTVElDU19WMnxERVZfSEFTX1RFU1RfRVhURU5ERUR8REVWX0hBU19NR01UX1VOSVR8REVWX0hBU19DT1JSRUNUX01BQ0FERFJ8REVWX05FRURfVFhfTElNSVQsCiAJfSwKIAl7CS8qIE1DUDY1IEV0aGVybmV0IENvbnRyb2xsZXIgKi8KIAkJUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX05WSURJQSwgUENJX0RFVklDRV9JRF9OVklESUFfTlZFTkVUXzIyKSwKLQkJLmRyaXZlcl9kYXRhID0gREVWX05FRURfVElNRVJJUlF8REVWX05FRURfTElOS1RJTUVSfERFVl9IQVNfTEFSR0VERVNDfERFVl9IQVNfSElHSF9ETUF8REVWX0hBU19QT1dFUl9DTlRSTHxERVZfSEFTX01TSXxERVZfSEFTX1BBVVNFRlJBTUVfVFhfVjF8REVWX0hBU19TVEFUSVNUSUNTX1YyfERFVl9IQVNfVEVTVF9FWFRFTkRFRHxERVZfSEFTX01HTVRfVU5JVHxERVZfSEFTX0NPUlJFQ1RfTUFDQUREUiwKKwkJLmRyaXZlcl9kYXRhID0gREVWX05FRURfVElNRVJJUlF8REVWX05FRURfTElOS1RJTUVSfERFVl9IQVNfTEFSR0VERVNDfERFVl9IQVNfSElHSF9ETUF8REVWX0hBU19QT1dFUl9DTlRSTHxERVZfSEFTX01TSXxERVZfSEFTX1BBVVNFRlJBTUVfVFhfVjF8REVWX0hBU19TVEFUSVNUSUNTX1YyfERFVl9IQVNfVEVTVF9FWFRFTkRFRHxERVZfSEFTX01HTVRfVU5JVHxERVZfSEFTX0NPUlJFQ1RfTUFDQUREUnxERVZfTkVFRF9UWF9MSU1JVCwKIAl9LAogCXsJLyogTUNQNjUgRXRoZXJuZXQgQ29udHJvbGxlciAqLwogCQlQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTlZJRElBLCBQQ0lfREVWSUNFX0lEX05WSURJQV9OVkVORVRfMjMpLAotCQkuZHJpdmVyX2RhdGEgPSBERVZfTkVFRF9USU1FUklSUXxERVZfTkVFRF9MSU5LVElNRVJ8REVWX0hBU19MQVJHRURFU0N8REVWX0hBU19ISUdIX0RNQXxERVZfSEFTX1BPV0VSX0NOVFJMfERFVl9IQVNfTVNJfERFVl9IQVNfUEFVU0VGUkFNRV9UWF9WMXxERVZfSEFTX1NUQVRJU1RJQ1NfVjJ8REVWX0hBU19URVNUX0VYVEVOREVEfERFVl9IQVNfTUdNVF9VTklUfERFVl9IQVNfQ09SUkVDVF9NQUNBRERSLAorCQkuZHJpdmVyX2RhdGEgPSBERVZfTkVFRF9USU1FUklSUXxERVZfTkVFRF9MSU5LVElNRVJ8REVWX0hBU19MQVJHRURFU0N8REVWX0hBU19ISUdIX0RNQXxERVZfSEFTX1BPV0VSX0NOVFJMfERFVl9IQVNfTVNJfERFVl9IQVNfUEFVU0VGUkFNRV9UWF9WMXxERVZfSEFTX1NUQVRJU1RJQ1NfVjJ8REVWX0hBU19URVNUX0VYVEVOREVEfERFVl9IQVNfTUdNVF9VTklUfERFVl9IQVNfQ09SUkVDVF9NQUNBRERSfERFVl9ORUVEX1RYX0xJTUlULAogCX0sCiAJewkvKiBNQ1A2NyBFdGhlcm5ldCBDb250cm9sbGVyICovCiAJCVBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9OVklESUEsIFBDSV9ERVZJQ0VfSURfTlZJRElBX05WRU5FVF8yNCksCkBAIC01NjU5LDM1ICs1NzY0LDM1IEBACiAJfSwKIAl7CS8qIE1DUDc3IEV0aGVybmV0IENvbnRyb2xsZXIgKi8KIAkJUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX05WSURJQSwgUENJX0RFVklDRV9JRF9OVklESUFfTlZFTkVUXzMyKSwKLQkJLmRyaXZlcl9kYXRhID0gREVWX05FRURfVElNRVJJUlF8REVWX05FRURfTElOS1RJTUVSfERFVl9IQVNfQ0hFQ0tTVU18REVWX0hBU19ISUdIX0RNQXxERVZfSEFTX01TSXxERVZfSEFTX1BPV0VSX0NOVFJMfERFVl9IQVNfUEFVU0VGUkFNRV9UWF9WMnxERVZfSEFTX1NUQVRJU1RJQ1NfVjJ8REVWX0hBU19URVNUX0VYVEVOREVEfERFVl9IQVNfTUdNVF9VTklUfERFVl9IQVNfQ09SUkVDVF9NQUNBRERSfERFVl9IQVNfQ09MTElTSU9OX0ZJWCwKKwkJLmRyaXZlcl9kYXRhID0gREVWX05FRURfVElNRVJJUlF8REVWX05FRURfTElOS1RJTUVSfERFVl9IQVNfQ0hFQ0tTVU18REVWX0hBU19ISUdIX0RNQXxERVZfSEFTX01TSXxERVZfSEFTX1BPV0VSX0NOVFJMfERFVl9IQVNfUEFVU0VGUkFNRV9UWF9WMnxERVZfSEFTX1NUQVRJU1RJQ1NfVjJ8REVWX0hBU19URVNUX0VYVEVOREVEfERFVl9IQVNfTUdNVF9VTklUfERFVl9IQVNfQ09SUkVDVF9NQUNBRERSfERFVl9IQVNfQ09MTElTSU9OX0ZJWHxERVZfTkVFRF9UWF9MSU1JVCwKIAl9LAogCXsJLyogTUNQNzcgRXRoZXJuZXQgQ29udHJvbGxlciAqLwogCQlQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTlZJRElBLCBQQ0lfREVWSUNFX0lEX05WSURJQV9OVkVORVRfMzMpLAotCQkuZHJpdmVyX2RhdGEgPSBERVZfTkVFRF9USU1FUklSUXxERVZfTkVFRF9MSU5LVElNRVJ8REVWX0hBU19DSEVDS1NVTXxERVZfSEFTX0hJR0hfRE1BfERFVl9IQVNfTVNJfERFVl9IQVNfUE9XRVJfQ05UUkx8REVWX0hBU19QQVVTRUZSQU1FX1RYX1YyfERFVl9IQVNfU1RBVElTVElDU19WMnxERVZfSEFTX1RFU1RfRVhURU5ERUR8REVWX0hBU19NR01UX1VOSVR8REVWX0hBU19DT1JSRUNUX01BQ0FERFJ8REVWX0hBU19DT0xMSVNJT05fRklYLAorCQkuZHJpdmVyX2RhdGEgPSBERVZfTkVFRF9USU1FUklSUXxERVZfTkVFRF9MSU5LVElNRVJ8REVWX0hBU19DSEVDS1NVTXxERVZfSEFTX0hJR0hfRE1BfERFVl9IQVNfTVNJfERFVl9IQVNfUE9XRVJfQ05UUkx8REVWX0hBU19QQVVTRUZSQU1FX1RYX1YyfERFVl9IQVNfU1RBVElTVElDU19WMnxERVZfSEFTX1RFU1RfRVhURU5ERUR8REVWX0hBU19NR01UX1VOSVR8REVWX0hBU19DT1JSRUNUX01BQ0FERFJ8REVWX0hBU19DT0xMSVNJT05fRklYfERFVl9ORUVEX1RYX0xJTUlULAogCX0sCiAJewkvKiBNQ1A3NyBFdGhlcm5ldCBDb250cm9sbGVyICovCiAJCVBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9OVklESUEsIFBDSV9ERVZJQ0VfSURfTlZJRElBX05WRU5FVF8zNCksCi0JCS5kcml2ZXJfZGF0YSA9IERFVl9ORUVEX1RJTUVSSVJRfERFVl9ORUVEX0xJTktUSU1FUnxERVZfSEFTX0NIRUNLU1VNfERFVl9IQVNfSElHSF9ETUF8REVWX0hBU19NU0l8REVWX0hBU19QT1dFUl9DTlRSTHxERVZfSEFTX1BBVVNFRlJBTUVfVFhfVjJ8REVWX0hBU19TVEFUSVNUSUNTX1YyfERFVl9IQVNfVEVTVF9FWFRFTkRFRHxERVZfSEFTX01HTVRfVU5JVHxERVZfSEFTX0NPUlJFQ1RfTUFDQUREUnxERVZfSEFTX0NPTExJU0lPTl9GSVgsCisJCS5kcml2ZXJfZGF0YSA9IERFVl9ORUVEX1RJTUVSSVJRfERFVl9ORUVEX0xJTktUSU1FUnxERVZfSEFTX0NIRUNLU1VNfERFVl9IQVNfSElHSF9ETUF8REVWX0hBU19NU0l8REVWX0hBU19QT1dFUl9DTlRSTHxERVZfSEFTX1BBVVNFRlJBTUVfVFhfVjJ8REVWX0hBU19TVEFUSVNUSUNTX1YyfERFVl9IQVNfVEVTVF9FWFRFTkRFRHxERVZfSEFTX01HTVRfVU5JVHxERVZfSEFTX0NPUlJFQ1RfTUFDQUREUnxERVZfSEFTX0NPTExJU0lPTl9GSVh8REVWX05FRURfVFhfTElNSVQsCiAJfSwKIAl7CS8qIE1DUDc3IEV0aGVybmV0IENvbnRyb2xsZXIgKi8KIAkJUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX05WSURJQSwgUENJX0RFVklDRV9JRF9OVklESUFfTlZFTkVUXzM1KSwKLQkJLmRyaXZlcl9kYXRhID0gREVWX05FRURfVElNRVJJUlF8REVWX05FRURfTElOS1RJTUVSfERFVl9IQVNfQ0hFQ0tTVU18REVWX0hBU19ISUdIX0RNQXxERVZfSEFTX01TSXxERVZfSEFTX1BPV0VSX0NOVFJMfERFVl9IQVNfUEFVU0VGUkFNRV9UWF9WMnxERVZfSEFTX1NUQVRJU1RJQ1NfVjJ8REVWX0hBU19URVNUX0VYVEVOREVEfERFVl9IQVNfTUdNVF9VTklUfERFVl9IQVNfQ09SUkVDVF9NQUNBRERSfERFVl9IQVNfQ09MTElTSU9OX0ZJWCwKKwkJLmRyaXZlcl9kYXRhID0gREVWX05FRURfVElNRVJJUlF8REVWX05FRURfTElOS1RJTUVSfERFVl9IQVNfQ0hFQ0tTVU18REVWX0hBU19ISUdIX0RNQXxERVZfSEFTX01TSXxERVZfSEFTX1BPV0VSX0NOVFJMfERFVl9IQVNfUEFVU0VGUkFNRV9UWF9WMnxERVZfSEFTX1NUQVRJU1RJQ1NfVjJ8REVWX0hBU19URVNUX0VYVEVOREVEfERFVl9IQVNfTUdNVF9VTklUfERFVl9IQVNfQ09SUkVDVF9NQUNBRERSfERFVl9IQVNfQ09MTElTSU9OX0ZJWHxERVZfTkVFRF9UWF9MSU1JVCwKIAl9LAogCXsJLyogTUNQNzkgRXRoZXJuZXQgQ29udHJvbGxlciAqLwogCQlQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTlZJRElBLCBQQ0lfREVWSUNFX0lEX05WSURJQV9OVkVORVRfMzYpLAotCQkuZHJpdmVyX2RhdGEgPSBERVZfTkVFRF9USU1FUklSUXxERVZfTkVFRF9MSU5LVElNRVJ8REVWX0hBU19DSEVDS1NVTXxERVZfSEFTX0hJR0hfRE1BfERFVl9IQVNfTVNJfERFVl9IQVNfUE9XRVJfQ05UUkx8REVWX0hBU19QQVVTRUZSQU1FX1RYX1YzfERFVl9IQVNfU1RBVElTVElDU19WMnxERVZfSEFTX1RFU1RfRVhURU5ERUR8REVWX0hBU19NR01UX1VOSVR8REVWX0hBU19DT1JSRUNUX01BQ0FERFJ8REVWX0hBU19DT0xMSVNJT05fRklYLAorCQkuZHJpdmVyX2RhdGEgPSBERVZfTkVFRF9USU1FUklSUXxERVZfTkVFRF9MSU5LVElNRVJ8REVWX0hBU19DSEVDS1NVTXxERVZfSEFTX0hJR0hfRE1BfERFVl9IQVNfTVNJfERFVl9IQVNfUE9XRVJfQ05UUkx8REVWX0hBU19QQVVTRUZSQU1FX1RYX1YzfERFVl9IQVNfU1RBVElTVElDU19WMnxERVZfSEFTX1RFU1RfRVhURU5ERUR8REVWX0hBU19NR01UX1VOSVR8REVWX0hBU19DT1JSRUNUX01BQ0FERFJ8REVWX0hBU19DT0xMSVNJT05fRklYfERFVl9ORUVEX1RYX0xJTUlULAogCX0sCiAJewkvKiBNQ1A3OSBFdGhlcm5ldCBDb250cm9sbGVyICovCiAJCVBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9OVklESUEsIFBDSV9ERVZJQ0VfSURfTlZJRElBX05WRU5FVF8zNyksCi0JCS5kcml2ZXJfZGF0YSA9IERFVl9ORUVEX1RJTUVSSVJRfERFVl9ORUVEX0xJTktUSU1FUnxERVZfSEFTX0NIRUNLU1VNfERFVl9IQVNfSElHSF9ETUF8REVWX0hBU19NU0l8REVWX0hBU19QT1dFUl9DTlRSTHxERVZfSEFTX1BBVVNFRlJBTUVfVFhfVjN8REVWX0hBU19TVEFUSVNUSUNTX1YyfERFVl9IQVNfVEVTVF9FWFRFTkRFRHxERVZfSEFTX01HTVRfVU5JVHxERVZfSEFTX0NPUlJFQ1RfTUFDQUREUnxERVZfSEFTX0NPTExJU0lPTl9GSVgsCisJCS5kcml2ZXJfZGF0YSA9IERFVl9ORUVEX1RJTUVSSVJRfERFVl9ORUVEX0xJTktUSU1FUnxERVZfSEFTX0NIRUNLU1VNfERFVl9IQVNfSElHSF9ETUF8REVWX0hBU19NU0l8REVWX0hBU19QT1dFUl9DTlRSTHxERVZfSEFTX1BBVVNFRlJBTUVfVFhfVjN8REVWX0hBU19TVEFUSVNUSUNTX1YyfERFVl9IQVNfVEVTVF9FWFRFTkRFRHxERVZfSEFTX01HTVRfVU5JVHxERVZfSEFTX0NPUlJFQ1RfTUFDQUREUnxERVZfSEFTX0NPTExJU0lPTl9GSVh8REVWX05FRURfVFhfTElNSVQsCiAJfSwKIAl7CS8qIE1DUDc5IEV0aGVybmV0IENvbnRyb2xsZXIgKi8KIAkJUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX05WSURJQSwgUENJX0RFVklDRV9JRF9OVklESUFfTlZFTkVUXzM4KSwKLQkJLmRyaXZlcl9kYXRhID0gREVWX05FRURfVElNRVJJUlF8REVWX05FRURfTElOS1RJTUVSfERFVl9IQVNfQ0hFQ0tTVU18REVWX0hBU19ISUdIX0RNQXxERVZfSEFTX01TSXxERVZfSEFTX1BPV0VSX0NOVFJMfERFVl9IQVNfUEFVU0VGUkFNRV9UWF9WM3xERVZfSEFTX1NUQVRJU1RJQ1NfVjJ8REVWX0hBU19URVNUX0VYVEVOREVEfERFVl9IQVNfTUdNVF9VTklUfERFVl9IQVNfQ09SUkVDVF9NQUNBRERSfERFVl9IQVNfQ09MTElTSU9OX0ZJWCwKKwkJLmRyaXZlcl9kYXRhID0gREVWX05FRURfVElNRVJJUlF8REVWX05FRURfTElOS1RJTUVSfERFVl9IQVNfQ0hFQ0tTVU18REVWX0hBU19ISUdIX0RNQXxERVZfSEFTX01TSXxERVZfSEFTX1BPV0VSX0NOVFJMfERFVl9IQVNfUEFVU0VGUkFNRV9UWF9WM3xERVZfSEFTX1NUQVRJU1RJQ1NfVjJ8REVWX0hBU19URVNUX0VYVEVOREVEfERFVl9IQVNfTUdNVF9VTklUfERFVl9IQVNfQ09SUkVDVF9NQUNBRERSfERFVl9IQVNfQ09MTElTSU9OX0ZJWHxERVZfTkVFRF9UWF9MSU1JVCwKIAl9LAogCXsJLyogTUNQNzkgRXRoZXJuZXQgQ29udHJvbGxlciAqLwogCQlQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTlZJRElBLCBQQ0lfREVWSUNFX0lEX05WSURJQV9OVkVORVRfMzkpLAotCQkuZHJpdmVyX2RhdGEgPSBERVZfTkVFRF9USU1FUklSUXxERVZfTkVFRF9MSU5LVElNRVJ8REVWX0hBU19DSEVDS1NVTXxERVZfSEFTX0hJR0hfRE1BfERFVl9IQVNfTVNJfERFVl9IQVNfUE9XRVJfQ05UUkx8REVWX0hBU19QQVVTRUZSQU1FX1RYX1YzfERFVl9IQVNfU1RBVElTVElDU19WMnxERVZfSEFTX1RFU1RfRVhURU5ERUR8REVWX0hBU19NR01UX1VOSVR8REVWX0hBU19DT1JSRUNUX01BQ0FERFJ8REVWX0hBU19DT0xMSVNJT05fRklYLAorCQkuZHJpdmVyX2RhdGEgPSBERVZfTkVFRF9USU1FUklSUXxERVZfTkVFRF9MSU5LVElNRVJ8REVWX0hBU19DSEVDS1NVTXxERVZfSEFTX0hJR0hfRE1BfERFVl9IQVNfTVNJfERFVl9IQVNfUE9XRVJfQ05UUkx8REVWX0hBU19QQVVTRUZSQU1FX1RYX1YzfERFVl9IQVNfU1RBVElTVElDU19WMnxERVZfSEFTX1RFU1RfRVhURU5ERUR8REVWX0hBU19NR01UX1VOSVR8REVWX0hBU19DT1JSRUNUX01BQ0FERFJ8REVWX0hBU19DT0xMSVNJT05fRklYfERFVl9ORUVEX1RYX0xJTUlULAogCX0sCiAJezAsfSwKIH07CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9mc19lbmV0L2ZzX2VuZXQtbWFpbi5jIGIvZHJpdmVycy9uZXQvZnNfZW5ldC9mc19lbmV0LW1haW4uYwppbmRleCBhZjg2OWNmLi45NDBlMjA0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9mc19lbmV0L2ZzX2VuZXQtbWFpbi5jCisrKyBiL2RyaXZlcnMvbmV0L2ZzX2VuZXQvZnNfZW5ldC1tYWluLmMKQEAgLTgzNSw3ICs4MzUsOCBAQAogCiAJbmV0aWZfc3RvcF9xdWV1ZShkZXYpOwogCW5ldGlmX2NhcnJpZXJfb2ZmKGRldik7Ci0JbmFwaV9kaXNhYmxlKCZmZXAtPm5hcGkpOworCWlmIChmZXAtPmZwaS0+dXNlX25hcGkpCisJCW5hcGlfZGlzYWJsZSgmZmVwLT5uYXBpKTsKIAlwaHlfc3RvcChmZXAtPnBoeWRldik7CiAKIAlzcGluX2xvY2tfaXJxc2F2ZSgmZmVwLT5sb2NrLCBmbGFncyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pYm1fbmV3ZW1hYy9jb3JlLmMgYi9kcml2ZXJzL25ldC9pYm1fbmV3ZW1hYy9jb3JlLmMKaW5kZXggZTZjNjlmNy4uMzc4YTIzOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaWJtX25ld2VtYWMvY29yZS5jCisrKyBiL2RyaXZlcnMvbmV0L2libV9uZXdlbWFjL2NvcmUuYwpAQCAtMTQzLDYgKzE0MywxMCBAQAogI2RlZmluZSBTVE9QX1RJTUVPVVRfMTAwMAkxMwogI2RlZmluZSBTVE9QX1RJTUVPVVRfMTAwMF9KVU1CTwk3MwogCitzdGF0aWMgdW5zaWduZWQgY2hhciBkZWZhdWx0X21jYXN0X2FkZHJbXSA9IHsKKwkweDAxLCAweDgwLCAweEMyLCAweDAwLCAweDAwLCAweDAxCit9OworCiAvKiBQbGVhc2UsIGtlZXAgaW4gc3luYyB3aXRoIHN0cnVjdCBpYm1fZW1hY19zdGF0cy9pYm1fZW1hY19lcnJvcl9zdGF0cyAqLwogc3RhdGljIGNvbnN0IGNoYXIgZW1hY19zdGF0c19rZXlzW0VNQUNfRVRIVE9PTF9TVEFUU19DT1VOVF1bRVRIX0dTVFJJTkdfTEVOXSA9IHsKIAkicnhfcGFja2V0cyIsICJyeF9ieXRlcyIsICJ0eF9wYWNrZXRzIiwgInR4X2J5dGVzIiwgInJ4X3BhY2tldHNfY3N1bSIsCkBAIC02MTgsNiArNjIyLDkgQEAKIAlpZiAoZW1hY19waHlfZ3BjcyhkZXYtPnBoeS5tb2RlKSkKIAkJZW1hY19taWlfcmVzZXRfcGh5KCZkZXYtPnBoeSk7CiAKKwkvKiBSZXF1aXJlZCBmb3IgUGF1c2UgcGFja2V0IHN1cHBvcnQgaW4gRU1BQyAqLworCWRldl9tY19hZGQobmRldiwgZGVmYXVsdF9tY2FzdF9hZGRyLCBzaXplb2YoZGVmYXVsdF9tY2FzdF9hZGRyKSwgMSk7CisKIAlyZXR1cm4gMDsKIH0KIApAQCAtMTIzNSw4ICsxMjQyLDggQEAKIHN0YXRpYyBpbmxpbmUgdTE2IGVtYWNfdHhfY3N1bShzdHJ1Y3QgZW1hY19pbnN0YW5jZSAqZGV2LAogCQkJICAgICAgIHN0cnVjdCBza19idWZmICpza2IpCiB7Ci0JaWYgKGVtYWNfaGFzX2ZlYXR1cmUoZGV2LCBFTUFDX0ZUUl9IQVNfVEFIICYmCi0JCQkgICAgIHNrYi0+aXBfc3VtbWVkID09IENIRUNLU1VNX1BBUlRJQUwpKSB7CisJaWYgKGVtYWNfaGFzX2ZlYXR1cmUoZGV2LCBFTUFDX0ZUUl9IQVNfVEFIKSAmJgorCQkoc2tiLT5pcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElBTCkpIHsKIAkJKytkZXYtPnN0YXRzLnR4X3BhY2tldHNfY3N1bTsKIAkJcmV0dXJuIEVNQUNfVFhfQ1RSTF9UQUhfQ1NVTTsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pYm1fbmV3ZW1hYy90YWguYyBiL2RyaXZlcnMvbmV0L2libV9uZXdlbWFjL3RhaC5jCmluZGV4IDk2NDE3YWQuLmIwMjNkMTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2libV9uZXdlbWFjL3RhaC5jCisrKyBiL2RyaXZlcnMvbmV0L2libV9uZXdlbWFjL3RhaC5jCkBAIC0xNTUsNiArMTU1LDEwIEBACiBzdGF0aWMgc3RydWN0IG9mX2RldmljZV9pZCB0YWhfbWF0Y2hbXSA9CiB7CiAJeworCQkuY29tcGF0aWJsZQk9ICJpYm0sdGFoIiwKKwl9LAorCS8qIEZvciBiYWNrd2FyZCBjb21wYXQgd2l0aCBvbGQgRFQgKi8KKwl7CiAJCS50eXBlCQk9ICJ0YWgiLAogCX0sCiAJe30sCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pZmIuYyBiL2RyaXZlcnMvbmV0L2lmYi5jCmluZGV4IDE1OTQ5ZDMuLmFmMjMzYjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2lmYi5jCisrKyBiL2RyaXZlcnMvbmV0L2lmYi5jCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSA8bGludXgvbW9kdWxlcGFyYW0uaD4KICNpbmNsdWRlIDxuZXQvcGt0X3NjaGVkLmg+CiAjaW5jbHVkZSA8bmV0L25ldF9uYW1lc3BhY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9sb2NrZGVwLmg+CiAKICNkZWZpbmUgVFhfVElNRU9VVCAgKDIqSFopCiAKQEAgLTIyNyw2ICsyMjgsMTYgQEAKIG1vZHVsZV9wYXJhbShudW1pZmJzLCBpbnQsIDApOwogTU9EVUxFX1BBUk1fREVTQyhudW1pZmJzLCAiTnVtYmVyIG9mIGlmYiBkZXZpY2VzIik7CiAKKy8qCisgKiBkZXZfaWZiLT5xdWV1ZV9sb2NrIGlzIHVzdWFsbHkgdGFrZW4gYWZ0ZXIgZGV2LT5pbmdyZXNzX2xvY2ssCisgKiByZXZlcnNlbHkgdG8gZS5nLiBxZGlzY19sb2NrX3RyZWUoKS4gSXQgc2hvdWxkIGJlIHNhZmUgdW50aWwKKyAqIGlmYiBkb2Vzbid0IHRha2UgZGV2LT5xdWV1ZV9sb2NrIHdpdGggZGV2X2lmYi0+aW5ncmVzc19sb2NrLgorICogQnV0IGxvY2tkZXAgc2hvdWxkIGtub3cgdGhhdCBpZmIgaGFzIGRpZmZlcmVudCBsb2NrcyBmcm9tIGRldi4KKyAqLworc3RhdGljIHN0cnVjdCBsb2NrX2NsYXNzX2tleSBpZmJfcXVldWVfbG9ja19rZXk7CitzdGF0aWMgc3RydWN0IGxvY2tfY2xhc3Nfa2V5IGlmYl9pbmdyZXNzX2xvY2tfa2V5OworCisKIHN0YXRpYyBpbnQgX19pbml0IGlmYl9pbml0X29uZShpbnQgaW5kZXgpCiB7CiAJc3RydWN0IG5ldF9kZXZpY2UgKmRldl9pZmI7CkBAIC0yNDYsNiArMjU3LDEwIEBACiAJZXJyID0gcmVnaXN0ZXJfbmV0ZGV2aWNlKGRldl9pZmIpOwogCWlmIChlcnIgPCAwKQogCQlnb3RvIGVycjsKKworCWxvY2tkZXBfc2V0X2NsYXNzKCZkZXZfaWZiLT5xdWV1ZV9sb2NrLCAmaWZiX3F1ZXVlX2xvY2tfa2V5KTsKKwlsb2NrZGVwX3NldF9jbGFzcygmZGV2X2lmYi0+aW5ncmVzc19sb2NrLCAmaWZiX2luZ3Jlc3NfbG9ja19rZXkpOworCiAJcmV0dXJuIDA7CiAKIGVycjoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2lnYi9lMTAwMF84MjU3NS5oIGIvZHJpdmVycy9uZXQvaWdiL2UxMDAwXzgyNTc1LmgKaW5kZXggNjYwNGQ5Ni4uNzZlYTg0NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaWdiL2UxMDAwXzgyNTc1LmgKKysrIGIvZHJpdmVycy9uZXQvaWdiL2UxMDAwXzgyNTc1LmgKQEAgLTYxLDI4ICs2MSwyOCBAQAogLyogUmVjZWl2ZSBEZXNjcmlwdG9yIC0gQWR2YW5jZWQgKi8KIHVuaW9uIGUxMDAwX2Fkdl9yeF9kZXNjIHsKIAlzdHJ1Y3QgewotCQl1NjQgcGt0X2FkZHI7ICAgICAgICAgICAgIC8qIFBhY2tldCBidWZmZXIgYWRkcmVzcyAqLwotCQl1NjQgaGRyX2FkZHI7ICAgICAgICAgICAgIC8qIEhlYWRlciBidWZmZXIgYWRkcmVzcyAqLworCQlfX2xlNjQgcGt0X2FkZHI7ICAgICAgICAgICAgIC8qIFBhY2tldCBidWZmZXIgYWRkcmVzcyAqLworCQlfX2xlNjQgaGRyX2FkZHI7ICAgICAgICAgICAgIC8qIEhlYWRlciBidWZmZXIgYWRkcmVzcyAqLwogCX0gcmVhZDsKIAlzdHJ1Y3QgewogCQlzdHJ1Y3QgewogCQkJc3RydWN0IHsKLQkJCQl1MTYgcGt0X2luZm87ICAgLyogUlNTIHR5cGUsIFBhY2tldCB0eXBlICovCi0JCQkJdTE2IGhkcl9pbmZvOyAgIC8qIFNwbGl0IEhlYWRlciwKLQkJCQkJCSAqIGhlYWRlciBidWZmZXIgbGVuZ3RoICovCisJCQkJX19sZTE2IHBrdF9pbmZvOyAgIC8qIFJTUyB0eXBlLCBQYWNrZXQgdHlwZSAqLworCQkJCV9fbGUxNiBoZHJfaW5mbzsgICAvKiBTcGxpdCBIZWFkZXIsCisJCQkJCQkgICAgKiBoZWFkZXIgYnVmZmVyIGxlbmd0aCAqLwogCQkJfSBsb19kd29yZDsKIAkJCXVuaW9uIHsKLQkJCQl1MzIgcnNzOyAgICAgICAgICAvKiBSU1MgSGFzaCAqLworCQkJCV9fbGUzMiByc3M7ICAgICAgICAgIC8qIFJTUyBIYXNoICovCiAJCQkJc3RydWN0IHsKLQkJCQkJdTE2IGlwX2lkOyAgICAvKiBJUCBpZCAqLwotCQkJCQl1MTYgY3N1bTsgICAgIC8qIFBhY2tldCBDaGVja3N1bSAqLworCQkJCQlfX2xlMTYgaXBfaWQ7ICAgIC8qIElQIGlkICovCisJCQkJCV9fbGUxNiBjc3VtOyAgICAgLyogUGFja2V0IENoZWNrc3VtICovCiAJCQkJfSBjc3VtX2lwOwogCQkJfSBoaV9kd29yZDsKIAkJfSBsb3dlcjsKIAkJc3RydWN0IHsKLQkJCXUzMiBzdGF0dXNfZXJyb3I7ICAgICAvKiBleHQgc3RhdHVzL2Vycm9yICovCi0JCQl1MTYgbGVuZ3RoOyAgICAgICAgICAgLyogUGFja2V0IGxlbmd0aCAqLwotCQkJdTE2IHZsYW47ICAgICAgICAgICAgIC8qIFZMQU4gdGFnICovCisJCQlfX2xlMzIgc3RhdHVzX2Vycm9yOyAgICAgLyogZXh0IHN0YXR1cy9lcnJvciAqLworCQkJX19sZTE2IGxlbmd0aDsgICAgICAgICAgIC8qIFBhY2tldCBsZW5ndGggKi8KKwkJCV9fbGUxNiB2bGFuOyAgICAgICAgICAgICAvKiBWTEFOIHRhZyAqLwogCQl9IHVwcGVyOwogCX0gd2I7ICAvKiB3cml0ZWJhY2sgKi8KIH07CkBAIC05NywxNCArOTcsMTQgQEAKIC8qIFRyYW5zbWl0IERlc2NyaXB0b3IgLSBBZHZhbmNlZCAqLwogdW5pb24gZTEwMDBfYWR2X3R4X2Rlc2MgewogCXN0cnVjdCB7Ci0JCXU2NCBidWZmZXJfYWRkcjsgICAgLyogQWRkcmVzcyBvZiBkZXNjcmlwdG9yJ3MgZGF0YSBidWYgKi8KLQkJdTMyIGNtZF90eXBlX2xlbjsKLQkJdTMyIG9saW5mb19zdGF0dXM7CisJCV9fbGU2NCBidWZmZXJfYWRkcjsgICAgLyogQWRkcmVzcyBvZiBkZXNjcmlwdG9yJ3MgZGF0YSBidWYgKi8KKwkJX19sZTMyIGNtZF90eXBlX2xlbjsKKwkJX19sZTMyIG9saW5mb19zdGF0dXM7CiAJfSByZWFkOwogCXN0cnVjdCB7Ci0JCXU2NCByc3ZkOyAgICAgICAvKiBSZXNlcnZlZCAqLwotCQl1MzIgbnh0c2VxX3NlZWQ7Ci0JCXUzMiBzdGF0dXM7CisJCV9fbGU2NCByc3ZkOyAgICAgICAvKiBSZXNlcnZlZCAqLworCQlfX2xlMzIgbnh0c2VxX3NlZWQ7CisJCV9fbGUzMiBzdGF0dXM7CiAJfSB3YjsKIH07CiAKQEAgLTExOSwxMCArMTE5LDEwIEBACiAKIC8qIENvbnRleHQgZGVzY3JpcHRvcnMgKi8KIHN0cnVjdCBlMTAwMF9hZHZfdHhfY29udGV4dF9kZXNjIHsKLQl1MzIgdmxhbl9tYWNpcF9sZW5zOwotCXUzMiBzZXFudW1fc2VlZDsKLQl1MzIgdHlwZV90dWNtZF9tbGhsOwotCXUzMiBtc3NfbDRsZW5faWR4OworCV9fbGUzMiB2bGFuX21hY2lwX2xlbnM7CisJX19sZTMyIHNlcW51bV9zZWVkOworCV9fbGUzMiB0eXBlX3R1Y21kX21saGw7CisJX19sZTMyIG1zc19sNGxlbl9pZHg7CiB9OwogCiAjZGVmaW5lIEUxMDAwX0FEVlRYRF9NQUNMRU5fU0hJRlQgICAgOSAgLyogQWR2IGN0eHQgZGVzYyBtYWMgbGVuIHNoaWZ0ICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pZ2IvZTEwMDBfaHcuaCBiL2RyaXZlcnMvbmV0L2lnYi9lMTAwMF9ody5oCmluZGV4IDE2MWZiNjguLjdiMmM3MGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2lnYi9lMTAwMF9ody5oCisrKyBiL2RyaXZlcnMvbmV0L2lnYi9lMTAwMF9ody5oCkBAIC0xNDMsMzUgKzE0MywzNSBAQAogCiAvKiBSZWNlaXZlIERlc2NyaXB0b3IgKi8KIHN0cnVjdCBlMTAwMF9yeF9kZXNjIHsKLQl1NjQgYnVmZmVyX2FkZHI7IC8qIEFkZHJlc3Mgb2YgdGhlIGRlc2NyaXB0b3IncyBkYXRhIGJ1ZmZlciAqLwotCXUxNiBsZW5ndGg7ICAgICAgLyogTGVuZ3RoIG9mIGRhdGEgRE1BZWQgaW50byBkYXRhIGJ1ZmZlciAqLwotCXUxNiBjc3VtOyAgICAgICAgLyogUGFja2V0IGNoZWNrc3VtICovCisJX19sZTY0IGJ1ZmZlcl9hZGRyOyAvKiBBZGRyZXNzIG9mIHRoZSBkZXNjcmlwdG9yJ3MgZGF0YSBidWZmZXIgKi8KKwlfX2xlMTYgbGVuZ3RoOyAgICAgIC8qIExlbmd0aCBvZiBkYXRhIERNQWVkIGludG8gZGF0YSBidWZmZXIgKi8KKwlfX2xlMTYgY3N1bTsgICAgICAgIC8qIFBhY2tldCBjaGVja3N1bSAqLwogCXU4ICBzdGF0dXM7ICAgICAgLyogRGVzY3JpcHRvciBzdGF0dXMgKi8KIAl1OCAgZXJyb3JzOyAgICAgIC8qIERlc2NyaXB0b3IgRXJyb3JzICovCi0JdTE2IHNwZWNpYWw7CisJX19sZTE2IHNwZWNpYWw7CiB9OwogCiAvKiBSZWNlaXZlIERlc2NyaXB0b3IgLSBFeHRlbmRlZCAqLwogdW5pb24gZTEwMDBfcnhfZGVzY19leHRlbmRlZCB7CiAJc3RydWN0IHsKLQkJdTY0IGJ1ZmZlcl9hZGRyOwotCQl1NjQgcmVzZXJ2ZWQ7CisJCV9fbGU2NCBidWZmZXJfYWRkcjsKKwkJX19sZTY0IHJlc2VydmVkOwogCX0gcmVhZDsKIAlzdHJ1Y3QgewogCQlzdHJ1Y3QgewotCQkJdTMyIG1ycTsgICAgICAgICAgICAgIC8qIE11bHRpcGxlIFJ4IFF1ZXVlcyAqLworCQkJX19sZTMyIG1ycTsgICAgICAgICAgICAgIC8qIE11bHRpcGxlIFJ4IFF1ZXVlcyAqLwogCQkJdW5pb24gewotCQkJCXUzMiByc3M7ICAgICAgICAgICAgLyogUlNTIEhhc2ggKi8KKwkJCQlfX2xlMzIgcnNzOyAgICAgICAgICAgIC8qIFJTUyBIYXNoICovCiAJCQkJc3RydWN0IHsKLQkJCQkJdTE2IGlwX2lkOyAgLyogSVAgaWQgKi8KLQkJCQkJdTE2IGNzdW07ICAgLyogUGFja2V0IENoZWNrc3VtICovCisJCQkJCV9fbGUxNiBpcF9pZDsgIC8qIElQIGlkICovCisJCQkJCV9fbGUxNiBjc3VtOyAgIC8qIFBhY2tldCBDaGVja3N1bSAqLwogCQkJCX0gY3N1bV9pcDsKIAkJCX0gaGlfZHdvcmQ7CiAJCX0gbG93ZXI7CiAJCXN0cnVjdCB7Ci0JCQl1MzIgc3RhdHVzX2Vycm9yOyAgICAgLyogZXh0IHN0YXR1cy9lcnJvciAqLwotCQkJdTE2IGxlbmd0aDsKLQkJCXUxNiB2bGFuOyAgICAgICAgICAgICAvKiBWTEFOIHRhZyAqLworCQkJX19sZTMyIHN0YXR1c19lcnJvcjsgICAgIC8qIGV4dCBzdGF0dXMvZXJyb3IgKi8KKwkJCV9fbGUxNiBsZW5ndGg7CisJCQlfX2xlMTYgdmxhbjsgICAgICAgICAgICAgLyogVkxBTiB0YWcgKi8KIAkJfSB1cHBlcjsKIAl9IHdiOyAgLyogd3JpdGViYWNrICovCiB9OwpAQCAtMTgxLDQ5ICsxODEsNDkgQEAKIHVuaW9uIGUxMDAwX3J4X2Rlc2NfcGFja2V0X3NwbGl0IHsKIAlzdHJ1Y3QgewogCQkvKiBvbmUgYnVmZmVyIGZvciBwcm90b2NvbCBoZWFkZXIocyksIHRocmVlIGRhdGEgYnVmZmVycyAqLwotCQl1NjQgYnVmZmVyX2FkZHJbTUFYX1BTX0JVRkZFUlNdOworCQlfX2xlNjQgYnVmZmVyX2FkZHJbTUFYX1BTX0JVRkZFUlNdOwogCX0gcmVhZDsKIAlzdHJ1Y3QgewogCQlzdHJ1Y3QgewotCQkJdTMyIG1ycTsgICAgICAgICAgICAgIC8qIE11bHRpcGxlIFJ4IFF1ZXVlcyAqLworCQkJX19sZTMyIG1ycTsgICAgICAgICAgICAgIC8qIE11bHRpcGxlIFJ4IFF1ZXVlcyAqLwogCQkJdW5pb24gewotCQkJCXUzMiByc3M7ICAgICAgICAgICAgICAvKiBSU1MgSGFzaCAqLworCQkJCV9fbGUzMiByc3M7ICAgICAgICAgICAgICAvKiBSU1MgSGFzaCAqLwogCQkJCXN0cnVjdCB7Ci0JCQkJCXUxNiBpcF9pZDsgICAgLyogSVAgaWQgKi8KLQkJCQkJdTE2IGNzdW07ICAgICAvKiBQYWNrZXQgQ2hlY2tzdW0gKi8KKwkJCQkJX19sZTE2IGlwX2lkOyAgICAvKiBJUCBpZCAqLworCQkJCQlfX2xlMTYgY3N1bTsgICAgIC8qIFBhY2tldCBDaGVja3N1bSAqLwogCQkJCX0gY3N1bV9pcDsKIAkJCX0gaGlfZHdvcmQ7CiAJCX0gbG93ZXI7CiAJCXN0cnVjdCB7Ci0JCQl1MzIgc3RhdHVzX2Vycm9yOyAgICAgLyogZXh0IHN0YXR1cy9lcnJvciAqLwotCQkJdTE2IGxlbmd0aDA7ICAgICAgICAgIC8qIGxlbmd0aCBvZiBidWZmZXIgMCAqLwotCQkJdTE2IHZsYW47ICAgICAgICAgICAgIC8qIFZMQU4gdGFnICovCisJCQlfX2xlMzIgc3RhdHVzX2Vycm9yOyAgICAgLyogZXh0IHN0YXR1cy9lcnJvciAqLworCQkJX19sZTE2IGxlbmd0aDA7ICAgICAgICAgIC8qIGxlbmd0aCBvZiBidWZmZXIgMCAqLworCQkJX19sZTE2IHZsYW47ICAgICAgICAgICAgIC8qIFZMQU4gdGFnICovCiAJCX0gbWlkZGxlOwogCQlzdHJ1Y3QgewotCQkJdTE2IGhlYWRlcl9zdGF0dXM7Ci0JCQl1MTYgbGVuZ3RoWzNdOyAgICAgICAgLyogbGVuZ3RoIG9mIGJ1ZmZlcnMgMS0zICovCisJCQlfX2xlMTYgaGVhZGVyX3N0YXR1czsKKwkJCV9fbGUxNiBsZW5ndGhbM107ICAgICAgICAvKiBsZW5ndGggb2YgYnVmZmVycyAxLTMgKi8KIAkJfSB1cHBlcjsKLQkJdTY0IHJlc2VydmVkOworCQlfX2xlNjQgcmVzZXJ2ZWQ7CiAJfSB3YjsgLyogd3JpdGViYWNrICovCiB9OwogCiAvKiBUcmFuc21pdCBEZXNjcmlwdG9yICovCiBzdHJ1Y3QgZTEwMDBfdHhfZGVzYyB7Ci0JdTY0IGJ1ZmZlcl9hZGRyOyAgICAgIC8qIEFkZHJlc3Mgb2YgdGhlIGRlc2NyaXB0b3IncyBkYXRhIGJ1ZmZlciAqLworCV9fbGU2NCBidWZmZXJfYWRkcjsgICAgICAvKiBBZGRyZXNzIG9mIHRoZSBkZXNjcmlwdG9yJ3MgZGF0YSBidWZmZXIgKi8KIAl1bmlvbiB7Ci0JCXUzMiBkYXRhOworCQlfX2xlMzIgZGF0YTsKIAkJc3RydWN0IHsKLQkJCXUxNiBsZW5ndGg7ICAgIC8qIERhdGEgYnVmZmVyIGxlbmd0aCAqLworCQkJX19sZTE2IGxlbmd0aDsgICAgLyogRGF0YSBidWZmZXIgbGVuZ3RoICovCiAJCQl1OCBjc287ICAgICAgICAvKiBDaGVja3N1bSBvZmZzZXQgKi8KIAkJCXU4IGNtZDsgICAgICAgIC8qIERlc2NyaXB0b3IgY29udHJvbCAqLwogCQl9IGZsYWdzOwogCX0gbG93ZXI7CiAJdW5pb24gewotCQl1MzIgZGF0YTsKKwkJX19sZTMyIGRhdGE7CiAJCXN0cnVjdCB7CiAJCQl1OCBzdGF0dXM7ICAgICAvKiBEZXNjcmlwdG9yIHN0YXR1cyAqLwogCQkJdTggY3NzOyAgICAgICAgLyogQ2hlY2tzdW0gc3RhcnQgKi8KLQkJCXUxNiBzcGVjaWFsOworCQkJX19sZTE2IHNwZWNpYWw7CiAJCX0gZmllbGRzOwogCX0gdXBwZXI7CiB9OwpAQCAtMjMxLDQ5ICsyMzEsNDkgQEAKIC8qIE9mZmxvYWQgQ29udGV4dCBEZXNjcmlwdG9yICovCiBzdHJ1Y3QgZTEwMDBfY29udGV4dF9kZXNjIHsKIAl1bmlvbiB7Ci0JCXUzMiBpcF9jb25maWc7CisJCV9fbGUzMiBpcF9jb25maWc7CiAJCXN0cnVjdCB7CiAJCQl1OCBpcGNzczsgICAgICAvKiBJUCBjaGVja3N1bSBzdGFydCAqLwogCQkJdTggaXBjc287ICAgICAgLyogSVAgY2hlY2tzdW0gb2Zmc2V0ICovCi0JCQl1MTYgaXBjc2U7ICAgICAvKiBJUCBjaGVja3N1bSBlbmQgKi8KKwkJCV9fbGUxNiBpcGNzZTsgICAgIC8qIElQIGNoZWNrc3VtIGVuZCAqLwogCQl9IGlwX2ZpZWxkczsKIAl9IGxvd2VyX3NldHVwOwogCXVuaW9uIHsKLQkJdTMyIHRjcF9jb25maWc7CisJCV9fbGUzMiB0Y3BfY29uZmlnOwogCQlzdHJ1Y3QgewogCQkJdTggdHVjc3M7ICAgICAgLyogVENQIGNoZWNrc3VtIHN0YXJ0ICovCiAJCQl1OCB0dWNzbzsgICAgICAvKiBUQ1AgY2hlY2tzdW0gb2Zmc2V0ICovCi0JCQl1MTYgdHVjc2U7ICAgICAvKiBUQ1AgY2hlY2tzdW0gZW5kICovCisJCQlfX2xlMTYgdHVjc2U7ICAgICAvKiBUQ1AgY2hlY2tzdW0gZW5kICovCiAJCX0gdGNwX2ZpZWxkczsKIAl9IHVwcGVyX3NldHVwOwotCXUzMiBjbWRfYW5kX2xlbmd0aDsKKwlfX2xlMzIgY21kX2FuZF9sZW5ndGg7CiAJdW5pb24gewotCQl1MzIgZGF0YTsKKwkJX19sZTMyIGRhdGE7CiAJCXN0cnVjdCB7CiAJCQl1OCBzdGF0dXM7ICAgICAvKiBEZXNjcmlwdG9yIHN0YXR1cyAqLwogCQkJdTggaGRyX2xlbjsgICAgLyogSGVhZGVyIGxlbmd0aCAqLwotCQkJdTE2IG1zczsgICAgICAgLyogTWF4aW11bSBzZWdtZW50IHNpemUgKi8KKwkJCV9fbGUxNiBtc3M7ICAgICAgIC8qIE1heGltdW0gc2VnbWVudCBzaXplICovCiAJCX0gZmllbGRzOwogCX0gdGNwX3NlZ19zZXR1cDsKIH07CiAKIC8qIE9mZmxvYWQgZGF0YSBkZXNjcmlwdG9yICovCiBzdHJ1Y3QgZTEwMDBfZGF0YV9kZXNjIHsKLQl1NjQgYnVmZmVyX2FkZHI7ICAgLyogQWRkcmVzcyBvZiB0aGUgZGVzY3JpcHRvcidzIGJ1ZmZlciBhZGRyZXNzICovCisJX19sZTY0IGJ1ZmZlcl9hZGRyOyAgIC8qIEFkZHJlc3Mgb2YgdGhlIGRlc2NyaXB0b3IncyBidWZmZXIgYWRkcmVzcyAqLwogCXVuaW9uIHsKLQkJdTMyIGRhdGE7CisJCV9fbGUzMiBkYXRhOwogCQlzdHJ1Y3QgewotCQkJdTE2IGxlbmd0aDsgICAgLyogRGF0YSBidWZmZXIgbGVuZ3RoICovCisJCQlfX2xlMTYgbGVuZ3RoOyAgICAvKiBEYXRhIGJ1ZmZlciBsZW5ndGggKi8KIAkJCXU4IHR5cF9sZW5fZXh0OwogCQkJdTggY21kOwogCQl9IGZsYWdzOwogCX0gbG93ZXI7CiAJdW5pb24gewotCQl1MzIgZGF0YTsKKwkJX19sZTMyIGRhdGE7CiAJCXN0cnVjdCB7CiAJCQl1OCBzdGF0dXM7ICAgICAvKiBEZXNjcmlwdG9yIHN0YXR1cyAqLwogCQkJdTggcG9wdHM7ICAgICAgLyogUGFja2V0IE9wdGlvbnMgKi8KLQkJCXUxNiBzcGVjaWFsOworCQkJX19sZTE2IHNwZWNpYWw7CiAJCX0gZmllbGRzOwogCX0gdXBwZXI7CiB9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaWdiL2lnYl9tYWluLmMgYi9kcml2ZXJzL25ldC9pZ2IvaWdiX21haW4uYwppbmRleCA2YTFmMjMwLi5hYWVlMDJlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9pZ2IvaWdiX21haW4uYworKysgYi9kcml2ZXJzL25ldC9pZ2IvaWdiX21haW4uYwpAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgPGxpbnV4L3ZtYWxsb2MuaD4KICNpbmNsdWRlIDxsaW51eC9wYWdlbWFwLmg+CiAjaW5jbHVkZSA8bGludXgvbmV0ZGV2aWNlLmg+Ci0jaW5jbHVkZSA8bGludXgvdGNwLmg+CiAjaW5jbHVkZSA8bGludXgvaXB2Ni5oPgogI2luY2x1ZGUgPG5ldC9jaGVja3N1bS5oPgogI2luY2x1ZGUgPG5ldC9pcDZfY2hlY2tzdW0uaD4KQEAgLTI0ODQsMTAgKzI0ODMsMjQgQEAKIAkJdHVfY21kIHw9IChFMTAwMF9UWERfQ01EX0RFWFQgfCBFMTAwMF9BRFZUWERfRFRZUF9DVFhUKTsKIAogCQlpZiAoc2tiLT5pcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElBTCkgewotCQkJaWYgKHNrYi0+cHJvdG9jb2wgPT0gaHRvbnMoRVRIX1BfSVApKQorCQkJc3dpdGNoIChza2ItPnByb3RvY29sKSB7CisJCQljYXNlIF9fY29uc3RhbnRfaHRvbnMoRVRIX1BfSVApOgogCQkJCXR1X2NtZCB8PSBFMTAwMF9BRFZUWERfVFVDTURfSVBWNDsKLQkJCWlmIChza2ItPnNrICYmIChza2ItPnNrLT5za19wcm90b2NvbCA9PSBJUFBST1RPX1RDUCkpCi0JCQkJdHVfY21kIHw9IEUxMDAwX0FEVlRYRF9UVUNNRF9MNFRfVENQOworCQkJCWlmIChpcF9oZHIoc2tiKS0+cHJvdG9jb2wgPT0gSVBQUk9UT19UQ1ApCisJCQkJCXR1X2NtZCB8PSBFMTAwMF9BRFZUWERfVFVDTURfTDRUX1RDUDsKKwkJCQlicmVhazsKKwkJCWNhc2UgX19jb25zdGFudF9odG9ucyhFVEhfUF9JUFY2KToKKwkJCQkvKiBYWFggd2hhdCBhYm91dCBvdGhlciBWNiBoZWFkZXJzPz8gKi8KKwkJCQlpZiAoaXB2Nl9oZHIoc2tiKS0+bmV4dGhkciA9PSBJUFBST1RPX1RDUCkKKwkJCQkJdHVfY21kIHw9IEUxMDAwX0FEVlRYRF9UVUNNRF9MNFRfVENQOworCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQlpZiAodW5saWtlbHkobmV0X3JhdGVsaW1pdCgpKSkKKwkJCQkJZGV2X3dhcm4oJmFkYXB0ZXItPnBkZXYtPmRldiwKKwkJCQkJICAgICJwYXJ0aWFsIGNoZWNrc3VtIGJ1dCBwcm90bz0leCFcbiIsCisJCQkJCSAgICBza2ItPnByb3RvY29sKTsKKwkJCQlicmVhazsKKwkJCX0KIAkJfQogCiAJCWNvbnRleHRfZGVzYy0+dHlwZV90dWNtZF9tbGhsID0gY3B1X3RvX2xlMzIodHVfY21kKTsKQEAgLTMyNDEsNiArMzI1NCwxMyBAQAogCiAJcmV0dXJuIDE7CiB9CisKK3N0YXRpYyBpbmxpbmUgdTMyIGdldF9oZWFkKHN0cnVjdCBpZ2JfcmluZyAqdHhfcmluZykKK3sKKwl2b2lkICplbmQgPSAoc3RydWN0IGUxMDAwX3R4X2Rlc2MgKil0eF9yaW5nLT5kZXNjICsgdHhfcmluZy0+Y291bnQ7CisJcmV0dXJuIGxlMzJfdG9fY3B1KCoodm9sYXRpbGUgX19sZTMyICopZW5kKTsKK30KKwogLyoqCiAgKiBpZ2JfY2xlYW5fdHhfaXJxIC0gUmVjbGFpbSByZXNvdXJjZXMgYWZ0ZXIgdHJhbnNtaXQgY29tcGxldGVzCiAgKiBAYWRhcHRlcjogYm9hcmQgcHJpdmF0ZSBzdHJ1Y3R1cmUKQEAgLTMyNjIsOSArMzI4Miw3IEBACiAJdW5zaWduZWQgaW50IHRvdGFsX2J5dGVzID0gMCwgdG90YWxfcGFja2V0cyA9IDA7CiAKIAlybWIoKTsKLQloZWFkID0gKih2b2xhdGlsZSB1MzIgKikoKHN0cnVjdCBlMTAwMF90eF9kZXNjICopdHhfcmluZy0+ZGVzYwotCQkJCSArIHR4X3JpbmctPmNvdW50KTsKLQloZWFkID0gbGUzMl90b19jcHUoaGVhZCk7CisJaGVhZCA9IGdldF9oZWFkKHR4X3JpbmcpOwogCWkgPSB0eF9yaW5nLT5uZXh0X3RvX2NsZWFuOwogCXdoaWxlICgxKSB7CiAJCXdoaWxlIChpICE9IGhlYWQpIHsKQEAgLTMyOTksOSArMzMxNyw3IEBACiAJCX0KIAkJb2xkaGVhZCA9IGhlYWQ7CiAJCXJtYigpOwotCQloZWFkID0gKih2b2xhdGlsZSB1MzIgKikoKHN0cnVjdCBlMTAwMF90eF9kZXNjICopdHhfcmluZy0+ZGVzYwotCQkJCQkgKyB0eF9yaW5nLT5jb3VudCk7Ci0JCWhlYWQgPSBsZTMyX3RvX2NwdShoZWFkKTsKKwkJaGVhZCA9IGdldF9oZWFkKHR4X3JpbmcpOwogCQlpZiAoaGVhZCA9PSBvbGRoZWFkKQogCQkJZ290byBkb25lX2NsZWFuaW5nOwogCX0gIC8qIHdoaWxlICgxKSAqLwpAQCAtMzM3NSw3ICszMzkxLDcgQEAKICAqIEB2bGFuOiBkZXNjcmlwdG9yIHZsYW4gZmllbGQgYXMgd3JpdHRlbiBieSBoYXJkd2FyZSAobm8gbGUvYmUgY29udmVyc2lvbikKICAqIEBza2I6IHBvaW50ZXIgdG8gc2tfYnVmZiB0byBiZSBpbmRpY2F0ZWQgdG8gc3RhY2sKICAqKi8KLXN0YXRpYyB2b2lkIGlnYl9yZWNlaXZlX3NrYihzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IHN0YXR1cywgdTE2IHZsYW4sCitzdGF0aWMgdm9pZCBpZ2JfcmVjZWl2ZV9za2Ioc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLCB1OCBzdGF0dXMsIF9fbGUxNiB2bGFuLAogCQkJICAgIHN0cnVjdCBza19idWZmICpza2IpCiB7CiAJaWYgKGFkYXB0ZXItPnZsZ3JwICYmIChzdGF0dXMgJiBFMTAwMF9SWERfU1RBVF9WUCkpCkBAIC0zNDM5LDggKzM0NTUsOCBAQAogCQkgKiB0aGF0IGNhc2UsIGl0IGZpbGxzIHRoZSBoZWFkZXIgYnVmZmVyIGFuZCBzcGlsbHMgdGhlIHJlc3QKIAkJICogaW50byB0aGUgcGFnZS4KIAkJICovCi0JCWhsZW4gPSBsZTE2X3RvX2NwdSgocnhfZGVzYy0+d2IubG93ZXIubG9fZHdvcmQuaGRyX2luZm8gJgotCQkgIEUxMDAwX1JYREFEVl9IRFJCVUZMRU5fTUFTSykgPj4gRTEwMDBfUlhEQURWX0hEUkJVRkxFTl9TSElGVCk7CisJCWhsZW4gPSAobGUxNl90b19jcHUocnhfZGVzYy0+d2IubG93ZXIubG9fZHdvcmQuaGRyX2luZm8pICYKKwkJICBFMTAwMF9SWERBRFZfSERSQlVGTEVOX01BU0spID4+IEUxMDAwX1JYREFEVl9IRFJCVUZMRU5fU0hJRlQ7CiAJCWlmIChobGVuID4gYWRhcHRlci0+cnhfcHNfaGRyX3NpemUpCiAJCQlobGVuID0gYWRhcHRlci0+cnhfcHNfaGRyX3NpemU7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2lvYzMtZXRoLmMgYi9kcml2ZXJzL25ldC9pb2MzLWV0aC5jCmluZGV4IDM3M2Y3MmMuLjFmMjUyNjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2lvYzMtZXRoLmMKKysrIGIvZHJpdmVycy9uZXQvaW9jMy1ldGguYwpAQCAtMTIyMSw3ICsxMjIxLDggQEAKIH0KICNlbmRpZgogCi1zdGF0aWMgaW50IGlvYzNfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpCitzdGF0aWMgaW50IF9fZGV2aW5pdCBpb2MzX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LAorCWNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpCiB7CiAJdW5zaWduZWQgaW50IHN3X3BoeXNpZDEsIHN3X3BoeXNpZDI7CiAJc3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IE5VTEw7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pcGcuYyBiL2RyaXZlcnMvbmV0L2lwZy5jCmluZGV4IDVlNWQ5YjUuLjliMzU4ZjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2lwZy5jCisrKyBiL2RyaXZlcnMvbmV0L2lwZy5jCkBAIC00NzIsNyArNDcyLDYgQEAKIAl1bnNpZ25lZCBpbnQgdHhmbG93Y29udHJvbDsKIAl1bnNpZ25lZCBpbnQgcnhmbG93Y29udHJvbDsKIAl1bnNpZ25lZCBpbnQgZnVsbGR1cGxleDsKLQl1bnNpZ25lZCBpbnQgZ2lnOwogCXUzMiBtYWNfY3RybF92YWw7CiAJdTMyIGFzaWNjdHJsOwogCXU4IHBoeWN0cmw7CkBAIC00ODksNyArNDg4LDYgQEAKIAlmdWxsZHVwbGV4ID0gMDsKIAl0eGZsb3djb250cm9sID0gMDsKIAlyeGZsb3djb250cm9sID0gMDsKLQlnaWcgPSAwOwogCiAJLyogVG8gYWNjb21vZGF0ZSBhIHByb2JsZW0gaW4gMTBNYnBzIG9wZXJhdGlvbiwKIAkgKiBzZXQgYSBnbG9iYWwgZmxhZyBpZiBQSFkgcnVubmluZyBpbiAxME1icHMgbW9kZS4KQEAgLTUxMSw3ICs1MDksNiBAQAogCQlicmVhazsKIAljYXNlIElQR19QQ19MSU5LX1NQRUVEXzEwMDBNQlBTOgogCQlwcmludGsoIjEwMDBNYnBzLlxuIik7Ci0JCWdpZyA9IDE7CiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCXByaW50aygidW5kZWZpbmVkIVxuIik7CkBAIC0xOTAwLDggKzE4OTcsMTMgQEAKIAogCS8qIFNwZWNpZnkgdGhlIFRGQyBmaWVsZCB3aXRoaW4gdGhlIFRGRC4gKi8KIAl0eGZkLT50ZmMgfD0gY3B1X3RvX2xlNjQoSVBHX1RGQ19XT1JEQUxJR05ESVNBQkxFRCB8Ci0JCShJUEdfVEZDX0ZSQU1FSUQgJiBjcHVfdG9fbGU2NChzcC0+dHhfY3VycmVudCkpIHwKKwkJKElQR19URkNfRlJBTUVJRCAmIHNwLT50eF9jdXJyZW50KSB8CiAJCShJUEdfVEZDX0ZSQUdDT1VOVCAmICgxIDw8IDI0KSkpOworCS8qCisJICogMTYtLTE3IChXb3JkQWxpZ24pIDwtIDMgKGRpc2FibGUpLAorCSAqIDAtLTE1IChGcmFtZUlkKSA8LSBzcC0+dHhfY3VycmVudCwKKwkgKiAyNC0tMjcgKEZyYWdDb3VudCkgPC0gMQorCSAqLwogCiAJLyogUmVxdWVzdCBUeENvbXBsZXRlIGludGVycnVwdHMgYXQgYW4gaW50ZXJ2YWwgZGVmaW5lZAogCSAqIGJ5IHRoZSBjb25zdGFudCBJUEdfRlJBTUVTQkVUV0VFTlRYQ09NUExFVEVTLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaXhnYi9peGdiX21haW4uYyBiL2RyaXZlcnMvbmV0L2l4Z2IvaXhnYl9tYWluLmMKaW5kZXggMjY5ZTZmOC4uNjczOGI0ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaXhnYi9peGdiX21haW4uYworKysgYi9kcml2ZXJzL25ldC9peGdiL2l4Z2JfbWFpbi5jCkBAIC0yMDg4LDE0ICsyMDg4LDEyIEBACiAJc3RydWN0IGl4Z2JfYnVmZmVyICpidWZmZXJfaW5mbzsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwogCXVuc2lnbmVkIGludCBpOwotCWludCBudW1fZ3JvdXBfdGFpbF93cml0ZXM7CiAJbG9uZyBjbGVhbmNvdW50OwogCiAJaSA9IHJ4X3JpbmctPm5leHRfdG9fdXNlOwogCWJ1ZmZlcl9pbmZvID0gJnJ4X3JpbmctPmJ1ZmZlcl9pbmZvW2ldOwogCWNsZWFuY291bnQgPSBJWEdCX0RFU0NfVU5VU0VEKHJ4X3JpbmcpOwogCi0JbnVtX2dyb3VwX3RhaWxfd3JpdGVzID0gSVhHQl9SWF9CVUZGRVJfV1JJVEU7CiAKIAkvKiBsZWF2ZSB0aHJlZSBkZXNjcmlwdG9ycyB1bnVzZWQgKi8KIAl3aGlsZSgtLWNsZWFuY291bnQgPiAyKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9peGdiZS9peGdiZV9tYWluLmMgYi9kcml2ZXJzL25ldC9peGdiZS9peGdiZV9tYWluLmMKaW5kZXggMjNkMGE0YS4uYzIwOTVjZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfbWFpbi5jCisrKyBiL2RyaXZlcnMvbmV0L2l4Z2JlL2l4Z2JlX21haW4uYwpAQCAtMjEzMyw3ICsyMTMzLDcgQEAKIAkJCQkobGlua19zcGVlZCA9PSBJWEdCRV9MSU5LX1NQRUVEXzEwR0JfRlVMTCA/CiAJCQkJICIxMCBHYnBzIiA6CiAJCQkJIChsaW5rX3NwZWVkID09IElYR0JFX0xJTktfU1BFRURfMUdCX0ZVTEwgPwotCQkJCSAgIjEgR3BicyIgOiAidW5rbm93biBzcGVlZCIpKSwKKwkJCQkgICIxIEdicHMiIDogInVua25vd24gc3BlZWQiKSksCiAJCQkJKChGTE9XX1JYICYmIEZMT1dfVFgpID8gIlJYL1RYIiA6CiAJCQkJIChGTE9XX1JYID8gIlJYIiA6CiAJCQkJIChGTE9XX1RYID8gIlRYIiA6ICJOb25lIikpKSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tYWNiLmMgYi9kcml2ZXJzL25ldC9tYWNiLmMKaW5kZXggMWQyMTBlZC4uNDg5YzdjMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbWFjYi5jCisrKyBiL2RyaXZlcnMvbmV0L21hY2IuYwpAQCAtMjQyLDEyICsyNDIsMTIgQEAKIAkvKiBFbmFibGUgbWFuYWdtZW50IHBvcnQgKi8KIAltYWNiX3dyaXRlbChicCwgTkNSLCBNQUNCX0JJVChNUEUpKTsKIAotCWJwLT5taWlfYnVzLm5hbWUgPSAiTUFDQl9taWlfYnVzIiwKLQlicC0+bWlpX2J1cy5yZWFkID0gJm1hY2JfbWRpb19yZWFkLAotCWJwLT5taWlfYnVzLndyaXRlID0gJm1hY2JfbWRpb193cml0ZSwKLQlicC0+bWlpX2J1cy5yZXNldCA9ICZtYWNiX21kaW9fcmVzZXQsCi0JYnAtPm1paV9idXMuaWQgPSBicC0+cGRldi0+aWQsCi0JYnAtPm1paV9idXMucHJpdiA9IGJwLAorCWJwLT5taWlfYnVzLm5hbWUgPSAiTUFDQl9taWlfYnVzIjsKKwlicC0+bWlpX2J1cy5yZWFkID0gJm1hY2JfbWRpb19yZWFkOworCWJwLT5taWlfYnVzLndyaXRlID0gJm1hY2JfbWRpb193cml0ZTsKKwlicC0+bWlpX2J1cy5yZXNldCA9ICZtYWNiX21kaW9fcmVzZXQ7CisJYnAtPm1paV9idXMuaWQgPSBicC0+cGRldi0+aWQ7CisJYnAtPm1paV9idXMucHJpdiA9IGJwOwogCWJwLT5taWlfYnVzLmRldiA9ICZicC0+ZGV2LT5kZXY7CiAJcGRhdGEgPSBicC0+cGRldi0+ZGV2LnBsYXRmb3JtX2RhdGE7CiAKQEAgLTEyNTcsNiArMTI1Nyw4IEBACiAKIAlpZiAoZGV2KSB7CiAJCWJwID0gbmV0ZGV2X3ByaXYoZGV2KTsKKwkJaWYgKGJwLT5waHlfZGV2KQorCQkJcGh5X2Rpc2Nvbm5lY3QoYnAtPnBoeV9kZXYpOwogCQltZGlvYnVzX3VucmVnaXN0ZXIoJmJwLT5taWlfYnVzKTsKIAkJa2ZyZWUoYnAtPm1paV9idXMuaXJxKTsKIAkJdW5yZWdpc3Rlcl9uZXRkZXYoZGV2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L212NjQzeHhfZXRoLmMgYi9kcml2ZXJzL25ldC9tdjY0M3h4X2V0aC5jCmluZGV4IGI1MjhjZTcuLjc3MTEzOWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L212NjQzeHhfZXRoLmMKKysrIGIvZHJpdmVycy9uZXQvbXY2NDN4eF9ldGguYwpAQCAtMjEwNCw2ICsyMTA0LDcgQEAKIE1PRFVMRV9BVVRIT1IoCSJSYWJlZWggS2hvdXJ5LCBBc3NhZiBIb2ZmbWFuLCBNYXR0aGV3IERoYXJtLCBNYW5pc2ggTGFjaHdhbmkiCiAJCSIgYW5kIERhbGUgRmFybnN3b3J0aCIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJFdGhlcm5ldCBkcml2ZXIgZm9yIE1hcnZlbGwgTVY2NDNYWCIpOworTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybTptdjY0M3h4X2V0aCIpOwogCiAvKgogICogVGhlIHNlY29uZCBwYXJ0IGlzIHRoZSBsb3cgbGV2ZWwgZHJpdmVyIG9mIHRoZSBnaWdFIGV0aGVybmV0IHBvcnRzLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbmUyay1wY2kuYyBiL2RyaXZlcnMvbmV0L25lMmstcGNpLmMKaW5kZXggYjU2OWM5MC4uZGUwZGU3NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbmUyay1wY2kuYworKysgYi9kcml2ZXJzL25ldC9uZTJrLXBjaS5jCkBAIC01MzUsOSArNTM1LDkgQEAKIAkJaWYgKGNvdW50ICYgMykgewogCQkJYnVmICs9IGNvdW50ICYgfjM7CiAJCQlpZiAoY291bnQgJiAyKSB7Ci0JCQkJdTE2ICpiID0gKHUxNiAqKWJ1ZjsKKwkJCQlfX2xlMTYgKmIgPSAoX19sZTE2ICopYnVmOwogCi0JCQkJKmIrKyA9IGxlMTZfdG9fY3B1KGludyhORV9CQVNFICsgTkVfREFUQVBPUlQpKTsKKwkJCQkqYisrID0gY3B1X3RvX2xlMTYoaW53KE5FX0JBU0UgKyBORV9EQVRBUE9SVCkpOwogCQkJCWJ1ZiA9IChjaGFyICopYjsKIAkJCX0KIAkJCWlmIChjb3VudCAmIDEpCkBAIC02MDAsOSArNjAwLDkgQEAKIAkJaWYgKGNvdW50ICYgMykgewogCQkJYnVmICs9IGNvdW50ICYgfjM7CiAJCQlpZiAoY291bnQgJiAyKSB7Ci0JCQkJdTE2ICpiID0gKHUxNiAqKWJ1ZjsKKwkJCQlfX2xlMTYgKmIgPSAoX19sZTE2ICopYnVmOwogCi0JCQkJb3V0dyhjcHVfdG9fbGUxNigqYisrKSwgTkVfQkFTRSArIE5FX0RBVEFQT1JUKTsKKwkJCQlvdXR3KGxlMTZfdG9fY3B1KCpiKyspLCBORV9CQVNFICsgTkVfREFUQVBPUlQpOwogCQkJCWJ1ZiA9IChjaGFyICopYjsKIAkJCX0KIAkJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbmV0Y29uc29sZS5jIGIvZHJpdmVycy9uZXQvbmV0Y29uc29sZS5jCmluZGV4IDUwMWU0NTEuLjY2NTM0MWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L25ldGNvbnNvbGUuYworKysgYi9kcml2ZXJzL25ldC9uZXRjb25zb2xlLmMKQEAgLTczMCw3ICs3MzAsNyBAQAogCiBzdGF0aWMgc3RydWN0IGNvbnNvbGUgbmV0Y29uc29sZSA9IHsKIAkubmFtZQk9ICJuZXRjb24iLAotCS5mbGFncwk9IENPTl9FTkFCTEVEIHwgQ09OX1BSSU5UQlVGRkVSLAorCS5mbGFncwk9IENPTl9FTkFCTEVELAogCS53cml0ZQk9IHdyaXRlX21zZywKIH07CiAKQEAgLTc0OSw2ICs3NDksOSBAQAogCQkJCWVyciA9IFBUUl9FUlIobnQpOwogCQkJCWdvdG8gZmFpbDsKIAkJCX0KKwkJCS8qIER1bXAgZXhpc3RpbmcgcHJpbnRrcyB3aGVuIHdlIHJlZ2lzdGVyICovCisJCQluZXRjb25zb2xlLmZsYWdzIHw9IENPTl9QUklOVEJVRkZFUjsKKwogCQkJc3Bpbl9sb2NrX2lycXNhdmUoJnRhcmdldF9saXN0X2xvY2ssIGZsYWdzKTsKIAkJCWxpc3RfYWRkKCZudC0+bGlzdCwgJnRhcmdldF9saXN0KTsKIAkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnRhcmdldF9saXN0X2xvY2ssIGZsYWdzKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L25ldHhlbi9uZXR4ZW5fbmljLmggYi9kcml2ZXJzL25ldC9uZXR4ZW4vbmV0eGVuX25pYy5oCmluZGV4IDJiYzVlYWEuLjdmMjBhMDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L25ldHhlbi9uZXR4ZW5fbmljLmgKKysrIGIvZHJpdmVycy9uZXQvbmV0eGVuL25ldHhlbl9uaWMuaApAQCAtODUsNyArODUsNyBAQAogCShzaXplb2Yoc3RydWN0IG5ldHhlbl9jbWRfYnVmZmVyKSAqIGFkYXB0ZXItPm1heF90eF9kZXNjX2NvdW50KQogI2RlZmluZSBSQ1ZfQlVGRlNJWkUJXAogCShzaXplb2Yoc3RydWN0IG5ldHhlbl9yeF9idWZmZXIpICogcmN2X2Rlc2MtPm1heF9yeF9kZXNjX2NvdW50KQotI2RlZmluZSBmaW5kX2RpZmZfYW1vbmcoYSxiLHJhbmdlKSAoKGEpPD0oYik/KChiKS0oYSkpOigoYikrKHJhbmdlKS0oYSkpKQorI2RlZmluZSBmaW5kX2RpZmZfYW1vbmcoYSxiLHJhbmdlKSAoKGEpPChiKT8oKGIpLShhKSk6KChiKSsocmFuZ2UpLShhKSkpCiAKICNkZWZpbmUgTkVUWEVOX05FVERFVl9TVEFUVVMJCTB4MQogI2RlZmluZSBORVRYRU5fUkNWX1BST0RVQ0VSX09GRlNFVAkwCkBAIC0yMDQsNyArMjA0LDcgQEAKIAkJCT8gUkNWX0RFU0NfTFJPIDoJXAogCQkJKFJDVl9ERVNDX05PUk1BTCkpKQogCi0jZGVmaW5lIE1BWF9DTURfREVTQ1JJUFRPUlMJCTEwMjQKKyNkZWZpbmUgTUFYX0NNRF9ERVNDUklQVE9SUwkJNDA5NgogI2RlZmluZSBNQVhfUkNWX0RFU0NSSVBUT1JTCQkxNjM4NAogI2RlZmluZSBNQVhfQ01EX0RFU0NSSVBUT1JTX0hPU1QJKE1BWF9DTURfREVTQ1JJUFRPUlMgLyA0KQogI2RlZmluZSBNQVhfUkNWX0RFU0NSSVBUT1JTXzFHCQkoTUFYX1JDVl9ERVNDUklQVE9SUyAvIDQpCkBAIC04MTgsMTUgKzgxOCw4IEBACiAJdTY0ICBiYWRza2JsZW47CiAJdTY0ICBub2NtZGRlc2NyaXB0b3I7CiAJdTY0ICBwb2xsZWQ7Ci0JdTY0ICB1cGhhcHB5OwotCXU2NCAgdXBkcm9wcGVkOwotCXU2NCAgdXBsY29uZzsKLQl1NjQgIHVwaGNvbmc7Ci0JdTY0ICB1cG1jb25nOwotCXU2NCAgdXBkdW5ubzsKLQl1NjQgIHNrYmZyZWVkOworCXU2NCAgcnhkcm9wcGVkOwogCXU2NCAgdHhkcm9wcGVkOwotCXU2NCAgdHhudWxsc2tiOwogCXU2NCAgY3N1bW1lZDsKIAl1NjQgIG5vX3JjdjsKIAl1NjQgIHJ4Ynl0ZXM7CkBAIC04NDIsNyArODM1LDYgQEAKIAl1MzIgZmxhZ3M7CiAJdTMyIHByb2R1Y2VyOwogCXUzMiByY3ZfcGVuZGluZzsJLyogTnVtIG9mIGJ1ZnMgcG9zdGVkIGluIHBoYW50b20gKi8KLQl1MzIgcmN2X2ZyZWU7CQkvKiBOdW0gb2YgYnVmcyBpbiBmcmVlIGxpc3QgKi8KIAlkbWFfYWRkcl90IHBoeXNfYWRkcjsKIAlzdHJ1Y3QgcGNpX2RldiAqcGh5c19wZGV2OwogCXN0cnVjdCByY3ZfZGVzYyAqZGVzY19oZWFkOwkvKiBhZGRyZXNzIG9mIHJ4IHJpbmcgaW4gUGhhbnRvbSAqLwpAQCAtODg5LDggKzg4MSw2IEBACiAJaW50IG10dTsKIAlpbnQgcG9ydG51bTsKIAotCXNwaW5sb2NrX3QgdHhfbG9jazsKLQlzcGlubG9ja190IGxvY2s7CiAJc3RydWN0IHdvcmtfc3RydWN0IHdhdGNoZG9nX3Rhc2s7CiAJc3RydWN0IHRpbWVyX2xpc3Qgd2F0Y2hkb2dfdGltZXI7CiAJc3RydWN0IHdvcmtfc3RydWN0ICB0eF90aW1lb3V0X3Rhc2s7CkBAIC04OTksMTYgKzg4OSwxMiBAQAogCiAJdTMyIGNtZF9wcm9kdWNlcjsKIAlfX2xlMzIgKmNtZF9jb25zdW1lcjsKLQogCXUzMiBsYXN0X2NtZF9jb25zdW1lcjsKKwogCXUzMiBtYXhfdHhfZGVzY19jb3VudDsKIAl1MzIgbWF4X3J4X2Rlc2NfY291bnQ7CiAJdTMyIG1heF9qdW1ib19yeF9kZXNjX2NvdW50OwogCXUzMiBtYXhfbHJvX3J4X2Rlc2NfY291bnQ7Ci0JLyogTnVtIG9mIGluc3RhbmNlcyBhY3RpdmUgb24gY21kIGJ1ZmZlciByaW5nICovCi0JdTMyIHByb2NfY21kX2J1Zl9jb3VudGVyOwotCi0JdTMyIG51bV90aHJlYWRzLCB0b3RhbF90aHJlYWRzOwkvKlVzZSB0byBrZWVwIHRyYWNrIG9mIHhtaXQgdGhyZWFkcyAqLwogCiAJdTMyIGZsYWdzOwogCXUzMiBpcnE7CkBAIC05NDIsNiArOTI4LDcgQEAKIAlzdHJ1Y3QgcGNpX2RldiAqY3R4X2Rlc2NfcGRldjsKIAlkbWFfYWRkcl90IGN0eF9kZXNjX3BoeXNfYWRkcjsKIAlpbnQgaW50cl9zY2hlbWU7CisJaW50IG1zaV9tb2RlOwogCWludCAoKmVuYWJsZV9waHlfaW50ZXJydXB0cykgKHN0cnVjdCBuZXR4ZW5fYWRhcHRlciAqKTsKIAlpbnQgKCpkaXNhYmxlX3BoeV9pbnRlcnJ1cHRzKSAoc3RydWN0IG5ldHhlbl9hZGFwdGVyICopOwogCXZvaWQgKCpoYW5kbGVfcGh5X2ludHIpIChzdHJ1Y3QgbmV0eGVuX2FkYXB0ZXIgKik7CkBAIC0xMDc1LDEyICsxMDYyLDEwIEBACiAJCSAgICAgIHN0cnVjdCBjbWRfZGVzY190eXBlMCAqZGVzYywgc3RydWN0IHNrX2J1ZmYgKnNrYik7CiBpbnQgbmV0eGVuX25pY19od19yZXNvdXJjZXMoc3RydWN0IG5ldHhlbl9hZGFwdGVyICphZGFwdGVyKTsKIHZvaWQgbmV0eGVuX25pY19jbGVhcl9zdGF0cyhzdHJ1Y3QgbmV0eGVuX2FkYXB0ZXIgKmFkYXB0ZXIpOwotaW50IG5ldHhlbl9uaWNfcnhfaGFzX3dvcmsoc3RydWN0IG5ldHhlbl9hZGFwdGVyICphZGFwdGVyKTsKLWludCBuZXR4ZW5fbmljX3R4X2hhc193b3JrKHN0cnVjdCBuZXR4ZW5fYWRhcHRlciAqYWRhcHRlcik7CiB2b2lkIG5ldHhlbl93YXRjaGRvZ190YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7CiB2b2lkIG5ldHhlbl9wb3N0X3J4X2J1ZmZlcnMoc3RydWN0IG5ldHhlbl9hZGFwdGVyICphZGFwdGVyLCB1MzIgY3R4LAogCQkJICAgIHUzMiByaW5naWQpOwotaW50IG5ldHhlbl9wcm9jZXNzX2NtZF9yaW5nKHVuc2lnbmVkIGxvbmcgZGF0YSk7CitpbnQgbmV0eGVuX3Byb2Nlc3NfY21kX3Jpbmcoc3RydWN0IG5ldHhlbl9hZGFwdGVyICphZGFwdGVyKTsKIHUzMiBuZXR4ZW5fcHJvY2Vzc19yY3ZfcmluZyhzdHJ1Y3QgbmV0eGVuX2FkYXB0ZXIgKmFkYXB0ZXIsIGludCBjdHgsIGludCBtYXgpOwogdm9pZCBuZXR4ZW5fbmljX3NldF9tdWx0aShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KTsKIGludCBuZXR4ZW5fbmljX2NoYW5nZV9tdHUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IG5ld19tdHUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbmV0eGVuL25ldHhlbl9uaWNfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvbmV0eGVuL25ldHhlbl9uaWNfZXRodG9vbC5jCmluZGV4IDdhODc2ZjQuLjZlOThkODMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L25ldHhlbi9uZXR4ZW5fbmljX2V0aHRvb2wuYworKysgYi9kcml2ZXJzL25ldC9uZXR4ZW4vbmV0eGVuX25pY19ldGh0b29sLmMKQEAgLTY0LDE1ICs2NCw3IEBACiAJeyJiYWRfc2tiX2xlbiIsIE5FVFhFTl9OSUNfU1RBVChzdGF0cy5iYWRza2JsZW4pfSwKIAl7Im5vX2NtZF9kZXNjIiwgTkVUWEVOX05JQ19TVEFUKHN0YXRzLm5vY21kZGVzY3JpcHRvcil9LAogCXsicG9sbGVkIiwgTkVUWEVOX05JQ19TVEFUKHN0YXRzLnBvbGxlZCl9LAotCXsidXBoYXBweSIsIE5FVFhFTl9OSUNfU1RBVChzdGF0cy51cGhhcHB5KX0sCi0JeyJ1cGRyb3BwZWQiLCBORVRYRU5fTklDX1NUQVQoc3RhdHMudXBkcm9wcGVkKX0sCi0JeyJ1cGxjb25nIiwgTkVUWEVOX05JQ19TVEFUKHN0YXRzLnVwbGNvbmcpfSwKLQl7InVwaGNvbmciLCBORVRYRU5fTklDX1NUQVQoc3RhdHMudXBoY29uZyl9LAotCXsidXBtY29uZyIsIE5FVFhFTl9OSUNfU1RBVChzdGF0cy51cG1jb25nKX0sCi0JeyJ1cGR1bm5vIiwgTkVUWEVOX05JQ19TVEFUKHN0YXRzLnVwZHVubm8pfSwKLQl7InNrYl9mcmVlZCIsIE5FVFhFTl9OSUNfU1RBVChzdGF0cy5za2JmcmVlZCl9LAogCXsidHhfZHJvcHBlZCIsIE5FVFhFTl9OSUNfU1RBVChzdGF0cy50eGRyb3BwZWQpfSwKLQl7InR4X251bGxfc2tiIiwgTkVUWEVOX05JQ19TVEFUKHN0YXRzLnR4bnVsbHNrYil9LAogCXsiY3N1bW1lZCIsIE5FVFhFTl9OSUNfU1RBVChzdGF0cy5jc3VtbWVkKX0sCiAJeyJub19yY3YiLCBORVRYRU5fTklDX1NUQVQoc3RhdHMubm9fcmN2KX0sCiAJeyJyeF9ieXRlcyIsIE5FVFhFTl9OSUNfU1RBVChzdGF0cy5yeGJ5dGVzKX0sCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9uZXR4ZW4vbmV0eGVuX25pY19oZHIuaCBiL2RyaXZlcnMvbmV0L25ldHhlbi9uZXR4ZW5fbmljX2hkci5oCmluZGV4IGQ3MmY4ZjguLjE2MGY2MDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L25ldHhlbi9uZXR4ZW5fbmljX2hkci5oCisrKyBiL2RyaXZlcnMvbmV0L25ldHhlbi9uZXR4ZW5fbmljX2hkci5oCkBAIC00NTYsNiArNDU2LDEyIEBACiAjZGVmaW5lIElTUl9JTlRfTUFTS19TTE9XCShORVRYRU5fUENJWF9QU19SRUcoUENJWF9JTlRfTUFTSykpCiAjZGVmaW5lIElTUl9JTlRfVEFSR0VUX1NUQVRVUwkoTkVUWEVOX1BDSVhfUFNfUkVHKFBDSVhfVEFSR0VUX1NUQVRVUykpCiAjZGVmaW5lIElTUl9JTlRfVEFSR0VUX01BU0sJKE5FVFhFTl9QQ0lYX1BTX1JFRyhQQ0lYX1RBUkdFVF9NQVNLKSkKKyNkZWZpbmUgSVNSX0lOVF9UQVJHRVRfU1RBVFVTX0YxICAgKE5FVFhFTl9QQ0lYX1BTX1JFRyhQQ0lYX1RBUkdFVF9TVEFUVVNfRjEpKQorI2RlZmluZSBJU1JfSU5UX1RBUkdFVF9NQVNLX0YxICAgICAoTkVUWEVOX1BDSVhfUFNfUkVHKFBDSVhfVEFSR0VUX01BU0tfRjEpKQorI2RlZmluZSBJU1JfSU5UX1RBUkdFVF9TVEFUVVNfRjIgICAoTkVUWEVOX1BDSVhfUFNfUkVHKFBDSVhfVEFSR0VUX1NUQVRVU19GMikpCisjZGVmaW5lIElTUl9JTlRfVEFSR0VUX01BU0tfRjIgICAgIChORVRYRU5fUENJWF9QU19SRUcoUENJWF9UQVJHRVRfTUFTS19GMikpCisjZGVmaW5lIElTUl9JTlRfVEFSR0VUX1NUQVRVU19GMyAgIChORVRYRU5fUENJWF9QU19SRUcoUENJWF9UQVJHRVRfU1RBVFVTX0YzKSkKKyNkZWZpbmUgSVNSX0lOVF9UQVJHRVRfTUFTS19GMyAgICAgKE5FVFhFTl9QQ0lYX1BTX1JFRyhQQ0lYX1RBUkdFVF9NQVNLX0YzKSkKIAogI2RlZmluZSBORVRYRU5fUENJX01BUFNJWkUJMTI4CiAjZGVmaW5lIE5FVFhFTl9QQ0lfRERSX05FVAkoMHgwMDAwMDAwMFVMKQpAQCAtNjYyLDYgKzY2OCwxMiBAQAogCiAjZGVmaW5lIFBDSVhfVEFSR0VUX1NUQVRVUwkoMHgxMDExOCkKICNkZWZpbmUgUENJWF9UQVJHRVRfTUFTSwkoMHgxMDEyOCkKKyNkZWZpbmUgUENJWF9UQVJHRVRfU1RBVFVTX0YxICgweDEwMTYwKQorI2RlZmluZSBQQ0lYX1RBUkdFVF9NQVNLX0YxICAgKDB4MTAxNzApCisjZGVmaW5lIFBDSVhfVEFSR0VUX1NUQVRVU19GMiAoMHgxMDE2NCkKKyNkZWZpbmUgUENJWF9UQVJHRVRfTUFTS19GMiAgICgweDEwMTc0KQorI2RlZmluZSBQQ0lYX1RBUkdFVF9TVEFUVVNfRjMgKDB4MTAxNjgpCisjZGVmaW5lIFBDSVhfVEFSR0VUX01BU0tfRjMgICAoMHgxMDE3OCkKIAogI2RlZmluZSBQQ0lYX01TSV9GMAkJKDB4MTMwMDApCiAjZGVmaW5lIFBDSVhfTVNJX0YxCQkoMHgxMzAwNCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L25ldHhlbi9uZXR4ZW5fbmljX2h3LmMgYi9kcml2ZXJzL25ldC9uZXR4ZW4vbmV0eGVuX25pY19ody5jCmluZGV4IDAxMzU1NzAuLjA1NzQ4Y2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L25ldHhlbi9uZXR4ZW5fbmljX2h3LmMKKysrIGIvZHJpdmVycy9uZXQvbmV0eGVuL25ldHhlbl9uaWNfaHcuYwpAQCAtMzk4LDYgKzM5OCw4IEBACiAJCU5FVFhFTl9DUkJfTk9STUFMSVpFKGFkYXB0ZXIsIENSQl9OSUNfQ0FQQUJJTElUSUVTX0ZXKSk7CiAJcHJpbnRrKEtFUk5fTk9USUNFICIlczogRlcgY2FwYWJpbGl0aWVzOjB4JXhcbiIsIG5ldHhlbl9uaWNfZHJpdmVyX25hbWUsCiAJCQlhZGFwdGVyLT5pbnRyX3NjaGVtZSk7CisJYWRhcHRlci0+bXNpX21vZGUgPSByZWFkbCgKKwkJTkVUWEVOX0NSQl9OT1JNQUxJWkUoYWRhcHRlciwgQ1JCX05JQ19NU0lfTU9ERV9GVykpOwogCURQUklOVEsoSU5GTywgIlJlY2VpdmUgUGVnIHJlYWR5IHRvby4gc3RhcnRpbmcgc3R1ZmZcbiIpOwogCiAJYWRkciA9IG5ldHhlbl9hbGxvYyhhZGFwdGVyLT5haHcucGRldiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L25ldHhlbi9uZXR4ZW5fbmljX2luaXQuYyBiL2RyaXZlcnMvbmV0L25ldHhlbi9uZXR4ZW5fbmljX2luaXQuYwppbmRleCA5ZTM4YmNiLi40NWZhMzNlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9uZXR4ZW4vbmV0eGVuX25pY19pbml0LmMKKysrIGIvZHJpdmVycy9uZXQvbmV0eGVuL25ldHhlbl9uaWNfaW5pdC5jCkBAIC0xNDUsNiArMTQ1LDggQEAKIAkvKiBXaW5kb3cgMSBjYWxsICovCiAJd3JpdGVsKElOVFJfU0NIRU1FX1BFUlBPUlQsCiAJICAgICAgIE5FVFhFTl9DUkJfTk9STUFMSVpFKGFkYXB0ZXIsIENSQl9OSUNfQ0FQQUJJTElUSUVTX0hPU1QpKTsKKwl3cml0ZWwoTVNJX01PREVfTVVMVElGVU5DLAorCSAgICAgICBORVRYRU5fQ1JCX05PUk1BTElaRShhZGFwdGVyLCBDUkJfTklDX01TSV9NT0RFX0hPU1QpKTsKIAl3cml0ZWwoTVBPUlRfTVVMVElfRlVOQ1RJT05fTU9ERSwKIAkgICAgICAgTkVUWEVOX0NSQl9OT1JNQUxJWkUoYWRhcHRlciwgQ1JCX01QT1JUX01PREUpKTsKIAl3cml0ZWwoUEhBTl9JTklUSUFMSVpFX0FDSywKQEAgLTE4Myw3ICsxODUsNiBAQAogCQlmb3IgKHJpbmcgPSAwOyByaW5nIDwgTlVNX1JDVl9ERVNDX1JJTkdTOyByaW5nKyspIHsKIAkJCXN0cnVjdCBuZXR4ZW5fcnhfYnVmZmVyICpyeF9idWY7CiAJCQlyY3ZfZGVzYyA9ICZhZGFwdGVyLT5yZWN2X2N0eFtjdHhpZF0ucmN2X2Rlc2NbcmluZ107Ci0JCQlyY3ZfZGVzYy0+cmN2X2ZyZWUgPSByY3ZfZGVzYy0+bWF4X3J4X2Rlc2NfY291bnQ7CiAJCQlyY3ZfZGVzYy0+YmVnaW5fYWxsb2MgPSAwOwogCQkJcnhfYnVmID0gcmN2X2Rlc2MtPnJ4X2J1Zl9hcnI7CiAJCQludW1fcnhfYnVmcyA9IHJjdl9kZXNjLT5tYXhfcnhfZGVzY19jb3VudDsKQEAgLTk3NCwyOCArOTc1LDYgQEAKIAlyZXR1cm4gMDsKIH0KIAotaW50IG5ldHhlbl9uaWNfcnhfaGFzX3dvcmsoc3RydWN0IG5ldHhlbl9hZGFwdGVyICphZGFwdGVyKQotewotCWludCBjdHg7Ci0KLQlmb3IgKGN0eCA9IDA7IGN0eCA8IE1BWF9SQ1ZfQ1RYOyArK2N0eCkgewotCQlzdHJ1Y3QgbmV0eGVuX3JlY3ZfY29udGV4dCAqcmVjdl9jdHggPQotCQkgICAgJihhZGFwdGVyLT5yZWN2X2N0eFtjdHhdKTsKLQkJdTMyIGNvbnN1bWVyOwotCQlzdHJ1Y3Qgc3RhdHVzX2Rlc2MgKmRlc2NfaGVhZDsKLQkJc3RydWN0IHN0YXR1c19kZXNjICpkZXNjOwotCi0JCWNvbnN1bWVyID0gcmVjdl9jdHgtPnN0YXR1c19yeF9jb25zdW1lcjsKLQkJZGVzY19oZWFkID0gcmVjdl9jdHgtPnJjdl9zdGF0dXNfZGVzY19oZWFkOwotCQlkZXNjID0gJmRlc2NfaGVhZFtjb25zdW1lcl07Ci0KLQkJaWYgKG5ldHhlbl9nZXRfc3RzX293bmVyKGRlc2MpICYgU1RBVFVTX09XTkVSX0hPU1QpCi0JCQlyZXR1cm4gMTsKLQl9Ci0KLQlyZXR1cm4gMDsKLX0KLQogc3RhdGljIGludCBuZXR4ZW5fbmljX2NoZWNrX3RlbXAoc3RydWN0IG5ldHhlbl9hZGFwdGVyICphZGFwdGVyKQogewogCXN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYgPSBhZGFwdGVyLT5uZXRkZXY7CkBAIC0xMDM4LDcgKzEwMTcsNiBAQAogCiB2b2lkIG5ldHhlbl93YXRjaGRvZ190YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIHsKLQlzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2OwogCXN0cnVjdCBuZXR4ZW5fYWRhcHRlciAqYWRhcHRlciA9CiAJCWNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbmV0eGVuX2FkYXB0ZXIsIHdhdGNoZG9nX3Rhc2spOwogCkBAIC0xMDQ4LDIwICsxMDI2LDYgQEAKIAlpZiAoYWRhcHRlci0+aGFuZGxlX3BoeV9pbnRyKQogCQlhZGFwdGVyLT5oYW5kbGVfcGh5X2ludHIoYWRhcHRlcik7CiAKLQluZXRkZXYgPSBhZGFwdGVyLT5uZXRkZXY7Ci0JaWYgKChuZXRpZl9ydW5uaW5nKG5ldGRldikpICYmICFuZXRpZl9jYXJyaWVyX29rKG5ldGRldikgJiYKLQkJCW5ldHhlbl9uaWNfbGlua19vayhhZGFwdGVyKSApIHsKLQkJcHJpbnRrKEtFUk5fSU5GTyAiJXMgJXMgKHBvcnQgJWQpLCBMaW5rIGlzIHVwXG4iLAotCQkJICAgICAgIG5ldHhlbl9uaWNfZHJpdmVyX25hbWUsIG5ldGRldi0+bmFtZSwgYWRhcHRlci0+cG9ydG51bSk7Ci0JCW5ldGlmX2NhcnJpZXJfb24obmV0ZGV2KTsKLQkJbmV0aWZfd2FrZV9xdWV1ZShuZXRkZXYpOwotCX0gZWxzZSBpZighKG5ldGlmX3J1bm5pbmcobmV0ZGV2KSkgJiYgbmV0aWZfY2Fycmllcl9vayhuZXRkZXYpKSB7Ci0JCXByaW50ayhLRVJOX0VSUiAiJXMgJXMgTGluayBpcyBEb3duXG4iLAotCQkJCW5ldHhlbl9uaWNfZHJpdmVyX25hbWUsIG5ldGRldi0+bmFtZSk7Ci0JCW5ldGlmX2NhcnJpZXJfb2ZmKG5ldGRldik7Ci0JCW5ldGlmX3N0b3BfcXVldWUobmV0ZGV2KTsKLQl9Ci0KIAltb2RfdGltZXIoJmFkYXB0ZXItPndhdGNoZG9nX3RpbWVyLCBqaWZmaWVzICsgMiAqIEhaKTsKIH0KIApAQCAtMTEyNSw3ICsxMDg5LDcgQEAKIAlza2IgPSAoc3RydWN0IHNrX2J1ZmYgKilidWZmZXItPnNrYjsKIAogCWlmIChsaWtlbHkoYWRhcHRlci0+cnhfY3N1bSAmJgotCQkJCW5ldHhlbl9nZXRfc3RzX3N0YXR1cyhzdHNfZGF0YSkgPT0gU1RBVFVTX0NLU1VNX09LKSkgeworCQkJbmV0eGVuX2dldF9zdHNfc3RhdHVzKHN0c19kYXRhKSA9PSBTVEFUVVNfQ0tTVU1fT0spKSB7CiAJCWFkYXB0ZXItPnN0YXRzLmNzdW1tZWQrKzsKIAkJc2tiLT5pcF9zdW1tZWQgPSBDSEVDS1NVTV9VTk5FQ0VTU0FSWTsKIAl9IGVsc2UKQEAgLTExNDIsNDAgKzExMDYsOCBAQAogCXNrYi0+cHJvdG9jb2wgPSBldGhfdHlwZV90cmFucyhza2IsIG5ldGRldik7CiAKIAlyZXQgPSBuZXRpZl9yZWNlaXZlX3NrYihza2IpOwotCi0JLyoKLQkgKiBSSDogRG8gd2UgbmVlZCB0aGVzZSBzdGF0cyBvbiBhIHJlZ3VsYXIgYmFzaXMuIENhbiB3ZSBnZXQgaXQgZnJvbQotCSAqIExpbnV4IHN0YXRzLgotCSAqLwotCXN3aXRjaCAocmV0KSB7Ci0JY2FzZSBORVRfUlhfU1VDQ0VTUzoKLQkJYWRhcHRlci0+c3RhdHMudXBoYXBweSsrOwotCQlicmVhazsKLQotCWNhc2UgTkVUX1JYX0NOX0xPVzoKLQkJYWRhcHRlci0+c3RhdHMudXBsY29uZysrOwotCQlicmVhazsKLQotCWNhc2UgTkVUX1JYX0NOX01PRDoKLQkJYWRhcHRlci0+c3RhdHMudXBtY29uZysrOwotCQlicmVhazsKLQotCWNhc2UgTkVUX1JYX0NOX0hJR0g6Ci0JCWFkYXB0ZXItPnN0YXRzLnVwaGNvbmcrKzsKLQkJYnJlYWs7Ci0KLQljYXNlIE5FVF9SWF9EUk9QOgotCQlhZGFwdGVyLT5zdGF0cy51cGRyb3BwZWQrKzsKLQkJYnJlYWs7Ci0KLQlkZWZhdWx0OgotCQlhZGFwdGVyLT5zdGF0cy51cGR1bm5vKys7Ci0JCWJyZWFrOwotCX0KLQogCW5ldGRldi0+bGFzdF9yeCA9IGppZmZpZXM7CiAKLQlyY3ZfZGVzYy0+cmN2X2ZyZWUrKzsKIAlyY3ZfZGVzYy0+cmN2X3BlbmRpbmctLTsKIAogCS8qCkBAIC0xMjAwLDEzICsxMTMyLDYgQEAKIAl1MzIgcHJvZHVjZXIgPSAwOwogCWludCBjb3VudCA9IDAsIHJpbmc7CiAKLQlEUFJJTlRLKElORk8sICJwcm9jZXNpbmcgcmVjZWl2ZVxuIik7Ci0JLyoKLQkgKiB3ZSBhc3N1bWUgaW4gdGhpcyBjYXNlIHRoYXQgdGhlcmUgaXMgb25seSBvbmUgcG9ydCBhbmQgdGhhdCBpcwotCSAqIHBvcnQgIzEuLi5jaGFuZ2VzIG5lZWQgdG8gYmUgZG9uZSBpbiBmaXJtd2FyZSB0byBpbmRpY2F0ZSBwb3J0Ci0JICogbnVtYmVyIGFzIHBhcnQgb2YgdGhlIGRlc2NyaXB0b3IuIFRoaXMgd2F5IHdlIHdpbGwgYmUgYWJsZSB0byBnZXQKLQkgKiB0aGUgbmV0ZGV2IHdoaWNoIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGF0IGRldmljZS4KLQkgKi8KIAl3aGlsZSAoY291bnQgPCBtYXgpIHsKIAkJZGVzYyA9ICZkZXNjX2hlYWRbY29uc3VtZXJdOwogCQlpZiAoIShuZXR4ZW5fZ2V0X3N0c19vd25lcihkZXNjKSAmIFNUQVRVU19PV05FUl9IT1NUKSkgewpAQCAtMTIxOSwxMSArMTE0NCw4IEBACiAJCWNvbnN1bWVyID0gKGNvbnN1bWVyICsgMSkgJiAoYWRhcHRlci0+bWF4X3J4X2Rlc2NfY291bnQgLSAxKTsKIAkJY291bnQrKzsKIAl9Ci0JaWYgKGNvdW50KSB7Ci0JCWZvciAocmluZyA9IDA7IHJpbmcgPCBOVU1fUkNWX0RFU0NfUklOR1M7IHJpbmcrKykgewotCQkJbmV0eGVuX3Bvc3RfcnhfYnVmZmVyc19ub2RiKGFkYXB0ZXIsIGN0eGlkLCByaW5nKTsKLQkJfQotCX0KKwlmb3IgKHJpbmcgPSAwOyByaW5nIDwgTlVNX1JDVl9ERVNDX1JJTkdTOyByaW5nKyspCisJCW5ldHhlbl9wb3N0X3J4X2J1ZmZlcnNfbm9kYihhZGFwdGVyLCBjdHhpZCwgcmluZyk7CiAKIAkvKiB1cGRhdGUgdGhlIGNvbnN1bWVyIGluZGV4IGluIHBoYW50b20gKi8KIAlpZiAoY291bnQpIHsKQEAgLTEyMzMsMTA4ICsxMTU1LDYwIEBACiAJCS8qIFdpbmRvdyA9IDEgKi8KIAkJd3JpdGVsKGNvbnN1bWVyLAogCQkgICAgICAgTkVUWEVOX0NSQl9OT1JNQUxJWkUoYWRhcHRlciwKLQkJCQkJICAgIHJlY3ZfY3JiX3JlZ2lzdGVyc1thZGFwdGVyLT5wb3J0bnVtXS4KKwkJCQkgICAgcmVjdl9jcmJfcmVnaXN0ZXJzW2FkYXB0ZXItPnBvcnRudW1dLgogCQkJCQkgICAgY3JiX3Jjdl9zdGF0dXNfY29uc3VtZXIpKTsKLQkJd21iKCk7CiAJfQogCiAJcmV0dXJuIGNvdW50OwogfQogCiAvKiBQcm9jZXNzIENvbW1hbmQgc3RhdHVzIHJpbmcgKi8KLWludCBuZXR4ZW5fcHJvY2Vzc19jbWRfcmluZyh1bnNpZ25lZCBsb25nIGRhdGEpCitpbnQgbmV0eGVuX3Byb2Nlc3NfY21kX3Jpbmcoc3RydWN0IG5ldHhlbl9hZGFwdGVyICphZGFwdGVyKQogewotCXUzMiBsYXN0X2NvbnN1bWVyOwotCXUzMiBjb25zdW1lcjsKLQlzdHJ1Y3QgbmV0eGVuX2FkYXB0ZXIgKmFkYXB0ZXIgPSAoc3RydWN0IG5ldHhlbl9hZGFwdGVyICopZGF0YTsKLQlpbnQgY291bnQxID0gMDsKLQlpbnQgY291bnQyID0gMDsKKwl1MzIgbGFzdF9jb25zdW1lciwgY29uc3VtZXI7CisJaW50IGNvdW50ID0gMCwgaTsKIAlzdHJ1Y3QgbmV0eGVuX2NtZF9idWZmZXIgKmJ1ZmZlcjsKLQlzdHJ1Y3QgcGNpX2RldiAqcGRldjsKKwlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IGFkYXB0ZXItPnBkZXY7CisJc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiA9IGFkYXB0ZXItPm5ldGRldjsKIAlzdHJ1Y3QgbmV0eGVuX3NrYl9mcmFnICpmcmFnOwotCXUzMiBpOwotCWludCBkb25lOworCWludCBkb25lID0gMDsKIAotCXNwaW5fbG9jaygmYWRhcHRlci0+dHhfbG9jayk7CiAJbGFzdF9jb25zdW1lciA9IGFkYXB0ZXItPmxhc3RfY21kX2NvbnN1bWVyOwotCURQUklOVEsoSU5GTywgInByb2Nlc2luZyB4bWl0IGNvbXBsZXRlXG4iKTsKLQkvKiB3ZSBhc3N1bWUgaW4gdGhpcyBjYXNlIHRoYXQgdGhlcmUgaXMgb25seSBvbmUgcG9ydCBhbmQgdGhhdCBpcwotCSAqIHBvcnQgIzEuLi5jaGFuZ2VzIG5lZWQgdG8gYmUgZG9uZSBpbiBmaXJtd2FyZSB0byBpbmRpY2F0ZSBwb3J0Ci0JICogbnVtYmVyIGFzIHBhcnQgb2YgdGhlIGRlc2NyaXB0b3IuIFRoaXMgd2F5IHdlIHdpbGwgYmUgYWJsZSB0byBnZXQKLQkgKiB0aGUgbmV0ZGV2IHdoaWNoIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGF0IGRldmljZS4KLQkgKi8KLQogCWNvbnN1bWVyID0gbGUzMl90b19jcHUoKihhZGFwdGVyLT5jbWRfY29uc3VtZXIpKTsKLQlpZiAobGFzdF9jb25zdW1lciA9PSBjb25zdW1lcikgewkvKiBSaW5nIGlzIGVtcHR5ICAgICovCi0JCURQUklOVEsoSU5GTywgImxhc3RfY29uc3VtZXIgJWQgPT0gY29uc3VtZXIgJWRcbiIsCi0JCQlsYXN0X2NvbnN1bWVyLCBjb25zdW1lcik7Ci0JCXNwaW5fdW5sb2NrKCZhZGFwdGVyLT50eF9sb2NrKTsKLQkJcmV0dXJuIDE7Ci0JfQogCi0JYWRhcHRlci0+cHJvY19jbWRfYnVmX2NvdW50ZXIrKzsKLQkvKgotCSAqIE5vdCBuZWVkZWQgLSBkb2VzIG5vdCBzZWVtIHRvIGJlIHVzZWQgYW55d2hlcmUuCi0JICogYWRhcHRlci0+Y21kX2NvbnN1bWVyID0gY29uc3VtZXI7Ci0JICovCi0Jc3Bpbl91bmxvY2soJmFkYXB0ZXItPnR4X2xvY2spOwotCi0Jd2hpbGUgKChsYXN0X2NvbnN1bWVyICE9IGNvbnN1bWVyKSAmJiAoY291bnQxIDwgTUFYX1NUQVRVU19IQU5ETEUpKSB7CisJd2hpbGUgKGxhc3RfY29uc3VtZXIgIT0gY29uc3VtZXIpIHsKIAkJYnVmZmVyID0gJmFkYXB0ZXItPmNtZF9idWZfYXJyW2xhc3RfY29uc3VtZXJdOwotCQlwZGV2ID0gYWRhcHRlci0+cGRldjsKIAkJaWYgKGJ1ZmZlci0+c2tiKSB7CiAJCQlmcmFnID0gJmJ1ZmZlci0+ZnJhZ19hcnJheVswXTsKIAkJCXBjaV91bm1hcF9zaW5nbGUocGRldiwgZnJhZy0+ZG1hLCBmcmFnLT5sZW5ndGgsCiAJCQkJCSBQQ0lfRE1BX1RPREVWSUNFKTsKIAkJCWZyYWctPmRtYSA9IDBVTEw7CiAJCQlmb3IgKGkgPSAxOyBpIDwgYnVmZmVyLT5mcmFnX2NvdW50OyBpKyspIHsKLQkJCQlEUFJJTlRLKElORk8sICJnZXR0aW5nIGZyYWdtZW50IG5vICVkXG4iLCBpKTsKIAkJCQlmcmFnKys7CS8qIEdldCB0aGUgbmV4dCBmcmFnICovCiAJCQkJcGNpX3VubWFwX3BhZ2UocGRldiwgZnJhZy0+ZG1hLCBmcmFnLT5sZW5ndGgsCiAJCQkJCSAgICAgICBQQ0lfRE1BX1RPREVWSUNFKTsKIAkJCQlmcmFnLT5kbWEgPSAwVUxMOwogCQkJfQogCi0JCQlhZGFwdGVyLT5zdGF0cy5za2JmcmVlZCsrOworCQkJYWRhcHRlci0+c3RhdHMueG1pdGZpbmlzaGVkKys7CiAJCQlkZXZfa2ZyZWVfc2tiX2FueShidWZmZXItPnNrYik7CiAJCQlidWZmZXItPnNrYiA9IE5VTEw7Ci0JCX0gZWxzZSBpZiAoYWRhcHRlci0+cHJvY19jbWRfYnVmX2NvdW50ZXIgPT0gMSkgewotCQkJYWRhcHRlci0+c3RhdHMudHhudWxsc2tiKys7Ci0JCX0KLQkJaWYgKHVubGlrZWx5KG5ldGlmX3F1ZXVlX3N0b3BwZWQoYWRhcHRlci0+bmV0ZGV2KQotCQkJICAgICAmJiBuZXRpZl9jYXJyaWVyX29rKGFkYXB0ZXItPm5ldGRldikpCi0JCSAgICAmJiAoKGppZmZpZXMgLSBhZGFwdGVyLT5uZXRkZXYtPnRyYW5zX3N0YXJ0KSA+Ci0JCQlhZGFwdGVyLT5uZXRkZXYtPndhdGNoZG9nX3RpbWVvKSkgewotCQkJU0NIRURVTEVfV09SSygmYWRhcHRlci0+dHhfdGltZW91dF90YXNrKTsKIAkJfQogCiAJCWxhc3RfY29uc3VtZXIgPSBnZXRfbmV4dF9pbmRleChsYXN0X2NvbnN1bWVyLAogCQkJCQkgICAgICAgYWRhcHRlci0+bWF4X3R4X2Rlc2NfY291bnQpOwotCQljb3VudDErKzsKKwkJaWYgKCsrY291bnQgPj0gTUFYX1NUQVRVU19IQU5ETEUpCisJCQlicmVhazsKIAl9CiAKLQljb3VudDIgPSAwOwotCXNwaW5fbG9jaygmYWRhcHRlci0+dHhfbG9jayk7Ci0JaWYgKCgtLWFkYXB0ZXItPnByb2NfY21kX2J1Zl9jb3VudGVyKSA9PSAwKSB7CisJaWYgKGNvdW50KSB7CiAJCWFkYXB0ZXItPmxhc3RfY21kX2NvbnN1bWVyID0gbGFzdF9jb25zdW1lcjsKLQkJd2hpbGUgKChhZGFwdGVyLT5sYXN0X2NtZF9jb25zdW1lciAhPSBjb25zdW1lcikKLQkJICAgICAgICYmIChjb3VudDIgPCBNQVhfU1RBVFVTX0hBTkRMRSkpIHsKLQkJCWJ1ZmZlciA9Ci0JCQkgICAgJmFkYXB0ZXItPmNtZF9idWZfYXJyW2FkYXB0ZXItPmxhc3RfY21kX2NvbnN1bWVyXTsKLQkJCWNvdW50MisrOwotCQkJaWYgKGJ1ZmZlci0+c2tiKQotCQkJCWJyZWFrOwotCQkJZWxzZQotCQkJCWFkYXB0ZXItPmxhc3RfY21kX2NvbnN1bWVyID0KLQkJCQkgICAgZ2V0X25leHRfaW5kZXgoYWRhcHRlci0+bGFzdF9jbWRfY29uc3VtZXIsCi0JCQkJCQkgICBhZGFwdGVyLT5tYXhfdHhfZGVzY19jb3VudCk7Ci0JCX0KLQl9Ci0JaWYgKGNvdW50MSB8fCBjb3VudDIpIHsKLQkJaWYgKG5ldGlmX3F1ZXVlX3N0b3BwZWQoYWRhcHRlci0+bmV0ZGV2KQotCQkgICAgJiYgKGFkYXB0ZXItPmZsYWdzICYgTkVUWEVOX05FVERFVl9TVEFUVVMpKSB7Ci0JCQluZXRpZl93YWtlX3F1ZXVlKGFkYXB0ZXItPm5ldGRldik7Ci0JCQlhZGFwdGVyLT5mbGFncyAmPSB+TkVUWEVOX05FVERFVl9TVEFUVVM7CisJCXNtcF9tYigpOworCQlpZiAobmV0aWZfcXVldWVfc3RvcHBlZChuZXRkZXYpICYmIG5ldGlmX3J1bm5pbmcobmV0ZGV2KSkgeworCQkJbmV0aWZfdHhfbG9jayhuZXRkZXYpOworCQkJbmV0aWZfd2FrZV9xdWV1ZShuZXRkZXYpOworCQkJc21wX21iKCk7CisJCQluZXRpZl90eF91bmxvY2sobmV0ZGV2KTsKIAkJfQogCX0KIAkvKgpAQCAtMTM1MCwxNiArMTIyNCw5IEBACiAJICogVGhlcmUgaXMgc3RpbGwgYSBwb3NzaWJsZSByYWNlIGNvbmRpdGlvbiBhbmQgdGhlIGhvc3QgY291bGQgbWlzcyBhbgogCSAqIGludGVycnVwdC4gVGhlIGNhcmQgaGFzIHRvIHRha2UgY2FyZSBvZiB0aGlzLgogCSAqLwotCWlmIChhZGFwdGVyLT5sYXN0X2NtZF9jb25zdW1lciA9PSBjb25zdW1lciAmJgotCSAgICAoKChhZGFwdGVyLT5jbWRfcHJvZHVjZXIgKyAxKSAlCi0JICAgICAgYWRhcHRlci0+bWF4X3R4X2Rlc2NfY291bnQpID09IGFkYXB0ZXItPmxhc3RfY21kX2NvbnN1bWVyKSkgewotCQljb25zdW1lciA9IGxlMzJfdG9fY3B1KCooYWRhcHRlci0+Y21kX2NvbnN1bWVyKSk7Ci0JfQotCWRvbmUgPSAoYWRhcHRlci0+bGFzdF9jbWRfY29uc3VtZXIgPT0gY29uc3VtZXIpOworCWNvbnN1bWVyID0gbGUzMl90b19jcHUoKihhZGFwdGVyLT5jbWRfY29uc3VtZXIpKTsKKwlkb25lID0gKGxhc3RfY29uc3VtZXIgPT0gY29uc3VtZXIpOwogCi0Jc3Bpbl91bmxvY2soJmFkYXB0ZXItPnR4X2xvY2spOwotCURQUklOVEsoSU5GTywgImxhc3QgY29uc3VtZXIgaXMgJWQgaW4gJXNcbiIsIGxhc3RfY29uc3VtZXIsCi0JCV9fRlVOQ1RJT05fXyk7CiAJcmV0dXJuIChkb25lKTsKIH0KIApAQCAtMTQzMyw4ICsxMzAwLDYgQEAKIAkJcmN2X2Rlc2MtPmJlZ2luX2FsbG9jID0gaW5kZXg7CiAJCXJjdl9kZXNjLT5yY3ZfcGVuZGluZyArPSBjb3VudDsKIAkJcmN2X2Rlc2MtPnByb2R1Y2VyID0gcHJvZHVjZXI7Ci0JCWlmIChyY3ZfZGVzYy0+cmN2X2ZyZWUgPj0gMzIpIHsKLQkJCXJjdl9kZXNjLT5yY3ZfZnJlZSA9IDA7CiAJCQkvKiBXaW5kb3cgPSAxICovCiAJCQl3cml0ZWwoKHByb2R1Y2VyIC0gMSkgJgogCQkJICAgICAgIChyY3ZfZGVzYy0+bWF4X3J4X2Rlc2NfY291bnQgLSAxKSwKQEAgLTE0NTgsOCArMTMyMyw2IEBACiAJCQl3cml0ZWwobXNnLAogCQkJICAgICAgIERCX05PUk1BTElaRShhZGFwdGVyLAogCQkJCQkgICAgTkVUWEVOX1JDVl9QUk9EVUNFUl9PRkZTRVQpKTsKLQkJCXdtYigpOwotCQl9CiAJfQogfQogCkBAIC0xNTIzLDggKzEzODYsNiBAQAogCQlyY3ZfZGVzYy0+YmVnaW5fYWxsb2MgPSBpbmRleDsKIAkJcmN2X2Rlc2MtPnJjdl9wZW5kaW5nICs9IGNvdW50OwogCQlyY3ZfZGVzYy0+cHJvZHVjZXIgPSBwcm9kdWNlcjsKLQkJaWYgKHJjdl9kZXNjLT5yY3ZfZnJlZSA+PSAzMikgewotCQkJcmN2X2Rlc2MtPnJjdl9mcmVlID0gMDsKIAkJCS8qIFdpbmRvdyA9IDEgKi8KIAkJCXdyaXRlbCgocHJvZHVjZXIgLSAxKSAmCiAJCQkgICAgICAgKHJjdl9kZXNjLT5tYXhfcnhfZGVzY19jb3VudCAtIDEpLApAQCAtMTUzNCwyMSArMTM5NSw5IEBACiAJCQkJCQkgICAgcmN2X2Rlc2NfY3JiW3JpbmdpZF0uCiAJCQkJCQkgICAgY3JiX3Jjdl9wcm9kdWNlcl9vZmZzZXQpKTsKIAkJCXdtYigpOwotCQl9CiAJfQogfQogCi1pbnQgbmV0eGVuX25pY190eF9oYXNfd29yayhzdHJ1Y3QgbmV0eGVuX2FkYXB0ZXIgKmFkYXB0ZXIpCi17Ci0JaWYgKGZpbmRfZGlmZl9hbW9uZyhhZGFwdGVyLT5sYXN0X2NtZF9jb25zdW1lciwKLQkJCSAgICBhZGFwdGVyLT5jbWRfcHJvZHVjZXIsCi0JCQkgICAgYWRhcHRlci0+bWF4X3R4X2Rlc2NfY291bnQpID4gMCkKLQkJcmV0dXJuIDE7Ci0KLQlyZXR1cm4gMDsKLX0KLQotCiB2b2lkIG5ldHhlbl9uaWNfY2xlYXJfc3RhdHMoc3RydWN0IG5ldHhlbl9hZGFwdGVyICphZGFwdGVyKQogewogCW1lbXNldCgmYWRhcHRlci0+c3RhdHMsIDAsIHNpemVvZihhZGFwdGVyLT5zdGF0cykpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbmV0eGVuL25ldHhlbl9uaWNfaXNyLmMgYi9kcml2ZXJzL25ldC9uZXR4ZW4vbmV0eGVuX25pY19pc3IuYwppbmRleCA0OGE0MDRhLi5jODEzMTNiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9uZXR4ZW4vbmV0eGVuX25pY19pc3IuYworKysgYi9kcml2ZXJzL25ldC9uZXR4ZW4vbmV0eGVuX25pY19pc3IuYwpAQCAtNTksNyArNTksNyBAQAogCS8qIHBhY2tldCB0cmFuc21pdCBwcm9ibGVtcyAqLwogCXN0YXRzLT50eF9lcnJvcnMgPSBhZGFwdGVyLT5zdGF0cy5ub2NtZGRlc2NyaXB0b3I7CiAJLyogbm8gc3BhY2UgaW4gbGludXggYnVmZmVycyAgICAqLwotCXN0YXRzLT5yeF9kcm9wcGVkID0gYWRhcHRlci0+c3RhdHMudXBkcm9wcGVkOworCXN0YXRzLT5yeF9kcm9wcGVkID0gYWRhcHRlci0+c3RhdHMucnhkcm9wcGVkOwogCS8qIG5vIHNwYWNlIGF2YWlsYWJsZSBpbiBsaW51eCAgKi8KIAlzdGF0cy0+dHhfZHJvcHBlZCA9IGFkYXB0ZXItPnN0YXRzLnR4ZHJvcHBlZDsKIApAQCAtMTkzLDE0ICsxOTMsMTQgQEAKIHZvaWQgbmV0eGVuX25pY194Z2JlX2hhbmRsZV9waHlfaW50cihzdHJ1Y3QgbmV0eGVuX2FkYXB0ZXIgKmFkYXB0ZXIpCiB7CiAJc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiA9IGFkYXB0ZXItPm5ldGRldjsKLQl1MzIgdmFsLCB2YWwxOworCXUzMiB2YWw7CiAKIAkvKiBXSU5ET1cgPSAxICovCiAJdmFsID0gcmVhZGwoTkVUWEVOX0NSQl9OT1JNQUxJWkUoYWRhcHRlciwgQ1JCX1hHX1NUQVRFKSk7CiAJdmFsID4+PSAocGh5c2ljYWxfcG9ydFthZGFwdGVyLT5wb3J0bnVtXSAqIDgpOwotCXZhbDEgPSB2YWwgJiAweGZmOworCXZhbCAmPSAweGZmOwogCi0JaWYgKGFkYXB0ZXItPmFody54Z19saW5rdXAgPT0gMSAmJiB2YWwxICE9IFhHX0xJTktfVVApIHsKKwlpZiAoYWRhcHRlci0+YWh3LnhnX2xpbmt1cCA9PSAxICYmIHZhbCAhPSBYR19MSU5LX1VQKSB7CiAJCXByaW50ayhLRVJOX0lORk8gIiVzOiAlcyBOSUMgTGluayBpcyBkb3duXG4iLAogCQkgICAgICAgbmV0eGVuX25pY19kcml2ZXJfbmFtZSwgbmV0ZGV2LT5uYW1lKTsKIAkJYWRhcHRlci0+YWh3LnhnX2xpbmt1cCA9IDA7CkBAIC0yMDgsMTYgKzIwOCw3IEBACiAJCQluZXRpZl9jYXJyaWVyX29mZihuZXRkZXYpOwogCQkJbmV0aWZfc3RvcF9xdWV1ZShuZXRkZXYpOwogCQl9Ci0JCS8qIHJlYWQgdHdpY2UgdG8gY2xlYXIgc3RpY2t5IGJpdHMgKi8KLQkJLyogV0lORE9XID0gMCAqLwotCQluZXR4ZW5fbmljX3JlYWRfdzAoYWRhcHRlciwgTkVUWEVOX05JVV9YR19TVEFUVVMsICZ2YWwxKTsKLQkJbmV0eGVuX25pY19yZWFkX3cwKGFkYXB0ZXIsIE5FVFhFTl9OSVVfWEdfU1RBVFVTLCAmdmFsMSk7Ci0KLQkJaWYgKCh2YWwgJiAweGZmYikgIT0gMHhmZmIpIHsKLQkJCXByaW50ayhLRVJOX0lORk8gIiVzIElTUjogU3luYy9BbGlnbiBCQUQ6IDB4JTA4eFxuIiwKLQkJCSAgICAgICBuZXR4ZW5fbmljX2RyaXZlcl9uYW1lLCB2YWwxKTsKLQkJfQotCX0gZWxzZSBpZiAoYWRhcHRlci0+YWh3LnhnX2xpbmt1cCA9PSAwICYmIHZhbDEgPT0gWEdfTElOS19VUCkgeworCX0gZWxzZSBpZiAoYWRhcHRlci0+YWh3LnhnX2xpbmt1cCA9PSAwICYmIHZhbCA9PSBYR19MSU5LX1VQKSB7CiAJCXByaW50ayhLRVJOX0lORk8gIiVzOiAlcyBOSUMgTGluayBpcyB1cFxuIiwKIAkJICAgICAgIG5ldHhlbl9uaWNfZHJpdmVyX25hbWUsIG5ldGRldi0+bmFtZSk7CiAJCWFkYXB0ZXItPmFody54Z19saW5rdXAgPSAxOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbmV0eGVuL25ldHhlbl9uaWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvbmV0eGVuL25ldHhlbl9uaWNfbWFpbi5jCmluZGV4IDk3MzdlYWUuLmE4ZmI0MzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L25ldHhlbi9uZXR4ZW5fbmljX21haW4uYworKysgYi9kcml2ZXJzL25ldC9uZXR4ZW4vbmV0eGVuX25pY19tYWluLmMKQEAgLTYzLDEyICs2MywxMiBAQAogc3RhdGljIHZvaWQgbmV0eGVuX3R4X3RpbWVvdXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldik7CiBzdGF0aWMgdm9pZCBuZXR4ZW5fdHhfdGltZW91dF90YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7CiBzdGF0aWMgdm9pZCBuZXR4ZW5fd2F0Y2hkb2codW5zaWduZWQgbG9uZyk7Ci1zdGF0aWMgaW50IG5ldHhlbl9oYW5kbGVfaW50KHN0cnVjdCBuZXR4ZW5fYWRhcHRlciAqLCBzdHJ1Y3QgbmV0X2RldmljZSAqKTsKIHN0YXRpYyBpbnQgbmV0eGVuX25pY19wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1ZGdldCk7CiAjaWZkZWYgQ09ORklHX05FVF9QT0xMX0NPTlRST0xMRVIKIHN0YXRpYyB2b2lkIG5ldHhlbl9uaWNfcG9sbF9jb250cm9sbGVyKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpOwogI2VuZGlmCiBzdGF0aWMgaXJxcmV0dXJuX3QgbmV0eGVuX2ludHIoaW50IGlycSwgdm9pZCAqZGF0YSk7CitzdGF0aWMgaXJxcmV0dXJuX3QgbmV0eGVuX21zaV9pbnRyKGludCBpcnEsIHZvaWQgKmRhdGEpOwogCiBpbnQgcGh5c2ljYWxfcG9ydFtdID0gezAsIDEsIDIsIDN9OwogCkBAIC0xNDksMzMgKzE0OSwzMCBAQAogCiAjZGVmaW5lCUFEQVBURVJfTElTVF9TSVpFIDEyCiAKK3N0YXRpYyB1aW50MzJfdCBtc2lfdGd0X3N0YXR1c1s0XSA9IHsKKwlJU1JfSU5UX1RBUkdFVF9TVEFUVVMsIElTUl9JTlRfVEFSR0VUX1NUQVRVU19GMSwKKwlJU1JfSU5UX1RBUkdFVF9TVEFUVVNfRjIsIElTUl9JTlRfVEFSR0VUX1NUQVRVU19GMworfTsKKworc3RhdGljIHVpbnQzMl90IHN3X2ludF9tYXNrWzRdID0geworCUNSQl9TV19JTlRfTUFTS18wLCBDUkJfU1dfSU5UX01BU0tfMSwKKwlDUkJfU1dfSU5UX01BU0tfMiwgQ1JCX1NXX0lOVF9NQVNLXzMKK307CisKIHN0YXRpYyB2b2lkIG5ldHhlbl9uaWNfZGlzYWJsZV9pbnQoc3RydWN0IG5ldHhlbl9hZGFwdGVyICphZGFwdGVyKQogewotCXVpbnQzMl90CW1hc2sgPSAweDdmZjsKKwl1MzIgbWFzayA9IDB4N2ZmOwogCWludCByZXRyaWVzID0gMzI7CisJaW50IHBvcnQgPSBhZGFwdGVyLT5wb3J0bnVtOworCWludCBwY2lfZm4gPSBhZGFwdGVyLT5haHcucGNpX2Z1bmM7CiAKLQlEUFJJTlRLKDEsIElORk8sICJFbnRlcmVkIElTUiBEaXNhYmxlIFxuIik7Ci0KLQlzd2l0Y2ggKGFkYXB0ZXItPnBvcnRudW0pIHsKLQljYXNlIDA6Ci0JCXdyaXRlbCgweDAsIE5FVFhFTl9DUkJfTk9STUFMSVpFKGFkYXB0ZXIsIENSQl9TV19JTlRfTUFTS18wKSk7Ci0JCWJyZWFrOwotCWNhc2UgMToKLQkJd3JpdGVsKDB4MCwgTkVUWEVOX0NSQl9OT1JNQUxJWkUoYWRhcHRlciwgQ1JCX1NXX0lOVF9NQVNLXzEpKTsKLQkJYnJlYWs7Ci0JY2FzZSAyOgotCQl3cml0ZWwoMHgwLCBORVRYRU5fQ1JCX05PUk1BTElaRShhZGFwdGVyLCBDUkJfU1dfSU5UX01BU0tfMikpOwotCQlicmVhazsKLQljYXNlIDM6Ci0JCXdyaXRlbCgweDAsIE5FVFhFTl9DUkJfTk9STUFMSVpFKGFkYXB0ZXIsIENSQl9TV19JTlRfTUFTS18zKSk7Ci0JCWJyZWFrOwotCX0KKwlpZiAoYWRhcHRlci0+bXNpX21vZGUgIT0gTVNJX01PREVfTVVMVElGVU5DKQorCQl3cml0ZWwoMHgwLCBORVRYRU5fQ1JCX05PUk1BTElaRShhZGFwdGVyLCBzd19pbnRfbWFza1twb3J0XSkpOwogCiAJaWYgKGFkYXB0ZXItPmludHJfc2NoZW1lICE9IC0xICYmCiAJICAgIGFkYXB0ZXItPmludHJfc2NoZW1lICE9IElOVFJfU0NIRU1FX1BFUlBPUlQpCiAJCXdyaXRlbChtYXNrLFBDSV9PRkZTRVRfU0VDT05EX1JBTkdFKGFkYXB0ZXIsIElTUl9JTlRfTUFTSykpOwogCi0JLyogV2luZG93ID0gMCBvciAxICovCiAJaWYgKCEoYWRhcHRlci0+ZmxhZ3MgJiBORVRYRU5fTklDX01TSV9FTkFCTEVEKSkgewogCQlkbyB7CiAJCQl3cml0ZWwoMHhmZmZmZmZmZiwKQEAgLTE5MCwxNCArMTg3LDE4IEBACiAJCQlwcmludGsoS0VSTl9OT1RJQ0UgIiVzOiBGYWlsZWQgdG8gZGlzYWJsZSBpbnRlcnJ1cHQgY29tcGxldGVseVxuIiwKIAkJCQkJbmV0eGVuX25pY19kcml2ZXJfbmFtZSk7CiAJCX0KKwl9IGVsc2UgeworCQlpZiAoYWRhcHRlci0+bXNpX21vZGUgPT0gTVNJX01PREVfTVVMVElGVU5DKSB7CisJCQl3cml0ZWwoMHhmZmZmZmZmZiwgUENJX09GRlNFVF9TRUNPTkRfUkFOR0UoYWRhcHRlciwKKwkJCQkJCW1zaV90Z3Rfc3RhdHVzW3BjaV9mbl0pKTsKKwkJfQogCX0KLQotCURQUklOVEsoMSwgSU5GTywgIkRvbmUgd2l0aCBEaXNhYmxlIEludFxuIik7CiB9CiAKIHN0YXRpYyB2b2lkIG5ldHhlbl9uaWNfZW5hYmxlX2ludChzdHJ1Y3QgbmV0eGVuX2FkYXB0ZXIgKmFkYXB0ZXIpCiB7CiAJdTMyIG1hc2s7CisJaW50IHBvcnQgPSBhZGFwdGVyLT5wb3J0bnVtOwogCiAJRFBSSU5USygxLCBJTkZPLCAiRW50ZXJlZCBJU1IgRW5hYmxlIFxuIik7CiAKQEAgLTIxOCwyMCArMjE5LDcgQEAKIAkJd3JpdGVsKG1hc2ssIFBDSV9PRkZTRVRfU0VDT05EX1JBTkdFKGFkYXB0ZXIsIElTUl9JTlRfTUFTSykpOwogCX0KIAotCXN3aXRjaCAoYWRhcHRlci0+cG9ydG51bSkgewotCWNhc2UgMDoKLQkJd3JpdGVsKDB4MSwgTkVUWEVOX0NSQl9OT1JNQUxJWkUoYWRhcHRlciwgQ1JCX1NXX0lOVF9NQVNLXzApKTsKLQkJYnJlYWs7Ci0JY2FzZSAxOgotCQl3cml0ZWwoMHgxLCBORVRYRU5fQ1JCX05PUk1BTElaRShhZGFwdGVyLCBDUkJfU1dfSU5UX01BU0tfMSkpOwotCQlicmVhazsKLQljYXNlIDI6Ci0JCXdyaXRlbCgweDEsIE5FVFhFTl9DUkJfTk9STUFMSVpFKGFkYXB0ZXIsIENSQl9TV19JTlRfTUFTS18yKSk7Ci0JCWJyZWFrOwotCWNhc2UgMzoKLQkJd3JpdGVsKDB4MSwgTkVUWEVOX0NSQl9OT1JNQUxJWkUoYWRhcHRlciwgQ1JCX1NXX0lOVF9NQVNLXzMpKTsKLQkJYnJlYWs7Ci0JfQorCXdyaXRlbCgweDEsIE5FVFhFTl9DUkJfTk9STUFMSVpFKGFkYXB0ZXIsIHN3X2ludF9tYXNrW3BvcnRdKSk7CiAKIAlpZiAoIShhZGFwdGVyLT5mbGFncyAmIE5FVFhFTl9OSUNfTVNJX0VOQUJMRUQpKSB7CiAJCW1hc2sgPSAweGJmZjsKQEAgLTMyOCw3ICszMTYsNiBAQAogCiAJYWRhcHRlci0+YWh3LnBkZXYgPSBwZGV2OwogCWFkYXB0ZXItPmFody5wY2lfZnVuYyAgPSBwY2lfZnVuY19pZDsKLQlzcGluX2xvY2tfaW5pdCgmYWRhcHRlci0+dHhfbG9jayk7CiAKIAkvKiByZW1hcCBwaHlzIGFkZHJlc3MgKi8KIAltZW1fYmFzZSA9IHBjaV9yZXNvdXJjZV9zdGFydChwZGV2LCAwKTsJLyogMCBpcyBmb3IgQkFSIDAgKi8KQEAgLTQwMSw2ICszODgsNyBAQAogCiAJLyogdGhpcyB3aWxsIGJlIHJlYWQgZnJvbSBGVyBsYXRlciAqLwogCWFkYXB0ZXItPmludHJfc2NoZW1lID0gLTE7CisJYWRhcHRlci0+bXNpX21vZGUgPSAtMTsKIAogCS8qIFRoaXMgd2lsbCBiZSByZXNldCBmb3IgbWV6eiBjYXJkcyAgKi8KIAlhZGFwdGVyLT5wb3J0bnVtID0gcGNpX2Z1bmNfaWQ7CkBAIC00MTUsNyArNDAzLDcgQEAKIAluZXRkZXYtPnNldF9tYWNfYWRkcmVzcyAgICA9IG5ldHhlbl9uaWNfc2V0X21hYzsKIAluZXRkZXYtPmNoYW5nZV9tdHUJICAgPSBuZXR4ZW5fbmljX2NoYW5nZV9tdHU7CiAJbmV0ZGV2LT50eF90aW1lb3V0CSAgID0gbmV0eGVuX3R4X3RpbWVvdXQ7Ci0JbmV0ZGV2LT53YXRjaGRvZ190aW1lbyAgICAgPSBIWjsKKwluZXRkZXYtPndhdGNoZG9nX3RpbWVvICAgICA9IDIqSFo7CiAKIAluZXR4ZW5fbmljX2NoYW5nZV9tdHUobmV0ZGV2LCBuZXRkZXYtPm10dSk7CiAKQEAgLTU0Myw3ICs1MzEsNiBAQAogCWFkYXB0ZXItPndhdGNoZG9nX3RpbWVyLmRhdGEgPSAodW5zaWduZWQgbG9uZylhZGFwdGVyOwogCUlOSVRfV09SSygmYWRhcHRlci0+d2F0Y2hkb2dfdGFzaywgbmV0eGVuX3dhdGNoZG9nX3Rhc2spOwogCWFkYXB0ZXItPmFody5wZGV2ID0gcGRldjsKLQlhZGFwdGVyLT5wcm9jX2NtZF9idWZfY291bnRlciA9IDA7CiAJYWRhcHRlci0+YWh3LnJldmlzaW9uX2lkID0gcGRldi0+cmV2aXNpb247CiAKIAkvKiBtYWtlIHN1cmUgV2luZG93ID09IDEgKi8KQEAgLTgzMyw2ICs4MjAsOCBAQAogCXN0cnVjdCBuZXR4ZW5fYWRhcHRlciAqYWRhcHRlciA9IChzdHJ1Y3QgbmV0eGVuX2FkYXB0ZXIgKiluZXRkZXYtPnByaXY7CiAJaW50IGVyciA9IDA7CiAJaW50IGN0eCwgcmluZzsKKwlpcnFfaGFuZGxlcl90IGhhbmRsZXI7CisJdW5zaWduZWQgbG9uZyBmbGFncyA9IElSUUZfU0FNUExFX1JBTkRPTTsKIAogCWlmIChhZGFwdGVyLT5pc191cCAhPSBORVRYRU5fQURBUFRFUl9VUF9NQUdJQykgewogCQllcnIgPSBuZXR4ZW5faW5pdF9maXJtd2FyZShhZGFwdGVyKTsKQEAgLTg1Niw5ICs4NDUsMTQgQEAKIAkJCQluZXR4ZW5fcG9zdF9yeF9idWZmZXJzKGFkYXB0ZXIsIGN0eCwgcmluZyk7CiAJCX0KIAkJYWRhcHRlci0+aXJxID0gYWRhcHRlci0+YWh3LnBkZXYtPmlycTsKLQkJZXJyID0gcmVxdWVzdF9pcnEoYWRhcHRlci0+YWh3LnBkZXYtPmlycSwgbmV0eGVuX2ludHIsCi0JCQkJICBJUlFGX1NIQVJFRHxJUlFGX1NBTVBMRV9SQU5ET00sIG5ldGRldi0+bmFtZSwKLQkJCQkgIGFkYXB0ZXIpOworCQlpZiAoYWRhcHRlci0+ZmxhZ3MgJiBORVRYRU5fTklDX01TSV9FTkFCTEVEKQorCQkJaGFuZGxlciA9IG5ldHhlbl9tc2lfaW50cjsKKwkJZWxzZSB7CisJCQlmbGFncyB8PSBJUlFGX1NIQVJFRDsKKwkJCWhhbmRsZXIgPSBuZXR4ZW5faW50cjsKKwkJfQorCQllcnIgPSByZXF1ZXN0X2lycShhZGFwdGVyLT5pcnEsIGhhbmRsZXIsCisJCQkJICBmbGFncywgbmV0ZGV2LT5uYW1lLCBhZGFwdGVyKTsKIAkJaWYgKGVycikgewogCQkJcHJpbnRrKEtFUk5fRVJSICJyZXF1ZXN0X2lycSBmYWlsZWQgd2l0aDogJWRcbiIsIGVycik7CiAJCQluZXR4ZW5fZnJlZV9od19yZXNvdXJjZXMoYWRhcHRlcik7CkBAIC04NjcsMjEgKzg2MSwxMiBAQAogCiAJCWFkYXB0ZXItPmlzX3VwID0gTkVUWEVOX0FEQVBURVJfVVBfTUFHSUM7CiAJfQotCWlmICghYWRhcHRlci0+ZHJpdmVyX21pc21hdGNoKQotCQltb2RfdGltZXIoJmFkYXB0ZXItPndhdGNoZG9nX3RpbWVyLCBqaWZmaWVzKTsKLQotCW5hcGlfZW5hYmxlKCZhZGFwdGVyLT5uYXBpKTsKLQotCW5ldHhlbl9uaWNfZW5hYmxlX2ludChhZGFwdGVyKTsKLQogCS8qIERvbmUgaGVyZSBhZ2FpbiBzbyB0aGF0IGV2ZW4gaWYgcGhhbnRvbSBzdyBvdmVyd3JvdGUgaXQsCiAJICogd2Ugc2V0IGl0ICovCiAJaWYgKGFkYXB0ZXItPmluaXRfcG9ydAogCSAgICAmJiBhZGFwdGVyLT5pbml0X3BvcnQoYWRhcHRlciwgYWRhcHRlci0+cG9ydG51bSkgIT0gMCkgewotCSAgICBkZWxfdGltZXJfc3luYygmYWRhcHRlci0+d2F0Y2hkb2dfdGltZXIpOwogCQlwcmludGsoS0VSTl9FUlIgIiVzOiBGYWlsZWQgdG8gaW5pdGlhbGl6ZSBwb3J0ICVkXG4iLAogCQkJCW5ldHhlbl9uaWNfZHJpdmVyX25hbWUsIGFkYXB0ZXItPnBvcnRudW0pOwotCQluYXBpX2Rpc2FibGUoJmFkYXB0ZXItPm5hcGkpOwogCQlyZXR1cm4gLUVJTzsKIAl9CiAJaWYgKGFkYXB0ZXItPm1hY2FkZHJfc2V0KQpAQCAtODk0LDYgKzg3OSwxMiBAQAogCQlhZGFwdGVyLT5zZXRfbXR1KGFkYXB0ZXIsIG5ldGRldi0+bXR1KTsKIAogCWlmICghYWRhcHRlci0+ZHJpdmVyX21pc21hdGNoKQorCQltb2RfdGltZXIoJmFkYXB0ZXItPndhdGNoZG9nX3RpbWVyLCBqaWZmaWVzKTsKKworCW5hcGlfZW5hYmxlKCZhZGFwdGVyLT5uYXBpKTsKKwluZXR4ZW5fbmljX2VuYWJsZV9pbnQoYWRhcHRlcik7CisKKwlpZiAoIWFkYXB0ZXItPmRyaXZlcl9taXNtYXRjaCkKIAkJbmV0aWZfc3RhcnRfcXVldWUobmV0ZGV2KTsKIAogCXJldHVybiAwOwpAQCAtOTU4LDQxICs5NDksMTcgQEAKIAlzdHJ1Y3QgbmV0eGVuX3NrYl9mcmFnICpidWZmcmFnOwogCXVuc2lnbmVkIGludCBpOwogCi0JdTMyIHByb2R1Y2VyID0gMDsKKwl1MzIgcHJvZHVjZXIsIGNvbnN1bWVyOwogCXUzMiBzYXZlZF9wcm9kdWNlciA9IDA7CiAJc3RydWN0IGNtZF9kZXNjX3R5cGUwICpod2Rlc2M7CiAJaW50IGs7CiAJc3RydWN0IG5ldHhlbl9jbWRfYnVmZmVyICpwYnVmID0gTlVMTDsKLQlzdGF0aWMgaW50IGRyb3BwZWRfcGFja2V0ID0gMDsKIAlpbnQgZnJhZ19jb3VudDsKLQl1MzIgbG9jYWxfcHJvZHVjZXIgPSAwOwotCXUzMiBtYXhfdHhfZGVzY19jb3VudCA9IDA7Ci0JdTMyIGxhc3RfY21kX2NvbnN1bWVyID0gMDsKIAlpbnQgbm9fb2ZfZGVzYzsKKwl1MzIgbnVtX3R4ZCA9IGFkYXB0ZXItPm1heF90eF9kZXNjX2NvdW50OwogCi0JYWRhcHRlci0+c3RhdHMueG1pdGNhbGxlZCsrOwogCWZyYWdfY291bnQgPSBza2Jfc2hpbmZvKHNrYiktPm5yX2ZyYWdzICsgMTsKIAotCWlmICh1bmxpa2VseShza2ItPmxlbiA8PSAwKSkgewotCQlkZXZfa2ZyZWVfc2tiX2FueShza2IpOwotCQlhZGFwdGVyLT5zdGF0cy5iYWRza2JsZW4rKzsKLQkJcmV0dXJuIE5FVERFVl9UWF9PSzsKLQl9Ci0KLQlpZiAoZnJhZ19jb3VudCA+IE1BWF9CVUZGRVJTX1BFUl9DTUQpIHsKLQkJcHJpbnRrKCIlczogJXMgbmV0eGVuX25pY194bWl0X2ZyYW1lOiBmcmFnX2NvdW50ICglZCkgIgotCQkgICAgICAgInRvbyBsYXJnZSwgY2FuIGhhbmRsZSBvbmx5ICVkIGZyYWdzXG4iLAotCQkgICAgICAgbmV0eGVuX25pY19kcml2ZXJfbmFtZSwgbmV0ZGV2LT5uYW1lLAotCQkgICAgICAgZnJhZ19jb3VudCwgTUFYX0JVRkZFUlNfUEVSX0NNRCk7Ci0JCWFkYXB0ZXItPnN0YXRzLnR4ZHJvcHBlZCsrOwotCQlpZiAoKCsrZHJvcHBlZF9wYWNrZXQgJiAweGZmKSA9PSAweGZmKQotCQkJcHJpbnRrKCIlczogJXMgZHJvcHBwZWQgcGFja2V0cyA9ICVkXG4iLAotCQkJICAgICAgIG5ldHhlbl9uaWNfZHJpdmVyX25hbWUsIG5ldGRldi0+bmFtZSwKLQkJCSAgICAgICBkcm9wcGVkX3BhY2tldCk7Ci0KLQkJcmV0dXJuIE5FVERFVl9UWF9PSzsKLQl9Ci0KIAkvKiBUaGVyZSA0IGZyYWdtZW50cyBwZXIgZGVzY3JpcHRvciAqLwogCW5vX29mX2Rlc2MgPSAoZnJhZ19jb3VudCArIDMpID4+IDI7CiAJaWYgKG5ldGRldi0+ZmVhdHVyZXMgJiBORVRJRl9GX1RTTykgewpAQCAtMTAwNywyNyArOTc0LDE2IEBACiAJCX0KIAl9CiAKLQlzcGluX2xvY2tfYmgoJmFkYXB0ZXItPnR4X2xvY2spOwotCWlmIChhZGFwdGVyLT50b3RhbF90aHJlYWRzID49IE1BWF9YTUlUX1BST0RVQ0VSUykgewotCQlnb3RvIG91dF9yZXF1ZXVlOworCXByb2R1Y2VyID0gYWRhcHRlci0+Y21kX3Byb2R1Y2VyOworCXNtcF9tYigpOworCWNvbnN1bWVyID0gYWRhcHRlci0+bGFzdF9jbWRfY29uc3VtZXI7CisJaWYgKChub19vZl9kZXNjKzIpID4gZmluZF9kaWZmX2Ftb25nKHByb2R1Y2VyLCBjb25zdW1lciwgbnVtX3R4ZCkpIHsKKwkJbmV0aWZfc3RvcF9xdWV1ZShuZXRkZXYpOworCQlzbXBfbWIoKTsKKwkJcmV0dXJuIE5FVERFVl9UWF9CVVNZOwogCX0KLQlsb2NhbF9wcm9kdWNlciA9IGFkYXB0ZXItPmNtZF9wcm9kdWNlcjsKLQlrID0gYWRhcHRlci0+Y21kX3Byb2R1Y2VyOwotCW1heF90eF9kZXNjX2NvdW50ID0gYWRhcHRlci0+bWF4X3R4X2Rlc2NfY291bnQ7Ci0JbGFzdF9jbWRfY29uc3VtZXIgPSBhZGFwdGVyLT5sYXN0X2NtZF9jb25zdW1lcjsKLQlpZiAoKGsgKyBub19vZl9kZXNjKSA+PQotCSAgICAoKGxhc3RfY21kX2NvbnN1bWVyIDw9IGspID8gbGFzdF9jbWRfY29uc3VtZXIgKyBtYXhfdHhfZGVzY19jb3VudCA6Ci0JICAgICBsYXN0X2NtZF9jb25zdW1lcikpIHsKLQkJZ290byBvdXRfcmVxdWV1ZTsKLQl9Ci0JayA9IGdldF9pbmRleF9yYW5nZShrLCBtYXhfdHhfZGVzY19jb3VudCwgbm9fb2ZfZGVzYyk7Ci0JYWRhcHRlci0+Y21kX3Byb2R1Y2VyID0gazsKLQlhZGFwdGVyLT50b3RhbF90aHJlYWRzKys7Ci0JYWRhcHRlci0+bnVtX3RocmVhZHMrKzsKIAotCXNwaW5fdW5sb2NrX2JoKCZhZGFwdGVyLT50eF9sb2NrKTsKIAkvKiBDb3B5IHRoZSBkZXNjcmlwdG9ycyBpbnRvIHRoZSBoYXJkd2FyZSAgICAqLwotCXByb2R1Y2VyID0gbG9jYWxfcHJvZHVjZXI7CiAJc2F2ZWRfcHJvZHVjZXIgPSBwcm9kdWNlcjsKIAlod2Rlc2MgPSAmaHctPmNtZF9kZXNjX2hlYWRbcHJvZHVjZXJdOwogCW1lbXNldChod2Rlc2MsIDAsIHNpemVvZihzdHJ1Y3QgY21kX2Rlc2NfdHlwZTApKTsKQEAgLTEwNjcsOCArMTAyMyw3IEBACiAJCS8qIG1vdmUgdG8gbmV4dCBkZXNjLiBpZiB0aGVyZSBpcyBhIG5lZWQgKi8KIAkJaWYgKChpICYgMHgzKSA9PSAwKSB7CiAJCQlrID0gMDsKLQkJCXByb2R1Y2VyID0gZ2V0X25leHRfaW5kZXgocHJvZHVjZXIsCi0JCQkJCQkgIGFkYXB0ZXItPm1heF90eF9kZXNjX2NvdW50KTsKKwkJCXByb2R1Y2VyID0gZ2V0X25leHRfaW5kZXgocHJvZHVjZXIsIG51bV90eGQpOwogCQkJaHdkZXNjID0gJmh3LT5jbWRfZGVzY19oZWFkW3Byb2R1Y2VyXTsKIAkJCW1lbXNldChod2Rlc2MsIDAsIHNpemVvZihzdHJ1Y3QgY21kX2Rlc2NfdHlwZTApKTsKIAkJCXBidWYgPSAmYWRhcHRlci0+Y21kX2J1Zl9hcnJbcHJvZHVjZXJdOwpAQCAtMTA4Niw3ICsxMDQxLDYgQEAKIAkJYnVmZnJhZy0+ZG1hID0gdGVtcF9kbWE7CiAJCWJ1ZmZyYWctPmxlbmd0aCA9IHRlbXBfbGVuOwogCi0JCURQUklOVEsoSU5GTywgImZvciBsb29wLiBpPSVkIGs9JWRcbiIsIGksIGspOwogCQlzd2l0Y2ggKGspIHsKIAkJY2FzZSAwOgogCQkJaHdkZXNjLT5idWZmZXIxX2xlbmd0aCA9IGNwdV90b19sZTE2KHRlbXBfbGVuKTsKQEAgLTExMDcsNyArMTA2MSw3IEBACiAJCX0KIAkJZnJhZysrOwogCX0KLQlwcm9kdWNlciA9IGdldF9uZXh0X2luZGV4KHByb2R1Y2VyLCBhZGFwdGVyLT5tYXhfdHhfZGVzY19jb3VudCk7CisJcHJvZHVjZXIgPSBnZXRfbmV4dF9pbmRleChwcm9kdWNlciwgbnVtX3R4ZCk7CiAKIAkvKiBtaWdodCBjaGFuZ2Ugb3Bjb2RlIHRvIFRYX1RDUF9MU08gKi8KIAluZXR4ZW5fdHNvX2NoZWNrKGFkYXB0ZXIsICZody0+Y21kX2Rlc2NfaGVhZFtzYXZlZF9wcm9kdWNlcl0sIHNrYik7CkBAIC0xMTM0LDcgKzEwODgsNyBAQAogCQkvKiBjb3B5IHRoZSBmaXJzdCA2NCBieXRlcyAqLwogCQltZW1jcHkoKCh2b2lkICopaHdkZXNjKSArIDIsCiAJCSAgICAgICAodm9pZCAqKShza2ItPmRhdGEpLCBmaXJzdF9oZHJfbGVuKTsKLQkJcHJvZHVjZXIgPSBnZXRfbmV4dF9pbmRleChwcm9kdWNlciwgbWF4X3R4X2Rlc2NfY291bnQpOworCQlwcm9kdWNlciA9IGdldF9uZXh0X2luZGV4KHByb2R1Y2VyLCBudW1fdHhkKTsKIAogCQlpZiAobW9yZV9oZHIpIHsKIAkJCWh3ZGVzYyA9ICZody0+Y21kX2Rlc2NfaGVhZFtwcm9kdWNlcl07CkBAIC0xMTQ3LDM1ICsxMTAxLDE5IEBACiAJCQkJCQkJIGh3ZGVzYywKIAkJCQkJCQkgKGhkcl9sZW4gLQogCQkJCQkJCSAgZmlyc3RfaGRyX2xlbikpOwotCQkJcHJvZHVjZXIgPSBnZXRfbmV4dF9pbmRleChwcm9kdWNlciwgbWF4X3R4X2Rlc2NfY291bnQpOworCQkJcHJvZHVjZXIgPSBnZXRfbmV4dF9pbmRleChwcm9kdWNlciwgbnVtX3R4ZCk7CiAJCX0KIAl9CiAKLQlzcGluX2xvY2tfYmgoJmFkYXB0ZXItPnR4X2xvY2spOworCWFkYXB0ZXItPmNtZF9wcm9kdWNlciA9IHByb2R1Y2VyOwogCWFkYXB0ZXItPnN0YXRzLnR4Ynl0ZXMgKz0gc2tiLT5sZW47CiAKLQkvKiBDb2RlIHRvIHVwZGF0ZSB0aGUgYWRhcHRlciBjb25zaWRlcmluZyBob3cgbWFueSBwcm9kdWNlciB0aHJlYWRzCi0JICAgYXJlIGN1cnJlbnRseSB3b3JraW5nICovCi0JaWYgKCgtLWFkYXB0ZXItPm51bV90aHJlYWRzKSA9PSAwKSB7Ci0JCS8qIFRoaXMgaXMgdGhlIGxhc3QgdGhyZWFkICovCi0JCXUzMiBjcmJfcHJvZHVjZXIgPSBhZGFwdGVyLT5jbWRfcHJvZHVjZXI7Ci0JCW5ldHhlbl9uaWNfdXBkYXRlX2NtZF9wcm9kdWNlcihhZGFwdGVyLCBjcmJfcHJvZHVjZXIpOwotCQl3bWIoKTsKLQkJYWRhcHRlci0+dG90YWxfdGhyZWFkcyA9IDA7Ci0JfQorCW5ldHhlbl9uaWNfdXBkYXRlX2NtZF9wcm9kdWNlcihhZGFwdGVyLCBhZGFwdGVyLT5jbWRfcHJvZHVjZXIpOwogCi0JYWRhcHRlci0+c3RhdHMueG1pdGZpbmlzaGVkKys7CisJYWRhcHRlci0+c3RhdHMueG1pdGNhbGxlZCsrOwogCW5ldGRldi0+dHJhbnNfc3RhcnQgPSBqaWZmaWVzOwogCi0Jc3Bpbl91bmxvY2tfYmgoJmFkYXB0ZXItPnR4X2xvY2spOwogCXJldHVybiBORVRERVZfVFhfT0s7Ci0KLW91dF9yZXF1ZXVlOgotCW5ldGlmX3N0b3BfcXVldWUobmV0ZGV2KTsKLQlhZGFwdGVyLT5mbGFncyB8PSBORVRYRU5fTkVUREVWX1NUQVRVUzsKLQotCXNwaW5fdW5sb2NrX2JoKCZhZGFwdGVyLT50eF9sb2NrKTsKLQlyZXR1cm4gTkVUREVWX1RYX0JVU1k7CiB9CiAKIHN0YXRpYyB2b2lkIG5ldHhlbl93YXRjaGRvZyh1bnNpZ25lZCBsb25nIHYpCkBAIC0xMjAwLDg3ICsxMTM4LDYwIEBACiAJcHJpbnRrKEtFUk5fRVJSICIlcyAlczogdHJhbnNtaXQgdGltZW91dCwgcmVzZXR0aW5nLlxuIiwKIAkgICAgICAgbmV0eGVuX25pY19kcml2ZXJfbmFtZSwgYWRhcHRlci0+bmV0ZGV2LT5uYW1lKTsKIAotCW5ldHhlbl9uaWNfY2xvc2UoYWRhcHRlci0+bmV0ZGV2KTsKLQluZXR4ZW5fbmljX29wZW4oYWRhcHRlci0+bmV0ZGV2KTsKKwluZXR4ZW5fbmljX2Rpc2FibGVfaW50KGFkYXB0ZXIpOworCW5hcGlfZGlzYWJsZSgmYWRhcHRlci0+bmFwaSk7CisKIAlhZGFwdGVyLT5uZXRkZXYtPnRyYW5zX3N0YXJ0ID0gamlmZmllczsKKworCW5hcGlfZW5hYmxlKCZhZGFwdGVyLT5uYXBpKTsKKwluZXR4ZW5fbmljX2VuYWJsZV9pbnQoYWRhcHRlcik7CiAJbmV0aWZfd2FrZV9xdWV1ZShhZGFwdGVyLT5uZXRkZXYpOwogfQogCi1zdGF0aWMgaW50Ci1uZXR4ZW5faGFuZGxlX2ludChzdHJ1Y3QgbmV0eGVuX2FkYXB0ZXIgKmFkYXB0ZXIsIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpCitzdGF0aWMgaW5saW5lIHZvaWQKK25ldHhlbl9oYW5kbGVfaW50KHN0cnVjdCBuZXR4ZW5fYWRhcHRlciAqYWRhcHRlcikKIHsKLQl1MzIgcmV0ID0gMDsKLQotCURQUklOVEsoSU5GTywgIkVudGVyZWQgaGFuZGxlIElTUlxuIik7Ci0JYWRhcHRlci0+c3RhdHMuaW50cysrOwotCiAJbmV0eGVuX25pY19kaXNhYmxlX2ludChhZGFwdGVyKTsKLQotCWlmIChuZXR4ZW5fbmljX3J4X2hhc193b3JrKGFkYXB0ZXIpIHx8IG5ldHhlbl9uaWNfdHhfaGFzX3dvcmsoYWRhcHRlcikpIHsKLQkJaWYgKG5ldGlmX3J4X3NjaGVkdWxlX3ByZXAobmV0ZGV2LCAmYWRhcHRlci0+bmFwaSkpIHsKLQkJCS8qCi0JCQkgKiBJbnRlcnJ1cHRzIGFyZSBhbHJlYWR5IGRpc2FibGVkLgotCQkJICovCi0JCQlfX25ldGlmX3J4X3NjaGVkdWxlKG5ldGRldiwgJmFkYXB0ZXItPm5hcGkpOwotCQl9IGVsc2UgewotCQkJc3RhdGljIHVuc2lnbmVkIGludCBpbnRjb3VudCA9IDA7Ci0JCQlpZiAoKCsraW50Y291bnQgJiAweGZmZikgPT0gMHhmZmYpCi0JCQkJRFBSSU5USyhLRVJOX0VSUgotCQkJCSAgICAgICAiJXM6ICVzIGludGVycnVwdCAlZCB3aGlsZSBpbiBwb2xsXG4iLAotCQkJCSAgICAgICBuZXR4ZW5fbmljX2RyaXZlcl9uYW1lLCBuZXRkZXYtPm5hbWUsCi0JCQkJICAgICAgIGludGNvdW50KTsKLQkJfQotCQlyZXQgPSAxOwotCX0KLQotCWlmIChyZXQgPT0gMCkgewotCQluZXR4ZW5fbmljX2VuYWJsZV9pbnQoYWRhcHRlcik7Ci0JfQotCi0JcmV0dXJuIHJldDsKKwluYXBpX3NjaGVkdWxlKCZhZGFwdGVyLT5uYXBpKTsKIH0KIAotLyoKLSAqIG5ldHhlbl9pbnRyIC0gSW50ZXJydXB0IEhhbmRsZXIKLSAqIEBpcnE6IGludGVycnVwdCBudW1iZXIKLSAqIGRhdGEgcG9pbnRzIHRvIGFkYXB0ZXIgc3R1Y3R1cmUgKHdoaWNoIG1heSBiZSBoYW5kbGluZyBtb3JlIHRoYW4gMSBwb3J0Ci0gKi8KIGlycXJldHVybl90IG5ldHhlbl9pbnRyKGludCBpcnEsIHZvaWQgKmRhdGEpCiB7CiAJc3RydWN0IG5ldHhlbl9hZGFwdGVyICphZGFwdGVyID0gZGF0YTsKLQlzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2ID0gYWRhcHRlci0+bmV0ZGV2OwogCXUzMiBvdXJfaW50ID0gMDsKIAotCWlmICghKGFkYXB0ZXItPmZsYWdzICYgTkVUWEVOX05JQ19NU0lfRU5BQkxFRCkpIHsKLQkJb3VyX2ludCA9IHJlYWRsKE5FVFhFTl9DUkJfTk9STUFMSVpFKGFkYXB0ZXIsIENSQl9JTlRfVkVDVE9SKSk7Ci0JCS8qIG5vdCBvdXIgaW50ZXJydXB0ICovCi0JCWlmICgob3VyX2ludCAmICgweDgwIDw8IGFkYXB0ZXItPnBvcnRudW0pKSA9PSAwKQotCQkJcmV0dXJuIElSUV9OT05FOwotCX0KKwlvdXJfaW50ID0gcmVhZGwoTkVUWEVOX0NSQl9OT1JNQUxJWkUoYWRhcHRlciwgQ1JCX0lOVF9WRUNUT1IpKTsKKwkvKiBub3Qgb3VyIGludGVycnVwdCAqLworCWlmICgob3VyX2ludCAmICgweDgwIDw8IGFkYXB0ZXItPnBvcnRudW0pKSA9PSAwKQorCQlyZXR1cm4gSVJRX05PTkU7CiAKIAlpZiAoYWRhcHRlci0+aW50cl9zY2hlbWUgPT0gSU5UUl9TQ0hFTUVfUEVSUE9SVCkgewogCQkvKiBjbGFpbSBpbnRlcnJ1cHQgKi8KLQkJaWYgKCEoYWRhcHRlci0+ZmxhZ3MgJiBORVRYRU5fTklDX01TSV9FTkFCTEVEKSkgewotCQkJd3JpdGVsKG91cl9pbnQgJiB+KCh1MzIpKDB4ODAgPDwgYWRhcHRlci0+cG9ydG51bSkpLAorCQl3cml0ZWwob3VyX2ludCAmIH4oKHUzMikoMHg4MCA8PCBhZGFwdGVyLT5wb3J0bnVtKSksCiAJCQlORVRYRU5fQ1JCX05PUk1BTElaRShhZGFwdGVyLCBDUkJfSU5UX1ZFQ1RPUikpOwotCQl9CiAJfQogCi0JaWYgKG5ldGlmX3J1bm5pbmcobmV0ZGV2KSkKLQkJbmV0eGVuX2hhbmRsZV9pbnQoYWRhcHRlciwgbmV0ZGV2KTsKKwluZXR4ZW5faGFuZGxlX2ludChhZGFwdGVyKTsKIAogCXJldHVybiBJUlFfSEFORExFRDsKIH0KIAoraXJxcmV0dXJuX3QgbmV0eGVuX21zaV9pbnRyKGludCBpcnEsIHZvaWQgKmRhdGEpCit7CisJc3RydWN0IG5ldHhlbl9hZGFwdGVyICphZGFwdGVyID0gZGF0YTsKKworCW5ldHhlbl9oYW5kbGVfaW50KGFkYXB0ZXIpOworCXJldHVybiBJUlFfSEFORExFRDsKK30KKwogc3RhdGljIGludCBuZXR4ZW5fbmljX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KQogewogCXN0cnVjdCBuZXR4ZW5fYWRhcHRlciAqYWRhcHRlciA9IGNvbnRhaW5lcl9vZihuYXBpLCBzdHJ1Y3QgbmV0eGVuX2FkYXB0ZXIsIG5hcGkpOwotCXN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYgPSBhZGFwdGVyLT5uZXRkZXY7Ci0JaW50IGRvbmUgPSAxOworCWludCB0eF9jb21wbGV0ZTsKIAlpbnQgY3R4OwogCWludCB3b3JrX2RvbmU7CiAKLQlEUFJJTlRLKElORk8sICJwb2xsaW5nIGZvciAlZCBkZXNjcmlwdG9yc1xuIiwgKmJ1ZGdldCk7CisJdHhfY29tcGxldGUgPSBuZXR4ZW5fcHJvY2Vzc19jbWRfcmluZyhhZGFwdGVyKTsKIAogCXdvcmtfZG9uZSA9IDA7CiAJZm9yIChjdHggPSAwOyBjdHggPCBNQVhfUkNWX0NUWDsgKytjdHgpIHsKQEAgLTEzMDAsMTYgKzEyMTEsOCBAQAogCQkJCQkJICAgICBidWRnZXQgLyBNQVhfUkNWX0NUWCk7CiAJfQogCi0JaWYgKHdvcmtfZG9uZSA+PSBidWRnZXQpCi0JCWRvbmUgPSAwOwotCi0JaWYgKG5ldHhlbl9wcm9jZXNzX2NtZF9yaW5nKCh1bnNpZ25lZCBsb25nKWFkYXB0ZXIpID09IDApCi0JCWRvbmUgPSAwOwotCi0JRFBSSU5USyhJTkZPLCAibmV3IHdvcmtfZG9uZTogJWQgd29ya190b19kbzogJWRcbiIsCi0JCXdvcmtfZG9uZSwgd29ya190b19kbyk7Ci0JaWYgKGRvbmUpIHsKLQkJbmV0aWZfcnhfY29tcGxldGUobmV0ZGV2LCBuYXBpKTsKKwlpZiAoKHdvcmtfZG9uZSA8IGJ1ZGdldCkgJiYgdHhfY29tcGxldGUpIHsKKwkJbmV0aWZfcnhfY29tcGxldGUoYWRhcHRlci0+bmV0ZGV2LCAmYWRhcHRlci0+bmFwaSk7CiAJCW5ldHhlbl9uaWNfZW5hYmxlX2ludChhZGFwdGVyKTsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L25ldHhlbi9uZXR4ZW5fbmljX3BoYW5fcmVnLmggYi9kcml2ZXJzL25ldC9uZXR4ZW4vbmV0eGVuX25pY19waGFuX3JlZy5oCmluZGV4IGZmYTNiNzIuLmE1NjZiNTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L25ldHhlbi9uZXR4ZW5fbmljX3BoYW5fcmVnLmgKKysrIGIvZHJpdmVycy9uZXQvbmV0eGVuL25ldHhlbl9uaWNfcGhhbl9yZWcuaApAQCAtMTI2LDggKzEyNiwxMSBAQAogICovCiAjZGVmaW5lIENSQl9OSUNfQ0FQQUJJTElUSUVTX0hPU1QJTkVUWEVOX05JQ19SRUcoMHgxYTgpCiAjZGVmaW5lIENSQl9OSUNfQ0FQQUJJTElUSUVTX0ZXCSAgCU5FVFhFTl9OSUNfUkVHKDB4MWRjKQorI2RlZmluZSBDUkJfTklDX01TSV9NT0RFX0hPU1QJCU5FVFhFTl9OSUNfUkVHKDB4MjcwKQorI2RlZmluZSBDUkJfTklDX01TSV9NT0RFX0ZXCSAgCQlORVRYRU5fTklDX1JFRygweDI3NCkKIAogI2RlZmluZSBJTlRSX1NDSEVNRV9QRVJQT1JUCSAgICAgIAkweDEKKyNkZWZpbmUgTVNJX01PREVfTVVMVElGVU5DCSAgICAgIAkweDEKIAogLyogdXNlZCBmb3IgZXRodG9vbCB0ZXN0cyAqLwogI2RlZmluZSBDUkJfU0NSQVRDSFBBRF9URVNUCSAgICBORVRYRU5fTklDX1JFRygweDI4MCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BjbWNpYS9heG5ldF9jcy5jIGIvZHJpdmVycy9uZXQvcGNtY2lhL2F4bmV0X2NzLmMKaW5kZXggZThhNjNlNC4uY2U5NWM1ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGNtY2lhL2F4bmV0X2NzLmMKKysrIGIvZHJpdmVycy9uZXQvcGNtY2lhL2F4bmV0X2NzLmMKQEAgLTEyNjgsNyArMTI2OCw3IEBACiAJCX0KIAl9CiAgICAgCi0JaWYgKGludGVycnVwdHMgJiYgZWlfZGVidWcpIAorCWlmIChpbnRlcnJ1cHRzICYmIGVpX2RlYnVnID4gMykgCiAJewogCQloYW5kbGVkID0gMTsKIAkJaWYgKG5yX3NlcnZpY2VkID49IE1BWF9TRVJWSUNFKSAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnIGIvZHJpdmVycy9uZXQvcGh5L0tjb25maWcKaW5kZXggZjRjYTA1OS4uM2FjODUyOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L0tjb25maWcKKysrIGIvZHJpdmVycy9uZXQvcGh5L0tjb25maWcKQEAgLTY3LDYgKzY3LDcgQEAKIAogY29uZmlnIEZJWEVEX1BIWQogCWJvb2wgIkRyaXZlciBmb3IgTURJTyBCdXMvUEhZIGVtdWxhdGlvbiB3aXRoIGZpeGVkIHNwZWVkL2xpbmsgUEhZcyIKKwlkZXBlbmRzIG9uIFBIWUxJQj15CiAJLS0taGVscC0tLQogCSAgQWRkcyB0aGUgcGxhdGZvcm0gImZpeGVkIiBNRElPIEJ1cyB0byBjb3ZlciB0aGUgYm9hcmRzIHRoYXQgdXNlCiAJICBQSFlzIHRoYXQgYXJlIG5vdCBjb25uZWN0ZWQgdG8gdGhlIHJlYWwgTURJTyBidXMuCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvZGF2aWNvbS5jIGIvZHJpdmVycy9uZXQvcGh5L2Rhdmljb20uYwppbmRleCA3ZWQ2MzJkLi5kOTI2MTY4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvZGF2aWNvbS5jCisrKyBiL2RyaXZlcnMvbmV0L3BoeS9kYXZpY29tLmMKQEAgLTM3LDYgKzM3LDcgQEAKIAogI2RlZmluZSBNSUlfRE05MTYxX1NDUgkJMHgxMAogI2RlZmluZSBNSUlfRE05MTYxX1NDUl9JTklUCTB4MDYxMAorI2RlZmluZSBNSUlfRE05MTYxX1NDUl9STUlJCTB4MDEwMAogCiAvKiBETTkxNjEgSW50ZXJydXB0IFJlZ2lzdGVyICovCiAjZGVmaW5lIE1JSV9ETTkxNjFfSU5UUgkweDE1CkBAIC0xMDMsNyArMTA0LDcgQEAKIAogc3RhdGljIGludCBkbTkxNjFfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIHsKLQlpbnQgZXJyOworCWludCBlcnIsIHRlbXA7CiAKIAkvKiBJc29sYXRlIHRoZSBQSFkgKi8KIAllcnIgPSBwaHlfd3JpdGUocGh5ZGV2LCBNSUlfQk1DUiwgQk1DUl9JU09MQVRFKTsKQEAgLTExMSw5ICsxMTIsMTkgQEAKIAlpZiAoZXJyIDwgMCkKIAkJcmV0dXJuIGVycjsKIAotCS8qIERvIG5vdCBieXBhc3MgdGhlIHNjcmFtYmxlci9kZXNjcmFtYmxlciAqLwotCWVyciA9IHBoeV93cml0ZShwaHlkZXYsIE1JSV9ETTkxNjFfU0NSLCBNSUlfRE05MTYxX1NDUl9JTklUKTsKKwlzd2l0Y2ggKHBoeWRldi0+aW50ZXJmYWNlKSB7CisJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfTUlJOgorCQl0ZW1wID0gTUlJX0RNOTE2MV9TQ1JfSU5JVDsKKwkJYnJlYWs7CisJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUk1JSToKKwkJdGVtcCA9ICBNSUlfRE05MTYxX1NDUl9JTklUIHwgTUlJX0RNOTE2MV9TQ1JfUk1JSTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQogCisJLyogRG8gbm90IGJ5cGFzcyB0aGUgc2NyYW1ibGVyL2Rlc2NyYW1ibGVyICovCisJZXJyID0gcGh5X3dyaXRlKHBoeWRldiwgTUlJX0RNOTE2MV9TQ1IsIHRlbXApOwogCWlmIChlcnIgPCAwKQogCQlyZXR1cm4gZXJyOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvbWFydmVsbC5jIGIvZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuYwppbmRleCBmMDU3NDA3Li4zMmE4NTAzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvbWFydmVsbC5jCisrKyBiL2RyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmMKQEAgLTU4LDkgKzU4LDI1IEBACiAjZGVmaW5lIE1JSV9NMTExMV9SWF9ERUxBWQkJMHg4MAogI2RlZmluZSBNSUlfTTExMTFfVFhfREVMQVkJCTB4MgogI2RlZmluZSBNSUlfTTExMTFfUEhZX0VYVF9TUgkJMHgxYgotI2RlZmluZSBNSUlfTTExMTFfSFdDRkdfTU9ERV9NQVNLCTB4ZgotI2RlZmluZSBNSUlfTTExMTFfSFdDRkdfTU9ERV9SR01JSQkweGIKKworI2RlZmluZSBNSUlfTTExMTFfSFdDRkdfTU9ERV9NQVNLCQkweGYKKyNkZWZpbmUgTUlJX00xMTExX0hXQ0ZHX01PREVfQ09QUEVSX1JHTUlJCTB4YgorI2RlZmluZSBNSUlfTTExMTFfSFdDRkdfTU9ERV9GSUJFUl9SR01JSQkweDMKICNkZWZpbmUgTUlJX00xMTExX0hXQ0ZHX01PREVfU0dNSUlfTk9fQ0xLCTB4NAorI2RlZmluZSBNSUlfTTExMTFfSFdDRkdfRklCRVJfQ09QUEVSX0FVVE8JMHg4MDAwCisjZGVmaW5lIE1JSV9NMTExMV9IV0NGR19GSUJFUl9DT1BQRVJfUkVTCTB4MjAwMAorCisjZGVmaW5lIE1JSV9NMTExMV9DT1BQRVIJCTAKKyNkZWZpbmUgTUlJX00xMTExX0ZJQkVSCQkJMQorCisjZGVmaW5lIE1JSV9NMTAxMV9QSFlfU1RBVFVTCQkweDExCisjZGVmaW5lIE1JSV9NMTAxMV9QSFlfU1RBVFVTXzEwMDAJMHg4MDAwCisjZGVmaW5lIE1JSV9NMTAxMV9QSFlfU1RBVFVTXzEwMAkweDQwMDAKKyNkZWZpbmUgTUlJX00xMDExX1BIWV9TVEFUVVNfU1BEX01BU0sJMHhjMDAwCisjZGVmaW5lIE1JSV9NMTAxMV9QSFlfU1RBVFVTX0ZVTExEVVBMRVgJMHgyMDAwCisjZGVmaW5lIE1JSV9NMTAxMV9QSFlfU1RBVFVTX1JFU09MVkVECTB4MDgwMAorI2RlZmluZSBNSUlfTTEwMTFfUEhZX1NUQVRVU19MSU5LCTB4MDQwMAorCiAKIE1PRFVMRV9ERVNDUklQVElPTigiTWFydmVsbCBQSFkgZHJpdmVyIik7CiBNT0RVTEVfQVVUSE9SKCJBbmR5IEZsZW1pbmciKTsKQEAgLTE0MSwxMiArMTU3LDIyIEBACiBzdGF0aWMgaW50IG04OGUxMTExX2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiB7CiAJaW50IGVycjsKKwlpbnQgdGVtcDsKKwlpbnQgbW9kZTsKKworCS8qIEVuYWJsZSBGaWJlci9Db3BwZXIgYXV0byBzZWxlY3Rpb24gKi8KKwl0ZW1wID0gcGh5X3JlYWQocGh5ZGV2LCBNSUlfTTExMTFfUEhZX0VYVF9TUik7CisJdGVtcCB8PSBNSUlfTTExMTFfSFdDRkdfRklCRVJfQ09QUEVSX0FVVE87CisJcGh5X3dyaXRlKHBoeWRldiwgTUlJX00xMTExX1BIWV9FWFRfU1IsIHRlbXApOworCisJdGVtcCA9IHBoeV9yZWFkKHBoeWRldiwgTUlJX0JNQ1IpOworCXRlbXAgfD0gQk1DUl9SRVNFVDsKKwlwaHlfd3JpdGUocGh5ZGV2LCBNSUlfQk1DUiwgdGVtcCk7CiAKIAlpZiAoKHBoeWRldi0+aW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSSkgfHwKIAkgICAgKHBoeWRldi0+aW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9JRCkgfHwKIAkgICAgKHBoeWRldi0+aW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9SWElEKSB8fAogCSAgICAocGh5ZGV2LT5pbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX1RYSUQpKSB7Ci0JCWludCB0ZW1wOwogCiAJCXRlbXAgPSBwaHlfcmVhZChwaHlkZXYsIE1JSV9NMTExMV9QSFlfRVhUX0NSKTsKIAkJaWYgKHRlbXAgPCAwKQpAQCAtMTcxLDcgKzE5NywxMyBAQAogCQkJcmV0dXJuIHRlbXA7CiAKIAkJdGVtcCAmPSB+KE1JSV9NMTExMV9IV0NGR19NT0RFX01BU0spOwotCQl0ZW1wIHw9IE1JSV9NMTExMV9IV0NGR19NT0RFX1JHTUlJOworCisJCW1vZGUgPSBwaHlfcmVhZChwaHlkZXYsIE1JSV9NMTExMV9QSFlfRVhUX0NSKTsKKworCQlpZiAobW9kZSAmIE1JSV9NMTExMV9IV0NGR19GSUJFUl9DT1BQRVJfUkVTKQorCQkJdGVtcCB8PSBNSUlfTTExMTFfSFdDRkdfTU9ERV9GSUJFUl9SR01JSTsKKwkJZWxzZQorCQkJdGVtcCB8PSBNSUlfTTExMTFfSFdDRkdfTU9ERV9DT1BQRVJfUkdNSUk7CiAKIAkJZXJyID0gcGh5X3dyaXRlKHBoeWRldiwgTUlJX00xMTExX1BIWV9FWFRfU1IsIHRlbXApOwogCQlpZiAoZXJyIDwgMCkKQEAgLTE3OSw4ICsyMTEsNiBAQAogCX0KIAogCWlmIChwaHlkZXYtPmludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpIHsKLQkJaW50IHRlbXA7Ci0KIAkJdGVtcCA9IHBoeV9yZWFkKHBoeWRldiwgTUlJX00xMTExX1BIWV9FWFRfU1IpOwogCQlpZiAodGVtcCA8IDApCiAJCQlyZXR1cm4gdGVtcDsKQEAgLTI2Miw2ICsyOTIsOTMgQEAKIAlyZXR1cm4gMDsKIH0KIAorLyogbWFydmVsbF9yZWFkX3N0YXR1cworICoKKyAqIEdlbmVyaWMgc3RhdHVzIGNvZGUgZG9lcyBub3QgZGV0ZWN0IEZpYmVyIGNvcnJlY3RseSEKKyAqIERlc2NyaXB0aW9uOgorICogICBDaGVjayB0aGUgbGluaywgdGhlbiBmaWd1cmUgb3V0IHRoZSBjdXJyZW50IHN0YXRlCisgKiAgIGJ5IGNvbXBhcmluZyB3aGF0IHdlIGFkdmVydGlzZSB3aXRoIHdoYXQgdGhlIGxpbmsgcGFydG5lcgorICogICBhZHZlcnRpc2VzLiAgU3RhcnQgYnkgY2hlY2tpbmcgdGhlIGdpZ2FiaXQgcG9zc2liaWxpdGllcywKKyAqICAgdGhlbiBtb3ZlIG9uIHRvIDEwLzEwMC4KKyAqLworc3RhdGljIGludCBtYXJ2ZWxsX3JlYWRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCit7CisJaW50IGFkdjsKKwlpbnQgZXJyOworCWludCBscGE7CisJaW50IHN0YXR1cyA9IDA7CisKKwkvKiBVcGRhdGUgdGhlIGxpbmssIGJ1dCByZXR1cm4gaWYgdGhlcmUKKwkgKiB3YXMgYW4gZXJyb3IgKi8KKwllcnIgPSBnZW5waHlfdXBkYXRlX2xpbmsocGh5ZGV2KTsKKwlpZiAoZXJyKQorCQlyZXR1cm4gZXJyOworCisJaWYgKEFVVE9ORUdfRU5BQkxFID09IHBoeWRldi0+YXV0b25lZykgeworCQlzdGF0dXMgPSBwaHlfcmVhZChwaHlkZXYsIE1JSV9NMTAxMV9QSFlfU1RBVFVTKTsKKwkJaWYgKHN0YXR1cyA8IDApCisJCQlyZXR1cm4gc3RhdHVzOworCisJCWxwYSA9IHBoeV9yZWFkKHBoeWRldiwgTUlJX0xQQSk7CisJCWlmIChscGEgPCAwKQorCQkJcmV0dXJuIGxwYTsKKworCQlhZHYgPSBwaHlfcmVhZChwaHlkZXYsIE1JSV9BRFZFUlRJU0UpOworCQlpZiAoYWR2IDwgMCkKKwkJCXJldHVybiBhZHY7CisKKwkJbHBhICY9IGFkdjsKKworCQlpZiAoc3RhdHVzICYgTUlJX00xMDExX1BIWV9TVEFUVVNfRlVMTERVUExFWCkKKwkJCXBoeWRldi0+ZHVwbGV4ID0gRFVQTEVYX0ZVTEw7CisJCWVsc2UKKwkJCXBoeWRldi0+ZHVwbGV4ID0gRFVQTEVYX0hBTEY7CisKKwkJc3RhdHVzID0gc3RhdHVzICYgTUlJX00xMDExX1BIWV9TVEFUVVNfU1BEX01BU0s7CisJCXBoeWRldi0+cGF1c2UgPSBwaHlkZXYtPmFzeW1fcGF1c2UgPSAwOworCisJCXN3aXRjaCAoc3RhdHVzKSB7CisJCWNhc2UgTUlJX00xMDExX1BIWV9TVEFUVVNfMTAwMDoKKwkJCXBoeWRldi0+c3BlZWQgPSBTUEVFRF8xMDAwOworCQkJYnJlYWs7CisKKwkJY2FzZSBNSUlfTTEwMTFfUEhZX1NUQVRVU18xMDA6CisJCQlwaHlkZXYtPnNwZWVkID0gU1BFRURfMTAwOworCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCXBoeWRldi0+c3BlZWQgPSBTUEVFRF8xMDsKKwkJCWJyZWFrOworCQl9CisKKwkJaWYgKHBoeWRldi0+ZHVwbGV4ID09IERVUExFWF9GVUxMKSB7CisJCQlwaHlkZXYtPnBhdXNlID0gbHBhICYgTFBBX1BBVVNFX0NBUCA/IDEgOiAwOworCQkJcGh5ZGV2LT5hc3ltX3BhdXNlID0gbHBhICYgTFBBX1BBVVNFX0FTWU0gPyAxIDogMDsKKwkJfQorCX0gZWxzZSB7CisJCWludCBibWNyID0gcGh5X3JlYWQocGh5ZGV2LCBNSUlfQk1DUik7CisKKwkJaWYgKGJtY3IgPCAwKQorCQkJcmV0dXJuIGJtY3I7CisKKwkJaWYgKGJtY3IgJiBCTUNSX0ZVTExEUExYKQorCQkJcGh5ZGV2LT5kdXBsZXggPSBEVVBMRVhfRlVMTDsKKwkJZWxzZQorCQkJcGh5ZGV2LT5kdXBsZXggPSBEVVBMRVhfSEFMRjsKKworCQlpZiAoYm1jciAmIEJNQ1JfU1BFRUQxMDAwKQorCQkJcGh5ZGV2LT5zcGVlZCA9IFNQRUVEXzEwMDA7CisJCWVsc2UgaWYgKGJtY3IgJiBCTUNSX1NQRUVEMTAwKQorCQkJcGh5ZGV2LT5zcGVlZCA9IFNQRUVEXzEwMDsKKwkJZWxzZQorCQkJcGh5ZGV2LT5zcGVlZCA9IFNQRUVEXzEwOworCisJCXBoeWRldi0+cGF1c2UgPSBwaHlkZXYtPmFzeW1fcGF1c2UgPSAwOworCX0KKworCXJldHVybiAwOworfQorCiBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbWFydmVsbF9kcml2ZXJzW10gPSB7CiAJewogCQkucGh5X2lkID0gMHgwMTQxMGM2MCwKQEAgLTI5Niw3ICs0MTMsNyBAQAogCQkuZmxhZ3MgPSBQSFlfSEFTX0lOVEVSUlVQVCwKIAkJLmNvbmZpZ19pbml0ID0gJm04OGUxMTExX2NvbmZpZ19pbml0LAogCQkuY29uZmlnX2FuZWcgPSAmbWFydmVsbF9jb25maWdfYW5lZywKLQkJLnJlYWRfc3RhdHVzID0gJmdlbnBoeV9yZWFkX3N0YXR1cywKKwkJLnJlYWRfc3RhdHVzID0gJm1hcnZlbGxfcmVhZF9zdGF0dXMsCiAJCS5hY2tfaW50ZXJydXB0ID0gJm1hcnZlbGxfYWNrX2ludGVycnVwdCwKIAkJLmNvbmZpZ19pbnRyID0gJm1hcnZlbGxfY29uZmlnX2ludHIsCiAJCS5kcml2ZXIgPSB7IC5vd25lciA9IFRISVNfTU9EVUxFIH0sCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wbGlwLmMgYi9kcml2ZXJzL25ldC9wbGlwLmMKaW5kZXggZmVlM2Q3Yi4uMWU5NjU0MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGxpcC5jCisrKyBiL2RyaXZlcnMvbmV0L3BsaXAuYwpAQCAtOTAzLDE3ICs5MDMsMTggQEAKIAlzdHJ1Y3QgbmV0X2xvY2FsICpubDsKIAlzdHJ1Y3QgcGxpcF9sb2NhbCAqcmN2OwogCXVuc2lnbmVkIGNoYXIgYzA7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKIAogCW5sID0gbmV0ZGV2X3ByaXYoZGV2KTsKIAlyY3YgPSAmbmwtPnJjdl9kYXRhOwogCi0Jc3Bpbl9sb2NrX2lycSAoJm5sLT5sb2NrKTsKKwlzcGluX2xvY2tfaXJxc2F2ZSAoJm5sLT5sb2NrLCBmbGFncyk7CiAKIAljMCA9IHJlYWRfc3RhdHVzKGRldik7CiAJaWYgKChjMCAmIDB4ZjgpICE9IDB4YzApIHsKIAkJaWYgKChkZXYtPmlycSAhPSAtMSkgJiYgKG5ldF9kZWJ1ZyA+IDEpKQogCQkJcHJpbnRrKEtFUk5fREVCVUcgIiVzOiBzcHVyaW91cyBpbnRlcnJ1cHRcbiIsIGRldi0+bmFtZSk7Ci0JCXNwaW5fdW5sb2NrX2lycSAoJm5sLT5sb2NrKTsKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSAoJm5sLT5sb2NrLCBmbGFncyk7CiAJCXJldHVybjsKIAl9CiAKQEAgLTk0Miw3ICs5NDMsNyBAQAogCQlicmVhazsKIAl9CiAKLQlzcGluX3VubG9ja19pcnEoJm5sLT5sb2NrKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZubC0+bG9jaywgZmxhZ3MpOwogfQogCiBzdGF0aWMgaW50CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wcHBvbDJ0cC5jIGIvZHJpdmVycy9uZXQvcHBwb2wydHAuYwppbmRleCA4NmU1ZGJhLi4zZDEwY2EwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9wcHBvbDJ0cC5jCisrKyBiL2RyaXZlcnMvbmV0L3BwcG9sMnRwLmMKQEAgLTMwMiwxNCArMzAyLDE0IEBACiAJc3RydWN0IHBwcG9sMnRwX3Nlc3Npb24gKnNlc3Npb247CiAJc3RydWN0IGhsaXN0X25vZGUgKndhbGs7CiAKLQlyZWFkX2xvY2soJnR1bm5lbC0+aGxpc3RfbG9jayk7CisJcmVhZF9sb2NrX2JoKCZ0dW5uZWwtPmhsaXN0X2xvY2spOwogCWhsaXN0X2Zvcl9lYWNoX2VudHJ5KHNlc3Npb24sIHdhbGssIHNlc3Npb25fbGlzdCwgaGxpc3QpIHsKIAkJaWYgKHNlc3Npb24tPnR1bm5lbF9hZGRyLnNfc2Vzc2lvbiA9PSBzZXNzaW9uX2lkKSB7Ci0JCQlyZWFkX3VubG9jaygmdHVubmVsLT5obGlzdF9sb2NrKTsKKwkJCXJlYWRfdW5sb2NrX2JoKCZ0dW5uZWwtPmhsaXN0X2xvY2spOwogCQkJcmV0dXJuIHNlc3Npb247CiAJCX0KIAl9Ci0JcmVhZF91bmxvY2soJnR1bm5lbC0+aGxpc3RfbG9jayk7CisJcmVhZF91bmxvY2tfYmgoJnR1bm5lbC0+aGxpc3RfbG9jayk7CiAKIAlyZXR1cm4gTlVMTDsKIH0KQEAgLTMyMCwxNCArMzIwLDE0IEBACiB7CiAJc3RydWN0IHBwcG9sMnRwX3R1bm5lbCAqdHVubmVsID0gTlVMTDsKIAotCXJlYWRfbG9jaygmcHBwb2wydHBfdHVubmVsX2xpc3RfbG9jayk7CisJcmVhZF9sb2NrX2JoKCZwcHBvbDJ0cF90dW5uZWxfbGlzdF9sb2NrKTsKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHR1bm5lbCwgJnBwcG9sMnRwX3R1bm5lbF9saXN0LCBsaXN0KSB7CiAJCWlmICh0dW5uZWwtPnN0YXRzLnR1bm5lbF9pZCA9PSB0dW5uZWxfaWQpIHsKLQkJCXJlYWRfdW5sb2NrKCZwcHBvbDJ0cF90dW5uZWxfbGlzdF9sb2NrKTsKKwkJCXJlYWRfdW5sb2NrX2JoKCZwcHBvbDJ0cF90dW5uZWxfbGlzdF9sb2NrKTsKIAkJCXJldHVybiB0dW5uZWw7CiAJCX0KIAl9Ci0JcmVhZF91bmxvY2soJnBwcG9sMnRwX3R1bm5lbF9saXN0X2xvY2spOworCXJlYWRfdW5sb2NrX2JoKCZwcHBvbDJ0cF90dW5uZWxfbGlzdF9sb2NrKTsKIAogCXJldHVybiBOVUxMOwogfQpAQCAtMzQyLDEwICszNDIsMTEgQEAKIHN0YXRpYyB2b2lkIHBwcG9sMnRwX3JlY3ZfcXVldWVfc2tiKHN0cnVjdCBwcHBvbDJ0cF9zZXNzaW9uICpzZXNzaW9uLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogewogCXN0cnVjdCBza19idWZmICpza2JwOworCXN0cnVjdCBza19idWZmICp0bXA7CiAJdTE2IG5zID0gUFBQT0wyVFBfU0tCX0NCKHNrYiktPm5zOwogCi0Jc3Bpbl9sb2NrKCZzZXNzaW9uLT5yZW9yZGVyX3EubG9jayk7Ci0Jc2tiX3F1ZXVlX3dhbGsoJnNlc3Npb24tPnJlb3JkZXJfcSwgc2ticCkgeworCXNwaW5fbG9ja19iaCgmc2Vzc2lvbi0+cmVvcmRlcl9xLmxvY2spOworCXNrYl9xdWV1ZV93YWxrX3NhZmUoJnNlc3Npb24tPnJlb3JkZXJfcSwgc2ticCwgdG1wKSB7CiAJCWlmIChQUFBPTDJUUF9TS0JfQ0Ioc2ticCktPm5zID4gbnMpIHsKIAkJCV9fc2tiX2luc2VydChza2IsIHNrYnAtPnByZXYsIHNrYnAsICZzZXNzaW9uLT5yZW9yZGVyX3EpOwogCQkJUFJJTlRLKHNlc3Npb24tPmRlYnVnLCBQUFBPTDJUUF9NU0dfU0VRLCBLRVJOX0RFQlVHLApAQCAtMzYwLDcgKzM2MSw3IEBACiAJX19za2JfcXVldWVfdGFpbCgmc2Vzc2lvbi0+cmVvcmRlcl9xLCBza2IpOwogCiBvdXQ6Ci0Jc3Bpbl91bmxvY2soJnNlc3Npb24tPnJlb3JkZXJfcS5sb2NrKTsKKwlzcGluX3VubG9ja19iaCgmc2Vzc2lvbi0+cmVvcmRlcl9xLmxvY2spOwogfQogCiAvKiBEZXF1ZXVlIGEgc2luZ2xlIHNrYi4KQEAgLTM3MSwxMCArMzcyLDkgQEAKIAlpbnQgbGVuZ3RoID0gUFBQT0wyVFBfU0tCX0NCKHNrYiktPmxlbmd0aDsKIAlzdHJ1Y3Qgc29jayAqc2Vzc2lvbl9zb2NrID0gTlVMTDsKIAotCS8qIFdlJ3JlIGFib3V0IHRvIHJlcXVldWUgdGhlIHNrYiwgc28gdW5saW5rIGl0IGFuZCByZXR1cm4gcmVzb3VyY2VzCisJLyogV2UncmUgYWJvdXQgdG8gcmVxdWV1ZSB0aGUgc2tiLCBzbyByZXR1cm4gcmVzb3VyY2VzCiAJICogdG8gaXRzIGN1cnJlbnQgb3duZXIgKGEgc29ja2V0IHJlY2VpdmUgYnVmZmVyKS4KIAkgKi8KLQlza2JfdW5saW5rKHNrYiwgJnNlc3Npb24tPnJlb3JkZXJfcSk7CiAJc2tiX29ycGhhbihza2IpOwogCiAJdHVubmVsLT5zdGF0cy5yeF9wYWNrZXRzKys7CkBAIC00NDIsNyArNDQyLDcgQEAKIAkgKiBleHBlY3QgdG8gc2VuZCB1cCBuZXh0LCBkZXF1ZXVlIGl0IGFuZCBhbnkgb3RoZXIKIAkgKiBpbi1zZXF1ZW5jZSBwYWNrZXRzIGJlaGluZCBpdC4KIAkgKi8KLQlzcGluX2xvY2soJnNlc3Npb24tPnJlb3JkZXJfcS5sb2NrKTsKKwlzcGluX2xvY2tfYmgoJnNlc3Npb24tPnJlb3JkZXJfcS5sb2NrKTsKIAlza2JfcXVldWVfd2Fsa19zYWZlKCZzZXNzaW9uLT5yZW9yZGVyX3EsIHNrYiwgdG1wKSB7CiAJCWlmICh0aW1lX2FmdGVyKGppZmZpZXMsIFBQUE9MMlRQX1NLQl9DQihza2IpLT5leHBpcmVzKSkgewogCQkJc2Vzc2lvbi0+c3RhdHMucnhfc2VxX2Rpc2NhcmRzKys7CkBAIC00NzAsMTMgKzQ3MCwxOCBAQAogCQkJCWdvdG8gb3V0OwogCQkJfQogCQl9Ci0JCXNwaW5fdW5sb2NrKCZzZXNzaW9uLT5yZW9yZGVyX3EubG9jayk7CisJCV9fc2tiX3VubGluayhza2IsICZzZXNzaW9uLT5yZW9yZGVyX3EpOworCisJCS8qIFByb2Nlc3MgdGhlIHNrYi4gV2UgcmVsZWFzZSB0aGUgcXVldWUgbG9jayB3aGlsZSB3ZQorCQkgKiBkbyBzbyB0byBsZXQgb3RoZXIgY29udGV4dHMgcHJvY2VzcyB0aGUgcXVldWUuCisJCSAqLworCQlzcGluX3VubG9ja19iaCgmc2Vzc2lvbi0+cmVvcmRlcl9xLmxvY2spOwogCQlwcHBvbDJ0cF9yZWN2X2RlcXVldWVfc2tiKHNlc3Npb24sIHNrYik7Ci0JCXNwaW5fbG9jaygmc2Vzc2lvbi0+cmVvcmRlcl9xLmxvY2spOworCQlzcGluX2xvY2tfYmgoJnNlc3Npb24tPnJlb3JkZXJfcS5sb2NrKTsKIAl9CiAKIG91dDoKLQlzcGluX3VubG9jaygmc2Vzc2lvbi0+cmVvcmRlcl9xLmxvY2spOworCXNwaW5fdW5sb2NrX2JoKCZzZXNzaW9uLT5yZW9yZGVyX3EubG9jayk7CiB9CiAKIC8qIEludGVybmFsIHJlY2VpdmUgZnJhbWUuIERvIHRoZSByZWFsIHdvcmsgb2YgcmVjZWl2aW5nIGFuIEwyVFAgZGF0YSBmcmFtZQpAQCAtMTA1OSw3ICsxMDY0LDcgQEAKIAogCS8qIEdldCByb3V0aW5nIGluZm8gZnJvbSB0aGUgdHVubmVsIHNvY2tldCAqLwogCWRzdF9yZWxlYXNlKHNrYi0+ZHN0KTsKLQlza2ItPmRzdCA9IHNrX2RzdF9nZXQoc2tfdHVuKTsKKwlza2ItPmRzdCA9IGRzdF9jbG9uZShfX3NrX2RzdF9nZXQoc2tfdHVuKSk7CiAJc2tiX29ycGhhbihza2IpOwogCXNrYi0+c2sgPSBza190dW47CiAKQEAgLTExMDcsNyArMTExMiw3IEBACiAJUFJJTlRLKHR1bm5lbC0+ZGVidWcsIFBQUE9MMlRQX01TR19DT05UUk9MLCBLRVJOX0lORk8sCiAJICAgICAgICIlczogY2xvc2luZyBhbGwgc2Vzc2lvbnMuLi5cbiIsIHR1bm5lbC0+bmFtZSk7CiAKLQl3cml0ZV9sb2NrKCZ0dW5uZWwtPmhsaXN0X2xvY2spOworCXdyaXRlX2xvY2tfYmgoJnR1bm5lbC0+aGxpc3RfbG9jayk7CiAJZm9yIChoYXNoID0gMDsgaGFzaCA8IFBQUE9MMlRQX0hBU0hfU0laRTsgaGFzaCsrKSB7CiBhZ2FpbjoKIAkJaGxpc3RfZm9yX2VhY2hfc2FmZSh3YWxrLCB0bXAsICZ0dW5uZWwtPnNlc3Npb25faGxpc3RbaGFzaF0pIHsKQEAgLTExMjksNyArMTEzNCw3IEBACiAJCQkgKiBkaXNhcHBlYXIgYXMgd2UncmUganVtcGluZyBiZXR3ZWVuIGxvY2tzLgogCQkJICovCiAJCQlzb2NrX2hvbGQoc2spOwotCQkJd3JpdGVfdW5sb2NrKCZ0dW5uZWwtPmhsaXN0X2xvY2spOworCQkJd3JpdGVfdW5sb2NrX2JoKCZ0dW5uZWwtPmhsaXN0X2xvY2spOwogCQkJbG9ja19zb2NrKHNrKTsKIAogCQkJaWYgKHNrLT5za19zdGF0ZSAmIChQUFBPWF9DT05ORUNURUQgfCBQUFBPWF9CT1VORCkpIHsKQEAgLTExNTQsMTEgKzExNTksMTEgQEAKIAkJCSAqIGxpc3Qgc28gd2UgYXJlIGd1YXJhbnRlZWQgdG8gbWFrZSBmb3J3YXJkCiAJCQkgKiBwcm9ncmVzcy4KIAkJCSAqLwotCQkJd3JpdGVfbG9jaygmdHVubmVsLT5obGlzdF9sb2NrKTsKKwkJCXdyaXRlX2xvY2tfYmgoJnR1bm5lbC0+aGxpc3RfbG9jayk7CiAJCQlnb3RvIGFnYWluOwogCQl9CiAJfQotCXdyaXRlX3VubG9jaygmdHVubmVsLT5obGlzdF9sb2NrKTsKKwl3cml0ZV91bmxvY2tfYmgoJnR1bm5lbC0+aGxpc3RfbG9jayk7CiB9CiAKIC8qIFJlYWxseSBraWxsIHRoZSB0dW5uZWwuCkBAIC0xMTY3LDkgKzExNzIsOSBAQAogc3RhdGljIHZvaWQgcHBwb2wydHBfdHVubmVsX2ZyZWUoc3RydWN0IHBwcG9sMnRwX3R1bm5lbCAqdHVubmVsKQogewogCS8qIFJlbW92ZSBmcm9tIHNvY2tldCBsaXN0ICovCi0Jd3JpdGVfbG9jaygmcHBwb2wydHBfdHVubmVsX2xpc3RfbG9jayk7CisJd3JpdGVfbG9ja19iaCgmcHBwb2wydHBfdHVubmVsX2xpc3RfbG9jayk7CiAJbGlzdF9kZWxfaW5pdCgmdHVubmVsLT5saXN0KTsKLQl3cml0ZV91bmxvY2soJnBwcG9sMnRwX3R1bm5lbF9saXN0X2xvY2spOworCXdyaXRlX3VubG9ja19iaCgmcHBwb2wydHBfdHVubmVsX2xpc3RfbG9jayk7CiAKIAlhdG9taWNfZGVjKCZwcHBvbDJ0cF90dW5uZWxfY291bnQpOwogCWtmcmVlKHR1bm5lbCk7CkBAIC0xMjQ1LDkgKzEyNTAsOSBAQAogCQkJCS8qIERlbGV0ZSB0aGUgc2Vzc2lvbiBzb2NrZXQgZnJvbSB0aGUKIAkJCQkgKiBoYXNoCiAJCQkJICovCi0JCQkJd3JpdGVfbG9jaygmdHVubmVsLT5obGlzdF9sb2NrKTsKKwkJCQl3cml0ZV9sb2NrX2JoKCZ0dW5uZWwtPmhsaXN0X2xvY2spOwogCQkJCWhsaXN0X2RlbF9pbml0KCZzZXNzaW9uLT5obGlzdCk7Ci0JCQkJd3JpdGVfdW5sb2NrKCZ0dW5uZWwtPmhsaXN0X2xvY2spOworCQkJCXdyaXRlX3VubG9ja19iaCgmdHVubmVsLT5obGlzdF9sb2NrKTsKIAogCQkJCWF0b21pY19kZWMoJnBwcG9sMnRwX3Nlc3Npb25fY291bnQpOwogCQkJfQpAQCAtMTM5Miw5ICsxMzk3LDkgQEAKIAogCS8qIEFkZCB0dW5uZWwgdG8gb3VyIGxpc3QgKi8KIAlJTklUX0xJU1RfSEVBRCgmdHVubmVsLT5saXN0KTsKLQl3cml0ZV9sb2NrKCZwcHBvbDJ0cF90dW5uZWxfbGlzdF9sb2NrKTsKKwl3cml0ZV9sb2NrX2JoKCZwcHBvbDJ0cF90dW5uZWxfbGlzdF9sb2NrKTsKIAlsaXN0X2FkZCgmdHVubmVsLT5saXN0LCAmcHBwb2wydHBfdHVubmVsX2xpc3QpOwotCXdyaXRlX3VubG9jaygmcHBwb2wydHBfdHVubmVsX2xpc3RfbG9jayk7CisJd3JpdGVfdW5sb2NrX2JoKCZwcHBvbDJ0cF90dW5uZWxfbGlzdF9sb2NrKTsKIAlhdG9taWNfaW5jKCZwcHBvbDJ0cF90dW5uZWxfY291bnQpOwogCiAJLyogQnVtcCB0aGUgcmVmZXJlbmNlIGNvdW50LiBUaGUgdHVubmVsIGNvbnRleHQgaXMgZGVsZXRlZApAQCAtMTU5OSwxMSArMTYwNCwxMSBAQAogCXNrLT5za191c2VyX2RhdGEgPSBzZXNzaW9uOwogCiAJLyogQWRkIHNlc3Npb24gdG8gdGhlIHR1bm5lbCdzIGhhc2ggbGlzdCAqLwotCXdyaXRlX2xvY2soJnR1bm5lbC0+aGxpc3RfbG9jayk7CisJd3JpdGVfbG9ja19iaCgmdHVubmVsLT5obGlzdF9sb2NrKTsKIAlobGlzdF9hZGRfaGVhZCgmc2Vzc2lvbi0+aGxpc3QsCiAJCSAgICAgICBwcHBvbDJ0cF9zZXNzaW9uX2lkX2hhc2godHVubmVsLAogCQkJCQkJc2Vzc2lvbi0+dHVubmVsX2FkZHIuc19zZXNzaW9uKSk7Ci0Jd3JpdGVfdW5sb2NrKCZ0dW5uZWwtPmhsaXN0X2xvY2spOworCXdyaXRlX3VubG9ja19iaCgmdHVubmVsLT5obGlzdF9sb2NrKTsKIAogCWF0b21pY19pbmMoJnBwcG9sMnRwX3Nlc3Npb25fY291bnQpOwogCkBAIC0yMjA1LDcgKzIyMTAsNyBAQAogCWludCBuZXh0ID0gMDsKIAlpbnQgaTsKIAotCXJlYWRfbG9jaygmdHVubmVsLT5obGlzdF9sb2NrKTsKKwlyZWFkX2xvY2tfYmgoJnR1bm5lbC0+aGxpc3RfbG9jayk7CiAJZm9yIChpID0gMDsgaSA8IFBQUE9MMlRQX0hBU0hfU0laRTsgaSsrKSB7CiAJCWhsaXN0X2Zvcl9lYWNoX2VudHJ5KHNlc3Npb24sIHdhbGssICZ0dW5uZWwtPnNlc3Npb25faGxpc3RbaV0sIGhsaXN0KSB7CiAJCQlpZiAoY3VyciA9PSBOVUxMKSB7CkBAIC0yMjIzLDcgKzIyMjgsNyBAQAogCQl9CiAJfQogb3V0OgotCXJlYWRfdW5sb2NrKCZ0dW5uZWwtPmhsaXN0X2xvY2spOworCXJlYWRfdW5sb2NrX2JoKCZ0dW5uZWwtPmhsaXN0X2xvY2spOwogCWlmICghZm91bmQpCiAJCXNlc3Npb24gPSBOVUxMOwogCkBAIC0yMjM0LDEzICsyMjM5LDEzIEBACiB7CiAJc3RydWN0IHBwcG9sMnRwX3R1bm5lbCAqdHVubmVsID0gTlVMTDsKIAotCXJlYWRfbG9jaygmcHBwb2wydHBfdHVubmVsX2xpc3RfbG9jayk7CisJcmVhZF9sb2NrX2JoKCZwcHBvbDJ0cF90dW5uZWxfbGlzdF9sb2NrKTsKIAlpZiAobGlzdF9pc19sYXN0KCZjdXJyLT5saXN0LCAmcHBwb2wydHBfdHVubmVsX2xpc3QpKSB7CiAJCWdvdG8gb3V0OwogCX0KIAl0dW5uZWwgPSBsaXN0X2VudHJ5KGN1cnItPmxpc3QubmV4dCwgc3RydWN0IHBwcG9sMnRwX3R1bm5lbCwgbGlzdCk7CiBvdXQ6Ci0JcmVhZF91bmxvY2soJnBwcG9sMnRwX3R1bm5lbF9saXN0X2xvY2spOworCXJlYWRfdW5sb2NrX2JoKCZwcHBvbDJ0cF90dW5uZWxfbGlzdF9sb2NrKTsKIAogCXJldHVybiB0dW5uZWw7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wczNfZ2VsaWNfd2lyZWxlc3MuYyBiL2RyaXZlcnMvbmV0L3BzM19nZWxpY193aXJlbGVzcy5jCmluZGV4IGRhZjVhYmEuLmMxNmRlNTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BzM19nZWxpY193aXJlbGVzcy5jCisrKyBiL2RyaXZlcnMvbmV0L3BzM19nZWxpY193aXJlbGVzcy5jCkBAIC01MTIsMTMgKzUxMiwxOCBAQAogCQkgZGF0YSwgbGVuKTsKIAltZW1zZXQoaWVfaW5mbywgMCwgc2l6ZW9mKHN0cnVjdCBpZV9pbmZvKSk7CiAKLQl3aGlsZSAoMCA8IGRhdGFfbGVmdCkgeworCXdoaWxlICgyIDw9IGRhdGFfbGVmdCkgewogCQlpdGVtX2lkID0gKnBvcysrOwogCQlpdGVtX2xlbiA9ICpwb3MrKzsKKwkJZGF0YV9sZWZ0IC09IDI7CisKKwkJaWYgKGRhdGFfbGVmdCA8IGl0ZW1fbGVuKQorCQkJYnJlYWs7CiAKIAkJc3dpdGNoIChpdGVtX2lkKSB7CiAJCWNhc2UgTUZJRV9UWVBFX0dFTkVSSUM6Ci0JCQlpZiAoIW1lbWNtcChwb3MsIHdwYV9vdWksIE9VSV9MRU4pICYmCisJCQlpZiAoKE9VSV9MRU4gKyAxIDw9IGl0ZW1fbGVuKSAmJgorCQkJICAgICFtZW1jbXAocG9zLCB3cGFfb3VpLCBPVUlfTEVOKSAmJgogCQkJICAgIHBvc1tPVUlfTEVOXSA9PSAweDAxKSB7CiAJCQkJaWVfaW5mby0+d3BhLmRhdGEgPSBwb3MgLSAyOwogCQkJCWllX2luZm8tPndwYS5sZW4gPSBpdGVtX2xlbiArIDI7CkBAIC01MzUsNyArNTQwLDcgQEAKIAkJCWJyZWFrOwogCQl9CiAJCXBvcyArPSBpdGVtX2xlbjsKLQkJZGF0YV9sZWZ0IC09IGl0ZW1fbGVuICsgMjsKKwkJZGF0YV9sZWZ0IC09IGl0ZW1fbGVuOwogCX0KIAlwcl9kZWJ1ZygiJXM6IHdwYT0lcCwlZCB3cGEyPSVwLCVkXG4iLCBfX2Z1bmNfXywKIAkJIGllX2luZm8tPndwYS5kYXRhLCBpZV9pbmZvLT53cGEubGVuLApAQCAtMTY0NCwxMyArMTY0OSwyNCBAQAogCX0KIAogCS8qIHB1dCB0aGVtIGluIHRoZSBuZXd0b3JrX2xpc3QgKi8KLQlzY2FuX2luZm8gPSB3bC0+YnVmOwotCXNjYW5faW5mb19zaXplID0gMDsKLQlpID0gMDsKLQl3aGlsZSAoc2Nhbl9pbmZvX3NpemUgPCBkYXRhX2xlbikgeworCWZvciAoaSA9IDAsIHNjYW5faW5mb19zaXplID0gMCwgc2Nhbl9pbmZvID0gd2wtPmJ1ZjsKKwkgICAgIHNjYW5faW5mb19zaXplIDwgZGF0YV9sZW47CisJICAgICBpKyssIHNjYW5faW5mb19zaXplICs9IGJlMTZfdG9fY3B1KHNjYW5faW5mby0+c2l6ZSksCisJICAgICBzY2FuX2luZm8gPSAodm9pZCAqKXNjYW5faW5mbyArIGJlMTZfdG9fY3B1KHNjYW5faW5mby0+c2l6ZSkpIHsKIAkJcHJfZGVidWcoIiVzOnNpemU9JWQgYnNzaWQ9JXMgc2Nhbl9pbmZvPSVwXG4iLCBfX2Z1bmNfXywKIAkJCSBiZTE2X3RvX2NwdShzY2FuX2luZm8tPnNpemUpLAogCQkJIHByaW50X21hYyhtYWMsICZzY2FuX2luZm8tPmJzc2lkWzJdKSwgc2Nhbl9pbmZvKTsKKworCQkvKgorCQkgKiBUaGUgd2lyZWxlc3MgZmlybXdhcmUgbWF5IHJldHVybiBpbnZhbGlkIGNoYW5uZWwgMCBhbmQvb3IKKwkJICogaW52YWxpZCByYXRlIGlmIHRoZSBBUCBlbWl0cyB6ZXJvIGxlbmd0aCBTU0lEIGllLiBBcyB0aGlzCisJCSAqIHNjYW4gaW5mb3JtYXRpb24gaXMgdXNlbGVzcywgaWdub3JlIGl0CisJCSAqLworCQlpZiAoIWJlMTZfdG9fY3B1KHNjYW5faW5mby0+Y2hhbm5lbCkgfHwgIXNjYW5faW5mby0+cmF0ZVswXSkgeworCQkJcHJfZGVidWcoIiVzOiBpbnZhbGlkIHNjYW4gaW5mb1xuIiwgX19mdW5jX18pOworCQkJY29udGludWU7CisJCX0KKwogCQlmb3VuZCA9IDA7CiAJCW9sZGVzdCA9IE5VTEw7CiAJCWxpc3RfZm9yX2VhY2hfZW50cnkodGFyZ2V0LCAmd2wtPm5ldHdvcmtfbGlzdCwgbGlzdCkgewpAQCAtMTY4NywxMCArMTcwMyw2IEBACiAJCQkJCSBHRlBfS0VSTkVMKTsKIAkJaWYgKCF0YXJnZXQtPmh3aW5mbykgewogCQkJcHJfaW5mbygiJXM6IGt6YWxsb2MgZmFpbGVkXG4iLCBfX2Z1bmNfXyk7Ci0JCQlpKys7Ci0JCQlzY2FuX2luZm9fc2l6ZSArPSBiZTE2X3RvX2NwdShzY2FuX2luZm8tPnNpemUpOwotCQkJc2Nhbl9pbmZvID0gKHZvaWQgKilzY2FuX2luZm8gKwotCQkJCWJlMTZfdG9fY3B1KHNjYW5faW5mby0+c2l6ZSk7CiAJCQljb250aW51ZTsKIAkJfQogCQkvKiBjb3B5IGh3IHNjYW4gaW5mbyAqLwpAQCAtMTcwOSwxMCArMTcyMSw2IEBACiAJCQlpZiAoc2Nhbl9pbmZvLT5leHRfcmF0ZVtyXSkKIAkJCQl0YXJnZXQtPnJhdGVfZXh0X2xlbisrOwogCQlsaXN0X21vdmVfdGFpbCgmdGFyZ2V0LT5saXN0LCAmd2wtPm5ldHdvcmtfbGlzdCk7Ci0JCS8qIGJ1bXAgcG9pbnRlciAqLwotCQlpKys7Ci0JCXNjYW5faW5mb19zaXplICs9IGJlMTZfdG9fY3B1KHNjYW5faW5mby0+c2l6ZSk7Ci0JCXNjYW5faW5mbyA9ICh2b2lkICopc2Nhbl9pbmZvICsgYmUxNl90b19jcHUoc2Nhbl9pbmZvLT5zaXplKTsKIAl9CiAJbWVtc2V0KCZkYXRhLCAwLCBzaXplb2YoZGF0YSkpOwogCXdpcmVsZXNzX3NlbmRfZXZlbnQocG9ydF90b19uZXRkZXYod2xfcG9ydCh3bCkpLCBTSU9DR0lXU0NBTiwgJmRhdGEsCkBAIC0yMzg5LDYgKzIzOTcsOCBAQAogCWlmICghbmV0ZGV2KQogCQlyZXR1cm4gTlVMTDsKIAorCXN0cmNweShuZXRkZXYtPm5hbWUsICJ3bGFuJWQiKTsKKwogCXBvcnQgPSBuZXRkZXZfcHJpdihuZXRkZXYpOwogCXBvcnQtPm5ldGRldiA9IG5ldGRldjsKIAlwb3J0LT5jYXJkID0gY2FyZDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3I2MDQwLmMgYi9kcml2ZXJzL25ldC9yNjA0MC5jCmluZGV4IDE5MTg0ZTQuLjE2OWVkYzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3I2MDQwLmMKKysrIGIvZHJpdmVycy9uZXQvcjYwNDAuYwpAQCAtMjM5LDcgKzIzOSw4IEBACiAKIAlmb3IgKGkgPSAwOyBpIDwgVFhfRENOVDsgaSsrKSB7CiAJCWlmIChscC0+dHhfaW5zZXJ0X3B0ci0+c2tiX3B0cikgewotCQkJcGNpX3VubWFwX3NpbmdsZShscC0+cGRldiwgbHAtPnR4X2luc2VydF9wdHItPmJ1ZiwKKwkJCXBjaV91bm1hcF9zaW5nbGUobHAtPnBkZXYsCisJCQkJbGUzMl90b19jcHUobHAtPnR4X2luc2VydF9wdHItPmJ1ZiksCiAJCQkJTUFYX0JVRl9TSVpFLCBQQ0lfRE1BX1RPREVWSUNFKTsKIAkJCWRldl9rZnJlZV9za2IobHAtPnR4X2luc2VydF9wdHItPnNrYl9wdHIpOwogCQkJbHAtPnJ4X2luc2VydF9wdHItPnNrYl9wdHIgPSBOVUxMOwpAQCAtMjU1LDcgKzI1Niw4IEBACiAKIAlmb3IgKGkgPSAwOyBpIDwgUlhfRENOVDsgaSsrKSB7CiAJCWlmIChscC0+cnhfaW5zZXJ0X3B0ci0+c2tiX3B0cikgewotCQkJcGNpX3VubWFwX3NpbmdsZShscC0+cGRldiwgbHAtPnJ4X2luc2VydF9wdHItPmJ1ZiwKKwkJCXBjaV91bm1hcF9zaW5nbGUobHAtPnBkZXYsCisJCQkJbGUzMl90b19jcHUobHAtPnJ4X2luc2VydF9wdHItPmJ1ZiksCiAJCQkJTUFYX0JVRl9TSVpFLCBQQ0lfRE1BX0ZST01ERVZJQ0UpOwogCQkJZGV2X2tmcmVlX3NrYihscC0+cnhfaW5zZXJ0X3B0ci0+c2tiX3B0cik7CiAJCQlscC0+cnhfaW5zZXJ0X3B0ci0+c2tiX3B0ciA9IE5VTEw7CkBAIC01NDIsNyArNTQ0LDcgQEAKIAkJCXNrYl9wdHItPmRldiA9IHByaXYtPmRldjsKIAkJCS8qIERvIG5vdCBjb3VudCB0aGUgQ1JDICovCiAJCQlza2JfcHV0KHNrYl9wdHIsIGRlc2NwdHItPmxlbiAtIDQpOwotCQkJcGNpX3VubWFwX3NpbmdsZShwcml2LT5wZGV2LCBkZXNjcHRyLT5idWYsCisJCQlwY2lfdW5tYXBfc2luZ2xlKHByaXYtPnBkZXYsIGxlMzJfdG9fY3B1KGRlc2NwdHItPmJ1ZiksCiAJCQkJTUFYX0JVRl9TSVpFLCBQQ0lfRE1BX0ZST01ERVZJQ0UpOwogCQkJc2tiX3B0ci0+cHJvdG9jb2wgPSBldGhfdHlwZV90cmFucyhza2JfcHRyLCBwcml2LT5kZXYpOwogCQkJLyogU2VuZCB0byB1cHBlciBsYXllciAqLwpAQCAtNTg1LDcgKzU4Nyw3IEBACiAJCWlmIChkZXNjcHRyLT5zdGF0dXMgJiAweDgwMDApCiAJCQlicmVhazsgLyogTm90IGNvbXBsZXRlICovCiAJCXNrYl9wdHIgPSBkZXNjcHRyLT5za2JfcHRyOwotCQlwY2lfdW5tYXBfc2luZ2xlKHByaXYtPnBkZXYsIGRlc2NwdHItPmJ1ZiwKKwkJcGNpX3VubWFwX3NpbmdsZShwcml2LT5wZGV2LCBsZTMyX3RvX2NwdShkZXNjcHRyLT5idWYpLAogCQkJc2tiX3B0ci0+bGVuLCBQQ0lfRE1BX1RPREVWSUNFKTsKIAkJLyogRnJlZSBidWZmZXIgKi8KIAkJZGV2X2tmcmVlX3NrYl9pcnEoc2tiX3B0cik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9zMmlvLmMgYi9kcml2ZXJzL25ldC9zMmlvLmMKaW5kZXggNjE3OWEwYS4uYzA4MmNmMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvczJpby5jCisrKyBiL2RyaXZlcnMvbmV0L3MyaW8uYwpAQCAtODQsNyArODQsNyBAQAogI2luY2x1ZGUgInMyaW8uaCIKICNpbmNsdWRlICJzMmlvLXJlZ3MuaCIKIAotI2RlZmluZSBEUlZfVkVSU0lPTiAiMi4wLjI2LjE1LTIiCisjZGVmaW5lIERSVl9WRVJTSU9OICIyLjAuMjYuMjAiCiAKIC8qIFMyaW8gRHJpdmVyIG5hbWUgJiB2ZXJzaW9uLiAqLwogc3RhdGljIGNoYXIgczJpb19kcml2ZXJfbmFtZVtdID0gIk5ldGVyaW9uIjsKQEAgLTEwODgsNyArMTA4OCw3IEBACiAgKiAgJy0xJyBvbiBmYWlsdXJlCiAgKi8KIAotaW50IGluaXRfdHRpKHN0cnVjdCBzMmlvX25pYyAqbmljLCBpbnQgbGluaykKK3N0YXRpYyBpbnQgaW5pdF90dGkoc3RydWN0IHMyaW9fbmljICpuaWMsIGludCBsaW5rKQogewogCXN0cnVjdCBYRU5BX2Rldl9jb25maWcgX19pb21lbSAqYmFyMCA9IG5pYy0+YmFyMDsKIAlyZWdpc3RlciB1NjQgdmFsNjQgPSAwOwpAQCAtNDE3Miw2ICs0MTcyLDkgQEAKIAlkZXYtPnRyYW5zX3N0YXJ0ID0gamlmZmllczsKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZmaWZvLT50eF9sb2NrLCBmbGFncyk7CiAKKwlpZiAoc3AtPmNvbmZpZy5pbnRyX3R5cGUgPT0gTVNJX1gpCisJCXR4X2ludHJfaGFuZGxlcihmaWZvKTsKKwogCXJldHVybiAwOwogcGNpX21hcF9mYWlsZWQ6CiAJc3RhdHMtPnBjaV9tYXBfZmFpbF9jbnQrKzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3NjOTIwMzEuYyBiL2RyaXZlcnMvbmV0L3NjOTIwMzEuYwppbmRleCAzN2I0MjM5Li4xNWZjZWU1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9zYzkyMDMxLmMKKysrIGIvZHJpdmVycy9uZXQvc2M5MjAzMS5jCkBAIC0xNDQ2LDYgKzE0NDYsNyBAQAogCX0KIAogCXBjaV9zZXRfZHJ2ZGF0YShwZGV2LCBkZXYpOworCVNFVF9ORVRERVZfREVWKGRldiwgJnBkZXYtPmRldik7CiAKICNpZiBTQzkyMDMxX1VTRV9CQVIgPT0gMAogCWRldi0+bWVtX3N0YXJ0ID0gcGNpX3Jlc291cmNlX3N0YXJ0KHBkZXYsIFNDOTIwMzFfVVNFX0JBUik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9za2dlLmMgYi9kcml2ZXJzL25ldC9za2dlLmMKaW5kZXggMTg2ZWI4ZS4uMmUyNmRjZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvc2tnZS5jCisrKyBiL2RyaXZlcnMvbmV0L3NrZ2UuYwpAQCAtMzE5OSwxMiArMzE5OSwxNCBAQAogCXNrZ2Vfd3JpdGU4KGh3LCBRX0FERFIocnhxYWRkcltza2dlLT5wb3J0XSwgUV9DU1IpLCBDU1JfU1RBUlQpOwogCiAJaWYgKHdvcmtfZG9uZSA8IHRvX2RvKSB7Ci0JCXNwaW5fbG9ja19pcnEoJmh3LT5od19sb2NrKTsKKwkJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCQlzcGluX2xvY2tfaXJxc2F2ZSgmaHctPmh3X2xvY2ssIGZsYWdzKTsKIAkJX19uZXRpZl9yeF9jb21wbGV0ZShkZXYsIG5hcGkpOwogCQlody0+aW50cl9tYXNrIHw9IG5hcGltYXNrW3NrZ2UtPnBvcnRdOwogCQlza2dlX3dyaXRlMzIoaHcsIEIwX0lNU0ssIGh3LT5pbnRyX21hc2spOwogCQlza2dlX3JlYWQzMihodywgQjBfSU1TSyk7Ci0JCXNwaW5fdW5sb2NrX2lycSgmaHctPmh3X2xvY2spOworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZody0+aHdfbG9jaywgZmxhZ3MpOwogCX0KIAogCXJldHVybiB3b3JrX2RvbmU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9za3kyLmMgYi9kcml2ZXJzL25ldC9za3kyLmMKaW5kZXggNTRjNjYyNi4uZjIyNmJjYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvc2t5Mi5jCisrKyBiL2RyaXZlcnMvbmV0L3NreTIuYwpAQCAtMTU0LDYgKzE1NCw3IEBACiAJIkVDIiwJCS8qIDB4YjYgKi8KIAkiRkUiLAkJLyogMHhiNyAqLwogCSJGRSsiLAkJLyogMHhiOCAqLworCSJTdXByZW1lIiwJLyogMHhiOSAqLwogfTsKIAogc3RhdGljIHZvaWQgc2t5Ml9zZXRfbXVsdGljYXN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwpAQCAtNDMyOSwxMCArNDMzMCwxNCBAQAogCWlmICghaHcpCiAJCXJldHVybiAwOwogCisJZGVsX3RpbWVyX3N5bmMoJmh3LT53YXRjaGRvZ190aW1lcik7CisJY2FuY2VsX3dvcmtfc3luYygmaHctPnJlc3RhcnRfd29yayk7CisKIAlmb3IgKGkgPSAwOyBpIDwgaHctPnBvcnRzOyBpKyspIHsKIAkJc3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IGh3LT5kZXZbaV07CiAJCXN0cnVjdCBza3kyX3BvcnQgKnNreTIgPSBuZXRkZXZfcHJpdihkZXYpOwogCisJCW5ldGlmX2RldmljZV9kZXRhY2goZGV2KTsKIAkJaWYgKG5ldGlmX3J1bm5pbmcoZGV2KSkKIAkJCXNreTJfZG93bihkZXYpOwogCkBAIC00MzgzLDYgKzQzODgsOCBAQAogCiAJZm9yIChpID0gMDsgaSA8IGh3LT5wb3J0czsgaSsrKSB7CiAJCXN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBody0+ZGV2W2ldOworCisJCW5ldGlmX2RldmljZV9hdHRhY2goZGV2KTsKIAkJaWYgKG5ldGlmX3J1bm5pbmcoZGV2KSkgewogCQkJZXJyID0gc2t5Ml91cChkZXYpOwogCQkJaWYgKGVycikgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvc21jOTF4LmMgYi9kcml2ZXJzL25ldC9zbWM5MXguYwppbmRleCA0MDIwZTllLi42M2E1NGUyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9zbWM5MXguYworKysgYi9kcml2ZXJzL25ldC9zbWM5MXguYwpAQCAtMTMyNiw5ICsxMzI2LDExIEBACiAJU01DX1NFVF9JTlRfTUFTSyhtYXNrKTsKIAlzcGluX3VubG9jaygmbHAtPmxvY2spOwogCisjaWZuZGVmIENPTkZJR19ORVRfUE9MTF9DT05UUk9MTEVSCiAJaWYgKHRpbWVvdXQgPT0gTUFYX0lSUV9MT09QUykKIAkJUFJJTlRLKCIlczogc3B1cmlvdXMgaW50ZXJydXB0IChtYXNrID0gMHglMDJ4KVxuIiwKIAkJICAgICAgIGRldi0+bmFtZSwgbWFzayk7CisjZW5kaWYKIAlEQkcoMywgIiVzOiBJbnRlcnJ1cHQgZG9uZSAoJWQgbG9vcHMpXG4iLAogCSAgICAgICBkZXYtPm5hbWUsIE1BWF9JUlFfTE9PUFMgLSB0aW1lb3V0KTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvc3RhcmZpcmUuYyBiL2RyaXZlcnMvbmV0L3N0YXJmaXJlLmMKaW5kZXggYzQ5MjE0Zi4uN2I3YjE3MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvc3RhcmZpcmUuYworKysgYi9kcml2ZXJzL25ldC9zdGFyZmlyZS5jCkBAIC0xNDcyLDEzICsxNDcyLDEyIEBACiAjaWZuZGVmIGZpbmFsX3ZlcnNpb24JCQkvKiBSZW1vdmUgYWZ0ZXIgdGVzdGluZy4gKi8KIAkJLyogWW91IHdpbGwgd2FudCB0aGlzIGluZm8gZm9yIHRoZSBpbml0aWFsIGRlYnVnLiAqLwogCQlpZiAoZGVidWcgPiA1KSB7Ci0JCQlERUNMQVJFX01BQ19CVUYobWFjKTsKLQkJCURFQ0xBUkVfTUFDX0JVRihtYWMyKTsKLQotCQkJcHJpbnRrKEtFUk5fREVCVUcgIiAgUnggZGF0YSAlcyAlcyIKKwkJCXByaW50ayhLRVJOX0RFQlVHICIgIFJ4IGRhdGEgIiBNQUNfRk1UICIgIiBNQUNfRk1UCiAJCQkgICAgICAgIiAlMi4yeCUyLjJ4LlxuIiwKLQkJCSAgICAgICBwcmludF9tYWMobWFjLCAmc2tiLT5kYXRhWzBdKSwKLQkJCSAgICAgICBwcmludF9tYWMobWFjMiwgJnNrYi0+ZGF0YVs2XSksCisJCQkgICAgICAgc2tiLT5kYXRhWzBdLCBza2ItPmRhdGFbMV0sIHNrYi0+ZGF0YVsyXSwKKwkJCSAgICAgICBza2ItPmRhdGFbM10sIHNrYi0+ZGF0YVs0XSwgc2tiLT5kYXRhWzVdLAorCQkJICAgICAgIHNrYi0+ZGF0YVs2XSwgc2tiLT5kYXRhWzddLCBza2ItPmRhdGFbOF0sCisJCQkgICAgICAgc2tiLT5kYXRhWzldLCBza2ItPmRhdGFbMTBdLCBza2ItPmRhdGFbMTFdLAogCQkJICAgICAgIHNrYi0+ZGF0YVsxMl0sIHNrYi0+ZGF0YVsxM10pOwogCQl9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3N1bmdlbS5jIGIvZHJpdmVycy9uZXQvc3VuZ2VtLmMKaW5kZXggOTcyMTI3OS4uNDI5MTQ1OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvc3VuZ2VtLmMKKysrIGIvZHJpdmVycy9uZXQvc3VuZ2VtLmMKQEAgLTkxMiw3ICs5MTIsNyBAQAogCQkgKiByeCByaW5nIC0gbXVzdCBjYWxsIG5hcGlfZGlzYWJsZSgpLCB3aGljaAogCQkgKiBzY2hlZHVsZV90aW1lb3V0KCkncyBpZiBwb2xsaW5nIGlzIGFscmVhZHkgZGlzYWJsZWQuCiAJCSAqLwotCQl3b3JrX2RvbmUgKz0gZ2VtX3J4KGdwLCBidWRnZXQpOworCQl3b3JrX2RvbmUgKz0gZ2VtX3J4KGdwLCBidWRnZXQgLSB3b3JrX2RvbmUpOwogCiAJCWlmICh3b3JrX2RvbmUgPj0gYnVkZ2V0KQogCQkJcmV0dXJuIHdvcmtfZG9uZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3RnMy5jIGIvZHJpdmVycy9uZXQvdGczLmMKaW5kZXggMjZmZmI2Ny4uOTYwNDNjNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdGczLmMKKysrIGIvZHJpdmVycy9uZXQvdGczLmMKQEAgLTY0LDggKzY0LDggQEAKIAogI2RlZmluZSBEUlZfTU9EVUxFX05BTUUJCSJ0ZzMiCiAjZGVmaW5lIFBGWCBEUlZfTU9EVUxFX05BTUUJIjogIgotI2RlZmluZSBEUlZfTU9EVUxFX1ZFUlNJT04JIjMuODciCi0jZGVmaW5lIERSVl9NT0RVTEVfUkVMREFURQkiRGVjZW1iZXIgMjAsIDIwMDciCisjZGVmaW5lIERSVl9NT0RVTEVfVkVSU0lPTgkiMy45MCIKKyNkZWZpbmUgRFJWX01PRFVMRV9SRUxEQVRFCSJBcHJpbCAxMiwgMjAwOCIKIAogI2RlZmluZSBURzNfREVGX01BQ19NT0RFCTAKICNkZWZpbmUgVEczX0RFRl9SWF9NT0RFCQkwCkBAIC04MDQsNiArODA0LDEyIEBACiAJcmV0dXJuIHJldDsKIH0KIAorc3RhdGljIHZvaWQgdGczX3BoeWRzcF93cml0ZShzdHJ1Y3QgdGczICp0cCwgdTMyIHJlZywgdTMyIHZhbCkKK3sKKwl0ZzNfd3JpdGVwaHkodHAsIE1JSV9URzNfRFNQX0FERFJFU1MsIHJlZyk7CisJdGczX3dyaXRlcGh5KHRwLCBNSUlfVEczX0RTUF9SV19QT1JULCB2YWwpOworfQorCiBzdGF0aWMgdm9pZCB0ZzNfcGh5X3RvZ2dsZV9hdXRvbWRpeChzdHJ1Y3QgdGczICp0cCwgaW50IGVuYWJsZSkKIHsKIAl1MzIgcGh5OwpAQCAtODg2LDYgKzg5Miw0OSBAQAogCXJldHVybiAwOwogfQogCitzdGF0aWMgdm9pZCB0ZzNfcGh5X2FwcGx5X290cChzdHJ1Y3QgdGczICp0cCkKK3sKKwl1MzIgb3RwLCBwaHk7CisKKwlpZiAoIXRwLT5waHlfb3RwKQorCQlyZXR1cm47CisKKwlvdHAgPSB0cC0+cGh5X290cDsKKworCS8qIEVuYWJsZSBTTV9EU1AgY2xvY2sgYW5kIHR4IDZkQiBjb2RpbmcuICovCisJcGh5ID0gTUlJX1RHM19BVVhDVExfU0hEV1NFTF9BVVhDVEwgfAorCSAgICAgIE1JSV9URzNfQVVYQ1RMX0FDVExfU01EU1BfRU5BIHwKKwkgICAgICBNSUlfVEczX0FVWENUTF9BQ1RMX1RYXzZEQjsKKwl0ZzNfd3JpdGVwaHkodHAsIE1JSV9URzNfQVVYX0NUUkwsIHBoeSk7CisKKwlwaHkgPSAoKG90cCAmIFRHM19PVFBfQUdDVEdUX01BU0spID4+IFRHM19PVFBfQUdDVEdUX1NISUZUKTsKKwlwaHkgfD0gTUlJX1RHM19EU1BfVEFQMV9BR0NUR1RfREZMVDsKKwl0ZzNfcGh5ZHNwX3dyaXRlKHRwLCBNSUlfVEczX0RTUF9UQVAxLCBwaHkpOworCisJcGh5ID0gKChvdHAgJiBURzNfT1RQX0hQRkZMVFJfTUFTSykgPj4gVEczX09UUF9IUEZGTFRSX1NISUZUKSB8CisJICAgICAgKChvdHAgJiBURzNfT1RQX0hQRk9WRVJfTUFTSykgPj4gVEczX09UUF9IUEZPVkVSX1NISUZUKTsKKwl0ZzNfcGh5ZHNwX3dyaXRlKHRwLCBNSUlfVEczX0RTUF9BQURKMUNIMCwgcGh5KTsKKworCXBoeSA9ICgob3RwICYgVEczX09UUF9MUEZESVNfTUFTSykgPj4gVEczX09UUF9MUEZESVNfU0hJRlQpOworCXBoeSB8PSBNSUlfVEczX0RTUF9BQURKMUNIM19BRENDS0FESjsKKwl0ZzNfcGh5ZHNwX3dyaXRlKHRwLCBNSUlfVEczX0RTUF9BQURKMUNIMywgcGh5KTsKKworCXBoeSA9ICgob3RwICYgVEczX09UUF9WREFDX01BU0spID4+IFRHM19PVFBfVkRBQ19TSElGVCk7CisJdGczX3BoeWRzcF93cml0ZSh0cCwgTUlJX1RHM19EU1BfRVhQNzUsIHBoeSk7CisKKwlwaHkgPSAoKG90cCAmIFRHM19PVFBfMTBCVEFNUF9NQVNLKSA+PiBURzNfT1RQXzEwQlRBTVBfU0hJRlQpOworCXRnM19waHlkc3Bfd3JpdGUodHAsIE1JSV9URzNfRFNQX0VYUDk2LCBwaHkpOworCisJcGh5ID0gKChvdHAgJiBURzNfT1RQX1JPRkZfTUFTSykgPj4gVEczX09UUF9ST0ZGX1NISUZUKSB8CisJICAgICAgKChvdHAgJiBURzNfT1RQX1JDT0ZGX01BU0spID4+IFRHM19PVFBfUkNPRkZfU0hJRlQpOworCXRnM19waHlkc3Bfd3JpdGUodHAsIE1JSV9URzNfRFNQX0VYUDk3LCBwaHkpOworCisJLyogVHVybiBvZmYgU01fRFNQIGNsb2NrLiAqLworCXBoeSA9IE1JSV9URzNfQVVYQ1RMX1NIRFdTRUxfQVVYQ1RMIHwKKwkgICAgICBNSUlfVEczX0FVWENUTF9BQ1RMX1RYXzZEQjsKKwl0ZzNfd3JpdGVwaHkodHAsIE1JSV9URzNfQVVYX0NUUkwsIHBoeSk7Cit9CisKIHN0YXRpYyBpbnQgdGczX3dhaXRfbWFjcm9fZG9uZShzdHJ1Y3QgdGczICp0cCkKIHsKIAlpbnQgbGltaXQgPSAxMDA7CkBAIC0xMDczLDYgKzExMjIsNyBAQAogICovCiBzdGF0aWMgaW50IHRnM19waHlfcmVzZXQoc3RydWN0IHRnMyAqdHApCiB7CisJdTMyIGNwbXVjdHJsOwogCXUzMiBwaHlfc3RhdHVzOwogCWludCBlcnI7CiAKQEAgLTExMDIsMTAgKzExNTIsMjggQEAKIAkJZ290byBvdXQ7CiAJfQogCisJY3BtdWN0cmwgPSAwOworCWlmIChHRVRfQVNJQ19SRVYodHAtPnBjaV9jaGlwX3Jldl9pZCkgPT0gQVNJQ19SRVZfNTc4NCAmJgorCSAgICBHRVRfQ0hJUF9SRVYodHAtPnBjaV9jaGlwX3Jldl9pZCkgIT0gQ0hJUFJFVl81Nzg0X0FYKSB7CisJCWNwbXVjdHJsID0gdHIzMihURzNfQ1BNVV9DVFJMKTsKKwkJaWYgKGNwbXVjdHJsICYgQ1BNVV9DVFJMX0dQSFlfMTBNQl9SWE9OTFkpCisJCQl0dzMyKFRHM19DUE1VX0NUUkwsCisJCQkgICAgIGNwbXVjdHJsICYgfkNQTVVfQ1RSTF9HUEhZXzEwTUJfUlhPTkxZKTsKKwl9CisKIAllcnIgPSB0ZzNfYm1jcl9yZXNldCh0cCk7CiAJaWYgKGVycikKIAkJcmV0dXJuIGVycjsKIAorCWlmIChjcG11Y3RybCAmIENQTVVfQ1RSTF9HUEhZXzEwTUJfUlhPTkxZKSB7CisJCXUzMiBwaHk7CisKKwkJcGh5ID0gTUlJX1RHM19EU1BfRVhQOF9BRURXIHwgTUlJX1RHM19EU1BfRVhQOF9SRUoyTUh6OworCQl0ZzNfcGh5ZHNwX3dyaXRlKHRwLCBNSUlfVEczX0RTUF9FWFA4LCBwaHkpOworCisJCXR3MzIoVEczX0NQTVVfQ1RSTCwgY3BtdWN0cmwpOworCX0KKwogCWlmICh0cC0+dGczX2ZsYWdzMyAmIFRHM19GTEczXzU3NjFfNTc4NF9BWF9GSVhFUykgewogCQl1MzIgdmFsOwogCkBAIC0xMTI0LDYgKzExOTIsOCBAQAogCQkJICAgICBNSUlfVEczX01JU0NfU0hEV19BUERfV0tUTV84NE1TKTsKIAl9CiAKKwl0ZzNfcGh5X2FwcGx5X290cCh0cCk7CisKIG91dDoKIAlpZiAodHAtPnRnM19mbGFnczIgJiBURzNfRkxHMl9QSFlfQURDX0JVRykgewogCQl0ZzNfd3JpdGVwaHkodHAsIE1JSV9URzNfQVVYX0NUUkwsIDB4MGMwMCk7CkBAIC05NDY0LDcgKzk1MzQsOCBAQAogCWlmIChlcnIpCiAJCXJldHVybiBURzNfTE9PUEJBQ0tfRkFJTEVEOwogCi0JaWYgKHRwLT50ZzNfZmxhZ3MzICYgVEczX0ZMRzNfNTc2MV81Nzg0X0FYX0ZJWEVTKSB7CisJaWYgKEdFVF9BU0lDX1JFVih0cC0+cGNpX2NoaXBfcmV2X2lkKSA9PSBBU0lDX1JFVl81Nzg0IHx8CisJICAgIEdFVF9BU0lDX1JFVih0cC0+cGNpX2NoaXBfcmV2X2lkKSA9PSBBU0lDX1JFVl81NzYxKSB7CiAJCWludCBpOwogCQl1MzIgc3RhdHVzOwogCkBAIC05NDgxLDE3ICs5NTUyLDIzIEBACiAJCWlmIChzdGF0dXMgIT0gQ1BNVV9NVVRFWF9HTlRfRFJJVkVSKQogCQkJcmV0dXJuIFRHM19MT09QQkFDS19GQUlMRUQ7CiAKLQkJLyogVHVybiBvZmYgcG93ZXIgbWFuYWdlbWVudCBiYXNlZCBvbiBsaW5rIHNwZWVkLiAqLworCQkvKiBUdXJuIG9mZiBsaW5rLWJhc2VkIHBvd2VyIG1hbmFnZW1lbnQuICovCiAJCWNwbXVjdHJsID0gdHIzMihURzNfQ1BNVV9DVFJMKTsKLQkJdHczMihURzNfQ1BNVV9DVFJMLAotCQkgICAgIGNwbXVjdHJsICYgfihDUE1VX0NUUkxfTElOS19TUEVFRF9NT0RFIHwKLQkJCQkgIENQTVVfQ1RSTF9MSU5LX0FXQVJFX01PREUpKTsKKwkJaWYgKEdFVF9BU0lDX1JFVih0cC0+cGNpX2NoaXBfcmV2X2lkKSA9PSBBU0lDX1JFVl81Nzg0IHx8CisJCSAgICBHRVRfQ0hJUF9SRVYodHAtPnBjaV9jaGlwX3Jldl9pZCkgPT0gQ0hJUFJFVl81NzYxX0FYKQorCQkJdHczMihURzNfQ1BNVV9DVFJMLAorCQkJICAgICBjcG11Y3RybCAmIH4oQ1BNVV9DVFJMX0xJTktfU1BFRURfTU9ERSB8CisJCQkJCSAgQ1BNVV9DVFJMX0xJTktfQVdBUkVfTU9ERSkpOworCQllbHNlCisJCQl0dzMyKFRHM19DUE1VX0NUUkwsCisJCQkgICAgIGNwbXVjdHJsICYgfkNQTVVfQ1RSTF9MSU5LX0FXQVJFX01PREUpOwogCX0KIAogCWlmICh0ZzNfcnVuX2xvb3BiYWNrKHRwLCBURzNfTUFDX0xPT1BCQUNLKSkKIAkJZXJyIHw9IFRHM19NQUNfTE9PUEJBQ0tfRkFJTEVEOwogCi0JaWYgKHRwLT50ZzNfZmxhZ3MzICYgVEczX0ZMRzNfNTc2MV81Nzg0X0FYX0ZJWEVTKSB7CisJaWYgKEdFVF9BU0lDX1JFVih0cC0+cGNpX2NoaXBfcmV2X2lkKSA9PSBBU0lDX1JFVl81Nzg0IHx8CisJICAgIEdFVF9BU0lDX1JFVih0cC0+cGNpX2NoaXBfcmV2X2lkKSA9PSBBU0lDX1JFVl81NzYxKSB7CiAJCXR3MzIoVEczX0NQTVVfQ1RSTCwgY3BtdWN0cmwpOwogCiAJCS8qIFJlbGVhc2UgdGhlIG11dGV4ICovCkBAIC0xMDcyNCw5ICsxMDgwMSw4IEBACiAJCSAgICB0cC0+cGRldi0+c3Vic3lzdGVtX3ZlbmRvciA9PSBQQ0lfVkVORE9SX0lEX0RFTEwpCiAJCQl0cC0+bGVkX2N0cmwgPSBMRURfQ1RSTF9NT0RFX1BIWV8yOwogCi0JCWlmICh0cC0+cGNpX2NoaXBfcmV2X2lkID09IENISVBSRVZfSURfNTc4NF9BMCB8fAotCQkgICAgdHAtPnBjaV9jaGlwX3Jldl9pZCA9PSBDSElQUkVWX0lEXzU3ODRfQTEpCi0JCQl0cC0+bGVkX2N0cmwgPSBMRURfQ1RSTF9NT0RFX01BQzsKKwkJaWYgKEdFVF9DSElQX1JFVih0cC0+cGNpX2NoaXBfcmV2X2lkKSA9PSBDSElQUkVWXzU3ODRfQVgpCisJCQl0cC0+bGVkX2N0cmwgPSBMRURfQ1RSTF9NT0RFX1BIWV8xOwogCiAJCWlmIChuaWNfY2ZnICYgTklDX1NSQU1fREFUQV9DRkdfRUVQUk9NX1dQKSB7CiAJCQl0cC0+dGczX2ZsYWdzIHw9IFRHM19GTEFHX0VFUFJPTV9XUklURV9QUk9UOwpAQCAtMTA3NzMsNiArMTA4NDksNTUgQEAKIAl9CiB9CiAKK3N0YXRpYyBpbnQgX19kZXZpbml0IHRnM19pc3N1ZV9vdHBfY29tbWFuZChzdHJ1Y3QgdGczICp0cCwgdTMyIGNtZCkKK3sKKwlpbnQgaTsKKwl1MzIgdmFsOworCisJdHczMihPVFBfQ1RSTCwgY21kIHwgT1RQX0NUUkxfT1RQX0NNRF9TVEFSVCk7CisJdHczMihPVFBfQ1RSTCwgY21kKTsKKworCS8qIFdhaXQgZm9yIHVwIHRvIDEgbXMgZm9yIGNvbW1hbmQgdG8gZXhlY3V0ZS4gKi8KKwlmb3IgKGkgPSAwOyBpIDwgMTAwOyBpKyspIHsKKwkJdmFsID0gdHIzMihPVFBfU1RBVFVTKTsKKwkJaWYgKHZhbCAmIE9UUF9TVEFUVVNfQ01EX0RPTkUpCisJCQlicmVhazsKKwkJdWRlbGF5KDEwKTsKKwl9CisKKwlyZXR1cm4gKHZhbCAmIE9UUF9TVEFUVVNfQ01EX0RPTkUpID8gMCA6IC1FQlVTWTsKK30KKworLyogUmVhZCB0aGUgZ3BoeSBjb25maWd1cmF0aW9uIGZyb20gdGhlIE9UUCByZWdpb24gb2YgdGhlIGNoaXAuICBUaGUgZ3BoeQorICogY29uZmlndXJhdGlvbiBpcyBhIDMyLWJpdCB2YWx1ZSB0aGF0IHN0cmFkZGxlcyB0aGUgYWxpZ25tZW50IGJvdW5kYXJ5LgorICogV2UgZG8gdHdvIDMyLWJpdCByZWFkcyBhbmQgdGhlbiBzaGlmdCBhbmQgbWVyZ2UgdGhlIHJlc3VsdHMuCisgKi8KK3N0YXRpYyB1MzIgX19kZXZpbml0IHRnM19yZWFkX290cF9waHljZmcoc3RydWN0IHRnMyAqdHApCit7CisJdTMyIGJoYWxmX290cCwgdGhhbGZfb3RwOworCisJdHczMihPVFBfTU9ERSwgT1RQX01PREVfT1RQX1RIUlVfR1JDKTsKKworCWlmICh0ZzNfaXNzdWVfb3RwX2NvbW1hbmQodHAsIE9UUF9DVFJMX09UUF9DTURfSU5JVCkpCisJCXJldHVybiAwOworCisJdHczMihPVFBfQUREUkVTUywgT1RQX0FERFJFU1NfTUFHSUMxKTsKKworCWlmICh0ZzNfaXNzdWVfb3RwX2NvbW1hbmQodHAsIE9UUF9DVFJMX09UUF9DTURfUkVBRCkpCisJCXJldHVybiAwOworCisJdGhhbGZfb3RwID0gdHIzMihPVFBfUkVBRF9EQVRBKTsKKworCXR3MzIoT1RQX0FERFJFU1MsIE9UUF9BRERSRVNTX01BR0lDMik7CisKKwlpZiAodGczX2lzc3VlX290cF9jb21tYW5kKHRwLCBPVFBfQ1RSTF9PVFBfQ01EX1JFQUQpKQorCQlyZXR1cm4gMDsKKworCWJoYWxmX290cCA9IHRyMzIoT1RQX1JFQURfREFUQSk7CisKKwlyZXR1cm4gKCh0aGFsZl9vdHAgJiAweDAwMDBmZmZmKSA8PCAxNikgfCAoYmhhbGZfb3RwID4+IDE2KTsKK30KKwogc3RhdGljIGludCBfX2RldmluaXQgdGczX3BoeV9wcm9iZShzdHJ1Y3QgdGczICp0cCkKIHsKIAl1MzIgaHdfcGh5X2lkXzEsIGh3X3BoeV9pZF8yOwpAQCAtMTE1ODYsNiArMTE3MTEsMTMgQEAKIAkJCXRwLT50ZzNfZmxhZ3MyIHw9IFRHM19GTEcyX1BIWV9CRVJfQlVHOwogCX0KIAorCWlmIChHRVRfQVNJQ19SRVYodHAtPnBjaV9jaGlwX3Jldl9pZCkgPT0gQVNJQ19SRVZfNTc4NCAmJgorCSAgICBHRVRfQ0hJUF9SRVYodHAtPnBjaV9jaGlwX3Jldl9pZCkgIT0gQ0hJUFJFVl81Nzg0X0FYKSB7CisJCXRwLT5waHlfb3RwID0gdGczX3JlYWRfb3RwX3BoeWNmZyh0cCk7CisJCWlmICh0cC0+cGh5X290cCA9PSAwKQorCQkJdHAtPnBoeV9vdHAgPSBURzNfT1RQX0RFRkFVTFQ7CisJfQorCiAJdHAtPmNvYWxlc2NlX21vZGUgPSAwOwogCWlmIChHRVRfQ0hJUF9SRVYodHAtPnBjaV9jaGlwX3Jldl9pZCkgIT0gQ0hJUFJFVl81NzAwX0FYICYmCiAJICAgIEdFVF9DSElQX1JFVih0cC0+cGNpX2NoaXBfcmV2X2lkKSAhPSBDSElQUkVWXzU3MDBfQlgpCkBAIC0xMTg0MSw3ICsxMTk3Myw3IEBACiAJfQogCiAJaWYgKCFpc192YWxpZF9ldGhlcl9hZGRyKCZkZXYtPmRldl9hZGRyWzBdKSkgewotI2lmZGVmIENPTkZJR19TUEFSQzY0CisjaWZkZWYgQ09ORklHX1NQQVJDCiAJCWlmICghdGczX2dldF9kZWZhdWx0X21hY2FkZHJfc3BhcmModHApKQogCQkJcmV0dXJuIDA7CiAjZW5kaWYKQEAgLTEyNDQ2LDcgKzEyNTc4LDggQEAKIAkJCQkgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpCiB7CiAJc3RhdGljIGludCB0ZzNfdmVyc2lvbl9wcmludGVkID0gMDsKLQl1bnNpZ25lZCBsb25nIHRnM3JlZ19iYXNlLCB0ZzNyZWdfbGVuOworCXJlc291cmNlX3NpemVfdCB0ZzNyZWdfYmFzZTsKKwl1bnNpZ25lZCBsb25nIHRnM3JlZ19sZW47CiAJc3RydWN0IG5ldF9kZXZpY2UgKmRldjsKIAlzdHJ1Y3QgdGczICp0cDsKIAlpbnQgZXJyLCBwbV9jYXA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC90ZzMuaCBiL2RyaXZlcnMvbmV0L3RnMy5oCmluZGV4IDM5MzhlYjMuLmMxMDc1YTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3RnMy5oCisrKyBiL2RyaXZlcnMvbmV0L3RnMy5oCkBAIC0xMzgsNiArMTM4LDggQEAKICNkZWZpbmUgICBDSElQUkVWXzU3MDRfQlgJCSAweDIxCiAjZGVmaW5lICAgQ0hJUFJFVl81NzUwX0FYCQkgMHg0MAogI2RlZmluZSAgIENISVBSRVZfNTc1MF9CWAkJIDB4NDEKKyNkZWZpbmUgICBDSElQUkVWXzU3ODRfQVgJCSAweDU3ODQwCisjZGVmaW5lICAgQ0hJUFJFVl81NzYxX0FYCQkgMHg1NzYxMAogI2RlZmluZSAgR0VUX01FVEFMX1JFVihDSElQX1JFVl9JRCkJKChDSElQX1JFVl9JRCkgJiAweGZmKQogI2RlZmluZSAgIE1FVEFMX1JFVl9BMAkJCSAweDAwCiAjZGVmaW5lICAgTUVUQUxfUkVWX0ExCQkJIDB4MDEKQEAgLTg2Niw2ICs4NjgsNyBAQAogI2RlZmluZSAgQ1BNVV9DVFJMX0xJTktfSURMRV9NT0RFCSAweDAwMDAwMjAwCiAjZGVmaW5lICBDUE1VX0NUUkxfTElOS19BV0FSRV9NT0RFCSAweDAwMDAwNDAwCiAjZGVmaW5lICBDUE1VX0NUUkxfTElOS19TUEVFRF9NT0RFCSAweDAwMDA0MDAwCisjZGVmaW5lICBDUE1VX0NUUkxfR1BIWV8xME1CX1JYT05MWQkgMHgwMDAxMDAwMAogI2RlZmluZSBURzNfQ1BNVV9MU1BEXzEwTUJfQ0xLCQkweDAwMDAzNjA0CiAjZGVmaW5lICBDUE1VX0xTUERfMTBNQl9NQUNDTEtfTUFTSwkgMHgwMDFmMDAwMAogI2RlZmluZSAgQ1BNVV9MU1BEXzEwTUJfTUFDQ0xLXzZfMjUJIDB4MDAxMzAwMDAKQEAgLTE1NTksNyArMTU2MiwyNCBAQAogLyogMHg3MDJjIHVudXNlZCAqLwogCiAjZGVmaW5lIE5WUkFNX0FERFJfTE9DS09VVAkJMHgwMDAwNzAzMAotLyogMHg3MDM0IC0tPiAweDdjMDAgdW51c2VkICovCisvKiAweDcwMzQgLS0+IDB4NzUwMCB1bnVzZWQgKi8KKworI2RlZmluZSBPVFBfTU9ERQkJCTB4MDAwMDc1MDAKKyNkZWZpbmUgT1RQX01PREVfT1RQX1RIUlVfR1JDCQkgMHgwMDAwMDAwMQorI2RlZmluZSBPVFBfQ1RSTAkJCTB4MDAwMDc1MDQKKyNkZWZpbmUgT1RQX0NUUkxfT1RQX1BST0dfRU5BQkxFCSAweDAwMjAwMDAwCisjZGVmaW5lIE9UUF9DVFJMX09UUF9DTURfUkVBRAkJIDB4MDAwMDAwMDAKKyNkZWZpbmUgT1RQX0NUUkxfT1RQX0NNRF9JTklUCQkgMHgwMDAwMDAwOAorI2RlZmluZSBPVFBfQ1RSTF9PVFBfQ01EX1NUQVJUCQkgMHgwMDAwMDAwMQorI2RlZmluZSBPVFBfU1RBVFVTCQkJMHgwMDAwNzUwOAorI2RlZmluZSBPVFBfU1RBVFVTX0NNRF9ET05FCQkgMHgwMDAwMDAwMQorI2RlZmluZSBPVFBfQUREUkVTUwkJCTB4MDAwMDc1MGMKKyNkZWZpbmUgT1RQX0FERFJFU1NfTUFHSUMxCQkgMHgwMDAwMDBhMAorI2RlZmluZSBPVFBfQUREUkVTU19NQUdJQzIJCSAweDAwMDAwMDgwCisvKiAweDc1MTAgdW51c2VkICovCisKKyNkZWZpbmUgT1RQX1JFQURfREFUQQkJCTB4MDAwMDc1MTQKKy8qIDB4NzUxOCAtLT4gMHg3YzA0IHVudXNlZCAqLwogCiAjZGVmaW5lIFBDSUVfVFJBTlNBQ1RJT05fQ0ZHCQkweDAwMDA3YzA0CiAjZGVmaW5lIFBDSUVfVFJBTlNfQ0ZHXzFTSE9UX01TSQkgMHgyMDAwMDAwMApAQCAtMTU2OCw2ICsxNTg4LDI4IEBACiAjZGVmaW5lIFBDSUVfUFdSX01HTVRfVEhSRVNICQkweDAwMDA3ZDI4CiAjZGVmaW5lIFBDSUVfUFdSX01HTVRfTDFfVEhSRVNIX01TSwkgMHgwMDAwZmYwMAogCisKKy8qIE9UUCBiaXQgZGVmaW5pdGlvbnMgKi8KKyNkZWZpbmUgVEczX09UUF9BR0NUR1RfTUFTSwkJMHgwMDAwMDBlMAorI2RlZmluZSBURzNfT1RQX0FHQ1RHVF9TSElGVAkJMQorI2RlZmluZSBURzNfT1RQX0hQRkZMVFJfTUFTSwkJMHgwMDAwMDMwMAorI2RlZmluZSBURzNfT1RQX0hQRkZMVFJfU0hJRlQJCTEKKyNkZWZpbmUgVEczX09UUF9IUEZPVkVSX01BU0sJCTB4MDAwMDA0MDAKKyNkZWZpbmUgVEczX09UUF9IUEZPVkVSX1NISUZUCQkxCisjZGVmaW5lIFRHM19PVFBfTFBGRElTX01BU0sJCTB4MDAwMDA4MDAKKyNkZWZpbmUgVEczX09UUF9MUEZESVNfU0hJRlQJCTExCisjZGVmaW5lIFRHM19PVFBfVkRBQ19NQVNLCQkweGZmMDAwMDAwCisjZGVmaW5lIFRHM19PVFBfVkRBQ19TSElGVAkJMjQKKyNkZWZpbmUgVEczX09UUF8xMEJUQU1QX01BU0sJCTB4MDAwMGYwMDAKKyNkZWZpbmUgVEczX09UUF8xMEJUQU1QX1NISUZUCQk4CisjZGVmaW5lIFRHM19PVFBfUk9GRl9NQVNLCQkweDAwZTAwMDAwCisjZGVmaW5lIFRHM19PVFBfUk9GRl9TSElGVAkJMTEKKyNkZWZpbmUgVEczX09UUF9SQ09GRl9NQVNLCQkweDAwMWMwMDAwCisjZGVmaW5lIFRHM19PVFBfUkNPRkZfU0hJRlQJCTE2CisKKyNkZWZpbmUgVEczX09UUF9ERUZBVUxUCQkJMHgyODZjMTY0MAorCisKICNkZWZpbmUgVEczX0VFUFJPTV9NQUdJQwkJMHg2Njk5NTVhYQogI2RlZmluZSBURzNfRUVQUk9NX01BR0lDX0ZXCQkweGE1MDAwMDAwCiAjZGVmaW5lIFRHM19FRVBST01fTUFHSUNfRldfTVNLCQkweGZmMDAwMDAwCkBAIC0xNzA1LDE1ICsxNzQ3LDMxIEBACiAKICNkZWZpbmUgTUlJX1RHM19EU1BfUldfUE9SVAkJMHgxNSAvKiBEU1AgY29lZmZpY2llbnQgcmVhZC93cml0ZSBwb3J0ICovCiAKLSNkZWZpbmUgTUlJX1RHM19EU1BfQUREUkVTUwkJMHgxNyAvKiBEU1AgYWRkcmVzcyByZWdpc3RlciAqLwogI2RlZmluZSBNSUlfVEczX0VQSFlfUFRFU1QJCTB4MTcgLyogNTkwNiBQSFkgcmVnaXN0ZXIgKi8KKyNkZWZpbmUgTUlJX1RHM19EU1BfQUREUkVTUwkJMHgxNyAvKiBEU1AgYWRkcmVzcyByZWdpc3RlciAqLworCisjZGVmaW5lIE1JSV9URzNfRFNQX1RBUDEJCTB4MDAwMQorI2RlZmluZSAgTUlJX1RHM19EU1BfVEFQMV9BR0NUR1RfREZMVAkweDAwMDcKKyNkZWZpbmUgTUlJX1RHM19EU1BfQUFESjFDSDAJCTB4MDAxZgorI2RlZmluZSBNSUlfVEczX0RTUF9BQURKMUNIMwkJMHg2MDFmCisjZGVmaW5lICBNSUlfVEczX0RTUF9BQURKMUNIM19BRENDS0FESgkweDAwMDIKKyNkZWZpbmUgTUlJX1RHM19EU1BfRVhQOAkJMHgwNzA4CisjZGVmaW5lICBNSUlfVEczX0RTUF9FWFA4X1JFSjJNSHoJMHgwMDAxCisjZGVmaW5lICBNSUlfVEczX0RTUF9FWFA4X0FFRFcJCTB4MDIwMAorI2RlZmluZSBNSUlfVEczX0RTUF9FWFA3NQkJMHgwZjc1CisjZGVmaW5lIE1JSV9URzNfRFNQX0VYUDk2CQkweDBmOTYKKyNkZWZpbmUgTUlJX1RHM19EU1BfRVhQOTcJCTB4MGY5NwogCiAjZGVmaW5lIE1JSV9URzNfQVVYX0NUUkwJCTB4MTggLyogYXV4aWxsaWFyeSBjb250cm9sIHJlZ2lzdGVyICovCiAKICNkZWZpbmUgTUlJX1RHM19BVVhDVExfTUlTQ19XUkVOCTB4ODAwMAogI2RlZmluZSBNSUlfVEczX0FVWENUTF9NSVNDX0ZPUkNFX0FNRElYCTB4MDIwMAogI2RlZmluZSBNSUlfVEczX0FVWENUTF9NSVNDX1JEU0VMX01JU0MJMHg3MDAwCi0jZGVmaW5lIE1JSV9URzNfQVVYQ1RMX1NIRFdTRUxfTUlTQwkJMHgwMDA3CisjZGVmaW5lIE1JSV9URzNfQVVYQ1RMX1NIRFdTRUxfTUlTQwkweDAwMDcKKworI2RlZmluZSBNSUlfVEczX0FVWENUTF9BQ1RMX1NNRFNQX0VOQQkweDA4MDAKKyNkZWZpbmUgTUlJX1RHM19BVVhDVExfQUNUTF9UWF82REIJMHgwNDAwCisjZGVmaW5lIE1JSV9URzNfQVVYQ1RMX1NIRFdTRUxfQVVYQ1RMCTB4MDAwMAogCiAjZGVmaW5lIE1JSV9URzNfQVVYX1NUQVQJCTB4MTkgLyogYXV4aWxsaWFyeSBzdGF0dXMgcmVnaXN0ZXIgKi8KICNkZWZpbmUgTUlJX1RHM19BVVhfU1RBVF9MUEFTUwkJMHgwMDA0CkBAIC0xNzQzLDYgKzE4MDEsMjAgQEAKICNkZWZpbmUgTUlJX1RHM19JTlRfRFVQTEVYQ0hHCQkweDAwMDgKICNkZWZpbmUgTUlJX1RHM19JTlRfQU5FR19QQUdFX1JYCTB4MDQwMAogCisjZGVmaW5lIE1JSV9URzNfTUlTQ19TSERXCQkweDFjCisjZGVmaW5lIE1JSV9URzNfTUlTQ19TSERXX1dSRU4JCTB4ODAwMAorI2RlZmluZSBNSUlfVEczX01JU0NfU0hEV19TQ1I1X1NFTAkweDE0MDAKKyNkZWZpbmUgTUlJX1RHM19NSVNDX1NIRFdfQVBEX1NFTAkweDI4MDAKKworI2RlZmluZSBNSUlfVEczX01JU0NfU0hEV19TQ1I1X0MxMjVPRQkweDAwMDEKKyNkZWZpbmUgTUlJX1RHM19NSVNDX1NIRFdfU0NSNV9ETExBUEQJMHgwMDAyCisjZGVmaW5lIE1JSV9URzNfTUlTQ19TSERXX1NDUjVfU0RUTAkweDAwMDQKKyNkZWZpbmUgTUlJX1RHM19NSVNDX1NIRFdfU0NSNV9ETFBUTE0JMHgwMDA4CisjZGVmaW5lIE1JSV9URzNfTUlTQ19TSERXX1NDUjVfTFBFRAkweDAwMTAKKworI2RlZmluZSBNSUlfVEczX01JU0NfU0hEV19BUERfV0tUTV84NE1TCTB4MDAwMQorI2RlZmluZSBNSUlfVEczX01JU0NfU0hEV19BUERfRU5BQkxFCTB4MDAyMAorCiAjZGVmaW5lIE1JSV9URzNfRVBIWV9URVNUCQkweDFmIC8qIDU5MDYgUEhZIHJlZ2lzdGVyICovCiAjZGVmaW5lIE1JSV9URzNfRVBIWV9TSEFET1dfRU4JCTB4ODAKIApAQCAtMjQ3Myw2ICsyNTQ1LDcgQEAKICNkZWZpbmUgUEhZX1JFVl9CQ001NDExX1gwCQkweDEgLyogRm91bmQgb24gTmV0Z2VhciBHQTMwMlQgKi8KIAogCXUzMgkJCQlsZWRfY3RybDsKKwl1MzIJCQkJcGh5X290cDsKIAl1MTYJCQkJcGNpX2NtZDsKIAogCWNoYXIJCQkJYm9hcmRfcGFydF9udW1iZXJbMjRdOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdG9rZW5yaW5nL29seW1waWMuYyBiL2RyaXZlcnMvbmV0L3Rva2VucmluZy9vbHltcGljLmMKaW5kZXggNDMzYzk5NC4uMGFiNTFhMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdG9rZW5yaW5nL29seW1waWMuYworKysgYi9kcml2ZXJzL25ldC90b2tlbnJpbmcvb2x5bXBpYy5jCkBAIC0xMTcsNyArMTE3LDcgQEAKICAqIE9mZmljaWFsIHJlbGVhc2VzIHdpbGwgb25seSBoYXZlIGFuIGEuYi5jIHZlcnNpb24gbnVtYmVyIGZvcm1hdC4gCiAgKi8KIAotc3RhdGljIGNoYXIgdmVyc2lvbltdIF9fZGV2aW5pdGRhdGEgPSAKK3N0YXRpYyBjaGFyIHZlcnNpb25bXSA9CiAiT2x5bXBpYy5jIHYxLjAuNSA2LzA0LzAyIC0gUGV0ZXIgRGUgU2NocmlqdmVyICYgTWlrZSBQaGlsbGlwcyIgOyAKIAogc3RhdGljIGNoYXIgKm9wZW5fbWFqX2Vycm9yW10gID0geyJObyBlcnJvciIsICJMb2JlIE1lZGlhIFRlc3QiLCAiUGh5c2ljYWwgSW5zZXJ0aW9uIiwKQEAgLTI5MCw3ICsyOTAsNyBAQAogCXJldHVybiBpOwogfQogCi1zdGF0aWMgaW50IF9fZGV2aW5pdCBvbHltcGljX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKK3N0YXRpYyBpbnQgb2x5bXBpY19pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiB7CiAgICAgCXN0cnVjdCBvbHltcGljX3ByaXZhdGUgKm9seW1waWNfcHJpdjsKIAl1OCBfX2lvbWVtICpvbHltcGljX21taW8sICppbml0X3NyYiwqYWRhcHRlcl9hZGRyOwpAQCAtNDM0LDcgKzQzNCw3IEBACiAKIH0KIAotc3RhdGljIGludCBfX2RldmluaXQgb2x5bXBpY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpIAorc3RhdGljIGludCBvbHltcGljX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3Qgb2x5bXBpY19wcml2YXRlICpvbHltcGljX3ByaXY9bmV0ZGV2X3ByaXYoZGV2KTsKIAl1OCBfX2lvbWVtICpvbHltcGljX21taW89b2x5bXBpY19wcml2LT5vbHltcGljX21taW8sKmluaXRfc3JiOwpAQCAtMTQzOCwxMyArMTQzOCwxOCBAQAogCiAJCWlmIChvbHltcGljX3ByaXYtPm9seW1waWNfbmV0d29ya19tb25pdG9yKSB7IAogCQkJc3RydWN0IHRyaF9oZHIgKm1hY19oZHI7Ci0JCQlERUNMQVJFX01BQ19CVUYobWFjKTsKIAkJCXByaW50ayhLRVJOX1dBUk5JTkcgIiVzOiBSZWNlaXZlZCBNQUMgRnJhbWUsIGRldGFpbHM6IFxuIixkZXYtPm5hbWUpOwogCQkJbWFjX2hkciA9IHRyX2hkcihtYWNfZnJhbWUpOwotCQkJcHJpbnRrKEtFUk5fV0FSTklORyAiJXM6IE1BQyBGcmFtZSBEZXN0LiBBZGRyOiAlc1xuIiwKLQkJCSAgICAgICBkZXYtPm5hbWUsIHByaW50X21hYyhtYWMsIG1hY19oZHItPmRhZGRyKSk7Ci0JCQlwcmludGsoS0VSTl9XQVJOSU5HICIlczogTUFDIEZyYW1lIFNyY2UuIEFkZHI6ICVzXG4iLAotCQkJICAgICAgIGRldi0+bmFtZSwgcHJpbnRfbWFjKG1hYywgbWFjX2hkci0+c2FkZHIpKTsKKwkJCXByaW50ayhLRVJOX1dBUk5JTkcgIiVzOiBNQUMgRnJhbWUgRGVzdC4gQWRkcjogIgorCQkJICAgICAgIE1BQ19GTVQgIiBcbiIsIGRldi0+bmFtZSwKKwkJCSAgICAgICBtYWNfaGRyLT5kYWRkclswXSwgbWFjX2hkci0+ZGFkZHJbMV0sCisJCQkgICAgICAgbWFjX2hkci0+ZGFkZHJbMl0sIG1hY19oZHItPmRhZGRyWzNdLAorCQkJICAgICAgIG1hY19oZHItPmRhZGRyWzRdLCBtYWNfaGRyLT5kYWRkcls1XSk7CisJCQlwcmludGsoS0VSTl9XQVJOSU5HICIlczogTUFDIEZyYW1lIFNyY2UuIEFkZHI6ICIKKwkJCSAgICAgICBNQUNfRk1UICIgXG4iLCBkZXYtPm5hbWUsCisJCQkgICAgICAgbWFjX2hkci0+c2FkZHJbMF0sIG1hY19oZHItPnNhZGRyWzFdLAorCQkJICAgICAgIG1hY19oZHItPnNhZGRyWzJdLCBtYWNfaGRyLT5zYWRkclszXSwKKwkJCSAgICAgICBtYWNfaGRyLT5zYWRkcls0XSwgbWFjX2hkci0+c2FkZHJbNV0pOwogCQl9CiAJCW5ldGlmX3J4KG1hY19mcmFtZSk7CiAJCWRldi0+bGFzdF9yeCA9IGppZmZpZXM7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC90b2tlbnJpbmcvc21jdHIuYyBiL2RyaXZlcnMvbmV0L3Rva2VucmluZy9zbWN0ci5jCmluZGV4IDg5MDkwNTAuLjVmMWM1MDcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3Rva2VucmluZy9zbWN0ci5jCisrKyBiL2RyaXZlcnMvbmV0L3Rva2VucmluZy9zbWN0ci5jCkBAIC0zNDEzLDcgKzM0MTMsNyBAQAogICAgICAgICB0c3YtPnN2aSA9IFRSQU5TTUlUX1NUQVRVU19DT0RFOwogICAgICAgICB0c3YtPnN2bCA9IFNfVFJBTlNNSVRfU1RBVFVTX0NPREU7CiAKLSAgICAgICAgdHN2LT5zdnZbMF0gPSAoKHR4X2ZzdGF0dXMgJiAweDAxMDAgPj4gNikgfHwgSUJNX1BBU1NfU09VUkNFX0FERFIpOworCXRzdi0+c3Z2WzBdID0gKCh0eF9mc3RhdHVzICYgMHgwMTAwID4+IDYpIHwgSUJNX1BBU1NfU09VUkNFX0FERFIpOwogCiAgICAgICAgIC8qIFN0cmlwcGVkIGZyYW1lIHN0YXR1cyBvZiBUcmFuc21pdHRlZCBGcmFtZSAqLwogICAgICAgICB0c3YtPnN2dlsxXSA9IHR4X2ZzdGF0dXMgJiAweGZmOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdHVsaXAvZGUyMTA0eC5jIGIvZHJpdmVycy9uZXQvdHVsaXAvZGUyMTA0eC5jCmluZGV4IDc3ZDlkZDcuLjFiNWVkZDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3R1bGlwL2RlMjEwNHguYworKysgYi9kcml2ZXJzL25ldC90dWxpcC9kZTIxMDR4LmMKQEAgLTg0Miw3ICs4NDIsNyBAQAogc3RhdGljIHZvaWQgZGVfc3RvcF9yeHR4IChzdHJ1Y3QgZGVfcHJpdmF0ZSAqZGUpCiB7CiAJdTMyIG1hY21vZGU7Ci0JdW5zaWduZWQgaW50IHdvcmsgPSAxMDAwOworCXVuc2lnbmVkIGludCBpID0gMTMwMC8xMDA7CiAKIAltYWNtb2RlID0gZHIzMihNYWNNb2RlKTsKIAlpZiAobWFjbW9kZSAmIFJ4VHgpIHsKQEAgLTg1MCwxMCArODUwLDE0IEBACiAJCWRyMzIoTWFjTW9kZSk7CiAJfQogCi0Jd2hpbGUgKC0td29yayA+IDApIHsKKwkvKiB3YWl0IHVudGlsIGluLWZsaWdodCBmcmFtZSBjb21wbGV0ZXMuCisJICogTWF4IHRpbWUgQCAxMEJUOiAxNTAwKjhiLzEwTWJwcyA9PSAxMjAwdXMgKCsgMTAwdXMgbWFyZ2luKQorCSAqIFR5cGljYWxseSBleHBlY3QgdGhpcyBsb29wIHRvIGVuZCBpbiA8IDUwIHVzIG9uIDEwMEJULgorCSAqLworCXdoaWxlICgtLWkpIHsKIAkJaWYgKCFkZV9pc19ydW5uaW5nKGRlKSkKIAkJCXJldHVybjsKLQkJY3B1X3JlbGF4KCk7CisJCXVkZWxheSgxMDApOwogCX0KIAogCXByaW50ayhLRVJOX1dBUk5JTkcgIiVzOiB0aW1lb3V0IGV4cGlyZWQgc3RvcHBpbmcgRE1BXG4iLCBkZS0+ZGV2LT5uYW1lKTsKQEAgLTkxMCw3ICs5MTQsOCBAQAogCXVuc2lnbmVkIG1lZGlhID0gZGUtPm1lZGlhX3R5cGU7CiAJdTMyIG1hY21vZGUgPSBkcjMyKE1hY01vZGUpOwogCi0JQlVHX09OKGRlX2lzX3J1bm5pbmcoZGUpKTsKKwlpZiAoZGVfaXNfcnVubmluZyhkZSkpCisJCXByaW50ayhLRVJOX1dBUk5JTkcgIiVzOiBjaGlwIGlzIHJ1bm5pbmcgd2hpbGUgY2hhbmdpbmcgbWVkaWEhXG4iLCBkZS0+ZGV2LT5uYW1lKTsKIAogCWlmIChkZS0+ZGUyMTA0MCkKIAkJZHczMihDU1IxMSwgRlVMTF9EVVBMRVhfTUFHSUMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdHVsaXAvZWVwcm9tLmMgYi9kcml2ZXJzL25ldC90dWxpcC9lZXByb20uYwppbmRleCAyMDY5MThiLi5kYTIyMDZmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC90dWxpcC9lZXByb20uYworKysgYi9kcml2ZXJzL25ldC90dWxpcC9lZXByb20uYwpAQCAtMzQzLDYgKzM0MywxMiBAQAogCXZvaWQgX19pb21lbSAqZWVfYWRkciA9IHRwLT5iYXNlX2FkZHIgKyBDU1I5OwogCWludCByZWFkX2NtZCA9IGxvY2F0aW9uIHwgKEVFX1JFQURfQ01EIDw8IGFkZHJfbGVuKTsKIAorCS8qIElmIGxvY2F0aW9uIGlzIHBhc3QgdGhlIGVuZCBvZiB3aGF0IHdlIGNhbiBhZGRyZXNzLCBkb24ndAorCSAqIHJlYWQgc29tZSBvdGhlciBsb2NhdGlvbiAoaWUgdHJ1bmNhdGUpLiBKdXN0IHJldHVybiB6ZXJvLgorCSAqLworCWlmIChsb2NhdGlvbiA+ICgxIDw8IGFkZHJfbGVuKSAtIDEpCisJCXJldHVybiAwOworCiAJaW93cml0ZTMyKEVFX0VOQiAmIH5FRV9DUywgZWVfYWRkcik7CiAJaW93cml0ZTMyKEVFX0VOQiwgZWVfYWRkcik7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3R1bGlwL3R1bGlwX2NvcmUuYyBiL2RyaXZlcnMvbmV0L3R1bGlwL3R1bGlwX2NvcmUuYwppbmRleCBlZDYwMGJmLi44MmY0MDRiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC90dWxpcC90dWxpcF9jb3JlLmMKKysrIGIvZHJpdmVycy9uZXQvdHVsaXAvdHVsaXBfY29yZS5jCkBAIC0xNDM3LDYgKzE0MzcsNyBAQAogCSAgIEVFUFJPTS4KIAkgICAqLwogCWVlX2RhdGEgPSB0cC0+ZWVwcm9tOworCW1lbXNldChlZV9kYXRhLCAwLCBzaXplb2YodHAtPmVlcHJvbSkpOwogCXN1bSA9IDA7CiAJaWYgKGNoaXBfaWR4ID09IExDODJDMTY4KSB7CiAJCWZvciAoaSA9IDA7IGkgPCAzOyBpKyspIHsKQEAgLTE0NTgsOCArMTQ1OSwxMiBAQAogCQkvKiBBIHNlcmlhbCBFRVBST00gaW50ZXJmYWNlLCB3ZSByZWFkIG5vdyBhbmQgc29ydCBpdCBvdXQgbGF0ZXIuICovCiAJCWludCBzYV9vZmZzZXQgPSAwOwogCQlpbnQgZWVfYWRkcl9zaXplID0gdHVsaXBfcmVhZF9lZXByb20oZGV2LCAweGZmLCA4KSAmIDB4NDAwMDAgPyA4IDogNjsKKwkJaW50IGVlX21heF9hZGRyID0gKCgxIDw8IGVlX2FkZHJfc2l6ZSkgLSAxKSAqIHNpemVvZih1MTYpOwogCi0JCWZvciAoaSA9IDA7IGkgPCBzaXplb2YodHAtPmVlcHJvbSk7IGkrPTIpIHsKKwkJaWYgKGVlX21heF9hZGRyID4gc2l6ZW9mKHRwLT5lZXByb20pKQorCQkJZWVfbWF4X2FkZHIgPSBzaXplb2YodHAtPmVlcHJvbSk7CisKKwkJZm9yIChpID0gMDsgaSA8IGVlX21heF9hZGRyIDsgaSArPSBzaXplb2YodTE2KSkgewogCQkJdTE2IGRhdGEgPSB0dWxpcF9yZWFkX2VlcHJvbShkZXYsIGkvMiwgZWVfYWRkcl9zaXplKTsKIAkJCWVlX2RhdGFbaV0gPSBkYXRhICYgMHhmZjsKIAkJCWVlX2RhdGFbaSArIDFdID0gZGF0YSA+PiA4OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdHVuLmMgYi9kcml2ZXJzL25ldC90dW4uYwppbmRleCA3YjgxNmEwLi41YjVkODc1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC90dW4uYworKysgYi9kcml2ZXJzL25ldC90dW4uYwpAQCAtNjcsMTAgKzY3LDQzIEBACiAjaW5jbHVkZSA8YXNtL3N5c3RlbS5oPgogI2luY2x1ZGUgPGFzbS91YWNjZXNzLmg+CiAKKy8qIFVuY29tbWVudCB0byBlbmFibGUgZGVidWdnaW5nICovCisvKiAjZGVmaW5lIFRVTl9ERUJVRyAxICovCisKICNpZmRlZiBUVU5fREVCVUcKIHN0YXRpYyBpbnQgZGVidWc7CisKKyNkZWZpbmUgREJHICBpZih0dW4tPmRlYnVnKXByaW50aworI2RlZmluZSBEQkcxIGlmKGRlYnVnPT0yKXByaW50aworI2Vsc2UKKyNkZWZpbmUgREJHKCBhLi4uICkKKyNkZWZpbmUgREJHMSggYS4uLiApCiAjZW5kaWYKIAorc3RydWN0IHR1bl9zdHJ1Y3QgeworCXN0cnVjdCBsaXN0X2hlYWQgICAgICAgIGxpc3Q7CisJdW5zaWduZWQgbG9uZyAJCWZsYWdzOworCWludAkJCWF0dGFjaGVkOworCXVpZF90CQkJb3duZXI7CisJZ2lkX3QJCQlncm91cDsKKworCXdhaXRfcXVldWVfaGVhZF90CXJlYWRfd2FpdDsKKwlzdHJ1Y3Qgc2tfYnVmZl9oZWFkCXJlYWRxOworCisJc3RydWN0IG5ldF9kZXZpY2UJKmRldjsKKworCXN0cnVjdCBmYXN5bmNfc3RydWN0ICAgICpmYXN5bmM7CisKKwl1bnNpZ25lZCBsb25nIGlmX2ZsYWdzOworCXU4IGRldl9hZGRyW0VUSF9BTEVOXTsKKwl1MzIgY2hyX2ZpbHRlclsyXTsKKwl1MzIgbmV0X2ZpbHRlclsyXTsKKworI2lmZGVmIFRVTl9ERUJVRworCWludCBkZWJ1ZzsKKyNlbmRpZgorfTsKKwogLyogTmV0d29yayBkZXZpY2UgcGFydCBvZiB0aGUgZHJpdmVyICovCiAKIHN0YXRpYyBMSVNUX0hFQUQodHVuX2Rldl9saXN0KTsKQEAgLTI1Myw4ICsyODYsMTEgQEAKIAkJCXJldHVybiAtRUZBVUxUOwogCX0KIAotCWlmICgodHVuLT5mbGFncyAmIFRVTl9UWVBFX01BU0spID09IFRVTl9UQVBfREVWKQorCWlmICgodHVuLT5mbGFncyAmIFRVTl9UWVBFX01BU0spID09IFRVTl9UQVBfREVWKSB7CiAJCWFsaWduID0gTkVUX0lQX0FMSUdOOworCQlpZiAodW5saWtlbHkobGVuIDwgRVRIX0hMRU4pKQorCQkJcmV0dXJuIC1FSU5WQUw7CisJfQogCiAJaWYgKCEoc2tiID0gYWxsb2Nfc2tiKGxlbiArIGFsaWduLCBHRlBfS0VSTkVMKSkpIHsKIAkJdHVuLT5kZXYtPnN0YXRzLnJ4X2Ryb3BwZWQrKzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VjY19nZXRoLmMgYi9kcml2ZXJzL25ldC91Y2NfZ2V0aC5jCmluZGV4IGZiYTA4MTEuLjBlZTRjMTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3VjY19nZXRoLmMKKysrIGIvZHJpdmVycy9uZXQvdWNjX2dldGguYwpAQCAtMTU0LDggKzE1NCw4IEBACiAJLnJ4UW9TTW9kZSA9IFVDQ19HRVRIX1FPU19NT0RFX0RFRkFVTFQsCiAJLmF1ZmMgPSBVUFNNUl9BVVRPTUFUSUNfRkxPV19DT05UUk9MX01PREVfTk9ORSwKIAkucGFkQW5kQ3JjID0gTUFDQ0ZHMl9QQURfQU5EX0NSQ19NT0RFX1BBRF9BTkRfQ1JDLAotCS5udW1UaHJlYWRzVHggPSBVQ0NfR0VUSF9OVU1fT0ZfVEhSRUFEU180LAotCS5udW1UaHJlYWRzUnggPSBVQ0NfR0VUSF9OVU1fT0ZfVEhSRUFEU180LAorCS5udW1UaHJlYWRzVHggPSBVQ0NfR0VUSF9OVU1fT0ZfVEhSRUFEU18xLAorCS5udW1UaHJlYWRzUnggPSBVQ0NfR0VUSF9OVU1fT0ZfVEhSRUFEU18xLAogCS5yaXNjVHggPSBRRV9SSVNDX0FMTE9DQVRJT05fUklTQzFfQU5EX1JJU0MyLAogCS5yaXNjUnggPSBRRV9SSVNDX0FMTE9DQVRJT05fUklTQzFfQU5EX1JJU0MyLAogfTsKQEAgLTM4MzMsNiArMzgzMyw3IEBACiAJc3RydWN0IGRldmljZV9ub2RlICpwaHk7CiAJaW50IGVyciwgdWNjX251bSwgbWF4X3NwZWVkID0gMDsKIAljb25zdCBwaGFuZGxlICpwaDsKKwljb25zdCB1MzIgKmZpeGVkX2xpbms7CiAJY29uc3QgdW5zaWduZWQgaW50ICpwcm9wOwogCWNvbnN0IGNoYXIgKnNwcm9wOwogCWNvbnN0IHZvaWQgKm1hY19hZGRyOwpAQCAtMzkyMywxOCArMzkyNCwzOCBAQAogCiAJdWdfaW5mby0+dWZfaW5mby5yZWdzID0gcmVzLnN0YXJ0OwogCXVnX2luZm8tPnVmX2luZm8uaXJxID0gaXJxX29mX3BhcnNlX2FuZF9tYXAobnAsIDApOworCWZpeGVkX2xpbmsgPSBvZl9nZXRfcHJvcGVydHkobnAsICJmaXhlZC1saW5rIiwgTlVMTCk7CisJaWYgKGZpeGVkX2xpbmspIHsKKwkJdWdfaW5mby0+bWRpb19idXMgPSAwOworCQl1Z19pbmZvLT5waHlfYWRkcmVzcyA9IGZpeGVkX2xpbmtbMF07CisJCXBoeSA9IE5VTEw7CisJfSBlbHNlIHsKKwkJcGggPSBvZl9nZXRfcHJvcGVydHkobnAsICJwaHktaGFuZGxlIiwgTlVMTCk7CisJCXBoeSA9IG9mX2ZpbmRfbm9kZV9ieV9waGFuZGxlKCpwaCk7CiAKLQlwaCA9IG9mX2dldF9wcm9wZXJ0eShucCwgInBoeS1oYW5kbGUiLCBOVUxMKTsKLQlwaHkgPSBvZl9maW5kX25vZGVfYnlfcGhhbmRsZSgqcGgpOworCQlpZiAocGh5ID09IE5VTEwpCisJCQlyZXR1cm4gLUVOT0RFVjsKIAotCWlmIChwaHkgPT0gTlVMTCkKLQkJcmV0dXJuIC1FTk9ERVY7CisJCS8qIHNldCB0aGUgUEhZIGFkZHJlc3MgKi8KKwkJcHJvcCA9IG9mX2dldF9wcm9wZXJ0eShwaHksICJyZWciLCBOVUxMKTsKKwkJaWYgKHByb3AgPT0gTlVMTCkKKwkJCXJldHVybiAtMTsKKwkJdWdfaW5mby0+cGh5X2FkZHJlc3MgPSAqcHJvcDsKIAotCS8qIHNldCB0aGUgUEhZIGFkZHJlc3MgKi8KLQlwcm9wID0gb2ZfZ2V0X3Byb3BlcnR5KHBoeSwgInJlZyIsIE5VTEwpOwotCWlmIChwcm9wID09IE5VTEwpCi0JCXJldHVybiAtMTsKLQl1Z19pbmZvLT5waHlfYWRkcmVzcyA9ICpwcm9wOworCQkvKiBTZXQgdGhlIGJ1cyBpZCAqLworCQltZGlvID0gb2ZfZ2V0X3BhcmVudChwaHkpOworCisJCWlmIChtZGlvID09IE5VTEwpCisJCQlyZXR1cm4gLTE7CisKKwkJZXJyID0gb2ZfYWRkcmVzc190b19yZXNvdXJjZShtZGlvLCAwLCAmcmVzKTsKKwkJb2Zfbm9kZV9wdXQobWRpbyk7CisKKwkJaWYgKGVycikKKwkJCXJldHVybiAtMTsKKworCQl1Z19pbmZvLT5tZGlvX2J1cyA9IHJlcy5zdGFydDsKKwl9CiAKIAkvKiBnZXQgdGhlIHBoeSBpbnRlcmZhY2UgdHlwZSwgb3IgZGVmYXVsdCB0byBNSUkgKi8KIAlwcm9wID0gb2ZfZ2V0X3Byb3BlcnR5KG5wLCAicGh5LWNvbm5lY3Rpb24tdHlwZSIsIE5VTEwpOwpAQCAtMzk3NSwyMiArMzk5NiwxMCBAQAogCQl1Z19pbmZvLT51Zl9pbmZvLnV0ZnMgPSBVQ0NfR0VUSF9VVEZTX0dJR0FfSU5JVDsKIAkJdWdfaW5mby0+dWZfaW5mby51dGZldCA9IFVDQ19HRVRIX1VURkVUX0dJR0FfSU5JVDsKIAkJdWdfaW5mby0+dWZfaW5mby51dGZ0dCA9IFVDQ19HRVRIX1VURlRUX0dJR0FfSU5JVDsKKwkJdWdfaW5mby0+bnVtVGhyZWFkc1R4ID0gVUNDX0dFVEhfTlVNX09GX1RIUkVBRFNfNDsKKwkJdWdfaW5mby0+bnVtVGhyZWFkc1J4ID0gVUNDX0dFVEhfTlVNX09GX1RIUkVBRFNfNDsKIAl9CiAKLQkvKiBTZXQgdGhlIGJ1cyBpZCAqLwotCW1kaW8gPSBvZl9nZXRfcGFyZW50KHBoeSk7Ci0KLQlpZiAobWRpbyA9PSBOVUxMKQotCQlyZXR1cm4gLTE7Ci0KLQllcnIgPSBvZl9hZGRyZXNzX3RvX3Jlc291cmNlKG1kaW8sIDAsICZyZXMpOwotCW9mX25vZGVfcHV0KG1kaW8pOwotCi0JaWYgKGVycikKLQkJcmV0dXJuIC0xOwotCi0JdWdfaW5mby0+bWRpb19idXMgPSByZXMuc3RhcnQ7Ci0KIAlpZiAobmV0aWZfbXNnX3Byb2JlKCZkZWJ1ZykpCiAJCXByaW50ayhLRVJOX0lORk8gInVjY19nZXRoOiBVQ0MlMWQgYXQgMHglOHggKGlycSA9ICVkKSBcbiIsCiAJCQl1Z19pbmZvLT51Zl9pbmZvLnVjY19udW0gKyAxLCB1Z19pbmZvLT51Zl9pbmZvLnJlZ3MsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC91c2IvS2NvbmZpZyBiL2RyaXZlcnMvbmV0L3VzYi9LY29uZmlnCmluZGV4IGExMmM5YzQuLjA2MDRmM2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3VzYi9LY29uZmlnCisrKyBiL2RyaXZlcnMvbmV0L3VzYi9LY29uZmlnCkBAIC0xMjksNyArMTI5LDcgQEAKIAogY29uZmlnIFVTQl9ORVRfQVg4ODE3WAogCXRyaXN0YXRlICJBU0lYIEFYODh4eHggQmFzZWQgVVNCIDIuMCBFdGhlcm5ldCBBZGFwdGVycyIKLQlkZXBlbmRzIG9uIFVTQl9VU0JORVQgJiYgTkVUX0VUSEVSTkVUCisJZGVwZW5kcyBvbiBVU0JfVVNCTkVUCiAJc2VsZWN0IENSQzMyCiAJZGVmYXVsdCB5CiAJaGVscApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jIGIvZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jCmluZGV4IDRiMTMxYTYuLjAxNjYwZjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3VzYi9kbTk2MDEuYworKysgYi9kcml2ZXJzL25ldC91c2IvZG05NjAxLmMKQEAgLTM0MSw3ICszNDEsNyBAQAogCS8qIFdlIHVzZSB0aGUgMjAgYnl0ZSBkZXYtPmRhdGEgZm9yIG91ciA4IGJ5dGUgZmlsdGVyIGJ1ZmZlcgogCSAqIHRvIGF2b2lkIGFsbG9jYXRpbmcgbWVtb3J5IHRoYXQgaXMgdHJpY2t5IHRvIGZyZWUgbGF0ZXIgKi8KIAl1OCAqaGFzaGVzID0gKHU4ICopICYgZGV2LT5kYXRhOwotCXU4IHJ4X2N0bCA9IDB4MDE7CisJdTggcnhfY3RsID0gMHgzMTsKIAogCW1lbXNldChoYXNoZXMsIDB4MDAsIERNX01DQVNUX1NJWkUpOwogCWhhc2hlc1tETV9NQ0FTVF9TSVpFIC0gMV0gfD0gMHg4MDsJLyogYnJvYWRjYXN0IGFkZHJlc3MgKi8KQEAgLTM1NCw3ICszNTQsNyBAQAogCQlzdHJ1Y3QgZGV2X21jX2xpc3QgKm1jX2xpc3QgPSBuZXQtPm1jX2xpc3Q7CiAJCWludCBpOwogCi0JCWZvciAoaSA9IDA7IGkgPCBuZXQtPm1jX2NvdW50OyBpKyspIHsKKwkJZm9yIChpID0gMDsgaSA8IG5ldC0+bWNfY291bnQ7IGkrKywgbWNfbGlzdCA9IG1jX2xpc3QtPm5leHQpIHsKIAkJCXUzMiBjcmMgPSBldGhlcl9jcmMoRVRIX0FMRU4sIG1jX2xpc3QtPmRtaV9hZGRyKSA+PiAyNjsKIAkJCWhhc2hlc1tjcmMgPj4gM10gfD0gMSA8PCAoY3JjICYgMHg3KTsKIAkJfQpAQCAtNTYyLDYgKzU2MiwxMCBAQAogCSBVU0JfREVWSUNFKDB4MGE0NiwgMHg4NTE1KSwJLyogQURNdGVrIEFETTg1MTUgVVNCIE5JQyAqLwogCSAuZHJpdmVyX2luZm8gPSAodW5zaWduZWQgbG9uZykmZG05NjAxX2luZm8sCiAJIH0sCisJeworCVVTQl9ERVZJQ0UoMHgwYTQ3LCAweDk2MDEpLAkvKiBIaXJvc2UgVVNCLTEwMCAqLworCS5kcml2ZXJfaW5mbyA9ICh1bnNpZ25lZCBsb25nKSZkbTk2MDFfaW5mbywKKwkgfSwKIAl7fSwJCQkvLyBFTkQKIH07CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9wZWdhc3VzLmMgYi9kcml2ZXJzL25ldC91c2IvcGVnYXN1cy5jCmluZGV4IGQxZWQ2OGEuLmI1ODhjODkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3VzYi9wZWdhc3VzLmMKKysrIGIvZHJpdmVycy9uZXQvdXNiL3BlZ2FzdXMuYwpAQCAtMTEyOCwxMiArMTEyOCw4IEBACiB7CiAJcGVnYXN1c190ICpwZWdhc3VzOwogCi0JaWYgKGluX2F0b21pYygpKQotCQlyZXR1cm4gMDsKLQogCXBlZ2FzdXMgPSBuZXRkZXZfcHJpdihkZXYpOwogCW1paV9ldGh0b29sX2dzZXQoJnBlZ2FzdXMtPm1paSwgZWNtZCk7Ci0KIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL3JuZGlzX2hvc3QuYyBiL2RyaXZlcnMvbmV0L3VzYi9ybmRpc19ob3N0LmMKaW5kZXggYTYxMzI0Ny4uMzY5YzczMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdXNiL3JuZGlzX2hvc3QuYworKysgYi9kcml2ZXJzL25ldC91c2Ivcm5kaXNfaG9zdC5jCkBAIC0xNiwxMCArMTYsNiBAQAogICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKICAqLwotCi0vLyAjZGVmaW5lCURFQlVHCQkJLy8gZXJyb3IgcGF0aCBtZXNzYWdlcywgZXh0cmEgaW5mbwotLy8gI2RlZmluZQlWRVJCT1NFCQkJLy8gbW9yZTsgc3VjY2VzcyBtZXNzYWdlcwotCiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CiAjaW5jbHVkZSA8bGludXgvaW5pdC5oPgogI2luY2x1ZGUgPGxpbnV4L25ldGRldmljZS5oPgpAQCAtMjg3LDcgKzI4Myw3IEBACiAJCXN0cnVjdCBybmRpc19zZXRfYwkqc2V0X2M7CiAJCXN0cnVjdCBybmRpc19oYWx0CSpoYWx0OwogCX0gdTsKLQl1MzIJCQl0bXAsICpwaHltOworCXUzMgkJCXRtcCwgcGh5bV91bnNwZWMsICpwaHltOwogCWludAkJCXJlcGx5X2xlbjsKIAl1bnNpZ25lZCBjaGFyCQkqYnA7CiAKQEAgLTMxOCw2ICszMTQsMTQgQEAKIAluZXQtPmhhcmRfaGVhZGVyX2xlbiArPSBzaXplb2YgKHN0cnVjdCBybmRpc19kYXRhX2hkcik7CiAJZGV2LT5oYXJkX210dSA9IG5ldC0+bXR1ICsgbmV0LT5oYXJkX2hlYWRlcl9sZW47CiAKKwlkZXYtPm1heHBhY2tldCA9IHVzYl9tYXhwYWNrZXQoZGV2LT51ZGV2LCBkZXYtPm91dCwgMSk7CisJaWYgKGRldi0+bWF4cGFja2V0ID09IDApIHsKKwkJaWYgKG5ldGlmX21zZ19wcm9iZShkZXYpKQorCQkJZGV2X2RiZygmaW50Zi0+ZGV2LCAiZGV2LT5tYXhwYWNrZXQgY2FuJ3QgYmUgMFxuIik7CisJCXJldHZhbCA9IC1FSU5WQUw7CisJCWdvdG8gZmFpbF9hbmRfcmVsZWFzZTsKKwl9CisKIAlkZXYtPnJ4X3VyYl9zaXplID0gZGV2LT5oYXJkX210dSArIChkZXYtPm1heHBhY2tldCArIDEpOwogCWRldi0+cnhfdXJiX3NpemUgJj0gfihkZXYtPm1heHBhY2tldCAtIDEpOwogCXUuaW5pdC0+bWF4X3RyYW5zZmVyX3NpemUgPSBjcHVfdG9fbGUzMihkZXYtPnJ4X3VyYl9zaXplKTsKQEAgLTM1OSwxMiArMzYzLDE1IEBACiAJCWdvdG8gaGFsdF9mYWlsX2FuZF9yZWxlYXNlOwogCiAJLyogQ2hlY2sgcGh5c2ljYWwgbWVkaXVtICovCisJcGh5bSA9IE5VTEw7CiAJcmVwbHlfbGVuID0gc2l6ZW9mICpwaHltOwogCXJldHZhbCA9IHJuZGlzX3F1ZXJ5KGRldiwgaW50ZiwgdS5idWYsIE9JRF9HRU5fUEhZU0lDQUxfTUVESVVNLAogCQkJMCwgKHZvaWQgKiopICZwaHltLCAmcmVwbHlfbGVuKTsKLQlpZiAocmV0dmFsICE9IDApCisJaWYgKHJldHZhbCAhPSAwIHx8ICFwaHltKSB7CiAJCS8qIE9JRCBpcyBvcHRpb25hbCBzbyBkb24ndCBmYWlsIGhlcmUuICovCi0JCSpwaHltID0gUk5ESVNfUEhZU0lDQUxfTUVESVVNX1VOU1BFQ0lGSUVEOworCQlwaHltX3Vuc3BlYyA9IFJORElTX1BIWVNJQ0FMX01FRElVTV9VTlNQRUNJRklFRDsKKwkJcGh5bSA9ICZwaHltX3Vuc3BlYzsKKwl9CiAJaWYgKChmbGFncyAmIEZMQUdfUk5ESVNfUEhZTV9XSVJFTEVTUykgJiYKIAkJCSpwaHltICE9IFJORElTX1BIWVNJQ0FMX01FRElVTV9XSVJFTEVTU19MQU4pIHsKIAkJaWYgKG5ldGlmX21zZ19wcm9iZShkZXYpKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL3J0bDgxNTAuYyBiL2RyaXZlcnMvbmV0L3VzYi9ydGw4MTUwLmMKaW5kZXggN2UxZjAwMS4uZGY1NmE1MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdXNiL3J0bDgxNTAuYworKysgYi9kcml2ZXJzL25ldC91c2IvcnRsODE1MC5jCkBAIC0zNzYsNyArMzc2LDcgQEAKIAkJcmV0dXJuIDA7CiAJfQogCWRldi0+Y3RybF91cmIgPSB1c2JfYWxsb2NfdXJiKDAsIEdGUF9LRVJORUwpOwotCWlmICghZGV2LT5pbnRyX3VyYikgeworCWlmICghZGV2LT5jdHJsX3VyYikgewogCQl1c2JfZnJlZV91cmIoZGV2LT5yeF91cmIpOwogCQl1c2JfZnJlZV91cmIoZGV2LT50eF91cmIpOwogCQl1c2JfZnJlZV91cmIoZGV2LT5pbnRyX3VyYik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMgYi9kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMKaW5kZXggMTlmZDRjYi4uNTU1YjcwYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdmlydGlvX25ldC5jCisrKyBiL2RyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYwpAQCAtMjAzLDggKzIwMywxMSBAQAogCWlmIChyZWNlaXZlZCA8IGJ1ZGdldCkgewogCQluZXRpZl9yeF9jb21wbGV0ZSh2aS0+ZGV2LCBuYXBpKTsKIAkJaWYgKHVubGlrZWx5KCF2aS0+cnZxLT52cV9vcHMtPmVuYWJsZV9jYih2aS0+cnZxKSkKLQkJICAgICYmIG5ldGlmX3J4X3Jlc2NoZWR1bGUodmktPmRldiwgbmFwaSkpCisJCSAgICAmJiBuYXBpX3NjaGVkdWxlX3ByZXAobmFwaSkpIHsKKwkJCXZpLT5ydnEtPnZxX29wcy0+ZGlzYWJsZV9jYih2aS0+cnZxKTsKKwkJCV9fbmV0aWZfcnhfc2NoZWR1bGUodmktPmRldiwgbmFwaSk7CiAJCQlnb3RvIGFnYWluOworCQl9CiAJfQogCiAJcmV0dXJuIHJlY2VpdmVkOwpAQCAtMjMxLDExICsyMzQsMTIgQEAKIAlzdHJ1Y3Qgc2NhdHRlcmxpc3Qgc2dbMStNQVhfU0tCX0ZSQUdTXTsKIAlzdHJ1Y3QgdmlydGlvX25ldF9oZHIgKmhkcjsKIAljb25zdCB1bnNpZ25lZCBjaGFyICpkZXN0ID0gKChzdHJ1Y3QgZXRoaGRyICopc2tiLT5kYXRhKS0+aF9kZXN0OwotCURFQ0xBUkVfTUFDX0JVRihtYWMpOwogCiAJc2dfaW5pdF90YWJsZShzZywgMStNQVhfU0tCX0ZSQUdTKTsKIAotCXByX2RlYnVnKCIlczogeG1pdCAlcCAlc1xuIiwgZGV2LT5uYW1lLCBza2IsIHByaW50X21hYyhtYWMsIGRlc3QpKTsKKwlwcl9kZWJ1ZygiJXM6IHhtaXQgJXAgIiBNQUNfRk1UICJcbiIsIGRldi0+bmFtZSwgc2tiLAorCQkgZGVzdFswXSwgZGVzdFsxXSwgZGVzdFsyXSwKKwkJIGRlc3RbM10sIGRlc3RbNF0sIGRlc3RbNV0pOwogCiAJLyogRW5jb2RlIG1ldGFkYXRhIGhlYWRlciBhdCBmcm9udC4gKi8KIAloZHIgPSBza2Jfdm5ldF9oZHIoc2tiKTsKQEAgLTI3OCwxMCArMjgyLDEwIEBACiAJCXByX2RlYnVnKCIlczogdmlydGlvIG5vdCBwcmVwYXJlZCB0byBzZW5kXG4iLCBkZXYtPm5hbWUpOwogCQluZXRpZl9zdG9wX3F1ZXVlKGRldik7CiAKLQkJLyogQWN0aXZhdGUgY2FsbGJhY2sgZm9yIHVzaW5nIHNrYnM6IGlmIHRoaXMgZmFpbHMgaXQKKwkJLyogQWN0aXZhdGUgY2FsbGJhY2sgZm9yIHVzaW5nIHNrYnM6IGlmIHRoaXMgcmV0dXJucyBmYWxzZSBpdAogCQkgKiBtZWFucyBzb21lIHdlcmUgdXNlZCBpbiB0aGUgbWVhbnRpbWUuICovCiAJCWlmICh1bmxpa2VseSghdmktPnN2cS0+dnFfb3BzLT5lbmFibGVfY2IodmktPnN2cSkpKSB7Ci0JCQlwcmludGsoIlVubGlrZWx5OiByZXN0YXJ0IHN2cSBmYWlsZWRcbiIpOworCQkJdmktPnN2cS0+dnFfb3BzLT5kaXNhYmxlX2NiKHZpLT5zdnEpOwogCQkJbmV0aWZfc3RhcnRfcXVldWUoZGV2KTsKIAkJCWdvdG8gYWdhaW47CiAJCX0KQEAgLTI5NCw2ICsyOTgsMTUgQEAKIAlyZXR1cm4gMDsKIH0KIAorI2lmZGVmIENPTkZJR19ORVRfUE9MTF9DT05UUk9MTEVSCitzdGF0aWMgdm9pZCB2aXJ0bmV0X25ldHBvbGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgdmlydG5ldF9pbmZvICp2aSA9IG5ldGRldl9wcml2KGRldik7CisKKwluYXBpX3NjaGVkdWxlKCZ2aS0+bmFwaSk7Cit9CisjZW5kaWYKKwogc3RhdGljIGludCB2aXJ0bmV0X29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3QgdmlydG5ldF9pbmZvICp2aSA9IG5ldGRldl9wcml2KGRldik7CkBAIC0zMzYsNiArMzQ5LDkgQEAKIAlkZXYtPnN0b3AgPSB2aXJ0bmV0X2Nsb3NlOwogCWRldi0+aGFyZF9zdGFydF94bWl0ID0gc3RhcnRfeG1pdDsKIAlkZXYtPmZlYXR1cmVzID0gTkVUSUZfRl9ISUdIRE1BOworI2lmZGVmIENPTkZJR19ORVRfUE9MTF9DT05UUk9MTEVSCisJZGV2LT5wb2xsX2NvbnRyb2xsZXIgPSB2aXJ0bmV0X25ldHBvbGw7CisjZW5kaWYKIAlTRVRfTkVUREVWX0RFVihkZXYsICZ2ZGV2LT5kZXYpOwogCiAJLyogRG8gd2Ugc3VwcG9ydCAiaGFyZHdhcmUiIGNoZWNrc3Vtcz8gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dhbi9LY29uZmlnIGIvZHJpdmVycy9uZXQvd2FuL0tjb25maWcKaW5kZXggYTNkZjA5ZS4uODAwNWRkMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2FuL0tjb25maWcKKysrIGIvZHJpdmVycy9uZXQvd2FuL0tjb25maWcKQEAgLTE1MCw5ICsxNTAsMTMgQEAKIAogY29uZmlnIEhETENfUFBQCiAJdHJpc3RhdGUgIlN5bmNocm9ub3VzIFBvaW50LXRvLVBvaW50IFByb3RvY29sIChQUFApIHN1cHBvcnQiCi0JZGVwZW5kcyBvbiBIRExDCisJZGVwZW5kcyBvbiBIRExDICYmIEJST0tFTgogCWhlbHAKIAkgIEdlbmVyaWMgSERMQyBkcml2ZXIgc3VwcG9ydGluZyBQUFAgb3ZlciBXQU4gY29ubmVjdGlvbnMuCisJICBUaGlzIG1vZHVsZSBpcyBjdXJyZW50bHkgYnJva2VuIGFuZCB3aWxsIGNhdXNlIGEga2VybmVsIHBhbmljCisJICB3aGVuIGEgZGV2aWNlIGNvbmZpZ3VyZWQgaW4gUFBQIG1vZGUgaXMgYWN0aXZhdGVkLgorCisJICBJdCB3aWxsIGJlIHJlcGxhY2VkIGJ5IG5ldyBQUFAgaW1wbGVtZW50YXRpb24gaW4gTGludXggMi42LjI2LgogCiAJICBJZiB1bnN1cmUsIHNheSBOLgogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93YW4vZmFyc3luYy5jIGIvZHJpdmVycy9uZXQvd2FuL2ZhcnN5bmMuYwppbmRleCBjZjI3YmY0Li41NDczNjhlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93YW4vZmFyc3luYy5jCisrKyBiL2RyaXZlcnMvbmV0L3dhbi9mYXJzeW5jLmMKQEAgLTIwMjQsNiArMjAyNCw3IEBACiAJc3RydWN0IGZzdGlvY193cml0ZSB3cnRoZHI7CiAJc3RydWN0IGZzdGlvY19pbmZvIGluZm87CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKKwl2b2lkICpidWY7CiAKIAlkYmcoREJHX0lPQ1RMLCAiaW9jdGw6ICV4LCAlcFxuIiwgY21kLCBpZnItPmlmcl9kYXRhKTsKIApAQCAtMjA2NSwxNiArMjA2NiwyMiBAQAogCQkJcmV0dXJuIC1FTlhJTzsKIAkJfQogCi0JCS8qIE5vdyBjb3B5IHRoZSBkYXRhIHRvIHRoZSBjYXJkLgotCQkgKiBUaGlzIHdpbGwgcHJvYmFibHkgYnJlYWsgb24gc29tZSBhcmNoaXRlY3R1cmVzLgotCQkgKiBJJ2xsIGZpeCBpdCB3aGVuIEkgaGF2ZSBzb21ldGhpbmcgdG8gdGVzdCBvbi4KLQkJICovCi0JCWlmIChjb3B5X2Zyb21fdXNlcihjYXJkLT5tZW0gKyB3cnRoZHIub2Zmc2V0LAorCQkvKiBOb3cgY29weSB0aGUgZGF0YSB0byB0aGUgY2FyZC4gKi8KKworCQlidWYgPSBrbWFsbG9jKHdydGhkci5zaXplLCBHRlBfS0VSTkVMKTsKKwkJaWYgKCFidWYpCisJCQlyZXR1cm4gLUVOT01FTTsKKworCQlpZiAoY29weV9mcm9tX3VzZXIoYnVmLAogCQkJCSAgIGlmci0+aWZyX2RhdGEgKyBzaXplb2YgKHN0cnVjdCBmc3Rpb2Nfd3JpdGUpLAogCQkJCSAgIHdydGhkci5zaXplKSkgeworCQkJa2ZyZWUoYnVmKTsKIAkJCXJldHVybiAtRUZBVUxUOwogCQl9CiAKKwkJbWVtY3B5X3RvaW8oY2FyZC0+bWVtICsgd3J0aGRyLm9mZnNldCwgYnVmLCB3cnRoZHIuc2l6ZSk7CisJCWtmcmVlKGJ1Zik7CisKIAkJLyogV3JpdGVzIHRvIHRoZSBtZW1vcnkgb2YgYSBjYXJkIGluIHRoZSByZXNldCBzdGF0ZSBjb25zdGl0dXRlCiAJCSAqIGEgZG93bmxvYWQKIAkJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93YW4vbGFwYmV0aGVyLmMgYi9kcml2ZXJzL25ldC93YW4vbGFwYmV0aGVyLmMKaW5kZXggZmIzN2I4MC4uODI0ZGYzYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2FuL2xhcGJldGhlci5jCisrKyBiL2RyaXZlcnMvbmV0L3dhbi9sYXBiZXRoZXIuYwpAQCAtNTgsNyArNTgsNyBAQAogCXN0cnVjdCBuZXRfZGV2aWNlX3N0YXRzIHN0YXRzOwkJLyogc29tZSBzdGF0aXN0aWNzICovCiB9OwogCi1zdGF0aWMgc3RydWN0IGxpc3RfaGVhZCBsYXBiZXRoX2RldmljZXMgPSBMSVNUX0hFQURfSU5JVChsYXBiZXRoX2RldmljZXMpOworc3RhdGljIExJU1RfSEVBRChsYXBiZXRoX2RldmljZXMpOwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2FuL3NibmkuYyBiL2RyaXZlcnMvbmV0L3dhbi9zYm5pLmMKaW5kZXggMTVkNWM1OC4uZTU5MjU1YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2FuL3NibmkuYworKysgYi9kcml2ZXJzL25ldC93YW4vc2JuaS5jCkBAIC03NTEsNyArNzUxLDcgQEAKIH0KIAogCi1zdGF0aWMgX19pbmxpbmUgdm9pZAorc3RhdGljIGlubGluZSB2b2lkCiBzZW5kX2NvbXBsZXRlKCBzdHJ1Y3QgbmV0X2xvY2FsICAqbmwgKQogewogI2lmZGVmIENPTkZJR19TQk5JX01VTFRJTElORQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXJsYW4tcHJvYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXJsYW4tcHJvYy5jCmluZGV4IGM2ZTcwZGIuLjJhYjFkNTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2FybGFuLXByb2MuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hcmxhbi1wcm9jLmMKQEAgLTEyMDIsMTMgKzEyMDIsNiBAQAogCXsgLmN0bF9uYW1lID0gMCB9CiB9OwogI2VuZGlmCi0jZWxzZQotCi1zdGF0aWMgY3RsX3RhYmxlIGFybGFuX3RhYmxlW01BWF9BUkxBTlMgKyAxXSA9Ci17Ci0JeyAuY3RsX25hbWUgPSAwIH0KLX07Ci0jZW5kaWYKIAogCiAvLyBzdGF0aWMgaW50IG1tdHUgPSAxMjM0OwpAQCAtMTIzMyw3ICsxMjI2LDYgQEAKIC8vfTsKIAogCi0jaWZkZWYgQ09ORklHX1BST0NfRlMKIHN0YXRpYyBzdHJ1Y3QgY3RsX3RhYmxlX2hlYWRlciAqYXJsYW5fZGV2aWNlX3N5c2N0bF9oZWFkZXI7CiAKIGludCBfX2luaXQgaW5pdF9hcmxhbl9wcm9jKHZvaWQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGg1ay9ody5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoNWsvaHcuYwppbmRleCBjMmRlMmQ5Li4wMTc1NzQzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGg1ay9ody5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aDVrL2h3LmMKQEAgLTQyNyw2ICs0MjcsOCBAQAogewogCUFUSDVLX1RSQUNFKGFoLT5haF9zYyk7CiAKKwlfX3NldF9iaXQoQVRIX1NUQVRfSU5WQUxJRCwgYWgtPmFoX3NjLT5zdGF0dXMpOworCiAJaWYgKGFoLT5haF9yZl9iYW5rcyAhPSBOVUxMKQogCQlrZnJlZShhaC0+YWhfcmZfYmFua3MpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDMvZGVidWdmcy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQzL2RlYnVnZnMuYwppbmRleCBlMzhlZDBmLi43ZmNhMmViIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDMvZGVidWdmcy5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0My9kZWJ1Z2ZzLmMKQEAgLTYxOCw2ICs2MTgsNyBAQAogCWtmcmVlKGUpOwogfQogCisvKiBDYWxsZWQgd2l0aCBJUlFzIGRpc2FibGVkLiAqLwogdm9pZCBiNDNfZGVidWdmc19sb2dfdHhzdGF0KHN0cnVjdCBiNDNfd2xkZXYgKmRldiwKIAkJCSAgICBjb25zdCBzdHJ1Y3QgYjQzX3R4c3RhdHVzICpzdGF0dXMpCiB7CkBAIC02MjksOCArNjMwLDcgQEAKIAlpZiAoIWUpCiAJCXJldHVybjsKIAlsb2cgPSAmZS0+dHhzdGF0bG9nOwotCUI0M19XQVJOX09OKCFpcnFzX2Rpc2FibGVkKCkpOwotCXNwaW5fbG9jaygmbG9nLT5sb2NrKTsKKwlzcGluX2xvY2soJmxvZy0+bG9jayk7IC8qIElSUXMgYXJlIGFscmVhZHkgZGlzYWJsZWQuICovCiAJaSA9IGxvZy0+ZW5kICsgMTsKIAlpZiAoaSA9PSBCNDNfTlJfTE9HR0VEX1RYU1RBVFVTKQogCQlpID0gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0My9kbWEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0My9kbWEuYwppbmRleCAzZGZiMjhhLi40OGU5MTI0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDMvZG1hLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQzL2RtYS5jCkBAIC0zNzMsMTAgKzM3MywxMCBAQAogCWRtYV9hZGRyX3QgZG1hYWRkcjsKIAogCWlmICh0eCkgewotCQlkbWFhZGRyID0gZG1hX21hcF9zaW5nbGUocmluZy0+ZGV2LT5kZXYtPmRldiwKKwkJZG1hYWRkciA9IGRtYV9tYXBfc2luZ2xlKHJpbmctPmRldi0+ZGV2LT5kbWFfZGV2LAogCQkJCQkgYnVmLCBsZW4sIERNQV9UT19ERVZJQ0UpOwogCX0gZWxzZSB7Ci0JCWRtYWFkZHIgPSBkbWFfbWFwX3NpbmdsZShyaW5nLT5kZXYtPmRldi0+ZGV2LAorCQlkbWFhZGRyID0gZG1hX21hcF9zaW5nbGUocmluZy0+ZGV2LT5kZXYtPmRtYV9kZXYsCiAJCQkJCSBidWYsIGxlbiwgRE1BX0ZST01fREVWSUNFKTsKIAl9CiAKQEAgLTM4OCw5ICszODgsMTAgQEAKIAkJCSAgZG1hX2FkZHJfdCBhZGRyLCBzaXplX3QgbGVuLCBpbnQgdHgpCiB7CiAJaWYgKHR4KSB7Ci0JCWRtYV91bm1hcF9zaW5nbGUocmluZy0+ZGV2LT5kZXYtPmRldiwgYWRkciwgbGVuLCBETUFfVE9fREVWSUNFKTsKKwkJZG1hX3VubWFwX3NpbmdsZShyaW5nLT5kZXYtPmRldi0+ZG1hX2RldiwKKwkJCQkgYWRkciwgbGVuLCBETUFfVE9fREVWSUNFKTsKIAl9IGVsc2UgewotCQlkbWFfdW5tYXBfc2luZ2xlKHJpbmctPmRldi0+ZGV2LT5kZXYsCisJCWRtYV91bm1hcF9zaW5nbGUocmluZy0+ZGV2LT5kZXYtPmRtYV9kZXYsCiAJCQkJIGFkZHIsIGxlbiwgRE1BX0ZST01fREVWSUNFKTsKIAl9CiB9CkBAIC00MDAsNyArNDAxLDcgQEAKIAkJCQkgZG1hX2FkZHJfdCBhZGRyLCBzaXplX3QgbGVuKQogewogCUI0M19XQVJOX09OKHJpbmctPnR4KTsKLQlkbWFfc3luY19zaW5nbGVfZm9yX2NwdShyaW5nLT5kZXYtPmRldi0+ZGV2LAorCWRtYV9zeW5jX3NpbmdsZV9mb3JfY3B1KHJpbmctPmRldi0+ZGV2LT5kbWFfZGV2LAogCQkJCWFkZHIsIGxlbiwgRE1BX0ZST01fREVWSUNFKTsKIH0KIApAQCAtNDA5LDcgKzQxMCw3IEBACiAJCQkJICAgIGRtYV9hZGRyX3QgYWRkciwgc2l6ZV90IGxlbikKIHsKIAlCNDNfV0FSTl9PTihyaW5nLT50eCk7Ci0JZG1hX3N5bmNfc2luZ2xlX2Zvcl9kZXZpY2UocmluZy0+ZGV2LT5kZXYtPmRldiwKKwlkbWFfc3luY19zaW5nbGVfZm9yX2RldmljZShyaW5nLT5kZXYtPmRldi0+ZG1hX2RldiwKIAkJCQkgICBhZGRyLCBsZW4sIERNQV9GUk9NX0RFVklDRSk7CiB9CiAKQEAgLTQyNSw3ICs0MjYsNyBAQAogCiBzdGF0aWMgaW50IGFsbG9jX3JpbmdtZW1vcnkoc3RydWN0IGI0M19kbWFyaW5nICpyaW5nKQogewotCXN0cnVjdCBkZXZpY2UgKmRldiA9IHJpbmctPmRldi0+ZGV2LT5kZXY7CisJc3RydWN0IGRldmljZSAqZG1hX2RldiA9IHJpbmctPmRldi0+ZGV2LT5kbWFfZGV2OwogCWdmcF90IGZsYWdzID0gR0ZQX0tFUk5FTDsKIAogCS8qIFRoZSBzcGVjcyBjYWxsIGZvciA0SyBidWZmZXJzIGZvciAzMC0gYW5kIDMyLWJpdCBETUEgd2l0aCA0SwpAQCAtNDM5LDcgKzQ0MCw3IEBACiAJICovCiAJaWYgKHJpbmctPnR5cGUgPT0gQjQzX0RNQV82NEJJVCkKIAkJZmxhZ3MgfD0gR0ZQX0RNQTsKLQlyaW5nLT5kZXNjYmFzZSA9IGRtYV9hbGxvY19jb2hlcmVudChkZXYsIEI0M19ETUFfUklOR01FTVNJWkUsCisJcmluZy0+ZGVzY2Jhc2UgPSBkbWFfYWxsb2NfY29oZXJlbnQoZG1hX2RldiwgQjQzX0RNQV9SSU5HTUVNU0laRSwKIAkJCQkJICAgICYocmluZy0+ZG1hYmFzZSksIGZsYWdzKTsKIAlpZiAoIXJpbmctPmRlc2NiYXNlKSB7CiAJCWI0M2VycihyaW5nLT5kZXYtPndsLCAiRE1BIHJpbmdtZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWRcbiIpOwpAQCAtNDUyLDkgKzQ1Myw5IEBACiAKIHN0YXRpYyB2b2lkIGZyZWVfcmluZ21lbW9yeShzdHJ1Y3QgYjQzX2RtYXJpbmcgKnJpbmcpCiB7Ci0Jc3RydWN0IGRldmljZSAqZGV2ID0gcmluZy0+ZGV2LT5kZXYtPmRldjsKKwlzdHJ1Y3QgZGV2aWNlICpkbWFfZGV2ID0gcmluZy0+ZGV2LT5kZXYtPmRtYV9kZXY7CiAKLQlkbWFfZnJlZV9jb2hlcmVudChkZXYsIEI0M19ETUFfUklOR01FTVNJWkUsCisJZG1hX2ZyZWVfY29oZXJlbnQoZG1hX2RldiwgQjQzX0RNQV9SSU5HTUVNU0laRSwKIAkJCSAgcmluZy0+ZGVzY2Jhc2UsIHJpbmctPmRtYWJhc2UpOwogfQogCkBAIC01NjAsNyArNTYxLDcgQEAKIC8qIENoZWNrIGlmIGEgRE1BIG1hcHBpbmcgYWRkcmVzcyBpcyBpbnZhbGlkLiAqLwogc3RhdGljIGJvb2wgYjQzX2RtYV9tYXBwaW5nX2Vycm9yKHN0cnVjdCBiNDNfZG1hcmluZyAqcmluZywKIAkJCQkgIGRtYV9hZGRyX3QgYWRkciwKLQkJCQkgIHNpemVfdCBidWZmZXJzaXplKQorCQkJCSAgc2l6ZV90IGJ1ZmZlcnNpemUsIGJvb2wgZG1hX3RvX2RldmljZSkKIHsKIAlpZiAodW5saWtlbHkoZG1hX21hcHBpbmdfZXJyb3IoYWRkcikpKQogCQlyZXR1cm4gMTsKQEAgLTU2OCwxMSArNTY5LDExIEBACiAJc3dpdGNoIChyaW5nLT50eXBlKSB7CiAJY2FzZSBCNDNfRE1BXzMwQklUOgogCQlpZiAoKHU2NClhZGRyICsgYnVmZmVyc2l6ZSA+ICgxVUxMIDw8IDMwKSkKLQkJCXJldHVybiAxOworCQkJZ290byBhZGRyZXNzX2Vycm9yOwogCQlicmVhazsKIAljYXNlIEI0M19ETUFfMzJCSVQ6CiAJCWlmICgodTY0KWFkZHIgKyBidWZmZXJzaXplID4gKDFVTEwgPDwgMzIpKQotCQkJcmV0dXJuIDE7CisJCQlnb3RvIGFkZHJlc3NfZXJyb3I7CiAJCWJyZWFrOwogCWNhc2UgQjQzX0RNQV82NEJJVDoKIAkJLyogQ3VycmVudGx5IHdlIGNhbid0IGhhdmUgYWRkcmVzc2VzIGJleW9uZApAQCAtNTgyLDYgKzU4MywxMiBAQAogCiAJLyogVGhlIGFkZHJlc3MgaXMgT0suICovCiAJcmV0dXJuIDA7CisKK2FkZHJlc3NfZXJyb3I6CisJLyogV2UgY2FuJ3Qgc3VwcG9ydCB0aGlzIGFkZHJlc3MuIFVubWFwIGl0IGFnYWluLiAqLworCXVubWFwX2Rlc2NidWZmZXIocmluZywgYWRkciwgYnVmZmVyc2l6ZSwgZG1hX3RvX2RldmljZSk7CisKKwlyZXR1cm4gMTsKIH0KIAogc3RhdGljIGludCBzZXR1cF9yeF9kZXNjYnVmZmVyKHN0cnVjdCBiNDNfZG1hcmluZyAqcmluZywKQEAgLTU5OSw3ICs2MDYsNyBAQAogCWlmICh1bmxpa2VseSghc2tiKSkKIAkJcmV0dXJuIC1FTk9NRU07CiAJZG1hYWRkciA9IG1hcF9kZXNjYnVmZmVyKHJpbmcsIHNrYi0+ZGF0YSwgcmluZy0+cnhfYnVmZmVyc2l6ZSwgMCk7Ci0JaWYgKGI0M19kbWFfbWFwcGluZ19lcnJvcihyaW5nLCBkbWFhZGRyLCByaW5nLT5yeF9idWZmZXJzaXplKSkgeworCWlmIChiNDNfZG1hX21hcHBpbmdfZXJyb3IocmluZywgZG1hYWRkciwgcmluZy0+cnhfYnVmZmVyc2l6ZSwgMCkpIHsKIAkJLyogdWdoLiB0cnkgdG8gcmVhbGxvYyBpbiB6b25lX2RtYSAqLwogCQlnZnBfZmxhZ3MgfD0gR0ZQX0RNQTsKIApAQCAtNjEyLDcgKzYxOSw4IEBACiAJCQkJCSByaW5nLT5yeF9idWZmZXJzaXplLCAwKTsKIAl9CiAKLQlpZiAoYjQzX2RtYV9tYXBwaW5nX2Vycm9yKHJpbmcsIGRtYWFkZHIsIHJpbmctPnJ4X2J1ZmZlcnNpemUpKSB7CisJaWYgKGI0M19kbWFfbWFwcGluZ19lcnJvcihyaW5nLCBkbWFhZGRyLCByaW5nLT5yeF9idWZmZXJzaXplLCAwKSkgeworCQliNDNlcnIocmluZy0+ZGV2LT53bCwgIlJYIERNQSBidWZmZXIgYWxsb2NhdGlvbiBmYWlsZWRcbiIpOwogCQlkZXZfa2ZyZWVfc2tiX2FueShza2IpOwogCQlyZXR1cm4gLUVJTzsKIAl9CkBAIC04NDcsMTIgKzg1NSwxMyBAQAogCQkJZ290byBlcnJfa2ZyZWVfbWV0YTsKIAogCQkvKiB0ZXN0IGZvciBhYmlsaXR5IHRvIGRtYSB0byB0eGhkcl9jYWNoZSAqLwotCQlkbWFfdGVzdCA9IGRtYV9tYXBfc2luZ2xlKGRldi0+ZGV2LT5kZXYsCisJCWRtYV90ZXN0ID0gZG1hX21hcF9zaW5nbGUoZGV2LT5kZXYtPmRtYV9kZXYsCiAJCQkJCSAgcmluZy0+dHhoZHJfY2FjaGUsCiAJCQkJCSAgYjQzX3R4aGRyX3NpemUoZGV2KSwKIAkJCQkJICBETUFfVE9fREVWSUNFKTsKIAotCQlpZiAoYjQzX2RtYV9tYXBwaW5nX2Vycm9yKHJpbmcsIGRtYV90ZXN0LCBiNDNfdHhoZHJfc2l6ZShkZXYpKSkgeworCQlpZiAoYjQzX2RtYV9tYXBwaW5nX2Vycm9yKHJpbmcsIGRtYV90ZXN0LAorCQkJCQkgIGI0M190eGhkcl9zaXplKGRldiksIDEpKSB7CiAJCQkvKiB1Z2ggcmVhbGxvYyAqLwogCQkJa2ZyZWUocmluZy0+dHhoZHJfY2FjaGUpOwogCQkJcmluZy0+dHhoZHJfY2FjaGUgPSBrY2FsbG9jKG5yX3Nsb3RzLApAQCAtODYxLDE3ICs4NzAsMjEgQEAKIAkJCWlmICghcmluZy0+dHhoZHJfY2FjaGUpCiAJCQkJZ290byBlcnJfa2ZyZWVfbWV0YTsKIAotCQkJZG1hX3Rlc3QgPSBkbWFfbWFwX3NpbmdsZShkZXYtPmRldi0+ZGV2LAorCQkJZG1hX3Rlc3QgPSBkbWFfbWFwX3NpbmdsZShkZXYtPmRldi0+ZG1hX2RldiwKIAkJCQkJCSAgcmluZy0+dHhoZHJfY2FjaGUsCiAJCQkJCQkgIGI0M190eGhkcl9zaXplKGRldiksCiAJCQkJCQkgIERNQV9UT19ERVZJQ0UpOwogCiAJCQlpZiAoYjQzX2RtYV9tYXBwaW5nX2Vycm9yKHJpbmcsIGRtYV90ZXN0LAotCQkJCQkJICBiNDNfdHhoZHJfc2l6ZShkZXYpKSkKKwkJCQkJCSAgYjQzX3R4aGRyX3NpemUoZGV2KSwgMSkpIHsKKworCQkJCWI0M2VycihkZXYtPndsLAorCQkJCSAgICAgICAiVFhIRFIgRE1BIGFsbG9jYXRpb24gZmFpbGVkXG4iKTsKIAkJCQlnb3RvIGVycl9rZnJlZV90eGhkcl9jYWNoZTsKKwkJCX0KIAkJfQogCi0JCWRtYV91bm1hcF9zaW5nbGUoZGV2LT5kZXYtPmRldiwKKwkJZG1hX3VubWFwX3NpbmdsZShkZXYtPmRldi0+ZG1hX2RldiwKIAkJCQkgZG1hX3Rlc3QsIGI0M190eGhkcl9zaXplKGRldiksCiAJCQkJIERNQV9UT19ERVZJQ0UpOwogCX0KQEAgLTExODksNyArMTIwMiw3IEBACiAKIAltZXRhX2hkci0+ZG1hYWRkciA9IG1hcF9kZXNjYnVmZmVyKHJpbmcsICh1bnNpZ25lZCBjaGFyICopaGVhZGVyLAogCQkJCQkgICBoZHJzaXplLCAxKTsKLQlpZiAoYjQzX2RtYV9tYXBwaW5nX2Vycm9yKHJpbmcsIG1ldGFfaGRyLT5kbWFhZGRyLCBoZHJzaXplKSkgeworCWlmIChiNDNfZG1hX21hcHBpbmdfZXJyb3IocmluZywgbWV0YV9oZHItPmRtYWFkZHIsIGhkcnNpemUsIDEpKSB7CiAJCXJpbmctPmN1cnJlbnRfc2xvdCA9IG9sZF90b3Bfc2xvdDsKIAkJcmluZy0+dXNlZF9zbG90cyA9IG9sZF91c2VkX3Nsb3RzOwogCQlyZXR1cm4gLUVJTzsKQEAgLTEyMDgsNyArMTIyMSw3IEBACiAKIAltZXRhLT5kbWFhZGRyID0gbWFwX2Rlc2NidWZmZXIocmluZywgc2tiLT5kYXRhLCBza2ItPmxlbiwgMSk7CiAJLyogY3JlYXRlIGEgYm91bmNlIGJ1ZmZlciBpbiB6b25lX2RtYSBvbiBtYXBwaW5nIGZhaWx1cmUuICovCi0JaWYgKGI0M19kbWFfbWFwcGluZ19lcnJvcihyaW5nLCBtZXRhLT5kbWFhZGRyLCBza2ItPmxlbikpIHsKKwlpZiAoYjQzX2RtYV9tYXBwaW5nX2Vycm9yKHJpbmcsIG1ldGEtPmRtYWFkZHIsIHNrYi0+bGVuLCAxKSkgewogCQlib3VuY2Vfc2tiID0gX19kZXZfYWxsb2Nfc2tiKHNrYi0+bGVuLCBHRlBfQVRPTUlDIHwgR0ZQX0RNQSk7CiAJCWlmICghYm91bmNlX3NrYikgewogCQkJcmluZy0+Y3VycmVudF9zbG90ID0gb2xkX3RvcF9zbG90OwpAQCAtMTIyMiw3ICsxMjM1LDcgQEAKIAkJc2tiID0gYm91bmNlX3NrYjsKIAkJbWV0YS0+c2tiID0gc2tiOwogCQltZXRhLT5kbWFhZGRyID0gbWFwX2Rlc2NidWZmZXIocmluZywgc2tiLT5kYXRhLCBza2ItPmxlbiwgMSk7Ci0JCWlmIChiNDNfZG1hX21hcHBpbmdfZXJyb3IocmluZywgbWV0YS0+ZG1hYWRkciwgc2tiLT5sZW4pKSB7CisJCWlmIChiNDNfZG1hX21hcHBpbmdfZXJyb3IocmluZywgbWV0YS0+ZG1hYWRkciwgc2tiLT5sZW4sIDEpKSB7CiAJCQlyaW5nLT5jdXJyZW50X3Nsb3QgPSBvbGRfdG9wX3Nsb3Q7CiAJCQlyaW5nLT51c2VkX3Nsb3RzID0gb2xkX3VzZWRfc2xvdHM7CiAJCQllcnIgPSAtRUlPOwpAQCAtMTMzNyw2ICsxMzUwLDcgQEAKIAlyZXR1cm4gZXJyOwogfQogCisvKiBDYWxsZWQgd2l0aCBJUlFzIGRpc2FibGVkLiAqLwogdm9pZCBiNDNfZG1hX2hhbmRsZV90eHN0YXR1cyhzdHJ1Y3QgYjQzX3dsZGV2ICpkZXYsCiAJCQkgICAgIGNvbnN0IHN0cnVjdCBiNDNfdHhzdGF0dXMgKnN0YXR1cykKIHsKQEAgLTEzNDksOCArMTM2Myw4IEBACiAJcmluZyA9IHBhcnNlX2Nvb2tpZShkZXYsIHN0YXR1cy0+Y29va2llLCAmc2xvdCk7CiAJaWYgKHVubGlrZWx5KCFyaW5nKSkKIAkJcmV0dXJuOwotCUI0M19XQVJOX09OKCFpcnFzX2Rpc2FibGVkKCkpOwotCXNwaW5fbG9jaygmcmluZy0+bG9jayk7CisKKwlzcGluX2xvY2soJnJpbmctPmxvY2spOyAvKiBJUlFzIGFyZSBhbHJlYWR5IGRpc2FibGVkLiAqLwogCiAJQjQzX1dBUk5fT04oIXJpbmctPnR4KTsKIAlvcHMgPSByaW5nLT5vcHM7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDMvbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQzL21haW4uYwppbmRleCA1MWRmY2UxLi5jNzNhNzViIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDMvbWFpbi5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0My9tYWluLmMKQEAgLTIwNDksNyArMjA0OSw2IEBACiB7CiAJZGV2LT5tYWNfc3VzcGVuZGVkLS07CiAJQjQzX1dBUk5fT04oZGV2LT5tYWNfc3VzcGVuZGVkIDwgMCk7Ci0JQjQzX1dBUk5fT04oaXJxc19kaXNhYmxlZCgpKTsKIAlpZiAoZGV2LT5tYWNfc3VzcGVuZGVkID09IDApIHsKIAkJYjQzX3dyaXRlMzIoZGV2LCBCNDNfTU1JT19NQUNDVEwsCiAJCQkgICAgYjQzX3JlYWQzMihkZXYsIEI0M19NTUlPX01BQ0NUTCkKQEAgLTIwNzUsNyArMjA3NCw2IEBACiAJdTMyIHRtcDsKIAogCW1pZ2h0X3NsZWVwKCk7Ci0JQjQzX1dBUk5fT04oaXJxc19kaXNhYmxlZCgpKTsKIAlCNDNfV0FSTl9PTihkZXYtPm1hY19zdXNwZW5kZWQgPCAwKTsKIAogCWlmIChkZXYtPm1hY19zdXNwZW5kZWQgPT0gMCkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQzL3BjbWNpYS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQzL3BjbWNpYS5jCmluZGV4IGI3OWE2YmQuLjM3MWU0YTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0My9wY21jaWEuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDMvcGNtY2lhLmMKQEAgLTkxLDYgKzkxLDggQEAKIAogCWRldi0+Y29uZi5Db25maWdCYXNlID0gcGFyc2UuY29uZmlnLmJhc2U7CiAJZGV2LT5jb25mLlByZXNlbnQgPSBwYXJzZS5jb25maWcucm1hc2tbMF07CisJZGV2LT5jb25mLkF0dHJpYnV0ZXMgPSBDT05GX0VOQUJMRV9JUlE7CisJZGV2LT5jb25mLkludFR5cGUgPSBJTlRfTUVNT1JZX0FORF9JTzsKIAogCWRldi0+aW8uQmFzZVBvcnQyID0gMDsKIAlkZXYtPmlvLk51bVBvcnRzMiA9IDA7CkBAIC0xMTIsOCArMTE0LDggQEAKIAlpZiAocmVzICE9IENTX1NVQ0NFU1MpCiAJCWdvdG8gZXJyX2Rpc2FibGU7CiAKLQlkZXYtPmlycS5BdHRyaWJ1dGVzID0gSVJRX1RZUEVfRFlOQU1JQ19TSEFSSU5HIHwgSVJRX0ZJUlNUX1NIQVJFRDsKLQlkZXYtPmlycS5JUlFJbmZvMSA9IElSUV9MRVZFTF9JRCB8IElSUV9TSEFSRV9JRDsKKwlkZXYtPmlycS5BdHRyaWJ1dGVzID0gSVJRX1RZUEVfRFlOQU1JQ19TSEFSSU5HOworCWRldi0+aXJxLklSUUluZm8xID0gSVJRX0xFVkVMX0lEOwogCWRldi0+aXJxLkhhbmRsZXIgPSBOVUxMOyAvKiBUaGUgaGFuZGxlciBpcyByZWdpc3RlcmVkIGxhdGVyLiAqLwogCWRldi0+aXJxLkluc3RhbmNlID0gTlVMTDsKIAlyZXMgPSBwY21jaWFfcmVxdWVzdF9pcnEoZGV2LCAmZGV2LT5pcnEpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQzL3BoeS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQzL3BoeS5jCmluZGV4IDcxNTA3YjIuLjU3NWM1NDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0My9waHkuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDMvcGh5LmMKQEAgLTg2MCw3ICs4NjAsNyBAQAogCWI0M19waHlfd3JpdGUoZGV2LCBCNDNfUEhZX09GRE0oMHhCQiksCiAJCShiNDNfcGh5X3JlYWQoZGV2LCBCNDNfUEhZX09GRE0oMHhCQikpICYgMHhGMDAwKSB8IDB4MDA1Myk7CiAJYjQzX3BoeV93cml0ZShkZXYsIEI0M19QSFlfT0ZETTYxLAotCQkoYjQzX3BoeV9yZWFkKGRldiwgQjQzX1BIWV9PRkRNNjEgJiAweEZFMUYpKSB8IDB4MDEyMCk7CisJCShiNDNfcGh5X3JlYWQoZGV2LCBCNDNfUEhZX09GRE02MSkgJiAweEZFMUYpIHwgMHgwMTIwKTsKIAliNDNfcGh5X3dyaXRlKGRldiwgQjQzX1BIWV9PRkRNKDB4MTMpLAogCQkoYjQzX3BoeV9yZWFkKGRldiwgQjQzX1BIWV9PRkRNKDB4MTMpKSAmIDB4MEZGRikgfCAweDMwMDApOwogCWI0M19waHlfd3JpdGUoZGV2LCBCNDNfUEhZX09GRE0oMHgxNCksCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDNsZWdhY3kvZG1hLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDNsZWdhY3kvZG1hLmMKaW5kZXggZTg3YjQyNy4uYzk5MGY4NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQzbGVnYWN5L2RtYS5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0M2xlZ2FjeS9kbWEuYwpAQCAtMzkzLDExICszOTMsMTEgQEAKIAlkbWFfYWRkcl90IGRtYWFkZHI7CiAKIAlpZiAodHgpCi0JCWRtYWFkZHIgPSBkbWFfbWFwX3NpbmdsZShyaW5nLT5kZXYtPmRldi0+ZGV2LAorCQlkbWFhZGRyID0gZG1hX21hcF9zaW5nbGUocmluZy0+ZGV2LT5kZXYtPmRtYV9kZXYsCiAJCQkJCSBidWYsIGxlbiwKIAkJCQkJIERNQV9UT19ERVZJQ0UpOwogCWVsc2UKLQkJZG1hYWRkciA9IGRtYV9tYXBfc2luZ2xlKHJpbmctPmRldi0+ZGV2LT5kZXYsCisJCWRtYWFkZHIgPSBkbWFfbWFwX3NpbmdsZShyaW5nLT5kZXYtPmRldi0+ZG1hX2RldiwKIAkJCQkJIGJ1ZiwgbGVuLAogCQkJCQkgRE1BX0ZST01fREVWSUNFKTsKIApAQCAtNDExLDExICs0MTEsMTEgQEAKIAkJICAgICAgaW50IHR4KQogewogCWlmICh0eCkKLQkJZG1hX3VubWFwX3NpbmdsZShyaW5nLT5kZXYtPmRldi0+ZGV2LAorCQlkbWFfdW5tYXBfc2luZ2xlKHJpbmctPmRldi0+ZGV2LT5kbWFfZGV2LAogCQkJCSBhZGRyLCBsZW4sCiAJCQkJIERNQV9UT19ERVZJQ0UpOwogCWVsc2UKLQkJZG1hX3VubWFwX3NpbmdsZShyaW5nLT5kZXYtPmRldi0+ZGV2LAorCQlkbWFfdW5tYXBfc2luZ2xlKHJpbmctPmRldi0+ZGV2LT5kbWFfZGV2LAogCQkJCSBhZGRyLCBsZW4sCiAJCQkJIERNQV9GUk9NX0RFVklDRSk7CiB9CkBAIC00MjcsNyArNDI3LDcgQEAKIHsKIAlCNDNsZWdhY3lfV0FSTl9PTihyaW5nLT50eCk7CiAKLQlkbWFfc3luY19zaW5nbGVfZm9yX2NwdShyaW5nLT5kZXYtPmRldi0+ZGV2LAorCWRtYV9zeW5jX3NpbmdsZV9mb3JfY3B1KHJpbmctPmRldi0+ZGV2LT5kbWFfZGV2LAogCQkJCWFkZHIsIGxlbiwgRE1BX0ZST01fREVWSUNFKTsKIH0KIApAQCAtNDM4LDcgKzQzOCw3IEBACiB7CiAJQjQzbGVnYWN5X1dBUk5fT04ocmluZy0+dHgpOwogCi0JZG1hX3N5bmNfc2luZ2xlX2Zvcl9kZXZpY2UocmluZy0+ZGV2LT5kZXYtPmRldiwKKwlkbWFfc3luY19zaW5nbGVfZm9yX2RldmljZShyaW5nLT5kZXYtPmRldi0+ZG1hX2RldiwKIAkJCQkgICBhZGRyLCBsZW4sIERNQV9GUk9NX0RFVklDRSk7CiB9CiAKQEAgLTQ1OCw5ICs0NTgsOSBAQAogCiBzdGF0aWMgaW50IGFsbG9jX3JpbmdtZW1vcnkoc3RydWN0IGI0M2xlZ2FjeV9kbWFyaW5nICpyaW5nKQogewotCXN0cnVjdCBkZXZpY2UgKmRldiA9IHJpbmctPmRldi0+ZGV2LT5kZXY7CisJc3RydWN0IGRldmljZSAqZG1hX2RldiA9IHJpbmctPmRldi0+ZGV2LT5kbWFfZGV2OwogCi0JcmluZy0+ZGVzY2Jhc2UgPSBkbWFfYWxsb2NfY29oZXJlbnQoZGV2LCBCNDNsZWdhY3lfRE1BX1JJTkdNRU1TSVpFLAorCXJpbmctPmRlc2NiYXNlID0gZG1hX2FsbG9jX2NvaGVyZW50KGRtYV9kZXYsIEI0M2xlZ2FjeV9ETUFfUklOR01FTVNJWkUsCiAJCQkJCSAgICAmKHJpbmctPmRtYWJhc2UpLCBHRlBfS0VSTkVMKTsKIAlpZiAoIXJpbmctPmRlc2NiYXNlKSB7CiAJCWI0M2xlZ2FjeWVycihyaW5nLT5kZXYtPndsLCAiRE1BIHJpbmdtZW1vcnkgYWxsb2NhdGlvbiIKQEAgLTQ3NCw5ICs0NzQsOSBAQAogCiBzdGF0aWMgdm9pZCBmcmVlX3JpbmdtZW1vcnkoc3RydWN0IGI0M2xlZ2FjeV9kbWFyaW5nICpyaW5nKQogewotCXN0cnVjdCBkZXZpY2UgKmRldiA9IHJpbmctPmRldi0+ZGV2LT5kZXY7CisJc3RydWN0IGRldmljZSAqZG1hX2RldiA9IHJpbmctPmRldi0+ZGV2LT5kbWFfZGV2OwogCi0JZG1hX2ZyZWVfY29oZXJlbnQoZGV2LCBCNDNsZWdhY3lfRE1BX1JJTkdNRU1TSVpFLAorCWRtYV9mcmVlX2NvaGVyZW50KGRtYV9kZXYsIEI0M2xlZ2FjeV9ETUFfUklOR01FTVNJWkUsCiAJCQkgIHJpbmctPmRlc2NiYXNlLCByaW5nLT5kbWFiYXNlKTsKIH0KIApAQCAtNTg1LDggKzU4NSw5IEBACiAKIC8qIENoZWNrIGlmIGEgRE1BIG1hcHBpbmcgYWRkcmVzcyBpcyBpbnZhbGlkLiAqLwogc3RhdGljIGJvb2wgYjQzbGVnYWN5X2RtYV9tYXBwaW5nX2Vycm9yKHN0cnVjdCBiNDNsZWdhY3lfZG1hcmluZyAqcmluZywKLQkJCQkJZG1hX2FkZHJfdCBhZGRyLAotCQkJCQlzaXplX3QgYnVmZmVyc2l6ZSkKKwkJCQkJIGRtYV9hZGRyX3QgYWRkciwKKwkJCQkJIHNpemVfdCBidWZmZXJzaXplLAorCQkJCQkgYm9vbCBkbWFfdG9fZGV2aWNlKQogewogCWlmICh1bmxpa2VseShkbWFfbWFwcGluZ19lcnJvcihhZGRyKSkpCiAJCXJldHVybiAxOwpAQCAtNTk0LDExICs1OTUsMTEgQEAKIAlzd2l0Y2ggKHJpbmctPnR5cGUpIHsKIAljYXNlIEI0M2xlZ2FjeV9ETUFfMzBCSVQ6CiAJCWlmICgodTY0KWFkZHIgKyBidWZmZXJzaXplID4gKDFVTEwgPDwgMzApKQotCQkJcmV0dXJuIDE7CisJCQlnb3RvIGFkZHJlc3NfZXJyb3I7CiAJCWJyZWFrOwogCWNhc2UgQjQzbGVnYWN5X0RNQV8zMkJJVDoKIAkJaWYgKCh1NjQpYWRkciArIGJ1ZmZlcnNpemUgPiAoMVVMTCA8PCAzMikpCi0JCQlyZXR1cm4gMTsKKwkJCWdvdG8gYWRkcmVzc19lcnJvcjsKIAkJYnJlYWs7CiAJY2FzZSBCNDNsZWdhY3lfRE1BXzY0QklUOgogCQkvKiBDdXJyZW50bHkgd2UgY2FuJ3QgaGF2ZSBhZGRyZXNzZXMgYmV5b25kIDY0IGJpdHMgaW4gdGhlIGtlcm5lbC4gKi8KQEAgLTYwNyw2ICs2MDgsMTIgQEAKIAogCS8qIFRoZSBhZGRyZXNzIGlzIE9LLiAqLwogCXJldHVybiAwOworCithZGRyZXNzX2Vycm9yOgorCS8qIFdlIGNhbid0IHN1cHBvcnQgdGhpcyBhZGRyZXNzLiBVbm1hcCBpdCBhZ2Fpbi4gKi8KKwl1bm1hcF9kZXNjYnVmZmVyKHJpbmcsIGFkZHIsIGJ1ZmZlcnNpemUsIGRtYV90b19kZXZpY2UpOworCisJcmV0dXJuIDE7CiB9CiAKIHN0YXRpYyBpbnQgc2V0dXBfcnhfZGVzY2J1ZmZlcihzdHJ1Y3QgYjQzbGVnYWN5X2RtYXJpbmcgKnJpbmcsCkBAIC02MjYsNyArNjMzLDcgQEAKIAkJcmV0dXJuIC1FTk9NRU07CiAJZG1hYWRkciA9IG1hcF9kZXNjYnVmZmVyKHJpbmcsIHNrYi0+ZGF0YSwKIAkJCQkgcmluZy0+cnhfYnVmZmVyc2l6ZSwgMCk7Ci0JaWYgKGI0M2xlZ2FjeV9kbWFfbWFwcGluZ19lcnJvcihyaW5nLCBkbWFhZGRyLCByaW5nLT5yeF9idWZmZXJzaXplKSkgeworCWlmIChiNDNsZWdhY3lfZG1hX21hcHBpbmdfZXJyb3IocmluZywgZG1hYWRkciwgcmluZy0+cnhfYnVmZmVyc2l6ZSwgMCkpIHsKIAkJLyogdWdoLiB0cnkgdG8gcmVhbGxvYyBpbiB6b25lX2RtYSAqLwogCQlnZnBfZmxhZ3MgfD0gR0ZQX0RNQTsKIApAQCAtNjM5LDcgKzY0Niw3IEBACiAJCQkJCSByaW5nLT5yeF9idWZmZXJzaXplLCAwKTsKIAl9CiAKLQlpZiAoYjQzbGVnYWN5X2RtYV9tYXBwaW5nX2Vycm9yKHJpbmcsIGRtYWFkZHIsIHJpbmctPnJ4X2J1ZmZlcnNpemUpKSB7CisJaWYgKGI0M2xlZ2FjeV9kbWFfbWFwcGluZ19lcnJvcihyaW5nLCBkbWFhZGRyLCByaW5nLT5yeF9idWZmZXJzaXplLCAwKSkgewogCQlkZXZfa2ZyZWVfc2tiX2FueShza2IpOwogCQlyZXR1cm4gLUVJTzsKIAl9CkBAIC04ODYsMTIgKzg5MywxMiBAQAogCQkJZ290byBlcnJfa2ZyZWVfbWV0YTsKIAogCQkvKiB0ZXN0IGZvciBhYmlsaXR5IHRvIGRtYSB0byB0eGhkcl9jYWNoZSAqLwotCQlkbWFfdGVzdCA9IGRtYV9tYXBfc2luZ2xlKGRldi0+ZGV2LT5kZXYsIHJpbmctPnR4aGRyX2NhY2hlLAorCQlkbWFfdGVzdCA9IGRtYV9tYXBfc2luZ2xlKGRldi0+ZGV2LT5kbWFfZGV2LCByaW5nLT50eGhkcl9jYWNoZSwKIAkJCQkJICBzaXplb2Yoc3RydWN0IGI0M2xlZ2FjeV90eGhkcl9mdzMpLAogCQkJCQkgIERNQV9UT19ERVZJQ0UpOwogCiAJCWlmIChiNDNsZWdhY3lfZG1hX21hcHBpbmdfZXJyb3IocmluZywgZG1hX3Rlc3QsCi0JCQkJCXNpemVvZihzdHJ1Y3QgYjQzbGVnYWN5X3R4aGRyX2Z3MykpKSB7CisJCQkJCXNpemVvZihzdHJ1Y3QgYjQzbGVnYWN5X3R4aGRyX2Z3MyksIDEpKSB7CiAJCQkvKiB1Z2ggcmVhbGxvYyAqLwogCQkJa2ZyZWUocmluZy0+dHhoZHJfY2FjaGUpOwogCQkJcmluZy0+dHhoZHJfY2FjaGUgPSBrY2FsbG9jKG5yX3Nsb3RzLApAQCAtOTAwLDE3ICs5MDcsMTcgQEAKIAkJCWlmICghcmluZy0+dHhoZHJfY2FjaGUpCiAJCQkJZ290byBlcnJfa2ZyZWVfbWV0YTsKIAotCQkJZG1hX3Rlc3QgPSBkbWFfbWFwX3NpbmdsZShkZXYtPmRldi0+ZGV2LAorCQkJZG1hX3Rlc3QgPSBkbWFfbWFwX3NpbmdsZShkZXYtPmRldi0+ZG1hX2RldiwKIAkJCQkJcmluZy0+dHhoZHJfY2FjaGUsCiAJCQkJCXNpemVvZihzdHJ1Y3QgYjQzbGVnYWN5X3R4aGRyX2Z3MyksCiAJCQkJCURNQV9UT19ERVZJQ0UpOwogCiAJCQlpZiAoYjQzbGVnYWN5X2RtYV9tYXBwaW5nX2Vycm9yKHJpbmcsIGRtYV90ZXN0LAotCQkJCQlzaXplb2Yoc3RydWN0IGI0M2xlZ2FjeV90eGhkcl9mdzMpKSkKKwkJCQkJc2l6ZW9mKHN0cnVjdCBiNDNsZWdhY3lfdHhoZHJfZnczKSwgMSkpCiAJCQkJZ290byBlcnJfa2ZyZWVfdHhoZHJfY2FjaGU7CiAJCX0KIAotCQlkbWFfdW5tYXBfc2luZ2xlKGRldi0+ZGV2LT5kZXYsCisJCWRtYV91bm1hcF9zaW5nbGUoZGV2LT5kZXYtPmRtYV9kZXYsCiAJCQkJIGRtYV90ZXN0LCBzaXplb2Yoc3RydWN0IGI0M2xlZ2FjeV90eGhkcl9mdzMpLAogCQkJCSBETUFfVE9fREVWSUNFKTsKIAl9CkBAIC0xMjM1LDcgKzEyNDIsNyBAQAogCW1ldGFfaGRyLT5kbWFhZGRyID0gbWFwX2Rlc2NidWZmZXIocmluZywgKHVuc2lnbmVkIGNoYXIgKiloZWFkZXIsCiAJCQkJCSAgIHNpemVvZihzdHJ1Y3QgYjQzbGVnYWN5X3R4aGRyX2Z3MyksIDEpOwogCWlmIChiNDNsZWdhY3lfZG1hX21hcHBpbmdfZXJyb3IocmluZywgbWV0YV9oZHItPmRtYWFkZHIsCi0JCQkJCXNpemVvZihzdHJ1Y3QgYjQzbGVnYWN5X3R4aGRyX2Z3MykpKSB7CisJCQkJCXNpemVvZihzdHJ1Y3QgYjQzbGVnYWN5X3R4aGRyX2Z3MyksIDEpKSB7CiAJCXJpbmctPmN1cnJlbnRfc2xvdCA9IG9sZF90b3Bfc2xvdDsKIAkJcmluZy0+dXNlZF9zbG90cyA9IG9sZF91c2VkX3Nsb3RzOwogCQlyZXR1cm4gLUVJTzsKQEAgLTEyNTQsNyArMTI2MSw3IEBACiAKIAltZXRhLT5kbWFhZGRyID0gbWFwX2Rlc2NidWZmZXIocmluZywgc2tiLT5kYXRhLCBza2ItPmxlbiwgMSk7CiAJLyogY3JlYXRlIGEgYm91bmNlIGJ1ZmZlciBpbiB6b25lX2RtYSBvbiBtYXBwaW5nIGZhaWx1cmUuICovCi0JaWYgKGI0M2xlZ2FjeV9kbWFfbWFwcGluZ19lcnJvcihyaW5nLCBtZXRhLT5kbWFhZGRyLCBza2ItPmxlbikpIHsKKwlpZiAoYjQzbGVnYWN5X2RtYV9tYXBwaW5nX2Vycm9yKHJpbmcsIG1ldGEtPmRtYWFkZHIsIHNrYi0+bGVuLCAxKSkgewogCQlib3VuY2Vfc2tiID0gX19kZXZfYWxsb2Nfc2tiKHNrYi0+bGVuLCBHRlBfQVRPTUlDIHwgR0ZQX0RNQSk7CiAJCWlmICghYm91bmNlX3NrYikgewogCQkJcmluZy0+Y3VycmVudF9zbG90ID0gb2xkX3RvcF9zbG90OwpAQCAtMTI2OCw3ICsxMjc1LDcgQEAKIAkJc2tiID0gYm91bmNlX3NrYjsKIAkJbWV0YS0+c2tiID0gc2tiOwogCQltZXRhLT5kbWFhZGRyID0gbWFwX2Rlc2NidWZmZXIocmluZywgc2tiLT5kYXRhLCBza2ItPmxlbiwgMSk7Ci0JCWlmIChiNDNsZWdhY3lfZG1hX21hcHBpbmdfZXJyb3IocmluZywgbWV0YS0+ZG1hYWRkciwgc2tiLT5sZW4pKSB7CisJCWlmIChiNDNsZWdhY3lfZG1hX21hcHBpbmdfZXJyb3IocmluZywgbWV0YS0+ZG1hYWRkciwgc2tiLT5sZW4sIDEpKSB7CiAJCQlyaW5nLT5jdXJyZW50X3Nsb3QgPSBvbGRfdG9wX3Nsb3Q7CiAJCQlyaW5nLT51c2VkX3Nsb3RzID0gb2xkX3VzZWRfc2xvdHM7CiAJCQllcnIgPSAtRUlPOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQzbGVnYWN5L21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0M2xlZ2FjeS9tYWluLmMKaW5kZXggNWYzZjM0ZS4uMGY3YTZlNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQzbGVnYWN5L21haW4uYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDNsZWdhY3kvbWFpbi5jCkBAIC0xNDg4LDYgKzE0ODgsNyBAQAogCX0KIAlpZiAoIWZ3LT5pbml0dmFscykgewogCQlzd2l0Y2ggKGRldi0+cGh5LnR5cGUpIHsKKwkJY2FzZSBCNDNsZWdhY3lfUEhZVFlQRV9COgogCQljYXNlIEI0M2xlZ2FjeV9QSFlUWVBFX0c6CiAJCQlpZiAoKHJldiA+PSA1KSAmJiAocmV2IDw9IDEwKSkKIAkJCQlmaWxlbmFtZSA9ICJiMGcwaW5pdHZhbHM1IjsKQEAgLTE1MDUsNiArMTUwNiw3IEBACiAJfQogCWlmICghZnctPmluaXR2YWxzX2JhbmQpIHsKIAkJc3dpdGNoIChkZXYtPnBoeS50eXBlKSB7CisJCWNhc2UgQjQzbGVnYWN5X1BIWVRZUEVfQjoKIAkJY2FzZSBCNDNsZWdhY3lfUEhZVFlQRV9HOgogCQkJaWYgKChyZXYgPj0gNSkgJiYgKHJldiA8PSAxMCkpCiAJCQkJZmlsZW5hbWUgPSAiYjBnMGJzaW5pdHZhbHM1IjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2hvc3RhcC9ob3N0YXBfODAyMTFfcnguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2hvc3RhcC9ob3N0YXBfODAyMTFfcnguYwppbmRleCA0OTk3OGJkLi40ZmQ3MzgwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ob3N0YXAvaG9zdGFwXzgwMjExX3J4LmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaG9zdGFwL2hvc3RhcF84MDIxMV9yeC5jCkBAIC02MzUsNyArNjM1LDYgQEAKIHsKIAlzdHJ1Y3QgaWVlZTgwMjExX2hkcl80YWRkciAqaGRyOwogCWludCByZXMsIGhkcmxlbjsKLQlERUNMQVJFX01BQ19CVUYobWFjKTsKIAogCWlmIChjcnlwdCA9PSBOVUxMIHx8IGNyeXB0LT5vcHMtPmRlY3J5cHRfbXBkdSA9PSBOVUxMKQogCQlyZXR1cm4gMDsKQEAgLTY0Nyw4ICs2NDYsMTAgQEAKIAkgICAgc3RyY21wKGNyeXB0LT5vcHMtPm5hbWUsICJUS0lQIikgPT0gMCkgewogCQlpZiAobmV0X3JhdGVsaW1pdCgpKSB7CiAJCQlwcmludGsoS0VSTl9ERUJVRyAiJXM6IFRLSVAgY291bnRlcm1lYXN1cmVzOiBkcm9wcGVkICIKLQkJCSAgICAgICAicmVjZWl2ZWQgcGFja2V0IGZyb20gJXNcbiIsCi0JCQkgICAgICAgbG9jYWwtPmRldi0+bmFtZSwgcHJpbnRfbWFjKG1hYywgaGRyLT5hZGRyMikpOworCQkJICAgICAgICJyZWNlaXZlZCBwYWNrZXQgZnJvbSAiIE1BQ19GTVQgIlxuIiwKKwkJCSAgICAgICBsb2NhbC0+ZGV2LT5uYW1lLAorCQkJICAgICAgIGhkci0+YWRkcjJbMF0sIGhkci0+YWRkcjJbMV0sIGhkci0+YWRkcjJbMl0sCisJCQkgICAgICAgaGRyLT5hZGRyMlszXSwgaGRyLT5hZGRyMls0XSwgaGRyLT5hZGRyMls1XSk7CiAJCX0KIAkJcmV0dXJuIC0xOwogCX0KQEAgLTY1Nyw5ICs2NTgsMTIgQEAKIAlyZXMgPSBjcnlwdC0+b3BzLT5kZWNyeXB0X21wZHUoc2tiLCBoZHJsZW4sIGNyeXB0LT5wcml2KTsKIAlhdG9taWNfZGVjKCZjcnlwdC0+cmVmY250KTsKIAlpZiAocmVzIDwgMCkgewotCQlwcmludGsoS0VSTl9ERUJVRyAiJXM6IGRlY3J5cHRpb24gZmFpbGVkIChTQT0lcyIKKwkJcHJpbnRrKEtFUk5fREVCVUcgIiVzOiBkZWNyeXB0aW9uIGZhaWxlZCAoU0E9IiBNQUNfRk1UCiAJCSAgICAgICAiKSByZXM9JWRcbiIsCi0JCSAgICAgICBsb2NhbC0+ZGV2LT5uYW1lLCBwcmludF9tYWMobWFjLCBoZHItPmFkZHIyKSwgcmVzKTsKKwkJICAgICAgIGxvY2FsLT5kZXYtPm5hbWUsCisJCSAgICAgICBoZHItPmFkZHIyWzBdLCBoZHItPmFkZHIyWzFdLCBoZHItPmFkZHIyWzJdLAorCQkgICAgICAgaGRyLT5hZGRyMlszXSwgaGRyLT5hZGRyMls0XSwgaGRyLT5hZGRyMls1XSwKKwkJICAgICAgIHJlcyk7CiAJCWxvY2FsLT5jb21tX3RhbGxpZXMucnhfZGlzY2FyZHNfd2VwX3VuZGVjcnlwdGFibGUrKzsKIAkJcmV0dXJuIC0xOwogCX0KQEAgLTcyMSw3ICs3MjUsNiBAQAogCXN0cnVjdCBpZWVlODAyMTFfY3J5cHRfZGF0YSAqY3J5cHQgPSBOVUxMOwogCXZvaWQgKnN0YSA9IE5VTEw7CiAJaW50IGtleWlkeCA9IDA7Ci0JREVDTEFSRV9NQUNfQlVGKG1hYyk7CiAKIAlpZmFjZSA9IG5ldGRldl9wcml2KGRldik7CiAJbG9jYWwgPSBpZmFjZS0+bG9jYWw7CkBAIC03OTgsOCArODAxLDEwIEBACiAJCQkgKiBmcmFtZXMgc2lsZW50bHkgaW5zdGVhZCBvZiBmaWxsaW5nIHN5c3RlbSBsb2cgd2l0aAogCQkJICogdGhlc2UgcmVwb3J0cy4gKi8KIAkJCXByaW50ayhLRVJOX0RFQlVHICIlczogV0VQIGRlY3J5cHRpb24gZmFpbGVkIChub3Qgc2V0KSIKLQkJCSAgICAgICAiIChTQT0lcylcbiIsCi0JCQkgICAgICAgbG9jYWwtPmRldi0+bmFtZSwgcHJpbnRfbWFjKG1hYywgaGRyLT5hZGRyMikpOworCQkJICAgICAgICIgKFNBPSIgTUFDX0ZNVCAiKVxuIiwKKwkJCSAgICAgICBsb2NhbC0+ZGV2LT5uYW1lLAorCQkJICAgICAgIGhkci0+YWRkcjJbMF0sIGhkci0+YWRkcjJbMV0sIGhkci0+YWRkcjJbMl0sCisJCQkgICAgICAgaGRyLT5hZGRyMlszXSwgaGRyLT5hZGRyMls0XSwgaGRyLT5hZGRyMls1XSk7CiAjZW5kaWYKIAkJCWxvY2FsLT5jb21tX3RhbGxpZXMucnhfZGlzY2FyZHNfd2VwX3VuZGVjcnlwdGFibGUrKzsKIAkJCWdvdG8gcnhfZHJvcHBlZDsKQEAgLTgxMyw4ICs4MTgsOSBAQAogCQkgICAgKGtleWlkeCA9IGhvc3RhcF9yeF9mcmFtZV9kZWNyeXB0KGxvY2FsLCBza2IsIGNyeXB0KSkgPCAwKQogCQl7CiAJCQlwcmludGsoS0VSTl9ERUJVRyAiJXM6IGZhaWxlZCB0byBkZWNyeXB0IG1nbXQ6OmF1dGggIgotCQkJICAgICAgICJmcm9tICVzXG4iLCBkZXYtPm5hbWUsCi0JCQkgICAgICAgcHJpbnRfbWFjKG1hYywgaGRyLT5hZGRyMikpOworCQkJICAgICAgICJmcm9tICIgTUFDX0ZNVCAiXG4iLCBkZXYtPm5hbWUsCisJCQkgICAgICAgaGRyLT5hZGRyMlswXSwgaGRyLT5hZGRyMlsxXSwgaGRyLT5hZGRyMlsyXSwKKwkJCSAgICAgICBoZHItPmFkZHIyWzNdLCBoZHItPmFkZHIyWzRdLCBoZHItPmFkZHIyWzVdKTsKIAkJCS8qIFRPRE86IGNvdWxkIGluZm9ybSBob3N0YXBkIGFib3V0IHRoaXMgc28gdGhhdCBpdAogCQkJICogY291bGQgc2VuZCBhdXRoIGZhaWx1cmUgcmVwb3J0ICovCiAJCQlnb3RvIHJ4X2Ryb3BwZWQ7CkBAIC05ODIsOCArOTg4LDEwIEBACiAJCQkgICAgICAgInVuZW5jcnlwdGVkIEVBUE9MIGZyYW1lXG4iLCBsb2NhbC0+ZGV2LT5uYW1lKTsKIAkJfSBlbHNlIHsKIAkJCXByaW50ayhLRVJOX0RFQlVHICIlczogZW5jcnlwdGlvbiBjb25maWd1cmVkLCBidXQgUlggIgotCQkJICAgICAgICJmcmFtZSBub3QgZW5jcnlwdGVkIChTQT0lcylcbiIsCi0JCQkgICAgICAgbG9jYWwtPmRldi0+bmFtZSwgcHJpbnRfbWFjKG1hYywgaGRyLT5hZGRyMikpOworCQkJICAgICAgICJmcmFtZSBub3QgZW5jcnlwdGVkIChTQT0iIE1BQ19GTVQgIilcbiIsCisJCQkgICAgICAgbG9jYWwtPmRldi0+bmFtZSwKKwkJCSAgICAgICBoZHItPmFkZHIyWzBdLCBoZHItPmFkZHIyWzFdLCBoZHItPmFkZHIyWzJdLAorCQkJICAgICAgIGhkci0+YWRkcjJbM10sIGhkci0+YWRkcjJbNF0sIGhkci0+YWRkcjJbNV0pOwogCQkJZ290byByeF9kcm9wcGVkOwogCQl9CiAJfQpAQCAtOTkyLDkgKzEwMDAsMTAgQEAKIAkgICAgIWhvc3RhcF9pc19lYXBvbF9mcmFtZShsb2NhbCwgc2tiKSkgewogCQlpZiAobmV0X3JhdGVsaW1pdCgpKSB7CiAJCQlwcmludGsoS0VSTl9ERUJVRyAiJXM6IGRyb3BwZWQgdW5lbmNyeXB0ZWQgUlggZGF0YSAiCi0JCQkgICAgICAgImZyYW1lIGZyb20gJXMiCi0JCQkgICAgICAgIiAoZHJvcF91bmVuY3J5cHRlZD0xKVxuIiwKLQkJCSAgICAgICBkZXYtPm5hbWUsIHByaW50X21hYyhtYWMsIGhkci0+YWRkcjIpKTsKKwkJCSAgICAgICAiZnJhbWUgZnJvbSAiIE1BQ19GTVQgIiAoZHJvcF91bmVuY3J5cHRlZD0xKVxuIiwKKwkJCSAgICAgICBkZXYtPm5hbWUsCisJCQkgICAgICAgaGRyLT5hZGRyMlswXSwgaGRyLT5hZGRyMlsxXSwgaGRyLT5hZGRyMlsyXSwKKwkJCSAgICAgICBoZHItPmFkZHIyWzNdLCBoZHItPmFkZHIyWzRdLCBoZHItPmFkZHIyWzVdKTsKIAkJfQogCQlnb3RvIHJ4X2Ryb3BwZWQ7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaG9zdGFwL2hvc3RhcF84MDIxMV90eC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaG9zdGFwL2hvc3RhcF84MDIxMV90eC5jCmluZGV4IGU3YWZjM2UuLjkyMWM5ODQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2hvc3RhcC9ob3N0YXBfODAyMTFfdHguYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ob3N0YXAvaG9zdGFwXzgwMjExX3R4LmMKQEAgLTMxNCw3ICszMTQsNiBAQAogCXN0cnVjdCBpZWVlODAyMTFfaGRyXzRhZGRyICpoZHI7CiAJdTE2IGZjOwogCWludCBwcmVmaXhfbGVuLCBwb3N0Zml4X2xlbiwgaGRyX2xlbiwgcmVzOwotCURFQ0xBUkVfTUFDX0JVRihtYWMpOwogCiAJaWZhY2UgPSBuZXRkZXZfcHJpdihza2ItPmRldik7CiAJbG9jYWwgPSBpZmFjZS0+bG9jYWw7CkBAIC0zMjksOCArMzI4LDEwIEBACiAJCWhkciA9IChzdHJ1Y3QgaWVlZTgwMjExX2hkcl80YWRkciAqKSBza2ItPmRhdGE7CiAJCWlmIChuZXRfcmF0ZWxpbWl0KCkpIHsKIAkJCXByaW50ayhLRVJOX0RFQlVHICIlczogVEtJUCBjb3VudGVybWVhc3VyZXM6IGRyb3BwZWQgIgotCQkJICAgICAgICJUWCBwYWNrZXQgdG8gJXNcbiIsCi0JCQkgICAgICAgbG9jYWwtPmRldi0+bmFtZSwgcHJpbnRfbWFjKG1hYywgaGRyLT5hZGRyMSkpOworCQkJICAgICAgICJUWCBwYWNrZXQgdG8gIiBNQUNfRk1UICJcbiIsCisJCQkgICAgICAgbG9jYWwtPmRldi0+bmFtZSwKKwkJCSAgICAgICBoZHItPmFkZHIxWzBdLCBoZHItPmFkZHIxWzFdLCBoZHItPmFkZHIxWzJdLAorCQkJICAgICAgIGhkci0+YWRkcjFbM10sIGhkci0+YWRkcjFbNF0sIGhkci0+YWRkcjFbNV0pOwogCQl9CiAJCWtmcmVlX3NrYihza2IpOwogCQlyZXR1cm4gTlVMTDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2hvc3RhcC9ob3N0YXBfYXAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2hvc3RhcC9ob3N0YXBfYXAuYwppbmRleCBhZDA0MGEzLi4wYWNkOTU4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ob3N0YXAvaG9zdGFwX2FwLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaG9zdGFwL2hvc3RhcF9hcC5jCkBAIC02MzIsNyArNjMyLDYgQEAKIAlfX2xlMTYgKnBvczsKIAlzdHJ1Y3Qgc3RhX2luZm8gKnN0YSA9IE5VTEw7CiAJY2hhciAqdHh0ID0gTlVMTDsKLQlERUNMQVJFX01BQ19CVUYobWFjKTsKIAogCWlmIChhcC0+bG9jYWwtPmhvc3RhcGQpIHsKIAkJZGV2X2tmcmVlX3NrYihza2IpOwpAQCAtNjg0LDEwICs2ODMsMTIgQEAKIAlpZiAoc3RhKQogCQlhdG9taWNfZGVjKCZzdGEtPnVzZXJzKTsKIAlpZiAodHh0KSB7Ci0JCVBERUJVRyhERUJVR19BUCwgIiVzOiAlcyBhdXRoX2NiIC0gYWxnPSVkICIKKwkJUERFQlVHKERFQlVHX0FQLCAiJXM6ICIgTUFDX0ZNVCAiIGF1dGhfY2IgLSBhbGc9JWQgIgogCQkgICAgICAgInRyYW5zIz0lZCBzdGF0dXM9JWQgLSAlc1xuIiwKLQkJICAgICAgIGRldi0+bmFtZSwgcHJpbnRfbWFjKG1hYywgaGRyLT5hZGRyMSksIGF1dGhfYWxnLAotCQkgICAgICAgYXV0aF90cmFuc2FjdGlvbiwgc3RhdHVzLCB0eHQpOworCQkgICAgICAgZGV2LT5uYW1lLAorCQkgICAgICAgaGRyLT5hZGRyMVswXSwgaGRyLT5hZGRyMVsxXSwgaGRyLT5hZGRyMVsyXSwKKwkJICAgICAgIGhkci0+YWRkcjFbM10sIGhkci0+YWRkcjFbNF0sIGhkci0+YWRkcjFbNV0sCisJCSAgICAgICBhdXRoX2FsZywgYXV0aF90cmFuc2FjdGlvbiwgc3RhdHVzLCB0eHQpOwogCX0KIAlkZXZfa2ZyZWVfc2tiKHNrYik7CiB9CkBAIC03MDMsNyArNzA0LDYgQEAKIAlfX2xlMTYgKnBvczsKIAlzdHJ1Y3Qgc3RhX2luZm8gKnN0YSA9IE5VTEw7CiAJY2hhciAqdHh0ID0gTlVMTDsKLQlERUNMQVJFX01BQ19CVUYobWFjKTsKIAogCWlmIChhcC0+bG9jYWwtPmhvc3RhcGQpIHsKIAkJZGV2X2tmcmVlX3NrYihza2IpOwpAQCAtNzU0LDggKzc1NCwxMSBAQAogCWlmIChzdGEpCiAJCWF0b21pY19kZWMoJnN0YS0+dXNlcnMpOwogCWlmICh0eHQpIHsKLQkJUERFQlVHKERFQlVHX0FQLCAiJXM6ICVzIGFzc29jX2NiIC0gJXNcbiIsCi0JCSAgICAgICBkZXYtPm5hbWUsIHByaW50X21hYyhtYWMsIGhkci0+YWRkcjEpLCB0eHQpOworCQlQREVCVUcoREVCVUdfQVAsICIlczogIiBNQUNfRk1UICIgYXNzb2NfY2IgLSAlc1xuIiwKKwkJICAgICAgIGRldi0+bmFtZSwKKwkJICAgICAgIGhkci0+YWRkcjFbMF0sIGhkci0+YWRkcjFbMV0sIGhkci0+YWRkcjFbMl0sCisJCSAgICAgICBoZHItPmFkZHIxWzNdLCBoZHItPmFkZHIxWzRdLCBoZHItPmFkZHIxWzVdLAorCQkgICAgICAgdHh0KTsKIAl9CiAJZGV2X2tmcmVlX3NrYihza2IpOwogfQpAQCAtNzY3LDcgKzc3MCw2IEBACiAJc3RydWN0IGFwX2RhdGEgKmFwID0gZGF0YTsKIAlzdHJ1Y3QgaWVlZTgwMjExX2hkcl80YWRkciAqaGRyOwogCXN0cnVjdCBzdGFfaW5mbyAqc3RhOwotCURFQ0xBUkVfTUFDX0JVRihtYWMpOwogCiAJaWYgKHNrYi0+bGVuIDwgMjQpCiAJCWdvdG8gZmFpbDsKQEAgLTc3OSw5ICs3ODEsMTEgQEAKIAkJCXN0YS0+ZmxhZ3MgJj0gfldMQU5fU1RBX1BFTkRJTkdfUE9MTDsKIAkJc3Bpbl91bmxvY2soJmFwLT5zdGFfdGFibGVfbG9jayk7CiAJfSBlbHNlIHsKLQkJUERFQlVHKERFQlVHX0FQLCAiJXM6IFNUQSAlcyIKKwkJUERFQlVHKERFQlVHX0FQLCAiJXM6IFNUQSAiIE1BQ19GTVQKIAkJICAgICAgICIgZGlkIG5vdCBBQ0sgYWN0aXZpdHkgcG9sbCBmcmFtZVxuIiwKLQkJICAgICAgIGFwLT5sb2NhbC0+ZGV2LT5uYW1lLCBwcmludF9tYWMobWFjLCBoZHItPmFkZHIxKSk7CisJCSAgICAgICBhcC0+bG9jYWwtPmRldi0+bmFtZSwKKwkJICAgICAgIGhkci0+YWRkcjFbMF0sIGhkci0+YWRkcjFbMV0sIGhkci0+YWRkcjFbMl0sCisJCSAgICAgICBoZHItPmFkZHIxWzNdLCBoZHItPmFkZHIxWzRdLCBoZHItPmFkZHIxWzVdKTsKIAl9CiAKICBmYWlsOgpAQCAtMTMwNiw3ICsxMzEwLDYgQEAKIAlzdHJ1Y3Qgc3RhX2luZm8gKnN0YSA9IE5VTEw7CiAJc3RydWN0IGllZWU4MDIxMV9jcnlwdF9kYXRhICpjcnlwdDsKIAljaGFyICp0eHQgPSAiIjsKLQlERUNMQVJFX01BQ19CVUYobWFjKTsKIAogCWxlbiA9IHNrYi0+bGVuIC0gSUVFRTgwMjExX01HTVRfSERSX0xFTjsKIApAQCAtMTMxNSw4ICsxMzE4LDkgQEAKIAogCWlmIChsZW4gPCA2KSB7CiAJCVBERUJVRyhERUJVR19BUCwgIiVzOiBoYW5kbGVfYXV0aGVuIC0gdG9vIHNob3J0IHBheWxvYWQgIgotCQkgICAgICAgIihsZW49JWQpIGZyb20gJXNcbiIsIGRldi0+bmFtZSwgbGVuLAotCQkgICAgICAgcHJpbnRfbWFjKG1hYywgaGRyLT5hZGRyMikpOworCQkgICAgICAgIihsZW49JWQpIGZyb20gIiBNQUNfRk1UICJcbiIsIGRldi0+bmFtZSwgbGVuLAorCQkgICAgICAgaGRyLT5hZGRyMlswXSwgaGRyLT5hZGRyMlsxXSwgaGRyLT5hZGRyMlsyXSwKKwkJICAgICAgIGhkci0+YWRkcjJbM10sIGhkci0+YWRkcjJbNF0sIGhkci0+YWRkcjJbNV0pOwogCQlyZXR1cm47CiAJfQogCkBAIC0xMzgxLDggKzEzODUsMTAgQEAKIAkJaWYgKHRpbWVfYWZ0ZXIoamlmZmllcywgc3RhLT51LmFwLmxhc3RfYmVhY29uICsKIAkJCSAgICAgICAoMTAgKiBzdGEtPmxpc3Rlbl9pbnRlcnZhbCAqIEhaKSAvIDEwMjQpKSB7CiAJCQlQREVCVUcoREVCVUdfQVAsICIlczogbm8gYmVhY29ucyByZWNlaXZlZCBmb3IgYSB3aGlsZSwiCi0JCQkgICAgICAgIiBhc3N1bWluZyBBUCAlcyBpcyBub3cgU1RBXG4iLAotCQkJICAgICAgIGRldi0+bmFtZSwgcHJpbnRfbWFjKG1hYywgc3RhLT5hZGRyKSk7CisJCQkgICAgICAgIiBhc3N1bWluZyBBUCAiIE1BQ19GTVQgIiBpcyBub3cgU1RBXG4iLAorCQkJICAgICAgIGRldi0+bmFtZSwKKwkJCSAgICAgICBzdGEtPmFkZHJbMF0sIHN0YS0+YWRkclsxXSwgc3RhLT5hZGRyWzJdLAorCQkJICAgICAgIHN0YS0+YWRkclszXSwgc3RhLT5hZGRyWzRdLCBzdGEtPmFkZHJbNV0pOwogCQkJc3RhLT5hcCA9IDA7CiAJCQlzdGEtPmZsYWdzID0gMDsKIAkJCXN0YS0+dS5zdGEuY2hhbGxlbmdlID0gTlVMTDsKQEAgLTE0OTcsMTAgKzE1MDMsMTMgQEAKIAl9CiAKIAlpZiAocmVzcCkgewotCQlQREVCVUcoREVCVUdfQVAsICIlczogJXMgYXV0aCAoYWxnPSVkICIKKwkJUERFQlVHKERFQlVHX0FQLCAiJXM6ICIgTUFDX0ZNVCAiIGF1dGggKGFsZz0lZCAiCiAJCSAgICAgICAidHJhbnMjPSVkIHN0YXQ9JWQgbGVuPSVkIGZjPSUwNHgpID09PiAlZCAoJXMpXG4iLAotCQkgICAgICAgZGV2LT5uYW1lLCBwcmludF9tYWMobWFjLCBoZHItPmFkZHIyKSwgYXV0aF9hbGcsCi0JCSAgICAgICBhdXRoX3RyYW5zYWN0aW9uLCBzdGF0dXNfY29kZSwgbGVuLCBmYywgcmVzcCwgdHh0KTsKKwkJICAgICAgIGRldi0+bmFtZSwKKwkJICAgICAgIGhkci0+YWRkcjJbMF0sIGhkci0+YWRkcjJbMV0sIGhkci0+YWRkcjJbMl0sCisJCSAgICAgICBoZHItPmFkZHIyWzNdLCBoZHItPmFkZHIyWzRdLCBoZHItPmFkZHIyWzVdLAorCQkgICAgICAgYXV0aF9hbGcsIGF1dGhfdHJhbnNhY3Rpb24sIHN0YXR1c19jb2RlLCBsZW4sCisJCSAgICAgICBmYywgcmVzcCwgdHh0KTsKIAl9CiB9CiAKQEAgLTE1MTksMTQgKzE1MjgsMTUgQEAKIAlpbnQgc2VuZF9kZWF1dGggPSAwOwogCWNoYXIgKnR4dCA9ICIiOwogCXU4IHByZXZfYXBbRVRIX0FMRU5dOwotCURFQ0xBUkVfTUFDX0JVRihtYWMpOwogCiAJbGVmdCA9IGxlbiA9IHNrYi0+bGVuIC0gSUVFRTgwMjExX01HTVRfSERSX0xFTjsKIAogCWlmIChsZW4gPCAocmVhc3NvYyA/IDEwIDogNCkpIHsKIAkJUERFQlVHKERFQlVHX0FQLCAiJXM6IGhhbmRsZV9hc3NvYyAtIHRvbyBzaG9ydCBwYXlsb2FkICIKLQkJICAgICAgICIobGVuPSVkLCByZWFzc29jPSVkKSBmcm9tICVzXG4iLAotCQkgICAgICAgZGV2LT5uYW1lLCBsZW4sIHJlYXNzb2MsIHByaW50X21hYyhtYWMsIGhkci0+YWRkcjIpKTsKKwkJICAgICAgICIobGVuPSVkLCByZWFzc29jPSVkKSBmcm9tICIgTUFDX0ZNVCAiXG4iLAorCQkgICAgICAgZGV2LT5uYW1lLCBsZW4sIHJlYXNzb2MsCisJCSAgICAgICBoZHItPmFkZHIyWzBdLCBoZHItPmFkZHIyWzFdLCBoZHItPmFkZHIyWzJdLAorCQkgICAgICAgaGRyLT5hZGRyMlszXSwgaGRyLT5hZGRyMls0XSwgaGRyLT5hZGRyMls1XSk7CiAJCXJldHVybjsKIAl9CiAKQEAgLTE2MDMsOSArMTYxMywxMiBAQAogCQl9CiAKIAkJaWYgKGxlZnQgPiAwKSB7Ci0JCQlQREVCVUcoREVCVUdfQVAsICIlczogYXNzb2MgZnJvbSAlcyIKKwkJCVBERUJVRyhERUJVR19BUCwgIiVzOiBhc3NvYyBmcm9tICIgTUFDX0ZNVAogCQkJICAgICAgICIgd2l0aCBleHRyYSBkYXRhICglZCBieXRlcykgWyIsCi0JCQkgICAgICAgZGV2LT5uYW1lLCBwcmludF9tYWMobWFjLCBoZHItPmFkZHIyKSwgbGVmdCk7CisJCQkgICAgICAgZGV2LT5uYW1lLAorCQkJICAgICAgIGhkci0+YWRkcjJbMF0sIGhkci0+YWRkcjJbMV0sIGhkci0+YWRkcjJbMl0sCisJCQkgICAgICAgaGRyLT5hZGRyMlszXSwgaGRyLT5hZGRyMls0XSwgaGRyLT5hZGRyMls1XSwKKwkJCSAgICAgICBsZWZ0KTsKIAkJCXdoaWxlIChsZWZ0ID4gMCkgewogCQkJCVBERUJVRzIoREVCVUdfQVAsICI8JTAyeD4iLCAqdSk7CiAJCQkJdSsrOyBsZWZ0LS07CkBAIC0xNzA0LDEwICsxNzE3LDE1IEBACiAJfQogCiAjaWYgMAotCVBERUJVRyhERUJVR19BUCwgIiVzOiAlcyAlc2Fzc29jIChsZW49JWQgIgotCSAgICAgICAicHJldl9hcD0lcykgPT4gJWQoJWQpICglcylcbiIsCi0JICAgICAgIGRldi0+bmFtZSwgcHJpbnRfbWFjKG1hYywgaGRyLT5hZGRyMiksIHJlYXNzb2MgPyAicmUiIDogIiIsIGxlbiwKLQkgICAgICAgcHJpbnRfbWFjKG1hYywgcHJldl9hcCksIHJlc3AsIHNlbmRfZGVhdXRoLCB0eHQpOworCVBERUJVRyhERUJVR19BUCwgIiVzOiAiIE1BQ19GTVQiICVzYXNzb2MgKGxlbj0lZCAiCisJICAgICAgICJwcmV2X2FwPSIgTUFDX0ZNVCIpID0+ICVkKCVkKSAoJXMpXG4iLAorCSAgICAgICBkZXYtPm5hbWUsCisJICAgICAgIGhkci0+YWRkcjJbMF0sIGhkci0+YWRkcjJbMV0sIGhkci0+YWRkcjJbMl0sCisJICAgICAgIGhkci0+YWRkcjJbM10sIGhkci0+YWRkcjJbNF0sIGhkci0+YWRkcjJbNV0sCisJICAgICAgIHJlYXNzb2MgPyAicmUiIDogIiIsIGxlbiwKKwkgICAgICAgcHJldl9hcFswXSwgcHJldl9hcFsxXSwgcHJldl9hcFsyXSwKKwkgICAgICAgcHJldl9hcFszXSwgcHJldl9hcFs0XSwgcHJldl9hcFs1XSwKKwkgICAgICAgcmVzcCwgc2VuZF9kZWF1dGgsIHR4dCk7CiAjZW5kaWYKIH0KIApAQCAtMTczNSw5ICsxNzUzLDExIEBACiAJcG9zID0gKF9fbGUxNiAqKSBib2R5OwogCXJlYXNvbl9jb2RlID0gbGUxNl90b19jcHUoKnBvcyk7CiAKLQlQREVCVUcoREVCVUdfQVAsICIlczogZGVhdXRoZW50aWNhdGlvbjogJXMgbGVuPSVkLCAiCi0JICAgICAgICJyZWFzb25fY29kZT0lZFxuIiwgZGV2LT5uYW1lLCBwcmludF9tYWMobWFjLCBoZHItPmFkZHIyKSwgbGVuLAotCSAgICAgICByZWFzb25fY29kZSk7CisJUERFQlVHKERFQlVHX0FQLCAiJXM6IGRlYXV0aGVudGljYXRpb246ICIgTUFDX0ZNVCAiIGxlbj0lZCwgIgorCSAgICAgICAicmVhc29uX2NvZGU9JWRcbiIsIGRldi0+bmFtZSwKKwkgICAgICAgaGRyLT5hZGRyMlswXSwgaGRyLT5hZGRyMlsxXSwgaGRyLT5hZGRyMlsyXSwKKwkgICAgICAgaGRyLT5hZGRyMlszXSwgaGRyLT5hZGRyMls0XSwgaGRyLT5hZGRyMls1XSwKKwkgICAgICAgbGVuLCByZWFzb25fY29kZSk7CiAKIAlzcGluX2xvY2tfYmgoJmxvY2FsLT5hcC0+c3RhX3RhYmxlX2xvY2spOwogCXN0YSA9IGFwX2dldF9zdGEobG9jYWwtPmFwLCBoZHItPmFkZHIyKTsKQEAgLTE3NDgsOSArMTc2OCwxMSBAQAogCX0KIAlzcGluX3VubG9ja19iaCgmbG9jYWwtPmFwLT5zdGFfdGFibGVfbG9jayk7CiAJaWYgKHN0YSA9PSBOVUxMKSB7Ci0JCXByaW50aygiJXM6IGRlYXV0aGVudGljYXRpb24gZnJvbSAlcywgIgorCQlwcmludGsoIiVzOiBkZWF1dGhlbnRpY2F0aW9uIGZyb20gIiBNQUNfRk1UICIsICIKIAkgICAgICAgInJlYXNvbl9jb2RlPSVkLCBidXQgU1RBIG5vdCBhdXRoZW50aWNhdGVkXG4iLCBkZXYtPm5hbWUsCi0JCSAgICAgICBwcmludF9tYWMobWFjLCBoZHItPmFkZHIyKSwgcmVhc29uX2NvZGUpOworCQkgICAgICAgaGRyLT5hZGRyMlswXSwgaGRyLT5hZGRyMlsxXSwgaGRyLT5hZGRyMlsyXSwKKwkJICAgICAgIGhkci0+YWRkcjJbM10sIGhkci0+YWRkcjJbNF0sIGhkci0+YWRkcjJbNV0sCisJCSAgICAgICByZWFzb25fY29kZSk7CiAJfQogfQogCkBAIC0xNzY2LDcgKzE3ODgsNiBAQAogCXUxNiByZWFzb25fY29kZTsKIAlfX2xlMTYgKnBvczsKIAlzdHJ1Y3Qgc3RhX2luZm8gKnN0YSA9IE5VTEw7Ci0JREVDTEFSRV9NQUNfQlVGKG1hYyk7CiAKIAlsZW4gPSBza2ItPmxlbiAtIElFRUU4MDIxMV9NR01UX0hEUl9MRU47CiAKQEAgLTE3NzgsOSArMTc5OSwxMSBAQAogCXBvcyA9IChfX2xlMTYgKikgYm9keTsKIAlyZWFzb25fY29kZSA9IGxlMTZfdG9fY3B1KCpwb3MpOwogCi0JUERFQlVHKERFQlVHX0FQLCAiJXM6IGRpc2Fzc29jaWF0aW9uOiAlcyBsZW49JWQsICIKLQkgICAgICAgInJlYXNvbl9jb2RlPSVkXG4iLCBkZXYtPm5hbWUsIHByaW50X21hYyhtYWMsIGhkci0+YWRkcjIpLCBsZW4sCi0JICAgICAgIHJlYXNvbl9jb2RlKTsKKwlQREVCVUcoREVCVUdfQVAsICIlczogZGlzYXNzb2NpYXRpb246ICIgTUFDX0ZNVCAiIGxlbj0lZCwgIgorCSAgICAgICAicmVhc29uX2NvZGU9JWRcbiIsIGRldi0+bmFtZSwKKwkgICAgICAgaGRyLT5hZGRyMlswXSwgaGRyLT5hZGRyMlsxXSwgaGRyLT5hZGRyMlsyXSwKKwkgICAgICAgaGRyLT5hZGRyMlszXSwgaGRyLT5hZGRyMls0XSwgaGRyLT5hZGRyMls1XSwKKwkgICAgICAgbGVuLCByZWFzb25fY29kZSk7CiAKIAlzcGluX2xvY2tfYmgoJmxvY2FsLT5hcC0+c3RhX3RhYmxlX2xvY2spOwogCXN0YSA9IGFwX2dldF9zdGEobG9jYWwtPmFwLCBoZHItPmFkZHIyKTsKQEAgLTE3OTEsOSArMTgxNCwxMiBAQAogCX0KIAlzcGluX3VubG9ja19iaCgmbG9jYWwtPmFwLT5zdGFfdGFibGVfbG9jayk7CiAJaWYgKHN0YSA9PSBOVUxMKSB7Ci0JCXByaW50aygiJXM6IGRpc2Fzc29jaWF0aW9uIGZyb20gJXMsICIKKwkJcHJpbnRrKCIlczogZGlzYXNzb2NpYXRpb24gZnJvbSAiIE1BQ19GTVQgIiwgIgogCQkgICAgICAgInJlYXNvbl9jb2RlPSVkLCBidXQgU1RBIG5vdCBhdXRoZW50aWNhdGVkXG4iLAotCQkgICAgICAgZGV2LT5uYW1lLCBwcmludF9tYWMobWFjLCBoZHItPmFkZHIyKSwgcmVhc29uX2NvZGUpOworCQkgICAgICAgZGV2LT5uYW1lLAorCQkgICAgICAgaGRyLT5hZGRyMlswXSwgaGRyLT5hZGRyMlsxXSwgaGRyLT5hZGRyMlsyXSwKKwkJICAgICAgIGhkci0+YWRkcjJbM10sIGhkci0+YWRkcjJbNF0sIGhkci0+YWRkcjJbNV0sCisJCSAgICAgICByZWFzb25fY29kZSk7CiAJfQogfQogCkBAIC0xODgyLDE2ICsxOTA4LDIwIEBACiAJc3RydWN0IHN0YV9pbmZvICpzdGE7CiAJdTE2IGFpZDsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwotCURFQ0xBUkVfTUFDX0JVRihtYWMpOwogCi0JUERFQlVHKERFQlVHX1BTMiwgImhhbmRsZV9wc3BvbGw6IEJTU0lEPSVzIgotCSAgICAgICAiLCBUQT0lcyBQV1JNR1Q9JWRcbiIsCi0JICAgICAgIHByaW50X21hYyhtYWMsIGhkci0+YWRkcjEpLCBwcmludF9tYWMobWFjLCBoZHItPmFkZHIyKSwKKwlQREVCVUcoREVCVUdfUFMyLCAiaGFuZGxlX3BzcG9sbDogQlNTSUQ9IiBNQUNfRk1UCisJICAgICAgICIsIFRBPSIgTUFDX0ZNVCAiIFBXUk1HVD0lZFxuIiwKKwkgICAgICAgaGRyLT5hZGRyMVswXSwgaGRyLT5hZGRyMVsxXSwgaGRyLT5hZGRyMVsyXSwKKwkgICAgICAgaGRyLT5hZGRyMVszXSwgaGRyLT5hZGRyMVs0XSwgaGRyLT5hZGRyMVs1XSwKKwkgICAgICAgaGRyLT5hZGRyMlswXSwgaGRyLT5hZGRyMlsxXSwgaGRyLT5hZGRyMlsyXSwKKwkgICAgICAgaGRyLT5hZGRyMlszXSwgaGRyLT5hZGRyMls0XSwgaGRyLT5hZGRyMls1XSwKIAkgICAgICAgISEobGUxNl90b19jcHUoaGRyLT5mcmFtZV9jdGwpICYgSUVFRTgwMjExX0ZDVExfUE0pKTsKIAogCWlmIChtZW1jbXAoaGRyLT5hZGRyMSwgZGV2LT5kZXZfYWRkciwgRVRIX0FMRU4pKSB7Ci0JCVBERUJVRyhERUJVR19BUCwgImhhbmRsZV9wc3BvbGwgLSBhZGRyMShCU1NJRCk9JXMiCi0JCSAgICAgICAiIG5vdCBvd24gTUFDXG4iLCBwcmludF9tYWMobWFjLCBoZHItPmFkZHIxKSk7CisJCVBERUJVRyhERUJVR19BUCwgImhhbmRsZV9wc3BvbGwgLSBhZGRyMShCU1NJRCk9IiBNQUNfRk1UCisJCSAgICAgICAiIG5vdCBvd24gTUFDXG4iLAorCQkgICAgICAgaGRyLT5hZGRyMVswXSwgaGRyLT5hZGRyMVsxXSwgaGRyLT5hZGRyMVsyXSwKKwkJICAgICAgIGhkci0+YWRkcjFbM10sIGhkci0+YWRkcjFbNF0sIGhkci0+YWRkcjFbNV0pOwogCQlyZXR1cm47CiAJfQogCkBAIC0xOTY5LDcgKzE5OTksNiBAQAogCQkJCQkgIHdkc19vcGVyX3F1ZXVlKTsKIAlsb2NhbF9pbmZvX3QgKmxvY2FsID0gYXAtPmxvY2FsOwogCXN0cnVjdCB3ZHNfb3Blcl9kYXRhICplbnRyeSwgKnByZXY7Ci0JREVDTEFSRV9NQUNfQlVGKG1hYyk7CiAKIAlzcGluX2xvY2tfYmgoJmxvY2FsLT5sb2NrKTsKIAllbnRyeSA9IGxvY2FsLT5hcC0+d2RzX29wZXJfZW50cmllczsKQEAgLTE5NzgsMTAgKzIwMDcsMTEgQEAKIAogCXdoaWxlIChlbnRyeSkgewogCQlQREVCVUcoREVCVUdfQVAsICIlczogJXMgYXV0b21hdGljIFdEUyBjb25uZWN0aW9uICIKLQkJICAgICAgICJ0byBBUCAlc1xuIiwKKwkJICAgICAgICJ0byBBUCAiIE1BQ19GTVQgIlxuIiwKIAkJICAgICAgIGxvY2FsLT5kZXYtPm5hbWUsCiAJCSAgICAgICBlbnRyeS0+dHlwZSA9PSBXRFNfQUREID8gImFkZGluZyIgOiAicmVtb3ZpbmciLAotCQkgICAgICAgcHJpbnRfbWFjKG1hYywgZW50cnktPmFkZHIpKTsKKwkJICAgICAgIGVudHJ5LT5hZGRyWzBdLCBlbnRyeS0+YWRkclsxXSwgZW50cnktPmFkZHJbMl0sCisJCSAgICAgICBlbnRyeS0+YWRkclszXSwgZW50cnktPmFkZHJbNF0sIGVudHJ5LT5hZGRyWzVdKTsKIAkJaWYgKGVudHJ5LT50eXBlID09IFdEU19BREQpCiAJCQlwcmlzbTJfd2RzX2FkZChsb2NhbCwgZW50cnktPmFkZHIsIDApOwogCQllbHNlIGlmIChlbnRyeS0+dHlwZSA9PSBXRFNfREVMKQpAQCAtMjE1OCw3ICsyMTg4LDYgQEAKICNlbmRpZiAvKiBQUklTTTJfTk9fS0VSTkVMX0lFRUU4MDIxMV9NR01UICovCiAJdTE2IGZjLCB0eXBlLCBzdHlwZTsKIAlzdHJ1Y3QgaWVlZTgwMjExX2hkcl80YWRkciAqaGRyOwotCURFQ0xBUkVfTUFDX0JVRihtYWMpOwogCiAJLyogRklYOiBzaG91bGQgZ2l2ZSBza2ItPmxlbiB0byBoYW5kbGVyIGZ1bmN0aW9ucyBhbmQgY2hlY2sgdGhhdCB0aGUKIAkgKiBidWZmZXIgaXMgbG9uZyBlbm91Z2ggKi8KQEAgLTIxODcsOCArMjIxNiw5IEBACiAKIAkJaWYgKG1lbWNtcChoZHItPmFkZHIxLCBkZXYtPmRldl9hZGRyLCBFVEhfQUxFTikpIHsKIAkJCVBERUJVRyhERUJVR19BUCwgImhhbmRsZV9hcF9pdGVtIC0gYWRkcjEoQlNTSUQpPSIKLQkJCSAgICAgICAiJXMgbm90IG93biBNQUNcbiIsCi0JCQkgICAgICAgcHJpbnRfbWFjKG1hYywgaGRyLT5hZGRyMSkpOworCQkJICAgICAgIE1BQ19GTVQgIiBub3Qgb3duIE1BQ1xuIiwKKwkJCSAgICAgICBoZHItPmFkZHIxWzBdLCBoZHItPmFkZHIxWzFdLCBoZHItPmFkZHIxWzJdLAorCQkJICAgICAgIGhkci0+YWRkcjFbM10sIGhkci0+YWRkcjFbNF0sIGhkci0+YWRkcjFbNV0pOwogCQkJZ290byBkb25lOwogCQl9CiAKQEAgLTIyMjQsMTQgKzIyNTQsMTggQEAKIAl9CiAKIAlpZiAobWVtY21wKGhkci0+YWRkcjEsIGRldi0+ZGV2X2FkZHIsIEVUSF9BTEVOKSkgewotCQlQREVCVUcoREVCVUdfQVAsICJoYW5kbGVfYXBfaXRlbSAtIGFkZHIxKERBKT0lcyIKLQkJICAgICAgICIgbm90IG93biBNQUNcbiIsIHByaW50X21hYyhtYWMsIGhkci0+YWRkcjEpKTsKKwkJUERFQlVHKERFQlVHX0FQLCAiaGFuZGxlX2FwX2l0ZW0gLSBhZGRyMShEQSk9IiBNQUNfRk1UCisJCSAgICAgICAiIG5vdCBvd24gTUFDXG4iLAorCQkgICAgICAgaGRyLT5hZGRyMVswXSwgaGRyLT5hZGRyMVsxXSwgaGRyLT5hZGRyMVsyXSwKKwkJICAgICAgIGhkci0+YWRkcjFbM10sIGhkci0+YWRkcjFbNF0sIGhkci0+YWRkcjFbNV0pOwogCQlnb3RvIGRvbmU7CiAJfQogCiAJaWYgKG1lbWNtcChoZHItPmFkZHIzLCBkZXYtPmRldl9hZGRyLCBFVEhfQUxFTikpIHsKLQkJUERFQlVHKERFQlVHX0FQLCAiaGFuZGxlX2FwX2l0ZW0gLSBhZGRyMyhCU1NJRCk9JXMiCi0JCSAgICAgICAiIG5vdCBvd24gTUFDXG4iLCBwcmludF9tYWMobWFjLCBoZHItPmFkZHIzKSk7CisJCVBERUJVRyhERUJVR19BUCwgImhhbmRsZV9hcF9pdGVtIC0gYWRkcjMoQlNTSUQpPSIgTUFDX0ZNVAorCQkgICAgICAgIiBub3Qgb3duIE1BQ1xuIiwKKwkJICAgICAgIGhkci0+YWRkcjNbMF0sIGhkci0+YWRkcjNbMV0sIGhkci0+YWRkcjNbMl0sCisJCSAgICAgICBoZHItPmFkZHIzWzNdLCBoZHItPmFkZHIzWzRdLCBoZHItPmFkZHIzWzVdKTsKIAkJZ290byBkb25lOwogCX0KIApAQCAtMjMxMiw3ICsyMzQ2LDYgQEAKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwogCXN0cnVjdCBpZWVlODAyMTFfaGRyXzRhZGRyICpoZHI7CiAJc3RydWN0IGhvc3RhcF84MDIxMV9yeF9zdGF0dXMgcnhfc3RhdHM7Ci0JREVDTEFSRV9NQUNfQlVGKG1hYyk7CiAKIAlpZiAoc2tiX3F1ZXVlX2VtcHR5KCZzdGEtPnR4X2J1ZikpCiAJCXJldHVybjsKQEAgLTIzMzQsNyArMjM2Nyw5IEBACiAJaGRyLT5kdXJhdGlvbl9pZCA9IGNwdV90b19sZTE2KHN0YS0+YWlkIHwgQklUKDE1KSB8IEJJVCgxNCkpOwogCiAJUERFQlVHKERFQlVHX1BTMiwgIiVzOiBTY2hlZHVsaW5nIGJ1ZmZlcmVkIHBhY2tldCBkZWxpdmVyeSBmb3IgU1RBICIKLQkgICAgICAgIiVzXG4iLCBsb2NhbC0+ZGV2LT5uYW1lLCBwcmludF9tYWMobWFjLCBzdGEtPmFkZHIpKTsKKwkgICAgICAgTUFDX0ZNVCAiXG4iLCBsb2NhbC0+ZGV2LT5uYW1lLAorCSAgICAgICBzdGEtPmFkZHJbMF0sIHN0YS0+YWRkclsxXSwgc3RhLT5hZGRyWzJdLAorCSAgICAgICBzdGEtPmFkZHJbM10sIHN0YS0+YWRkcls0XSwgc3RhLT5hZGRyWzVdKTsKIAogCXNrYi0+ZGV2ID0gbG9jYWwtPmRldjsKIApAQCAtMjY2MSw3ICsyNjk2LDYgQEAKIAlpbnQgcmV0ID0gc3RhLT50eF9yYXRlOwogCXN0cnVjdCBob3N0YXBfaW50ZXJmYWNlICppZmFjZTsKIAlsb2NhbF9pbmZvX3QgKmxvY2FsOwotCURFQ0xBUkVfTUFDX0JVRihtYWMpOwogCiAJaWZhY2UgPSBuZXRkZXZfcHJpdihkZXYpOwogCWxvY2FsID0gaWZhY2UtPmxvY2FsOwpAQCAtMjY4OSw5ICsyNzIzLDEyIEBACiAJCQljYXNlIDM6IHN0YS0+dHhfcmF0ZSA9IDExMDsgYnJlYWs7CiAJCQlkZWZhdWx0OiBzdGEtPnR4X3JhdGUgPSAwOyBicmVhazsKIAkJCX0KLQkJCVBERUJVRyhERUJVR19BUCwgIiVzOiBTVEEgJXMiCisJCQlQREVCVUcoREVCVUdfQVAsICIlczogU1RBICIgTUFDX0ZNVAogCQkJICAgICAgICIgVFggcmF0ZSByYWlzZWQgdG8gJWRcbiIsCi0JCQkgICAgICAgZGV2LT5uYW1lLCBwcmludF9tYWMobWFjLCBzdGEtPmFkZHIpLCBzdGEtPnR4X3JhdGUpOworCQkJICAgICAgIGRldi0+bmFtZSwKKwkJCSAgICAgICBzdGEtPmFkZHJbMF0sIHN0YS0+YWRkclsxXSwgc3RhLT5hZGRyWzJdLAorCQkJICAgICAgIHN0YS0+YWRkclszXSwgc3RhLT5hZGRyWzRdLCBzdGEtPmFkZHJbNV0sCisJCQkgICAgICAgc3RhLT50eF9yYXRlKTsKIAkJfQogCQlzdGEtPnR4X3NpbmNlX2xhc3RfZmFpbHVyZSA9IDA7CiAJfQpAQCAtMjcwOSw3ICsyNzQ2LDYgQEAKIAlpbnQgc2V0X3RpbSwgcmV0OwogCXN0cnVjdCBpZWVlODAyMTFfaGRyXzRhZGRyICpoZHI7CiAJc3RydWN0IGhvc3RhcF9za2JfdHhfZGF0YSAqbWV0YTsKLQlERUNMQVJFX01BQ19CVUYobWFjKTsKIAogCW1ldGEgPSAoc3RydWN0IGhvc3RhcF9za2JfdHhfZGF0YSAqKSBza2ItPmNiOwogCXJldCA9IEFQX1RYX0NPTlRJTlVFOwpAQCAtMjc0NSw4ICsyNzgxLDkgQEAKIAkJICogcHJpbnQgb3V0IGFueSBlcnJvcnMgaGVyZS4gKi8KIAkJaWYgKG5ldF9yYXRlbGltaXQoKSkgewogCQkJcHJpbnRrKEtFUk5fREVCVUcgIkFQOiBkcm9wIHBhY2tldCB0byBub24tYXNzb2NpYXRlZCAiCi0JCQkgICAgICAgIlNUQSAlc1xuIiwKLQkJCSAgICAgICBwcmludF9tYWMobWFjLCBoZHItPmFkZHIxKSk7CisJCQkgICAgICAgIlNUQSAiIE1BQ19GTVQgIlxuIiwKKwkJCSAgICAgICBoZHItPmFkZHIxWzBdLCBoZHItPmFkZHIxWzFdLCBoZHItPmFkZHIxWzJdLAorCQkJICAgICAgIGhkci0+YWRkcjFbM10sIGhkci0+YWRkcjFbNF0sIGhkci0+YWRkcjFbNV0pOwogCQl9CiAjZW5kaWYKIAkJbG9jYWwtPmFwLT50eF9kcm9wX25vbmFzc29jKys7CkBAIC0yNzg0LDkgKzI4MjEsMTEgQEAKIAl9CiAKIAlpZiAoc2tiX3F1ZXVlX2xlbigmc3RhLT50eF9idWYpID49IFNUQV9NQVhfVFhfQlVGRkVSKSB7Ci0JCVBERUJVRyhERUJVR19QUywgIiVzOiBObyBtb3JlIHNwYWNlIGluIFNUQSAoJXMiCisJCVBERUJVRyhERUJVR19QUywgIiVzOiBObyBtb3JlIHNwYWNlIGluIFNUQSAoIiBNQUNfRk1UCiAJCSAgICAgICAiKSdzIFBTIG1vZGUgYnVmZmVyXG4iLAotCQkgICAgICAgbG9jYWwtPmRldi0+bmFtZSwgcHJpbnRfbWFjKG1hYywgc3RhLT5hZGRyKSk7CisJCSAgICAgICBsb2NhbC0+ZGV2LT5uYW1lLAorCQkgICAgICAgc3RhLT5hZGRyWzBdLCBzdGEtPmFkZHJbMV0sIHN0YS0+YWRkclsyXSwKKwkJICAgICAgIHN0YS0+YWRkclszXSwgc3RhLT5hZGRyWzRdLCBzdGEtPmFkZHJbNV0pOwogCQkvKiBNYWtlIHN1cmUgdGhhdCBUSU0gaXMgc2V0IGZvciB0aGUgc3RhdGlvbiAoaXQgbWlnaHQgbm90IGJlCiAJCSAqIGFmdGVyIEFQIHdsYW4gaHcgcmVzZXQpLiAqLwogCQkvKiBGSVg6IHNob3VsZCBmaXggaHcgcmVzZXQgdG8gcmVzdG9yZSBiaXRzIGJhc2VkIG9uIFNUQQpAQCAtMjg1MCw3ICsyODg5LDYgQEAKIAlzdHJ1Y3Qgc3RhX2luZm8gKnN0YTsKIAlzdHJ1Y3QgaWVlZTgwMjExX2hkcl80YWRkciAqaGRyOwogCXN0cnVjdCBob3N0YXBfc2tiX3R4X2RhdGEgKm1ldGE7Ci0JREVDTEFSRV9NQUNfQlVGKG1hYyk7CiAKIAloZHIgPSAoc3RydWN0IGllZWU4MDIxMV9oZHJfNGFkZHIgKikgc2tiLT5kYXRhOwogCW1ldGEgPSAoc3RydWN0IGhvc3RhcF9za2JfdHhfZGF0YSAqKSBza2ItPmNiOwpAQCAtMjg1OSw5ICsyODk3LDEyIEBACiAJc3RhID0gYXBfZ2V0X3N0YShsb2NhbC0+YXAsIGhkci0+YWRkcjEpOwogCWlmICghc3RhKSB7CiAJCXNwaW5fdW5sb2NrKCZsb2NhbC0+YXAtPnN0YV90YWJsZV9sb2NrKTsKLQkJUERFQlVHKERFQlVHX0FQLCAiJXM6IENvdWxkIG5vdCBmaW5kIFNUQSAlcyIKKwkJUERFQlVHKERFQlVHX0FQLCAiJXM6IENvdWxkIG5vdCBmaW5kIFNUQSAiIE1BQ19GTVQKIAkJICAgICAgICIgZm9yIHRoaXMgVFggZXJyb3IgKEAlbHUpXG4iLAotCQkgICAgICAgbG9jYWwtPmRldi0+bmFtZSwgcHJpbnRfbWFjKG1hYywgaGRyLT5hZGRyMSksIGppZmZpZXMpOworCQkgICAgICAgbG9jYWwtPmRldi0+bmFtZSwKKwkJICAgICAgIGhkci0+YWRkcjFbMF0sIGhkci0+YWRkcjFbMV0sIGhkci0+YWRkcjFbMl0sCisJCSAgICAgICBoZHItPmFkZHIxWzNdLCBoZHItPmFkZHIxWzRdLCBoZHItPmFkZHIxWzVdLAorCQkgICAgICAgamlmZmllcyk7CiAJCXJldHVybjsKIAl9CiAKQEAgLTI4ODgsOSArMjkyOSwxMSBAQAogCQkJY2FzZSAzOiBzdGEtPnR4X3JhdGUgPSAxMTA7IGJyZWFrOwogCQkJZGVmYXVsdDogc3RhLT50eF9yYXRlID0gMDsgYnJlYWs7CiAJCQl9Ci0JCQlQREVCVUcoREVCVUdfQVAsICIlczogU1RBICVzIgorCQkJUERFQlVHKERFQlVHX0FQLCAiJXM6IFNUQSAiIE1BQ19GTVQKIAkJCSAgICAgICAiIFRYIHJhdGUgbG93ZXJlZCB0byAlZFxuIiwKLQkJCSAgICAgICBsb2NhbC0+ZGV2LT5uYW1lLCBwcmludF9tYWMobWFjLCBzdGEtPmFkZHIpLAorCQkJICAgICAgIGxvY2FsLT5kZXYtPm5hbWUsCisJCQkgICAgICAgc3RhLT5hZGRyWzBdLCBzdGEtPmFkZHJbMV0sIHN0YS0+YWRkclsyXSwKKwkJCSAgICAgICBzdGEtPmFkZHJbM10sIHN0YS0+YWRkcls0XSwgc3RhLT5hZGRyWzVdLAogCQkJICAgICAgIHN0YS0+dHhfcmF0ZSk7CiAJCX0KIAkJc3RhLT50eF9jb25zZWN1dGl2ZV9leGMgPSAwOwpAQCAtMjk1Niw3ICsyOTk5LDYgQEAKIAlzdHJ1Y3Qgc3RhX2luZm8gKnN0YTsKIAl1MTYgZmMsIHR5cGUsIHN0eXBlOwogCXN0cnVjdCBpZWVlODAyMTFfaGRyXzRhZGRyICpoZHI7Ci0JREVDTEFSRV9NQUNfQlVGKG1hYyk7CiAKIAlpZiAobG9jYWwtPmFwID09IE5VTEwpCiAJCXJldHVybiBBUF9SWF9DT05USU5VRTsKQEAgLTI5ODgsOSArMzAzMCwxMiBAQAogCQkJfSBlbHNlIHsKIAkJCQlwcmludGsoS0VSTl9ERUJVRyAiJXM6IGRyb3BwZWQgcmVjZWl2ZWQgcGFja2V0IgogCQkJCSAgICAgICAiIGZyb20gbm9uLWFzc29jaWF0ZWQgU1RBICIKLQkJCQkgICAgICAgIiVzIgorCQkJCSAgICAgICBNQUNfRk1UCiAJCQkJICAgICAgICIgKHR5cGU9MHglMDJ4LCBzdWJ0eXBlPTB4JTAyeClcbiIsCi0JCQkJICAgICAgIGRldi0+bmFtZSwgcHJpbnRfbWFjKG1hYywgaGRyLT5hZGRyMiksCisJCQkJICAgICAgIGRldi0+bmFtZSwKKwkJCQkgICAgICAgaGRyLT5hZGRyMlswXSwgaGRyLT5hZGRyMlsxXSwKKwkJCQkgICAgICAgaGRyLT5hZGRyMlsyXSwgaGRyLT5hZGRyMlszXSwKKwkJCQkgICAgICAgaGRyLT5hZGRyMls0XSwgaGRyLT5hZGRyMls1XSwKIAkJCQkgICAgICAgdHlwZSA+PiAyLCBzdHlwZSA+PiA0KTsKIAkJCQlob3N0YXBfcngoZGV2LCBza2IsIHJ4X3N0YXRzKTsKICNlbmRpZiAvKiBQUklTTTJfTk9fS0VSTkVMX0lFRUU4MDIxMV9NR01UICovCkBAIC0zMDI1LDggKzMwNzAsMTEgQEAKIAkJCSAqIGJlaW5nIGFzc29jaWF0ZWQuICovCiAJCQlwcmludGsoS0VSTl9ERUJVRyAiJXM6IHJlamVjdGVkIHJlY2VpdmVkIG51bGxmdW5jICIKIAkJCSAgICAgICAiZnJhbWUgd2l0aG91dCBUb0RTIGZyb20gbm90IGFzc29jaWF0ZWQgU1RBICIKLQkJCSAgICAgICAiJXNcbiIsCi0JCQkgICAgICAgZGV2LT5uYW1lLCBwcmludF9tYWMobWFjLCBoZHItPmFkZHIyKSk7CisJCQkgICAgICAgTUFDX0ZNVCAiXG4iLAorCQkJICAgICAgIGRldi0+bmFtZSwKKwkJCSAgICAgICBoZHItPmFkZHIyWzBdLCBoZHItPmFkZHIyWzFdLAorCQkJICAgICAgIGhkci0+YWRkcjJbMl0sIGhkci0+YWRkcjJbM10sCisJCQkgICAgICAgaGRyLT5hZGRyMls0XSwgaGRyLT5hZGRyMls1XSk7CiAJCQlob3N0YXBfcngoZGV2LCBza2IsIHJ4X3N0YXRzKTsKICNlbmRpZiAvKiBQUklTTTJfTk9fS0VSTkVMX0lFRUU4MDIxMV9NR01UICovCiAJCX0KQEAgLTMwNDMsOSArMzA5MSwxMiBAQAogCQkgKiBJZiBCU1NJRCBpcyBvd24sIHJlcG9ydCB0aGUgZHJvcHBpbmcgb2YgdGhpcyBmcmFtZS4gKi8KIAkJaWYgKG1lbWNtcChoZHItPmFkZHIzLCBkZXYtPmRldl9hZGRyLCBFVEhfQUxFTikgPT0gMCkgewogCQkJcHJpbnRrKEtFUk5fREVCVUcgIiVzOiBkcm9wcGVkIHJlY2VpdmVkIHBhY2tldCBmcm9tICIKLQkJCSAgICAgICAiJXMgd2l0aCBubyBUb0RTIGZsYWcgIgorCQkJICAgICAgIE1BQ19GTVQgIiB3aXRoIG5vIFRvRFMgZmxhZyAiCiAJCQkgICAgICAgIih0eXBlPTB4JTAyeCwgc3VidHlwZT0weCUwMngpXG4iLCBkZXYtPm5hbWUsCi0JCQkgICAgICAgcHJpbnRfbWFjKG1hYywgaGRyLT5hZGRyMiksIHR5cGUgPj4gMiwgc3R5cGUgPj4gNCk7CisJCQkgICAgICAgaGRyLT5hZGRyMlswXSwgaGRyLT5hZGRyMlsxXSwKKwkJCSAgICAgICBoZHItPmFkZHIyWzJdLCBoZHItPmFkZHIyWzNdLAorCQkJICAgICAgIGhkci0+YWRkcjJbNF0sIGhkci0+YWRkcjJbNV0sCisJCQkgICAgICAgdHlwZSA+PiAyLCBzdHlwZSA+PiA0KTsKIAkJCWhvc3RhcF9kdW1wX3J4XzgwMjExKGRldi0+bmFtZSwgc2tiLCByeF9zdGF0cyk7CiAJCX0KIAkJcmV0ID0gQVBfUlhfRFJPUDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2lwdzIyMDAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2lwdzIyMDAuYwppbmRleCBhNTZkOWZjLi45OGQ2ZmY2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pcHcyMjAwLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXB3MjIwMC5jCkBAIC0xMDE5Miw3ICsxMDE5Miw2IEBACiAJdTggaWQsIGhkcl9sZW4sIHVuaWNhc3Q7CiAJdTE2IHJlbWFpbmluZ19ieXRlczsKIAlpbnQgZmM7Ci0JREVDTEFSRV9NQUNfQlVGKG1hYyk7CiAKIAloZHJfbGVuID0gaWVlZTgwMjExX2dldF9oZHJsZW4obGUxNl90b19jcHUoaGRyLT5mcmFtZV9jdGwpKTsKIAlzd2l0Y2ggKHByaXYtPmllZWUtPml3X21vZGUpIHsKQEAgLTEwMjAzLDggKzEwMjAyLDEwIEBACiAJCQlpZCA9IGlwd19hZGRfc3RhdGlvbihwcml2LCBoZHItPmFkZHIxKTsKIAkJCWlmIChpZCA9PSBJUFdfSU5WQUxJRF9TVEFUSU9OKSB7CiAJCQkJSVBXX1dBUk5JTkcoIkF0dGVtcHQgdG8gc2VuZCBkYXRhIHRvICIKLQkJCQkJICAgICJpbnZhbGlkIGNlbGw6ICVzXG4iLAotCQkJCQkgICAgcHJpbnRfbWFjKG1hYywgaGRyLT5hZGRyMSkpOworCQkJCQkgICAgImludmFsaWQgY2VsbDogIiBNQUNfRk1UICJcbiIsCisJCQkJCSAgICBoZHItPmFkZHIxWzBdLCBoZHItPmFkZHIxWzFdLAorCQkJCQkgICAgaGRyLT5hZGRyMVsyXSwgaGRyLT5hZGRyMVszXSwKKwkJCQkJICAgIGhkci0+YWRkcjFbNF0sIGhkci0+YWRkcjFbNV0pOwogCQkJCWdvdG8gZHJvcDsKIAkJCX0KIAkJfQpAQCAtMTE1NzYsNiArMTE1NzcsNyBAQAogCXByaXYtPnByb21fcHJpdi0+cHJpdiA9IHByaXY7CiAKIAlzdHJjcHkocHJpdi0+cHJvbV9uZXRfZGV2LT5uYW1lLCAicnRhcCVkIik7CisJbWVtY3B5KHByaXYtPnByb21fbmV0X2Rldi0+ZGV2X2FkZHIsIHByaXYtPm1hY19hZGRyLCBFVEhfQUxFTik7CiAKIAlwcml2LT5wcm9tX25ldF9kZXYtPnR5cGUgPSBBUlBIUkRfSUVFRTgwMjExX1JBRElPVEFQOwogCXByaXYtPnByb21fbmV0X2Rldi0+b3BlbiA9IGlwd19wcm9tX29wZW47CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2x3aWZpL0tjb25maWcgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2x3aWZpL0tjb25maWcKaW5kZXggZDFhZjkzOC4uYjU0ZmY3MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9LY29uZmlnCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdpZmkvS2NvbmZpZwpAQCAtMjAsNyArMjAsNyBAQAogCSAgcnVucy4KIAogCSAgSWYgeW91IHdhbnQgdG8gY29tcGlsZSB0aGUgZHJpdmVyIGFzIGEgbW9kdWxlICggPSBjb2RlIHdoaWNoIGNhbiBiZQotCSAgaW5zZXJ0ZWQgaW4gYW5kIHJlbXZvZWQgZnJvbSB0aGUgcnVubmluZyBrZXJuZWwgd2hlbmV2ZXIgeW91IHdhbnQpLAorCSAgaW5zZXJ0ZWQgaW4gYW5kIHJlbW92ZWQgZnJvbSB0aGUgcnVubmluZyBrZXJuZWwgd2hlbmV2ZXIgeW91IHdhbnQpLAogCSAgc2F5IE0gaGVyZSBhbmQgcmVhZCA8ZmlsZTpEb2N1bWVudGF0aW9uL2tidWlsZC9tb2R1bGVzLnR4dD4uICBUaGUKIAkgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBpd2w0OTY1LmtvLgogCkBAIC0zNSw3ICszNSw2IEBACiAJYm9vbCAiRW5hYmxlIDgwMi4xMW4gSFQgZmVhdHVyZXMgaW4gaXdsNDk2NSBkcml2ZXIiCiAJZGVwZW5kcyBvbiBFWFBFUklNRU5UQUwKIAlkZXBlbmRzIG9uIElXTDQ5NjUgJiYgSVdMNDk2NV9RT1MKLQlkZXBlbmRzIG9uIG4KIAktLS1oZWxwLS0tCiAJICBUaGlzIG9wdGlvbiBlbmFibGVzIElFRUUgODAyLjExbiBIaWdoIFRocm91Z2hwdXQgZmVhdHVyZXMKIAkgIGZvciB0aGUgaXdsNDk2NSBkcml2ZXIuCkBAIC0xMDEsNyArMTAwLDcgQEAKIAkgIHJ1bnMuCiAKIAkgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgdGhlIGRyaXZlciBhcyBhIG1vZHVsZSAoID0gY29kZSB3aGljaCBjYW4gYmUKLQkgIGluc2VydGVkIGluIGFuZCByZW12b2VkIGZyb20gdGhlIHJ1bm5pbmcga2VybmVsIHdoZW5ldmVyIHlvdSB3YW50KSwKKwkgIGluc2VydGVkIGluIGFuZCByZW1vdmVkIGZyb20gdGhlIHJ1bm5pbmcga2VybmVsIHdoZW5ldmVyIHlvdSB3YW50KSwKIAkgIHNheSBNIGhlcmUgYW5kIHJlYWQgPGZpbGU6RG9jdW1lbnRhdGlvbi9rYnVpbGQvbW9kdWxlcy50eHQ+LiAgVGhlCiAJICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgaXdsMzk0NS5rby4KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2wtNDk2NS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2wtNDk2NS5jCmluZGV4IGQ3MjdkZTguLjY1NzY3NTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdpZmkvaXdsLTQ5NjUuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2x3aWZpL2l3bC00OTY1LmMKQEAgLTQ1ODksNyArNDU4OSw3IEBACiAKIAlpZiAoc3RhX2h0X2luZikgewogCQlpZiAoKCFzdGFfaHRfaW5mLT5odF9zdXBwb3J0ZWQpIHx8Ci0JCSAgICghc3RhX2h0X2luZi0+Y2FwICYgSUVFRTgwMjExX0hUX0NBUF9TVVBfV0lEVEgpKQorCQkgICAoIShzdGFfaHRfaW5mLT5jYXAgJiBJRUVFODAyMTFfSFRfQ0FQX1NVUF9XSURUSCkpKQogCQkJcmV0dXJuIDA7CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2x3aWZpL2l3bDM5NDUtYmFzZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2wzOTQ1LWJhc2UuYwppbmRleCA0MGI3MWJjLi5jYmFlYWYxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2x3aWZpL2l3bDM5NDUtYmFzZS5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdpZmkvaXdsMzk0NS1iYXNlLmMKQEAgLTYyMDYsMTEgKzYyMDYsMTEgQEAKIAogCS8qIEF0IHRoaXMgcG9pbnQsIHRoZSBOSUMgaXMgaW5pdGlhbGl6ZWQgYW5kIG9wZXJhdGlvbmFsICovCiAJcHJpdi0+bm90aWZfbWlzc2VkX2JlYWNvbnMgPSAwOwotCXNldF9iaXQoU1RBVFVTX1JFQURZLCAmcHJpdi0+c3RhdHVzKTsKIAogCWl3bDM5NDVfcmVnX3R4cG93ZXJfcGVyaW9kaWMocHJpdik7CiAKIAlJV0xfREVCVUdfSU5GTygiQUxJVkUgcHJvY2Vzc2luZyBjb21wbGV0ZS5cbiIpOworCXNldF9iaXQoU1RBVFVTX1JFQURZLCAmcHJpdi0+c3RhdHVzKTsKIAl3YWtlX3VwX2ludGVycnVwdGlibGUoJnByaXYtPndhaXRfY29tbWFuZF9xdWV1ZSk7CiAKIAlpZiAocHJpdi0+ZXJyb3JfcmVjb3ZlcmluZykKQEAgLTg3MDYsNyArODcwNiw3IEBACiAJcmV0dXJuIGVycjsKIH0KIAotc3RhdGljIHZvaWQgaXdsMzk0NV9wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQorc3RhdGljIHZvaWQgX19kZXZleGl0IGl3bDM5NDVfcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldikKIHsKIAlzdHJ1Y3QgaXdsMzk0NV9wcml2ICpwcml2ID0gcGNpX2dldF9kcnZkYXRhKHBkZXYpOwogCXN0cnVjdCBsaXN0X2hlYWQgKnAsICpxOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2w0OTY1LWJhc2UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdpZmkvaXdsNDk2NS1iYXNlLmMKaW5kZXggYTIzZDQ3OS4uNjBlYzI5ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2w0OTY1LWJhc2UuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2x3aWZpL2l3bDQ5NjUtYmFzZS5jCkBAIC02NjI4LDExICs2NjI4LDExIEBACiAKIAkvKiBBdCB0aGlzIHBvaW50LCB0aGUgTklDIGlzIGluaXRpYWxpemVkIGFuZCBvcGVyYXRpb25hbCAqLwogCXByaXYtPm5vdGlmX21pc3NlZF9iZWFjb25zID0gMDsKLQlzZXRfYml0KFNUQVRVU19SRUFEWSwgJnByaXYtPnN0YXR1cyk7CiAKIAlpd2w0OTY1X3JmX2tpbGxfY3RfY29uZmlnKHByaXYpOwogCiAJSVdMX0RFQlVHX0lORk8oIkFMSVZFIHByb2Nlc3NpbmcgY29tcGxldGUuXG4iKTsKKwlzZXRfYml0KFNUQVRVU19SRUFEWSwgJnByaXYtPnN0YXR1cyk7CiAJd2FrZV91cF9pbnRlcnJ1cHRpYmxlKCZwcml2LT53YWl0X2NvbW1hbmRfcXVldWUpOwogCiAJaWYgKHByaXYtPmVycm9yX3JlY292ZXJpbmcpCkBAIC05MjgyLDcgKzkyODIsNyBAQAogCXJldHVybiBlcnI7CiB9CiAKLXN0YXRpYyB2b2lkIGl3bDQ5NjVfcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldikKK3N0YXRpYyB2b2lkIF9fZGV2ZXhpdCBpd2w0OTY1X3BjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpCiB7CiAJc3RydWN0IGl3bDQ5NjVfcHJpdiAqcHJpdiA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTsKIAlzdHJ1Y3QgbGlzdF9oZWFkICpwLCAqcTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2xpYmVydGFzL2Fzc29jLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9saWJlcnRhcy9hc3NvYy5jCmluZGV4IDg3ZTE0NWYuLjZhMjRlZDYwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9saWJlcnRhcy9hc3NvYy5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2xpYmVydGFzL2Fzc29jLmMKQEAgLTU0MSw3ICs1NDEsNyBAQAogCX0KIAogCWlmIChmaW5kX2FueV9zc2lkKSB7Ci0JCXU4IG5ld19tb2RlOworCQl1OCBuZXdfbW9kZSA9IGFzc29jX3JlcS0+bW9kZTsKIAogCQlyZXQgPSBsYnNfZmluZF9iZXN0X25ldHdvcmtfc3NpZChwcml2LCBhc3NvY19yZXEtPnNzaWQsCiAJCQkJJmFzc29jX3JlcS0+c3NpZF9sZW4sIGFzc29jX3JlcS0+bW9kZSwgJm5ld19tb2RlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2xpYmVydGFzL2NtZHJlc3AuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2xpYmVydGFzL2NtZHJlc3AuYwppbmRleCBiZGM2YTFjLi5mMGVmNzA4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9saWJlcnRhcy9jbWRyZXNwLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbGliZXJ0YXMvY21kcmVzcC5jCkBAIC01NzgsNyArNTc4LDcgQEAKIAkJZ290byBkb25lOwogCX0KIAlpZiAocmVzcGNtZCAhPSBDTURfUkVUKGN1cmNtZCkgJiYKLQkgICAgcmVzcGNtZCAhPSBDTURfODAyXzExX0FTU09DSUFURSAmJiBjdXJjbWQgIT0gQ01EX1JFVF84MDJfMTFfQVNTT0NJQVRFKSB7CisJICAgIHJlc3BjbWQgIT0gQ01EX1JFVF84MDJfMTFfQVNTT0NJQVRFICYmIGN1cmNtZCAhPSBDTURfODAyXzExX0FTU09DSUFURSkgewogCQlsYnNfcHJfaW5mbygiSW52YWxpZCBDTURfUkVTUCAleCB0byBjb21tYW5kICV4IVxuIiwgcmVzcGNtZCwgY3VyY21kKTsKIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcHJpdi0+ZHJpdmVyX2xvY2ssIGZsYWdzKTsKIAkJcmV0ID0gLTE7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9saWJlcnRhcy9pZl9jcy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbGliZXJ0YXMvaWZfY3MuYwppbmRleCA1YTljYWRiLi4wMzhjNjZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9saWJlcnRhcy9pZl9jcy5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2xpYmVydGFzL2lmX2NzLmMKQEAgLTY3Nyw5ICs2NzcsNyBAQAogCiAJLyogQ2FyZCBoYXMgYSBjb21tYW5kIHJlc3VsdCBmb3IgdXMgKi8KIAlpZiAoKmlyZWcgJiBJRl9DU19DX1NfQ01EX1VQTERfUkRZKSB7Ci0JCXNwaW5fbG9jaygmcHJpdi0+ZHJpdmVyX2xvY2spOwogCQlyZXQgPSBpZl9jc19yZWNlaXZlX2NtZHJlcyhwcml2LCBwcml2LT51cGxkX2J1ZiwgJnByaXYtPnVwbGRfbGVuKTsKLQkJc3Bpbl91bmxvY2soJnByaXYtPmRyaXZlcl9sb2NrKTsKIAkJaWYgKHJldCA8IDApCiAJCQlsYnNfcHJfZXJyKCJjb3VsZCBub3QgcmVjZWl2ZSBjbWQgZnJvbSBjYXJkXG4iKTsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9wNTR1c2IuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3A1NHVzYi5jCmluZGV4IGU3ZDRhZWUuLjk4ZGRiYjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3A1NHVzYi5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3A1NHVzYi5jCkBAIC02Myw2ICs2Myw3IEBACiAJe1VTQl9ERVZJQ0UoMHgwY2RlLCAweDAwMDgpfSwJLyogU2FnZW0gWEc3MDNBICovCiAJe1VTQl9ERVZJQ0UoMHgwZDhlLCAweDM3NjIpfSwJLyogRExpbmsgRFdMLUcxMjAgQ29oaWJhICovCiAJe1VTQl9ERVZJQ0UoMHgwOWFhLCAweDEwMDApfSwJLyogU3Bpbm5ha2VyIFByb3RvIGJvYXJkICovCisJe1VTQl9ERVZJQ0UoMHgxMjRhLCAweDQwMjUpfSwJLyogSU9HZWFyIEdXVTUxMyAoR1czODg3SUsgY2hpcCkgKi8KIAl7VVNCX0RFVklDRSgweDEzYjEsIDB4MDAwYSl9LAkvKiBMaW5rc3lzIFdVU0I1NEcgdmVyIDIgKi8KIAl7VVNCX0RFVklDRSgweDEzQjEsIDB4MDAwQyl9LAkvKiBMaW5rc3lzIFdVU0I1NEFHICovCiAJe1VTQl9ERVZJQ0UoMHgxNDM1LCAweDA0MjcpfSwJLyogSW52ZW50ZWwgVVIwNTRHICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwLmgKaW5kZXggMDU5MjdiOS4uNmM3MjU0MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMC5oCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDJ4MDAuaApAQCAtNjIwLDYgKzYyMCw5IEBACiAJICogVGhpcyB3aWxsIG9ubHkgYmUgY29tcGlsZWQgaW4gd2hlbiByZXF1aXJlZC4KIAkgKi8KICNpZmRlZiBDT05GSUdfUlQyWDAwX0xJQl9SRktJTEwKK3Vuc2lnbmVkIGxvbmcgcmZraWxsX3N0YXRlOworI2RlZmluZSBSRktJTExfU1RBVEVfQUxMT0NBVEVECQkxCisjZGVmaW5lIFJGS0lMTF9TVEFURV9SRUdJU1RFUkVECQkyCiAJc3RydWN0IHJma2lsbCAqcmZraWxsOwogCXN0cnVjdCBpbnB1dF9wb2xsZWRfZGV2ICpwb2xsX2RldjsKICNlbmRpZiAvKiBDT05GSUdfUlQyWDAwX0xJQl9SRktJTEwgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDJ4MDBkZXYuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDJ4MDBkZXYuYwppbmRleCAwZDUxZjQ3Li5lODczYTM5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwZGV2LmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMGRldi5jCkBAIC0xMDk4LDcgKzEwOTgsNyBAQAogCQlyZXR1cm47CiAKIAkvKgotCSAqIFVucmVnaXN0ZXIgcmZraWxsLgorCSAqIFVucmVnaXN0ZXIgZXh0cmEgY29tcG9uZW50cy4KIAkgKi8KIAlydDJ4MDByZmtpbGxfdW5yZWdpc3RlcihydDJ4MDBkZXYpOwogCkBAIC0xMTM5LDE3ICsxMTM5LDEyIEBACiAJX19zZXRfYml0KERFVklDRV9JTklUSUFMSVpFRCwgJnJ0MngwMGRldi0+ZmxhZ3MpOwogCiAJLyoKLQkgKiBSZWdpc3RlciB0aGUgcmZraWxsIGhhbmRsZXIuCisJICogUmVnaXN0ZXIgdGhlIGV4dHJhIGNvbXBvbmVudHMuCiAJICovCi0Jc3RhdHVzID0gcnQyeDAwcmZraWxsX3JlZ2lzdGVyKHJ0MngwMGRldik7Ci0JaWYgKHN0YXR1cykKLQkJZ290byBleGl0X3VuaXRpYWxpemU7CisJcnQyeDAwcmZraWxsX3JlZ2lzdGVyKHJ0MngwMGRldik7CiAKIAlyZXR1cm4gMDsKIAotZXhpdF91bml0aWFsaXplOgotCXJ0MngwMGxpYl91bmluaXRpYWxpemUocnQyeDAwZGV2KTsKLQogZXhpdDoKIAlydDJ4MDBsaWJfZnJlZV9yaW5nX2VudHJpZXMocnQyeDAwZGV2KTsKIApAQCAtMTMxMywxNSArMTMwOCw5IEBACiAJfQogCiAJLyoKLQkgKiBBbGxvY2F0aWUgcmZraWxsLgorCSAqIFJlZ2lzdGVyIGV4dHJhIGNvbXBvbmVudHMuCiAJICovCi0JcmV0dmFsID0gcnQyeDAwcmZraWxsX2FsbG9jYXRlKHJ0MngwMGRldik7Ci0JaWYgKHJldHZhbCkKLQkJZ290byBleGl0OwotCi0JLyoKLQkgKiBPcGVuIHRoZSBkZWJ1Z2ZzIGVudHJ5LgotCSAqLworCXJ0MngwMHJma2lsbF9hbGxvY2F0ZShydDJ4MDBkZXYpOwogCXJ0MngwMGRlYnVnX3JlZ2lzdGVyKHJ0MngwMGRldik7CiAKIAlfX3NldF9iaXQoREVWSUNFX1BSRVNFTlQsICZydDJ4MDBkZXYtPmZsYWdzKTsKQEAgLTEzNTAsMTMgKzEzMzksOSBAQAogCXJ0MngwMGxpYl91bmluaXRpYWxpemUocnQyeDAwZGV2KTsKIAogCS8qCi0JICogQ2xvc2UgZGVidWdmcyBlbnRyeS4KKwkgKiBGcmVlIGV4dHJhIGNvbXBvbmVudHMKIAkgKi8KIAlydDJ4MDBkZWJ1Z19kZXJlZ2lzdGVyKHJ0MngwMGRldik7Ci0KLQkvKgotCSAqIEZyZWUgcmZraWxsCi0JICovCiAJcnQyeDAwcmZraWxsX2ZyZWUocnQyeDAwZGV2KTsKIAogCS8qCkBAIC0xMzk1LDIwICsxMzgwLDMzIEBACiAJX19zZXRfYml0KERFVklDRV9TVEFSVEVEX1NVU1BFTkQsICZydDJ4MDBkZXYtPmZsYWdzKTsKIAogCS8qCi0JICogRGlzYWJsZSByYWRpbyBhbmQgdW5pdGlhbGl6ZSBhbGwgaXRlbXMKLQkgKiB0aGF0IG11c3QgYmUgcmVjcmVhdGVkIG9uIHJlc3VtZS4KKwkgKiBEaXNhYmxlIHJhZGlvLgogCSAqLwogCXJ0MngwMGxpYl9zdG9wKHJ0MngwMGRldik7CiAJcnQyeDAwbGliX3VuaW5pdGlhbGl6ZShydDJ4MDBkZXYpOworCisJLyoKKwkgKiBTdXNwZW5kL2Rpc2FibGUgZXh0cmEgY29tcG9uZW50cy4KKwkgKi8KKwlydDJ4MDByZmtpbGxfc3VzcGVuZChydDJ4MDBkZXYpOwogCXJ0MngwMGRlYnVnX2RlcmVnaXN0ZXIocnQyeDAwZGV2KTsKIAogZXhpdDoKIAkvKgotCSAqIFNldCBkZXZpY2UgbW9kZSB0byBzbGVlcCBmb3IgcG93ZXIgbWFuYWdlbWVudC4KKwkgKiBTZXQgZGV2aWNlIG1vZGUgdG8gc2xlZXAgZm9yIHBvd2VyIG1hbmFnZW1lbnQsCisJICogb24gc29tZSBoYXJkd2FyZSB0aGlzIGNhbGwgc2VlbXMgdG8gY29uc2lzdGVudGx5IGZhaWwuCisJICogRnJvbSB0aGUgc3BlY2lmaWNhdGlvbnMgaXQgaXMgaGFyZCB0byB0ZWxsIHdoeSBpdCBmYWlscywKKwkgKiBhbmQgaWYgdGhpcyBpcyBhICJiYWQgdGhpbmciLgorCSAqIE92ZXJhbGwgaXQgaXMgc2FmZSB0byBqdXN0IGlnbm9yZSB0aGUgZmFpbHVyZSBhbmQKKwkgKiBjb250aW51ZSBzdXNwZW5kaW5nLiBUaGUgb25seSBkb3duc2lkZSBpcyB0aGF0IHRoZQorCSAqIGRldmljZSB3aWxsIG5vdCBiZSBpbiBvcHRpbWFsIHBvd2VyIHNhdmUgbW9kZSwgYnV0IHdpdGgKKwkgKiB0aGUgcmFkaW8gYW5kIHRoZSBvdGhlciBjb21wb25lbnRzIGFscmVhZHkgZGlzYWJsZWQgdGhlCisJICogZGV2aWNlIGlzIGFzIGdvb2QgYXMgZGlzYWJsZWQuCiAJICovCiAJcmV0dmFsID0gcnQyeDAwZGV2LT5vcHMtPmxpYi0+c2V0X2RldmljZV9zdGF0ZShydDJ4MDBkZXYsIFNUQVRFX1NMRUVQKTsKIAlpZiAocmV0dmFsKQotCQlyZXR1cm4gcmV0dmFsOworCQlXQVJOSU5HKHJ0MngwMGRldiwgIkRldmljZSBmYWlsZWQgdG8gZW50ZXIgc2xlZXAgc3RhdGUsICIKKwkJCSJjb250aW51ZSBzdXNwZW5kaW5nLlxuIik7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTE0MjIsOSArMTQyMCwxMCBAQAogCU5PVElDRShydDJ4MDBkZXYsICJXYWtpbmcgdXAuXG4iKTsKIAogCS8qCi0JICogT3BlbiB0aGUgZGVidWdmcyBlbnRyeS4KKwkgKiBSZXN0b3JlL2VuYWJsZSBleHRyYSBjb21wb25lbnRzLgogCSAqLwogCXJ0MngwMGRlYnVnX3JlZ2lzdGVyKHJ0MngwMGRldik7CisJcnQyeDAwcmZraWxsX3Jlc3VtZShydDJ4MDBkZXYpOwogCiAJLyoKIAkgKiBPbmx5IGNvbnRpbnVlIGlmIG1hYzgwMjExIGhhZCBvcGVuIGludGVyZmFjZXMuCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwbGliLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwbGliLmgKaW5kZXggMWFkYmQyOC4uY2U1OGM2NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMGxpYi5oCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDJ4MDBsaWIuaApAQCAtMTAwLDI4ICsxMDAsMzYgQEAKICAqIFJGa2lsbCBoYW5kbGVycy4KICAqLwogI2lmZGVmIENPTkZJR19SVDJYMDBfTElCX1JGS0lMTAotaW50IHJ0MngwMHJma2lsbF9yZWdpc3RlcihzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KTsKK3ZvaWQgcnQyeDAwcmZraWxsX3JlZ2lzdGVyKHN0cnVjdCBydDJ4MDBfZGV2ICpydDJ4MDBkZXYpOwogdm9pZCBydDJ4MDByZmtpbGxfdW5yZWdpc3RlcihzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KTsKLWludCBydDJ4MDByZmtpbGxfYWxsb2NhdGUoc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldik7Cit2b2lkIHJ0MngwMHJma2lsbF9hbGxvY2F0ZShzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KTsKIHZvaWQgcnQyeDAwcmZraWxsX2ZyZWUoc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldik7Cit2b2lkIHJ0MngwMHJma2lsbF9zdXNwZW5kKHN0cnVjdCBydDJ4MDBfZGV2ICpydDJ4MDBkZXYpOwordm9pZCBydDJ4MDByZmtpbGxfcmVzdW1lKHN0cnVjdCBydDJ4MDBfZGV2ICpydDJ4MDBkZXYpOwogI2Vsc2UKLXN0YXRpYyBpbmxpbmUgaW50IHJ0MngwMHJma2lsbF9yZWdpc3RlcihzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KQorc3RhdGljIGlubGluZSB2b2lkIHJ0MngwMHJma2lsbF9yZWdpc3RlcihzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KQogewotCXJldHVybiAwOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgcnQyeDAwcmZraWxsX3VucmVnaXN0ZXIoc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldikKIHsKIH0KIAotc3RhdGljIGlubGluZSBpbnQgcnQyeDAwcmZraWxsX2FsbG9jYXRlKHN0cnVjdCBydDJ4MDBfZGV2ICpydDJ4MDBkZXYpCitzdGF0aWMgaW5saW5lIHZvaWQgcnQyeDAwcmZraWxsX2FsbG9jYXRlKHN0cnVjdCBydDJ4MDBfZGV2ICpydDJ4MDBkZXYpCiB7Ci0JcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBydDJ4MDByZmtpbGxfZnJlZShzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KQogewogfQorCitzdGF0aWMgaW5saW5lIHZvaWQgcnQyeDAwcmZraWxsX3N1c3BlbmQoc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldikKK3sKK30KKworc3RhdGljIGlubGluZSB2b2lkIHJ0MngwMHJma2lsbF9yZXN1bWUoc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldikKK3sKK30KICNlbmRpZiAvKiBDT05GSUdfUlQyWDAwX0xJQl9SRktJTEwgKi8KIAogI2VuZGlmIC8qIFJUMlgwMExJQl9IICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwcmZraWxsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwcmZraWxsLmMKaW5kZXggMzRhOTZkNC4uZjk1NTc3NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMHJma2lsbC5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDJ4MDByZmtpbGwuYwpAQCAtNjksNTYgKzY5LDgxIEBACiAJfQogfQogCi1pbnQgcnQyeDAwcmZraWxsX3JlZ2lzdGVyKHN0cnVjdCBydDJ4MDBfZGV2ICpydDJ4MDBkZXYpCit2b2lkIHJ0MngwMHJma2lsbF9yZWdpc3RlcihzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KQogewotCWludCByZXR2YWw7CisJaWYgKCF0ZXN0X2JpdChDT05GSUdfU1VQUE9SVF9IV19CVVRUT04sICZydDJ4MDBkZXYtPmZsYWdzKSB8fAorCSAgICAhdGVzdF9iaXQoUkZLSUxMX1NUQVRFX0FMTE9DQVRFRCwgJnJ0MngwMGRldi0+cmZraWxsX3N0YXRlKSkKKwkJcmV0dXJuOwogCi0JaWYgKCF0ZXN0X2JpdChDT05GSUdfU1VQUE9SVF9IV19CVVRUT04sICZydDJ4MDBkZXYtPmZsYWdzKSkKLQkJcmV0dXJuIDA7Ci0KLQlyZXR2YWwgPSByZmtpbGxfcmVnaXN0ZXIocnQyeDAwZGV2LT5yZmtpbGwpOwotCWlmIChyZXR2YWwpIHsKKwlpZiAocmZraWxsX3JlZ2lzdGVyKHJ0MngwMGRldi0+cmZraWxsKSkgewogCQlFUlJPUihydDJ4MDBkZXYsICJGYWlsZWQgdG8gcmVnaXN0ZXIgcmZraWxsIGhhbmRsZXIuXG4iKTsKLQkJcmV0dXJuIHJldHZhbDsKKwkJcmV0dXJuOwogCX0KIAotCXJldHZhbCA9IGlucHV0X3JlZ2lzdGVyX3BvbGxlZF9kZXZpY2UocnQyeDAwZGV2LT5wb2xsX2Rldik7Ci0JaWYgKHJldHZhbCkgeworCWlmIChpbnB1dF9yZWdpc3Rlcl9wb2xsZWRfZGV2aWNlKHJ0MngwMGRldi0+cG9sbF9kZXYpKSB7CiAJCUVSUk9SKHJ0MngwMGRldiwgIkZhaWxlZCB0byByZWdpc3RlciBwb2xsZWQgZGV2aWNlLlxuIik7CiAJCXJma2lsbF91bnJlZ2lzdGVyKHJ0MngwMGRldi0+cmZraWxsKTsKLQkJcmV0dXJuIHJldHZhbDsKKwkJcmV0dXJuOwogCX0KIAorCV9fc2V0X2JpdChSRktJTExfU1RBVEVfUkVHSVNURVJFRCwgJnJ0MngwMGRldi0+cmZraWxsX3N0YXRlKTsKKwogCS8qCiAJICogRm9yY2UgaW5pdGlhbCBwb2xsIHdoaWNoIHdpbGwgZGV0ZWN0IHRoZSBpbml0aWFsIGRldmljZSBzdGF0ZSwKIAkgKiBhbmQgY29ycmVjdGx5IHNlbmRzIHRoZSBzaWduYWwgdG8gdGhlIHJma2lsbCBsYXllciBhYm91dCB0aGlzCiAJICogc3RhdGUuCiAJICovCiAJcnQyeDAwcmZraWxsX3BvbGwocnQyeDAwZGV2LT5wb2xsX2Rldik7Ci0KLQlyZXR1cm4gMDsKIH0KIAogdm9pZCBydDJ4MDByZmtpbGxfdW5yZWdpc3RlcihzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KQogewotCWlmICghdGVzdF9iaXQoQ09ORklHX1NVUFBPUlRfSFdfQlVUVE9OLCAmcnQyeDAwZGV2LT5mbGFncykpCisJaWYgKCF0ZXN0X2JpdChDT05GSUdfU1VQUE9SVF9IV19CVVRUT04sICZydDJ4MDBkZXYtPmZsYWdzKSB8fAorCSAgICAhdGVzdF9iaXQoUkZLSUxMX1NUQVRFX1JFR0lTVEVSRUQsICZydDJ4MDBkZXYtPnJma2lsbF9zdGF0ZSkpCiAJCXJldHVybjsKIAogCWlucHV0X3VucmVnaXN0ZXJfcG9sbGVkX2RldmljZShydDJ4MDBkZXYtPnBvbGxfZGV2KTsKIAlyZmtpbGxfdW5yZWdpc3RlcihydDJ4MDBkZXYtPnJma2lsbCk7CisKKwlfX2NsZWFyX2JpdChSRktJTExfU1RBVEVfUkVHSVNURVJFRCwgJnJ0MngwMGRldi0+cmZraWxsX3N0YXRlKTsKIH0KIAotaW50IHJ0MngwMHJma2lsbF9hbGxvY2F0ZShzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KQorc3RhdGljIHN0cnVjdCBpbnB1dF9wb2xsZWRfZGV2ICoKK3J0MngwMHJma2lsbF9hbGxvY2F0ZV9wb2xsZGV2KHN0cnVjdCBydDJ4MDBfZGV2ICpydDJ4MDBkZXYpCiB7Ci0Jc3RydWN0IGRldmljZSAqZGV2aWNlID0gd2lwaHlfZGV2KHJ0MngwMGRldi0+aHctPndpcGh5KTsKKwlzdHJ1Y3QgaW5wdXRfcG9sbGVkX2RldiAqcG9sbF9kZXY7CiAKKwlwb2xsX2RldiA9IGlucHV0X2FsbG9jYXRlX3BvbGxlZF9kZXZpY2UoKTsKKwlpZiAoIXBvbGxfZGV2KQorCQlyZXR1cm4gTlVMTDsKKworCXBvbGxfZGV2LT5wcml2YXRlID0gcnQyeDAwZGV2OworCXBvbGxfZGV2LT5wb2xsID0gcnQyeDAwcmZraWxsX3BvbGw7CisJcG9sbF9kZXYtPnBvbGxfaW50ZXJ2YWwgPSBSRktJTExfUE9MTF9JTlRFUlZBTDsKKworCXBvbGxfZGV2LT5pbnB1dC0+bmFtZSA9IHJ0MngwMGRldi0+b3BzLT5uYW1lOworCXBvbGxfZGV2LT5pbnB1dC0+cGh5cyA9IHdpcGh5X25hbWUocnQyeDAwZGV2LT5ody0+d2lwaHkpOworCXBvbGxfZGV2LT5pbnB1dC0+aWQuYnVzdHlwZSA9IEJVU19IT1NUOworCXBvbGxfZGV2LT5pbnB1dC0+aWQudmVuZG9yID0gMHgxODE0OworCXBvbGxfZGV2LT5pbnB1dC0+aWQucHJvZHVjdCA9IHJ0MngwMGRldi0+Y2hpcC5ydDsKKwlwb2xsX2Rldi0+aW5wdXQtPmlkLnZlcnNpb24gPSBydDJ4MDBkZXYtPmNoaXAucmV2OworCXBvbGxfZGV2LT5pbnB1dC0+ZGV2LnBhcmVudCA9IHdpcGh5X2RldihydDJ4MDBkZXYtPmh3LT53aXBoeSk7CisJcG9sbF9kZXYtPmlucHV0LT5ldmJpdFswXSA9IEJJVChFVl9LRVkpOworCXNldF9iaXQoS0VZX1dMQU4sIHBvbGxfZGV2LT5pbnB1dC0+a2V5Yml0KTsKKworCXJldHVybiBwb2xsX2RldjsKK30KKwordm9pZCBydDJ4MDByZmtpbGxfYWxsb2NhdGUoc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldikKK3sKIAlpZiAoIXRlc3RfYml0KENPTkZJR19TVVBQT1JUX0hXX0JVVFRPTiwgJnJ0MngwMGRldi0+ZmxhZ3MpKQotCQlyZXR1cm4gMDsKKwkJcmV0dXJuOwogCi0JcnQyeDAwZGV2LT5yZmtpbGwgPSByZmtpbGxfYWxsb2NhdGUoZGV2aWNlLCBSRktJTExfVFlQRV9XTEFOKTsKKwlydDJ4MDBkZXYtPnJma2lsbCA9CisJICAgIHJma2lsbF9hbGxvY2F0ZSh3aXBoeV9kZXYocnQyeDAwZGV2LT5ody0+d2lwaHkpLCBSRktJTExfVFlQRV9XTEFOKTsKIAlpZiAoIXJ0MngwMGRldi0+cmZraWxsKSB7CiAJCUVSUk9SKHJ0MngwMGRldiwgIkZhaWxlZCB0byBhbGxvY2F0ZSByZmtpbGwgaGFuZGxlci5cbiIpOwotCQlnb3RvIGV4aXQ7CisJCXJldHVybjsKIAl9CiAKIAlydDJ4MDBkZXYtPnJma2lsbC0+bmFtZSA9IHJ0MngwMGRldi0+b3BzLT5uYW1lOwpAQCAtMTI2LDQwICsxNTEsNDkgQEAKIAlydDJ4MDBkZXYtPnJma2lsbC0+c3RhdGUgPSAtMTsKIAlydDJ4MDBkZXYtPnJma2lsbC0+dG9nZ2xlX3JhZGlvID0gcnQyeDAwcmZraWxsX3RvZ2dsZV9yYWRpbzsKIAotCXJ0MngwMGRldi0+cG9sbF9kZXYgPSBpbnB1dF9hbGxvY2F0ZV9wb2xsZWRfZGV2aWNlKCk7CisJcnQyeDAwZGV2LT5wb2xsX2RldiA9IHJ0MngwMHJma2lsbF9hbGxvY2F0ZV9wb2xsZGV2KHJ0MngwMGRldik7CiAJaWYgKCFydDJ4MDBkZXYtPnBvbGxfZGV2KSB7CiAJCUVSUk9SKHJ0MngwMGRldiwgIkZhaWxlZCB0byBhbGxvY2F0ZSBwb2xsZWQgZGV2aWNlLlxuIik7Ci0JCWdvdG8gZXhpdF9mcmVlX3Jma2lsbDsKKwkJcmZraWxsX2ZyZWUocnQyeDAwZGV2LT5yZmtpbGwpOworCQlydDJ4MDBkZXYtPnJma2lsbCA9IE5VTEw7CisJCXJldHVybjsKIAl9CiAKLQlydDJ4MDBkZXYtPnBvbGxfZGV2LT5wcml2YXRlID0gcnQyeDAwZGV2OwotCXJ0MngwMGRldi0+cG9sbF9kZXYtPnBvbGwgPSBydDJ4MDByZmtpbGxfcG9sbDsKLQlydDJ4MDBkZXYtPnBvbGxfZGV2LT5wb2xsX2ludGVydmFsID0gUkZLSUxMX1BPTExfSU5URVJWQUw7Ci0KLQlydDJ4MDBkZXYtPnBvbGxfZGV2LT5pbnB1dC0+bmFtZSA9IHJ0MngwMGRldi0+b3BzLT5uYW1lOwotCXJ0MngwMGRldi0+cG9sbF9kZXYtPmlucHV0LT5waHlzID0gd2lwaHlfbmFtZShydDJ4MDBkZXYtPmh3LT53aXBoeSk7Ci0JcnQyeDAwZGV2LT5wb2xsX2Rldi0+aW5wdXQtPmlkLmJ1c3R5cGUgPSBCVVNfSE9TVDsKLQlydDJ4MDBkZXYtPnBvbGxfZGV2LT5pbnB1dC0+aWQudmVuZG9yID0gMHgxODE0OwotCXJ0MngwMGRldi0+cG9sbF9kZXYtPmlucHV0LT5pZC5wcm9kdWN0ID0gcnQyeDAwZGV2LT5jaGlwLnJ0OwotCXJ0MngwMGRldi0+cG9sbF9kZXYtPmlucHV0LT5pZC52ZXJzaW9uID0gcnQyeDAwZGV2LT5jaGlwLnJldjsKLQlydDJ4MDBkZXYtPnBvbGxfZGV2LT5pbnB1dC0+ZGV2LnBhcmVudCA9IGRldmljZTsKLQlydDJ4MDBkZXYtPnBvbGxfZGV2LT5pbnB1dC0+ZXZiaXRbMF0gPSBCSVQoRVZfS0VZKTsKLQlzZXRfYml0KEtFWV9XTEFOLCBydDJ4MDBkZXYtPnBvbGxfZGV2LT5pbnB1dC0+a2V5Yml0KTsKLQotCXJldHVybiAwOwotCi1leGl0X2ZyZWVfcmZraWxsOgotCXJma2lsbF9mcmVlKHJ0MngwMGRldi0+cmZraWxsKTsKLQotZXhpdDoKLQlyZXR1cm4gLUVOT01FTTsKKwlyZXR1cm47CiB9CiAKIHZvaWQgcnQyeDAwcmZraWxsX2ZyZWUoc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldikKIHsKLQlpZiAoIXRlc3RfYml0KENPTkZJR19TVVBQT1JUX0hXX0JVVFRPTiwgJnJ0MngwMGRldi0+ZmxhZ3MpKQorCWlmICghdGVzdF9iaXQoQ09ORklHX1NVUFBPUlRfSFdfQlVUVE9OLCAmcnQyeDAwZGV2LT5mbGFncykgfHwKKwkgICAgIXRlc3RfYml0KFJGS0lMTF9TVEFURV9BTExPQ0FURUQsICZydDJ4MDBkZXYtPnJma2lsbF9zdGF0ZSkpCiAJCXJldHVybjsKIAogCWlucHV0X2ZyZWVfcG9sbGVkX2RldmljZShydDJ4MDBkZXYtPnBvbGxfZGV2KTsKKwlydDJ4MDBkZXYtPnBvbGxfZGV2ID0gTlVMTDsKKwogCXJma2lsbF9mcmVlKHJ0MngwMGRldi0+cmZraWxsKTsKKwlydDJ4MDBkZXYtPnJma2lsbCA9IE5VTEw7Cit9CisKK3ZvaWQgcnQyeDAwcmZraWxsX3N1c3BlbmQoc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldikKK3sKKwlpZiAoIXRlc3RfYml0KENPTkZJR19TVVBQT1JUX0hXX0JVVFRPTiwgJnJ0MngwMGRldi0+ZmxhZ3MpIHx8CisJICAgICF0ZXN0X2JpdChSRktJTExfU1RBVEVfQUxMT0NBVEVELCAmcnQyeDAwZGV2LT5yZmtpbGxfc3RhdGUpKQorCQlyZXR1cm47CisKKwlpbnB1dF9mcmVlX3BvbGxlZF9kZXZpY2UocnQyeDAwZGV2LT5wb2xsX2Rldik7CisJcnQyeDAwZGV2LT5wb2xsX2RldiA9IE5VTEw7Cit9CisKK3ZvaWQgcnQyeDAwcmZraWxsX3Jlc3VtZShzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KQoreworCWlmICghdGVzdF9iaXQoQ09ORklHX1NVUFBPUlRfSFdfQlVUVE9OLCAmcnQyeDAwZGV2LT5mbGFncykgfHwKKwkgICAgIXRlc3RfYml0KFJGS0lMTF9TVEFURV9BTExPQ0FURUQsICZydDJ4MDBkZXYtPnJma2lsbF9zdGF0ZSkpCisJCXJldHVybjsKKworCXJ0MngwMGRldi0+cG9sbF9kZXYgPSBydDJ4MDByZmtpbGxfYWxsb2NhdGVfcG9sbGRldihydDJ4MDBkZXYpOworCWlmICghcnQyeDAwZGV2LT5wb2xsX2RldikgeworCQlFUlJPUihydDJ4MDBkZXYsICJGYWlsZWQgdG8gYWxsb2NhdGUgcG9sbGVkIGRldmljZS5cbiIpOworCQlyZXR1cm47CisJfQogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0NjFwY2kuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDYxcGNpLmMKaW5kZXggZTgwOGRiOS4uYWQyZTdkNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0NjFwY2kuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQ2MXBjaS5jCkBAIC0yMzAyLDkgKzIzMDIsOSBAQAogCSAqIEFwcGx5IHNvbWUgcnVsZXMgdG8gdGhlIGZpbHRlcnM6CiAJICogLSBTb21lIGZpbHRlcnMgaW1wbHkgZGlmZmVyZW50IGZpbHRlcnMgdG8gYmUgc2V0LgogCSAqIC0gU29tZSB0aGluZ3Mgd2UgY2FuJ3QgZmlsdGVyIG91dCBhdCBhbGwuCisJICogLSBNdWx0aWNhc3QgZmlsdGVyIHNlZW1zIHRvIGtpbGwgYnJvYWRjYXN0IHRyYWZmaWMgc28gbmV2ZXIgdXNlIGl0LgogCSAqLwotCWlmIChtY19jb3VudCkKLQkJKnRvdGFsX2ZsYWdzIHw9IEZJRl9BTExNVUxUSTsKKwkqdG90YWxfZmxhZ3MgfD0gRklGX0FMTE1VTFRJOwogCWlmICgqdG90YWxfZmxhZ3MgJiBGSUZfT1RIRVJfQlNTIHx8CiAJICAgICp0b3RhbF9mbGFncyAmIEZJRl9QUk9NSVNDX0lOX0JTUykKIAkJKnRvdGFsX2ZsYWdzIHw9IEZJRl9QUk9NSVNDX0lOX0JTUyB8IEZJRl9PVEhFUl9CU1M7CkBAIC0yMzk5LDEwICsyMzk5LDggQEAKIAkgKiBiZWFjb24gZnJhbWUuCiAJICovCiAJaWYgKHNrYl9oZWFkcm9vbShza2IpIDwgVFhEX0RFU0NfU0laRSkgewotCQlpZiAocHNrYl9leHBhbmRfaGVhZChza2IsIFRYRF9ERVNDX1NJWkUsIDAsIEdGUF9BVE9NSUMpKSB7Ci0JCQlkZXZfa2ZyZWVfc2tiKHNrYik7CisJCWlmIChwc2tiX2V4cGFuZF9oZWFkKHNrYiwgVFhEX0RFU0NfU0laRSwgMCwgR0ZQX0FUT01JQykpCiAJCQlyZXR1cm4gLUVOT01FTTsKLQkJfQogCX0KIAogCS8qCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQ3M3VzYi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0NzN1c2IuYwppbmRleCA0ZmFjMmQ0Li4zOTA5Y2Y0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQ3M3VzYi5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDczdXNiLmMKQEAgLTE4NjksOSArMTg2OSw5IEBACiAJICogQXBwbHkgc29tZSBydWxlcyB0byB0aGUgZmlsdGVyczoKIAkgKiAtIFNvbWUgZmlsdGVycyBpbXBseSBkaWZmZXJlbnQgZmlsdGVycyB0byBiZSBzZXQuCiAJICogLSBTb21lIHRoaW5ncyB3ZSBjYW4ndCBmaWx0ZXIgb3V0IGF0IGFsbC4KKwkgKiAtIE11bHRpY2FzdCBmaWx0ZXIgc2VlbXMgdG8ga2lsbCBicm9hZGNhc3QgdHJhZmZpYyBzbyBuZXZlciB1c2UgaXQuCiAJICovCi0JaWYgKG1jX2NvdW50KQotCQkqdG90YWxfZmxhZ3MgfD0gRklGX0FMTE1VTFRJOworCSp0b3RhbF9mbGFncyB8PSBGSUZfQUxMTVVMVEk7CiAJaWYgKCp0b3RhbF9mbGFncyAmIEZJRl9PVEhFUl9CU1MgfHwKIAkgICAgKnRvdGFsX2ZsYWdzICYgRklGX1BST01JU0NfSU5fQlNTKQogCQkqdG90YWxfZmxhZ3MgfD0gRklGX1BST01JU0NfSU5fQlNTIHwgRklGX09USEVSX0JTUzsKQEAgLTIwOTUsOSArMjA5NSwxMiBAQAogCXsgVVNCX0RFVklDRSgweDEzNzEsIDB4OTAzMiksIFVTQl9ERVZJQ0VfREFUQSgmcnQ3M3VzYl9vcHMpIH0sCiAJLyogQ29uY2VwdHJvbmljICovCiAJeyBVU0JfREVWSUNFKDB4MTRiMiwgMHgzYzIyKSwgVVNCX0RFVklDRV9EQVRBKCZydDczdXNiX29wcykgfSwKKwkvKiBDb3JlZ2EgKi8KKwl7IFVTQl9ERVZJQ0UoMHgwN2FhLCAweDAwMmUpLCBVU0JfREVWSUNFX0RBVEEoJnJ0NzN1c2Jfb3BzKSB9LAogCS8qIEQtTGluayAqLwogCXsgVVNCX0RFVklDRSgweDA3ZDEsIDB4M2MwMyksIFVTQl9ERVZJQ0VfREFUQSgmcnQ3M3VzYl9vcHMpIH0sCiAJeyBVU0JfREVWSUNFKDB4MDdkMSwgMHgzYzA0KSwgVVNCX0RFVklDRV9EQVRBKCZydDczdXNiX29wcykgfSwKKwl7IFVTQl9ERVZJQ0UoMHgwN2QxLCAweDNjMDcpLCBVU0JfREVWSUNFX0RBVEEoJnJ0NzN1c2Jfb3BzKSB9LAogCS8qIEdlbXRlayAqLwogCXsgVVNCX0RFVklDRSgweDE1YTksIDB4MDAwNCksIFVTQl9ERVZJQ0VfREFUQSgmcnQ3M3VzYl9vcHMpIH0sCiAJLyogR2lnYWJ5dGUgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0bDgxODdfZGV2LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydGw4MTg3X2Rldi5jCmluZGV4IGY0NDUwNTkuLjEzM2IzZjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0bDgxODdfZGV2LmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnRsODE4N19kZXYuYwpAQCAtNTA5LDYgKzUwOSw4IEBACiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAl9CiAKKwlwcml2LT52aWYgPSBjb25mLT52aWY7CisKIAlydGw4MTh4X2lvd3JpdGU4KHByaXYsICZwcml2LT5tYXAtPkVFUFJPTV9DTUQsIFJUTDgxOFhfRUVQUk9NX0NNRF9DT05GSUcpOwogCWZvciAoaSA9IDA7IGkgPCBFVEhfQUxFTjsgaSsrKQogCQlydGw4MTh4X2lvd3JpdGU4KHByaXYsICZwcml2LT5tYXAtPk1BQ1tpXSwKQEAgLTUyMyw2ICs1MjUsNyBAQAogewogCXN0cnVjdCBydGw4MTg3X3ByaXYgKnByaXYgPSBkZXYtPnByaXY7CiAJcHJpdi0+bW9kZSA9IElFRUU4MDIxMV9JRl9UWVBFX01OVFI7CisJcHJpdi0+dmlmID0gTlVMTDsKIH0KIAogc3RhdGljIGludCBydGw4MTg3X2NvbmZpZyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYsIHN0cnVjdCBpZWVlODAyMTFfY29uZiAqY29uZikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3dhdmVsYW5fY3MuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3dhdmVsYW5fY3MuaAppbmRleCBmYWJjNjNlLi4yZTRiZmU0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy93YXZlbGFuX2NzLmgKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3Mvd2F2ZWxhbl9jcy5oCkBAIC0zMDksNyArMzA5LDcgQEAKICNkZWZpbmUJTU1XX0VYVF9BTlRfSU5URVJOQUwJMHgwMAkvKiBJbnRlcm5hbCBhbnRlbm5hICovCiAjZGVmaW5lCU1NV19FWFRfQU5UX0VYVEVSTkFMCTB4MDMJLyogRXh0ZXJuYWwgYW50ZW5uYSAqLwogI2RlZmluZQlNTVdfRVhUX0FOVF9JUV9URVNUCTB4MUMJLyogSVEgdGVzdCBwYXR0ZXJuIChzZXQgdG8gMCkgKi8KLX07Cit9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogCiAvKiBTaXplIGZvciBzdHJ1Y3R1cmUgY2hlY2tpbmcgKGlmIHBhZGRpbmcgaXMgY29ycmVjdCkgKi8KICNkZWZpbmUJTU1XX1NJWkUJMzcKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGFyaXNjL3BkY19zdGFibGUuYyBiL2RyaXZlcnMvcGFyaXNjL3BkY19zdGFibGUuYwppbmRleCBkZTM0YWE5Li5mOWY5YTVmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3BhcmlzYy9wZGNfc3RhYmxlLmMKKysrIGIvZHJpdmVycy9wYXJpc2MvcGRjX3N0YWJsZS5jCkBAIC04MjksNyArODI5LDcgQEAKIAkJCQkgICBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsCiAJCQkJICAgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpCiB7Ci0JcmV0dXJuIHBkY3NfYXV0b193cml0ZShrc2V0LCBhdHRyLCBidWYsIGNvdW50LCBQRl9BVVRPQk9PVCk7CisJcmV0dXJuIHBkY3NfYXV0b193cml0ZShrb2JqLCBhdHRyLCBidWYsIGNvdW50LCBQRl9BVVRPQk9PVCk7CiB9CiAKIC8qKgpAQCAtODQ1LDcgKzg0NSw3IEBACiAJCQkJICAgICBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsCiAJCQkJICAgICBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkKIHsKLQlyZXR1cm4gcGRjc19hdXRvX3dyaXRlKGtzZXQsIGF0dHIsIGJ1ZiwgY291bnQsIFBGX0FVVE9TRUFSQ0gpOworCXJldHVybiBwZGNzX2F1dG9fd3JpdGUoa29iaiwgYXR0ciwgYnVmLCBjb3VudCwgUEZfQVVUT1NFQVJDSCk7CiB9CiAKIC8qKgpAQCAtMTA2Niw3ICsxMDY2LDcgQEAKIAl9CiAKIAkvKiBEb24ndCBmb3JnZXQgdGhlIHJvb3QgZW50cmllcyAqLwotCWVycm9yID0gc3lzZnNfY3JlYXRlX2dyb3VwKHN0YWJsZV9rb2JqLCBwZGNzX2F0dHJfZ3JvdXApOworCWVycm9yID0gc3lzZnNfY3JlYXRlX2dyb3VwKHN0YWJsZV9rb2JqLCAmcGRjc19hdHRyX2dyb3VwKTsKIAogCS8qIHJlZ2lzdGVyIHRoZSBwYXRocyBrc2V0IGFzIGEgY2hpbGQgb2YgdGhlIHN0YWJsZSBrc2V0ICovCiAJcGF0aHNfa3NldCA9IGtzZXRfY3JlYXRlX2FuZF9hZGQoInBhdGhzIiwgTlVMTCwgc3RhYmxlX2tvYmopOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wYXJpc2Mvc2JhX2lvbW11LmMgYi9kcml2ZXJzL3BhcmlzYy9zYmFfaW9tbXUuYwppbmRleCBiZGJlNzgwLi44YzRkMmMxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3BhcmlzYy9zYmFfaW9tbXUuYworKysgYi9kcml2ZXJzL3BhcmlzYy9zYmFfaW9tbXUuYwpAQCAtMzE0LDggKzMxNCw4IEBACiAjZGVmaW5lIFJFU01BUF9NQVNLKG4pICAgICh+MFVMIDw8IChCSVRTX1BFUl9MT05HIC0gKG4pKSkKICNkZWZpbmUgUkVTTUFQX0lEWF9NQVNLICAgKHNpemVvZih1bnNpZ25lZCBsb25nKSAtIDEpCiAKLXVuc2lnbmVkIGxvbmcgcHRyX3RvX3BpZGUoc3RydWN0IGlvYyAqaW9jLCB1bnNpZ25lZCBsb25nICpyZXNfcHRyLAotCQkJICB1bnNpZ25lZCBpbnQgYml0c2hpZnRjbnQpCitzdGF0aWMgdW5zaWduZWQgbG9uZyBwdHJfdG9fcGlkZShzdHJ1Y3QgaW9jICppb2MsIHVuc2lnbmVkIGxvbmcgKnJlc19wdHIsCisJCQkJIHVuc2lnbmVkIGludCBiaXRzaGlmdGNudCkKIHsKIAlyZXR1cm4gKCgodW5zaWduZWQgbG9uZylyZXNfcHRyIC0gKHVuc2lnbmVkIGxvbmcpaW9jLT5yZXNfbWFwKSA8PCAzKQogCQkrIGJpdHNoaWZ0Y250OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wYXJwb3J0L3BhcnBvcnRfcGMuYyBiL2RyaXZlcnMvcGFycG9ydC9wYXJwb3J0X3BjLmMKaW5kZXggZDc2ZDM3Yi4uYTg1ODA4OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9wYXJwb3J0L3BhcnBvcnRfcGMuYworKysgYi9kcml2ZXJzL3BhcnBvcnQvcGFycG9ydF9wYy5jCkBAIC0xNTY4LDkgKzE1NjgsOCBAQAogCQlvdXRiKHIgfCA4LCAweDJGKTsKIAkJb3V0YigweDAyLCAweDJFKTsJLyogTG9jayAqLwogCQlvdXRiKDB4MDIsIDB4MkYpOwotCi0JCXJlbGVhc2VfcmVnaW9uKDB4MmUsIDEpOwogCX0KKwlyZWxlYXNlX3JlZ2lvbigweDJlLCAxKTsKIH0KICNlbmRpZiAvKiBDT05GSUdfUEFSUE9SVF9QQ19TVVBFUklPICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2J1cy5jIGIvZHJpdmVycy9wY2kvYnVzLmMKaW5kZXggNmE5NDAzZC4uZDcwODM1OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvYnVzLmMKKysrIGIvZHJpdmVycy9wY2kvYnVzLmMKQEAgLTE0MywxNCArMTQzLDE4IEBACiAJCQkvKiByZWdpc3RlciB0aGUgYnVzIHdpdGggc3lzZnMgYXMgdGhlIHBhcmVudCBpcyBub3cKIAkJCSAqIHByb3Blcmx5IHJlZ2lzdGVyZWQuICovCiAJCQljaGlsZF9idXMgPSBkZXYtPnN1Ym9yZGluYXRlOworCQkJaWYgKGNoaWxkX2J1cy0+aXNfYWRkZWQpCisJCQkJY29udGludWU7CiAJCQljaGlsZF9idXMtPmRldi5wYXJlbnQgPSBjaGlsZF9idXMtPmJyaWRnZTsKIAkJCXJldHZhbCA9IGRldmljZV9yZWdpc3RlcigmY2hpbGRfYnVzLT5kZXYpOwogCQkJaWYgKHJldHZhbCkKIAkJCQlkZXZfZXJyKCZkZXYtPmRldiwgIkVycm9yIHJlZ2lzdGVyaW5nIHBjaV9idXMsIgogCQkJCQkiIGNvbnRpbnVpbmcuLi5cbiIpOwotCQkJZWxzZQorCQkJZWxzZSB7CisJCQkJY2hpbGRfYnVzLT5pc19hZGRlZCA9IDE7CiAJCQkJcmV0dmFsID0gZGV2aWNlX2NyZWF0ZV9maWxlKCZjaGlsZF9idXMtPmRldiwKIAkJCQkJCQkmZGV2X2F0dHJfY3B1YWZmaW5pdHkpOworCQkJfQogCQkJaWYgKHJldHZhbCkKIAkJCQlkZXZfZXJyKCZkZXYtPmRldiwgIkVycm9yIGNyZWF0aW5nIGNwdWFmZmluaXR5IgogCQkJCQkiIGZpbGUsIGNvbnRpbnVpbmcuLi5cbiIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvaG90cGx1Zy9wY2llaHBfY29yZS5jIGIvZHJpdmVycy9wY2kvaG90cGx1Zy9wY2llaHBfY29yZS5jCmluZGV4IDdmNDgzNmIuLjVmYTRiYTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpL2hvdHBsdWcvcGNpZWhwX2NvcmUuYworKysgYi9kcml2ZXJzL3BjaS9ob3RwbHVnL3BjaWVocF9jb3JlLmMKQEAgLTQ2Nyw3ICs0NjcsNyBAQAogCXRfc2xvdCA9IHBjaWVocF9maW5kX3Nsb3QoY3RybCwgY3RybC0+c2xvdF9kZXZpY2Vfb2Zmc2V0KTsKIAogCXRfc2xvdC0+aHBjX29wcy0+Z2V0X2FkYXB0ZXJfc3RhdHVzKHRfc2xvdCwgJnZhbHVlKTsgLyogQ2hlY2sgaWYgc2xvdCBpcyBvY2N1cGllZCAqLwotCWlmICh2YWx1ZSkgeworCWlmICh2YWx1ZSAmJiBwY2llaHBfZm9yY2UpIHsKIAkJcmMgPSBwY2llaHBfZW5hYmxlX3Nsb3QodF9zbG90KTsKIAkJaWYgKHJjKQkvKiAtRU5PREVWOiBzaG91bGRuJ3QgaGFwcGVuLCBidXQgZGVhbCB3aXRoIGl0ICovCiAJCQl2YWx1ZSA9IDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9pbnRlbC1pb21tdS5jIGIvZHJpdmVycy9wY2kvaW50ZWwtaW9tbXUuYwppbmRleCA5NzdkMjliLi40Y2I5NDlmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3BjaS9pbnRlbC1pb21tdS5jCisrKyBiL2RyaXZlcnMvcGNpL2ludGVsLWlvbW11LmMKQEAgLTEwOTcsNiArMTA5Nyw4IEBACiB9CiAKIHN0YXRpYyBzdHJ1Y3QgaW92YV9kb21haW4gcmVzZXJ2ZWRfaW92YV9saXN0Oworc3RhdGljIHN0cnVjdCBsb2NrX2NsYXNzX2tleSByZXNlcnZlZF9hbGxvY19rZXk7CitzdGF0aWMgc3RydWN0IGxvY2tfY2xhc3Nfa2V5IHJlc2VydmVkX3JidHJlZV9rZXk7CiAKIHN0YXRpYyB2b2lkIGRtYXJfaW5pdF9yZXNlcnZlZF9yYW5nZXModm9pZCkKIHsKQEAgLTExMDcsNiArMTEwOSwxMSBAQAogCiAJaW5pdF9pb3ZhX2RvbWFpbigmcmVzZXJ2ZWRfaW92YV9saXN0LCBETUFfMzJCSVRfUEZOKTsKIAorCWxvY2tkZXBfc2V0X2NsYXNzKCZyZXNlcnZlZF9pb3ZhX2xpc3QuaW92YV9hbGxvY19sb2NrLAorCQkmcmVzZXJ2ZWRfYWxsb2Nfa2V5KTsKKwlsb2NrZGVwX3NldF9jbGFzcygmcmVzZXJ2ZWRfaW92YV9saXN0LmlvdmFfcmJ0cmVlX2xvY2ssCisJCSZyZXNlcnZlZF9yYnRyZWVfa2V5KTsKKwogCS8qIElPQVBJQyByYW5nZXMgc2hvdWxkbid0IGJlIGFjY2Vzc2VkIGJ5IERNQSAqLwogCWlvdmEgPSByZXNlcnZlX2lvdmEoJnJlc2VydmVkX2lvdmFfbGlzdCwgSU9WQV9QRk4oSU9BUElDX1JBTkdFX1NUQVJUKSwKIAkJSU9WQV9QRk4oSU9BUElDX1JBTkdFX0VORCkpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvcGNpLWFjcGkuYyBiL2RyaXZlcnMvcGNpL3BjaS1hY3BpLmMKaW5kZXggNGEyMzY1NC4uNzJmNzQ3NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvcGNpLWFjcGkuYworKysgYi9kcml2ZXJzL3BjaS9wY2ktYWNwaS5jCkBAIC0yNzIsMjEgKzI3MiwyOSBAQAogewogCWFjcGlfaGFuZGxlIGhhbmRsZSA9IERFVklDRV9BQ1BJX0hBTkRMRSgmZGV2LT5kZXYpOwogCWFjcGlfaGFuZGxlIHRtcDsKLQlzdGF0aWMgaW50IHN0YXRlX2NvbnZbXSA9IHsKLQkJWzBdID0gMCwKLQkJWzFdID0gMSwKLQkJWzJdID0gMiwKLQkJWzNdID0gMywKLQkJWzRdID0gMworCXN0YXRpYyBjb25zdCB1OCBzdGF0ZV9jb252W10gPSB7CisJCVtQQ0lfRDBdID0gQUNQSV9TVEFURV9EMCwKKwkJW1BDSV9EMV0gPSBBQ1BJX1NUQVRFX0QxLAorCQlbUENJX0QyXSA9IEFDUElfU1RBVEVfRDIsCisJCVtQQ0lfRDNob3RdID0gQUNQSV9TVEFURV9EMywKKwkJW1BDSV9EM2NvbGRdID0gQUNQSV9TVEFURV9EMwogCX07Ci0JaW50IGFjcGlfc3RhdGUgPSBzdGF0ZV9jb252WyhpbnQgX19mb3JjZSkgc3RhdGVdOwogCiAJaWYgKCFoYW5kbGUpCiAJCXJldHVybiAtRU5PREVWOwogCS8qIElmIHRoZSBBQ1BJIGRldmljZSBoYXMgX0VKMCwgaWdub3JlIHRoZSBkZXZpY2UgKi8KIAlpZiAoQUNQSV9TVUNDRVNTKGFjcGlfZ2V0X2hhbmRsZShoYW5kbGUsICJfRUowIiwgJnRtcCkpKQogCQlyZXR1cm4gMDsKLQlyZXR1cm4gYWNwaV9idXNfc2V0X3Bvd2VyKGhhbmRsZSwgYWNwaV9zdGF0ZSk7CisKKwlzd2l0Y2ggKHN0YXRlKSB7CisJY2FzZSBQQ0lfRDA6CisJY2FzZSBQQ0lfRDE6CisJY2FzZSBQQ0lfRDI6CisJY2FzZSBQQ0lfRDNob3Q6CisJY2FzZSBQQ0lfRDNjb2xkOgorCQlyZXR1cm4gYWNwaV9idXNfc2V0X3Bvd2VyKGhhbmRsZSwgc3RhdGVfY29udltzdGF0ZV0pOworCX0KKwlyZXR1cm4gLUVJTlZBTDsKIH0KIAogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9wY2kuYyBiL2RyaXZlcnMvcGNpL3BjaS5jCmluZGV4IDE4M2ZkZGEuLmE0NDQ1YjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpL3BjaS5jCisrKyBiL2RyaXZlcnMvcGNpL3BjaS5jCkBAIC0zMTQsMjQgKzMxNCw2IEBACiB9CiBFWFBPUlRfU1lNQk9MX0dQTChwY2lfZmluZF9odF9jYXBhYmlsaXR5KTsKIAotdm9pZCBwY2llX3dhaXRfcGVuZGluZ190cmFuc2FjdGlvbihzdHJ1Y3QgcGNpX2RldiAqZGV2KQotewotCWludCBwb3M7Ci0JdTE2IHJlZzE2OwotCi0JcG9zID0gcGNpX2ZpbmRfY2FwYWJpbGl0eShkZXYsIFBDSV9DQVBfSURfRVhQKTsKLQlpZiAoIXBvcykKLQkJcmV0dXJuOwotCXdoaWxlICgxKSB7Ci0JCXBjaV9yZWFkX2NvbmZpZ193b3JkKGRldiwgcG9zICsgUENJX0VYUF9ERVZTVEEsICZyZWcxNik7Ci0JCWlmICghKHJlZzE2ICYgUENJX0VYUF9ERVZTVEFfVFJQTkQpKQotCQkJYnJlYWs7Ci0JCWNwdV9yZWxheCgpOwotCX0KLQotfQotRVhQT1JUX1NZTUJPTF9HUEwocGNpZV93YWl0X3BlbmRpbmdfdHJhbnNhY3Rpb24pOwotCiAvKioKICAqIHBjaV9maW5kX3BhcmVudF9yZXNvdXJjZSAtIHJldHVybiByZXNvdXJjZSByZWdpb24gb2YgcGFyZW50IGJ1cyBvZiBnaXZlbiByZWdpb24KICAqIEBkZXY6IFBDSSBkZXZpY2Ugc3RydWN0dXJlIGNvbnRhaW5zIHJlc291cmNlcyB0byBiZSBzZWFyY2hlZApAQCAtOTM2LDkgKzkxOCw2IEBACiAJaWYgKGF0b21pY19zdWJfcmV0dXJuKDEsICZkZXYtPmVuYWJsZV9jbnQpICE9IDApCiAJCXJldHVybjsKIAotCS8qIFdhaXQgZm9yIGFsbCB0cmFuc2FjdGlvbnMgYXJlIGZpbmlzaGVkIGJlZm9yZSBkaXNhYmxpbmcgdGhlIGRldmljZSAqLwotCXBjaWVfd2FpdF9wZW5kaW5nX3RyYW5zYWN0aW9uKGRldik7Ci0KIAlwY2lfcmVhZF9jb25maWdfd29yZChkZXYsIFBDSV9DT01NQU5ELCAmcGNpX2NvbW1hbmQpOwogCWlmIChwY2lfY29tbWFuZCAmIFBDSV9DT01NQU5EX01BU1RFUikgewogCQlwY2lfY29tbWFuZCAmPSB+UENJX0NPTU1BTkRfTUFTVEVSOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvcXVpcmtzLmMgYi9kcml2ZXJzL3BjaS9xdWlya3MuYwppbmRleCBlOWEzMzNkLi5lODg3YWE0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3BjaS9xdWlya3MuYworKysgYi9kcml2ZXJzL3BjaS9xdWlya3MuYwpAQCAtOTUxLDYgKzk1MSwxMiBAQAogICogYWNjZXNzZXMgdG8gdGhlIFNNQnVzIHJlZ2lzdGVycywgd2l0aCBwb3RlbnRpYWxseSBiYWQgZWZmZWN0cy4gVGh1cyB5b3UKICAqIHNob3VsZCBiZSB2ZXJ5IGNhcmVmdWwgd2hlbiBhZGRpbmcgbmV3IGVudHJpZXM6IGlmIFNNTSBpcyBhY2Nlc3NpbmcgdGhlCiAgKiBJbnRlbCBTTUJ1cywgdGhpcyBpcyBhIHZlcnkgZ29vZCByZWFzb24gdG8gbGVhdmUgaXQgaGlkZGVuLgorICoKKyAqIExpa2V3aXNlLCBtYW55IHJlY2VudCBsYXB0b3BzIHVzZSBBQ1BJIGZvciB0aGVybWFsIG1hbmFnZW1lbnQuIElmIHRoZQorICogQUNQSSBEU0RUIGNvZGUgYWNjZXNzZXMgdGhlIFNNQnVzLCB0aGVuIExpbnV4IHNob3VsZCBub3QgYWNjZXNzIGl0CisgKiBuYXRpdmVseSwgYW5kIGtlZXBpbmcgdGhlIFNNQnVzIGhpZGRlbiBpcyB0aGUgcmlnaHQgdGhpbmcgdG8gZG8uIElmIHlvdQorICogYXJlIGFib3V0IHRvIGFkZCBhbiBlbnRyeSBpbiB0aGUgdGFibGUgYmVsb3csIHBsZWFzZSBmaXJzdCBkaXNhc3NlbWJsZQorICogdGhlIERTRFQgYW5kIGRvdWJsZS1jaGVjayB0aGF0IHRoZXJlIGlzIG5vIGNvZGUgYWNjZXNzaW5nIHRoZSBTTUJ1cy4KICAqLwogc3RhdGljIGludCBhc3VzX2hpZGVzX3NtYnVzOwogCkBAIC0xMDI4LDExICsxMDM0LDYgQEAKIAkJCWNhc2UgMHgxMmJmOiAvKiBIUCB4dzQxMDAgKi8KIAkJCQlhc3VzX2hpZGVzX3NtYnVzID0gMTsKIAkJCX0KLQkJZWxzZSBpZiAoZGV2LT5kZXZpY2UgPT0gUENJX0RFVklDRV9JRF9JTlRFTF84MjkxNUdNX0hCKQotCQkJc3dpdGNoIChkZXYtPnN1YnN5c3RlbV9kZXZpY2UpIHsKLQkJCWNhc2UgMHgwOTljOiAvKiBIUCBDb21wYXEgbng2MTEwICovCi0JCQkJYXN1c19oaWRlc19zbWJ1cyA9IDE7Ci0JCQl9CiAgICAgICAgfSBlbHNlIGlmICh1bmxpa2VseShkZXYtPnN1YnN5c3RlbV92ZW5kb3IgPT0gUENJX1ZFTkRPUl9JRF9TQU1TVU5HKSkgewogICAgICAgICAgICAgICAgaWYgKGRldi0+ZGV2aWNlID09ICBQQ0lfREVWSUNFX0lEX0lOVEVMXzgyODU1UE1fSEIpCiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaChkZXYtPnN1YnN5c3RlbV9kZXZpY2UpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL3NldHVwLWJ1cy5jIGIvZHJpdmVycy9wY2kvc2V0dXAtYnVzLmMKaW5kZXggMTI1ZTdiNy4uZjdjYjhlMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvc2V0dXAtYnVzLmMKKysrIGIvZHJpdmVycy9wY2kvc2V0dXAtYnVzLmMKQEAgLTQ4NiwxMiArNDg2LDcgQEAKIAkJYnJlYWs7CiAKIAljYXNlIFBDSV9DTEFTU19CUklER0VfUENJOgotCQkvKiBkb24ndCBzaXplIHN1YnRyYWN0aXZlIGRlY29kaW5nICh0cmFuc3BhcmVudCkKLQkJICogUENJLXRvLVBDSSBicmlkZ2VzICovCi0JCWlmIChidXMtPnNlbGYtPnRyYW5zcGFyZW50KQotCQkJYnJlYWs7CiAJCXBjaV9icmlkZ2VfY2hlY2tfcmFuZ2VzKGJ1cyk7Ci0JCS8qIGZhbGwgdGhyb3VnaCAqLwogCWRlZmF1bHQ6CiAJCXBidXNfc2l6ZV9pbyhidXMpOwogCQkvKiBJZiB0aGUgYnJpZGdlIHN1cHBvcnRzIHByZWZldGNoYWJsZSByYW5nZSwgc2l6ZSBpdApkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY21jaWEvYXQ5MV9jZi5jIGIvZHJpdmVycy9wY21jaWEvYXQ5MV9jZi5jCmluZGV4IDM4NWUxNDUuLjY4NDk2ODUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNtY2lhL2F0OTFfY2YuYworKysgYi9kcml2ZXJzL3BjbWNpYS9hdDkxX2NmLmMKQEAgLTQxOSwzICs0MTksNCBAQAogTU9EVUxFX0RFU0NSSVBUSU9OKCJBVDkxIENvbXBhY3QgRmxhc2ggRHJpdmVyIik7CiBNT0RVTEVfQVVUSE9SKCJEYXZpZCBCcm93bmVsbCIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybTphdDkxX2NmIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjbWNpYS9vbWFwX2NmLmMgYi9kcml2ZXJzL3BjbWNpYS9vbWFwX2NmLmMKaW5kZXggMmRmMjE2Yi4uYmI2ZGIzYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY21jaWEvb21hcF9jZi5jCisrKyBiL2RyaXZlcnMvcGNtY2lhL29tYXBfY2YuYwpAQCAtMzQ0LDYgKzM0NCw3IEBACiBzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBvbWFwX2NmX2RyaXZlciA9IHsKIAkuZHJpdmVyID0gewogCQkubmFtZQk9IChjaGFyICopIGRyaXZlcl9uYW1lLAorCQkub3duZXIJPSBUSElTX01PRFVMRSwKIAl9LAogCS5yZW1vdmUJCT0gX19leGl0X3Aob21hcF9jZl9yZW1vdmUpLAogCS5zdXNwZW5kCT0gb21hcF9jZl9zdXNwZW5kLApAQCAtMzY4LDMgKzM2OSw0IEBACiAKIE1PRFVMRV9ERVNDUklQVElPTigiT01BUCBDRiBEcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06b21hcF9jZiIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY21jaWEvcHhhMnh4X2Jhc2UuYyBiL2RyaXZlcnMvcGNtY2lhL3B4YTJ4eF9iYXNlLmMKaW5kZXggZTQzOTA0NC4uOTQxNDE2MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY21jaWEvcHhhMnh4X2Jhc2UuYworKysgYi9kcml2ZXJzL3BjbWNpYS9weGEyeHhfYmFzZS5jCkBAIC0yMzksNiArMjM5LDcgQEAKIAkucmVzdW1lIAk9IHB4YTJ4eF9kcnZfcGNtY2lhX3Jlc3VtZSwKIAkuZHJpdmVyCQk9IHsKIAkJLm5hbWUJPSAicHhhMnh4LXBjbWNpYSIsCisJCS5vd25lcgk9IFRISVNfTU9EVUxFLAogCX0sCiB9OwogCkBAIC0yNTgsMyArMjU5LDQgQEAKIE1PRFVMRV9BVVRIT1IoIlN0ZWZhbiBFbGV0emhvZmVyIDxzdGVmYW4uZWxldHpob2ZlckBpbnF1YW50LmRlPiBhbmQgSWFuIE1vbHRvbiA8c3B5cm9AZjJzLmNvbT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTGludXggUENNQ0lBIENhcmQgU2VydmljZXM6IFBYQTJ4eCBjb3JlIHNvY2tldCBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06cHhhMnh4LXBjbWNpYSIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wbnAvaXNhcG5wL2NvcmUuYyBiL2RyaXZlcnMvcG5wL2lzYXBucC9jb3JlLmMKaW5kZXggMmM5MjViNy4uMjU3ZjVkOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9wbnAvaXNhcG5wL2NvcmUuYworKysgYi9kcml2ZXJzL3BucC9pc2FwbnAvY29yZS5jCkBAIC04OCw2ICs4OCwxNSBAQAogI2RlZmluZSBfTFRBR19NRU0zMlJBTkdFCTB4ODUKICNkZWZpbmUgX0xUQUdfRklYRURNRU0zMlJBTkdFCTB4ODYKIAorLyoKKyAqIFNpemVzIG9mIElTQVBOUCBsb2dpY2FsIGRldmljZSBjb25maWd1cmF0aW9uIHJlZ2lzdGVyIHNldHMuCisgKiBTZWUgUE5QLUlTQS12MS4wYS5wZGYsIEFwcGVuZGl4IEEuCisgKi8KKyNkZWZpbmUgSVNBUE5QX01BWF9NRU0JCTQKKyNkZWZpbmUgSVNBUE5QX01BWF9QT1JUCQk4CisjZGVmaW5lIElTQVBOUF9NQVhfSVJRCQkyCisjZGVmaW5lIElTQVBOUF9NQVhfRE1BCQkyCisKIHN0YXRpYyB1bnNpZ25lZCBjaGFyIGlzYXBucF9jaGVja3N1bV92YWx1ZTsKIHN0YXRpYyBERUZJTkVfTVVURVgoaXNhcG5wX2NmZ19tdXRleCk7CiBzdGF0aWMgaW50IGlzYXBucF9jc25fY291bnQ7CkBAIC05NDUsMTQgKzk1NCwxNCBAQAogCiAJZGV2LT5hY3RpdmUgPSBpc2FwbnBfcmVhZF9ieXRlKElTQVBOUF9DRkdfQUNUSVZBVEUpOwogCWlmIChkZXYtPmFjdGl2ZSkgewotCQlmb3IgKHRtcCA9IDA7IHRtcCA8IFBOUF9NQVhfUE9SVDsgdG1wKyspIHsKKwkJZm9yICh0bXAgPSAwOyB0bXAgPCBJU0FQTlBfTUFYX1BPUlQ7IHRtcCsrKSB7CiAJCQlyZXQgPSBpc2FwbnBfcmVhZF93b3JkKElTQVBOUF9DRkdfUE9SVCArICh0bXAgPDwgMSkpOwogCQkJaWYgKCFyZXQpCiAJCQkJY29udGludWU7CiAJCQlyZXMtPnBvcnRfcmVzb3VyY2VbdG1wXS5zdGFydCA9IHJldDsKIAkJCXJlcy0+cG9ydF9yZXNvdXJjZVt0bXBdLmZsYWdzID0gSU9SRVNPVVJDRV9JTzsKIAkJfQotCQlmb3IgKHRtcCA9IDA7IHRtcCA8IFBOUF9NQVhfTUVNOyB0bXArKykgeworCQlmb3IgKHRtcCA9IDA7IHRtcCA8IElTQVBOUF9NQVhfTUVNOyB0bXArKykgewogCQkJcmV0ID0KIAkJCSAgICBpc2FwbnBfcmVhZF93b3JkKElTQVBOUF9DRkdfTUVNICsgKHRtcCA8PCAzKSkgPDwgODsKIAkJCWlmICghcmV0KQpAQCAtOTYwLDcgKzk2OSw3IEBACiAJCQlyZXMtPm1lbV9yZXNvdXJjZVt0bXBdLnN0YXJ0ID0gcmV0OwogCQkJcmVzLT5tZW1fcmVzb3VyY2VbdG1wXS5mbGFncyA9IElPUkVTT1VSQ0VfTUVNOwogCQl9Ci0JCWZvciAodG1wID0gMDsgdG1wIDwgUE5QX01BWF9JUlE7IHRtcCsrKSB7CisJCWZvciAodG1wID0gMDsgdG1wIDwgSVNBUE5QX01BWF9JUlE7IHRtcCsrKSB7CiAJCQlyZXQgPQogCQkJICAgIChpc2FwbnBfcmVhZF93b3JkKElTQVBOUF9DRkdfSVJRICsgKHRtcCA8PCAxKSkgPj4KIAkJCSAgICAgOCk7CkBAIC05NzAsNyArOTc5LDcgQEAKIAkJCSAgICByZXMtPmlycV9yZXNvdXJjZVt0bXBdLmVuZCA9IHJldDsKIAkJCXJlcy0+aXJxX3Jlc291cmNlW3RtcF0uZmxhZ3MgPSBJT1JFU09VUkNFX0lSUTsKIAkJfQotCQlmb3IgKHRtcCA9IDA7IHRtcCA8IFBOUF9NQVhfRE1BOyB0bXArKykgeworCQlmb3IgKHRtcCA9IDA7IHRtcCA8IElTQVBOUF9NQVhfRE1BOyB0bXArKykgewogCQkJcmV0ID0gaXNhcG5wX3JlYWRfYnl0ZShJU0FQTlBfQ0ZHX0RNQSArIHRtcCk7CiAJCQlpZiAocmV0ID09IDQpCiAJCQkJY29udGludWU7CkBAIC0xMDAyLDE0ICsxMDExLDE0IEBACiAJaXNhcG5wX2NmZ19iZWdpbihkZXYtPmNhcmQtPm51bWJlciwgZGV2LT5udW1iZXIpOwogCWRldi0+YWN0aXZlID0gMTsKIAlmb3IgKHRtcCA9IDA7Ci0JICAgICB0bXAgPCBQTlBfTUFYX1BPUlQKKwkgICAgIHRtcCA8IElTQVBOUF9NQVhfUE9SVAogCSAgICAgJiYgKHJlcy0+cG9ydF9yZXNvdXJjZVt0bXBdLgogCQkgZmxhZ3MgJiAoSU9SRVNPVVJDRV9JTyB8IElPUkVTT1VSQ0VfVU5TRVQpKSA9PSBJT1JFU09VUkNFX0lPOwogCSAgICAgdG1wKyspCiAJCWlzYXBucF93cml0ZV93b3JkKElTQVBOUF9DRkdfUE9SVCArICh0bXAgPDwgMSksCiAJCQkJICByZXMtPnBvcnRfcmVzb3VyY2VbdG1wXS5zdGFydCk7CiAJZm9yICh0bXAgPSAwOwotCSAgICAgdG1wIDwgUE5QX01BWF9JUlEKKwkgICAgIHRtcCA8IElTQVBOUF9NQVhfSVJRCiAJICAgICAmJiAocmVzLT5pcnFfcmVzb3VyY2VbdG1wXS4KIAkJIGZsYWdzICYgKElPUkVTT1VSQ0VfSVJRIHwgSU9SRVNPVVJDRV9VTlNFVCkpID09IElPUkVTT1VSQ0VfSVJROwogCSAgICAgdG1wKyspIHsKQEAgLTEwMTksMTQgKzEwMjgsMTQgQEAKIAkJaXNhcG5wX3dyaXRlX2J5dGUoSVNBUE5QX0NGR19JUlEgKyAodG1wIDw8IDEpLCBpcnEpOwogCX0KIAlmb3IgKHRtcCA9IDA7Ci0JICAgICB0bXAgPCBQTlBfTUFYX0RNQQorCSAgICAgdG1wIDwgSVNBUE5QX01BWF9ETUEKIAkgICAgICYmIChyZXMtPmRtYV9yZXNvdXJjZVt0bXBdLgogCQkgZmxhZ3MgJiAoSU9SRVNPVVJDRV9ETUEgfCBJT1JFU09VUkNFX1VOU0VUKSkgPT0gSU9SRVNPVVJDRV9ETUE7CiAJICAgICB0bXArKykKIAkJaXNhcG5wX3dyaXRlX2J5dGUoSVNBUE5QX0NGR19ETUEgKyB0bXAsCiAJCQkJICByZXMtPmRtYV9yZXNvdXJjZVt0bXBdLnN0YXJ0KTsKIAlmb3IgKHRtcCA9IDA7Ci0JICAgICB0bXAgPCBQTlBfTUFYX01FTQorCSAgICAgdG1wIDwgSVNBUE5QX01BWF9NRU0KIAkgICAgICYmIChyZXMtPm1lbV9yZXNvdXJjZVt0bXBdLgogCQkgZmxhZ3MgJiAoSU9SRVNPVVJDRV9NRU0gfCBJT1JFU09VUkNFX1VOU0VUKSkgPT0gSU9SRVNPVVJDRV9NRU07CiAJICAgICB0bXArKykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcG5wL3BucGFjcGkvcnNwYXJzZXIuYyBiL2RyaXZlcnMvcG5wL3BucGFjcGkvcnNwYXJzZXIuYwppbmRleCA2YWEyMzFlLi4yZGNkMTk2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3BucC9wbnBhY3BpL3JzcGFyc2VyLmMKKysrIGIvZHJpdmVycy9wbnAvcG5wYWNwaS9yc3BhcnNlci5jCkBAIC04NSw3ICs4NSw3IEBACiAJICAgICAgIGkgPCBQTlBfTUFYX0lSUSkKIAkJaSsrOwogCWlmIChpID49IFBOUF9NQVhfSVJRICYmICF3YXJuZWQpIHsKLQkJcHJpbnRrKEtFUk5fRVJSICJwbnBhY3BpOiBleGNlZWRlZCB0aGUgbWF4IG51bWJlciBvZiBJUlEgIgorCQlwcmludGsoS0VSTl9XQVJOSU5HICJwbnBhY3BpOiBleGNlZWRlZCB0aGUgbWF4IG51bWJlciBvZiBJUlEgIgogCQkJCSJyZXNvdXJjZXM6ICVkIFxuIiwgUE5QX01BWF9JUlEpOwogCQl3YXJuZWQgPSAxOwogCQlyZXR1cm47CkBAIC0xODcsNyArMTg3LDcgQEAKIAkJcmVzLT5kbWFfcmVzb3VyY2VbaV0uc3RhcnQgPSBkbWE7CiAJCXJlcy0+ZG1hX3Jlc291cmNlW2ldLmVuZCA9IGRtYTsKIAl9IGVsc2UgaWYgKCF3YXJuZWQpIHsKLQkJcHJpbnRrKEtFUk5fRVJSICJwbnBhY3BpOiBleGNlZWRlZCB0aGUgbWF4IG51bWJlciBvZiBETUEgIgorCQlwcmludGsoS0VSTl9XQVJOSU5HICJwbnBhY3BpOiBleGNlZWRlZCB0aGUgbWF4IG51bWJlciBvZiBETUEgIgogCQkJCSJyZXNvdXJjZXM6ICVkIFxuIiwgUE5QX01BWF9ETUEpOwogCQl3YXJuZWQgPSAxOwogCX0KQEAgLTIxMyw3ICsyMTMsNyBAQAogCQlyZXMtPnBvcnRfcmVzb3VyY2VbaV0uc3RhcnQgPSBpbzsKIAkJcmVzLT5wb3J0X3Jlc291cmNlW2ldLmVuZCA9IGlvICsgbGVuIC0gMTsKIAl9IGVsc2UgaWYgKCF3YXJuZWQpIHsKLQkJcHJpbnRrKEtFUk5fRVJSICJwbnBhY3BpOiBleGNlZWRlZCB0aGUgbWF4IG51bWJlciBvZiBJTyAiCisJCXByaW50ayhLRVJOX1dBUk5JTkcgInBucGFjcGk6IGV4Y2VlZGVkIHRoZSBtYXggbnVtYmVyIG9mIElPICIKIAkJCQkicmVzb3VyY2VzOiAlZCBcbiIsIFBOUF9NQVhfUE9SVCk7CiAJCXdhcm5lZCA9IDE7CiAJfQpAQCAtMjQxLDcgKzI0MSw3IEBACiAJCXJlcy0+bWVtX3Jlc291cmNlW2ldLnN0YXJ0ID0gbWVtOwogCQlyZXMtPm1lbV9yZXNvdXJjZVtpXS5lbmQgPSBtZW0gKyBsZW4gLSAxOwogCX0gZWxzZSBpZiAoIXdhcm5lZCkgewotCQlwcmludGsoS0VSTl9FUlIgInBucGFjcGk6IGV4Y2VlZGVkIHRoZSBtYXggbnVtYmVyIG9mIG1lbSAiCisJCXByaW50ayhLRVJOX1dBUk5JTkcgInBucGFjcGk6IGV4Y2VlZGVkIHRoZSBtYXggbnVtYmVyIG9mIG1lbSAiCiAJCQkJInJlc291cmNlczogJWRcbiIsIFBOUF9NQVhfTUVNKTsKIAkJd2FybmVkID0gMTsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3BucC9xdWlya3MuYyBiL2RyaXZlcnMvcG5wL3F1aXJrcy5jCmluZGV4IDQwNjUxMzkuLjM3OTkzMjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcG5wL3F1aXJrcy5jCisrKyBiL2RyaXZlcnMvcG5wL3F1aXJrcy5jCkBAIC0xNyw3ICsxNyw2IEBACiAjaW5jbHVkZSA8bGludXgvc2xhYi5oPgogI2luY2x1ZGUgPGxpbnV4L3BucC5oPgogI2luY2x1ZGUgPGxpbnV4L2lvLmg+Ci0jaW5jbHVkZSA8bGludXgvZG1pLmg+CiAjaW5jbHVkZSA8bGludXgva2FsbHN5bXMuaD4KICNpbmNsdWRlICJiYXNlLmgiCiAKQEAgLTEwOSw0MiArMTA4LDczIEBACiAJCSAgICAgICAicG5wOiBTQiBhdWRpbyBkZXZpY2UgcXVpcmsgLSBpbmNyZWFzaW5nIHBvcnQgcmFuZ2VcbiIpOwogfQogCi1zdGF0aWMgdm9pZCBxdWlya19zdXBlcm1pY3JvX2g4ZGNlX3N5c3RlbShzdHJ1Y3QgcG5wX2RldiAqZGV2KQotewotCWludCBpOwotCXN0YXRpYyBzdHJ1Y3QgZG1pX3N5c3RlbV9pZCBzdXBlcm1pY3JvX2g4ZGNlW10gPSB7Ci0JCXsKLQkJCS5pZGVudCA9ICJTdXBlcm1pY3JvIEg4RENFIiwKLQkJCS5tYXRjaGVzID0gewotCQkJCURNSV9NQVRDSChETUlfU1lTX1ZFTkRPUiwgIlN1cGVybWljcm8iKSwKLQkJCQlETUlfTUFUQ0goRE1JX1BST0RVQ1RfTkFNRSwgIkg4RENFIiksCi0JCQl9LAotCQl9LAotCQl7IH0KLQl9OwogCi0JaWYgKCFkbWlfY2hlY2tfc3lzdGVtKHN1cGVybWljcm9faDhkY2UpKQotCQlyZXR1cm47CisjaW5jbHVkZSA8bGludXgvcGNpLmg+CisKK3N0YXRpYyB2b2lkIHF1aXJrX3N5c3RlbV9wY2lfcmVzb3VyY2VzKHN0cnVjdCBwbnBfZGV2ICpkZXYpCit7CisJc3RydWN0IHBjaV9kZXYgKnBkZXYgPSBOVUxMOworCXJlc291cmNlX3NpemVfdCBwbnBfc3RhcnQsIHBucF9lbmQsIHBjaV9zdGFydCwgcGNpX2VuZDsKKwlpbnQgaSwgajsKIAogCS8qCi0JICogT24gdGhlIFN1cGVybWljcm8gSDhEQ0UsIHRoZXJlJ3MgYSBzeXN0ZW0gZGV2aWNlIHdpdGggcmVzb3VyY2VzCi0JICogdGhhdCBvdmVybGFwIEJBUiA2IG9mIHRoZSBidWlsdC1pbiBTQVRBIFBDSSBhZGFwdGVyLiAgSWYgdGhlIFBOUAotCSAqIHN5c3RlbSBkZXZpY2UgY2xhaW1zIHRoZW0sIHRoZSBzYXRhX252IGRyaXZlciB3b24ndCBiZSBhYmxlIHRvLgotCSAqIE1vcmUgZGV0YWlscyBhdDoKLQkgKiAgICAgaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD0yODA2NDEKLQkgKiAgICAgaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD0zMTM0OTEKLQkgKiAgICAgaHR0cDovL2xrbWwub3JnL2xrbWwvMjAwOC8xLzkvNDQ5Ci0JICogICAgIGh0dHA6Ly90aHJlYWQuZ21hbmUub3JnL2dtYW5lLmxpbnV4LmFjcGkuZGV2ZWwvMjczMTIKKwkgKiBTb21lIEJJT1NlcyBoYXZlIFBOUCBtb3RoZXJib2FyZCBkZXZpY2VzIHdpdGggcmVzb3VyY2VzIHRoYXQKKwkgKiBwYXJ0aWFsbHkgb3ZlcmxhcCBQQ0kgQkFScy4gIFRoZSBQTlAgc3lzdGVtIGRyaXZlciBjbGFpbXMgdGhlc2UKKwkgKiBtb3RoZXJib2FyZCByZXNvdXJjZXMsIHdoaWNoIHByZXZlbnRzIHRoZSBub3JtYWwgUENJIGRyaXZlciBmcm9tCisJICogcmVxdWVzdGluZyB0aGVtIGxhdGVyLgorCSAqCisJICogVGhpcyBwYXRjaCBkaXNhYmxlcyB0aGUgUE5QIHJlc291cmNlcyB0aGF0IGNvbmZsaWN0IHdpdGggUENJIEJBUnMKKwkgKiBzbyB0aGV5IHdvbid0IGJlIGNsYWltZWQgYnkgdGhlIFBOUCBzeXN0ZW0gZHJpdmVyLgogCSAqLwotCWZvciAoaSA9IDA7IGkgPCBQTlBfTUFYX01FTTsgaSsrKSB7Ci0JCWlmIChwbnBfbWVtX3ZhbGlkKGRldiwgaSkgJiYgcG5wX21lbV9sZW4oZGV2LCBpKSAmJgotCQkgICAgKHBucF9tZW1fc3RhcnQoZGV2LCBpKSAmIDB4ZGZlZjAwMDApID09IDB4ZGZlZjAwMDApIHsKLQkJCWRldl93YXJuKCZkZXYtPmRldiwgImRpc2FibGluZyAweCVsbHgtMHglbGx4IHRvIHByZXZlbnQiCi0JCQkJIiBjb25mbGljdCB3aXRoIHNhdGFfbnYgUENJIGRldmljZVxuIiwKLQkJCQkodW5zaWduZWQgbG9uZyBsb25nKSBwbnBfbWVtX3N0YXJ0KGRldiwgaSksCi0JCQkJKHVuc2lnbmVkIGxvbmcgbG9uZykgKHBucF9tZW1fc3RhcnQoZGV2LCBpKSArCi0JCQkJCXBucF9tZW1fbGVuKGRldiwgaSkgLSAxKSk7Ci0JCQlwbnBfbWVtX2ZsYWdzKGRldiwgaSkgPSAwOworCWZvcl9lYWNoX3BjaV9kZXYocGRldikgeworCQlmb3IgKGkgPSAwOyBpIDwgREVWSUNFX0NPVU5UX1JFU09VUkNFOyBpKyspIHsKKwkJCWlmICghKHBjaV9yZXNvdXJjZV9mbGFncyhwZGV2LCBpKSAmIElPUkVTT1VSQ0VfTUVNKSB8fAorCQkJICAgIHBjaV9yZXNvdXJjZV9sZW4ocGRldiwgaSkgPT0gMCkKKwkJCQljb250aW51ZTsKKworCQkJcGNpX3N0YXJ0ID0gcGNpX3Jlc291cmNlX3N0YXJ0KHBkZXYsIGkpOworCQkJcGNpX2VuZCA9IHBjaV9yZXNvdXJjZV9lbmQocGRldiwgaSk7CisJCQlmb3IgKGogPSAwOyBqIDwgUE5QX01BWF9NRU07IGorKykgeworCQkJCWlmICghcG5wX21lbV92YWxpZChkZXYsIGopIHx8CisJCQkJICAgIHBucF9tZW1fbGVuKGRldiwgaikgPT0gMCkKKwkJCQkJY29udGludWU7CisKKwkJCQlwbnBfc3RhcnQgPSBwbnBfbWVtX3N0YXJ0KGRldiwgaik7CisJCQkJcG5wX2VuZCA9IHBucF9tZW1fZW5kKGRldiwgaik7CisKKwkJCQkvKgorCQkJCSAqIElmIHRoZSBQTlAgcmVnaW9uIGRvZXNuJ3Qgb3ZlcmxhcCB0aGUgUENJCisJCQkJICogcmVnaW9uIGF0IGFsbCwgdGhlcmUncyBubyBwcm9ibGVtLgorCQkJCSAqLworCQkJCWlmIChwbnBfZW5kIDwgcGNpX3N0YXJ0IHx8IHBucF9zdGFydCA+IHBjaV9lbmQpCisJCQkJCWNvbnRpbnVlOworCisJCQkJLyoKKwkJCQkgKiBJZiB0aGUgUE5QIHJlZ2lvbiBjb21wbGV0ZWx5IGVuY2xvc2VzIChvciBpcworCQkJCSAqIGF0IGxlYXN0IGFzIGxhcmdlIGFzKSB0aGUgUENJIHJlZ2lvbiwgdGhhdCdzCisJCQkJICogYWxzbyBPSy4gIEZvciBleGFtcGxlLCB0aGlzIGhhcHBlbnMgd2hlbiB0aGUKKwkJCQkgKiBQTlAgZGV2aWNlIGRlc2NyaWJlcyBhIGJyaWRnZSB3aXRoIFBDSQorCQkJCSAqIGJlaGluZCBpdC4KKwkJCQkgKi8KKwkJCQlpZiAocG5wX3N0YXJ0IDw9IHBjaV9zdGFydCAmJgorCQkJCSAgICBwbnBfZW5kID49IHBjaV9lbmQpCisJCQkJCWNvbnRpbnVlOworCisJCQkJLyoKKwkJCQkgKiBPdGhlcndpc2UsIHRoZSBQTlAgcmVnaW9uIG92ZXJsYXBzICpwYXJ0KiBvZgorCQkJCSAqIHRoZSBQQ0kgcmVnaW9uLCBhbmQgdGhhdCBtaWdodCBwcmV2ZW50IGEgUENJCisJCQkJICogZHJpdmVyIGZyb20gcmVxdWVzdGluZyBpdHMgcmVzb3VyY2VzLgorCQkJCSAqLworCQkJCWRldl93YXJuKCZkZXYtPmRldiwgIm1lbSByZXNvdXJjZSAiCisJCQkJCSIoMHglbGx4LTB4JWxseCkgb3ZlcmxhcHMgJXMgQkFSICVkICIKKwkJCQkJIigweCVsbHgtMHglbGx4KSwgZGlzYWJsaW5nXG4iLAorCQkJCQkodW5zaWduZWQgbG9uZyBsb25nKSBwbnBfc3RhcnQsCisJCQkJCSh1bnNpZ25lZCBsb25nIGxvbmcpIHBucF9lbmQsCisJCQkJCXBjaV9uYW1lKHBkZXYpLCBpLAorCQkJCQkodW5zaWduZWQgbG9uZyBsb25nKSBwY2lfc3RhcnQsCisJCQkJCSh1bnNpZ25lZCBsb25nIGxvbmcpIHBjaV9lbmQpOworCQkJCXBucF9tZW1fZmxhZ3MoZGV2LCBqKSA9IDA7CisJCQl9CiAJCX0KIAl9CiB9CkBAIC0xNjksOCArMTk5LDggQEAKIAl7IkNUTDAwNDMiLCBxdWlya19zYjE2YXVkaW9fcmVzb3VyY2VzfSwKIAl7IkNUTDAwNDQiLCBxdWlya19zYjE2YXVkaW9fcmVzb3VyY2VzfSwKIAl7IkNUTDAwNDUiLCBxdWlya19zYjE2YXVkaW9fcmVzb3VyY2VzfSwKLQl7IlBOUDBjMDEiLCBxdWlya19zdXBlcm1pY3JvX2g4ZGNlX3N5c3RlbX0sCi0JeyJQTlAwYzAyIiwgcXVpcmtfc3VwZXJtaWNyb19oOGRjZV9zeXN0ZW19LAorCXsiUE5QMGMwMSIsIHF1aXJrX3N5c3RlbV9wY2lfcmVzb3VyY2VzfSwKKwl7IlBOUDBjMDIiLCBxdWlya19zeXN0ZW1fcGNpX3Jlc291cmNlc30sCiAJeyIifQogfTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ydGMvS2NvbmZpZyBiL2RyaXZlcnMvcnRjL0tjb25maWcKaW5kZXggODJmNWFkOS4uMDJhNGM4YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ydGMvS2NvbmZpZworKysgYi9kcml2ZXJzL3J0Yy9LY29uZmlnCkBAIC0xNiw3ICsxNiw3IEBACiAJICBwcm9iYWJseSB3YW50IHRvIGVuYWJsZSBvbmUgb3IgbW9yZSBvZiB0aGUgaW50ZXJmYWNlcyBiZWxvdy4KIAogCSAgVGhpcyBkcml2ZXIgY2FuIGFsc28gYmUgYnVpbHQgYXMgYSBtb2R1bGUuIElmIHNvLCB0aGUgbW9kdWxlCi0JICB3aWxsIGJlIGNhbGxlZCBydGMtY2xhc3MuCisJICB3aWxsIGJlIGNhbGxlZCBydGMtY29yZS4KIAogaWYgUlRDX0NMQVNTCiAKQEAgLTI1Miw2ICsyNTIsNyBAQAogCiBjb25maWcgUlRDX0RSVl9TMzUzOTBBCiAJdHJpc3RhdGUgIlNlaWtvIEluc3RydW1lbnRzIFMtMzUzOTBBIgorCXNlbGVjdCBCSVRSRVZFUlNFCiAJaGVscAogCSAgSWYgeW91IHNheSB5ZXMgaGVyZSB5b3Ugd2lsbCBnZXQgc3VwcG9ydCBmb3IgdGhlIFNlaWtvCiAJICBJbnN0cnVtZW50cyBTLTM1MzkwQS4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvcnRjL3J0Yy1hdDMyYXA3MDB4LmMgYi9kcml2ZXJzL3J0Yy9ydGMtYXQzMmFwNzAweC5jCmluZGV4IGQzYjliMTQuLjQyMjQ0ZjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcnRjL3J0Yy1hdDMyYXA3MDB4LmMKKysrIGIvZHJpdmVycy9ydGMvcnRjLWF0MzJhcDcwMHguYwpAQCAtMjkwLDcgKzI5MCw3IEBACiAJcmV0dXJuIDA7CiB9CiAKLU1PRFVMRV9BTElBUygiYXQzMmFwNzAweF9ydGMiKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06YXQzMmFwNzAweF9ydGMiKTsKIAogc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYXQzMl9ydGNfZHJpdmVyID0gewogCS5yZW1vdmUJCT0gX19leGl0X3AoYXQzMl9ydGNfcmVtb3ZlKSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcnRjL3J0Yy1hdDkxcm05MjAwLmMgYi9kcml2ZXJzL3J0Yy9ydGMtYXQ5MXJtOTIwMC5jCmluZGV4IDMzNzk1ZTUuLjUyYWJmZmM4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3J0Yy9ydGMtYXQ5MXJtOTIwMC5jCisrKyBiL2RyaXZlcnMvcnRjL3J0Yy1hdDkxcm05MjAwLmMKQEAgLTQwNywzICs0MDcsNCBAQAogTU9EVUxFX0FVVEhPUigiUmljayBCcm9uc29uIik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIlJUQyBkcml2ZXIgZm9yIEF0bWVsIEFUOTFSTTkyMDAiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06YXQ5MV9ydGMiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcnRjL3J0Yy1hdDkxc2FtOS5jIGIvZHJpdmVycy9ydGMvcnRjLWF0OTFzYW05LmMKaW5kZXggYmJmMTBlYy4uNTY3MjhhMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ydGMvcnRjLWF0OTFzYW05LmMKKysrIGIvZHJpdmVycy9ydGMvcnRjLWF0OTFzYW05LmMKQEAgLTI3NCw3ICsyNzQsNyBAQAogCSAqIFNSIGNsZWFycyBpdCwgc28gd2UgbXVzdCBvbmx5IHJlYWQgaXQgaW4gdGhpcyBpcnEgaGFuZGxlciEKIAkgKi8KIAltciA9IHJ0dF9yZWFkbChydGMsIE1SKSAmIChBVDkxX1JUVF9BTE1JRU4gfCBBVDkxX1JUVF9SVFRJTkNJRU4pOwotCXNyID0gcnR0X3JlYWRsKHJ0YywgU1IpICYgbXI7CisJc3IgPSBydHRfcmVhZGwocnRjLCBTUikgJiAobXIgPj4gMTYpOwogCWlmICghc3IpCiAJCXJldHVybiBJUlFfTk9ORTsKIApAQCAtMzIxLDYgKzMyMSwxMCBAQAogCWlmICghcnRjKQogCQlyZXR1cm4gLUVOT01FTTsKIAorCS8qIHBsYXRmb3JtIHNldHVwIGNvZGUgc2hvdWxkIGhhdmUgaGFuZGxlZCB0aGlzOyBzaWdoICovCisJaWYgKCFkZXZpY2VfY2FuX3dha2V1cCgmcGRldi0+ZGV2KSkKKwkJZGV2aWNlX2luaXRfd2FrZXVwKCZwZGV2LT5kZXYsIDEpOworCiAJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgcnRjKTsKIAlydGMtPnJ0dCA9ICh2b2lkIF9fZm9yY2UgX19pb21lbSAqKSAoQVQ5MV9WQV9CQVNFX1NZUyAtIEFUOTFfQkFTRV9TWVMpOwogCXJ0Yy0+cnR0ICs9IHItPnN0YXJ0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ydGMvcnRjLWJmaW4uYyBiL2RyaXZlcnMvcnRjL3J0Yy1iZmluLmMKaW5kZXggZDkwYmE4Ni4uNGYyODA0NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ydGMvcnRjLWJmaW4uYworKysgYi9kcml2ZXJzL3J0Yy9ydGMtYmZpbi5jCkBAIC00NzAsMyArNDcwLDQgQEAKIE1PRFVMRV9ERVNDUklQVElPTigiQmxhY2tmaW4gT24tQ2hpcCBSZWFsIFRpbWUgQ2xvY2sgRHJpdmVyIik7CiBNT0RVTEVfQVVUSE9SKCJNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Iik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOnJ0Yy1iZmluIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3J0Yy9ydGMtY21vcy5jIGIvZHJpdmVycy9ydGMvcnRjLWNtb3MuYwppbmRleCBmM2VlMmFkLi5kY2RjMTQyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3J0Yy9ydGMtY21vcy5jCisrKyBiL2RyaXZlcnMvcnRjL3J0Yy1jbW9zLmMKQEAgLTE5OCw5ICsxOTgsOCBAQAogCiAJLyogV3JpdGluZyAweGZmIG1lYW5zICJkb24ndCBjYXJlIiBvciAibWF0Y2ggYWxsIi4gICovCiAKLQltb24gPSB0LT50aW1lLnRtX21vbjsKLQltb24gPSAobW9uIDwgMTIpID8gQklOMkJDRChtb24pIDogMHhmZjsKLQltb24rKzsKKwltb24gPSB0LT50aW1lLnRtX21vbiArIDE7CisJbW9uID0gKG1vbiA8PSAxMikgPyBCSU4yQkNEKG1vbikgOiAweGZmOwogCiAJbWRheSA9IHQtPnRpbWUudG1fbWRheTsKIAltZGF5ID0gKG1kYXkgPj0gMSAmJiBtZGF5IDw9IDMxKSA/IEJJTjJCQ0QobWRheSkgOiAweGZmOwpAQCAtOTQzLDYgKzk0Miw5IEBACiAJY21vc19kb19zaHV0ZG93bigpOwogfQogCisvKiB3b3JrIHdpdGggaG90cGx1ZyBhbmQgY29sZHBsdWcgKi8KK01PRFVMRV9BTElBUygicGxhdGZvcm06cnRjX2Ntb3MiKTsKKwogc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgY21vc19wbGF0Zm9ybV9kcml2ZXIgPSB7CiAJLnJlbW92ZQkJPSBfX2V4aXRfcChjbW9zX3BsYXRmb3JtX3JlbW92ZSksCiAJLnNodXRkb3duCT0gY21vc19wbGF0Zm9ybV9zaHV0ZG93biwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcnRjL3J0Yy1kczEyMTYuYyBiL2RyaXZlcnMvcnRjL3J0Yy1kczEyMTYuYwppbmRleCA4M2VmYjg4Li4wYjE3NzcwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3J0Yy9ydGMtZHMxMjE2LmMKKysrIGIvZHJpdmVycy9ydGMvcnRjLWRzMTIxNi5jCkBAIC0yMjEsNiArMjIxLDcgQEAKIE1PRFVMRV9ERVNDUklQVElPTigiRFMxMjE2IFJUQyBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKIE1PRFVMRV9WRVJTSU9OKERSVl9WRVJTSU9OKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06cnRjLWRzMTIxNiIpOwogCiBtb2R1bGVfaW5pdChkczEyMTZfcnRjX2luaXQpOwogbW9kdWxlX2V4aXQoZHMxMjE2X3J0Y19leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcnRjL3J0Yy1kczE1MTEuYyBiL2RyaXZlcnMvcnRjL3J0Yy1kczE1MTEuYwppbmRleCBkNzRiODA4Li5kMDg5MTJmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3J0Yy9ydGMtZHMxNTExLmMKKysrIGIvZHJpdmVycy9ydGMvcnRjLWRzMTUxMS5jCkBAIC02MjYsNiArNjI2LDkgQEAKIAlyZXR1cm4gMDsKIH0KIAorLyogd29yayB3aXRoIGhvdHBsdWcgYW5kIGNvbGRwbHVnICovCitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOmRzMTUxMSIpOworCiBzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBkczE1MTFfcnRjX2RyaXZlciA9IHsKIAkucHJvYmUJCT0gZHMxNTExX3J0Y19wcm9iZSwKIAkucmVtb3ZlCQk9IF9fZGV2ZXhpdF9wKGRzMTUxMV9ydGNfcmVtb3ZlKSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcnRjL3J0Yy1kczE1NTMuYyBiL2RyaXZlcnMvcnRjL3J0Yy1kczE1NTMuYwppbmRleCBkOWU4NDhkLi5hMTlmMTE0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3J0Yy9ydGMtZHMxNTUzLmMKKysrIGIvZHJpdmVycy9ydGMvcnRjLWRzMTU1My5jCkBAIC0zOTEsNiArMzkxLDkgQEAKIAlyZXR1cm4gMDsKIH0KIAorLyogd29yayB3aXRoIGhvdHBsdWcgYW5kIGNvbGRwbHVnICovCitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOnJ0Yy1kczE1NTMiKTsKKwogc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZHMxNTUzX3J0Y19kcml2ZXIgPSB7CiAJLnByb2JlCQk9IGRzMTU1M19ydGNfcHJvYmUsCiAJLnJlbW92ZQkJPSBfX2RldmV4aXRfcChkczE1NTNfcnRjX3JlbW92ZSksCmRpZmYgLS1naXQgYS9kcml2ZXJzL3J0Yy9ydGMtZHMxNzQyLmMgYi9kcml2ZXJzL3J0Yy9ydGMtZHMxNzQyLmMKaW5kZXggMmU3M2YwYi4uMjRkMzVlZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ydGMvcnRjLWRzMTc0Mi5jCisrKyBiL2RyaXZlcnMvcnRjL3J0Yy1kczE3NDIuYwpAQCAtMjc2LDMgKzI3Niw0IEBACiBNT0RVTEVfREVTQ1JJUFRJT04oIkRhbGxhcyBEUzE3NDIgUlRDIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwogTU9EVUxFX1ZFUlNJT04oRFJWX1ZFUlNJT04pOworTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybTpydGMtZHMxNzQyIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3J0Yy9ydGMtZXA5M3h4LmMgYi9kcml2ZXJzL3J0Yy9ydGMtZXA5M3h4LmMKaW5kZXggZWY0ZjE0Ny4uMWU5OTMyNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ydGMvcnRjLWVwOTN4eC5jCisrKyBiL2RyaXZlcnMvcnRjL3J0Yy1lcDkzeHguYwpAQCAtMTMyLDYgKzEzMiw5IEBACiAJcmV0dXJuIDA7CiB9CiAKKy8qIHdvcmsgd2l0aCBob3RwbHVnIGFuZCBjb2xkcGx1ZyAqLworTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybTplcDkzeHgtcnRjIik7CisKIHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGVwOTN4eF9ydGNfcGxhdGZvcm1fZHJpdmVyID0gewogCS5kcml2ZXIJCT0gewogCQkubmFtZQk9ICJlcDkzeHgtcnRjIiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcnRjL3J0Yy1tNDh0NTkuYyBiL2RyaXZlcnMvcnRjL3J0Yy1tNDh0NTkuYwppbmRleCBjZDBiYmMwLi4wMTNlNmMxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3J0Yy9ydGMtbTQ4dDU5LmMKKysrIGIvZHJpdmVycy9ydGMvcnRjLW00OHQ1OS5jCkBAIC00NjUsNiArNDY1LDkgQEAKIAlyZXR1cm4gMDsKIH0KIAorLyogd29yayB3aXRoIGhvdHBsdWcgYW5kIGNvbGRwbHVnICovCitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOnJ0Yy1tNDh0NTkiKTsKKwogc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbTQ4dDU5X3J0Y19kcml2ZXIgPSB7CiAJLmRyaXZlcgkJPSB7CiAJCS5uYW1lCT0gInJ0Yy1tNDh0NTkiLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ydGMvcnRjLW00OHQ4Ni5jIGIvZHJpdmVycy9ydGMvcnRjLW00OHQ4Ni5jCmluZGV4IDhmZjRhMTIuLjNmN2Y5OWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcnRjL3J0Yy1tNDh0ODYuYworKysgYi9kcml2ZXJzL3J0Yy9ydGMtbTQ4dDg2LmMKQEAgLTE5OSw2ICsxOTksNyBAQAogTU9EVUxFX0RFU0NSSVBUSU9OKCJNNDhUODYgUlRDIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwogTU9EVUxFX1ZFUlNJT04oRFJWX1ZFUlNJT04pOworTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybTpydGMtbTQ4dDg2Iik7CiAKIG1vZHVsZV9pbml0KG00OHQ4Nl9ydGNfaW5pdCk7CiBtb2R1bGVfZXhpdChtNDh0ODZfcnRjX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ydGMvcnRjLW9tYXAuYyBiL2RyaXZlcnMvcnRjL3J0Yy1vbWFwLmMKaW5kZXggYTJmODRmMS4uNThmODFjNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ydGMvcnRjLW9tYXAuYworKysgYi9kcml2ZXJzL3J0Yy9ydGMtb21hcC5jCkBAIC00OTcsNyArNDk3LDcgQEAKIAlydGNfd3JpdGUoMCwgT01BUF9SVENfSU5URVJSVVBUU19SRUcpOwogfQogCi1NT0RVTEVfQUxJQVMoIm9tYXBfcnRjIik7CitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOm9tYXBfcnRjIik7CiBzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBvbWFwX3J0Y19kcml2ZXIgPSB7CiAJLnByb2JlCQk9IG9tYXBfcnRjX3Byb2JlLAogCS5yZW1vdmUJCT0gX19kZXZleGl0X3Aob21hcF9ydGNfcmVtb3ZlKSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcnRjL3J0Yy1yczVjMzEzLmMgYi9kcml2ZXJzL3J0Yy9ydGMtcnM1YzMxMy5jCmluZGV4IDY2ZWIxMzMuLjY2NGU4OWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcnRjL3J0Yy1yczVjMzEzLmMKKysrIGIvZHJpdmVycy9ydGMvcnRjLXJzNWMzMTMuYwpAQCAtNDIxLDMgKzQyMSw0IEBACiBNT0RVTEVfQVVUSE9SKCJrb2dpaWRlbmEgLCBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIlJpY29oIFJTNUMzMTMgUlRDIGRldmljZSBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06IiBEUlZfTkFNRSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3J0Yy9ydGMtczNjLmMgYi9kcml2ZXJzL3J0Yy9ydGMtczNjLmMKaW5kZXggODY3NjZmMS4uOWY0ZDUxMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ydGMvcnRjLXMzYy5jCisrKyBiL2RyaXZlcnMvcnRjL3J0Yy1zM2MuYwpAQCAtNTkyLDMgKzU5Miw0IEBACiBNT0RVTEVfREVTQ1JJUFRJT04oIlNhbXN1bmcgUzNDIFJUQyBEcml2ZXIiKTsKIE1PRFVMRV9BVVRIT1IoIkJlbiBEb29rcyA8YmVuQHNpbXRlYy5jby51az4iKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06czNjMjQxMC1ydGMiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcnRjL3J0Yy1zYTExMDAuYyBiL2RyaXZlcnMvcnRjL3J0Yy1zYTExMDAuYwppbmRleCBlZTI1M2NjLi44MmY2MmQyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3J0Yy9ydGMtc2ExMTAwLmMKKysrIGIvZHJpdmVycy9ydGMvcnRjLXNhMTEwMC5jCkBAIC0zOTksMyArMzk5LDQgQEAKIE1PRFVMRV9BVVRIT1IoIlJpY2hhcmQgUHVyZGllIDxycHVyZGllQHJwc3lzLm5ldD4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiU0ExMXgwL1BYQTJ4eCBSZWFsdGltZSBDbG9jayBEcml2ZXIgKFJUQykiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06c2ExMTAwLXJ0YyIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ydGMvcnRjLXNoLmMgYi9kcml2ZXJzL3J0Yy9ydGMtc2guYwppbmRleCBjMWQ2YTE4Li45ZTljYWE1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3J0Yy9ydGMtc2guYworKysgYi9kcml2ZXJzL3J0Yy9ydGMtc2guYwpAQCAtNjY0LDMgKzY2NCw0IEBACiBNT0RVTEVfVkVSU0lPTihEUlZfVkVSU0lPTik7CiBNT0RVTEVfQVVUSE9SKCJQYXVsIE11bmR0IDxsZXRoYWxAbGludXgtc2gub3JnPiwgSmFtaWUgTGVuZWhhbiA8bGVuZWhhbkB0d2liYmxlLm9yZz4iKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06IiBEUlZfTkFNRSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3J0Yy9ydGMtc3RrMTd0YTguYyBiL2RyaXZlcnMvcnRjL3J0Yy1zdGsxN3RhOC5jCmluZGV4IGEyNjVkYTcuLjMxZDNjOGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcnRjL3J0Yy1zdGsxN3RhOC5jCisrKyBiL2RyaXZlcnMvcnRjL3J0Yy1zdGsxN3RhOC5jCkBAIC0zOTQsNiArMzk0LDkgQEAKIAlyZXR1cm4gMDsKIH0KIAorLyogd29yayB3aXRoIGhvdHBsdWcgYW5kIGNvbGRwbHVnICovCitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOnN0azE3dGE4Iik7CisKIHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHN0azE3dGE4X3J0Y19kcml2ZXIgPSB7CiAJLnByb2JlCQk9IHN0azE3dGE4X3J0Y19wcm9iZSwKIAkucmVtb3ZlCQk9IF9fZGV2ZXhpdF9wKHN0azE3dGE4X3J0Y19yZW1vdmUpLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ydGMvcnRjLXYzMDIwLmMgYi9kcml2ZXJzL3J0Yy9ydGMtdjMwMjAuYwppbmRleCBhNmI1NzI5Li4yNDIwM2EwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3J0Yy9ydGMtdjMwMjAuYworKysgYi9kcml2ZXJzL3J0Yy9ydGMtdjMwMjAuYwpAQCAtMjY0LDMgKzI2NCw0IEBACiBNT0RVTEVfREVTQ1JJUFRJT04oIlYzMDIwIFJUQyIpOwogTU9EVUxFX0FVVEhPUigiUmFwaGFlbCBBc3NlbmF0Iik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOnYzMDIwIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3J0Yy9ydGMtdnI0MXh4LmMgYi9kcml2ZXJzL3J0Yy9ydGMtdnI0MXh4LmMKaW5kZXggY2UyZjc4ZC4uYmU5YzcwZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ydGMvcnRjLXZyNDF4eC5jCisrKyBiL2RyaXZlcnMvcnRjL3J0Yy12cjQxeHguYwpAQCAtNDIyLDYgKzQyMiw5IEBACiAJcmV0dXJuIDA7CiB9CiAKKy8qIHdvcmsgd2l0aCBob3RwbHVnIGFuZCBjb2xkcGx1ZyAqLworTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybTpSVEMiKTsKKwogc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgcnRjX3BsYXRmb3JtX2RyaXZlciA9IHsKIAkucHJvYmUJCT0gcnRjX3Byb2JlLAogCS5yZW1vdmUJCT0gX19kZXZleGl0X3AocnRjX3JlbW92ZSksCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvS2NvbmZpZyBiL2RyaXZlcnMvc2NzaS9LY29uZmlnCmluZGV4IGM0NjY2NmEuLmI5ZDM3NDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9LY29uZmlnCisrKyBiL2RyaXZlcnMvc2NzaS9LY29uZmlnCkBAIC0zMjUsNyArMzI1LDcgQEAKIAlkZXBlbmRzIG9uIFNDU0khPW4KIAlkZWZhdWx0IHkKIAotaWYgU0NTSV9MT1dMRVZFTAoraWYgU0NTSV9MT1dMRVZFTCAmJiBTQ1NJCiAKIGNvbmZpZyBJU0NTSV9UQ1AKIAl0cmlzdGF0ZSAiaVNDU0kgSW5pdGlhdG9yIG92ZXIgVENQL0lQIgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2ExMDB1MncuYyBiL2RyaXZlcnMvc2NzaS9hMTAwdTJ3LmMKaW5kZXggZjYwOGQ0YS4uNzkyYjJlOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2ExMDB1MncuYworKysgYi9kcml2ZXJzL3Njc2kvYTEwMHUydy5jCkBAIC02NzQsMTIgKzY3NCwxMyBAQAogCQlmb3IgKGluZGV4ID0gMDsgaW5kZXggPCAzMjsgaW5kZXgrKykgewogCQkJaWYgKChob3N0LT5hbGxvY2F0aW9uX21hcFtjaGFubmVsXVtpXSA+PiBpbmRleCkgJiAweDAxKSB7CiAJCQkJaG9zdC0+YWxsb2NhdGlvbl9tYXBbY2hhbm5lbF1baV0gJj0gfigxIDw8IGluZGV4KTsKLQkJCQlicmVhazsKKwkJCQlpZHggPSBpbmRleCArIDMyICogaTsKKwkJCQkvKgorCQkJCSAqIFRyYW5zbGF0ZSB0aGUgaW5kZXggdG8gYSBzdHJ1Y3R1cmUgaW5zdGFuY2UKKwkJCQkgKi8KKwkJCQlyZXR1cm4gaG9zdC0+c2NiX3ZpcnQgKyBpZHg7CiAJCQl9CiAJCX0KLQkJaWR4ID0gaW5kZXggKyAzMiAqIGk7Ci0JCS8qIFRyYW5zbGF0ZSB0aGUgaW5kZXggdG8gYSBzdHJ1Y3R1cmUgaW5zdGFuY2UgKi8KLQkJcmV0dXJuIChzdHJ1Y3Qgb3JjX3NjYiAqKSAoKHVuc2lnbmVkIGxvbmcpIGhvc3QtPnNjYl92aXJ0ICsgKGlkeCAqIHNpemVvZihzdHJ1Y3Qgb3JjX3NjYikpKTsKIAl9CiAJcmV0dXJuIE5VTEw7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYWR2YW5zeXMuYyBiL2RyaXZlcnMvc2NzaS9hZHZhbnN5cy5jCmluZGV4IDNjMmQ2ODguLjg1OTE1ODUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9hZHZhbnN5cy5jCisrKyBiL2RyaXZlcnMvc2NzaS9hZHZhbnN5cy5jCkBAIC02NDM5LDcgKzY0MzksNyBAQAogCQkJaSArPSAyOwogCQkJbGVuICs9IDI7CiAJCX0gZWxzZSB7Ci0JCQl1bnNpZ25lZCBjaGFyIG9mZiA9IGJ1ZltpXSAqIDI7CisJCQl1bnNpZ25lZCBpbnQgb2ZmID0gYnVmW2ldICogMjsKIAkJCXVuc2lnbmVkIHNob3J0IHdvcmQgPSAoYnVmW29mZiArIDFdIDw8IDgpIHwgYnVmW29mZl07CiAJCQlBZHZXcml0ZVdvcmRBdXRvSW5jTHJhbShpb3BfYmFzZSwgd29yZCk7CiAJCQlsZW4gKz0gMjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9hcmNtc3IvYXJjbXNyLmggYi9kcml2ZXJzL3Njc2kvYXJjbXNyL2FyY21zci5oCmluZGV4IDAzOTM3MDcuLjMyODhiZTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9hcmNtc3IvYXJjbXNyLmgKKysrIGIvZHJpdmVycy9zY3NpL2FyY21zci9hcmNtc3IuaApAQCAtMzQxLDEzICszNDEsMTMgQEAKIAl1aW50MzJfdAlkb25lX3FidWZmZXJbQVJDTVNSX01BWF9IQkJfUE9TVFFVRVVFXTsKIAl1aW50MzJfdAlwb3N0cV9pbmRleDsKIAl1aW50MzJfdAlkb25lcV9pbmRleDsKLQl1aW50MzJfdAlfX2lvbWVtICpkcnYyaW9wX2Rvb3JiZWxsX3JlZzsKLQl1aW50MzJfdAlfX2lvbWVtICpkcnYyaW9wX2Rvb3JiZWxsX21hc2tfcmVnOwotCXVpbnQzMl90CV9faW9tZW0gKmlvcDJkcnZfZG9vcmJlbGxfcmVnOwotCXVpbnQzMl90CV9faW9tZW0gKmlvcDJkcnZfZG9vcmJlbGxfbWFza19yZWc7Ci0JdWludDMyX3QJX19pb21lbSAqbXNnY29kZV9yd2J1ZmZlcl9yZWc7Ci0JdWludDMyX3QJX19pb21lbSAqaW9jdGxfd2J1ZmZlcl9yZWc7Ci0JdWludDMyX3QJX19pb21lbSAqaW9jdGxfcmJ1ZmZlcl9yZWc7CisJdm9pZAkJX19pb21lbSAqZHJ2MmlvcF9kb29yYmVsbF9yZWc7CisJdm9pZAkJX19pb21lbSAqZHJ2MmlvcF9kb29yYmVsbF9tYXNrX3JlZzsKKwl2b2lkCQlfX2lvbWVtICppb3AyZHJ2X2Rvb3JiZWxsX3JlZzsKKwl2b2lkCQlfX2lvbWVtICppb3AyZHJ2X2Rvb3JiZWxsX21hc2tfcmVnOworCXZvaWQJCV9faW9tZW0gKm1zZ2NvZGVfcndidWZmZXJfcmVnOworCXZvaWQJCV9faW9tZW0gKmlvY3RsX3didWZmZXJfcmVnOworCXZvaWQJCV9faW9tZW0gKmlvY3RsX3JidWZmZXJfcmVnOwogfTsKIAogLyoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9nZHRoLmMgYi9kcml2ZXJzL3Njc2kvZ2R0aC5jCmluZGV4IDI3ZWJkMzMuLjBiMjA4MGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9nZHRoLmMKKysrIGIvZHJpdmVycy9zY3NpL2dkdGguYwpAQCAtNDkzLDYgKzQ5MywxMiBAQAogICAgIGlmICghc2NwKQogICAgICAgICByZXR1cm4gLUVOT01FTTsKIAorICAgIHNjcC0+c2Vuc2VfYnVmZmVyID0ga3phbGxvYyhTQ1NJX1NFTlNFX0JVRkZFUlNJWkUsIEdGUF9LRVJORUwpOworICAgIGlmICghc2NwLT5zZW5zZV9idWZmZXIpIHsKKwlrZnJlZShzY3ApOworCXJldHVybiAtRU5PTUVNOworICAgIH0KKwogICAgIHNjcC0+ZGV2aWNlID0gc2RldjsKICAgICBtZW1zZXQoJmNtbmRpbmZvLCAwLCBzaXplb2YoY21uZGluZm8pKTsKIApAQCAtNTEzLDYgKzUxOSw3IEBACiAgICAgcnZhbCA9IGNtbmRpbmZvLnN0YXR1czsKICAgICBpZiAoaW5mbykKICAgICAgICAgKmluZm8gPSBjbW5kaW5mby5pbmZvOworICAgIGtmcmVlKHNjcC0+c2Vuc2VfYnVmZmVyKTsKICAgICBrZnJlZShzY3ApOwogICAgIHJldHVybiBydmFsOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2hvc3RzLmMgYi9kcml2ZXJzL3Njc2kvaG9zdHMuYwppbmRleCA4ODBjNzhiLi5lZDdlMGExIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvaG9zdHMuYworKysgYi9kcml2ZXJzL3Njc2kvaG9zdHMuYwpAQCAtMjE4LDE4ICsyMTgsMjQgQEAKIAogCWdldF9kZXZpY2UoJnNob3N0LT5zaG9zdF9nZW5kZXYpOwogCi0JaWYgKHNob3N0LT50cmFuc3BvcnR0LT5ob3N0X3NpemUgJiYKLQkgICAgKHNob3N0LT5zaG9zdF9kYXRhID0ga3phbGxvYyhzaG9zdC0+dHJhbnNwb3J0dC0+aG9zdF9zaXplLAotCQkJCQkgR0ZQX0tFUk5FTCkpID09IE5VTEwpCi0JCWdvdG8gb3V0X2RlbF9jbGFzc2RldjsKKwlpZiAoc2hvc3QtPnRyYW5zcG9ydHQtPmhvc3Rfc2l6ZSkgeworCQlzaG9zdC0+c2hvc3RfZGF0YSA9IGt6YWxsb2Moc2hvc3QtPnRyYW5zcG9ydHQtPmhvc3Rfc2l6ZSwKKwkJCQkJIEdGUF9LRVJORUwpOworCQlpZiAoc2hvc3QtPnNob3N0X2RhdGEgPT0gTlVMTCkgeworCQkJZXJyb3IgPSAtRU5PTUVNOworCQkJZ290byBvdXRfZGVsX2NsYXNzZGV2OworCQl9CisJfQogCiAJaWYgKHNob3N0LT50cmFuc3BvcnR0LT5jcmVhdGVfd29ya19xdWV1ZSkgewogCQlzbnByaW50ZihzaG9zdC0+d29ya19xX25hbWUsIEtPQkpfTkFNRV9MRU4sICJzY3NpX3dxXyVkIiwKIAkJCXNob3N0LT5ob3N0X25vKTsKIAkJc2hvc3QtPndvcmtfcSA9IGNyZWF0ZV9zaW5nbGV0aHJlYWRfd29ya3F1ZXVlKAogCQkJCQlzaG9zdC0+d29ya19xX25hbWUpOwotCQlpZiAoIXNob3N0LT53b3JrX3EpCisJCWlmICghc2hvc3QtPndvcmtfcSkgeworCQkJZXJyb3IgPSAtRUlOVkFMOwogCQkJZ290byBvdXRfZnJlZV9zaG9zdF9kYXRhOworCQl9CiAJfQogCiAJZXJyb3IgPSBzY3NpX3N5c2ZzX2FkZF9ob3N0KHNob3N0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9saWJzYXMvc2FzX2Rpc2NvdmVyLmMgYi9kcml2ZXJzL3Njc2kvbGlic2FzL3Nhc19kaXNjb3Zlci5jCmluZGV4IDMxYjlhZjIuLjcwOWE2ZjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9saWJzYXMvc2FzX2Rpc2NvdmVyLmMKKysrIGIvZHJpdmVycy9zY3NpL2xpYnNhcy9zYXNfZGlzY292ZXIuYwpAQCAtMjk1LDExICsyOTUsMTQgQEAKIAljYXNlIEZBTk9VVF9ERVY6CiAJCWVycm9yID0gc2FzX2Rpc2NvdmVyX3Jvb3RfZXhwYW5kZXIoZGV2KTsKIAkJYnJlYWs7Ci0jaWZkZWYgQ09ORklHX1NDU0lfU0FTX0FUQQogCWNhc2UgU0FUQV9ERVY6CiAJY2FzZSBTQVRBX1BNOgorI2lmZGVmIENPTkZJR19TQ1NJX1NBU19BVEEKIAkJZXJyb3IgPSBzYXNfZGlzY292ZXJfc2F0YShkZXYpOwogCQlicmVhazsKKyNlbHNlCisJCVNBU19EUFJJTlRLKCJBVEEgZGV2aWNlIHNlZW4gYnV0IENPTkZJR19TQ1NJX1NBU19BVEE9TiBzbyBjYW5ub3QgYXR0YWNoXG4iKTsKKwkJLyogRmFsbCB0aHJvdWdoICovCiAjZW5kaWYKIAlkZWZhdWx0OgogCQllcnJvciA9IC1FTlhJTzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9tdnNhcy5jIGIvZHJpdmVycy9zY3NpL212c2FzLmMKaW5kZXggNWVjMDY2NS4uZTU1YjkwMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL212c2FzLmMKKysrIGIvZHJpdmVycy9zY3NpL212c2FzLmMKQEAgLTM3LDExICszNywxMyBAQAogI2luY2x1ZGUgPGxpbnV4L2RtYS1tYXBwaW5nLmg+CiAjaW5jbHVkZSA8bGludXgvY3R5cGUuaD4KICNpbmNsdWRlIDxzY3NpL2xpYnNhcy5oPgorI2luY2x1ZGUgPHNjc2kvc2NzaV90Y3EuaD4KKyNpbmNsdWRlIDxzY3NpL3Nhc19hdGEuaD4KICNpbmNsdWRlIDxhc20vaW8uaD4KIAogI2RlZmluZSBEUlZfTkFNRQkibXZzYXMiCi0jZGVmaW5lIERSVl9WRVJTSU9OCSIwLjUuMSIKLSNkZWZpbmUgX01WX0RVTVAgMAorI2RlZmluZSBEUlZfVkVSU0lPTgkiMC41LjIiCisjZGVmaW5lIF9NVl9EVU1QCTAKICNkZWZpbmUgTVZTX0RJU0FCTEVfTlZSQU0KICNkZWZpbmUgTVZTX0RJU0FCTEVfTVNJCiAKQEAgLTUyLDcgKzU0LDcgQEAKIAlyZWFkbChyZWdzICsgTVZTXyMjcmVnKTsJCVwKIAl9IHdoaWxlICgwKQogCi0jZGVmaW5lIE1WU19JRF9OT1RfTUFQUEVECTB4ZmYKKyNkZWZpbmUgTVZTX0lEX05PVF9NQVBQRUQJMHg3ZgogI2RlZmluZSBNVlNfQ0hJUF9TTE9UX1NaCSgxVSA8PCBtdmktPmNoaXAtPnNsb3Rfd2lkdGgpCiAKIC8qIG9mZnNldCBmb3IgRDJIIEZJUyBpbiB0aGUgUmVjZWl2ZWQgRklTIExpc3QgU3RydWN0dXJlICovCkBAIC04NCw2ICs4Niw3IEBACiAJTVZTX1JYX0ZJU19DT1VOVAk9IDE3LAkvKiBPcHRpb25hbCByeCdkIEZJU3MgKG1heCAxNykgKi8KIAogCU1WU19RVUVVRV9TSVpFCQk9IDMwLAkvKiBTdXBwb3J0IFF1ZXVlIGRlcHRoICovCisJTVZTX0NBTl9RVUVVRQkJPSBNVlNfU0xPVFMgLSAxLAkvKiBTQ1NJIFF1ZXVlIGRlcHRoICovCiB9OwogCiAvKiB1bmNoYW5nZWFibGUgaGFyZHdhcmUgZGV0YWlscyAqLwpAQCAtMzU4LDcgKzM2MSwyMCBAQAogCiAJLyogVlNSICovCiAJLyogUEhZTU9ERSA2IChDREIpICovCi0JUEhZX01PREU2X0RUTF9TUEVFRAk9ICgxVSA8PCAyNyksCisJUEhZX01PREU2X0xBVEVDTEsJPSAoMVUgPDwgMjkpLAkvKiBMb2NrIENsb2NrICovCisJUEhZX01PREU2X0RUTF9TUEVFRAk9ICgxVSA8PCAyNyksCS8qIERpZ2l0YWwgTG9vcCBTcGVlZCAqLworCVBIWV9NT0RFNl9GQ19PUkRFUgk9ICgxVSA8PCAyNiksCS8qIEZpYnJlIENoYW5uZWwgTW9kZSBPcmRlciovCisJUEhZX01PREU2X01VQ05UX0VOCT0gKDFVIDw8IDI0KSwJLyogdSBDb3VudCBFbmFibGUgKi8KKwlQSFlfTU9ERTZfU0VMX01VQ05UX0xFTgk9ICgxVSA8PCAyMiksCS8qIFRyYWluaW5nIExlbmd0aCBTZWxlY3QgKi8KKwlQSFlfTU9ERTZfU0VMTVVQSQk9ICgxVSA8PCAyMCksCS8qIFBoYXNlIE11bHRpIFNlbGVjdCAoaW5pdCkgKi8KKwlQSFlfTU9ERTZfU0VMTVVQRgk9ICgxVSA8PCAxOCksCS8qIFBoYXNlIE11bHRpIFNlbGVjdCAoZmluYWwpICovCisJUEhZX01PREU2X1NFTE1VRkYJPSAoMVUgPDwgMTYpLAkvKiBGcmVxIExvb3AgTXVsdGkgU2VsKGZpbmFsKSAqLworCVBIWV9NT0RFNl9TRUxNVUZJCT0gKDFVIDw8IDE0KSwJLyogRnJlcSBMb29wIE11bHRpIFNlbChpbml0KSAqLworCVBIWV9NT0RFNl9GUkVFWkVfTE9PUAk9ICgxVSA8PCAxMiksCS8qIEZyZWV6ZSBSeCBDRFIgTG9vcCAqLworCVBIWV9NT0RFNl9JTlRfUlhGT0ZGUwk9ICgxVSA8PCAzKSwJLyogUnggQ0RSIEZyZXEgTG9vcCBFbmFibGUgKi8KKwlQSFlfTU9ERTZfRlJDX1JYRk9GRlMJPSAoMVUgPDwgMiksCS8qIEluaXRpYWwgUnggQ0RSIE9mZnNldCAqLworCVBIWV9NT0RFNl9TVEFVXzBEOAk9ICgxVSA8PCAxKSwJLyogUnggQ0RSIEZyZXEgTG9vcCBTYXR1cmF0ZSAqLworCVBIWV9NT0RFNl9SWFNBVF9ESVMJPSAoMVUgPDwgMCksCS8qIFNhdHVyYXRlIEN0bCAqLwogfTsKIAogZW51bSBtdnNfaW5mb19mbGFncyB7CkBAIC01MTEsNyArNTI3LDQzIEBACiB9OwogCiBlbnVtIGVycm9yX2luZm9fcmVjIHsKLQlDTURfSVNTX1NUUEQJPSAgKDFVIDw8IDMxKSwJLyogQ21kIElzc3VlIFN0b3BwZWQgKi8KKwlDTURfSVNTX1NUUEQJPSAoMVUgPDwgMzEpLAkvKiBDbWQgSXNzdWUgU3RvcHBlZCAqLworCUNNRF9QSV9FUlIJPSAoMVUgPDwgMzApLAkvKiBQcm90ZWN0aW9uIGluZm8gZXJyb3IuICBzZWUgZmxhZ3MyICovCisJUlNQX09WRVIJPSAoMVUgPDwgMjkpLAkvKiByc3AgYnVmZmVyIG92ZXJmbG93ICovCisJUkVUUllfTElNCT0gKDFVIDw8IDI4KSwJLyogRklTL2ZyYW1lIHJldHJ5IGxpbWl0IGV4Y2VlZGVkICovCisJVU5LX0ZJUyAJPSAoMVUgPDwgMjcpLAkvKiB1bmtub3duIEZJUyAqLworCURNQV9URVJNCT0gKDFVIDw8IDI2KSwJLyogRE1BIHRlcm1pbmF0ZSBwcmltaXRpdmUgcngnZCAqLworCVNZTkNfRVJSCT0gKDFVIDw8IDI1KSwJLyogU1lOQyByeCdkIGR1cmluZyBmcmFtZSB4bWl0ICovCisJVEZJTEVfRVJSCT0gKDFVIDw8IDI0KSwJLyogU0FUQSB0YXNrZmlsZSBFcnJvciBiaXQgc2V0ICovCisJUl9FUlIJCT0gKDFVIDw8IDIzKSwJLyogU0FUQSByZXR1cm5lZCBSX0VSUiBwcmltICovCisJUkRfT0ZTCQk9ICgxVSA8PCAyMCksCS8qIFJlYWQgREFUQSBmcmFtZSBpbnZhbGlkIG9mZnNldCAqLworCVhGRVJfUkRZX09GUwk9ICgxVSA8PCAxOSksCS8qIFhGRVJfUkRZIG9mZnNldCBlcnJvciAqLworCVVORVhQX1hGRVJfUkRZCT0gKDFVIDw8IDE4KSwJLyogdW5leHBlY3RlZCBYRkVSX1JEWSBlcnJvciAqLworCURBVEFfT1ZFUl9VTkRFUiA9ICgxVSA8PCAxNiksCS8qIGRhdGEgb3ZlcmZsb3cvdW5kZXJmbG93ICovCisJSU5URVJMT0NLCT0gKDFVIDw8IDE1KSwJLyogaW50ZXJsb2NrIGVycm9yICovCisJTkFLCQk9ICgxVSA8PCAxNCksCS8qIE5BSyByeCdkICovCisJQUNLX05BS19UTwk9ICgxVSA8PCAxMyksCS8qIEFDSy9OQUsgdGltZW91dCAqLworCUNYTl9DTE9TRUQJPSAoMVUgPDwgMTIpLAkvKiBjeG4gY2xvc2VkIHcvb3V0IGFjay9uYWsgKi8KKwlPUEVOX1RPIAk9ICgxVSA8PCAxMSksCS8qIElfVCBuZXh1cyBsb3N0LCBvcGVuIGN4biB0aW1lb3V0ICovCisJUEFUSF9CTE9DS0VECT0gKDFVIDw8IDEwKSwJLyogSV9UIG5leHVzIGxvc3QsIHBhdGh3YXkgYmxvY2tlZCAqLworCU5PX0RFU1QgCT0gKDFVIDw8IDkpLAkvKiBJX1QgbmV4dXMgbG9zdCwgbm8gZGVzdGluYXRpb24gKi8KKwlTVFBfUkVTX0JTWQk9ICgxVSA8PCA4KSwJLyogU1RQIHJlc291cmNlcyBidXN5ICovCisJQlJFQUsJCT0gKDFVIDw8IDcpLAkvKiBicmVhayByZWNlaXZlZCAqLworCUJBRF9ERVNUCT0gKDFVIDw8IDYpLAkvKiBiYWQgZGVzdGluYXRpb24gKi8KKwlCQURfUFJPVE8JPSAoMVUgPDwgNSksCS8qIHByb3RvY29sIG5vdCBzdXBwb3J0ZWQgKi8KKwlCQURfUkFURQk9ICgxVSA8PCA0KSwJLyogY3huIHJhdGUgbm90IHN1cHBvcnRlZCAqLworCVdST05HX0RFU1QJPSAoMVUgPDwgMyksCS8qIHdyb25nIGRlc3RpbmF0aW9uIGVycm9yICovCisJQ1JFRElUX1RPCT0gKDFVIDw8IDIpLAkvKiBjcmVkaXQgdGltZW91dCAqLworCVdET0dfVE8gCT0gKDFVIDw8IDEpLAkvKiB3YXRjaGRvZyB0aW1lb3V0ICovCisJQlVGX1BBUiAJPSAoMVUgPDwgMCksCS8qIGJ1ZmZlciBwYXJpdHkgZXJyb3IgKi8KK307CisKK2VudW0gZXJyb3JfaW5mb19yZWNfMiB7CisJU0xPVF9CU1lfRVJSCT0gKDFVIDw8IDMxKSwJLyogU2xvdCBCdXN5IEVycm9yICovCisJR1JEX0NIS19FUlIJPSAoMVUgPDwgMTQpLAkvKiBHdWFyZCBDaGVjayBFcnJvciAqLworCUFQUF9DSEtfRVJSCT0gKDFVIDw8IDEzKSwJLyogQXBwbGljYXRpb24gQ2hlY2sgZXJyb3IgKi8KKwlSRUZfQ0hLX0VSUgk9ICgxVSA8PCAxMiksCS8qIFJlZmVyZW5jZSBDaGVjayBFcnJvciAqLworCVVTUl9CTEtfTk0JPSAoMVUgPDwgMCksCS8qIFVzZXIgQmxvY2sgTnVtYmVyICovCiB9OwogCiBzdHJ1Y3QgbXZzX2NoaXBfaW5mbyB7CkBAIC01NDMsMjggKzU5NSwxMiBAQAogCV9fbGUzMgkJCXJlc2VydmVkWzRdOwogfTsKIAotc3RydWN0IG12c19zbG90X2luZm8gewotCXN0cnVjdCBzYXNfdGFzawkJKnRhc2s7Ci0JdTMyCQkJbl9lbGVtOwotCXUzMgkJCXR4OwotCi0JLyogRE1BIGJ1ZmZlciBmb3Igc3RvcmluZyBjbWQgdGJsLCBvcGVuIGFkZHIgZnJhbWUsIHN0YXR1cyBidWZmZXIsCi0JICogYW5kIFBSRCB0YWJsZQotCSAqLwotCXZvaWQJCQkqYnVmOwotCWRtYV9hZGRyX3QJCWJ1Zl9kbWE7Ci0jaWYgX01WX0RVTVAKLQl1MzIJCQljbWRfc2l6ZTsKLSNlbmRpZgotCi0Jdm9pZAkJCSpyZXNwb25zZTsKLX07Ci0KIHN0cnVjdCBtdnNfcG9ydCB7CiAJc3RydWN0IGFzZF9zYXNfcG9ydAlzYXNfcG9ydDsKIAl1OAkJCXBvcnRfYXR0YWNoZWQ7CiAJdTgJCQl0YXNrZmlsZXNldDsKIAl1OAkJCXdpZGVfcG9ydF9waHltYXA7CisJc3RydWN0IGxpc3RfaGVhZAlsaXN0OwogfTsKIAogc3RydWN0IG12c19waHkgewpAQCAtNTgyLDYgKzYxOCwyNyBAQAogCXUzMgkJZnJhbWVfcmN2ZF9zaXplOwogCXU4CQlmcmFtZV9yY3ZkWzMyXTsKIAl1OAkJcGh5X2F0dGFjaGVkOworCWVudW0gc2FzX2xpbmtyYXRlCW1pbmltdW1fbGlua3JhdGU7CisJZW51bSBzYXNfbGlua3JhdGUJbWF4aW11bV9saW5rcmF0ZTsKK307CisKK3N0cnVjdCBtdnNfc2xvdF9pbmZvIHsKKwlzdHJ1Y3QgbGlzdF9oZWFkCWxpc3Q7CisJc3RydWN0IHNhc190YXNrCQkqdGFzazsKKwl1MzIJCQluX2VsZW07CisJdTMyCQkJdHg7CisKKwkvKiBETUEgYnVmZmVyIGZvciBzdG9yaW5nIGNtZCB0YmwsIG9wZW4gYWRkciBmcmFtZSwgc3RhdHVzIGJ1ZmZlciwKKwkgKiBhbmQgUFJEIHRhYmxlCisJICovCisJdm9pZAkJCSpidWY7CisJZG1hX2FkZHJfdAkJYnVmX2RtYTsKKyNpZiBfTVZfRFVNUAorCXUzMgkJCWNtZF9zaXplOworI2VuZGlmCisKKwl2b2lkCQkJKnJlc3BvbnNlOworCXN0cnVjdCBtdnNfcG9ydAkJKnBvcnQ7CiB9OwogCiBzdHJ1Y3QgbXZzX2luZm8gewpAQCAtNjEyLDIxICs2NjksMTQgQEAKIAogCWNvbnN0IHN0cnVjdCBtdnNfY2hpcF9pbmZvICpjaGlwOwogCi0JdW5zaWduZWQgbG9uZwkJdGFnc1tNVlNfU0xPVFNdOworCXU4CQkJdGFnc1tNVlNfU0xPVFNdOwogCXN0cnVjdCBtdnNfc2xvdF9pbmZvCXNsb3RfaW5mb1tNVlNfU0xPVFNdOwogCQkJCS8qIGZ1cnRoZXIgcGVyLXNsb3QgaW5mb3JtYXRpb24gKi8KIAlzdHJ1Y3QgbXZzX3BoeQkJcGh5W01WU19NQVhfUEhZU107CiAJc3RydWN0IG12c19wb3J0CQlwb3J0W01WU19NQVhfUEhZU107Ci0KLQl1MzIJCQljYW5fcXVldWU7CS8qIHBlciBhZGFwdGVyICovCi0JdTMyCQkJdGFnX291dDsJLypHZXQqLwotCXUzMgkJCXRhZ19pbjsJCS8qR2l2ZSovCi19OwotCi1zdHJ1Y3QgbXZzX3F1ZXVlX3Rhc2sgewotCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKLQotCXZvaWQgICAqdWxkZF90YXNrOworI2lmZGVmIE1WU19VU0VfVEFTS0xFVAorCXN0cnVjdCB0YXNrbGV0X3N0cnVjdAl0YXNrbGV0OworI2VuZGlmCiB9OwogCiBzdGF0aWMgaW50IG12c19waHlfY29udHJvbChzdHJ1Y3QgYXNkX3Nhc19waHkgKnNhc19waHksIGVudW0gcGh5X2Z1bmMgZnVuYywKQEAgLTY0MSwxMCArNjkxLDExIEBACiBzdGF0aWMgdTMyIG12c19pc19waHlfcmVhZHkoc3RydWN0IG12c19pbmZvICptdmksIGludCBpKTsKIHN0YXRpYyB2b2lkIG12c19kZXRlY3RfcG9ydHR5cGUoc3RydWN0IG12c19pbmZvICptdmksIGludCBpKTsKIHN0YXRpYyB2b2lkIG12c191cGRhdGVfcGh5aW5mbyhzdHJ1Y3QgbXZzX2luZm8gKm12aSwgaW50IGksIGludCBnZXRfc3QpOworc3RhdGljIHZvaWQgbXZzX3JlbGVhc2VfdGFzayhzdHJ1Y3QgbXZzX2luZm8gKm12aSwgaW50IHBoeV9ubyk7CiAKIHN0YXRpYyBpbnQgbXZzX3NjYW5fZmluaXNoZWQoc3RydWN0IFNjc2lfSG9zdCAqLCB1bnNpZ25lZCBsb25nKTsKIHN0YXRpYyB2b2lkIG12c19zY2FuX3N0YXJ0KHN0cnVjdCBTY3NpX0hvc3QgKik7Ci1zdGF0aWMgaW50IG12c19zYXNfc2xhdmVfYWxsb2Moc3RydWN0IHNjc2lfZGV2aWNlICpzY3NpX2Rldik7CitzdGF0aWMgaW50IG12c19zbGF2ZV9jb25maWd1cmUoc3RydWN0IHNjc2lfZGV2aWNlICpzZGV2KTsKIAogc3RhdGljIHN0cnVjdCBzY3NpX3RyYW5zcG9ydF90ZW1wbGF0ZSAqbXZzX3N0dDsKIApAQCAtNjU5LDcgKzcxMCw3IEBACiAJLm5hbWUJCQk9IERSVl9OQU1FLAogCS5xdWV1ZWNvbW1hbmQJCT0gc2FzX3F1ZXVlY29tbWFuZCwKIAkudGFyZ2V0X2FsbG9jCQk9IHNhc190YXJnZXRfYWxsb2MsCi0JLnNsYXZlX2NvbmZpZ3VyZQk9IHNhc19zbGF2ZV9jb25maWd1cmUsCisJLnNsYXZlX2NvbmZpZ3VyZQk9IG12c19zbGF2ZV9jb25maWd1cmUsCiAJLnNsYXZlX2Rlc3Ryb3kJCT0gc2FzX3NsYXZlX2Rlc3Ryb3ksCiAJLnNjYW5fZmluaXNoZWQJCT0gbXZzX3NjYW5fZmluaXNoZWQsCiAJLnNjYW5fc3RhcnQJCT0gbXZzX3NjYW5fc3RhcnQsCkBAIC02NzQsNyArNzI1LDcgQEAKIAkudXNlX2NsdXN0ZXJpbmcJCT0gRU5BQkxFX0NMVVNURVJJTkcsCiAJLmVoX2RldmljZV9yZXNldF9oYW5kbGVyCT0gc2FzX2VoX2RldmljZV9yZXNldF9oYW5kbGVyLAogCS5laF9idXNfcmVzZXRfaGFuZGxlcgk9IHNhc19laF9idXNfcmVzZXRfaGFuZGxlciwKLQkuc2xhdmVfYWxsb2MJCT0gbXZzX3Nhc19zbGF2ZV9hbGxvYywKKwkuc2xhdmVfYWxsb2MJCT0gc2FzX3NsYXZlX2FsbG9jLAogCS50YXJnZXRfZGVzdHJveQkJPSBzYXNfdGFyZ2V0X2Rlc3Ryb3ksCiAJLmlvY3RsCQkJPSBzYXNfaW9jdGwsCiB9OwpAQCAtNzA5LDEwICs3NjAsMTAgQEAKIAlwcmludGsoIlxuIik7CiB9CiAKKyNpZiBfTVZfRFVNUAogc3RhdGljIHZvaWQgbXZzX2hiYV9zYl9kdW1wKHN0cnVjdCBtdnNfaW5mbyAqbXZpLCB1MzIgdGFnLAogCQkJCSAgIGVudW0gc2FzX3Byb3RvY29sIHByb3RvKQogewotI2lmIF9NVl9EVU1QCiAJdTMyIG9mZnNldDsKIAlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IG12aS0+cGRldjsKIAlzdHJ1Y3QgbXZzX3Nsb3RfaW5mbyAqc2xvdCA9ICZtdmktPnNsb3RfaW5mb1t0YWddOwpAQCAtNzIzLDE0ICs3NzQsMTQgQEAKIAkJCXRhZyk7CiAJbXZzX2hleGR1bXAoMzIsICh1OCAqKSBzbG90LT5yZXNwb25zZSwKIAkJICAgICh1MzIpIHNsb3QtPmJ1Zl9kbWEgKyBvZmZzZXQpOwotI2VuZGlmCiB9CisjZW5kaWYKIAogc3RhdGljIHZvaWQgbXZzX2hiYV9tZW1vcnlfZHVtcChzdHJ1Y3QgbXZzX2luZm8gKm12aSwgdTMyIHRhZywKIAkJCQllbnVtIHNhc19wcm90b2NvbCBwcm90bykKIHsKICNpZiBfTVZfRFVNUAotCXUzMiBzeiwgd19wdHIsIHJfcHRyOworCXUzMiBzeiwgd19wdHI7CiAJdTY0IGFkZHI7CiAJdm9pZCBfX2lvbWVtICpyZWdzID0gbXZpLT5yZWdzOwogCXN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gbXZpLT5wZGV2OwpAQCAtNzM4LDEyICs3ODksMTAgQEAKIAogCS8qRGVsaXZlcnkgUXVldWUgKi8KIAlzeiA9IG1yMzIoVFhfQ0ZHKSAmIFRYX1JJTkdfU1pfTUFTSzsKLQl3X3B0ciA9IG1yMzIoVFhfUFJPRF9JRFgpICYgVFhfUklOR19TWl9NQVNLOwotCXJfcHRyID0gbXIzMihUWF9DT05TX0lEWCkgJiBUWF9SSU5HX1NaX01BU0s7CisJd19wdHIgPSBzbG90LT50eDsKIAlhZGRyID0gbXIzMihUWF9ISSkgPDwgMTYgPDwgMTYgfCBtcjMyKFRYX0xPKTsKIAlkZXZfcHJpbnRrKEtFUk5fREVCVUcsICZwZGV2LT5kZXYsCi0JCSJEZWxpdmVyeSBRdWV1ZSBTaXplPSUwNGQgLCBXUlRfUFRSPSUwNFggLCBSRF9QVFI9JTA0WFxuIiwKLQkJc3osIHdfcHRyLCByX3B0cik7CisJCSJEZWxpdmVyeSBRdWV1ZSBTaXplPSUwNGQgLCBXUlRfUFRSPSUwNFhcbiIsIHN6LCB3X3B0cik7CiAJZGV2X3ByaW50ayhLRVJOX0RFQlVHLCAmcGRldi0+ZGV2LAogCQkiRGVsaXZlcnkgUXVldWUgQmFzZSBBZGRyZXNzPTB4JWxsWCAoUEEpIgogCQkiKHR4X2RtYT0weCVsbFgpLCBFbnRyeT0lMDRkXG4iLApAQCAtNzUxLDExICs4MDAsMTEgQEAKIAltdnNfaGV4ZHVtcChzaXplb2YodTMyKSwgKHU4ICopKCZtdmktPnR4W212aS0+dHhfcHJvZF0pLAogCQkJKHUzMikgbXZpLT50eF9kbWEgKyBzaXplb2YodTMyKSAqIHdfcHRyKTsKIAkvKkNvbW1hbmQgTGlzdCAqLwotCWFkZHIgPSBtcjMyKENNRF9MSVNUX0hJKSA8PCAxNiA8PCAxNiB8IG1yMzIoQ01EX0xJU1RfTE8pOworCWFkZHIgPSBtdmktPnNsb3RfZG1hOwogCWRldl9wcmludGsoS0VSTl9ERUJVRywgJnBkZXYtPmRldiwKIAkJIkNvbW1hbmQgTGlzdCBCYXNlIEFkZHJlc3M9MHglbGxYIChQQSkiCiAJCSIoc2xvdF9kbWE9MHglbGxYKSwgSGVhZGVyPSUwM2RcbiIsCi0JCWFkZHIsIG12aS0+c2xvdF9kbWEsIHRhZyk7CisJCWFkZHIsIHNsb3QtPmJ1Zl9kbWEsIHRhZyk7CiAJZGV2X3ByaW50ayhLRVJOX0RFQlVHLCAmcGRldi0+ZGV2LCAiQ29tbWFuZCBIZWFkZXJbJTAzZF06XG4iLCB0YWcpOwogCS8qbXZzX2NtZF9oZHIgKi8KIAltdnNfaGV4ZHVtcChzaXplb2Yoc3RydWN0IG12c19jbWRfaGRyKSwgKHU4ICopKCZtdmktPnNsb3RbdGFnXSksCkBAIC03NzksNyArODI4LDcgQEAKIAogc3RhdGljIHZvaWQgbXZzX2hiYV9jcV9kdW1wKHN0cnVjdCBtdnNfaW5mbyAqbXZpKQogewotI2lmIF9NVl9EVU1QCisjaWYgKF9NVl9EVU1QID4gMikKIAl1NjQgYWRkcjsKIAl2b2lkIF9faW9tZW0gKnJlZ3MgPSBtdmktPnJlZ3M7CiAJc3RydWN0IHBjaV9kZXYgKnBkZXYgPSBtdmktPnBkZXY7CkBAIC03ODgsOCArODM3LDggQEAKIAogCS8qQ29tcGxldGlvbiBRdWV1ZSAqLwogCWFkZHIgPSBtcjMyKFJYX0hJKSA8PCAxNiA8PCAxNiB8IG1yMzIoUlhfTE8pOwotCWRldl9wcmludGsoS0VSTl9ERUJVRywgJnBkZXYtPmRldiwgIkNvbXBsZXRpb24gVGFzayA9IDB4JTA4WFxuIiwKLQkJICAgKHUzMikgbXZpLT5zbG90X2luZm9bcnhfZGVzYyAmIFJYUV9TTE9UX01BU0tdLnRhc2spOworCWRldl9wcmludGsoS0VSTl9ERUJVRywgJnBkZXYtPmRldiwgIkNvbXBsZXRpb24gVGFzayA9IDB4JXBcbiIsCisJCSAgIG12aS0+c2xvdF9pbmZvW3J4X2Rlc2MgJiBSWFFfU0xPVF9NQVNLXS50YXNrKTsKIAlkZXZfcHJpbnRrKEtFUk5fREVCVUcsICZwZGV2LT5kZXYsCiAJCSJDb21wbGV0aW9uIExpc3QgQmFzZSBBZGRyZXNzPTB4JWxsWCAoUEEpLCAiCiAJCSJDUV9FbnRyeT0lMDRkLCBDUV9XUD0weCUwOFhcbiIsCkBAIC04NTQsMzQgKzkwMyw1MyBAQAogCXJldHVybiByYzsKIH0KIAorc3RhdGljIGludCBtdnNfZmluZF90YWcoc3RydWN0IG12c19pbmZvICptdmksIHN0cnVjdCBzYXNfdGFzayAqdGFzaywgdTMyICp0YWcpCit7CisJaWYgKHRhc2stPmxsZGRfdGFzaykgeworCQlzdHJ1Y3QgbXZzX3Nsb3RfaW5mbyAqc2xvdDsKKwkJc2xvdCA9IChzdHJ1Y3QgbXZzX3Nsb3RfaW5mbyAqKSB0YXNrLT5sbGRkX3Rhc2s7CisJCSp0YWcgPSBzbG90IC0gbXZpLT5zbG90X2luZm87CisJCXJldHVybiAxOworCX0KKwlyZXR1cm4gMDsKK30KKwogc3RhdGljIHZvaWQgbXZzX3RhZ19jbGVhcihzdHJ1Y3QgbXZzX2luZm8gKm12aSwgdTMyIHRhZykKIHsKLQltdmktPnRhZ19pbiA9IChtdmktPnRhZ19pbiArIDEpICYgKE1WU19TTE9UUyAtIDEpOwotCW12aS0+dGFnc1ttdmktPnRhZ19pbl0gPSB0YWc7CisJdm9pZCAqYml0bWFwID0gKHZvaWQgKikgJm12aS0+dGFnczsKKwljbGVhcl9iaXQodGFnLCBiaXRtYXApOwogfQogCiBzdGF0aWMgdm9pZCBtdnNfdGFnX2ZyZWUoc3RydWN0IG12c19pbmZvICptdmksIHUzMiB0YWcpCiB7Ci0JbXZpLT50YWdfb3V0ID0gKG12aS0+dGFnX291dCAtIDEpICYgKE1WU19TTE9UUyAtIDEpOworCW12c190YWdfY2xlYXIobXZpLCB0YWcpOworfQorCitzdGF0aWMgdm9pZCBtdnNfdGFnX3NldChzdHJ1Y3QgbXZzX2luZm8gKm12aSwgdW5zaWduZWQgaW50IHRhZykKK3sKKwl2b2lkICpiaXRtYXAgPSAodm9pZCAqKSAmbXZpLT50YWdzOworCXNldF9iaXQodGFnLCBiaXRtYXApOwogfQogCiBzdGF0aWMgaW50IG12c190YWdfYWxsb2Moc3RydWN0IG12c19pbmZvICptdmksIHUzMiAqdGFnX291dCkKIHsKLQlpZiAobXZpLT50YWdfb3V0ICE9IG12aS0+dGFnX2luKSB7Ci0JCSp0YWdfb3V0ID0gbXZpLT50YWdzW212aS0+dGFnX291dF07Ci0JCW12aS0+dGFnX291dCA9IChtdmktPnRhZ19vdXQgKyAxKSAmIChNVlNfU0xPVFMgLSAxKTsKLQkJcmV0dXJuIDA7Ci0JfQotCXJldHVybiAtRUJVU1k7CisJdW5zaWduZWQgaW50IGluZGV4LCB0YWc7CisJdm9pZCAqYml0bWFwID0gKHZvaWQgKikgJm12aS0+dGFnczsKKworCWluZGV4ID0gZmluZF9maXJzdF96ZXJvX2JpdChiaXRtYXAsIE1WU19TTE9UUyk7CisJdGFnID0gaW5kZXg7CisJaWYgKHRhZyA+PSBNVlNfU0xPVFMpCisJCXJldHVybiAtU0FTX1FVRVVFX0ZVTEw7CisJbXZzX3RhZ19zZXQobXZpLCB0YWcpOworCSp0YWdfb3V0ID0gdGFnOworCXJldHVybiAwOwogfQogCiBzdGF0aWMgdm9pZCBtdnNfdGFnX2luaXQoc3RydWN0IG12c19pbmZvICptdmkpCiB7CiAJaW50IGk7CiAJZm9yIChpID0gMDsgaSA8IE1WU19TTE9UUzsgKytpKQotCQltdmktPnRhZ3NbaV0gPSBpOwotCW12aS0+dGFnX291dCA9IDA7Ci0JbXZpLT50YWdfaW4gPSBNVlNfU0xPVFMgLSAxOworCQltdnNfdGFnX2NsZWFyKG12aSwgaSk7CiB9CiAKICNpZm5kZWYgTVZTX0RJU0FCTEVfTlZSQU0KQEAgLTEwMTMsMTAgKzEwODEsMjEgQEAKIHN0YXRpYyB2b2lkIG12c19ieXRlc19kbWFlZChzdHJ1Y3QgbXZzX2luZm8gKm12aSwgaW50IGkpCiB7CiAJc3RydWN0IG12c19waHkgKnBoeSA9ICZtdmktPnBoeVtpXTsKKwlzdHJ1Y3QgYXNkX3Nhc19waHkgKnNhc19waHkgPSBtdmktPnNhcy5zYXNfcGh5W2ldOwogCiAJaWYgKCFwaHktPnBoeV9hdHRhY2hlZCkKIAkJcmV0dXJuOwogCisJaWYgKHNhc19waHktPnBoeSkgeworCQlzdHJ1Y3Qgc2FzX3BoeSAqc3BoeSA9IHNhc19waHktPnBoeTsKKworCQlzcGh5LT5uZWdvdGlhdGVkX2xpbmtyYXRlID0gc2FzX3BoeS0+bGlua3JhdGU7CisJCXNwaHktPm1pbmltdW1fbGlua3JhdGUgPSBwaHktPm1pbmltdW1fbGlua3JhdGU7CisJCXNwaHktPm1pbmltdW1fbGlua3JhdGVfaHcgPSBTQVNfTElOS19SQVRFXzFfNV9HQlBTOworCQlzcGh5LT5tYXhpbXVtX2xpbmtyYXRlID0gcGh5LT5tYXhpbXVtX2xpbmtyYXRlOworCQlzcGh5LT5tYXhpbXVtX2xpbmtyYXRlX2h3ID0gU0FTX0xJTktfUkFURV8zXzBfR0JQUzsKKwl9CisKIAlpZiAocGh5LT5waHlfdHlwZSAmIFBPUlRfVFlQRV9TQVMpIHsKIAkJc3RydWN0IHNhc19pZGVudGlmeV9mcmFtZSAqaWQ7CiAKQEAgLTEwNTMsODAgKzExMzIsMTQ5IEBACiAJfQogfQogCi1zdGF0aWMgaW50IG12c19zYXNfc2xhdmVfYWxsb2Moc3RydWN0IHNjc2lfZGV2aWNlICpzY3NpX2RldikKK3N0YXRpYyBpbnQgbXZzX3NsYXZlX2NvbmZpZ3VyZShzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnNkZXYpCiB7Ci0JaW50IHJjOworCXN0cnVjdCBkb21haW5fZGV2aWNlICpkZXYgPSBzZGV2X3RvX2RvbWFpbl9kZXYoc2Rldik7CisJaW50IHJldCA9IHNhc19zbGF2ZV9jb25maWd1cmUoc2Rldik7CiAKLQlyYyA9IHNhc19zbGF2ZV9hbGxvYyhzY3NpX2Rldik7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKIAotCXJldHVybiByYzsKKwlpZiAoZGV2X2lzX3NhdGEoZGV2KSkgeworCQkvKiBzdHJ1Y3QgYXRhX3BvcnQgKmFwID0gZGV2LT5zYXRhX2Rldi5hcDsgKi8KKwkJLyogc3RydWN0IGF0YV9kZXZpY2UgKmFkZXYgPSBhcC0+bGluay5kZXZpY2U7ICovCisKKwkJLyogY2xhbXAgYXQgbm8gTkNRIGZvciB0aGUgdGltZSBiZWluZyAqLworCQkvKiBhZGV2LT5mbGFncyB8PSBBVEFfREZMQUdfTkNRX09GRjsgKi8KKwkJc2NzaV9hZGp1c3RfcXVldWVfZGVwdGgoc2RldiwgTVNHX1NJTVBMRV9UQUcsIDEpOworCX0KKwlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHZvaWQgbXZzX2ludF9wb3J0KHN0cnVjdCBtdnNfaW5mbyAqbXZpLCBpbnQgcG9ydF9ubywgdTMyIGV2ZW50cykKK3N0YXRpYyB2b2lkIG12c19pbnRfcG9ydChzdHJ1Y3QgbXZzX2luZm8gKm12aSwgaW50IHBoeV9ubywgdTMyIGV2ZW50cykKIHsKIAlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IG12aS0+cGRldjsKIAlzdHJ1Y3Qgc2FzX2hhX3N0cnVjdCAqc2FzX2hhID0gJm12aS0+c2FzOwotCXN0cnVjdCBtdnNfcGh5ICpwaHkgPSAmbXZpLT5waHlbcG9ydF9ub107CisJc3RydWN0IG12c19waHkgKnBoeSA9ICZtdmktPnBoeVtwaHlfbm9dOwogCXN0cnVjdCBhc2Rfc2FzX3BoeSAqc2FzX3BoeSA9ICZwaHktPnNhc19waHk7CiAKLQlwaHktPmlycV9zdGF0dXMgPSBtdnNfcmVhZF9wb3J0X2lycV9zdGF0KG12aSwgcG9ydF9ubyk7CisJcGh5LT5pcnFfc3RhdHVzID0gbXZzX3JlYWRfcG9ydF9pcnFfc3RhdChtdmksIHBoeV9ubyk7CiAJLyoKIAkqIGV2ZW50cyBpcyBwb3J0IGV2ZW50IG5vdyAsCiAJKiB3ZSBuZWVkIGNoZWNrIHRoZSBpbnRlcnJ1cHQgc3RhdHVzIHdoaWNoIGJlbG9uZ3MgdG8gcGVyIHBvcnQuCiAJKi8KIAlkZXZfcHJpbnRrKEtFUk5fREVCVUcsICZwZGV2LT5kZXYsCiAJCSJQb3J0ICVkIEV2ZW50ID0gJVhcbiIsCi0JCXBvcnRfbm8sIHBoeS0+aXJxX3N0YXR1cyk7CisJCXBoeV9ubywgcGh5LT5pcnFfc3RhdHVzKTsKIAogCWlmIChwaHktPmlycV9zdGF0dXMgJiAoUEhZRVZfUE9PRiB8IFBIWUVWX0RFQ19FUlIpKSB7Ci0JCWlmICghbXZzX2lzX3BoeV9yZWFkeShtdmksIHBvcnRfbm8pKSB7CisJCW12c19yZWxlYXNlX3Rhc2sobXZpLCBwaHlfbm8pOworCQlpZiAoIW12c19pc19waHlfcmVhZHkobXZpLCBwaHlfbm8pKSB7CiAJCQlzYXNfcGh5X2Rpc2Nvbm5lY3RlZChzYXNfcGh5KTsKIAkJCXNhc19oYS0+bm90aWZ5X3BoeV9ldmVudChzYXNfcGh5LCBQSFlFX0xPU1NfT0ZfU0lHTkFMKTsKKwkJCWRldl9wcmludGsoS0VSTl9JTkZPLCAmcGRldi0+ZGV2LAorCQkJCSJQb3J0ICVkIFVucGx1ZyBOb3RpY2VcbiIsIHBoeV9ubyk7CisKIAkJfSBlbHNlCiAJCQltdnNfcGh5X2NvbnRyb2woc2FzX3BoeSwgUEhZX0ZVTkNfTElOS19SRVNFVCwgTlVMTCk7CiAJfQogCWlmICghKHBoeS0+aXJxX3N0YXR1cyAmIFBIWUVWX0RFQ19FUlIpKSB7CiAJCWlmIChwaHktPmlycV9zdGF0dXMgJiBQSFlFVl9DT01XQUtFKSB7Ci0JCQl1MzIgdG1wID0gbXZzX3JlYWRfcG9ydF9pcnFfbWFzayhtdmksIHBvcnRfbm8pOwotCQkJbXZzX3dyaXRlX3BvcnRfaXJxX21hc2sobXZpLCBwb3J0X25vLAorCQkJdTMyIHRtcCA9IG12c19yZWFkX3BvcnRfaXJxX21hc2sobXZpLCBwaHlfbm8pOworCQkJbXZzX3dyaXRlX3BvcnRfaXJxX21hc2sobXZpLCBwaHlfbm8sCiAJCQkJCQl0bXAgfCBQSFlFVl9TSUdfRklTKTsKIAkJfQogCQlpZiAocGh5LT5pcnFfc3RhdHVzICYgKFBIWUVWX1NJR19GSVMgfCBQSFlFVl9JRF9ET05FKSkgewotCQkJcGh5LT5waHlfc3RhdHVzID0gbXZzX2lzX3BoeV9yZWFkeShtdmksIHBvcnRfbm8pOworCQkJcGh5LT5waHlfc3RhdHVzID0gbXZzX2lzX3BoeV9yZWFkeShtdmksIHBoeV9ubyk7CiAJCQlpZiAocGh5LT5waHlfc3RhdHVzKSB7Ci0JCQkJbXZzX2RldGVjdF9wb3J0dHlwZShtdmksIHBvcnRfbm8pOworCQkJCW12c19kZXRlY3RfcG9ydHR5cGUobXZpLCBwaHlfbm8pOwogCiAJCQkJaWYgKHBoeS0+cGh5X3R5cGUgJiBQT1JUX1RZUEVfU0FUQSkgewogCQkJCQl1MzIgdG1wID0gbXZzX3JlYWRfcG9ydF9pcnFfbWFzayhtdmksCi0JCQkJCQkJCXBvcnRfbm8pOworCQkJCQkJCQlwaHlfbm8pOwogCQkJCQl0bXAgJj0gflBIWUVWX1NJR19GSVM7CiAJCQkJCW12c193cml0ZV9wb3J0X2lycV9tYXNrKG12aSwKLQkJCQkJCQkJcG9ydF9ubywgdG1wKTsKKwkJCQkJCQkJcGh5X25vLCB0bXApOwogCQkJCX0KIAotCQkJCW12c191cGRhdGVfcGh5aW5mbyhtdmksIHBvcnRfbm8sIDApOworCQkJCW12c191cGRhdGVfcGh5aW5mbyhtdmksIHBoeV9ubywgMCk7CiAJCQkJc2FzX2hhLT5ub3RpZnlfcGh5X2V2ZW50KHNhc19waHksCiAJCQkJCQkJUEhZRV9PT0JfRE9ORSk7Ci0JCQkJbXZzX2J5dGVzX2RtYWVkKG12aSwgcG9ydF9ubyk7CisJCQkJbXZzX2J5dGVzX2RtYWVkKG12aSwgcGh5X25vKTsKIAkJCX0gZWxzZSB7CiAJCQkJZGV2X3ByaW50ayhLRVJOX0RFQlVHLCAmcGRldi0+ZGV2LAogCQkJCQkicGx1Z2luIGludGVycnVwdCBidXQgcGh5IGlzIGdvbmVcbiIpOwogCQkJCW12c19waHlfY29udHJvbChzYXNfcGh5LCBQSFlfRlVOQ19MSU5LX1JFU0VULAogCQkJCQkJCU5VTEwpOwogCQkJfQotCQl9IGVsc2UgaWYgKHBoeS0+aXJxX3N0YXR1cyAmIFBIWUVWX0JST0FEX0NIKQorCQl9IGVsc2UgaWYgKHBoeS0+aXJxX3N0YXR1cyAmIFBIWUVWX0JST0FEX0NIKSB7CisJCQltdnNfcmVsZWFzZV90YXNrKG12aSwgcGh5X25vKTsKIAkJCXNhc19oYS0+bm90aWZ5X3BvcnRfZXZlbnQoc2FzX3BoeSwKIAkJCQkJCVBPUlRFX0JST0FEQ0FTVF9SQ1ZEKTsKKwkJfQogCX0KLQltdnNfd3JpdGVfcG9ydF9pcnFfc3RhdChtdmksIHBvcnRfbm8sIHBoeS0+aXJxX3N0YXR1cyk7CisJbXZzX3dyaXRlX3BvcnRfaXJxX3N0YXQobXZpLCBwaHlfbm8sIHBoeS0+aXJxX3N0YXR1cyk7CiB9CiAKIHN0YXRpYyB2b2lkIG12c19pbnRfc2F0YShzdHJ1Y3QgbXZzX2luZm8gKm12aSkKIHsKLQkvKiBGSVhNRSAqLworCXUzMiB0bXA7CisJdm9pZCBfX2lvbWVtICpyZWdzID0gbXZpLT5yZWdzOworCXRtcCA9IG1yMzIoSU5UX1NUQVRfU1JTKTsKKwltdzMyKElOVF9TVEFUX1NSUywgdG1wICYgMHhGRkZGKTsKIH0KIAotc3RhdGljIHZvaWQgbXZzX3Nsb3RfZnJlZShzdHJ1Y3QgbXZzX2luZm8gKm12aSwgc3RydWN0IHNhc190YXNrICp0YXNrLAorc3RhdGljIHZvaWQgbXZzX3Nsb3RfcmVzZXQoc3RydWN0IG12c19pbmZvICptdmksIHN0cnVjdCBzYXNfdGFzayAqdGFzaywKKwkJCQl1MzIgc2xvdF9pZHgpCit7CisJdm9pZCBfX2lvbWVtICpyZWdzID0gbXZpLT5yZWdzOworCXN0cnVjdCBkb21haW5fZGV2aWNlICpkZXYgPSB0YXNrLT5kZXY7CisJc3RydWN0IGFzZF9zYXNfcG9ydCAqc2FzX3BvcnQgPSBkZXYtPnBvcnQ7CisJc3RydWN0IG12c19wb3J0ICpwb3J0ID0gbXZpLT5zbG90X2luZm9bc2xvdF9pZHhdLnBvcnQ7CisJdTMyIHJlZ19zZXQsIHBoeV9tYXNrOworCisJaWYgKCFzYXNfcHJvdG9jb2xfYXRhKHRhc2stPnRhc2tfcHJvdG8pKSB7CisJCXJlZ19zZXQgPSAwOworCQlwaHlfbWFzayA9IChwb3J0LT53aWRlX3BvcnRfcGh5bWFwKSA/IHBvcnQtPndpZGVfcG9ydF9waHltYXAgOgorCQkJCXNhc19wb3J0LT5waHlfbWFzazsKKwl9IGVsc2UgeworCQlyZWdfc2V0ID0gcG9ydC0+dGFza2ZpbGVzZXQ7CisJCXBoeV9tYXNrID0gc2FzX3BvcnQtPnBoeV9tYXNrOworCX0KKwltdmktPnR4W212aS0+dHhfcHJvZF0gPSBjcHVfdG9fbGUzMihUWFFfTU9ERV9JIHwgc2xvdF9pZHggfAorCQkJCQkoVFhRX0NNRF9TTE9UX1JFU0VUIDw8IFRYUV9DTURfU0hJRlQpIHwKKwkJCQkJKHBoeV9tYXNrIDw8IFRYUV9QSFlfU0hJRlQpIHwKKwkJCQkJKHJlZ19zZXQgPDwgVFhRX1NSU19TSElGVCkpOworCisJbXczMihUWF9QUk9EX0lEWCwgbXZpLT50eF9wcm9kKTsKKwltdmktPnR4X3Byb2QgPSAobXZpLT50eF9wcm9kICsgMSkgJiAoTVZTX0NISVBfU0xPVF9TWiAtIDEpOworfQorCitzdGF0aWMgaW50IG12c19zYXRhX2RvbmUoc3RydWN0IG12c19pbmZvICptdmksIHN0cnVjdCBzYXNfdGFzayAqdGFzaywKKwkJCXUzMiBzbG90X2lkeCwgaW50IGVycikKK3sKKwlzdHJ1Y3QgbXZzX3BvcnQgKnBvcnQgPSBtdmktPnNsb3RfaW5mb1tzbG90X2lkeF0ucG9ydDsKKwlzdHJ1Y3QgdGFza19zdGF0dXNfc3RydWN0ICp0c3RhdCA9ICZ0YXNrLT50YXNrX3N0YXR1czsKKwlzdHJ1Y3QgYXRhX3Rhc2tfcmVzcCAqcmVzcCA9IChzdHJ1Y3QgYXRhX3Rhc2tfcmVzcCAqKXRzdGF0LT5idWY7CisJaW50IHN0YXQgPSBTQU1fR09PRDsKKworCXJlc3AtPmZyYW1lX2xlbiA9IHNpemVvZihzdHJ1Y3QgZGV2X3RvX2hvc3RfZmlzKTsKKwltZW1jcHkoJnJlc3AtPmVuZGluZ19maXNbMF0sCisJICAgICAgIFNBVEFfUkVDRUlWRURfRDJIX0ZJUyhwb3J0LT50YXNrZmlsZXNldCksCisJICAgICAgIHNpemVvZihzdHJ1Y3QgZGV2X3RvX2hvc3RfZmlzKSk7CisJdHN0YXQtPmJ1Zl92YWxpZF9zaXplID0gc2l6ZW9mKCpyZXNwKTsKKwlpZiAodW5saWtlbHkoZXJyKSkKKwkJc3RhdCA9IFNBU19QUk9UT19SRVNQT05TRTsKKwlyZXR1cm4gc3RhdDsKK30KKworc3RhdGljIHZvaWQgbXZzX3Nsb3RfZnJlZShzdHJ1Y3QgbXZzX2luZm8gKm12aSwgdTMyIHJ4X2Rlc2MpCit7CisJdTMyIHNsb3RfaWR4ID0gcnhfZGVzYyAmIFJYUV9TTE9UX01BU0s7CisJbXZzX3RhZ19jbGVhcihtdmksIHNsb3RfaWR4KTsKK30KKworc3RhdGljIHZvaWQgbXZzX3Nsb3RfdGFza19mcmVlKHN0cnVjdCBtdnNfaW5mbyAqbXZpLCBzdHJ1Y3Qgc2FzX3Rhc2sgKnRhc2ssCiAJCQkgIHN0cnVjdCBtdnNfc2xvdF9pbmZvICpzbG90LCB1MzIgc2xvdF9pZHgpCiB7CiAJaWYgKCFzYXNfcHJvdG9jb2xfYXRhKHRhc2stPnRhc2tfcHJvdG8pKQpAQCAtMTE0OSwzOCArMTI5Nyw1OCBAQAogCQkvKiBkbyBub3RoaW5nICovCiAJCWJyZWFrOwogCX0KLQorCWxpc3RfZGVsKCZzbG90LT5saXN0KTsKKwl0YXNrLT5sbGRkX3Rhc2sgPSBOVUxMOwogCXNsb3QtPnRhc2sgPSBOVUxMOwotCW12c190YWdfY2xlYXIobXZpLCBzbG90X2lkeCk7CisJc2xvdC0+cG9ydCA9IE5VTEw7CiB9CiAKLXN0YXRpYyB2b2lkIG12c19zbG90X2VycihzdHJ1Y3QgbXZzX2luZm8gKm12aSwgc3RydWN0IHNhc190YXNrICp0YXNrLAorc3RhdGljIGludCBtdnNfc2xvdF9lcnIoc3RydWN0IG12c19pbmZvICptdmksIHN0cnVjdCBzYXNfdGFzayAqdGFzaywKIAkJCSB1MzIgc2xvdF9pZHgpCiB7CiAJc3RydWN0IG12c19zbG90X2luZm8gKnNsb3QgPSAmbXZpLT5zbG90X2luZm9bc2xvdF9pZHhdOwotCXU2NCBlcnJfZHcwID0gKih1MzIgKikgc2xvdC0+cmVzcG9uc2U7Ci0Jdm9pZCBfX2lvbWVtICpyZWdzID0gbXZpLT5yZWdzOwotCXUzMiB0bXA7CisJdTMyIGVycl9kdzAgPSBsZTMyX3RvX2NwdSgqKHUzMiAqKSAoc2xvdC0+cmVzcG9uc2UpKTsKKwl1MzIgZXJyX2R3MSA9IGxlMzJfdG9fY3B1KCoodTMyICopIChzbG90LT5yZXNwb25zZSArIDQpKTsKKwlpbnQgc3RhdCA9IFNBTV9DSEVDS19DT05EOwogCi0JaWYgKGVycl9kdzAgJiBDTURfSVNTX1NUUEQpCi0JCWlmIChzYXNfcHJvdG9jb2xfYXRhKHRhc2stPnRhc2tfcHJvdG8pKSB7Ci0JCQl0bXAgPSBtcjMyKElOVF9TVEFUX1NSUyk7Ci0JCQltdzMyKElOVF9TVEFUX1NSUywgdG1wICYgMHhGRkZGKTsKLQkJfQorCWlmIChlcnJfZHcxICYgU0xPVF9CU1lfRVJSKSB7CisJCXN0YXQgPSBTQVNfUVVFVUVfRlVMTDsKKwkJbXZzX3Nsb3RfcmVzZXQobXZpLCB0YXNrLCBzbG90X2lkeCk7CisJfQorCXN3aXRjaCAodGFzay0+dGFza19wcm90bykgeworCWNhc2UgU0FTX1BST1RPQ09MX1NTUDoKKwkJYnJlYWs7CisJY2FzZSBTQVNfUFJPVE9DT0xfU01QOgorCQlicmVhazsKKwljYXNlIFNBU19QUk9UT0NPTF9TQVRBOgorCWNhc2UgU0FTX1BST1RPQ09MX1NUUDoKKwljYXNlIFNBU19QUk9UT0NPTF9TQVRBIHwgU0FTX1BST1RPQ09MX1NUUDoKKwkJaWYgKGVycl9kdzAgJiBURklMRV9FUlIpCisJCQlzdGF0ID0gbXZzX3NhdGFfZG9uZShtdmksIHRhc2ssIHNsb3RfaWR4LCAxKTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJYnJlYWs7CisJfQogCi0JbXZzX2hiYV9zYl9kdW1wKG12aSwgc2xvdF9pZHgsIHRhc2stPnRhc2tfcHJvdG8pOworCW12c19oZXhkdW1wKDE2LCAodTggKikgc2xvdC0+cmVzcG9uc2UsIDApOworCXJldHVybiBzdGF0OwogfQogCi1zdGF0aWMgaW50IG12c19zbG90X2NvbXBsZXRlKHN0cnVjdCBtdnNfaW5mbyAqbXZpLCB1MzIgcnhfZGVzYykKK3N0YXRpYyBpbnQgbXZzX3Nsb3RfY29tcGxldGUoc3RydWN0IG12c19pbmZvICptdmksIHUzMiByeF9kZXNjLCB1MzIgZmxhZ3MpCiB7CiAJdTMyIHNsb3RfaWR4ID0gcnhfZGVzYyAmIFJYUV9TTE9UX01BU0s7CiAJc3RydWN0IG12c19zbG90X2luZm8gKnNsb3QgPSAmbXZpLT5zbG90X2luZm9bc2xvdF9pZHhdOwogCXN0cnVjdCBzYXNfdGFzayAqdGFzayA9IHNsb3QtPnRhc2s7Ci0Jc3RydWN0IHRhc2tfc3RhdHVzX3N0cnVjdCAqdHN0YXQgPSAmdGFzay0+dGFza19zdGF0dXM7Ci0Jc3RydWN0IG12c19wb3J0ICpwb3J0ID0gJm12aS0+cG9ydFt0YXNrLT5kZXYtPnBvcnQtPmlkXTsKKwlzdHJ1Y3QgdGFza19zdGF0dXNfc3RydWN0ICp0c3RhdDsKKwlzdHJ1Y3QgbXZzX3BvcnQgKnBvcnQ7CiAJYm9vbCBhYm9ydGVkOwogCXZvaWQgKnRvOwogCisJaWYgKHVubGlrZWx5KCF0YXNrIHx8ICF0YXNrLT5sbGRkX3Rhc2spKQorCQlyZXR1cm4gLTE7CisKKwltdnNfaGJhX2NxX2R1bXAobXZpKTsKKwogCXNwaW5fbG9jaygmdGFzay0+dGFza19zdGF0ZV9sb2NrKTsKIAlhYm9ydGVkID0gdGFzay0+dGFza19zdGF0ZV9mbGFncyAmIFNBU19UQVNLX1NUQVRFX0FCT1JURUQ7CiAJaWYgKCFhYm9ydGVkKSB7CkBAIC0xMTkwLDIyICsxMzU4LDI3IEBACiAJfQogCXNwaW5fdW5sb2NrKCZ0YXNrLT50YXNrX3N0YXRlX2xvY2spOwogCi0JaWYgKGFib3J0ZWQpCisJaWYgKGFib3J0ZWQpIHsKKwkJbXZzX3Nsb3RfdGFza19mcmVlKG12aSwgdGFzaywgc2xvdCwgc2xvdF9pZHgpOworCQltdnNfc2xvdF9mcmVlKG12aSwgcnhfZGVzYyk7CiAJCXJldHVybiAtMTsKKwl9CiAKKwlwb3J0ID0gc2xvdC0+cG9ydDsKKwl0c3RhdCA9ICZ0YXNrLT50YXNrX3N0YXR1czsKIAltZW1zZXQodHN0YXQsIDAsIHNpemVvZigqdHN0YXQpKTsKIAl0c3RhdC0+cmVzcCA9IFNBU19UQVNLX0NPTVBMRVRFOwogCi0KLQlpZiAodW5saWtlbHkoIXBvcnQtPnBvcnRfYXR0YWNoZWQpKSB7Ci0JCXRzdGF0LT5zdGF0ID0gU0FTX1BIWV9ET1dOOworCWlmICh1bmxpa2VseSghcG9ydC0+cG9ydF9hdHRhY2hlZCB8fCBmbGFncykpIHsKKwkJbXZzX3Nsb3RfZXJyKG12aSwgdGFzaywgc2xvdF9pZHgpOworCQlpZiAoIXNhc19wcm90b2NvbF9hdGEodGFzay0+dGFza19wcm90bykpCisJCQl0c3RhdC0+c3RhdCA9IFNBU19QSFlfRE9XTjsKIAkJZ290byBvdXQ7CiAJfQogCiAJLyogZXJyb3IgaW5mbyByZWNvcmQgcHJlc2VudCAqLwotCWlmICgocnhfZGVzYyAmIFJYUV9FUlIpICYmICgqKHU2NCAqKSBzbG90LT5yZXNwb25zZSkpIHsKLQkJdHN0YXQtPnN0YXQgPSBTQU1fQ0hFQ0tfQ09ORDsKLQkJbXZzX3Nsb3RfZXJyKG12aSwgdGFzaywgc2xvdF9pZHgpOworCWlmICh1bmxpa2VseSgocnhfZGVzYyAmIFJYUV9FUlIpICYmICgqKHU2NCAqKSBzbG90LT5yZXNwb25zZSkpKSB7CisJCXRzdGF0LT5zdGF0ID0gbXZzX3Nsb3RfZXJyKG12aSwgdGFzaywgc2xvdF9pZHgpOwogCQlnb3RvIG91dDsKIAl9CiAKQEAgLTEyNDIsMjEgKzE0MTUsNyBAQAogCWNhc2UgU0FTX1BST1RPQ09MX1NBVEE6CiAJY2FzZSBTQVNfUFJPVE9DT0xfU1RQOgogCWNhc2UgU0FTX1BST1RPQ09MX1NBVEEgfCBTQVNfUFJPVE9DT0xfU1RQOiB7Ci0JCQlzdHJ1Y3QgYXRhX3Rhc2tfcmVzcCAqcmVzcCA9Ci0JCQkgICAgKHN0cnVjdCBhdGFfdGFza19yZXNwICopdHN0YXQtPmJ1ZjsKLQotCQkJaWYgKChyeF9kZXNjICYgKFJYUV9ET05FIHwgUlhRX0VSUiB8IFJYUV9BVFROKSkgPT0KLQkJCSAgICBSWFFfRE9ORSkKLQkJCQl0c3RhdC0+c3RhdCA9IFNBTV9HT09EOwotCQkJZWxzZQotCQkJCXRzdGF0LT5zdGF0ID0gU0FNX0NIRUNLX0NPTkQ7Ci0KLQkJCXJlc3AtPmZyYW1lX2xlbiA9IHNpemVvZihzdHJ1Y3QgZGV2X3RvX2hvc3RfZmlzKTsKLQkJCW1lbWNweSgmcmVzcC0+ZW5kaW5nX2Zpc1swXSwKLQkJCSAgICAgICBTQVRBX1JFQ0VJVkVEX0QySF9GSVMocG9ydC0+dGFza2ZpbGVzZXQpLAotCQkJICAgICAgIHNpemVvZihzdHJ1Y3QgZGV2X3RvX2hvc3RfZmlzKSk7Ci0JCQlpZiAocmVzcC0+ZW5kaW5nX2Zpc1syXSAmIEFUQV9FUlIpCi0JCQkJbXZzX2hleGR1bXAoMTYsIHJlc3AtPmVuZGluZ19maXMsIDApOworCQkJdHN0YXQtPnN0YXQgPSBtdnNfc2F0YV9kb25lKG12aSwgdGFzaywgc2xvdF9pZHgsIDApOwogCQkJYnJlYWs7CiAJCX0KIApAQCAtMTI2NiwxMSArMTQyNSwzNCBAQAogCX0KIAogb3V0OgotCW12c19zbG90X2ZyZWUobXZpLCB0YXNrLCBzbG90LCBzbG90X2lkeCk7CisJbXZzX3Nsb3RfdGFza19mcmVlKG12aSwgdGFzaywgc2xvdCwgc2xvdF9pZHgpOworCWlmICh1bmxpa2VseSh0c3RhdC0+c3RhdCAhPSBTQVNfUVVFVUVfRlVMTCkpCisJCW12c19zbG90X2ZyZWUobXZpLCByeF9kZXNjKTsKKworCXNwaW5fdW5sb2NrKCZtdmktPmxvY2spOwogCXRhc2stPnRhc2tfZG9uZSh0YXNrKTsKKwlzcGluX2xvY2soJm12aS0+bG9jayk7CiAJcmV0dXJuIHRzdGF0LT5zdGF0OwogfQogCitzdGF0aWMgdm9pZCBtdnNfcmVsZWFzZV90YXNrKHN0cnVjdCBtdnNfaW5mbyAqbXZpLCBpbnQgcGh5X25vKQoreworCXN0cnVjdCBsaXN0X2hlYWQgKnBvcywgKm47CisJc3RydWN0IG12c19zbG90X2luZm8gKnNsb3Q7CisJc3RydWN0IG12c19waHkgKnBoeSA9ICZtdmktPnBoeVtwaHlfbm9dOworCXN0cnVjdCBtdnNfcG9ydCAqcG9ydCA9IHBoeS0+cG9ydDsKKwl1MzIgcnhfZGVzYzsKKworCWlmICghcG9ydCkKKwkJcmV0dXJuOworCisJbGlzdF9mb3JfZWFjaF9zYWZlKHBvcywgbiwgJnBvcnQtPmxpc3QpIHsKKwkJc2xvdCA9IGNvbnRhaW5lcl9vZihwb3MsIHN0cnVjdCBtdnNfc2xvdF9pbmZvLCBsaXN0KTsKKwkJcnhfZGVzYyA9ICh1MzIpIChzbG90IC0gbXZpLT5zbG90X2luZm8pOworCQltdnNfc2xvdF9jb21wbGV0ZShtdmksIHJ4X2Rlc2MsIDEpOworCX0KK30KKwogc3RhdGljIHZvaWQgbXZzX2ludF9mdWxsKHN0cnVjdCBtdnNfaW5mbyAqbXZpKQogewogCXZvaWQgX19pb21lbSAqcmVncyA9IG12aS0+cmVnczsKQEAgLTEzMDUsNDAgKzE0ODcsNDMgQEAKIAkgKiB3ZSBkb24ndCBoYXZlIHRvIHN0YWxsIHRoZSBDUFUgcmVhZGluZyB0aGF0IHJlZ2lzdGVyLgogCSAqIFRoZSBhY3R1YWwgUlggcmluZyBpcyBvZmZzZXQgYnkgb25lIGR3b3JkLCBkdWUgdG8gdGhpcy4KIAkgKi8KLQlyeF9wcm9kX2lkeCA9IG1yMzIoUlhfQ09OU19JRFgpICYgUlhfUklOR19TWl9NQVNLOwotCWlmIChyeF9wcm9kX2lkeCA9PSAweGZmZikgewkvKiBoL3cgaGFzbid0IHRvdWNoZWQgUlggcmluZyB5ZXQgKi8KLQkJbXZpLT5yeF9jb25zID0gMHhmZmY7CisJcnhfcHJvZF9pZHggPSBtdmktPnJ4X2NvbnM7CisJbXZpLT5yeF9jb25zID0gbGUzMl90b19jcHUobXZpLT5yeFswXSk7CisJaWYgKG12aS0+cnhfY29ucyA9PSAweGZmZikJLyogaC93IGhhc24ndCB0b3VjaGVkIFJYIHJpbmcgeWV0ICovCiAJCXJldHVybiAwOwotCX0KIAogCS8qIFRoZSBDTVBMX1EgbWF5IGNvbWUgbGF0ZSwgcmVhZCBmcm9tIHJlZ2lzdGVyIGFuZCB0cnkgYWdhaW4KIAkqIG5vdGU6IGlmIGNvYWxlc2NpbmcgaXMgZW5hYmxlZCwKIAkqIGl0IHdpbGwgbmVlZCB0byByZWFkIGZyb20gcmVnaXN0ZXIgZXZlcnkgdGltZSBmb3Igc3VyZQogCSovCiAJaWYgKG12aS0+cnhfY29ucyA9PSByeF9wcm9kX2lkeCkKLQkJcmV0dXJuIDA7CisJCW12aS0+cnhfY29ucyA9IG1yMzIoUlhfQ09OU19JRFgpICYgUlhfUklOR19TWl9NQVNLOwogCi0JaWYgKG12aS0+cnhfY29ucyA9PSAweGZmZikKLQkJbXZpLT5yeF9jb25zID0gTVZTX1JYX1JJTkdfU1ogLSAxOworCWlmIChtdmktPnJ4X2NvbnMgPT0gcnhfcHJvZF9pZHgpCisJCXJldHVybiAwOwogCiAJd2hpbGUgKG12aS0+cnhfY29ucyAhPSByeF9wcm9kX2lkeCkgewogCiAJCS8qIGluY3JlbWVudCBvdXIgaW50ZXJuYWwgUlggY29uc3VtZXIgcG9pbnRlciAqLwotCQltdmktPnJ4X2NvbnMgPSAobXZpLT5yeF9jb25zICsgMSkgJiAoTVZTX1JYX1JJTkdfU1ogLSAxKTsKKwkJcnhfcHJvZF9pZHggPSAocnhfcHJvZF9pZHggKyAxKSAmIChNVlNfUlhfUklOR19TWiAtIDEpOwogCi0JCXJ4X2Rlc2MgPSBsZTMyX3RvX2NwdShtdmktPnJ4W212aS0+cnhfY29ucyArIDFdKTsKLQotCQltdnNfaGJhX2NxX2R1bXAobXZpKTsKKwkJcnhfZGVzYyA9IGxlMzJfdG9fY3B1KG12aS0+cnhbcnhfcHJvZF9pZHggKyAxXSk7CiAKIAkJaWYgKGxpa2VseShyeF9kZXNjICYgUlhRX0RPTkUpKQotCQkJbXZzX3Nsb3RfY29tcGxldGUobXZpLCByeF9kZXNjKTsKKwkJCW12c19zbG90X2NvbXBsZXRlKG12aSwgcnhfZGVzYywgMCk7CiAJCWlmIChyeF9kZXNjICYgUlhRX0FUVE4pIHsKIAkJCWF0dG4gPSB0cnVlOwogCQkJZGV2X3ByaW50ayhLRVJOX0RFQlVHLCAmcGRldi0+ZGV2LCAiQVRUTiAlWFxuIiwKIAkJCQlyeF9kZXNjKTsKIAkJfSBlbHNlIGlmIChyeF9kZXNjICYgUlhRX0VSUikgeworCQkJaWYgKCEocnhfZGVzYyAmIFJYUV9ET05FKSkKKwkJCQltdnNfc2xvdF9jb21wbGV0ZShtdmksIHJ4X2Rlc2MsIDApOwogCQkJZGV2X3ByaW50ayhLRVJOX0RFQlVHLCAmcGRldi0+ZGV2LCAiUlhRX0VSUiAlWFxuIiwKIAkJCQlyeF9kZXNjKTsKKwkJfSBlbHNlIGlmIChyeF9kZXNjICYgUlhRX1NMT1RfUkVTRVQpIHsKKwkJCWRldl9wcmludGsoS0VSTl9ERUJVRywgJnBkZXYtPmRldiwgIlNsb3QgcmVzZXRbJVhdXG4iLAorCQkJCXJ4X2Rlc2MpOworCQkJbXZzX3Nsb3RfZnJlZShtdmksIHJ4X2Rlc2MpOwogCQl9CiAJfQogCkBAIC0xMzQ4LDYgKzE1MzMsMjMgQEAKIAlyZXR1cm4gMDsKIH0KIAorI2lmZGVmIE1WU19VU0VfVEFTS0xFVAorc3RhdGljIHZvaWQgbXZzX3Rhc2tsZXQodW5zaWduZWQgbG9uZyBkYXRhKQoreworCXN0cnVjdCBtdnNfaW5mbyAqbXZpID0gKHN0cnVjdCBtdnNfaW5mbyAqKSBkYXRhOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmbXZpLT5sb2NrLCBmbGFncyk7CisKKyNpZmRlZiBNVlNfRElTQUJMRV9NU0kKKwltdnNfaW50X2Z1bGwobXZpKTsKKyNlbHNlCisJbXZzX2ludF9yeChtdmksIHRydWUpOworI2VuZGlmCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmbXZpLT5sb2NrLCBmbGFncyk7Cit9CisjZW5kaWYKKwogc3RhdGljIGlycXJldHVybl90IG12c19pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqb3BhcXVlKQogewogCXN0cnVjdCBtdnNfaW5mbyAqbXZpID0gb3BhcXVlOwpAQCAtMTM1NiwxOCArMTU1OCwyMSBAQAogCiAJc3RhdCA9IG1yMzIoR0JMX0lOVF9TVEFUKTsKIAotCS8qIGNsZWFyIENNRF9DTVBMVCBBU0FQICovCi0JbXczMl9mKElOVF9TVEFULCBDSU5UX0RPTkUpOwotCiAJaWYgKHN0YXQgPT0gMCB8fCBzdGF0ID09IDB4ZmZmZmZmZmYpCiAJCXJldHVybiBJUlFfTk9ORTsKIAorCS8qIGNsZWFyIENNRF9DTVBMVCBBU0FQICovCisJbXczMl9mKElOVF9TVEFULCBDSU5UX0RPTkUpOworCisjaWZuZGVmIE1WU19VU0VfVEFTS0xFVAogCXNwaW5fbG9jaygmbXZpLT5sb2NrKTsKIAogCW12c19pbnRfZnVsbChtdmkpOwogCiAJc3Bpbl91bmxvY2soJm12aS0+bG9jayk7Ci0KKyNlbHNlCisJdGFza2xldF9zY2hlZHVsZSgmbXZpLT50YXNrbGV0KTsKKyNlbmRpZgogCXJldHVybiBJUlFfSEFORExFRDsKIH0KIApAQCAtMTM3NiwxMiArMTU4MSwxNSBAQAogewogCXN0cnVjdCBtdnNfaW5mbyAqbXZpID0gb3BhcXVlOwogCisjaWZuZGVmIE1WU19VU0VfVEFTS0xFVAogCXNwaW5fbG9jaygmbXZpLT5sb2NrKTsKIAogCW12c19pbnRfcngobXZpLCB0cnVlKTsKIAogCXNwaW5fdW5sb2NrKCZtdmktPmxvY2spOwotCisjZWxzZQorCXRhc2tsZXRfc2NoZWR1bGUoJm12aS0+dGFza2xldCk7CisjZW5kaWYKIAlyZXR1cm4gSVJRX0hBTkRMRUQ7CiB9CiAjZW5kaWYKQEAgLTE1NzYsMTUgKzE3ODQsMTkgQEAKIAlyZXR1cm4gTVZTX0lEX05PVF9NQVBQRUQ7CiB9CiAKLXN0YXRpYyB1MzIgbXZzX2dldF9uY3FfdGFnKHN0cnVjdCBzYXNfdGFzayAqdGFzaykKK3N0YXRpYyB1MzIgbXZzX2dldF9uY3FfdGFnKHN0cnVjdCBzYXNfdGFzayAqdGFzaywgdTMyICp0YWcpCiB7Ci0JdTMyIHRhZyA9IDA7CiAJc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYyA9IHRhc2stPnVsZGRfdGFzazsKIAotCWlmIChxYykKLQkJdGFnID0gcWMtPnRhZzsKKwlpZiAocWMpIHsKKwkJaWYgKHFjLT50Zi5jb21tYW5kID09IEFUQV9DTURfRlBETUFfV1JJVEUgfHwKKwkJCXFjLT50Zi5jb21tYW5kID09IEFUQV9DTURfRlBETUFfUkVBRCkgeworCQkJKnRhZyA9IHFjLT50YWc7CisJCQlyZXR1cm4gMTsKKwkJfQorCX0KIAotCXJldHVybiB0YWc7CisJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQgbXZzX3Rhc2tfcHJlcF9hdGEoc3RydWN0IG12c19pbmZvICptdmksCkBAIC0xNjI4LDExICsxODQwLDkgQEAKIAloZHItPmZsYWdzID0gY3B1X3RvX2xlMzIoZmxhZ3MpOwogCiAJLyogRklYTUU6IHRoZSBsb3cgb3JkZXIgb3JkZXIgNSBiaXRzIGZvciB0aGUgVEFHIGlmIGVuYWJsZSBOQ1EgKi8KLQlpZiAodGFzay0+YXRhX3Rhc2sudXNlX25jcSkgewotCQloZHItPnRhZ3MgPSBjcHVfdG9fbGUzMihtdnNfZ2V0X25jcV90YWcodGFzaykpOwotCQkvKkZpbGwgaW4gdGFzayBmaWxlICovCi0JCXRhc2stPmF0YV90YXNrLmZpcy5zZWN0b3JfY291bnQgPSBoZHItPnRhZ3MgPDwgMzsKLQl9IGVsc2UKKwlpZiAodGFzay0+YXRhX3Rhc2sudXNlX25jcSAmJiBtdnNfZ2V0X25jcV90YWcodGFzaywgJmhkci0+dGFncykpCisJCXRhc2stPmF0YV90YXNrLmZpcy5zZWN0b3JfY291bnQgfD0gaGRyLT50YWdzIDw8IDM7CisJZWxzZQogCQloZHItPnRhZ3MgPSBjcHVfdG9fbGUzMih0YWcpOwogCWhkci0+ZGF0YV9sZW4gPSBjcHVfdG9fbGUzMih0YXNrLT50b3RhbF94ZmVyX2xlbik7CiAKQEAgLTE3MjUsMTMgKzE5MzUsMTYgQEAKIAl1MzIgZmxhZ3M7CiAJdTMyIHJlc3BfbGVuLCByZXFfbGVuLCBpLCB0YWcgPSB0ZWktPnRhZzsKIAljb25zdCB1MzIgbWF4X3Jlc3BfbGVuID0gU0JfUkZCX01BWDsKKwl1OCBwaHlfbWFzazsKIAogCXNsb3QgPSAmbXZpLT5zbG90X2luZm9bdGFnXTsKIAorCXBoeV9tYXNrID0gKHBvcnQtPndpZGVfcG9ydF9waHltYXApID8gcG9ydC0+d2lkZV9wb3J0X3BoeW1hcCA6CisJCXRhc2stPmRldi0+cG9ydC0+cGh5X21hc2s7CiAJc2xvdC0+dHggPSBtdmktPnR4X3Byb2Q7CiAJbXZpLT50eFttdmktPnR4X3Byb2RdID0gY3B1X3RvX2xlMzIoVFhRX01PREVfSSB8IHRhZyB8CiAJCQkJKFRYUV9DTURfU1NQIDw8IFRYUV9DTURfU0hJRlQpIHwKLQkJCQkocG9ydC0+d2lkZV9wb3J0X3BoeW1hcCA8PCBUWFFfUEhZX1NISUZUKSk7CisJCQkJKHBoeV9tYXNrIDw8IFRYUV9QSFlfU0hJRlQpKTsKIAogCWZsYWdzID0gTUNIX1JFVFJZOwogCWlmICh0YXNrLT5zc3BfdGFzay5lbmFibGVfZmlyc3RfYnVyc3QpIHsKQEAgLTE4MzIsMjIgKzIwNDUsMzIgQEAKIAl2b2lkIF9faW9tZW0gKnJlZ3MgPSBtdmktPnJlZ3M7CiAJc3RydWN0IG12c190YXNrX2V4ZWNfaW5mbyB0ZWk7CiAJc3RydWN0IHNhc190YXNrICp0ID0gdGFzazsKKwlzdHJ1Y3QgbXZzX3Nsb3RfaW5mbyAqc2xvdDsKIAl1MzIgdGFnID0gMHhkZWFkYmVlZiwgcmMsIG5fZWxlbSA9IDA7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAl1MzIgbiA9IG51bSwgcGFzcyA9IDA7CiAKIAlzcGluX2xvY2tfaXJxc2F2ZSgmbXZpLT5sb2NrLCBmbGFncyk7Ci0KIAlkbyB7CisJCWRldiA9IHQtPmRldjsKIAkJdGVpLnBvcnQgPSAmbXZpLT5wb3J0W2Rldi0+cG9ydC0+aWRdOwogCiAJCWlmICghdGVpLnBvcnQtPnBvcnRfYXR0YWNoZWQpIHsKLQkJCXN0cnVjdCB0YXNrX3N0YXR1c19zdHJ1Y3QgKnRzID0gJnQtPnRhc2tfc3RhdHVzOwotCQkJdHMtPnN0YXQgPSBTQVNfUEhZX0RPV047Ci0JCQl0LT50YXNrX2RvbmUodCk7Ci0JCQlyYyA9IDA7Ci0JCQlnb3RvIGV4ZWNfZXhpdDsKKwkJCWlmIChzYXNfcHJvdG9jb2xfYXRhKHQtPnRhc2tfcHJvdG8pKSB7CisJCQkJcmMgPSBTQVNfUEhZX0RPV047CisJCQkJZ290byBvdXRfZG9uZTsKKwkJCX0gZWxzZSB7CisJCQkJc3RydWN0IHRhc2tfc3RhdHVzX3N0cnVjdCAqdHMgPSAmdC0+dGFza19zdGF0dXM7CisJCQkJdHMtPnJlc3AgPSBTQVNfVEFTS19VTkRFTElWRVJFRDsKKwkJCQl0cy0+c3RhdCA9IFNBU19QSFlfRE9XTjsKKwkJCQl0LT50YXNrX2RvbmUodCk7CisJCQkJaWYgKG4gPiAxKQorCQkJCQl0ID0gbGlzdF9lbnRyeSh0LT5saXN0Lm5leHQsCisJCQkJCQkJc3RydWN0IHNhc190YXNrLCBsaXN0KTsKKwkJCQljb250aW51ZTsKKwkJCX0KIAkJfQorCiAJCWlmICghc2FzX3Byb3RvY29sX2F0YSh0LT50YXNrX3Byb3RvKSkgewogCQkJaWYgKHQtPm51bV9zY2F0dGVyKSB7CiAJCQkJbl9lbGVtID0gcGNpX21hcF9zZyhtdmktPnBkZXYsIHQtPnNjYXR0ZXIsCkBAIC0xODY2LDkgKzIwODksMTAgQEAKIAkJaWYgKHJjKQogCQkJZ290byBlcnJfb3V0OwogCi0JCW12aS0+c2xvdF9pbmZvW3RhZ10udGFzayA9IHQ7Ci0JCW12aS0+c2xvdF9pbmZvW3RhZ10ubl9lbGVtID0gbl9lbGVtOwotCQltZW1zZXQobXZpLT5zbG90X2luZm9bdGFnXS5idWYsIDAsIE1WU19TTE9UX0JVRl9TWik7CisJCXNsb3QgPSAmbXZpLT5zbG90X2luZm9bdGFnXTsKKwkJdC0+bGxkZF90YXNrID0gTlVMTDsKKwkJc2xvdC0+bl9lbGVtID0gbl9lbGVtOworCQltZW1zZXQoc2xvdC0+YnVmLCAwLCBNVlNfU0xPVF9CVUZfU1opOwogCQl0ZWkudGFzayA9IHQ7CiAJCXRlaS5oZHIgPSAmbXZpLT5zbG90W3RhZ107CiAJCXRlaS50YWcgPSB0YWc7CkBAIC0xODk3LDI4ICsyMTIxLDI2IEBACiAJCWlmIChyYykKIAkJCWdvdG8gZXJyX291dF90YWc7CiAKKwkJc2xvdC0+dGFzayA9IHQ7CisJCXNsb3QtPnBvcnQgPSB0ZWkucG9ydDsKKwkJdC0+bGxkZF90YXNrID0gKHZvaWQgKikgc2xvdDsKKwkJbGlzdF9hZGRfdGFpbCgmc2xvdC0+bGlzdCwgJnNsb3QtPnBvcnQtPmxpc3QpOwogCQkvKiBUT0RPOiBzZWxlY3Qgbm9ybWFsIG9yIGhpZ2ggcHJpb3JpdHkgKi8KIAogCQlzcGluX2xvY2soJnQtPnRhc2tfc3RhdGVfbG9jayk7CiAJCXQtPnRhc2tfc3RhdGVfZmxhZ3MgfD0gU0FTX1RBU0tfQVRfSU5JVElBVE9SOwogCQlzcGluX3VubG9jaygmdC0+dGFza19zdGF0ZV9sb2NrKTsKIAotCQlpZiAobiA9PSAxKSB7Ci0JCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZtdmktPmxvY2ssIGZsYWdzKTsKLQkJCW13MzIoVFhfUFJPRF9JRFgsIG12aS0+dHhfcHJvZCk7Ci0JCX0KIAkJbXZzX2hiYV9tZW1vcnlfZHVtcChtdmksIHRhZywgdC0+dGFza19wcm90byk7CiAKIAkJKytwYXNzOwogCQltdmktPnR4X3Byb2QgPSAobXZpLT50eF9wcm9kICsgMSkgJiAoTVZTX0NISVBfU0xPVF9TWiAtIDEpOwotCi0JCWlmIChuID09IDEpCi0JCQlicmVhazsKLQotCQl0ID0gbGlzdF9lbnRyeSh0LT5saXN0Lm5leHQsIHN0cnVjdCBzYXNfdGFzaywgbGlzdCk7CisJCWlmIChuID4gMSkKKwkJCXQgPSBsaXN0X2VudHJ5KHQtPmxpc3QubmV4dCwgc3RydWN0IHNhc190YXNrLCBsaXN0KTsKIAl9IHdoaWxlICgtLW4pOwogCi0JcmV0dXJuIDA7CisJcmMgPSAwOworCWdvdG8gb3V0X2RvbmU7CiAKIGVycl9vdXRfdGFnOgogCW12c190YWdfZnJlZShtdmksIHRhZyk7CkBAIC0xOTI4LDcgKzIxNTAsNyBAQAogCQlpZiAobl9lbGVtKQogCQkJcGNpX3VubWFwX3NnKG12aS0+cGRldiwgdC0+c2NhdHRlciwgbl9lbGVtLAogCQkJCSAgICAgdC0+ZGF0YV9kaXIpOwotZXhlY19leGl0Ogorb3V0X2RvbmU6CiAJaWYgKHBhc3MpCiAJCW13MzIoVFhfUFJPRF9JRFgsIChtdmktPnR4X3Byb2QgLSAxKSAmIChNVlNfQ0hJUF9TTE9UX1NaIC0gMSkpOwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJm12aS0+bG9jaywgZmxhZ3MpOwpAQCAtMTkzNyw0MiArMjE1OSw1OSBAQAogCiBzdGF0aWMgaW50IG12c190YXNrX2Fib3J0KHN0cnVjdCBzYXNfdGFzayAqdGFzaykKIHsKLQlpbnQgcmMgPSAxOworCWludCByYzsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCXN0cnVjdCBtdnNfaW5mbyAqbXZpID0gdGFzay0+ZGV2LT5wb3J0LT5oYS0+bGxkZF9oYTsKIAlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IG12aS0+cGRldjsKKwlpbnQgdGFnOwogCiAJc3Bpbl9sb2NrX2lycXNhdmUoJnRhc2stPnRhc2tfc3RhdGVfbG9jaywgZmxhZ3MpOwogCWlmICh0YXNrLT50YXNrX3N0YXRlX2ZsYWdzICYgU0FTX1RBU0tfU1RBVEVfRE9ORSkgewogCQlyYyA9IFRNRl9SRVNQX0ZVTkNfQ09NUExFVEU7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnRhc2stPnRhc2tfc3RhdGVfbG9jaywgZmxhZ3MpOwogCQlnb3RvIG91dF9kb25lOwogCX0KIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ0YXNrLT50YXNrX3N0YXRlX2xvY2ssIGZsYWdzKTsKIAotCS8qRklYTUUqLwotCXJjID0gVE1GX1JFU1BfRlVOQ19DT01QTEVURTsKLQogCXN3aXRjaCAodGFzay0+dGFza19wcm90bykgewogCWNhc2UgU0FTX1BST1RPQ09MX1NNUDoKLQkJZGV2X3ByaW50ayhLRVJOX0RFQlVHLCAmcGRldi0+ZGV2LCAiU01QIEFib3J0ISAiKTsKKwkJZGV2X3ByaW50ayhLRVJOX0RFQlVHLCAmcGRldi0+ZGV2LCAiU01QIEFib3J0ISBcbiIpOwogCQlicmVhazsKIAljYXNlIFNBU19QUk9UT0NPTF9TU1A6Ci0JCWRldl9wcmludGsoS0VSTl9ERUJVRywgJnBkZXYtPmRldiwgIlNTUCBBYm9ydCEgIik7CisJCWRldl9wcmludGsoS0VSTl9ERUJVRywgJnBkZXYtPmRldiwgIlNTUCBBYm9ydCEgXG4iKTsKIAkJYnJlYWs7CiAJY2FzZSBTQVNfUFJPVE9DT0xfU0FUQToKIAljYXNlIFNBU19QUk9UT0NPTF9TVFA6CiAJY2FzZSBTQVNfUFJPVE9DT0xfU0FUQSB8IFNBU19QUk9UT0NPTF9TVFA6ewotCQlkZXZfcHJpbnRrKEtFUk5fREVCVUcsICZwZGV2LT5kZXYsICJTVFAgQWJvcnQhICIKLQkJCSJEdW1wIEQySCBGSVM6IFxuIik7CisJCWRldl9wcmludGsoS0VSTl9ERUJVRywgJnBkZXYtPmRldiwgIlNUUCBBYm9ydCEgXG4iKTsKKyNpZiBfTVZfRFVNUAorCQlkZXZfcHJpbnRrKEtFUk5fREVCVUcsICZwZGV2LT5kZXYsICJEdW1wIEQySCBGSVM6IFxuIik7CiAJCW12c19oZXhkdW1wKHNpemVvZihzdHJ1Y3QgaG9zdF90b19kZXZfZmlzKSwKIAkJCQkodm9pZCAqKSZ0YXNrLT5hdGFfdGFzay5maXMsIDApOwogCQlkZXZfcHJpbnRrKEtFUk5fREVCVUcsICZwZGV2LT5kZXYsICJEdW1wIEFUQVBJIENtZCA6IFxuIik7CiAJCW12c19oZXhkdW1wKDE2LCB0YXNrLT5hdGFfdGFzay5hdGFwaV9wYWNrZXQsIDApOworI2VuZGlmCisJCXNwaW5fbG9ja19pcnFzYXZlKCZ0YXNrLT50YXNrX3N0YXRlX2xvY2ssIGZsYWdzKTsKKwkJaWYgKHRhc2stPnRhc2tfc3RhdGVfZmxhZ3MgJiBTQVNfVEFTS19ORUVEX0RFVl9SRVNFVCkgeworCQkJLyogVE9ETyAqLworCQkJOworCQl9CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnRhc2stPnRhc2tfc3RhdGVfbG9jaywgZmxhZ3MpOwogCQlicmVhazsKIAl9CiAJZGVmYXVsdDoKIAkJYnJlYWs7CiAJfQorCisJaWYgKG12c19maW5kX3RhZyhtdmksIHRhc2ssICZ0YWcpKSB7CisJCXNwaW5fbG9ja19pcnFzYXZlKCZtdmktPmxvY2ssIGZsYWdzKTsKKwkJbXZzX3Nsb3RfdGFza19mcmVlKG12aSwgdGFzaywgJm12aS0+c2xvdF9pbmZvW3RhZ10sIHRhZyk7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJm12aS0+bG9jaywgZmxhZ3MpOworCX0KKwlpZiAoIW12c190YXNrX2V4ZWModGFzaywgMSwgR0ZQX0FUT01JQykpCisJCXJjID0gVE1GX1JFU1BfRlVOQ19DT01QTEVURTsKKwllbHNlCisJCXJjID0gVE1GX1JFU1BfRlVOQ19GQUlMRUQ7CiBvdXRfZG9uZToKIAlyZXR1cm4gcmM7CiB9CkBAIC0yMDAxLDcgKzIyNDAsNyBAQAogCQkJCSAgbXZpLT5yeF9maXMsIG12aS0+cnhfZmlzX2RtYSk7CiAJaWYgKG12aS0+cngpCiAJCWRtYV9mcmVlX2NvaGVyZW50KCZtdmktPnBkZXYtPmRldiwKLQkJCQkgIHNpemVvZigqbXZpLT5yeCkgKiBNVlNfUlhfUklOR19TWiwKKwkJCQkgIHNpemVvZigqbXZpLT5yeCkgKiAoTVZTX1JYX1JJTkdfU1ogKyAxKSwKIAkJCQkgIG12aS0+cngsIG12aS0+cnhfZG1hKTsKIAlpZiAobXZpLT5zbG90KQogCQlkbWFfZnJlZV9jb2hlcmVudCgmbXZpLT5wZGV2LT5kZXYsCkBAIC0yMTA5LDYgKzIzNDgsOSBAQAogCQlyZXR1cm4gTlVMTDsKIAogCXNwaW5fbG9ja19pbml0KCZtdmktPmxvY2spOworI2lmZGVmIE1WU19VU0VfVEFTS0xFVAorCXRhc2tsZXRfaW5pdCgmbXZpLT50YXNrbGV0LCBtdnNfdGFza2xldCwgKHVuc2lnbmVkIGxvbmcpbXZpKTsKKyNlbmRpZgogCW12aS0+cGRldiA9IHBkZXY7CiAJbXZpLT5jaGlwID0gY2hpcDsKIApAQCAtMjEzMiw2ICsyMzc0LDEwIEBACiAJCW12c19waHlfaW5pdChtdmksIGkpOwogCQlhcnJfcGh5W2ldID0gJm12aS0+cGh5W2ldLnNhc19waHk7CiAJCWFycl9wb3J0W2ldID0gJm12aS0+cG9ydFtpXS5zYXNfcG9ydDsKKwkJbXZpLT5wb3J0W2ldLnRhc2tmaWxlc2V0ID0gTVZTX0lEX05PVF9NQVBQRUQ7CisJCW12aS0+cG9ydFtpXS53aWRlX3BvcnRfcGh5bWFwID0gMDsKKwkJbXZpLT5wb3J0W2ldLnBvcnRfYXR0YWNoZWQgPSAwOworCQlJTklUX0xJU1RfSEVBRCgmbXZpLT5wb3J0W2ldLmxpc3QpOwogCX0KIAogCVNIT1NUX1RPX1NBU19IQShtdmktPnNob3N0KSA9ICZtdmktPnNhczsKQEAgLTIxNDgsOSArMjM5NCwxMCBAQAogCW12aS0+c2FzLnNhc19waHkgPSBhcnJfcGh5OwogCW12aS0+c2FzLnNhc19wb3J0ID0gYXJyX3BvcnQ7CiAJbXZpLT5zYXMubnVtX3BoeXMgPSBjaGlwLT5uX3BoeTsKLQltdmktPnNhcy5sbGRkX21heF9leGVjdXRlX251bSA9IE1WU19DSElQX1NMT1RfU1ogLSAxOworCW12aS0+c2FzLmxsZGRfbWF4X2V4ZWN1dGVfbnVtID0gMTsKIAltdmktPnNhcy5sbGRkX3F1ZXVlX3NpemUgPSBNVlNfUVVFVUVfU0laRTsKLQltdmktPmNhbl9xdWV1ZSA9IChNVlNfQ0hJUF9TTE9UX1NaID4+IDEpIC0gMTsKKwltdmktPnNob3N0LT5jYW5fcXVldWUgPSBNVlNfQ0FOX1FVRVVFOworCW12aS0+c2hvc3QtPmNtZF9wZXJfbHVuID0gTVZTX1NMT1RTIC8gbXZpLT5zYXMubnVtX3BoeXM7CiAJbXZpLT5zYXMubGxkZF9oYSA9IG12aTsKIAltdmktPnNhcy5jb3JlLnNob3N0ID0gbXZpLT5zaG9zdDsKIApAQCAtMjIwMywxMSArMjQ1MCwxMSBAQAogCW1lbXNldChtdmktPnJ4X2ZpcywgMCwgTVZTX1JYX0ZJU0xfU1opOwogCiAJbXZpLT5yeCA9IGRtYV9hbGxvY19jb2hlcmVudCgmcGRldi0+ZGV2LAotCQkJCSAgICAgc2l6ZW9mKCptdmktPnJ4KSAqIE1WU19SWF9SSU5HX1NaLAorCQkJCSAgICAgc2l6ZW9mKCptdmktPnJ4KSAqIChNVlNfUlhfUklOR19TWiArIDEpLAogCQkJCSAgICAgJm12aS0+cnhfZG1hLCBHRlBfS0VSTkVMKTsKIAlpZiAoIW12aS0+cngpCiAJCWdvdG8gZXJyX291dDsKLQltZW1zZXQobXZpLT5yeCwgMCwgc2l6ZW9mKCptdmktPnJ4KSAqIE1WU19SWF9SSU5HX1NaKTsKKwltZW1zZXQobXZpLT5yeCwgMCwgc2l6ZW9mKCptdmktPnJ4KSAqIChNVlNfUlhfUklOR19TWiArIDEpKTsKIAogCW12aS0+cnhbMF0gPSBjcHVfdG9fbGUzMigweGZmZik7CiAJbXZpLT5yeF9jb25zID0gMHhmZmY7CkBAIC0yMzU3LDcgKzI2MDQsNyBAQAogCW12c19jdzMyKHJlZ3MsIENNRF9TQVNfQ1RMMCwgdG1wKTsKIAogCS8qIHdvcmthcm91bmQgZm9yIFdEVElNRU9VVCAsIHNldCB0byA1NTAgbXMgKi8KLQltdnNfY3czMihyZWdzLCBDTURfV0RfVElNRVIsIDB4ZmZmZmZmKTsKKwltdnNfY3czMihyZWdzLCBDTURfV0RfVElNRVIsIDB4ODY0NzApOwogCiAJLyogbm90IHRvIGhhbHQgZm9yIGRpZmZlcmVudCBwb3J0IG9wIGR1cmluZyB3aWRlcG9ydCBsaW5rIGNoYW5nZSAqLwogCW12c19jdzMyKHJlZ3MsIENNRF9BUFBfRVJSX0NPTkZJRywgMHhmZmVmYmY3ZCk7CkBAIC0yNDY1LDE3ICsyNzEyLDE2IEBACiB7CiAJdTMyIHRtcDsKIAlzdHJ1Y3QgbXZzX3BoeSAqcGh5ID0gJm12aS0+cGh5W2ldOwotCXN0cnVjdCBtdnNfcG9ydCAqcG9ydDsKKwlzdHJ1Y3QgbXZzX3BvcnQgKnBvcnQgPSBwaHktPnBvcnQ7OwogCiAJdG1wID0gbXZzX3JlYWRfcGh5X2N0bChtdmksIGkpOwogCiAJaWYgKCh0bXAgJiBQSFlfUkVBRFlfTUFTSykgJiYgIShwaHktPmlycV9zdGF0dXMgJiBQSFlFVl9QT09GKSkgewotCQlpZiAoIXBoeS0+cG9ydCkKKwkJaWYgKCFwb3J0KQogCQkJcGh5LT5waHlfYXR0YWNoZWQgPSAxOwogCQlyZXR1cm4gdG1wOwogCX0KIAotCXBvcnQgPSBwaHktPnBvcnQ7CiAJaWYgKHBvcnQpIHsKIAkJaWYgKHBoeS0+cGh5X3R5cGUgJiBQT1JUX1RZUEVfU0FTKSB7CiAJCQlwb3J0LT53aWRlX3BvcnRfcGh5bWFwICY9IH4oMVUgPDwgaSk7CkBAIC0yNDk3LDcgKzI3NDMsNyBAQAogewogCXN0cnVjdCBtdnNfcGh5ICpwaHkgPSAmbXZpLT5waHlbaV07CiAJc3RydWN0IHBjaV9kZXYgKnBkZXYgPSBtdmktPnBkZXY7Ci0JdTMyIHRtcCwgajsKKwl1MzIgdG1wOwogCXU2NCB0bXA2NDsKIAogCW12c193cml0ZV9wb3J0X2NmZ19hZGRyKG12aSwgaSwgUEhZUl9JREVOVElGWSk7CkBAIC0yNTI0LDQ2ICsyNzcwLDIwIEBACiAJCXNhc19waHktPmxpbmtyYXRlID0KIAkJCShwaHktPnBoeV9zdGF0dXMgJiBQSFlfTkVHX1NQUF9QSFlTX0xJTktfUkFURV9NQVNLKSA+PgogCQkJCVBIWV9ORUdfU1BQX1BIWVNfTElOS19SQVRFX01BU0tfT0ZGU0VUOwotCi0JCS8qIFVwZGF0ZWQgYXR0YWNoZWRfc2FzX2FkZHIgKi8KLQkJbXZzX3dyaXRlX3BvcnRfY2ZnX2FkZHIobXZpLCBpLCBQSFlSX0FUVF9BRERSX0hJKTsKLQkJcGh5LT5hdHRfZGV2X3Nhc19hZGRyID0KLQkJCQkodTY0KSBtdnNfcmVhZF9wb3J0X2NmZ19kYXRhKG12aSwgaSkgPDwgMzI7Ci0KLQkJbXZzX3dyaXRlX3BvcnRfY2ZnX2FkZHIobXZpLCBpLCBQSFlSX0FUVF9BRERSX0xPKTsKLQkJcGh5LT5hdHRfZGV2X3Nhc19hZGRyIHw9IG12c19yZWFkX3BvcnRfY2ZnX2RhdGEobXZpLCBpKTsKLQotCQlkZXZfcHJpbnRrKEtFUk5fREVCVUcsICZwZGV2LT5kZXYsCi0JCQkicGh5WyVkXSBHZXQgQXR0YWNoZWQgQWRkcmVzcyAweCVsbFggLCIKLQkJCSIgU0FTIEFkZHJlc3MgMHglbGxYXG4iLAotCQkJaSwgcGh5LT5hdHRfZGV2X3Nhc19hZGRyLCBwaHktPmRldl9zYXNfYWRkcik7Ci0JCWRldl9wcmludGsoS0VSTl9ERUJVRywgJnBkZXYtPmRldiwKLQkJCSJSYXRlID0gJXggLCB0eXBlID0gJWRcbiIsCi0JCQlzYXNfcGh5LT5saW5rcmF0ZSwgcGh5LT5waHlfdHlwZSk7Ci0KLSNpZiAxCi0JCS8qCi0JCSogSWYgdGhlIGRldmljZSBpcyBjYXBhYmxlIG9mIHN1cHBvcnRpbmcgYSB3aWRlIHBvcnQKLQkJKiBvbiBpdHMgcGh5cywgaXQgbWF5IGNvbmZpZ3VyZSB0aGUgcGh5cyBhcyBhIHdpZGUgcG9ydC4KLQkJKi8KLQkJaWYgKHBoeS0+cGh5X3R5cGUgJiBQT1JUX1RZUEVfU0FTKQotCQkJZm9yIChqID0gMDsgaiA8IG12aS0+Y2hpcC0+bl9waHkgJiYgaiAhPSBpOyArK2opIHsKLQkJCQlpZiAoKG12aS0+cGh5W2pdLnBoeV9hdHRhY2hlZCkgJiYKLQkJCQkJKG12aS0+cGh5W2pdLnBoeV90eXBlICYgUE9SVF9UWVBFX1NBUykpCi0JCQkJCWlmIChwaHktPmF0dF9kZXZfc2FzX2FkZHIgPT0KLQkJCQkJbXZpLT5waHlbal0uYXR0X2Rldl9zYXNfYWRkciAtIDEpIHsKLQkJCQkJCXBoeS0+YXR0X2Rldl9zYXNfYWRkciA9Ci0JCQkJCQltdmktPnBoeVtqXS5hdHRfZGV2X3Nhc19hZGRyOwotCQkJCQkJYnJlYWs7Ci0JCQkJCX0KLQkJCX0KLQotI2VuZGlmCi0KLQkJdG1wNjQgPSBjcHVfdG9fYmU2NChwaHktPmF0dF9kZXZfc2FzX2FkZHIpOwotCQltZW1jcHkoc2FzX3BoeS0+YXR0YWNoZWRfc2FzX2FkZHIsICZ0bXA2NCwgU0FTX0FERFJfU0laRSk7CisJCXBoeS0+bWluaW11bV9saW5rcmF0ZSA9CisJCQkocGh5LT5waHlfc3RhdHVzICYKKwkJCQlQSFlfTUlOX1NQUF9QSFlTX0xJTktfUkFURV9NQVNLKSA+PiA4OworCQlwaHktPm1heGltdW1fbGlua3JhdGUgPQorCQkJKHBoeS0+cGh5X3N0YXR1cyAmCisJCQkJUEhZX01BWF9TUFBfUEhZU19MSU5LX1JBVEVfTUFTSykgPj4gMTI7CiAKIAkJaWYgKHBoeS0+cGh5X3R5cGUgJiBQT1JUX1RZUEVfU0FTKSB7CisJCQkvKiBVcGRhdGVkIGF0dGFjaGVkX3Nhc19hZGRyICovCisJCQltdnNfd3JpdGVfcG9ydF9jZmdfYWRkcihtdmksIGksIFBIWVJfQVRUX0FERFJfSEkpOworCQkJcGh5LT5hdHRfZGV2X3Nhc19hZGRyID0KKwkJCQkodTY0KSBtdnNfcmVhZF9wb3J0X2NmZ19kYXRhKG12aSwgaSkgPDwgMzI7CisJCQltdnNfd3JpdGVfcG9ydF9jZmdfYWRkcihtdmksIGksIFBIWVJfQVRUX0FERFJfTE8pOworCQkJcGh5LT5hdHRfZGV2X3Nhc19hZGRyIHw9IG12c19yZWFkX3BvcnRfY2ZnX2RhdGEobXZpLCBpKTsKIAkJCW12c193cml0ZV9wb3J0X2NmZ19hZGRyKG12aSwgaSwgUEhZUl9BVFRfREVWX0lORk8pOwogCQkJcGh5LT5hdHRfZGV2X2luZm8gPSBtdnNfcmVhZF9wb3J0X2NmZ19kYXRhKG12aSwgaSk7CiAJCQlwaHktPmlkZW50aWZ5LmRldmljZV90eXBlID0KQEAgLTI1ODIsNiArMjgwMiw3IEBACiAJCX0gZWxzZSBpZiAocGh5LT5waHlfdHlwZSAmIFBPUlRfVFlQRV9TQVRBKSB7CiAJCQlwaHktPmlkZW50aWZ5LnRhcmdldF9wb3J0X3Byb3RvY29scyA9IFNBU19QUk9UT0NPTF9TVFA7CiAJCQlpZiAobXZzX2lzX3NpZ19maXNfcmVjZWl2ZWQocGh5LT5pcnFfc3RhdHVzKSkgeworCQkJCXBoeS0+YXR0X2Rldl9zYXNfYWRkciA9IGk7CS8qIHRlbXAgKi8KIAkJCQlpZiAocGh5X3N0ICYgUEhZX09PQl9EVENURCkKIAkJCQkJc2FzX3BoeS0+b29iX21vZGUgPSBTQVRBX09PQl9NT0RFOwogCQkJCXBoeS0+ZnJhbWVfcmN2ZF9zaXplID0KQEAgLTI1OTEsMjAgKzI4MTIsMzQgQEAKIAkJCX0gZWxzZSB7CiAJCQkJZGV2X3ByaW50ayhLRVJOX0RFQlVHLCAmcGRldi0+ZGV2LAogCQkJCQkiTm8gc2lnIGZpc1xuIik7CisJCQkJcGh5LT5waHlfdHlwZSAmPSB+KFBPUlRfVFlQRV9TQVRBKTsKKwkJCQlnb3RvIG91dF9kb25lOwogCQkJfQogCQl9CisJCXRtcDY0ID0gY3B1X3RvX2JlNjQocGh5LT5hdHRfZGV2X3Nhc19hZGRyKTsKKwkJbWVtY3B5KHNhc19waHktPmF0dGFjaGVkX3Nhc19hZGRyLCAmdG1wNjQsIFNBU19BRERSX1NJWkUpOworCisJCWRldl9wcmludGsoS0VSTl9ERUJVRywgJnBkZXYtPmRldiwKKwkJCSJwaHlbJWRdIEdldCBBdHRhY2hlZCBBZGRyZXNzIDB4JWxsWCAsIgorCQkJIiBTQVMgQWRkcmVzcyAweCVsbFhcbiIsCisJCQlpLCBwaHktPmF0dF9kZXZfc2FzX2FkZHIsIHBoeS0+ZGV2X3Nhc19hZGRyKTsKKwkJZGV2X3ByaW50ayhLRVJOX0RFQlVHLCAmcGRldi0+ZGV2LAorCQkJIlJhdGUgPSAleCAsIHR5cGUgPSAlZFxuIiwKKwkJCXNhc19waHktPmxpbmtyYXRlLCBwaHktPnBoeV90eXBlKTsKKwogCQkvKiB3b3JrYXJvdW5kIGZvciBIVyBwaHkgZGVjb2RpbmcgZXJyb3Igb24gMS41ZyBkaXNrIGRyaXZlICovCiAJCW12c193cml0ZV9wb3J0X3Zzcl9hZGRyKG12aSwgaSwgVlNSX1BIWV9NT0RFNik7CiAJCXRtcCA9IG12c19yZWFkX3BvcnRfdnNyX2RhdGEobXZpLCBpKTsKIAkJaWYgKCgocGh5LT5waHlfc3RhdHVzICYgUEhZX05FR19TUFBfUEhZU19MSU5LX1JBVEVfTUFTSykgPj4KIAkJICAgICBQSFlfTkVHX1NQUF9QSFlTX0xJTktfUkFURV9NQVNLX09GRlNFVCkgPT0KIAkJCVNBU19MSU5LX1JBVEVfMV81X0dCUFMpCi0JCQl0bXAgJj0gflBIWV9NT0RFNl9EVExfU1BFRUQ7CisJCQl0bXAgJj0gflBIWV9NT0RFNl9MQVRFQ0xLOwogCQllbHNlCi0JCQl0bXAgfD0gUEhZX01PREU2X0RUTF9TUEVFRDsKKwkJCXRtcCB8PSBQSFlfTU9ERTZfTEFURUNMSzsKIAkJbXZzX3dyaXRlX3BvcnRfdnNyX2RhdGEobXZpLCBpLCB0bXApOwogCiAJfQorb3V0X2RvbmU6CiAJaWYgKGdldF9zdCkKIAkJbXZzX3dyaXRlX3BvcnRfaXJxX3N0YXQobXZpLCBpLCBwaHktPmlycV9zdGF0dXMpOwogfQpAQCAtMjYyOSw2ICsyODY0LDExIEBACiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmbXZpLT5sb2NrLCBmbGFncyk7CiB9CiAKK3N0YXRpYyBpbnQgbXZzX0lfVF9uZXh1c19yZXNldChzdHJ1Y3QgZG9tYWluX2RldmljZSAqZGV2KQoreworCXJldHVybiBUTUZfUkVTUF9GVU5DX0ZBSUxFRDsKK30KKwogc3RhdGljIGludCBfX2RldmluaXQgbXZzX2h3X2luaXQoc3RydWN0IG12c19pbmZvICptdmkpCiB7CiAJdm9pZCBfX2lvbWVtICpyZWdzID0gbXZpLT5yZWdzOwpAQCAtMjc5MCwxMyArMzAzMCwxMiBAQAogCS8qIGVuYWJsZSBDTUQvQ01QTF9RL1JFU1AgbW9kZSAqLwogCW13MzIoUENTLCBQQ1NfU0FUQV9SRVRSWSB8IFBDU19GSVNfUlhfRU4gfCBQQ1NfQ01EX0VOKTsKIAotCS8qIHJlLWVuYWJsZSBpbnRlcnJ1cHRzIGdsb2JhbGx5ICovCi0JbXZzX2hiYV9pbnRlcnJ1cHRfZW5hYmxlKG12aSk7Ci0KIAkvKiBlbmFibGUgY29tcGxldGlvbiBxdWV1ZSBpbnRlcnJ1cHQgKi8KLQl0bXAgPSAoQ0lOVF9QT1JUX01BU0sgfCBDSU5UX0RPTkUgfCBDSU5UX01FTSk7CisJdG1wID0gKENJTlRfUE9SVF9NQVNLIHwgQ0lOVF9ET05FIHwgQ0lOVF9NRU0gfCBDSU5UX1NSUyk7CiAJbXczMihJTlRfTUFTSywgdG1wKTsKIAorCS8qIEVuYWJsZSBTUlMgaW50ZXJydXB0ICovCisJbXczMihJTlRfTUFTS19TUlMsIDB4RkYpOwogCXJldHVybiAwOwogfQogCkBAIC0yODcwLDYgKzMxMDksOCBAQAogCiAJbXZzX3ByaW50X2luZm8obXZpKTsKIAorCW12c19oYmFfaW50ZXJydXB0X2VuYWJsZShtdmkpOworCiAJc2NzaV9zY2FuX2hvc3QobXZpLT5zaG9zdCk7CiAKIAlyZXR1cm4gMDsKQEAgLTI5MTUsMTIgKzMxNTYsMjIgQEAKIAkubGxkZF9leGVjdXRlX3Rhc2sJPSBtdnNfdGFza19leGVjLAogCS5sbGRkX2NvbnRyb2xfcGh5CT0gbXZzX3BoeV9jb250cm9sLAogCS5sbGRkX2Fib3J0X3Rhc2sJPSBtdnNfdGFza19hYm9ydCwKLQkubGxkZF9wb3J0X2Zvcm1lZAk9IG12c19wb3J0X2Zvcm1lZAorCS5sbGRkX3BvcnRfZm9ybWVkCT0gbXZzX3BvcnRfZm9ybWVkLAorCS5sbGRkX0lfVF9uZXh1c19yZXNldAk9IG12c19JX1RfbmV4dXNfcmVzZXQsCiB9OwogCiBzdGF0aWMgc3RydWN0IHBjaV9kZXZpY2VfaWQgX19kZXZpbml0ZGF0YSBtdnNfcGNpX3RhYmxlW10gPSB7CiAJeyBQQ0lfVkRFVklDRShNQVJWRUxMLCAweDYzMjApLCBjaGlwXzYzMjAgfSwKIAl7IFBDSV9WREVWSUNFKE1BUlZFTEwsIDB4NjM0MCksIGNoaXBfNjQ0MCB9LAorCXsKKwkJLnZlbmRvciAJPSBQQ0lfVkVORE9SX0lEX01BUlZFTEwsCisJCS5kZXZpY2UgCT0gMHg2NDQwLAorCQkuc3VidmVuZG9yCT0gUENJX0FOWV9JRCwKKwkJLnN1YmRldmljZQk9IDB4NjQ4MCwKKwkJLmNsYXNzCQk9IDAsCisJCS5jbGFzc19tYXNrCT0gMCwKKwkJLmRyaXZlcl9kYXRhCT0gY2hpcF82NDgwLAorCX0sCiAJeyBQQ0lfVkRFVklDRShNQVJWRUxMLCAweDY0NDApLCBjaGlwXzY0NDAgfSwKIAl7IFBDSV9WREVWSUNFKE1BUlZFTEwsIDB4NjQ4MCksIGNoaXBfNjQ4MCB9LAogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvc2NzaS5jIGIvZHJpdmVycy9zY3NpL3Njc2kuYwppbmRleCBlNWM2ZjZhLi5jNzhiODM2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvc2NzaS5jCisrKyBiL2RyaXZlcnMvc2NzaS9zY3NpLmMKQEAgLTE4MSw2ICsxODEsMTggQEAKIAljbWQgPSBrbWVtX2NhY2hlX2FsbG9jKHNob3N0LT5jbWRfcG9vbC0+Y21kX3NsYWIsCiAJCQkgICAgICAgZ2ZwX21hc2sgfCBzaG9zdC0+Y21kX3Bvb2wtPmdmcF9tYXNrKTsKIAorCWlmIChsaWtlbHkoY21kKSkgeworCQlidWYgPSBrbWVtX2NhY2hlX2FsbG9jKHNob3N0LT5jbWRfcG9vbC0+c2Vuc2Vfc2xhYiwKKwkJCQkgICAgICAgZ2ZwX21hc2sgfCBzaG9zdC0+Y21kX3Bvb2wtPmdmcF9tYXNrKTsKKwkJaWYgKGxpa2VseShidWYpKSB7CisJCQltZW1zZXQoY21kLCAwLCBzaXplb2YoKmNtZCkpOworCQkJY21kLT5zZW5zZV9idWZmZXIgPSBidWY7CisJCX0gZWxzZSB7CisJCQlrbWVtX2NhY2hlX2ZyZWUoc2hvc3QtPmNtZF9wb29sLT5jbWRfc2xhYiwgY21kKTsKKwkJCWNtZCA9IE5VTEw7CisJCX0KKwl9CisKIAlpZiAodW5saWtlbHkoIWNtZCkpIHsKIAkJdW5zaWduZWQgbG9uZyBmbGFnczsKIApAQCAtMTk3LDE2ICsyMDksNiBAQAogCQkJbWVtc2V0KGNtZCwgMCwgc2l6ZW9mKCpjbWQpKTsKIAkJCWNtZC0+c2Vuc2VfYnVmZmVyID0gYnVmOwogCQl9Ci0JfSBlbHNlIHsKLQkJYnVmID0ga21lbV9jYWNoZV9hbGxvYyhzaG9zdC0+Y21kX3Bvb2wtPnNlbnNlX3NsYWIsCi0JCQkJICAgICAgIGdmcF9tYXNrIHwgc2hvc3QtPmNtZF9wb29sLT5nZnBfbWFzayk7Ci0JCWlmIChsaWtlbHkoYnVmKSkgewotCQkJbWVtc2V0KGNtZCwgMCwgc2l6ZW9mKCpjbWQpKTsKLQkJCWNtZC0+c2Vuc2VfYnVmZmVyID0gYnVmOwotCQl9IGVsc2UgewotCQkJa21lbV9jYWNoZV9mcmVlKHNob3N0LT5jbWRfcG9vbC0+Y21kX3NsYWIsIGNtZCk7Ci0JCQljbWQgPSBOVUxMOwotCQl9CiAJfQogCiAJcmV0dXJuIGNtZDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zY3NpX2xpYi5jIGIvZHJpdmVycy9zY3NpL3Njc2lfbGliLmMKaW5kZXggYmEyMWQ5Ny4uZjQwODk4ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3Njc2lfbGliLmMKKysrIGIvZHJpdmVycy9zY3NpL3Njc2lfbGliLmMKQEAgLTIxNjIsMTAgKzIxNjIsMTUgQEAKIHsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCisjaWYgMAorCS8qIEZJWE1FOiBjdXJyZW50bHkgdGhpcyBjaGVjayBlbGltaW5hdGVzIGFsbCBtZWRpYSBjaGFuZ2UgZXZlbnRzCisJICogZm9yIHBvbGxlZCBkZXZpY2VzLiAgTmVlZCB0byB1cGRhdGUgdG8gZGlzY3JpbWluYXRlIGJldHdlZW4gQU4KKwkgKiBhbmQgcG9sbGVkIGV2ZW50cyAqLwogCWlmICghdGVzdF9iaXQoZXZ0LT5ldnRfdHlwZSwgc2Rldi0+c3VwcG9ydGVkX2V2ZW50cykpIHsKIAkJa2ZyZWUoZXZ0KTsKIAkJcmV0dXJuOwogCX0KKyNlbmRpZgogCiAJc3Bpbl9sb2NrX2lycXNhdmUoJnNkZXYtPmxpc3RfbG9jaywgZmxhZ3MpOwogCWxpc3RfYWRkX3RhaWwoJmV2dC0+bm9kZSwgJnNkZXYtPmV2ZW50X2xpc3QpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3NkLmMgYi9kcml2ZXJzL3Njc2kvc2QuYwppbmRleCA3YWVlNjRkLi41ZmU3YWFlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvc2QuYworKysgYi9kcml2ZXJzL3Njc2kvc2QuYwpAQCAtMTY1NCw2ICsxNjU0LDcgQEAKIAlzZGtwLT5kaXNrID0gZ2Q7CiAJc2RrcC0+aW5kZXggPSBpbmRleDsKIAlzZGtwLT5vcGVuZXJzID0gMDsKKwlzZGtwLT5wcmV2aW91c19zdGF0ZSA9IDE7CiAKIAlpZiAoIXNkcC0+dGltZW91dCkgewogCQlpZiAoc2RwLT50eXBlICE9IFRZUEVfTU9EKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3NyLmMgYi9kcml2ZXJzL3Njc2kvc3IuYwppbmRleCAyMDg1NjViLi43ZWU4NmQ0YTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9zci5jCisrKyBiL2RyaXZlcnMvc2NzaS9zci5jCkBAIC02MjMsNiArNjIzLDcgQEAKIAljZC0+ZGlzayA9IGRpc2s7CiAJY2QtPmNhcGFjaXR5ID0gMHgxZmZmZmY7CiAJY2QtPmRldmljZS0+Y2hhbmdlZCA9IDE7CS8qIGZvcmNlIHJlY2hlY2sgQ0QgdHlwZSAqLworCWNkLT5wcmV2aW91c19zdGF0ZSA9IDE7CiAJY2QtPnVzZSA9IDE7CiAJY2QtPnJlYWRjZF9rbm93biA9IDA7CiAJY2QtPnJlYWRjZF9jZGRhID0gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2VyaWFsLzgyNTBfcGNpLmMgYi9kcml2ZXJzL3NlcmlhbC84MjUwX3BjaS5jCmluZGV4IGE4YmVjNDkuLmY5NzIyNGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2VyaWFsLzgyNTBfcGNpLmMKKysrIGIvZHJpdmVycy9zZXJpYWwvODI1MF9wY2kuYwpAQCAtMTIxNCwxMyArMTIxNCw2IEBACiAJCS5iYXNlX2JhdWQJPSAxMTUyMDAsCiAJCS51YXJ0X29mZnNldAk9IDgsCiAJfSwKLQlbcGJuX2IwXzhfMTE1MjAwXSA9IHsKLQkJLmZsYWdzCQk9IEZMX0JBU0UwLAotCQkubnVtX3BvcnRzCT0gOCwKLQkJLmJhc2VfYmF1ZAk9IDExNTIwMCwKLQkJLnVhcnRfb2Zmc2V0CT0gOCwKLQl9LAotCiAJW3Bibl9iMF8xXzkyMTYwMF0gPSB7CiAJCS5mbGFncwkJPSBGTF9CQVNFMCwKIAkJLm51bV9wb3J0cwk9IDEsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3NlcmlhbC9hdG1lbF9zZXJpYWwuYyBiL2RyaXZlcnMvc2VyaWFsL2F0bWVsX3NlcmlhbC5jCmluZGV4IGQ1N2JmM2UuLjU1NDkyZmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2VyaWFsL2F0bWVsX3NlcmlhbC5jCisrKyBiL2RyaXZlcnMvc2VyaWFsL2F0bWVsX3NlcmlhbC5jCkBAIC05Niw2ICs5Niw3IEBACiAKICAvKiBQREMgcmVnaXN0ZXJzICovCiAjZGVmaW5lIFVBUlRfUFVUX1BUQ1IocG9ydCx2KQlfX3Jhd193cml0ZWwodiwgKHBvcnQpLT5tZW1iYXNlICsgQVRNRUxfUERDX1BUQ1IpCisjZGVmaW5lIFVBUlRfR0VUX1RDUihwb3J0KSAgICAgIF9fcmF3X3JlYWRsKChwb3J0KS0+bWVtYmFzZSArIEFUTUVMX1BEQ19UQ1IpCiAjZGVmaW5lIFVBUlRfR0VUX1BUU1IocG9ydCkJX19yYXdfcmVhZGwoKHBvcnQpLT5tZW1iYXNlICsgQVRNRUxfUERDX1BUU1IpCiAKICNkZWZpbmUgVUFSVF9QVVRfUlBSKHBvcnQsdikJX19yYXdfd3JpdGVsKHYsIChwb3J0KS0+bWVtYmFzZSArIEFUTUVMX1BEQ19SUFIpCkBAIC0xMDYsNiArMTA3LDcgQEAKIAogI2RlZmluZSBVQVJUX1BVVF9UUFIocG9ydCx2KQlfX3Jhd193cml0ZWwodiwgKHBvcnQpLT5tZW1iYXNlICsgQVRNRUxfUERDX1RQUikKICNkZWZpbmUgVUFSVF9QVVRfVENSKHBvcnQsdikJX19yYXdfd3JpdGVsKHYsIChwb3J0KS0+bWVtYmFzZSArIEFUTUVMX1BEQ19UQ1IpCisjZGVmaW5lIFVBUlRfR0VUX1RDUihwb3J0KQlfX3Jhd19yZWFkbCgocG9ydCktPm1lbWJhc2UgKyBBVE1FTF9QRENfVENSKQogCiBzdGF0aWMgaW50ICgqYXRtZWxfb3Blbl9ob29rKShzdHJ1Y3QgdWFydF9wb3J0ICopOwogc3RhdGljIHZvaWQgKCphdG1lbF9jbG9zZV9ob29rKShzdHJ1Y3QgdWFydF9wb3J0ICopOwpAQCAtNTYyLDE3ICs1NjQsMjIgQEAKIAlzdHJ1Y3QgYXRtZWxfZG1hX2J1ZmZlciAqcGRjID0gJmF0bWVsX3BvcnQtPnBkY190eDsKIAlpbnQgY291bnQ7CiAKKwkvKiBub3RoaW5nIGxlZnQgdG8gdHJhbnNtaXQ/ICovCisJaWYgKFVBUlRfR0VUX1RDUihwb3J0KSkKKwkJcmV0dXJuOworCiAJeG1pdC0+dGFpbCArPSBwZGMtPm9mczsKIAl4bWl0LT50YWlsICY9IFVBUlRfWE1JVF9TSVpFIC0gMTsKIAogCXBvcnQtPmljb3VudC50eCArPSBwZGMtPm9mczsKIAlwZGMtPm9mcyA9IDA7CiAKLQlpZiAoIXVhcnRfY2lyY19lbXB0eSh4bWl0KSkgewotCQkvKiBtb3JlIHRvIHRyYW5zbWl0IC0gc2V0dXAgbmV4dCB0cmFuc2ZlciAqLworCS8qIG1vcmUgdG8gdHJhbnNtaXQgLSBzZXR1cCBuZXh0IHRyYW5zZmVyICovCiAKLQkJLyogZGlzYWJsZSBQREMgdHJhbnNtaXQgKi8KLQkJVUFSVF9QVVRfUFRDUihwb3J0LCBBVE1FTF9QRENfVFhURElTKTsKKwkvKiBkaXNhYmxlIFBEQyB0cmFuc21pdCAqLworCVVBUlRfUFVUX1BUQ1IocG9ydCwgQVRNRUxfUERDX1RYVERJUyk7CisKKwlpZiAoIXVhcnRfY2lyY19lbXB0eSh4bWl0KSkgewogCQlkbWFfc3luY19zaW5nbGVfZm9yX2RldmljZShwb3J0LT5kZXYsCiAJCQkJCSAgIHBkYy0+ZG1hX2FkZHIsCiAJCQkJCSAgIHBkYy0+ZG1hX3NpemUsCkBAIC01ODYsMTEgKzU5Myw2IEBACiAJCS8qIHJlLWVuYWJsZSBQREMgdHJhbnNtaXQgYW5kIGludGVycnVwdHMgKi8KIAkJVUFSVF9QVVRfUFRDUihwb3J0LCBBVE1FTF9QRENfVFhURU4pOwogCQlVQVJUX1BVVF9JRVIocG9ydCwgQVRNRUxfVVNfRU5EVFggfCBBVE1FTF9VU19UWEJVRkUpOwotCX0gZWxzZSB7Ci0JCS8qIG5vdGhpbmcgbGVmdCB0byB0cmFuc21pdCAtIGRpc2FibGUgdGhlIHRyYW5zbWl0dGVyICovCi0KLQkJLyogZGlzYWJsZSBQREMgdHJhbnNtaXQgKi8KLQkJVUFSVF9QVVRfUFRDUihwb3J0LCBBVE1FTF9QRENfVFhURElTKTsKIAl9CiAKIAlpZiAodWFydF9jaXJjX2NoYXJzX3BlbmRpbmcoeG1pdCkgPCBXQUtFVVBfQ0hBUlMpCkBAIC0xMjc0LDYgKzEyNzYsNyBAQAogewogCXN0cnVjdCB1YXJ0X3BvcnQgKnBvcnQgPSAmYXRtZWxfcG9ydHNbY28tPmluZGV4XS51YXJ0OwogCXVuc2lnbmVkIGludCBzdGF0dXMsIGltcjsKKwl1bnNpZ25lZCBpbnQgcGRjX3R4OwogCiAJLyoKIAkgKiBGaXJzdCwgc2F2ZSBJTVIgYW5kIHRoZW4gZGlzYWJsZSBpbnRlcnJ1cHRzCkBAIC0xMjgxLDYgKzEyODQsMTAgQEAKIAlpbXIgPSBVQVJUX0dFVF9JTVIocG9ydCk7CiAJVUFSVF9QVVRfSURSKHBvcnQsIEFUTUVMX1VTX1JYUkRZIHwgQVRNRUxfVVNfVFhSRFkpOwogCisJLyogU3RvcmUgUERDIHRyYW5zbWl0IHN0YXR1cyBhbmQgZGlzYWJsZSBpdCAqLworCXBkY190eCA9IFVBUlRfR0VUX1BUU1IocG9ydCkgJiBBVE1FTF9QRENfVFhURU47CisJVUFSVF9QVVRfUFRDUihwb3J0LCBBVE1FTF9QRENfVFhURElTKTsKKwogCXVhcnRfY29uc29sZV93cml0ZShwb3J0LCBzLCBjb3VudCwgYXRtZWxfY29uc29sZV9wdXRjaGFyKTsKIAogCS8qCkBAIC0xMjkwLDYgKzEyOTcsMTEgQEAKIAlkbyB7CiAJCXN0YXR1cyA9IFVBUlRfR0VUX0NTUihwb3J0KTsKIAl9IHdoaWxlICghKHN0YXR1cyAmIEFUTUVMX1VTX1RYUkRZKSk7CisKKwkvKiBSZXN0b3JlIFBEQyB0cmFuc21pdCBzdGF0dXMgKi8KKwlpZiAocGRjX3R4KQorCQlVQVJUX1BVVF9QVENSKHBvcnQsIEFUTUVMX1BEQ19UWFRFTik7CisKIAkvKiBzZXQgaW50ZXJydXB0cyBiYWNrIHRoZSB3YXkgdGhleSB3ZXJlICovCiAJVUFSVF9QVVRfSUVSKHBvcnQsIGltcik7CiB9CkBAIC0xNTY1LDMgKzE1NzcsNCBAQAogTU9EVUxFX0FVVEhPUigiUmljayBCcm9uc29uIik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkF0bWVsIEFUOTEgLyBBVDMyIHNlcmlhbCBwb3J0IGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybTphdG1lbF91c2FydCIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zZXJpYWwvYmZpbl81eHguYyBiL2RyaXZlcnMvc2VyaWFsL2JmaW5fNXh4LmMKaW5kZXggMGFhMzQ1Yi4uNDZiYjQ3ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zZXJpYWwvYmZpbl81eHguYworKysgYi9kcml2ZXJzL3NlcmlhbC9iZmluXzV4eC5jCkBAIC0xMjQzLDYgKzEyNDMsNyBAQAogCS5yZXN1bWUJCT0gYmZpbl9zZXJpYWxfcmVzdW1lLAogCS5kcml2ZXIJCT0gewogCQkubmFtZQk9ICJiZmluLXVhcnQiLAorCQkub3duZXIJPSBUSElTX01PRFVMRSwKIAl9LAogfTsKIApAQCAtMTMwMSwzICsxMzAyLDQgQEAKIE1PRFVMRV9ERVNDUklQVElPTigiQmxhY2tmaW4gZ2VuZXJpYyBzZXJpYWwgcG9ydCBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKIE1PRFVMRV9BTElBU19DSEFSREVWX01BSk9SKEJGSU5fU0VSSUFMX01BSk9SKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06YmZpbi11YXJ0Iik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3NlcmlhbC9pbXguYyBiL2RyaXZlcnMvc2VyaWFsL2lteC5jCmluZGV4IDU2YWYxZjUuLjE2YmE5YWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2VyaWFsL2lteC5jCisrKyBiL2RyaXZlcnMvc2VyaWFsL2lteC5jCkBAIC0xMDkwLDYgKzEwOTAsNyBAQAogCS5yZXN1bWUJCT0gc2VyaWFsX2lteF9yZXN1bWUsCiAJLmRyaXZlcgkJPSB7CiAJICAgICAgICAubmFtZQk9ICJpbXgtdWFydCIsCisJCS5vd25lcgk9IFRISVNfTU9EVUxFLAogCX0sCiB9OwogCkBAIC0xMTI0LDMgKzExMjUsNCBAQAogTU9EVUxFX0FVVEhPUigiU2FzY2hhIEhhdWVyIik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIklNWCBnZW5lcmljIHNlcmlhbCBwb3J0IGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybTppbXgtdWFydCIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zZXJpYWwvbWNmLmMgYi9kcml2ZXJzL3NlcmlhbC9tY2YuYwppbmRleCBlNzZmYzcyLi43ZTE2NGUwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3NlcmlhbC9tY2YuYworKysgYi9kcml2ZXJzL3NlcmlhbC9tY2YuYwpAQCAtNjQ5LDUgKzY0OSw2IEBACiBNT0RVTEVfQVVUSE9SKCJHcmVnIFVuZ2VyZXIgPGdlcmdAc25hcGdlYXIuY29tPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJGcmVlc2NhbGUgQ29sZEZpcmUgVUFSVCBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06bWNmdWFydCIpOwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2VyaWFsL21wYzUyeHhfdWFydC5jIGIvZHJpdmVycy9zZXJpYWwvbXBjNTJ4eF91YXJ0LmMKaW5kZXggYTYzOGYyMy4uZDkzYjM1NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zZXJpYWwvbXBjNTJ4eF91YXJ0LmMKKysrIGIvZHJpdmVycy9zZXJpYWwvbXBjNTJ4eF91YXJ0LmMKQEAgLTExODgsNiArMTE4OCw4IEBACiB9CiAjZW5kaWYKIAorLyogd29yayB3aXRoIGhvdHBsdWcgYW5kIGNvbGRwbHVnICovCitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOm1wYzUyeHgtcHNjIik7CiAKIHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG1wYzUyeHhfdWFydF9wbGF0Zm9ybV9kcml2ZXIgPSB7CiAJLnByb2JlCQk9IG1wYzUyeHhfdWFydF9wcm9iZSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2VyaWFsL21wc2MuYyBiL2RyaXZlcnMvc2VyaWFsL21wc2MuYwppbmRleCBjYjNhOTE5Li5lODgxOWM0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3NlcmlhbC9tcHNjLmMKKysrIGIvZHJpdmVycy9zZXJpYWwvbXBzYy5jCkBAIC0xOTY0LDYgKzE5NjQsNyBAQAogCS5yZW1vdmUJPSBtcHNjX2Rydl9yZW1vdmUsCiAJLmRyaXZlcgk9IHsKIAkJLm5hbWUJPSBNUFNDX0NUTFJfTkFNRSwKKwkJLm93bmVyCT0gVEhJU19NT0RVTEUsCiAJfSwKIH07CiAKQEAgLTIwMDcsMyArMjAwOCw0IEBACiBNT0RVTEVfVkVSU0lPTihNUFNDX1ZFUlNJT04pOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwogTU9EVUxFX0FMSUFTX0NIQVJERVZfTUFKT1IoTVBTQ19NQUpPUik7CitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOiIgTVBTQ19DVExSX05BTUUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zZXJpYWwvbmV0eC1zZXJpYWwuYyBiL2RyaXZlcnMvc2VyaWFsL25ldHgtc2VyaWFsLmMKaW5kZXggYjU2ZjdkYi4uMzEyM2ZmZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zZXJpYWwvbmV0eC1zZXJpYWwuYworKysgYi9kcml2ZXJzL3NlcmlhbC9uZXR4LXNlcmlhbC5jCkBAIC03MTMsNiArNzEzLDcgQEAKIAogCS5kcml2ZXIJCT0gewogCQkubmFtZSAgID0gRFJJVkVSX05BTUUsCisJCS5vd25lcgk9IFRISVNfTU9EVUxFLAogCX0sCiB9OwogCkBAIC03NDUsMyArNzQ2LDQgQEAKIE1PRFVMRV9BVVRIT1IoIlNhc2NoYSBIYXVlciIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJOZXRYIHNlcmlhbCBwb3J0IGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybToiIERSSVZFUl9OQU1FKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2VyaWFsL3BueDh4eHhfdWFydC5jIGIvZHJpdmVycy9zZXJpYWwvcG54OHh4eF91YXJ0LmMKaW5kZXggOGQwMWM1OS4uZDBlNWE3OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zZXJpYWwvcG54OHh4eF91YXJ0LmMKKysrIGIvZHJpdmVycy9zZXJpYWwvcG54OHh4eF91YXJ0LmMKQEAgLTg1MCwzICs4NTAsNCBAQAogTU9EVUxFX0RFU0NSSVBUSU9OKCJQTlg4WFhYIFNvQ3Mgc2VyaWFsIHBvcnQgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CiBNT0RVTEVfQUxJQVNfQ0hBUkRFVl9NQUpPUihTRVJJQUxfUE5YOFhYWF9NQUpPUik7CitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOnBueDh4eHgtdWFydCIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zZXJpYWwvcHhhLmMgYi9kcml2ZXJzL3NlcmlhbC9weGEuYwppbmRleCAzNTJmY2I4Li5iNGY3ZmZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3NlcmlhbC9weGEuYworKysgYi9kcml2ZXJzL3NlcmlhbC9weGEuYwpAQCAtODMzLDYgKzgzMyw3IEBACiAJLnJlc3VtZQkJPSBzZXJpYWxfcHhhX3Jlc3VtZSwKIAkuZHJpdmVyCQk9IHsKIAkgICAgICAgIC5uYW1lCT0gInB4YTJ4eC11YXJ0IiwKKwkJLm93bmVyCT0gVEhJU19NT0RVTEUsCiAJfSwKIH07CiAKQEAgLTg2MSw0ICs4NjIsNCBAQAogbW9kdWxlX2V4aXQoc2VyaWFsX3B4YV9leGl0KTsKIAogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOnB4YTJ4eC11YXJ0Iik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3NlcmlhbC9zM2MyNDEwLmMgYi9kcml2ZXJzL3NlcmlhbC9zM2MyNDEwLmMKaW5kZXggNDVkZTE5My4uNGZmYTI1OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zZXJpYWwvczNjMjQxMC5jCisrKyBiL2RyaXZlcnMvc2VyaWFsL3MzYzI0MTAuYwpAQCAtMTkzNSwzICsxOTM1LDcgQEAKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKIE1PRFVMRV9BVVRIT1IoIkJlbiBEb29rcyA8YmVuQHNpbXRlYy5jby51az4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiU2Ftc3VuZyBTM0MyNDEwL1MzQzI0NDAvUzNDMjQxMiBTZXJpYWwgcG9ydCBkcml2ZXIiKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06czNjMjQwMC11YXJ0Iik7CitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOnMzYzI0MTAtdWFydCIpOworTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybTpzM2MyNDEyLXVhcnQiKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06czNjMjQ0MC11YXJ0Iik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3NlcmlhbC9zYTExMDAuYyBiL2RyaXZlcnMvc2VyaWFsL3NhMTEwMC5jCmluZGV4IDU4YTgzYzIuLjY3YjIzMzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2VyaWFsL3NhMTEwMC5jCisrKyBiL2RyaXZlcnMvc2VyaWFsL3NhMTEwMC5jCkBAIC04ODQsNiArODg0LDcgQEAKIAkucmVzdW1lCQk9IHNhMTEwMF9zZXJpYWxfcmVzdW1lLAogCS5kcml2ZXIJCT0gewogCQkubmFtZQk9ICJzYTExeDAtdWFydCIsCisJCS5vd25lcgk9IFRISVNfTU9EVUxFLAogCX0sCiB9OwogCkBAIC05MTcsMyArOTE4LDQgQEAKIE1PRFVMRV9ERVNDUklQVElPTigiU0ExMTAwIGdlbmVyaWMgc2VyaWFsIHBvcnQgZHJpdmVyICRSZXZpc2lvbjogMS41MCAkIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CiBNT0RVTEVfQUxJQVNfQ0hBUkRFVl9NQUpPUihTRVJJQUxfU0ExMTAwX01BSk9SKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06c2ExMXgwLXVhcnQiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2VyaWFsL3NjMjZ4eC5jIGIvZHJpdmVycy9zZXJpYWwvc2MyNnh4LmMKaW5kZXggYTM1MGI2ZC4uYWUyYTllMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zZXJpYWwvc2MyNnh4LmMKKysrIGIvZHJpdmVycy9zZXJpYWwvc2MyNnh4LmMKQEAgLTczMiw2ICs3MzIsNyBAQAogCS5yZW1vdmUJPSBfX2RldmV4aXRfcChzYzI2eHhfZHJpdmVyX3JlbW92ZSksCiAJLmRyaXZlcgk9IHsKIAkJLm5hbWUJPSAiU0MyNnh4IiwKKwkJLm93bmVyCT0gVEhJU19NT0RVTEUsCiAJfSwKIH07CiAKQEAgLTc1MywzICs3NTQsNCBAQAogTU9EVUxFX0RFU0NSSVBUSU9OKCJTQzY4MS9TQzI2OTIgc2VyaWFsIGRyaXZlciIpOwogTU9EVUxFX1ZFUlNJT04oIjEuMCIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybTpTQzI2eHgiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2VyaWFsL3NoLXNjaS5jIGIvZHJpdmVycy9zZXJpYWwvc2gtc2NpLmMKaW5kZXggYThjMTE2Yi4uZWZmNTkzMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zZXJpYWwvc2gtc2NpLmMKKysrIGIvZHJpdmVycy9zZXJpYWwvc2gtc2NpLmMKQEAgLTQxNCwxMiArNDE0LDEyIEBACiAgICAgZGVmaW5lZChDT05GSUdfQ1BVX1NVQlRZUEVfU0g3Nzg1KQogc3RhdGljIGlubGluZSBpbnQgc2NpZl90eHJvb20oc3RydWN0IHVhcnRfcG9ydCAqcG9ydCkKIHsKLQlyZXR1cm4gU0NJRl9UWFJPT01fTUFYIC0gKHNjaV9pbihwb3J0LCBTQ1RGRFIpICYgMHg3Zik7CisJcmV0dXJuIFNDSUZfVFhST09NX01BWCAtIChzY2lfaW4ocG9ydCwgU0NURkRSKSAmIDB4ZmYpOwogfQogCiBzdGF0aWMgaW5saW5lIGludCBzY2lmX3J4cm9vbShzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0KQogewotCXJldHVybiBzY2lfaW4ocG9ydCwgU0NSRkRSKSAmIDB4N2Y7CisJcmV0dXJuIHNjaV9pbihwb3J0LCBTQ1JGRFIpICYgMHhmZjsKIH0KICNlbHNlCiBzdGF0aWMgaW5saW5lIGludCBzY2lmX3R4cm9vbShzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0KQpAQCAtMTU1MiwzICsxNTUyLDQgQEAKIG1vZHVsZV9leGl0KHNjaV9leGl0KTsKIAogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybTpzaC1zY2kiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2VyaWFsL3VhcnRsaXRlLmMgYi9kcml2ZXJzL3NlcmlhbC91YXJ0bGl0ZS5jCmluZGV4IDRlMDZhYjYuLmI1NjVkNWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2VyaWFsL3VhcnRsaXRlLmMKKysrIGIvZHJpdmVycy9zZXJpYWwvdWFydGxpdGUuYwpAQCAtNTYxLDYgKzU2MSw5IEBACiAJcmV0dXJuIHVsaXRlX3JlbGVhc2UoJnBkZXYtPmRldik7CiB9CiAKKy8qIHdvcmsgd2l0aCBob3RwbHVnIGFuZCBjb2xkcGx1ZyAqLworTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybTp1YXJ0bGl0ZSIpOworCiBzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciB1bGl0ZV9wbGF0Zm9ybV9kcml2ZXIgPSB7CiAJLnByb2JlCT0gdWxpdGVfcHJvYmUsCiAJLnJlbW92ZQk9IF9fZGV2ZXhpdF9wKHVsaXRlX3JlbW92ZSksCmRpZmYgLS1naXQgYS9kcml2ZXJzL3NlcmlhbC92cjQxeHhfc2l1LmMgYi9kcml2ZXJzL3NlcmlhbC92cjQxeHhfc2l1LmMKaW5kZXggNmZkNTFiMC4uOThhYjY0OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zZXJpYWwvdnI0MXh4X3NpdS5jCisrKyBiL2RyaXZlcnMvc2VyaWFsL3ZyNDF4eF9zaXUuYwpAQCAtOTYwLDMgKzk2MCw2IEBACiAKIG1vZHVsZV9pbml0KHZyNDF4eF9zaXVfaW5pdCk7CiBtb2R1bGVfZXhpdCh2cjQxeHhfc2l1X2V4aXQpOworCitNT0RVTEVfTElDRU5TRSgiR1BMIik7CitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOlNJVSIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zbi9pb2MzLmMgYi9kcml2ZXJzL3NuL2lvYzMuYwppbmRleCAyOWZjZDZkLi5hMGFhMzNkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3NuL2lvYzMuYworKysgYi9kcml2ZXJzL3NuL2lvYzMuYwpAQCAtNTYxLDcgKzU2MSw3IEBACiAJCQkJCXByaW50ayhLRVJOX1dBUk5JTkcKIAkJCQkJICAgICAgICIlczogSU9DMyBzdWJtb2R1bGUgJXMgcmVtb3ZlIGZhaWxlZCAiCiAJCQkJCSAgICAgICAiZm9yIHBjaV9kZXYgJXMuXG4iLAotCQkJCQkgICAgICAgX19GVU5DVElPTl9fLCBtb2R1bGVfbmFtZShpcy0+b3duZXIpLAorCQkJCQkgICAgICAgX19mdW5jX18sIG1vZHVsZV9uYW1lKGlzLT5vd25lciksCiAJCQkJCSAgICAgICBwY2lfbmFtZShpZGQtPnBkZXYpKTsKIAkJCWlkZC0+YWN0aXZlW2lzLT5pZF0gPSAwOwogCQkJaWYoaXMtPmlycV9tYXNrKQpAQCAtNjExLDcgKzYxMSw3IEBACiAJaWYgKChyZXQgPSBwY2lfZW5hYmxlX2RldmljZShwZGV2KSkpIHsKIAkJcHJpbnRrKEtFUk5fV0FSTklORwogCQkgICAgICAgIiVzOiBGYWlsZWQgdG8gZW5hYmxlIElPQzMgZGV2aWNlIGZvciBwY2lfZGV2ICVzLlxuIiwKLQkJICAgICAgIF9fRlVOQ1RJT05fXywgcGNpX25hbWUocGRldikpOworCQkgICAgICAgX19mdW5jX18sIHBjaV9uYW1lKHBkZXYpKTsKIAkJZ290byBvdXQ7CiAJfQogCXBjaV9zZXRfbWFzdGVyKHBkZXYpOwpAQCAtNjIzLDcgKzYyMyw3IEBACiAgICAgICAgICAgICAgICAgaWYgKHJldCA8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ayhLRVJOX1dBUk5JTkcgIiVzOiBVbmFibGUgdG8gb2J0YWluIDY0IGJpdCBETUEgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3IgY29uc2lzdGVudCBhbGxvY2F0aW9uc1xuIiwKLQkJCQlfX0ZVTkNUSU9OX18pOworCQkJCV9fZnVuY19fKTsKICAgICAgICAgICAgICAgICB9CiAJfQogI2VuZGlmCkBAIC02MzMsNyArNjMzLDcgQEAKIAlpZiAoIWlkZCkgewogCQlwcmludGsoS0VSTl9XQVJOSU5HCiAJCSAgICAgICAiJXM6IEZhaWxlZCB0byBhbGxvY2F0ZSBJT0MzIGRhdGEgZm9yIHBjaV9kZXYgJXMuXG4iLAotCQkgICAgICAgX19GVU5DVElPTl9fLCBwY2lfbmFtZShwZGV2KSk7CisJCSAgICAgICBfX2Z1bmNfXywgcGNpX25hbWUocGRldikpOwogCQlyZXQgPSAtRU5PREVWOwogCQlnb3RvIG91dF9pZGQ7CiAJfQpAQCAtNjQ5LDcgKzY0OSw3IEBACiAJCXByaW50ayhLRVJOX1dBUk5JTkcKIAkJICAgICAgICIlczogVW5hYmxlIHRvIGZpbmQgSU9DMyByZXNvdXJjZSAiCiAJCSAgICAgICAiZm9yIHBjaV9kZXYgJXMuXG4iLAotCQkgICAgICAgX19GVU5DVElPTl9fLCBwY2lfbmFtZShwZGV2KSk7CisJCSAgICAgICBfX2Z1bmNfXywgcGNpX25hbWUocGRldikpOwogCQlyZXQgPSAtRU5PREVWOwogCQlnb3RvIG91dF9wY2k7CiAJfQpAQCAtNjU3LDcgKzY1Nyw3IEBACiAJCXByaW50ayhLRVJOX1dBUk5JTkcKIAkJICAgICAgICIlczogVW5hYmxlIHRvIHJlcXVlc3QgSU9DMyByZWdpb24gIgogCQkgICAgICAgImZvciBwY2lfZGV2ICVzLlxuIiwKLQkJICAgICAgIF9fRlVOQ1RJT05fXywgcGNpX25hbWUocGRldikpOworCQkgICAgICAgX19mdW5jX18sIHBjaV9uYW1lKHBkZXYpKTsKIAkJcmV0ID0gLUVOT0RFVjsKIAkJZ290byBvdXRfcGNpOwogCX0KQEAgLTY2Niw3ICs2NjYsNyBAQAogCQlwcmludGsoS0VSTl9XQVJOSU5HCiAJCSAgICAgICAiJXM6IFVuYWJsZSB0byByZW1hcCBJT0MzIHJlZ2lvbiAiCiAJCSAgICAgICAiZm9yIHBjaV9kZXYgJXMuXG4iLAotCQkgICAgICAgX19GVU5DVElPTl9fLCBwY2lfbmFtZShwZGV2KSk7CisJCSAgICAgICBfX2Z1bmNfXywgcGNpX25hbWUocGRldikpOwogCQlyZXQgPSAtRU5PREVWOwogCQlnb3RvIG91dF9taXNjX3JlZ2lvbjsKIAl9CkBAIC03MDksNyArNzA5LDcgQEAKIAkJfSBlbHNlIHsKIAkJCXByaW50ayhLRVJOX1dBUk5JTkcKIAkJCSAgICAgICAiJXMgOiByZXF1ZXN0X2lycSBmYWlscyBmb3IgSVJRIDB4JXhcbiAiLAotCQkJICAgICAgIF9fRlVOQ1RJT05fXywgcGRldi0+aXJxKTsKKwkJCSAgICAgICBfX2Z1bmNfXywgcGRldi0+aXJxKTsKIAkJfQogCQlpZiAoIXJlcXVlc3RfaXJxKHBkZXYtPmlycSsyLCBpb2MzX2ludHJfaW8sIElSUUZfU0hBUkVELAogCQkJCSAiaW9jMy1pbyIsICh2b2lkICopaWRkKSkgewpAQCAtNzE3LDcgKzcxNyw3IEBACiAJCX0gZWxzZSB7CiAJCQlwcmludGsoS0VSTl9XQVJOSU5HCiAJCQkgICAgICAgIiVzIDogcmVxdWVzdF9pcnEgZmFpbHMgZm9yIElSUSAweCV4XG4gIiwKLQkJCSAgICAgICBfX0ZVTkNUSU9OX18sIHBkZXYtPmlycSsyKTsKKwkJCSAgICAgICBfX2Z1bmNfXywgcGRldi0+aXJxKzIpOwogCQl9CiAJfSBlbHNlIHsKIAkJaWYgKCFyZXF1ZXN0X2lycShwZGV2LT5pcnEsIGlvYzNfaW50cl9pbywgSVJRRl9TSEFSRUQsCkBAIC03MjYsNyArNzI2LDcgQEAKIAkJfSBlbHNlIHsKIAkJCXByaW50ayhLRVJOX1dBUk5JTkcKIAkJCSAgICAgICAiJXMgOiByZXF1ZXN0X2lycSBmYWlscyBmb3IgSVJRIDB4JXhcbiAiLAotCQkJICAgICAgIF9fRlVOQ1RJT05fXywgcGRldi0+aXJxKTsKKwkJCSAgICAgICBfX2Z1bmNfXywgcGRldi0+aXJxKTsKIAkJfQogCX0KIApAQCAtNzY5LDcgKzc2OSw3IEBACiAJCQkJCXByaW50ayhLRVJOX1dBUk5JTkcKIAkJCQkJICAgICAgICIlczogSU9DMyBzdWJtb2R1bGUgMHglcyByZW1vdmUgZmFpbGVkICIKIAkJCQkJICAgICAgICJmb3IgcGNpX2RldiAlcy5cbiIsCi0JCQkJCSAgICAgICAgX19GVU5DVElPTl9fLAorCQkJCQkJX19mdW5jX18sCiAJCQkJCQltb2R1bGVfbmFtZShpb2MzX3N1Ym1vZHVsZXNbaWRdLT5vd25lciksCiAJCQkJCSAgICAgICAgcGNpX25hbWUocGRldikpOwogCQkJaWRkLT5hY3RpdmVbaWRdID0gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3BpL2F0bWVsX3NwaS5jIGIvZHJpdmVycy9zcGkvYXRtZWxfc3BpLmMKaW5kZXggODU2ODdhYS4uMTc0OWEyNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zcGkvYXRtZWxfc3BpLmMKKysrIGIvZHJpdmVycy9zcGkvYXRtZWxfc3BpLmMKQEAgLTg2MywzICs4NjMsNCBAQAogTU9EVUxFX0RFU0NSSVBUSU9OKCJBdG1lbCBBVDMyL0FUOTEgU1BJIENvbnRyb2xsZXIgZHJpdmVyIik7CiBNT0RVTEVfQVVUSE9SKCJIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4iKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06YXRtZWxfc3BpIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3NwaS9hdTE1NTBfc3BpLmMgYi9kcml2ZXJzL3NwaS9hdTE1NTBfc3BpLmMKaW5kZXggYzQ3YTY1MC4uMDcyYzRhNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zcGkvYXUxNTUwX3NwaS5jCisrKyBiL2RyaXZlcnMvc3BpL2F1MTU1MF9zcGkuYwpAQCAtOTksNyArOTksNyBAQAogc3RhdGljIHZvaWQgYXUxNTUwX3NwaV9iaXRzX2hhbmRsZXJzX3NldChzdHJ1Y3QgYXUxNTUwX3NwaSAqaHcsIGludCBicHcpOwogCiAKLS8qKgorLyoKICAqICBjb21wdXRlIEJSRyBhbmQgRElWIGJpdHMgdG8gc2V0dXAgc3BpIGNsb2NrIGJhc2VkIG9uIG1haW4gaW5wdXQgY2xvY2sgcmF0ZQogICogIHRoYXQgd2FzIHNwZWNpZmllZCBpbiBwbGF0Zm9ybSBkYXRhIHN0cnVjdHVyZQogICogIGFjY29yZGluZyB0byBhdTE1NTAgZGF0YXNoZWV0OgpAQCAtNjUwLDcgKzY1MCw3IEBACiAJcmV0dXJuIGh3LT50eHJ4X2J1ZnMoc3BpLCB0KTsKIH0KIAotc3RhdGljIGlycXJldHVybl90IGF1MTU1MF9zcGlfaXJxKGludCBpcnEsIHZvaWQgKmRldiwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCitzdGF0aWMgaXJxcmV0dXJuX3QgYXUxNTUwX3NwaV9pcnEoaW50IGlycSwgdm9pZCAqZGV2KQogewogCXN0cnVjdCBhdTE1NTBfc3BpICpodyA9IGRldjsKIAlyZXR1cm4gaHctPmlycV9jYWxsYmFjayhodyk7CkBAIC05NTgsNiArOTU4LDkgQEAKIAlyZXR1cm4gMDsKIH0KIAorLyogd29yayB3aXRoIGhvdHBsdWcgYW5kIGNvbGRwbHVnICovCitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOmF1MTU1MC1zcGkiKTsKKwogc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYXUxNTUwX3NwaV9kcnYgPSB7CiAJLnJlbW92ZSA9IF9fZXhpdF9wKGF1MTU1MF9zcGlfcmVtb3ZlKSwKIAkuZHJpdmVyID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zcGkvbXBjNTJ4eF9wc2Nfc3BpLmMgYi9kcml2ZXJzL3NwaS9tcGM1Mnh4X3BzY19zcGkuYwppbmRleCBhODYzMTVhLi45MDcyOTQ2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3NwaS9tcGM1Mnh4X3BzY19zcGkuYworKysgYi9kcml2ZXJzL3NwaS9tcGM1Mnh4X3BzY19zcGkuYwpAQCAtNTAwLDYgKzUwMCw5IEBACiAJcmV0dXJuIG1wYzUyeHhfcHNjX3NwaV9kb19yZW1vdmUoJmRldi0+ZGV2KTsKIH0KIAorLyogd29yayB3aXRoIGhvdHBsdWcgYW5kIGNvbGRwbHVnICovCitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOm1wYzUyeHgtcHNjLXNwaSIpOworCiBzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtcGM1Mnh4X3BzY19zcGlfcGxhdGZvcm1fZHJpdmVyID0gewogCS5yZW1vdmUgPSBfX2V4aXRfcChtcGM1Mnh4X3BzY19zcGlfcmVtb3ZlKSwKIAkuZHJpdmVyID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zcGkvb21hcDJfbWNzcGkuYyBiL2RyaXZlcnMvc3BpL29tYXAyX21jc3BpLmMKaW5kZXggYTZiYTExYS4uYjFjYzE0OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zcGkvb21hcDJfbWNzcGkuYworKysgYi9kcml2ZXJzL3NwaS9vbWFwMl9tY3NwaS5jCkBAIC0xMDg0LDYgKzEwODQsOSBAQAogCXJldHVybiAwOwogfQogCisvKiB3b3JrIHdpdGggaG90cGx1ZyBhbmQgY29sZHBsdWcgKi8KK01PRFVMRV9BTElBUygicGxhdGZvcm06b21hcDJfbWNzcGkiKTsKKwogc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgb21hcDJfbWNzcGlfZHJpdmVyID0gewogCS5kcml2ZXIgPSB7CiAJCS5uYW1lID0JCSJvbWFwMl9tY3NwaSIsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3NwaS9vbWFwX3V3aXJlLmMgYi9kcml2ZXJzL3NwaS9vbWFwX3V3aXJlLmMKaW5kZXggODI0NWI1MS4uNWYwMGJkNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zcGkvb21hcF91d2lyZS5jCisrKyBiL2RyaXZlcnMvc3BpL29tYXBfdXdpcmUuYwpAQCAtNTM3LDEwICs1MzcsMTIgQEAKIAlyZXR1cm4gc3RhdHVzOwogfQogCisvKiB3b3JrIHdpdGggaG90cGx1ZyBhbmQgY29sZHBsdWcgKi8KK01PRFVMRV9BTElBUygicGxhdGZvcm06b21hcF91d2lyZSIpOworCiBzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciB1d2lyZV9kcml2ZXIgPSB7CiAJLmRyaXZlciA9IHsKIAkJLm5hbWUJCT0gIm9tYXBfdXdpcmUiLAotCQkuYnVzCQk9ICZwbGF0Zm9ybV9idXNfdHlwZSwKIAkJLm93bmVyCQk9IFRISVNfTU9EVUxFLAogCX0sCiAJLnJlbW92ZQkJPSBfX2V4aXRfcCh1d2lyZV9yZW1vdmUpLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zcGkvcHhhMnh4X3NwaS5jIGIvZHJpdmVycy9zcGkvcHhhMnh4X3NwaS5jCmluZGV4IDU5ZGVlZDcuLjE0N2UyNmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3BpL3B4YTJ4eF9zcGkuYworKysgYi9kcml2ZXJzL3NwaS9weGEyeHhfc3BpLmMKQEAgLTQ0LDYgKzQ0LDcgQEAKIE1PRFVMRV9BVVRIT1IoIlN0ZXBoZW4gU3RyZWV0Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIlBYQTJ4eCBTU1AgU1BJIENvbnRyb2xsZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06cHhhMnh4LXNwaSIpOwogCiAjZGVmaW5lIE1BWF9CVVNFUyAzCiAKQEAgLTE1ODEsNyArMTU4Miw2IEBACiBzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBkcml2ZXIgPSB7CiAJLmRyaXZlciA9IHsKIAkJLm5hbWUgPSAicHhhMnh4LXNwaSIsCi0JCS5idXMgPSAmcGxhdGZvcm1fYnVzX3R5cGUsCiAJCS5vd25lciA9IFRISVNfTU9EVUxFLAogCX0sCiAJLnJlbW92ZSA9IHB4YTJ4eF9zcGlfcmVtb3ZlLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zcGkvc3BpX2JmaW41eHguYyBiL2RyaXZlcnMvc3BpL3NwaV9iZmluNXh4LmMKaW5kZXggZDg1M2ZjZWIuLmE5YWMxZmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3BpL3NwaV9iZmluNXh4LmMKKysrIGIvZHJpdmVycy9zcGkvc3BpX2JmaW41eHguYwpAQCAtNzEzLDggKzcxMyw4IEBACiAJfSBlbHNlIHsKIAkJZHJ2X2RhdGEtPmxlbiA9IHRyYW5zZmVyLT5sZW47CiAJfQotCWRldl9kYmcoJmRydl9kYXRhLT5wZGV2LT5kZXYsICJ0cmFuc2ZlcjogIiwKLQkJImRydl9kYXRhLT53cml0ZSBpcyAlcCwgY2hpcC0+d3JpdGUgaXMgJXAsIG51bGxfd3IgaXMgJXBcbiIsCisJZGV2X2RiZygmZHJ2X2RhdGEtPnBkZXYtPmRldiwKKwkJInRyYW5zZmVyOiBkcnZfZGF0YS0+d3JpdGUgaXMgJXAsIGNoaXAtPndyaXRlIGlzICVwLCBudWxsX3dyIGlzICVwXG4iLAogCQlkcnZfZGF0YS0+d3JpdGUsIGNoaXAtPndyaXRlLCBudWxsX3dyaXRlcik7CiAKIAkvKiBzcGVlZCBhbmQgd2lkdGggaGFzIGJlZW4gc2V0IG9uIHBlciBtZXNzYWdlICovCkBAIC0xMjk0LDYgKzEyOTQsMTIgQEAKIAkJZ290byBvdXRfZXJyb3JfcXVldWVfYWxsb2M7CiAJfQogCisJc3RhdHVzID0gcGVyaXBoZXJhbF9yZXF1ZXN0X2xpc3QoZHJ2X2RhdGEtPnBpbl9yZXEsIERSVl9OQU1FKTsKKwlpZiAoc3RhdHVzICE9IDApIHsKKwkJZGV2X2VycigmcGRldi0+ZGV2LCAiOiBSZXF1ZXN0aW5nIFBlcmlwaGVyYWxzIGZhaWxlZFxuIik7CisJCWdvdG8gb3V0X2Vycm9yX3F1ZXVlX2FsbG9jOworCX0KKwogCS8qIFJlZ2lzdGVyIHdpdGggdGhlIFNQSSBmcmFtZXdvcmsgKi8KIAlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBkcnZfZGF0YSk7CiAJc3RhdHVzID0gc3BpX3JlZ2lzdGVyX21hc3RlcihtYXN0ZXIpOwpAQCAtMTMwMiwxMiArMTMwOCw2IEBACiAJCWdvdG8gb3V0X2Vycm9yX3F1ZXVlX2FsbG9jOwogCX0KIAotCXN0YXR1cyA9IHBlcmlwaGVyYWxfcmVxdWVzdF9saXN0KGRydl9kYXRhLT5waW5fcmVxLCBEUlZfTkFNRSk7Ci0JaWYgKHN0YXR1cyAhPSAwKSB7Ci0JCWRldl9lcnIoJnBkZXYtPmRldiwgIjogUmVxdWVzdGluZyBQZXJpcGhlcmFscyBmYWlsZWRcbiIpOwotCQlnb3RvIG91dF9lcnJvcjsKLQl9Ci0KIAlkZXZfaW5mbyhkZXYsICIlcywgVmVyc2lvbiAlcywgcmVnc19iYXNlQCVwLCBkbWEgY2hhbm5lbEAlZFxuIiwKIAkJRFJWX0RFU0MsIERSVl9WRVJTSU9OLCBkcnZfZGF0YS0+cmVnc19iYXNlLAogCQlkcnZfZGF0YS0+ZG1hX2NoYW5uZWwpOwpAQCAtMTMxOSw3ICsxMzE5LDYgQEAKIAlpb3VubWFwKCh2b2lkICopIGRydl9kYXRhLT5yZWdzX2Jhc2UpOwogb3V0X2Vycm9yX2lvcmVtYXA6CiBvdXRfZXJyb3JfZ2V0X3JlczoKLW91dF9lcnJvcjoKIAlzcGlfbWFzdGVyX3B1dChtYXN0ZXIpOwogCiAJcmV0dXJuIHN0YXR1czsKQEAgLTEzOTcsNyArMTM5Niw3IEBACiAjZGVmaW5lIGJmaW41eHhfc3BpX3Jlc3VtZSBOVUxMCiAjZW5kaWYJCQkJLyogQ09ORklHX1BNICovCiAKLU1PRFVMRV9BTElBUygiYmZpbi1zcGktbWFzdGVyIik7CS8qIGZvciBwbGF0Zm9ybSBidXMgaG90cGx1ZyAqLworTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybTpiZmluLXNwaSIpOwogc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYmZpbjV4eF9zcGlfZHJpdmVyID0gewogCS5kcml2ZXIJPSB7CiAJCS5uYW1lCT0gRFJWX05BTUUsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3NwaS9zcGlfYml0YmFuZy5jIGIvZHJpdmVycy9zcGkvc3BpX2JpdGJhbmcuYwppbmRleCBmN2Y4NTgwLi43MWU4ODE0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3NwaS9zcGlfYml0YmFuZy5jCisrKyBiL2RyaXZlcnMvc3BpL3NwaV9iaXRiYW5nLmMKQEAgLTM0NCwxMiArMzQ0LDE0IEBACiAJCQkJCXQtPnJ4X2RtYSA9IHQtPnR4X2RtYSA9IDA7CiAJCQkJc3RhdHVzID0gYml0YmFuZy0+dHhyeF9idWZzKHNwaSwgdCk7CiAJCQl9CisJCQlpZiAoc3RhdHVzID4gMCkKKwkJCQltLT5hY3R1YWxfbGVuZ3RoICs9IHN0YXR1czsKIAkJCWlmIChzdGF0dXMgIT0gdC0+bGVuKSB7Ci0JCQkJaWYgKHN0YXR1cyA+IDApCi0JCQkJCXN0YXR1cyA9IC1FTVNHU0laRTsKKwkJCQkvKiBhbHdheXMgcmVwb3J0IHNvbWUga2luZCBvZiBlcnJvciAqLworCQkJCWlmIChzdGF0dXMgPj0gMCkKKwkJCQkJc3RhdHVzID0gLUVSRU1PVEVJTzsKIAkJCQlicmVhazsKIAkJCX0KLQkJCW0tPmFjdHVhbF9sZW5ndGggKz0gc3RhdHVzOwogCQkJc3RhdHVzID0gMDsKIAogCQkJLyogcHJvdG9jb2wgdHdlYWtzIGJlZm9yZSBuZXh0IHRyYW5zZmVyICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3NwaS9zcGlfaW14LmMgYi9kcml2ZXJzL3NwaS9zcGlfaW14LmMKaW5kZXggMWIwNjQ3MS4uZDRiYTY0MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zcGkvc3BpX2lteC5jCisrKyBiL2RyaXZlcnMvc3BpL3NwaV9pbXguYwpAQCAtMTcyMiwxMCArMTcyMiwxMiBAQAogI2RlZmluZSBzcGlfaW14X3Jlc3VtZSBOVUxMCiAjZW5kaWYgLyogQ09ORklHX1BNICovCiAKKy8qIHdvcmsgd2l0aCBob3RwbHVnIGFuZCBjb2xkcGx1ZyAqLworTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybTpzcGlfaW14Iik7CisKIHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGRyaXZlciA9IHsKIAkuZHJpdmVyID0gewogCQkubmFtZSA9ICJzcGlfaW14IiwKLQkJLmJ1cyA9ICZwbGF0Zm9ybV9idXNfdHlwZSwKIAkJLm93bmVyID0gVEhJU19NT0RVTEUsCiAJfSwKIAkucmVtb3ZlID0gX19leGl0X3Aoc3BpX2lteF9yZW1vdmUpLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zcGkvc3BpX21wYzgzeHguYyBiL2RyaXZlcnMvc3BpL3NwaV9tcGM4M3h4LmMKaW5kZXggMDRmN2NkOS4uYmUxNWE2MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zcGkvc3BpX21wYzgzeHguYworKysgYi9kcml2ZXJzL3NwaS9zcGlfbXBjODN4eC5jCkBAIC01MjMsMTEgKzUyMywxMiBAQAogCXJldHVybiAwOwogfQogCi1NT0RVTEVfQUxJQVMoIm1wYzgzeHhfc3BpIik7CQkJLyogZm9yIHBsYXRmb3JtIGJ1cyBob3RwbHVnICovCitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOm1wYzgzeHhfc3BpIik7CiBzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtcGM4M3h4X3NwaV9kcml2ZXIgPSB7CiAJLnJlbW92ZSA9IF9fZXhpdF9wKG1wYzgzeHhfc3BpX3JlbW92ZSksCiAJLmRyaXZlciA9IHsKLQkJICAgLm5hbWUgPSAibXBjODN4eF9zcGkiLAorCQkubmFtZSA9ICJtcGM4M3h4X3NwaSIsCisJCS5vd25lciA9IFRISVNfTU9EVUxFLAogCX0sCiB9OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3NwaS9zcGlfczNjMjR4eC5jIGIvZHJpdmVycy9zcGkvc3BpX3MzYzI0eHguYwppbmRleCA2ZTgzNGI4Li5iNzQ3NmI4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3NwaS9zcGlfczNjMjR4eC5jCisrKyBiL2RyaXZlcnMvc3BpL3NwaV9zM2MyNHh4LmMKQEAgLTE5Miw4ICsxOTIsMTEgQEAKIAlody0+bGVuID0gdC0+bGVuOwogCWh3LT5jb3VudCA9IDA7CiAKKwlpbml0X2NvbXBsZXRpb24oJmh3LT5kb25lKTsKKwogCS8qIHNlbmQgdGhlIGZpcnN0IGJ5dGUgKi8KIAl3cml0ZWIoaHdfdHhieXRlKGh3LCAwKSwgaHctPnJlZ3MgKyBTM0MyNDEwX1NQVERBVCk7CisKIAl3YWl0X2Zvcl9jb21wbGV0aW9uKCZody0+ZG9uZSk7CiAKIAlyZXR1cm4gaHctPmNvdW50OwpAQCAtMjM1LDYgKzIzOCw3IEBACiAKIHN0YXRpYyBpbnQgX19pbml0IHMzYzI0eHhfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiB7CisJc3RydWN0IHMzYzI0MTBfc3BpX2luZm8gKnBkYXRhOwogCXN0cnVjdCBzM2MyNHh4X3NwaSAqaHc7CiAJc3RydWN0IHNwaV9tYXN0ZXIgKm1hc3RlcjsKIAlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKQEAgLTI1MSwxMCArMjU1LDEwIEBACiAJbWVtc2V0KGh3LCAwLCBzaXplb2Yoc3RydWN0IHMzYzI0eHhfc3BpKSk7CiAKIAlody0+bWFzdGVyID0gc3BpX21hc3Rlcl9nZXQobWFzdGVyKTsKLQlody0+cGRhdGEgPSBwZGV2LT5kZXYucGxhdGZvcm1fZGF0YTsKKwlody0+cGRhdGEgPSBwZGF0YSA9IHBkZXYtPmRldi5wbGF0Zm9ybV9kYXRhOwogCWh3LT5kZXYgPSAmcGRldi0+ZGV2OwogCi0JaWYgKGh3LT5wZGF0YSA9PSBOVUxMKSB7CisJaWYgKHBkYXRhID09IE5VTEwpIHsKIAkJZGV2X2VycigmcGRldi0+ZGV2LCAiTm8gcGxhdGZvcm0gZGF0YSBzdXBwbGllZFxuIik7CiAJCWVyciA9IC1FTk9FTlQ7CiAJCWdvdG8gZXJyX25vX3BkYXRhOwpAQCAtMjYzLDYgKzI2NywxMCBAQAogCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIGh3KTsKIAlpbml0X2NvbXBsZXRpb24oJmh3LT5kb25lKTsKIAorCS8qIHNldHVwIHRoZSBtYXN0ZXIgc3RhdGUuICovCisKKwltYXN0ZXItPm51bV9jaGlwc2VsZWN0ID0gaHctPnBkYXRhLT5udW1fY3M7CisKIAkvKiBzZXR1cCB0aGUgc3RhdGUgZm9yIHRoZSBiaXRiYW5nIGRyaXZlciAqLwogCiAJaHctPmJpdGJhbmcubWFzdGVyICAgICAgICAgPSBody0+bWFzdGVyOwpAQCAtMzMwLDEzICszMzgsMTMgQEAKIAogCS8qIHNldHVwIGFueSBncGlvIHdlIGNhbiAqLwogCi0JaWYgKCFody0+cGRhdGEtPnNldF9jcykgeworCWlmICghcGRhdGEtPnNldF9jcykgewogCQlody0+c2V0X2NzID0gczNjMjR4eF9zcGlfZ3Bpb2NzOwogCi0JCXMzYzI0MTBfZ3Bpb19zZXRwaW4oaHctPnBkYXRhLT5waW5fY3MsIDEpOwotCQlzM2MyNDEwX2dwaW9fY2ZncGluKGh3LT5wZGF0YS0+cGluX2NzLCBTM0MyNDEwX0dQSU9fT1VUUFVUKTsKKwkJczNjMjQxMF9ncGlvX3NldHBpbihwZGF0YS0+cGluX2NzLCAxKTsKKwkJczNjMjQxMF9ncGlvX2NmZ3BpbihwZGF0YS0+cGluX2NzLCBTM0MyNDEwX0dQSU9fT1VUUFVUKTsKIAl9IGVsc2UKLQkJaHctPnNldF9jcyA9IGh3LT5wZGF0YS0+c2V0X2NzOworCQlody0+c2V0X2NzID0gcGRhdGEtPnNldF9jczsKIAogCS8qIHJlZ2lzdGVyIG91ciBzcGkgY29udHJvbGxlciAqLwogCkBAIC00MTUsNyArNDIzLDcgQEAKICNkZWZpbmUgczNjMjR4eF9zcGlfcmVzdW1lICBOVUxMCiAjZW5kaWYKIAotTU9EVUxFX0FMSUFTKCJzM2MyNDEwX3NwaSIpOwkJCS8qIGZvciBwbGF0Zm9ybSBidXMgaG90cGx1ZyAqLworTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybTpzM2MyNDEwLXNwaSIpOwogc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgczNjMjR4eF9zcGlkcnYgPSB7CiAJLnJlbW92ZQkJPSBfX2V4aXRfcChzM2MyNHh4X3NwaV9yZW1vdmUpLAogCS5zdXNwZW5kCT0gczNjMjR4eF9zcGlfc3VzcGVuZCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3BpL3NwaV9zM2MyNHh4X2dwaW8uYyBiL2RyaXZlcnMvc3BpL3NwaV9zM2MyNHh4X2dwaW8uYwppbmRleCA4MmFlN2Q3Li5lMzNmNjE0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3NwaS9zcGlfczNjMjR4eF9ncGlvLmMKKysrIGIvZHJpdmVycy9zcGkvc3BpX3MzYzI0eHhfZ3Bpby5jCkBAIC0xNjgsNiArMTY4LDggQEAKICNkZWZpbmUgczNjMjQxMF9zcGlncGlvX3N1c3BlbmQgTlVMTAogI2RlZmluZSBzM2MyNDEwX3NwaWdwaW9fcmVzdW1lIE5VTEwKIAorLyogd29yayB3aXRoIGhvdHBsdWcgYW5kIGNvbGRwbHVnICovCitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOnNwaV9zM2MyNHh4X2dwaW8iKTsKIAogc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgczNjMjQxMF9zcGlncGlvX2RydiA9IHsKIAkucHJvYmUJCT0gczNjMjQxMF9zcGlncGlvX3Byb2JlLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zcGkvc3BpX3NoX3NjaS5jIGIvZHJpdmVycy9zcGkvc3BpX3NoX3NjaS5jCmluZGV4IDNkYmU3MWIuLjdkMzY3MjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3BpL3NwaV9zaF9zY2kuYworKysgYi9kcml2ZXJzL3NwaS9zcGlfc2hfc2NpLmMKQEAgLTIwMywzICsyMDMsNCBAQAogTU9EVUxFX0RFU0NSSVBUSU9OKCJTSCBTQ0kgU1BJIERyaXZlciIpOwogTU9EVUxFX0FVVEhPUigiTWFnbnVzIERhbW0gPGRhbW1Ab3BlbnNvdXJjZS5zZT4iKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06c3BpX3NoX3NjaSIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zcGkvc3BpX3R4eDkuYyBiL2RyaXZlcnMvc3BpL3NwaV90eHg5LmMKaW5kZXggMzYzYWM4ZS4uMjI5NmYzNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zcGkvc3BpX3R4eDkuYworKysgYi9kcml2ZXJzL3NwaS9zcGlfdHh4OS5jCkBAIC00NTAsNiArNDUwLDkgQEAKIAlyZXR1cm4gMDsKIH0KIAorLyogd29yayB3aXRoIGhvdHBsdWcgYW5kIGNvbGRwbHVnICovCitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOnNwaV90eHg5Iik7CisKIHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHR4eDlzcGlfZHJpdmVyID0gewogCS5yZW1vdmUgPSBfX2V4aXRfcCh0eHg5c3BpX3JlbW92ZSksCiAJLmRyaXZlciA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3BpL3hpbGlueF9zcGkuYyBiL2RyaXZlcnMvc3BpL3hpbGlueF9zcGkuYwppbmRleCA1ZDA0ZjUyLi5jZjZhZWYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3NwaS94aWxpbnhfc3BpLmMKKysrIGIvZHJpdmVycy9zcGkveGlsaW54X3NwaS5jCkBAIC00MDgsNiArNDA4LDkgQEAKIAlyZXR1cm4gMDsKIH0KIAorLyogd29yayB3aXRoIGhvdHBsdWcgYW5kIGNvbGRwbHVnICovCitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOiIgWElMSU5YX1NQSV9OQU1FKTsKKwogc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgeGlsaW54X3NwaV9kcml2ZXIgPSB7CiAJLnByb2JlCT0geGlsaW54X3NwaV9wcm9iZSwKIAkucmVtb3ZlCT0gX19kZXZleGl0X3AoeGlsaW54X3NwaV9yZW1vdmUpLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zc2IvZHJpdmVyX21pcHNjb3JlLmMgYi9kcml2ZXJzL3NzYi9kcml2ZXJfbWlwc2NvcmUuYwppbmRleCAzZDNkZDMyLi5hOWU3ZWI0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3NzYi9kcml2ZXJfbWlwc2NvcmUuYworKysgYi9kcml2ZXJzL3NzYi9kcml2ZXJfbWlwc2NvcmUuYwpAQCAtMTA5LDEyICsxMDksMTMgQEAKIAkJY2xlYXJfaXJxKGJ1cywgb2xkaXJxKTsKIAogCS8qIGFzc2lnbiB0aGUgbmV3IG9uZSAqLwotCWlmIChpcnEgPT0gMCkKLQkJc3NiX3dyaXRlMzIobWRldiwgU1NCX0lOVFZFQywgKCgxIDw8IGlycWZsYWcpICYgc3NiX3JlYWQzMihtZGV2LCBTU0JfSU5UVkVDKSkpOwotCi0JaXJxZmxhZyA8PD0gaXBzZmxhZ19pcnFfc2hpZnRbaXJxXTsKLQlpcnFmbGFnIHw9IChzc2JfcmVhZDMyKG1kZXYsIFNTQl9JUFNGTEFHKSAmIH5pcHNmbGFnX2lycV9tYXNrW2lycV0pOwotCXNzYl93cml0ZTMyKG1kZXYsIFNTQl9JUFNGTEFHLCBpcnFmbGFnKTsKKwlpZiAoaXJxID09IDApIHsKKwkJc3NiX3dyaXRlMzIobWRldiwgU1NCX0lOVFZFQywgKCgxIDw8IGlycWZsYWcpIHwgc3NiX3JlYWQzMihtZGV2LCBTU0JfSU5UVkVDKSkpOworCX0gZWxzZSB7CisJCWlycWZsYWcgPDw9IGlwc2ZsYWdfaXJxX3NoaWZ0W2lycV07CisJCWlycWZsYWcgfD0gKHNzYl9yZWFkMzIobWRldiwgU1NCX0lQU0ZMQUcpICYgfmlwc2ZsYWdfaXJxX21hc2tbaXJxXSk7CisJCXNzYl93cml0ZTMyKG1kZXYsIFNTQl9JUFNGTEFHLCBpcnFmbGFnKTsKKwl9CiB9CiAKIHN0YXRpYyB2b2lkIHNzYl9taXBzX3NlcmlhbF9pbml0KHN0cnVjdCBzc2JfbWlwc2NvcmUgKm1jb3JlKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zc2IvZHJpdmVyX3BjaWNvcmUuYyBiL2RyaXZlcnMvc3NiL2RyaXZlcl9wY2ljb3JlLmMKaW5kZXggNzRiOWE4YS4uNWQ3NzdmMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zc2IvZHJpdmVyX3BjaWNvcmUuYworKysgYi9kcml2ZXJzL3NzYi9kcml2ZXJfcGNpY29yZS5jCkBAIC01NTEsNyArNTUxLDcgQEAKIAkJfSBlbHNlIHsKIAkJCXRtcCA9IHNzYl9yZWFkMzIoZGV2LCBTU0JfVFBTRkxBRyk7CiAJCQl0bXAgJj0gU1NCX1RQU0ZMQUdfQlBGTEFHOwotCQkJaW50dmVjIHw9IHRtcDsKKwkJCWludHZlYyB8PSAoMSA8PCB0bXApOwogCQl9CiAJCXNzYl93cml0ZTMyKHBkZXYsIFNTQl9JTlRWRUMsIGludHZlYyk7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zc2IvbWFpbi5jIGIvZHJpdmVycy9zc2IvbWFpbi5jCmluZGV4IGJlZGIyYjQuLjgwMDNhOWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3NiL21haW4uYworKysgYi9kcml2ZXJzL3NzYi9tYWluLmMKQEAgLTQzNiwxNSArNDM2LDE4IEBACiAjaWZkZWYgQ09ORklHX1NTQl9QQ0lIT1NUCiAJCQlzZGV2LT5pcnEgPSBidXMtPmhvc3RfcGNpLT5pcnE7CiAJCQlkZXYtPnBhcmVudCA9ICZidXMtPmhvc3RfcGNpLT5kZXY7CisJCQlzZGV2LT5kbWFfZGV2ID0gJmJ1cy0+aG9zdF9wY2ktPmRldjsKICNlbmRpZgogCQkJYnJlYWs7CiAJCWNhc2UgU1NCX0JVU1RZUEVfUENNQ0lBOgogI2lmZGVmIENPTkZJR19TU0JfUENNQ0lBSE9TVAogCQkJc2Rldi0+aXJxID0gYnVzLT5ob3N0X3BjbWNpYS0+aXJxLkFzc2lnbmVkSVJROwogCQkJZGV2LT5wYXJlbnQgPSAmYnVzLT5ob3N0X3BjbWNpYS0+ZGV2OworCQkJc2Rldi0+ZG1hX2RldiA9ICZidXMtPmhvc3RfcGNtY2lhLT5kZXY7CiAjZW5kaWYKIAkJCWJyZWFrOwogCQljYXNlIFNTQl9CVVNUWVBFX1NTQjoKKwkJCXNkZXYtPmRtYV9kZXYgPSBkZXY7CiAJCQlicmVhazsKIAkJfQogCkBAIC0xMDE4LDE1ICsxMDIxLDE0IEBACiAKIGludCBzc2JfZG1hX3NldF9tYXNrKHN0cnVjdCBzc2JfZGV2aWNlICpzc2JfZGV2LCB1NjQgbWFzaykKIHsKLQlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBzc2JfZGV2LT5kZXY7CisJc3RydWN0IGRldmljZSAqZG1hX2RldiA9IHNzYl9kZXYtPmRtYV9kZXY7CiAKICNpZmRlZiBDT05GSUdfU1NCX1BDSUhPU1QKLQlpZiAoc3NiX2Rldi0+YnVzLT5idXN0eXBlID09IFNTQl9CVVNUWVBFX1BDSSAmJgotCSAgICAhZG1hX3N1cHBvcnRlZChkZXYsIG1hc2spKQotCQlyZXR1cm4gLUVJTzsKKwlpZiAoc3NiX2Rldi0+YnVzLT5idXN0eXBlID09IFNTQl9CVVNUWVBFX1BDSSkKKwkJcmV0dXJuIGRtYV9zZXRfbWFzayhkbWFfZGV2LCBtYXNrKTsKICNlbmRpZgotCWRldi0+Y29oZXJlbnRfZG1hX21hc2sgPSBtYXNrOwotCWRldi0+ZG1hX21hc2sgPSAmZGV2LT5jb2hlcmVudF9kbWFfbWFzazsKKwlkbWFfZGV2LT5jb2hlcmVudF9kbWFfbWFzayA9IG1hc2s7CisJZG1hX2Rldi0+ZG1hX21hc2sgPSAmZG1hX2Rldi0+Y29oZXJlbnRfZG1hX21hc2s7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTEwNDQsNiArMTA0NiwxMiBAQAogCQlnb3RvIG91dDsKIAogCWNjID0gJmJ1cy0+Y2hpcGNvOworCisJaWYgKCFjYy0+ZGV2KQorCQlnb3RvIG91dDsKKwlpZiAoY2MtPmRldi0+aWQucmV2aXNpb24gPCA1KQorCQlnb3RvIG91dDsKKwogCXNzYl9jaGlwY29fc2V0X2Nsb2NrbW9kZShjYywgU1NCX0NMS01PREVfU0xPVyk7CiAJZXJyID0gc3NiX3BjaV94dGFsKGJ1cywgU1NCX0dQSU9fWFRBTCB8IFNTQl9HUElPX1BMTCwgMCk7CiAJaWYgKGVycikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdGhlcm1hbC9LY29uZmlnIGIvZHJpdmVycy90aGVybWFsL0tjb25maWcKaW5kZXggNjlmMTlmMi4uMTdlNzFkNSAxMDA2NDQKLS0tIGEvZHJpdmVycy90aGVybWFsL0tjb25maWcKKysrIGIvZHJpdmVycy90aGVybWFsL0tjb25maWcKQEAgLTQsNyArNCw2IEBACiAKIG1lbnVjb25maWcgVEhFUk1BTAogCWJvb2wgIkdlbmVyaWMgVGhlcm1hbCBzeXNmcyBkcml2ZXIiCi0JZGVmYXVsdCB5CiAJaGVscAogCSAgR2VuZXJpYyBUaGVybWFsIFN5c2ZzIGRyaXZlciBvZmZlcnMgYSBnZW5lcmljIG1lY2hhbmlzbSBmb3IKIAkgIHRoZXJtYWwgbWFuYWdlbWVudC4gVXN1YWxseSBpdCdzIG1hZGUgdXAgb2Ygb25lIG9yIG1vcmUgdGhlcm1hbApkaWZmIC0tZ2l0IGEvZHJpdmVycy90aGVybWFsL3RoZXJtYWwuYyBiL2RyaXZlcnMvdGhlcm1hbC90aGVybWFsLmMKaW5kZXggOGI4NmU1My4uN2Y3OWJiZiAxMDA2NDQKLS0tIGEvZHJpdmVycy90aGVybWFsL3RoZXJtYWwuYworKysgYi9kcml2ZXJzL3RoZXJtYWwvdGhlcm1hbC5jCkBAIC0xOTYsNiArMTk2LDEwIEBACiAJX19BVFRSKHRyaXBfcG9pbnRfOF90ZW1wLCAwNDQ0LCB0cmlwX3BvaW50X3RlbXBfc2hvdywgTlVMTCksCiAJX19BVFRSKHRyaXBfcG9pbnRfOV90eXBlLCAwNDQ0LCB0cmlwX3BvaW50X3R5cGVfc2hvdywgTlVMTCksCiAJX19BVFRSKHRyaXBfcG9pbnRfOV90ZW1wLCAwNDQ0LCB0cmlwX3BvaW50X3RlbXBfc2hvdywgTlVMTCksCisJX19BVFRSKHRyaXBfcG9pbnRfMTBfdHlwZSwgMDQ0NCwgdHJpcF9wb2ludF90eXBlX3Nob3csIE5VTEwpLAorCV9fQVRUUih0cmlwX3BvaW50XzEwX3RlbXAsIDA0NDQsIHRyaXBfcG9pbnRfdGVtcF9zaG93LCBOVUxMKSwKKwlfX0FUVFIodHJpcF9wb2ludF8xMV90eXBlLCAwNDQ0LCB0cmlwX3BvaW50X3R5cGVfc2hvdywgTlVMTCksCisJX19BVFRSKHRyaXBfcG9pbnRfMTFfdGVtcCwgMDQ0NCwgdHJpcF9wb2ludF90ZW1wX3Nob3csIE5VTEwpLAogfTsKIAogI2RlZmluZSBUUklQX1BPSU5UX0FUVFJfQUREKF9kZXYsIF9pbmRleCwgcmVzdWx0KSAgICAgXApkaWZmIC0tZ2l0IGEvZHJpdmVycy91aW8vdWlvLmMgYi9kcml2ZXJzL3Vpby91aW8uYwppbmRleCBlOGEwMWYyLi4xMTc1OTA4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Vpby91aW8uYworKysgYi9kcml2ZXJzL3Vpby91aW8uYwpAQCAtNDcwLDYgKzQ3MCw4IEBACiAKIAl2bWEtPnZtX2ZsYWdzIHw9IFZNX0lPIHwgVk1fUkVTRVJWRUQ7CiAKKwl2bWEtPnZtX3BhZ2VfcHJvdCA9IHBncHJvdF9ub25jYWNoZWQodm1hLT52bV9wYWdlX3Byb3QpOworCiAJcmV0dXJuIHJlbWFwX3Bmbl9yYW5nZSh2bWEsCiAJCQkgICAgICAgdm1hLT52bV9zdGFydCwKIAkJCSAgICAgICBpZGV2LT5pbmZvLT5tZW1bbWldLmFkZHIgPj4gUEFHRV9TSElGVCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NvcmUvbWVzc2FnZS5jIGIvZHJpdmVycy91c2IvY29yZS9tZXNzYWdlLmMKaW5kZXggZmVmYjkyMi4uYzMxMWY2NyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvY29yZS9tZXNzYWdlLmMKKysrIGIvZHJpdmVycy91c2IvY29yZS9tZXNzYWdlLmMKQEAgLTEyMDYsNyArMTIwNiwxMCBAQAogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKLQlyZXQgPSB1c2JfY29udHJvbF9tc2coZGV2LCB1c2Jfc25kY3RybHBpcGUoZGV2LCAwKSwKKwlpZiAoZGV2LT5xdWlya3MgJiBVU0JfUVVJUktfTk9fU0VUX0lOVEYpCisJCXJldCA9IC1FUElQRTsKKwllbHNlCisJCXJldCA9IHVzYl9jb250cm9sX21zZyhkZXYsIHVzYl9zbmRjdHJscGlwZShkZXYsIDApLAogCQkJCSAgIFVTQl9SRVFfU0VUX0lOVEVSRkFDRSwgVVNCX1JFQ0lQX0lOVEVSRkFDRSwKIAkJCQkgICBhbHRlcm5hdGUsIGludGVyZmFjZSwgTlVMTCwgMCwgNTAwMCk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NvcmUvcXVpcmtzLmMgYi9kcml2ZXJzL3VzYi9jb3JlL3F1aXJrcy5jCmluZGV4IGQ5ZDFlYjEuLmRmYzU0MTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2NvcmUvcXVpcmtzLmMKKysrIGIvZHJpdmVycy91c2IvY29yZS9xdWlya3MuYwpAQCAtNTAsNiArNTAsOSBAQAogCS8qIE0tU3lzdGVtcyBGbGFzaCBEaXNrIFBpb25lZXJzICovCiAJeyBVU0JfREVWSUNFKDB4MDhlYywgMHgxMDAwKSwgLmRyaXZlcl9pbmZvID0gVVNCX1FVSVJLX1JFU0VUX1JFU1VNRSB9LAogCisJLyogWC1SaXRlL0dyZXRhZy1NYWNiZXRoIEV5ZS1PbmUgUHJvIGRpc3BsYXkgY29sb3JpbWV0ZXIgKi8KKwl7IFVTQl9ERVZJQ0UoMHgwOTcxLCAweDIwMDApLCAuZHJpdmVyX2luZm8gPSBVU0JfUVVJUktfTk9fU0VUX0lOVEYgfSwKKwogCS8qIEFjdGlvbiBTZW1pY29uZHVjdG9yIGZsYXNoIGRpc2sgKi8KIAl7IFVTQl9ERVZJQ0UoMHgxMGQ2LCAweDIyMDApLCAuZHJpdmVyX2luZm8gPQogCQkJVVNCX1FVSVJLX1NUUklOR19GRVRDSF8yNTUgfSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9hdDkxX3VkYy5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2F0OTFfdWRjLmMKaW5kZXggYTgzZThiNy4uZmQxNWNlZCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2F0OTFfdWRjLmMKKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2F0OTFfdWRjLmMKQEAgLTE4ODQsMyArMTg4NCw0IEBACiBNT0RVTEVfREVTQ1JJUFRJT04oIkFUOTEgdWRjIGRyaXZlciIpOwogTU9EVUxFX0FVVEhPUigiVGhvbWFzIFJhdGhib25lLCBEYXZpZCBCcm93bmVsbCIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybTphdDkxX3VkYyIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2F0bWVsX3VzYmFfdWRjLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvYXRtZWxfdXNiYV91ZGMuYwppbmRleCBhZjhiMmEzLi5iMGRiNGMzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvYXRtZWxfdXNiYV91ZGMuYworKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvYXRtZWxfdXNiYV91ZGMuYwpAQCAtMjA1NCw2ICsyMDU0LDcgQEAKIAkucmVtb3ZlCQk9IF9fZXhpdF9wKHVzYmFfdWRjX3JlbW92ZSksCiAJLmRyaXZlcgkJPSB7CiAJCS5uYW1lCQk9ICJhdG1lbF91c2JhX3VkYyIsCisJCS5vd25lcgkJPSBUSElTX01PRFVMRSwKIAl9LAogfTsKIApAQCAtMjA3MiwzICsyMDczLDQgQEAKIE1PRFVMRV9ERVNDUklQVElPTigiQXRtZWwgVVNCQSBVREMgZHJpdmVyIik7CiBNT0RVTEVfQVVUSE9SKCJIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4iKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06YXRtZWxfdXNiYV91ZGMiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mc2xfdXNiMl91ZGMuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mc2xfdXNiMl91ZGMuYwppbmRleCA2M2U4ZmEzLi4yNTQwMTJhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnNsX3VzYjJfdWRjLmMKKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2ZzbF91c2IyX3VkYy5jCkBAIC0yNDc1LDMgKzI0NzUsNCBAQAogTU9EVUxFX0RFU0NSSVBUSU9OKERSSVZFUl9ERVNDKTsKIE1PRFVMRV9BVVRIT1IoRFJJVkVSX0FVVEhPUik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOmZzbC11c2IyLXVkYyIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2lub2RlLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvaW5vZGUuYwppbmRleCA4MDU2MDJhLi4wYTZmZWFmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvaW5vZGUuYworKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvaW5vZGUuYwpAQCAtMTQ1OCw3ICsxNDU4LDcgQEAKIAkvKiBjdXJyZW50bHkgb25lIGNvbmZpZywgdHdvIHNwZWVkcyAqLwogCWNhc2UgVVNCX1JFUV9TRVRfQ09ORklHVVJBVElPTjoKIAkJaWYgKGN0cmwtPmJSZXF1ZXN0VHlwZSAhPSAwKQotCQkJYnJlYWs7CisJCQlnb3RvIHVucmVjb2duaXplZDsKIAkJaWYgKDAgPT0gKHU4KSB3X3ZhbHVlKSB7CiAJCQl2YWx1ZSA9IDA7CiAJCQlkZXYtPmN1cnJlbnRfY29uZmlnID0gMDsKQEAgLTE1MDUsNyArMTUwNSw3IEBACiAJLyogUFhBIGF1dG9tYWdpY2FsbHkgaGFuZGxlcyB0aGlzIHJlcXVlc3QgdG9vICovCiAJY2FzZSBVU0JfUkVRX0dFVF9DT05GSUdVUkFUSU9OOgogCQlpZiAoY3RybC0+YlJlcXVlc3RUeXBlICE9IDB4ODApCi0JCQlicmVhazsKKwkJCWdvdG8gdW5yZWNvZ25pemVkOwogCQkqKHU4ICopcmVxLT5idWYgPSBkZXYtPmN1cnJlbnRfY29uZmlnOwogCQl2YWx1ZSA9IG1pbiAod19sZW5ndGgsICh1MTYpIDEpOwogCQlicmVhazsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9saDdhNDB4X3VkYy5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2xoN2E0MHhfdWRjLmMKaW5kZXggMzcyNDNlZi4uMDc4ZjcyNCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2xoN2E0MHhfdWRjLmMKKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2xoN2E0MHhfdWRjLmMKQEAgLTIxNDYsMyArMjE0Niw0IEBACiBNT0RVTEVfREVTQ1JJUFRJT04oRFJJVkVSX0RFU0MpOwogTU9EVUxFX0FVVEhPUigiTWlra28gTGFodGVlbm1ha2ksIEJvIEhlbnJpa3NlbiIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybTpsaDdhNDB4X3VkYyIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L202NjU5Mi11ZGMuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9tNjY1OTItdWRjLmMKaW5kZXggODM1OTQ4Zi4uZWU2YjM1ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L202NjU5Mi11ZGMuYworKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvbTY2NTkyLXVkYy5jCkBAIC0zNSw2ICszNSw3IEBACiBNT0RVTEVfREVTQ1JJUFRJT04oIk02NjU5MiBVU0IgZ2FkZ2V0IGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwogTU9EVUxFX0FVVEhPUigiWW9zaGloaXJvIFNoaW1vZGEiKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06bTY2NTkyX3VkYyIpOwogCiAjZGVmaW5lIERSSVZFUl9WRVJTSU9OCSIxOCBPY3QgMjAwNyIKIApAQCAtMTY3MSw2ICsxNjcyLDcgQEAKIAkucmVtb3ZlID0JX19leGl0X3AobTY2NTkyX3JlbW92ZSksCiAJLmRyaXZlcgkJPSB7CiAJCS5uYW1lID0JKGNoYXIgKikgdWRjX25hbWUsCisJCS5vd25lcgk9IFRISVNfTU9EVUxFLAogCX0sCiB9OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvb21hcF91ZGMuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9vbWFwX3VkYy5jCmluZGV4IGU2ZDY4YmQuLmVlMWU5YTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9vbWFwX3VkYy5jCisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9vbWFwX3VkYy5jCkBAIC0zMTA5LDQgKzMxMDksNCBAQAogCiBNT0RVTEVfREVTQ1JJUFRJT04oRFJJVkVSX0RFU0MpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOm9tYXBfdWRjIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvcHhhMnh4X3VkYy5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L3B4YTJ4eF91ZGMuYwppbmRleCAwOTZjNDFjLi5jMDBjZDhiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvcHhhMnh4X3VkYy5jCisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9weGEyeHhfdWRjLmMKQEAgLTIzODAsNCArMjM4MCw0IEBACiBNT0RVTEVfREVTQ1JJUFRJT04oRFJJVkVSX0RFU0MpOwogTU9EVUxFX0FVVEhPUigiRnJhbmsgQmVja2VyLCBSb2JlcnQgU2Nod2ViZWwsIERhdmlkIEJyb3duZWxsIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KK01PRFVMRV9BTElBUygicGxhdGZvcm06cHhhMnh4LXVkYyIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L3MzYzI0MTBfdWRjLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvczNjMjQxMF91ZGMuYwppbmRleCBhYWRjNDIwLi42YjFlZjQ4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvczNjMjQxMF91ZGMuYworKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvczNjMjQxMF91ZGMuYwpAQCAtMjA0NywzICsyMDQ3LDUgQEAKIE1PRFVMRV9ERVNDUklQVElPTihEUklWRVJfREVTQyk7CiBNT0RVTEVfVkVSU0lPTihEUklWRVJfVkVSU0lPTik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOnMzYzI0MTAtdXNiZ2FkZ2V0Iik7CitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOnMzYzI0NDAtdXNiZ2FkZ2V0Iik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L2VoY2ktaHViLmMgYi9kcml2ZXJzL3VzYi9ob3N0L2VoY2ktaHViLmMKaW5kZXggNDBlODI0MC4uNGUwNjVlNSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvaG9zdC9laGNpLWh1Yi5jCisrKyBiL2RyaXZlcnMvdXNiL2hvc3QvZWhjaS1odWIuYwpAQCAtMTM1LDggKzEzNSw2IEBACiAJCWhjZC0+c3RhdGUgPSBIQ19TVEFURV9RVUlFU0NJTkc7CiAJfQogCWVoY2ktPmNvbW1hbmQgPSBlaGNpX3JlYWRsKGVoY2ksICZlaGNpLT5yZWdzLT5jb21tYW5kKTsKLQlpZiAoZWhjaS0+cmVjbGFpbSkKLQkJZW5kX3VubGlua19hc3luYyhlaGNpKTsKIAllaGNpX3dvcmsoZWhjaSk7CiAKIAkvKiBVbmxpa2Ugb3RoZXIgVVNCIGhvc3QgY29udHJvbGxlciB0eXBlcywgRUhDSSBkb2Vzbid0IGhhdmUKQEAgLTE4MCw2ICsxNzgsOSBAQAogCWVoY2lfaGFsdCAoZWhjaSk7CiAJaGNkLT5zdGF0ZSA9IEhDX1NUQVRFX1NVU1BFTkRFRDsKIAorCWlmIChlaGNpLT5yZWNsYWltKQorCQllbmRfdW5saW5rX2FzeW5jKGVoY2kpOworCiAJLyogYWxsb3cgcmVtb3RlIHdha2V1cCAqLwogCW1hc2sgPSBJTlRSX01BU0s7CiAJaWYgKCFkZXZpY2VfbWF5X3dha2V1cCgmaGNkLT5zZWxmLnJvb3RfaHViLT5kZXYpKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvaG9zdC9laGNpLXBjaS5jIGIvZHJpdmVycy91c2IvaG9zdC9laGNpLXBjaS5jCmluZGV4IDNiYTAxNjYuLjcyY2NkNTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3QvZWhjaS1wY2kuYworKysgYi9kcml2ZXJzL3VzYi9ob3N0L2VoY2ktcGNpLmMKQEAgLTE1Miw2ICsxNTIsMjAgQEAKIAkJCWJyZWFrOwogCQl9CiAJCWJyZWFrOworCWNhc2UgUENJX1ZFTkRPUl9JRF9WSUE6CisJCWlmIChwZGV2LT5kZXZpY2UgPT0gMHgzMTA0ICYmIChwZGV2LT5yZXZpc2lvbiAmIDB4ZjApID09IDB4NjApIHsKKwkJCXU4IHRtcDsKKworCQkJLyogVGhlIFZUNjIxMiBkZWZhdWx0cyB0byBhIDEgdXNlYyBFSENJIHNsZWVwIHRpbWUgd2hpY2gKKwkJCSAqIGhvZ3MgdGhlIFBDSSBidXMgKmJhZGx5Ki4gU2V0dGluZyBiaXQgNSBvZiAweDRCIG1ha2VzCisJCQkgKiB0aGF0IHNsZWVwIHRpbWUgdXNlIHRoZSBjb252ZW50aW9uYWwgMTAgdXNlYy4KKwkJCSAqLworCQkJcGNpX3JlYWRfY29uZmlnX2J5dGUocGRldiwgMHg0YiwgJnRtcCk7CisJCQlpZiAodG1wICYgMHgyMCkKKwkJCQlicmVhazsKKwkJCXBjaV93cml0ZV9jb25maWdfYnl0ZShwZGV2LCAweDRiLCB0bXAgfCAweDIwKTsKKwkJfQorCQlicmVhazsKIAl9CiAKIAllaGNpX3Jlc2V0KGVoY2kpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvaG9zdC9pc3AxMTZ4LWhjZC5jIGIvZHJpdmVycy91c2IvaG9zdC9pc3AxMTZ4LWhjZC5jCmluZGV4IGQ3MDcxYzguLjIwM2EzMzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3QvaXNwMTE2eC1oY2QuYworKysgYi9kcml2ZXJzL3VzYi9ob3N0L2lzcDExNngtaGNkLmMKQEAgLTE2ODQsMTQgKzE2ODQsMTggQEAKIAogI2VuZGlmCiAKKy8qIHdvcmsgd2l0aCBob3RwbHVnIGFuZCBjb2xkcGx1ZyAqLworTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybTppc3AxMTZ4LWhjZCIpOworCiBzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBpc3AxMTZ4X2RyaXZlciA9IHsKIAkucHJvYmUgPSBpc3AxMTZ4X3Byb2JlLAogCS5yZW1vdmUgPSBpc3AxMTZ4X3JlbW92ZSwKIAkuc3VzcGVuZCA9IGlzcDExNnhfc3VzcGVuZCwKIAkucmVzdW1lID0gaXNwMTE2eF9yZXN1bWUsCiAJLmRyaXZlciA9IHsKLQkJICAgLm5hbWUgPSAoY2hhciAqKWhjZF9uYW1lLAotCQkgICB9LAorCQkubmFtZSA9IChjaGFyICopaGNkX25hbWUsCisJCS5vd25lcgk9IFRISVNfTU9EVUxFLAorCX0sCiB9OwogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3Qvb2hjaS1hdDkxLmMgYi9kcml2ZXJzL3VzYi9ob3N0L29oY2ktYXQ5MS5jCmluZGV4IDEyNmZjYmQuLmQ3MmRjMDcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3Qvb2hjaS1hdDkxLmMKKysrIGIvZHJpdmVycy91c2IvaG9zdC9vaGNpLWF0OTEuYwpAQCAtMzU1LDcgKzM1NSw3IEBACiAjZGVmaW5lIG9oY2lfaGNkX2F0OTFfZHJ2X3Jlc3VtZSAgTlVMTAogI2VuZGlmCiAKLU1PRFVMRV9BTElBUygiYXQ5MV9vaGNpIik7CitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOmF0OTFfb2hjaSIpOwogCiBzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBvaGNpX2hjZF9hdDkxX2RyaXZlciA9IHsKIAkucHJvYmUJCT0gb2hjaV9oY2RfYXQ5MV9kcnZfcHJvYmUsCkBAIC0zNjgsNCArMzY4LDMgQEAKIAkJLm93bmVyCT0gVEhJU19NT0RVTEUsCiAJfSwKIH07Ci0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3Qvb2hjaS1hdTF4eHguYyBiL2RyaXZlcnMvdXNiL2hvc3Qvb2hjaS1hdTF4eHguYwppbmRleCA2NjNhMDYwLi5mOTBmZTBjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9ob3N0L29oY2ktYXUxeHh4LmMKKysrIGIvZHJpdmVycy91c2IvaG9zdC9vaGNpLWF1MXh4eC5jCkBAIC0zNDUsMyArMzQ1LDQgQEAKIAl9LAogfTsKIAorTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybTphdTF4eHgtb2hjaSIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvaG9zdC9vaGNpLWVwOTN4eC5jIGIvZHJpdmVycy91c2IvaG9zdC9vaGNpLWVwOTN4eC5jCmluZGV4IGE2OGNlOWQuLjE1NmU5M2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3Qvb2hjaS1lcDkzeHguYworKysgYi9kcml2ZXJzL3VzYi9ob3N0L29oY2ktZXA5M3h4LmMKQEAgLTIxMSw2ICsyMTEsOCBAQAogI2VuZGlmCiAJLmRyaXZlcgkJPSB7CiAJCS5uYW1lCT0gImVwOTN4eC1vaGNpIiwKKwkJLm93bmVyCT0gVEhJU19NT0RVTEUsCiAJfSwKIH07CiAKK01PRFVMRV9BTElBUygicGxhdGZvcm06ZXA5M3h4LW9oY2kiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3Qvb2hjaS1oY2QuYyBiL2RyaXZlcnMvdXNiL2hvc3Qvb2hjaS1oY2QuYwppbmRleCBkZDQ3OThlLi4zM2YxYzFjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9ob3N0L29oY2ktaGNkLmMKKysrIGIvZHJpdmVycy91c2IvaG9zdC9vaGNpLWhjZC5jCkBAIC00NjcsNyArNDY3LDcgQEAKIG91dDoKIAlrZnJlZShzZWVuKTsKIAlpZiAob2hjaS0+ZWRzX3NjaGVkdWxlZCkKLQkJbW9kX3RpbWVyKCZvaGNpLT51bmxpbmtfd2F0Y2hkb2csIHJvdW5kX2ppZmZpZXNfcmVsYXRpdmUoSFopKTsKKwkJbW9kX3RpbWVyKCZvaGNpLT51bmxpbmtfd2F0Y2hkb2csIHJvdW5kX2ppZmZpZXMoamlmZmllcyArIEhaKSk7CiBkb25lOgogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJm9oY2ktPmxvY2ssIGZsYWdzKTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3Qvb2hjaS1saDdhNDA0LmMgYi9kcml2ZXJzL3VzYi9ob3N0L29oY2ktbGg3YTQwNC5jCmluZGV4IDRhMDQzYWIuLjEzYzEyZWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3Qvb2hjaS1saDdhNDA0LmMKKysrIGIvZHJpdmVycy91c2IvaG9zdC9vaGNpLWxoN2E0MDQuYwpAQCAtMjUxLDMgKzI1MSw0IEBACiAJfSwKIH07CiAKK01PRFVMRV9BTElBUygicGxhdGZvcm06bGg3YTQwNC1vaGNpIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L29oY2ktb21hcC5jIGIvZHJpdmVycy91c2IvaG9zdC9vaGNpLW9tYXAuYwppbmRleCA3NGUxZjRiLi43YmZjYTFlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9ob3N0L29oY2ktb21hcC5jCisrKyBiL2RyaXZlcnMvdXNiL2hvc3Qvb2hjaS1vbWFwLmMKQEAgLTU0NCwzICs1NDQsNCBAQAogCX0sCiB9OwogCitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOm9oY2kiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3Qvb2hjaS1wbng0MDA4LmMgYi9kcml2ZXJzL3VzYi9ob3N0L29oY2ktcG54NDAwOC5jCmluZGV4IDZjNTJjNjYuLjI4YjQ1OGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3Qvb2hjaS1wbng0MDA4LmMKKysrIGIvZHJpdmVycy91c2IvaG9zdC9vaGNpLXBueDQwMDguYwpAQCAtNDU2LDkgKzQ1NiwxMyBAQAogCXJldHVybiAwOwogfQogCisvKiB3b3JrIHdpdGggaG90cGx1ZyBhbmQgY29sZHBsdWcgKi8KK01PRFVMRV9BTElBUygicGxhdGZvcm06dXNiLW9oY2kiKTsKKwogc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgdXNiX2hjZF9wbng0MDA4X2RyaXZlciA9IHsKIAkuZHJpdmVyID0gewogCQkubmFtZSA9ICJ1c2Itb2hjaSIsCisJCS5vd25lcgk9IFRISVNfTU9EVUxFLAogCX0sCiAJLnByb2JlID0gdXNiX2hjZF9wbng0MDA4X3Byb2JlLAogCS5yZW1vdmUgPSB1c2JfaGNkX3BueDQwMDhfcmVtb3ZlLApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvaG9zdC9vaGNpLXBueDg1NTAuYyBiL2RyaXZlcnMvdXNiL2hvc3Qvb2hjaS1wbng4NTUwLmMKaW5kZXggODVmZGZkMi4uNjA1ZDU5YyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvaG9zdC9vaGNpLXBueDg1NTAuYworKysgYi9kcml2ZXJzL3VzYi9ob3N0L29oY2ktcG54ODU1MC5jCkBAIC0yMzAsMTEgKzIzMCwxMiBAQAogCXJldHVybiAwOwogfQogCi1NT0RVTEVfQUxJQVMoInBueDg1NTAtb2hjaSIpOworTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybTpwbng4NTUwLW9oY2kiKTsKIAogc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgb2hjaV9oY2RfcG54ODU1MF9kcml2ZXIgPSB7CiAJLmRyaXZlciA9IHsKLQkJLm5hbWUJCT0gInBueDg1NTAtb2hjaSIsCisJCS5uYW1lCT0gInBueDg1NTAtb2hjaSIsCisJCS5vd25lcgk9IFRISVNfTU9EVUxFLAogCX0sCiAJLnByb2JlCQk9IG9oY2lfaGNkX3BueDg1NTBfZHJ2X3Byb2JlLAogCS5yZW1vdmUJCT0gb2hjaV9oY2RfcG54ODU1MF9kcnZfcmVtb3ZlLApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvaG9zdC9vaGNpLXBwYy1zb2MuYyBiL2RyaXZlcnMvdXNiL2hvc3Qvb2hjaS1wcGMtc29jLmMKaW5kZXggZjk1YmUxODkuLjUyM2MzMDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3Qvb2hjaS1wcGMtc29jLmMKKysrIGIvZHJpdmVycy91c2IvaG9zdC9vaGNpLXBwYy1zb2MuYwpAQCAtMjEzLDMgKzIxMyw0IEBACiAJfSwKIH07CiAKK01PRFVMRV9BTElBUygicGxhdGZvcm06cHBjLXNvYy1vaGNpIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L29oY2ktcHhhMjd4LmMgYi9kcml2ZXJzL3VzYi9ob3N0L29oY2ktcHhhMjd4LmMKaW5kZXggZmY5YTc5OC4uOGFkOWIzYiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvaG9zdC9vaGNpLXB4YTI3eC5jCisrKyBiL2RyaXZlcnMvdXNiL2hvc3Qvb2hjaS1weGEyN3guYwpAQCAtMzY0LDYgKzM2NCw4IEBACiB9CiAjZW5kaWYKIAorLyogd29yayB3aXRoIGhvdHBsdWcgYW5kIGNvbGRwbHVnICovCitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOnB4YTI3eC1vaGNpIik7CiAKIHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG9oY2lfaGNkX3B4YTI3eF9kcml2ZXIgPSB7CiAJLnByb2JlCQk9IG9oY2lfaGNkX3B4YTI3eF9kcnZfcHJvYmUsCkBAIC0zNzUsNiArMzc3LDcgQEAKICNlbmRpZgogCS5kcml2ZXIJCT0gewogCQkubmFtZQk9ICJweGEyN3gtb2hjaSIsCisJCS5vd25lcgk9IFRISVNfTU9EVUxFLAogCX0sCiB9OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L29oY2ktcS5jIGIvZHJpdmVycy91c2IvaG9zdC9vaGNpLXEuYwppbmRleCA1MTgxNzMyLi45YzlmM2I1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9ob3N0L29oY2ktcS5jCisrKyBiL2RyaXZlcnMvdXNiL2hvc3Qvb2hjaS1xLmMKQEAgLTE2OSw3ICsxNjksNyBAQAogCWlmIChxdWlya196Zm1pY3JvKG9oY2kpCiAJCQkmJiAoZWQtPnR5cGUgPT0gUElQRV9JTlRFUlJVUFQpCiAJCQkmJiAhKG9oY2ktPmVkc19zY2hlZHVsZWQrKykpCi0JCW1vZF90aW1lcigmb2hjaS0+dW5saW5rX3dhdGNoZG9nLCByb3VuZF9qaWZmaWVzX3JlbGF0aXZlKEhaKSk7CisJCW1vZF90aW1lcigmb2hjaS0+dW5saW5rX3dhdGNoZG9nLCByb3VuZF9qaWZmaWVzKGppZmZpZXMgKyBIWikpOwogCXdtYiAoKTsKIAogCS8qIHdlIGNhcmUgYWJvdXQgcm1fbGlzdCB3aGVuIHNldHRpbmcgQ0xFL0JMRSBpbiBjYXNlIHRoZSBIQyB3YXMgYXQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3Qvb2hjaS1zM2MyNDEwLmMgYi9kcml2ZXJzL3VzYi9ob3N0L29oY2ktczNjMjQxMC5jCmluZGV4IDQ0Yjc5ZTguLmVhZDQ3NzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3Qvb2hjaS1zM2MyNDEwLmMKKysrIGIvZHJpdmVycy91c2IvaG9zdC9vaGNpLXMzYzI0MTAuYwpAQCAtNTAxLDMgKzUwMSw0IEBACiAJfSwKIH07CiAKK01PRFVMRV9BTElBUygicGxhdGZvcm06czNjMjQxMC1vaGNpIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L29oY2ktc2guYyBiL2RyaXZlcnMvdXNiL2hvc3Qvb2hjaS1zaC5jCmluZGV4IDUzMDlhYzAuLmU3ZWU2MDcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3Qvb2hjaS1zaC5jCisrKyBiL2RyaXZlcnMvdXNiL2hvc3Qvb2hjaS1zaC5jCkBAIC0xNDEsMyArMTQxLDQgQEAKIAl9LAogfTsKIAorTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybTpzaF9vaGNpIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L29oY2ktc201MDEuYyBiL2RyaXZlcnMvdXNiL2hvc3Qvb2hjaS1zbTUwMS5jCmluZGV4IGE5NzA3MDEuLjRlYTkyNzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3Qvb2hjaS1zbTUwMS5jCisrKyBiL2RyaXZlcnMvdXNiL2hvc3Qvb2hjaS1zbTUwMS5jCkBAIC0yNjIsMyArMjYyLDQgQEAKIAkJLm5hbWUJPSAic201MDEtdXNiIiwKIAl9LAogfTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06c201MDEtdXNiIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L3I4YTY2NTk3LWhjZC5jIGIvZHJpdmVycy91c2IvaG9zdC9yOGE2NjU5Ny1oY2QuYwppbmRleCAwY2UyZmM1Li45ZjgwZTUyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9ob3N0L3I4YTY2NTk3LWhjZC5jCisrKyBiL2RyaXZlcnMvdXNiL2hvc3QvcjhhNjY1OTctaGNkLmMKQEAgLTQ0LDYgKzQ0LDcgQEAKIE1PRFVMRV9ERVNDUklQVElPTigiUjhBNjY1OTcgVVNCIEhvc3QgQ29udHJvbGxlciBEcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKIE1PRFVMRV9BVVRIT1IoIllvc2hpaGlybyBTaGltb2RhIik7CitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOnI4YTY2NTk3X2hjZCIpOwogCiAjZGVmaW5lIERSSVZFUl9WRVJTSU9OCSIyOSBNYXkgMjAwNyIKIApAQCAtMjIxOSw2ICsyMjIwLDcgQEAKIAkucmVzdW1lID0JcjhhNjY1OTdfcmVzdW1lLAogCS5kcml2ZXIJCT0gewogCQkubmFtZSA9IChjaGFyICopIGhjZF9uYW1lLAorCQkub3duZXIJPSBUSElTX01PRFVMRSwKIAl9LAogfTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvaG9zdC9zbDgxMS1oY2QuYyBiL2RyaXZlcnMvdXNiL2hvc3Qvc2w4MTEtaGNkLmMKaW5kZXggNTliZTI3Ni4uNjI5YmNhMCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvaG9zdC9zbDgxMS1oY2QuYworKysgYi9kcml2ZXJzL3VzYi9ob3N0L3NsODExLWhjZC5jCkBAIC01OCw2ICs1OCw3IEBACiAKIE1PRFVMRV9ERVNDUklQVElPTigiU0w4MTFIUyBVU0IgSG9zdCBDb250cm9sbGVyIERyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybTpzbDgxMS1oY2QiKTsKIAogI2RlZmluZSBEUklWRVJfVkVSU0lPTgkiMTkgTWF5IDIwMDUiCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3QvdTEzMi1oY2QuYyBiL2RyaXZlcnMvdXNiL2hvc3QvdTEzMi1oY2QuYwppbmRleCAzMDMzZDY5Li44ZTExN2E3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9ob3N0L3UxMzItaGNkLmMKKysrIGIvZHJpdmVycy91c2IvaG9zdC91MTMyLWhjZC5jCkBAIC0zMzE2LDMgKzMzMTYsNCBAQAogCiBtb2R1bGVfZXhpdCh1MTMyX2hjZF9leGl0KTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06dTEzMl9oY2QiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL21pc2MvdXNidGVzdC5jIGIvZHJpdmVycy91c2IvbWlzYy91c2J0ZXN0LmMKaW5kZXggZGE5MjJkZi4uYjZiNWIyYSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvbWlzYy91c2J0ZXN0LmMKKysrIGIvZHJpdmVycy91c2IvbWlzYy91c2J0ZXN0LmMKQEAgLTM3OCw2ICszNzgsNyBAQAogCXNnID0ga21hbGxvYyAobmVudHMgKiBzaXplb2YgKnNnLCBHRlBfS0VSTkVMKTsKIAlpZiAoIXNnKQogCQlyZXR1cm4gTlVMTDsKKwlzZ19pbml0X3RhYmxlKHNnLCBuZW50cyk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgbmVudHM7IGkrKykgewogCQljaGFyCQkqYnVmOwpAQCAtMzkwLDcgKzM5MSw3IEBACiAJCX0KIAogCQkvKiBrbWFsbG9jIHBhZ2VzIGFyZSBhbHdheXMgcGh5c2ljYWxseSBjb250aWd1b3VzISAqLwotCQlzZ19pbml0X29uZSgmc2dbaV0sIGJ1Ziwgc2l6ZSk7CisJCXNnX3NldF9idWYoJnNnW2ldLCBidWYsIHNpemUpOwogCiAJCXN3aXRjaCAocGF0dGVybikgewogCQljYXNlIDA6CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvY3AyMTAxLmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvY3AyMTAxLmMKaW5kZXggZjNjYTY2MC4uMzI0YmI2MSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL2NwMjEwMS5jCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9jcDIxMDEuYwpAQCAtNzUsNiArNzUsNyBAQAogCXsgVVNCX0RFVklDRSgweDEwQzQsIDB4ODFFMikgfSwgLyogTGlwb3dza3kgSW5kdXN0cmllIEVsZWt0cm9uaWsgR21iSCwgQmFieS1MSU4gKi8KIAl7IFVTQl9ERVZJQ0UoMHgxMEM0LCAweDgxRTcpIH0sIC8qIEFlcm9jb21tIFJhZGlvICovCiAJeyBVU0JfREVWSUNFKDB4MTBDNCwgMHg4MjE4KSB9LCAvKiBMaXBvd3NreSBJbmR1c3RyaWUgRWxla3Ryb25payBHbWJILCBIQVJQLTEgKi8KKwl7IFVTQl9ERVZJQ0UoMHgxMGM0LCAweDgyOTMpIH0sIC8qIFRlbGVnZXN5cyBFVFJYMlVTQiAqLwogCXsgVVNCX0RFVklDRSgweDEwQzQsIDB4RUE2MCkgfSwgLyogU2lsaWNvbiBMYWJzIGZhY3RvcnkgZGVmYXVsdCAqLwogCXsgVVNCX0RFVklDRSgweDEwQzQsIDB4RUE2MSkgfSwgLyogU2lsaWNvbiBMYWJzIGZhY3RvcnkgZGVmYXVsdCAqLwogCXsgVVNCX0RFVklDRSgweDEwQzQsIDB4RjAwMSkgfSwgLyogRWxhbiBEaWdpdGFsIFN5c3RlbXMgVVNCc2NvcGU1MCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW4uaCBiL2RyaXZlcnMvdXNiL3NlcmlhbC9rZXlzcGFuLmgKaW5kZXggOGEwZDE3NC4uNzRjZThiYyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW4uaAorKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwva2V5c3Bhbi5oCkBAIC02MzcsNiArNjM3LDcgQEAKIAkuZGVzY3JpcHRpb24JCT0gIktleXNwYW4gLSAod2l0aG91dCBmaXJtd2FyZSkiLAogCS5pZF90YWJsZQkJPSBrZXlzcGFuX3ByZV9pZHMsCiAJLm51bV9pbnRlcnJ1cHRfaW4JPSBOVU1fRE9OVF9DQVJFLAorCS5udW1faW50ZXJydXB0X291dAk9IE5VTV9ET05UX0NBUkUsCiAJLm51bV9idWxrX2luCQk9IE5VTV9ET05UX0NBUkUsCiAJLm51bV9idWxrX291dAkJPSBOVU1fRE9OVF9DQVJFLAogCS5udW1fcG9ydHMJCT0gMSwKQEAgLTY1MSw2ICs2NTIsNyBAQAogCS5kZXNjcmlwdGlvbgkJPSAiS2V5c3BhbiAxIHBvcnQgYWRhcHRlciIsCiAJLmlkX3RhYmxlCQk9IGtleXNwYW5fMXBvcnRfaWRzLAogCS5udW1faW50ZXJydXB0X2luCT0gTlVNX0RPTlRfQ0FSRSwKKwkubnVtX2ludGVycnVwdF9vdXQJPSBOVU1fRE9OVF9DQVJFLAogCS5udW1fYnVsa19pbgkJPSBOVU1fRE9OVF9DQVJFLAogCS5udW1fYnVsa19vdXQJCT0gTlVNX0RPTlRfQ0FSRSwKIAkubnVtX3BvcnRzCQk9IDEsCkBAIC02NzgsNiArNjgwLDcgQEAKIAkuZGVzY3JpcHRpb24JCT0gIktleXNwYW4gMiBwb3J0IGFkYXB0ZXIiLAogCS5pZF90YWJsZQkJPSBrZXlzcGFuXzJwb3J0X2lkcywKIAkubnVtX2ludGVycnVwdF9pbgk9IE5VTV9ET05UX0NBUkUsCisJLm51bV9pbnRlcnJ1cHRfb3V0CT0gTlVNX0RPTlRfQ0FSRSwKIAkubnVtX2J1bGtfaW4JCT0gTlVNX0RPTlRfQ0FSRSwKIAkubnVtX2J1bGtfb3V0CQk9IE5VTV9ET05UX0NBUkUsCiAJLm51bV9wb3J0cwkJPSAyLApAQCAtNzA1LDYgKzcwOCw3IEBACiAJLmRlc2NyaXB0aW9uCQk9ICJLZXlzcGFuIDQgcG9ydCBhZGFwdGVyIiwKIAkuaWRfdGFibGUJCT0ga2V5c3Bhbl80cG9ydF9pZHMsCiAJLm51bV9pbnRlcnJ1cHRfaW4JPSBOVU1fRE9OVF9DQVJFLAorCS5udW1faW50ZXJydXB0X291dAk9IE5VTV9ET05UX0NBUkUsCiAJLm51bV9idWxrX2luCQk9IE5VTV9ET05UX0NBUkUsCiAJLm51bV9idWxrX291dAkJPSBOVU1fRE9OVF9DQVJFLAogCS5udW1fcG9ydHMJCT0gNCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9vcHRpb24uYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9vcHRpb24uYwppbmRleCBhMzk2ZmJiLi5kMTAxMDI1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvb3B0aW9uLmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL29wdGlvbi5jCkBAIC0xMDksNiArMTA5LDIyIEBACiAjZGVmaW5lIEhVQVdFSV9QUk9EVUNUX0U2MDAJCQkweDEwMDEKICNkZWZpbmUgSFVBV0VJX1BST0RVQ1RfRTIyMAkJCTB4MTAwMwogI2RlZmluZSBIVUFXRUlfUFJPRFVDVF9FMjIwQklTCQkJMHgxMDA0CisjZGVmaW5lIEhVQVdFSV9QUk9EVUNUX0UxNDAxCQkJMHgxNDAxCisjZGVmaW5lIEhVQVdFSV9QUk9EVUNUX0UxNDAzCQkJMHgxNDAzCisjZGVmaW5lIEhVQVdFSV9QUk9EVUNUX0UxNDA1CQkJMHgxNDA1CisjZGVmaW5lIEhVQVdFSV9QUk9EVUNUX0UxNDA2CQkJMHgxNDA2CisjZGVmaW5lIEhVQVdFSV9QUk9EVUNUX0UxNDA4CQkJMHgxNDA4CisjZGVmaW5lIEhVQVdFSV9QUk9EVUNUX0UxNDA5CQkJMHgxNDA5CisjZGVmaW5lIEhVQVdFSV9QUk9EVUNUX0UxNDEwCQkJMHgxNDEwCisjZGVmaW5lIEhVQVdFSV9QUk9EVUNUX0UxNDExCQkJMHgxNDExCisjZGVmaW5lIEhVQVdFSV9QUk9EVUNUX0UxNDEyCQkJMHgxNDEyCisjZGVmaW5lIEhVQVdFSV9QUk9EVUNUX0UxNDEzCQkJMHgxNDEzCisjZGVmaW5lIEhVQVdFSV9QUk9EVUNUX0UxNDE0CQkJMHgxNDE0CisjZGVmaW5lIEhVQVdFSV9QUk9EVUNUX0UxNDE1CQkJMHgxNDE1CisjZGVmaW5lIEhVQVdFSV9QUk9EVUNUX0UxNDE2CQkJMHgxNDE2CisjZGVmaW5lIEhVQVdFSV9QUk9EVUNUX0UxNDE3CQkJMHgxNDE3CisjZGVmaW5lIEhVQVdFSV9QUk9EVUNUX0UxNDE4CQkJMHgxNDE4CisjZGVmaW5lIEhVQVdFSV9QUk9EVUNUX0UxNDE5CQkJMHgxNDE5CiAKICNkZWZpbmUgTk9WQVRFTFdJUkVMRVNTX1ZFTkRPUl9JRAkJMHgxNDEwCiAKQEAgLTEyOSw2ICsxNDUsNyBAQAogI2RlZmluZSBOT1ZBVEVMV0lSRUxFU1NfUFJPRFVDVF9FVjYyMAkJMHgyMTAwCiAjZGVmaW5lIE5PVkFURUxXSVJFTEVTU19QUk9EVUNUX0VTNzIwCQkweDIxMTAKICNkZWZpbmUgTk9WQVRFTFdJUkVMRVNTX1BST0RVQ1RfRTcyNQkJMHgyMTIwCisjZGVmaW5lIE5PVkFURUxXSVJFTEVTU19QUk9EVUNUX0VTNjIwCQkweDIxMzAKICNkZWZpbmUgTk9WQVRFTFdJUkVMRVNTX1BST0RVQ1RfRVU3MzAJCTB4MjQwMAogI2RlZmluZSBOT1ZBVEVMV0lSRUxFU1NfUFJPRFVDVF9FVTc0MAkJMHgyNDEwCiAjZGVmaW5lIE5PVkFURUxXSVJFTEVTU19QUk9EVUNUX0VVODcwRAkJMHgyNDIwCkBAIC0xMzcsNiArMTU0LDggQEAKICNkZWZpbmUgTk9WQVRFTFdJUkVMRVNTX1BST0RVQ1RfTUM3MjcJCTB4NDEwMAogI2RlZmluZSBOT1ZBVEVMV0lSRUxFU1NfUFJPRFVDVF9NQzk1MEQJCTB4NDQwMAogCisjZGVmaW5lIE5PVkFURUxXSVJFTEVTU19QUk9EVUNUX1U3MjcJCTB4NTAxMAorCiAvKiBGVVRVUkUgTk9WQVRFTCBQUk9EVUNUUyAqLwogI2RlZmluZSBOT1ZBVEVMV0lSRUxFU1NfUFJPRFVDVF9FVkRPXzEJCTB4NjAwMAogI2RlZmluZSBOT1ZBVEVMV0lSRUxFU1NfUFJPRFVDVF9IU1BBXzEJCTB4NzAwMApAQCAtMTQ3LDYgKzE2NiwxMiBAQAogI2RlZmluZSBOT1ZBVEVMV0lSRUxFU1NfUFJPRFVDVF9FTUJFRERFRF8yCTB4ODAwMQogI2RlZmluZSBOT1ZBVEVMV0lSRUxFU1NfUFJPRFVDVF9HTE9CQUxfMgkweDkwMDEKIAorLyogQU1PSSBQUk9EVUNUUyAqLworI2RlZmluZSBBTU9JX1ZFTkRPUl9JRAkJCQkweDE2MTQKKyNkZWZpbmUgQU1PSV9QUk9EVUNUX0gwMQkJCTB4MDgwMAorI2RlZmluZSBBTU9JX1BST0RVQ1RfSDAxQQkJCTB4NzAwMgorI2RlZmluZSBBTU9JX1BST0RVQ1RfSDAyCQkJMHgwODAyCisKICNkZWZpbmUgREVMTF9WRU5ET1JfSUQJCQkJMHg0MTNDCiAKICNkZWZpbmUgS1lPQ0VSQV9WRU5ET1JfSUQJCQkweDBjODgKQEAgLTE2Myw4ICsxODgsMTMgQEAKICNkZWZpbmUgQkFORFJJQ0hfUFJPRFVDVF9DMTAwXzEJCQkweDEwMDIKICNkZWZpbmUgQkFORFJJQ0hfUFJPRFVDVF9DMTAwXzIJCQkweDEwMDMKIAorI2RlZmluZSBBTU9JX1ZFTkRPUl9JRAkJCTB4MTYxNAorI2RlZmluZSBBTU9JX1BST0RVQ1RfOTUwOAkJCTB4MDgwMAorCiAjZGVmaW5lIFFVQUxDT01NX1ZFTkRPUl9JRAkJCTB4MDVDNgogCisjZGVmaW5lIE1BWE9OX1ZFTkRPUl9JRAkJCQkweDE2ZDgKKwogc3RhdGljIHN0cnVjdCB1c2JfZGV2aWNlX2lkIG9wdGlvbl9pZHNbXSA9IHsKIAl7IFVTQl9ERVZJQ0UoT1BUSU9OX1ZFTkRPUl9JRCwgT1BUSU9OX1BST0RVQ1RfQ09MVCkgfSwKIAl7IFVTQl9ERVZJQ0UoT1BUSU9OX1ZFTkRPUl9JRCwgT1BUSU9OX1BST0RVQ1RfUklDT0xBKSB9LApAQCAtMjA0LDYgKzIzNCwyMyBAQAogCXsgVVNCX0RFVklDRShIVUFXRUlfVkVORE9SX0lELCBIVUFXRUlfUFJPRFVDVF9FNjAwKSB9LAogCXsgVVNCX0RFVklDRV9BTkRfSU5URVJGQUNFX0lORk8oSFVBV0VJX1ZFTkRPUl9JRCwgSFVBV0VJX1BST0RVQ1RfRTIyMCwgMHhmZiwgMHhmZiwgMHhmZikgfSwKIAl7IFVTQl9ERVZJQ0VfQU5EX0lOVEVSRkFDRV9JTkZPKEhVQVdFSV9WRU5ET1JfSUQsIEhVQVdFSV9QUk9EVUNUX0UyMjBCSVMsIDB4ZmYsIDB4ZmYsIDB4ZmYpIH0sCisJeyBVU0JfREVWSUNFKEhVQVdFSV9WRU5ET1JfSUQsIEhVQVdFSV9QUk9EVUNUX0UxNDAxKSB9LAorCXsgVVNCX0RFVklDRShIVUFXRUlfVkVORE9SX0lELCBIVUFXRUlfUFJPRFVDVF9FMTQwMykgfSwKKwl7IFVTQl9ERVZJQ0UoSFVBV0VJX1ZFTkRPUl9JRCwgSFVBV0VJX1BST0RVQ1RfRTE0MDUpIH0sCisJeyBVU0JfREVWSUNFKEhVQVdFSV9WRU5ET1JfSUQsIEhVQVdFSV9QUk9EVUNUX0UxNDA2KSB9LAorCXsgVVNCX0RFVklDRShIVUFXRUlfVkVORE9SX0lELCBIVUFXRUlfUFJPRFVDVF9FMTQwOCkgfSwKKwl7IFVTQl9ERVZJQ0UoSFVBV0VJX1ZFTkRPUl9JRCwgSFVBV0VJX1BST0RVQ1RfRTE0MDkpIH0sCisJeyBVU0JfREVWSUNFKEhVQVdFSV9WRU5ET1JfSUQsIEhVQVdFSV9QUk9EVUNUX0UxNDEwKSB9LAorCXsgVVNCX0RFVklDRShIVUFXRUlfVkVORE9SX0lELCBIVUFXRUlfUFJPRFVDVF9FMTQxMSkgfSwKKwl7IFVTQl9ERVZJQ0UoSFVBV0VJX1ZFTkRPUl9JRCwgSFVBV0VJX1BST0RVQ1RfRTE0MTIpIH0sCisJeyBVU0JfREVWSUNFKEhVQVdFSV9WRU5ET1JfSUQsIEhVQVdFSV9QUk9EVUNUX0UxNDEzKSB9LAorCXsgVVNCX0RFVklDRShIVUFXRUlfVkVORE9SX0lELCBIVUFXRUlfUFJPRFVDVF9FMTQxNCkgfSwKKwl7IFVTQl9ERVZJQ0UoSFVBV0VJX1ZFTkRPUl9JRCwgSFVBV0VJX1BST0RVQ1RfRTE0MTUpIH0sCisJeyBVU0JfREVWSUNFKEhVQVdFSV9WRU5ET1JfSUQsIEhVQVdFSV9QUk9EVUNUX0UxNDE2KSB9LAorCXsgVVNCX0RFVklDRShIVUFXRUlfVkVORE9SX0lELCBIVUFXRUlfUFJPRFVDVF9FMTQxNykgfSwKKwl7IFVTQl9ERVZJQ0UoSFVBV0VJX1ZFTkRPUl9JRCwgSFVBV0VJX1BST0RVQ1RfRTE0MTgpIH0sCisJeyBVU0JfREVWSUNFKEhVQVdFSV9WRU5ET1JfSUQsIEhVQVdFSV9QUk9EVUNUX0UxNDE5KSB9LAorCXsgVVNCX0RFVklDRShBTU9JX1ZFTkRPUl9JRCwgQU1PSV9QUk9EVUNUXzk1MDgpIH0sCiAJeyBVU0JfREVWSUNFKE5PVkFURUxXSVJFTEVTU19WRU5ET1JfSUQsIE5PVkFURUxXSVJFTEVTU19QUk9EVUNUX1Y2NDApIH0sIC8qIE5vdmF0ZWwgTWVybGluIFY2NDAvWFY2MjAgKi8KIAl7IFVTQl9ERVZJQ0UoTk9WQVRFTFdJUkVMRVNTX1ZFTkRPUl9JRCwgTk9WQVRFTFdJUkVMRVNTX1BST0RVQ1RfVjYyMCkgfSwgLyogTm92YXRlbCBNZXJsaW4gVjYyMC9TNjIwICovCiAJeyBVU0JfREVWSUNFKE5PVkFURUxXSVJFTEVTU19WRU5ET1JfSUQsIE5PVkFURUxXSVJFTEVTU19QUk9EVUNUX1Y3NDApIH0sIC8qIE5vdmF0ZWwgTWVybGluIEVYNzIwL1Y3NDAvWDcyMCAqLwpAQCAtMjE2LDEzICsyNjMsMTMgQEAKIAl7IFVTQl9ERVZJQ0UoTk9WQVRFTFdJUkVMRVNTX1ZFTkRPUl9JRCwgTk9WQVRFTFdJUkVMRVNTX1BST0RVQ1RfRVY2MjApIH0sIC8qIE5vdmF0ZWwgRVY2MjAvRVM2MjAgQ0RNQS9FVi1ETyAqLwogCXsgVVNCX0RFVklDRShOT1ZBVEVMV0lSRUxFU1NfVkVORE9SX0lELCBOT1ZBVEVMV0lSRUxFU1NfUFJPRFVDVF9FUzcyMCkgfSwgLyogTm92YXRlbCBFUzYyMC9FUzcyMC9VNzIwL1VTQjcyMCAqLwogCXsgVVNCX0RFVklDRShOT1ZBVEVMV0lSRUxFU1NfVkVORE9SX0lELCBOT1ZBVEVMV0lSRUxFU1NfUFJPRFVDVF9FNzI1KSB9LCAvKiBOb3ZhdGVsIEU3MjUvRTcyNiAqLwotCXsgVVNCX0RFVklDRShOT1ZBVEVMV0lSRUxFU1NfVkVORE9SX0lELCAweDIxMzApIH0sIC8qIE5vdmF0ZWwgTWVybGluIEVTNjIwIFNNIEJ1cyAqLworCXsgVVNCX0RFVklDRShOT1ZBVEVMV0lSRUxFU1NfVkVORE9SX0lELCBOT1ZBVEVMV0lSRUxFU1NfUFJPRFVDVF9FUzYyMCkgfSwgLyogTm92YXRlbCBNZXJsaW4gRVM2MjAgU00gQnVzICovCiAJeyBVU0JfREVWSUNFKE5PVkFURUxXSVJFTEVTU19WRU5ET1JfSUQsIE5PVkFURUxXSVJFTEVTU19QUk9EVUNUX0VVNzMwKSB9LCAvKiBOb3ZhdGVsIEVVNzMwIGFuZCBWb2RhZm9uZSBFVTc0MCAqLwogCXsgVVNCX0RFVklDRShOT1ZBVEVMV0lSRUxFU1NfVkVORE9SX0lELCBOT1ZBVEVMV0lSRUxFU1NfUFJPRFVDVF9FVTc0MCkgfSwgLyogTm92YXRlbCBub24tVm9kYWZvbmUgRVU3NDAgKi8KIAl7IFVTQl9ERVZJQ0UoTk9WQVRFTFdJUkVMRVNTX1ZFTkRPUl9JRCwgTk9WQVRFTFdJUkVMRVNTX1BST0RVQ1RfRVU4NzBEKSB9LCAvKiBOb3ZhdGVsIEVVODUwRC9FVTg2MEQvRVU4NzBEICovCiAJeyBVU0JfREVWSUNFKE5PVkFURUxXSVJFTEVTU19WRU5ET1JfSUQsIE5PVkFURUxXSVJFTEVTU19QUk9EVUNUX01DOTUwRCkgfSwgLyogTm92YXRlbCBNQzkzMEQvTUM5NTBEICovCiAJeyBVU0JfREVWSUNFKE5PVkFURUxXSVJFTEVTU19WRU5ET1JfSUQsIE5PVkFURUxXSVJFTEVTU19QUk9EVUNUX01DNzI3KSB9LCAvKiBOb3ZhdGVsIE1DNzI3L1U3MjcvVVNCNzI3ICovCi0JeyBVU0JfREVWSUNFKE5PVkFURUxXSVJFTEVTU19WRU5ET1JfSUQsIDB4NTAxMCkgfSwgLyogTm92YXRlbCBVNzI3ICovCisJeyBVU0JfREVWSUNFKE5PVkFURUxXSVJFTEVTU19WRU5ET1JfSUQsIE5PVkFURUxXSVJFTEVTU19QUk9EVUNUX1U3MjcpIH0sIC8qIE5vdmF0ZWwgVTcyNyAqLwogCXsgVVNCX0RFVklDRShOT1ZBVEVMV0lSRUxFU1NfVkVORE9SX0lELCBOT1ZBVEVMV0lSRUxFU1NfUFJPRFVDVF9FVkRPXzEpIH0sIC8qIE5vdmF0ZWwgRVZETyBwcm9kdWN0ICovCiAJeyBVU0JfREVWSUNFKE5PVkFURUxXSVJFTEVTU19WRU5ET1JfSUQsIE5PVkFURUxXSVJFTEVTU19QUk9EVUNUX0hTUEFfMSkgfSwgLyogTm92YXRlbCBIU1BBIHByb2R1Y3QgKi8KIAl7IFVTQl9ERVZJQ0UoTk9WQVRFTFdJUkVMRVNTX1ZFTkRPUl9JRCwgTk9WQVRFTFdJUkVMRVNTX1BST0RVQ1RfRU1CRURERURfMSkgfSwgLyogTm92YXRlbCBFbWJlZGRlZCBwcm9kdWN0ICovCkBAIC0yMzIsNiArMjc5LDEwIEBACiAJeyBVU0JfREVWSUNFKE5PVkFURUxXSVJFTEVTU19WRU5ET1JfSUQsIE5PVkFURUxXSVJFTEVTU19QUk9EVUNUX0VNQkVEREVEXzIpIH0sIC8qIE5vdmF0ZWwgRW1iZWRkZWQgcHJvZHVjdCAqLwogCXsgVVNCX0RFVklDRShOT1ZBVEVMV0lSRUxFU1NfVkVORE9SX0lELCBOT1ZBVEVMV0lSRUxFU1NfUFJPRFVDVF9HTE9CQUxfMikgfSwgLyogTm92YXRlbCBHbG9iYWwgcHJvZHVjdCAqLwogCisJeyBVU0JfREVWSUNFKEFNT0lfVkVORE9SX0lELCBBTU9JX1BST0RVQ1RfSDAxKSB9LAorCXsgVVNCX0RFVklDRShBTU9JX1ZFTkRPUl9JRCwgQU1PSV9QUk9EVUNUX0gwMUEpIH0sCisJeyBVU0JfREVWSUNFKEFNT0lfVkVORE9SX0lELCBBTU9JX1BST0RVQ1RfSDAyKSB9LAorCiAJeyBVU0JfREVWSUNFKERFTExfVkVORE9SX0lELCAweDgxMTQpIH0sCS8qIERlbGwgV2lyZWxlc3MgNTcwMCBNb2JpbGUgQnJvYWRiYW5kIENETUEvRVZETyBNaW5pLUNhcmQgPT0gTm92YXRlbCBFeHBlZGl0ZSBFVjYyMCBDRE1BL0VWLURPICovCiAJeyBVU0JfREVWSUNFKERFTExfVkVORE9SX0lELCAweDgxMTUpIH0sCS8qIERlbGwgV2lyZWxlc3MgNTUwMCBNb2JpbGUgQnJvYWRiYW5kIEhTRFBBIE1pbmktQ2FyZCA9PSBOb3ZhdGVsIEV4cGVkaXRlIEVVNzQwIEhTRFBBLzNHICovCiAJeyBVU0JfREVWSUNFKERFTExfVkVORE9SX0lELCAweDgxMTYpIH0sCS8qIERlbGwgV2lyZWxlc3MgNTUwNSBNb2JpbGUgQnJvYWRiYW5kIEhTRFBBIE1pbmktQ2FyZCA9PSBOb3ZhdGVsIEV4cGVkaXRlIEVVNzQwIEhTRFBBLzNHICovCkBAIC0yNDksNiArMzAwLDcgQEAKIAl7IFVTQl9ERVZJQ0UoQkFORFJJQ0hfVkVORE9SX0lELCBCQU5EUklDSF9QUk9EVUNUX0MxMDBfMikgfSwKIAl7IFVTQl9ERVZJQ0UoS1lPQ0VSQV9WRU5ET1JfSUQsIEtZT0NFUkFfUFJPRFVDVF9LUEM2ODApIH0sCiAJeyBVU0JfREVWSUNFKFFVQUxDT01NX1ZFTkRPUl9JRCwgMHg2NjEzKX0sIC8qIE9uZGEgSDYwMC9aVEUgTUYzMzAgKi8KKwl7IFVTQl9ERVZJQ0UoTUFYT05fVkVORE9SX0lELCAweDYyODApIH0sIC8qIEJQMy1VU0IgJiBCUDMtRVhUIEhTRFBBICovCiAJeyB9IC8qIFRlcm1pbmF0aW5nIGVudHJ5ICovCiB9OwogTU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIG9wdGlvbl9pZHMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL3BsMjMwMy5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL3BsMjMwMy5jCmluZGV4IGFlM2VjMWEuLjJhZjc3ODUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9wbDIzMDMuYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvcGwyMzAzLmMKQEAgLTU1LDYgKzU1LDcgQEAKIAl7IFVTQl9ERVZJQ0UoUEwyMzAzX1ZFTkRPUl9JRCwgUEwyMzAzX1BST0RVQ1RfSURfRENVMTEpIH0sCiAJeyBVU0JfREVWSUNFKFBMMjMwM19WRU5ET1JfSUQsIFBMMjMwM19QUk9EVUNUX0lEX1JTQVEzKSB9LAogCXsgVVNCX0RFVklDRShQTDIzMDNfVkVORE9SX0lELCBQTDIzMDNfUFJPRFVDVF9JRF9QSEFST1MpIH0sCisJeyBVU0JfREVWSUNFKFBMMjMwM19WRU5ET1JfSUQsIFBMMjMwM19QUk9EVUNUX0lEX0FMRElHQSkgfSwKIAl7IFVTQl9ERVZJQ0UoSU9EQVRBX1ZFTkRPUl9JRCwgSU9EQVRBX1BST0RVQ1RfSUQpIH0sCiAJeyBVU0JfREVWSUNFKElPREFUQV9WRU5ET1JfSUQsIElPREFUQV9QUk9EVUNUX0lEX1JTQVE1KSB9LAogCXsgVVNCX0RFVklDRShBVEVOX1ZFTkRPUl9JRCwgQVRFTl9QUk9EVUNUX0lEKSB9LApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL3BsMjMwMy5oIGIvZHJpdmVycy91c2Ivc2VyaWFsL3BsMjMwMy5oCmluZGV4IDIzN2E0MWYuLjEwY2Y4NzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9wbDIzMDMuaAorKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvcGwyMzAzLmgKQEAgLTEzLDYgKzEzLDcgQEAKICNkZWZpbmUgUEwyMzAzX1BST0RVQ1RfSURfRENVMTEJCTB4MTIzNAogI2RlZmluZSBQTDIzMDNfUFJPRFVDVF9JRF9QSEFST1MJMHhhYWEwCiAjZGVmaW5lIFBMMjMwM19QUk9EVUNUX0lEX1JTQVEzCQkweGFhYTIKKyNkZWZpbmUgUEwyMzAzX1BST0RVQ1RfSURfQUxESUdBCTB4MDYxMQogCiAjZGVmaW5lIEFURU5fVkVORE9SX0lECQkweDA1NTcKICNkZWZpbmUgQVRFTl9WRU5ET1JfSUQyCQkweDA1NDcKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9zaWVycmEuYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9zaWVycmEuYwppbmRleCBlM2Q0NGFlLi5lZDY3ODgxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvc2llcnJhLmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL3NpZXJyYS5jCkBAIC0xNCw3ICsxNCw3IEBACiAgIFdob20gYmFzZWQgaGlzIG9uIHRoZSBLZXlzcGFuIGRyaXZlciBieSBIdWdoIEJsZW1pbmdzIDxodWdoQGJsZW1pbmdzLm9yZz4KICovCiAKLSNkZWZpbmUgRFJJVkVSX1ZFUlNJT04gInYuMS4yLjciCisjZGVmaW5lIERSSVZFUl9WRVJTSU9OICJ2LjEuMi44IgogI2RlZmluZSBEUklWRVJfQVVUSE9SICJLZXZpbiBMbG95ZCA8bGludXhAc2llcnJhd2lyZWxlc3MuY29tPiIKICNkZWZpbmUgRFJJVkVSX0RFU0MgIlVTQiBEcml2ZXIgZm9yIFNpZXJyYSBXaXJlbGVzcyBVU0IgbW9kZW1zIgogCkBAIC0xNjMsNiArMTYzLDcgQEAKIAl7IFVTQl9ERVZJQ0UoMHgxMTk5LCAweDY4MDMpIH0sCS8qIFNpZXJyYSBXaXJlbGVzcyBNQzg3NjUgKi8KIAl7IFVTQl9ERVZJQ0UoMHgxMTk5LCAweDY4MTIpIH0sCS8qIFNpZXJyYSBXaXJlbGVzcyBNQzg3NzUgJiBBQyA4NzVVICovCiAJeyBVU0JfREVWSUNFKDB4MTE5OSwgMHg2ODEzKSB9LAkvKiBTaWVycmEgV2lyZWxlc3MgTUM4Nzc1IChUaGlua3BhZCBpbnRlcm5hbCkgKi8KKwl7IFVTQl9ERVZJQ0UoMHgxMTk5LCAweDY4MTUpIH0sCS8qIFNpZXJyYSBXaXJlbGVzcyBNQzg3NzUgKi8KIAl7IFVTQl9ERVZJQ0UoMHgxMTk5LCAweDY4MjApIH0sCS8qIFNpZXJyYSBXaXJlbGVzcyBBaXJDYXJkIDg3NSAqLwogCXsgVVNCX0RFVklDRSgweDExOTksIDB4NjgzMikgfSwJLyogU2llcnJhIFdpcmVsZXNzIE1DODc4MCovCiAJeyBVU0JfREVWSUNFKDB4MTE5OSwgMHg2ODMzKSB9LAkvKiBTaWVycmEgV2lyZWxlc3MgTUM4NzgxKi8KQEAgLTE5Niw5ICsxOTcsOSBAQAogCXNwaW5sb2NrX3QgbG9jazsJLyogbG9jayB0aGUgc3RydWN0dXJlICovCiAJaW50IG91dHN0YW5kaW5nX3VyYnM7CS8qIG51bWJlciBvZiBvdXQgdXJicyBpbiBmbGlnaHQgKi8KIAotCS8qIElucHV0IGVuZHBvaW50cyBhbmQgYnVmZmVyIGZvciB0aGlzIHBvcnQgKi8KKwkvKiBJbnB1dCBlbmRwb2ludHMgYW5kIGJ1ZmZlcnMgZm9yIHRoaXMgcG9ydCAqLwogCXN0cnVjdCB1cmIgKmluX3VyYnNbTl9JTl9VUkJdOwotCWNoYXIgaW5fYnVmZmVyW05fSU5fVVJCXVtJTl9CVUZMRU5dOworCWNoYXIgKmluX2J1ZmZlcltOX0lOX1VSQl07CiAKIAkvKiBTZXR0aW5ncyBmb3IgdGhlIHBvcnQgKi8KIAlpbnQgcnRzX3N0YXRlOwkvKiBIYW5kc2hha2luZyBwaW5zIChvdXRwdXRzKSAqLwpAQCAtNjM4LDYgKzYzOSwxNSBAQAogCQkJcmV0dXJuIC1FTk9NRU07CiAJCX0KIAkJc3Bpbl9sb2NrX2luaXQoJnBvcnRkYXRhLT5sb2NrKTsKKwkJZm9yIChqID0gMDsgaiA8IE5fSU5fVVJCOyBqKyspIHsKKwkJCXBvcnRkYXRhLT5pbl9idWZmZXJbal0gPSBrbWFsbG9jKElOX0JVRkxFTiwgR0ZQX0tFUk5FTCk7CisJCQlpZiAoIXBvcnRkYXRhLT5pbl9idWZmZXJbal0pIHsKKwkJCQlmb3IgKC0tajsgaiA+PSAwOyBqLS0pCisJCQkJCWtmcmVlKHBvcnRkYXRhLT5pbl9idWZmZXJbal0pOworCQkJCWtmcmVlKHBvcnRkYXRhKTsKKwkJCQlyZXR1cm4gLUVOT01FTTsKKwkJCX0KKwkJfQogCiAJCXVzYl9zZXRfc2VyaWFsX3BvcnRfZGF0YShwb3J0LCBwb3J0ZGF0YSk7CiAKQEAgLTY4MSw3ICs2OTEsNyBAQAogCQlmb3IgKGogPSAwOyBqIDwgTl9JTl9VUkI7IGorKykgewogCQkJdXNiX2tpbGxfdXJiKHBvcnRkYXRhLT5pbl91cmJzW2pdKTsKIAkJCXVzYl9mcmVlX3VyYihwb3J0ZGF0YS0+aW5fdXJic1tqXSk7Ci0JCQlwb3J0ZGF0YS0+aW5fdXJic1tqXSA9IE5VTEw7CisJCQlrZnJlZShwb3J0ZGF0YS0+aW5fYnVmZmVyW2pdKTsKIAkJfQogCQlrZnJlZShwb3J0ZGF0YSk7CiAJCXVzYl9zZXRfc2VyaWFsX3BvcnRfZGF0YShwb3J0LCBOVUxMKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC90aV91c2JfMzQxMF81MDUyLmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvdGlfdXNiXzM0MTBfNTA1Mi5jCmluZGV4IGI1MTdmOTMuLmUzZDI0MWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC90aV91c2JfMzQxMF81MDUyLmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL3RpX3VzYl8zNDEwXzUwNTIuYwpAQCAtMjY1LDggKzI2NSw4IEBACiAJLmRlc2NyaXB0aW9uCQk9ICJUSSBVU0IgMzQxMCAxIHBvcnQgYWRhcHRlciIsCiAJLnVzYl9kcml2ZXIJCT0gJnRpX3VzYl9kcml2ZXIsCiAJLmlkX3RhYmxlCQk9IHRpX2lkX3RhYmxlXzM0MTAsCi0JLm51bV9pbnRlcnJ1cHRfaW4JPSAxLAotCS5udW1fYnVsa19pbgkJPSAxLAorCS5udW1faW50ZXJydXB0X2luCT0gTlVNX0RPTlRfQ0FSRSwKKwkubnVtX2J1bGtfaW4JCT0gTlVNX0RPTlRfQ0FSRSwKIAkubnVtX2J1bGtfb3V0CQk9IDEsCiAJLm51bV9wb3J0cwkJPSAxLAogCS5hdHRhY2gJCQk9IHRpX3N0YXJ0dXAsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvdXNiLXNlcmlhbC5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL3VzYi1zZXJpYWwuYwppbmRleCAzY2U5OGU4Li4yMTM4YmE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvdXNiLXNlcmlhbC5jCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC91c2Itc2VyaWFsLmMKQEAgLTg1NCw2ICs4NTQsNyBAQAogCXNlcmlhbC0+bnVtX2ludGVycnVwdF9pbiA9IG51bV9pbnRlcnJ1cHRfaW47CiAJc2VyaWFsLT5udW1faW50ZXJydXB0X291dCA9IG51bV9pbnRlcnJ1cHRfb3V0OwogCisjaWYgMAogCS8qIGNoZWNrIHRoYXQgdGhlIGRldmljZSBtZWV0cyB0aGUgZHJpdmVyJ3MgcmVxdWlyZW1lbnRzICovCiAJaWYgKCh0eXBlLT5udW1faW50ZXJydXB0X2luICE9IE5VTV9ET05UX0NBUkUgJiYKIAkJCQl0eXBlLT5udW1faW50ZXJydXB0X2luICE9IG51bV9pbnRlcnJ1cHRfaW4pCkBAIC04NjcsNiArODY4LDcgQEAKIAkJa2ZyZWUoc2VyaWFsKTsKIAkJcmV0dXJuIC1FSU87CiAJfQorI2VuZGlmCiAKIAkvKiBmb3VuZCBhbGwgdGhhdCB3ZSBuZWVkICovCiAJZGV2X2luZm8oJmludGVyZmFjZS0+ZGV2LCAiJXMgY29udmVydGVyIGRldGVjdGVkXG4iLApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL3Zpc29yLmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvdmlzb3IuYwppbmRleCAyMmIzZjc4Li5jMmIwMWY3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvdmlzb3IuYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvdmlzb3IuYwpAQCAtMTkxLDcgKzE5MSw3IEBACiAJLmlkX3RhYmxlID0JCWlkX3RhYmxlLAogCS5udW1faW50ZXJydXB0X2luID0JTlVNX0RPTlRfQ0FSRSwKIAkubnVtX2J1bGtfaW4gPQkJMiwKLQkubnVtX2J1bGtfb3V0ID0JCTIsCisJLm51bV9idWxrX291dCA9CQlOVU1fRE9OVF9DQVJFLAogCS5udW1fcG9ydHMgPQkJMiwKIAkub3BlbiA9CQkJdmlzb3Jfb3BlbiwKIAkuY2xvc2UgPQkJdmlzb3JfY2xvc2UsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zdG9yYWdlL2lzZDIwMC5jIGIvZHJpdmVycy91c2Ivc3RvcmFnZS9pc2QyMDAuYwppbmRleCAyYWUxZTg2Li45NzFkMTNkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zdG9yYWdlL2lzZDIwMC5jCisrKyBiL2RyaXZlcnMvdXNiL3N0b3JhZ2UvaXNkMjAwLmMKQEAgLTEyMzAsNiArMTIzMCw3IEBACiAJICAgIAogCQkJLyogRnJlZSBkcml2ZXIgc3RydWN0dXJlICovCSAgICAKIAkJCXVzLT5leHRyYV9kZXN0cnVjdG9yKGluZm8pOworCQkJa2ZyZWUoaW5mbyk7CiAJCQl1cy0+ZXh0cmEgPSBOVUxMOwogCQkJdXMtPmV4dHJhX2Rlc3RydWN0b3IgPSBOVUxMOwogCQl9CkBAIC0xNDY5LDYgKzE0NzAsNyBAQAogCWlmIChpbmZvKSB7CiAJCWtmcmVlKGluZm8tPmlkKTsKIAkJa2ZyZWUoaW5mby0+UmVnc0J1Zik7CisJCWtmcmVlKGluZm8tPnNyYi5zZW5zZV9idWZmZXIpOwogCX0KIH0KIApAQCAtMTQ5NCw3ICsxNDk2LDkgQEAKIAkJCQlremFsbG9jKHNpemVvZihzdHJ1Y3QgaGRfZHJpdmVpZCksIEdGUF9LRVJORUwpOwogCQlpbmZvLT5SZWdzQnVmID0gKHVuc2lnbmVkIGNoYXIgKikKIAkJCQlrbWFsbG9jKHNpemVvZihpbmZvLT5BVEFSZWdzKSwgR0ZQX0tFUk5FTCk7Ci0JCWlmICghaW5mby0+aWQgfHwgIWluZm8tPlJlZ3NCdWYpIHsKKwkJaW5mby0+c3JiLnNlbnNlX2J1ZmZlciA9CisJCQkJa21hbGxvYyhTQ1NJX1NFTlNFX0JVRkZFUlNJWkUsIEdGUF9LRVJORUwpOworCQlpZiAoIWluZm8tPmlkIHx8ICFpbmZvLT5SZWdzQnVmIHx8ICFpbmZvLT5zcmIuc2Vuc2VfYnVmZmVyKSB7CiAJCQlpc2QyMDBfZnJlZV9pbmZvX3B0cnMoaW5mbyk7CiAJCQlrZnJlZShpbmZvKTsKIAkJCXJldFN0YXR1cyA9IElTRDIwMF9FUlJPUjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3N0b3JhZ2UvdHJhbnNwb3J0LmMgYi9kcml2ZXJzL3VzYi9zdG9yYWdlL3RyYW5zcG9ydC5jCmluZGV4IDU3ODBlZDEuLmJkZDQzMzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3N0b3JhZ2UvdHJhbnNwb3J0LmMKKysrIGIvZHJpdmVycy91c2Ivc3RvcmFnZS90cmFuc3BvcnQuYwpAQCAtMTAwOSw3ICsxMDA5LDggQEAKIAlVU19ERUJVR1AoIkJ1bGsgU3RhdHVzIFMgMHgleCBUIDB4JXggUiAldSBTdGF0IDB4JXhcbiIsCiAJCQlsZTMyX3RvX2NwdShiY3MtPlNpZ25hdHVyZSksIGJjcy0+VGFnLCAKIAkJCXJlc2lkdWUsIGJjcy0+U3RhdHVzKTsKLQlpZiAoYmNzLT5UYWcgIT0gdXMtPnRhZyB8fCBiY3MtPlN0YXR1cyA+IFVTX0JVTEtfU1RBVF9QSEFTRSkgeworCWlmICghKGJjcy0+VGFnID09IHVzLT50YWcgfHwgKHVzLT5mbGFncyAmIFVTX0ZMX0JVTEtfSUdOT1JFX1RBRykpIHx8CisJCWJjcy0+U3RhdHVzID4gVVNfQlVMS19TVEFUX1BIQVNFKSB7CiAJCVVTX0RFQlVHUCgiQnVsayBsb2dpY2FsIGVycm9yXG4iKTsKIAkJcmV0dXJuIFVTQl9TVE9SX1RSQU5TUE9SVF9FUlJPUjsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zdG9yYWdlL3VudXN1YWxfZGV2cy5oIGIvZHJpdmVycy91c2Ivc3RvcmFnZS91bnVzdWFsX2RldnMuaAppbmRleCA5OTY3OWE4Li45MTI1MjA3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zdG9yYWdlL3VudXN1YWxfZGV2cy5oCisrKyBiL2RyaXZlcnMvdXNiL3N0b3JhZ2UvdW51c3VhbF9kZXZzLmgKQEAgLTE1MzAsMTYgKzE1MzAsMTA0IEBACiAJCVVTX1NDX0RFVklDRSwgVVNfUFJfREVWSUNFLCBOVUxMLAogCQlVU19GTF9JR05PUkVfUkVTSURVRSApLAogCi0vKiBSZXBvcnRlZCBieSBmYW5neGlhb3poaSA8ZmFuZ3hpYW96aGk2MDY3NUBodWF3ZWkuY29tPgotICogYW5kIGJ5IGxpbmxlaSA8bGlubGVpODNAaHVhd2VpLmNvbT4KLSAqIFBhdGNoIHJld29ya2VkIGJ5IEpvaGFubiBXaWxoZWxtIDxqb2hhbm4ud2lsaGVsbUBzdHVkZW50LnR1Z3Jhei5hdD4KLSAqIFRoaXMgYnJpbmdzIHRoZSBIVUFXRUkgRTIyMCBkZXZpY2VzIGludG8gbXVsdGktcG9ydCBtb2RlCisvKiBSZXBvcnRlZCBieSBmYW5neGlhb3poaSA8aHVhbmFuaHVAaHVhd2VpLmNvbT4KKyAqIFRoaXMgYnJpbmdzIHRoZSBIVUFXRUkgZGF0YSBjYXJkIGRldmljZXMgaW50byBtdWx0aS1wb3J0IG1vZGUKICAqLworVU5VU1VBTF9ERVYoIDB4MTJkMSwgMHgxMDAxLCAweDAwMDAsIDB4MDAwMCwKKwkJIkhVQVdFSSBNT0JJTEUiLAorCQkiTWFzcyBTdG9yYWdlIiwKKwkJVVNfU0NfREVWSUNFLCBVU19QUl9ERVZJQ0UsIHVzYl9zdG9yX2h1YXdlaV9lMjIwX2luaXQsCisJCTApLAogVU5VU1VBTF9ERVYoIDB4MTJkMSwgMHgxMDAzLCAweDAwMDAsIDB4MDAwMCwKIAkJIkhVQVdFSSBNT0JJTEUiLAogCQkiTWFzcyBTdG9yYWdlIiwKIAkJVVNfU0NfREVWSUNFLCBVU19QUl9ERVZJQ0UsIHVzYl9zdG9yX2h1YXdlaV9lMjIwX2luaXQsCiAJCTApLAorVU5VU1VBTF9ERVYoIDB4MTJkMSwgMHgxMDA0LCAweDAwMDAsIDB4MDAwMCwKKwkJIkhVQVdFSSBNT0JJTEUiLAorCQkiTWFzcyBTdG9yYWdlIiwKKwkJVVNfU0NfREVWSUNFLCBVU19QUl9ERVZJQ0UsIHVzYl9zdG9yX2h1YXdlaV9lMjIwX2luaXQsCisJCTApLAorVU5VU1VBTF9ERVYoIDB4MTJkMSwgMHgxNDAxLCAweDAwMDAsIDB4MDAwMCwKKwkJIkhVQVdFSSBNT0JJTEUiLAorCQkiTWFzcyBTdG9yYWdlIiwKKwkJVVNfU0NfREVWSUNFLCBVU19QUl9ERVZJQ0UsIHVzYl9zdG9yX2h1YXdlaV9lMjIwX2luaXQsCisJCTApLAorVU5VU1VBTF9ERVYoIDB4MTJkMSwgMHgxNDAzLCAweDAwMDAsIDB4MDAwMCwKKwkJIkhVQVdFSSBNT0JJTEUiLAorCQkiTWFzcyBTdG9yYWdlIiwKKwkJVVNfU0NfREVWSUNFLCBVU19QUl9ERVZJQ0UsIHVzYl9zdG9yX2h1YXdlaV9lMjIwX2luaXQsCisJCTApLAorVU5VU1VBTF9ERVYoIDB4MTJkMSwgMHgxNDA1LCAweDAwMDAsIDB4MDAwMCwKKwkJIkhVQVdFSSBNT0JJTEUiLAorCQkiTWFzcyBTdG9yYWdlIiwKKwkJVVNfU0NfREVWSUNFLCBVU19QUl9ERVZJQ0UsIHVzYl9zdG9yX2h1YXdlaV9lMjIwX2luaXQsCisJCTApLAorVU5VU1VBTF9ERVYoIDB4MTJkMSwgMHgxNDA2LCAweDAwMDAsIDB4MDAwMCwKKwkJIkhVQVdFSSBNT0JJTEUiLAorCQkiTWFzcyBTdG9yYWdlIiwKKwkJVVNfU0NfREVWSUNFLCBVU19QUl9ERVZJQ0UsIHVzYl9zdG9yX2h1YXdlaV9lMjIwX2luaXQsCisJCTApLAorVU5VU1VBTF9ERVYoIDB4MTJkMSwgMHgxNDA4LCAweDAwMDAsIDB4MDAwMCwKKwkJIkhVQVdFSSBNT0JJTEUiLAorCQkiTWFzcyBTdG9yYWdlIiwKKwkJVVNfU0NfREVWSUNFLCBVU19QUl9ERVZJQ0UsIHVzYl9zdG9yX2h1YXdlaV9lMjIwX2luaXQsCisJCTApLAorVU5VU1VBTF9ERVYoIDB4MTJkMSwgMHgxNDA5LCAweDAwMDAsIDB4MDAwMCwKKwkJIkhVQVdFSSBNT0JJTEUiLAorCQkiTWFzcyBTdG9yYWdlIiwKKwkJVVNfU0NfREVWSUNFLCBVU19QUl9ERVZJQ0UsIHVzYl9zdG9yX2h1YXdlaV9lMjIwX2luaXQsCisJCTApLAorVU5VU1VBTF9ERVYoIDB4MTJkMSwgMHgxNDEwLCAweDAwMDAsIDB4MDAwMCwKKwkJIkhVQVdFSSBNT0JJTEUiLAorCQkiTWFzcyBTdG9yYWdlIiwKKwkJVVNfU0NfREVWSUNFLCBVU19QUl9ERVZJQ0UsIHVzYl9zdG9yX2h1YXdlaV9lMjIwX2luaXQsCisJCTApLAorVU5VU1VBTF9ERVYoIDB4MTJkMSwgMHgxNDExLCAweDAwMDAsIDB4MDAwMCwKKwkJIkhVQVdFSSBNT0JJTEUiLAorCQkiTWFzcyBTdG9yYWdlIiwKKwkJVVNfU0NfREVWSUNFLCBVU19QUl9ERVZJQ0UsIHVzYl9zdG9yX2h1YXdlaV9lMjIwX2luaXQsCisJCTApLAorVU5VU1VBTF9ERVYoIDB4MTJkMSwgMHgxNDEyLCAweDAwMDAsIDB4MDAwMCwKKwkJIkhVQVdFSSBNT0JJTEUiLAorCQkiTWFzcyBTdG9yYWdlIiwKKwkJVVNfU0NfREVWSUNFLCBVU19QUl9ERVZJQ0UsIHVzYl9zdG9yX2h1YXdlaV9lMjIwX2luaXQsCisJCTApLAorVU5VU1VBTF9ERVYoIDB4MTJkMSwgMHgxNDEzLCAweDAwMDAsIDB4MDAwMCwKKwkJIkhVQVdFSSBNT0JJTEUiLAorCQkiTWFzcyBTdG9yYWdlIiwKKwkJVVNfU0NfREVWSUNFLCBVU19QUl9ERVZJQ0UsIHVzYl9zdG9yX2h1YXdlaV9lMjIwX2luaXQsCisJCTApLAorVU5VU1VBTF9ERVYoIDB4MTJkMSwgMHgxNDE0LCAweDAwMDAsIDB4MDAwMCwKKwkJIkhVQVdFSSBNT0JJTEUiLAorCQkiTWFzcyBTdG9yYWdlIiwKKwkJVVNfU0NfREVWSUNFLCBVU19QUl9ERVZJQ0UsIHVzYl9zdG9yX2h1YXdlaV9lMjIwX2luaXQsCisJCTApLAorVU5VU1VBTF9ERVYoIDB4MTJkMSwgMHgxNDE1LCAweDAwMDAsIDB4MDAwMCwKKwkJIkhVQVdFSSBNT0JJTEUiLAorCQkiTWFzcyBTdG9yYWdlIiwKKwkJVVNfU0NfREVWSUNFLCBVU19QUl9ERVZJQ0UsIHVzYl9zdG9yX2h1YXdlaV9lMjIwX2luaXQsCisJCTApLAorVU5VU1VBTF9ERVYoIDB4MTJkMSwgMHgxNDE2LCAweDAwMDAsIDB4MDAwMCwKKwkJIkhVQVdFSSBNT0JJTEUiLAorCQkiTWFzcyBTdG9yYWdlIiwKKwkJVVNfU0NfREVWSUNFLCBVU19QUl9ERVZJQ0UsIHVzYl9zdG9yX2h1YXdlaV9lMjIwX2luaXQsCisJCTApLAorVU5VU1VBTF9ERVYoIDB4MTJkMSwgMHgxNDE3LCAweDAwMDAsIDB4MDAwMCwKKwkJIkhVQVdFSSBNT0JJTEUiLAorCQkiTWFzcyBTdG9yYWdlIiwKKwkJVVNfU0NfREVWSUNFLCBVU19QUl9ERVZJQ0UsIHVzYl9zdG9yX2h1YXdlaV9lMjIwX2luaXQsCisJCTApLAorVU5VU1VBTF9ERVYoIDB4MTJkMSwgMHgxNDE4LCAweDAwMDAsIDB4MDAwMCwKKwkJIkhVQVdFSSBNT0JJTEUiLAorCQkiTWFzcyBTdG9yYWdlIiwKKwkJVVNfU0NfREVWSUNFLCBVU19QUl9ERVZJQ0UsIHVzYl9zdG9yX2h1YXdlaV9lMjIwX2luaXQsCisJCTApLAorVU5VU1VBTF9ERVYoIDB4MTJkMSwgMHgxNDE5LCAweDAwMDAsIDB4MDAwMCwKKwkJIkhVQVdFSSBNT0JJTEUiLAorCQkiTWFzcyBTdG9yYWdlIiwKKwkJVVNfU0NfREVWSUNFLCBVU19QUl9ERVZJQ0UsIHVzYl9zdG9yX2h1YXdlaV9lMjIwX2luaXQsCisJCTApLAogCiAvKiBSZXBvcnRlZCBieSBWaWxpdXMgQmlsaW5rZXZpY2l1cyA8dmlsaXNhcyBBVCB4eHggRE9UIGx0KSAqLwogVU5VU1VBTF9ERVYoICAweDEzMmIsIDB4MDAwYiwgMHgwMDAxLCAweDAwMDEsCkBAIC0xNTg5LDYgKzE2NzcsMTcgQEAKIAkJVVNfU0NfREVWSUNFLCBVU19QUl9ERVZJQ0UsIE5VTEwsCiAJCVVTX0ZMX0ZJWF9DQVBBQ0lUWSksCiAKKy8qCisgKiBQYXRjaCBieSBDb25zdGFudGluIEJhcmFub3YgPGNvbnN0QHRsdHN1LnJ1PgorICogUmVwb3J0IGJ5IEFuZHJlYXMgS29lbmVja2UuCisgKiBNb3Rvcm9sYSBST0tSIFo2LgorICovCitVTlVTVUFMX0RFViggIDB4MjJiOCwgMHg2NDI2LCAweDAxMDEsIDB4MDEwMSwKKwkJIk1vdG9yb2xhIiwKKwkJIk1TbmMuIiwKKwkJVVNfU0NfREVWSUNFLCBVU19QUl9ERVZJQ0UsIE5VTEwsCisJCVVTX0ZMX0ZJWF9JTlFVSVJZIHwgVVNfRkxfRklYX0NBUEFDSVRZIHwgVVNfRkxfQlVMS19JR05PUkVfVEFHKSwKKwogLyogUmVwb3J0ZWQgYnkgUmFkb3ZhbiBHYXJhYmlrIDxnYXJhYmlrQGthc3Npb3BlaWEuanVscy5zYXZiYS5zaz4gKi8KIFVOVVNVQUxfREVWKCAgMHgyNzM1LCAweDEwMGIsIDB4MDAwMCwgMHg5OTk5LAogCQkiTVBJTyIsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL0tjb25maWcgYi9kcml2ZXJzL3ZpZGVvL0tjb25maWcKaW5kZXggZTBiMDU4MC4uMWJkNWZiMyAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9LY29uZmlnCisrKyBiL2RyaXZlcnMvdmlkZW8vS2NvbmZpZwpAQCAtMTg5Myw2ICsxODkzLDIwIEBACiAJICBmcmFtZWJ1ZmZlci4gTUwzMDAgY2FycmllcyBhIDY0MCo0ODAgTENEIGRpc3BsYXkgb24gdGhlIGJvYXJkLAogCSAgTUw0MDMgdXNlcyBhIHN0YW5kYXJkIERCMTUgVkdBIGNvbm5lY3Rvci4KIAorY29uZmlnIEZCX01FVFJPTk9NRQorICAgICAgIHRyaXN0YXRlICJNZXRyb25vbWUgZGlzcGxheSBjb250cm9sbGVyIHN1cHBvcnQiCisgICAgICAgZGVwZW5kcyBvbiBGQiAmJiBBUkNIX1BYQSAmJiBNTVUKKyAgICAgICBzZWxlY3QgRkJfU1lTX0ZJTExSRUNUCisgICAgICAgc2VsZWN0IEZCX1NZU19DT1BZQVJFQQorICAgICAgIHNlbGVjdCBGQl9TWVNfSU1BR0VCTElUCisgICAgICAgc2VsZWN0IEZCX1NZU19GT1BTCisgICAgICAgc2VsZWN0IEZCX0RFRkVSUkVEX0lPCisgICAgICAgaGVscAorICAgICAgICAgVGhpcyBlbmFibGVzIHN1cHBvcnQgZm9yIHRoZSBNZXRyb25vbWUgZGlzcGxheSBjb250cm9sbGVyLiBUZXN0ZWQKKyAgICAgICAgIHdpdGggYW4gRS1JbmsgODAweDYwMCBkaXNwbGF5IGFuZCBHdW1zdGl4IENvbm5leCB0aHJvdWdoIGFuIEFNTENECisgICAgICAgICBpbnRlcmZhY2UuIFBsZWFzZSByZWFkIDxmaWxlOkRvY3VtZW50YXRpb24vZmIvbWV0cm9ub21lZmIudHh0PgorICAgICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKIGNvbmZpZyBGQl9WSVJUVUFMCiAJdHJpc3RhdGUgIlZpcnR1YWwgRnJhbWUgQnVmZmVyIHN1cHBvcnQgKE9OTFkgRk9SIFRFU1RJTkchKSIKIAlkZXBlbmRzIG9uIEZCCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL01ha2VmaWxlIGIvZHJpdmVycy92aWRlby9NYWtlZmlsZQppbmRleCAwMzM3MWM3Li4xMWMwZTVlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvdmlkZW8vTWFrZWZpbGUKQEAgLTEwMyw2ICsxMDMsNyBAQAogb2JqLSQoQ09ORklHX0ZCX1BNQUdfQkEpCSAgKz0gcG1hZy1iYS1mYi5vCiBvYmotJChDT05GSUdfRkJfUE1BR0JfQikJICArPSBwbWFnYi1iLWZiLm8KIG9iai0kKENPTkZJR19GQl9NQVhJTkUpCQkgICs9IG1heGluZWZiLm8KK29iai0kKENPTkZJR19GQl9NRVRST05PTUUpICAgICAgICArPSBtZXRyb25vbWVmYi5vCiBvYmotJChDT05GSUdfRkJfUzFEMTNYWFgpCSAgKz0gczFkMTN4eHhmYi5vCiBvYmotJChDT05GSUdfRkJfSU1YKSAgICAgICAgICAgICAgKz0gaW14ZmIubwogb2JqLSQoQ09ORklHX0ZCX1MzQzI0MTApCSAgKz0gczNjMjQxMGZiLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vYmY1NHgtbHEwNDNmYi5jIGIvZHJpdmVycy92aWRlby9iZjU0eC1scTA0M2ZiLmMKaW5kZXggOTg2YTU1MC4uZWVmYmEzZCAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9iZjU0eC1scTA0M2ZiLmMKKysrIGIvZHJpdmVycy92aWRlby9iZjU0eC1scTA0M2ZiLmMKQEAgLTM4NCw3ICszODQsNyBAQAogCSAqICAgT3RoZXIgZmxhZ3MgY2FuIGJlIHNldCwgYW5kIGFyZSBkb2N1bWVudGVkIGluCiAJICogICBpbmNsdWRlL2xpbnV4L21tLmgKIAkgKi8KLQl2bWEtPnZtX2ZsYWdzIHw9IFZNX01BWVNIQVJFOworCXZtYS0+dm1fZmxhZ3MgfD0gIFZNX01BWVNIQVJFIHwgVk1fU0hBUkVEOwogCiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2JmaW4tdDM1MG1jcWItZmIuYyBiL2RyaXZlcnMvdmlkZW8vYmZpbi10MzUwbWNxYi1mYi5jCmluZGV4IGEyYmIyZGUuLjEzNWQ2ZGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vYmZpbi10MzUwbWNxYi1mYi5jCisrKyBiL2RyaXZlcnMvdmlkZW8vYmZpbi10MzUwbWNxYi1mYi5jCkBAIC05MSw2ICs5MSw3IEBACiAJaW50IGxxMDQzX29wZW5fY250OwogCWludCBpcnE7CiAJc3BpbmxvY2tfdCBsb2NrOwkvKiBsb2NrICovCisJdTMyIHBzZXVkb19wYWxbMTZdOwogfTsKIAogc3RhdGljIGludCBub2N1cnNvcjsKQEAgLTE4MiwxMyArMTgzLDEzIEBACiAKIH0KIAotc3RhdGljIGludCBiZmluX3QzNTBtY3FiX3JlcXVlc3RfcG9ydHMoaW50IGFjdGlvbikKLXsKLQl1MTYgcHBpMF9yZXFfOFtdID0ge1BfUFBJMF9DTEssIFBfUFBJMF9GUzEsIFBfUFBJMF9GUzIsCitzdGF0aWMJdTE2IHBwaTBfcmVxXzhbXSA9IHtQX1BQSTBfQ0xLLCBQX1BQSTBfRlMxLCBQX1BQSTBfRlMyLAogCQkJICAgIFBfUFBJMF9EMCwgUF9QUEkwX0QxLCBQX1BQSTBfRDIsCiAJCQkgICAgUF9QUEkwX0QzLCBQX1BQSTBfRDQsIFBfUFBJMF9ENSwKIAkJCSAgICBQX1BQSTBfRDYsIFBfUFBJMF9ENywgMH07CiAKK3N0YXRpYyBpbnQgYmZpbl90MzUwbWNxYl9yZXF1ZXN0X3BvcnRzKGludCBhY3Rpb24pCit7CiAJaWYgKGFjdGlvbikgewogCQlpZiAocGVyaXBoZXJhbF9yZXF1ZXN0X2xpc3QocHBpMF9yZXFfOCwgRFJJVkVSX05BTUUpKSB7CiAJCQlwcmludGsoS0VSTl9FUlIgIlJlcXVlc3RpbmcgUGVyaXBoZXJhbHMgZmFpbGRcbiIpOwpAQCAtMzAxLDcgKzMwMiw3IEBACiAJICogICBPdGhlciBmbGFncyBjYW4gYmUgc2V0LCBhbmQgYXJlIGRvY3VtZW50ZWQgaW4KIAkgKiAgIGluY2x1ZGUvbGludXgvbW0uaAogCSAqLwotCXZtYS0+dm1fZmxhZ3MgfD0gVk1fTUFZU0hBUkU7CisJdm1hLT52bV9mbGFncyB8PSBWTV9NQVlTSEFSRSB8IFZNX1NIQVJFRDsKIAogCXJldHVybiAwOwogfQpAQCAtNTIwLDE2ICs1MjEsNyBAQAogCiAJZmJpbmZvLT5mYm9wcyA9ICZiZmluX3QzNTBtY3FiX2ZiX29wczsKIAotCWZiaW5mby0+cHNldWRvX3BhbGV0dGUgPSBrbWFsbG9jKHNpemVvZih1MzIpICogMTYsIEdGUF9LRVJORUwpOwotCWlmICghZmJpbmZvLT5wc2V1ZG9fcGFsZXR0ZSkgewotCQlwcmludGsoS0VSTl9FUlIgRFJJVkVSX05BTUUKLQkJICAgICAgICJGYWlsIHRvIGFsbG9jYXRlIHBzZXVkb19wYWxldHRlXG4iKTsKLQotCQlyZXQgPSAtRU5PTUVNOwotCQlnb3RvIG91dDQ7Ci0JfQotCi0JbWVtc2V0KGZiaW5mby0+cHNldWRvX3BhbGV0dGUsIDAsIHNpemVvZih1MzIpICogMTYpOworCWZiaW5mby0+cHNldWRvX3BhbGV0dGUgPSAmaW5mby0+cHNldWRvX3BhbDsKIAogCWlmIChmYl9hbGxvY19jbWFwKCZmYmluZm8tPmNtYXAsIEJGSU5fTENEX05CUl9QQUxFVFRFX0VOVFJJRVMsIDApCiAJICAgIDwgMCkgewpAQCAtNTM3LDcgKzUyOSw3IEBACiAJCSAgICAgICAiRmFpbCB0byBhbGxvY2F0ZSBjb2xvcm1hcCAoJWQgZW50cmllcylcbiIsCiAJCSAgICAgICBCRklOX0xDRF9OQlJfUEFMRVRURV9FTlRSSUVTKTsKIAkJcmV0ID0gLUVGQVVMVDsKLQkJZ290byBvdXQ1OworCQlnb3RvIG91dDQ7CiAJfQogCiAJaWYgKGJmaW5fdDM1MG1jcWJfcmVxdWVzdF9wb3J0cygxKSkgewpAQCAtNTUyLDExICs1NDQsMTEgQEAKIAkJZ290byBvdXQ3OwogCX0KIAotCWlmIChyZXF1ZXN0X2lycShpbmZvLT5pcnEsICh2b2lkICopYmZpbl90MzUwbWNxYl9pcnFfZXJyb3IsIElSUUZfRElTQUJMRUQsCi0JCQkiUFBJIEVSUk9SIiwgaW5mbykgPCAwKSB7CisJcmV0ID0gcmVxdWVzdF9pcnEoaW5mby0+aXJxLCBiZmluX3QzNTBtY3FiX2lycV9lcnJvciwgSVJRRl9ESVNBQkxFRCwKKwkJCSJQUEkgRVJST1IiLCBpbmZvKTsKKwlpZiAocmV0IDwgMCkgewogCQlwcmludGsoS0VSTl9FUlIgRFJJVkVSX05BTUUKIAkJICAgICAgICI6IHVuYWJsZSB0byByZXF1ZXN0IFBQSSBFUlJPUiBJUlFcbiIpOwotCQlyZXQgPSAtRUZBVUxUOwogCQlnb3RvIG91dDc7CiAJfQogCkBAIC01ODQsOCArNTc2LDYgQEAKIAliZmluX3QzNTBtY3FiX3JlcXVlc3RfcG9ydHMoMCk7CiBvdXQ2OgogCWZiX2RlYWxsb2NfY21hcCgmZmJpbmZvLT5jbWFwKTsKLW91dDU6Ci0Ja2ZyZWUoZmJpbmZvLT5wc2V1ZG9fcGFsZXR0ZSk7CiBvdXQ0OgogCWRtYV9mcmVlX2NvaGVyZW50KE5VTEwsIGZiaW5mby0+Zml4LnNtZW1fbGVuLCBpbmZvLT5mYl9idWZmZXIsCiAJCQkgIGluZm8tPmRtYV9oYW5kbGUpOwpAQCAtNjA1LDYgKzU5NSw4IEBACiAJc3RydWN0IGZiX2luZm8gKmZiaW5mbyA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOwogCXN0cnVjdCBiZmluX3QzNTBtY3FiZmJfaW5mbyAqaW5mbyA9IGZiaW5mby0+cGFyOwogCisJdW5yZWdpc3Rlcl9mcmFtZWJ1ZmZlcihmYmluZm8pOworCiAJZnJlZV9kbWEoQ0hfUFBJKTsKIAlmcmVlX2lycShpbmZvLT5pcnEsIGluZm8pOwogCkBAIC02MTIsNyArNjA0LDYgQEAKIAkJZG1hX2ZyZWVfY29oZXJlbnQoTlVMTCwgZmJpbmZvLT5maXguc21lbV9sZW4sIGluZm8tPmZiX2J1ZmZlciwKIAkJCQkgIGluZm8tPmRtYV9oYW5kbGUpOwogCi0Ja2ZyZWUoZmJpbmZvLT5wc2V1ZG9fcGFsZXR0ZSk7CiAJZmJfZGVhbGxvY19jbWFwKCZmYmluZm8tPmNtYXApOwogCiAjaWZuZGVmIE5PX0JMX1NVUFBPUlQKQEAgLTYyMCwxMCArNjExLDExIEBACiAJYmFja2xpZ2h0X2RldmljZV91bnJlZ2lzdGVyKGJsX2Rldik7CiAjZW5kaWYKIAotCXVucmVnaXN0ZXJfZnJhbWVidWZmZXIoZmJpbmZvKTsKLQogCWJmaW5fdDM1MG1jcWJfcmVxdWVzdF9wb3J0cygwKTsKIAorCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIE5VTEwpOworCWZyYW1lYnVmZmVyX3JlbGVhc2UoZmJpbmZvKTsKKwogCXByaW50ayhLRVJOX0lORk8gRFJJVkVSX05BTUUgIjogVW5yZWdpc3RlciBMQ0QgZHJpdmVyLlxuIik7CiAKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJfZGVmaW8uYyBiL2RyaXZlcnMvdmlkZW8vZmJfZGVmaW8uYwppbmRleCAwZjhjZmI5Li4yNDg0M2ZkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiX2RlZmlvLmMKKysrIGIvZHJpdmVycy92aWRlby9mYl9kZWZpby5jCkBAIC00LDcgKzQsNyBAQAogICogIENvcHlyaWdodCAoQykgMjAwNiBKYXlhIEt1bWFyCiAgKgogICogVGhpcyBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UuICBTZWUgdGhlIGZpbGUgQ09QWUlORyBpbiB0aGUgbWFpbiBkaXJlY3Rvcnkgb2YgdGhpcyBhcmNoaXZlCisgKiBMaWNlbnNlLiBTZWUgdGhlIGZpbGUgQ09QWUlORyBpbiB0aGUgbWFpbiBkaXJlY3Rvcnkgb2YgdGhpcyBhcmNoaXZlCiAgKiBmb3IgbW9yZSBkZXRhaWxzLgogICovCiAKQEAgLTMxLDcgKzMxLDcgQEAKIAl1bnNpZ25lZCBsb25nIG9mZnNldDsKIAlzdHJ1Y3QgcGFnZSAqcGFnZTsKIAlzdHJ1Y3QgZmJfaW5mbyAqaW5mbyA9IHZtYS0+dm1fcHJpdmF0ZV9kYXRhOwotCS8qIGluZm8tPnNjcmVlbl9iYXNlIGlzIGluIFN5c3RlbSBSQU0gKi8KKwkvKiBpbmZvLT5zY3JlZW5fYmFzZSBpcyB2aXJ0dWFsIG1lbW9yeSAqLwogCXZvaWQgKnNjcmVlbl9iYXNlID0gKHZvaWQgX19mb3JjZSAqKSBpbmZvLT5zY3JlZW5fYmFzZTsKIAogCW9mZnNldCA9IHZtZi0+cGdvZmYgPDwgUEFHRV9TSElGVDsKQEAgLTQzLDYgKzQzLDE1IEBACiAJCXJldHVybiBWTV9GQVVMVF9TSUdCVVM7CiAKIAlnZXRfcGFnZShwYWdlKTsKKworCWlmICh2bWEtPnZtX2ZpbGUpCisJCXBhZ2UtPm1hcHBpbmcgPSB2bWEtPnZtX2ZpbGUtPmZfbWFwcGluZzsKKwllbHNlCisJCXByaW50ayhLRVJOX0VSUiAibm8gbWFwcGluZyBhdmFpbGFibGVcbiIpOworCisJQlVHX09OKCFwYWdlLT5tYXBwaW5nKTsKKwlwYWdlLT5pbmRleCA9IHZtZi0+cGdvZmY7CisKIAl2bWYtPnBhZ2UgPSBwYWdlOwogCXJldHVybiAwOwogfQpAQCAtMTM4LDExICsxNDcsMjAgQEAKIAogdm9pZCBmYl9kZWZlcnJlZF9pb19jbGVhbnVwKHN0cnVjdCBmYl9pbmZvICppbmZvKQogeworCXZvaWQgKnNjcmVlbl9iYXNlID0gKHZvaWQgX19mb3JjZSAqKSBpbmZvLT5zY3JlZW5fYmFzZTsKIAlzdHJ1Y3QgZmJfZGVmZXJyZWRfaW8gKmZiZGVmaW8gPSBpbmZvLT5mYmRlZmlvOworCXN0cnVjdCBwYWdlICpwYWdlOworCWludCBpOwogCiAJQlVHX09OKCFmYmRlZmlvKTsKIAljYW5jZWxfZGVsYXllZF93b3JrKCZpbmZvLT5kZWZlcnJlZF93b3JrKTsKIAlmbHVzaF9zY2hlZHVsZWRfd29yaygpOworCisJLyogY2xlYXIgb3V0IHRoZSBtYXBwaW5nIHRoYXQgd2Ugc2V0dXAgKi8KKwlmb3IgKGkgPSAwIDsgaSA8IGluZm8tPmZpeC5zbWVtX2xlbjsgaSArPSBQQUdFX1NJWkUpIHsKKwkJcGFnZSA9IHZtYWxsb2NfdG9fcGFnZShzY3JlZW5fYmFzZSArIGkpOworCQlwYWdlLT5tYXBwaW5nID0gTlVMTDsKKwl9CiB9CiBFWFBPUlRfU1lNQk9MX0dQTChmYl9kZWZlcnJlZF9pb19jbGVhbnVwKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9mYm1lbS5jIGIvZHJpdmVycy92aWRlby9mYm1lbS5jCmluZGV4IDExOTRmNWUuLjAxMDcyZjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vZmJtZW0uYworKysgYi9kcml2ZXJzL3ZpZGVvL2ZibWVtLmMKQEAgLTE1MjEsNiArMTUyMSw3IEBACiBzdGF0aWMgdm9pZCBfX2V4aXQKIGZibWVtX2V4aXQodm9pZCkKIHsKKwlyZW1vdmVfcHJvY19lbnRyeSgiZmIiLCBOVUxMKTsKIAljbGFzc19kZXN0cm95KGZiX2NsYXNzKTsKIAl1bnJlZ2lzdGVyX2NocmRldihGQl9NQUpPUiwgImZiIik7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2k4MTAvaTgxMF9tYWluLmMgYi9kcml2ZXJzL3ZpZGVvL2k4MTAvaTgxMF9tYWluLmMKaW5kZXggMWQxM2RkMC4uYTI0ZTY4MCAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9pODEwL2k4MTBfbWFpbi5jCisrKyBiL2RyaXZlcnMvdmlkZW8vaTgxMC9pODEwX21haW4uYwpAQCAtMTQ3Niw3ICsxNDc2LDcgQEAKIAlzdHJ1Y3QgaTgxMGZiX3BhciAqcGFyID0gaW5mby0+cGFyOwogCXU4IF9faW9tZW0gKm1taW8gPSBwYXItPm1taW9fc3RhcnRfdmlydHVhbDsKIAotCWlmICghKHBhci0+ZGV2X2ZsYWdzICYgTE9DS1VQKSkKKwlpZiAocGFyLT5kZXZfZmxhZ3MgJiBMT0NLVVApCiAJCXJldHVybiAtRU5YSU87CiAKIAlpZiAoY3Vyc29yLT5pbWFnZS53aWR0aCA+IDY0IHx8IGN1cnNvci0+aW1hZ2UuaGVpZ2h0ID4gNjQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL21ldHJvbm9tZWZiLmMgYi9kcml2ZXJzL3ZpZGVvL21ldHJvbm9tZWZiLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTlhODlmZAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvdmlkZW8vbWV0cm9ub21lZmIuYwpAQCAtMCwwICsxLDk5OSBAQAorLyoKKyAqIGxpbnV4L2RyaXZlcnMvdmlkZW8vbWV0cm9ub21lZmIuYyAtLSBGQiBkcml2ZXIgZm9yIE1ldHJvbm9tZSBjb250cm9sbGVyCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA4LCBKYXlhIEt1bWFyCisgKgorICogVGhpcyBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UuIFNlZSB0aGUgZmlsZSBDT1BZSU5HIGluIHRoZSBtYWluIGRpcmVjdG9yeSBvZiB0aGlzIGFyY2hpdmUgZm9yCisgKiBtb3JlIGRldGFpbHMuCisgKgorICogTGF5b3V0IGlzIGJhc2VkIG9uIHNrZWxldG9uZmIuYyBieSBKYW1lcyBTaW1tb25zIGFuZCBHZWVydCBVeXR0ZXJob2V2ZW4uCisgKgorICogVGhpcyB3b3JrIHdhcyBtYWRlIHBvc3NpYmxlIGJ5IGhlbHAgYW5kIGVxdWlwbWVudCBzdXBwb3J0IGZyb20gRS1JbmsKKyAqIENvcnBvcmF0aW9uLiBodHRwOi8vc3VwcG9ydC5laW5rLmNvbS9jb21tdW5pdHkKKyAqCisgKiBUaGlzIGRyaXZlciBpcyB3cml0dGVuIHRvIGJlIHVzZWQgd2l0aCB0aGUgTWV0cm9ub21lIGRpc3BsYXkgY29udHJvbGxlci4KKyAqIEl0IHdhcyB0ZXN0ZWQgd2l0aCBhbiBFLUluayA4MDB4NjAwIFZpenBsZXggRVBEIG9uIGEgR3Vtc3RpeCBDb25uZXggYm9hcmQKKyAqIHVzaW5nIHRoZSBMeXJlIGludGVyZmFjZSBib2FyZC4KKyAqCisgKiBHZW5lcmFsIG5vdGVzOgorICogLSBVc2VyIG11c3Qgc2V0IG1ldHJvbm9tZWZiX2VuYWJsZT0xIHRvIGVuYWJsZSBpdC4KKyAqIC0gU2VlIERvY3VtZW50YXRpb24vZmIvbWV0cm9ub21lZmIudHh0IGZvciBob3cgbWV0cm9ub21lIHdvcmtzLgorICovCisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvZXJybm8uaD4KKyNpbmNsdWRlIDxsaW51eC9zdHJpbmcuaD4KKyNpbmNsdWRlIDxsaW51eC9tbS5oPgorI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KKyNpbmNsdWRlIDxsaW51eC92bWFsbG9jLmg+CisjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KKyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KKyNpbmNsdWRlIDxsaW51eC9mYi5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9saXN0Lmg+CisjaW5jbHVkZSA8bGludXgvZmlybXdhcmUuaD4KKyNpbmNsdWRlIDxsaW51eC9kbWEtbWFwcGluZy5oPgorI2luY2x1ZGUgPGxpbnV4L3VhY2Nlc3MuaD4KKyNpbmNsdWRlIDxsaW51eC9pcnEuaD4KKworI2luY2x1ZGUgPGFzbS9hcmNoL3B4YS1yZWdzLmg+CisjaW5jbHVkZSA8YXNtL3VuYWxpZ25lZC5oPgorCisjZGVmaW5lIERFQlVHIDEKKyNpZmRlZiBERUJVRworI2RlZmluZSBEUFJJTlRLKGYsIGEuLi4pIHByaW50ayhLRVJOX0RFQlVHICIlczogIiBmLCBfX2Z1bmNfXyAsICMjIGEpCisjZWxzZQorI2RlZmluZSBEUFJJTlRLKGYsIGEuLi4pCisjZW5kaWYKKworCisvKiBEaXNwbGF5IHNwZWNpZmljIGluZm9ybWF0aW9uICovCisjZGVmaW5lIERQWV9XIDgzMgorI2RlZmluZSBEUFlfSCA2MjIKKworc3RydWN0IG1ldHJvbWVtX2Rlc2MgeworCXUzMiBtRkRBRFIwOworCXUzMiBtRlNBRFIwOworCXUzMiBtRklEUjA7CisJdTMyIG1MRENNRDA7Cit9OworCitzdHJ1Y3QgbWV0cm9tZW1fY21kIHsKKwl1MTYgb3Bjb2RlOworCXUxNiBhcmdzWygoNjQtMikvMildOworCXUxNiBjc3VtOworfTsKKworc3RydWN0IG1ldHJvbm9tZWZiX3BhciB7CisJdW5zaWduZWQgY2hhciAqbWV0cm9tZW07CisJc3RydWN0IG1ldHJvbWVtX2Rlc2MgKm1ldHJvbWVtX2Rlc2M7CisJc3RydWN0IG1ldHJvbWVtX2NtZCAqbWV0cm9tZW1fY21kOworCXVuc2lnbmVkIGNoYXIgKm1ldHJvbWVtX3dmbTsKKwl1bnNpZ25lZCBjaGFyICptZXRyb21lbV9pbWc7CisJdTE2ICptZXRyb21lbV9pbWdfY3N1bTsKKwl1MTYgKmNzdW1fdGFibGU7CisJaW50IG1ldHJvbWVtc2l6ZTsKKwlkbWFfYWRkcl90IG1ldHJvbWVtX2RtYTsKKwlkbWFfYWRkcl90IG1ldHJvbWVtX2Rlc2NfZG1hOworCXN0cnVjdCBmYl9pbmZvICppbmZvOworCXdhaXRfcXVldWVfaGVhZF90IHdhaXRxOworCXU4IGZyYW1lX2NvdW50OworfTsKKworLyogZnJhbWUgZGlmZmVycyBmcm9tIGltYWdlLiBmcmFtZSBpbmNsdWRlcyBub24tdmlzaWJsZSBwaXhlbHMgKi8KK3N0cnVjdCBlcGRfZnJhbWUgeworCWludCBmdzsgLyogZnJhbWUgd2lkdGggKi8KKwlpbnQgZmg7IC8qIGZyYW1lIGhlaWdodCAqLworfTsKKworc3RhdGljIHN0cnVjdCBlcGRfZnJhbWUgZXBkX2ZyYW1lX3RhYmxlW10gPSB7CisJeworCS5mdyA9IDgzMiwKKwkuZmggPSA2MjIKKwl9LAorfTsKKworc3RhdGljIHN0cnVjdCBmYl9maXhfc2NyZWVuaW5mbyBtZXRyb25vbWVmYl9maXggX19kZXZpbml0ZGF0YSA9IHsKKwkuaWQgPQkJIm1ldHJvbm9tZWZiIiwKKwkudHlwZSA9CQlGQl9UWVBFX1BBQ0tFRF9QSVhFTFMsCisJLnZpc3VhbCA9CUZCX1ZJU1VBTF9TVEFUSUNfUFNFVURPQ09MT1IsCisJLnhwYW5zdGVwID0JMCwKKwkueXBhbnN0ZXAgPQkwLAorCS55d3JhcHN0ZXAgPQkwLAorCS5saW5lX2xlbmd0aCA9CURQWV9XLAorCS5hY2NlbCA9CUZCX0FDQ0VMX05PTkUsCit9OworCitzdGF0aWMgc3RydWN0IGZiX3Zhcl9zY3JlZW5pbmZvIG1ldHJvbm9tZWZiX3ZhciBfX2RldmluaXRkYXRhID0geworCS54cmVzCQk9IERQWV9XLAorCS55cmVzCQk9IERQWV9ILAorCS54cmVzX3ZpcnR1YWwJPSBEUFlfVywKKwkueXJlc192aXJ0dWFsCT0gRFBZX0gsCisJLmJpdHNfcGVyX3BpeGVsCT0gOCwKKwkuZ3JheXNjYWxlCT0gMSwKKwkubm9uc3RkCQk9IDEsCisJLnJlZCA9CQl7IDQsIDMsIDAgfSwKKwkuZ3JlZW4gPQl7IDAsIDAsIDAgfSwKKwkuYmx1ZSA9CQl7IDAsIDAsIDAgfSwKKwkudHJhbnNwID0JeyAwLCAwLCAwIH0sCit9OworCitzdGF0aWMgdW5zaWduZWQgaW50IG1ldHJvbm9tZWZiX2VuYWJsZTsKKworc3RydWN0IHdhdmVmb3JtX2hkciB7CisJdTggc3R1ZmZbMzJdOworCisJdTggd210YVszXTsKKwl1OCBmdnNuOworCisJdTggbHV0czsKKwl1OCBtYzsKKwl1OCB0cmM7CisJdTggc3R1ZmYzOworCisJdTggZW5kYjsKKwl1OCBzd3RiOworCXU4IHN0dWZmMmFbMl07CisKKwl1OCBzdHVmZjJiWzNdOworCXU4IHdmbV9jczsKK30gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOworCisvKiBtYWluIG1ldHJvbm9tZWZiIGZ1bmN0aW9ucyAqLworc3RhdGljIHU4IGNhbGNfY2tzdW0oaW50IHN0YXJ0LCBpbnQgZW5kLCB1OCAqbWVtKQoreworCXU4IHRtcCA9IDA7CisJaW50IGk7CisKKwlmb3IgKGkgPSBzdGFydDsgaSA8IGVuZDsgaSsrKQorCQl0bXAgKz0gbWVtW2ldOworCisJcmV0dXJuIHRtcDsKK30KKworc3RhdGljIHUxNiBjYWxjX2ltZ19ja3N1bSh1MTYgKnN0YXJ0LCBpbnQgbGVuZ3RoKQoreworCXUxNiB0bXAgPSAwOworCisJd2hpbGUgKGxlbmd0aC0tKQorCQl0bXAgKz0gKnN0YXJ0Kys7CisKKwlyZXR1cm4gdG1wOworfQorCisvKiBoZXJlIHdlIGRlY29kZSB0aGUgaW5jb21pbmcgd2F2ZWZvcm0gZmlsZSBhbmQgcG9wdWxhdGUgbWV0cm9tZW0gKi8KKyNkZWZpbmUgRVhQX1dGT1JNX1NJWkUgNDcwMDEKK3N0YXRpYyBpbnQgbG9hZF93YXZlZm9ybSh1OCAqbWVtLCBzaXplX3Qgc2l6ZSwgdTggKm1ldHJvbWVtLCBpbnQgbSwgaW50IHQsCisJCQkJdTggKmZyYW1lX2NvdW50KQoreworCWludCB0dGE7CisJaW50IHdtdGE7CisJaW50IHRybiA9IDA7CisJaW50IGk7CisJdW5zaWduZWQgY2hhciB2OworCXU4IGNrc3VtOworCWludCBja3N1bV9pZHg7CisJaW50IHdmbV9pZHgsIG93Zm1faWR4OworCWludCBtZW1faWR4ID0gMDsKKwlzdHJ1Y3Qgd2F2ZWZvcm1faGRyICp3Zm1faGRyOworCisJaWYgKHNpemUgIT0gRVhQX1dGT1JNX1NJWkUpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJFcnJvcjogdW5leHBlY3RlZCBzaXplICVkICE9ICVkXG4iLCBzaXplLAorCQkJCQlFWFBfV0ZPUk1fU0laRSk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCXdmbV9oZHIgPSAoc3RydWN0IHdhdmVmb3JtX2hkciAqKSBtZW07CisKKwlpZiAod2ZtX2hkci0+ZnZzbiAhPSAxKSB7CisJCXByaW50ayhLRVJOX0VSUiAiRXJyb3I6IGJhZCBmdnNuICV4XG4iLCB3Zm1faGRyLT5mdnNuKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCWlmICh3Zm1faGRyLT5sdXRzICE9IDApIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJFcnJvcjogYmFkIGx1dHMgJXhcbiIsIHdmbV9oZHItPmx1dHMpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisJY2tzdW0gPSBjYWxjX2Nrc3VtKDMyLCA0NywgbWVtKTsKKwlpZiAoY2tzdW0gIT0gd2ZtX2hkci0+d2ZtX2NzKSB7CisJCXByaW50ayhLRVJOX0VSUiAiRXJyb3I6IGJhZCBja3N1bSAleCAhPSAleFxuIiwgY2tzdW0sCisJCQkJCXdmbV9oZHItPndmbV9jcyk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKwl3Zm1faGRyLT5tYyArPSAxOworCXdmbV9oZHItPnRyYyArPSAxOworCWZvciAoaSA9IDA7IGkgPCA1OyBpKyspIHsKKwkJaWYgKCood2ZtX2hkci0+c3R1ZmYyYSArIGkpICE9IDApIHsKKwkJCXByaW50ayhLRVJOX0VSUiAiRXJyb3I6IHVuZXhwZWN0ZWQgdmFsdWUgaW4gcGFkZGluZ1xuIik7CisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJfQorCX0KKworCS8qIGNhbGN1bGF0aW5nIHRybi4gdHJuIGlzIHNvbWV0aGluZyB1c2VkIHRvIGluZGV4IGludG8KKwl0aGUgd2F2ZWZvcm0uIHByZXN1bWFibHkgc2VsZWN0aW5nIHRoZSByaWdodCBvbmUgZm9yIHRoZQorCWRlc2lyZWQgdGVtcGVyYXR1cmUuIGl0IHdvcmtzIG91dCB0aGUgb2Zmc2V0IG9mIHRoZSBmaXJzdAorCXYgdGhhdCBleGNlZWRzIHRoZSBzcGVjaWZpZWQgdGVtcGVyYXR1cmUgKi8KKwlpZiAoKHNpemVvZigqd2ZtX2hkcikgKyB3Zm1faGRyLT50cmMpID4gc2l6ZSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlmb3IgKGkgPSBzaXplb2YoKndmbV9oZHIpOyBpIDw9IHNpemVvZigqd2ZtX2hkcikgKyB3Zm1faGRyLT50cmM7IGkrKykgeworCQlpZiAobWVtW2ldID4gdCkgeworCQkJdHJuID0gaSAtIHNpemVvZigqd2ZtX2hkcikgLSAxOworCQkJYnJlYWs7CisJCX0KKwl9CisKKwkvKiBjaGVjayB0ZW1wZXJhdHVyZSByYW5nZSB0YWJsZSBjaGVja3N1bSAqLworCWNrc3VtX2lkeCA9IHNpemVvZigqd2ZtX2hkcikgKyB3Zm1faGRyLT50cmMgKyAxOworCWlmIChja3N1bV9pZHggPiBzaXplKQorCQlyZXR1cm4gLUVJTlZBTDsKKwlja3N1bSA9IGNhbGNfY2tzdW0oc2l6ZW9mKCp3Zm1faGRyKSwgY2tzdW1faWR4LCBtZW0pOworCWlmIChja3N1bSAhPSBtZW1bY2tzdW1faWR4XSkgeworCQlwcmludGsoS0VSTl9FUlIgIkVycm9yOiBiYWQgdGVtcGVyYXR1cmUgcmFuZ2UgdGFibGUgY2tzdW0iCisJCQkJIiAleCAhPSAleFxuIiwgY2tzdW0sIG1lbVtja3N1bV9pZHhdKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJLyogY2hlY2sgd2F2ZWZvcm0gbW9kZSB0YWJsZSBhZGRyZXNzIGNoZWNrc3VtICovCisJd210YSA9IGxlMzJfdG9fY3B1KGdldF91bmFsaWduZWQoKF9fbGUzMiAqKSB3Zm1faGRyLT53bXRhKSk7CisJd210YSAmPSAweDAwRkZGRkZGOworCWNrc3VtX2lkeCA9IHdtdGEgKyBtKjQgKyAzOworCWlmIChja3N1bV9pZHggPiBzaXplKQorCQlyZXR1cm4gLUVJTlZBTDsKKwlja3N1bSA9IGNhbGNfY2tzdW0oY2tzdW1faWR4IC0gMywgY2tzdW1faWR4LCBtZW0pOworCWlmIChja3N1bSAhPSBtZW1bY2tzdW1faWR4XSkgeworCQlwcmludGsoS0VSTl9FUlIgIkVycm9yOiBiYWQgbW9kZSB0YWJsZSBhZGRyZXNzIGNrc3VtIgorCQkJCSIgJXggIT0gJXhcbiIsIGNrc3VtLCBtZW1bY2tzdW1faWR4XSk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCS8qIGNoZWNrIHdhdmVmb3JtIHRlbXBlcmF0dXJlIHRhYmxlIGFkZHJlc3MgY2hlY2tzdW0gKi8KKwl0dGEgPSBsZTMyX3RvX2NwdShnZXRfdW5hbGlnbmVkKChpbnQgKikgKG1lbSArIHdtdGEgKyBtKjQpKSk7CisJdHRhICY9IDB4MDBGRkZGRkY7CisJY2tzdW1faWR4ID0gdHRhICsgdHJuKjQgKyAzOworCWlmIChja3N1bV9pZHggPiBzaXplKQorCQlyZXR1cm4gLUVJTlZBTDsKKwlja3N1bSA9IGNhbGNfY2tzdW0oY2tzdW1faWR4IC0gMywgY2tzdW1faWR4LCBtZW0pOworCWlmIChja3N1bSAhPSBtZW1bY2tzdW1faWR4XSkgeworCQlwcmludGsoS0VSTl9FUlIgIkVycm9yOiBiYWQgdGVtcGVyYXR1cmUgdGFibGUgYWRkcmVzcyBja3N1bSIKKwkJCSIgJXggIT0gJXhcbiIsIGNrc3VtLCBtZW1bY2tzdW1faWR4XSk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCS8qIGhlcmUgd2UgZG8gdGhlIHJlYWwgd29yayBvZiBwdXR0aW5nIHRoZSB3YXZlZm9ybSBpbnRvIHRoZQorCW1ldHJvbWVtIGJ1ZmZlci4gdGhpcyBkb2VzIHJ1bmxlbmd0aCBkZWNvZGluZyBvZiB0aGUgd2F2ZWZvcm0gKi8KKwl3Zm1faWR4ID0gbGUzMl90b19jcHUoZ2V0X3VuYWxpZ25lZCgoX19sZTMyICopIChtZW0gKyB0dGEgKyB0cm4qNCkpKTsKKwl3Zm1faWR4ICY9IDB4MDBGRkZGRkY7CisJb3dmbV9pZHggPSB3Zm1faWR4OworCWlmICh3Zm1faWR4ID4gc2l6ZSkKKwkJcmV0dXJuIC1FSU5WQUw7CisJd2hpbGUgKHdmbV9pZHggPCBzaXplKSB7CisJCXVuc2lnbmVkIGNoYXIgcmw7CisJCXYgPSBtZW1bd2ZtX2lkeCsrXTsKKwkJaWYgKHYgPT0gd2ZtX2hkci0+c3d0YikgeworCQkJd2hpbGUgKCgodiA9IG1lbVt3Zm1faWR4KytdKSAhPSB3Zm1faGRyLT5zd3RiKSAmJgorCQkJCXdmbV9pZHggPCBzaXplKQorCQkJCW1ldHJvbWVtW21lbV9pZHgrK10gPSB2OworCisJCQljb250aW51ZTsKKwkJfQorCisJCWlmICh2ID09IHdmbV9oZHItPmVuZGIpCisJCQlicmVhazsKKworCQlybCA9IG1lbVt3Zm1faWR4KytdOworCQlmb3IgKGkgPSAwOyBpIDw9IHJsOyBpKyspCisJCQltZXRyb21lbVttZW1faWR4KytdID0gdjsKKwl9CisKKwlja3N1bV9pZHggPSB3Zm1faWR4OworCWlmIChja3N1bV9pZHggPiBzaXplKQorCQlyZXR1cm4gLUVJTlZBTDsKKwlja3N1bSA9IGNhbGNfY2tzdW0ob3dmbV9pZHgsIGNrc3VtX2lkeCwgbWVtKTsKKwlpZiAoY2tzdW0gIT0gbWVtW2Nrc3VtX2lkeF0pIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJFcnJvcjogYmFkIHdhdmVmb3JtIGRhdGEgY2tzdW0iCisJCQkJIiAleCAhPSAleFxuIiwgY2tzdW0sIG1lbVtja3N1bV9pZHhdKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCSpmcmFtZV9jb3VudCA9IChtZW1faWR4LzY0KTsKKworCXJldHVybiAwOworfQorCisvKiByZWdpc3RlciBvZmZzZXRzIGZvciBncGlvIGNvbnRyb2wgKi8KKyNkZWZpbmUgTEVEX0dQSU9fUElOIDUxCisjZGVmaW5lIFNUREJZX0dQSU9fUElOIDQ4CisjZGVmaW5lIFJTVF9HUElPX1BJTiA0OQorI2RlZmluZSBSRFlfR1BJT19QSU4gMzIKKyNkZWZpbmUgRVJSX0dQSU9fUElOIDE3CisjZGVmaW5lIFBDQlBXUl9HUElPX1BJTiAxNgorCisjZGVmaW5lIEFGX1NFTF9HUElPX04gMHgzCisjZGVmaW5lIEdBRlIwX1VfT0ZGU0VUKHBpbikgKChwaW4gLSAxNikgKiAyKQorI2RlZmluZSBHQUZSMV9MX09GRlNFVChwaW4pICgocGluIC0gMzIpICogMikKKyNkZWZpbmUgR0FGUjFfVV9PRkZTRVQocGluKSAoKHBpbiAtIDQ4KSAqIDIpCisjZGVmaW5lIEdQRFIxX09GRlNFVChwaW4pIChwaW4gLSAzMikKKyNkZWZpbmUgR1BDUjFfT0ZGU0VUKHBpbikgKHBpbiAtIDMyKQorI2RlZmluZSBHUFNSMV9PRkZTRVQocGluKSAocGluIC0gMzIpCisjZGVmaW5lIEdQQ1IwX09GRlNFVChwaW4pIChwaW4pCisjZGVmaW5lIEdQU1IwX09GRlNFVChwaW4pIChwaW4pCisKK3N0YXRpYyB2b2lkIG1ldHJvbm9tZV9zZXRfZ3Bpb19vdXRwdXQoaW50IHBpbiwgaW50IHZhbCkKK3sKKwl1OCBpbmRleDsKKworCWluZGV4ID0gcGluID4+IDQ7CisKKwlzd2l0Y2ggKGluZGV4KSB7CisJY2FzZSAxOgorCQlpZiAodmFsKQorCQkJR1BTUjAgfD0gKDEgPDwgR1BTUjBfT0ZGU0VUKHBpbikpOworCQllbHNlCisJCQlHUENSMCB8PSAoMSA8PCBHUENSMF9PRkZTRVQocGluKSk7CisJCWJyZWFrOworCWNhc2UgMjoKKwkJYnJlYWs7CisJY2FzZSAzOgorCQlpZiAodmFsKQorCQkJR1BTUjEgfD0gKDEgPDwgR1BTUjFfT0ZGU0VUKHBpbikpOworCQllbHNlCisJCQlHUENSMSB8PSAoMSA8PCBHUENSMV9PRkZTRVQocGluKSk7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXByaW50ayhLRVJOX0VSUiAidW5pbXBsZW1lbnRlZFxuIik7CisJfQorfQorCitzdGF0aWMgdm9pZCBfX2RldmluaXQgbWV0cm9ub21lX2luaXRfZ3Bpb19waW4oaW50IHBpbiwgaW50IGRpcikKK3sKKwl1OCBpbmRleDsKKwkvKiBkaXIgMCBpcyBvdXRwdXQsIDEgaXMgaW5wdXQKKwktIGRvIDIgdGhpbmdzIGhlcmU6CisJLSBzZXQgZ3BpbyBhbHRlcm5hdGUgZnVuY3Rpb24gdG8gc3RhbmRhcmQgZ3BpbworCS0gc2V0IGdwaW8gZGlyZWN0aW9uIHRvIGlucHV0IG9yIG91dHB1dCAgKi8KKworCWluZGV4ID0gcGluID4+IDQ7CisJc3dpdGNoIChpbmRleCkgeworCWNhc2UgMToKKwkJR0FGUjBfVSAmPSB+KEFGX1NFTF9HUElPX04gPDwgR0FGUjBfVV9PRkZTRVQocGluKSk7CisKKwkJaWYgKGRpcikKKwkJCUdQRFIwICY9IH4oMSA8PCBwaW4pOworCQllbHNlCisJCQlHUERSMCB8PSAoMSA8PCBwaW4pOworCQlicmVhazsKKwljYXNlIDI6CisJCUdBRlIxX0wgJj0gfihBRl9TRUxfR1BJT19OIDw8IEdBRlIxX0xfT0ZGU0VUKHBpbikpOworCisJCWlmIChkaXIpCisJCQlHUERSMSAmPSB+KDEgPDwgR1BEUjFfT0ZGU0VUKHBpbikpOworCQllbHNlCisJCQlHUERSMSB8PSAoMSA8PCBHUERSMV9PRkZTRVQocGluKSk7CisJCWJyZWFrOworCWNhc2UgMzoKKwkJR0FGUjFfVSAmPSB+KEFGX1NFTF9HUElPX04gPDwgR0FGUjFfVV9PRkZTRVQocGluKSk7CisKKwkJaWYgKGRpcikKKwkJCUdQRFIxICY9IH4oMSA8PCBHUERSMV9PRkZTRVQocGluKSk7CisJCWVsc2UKKwkJCUdQRFIxIHw9ICgxIDw8IEdQRFIxX09GRlNFVChwaW4pKTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcHJpbnRrKEtFUk5fRVJSICJ1bmltcGxlbWVudGVkXG4iKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIF9fZGV2aW5pdCBtZXRyb25vbWVfaW5pdF9ncGlvX3JlZ3Modm9pZCkKK3sKKwltZXRyb25vbWVfaW5pdF9ncGlvX3BpbihMRURfR1BJT19QSU4sIDApOworCW1ldHJvbm9tZV9zZXRfZ3Bpb19vdXRwdXQoTEVEX0dQSU9fUElOLCAwKTsKKworCW1ldHJvbm9tZV9pbml0X2dwaW9fcGluKFNUREJZX0dQSU9fUElOLCAwKTsKKwltZXRyb25vbWVfc2V0X2dwaW9fb3V0cHV0KFNUREJZX0dQSU9fUElOLCAwKTsKKworCW1ldHJvbm9tZV9pbml0X2dwaW9fcGluKFJTVF9HUElPX1BJTiwgMCk7CisJbWV0cm9ub21lX3NldF9ncGlvX291dHB1dChSU1RfR1BJT19QSU4sIDApOworCisJbWV0cm9ub21lX2luaXRfZ3Bpb19waW4oUkRZX0dQSU9fUElOLCAxKTsKKworCW1ldHJvbm9tZV9pbml0X2dwaW9fcGluKEVSUl9HUElPX1BJTiwgMSk7CisKKwltZXRyb25vbWVfaW5pdF9ncGlvX3BpbihQQ0JQV1JfR1BJT19QSU4sIDApOworCW1ldHJvbm9tZV9zZXRfZ3Bpb19vdXRwdXQoUENCUFdSX0dQSU9fUElOLCAwKTsKK30KKworc3RhdGljIHZvaWQgbWV0cm9ub21lX2Rpc2FibGVfbGNkX2NvbnRyb2xsZXIoc3RydWN0IG1ldHJvbm9tZWZiX3BhciAqcGFyKQoreworCUxDU1IgPSAweGZmZmZmZmZmOwkvKiBDbGVhciBMQ0QgU3RhdHVzIFJlZ2lzdGVyICovCisJTENDUjAgfD0gTENDUjBfRElTOwkvKiBEaXNhYmxlIExDRCBDb250cm9sbGVyICovCisKKwkvKiB3ZSByZXNldCBhbmQganVzdCB3YWl0IGZvciB0aGluZ3MgdG8gc2V0dGxlICovCisJbXNsZWVwKDIwMCk7Cit9CisKK3N0YXRpYyB2b2lkIG1ldHJvbm9tZV9lbmFibGVfbGNkX2NvbnRyb2xsZXIoc3RydWN0IG1ldHJvbm9tZWZiX3BhciAqcGFyKQoreworCUxDU1IgPSAweGZmZmZmZmZmOworCUZEQURSMCA9IHBhci0+bWV0cm9tZW1fZGVzY19kbWE7CisJTENDUjAgfD0gTENDUjBfRU5COworfQorCitzdGF0aWMgdm9pZCBfX2RldmluaXQgbWV0cm9ub21lX2luaXRfbGNkY19yZWdzKHN0cnVjdCBtZXRyb25vbWVmYl9wYXIgKnBhcikKK3sKKwkvKiBoZXJlIHdlIGRvOgorCS0gZGlzYWJsZSB0aGUgbGNkIGNvbnRyb2xsZXIKKwktIHNldHVwIGxjZCBjb250cm9sIHJlZ2lzdGVycworCS0gc2V0dXAgZG1hIGRlc2NyaXB0b3IKKwktIHJlZW5hYmxlIGxjZCBjb250cm9sbGVyCisJKi8KKworCS8qIGRpc2FibGUgdGhlIGxjZCBjb250cm9sbGVyICovCisJbWV0cm9ub21lX2Rpc2FibGVfbGNkX2NvbnRyb2xsZXIocGFyKTsKKworCS8qIHNldHVwIGxjZCBjb250cm9sIHJlZ2lzdGVycyAqLworCUxDQ1IwID0gTENDUjBfTERNIHwgTENDUjBfU0ZNIHwgTENDUjBfSVVNIHwgTENDUjBfRUZNIHwgTENDUjBfUEFTCisJCXwgTENDUjBfUURNIHwgTENDUjBfQk0gfCBMQ0NSMF9PVU07CisKKwlMQ0NSMSA9IChlcGRfZnJhbWVfdGFibGVbMF0uZncvMiAtIDEpIC8qIHBpeGVscyBwZXIgbGluZSAqLworCQl8ICgyNyA8PCAxMCkgLyogaHN5bmMgcHVsc2Ugd2lkdGggLSAxICovCisJCXwgKDMzIDw8IDE2KSAvKiBlb2wgcGl4ZWwgY291bnQgKi8KKwkJfCAoMzMgPDwgMjQpOyAvKiBib2wgcGl4ZWwgY291bnQgKi8KKworCUxDQ1IyID0gKGVwZF9mcmFtZV90YWJsZVswXS5maCAtIDEpIC8qIGxpbmVzIHBlciBwYW5lbCAqLworCQl8ICgyNCA8PCAxMCkgLyogdnN5bmMgcHVsc2Ugd2lkdGggLSAxICovCisJCXwgKDIgPDwgMTYpIC8qIGVvZiBwaXhlbCBjb3VudCAqLworCQl8ICgwIDw8IDI0KTsgLyogYm9mIHBpeGVsIGNvdW50ICovCisKKwlMQ0NSMyA9IDIgLyogcGl4ZWwgY2xvY2sgZGl2aXNvciAqLworCQl8ICgyNCA8PCA4KSAvKiBBQyBCaWFzIHBpbiBmcmVxICovCisJCXwgTENDUjNfMTZCUFAgLyogQlBQICovCisJCXwgTENDUjNfUENQOyAgLyogUENQIGZhbGxpbmcgZWRnZSAqLworCisJLyogc2V0dXAgZG1hIGRlc2NyaXB0b3IgKi8KKwlwYXItPm1ldHJvbWVtX2Rlc2MtPm1GREFEUjAgPSBwYXItPm1ldHJvbWVtX2Rlc2NfZG1hOworCXBhci0+bWV0cm9tZW1fZGVzYy0+bUZTQURSMCA9IHBhci0+bWV0cm9tZW1fZG1hOworCXBhci0+bWV0cm9tZW1fZGVzYy0+bUZJRFIwID0gMDsKKwlwYXItPm1ldHJvbWVtX2Rlc2MtPm1MRENNRDAgPSBlcGRfZnJhbWVfdGFibGVbMF0uZncKKwkJCQkJKiBlcGRfZnJhbWVfdGFibGVbMF0uZmg7CisJLyogcmVlbmFibGUgbGNkIGNvbnRyb2xsZXIgKi8KKwltZXRyb25vbWVfZW5hYmxlX2xjZF9jb250cm9sbGVyKHBhcik7Cit9CisKK3N0YXRpYyBpbnQgbWV0cm9ub21lX2Rpc3BsYXlfY21kKHN0cnVjdCBtZXRyb25vbWVmYl9wYXIgKnBhcikKK3sKKwlpbnQgaTsKKwl1MTYgY3M7CisJdTE2IG9wY29kZTsKKwlzdGF0aWMgdTggYm9yZGVydmFsOworCXU4ICpwdHI7CisKKwkvKiBzZXR1cCBkaXNwbGF5IGNvbW1hbmQKKwl3ZSBjYW4ndCBpbW1lZGlhdGVseSBzZXQgdGhlIG9wY29kZSBzaW5jZSB0aGUgY29udHJvbGxlcgorCXdpbGwgdHJ5IHBhcnNlIHRoZSBjb21tYW5kIGJlZm9yZSB3ZSd2ZSBzZXQgaXQgYWxsIHVwCisJc28gd2UganVzdCBzZXQgY3MgaGVyZSBhbmQgc2V0IHRoZSBvcGNvZGUgYXQgdGhlIGVuZCAqLworCisJcHRyID0gcGFyLT5tZXRyb21lbTsKKworCWlmIChwYXItPm1ldHJvbWVtX2NtZC0+b3Bjb2RlID09IDB4Q0M0MCkKKwkJb3Bjb2RlID0gY3MgPSAweENDNDE7CisJZWxzZQorCQlvcGNvZGUgPSBjcyA9IDB4Q0M0MDsKKworCS8qIHNldCB0aGUgYXJncyAoIDIgYnl0ZXMgKSBmb3IgZGlzcGxheSAqLworCWkgPSAwOworCXBhci0+bWV0cm9tZW1fY21kLT5hcmdzW2ldID0gCTEgPDwgMyAvKiBib3JkZXIgdXBkYXRlICovCisJCQkJCXwgKChib3JkZXJ2YWwrKyAlIDQpICYgMHgwRikgPDwgNAorCQkJCQl8IChwYXItPmZyYW1lX2NvdW50IC0gMSkgPDwgODsKKwljcyArPSBwYXItPm1ldHJvbWVtX2NtZC0+YXJnc1tpKytdOworCisJLyogdGhlIHJlc3QgYXJlIDAgKi8KKwltZW1zZXQoKHU4ICopIChwYXItPm1ldHJvbWVtX2NtZC0+YXJncyArIGkpLCAwLCAoMzItaSkqMik7CisKKwlwYXItPm1ldHJvbWVtX2NtZC0+Y3N1bSA9IGNzOworCXBhci0+bWV0cm9tZW1fY21kLT5vcGNvZGUgPSBvcGNvZGU7IC8qIGRpc3BsYXkgY21kICovCisKKwlpID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlX3RpbWVvdXQocGFyLT53YWl0cSwgKEdQTFIxICYgMHgwMSksIEhaKTsKKwlyZXR1cm4gaTsKK30KKworc3RhdGljIGludCBfX2RldmluaXQgbWV0cm9ub21lX3Bvd2VydXBfY21kKHN0cnVjdCBtZXRyb25vbWVmYl9wYXIgKnBhcikKK3sKKwlpbnQgaTsKKwl1MTYgY3M7CisKKwkvKiBzZXR1cCBwb3dlciB1cCBjb21tYW5kICovCisJcGFyLT5tZXRyb21lbV9jbWQtPm9wY29kZSA9IDB4MTIzNDsgLyogcHdyIHVwIHBzZXVkbyBjbWQgKi8KKwljcyA9IHBhci0+bWV0cm9tZW1fY21kLT5vcGNvZGU7CisKKwkvKiBzZXQgcHdyMSwyLDMgdG8gMTAyNCAqLworCWZvciAoaSA9IDA7IGkgPCAzOyBpKyspIHsKKwkJcGFyLT5tZXRyb21lbV9jbWQtPmFyZ3NbaV0gPSAxMDI0OworCQljcyArPSBwYXItPm1ldHJvbWVtX2NtZC0+YXJnc1tpXTsKKwl9CisKKwkvKiB0aGUgcmVzdCBhcmUgMCAqLworCW1lbXNldCgodTggKikgKHBhci0+bWV0cm9tZW1fY21kLT5hcmdzICsgaSksIDAsICgzMi1pKSoyKTsKKworCXBhci0+bWV0cm9tZW1fY21kLT5jc3VtID0gY3M7CisKKwltc2xlZXAoMSk7CisJbWV0cm9ub21lX3NldF9ncGlvX291dHB1dChSU1RfR1BJT19QSU4sIDEpOworCisJbXNsZWVwKDEpOworCW1ldHJvbm9tZV9zZXRfZ3Bpb19vdXRwdXQoU1REQllfR1BJT19QSU4sIDEpOworCisJaSA9IHdhaXRfZXZlbnRfdGltZW91dChwYXItPndhaXRxLCAoR1BMUjEgJiAweDAxKSwgSFopOworCXJldHVybiBpOworfQorCitzdGF0aWMgaW50IF9fZGV2aW5pdCBtZXRyb25vbWVfY29uZmlnX2NtZChzdHJ1Y3QgbWV0cm9ub21lZmJfcGFyICpwYXIpCit7CisJaW50IGk7CisJdTE2IGNzOworCisJLyogc2V0dXAgY29uZmlnIGNvbW1hbmQKKwl3ZSBjYW4ndCBpbW1lZGlhdGVseSBzZXQgdGhlIG9wY29kZSBzaW5jZSB0aGUgY29udHJvbGxlcgorCXdpbGwgdHJ5IHBhcnNlIHRoZSBjb21tYW5kIGJlZm9yZSB3ZSd2ZSBzZXQgaXQgYWxsIHVwCisJc28gd2UganVzdCBzZXQgY3MgaGVyZSBhbmQgc2V0IHRoZSBvcGNvZGUgYXQgdGhlIGVuZCAqLworCisJY3MgPSAweENDMTA7CisKKwkvKiBzZXQgdGhlIDEyIGFyZ3MgKCA4IGJ5dGVzICkgZm9yIGNvbmZpZy4gc2VlIHNwZWMgZm9yIG1lYW5pbmdzICovCisJaSA9IDA7CisJcGFyLT5tZXRyb21lbV9jbWQtPmFyZ3NbaV0gPSAJMTUgLyogc2RsZXcgKi8KKwkJCQkJfCAyIDw8IDggLyogc2Rvc3ogKi8KKwkJCQkJfCAwIDw8IDExIC8qIHNkb3IgKi8KKwkJCQkJfCAwIDw8IDEyIC8qIHNkY2VzICovCisJCQkJCXwgMCA8PCAxNTsgLyogc2RjZXIgKi8KKwljcyArPSBwYXItPm1ldHJvbWVtX2NtZC0+YXJnc1tpKytdOworCisJcGFyLT5tZXRyb21lbV9jbWQtPmFyZ3NbaV0gPSAJNDIgLyogZ2RzcGwgKi8KKwkJCQkJfCAxIDw8IDggLyogZ2RyMSAqLworCQkJCQl8IDEgPDwgOSAvKiBzZHNociAqLworCQkJCQl8IDAgPDwgMTU7IC8qIGdkc3BwICovCisJY3MgKz0gcGFyLT5tZXRyb21lbV9jbWQtPmFyZ3NbaSsrXTsKKworCXBhci0+bWV0cm9tZW1fY21kLT5hcmdzW2ldID0gCTE4IC8qIGdkc3B3ICovCisJCQkJCXwgMCA8PCAxNTsgLyogZGlzcGMgKi8KKwljcyArPSBwYXItPm1ldHJvbWVtX2NtZC0+YXJnc1tpKytdOworCisJcGFyLT5tZXRyb21lbV9jbWQtPmFyZ3NbaV0gPSAJNTk5IC8qIHZkbGMgKi8KKwkJCQkJfCAwIDw8IDExIC8qIGRzaSAqLworCQkJCQl8IDAgPDwgMTI7IC8qIGRzaWMgKi8KKwljcyArPSBwYXItPm1ldHJvbWVtX2NtZC0+YXJnc1tpKytdOworCisJLyogdGhlIHJlc3QgYXJlIDAgKi8KKwltZW1zZXQoKHU4ICopIChwYXItPm1ldHJvbWVtX2NtZC0+YXJncyArIGkpLCAwLCAoMzItaSkqMik7CisKKwlwYXItPm1ldHJvbWVtX2NtZC0+Y3N1bSA9IGNzOworCXBhci0+bWV0cm9tZW1fY21kLT5vcGNvZGUgPSAweENDMTA7IC8qIGNvbmZpZyBjbWQgKi8KKworCWkgPSB3YWl0X2V2ZW50X3RpbWVvdXQocGFyLT53YWl0cSwgKEdQTFIxICYgMHgwMSksIEhaKTsKKwlyZXR1cm4gaTsKK30KKworc3RhdGljIGludCBfX2RldmluaXQgbWV0cm9ub21lX2luaXRfY21kKHN0cnVjdCBtZXRyb25vbWVmYl9wYXIgKnBhcikKK3sKKwlpbnQgaTsKKwl1MTYgY3M7CisKKwkvKiBzZXR1cCBpbml0IGNvbW1hbmQKKwl3ZSBjYW4ndCBpbW1lZGlhdGVseSBzZXQgdGhlIG9wY29kZSBzaW5jZSB0aGUgY29udHJvbGxlcgorCXdpbGwgdHJ5IHBhcnNlIHRoZSBjb21tYW5kIGJlZm9yZSB3ZSd2ZSBzZXQgaXQgYWxsIHVwCisJc28gd2UganVzdCBzZXQgY3MgaGVyZSBhbmQgc2V0IHRoZSBvcGNvZGUgYXQgdGhlIGVuZCAqLworCisJY3MgPSAweENDMjA7CisKKwkvKiBzZXQgdGhlIGFyZ3MgKCAyIGJ5dGVzICkgZm9yIGluaXQgKi8KKwlpID0gMDsKKwlwYXItPm1ldHJvbWVtX2NtZC0+YXJnc1tpXSA9IDA7CisJY3MgKz0gcGFyLT5tZXRyb21lbV9jbWQtPmFyZ3NbaSsrXTsKKworCS8qIHRoZSByZXN0IGFyZSAwICovCisJbWVtc2V0KCh1OCAqKSAocGFyLT5tZXRyb21lbV9jbWQtPmFyZ3MgKyBpKSwgMCwgKDMyLWkpKjIpOworCisJcGFyLT5tZXRyb21lbV9jbWQtPmNzdW0gPSBjczsKKwlwYXItPm1ldHJvbWVtX2NtZC0+b3Bjb2RlID0gMHhDQzIwOyAvKiBpbml0IGNtZCAqLworCisJaSA9IHdhaXRfZXZlbnRfdGltZW91dChwYXItPndhaXRxLCAoR1BMUjEgJiAweDAxKSwgSFopOworCXJldHVybiBpOworfQorCitzdGF0aWMgaW50IF9fZGV2aW5pdCBtZXRyb25vbWVfaW5pdF9yZWdzKHN0cnVjdCBtZXRyb25vbWVmYl9wYXIgKnBhcikKK3sKKwlpbnQgcmVzOworCisJbWV0cm9ub21lX2luaXRfZ3Bpb19yZWdzKCk7CisJbWV0cm9ub21lX2luaXRfbGNkY19yZWdzKHBhcik7CisKKwlyZXMgPSBtZXRyb25vbWVfcG93ZXJ1cF9jbWQocGFyKTsKKwlpZiAocmVzKQorCQlyZXR1cm4gcmVzOworCisJcmVzID0gbWV0cm9ub21lX2NvbmZpZ19jbWQocGFyKTsKKwlpZiAocmVzKQorCQlyZXR1cm4gcmVzOworCisJcmVzID0gbWV0cm9ub21lX2luaXRfY21kKHBhcik7CisJaWYgKHJlcykKKwkJcmV0dXJuIHJlczsKKworCXJldHVybiByZXM7Cit9CisKK3N0YXRpYyB2b2lkIG1ldHJvbm9tZWZiX2RweV91cGRhdGUoc3RydWN0IG1ldHJvbm9tZWZiX3BhciAqcGFyKQoreworCXUxNiBja3N1bTsKKwl1bnNpZ25lZCBjaGFyICpidWYgPSAodW5zaWduZWQgY2hhciBfX2ZvcmNlICopcGFyLT5pbmZvLT5zY3JlZW5fYmFzZTsKKworCS8qIGNvcHkgZnJvbSB2bSB0byBtZXRyb21lbSAqLworCW1lbWNweShwYXItPm1ldHJvbWVtX2ltZywgYnVmLCBEUFlfVypEUFlfSCk7CisKKwlja3N1bSA9IGNhbGNfaW1nX2Nrc3VtKCh1MTYgKikgcGFyLT5tZXRyb21lbV9pbWcsCisJCQkJKGVwZF9mcmFtZV90YWJsZVswXS5mdyAqIERQWV9IKS8yKTsKKwkqKCh1MTYgKikgKHBhci0+bWV0cm9tZW1faW1nKSArCisJCQkoZXBkX2ZyYW1lX3RhYmxlWzBdLmZ3ICogRFBZX0gpLzIpID0gY2tzdW07CisJbWV0cm9ub21lX2Rpc3BsYXlfY21kKHBhcik7Cit9CisKK3N0YXRpYyB1MTYgbWV0cm9ub21lZmJfZHB5X3VwZGF0ZV9wYWdlKHN0cnVjdCBtZXRyb25vbWVmYl9wYXIgKnBhciwgaW50IGluZGV4KQoreworCWludCBpOworCXUxNiBjc3VtID0gMDsKKwl1MTYgKmJ1ZiA9ICh1MTYgX19mb3JjZSAqKSAocGFyLT5pbmZvLT5zY3JlZW5fYmFzZSArIGluZGV4KTsKKwl1MTYgKmltZyA9ICh1MTYgKikgKHBhci0+bWV0cm9tZW1faW1nICsgaW5kZXgpOworCisJLyogc3dpenpsZSBmcm9tIHZtIHRvIG1ldHJvbWVtIGFuZCByZWNhbGMgY2tzdW0gYXQgdGhlIHNhbWUgdGltZSovCisJZm9yIChpID0gMDsgaSA8IFBBR0VfU0laRS8yOyBpKyspIHsKKwkJKihpbWcgKyBpKSA9IChidWZbaV0gPDwgNSkgJiAweEUwRTA7CisJCWNzdW0gKz0gKihpbWcgKyBpKTsKKwl9CisJcmV0dXJuIGNzdW07Cit9CisKKy8qIHRoaXMgaXMgY2FsbGVkIGJhY2sgZnJvbSB0aGUgZGVmZXJyZWQgaW8gd29ya3F1ZXVlICovCitzdGF0aWMgdm9pZCBtZXRyb25vbWVmYl9kcHlfZGVmZXJyZWRfaW8oc3RydWN0IGZiX2luZm8gKmluZm8sCisJCQkJc3RydWN0IGxpc3RfaGVhZCAqcGFnZWxpc3QpCit7CisJdTE2IGNrc3VtOworCXN0cnVjdCBwYWdlICpjdXI7CisJc3RydWN0IGZiX2RlZmVycmVkX2lvICpmYmRlZmlvID0gaW5mby0+ZmJkZWZpbzsKKwlzdHJ1Y3QgbWV0cm9ub21lZmJfcGFyICpwYXIgPSBpbmZvLT5wYXI7CisKKwkvKiB3YWxrIHRoZSB3cml0dGVuIHBhZ2UgbGlzdCBhbmQgc3dpenpsZSB0aGUgZGF0YSAqLworCWxpc3RfZm9yX2VhY2hfZW50cnkoY3VyLCAmZmJkZWZpby0+cGFnZWxpc3QsIGxydSkgeworCQlja3N1bSA9IG1ldHJvbm9tZWZiX2RweV91cGRhdGVfcGFnZShwYXIsCisJCQkJCShjdXItPmluZGV4IDw8IFBBR0VfU0hJRlQpKTsKKwkJcGFyLT5tZXRyb21lbV9pbWdfY3N1bSAtPSBwYXItPmNzdW1fdGFibGVbY3VyLT5pbmRleF07CisJCXBhci0+Y3N1bV90YWJsZVtjdXItPmluZGV4XSA9IGNrc3VtOworCQlwYXItPm1ldHJvbWVtX2ltZ19jc3VtICs9IGNrc3VtOworCX0KKworCW1ldHJvbm9tZV9kaXNwbGF5X2NtZChwYXIpOworfQorCitzdGF0aWMgdm9pZCBtZXRyb25vbWVmYl9maWxscmVjdChzdHJ1Y3QgZmJfaW5mbyAqaW5mbywKKwkJCQkgICBjb25zdCBzdHJ1Y3QgZmJfZmlsbHJlY3QgKnJlY3QpCit7CisJc3RydWN0IG1ldHJvbm9tZWZiX3BhciAqcGFyID0gaW5mby0+cGFyOworCisJY2ZiX2ZpbGxyZWN0KGluZm8sIHJlY3QpOworCW1ldHJvbm9tZWZiX2RweV91cGRhdGUocGFyKTsKK30KKworc3RhdGljIHZvaWQgbWV0cm9ub21lZmJfY29weWFyZWEoc3RydWN0IGZiX2luZm8gKmluZm8sCisJCQkJICAgY29uc3Qgc3RydWN0IGZiX2NvcHlhcmVhICphcmVhKQoreworCXN0cnVjdCBtZXRyb25vbWVmYl9wYXIgKnBhciA9IGluZm8tPnBhcjsKKworCWNmYl9jb3B5YXJlYShpbmZvLCBhcmVhKTsKKwltZXRyb25vbWVmYl9kcHlfdXBkYXRlKHBhcik7Cit9CisKK3N0YXRpYyB2b2lkIG1ldHJvbm9tZWZiX2ltYWdlYmxpdChzdHJ1Y3QgZmJfaW5mbyAqaW5mbywKKwkJCQljb25zdCBzdHJ1Y3QgZmJfaW1hZ2UgKmltYWdlKQoreworCXN0cnVjdCBtZXRyb25vbWVmYl9wYXIgKnBhciA9IGluZm8tPnBhcjsKKworCWNmYl9pbWFnZWJsaXQoaW5mbywgaW1hZ2UpOworCW1ldHJvbm9tZWZiX2RweV91cGRhdGUocGFyKTsKK30KKworLyoKKyAqIHRoaXMgaXMgdGhlIHNsb3cgcGF0aCBmcm9tIHVzZXJzcGFjZS4gdGhleSBjYW4gc2VlayBhbmQgd3JpdGUgdG8KKyAqIHRoZSBmYi4gaXQgaXMgYmFzZWQgb24gZmJfc3lzX3dyaXRlCisgKi8KK3N0YXRpYyBzc2l6ZV90IG1ldHJvbm9tZWZiX3dyaXRlKHN0cnVjdCBmYl9pbmZvICppbmZvLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLAorCQkJCXNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKQoreworCXN0cnVjdCBtZXRyb25vbWVmYl9wYXIgKnBhciA9IGluZm8tPnBhcjsKKwl1bnNpZ25lZCBsb25nIHAgPSAqcHBvczsKKwl2b2lkICpkc3Q7CisJaW50IGVyciA9IDA7CisJdW5zaWduZWQgbG9uZyB0b3RhbF9zaXplOworCisJaWYgKGluZm8tPnN0YXRlICE9IEZCSU5GT19TVEFURV9SVU5OSU5HKQorCQlyZXR1cm4gLUVQRVJNOworCisJdG90YWxfc2l6ZSA9IGluZm8tPmZpeC5zbWVtX2xlbjsKKworCWlmIChwID4gdG90YWxfc2l6ZSkKKwkJcmV0dXJuIC1FRkJJRzsKKworCWlmIChjb3VudCA+IHRvdGFsX3NpemUpIHsKKwkJZXJyID0gLUVGQklHOworCQljb3VudCA9IHRvdGFsX3NpemU7CisJfQorCisJaWYgKGNvdW50ICsgcCA+IHRvdGFsX3NpemUpIHsKKwkJaWYgKCFlcnIpCisJCQllcnIgPSAtRU5PU1BDOworCisJCWNvdW50ID0gdG90YWxfc2l6ZSAtIHA7CisJfQorCisJZHN0ID0gKHZvaWQgX19mb3JjZSAqKSAoaW5mby0+c2NyZWVuX2Jhc2UgKyBwKTsKKworCWlmIChjb3B5X2Zyb21fdXNlcihkc3QsIGJ1ZiwgY291bnQpKQorCQllcnIgPSAtRUZBVUxUOworCisJaWYgICghZXJyKQorCQkqcHBvcyArPSBjb3VudDsKKworCW1ldHJvbm9tZWZiX2RweV91cGRhdGUocGFyKTsKKworCXJldHVybiAoZXJyKSA/IGVyciA6IGNvdW50OworfQorCitzdGF0aWMgc3RydWN0IGZiX29wcyBtZXRyb25vbWVmYl9vcHMgPSB7CisJLm93bmVyCQk9IFRISVNfTU9EVUxFLAorCS5mYl93cml0ZQk9IG1ldHJvbm9tZWZiX3dyaXRlLAorCS5mYl9maWxscmVjdAk9IG1ldHJvbm9tZWZiX2ZpbGxyZWN0LAorCS5mYl9jb3B5YXJlYQk9IG1ldHJvbm9tZWZiX2NvcHlhcmVhLAorCS5mYl9pbWFnZWJsaXQJPSBtZXRyb25vbWVmYl9pbWFnZWJsaXQsCit9OworCitzdGF0aWMgc3RydWN0IGZiX2RlZmVycmVkX2lvIG1ldHJvbm9tZWZiX2RlZmlvID0geworCS5kZWxheQkJPSBIWiwKKwkuZGVmZXJyZWRfaW8JPSBtZXRyb25vbWVmYl9kcHlfZGVmZXJyZWRfaW8sCit9OworCitzdGF0aWMgaXJxcmV0dXJuX3QgbWV0cm9ub21lX2hhbmRsZV9pcnEoaW50IGlycSwgdm9pZCAqZGV2X2lkKQoreworCXN0cnVjdCBmYl9pbmZvICppbmZvID0gZGV2X2lkOworCXN0cnVjdCBtZXRyb25vbWVmYl9wYXIgKnBhciA9IGluZm8tPnBhcjsKKworCXdha2VfdXBfaW50ZXJydXB0aWJsZSgmcGFyLT53YWl0cSk7CisJcmV0dXJuIElSUV9IQU5ETEVEOworfQorCitzdGF0aWMgaW50IF9fZGV2aW5pdCBtZXRyb25vbWVmYl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpkZXYpCit7CisJc3RydWN0IGZiX2luZm8gKmluZm87CisJaW50IHJldHZhbCA9IC1FTk9NRU07CisJaW50IHZpZGVvbWVtb3J5c2l6ZTsKKwl1bnNpZ25lZCBjaGFyICp2aWRlb21lbW9yeTsKKwlzdHJ1Y3QgbWV0cm9ub21lZmJfcGFyICpwYXI7CisJY29uc3Qgc3RydWN0IGZpcm13YXJlICpmd19lbnRyeTsKKwlpbnQgY21kX3NpemUsIHdmbV9zaXplLCBpbWdfc2l6ZSwgcGFkZGluZ19zaXplLCB0b3RhbHNpemU7CisJaW50IGk7CisKKwkvKiB3ZSBoYXZlIHR3byBibG9ja3Mgb2YgbWVtb3J5LgorCWluZm8tPnNjcmVlbl9iYXNlIHdoaWNoIGlzIHZtLCBhbmQgaXMgdGhlIGZiIHVzZWQgYnkgYXBwcy4KKwlwYXItPm1ldHJvbWVtIHdoaWNoIGlzIHBoeXNpY2FsbHkgY29udGlndW91cyBtZW1vcnkgYW5kCisJY29udGFpbnMgdGhlIGRpc3BsYXkgY29udHJvbGxlciBjb21tYW5kcywgd2F2ZWZvcm0sCisJcHJvY2Vzc2VkIGltYWdlIGRhdGEgYW5kIHBhZGRpbmcuIHRoaXMgaXMgdGhlIGRhdGEgcHVsbGVkCisJYnkgdGhlIHB4YTI1NSdzIExDRCBjb250cm9sbGVyIGFuZCBwdXNoZWQgdG8gTWV0cm9ub21lICovCisKKwl2aWRlb21lbW9yeXNpemUgPSAoRFBZX1cqRFBZX0gpOworCXZpZGVvbWVtb3J5ID0gdm1hbGxvYyh2aWRlb21lbW9yeXNpemUpOworCWlmICghdmlkZW9tZW1vcnkpCisJCXJldHVybiByZXR2YWw7CisKKwltZW1zZXQodmlkZW9tZW1vcnksIDAsIHZpZGVvbWVtb3J5c2l6ZSk7CisKKwlpbmZvID0gZnJhbWVidWZmZXJfYWxsb2Moc2l6ZW9mKHN0cnVjdCBtZXRyb25vbWVmYl9wYXIpLCAmZGV2LT5kZXYpOworCWlmICghaW5mbykKKwkJZ290byBlcnJfdmZyZWU7CisKKwlpbmZvLT5zY3JlZW5fYmFzZSA9IChjaGFyIF9faW9tZW0gKikgdmlkZW9tZW1vcnk7CisJaW5mby0+ZmJvcHMgPSAmbWV0cm9ub21lZmJfb3BzOworCisJaW5mby0+dmFyID0gbWV0cm9ub21lZmJfdmFyOworCWluZm8tPmZpeCA9IG1ldHJvbm9tZWZiX2ZpeDsKKwlpbmZvLT5maXguc21lbV9sZW4gPSB2aWRlb21lbW9yeXNpemU7CisJcGFyID0gaW5mby0+cGFyOworCXBhci0+aW5mbyA9IGluZm87CisJaW5pdF93YWl0cXVldWVfaGVhZCgmcGFyLT53YWl0cSk7CisKKwkvKiB0aGlzIHRhYmxlIGNhY2hlcyBwZXIgcGFnZSBjc3VtIHZhbHVlcy4gKi8KKwlwYXItPmNzdW1fdGFibGUgPSB2bWFsbG9jKHZpZGVvbWVtb3J5c2l6ZS9QQUdFX1NJWkUpOworCWlmICghcGFyLT5jc3VtX3RhYmxlKQorCQlnb3RvIGVycl9jc3VtX3RhYmxlOworCisJLyogdGhlIG1ldHJvbWVtIGJ1ZmZlciBpcyBkaXZpZGVkIGFzIGZvbGxvd3M6CisJY29tbWFuZCB8IENSQyB8IHBhZGRpbmcKKwkxNmtiIHdhdmVmb3JtIGRhdGEgfCBDUkMgfCBwYWRkaW5nCisJaW1hZ2UgZGF0YSB8IENSQworCWFuZCBhbiBleHRyYSAyNTYgYnl0ZXMgZm9yIGRtYSBkZXNjcmlwdG9ycworCWVnOiBJVz04MzIgSUg9NjIyIFdTPTEyOAorCSovCisKKwljbWRfc2l6ZSA9IDEgKiBlcGRfZnJhbWVfdGFibGVbMF0uZnc7CisJd2ZtX3NpemUgPSAoKDE2KjEwMjQgKyAyICsgZXBkX2ZyYW1lX3RhYmxlWzBdLmZ3IC0gMSkKKwkJCS8gZXBkX2ZyYW1lX3RhYmxlWzBdLmZ3KSAqIGVwZF9mcmFtZV90YWJsZVswXS5mdzsKKwlpbWdfc2l6ZSA9IGVwZF9mcmFtZV90YWJsZVswXS5maCAqIGVwZF9mcmFtZV90YWJsZVswXS5mdzsKKwlwYWRkaW5nX3NpemUgPSA0ICogZXBkX2ZyYW1lX3RhYmxlWzBdLmZ3OworCXRvdGFsc2l6ZSA9IGNtZF9zaXplICsgd2ZtX3NpemUgKyBpbWdfc2l6ZSArIHBhZGRpbmdfc2l6ZTsKKwlwYXItPm1ldHJvbWVtc2l6ZSA9IFBBR0VfQUxJR04odG90YWxzaXplICsgMjU2KTsKKwlEUFJJTlRLKCJkZXNpcmVkIG1lbW9yeSBzaXplID0gJWRcbiIsIHBhci0+bWV0cm9tZW1zaXplKTsKKwlkZXYtPmRldi5jb2hlcmVudF9kbWFfbWFzayA9IDB4ZmZmZmZmZmZ1bGw7CisJcGFyLT5tZXRyb21lbSA9IGRtYV9hbGxvY193cml0ZWNvbWJpbmUoJmRldi0+ZGV2LCBwYXItPm1ldHJvbWVtc2l6ZSwKKwkJCQkJCSZwYXItPm1ldHJvbWVtX2RtYSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFwYXItPm1ldHJvbWVtKSB7CisJCXByaW50ayhLRVJOX0VSUgorCQkJIm1ldHJvbm9tZWZiOiB1bmFibGUgdG8gYWxsb2NhdGUgZG1hIGJ1ZmZlclxuIik7CisJCWdvdG8gZXJyX3ZmcmVlOworCX0KKworCWluZm8tPmZpeC5zbWVtX3N0YXJ0ID0gcGFyLT5tZXRyb21lbV9kbWE7CisJcGFyLT5tZXRyb21lbV9jbWQgPSAoc3RydWN0IG1ldHJvbWVtX2NtZCAqKSBwYXItPm1ldHJvbWVtOworCXBhci0+bWV0cm9tZW1fd2ZtID0gcGFyLT5tZXRyb21lbSArIGNtZF9zaXplOworCXBhci0+bWV0cm9tZW1faW1nID0gcGFyLT5tZXRyb21lbSArIGNtZF9zaXplICsgd2ZtX3NpemU7CisJcGFyLT5tZXRyb21lbV9pbWdfY3N1bSA9ICh1MTYgKikgKHBhci0+bWV0cm9tZW1faW1nICsKKwkJCQkJKGVwZF9mcmFtZV90YWJsZVswXS5mdyAqIERQWV9IKSk7CisJRFBSSU5USygiaW1nIG9mZnNldD0weCV4XG4iLCBjbWRfc2l6ZSArIHdmbV9zaXplKTsKKwlwYXItPm1ldHJvbWVtX2Rlc2MgPSAoc3RydWN0IG1ldHJvbWVtX2Rlc2MgKikgKHBhci0+bWV0cm9tZW0gKyBjbWRfc2l6ZQorCQkJCQkrIHdmbV9zaXplICsgaW1nX3NpemUgKyBwYWRkaW5nX3NpemUpOworCXBhci0+bWV0cm9tZW1fZGVzY19kbWEgPSBwYXItPm1ldHJvbWVtX2RtYSArIGNtZF9zaXplICsgd2ZtX3NpemUKKwkJCQkgKyBpbWdfc2l6ZSArIHBhZGRpbmdfc2l6ZTsKKworCS8qIGxvYWQgdGhlIHdhdmVmb3JtIGluLiBhc3N1bWUgbW9kZSAzLCB0ZW1wIDMxIGZvciBub3cgKi8KKwkvKiAJYSkgcmVxdWVzdCB0aGUgd2F2ZWZvcm0gZmlsZSBmcm9tIHVzZXJzcGFjZQorCQliKSBwcm9jZXNzIHdhdmVmb3JtIGFuZCBkZWNvZGUgaW50byBtZXRyb21lbSAqLworCisJcmV0dmFsID0gcmVxdWVzdF9maXJtd2FyZSgmZndfZW50cnksICJ3YXZlZm9ybS53YmYiLCAmZGV2LT5kZXYpOworCWlmIChyZXR2YWwgPCAwKSB7CisJCXByaW50ayhLRVJOX0VSUiAibWV0cm9ub21lZmI6IGNvdWxkbid0IGdldCB3YXZlZm9ybVxuIik7CisJCWdvdG8gZXJyX2RtYV9mcmVlOworCX0KKworCXJldHZhbCA9IGxvYWRfd2F2ZWZvcm0oKHU4ICopIGZ3X2VudHJ5LT5kYXRhLCBmd19lbnRyeS0+c2l6ZSwKKwkJCQlwYXItPm1ldHJvbWVtX3dmbSwgMywgMzEsICZwYXItPmZyYW1lX2NvdW50KTsKKwlpZiAocmV0dmFsIDwgMCkgeworCQlwcmludGsoS0VSTl9FUlIgIm1ldHJvbm9tZWZiOiBjb3VsZG4ndCBwcm9jZXNzIHdhdmVmb3JtXG4iKTsKKwkJZ290byBlcnJfbGRfd2ZtOworCX0KKwlyZWxlYXNlX2Zpcm13YXJlKGZ3X2VudHJ5KTsKKworCXJldHZhbCA9IHJlcXVlc3RfaXJxKElSUV9HUElPKFJEWV9HUElPX1BJTiksIG1ldHJvbm9tZV9oYW5kbGVfaXJxLAorCQkJCUlSUUZfRElTQUJMRUQsICJNZXRyb25vbWUiLCBpbmZvKTsKKwlpZiAocmV0dmFsKSB7CisJCWRldl9lcnIoJmRldi0+ZGV2LCAicmVxdWVzdF9pcnEgZmFpbGVkOiAlZFxuIiwgcmV0dmFsKTsKKwkJZ290byBlcnJfbGRfd2ZtOworCX0KKwlzZXRfaXJxX3R5cGUoSVJRX0dQSU8oUkRZX0dQSU9fUElOKSwgSVJRVF9GQUxMSU5HKTsKKworCXJldHZhbCA9IG1ldHJvbm9tZV9pbml0X3JlZ3MocGFyKTsKKwlpZiAocmV0dmFsIDwgMCkKKwkJZ290byBlcnJfZnJlZV9pcnE7CisKKwlpbmZvLT5mbGFncyA9IEZCSU5GT19GTEFHX0RFRkFVTFQ7CisKKwlpbmZvLT5mYmRlZmlvID0gJm1ldHJvbm9tZWZiX2RlZmlvOworCWZiX2RlZmVycmVkX2lvX2luaXQoaW5mbyk7CisKKwlyZXR2YWwgPSBmYl9hbGxvY19jbWFwKCZpbmZvLT5jbWFwLCA4LCAwKTsKKwlpZiAocmV0dmFsIDwgMCkgeworCQlwcmludGsoS0VSTl9FUlIgIkZhaWxlZCB0byBhbGxvY2F0ZSBjb2xvcm1hcFxuIik7CisJCWdvdG8gZXJyX2ZiX3JlbDsKKwl9CisKKwkvKiBzZXQgY21hcCAqLworCWZvciAoaSA9IDA7IGkgPCA4OyBpKyspCisJCWluZm8tPmNtYXAucmVkW2ldID0gKCgoMippKSsxKSooMHhGRkZGKSkvMTY7CisJbWVtY3B5KGluZm8tPmNtYXAuZ3JlZW4sIGluZm8tPmNtYXAucmVkLCBzaXplb2YodTE2KSo4KTsKKwltZW1jcHkoaW5mby0+Y21hcC5ibHVlLCBpbmZvLT5jbWFwLnJlZCwgc2l6ZW9mKHUxNikqOCk7CisKKwlyZXR2YWwgPSByZWdpc3Rlcl9mcmFtZWJ1ZmZlcihpbmZvKTsKKwlpZiAocmV0dmFsIDwgMCkKKwkJZ290byBlcnJfY21hcDsKKworCXBsYXRmb3JtX3NldF9kcnZkYXRhKGRldiwgaW5mbyk7CisKKwlwcmludGsoS0VSTl9JTkZPCisJCSJmYiVkOiBNZXRyb25vbWUgZnJhbWUgYnVmZmVyIGRldmljZSwgdXNpbmcgJWRLIG9mIHZpZGVvIgorCQkiIG1lbW9yeVxuIiwgaW5mby0+bm9kZSwgdmlkZW9tZW1vcnlzaXplID4+IDEwKTsKKworCXJldHVybiAwOworCitlcnJfY21hcDoKKwlmYl9kZWFsbG9jX2NtYXAoJmluZm8tPmNtYXApOworZXJyX2ZiX3JlbDoKKwlmcmFtZWJ1ZmZlcl9yZWxlYXNlKGluZm8pOworZXJyX2ZyZWVfaXJxOgorCWZyZWVfaXJxKElSUV9HUElPKFJEWV9HUElPX1BJTiksIGluZm8pOworZXJyX2xkX3dmbToKKwlyZWxlYXNlX2Zpcm13YXJlKGZ3X2VudHJ5KTsKK2Vycl9kbWFfZnJlZToKKwlkbWFfZnJlZV93cml0ZWNvbWJpbmUoJmRldi0+ZGV2LCBwYXItPm1ldHJvbWVtc2l6ZSwgcGFyLT5tZXRyb21lbSwKKwkJCQlwYXItPm1ldHJvbWVtX2RtYSk7CitlcnJfY3N1bV90YWJsZToKKwl2ZnJlZShwYXItPmNzdW1fdGFibGUpOworZXJyX3ZmcmVlOgorCXZmcmVlKHZpZGVvbWVtb3J5KTsKKwlyZXR1cm4gcmV0dmFsOworfQorCitzdGF0aWMgaW50IF9fZGV2ZXhpdCBtZXRyb25vbWVmYl9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2KQoreworCXN0cnVjdCBmYl9pbmZvICppbmZvID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEoZGV2KTsKKworCWlmIChpbmZvKSB7CisJCXN0cnVjdCBtZXRyb25vbWVmYl9wYXIgKnBhciA9IGluZm8tPnBhcjsKKwkJZmJfZGVmZXJyZWRfaW9fY2xlYW51cChpbmZvKTsKKwkJZG1hX2ZyZWVfd3JpdGVjb21iaW5lKCZkZXYtPmRldiwgcGFyLT5tZXRyb21lbXNpemUsCisJCQkJCXBhci0+bWV0cm9tZW0sIHBhci0+bWV0cm9tZW1fZG1hKTsKKwkJZmJfZGVhbGxvY19jbWFwKCZpbmZvLT5jbWFwKTsKKwkJdmZyZWUocGFyLT5jc3VtX3RhYmxlKTsKKwkJdW5yZWdpc3Rlcl9mcmFtZWJ1ZmZlcihpbmZvKTsKKwkJdmZyZWUoKHZvaWQgX19mb3JjZSAqKWluZm8tPnNjcmVlbl9iYXNlKTsKKwkJZnJlZV9pcnEoSVJRX0dQSU8oUkRZX0dQSU9fUElOKSwgaW5mbyk7CisJCWZyYW1lYnVmZmVyX3JlbGVhc2UoaW5mbyk7CisJfQorCXJldHVybiAwOworfQorCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtZXRyb25vbWVmYl9kcml2ZXIgPSB7CisJLnByb2JlCT0gbWV0cm9ub21lZmJfcHJvYmUsCisJLnJlbW92ZSA9IG1ldHJvbm9tZWZiX3JlbW92ZSwKKwkuZHJpdmVyCT0geworCQkubmFtZQk9ICJtZXRyb25vbWVmYiIsCisJfSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICptZXRyb25vbWVmYl9kZXZpY2U7CisKK3N0YXRpYyBpbnQgX19pbml0IG1ldHJvbm9tZWZiX2luaXQodm9pZCkKK3sKKwlpbnQgcmV0OworCisJaWYgKCFtZXRyb25vbWVmYl9lbmFibGUpIHsKKwkJcHJpbnRrKEtFUk5fRVJSCisJCQkiVXNlIG1ldHJvbm9tZWZiX2VuYWJsZSB0byBlbmFibGUgdGhlIGRldmljZVxuIik7CisJCXJldHVybiAtRU5YSU87CisJfQorCisJcmV0ID0gcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKCZtZXRyb25vbWVmYl9kcml2ZXIpOworCWlmICghcmV0KSB7CisJCW1ldHJvbm9tZWZiX2RldmljZSA9IHBsYXRmb3JtX2RldmljZV9hbGxvYygibWV0cm9ub21lZmIiLCAwKTsKKwkJaWYgKG1ldHJvbm9tZWZiX2RldmljZSkKKwkJCXJldCA9IHBsYXRmb3JtX2RldmljZV9hZGQobWV0cm9ub21lZmJfZGV2aWNlKTsKKwkJZWxzZQorCQkJcmV0ID0gLUVOT01FTTsKKworCQlpZiAocmV0KSB7CisJCQlwbGF0Zm9ybV9kZXZpY2VfcHV0KG1ldHJvbm9tZWZiX2RldmljZSk7CisJCQlwbGF0Zm9ybV9kcml2ZXJfdW5yZWdpc3RlcigmbWV0cm9ub21lZmJfZHJpdmVyKTsKKwkJfQorCX0KKwlyZXR1cm4gcmV0OworCit9CisKK3N0YXRpYyB2b2lkIF9fZXhpdCBtZXRyb25vbWVmYl9leGl0KHZvaWQpCit7CisJcGxhdGZvcm1fZGV2aWNlX3VucmVnaXN0ZXIobWV0cm9ub21lZmJfZGV2aWNlKTsKKwlwbGF0Zm9ybV9kcml2ZXJfdW5yZWdpc3RlcigmbWV0cm9ub21lZmJfZHJpdmVyKTsKK30KKworbW9kdWxlX3BhcmFtKG1ldHJvbm9tZWZiX2VuYWJsZSwgdWludCwgMCk7CitNT0RVTEVfUEFSTV9ERVNDKG1ldHJvbm9tZWZiX2VuYWJsZSwgIkVuYWJsZSBjb21tdW5pY2F0aW9uIHdpdGggTWV0cm9ub21lIik7CisKK21vZHVsZV9pbml0KG1ldHJvbm9tZWZiX2luaXQpOworbW9kdWxlX2V4aXQobWV0cm9ub21lZmJfZXhpdCk7CisKK01PRFVMRV9ERVNDUklQVElPTigiZmJkZXYgZHJpdmVyIGZvciBNZXRyb25vbWUgY29udHJvbGxlciIpOworTU9EVUxFX0FVVEhPUigiSmF5YSBLdW1hciIpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aXJ0aW8vdmlydGlvX2JhbGxvb24uYyBiL2RyaXZlcnMvdmlydGlvL3ZpcnRpb19iYWxsb29uLmMKaW5kZXggYzhhNDMzMi4uMGIzZWZjMyAxMDA2NDQKLS0tIGEvZHJpdmVycy92aXJ0aW8vdmlydGlvX2JhbGxvb24uYworKysgYi9kcml2ZXJzL3ZpcnRpby92aXJ0aW9fYmFsbG9vbi5jCkBAIC0xNTIsNyArMTUyLDcgQEAKIAl3YWtlX3VwKCZ2Yi0+Y29uZmlnX2NoYW5nZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgaW50IHRvd2FyZHNfdGFyZ2V0KHN0cnVjdCB2aXJ0aW9fYmFsbG9vbiAqdmIpCitzdGF0aWMgaW5saW5lIHM2NCB0b3dhcmRzX3RhcmdldChzdHJ1Y3QgdmlydGlvX2JhbGxvb24gKnZiKQogewogCXUzMiB2OwogCV9fdmlydGlvX2NvbmZpZ192YWwodmItPnZkZXYsCkBAIC0xNzYsNyArMTc2LDcgQEAKIAogCXNldF9mcmVlemFibGUoKTsKIAl3aGlsZSAoIWt0aHJlYWRfc2hvdWxkX3N0b3AoKSkgewotCQlpbnQgZGlmZjsKKwkJczY0IGRpZmY7CiAKIAkJdHJ5X3RvX2ZyZWV6ZSgpOwogCQl3YWl0X2V2ZW50X2ludGVycnVwdGlibGUodmItPmNvbmZpZ19jaGFuZ2UsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpLmMgYi9kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpLmMKaW5kZXggMjZmNzg3ZC4uYzBkZjkyNCAxMDA2NDQKLS0tIGEvZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaS5jCisrKyBiL2RyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2kuYwpAQCAtMzcsNyArMzcsNyBAQAogCXN0cnVjdCBwY2lfZGV2ICpwY2lfZGV2OwogCiAJLyogdGhlIElPIG1hcHBpbmcgZm9yIHRoZSBQQ0kgY29uZmlnIHNwYWNlICovCi0Jdm9pZCAqaW9hZGRyOworCXZvaWQgX19pb21lbSAqaW9hZGRyOwogCiAJLyogYSBsaXN0IG9mIHF1ZXVlcyBzbyB3ZSBjYW4gZGlzcGF0Y2ggSVJRcyAqLwogCXNwaW5sb2NrX3QgbG9jazsKQEAgLTExMSw3ICsxMTEsNyBAQAogCQkgICB2b2lkICpidWYsIHVuc2lnbmVkIGxlbikKIHsKIAlzdHJ1Y3QgdmlydGlvX3BjaV9kZXZpY2UgKnZwX2RldiA9IHRvX3ZwX2RldmljZSh2ZGV2KTsKLQl2b2lkICppb2FkZHIgPSB2cF9kZXYtPmlvYWRkciArIFZJUlRJT19QQ0lfQ09ORklHICsgb2Zmc2V0OworCXZvaWQgX19pb21lbSAqaW9hZGRyID0gdnBfZGV2LT5pb2FkZHIgKyBWSVJUSU9fUENJX0NPTkZJRyArIG9mZnNldDsKIAl1OCAqcHRyID0gYnVmOwogCWludCBpOwogCkBAIC0xMjUsNyArMTI1LDcgQEAKIAkJICAgY29uc3Qgdm9pZCAqYnVmLCB1bnNpZ25lZCBsZW4pCiB7CiAJc3RydWN0IHZpcnRpb19wY2lfZGV2aWNlICp2cF9kZXYgPSB0b192cF9kZXZpY2UodmRldik7Ci0Jdm9pZCAqaW9hZGRyID0gdnBfZGV2LT5pb2FkZHIgKyBWSVJUSU9fUENJX0NPTkZJRyArIG9mZnNldDsKKwl2b2lkIF9faW9tZW0gKmlvYWRkciA9IHZwX2Rldi0+aW9hZGRyICsgVklSVElPX1BDSV9DT05GSUcgKyBvZmZzZXQ7CiAJY29uc3QgdTggKnB0ciA9IGJ1ZjsKIAlpbnQgaTsKIApAQCAtMTc3LDYgKzE3Nyw3IEBACiAJc3RydWN0IHZpcnRpb19wY2lfZGV2aWNlICp2cF9kZXYgPSBvcGFxdWU7CiAJc3RydWN0IHZpcnRpb19wY2lfdnFfaW5mbyAqaW5mbzsKIAlpcnFyZXR1cm5fdCByZXQgPSBJUlFfTk9ORTsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOwogCXU4IGlzcjsKIAogCS8qIHJlYWRpbmcgdGhlIElTUiBoYXMgdGhlIGVmZmVjdCBvZiBhbHNvIGNsZWFyaW5nIGl0IHNvIGl0J3MgdmVyeQpAQCAtMTk3LDEyICsxOTgsMTIgQEAKIAkJCWRydi0+Y29uZmlnX2NoYW5nZWQoJnZwX2Rldi0+dmRldik7CiAJfQogCi0Jc3Bpbl9sb2NrKCZ2cF9kZXYtPmxvY2spOworCXNwaW5fbG9ja19pcnFzYXZlKCZ2cF9kZXYtPmxvY2ssIGZsYWdzKTsKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGluZm8sICZ2cF9kZXYtPnZpcnRxdWV1ZXMsIG5vZGUpIHsKIAkJaWYgKHZyaW5nX2ludGVycnVwdChpcnEsIGluZm8tPnZxKSA9PSBJUlFfSEFORExFRCkKIAkJCXJldCA9IElSUV9IQU5ETEVEOwogCX0KLQlzcGluX3VubG9jaygmdnBfZGV2LT5sb2NrKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ2cF9kZXYtPmxvY2ssIGZsYWdzKTsKIAogCXJldHVybiByZXQ7CiB9CkBAIC0yMTQsNiArMjE1LDcgQEAKIAlzdHJ1Y3QgdmlydGlvX3BjaV9kZXZpY2UgKnZwX2RldiA9IHRvX3ZwX2RldmljZSh2ZGV2KTsKIAlzdHJ1Y3QgdmlydGlvX3BjaV92cV9pbmZvICppbmZvOwogCXN0cnVjdCB2aXJ0cXVldWUgKnZxOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJdTE2IG51bTsKIAlpbnQgZXJyOwogCkBAIC0yNTUsOSArMjU3LDkgQEAKIAl2cS0+cHJpdiA9IGluZm87CiAJaW5mby0+dnEgPSB2cTsKIAotCXNwaW5fbG9jaygmdnBfZGV2LT5sb2NrKTsKKwlzcGluX2xvY2tfaXJxc2F2ZSgmdnBfZGV2LT5sb2NrLCBmbGFncyk7CiAJbGlzdF9hZGQoJmluZm8tPm5vZGUsICZ2cF9kZXYtPnZpcnRxdWV1ZXMpOwotCXNwaW5fdW5sb2NrKCZ2cF9kZXYtPmxvY2spOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnZwX2Rldi0+bG9jaywgZmxhZ3MpOwogCiAJcmV0dXJuIHZxOwogCkBAIC0yNzQsMTAgKzI3NiwxMSBAQAogewogCXN0cnVjdCB2aXJ0aW9fcGNpX2RldmljZSAqdnBfZGV2ID0gdG9fdnBfZGV2aWNlKHZxLT52ZGV2KTsKIAlzdHJ1Y3QgdmlydGlvX3BjaV92cV9pbmZvICppbmZvID0gdnEtPnByaXY7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKIAotCXNwaW5fbG9jaygmdnBfZGV2LT5sb2NrKTsKKwlzcGluX2xvY2tfaXJxc2F2ZSgmdnBfZGV2LT5sb2NrLCBmbGFncyk7CiAJbGlzdF9kZWwoJmluZm8tPm5vZGUpOwotCXNwaW5fdW5sb2NrKCZ2cF9kZXYtPmxvY2spOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnZwX2Rldi0+bG9jaywgZmxhZ3MpOwogCiAJdnJpbmdfZGVsX3ZpcnRxdWV1ZSh2cSk7CiAKQEAgLTM4NSw2ICszODgsNyBAQAogewogCXN0cnVjdCB2aXJ0aW9fcGNpX2RldmljZSAqdnBfZGV2ID0gcGNpX2dldF9kcnZkYXRhKHBjaV9kZXYpOwogCisJdW5yZWdpc3Rlcl92aXJ0aW9fZGV2aWNlKCZ2cF9kZXYtPnZkZXYpOwogCWZyZWVfaXJxKHBjaV9kZXYtPmlycSwgdnBfZGV2KTsKIAlwY2lfc2V0X2RydmRhdGEocGNpX2RldiwgTlVMTCk7CiAJcGNpX2lvdW5tYXAocGNpX2RldiwgdnBfZGV2LT5pb2FkZHIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aXJ0aW8vdmlydGlvX3JpbmcuYyBiL2RyaXZlcnMvdmlydGlvL3ZpcnRpb19yaW5nLmMKaW5kZXggM2EyOGMxMy4uYzJmYTVjNiAxMDA2NDQKLS0tIGEvZHJpdmVycy92aXJ0aW8vdmlydGlvX3JpbmcuYworKysgYi9kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcmluZy5jCkBAIC0yMTQsMTAgKzIxNCw3IEBACiB7CiAJc3RydWN0IHZyaW5nX3ZpcnRxdWV1ZSAqdnEgPSB0b192dnEoX3ZxKTsKIAotCVNUQVJUX1VTRSh2cSk7Ci0JQlVHX09OKHZxLT52cmluZy5hdmFpbC0+ZmxhZ3MgJiBWUklOR19BVkFJTF9GX05PX0lOVEVSUlVQVCk7CiAJdnEtPnZyaW5nLmF2YWlsLT5mbGFncyB8PSBWUklOR19BVkFJTF9GX05PX0lOVEVSUlVQVDsKLQlFTkRfVVNFKHZxKTsKIH0KIAogc3RhdGljIGJvb2wgdnJpbmdfZW5hYmxlX2NiKHN0cnVjdCB2aXJ0cXVldWUgKl92cSkKQEAgLTIzMiw3ICsyMjksNiBAQAogCXZxLT52cmluZy5hdmFpbC0+ZmxhZ3MgJj0gflZSSU5HX0FWQUlMX0ZfTk9fSU5URVJSVVBUOwogCW1iKCk7CiAJaWYgKHVubGlrZWx5KG1vcmVfdXNlZCh2cSkpKSB7Ci0JCXZxLT52cmluZy5hdmFpbC0+ZmxhZ3MgfD0gVlJJTkdfQVZBSUxfRl9OT19JTlRFUlJVUFQ7CiAJCUVORF9VU0UodnEpOwogCQlyZXR1cm4gZmFsc2U7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy93YXRjaGRvZy9hdDMyYXA3MDB4X3dkdC5jIGIvZHJpdmVycy93YXRjaGRvZy9hdDMyYXA3MDB4X3dkdC5jCmluZGV4IGZiNWVkNjQuLmFlMGZjYTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvd2F0Y2hkb2cvYXQzMmFwNzAweF93ZHQuYworKysgYi9kcml2ZXJzL3dhdGNoZG9nL2F0MzJhcDcwMHhfd2R0LmMKQEAgLTQxOCw2ICs0MTgsOSBAQAogI2RlZmluZSBhdDMyX3dkdF9yZXN1bWUgTlVMTAogI2VuZGlmCiAKKy8qIHdvcmsgd2l0aCBob3RwbHVnIGFuZCBjb2xkcGx1ZyAqLworTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybTphdDMyX3dkdCIpOworCiBzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBhdDMyX3dkdF9kcml2ZXIgPSB7CiAJLnJlbW92ZQkJPSBfX2V4aXRfcChhdDMyX3dkdF9yZW1vdmUpLAogCS5zdXNwZW5kCT0gYXQzMl93ZHRfc3VzcGVuZCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvd2F0Y2hkb2cvYXQ5MXJtOTIwMF93ZHQuYyBiL2RyaXZlcnMvd2F0Y2hkb2cvYXQ5MXJtOTIwMF93ZHQuYwppbmRleCBhNjg0YjFlLi45ZmY5YTk1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3dhdGNoZG9nL2F0OTFybTkyMDBfd2R0LmMKKysrIGIvZHJpdmVycy93YXRjaGRvZy9hdDkxcm05MjAwX3dkdC5jCkBAIC0yODYsMyArMjg2LDQgQEAKIE1PRFVMRV9ERVNDUklQVElPTigiV2F0Y2hkb2cgZHJpdmVyIGZvciBBdG1lbCBBVDkxUk05MjAwIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CiBNT0RVTEVfQUxJQVNfTUlTQ0RFVihXQVRDSERPR19NSU5PUik7CitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOmF0OTFfd2R0Iik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3dhdGNoZG9nL2RhdmluY2lfd2R0LmMgYi9kcml2ZXJzL3dhdGNoZG9nL2RhdmluY2lfd2R0LmMKaW5kZXggYTYxY2JkNC4uMTc4MmM3OSAxMDA2NDQKLS0tIGEvZHJpdmVycy93YXRjaGRvZy9kYXZpbmNpX3dkdC5jCisrKyBiL2RyaXZlcnMvd2F0Y2hkb2cvZGF2aW5jaV93ZHQuYwpAQCAtMjQ4LDYgKzI0OCw3IEBACiBzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBwbGF0Zm9ybV93ZHRfZHJpdmVyID0gewogCS5kcml2ZXIgPSB7CiAJCS5uYW1lID0gIndhdGNoZG9nIiwKKwkJLm93bmVyCT0gVEhJU19NT0RVTEUsCiAJfSwKIAkucHJvYmUgPSBkYXZpbmNpX3dkdF9wcm9iZSwKIAkucmVtb3ZlID0gZGF2aW5jaV93ZHRfcmVtb3ZlLApAQCAtMjc3LDMgKzI3OCw0IEBACiAKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKIE1PRFVMRV9BTElBU19NSVNDREVWKFdBVENIRE9HX01JTk9SKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06d2F0Y2hkb2ciKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvd2F0Y2hkb2cvaXQ4NzEyZl93ZHQuYyBiL2RyaXZlcnMvd2F0Y2hkb2cvaXQ4NzEyZl93ZHQuYwppbmRleCAxZWZjYWQzLi40NDViN2U4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3dhdGNoZG9nL2l0ODcxMmZfd2R0LmMKKysrIGIvZHJpdmVycy93YXRjaGRvZy9pdDg3MTJmX3dkdC5jCkBAIC0xMTEsMTUgKzExMSw2IEBACiAJcmV0dXJuIHZhbDsKIH0KIAotc3RhdGljIHZvaWQKLXN1cGVyaW9fb3V0dyhpbnQgdmFsLCBpbnQgcmVnKQotewotCW91dGIocmVnKyssIFJFRyk7Ci0Jb3V0YigodmFsID4+IDgpICYgMHhmZiwgVkFMKTsKLQlvdXRiKHJlZywgUkVHKTsKLQlvdXRiKHZhbCAmIDB4ZmYsIFZBTCk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgdm9pZAogc3VwZXJpb19zZWxlY3QoaW50IGxkbikKIHsKQEAgLTE3MCw5ICsxNjEsOCBAQAogCXN1cGVyaW9fb3V0Yihjb25maWcsIFdEVF9DT05GSUcpOwogCiAJaWYgKHJldmlzaW9uID49IDB4MDgpCi0JCXN1cGVyaW9fb3V0dyh1bml0cywgV0RUX1RJTUVPVVQpOwotCWVsc2UKLQkJc3VwZXJpb19vdXRiKHVuaXRzLCBXRFRfVElNRU9VVCk7CisJCXN1cGVyaW9fb3V0Yih1bml0cyA+PiA4LCBXRFRfVElNRU9VVCArIDEpOworCXN1cGVyaW9fb3V0Yih1bml0cywgV0RUX1RJTUVPVVQpOwogfQogCiBzdGF0aWMgaW50CkBAIC0yMTAsNiArMjAwLDggQEAKIAogCXN1cGVyaW9fb3V0YigwLCBXRFRfQ09ORklHKTsKIAlzdXBlcmlvX291dGIoMCwgV0RUX0NPTlRST0wpOworCWlmIChyZXZpc2lvbiA+PSAweDA4KQorCQlzdXBlcmlvX291dGIoMCwgV0RUX1RJTUVPVVQgKyAxKTsKIAlzdXBlcmlvX291dGIoMCwgV0RUX1RJTUVPVVQpOwogCiAJc3VwZXJpb19leGl0KCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3dhdGNoZG9nL2tzODY5NV93ZHQuYyBiL2RyaXZlcnMvd2F0Y2hkb2cva3M4Njk1X3dkdC5jCmluZGV4IGUzYTI5YzMuLmRmNWE2YjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvd2F0Y2hkb2cva3M4Njk1X3dkdC5jCisrKyBiL2RyaXZlcnMvd2F0Y2hkb2cva3M4Njk1X3dkdC5jCkBAIC0zMDYsMyArMzA2LDQgQEAKIE1PRFVMRV9ERVNDUklQVElPTigiV2F0Y2hkb2cgZHJpdmVyIGZvciBLUzg2OTUiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKIE1PRFVMRV9BTElBU19NSVNDREVWKFdBVENIRE9HX01JTk9SKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06a3M4Njk1X3dkdCIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy93YXRjaGRvZy9tcGM4M3h4X3dkdC5jIGIvZHJpdmVycy93YXRjaGRvZy9tcGM4M3h4X3dkdC5jCmluZGV4IDYzNjlmNTYuLmIxNmM1Y2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvd2F0Y2hkb2cvbXBjODN4eF93ZHQuYworKysgYi9kcml2ZXJzL3dhdGNoZG9nL21wYzgzeHhfd2R0LmMKQEAgLTIwNiw2ICsyMDYsNyBAQAogCS5yZW1vdmUJCT0gX19kZXZleGl0X3AobXBjODN4eF93ZHRfcmVtb3ZlKSwKIAkuZHJpdmVyCQk9IHsKIAkJLm5hbWUJPSAibXBjODN4eF93ZHQiLAorCQkub3duZXIJPSBUSElTX01PRFVMRSwKIAl9LAogfTsKIApAQCAtMjI2LDMgKzIyNyw0IEBACiBNT0RVTEVfREVTQ1JJUFRJT04oIkRyaXZlciBmb3Igd2F0Y2hkb2cgdGltZXIgaW4gTVBDODN4eCB1UHJvY2Vzc29yIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CiBNT0RVTEVfQUxJQVNfTUlTQ0RFVihXQVRDSERPR19NSU5PUik7CitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOm1wYzgzeHhfd2R0Iik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3dhdGNoZG9nL21wY29yZV93ZHQuYyBiL2RyaXZlcnMvd2F0Y2hkb2cvbXBjb3JlX3dkdC5jCmluZGV4IDBkMmIyNzcuLjAwOTU3M2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvd2F0Y2hkb2cvbXBjb3JlX3dkdC5jCisrKyBiL2RyaXZlcnMvd2F0Y2hkb2cvbXBjb3JlX3dkdC5jCkBAIC0zOTIsNiArMzkyLDkgQEAKIAlyZXR1cm4gMDsKIH0KIAorLyogd29yayB3aXRoIGhvdHBsdWcgYW5kIGNvbGRwbHVnICovCitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOm1wY29yZV93ZHQiKTsKKwogc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXBjb3JlX3dkdF9kcml2ZXIgPSB7CiAJLnByb2JlCQk9IG1wY29yZV93ZHRfcHJvYmUsCiAJLnJlbW92ZQkJPSBfX2RldmV4aXRfcChtcGNvcmVfd2R0X3JlbW92ZSksCmRpZmYgLS1naXQgYS9kcml2ZXJzL3dhdGNoZG9nL210eC0xX3dkdC5jIGIvZHJpdmVycy93YXRjaGRvZy9tdHgtMV93ZHQuYwppbmRleCAxMGI4OWYyLi5hOGU2NzM4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3dhdGNoZG9nL210eC0xX3dkdC5jCisrKyBiL2RyaXZlcnMvd2F0Y2hkb2cvbXR4LTFfd2R0LmMKQEAgLTI0Myw2ICsyNDMsNyBAQAogCS5wcm9iZSA9IG10eDFfd2R0X3Byb2JlLAogCS5yZW1vdmUgPSBtdHgxX3dkdF9yZW1vdmUsCiAJLmRyaXZlci5uYW1lID0gIm10eDEtd2R0IiwKKwkuZHJpdmVyLm93bmVyID0gVEhJU19NT0RVTEUsCiB9OwogCiBzdGF0aWMgaW50IF9faW5pdCBtdHgxX3dkdF9pbml0KHZvaWQpCkBAIC0yNjIsMyArMjYzLDQgQEAKIE1PRFVMRV9ERVNDUklQVElPTigiRHJpdmVyIGZvciB0aGUgTVRYLTEgd2F0Y2hkb2ciKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKIE1PRFVMRV9BTElBU19NSVNDREVWKFdBVENIRE9HX01JTk9SKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06bXR4MS13ZHQiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvd2F0Y2hkb2cvbXY2NHg2MF93ZHQuYyBiL2RyaXZlcnMvd2F0Y2hkb2cvbXY2NHg2MF93ZHQuYwppbmRleCAwMzY1YzMxLi5iNTljYTMyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3dhdGNoZG9nL212NjR4NjBfd2R0LmMKKysrIGIvZHJpdmVycy93YXRjaGRvZy9tdjY0eDYwX3dkdC5jCkBAIC0zMjQsMyArMzI0LDQgQEAKIE1PRFVMRV9ERVNDUklQVElPTigiTVY2NHg2MCB3YXRjaGRvZyBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKIE1PRFVMRV9BTElBU19NSVNDREVWKFdBVENIRE9HX01JTk9SKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06IiBNVjY0eDYwX1dEVF9OQU1FKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvd2F0Y2hkb2cvb21hcF93ZHQuYyBiL2RyaXZlcnMvd2F0Y2hkb2cvb21hcF93ZHQuYwppbmRleCA2MzVjYTQ1Li43NGJjMzlhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3dhdGNoZG9nL29tYXBfd2R0LmMKKysrIGIvZHJpdmVycy93YXRjaGRvZy9vbWFwX3dkdC5jCkBAIC0zODcsMyArMzg3LDQgQEAKIE1PRFVMRV9BVVRIT1IoIkdlb3JnZSBHLiBEYXZpcyIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwogTU9EVUxFX0FMSUFTX01JU0NERVYoV0FUQ0hET0dfTUlOT1IpOworTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybTpvbWFwX3dkdCIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy93YXRjaGRvZy9wbng0MDA4X3dkdC5jIGIvZHJpdmVycy93YXRjaGRvZy9wbng0MDA4X3dkdC5jCmluZGV4IGIwNGFhMDkuLjZiODQ4M2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvd2F0Y2hkb2cvcG54NDAwOF93ZHQuYworKysgYi9kcml2ZXJzL3dhdGNoZG9nL3BueDQwMDhfd2R0LmMKQEAgLTMyMSw2ICszMjEsNyBAQAogc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgcGxhdGZvcm1fd2R0X2RyaXZlciA9IHsKIAkuZHJpdmVyID0gewogCQkubmFtZSA9ICJ3YXRjaGRvZyIsCisJCS5vd25lcgk9IFRISVNfTU9EVUxFLAogCX0sCiAJLnByb2JlID0gcG54NDAwOF93ZHRfcHJvYmUsCiAJLnJlbW92ZSA9IHBueDQwMDhfd2R0X3JlbW92ZSwKQEAgLTM1NCwzICszNTUsNCBAQAogCiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CiBNT0RVTEVfQUxJQVNfTUlTQ0RFVihXQVRDSERPR19NSU5PUik7CitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOndhdGNoZG9nIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3dhdGNoZG9nL3MzYzI0MTBfd2R0LmMgYi9kcml2ZXJzL3dhdGNoZG9nL3MzYzI0MTBfd2R0LmMKaW5kZXggNzY0NWU4OC4uOTg1MzJjMCAxMDA2NDQKLS0tIGEvZHJpdmVycy93YXRjaGRvZy9zM2MyNDEwX3dkdC5jCisrKyBiL2RyaXZlcnMvd2F0Y2hkb2cvczNjMjQxMF93ZHQuYwpAQCAtNTYxLDMgKzU2MSw0IEBACiBNT0RVTEVfREVTQ1JJUFRJT04oIlMzQzI0MTAgV2F0Y2hkb2cgRGV2aWNlIERyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwogTU9EVUxFX0FMSUFTX01JU0NERVYoV0FUQ0hET0dfTUlOT1IpOworTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybTpzM2MyNDEwLXdkdCIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy93YXRjaGRvZy90eHg5d2R0LmMgYi9kcml2ZXJzL3dhdGNoZG9nL3R4eDl3ZHQuYwppbmRleCAzMjhiM2M3Li41N2NlZmVmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3dhdGNoZG9nL3R4eDl3ZHQuYworKysgYi9kcml2ZXJzL3dhdGNoZG9nL3R4eDl3ZHQuYwpAQCAtMjc0LDMgKzI3NCw0IEBACiBNT0RVTEVfREVTQ1JJUFRJT04oIlRYeDkgV2F0Y2hkb2cgRHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CiBNT0RVTEVfQUxJQVNfTUlTQ0RFVihXQVRDSERPR19NSU5PUik7CitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOnR4eDl3ZHQiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVuL2dyYW50LXRhYmxlLmMgYi9kcml2ZXJzL3hlbi9ncmFudC10YWJsZS5jCmluZGV4IGVhOTRkYmEuLmQ4NWRjNmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMveGVuL2dyYW50LXRhYmxlLmMKKysrIGIvZHJpdmVycy94ZW4vZ3JhbnQtdGFibGUuYwpAQCAtMzgxLDExICszODEsMTUgQEAKIHN0YXRpYyBpbnQgZ3Jvd19nbnR0YWJfbGlzdCh1bnNpZ25lZCBpbnQgbW9yZV9mcmFtZXMpCiB7CiAJdW5zaWduZWQgaW50IG5ld19ucl9ncmFudF9mcmFtZXMsIGV4dHJhX2VudHJpZXMsIGk7CisJdW5zaWduZWQgaW50IG5yX2dsaXN0X2ZyYW1lcywgbmV3X25yX2dsaXN0X2ZyYW1lczsKIAogCW5ld19ucl9ncmFudF9mcmFtZXMgPSBucl9ncmFudF9mcmFtZXMgKyBtb3JlX2ZyYW1lczsKIAlleHRyYV9lbnRyaWVzICAgICAgID0gbW9yZV9mcmFtZXMgKiBHUkVGU19QRVJfR1JBTlRfRlJBTUU7CiAKLQlmb3IgKGkgPSBucl9ncmFudF9mcmFtZXM7IGkgPCBuZXdfbnJfZ3JhbnRfZnJhbWVzOyBpKyspIHsKKwlucl9nbGlzdF9mcmFtZXMgPSAobnJfZ3JhbnRfZnJhbWVzICogR1JFRlNfUEVSX0dSQU5UX0ZSQU1FICsgUlBQIC0gMSkgLyBSUFA7CisJbmV3X25yX2dsaXN0X2ZyYW1lcyA9CisJCShuZXdfbnJfZ3JhbnRfZnJhbWVzICogR1JFRlNfUEVSX0dSQU5UX0ZSQU1FICsgUlBQIC0gMSkgLyBSUFA7CisJZm9yIChpID0gbnJfZ2xpc3RfZnJhbWVzOyBpIDwgbmV3X25yX2dsaXN0X2ZyYW1lczsgaSsrKSB7CiAJCWdudHRhYl9saXN0W2ldID0gKGdyYW50X3JlZl90ICopX19nZXRfZnJlZV9wYWdlKEdGUF9BVE9NSUMpOwogCQlpZiAoIWdudHRhYl9saXN0W2ldKQogCQkJZ290byBncm93X25vbWVtOwpAQCAtNDA3LDcgKzQxMSw3IEBACiAJcmV0dXJuIDA7CiAKIGdyb3dfbm9tZW06Ci0JZm9yICggOyBpID49IG5yX2dyYW50X2ZyYW1lczsgaS0tKQorCWZvciAoIDsgaSA+PSBucl9nbGlzdF9mcmFtZXM7IGktLSkKIAkJZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKSBnbnR0YWJfbGlzdFtpXSk7CiAJcmV0dXJuIC1FTk9NRU07CiB9CkBAIC01MzAsNyArNTM0LDcgQEAKIHN0YXRpYyBpbnQgX19kZXZpbml0IGdudHRhYl9pbml0KHZvaWQpCiB7CiAJaW50IGk7Ci0JdW5zaWduZWQgaW50IG1heF9ucl9nbGlzdF9mcmFtZXM7CisJdW5zaWduZWQgaW50IG1heF9ucl9nbGlzdF9mcmFtZXMsIG5yX2dsaXN0X2ZyYW1lczsKIAl1bnNpZ25lZCBpbnQgbnJfaW5pdF9ncmVmczsKIAogCWlmICghaXNfcnVubmluZ19vbl94ZW4oKSkKQEAgLTU0MywxNSArNTQ3LDE1IEBACiAJICogZ3JhbnQgcmVmZXJlbmNlIGZyZWUgbGlzdCBvbiB0aGUgY3VycmVudCBoeXBlcnZpc29yLgogCSAqLwogCW1heF9ucl9nbGlzdF9mcmFtZXMgPSAoYm9vdF9tYXhfbnJfZ3JhbnRfZnJhbWVzICoKLQkJCSAgICAgICBHUkVGU19QRVJfR1JBTlRfRlJBTUUgLwotCQkJICAgICAgIChQQUdFX1NJWkUgLyBzaXplb2YoZ3JhbnRfcmVmX3QpKSk7CisJCQkgICAgICAgR1JFRlNfUEVSX0dSQU5UX0ZSQU1FIC8gUlBQKTsKIAogCWdudHRhYl9saXN0ID0ga21hbGxvYyhtYXhfbnJfZ2xpc3RfZnJhbWVzICogc2l6ZW9mKGdyYW50X3JlZl90ICopLAogCQkJICAgICAgR0ZQX0tFUk5FTCk7CiAJaWYgKGdudHRhYl9saXN0ID09IE5VTEwpCiAJCXJldHVybiAtRU5PTUVNOwogCi0JZm9yIChpID0gMDsgaSA8IG5yX2dyYW50X2ZyYW1lczsgaSsrKSB7CisJbnJfZ2xpc3RfZnJhbWVzID0gKG5yX2dyYW50X2ZyYW1lcyAqIEdSRUZTX1BFUl9HUkFOVF9GUkFNRSArIFJQUCAtIDEpIC8gUlBQOworCWZvciAoaSA9IDA7IGkgPCBucl9nbGlzdF9mcmFtZXM7IGkrKykgewogCQlnbnR0YWJfbGlzdFtpXSA9IChncmFudF9yZWZfdCAqKV9fZ2V0X2ZyZWVfcGFnZShHRlBfS0VSTkVMKTsKIAkJaWYgKGdudHRhYl9saXN0W2ldID09IE5VTEwpCiAJCQlnb3RvIGluaV9ub21lbTsKZGlmZiAtLWdpdCBhL2ZzL0tjb25maWcgYi9mcy9LY29uZmlnCmluZGV4IGQ3MzEyODIuLmM1MDkxMjMgMTAwNjQ0Ci0tLSBhL2ZzL0tjb25maWcKKysrIGIvZnMvS2NvbmZpZwpAQCAtMTc0NCwxMCArMTc0NCwxMCBAQAogCSAgSWYgeW91IHdhbnQgeW91ciBMaW51eCBib3ggdG8gbW91bnQgaXRzIHdob2xlIHJvb3QgZmlsZSBzeXN0ZW0gKHRoZQogCSAgb25lIGNvbnRhaW5pbmcgdGhlIGRpcmVjdG9yeSAvKSBmcm9tIHNvbWUgb3RoZXIgY29tcHV0ZXIgb3ZlciB0aGUKIAkgIG5ldCB2aWEgTkZTIChwcmVzdW1hYmx5IGJlY2F1c2UgeW91ciBib3ggZG9lc24ndCBoYXZlIGEgaGFyZCBkaXNrKSwKLQkgIHNheSBZLiBSZWFkIDxmaWxlOkRvY3VtZW50YXRpb24vbmZzcm9vdC50eHQ+IGZvciBkZXRhaWxzLiBJdCBpcwotCSAgbGlrZWx5IHRoYXQgaW4gdGhpcyBjYXNlLCB5b3UgYWxzbyB3YW50IHRvIHNheSBZIHRvICJLZXJuZWwgbGV2ZWwgSVAKLQkgIGF1dG9jb25maWd1cmF0aW9uIiBzbyB0aGF0IHlvdXIgYm94IGNhbiBkaXNjb3ZlciBpdHMgbmV0d29yayBhZGRyZXNzCi0JICBhdCBib290IHRpbWUuCisJICBzYXkgWS4gUmVhZCA8ZmlsZTpEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL25mc3Jvb3QudHh0PiBmb3IKKwkgIGRldGFpbHMuIEl0IGlzIGxpa2VseSB0aGF0IGluIHRoaXMgY2FzZSwgeW91IGFsc28gd2FudCB0byBzYXkgWSB0bworCSAgIktlcm5lbCBsZXZlbCBJUCBhdXRvY29uZmlndXJhdGlvbiIgc28gdGhhdCB5b3VyIGJveCBjYW4gZGlzY292ZXIKKwkgIGl0cyBuZXR3b3JrIGFkZHJlc3MgYXQgYm9vdCB0aW1lLgogCiAJICBNb3N0IHBlb3BsZSBzYXkgTiBoZXJlLgogCmRpZmYgLS1naXQgYS9mcy9hZnMvY2VsbC5jIGIvZnMvYWZzL2NlbGwuYwppbmRleCA5NzBkMzhmLi41ODRiYjBmIDEwMDY0NAotLS0gYS9mcy9hZnMvY2VsbC5jCisrKyBiL2ZzL2Fmcy9jZWxsLmMKQEAgLTEyNywxNCArMTI3LDIxIEBACiAKIAlfZW50ZXIoIiVzLCVzIiwgbmFtZSwgdmxsaXN0KTsKIAorCWRvd25fd3JpdGUoJmFmc19jZWxsc19zZW0pOworCXJlYWRfbG9jaygmYWZzX2NlbGxzX2xvY2spOworCWxpc3RfZm9yX2VhY2hfZW50cnkoY2VsbCwgJmFmc19jZWxscywgbGluaykgeworCQlpZiAoc3RyY2FzZWNtcChjZWxsLT5uYW1lLCBuYW1lKSA9PSAwKQorCQkJZ290byBkdXBsaWNhdGVfbmFtZTsKKwl9CisJcmVhZF91bmxvY2soJmFmc19jZWxsc19sb2NrKTsKKwogCWNlbGwgPSBhZnNfY2VsbF9hbGxvYyhuYW1lLCB2bGxpc3QpOwogCWlmIChJU19FUlIoY2VsbCkpIHsKIAkJX2xlYXZlKCIgPSAlbGQiLCBQVFJfRVJSKGNlbGwpKTsKKwkJdXBfd3JpdGUoJmFmc19jZWxsc19zZW0pOwogCQlyZXR1cm4gY2VsbDsKIAl9CiAKLQlkb3duX3dyaXRlKCZhZnNfY2VsbHNfc2VtKTsKLQogCS8qIGFkZCBhIHByb2MgZGlyZWN0b3J5IGZvciB0aGlzIGNlbGwgKi8KIAlyZXQgPSBhZnNfcHJvY19jZWxsX3NldHVwKGNlbGwpOwogCWlmIChyZXQgPCAwKQpAQCAtMTY3LDYgKzE3NCwxMSBAQAogCWtmcmVlKGNlbGwpOwogCV9sZWF2ZSgiID0gJWQiLCByZXQpOwogCXJldHVybiBFUlJfUFRSKHJldCk7CisKK2R1cGxpY2F0ZV9uYW1lOgorCXJlYWRfdW5sb2NrKCZhZnNfY2VsbHNfbG9jayk7CisJdXBfd3JpdGUoJmFmc19jZWxsc19zZW0pOworCXJldHVybiBFUlJfUFRSKC1FRVhJU1QpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvZnMvYWZzL2ludGVybmFsLmggYi9mcy9hZnMvaW50ZXJuYWwuaAppbmRleCA1Y2EzNjI1Li5lZWM0MWM3IDEwMDY0NAotLS0gYS9mcy9hZnMvaW50ZXJuYWwuaAorKysgYi9mcy9hZnMvaW50ZXJuYWwuaApAQCAtNTczLDcgKzU3Myw2IEBACiAKIGV4dGVybiBpbnQgYWZzX21udHB0X2NoZWNrX3N5bWxpbmsoc3RydWN0IGFmc192bm9kZSAqLCBzdHJ1Y3Qga2V5ICopOwogZXh0ZXJuIHZvaWQgYWZzX21udHB0X2tpbGxfdGltZXIodm9pZCk7Ci1leHRlcm4gdm9pZCBhZnNfdW1vdW50X2JlZ2luKHN0cnVjdCB2ZnNtb3VudCAqLCBpbnQpOwogCiAvKgogICogcHJvYy5jCkBAIC03NTAsNyArNzQ5LDcgQEAKIGV4dGVybiB1bnNpZ25lZCBhZnNfZGVidWc7CiAKICNkZWZpbmUgZGJncHJpbnRrKEZNVCwuLi4pIFwKLQlwcmludGsoIlsleCUtNi42c10gIkZNVCJcbiIsIHNtcF9wcm9jZXNzb3JfaWQoKSwgY3VycmVudC0+Y29tbSAsIyNfX1ZBX0FSR1NfXykKKwlwcmludGsoIlslLTYuNnNdICJGTVQiXG4iLCBjdXJyZW50LT5jb21tICwjI19fVkFfQVJHU19fKQogCiAvKiBtYWtlIHN1cmUgd2UgbWFpbnRhaW4gdGhlIGZvcm1hdCBzdHJpbmdzLCBldmVuIHdoZW4gZGVidWdnaW5nIGlzIGRpc2FibGVkICovCiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKGZvcm1hdChwcmludGYsMSwyKSkpCmRpZmYgLS1naXQgYS9mcy9hZnMvbWFpbi5jIGIvZnMvYWZzL21haW4uYwppbmRleCAwZjYwZjZiLi4yZDNlNWQ0IDEwMDY0NAotLS0gYS9mcy9hZnMvbWFpbi5jCisrKyBiL2ZzL2Fmcy9tYWluLmMKQEAgLTIyLDcgKzIyLDcgQEAKIAogdW5zaWduZWQgYWZzX2RlYnVnOwogbW9kdWxlX3BhcmFtX25hbWVkKGRlYnVnLCBhZnNfZGVidWcsIHVpbnQsIFNfSVdVU1IgfCBTX0lSVUdPKTsKLU1PRFVMRV9QQVJNX0RFU0MoYWZzX2RlYnVnLCAiQUZTIGRlYnVnZ2luZyBtYXNrIik7CitNT0RVTEVfUEFSTV9ERVNDKGRlYnVnLCAiQUZTIGRlYnVnZ2luZyBtYXNrIik7CiAKIHN0YXRpYyBjaGFyICpyb290Y2VsbDsKIApkaWZmIC0tZ2l0IGEvZnMvYWZzL21udHB0LmMgYi9mcy9hZnMvbW50cHQuYwppbmRleCBhMzUxMGI4Li4yZjU1MDM5IDEwMDY0NAotLS0gYS9mcy9hZnMvbW50cHQuYworKysgYi9mcy9hZnMvbW50cHQuYwpAQCAtMjgzLDExICsyODMsMyBAQAogCWNhbmNlbF9kZWxheWVkX3dvcmsoJmFmc19tbnRwdF9leHBpcnlfdGltZXIpOwogCWZsdXNoX3NjaGVkdWxlZF93b3JrKCk7CiB9Ci0KLS8qCi0gKiBiZWdpbiB1bm1vdW50IGJ5IGF0dGVtcHRpbmcgdG8gcmVtb3ZlIGFsbCBhdXRvbW91bnRlZCBtb3VudHBvaW50cyB3ZSBhZGRlZAotICovCi12b2lkIGFmc191bW91bnRfYmVnaW4oc3RydWN0IHZmc21vdW50ICp2ZnNtbnQsIGludCBmbGFncykKLXsKLQlzaHJpbmtfc3VibW91bnRzKHZmc21udCwgJmFmc192ZnNtb3VudHMpOwotfQpkaWZmIC0tZ2l0IGEvZnMvYWZzL3N1cGVyLmMgYi9mcy9hZnMvc3VwZXIuYwppbmRleCAzNmJiY2U0Li40YjU3MmI4IDEwMDY0NAotLS0gYS9mcy9hZnMvc3VwZXIuYworKysgYi9mcy9hZnMvc3VwZXIuYwpAQCAtNTAsNyArNTAsNiBAQAogCS53cml0ZV9pbm9kZQk9IGFmc193cml0ZV9pbm9kZSwKIAkuZGVzdHJveV9pbm9kZQk9IGFmc19kZXN0cm95X2lub2RlLAogCS5jbGVhcl9pbm9kZQk9IGFmc19jbGVhcl9pbm9kZSwKLQkudW1vdW50X2JlZ2luCT0gYWZzX3Vtb3VudF9iZWdpbiwKIAkucHV0X3N1cGVyCT0gYWZzX3B1dF9zdXBlciwKIAkuc2hvd19vcHRpb25zCT0gZ2VuZXJpY19zaG93X29wdGlvbnMsCiB9OwpkaWZmIC0tZ2l0IGEvZnMvYWlvLmMgYi9mcy9haW8uYwppbmRleCBiNzRjNTY3Li4yMjgzNjg2IDEwMDY0NAotLS0gYS9mcy9haW8uYworKysgYi9mcy9haW8uYwpAQCAtOTM2LDE0ICs5MzYsNiBAQAogCQlyZXR1cm4gMTsKIAl9CiAKLQkvKgotCSAqIENoZWNrIGlmIHRoZSB1c2VyIGFza2VkIHVzIHRvIGRlbGl2ZXIgdGhlIHJlc3VsdCB0aHJvdWdoIGFuCi0JICogZXZlbnRmZC4gVGhlIGV2ZW50ZmRfc2lnbmFsKCkgZnVuY3Rpb24gaXMgc2FmZSB0byBiZSBjYWxsZWQKLQkgKiBmcm9tIElSUSBjb250ZXh0LgotCSAqLwotCWlmICghSVNfRVJSKGlvY2ItPmtpX2V2ZW50ZmQpKQotCQlldmVudGZkX3NpZ25hbChpb2NiLT5raV9ldmVudGZkLCAxKTsKLQogCWluZm8gPSAmY3R4LT5yaW5nX2luZm87CiAKIAkvKiBhZGQgYSBjb21wbGV0aW9uIGV2ZW50IHRvIHRoZSByaW5nIGJ1ZmZlci4KQEAgLTk5MiwxMCArOTg0LDI3IEBACiAJa3VubWFwX2F0b21pYyhyaW5nLCBLTV9JUlExKTsKIAogCXByX2RlYnVnKCJhZGRlZCB0byByaW5nICVwIGF0IFslbHVdXG4iLCBpb2NiLCB0YWlsKTsKKworCS8qCisJICogQ2hlY2sgaWYgdGhlIHVzZXIgYXNrZWQgdXMgdG8gZGVsaXZlciB0aGUgcmVzdWx0IHRocm91Z2ggYW4KKwkgKiBldmVudGZkLiBUaGUgZXZlbnRmZF9zaWduYWwoKSBmdW5jdGlvbiBpcyBzYWZlIHRvIGJlIGNhbGxlZAorCSAqIGZyb20gSVJRIGNvbnRleHQuCisJICovCisJaWYgKCFJU19FUlIoaW9jYi0+a2lfZXZlbnRmZCkpCisJCWV2ZW50ZmRfc2lnbmFsKGlvY2ItPmtpX2V2ZW50ZmQsIDEpOworCiBwdXRfcnE6CiAJLyogZXZlcnl0aGluZyB0dXJuZWQgb3V0IHdlbGwsIGRpc3Bvc2Ugb2YgdGhlIGFpb2NiLiAqLwogCXJldCA9IF9fYWlvX3B1dF9yZXEoY3R4LCBpb2NiKTsKIAorCS8qCisJICogV2UgaGF2ZSB0byBvcmRlciBvdXIgcmluZ19pbmZvIHRhaWwgc3RvcmUgYWJvdmUgYW5kIHRlc3QKKwkgKiBvZiB0aGUgd2FpdCBsaXN0IGJlbG93IG91dHNpZGUgdGhlIHdhaXQgbG9jay4gIFRoaXMgaXMKKwkgKiBsaWtlIGluIHdha2VfdXBfYml0KCkgd2hlcmUgY2xlYXJpbmcgYSBiaXQgaGFzIHRvIGJlCisJICogb3JkZXJlZCB3aXRoIHRoZSB1bmxvY2tlZCB0ZXN0LgorCSAqLworCXNtcF9tYigpOworCiAJaWYgKHdhaXRxdWV1ZV9hY3RpdmUoJmN0eC0+d2FpdCkpCiAJCXdha2VfdXAoJmN0eC0+d2FpdCk7CiAKQEAgLTE3ODIsNiArMTc5MSw3IEBACiAJCXB1dF9pb2N0eChpb2N0eCk7CiAJfQogCisJYXNtbGlua2FnZV9wcm90ZWN0KDUsIHJldCwgY3R4X2lkLCBtaW5fbnIsIG5yLCBldmVudHMsIHRpbWVvdXQpOwogCXJldHVybiByZXQ7CiB9CiAKZGlmZiAtLWdpdCBhL2ZzL2Fub25faW5vZGVzLmMgYi9mcy9hbm9uX2lub2Rlcy5jCmluZGV4IDIzMzIxODguLmY0MmJlMDYgMTAwNjQ0Ci0tLSBhL2ZzL2Fub25faW5vZGVzLmMKKysrIGIvZnMvYW5vbl9pbm9kZXMuYwpAQCAtODEsMTMgKzgxLDEwIEBACiAKIAlpZiAoSVNfRVJSKGFub25faW5vZGVfaW5vZGUpKQogCQlyZXR1cm4gLUVOT0RFVjsKLQlmaWxlID0gZ2V0X2VtcHR5X2ZpbHAoKTsKLQlpZiAoIWZpbGUpCi0JCXJldHVybiAtRU5GSUxFOwogCiAJZXJyb3IgPSBnZXRfdW51c2VkX2ZkKCk7CiAJaWYgKGVycm9yIDwgMCkKLQkJZ290byBlcnJfcHV0X2ZpbHA7CisJCXJldHVybiBlcnJvcjsKIAlmZCA9IGVycm9yOwogCiAJLyoKQEAgLTExNCwxNCArMTExLDE1IEBACiAJZGVudHJ5LT5kX2ZsYWdzICY9IH5EQ0FDSEVfVU5IQVNIRUQ7CiAJZF9pbnN0YW50aWF0ZShkZW50cnksIGFub25faW5vZGVfaW5vZGUpOwogCi0JZmlsZS0+Zl9wYXRoLm1udCA9IG1udGdldChhbm9uX2lub2RlX21udCk7Ci0JZmlsZS0+Zl9wYXRoLmRlbnRyeSA9IGRlbnRyeTsKKwllcnJvciA9IC1FTkZJTEU7CisJZmlsZSA9IGFsbG9jX2ZpbGUoYW5vbl9pbm9kZV9tbnQsIGRlbnRyeSwKKwkJCSAgRk1PREVfUkVBRCB8IEZNT0RFX1dSSVRFLCBmb3BzKTsKKwlpZiAoIWZpbGUpCisJCWdvdG8gZXJyX2RwdXQ7CiAJZmlsZS0+Zl9tYXBwaW5nID0gYW5vbl9pbm9kZV9pbm9kZS0+aV9tYXBwaW5nOwogCiAJZmlsZS0+Zl9wb3MgPSAwOwogCWZpbGUtPmZfZmxhZ3MgPSBPX1JEV1I7Ci0JZmlsZS0+Zl9vcCA9IGZvcHM7Ci0JZmlsZS0+Zl9tb2RlID0gRk1PREVfUkVBRCB8IEZNT0RFX1dSSVRFOwogCWZpbGUtPmZfdmVyc2lvbiA9IDA7CiAJZmlsZS0+cHJpdmF0ZV9kYXRhID0gcHJpdjsKIApAQCAtMTMyLDEwICsxMzAsMTAgQEAKIAkqcGZpbGUgPSBmaWxlOwogCXJldHVybiAwOwogCitlcnJfZHB1dDoKKwlkcHV0KGRlbnRyeSk7CiBlcnJfcHV0X3VudXNlZF9mZDoKIAlwdXRfdW51c2VkX2ZkKGZkKTsKLWVycl9wdXRfZmlscDoKLQlwdXRfZmlscChmaWxlKTsKIAlyZXR1cm4gZXJyb3I7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTChhbm9uX2lub2RlX2dldGZkKTsKZGlmZiAtLWdpdCBhL2ZzL2Jpby5jIGIvZnMvYmlvLmMKaW5kZXggMzMxMmZjYy4uNTUzYjViNyAxMDA2NDQKLS0tIGEvZnMvYmlvLmMKKysrIGIvZnMvYmlvLmMKQEAgLTExOTQsNiArMTE5NCw4IEBACiBFWFBPUlRfU1lNQk9MKGJpb19hZGRfcGFnZSk7CiBFWFBPUlRfU1lNQk9MKGJpb19hZGRfcGNfcGFnZSk7CiBFWFBPUlRfU1lNQk9MKGJpb19nZXRfbnJfdmVjcyk7CitFWFBPUlRfU1lNQk9MKGJpb19tYXBfdXNlcik7CitFWFBPUlRfU1lNQk9MKGJpb191bm1hcF91c2VyKTsKIEVYUE9SVF9TWU1CT0woYmlvX21hcF9rZXJuKTsKIEVYUE9SVF9TWU1CT0woYmlvX3BhaXJfcmVsZWFzZSk7CiBFWFBPUlRfU1lNQk9MKGJpb19zcGxpdCk7CmRpZmYgLS1naXQgYS9mcy9idWZmZXIuYyBiL2ZzL2J1ZmZlci5jCmluZGV4IGRkZmRkMmMuLjM5ZmYxNDQgMTAwNjQ0Ci0tLSBhL2ZzL2J1ZmZlci5jCisrKyBiL2ZzL2J1ZmZlci5jCkBAIC0xMTgxLDcgKzExODEsMjAgQEAKIHZvaWQgbWFya19idWZmZXJfZGlydHkoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkKIHsKIAlXQVJOX09OX09OQ0UoIWJ1ZmZlcl91cHRvZGF0ZShiaCkpOwotCWlmICghYnVmZmVyX2RpcnR5KGJoKSAmJiAhdGVzdF9zZXRfYnVmZmVyX2RpcnR5KGJoKSkKKworCS8qCisJICogVmVyeSAqY2FyZWZ1bGx5KiBvcHRpbWl6ZSB0aGUgaXQtaXMtYWxyZWFkeS1kaXJ0eSBjYXNlLgorCSAqCisJICogRG9uJ3QgbGV0IHRoZSBmaW5hbCAiaXMgaXQgZGlydHkiIGVzY2FwZSB0byBiZWZvcmUgd2UKKwkgKiBwZXJoYXBzIG1vZGlmaWVkIHRoZSBidWZmZXIuCisJICovCisJaWYgKGJ1ZmZlcl9kaXJ0eShiaCkpIHsKKwkJc21wX21iKCk7CisJCWlmIChidWZmZXJfZGlydHkoYmgpKQorCQkJcmV0dXJuOworCX0KKworCWlmICghdGVzdF9zZXRfYnVmZmVyX2RpcnR5KGJoKSkKIAkJX19zZXRfcGFnZV9kaXJ0eShiaC0+Yl9wYWdlLCBwYWdlX21hcHBpbmcoYmgtPmJfcGFnZSksIDApOwogfQogCkBAIC0yNTY0LDE0ICsyNTc3LDEzIEBACiAJc3RydWN0IGlub2RlICppbm9kZSA9IHBhZ2UtPm1hcHBpbmctPmhvc3Q7CiAJc3RydWN0IGJ1ZmZlcl9oZWFkICpoZWFkID0gZnNkYXRhOwogCXN0cnVjdCBidWZmZXJfaGVhZCAqYmg7CisJQlVHX09OKGZzZGF0YSAhPSBOVUxMICYmIHBhZ2VfaGFzX2J1ZmZlcnMocGFnZSkpOwogCi0JaWYgKCFQYWdlTWFwcGVkVG9EaXNrKHBhZ2UpKSB7Ci0JCWlmICh1bmxpa2VseShjb3BpZWQgPCBsZW4pICYmICFwYWdlX2hhc19idWZmZXJzKHBhZ2UpKQotCQkJYXR0YWNoX25vYmhfYnVmZmVycyhwYWdlLCBoZWFkKTsKLQkJaWYgKHBhZ2VfaGFzX2J1ZmZlcnMocGFnZSkpCi0JCQlyZXR1cm4gZ2VuZXJpY193cml0ZV9lbmQoZmlsZSwgbWFwcGluZywgcG9zLCBsZW4sCi0JCQkJCQljb3BpZWQsIHBhZ2UsIGZzZGF0YSk7Ci0JfQorCWlmICh1bmxpa2VseShjb3BpZWQgPCBsZW4pICYmICFwYWdlX2hhc19idWZmZXJzKHBhZ2UpKQorCQlhdHRhY2hfbm9iaF9idWZmZXJzKHBhZ2UsIGhlYWQpOworCWlmIChwYWdlX2hhc19idWZmZXJzKHBhZ2UpKQorCQlyZXR1cm4gZ2VuZXJpY193cml0ZV9lbmQoZmlsZSwgbWFwcGluZywgcG9zLCBsZW4sCisJCQkJCWNvcGllZCwgcGFnZSwgZnNkYXRhKTsKIAogCVNldFBhZ2VVcHRvZGF0ZShwYWdlKTsKIAlzZXRfcGFnZV9kaXJ0eShwYWdlKTsKQEAgLTMyMTMsNyArMzIyNSw3IEBACiB9CiAKIC8qKgotICogYmhfdXB0b2RhdGVfb3JfbG9jazogVGVzdCB3aGV0aGVyIHRoZSBidWZmZXIgaXMgdXB0b2RhdGUKKyAqIGJoX3VwdG9kYXRlX29yX2xvY2sgLSBUZXN0IHdoZXRoZXIgdGhlIGJ1ZmZlciBpcyB1cHRvZGF0ZQogICogQGJoOiBzdHJ1Y3QgYnVmZmVyX2hlYWQKICAqCiAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgYnVmZmVyIGlzIHVwLXRvLWRhdGUgYW5kIGZhbHNlLApAQCAtMzIzMiw3ICszMjQ0LDcgQEAKIEVYUE9SVF9TWU1CT0woYmhfdXB0b2RhdGVfb3JfbG9jayk7CiAKIC8qKgotICogYmhfc3VibWl0X3JlYWQ6IFN1Ym1pdCBhIGxvY2tlZCBidWZmZXIgZm9yIHJlYWRpbmcKKyAqIGJoX3N1Ym1pdF9yZWFkIC0gU3VibWl0IGEgbG9ja2VkIGJ1ZmZlciBmb3IgcmVhZGluZwogICogQGJoOiBzdHJ1Y3QgYnVmZmVyX2hlYWQKICAqCiAgKiBSZXR1cm5zIHplcm8gb24gc3VjY2VzcyBhbmQgLUVJTyBvbiBlcnJvci4KZGlmZiAtLWdpdCBhL2ZzL2NpZnMvY2lmc19kZnNfcmVmLmMgYi9mcy9jaWZzL2NpZnNfZGZzX3JlZi5jCmluZGV4IDdmODgzODIuLjU2YzkyNDAgMTAwNjQ0Ci0tLSBhL2ZzL2NpZnMvY2lmc19kZnNfcmVmLmMKKysrIGIvZnMvY2lmcy9jaWZzX2Rmc19yZWYuYwpAQCAtMzMsNyArMzMsNiBAQAogewogCW1hcmtfbW91bnRzX2Zvcl9leHBpcnkoJmNpZnNfZGZzX2F1dG9tb3VudF9saXN0KTsKIAltYXJrX21vdW50c19mb3JfZXhwaXJ5KCZjaWZzX2Rmc19hdXRvbW91bnRfbGlzdCk7Ci0Jc2hyaW5rX3N1Ym1vdW50cyh2ZnNtbnQsICZjaWZzX2Rmc19hdXRvbW91bnRfbGlzdCk7CiB9CiAKIC8qKgpAQCAtNzQsNyArNzMsNyBAQAogCXBTZXAgPSBtZW1jaHIoVU5DKzIsICdcXCcsIGxlbi0yKTsKIAlpZiAoIXBTZXApIHsKIAkJY0VSUk9SKDEsICgiJXM6IG5vIHNlcnZlciBuYW1lIGVuZCBpbiBub2RlIG5hbWU6ICVzIiwKLQkJCV9fRlVOQ1RJT05fXywgbm9kZV9uYW1lKSk7CisJCQlfX2Z1bmNfXywgbm9kZV9uYW1lKSk7CiAJCWtmcmVlKFVOQyk7CiAJCXJldHVybiBOVUxMOwogCX0KQEAgLTg0LDcgKzgzLDcgQEAKIAlwU2VwID0gbWVtY2hyKFVOQysocFNlcC1VTkMpLCAnXFwnLCBsZW4tKHBTZXAtVU5DKSk7CiAJaWYgKCFwU2VwKSB7CiAJCWNFUlJPUigxLCAoIiVzOjIgY2FudCBmaW5kIHNoYXJlIG5hbWUgaW4gbm9kZSBuYW1lOiAlcyIsCi0JCQlfX0ZVTkNUSU9OX18sIG5vZGVfbmFtZSkpOworCQkJX19mdW5jX18sIG5vZGVfbmFtZSkpOwogCQlrZnJlZShVTkMpOwogCQlyZXR1cm4gTlVMTDsKIAl9CkBAIC0xMjcsNyArMTI2LDcgQEAKIAlyYyA9IGRuc19yZXNvbHZlX3NlcnZlcl9uYW1lX3RvX2lwKCpkZXZuYW1lLCAmc3J2SVApOwogCWlmIChyYyAhPSAwKSB7CiAJCWNFUlJPUigxLCAoIiVzOiBGYWlsZWQgdG8gcmVzb2x2ZSBzZXJ2ZXIgcGFydCBvZiAlcyB0byBJUCIsCi0JCQkgIF9fRlVOQ1RJT05fXywgKmRldm5hbWUpKTsKKwkJCSAgX19mdW5jX18sICpkZXZuYW1lKSk7CiAJCW1vdW50ZGF0YSA9IEVSUl9QVFIocmMpOwogCQlnb3RvIGNvbXBvc2VfbW91bnRfb3B0aW9uc19vdXQ7CiAJfQpAQCAtMTgxLDggKzE4MCw4IEBACiAJCX0KIAl9CiAKLQkvKmNGWUkoMSwoIiVzOiBwYXJlbnQgbW91bnRkYXRhOiAlcyIsIF9fRlVOQ1RJT05fXyxzYl9tb3VudGRhdGEpKTsqLwotCS8qY0ZZSSgxLCAoIiVzOiBzdWJtb3VudCBtb3VudGRhdGE6ICVzIiwgX19GVU5DVElPTl9fLCBtb3VudGRhdGEgKSk7Ki8KKwkvKmNGWUkoMSwoIiVzOiBwYXJlbnQgbW91bnRkYXRhOiAlcyIsIF9fZnVuY19fLHNiX21vdW50ZGF0YSkpOyovCisJLypjRllJKDEsICgiJXM6IHN1Ym1vdW50IG1vdW50ZGF0YTogJXMiLCBfX2Z1bmNfXywgbW91bnRkYXRhICkpOyovCiAKIGNvbXBvc2VfbW91bnRfb3B0aW9uc19vdXQ6CiAJa2ZyZWUoc3J2SVApOwpAQCAtMzAyLDcgKzMwMSw3IEBACiAJaW50IHJjID0gMDsKIAlzdHJ1Y3QgdmZzbW91bnQgKm1udCA9IEVSUl9QVFIoLUVOT0VOVCk7CiAKLQljRllJKDEsICgiaW4gJXMiLCBfX0ZVTkNUSU9OX18pKTsKKwljRllJKDEsICgiaW4gJXMiLCBfX2Z1bmNfXykpOwogCUJVR19PTihJU19ST09UKGRlbnRyeSkpOwogCiAJeGlkID0gR2V0WGlkKCk7CkBAIC0zMzYsNyArMzM1LDcgQEAKIAkJCWxlbiA9IHN0cmxlbihyZWZlcnJhbHNbaV0ubm9kZV9uYW1lKTsKIAkJCWlmIChsZW4gPCAyKSB7CiAJCQkJY0VSUk9SKDEsICgiJXM6IE5ldCBBZGRyZXNzIHBhdGggdG9vIHNob3J0OiAlcyIsCi0JCQkJCV9fRlVOQ1RJT05fXywgcmVmZXJyYWxzW2ldLm5vZGVfbmFtZSkpOworCQkJCQlfX2Z1bmNfXywgcmVmZXJyYWxzW2ldLm5vZGVfbmFtZSkpOwogCQkJCXJjID0gLUVJTlZBTDsKIAkJCQlnb3RvIG91dF9lcnI7CiAJCQl9CkBAIC0zNDQsNyArMzQzLDcgQEAKIAkJCQkJCW5kLT5wYXRoLmRlbnRyeSwKIAkJCQkJCXJlZmVycmFsc1tpXS5ub2RlX25hbWUpOwogCQkJY0ZZSSgxLCAoIiVzOiBjaWZzX2Rmc19kb19yZWZtb3VudDolcyAsIG1udDolcCIsCi0JCQkJCSBfX0ZVTkNUSU9OX18sCisJCQkJCSBfX2Z1bmNfXywKIAkJCQkJcmVmZXJyYWxzW2ldLm5vZGVfbmFtZSwgbW50KSk7CiAKIAkJCS8qIGNvbXBsZXRlIG1vdW50IHByb2NlZHVyZSBpZiB3ZSBhY2N1cmVkIHN1Ym1vdW50ICovCkBAIC0zNjUsNyArMzY0LDcgQEAKIAlGcmVlWGlkKHhpZCk7CiAJZnJlZV9kZnNfaW5mb19hcnJheShyZWZlcnJhbHMsIG51bV9yZWZlcnJhbHMpOwogCWtmcmVlKGZ1bGxfcGF0aCk7Ci0JY0ZZSSgxLCAoImxlYXZpbmcgJXMiICwgX19GVU5DVElPTl9fKSk7CisJY0ZZSSgxLCAoImxlYXZpbmcgJXMiICwgX19mdW5jX18pKTsKIAlyZXR1cm4gRVJSX1BUUihyYyk7CiBvdXRfZXJyOgogCXBhdGhfcHV0KCZuZC0+cGF0aCk7CmRpZmYgLS1naXQgYS9mcy9jaWZzL2NpZnNhY2wuYyBiL2ZzL2NpZnMvY2lmc2FjbC5jCmluZGV4IGY5MzkzMmMuLjFjYjViMGEgMTAwNjQ0Ci0tLSBhL2ZzL2NpZnMvY2lmc2FjbC5jCisrKyBiL2ZzL2NpZnMvY2lmc2FjbC5jCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqICAgZnMvY2lmcy9jaWZzYWNsLmMKICAqCi0gKiAgIENvcHlyaWdodCAoQykgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyAgQ29ycC4sIDIwMDcKKyAqICAgQ29weXJpZ2h0IChDKSBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzICBDb3JwLiwgMjAwNywyMDA4CiAgKiAgIEF1dGhvcihzKTogU3RldmUgRnJlbmNoIChzZnJlbmNoQHVzLmlibS5jb20pCiAgKgogICogICBDb250YWlucyB0aGUgcm91dGluZXMgZm9yIG1hcHBpbmcgQ0lGUy9OVEZTIEFDTHMKQEAgLTI2MSw3ICsyNjEsNyBAQAogCXJldHVybjsKIH0KIAotc3RhdGljIF9fbGUxNiBmaWxsX2FjZV9mb3Jfc2lkKHN0cnVjdCBjaWZzX2FjZSAqcG50YWNlLAorc3RhdGljIF9fdTE2IGZpbGxfYWNlX2Zvcl9zaWQoc3RydWN0IGNpZnNfYWNlICpwbnRhY2UsCiAJCQljb25zdCBzdHJ1Y3QgY2lmc19zaWQgKnBzaWQsIF9fdTY0IG5tb2RlLCB1bW9kZV90IGJpdHMpCiB7CiAJaW50IGk7CkBAIC00MTEsNyArNDExLDcgQEAKIHN0YXRpYyBpbnQgc2V0X2NobW9kX2RhY2woc3RydWN0IGNpZnNfYWNsICpwbmRhY2wsIHN0cnVjdCBjaWZzX3NpZCAqcG93bmVyc2lkLAogCQkJc3RydWN0IGNpZnNfc2lkICpwZ3Jwc2lkLCBfX3U2NCBubW9kZSkKIHsKLQlfX2xlMTYgc2l6ZSA9IDA7CisJdTE2IHNpemUgPSAwOwogCXN0cnVjdCBjaWZzX2FjbCAqcG5uZGFjbDsKIAogCXBubmRhY2wgPSAoc3RydWN0IGNpZnNfYWNsICopKChjaGFyICopcG5kYWNsICsgc2l6ZW9mKHN0cnVjdCBjaWZzX2FjbCkpOwpAQCAtNTU2LDkgKzU1Niw5IEBACiAKIC8qIFJldHJpZXZlIGFuIEFDTCBmcm9tIHRoZSBzZXJ2ZXIgKi8KIHN0YXRpYyBzdHJ1Y3QgY2lmc19udHNkICpnZXRfY2lmc19hY2wodTMyICpwYWNsbGVuLCBzdHJ1Y3QgaW5vZGUgKmlub2RlLAotCQkJCSAgICAgICBjb25zdCBjaGFyICpwYXRoKQorCQkJCSAgICAgICBjb25zdCBjaGFyICpwYXRoLCBjb25zdCBfX3UxNiAqcGZpZCkKIHsKLQlzdHJ1Y3QgY2lmc0ZpbGVJbmZvICpvcGVuX2ZpbGU7CisJc3RydWN0IGNpZnNGaWxlSW5mbyAqb3Blbl9maWxlID0gTlVMTDsKIAlpbnQgdW5sb2NrX2ZpbGUgPSBGQUxTRTsKIAlpbnQgeGlkOwogCWludCByYyA9IC1FSU87CkBAIC01NzMsNyArNTczLDExIEBACiAJCXJldHVybiBOVUxMOwogCiAJeGlkID0gR2V0WGlkKCk7Ci0Jb3Blbl9maWxlID0gZmluZF9yZWFkYWJsZV9maWxlKENJRlNfSShpbm9kZSkpOworCWlmIChwZmlkID09IE5VTEwpCisJCW9wZW5fZmlsZSA9IGZpbmRfcmVhZGFibGVfZmlsZShDSUZTX0koaW5vZGUpKTsKKwllbHNlCisJCWZpZCA9ICpwZmlkOworCiAJc2IgPSBpbm9kZS0+aV9zYjsKIAlpZiAoc2IgPT0gTlVMTCkgewogCQlGcmVlWGlkKHhpZCk7CkBAIC01ODQsNyArNTg4LDcgQEAKIAlpZiAob3Blbl9maWxlKSB7CiAJCXVubG9ja19maWxlID0gVFJVRTsKIAkJZmlkID0gb3Blbl9maWxlLT5uZXRmaWQ7Ci0JfSBlbHNlIHsKKwl9IGVsc2UgaWYgKHBmaWQgPT0gTlVMTCkgewogCQlpbnQgb3Bsb2NrID0gRkFMU0U7CiAJCS8qIG9wZW4gZmlsZSAqLwogCQlyYyA9IENJRlNTTUJPcGVuKHhpZCwgY2lmc19zYi0+dGNvbiwgcGF0aCwgRklMRV9PUEVOLApAQCAtNjAwLDEwICs2MDQsMTEgQEAKIAogCXJjID0gQ0lGU1NNQkdldENJRlNBQ0woeGlkLCBjaWZzX3NiLT50Y29uLCBmaWQsICZwbnRzZCwgcGFjbGxlbik7CiAJY0ZZSSgxLCAoIkdldENJRlNBQ0wgcmMgPSAlZCBBQ0wgbGVuICVkIiwgcmMsICpwYWNsbGVuKSk7Ci0JaWYgKHVubG9ja19maWxlID09IFRSVUUpCisJaWYgKHVubG9ja19maWxlID09IFRSVUUpIC8qIGZpbmRfcmVhZGFibGVfZmlsZSBpbmNyZW1lbnRzIHJlZiBjb3VudCAqLwogCQlhdG9taWNfZGVjKCZvcGVuX2ZpbGUtPndydFBlbmRpbmcpOwotCWVsc2UKKwllbHNlIGlmIChwZmlkID09IE5VTEwpIC8qIGlmIG9wZW5lZCBhYm92ZSB3ZSBoYXZlIHRvIGNsb3NlIHRoZSBoYW5kbGUgKi8KIAkJQ0lGU1NNQkNsb3NlKHhpZCwgY2lmc19zYi0+dGNvbiwgZmlkKTsKKwkvKiBlbHNlIGhhbmRsZSB3YXMgcGFzc2VkIGluIGJ5IGNhbGxlciAqLwogCiAJRnJlZVhpZCh4aWQpOwogCXJldHVybiBwbnRzZDsKQEAgLTY2NCwxNCArNjY5LDE0IEBACiB9CiAKIC8qIFRyYW5zbGF0ZSB0aGUgQ0lGUyBBQ0wgKHNpbWxhciB0byBOVEZTIEFDTCkgZm9yIGEgZmlsZSBpbnRvIG1vZGUgYml0cyAqLwotdm9pZCBhY2xfdG9fdWlkX21vZGUoc3RydWN0IGlub2RlICppbm9kZSwgY29uc3QgY2hhciAqcGF0aCkKK3ZvaWQgYWNsX3RvX3VpZF9tb2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IF9fdTE2ICpwZmlkKQogewogCXN0cnVjdCBjaWZzX250c2QgKnBudHNkID0gTlVMTDsKIAl1MzIgYWNsbGVuID0gMDsKIAlpbnQgcmMgPSAwOwogCiAJY0ZZSShEQkcyLCAoImNvbnZlcnRpbmcgQUNMIHRvIG1vZGUgZm9yICVzIiwgcGF0aCkpOwotCXBudHNkID0gZ2V0X2NpZnNfYWNsKCZhY2xsZW4sIGlub2RlLCBwYXRoKTsKKwlwbnRzZCA9IGdldF9jaWZzX2FjbCgmYWNsbGVuLCBpbm9kZSwgcGF0aCwgcGZpZCk7CiAKIAkvKiBpZiB3ZSBjYW4gcmV0cmlldmUgdGhlIEFDTCwgbm93IHBhcnNlIEFjY2VzcyBDb250cm9sIEVudHJpZXMsIEFDRXMgKi8KIAlpZiAocG50c2QpCkBAIC02OTQsNyArNjk5LDcgQEAKIAljRllJKERCRzIsICgic2V0IEFDTCBmcm9tIG1vZGUgZm9yICVzIiwgcGF0aCkpOwogCiAJLyogR2V0IHRoZSBzZWN1cml0eSBkZXNjcmlwdG9yICovCi0JcG50c2QgPSBnZXRfY2lmc19hY2woJmFjbGxlbiwgaW5vZGUsIHBhdGgpOworCXBudHNkID0gZ2V0X2NpZnNfYWNsKCZhY2xsZW4sIGlub2RlLCBwYXRoLCBOVUxMKTsKIAogCS8qIEFkZCB0aHJlZSBBQ0VzIGZvciBvd25lciwgZ3JvdXAsIGV2ZXJ5b25lIGdldHRpbmcgcmlkIG9mCiAJICAgb3RoZXIgQUNFcyBhcyBjaG1vZCBkaXNhYmxlcyBBQ0VzIGFuZCBzZXQgdGhlIHNlY3VyaXR5IGRlc2NyaXB0b3IgKi8KZGlmZiAtLWdpdCBhL2ZzL2NpZnMvY2lmc3Byb3RvLmggYi9mcy9jaWZzL2NpZnNwcm90by5oCmluZGV4IDBhZjYzZTYuLjdlNWUwZTcgMTAwNjQ0Ci0tLSBhL2ZzL2NpZnMvY2lmc3Byb3RvLmgKKysrIGIvZnMvY2lmcy9jaWZzcHJvdG8uaApAQCAtMzksOCArMzksOCBAQAogCQkJdW5zaWduZWQgaW50IC8qIGxlbmd0aCAqLyAsIHN0cnVjdCBzb2NrYWRkciAqKTsKIGV4dGVybiB1bnNpZ25lZCBpbnQgX0dldFhpZCh2b2lkKTsKIGV4dGVybiB2b2lkIF9GcmVlWGlkKHVuc2lnbmVkIGludCk7Ci0jZGVmaW5lIEdldFhpZCgpIChpbnQpX0dldFhpZCgpOyBjRllJKDEsKCJDSUZTIFZGUzogaW4gJXMgYXMgWGlkOiAlZCB3aXRoIHVpZDogJWQiLF9fRlVOQ1RJT05fXywgeGlkLGN1cnJlbnQtPmZzdWlkKSk7Ci0jZGVmaW5lIEZyZWVYaWQoY3Vycl94aWQpIHtfRnJlZVhpZChjdXJyX3hpZCk7IGNGWUkoMSwoIkNJRlMgVkZTOiBsZWF2aW5nICVzICh4aWQgPSAlZCkgcmMgPSAlZCIsX19GVU5DVElPTl9fLGN1cnJfeGlkLChpbnQpcmMpKTt9CisjZGVmaW5lIEdldFhpZCgpIChpbnQpX0dldFhpZCgpOyBjRllJKDEsKCJDSUZTIFZGUzogaW4gJXMgYXMgWGlkOiAlZCB3aXRoIHVpZDogJWQiLF9fZnVuY19fLCB4aWQsY3VycmVudC0+ZnN1aWQpKTsKKyNkZWZpbmUgRnJlZVhpZChjdXJyX3hpZCkge19GcmVlWGlkKGN1cnJfeGlkKTsgY0ZZSSgxLCgiQ0lGUyBWRlM6IGxlYXZpbmcgJXMgKHhpZCA9ICVkKSByYyA9ICVkIixfX2Z1bmNfXyxjdXJyX3hpZCwoaW50KXJjKSk7fQogZXh0ZXJuIGNoYXIgKmJ1aWxkX3BhdGhfZnJvbV9kZW50cnkoc3RydWN0IGRlbnRyeSAqKTsKIGV4dGVybiBjaGFyICpidWlsZF93aWxkY2FyZF9wYXRoX2Zyb21fZGVudHJ5KHN0cnVjdCBkZW50cnkgKmRpcmVudHJ5KTsKIC8qIGV4dGVybiB2b2lkIHJlbmV3X3BhcmVudGFsX3RpbWVzdGFtcHMoc3RydWN0IGRlbnRyeSAqZGlyZW50cnkpOyovCkBAIC05MiwxMSArOTIsMTIgQEAKIGV4dGVybiBpbnQgY2lmc19nZXRfaW5vZGVfaW5mbyhzdHJ1Y3QgaW5vZGUgKipwaW5vZGUsCiAJCQljb25zdCB1bnNpZ25lZCBjaGFyICpzZWFyY2hfcGF0aCwKIAkJCUZJTEVfQUxMX0lORk8gKiBwZmlsZV9pbmZvLAotCQkJc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IHhpZCk7CisJCQlzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBpbnQgeGlkLCBjb25zdCBfX3UxNiAqcGZpZCk7CiBleHRlcm4gaW50IGNpZnNfZ2V0X2lub2RlX2luZm9fdW5peChzdHJ1Y3QgaW5vZGUgKipwaW5vZGUsCiAJCQljb25zdCB1bnNpZ25lZCBjaGFyICpzZWFyY2hfcGF0aCwKIAkJCXN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGludCB4aWQpOwotZXh0ZXJuIHZvaWQgYWNsX3RvX3VpZF9tb2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IGNoYXIgKnNlYXJjaF9wYXRoKTsKK2V4dGVybiB2b2lkIGFjbF90b191aWRfbW9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCBjaGFyICpwYXRoLAorCQkJICAgIGNvbnN0IF9fdTE2ICpwZmlkKTsKIGV4dGVybiBpbnQgbW9kZV90b19hY2woc3RydWN0IGlub2RlICppbm9kZSwgY29uc3QgY2hhciAqcGF0aCwgX191NjQpOwogCiBleHRlcm4gaW50IGNpZnNfbW91bnQoc3RydWN0IHN1cGVyX2Jsb2NrICosIHN0cnVjdCBjaWZzX3NiX2luZm8gKiwgY2hhciAqLApkaWZmIC0tZ2l0IGEvZnMvY2lmcy9kaXIuYyBiL2ZzL2NpZnMvZGlyLmMKaW5kZXggNGU4M2I0Ny4uMGY1YzYyYiAxMDA2NDQKLS0tIGEvZnMvY2lmcy9kaXIuYworKysgYi9mcy9jaWZzL2Rpci5jCkBAIC0yMjksNyArMjI5LDggQEAKIAkJCQkJCSBpbm9kZS0+aV9zYiwgeGlkKTsKIAkJZWxzZSB7CiAJCQlyYyA9IGNpZnNfZ2V0X2lub2RlX2luZm8oJm5ld2lub2RlLCBmdWxsX3BhdGgsCi0JCQkJCQkgYnVmLCBpbm9kZS0+aV9zYiwgeGlkKTsKKwkJCQkJCSBidWYsIGlub2RlLT5pX3NiLCB4aWQsCisJCQkJCQkgJmZpbGVIYW5kbGUpOwogCQkJaWYgKG5ld2lub2RlKSB7CiAJCQkJbmV3aW5vZGUtPmlfbW9kZSA9IG1vZGU7CiAJCQkJaWYgKChvcGxvY2sgJiBDSUZTX0NSRUFURV9BQ1RJT04pICYmCkBAIC00ODMsNyArNDg0LDcgQEAKIAkJCQkJICAgICAgcGFyZW50X2Rpcl9pbm9kZS0+aV9zYiwgeGlkKTsKIAllbHNlCiAJCXJjID0gY2lmc19nZXRfaW5vZGVfaW5mbygmbmV3SW5vZGUsIGZ1bGxfcGF0aCwgTlVMTCwKLQkJCQkJIHBhcmVudF9kaXJfaW5vZGUtPmlfc2IsIHhpZCk7CisJCQkJCSBwYXJlbnRfZGlyX2lub2RlLT5pX3NiLCB4aWQsIE5VTEwpOwogCiAJaWYgKChyYyA9PSAwKSAmJiAobmV3SW5vZGUgIT0gTlVMTCkpIHsKIAkJaWYgKHBUY29uLT5ub2Nhc2UpCmRpZmYgLS1naXQgYS9mcy9jaWZzL2Ruc19yZXNvbHZlLmMgYi9mcy9jaWZzL2Ruc19yZXNvbHZlLmMKaW5kZXggZWY3ZjQzOC4uN2NjODZjNCAxMDA2NDQKLS0tIGEvZnMvY2lmcy9kbnNfcmVzb2x2ZS5jCisrKyBiL2ZzL2NpZnMvZG5zX3Jlc29sdmUuYwpAQCAtNzcsMTQgKzc3LDE0IEBACiAJLyogc2VhcmNoIGZvciBzZXJ2ZXIgbmFtZSBkZWxpbWl0ZXIgKi8KIAlsZW4gPSBzdHJsZW4odW5jKTsKIAlpZiAobGVuIDwgMykgewotCQljRllJKDEsICgiJXM6IHVuYyBpcyB0b28gc2hvcnQ6ICVzIiwgX19GVU5DVElPTl9fLCB1bmMpKTsKKwkJY0ZZSSgxLCAoIiVzOiB1bmMgaXMgdG9vIHNob3J0OiAlcyIsIF9fZnVuY19fLCB1bmMpKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCWxlbiAtPSAyOwogCW5hbWUgPSBtZW1jaHIodW5jKzIsICdcXCcsIGxlbik7CiAJaWYgKCFuYW1lKSB7CiAJCWNGWUkoMSwgKCIlczogcHJvYmFibHkgc2VydmVyIG5hbWUgaXMgd2hvbGUgdW5jOiAlcyIsCi0JCQkJCV9fRlVOQ1RJT05fXywgdW5jKSk7CisJCQkJCV9fZnVuY19fLCB1bmMpKTsKIAl9IGVsc2UgewogCQlsZW4gPSAobmFtZSAtIHVuYykgLSAyLyogbGVhZGluZyAvLyAqLzsKIAl9CkBAIC0xMDQsNyArMTA0LDcgQEAKIAkJaWYgKCppcF9hZGRyKSB7CiAJCQltZW1jcHkoKmlwX2FkZHIsIHJrZXktPnBheWxvYWQuZGF0YSwgbGVuKTsKIAkJCSgqaXBfYWRkcilbbGVuXSA9ICdcMCc7Ci0JCQljRllJKDEsICgiJXM6IHJlc29sdmVkOiAlcyB0byAlcyIsIF9fRlVOQ1RJT05fXywKKwkJCWNGWUkoMSwgKCIlczogcmVzb2x2ZWQ6ICVzIHRvICVzIiwgX19mdW5jX18sCiAJCQkJCXJrZXktPmRlc2NyaXB0aW9uLAogCQkJCQkqaXBfYWRkcgogCQkJCSkpOwpAQCAtMTE0LDcgKzExNCw3IEBACiAJCX0KIAkJa2V5X3B1dChya2V5KTsKIAl9IGVsc2UgewotCQljRVJST1IoMSwgKCIlczogdW5hYmxlIHRvIHJlc29sdmU6ICVzIiwgX19GVU5DVElPTl9fLCBuYW1lKSk7CisJCWNFUlJPUigxLCAoIiVzOiB1bmFibGUgdG8gcmVzb2x2ZTogJXMiLCBfX2Z1bmNfXywgbmFtZSkpOwogCX0KIAogCWtmcmVlKG5hbWUpOwpkaWZmIC0tZ2l0IGEvZnMvY2lmcy9maWxlLmMgYi9mcy9jaWZzL2ZpbGUuYwppbmRleCBmYTg0OWM5Li40MGI2OTAwIDEwMDY0NAotLS0gYS9mcy9jaWZzL2ZpbGUuYworKysgYi9mcy9jaWZzL2ZpbGUuYwpAQCAtMTQ1LDcgKzE0NSw3IEBACiAJCQlmdWxsX3BhdGgsIGlub2RlLT5pX3NiLCB4aWQpOwogCWVsc2UKIAkJcmMgPSBjaWZzX2dldF9pbm9kZV9pbmZvKCZmaWxlLT5mX3BhdGguZGVudHJ5LT5kX2lub2RlLAotCQkJZnVsbF9wYXRoLCBidWYsIGlub2RlLT5pX3NiLCB4aWQpOworCQkJZnVsbF9wYXRoLCBidWYsIGlub2RlLT5pX3NiLCB4aWQsIE5VTEwpOwogCiAJaWYgKCgqb3Bsb2NrICYgMHhGKSA9PSBPUExPQ0tfRVhDTFVTSVZFKSB7CiAJCXBDaWZzSW5vZGUtPmNsaWVudENhbkNhY2hlQWxsID0gVFJVRTsKQEAgLTQ0MCw3ICs0NDAsNyBAQAogCQkJCWVsc2UKIAkJCQkJcmMgPSBjaWZzX2dldF9pbm9kZV9pbmZvKCZpbm9kZSwKIAkJCQkJCWZ1bGxfcGF0aCwgTlVMTCwgaW5vZGUtPmlfc2IsCi0JCQkJCQl4aWQpOworCQkJCQkJeGlkLCBOVUxMKTsKIAkJCX0gLyogZWxzZSB3ZSBhcmUgd3JpdGluZyBvdXQgZGF0YSB0byBzZXJ2ZXIgYWxyZWFkeQogCQkJICAgICBhbmQgY291bGQgZGVhZGxvY2sgaWYgd2UgdHJpZWQgdG8gZmx1c2ggZGF0YSwgYW5kCiAJCQkgICAgIHNpbmNlIHdlIGRvIG5vdCBrbm93IGlmIHdlIGhhdmUgZGF0YSB0aGF0IHdvdWxkCmRpZmYgLS1naXQgYS9mcy9jaWZzL2lub2RlLmMgYi9mcy9jaWZzL2lub2RlLmMKaW5kZXggMjRlYjRkMy4uYmM2NzNjOCAxMDA2NDQKLS0tIGEvZnMvY2lmcy9pbm9kZS5jCisrKyBiL2ZzL2NpZnMvaW5vZGUuYwpAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgImNpZnNfZnNfc2IuaCIKIAogCi1zdGF0aWMgdm9pZCBjaWZzX3NldF9vcHMoc3RydWN0IGlub2RlICppbm9kZSkKK3N0YXRpYyB2b2lkIGNpZnNfc2V0X29wcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCBib29sIGlzX2Rmc19yZWZlcnJhbCkKIHsKIAlzdHJ1Y3QgY2lmc19zYl9pbmZvICpjaWZzX3NiID0gQ0lGU19TQihpbm9kZS0+aV9zYik7CiAKQEAgLTU3LDggKzU3LDE2IEBACiAJCQlpbm9kZS0+aV9kYXRhLmFfb3BzID0gJmNpZnNfYWRkcl9vcHM7CiAJCWJyZWFrOwogCWNhc2UgU19JRkRJUjoKLQkJaW5vZGUtPmlfb3AgPSAmY2lmc19kaXJfaW5vZGVfb3BzOwotCQlpbm9kZS0+aV9mb3AgPSAmY2lmc19kaXJfb3BzOworI2lmZGVmIENPTkZJR19DSUZTX0RGU19VUENBTEwKKwkJaWYgKGlzX2Rmc19yZWZlcnJhbCkgeworCQkJaW5vZGUtPmlfb3AgPSAmY2lmc19kZnNfcmVmZXJyYWxfaW5vZGVfb3BlcmF0aW9uczsKKwkJfSBlbHNlIHsKKyNlbHNlIC8qIE5PIERGUyBzdXBwb3J0LCB0cmVhdCBhcyBhIGRpcmVjdG9yeSAqLworCQl7CisjZW5kaWYKKwkJCWlub2RlLT5pX29wID0gJmNpZnNfZGlyX2lub2RlX29wczsKKwkJCWlub2RlLT5pX2ZvcCA9ICZjaWZzX2Rpcl9vcHM7CisJCX0KIAkJYnJlYWs7CiAJY2FzZSBTX0lGTE5LOgogCQlpbm9kZS0+aV9vcCA9ICZjaWZzX3N5bWxpbmtfaW5vZGVfb3BzOwpAQCAtMTUzLDYgKzE2MSwzMCBAQAogCXNwaW5fdW5sb2NrKCZpbm9kZS0+aV9sb2NrKTsKIH0KIAorc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmNpZnNfZ2V0X3NlYXJjaF9wYXRoKHN0cnVjdCBjaWZzVGNvbkluZm8gKnBUY29uLAorCQkJCQljb25zdCBjaGFyICpzZWFyY2hfcGF0aCkKK3sKKwlpbnQgdHJlZV9sZW47CisJaW50IHBhdGhfbGVuOworCWNoYXIgKnRtcF9wYXRoOworCisJaWYgKCEocFRjb24tPkZsYWdzICYgU01CX1NIQVJFX0lTX0lOX0RGUykpCisJCXJldHVybiBzZWFyY2hfcGF0aDsKKworCS8qIHVzZSBmdWxsIHBhdGggbmFtZSBmb3Igd29ya2luZyB3aXRoIERGUyAqLworCXRyZWVfbGVuID0gc3RybmxlbihwVGNvbi0+dHJlZU5hbWUsIE1BWF9UUkVFX1NJWkUgKyAxKTsKKwlwYXRoX2xlbiA9IHN0cm5sZW4oc2VhcmNoX3BhdGgsIE1BWF9QQVRIQ09ORik7CisKKwl0bXBfcGF0aCA9IGttYWxsb2ModHJlZV9sZW4rcGF0aF9sZW4rMSwgR0ZQX0tFUk5FTCk7CisJaWYgKHRtcF9wYXRoID09IE5VTEwpCisJCXJldHVybiBzZWFyY2hfcGF0aDsKKworCXN0cm5jcHkodG1wX3BhdGgsIHBUY29uLT50cmVlTmFtZSwgdHJlZV9sZW4pOworCXN0cm5jcHkodG1wX3BhdGgrdHJlZV9sZW4sIHNlYXJjaF9wYXRoLCBwYXRoX2xlbik7CisJdG1wX3BhdGhbdHJlZV9sZW4rcGF0aF9sZW5dID0gMDsKKwlyZXR1cm4gdG1wX3BhdGg7Cit9CisKIGludCBjaWZzX2dldF9pbm9kZV9pbmZvX3VuaXgoc3RydWN0IGlub2RlICoqcGlub2RlLAogCWNvbnN0IHVuc2lnbmVkIGNoYXIgKnNlYXJjaF9wYXRoLCBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBpbnQgeGlkKQogewpAQCAtMTYxLDQxICsxOTMsMzEgQEAKIAlzdHJ1Y3QgY2lmc1Rjb25JbmZvICpwVGNvbjsKIAlzdHJ1Y3QgaW5vZGUgKmlub2RlOwogCXN0cnVjdCBjaWZzX3NiX2luZm8gKmNpZnNfc2IgPSBDSUZTX1NCKHNiKTsKLQljaGFyICp0bXBfcGF0aDsKKwljb25zdCB1bnNpZ25lZCBjaGFyICpmdWxsX3BhdGg7CisJYm9vbCBpc19kZnNfcmVmZXJyYWwgPSBmYWxzZTsKIAogCXBUY29uID0gY2lmc19zYi0+dGNvbjsKIAljRllJKDEsICgiR2V0dGluZyBpbmZvIG9uICVzIiwgc2VhcmNoX3BhdGgpKTsKKworCWZ1bGxfcGF0aCA9IGNpZnNfZ2V0X3NlYXJjaF9wYXRoKHBUY29uLCBzZWFyY2hfcGF0aCk7CisKK3RyeV9hZ2Fpbl9DSUZTU01CVW5peFFQYXRoSW5mbzoKIAkvKiBjb3VsZCBoYXZlIGRvbmUgYSBmaW5kIGZpcnN0IGluc3RlYWQgYnV0IHRoaXMgcmV0dXJucyBtb3JlIGluZm8gKi8KLQlyYyA9IENJRlNTTUJVbml4UVBhdGhJbmZvKHhpZCwgcFRjb24sIHNlYXJjaF9wYXRoLCAmZmluZERhdGEsCisJcmMgPSBDSUZTU01CVW5peFFQYXRoSW5mbyh4aWQsIHBUY29uLCBmdWxsX3BhdGgsICZmaW5kRGF0YSwKIAkJCQkgIGNpZnNfc2ItPmxvY2FsX25scywgY2lmc19zYi0+bW50X2NpZnNfZmxhZ3MgJgogCQkJCQlDSUZTX01PVU5UX01BUF9TUEVDSUFMX0NIUik7CiAvKglkdW1wX21lbSgiXG5Vbml4UVBhdGhJbmZvIHJldHVybiBkYXRhIiwgJmZpbmREYXRhLAogCQkgc2l6ZW9mKGZpbmREYXRhKSk7ICovCiAJaWYgKHJjKSB7Ci0JCWlmIChyYyA9PSAtRVJFTU9URSkgewotCQkJdG1wX3BhdGggPQotCQkJICAgIGttYWxsb2Moc3RybmxlbihwVGNvbi0+dHJlZU5hbWUsCi0JCQkJCSAgICBNQVhfVFJFRV9TSVpFICsgMSkgKwotCQkJCSAgICBzdHJubGVuKHNlYXJjaF9wYXRoLCBNQVhfUEFUSENPTkYpICsgMSwKLQkJCQkgICAgR0ZQX0tFUk5FTCk7Ci0JCQlpZiAodG1wX3BhdGggPT0gTlVMTCkKLQkJCQlyZXR1cm4gLUVOT01FTTsKLQotCQkJLyogaGF2ZSB0byBza2lwIGZpcnN0IG9mIHRoZSBkb3VibGUgYmFja3NsYXNoIG9mCi0JCQkgICBVTkMgbmFtZSAqLwotCQkJc3RybmNweSh0bXBfcGF0aCwgcFRjb24tPnRyZWVOYW1lLCBNQVhfVFJFRV9TSVpFKTsKLQkJCXN0cm5jYXQodG1wX3BhdGgsIHNlYXJjaF9wYXRoLCBNQVhfUEFUSENPTkYpOwotCQkJcmMgPSBjb25uZWN0X3RvX2Rmc19wYXRoKHhpZCwgcFRjb24tPnNlcywKLQkJCQkJCSAvKiB0cmVlbmFtZSArICovIHRtcF9wYXRoLAotCQkJCQkJIGNpZnNfc2ItPmxvY2FsX25scywKLQkJCQkJCSBjaWZzX3NiLT5tbnRfY2lmc19mbGFncyAmCi0JCQkJCQkgICAgQ0lGU19NT1VOVF9NQVBfU1BFQ0lBTF9DSFIpOwotCQkJa2ZyZWUodG1wX3BhdGgpOwotCi0JCQkvKiBCQiBmaXggdXAgaW5vZGUgZXRjLiAqLwotCQl9IGVsc2UgaWYgKHJjKSB7Ci0JCQlyZXR1cm4gcmM7CisJCWlmIChyYyA9PSAtRVJFTU9URSAmJiAhaXNfZGZzX3JlZmVycmFsKSB7CisJCQlpc19kZnNfcmVmZXJyYWwgPSB0cnVlOworCQkJaWYgKGZ1bGxfcGF0aCAhPSBzZWFyY2hfcGF0aCkgeworCQkJCWtmcmVlKGZ1bGxfcGF0aCk7CisJCQkJZnVsbF9wYXRoID0gc2VhcmNoX3BhdGg7CisJCQl9CisJCQlnb3RvIHRyeV9hZ2Fpbl9DSUZTU01CVW5peFFQYXRoSW5mbzsKIAkJfQorCQlnb3RvIGNnaWl1X2V4aXQ7CiAJfSBlbHNlIHsKIAkJc3RydWN0IGNpZnNJbm9kZUluZm8gKmNpZnNJbmZvOwogCQlfX3U2NCBudW1fb2ZfYnl0ZXMgPSBsZTY0X3RvX2NwdShmaW5kRGF0YS5OdW1PZkJ5dGVzKTsKQEAgLTIwNCw4ICsyMjYsMTAgQEAKIAkJLyogZ2V0IG5ldyBpbm9kZSAqLwogCQlpZiAoKnBpbm9kZSA9PSBOVUxMKSB7CiAJCQkqcGlub2RlID0gbmV3X2lub2RlKHNiKTsKLQkJCWlmICgqcGlub2RlID09IE5VTEwpCi0JCQkJcmV0dXJuIC1FTk9NRU07CisJCQlpZiAoKnBpbm9kZSA9PSBOVUxMKSB7CisJCQkJcmMgPSAtRU5PTUVNOworCQkJCWdvdG8gY2dpaXVfZXhpdDsKKwkJCX0KIAkJCS8qIElzIGFuIGlfaW5vIG9mIHplcm8gbGVnYWw/ICovCiAJCQkvKiBBcmUgdGhlcmUgc2FuaXR5IGNoZWNrcyB3ZSBjYW4gdXNlIHRvIGVuc3VyZSB0aGF0CiAJCQkgICB0aGUgc2VydmVyIGlzIHJlYWxseSBmaWxsaW5nIGluIHRoYXQgZmllbGQ/ICovCkBAIC0yMzcsOCArMjYxLDExIEBACiAJCQkodW5zaWduZWQgbG9uZykgaW5vZGUtPmlfc2l6ZSwKIAkJCSh1bnNpZ25lZCBsb25nIGxvbmcpaW5vZGUtPmlfYmxvY2tzKSk7CiAKLQkJY2lmc19zZXRfb3BzKGlub2RlKTsKKwkJY2lmc19zZXRfb3BzKGlub2RlLCBpc19kZnNfcmVmZXJyYWwpOwogCX0KK2NnaWl1X2V4aXQ6CisJaWYgKGZ1bGxfcGF0aCAhPSBzZWFyY2hfcGF0aCkKKwkJa2ZyZWUoZnVsbF9wYXRoKTsKIAlyZXR1cm4gcmM7CiB9CiAKQEAgLTM0NywxNSArMzc0LDE2IEBACiAKIGludCBjaWZzX2dldF9pbm9kZV9pbmZvKHN0cnVjdCBpbm9kZSAqKnBpbm9kZSwKIAljb25zdCB1bnNpZ25lZCBjaGFyICpzZWFyY2hfcGF0aCwgRklMRV9BTExfSU5GTyAqcGZpbmREYXRhLAotCXN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGludCB4aWQpCisJc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IHhpZCwgY29uc3QgX191MTYgKnBmaWQpCiB7CiAJaW50IHJjID0gMDsKIAlzdHJ1Y3QgY2lmc1Rjb25JbmZvICpwVGNvbjsKIAlzdHJ1Y3QgaW5vZGUgKmlub2RlOwogCXN0cnVjdCBjaWZzX3NiX2luZm8gKmNpZnNfc2IgPSBDSUZTX1NCKHNiKTsKLQljaGFyICp0bXBfcGF0aDsKKwljb25zdCB1bnNpZ25lZCBjaGFyICpmdWxsX3BhdGggPSBOVUxMOwogCWNoYXIgKmJ1ZiA9IE5VTEw7CiAJaW50IGFkanVzdFRaID0gRkFMU0U7CisJYm9vbCBpc19kZnNfcmVmZXJyYWwgPSBmYWxzZTsKIAogCXBUY29uID0gY2lmc19zYi0+dGNvbjsKIAljRllJKDEsICgiR2V0dGluZyBpbmZvIG9uICVzIiwgc2VhcmNoX3BhdGgpKTsKQEAgLTM3Myw4ICs0MDEsMTIgQEAKIAkJaWYgKGJ1ZiA9PSBOVUxMKQogCQkJcmV0dXJuIC1FTk9NRU07CiAJCXBmaW5kRGF0YSA9IChGSUxFX0FMTF9JTkZPICopYnVmOworCisJCWZ1bGxfcGF0aCA9IGNpZnNfZ2V0X3NlYXJjaF9wYXRoKHBUY29uLCBzZWFyY2hfcGF0aCk7CisKK3RyeV9hZ2Fpbl9DSUZTU01CUVBhdGhJbmZvOgogCQkvKiBjb3VsZCBkbyBmaW5kIGZpcnN0IGluc3RlYWQgYnV0IHRoaXMgcmV0dXJucyBtb3JlIGluZm8gKi8KLQkJcmMgPSBDSUZTU01CUVBhdGhJbmZvKHhpZCwgcFRjb24sIHNlYXJjaF9wYXRoLCBwZmluZERhdGEsCisJCXJjID0gQ0lGU1NNQlFQYXRoSW5mbyh4aWQsIHBUY29uLCBmdWxsX3BhdGgsIHBmaW5kRGF0YSwKIAkJCSAgICAgIDAgLyogbm90IGxlZ2FjeSAqLywKIAkJCSAgICAgIGNpZnNfc2ItPmxvY2FsX25scywgY2lmc19zYi0+bW50X2NpZnNfZmxhZ3MgJgogCQkJCUNJRlNfTU9VTlRfTUFQX1NQRUNJQUxfQ0hSKTsKQEAgLTM4Miw3ICs0MTQsNyBAQAogCQl3aGVuIHNlcnZlciBjbGFpbXMgbm8gTlQgU01CIHN1cHBvcnQgYW5kIHRoZSBhYm92ZSBjYWxsCiAJCWZhaWxlZCBhdCBsZWFzdCBvbmNlIC0gc2V0IGZsYWcgaW4gdGNvbiBvciBtb3VudCAqLwogCQlpZiAoKHJjID09IC1FT1BOT1RTVVBQKSB8fCAocmMgPT0gLUVJTlZBTCkpIHsKLQkJCXJjID0gU01CUXVlcnlJbmZvcm1hdGlvbih4aWQsIHBUY29uLCBzZWFyY2hfcGF0aCwKKwkJCXJjID0gU01CUXVlcnlJbmZvcm1hdGlvbih4aWQsIHBUY29uLCBmdWxsX3BhdGgsCiAJCQkJCXBmaW5kRGF0YSwgY2lmc19zYi0+bG9jYWxfbmxzLAogCQkJCQljaWZzX3NiLT5tbnRfY2lmc19mbGFncyAmCiAJCQkJCSAgQ0lGU19NT1VOVF9NQVBfU1BFQ0lBTF9DSFIpOwpAQCAtMzkxLDMxICs0MjMsMTUgQEAKIAl9CiAJLyogZHVtcF9tZW0oIlxuUVBhdGhJbmZvIHJldHVybiBkYXRhIiwmZmluZERhdGEsIHNpemVvZihmaW5kRGF0YSkpOyAqLwogCWlmIChyYykgewotCQlpZiAocmMgPT0gLUVSRU1PVEUpIHsKLQkJCXRtcF9wYXRoID0KLQkJCSAgICBrbWFsbG9jKHN0cm5sZW4KLQkJCQkgICAgKHBUY29uLT50cmVlTmFtZSwKLQkJCQkgICAgIE1BWF9UUkVFX1NJWkUgKyAxKSArCi0JCQkJICAgIHN0cm5sZW4oc2VhcmNoX3BhdGgsIE1BWF9QQVRIQ09ORikgKyAxLAotCQkJCSAgICBHRlBfS0VSTkVMKTsKLQkJCWlmICh0bXBfcGF0aCA9PSBOVUxMKSB7Ci0JCQkJa2ZyZWUoYnVmKTsKLQkJCQlyZXR1cm4gLUVOT01FTTsKKwkJaWYgKHJjID09IC1FUkVNT1RFICYmICFpc19kZnNfcmVmZXJyYWwpIHsKKwkJCWlzX2Rmc19yZWZlcnJhbCA9IHRydWU7CisJCQlpZiAoZnVsbF9wYXRoICE9IHNlYXJjaF9wYXRoKSB7CisJCQkJa2ZyZWUoZnVsbF9wYXRoKTsKKwkJCQlmdWxsX3BhdGggPSBzZWFyY2hfcGF0aDsKIAkJCX0KLQotCQkJc3RybmNweSh0bXBfcGF0aCwgcFRjb24tPnRyZWVOYW1lLCBNQVhfVFJFRV9TSVpFKTsKLQkJCXN0cm5jYXQodG1wX3BhdGgsIHNlYXJjaF9wYXRoLCBNQVhfUEFUSENPTkYpOwotCQkJcmMgPSBjb25uZWN0X3RvX2Rmc19wYXRoKHhpZCwgcFRjb24tPnNlcywKLQkJCQkJCSAvKiB0cmVlbmFtZSArICovIHRtcF9wYXRoLAotCQkJCQkJIGNpZnNfc2ItPmxvY2FsX25scywKLQkJCQkJCSBjaWZzX3NiLT5tbnRfY2lmc19mbGFncyAmCi0JCQkJCQkgICBDSUZTX01PVU5UX01BUF9TUEVDSUFMX0NIUik7Ci0JCQlrZnJlZSh0bXBfcGF0aCk7Ci0JCQkvKiBCQiBmaXggdXAgaW5vZGUgZXRjLiAqLwotCQl9IGVsc2UgaWYgKHJjKSB7Ci0JCQlrZnJlZShidWYpOwotCQkJcmV0dXJuIHJjOworCQkJZ290byB0cnlfYWdhaW5fQ0lGU1NNQlFQYXRoSW5mbzsKIAkJfQorCQlnb3RvIGNnaWlfZXhpdDsKIAl9IGVsc2UgewogCQlzdHJ1Y3QgY2lmc0lub2RlSW5mbyAqY2lmc0luZm87CiAJCV9fdTMyIGF0dHIgPSBsZTMyX3RvX2NwdShwZmluZERhdGEtPkF0dHJpYnV0ZXMpOwpAQCAtNDI0LDggKzQ0MCw4IEBACiAJCWlmICgqcGlub2RlID09IE5VTEwpIHsKIAkJCSpwaW5vZGUgPSBuZXdfaW5vZGUoc2IpOwogCQkJaWYgKCpwaW5vZGUgPT0gTlVMTCkgewotCQkJCWtmcmVlKGJ1Zik7Ci0JCQkJcmV0dXJuIC1FTk9NRU07CisJCQkJcmMgPSAtRU5PTUVNOworCQkJCWdvdG8gY2dpaV9leGl0OwogCQkJfQogCQkJLyogSXMgYW4gaV9pbm8gb2YgemVybyBsZWdhbD8gQ2FuIHdlIHVzZSB0aGF0IHRvIGNoZWNrCiAJCQkgICBpZiB0aGUgc2VydmVyIHN1cHBvcnRzIHJldHVybmluZyBpbm9kZSBudW1iZXJzPyAgQXJlCkBAIC01NTksNyArNTc1LDcgQEAKIAkJLyogZmlsbCBpbiAwNzc3IGJpdHMgZnJvbSBBQ0wgKi8KIAkJaWYgKGNpZnNfc2ItPm1udF9jaWZzX2ZsYWdzICYgQ0lGU19NT1VOVF9DSUZTX0FDTCkgewogCQkJY0ZZSSgxLCAoIkdldHRpbmcgbW9kZSBiaXRzIGZyb20gQUNMIikpOwotCQkJYWNsX3RvX3VpZF9tb2RlKGlub2RlLCBzZWFyY2hfcGF0aCk7CisJCQlhY2xfdG9fdWlkX21vZGUoaW5vZGUsIHNlYXJjaF9wYXRoLCBwZmlkKTsKIAkJfQogI2VuZGlmCiAJCWlmIChjaWZzX3NiLT5tbnRfY2lmc19mbGFncyAmIENJRlNfTU9VTlRfVU5YX0VNVUwpIHsKQEAgLTU3Myw4ICs1ODksMTEgQEAKIAkJCWF0b21pY19zZXQoJmNpZnNJbmZvLT5pblVzZSwgMSk7CiAJCX0KIAotCQljaWZzX3NldF9vcHMoaW5vZGUpOworCQljaWZzX3NldF9vcHMoaW5vZGUsIGlzX2Rmc19yZWZlcnJhbCk7CiAJfQorY2dpaV9leGl0OgorCWlmIChmdWxsX3BhdGggIT0gc2VhcmNoX3BhdGgpCisJCWtmcmVlKGZ1bGxfcGF0aCk7CiAJa2ZyZWUoYnVmKTsKIAlyZXR1cm4gcmM7CiB9CkBAIC02MDMsNyArNjIyLDggQEAKIAlpZiAoY2lmc19zYi0+dGNvbi0+dW5peF9leHQpCiAJCXJjID0gY2lmc19nZXRfaW5vZGVfaW5mb191bml4KCZpbm9kZSwgIiIsIGlub2RlLT5pX3NiLCB4aWQpOwogCWVsc2UKLQkJcmMgPSBjaWZzX2dldF9pbm9kZV9pbmZvKCZpbm9kZSwgIiIsIE5VTEwsIGlub2RlLT5pX3NiLCB4aWQpOworCQlyYyA9IGNpZnNfZ2V0X2lub2RlX2luZm8oJmlub2RlLCAiIiwgTlVMTCwgaW5vZGUtPmlfc2IsIHhpZCwKKwkJCQkJIE5VTEwpOwogCWlmIChyYyAmJiBjaWZzX3NiLT50Y29uLT5pcGMpIHsKIAkJY0ZZSSgxLCAoImlwYyBjb25uZWN0aW9uIC0gZmFrZSByZWFkIGlub2RlIikpOwogCQlpbm9kZS0+aV9tb2RlIHw9IFNfSUZESVI7CkBAIC04MDQsNyArODI0LDcgQEAKIAlsb2NhbF9zaXplICA9IHRtcF9pbm9kZS0+aV9zaXplOwogCiAJY2lmc191bml4X2luZm9fdG9faW5vZGUodG1wX2lub2RlLCBwRGF0YSwgMSk7Ci0JY2lmc19zZXRfb3BzKHRtcF9pbm9kZSk7CisJY2lmc19zZXRfb3BzKHRtcF9pbm9kZSwgZmFsc2UpOwogCiAJaWYgKCFTX0lTUkVHKHRtcF9pbm9kZS0+aV9tb2RlKSkKIAkJcmV0dXJuOwpAQCAtOTM2LDcgKzk1Niw3IEBACiAJCQkJCQkgICAgICBpbm9kZS0+aV9zYiwgeGlkKTsKIAkJZWxzZQogCQkJcmMgPSBjaWZzX2dldF9pbm9kZV9pbmZvKCZuZXdpbm9kZSwgZnVsbF9wYXRoLCBOVUxMLAotCQkJCQkJIGlub2RlLT5pX3NiLCB4aWQpOworCQkJCQkJIGlub2RlLT5pX3NiLCB4aWQsIE5VTEwpOwogCiAJCWlmIChwVGNvbi0+bm9jYXNlKQogCQkJZGlyZW50cnktPmRfb3AgPSAmY2lmc19jaV9kZW50cnlfb3BzOwpAQCAtMTIxOCw3ICsxMjM4LDcgQEAKIAkJfQogCX0gZWxzZSB7CiAJCXJjID0gY2lmc19nZXRfaW5vZGVfaW5mbygmZGlyZW50cnktPmRfaW5vZGUsIGZ1bGxfcGF0aCwgTlVMTCwKLQkJCQkJIGRpcmVudHJ5LT5kX3NiLCB4aWQpOworCQkJCQkgZGlyZW50cnktPmRfc2IsIHhpZCwgTlVMTCk7CiAJCWlmIChyYykgewogCQkJY0ZZSSgxLCAoImVycm9yIG9uIGdldHRpbmcgcmV2YWxpZGF0ZSBpbmZvICVkIiwgcmMpKTsKIC8qCQkJaWYgKHJjICE9IC1FTk9FTlQpCkBAIC0xNDA3LDExICsxNDI3LDEwIEBACiAJfQogCWNpZnNJbm9kZSA9IENJRlNfSShkaXJlbnRyeS0+ZF9pbm9kZSk7CiAKLQkvKiBCQiBjaGVjayBpZiB3ZSBuZWVkIHRvIHJlZnJlc2ggaW5vZGUgZnJvbSBzZXJ2ZXIgbm93ID8gQkIgKi8KLQotCWlmIChhdHRycy0+aWFfdmFsaWQgJiBBVFRSX1NJWkUpIHsKKwlpZiAoKGF0dHJzLT5pYV92YWxpZCAmIEFUVFJfTVRJTUUpIHx8IChhdHRycy0+aWFfdmFsaWQgJiBBVFRSX1NJWkUpKSB7CiAJCS8qCi0JCSAgIEZsdXNoIGRhdGEgYmVmb3JlIGNoYW5naW5nIGZpbGUgc2l6ZSBvbiBzZXJ2ZXIuIElmIHRoZQorCQkgICBGbHVzaCBkYXRhIGJlZm9yZSBjaGFuZ2luZyBmaWxlIHNpemUgb3IgY2hhbmdpbmcgdGhlIGxhc3QKKwkJICAgd3JpdGUgdGltZSBvZiB0aGUgZmlsZSBvbiB0aGUgc2VydmVyLiBJZiB0aGUKIAkJICAgZmx1c2ggcmV0dXJucyBlcnJvciwgc3RvcmUgaXQgdG8gcmVwb3J0IGxhdGVyIGFuZCBjb250aW51ZS4KIAkJICAgQkI6IFRoaXMgc2hvdWxkIGJlIHNtYXJ0ZXIuIFdoeSBib3RoZXIgZmx1c2hpbmcgcGFnZXMgdGhhdAogCQkgICB3aWxsIGJlIHRydW5jYXRlZCBhbnl3YXk/IEFsc28sIHNob3VsZCB3ZSBlcnJvciBvdXQgaGVyZSBpZgpAQCAtMTQyMiw3ICsxNDQxLDkgQEAKIAkJCUNJRlNfSShkaXJlbnRyeS0+ZF9pbm9kZSktPndyaXRlX2JlaGluZF9yYyA9IHJjOwogCQkJcmMgPSAwOwogCQl9CisJfQogCisJaWYgKGF0dHJzLT5pYV92YWxpZCAmIEFUVFJfU0laRSkgewogCQkvKiBUbyBhdm9pZCBzcHVyaW91cyBvcGxvY2sgYnJlYWtzIGZyb20gc2VydmVyLCBpbiB0aGUgY2FzZSBvZgogCQkgICBpbm9kZXMgdGhhdCB3ZSBhbHJlYWR5IGhhdmUgb3BlbiwgYXZvaWQgZG9pbmcgcGF0aCBiYXNlZAogCQkgICBzZXR0aW5nIG9mIGZpbGUgc2l6ZSBpZiB3ZSBjYW4gZG8gaXQgYnkgaGFuZGxlLgpkaWZmIC0tZ2l0IGEvZnMvY2lmcy9saW5rLmMgYi9mcy9jaWZzL2xpbmsuYwppbmRleCAxZDZmYjAxLi5kNGU3ZWM5IDEwMDY0NAotLS0gYS9mcy9jaWZzL2xpbmsuYworKysgYi9mcy9jaWZzL2xpbmsuYwpAQCAtMjA1LDcgKzIwNSw3IEBACiAJCQkJCQkgICAgICBpbm9kZS0+aV9zYiwgeGlkKTsKIAkJZWxzZQogCQkJcmMgPSBjaWZzX2dldF9pbm9kZV9pbmZvKCZuZXdpbm9kZSwgZnVsbF9wYXRoLCBOVUxMLAotCQkJCQkJIGlub2RlLT5pX3NiLCB4aWQpOworCQkJCQkJIGlub2RlLT5pX3NiLCB4aWQsIE5VTEwpOwogCiAJCWlmIChyYyAhPSAwKSB7CiAJCQljRllJKDEsICgiQ3JlYXRlIHN5bWxpbmsgb2ssIGdldGlub2RlaW5mbyBmYWlsIHJjID0gJWQiLApkaWZmIC0tZ2l0IGEvZnMvZHF1b3QuYyBiL2ZzL2RxdW90LmMKaW5kZXggOWM3ZmViNi4uNDFiOWRiZCAxMDA2NDQKLS0tIGEvZnMvZHF1b3QuYworKysgYi9mcy9kcXVvdC5jCkBAIC0xNTIyLDggKzE1MjIsOCBAQAogCQkJCXRydW5jYXRlX2lub2RlX3BhZ2VzKCZ0b3B1dGlub2RlW2NudF0tPmlfZGF0YSwgMCk7CiAJCQkJbXV0ZXhfdW5sb2NrKCZ0b3B1dGlub2RlW2NudF0tPmlfbXV0ZXgpOwogCQkJCW1hcmtfaW5vZGVfZGlydHkodG9wdXRpbm9kZVtjbnRdKTsKLQkJCQlpcHV0KHRvcHV0aW5vZGVbY250XSk7CiAJCQl9CisJCQlpcHV0KHRvcHV0aW5vZGVbY250XSk7CiAJCQltdXRleF91bmxvY2soJmRxb3B0LT5kcW9ub2ZmX211dGV4KTsKIAkJfQogCWlmIChzYi0+c19iZGV2KQpkaWZmIC0tZ2l0IGEvZnMvZWNyeXB0ZnMvZGVudHJ5LmMgYi9mcy9lY3J5cHRmcy9kZW50cnkuYwppbmRleCA4NDFhMDMyLi41ZTU5NjU4IDEwMDY0NAotLS0gYS9mcy9lY3J5cHRmcy9kZW50cnkuYworKysgYi9mcy9lY3J5cHRmcy9kZW50cnkuYwpAQCAtODAsOCArODAsOCBAQAogewogCWlmIChlY3J5cHRmc19kZW50cnlfdG9fcHJpdmF0ZShkZW50cnkpKSB7CiAJCWlmIChlY3J5cHRmc19kZW50cnlfdG9fbG93ZXIoZGVudHJ5KSkgewotCQkJbW50cHV0KGVjcnlwdGZzX2RlbnRyeV90b19sb3dlcl9tbnQoZGVudHJ5KSk7CiAJCQlkcHV0KGVjcnlwdGZzX2RlbnRyeV90b19sb3dlcihkZW50cnkpKTsKKwkJCW1udHB1dChlY3J5cHRmc19kZW50cnlfdG9fbG93ZXJfbW50KGRlbnRyeSkpOwogCQl9CiAJCWttZW1fY2FjaGVfZnJlZShlY3J5cHRmc19kZW50cnlfaW5mb19jYWNoZSwKIAkJCQllY3J5cHRmc19kZW50cnlfdG9fcHJpdmF0ZShkZW50cnkpKTsKZGlmZiAtLWdpdCBhL2ZzL2Vmcy9pbm9kZS5jIGIvZnMvZWZzL2lub2RlLmMKaW5kZXggNzllMTllNS4uYThlNzc5NyAxMDA2NDQKLS0tIGEvZnMvZWZzL2lub2RlLmMKKysrIGIvZnMvZWZzL2lub2RlLmMKQEAgLTE0MCw3ICsxNDAsNyBAQAogCWJyZWxzZShiaCk7CiAgICAKICNpZmRlZiBERUJVRwotCXByaW50ayhLRVJOX0RFQlVHICJFRlM6IHJlYWRfaW5vZGUoKTogaW5vZGUgJWx1LCBleHRlbnRzICVkLCBtb2RlICVvXG4iLAorCXByaW50ayhLRVJOX0RFQlVHICJFRlM6IGVmc19pZ2V0KCk6IGlub2RlICVsdSwgZXh0ZW50cyAlZCwgbW9kZSAlb1xuIiwKIAkJaW5vZGUtPmlfaW5vLCBpbi0+bnVtZXh0ZW50cywgaW5vZGUtPmlfbW9kZSk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvZnMvZXh0Mi94YXR0ci5jIGIvZnMvZXh0Mi94YXR0ci5jCmluZGV4IDNlODY4M2QuLmE5OWQ0NmYgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDIveGF0dHIuYworKysgYi9mcy9leHQyL3hhdHRyLmMKQEAgLTgzNSw3ICs4MzUsNyBAQAogCXN0cnVjdCBtYl9jYWNoZV9lbnRyeSAqY2U7CiAJaW50IGVycm9yOwogCi0JY2UgPSBtYl9jYWNoZV9lbnRyeV9hbGxvYyhleHQyX3hhdHRyX2NhY2hlKTsKKwljZSA9IG1iX2NhY2hlX2VudHJ5X2FsbG9jKGV4dDJfeGF0dHJfY2FjaGUsIEdGUF9OT0ZTKTsKIAlpZiAoIWNlKQogCQlyZXR1cm4gLUVOT01FTTsKIAllcnJvciA9IG1iX2NhY2hlX2VudHJ5X2luc2VydChjZSwgYmgtPmJfYmRldiwgYmgtPmJfYmxvY2tuciwgJmhhc2gpOwpkaWZmIC0tZ2l0IGEvZnMvZXh0My9hY2wuYyBiL2ZzL2V4dDMvYWNsLmMKaW5kZXggZDM0ZTk5Ni4uYTc1NGQxOCAxMDA2NDQKLS0tIGEvZnMvZXh0My9hY2wuYworKysgYi9mcy9leHQzL2FjbC5jCkBAIC0zNyw3ICszNyw3IEBACiAJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwogCWlmIChjb3VudCA9PSAwKQogCQlyZXR1cm4gTlVMTDsKLQlhY2wgPSBwb3NpeF9hY2xfYWxsb2MoY291bnQsIEdGUF9LRVJORUwpOworCWFjbCA9IHBvc2l4X2FjbF9hbGxvYyhjb3VudCwgR0ZQX05PRlMpOwogCWlmICghYWNsKQogCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKIAlmb3IgKG49MDsgbiA8IGNvdW50OyBuKyspIHsKQEAgLTkxLDcgKzkxLDcgQEAKIAogCSpzaXplID0gZXh0M19hY2xfc2l6ZShhY2wtPmFfY291bnQpOwogCWV4dF9hY2wgPSBrbWFsbG9jKHNpemVvZihleHQzX2FjbF9oZWFkZXIpICsgYWNsLT5hX2NvdW50ICoKLQkJCXNpemVvZihleHQzX2FjbF9lbnRyeSksIEdGUF9LRVJORUwpOworCQkJc2l6ZW9mKGV4dDNfYWNsX2VudHJ5KSwgR0ZQX05PRlMpOwogCWlmICghZXh0X2FjbCkKIAkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CiAJZXh0X2FjbC0+YV92ZXJzaW9uID0gY3B1X3RvX2xlMzIoRVhUM19BQ0xfVkVSU0lPTik7CkBAIC0xODcsNyArMTg3LDcgQEAKIAl9CiAJcmV0dmFsID0gZXh0M194YXR0cl9nZXQoaW5vZGUsIG5hbWVfaW5kZXgsICIiLCBOVUxMLCAwKTsKIAlpZiAocmV0dmFsID4gMCkgewotCQl2YWx1ZSA9IGttYWxsb2MocmV0dmFsLCBHRlBfS0VSTkVMKTsKKwkJdmFsdWUgPSBrbWFsbG9jKHJldHZhbCwgR0ZQX05PRlMpOwogCQlpZiAoIXZhbHVlKQogCQkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CiAJCXJldHZhbCA9IGV4dDNfeGF0dHJfZ2V0KGlub2RlLCBuYW1lX2luZGV4LCAiIiwgdmFsdWUsIHJldHZhbCk7CkBAIC0zMzUsNyArMzM1LDcgQEAKIAkJCWlmIChlcnJvcikKIAkJCQlnb3RvIGNsZWFudXA7CiAJCX0KLQkJY2xvbmUgPSBwb3NpeF9hY2xfY2xvbmUoYWNsLCBHRlBfS0VSTkVMKTsKKwkJY2xvbmUgPSBwb3NpeF9hY2xfY2xvbmUoYWNsLCBHRlBfTk9GUyk7CiAJCWVycm9yID0gLUVOT01FTTsKIAkJaWYgKCFjbG9uZSkKIAkJCWdvdG8gY2xlYW51cDsKZGlmZiAtLWdpdCBhL2ZzL2V4dDMvcmVzaXplLmMgYi9mcy9leHQzL3Jlc2l6ZS5jCmluZGV4IDkzOTdkNzcuLjBlOTdiNmUgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDMvcmVzaXplLmMKKysrIGIvZnMvZXh0My9yZXNpemUuYwpAQCAtNDg1LDcgKzQ4NSw3IEBACiAJCWdvdG8gZXhpdF9kaW5kajsKIAogCW5fZ3JvdXBfZGVzYyA9IGttYWxsb2MoKGdkYl9udW0gKyAxKSAqIHNpemVvZihzdHJ1Y3QgYnVmZmVyX2hlYWQgKiksCi0JCQlHRlBfS0VSTkVMKTsKKwkJCUdGUF9OT0ZTKTsKIAlpZiAoIW5fZ3JvdXBfZGVzYykgewogCQllcnIgPSAtRU5PTUVNOwogCQlleHQzX3dhcm5pbmcgKHNiLCBfX0ZVTkNUSU9OX18sCkBAIC01NjgsNyArNTY4LDcgQEAKIAlpbnQgcmVzLCBpOwogCWludCBlcnI7CiAKLQlwcmltYXJ5ID0ga21hbGxvYyhyZXNlcnZlZF9nZGIgKiBzaXplb2YoKnByaW1hcnkpLCBHRlBfS0VSTkVMKTsKKwlwcmltYXJ5ID0ga21hbGxvYyhyZXNlcnZlZF9nZGIgKiBzaXplb2YoKnByaW1hcnkpLCBHRlBfTk9GUyk7CiAJaWYgKCFwcmltYXJ5KQogCQlyZXR1cm4gLUVOT01FTTsKIApkaWZmIC0tZ2l0IGEvZnMvZXh0My94YXR0ci5jIGIvZnMvZXh0My94YXR0ci5jCmluZGV4IGZiODljMjkuLjQyODU2NTQgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDMveGF0dHIuYworKysgYi9mcy9leHQzL3hhdHRyLmMKQEAgLTcyOCw3ICs3MjgsNyBAQAogCQkJCWNlID0gTlVMTDsKIAkJCX0KIAkJCWVhX2JkZWJ1Zyhicy0+YmgsICJjbG9uaW5nIik7Ci0JCQlzLT5iYXNlID0ga21hbGxvYyhicy0+YmgtPmJfc2l6ZSwgR0ZQX0tFUk5FTCk7CisJCQlzLT5iYXNlID0ga21hbGxvYyhicy0+YmgtPmJfc2l6ZSwgR0ZQX05PRlMpOwogCQkJZXJyb3IgPSAtRU5PTUVNOwogCQkJaWYgKHMtPmJhc2UgPT0gTlVMTCkKIAkJCQlnb3RvIGNsZWFudXA7CkBAIC03NDAsNyArNzQwLDcgQEAKIAkJfQogCX0gZWxzZSB7CiAJCS8qIEFsbG9jYXRlIGEgYnVmZmVyIHdoZXJlIHdlIGNvbnN0cnVjdCB0aGUgbmV3IGJsb2NrLiAqLwotCQlzLT5iYXNlID0ga3phbGxvYyhzYi0+c19ibG9ja3NpemUsIEdGUF9LRVJORUwpOworCQlzLT5iYXNlID0ga3phbGxvYyhzYi0+c19ibG9ja3NpemUsIEdGUF9OT0ZTKTsKIAkJLyogYXNzZXJ0KGhlYWRlciA9PSBzLT5iYXNlKSAqLwogCQllcnJvciA9IC1FTk9NRU07CiAJCWlmIChzLT5iYXNlID09IE5VTEwpCkBAIC0xMTI2LDcgKzExMjYsNyBAQAogCXN0cnVjdCBtYl9jYWNoZV9lbnRyeSAqY2U7CiAJaW50IGVycm9yOwogCi0JY2UgPSBtYl9jYWNoZV9lbnRyeV9hbGxvYyhleHQzX3hhdHRyX2NhY2hlKTsKKwljZSA9IG1iX2NhY2hlX2VudHJ5X2FsbG9jKGV4dDNfeGF0dHJfY2FjaGUsIEdGUF9OT0ZTKTsKIAlpZiAoIWNlKSB7CiAJCWVhX2JkZWJ1ZyhiaCwgIm91dCBvZiBtZW1vcnkiKTsKIAkJcmV0dXJuOwpkaWZmIC0tZ2l0IGEvZnMvZXh0NC94YXR0ci5jIGIvZnMvZXh0NC94YXR0ci5jCmluZGV4IGQ3OTYyMTMuLmU5MDU0YzEgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDQveGF0dHIuYworKysgYi9mcy9leHQ0L3hhdHRyLmMKQEAgLTEzODYsNyArMTM4Niw3IEBACiAJc3RydWN0IG1iX2NhY2hlX2VudHJ5ICpjZTsKIAlpbnQgZXJyb3I7CiAKLQljZSA9IG1iX2NhY2hlX2VudHJ5X2FsbG9jKGV4dDRfeGF0dHJfY2FjaGUpOworCWNlID0gbWJfY2FjaGVfZW50cnlfYWxsb2MoZXh0NF94YXR0cl9jYWNoZSwgR0ZQX05PRlMpOwogCWlmICghY2UpIHsKIAkJZWFfYmRlYnVnKGJoLCAib3V0IG9mIG1lbW9yeSIpOwogCQlyZXR1cm47CmRpZmYgLS1naXQgYS9mcy9maWxlX3RhYmxlLmMgYi9mcy9maWxlX3RhYmxlLmMKaW5kZXggNmQyN2JlZi4uOTg2ZmY0ZSAxMDA2NDQKLS0tIGEvZnMvZmlsZV90YWJsZS5jCisrKyBiL2ZzL2ZpbGVfdGFibGUuYwpAQCAtODMsNiArODMsMTIgQEAKIC8qIEZpbmQgYW4gdW51c2VkIGZpbGUgc3RydWN0dXJlIGFuZCByZXR1cm4gYSBwb2ludGVyIHRvIGl0LgogICogUmV0dXJucyBOVUxMLCBpZiB0aGVyZSBhcmUgbm8gbW9yZSBmcmVlIGZpbGUgc3RydWN0dXJlcyBvcgogICogd2UgcnVuIG91dCBvZiBtZW1vcnkuCisgKgorICogQmUgdmVyeSBjYXJlZnVsIHVzaW5nIHRoaXMuICBZb3UgYXJlIHJlc3BvbnNpYmxlIGZvcgorICogZ2V0dGluZyB3cml0ZSBhY2Nlc3MgdG8gYW55IG1vdW50IHRoYXQgeW91IG1pZ2h0IGFzc2lnbgorICogdG8gdGhpcyBmaWxwLCBpZiBpdCBpcyBvcGVuZWQgZm9yIHdyaXRlLiAgSWYgdGhpcyBpcyBub3QKKyAqIGRvbmUsIHlvdSB3aWxsIGltYmFsYW5jZSBpbnQgdGhlIG1vdW50J3Mgd3JpdGVyIGNvdW50CisgKiBhbmQgYSB3YXJuaW5nIGF0IF9fZnB1dCgpIHRpbWUuCiAgKi8KIHN0cnVjdCBmaWxlICpnZXRfZW1wdHlfZmlscCh2b2lkKQogewpkaWZmIC0tZ2l0IGEvZnMvZnMtd3JpdGViYWNrLmMgYi9mcy9mcy13cml0ZWJhY2suYwppbmRleCBjMDA3NjA3Li4wNjU1NzY3IDEwMDY0NAotLS0gYS9mcy9mcy13cml0ZWJhY2suYworKysgYi9mcy9mcy13cml0ZWJhY2suYwpAQCAtNzUxLDcgKzc1MSw3IEBACiBFWFBPUlRfU1lNQk9MKGdlbmVyaWNfb3N5bmNfaW5vZGUpOwogCiAvKioKLSAqIHdyaXRlYmFja19hY3F1aXJlOiBhdHRlbXB0IHRvIGdldCBleGNsdXNpdmUgd3JpdGViYWNrIGFjY2VzcyB0byBhIGRldmljZQorICogd3JpdGViYWNrX2FjcXVpcmUgLSBhdHRlbXB0IHRvIGdldCBleGNsdXNpdmUgd3JpdGViYWNrIGFjY2VzcyB0byBhIGRldmljZQogICogQGJkaTogdGhlIGRldmljZSdzIGJhY2tpbmdfZGV2X2luZm8gc3RydWN0dXJlCiAgKgogICogSXQgaXMgYSB3YXN0ZSBvZiByZXNvdXJjZXMgdG8gaGF2ZSBtb3JlIHRoYW4gb25lIHBkZmx1c2ggdGhyZWFkIGJsb2NrZWQgb24KQEAgLTc2OCw3ICs3NjgsNyBAQAogfQogCiAvKioKLSAqIHdyaXRlYmFja19pbl9wcm9ncmVzczogZGV0ZXJtaW5lIHdoZXRoZXIgdGhlcmUgaXMgd3JpdGViYWNrIGluIHByb2dyZXNzCisgKiB3cml0ZWJhY2tfaW5fcHJvZ3Jlc3MgLSBkZXRlcm1pbmUgd2hldGhlciB0aGVyZSBpcyB3cml0ZWJhY2sgaW4gcHJvZ3Jlc3MKICAqIEBiZGk6IHRoZSBkZXZpY2UncyBiYWNraW5nX2Rldl9pbmZvIHN0cnVjdHVyZS4KICAqCiAgKiBEZXRlcm1pbmUgd2hldGhlciB0aGVyZSBpcyB3cml0ZWJhY2sgaW4gcHJvZ3Jlc3MgYWdhaW5zdCBhIGJhY2tpbmcgZGV2aWNlLgpAQCAtNzc5LDcgKzc3OSw3IEBACiB9CiAKIC8qKgotICogd3JpdGViYWNrX3JlbGVhc2U6IHJlbGlucXVpc2ggZXhjbHVzaXZlIHdyaXRlYmFjayBhY2Nlc3MgYWdhaW5zdCBhIGRldmljZS4KKyAqIHdyaXRlYmFja19yZWxlYXNlIC0gcmVsaW5xdWlzaCBleGNsdXNpdmUgd3JpdGViYWNrIGFjY2VzcyBhZ2FpbnN0IGEgZGV2aWNlLgogICogQGJkaTogdGhlIGRldmljZSdzIGJhY2tpbmdfZGV2X2luZm8gc3RydWN0dXJlCiAgKi8KIHZvaWQgd3JpdGViYWNrX3JlbGVhc2Uoc3RydWN0IGJhY2tpbmdfZGV2X2luZm8gKmJkaSkKZGlmZiAtLWdpdCBhL2ZzL2hmcy9icmVjLmMgYi9mcy9oZnMvYnJlYy5jCmluZGV4IDg3OGJmMjUuLjkyZmIzNTggMTAwNjQ0Ci0tLSBhL2ZzL2hmcy9icmVjLmMKKysrIGIvZnMvaGZzL2JyZWMuYwpAQCAtMjI5LDcgKzIyOSw3IEBACiBzdGF0aWMgc3RydWN0IGhmc19ibm9kZSAqaGZzX2Jub2RlX3NwbGl0KHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCkKIHsKIAlzdHJ1Y3QgaGZzX2J0cmVlICp0cmVlOwotCXN0cnVjdCBoZnNfYm5vZGUgKm5vZGUsICpuZXdfbm9kZTsKKwlzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLCAqbmV3X25vZGUsICpuZXh0X25vZGU7CiAJc3RydWN0IGhmc19ibm9kZV9kZXNjIG5vZGVfZGVzYzsKIAlpbnQgbnVtX3JlY3MsIG5ld19yZWNfb2ZmLCBuZXdfb2ZmLCBvbGRfcmVjX29mZjsKIAlpbnQgZGF0YV9zdGFydCwgZGF0YV9lbmQsIHNpemU7CkBAIC0yNDgsNiArMjQ4LDE3IEBACiAJbmV3X25vZGUtPnR5cGUgPSBub2RlLT50eXBlOwogCW5ld19ub2RlLT5oZWlnaHQgPSBub2RlLT5oZWlnaHQ7CiAKKwlpZiAobm9kZS0+bmV4dCkKKwkJbmV4dF9ub2RlID0gaGZzX2Jub2RlX2ZpbmQodHJlZSwgbm9kZS0+bmV4dCk7CisJZWxzZQorCQluZXh0X25vZGUgPSBOVUxMOworCisJaWYgKElTX0VSUihuZXh0X25vZGUpKSB7CisJCWhmc19ibm9kZV9wdXQobm9kZSk7CisJCWhmc19ibm9kZV9wdXQobmV3X25vZGUpOworCQlyZXR1cm4gbmV4dF9ub2RlOworCX0KKwogCXNpemUgPSB0cmVlLT5ub2RlX3NpemUgLyAyIC0gbm9kZS0+bnVtX3JlY3MgKiAyIC0gMTQ7CiAJb2xkX3JlY19vZmYgPSB0cmVlLT5ub2RlX3NpemUgLSA0OwogCW51bV9yZWNzID0gMTsKQEAgLTI2MSw2ICsyNzIsOCBAQAogCQkvKiBwYW5pYz8gKi8KIAkJaGZzX2Jub2RlX3B1dChub2RlKTsKIAkJaGZzX2Jub2RlX3B1dChuZXdfbm9kZSk7CisJCWlmIChuZXh0X25vZGUpCisJCQloZnNfYm5vZGVfcHV0KG5leHRfbm9kZSk7CiAJCXJldHVybiBFUlJfUFRSKC1FTk9TUEMpOwogCX0KIApAQCAtMzE1LDggKzMyOCw3IEBACiAJaGZzX2Jub2RlX3dyaXRlKG5vZGUsICZub2RlX2Rlc2MsIDAsIHNpemVvZihub2RlX2Rlc2MpKTsKIAogCS8qIHVwZGF0ZSBuZXh0IGJub2RlIGhlYWRlciAqLwotCWlmIChuZXdfbm9kZS0+bmV4dCkgewotCQlzdHJ1Y3QgaGZzX2Jub2RlICpuZXh0X25vZGUgPSBoZnNfYm5vZGVfZmluZCh0cmVlLCBuZXdfbm9kZS0+bmV4dCk7CisJaWYgKG5leHRfbm9kZSkgewogCQluZXh0X25vZGUtPnByZXYgPSBuZXdfbm9kZS0+dGhpczsKIAkJaGZzX2Jub2RlX3JlYWQobmV4dF9ub2RlLCAmbm9kZV9kZXNjLCAwLCBzaXplb2Yobm9kZV9kZXNjKSk7CiAJCW5vZGVfZGVzYy5wcmV2ID0gY3B1X3RvX2JlMzIobmV4dF9ub2RlLT5wcmV2KTsKZGlmZiAtLWdpdCBhL2ZzL2hmc3BsdXMvZGlyLmMgYi9mcy9oZnNwbHVzL2Rpci5jCmluZGV4IDI5NjgzNjQuLjVmNDAyMzYgMTAwNjQ0Ci0tLSBhL2ZzL2hmc3BsdXMvZGlyLmMKKysrIGIvZnMvaGZzcGx1cy9kaXIuYwpAQCAtMzQwLDE2ICszNDAsMjMgQEAKIAogCWlmIChpbm9kZS0+aV9ubGluayA+IDApCiAJCWRyb3BfbmxpbmsoaW5vZGUpOwotCWhmc3BsdXNfZGVsZXRlX2lub2RlKGlub2RlKTsKLQlpZiAoaW5vZGUtPmlfaW5vICE9IGNuaWQgJiYgIWlub2RlLT5pX25saW5rKSB7Ci0JCWlmICghYXRvbWljX3JlYWQoJkhGU1BMVVNfSShpbm9kZSkub3BlbmNudCkpIHsKLQkJCXJlcyA9IGhmc3BsdXNfZGVsZXRlX2NhdChpbm9kZS0+aV9pbm8sIEhGU1BMVVNfU0Ioc2IpLmhpZGRlbl9kaXIsIE5VTEwpOwotCQkJaWYgKCFyZXMpCi0JCQkJaGZzcGx1c19kZWxldGVfaW5vZGUoaW5vZGUpOwotCQl9IGVsc2UKLQkJCWlub2RlLT5pX2ZsYWdzIHw9IFNfREVBRDsKLQl9IGVsc2UKKwlpZiAoaW5vZGUtPmlfaW5vID09IGNuaWQpCiAJCWNsZWFyX25saW5rKGlub2RlKTsKKwlpZiAoIWlub2RlLT5pX25saW5rKSB7CisJCWlmIChpbm9kZS0+aV9pbm8gIT0gY25pZCkgeworCQkJSEZTUExVU19TQihzYikuZmlsZV9jb3VudC0tOworCQkJaWYgKCFhdG9taWNfcmVhZCgmSEZTUExVU19JKGlub2RlKS5vcGVuY250KSkgeworCQkJCXJlcyA9IGhmc3BsdXNfZGVsZXRlX2NhdChpbm9kZS0+aV9pbm8sCisJCQkJCQkJIEhGU1BMVVNfU0Ioc2IpLmhpZGRlbl9kaXIsCisJCQkJCQkJIE5VTEwpOworCQkJCWlmICghcmVzKQorCQkJCQloZnNwbHVzX2RlbGV0ZV9pbm9kZShpbm9kZSk7CisJCQl9IGVsc2UKKwkJCQlpbm9kZS0+aV9mbGFncyB8PSBTX0RFQUQ7CisJCX0gZWxzZQorCQkJaGZzcGx1c19kZWxldGVfaW5vZGUoaW5vZGUpOworCX0gZWxzZQorCQlIRlNQTFVTX1NCKHNiKS5maWxlX2NvdW50LS07CiAJaW5vZGUtPmlfY3RpbWUgPSBDVVJSRU5UX1RJTUVfU0VDOwogCW1hcmtfaW5vZGVfZGlydHkoaW5vZGUpOwogCmRpZmYgLS1naXQgYS9mcy9ocHBmcy9ocHBmc19rZXJuLmMgYi9mcy9ocHBmcy9ocHBmc19rZXJuLmMKaW5kZXggYTFlMWYwZi4uODYwMWQ4ZSAxMDA2NDQKLS0tIGEvZnMvaHBwZnMvaHBwZnNfa2Vybi5jCisrKyBiL2ZzL2hwcGZzL2hwcGZzX2tlcm4uYwpAQCAtMSwyMyArMSwyNCBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMiBKZWZmIERpa2UgKGpkaWtlQGthcmF5YS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDIgLSAyMDA3IEplZmYgRGlrZSAoamRpa2VAe2FkZHRvaXQsbGludXguaW50ZWx9LmNvbSkKICAqIExpY2Vuc2VkIHVuZGVyIHRoZSBHUEwKICAqLwogCi0jaW5jbHVkZSA8bGludXgvZnMuaD4KLSNpbmNsdWRlIDxsaW51eC9maWxlLmg+Ci0jaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Ci0jaW5jbHVkZSA8bGludXgvaW5pdC5oPgotI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KLSNpbmNsdWRlIDxsaW51eC9saXN0Lmg+Ci0jaW5jbHVkZSA8bGludXgva2VybmVsLmg+CiAjaW5jbHVkZSA8bGludXgvY3R5cGUuaD4KICNpbmNsdWRlIDxsaW51eC9kY2FjaGUuaD4KKyNpbmNsdWRlIDxsaW51eC9maWxlLmg+CisjaW5jbHVkZSA8bGludXgvZnMuaD4KKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvbGlzdC5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L21vdW50Lmg+CisjaW5jbHVkZSA8bGludXgvc2xhYi5oPgogI2luY2x1ZGUgPGxpbnV4L3N0YXRmcy5oPgorI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CiAjaW5jbHVkZSA8YXNtL3VhY2Nlc3MuaD4KLSNpbmNsdWRlIDxhc20vZmNudGwuaD4KICNpbmNsdWRlICJvcy5oIgogCi1zdGF0aWMgaW50IGluaXRfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KTsKK3N0YXRpYyBzdHJ1Y3QgaW5vZGUgKmdldF9pbm9kZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgc3RydWN0IGRlbnRyeSAqKTsKIAogc3RydWN0IGhwcGZzX2RhdGEgewogCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKQEAgLTUxLDE0ICs1MiwxNCBAQAogCWludCBpOwogCiAJc2IgPSBkZW50cnktPmRfc2I7Ci0JaWYoKHNiLT5zX29wICE9ICZocHBmc19zYm9wcykgfHwgKGRlbnRyeS0+ZF9wYXJlbnQgIT0gc2ItPnNfcm9vdCkpCi0JCXJldHVybigwKTsKKwlpZiAoKHNiLT5zX29wICE9ICZocHBmc19zYm9wcykgfHwgKGRlbnRyeS0+ZF9wYXJlbnQgIT0gc2ItPnNfcm9vdCkpCisJCXJldHVybiAwOwogCi0JZm9yKGkgPSAwOyBpIDwgZGVudHJ5LT5kX25hbWUubGVuOyBpKyspewotCQlpZighaXNkaWdpdChkZW50cnktPmRfbmFtZS5uYW1lW2ldKSkKLQkJCXJldHVybigwKTsKKwlmb3IgKGkgPSAwOyBpIDwgZGVudHJ5LT5kX25hbWUubGVuOyBpKyspIHsKKwkJaWYgKCFpc2RpZ2l0KGRlbnRyeS0+ZF9uYW1lLm5hbWVbaV0pKQorCQkJcmV0dXJuIDA7CiAJfQotCXJldHVybigxKTsKKwlyZXR1cm4gMTsKIH0KIAogc3RhdGljIGNoYXIgKmRlbnRyeV9uYW1lKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgaW50IGV4dHJhKQpAQCAtNzAsOCArNzEsOCBAQAogCiAJbGVuID0gMDsKIAlwYXJlbnQgPSBkZW50cnk7Ci0Jd2hpbGUocGFyZW50LT5kX3BhcmVudCAhPSBwYXJlbnQpewotCQlpZihpc19waWQocGFyZW50KSkKKwl3aGlsZSAocGFyZW50LT5kX3BhcmVudCAhPSBwYXJlbnQpIHsKKwkJaWYgKGlzX3BpZChwYXJlbnQpKQogCQkJbGVuICs9IHN0cmxlbigicGlkIikgKyAxOwogCQllbHNlIGxlbiArPSBwYXJlbnQtPmRfbmFtZS5sZW4gKyAxOwogCQlwYXJlbnQgPSBwYXJlbnQtPmRfcGFyZW50OwpAQCAtODAsMTIgKzgxLDEzIEBACiAJcm9vdCA9ICJwcm9jIjsKIAlsZW4gKz0gc3RybGVuKHJvb3QpOwogCW5hbWUgPSBrbWFsbG9jKGxlbiArIGV4dHJhICsgMSwgR0ZQX0tFUk5FTCk7Ci0JaWYobmFtZSA9PSBOVUxMKSByZXR1cm4oTlVMTCk7CisJaWYgKG5hbWUgPT0gTlVMTCkKKwkJcmV0dXJuIE5VTEw7CiAKIAluYW1lW2xlbl0gPSAnXDAnOwogCXBhcmVudCA9IGRlbnRyeTsKLQl3aGlsZShwYXJlbnQtPmRfcGFyZW50ICE9IHBhcmVudCl7Ci0JCWlmKGlzX3BpZChwYXJlbnQpKXsKKwl3aGlsZSAocGFyZW50LT5kX3BhcmVudCAhPSBwYXJlbnQpIHsKKwkJaWYgKGlzX3BpZChwYXJlbnQpKSB7CiAJCQlzZWdfbmFtZSA9ICJwaWQiOwogCQkJc2VnX2xlbiA9IHN0cmxlbigicGlkIik7CiAJCX0KQEAgLTEwMCwyNyArMTAyLDI1IEBACiAJCXBhcmVudCA9IHBhcmVudC0+ZF9wYXJlbnQ7CiAJfQogCXN0cm5jcHkobmFtZSwgcm9vdCwgc3RybGVuKHJvb3QpKTsKLQlyZXR1cm4obmFtZSk7CisJcmV0dXJuIG5hbWU7CiB9CiAKLXN0cnVjdCBkZW50cnlfb3BlcmF0aW9ucyBocHBmc19kZW50cnlfb3BzID0gewotfTsKLQogc3RhdGljIGludCBmaWxlX3JlbW92ZWQoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBjb25zdCBjaGFyICpmaWxlKQogewogCWNoYXIgKmhvc3RfZmlsZTsKIAlpbnQgZXh0cmEsIGZkOwogCiAJZXh0cmEgPSAwOwotCWlmKGZpbGUgIT0gTlVMTCkgZXh0cmEgKz0gc3RybGVuKGZpbGUpICsgMTsKKwlpZiAoZmlsZSAhPSBOVUxMKQorCQlleHRyYSArPSBzdHJsZW4oZmlsZSkgKyAxOwogCiAJaG9zdF9maWxlID0gZGVudHJ5X25hbWUoZGVudHJ5LCBleHRyYSArIHN0cmxlbigiL3JlbW92ZSIpKTsKLQlpZihob3N0X2ZpbGUgPT0gTlVMTCl7Ci0JCXByaW50aygiZmlsZV9yZW1vdmVkIDogYWxsb2NhdGlvbiBmYWlsZWRcbiIpOwotCQlyZXR1cm4oLUVOT01FTSk7CisJaWYgKGhvc3RfZmlsZSA9PSBOVUxMKSB7CisJCXByaW50ayhLRVJOX0VSUiAiZmlsZV9yZW1vdmVkIDogYWxsb2NhdGlvbiBmYWlsZWRcbiIpOworCQlyZXR1cm4gLUVOT01FTTsKIAl9CiAKLQlpZihmaWxlICE9IE5VTEwpeworCWlmIChmaWxlICE9IE5VTEwpIHsKIAkJc3RyY2F0KGhvc3RfZmlsZSwgIi8iKTsKIAkJc3RyY2F0KGhvc3RfZmlsZSwgZmlsZSk7CiAJfQpAQCAtMTI4LDQ1ICsxMjgsMTEgQEAKIAogCWZkID0gb3Nfb3Blbl9maWxlKGhvc3RfZmlsZSwgb2ZfcmVhZChPUEVORkxBR1MoKSksIDApOwogCWtmcmVlKGhvc3RfZmlsZSk7Ci0JaWYoZmQgPiAwKXsKKwlpZiAoZmQgPiAwKSB7CiAJCW9zX2Nsb3NlX2ZpbGUoZmQpOwotCQlyZXR1cm4oMSk7CisJCXJldHVybiAxOwogCX0KLQlyZXR1cm4oMCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGhwcGZzX3JlYWRfaW5vZGUoc3RydWN0IGlub2RlICppbm8pCi17Ci0Jc3RydWN0IGlub2RlICpwcm9jX2lubzsKLQotCWlmKEhQUEZTX0koaW5vKS0+cHJvY19kZW50cnkgPT0gTlVMTCkKLQkJcmV0dXJuOwotCi0JcHJvY19pbm8gPSBIUFBGU19JKGlubyktPnByb2NfZGVudHJ5LT5kX2lub2RlOwotCWluby0+aV91aWQgPSBwcm9jX2luby0+aV91aWQ7Ci0JaW5vLT5pX2dpZCA9IHByb2NfaW5vLT5pX2dpZDsKLQlpbm8tPmlfYXRpbWUgPSBwcm9jX2luby0+aV9hdGltZTsKLQlpbm8tPmlfbXRpbWUgPSBwcm9jX2luby0+aV9tdGltZTsKLQlpbm8tPmlfY3RpbWUgPSBwcm9jX2luby0+aV9jdGltZTsKLQlpbm8tPmlfaW5vID0gcHJvY19pbm8tPmlfaW5vOwotCWluby0+aV9tb2RlID0gcHJvY19pbm8tPmlfbW9kZTsKLQlpbm8tPmlfbmxpbmsgPSBwcm9jX2luby0+aV9ubGluazsKLQlpbm8tPmlfc2l6ZSA9IHByb2NfaW5vLT5pX3NpemU7Ci0JaW5vLT5pX2Jsb2NrcyA9IHByb2NfaW5vLT5pX2Jsb2NrczsKLX0KLQotc3RhdGljIHN0cnVjdCBpbm9kZSAqaHBwZnNfaWdldChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKQotewotCXN0cnVjdCBpbm9kZSAqaW5vZGU7Ci0KLQlpbm9kZSA9IGlnZXRfbG9ja2VkKHNiLCAwKTsKLQlpZiAoIWlub2RlKQotCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKLQlpZiAoaW5vZGUtPmlfc3RhdGUgJiBJX05FVykgewotCQlocHBmc19yZWFkX2lub2RlKGlub2RlKTsKLQkJdW5sb2NrX25ld19pbm9kZShpbm9kZSk7Ci0JfQotCXJldHVybiBpbm9kZTsKKwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIHN0cnVjdCBkZW50cnkgKmhwcGZzX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmlubywgc3RydWN0IGRlbnRyeSAqZGVudHJ5LApAQCAtMTc3LDU1ICsxNDMsNDUgQEAKIAlpbnQgZXJyLCBkZWxldGVkOwogCiAJZGVsZXRlZCA9IGZpbGVfcmVtb3ZlZChkZW50cnksIE5VTEwpOwotCWlmKGRlbGV0ZWQgPCAwKQotCQlyZXR1cm4oRVJSX1BUUihkZWxldGVkKSk7Ci0JZWxzZSBpZihkZWxldGVkKQotCQlyZXR1cm4oRVJSX1BUUigtRU5PRU5UKSk7CisJaWYgKGRlbGV0ZWQgPCAwKQorCQlyZXR1cm4gRVJSX1BUUihkZWxldGVkKTsKKwllbHNlIGlmIChkZWxldGVkKQorCQlyZXR1cm4gRVJSX1BUUigtRU5PRU5UKTsKIAogCWVyciA9IC1FTk9NRU07CiAJcGFyZW50ID0gSFBQRlNfSShpbm8pLT5wcm9jX2RlbnRyeTsKIAltdXRleF9sb2NrKCZwYXJlbnQtPmRfaW5vZGUtPmlfbXV0ZXgpOwogCXByb2NfZGVudHJ5ID0gZF9sb29rdXAocGFyZW50LCAmZGVudHJ5LT5kX25hbWUpOwotCWlmKHByb2NfZGVudHJ5ID09IE5VTEwpeworCWlmIChwcm9jX2RlbnRyeSA9PSBOVUxMKSB7CiAJCXByb2NfZGVudHJ5ID0gZF9hbGxvYyhwYXJlbnQsICZkZW50cnktPmRfbmFtZSk7Ci0JCWlmKHByb2NfZGVudHJ5ID09IE5VTEwpeworCQlpZiAocHJvY19kZW50cnkgPT0gTlVMTCkgewogCQkJbXV0ZXhfdW5sb2NrKCZwYXJlbnQtPmRfaW5vZGUtPmlfbXV0ZXgpOwogCQkJZ290byBvdXQ7CiAJCX0KIAkJbmV3ID0gKCpwYXJlbnQtPmRfaW5vZGUtPmlfb3AtPmxvb2t1cCkocGFyZW50LT5kX2lub2RlLAogCQkJCQkJICAgICAgIHByb2NfZGVudHJ5LCBOVUxMKTsKLQkJaWYobmV3KXsKKwkJaWYgKG5ldykgewogCQkJZHB1dChwcm9jX2RlbnRyeSk7CiAJCQlwcm9jX2RlbnRyeSA9IG5ldzsKIAkJfQogCX0KIAltdXRleF91bmxvY2soJnBhcmVudC0+ZF9pbm9kZS0+aV9tdXRleCk7CiAKLQlpZihJU19FUlIocHJvY19kZW50cnkpKQotCQlyZXR1cm4ocHJvY19kZW50cnkpOworCWlmIChJU19FUlIocHJvY19kZW50cnkpKQorCQlyZXR1cm4gcHJvY19kZW50cnk7CiAKLQlpbm9kZSA9IGhwcGZzX2lnZXQoaW5vLT5pX3NiKTsKLQlpZiAoSVNfRVJSKGlub2RlKSkgewotCQllcnIgPSBQVFJfRVJSKGlub2RlKTsKKwllcnIgPSAtRU5PTUVNOworCWlub2RlID0gZ2V0X2lub2RlKGluby0+aV9zYiwgcHJvY19kZW50cnkpOworCWlmICghaW5vZGUpCiAJCWdvdG8gb3V0X2RwdXQ7Ci0JfQotCi0JZXJyID0gaW5pdF9pbm9kZShpbm9kZSwgcHJvY19kZW50cnkpOwotCWlmKGVycikKLQkJZ290byBvdXRfcHV0OwotCi0JaHBwZnNfcmVhZF9pbm9kZShpbm9kZSk7CiAKICAJZF9hZGQoZGVudHJ5LCBpbm9kZSk7Ci0JZGVudHJ5LT5kX29wID0gJmhwcGZzX2RlbnRyeV9vcHM7Ci0JcmV0dXJuKE5VTEwpOworCXJldHVybiBOVUxMOwogCi0gb3V0X3B1dDoKLQlpcHV0KGlub2RlKTsKICBvdXRfZHB1dDoKIAlkcHV0KHByb2NfZGVudHJ5KTsKICBvdXQ6Ci0JcmV0dXJuKEVSUl9QVFIoZXJyKSk7CisJcmV0dXJuIEVSUl9QVFIoZXJyKTsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIGhwcGZzX2ZpbGVfaW9wcyA9IHsKQEAgLTIzOSwxNSArMTk1LDE2IEBACiAKIAlyZWFkID0gZmlsZS0+Zl9wYXRoLmRlbnRyeS0+ZF9pbm9kZS0+aV9mb3AtPnJlYWQ7CiAKLQlpZighaXNfdXNlcikKKwlpZiAoIWlzX3VzZXIpCiAJCXNldF9mcyhLRVJORUxfRFMpOwogCiAJbiA9ICgqcmVhZCkoZmlsZSwgYnVmLCBjb3VudCwgJmZpbGUtPmZfcG9zKTsKIAotCWlmKCFpc191c2VyKQorCWlmICghaXNfdXNlcikKIAkJc2V0X2ZzKFVTRVJfRFMpOwogCi0JaWYocHBvcykgKnBwb3MgPSBmaWxlLT5mX3BvczsKKwlpZiAocHBvcykKKwkJKnBwb3MgPSBmaWxlLT5mX3BvczsKIAlyZXR1cm4gbjsKIH0KIApAQCAtMjU5LDI0ICsyMTYsMjMgQEAKIAogCW4gPSAtRU5PTUVNOwogCW5ld19idWYgPSBrbWFsbG9jKFBBR0VfU0laRSwgR0ZQX0tFUk5FTCk7Ci0JaWYobmV3X2J1ZiA9PSBOVUxMKXsKLQkJcHJpbnRrKCJocHBmc19yZWFkX2ZpbGUgOiBrbWFsbG9jIGZhaWxlZFxuIik7CisJaWYgKG5ld19idWYgPT0gTlVMTCkgeworCQlwcmludGsoS0VSTl9FUlIgImhwcGZzX3JlYWRfZmlsZSA6IGttYWxsb2MgZmFpbGVkXG4iKTsKIAkJZ290byBvdXQ7CiAJfQogCW4gPSAwOwotCXdoaWxlKGNvdW50ID4gMCl7CisJd2hpbGUgKGNvdW50ID4gMCkgewogCQljdXIgPSBtaW5fdChzc2l6ZV90LCBjb3VudCwgUEFHRV9TSVpFKTsKIAkJZXJyID0gb3NfcmVhZF9maWxlKGZkLCBuZXdfYnVmLCBjdXIpOwotCQlpZihlcnIgPCAwKXsKLQkJCXByaW50aygiaHBwZnNfcmVhZCA6IHJlYWQgZmFpbGVkLCBlcnJubyA9ICVkXG4iLAotCQkJICAgICAgIGVycik7CisJCWlmIChlcnIgPCAwKSB7CisJCQlwcmludGsoS0VSTl9FUlIgImhwcGZzX3JlYWQgOiByZWFkIGZhaWxlZCwgIgorCQkJICAgICAgICJlcnJubyA9ICVkXG4iLCBlcnIpOwogCQkJbiA9IGVycjsKIAkJCWdvdG8gb3V0X2ZyZWU7Ci0JCX0KLQkJZWxzZSBpZihlcnIgPT0gMCkKKwkJfSBlbHNlIGlmIChlcnIgPT0gMCkKIAkJCWJyZWFrOwogCi0JCWlmKGNvcHlfdG9fdXNlcihidWYsIG5ld19idWYsIGVycikpeworCQlpZiAoY29weV90b191c2VyKGJ1ZiwgbmV3X2J1ZiwgZXJyKSkgewogCQkJbiA9IC1FRkFVTFQ7CiAJCQlnb3RvIG91dF9mcmVlOwogCQl9CkBAIC0yOTcsMzUgKzI1MywzNiBAQAogCWxvZmZfdCBvZmY7CiAJaW50IGVycjsKIAotCWlmKGhwcGZzLT5jb250ZW50cyAhPSBOVUxMKXsKLQkJaWYoKnBwb3MgPj0gaHBwZnMtPmxlbikgcmV0dXJuKDApOworCWlmIChocHBmcy0+Y29udGVudHMgIT0gTlVMTCkgeworCQlpZiAoKnBwb3MgPj0gaHBwZnMtPmxlbikKKwkJCXJldHVybiAwOwogCiAJCWRhdGEgPSBocHBmcy0+Y29udGVudHM7CiAJCW9mZiA9ICpwcG9zOwotCQl3aGlsZShvZmYgPj0gc2l6ZW9mKGRhdGEtPmNvbnRlbnRzKSl7CisJCXdoaWxlIChvZmYgPj0gc2l6ZW9mKGRhdGEtPmNvbnRlbnRzKSkgewogCQkJZGF0YSA9IGxpc3RfZW50cnkoZGF0YS0+bGlzdC5uZXh0LCBzdHJ1Y3QgaHBwZnNfZGF0YSwKIAkJCQkJICBsaXN0KTsKIAkJCW9mZiAtPSBzaXplb2YoZGF0YS0+Y29udGVudHMpOwogCQl9CiAKLQkJaWYob2ZmICsgY291bnQgPiBocHBmcy0+bGVuKQorCQlpZiAob2ZmICsgY291bnQgPiBocHBmcy0+bGVuKQogCQkJY291bnQgPSBocHBmcy0+bGVuIC0gb2ZmOwogCQljb3B5X3RvX3VzZXIoYnVmLCAmZGF0YS0+Y29udGVudHNbb2ZmXSwgY291bnQpOwogCQkqcHBvcyArPSBjb3VudDsKLQl9Ci0JZWxzZSBpZihocHBmcy0+aG9zdF9mZCAhPSAtMSl7CisJfSBlbHNlIGlmIChocHBmcy0+aG9zdF9mZCAhPSAtMSkgewogCQllcnIgPSBvc19zZWVrX2ZpbGUoaHBwZnMtPmhvc3RfZmQsICpwcG9zKTsKLQkJaWYoZXJyKXsKLQkJCXByaW50aygiaHBwZnNfcmVhZCA6IHNlZWsgZmFpbGVkLCBlcnJubyA9ICVkXG4iLCBlcnIpOwotCQkJcmV0dXJuKGVycik7CisJCWlmIChlcnIpIHsKKwkJCXByaW50ayhLRVJOX0VSUiAiaHBwZnNfcmVhZCA6IHNlZWsgZmFpbGVkLCAiCisJCQkgICAgICAgImVycm5vID0gJWRcbiIsIGVycik7CisJCQlyZXR1cm4gZXJyOwogCQl9CiAJCWNvdW50ID0gaHBwZnNfcmVhZF9maWxlKGhwcGZzLT5ob3N0X2ZkLCBidWYsIGNvdW50KTsKLQkJaWYoY291bnQgPiAwKQorCQlpZiAoY291bnQgPiAwKQogCQkJKnBwb3MgKz0gY291bnQ7CiAJfQogCWVsc2UgY291bnQgPSByZWFkX3Byb2MoaHBwZnMtPnByb2NfZmlsZSwgYnVmLCBjb3VudCwgcHBvcywgMSk7CiAKLQlyZXR1cm4oY291bnQpOworCXJldHVybiBjb3VudDsKIH0KIAogc3RhdGljIHNzaXplX3QgaHBwZnNfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICpidWYsIHNpemVfdCBsZW4sCkBAIC0zNDIsNyArMjk5LDcgQEAKIAllcnIgPSAoKndyaXRlKShwcm9jX2ZpbGUsIGJ1ZiwgbGVuLCAmcHJvY19maWxlLT5mX3Bvcyk7CiAJZmlsZS0+Zl9wb3MgPSBwcm9jX2ZpbGUtPmZfcG9zOwogCi0JcmV0dXJuKGVycik7CisJcmV0dXJuIGVycjsKIH0KIAogc3RhdGljIGludCBvcGVuX2hvc3Rfc29jayhjaGFyICpob3N0X2ZpbGUsIGludCAqZmlsdGVyX291dCkKQEAgLTM1NCwxMyArMzExLDEzIEBACiAJc3RyY3B5KGVuZCwgIi9ydyIpOwogCSpmaWx0ZXJfb3V0ID0gMTsKIAlmZCA9IG9zX2Nvbm5lY3Rfc29ja2V0KGhvc3RfZmlsZSk7Ci0JaWYoZmQgPiAwKQotCQlyZXR1cm4oZmQpOworCWlmIChmZCA+IDApCisJCXJldHVybiBmZDsKIAogCXN0cmNweShlbmQsICIvciIpOwogCSpmaWx0ZXJfb3V0ID0gMDsKIAlmZCA9IG9zX2Nvbm5lY3Rfc29ja2V0KGhvc3RfZmlsZSk7Ci0JcmV0dXJuKGZkKTsKKwlyZXR1cm4gZmQ7CiB9CiAKIHN0YXRpYyB2b2lkIGZyZWVfY29udGVudHMoc3RydWN0IGhwcGZzX2RhdGEgKmhlYWQpCkBAIC0zNjgsOSArMzI1LDEwIEBACiAJc3RydWN0IGhwcGZzX2RhdGEgKmRhdGE7CiAJc3RydWN0IGxpc3RfaGVhZCAqZWxlLCAqbmV4dDsKIAotCWlmKGhlYWQgPT0gTlVMTCkgcmV0dXJuOworCWlmIChoZWFkID09IE5VTEwpCisJCXJldHVybjsKIAotCWxpc3RfZm9yX2VhY2hfc2FmZShlbGUsIG5leHQsICZoZWFkLT5saXN0KXsKKwlsaXN0X2Zvcl9lYWNoX3NhZmUoZWxlLCBuZXh0LCAmaGVhZC0+bGlzdCkgewogCQlkYXRhID0gbGlzdF9lbnRyeShlbGUsIHN0cnVjdCBocHBmc19kYXRhLCBsaXN0KTsKIAkJa2ZyZWUoZGF0YSk7CiAJfQpAQCAtMzg3LDggKzM0NSw4IEBACiAKIAllcnIgPSAtRU5PTUVNOwogCWRhdGEgPSBrbWFsbG9jKHNpemVvZigqZGF0YSksIEdGUF9LRVJORUwpOwotCWlmKGRhdGEgPT0gTlVMTCl7Ci0JCXByaW50aygiaHBwZnNfZ2V0X2RhdGEgOiBoZWFkIGFsbG9jYXRpb24gZmFpbGVkXG4iKTsKKwlpZiAoZGF0YSA9PSBOVUxMKSB7CisJCXByaW50ayhLRVJOX0VSUiAiaHBwZnNfZ2V0X2RhdGEgOiBoZWFkIGFsbG9jYXRpb24gZmFpbGVkXG4iKTsKIAkJZ290byBmYWlsZWQ7CiAJfQogCkBAIC0zOTcsMzYgKzM1NSwzNiBAQAogCWhlYWQgPSBkYXRhOwogCSpzaXplX291dCA9IDA7CiAKLQlpZihmaWx0ZXIpewotCQl3aGlsZSgobiA9IHJlYWRfcHJvYyhwcm9jX2ZpbGUsIGRhdGEtPmNvbnRlbnRzLAorCWlmIChmaWx0ZXIpIHsKKwkJd2hpbGUgKChuID0gcmVhZF9wcm9jKHByb2NfZmlsZSwgZGF0YS0+Y29udGVudHMsCiAJCQkJICAgICBzaXplb2YoZGF0YS0+Y29udGVudHMpLCBOVUxMLCAwKSkgPiAwKQogCQkJb3Nfd3JpdGVfZmlsZShmZCwgZGF0YS0+Y29udGVudHMsIG4pOwogCQllcnIgPSBvc19zaHV0ZG93bl9zb2NrZXQoZmQsIDAsIDEpOwotCQlpZihlcnIpewotCQkJcHJpbnRrKCJocHBmc19nZXRfZGF0YSA6IGZhaWxlZCB0byBzaHV0IGRvd24gIgorCQlpZiAoZXJyKSB7CisJCQlwcmludGsoS0VSTl9FUlIgImhwcGZzX2dldF9kYXRhIDogZmFpbGVkIHRvIHNodXQgZG93biAiCiAJCQkgICAgICAgInNvY2tldFxuIik7CiAJCQlnb3RvIGZhaWxlZF9mcmVlOwogCQl9CiAJfQotCXdoaWxlKDEpeworCXdoaWxlICgxKSB7CiAJCW4gPSBvc19yZWFkX2ZpbGUoZmQsIGRhdGEtPmNvbnRlbnRzLCBzaXplb2YoZGF0YS0+Y29udGVudHMpKTsKLQkJaWYobiA8IDApeworCQlpZiAobiA8IDApIHsKIAkJCWVyciA9IG47Ci0JCQlwcmludGsoImhwcGZzX2dldF9kYXRhIDogcmVhZCBmYWlsZWQsIGVycm5vID0gJWRcbiIsCi0JCQkgICAgICAgZXJyKTsKKwkJCXByaW50ayhLRVJOX0VSUiAiaHBwZnNfZ2V0X2RhdGEgOiByZWFkIGZhaWxlZCwgIgorCQkJICAgICAgICJlcnJubyA9ICVkXG4iLCBlcnIpOwogCQkJZ290byBmYWlsZWRfZnJlZTsKLQkJfQotCQllbHNlIGlmKG4gPT0gMCkKKwkJfSBlbHNlIGlmIChuID09IDApCiAJCQlicmVhazsKIAogCQkqc2l6ZV9vdXQgKz0gbjsKIAotCQlpZihuIDwgc2l6ZW9mKGRhdGEtPmNvbnRlbnRzKSkKKwkJaWYgKG4gPCBzaXplb2YoZGF0YS0+Y29udGVudHMpKQogCQkJYnJlYWs7CiAKIAkJbmV3ID0ga21hbGxvYyhzaXplb2YoKmRhdGEpLCBHRlBfS0VSTkVMKTsKLQkJaWYobmV3ID09IDApewotCQkJcHJpbnRrKCJocHBmc19nZXRfZGF0YSA6IGRhdGEgYWxsb2NhdGlvbiBmYWlsZWRcbiIpOworCQlpZiAobmV3ID09IDApIHsKKwkJCXByaW50ayhLRVJOX0VSUiAiaHBwZnNfZ2V0X2RhdGEgOiBkYXRhIGFsbG9jYXRpb24gIgorCQkJICAgICAgICJmYWlsZWRcbiIpOwogCQkJZXJyID0gLUVOT01FTTsKIAkJCWdvdG8gZmFpbGVkX2ZyZWU7CiAJCX0KQEAgLTQzNSwxMiArMzkzLDEyIEBACiAJCWxpc3RfYWRkKCZuZXctPmxpc3QsICZkYXRhLT5saXN0KTsKIAkJZGF0YSA9IG5ldzsKIAl9Ci0JcmV0dXJuKGhlYWQpOworCXJldHVybiBoZWFkOwogCiAgZmFpbGVkX2ZyZWU6CiAJZnJlZV9jb250ZW50cyhoZWFkKTsKICBmYWlsZWQ6Ci0JcmV0dXJuKEVSUl9QVFIoZXJyKSk7CisJcmV0dXJuIEVSUl9QVFIoZXJyKTsKIH0KIAogc3RhdGljIHN0cnVjdCBocHBmc19wcml2YXRlICpocHBmc19kYXRhKHZvaWQpCkBAIC00NDgsNzcgKzQwNiw3OSBAQAogCXN0cnVjdCBocHBmc19wcml2YXRlICpkYXRhOwogCiAJZGF0YSA9IGttYWxsb2Moc2l6ZW9mKCpkYXRhKSwgR0ZQX0tFUk5FTCk7Ci0JaWYoZGF0YSA9PSBOVUxMKQotCQlyZXR1cm4oZGF0YSk7CisJaWYgKGRhdGEgPT0gTlVMTCkKKwkJcmV0dXJuIGRhdGE7CiAKIAkqZGF0YSA9ICgoc3RydWN0IGhwcGZzX3ByaXZhdGUgKSB7IC5ob3N0X2ZkICAJCT0gLTEsCiAJCQkJCSAgIC5sZW4gIAkJPSAtMSwKIAkJCQkJICAgLmNvbnRlbnRzIAkJPSBOVUxMIH0gKTsKLQlyZXR1cm4oZGF0YSk7CisJcmV0dXJuIGRhdGE7CiB9CiAKIHN0YXRpYyBpbnQgZmlsZV9tb2RlKGludCBmbW9kZSkKIHsKLQlpZihmbW9kZSA9PSAoRk1PREVfUkVBRCB8IEZNT0RFX1dSSVRFKSkKLQkJcmV0dXJuKE9fUkRXUik7Ci0JaWYoZm1vZGUgPT0gRk1PREVfUkVBRCkKLQkJcmV0dXJuKE9fUkRPTkxZKTsKLQlpZihmbW9kZSA9PSBGTU9ERV9XUklURSkKLQkJcmV0dXJuKE9fV1JPTkxZKTsKLQlyZXR1cm4oMCk7CisJaWYgKGZtb2RlID09IChGTU9ERV9SRUFEIHwgRk1PREVfV1JJVEUpKQorCQlyZXR1cm4gT19SRFdSOworCWlmIChmbW9kZSA9PSBGTU9ERV9SRUFEKQorCQlyZXR1cm4gT19SRE9OTFk7CisJaWYgKGZtb2RlID09IEZNT0RFX1dSSVRFKQorCQlyZXR1cm4gT19XUk9OTFk7CisJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQgaHBwZnNfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKIHsKIAlzdHJ1Y3QgaHBwZnNfcHJpdmF0ZSAqZGF0YTsKIAlzdHJ1Y3QgZGVudHJ5ICpwcm9jX2RlbnRyeTsKKwlzdHJ1Y3QgdmZzbW91bnQgKnByb2NfbW50OwogCWNoYXIgKmhvc3RfZmlsZTsKIAlpbnQgZXJyLCBmZCwgdHlwZSwgZmlsdGVyOwogCiAJZXJyID0gLUVOT01FTTsKIAlkYXRhID0gaHBwZnNfZGF0YSgpOwotCWlmKGRhdGEgPT0gTlVMTCkKKwlpZiAoZGF0YSA9PSBOVUxMKQogCQlnb3RvIG91dDsKIAogCWhvc3RfZmlsZSA9IGRlbnRyeV9uYW1lKGZpbGUtPmZfcGF0aC5kZW50cnksIHN0cmxlbigiL3J3IikpOwotCWlmKGhvc3RfZmlsZSA9PSBOVUxMKQorCWlmIChob3N0X2ZpbGUgPT0gTlVMTCkKIAkJZ290byBvdXRfZnJlZTI7CiAKIAlwcm9jX2RlbnRyeSA9IEhQUEZTX0koaW5vZGUpLT5wcm9jX2RlbnRyeTsKKwlwcm9jX21udCA9IGlub2RlLT5pX3NiLT5zX2ZzX2luZm87CiAKIAkvKiBYWFggVGhpcyBpc24ndCBjbG9zZWQgYW55d2hlcmUgKi8KLQlkYXRhLT5wcm9jX2ZpbGUgPSBkZW50cnlfb3BlbihkZ2V0KHByb2NfZGVudHJ5KSwgTlVMTCwKKwlkYXRhLT5wcm9jX2ZpbGUgPSBkZW50cnlfb3BlbihkZ2V0KHByb2NfZGVudHJ5KSwgbW50Z2V0KHByb2NfbW50KSwKIAkJCQkgICAgICBmaWxlX21vZGUoZmlsZS0+Zl9tb2RlKSk7CiAJZXJyID0gUFRSX0VSUihkYXRhLT5wcm9jX2ZpbGUpOwotCWlmKElTX0VSUihkYXRhLT5wcm9jX2ZpbGUpKQorCWlmIChJU19FUlIoZGF0YS0+cHJvY19maWxlKSkKIAkJZ290byBvdXRfZnJlZTE7CiAKIAl0eXBlID0gb3NfZmlsZV90eXBlKGhvc3RfZmlsZSk7Ci0JaWYodHlwZSA9PSBPU19UWVBFX0ZJTEUpeworCWlmICh0eXBlID09IE9TX1RZUEVfRklMRSkgewogCQlmZCA9IG9zX29wZW5fZmlsZShob3N0X2ZpbGUsIG9mX3JlYWQoT1BFTkZMQUdTKCkpLCAwKTsKLQkJaWYoZmQgPj0gMCkKKwkJaWYgKGZkID49IDApCiAJCQlkYXRhLT5ob3N0X2ZkID0gZmQ7Ci0JCWVsc2UgcHJpbnRrKCJocHBmc19vcGVuIDogZmFpbGVkIHRvIG9wZW4gJyVzJywgZXJybm8gPSAlZFxuIiwKLQkJCSAgICBob3N0X2ZpbGUsIC1mZCk7CisJCWVsc2UKKwkJCXByaW50ayhLRVJOX0VSUiAiaHBwZnNfb3BlbiA6IGZhaWxlZCB0byBvcGVuICclcycsICIKKwkJCSAgICAgICAiZXJybm8gPSAlZFxuIiwgaG9zdF9maWxlLCAtZmQpOwogCiAJCWRhdGEtPmNvbnRlbnRzID0gTlVMTDsKLQl9Ci0JZWxzZSBpZih0eXBlID09IE9TX1RZUEVfRElSKXsKKwl9IGVsc2UgaWYgKHR5cGUgPT0gT1NfVFlQRV9ESVIpIHsKIAkJZmQgPSBvcGVuX2hvc3Rfc29jayhob3N0X2ZpbGUsICZmaWx0ZXIpOwotCQlpZihmZCA+IDApeworCQlpZiAoZmQgPiAwKSB7CiAJCQlkYXRhLT5jb250ZW50cyA9IGhwcGZzX2dldF9kYXRhKGZkLCBmaWx0ZXIsCiAJCQkJCQkJZGF0YS0+cHJvY19maWxlLAogCQkJCQkJCWZpbGUsICZkYXRhLT5sZW4pOwotCQkJaWYoIUlTX0VSUihkYXRhLT5jb250ZW50cykpCisJCQlpZiAoIUlTX0VSUihkYXRhLT5jb250ZW50cykpCiAJCQkJZGF0YS0+aG9zdF9mZCA9IGZkOwotCQl9Ci0JCWVsc2UgcHJpbnRrKCJocHBmc19vcGVuIDogZmFpbGVkIHRvIG9wZW4gYSBzb2NrZXQgaW4gIgotCQkJICAgICInJXMnLCBlcnJubyA9ICVkXG4iLCBob3N0X2ZpbGUsIC1mZCk7CisJCX0gZWxzZQorCQkJcHJpbnRrKEtFUk5fRVJSICJocHBmc19vcGVuIDogZmFpbGVkIHRvIG9wZW4gYSBzb2NrZXQgIgorCQkJICAgICAgICJpbiAnJXMnLCBlcnJubyA9ICVkXG4iLCBob3N0X2ZpbGUsIC1mZCk7CiAJfQogCWtmcmVlKGhvc3RfZmlsZSk7CiAKIAlmaWxlLT5wcml2YXRlX2RhdGEgPSBkYXRhOwotCXJldHVybigwKTsKKwlyZXR1cm4gMDsKIAogIG91dF9mcmVlMToKIAlrZnJlZShob3N0X2ZpbGUpOwpAQCAtNTI2LDM0ICs0ODYsMzYgQEAKIAlmcmVlX2NvbnRlbnRzKGRhdGEtPmNvbnRlbnRzKTsKIAlrZnJlZShkYXRhKTsKICBvdXQ6Ci0JcmV0dXJuKGVycik7CisJcmV0dXJuIGVycjsKIH0KIAogc3RhdGljIGludCBocHBmc19kaXJfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKIHsKIAlzdHJ1Y3QgaHBwZnNfcHJpdmF0ZSAqZGF0YTsKIAlzdHJ1Y3QgZGVudHJ5ICpwcm9jX2RlbnRyeTsKKwlzdHJ1Y3QgdmZzbW91bnQgKnByb2NfbW50OwogCWludCBlcnI7CiAKIAllcnIgPSAtRU5PTUVNOwogCWRhdGEgPSBocHBmc19kYXRhKCk7Ci0JaWYoZGF0YSA9PSBOVUxMKQorCWlmIChkYXRhID09IE5VTEwpCiAJCWdvdG8gb3V0OwogCiAJcHJvY19kZW50cnkgPSBIUFBGU19JKGlub2RlKS0+cHJvY19kZW50cnk7Ci0JZGF0YS0+cHJvY19maWxlID0gZGVudHJ5X29wZW4oZGdldChwcm9jX2RlbnRyeSksIE5VTEwsCisJcHJvY19tbnQgPSBpbm9kZS0+aV9zYi0+c19mc19pbmZvOworCWRhdGEtPnByb2NfZmlsZSA9IGRlbnRyeV9vcGVuKGRnZXQocHJvY19kZW50cnkpLCBtbnRnZXQocHJvY19tbnQpLAogCQkJCSAgICAgIGZpbGVfbW9kZShmaWxlLT5mX21vZGUpKTsKIAllcnIgPSBQVFJfRVJSKGRhdGEtPnByb2NfZmlsZSk7Ci0JaWYoSVNfRVJSKGRhdGEtPnByb2NfZmlsZSkpCisJaWYgKElTX0VSUihkYXRhLT5wcm9jX2ZpbGUpKQogCQlnb3RvIG91dF9mcmVlOwogCiAJZmlsZS0+cHJpdmF0ZV9kYXRhID0gZGF0YTsKLQlyZXR1cm4oMCk7CisJcmV0dXJuIDA7CiAKICBvdXRfZnJlZToKIAlrZnJlZShkYXRhKTsKICBvdXQ6Ci0JcmV0dXJuKGVycik7CisJcmV0dXJuIGVycjsKIH0KIAogc3RhdGljIGxvZmZfdCBocHBmc19sbHNlZWsoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmYsIGludCB3aGVyZSkKQEAgLTU2NCwxMyArNTI2LDEzIEBACiAJbG9mZl90IHJldDsKIAogCWxsc2VlayA9IHByb2NfZmlsZS0+Zl9wYXRoLmRlbnRyeS0+ZF9pbm9kZS0+aV9mb3AtPmxsc2VlazsKLQlpZihsbHNlZWsgIT0gTlVMTCl7CisJaWYgKGxsc2VlayAhPSBOVUxMKSB7CiAJCXJldCA9ICgqbGxzZWVrKShwcm9jX2ZpbGUsIG9mZiwgd2hlcmUpOwotCQlpZihyZXQgPCAwKQotCQkJcmV0dXJuKHJldCk7CisJCWlmIChyZXQgPCAwKQorCQkJcmV0dXJuIHJldDsKIAl9CiAKLQlyZXR1cm4oZGVmYXVsdF9sbHNlZWsoZmlsZSwgb2ZmLCB3aGVyZSkpOworCXJldHVybiBkZWZhdWx0X2xsc2VlayhmaWxlLCBvZmYsIHdoZXJlKTsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgaHBwZnNfZmlsZV9mb3BzID0gewpAQCAtNTkyLDExICs1NTQsMTEgQEAKIHsKIAlzdHJ1Y3QgaHBwZnNfZGlyZW50ICpkaXJlbnQgPSBkOwogCi0JaWYoZmlsZV9yZW1vdmVkKGRpcmVudC0+ZGVudHJ5LCBuYW1lKSkKLQkJcmV0dXJuKDApOworCWlmIChmaWxlX3JlbW92ZWQoZGlyZW50LT5kZW50cnksIG5hbWUpKQorCQlyZXR1cm4gMDsKIAotCXJldHVybigoKmRpcmVudC0+ZmlsbGRpcikoZGlyZW50LT52ZnNfZGlyZW50LCBuYW1lLCBzaXplLCBvZmZzZXQsCi0JCQkJICBpbm9kZSwgdHlwZSkpOworCXJldHVybiAoKmRpcmVudC0+ZmlsbGRpcikoZGlyZW50LT52ZnNfZGlyZW50LCBuYW1lLCBzaXplLCBvZmZzZXQsCisJCQkJICBpbm9kZSwgdHlwZSk7CiB9CiAKIHN0YXRpYyBpbnQgaHBwZnNfcmVhZGRpcihzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZW50LCBmaWxsZGlyX3QgZmlsbGRpcikKQEAgLTYwNyw3ICs1NjksOCBAQAogCXN0cnVjdCBocHBmc19kaXJlbnQgZGlyZW50ID0gKChzdHJ1Y3QgaHBwZnNfZGlyZW50KQogCQkgICAgICAgICAgICAgICAgICAgICAgeyAudmZzX2RpcmVudCAgCT0gZW50LAogCQkJCQkuZmlsbGRpciAJPSBmaWxsZGlyLAotCQkJCQkuZGVudHJ5ICAJPSBmaWxlLT5mX3BhdGguZGVudHJ5IH0gKTsKKwkJCQkJLmRlbnRyeSAgCT0gZmlsZS0+Zl9wYXRoLmRlbnRyeQorCQkJCSAgICAgIH0pOwogCWludCBlcnI7CiAKIAlyZWFkZGlyID0gcHJvY19maWxlLT5mX3BhdGguZGVudHJ5LT5kX2lub2RlLT5pX2ZvcC0+cmVhZGRpcjsKQEAgLTYxNiwxMiArNTc5LDEyIEBACiAJZXJyID0gKCpyZWFkZGlyKShwcm9jX2ZpbGUsICZkaXJlbnQsIGhwcGZzX2ZpbGxkaXIpOwogCWZpbGUtPmZfcG9zID0gcHJvY19maWxlLT5mX3BvczsKIAotCXJldHVybihlcnIpOworCXJldHVybiBlcnI7CiB9CiAKIHN0YXRpYyBpbnQgaHBwZnNfZnN5bmMoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgaW50IGRhdGFzeW5jKQogewotCXJldHVybigwKTsKKwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgaHBwZnNfZGlyX2ZvcHMgPSB7CkBAIC02MzksNyArNjAyLDcgQEAKIAlzZi0+Zl9maWxlcyA9IDA7CiAJc2YtPmZfZmZyZWUgPSAwOwogCXNmLT5mX3R5cGUgPSBIUFBGU19TVVBFUl9NQUdJQzsKLQlyZXR1cm4oMCk7CisJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgaW5vZGUgKmhwcGZzX2FsbG9jX2lub2RlKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpCkBAIC02NDcsMTIgKzYxMCwxMiBAQAogCXN0cnVjdCBocHBmc19pbm9kZV9pbmZvICpoaTsKIAogCWhpID0ga21hbGxvYyhzaXplb2YoKmhpKSwgR0ZQX0tFUk5FTCk7Ci0JaWYoaGkgPT0gTlVMTCkKLQkJcmV0dXJuKE5VTEwpOworCWlmICghaGkpCisJCXJldHVybiBOVUxMOwogCi0JKmhpID0gKChzdHJ1Y3QgaHBwZnNfaW5vZGVfaW5mbykgeyAucHJvY19kZW50cnkJPSBOVUxMIH0pOworCWhpLT5wcm9jX2RlbnRyeSA9IE5VTEw7CiAJaW5vZGVfaW5pdF9vbmNlKCZoaS0+dmZzX2lub2RlKTsKLQlyZXR1cm4oJmhpLT52ZnNfaW5vZGUpOworCXJldHVybiAmaGktPnZmc19pbm9kZTsKIH0KIAogdm9pZCBocHBmc19kZWxldGVfaW5vZGUoc3RydWN0IGlub2RlICppbm8pCkBAIC02NjUsMjEgKzYyOCwzMSBAQAogCWtmcmVlKEhQUEZTX0koaW5vZGUpKTsKIH0KIAorc3RhdGljIHZvaWQgaHBwZnNfcHV0X3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpCit7CisJbW50cHV0KHNiLT5zX2ZzX2luZm8pOworfQorCiBzdGF0aWMgY29uc3Qgc3RydWN0IHN1cGVyX29wZXJhdGlvbnMgaHBwZnNfc2JvcHMgPSB7CiAJLmFsbG9jX2lub2RlCT0gaHBwZnNfYWxsb2NfaW5vZGUsCiAJLmRlc3Ryb3lfaW5vZGUJPSBocHBmc19kZXN0cm95X2lub2RlLAogCS5kZWxldGVfaW5vZGUJPSBocHBmc19kZWxldGVfaW5vZGUsCiAJLnN0YXRmcwkJPSBocHBmc19zdGF0ZnMsCisJLnB1dF9zdXBlcgk9IGhwcGZzX3B1dF9zdXBlciwKIH07CiAKLXN0YXRpYyBpbnQgaHBwZnNfcmVhZGxpbmsoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBjaGFyIF9fdXNlciAqYnVmZmVyLCBpbnQgYnVmbGVuKQorc3RhdGljIGludCBocHBmc19yZWFkbGluayhzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIGNoYXIgX191c2VyICpidWZmZXIsCisJCQkgIGludCBidWZsZW4pCiB7CiAJc3RydWN0IGZpbGUgKnByb2NfZmlsZTsKIAlzdHJ1Y3QgZGVudHJ5ICpwcm9jX2RlbnRyeTsKKwlzdHJ1Y3QgdmZzbW91bnQgKnByb2NfbW50OwogCWludCByZXQ7CiAKIAlwcm9jX2RlbnRyeSA9IEhQUEZTX0koZGVudHJ5LT5kX2lub2RlKS0+cHJvY19kZW50cnk7Ci0JcHJvY19maWxlID0gZGVudHJ5X29wZW4oZGdldChwcm9jX2RlbnRyeSksIE5VTEwsIE9fUkRPTkxZKTsKKwlwcm9jX21udCA9IGRlbnRyeS0+ZF9zYi0+c19mc19pbmZvOworCisJcHJvY19maWxlID0gZGVudHJ5X29wZW4oZGdldChwcm9jX2RlbnRyeSksIG1udGdldChwcm9jX21udCksIE9fUkRPTkxZKTsKIAlpZiAoSVNfRVJSKHByb2NfZmlsZSkpCiAJCXJldHVybiBQVFJfRVJSKHByb2NfZmlsZSk7CiAKQEAgLTY5NCwxMCArNjY3LDEzIEBACiB7CiAJc3RydWN0IGZpbGUgKnByb2NfZmlsZTsKIAlzdHJ1Y3QgZGVudHJ5ICpwcm9jX2RlbnRyeTsKKwlzdHJ1Y3QgdmZzbW91bnQgKnByb2NfbW50OwogCXZvaWQgKnJldDsKIAogCXByb2NfZGVudHJ5ID0gSFBQRlNfSShkZW50cnktPmRfaW5vZGUpLT5wcm9jX2RlbnRyeTsKLQlwcm9jX2ZpbGUgPSBkZW50cnlfb3BlbihkZ2V0KHByb2NfZGVudHJ5KSwgTlVMTCwgT19SRE9OTFkpOworCXByb2NfbW50ID0gZGVudHJ5LT5kX3NiLT5zX2ZzX2luZm87CisKKwlwcm9jX2ZpbGUgPSBkZW50cnlfb3BlbihkZ2V0KHByb2NfZGVudHJ5KSwgbW50Z2V0KHByb2NfbW50KSwgT19SRE9OTFkpOwogCWlmIChJU19FUlIocHJvY19maWxlKSkKIAkJcmV0dXJuIHByb2NfZmlsZTsKIApAQCAtNzE3LDcwICs2OTMsNzIgQEAKIAkuZm9sbG93X2xpbmsJPSBocHBmc19mb2xsb3dfbGluaywKIH07CiAKLXN0YXRpYyBpbnQgaW5pdF9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCitzdGF0aWMgc3RydWN0IGlub2RlICpnZXRfaW5vZGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KQogewotCWlmKFNfSVNESVIoZGVudHJ5LT5kX2lub2RlLT5pX21vZGUpKXsKKwlzdHJ1Y3QgaW5vZGUgKnByb2NfaW5vID0gZGVudHJ5LT5kX2lub2RlOworCXN0cnVjdCBpbm9kZSAqaW5vZGUgPSBuZXdfaW5vZGUoc2IpOworCisJaWYgKCFpbm9kZSkKKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CisKKwlpZiAoU19JU0RJUihkZW50cnktPmRfaW5vZGUtPmlfbW9kZSkpIHsKIAkJaW5vZGUtPmlfb3AgPSAmaHBwZnNfZGlyX2lvcHM7CiAJCWlub2RlLT5pX2ZvcCA9ICZocHBmc19kaXJfZm9wczsKLQl9Ci0JZWxzZSBpZihTX0lTTE5LKGRlbnRyeS0+ZF9pbm9kZS0+aV9tb2RlKSl7CisJfSBlbHNlIGlmIChTX0lTTE5LKGRlbnRyeS0+ZF9pbm9kZS0+aV9tb2RlKSkgewogCQlpbm9kZS0+aV9vcCA9ICZocHBmc19saW5rX2lvcHM7CiAJCWlub2RlLT5pX2ZvcCA9ICZocHBmc19maWxlX2ZvcHM7Ci0JfQotCWVsc2UgeworCX0gZWxzZSB7CiAJCWlub2RlLT5pX29wID0gJmhwcGZzX2ZpbGVfaW9wczsKIAkJaW5vZGUtPmlfZm9wID0gJmhwcGZzX2ZpbGVfZm9wczsKIAl9CiAKIAlIUFBGU19JKGlub2RlKS0+cHJvY19kZW50cnkgPSBkZW50cnk7CiAKLQlyZXR1cm4oMCk7CisJaW5vZGUtPmlfdWlkID0gcHJvY19pbm8tPmlfdWlkOworCWlub2RlLT5pX2dpZCA9IHByb2NfaW5vLT5pX2dpZDsKKwlpbm9kZS0+aV9hdGltZSA9IHByb2NfaW5vLT5pX2F0aW1lOworCWlub2RlLT5pX210aW1lID0gcHJvY19pbm8tPmlfbXRpbWU7CisJaW5vZGUtPmlfY3RpbWUgPSBwcm9jX2luby0+aV9jdGltZTsKKwlpbm9kZS0+aV9pbm8gPSBwcm9jX2luby0+aV9pbm87CisJaW5vZGUtPmlfbW9kZSA9IHByb2NfaW5vLT5pX21vZGU7CisJaW5vZGUtPmlfbmxpbmsgPSBwcm9jX2luby0+aV9ubGluazsKKwlpbm9kZS0+aV9zaXplID0gcHJvY19pbm8tPmlfc2l6ZTsKKwlpbm9kZS0+aV9ibG9ja3MgPSBwcm9jX2luby0+aV9ibG9ja3M7CisKKwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludCBocHBmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHZvaWQgKmQsIGludCBzaWxlbnQpCiB7CiAJc3RydWN0IGlub2RlICpyb290X2lub2RlOwotCXN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpwcm9jZnM7Ci0Jc3RydWN0IHN1cGVyX2Jsb2NrICpwcm9jX3NiOwotCWludCBlcnI7CisJc3RydWN0IHZmc21vdW50ICpwcm9jX21udDsKKwlpbnQgZXJyID0gLUVOT0VOVDsKIAotCWVyciA9IC1FTk9FTlQ7Ci0JcHJvY2ZzID0gZ2V0X2ZzX3R5cGUoInByb2MiKTsKLQlpZihwcm9jZnMgPT0gTlVMTCkKKwlwcm9jX21udCA9IGRvX2tlcm5fbW91bnQoInByb2MiLCAwLCAicHJvYyIsIE5VTEwpOworCWlmIChJU19FUlIocHJvY19tbnQpKQogCQlnb3RvIG91dDsKIAotCWlmKGxpc3RfZW1wdHkoJnByb2Nmcy0+ZnNfc3VwZXJzKSkKLQkJZ290byBvdXQ7Ci0KLQlwcm9jX3NiID0gbGlzdF9lbnRyeShwcm9jZnMtPmZzX3N1cGVycy5uZXh0LCBzdHJ1Y3Qgc3VwZXJfYmxvY2ssCi0JCQkgICAgIHNfaW5zdGFuY2VzKTsKLQogCXNiLT5zX2Jsb2Nrc2l6ZSA9IDEwMjQ7CiAJc2ItPnNfYmxvY2tzaXplX2JpdHMgPSAxMDsKIAlzYi0+c19tYWdpYyA9IEhQUEZTX1NVUEVSX01BR0lDOwogCXNiLT5zX29wID0gJmhwcGZzX3Nib3BzOwotCi0Jcm9vdF9pbm9kZSA9IGhwcGZzX2lnZXQoc2IpOwotCWlmIChJU19FUlIocm9vdF9pbm9kZSkpIHsKLQkJZXJyID0gUFRSX0VSUihyb290X2lub2RlKTsKLQkJZ290byBvdXQ7Ci0JfQotCi0JZXJyID0gaW5pdF9pbm9kZShyb290X2lub2RlLCBwcm9jX3NiLT5zX3Jvb3QpOwotCWlmKGVycikKLQkJZ290byBvdXRfcHV0OworCXNiLT5zX2ZzX2luZm8gPSBwcm9jX21udDsKIAogCWVyciA9IC1FTk9NRU07CisJcm9vdF9pbm9kZSA9IGdldF9pbm9kZShzYiwgcHJvY19tbnQtPm1udF9zYi0+c19yb290KTsKKwlpZiAoIXJvb3RfaW5vZGUpCisJCWdvdG8gb3V0X21udHB1dDsKKwogCXNiLT5zX3Jvb3QgPSBkX2FsbG9jX3Jvb3Qocm9vdF9pbm9kZSk7Ci0JaWYoc2ItPnNfcm9vdCA9PSBOVUxMKQotCQlnb3RvIG91dF9wdXQ7CisJaWYgKCFzYi0+c19yb290KQorCQlnb3RvIG91dF9pcHV0OwogCi0JaHBwZnNfcmVhZF9pbm9kZShyb290X2lub2RlKTsKKwlyZXR1cm4gMDsKIAotCXJldHVybigwKTsKLQotIG91dF9wdXQ6Cisgb3V0X2lwdXQ6CiAJaXB1dChyb290X2lub2RlKTsKKyBvdXRfbW50cHV0OgorCW1udHB1dChwcm9jX21udCk7CiAgb3V0OgogCXJldHVybihlcnIpOwogfQpAQCAtODAyLDcgKzc4MCw3IEBACiAKIHN0YXRpYyBpbnQgX19pbml0IGluaXRfaHBwZnModm9pZCkKIHsKLQlyZXR1cm4ocmVnaXN0ZXJfZmlsZXN5c3RlbSgmaHBwZnNfdHlwZSkpOworCXJldHVybiByZWdpc3Rlcl9maWxlc3lzdGVtKCZocHBmc190eXBlKTsKIH0KIAogc3RhdGljIHZvaWQgX19leGl0IGV4aXRfaHBwZnModm9pZCkKQEAgLTgxMywxNCArNzkxLDMgQEAKIG1vZHVsZV9pbml0KGluaXRfaHBwZnMpCiBtb2R1bGVfZXhpdChleGl0X2hwcGZzKQogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi0vKgotICogT3ZlcnJpZGVzIGZvciBFbWFjcyBzbyB0aGF0IHdlIGZvbGxvdyBMaW51cydzIHRhYmJpbmcgc3R5bGUuCi0gKiBFbWFjcyB3aWxsIG5vdGljZSB0aGlzIHN0dWZmIGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUgYW5kIGF1dG9tYXRpY2FsbHkKLSAqIGFkanVzdCB0aGUgc2V0dGluZ3MgZm9yIHRoaXMgYnVmZmVyIG9ubHkuICBUaGlzIG11c3QgcmVtYWluIGF0IHRoZSBlbmQKLSAqIG9mIHRoZSBmaWxlLgotICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiBMb2NhbCB2YXJpYWJsZXM6Ci0gKiBjLWZpbGUtc3R5bGU6ICJsaW51eCIKLSAqIEVuZDoKLSAqLwpkaWZmIC0tZ2l0IGEvZnMvaHVnZXRsYmZzL2lub2RlLmMgYi9mcy9odWdldGxiZnMvaW5vZGUuYwppbmRleCBlZWU5NDg3Li42ODQ2Nzg1IDEwMDY0NAotLS0gYS9mcy9odWdldGxiZnMvaW5vZGUuYworKysgYi9mcy9odWdldGxiZnMvaW5vZGUuYwpAQCAtOTU0LDcgKzk1NCw3IEBACiAJCQlGTU9ERV9XUklURSB8IEZNT0RFX1JFQUQsCiAJCQkmaHVnZXRsYmZzX2ZpbGVfb3BlcmF0aW9ucyk7CiAJaWYgKCFmaWxlKQotCQlnb3RvIG91dF9pbm9kZTsKKwkJZ290byBvdXRfZGVudHJ5OyAvKiBpbm9kZSBpcyBhbHJlYWR5IGF0dGFjaGVkICovCiAKIAlyZXR1cm4gZmlsZTsKIApkaWZmIC0tZ2l0IGEvZnMvaXNvZnMvY29tcHJlc3MuYyBiL2ZzL2lzb2ZzL2NvbXByZXNzLmMKaW5kZXggMzdkYmQ2NC4uZGVmYjkzMiAxMDA2NDQKLS0tIGEvZnMvaXNvZnMvY29tcHJlc3MuYworKysgYi9mcy9pc29mcy9jb21wcmVzcy5jCkBAIC03Miw2ICs3MiwxNyBAQAogCW9mZnNldCA9IGluZGV4ICYgfnppc29mc19ibG9ja19wYWdlX21hc2s7CiAJYmxvY2tpbmRleCA9IG9mZnNldCA+PiB6aXNvZnNfYmxvY2tfcGFnZV9zaGlmdDsKIAltYXhwYWdlID0gKGlub2RlLT5pX3NpemUgKyBQQUdFX0NBQ0hFX1NJWkUgLSAxKSA+PiBQQUdFX0NBQ0hFX1NISUZUOworCisJLyoKKwkgKiBJZiB0aGlzIHBhZ2UgaXMgd2hvbGx5IG91dHNpZGUgaV9zaXplIHdlIGp1c3QgcmV0dXJuIHplcm87CisJICogZG9fZ2VuZXJpY19maWxlX3JlYWQoKSB3aWxsIGhhbmRsZSB0aGlzIGZvciB1cworCSAqLworCWlmIChwYWdlLT5pbmRleCA+PSBtYXhwYWdlKSB7CisJCVNldFBhZ2VVcHRvZGF0ZShwYWdlKTsKKwkJdW5sb2NrX3BhZ2UocGFnZSk7CisJCXJldHVybiAwOworCX0KKwogCW1heHBhZ2UgPSBtaW4oemlzb2ZzX2Jsb2NrX3BhZ2VzLCBtYXhwYWdlLW9mZnNldCk7CiAKIAlmb3IgKCBpID0gMCA7IGkgPCBtYXhwYWdlIDsgaSsrLCBvZmZzZXQrKyApIHsKZGlmZiAtLWdpdCBhL2ZzL2piZC9qb3VybmFsLmMgYi9mcy9qYmQvam91cm5hbC5jCmluZGV4IDM5NDNhODkuLjBlMDgxZDUgMTAwNjQ0Ci0tLSBhL2ZzL2piZC9qb3VybmFsLmMKKysrIGIvZnMvamJkL2pvdXJuYWwuYwpAQCAtNjk3LDEzICs2OTcsMTQgQEAKICAqLwogCiAvKioKLSAqICBqb3VybmFsX3QgKiBqb3VybmFsX2luaXRfZGV2KCkgLSBjcmVhdGVzIGFuIGluaXRpYWxpc2VzIGEgam91cm5hbCBzdHJ1Y3R1cmUKKyAqICBqb3VybmFsX3QgKiBqb3VybmFsX2luaXRfZGV2KCkgLSBjcmVhdGVzIGFuZCBpbml0aWFsaXNlcyBhIGpvdXJuYWwgc3RydWN0dXJlCiAgKiAgQGJkZXY6IEJsb2NrIGRldmljZSBvbiB3aGljaCB0byBjcmVhdGUgdGhlIGpvdXJuYWwKICAqICBAZnNfZGV2OiBEZXZpY2Ugd2hpY2ggaG9sZCBqb3VybmFsbGVkIGZpbGVzeXN0ZW0gZm9yIHRoaXMgam91cm5hbC4KICAqICBAc3RhcnQ6IEJsb2NrIG5yIFN0YXJ0IG9mIGpvdXJuYWwuCiAgKiAgQGxlbjogIExlbmd0aCBvZiB0aGUgam91cm5hbCBpbiBibG9ja3MuCiAgKiAgQGJsb2Nrc2l6ZTogYmxvY2tzaXplIG9mIGpvdXJuYWxsaW5nIGRldmljZQotICogIEByZXR1cm5zOiBhIG5ld2x5IGNyZWF0ZWQgam91cm5hbF90ICoKKyAqCisgKiAgUmV0dXJuczogYSBuZXdseSBjcmVhdGVkIGpvdXJuYWxfdCAqCiAgKgogICogIGpvdXJuYWxfaW5pdF9kZXYgY3JlYXRlcyBhIGpvdXJuYWwgd2hpY2ggbWFwcyBhIGZpeGVkIGNvbnRpZ3VvdXMKICAqICByYW5nZSBvZiBibG9ja3Mgb24gYW4gYXJiaXRyYXJ5IGJsb2NrIGRldmljZS4KQEAgLTE2MTksMTQgKzE2MjAsMTQgQEAKIHsKIAlpbnQgcmV0dmFsOwogCi0JSl9BU1NFUlQoam91cm5hbF9oZWFkX2NhY2hlID09IDApOworCUpfQVNTRVJUKGpvdXJuYWxfaGVhZF9jYWNoZSA9PSBOVUxMKTsKIAlqb3VybmFsX2hlYWRfY2FjaGUgPSBrbWVtX2NhY2hlX2NyZWF0ZSgiam91cm5hbF9oZWFkIiwKIAkJCQlzaXplb2Yoc3RydWN0IGpvdXJuYWxfaGVhZCksCiAJCQkJMCwJCS8qIG9mZnNldCAqLwogCQkJCVNMQUJfVEVNUE9SQVJZLAkvKiBmbGFncyAqLwogCQkJCU5VTEwpOwkJLyogY3RvciAqLwogCXJldHZhbCA9IDA7Ci0JaWYgKGpvdXJuYWxfaGVhZF9jYWNoZSA9PSAwKSB7CisJaWYgKCFqb3VybmFsX2hlYWRfY2FjaGUpIHsKIAkJcmV0dmFsID0gLUVOT01FTTsKIAkJcHJpbnRrKEtFUk5fRU1FUkcgIkpCRDogbm8gbWVtb3J5IGZvciBqb3VybmFsX2hlYWQgY2FjaGVcbiIpOwogCX0KZGlmZiAtLWdpdCBhL2ZzL2piZC9yZWNvdmVyeS5jIGIvZnMvamJkL3JlY292ZXJ5LmMKaW5kZXggMmI4ZWRmNC4uNDNiYzVlNSAxMDA2NDQKLS0tIGEvZnMvamJkL3JlY292ZXJ5LmMKKysrIGIvZnMvamJkL3JlY292ZXJ5LmMKQEAgLTQ3OCw3ICs0NzgsNyBAQAogCQkJCQltZW1jcHkobmJoLT5iX2RhdGEsIG9iaC0+Yl9kYXRhLAogCQkJCQkJCWpvdXJuYWwtPmpfYmxvY2tzaXplKTsKIAkJCQkJaWYgKGZsYWdzICYgSkZTX0ZMQUdfRVNDQVBFKSB7Ci0JCQkJCQkqKChfX2JlMzIgKiliaC0+Yl9kYXRhKSA9CisJCQkJCQkqKChfX2JlMzIgKiluYmgtPmJfZGF0YSkgPQogCQkJCQkJY3B1X3RvX2JlMzIoSkZTX01BR0lDX05VTUJFUik7CiAJCQkJCX0KIApkaWZmIC0tZ2l0IGEvZnMvamJkL3Jldm9rZS5jIGIvZnMvamJkL3Jldm9rZS5jCmluZGV4IGFkMmVhY2YuLmQ1ZjhlZWUgMTAwNjQ0Ci0tLSBhL2ZzL2piZC9yZXZva2UuYworKysgYi9mcy9qYmQvcmV2b2tlLmMKQEAgLTE3MywxMyArMTczLDEzIEBACiAJCQkJCSAgIDAsCiAJCQkJCSAgIFNMQUJfSFdDQUNIRV9BTElHTnxTTEFCX1RFTVBPUkFSWSwKIAkJCQkJICAgTlVMTCk7Ci0JaWYgKHJldm9rZV9yZWNvcmRfY2FjaGUgPT0gMCkKKwlpZiAoIXJldm9rZV9yZWNvcmRfY2FjaGUpCiAJCXJldHVybiAtRU5PTUVNOwogCiAJcmV2b2tlX3RhYmxlX2NhY2hlID0ga21lbV9jYWNoZV9jcmVhdGUoInJldm9rZV90YWJsZSIsCiAJCQkJCSAgIHNpemVvZihzdHJ1Y3QgamJkX3Jldm9rZV90YWJsZV9zKSwKIAkJCQkJICAgMCwgU0xBQl9URU1QT1JBUlksIE5VTEwpOwotCWlmIChyZXZva2VfdGFibGVfY2FjaGUgPT0gMCkgeworCWlmICghcmV2b2tlX3RhYmxlX2NhY2hlKSB7CiAJCWttZW1fY2FjaGVfZGVzdHJveShyZXZva2VfcmVjb3JkX2NhY2hlKTsKIAkJcmV2b2tlX3JlY29yZF9jYWNoZSA9IE5VTEw7CiAJCXJldHVybiAtRU5PTUVNOwpkaWZmIC0tZ2l0IGEvZnMvamJkL3RyYW5zYWN0aW9uLmMgYi9mcy9qYmQvdHJhbnNhY3Rpb24uYwppbmRleCBjNmNiYjZjLi4yYzllOGY1IDEwMDY0NAotLS0gYS9mcy9qYmQvdHJhbnNhY3Rpb24uYworKysgYi9mcy9qYmQvdHJhbnNhY3Rpb24uYwpAQCAtMTQyNiw3ICsxNDI2LDggQEAKIAlyZXR1cm4gZXJyOwogfQogCi0vKippbnQgam91cm5hbF9mb3JjZV9jb21taXQoKSAtIGZvcmNlIGFueSB1bmNvbW1pdHRlZCB0cmFuc2FjdGlvbnMKKy8qKgorICogaW50IGpvdXJuYWxfZm9yY2VfY29tbWl0KCkgLSBmb3JjZSBhbnkgdW5jb21taXR0ZWQgdHJhbnNhY3Rpb25zCiAgKiBAam91cm5hbDogam91cm5hbCB0byBmb3JjZQogICoKICAqIEZvciBzeW5jaHJvbm91cyBvcGVyYXRpb25zOiBmb3JjZSBhbnkgdW5jb21taXR0ZWQgdHJhbnNhY3Rpb25zCkBAIC0xOTAzLDEzICsxOTA0LDEyIEBACiB9CiAKIC8qKgotICogdm9pZCBqb3VybmFsX2ludmFsaWRhdGVwYWdlKCkKLSAqIEBqb3VybmFsOiBqb3VybmFsIHRvIHVzZSBmb3IgZmx1c2guLi4KKyAqIHZvaWQgam91cm5hbF9pbnZhbGlkYXRlcGFnZSgpIC0gaW52YWxpZGF0ZSBhIGpvdXJuYWwgcGFnZQorICogQGpvdXJuYWw6IGpvdXJuYWwgdG8gdXNlIGZvciBmbHVzaAogICogQHBhZ2U6ICAgIHBhZ2UgdG8gZmx1c2gKICAqIEBvZmZzZXQ6ICBsZW5ndGggb2YgcGFnZSB0byBpbnZhbGlkYXRlLgogICoKICAqIFJlYXAgcGFnZSBidWZmZXJzIGNvbnRhaW5pbmcgZGF0YSBhZnRlciBvZmZzZXQgaW4gcGFnZS4KLSAqCiAgKi8KIHZvaWQgam91cm5hbF9pbnZhbGlkYXRlcGFnZShqb3VybmFsX3QgKmpvdXJuYWwsCiAJCSAgICAgIHN0cnVjdCBwYWdlICpwYWdlLApkaWZmIC0tZ2l0IGEvZnMvamJkMi9qb3VybmFsLmMgYi9mcy9qYmQyL2pvdXJuYWwuYwppbmRleCA5NmJhODQ2Li45NTRjZmYwIDEwMDY0NAotLS0gYS9mcy9qYmQyL2pvdXJuYWwuYworKysgYi9mcy9qYmQyL2pvdXJuYWwuYwpAQCAtMjE5LDcgKzIxOSw3IEBACiAJaWYgKElTX0VSUih0KSkKIAkJcmV0dXJuIFBUUl9FUlIodCk7CiAKLQl3YWl0X2V2ZW50KGpvdXJuYWwtPmpfd2FpdF9kb25lX2NvbW1pdCwgam91cm5hbC0+al90YXNrICE9IDApOworCXdhaXRfZXZlbnQoam91cm5hbC0+al93YWl0X2RvbmVfY29tbWl0LCBqb3VybmFsLT5qX3Rhc2sgIT0gTlVMTCk7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTIzMSw3ICsyMzEsNyBAQAogCXdoaWxlIChqb3VybmFsLT5qX3Rhc2spIHsKIAkJd2FrZV91cCgmam91cm5hbC0+al93YWl0X2NvbW1pdCk7CiAJCXNwaW5fdW5sb2NrKCZqb3VybmFsLT5qX3N0YXRlX2xvY2spOwotCQl3YWl0X2V2ZW50KGpvdXJuYWwtPmpfd2FpdF9kb25lX2NvbW1pdCwgam91cm5hbC0+al90YXNrID09IDApOworCQl3YWl0X2V2ZW50KGpvdXJuYWwtPmpfd2FpdF9kb25lX2NvbW1pdCwgam91cm5hbC0+al90YXNrID09IE5VTEwpOwogCQlzcGluX2xvY2soJmpvdXJuYWwtPmpfc3RhdGVfbG9jayk7CiAJfQogCXNwaW5fdW5sb2NrKCZqb3VybmFsLT5qX3N0YXRlX2xvY2spOwpAQCAtMTk2OSwxNCArMTk2OSwxNCBAQAogewogCWludCByZXR2YWw7CiAKLQlKX0FTU0VSVChqYmQyX2pvdXJuYWxfaGVhZF9jYWNoZSA9PSAwKTsKKwlKX0FTU0VSVChqYmQyX2pvdXJuYWxfaGVhZF9jYWNoZSA9PSBOVUxMKTsKIAlqYmQyX2pvdXJuYWxfaGVhZF9jYWNoZSA9IGttZW1fY2FjaGVfY3JlYXRlKCJqYmQyX2pvdXJuYWxfaGVhZCIsCiAJCQkJc2l6ZW9mKHN0cnVjdCBqb3VybmFsX2hlYWQpLAogCQkJCTAsCQkvKiBvZmZzZXQgKi8KIAkJCQlTTEFCX1RFTVBPUkFSWSwJLyogZmxhZ3MgKi8KIAkJCQlOVUxMKTsJCS8qIGN0b3IgKi8KIAlyZXR2YWwgPSAwOwotCWlmIChqYmQyX2pvdXJuYWxfaGVhZF9jYWNoZSA9PSAwKSB7CisJaWYgKCFqYmQyX2pvdXJuYWxfaGVhZF9jYWNoZSkgewogCQlyZXR2YWwgPSAtRU5PTUVNOwogCQlwcmludGsoS0VSTl9FTUVSRyAiSkJEOiBubyBtZW1vcnkgZm9yIGpvdXJuYWxfaGVhZCBjYWNoZVxuIik7CiAJfQpAQCAtMjAwMiwxNCArMjAwMiwxNCBAQAogCWF0b21pY19pbmMoJm5yX2pvdXJuYWxfaGVhZHMpOwogI2VuZGlmCiAJcmV0ID0ga21lbV9jYWNoZV9hbGxvYyhqYmQyX2pvdXJuYWxfaGVhZF9jYWNoZSwgR0ZQX05PRlMpOwotCWlmIChyZXQgPT0gMCkgeworCWlmICghcmV0KSB7CiAJCWpiZF9kZWJ1ZygxLCAib3V0IG9mIG1lbW9yeSBmb3Igam91cm5hbF9oZWFkXG4iKTsKIAkJaWYgKHRpbWVfYWZ0ZXIoamlmZmllcywgbGFzdF93YXJuaW5nICsgNSpIWikpIHsKIAkJCXByaW50ayhLRVJOX05PVElDRSAiRU5PTUVNIGluICVzLCByZXRyeWluZy5cbiIsCiAJCQkgICAgICAgX19GVU5DVElPTl9fKTsKIAkJCWxhc3Rfd2FybmluZyA9IGppZmZpZXM7CiAJCX0KLQkJd2hpbGUgKHJldCA9PSAwKSB7CisJCXdoaWxlICghcmV0KSB7CiAJCQl5aWVsZCgpOwogCQkJcmV0ID0ga21lbV9jYWNoZV9hbGxvYyhqYmQyX2pvdXJuYWxfaGVhZF9jYWNoZSwgR0ZQX05PRlMpOwogCQl9CmRpZmYgLS1naXQgYS9mcy9qYmQyL3JlY292ZXJ5LmMgYi9mcy9qYmQyL3JlY292ZXJ5LmMKaW5kZXggMTQ2NDExMy4uNWQwNDA1YSAxMDA2NDQKLS0tIGEvZnMvamJkMi9yZWNvdmVyeS5jCisrKyBiL2ZzL2piZDIvcmVjb3ZlcnkuYwpAQCAtNTM1LDcgKzUzNSw3IEBACiAJCQkJCW1lbWNweShuYmgtPmJfZGF0YSwgb2JoLT5iX2RhdGEsCiAJCQkJCQkJam91cm5hbC0+al9ibG9ja3NpemUpOwogCQkJCQlpZiAoZmxhZ3MgJiBKQkQyX0ZMQUdfRVNDQVBFKSB7Ci0JCQkJCQkqKChfX2JlMzIgKiliaC0+Yl9kYXRhKSA9CisJCQkJCQkqKChfX2JlMzIgKiluYmgtPmJfZGF0YSkgPQogCQkJCQkJY3B1X3RvX2JlMzIoSkJEMl9NQUdJQ19OVU1CRVIpOwogCQkJCQl9CiAKZGlmZiAtLWdpdCBhL2ZzL2piZDIvcmV2b2tlLmMgYi9mcy9qYmQyL3Jldm9rZS5jCmluZGV4IGRmMzZmNDIuLjJlMTQ1M2EgMTAwNjQ0Ci0tLSBhL2ZzL2piZDIvcmV2b2tlLmMKKysrIGIvZnMvamJkMi9yZXZva2UuYwpAQCAtMTc0LDEzICsxNzQsMTMgQEAKIAkJCQkJICAgMCwKIAkJCQkJICAgU0xBQl9IV0NBQ0hFX0FMSUdOfFNMQUJfVEVNUE9SQVJZLAogCQkJCQkgICBOVUxMKTsKLQlpZiAoamJkMl9yZXZva2VfcmVjb3JkX2NhY2hlID09IDApCisJaWYgKCFqYmQyX3Jldm9rZV9yZWNvcmRfY2FjaGUpCiAJCXJldHVybiAtRU5PTUVNOwogCiAJamJkMl9yZXZva2VfdGFibGVfY2FjaGUgPSBrbWVtX2NhY2hlX2NyZWF0ZSgiamJkMl9yZXZva2VfdGFibGUiLAogCQkJCQkgICBzaXplb2Yoc3RydWN0IGpiZDJfcmV2b2tlX3RhYmxlX3MpLAogCQkJCQkgICAwLCBTTEFCX1RFTVBPUkFSWSwgTlVMTCk7Ci0JaWYgKGpiZDJfcmV2b2tlX3RhYmxlX2NhY2hlID09IDApIHsKKwlpZiAoIWpiZDJfcmV2b2tlX3RhYmxlX2NhY2hlKSB7CiAJCWttZW1fY2FjaGVfZGVzdHJveShqYmQyX3Jldm9rZV9yZWNvcmRfY2FjaGUpOwogCQlqYmQyX3Jldm9rZV9yZWNvcmRfY2FjaGUgPSBOVUxMOwogCQlyZXR1cm4gLUVOT01FTTsKZGlmZiAtLWdpdCBhL2ZzL2pmZnMyL2ZpbGUuYyBiL2ZzL2pmZnMyL2ZpbGUuYwppbmRleCBmOWM1ZGQ2Li5kY2MyNzM0IDEwMDY0NAotLS0gYS9mcy9qZmZzMi9maWxlLmMKKysrIGIvZnMvamZmczIvZmlsZS5jCkBAIC0xMjksNyArMTI5LDcgQEAKIAlzdHJ1Y3QgaW5vZGUgKmlub2RlID0gbWFwcGluZy0+aG9zdDsKIAlzdHJ1Y3QgamZmczJfaW5vZGVfaW5mbyAqZiA9IEpGRlMyX0lOT0RFX0lORk8oaW5vZGUpOwogCXBnb2ZmX3QgaW5kZXggPSBwb3MgPj4gUEFHRV9DQUNIRV9TSElGVDsKLQl1aW50MzJfdCBwYWdlb2ZzID0gcG9zICYgKFBBR0VfQ0FDSEVfU0laRSAtIDEpOworCXVpbnQzMl90IHBhZ2VvZnMgPSBpbmRleCA8PCBQQUdFX0NBQ0hFX1NISUZUOwogCWludCByZXQgPSAwOwogCiAJcGcgPSBfX2dyYWJfY2FjaGVfcGFnZShtYXBwaW5nLCBpbmRleCk7CmRpZmYgLS1naXQgYS9mcy9sb2Nrcy5jIGIvZnMvbG9ja3MuYwppbmRleCBmMzZmMGU2Li40M2MwYWYyIDEwMDY0NAotLS0gYS9mcy9sb2Nrcy5jCisrKyBiL2ZzL2xvY2tzLmMKQEAgLTEyNzUsMTMgKzEyNzUsMTMgQEAKIEVYUE9SVF9TWU1CT0woX19icmVha19sZWFzZSk7CiAKIC8qKgotICoJbGVhc2VfZ2V0X210aW1lCisgKglsZWFzZV9nZXRfbXRpbWUgLSBnZXQgdGhlIGxhc3QgbW9kaWZpZWQgdGltZSBvZiBhbiBpbm9kZQogICoJQGlub2RlOiB0aGUgaW5vZGUKICAqICAgICAgQHRpbWU6ICBwb2ludGVyIHRvIGEgdGltZXNwZWMgd2hpY2ggd2lsbCBjb250YWluIHRoZSBsYXN0IG1vZGlmaWVkIHRpbWUKICAqCiAgKiBUaGlzIGlzIHRvIGZvcmNlIE5GUyBjbGllbnRzIHRvIGZsdXNoIHRoZWlyIGNhY2hlcyBmb3IgZmlsZXMgd2l0aAogICogZXhjbHVzaXZlIGxlYXNlcy4gIFRoZSBqdXN0aWZpY2F0aW9uIGlzIHRoYXQgaWYgc29tZW9uZSBoYXMgYW4KLSAqIGV4Y2x1c2l2ZSBsZWFzZSwgdGhlbiB0aGV5IGNvdWxkIGJlIG1vZGlmaXlpbmcgaXQuCisgKiBleGNsdXNpdmUgbGVhc2UsIHRoZW4gdGhleSBjb3VsZCBiZSBtb2RpZnlpbmcgaXQuCiAgKi8KIHZvaWQgbGVhc2VfZ2V0X210aW1lKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCB0aW1lc3BlYyAqdGltZSkKIHsKQEAgLTE4MDEsMTcgKzE4MDEsMjEgQEAKIAlpZiAoZXJyb3IpCiAJCWdvdG8gb3V0OwogCi0JZm9yICg7OykgewotCQllcnJvciA9IHZmc19sb2NrX2ZpbGUoZmlscCwgY21kLCBmaWxlX2xvY2ssIE5VTEwpOwotCQlpZiAoZXJyb3IgIT0gLUVBR0FJTiB8fCBjbWQgPT0gRl9TRVRMSykKLQkJCWJyZWFrOwotCQllcnJvciA9IHdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZShmaWxlX2xvY2stPmZsX3dhaXQsCi0JCQkJIWZpbGVfbG9jay0+ZmxfbmV4dCk7Ci0JCWlmICghZXJyb3IpCi0JCQljb250aW51ZTsKKwlpZiAoZmlscC0+Zl9vcCAmJiBmaWxwLT5mX29wLT5sb2NrICE9IE5VTEwpCisJCWVycm9yID0gZmlscC0+Zl9vcC0+bG9jayhmaWxwLCBjbWQsIGZpbGVfbG9jayk7CisJZWxzZSB7CisJCWZvciAoOzspIHsKKwkJCWVycm9yID0gcG9zaXhfbG9ja19maWxlKGZpbHAsIGZpbGVfbG9jaywgTlVMTCk7CisJCQlpZiAoZXJyb3IgIT0gLUVBR0FJTiB8fCBjbWQgPT0gRl9TRVRMSykKKwkJCQlicmVhazsKKwkJCWVycm9yID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlKGZpbGVfbG9jay0+Zmxfd2FpdCwKKwkJCQkJIWZpbGVfbG9jay0+ZmxfbmV4dCk7CisJCQlpZiAoIWVycm9yKQorCQkJCWNvbnRpbnVlOwogCi0JCWxvY2tzX2RlbGV0ZV9ibG9jayhmaWxlX2xvY2spOwotCQlicmVhazsKKwkJCWxvY2tzX2RlbGV0ZV9ibG9jayhmaWxlX2xvY2spOworCQkJYnJlYWs7CisJCX0KIAl9CiAKIAkvKgpAQCAtMTkyNSwxNyArMTkyOSwyMSBAQAogCWlmIChlcnJvcikKIAkJZ290byBvdXQ7CiAKLQlmb3IgKDs7KSB7Ci0JCWVycm9yID0gdmZzX2xvY2tfZmlsZShmaWxwLCBjbWQsIGZpbGVfbG9jaywgTlVMTCk7Ci0JCWlmIChlcnJvciAhPSAtRUFHQUlOIHx8IGNtZCA9PSBGX1NFVExLNjQpCi0JCQlicmVhazsKLQkJZXJyb3IgPSB3YWl0X2V2ZW50X2ludGVycnVwdGlibGUoZmlsZV9sb2NrLT5mbF93YWl0LAotCQkJCSFmaWxlX2xvY2stPmZsX25leHQpOwotCQlpZiAoIWVycm9yKQotCQkJY29udGludWU7CisJaWYgKGZpbHAtPmZfb3AgJiYgZmlscC0+Zl9vcC0+bG9jayAhPSBOVUxMKQorCQllcnJvciA9IGZpbHAtPmZfb3AtPmxvY2soZmlscCwgY21kLCBmaWxlX2xvY2spOworCWVsc2UgeworCQlmb3IgKDs7KSB7CisJCQllcnJvciA9IHBvc2l4X2xvY2tfZmlsZShmaWxwLCBmaWxlX2xvY2ssIE5VTEwpOworCQkJaWYgKGVycm9yICE9IC1FQUdBSU4gfHwgY21kID09IEZfU0VUTEs2NCkKKwkJCQlicmVhazsKKwkJCWVycm9yID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlKGZpbGVfbG9jay0+Zmxfd2FpdCwKKwkJCQkJIWZpbGVfbG9jay0+ZmxfbmV4dCk7CisJCQlpZiAoIWVycm9yKQorCQkJCWNvbnRpbnVlOwogCi0JCWxvY2tzX2RlbGV0ZV9ibG9jayhmaWxlX2xvY2spOwotCQlicmVhazsKKwkJCWxvY2tzX2RlbGV0ZV9ibG9jayhmaWxlX2xvY2spOworCQkJYnJlYWs7CisJCX0KIAl9CiAKIAkvKgpkaWZmIC0tZ2l0IGEvZnMvbWJjYWNoZS5jIGIvZnMvbWJjYWNoZS5jCmluZGV4IGViMzFiNzMuLmVjODhmZjMgMTAwNjQ0Ci0tLSBhL2ZzL21iY2FjaGUuYworKysgYi9mcy9tYmNhY2hlLmMKQEAgLTM5OSwxMSArMzk5LDExIEBACiAgKiBpZiBubyBtb3JlIG1lbW9yeSB3YXMgYXZhaWxhYmxlLgogICovCiBzdHJ1Y3QgbWJfY2FjaGVfZW50cnkgKgotbWJfY2FjaGVfZW50cnlfYWxsb2Moc3RydWN0IG1iX2NhY2hlICpjYWNoZSkKK21iX2NhY2hlX2VudHJ5X2FsbG9jKHN0cnVjdCBtYl9jYWNoZSAqY2FjaGUsIGdmcF90IGdmcF9mbGFncykKIHsKIAlzdHJ1Y3QgbWJfY2FjaGVfZW50cnkgKmNlOwogCi0JY2UgPSBrbWVtX2NhY2hlX2FsbG9jKGNhY2hlLT5jX2VudHJ5X2NhY2hlLCBHRlBfS0VSTkVMKTsKKwljZSA9IGttZW1fY2FjaGVfYWxsb2MoY2FjaGUtPmNfZW50cnlfY2FjaGUsIGdmcF9mbGFncyk7CiAJaWYgKGNlKSB7CiAJCWF0b21pY19pbmMoJmNhY2hlLT5jX2VudHJ5X2NvdW50KTsKIAkJSU5JVF9MSVNUX0hFQUQoJmNlLT5lX2xydV9saXN0KTsKZGlmZiAtLWdpdCBhL2ZzL25hbWVpLmMgYi9mcy9uYW1laS5jCmluZGV4IDk0MWM4ZTguLjhjZjliYjljIDEwMDY0NAotLS0gYS9mcy9uYW1laS5jCisrKyBiL2ZzL25hbWVpLmMKQEAgLTEwNiw3ICsxMDYsNyBAQAogICogYW55IGV4dHJhIGNvbnRlbnRpb24uLi4KICAqLwogCi1zdGF0aWMgaW50IGxpbmtfcGF0aF93YWxrKGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBuYW1laWRhdGEgKm5kKTsKK3N0YXRpYyBpbnQgX19saW5rX3BhdGhfd2Fsayhjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3QgbmFtZWlkYXRhICpuZCk7CiAKIC8qIEluIG9yZGVyIHRvIHJlZHVjZSBzb21lIHJhY2VzLCB3aGlsZSBhdCB0aGUgc2FtZSB0aW1lIGRvaW5nIGFkZGl0aW9uYWwKICAqIGNoZWNraW5nIGFuZCBob3BlZnVsbHkgc3BlZWRpbmcgdGhpbmdzIHVwLCB3ZSBjb3B5IGZpbGVuYW1lcyB0byB0aGUKQEAgLTU2Myw2ICs1NjMsMzcgQEAKIAlyZXR1cm4gMTsKIH0KIAorLyoKKyAqIFdyYXBwZXIgdG8gcmV0cnkgcGF0aG5hbWUgcmVzb2x1dGlvbiB3aGVuZXZlciB0aGUgdW5kZXJseWluZworICogZmlsZSBzeXN0ZW0gcmV0dXJucyBhbiBFU1RBTEUuCisgKgorICogUmV0cnkgdGhlIHdob2xlIHBhdGggb25jZSwgZm9yY2luZyByZWFsIGxvb2t1cCByZXF1ZXN0cworICogaW5zdGVhZCBvZiByZWx5aW5nIG9uIHRoZSBkY2FjaGUuCisgKi8KK3N0YXRpYyBfX2Fsd2F5c19pbmxpbmUgaW50IGxpbmtfcGF0aF93YWxrKGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBuYW1laWRhdGEgKm5kKQoreworCXN0cnVjdCBwYXRoIHNhdmUgPSBuZC0+cGF0aDsKKwlpbnQgcmVzdWx0OworCisJLyogbWFrZSBzdXJlIHRoZSBzdHVmZiB3ZSBzYXZlZCBkb2Vzbid0IGdvIGF3YXkgKi8KKwlkZ2V0KHNhdmUuZGVudHJ5KTsKKwltbnRnZXQoc2F2ZS5tbnQpOworCisJcmVzdWx0ID0gX19saW5rX3BhdGhfd2FsayhuYW1lLCBuZCk7CisJaWYgKHJlc3VsdCA9PSAtRVNUQUxFKSB7CisJCS8qIG5kLT5wYXRoIGhhZCBiZWVuIGRyb3BwZWQgKi8KKwkJbmQtPnBhdGggPSBzYXZlOworCQlkZ2V0KG5kLT5wYXRoLmRlbnRyeSk7CisJCW1udGdldChuZC0+cGF0aC5tbnQpOworCQluZC0+ZmxhZ3MgfD0gTE9PS1VQX1JFVkFMOworCQlyZXN1bHQgPSBfX2xpbmtfcGF0aF93YWxrKG5hbWUsIG5kKTsKKwl9CisKKwlwYXRoX3B1dCgmc2F2ZSk7CisKKwlyZXR1cm4gcmVzdWx0OworfQorCiBzdGF0aWMgX19hbHdheXNfaW5saW5lIGludCBfX3Zmc19mb2xsb3dfbGluayhzdHJ1Y3QgbmFtZWlkYXRhICpuZCwgY29uc3QgY2hhciAqbGluaykKIHsKIAlpbnQgcmVzID0gMDsKQEAgLTEwMjAsMzYgKzEwNTEsNiBAQAogCXJldHVybiBlcnI7CiB9CiAKLS8qCi0gKiBXcmFwcGVyIHRvIHJldHJ5IHBhdGhuYW1lIHJlc29sdXRpb24gd2hlbmV2ZXIgdGhlIHVuZGVybHlpbmcKLSAqIGZpbGUgc3lzdGVtIHJldHVybnMgYW4gRVNUQUxFLgotICoKLSAqIFJldHJ5IHRoZSB3aG9sZSBwYXRoIG9uY2UsIGZvcmNpbmcgcmVhbCBsb29rdXAgcmVxdWVzdHMKLSAqIGluc3RlYWQgb2YgcmVseWluZyBvbiB0aGUgZGNhY2hlLgotICovCi1zdGF0aWMgaW50IGxpbmtfcGF0aF93YWxrKGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBuYW1laWRhdGEgKm5kKQotewotCXN0cnVjdCBuYW1laWRhdGEgc2F2ZSA9ICpuZDsKLQlpbnQgcmVzdWx0OwotCi0JLyogbWFrZSBzdXJlIHRoZSBzdHVmZiB3ZSBzYXZlZCBkb2Vzbid0IGdvIGF3YXkgKi8KLQlkZ2V0KHNhdmUucGF0aC5kZW50cnkpOwotCW1udGdldChzYXZlLnBhdGgubW50KTsKLQotCXJlc3VsdCA9IF9fbGlua19wYXRoX3dhbGsobmFtZSwgbmQpOwotCWlmIChyZXN1bHQgPT0gLUVTVEFMRSkgewotCQkqbmQgPSBzYXZlOwotCQlkZ2V0KG5kLT5wYXRoLmRlbnRyeSk7Ci0JCW1udGdldChuZC0+cGF0aC5tbnQpOwotCQluZC0+ZmxhZ3MgfD0gTE9PS1VQX1JFVkFMOwotCQlyZXN1bHQgPSBfX2xpbmtfcGF0aF93YWxrKG5hbWUsIG5kKTsKLQl9Ci0KLQlwYXRoX3B1dCgmc2F2ZS5wYXRoKTsKLQotCXJldHVybiByZXN1bHQ7Ci19Ci0KIHN0YXRpYyBpbnQgcGF0aF93YWxrKGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBuYW1laWRhdGEgKm5kKQogewogCWN1cnJlbnQtPnRvdGFsX2xpbmtfY291bnQgPSAwOwpAQCAtMTM2NCwxMyArMTM2NSwxMyBAQAogfQogCiAvKioKLSAqIGxvb2t1cF9vbmVfbGVuOiAgZmlsZXN5c3RlbSBoZWxwZXIgdG8gbG9va3VwIHNpbmdsZSBwYXRobmFtZSBjb21wb25lbnQKKyAqIGxvb2t1cF9vbmVfbGVuIC0gZmlsZXN5c3RlbSBoZWxwZXIgdG8gbG9va3VwIHNpbmdsZSBwYXRobmFtZSBjb21wb25lbnQKICAqIEBuYW1lOglwYXRobmFtZSBjb21wb25lbnQgdG8gbG9va3VwCiAgKiBAYmFzZToJYmFzZSBkaXJlY3RvcnkgdG8gbG9va3VwIGZyb20KICAqIEBsZW46CW1heGltdW0gbGVuZ3RoIEBsZW4gc2hvdWxkIGJlIGludGVycHJldGVkIHRvCiAgKgotICogTm90ZSB0aGF0IHRoaXMgcm91dGluZSBpcyBwdXJlbHkgYSBoZWxwZXIgZm9yIGZpbGVzeXN0ZW0gdXNlYWdlIGFuZCBzaG91bGQKLSAqIG5vdCBiZSBjYWxsZWQgYnkgZ2VuZXJpYyBjb2RlLiAgQWxzbyBub3RlIHRoYXQgYnkgdXNpbmcgdGhpcyBmdW5jdGlvbiB0bworICogTm90ZSB0aGF0IHRoaXMgcm91dGluZSBpcyBwdXJlbHkgYSBoZWxwZXIgZm9yIGZpbGVzeXN0ZW0gdXNhZ2UgYW5kIHNob3VsZAorICogbm90IGJlIGNhbGxlZCBieSBnZW5lcmljIGNvZGUuICBBbHNvIG5vdGUgdGhhdCBieSB1c2luZyB0aGlzIGZ1bmN0aW9uIHRoZQogICogbmFtZWlkYXRhIGFyZ3VtZW50IGlzIHBhc3NlZCB0byB0aGUgZmlsZXN5c3RlbSBtZXRob2RzIGFuZCBhIGZpbGVzeXN0ZW0KICAqIHVzaW5nIHRoaXMgaGVscGVyIG5lZWRzIHRvIGJlIHByZXBhcmVkIGZvciB0aGF0LgogICovCmRpZmYgLS1naXQgYS9mcy9uYW1lc3BhY2UuYyBiL2ZzL25hbWVzcGFjZS5jCmluZGV4IDc5NTNjOTYuLjk0ZjAyNmUgMTAwNjQ0Ci0tLSBhL2ZzL25hbWVzcGFjZS5jCisrKyBiL2ZzL25hbWVzcGFjZS5jCkBAIC0xNTUsMTUgKzE1NSwxNSBAQAogCX0KIH0KIAotc3RhdGljIHZvaWQgZGV0YWNoX21udChzdHJ1Y3QgdmZzbW91bnQgKm1udCwgc3RydWN0IG5hbWVpZGF0YSAqb2xkX25kKQorc3RhdGljIHZvaWQgZGV0YWNoX21udChzdHJ1Y3QgdmZzbW91bnQgKm1udCwgc3RydWN0IHBhdGggKm9sZF9wYXRoKQogewotCW9sZF9uZC0+cGF0aC5kZW50cnkgPSBtbnQtPm1udF9tb3VudHBvaW50OwotCW9sZF9uZC0+cGF0aC5tbnQgPSBtbnQtPm1udF9wYXJlbnQ7CisJb2xkX3BhdGgtPmRlbnRyeSA9IG1udC0+bW50X21vdW50cG9pbnQ7CisJb2xkX3BhdGgtPm1udCA9IG1udC0+bW50X3BhcmVudDsKIAltbnQtPm1udF9wYXJlbnQgPSBtbnQ7CiAJbW50LT5tbnRfbW91bnRwb2ludCA9IG1udC0+bW50X3Jvb3Q7CiAJbGlzdF9kZWxfaW5pdCgmbW50LT5tbnRfY2hpbGQpOwogCWxpc3RfZGVsX2luaXQoJm1udC0+bW50X2hhc2gpOwotCW9sZF9uZC0+cGF0aC5kZW50cnktPmRfbW91bnRlZC0tOworCW9sZF9wYXRoLT5kZW50cnktPmRfbW91bnRlZC0tOwogfQogCiB2b2lkIG1udF9zZXRfbW91bnRwb2ludChzdHJ1Y3QgdmZzbW91bnQgKm1udCwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LApAQCAtMTc0LDEyICsxNzQsMTIgQEAKIAlkZW50cnktPmRfbW91bnRlZCsrOwogfQogCi1zdGF0aWMgdm9pZCBhdHRhY2hfbW50KHN0cnVjdCB2ZnNtb3VudCAqbW50LCBzdHJ1Y3QgbmFtZWlkYXRhICpuZCkKK3N0YXRpYyB2b2lkIGF0dGFjaF9tbnQoc3RydWN0IHZmc21vdW50ICptbnQsIHN0cnVjdCBwYXRoICpwYXRoKQogewotCW1udF9zZXRfbW91bnRwb2ludChuZC0+cGF0aC5tbnQsIG5kLT5wYXRoLmRlbnRyeSwgbW50KTsKKwltbnRfc2V0X21vdW50cG9pbnQocGF0aC0+bW50LCBwYXRoLT5kZW50cnksIG1udCk7CiAJbGlzdF9hZGRfdGFpbCgmbW50LT5tbnRfaGFzaCwgbW91bnRfaGFzaHRhYmxlICsKLQkJCWhhc2gobmQtPnBhdGgubW50LCBuZC0+cGF0aC5kZW50cnkpKTsKLQlsaXN0X2FkZF90YWlsKCZtbnQtPm1udF9jaGlsZCwgJm5kLT5wYXRoLm1udC0+bW50X21vdW50cyk7CisJCQloYXNoKHBhdGgtPm1udCwgcGF0aC0+ZGVudHJ5KSk7CisJbGlzdF9hZGRfdGFpbCgmbW50LT5tbnRfY2hpbGQsICZwYXRoLT5tbnQtPm1udF9tb3VudHMpOwogfQogCiAvKgpAQCAtMjYyLDEwICsyNjIsOCBAQAogCQkvKiBzdGljayB0aGUgZHVwbGljYXRlIG1vdW50IG9uIHRoZSBzYW1lIGV4cGlyeSBsaXN0CiAJCSAqIGFzIHRoZSBvcmlnaW5hbCBpZiB0aGF0IHdhcyBvbiBvbmUgKi8KIAkJaWYgKGZsYWcgJiBDTF9FWFBJUkUpIHsKLQkJCXNwaW5fbG9jaygmdmZzbW91bnRfbG9jayk7CiAJCQlpZiAoIWxpc3RfZW1wdHkoJm9sZC0+bW50X2V4cGlyZSkpCiAJCQkJbGlzdF9hZGQoJm1udC0+bW50X2V4cGlyZSwgJm9sZC0+bW50X2V4cGlyZSk7Ci0JCQlzcGluX3VubG9jaygmdmZzbW91bnRfbG9jayk7CiAJCX0KIAl9CiAJcmV0dXJuIG1udDsKQEAgLTU0OCw2ICs1NDYsNyBAQAogCQkJbSA9IG1udC0+bW50X3BhcmVudDsKIAkJCW1udC0+bW50X21vdW50cG9pbnQgPSBtbnQtPm1udF9yb290OwogCQkJbW50LT5tbnRfcGFyZW50ID0gbW50OworCQkJbS0+bW50X2dob3N0cy0tOwogCQkJc3Bpbl91bmxvY2soJnZmc21vdW50X2xvY2spOwogCQkJZHB1dChkZW50cnkpOwogCQkJbW50cHV0KG0pOwpAQCAtNTcyLDEyICs1NzEsMTYgQEAKIAkJX190b3VjaF9tbnRfbmFtZXNwYWNlKHAtPm1udF9ucyk7CiAJCXAtPm1udF9ucyA9IE5VTEw7CiAJCWxpc3RfZGVsX2luaXQoJnAtPm1udF9jaGlsZCk7Ci0JCWlmIChwLT5tbnRfcGFyZW50ICE9IHApCisJCWlmIChwLT5tbnRfcGFyZW50ICE9IHApIHsKKwkJCXAtPm1udF9wYXJlbnQtPm1udF9naG9zdHMrKzsKIAkJCXAtPm1udF9tb3VudHBvaW50LT5kX21vdW50ZWQtLTsKKwkJfQogCQljaGFuZ2VfbW50X3Byb3BhZ2F0aW9uKHAsIE1TX1BSSVZBVEUpOwogCX0KIH0KIAorc3RhdGljIHZvaWQgc2hyaW5rX3N1Ym1vdW50cyhzdHJ1Y3QgdmZzbW91bnQgKm1udCwgc3RydWN0IGxpc3RfaGVhZCAqdW1vdW50cyk7CisKIHN0YXRpYyBpbnQgZG9fdW1vdW50KHN0cnVjdCB2ZnNtb3VudCAqbW50LCBpbnQgZmxhZ3MpCiB7CiAJc3RydWN0IHN1cGVyX2Jsb2NrICpzYiA9IG1udC0+bW50X3NiOwpAQCAtNjUwLDYgKzY1Myw5IEBACiAJc3Bpbl9sb2NrKCZ2ZnNtb3VudF9sb2NrKTsKIAlldmVudCsrOwogCisJaWYgKCEoZmxhZ3MgJiBNTlRfREVUQUNIKSkKKwkJc2hyaW5rX3N1Ym1vdW50cyhtbnQsICZ1bW91bnRfbGlzdCk7CisKIAlyZXR2YWwgPSAtRUJVU1k7CiAJaWYgKGZsYWdzICYgTU5UX0RFVEFDSCB8fCAhcHJvcGFnYXRlX21vdW50X2J1c3kobW50LCAyKSkgewogCQlpZiAoIWxpc3RfZW1wdHkoJm1udC0+bW50X2xpc3QpKQpAQCAtNzQ0LDcgKzc1MCw3IEBACiAJCQkJCWludCBmbGFnKQogewogCXN0cnVjdCB2ZnNtb3VudCAqcmVzLCAqcCwgKnEsICpyLCAqczsKLQlzdHJ1Y3QgbmFtZWlkYXRhIG5kOworCXN0cnVjdCBwYXRoIHBhdGg7CiAKIAlpZiAoIShmbGFnICYgQ0xfQ09QWV9BTEwpICYmIElTX01OVF9VTkJJTkRBQkxFKG1udCkpCiAJCXJldHVybiBOVUxMOwpAQCAtNzY5LDE0ICs3NzUsMTQgQEAKIAkJCQlxID0gcS0+bW50X3BhcmVudDsKIAkJCX0KIAkJCXAgPSBzOwotCQkJbmQucGF0aC5tbnQgPSBxOwotCQkJbmQucGF0aC5kZW50cnkgPSBwLT5tbnRfbW91bnRwb2ludDsKKwkJCXBhdGgubW50ID0gcTsKKwkJCXBhdGguZGVudHJ5ID0gcC0+bW50X21vdW50cG9pbnQ7CiAJCQlxID0gY2xvbmVfbW50KHAsIHAtPm1udF9yb290LCBmbGFnKTsKIAkJCWlmICghcSkKIAkJCQlnb3RvIEVub21lbTsKIAkJCXNwaW5fbG9jaygmdmZzbW91bnRfbG9jayk7CiAJCQlsaXN0X2FkZF90YWlsKCZxLT5tbnRfbGlzdCwgJnJlcy0+bW50X2xpc3QpOwotCQkJYXR0YWNoX21udChxLCAmbmQpOworCQkJYXR0YWNoX21udChxLCAmcGF0aCk7CiAJCQlzcGluX3VubG9jaygmdmZzbW91bnRfbG9jayk7CiAJCX0KIAl9CkBAIC04NzYsMTEgKzg4MiwxMSBAQAogICogaW4gYWxsb2NhdGlvbnMuCiAgKi8KIHN0YXRpYyBpbnQgYXR0YWNoX3JlY3Vyc2l2ZV9tbnQoc3RydWN0IHZmc21vdW50ICpzb3VyY2VfbW50LAotCQkJc3RydWN0IG5hbWVpZGF0YSAqbmQsIHN0cnVjdCBuYW1laWRhdGEgKnBhcmVudF9uZCkKKwkJCXN0cnVjdCBwYXRoICpwYXRoLCBzdHJ1Y3QgcGF0aCAqcGFyZW50X3BhdGgpCiB7CiAJTElTVF9IRUFEKHRyZWVfbGlzdCk7Ci0Jc3RydWN0IHZmc21vdW50ICpkZXN0X21udCA9IG5kLT5wYXRoLm1udDsKLQlzdHJ1Y3QgZGVudHJ5ICpkZXN0X2RlbnRyeSA9IG5kLT5wYXRoLmRlbnRyeTsKKwlzdHJ1Y3QgdmZzbW91bnQgKmRlc3RfbW50ID0gcGF0aC0+bW50OworCXN0cnVjdCBkZW50cnkgKmRlc3RfZGVudHJ5ID0gcGF0aC0+ZGVudHJ5OwogCXN0cnVjdCB2ZnNtb3VudCAqY2hpbGQsICpwOwogCiAJaWYgKHByb3BhZ2F0ZV9tbnQoZGVzdF9tbnQsIGRlc3RfZGVudHJ5LCBzb3VyY2VfbW50LCAmdHJlZV9saXN0KSkKQEAgLTg5Miw5ICs4OTgsOSBAQAogCX0KIAogCXNwaW5fbG9jaygmdmZzbW91bnRfbG9jayk7Ci0JaWYgKHBhcmVudF9uZCkgewotCQlkZXRhY2hfbW50KHNvdXJjZV9tbnQsIHBhcmVudF9uZCk7Ci0JCWF0dGFjaF9tbnQoc291cmNlX21udCwgbmQpOworCWlmIChwYXJlbnRfcGF0aCkgeworCQlkZXRhY2hfbW50KHNvdXJjZV9tbnQsIHBhcmVudF9wYXRoKTsKKwkJYXR0YWNoX21udChzb3VyY2VfbW50LCBwYXRoKTsKIAkJdG91Y2hfbW50X25hbWVzcGFjZShjdXJyZW50LT5uc3Byb3h5LT5tbnRfbnMpOwogCX0gZWxzZSB7CiAJCW1udF9zZXRfbW91bnRwb2ludChkZXN0X21udCwgZGVzdF9kZW50cnksIHNvdXJjZV9tbnQpOwpAQCAtOTMwLDcgKzkzNiw3IEBACiAKIAllcnIgPSAtRU5PRU5UOwogCWlmIChJU19ST09UKG5kLT5wYXRoLmRlbnRyeSkgfHwgIWRfdW5oYXNoZWQobmQtPnBhdGguZGVudHJ5KSkKLQkJZXJyID0gYXR0YWNoX3JlY3Vyc2l2ZV9tbnQobW50LCBuZCwgTlVMTCk7CisJCWVyciA9IGF0dGFjaF9yZWN1cnNpdmVfbW50KG1udCwgJm5kLT5wYXRoLCBOVUxMKTsKIG91dF91bmxvY2s6CiAJbXV0ZXhfdW5sb2NrKCZuZC0+cGF0aC5kZW50cnktPmRfaW5vZGUtPmlfbXV0ZXgpOwogCWlmICghZXJyKQpAQCAtMTA1OSw3ICsxMDY1LDggQEAKICAqLwogc3RhdGljIG5vaW5saW5lIGludCBkb19tb3ZlX21vdW50KHN0cnVjdCBuYW1laWRhdGEgKm5kLCBjaGFyICpvbGRfbmFtZSkKIHsKLQlzdHJ1Y3QgbmFtZWlkYXRhIG9sZF9uZCwgcGFyZW50X25kOworCXN0cnVjdCBuYW1laWRhdGEgb2xkX25kOworCXN0cnVjdCBwYXRoIHBhcmVudF9wYXRoOwogCXN0cnVjdCB2ZnNtb3VudCAqcDsKIAlpbnQgZXJyID0gMDsKIAlpZiAoIWNhcGFibGUoQ0FQX1NZU19BRE1JTikpCkBAIC0xMTE0LDIxICsxMTIxLDE5IEBACiAJCWlmIChwID09IG9sZF9uZC5wYXRoLm1udCkKIAkJCWdvdG8gb3V0MTsKIAotCWVyciA9IGF0dGFjaF9yZWN1cnNpdmVfbW50KG9sZF9uZC5wYXRoLm1udCwgbmQsICZwYXJlbnRfbmQpOworCWVyciA9IGF0dGFjaF9yZWN1cnNpdmVfbW50KG9sZF9uZC5wYXRoLm1udCwgJm5kLT5wYXRoLCAmcGFyZW50X3BhdGgpOwogCWlmIChlcnIpCiAJCWdvdG8gb3V0MTsKIAotCXNwaW5fbG9jaygmdmZzbW91bnRfbG9jayk7CiAJLyogaWYgdGhlIG1vdW50IGlzIG1vdmVkLCBpdCBzaG91bGQgbm8gbG9uZ2VyIGJlIGV4cGlyZQogCSAqIGF1dG9tYXRpY2FsbHkgKi8KIAlsaXN0X2RlbF9pbml0KCZvbGRfbmQucGF0aC5tbnQtPm1udF9leHBpcmUpOwotCXNwaW5fdW5sb2NrKCZ2ZnNtb3VudF9sb2NrKTsKIG91dDE6CiAJbXV0ZXhfdW5sb2NrKCZuZC0+cGF0aC5kZW50cnktPmRfaW5vZGUtPmlfbXV0ZXgpOwogb3V0OgogCXVwX3dyaXRlKCZuYW1lc3BhY2Vfc2VtKTsKIAlpZiAoIWVycikKLQkJcGF0aF9wdXQoJnBhcmVudF9uZC5wYXRoKTsKKwkJcGF0aF9wdXQoJnBhcmVudF9wYXRoKTsKIAlwYXRoX3B1dCgmb2xkX25kLnBhdGgpOwogCXJldHVybiBlcnI7CiB9CkBAIC0xMTg5LDEyICsxMTk0LDkgQEAKIAlpZiAoKGVyciA9IGdyYWZ0X3RyZWUobmV3bW50LCBuZCkpKQogCQlnb3RvIHVubG9jazsKIAotCWlmIChmc2xpc3QpIHsKLQkJLyogYWRkIHRvIHRoZSBzcGVjaWZpZWQgZXhwaXJhdGlvbiBsaXN0ICovCi0JCXNwaW5fbG9jaygmdmZzbW91bnRfbG9jayk7CisJaWYgKGZzbGlzdCkgLyogYWRkIHRvIHRoZSBzcGVjaWZpZWQgZXhwaXJhdGlvbiBsaXN0ICovCiAJCWxpc3RfYWRkX3RhaWwoJm5ld21udC0+bW50X2V4cGlyZSwgZnNsaXN0KTsKLQkJc3Bpbl91bmxvY2soJnZmc21vdW50X2xvY2spOwotCX0KKwogCXVwX3dyaXRlKCZuYW1lc3BhY2Vfc2VtKTsKIAlyZXR1cm4gMDsKIApAQCAtMTIwNiw3NSArMTIwOCw2IEBACiAKIEVYUE9SVF9TWU1CT0xfR1BMKGRvX2FkZF9tb3VudCk7CiAKLXN0YXRpYyB2b2lkIGV4cGlyZV9tb3VudChzdHJ1Y3QgdmZzbW91bnQgKm1udCwgc3RydWN0IGxpc3RfaGVhZCAqbW91bnRzLAotCQkJCXN0cnVjdCBsaXN0X2hlYWQgKnVtb3VudHMpCi17Ci0Jc3Bpbl9sb2NrKCZ2ZnNtb3VudF9sb2NrKTsKLQotCS8qCi0JICogQ2hlY2sgaWYgbW91bnQgaXMgc3RpbGwgYXR0YWNoZWQsIGlmIG5vdCwgbGV0IHdob2V2ZXIgaG9sZHMgaXQgZGVhbAotCSAqIHdpdGggdGhlIHN1Y2tlcgotCSAqLwotCWlmIChtbnQtPm1udF9wYXJlbnQgPT0gbW50KSB7Ci0JCXNwaW5fdW5sb2NrKCZ2ZnNtb3VudF9sb2NrKTsKLQkJcmV0dXJuOwotCX0KLQotCS8qCi0JICogQ2hlY2sgdGhhdCBpdCBpcyBzdGlsbCBkZWFkOiB0aGUgY291bnQgc2hvdWxkIG5vdyBiZSAyIC0gYXMKLQkgKiBjb250cmlidXRlZCBieSB0aGUgdmZzbW91bnQgcGFyZW50IGFuZCB0aGUgbW50Z2V0IGFib3ZlCi0JICovCi0JaWYgKCFwcm9wYWdhdGVfbW91bnRfYnVzeShtbnQsIDIpKSB7Ci0JCS8qIGRlbGV0ZSBmcm9tIHRoZSBuYW1lc3BhY2UgKi8KLQkJdG91Y2hfbW50X25hbWVzcGFjZShtbnQtPm1udF9ucyk7Ci0JCWxpc3RfZGVsX2luaXQoJm1udC0+bW50X2xpc3QpOwotCQltbnQtPm1udF9ucyA9IE5VTEw7Ci0JCXVtb3VudF90cmVlKG1udCwgMSwgdW1vdW50cyk7Ci0JCXNwaW5fdW5sb2NrKCZ2ZnNtb3VudF9sb2NrKTsKLQl9IGVsc2UgewotCQkvKgotCQkgKiBTb21lb25lIGJyb3VnaHQgaXQgYmFjayB0byBsaWZlIHdoaWxzdCB3ZSBkaWRuJ3QgaGF2ZSBhbnkKLQkJICogbG9ja3MgaGVsZCBzbyByZXR1cm4gaXQgdG8gdGhlIGV4cGlyYXRpb24gbGlzdAotCQkgKi8KLQkJbGlzdF9hZGRfdGFpbCgmbW50LT5tbnRfZXhwaXJlLCBtb3VudHMpOwotCQlzcGluX3VubG9jaygmdmZzbW91bnRfbG9jayk7Ci0JfQotfQotCi0vKgotICogZ28gdGhyb3VnaCB0aGUgdmZzbW91bnRzIHdlJ3ZlIGp1c3QgY29uc2lnbmVkIHRvIHRoZSBncmF2ZXlhcmQgdG8KLSAqIC0gY2hlY2sgdGhhdCB0aGV5J3JlIHN0aWxsIGRlYWQKLSAqIC0gZGVsZXRlIHRoZSB2ZnNtb3VudCBmcm9tIHRoZSBhcHByb3ByaWF0ZSBuYW1lc3BhY2UgdW5kZXIgbG9jawotICogLSBkaXNwb3NlIG9mIHRoZSBjb3Jwc2UKLSAqLwotc3RhdGljIHZvaWQgZXhwaXJlX21vdW50X2xpc3Qoc3RydWN0IGxpc3RfaGVhZCAqZ3JhdmV5YXJkLCBzdHJ1Y3QgbGlzdF9oZWFkICptb3VudHMpCi17Ci0Jc3RydWN0IG1udF9uYW1lc3BhY2UgKm5zOwotCXN0cnVjdCB2ZnNtb3VudCAqbW50OwotCi0Jd2hpbGUgKCFsaXN0X2VtcHR5KGdyYXZleWFyZCkpIHsKLQkJTElTVF9IRUFEKHVtb3VudHMpOwotCQltbnQgPSBsaXN0X2ZpcnN0X2VudHJ5KGdyYXZleWFyZCwgc3RydWN0IHZmc21vdW50LCBtbnRfZXhwaXJlKTsKLQkJbGlzdF9kZWxfaW5pdCgmbW50LT5tbnRfZXhwaXJlKTsKLQotCQkvKiBkb24ndCBkbyBhbnl0aGluZyBpZiB0aGUgbmFtZXNwYWNlIGlzIGRlYWQgLSBhbGwgdGhlCi0JCSAqIHZmc21vdW50cyBmcm9tIGl0IGFyZSBnb2luZyBhd2F5IGFueXdheSAqLwotCQlucyA9IG1udC0+bW50X25zOwotCQlpZiAoIW5zIHx8ICFucy0+cm9vdCkKLQkJCWNvbnRpbnVlOwotCQlnZXRfbW50X25zKG5zKTsKLQotCQlzcGluX3VubG9jaygmdmZzbW91bnRfbG9jayk7Ci0JCWRvd25fd3JpdGUoJm5hbWVzcGFjZV9zZW0pOwotCQlleHBpcmVfbW91bnQobW50LCBtb3VudHMsICZ1bW91bnRzKTsKLQkJdXBfd3JpdGUoJm5hbWVzcGFjZV9zZW0pOwotCQlyZWxlYXNlX21vdW50cygmdW1vdW50cyk7Ci0JCW1udHB1dChtbnQpOwotCQlwdXRfbW50X25zKG5zKTsKLQkJc3Bpbl9sb2NrKCZ2ZnNtb3VudF9sb2NrKTsKLQl9Ci19Ci0KIC8qCiAgKiBwcm9jZXNzIGEgbGlzdCBvZiBleHBpcmFibGUgbW91bnRwb2ludHMgd2l0aCB0aGUgaW50ZW50IG9mIGRpc2NhcmRpbmcgYW55CiAgKiBtb3VudHBvaW50cyB0aGF0IGFyZW4ndCBpbiB1c2UgYW5kIGhhdmVuJ3QgYmVlbiB0b3VjaGVkIHNpbmNlIGxhc3Qgd2UgY2FtZQpAQCAtMTI4NCwxMCArMTIxNywxMiBAQAogewogCXN0cnVjdCB2ZnNtb3VudCAqbW50LCAqbmV4dDsKIAlMSVNUX0hFQUQoZ3JhdmV5YXJkKTsKKwlMSVNUX0hFQUQodW1vdW50cyk7CiAKIAlpZiAobGlzdF9lbXB0eShtb3VudHMpKQogCQlyZXR1cm47CiAKKwlkb3duX3dyaXRlKCZuYW1lc3BhY2Vfc2VtKTsKIAlzcGluX2xvY2soJnZmc21vdW50X2xvY2spOwogCiAJLyogZXh0cmFjdCBmcm9tIHRoZSBleHBpcmF0aW9uIGxpc3QgZXZlcnkgdmZzbW91bnQgdGhhdCBtYXRjaGVzIHRoZQpAQCAtMTI5OCwxNiArMTIzMywxOSBAQAogCSAqLwogCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShtbnQsIG5leHQsIG1vdW50cywgbW50X2V4cGlyZSkgewogCQlpZiAoIXhjaGcoJm1udC0+bW50X2V4cGlyeV9tYXJrLCAxKSB8fAotCQkgICAgYXRvbWljX3JlYWQoJm1udC0+bW50X2NvdW50KSAhPSAxKQorCQkJcHJvcGFnYXRlX21vdW50X2J1c3kobW50LCAxKSkKIAkJCWNvbnRpbnVlOwotCi0JCW1udGdldChtbnQpOwogCQlsaXN0X21vdmUoJm1udC0+bW50X2V4cGlyZSwgJmdyYXZleWFyZCk7CiAJfQotCi0JZXhwaXJlX21vdW50X2xpc3QoJmdyYXZleWFyZCwgbW91bnRzKTsKLQorCXdoaWxlICghbGlzdF9lbXB0eSgmZ3JhdmV5YXJkKSkgeworCQltbnQgPSBsaXN0X2ZpcnN0X2VudHJ5KCZncmF2ZXlhcmQsIHN0cnVjdCB2ZnNtb3VudCwgbW50X2V4cGlyZSk7CisJCXRvdWNoX21udF9uYW1lc3BhY2UobW50LT5tbnRfbnMpOworCQl1bW91bnRfdHJlZShtbnQsIDEsICZ1bW91bnRzKTsKKwl9CiAJc3Bpbl91bmxvY2soJnZmc21vdW50X2xvY2spOworCXVwX3dyaXRlKCZuYW1lc3BhY2Vfc2VtKTsKKworCXJlbGVhc2VfbW91bnRzKCZ1bW91bnRzKTsKIH0KIAogRVhQT1JUX1NZTUJPTF9HUEwobWFya19tb3VudHNfZm9yX2V4cGlyeSk7CkBAIC0xMzQzLDcgKzEyODEsNiBAQAogCQl9CiAKIAkJaWYgKCFwcm9wYWdhdGVfbW91bnRfYnVzeShtbnQsIDEpKSB7Ci0JCQltbnRnZXQobW50KTsKIAkJCWxpc3RfbW92ZV90YWlsKCZtbnQtPm1udF9leHBpcmUsIGdyYXZleWFyZCk7CiAJCQlmb3VuZCsrOwogCQl9CkBAIC0xMzYzLDIyICsxMzAwLDIyIEBACiAgKiBwcm9jZXNzIGEgbGlzdCBvZiBleHBpcmFibGUgbW91bnRwb2ludHMgd2l0aCB0aGUgaW50ZW50IG9mIGRpc2NhcmRpbmcgYW55CiAgKiBzdWJtb3VudHMgb2YgYSBzcGVjaWZpYyBwYXJlbnQgbW91bnRwb2ludAogICovCi12b2lkIHNocmlua19zdWJtb3VudHMoc3RydWN0IHZmc21vdW50ICptb3VudHBvaW50LCBzdHJ1Y3QgbGlzdF9oZWFkICptb3VudHMpCitzdGF0aWMgdm9pZCBzaHJpbmtfc3VibW91bnRzKHN0cnVjdCB2ZnNtb3VudCAqbW50LCBzdHJ1Y3QgbGlzdF9oZWFkICp1bW91bnRzKQogewogCUxJU1RfSEVBRChncmF2ZXlhcmQpOwotCWludCBmb3VuZDsKLQotCXNwaW5fbG9jaygmdmZzbW91bnRfbG9jayk7CisJc3RydWN0IHZmc21vdW50ICptOwogCiAJLyogZXh0cmFjdCBzdWJtb3VudHMgb2YgJ21vdW50cG9pbnQnIGZyb20gdGhlIGV4cGlyYXRpb24gbGlzdCAqLwotCXdoaWxlICgoZm91bmQgPSBzZWxlY3Rfc3VibW91bnRzKG1vdW50cG9pbnQsICZncmF2ZXlhcmQpKSAhPSAwKQotCQlleHBpcmVfbW91bnRfbGlzdCgmZ3JhdmV5YXJkLCBtb3VudHMpOwotCi0Jc3Bpbl91bmxvY2soJnZmc21vdW50X2xvY2spOworCXdoaWxlIChzZWxlY3Rfc3VibW91bnRzKG1udCwgJmdyYXZleWFyZCkpIHsKKwkJd2hpbGUgKCFsaXN0X2VtcHR5KCZncmF2ZXlhcmQpKSB7CisJCQltID0gbGlzdF9maXJzdF9lbnRyeSgmZ3JhdmV5YXJkLCBzdHJ1Y3QgdmZzbW91bnQsCisJCQkJCQltbnRfZXhwaXJlKTsKKwkJCXRvdWNoX21udF9uYW1lc3BhY2UobW50LT5tbnRfbnMpOworCQkJdW1vdW50X3RyZWUobW50LCAxLCB1bW91bnRzKTsKKwkJfQorCX0KIH0KIAotRVhQT1JUX1NZTUJPTF9HUEwoc2hyaW5rX3N1Ym1vdW50cyk7Ci0KIC8qCiAgKiBTb21lIGNvcHlfZnJvbV91c2VyKCkgaW1wbGVtZW50YXRpb25zIGRvIG5vdCByZXR1cm4gdGhlIGV4YWN0IG51bWJlciBvZgogICogYnl0ZXMgcmVtYWluaW5nIHRvIGNvcHkgb24gYSBmYXVsdC4gIEJ1dCBjb3B5X21vdW50X29wdGlvbnMoKSByZXF1aXJlcyB0aGF0LgpAQCAtMTY4Myw3ICsxNjIwLDcgQEAKIAkJcGF0aF9wdXQoJm9sZF9wd2QpOwogfQogCi1zdGF0aWMgdm9pZCBjaHJvb3RfZnNfcmVmcyhzdHJ1Y3QgbmFtZWlkYXRhICpvbGRfbmQsIHN0cnVjdCBuYW1laWRhdGEgKm5ld19uZCkKK3N0YXRpYyB2b2lkIGNocm9vdF9mc19yZWZzKHN0cnVjdCBwYXRoICpvbGRfcm9vdCwgc3RydWN0IHBhdGggKm5ld19yb290KQogewogCXN0cnVjdCB0YXNrX3N0cnVjdCAqZywgKnA7CiAJc3RydWN0IGZzX3N0cnVjdCAqZnM7CkBAIC0xNjk1LDEyICsxNjMyLDEyIEBACiAJCWlmIChmcykgewogCQkJYXRvbWljX2luYygmZnMtPmNvdW50KTsKIAkJCXRhc2tfdW5sb2NrKHApOwotCQkJaWYgKGZzLT5yb290LmRlbnRyeSA9PSBvbGRfbmQtPnBhdGguZGVudHJ5Ci0JCQkgICAgJiYgZnMtPnJvb3QubW50ID09IG9sZF9uZC0+cGF0aC5tbnQpCi0JCQkJc2V0X2ZzX3Jvb3QoZnMsICZuZXdfbmQtPnBhdGgpOwotCQkJaWYgKGZzLT5wd2QuZGVudHJ5ID09IG9sZF9uZC0+cGF0aC5kZW50cnkKLQkJCSAgICAmJiBmcy0+cHdkLm1udCA9PSBvbGRfbmQtPnBhdGgubW50KQotCQkJCXNldF9mc19wd2QoZnMsICZuZXdfbmQtPnBhdGgpOworCQkJaWYgKGZzLT5yb290LmRlbnRyeSA9PSBvbGRfcm9vdC0+ZGVudHJ5CisJCQkgICAgJiYgZnMtPnJvb3QubW50ID09IG9sZF9yb290LT5tbnQpCisJCQkJc2V0X2ZzX3Jvb3QoZnMsIG5ld19yb290KTsKKwkJCWlmIChmcy0+cHdkLmRlbnRyeSA9PSBvbGRfcm9vdC0+ZGVudHJ5CisJCQkgICAgJiYgZnMtPnB3ZC5tbnQgPT0gb2xkX3Jvb3QtPm1udCkKKwkJCQlzZXRfZnNfcHdkKGZzLCBuZXdfcm9vdCk7CiAJCQlwdXRfZnNfc3RydWN0KGZzKTsKIAkJfSBlbHNlCiAJCQl0YXNrX3VubG9jayhwKTsKQEAgLTE3MzcsNyArMTY3NCw4IEBACiAJCQkgICAgICAgY29uc3QgY2hhciBfX3VzZXIgKiBwdXRfb2xkKQogewogCXN0cnVjdCB2ZnNtb3VudCAqdG1wOwotCXN0cnVjdCBuYW1laWRhdGEgbmV3X25kLCBvbGRfbmQsIHBhcmVudF9uZCwgcm9vdF9wYXJlbnQsIHVzZXJfbmQ7CisJc3RydWN0IG5hbWVpZGF0YSBuZXdfbmQsIG9sZF9uZCwgdXNlcl9uZDsKKwlzdHJ1Y3QgcGF0aCBwYXJlbnRfcGF0aCwgcm9vdF9wYXJlbnQ7CiAJaW50IGVycm9yOwogCiAJaWYgKCFjYXBhYmxlKENBUF9TWVNfQURNSU4pKQpAQCAtMTgxMSwxOSArMTc0OSwxOSBAQAogCQkJZ290byBvdXQzOwogCX0gZWxzZSBpZiAoIWlzX3N1YmRpcihvbGRfbmQucGF0aC5kZW50cnksIG5ld19uZC5wYXRoLmRlbnRyeSkpCiAJCWdvdG8gb3V0MzsKLQlkZXRhY2hfbW50KG5ld19uZC5wYXRoLm1udCwgJnBhcmVudF9uZCk7CisJZGV0YWNoX21udChuZXdfbmQucGF0aC5tbnQsICZwYXJlbnRfcGF0aCk7CiAJZGV0YWNoX21udCh1c2VyX25kLnBhdGgubW50LCAmcm9vdF9wYXJlbnQpOwogCS8qIG1vdW50IG9sZCByb290IG9uIHB1dF9vbGQgKi8KLQlhdHRhY2hfbW50KHVzZXJfbmQucGF0aC5tbnQsICZvbGRfbmQpOworCWF0dGFjaF9tbnQodXNlcl9uZC5wYXRoLm1udCwgJm9sZF9uZC5wYXRoKTsKIAkvKiBtb3VudCBuZXdfcm9vdCBvbiAvICovCiAJYXR0YWNoX21udChuZXdfbmQucGF0aC5tbnQsICZyb290X3BhcmVudCk7CiAJdG91Y2hfbW50X25hbWVzcGFjZShjdXJyZW50LT5uc3Byb3h5LT5tbnRfbnMpOwogCXNwaW5fdW5sb2NrKCZ2ZnNtb3VudF9sb2NrKTsKLQljaHJvb3RfZnNfcmVmcygmdXNlcl9uZCwgJm5ld19uZCk7CisJY2hyb290X2ZzX3JlZnMoJnVzZXJfbmQucGF0aCwgJm5ld19uZC5wYXRoKTsKIAlzZWN1cml0eV9zYl9wb3N0X3Bpdm90cm9vdCgmdXNlcl9uZCwgJm5ld19uZCk7CiAJZXJyb3IgPSAwOwotCXBhdGhfcHV0KCZyb290X3BhcmVudC5wYXRoKTsKLQlwYXRoX3B1dCgmcGFyZW50X25kLnBhdGgpOworCXBhdGhfcHV0KCZyb290X3BhcmVudCk7CisJcGF0aF9wdXQoJnBhcmVudF9wYXRoKTsKIG91dDI6CiAJbXV0ZXhfdW5sb2NrKCZvbGRfbmQucGF0aC5kZW50cnktPmRfaW5vZGUtPmlfbXV0ZXgpOwogCXVwX3dyaXRlKCZuYW1lc3BhY2Vfc2VtKTsKZGlmZiAtLWdpdCBhL2ZzL25mcy9maWxlLmMgYi9mcy9uZnMvZmlsZS5jCmluZGV4IGVmNTdhNWEuLjVkMmU5ZDkgMTAwNjQ0Ci0tLSBhL2ZzL25mcy9maWxlLmMKKysrIGIvZnMvbmZzL2ZpbGUuYwpAQCAtNjQsNyArNjQsMTEgQEAKIAkud3JpdGUJCT0gZG9fc3luY193cml0ZSwKIAkuYWlvX3JlYWQJPSBuZnNfZmlsZV9yZWFkLAogCS5haW9fd3JpdGUJPSBuZnNfZmlsZV93cml0ZSwKKyNpZmRlZiBDT05GSUdfTU1VCiAJLm1tYXAJCT0gbmZzX2ZpbGVfbW1hcCwKKyNlbHNlCisJLm1tYXAJCT0gZ2VuZXJpY19maWxlX21tYXAsCisjZW5kaWYKIAkub3BlbgkJPSBuZnNfZmlsZV9vcGVuLAogCS5mbHVzaAkJPSBuZnNfZmlsZV9mbHVzaCwKIAkucmVsZWFzZQk9IG5mc19maWxlX3JlbGVhc2UsCmRpZmYgLS1naXQgYS9mcy9uZnMvaW5vZGUuYyBiL2ZzL25mcy9pbm9kZS5jCmluZGV4IGE0YzdjZjIuLjZmODhkN2MgMTAwNjQ0Ci0tLSBhL2ZzL25mcy9pbm9kZS5jCisrKyBiL2ZzL25mcy9pbm9kZS5jCkBAIC01MDYsNiArNTA2LDcgQEAKIAkJY3R4LT5jcmVkID0gZ2V0X3JwY2NyZWQoY3JlZCk7CiAJCWN0eC0+c3RhdGUgPSBOVUxMOwogCQljdHgtPmxvY2tvd25lciA9IGN1cnJlbnQtPmZpbGVzOworCQljdHgtPmZsYWdzID0gMDsKIAkJY3R4LT5lcnJvciA9IDA7CiAJCWN0eC0+ZGlyX2Nvb2tpZSA9IDA7CiAJCWF0b21pY19zZXQoJmN0eC0+Y291bnQsIDEpOwpkaWZmIC0tZ2l0IGEvZnMvbmZzL3JlYWQuYyBiL2ZzL25mcy9yZWFkLmMKaW5kZXggM2Q3ZDk2My4uNWE3MGJlNSAxMDA2NDQKLS0tIGEvZnMvbmZzL3JlYWQuYworKysgYi9mcy9uZnMvcmVhZC5jCkBAIC01MzMsNyArNTMzLDEwIEBACiAKIAlpZiAobGVuIDwgUEFHRV9DQUNIRV9TSVpFKQogCQl6ZXJvX3VzZXJfc2VnbWVudChwYWdlLCBsZW4sIFBBR0VfQ0FDSEVfU0laRSk7Ci0JbmZzX3BhZ2Vpb19hZGRfcmVxdWVzdChkZXNjLT5wZ2lvLCBuZXcpOworCWlmICghbmZzX3BhZ2Vpb19hZGRfcmVxdWVzdChkZXNjLT5wZ2lvLCBuZXcpKSB7CisJCWVycm9yID0gZGVzYy0+cGdpby0+cGdfZXJyb3I7CisJCWdvdG8gb3V0X3VubG9jazsKKwl9CiAJcmV0dXJuIDA7CiBvdXRfZXJyb3I6CiAJZXJyb3IgPSBQVFJfRVJSKG5ldyk7CmRpZmYgLS1naXQgYS9mcy9uZnMvc3VwZXIuYyBiL2ZzL25mcy9zdXBlci5jCmluZGV4IGZjZjRiOTguLmY5MjE5MDIgMTAwNjQ0Ci0tLSBhL2ZzL25mcy9zdXBlci5jCisrKyBiL2ZzL25mcy9zdXBlci5jCkBAIC01ODksOCArNTg5LDYgQEAKIAlzdHJ1Y3QgbmZzX3NlcnZlciAqc2VydmVyID0gTkZTX1NCKHZmc21udC0+bW50X3NiKTsKIAlzdHJ1Y3QgcnBjX2NsbnQgKnJwYzsKIAotCXNocmlua19zdWJtb3VudHModmZzbW50LCAmbmZzX2F1dG9tb3VudF9saXN0KTsKLQogCWlmICghKGZsYWdzICYgTU5UX0ZPUkNFKSkKIAkJcmV0dXJuOwogCS8qIC1FSU8gYWxsIHBlbmRpbmcgSS9PICovCkBAIC02MzIsNyArNjMwLDcgQEAKIAlzd2l0Y2ggKGFkZHItPnNhX2ZhbWlseSkgewogCWNhc2UgQUZfSU5FVDogewogCQlzdHJ1Y3Qgc29ja2FkZHJfaW4gKnNhID0gKHN0cnVjdCBzb2NrYWRkcl9pbiAqKWFkZHI7Ci0JCXJldHVybiBzYS0+c2luX2FkZHIuc19hZGRyICE9IElOQUREUl9BTlk7CisJCXJldHVybiBzYS0+c2luX2FkZHIuc19hZGRyICE9IGh0b25sKElOQUREUl9BTlkpOwogCX0KIAljYXNlIEFGX0lORVQ2OiB7CiAJCXN0cnVjdCBpbjZfYWRkciAqc2EgPSAmKChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopYWRkciktPnNpbjZfYWRkcjsKZGlmZiAtLWdpdCBhL2ZzL25mcy93cml0ZS5jIGIvZnMvbmZzL3dyaXRlLmMKaW5kZXggODBjNjFmZC4uYmVkNjM0MSAxMDA2NDQKLS0tIGEvZnMvbmZzL3dyaXRlLmMKKysrIGIvZnMvbmZzL3dyaXRlLmMKQEAgLTM5LDYgKzM5LDcgQEAKIAkJCQkJICAgIHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50KTsKIHN0YXRpYyB2b2lkIG5mc19wYWdlaW9faW5pdF93cml0ZShzdHJ1Y3QgbmZzX3BhZ2Vpb19kZXNjcmlwdG9yICpkZXNjLAogCQkJCSAgc3RydWN0IGlub2RlICppbm9kZSwgaW50IGlvZmxhZ3MpOworc3RhdGljIHZvaWQgbmZzX3JlZGlydHlfcmVxdWVzdChzdHJ1Y3QgbmZzX3BhZ2UgKnJlcSk7CiBzdGF0aWMgY29uc3Qgc3RydWN0IHJwY19jYWxsX29wcyBuZnNfd3JpdGVfcGFydGlhbF9vcHM7CiBzdGF0aWMgY29uc3Qgc3RydWN0IHJwY19jYWxsX29wcyBuZnNfd3JpdGVfZnVsbF9vcHM7CiBzdGF0aWMgY29uc3Qgc3RydWN0IHJwY19jYWxsX29wcyBuZnNfY29tbWl0X29wczsKQEAgLTI4OCw3ICsyODksMTIgQEAKIAkJQlVHKCk7CiAJfQogCXNwaW5fdW5sb2NrKCZpbm9kZS0+aV9sb2NrKTsKLQluZnNfcGFnZWlvX2FkZF9yZXF1ZXN0KHBnaW8sIHJlcSk7CisJaWYgKCFuZnNfcGFnZWlvX2FkZF9yZXF1ZXN0KHBnaW8sIHJlcSkpIHsKKwkJbmZzX3JlZGlydHlfcmVxdWVzdChyZXEpOworCQluZnNfZW5kX3BhZ2Vfd3JpdGViYWNrKHBhZ2UpOworCQluZnNfY2xlYXJfcGFnZV90YWdfbG9ja2VkKHJlcSk7CisJCXJldHVybiBwZ2lvLT5wZ19lcnJvcjsKKwl9CiAJcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL2ZzL25mc2QvbmZzZmguYyBiL2ZzL25mc2QvbmZzZmguYwppbmRleCAxZWI3NzFkLi4zZTZiM2Y0IDEwMDY0NAotLS0gYS9mcy9uZnNkL25mc2ZoLmMKKysrIGIvZnMvbmZzZC9uZnNmaC5jCkBAIC0yMzIsNiArMjMyLDcgQEAKIAkJZmhwLT5maF9kZW50cnkgPSBkZW50cnk7CiAJCWZocC0+ZmhfZXhwb3J0ID0gZXhwOwogCQluZnNkX25yX3ZlcmlmaWVkKys7CisJCWNhY2hlX2dldCgmZXhwLT5oKTsKIAl9IGVsc2UgewogCQkvKgogCQkgKiBqdXN0IHJlY2hlY2tpbmcgcGVybWlzc2lvbnMKQEAgLTI0MSw2ICsyNDIsNyBAQAogCQlkcHJpbnRrKCJuZnNkOiBmaF92ZXJpZnkgLSBqdXN0IGNoZWNraW5nXG4iKTsKIAkJZGVudHJ5ID0gZmhwLT5maF9kZW50cnk7CiAJCWV4cCA9IGZocC0+ZmhfZXhwb3J0OworCQljYWNoZV9nZXQoJmV4cC0+aCk7CiAJCS8qCiAJCSAqIFNldCB1c2VyIGNyZWRzIGZvciB0aGlzIGV4cG9ydHBvaW50OyBuZWNlc3NhcnkgZXZlbgogCQkgKiBpbiB0aGUgImp1c3QgY2hlY2tpbmciIGNhc2UgYmVjYXVzZSB0aGlzIG1heSBiZSBhCkBAIC0yNTIsOCArMjU0LDYgQEAKIAkJaWYgKGVycm9yKQogCQkJZ290byBvdXQ7CiAJfQotCWNhY2hlX2dldCgmZXhwLT5oKTsKLQogCiAJZXJyb3IgPSBuZnNkX21vZGVfY2hlY2socnFzdHAsIGRlbnRyeS0+ZF9pbm9kZS0+aV9tb2RlLCB0eXBlKTsKIAlpZiAoZXJyb3IpCmRpZmYgLS1naXQgYS9mcy9vcGVuLmMgYi9mcy9vcGVuLmMKaW5kZXggNTQxOTg1My4uM2ZhNGU0ZiAxMDA2NDQKLS0tIGEvZnMvb3Blbi5jCisrKyBiL2ZzL29wZW4uYwpAQCAtMzM1LDcgKzMzNSw3IEBACiB7CiAJbG9uZyByZXQgPSBkb19zeXNfZnRydW5jYXRlKGZkLCBsZW5ndGgsIDEpOwogCS8qIGF2b2lkIFJFR1BBUk0gYnJlYWthZ2Ugb24geDg2OiAqLwotCXByZXZlbnRfdGFpbF9jYWxsKHJldCk7CisJYXNtbGlua2FnZV9wcm90ZWN0KDIsIHJldCwgZmQsIGxlbmd0aCk7CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtMzUwLDcgKzM1MCw3IEBACiB7CiAJbG9uZyByZXQgPSBkb19zeXNfZnRydW5jYXRlKGZkLCBsZW5ndGgsIDApOwogCS8qIGF2b2lkIFJFR1BBUk0gYnJlYWthZ2Ugb24geDg2OiAqLwotCXByZXZlbnRfdGFpbF9jYWxsKHJldCk7CisJYXNtbGlua2FnZV9wcm90ZWN0KDIsIHJldCwgZmQsIGxlbmd0aCk7CiAJcmV0dXJuIHJldDsKIH0KICNlbmRpZgpAQCAtOTAzLDYgKzkwMywxOCBAQAogCWludCBlcnJvcjsKIAlzdHJ1Y3QgZmlsZSAqZjsKIAorCS8qCisJICogV2UgbXVzdCBhbHdheXMgcGFzcyBpbiBhIHZhbGlkIG1vdW50IHBvaW50ZXIuICAgSGlzdG9yaWNhbGx5CisJICogY2FsbGVycyBnb3QgYXdheSB3aXRoIG5vdCBwYXNzaW5nIGl0LCBidXQgd2UgbXVzdCBlbmZvcmNlIHRoaXMgYXQKKwkgKiB0aGUgZWFybGllc3QgcG9zc2libGUgcG9pbnQgbm93IHRvIGF2b2lkIHN0cmFuZ2UgcHJvYmxlbXMgZGVlcCBpbiB0aGUKKwkgKiBmaWxlc3lzdGVtIHN0YWNrLgorCSAqLworCWlmICghbW50KSB7CisJCXByaW50ayhLRVJOX1dBUk5JTkcgIiVzIGNhbGxlZCB3aXRoIE5VTEwgdmZzbW91bnRcbiIsIF9fZnVuY19fKTsKKwkJZHVtcF9zdGFjaygpOworCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKKwl9CisKIAllcnJvciA9IC1FTkZJTEU7CiAJZiA9IGdldF9lbXB0eV9maWxwKCk7CiAJaWYgKGYgPT0gTlVMTCkgewpAQCAtMTA1NSw3ICsxMDY3LDcgQEAKIAogCXJldCA9IGRvX3N5c19vcGVuKEFUX0ZEQ1dELCBmaWxlbmFtZSwgZmxhZ3MsIG1vZGUpOwogCS8qIGF2b2lkIFJFR1BBUk0gYnJlYWthZ2Ugb24geDg2OiAqLwotCXByZXZlbnRfdGFpbF9jYWxsKHJldCk7CisJYXNtbGlua2FnZV9wcm90ZWN0KDMsIHJldCwgZmlsZW5hbWUsIGZsYWdzLCBtb2RlKTsKIAlyZXR1cm4gcmV0OwogfQogCkBAIC0xMDY5LDcgKzEwODEsNyBAQAogCiAJcmV0ID0gZG9fc3lzX29wZW4oZGZkLCBmaWxlbmFtZSwgZmxhZ3MsIG1vZGUpOwogCS8qIGF2b2lkIFJFR1BBUk0gYnJlYWthZ2Ugb24geDg2OiAqLwotCXByZXZlbnRfdGFpbF9jYWxsKHJldCk7CisJYXNtbGlua2FnZV9wcm90ZWN0KDQsIHJldCwgZGZkLCBmaWxlbmFtZSwgZmxhZ3MsIG1vZGUpOwogCXJldHVybiByZXQ7CiB9CiAKZGlmZiAtLWdpdCBhL2ZzL3BpcGUuYyBiL2ZzL3BpcGUuYwppbmRleCAzYzE4NWI2Li44YmUzODFiIDEwMDY0NAotLS0gYS9mcy9waXBlLmMKKysrIGIvZnMvcGlwZS5jCkBAIC05NTcsMTMgKzk1NywxMCBAQAogCXN0cnVjdCBkZW50cnkgKmRlbnRyeTsKIAlzdHJ1Y3QgcXN0ciBuYW1lID0geyAubmFtZSA9ICIiIH07CiAKLQlmID0gZ2V0X2VtcHR5X2ZpbHAoKTsKLQlpZiAoIWYpCi0JCXJldHVybiBFUlJfUFRSKC1FTkZJTEUpOwogCWVyciA9IC1FTkZJTEU7CiAJaW5vZGUgPSBnZXRfcGlwZV9pbm9kZSgpOwogCWlmICghaW5vZGUpCi0JCWdvdG8gZXJyX2ZpbGU7CisJCWdvdG8gZXJyOwogCiAJZXJyID0gLUVOT01FTTsKIAlkZW50cnkgPSBkX2FsbG9jKHBpcGVfbW50LT5tbnRfc2ItPnNfcm9vdCwgJm5hbWUpOwpAQCAtOTc4LDIyICs5NzUsMjQgQEAKIAkgKi8KIAlkZW50cnktPmRfZmxhZ3MgJj0gfkRDQUNIRV9VTkhBU0hFRDsKIAlkX2luc3RhbnRpYXRlKGRlbnRyeSwgaW5vZGUpOwotCWYtPmZfcGF0aC5tbnQgPSBtbnRnZXQocGlwZV9tbnQpOwotCWYtPmZfcGF0aC5kZW50cnkgPSBkZW50cnk7CisKKwllcnIgPSAtRU5GSUxFOworCWYgPSBhbGxvY19maWxlKHBpcGVfbW50LCBkZW50cnksIEZNT0RFX1dSSVRFLCAmd3JpdGVfcGlwZV9mb3BzKTsKKwlpZiAoIWYpCisJCWdvdG8gZXJyX2RlbnRyeTsKIAlmLT5mX21hcHBpbmcgPSBpbm9kZS0+aV9tYXBwaW5nOwogCiAJZi0+Zl9mbGFncyA9IE9fV1JPTkxZOwotCWYtPmZfb3AgPSAmd3JpdGVfcGlwZV9mb3BzOwotCWYtPmZfbW9kZSA9IEZNT0RFX1dSSVRFOwogCWYtPmZfdmVyc2lvbiA9IDA7CiAKIAlyZXR1cm4gZjsKIAorIGVycl9kZW50cnk6CisJZHB1dChkZW50cnkpOwogIGVycl9pbm9kZToKIAlmcmVlX3BpcGVfaW5mbyhpbm9kZSk7CiAJaXB1dChpbm9kZSk7Ci0gZXJyX2ZpbGU6Ci0JcHV0X2ZpbHAoZik7CisgZXJyOgogCXJldHVybiBFUlJfUFRSKGVycik7CiB9CiAKZGlmZiAtLWdpdCBhL2ZzL3Bub2RlLmMgYi9mcy9wbm9kZS5jCmluZGV4IDA1YmE2OTIuLjFkOGY1NDQgMTAwNjQ0Ci0tLSBhL2ZzL3Bub2RlLmMKKysrIGIvZnMvcG5vZGUuYwpAQCAtMjI1LDcgKzIyNSw3IEBACiAgKi8KIHN0YXRpYyBpbmxpbmUgaW50IGRvX3JlZmNvdW50X2NoZWNrKHN0cnVjdCB2ZnNtb3VudCAqbW50LCBpbnQgY291bnQpCiB7Ci0JaW50IG15Y291bnQgPSBhdG9taWNfcmVhZCgmbW50LT5tbnRfY291bnQpOworCWludCBteWNvdW50ID0gYXRvbWljX3JlYWQoJm1udC0+bW50X2NvdW50KSAtIG1udC0+bW50X2dob3N0czsKIAlyZXR1cm4gKG15Y291bnQgPiBjb3VudCk7CiB9CiAKZGlmZiAtLWdpdCBhL2ZzL3Byb2MvYmFzZS5jIGIvZnMvcHJvYy9iYXNlLmMKaW5kZXggOTFhMWJkNi4uODFkN2QxNCAxMDA2NDQKLS0tIGEvZnMvcHJvYy9iYXNlLmMKKysrIGIvZnMvcHJvYy9iYXNlLmMKQEAgLTEwMzYsNiArMTAzNiwyNiBAQAogCS5yZWFkCQk9IHByb2NfbG9naW51aWRfcmVhZCwKIAkud3JpdGUJCT0gcHJvY19sb2dpbnVpZF93cml0ZSwKIH07CisKK3N0YXRpYyBzc2l6ZV90IHByb2Nfc2Vzc2lvbmlkX3JlYWQoc3RydWN0IGZpbGUgKiBmaWxlLCBjaGFyIF9fdXNlciAqIGJ1ZiwKKwkJCQkgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKQoreworCXN0cnVjdCBpbm9kZSAqIGlub2RlID0gZmlsZS0+Zl9wYXRoLmRlbnRyeS0+ZF9pbm9kZTsKKwlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2sgPSBnZXRfcHJvY190YXNrKGlub2RlKTsKKwlzc2l6ZV90IGxlbmd0aDsKKwljaGFyIHRtcGJ1ZltUTVBCVUZMRU5dOworCisJaWYgKCF0YXNrKQorCQlyZXR1cm4gLUVTUkNIOworCWxlbmd0aCA9IHNjbnByaW50Zih0bXBidWYsIFRNUEJVRkxFTiwgIiV1IiwKKwkJCQlhdWRpdF9nZXRfc2Vzc2lvbmlkKHRhc2spKTsKKwlwdXRfdGFza19zdHJ1Y3QodGFzayk7CisJcmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKGJ1ZiwgY291bnQsIHBwb3MsIHRtcGJ1ZiwgbGVuZ3RoKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcHJvY19zZXNzaW9uaWRfb3BlcmF0aW9ucyA9IHsKKwkucmVhZAkJPSBwcm9jX3Nlc3Npb25pZF9yZWFkLAorfTsKICNlbmRpZgogCiAjaWZkZWYgQ09ORklHX0ZBVUxUX0lOSkVDVElPTgpAQCAtMjI2OSw2ICsyMjg5LDkgQEAKIAlESVIoInRhc2siLCAgICAgICBTX0lSVUdPfFNfSVhVR08sIHRhc2spLAogCURJUigiZmQiLCAgICAgICAgIFNfSVJVU1J8U19JWFVTUiwgZmQpLAogCURJUigiZmRpbmZvIiwgICAgIFNfSVJVU1J8U19JWFVTUiwgZmRpbmZvKSwKKyNpZmRlZiBDT05GSUdfTkVUCisJRElSKCJuZXQiLCAgICAgICAgU19JUlVHT3xTX0lYVUdPLCBuZXQpLAorI2VuZGlmCiAJUkVHKCJlbnZpcm9uIiwgICAgU19JUlVTUiwgZW52aXJvbiksCiAJSU5GKCJhdXh2IiwgICAgICAgU19JUlVTUiwgcGlkX2F1eHYpLAogCU9ORSgic3RhdHVzIiwgICAgIFNfSVJVR08sIHBpZF9zdGF0dXMpLApAQCAtMjMxNiw2ICsyMzM5LDcgQEAKIAlSRUcoIm9vbV9hZGoiLCAgICBTX0lSVUdPfFNfSVdVU1IsIG9vbV9hZGp1c3QpLAogI2lmZGVmIENPTkZJR19BVURJVFNZU0NBTEwKIAlSRUcoImxvZ2ludWlkIiwgICBTX0lXVVNSfFNfSVJVR08sIGxvZ2ludWlkKSwKKwlSRUcoInNlc3Npb25pZCIsICBTX0lSVVNSLCBzZXNzaW9uaWQpLAogI2VuZGlmCiAjaWZkZWYgQ09ORklHX0ZBVUxUX0lOSkVDVElPTgogCVJFRygibWFrZS1pdC1mYWlsIiwgU19JUlVHT3xTX0lXVVNSLCBmYXVsdF9pbmplY3QpLApAQCAtMjY0Niw2ICsyNjcwLDcgQEAKIAlSRUcoIm9vbV9hZGoiLCAgIFNfSVJVR098U19JV1VTUiwgb29tX2FkanVzdCksCiAjaWZkZWYgQ09ORklHX0FVRElUU1lTQ0FMTAogCVJFRygibG9naW51aWQiLCAgU19JV1VTUnxTX0lSVUdPLCBsb2dpbnVpZCksCisJUkVHKCJzZXNzaW9uaWQiLCAgU19JUlVTUiwgc2Vzc2lvbmlkKSwKICNlbmRpZgogI2lmZGVmIENPTkZJR19GQVVMVF9JTkpFQ1RJT04KIAlSRUcoIm1ha2UtaXQtZmFpbCIsIFNfSVJVR098U19JV1VTUiwgZmF1bHRfaW5qZWN0KSwKZGlmZiAtLWdpdCBhL2ZzL3Byb2MvZ2VuZXJpYy5jIGIvZnMvcHJvYy9nZW5lcmljLmMKaW5kZXggNjg5NzFlNi4uYTM2YWQzYyAxMDA2NDQKLS0tIGEvZnMvcHJvYy9nZW5lcmljLmMKKysrIGIvZnMvcHJvYy9nZW5lcmljLmMKQEAgLTM3NywxNSArMzc3LDE0IEBACiAgKiBEb24ndCBjcmVhdGUgbmVnYXRpdmUgZGVudHJpZXMgaGVyZSwgcmV0dXJuIC1FTk9FTlQgYnkgaGFuZAogICogaW5zdGVhZC4KICAqLwotc3RydWN0IGRlbnRyeSAqcHJvY19sb29rdXAoc3RydWN0IGlub2RlICogZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBuYW1laWRhdGEgKm5kKQorc3RydWN0IGRlbnRyeSAqcHJvY19sb29rdXBfZGUoc3RydWN0IHByb2NfZGlyX2VudHJ5ICpkZSwgc3RydWN0IGlub2RlICpkaXIsCisJCXN0cnVjdCBkZW50cnkgKmRlbnRyeSkKIHsKIAlzdHJ1Y3QgaW5vZGUgKmlub2RlID0gTlVMTDsKLQlzdHJ1Y3QgcHJvY19kaXJfZW50cnkgKiBkZTsKIAlpbnQgZXJyb3IgPSAtRU5PRU5UOwogCiAJbG9ja19rZXJuZWwoKTsKIAlzcGluX2xvY2soJnByb2Nfc3ViZGlyX2xvY2spOwotCWRlID0gUERFKGRpcik7CiAJaWYgKGRlKSB7CiAJCWZvciAoZGUgPSBkZS0+c3ViZGlyOyBkZSA7IGRlID0gZGUtPm5leHQpIHsKIAkJCWlmIChkZS0+bmFtZWxlbiAhPSBkZW50cnktPmRfbmFtZS5sZW4pCkBAIC0zOTMsOCArMzkyLDYgQEAKIAkJCWlmICghbWVtY21wKGRlbnRyeS0+ZF9uYW1lLm5hbWUsIGRlLT5uYW1lLCBkZS0+bmFtZWxlbikpIHsKIAkJCQl1bnNpZ25lZCBpbnQgaW5vOwogCi0JCQkJaWYgKGRlLT5zaGFkb3dfcHJvYykKLQkJCQkJZGUgPSBkZS0+c2hhZG93X3Byb2MoY3VycmVudCwgZGUpOwogCQkJCWlubyA9IGRlLT5sb3dfaW5vOwogCQkJCWRlX2dldChkZSk7CiAJCQkJc3Bpbl91bmxvY2soJnByb2Nfc3ViZGlyX2xvY2spOwpAQCAtNDE3LDYgKzQxNCwxMiBAQAogCXJldHVybiBFUlJfUFRSKGVycm9yKTsKIH0KIAorc3RydWN0IGRlbnRyeSAqcHJvY19sb29rdXAoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwKKwkJc3RydWN0IG5hbWVpZGF0YSAqbmQpCit7CisJcmV0dXJuIHByb2NfbG9va3VwX2RlKFBERShkaXIpLCBkaXIsIGRlbnRyeSk7Cit9CisKIC8qCiAgKiBUaGlzIHJldHVybnMgbm9uLXplcm8gaWYgYXQgRU9GLCBzbyB0aGF0IHRoZSAvcHJvYwogICogcm9vdCBkaXJlY3RvcnkgY2FuIHVzZSB0aGlzIGFuZCBjaGVjayBpZiBpdCBzaG91bGQKQEAgLTQyNiwxMCArNDI5LDkgQEAKICAqIHZhbHVlIG9mIHRoZSByZWFkZGlyKCkgY2FsbCwgYXMgbG9uZyBhcyBpdCdzIG5vbi1uZWdhdGl2ZQogICogZm9yIHN1Y2Nlc3MuLgogICovCi1pbnQgcHJvY19yZWFkZGlyKHN0cnVjdCBmaWxlICogZmlscCwKLQl2b2lkICogZGlyZW50LCBmaWxsZGlyX3QgZmlsbGRpcikKK2ludCBwcm9jX3JlYWRkaXJfZGUoc3RydWN0IHByb2NfZGlyX2VudHJ5ICpkZSwgc3RydWN0IGZpbGUgKmZpbHAsIHZvaWQgKmRpcmVudCwKKwkJZmlsbGRpcl90IGZpbGxkaXIpCiB7Ci0Jc3RydWN0IHByb2NfZGlyX2VudHJ5ICogZGU7CiAJdW5zaWduZWQgaW50IGlubzsKIAlpbnQgaTsKIAlzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZmlscC0+Zl9wYXRoLmRlbnRyeS0+ZF9pbm9kZTsKQEAgLTQzOCw3ICs0NDAsNiBAQAogCWxvY2tfa2VybmVsKCk7CiAKIAlpbm8gPSBpbm9kZS0+aV9pbm87Ci0JZGUgPSBQREUoaW5vZGUpOwogCWlmICghZGUpIHsKIAkJcmV0ID0gLUVJTlZBTDsKIAkJZ290byBvdXQ7CkBAIC00OTksNiArNTAwLDEzIEBACiAJcmV0dXJuIHJldDsJCiB9CiAKK2ludCBwcm9jX3JlYWRkaXIoc3RydWN0IGZpbGUgKmZpbHAsIHZvaWQgKmRpcmVudCwgZmlsbGRpcl90IGZpbGxkaXIpCit7CisJc3RydWN0IGlub2RlICppbm9kZSA9IGZpbHAtPmZfcGF0aC5kZW50cnktPmRfaW5vZGU7CisKKwlyZXR1cm4gcHJvY19yZWFkZGlyX2RlKFBERShpbm9kZSksIGZpbHAsIGRpcmVudCwgZmlsbGRpcik7Cit9CisKIC8qCiAgKiBUaGVzZSBhcmUgdGhlIGdlbmVyaWMgL3Byb2MgZGlyZWN0b3J5IG9wZXJhdGlvbnMuIFRoZXkKICAqIHVzZSB0aGUgaW4tbWVtb3J5ICJzdHJ1Y3QgcHJvY19kaXJfZW50cnkiIHRyZWUgdG8gcGFyc2UKZGlmZiAtLWdpdCBhL2ZzL3Byb2MvaW50ZXJuYWwuaCBiL2ZzL3Byb2MvaW50ZXJuYWwuaAppbmRleCAxYzgxYzhmLi5iYzcyZjVjIDEwMDY0NAotLS0gYS9mcy9wcm9jL2ludGVybmFsLmgKKysrIGIvZnMvcHJvYy9pbnRlcm5hbC5oCkBAIC02NCw2ICs2NCw4IEBACiBleHRlcm4gY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBwcm9jX3NtYXBzX29wZXJhdGlvbnM7CiBleHRlcm4gY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBwcm9jX2NsZWFyX3JlZnNfb3BlcmF0aW9uczsKIGV4dGVybiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHByb2NfcGFnZW1hcF9vcGVyYXRpb25zOworZXh0ZXJuIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcHJvY19uZXRfb3BlcmF0aW9uczsKK2V4dGVybiBjb25zdCBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBwcm9jX25ldF9pbm9kZV9vcGVyYXRpb25zOwogCiB2b2lkIGZyZWVfcHJvY19lbnRyeShzdHJ1Y3QgcHJvY19kaXJfZW50cnkgKmRlKTsKIApAQCAtODMsMyArODUsOCBAQAogewogCXJldHVybiBQUk9DX0koaW5vZGUpLT5mZDsKIH0KKworc3RydWN0IGRlbnRyeSAqcHJvY19sb29rdXBfZGUoc3RydWN0IHByb2NfZGlyX2VudHJ5ICpkZSwgc3RydWN0IGlub2RlICppbm8sCisJCXN0cnVjdCBkZW50cnkgKmRlbnRyeSk7CitpbnQgcHJvY19yZWFkZGlyX2RlKHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqZGUsIHN0cnVjdCBmaWxlICpmaWxwLCB2b2lkICpkaXJlbnQsCisJCWZpbGxkaXJfdCBmaWxsZGlyKTsKZGlmZiAtLWdpdCBhL2ZzL3Byb2MvcHJvY19uZXQuYyBiL2ZzL3Byb2MvcHJvY19uZXQuYwppbmRleCAxNGU5YjVhLi40Y2FhNWY3IDEwMDY0NAotLS0gYS9mcy9wcm9jL3Byb2NfbmV0LmMKKysrIGIvZnMvcHJvYy9wcm9jX25ldC5jCkBAIC02Myw2ICs2Myw4MiBAQAogfQogRVhQT1JUX1NZTUJPTF9HUEwoc2VxX3JlbGVhc2VfbmV0KTsKIAorc3RhdGljIHN0cnVjdCBuZXQgKmdldF9wcm9jX3Rhc2tfbmV0KHN0cnVjdCBpbm9kZSAqZGlyKQoreworCXN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzazsKKwlzdHJ1Y3QgbnNwcm94eSAqbnM7CisJc3RydWN0IG5ldCAqbmV0ID0gTlVMTDsKKworCXJjdV9yZWFkX2xvY2soKTsKKwl0YXNrID0gcGlkX3Rhc2socHJvY19waWQoZGlyKSwgUElEVFlQRV9QSUQpOworCWlmICh0YXNrICE9IE5VTEwpIHsKKwkJbnMgPSB0YXNrX25zcHJveHkodGFzayk7CisJCWlmIChucyAhPSBOVUxMKQorCQkJbmV0ID0gZ2V0X25ldChucy0+bmV0X25zKTsKKwl9CisJcmN1X3JlYWRfdW5sb2NrKCk7CisKKwlyZXR1cm4gbmV0OworfQorCitzdGF0aWMgc3RydWN0IGRlbnRyeSAqcHJvY190Z2lkX25ldF9sb29rdXAoc3RydWN0IGlub2RlICpkaXIsCisJCXN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IG5hbWVpZGF0YSAqbmQpCit7CisJc3RydWN0IGRlbnRyeSAqZGU7CisJc3RydWN0IG5ldCAqbmV0OworCisJZGUgPSBFUlJfUFRSKC1FTk9FTlQpOworCW5ldCA9IGdldF9wcm9jX3Rhc2tfbmV0KGRpcik7CisJaWYgKG5ldCAhPSBOVUxMKSB7CisJCWRlID0gcHJvY19sb29rdXBfZGUobmV0LT5wcm9jX25ldCwgZGlyLCBkZW50cnkpOworCQlwdXRfbmV0KG5ldCk7CisJfQorCXJldHVybiBkZTsKK30KKworc3RhdGljIGludCBwcm9jX3RnaWRfbmV0X2dldGF0dHIoc3RydWN0IHZmc21vdW50ICptbnQsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwKKwkJc3RydWN0IGtzdGF0ICpzdGF0KQoreworCXN0cnVjdCBpbm9kZSAqaW5vZGUgPSBkZW50cnktPmRfaW5vZGU7CisJc3RydWN0IG5ldCAqbmV0OworCisJbmV0ID0gZ2V0X3Byb2NfdGFza19uZXQoaW5vZGUpOworCisJZ2VuZXJpY19maWxsYXR0cihpbm9kZSwgc3RhdCk7CisKKwlpZiAobmV0ICE9IE5VTEwpIHsKKwkJc3RhdC0+bmxpbmsgPSBuZXQtPnByb2NfbmV0LT5ubGluazsKKwkJcHV0X25ldChuZXQpOworCX0KKworCXJldHVybiAwOworfQorCitjb25zdCBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBwcm9jX25ldF9pbm9kZV9vcGVyYXRpb25zID0geworCS5sb29rdXAJCT0gcHJvY190Z2lkX25ldF9sb29rdXAsCisJLmdldGF0dHIJPSBwcm9jX3RnaWRfbmV0X2dldGF0dHIsCit9OworCitzdGF0aWMgaW50IHByb2NfdGdpZF9uZXRfcmVhZGRpcihzdHJ1Y3QgZmlsZSAqZmlscCwgdm9pZCAqZGlyZW50LAorCQlmaWxsZGlyX3QgZmlsbGRpcikKK3sKKwlpbnQgcmV0OworCXN0cnVjdCBuZXQgKm5ldDsKKworCXJldCA9IC1FSU5WQUw7CisJbmV0ID0gZ2V0X3Byb2NfdGFza19uZXQoZmlscC0+Zl9wYXRoLmRlbnRyeS0+ZF9pbm9kZSk7CisJaWYgKG5ldCAhPSBOVUxMKSB7CisJCXJldCA9IHByb2NfcmVhZGRpcl9kZShuZXQtPnByb2NfbmV0LCBmaWxwLCBkaXJlbnQsIGZpbGxkaXIpOworCQlwdXRfbmV0KG5ldCk7CisJfQorCXJldHVybiByZXQ7Cit9CisKK2NvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcHJvY19uZXRfb3BlcmF0aW9ucyA9IHsKKwkucmVhZAkJPSBnZW5lcmljX3JlYWRfZGlyLAorCS5yZWFkZGlyCT0gcHJvY190Z2lkX25ldF9yZWFkZGlyLAorfTsKKwogCiBzdHJ1Y3QgcHJvY19kaXJfZW50cnkgKnByb2NfbmV0X2ZvcHNfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwKIAljb25zdCBjaGFyICpuYW1lLCBtb2RlX3QgbW9kZSwgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyAqZm9wcykKQEAgLTgzLDE0ICsxNTksNiBAQAogfQogRVhQT1JUX1NZTUJPTF9HUEwoZ2V0X3Byb2NfbmV0KTsKIAotc3RhdGljIHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqc2hhZG93X3BkZTsKLQotc3RhdGljIHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqcHJvY19uZXRfc2hhZG93KHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywKLQkJCQkJCXN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqZGUpCi17Ci0JcmV0dXJuIHRhc2stPm5zcHJveHktPm5ldF9ucy0+cHJvY19uZXQ7Ci19Ci0KIHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqcHJvY19uZXRfbWtkaXIoc3RydWN0IG5ldCAqbmV0LCBjb25zdCBjaGFyICpuYW1lLAogCQlzdHJ1Y3QgcHJvY19kaXJfZW50cnkgKnBhcmVudCkKIHsKQEAgLTEwNCw0NSArMTcyLDM5IEBACiAKIHN0YXRpYyBfX25ldF9pbml0IGludCBwcm9jX25ldF9uc19pbml0KHN0cnVjdCBuZXQgKm5ldCkKIHsKLQlzdHJ1Y3QgcHJvY19kaXJfZW50cnkgKnJvb3QsICpuZXRkLCAqbmV0X3N0YXRkOworCXN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqbmV0ZCwgKm5ldF9zdGF0ZDsKIAlpbnQgZXJyOwogCiAJZXJyID0gLUVOT01FTTsKLQlyb290ID0ga3phbGxvYyhzaXplb2YoKnJvb3QpLCBHRlBfS0VSTkVMKTsKLQlpZiAoIXJvb3QpCisJbmV0ZCA9IGt6YWxsb2Moc2l6ZW9mKCpuZXRkKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFuZXRkKQogCQlnb3RvIG91dDsKIAotCWVyciA9IC1FRVhJU1Q7Ci0JbmV0ZCA9IHByb2NfbmV0X21rZGlyKG5ldCwgIm5ldCIsIHJvb3QpOwotCWlmICghbmV0ZCkKLQkJZ290byBmcmVlX3Jvb3Q7CisJbmV0ZC0+ZGF0YSA9IG5ldDsKKwluZXRkLT5ubGluayA9IDI7CisJbmV0ZC0+bmFtZSA9ICJuZXQiOworCW5ldGQtPm5hbWVsZW4gPSAzOworCW5ldGQtPnBhcmVudCA9ICZwcm9jX3Jvb3Q7CiAKIAllcnIgPSAtRUVYSVNUOwogCW5ldF9zdGF0ZCA9IHByb2NfbmV0X21rZGlyKG5ldCwgInN0YXQiLCBuZXRkKTsKIAlpZiAoIW5ldF9zdGF0ZCkKIAkJZ290byBmcmVlX25ldDsKIAotCXJvb3QtPmRhdGEgPSBuZXQ7Ci0KLQluZXQtPnByb2NfbmV0X3Jvb3QgPSByb290OwogCW5ldC0+cHJvY19uZXQgPSBuZXRkOwogCW5ldC0+cHJvY19uZXRfc3RhdCA9IG5ldF9zdGF0ZDsKLQllcnIgPSAwOworCXJldHVybiAwOwogCitmcmVlX25ldDoKKwlrZnJlZShuZXRkKTsKIG91dDoKIAlyZXR1cm4gZXJyOwotZnJlZV9uZXQ6Ci0JcmVtb3ZlX3Byb2NfZW50cnkoIm5ldCIsIHJvb3QpOwotZnJlZV9yb290OgotCWtmcmVlKHJvb3QpOwotCWdvdG8gb3V0OwogfQogCiBzdGF0aWMgX19uZXRfZXhpdCB2b2lkIHByb2NfbmV0X25zX2V4aXQoc3RydWN0IG5ldCAqbmV0KQogewogCXJlbW92ZV9wcm9jX2VudHJ5KCJzdGF0IiwgbmV0LT5wcm9jX25ldCk7Ci0JcmVtb3ZlX3Byb2NfZW50cnkoIm5ldCIsIG5ldC0+cHJvY19uZXRfcm9vdCk7Ci0Ja2ZyZWUobmV0LT5wcm9jX25ldF9yb290KTsKKwlrZnJlZShuZXQtPnByb2NfbmV0KTsKIH0KIAogc3RhdGljIHN0cnVjdCBwZXJuZXRfb3BlcmF0aW9ucyBfX25ldF9pbml0ZGF0YSBwcm9jX25ldF9uc19vcHMgPSB7CkBAIC0xNTIsOCArMjE0LDcgQEAKIAogaW50IF9faW5pdCBwcm9jX25ldF9pbml0KHZvaWQpCiB7Ci0Jc2hhZG93X3BkZSA9IHByb2NfbWtkaXIoIm5ldCIsIE5VTEwpOwotCXNoYWRvd19wZGUtPnNoYWRvd19wcm9jID0gcHJvY19uZXRfc2hhZG93OworCXByb2Nfc3ltbGluaygibmV0IiwgTlVMTCwgInNlbGYvbmV0Iik7CiAKIAlyZXR1cm4gcmVnaXN0ZXJfcGVybmV0X3N1YnN5cygmcHJvY19uZXRfbnNfb3BzKTsKIH0KZGlmZiAtLWdpdCBhL2ZzL3Byb2MvdGFza19tbXUuYyBiL2ZzL3Byb2MvdGFza19tbXUuYwppbmRleCA2ZGMwMzM0Li45ZGZiNWZmIDEwMDY0NAotLS0gYS9mcy9wcm9jL3Rhc2tfbW11LmMKKysrIGIvZnMvcHJvYy90YXNrX21tdS5jCkBAIC01MjcsMTMgKzUyNywyMSBAQAogCWNoYXIgX191c2VyICpvdXQsICplbmQ7CiB9OwogCi0jZGVmaW5lIFBNX0VOVFJZX0JZVEVTIHNpemVvZih1NjQpCi0jZGVmaW5lIFBNX1JFU0VSVkVEX0JJVFMgICAgMwotI2RlZmluZSBQTV9SRVNFUlZFRF9PRkZTRVQgICg2NCAtIFBNX1JFU0VSVkVEX0JJVFMpCi0jZGVmaW5lIFBNX1JFU0VSVkVEX01BU0sgICAgKCgoMUxMPDxQTV9SRVNFUlZFRF9CSVRTKS0xKSA8PCBQTV9SRVNFUlZFRF9PRkZTRVQpCi0jZGVmaW5lIFBNX1NQRUNJQUwobnIpICAgICAgKCgobnIpIDw8IFBNX1JFU0VSVkVEX09GRlNFVCkgJiBQTV9SRVNFUlZFRF9NQVNLKQotI2RlZmluZSBQTV9OT1RfUFJFU0VOVCAgICAgIFBNX1NQRUNJQUwoMUxMKQotI2RlZmluZSBQTV9TV0FQICAgICAgICAgICAgIFBNX1NQRUNJQUwoMkxMKQorI2RlZmluZSBQTV9FTlRSWV9CWVRFUyAgICAgIHNpemVvZih1NjQpCisjZGVmaW5lIFBNX1NUQVRVU19CSVRTICAgICAgMworI2RlZmluZSBQTV9TVEFUVVNfT0ZGU0VUICAgICg2NCAtIFBNX1NUQVRVU19CSVRTKQorI2RlZmluZSBQTV9TVEFUVVNfTUFTSyAgICAgICgoKDFMTCA8PCBQTV9TVEFUVVNfQklUUykgLSAxKSA8PCBQTV9TVEFUVVNfT0ZGU0VUKQorI2RlZmluZSBQTV9TVEFUVVMobnIpICAgICAgICgoKG5yKSA8PCBQTV9TVEFUVVNfT0ZGU0VUKSAmIFBNX1NUQVRVU19NQVNLKQorI2RlZmluZSBQTV9QU0hJRlRfQklUUyAgICAgIDYKKyNkZWZpbmUgUE1fUFNISUZUX09GRlNFVCAgICAoUE1fU1RBVFVTX09GRlNFVCAtIFBNX1BTSElGVF9CSVRTKQorI2RlZmluZSBQTV9QU0hJRlRfTUFTSyAgICAgICgoKDFMTCA8PCBQTV9QU0hJRlRfQklUUykgLSAxKSA8PCBQTV9QU0hJRlRfT0ZGU0VUKQorI2RlZmluZSBQTV9QU0hJRlQoeCkgICAgICAgICgoKHU2NCkgKHgpIDw8IFBNX1BTSElGVF9PRkZTRVQpICYgUE1fUFNISUZUX01BU0spCisjZGVmaW5lIFBNX1BGUkFNRV9NQVNLICAgICAgKCgxTEwgPDwgUE1fUFNISUZUX09GRlNFVCkgLSAxKQorI2RlZmluZSBQTV9QRlJBTUUoeCkgICAgICAgICgoeCkgJiBQTV9QRlJBTUVfTUFTSykKKworI2RlZmluZSBQTV9QUkVTRU5UICAgICAgICAgIFBNX1NUQVRVUyg0TEwpCisjZGVmaW5lIFBNX1NXQVAgICAgICAgICAgICAgUE1fU1RBVFVTKDJMTCkKKyNkZWZpbmUgUE1fTk9UX1BSRVNFTlQgICAgICBQTV9QU0hJRlQoUEFHRV9TSElGVCkKICNkZWZpbmUgUE1fRU5EX09GX0JVRkZFUiAgICAxCiAKIHN0YXRpYyBpbnQgYWRkX3RvX3BhZ2VtYXAodW5zaWduZWQgbG9uZyBhZGRyLCB1NjQgcGZuLApAQCAtNTc0LDcgKzU4Miw3IEBACiB1NjQgc3dhcF9wdGVfdG9fcGFnZW1hcF9lbnRyeShwdGVfdCBwdGUpCiB7CiAJc3dwX2VudHJ5X3QgZSA9IHB0ZV90b19zd3BfZW50cnkocHRlKTsKLQlyZXR1cm4gUE1fU1dBUCB8IHN3cF90eXBlKGUpIHwgKHN3cF9vZmZzZXQoZSkgPDwgTUFYX1NXQVBGSUxFU19TSElGVCk7CisJcmV0dXJuIHN3cF90eXBlKGUpIHwgKHN3cF9vZmZzZXQoZSkgPDwgTUFYX1NXQVBGSUxFU19TSElGVCk7CiB9CiAKIHN0YXRpYyBpbnQgcGFnZW1hcF9wdGVfcmFuZ2UocG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIGVuZCwKQEAgLTU4OCw5ICs1OTYsMTEgQEAKIAkJdTY0IHBmbiA9IFBNX05PVF9QUkVTRU5UOwogCQlwdGUgPSBwdGVfb2Zmc2V0X21hcChwbWQsIGFkZHIpOwogCQlpZiAoaXNfc3dhcF9wdGUoKnB0ZSkpCi0JCQlwZm4gPSBzd2FwX3B0ZV90b19wYWdlbWFwX2VudHJ5KCpwdGUpOworCQkJcGZuID0gUE1fUEZSQU1FKHN3YXBfcHRlX3RvX3BhZ2VtYXBfZW50cnkoKnB0ZSkpCisJCQkJfCBQTV9QU0hJRlQoUEFHRV9TSElGVCkgfCBQTV9TV0FQOwogCQllbHNlIGlmIChwdGVfcHJlc2VudCgqcHRlKSkKLQkJCXBmbiA9IHB0ZV9wZm4oKnB0ZSk7CisJCQlwZm4gPSBQTV9QRlJBTUUocHRlX3BmbigqcHRlKSkKKwkJCQl8IFBNX1BTSElGVChQQUdFX1NISUZUKSB8IFBNX1BSRVNFTlQ7CiAJCS8qIHVubWFwIHNvIHdlJ3JlIG5vdCBpbiBhdG9taWMgd2hlbiB3ZSBjb3B5IHRvIHVzZXJzcGFjZSAqLwogCQlwdGVfdW5tYXAocHRlKTsKIAkJZXJyID0gYWRkX3RvX3BhZ2VtYXAoYWRkciwgcGZuLCBwbSk7CkBAIC02MTEsMTIgKzYyMSwyMCBAQAogLyoKICAqIC9wcm9jL3BpZC9wYWdlbWFwIC0gYW4gYXJyYXkgbWFwcGluZyB2aXJ0dWFsIHBhZ2VzIHRvIHBmbnMKICAqCi0gKiBGb3IgZWFjaCBwYWdlIGluIHRoZSBhZGRyZXNzIHNwYWNlLCB0aGlzIGZpbGUgY29udGFpbnMgb25lIDY0LWJpdAotICogZW50cnkgcmVwcmVzZW50aW5nIHRoZSBjb3JyZXNwb25kaW5nIHBoeXNpY2FsIHBhZ2UgZnJhbWUgbnVtYmVyCi0gKiAoUEZOKSBpZiB0aGUgcGFnZSBpcyBwcmVzZW50LiBJZiB0aGVyZSBpcyBhIHN3YXAgZW50cnkgZm9yIHRoZQotICogcGh5c2ljYWwgcGFnZSwgdGhlbiBhbiBlbmNvZGluZyBvZiB0aGUgc3dhcCBmaWxlIG51bWJlciBhbmQgdGhlCi0gKiBwYWdlJ3Mgb2Zmc2V0IGludG8gdGhlIHN3YXAgZmlsZSBhcmUgcmV0dXJuZWQuIElmIG5vIHBhZ2UgaXMKLSAqIHByZXNlbnQgYXQgYWxsLCBQTV9OT1RfUFJFU0VOVCBpcyByZXR1cm5lZC4gVGhpcyBhbGxvd3MgZGV0ZXJtaW5pbmcKKyAqIEZvciBlYWNoIHBhZ2UgaW4gdGhlIGFkZHJlc3Mgc3BhY2UsIHRoaXMgZmlsZSBjb250YWlucyBvbmUgNjQtYml0IGVudHJ5CisgKiBjb25zaXN0aW5nIG9mIHRoZSBmb2xsb3dpbmc6CisgKgorICogQml0cyAwLTU1ICBwYWdlIGZyYW1lIG51bWJlciAoUEZOKSBpZiBwcmVzZW50CisgKiBCaXRzIDAtNCAgIHN3YXAgdHlwZSBpZiBzd2FwcGVkCisgKiBCaXRzIDUtNTUgIHN3YXAgb2Zmc2V0IGlmIHN3YXBwZWQKKyAqIEJpdHMgNTUtNjAgcGFnZSBzaGlmdCAocGFnZSBzaXplID0gMTw8cGFnZSBzaGlmdCkKKyAqIEJpdCAgNjEgICAgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UKKyAqIEJpdCAgNjIgICAgcGFnZSBzd2FwcGVkCisgKiBCaXQgIDYzICAgIHBhZ2UgcHJlc2VudAorICoKKyAqIElmIHRoZSBwYWdlIGlzIG5vdCBwcmVzZW50IGJ1dCBpbiBzd2FwLCB0aGVuIHRoZSBQRk4gY29udGFpbnMgYW4KKyAqIGVuY29kaW5nIG9mIHRoZSBzd2FwIGZpbGUgbnVtYmVyIGFuZCB0aGUgcGFnZSdzIG9mZnNldCBpbnRvIHRoZQorICogc3dhcC4gVW5tYXBwZWQgcGFnZXMgcmV0dXJuIGEgbnVsbCBQRk4uIFRoaXMgYWxsb3dzIGRldGVybWluaW5nCiAgKiBwcmVjaXNlbHkgd2hpY2ggcGFnZXMgYXJlIG1hcHBlZCAob3IgaW4gc3dhcCkgYW5kIGNvbXBhcmluZyBtYXBwZWQKICAqIHBhZ2VzIGJldHdlZW4gcHJvY2Vzc2VzLgogICoKQEAgLTY0MCwxNyArNjU4LDE3IEBACiAKIAlyZXQgPSAtRUFDQ0VTOwogCWlmICghcHRyYWNlX21heV9hdHRhY2godGFzaykpCi0JCWdvdG8gb3V0OworCQlnb3RvIG91dF90YXNrOwogCiAJcmV0ID0gLUVJTlZBTDsKIAkvKiBmaWxlIHBvc2l0aW9uIG11c3QgYmUgYWxpZ25lZCAqLwogCWlmICgqcHBvcyAlIFBNX0VOVFJZX0JZVEVTKQotCQlnb3RvIG91dDsKKwkJZ290byBvdXRfdGFzazsKIAogCXJldCA9IDA7CiAJbW0gPSBnZXRfdGFza19tbSh0YXNrKTsKIAlpZiAoIW1tKQotCQlnb3RvIG91dDsKKwkJZ290byBvdXRfdGFzazsKIAogCXJldCA9IC1FTk9NRU07CiAJdWFkZHIgPSAodW5zaWduZWQgbG9uZylidWYgJiBQQUdFX01BU0s7CkBAIC02NTgsNyArNjc2LDcgQEAKIAlwYWdlY291bnQgPSAoUEFHRV9BTElHTih1ZW5kKSAtIHVhZGRyKSAvIFBBR0VfU0laRTsKIAlwYWdlcyA9IGttYWxsb2MocGFnZWNvdW50ICogc2l6ZW9mKHN0cnVjdCBwYWdlICopLCBHRlBfS0VSTkVMKTsKIAlpZiAoIXBhZ2VzKQotCQlnb3RvIG91dF90YXNrOworCQlnb3RvIG91dF9tbTsKIAogCWRvd25fcmVhZCgmY3VycmVudC0+bW0tPm1tYXBfc2VtKTsKIAlyZXQgPSBnZXRfdXNlcl9wYWdlcyhjdXJyZW50LCBjdXJyZW50LT5tbSwgdWFkZHIsIHBhZ2Vjb3VudCwKQEAgLTY2OCw2ICs2ODYsMTIgQEAKIAlpZiAocmV0IDwgMCkKIAkJZ290byBvdXRfZnJlZTsKIAorCWlmIChyZXQgIT0gcGFnZWNvdW50KSB7CisJCXBhZ2Vjb3VudCA9IHJldDsKKwkJcmV0ID0gLUVGQVVMVDsKKwkJZ290byBvdXRfcGFnZXM7CisJfQorCiAJcG0ub3V0ID0gYnVmOwogCXBtLmVuZCA9IGJ1ZiArIGNvdW50OwogCkBAIC02OTksMTUgKzcyMywxNyBAQAogCQkJcmV0ID0gcG0ub3V0IC0gYnVmOwogCX0KIAorb3V0X3BhZ2VzOgogCWZvciAoOyBwYWdlY291bnQ7IHBhZ2Vjb3VudC0tKSB7CiAJCXBhZ2UgPSBwYWdlc1twYWdlY291bnQtMV07CiAJCWlmICghUGFnZVJlc2VydmVkKHBhZ2UpKQogCQkJU2V0UGFnZURpcnR5KHBhZ2UpOwogCQlwYWdlX2NhY2hlX3JlbGVhc2UocGFnZSk7CiAJfQotCW1tcHV0KG1tKTsKIG91dF9mcmVlOgogCWtmcmVlKHBhZ2VzKTsKK291dF9tbToKKwltbXB1dChtbSk7CiBvdXRfdGFzazoKIAlwdXRfdGFza19zdHJ1Y3QodGFzayk7CiBvdXQ6CmRpZmYgLS1naXQgYS9mcy9yZWlzZXJmcy9kb19iYWxhbi5jIGIvZnMvcmVpc2VyZnMvZG9fYmFsYW4uYwppbmRleCBmODVjNWNmLi43ZWU0MjA4IDEwMDY0NAotLS0gYS9mcy9yZWlzZXJmcy9kb19iYWxhbi5jCisrKyBiL2ZzL3JlaXNlcmZzL2RvX2JhbGFuLmMKQEAgLTI4Myw3ICsyODMsNyBAQAogCQlyZXR1cm4gYmFsYW5jZV9sZWFmX3doZW5fZGVsZXRlKHRiLCBmbGFnKTsKIAogCXplcm9zX251bSA9IDA7Ci0JaWYgKGZsYWcgPT0gTV9JTlNFUlQgJiYgYm9keSA9PSAwKQorCWlmIChmbGFnID09IE1fSU5TRVJUICYmICFib2R5KQogCQl6ZXJvc19udW0gPSBpaF9pdGVtX2xlbihpaCk7CiAKIAlwb3NfaW5faXRlbSA9IHRiLT50Yl9wYXRoLT5wb3NfaW5faXRlbTsKQEAgLTE3MjgsNyArMTcyOCw3IEBACiAJc3RydWN0IGJ1ZmZlcl9pbmZvIGJpOwogCiAJZm9yIChpID0gMDsgaSA8IE1BWF9GRUJfU0laRTsgaSsrKQotCQlpZiAodGItPkZFQltpXSAhPSAwKQorCQlpZiAodGItPkZFQltpXSAhPSBOVUxMKQogCQkJYnJlYWs7CiAKIAlpZiAoaSA9PSBNQVhfRkVCX1NJWkUpCkBAIC0xODI3LDcgKzE4MjcsNyBAQAogewogCWludCBTaF9wb3NpdGlvbiA9IFBBVEhfSF9QT1NJVElPTih0Yi0+dGJfcGF0aCwgaCArIDEpOwogCi0JUkZBTFNFKFBBVEhfSF9QUEFSRU5UKHRiLT50Yl9wYXRoLCBoKSA9PSAwIHx8IHRiLT5GTFtoXSA9PSAwLAorCVJGQUxTRShQQVRIX0hfUFBBUkVOVCh0Yi0+dGJfcGF0aCwgaCkgPT0gTlVMTCB8fCB0Yi0+RkxbaF0gPT0gTlVMTCwKIAkgICAgICAgInZzLTEyMzI1OiBGTFslZF0oJXApIG9yIEZbJWRdKCVwKSBkb2VzIG5vdCBleGlzdCIsCiAJICAgICAgIGgsIHRiLT5GTFtoXSwgaCwgUEFUSF9IX1BQQVJFTlQodGItPnRiX3BhdGgsIGgpKTsKIApAQCAtMTg0MSw3ICsxODQxLDcgQEAKIHsKIAlpbnQgU2hfcG9zaXRpb24gPSBQQVRIX0hfUE9TSVRJT04odGItPnRiX3BhdGgsIGggKyAxKTsKIAotCVJGQUxTRShQQVRIX0hfUFBBUkVOVCh0Yi0+dGJfcGF0aCwgaCkgPT0gMCB8fCB0Yi0+RlJbaF0gPT0gMCwKKwlSRkFMU0UoUEFUSF9IX1BQQVJFTlQodGItPnRiX3BhdGgsIGgpID09IE5VTEwgfHwgdGItPkZSW2hdID09IE5VTEwsCiAJICAgICAgICJ2cy0xMjMzMDogRlslZF0oJXApIG9yIEZSWyVkXSglcCkgZG9lcyBub3QgZXhpc3QiLAogCSAgICAgICBoLCBQQVRIX0hfUFBBUkVOVCh0Yi0+dGJfcGF0aCwgaCksIGgsIHRiLT5GUltoXSk7CiAKZGlmZiAtLWdpdCBhL2ZzL3JlaXNlcmZzL2ZpeF9ub2RlLmMgYi9mcy9yZWlzZXJmcy9maXhfbm9kZS5jCmluZGV4IDBlZTM1YzYuLjA3ZDA1ZTAgMTAwNjQ0Ci0tLSBhL2ZzL3JlaXNlcmZzL2ZpeF9ub2RlLmMKKysrIGIvZnMvcmVpc2VyZnMvZml4X25vZGUuYwpAQCAtMTUzLDcgKzE1Myw3IEBACiAJaWYgKHZuLT52bl9tb2RlID09IE1fSU5TRVJUKSB7CiAJCXN0cnVjdCB2aXJ0dWFsX2l0ZW0gKnZpID0gdm4tPnZuX3ZpICsgdm4tPnZuX2FmZmVjdGVkX2l0ZW1fbnVtOwogCi0JCVJGQUxTRSh2bi0+dm5faW5zX2loID09IDAsCisJCVJGQUxTRSh2bi0+dm5faW5zX2loID09IE5VTEwsCiAJCSAgICAgICAidnMtODA0MDogaXRlbSBoZWFkZXIgb2YgaW5zZXJ0ZWQgaXRlbSBpcyBub3Qgc3BlY2lmaWVkIik7CiAJCXZpLT52aV9pdGVtX2xlbiA9IHRiLT5pbnNlcnRfc2l6ZVswXTsKIAkJdmktPnZpX2loID0gdm4tPnZuX2luc19paDsKQEAgLTg1Nyw3ICs4NTcsOCBAQAogCXN0cnVjdCBidWZmZXJfaGVhZCAqbCwgKmY7CiAJaW50IG9yZGVyOwogCi0JaWYgKChmID0gUEFUSF9IX1BQQVJFTlQodGItPnRiX3BhdGgsIGgpKSA9PSAwIHx8IChsID0gdGItPkZMW2hdKSA9PSAwKQorCWlmICgoZiA9IFBBVEhfSF9QUEFSRU5UKHRiLT50Yl9wYXRoLCBoKSkgPT0gTlVMTCB8fAorCSAgICAobCA9IHRiLT5GTFtoXSkgPT0gTlVMTCkKIAkJcmV0dXJuIDA7CiAKIAlpZiAoZiA9PSBsKQpAQCAtODc4LDcgKzg3OSw4IEBACiAJc3RydWN0IGJ1ZmZlcl9oZWFkICpyLCAqZjsKIAlpbnQgb3JkZXI7CiAKLQlpZiAoKGYgPSBQQVRIX0hfUFBBUkVOVCh0Yi0+dGJfcGF0aCwgaCkpID09IDAgfHwgKHIgPSB0Yi0+RlJbaF0pID09IDApCisJaWYgKChmID0gUEFUSF9IX1BQQVJFTlQodGItPnRiX3BhdGgsIGgpKSA9PSBOVUxMIHx8CisJICAgIChyID0gdGItPkZSW2hdKSA9PSBOVUxMKQogCQlyZXR1cm4gMDsKIAogCWlmIChmID09IHIpCmRpZmYgLS1naXQgYS9mcy9yZWlzZXJmcy9sYmFsYW5jZS5jIGIvZnMvcmVpc2VyZnMvbGJhbGFuY2UuYwppbmRleCAyODFmODA2Li42ZGUwNjBhIDEwMDY0NAotLS0gYS9mcy9yZWlzZXJmcy9sYmFsYW5jZS5jCisrKyBiL2ZzL3JlaXNlcmZzL2xiYWxhbmNlLmMKQEAgLTYyNiw3ICs2MjYsNyBAQAogCQkJICAgICAgICJ2cy0xMDI1MDogbGVhZl9kZWZpbmVfZGVzdF9zcmNfaW5mb3M6IHNoaWZ0IHR5cGUgaXMgdW5rbm93biAoJWQpIiwKIAkJCSAgICAgICBzaGlmdF9tb2RlKTsKIAl9Ci0JUkZBTFNFKHNyY19iaS0+YmlfYmggPT0gMCB8fCBkZXN0X2JpLT5iaV9iaCA9PSAwLAorCVJGQUxTRSghc3JjX2JpLT5iaV9iaCB8fCAhZGVzdF9iaS0+YmlfYmgsCiAJICAgICAgICJ2cy0xMDI2MDogbW9kZT09JWQsIHNvdXJjZSAoJXApIG9yIGRlc3QgKCVwKSBidWZmZXIgaXMgaW5pdGlhbGl6ZWQgaW5jb3JyZWN0bHkiLAogCSAgICAgICBzaGlmdF9tb2RlLCBzcmNfYmktPmJpX2JoLCBkZXN0X2JpLT5iaV9iaCk7CiB9CmRpZmYgLS1naXQgYS9mcy9yZWlzZXJmcy9uYW1laS5jIGIvZnMvcmVpc2VyZnMvbmFtZWkuYwppbmRleCBiMzc4ZWVhLi44ODY3NTMzIDEwMDY0NAotLS0gYS9mcy9yZWlzZXJmcy9uYW1laS5jCisrKyBiL2ZzL3JlaXNlcmZzL25hbWVpLmMKQEAgLTQ1Miw3ICs0NTIsNyBAQAogCWJ1ZmxlbiA9IERFSF9TSVpFICsgUk9VTkRfVVAobmFtZWxlbik7CiAJaWYgKGJ1ZmxlbiA+IHNpemVvZihzbWFsbF9idWYpKSB7CiAJCWJ1ZmZlciA9IGttYWxsb2MoYnVmbGVuLCBHRlBfTk9GUyk7Ci0JCWlmIChidWZmZXIgPT0gMCkKKwkJaWYgKCFidWZmZXIpCiAJCQlyZXR1cm4gLUVOT01FTTsKIAl9IGVsc2UKIAkJYnVmZmVyID0gc21hbGxfYnVmOwpkaWZmIC0tZ2l0IGEvZnMvcmVpc2VyZnMveGF0dHIuYyBiL2ZzL3JlaXNlcmZzL3hhdHRyLmMKaW5kZXggZWJhMDM3Yi4uMzQ0YjliOSAxMDA2NDQKLS0tIGEvZnMvcmVpc2VyZnMveGF0dHIuYworKysgYi9mcy9yZWlzZXJmcy94YXR0ci5jCkBAIC0xOTEsMjggKzE5MSwxMSBAQAogCWRwdXQoeGFkaXIpOwogCWlmIChlcnIpCiAJCXhhZmlsZSA9IEVSUl9QVFIoZXJyKTsKLQlyZXR1cm4geGFmaWxlOwotfQotCi0vKiBPcGVucyBhIGZpbGUgcG9pbnRlciB0byB0aGUgYXR0cmlidXRlIGFzc29jaWF0ZWQgd2l0aCBpbm9kZSAqLwotc3RhdGljIHN0cnVjdCBmaWxlICpvcGVuX3hhX2ZpbGUoY29uc3Qgc3RydWN0IGlub2RlICppbm9kZSwgY29uc3QgY2hhciAqbmFtZSwKLQkJCQkgaW50IGZsYWdzKQotewotCXN0cnVjdCBkZW50cnkgKnhhZmlsZTsKLQlzdHJ1Y3QgZmlsZSAqZnA7Ci0KLQl4YWZpbGUgPSBnZXRfeGFfZmlsZV9kZW50cnkoaW5vZGUsIG5hbWUsIGZsYWdzKTsKLQlpZiAoSVNfRVJSKHhhZmlsZSkpCi0JCXJldHVybiBFUlJfUFRSKFBUUl9FUlIoeGFmaWxlKSk7CiAJZWxzZSBpZiAoIXhhZmlsZS0+ZF9pbm9kZSkgewogCQlkcHV0KHhhZmlsZSk7Ci0JCXJldHVybiBFUlJfUFRSKC1FTk9EQVRBKTsKKwkJeGFmaWxlID0gRVJSX1BUUigtRU5PREFUQSk7CiAJfQotCi0JZnAgPSBkZW50cnlfb3Blbih4YWZpbGUsIE5VTEwsIE9fUkRXUik7Ci0JLyogZGVudHJ5X29wZW4gZHB1dHMgdGhlIGRlbnRyeSBpZiBpdCBmYWlscyAqLwotCi0JcmV0dXJuIGZwOworCXJldHVybiB4YWZpbGU7CiB9CiAKIC8qCkBAIC0yMjgsOSArMjExLDggQEAKICAqIHdlJ3JlIGNhbGxlZCB3aXRoIGlfbXV0ZXggaGVsZCwgc28gdGhlcmUgYXJlIG5vIHdvcnJpZXMgYWJvdXQgdGhlIGRpcmVjdG9yeQogICogY2hhbmdpbmcgdW5kZXJuZWF0aCB1cy4KICAqLwotc3RhdGljIGludCBfX3hhdHRyX3JlYWRkaXIoc3RydWN0IGZpbGUgKmZpbHAsIHZvaWQgKmRpcmVudCwgZmlsbGRpcl90IGZpbGxkaXIpCitzdGF0aWMgaW50IF9feGF0dHJfcmVhZGRpcihzdHJ1Y3QgaW5vZGUgKmlub2RlLCB2b2lkICpkaXJlbnQsIGZpbGxkaXJfdCBmaWxsZGlyKQogewotCXN0cnVjdCBpbm9kZSAqaW5vZGUgPSBmaWxwLT5mX3BhdGguZGVudHJ5LT5kX2lub2RlOwogCXN0cnVjdCBjcHVfa2V5IHBvc19rZXk7CS8qIGtleSBvZiBjdXJyZW50IHBvc2l0aW9uIGluIHRoZSBkaXJlY3RvcnkgKGtleSBvZiBkaXJlY3RvcnkgZW50cnkpICovCiAJSU5JVElBTElaRV9QQVRIKHBhdGhfdG9fZW50cnkpOwogCXN0cnVjdCBidWZmZXJfaGVhZCAqYmg7CkBAIC0zNzQsMjMgKzM1NiwxNiBAQAogICoKICAqLwogc3RhdGljCi1pbnQgeGF0dHJfcmVhZGRpcihzdHJ1Y3QgZmlsZSAqZmlsZSwgZmlsbGRpcl90IGZpbGxlciwgdm9pZCAqYnVmKQoraW50IHhhdHRyX3JlYWRkaXIoc3RydWN0IGlub2RlICppbm9kZSwgZmlsbGRpcl90IGZpbGxlciwgdm9pZCAqYnVmKQogewotCXN0cnVjdCBpbm9kZSAqaW5vZGUgPSBmaWxlLT5mX3BhdGguZGVudHJ5LT5kX2lub2RlOwotCWludCByZXMgPSAtRU5PVERJUjsKLQlpZiAoIWZpbGUtPmZfb3AgfHwgIWZpbGUtPmZfb3AtPnJlYWRkaXIpCi0JCWdvdG8gb3V0OworCWludCByZXMgPSAtRU5PRU5UOwogCW11dGV4X2xvY2tfbmVzdGVkKCZpbm9kZS0+aV9tdXRleCwgSV9NVVRFWF9YQVRUUik7Ci0vLyAgICAgICAgZG93bigmaW5vZGUtPmlfem9tYmllKTsKLQlyZXMgPSAtRU5PRU5UOwogCWlmICghSVNfREVBRERJUihpbm9kZSkpIHsKIAkJbG9ja19rZXJuZWwoKTsKLQkJcmVzID0gX194YXR0cl9yZWFkZGlyKGZpbGUsIGJ1ZiwgZmlsbGVyKTsKKwkJcmVzID0gX194YXR0cl9yZWFkZGlyKGlub2RlLCBidWYsIGZpbGxlcik7CiAJCXVubG9ja19rZXJuZWwoKTsKIAl9Ci0vLyAgICAgICAgdXAoJmlub2RlLT5pX3pvbWJpZSk7CiAJbXV0ZXhfdW5sb2NrKCZpbm9kZS0+aV9tdXRleCk7Ci0gICAgICBvdXQ6CiAJcmV0dXJuIHJlczsKIH0KIApAQCAtNDQyLDcgKzQxNyw3IEBACiAJCSAgIHNpemVfdCBidWZmZXJfc2l6ZSwgaW50IGZsYWdzKQogewogCWludCBlcnIgPSAwOwotCXN0cnVjdCBmaWxlICpmcDsKKwlzdHJ1Y3QgZGVudHJ5ICpkZW50cnk7CiAJc3RydWN0IHBhZ2UgKnBhZ2U7CiAJY2hhciAqZGF0YTsKIAlzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZzsKQEAgLTQ2MCwxOCArNDM1LDE4IEBACiAJCXhhaGFzaCA9IHhhdHRyX2hhc2goYnVmZmVyLCBidWZmZXJfc2l6ZSk7CiAKICAgICAgIG9wZW5fZmlsZToKLQlmcCA9IG9wZW5feGFfZmlsZShpbm9kZSwgbmFtZSwgZmxhZ3MpOwotCWlmIChJU19FUlIoZnApKSB7Ci0JCWVyciA9IFBUUl9FUlIoZnApOworCWRlbnRyeSA9IGdldF94YV9maWxlX2RlbnRyeShpbm9kZSwgbmFtZSwgZmxhZ3MpOworCWlmIChJU19FUlIoZGVudHJ5KSkgeworCQllcnIgPSBQVFJfRVJSKGRlbnRyeSk7CiAJCWdvdG8gb3V0OwogCX0KIAotCXhpbm9kZSA9IGZwLT5mX3BhdGguZGVudHJ5LT5kX2lub2RlOworCXhpbm9kZSA9IGRlbnRyeS0+ZF9pbm9kZTsKIAlSRUlTRVJGU19JKGlub2RlKS0+aV9mbGFncyB8PSBpX2hhc194YXR0cl9kaXI7CiAKIAkvKiB3ZSBuZWVkIHRvIGNvcHkgaXQgb2ZmLi4gKi8KIAlpZiAoeGlub2RlLT5pX25saW5rID4gMSkgewotCQlmcHV0KGZwKTsKKwkJZHB1dChkZW50cnkpOwogCQllcnIgPSByZWlzZXJmc194YXR0cl9kZWwoaW5vZGUsIG5hbWUpOwogCQlpZiAoZXJyIDwgMCkKIAkJCWdvdG8gb3V0OwpAQCAtNDg1LDcgKzQ2MCw3IEBACiAJbmV3YXR0cnMuaWFfc2l6ZSA9IGJ1ZmZlcl9zaXplOwogCW5ld2F0dHJzLmlhX3ZhbGlkID0gQVRUUl9TSVpFIHwgQVRUUl9DVElNRTsKIAltdXRleF9sb2NrX25lc3RlZCgmeGlub2RlLT5pX211dGV4LCBJX01VVEVYX1hBVFRSKTsKLQllcnIgPSBub3RpZnlfY2hhbmdlKGZwLT5mX3BhdGguZGVudHJ5LCAmbmV3YXR0cnMpOworCWVyciA9IG5vdGlmeV9jaGFuZ2UoZGVudHJ5LCAmbmV3YXR0cnMpOwogCWlmIChlcnIpCiAJCWdvdG8gb3V0X2ZpbHA7CiAKQEAgLTUxOCwxNSArNDkzLDE0IEBACiAJCQlyeGgtPmhfaGFzaCA9IGNwdV90b19sZTMyKHhhaGFzaCk7CiAJCX0KIAotCQllcnIgPSByZWlzZXJmc19wcmVwYXJlX3dyaXRlKGZwLCBwYWdlLCBwYWdlX29mZnNldCwKKwkJZXJyID0gcmVpc2VyZnNfcHJlcGFyZV93cml0ZShOVUxMLCBwYWdlLCBwYWdlX29mZnNldCwKIAkJCQkJICAgIHBhZ2Vfb2Zmc2V0ICsgY2h1bmsgKyBza2lwKTsKIAkJaWYgKCFlcnIpIHsKIAkJCWlmIChidWZmZXIpCiAJCQkJbWVtY3B5KGRhdGEgKyBza2lwLCBidWZmZXIgKyBidWZmZXJfcG9zLCBjaHVuayk7Ci0JCQllcnIgPQotCQkJICAgIHJlaXNlcmZzX2NvbW1pdF93cml0ZShmcCwgcGFnZSwgcGFnZV9vZmZzZXQsCi0JCQkJCQkgIHBhZ2Vfb2Zmc2V0ICsgY2h1bmsgKwotCQkJCQkJICBza2lwKTsKKwkJCWVyciA9IHJlaXNlcmZzX2NvbW1pdF93cml0ZShOVUxMLCBwYWdlLCBwYWdlX29mZnNldCwKKwkJCQkJCSAgICBwYWdlX29mZnNldCArIGNodW5rICsKKwkJCQkJCSAgICBza2lwKTsKIAkJfQogCQl1bmxvY2tfcGFnZShwYWdlKTsKIAkJcmVpc2VyZnNfcHV0X3BhZ2UocGFnZSk7CkBAIC01NDgsNyArNTIyLDcgQEAKIAogICAgICAgb3V0X2ZpbHA6CiAJbXV0ZXhfdW5sb2NrKCZ4aW5vZGUtPmlfbXV0ZXgpOwotCWZwdXQoZnApOworCWRwdXQoZGVudHJ5KTsKIAogICAgICAgb3V0OgogCXJldHVybiBlcnI7CkBAIC01NjIsNyArNTM2LDcgQEAKIAkJICAgc2l6ZV90IGJ1ZmZlcl9zaXplKQogewogCXNzaXplX3QgZXJyID0gMDsKLQlzdHJ1Y3QgZmlsZSAqZnA7CisJc3RydWN0IGRlbnRyeSAqZGVudHJ5OwogCXNpemVfdCBpc2l6ZTsKIAlzaXplX3QgZmlsZV9wb3MgPSAwOwogCXNpemVfdCBidWZmZXJfcG9zID0gMDsKQEAgLTU3OCwxMyArNTUyLDEzIEBACiAJaWYgKGdldF9pbm9kZV9zZF92ZXJzaW9uKGlub2RlKSA9PSBTVEFUX0RBVEFfVjEpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCWZwID0gb3Blbl94YV9maWxlKGlub2RlLCBuYW1lLCBGTF9SRUFET05MWSk7Ci0JaWYgKElTX0VSUihmcCkpIHsKLQkJZXJyID0gUFRSX0VSUihmcCk7CisJZGVudHJ5ID0gZ2V0X3hhX2ZpbGVfZGVudHJ5KGlub2RlLCBuYW1lLCBGTF9SRUFET05MWSk7CisJaWYgKElTX0VSUihkZW50cnkpKSB7CisJCWVyciA9IFBUUl9FUlIoZGVudHJ5KTsKIAkJZ290byBvdXQ7CiAJfQogCi0JeGlub2RlID0gZnAtPmZfcGF0aC5kZW50cnktPmRfaW5vZGU7CisJeGlub2RlID0gZGVudHJ5LT5kX2lub2RlOwogCWlzaXplID0geGlub2RlLT5pX3NpemU7CiAJUkVJU0VSRlNfSShpbm9kZSktPmlfZmxhZ3MgfD0gaV9oYXNfeGF0dHJfZGlyOwogCkBAIC02NTIsNyArNjI2LDcgQEAKIAl9CiAKICAgICAgIG91dF9kcHV0OgotCWZwdXQoZnApOworCWRwdXQoZGVudHJ5KTsKIAogICAgICAgb3V0OgogCXJldHVybiBlcnI7CkBAIC03NDIsNyArNzE2LDYgQEAKIC8qIFRoaXMgaXMgY2FsbGVkIHcvIGlub2RlLT5pX211dGV4IGRvd25lZCAqLwogaW50IHJlaXNlcmZzX2RlbGV0ZV94YXR0cnMoc3RydWN0IGlub2RlICppbm9kZSkKIHsKLQlzdHJ1Y3QgZmlsZSAqZnA7CiAJc3RydWN0IGRlbnRyeSAqZGlyLCAqcm9vdDsKIAlpbnQgZXJyID0gMDsKIApAQCAtNzYzLDE1ICs3MzYsOCBAQAogCQlyZXR1cm4gMDsKIAl9CiAKLQlmcCA9IGRlbnRyeV9vcGVuKGRpciwgTlVMTCwgT19SRFdSKTsKLQlpZiAoSVNfRVJSKGZwKSkgewotCQllcnIgPSBQVFJfRVJSKGZwKTsKLQkJLyogZGVudHJ5X29wZW4gZHB1dHMgdGhlIGRlbnRyeSBpZiBpdCBmYWlscyAqLwotCQlnb3RvIG91dDsKLQl9Ci0KIAlsb2NrX2tlcm5lbCgpOwotCWVyciA9IHhhdHRyX3JlYWRkaXIoZnAsIHJlaXNlcmZzX2RlbGV0ZV94YXR0cnNfZmlsbGVyLCBkaXIpOworCWVyciA9IHhhdHRyX3JlYWRkaXIoZGlyLT5kX2lub2RlLCByZWlzZXJmc19kZWxldGVfeGF0dHJzX2ZpbGxlciwgZGlyKTsKIAlpZiAoZXJyKSB7CiAJCXVubG9ja19rZXJuZWwoKTsKIAkJZ290byBvdXRfZGlyOwpAQCAtNzkxLDcgKzc1Nyw3IEBACiAJdW5sb2NrX2tlcm5lbCgpOwogCiAgICAgICBvdXRfZGlyOgotCWZwdXQoZnApOworCWRwdXQoZGlyKTsKIAogICAgICAgb3V0OgogCWlmICghZXJyKQpAQCAtODMzLDcgKzc5OSw2IEBACiAKIGludCByZWlzZXJmc19jaG93bl94YXR0cnMoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGlhdHRyICphdHRycykKIHsKLQlzdHJ1Y3QgZmlsZSAqZnA7CiAJc3RydWN0IGRlbnRyeSAqZGlyOwogCWludCBlcnIgPSAwOwogCXN0cnVjdCByZWlzZXJmc19jaG93bl9idWYgYnVmOwpAQCAtODU3LDEzICs4MjIsNiBAQAogCQlnb3RvIG91dDsKIAl9CiAKLQlmcCA9IGRlbnRyeV9vcGVuKGRpciwgTlVMTCwgT19SRFdSKTsKLQlpZiAoSVNfRVJSKGZwKSkgewotCQllcnIgPSBQVFJfRVJSKGZwKTsKLQkJLyogZGVudHJ5X29wZW4gZHB1dHMgdGhlIGRlbnRyeSBpZiBpdCBmYWlscyAqLwotCQlnb3RvIG91dDsKLQl9Ci0KIAlsb2NrX2tlcm5lbCgpOwogCiAJYXR0cnMtPmlhX3ZhbGlkICY9IChBVFRSX1VJRCB8IEFUVFJfR0lEIHwgQVRUUl9DVElNRSk7CkBAIC04NzEsNyArODI5LDcgQEAKIAlidWYuYXR0cnMgPSBhdHRyczsKIAlidWYuaW5vZGUgPSBpbm9kZTsKIAotCWVyciA9IHhhdHRyX3JlYWRkaXIoZnAsIHJlaXNlcmZzX2Nob3duX3hhdHRyc19maWxsZXIsICZidWYpOworCWVyciA9IHhhdHRyX3JlYWRkaXIoZGlyLT5kX2lub2RlLCByZWlzZXJmc19jaG93bl94YXR0cnNfZmlsbGVyLCAmYnVmKTsKIAlpZiAoZXJyKSB7CiAJCXVubG9ja19rZXJuZWwoKTsKIAkJZ290byBvdXRfZGlyOwpAQCAtODgxLDcgKzgzOSw3IEBACiAJdW5sb2NrX2tlcm5lbCgpOwogCiAgICAgICBvdXRfZGlyOgotCWZwdXQoZnApOworCWRwdXQoZGlyKTsKIAogICAgICAgb3V0OgogCWF0dHJzLT5pYV92YWxpZCA9IGlhX3ZhbGlkOwpAQCAtMTAyOSw3ICs5ODcsNiBAQAogICovCiBzc2l6ZV90IHJlaXNlcmZzX2xpc3R4YXR0cihzdHJ1Y3QgZGVudHJ5ICogZGVudHJ5LCBjaGFyICpidWZmZXIsIHNpemVfdCBzaXplKQogewotCXN0cnVjdCBmaWxlICpmcDsKIAlzdHJ1Y3QgZGVudHJ5ICpkaXI7CiAJaW50IGVyciA9IDA7CiAJc3RydWN0IHJlaXNlcmZzX2xpc3R4YXR0cl9idWYgYnVmOwpAQCAtMTA1MiwxMyArMTAwOSw2IEBACiAJCWdvdG8gb3V0OwogCX0KIAotCWZwID0gZGVudHJ5X29wZW4oZGlyLCBOVUxMLCBPX1JEV1IpOwotCWlmIChJU19FUlIoZnApKSB7Ci0JCWVyciA9IFBUUl9FUlIoZnApOwotCQkvKiBkZW50cnlfb3BlbiBkcHV0cyB0aGUgZGVudHJ5IGlmIGl0IGZhaWxzICovCi0JCWdvdG8gb3V0OwotCX0KLQogCWJ1Zi5yX2J1ZiA9IGJ1ZmZlcjsKIAlidWYucl9zaXplID0gYnVmZmVyID8gc2l6ZSA6IDA7CiAJYnVmLnJfcG9zID0gMDsKQEAgLTEwNjYsNyArMTAxNiw3IEBACiAKIAlSRUlTRVJGU19JKGRlbnRyeS0+ZF9pbm9kZSktPmlfZmxhZ3MgfD0gaV9oYXNfeGF0dHJfZGlyOwogCi0JZXJyID0geGF0dHJfcmVhZGRpcihmcCwgcmVpc2VyZnNfbGlzdHhhdHRyX2ZpbGxlciwgJmJ1Zik7CisJZXJyID0geGF0dHJfcmVhZGRpcihkaXItPmRfaW5vZGUsIHJlaXNlcmZzX2xpc3R4YXR0cl9maWxsZXIsICZidWYpOwogCWlmIChlcnIpCiAJCWdvdG8gb3V0X2RpcjsKIApAQCAtMTA3Niw3ICsxMDI2LDcgQEAKIAkJZXJyID0gYnVmLnJfcG9zOwogCiAgICAgICBvdXRfZGlyOgotCWZwdXQoZnApOworCWRwdXQoZGlyKTsKIAogICAgICAgb3V0OgogCXJlaXNlcmZzX3JlYWRfdW5sb2NrX3hhdHRyX2koZGVudHJ5LT5kX2lub2RlKTsKZGlmZiAtLWdpdCBhL2ZzL3JvbWZzL2lub2RlLmMgYi9mcy9yb21mcy9pbm9kZS5jCmluZGV4IDAwYjZmMGEuLjNmMTNkNDkgMTAwNjQ0Ci0tLSBhL2ZzL3JvbWZzL2lub2RlLmMKKysrIGIvZnMvcm9tZnMvaW5vZGUuYwpAQCAtMzQwLDggKzM0MCw5IEBACiByb21mc19sb29rdXAoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IG5hbWVpZGF0YSAqbmQpCiB7CiAJdW5zaWduZWQgbG9uZyBvZmZzZXQsIG1heG9mZjsKLQlpbnQgZnNsZW4sIHJlczsKLQlzdHJ1Y3QgaW5vZGUgKmlub2RlOworCWxvbmcgcmVzOworCWludCBmc2xlbjsKKwlzdHJ1Y3QgaW5vZGUgKmlub2RlID0gTlVMTDsKIAljaGFyIGZzbmFtZVtST01GU19NQVhGTl07CS8qIFhYWCBkeW5hbWljPyAqLwogCXN0cnVjdCByb21mc19pbm9kZSByaTsKIAljb25zdCBjaGFyICpuYW1lOwkJLyogZ290IGZyb20gZGVudHJ5ICovCkBAIC0zNTEsNyArMzUyLDcgQEAKIAlvZmZzZXQgPSBkaXItPmlfaW5vICYgUk9NRkhfTUFTSzsKIAlsb2NrX2tlcm5lbCgpOwogCWlmIChyb21mc19jb3B5ZnJvbShkaXIsICZyaSwgb2Zmc2V0LCBST01GSF9TSVpFKSA8PSAwKQotCQlnb3RvIG91dDsKKwkJZ290byBlcnJvcjsKIAogCW1heG9mZiA9IHJvbWZzX21heHNpemUoZGlyLT5pX3NiKTsKIAlvZmZzZXQgPSBiZTMyX3RvX2NwdShyaS5zcGVjKSAmIFJPTUZIX01BU0s7CkBAIC0zNjQsOSArMzY1LDkgQEAKIAogCWZvcig7OykgewogCQlpZiAoIW9mZnNldCB8fCBvZmZzZXQgPj0gbWF4b2ZmKQotCQkJZ290byBvdXQwOworCQkJZ290byBzdWNjZXNzOyAvKiBuZWdhdGl2ZSBzdWNjZXNzICovCiAJCWlmIChyb21mc19jb3B5ZnJvbShkaXIsICZyaSwgb2Zmc2V0LCBST01GSF9TSVpFKSA8PSAwKQotCQkJZ290byBvdXQ7CisJCQlnb3RvIGVycm9yOwogCiAJCS8qIHRyeSB0byBtYXRjaCB0aGUgZmlyc3QgMTYgYnl0ZXMgb2YgbmFtZSAqLwogCQlmc2xlbiA9IHJvbWZzX3N0cm5sZW4oZGlyLCBvZmZzZXQrUk9NRkhfU0laRSwgUk9NRkhfU0laRSk7CkBAIC0zOTcsMjMgKzM5OCwxNCBAQAogCWlub2RlID0gcm9tZnNfaWdldChkaXItPmlfc2IsIG9mZnNldCk7CiAJaWYgKElTX0VSUihpbm9kZSkpIHsKIAkJcmVzID0gUFRSX0VSUihpbm9kZSk7Ci0JCWdvdG8gb3V0OworCQlnb3RvIGVycm9yOwogCX0KIAotCS8qCi0JICogaXQncyBhIGJpdCBmdW5reSwgX2xvb2t1cCBuZWVkcyB0byByZXR1cm4gYW4gZXJyb3IgY29kZQotCSAqIChuZWdhdGl2ZSkgb3IgYSBOVUxMLCBib3RoIGFzIGEgZGVudHJ5LiAgRU5PRU5UIHNob3VsZCBub3QKLQkgKiBiZSByZXR1cm5lZCwgaW5zdGVhZCB3ZSBuZWVkIHRvIGNyZWF0ZSBhIG5lZ2F0aXZlIGRlbnRyeSBieQotCSAqIGRfYWRkKGRlbnRyeSwgTlVMTCk7IGFuZCByZXR1cm4gMCBhcyBubyBlcnJvci4KLQkgKiAoQWx0aG91Z2ggYXMgSSBzZWUsIGl0IG9ubHkgbWF0dGVycyBvbiB3cml0YWJsZSBmaWxlCi0JICogc3lzdGVtcykuCi0JICovCi0KLW91dDA6CWlub2RlID0gTlVMTDsKK3N1Y2Nlc3M6CisJZF9hZGQoZGVudHJ5LCBpbm9kZSk7CiAJcmVzID0gMDsKLQlkX2FkZCAoZGVudHJ5LCBpbm9kZSk7Ci0KLW91dDoJdW5sb2NrX2tlcm5lbCgpOworZXJyb3I6CisJdW5sb2NrX2tlcm5lbCgpOwogCXJldHVybiBFUlJfUFRSKHJlcyk7CiB9CiAKZGlmZiAtLWdpdCBhL2ZzL3NpZ25hbGZkLmMgYi9mcy9zaWduYWxmZC5jCmluZGV4IGNiMmI2M2EuLjhlYWQwZGIgMTAwNjQ0Ci0tLSBhL2ZzL3NpZ25hbGZkLmMKKysrIGIvZnMvc2lnbmFsZmQuYwpAQCAtMTExLDkgKzExMSwxNCBAQAogCQllcnIgfD0gX19wdXRfdXNlcihraW5mby0+c2lfdWlkLCAmdWluZm8tPnNzaV91aWQpOwogCQllcnIgfD0gX19wdXRfdXNlcigobG9uZykga2luZm8tPnNpX3B0ciwgJnVpbmZvLT5zc2lfcHRyKTsKIAkJYnJlYWs7Ci0JZGVmYXVsdDogLyogdGhpcyBpcyBqdXN0IGluIGNhc2UgZm9yIG5vdyAuLi4gKi8KKwlkZWZhdWx0OgorCQkvKgorCQkgKiBUaGlzIGNhc2UgY2F0Y2hlcyBhbHNvIHRoZSBzaWduYWxzIHF1ZXVlZCBieSBzaWdxdWV1ZSgpLgorCQkgKi8KIAkJZXJyIHw9IF9fcHV0X3VzZXIoa2luZm8tPnNpX3BpZCwgJnVpbmZvLT5zc2lfcGlkKTsKIAkJZXJyIHw9IF9fcHV0X3VzZXIoa2luZm8tPnNpX3VpZCwgJnVpbmZvLT5zc2lfdWlkKTsKKwkJZXJyIHw9IF9fcHV0X3VzZXIoKGxvbmcpIGtpbmZvLT5zaV9wdHIsICZ1aW5mby0+c3NpX3B0cik7CisJCWVyciB8PSBfX3B1dF91c2VyKGtpbmZvLT5zaV9pbnQsICZ1aW5mby0+c3NpX2ludCk7CiAJCWJyZWFrOwogCX0KIApkaWZmIC0tZ2l0IGEvZnMvc21iZnMvc21iaW9kLmMgYi9mcy9zbWJmcy9zbWJpb2QuYwppbmRleCBmYWU4ZTg1Li42YmQ5YjY5IDEwMDY0NAotLS0gYS9mcy9zbWJmcy9zbWJpb2QuYworKysgYi9mcy9zbWJmcy9zbWJpb2QuYwpAQCAtMjA2LDcgKzIwNiw3IEBACiAKIAlzbWJfY2xvc2Vfc29ja2V0KHNlcnZlcik7CiAKLQlpZiAocGlkID09IDApIHsKKwlpZiAoIXBpZCkgewogCQkvKiBGSVhNRTogdGhpcyBpcyBmYXRhbCwgdW1vdW50PyAqLwogCQlwcmludGsoS0VSTl9FUlIgInNtYl9yZXRyeTogbm8gY29ubmVjdGlvbiBwcm9jZXNzXG4iKTsKIAkJc2VydmVyLT5zdGF0ZSA9IENPTk5fUkVUUklFRDsKZGlmZiAtLWdpdCBhL2ZzL3NwbGljZS5jIGIvZnMvc3BsaWNlLmMKaW5kZXggMDY3MGM5MS4uZWViMWE4NiAxMDA2NDQKLS0tIGEvZnMvc3BsaWNlLmMKKysrIGIvZnMvc3BsaWNlLmMKQEAgLTMyMCw3ICszMjAsNyBAQAogCQkJCWJyZWFrOwogCiAJCQllcnJvciA9IGFkZF90b19wYWdlX2NhY2hlX2xydShwYWdlLCBtYXBwaW5nLCBpbmRleCwKLQkJCQkJICAgICAgR0ZQX0tFUk5FTCk7CisJCQkJCQltYXBwaW5nX2dmcF9tYXNrKG1hcHBpbmcpKTsKIAkJCWlmICh1bmxpa2VseShlcnJvcikpIHsKIAkJCQlwYWdlX2NhY2hlX3JlbGVhc2UocGFnZSk7CiAJCQkJaWYgKGVycm9yID09IC1FRVhJU1QpCkBAIC0zNzAsOCArMzcwLDEwIEBACiAJCQkgKiBmb3IgYW4gaW4tZmxpZ2h0IGlvIHBhZ2UKIAkJCSAqLwogCQkJaWYgKGZsYWdzICYgU1BMSUNFX0ZfTk9OQkxPQ0spIHsKLQkJCQlpZiAoVGVzdFNldFBhZ2VMb2NrZWQocGFnZSkpCisJCQkJaWYgKFRlc3RTZXRQYWdlTG9ja2VkKHBhZ2UpKSB7CisJCQkJCWVycm9yID0gLUVBR0FJTjsKIAkJCQkJYnJlYWs7CisJCQkJfQogCQkJfSBlbHNlCiAJCQkJbG9ja19wYWdlKHBhZ2UpOwogCkBAIC00NzksOSArNDgxLDggQEAKIAkJCQkgc3RydWN0IHBpcGVfaW5vZGVfaW5mbyAqcGlwZSwgc2l6ZV90IGxlbiwKIAkJCQkgdW5zaWduZWQgaW50IGZsYWdzKQogewotCXNzaXplX3Qgc3BsaWNlZDsKLQlpbnQgcmV0OwogCWxvZmZfdCBpc2l6ZSwgbGVmdDsKKwlpbnQgcmV0OwogCiAJaXNpemUgPSBpX3NpemVfcmVhZChpbi0+Zl9tYXBwaW5nLT5ob3N0KTsKIAlpZiAodW5saWtlbHkoKnBwb3MgPj0gaXNpemUpKQpAQCAtNDkxLDI5ICs0OTIsOSBAQAogCWlmICh1bmxpa2VseShsZWZ0IDwgbGVuKSkKIAkJbGVuID0gbGVmdDsKIAotCXJldCA9IDA7Ci0Jc3BsaWNlZCA9IDA7Ci0Jd2hpbGUgKGxlbiAmJiAhc3BsaWNlZCkgewotCQlyZXQgPSBfX2dlbmVyaWNfZmlsZV9zcGxpY2VfcmVhZChpbiwgcHBvcywgcGlwZSwgbGVuLCBmbGFncyk7Ci0KLQkJaWYgKHJldCA8IDApCi0JCQlicmVhazsKLQkJZWxzZSBpZiAoIXJldCkgewotCQkJaWYgKHNwbGljZWQpCi0JCQkJYnJlYWs7Ci0JCQlpZiAoZmxhZ3MgJiBTUExJQ0VfRl9OT05CTE9DSykgewotCQkJCXJldCA9IC1FQUdBSU47Ci0JCQkJYnJlYWs7Ci0JCQl9Ci0JCX0KLQorCXJldCA9IF9fZ2VuZXJpY19maWxlX3NwbGljZV9yZWFkKGluLCBwcG9zLCBwaXBlLCBsZW4sIGZsYWdzKTsKKwlpZiAocmV0ID4gMCkKIAkJKnBwb3MgKz0gcmV0OwotCQlsZW4gLT0gcmV0OwotCQlzcGxpY2VkICs9IHJldDsKLQl9Ci0KLQlpZiAoc3BsaWNlZCkKLQkJcmV0dXJuIHNwbGljZWQ7CiAKIAlyZXR1cm4gcmV0OwogfQpkaWZmIC0tZ2l0IGEvZnMvc3VwZXIuYyBiL2ZzL3N1cGVyLmMKaW5kZXggMDEwNDQ2ZC4uMDkwMDhkYiAxMDA2NDQKLS0tIGEvZnMvc3VwZXIuYworKysgYi9mcy9zdXBlci5jCkBAIC01NTYsMTEgKzU1NiwxMSBAQAogfQogCiAvKioKLSAqCW1hcmtfZmlsZXNfcm8KKyAqCW1hcmtfZmlsZXNfcm8gLSBtYXJrIGFsbCBmaWxlcyByZWFkLW9ubHkKICAqCUBzYjogc3VwZXJibG9jayBpbiBxdWVzdGlvbgogICoKLSAqCUFsbCBmaWxlcyBhcmUgbWFya2VkIHJlYWQvb25seS4gIFdlIGRvbid0IGNhcmUgYWJvdXQgcGVuZGluZwotICoJZGVsZXRlIGZpbGVzIHNvIHRoaXMgc2hvdWxkIGJlIHVzZWQgaW4gJ2ZvcmNlJyBtb2RlIG9ubHkKKyAqCUFsbCBmaWxlcyBhcmUgbWFya2VkIHJlYWQtb25seS4gIFdlIGRvbid0IGNhcmUgYWJvdXQgcGVuZGluZworICoJZGVsZXRlIGZpbGVzIHNvIHRoaXMgc2hvdWxkIGJlIHVzZWQgaW4gJ2ZvcmNlJyBtb2RlIG9ubHkuCiAgKi8KIAogc3RhdGljIHZvaWQgbWFya19maWxlc19ybyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKQpAQCAtOTQ1LDYgKzk0NSw3IEBACiAJcHV0X2ZpbGVzeXN0ZW0odHlwZSk7CiAJcmV0dXJuIG1udDsKIH0KK0VYUE9SVF9TWU1CT0xfR1BMKGRvX2tlcm5fbW91bnQpOwogCiBzdHJ1Y3QgdmZzbW91bnQgKmtlcm5fbW91bnRfZGF0YShzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqdHlwZSwgdm9pZCAqZGF0YSkKIHsKZGlmZiAtLWdpdCBhL2ZzL3N5c2ZzL2ZpbGUuYyBiL2ZzL3N5c2ZzL2ZpbGUuYwppbmRleCBhMjcxYzg3Li5iYWE2NjNlIDEwMDY0NAotLS0gYS9mcy9zeXNmcy9maWxlLmMKKysrIGIvZnMvc3lzZnMvZmlsZS5jCkBAIC0xMiw2ICsxMiw3IEBACiAKICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KICNpbmNsdWRlIDxsaW51eC9rb2JqZWN0Lmg+CisjaW5jbHVkZSA8bGludXgva2FsbHN5bXMuaD4KICNpbmNsdWRlIDxsaW51eC9uYW1laS5oPgogI2luY2x1ZGUgPGxpbnV4L3BvbGwuaD4KICNpbmNsdWRlIDxsaW51eC9saXN0Lmg+CkBAIC04Niw3ICs4NywxMiBAQAogCSAqIFRoZSBjb2RlIHdvcmtzIGZpbmUgd2l0aCBQQUdFX1NJWkUgcmV0dXJuIGJ1dCBpdCdzIGxpa2VseSB0bwogCSAqIGluZGljYXRlIHRydW5jYXRlZCByZXN1bHQgb3Igb3ZlcmZsb3cgaW4gbm9ybWFsIHVzZSBjYXNlcy4KIAkgKi8KLQlCVUdfT04oY291bnQgPj0gKHNzaXplX3QpUEFHRV9TSVpFKTsKKwlpZiAoY291bnQgPj0gKHNzaXplX3QpUEFHRV9TSVpFKSB7CisJCXByaW50X3N5bWJvbCgiZmlsbF9yZWFkX2J1ZmZlcjogJXMgcmV0dXJuZWQgYmFkIGNvdW50XG4iLAorCQkJKHVuc2lnbmVkIGxvbmcpb3BzLT5zaG93KTsKKwkJLyogVHJ5IHRvIHN0cnVnZ2xlIGFsb25nICovCisJCWNvdW50ID0gUEFHRV9TSVpFIC0gMTsKKwl9CiAJaWYgKGNvdW50ID49IDApIHsKIAkJYnVmZmVyLT5uZWVkc19yZWFkX2ZpbGwgPSAwOwogCQlidWZmZXItPmNvdW50ID0gY291bnQ7CmRpZmYgLS1naXQgYS9mcy91ZnMvYmFsbG9jLmMgYi9mcy91ZnMvYmFsbG9jLmMKaW5kZXggMWZjYTM4MS4uMWU3NTk4ZiAxMDA2NDQKLS0tIGEvZnMvdWZzL2JhbGxvYy5jCisrKyBiL2ZzL3Vmcy9iYWxsb2MuYwpAQCAtMzE1LDggKzMxNSw4IEBACiAJCQl9CiAKIAkJCVVGU0QoIiBjaGFuZ2UgZnJvbSAlbGx1IHRvICVsbHUsIHBvcyAldVxuIiwKLQkJCSAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZylwb3MgKyBvbGRiLAotCQkJICAgICAodW5zaWduZWQgbG9uZyBsb25nKXBvcyArIG5ld2IsIHBvcyk7CisJCQkgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpKHBvcyArIG9sZGIpLAorCQkJICAgICAodW5zaWduZWQgbG9uZyBsb25nKShwb3MgKyBuZXdiKSwgcG9zKTsKIAogCQkJYmgtPmJfYmxvY2tuciA9IG5ld2IgKyBwb3M7CiAJCQl1bm1hcF91bmRlcmx5aW5nX21ldGFkYXRhKGJoLT5iX2JkZXYsCmRpZmYgLS1naXQgYS9mcy94ZnMvbGludXgtMi42L3hmc19pb2N0bC5jIGIvZnMveGZzL2xpbnV4LTIuNi94ZnNfaW9jdGwuYwppbmRleCBhOTk1MmU0Li5mMzRiZDAxIDEwMDY0NAotLS0gYS9mcy94ZnMvbGludXgtMi42L3hmc19pb2N0bC5jCisrKyBiL2ZzL3hmcy9saW51eC0yLjYveGZzX2lvY3RsLmMKQEAgLTczMiw3ICs3MzIsNyBAQAogCQkgKiBPbmx5IGFsbG93IHRoZSBzeXMgYWRtaW4gdG8gcmVzZXJ2ZSBzcGFjZSB1bmxlc3MKIAkJICogdW53cml0dGVuIGV4dGVudHMgYXJlIGVuYWJsZWQuCiAJCSAqLwotCQlpZiAoIVhGU19TQl9WRVJTSU9OX0hBU0VYVEZMR0JJVCgmbXAtPm1fc2IpICYmCisJCWlmICgheGZzX3NiX3ZlcnNpb25faGFzZXh0ZmxnYml0KCZtcC0+bV9zYikgJiYKIAkJICAgICFjYXBhYmxlKENBUF9TWVNfQURNSU4pKQogCQkJcmV0dXJuIC1FUEVSTTsKIApkaWZmIC0tZ2l0IGEvZnMveGZzL3F1b3RhL3hmc19xbS5jIGIvZnMveGZzL3F1b3RhL3hmc19xbS5jCmluZGV4IDFmM2RhNWIuLjhlOWM1YWUgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy9xdW90YS94ZnNfcW0uYworKysgYi9mcy94ZnMvcXVvdGEveGZzX3FtLmMKQEAgLTE0MDUsMTMgKzE0MDUsMTMgQEAKICNpZiBkZWZpbmVkKERFQlVHKSAmJiBkZWZpbmVkKFhGU19MT1VEX1JFQ09WRVJZKQogCQl1bnNpZ25lZCBvbGR2ID0gbXAtPm1fc2Iuc2JfdmVyc2lvbm51bTsKICNlbmRpZgotCQlBU1NFUlQoIVhGU19TQl9WRVJTSU9OX0hBU1FVT1RBKCZtcC0+bV9zYikpOworCQlBU1NFUlQoIXhmc19zYl92ZXJzaW9uX2hhc3F1b3RhKCZtcC0+bV9zYikpOwogCQlBU1NFUlQoKHNiZmllbGRzICYgKFhGU19TQl9WRVJTSU9OTlVNIHwgWEZTX1NCX1VRVU9USU5PIHwKIAkJCQkgICBYRlNfU0JfR1FVT1RJTk8gfCBYRlNfU0JfUUZMQUdTKSkgPT0KIAkJICAgICAgIChYRlNfU0JfVkVSU0lPTk5VTSB8IFhGU19TQl9VUVVPVElOTyB8CiAJCQlYRlNfU0JfR1FVT1RJTk8gfCBYRlNfU0JfUUZMQUdTKSk7CiAKLQkJWEZTX1NCX1ZFUlNJT05fQUREUVVPVEEoJm1wLT5tX3NiKTsKKwkJeGZzX3NiX3ZlcnNpb25fYWRkcXVvdGEoJm1wLT5tX3NiKTsKIAkJbXAtPm1fc2Iuc2JfdXF1b3Rpbm8gPSBOVUxMRlNJTk87CiAJCW1wLT5tX3NiLnNiX2dxdW90aW5vID0gTlVMTEZTSU5POwogCkBAIC0xOTU0LDcgKzE5NTQsNyBAQAogCS8qCiAJICogR2V0IHRoZSB1cXVvdGEgYW5kIGdxdW90YSBpbm9kZXMKIAkgKi8KLQlpZiAoWEZTX1NCX1ZFUlNJT05fSEFTUVVPVEEoJm1wLT5tX3NiKSkgeworCWlmICh4ZnNfc2JfdmVyc2lvbl9oYXNxdW90YSgmbXAtPm1fc2IpKSB7CiAJCWlmIChYRlNfSVNfVVFVT1RBX09OKG1wKSAmJgogCQkgICAgbXAtPm1fc2Iuc2JfdXF1b3Rpbm8gIT0gTlVMTEZTSU5PKSB7CiAJCQlBU1NFUlQobXAtPm1fc2Iuc2JfdXF1b3Rpbm8gPiAwKTsKZGlmZiAtLWdpdCBhL2ZzL3hmcy9xdW90YS94ZnNfcW1fYmh2LmMgYi9mcy94ZnMvcXVvdGEveGZzX3FtX2Jodi5jCmluZGV4IDk3YmIzMjkuLmY0ZjZjNGMgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy9xdW90YS94ZnNfcW1fYmh2LmMKKysrIGIvZnMveGZzL3F1b3RhL3hmc19xbV9iaHYuYwpAQCAtMTE4LDcgKzExOCw3IEBACiAJKnF1b3RhZmxhZ3MgPSAwOwogCSpuZWVkcXVvdGFtb3VudCA9IEJfRkFMU0U7CiAKLQlxdW90YW9uZGlzayA9IFhGU19TQl9WRVJTSU9OX0hBU1FVT1RBKCZtcC0+bV9zYikgJiYKKwlxdW90YW9uZGlzayA9IHhmc19zYl92ZXJzaW9uX2hhc3F1b3RhKCZtcC0+bV9zYikgJiYKIAkJCQkobXAtPm1fc2Iuc2JfcWZsYWdzICYgWEZTX0FMTF9RVU9UQV9BQ0NUKTsKIAogCWlmIChxdW90YW9uZGlzaykgewpkaWZmIC0tZ2l0IGEvZnMveGZzL3F1b3RhL3hmc19xbV9zeXNjYWxscy5jIGIvZnMveGZzL3F1b3RhL3hmc19xbV9zeXNjYWxscy5jCmluZGV4IDJjYzU4ODYuLmQyYjhiZTcgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy9xdW90YS94ZnNfcW1fc3lzY2FsbHMuYworKysgYi9mcy94ZnMvcXVvdGEveGZzX3FtX3N5c2NhbGxzLmMKQEAgLTM3Nyw3ICszNzcsNyBAQAogCWlmICghY2FwYWJsZShDQVBfU1lTX0FETUlOKSkKIAkJcmV0dXJuIFhGU19FUlJPUihFUEVSTSk7CiAJZXJyb3IgPSAwOwotCWlmICghWEZTX1NCX1ZFUlNJT05fSEFTUVVPVEEoJm1wLT5tX3NiKSB8fCBmbGFncyA9PSAwKSB7CisJaWYgKCF4ZnNfc2JfdmVyc2lvbl9oYXNxdW90YSgmbXAtPm1fc2IpIHx8IGZsYWdzID09IDApIHsKIAkJcWRwcmludGsoInF0cnVuYyBmbGFncz0leCBtX3FmbGFncz0leFxuIiwgZmxhZ3MsIG1wLT5tX3FmbGFncyk7CiAJCXJldHVybiBYRlNfRVJST1IoRUlOVkFMKTsKIAl9CkBAIC01MjIsNyArNTIyLDcgQEAKIAltZW1zZXQob3V0LCAwLCBzaXplb2YoZnNfcXVvdGFfc3RhdF90KSk7CiAKIAlvdXQtPnFzX3ZlcnNpb24gPSBGU19RU1RBVF9WRVJTSU9OOwotCWlmICghIFhGU19TQl9WRVJTSU9OX0hBU1FVT1RBKCZtcC0+bV9zYikpIHsKKwlpZiAoIXhmc19zYl92ZXJzaW9uX2hhc3F1b3RhKCZtcC0+bV9zYikpIHsKIAkJb3V0LT5xc191cXVvdGEucWZzX2lubyA9IE5VTExGU0lOTzsKIAkJb3V0LT5xc19ncXVvdGEucWZzX2lubyA9IE5VTExGU0lOTzsKIAkJcmV0dXJuICgwKTsKZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfYXR0cl9sZWFmLmMgYi9mcy94ZnMveGZzX2F0dHJfbGVhZi5jCmluZGV4IGIwOGUyYTIuLjk2YmE2YWEgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfYXR0cl9sZWFmLmMKKysrIGIvZnMveGZzL3hmc19hdHRyX2xlYWYuYwpAQCAtMjI3LDEwICsyMjcsMTAgQEAKIHhmc19zYnZlcnNpb25fYWRkX2F0dHIyKHhmc19tb3VudF90ICptcCwgeGZzX3RyYW5zX3QgKnRwKQogewogCWlmICgobXAtPm1fZmxhZ3MgJiBYRlNfTU9VTlRfQVRUUjIpICYmCi0JICAgICEoWEZTX1NCX1ZFUlNJT05fSEFTQVRUUjIoJm1wLT5tX3NiKSkpIHsKKwkgICAgISh4ZnNfc2JfdmVyc2lvbl9oYXNhdHRyMigmbXAtPm1fc2IpKSkgewogCQlzcGluX2xvY2soJm1wLT5tX3NiX2xvY2spOwotCQlpZiAoIVhGU19TQl9WRVJTSU9OX0hBU0FUVFIyKCZtcC0+bV9zYikpIHsKLQkJCVhGU19TQl9WRVJTSU9OX0FEREFUVFIyKCZtcC0+bV9zYik7CisJCWlmICgheGZzX3NiX3ZlcnNpb25faGFzYXR0cjIoJm1wLT5tX3NiKSkgeworCQkJeGZzX3NiX3ZlcnNpb25fYWRkYXR0cjIoJm1wLT5tX3NiKTsKIAkJCXNwaW5fdW5sb2NrKCZtcC0+bV9zYl9sb2NrKTsKIAkJCXhmc19tb2Rfc2IodHAsIFhGU19TQl9WRVJTSU9OTlVNIHwgWEZTX1NCX0ZFQVRVUkVTMik7CiAJCX0gZWxzZQpkaWZmIC0tZ2l0IGEvZnMveGZzL3hmc19ibWFwLmMgYi9mcy94ZnMveGZzX2JtYXAuYwppbmRleCAxYzBhNWE1Li4yZGVmMjczIDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX2JtYXAuYworKysgYi9mcy94ZnMveGZzX2JtYXAuYwpAQCAtNDA0NywxNyArNDA0NywxNyBAQAogCQl4ZnNfdHJhbnNfbG9nX2lub2RlKHRwLCBpcCwgbG9nZmxhZ3MpOwogCWlmIChlcnJvcikKIAkJZ290byBlcnJvcjI7Ci0JaWYgKCFYRlNfU0JfVkVSU0lPTl9IQVNBVFRSKCZtcC0+bV9zYikgfHwKLQkgICAoIVhGU19TQl9WRVJTSU9OX0hBU0FUVFIyKCZtcC0+bV9zYikgJiYgdmVyc2lvbiA9PSAyKSkgeworCWlmICgheGZzX3NiX3ZlcnNpb25faGFzYXR0cigmbXAtPm1fc2IpIHx8CisJICAgKCF4ZnNfc2JfdmVyc2lvbl9oYXNhdHRyMigmbXAtPm1fc2IpICYmIHZlcnNpb24gPT0gMikpIHsKIAkJX19pbnQ2NF90IHNiZmllbGRzID0gMDsKIAogCQlzcGluX2xvY2soJm1wLT5tX3NiX2xvY2spOwotCQlpZiAoIVhGU19TQl9WRVJTSU9OX0hBU0FUVFIoJm1wLT5tX3NiKSkgewotCQkJWEZTX1NCX1ZFUlNJT05fQUREQVRUUigmbXAtPm1fc2IpOworCQlpZiAoIXhmc19zYl92ZXJzaW9uX2hhc2F0dHIoJm1wLT5tX3NiKSkgeworCQkJeGZzX3NiX3ZlcnNpb25fYWRkYXR0cigmbXAtPm1fc2IpOwogCQkJc2JmaWVsZHMgfD0gWEZTX1NCX1ZFUlNJT05OVU07CiAJCX0KLQkJaWYgKCFYRlNfU0JfVkVSU0lPTl9IQVNBVFRSMigmbXAtPm1fc2IpICYmIHZlcnNpb24gPT0gMikgewotCQkJWEZTX1NCX1ZFUlNJT05fQUREQVRUUjIoJm1wLT5tX3NiKTsKKwkJaWYgKCF4ZnNfc2JfdmVyc2lvbl9oYXNhdHRyMigmbXAtPm1fc2IpICYmIHZlcnNpb24gPT0gMikgeworCQkJeGZzX3NiX3ZlcnNpb25fYWRkYXR0cjIoJm1wLT5tX3NiKTsKIAkJCXNiZmllbGRzIHw9IChYRlNfU0JfVkVSU0lPTk5VTSB8IFhGU19TQl9GRUFUVVJFUzIpOwogCQl9CiAJCWlmIChzYmZpZWxkcykgewpAQCAtNTA0Myw3ICs1MDQzLDcgQEAKIAkJCSAqIEEgd2FzZGVsYXkgZXh0ZW50IGhhcyBiZWVuIGluaXRpYWxpemVkLCBzbwogCQkJICogc2hvdWxkbid0IGJlIGZsYWdnZWQgYXMgdW53cml0dGVuLgogCQkJICovCi0JCQlpZiAod3IgJiYgWEZTX1NCX1ZFUlNJT05fSEFTRVhURkxHQklUKCZtcC0+bV9zYikpIHsKKwkJCWlmICh3ciAmJiB4ZnNfc2JfdmVyc2lvbl9oYXNleHRmbGdiaXQoJm1wLT5tX3NiKSkgewogCQkJCWlmICghd2FzZGVsYXkgJiYgKGZsYWdzICYgWEZTX0JNQVBJX1BSRUFMTE9DKSkKIAkJCQkJZ290LmJyX3N0YXRlID0gWEZTX0VYVF9VTldSSVRURU47CiAJCQl9CkBAIC01NDgzLDcgKzU0ODMsNyBAQAogCQkJICogZ2V0IHJpZCBvZiBwYXJ0IG9mIGEgcmVhbHRpbWUgZXh0ZW50LgogCQkJICovCiAJCQlpZiAoZGVsLmJyX3N0YXRlID09IFhGU19FWFRfVU5XUklUVEVOIHx8Ci0JCQkgICAgIVhGU19TQl9WRVJTSU9OX0hBU0VYVEZMR0JJVCgmbXAtPm1fc2IpKSB7CisJCQkgICAgIXhmc19zYl92ZXJzaW9uX2hhc2V4dGZsZ2JpdCgmbXAtPm1fc2IpKSB7CiAJCQkJLyoKIAkJCQkgKiBUaGlzIHBpZWNlIGlzIHVud3JpdHRlbiwgb3Igd2UncmUgbm90CiAJCQkJICogdXNpbmcgdW53cml0dGVuIGV4dGVudHMuICBTa2lwIG92ZXIgaXQuCkBAIC01NTM1LDcgKzU1MzUsNyBAQAogCQkJfSBlbHNlIGlmICgoZGVsLmJyX3N0YXJ0b2ZmID09IHN0YXJ0ICYmCiAJCQkJICAgIChkZWwuYnJfc3RhdGUgPT0gWEZTX0VYVF9VTldSSVRURU4gfHwKIAkJCQkgICAgIHhmc190cmFuc19nZXRfYmxvY2tfcmVzKHRwKSA9PSAwKSkgfHwKLQkJCQkgICAhWEZTX1NCX1ZFUlNJT05fSEFTRVhURkxHQklUKCZtcC0+bV9zYikpIHsKKwkJCQkgICAheGZzX3NiX3ZlcnNpb25faGFzZXh0ZmxnYml0KCZtcC0+bV9zYikpIHsKIAkJCQkvKgogCQkJCSAqIENhbid0IG1ha2UgaXQgdW53cml0dGVuLiAgVGhlcmUgaXNuJ3QKIAkJCQkgKiBhIGZ1bGwgZXh0ZW50IGhlcmUgc28ganVzdCBza2lwIGl0LgpkaWZmIC0tZ2l0IGEvZnMveGZzL3hmc19ibWFwX2J0cmVlLmggYi9mcy94ZnMveGZzX2JtYXBfYnRyZWUuaAppbmRleCAyZDk1MGU5Li5jZDBkNGI0IDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX2JtYXBfYnRyZWUuaAorKysgYi9mcy94ZnMveGZzX2JtYXBfYnRyZWUuaApAQCAtMTIwLDcgKzEyMCw3IEBACiAgKiBFeHRlbnQgc3RhdGUgYW5kIGV4dGVudCBmb3JtYXQgbWFjcm9zLgogICovCiAjZGVmaW5lIFhGU19FWFRGTVRfSU5PREUoeCkJXAotCShYRlNfU0JfVkVSU0lPTl9IQVNFWFRGTEdCSVQoJigoeCktPmlfbW91bnQtPm1fc2IpKSA/IFwKKwkoeGZzX3NiX3ZlcnNpb25faGFzZXh0ZmxnYml0KCYoKHgpLT5pX21vdW50LT5tX3NiKSkgPyBcCiAJCVhGU19FWFRGTVRfSEFTU1RBVEUgOiBYRlNfRVhURk1UX05PU1RBVEUpCiAjZGVmaW5lIElTVU5XUklUVEVOKHgpCSgoeCktPmJyX3N0YXRlID09IFhGU19FWFRfVU5XUklUVEVOKQogCmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX2RpcjIuYyBiL2ZzL3hmcy94ZnNfZGlyMi5jCmluZGV4IGJlN2M0MjUuLmU5MmU3M2YgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfZGlyMi5jCisrKyBiL2ZzL3hmcy94ZnNfZGlyMi5jCkBAIC00OSw3ICs0OSw3IEBACiB4ZnNfZGlyX21vdW50KAogCXhmc19tb3VudF90CSptcCkKIHsKLQlBU1NFUlQoWEZTX1NCX1ZFUlNJT05fSEFTRElSVjIoJm1wLT5tX3NiKSk7CisJQVNTRVJUKHhmc19zYl92ZXJzaW9uX2hhc2RpcnYyKCZtcC0+bV9zYikpOwogCUFTU0VSVCgoMSA8PCAobXAtPm1fc2Iuc2JfYmxvY2tsb2cgKyBtcC0+bV9zYi5zYl9kaXJibGtsb2cpKSA8PQogCSAgICAgICBYRlNfTUFYX0JMT0NLU0laRSk7CiAJbXAtPm1fZGlyYmxrc2l6ZSA9IDEgPDwgKG1wLT5tX3NiLnNiX2Jsb2NrbG9nICsgbXAtPm1fc2Iuc2JfZGlyYmxrbG9nKTsKZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfZnNvcHMuYyBiL2ZzL3hmcy94ZnNfZnNvcHMuYwppbmRleCBlYWRjMTU5Li5kM2EwZjUzIDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX2Zzb3BzLmMKKysrIGIvZnMveGZzL3hmc19mc29wcy5jCkBAIC03NywzNiArNzcsMzYgQEAKIAlpZiAobmV3X3ZlcnNpb24gPj0gMykgewogCQlnZW8tPnZlcnNpb24gPSBYRlNfRlNPUF9HRU9NX1ZFUlNJT047CiAJCWdlby0+ZmxhZ3MgPQotCQkJKFhGU19TQl9WRVJTSU9OX0hBU0FUVFIoJm1wLT5tX3NiKSA/CisJCQkoeGZzX3NiX3ZlcnNpb25faGFzYXR0cigmbXAtPm1fc2IpID8KIAkJCQlYRlNfRlNPUF9HRU9NX0ZMQUdTX0FUVFIgOiAwKSB8Ci0JCQkoWEZTX1NCX1ZFUlNJT05fSEFTTkxJTksoJm1wLT5tX3NiKSA/CisJCQkoeGZzX3NiX3ZlcnNpb25faGFzbmxpbmsoJm1wLT5tX3NiKSA/CiAJCQkJWEZTX0ZTT1BfR0VPTV9GTEFHU19OTElOSyA6IDApIHwKLQkJCShYRlNfU0JfVkVSU0lPTl9IQVNRVU9UQSgmbXAtPm1fc2IpID8KKwkJCSh4ZnNfc2JfdmVyc2lvbl9oYXNxdW90YSgmbXAtPm1fc2IpID8KIAkJCQlYRlNfRlNPUF9HRU9NX0ZMQUdTX1FVT1RBIDogMCkgfAotCQkJKFhGU19TQl9WRVJTSU9OX0hBU0FMSUdOKCZtcC0+bV9zYikgPworCQkJKHhmc19zYl92ZXJzaW9uX2hhc2FsaWduKCZtcC0+bV9zYikgPwogCQkJCVhGU19GU09QX0dFT01fRkxBR1NfSUFMSUdOIDogMCkgfAotCQkJKFhGU19TQl9WRVJTSU9OX0hBU0RBTElHTigmbXAtPm1fc2IpID8KKwkJCSh4ZnNfc2JfdmVyc2lvbl9oYXNkYWxpZ24oJm1wLT5tX3NiKSA/CiAJCQkJWEZTX0ZTT1BfR0VPTV9GTEFHU19EQUxJR04gOiAwKSB8Ci0JCQkoWEZTX1NCX1ZFUlNJT05fSEFTU0hBUkVEKCZtcC0+bV9zYikgPworCQkJKHhmc19zYl92ZXJzaW9uX2hhc3NoYXJlZCgmbXAtPm1fc2IpID8KIAkJCQlYRlNfRlNPUF9HRU9NX0ZMQUdTX1NIQVJFRCA6IDApIHwKLQkJCShYRlNfU0JfVkVSU0lPTl9IQVNFWFRGTEdCSVQoJm1wLT5tX3NiKSA/CisJCQkoeGZzX3NiX3ZlcnNpb25faGFzZXh0ZmxnYml0KCZtcC0+bV9zYikgPwogCQkJCVhGU19GU09QX0dFT01fRkxBR1NfRVhURkxHIDogMCkgfAotCQkJKFhGU19TQl9WRVJTSU9OX0hBU0RJUlYyKCZtcC0+bV9zYikgPworCQkJKHhmc19zYl92ZXJzaW9uX2hhc2RpcnYyKCZtcC0+bV9zYikgPwogCQkJCVhGU19GU09QX0dFT01fRkxBR1NfRElSVjIgOiAwKSB8Ci0JCQkoWEZTX1NCX1ZFUlNJT05fSEFTU0VDVE9SKCZtcC0+bV9zYikgPworCQkJKHhmc19zYl92ZXJzaW9uX2hhc3NlY3RvcigmbXAtPm1fc2IpID8KIAkJCQlYRlNfRlNPUF9HRU9NX0ZMQUdTX1NFQ1RPUiA6IDApIHwKIAkJCSh4ZnNfc2JfdmVyc2lvbl9oYXNsYXp5c2Jjb3VudCgmbXAtPm1fc2IpID8KIAkJCQlYRlNfRlNPUF9HRU9NX0ZMQUdTX0xBWllTQiA6IDApIHwKLQkJCShYRlNfU0JfVkVSU0lPTl9IQVNBVFRSMigmbXAtPm1fc2IpID8KKwkJCSh4ZnNfc2JfdmVyc2lvbl9oYXNhdHRyMigmbXAtPm1fc2IpID8KIAkJCQlYRlNfRlNPUF9HRU9NX0ZMQUdTX0FUVFIyIDogMCk7Ci0JCWdlby0+bG9nc2VjdHNpemUgPSBYRlNfU0JfVkVSU0lPTl9IQVNTRUNUT1IoJm1wLT5tX3NiKSA/CisJCWdlby0+bG9nc2VjdHNpemUgPSB4ZnNfc2JfdmVyc2lvbl9oYXNzZWN0b3IoJm1wLT5tX3NiKSA/CiAJCQkJbXAtPm1fc2Iuc2JfbG9nc2VjdHNpemUgOiBCQlNJWkU7CiAJCWdlby0+cnRzZWN0c2l6ZSA9IG1wLT5tX3NiLnNiX2Jsb2Nrc2l6ZTsKIAkJZ2VvLT5kaXJibG9ja3NpemUgPSBtcC0+bV9kaXJibGtzaXplOwogCX0KIAlpZiAobmV3X3ZlcnNpb24gPj0gNCkgewogCQlnZW8tPmZsYWdzIHw9Ci0JCQkoWEZTX1NCX1ZFUlNJT05fSEFTTE9HVjIoJm1wLT5tX3NiKSA/CisJCQkoeGZzX3NiX3ZlcnNpb25faGFzbG9ndjIoJm1wLT5tX3NiKSA/CiAJCQkJWEZTX0ZTT1BfR0VPTV9GTEFHU19MT0dWMiA6IDApOwogCQlnZW8tPmxvZ3N1bml0ID0gbXAtPm1fc2Iuc2JfbG9nc3VuaXQ7CiAJfQpkaWZmIC0tZ2l0IGEvZnMveGZzL3hmc19pYWxsb2MuYyBiL2ZzL3hmcy94ZnNfaWFsbG9jLmMKaW5kZXggZGI5ZDVmYS4uNWExNDZjYiAxMDA2NDQKLS0tIGEvZnMveGZzL3hmc19pYWxsb2MuYworKysgYi9mcy94ZnMveGZzX2lhbGxvYy5jCkBAIC0xOTEsNyArMTkxLDcgQEAKIAkJCUFTU0VSVCghKGFyZ3MubXAtPm1fZmxhZ3MgJiBYRlNfTU9VTlRfTk9BTElHTikpOwogCQkJYXJncy5hbGlnbm1lbnQgPSBhcmdzLm1wLT5tX2RhbGlnbjsKIAkJCWlzYWxpZ25lZCA9IDE7Ci0JCX0gZWxzZSBpZiAoWEZTX1NCX1ZFUlNJT05fSEFTQUxJR04oJmFyZ3MubXAtPm1fc2IpICYmCisJCX0gZWxzZSBpZiAoeGZzX3NiX3ZlcnNpb25faGFzYWxpZ24oJmFyZ3MubXAtPm1fc2IpICYmCiAJCQkgICBhcmdzLm1wLT5tX3NiLnNiX2lub2FsaWdubXQgPj0KIAkJCSAgIFhGU19CX1RPX0ZTQlQoYXJncy5tcCwKIAkJCSAgCVhGU19JTk9ERV9DTFVTVEVSX1NJWkUoYXJncy5tcCkpKQpAQCAtMjMwLDcgKzIzMCw3IEBACiAJCWFyZ3MuYWdibm8gPSBiZTMyX3RvX2NwdShhZ2ktPmFnaV9yb290KTsKIAkJYXJncy5mc2JubyA9IFhGU19BR0JfVE9fRlNCKGFyZ3MubXAsCiAJCQkJYmUzMl90b19jcHUoYWdpLT5hZ2lfc2Vxbm8pLCBhcmdzLmFnYm5vKTsKLQkJaWYgKFhGU19TQl9WRVJTSU9OX0hBU0FMSUdOKCZhcmdzLm1wLT5tX3NiKSAmJgorCQlpZiAoeGZzX3NiX3ZlcnNpb25faGFzYWxpZ24oJmFyZ3MubXAtPm1fc2IpICYmCiAJCQlhcmdzLm1wLT5tX3NiLnNiX2lub2FsaWdubXQgPj0KIAkJCVhGU19CX1RPX0ZTQlQoYXJncy5tcCwgWEZTX0lOT0RFX0NMVVNURVJfU0laRShhcmdzLm1wKSkpCiAJCQkJYXJncy5hbGlnbm1lbnQgPSBhcmdzLm1wLT5tX3NiLnNiX2lub2FsaWdubXQ7CkBAIC0yNzEsNyArMjcxLDcgQEAKIAkgKiB1c2UgdGhlIG9sZCB2ZXJzaW9uIHNvIHRoYXQgb2xkIGtlcm5lbHMgd2lsbCBjb250aW51ZSB0byBiZQogCSAqIGFibGUgdG8gdXNlIHRoZSBmaWxlIHN5c3RlbS4KIAkgKi8KLQlpZiAoWEZTX1NCX1ZFUlNJT05fSEFTTkxJTksoJmFyZ3MubXAtPm1fc2IpKQorCWlmICh4ZnNfc2JfdmVyc2lvbl9oYXNubGluaygmYXJncy5tcC0+bV9zYikpCiAJCXZlcnNpb24gPSBYRlNfRElOT0RFX1ZFUlNJT05fMjsKIAllbHNlCiAJCXZlcnNpb24gPSBYRlNfRElOT0RFX1ZFUlNJT05fMTsKZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfaW5vZGUuYyBiL2ZzL3hmcy94ZnNfaW5vZGUuYwppbmRleCBhNTUwNTQ2YS4uZjQzYTZlMCAxMDA2NDQKLS0tIGEvZnMveGZzL3hmc19pbm9kZS5jCisrKyBiL2ZzL3hmcy94ZnNfaW5vZGUuYwpAQCAtMTE0Nyw3ICsxMTQ3LDcgQEAKIAkgKiB0aGUgaW5vZGUgdmVyc2lvbiBudW1iZXIgbm93LiAgVGhpcyB3YXkgd2Ugb25seSBkbyB0aGUgY29udmVyc2lvbgogCSAqIGhlcmUgcmF0aGVyIHRoYW4gaGVyZSBhbmQgaW4gdGhlIGZsdXNoL2xvZ2dpbmcgY29kZS4KIAkgKi8KLQlpZiAoWEZTX1NCX1ZFUlNJT05fSEFTTkxJTksoJnRwLT50X21vdW50cC0+bV9zYikgJiYKKwlpZiAoeGZzX3NiX3ZlcnNpb25faGFzbmxpbmsoJnRwLT50X21vdW50cC0+bV9zYikgJiYKIAkgICAgaXAtPmlfZC5kaV92ZXJzaW9uID09IFhGU19ESU5PREVfVkVSU0lPTl8xKSB7CiAJCWlwLT5pX2QuZGlfdmVyc2lvbiA9IFhGU19ESU5PREVfVkVSU0lPTl8yOwogCQkvKgpAQCAtMzQzNCw5ICszNDM0LDkgQEAKIAkgKiBoYXMgYmVlbiB1cGRhdGVkLCB0aGVuIG1ha2UgdGhlIGNvbnZlcnNpb24gcGVybWFuZW50LgogCSAqLwogCUFTU0VSVChpcC0+aV9kLmRpX3ZlcnNpb24gPT0gWEZTX0RJTk9ERV9WRVJTSU9OXzEgfHwKLQkgICAgICAgWEZTX1NCX1ZFUlNJT05fSEFTTkxJTksoJm1wLT5tX3NiKSk7CisJICAgICAgIHhmc19zYl92ZXJzaW9uX2hhc25saW5rKCZtcC0+bV9zYikpOwogCWlmIChpcC0+aV9kLmRpX3ZlcnNpb24gPT0gWEZTX0RJTk9ERV9WRVJTSU9OXzEpIHsKLQkJaWYgKCFYRlNfU0JfVkVSU0lPTl9IQVNOTElOSygmbXAtPm1fc2IpKSB7CisJCWlmICgheGZzX3NiX3ZlcnNpb25faGFzbmxpbmsoJm1wLT5tX3NiKSkgewogCQkJLyoKIAkJCSAqIENvbnZlcnQgaXQgYmFjay4KIAkJCSAqLwpkaWZmIC0tZ2l0IGEvZnMveGZzL3hmc19pbm9kZV9pdGVtLmMgYi9mcy94ZnMveGZzX2lub2RlX2l0ZW0uYwppbmRleCAwMzRjYTcyLi4yYzc3NWI0IDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX2lub2RlX2l0ZW0uYworKysgYi9mcy94ZnMveGZzX2lub2RlX2l0ZW0uYwpAQCAtMjk2LDkgKzI5Niw5IEBACiAJICovCiAJbXAgPSBpcC0+aV9tb3VudDsKIAlBU1NFUlQoaXAtPmlfZC5kaV92ZXJzaW9uID09IFhGU19ESU5PREVfVkVSU0lPTl8xIHx8Ci0JICAgICAgIFhGU19TQl9WRVJTSU9OX0hBU05MSU5LKCZtcC0+bV9zYikpOworCSAgICAgICB4ZnNfc2JfdmVyc2lvbl9oYXNubGluaygmbXAtPm1fc2IpKTsKIAlpZiAoaXAtPmlfZC5kaV92ZXJzaW9uID09IFhGU19ESU5PREVfVkVSU0lPTl8xKSB7Ci0JCWlmICghWEZTX1NCX1ZFUlNJT05fSEFTTkxJTksoJm1wLT5tX3NiKSkgeworCQlpZiAoIXhmc19zYl92ZXJzaW9uX2hhc25saW5rKCZtcC0+bV9zYikpIHsKIAkJCS8qCiAJCQkgKiBDb252ZXJ0IGl0IGJhY2suCiAJCQkgKi8KZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfaXRhYmxlLmMgYi9mcy94ZnMveGZzX2l0YWJsZS5jCmluZGV4IDY1OGFhYjYuLmY2MTVlMDQgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfaXRhYmxlLmMKKysrIGIvZnMveGZzL3hmc19pdGFibGUuYwpAQCAtNDUsNyArNDUsNyBAQAogCXhmc19pbm9fdAlpbm8pCiB7CiAJcmV0dXJuIChpbm8gPT0gbXAtPm1fc2Iuc2JfcmJtaW5vIHx8IGlubyA9PSBtcC0+bV9zYi5zYl9yc3VtaW5vIHx8Ci0JCShYRlNfU0JfVkVSU0lPTl9IQVNRVU9UQSgmbXAtPm1fc2IpICYmCisJCSh4ZnNfc2JfdmVyc2lvbl9oYXNxdW90YSgmbXAtPm1fc2IpICYmCiAJCSAoaW5vID09IG1wLT5tX3NiLnNiX3VxdW90aW5vIHx8IGlubyA9PSBtcC0+bV9zYi5zYl9ncXVvdGlubykpKTsKIH0KIApkaWZmIC0tZ2l0IGEvZnMveGZzL3hmc19sb2cuYyBiL2ZzL3hmcy94ZnNfbG9nLmMKaW5kZXggYTc1ZWRjYS4uMzFmMmIwNCAxMDA2NDQKLS0tIGEvZnMveGZzL3hmc19sb2cuYworKysgYi9mcy94ZnMveGZzX2xvZy5jCkBAIC0xMDkwLDcgKzEwOTAsNyBAQAogCQkJc2l6ZSA+Pj0gMTsKIAkJfQogCi0JCWlmIChYRlNfU0JfVkVSU0lPTl9IQVNMT0dWMigmbXAtPm1fc2IpKSB7CisJCWlmICh4ZnNfc2JfdmVyc2lvbl9oYXNsb2d2MigmbXAtPm1fc2IpKSB7CiAJCQkvKiAjIGhlYWRlcnMgPSBzaXplIC8gMzJLCiAJCQkgKiBvbmUgaGVhZGVyIGhvbGRzIGN5Y2xlcyBmcm9tIDMySyBvZiBkYXRhCiAJCQkgKi8KQEAgLTExODYsMTMgKzExODYsMTMgQEAKIAlsb2ctPmxfZ3JhbnRfcmVzZXJ2ZV9jeWNsZSA9IDE7CiAJbG9nLT5sX2dyYW50X3dyaXRlX2N5Y2xlID0gMTsKIAotCWlmIChYRlNfU0JfVkVSU0lPTl9IQVNTRUNUT1IoJm1wLT5tX3NiKSkgeworCWlmICh4ZnNfc2JfdmVyc2lvbl9oYXNzZWN0b3IoJm1wLT5tX3NiKSkgewogCQlsb2ctPmxfc2VjdGJiX2xvZyA9IG1wLT5tX3NiLnNiX2xvZ3NlY3Rsb2cgLSBCQlNISUZUOwogCQlBU1NFUlQobG9nLT5sX3NlY3RiYl9sb2cgPD0gbXAtPm1fc2VjdGJiX2xvZyk7CiAJCS8qIGZvciBsYXJnZXIgc2VjdG9yIHNpemVzLCBtdXN0IGhhdmUgdjIgb3IgZXh0ZXJuYWwgbG9nICovCiAJCUFTU0VSVChsb2ctPmxfc2VjdGJiX2xvZyA9PSAwIHx8CiAJCQlsb2ctPmxfbG9nQkJzdGFydCA9PSAwIHx8Ci0JCQlYRlNfU0JfVkVSU0lPTl9IQVNMT0dWMigmbXAtPm1fc2IpKTsKKwkJCXhmc19zYl92ZXJzaW9uX2hhc2xvZ3YyKCZtcC0+bV9zYikpOwogCQlBU1NFUlQobXAtPm1fc2Iuc2JfbG9nc2VjdGxvZyA+PSBCQlNISUZUKTsKIAl9CiAJbG9nLT5sX3NlY3RiYl9tYXNrID0gKDEgPDwgbG9nLT5sX3NlY3RiYl9sb2cpIC0gMTsKQEAgLTEyNDcsNyArMTI0Nyw3IEBACiAJCW1lbXNldChoZWFkLCAwLCBzaXplb2YoeGxvZ19yZWNfaGVhZGVyX3QpKTsKIAkJaGVhZC0+aF9tYWdpY25vID0gY3B1X3RvX2JlMzIoWExPR19IRUFERVJfTUFHSUNfTlVNKTsKIAkJaGVhZC0+aF92ZXJzaW9uID0gY3B1X3RvX2JlMzIoCi0JCQlYRlNfU0JfVkVSU0lPTl9IQVNMT0dWMigmbG9nLT5sX21wLT5tX3NiKSA/IDIgOiAxKTsKKwkJCXhmc19zYl92ZXJzaW9uX2hhc2xvZ3YyKCZsb2ctPmxfbXAtPm1fc2IpID8gMiA6IDEpOwogCQloZWFkLT5oX3NpemUgPSBjcHVfdG9fYmUzMihsb2ctPmxfaWNsb2dfc2l6ZSk7CiAJCS8qIG5ldyBmaWVsZHMgKi8KIAkJaGVhZC0+aF9mbXQgPSBjcHVfdG9fYmUzMihYTE9HX0ZNVCk7CkBAIC0xNDAyLDcgKzE0MDIsNyBAQAogCWludAkJcm91bmRvZmY7ICAgICAgIC8qIHJvdW5kb2ZmIHRvIEJCIG9yIHN0cmlwZSAqLwogCWludAkJc3BsaXQgPSAwOwkvKiBzcGxpdCB3cml0ZSBpbnRvIHR3byByZWdpb25zICovCiAJaW50CQllcnJvcjsKLQlpbnQJCXYyID0gWEZTX1NCX1ZFUlNJT05fSEFTTE9HVjIoJmxvZy0+bF9tcC0+bV9zYik7CisJaW50CQl2MiA9IHhmc19zYl92ZXJzaW9uX2hhc2xvZ3YyKCZsb2ctPmxfbXAtPm1fc2IpOwogCiAJWEZTX1NUQVRTX0lOQyh4c19sb2dfd3JpdGVzKTsKIAlBU1NFUlQoaWNsb2ctPmljX3JlZmNudCA9PSAwKTsKQEAgLTI4ODEsNyArMjg4MSw3IEBACiAJbG9nLT5sX2N1cnJfYmxvY2sgKz0gQlRPQkIoZXZlbnR1YWxfc2l6ZSkrQlRPQkIobG9nLT5sX2ljbG9nX2hzaXplKTsKIAogCS8qIFJvdW5kIHVwIHRvIG5leHQgbG9nLXN1bml0ICovCi0JaWYgKFhGU19TQl9WRVJTSU9OX0hBU0xPR1YyKCZsb2ctPmxfbXAtPm1fc2IpICYmCisJaWYgKHhmc19zYl92ZXJzaW9uX2hhc2xvZ3YyKCZsb2ctPmxfbXAtPm1fc2IpICYmCiAJICAgIGxvZy0+bF9tcC0+bV9zYi5zYl9sb2dzdW5pdCA+IDEpIHsKIAkJX191aW50MzJfdCBzdW5pdF9iYiA9IEJUT0JCKGxvZy0+bF9tcC0+bV9zYi5zYl9sb2dzdW5pdCk7CiAJCWxvZy0+bF9jdXJyX2Jsb2NrID0gcm91bmR1cChsb2ctPmxfY3Vycl9ibG9jaywgc3VuaXRfYmIpOwpAQCAtMzMzNCw3ICszMzM0LDcgQEAKIAl1bml0X2J5dGVzICs9IHNpemVvZih4bG9nX29wX2hlYWRlcl90KSAqIG51bV9oZWFkZXJzOwogCiAJLyogZm9yIHJvdW5kb2ZmIHBhZGRpbmcgZm9yIHRyYW5zYWN0aW9uIGRhdGEgYW5kIG9uZSBmb3IgY29tbWl0IHJlY29yZCAqLwotCWlmIChYRlNfU0JfVkVSU0lPTl9IQVNMT0dWMigmbG9nLT5sX21wLT5tX3NiKSAmJgorCWlmICh4ZnNfc2JfdmVyc2lvbl9oYXNsb2d2MigmbG9nLT5sX21wLT5tX3NiKSAmJgogCSAgICBsb2ctPmxfbXAtPm1fc2Iuc2JfbG9nc3VuaXQgPiAxKSB7CiAJCS8qIGxvZyBzdSByb3VuZG9mZiAqLwogCQl1bml0X2J5dGVzICs9IDIqbG9nLT5sX21wLT5tX3NiLnNiX2xvZ3N1bml0OwpkaWZmIC0tZ2l0IGEvZnMveGZzL3hmc19sb2dfcHJpdi5oIGIvZnMveGZzL3hmc19sb2dfcHJpdi5oCmluZGV4IGUwMDgyMzMuLmM2MjQ0Y2MgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfbG9nX3ByaXYuaAorKysgYi9mcy94ZnMveGZzX2xvZ19wcml2LmgKQEAgLTQ5LDEwICs0OSwxMCBAQAogI2RlZmluZSBYTE9HX0hFQURFUl9TSVpFCTUxMgogCiAjZGVmaW5lIFhMT0dfUkVDX1NISUZUKGxvZykgXAotCUJUT0JCKDEgPDwgKFhGU19TQl9WRVJTSU9OX0hBU0xPR1YyKCZsb2ctPmxfbXAtPm1fc2IpID8gXAorCUJUT0JCKDEgPDwgKHhmc19zYl92ZXJzaW9uX2hhc2xvZ3YyKCZsb2ctPmxfbXAtPm1fc2IpID8gXAogCSBYTE9HX01BWF9SRUNPUkRfQlNISUZUIDogWExPR19CSUdfUkVDT1JEX0JTSElGVCkpCiAjZGVmaW5lIFhMT0dfVE9UQUxfUkVDX1NISUZUKGxvZykgXAotCUJUT0JCKFhMT0dfTUFYX0lDTE9HUyA8PCAoWEZTX1NCX1ZFUlNJT05fSEFTTE9HVjIoJmxvZy0+bF9tcC0+bV9zYikgPyBcCisJQlRPQkIoWExPR19NQVhfSUNMT0dTIDw8ICh4ZnNfc2JfdmVyc2lvbl9oYXNsb2d2MigmbG9nLT5sX21wLT5tX3NiKSA/IFwKIAkgWExPR19NQVhfUkVDT1JEX0JTSElGVCA6IFhMT0dfQklHX1JFQ09SRF9CU0hJRlQpKQogCiAKZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfbG9nX3JlY292ZXIuYyBiL2ZzL3hmcy94ZnNfbG9nX3JlY292ZXIuYwppbmRleCBiODJkNWQ0Li5iMmI3MGViIDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX2xvZ19yZWNvdmVyLmMKKysrIGIvZnMveGZzL3hmc19sb2dfcmVjb3Zlci5jCkBAIC00NzgsNyArNDc4LDcgQEAKIAkgKiByZXNldCBsYXN0X2Jsay4gIE9ubHkgd2hlbiBsYXN0X2JsayBwb2ludHMgaW4gdGhlIG1pZGRsZSBvZiBhIGxvZwogCSAqIHJlY29yZCBkbyB3ZSB1cGRhdGUgbGFzdF9ibGsuCiAJICovCi0JaWYgKFhGU19TQl9WRVJTSU9OX0hBU0xPR1YyKCZsb2ctPmxfbXAtPm1fc2IpKSB7CisJaWYgKHhmc19zYl92ZXJzaW9uX2hhc2xvZ3YyKCZsb2ctPmxfbXAtPm1fc2IpKSB7CiAJCXVpbnQJaF9zaXplID0gYmUzMl90b19jcHUoaGVhZC0+aF9zaXplKTsKIAogCQl4aGRycyA9IGhfc2l6ZSAvIFhMT0dfSEVBREVSX0NZQ0xFX1NJWkU7CkBAIC04ODgsNyArODg4LDcgQEAKIAkgKiB1bm1vdW50IHJlY29yZCBpZiB0aGVyZSBpcyBvbmUsIHNvIHdlIHBhc3MgdGhlIGxzbiBvZiB0aGUKIAkgKiB1bm1vdW50IHJlY29yZCByYXRoZXIgdGhhbiB0aGUgYmxvY2sgYWZ0ZXIgaXQuCiAJICovCi0JaWYgKFhGU19TQl9WRVJTSU9OX0hBU0xPR1YyKCZsb2ctPmxfbXAtPm1fc2IpKSB7CisJaWYgKHhmc19zYl92ZXJzaW9uX2hhc2xvZ3YyKCZsb2ctPmxfbXAtPm1fc2IpKSB7CiAJCWludAloX3NpemUgPSBiZTMyX3RvX2NwdShyaGVhZC0+aF9zaXplKTsKIAkJaW50CWhfdmVyc2lvbiA9IGJlMzJfdG9fY3B1KHJoZWFkLT5oX3ZlcnNpb24pOwogCkBAIC0xMTAxLDcgKzExMDEsNyBAQAogCXJlY3AtPmhfbWFnaWNubyA9IGNwdV90b19iZTMyKFhMT0dfSEVBREVSX01BR0lDX05VTSk7CiAJcmVjcC0+aF9jeWNsZSA9IGNwdV90b19iZTMyKGN5Y2xlKTsKIAlyZWNwLT5oX3ZlcnNpb24gPSBjcHVfdG9fYmUzMigKLQkJCVhGU19TQl9WRVJTSU9OX0hBU0xPR1YyKCZsb2ctPmxfbXAtPm1fc2IpID8gMiA6IDEpOworCQkJeGZzX3NiX3ZlcnNpb25faGFzbG9ndjIoJmxvZy0+bF9tcC0+bV9zYikgPyAyIDogMSk7CiAJcmVjcC0+aF9sc24gPSBjcHVfdG9fYmU2NCh4bG9nX2Fzc2lnbl9sc24oY3ljbGUsIGJsb2NrKSk7CiAJcmVjcC0+aF90YWlsX2xzbiA9IGNwdV90b19iZTY0KHhsb2dfYXNzaWduX2xzbih0YWlsX2N5Y2xlLCB0YWlsX2Jsb2NrKSk7CiAJcmVjcC0+aF9mbXQgPSBjcHVfdG9fYmUzMihYTE9HX0ZNVCk7CkBAIC0zMzQ4LDcgKzMzNDgsNyBAQAogCQlkcCArPSBCQlNJWkU7CiAJfQogCi0JaWYgKFhGU19TQl9WRVJTSU9OX0hBU0xPR1YyKCZsb2ctPmxfbXAtPm1fc2IpKSB7CisJaWYgKHhmc19zYl92ZXJzaW9uX2hhc2xvZ3YyKCZsb2ctPmxfbXAtPm1fc2IpKSB7CiAJCXhoZHIgPSAoeGxvZ19pbl9jb3JlXzJfdCAqKSZpY2xvZy0+aWNfaGVhZGVyOwogCQlmb3IgKCA7IGkgPCBCVE9CQihzaXplKTsgaSsrKSB7CiAJCQlqID0gaSAvIChYTE9HX0hFQURFUl9DWUNMRV9TSVpFIC8gQkJTSVpFKTsKQEAgLTMzODgsNyArMzM4OCw3IEBACiAJCQkgICAgYmUzMl90b19jcHUocmhlYWQtPmhfY2hrc3VtKSwgY2hrc3VtKTsKIAkJICAgIGNtbl9lcnIoQ0VfREVCVUcsCiAiWEZTOiBEaXNyZWdhcmQgbWVzc2FnZSBpZiBmaWxlc3lzdGVtIHdhcyBjcmVhdGVkIHdpdGggbm9uLURFQlVHIGtlcm5lbCIpOwotCQkgICAgaWYgKFhGU19TQl9WRVJTSU9OX0hBU0xPR1YyKCZsb2ctPmxfbXAtPm1fc2IpKSB7CisJCSAgICBpZiAoeGZzX3NiX3ZlcnNpb25faGFzbG9ndjIoJmxvZy0+bF9tcC0+bV9zYikpIHsKIAkJCSAgICBjbW5fZXJyKENFX0RFQlVHLAogCQkJCSJYRlM6IExvZ1IgdGhpcyBpcyBhIExvZ1YyIGZpbGVzeXN0ZW1cbiIpOwogCQkgICAgfQpAQCAtMzQxNSw3ICszNDE1LDcgQEAKIAkJZHAgKz0gQkJTSVpFOwogCX0KIAotCWlmIChYRlNfU0JfVkVSU0lPTl9IQVNMT0dWMigmbG9nLT5sX21wLT5tX3NiKSkgeworCWlmICh4ZnNfc2JfdmVyc2lvbl9oYXNsb2d2MigmbG9nLT5sX21wLT5tX3NiKSkgewogCQl4aGRyID0gKHhsb2dfaW5fY29yZV8yX3QgKilyaGVhZDsKIAkJZm9yICggOyBpIDwgQlRPQkIoYmUzMl90b19jcHUocmhlYWQtPmhfbGVuKSk7IGkrKykgewogCQkJaiA9IGkgLyAoWExPR19IRUFERVJfQ1lDTEVfU0laRSAvIEJCU0laRSk7CkBAIC0zNDk0LDcgKzM0OTQsNyBAQAogCSAqIFJlYWQgdGhlIGhlYWRlciBvZiB0aGUgdGFpbCBibG9jayBhbmQgZ2V0IHRoZSBpY2xvZyBidWZmZXIgc2l6ZSBmcm9tCiAJICogaF9zaXplLiAgVXNlIHRoaXMgdG8gdGVsbCBob3cgbWFueSBzZWN0b3JzIG1ha2UgdXAgdGhlIGxvZyBoZWFkZXIuCiAJICovCi0JaWYgKFhGU19TQl9WRVJTSU9OX0hBU0xPR1YyKCZsb2ctPmxfbXAtPm1fc2IpKSB7CisJaWYgKHhmc19zYl92ZXJzaW9uX2hhc2xvZ3YyKCZsb2ctPmxfbXAtPm1fc2IpKSB7CiAJCS8qCiAJCSAqIFdoZW4gdXNpbmcgdmFyaWFibGUgbGVuZ3RoIGljbG9ncywgcmVhZCBmaXJzdCBzZWN0b3Igb2YKIAkJICogaWNsb2cgaGVhZGVyIGFuZCBleHRyYWN0IHRoZSBoZWFkZXIgc2l6ZSBmcm9tIGl0LiAgR2V0IGEKQEAgLTM4MzgsNyArMzgzOCw3IEBACiAJc2JwID0gJmxvZy0+bF9tcC0+bV9zYjsKIAl4ZnNfc2JfZnJvbV9kaXNrKHNicCwgWEZTX0JVRl9UT19TQlAoYnApKTsKIAlBU1NFUlQoc2JwLT5zYl9tYWdpY251bSA9PSBYRlNfU0JfTUFHSUMpOwotCUFTU0VSVChYRlNfU0JfR09PRF9WRVJTSU9OKHNicCkpOworCUFTU0VSVCh4ZnNfc2JfZ29vZF92ZXJzaW9uKHNicCkpOwogCXhmc19idWZfcmVsc2UoYnApOwogCiAJLyogV2UndmUgcmUtcmVhZCB0aGUgc3VwZXJibG9jayBzbyByZS1pbml0aWFsaXplIHBlci1jcHUgY291bnRlcnMgKi8KZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfbW91bnQuYyBiL2ZzL3hmcy94ZnNfbW91bnQuYwppbmRleCA2NDA5YjM3Li44ZWQxNjRlIDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX21vdW50LmMKKysrIGIvZnMveGZzL3hmc19tb3VudC5jCkBAIC00NCw3ICs0NCw3IEBACiAjaW5jbHVkZSAieGZzX3F1b3RhLmgiCiAjaW5jbHVkZSAieGZzX2Zzb3BzLmgiCiAKLVNUQVRJQyB2b2lkCXhmc19tb3VudF9sb2dfc2J1bml0KHhmc19tb3VudF90ICosIF9faW50NjRfdCk7CitTVEFUSUMgdm9pZAl4ZnNfbW91bnRfbG9nX3NiKHhmc19tb3VudF90ICosIF9faW50NjRfdCk7CiBTVEFUSUMgaW50CXhmc191dWlkX21vdW50KHhmc19tb3VudF90ICopOwogU1RBVElDIHZvaWQJeGZzX3V1aWRfdW5tb3VudCh4ZnNfbW91bnRfdCAqbXApOwogU1RBVElDIHZvaWQJeGZzX3VubW91bnRmc193YWl0KHhmc19tb3VudF90ICopOwpAQCAtMTE5LDYgKzExOSw3IEBACiAgICAgeyBvZmZzZXRvZih4ZnNfc2JfdCwgc2JfbG9nc2VjdHNpemUpLDAgfSwKICAgICB7IG9mZnNldG9mKHhmc19zYl90LCBzYl9sb2dzdW5pdCksCSAwIH0sCiAgICAgeyBvZmZzZXRvZih4ZnNfc2JfdCwgc2JfZmVhdHVyZXMyKSwJIDAgfSwKKyAgICB7IG9mZnNldG9mKHhmc19zYl90LCBzYl9iYWRfZmVhdHVyZXMyKSwgMCB9LAogICAgIHsgc2l6ZW9mKHhmc19zYl90KSwJCQkgMCB9CiB9OwogCkBAIC0yMjUsNyArMjI2LDcgQEAKIAkJcmV0dXJuIFhGU19FUlJPUihFV1JPTkdGUyk7CiAJfQogCi0JaWYgKCFYRlNfU0JfR09PRF9WRVJTSU9OKHNicCkpIHsKKwlpZiAoIXhmc19zYl9nb29kX3ZlcnNpb24oc2JwKSkgewogCQl4ZnNfZnNfbW91bnRfY21uX2VycihmbGFncywgImJhZCB2ZXJzaW9uIik7CiAJCXJldHVybiBYRlNfRVJST1IoRVdST05HRlMpOwogCX0KQEAgLTMwMCw3ICszMDEsNyBAQAogCS8qCiAJICogVmVyc2lvbiAxIGRpcmVjdG9yeSBmb3JtYXQgaGFzIG5ldmVyIHdvcmtlZCBvbiBMaW51eC4KIAkgKi8KLQlpZiAodW5saWtlbHkoIVhGU19TQl9WRVJTSU9OX0hBU0RJUlYyKHNicCkpKSB7CisJaWYgKHVubGlrZWx5KCF4ZnNfc2JfdmVyc2lvbl9oYXNkaXJ2MihzYnApKSkgewogCQl4ZnNfZnNfbW91bnRfY21uX2VycihmbGFncywKIAkJCSJmaWxlIHN5c3RlbSB1c2luZyB2ZXJzaW9uIDEgZGlyZWN0b3J5IGZvcm1hdCIpOwogCQlyZXR1cm4gWEZTX0VSUk9SKEVOT1NZUyk7CkBAIC00NDksNiArNDUwLDcgQEAKIAl0by0+c2JfbG9nc2VjdHNpemUgPSBiZTE2X3RvX2NwdShmcm9tLT5zYl9sb2dzZWN0c2l6ZSk7CiAJdG8tPnNiX2xvZ3N1bml0ID0gYmUzMl90b19jcHUoZnJvbS0+c2JfbG9nc3VuaXQpOwogCXRvLT5zYl9mZWF0dXJlczIgPSBiZTMyX3RvX2NwdShmcm9tLT5zYl9mZWF0dXJlczIpOworCXRvLT5zYl9iYWRfZmVhdHVyZXMyID0gYmUzMl90b19jcHUoZnJvbS0+c2JfYmFkX2ZlYXR1cmVzMik7CiB9CiAKIC8qCkBAIC03ODEsNyArNzgzLDcgQEAKIAkJICogVXBkYXRlIHN1cGVyYmxvY2sgd2l0aCBuZXcgdmFsdWVzCiAJCSAqIGFuZCBsb2cgY2hhbmdlcwogCQkgKi8KLQkJaWYgKFhGU19TQl9WRVJTSU9OX0hBU0RBTElHTihzYnApKSB7CisJCWlmICh4ZnNfc2JfdmVyc2lvbl9oYXNkYWxpZ24oc2JwKSkgewogCQkJaWYgKHNicC0+c2JfdW5pdCAhPSBtcC0+bV9kYWxpZ24pIHsKIAkJCQlzYnAtPnNiX3VuaXQgPSBtcC0+bV9kYWxpZ247CiAJCQkJKnVwZGF0ZV9mbGFncyB8PSBYRlNfU0JfVU5JVDsKQEAgLTc5Miw3ICs3OTQsNyBAQAogCQkJfQogCQl9CiAJfSBlbHNlIGlmICgobXAtPm1fZmxhZ3MgJiBYRlNfTU9VTlRfTk9BTElHTikgIT0gWEZTX01PVU5UX05PQUxJR04gJiYKLQkJICAgIFhGU19TQl9WRVJTSU9OX0hBU0RBTElHTigmbXAtPm1fc2IpKSB7CisJCSAgICB4ZnNfc2JfdmVyc2lvbl9oYXNkYWxpZ24oJm1wLT5tX3NiKSkgewogCQkJbXAtPm1fZGFsaWduID0gc2JwLT5zYl91bml0OwogCQkJbXAtPm1fc3dpZHRoID0gc2JwLT5zYl93aWR0aDsKIAl9CkBAIC04NjksNyArODcxLDcgQEAKIFNUQVRJQyB2b2lkCiB4ZnNfc2V0X2lub2FsaWdubWVudCh4ZnNfbW91bnRfdCAqbXApCiB7Ci0JaWYgKFhGU19TQl9WRVJTSU9OX0hBU0FMSUdOKCZtcC0+bV9zYikgJiYKKwlpZiAoeGZzX3NiX3ZlcnNpb25faGFzYWxpZ24oJm1wLT5tX3NiKSAmJgogCSAgICBtcC0+bV9zYi5zYl9pbm9hbGlnbm10ID49CiAJICAgIFhGU19CX1RPX0ZTQlQobXAsIG1wLT5tX2lub2RlX2NsdXN0ZXJfc2l6ZSkpCiAJCW1wLT5tX2lub2FsaWduX21hc2sgPSBtcC0+bV9zYi5zYl9pbm9hbGlnbm10IC0gMTsKQEAgLTk3MCw2ICs5NzIsMzggQEAKIAl4ZnNfbW91bnRfY29tbW9uKG1wLCBzYnApOwogCiAJLyoKKwkgKiBDaGVjayBmb3IgYSBtaXNtYXRjaGVkIGZlYXR1cmVzMiB2YWx1ZXMuICBPbGRlciBrZXJuZWxzCisJICogcmVhZCAmIHdyb3RlIGludG8gdGhlIHdyb25nIHNiIG9mZnNldCBmb3Igc2JfZmVhdHVyZXMyCisJICogb24gc29tZSBwbGF0Zm9ybXMgZHVlIHRvIHhmc19zYl90IG5vdCBiZWluZyA2NGJpdCBzaXplIGFsaWduZWQKKwkgKiB3aGVuIHNiX2ZlYXR1cmVzMiB3YXMgYWRkZWQsIHdoaWNoIG1hZGUgb2xkZXIgc3VwZXJibG9jaworCSAqIHJlYWRpbmcvd3JpdGluZyByb3V0aW5lcyBzd2FwIGl0IGFzIGEgNjQtYml0IHZhbHVlLgorCSAqCisJICogRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCB3ZSBtYWtlIGJvdGggc2xvdHMgZXF1YWwuCisJICoKKwkgKiBJZiB3ZSBkZXRlY3QgYSBtaXNtYXRjaGVkIGZpZWxkLCB3ZSBPUiB0aGUgc2V0IGJpdHMgaW50byB0aGUKKwkgKiBleGlzdGluZyBmZWF0dXJlczIgZmllbGQgaW4gY2FzZSBpdCBoYXMgYWxyZWFkeSBiZWVuIG1vZGlmaWVkOyB3ZQorCSAqIGRvbid0IHdhbnQgdG8gbG9zZSBhbnkgZmVhdHVyZXMuICBXZSB0aGVuIHVwZGF0ZSB0aGUgYmFkIGxvY2F0aW9uCisJICogd2l0aCB0aGUgT1JlZCB2YWx1ZSBzbyB0aGF0IG9sZGVyIGtlcm5lbHMgd2lsbCBzZWUgYW55IGZlYXR1cmVzMgorCSAqIGZsYWdzLCBhbmQgbWFyayB0aGUgdHdvIGZpZWxkcyBhcyBuZWVkaW5nIHVwZGF0ZXMgb25jZSB0aGUKKwkgKiB0cmFuc2FjdGlvbiBzdWJzeXN0ZW0gaXMgb25saW5lLgorCSAqLworCWlmICh4ZnNfc2JfaGFzX21pc21hdGNoZWRfZmVhdHVyZXMyKHNicCkpIHsKKwkJY21uX2VycihDRV9XQVJOLAorCQkJIlhGUzogY29ycmVjdGluZyBzYl9mZWF0dXJlcyBhbGlnbm1lbnQgcHJvYmxlbSIpOworCQlzYnAtPnNiX2ZlYXR1cmVzMiB8PSBzYnAtPnNiX2JhZF9mZWF0dXJlczI7CisJCXNicC0+c2JfYmFkX2ZlYXR1cmVzMiA9IHNicC0+c2JfZmVhdHVyZXMyOworCQl1cGRhdGVfZmxhZ3MgfD0gWEZTX1NCX0ZFQVRVUkVTMiB8IFhGU19TQl9CQURfRkVBVFVSRVMyOworCisJCS8qCisJCSAqIFJlLWNoZWNrIGZvciBBVFRSMiBpbiBjYXNlIGl0IHdhcyBmb3VuZCBpbiBiYWRfZmVhdHVyZXMyCisJCSAqIHNsb3QuCisJCSAqLworCQlpZiAoeGZzX3NiX3ZlcnNpb25faGFzYXR0cjIoJm1wLT5tX3NiKSkKKwkJCW1wLT5tX2ZsYWdzIHw9IFhGU19NT1VOVF9BVFRSMjsKKworCX0KKworCS8qCiAJICogQ2hlY2sgaWYgc2JfYWdibG9ja3MgaXMgYWxpZ25lZCBhdCBzdHJpcGUgYm91bmRhcnkKIAkgKiBJZiBzYl9hZ2Jsb2NrcyBpcyBOT1QgYWxpZ25lZCB0dXJuIG9mZiBtX2RhbGlnbiBzaW5jZQogCSAqIGFsbG9jYXRvciBhbGlnbm1lbnQgaXMgd2l0aGluIGFuIGFnLCB0aGVyZWZvcmUgYWcgaGFzCkBAIC0xMTU5LDExICsxMTkzLDEwIEBACiAJfQogCiAJLyoKLQkgKiBJZiBmcyBpcyBub3QgbW91bnRlZCByZWFkb25seSwgdGhlbiB1cGRhdGUgdGhlIHN1cGVyYmxvY2sKLQkgKiB1bml0IGFuZCB3aWR0aCBjaGFuZ2VzLgorCSAqIElmIGZzIGlzIG5vdCBtb3VudGVkIHJlYWRvbmx5LCB0aGVuIHVwZGF0ZSB0aGUgc3VwZXJibG9jayBjaGFuZ2VzLgogCSAqLwogCWlmICh1cGRhdGVfZmxhZ3MgJiYgIShtcC0+bV9mbGFncyAmIFhGU19NT1VOVF9SRE9OTFkpKQotCQl4ZnNfbW91bnRfbG9nX3NidW5pdChtcCwgdXBkYXRlX2ZsYWdzKTsKKwkJeGZzX21vdW50X2xvZ19zYihtcCwgdXBkYXRlX2ZsYWdzKTsKIAogCS8qCiAJICogSW5pdGlhbGlzZSB0aGUgWEZTIHF1b3RhIG1hbmFnZW1lbnQgc3Vic3lzdGVtIGZvciB0aGlzIG1vdW50CkBAIC0xODc1LDE2ICsxOTA4LDE4IEBACiAKIC8qCiAgKiBVc2VkIHRvIGxvZyBjaGFuZ2VzIHRvIHRoZSBzdXBlcmJsb2NrIHVuaXQgYW5kIHdpZHRoIGZpZWxkcyB3aGljaCBjb3VsZAotICogYmUgYWx0ZXJlZCBieSB0aGUgbW91bnQgb3B0aW9ucy4gT25seSB0aGUgZmlyc3Qgc3VwZXJibG9jayBpcyB1cGRhdGVkLgorICogYmUgYWx0ZXJlZCBieSB0aGUgbW91bnQgb3B0aW9ucywgYXMgd2VsbCBhcyBhbnkgcG90ZW50aWFsIHNiX2ZlYXR1cmVzMgorICogZml4dXAuIE9ubHkgdGhlIGZpcnN0IHN1cGVyYmxvY2sgaXMgdXBkYXRlZC4KICAqLwogU1RBVElDIHZvaWQKLXhmc19tb3VudF9sb2dfc2J1bml0KAoreGZzX21vdW50X2xvZ19zYigKIAl4ZnNfbW91bnRfdAkqbXAsCiAJX19pbnQ2NF90CWZpZWxkcykKIHsKIAl4ZnNfdHJhbnNfdAkqdHA7CiAKLQlBU1NFUlQoZmllbGRzICYgKFhGU19TQl9VTklUfFhGU19TQl9XSURUSHxYRlNfU0JfVVVJRCkpOworCUFTU0VSVChmaWVsZHMgJiAoWEZTX1NCX1VOSVQgfCBYRlNfU0JfV0lEVEggfCBYRlNfU0JfVVVJRCB8CisJCQkgWEZTX1NCX0ZFQVRVUkVTMiB8IFhGU19TQl9CQURfRkVBVFVSRVMyKSk7CiAKIAl0cCA9IHhmc190cmFuc19hbGxvYyhtcCwgWEZTX1RSQU5TX1NCX1VOSVQpOwogCWlmICh4ZnNfdHJhbnNfcmVzZXJ2ZSh0cCwgMCwgbXAtPm1fc2Iuc2Jfc2VjdHNpemUgKyAxMjgsIDAsIDAsCmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX3NiLmggYi9mcy94ZnMveGZzX3NiLmgKaW5kZXggOTQ2NjBiMS4uZDkwNGVmZSAxMDA2NDQKLS0tIGEvZnMveGZzL3hmc19zYi5oCisrKyBiL2ZzL3hmcy94ZnNfc2IuaApAQCAtODksNiArODksNyBAQAogCiAvKgogICogU3VwZXJibG9jayAtIGluIGNvcmUgdmVyc2lvbi4gIE11c3QgbWF0Y2ggdGhlIG9uZGlzayB2ZXJzaW9uIGJlbG93LgorICogTXVzdCBiZSBwYWRkZWQgdG8gNjQgYml0IGFsaWdubWVudC4KICAqLwogdHlwZWRlZiBzdHJ1Y3QgeGZzX3NiIHsKIAlfX3VpbnQzMl90CXNiX21hZ2ljbnVtOwkvKiBtYWdpYyBudW1iZXIgPT0gWEZTX1NCX01BR0lDICovCkBAIC0xNDUsMTAgKzE0NiwyMSBAQAogCV9fdWludDE2X3QJc2JfbG9nc2VjdHNpemU7CS8qIHNlY3RvciBzaXplIGZvciB0aGUgbG9nLCBieXRlcyAqLwogCV9fdWludDMyX3QJc2JfbG9nc3VuaXQ7CS8qIHN0cmlwZSB1bml0IHNpemUgZm9yIHRoZSBsb2cgKi8KIAlfX3VpbnQzMl90CXNiX2ZlYXR1cmVzMjsJLyogYWRkaXRpb25hbCBmZWF0dXJlIGJpdHMgKi8KKworCS8qCisJICogYmFkIGZlYXR1cmVzMiBmaWVsZCBhcyBhIHJlc3VsdCBvZiBmYWlsaW5nIHRvIHBhZCB0aGUgc2IKKwkgKiBzdHJ1Y3R1cmUgdG8gNjQgYml0cy4gU29tZSBtYWNoaW5lcyB3aWxsIGJlIHVzaW5nIHRoaXMgZmllbGQKKwkgKiBmb3IgZmVhdHVyZXMyIGJpdHMuIEVhc2llc3QganVzdCB0byBtYXJrIGl0IGJhZCBhbmQgbm90IHVzZQorCSAqIGl0IGZvciBhbnl0aGluZyBlbHNlLgorCSAqLworCV9fdWludDMyX3QJc2JfYmFkX2ZlYXR1cmVzMjsKKworCS8qIG11c3QgYmUgcGFkZGVkIHRvIDY0IGJpdCBhbGlnbm1lbnQgKi8KIH0geGZzX3NiX3Q7CiAKIC8qCi0gKiBTdXBlcmJsb2NrIC0gb24gZGlzayB2ZXJzaW9uLiAgTXVzdCBtYXRjaCB0aGUgaW4gY29yZSB2ZXJzaW9uIGJlbG93LgorICogU3VwZXJibG9jayAtIG9uIGRpc2sgdmVyc2lvbi4gIE11c3QgbWF0Y2ggdGhlIGluIGNvcmUgdmVyc2lvbiBhYm92ZS4KKyAqIE11c3QgYmUgcGFkZGVkIHRvIDY0IGJpdCBhbGlnbm1lbnQuCiAgKi8KIHR5cGVkZWYgc3RydWN0IHhmc19kc2IgewogCV9fYmUzMgkJc2JfbWFnaWNudW07CS8qIG1hZ2ljIG51bWJlciA9PSBYRlNfU0JfTUFHSUMgKi8KQEAgLTIwNSw2ICsyMTcsMTUgQEAKIAlfX2JlMTYJCXNiX2xvZ3NlY3RzaXplOwkvKiBzZWN0b3Igc2l6ZSBmb3IgdGhlIGxvZywgYnl0ZXMgKi8KIAlfX2JlMzIJCXNiX2xvZ3N1bml0OwkvKiBzdHJpcGUgdW5pdCBzaXplIGZvciB0aGUgbG9nICovCiAJX19iZTMyCQlzYl9mZWF0dXJlczI7CS8qIGFkZGl0aW9uYWwgZmVhdHVyZSBiaXRzICovCisJLyoKKwkgKiBiYWQgZmVhdHVyZXMyIGZpZWxkIGFzIGEgcmVzdWx0IG9mIGZhaWxpbmcgdG8gcGFkIHRoZSBzYgorCSAqIHN0cnVjdHVyZSB0byA2NCBiaXRzLiBTb21lIG1hY2hpbmVzIHdpbGwgYmUgdXNpbmcgdGhpcyBmaWVsZAorCSAqIGZvciBmZWF0dXJlczIgYml0cy4gRWFzaWVzdCBqdXN0IHRvIG1hcmsgaXQgYmFkIGFuZCBub3QgdXNlCisJICogaXQgZm9yIGFueXRoaW5nIGVsc2UuCisJICovCisJX19iZTMyCXNiX2JhZF9mZWF0dXJlczI7CisKKwkvKiBtdXN0IGJlIHBhZGRlZCB0byA2NCBiaXQgYWxpZ25tZW50ICovCiB9IHhmc19kc2JfdDsKIAogLyoKQEAgLTIyMyw3ICsyNDQsNyBAQAogCVhGU19TQlNfR1FVT1RJTk8sIFhGU19TQlNfUUZMQUdTLCBYRlNfU0JTX0ZMQUdTLCBYRlNfU0JTX1NIQVJFRF9WTiwKIAlYRlNfU0JTX0lOT0FMSUdOTVQsIFhGU19TQlNfVU5JVCwgWEZTX1NCU19XSURUSCwgWEZTX1NCU19ESVJCTEtMT0csCiAJWEZTX1NCU19MT0dTRUNUTE9HLCBYRlNfU0JTX0xPR1NFQ1RTSVpFLCBYRlNfU0JTX0xPR1NVTklULAotCVhGU19TQlNfRkVBVFVSRVMyLAorCVhGU19TQlNfRkVBVFVSRVMyLCBYRlNfU0JTX0JBRF9GRUFUVVJFUzIsCiAJWEZTX1NCU19GSUVMRENPVU5UCiB9IHhmc19zYl9maWVsZF90OwogCkBAIC0yNDgsMTMgKzI2OSwxNSBAQAogI2RlZmluZSBYRlNfU0JfSUZSRUUJCVhGU19TQl9NVkFMKElGUkVFKQogI2RlZmluZSBYRlNfU0JfRkRCTE9DS1MJCVhGU19TQl9NVkFMKEZEQkxPQ0tTKQogI2RlZmluZSBYRlNfU0JfRkVBVFVSRVMyCVhGU19TQl9NVkFMKEZFQVRVUkVTMikKKyNkZWZpbmUgWEZTX1NCX0JBRF9GRUFUVVJFUzIJWEZTX1NCX01WQUwoQkFEX0ZFQVRVUkVTMikKICNkZWZpbmUJWEZTX1NCX05VTV9CSVRTCQkoKGludClYRlNfU0JTX0ZJRUxEQ09VTlQpCiAjZGVmaW5lCVhGU19TQl9BTExfQklUUwkJKCgxTEwgPDwgWEZTX1NCX05VTV9CSVRTKSAtIDEpCiAjZGVmaW5lCVhGU19TQl9NT0RfQklUUwkJXAogCShYRlNfU0JfVVVJRCB8IFhGU19TQl9ST09USU5PIHwgWEZTX1NCX1JCTUlOTyB8IFhGU19TQl9SU1VNSU5PIHwgXAogCSBYRlNfU0JfVkVSU0lPTk5VTSB8IFhGU19TQl9VUVVPVElOTyB8IFhGU19TQl9HUVVPVElOTyB8IFwKIAkgWEZTX1NCX1FGTEFHUyB8IFhGU19TQl9TSEFSRURfVk4gfCBYRlNfU0JfVU5JVCB8IFhGU19TQl9XSURUSCB8IFwKLQkgWEZTX1NCX0lDT1VOVCB8IFhGU19TQl9JRlJFRSB8IFhGU19TQl9GREJMT0NLUyB8IFhGU19TQl9GRUFUVVJFUzIpCisJIFhGU19TQl9JQ09VTlQgfCBYRlNfU0JfSUZSRUUgfCBYRlNfU0JfRkRCTE9DS1MgfCBYRlNfU0JfRkVBVFVSRVMyIHwgXAorCSBYRlNfU0JfQkFEX0ZFQVRVUkVTMikKIAogCiAvKgpAQCAtMjcxLDcgKzI5NCw2IEBACiAKICNkZWZpbmUJWEZTX1NCX1ZFUlNJT05fTlVNKHNicCkJKChzYnApLT5zYl92ZXJzaW9ubnVtICYgWEZTX1NCX1ZFUlNJT05fTlVNQklUUykKIAotI2RlZmluZQlYRlNfU0JfR09PRF9WRVJTSU9OKHNicCkJeGZzX3NiX2dvb2RfdmVyc2lvbihzYnApCiAjaWZkZWYgX19LRVJORUxfXwogc3RhdGljIGlubGluZSBpbnQgeGZzX3NiX2dvb2RfdmVyc2lvbih4ZnNfc2JfdCAqc2JwKQogewpAQCAtMjk3LDcgKzMxOSwxNSBAQAogfQogI2VuZGlmIC8qIF9fS0VSTkVMX18gKi8KIAotI2RlZmluZQlYRlNfU0JfVkVSU0lPTl9UT05FVyh2KQl4ZnNfc2JfdmVyc2lvbl90b25ldyh2KQorLyoKKyAqIERldGVjdCBhIG1pc21hdGNoZWQgZmVhdHVyZXMyIGZpZWxkLiAgT2xkZXIga2VybmVscyByZWFkL3dyb3RlCisgKiB0aGlzIGludG8gdGhlIHdyb25nIHNsb3QsIHNvIHRvIGJlIHNhZmUgd2Uga2VlcCB0aGVtIGluIHN5bmMuCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50IHhmc19zYl9oYXNfbWlzbWF0Y2hlZF9mZWF0dXJlczIoeGZzX3NiX3QgKnNicCkKK3sKKwlyZXR1cm4gKHNicC0+c2JfYmFkX2ZlYXR1cmVzMiAhPSBzYnAtPnNiX2ZlYXR1cmVzMik7Cit9CisKIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgeGZzX3NiX3ZlcnNpb25fdG9uZXcodW5zaWduZWQgdikKIHsKIAlyZXR1cm4gKCgoKHYpID09IFhGU19TQl9WRVJTSU9OXzEpID8gXApAQCAtMzA4LDcgKzMzOCw2IEBACiAJCVhGU19TQl9WRVJTSU9OXzQpOwogfQogCi0jZGVmaW5lCVhGU19TQl9WRVJTSU9OX1RPT0xEKHYpCXhmc19zYl92ZXJzaW9uX3Rvb2xkKHYpCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIHhmc19zYl92ZXJzaW9uX3Rvb2xkKHVuc2lnbmVkIHYpCiB7CiAJcmV0dXJuICgoKHYpICYgKFhGU19TQl9WRVJTSU9OX1FVT1RBQklUIHwgWEZTX1NCX1ZFUlNJT05fQUxJR05CSVQpKSA/IFwKQEAgLTMyMCw3ICszNDksNiBAQAogCQkJCVhGU19TQl9WRVJTSU9OXzEpKSk7CiB9CiAKLSNkZWZpbmUJWEZTX1NCX1ZFUlNJT05fSEFTQVRUUihzYnApCXhmc19zYl92ZXJzaW9uX2hhc2F0dHIoc2JwKQogc3RhdGljIGlubGluZSBpbnQgeGZzX3NiX3ZlcnNpb25faGFzYXR0cih4ZnNfc2JfdCAqc2JwKQogewogCXJldHVybiAoKHNicCktPnNiX3ZlcnNpb25udW0gPT0gWEZTX1NCX1ZFUlNJT05fMikgfHwgXApAQCAtMzI5LDcgKzM1Nyw2IEBACiAJCSAgKChzYnApLT5zYl92ZXJzaW9ubnVtICYgWEZTX1NCX1ZFUlNJT05fQVRUUkJJVCkpOwogfQogCi0jZGVmaW5lCVhGU19TQl9WRVJTSU9OX0FEREFUVFIoc2JwKQl4ZnNfc2JfdmVyc2lvbl9hZGRhdHRyKHNicCkKIHN0YXRpYyBpbmxpbmUgdm9pZCB4ZnNfc2JfdmVyc2lvbl9hZGRhdHRyKHhmc19zYl90ICpzYnApCiB7CiAJKHNicCktPnNiX3ZlcnNpb25udW0gPSAoKChzYnApLT5zYl92ZXJzaW9ubnVtID09IFhGU19TQl9WRVJTSU9OXzEpID8gXApAQCAtMzM5LDcgKzM2Niw2IEBACiAJCQkoWEZTX1NCX1ZFUlNJT05fNCB8IFhGU19TQl9WRVJTSU9OX0FUVFJCSVQpKSk7CiB9CiAKLSNkZWZpbmUJWEZTX1NCX1ZFUlNJT05fSEFTTkxJTksoc2JwKQl4ZnNfc2JfdmVyc2lvbl9oYXNubGluayhzYnApCiBzdGF0aWMgaW5saW5lIGludCB4ZnNfc2JfdmVyc2lvbl9oYXNubGluayh4ZnNfc2JfdCAqc2JwKQogewogCXJldHVybiAoKHNicCktPnNiX3ZlcnNpb25udW0gPT0gWEZTX1NCX1ZFUlNJT05fMykgfHwgXApAQCAtMzQ3LDcgKzM3Myw2IEBACiAJCSAgKChzYnApLT5zYl92ZXJzaW9ubnVtICYgWEZTX1NCX1ZFUlNJT05fTkxJTktCSVQpKTsKIH0KIAotI2RlZmluZQlYRlNfU0JfVkVSU0lPTl9BREROTElOSyhzYnApCXhmc19zYl92ZXJzaW9uX2FkZG5saW5rKHNicCkKIHN0YXRpYyBpbmxpbmUgdm9pZCB4ZnNfc2JfdmVyc2lvbl9hZGRubGluayh4ZnNfc2JfdCAqc2JwKQogewogCShzYnApLT5zYl92ZXJzaW9ubnVtID0gKChzYnApLT5zYl92ZXJzaW9ubnVtIDw9IFhGU19TQl9WRVJTSU9OXzIgPyBcCkBAIC0zNTUsMTE1ICszODAsNjMgQEAKIAkJKChzYnApLT5zYl92ZXJzaW9ubnVtIHwgWEZTX1NCX1ZFUlNJT05fTkxJTktCSVQpKTsKIH0KIAotI2RlZmluZQlYRlNfU0JfVkVSU0lPTl9IQVNRVU9UQShzYnApCXhmc19zYl92ZXJzaW9uX2hhc3F1b3RhKHNicCkKIHN0YXRpYyBpbmxpbmUgaW50IHhmc19zYl92ZXJzaW9uX2hhc3F1b3RhKHhmc19zYl90ICpzYnApCiB7CiAJcmV0dXJuIChYRlNfU0JfVkVSU0lPTl9OVU0oc2JwKSA9PSBYRlNfU0JfVkVSU0lPTl80KSAmJiBcCiAJCSgoc2JwKS0+c2JfdmVyc2lvbm51bSAmIFhGU19TQl9WRVJTSU9OX1FVT1RBQklUKTsKIH0KIAotI2RlZmluZQlYRlNfU0JfVkVSU0lPTl9BRERRVU9UQShzYnApCXhmc19zYl92ZXJzaW9uX2FkZHF1b3RhKHNicCkKIHN0YXRpYyBpbmxpbmUgdm9pZCB4ZnNfc2JfdmVyc2lvbl9hZGRxdW90YSh4ZnNfc2JfdCAqc2JwKQogewogCShzYnApLT5zYl92ZXJzaW9ubnVtID0gXAogCQkgKFhGU19TQl9WRVJTSU9OX05VTShzYnApID09IFhGU19TQl9WRVJTSU9OXzQgPyBcCiAJCQkoKHNicCktPnNiX3ZlcnNpb25udW0gfCBYRlNfU0JfVkVSU0lPTl9RVU9UQUJJVCkgOiBcCi0JCQkoWEZTX1NCX1ZFUlNJT05fVE9ORVcoKHNicCktPnNiX3ZlcnNpb25udW0pIHwgXAorCQkJKHhmc19zYl92ZXJzaW9uX3RvbmV3KChzYnApLT5zYl92ZXJzaW9ubnVtKSB8IFwKIAkJCSBYRlNfU0JfVkVSU0lPTl9RVU9UQUJJVCkpOwogfQogCi0jZGVmaW5lCVhGU19TQl9WRVJTSU9OX0hBU0FMSUdOKHNicCkJeGZzX3NiX3ZlcnNpb25faGFzYWxpZ24oc2JwKQogc3RhdGljIGlubGluZSBpbnQgeGZzX3NiX3ZlcnNpb25faGFzYWxpZ24oeGZzX3NiX3QgKnNicCkKIHsKIAlyZXR1cm4gKFhGU19TQl9WRVJTSU9OX05VTShzYnApID09IFhGU19TQl9WRVJTSU9OXzQpICYmIFwKIAkJKChzYnApLT5zYl92ZXJzaW9ubnVtICYgWEZTX1NCX1ZFUlNJT05fQUxJR05CSVQpOwogfQogCi0jZGVmaW5lCVhGU19TQl9WRVJTSU9OX1NVQkFMSUdOKHNicCkJeGZzX3NiX3ZlcnNpb25fc3ViYWxpZ24oc2JwKQotc3RhdGljIGlubGluZSB2b2lkIHhmc19zYl92ZXJzaW9uX3N1YmFsaWduKHhmc19zYl90ICpzYnApCi17Ci0JKHNicCktPnNiX3ZlcnNpb25udW0gPSBcCi0JIFhGU19TQl9WRVJTSU9OX1RPT0xEKChzYnApLT5zYl92ZXJzaW9ubnVtICYgflhGU19TQl9WRVJTSU9OX0FMSUdOQklUKTsKLX0KLQotI2RlZmluZSBYRlNfU0JfVkVSU0lPTl9IQVNEQUxJR04oc2JwKQl4ZnNfc2JfdmVyc2lvbl9oYXNkYWxpZ24oc2JwKQogc3RhdGljIGlubGluZSBpbnQgeGZzX3NiX3ZlcnNpb25faGFzZGFsaWduKHhmc19zYl90ICpzYnApCiB7CiAJcmV0dXJuIChYRlNfU0JfVkVSU0lPTl9OVU0oc2JwKSA9PSBYRlNfU0JfVkVSU0lPTl80KSAmJiBcCiAJCSgoc2JwKS0+c2JfdmVyc2lvbm51bSAmIFhGU19TQl9WRVJTSU9OX0RBTElHTkJJVCk7CiB9CiAKLSNkZWZpbmUgWEZTX1NCX1ZFUlNJT05fQUREREFMSUdOKHNicCkJeGZzX3NiX3ZlcnNpb25fYWRkZGFsaWduKHNicCkKLXN0YXRpYyBpbmxpbmUgaW50IHhmc19zYl92ZXJzaW9uX2FkZGRhbGlnbih4ZnNfc2JfdCAqc2JwKQotewotCXJldHVybiAoc2JwKS0+c2JfdmVyc2lvbm51bSA9IFwKLQkJKChzYnApLT5zYl92ZXJzaW9ubnVtIHwgWEZTX1NCX1ZFUlNJT05fREFMSUdOQklUKTsKLX0KLQotI2RlZmluZSBYRlNfU0JfVkVSU0lPTl9IQVNTSEFSRUQoc2JwKQl4ZnNfc2JfdmVyc2lvbl9oYXNzaGFyZWQoc2JwKQogc3RhdGljIGlubGluZSBpbnQgeGZzX3NiX3ZlcnNpb25faGFzc2hhcmVkKHhmc19zYl90ICpzYnApCiB7CiAJcmV0dXJuIChYRlNfU0JfVkVSU0lPTl9OVU0oc2JwKSA9PSBYRlNfU0JfVkVSU0lPTl80KSAmJiBcCiAJCSgoc2JwKS0+c2JfdmVyc2lvbm51bSAmIFhGU19TQl9WRVJTSU9OX1NIQVJFREJJVCk7CiB9CiAKLSNkZWZpbmUgWEZTX1NCX1ZFUlNJT05fQUREU0hBUkVEKHNicCkJeGZzX3NiX3ZlcnNpb25fYWRkc2hhcmVkKHNicCkKLXN0YXRpYyBpbmxpbmUgaW50IHhmc19zYl92ZXJzaW9uX2FkZHNoYXJlZCh4ZnNfc2JfdCAqc2JwKQotewotCXJldHVybiAoc2JwKS0+c2JfdmVyc2lvbm51bSA9IFwKLQkJKChzYnApLT5zYl92ZXJzaW9ubnVtIHwgWEZTX1NCX1ZFUlNJT05fU0hBUkVEQklUKTsKLX0KLQotI2RlZmluZSBYRlNfU0JfVkVSU0lPTl9TVUJTSEFSRUQoc2JwKQl4ZnNfc2JfdmVyc2lvbl9zdWJzaGFyZWQoc2JwKQotc3RhdGljIGlubGluZSBpbnQgeGZzX3NiX3ZlcnNpb25fc3Vic2hhcmVkKHhmc19zYl90ICpzYnApCi17Ci0JcmV0dXJuIChzYnApLT5zYl92ZXJzaW9ubnVtID0gXAotCQkoKHNicCktPnNiX3ZlcnNpb25udW0gJiB+WEZTX1NCX1ZFUlNJT05fU0hBUkVEQklUKTsKLX0KLQotI2RlZmluZSBYRlNfU0JfVkVSU0lPTl9IQVNESVJWMihzYnApCXhmc19zYl92ZXJzaW9uX2hhc2RpcnYyKHNicCkKIHN0YXRpYyBpbmxpbmUgaW50IHhmc19zYl92ZXJzaW9uX2hhc2RpcnYyKHhmc19zYl90ICpzYnApCiB7CiAJcmV0dXJuIChYRlNfU0JfVkVSU0lPTl9OVU0oc2JwKSA9PSBYRlNfU0JfVkVSU0lPTl80KSAmJiBcCiAJCSgoc2JwKS0+c2JfdmVyc2lvbm51bSAmIFhGU19TQl9WRVJTSU9OX0RJUlYyQklUKTsKIH0KIAotI2RlZmluZSBYRlNfU0JfVkVSU0lPTl9IQVNMT0dWMihzYnApICAgeGZzX3NiX3ZlcnNpb25faGFzbG9ndjIoc2JwKQogc3RhdGljIGlubGluZSBpbnQgeGZzX3NiX3ZlcnNpb25faGFzbG9ndjIoeGZzX3NiX3QgKnNicCkKIHsKIAlyZXR1cm4gKFhGU19TQl9WRVJTSU9OX05VTShzYnApID09IFhGU19TQl9WRVJTSU9OXzQpICYmIFwKIAkJKChzYnApLT5zYl92ZXJzaW9ubnVtICYgWEZTX1NCX1ZFUlNJT05fTE9HVjJCSVQpOwogfQogCi0jZGVmaW5lIFhGU19TQl9WRVJTSU9OX0hBU0VYVEZMR0JJVChzYnApCXhmc19zYl92ZXJzaW9uX2hhc2V4dGZsZ2JpdChzYnApCiBzdGF0aWMgaW5saW5lIGludCB4ZnNfc2JfdmVyc2lvbl9oYXNleHRmbGdiaXQoeGZzX3NiX3QgKnNicCkKIHsKIAlyZXR1cm4gKFhGU19TQl9WRVJTSU9OX05VTShzYnApID09IFhGU19TQl9WRVJTSU9OXzQpICYmIFwKIAkJKChzYnApLT5zYl92ZXJzaW9ubnVtICYgWEZTX1NCX1ZFUlNJT05fRVhURkxHQklUKTsKIH0KIAotI2RlZmluZSBYRlNfU0JfVkVSU0lPTl9BRERFWFRGTEdCSVQoc2JwKQl4ZnNfc2JfdmVyc2lvbl9hZGRleHRmbGdiaXQoc2JwKQotc3RhdGljIGlubGluZSBpbnQgeGZzX3NiX3ZlcnNpb25fYWRkZXh0ZmxnYml0KHhmc19zYl90ICpzYnApCi17Ci0JcmV0dXJuIChzYnApLT5zYl92ZXJzaW9ubnVtID0gXAotCQkoKHNicCktPnNiX3ZlcnNpb25udW0gfCBYRlNfU0JfVkVSU0lPTl9FWFRGTEdCSVQpOwotfQotCi0jZGVmaW5lIFhGU19TQl9WRVJTSU9OX1NVQkVYVEZMR0JJVChzYnApCXhmc19zYl92ZXJzaW9uX3N1YmV4dGZsZ2JpdChzYnApCi1zdGF0aWMgaW5saW5lIGludCB4ZnNfc2JfdmVyc2lvbl9zdWJleHRmbGdiaXQoeGZzX3NiX3QgKnNicCkKLXsKLQlyZXR1cm4gKHNicCktPnNiX3ZlcnNpb25udW0gPSBcCi0JCSgoc2JwKS0+c2JfdmVyc2lvbm51bSAmIH5YRlNfU0JfVkVSU0lPTl9FWFRGTEdCSVQpOwotfQotCi0jZGVmaW5lIFhGU19TQl9WRVJTSU9OX0hBU1NFQ1RPUihzYnApICAgeGZzX3NiX3ZlcnNpb25faGFzc2VjdG9yKHNicCkKIHN0YXRpYyBpbmxpbmUgaW50IHhmc19zYl92ZXJzaW9uX2hhc3NlY3Rvcih4ZnNfc2JfdCAqc2JwKQogewogCXJldHVybiAoWEZTX1NCX1ZFUlNJT05fTlVNKHNicCkgPT0gWEZTX1NCX1ZFUlNJT05fNCkgJiYgXAogCQkoKHNicCktPnNiX3ZlcnNpb25udW0gJiBYRlNfU0JfVkVSU0lPTl9TRUNUT1JCSVQpOwogfQogCi0jZGVmaW5lIFhGU19TQl9WRVJTSU9OX0hBU01PUkVCSVRTKHNicCkJeGZzX3NiX3ZlcnNpb25faGFzbW9yZWJpdHMoc2JwKQogc3RhdGljIGlubGluZSBpbnQgeGZzX3NiX3ZlcnNpb25faGFzbW9yZWJpdHMoeGZzX3NiX3QgKnNicCkKIHsKIAlyZXR1cm4gKFhGU19TQl9WRVJTSU9OX05VTShzYnApID09IFhGU19TQl9WRVJTSU9OXzQpICYmIFwKQEAgLTQ3NiwyNCArNDQ5LDIyIEBACiAgKiBGb3IgZXhhbXBsZSwgZm9yIGEgYml0IGRlZmluZWQgYXMgWEZTX1NCX1ZFUlNJT04yX0ZVTkJJVCwgaGFzIGEgbWFjcm86CiAgKgogICogU0JfVkVSU0lPTl9IQVNGVU5CSVQoeGZzX3NiX3QgKnNicCkKLSAqCSgoWEZTX1NCX1ZFUlNJT05fSEFTTU9SRUJJVFMoc2JwKSAmJgorICoJKCh4ZnNfc2JfdmVyc2lvbl9oYXNtb3JlYml0cyhzYnApICYmCiAgKgkgKChzYnApLT5zYl9mZWF0dXJlczIgJiBYRlNfU0JfVkVSU0lPTjJfRlVOQklUKQogICovCiAKIHN0YXRpYyBpbmxpbmUgaW50IHhmc19zYl92ZXJzaW9uX2hhc2xhenlzYmNvdW50KHhmc19zYl90ICpzYnApCiB7Ci0JcmV0dXJuIChYRlNfU0JfVkVSU0lPTl9IQVNNT1JFQklUUyhzYnApICYmCVwKKwlyZXR1cm4gKHhmc19zYl92ZXJzaW9uX2hhc21vcmViaXRzKHNicCkgJiYJXAogCQkoKHNicCktPnNiX2ZlYXR1cmVzMiAmIFhGU19TQl9WRVJTSU9OMl9MQVpZU0JDT1VOVEJJVCkpOwogfQogCi0jZGVmaW5lIFhGU19TQl9WRVJTSU9OX0hBU0FUVFIyKHNicCkJeGZzX3NiX3ZlcnNpb25faGFzYXR0cjIoc2JwKQogc3RhdGljIGlubGluZSBpbnQgeGZzX3NiX3ZlcnNpb25faGFzYXR0cjIoeGZzX3NiX3QgKnNicCkKIHsKLQlyZXR1cm4gKFhGU19TQl9WRVJTSU9OX0hBU01PUkVCSVRTKHNicCkpICYmCVwKKwlyZXR1cm4gKHhmc19zYl92ZXJzaW9uX2hhc21vcmViaXRzKHNicCkpICYmCVwKIAkJKChzYnApLT5zYl9mZWF0dXJlczIgJiBYRlNfU0JfVkVSU0lPTjJfQVRUUjJCSVQpOwogfQogCi0jZGVmaW5lIFhGU19TQl9WRVJTSU9OX0FEREFUVFIyKHNicCkJeGZzX3NiX3ZlcnNpb25fYWRkYXR0cjIoc2JwKQogc3RhdGljIGlubGluZSB2b2lkIHhmc19zYl92ZXJzaW9uX2FkZGF0dHIyKHhmc19zYl90ICpzYnApCiB7CiAJKChzYnApLT5zYl92ZXJzaW9ubnVtID0JXApkaWZmIC0tZ2l0IGEvZnMveGZzL3hmc191dGlscy5jIGIvZnMveGZzL3hmc191dGlscy5jCmluZGV4IDQ1ZDc0MGQuLjE4YTg1ZTcgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfdXRpbHMuYworKysgYi9mcy94ZnMveGZzX3V0aWxzLmMKQEAgLTMzOSwxMCArMzM5LDEwIEBACiAJaXAtPmlfZC5kaV9vbmxpbmsgPSAwOwogCW1lbXNldCgmKGlwLT5pX2QuZGlfcGFkWzBdKSwgMCwgc2l6ZW9mKGlwLT5pX2QuZGlfcGFkKSk7CiAJbXAgPSB0cC0+dF9tb3VudHA7Ci0JaWYgKCFYRlNfU0JfVkVSU0lPTl9IQVNOTElOSygmbXAtPm1fc2IpKSB7CisJaWYgKCF4ZnNfc2JfdmVyc2lvbl9oYXNubGluaygmbXAtPm1fc2IpKSB7CiAJCXNwaW5fbG9jaygmbXAtPm1fc2JfbG9jayk7Ci0JCWlmICghWEZTX1NCX1ZFUlNJT05fSEFTTkxJTksoJm1wLT5tX3NiKSkgewotCQkJWEZTX1NCX1ZFUlNJT05fQURETkxJTksoJm1wLT5tX3NiKTsKKwkJaWYgKCF4ZnNfc2JfdmVyc2lvbl9oYXNubGluaygmbXAtPm1fc2IpKSB7CisJCQl4ZnNfc2JfdmVyc2lvbl9hZGRubGluaygmbXAtPm1fc2IpOwogCQkJc3Bpbl91bmxvY2soJm1wLT5tX3NiX2xvY2spOwogCQkJeGZzX21vZF9zYih0cCwgWEZTX1NCX1ZFUlNJT05OVU0pOwogCQl9IGVsc2UgewpkaWZmIC0tZ2l0IGEvZnMveGZzL3hmc192ZnNvcHMuYyBiL2ZzL3hmcy94ZnNfdmZzb3BzLmMKaW5kZXggNzMyMTMwNC4uNzA5NGNhZiAxMDA2NDQKLS0tIGEvZnMveGZzL3hmc192ZnNvcHMuYworKysgYi9mcy94ZnMveGZzX3Zmc29wcy5jCkBAIC0zMzAsNyArMzMwLDcgQEAKIAlpbnQJCQlyb25seSA9IChtcC0+bV9mbGFncyAmIFhGU19NT1VOVF9SRE9OTFkpOwogCiAJLyogRmFpbCBhIG1vdW50IHdoZXJlIHRoZSBsb2didWYgaXMgc21hbGxlciB0aGVuIHRoZSBsb2cgc3RyaXBlICovCi0JaWYgKFhGU19TQl9WRVJTSU9OX0hBU0xPR1YyKCZtcC0+bV9zYikpIHsKKwlpZiAoeGZzX3NiX3ZlcnNpb25faGFzbG9ndjIoJm1wLT5tX3NiKSkgewogCQlpZiAoKGFwLT5sb2didWZzaXplIDw9IDApICYmCiAJCSAgICAobXAtPm1fc2Iuc2JfbG9nc3VuaXQgPiBYTE9HX0JJR19SRUNPUkRfQlNJWkUpKSB7CiAJCQltcC0+bV9sb2dic2l6ZSA9IG1wLT5tX3NiLnNiX2xvZ3N1bml0OwpAQCAtMzQ5LDkgKzM0OSw4IEBACiAJCX0KIAl9CiAKLQlpZiAoWEZTX1NCX1ZFUlNJT05fSEFTQVRUUjIoJm1wLT5tX3NiKSkgeworCWlmICh4ZnNfc2JfdmVyc2lvbl9oYXNhdHRyMigmbXAtPm1fc2IpKQogCQltcC0+bV9mbGFncyB8PSBYRlNfTU9VTlRfQVRUUjI7Ci0JfQogCiAJLyoKIAkgKiBwcm9oaWJpdCByL3cgbW91bnRzIG9mIHJlYWQtb25seSBmaWxlc3lzdGVtcwpAQCAtMzY2LDcgKzM2NSw3IEBACiAJICogY2hlY2sgZm9yIHNoYXJlZCBtb3VudC4KIAkgKi8KIAlpZiAoYXAtPmZsYWdzICYgWEZTTU5UX1NIQVJFRCkgewotCQlpZiAoIVhGU19TQl9WRVJTSU9OX0hBU1NIQVJFRCgmbXAtPm1fc2IpKQorCQlpZiAoIXhmc19zYl92ZXJzaW9uX2hhc3NoYXJlZCgmbXAtPm1fc2IpKQogCQkJcmV0dXJuIFhGU19FUlJPUihFSU5WQUwpOwogCiAJCS8qCkBAIC01MTIsNyArNTExLDcgQEAKIAlpZiAoIWVycm9yICYmIGxvZ2RldiAmJiBsb2dkZXYgIT0gZGRldikgewogCQl1bnNpZ25lZCBpbnQJbG9nX3NlY3Rvcl9zaXplID0gQkJTSVpFOwogCi0JCWlmIChYRlNfU0JfVkVSU0lPTl9IQVNTRUNUT1IoJm1wLT5tX3NiKSkKKwkJaWYgKHhmc19zYl92ZXJzaW9uX2hhc3NlY3RvcigmbXAtPm1fc2IpKQogCQkJbG9nX3NlY3Rvcl9zaXplID0gbXAtPm1fc2Iuc2JfbG9nc2VjdHNpemU7CiAJCWVycm9yID0geGZzX3NldHNpemVfYnVmdGFyZyhtcC0+bV9sb2dkZXZfdGFyZ3AsCiAJCQkJCSAgICBtcC0+bV9zYi5zYl9ibG9ja3NpemUsCmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX3Zub2Rlb3BzLmMgYi9mcy94ZnMveGZzX3Zub2Rlb3BzLmMKaW5kZXggNTEzMDUyNC4uNjRjNTk1MyAxMDA2NDQKLS0tIGEvZnMveGZzL3hmc192bm9kZW9wcy5jCisrKyBiL2ZzL3hmcy94ZnNfdm5vZGVvcHMuYwpAQCAtNDEzMiw3ICs0MTMyLDcgQEAKIAkgKiBhY3R1YWxseSBuZWVkIHRvIHplcm8gdGhlIGV4dGVudCBlZGdlcy4gIE90aGVyd2lzZSB4ZnNfYnVubWFwaQogCSAqIHdpbGwgdGFrZSBjYXJlIG9mIGl0IGZvciB1cy4KIAkgKi8KLQlpZiAocnQgJiYgIVhGU19TQl9WRVJTSU9OX0hBU0VYVEZMR0JJVCgmbXAtPm1fc2IpKSB7CisJaWYgKHJ0ICYmICF4ZnNfc2JfdmVyc2lvbl9oYXNleHRmbGdiaXQoJm1wLT5tX3NiKSkgewogCQluaW1hcCA9IDE7CiAJCWVycm9yID0geGZzX2JtYXBpKE5VTEwsIGlwLCBzdGFydG9mZnNldF9mc2IsCiAJCQkxLCAwLCBOVUxMLCAwLCAmaW1hcCwgJm5pbWFwLCBOVUxMLCBOVUxMKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFscGhhL2N1cnJlbnQuaCBiL2luY2x1ZGUvYXNtLWFscGhhL2N1cnJlbnQuaAppbmRleCA4ZDg4YTEzLi4wOTRkMjg1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1hbHBoYS9jdXJyZW50LmgKKysrIGIvaW5jbHVkZS9hc20tYWxwaGEvY3VycmVudC5oCkBAIC0zLDcgKzMsNyBAQAogCiAjaW5jbHVkZSA8bGludXgvdGhyZWFkX2luZm8uaD4KIAotI2RlZmluZSBnZXRfY3VycmVudCgpCShjdXJyZW50X3RocmVhZF9pbmZvKCktPnRhc2sgKyAwKQorI2RlZmluZSBnZXRfY3VycmVudCgpCShjdXJyZW50X3RocmVhZF9pbmZvKCktPnRhc2spCiAjZGVmaW5lIGN1cnJlbnQJCWdldF9jdXJyZW50KCkKIAogI2VuZGlmIC8qIF9BTFBIQV9DVVJSRU5UX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFscGhhL2RtYS1tYXBwaW5nLmggYi9pbmNsdWRlL2FzbS1hbHBoYS9kbWEtbWFwcGluZy5oCmluZGV4IDc1YTFhZmYuLmRiMzUxZDEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWFscGhhL2RtYS1tYXBwaW5nLmgKKysrIGIvaW5jbHVkZS9hc20tYWxwaGEvZG1hLW1hcHBpbmcuaApAQCAtMTEsNyArMTEsNyBAQAogI2RlZmluZSBkbWFfdW5tYXBfc2luZ2xlKGRldiwgYWRkciwgc2l6ZSwgZGlyKQkJXAogCQlwY2lfdW5tYXBfc2luZ2xlKGFscGhhX2dlbmRldl90b19wY2koZGV2KSwgYWRkciwgc2l6ZSwgZGlyKQogI2RlZmluZSBkbWFfYWxsb2NfY29oZXJlbnQoZGV2LCBzaXplLCBhZGRyLCBnZnApCVwKLQkJcGNpX2FsbG9jX2NvbnNpc3RlbnQoYWxwaGFfZ2VuZGV2X3RvX3BjaShkZXYpLCBzaXplLCBhZGRyKQorCSAgICAgIF9fcGNpX2FsbG9jX2NvbnNpc3RlbnQoYWxwaGFfZ2VuZGV2X3RvX3BjaShkZXYpLCBzaXplLCBhZGRyLCBnZnApCiAjZGVmaW5lIGRtYV9mcmVlX2NvaGVyZW50KGRldiwgc2l6ZSwgdmEsIGFkZHIpCQlcCiAJCXBjaV9mcmVlX2NvbnNpc3RlbnQoYWxwaGFfZ2VuZGV2X3RvX3BjaShkZXYpLCBzaXplLCB2YSwgYWRkcikKICNkZWZpbmUgZG1hX21hcF9wYWdlKGRldiwgcGFnZSwgb2ZmLCBzaXplLCBkaXIpCQlcCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hbHBoYS9rdm0uaCBiL2luY2x1ZGUvYXNtLWFscGhhL2t2bS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5ZGFlYzQKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hbHBoYS9rdm0uaApAQCAtMCwwICsxLDYgQEAKKyNpZm5kZWYgX19MSU5VWF9LVk1fQUxQSEFfSAorI2RlZmluZSBfX0xJTlVYX0tWTV9BTFBIQV9ICisKKy8qIGFscGhhIGRvZXMgbm90IHN1cHBvcnQgS1ZNICovCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYWxwaGEvcGNpLmggYi9pbmNsdWRlL2FzbS1hbHBoYS9wY2kuaAppbmRleCBkNWIxMGVmLi5kMzFmZDQ5IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1hbHBoYS9wY2kuaAorKysgYi9pbmNsdWRlL2FzbS1hbHBoYS9wY2kuaApAQCAtNzYsNyArNzYsMTMgQEAKICAgIHN1Y2Nlc3NmdWwgYW5kIHNldHMgKkRNQV9BRERSUCB0byB0aGUgcGNpIHNpZGUgZG1hIGFkZHJlc3MgYXMgd2VsbCwKICAgIGVsc2UgRE1BX0FERFJQIGlzIHVuZGVmaW5lZC4gICovCiAKLWV4dGVybiB2b2lkICpwY2lfYWxsb2NfY29uc2lzdGVudChzdHJ1Y3QgcGNpX2RldiAqLCBzaXplX3QsIGRtYV9hZGRyX3QgKik7CitleHRlcm4gdm9pZCAqX19wY2lfYWxsb2NfY29uc2lzdGVudChzdHJ1Y3QgcGNpX2RldiAqLCBzaXplX3QsCisJCQkJICAgIGRtYV9hZGRyX3QgKiwgZ2ZwX3QpOworc3RhdGljIGlubGluZSB2b2lkICoKK3BjaV9hbGxvY19jb25zaXN0ZW50KHN0cnVjdCBwY2lfZGV2ICpkZXYsIHNpemVfdCBzaXplLCBkbWFfYWRkcl90ICpkbWEpCit7CisJcmV0dXJuIF9fcGNpX2FsbG9jX2NvbnNpc3RlbnQoZGV2LCBzaXplLCBkbWEsIEdGUF9BVE9NSUMpOworfQogCiAvKiBGcmVlIGFuZCB1bm1hcCBhIGNvbnNpc3RlbnQgRE1BIGJ1ZmZlci4gIENQVV9BRERSIGFuZCBETUFfQUREUiBtdXN0CiAgICBiZSB2YWx1ZXMgdGhhdCB3ZXJlIHJldHVybmVkIGZyb20gcGNpX2FsbG9jX2NvbnNpc3RlbnQuICBTSVpFIG11c3QKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWF0OTEvYXQ5MWNhcDkuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWF0OTEvYXQ5MWNhcDkuaAppbmRleCA3M2UxZmNmLi5iYWM4M2FkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1hdDkxL2F0OTFjYXA5LmgKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtYXQ5MS9hdDkxY2FwOS5oCkBAIC05NywxMiArOTcsMTcgQEAKICNkZWZpbmUgQVQ5MV9QSU9ECSgweGZmZmZmODAwIC0gQVQ5MV9CQVNFX1NZUykKICNkZWZpbmUgQVQ5MV9QTUMJKDB4ZmZmZmZjMDAgLSBBVDkxX0JBU0VfU1lTKQogI2RlZmluZSBBVDkxX1JTVEMJKDB4ZmZmZmZkMDAgLSBBVDkxX0JBU0VfU1lTKQotI2RlZmluZSBBVDkxX1NIREMJKDB4ZmZmZmZkMTAgLSBBVDkxX0JBU0VfU1lTKQorI2RlZmluZSBBVDkxX1NIRFdDCSgweGZmZmZmZDEwIC0gQVQ5MV9CQVNFX1NZUykKICNkZWZpbmUgQVQ5MV9SVFQJKDB4ZmZmZmZkMjAgLSBBVDkxX0JBU0VfU1lTKQogI2RlZmluZSBBVDkxX1BJVAkoMHhmZmZmZmQzMCAtIEFUOTFfQkFTRV9TWVMpCiAjZGVmaW5lIEFUOTFfV0RUCSgweGZmZmZmZDQwIC0gQVQ5MV9CQVNFX1NZUykKICNkZWZpbmUgQVQ5MV9HUEJSCSgweGZmZmZmZDUwIC0gQVQ5MV9CQVNFX1NZUykKIAorI2RlZmluZSBBVDkxX1VTQVJUMAlBVDkxQ0FQOV9CQVNFX1VTMAorI2RlZmluZSBBVDkxX1VTQVJUMQlBVDkxQ0FQOV9CQVNFX1VTMQorI2RlZmluZSBBVDkxX1VTQVJUMglBVDkxQ0FQOV9CQVNFX1VTMgorCisKIC8qCiAgKiBJbnRlcm5hbCBNZW1vcnkuCiAgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvYm9hcmQtaDMuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvYm9hcmQtaDMuaAppbmRleCAxYzJiNTVjLi4wZjY0MDQ0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2JvYXJkLWgzLmgKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9ib2FyZC1oMy5oCkBAIC0zNiw3ICszNiw3IEBACiAKICNkZWZpbmUgTlJfSVJRUwkJCQkoTUFYSVJRTlVNICsgMSkKIAotZXh0ZXJuIHZvaWQgX19pbml0IGgzX21tY19pbml0KHZvaWQpOworZXh0ZXJuIHZvaWQgaDNfbW1jX2luaXQodm9pZCk7CiBleHRlcm4gdm9pZCBoM19tbWNfc2xvdF9jb3Zlcl9oYW5kbGVyKHZvaWQgKmFyZywgaW50IHN0YXRlKTsKIAogI2VuZGlmIC8qICBfX0FTTV9BUkNIX09NQVBfSDNfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9jb21tb24uaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvY29tbW9uLmgKaW5kZXggNDQyYWVjYi4uMjI0ZTAwOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9jb21tb24uaAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2NvbW1vbi5oCkBAIC0yNyw5ICsyNyw3IEBACiAjaWZuZGVmIF9fQVJDSF9BUk1fTUFDSF9PTUFQX0NPTU1PTl9ICiAjZGVmaW5lIF9fQVJDSF9BUk1fTUFDSF9PTUFQX0NPTU1PTl9ICiAKLSNpZmRlZiBDT05GSUdfSTJDX09NQVAKICNpbmNsdWRlIDxsaW51eC9pMmMuaD4KLSNlbmRpZgogCiBzdHJ1Y3Qgc3lzX3RpbWVyOwogCkBAIC00MSw3ICszOSwxMiBAQAogCQkJCSBzdHJ1Y3QgaTJjX2JvYXJkX2luZm8gY29uc3QgKmluZm8sCiAJCQkJIHVuc2lnbmVkIGxlbik7CiAjZWxzZQotI2RlZmluZSBvbWFwX3JlZ2lzdGVyX2kyY19idXMoYSwgYiwgYywgZCkJMAorc3RhdGljIGlubGluZSBpbnQgb21hcF9yZWdpc3Rlcl9pMmNfYnVzKGludCBidXNfaWQsIHUzMiBjbGtyYXRlLAorCQkJCSBzdHJ1Y3QgaTJjX2JvYXJkX2luZm8gY29uc3QgKmluZm8sCisJCQkJIHVuc2lnbmVkIGxlbikKK3sKKwlyZXR1cm4gMDsKK30KICNlbmRpZgogCiAjZW5kaWYgLyogX19BUkNIX0FSTV9NQUNIX09NQVBfQ09NTU9OX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvZHNwX2NvbW1vbi5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9kc3BfY29tbW9uLmgKaW5kZXggYzYxZjg2OC4uZGE5NzczNiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9kc3BfY29tbW9uLmgKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9kc3BfY29tbW9uLmgKQEAgLTI0LDExICsyNCwxNyBAQAogI2lmbmRlZiBBU01fQVJDSF9EU1BfQ09NTU9OX0gKICNkZWZpbmUgQVNNX0FSQ0hfRFNQX0NPTU1PTl9ICiAKLSNpZmRlZiBDT05GSUdfQVJDSF9PTUFQMQorI2lmIGRlZmluZWQoQ09ORklHX0FSQ0hfT01BUDEpICYmIGRlZmluZWQoQ09ORklHX09NQVBfTU1VX0ZXSykKIGV4dGVybiB2b2lkIG9tYXBfZHNwX3JlcXVlc3RfbXB1aSh2b2lkKTsKIGV4dGVybiB2b2lkIG9tYXBfZHNwX3JlbGVhc2VfbXB1aSh2b2lkKTsKIGV4dGVybiBpbnQgb21hcF9kc3BfcmVxdWVzdF9tZW0odm9pZCk7CiBleHRlcm4gaW50IG9tYXBfZHNwX3JlbGVhc2VfbWVtKHZvaWQpOworI2Vsc2UKK3N0YXRpYyBpbmxpbmUgaW50IG9tYXBfZHNwX3JlcXVlc3RfbWVtKHZvaWQpCit7CisJcmV0dXJuIDA7Cit9CisjZGVmaW5lIG9tYXBfZHNwX3JlbGVhc2VfbWVtKCkJZG8ge30gd2hpbGUgKDApCiAjZW5kaWYKIAogI2VuZGlmIC8qIEFTTV9BUkNIX0RTUF9DT01NT05fSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9ncGlvZXhwYW5kZXIuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvZ3Bpb2V4cGFuZGVyLmgKaW5kZXggN2E0M2IwYS4uNGVlZDFmOCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9ncGlvZXhwYW5kZXIuaAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2dwaW9leHBhbmRlci5oCkBAIC0xOCw3ICsxOCwxOCBAQAogCiAvKiBGdW5jdGlvbiBQcm90b3R5cGVzIGZvciBHUElPIEV4cGFuZGVyIGZ1bmN0aW9ucyAqLwogCisjaWZkZWYgQ09ORklHX0dQSU9FWFBBTkRFUl9PTUFQCiBpbnQgcmVhZF9ncGlvX2V4cGEodTggKiwgaW50KTsKIGludCB3cml0ZV9ncGlvX2V4cGEodTggLCBpbnQpOworI2Vsc2UKK3N0YXRpYyBpbmxpbmUgaW50IHJlYWRfZ3Bpb19leHBhKHU4ICp2YWwsIGludCBhZGRyKQoreworCXJldHVybiAwOworfQorc3RhdGljIGlubGluZSBpbnQgd3JpdGVfZ3Bpb19leHBhKHU4IHZhbCwgaW50IGFkZHIpCit7CisJcmV0dXJuIDA7Cit9CisjZW5kaWYKIAogI2VuZGlmIC8qIF9fQVNNX0FSQ0hfT01BUF9HUElPRVhQQU5ERVJfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9pcnFzLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL2lycXMuaAppbmRleCBkODU4YjNlLi5mNTQzNWQ4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL2lycXMuaAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL2lycXMuaApAQCAtODUsNyArODUsNyBAQAogI2RlZmluZSBJUlFfRUlOVDIzICAgICBTM0MyNDEwX0lSUSg1MSkKIAogCi0jZGVmaW5lIElSUV9FSU5UKHgpICAgIFMzQzI0MTBfSVJRKCh4ID49IDQpID8gKElSUV9FSU5UNCArICh4KSAtIDQpIDogKFMzQzI0MTBfSVJRKDApICsgKHgpKSkKKyNkZWZpbmUgSVJRX0VJTlQoeCkgICAgKCgoeCkgPj0gNCkgPyAoSVJRX0VJTlQ0ICsgKHgpIC0gNCkgOiAoSVJRX0VJTlQwICsgKHgpKSkKIAogI2RlZmluZSBJUlFfTENEX0ZJRk8gICBTM0MyNDEwX0lSUSg1MikKICNkZWZpbmUgSVJRX0xDRF9GUkFNRSAgUzNDMjQxMF9JUlEoNTMpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL3NwaS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9zcGkuaAppbmRleCA3Y2EwZWQ5Li4zNTJkMzM4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL3NwaS5oCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvc3BpLmgKQEAgLTE1LDYgKzE1LDcgQEAKIAogc3RydWN0IHMzYzI0MTBfc3BpX2luZm8gewogCXVuc2lnbmVkIGxvbmcJCSBwaW5fY3M7CS8qIHNpbXBsZSBncGlvIGNzICovCisJdW5zaWduZWQgaW50CQkgbnVtX2NzOwkvKiB0b3RhbCBjaGlwc2VsZWN0cyAqLwogCiAJdm9pZCAoKnNldF9jcykoc3RydWN0IHMzYzI0MTBfc3BpX2luZm8gKnNwaSwgaW50IGNzLCBpbnQgcG9sKTsKIH07CmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0va3ZtLmggYi9pbmNsdWRlL2FzbS1hcm0va3ZtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2IzYzA4YwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9rdm0uaApAQCAtMCwwICsxLDYgQEAKKyNpZm5kZWYgX19MSU5VWF9LVk1fQVJNX0gKKyNkZWZpbmUgX19MSU5VWF9LVk1fQVJNX0gKKworLyogYXJtIGRvZXMgbm90IHN1cHBvcnQgS1ZNICovCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL3BndGFibGUtbm9tbXUuaCBiL2luY2x1ZGUvYXNtLWFybS9wZ3RhYmxlLW5vbW11LmgKaW5kZXggMzNjODNkZC4uMmU1ODY4YiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tYXJtL3BndGFibGUtbm9tbXUuaAorKysgYi9pbmNsdWRlL2FzbS1hcm0vcGd0YWJsZS1ub21tdS5oCkBAIC05Miw2ICs5Miw4IEBACiAKICNkZWZpbmUgRklSU1RfVVNFUl9BRERSRVNTICAgICAgKDApCiAKKyNpbmNsdWRlIDxhc20tZ2VuZXJpYy9wZ3RhYmxlLmg+CisKICNlbHNlIAogCiAvKgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL3BsYXQtczNjL3VuY29tcHJlc3MuaCBiL2luY2x1ZGUvYXNtLWFybS9wbGF0LXMzYy91bmNvbXByZXNzLmgKaW5kZXggYjVlNjIwOC4uMTliOWVkYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tYXJtL3BsYXQtczNjL3VuY29tcHJlc3MuaAorKysgYi9pbmNsdWRlL2FzbS1hcm0vcGxhdC1zM2MvdW5jb21wcmVzcy5oCkBAIC0yNyw4ICsyNyw4IEBACiAKIC8qIGRlZmluZXMgZm9yIFVBUlQgcmVnaXN0ZXJzICovCiAKLSNpbmNsdWRlICJhc20vcGxhdC1zM2MvcmVncy1zZXJpYWwuaCIKLSNpbmNsdWRlICJhc20vcGxhdC1zM2MvcmVncy13YXRjaGRvZy5oIgorI2luY2x1ZGUgPGFzbS9wbGF0LXMzYy9yZWdzLXNlcmlhbC5oPgorI2luY2x1ZGUgPGFzbS9wbGF0LXMzYy9yZWdzLXdhdGNoZG9nLmg+CiAKIC8qIHdvcmtpbmcgaW4gcGh5c2ljYWwgc3BhY2UuLi4gKi8KICN1bmRlZiBTM0MyNDEwX1dET0dSRUcKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9wcm9jLWZucy5oIGIvaW5jbHVkZS9hc20tYXJtL3Byb2MtZm5zLmgKaW5kZXggYTRjZTQ1Ny4uNzVlYzc2MCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tYXJtL3Byb2MtZm5zLmgKKysrIGIvaW5jbHVkZS9hc20tYXJtL3Byb2MtZm5zLmgKQEAgLTIxNCw5ICsyMTQsOSBAQAogI2lmbmRlZiBfX0FTU0VNQkxZX18KIAogI2lmbmRlZiBNVUxUSV9DUFUKLSNpbmNsdWRlICJhc20vY3B1LXNpbmdsZS5oIgorI2luY2x1ZGUgPGFzbS9jcHUtc2luZ2xlLmg+CiAjZWxzZQotI2luY2x1ZGUgImFzbS9jcHUtbXVsdGkzMi5oIgorI2luY2x1ZGUgPGFzbS9jcHUtbXVsdGkzMi5oPgogI2VuZGlmCiAKICNpbmNsdWRlIDxhc20vbWVtb3J5Lmg+CmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hdnIzMi9ieXRlb3JkZXIuaCBiL2luY2x1ZGUvYXNtLWF2cjMyL2J5dGVvcmRlci5oCmluZGV4IDQwMmZmNDEuLmQ3N2I0OGIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWF2cjMyL2J5dGVvcmRlci5oCisrKyBiL2luY2x1ZGUvYXNtLWF2cjMyL2J5dGVvcmRlci5oCkBAIC0xMiw4ICsxMiwxNCBAQAogZXh0ZXJuIHVuc2lnbmVkIHNob3J0IF9fYnVpbHRpbl9ic3dhcF8xNih1bnNpZ25lZCBzaG9ydCB4KTsKICNlbmRpZgogCisvKgorICogYXZyMzItbGludXgtZ2NjIHZlcnNpb25zIGVhcmxpZXIgdGhhbiA0LjIgaW1wcm9wZXJseSBzaWduLWV4dGVuZHMKKyAqIHRoZSByZXN1bHQuCisgKi8KKyNpZiAhKF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCAyKQogI2RlZmluZSBfX2FyY2hfX3N3YWIzMih4KSBfX2J1aWx0aW5fYnN3YXBfMzIoeCkKICNkZWZpbmUgX19hcmNoX19zd2FiMTYoeCkgX19idWlsdGluX2Jzd2FwXzE2KHgpCisjZW5kaWYKIAogI2lmICFkZWZpbmVkKF9fU1RSSUNUX0FOU0lfXykgfHwgZGVmaW5lZChfX0tFUk5FTF9fKQogIyBkZWZpbmUgX19CWVRFT1JERVJfSEFTX1U2NF9fCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hdnIzMi9rdm0uaCBiL2luY2x1ZGUvYXNtLWF2cjMyL2t2bS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjNTc3NzAKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hdnIzMi9rdm0uaApAQCAtMCwwICsxLDYgQEAKKyNpZm5kZWYgX19MSU5VWF9LVk1fQVZSMzJfSAorI2RlZmluZSBfX0xJTlVYX0tWTV9BVlIzMl9ICisKKy8qIGF2cjMyIGRvZXMgbm90IHN1cHBvcnQgS1ZNICovCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYmxhY2tmaW4va3ZtLmggYi9pbmNsdWRlL2FzbS1ibGFja2Zpbi9rdm0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzQ3N2Q3Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYmxhY2tmaW4va3ZtLmgKQEAgLTAsMCArMSw2IEBACisjaWZuZGVmIF9fTElOVVhfS1ZNX0JMQUNLRklOX0gKKyNkZWZpbmUgX19MSU5VWF9LVk1fQkxBQ0tGSU5fSAorCisvKiBibGFja2ZpbiBkb2VzIG5vdCBzdXBwb3J0IEtWTSAqLworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWNyaXMva3ZtLmggYi9pbmNsdWRlL2FzbS1jcmlzL2t2bS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4NjBmNTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1jcmlzL2t2bS5oCkBAIC0wLDAgKzEsNiBAQAorI2lmbmRlZiBfX0xJTlVYX0tWTV9DUklTX0gKKyNkZWZpbmUgX19MSU5VWF9LVk1fQ1JJU19ICisKKy8qIGNyaXMgZG9lcyBub3Qgc3VwcG9ydCBLVk0gKi8KKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1mcnYva3ZtLmggYi9pbmNsdWRlL2FzbS1mcnYva3ZtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWM4YTRmMAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWZydi9rdm0uaApAQCAtMCwwICsxLDYgQEAKKyNpZm5kZWYgX19MSU5VWF9LVk1fRlJWX0gKKyNkZWZpbmUgX19MSU5VWF9LVk1fRlJWX0gKKworLyogZnJ2IGRvZXMgbm90IHN1cHBvcnQgS1ZNICovCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tZnJ2L21lbS1sYXlvdXQuaCBiL2luY2x1ZGUvYXNtLWZydi9tZW0tbGF5b3V0LmgKaW5kZXggODM1MzIyNS4uNzM0YTFkMCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tZnJ2L21lbS1sYXlvdXQuaAorKysgYi9pbmNsdWRlL2FzbS1mcnYvbWVtLWxheW91dC5oCkBAIC02MCw3ICs2MCw3IEBACiAgKi8KICNkZWZpbmUgQlJLX0JBU0UJCQlfX1VMKDIgKiAxMDI0ICogMTAyNCArIFBBR0VfU0laRSkKICNkZWZpbmUgU1RBQ0tfVE9QCQkJX19VTCgyICogMTAyNCAqIDEwMjQpCi0jZGVmaW5lIFNUQUNLX1RPUF9NQVgJU1RBQ0tfVE9QCisjZGVmaW5lIFNUQUNLX1RPUF9NQVgJCQlfX1VMKDB4YzAwMDAwMDApCiAKIC8qIHVzZXJzcGFjZSBwcm9jZXNzIHNpemUgKi8KICNpZmRlZiBDT05GSUdfTU1VCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1mcnYvcGd0YWJsZS5oIGIvaW5jbHVkZS9hc20tZnJ2L3BndGFibGUuaAppbmRleCA2YzA2ODJlLi40ZTIxOTA0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1mcnYvcGd0YWJsZS5oCisrKyBiL2luY2x1ZGUvYXNtLWZydi9wZ3RhYmxlLmgKQEAgLTUwNywxMyArNTA3LDIyIEBACiAgKi8KIHN0YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGVfbW11X2NhY2hlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsIHB0ZV90IHB0ZSkKIHsKKwlzdHJ1Y3QgbW1fc3RydWN0ICptbTsKIAl1bnNpZ25lZCBsb25nIGFtcHI7Ci0JcGdkX3QgKnBnZSA9IHBnZF9vZmZzZXQoY3VycmVudC0+bW0sIGFkZHJlc3MpOwotCXB1ZF90ICpwdWUgPSBwdWRfb2Zmc2V0KHBnZSwgYWRkcmVzcyk7Ci0JcG1kX3QgKnBtZSA9IHBtZF9vZmZzZXQocHVlLCBhZGRyZXNzKTsKIAotCWFtcHIgPSBwbWUtPnN0ZVswXSAmIDB4ZmZmZmZmMDA7Ci0JYW1wciB8PSB4QU1QUnhfTCB8IHhBTVBSeF9TU18xNktiIHwgeEFNUFJ4X1MgfCB4QU1QUnhfQyB8IHhBTVBSeF9WOworCW1tID0gY3VycmVudC0+bW07CisJaWYgKG1tKSB7CisJCXBnZF90ICpwZ2UgPSBwZ2Rfb2Zmc2V0KG1tLCBhZGRyZXNzKTsKKwkJcHVkX3QgKnB1ZSA9IHB1ZF9vZmZzZXQocGdlLCBhZGRyZXNzKTsKKwkJcG1kX3QgKnBtZSA9IHBtZF9vZmZzZXQocHVlLCBhZGRyZXNzKTsKKworCQlhbXByID0gcG1lLT5zdGVbMF0gJiAweGZmZmZmZjAwOworCQlhbXByIHw9IHhBTVBSeF9MIHwgeEFNUFJ4X1NTXzE2S2IgfCB4QU1QUnhfUyB8IHhBTVBSeF9DIHwKKwkJCXhBTVBSeF9WOworCX0gZWxzZSB7CisJCWFkZHJlc3MgPSBVTE9OR19NQVg7CisJCWFtcHIgPSAwOworCX0KIAogCWFzbSB2b2xhdGlsZSgibW92Z3MgJTAsc2NyMFxuIgogCQkgICAgICJtb3ZncyAlMCxzY3IxXG4iCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1mcnYvc3ByLXJlZ3MuaCBiL2luY2x1ZGUvYXNtLWZydi9zcHItcmVncy5oCmluZGV4IGMyYTU0MWUuLjAxZTZhZjUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWZydi9zcHItcmVncy5oCisrKyBiL2luY2x1ZGUvYXNtLWZydi9zcHItcmVncy5oCkBAIC05OSw5ICs5OSwyMyBAQAogI2RlZmluZSBUQlJfVFRfVFJBUDEJCSgweDgxIDw8IDQpCiAjZGVmaW5lIFRCUl9UVF9UUkFQMgkJKDB4ODIgPDwgNCkKICNkZWZpbmUgVEJSX1RUX1RSQVAzCQkoMHg4MyA8PCA0KQorI2RlZmluZSBUQlJfVFRfVFJBUDEyMAkJKDB4ZjggPDwgNCkKKyNkZWZpbmUgVEJSX1RUX1RSQVAxMjEJCSgweGY5IDw8IDQpCisjZGVmaW5lIFRCUl9UVF9UUkFQMTIyCQkoMHhmYSA8PCA0KQorI2RlZmluZSBUQlJfVFRfVFJBUDEyMwkJKDB4ZmIgPDwgNCkKKyNkZWZpbmUgVEJSX1RUX1RSQVAxMjQJCSgweGZjIDw8IDQpCisjZGVmaW5lIFRCUl9UVF9UUkFQMTI1CQkoMHhmZCA8PCA0KQogI2RlZmluZSBUQlJfVFRfVFJBUDEyNgkJKDB4ZmUgPDwgNCkKICNkZWZpbmUgVEJSX1RUX0JSRUFLCQkoMHhmZiA8PCA0KQogCisjZGVmaW5lIFRCUl9UVF9BVE9NSUNfQ01QWENIRzMyCVRCUl9UVF9UUkFQMTIwCisjZGVmaW5lIFRCUl9UVF9BVE9NSUNfWENIRzMyCVRCUl9UVF9UUkFQMTIxCisjZGVmaW5lIFRCUl9UVF9BVE9NSUNfWE9SCVRCUl9UVF9UUkFQMTIyCisjZGVmaW5lIFRCUl9UVF9BVE9NSUNfT1IJVEJSX1RUX1RSQVAxMjMKKyNkZWZpbmUgVEJSX1RUX0FUT01JQ19BTkQJVEJSX1RUX1RSQVAxMjQKKyNkZWZpbmUgVEJSX1RUX0FUT01JQ19TVUIJVEJSX1RUX1RSQVAxMjUKKyNkZWZpbmUgVEJSX1RUX0FUT01JQ19BREQJVEJSX1RUX1RSQVAxMjYKKwogI2RlZmluZSBfX2dldF9UQlIoKQkoeyB1bnNpZ25lZCBsb25nIHg7IGFzbSB2b2xhdGlsZSgibW92c2cgdGJyLCUwIiA6ICI9ciIoeCkpOyB4OyB9KQogCiAvKgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tZnJ2L3N5c3RlbS5oIGIvaW5jbHVkZS9hc20tZnJ2L3N5c3RlbS5oCmluZGV4IGI0MDBjZWEuLjMwYTY3YTkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWZydi9zeXN0ZW0uaAorKysgYi9pbmNsdWRlL2FzbS1mcnYvc3lzdGVtLmgKQEAgLTE3OSwxNCArMTc5LDIzIEBACiAjZGVmaW5lIG1iKCkJCQlhc20gdm9sYXRpbGUgKCJtZW1iYXIiIDogOiA6Im1lbW9yeSIpCiAjZGVmaW5lIHJtYigpCQkJYXNtIHZvbGF0aWxlICgibWVtYmFyIiA6IDogOiJtZW1vcnkiKQogI2RlZmluZSB3bWIoKQkJCWFzbSB2b2xhdGlsZSAoIm1lbWJhciIgOiA6IDoibWVtb3J5IikKLSNkZWZpbmUgc2V0X21iKHZhciwgdmFsdWUpCWRvIHsgdmFyID0gdmFsdWU7IG1iKCk7IH0gd2hpbGUgKDApCisjZGVmaW5lIHJlYWRfYmFycmllcl9kZXBlbmRzKCkJYmFycmllcigpCiAKLSNkZWZpbmUgc21wX21iKCkJCW1iKCkKLSNkZWZpbmUgc21wX3JtYigpCQlybWIoKQotI2RlZmluZSBzbXBfd21iKCkJCXdtYigpCi0KLSNkZWZpbmUgcmVhZF9iYXJyaWVyX2RlcGVuZHMoKQkJZG8ge30gd2hpbGUoMCkKKyNpZmRlZiBDT05GSUdfU01QCisjZGVmaW5lIHNtcF9tYigpCQkJbWIoKQorI2RlZmluZSBzbXBfcm1iKCkJCQlybWIoKQorI2RlZmluZSBzbXBfd21iKCkJCQl3bWIoKQogI2RlZmluZSBzbXBfcmVhZF9iYXJyaWVyX2RlcGVuZHMoKQlyZWFkX2JhcnJpZXJfZGVwZW5kcygpCisjZGVmaW5lIHNldF9tYih2YXIsIHZhbHVlKSBcCisJZG8geyB4Y2hnKCZ2YXIsICh2YWx1ZSkpOyB9IHdoaWxlICgwKQorI2Vsc2UKKyNkZWZpbmUgc21wX21iKCkJCQliYXJyaWVyKCkKKyNkZWZpbmUgc21wX3JtYigpCQkJYmFycmllcigpCisjZGVmaW5lIHNtcF93bWIoKQkJCWJhcnJpZXIoKQorI2RlZmluZSBzbXBfcmVhZF9iYXJyaWVyX2RlcGVuZHMoKQlkbyB7fSB3aGlsZSgwKQorI2RlZmluZSBzZXRfbWIodmFyLCB2YWx1ZSkgXAorCWRvIHsgdmFyID0gKHZhbHVlKTsgYmFycmllcigpOyB9IHdoaWxlICgwKQorI2VuZGlmCiAKICNkZWZpbmUgSEFSRF9SRVNFVF9OT1coKQkJCVwKIGRvIHsJCQkJCQlcCkBAIC0yMzQsNyArMjQzLDcgQEAKIAkJYnJlYWs7CQkJCQkJCQlcCiAJCQkJCQkJCQkJXAogCWRlZmF1bHQ6CQkJCQkJCQlcCi0JCV9feGdfb3JpZyA9IDA7CQkJCQkJCVwKKwkJX194Z19vcmlnID0gKF9fdHlwZW9mX18oX194Z19vcmlnKSkwOwkJCQlcCiAJCWFzbSB2b2xhdGlsZSgiYnJlYWsiKTsJCQkJCQlcCiAJCWJyZWFrOwkJCQkJCQkJXAogCX0JCQkJCQkJCQlcCkBAIC0yNTksNyArMjY4LDcgQEAKIAkJCQkJIChfX2ZvcmNlIHVpbnQzMl90KV9feGdfdGVzdCwJCVwKIAkJCQkJIChfX2ZvcmNlIHVpbnQzMl90KV9feGdfbmV3KTsgYnJlYWs7CVwKIAlkZWZhdWx0OgkJCQkJCQkJXAotCQlfX3hnX29yaWcgPSAwOwkJCQkJCQlcCisJCV9feGdfb3JpZyA9IChfX3R5cGVvZl9fKF9feGdfb3JpZykpMDsJCQkJXAogCQlhc20gdm9sYXRpbGUoImJyZWFrIik7CQkJCQkJXAogCQlicmVhazsJCQkJCQkJCVwKIAl9CQkJCQkJCQkJXApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tZ2VuZXJpYy9LYnVpbGQuYXNtIGIvaW5jbHVkZS9hc20tZ2VuZXJpYy9LYnVpbGQuYXNtCmluZGV4IGZkOWRjZmQuLjkyYTZkOTEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWdlbmVyaWMvS2J1aWxkLmFzbQorKysgYi9pbmNsdWRlL2FzbS1nZW5lcmljL0tidWlsZC5hc20KQEAgLTEsMyArMSw1IEBACitoZWFkZXIteSAgKz0ga3ZtLmgKKwogaWZlcSAoJCh3aWxkY2FyZCBpbmNsdWRlL2FzbS0kKFNSQ0FSQ0gpL2Eub3V0LmgpLGluY2x1ZGUvYXNtLSQoU1JDQVJDSCkvYS5vdXQuaCkKIHVuaWZkZWYteSArPSBhLm91dC5oCiBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20taDgzMDAva3ZtLmggYi9pbmNsdWRlL2FzbS1oODMwMC9rdm0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZGJlZDdiCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20taDgzMDAva3ZtLmgKQEAgLTAsMCArMSw2IEBACisjaWZuZGVmIF9fTElOVVhfS1ZNX0g4MzAwX0gKKyNkZWZpbmUgX19MSU5VWF9LVk1fSDgzMDBfSAorCisvKiBoODMwMCBkb2VzIG5vdCBzdXBwb3J0IEtWTSAqLworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWg4MzAwL3VhY2Nlc3MuaCBiL2luY2x1ZGUvYXNtLWg4MzAwL3VhY2Nlc3MuaAppbmRleCBhMjIzNTBlLi4zNTYwNjhjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1oODMwMC91YWNjZXNzLmgKKysrIGIvaW5jbHVkZS9hc20taDgzMDAvdWFjY2Vzcy5oCkBAIC05MSwyMiArOTEsMTkgQEAKICNkZWZpbmUgZ2V0X3VzZXIoeCwgcHRyKQkJCQkJXAogKHsJCQkJCQkJCVwKICAgICBpbnQgX19ndV9lcnIgPSAwOwkJCQkJCVwKLSAgICB1aW50MzJfdCBfX2d1X3ZhbCA9IDA7CQkJCVwKKyAgICB0eXBlb2YoKihwdHIpKSBfX2d1X3ZhbCA9ICpwdHI7CQkJCVwKICAgICBzd2l0Y2ggKHNpemVvZigqKHB0cikpKSB7CQkJCQlcCiAgICAgY2FzZSAxOgkJCQkJCQlcCiAgICAgY2FzZSAyOgkJCQkJCQlcCiAgICAgY2FzZSA0OgkJCQkJCQlcCi0JX19ndV92YWwgPSAqKHB0cik7CSAgICAgICAgICAgICAgICAJCVwKLQlicmVhazsJCQkJCQkJXAotICAgIGNhc2UgODoJCQkJCQkJXAotCW1lbWNweSgmX19ndV92YWwsIHB0ciwgc2l6ZW9mICgqKHB0cikpKTsgCQlcCisgICAgY2FzZSA4OiAJCQkJCQkJXAogCWJyZWFrOwkJCQkJCQlcCiAgICAgZGVmYXVsdDoJCQkJCQkJXAotCV9fZ3VfdmFsID0gMDsJCQkJCQlcCiAJX19ndV9lcnIgPSBfX2dldF91c2VyX2JhZCgpOwkJCQlcCisJX19ndV92YWwgPSAwOwkJCQkJCVwKIAlicmVhazsJCQkJCQkJXAogICAgIH0JCQkJCQkJCVwKLSAgICAoeCkgPSAodHlwZW9mKCoocHRyKSkpX19ndV92YWw7CQkJCVwKKyAgICAoeCkgPSBfX2d1X3ZhbDsJCQkJCQlcCiAgICAgX19ndV9lcnI7CQkJCQkJCVwKIH0pCiAjZGVmaW5lIF9fZ2V0X3VzZXIoeCwgcHRyKSBnZXRfdXNlcih4LCBwdHIpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1pYTY0L2NwdXRpbWUuaCBiL2luY2x1ZGUvYXNtLWlhNjQvY3B1dGltZS5oCmluZGV4IDcyNDAwYTcuLmY5YWJkZWMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWlhNjQvY3B1dGltZS5oCisrKyBiL2luY2x1ZGUvYXNtLWlhNjQvY3B1dGltZS5oCkBAIC0xLDYgKzEsMTEwIEBACisvKgorICogaW5jbHVkZS9hc20taWE2NC9jcHV0aW1lLmg6CisgKgkJRGVmaW5pdGlvbnMgZm9yIG1lYXN1cmluZyBjcHV0aW1lIG9uIGlhNjQgbWFjaGluZXMuCisgKgorICogQmFzZWQgb24gPGFzbS1wb3dlcnBjL2NwdXRpbWUuaD4uCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEZVSklUU1UgTElNSVRFRAorICogQ29weXJpZ2h0IChDKSAyMDA3IEhpZGV0b3NoaSBTZXRvIDxzZXRvLmhpZGV0b3NoaUBqcC5mdWppdHN1LmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uCisgKiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIElmIHdlIGhhdmUgQ09ORklHX1ZJUlRfQ1BVX0FDQ09VTlRJTkcsIHdlIG1lYXN1cmUgY3B1IHRpbWUgaW4gbnNlYy4KKyAqIE90aGVyd2lzZSB3ZSBtZWFzdXJlIGNwdSB0aW1lIGluIGppZmZpZXMgdXNpbmcgdGhlIGdlbmVyaWMgZGVmaW5pdGlvbnMuCisgKi8KKwogI2lmbmRlZiBfX0lBNjRfQ1BVVElNRV9ICiAjZGVmaW5lIF9fSUE2NF9DUFVUSU1FX0gKIAorI2lmbmRlZiBDT05GSUdfVklSVF9DUFVfQUNDT1VOVElORwogI2luY2x1ZGUgPGFzbS1nZW5lcmljL2NwdXRpbWUuaD4KKyNlbHNlCiAKKyNpbmNsdWRlIDxsaW51eC90aW1lLmg+CisjaW5jbHVkZSA8bGludXgvamlmZmllcy5oPgorI2luY2x1ZGUgPGFzbS9wcm9jZXNzb3IuaD4KKwordHlwZWRlZiB1NjQgY3B1dGltZV90OwordHlwZWRlZiB1NjQgY3B1dGltZTY0X3Q7CisKKyNkZWZpbmUgY3B1dGltZV96ZXJvCQkJKChjcHV0aW1lX3QpMCkKKyNkZWZpbmUgY3B1dGltZV9tYXgJCQkoKH4oKGNwdXRpbWVfdCkwKSA+PiAxKSAtIDEpCisjZGVmaW5lIGNwdXRpbWVfYWRkKF9fYSwgX19iKQkJKChfX2EpICsgIChfX2IpKQorI2RlZmluZSBjcHV0aW1lX3N1YihfX2EsIF9fYikJCSgoX19hKSAtICAoX19iKSkKKyNkZWZpbmUgY3B1dGltZV9kaXYoX19hLCBfX24pCQkoKF9fYSkgLyAgKF9fbikpCisjZGVmaW5lIGNwdXRpbWVfaGFsdmUoX19hKQkJKChfX2EpID4+IDEpCisjZGVmaW5lIGNwdXRpbWVfZXEoX19hLCBfX2IpCQkoKF9fYSkgPT0gKF9fYikpCisjZGVmaW5lIGNwdXRpbWVfZ3QoX19hLCBfX2IpCQkoKF9fYSkgPiAgKF9fYikpCisjZGVmaW5lIGNwdXRpbWVfZ2UoX19hLCBfX2IpCQkoKF9fYSkgPj0gKF9fYikpCisjZGVmaW5lIGNwdXRpbWVfbHQoX19hLCBfX2IpCQkoKF9fYSkgPCAgKF9fYikpCisjZGVmaW5lIGNwdXRpbWVfbGUoX19hLCBfX2IpCQkoKF9fYSkgPD0gKF9fYikpCisKKyNkZWZpbmUgY3B1dGltZTY0X3plcm8JCQkoKGNwdXRpbWU2NF90KTApCisjZGVmaW5lIGNwdXRpbWU2NF9hZGQoX19hLCBfX2IpCQkoKF9fYSkgKyAoX19iKSkKKyNkZWZpbmUgY3B1dGltZTY0X3N1YihfX2EsIF9fYikJCSgoX19hKSAtIChfX2IpKQorI2RlZmluZSBjcHV0aW1lX3RvX2NwdXRpbWU2NChfX2N0KQkoX19jdCkKKworLyoKKyAqIENvbnZlcnQgY3B1dGltZSA8LT4gamlmZmllcyAoSFopCisgKi8KKyNkZWZpbmUgY3B1dGltZV90b19qaWZmaWVzKF9fY3QpCSgoX19jdCkgLyAoTlNFQ19QRVJfU0VDIC8gSFopKQorI2RlZmluZSBqaWZmaWVzX3RvX2NwdXRpbWUoX19qaWYpCSgoX19qaWYpICogKE5TRUNfUEVSX1NFQyAvIEhaKSkKKyNkZWZpbmUgY3B1dGltZTY0X3RvX2ppZmZpZXM2NChfX2N0KQkoKF9fY3QpIC8gKE5TRUNfUEVSX1NFQyAvIEhaKSkKKyNkZWZpbmUgamlmZmllczY0X3RvX2NwdXRpbWU2NChfX2ppZikJKChfX2ppZikgKiAoTlNFQ19QRVJfU0VDIC8gSFopKQorCisvKgorICogQ29udmVydCBjcHV0aW1lIDwtPiBtaWxsaXNlY29uZHMKKyAqLworI2RlZmluZSBjcHV0aW1lX3RvX21zZWNzKF9fY3QpCQkoKF9fY3QpIC8gTlNFQ19QRVJfTVNFQykKKyNkZWZpbmUgbXNlY3NfdG9fY3B1dGltZShfX21zZWNzKQkoKF9fbXNlY3MpICogTlNFQ19QRVJfTVNFQykKKworLyoKKyAqIENvbnZlcnQgY3B1dGltZSA8LT4gc2Vjb25kcworICovCisjZGVmaW5lIGNwdXRpbWVfdG9fc2VjcyhfX2N0KQkJKChfX2N0KSAvIE5TRUNfUEVSX1NFQykKKyNkZWZpbmUgc2Vjc190b19jcHV0aW1lKF9fc2VjcykJCSgoX19zZWNzKSAqIE5TRUNfUEVSX1NFQykKKworLyoKKyAqIENvbnZlcnQgY3B1dGltZSA8LT4gdGltZXNwZWMgKG5zZWMpCisgKi8KK3N0YXRpYyBpbmxpbmUgY3B1dGltZV90IHRpbWVzcGVjX3RvX2NwdXRpbWUoY29uc3Qgc3RydWN0IHRpbWVzcGVjICp2YWwpCit7CisJY3B1dGltZV90IHJldCA9IHZhbC0+dHZfc2VjICogTlNFQ19QRVJfU0VDOworCXJldHVybiAocmV0ICsgdmFsLT50dl9uc2VjKTsKK30KK3N0YXRpYyBpbmxpbmUgdm9pZCBjcHV0aW1lX3RvX3RpbWVzcGVjKGNvbnN0IGNwdXRpbWVfdCBjdCwgc3RydWN0IHRpbWVzcGVjICp2YWwpCit7CisJdmFsLT50dl9zZWMgID0gY3QgLyBOU0VDX1BFUl9TRUM7CisJdmFsLT50dl9uc2VjID0gY3QgJSBOU0VDX1BFUl9TRUM7Cit9CisKKy8qCisgKiBDb252ZXJ0IGNwdXRpbWUgPC0+IHRpbWV2YWwgKG1zZWMpCisgKi8KK3N0YXRpYyBpbmxpbmUgY3B1dGltZV90IHRpbWV2YWxfdG9fY3B1dGltZShzdHJ1Y3QgdGltZXZhbCAqdmFsKQoreworCWNwdXRpbWVfdCByZXQgPSB2YWwtPnR2X3NlYyAqIE5TRUNfUEVSX1NFQzsKKwlyZXR1cm4gKHJldCArIHZhbC0+dHZfdXNlYyAqIE5TRUNfUEVSX1VTRUMpOworfQorc3RhdGljIGlubGluZSB2b2lkIGNwdXRpbWVfdG9fdGltZXZhbChjb25zdCBjcHV0aW1lX3QgY3QsIHN0cnVjdCB0aW1ldmFsICp2YWwpCit7CisJdmFsLT50dl9zZWMgPSBjdCAvIE5TRUNfUEVSX1NFQzsKKwl2YWwtPnR2X3VzZWMgPSAoY3QgJSBOU0VDX1BFUl9TRUMpIC8gTlNFQ19QRVJfVVNFQzsKK30KKworLyoKKyAqIENvbnZlcnQgY3B1dGltZSA8LT4gY2xvY2sgKFVTRVJfSFopCisgKi8KKyNkZWZpbmUgY3B1dGltZV90b19jbG9ja190KF9fY3QpCSgoX19jdCkgLyAoTlNFQ19QRVJfU0VDIC8gVVNFUl9IWikpCisjZGVmaW5lIGNsb2NrX3RfdG9fY3B1dGltZShfX3gpCQkoKF9feCkgKiAoTlNFQ19QRVJfU0VDIC8gVVNFUl9IWikpCisKKy8qCisgKiBDb252ZXJ0IGNwdXRpbWU2NCB0byBjbG9jay4KKyAqLworI2RlZmluZSBjcHV0aW1lNjRfdG9fY2xvY2tfdChfX2N0KSAgICAgIGNwdXRpbWVfdG9fY2xvY2tfdCgoY3B1dGltZV90KV9fY3QpCisKKyNlbmRpZiAvKiBDT05GSUdfVklSVF9DUFVfQUNDT1VOVElORyAqLwogI2VuZGlmIC8qIF9fSUE2NF9DUFVUSU1FX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWlhNjQva3ZtLmggYi9pbmNsdWRlL2FzbS1pYTY0L2t2bS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzMGQyOWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1pYTY0L2t2bS5oCkBAIC0wLDAgKzEsNiBAQAorI2lmbmRlZiBfX0xJTlVYX0tWTV9JQTY0X0gKKyNkZWZpbmUgX19MSU5VWF9LVk1fSUE2NF9ICisKKy8qIGlhNjQgZG9lcyBub3Qgc3VwcG9ydCBLVk0gKi8KKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1pYTY0L3N5c3RlbS5oIGIvaW5jbHVkZS9hc20taWE2NC9zeXN0ZW0uaAppbmRleCA1OTUxMTJiLi5kZmY4MTI4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1pYTY0L3N5c3RlbS5oCisrKyBiL2luY2x1ZGUvYXNtLWlhNjQvc3lzdGVtLmgKQEAgLTIxMCw2ICsyMTAsMTMgQEAKIGV4dGVybiB2b2lkIGlhNjRfc2F2ZV9leHRyYSAoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKTsKIGV4dGVybiB2b2lkIGlhNjRfbG9hZF9leHRyYSAoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKTsKIAorI2lmZGVmIENPTkZJR19WSVJUX0NQVV9BQ0NPVU5USU5HCitleHRlcm4gdm9pZCBpYTY0X2FjY291bnRfb25fc3dpdGNoIChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnByZXYsIHN0cnVjdCB0YXNrX3N0cnVjdCAqbmV4dCk7CisjIGRlZmluZSBJQTY0X0FDQ09VTlRfT05fU1dJVENIKHAsbikgaWE2NF9hY2NvdW50X29uX3N3aXRjaChwLG4pCisjZWxzZQorIyBkZWZpbmUgSUE2NF9BQ0NPVU5UX09OX1NXSVRDSChwLG4pCisjZW5kaWYKKwogI2lmZGVmIENPTkZJR19QRVJGTU9OCiAgIERFQ0xBUkVfUEVSX0NQVSh1bnNpZ25lZCBsb25nLCBwZm1fc3lzdF9pbmZvKTsKICMgZGVmaW5lIFBFUkZNT05fSVNfU1lTV0lERSgpIChfX2dldF9jcHVfdmFyKHBmbV9zeXN0X2luZm8pICYgMHgxKQpAQCAtMjIyLDYgKzIyOSw3IEBACiAJIHx8IElTX0lBMzJfUFJPQ0VTUyh0YXNrX3B0X3JlZ3ModCkpIHx8IFBFUkZNT05fSVNfU1lTV0lERSgpKQogCiAjZGVmaW5lIF9fc3dpdGNoX3RvKHByZXYsbmV4dCxsYXN0KSBkbyB7CQkJCQkJCSBcCisJSUE2NF9BQ0NPVU5UX09OX1NXSVRDSChwcmV2LCBuZXh0KTsJCQkJCQkJIFwKIAlpZiAoSUE2NF9IQVNfRVhUUkFfU1RBVEUocHJldikpCQkJCQkJCQkgXAogCQlpYTY0X3NhdmVfZXh0cmEocHJldik7CQkJCQkJCQkgXAogCWlmIChJQTY0X0hBU19FWFRSQV9TVEFURShuZXh0KSkJCQkJCQkJCSBcCkBAIC0yNjYsNiArMjc0LDEwIEBACiAKIHZvaWQgZGVmYXVsdF9pZGxlKHZvaWQpOwogCisjaWZkZWYgQ09ORklHX1ZJUlRfQ1BVX0FDQ09VTlRJTkcKK2V4dGVybiB2b2lkIGFjY291bnRfc3lzdGVtX3Z0aW1lKHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsKKyNlbmRpZgorCiAjZW5kaWYgLyogX19LRVJORUxfXyAqLwogCiAjZW5kaWYgLyogX19BU1NFTUJMWV9fICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1pYTY0L3RocmVhZF9pbmZvLmggYi9pbmNsdWRlL2FzbS1pYTY0L3RocmVhZF9pbmZvLmgKaW5kZXggOTNkODNjYi4uNmRhODA2OSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20taWE2NC90aHJlYWRfaW5mby5oCisrKyBiL2luY2x1ZGUvYXNtLWlhNjQvdGhyZWFkX2luZm8uaApAQCAtMzEsNiArMzEsMTIgQEAKIAltbV9zZWdtZW50X3QgYWRkcl9saW1pdDsJLyogdXNlci1sZXZlbCBhZGRyZXNzIHNwYWNlIGxpbWl0ICovCiAJaW50IHByZWVtcHRfY291bnQ7CQkvKiAwPXByZW1wdGFibGUsIDwwPUJVRzsgd2lsbCBhbHNvIHNlcnZlIGFzIGJoLWNvdW50ZXIgKi8KIAlzdHJ1Y3QgcmVzdGFydF9ibG9jayByZXN0YXJ0X2Jsb2NrOworI2lmZGVmIENPTkZJR19WSVJUX0NQVV9BQ0NPVU5USU5HCisJX191NjQgYWNfc3RhbXA7CisJX191NjQgYWNfbGVhdmU7CisJX191NjQgYWNfc3RpbWU7CisJX191NjQgYWNfdXRpbWU7CisjZW5kaWYKIH07CiAKICNkZWZpbmUgVEhSRUFEX1NJWkUJCQlLRVJORUxfU1RBQ0tfU0laRQpAQCAtNjIsOSArNjgsMTcgQEAKICNkZWZpbmUgdGFza19zdGFja19wYWdlKHRzaykJKCh2b2lkICopKHRzaykpCiAKICNkZWZpbmUgX19IQVZFX1RIUkVBRF9GVU5DVElPTlMKKyNpZmRlZiBDT05GSUdfVklSVF9DUFVfQUNDT1VOVElORworI2RlZmluZSBzZXR1cF90aHJlYWRfc3RhY2socCwgb3JnKQkJCVwKKwkqdGFza190aHJlYWRfaW5mbyhwKSA9ICp0YXNrX3RocmVhZF9pbmZvKG9yZyk7CVwKKwl0YXNrX3RocmVhZF9pbmZvKHApLT5hY19zdGltZSA9IDA7CQlcCisJdGFza190aHJlYWRfaW5mbyhwKS0+YWNfdXRpbWUgPSAwOwkJXAorCXRhc2tfdGhyZWFkX2luZm8ocCktPnRhc2sgPSAocCk7CisjZWxzZQogI2RlZmluZSBzZXR1cF90aHJlYWRfc3RhY2socCwgb3JnKSBcCiAJKnRhc2tfdGhyZWFkX2luZm8ocCkgPSAqdGFza190aHJlYWRfaW5mbyhvcmcpOyBcCiAJdGFza190aHJlYWRfaW5mbyhwKS0+dGFzayA9IChwKTsKKyNlbmRpZgogI2RlZmluZSBlbmRfb2Zfc3RhY2socCkgKHVuc2lnbmVkIGxvbmcgKikoKHZvaWQgKikocCkgKyBJQTY0X1JCU19PRkZTRVQpCiAKICNkZWZpbmUgX19IQVZFX0FSQ0hfVEFTS19TVFJVQ1RfQUxMT0NBVE9SCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1tMzJyL2t2bS5oIGIvaW5jbHVkZS9hc20tbTMyci9rdm0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OWE0MDUxNQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLW0zMnIva3ZtLmgKQEAgLTAsMCArMSw2IEBACisjaWZuZGVmIF9fTElOVVhfS1ZNX00zMlJfSAorI2RlZmluZSBfX0xJTlVYX0tWTV9NMzJSX0gKKworLyogbTMyciBkb2VzIG5vdCBzdXBwb3J0IEtWTSAqLworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLW02OGsva3ZtLmggYi9pbmNsdWRlL2FzbS1tNjhrL2t2bS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlZDI3ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1tNjhrL2t2bS5oCkBAIC0wLDAgKzEsNiBAQAorI2lmbmRlZiBfX0xJTlVYX0tWTV9NNjhLX0gKKyNkZWZpbmUgX19MSU5VWF9LVk1fTTY4S19ICisKKy8qIG02OGsgZG9lcyBub3Qgc3VwcG9ydCBLVk0gKi8KKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1tNjhrbm9tbXUva3ZtLmggYi9pbmNsdWRlL2FzbS1tNjhrbm9tbXUva3ZtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQ5ZDQyNQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLW02OGtub21tdS9rdm0uaApAQCAtMCwwICsxLDYgQEAKKyNpZm5kZWYgX19MSU5VWF9LVk1fTTY4S05PTU1VX0gKKyNkZWZpbmUgX19MSU5VWF9LVk1fTTY4S05PTU1VX0gKKworLyogbTY4a25vbW11IGRvZXMgbm90IHN1cHBvcnQgS1ZNICovCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tbWlwcy9jYWNoZWZsdXNoLmggYi9pbmNsdWRlL2FzbS1taXBzL2NhY2hlZmx1c2guaAppbmRleCA0OTMzYjQ5Li5kNWMwZjJmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1taXBzL2NhY2hlZmx1c2guaAorKysgYi9pbmNsdWRlL2FzbS1taXBzL2NhY2hlZmx1c2guaApAQCAtNjMsOCArNjMsMjIgQEAKIH0KIAogZXh0ZXJuIHZvaWQgKCpmbHVzaF9pY2FjaGVfcmFuZ2UpKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKTsKLSNkZWZpbmUgZmx1c2hfY2FjaGVfdm1hcChzdGFydCwgZW5kKQkJZmx1c2hfY2FjaGVfYWxsKCkKLSNkZWZpbmUgZmx1c2hfY2FjaGVfdnVubWFwKHN0YXJ0LCBlbmQpCQlmbHVzaF9jYWNoZV9hbGwoKQorCitleHRlcm4gdm9pZCAoKl9fZmx1c2hfY2FjaGVfdm1hcCkodm9pZCk7CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBmbHVzaF9jYWNoZV92bWFwKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKQoreworCWlmIChjcHVfaGFzX2RjX2FsaWFzZXMpCisJCV9fZmx1c2hfY2FjaGVfdm1hcCgpOworfQorCitleHRlcm4gdm9pZCAoKl9fZmx1c2hfY2FjaGVfdnVubWFwKSh2b2lkKTsKKworc3RhdGljIGlubGluZSB2b2lkIGZsdXNoX2NhY2hlX3Z1bm1hcCh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCkKK3sKKwlpZiAoY3B1X2hhc19kY19hbGlhc2VzKQorCQlfX2ZsdXNoX2NhY2hlX3Z1bm1hcCgpOworfQogCiBleHRlcm4gdm9pZCBjb3B5X3RvX3VzZXJfcGFnZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKIAlzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgbG9uZyB2YWRkciwgdm9pZCAqZHN0LCBjb25zdCB2b2lkICpzcmMsCkBAIC05Myw3ICsxMDcsNyBAQAogCWNsZWFyX2JpdChQR19kY2FjaGVfZGlydHksICYocGFnZSktPmZsYWdzKQogCiAvKiBSdW4ga2VybmVsIGNvZGUgdW5jYWNoZWQsIHVzZWZ1bCBmb3IgY2FjaGUgcHJvYmluZyBmdW5jdGlvbnMuICovCi11bnNpZ25lZCBsb25nIF9faW5pdCBydW5fdW5jYWNoZWQodm9pZCAqZnVuYyk7Cit1bnNpZ25lZCBsb25nIHJ1bl91bmNhY2hlZCh2b2lkICpmdW5jKTsKIAogZXh0ZXJuIHZvaWQgKmttYXBfY29oZXJlbnQoc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGxvbmcgYWRkcik7CiBleHRlcm4gdm9pZCBrdW5tYXBfY29oZXJlbnQodm9pZCk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1taXBzL2hpZ2htZW0uaCBiL2luY2x1ZGUvYXNtLW1pcHMvaGlnaG1lbS5oCmluZGV4IDRkNmJkNWMuLjQzNzRhYjIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLW1pcHMvaGlnaG1lbS5oCisrKyBiL2luY2x1ZGUvYXNtLW1pcHMvaGlnaG1lbS5oCkBAIC0zOSw3ICszOSw2IEBACiAgKiBlYXNpbHksIHN1YnNlcXVlbnQgcHRlIHRhYmxlcyBoYXZlIHRvIGJlIGFsbG9jYXRlZCBpbiBvbmUgcGh5c2ljYWwKICAqIGNodW5rIG9mIFJBTS4KICAqLwotI2RlZmluZSBQS01BUF9CQVNFICgweGZlMDAwMDAwVUwpCiAjZGVmaW5lIExBU1RfUEtNQVAgMTAyNAogI2RlZmluZSBMQVNUX1BLTUFQX01BU0sgKExBU1RfUEtNQVAtMSkKICNkZWZpbmUgUEtNQVBfTlIodmlydCkgICgodmlydC1QS01BUF9CQVNFKSA+PiBQQUdFX1NISUZUKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tbWlwcy9rdm0uaCBiL2luY2x1ZGUvYXNtLW1pcHMva3ZtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDkzYTViNwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLW1pcHMva3ZtLmgKQEAgLTAsMCArMSw2IEBACisjaWZuZGVmIF9fTElOVVhfS1ZNX01JUFNfSAorI2RlZmluZSBfX0xJTlVYX0tWTV9NSVBTX0gKKworLyogbWlwcyBkb2VzIG5vdCBzdXBwb3J0IEtWTSAqLworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLW1pcHMvbWFjaC1hdTF4MDAvYXUxMDAwLmggYi9pbmNsdWRlL2FzbS1taXBzL21hY2gtYXUxeDAwL2F1MTAwMC5oCmluZGV4IGNiMThhZjkuLjViYjU3YmYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLW1pcHMvbWFjaC1hdTF4MDAvYXUxMDAwLmgKKysrIGIvaW5jbHVkZS9hc20tbWlwcy9tYWNoLWF1MXgwMC9hdTEwMDAuaApAQCAtMTc4Niw2ICsxNzg2LDcgQEAKIAljaGFyCQkqY3B1X25hbWU7CiAJdW5zaWduZWQgY2hhcgljcHVfb2Q7CQkvKiBTZXQgQ29uZmlnW09EXSAqLwogCXVuc2lnbmVkIGNoYXIJY3B1X2JjbGs7CS8qIEVuYWJsZSBCQ0xLIHN3aXRjaGluZyAqLworCXVuc2lnbmVkIGNoYXIJY3B1X3BsbF93bzsJLyogc3lzX2NwdXBsbCByZWcuIHdyaXRlLW9ubHkgKi8KIH07CiAKIGV4dGVybiBzdHJ1Y3QgY3B1X3NwZWMJCWNwdV9zcGVjc1tdOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tbWlwcy9tYWNoLWF1MXgwMC9hdTF4eHhfaWRlLmggYi9pbmNsdWRlL2FzbS1taXBzL21hY2gtYXUxeDAwL2F1MXh4eF9pZGUuaAppbmRleCBlNGZlMjZjLi44OTY1NWMwIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1taXBzL21hY2gtYXUxeDAwL2F1MXh4eF9pZGUuaAorKysgYi9pbmNsdWRlL2FzbS1taXBzL21hY2gtYXUxeDAwL2F1MXh4eF9pZGUuaApAQCAtMTIyLDI0ICsxMjIsNiBAQAogfTsKICNlbmRpZgogCi0vKiBmdW5jdGlvbiBwcm90b3R5cGluZyAqLwotdTggYXVpZGVfaW5iKHVuc2lnbmVkIGxvbmcgcG9ydCk7Ci11MTYgYXVpZGVfaW53KHVuc2lnbmVkIGxvbmcgcG9ydCk7Ci11MzIgYXVpZGVfaW5sKHVuc2lnbmVkIGxvbmcgcG9ydCk7Ci12b2lkIGF1aWRlX2luc3codW5zaWduZWQgbG9uZyBwb3J0LCB2b2lkICphZGRyLCB1MzIgY291bnQpOwotdm9pZCBhdWlkZV9pbnNsKHVuc2lnbmVkIGxvbmcgcG9ydCwgdm9pZCAqYWRkciwgdTMyIGNvdW50KTsKLXZvaWQgYXVpZGVfb3V0Yih1OCBhZGRyLCB1bnNpZ25lZCBsb25nIHBvcnQpOwotdm9pZCBhdWlkZV9vdXRic3luYyhpZGVfZHJpdmVfdCAqZHJpdmUsIHU4IGFkZHIsIHVuc2lnbmVkIGxvbmcgcG9ydCk7Ci12b2lkIGF1aWRlX291dHcodTE2IGFkZHIsIHVuc2lnbmVkIGxvbmcgcG9ydCk7Ci12b2lkIGF1aWRlX291dGwodTMyIGFkZHIsIHVuc2lnbmVkIGxvbmcgcG9ydCk7Ci12b2lkIGF1aWRlX291dHN3KHVuc2lnbmVkIGxvbmcgcG9ydCwgdm9pZCAqYWRkciwgdTMyIGNvdW50KTsKLXZvaWQgYXVpZGVfb3V0c2wodW5zaWduZWQgbG9uZyBwb3J0LCB2b2lkICphZGRyLCB1MzIgY291bnQpOwotc3RhdGljIHZvaWQgYXVpZGVfdHVuZV9kcml2ZShpZGVfZHJpdmVfdCAqZHJpdmUsIGJ5dGUgcGlvKTsKLXN0YXRpYyBpbnQgYXVpZGVfdHVuZV9jaGlwc2V0KGlkZV9kcml2ZV90ICpkcml2ZSwgdTggc3BlZWQpOwotc3RhdGljIGludCBhdWlkZV9kZG1hX2luaXQoIF9hdWlkZV9od2lmICphdWlkZSApOwotc3RhdGljIHZvaWQgYXVpZGVfc2V0dXBfcG9ydHMoaHdfcmVnc190ICpodywgX2F1aWRlX2h3aWYgKmFod2lmKTsKLWludCBfX2luaXQgYXVpZGVfcHJvYmUodm9pZCk7Ci0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIFBJTyBNb2RlIHRpbWluZyBjYWxjdWxhdGlvbiA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLW1pcHMvbWFjaC1kYjF4MDAvZGIxMjAwLmggYi9pbmNsdWRlL2FzbS1taXBzL21hY2gtZGIxeDAwL2RiMTIwMC5oCmluZGV4IGE2YmRhYzYuLmQyZTI4ZTYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLW1pcHMvbWFjaC1kYjF4MDAvZGIxMjAwLmgKKysrIGIvaW5jbHVkZS9hc20tbWlwcy9tYWNoLWRiMXgwMC9kYjEyMDAuaApAQCAtMTczLDggKzE3Myw4IEBACiAjZGVmaW5lIEFVMVhYWF9TTUM5MTExMV9JUlEJCQlEQjEyMDBfRVRIX0lOVAogCiAjZGVmaW5lIEFVMVhYWF9BVEFfUEhZU19BRERSCQkoMHgxODgwMDAwMCkKLSNkZWZpbmUgQVUxWFhYX0FUQV9QSFlTX0xFTgkJCSgweDEwMCkKLSNkZWZpbmUgQVUxWFhYX0FUQV9SRUdfT0ZGU0VUCSg1KQorI2RlZmluZSBBVTFYWFhfQVRBX1JFR19PRkZTRVQJCSg1KQorI2RlZmluZSBBVTFYWFhfQVRBX1BIWVNfTEVOCQkoMTYgPDwgQVUxWFhYX0FUQV9SRUdfT0ZGU0VUKQogI2RlZmluZSBBVTFYWFhfQVRBX0lOVAkJCURCMTIwMF9JREVfSU5UCiAjZGVmaW5lIEFVMVhYWF9BVEFfRERNQV9SRVEJCURTQ1JfQ01EMF9ETUFfUkVRMTsKICNkZWZpbmUgQVUxWFhYX0FUQV9SUVNJWkUJCTEyOApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tbWlwcy9tYWNoLWlwMjcvY3B1LWZlYXR1cmUtb3ZlcnJpZGVzLmggYi9pbmNsdWRlL2FzbS1taXBzL21hY2gtaXAyNy9jcHUtZmVhdHVyZS1vdmVycmlkZXMuaAppbmRleCBmZTA3NjM4Li43ZDMxMTJiIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1taXBzL21hY2gtaXAyNy9jcHUtZmVhdHVyZS1vdmVycmlkZXMuaAorKysgYi9pbmNsdWRlL2FzbS1taXBzL21hY2gtaXAyNy9jcHUtZmVhdHVyZS1vdmVycmlkZXMuaApAQCAtMzQsNyArMzQsMTEgQEAKICNkZWZpbmUgY3B1X2hhc182NGJpdHMJCTEKIAogI2RlZmluZSBjcHVfaGFzXzRrZXgJCTEKKyNkZWZpbmUgY3B1X2hhc18za19jYWNoZQkwCisjZGVmaW5lIGNwdV9oYXNfNmtfY2FjaGUJMAogI2RlZmluZSBjcHVfaGFzXzRrX2NhY2hlCTEKKyNkZWZpbmUgY3B1X2hhc184a19jYWNoZQkwCisjZGVmaW5lIGNwdV9oYXNfdHgzOV9jYWNoZQkwCiAKICNkZWZpbmUgY3B1X2hhc19pbmNsdXNpdmVfcGNhY2hlcwkxCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLW1pcHMvbWFjaC1qbXIzOTI3L2lvcmVtYXAuaCBiL2luY2x1ZGUvYXNtLW1pcHMvbWFjaC1qbXIzOTI3L2lvcmVtYXAuaAppbmRleCBhYTEzMWFkLi4yOTk4OWZmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1taXBzL21hY2gtam1yMzkyNy9pb3JlbWFwLmgKKysrIGIvaW5jbHVkZS9hc20tbWlwcy9tYWNoLWptcjM5MjcvaW9yZW1hcC5oCkBAIC0yNSw3ICsyNSw3IEBACiB7CiAjZGVmaW5lIFRYWDlfRElSRUNUTUFQX0JBU0UJMHhmZjAwMDAwMHVsCiAJaWYgKG9mZnNldCA+PSBUWFg5X0RJUkVDVE1BUF9CQVNFICYmCi0JICAgIG9mZnNldCA8IFRYWDlfRElSRUNUTUFQX0JBU0UgKyAweGYwMDAwKQorCSAgICBvZmZzZXQgPCBUWFg5X0RJUkVDVE1BUF9CQVNFICsgMHhmZjAwMDApCiAJCXJldHVybiAodm9pZCBfX2lvbWVtICopb2Zmc2V0OwogCXJldHVybiBOVUxMOwogfQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tbWlwcy9tYWNoLWxhc2F0L2lycS5oIGIvaW5jbHVkZS9hc20tbWlwcy9tYWNoLWxhc2F0L2lycS5oCmluZGV4IGRhNzVmODkuLjNhMjgyNDEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLW1pcHMvbWFjaC1sYXNhdC9pcnEuaAorKysgYi9pbmNsdWRlL2FzbS1taXBzL21hY2gtbGFzYXQvaXJxLmgKQEAgLTEsNyArMSw3IEBACiAjaWZuZGVmIF9BU01fTUFDSF9MQVNBVF9JUlFfSAogI2RlZmluZSBfQVNNX01BQ0hfTEFTQVRfSVJRX0gKIAotI2RlZmluZSBMQVNBVF9DQVNDQURFX0lSUQkoTUlQU19DUFVfSVJRX0JBU0UgKyAwKQorI2RlZmluZSBMQVNBVF9DQVNDQURFX0lSUQkoTUlQU19DUFVfSVJRX0JBU0UgKyAyKQogCiAjZGVmaW5lIExBU0FUX0lSUV9CQVNFCQk4CiAjZGVmaW5lIExBU0FUX0lSUV9FTkQJCTIzCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1taXBzL21hY2gtcGIxeDAwL3BiMTIwMC5oIGIvaW5jbHVkZS9hc20tbWlwcy9tYWNoLXBiMXgwMC9wYjEyMDAuaAppbmRleCBlZDVmZDczLi5lZGFhNDg5IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1taXBzL21hY2gtcGIxeDAwL3BiMTIwMC5oCisrKyBiL2luY2x1ZGUvYXNtLW1pcHMvbWFjaC1wYjF4MDAvcGIxMjAwLmgKQEAgLTE4Niw4ICsxODYsOCBAQAogI2RlZmluZSBBVTFYWFhfU01DOTExMTFfSVJRCQkJUEIxMjAwX0VUSF9JTlQKIAogI2RlZmluZSBBVTFYWFhfQVRBX1BIWVNfQUREUgkJKDB4MEM4MDAwMDApCi0jZGVmaW5lIEFVMVhYWF9BVEFfUEhZU19MRU4JCQkoMHgxMDApCi0jZGVmaW5lIEFVMVhYWF9BVEFfUkVHX09GRlNFVAkoNSkKKyNkZWZpbmUgQVUxWFhYX0FUQV9SRUdfT0ZGU0VUCQkoNSkKKyNkZWZpbmUgQVUxWFhYX0FUQV9QSFlTX0xFTgkJKDE2IDw8IEFVMVhYWF9BVEFfUkVHX09GRlNFVCkKICNkZWZpbmUgQVUxWFhYX0FUQV9JTlQJCQlQQjEyMDBfSURFX0lOVAogI2RlZmluZSBBVTFYWFhfQVRBX0RETUFfUkVRCQlEU0NSX0NNRDBfRE1BX1JFUTE7CiAjZGVmaW5lIEFVMVhYWF9BVEFfUlFTSVpFCQkxMjgKQEAgLTI0NSw3ICsyNDUsNyBAQAogCVBCMTIwMF9TRDFfSU5TRVJUX0lOVCwKIAlQQjEyMDBfU0QxX0VKRUNUX0lOVCwKIAotCVBCMTIwMF9JTlRfRU5ECQkJKFBCMTIwMF9JTlRfQkVHSU4gKyAxNSkKKwlQQjEyMDBfSU5UX0VORAkJPSBQQjEyMDBfSU5UX0JFR0lOICsgMTUKIH07CiAKIC8qIEZvciBkcml2ZXJzL3BjbWNpYS9hdTEwMDBfZGIxeDAwLmMgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLW1pcHMvcGd0YWJsZS0zMi5oIGIvaW5jbHVkZS9hc20tbWlwcy9wZ3RhYmxlLTMyLmgKaW5kZXggYTA5NDcwOS4uY2VlZmUwMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tbWlwcy9wZ3RhYmxlLTMyLmgKKysrIGIvaW5jbHVkZS9hc20tbWlwcy9wZ3RhYmxlLTMyLmgKQEAgLTY1LDYgKzY1LDggQEAKIAogI2RlZmluZSBWTUFMTE9DX1NUQVJUICAgICBNQVBfQkFTRQogCisjZGVmaW5lIFBLTUFQX0JBU0UJCSgweGZlMDAwMDAwVUwpCisKICNpZmRlZiBDT05GSUdfSElHSE1FTQogIyBkZWZpbmUgVk1BTExPQ19FTkQJKFBLTUFQX0JBU0UtMipQQUdFX1NJWkUpCiAjZWxzZQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tbWlwcy90aW1lLmggYi9pbmNsdWRlL2FzbS1taXBzL3RpbWUuaAppbmRleCBhOGZkMTZlLi5kM2JkNWM1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1taXBzL3RpbWUuaAorKysgYi9pbmNsdWRlL2FzbS1taXBzL3RpbWUuaApAQCAtNjQsMTAgKzY0LDExIEBACiAgKiBJbml0aWFsaXplIHRoZSBjb3VudCByZWdpc3RlciBhcyBhIGNsb2Nrc291cmNlCiAgKi8KICNpZmRlZiBDT05GSUdfQ0VWVF9SNEsKLWV4dGVybiB2b2lkIGluaXRfbWlwc19jbG9ja3NvdXJjZSh2b2lkKTsKK2V4dGVybiBpbnQgaW5pdF9taXBzX2Nsb2Nrc291cmNlKHZvaWQpOwogI2Vsc2UKLXN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X21pcHNfY2xvY2tzb3VyY2Uodm9pZCkKK3N0YXRpYyBpbmxpbmUgaW50IGluaXRfbWlwc19jbG9ja3NvdXJjZSh2b2lkKQogeworCXJldHVybiAwOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLW1uMTAzMDAva3ZtLmggYi9pbmNsdWRlL2FzbS1tbjEwMzAwL2t2bS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2YjYwOWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1tbjEwMzAwL2t2bS5oCkBAIC0wLDAgKzEsNiBAQAorI2lmbmRlZiBfX0xJTlVYX0tWTV9NTjEwMzAwX0gKKyNkZWZpbmUgX19MSU5VWF9LVk1fTU4xMDMwMF9ICisKKy8qIG1uMTAzMDAgZG9lcyBub3Qgc3VwcG9ydCBLVk0gKi8KKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1wYXJpc2MvZWxmLmggYi9pbmNsdWRlL2FzbS1wYXJpc2MvZWxmLmgKaW5kZXggY2UwYzBkOC4uZDBhNGE4MiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tcGFyaXNjL2VsZi5oCisrKyBiL2luY2x1ZGUvYXNtLXBhcmlzYy9lbGYuaApAQCAtMjA0LDcgKzIwNCw3IEBACiAvKgogICogVGhlIGZvbGxvd2luZyBkZWZpbml0aW9ucyBhcmUgdGhvc2UgZm9yIDMyLWJpdCBFTEYgYmluYXJpZXMgb24gYSAzMi1iaXQKICAqIGtlcm5lbCBhbmQgZm9yIDY0LWJpdCBiaW5hcmllcyBvbiBhIDY0LWJpdCBrZXJuZWwuICBUbyBydW4gMzItYml0IGJpbmFyaWVzCi0gKiBvbiBhIDY0LWJpdCBrZXJuZWwsIGFyY2gvcGFyaXNjNjQva2VybmVsL2JpbmZtdF9lbGYzMi5jIGRlZmluZXMgdGhlc2UKKyAqIG9uIGEgNjQtYml0IGtlcm5lbCwgYXJjaC9wYXJpc2Mva2VybmVsL2JpbmZtdF9lbGYzMi5jIGRlZmluZXMgdGhlc2UKICAqIG1hY3JvcyBhcHByb3ByaWF0ZWx5IGFuZCB0aGVuICNpbmNsdWRlcyBiaW5mbXRfZWxmLmMsIHdoaWNoIHRoZW4gaW5jbHVkZXMKICAqIHRoaXMgZmlsZS4KICAqLwpAQCAtMjE2LDI2ICsyMTYsMjUgQEAKICAqIE5vdGUgdGhhdCB0aGlzIGhlYWRlciBmaWxlIGlzIHVzZWQgYnkgZGVmYXVsdCBpbiBmcy9iaW5mbXRfZWxmLmMuIFNvCiAgKiB0aGUgZm9sbG93aW5nIG1hY3JvcyBhcmUgZm9yIHRoZSBkZWZhdWx0IGNhc2UuIEhvd2V2ZXIsIGZvciB0aGUgNjQKICAqIGJpdCBrZXJuZWwgd2UgYWxzbyBzdXBwb3J0IDMyIGJpdCBwYXJpc2MgYmluYXJpZXMuIFRvIGRvIHRoYXQKLSAqIGFyY2gvcGFyaXNjNjQva2VybmVsL2JpbmZtdF9lbGYzMi5jIGRlZmluZXMgaXRzIG93biBzZXQgb2YgdGhlc2UKKyAqIGFyY2gvcGFyaXNjL2tlcm5lbC9iaW5mbXRfZWxmMzIuYyBkZWZpbmVzIGl0cyBvd24gc2V0IG9mIHRoZXNlCiAgKiBtYWNyb3MsIGFuZCB0aGVuIGl0IGluY2x1ZGVzIGZzL2JpbmZtdF9lbGYuYyB0byBwcm92aWRlIGFuIGFsdGVybmF0ZQogICogZWxmIGJpbmFyeSBoYW5kbGVyIGZvciAzMiBiaXQgYmluYXJpZXMgKG9uIHRoZSA2NCBiaXQga2VybmVsKS4KICAqLwogI2lmZGVmIENPTkZJR182NEJJVAotI2RlZmluZSBFTEZfQ0xBU1MgICAgICAgRUxGQ0xBU1M2NAorI2RlZmluZSBFTEZfQ0xBU1MgICBFTEZDTEFTUzY0CiAjZWxzZQogI2RlZmluZSBFTEZfQ0xBU1MJRUxGQ0xBU1MzMgogI2VuZGlmCiAKIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBlbGZfZ3JlZ190OwogCi0vKiBUaGlzIHlpZWxkcyBhIHN0cmluZyB0aGF0IGxkLnNvIHdpbGwgdXNlIHRvIGxvYWQgaW1wbGVtZW50YXRpb24KLSAgIHNwZWNpZmljIGxpYnJhcmllcyBmb3Igb3B0aW1pemF0aW9uLiAgVGhpcyBpcyBtb3JlIHNwZWNpZmljIGluCi0gICBpbnRlbnQgdGhhbiBwb2tpbmcgYXQgdW5hbWUgb3IgL3Byb2MvY3B1aW5mby4KKy8qCisgKiBUaGlzIHlpZWxkcyBhIHN0cmluZyB0aGF0IGxkLnNvIHdpbGwgdXNlIHRvIGxvYWQgaW1wbGVtZW50YXRpb24KKyAqIHNwZWNpZmljIGxpYnJhcmllcyBmb3Igb3B0aW1pemF0aW9uLiAgVGhpcyBpcyBtb3JlIHNwZWNpZmljIGluCisgKiBpbnRlbnQgdGhhbiBwb2tpbmcgYXQgdW5hbWUgb3IgL3Byb2MvY3B1aW5mby4KKyAqLwogCi0gICBGb3IgdGhlIG1vbWVudCwgd2UgaGF2ZSBvbmx5IG9wdGltaXphdGlvbnMgZm9yIHRoZSBJbnRlbCBnZW5lcmF0aW9ucywKLSAgIGJ1dCB0aGF0IGNvdWxkIGNoYW5nZS4uLiAqLwotCi0jZGVmaW5lIEVMRl9QTEFURk9STSAgKCJQQVJJU0NcMCIgLyorKChib290X2NwdV9kYXRhLng4Ni0zKSo1KSAqLykKKyNkZWZpbmUgRUxGX1BMQVRGT1JNICAoIlBBUklTQ1wwIikKIAogI2RlZmluZSBTRVRfUEVSU09OQUxJVFkoZXgsIGliY3MyKSBcCiAJY3VycmVudC0+cGVyc29uYWxpdHkgPSBQRVJfTElOVVg7IFwKQEAgLTMxMCw3ICszMDksNyBAQAogI2RlZmluZSBFTEZfT1NBQkkgCUVMRk9TQUJJX0xJTlVYCiAKIC8qICVyMjMgaXMgc2V0IGJ5IGxkLnNvIHRvIGEgcG9pbnRlciB0byBhIGZ1bmN0aW9uIHdoaWNoIG1pZ2h0IGJlIAotICAgcmVnaXN0ZXJlZCB1c2luZyBhdGV4aXQuICBUaGlzIHByb3ZpZGVzIGEgbWVhbiBmb3IgdGhlIGR5bmFtaWMKKyAgIHJlZ2lzdGVyZWQgdXNpbmcgYXRleGl0LiAgVGhpcyBwcm92aWRlcyBhIG1lYW5zIGZvciB0aGUgZHluYW1pYwogICAgbGlua2VyIHRvIGNhbGwgRFRfRklOSSBmdW5jdGlvbnMgZm9yIHNoYXJlZCBsaWJyYXJpZXMgdGhhdCBoYXZlCiAgICBiZWVuIGxvYWRlZCBiZWZvcmUgdGhlIGNvZGUgcnVucy4KIApAQCAtMzM5LDYgKzMzOCw1IEBACiAgICBidXQgaXQncyBub3QgZWFzeSwgYW5kIHdlJ3ZlIGFscmVhZHkgZG9uZSBpdCBoZXJlLiAgKi8KIAogI2RlZmluZSBFTEZfSFdDQVAJMAotLyogKGJvb3RfY3B1X2RhdGEueDg2X2NhcGFiaWxpdHkpICovCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tcGFyaXNjL2ZpeG1hcC5oIGIvaW5jbHVkZS9hc20tcGFyaXNjL2ZpeG1hcC5oCmluZGV4IGE1Y2FmNGIuLmRlM2ZlM2EgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLXBhcmlzYy9maXhtYXAuaAorKysgYi9pbmNsdWRlL2FzbS1wYXJpc2MvZml4bWFwLmgKQEAgLTIwLDQgKzIwLDExIEBACiAjZGVmaW5lIEtFUk5FTF9NQVBfU1RBUlQJKEdBVEVXQVlfUEFHRV9TSVpFKQogI2RlZmluZSBLRVJORUxfTUFQX0VORAkJKFRNUEFMSUFTX01BUF9TVEFSVCkKIAotI2VuZGlmCisjaWZuZGVmIF9fQVNTRU1CTFlfXworZXh0ZXJuIHZvaWQgKnZtYWxsb2Nfc3RhcnQ7CisjZGVmaW5lIFBDWExfRE1BX01BUF9TSVpFCSg4KjEwMjQqMTAyNCkKKyNkZWZpbmUgVk1BTExPQ19TVEFSVAkJKCh1bnNpZ25lZCBsb25nKXZtYWxsb2Nfc3RhcnQpCisjZGVmaW5lIFZNQUxMT0NfRU5ECQkoS0VSTkVMX01BUF9FTkQpCisjZW5kaWYgLypfX0FTU0VNQkxZX18qLworCisjZW5kaWYgLypfQVNNX0ZJWE1BUF9IKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLXBhcmlzYy9mdXRleC5oIGIvaW5jbHVkZS9hc20tcGFyaXNjL2Z1dGV4LmgKaW5kZXggZGJlZTZlNi4uZmRjNmQwNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tcGFyaXNjL2Z1dGV4LmgKKysrIGIvaW5jbHVkZS9hc20tcGFyaXNjL2Z1dGV4LmgKQEAgLTU2LDYgKzU2LDEyIEBACiAJaW50IGVyciA9IDA7CiAJaW50IHV2YWw7CiAKKwkvKiBmdXRleC5jIHdhbnRzIHRvIGRvIGEgY21weGNoZ19pbmF0b21pYyBvbiBrZXJuZWwgTlVMTCwgd2hpY2ggaXMKKwkgKiBvdXIgZ2F0ZXdheSBwYWdlLCBhbmQgY2F1c2VzIG5vIGVuZCBvZiB0cm91YmxlLi4uCisJICovCisJaWYgKHNlZ21lbnRfZXEoS0VSTkVMX0RTLCBnZXRfZnMoKSkgJiYgIXVhZGRyKQorCQlyZXR1cm4gLUVGQVVMVDsKKwogCWlmICghYWNjZXNzX29rKFZFUklGWV9XUklURSwgdWFkZHIsIHNpemVvZihpbnQpKSkKIAkJcmV0dXJuIC1FRkFVTFQ7CiAKQEAgLTY3LDUgKzczLDUgQEAKIAlyZXR1cm4gdXZhbDsKIH0KIAotI2VuZGlmCi0jZW5kaWYKKyNlbmRpZiAvKl9fS0VSTkVMX18qLworI2VuZGlmIC8qX0FTTV9QQVJJU0NfRlVURVhfSCovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1wYXJpc2Mva3ZtLmggYi9pbmNsdWRlL2FzbS1wYXJpc2Mva3ZtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDBjYzQ1OAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLXBhcmlzYy9rdm0uaApAQCAtMCwwICsxLDYgQEAKKyNpZm5kZWYgX19MSU5VWF9LVk1fUEFSSVNDX0gKKyNkZWZpbmUgX19MSU5VWF9LVk1fUEFSSVNDX0gKKworLyogcGFyaXNjIGRvZXMgbm90IHN1cHBvcnQgS1ZNICovCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tcGFyaXNjL3BkYy5oIGIvaW5jbHVkZS9hc20tcGFyaXNjL3BkYy5oCmluZGV4IGRlZGE4YzMuLjllYWE3OTQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLXBhcmlzYy9wZGMuaAorKysgYi9pbmNsdWRlL2FzbS1wYXJpc2MvcGRjLmgKQEAgLTY0NSw4ICs2NDUsNyBAQAogdm9pZCBwZGNfaW9fcmVzZXQodm9pZCk7CiB2b2lkIHBkY19pb19yZXNldF9kZXZpY2VzKHZvaWQpOwogaW50IHBkY19pb2RjX2dldGModm9pZCk7Ci1pbnQgcGRjX2lvZGNfcHJpbnQodW5zaWduZWQgY2hhciAqc3RyLCB1bnNpZ25lZCBjb3VudCk7Ci12b2lkIHBkY19wcmludGYoY29uc3QgY2hhciAqZm10LCAuLi4pOworaW50IHBkY19pb2RjX3ByaW50KGNvbnN0IHVuc2lnbmVkIGNoYXIgKnN0ciwgdW5zaWduZWQgY291bnQpOwogCiB2b2lkIHBkY19lbWVyZ2VuY3lfdW5sb2NrKHZvaWQpOwogaW50IHBkY19zdGlfY2FsbCh1bnNpZ25lZCBsb25nIGZ1bmMsIHVuc2lnbmVkIGxvbmcgZmxhZ3MsCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1wYXJpc2MvcGdhbGxvYy5oIGIvaW5jbHVkZS9hc20tcGFyaXNjL3BnYWxsb2MuaAppbmRleCAzOTk2ZGZjLi5mYzk4N2ExIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1wYXJpc2MvcGdhbGxvYy5oCisrKyBiL2luY2x1ZGUvYXNtLXBhcmlzYy9wZ2FsbG9jLmgKQEAgLTEzOCwxMCArMTM4LDEwIEBACiAJZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKXB0ZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBwdGVfZnJlZV9rZXJuZWwoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHN0cnVjdCBwYWdlICpwdGUpCitzdGF0aWMgaW5saW5lIHZvaWQgcHRlX2ZyZWUoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHN0cnVjdCBwYWdlICpwdGUpCiB7CiAJcGd0YWJsZV9wYWdlX2R0b3IocHRlKTsKLQlwdGVfZnJlZV9rZXJuZWwocGFnZV9hZGRyZXNzKChwdGUpKTsKKwlwdGVfZnJlZV9rZXJuZWwobW0sIHBhZ2VfYWRkcmVzcyhwdGUpKTsKIH0KIAogI2RlZmluZSBjaGVja19wZ3RfY2FjaGUoKQlkbyB7IH0gd2hpbGUgKDApCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1wYXJpc2MvcGd0YWJsZS5oIGIvaW5jbHVkZS9hc20tcGFyaXNjL3BndGFibGUuaAppbmRleCBjZDBmYTRmLi5kYzg2YWRiIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1wYXJpc2MvcGd0YWJsZS5oCisrKyBiL2luY2x1ZGUvYXNtLXBhcmlzYy9wZ3RhYmxlLmgKQEAgLTExNiwxNCArMTE2LDYgQEAKIAogI2RlZmluZSBGSVJTVF9VU0VSX0FERFJFU1MJMAogCi0jaWZuZGVmIF9fQVNTRU1CTFlfXwotZXh0ZXJuICB2b2lkICp2bWFsbG9jX3N0YXJ0OwotI2RlZmluZSBQQ1hMX0RNQV9NQVBfU0laRSAgICg4KjEwMjQqMTAyNCkKLSNkZWZpbmUgVk1BTExPQ19TVEFSVCAgICgodW5zaWduZWQgbG9uZyl2bWFsbG9jX3N0YXJ0KQotLyogdGhpcyBpcyBhIGZpeG1hcCByZW1uYW50LCBzZWUgZml4bWFwLmggKi8KLSNkZWZpbmUgVk1BTExPQ19FTkQJKEtFUk5FTF9NQVBfRU5EKQotI2VuZGlmCi0KIC8qIE5COiBUaGUgdGxiIG1pc3MgaGFuZGxlcnMgbWFrZSBjZXJ0YWluIGFzc3VtcHRpb25zIGFib3V0IHRoZSBvcmRlciAqLwogLyogICAgIG9mIHRoZSBmb2xsb3dpbmcgYml0cywgc28gYmUgY2FyZWZ1bCAoT25lIGV4YW1wbGUsIGJpdHMgMjUtMzEgICovCiAvKiAgICAgYXJlIG1vdmVkIHRvZ2V0aGVyIGluIG9uZSBpbnN0cnVjdGlvbikuICAgICAgICAgICAgICAgICAgICAgICAgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLXBhcmlzYy91bmlzdGQuaCBiL2luY2x1ZGUvYXNtLXBhcmlzYy91bmlzdGQuaAppbmRleCAwODFiNGFlLi5hN2Q4NTdmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1wYXJpc2MvdW5pc3RkLmgKKysrIGIvaW5jbHVkZS9hc20tcGFyaXNjL3VuaXN0ZC5oCkBAIC03OTgsOCArNzk4LDExIEBACiAjZGVmaW5lIF9fTlJfdGltZXJmZAkJKF9fTlJfTGludXggKyAzMDMpCiAjZGVmaW5lIF9fTlJfZXZlbnRmZAkJKF9fTlJfTGludXggKyAzMDQpCiAjZGVmaW5lIF9fTlJfZmFsbG9jYXRlCQkoX19OUl9MaW51eCArIDMwNSkKKyNkZWZpbmUgX19OUl90aW1lcmZkX2NyZWF0ZQkoX19OUl9MaW51eCArIDMwNikKKyNkZWZpbmUgX19OUl90aW1lcmZkX3NldHRpbWUJKF9fTlJfTGludXggKyAzMDcpCisjZGVmaW5lIF9fTlJfdGltZXJmZF9nZXR0aW1lCShfX05SX0xpbnV4ICsgMzA4KQogCi0jZGVmaW5lIF9fTlJfTGludXhfc3lzY2FsbHMJKF9fTlJfZmFsbG9jYXRlICsgMSkKKyNkZWZpbmUgX19OUl9MaW51eF9zeXNjYWxscwkoX19OUl90aW1lcmZkX2dldHRpbWUgKyAxKQogCiAKICNkZWZpbmUgX19JR05PUkVfc2VsZWN0CQkvKiBuZXdzZWxlY3QgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLXBvd2VycGMva3ZtLmggYi9pbmNsdWRlL2FzbS1wb3dlcnBjL2t2bS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxYjUzMGYKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1wb3dlcnBjL2t2bS5oCkBAIC0wLDAgKzEsNiBAQAorI2lmbmRlZiBfX0xJTlVYX0tWTV9QT1dFUlBDX0gKKyNkZWZpbmUgX19MSU5VWF9LVk1fUE9XRVJQQ19ICisKKy8qIHBvd2VycGMgZG9lcyBub3Qgc3VwcG9ydCBLVk0gKi8KKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1wb3dlcnBjL3BndGFibGUtcHBjMzIuaCBiL2luY2x1ZGUvYXNtLXBvd2VycGMvcGd0YWJsZS1wcGMzMi5oCmluZGV4IGQxMzMyYmIuLjJjNzlmNTUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLXBvd2VycGMvcGd0YWJsZS1wcGMzMi5oCisrKyBiL2luY2x1ZGUvYXNtLXBvd2VycGMvcGd0YWJsZS1wcGMzMi5oCkBAIC0zMzksMTQgKzMzOSw2IEBACiAjZGVmaW5lIF9QTURfUEFHRV9NQVNLCTB4MDAwYwogI2RlZmluZSBfUE1EX1BBR0VfOE0JMHgwMDBjCiAKLS8qCi0gKiBUaGUgOHh4IFRMQiBtaXNzIGhhbmRsZXIgYWxsZWdlZGx5IHNldHMgX1BBR0VfQUNDRVNTRUQgaW4gdGhlIFBURQotICogZm9yIGFuIGFkZHJlc3MgZXZlbiBpZiBfUEFHRV9QUkVTRU5UIGlzIG5vdCBzZXQsIGFzIGEgcGVyZm9ybWFuY2UKLSAqIG9wdGltaXphdGlvbi4gIFRoaXMgaXMgYSBidWcgaWYgeW91IGV2ZXIgd2FudCB0byB1c2Ugc3dhcCB1bmxlc3MKLSAqIF9QQUdFX0FDQ0VTU0VEIGlzIDIsIHdoaWNoIGl0IGlzbid0LCBvciB1bmxlc3MgeW91IGhhdmUgOHh4LXNwZWNpZmljCi0gKiBkZWZpbml0aW9ucyBmb3IgX19zd3BfZW50cnkgZXRjLiBiZWxvdywgd2hpY2ggd291bGQgYmUgZ3Jvc3MuCi0gKiAgLS0gcGF1bHVzCi0gKi8KICNkZWZpbmUgX1BURV9OT05FX01BU0sgX1BBR0VfQUNDRVNTRUQKIAogI2Vsc2UgLyogQ09ORklHXzZ4eCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tcHBjL3BndGFibGUuaCBiL2luY2x1ZGUvYXNtLXBwYy9wZ3RhYmxlLmgKaW5kZXggNjkzNDdiZC4uNzA0MzVkMyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tcHBjL3BndGFibGUuaAorKysgYi9pbmNsdWRlL2FzbS1wcGMvcGd0YWJsZS5oCkBAIC0yOTksMTQgKzI5OSw2IEBACiAjZGVmaW5lIF9QTURfUEFHRV9NQVNLCTB4MDAwYwogI2RlZmluZSBfUE1EX1BBR0VfOE0JMHgwMDBjCiAKLS8qCi0gKiBUaGUgOHh4IFRMQiBtaXNzIGhhbmRsZXIgYWxsZWdlZGx5IHNldHMgX1BBR0VfQUNDRVNTRUQgaW4gdGhlIFBURQotICogZm9yIGFuIGFkZHJlc3MgZXZlbiBpZiBfUEFHRV9QUkVTRU5UIGlzIG5vdCBzZXQsIGFzIGEgcGVyZm9ybWFuY2UKLSAqIG9wdGltaXphdGlvbi4gIFRoaXMgaXMgYSBidWcgaWYgeW91IGV2ZXIgd2FudCB0byB1c2Ugc3dhcCB1bmxlc3MKLSAqIF9QQUdFX0FDQ0VTU0VEIGlzIDIsIHdoaWNoIGl0IGlzbid0LCBvciB1bmxlc3MgeW91IGhhdmUgOHh4LXNwZWNpZmljCi0gKiBkZWZpbml0aW9ucyBmb3IgX19zd3BfZW50cnkgZXRjLiBiZWxvdywgd2hpY2ggd291bGQgYmUgZ3Jvc3MuCi0gKiAgLS0gcGF1bHVzCi0gKi8KICNkZWZpbmUgX1BURV9OT05FX01BU0sgX1BBR0VfQUNDRVNTRUQKIAogI2Vsc2UgLyogQ09ORklHXzZ4eCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tczM5MC9rdm0uaCBiL2luY2x1ZGUvYXNtLXMzOTAva3ZtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTczZjJhMwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLXMzOTAva3ZtLmgKQEAgLTAsMCArMSw2IEBACisjaWZuZGVmIF9fTElOVVhfS1ZNX1MzOTBfSAorI2RlZmluZSBfX0xJTlVYX0tWTV9TMzkwX0gKKworLyogczM5MCBkb2VzIG5vdCBzdXBwb3J0IEtWTSAqLworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLXNoL2J5dGVvcmRlci5oIGIvaW5jbHVkZS9hc20tc2gvYnl0ZW9yZGVyLmgKaW5kZXggMGViOTkwNC4uNGMxM2U2MSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tc2gvYnl0ZW9yZGVyLmgKKysrIGIvaW5jbHVkZS9hc20tc2gvYnl0ZW9yZGVyLmgKQEAgLTExLDEzICsxMSwxMyBAQAogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9jb25zdF9fIF9fdTMyIF9fX2FyY2hfX3N3YWIzMihfX3UzMiB4KQogewogCV9fYXNtX18oCi0jaWZkZWYgQ09ORklHX1NVUEVSSDMyCisjaWZkZWYgX19TSDVfXworCQkiYnl0ZXJldgklMCwgJTBcblx0IgorCQkic2hhcmkJCSUwLCAzMiwgJTAiCisjZWxzZQogCQkic3dhcC5iCQklMCwgJTBcblx0IgogCQkic3dhcC53CQklMCwgJTBcblx0IgogCQkic3dhcC5iCQklMCwgJTAiCi0jZWxzZQotCQkiYnl0ZXJldgklMCwgJTBcblx0IgotCQkic2hhcmkJCSUwLCAzMiwgJTAiCiAjZW5kaWYKIAkJOiAiPXIiICh4KQogCQk6ICIwIiAoeCkpOwpAQCAtMjgsMTIgKzI4LDExIEBACiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX2NvbnN0X18gX191MTYgX19fYXJjaF9fc3dhYjE2KF9fdTE2IHgpCiB7CiAJX19hc21fXygKLSNpZmRlZiBDT05GSUdfU1VQRVJIMzIKLQkJInN3YXAuYgkJJTAsICUwIgotI2Vsc2UKKyNpZmRlZiBfX1NINV9fCiAJCSJieXRlcmV2CSUwLCAlMFxuXHQiCiAJCSJzaGFyaQkJJTAsIDMyLCAlMCIKLQorI2Vsc2UKKwkJInN3YXAuYgkJJTAsICUwIgogI2VuZGlmCiAJCTogIj1yIiAoeCkKIAkJOiAgIjAiICh4KSk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1zaC9mbG9wcHkuaCBiL2luY2x1ZGUvYXNtLXNoL2Zsb3BweS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OWZiZmRjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvYXNtLXNoL2Zsb3BweS5oCisrKyAvZGV2L251bGwKQEAgLTEsMjY4ICswLDAgQEAKLS8qCi0gKiBBcmNoaXRlY3R1cmUgc3BlY2lmaWMgcGFydHMgb2YgdGhlIEZsb3BweSBkcml2ZXIKLSAqICAgaW5jbHVkZS9hc20taTM4Ni9mbG9wcHkuaAotICoKLSAqIFRoaXMgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlLiAgU2VlIHRoZSBmaWxlICJDT1BZSU5HIiBpbiB0aGUgbWFpbiBkaXJlY3Rvcnkgb2YgdGhpcyBhcmNoaXZlCi0gKiBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIENvcHlyaWdodCAoQykgMTk5NQotICovCi0jaWZuZGVmIF9fQVNNX1NIX0ZMT1BQWV9ICi0jZGVmaW5lIF9fQVNNX1NIX0ZMT1BQWV9ICi0KLSNpbmNsdWRlIDxsaW51eC92bWFsbG9jLmg+Ci0KLQotLyoKLSAqIFRoZSBETUEgY2hhbm5lbCB1c2VkIGJ5IHRoZSBmbG9wcHkgY29udHJvbGxlciBjYW5ub3QgYWNjZXNzIGRhdGEgYXQKLSAqIGFkZHJlc3NlcyA+PSAxNk1CCi0gKgotICogV2VudCBiYWNrIHRvIHRoZSAxTUIgbGltaXQsIGFzIHNvbWUgcGVvcGxlIGhhZCBwcm9ibGVtcyB3aXRoIHRoZSBmbG9wcHkKLSAqIGRyaXZlciBvdGhlcndpc2UuIEl0IGRvZXNuJ3QgbWF0dGVyIG11Y2ggZm9yIHBlcmZvcm1hbmNlIGFueXdheSwgYXMgbW9zdAotICogZmxvcHB5IGFjY2Vzc2VzIGdvIHRocm91Z2ggdGhlIHRyYWNrIGJ1ZmZlci4KLSAqLwotI2RlZmluZSBfQ1JPU1NfNjRLQihhLHMsdmRtYSkgXAotKCF2ZG1hICYmICgodW5zaWduZWQgbG9uZykoYSkvS182NCAhPSAoKHVuc2lnbmVkIGxvbmcpKGEpICsgKHMpIC0gMSkgLyBLXzY0KSkKLQotI2RlZmluZSBDUk9TU182NEtCKGEscykgX0NST1NTXzY0S0IoYSxzLHVzZV92aXJ0dWFsX2RtYSAmIDEpCi0KLQotI2RlZmluZSBTVyBmZF9yb3V0aW5lW3VzZV92aXJ0dWFsX2RtYSYxXQotI2RlZmluZSBDU1cgZmRfcm91dGluZVtjYW5fdXNlX3ZpcnR1YWxfZG1hICYgMV0KLQotCi0jZGVmaW5lIGZkX2luYihwb3J0KQkJCWluYl9wKHBvcnQpCi0jZGVmaW5lIGZkX291dGIodmFsdWUscG9ydCkJCW91dGJfcCh2YWx1ZSxwb3J0KQotCi0jZGVmaW5lIGZkX3JlcXVlc3RfZG1hKCkgICAgICAgIENTVy5fcmVxdWVzdF9kbWEoRkxPUFBZX0RNQSwiZmxvcHB5IikKLSNkZWZpbmUgZmRfZnJlZV9kbWEoKSAgICAgICAgICAgQ1NXLl9mcmVlX2RtYShGTE9QUFlfRE1BKQotI2RlZmluZSBmZF9lbmFibGVfaXJxKCkgICAgICAgICBlbmFibGVfaXJxKEZMT1BQWV9JUlEpCi0jZGVmaW5lIGZkX2Rpc2FibGVfaXJxKCkgICAgICAgIGRpc2FibGVfaXJxKEZMT1BQWV9JUlEpCi0jZGVmaW5lIGZkX2ZyZWVfaXJxKCkJCWZyZWVfaXJxKEZMT1BQWV9JUlEsIE5VTEwpCi0jZGVmaW5lIGZkX2dldF9kbWFfcmVzaWR1ZSgpICAgIFNXLl9nZXRfZG1hX3Jlc2lkdWUoRkxPUFBZX0RNQSkKLSNkZWZpbmUgZmRfZG1hX21lbV9hbGxvYyhzaXplKQlTVy5fZG1hX21lbV9hbGxvYyhzaXplKQotI2RlZmluZSBmZF9kbWFfc2V0dXAoYWRkciwgc2l6ZSwgbW9kZSwgaW8pIFNXLl9kbWFfc2V0dXAoYWRkciwgc2l6ZSwgbW9kZSwgaW8pCi0KLSNkZWZpbmUgRkxPUFBZX0NBTl9GQUxMQkFDS19PTl9OT0RNQQotCi1zdGF0aWMgaW50IHZpcnR1YWxfZG1hX2NvdW50Owotc3RhdGljIGludCB2aXJ0dWFsX2RtYV9yZXNpZHVlOwotc3RhdGljIGNoYXIgKnZpcnR1YWxfZG1hX2FkZHI7Ci1zdGF0aWMgaW50IHZpcnR1YWxfZG1hX21vZGU7Ci1zdGF0aWMgaW50IGRvaW5nX3BkbWE7Ci0KLXN0YXRpYyB2b2lkIGZsb3BweV9oYXJkaW50KGludCBpcnEsIHZvaWQgKmRldl9pZCwgc3RydWN0IHB0X3JlZ3MgKiByZWdzKQotewotCXJlZ2lzdGVyIHVuc2lnbmVkIGNoYXIgc3Q7Ci0KLSN1bmRlZiBUUkFDRV9GTFBZX0lOVAotCi0jaWZkZWYgVFJBQ0VfRkxQWV9JTlQKLQlzdGF0aWMgaW50IGNhbGxzPTA7Ci0Jc3RhdGljIGludCBieXRlcz0wOwotCXN0YXRpYyBpbnQgZG1hX3dhaXQ9MDsKLSNlbmRpZgotCWlmKCFkb2luZ19wZG1hKSB7Ci0JCWZsb3BweV9pbnRlcnJ1cHQoaXJxLCBkZXZfaWQsIHJlZ3MpOwotCQlyZXR1cm47Ci0JfQotCi0jaWZkZWYgVFJBQ0VfRkxQWV9JTlQKLQlpZighY2FsbHMpCi0JCWJ5dGVzID0gdmlydHVhbF9kbWFfY291bnQ7Ci0jZW5kaWYKLQotCXsKLQkJcmVnaXN0ZXIgaW50IGxjb3VudDsKLQkJcmVnaXN0ZXIgY2hhciAqbHB0cjsKLQotCQlzdCA9IDE7Ci0JCWZvcihsY291bnQ9dmlydHVhbF9kbWFfY291bnQsIGxwdHI9dmlydHVhbF9kbWFfYWRkcjsgCi0JCSAgICBsY291bnQ7IGxjb3VudC0tLCBscHRyKyspIHsKLQkJCXN0PWluYih2aXJ0dWFsX2RtYV9wb3J0KzQpICYgMHhhMCA7Ci0JCQlpZihzdCAhPSAweGEwKSAKLQkJCQlicmVhazsKLQkJCWlmKHZpcnR1YWxfZG1hX21vZGUpCi0JCQkJb3V0Yl9wKCpscHRyLCB2aXJ0dWFsX2RtYV9wb3J0KzUpOwotCQkJZWxzZQotCQkJCSpscHRyID0gaW5iX3AodmlydHVhbF9kbWFfcG9ydCs1KTsKLQkJfQotCQl2aXJ0dWFsX2RtYV9jb3VudCA9IGxjb3VudDsKLQkJdmlydHVhbF9kbWFfYWRkciA9IGxwdHI7Ci0JCXN0ID0gaW5iKHZpcnR1YWxfZG1hX3BvcnQrNCk7Ci0JfQotCi0jaWZkZWYgVFJBQ0VfRkxQWV9JTlQKLQljYWxscysrOwotI2VuZGlmCi0JaWYoc3QgPT0gMHgyMCkKLQkJcmV0dXJuOwotCWlmKCEoc3QgJiAweDIwKSkgewotCQl2aXJ0dWFsX2RtYV9yZXNpZHVlICs9IHZpcnR1YWxfZG1hX2NvdW50OwotCQl2aXJ0dWFsX2RtYV9jb3VudD0wOwotI2lmZGVmIFRSQUNFX0ZMUFlfSU5UCi0JCXByaW50aygiY291bnQ9JXgsIHJlc2lkdWU9JXggY2FsbHM9JWQgYnl0ZXM9JWQgZG1hX3dhaXQ9JWRcbiIsIAotCQkgICAgICAgdmlydHVhbF9kbWFfY291bnQsIHZpcnR1YWxfZG1hX3Jlc2lkdWUsIGNhbGxzLCBieXRlcywKLQkJICAgICAgIGRtYV93YWl0KTsKLQkJY2FsbHMgPSAwOwotCQlkbWFfd2FpdD0wOwotI2VuZGlmCi0JCWRvaW5nX3BkbWEgPSAwOwotCQlmbG9wcHlfaW50ZXJydXB0KGlycSwgZGV2X2lkLCByZWdzKTsKLQkJcmV0dXJuOwotCX0KLSNpZmRlZiBUUkFDRV9GTFBZX0lOVAotCWlmKCF2aXJ0dWFsX2RtYV9jb3VudCkKLQkJZG1hX3dhaXQrKzsKLSNlbmRpZgotfQotCi1zdGF0aWMgdm9pZCBmZF9kaXNhYmxlX2RtYSh2b2lkKQotewotCWlmKCEgKGNhbl91c2VfdmlydHVhbF9kbWEgJiAxKSkKLQkJZGlzYWJsZV9kbWEoRkxPUFBZX0RNQSk7Ci0JZG9pbmdfcGRtYSA9IDA7Ci0JdmlydHVhbF9kbWFfcmVzaWR1ZSArPSB2aXJ0dWFsX2RtYV9jb3VudDsKLQl2aXJ0dWFsX2RtYV9jb3VudD0wOwotfQotCi1zdGF0aWMgaW50IHZkbWFfcmVxdWVzdF9kbWEodW5zaWduZWQgaW50IGRtYW5yLCBjb25zdCBjaGFyICogZGV2aWNlX2lkKQotewotCXJldHVybiAwOwotfQotCi1zdGF0aWMgdm9pZCB2ZG1hX25vcCh1bnNpZ25lZCBpbnQgZHVtbXkpCi17Ci19Ci0KLQotc3RhdGljIGludCB2ZG1hX2dldF9kbWFfcmVzaWR1ZSh1bnNpZ25lZCBpbnQgZHVtbXkpCi17Ci0JcmV0dXJuIHZpcnR1YWxfZG1hX2NvdW50ICsgdmlydHVhbF9kbWFfcmVzaWR1ZTsKLX0KLQotCi1zdGF0aWMgaW50IGZkX3JlcXVlc3RfaXJxKHZvaWQpCi17Ci0JaWYoY2FuX3VzZV92aXJ0dWFsX2RtYSkKLQkJcmV0dXJuIHJlcXVlc3RfaXJxKEZMT1BQWV9JUlEsIGZsb3BweV9oYXJkaW50LAotCQkJCSAgIElSUUZfRElTQUJMRUQsICJmbG9wcHkiLCBOVUxMKTsKLQllbHNlCi0JCXJldHVybiByZXF1ZXN0X2lycShGTE9QUFlfSVJRLCBmbG9wcHlfaW50ZXJydXB0LAotCQkJCSAgIElSUUZfRElTQUJMRUQsICJmbG9wcHkiLCBOVUxMKTsKLX0KLQotc3RhdGljIHVuc2lnbmVkIGxvbmcgZG1hX21lbV9hbGxvYyh1bnNpZ25lZCBsb25nIHNpemUpCi17Ci0JcmV0dXJuIF9fZ2V0X2RtYV9wYWdlcyhHRlBfS0VSTkVMLGdldF9vcmRlcihzaXplKSk7Ci19Ci0KLQotc3RhdGljIHVuc2lnbmVkIGxvbmcgdmRtYV9tZW1fYWxsb2ModW5zaWduZWQgbG9uZyBzaXplKQotewotCXJldHVybiAodW5zaWduZWQgbG9uZykgdm1hbGxvYyhzaXplKTsKLQotfQotCi0jZGVmaW5lIG5vZG1hX21lbV9hbGxvYyhzaXplKSB2ZG1hX21lbV9hbGxvYyhzaXplKQotCi1zdGF0aWMgdm9pZCBfZmRfZG1hX21lbV9mcmVlKHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBzaXplKQotewotCWlmKCh1bnNpZ25lZCBpbnQpIGFkZHIgPj0gKHVuc2lnbmVkIGludCkgaGlnaF9tZW1vcnkpCi0JCXJldHVybiB2ZnJlZSgodm9pZCAqKWFkZHIpOwotCWVsc2UKLQkJZnJlZV9wYWdlcyhhZGRyLCBnZXRfb3JkZXIoc2l6ZSkpOwkJCi19Ci0KLSNkZWZpbmUgZmRfZG1hX21lbV9mcmVlKGFkZHIsIHNpemUpICBfZmRfZG1hX21lbV9mcmVlKGFkZHIsIHNpemUpIAotCi1zdGF0aWMgdm9pZCBfZmRfY2hvc2VfZG1hX21vZGUoY2hhciAqYWRkciwgdW5zaWduZWQgbG9uZyBzaXplKQotewotCWlmKGNhbl91c2VfdmlydHVhbF9kbWEgPT0gMikgewotCQlpZigodW5zaWduZWQgaW50KSBhZGRyID49ICh1bnNpZ25lZCBpbnQpIGhpZ2hfbWVtb3J5IHx8Ci0JCSAgIHZpcnRfdG9fcGh5cyhhZGRyKSA+PSAweDEwMDAwMDAwKQotCQkJdXNlX3ZpcnR1YWxfZG1hID0gMTsKLQkJZWxzZQotCQkJdXNlX3ZpcnR1YWxfZG1hID0gMDsKLQl9IGVsc2UgewotCQl1c2VfdmlydHVhbF9kbWEgPSBjYW5fdXNlX3ZpcnR1YWxfZG1hICYgMTsKLQl9Ci19Ci0KLSNkZWZpbmUgZmRfY2hvc2VfZG1hX21vZGUoYWRkciwgc2l6ZSkgX2ZkX2Nob3NlX2RtYV9tb2RlKGFkZHIsIHNpemUpCi0KLQotc3RhdGljIGludCB2ZG1hX2RtYV9zZXR1cChjaGFyICphZGRyLCB1bnNpZ25lZCBsb25nIHNpemUsIGludCBtb2RlLCBpbnQgaW8pCi17Ci0JZG9pbmdfcGRtYSA9IDE7Ci0JdmlydHVhbF9kbWFfcG9ydCA9IGlvOwotCXZpcnR1YWxfZG1hX21vZGUgPSAobW9kZSAgPT0gRE1BX01PREVfV1JJVEUpOwotCXZpcnR1YWxfZG1hX2FkZHIgPSBhZGRyOwotCXZpcnR1YWxfZG1hX2NvdW50ID0gc2l6ZTsKLQl2aXJ0dWFsX2RtYV9yZXNpZHVlID0gMDsKLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIGludCBoYXJkX2RtYV9zZXR1cChjaGFyICphZGRyLCB1bnNpZ25lZCBsb25nIHNpemUsIGludCBtb2RlLCBpbnQgaW8pCi17Ci0jaWZkZWYgRkxPUFBZX1NBTklUWV9DSEVDSwotCWlmIChDUk9TU182NEtCKGFkZHIsIHNpemUpKSB7Ci0JCXByaW50aygiRE1BIGNyb3NzaW5nIDY0LUsgYm91bmRhcnkgJXAtJXBcbiIsIGFkZHIsIGFkZHIrc2l6ZSk7Ci0JCXJldHVybiAtMTsKLQl9Ci0jZW5kaWYKLQotCV9fZmx1c2hfcHVyZ2VfcmVnaW9uKGFkZHIsIHNpemUpOwotCi0JLyogYWN0dWFsLCBwaHlzaWNhbCBETUEgKi8KLQlkb2luZ19wZG1hID0gMDsKLQljbGVhcl9kbWFfZmYoRkxPUFBZX0RNQSk7Ci0Jc2V0X2RtYV9tb2RlKEZMT1BQWV9ETUEsbW9kZSk7Ci0Jc2V0X2RtYV9hZGRyKEZMT1BQWV9ETUEsdmlydF90b19waHlzKGFkZHIpKTsKLQlzZXRfZG1hX2NvdW50KEZMT1BQWV9ETUEsc2l6ZSk7Ci0JZW5hYmxlX2RtYShGTE9QUFlfRE1BKTsKLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIHN0cnVjdCBmZF9yb3V0aW5lX2wgewotCWludCAoKl9yZXF1ZXN0X2RtYSkodW5zaWduZWQgaW50IGRtYW5yLCBjb25zdCBjaGFyICogZGV2aWNlX2lkKTsKLQl2b2lkICgqX2ZyZWVfZG1hKSh1bnNpZ25lZCBpbnQgZG1hbnIpOwotCWludCAoKl9nZXRfZG1hX3Jlc2lkdWUpKHVuc2lnbmVkIGludCBkdW1teSk7Ci0JdW5zaWduZWQgbG9uZyAoKl9kbWFfbWVtX2FsbG9jKSAodW5zaWduZWQgbG9uZyBzaXplKTsKLQlpbnQgKCpfZG1hX3NldHVwKShjaGFyICphZGRyLCB1bnNpZ25lZCBsb25nIHNpemUsIGludCBtb2RlLCBpbnQgaW8pOwotfSBmZF9yb3V0aW5lW10gPSB7Ci0JewotCQlyZXF1ZXN0X2RtYSwKLQkJZnJlZV9kbWEsCi0JCWdldF9kbWFfcmVzaWR1ZSwKLQkJZG1hX21lbV9hbGxvYywKLQkJaGFyZF9kbWFfc2V0dXAKLQl9LAotCXsKLQkJdmRtYV9yZXF1ZXN0X2RtYSwKLQkJdmRtYV9ub3AsCi0JCXZkbWFfZ2V0X2RtYV9yZXNpZHVlLAotCQl2ZG1hX21lbV9hbGxvYywKLQkJdmRtYV9kbWFfc2V0dXAKLQl9Ci19OwotCi0KLXN0YXRpYyBpbnQgRkRDMSA9IDB4M2YwOwotc3RhdGljIGludCBGREMyID0gLTE7Ci0KLS8qCi0gKiBGbG9wcHkgdHlwZXMgYXJlIHN0b3JlZCBpbiB0aGUgcnRjJ3MgQ01PUyBSQU0gYW5kIHNvIHJ0Y19sb2NrCi0gKiBpcyBuZWVkZWQgdG8gcHJldmVudCBjb3JydXB0ZWQgQ01PUyBSQU0gaW4gY2FzZSAiaW5zbW9kIGZsb3BweSIKLSAqIGNvaW5jaWRlcyB3aXRoIGFub3RoZXIgcnRjIENNT1MgdXNlci4JCVBhdWwgRy4KLSAqLwotI2RlZmluZSBGTE9QUFkwX1RZUEUJKDQpCi0jZGVmaW5lIEZMT1BQWTFfVFlQRQkoMCkKLQotI2RlZmluZSBOX0ZEQyAyCi0jZGVmaW5lIE5fRFJJVkUgOAotCi0jZGVmaW5lIEVYVFJBX0ZMT1BQWV9QQVJBTVMKLQotI2VuZGlmIC8qIF9fQVNNX1NIX0ZMT1BQWV9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1zaC9mcHUuaCBiL2luY2x1ZGUvYXNtLXNoL2ZwdS5oCmluZGV4IGY4NDI5ODguLjkxNDYyZmUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLXNoL2ZwdS5oCisrKyBiL2luY2x1ZGUvYXNtLXNoL2ZwdS5oCkBAIC0xLDkgKzEsOCBAQAogI2lmbmRlZiBfX0FTTV9TSF9GUFVfSAogI2RlZmluZSBfX0FTTV9TSF9GUFVfSAogCi0jZGVmaW5lIFNSX0ZEICAgIDB4MDAwMDgwMDAKLQogI2lmbmRlZiBfX0FTU0VNQkxZX18KKyNpbmNsdWRlIDxsaW51eC9wcmVlbXB0Lmg+CiAjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgogCiAjaWZkZWYgQ09ORklHX1NIX0ZQVQpAQCAtMjEsMjUgKzIwLDM1IEBACiAKIGV4dGVybiB2b2lkIHNhdmVfZnB1KHN0cnVjdCB0YXNrX3N0cnVjdCAqX190c2ssIHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKICNlbHNlCisKICNkZWZpbmUgcmVsZWFzZV9mcHUocmVncykJZG8geyB9IHdoaWxlICgwKQogI2RlZmluZSBncmFiX2ZwdShyZWdzKQkJZG8geyB9IHdoaWxlICgwKQotI2RlZmluZSBzYXZlX2ZwdSh0c2ssIHJlZ3MpCWRvIHsgfSB3aGlsZSAoMCkKKworc3RhdGljIGlubGluZSB2b2lkIHNhdmVfZnB1KHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBzdHJ1Y3QgcHRfcmVncyAqcmVncykKK3sKKwljbGVhcl90c2tfdGhyZWFkX2ZsYWcodHNrLCBUSUZfVVNFREZQVSk7Cit9CiAjZW5kaWYKIAogZXh0ZXJuIGludCBkb19mcHVfaW5zdCh1bnNpZ25lZCBzaG9ydCwgc3RydWN0IHB0X3JlZ3MgKik7CiAKLSNkZWZpbmUgdW5sYXp5X2ZwdSh0c2ssIHJlZ3MpIGRvIHsJCQlcCi0JaWYgKHRlc3RfdHNrX3RocmVhZF9mbGFnKHRzaywgVElGX1VTRURGUFUpKSB7CVwKLQkJc2F2ZV9mcHUodHNrLCByZWdzKTsJCQlcCi0JfQkJCQkJCVwKLX0gd2hpbGUgKDApCitzdGF0aWMgaW5saW5lIHZvaWQgdW5sYXp5X2ZwdShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCit7CisJcHJlZW1wdF9kaXNhYmxlKCk7CisJaWYgKHRlc3RfdHNrX3RocmVhZF9mbGFnKHRzaywgVElGX1VTRURGUFUpKQorCQlzYXZlX2ZwdSh0c2ssIHJlZ3MpOworCXByZWVtcHRfZW5hYmxlKCk7Cit9CiAKLSNkZWZpbmUgY2xlYXJfZnB1KHRzaywgcmVncykgZG8gewkJCQlcCi0JaWYgKHRlc3RfdHNrX3RocmVhZF9mbGFnKHRzaywgVElGX1VTRURGUFUpKSB7CQlcCi0JCWNsZWFyX3Rza190aHJlYWRfZmxhZyh0c2ssIFRJRl9VU0VERlBVKTsJXAotCQlyZWxlYXNlX2ZwdShyZWdzKTsJCQkJXAotCX0JCQkJCQkJXAotfSB3aGlsZSAoMCkKK3N0YXRpYyBpbmxpbmUgdm9pZCBjbGVhcl9mcHUoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHN0cnVjdCBwdF9yZWdzICpyZWdzKQoreworCXByZWVtcHRfZGlzYWJsZSgpOworCWlmICh0ZXN0X3Rza190aHJlYWRfZmxhZyh0c2ssIFRJRl9VU0VERlBVKSkgeworCQljbGVhcl90c2tfdGhyZWFkX2ZsYWcodHNrLCBUSUZfVVNFREZQVSk7CisJCXJlbGVhc2VfZnB1KHJlZ3MpOworCX0KKwlwcmVlbXB0X2VuYWJsZSgpOworfQogCiAjZW5kaWYgLyogX19BU1NFTUJMWV9fICovCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLXNoL2t2bS5oIGIvaW5jbHVkZS9hc20tc2gva3ZtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmFmNTFkYgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLXNoL2t2bS5oCkBAIC0wLDAgKzEsNiBAQAorI2lmbmRlZiBfX0xJTlVYX0tWTV9TSF9ICisjZGVmaW5lIF9fTElOVVhfS1ZNX1NIX0gKKworLyogc2ggZG9lcyBub3Qgc3VwcG9ydCBLVk0gKi8KKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1zaC9wb3NpeF90eXBlcy5oIGIvaW5jbHVkZS9hc20tc2gvcG9zaXhfdHlwZXMuaAppbmRleCA0YjlkMTFjLi40ZWViNzIzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1zaC9wb3NpeF90eXBlcy5oCisrKyBiL2luY2x1ZGUvYXNtLXNoL3Bvc2l4X3R5cGVzLmgKQEAgLTQsNCArNCwxMCBAQAogIyBlbHNlCiAjICBpbmNsdWRlICJwb3NpeF90eXBlc182NC5oIgogIyBlbmRpZgorI2Vsc2UKKyMgaWZkZWYgX19TSDVfXworIyAgaW5jbHVkZSAicG9zaXhfdHlwZXNfNjQuaCIKKyMgZWxzZQorIyAgaW5jbHVkZSAicG9zaXhfdHlwZXNfMzIuaCIKKyMgZW5kaWYKICNlbmRpZiAvKiBfX0tFUk5FTF9fICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1zaC9wcm9jZXNzb3IuaCBiL2luY2x1ZGUvYXNtLXNoL3Byb2Nlc3Nvci5oCmluZGV4IDE5ZmU0N2MuLmVjNzA3YjkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLXNoL3Byb2Nlc3Nvci5oCisrKyBiL2luY2x1ZGUvYXNtLXNoL3Byb2Nlc3Nvci5oCkBAIC0yLDcgKzIsNiBAQAogI2RlZmluZSBfX0FTTV9TSF9QUk9DRVNTT1JfSAogCiAjaW5jbHVkZSA8YXNtL2NwdS1mZWF0dXJlcy5oPgotI2luY2x1ZGUgPGFzbS9mcHUuaD4KIAogI2lmbmRlZiBfX0FTU0VNQkxZX18KIC8qCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1zaC9wcm9jZXNzb3JfMzIuaCBiL2luY2x1ZGUvYXNtLXNoL3Byb2Nlc3Nvcl8zMi5oCmluZGV4IGRmMmQ1YjAuLmMwOTMwNWQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLXNoL3Byb2Nlc3Nvcl8zMi5oCisrKyBiL2luY2x1ZGUvYXNtLXNoL3Byb2Nlc3Nvcl8zMi5oCkBAIC03MCw2ICs3MCw3IEBACiAgKi8KICNkZWZpbmUgU1JfRFNQCQkweDAwMDAxMDAwCiAjZGVmaW5lIFNSX0lNQVNLCTB4MDAwMDAwZjAKKyNkZWZpbmUgU1JfRkQJCTB4MDAwMDgwMDAKIAogLyoKICAqIEZQVSBzdHJ1Y3R1cmUgYW5kIGRhdGEKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLXNoL3Byb2Nlc3Nvcl82NC5oIGIvaW5jbHVkZS9hc20tc2gvcHJvY2Vzc29yXzY0LmgKaW5kZXggZWRhNGJlZi4uODhhMmVkZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tc2gvcHJvY2Vzc29yXzY0LmgKKysrIGIvaW5jbHVkZS9hc20tc2gvcHJvY2Vzc29yXzY0LmgKQEAgLTExMiw2ICsxMTIsNyBAQAogI2VuZGlmCiAKICNkZWZpbmUgU1JfSU1BU0sgMHgwMDAwMDBmMAorI2RlZmluZSBTUl9GRCAgICAweDAwMDA4MDAwCiAjZGVmaW5lIFNSX1NTVEVQIDB4MDgwMDAwMDAKIAogI2lmbmRlZiBfX0FTU0VNQkxZX18KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLXNwYXJjL2t2bS5oIGIvaW5jbHVkZS9hc20tc3BhcmMva3ZtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmU1NDc4ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1zcGFyYy9rdm0uaApAQCAtMCwwICsxLDYgQEAKKyNpZm5kZWYgX19MSU5VWF9LVk1fU1BBUkNfSAorI2RlZmluZSBfX0xJTlVYX0tWTV9TUEFSQ19ICisKKy8qIHNwYXJjIGRvZXMgbm90IHN1cHBvcnQgS1ZNICovCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tc3BhcmM2NC9iYWNrb2ZmLmggYi9pbmNsdWRlL2FzbS1zcGFyYzY0L2JhY2tvZmYuaAppbmRleCBkYWRkNmMzLi5mYTFmZGY2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1zcGFyYzY0L2JhY2tvZmYuaAorKysgYi9pbmNsdWRlL2FzbS1zcGFyYzY0L2JhY2tvZmYuaApAQCAtMTIsNyArMTIsOCBAQAogCW1vdglyZWcsIHRtcDsgXAogODg6CWJybnoscHQJdG1wLCA4OGI7IFwKIAkgc3ViCXRtcCwgMSwgdG1wOyBcCi0JY21wCXJlZywgQkFDS09GRl9MSU1JVDsgXAorCXNldAlCQUNLT0ZGX0xJTUlULCB0bXA7IFwKKwljbXAJcmVnLCB0bXA7IFwKIAliZyxwbgkleGNjLCBsYWJlbDsgXAogCSBub3A7IFwKIAliYSxwdAkleGNjLCBsYWJlbDsgXApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tc3BhcmM2NC9jcHVkYXRhLmggYi9pbmNsdWRlL2FzbS1zcGFyYzY0L2NwdWRhdGEuaAppbmRleCA1NDI0MjE0Li41MzI5NzVlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1zcGFyYzY0L2NwdWRhdGEuaAorKysgYi9pbmNsdWRlL2FzbS1zcGFyYzY0L2NwdWRhdGEuaApAQCAtODYsNiArODYsOCBAQAogZXh0ZXJuIHZvaWQgaW5pdF9jdXJfY3B1X3RyYXAoc3RydWN0IHRocmVhZF9pbmZvICopOwogZXh0ZXJuIHZvaWQgc2V0dXBfdGJhKHZvaWQpOwogZXh0ZXJuIGludCBuY3B1c19wcm9iZWQ7CitleHRlcm4gdm9pZCBfX2luaXQgY3B1X3Byb2JlKHZvaWQpOworZXh0ZXJuIGNvbnN0IHN0cnVjdCBzZXFfb3BlcmF0aW9ucyBjcHVpbmZvX29wOwogCiBleHRlcm4gdW5zaWduZWQgbG9uZyByZWFsX2hhcmRfc21wX3Byb2Nlc3Nvcl9pZCh2b2lkKTsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tc3BhcmM2NC9kY3UuaCBiL2luY2x1ZGUvYXNtLXNwYXJjNjQvZGN1LmgKaW5kZXggZWNiZWQyYS4uMGY3MDRlMSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tc3BhcmM2NC9kY3UuaAorKysgYi9pbmNsdWRlL2FzbS1zcGFyYzY0L2RjdS5oCkBAIC0xLDI2ICsxLDI3IEBACi0vKiAkSWQ6IGRjdS5oLHYgMS4yIDIwMDEvMDMvMDEgMjM6MjM6MzMgZGF2ZW0gRXhwICQgKi8KICNpZm5kZWYgX1NQQVJDNjRfRENVX0gKICNkZWZpbmUgX1NQQVJDNjRfRENVX0gKIAorI2luY2x1ZGUgPGxpbnV4L2NvbnN0Lmg+CisKIC8qIFVsdHJhU3BhcmMtSUlJIERhdGEgQ2FjaGUgVW5pdCBDb250cm9sIFJlZ2lzdGVyICovCi0jZGVmaW5lIERDVV9DUAkJMHgwMDAyMDAwMDAwMDAwMDAwIC8qIFBoeXNpY2FsIENhY2hlIEVuYWJsZSB3L28gbW11Ki8KLSNkZWZpbmUgRENVX0NWCQkweDAwMDEwMDAwMDAwMDAwMDAgLyogVmlydHVhbCBDYWNoZSBFbmFibGUJdy9vIG1tdQkqLwotI2RlZmluZSBEQ1VfTUUJCTB4MDAwMDgwMDAwMDAwMDAwMCAvKiBOQy1zdG9yZSBNZXJnaW5nIEVuYWJsZQkqLwotI2RlZmluZSBEQ1VfUkUJCTB4MDAwMDQwMDAwMDAwMDAwMCAvKiBSQVcgYnlwYXNzIEVuYWJsZQkJKi8KLSNkZWZpbmUgRENVX1BFCQkweDAwMDAyMDAwMDAwMDAwMDAgLyogUENhY2hlIEVuYWJsZQkJKi8KLSNkZWZpbmUgRENVX0hQRQkJMHgwMDAwMTAwMDAwMDAwMDAwIC8qIEhXIHByZWZldGNoIEVuYWJsZQkJKi8KLSNkZWZpbmUgRENVX1NQRQkJMHgwMDAwMDgwMDAwMDAwMDAwIC8qIFNXIHByZWZldGNoIEVuYWJsZQkJKi8KLSNkZWZpbmUgRENVX1NMCQkweDAwMDAwNDAwMDAwMDAwMDAgLyogU2Vjb25kYXJ5IGxvYWQgc3RlZXJpbmcgRW5hYgkqLwotI2RlZmluZSBEQ1VfV0UJCTB4MDAwMDAyMDAwMDAwMDAwMCAvKiBXQ2FjaGUgZW5hYmxlCQkqLwotI2RlZmluZSBEQ1VfUE0JCTB4MDAwMDAxZmUwMDAwMDAwMCAvKiBQQSBXYXRjaHBvaW50IEJ5dGUgTWFzawkqLwotI2RlZmluZSBEQ1VfVk0JCTB4MDAwMDAwMDFmZTAwMDAwMCAvKiBWQSBXYXRjaHBvaW50IEJ5dGUgTWFzawkqLwotI2RlZmluZSBEQ1VfUFIJCTB4MDAwMDAwMDAwMTAwMDAwMCAvKiBQQSBXYXRjaHBvaW50IFJlYWQgRW5hYmxlCSovCi0jZGVmaW5lIERDVV9QVwkJMHgwMDAwMDAwMDAwODAwMDAwIC8qIFBBIFdhdGNocG9pbnQgV3JpdGUgRW5hYmxlCSovCi0jZGVmaW5lIERDVV9WUgkJMHgwMDAwMDAwMDAwNDAwMDAwIC8qIFZBIFdhdGNocG9pbnQgUmVhZCBFbmFibGUJKi8KLSNkZWZpbmUgRENVX1ZXCQkweDAwMDAwMDAwMDAyMDAwMDAgLyogVkEgV2F0Y2hwb2ludCBXcml0ZSBFbmFibGUJKi8KLSNkZWZpbmUgRENVX0RNCQkweDAwMDAwMDAwMDAwMDAwMDggLyogRE1NVSBFbmFibGUJCQkqLwotI2RlZmluZSBEQ1VfSU0JCTB4MDAwMDAwMDAwMDAwMDAwNCAvKiBJTU1VIEVuYWJsZQkJCSovCi0jZGVmaW5lIERDVV9EQwkJMHgwMDAwMDAwMDAwMDAwMDAyIC8qIERhdGEgQ2FjaGUgRW5hYmxlCQkqLwotI2RlZmluZSBEQ1VfSUMJCTB4MDAwMDAwMDAwMDAwMDAwMSAvKiBJbnN0cnVjdGlvbiBDYWNoZSBFbmFibGUJKi8KKyNkZWZpbmUgRENVX0NQCV9BQygweDAwMDIwMDAwMDAwMDAwMDAsVUwpIC8qIFBoeXMgQ2FjaGUgRW5hYmxlIHcvbyBtbXUJKi8KKyNkZWZpbmUgRENVX0NWCV9BQygweDAwMDEwMDAwMDAwMDAwMDAsVUwpIC8qIFZpcnQgQ2FjaGUgRW5hYmxlIHcvbyBtbXUJKi8KKyNkZWZpbmUgRENVX01FCV9BQygweDAwMDA4MDAwMDAwMDAwMDAsVUwpIC8qIE5DLXN0b3JlIE1lcmdpbmcgRW5hYmxlCSovCisjZGVmaW5lIERDVV9SRQlfQUMoMHgwMDAwNDAwMDAwMDAwMDAwLFVMKSAvKiBSQVcgYnlwYXNzIEVuYWJsZQkJKi8KKyNkZWZpbmUgRENVX1BFCV9BQygweDAwMDAyMDAwMDAwMDAwMDAsVUwpIC8qIFBDYWNoZSBFbmFibGUJCSovCisjZGVmaW5lIERDVV9IUEUJX0FDKDB4MDAwMDEwMDAwMDAwMDAwMCxVTCkgLyogSFcgcHJlZmV0Y2ggRW5hYmxlCSovCisjZGVmaW5lIERDVV9TUEUJX0FDKDB4MDAwMDA4MDAwMDAwMDAwMCxVTCkgLyogU1cgcHJlZmV0Y2ggRW5hYmxlCSovCisjZGVmaW5lIERDVV9TTAlfQUMoMHgwMDAwMDQwMDAwMDAwMDAwLFVMKSAvKiBTZWNvbmRhcnkgbGQtc3RlZXJpbmcgRW5hYiovCisjZGVmaW5lIERDVV9XRQlfQUMoMHgwMDAwMDIwMDAwMDAwMDAwLFVMKSAvKiBXQ2FjaGUgZW5hYmxlCQkqLworI2RlZmluZSBEQ1VfUE0JX0FDKDB4MDAwMDAxZmUwMDAwMDAwMCxVTCkgLyogUEEgV2F0Y2hwb2ludCBCeXRlIE1hc2sJKi8KKyNkZWZpbmUgRENVX1ZNCV9BQygweDAwMDAwMDAxZmUwMDAwMDAsVUwpIC8qIFZBIFdhdGNocG9pbnQgQnl0ZSBNYXNrCSovCisjZGVmaW5lIERDVV9QUglfQUMoMHgwMDAwMDAwMDAxMDAwMDAwLFVMKSAvKiBQQSBXYXRjaHBvaW50IFJlYWQgRW5hYmxlCSovCisjZGVmaW5lIERDVV9QVwlfQUMoMHgwMDAwMDAwMDAwODAwMDAwLFVMKSAvKiBQQSBXYXRjaHBvaW50IFdyaXRlIEVuYWJsZSovCisjZGVmaW5lIERDVV9WUglfQUMoMHgwMDAwMDAwMDAwNDAwMDAwLFVMKSAvKiBWQSBXYXRjaHBvaW50IFJlYWQgRW5hYmxlCSovCisjZGVmaW5lIERDVV9WVwlfQUMoMHgwMDAwMDAwMDAwMjAwMDAwLFVMKSAvKiBWQSBXYXRjaHBvaW50IFdyaXRlIEVuYWJsZSovCisjZGVmaW5lIERDVV9ETQlfQUMoMHgwMDAwMDAwMDAwMDAwMDA4LFVMKSAvKiBETU1VIEVuYWJsZQkJKi8KKyNkZWZpbmUgRENVX0lNCV9BQygweDAwMDAwMDAwMDAwMDAwMDQsVUwpIC8qIElNTVUgRW5hYmxlCQkqLworI2RlZmluZSBEQ1VfREMJX0FDKDB4MDAwMDAwMDAwMDAwMDAwMixVTCkgLyogRGF0YSBDYWNoZSBFbmFibGUJCSovCisjZGVmaW5lIERDVV9JQwlfQUMoMHgwMDAwMDAwMDAwMDAwMDAxLFVMKSAvKiBJbnN0cnVjdGlvbiBDYWNoZSBFbmFibGUJKi8KIAogI2VuZGlmIC8qIF9TUEFSQzY0X0RDVV9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1zcGFyYzY0L2h2dHJhbXAuaCBiL2luY2x1ZGUvYXNtLXNwYXJjNjQvaHZ0cmFtcC5oCmluZGV4IGM3ZGQ2YWQuLmIyYjliOTQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLXNwYXJjNjQvaHZ0cmFtcC5oCisrKyBiL2luY2x1ZGUvYXNtLXNwYXJjNjQvaHZ0cmFtcC5oCkBAIC0xNiw3ICsxNiw3IEBACiAJX191NjQJCQlmYXVsdF9pbmZvX3ZhOwogCV9fdTY0CQkJZmF1bHRfaW5mb19wYTsKIAlfX3U2NAkJCXRocmVhZF9yZWc7Ci0Jc3RydWN0IGh2dHJhbXBfbWFwcGluZwltYXBzWzJdOworCXN0cnVjdCBodnRyYW1wX21hcHBpbmcJbWFwc1sxXTsKIH07CiAKIGV4dGVybiB2b2lkIGh2X2NwdV9zdGFydHVwKHVuc2lnbmVkIGxvbmcgaHZkZXNjcl9wYSk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1zcGFyYzY0L2lycS5oIGIvaW5jbHVkZS9hc20tc3BhcmM2NC9pcnEuaAppbmRleCAzMGNiNzZiLi4wYmI5YmY1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1zcGFyYzY0L2lycS5oCisrKyBiL2luY2x1ZGUvYXNtLXNwYXJjNjQvaXJxLmgKQEAgLTY0LDYgKzY0LDcgQEAKIGV4dGVybiB2b2lkIHZpcnRfaXJxX2ZyZWUodW5zaWduZWQgaW50IHZpcnRfaXJxKTsKICNlbmRpZgogCitleHRlcm4gdm9pZCBfX2luaXQgaW5pdF9JUlEodm9pZCk7CiBleHRlcm4gdm9pZCBmaXh1cF9pcnFzKHZvaWQpOwogCiBzdGF0aWMgaW5saW5lIHZvaWQgc2V0X3NvZnRpbnQodW5zaWduZWQgbG9uZyBiaXRzKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tc3BhcmM2NC9rdm0uaCBiL2luY2x1ZGUvYXNtLXNwYXJjNjQva3ZtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzgwNTM3YQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLXNwYXJjNjQva3ZtLmgKQEAgLTAsMCArMSw2IEBACisjaWZuZGVmIF9fTElOVVhfS1ZNX1NQQVJDNjRfSAorI2RlZmluZSBfX0xJTlVYX0tWTV9TUEFSQzY0X0gKKworLyogc3BhcmM2NCBkb2VzIG5vdCBzdXBwb3J0IEtWTSAqLworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLXNwYXJjNjQvcGd0YWJsZS5oIGIvaW5jbHVkZS9hc20tc3BhcmM2NC9wZ3RhYmxlLmgKaW5kZXggMzE2N2NjZi4uNTQ5ZTQ1MiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tc3BhcmM2NC9wZ3RhYmxlLmgKKysrIGIvaW5jbHVkZS9hc20tc3BhcmM2NC9wZ3RhYmxlLmgKQEAgLTIzLDkgKzIzLDkgQEAKICNpbmNsdWRlIDxhc20vcGFnZS5oPgogI2luY2x1ZGUgPGFzbS9wcm9jZXNzb3IuaD4KIAotLyogVGhlIGtlcm5lbCBpbWFnZSBvY2N1cGllcyAweDQwMDAwMDAgdG8gMHgxMDAwMDAwICg0TUIgLS0+IDMyTUIpLgotICogVGhlIHBhZ2UgY29weSBibG9ja29wcyBjYW4gdXNlIDB4MjAwMDAwMCB0byAweDQwMDAwMDAuCi0gKiBUaGUgVFNCIGlzIG1hcHBlZCBpbiB0aGUgMHg0MDAwMDAwIHRvIDB4NjAwMDAwMCByYW5nZS4KKy8qIFRoZSBrZXJuZWwgaW1hZ2Ugb2NjdXBpZXMgMHg0MDAwMDAwIHRvIDB4NjAwMDAwMCAoNE1CIC0tPiA5Nk1CKS4KKyAqIFRoZSBwYWdlIGNvcHkgYmxvY2tvcHMgY2FuIHVzZSAweDYwMDAwMDAgdG8gMHg4MDAwMDAwLgorICogVGhlIFRTQiBpcyBtYXBwZWQgaW4gdGhlIDB4ODAwMDAwMCB0byAweGEwMDAwMDAgcmFuZ2UuCiAgKiBUaGUgUFJPTSByZXNpZGVzIGluIGFuIGFyZWEgc3Bhbm5pbmcgMHhmMDAwMDAwMCB0byAweDEwMDAwMDAwMC4KICAqIFRoZSB2bWFsbG9jIGFyZWEgc3BhbnMgMHgxMDAwMDAwMDAgdG8gMHgyMDAwMDAwMDAuCiAgKiBTaW5jZSBtb2R1bGVzIG5lZWQgdG8gYmUgaW4gdGhlIGxvd2VzdCAzMi1iaXRzIG9mIHRoZSBhZGRyZXNzIHNwYWNlLApAQCAtMzMsOCArMzMsOCBAQAogICogVGhlcmUgaXMgYSBzaW5nbGUgc3RhdGljIGtlcm5lbCBQTUQgd2hpY2ggbWFwcyBmcm9tIDB4MCB0byBhZGRyZXNzCiAgKiAweDQwMDAwMDAwMC4KICAqLwotI2RlZmluZQlUTEJURU1QX0JBU0UJCV9BQygweDAwMDAwMDAwMDIwMDAwMDAsVUwpCi0jZGVmaW5lCVRTQk1BUF9CQVNFCQlfQUMoMHgwMDAwMDAwMDA0MDAwMDAwLFVMKQorI2RlZmluZQlUTEJURU1QX0JBU0UJCV9BQygweDAwMDAwMDAwMDYwMDAwMDAsVUwpCisjZGVmaW5lCVRTQk1BUF9CQVNFCQlfQUMoMHgwMDAwMDAwMDA4MDAwMDAwLFVMKQogI2RlZmluZSBNT0RVTEVTX1ZBRERSCQlfQUMoMHgwMDAwMDAwMDEwMDAwMDAwLFVMKQogI2RlZmluZSBNT0RVTEVTX0xFTgkJX0FDKDB4MDAwMDAwMDBlMDAwMDAwMCxVTCkKICNkZWZpbmUgTU9EVUxFU19FTkQJCV9BQygweDAwMDAwMDAwZjAwMDAwMDAsVUwpCkBAIC03NjEsNiArNzYxLDggQEAKIGV4dGVybiB2b2lkIHBndGFibGVfY2FjaGVfaW5pdCh2b2lkKTsKIGV4dGVybiB2b2lkIHN1bjR2X3JlZ2lzdGVyX2ZhdWx0X3N0YXR1cyh2b2lkKTsKIGV4dGVybiB2b2lkIHN1bjR2X2t0c2JfcmVnaXN0ZXIodm9pZCk7CitleHRlcm4gdm9pZCBfX2luaXQgY2hlZXRhaF9lY2FjaGVfZmx1c2hfaW5pdCh2b2lkKTsKK2V4dGVybiB2b2lkIHN1bjR2X3BhdGNoX3RsYl9oYW5kbGVycyh2b2lkKTsKIAogZXh0ZXJuIHVuc2lnbmVkIGxvbmcgY21kbGluZV9tZW1vcnlfc2l6ZTsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tc3BhcmM2NC9wcm9jZXNzb3IuaCBiL2luY2x1ZGUvYXNtLXNwYXJjNjQvcHJvY2Vzc29yLmgKaW5kZXggOGRhNDg0Yy4uODg1YjZhMSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tc3BhcmM2NC9wcm9jZXNzb3IuaAorKysgYi9pbmNsdWRlL2FzbS1zcGFyYzY0L3Byb2Nlc3Nvci5oCkBAIC0zNyw2ICszNyw5IEBACiAjZW5kaWYKIAogI2RlZmluZSBUQVNLX1NJWkUJKCh1bnNpZ25lZCBsb25nKS1WUFRFX1NJWkUpCisjZGVmaW5lIFRBU0tfU0laRV9PRih0c2spIFwKKwkodGVzdF90c2tfdGhyZWFkX2ZsYWcodHNrLFRJRl8zMkJJVCkgPyBcCisJICgxVUwgPDwgMzJVTCkgOiBUQVNLX1NJWkUpCiAjaWZkZWYgX19LRVJORUxfXwogCiAjZGVmaW5lIFNUQUNLX1RPUDMyCSgoMVVMIDw8IDMyVUwpIC0gUEFHRV9TSVpFKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tc3BhcmM2NC9zcGl0ZmlyZS5oIGIvaW5jbHVkZS9hc20tc3BhcmM2NC9zcGl0ZmlyZS5oCmluZGV4IDYzYjcwNDAuLjk4NWVhN2UgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLXNwYXJjNjQvc3BpdGZpcmUuaAorKysgYi9pbmNsdWRlL2FzbS1zcGFyYzY0L3NwaXRmaXJlLmgKQEAgLTYzLDYgKzYzLDggQEAKIAkgU1BJVEZJUkVfSElHSEVTVF9MT0NLRURfVExCRU5UIDogXAogCSBDSEVFVEFIX0hJR0hFU1RfTE9DS0VEX1RMQkVOVCkKIAorZXh0ZXJuIGludCBudW1fa2VybmVsX2ltYWdlX21hcHBpbmdzOworCiAvKiBUaGUgZGF0YSBjYWNoZSBpcyB3cml0ZSB0aHJvdWdoLCBzbyB0aGlzIGp1c3QgaW52YWxpZGF0ZXMgdGhlCiAgKiBzcGVjaWZpZWQgbGluZS4KICAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tc3BhcmM2NC9zdGFja3RyYWNlLmggYi9pbmNsdWRlL2FzbS1zcGFyYzY0L3N0YWNrdHJhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Y2VlMzlhCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tc3BhcmM2NC9zdGFja3RyYWNlLmgKQEAgLTAsMCArMSw2IEBACisjaWZuZGVmIF9TUEFSQzY0X1NUQUNLVFJBQ0VfSAorI2RlZmluZSBfU1BBUkM2NF9TVEFDS1RSQUNFX0gKKworZXh0ZXJuIHZvaWQgc3RhY2tfdHJhY2VfZmx1c2godm9pZCk7CisKKyNlbmRpZiAvKiBfU1BBUkM2NF9TVEFDS1RSQUNFX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLXNwYXJjNjQvdGltZXIuaCBiL2luY2x1ZGUvYXNtLXNwYXJjNjQvdGltZXIuaAppbmRleCBjY2JkNjk0Li41Yjc3OWZkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1zcGFyYzY0L3RpbWVyLmgKKysrIGIvaW5jbHVkZS9hc20tc3BhcmM2NC90aW1lci5oCkBAIC0xLDE0ICsxLDEzIEBACi0vKiAkSWQ6IHRpbWVyLmgsdiAxLjMgMjAwMC8wNS8wOSAxNzo0MDoxNSBkYXZlbSBFeHAgJAotICogdGltZXIuaDogU3lzdGVtIHRpbWVyIGRlZmluaXRpb25zIGZvciBzdW41LgorLyogdGltZXIuaDogU3lzdGVtIHRpbWVyIGRlZmluaXRpb25zIGZvciBzdW41LgogICoKLSAqIENvcHlyaWdodCAoQykgMTk5NyBEYXZpZCBTLiBNaWxsZXIgKGRhdmVtQGNhaXAucnV0Z2Vycy5lZHUpCisgKiBDb3B5cmlnaHQgKEMpIDE5OTcsIDIwMDggRGF2aWQgUy4gTWlsbGVyIChkYXZlbUBkYXZlbWxvZnQubmV0KQogICovCiAKICNpZm5kZWYgX1NQQVJDNjRfVElNRVJfSAogI2RlZmluZSBfU1BBUkM2NF9USU1FUl9ICiAKICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgotCisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgogCiBzdHJ1Y3Qgc3BhcmM2NF90aWNrX29wcyB7CiAJdW5zaWduZWQgbG9uZyAoKmdldF90aWNrKSh2b2lkKTsKQEAgLTI1LDUgKzI0LDcgQEAKIGV4dGVybiBzdHJ1Y3Qgc3BhcmM2NF90aWNrX29wcyAqdGlja19vcHM7CiAKIGV4dGVybiB1bnNpZ25lZCBsb25nIHNwYXJjNjRfZ2V0X2Nsb2NrX3RpY2sodW5zaWduZWQgaW50IGNwdSk7CitleHRlcm4gdm9pZCBfX2RldmluaXQgc2V0dXBfc3BhcmM2NF90aW1lcih2b2lkKTsKK2V4dGVybiB2b2lkIF9faW5pdCB0aW1lX2luaXQodm9pZCk7CiAKICNlbmRpZiAvKiBfU1BBUkM2NF9USU1FUl9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS11bS9rdm0uaCBiL2luY2x1ZGUvYXNtLXVtL2t2bS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2YWE3NzAKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS11bS9rdm0uaApAQCAtMCwwICsxLDYgQEAKKyNpZm5kZWYgX19MSU5VWF9LVk1fVU1fSAorI2RlZmluZSBfX0xJTlVYX0tWTV9VTV9ICisKKy8qIHVtIGRvZXMgbm90IHN1cHBvcnQgS1ZNICovCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tdW0vdGxiLmggYi9pbmNsdWRlL2FzbS11bS90bGIuaAppbmRleCAzOWZjNDc1Li41MjQwZmExIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS11bS90bGIuaAorKysgYi9pbmNsdWRlL2FzbS11bS90bGIuaApAQCAtMSw2ICsxLDcgQEAKICNpZm5kZWYgX19VTV9UTEJfSAogI2RlZmluZSBfX1VNX1RMQl9ICiAKKyNpbmNsdWRlIDxsaW51eC9wYWdlbWFwLmg+CiAjaW5jbHVkZSA8bGludXgvc3dhcC5oPgogI2luY2x1ZGUgPGFzbS9wZXJjcHUuaD4KICNpbmNsdWRlIDxhc20vcGdhbGxvYy5oPgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tdjg1MC9rdm0uaCBiL2luY2x1ZGUvYXNtLXY4NTAva3ZtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Y3MjliNwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLXY4NTAva3ZtLmgKQEAgLTAsMCArMSw2IEBACisjaWZuZGVmIF9fTElOVVhfS1ZNX1Y4NTBfSAorI2RlZmluZSBfX0xJTlVYX0tWTV9WODUwX0gKKworLyogdjg1MCBkb2VzIG5vdCBzdXBwb3J0IEtWTSAqLworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLXg4Ni9jbXB4Y2hnXzMyLmggYi9pbmNsdWRlL2FzbS14ODYvY21weGNoZ18zMi5oCmluZGV4IGNlYTFkYWUuLjk1OWZhZDAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLXg4Ni9jbXB4Y2hnXzMyLmgKKysrIGIvaW5jbHVkZS9hc20teDg2L2NtcHhjaGdfMzIuaApAQCAtMjY5LDIyICsyNjksMjYgQEAKICh7CQkJCQkJCQkJXAogCV9fdHlwZW9mX18oKihwdHIpKSBfX3JldDsJCQkJCVwKIAlpZiAobGlrZWx5KGJvb3RfY3B1X2RhdGEueDg2ID4gMykpCQkJCVwKLQkJX19yZXQgPSBfX2NtcHhjaGcoKHB0ciksICh1bnNpZ25lZCBsb25nKShvKSwJCVwKLQkJCQkJKHVuc2lnbmVkIGxvbmcpKG4pLCBzaXplb2YoKihwdHIpKSk7IFwKKwkJX19yZXQgPSAoX190eXBlb2ZfXygqKHB0cikpKV9fY21weGNoZygocHRyKSwJCVwKKwkJCQkodW5zaWduZWQgbG9uZykobyksICh1bnNpZ25lZCBsb25nKShuKSwJXAorCQkJCXNpemVvZigqKHB0cikpKTsJCQlcCiAJZWxzZQkJCQkJCQkJXAotCQlfX3JldCA9IGNtcHhjaGdfMzg2KChwdHIpLCAodW5zaWduZWQgbG9uZykobyksCQlcCi0JCQkJCSh1bnNpZ25lZCBsb25nKShuKSwgc2l6ZW9mKCoocHRyKSkpOyBcCisJCV9fcmV0ID0gKF9fdHlwZW9mX18oKihwdHIpKSljbXB4Y2hnXzM4NigocHRyKSwJCVwKKwkJCQkodW5zaWduZWQgbG9uZykobyksICh1bnNpZ25lZCBsb25nKShuKSwJXAorCQkJCXNpemVvZigqKHB0cikpKTsJCQlcCiAJX19yZXQ7CQkJCQkJCQlcCiB9KQogI2RlZmluZSBjbXB4Y2hnX2xvY2FsKHB0ciwgbywgbikJCQkJCVwKICh7CQkJCQkJCQkJXAogCV9fdHlwZW9mX18oKihwdHIpKSBfX3JldDsJCQkJCVwKIAlpZiAobGlrZWx5KGJvb3RfY3B1X2RhdGEueDg2ID4gMykpCQkJCVwKLQkJX19yZXQgPSBfX2NtcHhjaGdfbG9jYWwoKHB0ciksICh1bnNpZ25lZCBsb25nKShvKSwJXAotCQkJCQkodW5zaWduZWQgbG9uZykobiksIHNpemVvZigqKHB0cikpKTsgXAorCQlfX3JldCA9IChfX3R5cGVvZl9fKCoocHRyKSkpX19jbXB4Y2hnX2xvY2FsKChwdHIpLAlcCisJCQkJKHVuc2lnbmVkIGxvbmcpKG8pLCAodW5zaWduZWQgbG9uZykobiksCVwKKwkJCQlzaXplb2YoKihwdHIpKSk7CQkJXAogCWVsc2UJCQkJCQkJCVwKLQkJX19yZXQgPSBjbXB4Y2hnXzM4NigocHRyKSwgKHVuc2lnbmVkIGxvbmcpKG8pLAkJXAotCQkJCQkodW5zaWduZWQgbG9uZykobiksIHNpemVvZigqKHB0cikpKTsgXAorCQlfX3JldCA9IChfX3R5cGVvZl9fKCoocHRyKSkpY21weGNoZ18zODYoKHB0ciksCQlcCisJCQkJKHVuc2lnbmVkIGxvbmcpKG8pLCAodW5zaWduZWQgbG9uZykobiksCVwKKwkJCQlzaXplb2YoKihwdHIpKSk7CQkJXAogCV9fcmV0OwkJCQkJCQkJXAogfSkKICNlbmRpZgpAQCAtMzAxLDEwICszMDUsMTIgQEAKICh7CQkJCQkJCQkJXAogCV9fdHlwZW9mX18oKihwdHIpKSBfX3JldDsJCQkJCVwKIAlpZiAobGlrZWx5KGJvb3RfY3B1X2RhdGEueDg2ID4gNCkpCQkJCVwKLQkJX19yZXQgPSBfX2NtcHhjaGc2NCgocHRyKSwgKHVuc2lnbmVkIGxvbmcgbG9uZykobyksCVwKKwkJX19yZXQgPSAoX190eXBlb2ZfXygqKHB0cikpKV9fY21weGNoZzY0KChwdHIpLAkJXAorCQkJCSh1bnNpZ25lZCBsb25nIGxvbmcpKG8pLAkJXAogCQkJCSh1bnNpZ25lZCBsb25nIGxvbmcpKG4pKTsJCVwKIAllbHNlCQkJCQkJCQlcCi0JCV9fcmV0ID0gY21weGNoZ180ODZfdTY0KChwdHIpLCAodW5zaWduZWQgbG9uZyBsb25nKShvKSwJXAorCQlfX3JldCA9IChfX3R5cGVvZl9fKCoocHRyKSkpY21weGNoZ180ODZfdTY0KChwdHIpLAlcCisJCQkJKHVuc2lnbmVkIGxvbmcgbG9uZykobyksCQlcCiAJCQkJKHVuc2lnbmVkIGxvbmcgbG9uZykobikpOwkJXAogCV9fcmV0OwkJCQkJCQkJXAogfSkKQEAgLTMxMiwxMCArMzE4LDEyIEBACiAoewkJCQkJCQkJCVwKIAlfX3R5cGVvZl9fKCoocHRyKSkgX19yZXQ7CQkJCQlcCiAJaWYgKGxpa2VseShib290X2NwdV9kYXRhLng4NiA+IDQpKQkJCQlcCi0JCV9fcmV0ID0gX19jbXB4Y2hnNjRfbG9jYWwoKHB0ciksICh1bnNpZ25lZCBsb25nIGxvbmcpKG8pLCBcCisJCV9fcmV0ID0gKF9fdHlwZW9mX18oKihwdHIpKSlfX2NtcHhjaGc2NF9sb2NhbCgocHRyKSwJXAorCQkJCSh1bnNpZ25lZCBsb25nIGxvbmcpKG8pLAkJXAogCQkJCSh1bnNpZ25lZCBsb25nIGxvbmcpKG4pKTsJCVwKIAllbHNlCQkJCQkJCQlcCi0JCV9fcmV0ID0gY21weGNoZ180ODZfdTY0KChwdHIpLCAodW5zaWduZWQgbG9uZyBsb25nKShvKSwJXAorCQlfX3JldCA9IChfX3R5cGVvZl9fKCoocHRyKSkpY21weGNoZ180ODZfdTY0KChwdHIpLAlcCisJCQkJKHVuc2lnbmVkIGxvbmcgbG9uZykobyksCQlcCiAJCQkJKHVuc2lnbmVkIGxvbmcgbG9uZykobikpOwkJXAogCV9fcmV0OwkJCQkJCQkJXAogfSkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLXg4Ni9lODIwXzMyLmggYi9pbmNsdWRlL2FzbS14ODYvZTgyMF8zMi5oCmluZGV4IGYxZGE3ZWIuLmU3MjA3YTYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLXg4Ni9lODIwXzMyLmgKKysrIGIvaW5jbHVkZS9hc20teDg2L2U4MjBfMzIuaApAQCAtMjgsNiArMjgsOCBAQAogZXh0ZXJuIHZvaWQgcmVnaXN0ZXJfYm9vdG1lbV9sb3dfcGFnZXModW5zaWduZWQgbG9uZyBtYXhfbG93X3Bmbik7CiBleHRlcm4gdm9pZCBhZGRfbWVtb3J5X3JlZ2lvbih1bnNpZ25lZCBsb25nIGxvbmcgc3RhcnQsCiAJCQkgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZSwgaW50IHR5cGUpOworZXh0ZXJuIHZvaWQgdXBkYXRlX21lbW9yeV9yYW5nZSh1NjQgc3RhcnQsIHU2NCBzaXplLCB1bnNpZ25lZCBvbGRfdHlwZSwKKwkJCQl1bnNpZ25lZCBuZXdfdHlwZSk7CiBleHRlcm4gdm9pZCBlODIwX3JlZ2lzdGVyX21lbW9yeSh2b2lkKTsKIGV4dGVybiB2b2lkIGxpbWl0X3JlZ2lvbnModW5zaWduZWQgbG9uZyBsb25nIHNpemUpOwogZXh0ZXJuIHZvaWQgcHJpbnRfbWVtb3J5X21hcChjaGFyICp3aG8pOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20teDg2L2U4MjBfNjQuaCBiL2luY2x1ZGUvYXNtLXg4Ni9lODIwXzY0LmgKaW5kZXggYTU2MGM0Zi4uMjJlZGU3MyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20teDg2L2U4MjBfNjQuaAorKysgYi9pbmNsdWRlL2FzbS14ODYvZTgyMF82NC5oCkBAIC0xOCw2ICsxOCw4IEBACiAJCQkJICAgIHVuc2lnbmVkIHNpemUsIHVuc2lnbmVkIGxvbmcgYWxpZ24pOwogZXh0ZXJuIHZvaWQgYWRkX21lbW9yeV9yZWdpb24odW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBzaXplLCAKIAkJCSAgICAgIGludCB0eXBlKTsKK2V4dGVybiB2b2lkIHVwZGF0ZV9tZW1vcnlfcmFuZ2UodTY0IHN0YXJ0LCB1NjQgc2l6ZSwgdW5zaWduZWQgb2xkX3R5cGUsCisJCQkJdW5zaWduZWQgbmV3X3R5cGUpOwogZXh0ZXJuIHZvaWQgc2V0dXBfbWVtb3J5X3JlZ2lvbih2b2lkKTsKIGV4dGVybiB2b2lkIGNvbnRpZ19lODIwX3NldHVwKHZvaWQpOyAKIGV4dGVybiB1bnNpZ25lZCBsb25nIGU4MjBfZW5kX29mX3JhbSh2b2lkKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLXg4Ni9pb18zMi5oIGIvaW5jbHVkZS9hc20teDg2L2lvXzMyLmgKaW5kZXggNThkMmM0NS4uZDRkOGZiZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20teDg2L2lvXzMyLmgKKysrIGIvaW5jbHVkZS9hc20teDg2L2lvXzMyLmgKQEAgLTExNCwxMyArMTE0LDEzIEBACiAgKiBJZiB0aGUgYXJlYSB5b3UgYXJlIHRyeWluZyB0byBtYXAgaXMgYSBQQ0kgQkFSIHlvdSBzaG91bGQgaGF2ZSBhCiAgKiBsb29rIGF0IHBjaV9pb21hcCgpLgogICovCi1leHRlcm4gdm9pZCBfX2lvbWVtICppb3JlbWFwX25vY2FjaGUodW5zaWduZWQgbG9uZyBvZmZzZXQsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7Ci1leHRlcm4gdm9pZCBfX2lvbWVtICppb3JlbWFwX2NhY2hlKHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCB1bnNpZ25lZCBsb25nIHNpemUpOworZXh0ZXJuIHZvaWQgX19pb21lbSAqaW9yZW1hcF9ub2NhY2hlKHJlc291cmNlX3NpemVfdCBvZmZzZXQsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CitleHRlcm4gdm9pZCBfX2lvbWVtICppb3JlbWFwX2NhY2hlKHJlc291cmNlX3NpemVfdCBvZmZzZXQsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CiAKIC8qCiAgKiBUaGUgZGVmYXVsdCBpb3JlbWFwKCkgYmVoYXZpb3IgaXMgbm9uLWNhY2hlZDoKICAqLwotc3RhdGljIGlubGluZSB2b2lkIF9faW9tZW0gKmlvcmVtYXAodW5zaWduZWQgbG9uZyBvZmZzZXQsIHVuc2lnbmVkIGxvbmcgc2l6ZSkKK3N0YXRpYyBpbmxpbmUgdm9pZCBfX2lvbWVtICppb3JlbWFwKHJlc291cmNlX3NpemVfdCBvZmZzZXQsIHVuc2lnbmVkIGxvbmcgc2l6ZSkKIHsKIAlyZXR1cm4gaW9yZW1hcF9ub2NhY2hlKG9mZnNldCwgc2l6ZSk7CiB9CmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS14ODYvaW9fNjQuaCBiL2luY2x1ZGUvYXNtLXg4Ni9pb182NC5oCmluZGV4IGY2NGE1OWMuLmRiMGJlMjAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLXg4Ni9pb182NC5oCisrKyBiL2luY2x1ZGUvYXNtLXg4Ni9pb182NC5oCkBAIC0xNTgsMTMgKzE1OCwxMyBAQAogICogaXQncyB1c2VmdWwgaWYgc29tZSBjb250cm9sIHJlZ2lzdGVycyBhcmUgaW4gc3VjaCBhbiBhcmVhIGFuZCB3cml0ZSBjb21iaW5pbmcKICAqIG9yIHJlYWQgY2FjaGluZyBpcyBub3QgZGVzaXJhYmxlOgogICovCi1leHRlcm4gdm9pZCBfX2lvbWVtICppb3JlbWFwX25vY2FjaGUodW5zaWduZWQgbG9uZyBvZmZzZXQsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7Ci1leHRlcm4gdm9pZCBfX2lvbWVtICppb3JlbWFwX2NhY2hlKHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCB1bnNpZ25lZCBsb25nIHNpemUpOworZXh0ZXJuIHZvaWQgX19pb21lbSAqaW9yZW1hcF9ub2NhY2hlKHJlc291cmNlX3NpemVfdCBvZmZzZXQsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CitleHRlcm4gdm9pZCBfX2lvbWVtICppb3JlbWFwX2NhY2hlKHJlc291cmNlX3NpemVfdCBvZmZzZXQsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CiAKIC8qCiAgKiBUaGUgZGVmYXVsdCBpb3JlbWFwKCkgYmVoYXZpb3IgaXMgbm9uLWNhY2hlZDoKICAqLwotc3RhdGljIGlubGluZSB2b2lkIF9faW9tZW0gKmlvcmVtYXAodW5zaWduZWQgbG9uZyBvZmZzZXQsIHVuc2lnbmVkIGxvbmcgc2l6ZSkKK3N0YXRpYyBpbmxpbmUgdm9pZCBfX2lvbWVtICppb3JlbWFwKHJlc291cmNlX3NpemVfdCBvZmZzZXQsIHVuc2lnbmVkIGxvbmcgc2l6ZSkKIHsKIAlyZXR1cm4gaW9yZW1hcF9ub2NhY2hlKG9mZnNldCwgc2l6ZSk7CiB9CmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS14ODYvaXJxZmxhZ3MuaCBiL2luY2x1ZGUvYXNtLXg4Ni9pcnFmbGFncy5oCmluZGV4IDkyMDIxYzEuLjBlMjI5MjQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLXg4Ni9pcnFmbGFncy5oCisrKyBiL2luY2x1ZGUvYXNtLXg4Ni9pcnFmbGFncy5oCkBAIC03MCw2ICs3MCwyNiBAQAogCW5hdGl2ZV9yZXN0b3JlX2ZsKGZsYWdzKTsKIH0KIAorI2lmZGVmIENPTkZJR19YODZfVlNNUAorCisvKgorICogSW50ZXJydXB0IGNvbnRyb2wgZm9yIHRoZSBWU01QIGFyY2hpdGVjdHVyZToKKyAqLworCitzdGF0aWMgaW5saW5lIHZvaWQgcmF3X2xvY2FsX2lycV9kaXNhYmxlKHZvaWQpCit7CisJdW5zaWduZWQgbG9uZyBmbGFncyA9IF9fcmF3X2xvY2FsX3NhdmVfZmxhZ3MoKTsKKwlyYXdfbG9jYWxfaXJxX3Jlc3RvcmUoKGZsYWdzICYgflg4Nl9FRkxBR1NfSUYpIHwgWDg2X0VGTEFHU19BQyk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCByYXdfbG9jYWxfaXJxX2VuYWJsZSh2b2lkKQoreworCXVuc2lnbmVkIGxvbmcgZmxhZ3MgPSBfX3Jhd19sb2NhbF9zYXZlX2ZsYWdzKCk7CisJcmF3X2xvY2FsX2lycV9yZXN0b3JlKChmbGFncyB8IFg4Nl9FRkxBR1NfSUYpICYgKH5YODZfRUZMQUdTX0FDKSk7Cit9CisKKyNlbHNlCisKIHN0YXRpYyBpbmxpbmUgdm9pZCByYXdfbG9jYWxfaXJxX2Rpc2FibGUodm9pZCkKIHsKIAluYXRpdmVfaXJxX2Rpc2FibGUoKTsKQEAgLTgwLDYgKzEwMCw4IEBACiAJbmF0aXZlX2lycV9lbmFibGUoKTsKIH0KIAorI2VuZGlmCisKIC8qCiAgKiBVc2VkIGluIHRoZSBpZGxlIGxvb3A7IHN0aSB0YWtlcyBvbmUgaW5zdHJ1Y3Rpb24gY3ljbGUKICAqIHRvIGNvbXBsZXRlOgpAQCAtMTM3LDEwICsxNTksMTcgQEAKICNkZWZpbmUgcmF3X2xvY2FsX2lycV9zYXZlKGZsYWdzKSBcCiAJCWRvIHsgKGZsYWdzKSA9IF9fcmF3X2xvY2FsX2lycV9zYXZlKCk7IH0gd2hpbGUgKDApCiAKKyNpZmRlZiBDT05GSUdfWDg2X1ZTTVAKK3N0YXRpYyBpbmxpbmUgaW50IHJhd19pcnFzX2Rpc2FibGVkX2ZsYWdzKHVuc2lnbmVkIGxvbmcgZmxhZ3MpCit7CisJcmV0dXJuICEoZmxhZ3MgJiBYODZfRUZMQUdTX0lGKSB8fCAoZmxhZ3MgJiBYODZfRUZMQUdTX0FDKTsKK30KKyNlbHNlCiBzdGF0aWMgaW5saW5lIGludCByYXdfaXJxc19kaXNhYmxlZF9mbGFncyh1bnNpZ25lZCBsb25nIGZsYWdzKQogewogCXJldHVybiAhKGZsYWdzICYgWDg2X0VGTEFHU19JRik7CiB9CisjZW5kaWYKIAogc3RhdGljIGlubGluZSBpbnQgcmF3X2lycXNfZGlzYWJsZWQodm9pZCkKIHsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLXg4Ni9sZ3Vlc3RfaGNhbGwuaCBiL2luY2x1ZGUvYXNtLXg4Ni9sZ3Vlc3RfaGNhbGwuaAppbmRleCA3NThiOWE1Li5mMjM5ZTcwIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS14ODYvbGd1ZXN0X2hjYWxsLmgKKysrIGIvaW5jbHVkZS9hc20teDg2L2xndWVzdF9oY2FsbC5oCkBAIC0yNyw3ICsyNyw3IEBACiAjaWZuZGVmIF9fQVNTRU1CTFlfXwogI2luY2x1ZGUgPGFzbS9od19pcnEuaD4KIAotLypHOjAzMSBGaXJzdCwgaG93IGRvZXMgb3VyIEd1ZXN0IGNvbnRhY3QgdGhlIEhvc3QgdG8gYXNrIGZvciBwcml2aWxlZ2VkCisvKkc6MDMxIEJ1dCBmaXJzdCwgaG93IGRvZXMgb3VyIEd1ZXN0IGNvbnRhY3QgdGhlIEhvc3QgdG8gYXNrIGZvciBwcml2aWxlZ2VkCiAgKiBvcGVyYXRpb25zPyAgVGhlcmUgYXJlIHR3byB3YXlzOiB0aGUgZGlyZWN0IHdheSBpcyB0byBtYWtlIGEgImh5cGVyY2FsbCIsCiAgKiB0byBtYWtlIHJlcXVlc3RzIG9mIHRoZSBIb3N0IEl0c2VsZi4KICAqCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS14ODYvbGlua2FnZS5oIGIvaW5jbHVkZS9hc20teDg2L2xpbmthZ2UuaAppbmRleCAzMTczOWM3Li5jMDQ4MzUzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS14ODYvbGlua2FnZS5oCisrKyBiL2luY2x1ZGUvYXNtLXg4Ni9saW5rYWdlLmgKQEAgLTgsMTIgKzgsNDUgQEAKIAogI2lmZGVmIENPTkZJR19YODZfMzIKICNkZWZpbmUgYXNtbGlua2FnZSBDUFBfQVNNTElOS0FHRSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkKLSNkZWZpbmUgcHJldmVudF90YWlsX2NhbGwocmV0KSBfX2FzbV9fICgiIiA6ICI9ciIgKHJldCkgOiAiMCIgKHJldCkpCiAvKgogICogRm9yIDMyLWJpdCBVTUwgLSBtYXJrIGZ1bmN0aW9ucyBpbXBsZW1lbnRlZCBpbiBhc3NlbWJseSB0aGF0IHVzZQogICogcmVncGFybSBpbnB1dCBwYXJhbWV0ZXJzOgogICovCiAjZGVmaW5lIGFzbXJlZ3Bhcm0gX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpCisKKy8qCisgKiBNYWtlIHN1cmUgdGhlIGNvbXBpbGVyIGRvZXNuJ3QgZG8gYW55dGhpbmcgc3R1cGlkIHdpdGggdGhlCisgKiBhcmd1bWVudHMgb24gdGhlIHN0YWNrIC0gdGhleSBhcmUgb3duZWQgYnkgdGhlICpjYWxsZXIqLCBub3QKKyAqIHRoZSBjYWxsZWUuIFRoaXMganVzdCBmb29scyBnY2MgaW50byBub3Qgc3BpbGxpbmcgaW50byB0aGVtLAorICogYW5kIGtlZXBzIGl0IGZyb20gZG9pbmcgdGFpbGNhbGwgcmVjdXJzaW9uIGFuZC9vciB1c2luZyB0aGUKKyAqIHN0YWNrIHNsb3RzIGZvciB0ZW1wb3Jhcmllcywgc2luY2UgdGhleSBhcmUgbGl2ZSBhbmQgInVzZWQiCisgKiBhbGwgdGhlIHdheSB0byB0aGUgZW5kIG9mIHRoZSBmdW5jdGlvbi4KKyAqCisgKiBOT1RFISBPbiB4ODYtNjQsIGFsbCB0aGUgYXJndW1lbnRzIGFyZSBpbiByZWdpc3RlcnMsIHNvIHRoaXMKKyAqIG9ubHkgbWF0dGVycyBvbiBhIDMyLWJpdCBrZXJuZWwuCisgKi8KKyNkZWZpbmUgYXNtbGlua2FnZV9wcm90ZWN0KG4sIHJldCwgYXJncy4uLikgXAorCV9fYXNtbGlua2FnZV9wcm90ZWN0IyNuKHJldCwgIyNhcmdzKQorI2RlZmluZSBfX2FzbWxpbmthZ2VfcHJvdGVjdF9uKHJldCwgYXJncy4uLikgXAorCV9fYXNtX18gX192b2xhdGlsZV9fICgiIiA6ICI9ciIgKHJldCkgOiAiMCIgKHJldCksICMjYXJncykKKyNkZWZpbmUgX19hc21saW5rYWdlX3Byb3RlY3QwKHJldCkgXAorCV9fYXNtbGlua2FnZV9wcm90ZWN0X24ocmV0KQorI2RlZmluZSBfX2FzbWxpbmthZ2VfcHJvdGVjdDEocmV0LCBhcmcxKSBcCisJX19hc21saW5rYWdlX3Byb3RlY3RfbihyZXQsICJnIiAoYXJnMSkpCisjZGVmaW5lIF9fYXNtbGlua2FnZV9wcm90ZWN0MihyZXQsIGFyZzEsIGFyZzIpIFwKKwlfX2FzbWxpbmthZ2VfcHJvdGVjdF9uKHJldCwgImciIChhcmcxKSwgImciIChhcmcyKSkKKyNkZWZpbmUgX19hc21saW5rYWdlX3Byb3RlY3QzKHJldCwgYXJnMSwgYXJnMiwgYXJnMykgXAorCV9fYXNtbGlua2FnZV9wcm90ZWN0X24ocmV0LCAiZyIgKGFyZzEpLCAiZyIgKGFyZzIpLCAiZyIgKGFyZzMpKQorI2RlZmluZSBfX2FzbWxpbmthZ2VfcHJvdGVjdDQocmV0LCBhcmcxLCBhcmcyLCBhcmczLCBhcmc0KSBcCisJX19hc21saW5rYWdlX3Byb3RlY3RfbihyZXQsICJnIiAoYXJnMSksICJnIiAoYXJnMiksICJnIiAoYXJnMyksIFwKKwkJCSAgICAgICJnIiAoYXJnNCkpCisjZGVmaW5lIF9fYXNtbGlua2FnZV9wcm90ZWN0NShyZXQsIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUpIFwKKwlfX2FzbWxpbmthZ2VfcHJvdGVjdF9uKHJldCwgImciIChhcmcxKSwgImciIChhcmcyKSwgImciIChhcmczKSwgXAorCQkJICAgICAgImciIChhcmc0KSwgImciIChhcmc1KSkKKyNkZWZpbmUgX19hc21saW5rYWdlX3Byb3RlY3Q2KHJldCwgYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwgYXJnNSwgYXJnNikgXAorCV9fYXNtbGlua2FnZV9wcm90ZWN0X24ocmV0LCAiZyIgKGFyZzEpLCAiZyIgKGFyZzIpLCAiZyIgKGFyZzMpLCBcCisJCQkgICAgICAiZyIgKGFyZzQpLCAiZyIgKGFyZzUpLCAiZyIgKGFyZzYpKQorCiAjZW5kaWYKIAogI2lmZGVmIENPTkZJR19YODZfQUxJR05NRU5UXzE2CmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS14ODYvbWFjaC1yZGMzMjF4L2dwaW8uaCBiL2luY2x1ZGUvYXNtLXg4Ni9tYWNoLXJkYzMyMXgvZ3Bpby5oCmluZGV4IGRiMzFiOTIuLmFjY2UwYjcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLXg4Ni9tYWNoLXJkYzMyMXgvZ3Bpby5oCisrKyBiL2luY2x1ZGUvYXNtLXg4Ni9tYWNoLXJkYzMyMXgvZ3Bpby5oCkBAIC01LDE5ICs1LDIwIEBACiBleHRlcm4gdm9pZCByZGNfZ3Bpb19zZXRfdmFsdWUodW5zaWduZWQgZ3BpbywgaW50IHZhbHVlKTsKIGV4dGVybiBpbnQgcmRjX2dwaW9fZGlyZWN0aW9uX2lucHV0KHVuc2lnbmVkIGdwaW8pOwogZXh0ZXJuIGludCByZGNfZ3Bpb19kaXJlY3Rpb25fb3V0cHV0KHVuc2lnbmVkIGdwaW8sIGludCB2YWx1ZSk7Ci0KK2V4dGVybiBpbnQgcmRjX2dwaW9fcmVxdWVzdCh1bnNpZ25lZCBncGlvLCBjb25zdCBjaGFyICpsYWJlbCk7CitleHRlcm4gdm9pZCByZGNfZ3Bpb19mcmVlKHVuc2lnbmVkIGdwaW8pOworZXh0ZXJuIHZvaWQgX19pbml0IHJkYzMyMXhfZ3Bpb19zZXR1cCh2b2lkKTsKIAogLyogV3JhcHBlcnMgZm9yIHRoZSBhcmNoLW5ldXRyYWwgR1BJTyBBUEkgKi8KIAogc3RhdGljIGlubGluZSBpbnQgZ3Bpb19yZXF1ZXN0KHVuc2lnbmVkIGdwaW8sIGNvbnN0IGNoYXIgKmxhYmVsKQogewotCS8qIE5vdCB5ZXQgaW1wbGVtZW50ZWQgKi8KLQlyZXR1cm4gMDsKKwlyZXR1cm4gcmRjX2dwaW9fcmVxdWVzdChncGlvLCBsYWJlbCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBncGlvX2ZyZWUodW5zaWduZWQgZ3BpbykKIHsKLQkvKiBOb3QgeWV0IGltcGxlbWVudGVkICovCisJcmRjX2dwaW9fZnJlZShncGlvKTsKIH0KIAogc3RhdGljIGlubGluZSBpbnQgZ3Bpb19kaXJlY3Rpb25faW5wdXQodW5zaWduZWQgZ3BpbykKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLXg4Ni9tYWNoLXJkYzMyMXgvcmRjMzIxeF9kZWZzLmggYi9pbmNsdWRlL2FzbS14ODYvbWFjaC1yZGMzMjF4L3JkYzMyMXhfZGVmcy5oCmluZGV4IDgzOGJhOGYuLmM4ZTljOGIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLXg4Ni9tYWNoLXJkYzMyMXgvcmRjMzIxeF9kZWZzLmgKKysrIGIvaW5jbHVkZS9hc20teDg2L21hY2gtcmRjMzIxeC9yZGMzMjF4X2RlZnMuaApAQCAtMyw0ICszLDEwIEBACiAvKiBHZW5lcmFsIHB1cnBvc2UgY29uZmlndXJhdGlvbiBhbmQgZGF0YSByZWdpc3RlcnMgKi8KICNkZWZpbmUgUkRDMzIxMF9DRkdSRUdfQUREUiAgICAgMHgwQ0Y4CiAjZGVmaW5lIFJEQzMyMTBfQ0ZHUkVHX0RBVEEgICAgIDB4MENGQwotI2RlZmluZSBSRENfTUFYX0dQSU8JCTB4M0EKKworI2RlZmluZSBSREMzMjFYX0dQSU9fQ1RSTF9SRUcxCTB4NDgKKyNkZWZpbmUgUkRDMzIxWF9HUElPX0NUUkxfUkVHMgkweDg0CisjZGVmaW5lIFJEQzMyMVhfR1BJT19EQVRBX1JFRzEJMHg0YworI2RlZmluZSBSREMzMjFYX0dQSU9fREFUQV9SRUcyCTB4ODgKKworI2RlZmluZSBSREMzMjFYX01BWF9HUElPCTU4CmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS14ODYvbm9wcy5oIGIvaW5jbHVkZS9hc20teDg2L25vcHMuaAppbmRleCBlM2IyYmNlLi5iMzkzMGFlNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20teDg2L25vcHMuaAorKysgYi9pbmNsdWRlL2FzbS14ODYvbm9wcy5oCkBAIC03MywxNiArNzMsNyBAQAogI2RlZmluZSBQNl9OT1A3CSIuYnl0ZSAweDBmLDB4MWYsMHg4MCwwLDAsMCwwXG4iCiAjZGVmaW5lIFA2X05PUDgJIi5ieXRlIDB4MGYsMHgxZiwweDg0LDB4MDAsMCwwLDAsMFxuIgogCi0jaWYgZGVmaW5lZChDT05GSUdfTUs4KQotI2RlZmluZSBBU01fTk9QMSBLOF9OT1AxCi0jZGVmaW5lIEFTTV9OT1AyIEs4X05PUDIKLSNkZWZpbmUgQVNNX05PUDMgSzhfTk9QMwotI2RlZmluZSBBU01fTk9QNCBLOF9OT1A0Ci0jZGVmaW5lIEFTTV9OT1A1IEs4X05PUDUKLSNkZWZpbmUgQVNNX05PUDYgSzhfTk9QNgotI2RlZmluZSBBU01fTk9QNyBLOF9OT1A3Ci0jZGVmaW5lIEFTTV9OT1A4IEs4X05PUDgKLSNlbGlmIGRlZmluZWQoQ09ORklHX01LNykKKyNpZiBkZWZpbmVkKENPTkZJR19NSzcpCiAjZGVmaW5lIEFTTV9OT1AxIEs3X05PUDEKICNkZWZpbmUgQVNNX05PUDIgSzdfTk9QMgogI2RlZmluZSBBU01fTk9QMyBLN19OT1AzCkBAIC0xMDAsNiArOTEsMTUgQEAKICNkZWZpbmUgQVNNX05PUDYgUDZfTk9QNgogI2RlZmluZSBBU01fTk9QNyBQNl9OT1A3CiAjZGVmaW5lIEFTTV9OT1A4IFA2X05PUDgKKyNlbGlmIGRlZmluZWQoQ09ORklHX1g4Nl82NCkKKyNkZWZpbmUgQVNNX05PUDEgSzhfTk9QMQorI2RlZmluZSBBU01fTk9QMiBLOF9OT1AyCisjZGVmaW5lIEFTTV9OT1AzIEs4X05PUDMKKyNkZWZpbmUgQVNNX05PUDQgSzhfTk9QNAorI2RlZmluZSBBU01fTk9QNSBLOF9OT1A1CisjZGVmaW5lIEFTTV9OT1A2IEs4X05PUDYKKyNkZWZpbmUgQVNNX05PUDcgSzhfTk9QNworI2RlZmluZSBBU01fTk9QOCBLOF9OT1A4CiAjZWxzZQogI2RlZmluZSBBU01fTk9QMSBHRU5FUklDX05PUDEKICNkZWZpbmUgQVNNX05PUDIgR0VORVJJQ19OT1AyCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS14ODYvcGFnZS5oIGIvaW5jbHVkZS9hc20teDg2L3BhZ2UuaAppbmRleCAxY2I3YzUxLi5hMDViMjg5IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS14ODYvcGFnZS5oCisrKyBiL2luY2x1ZGUvYXNtLXg4Ni9wYWdlLmgKQEAgLTUyLDEzICs1MiwxMyBAQAogCiBzdHJ1Y3QgcGFnZTsKIAotc3RhdGljIHZvaWQgaW5saW5lIGNsZWFyX3VzZXJfcGFnZSh2b2lkICpwYWdlLCB1bnNpZ25lZCBsb25nIHZhZGRyLAorc3RhdGljIGlubGluZSB2b2lkIGNsZWFyX3VzZXJfcGFnZSh2b2lkICpwYWdlLCB1bnNpZ25lZCBsb25nIHZhZGRyLAogCQkJCXN0cnVjdCBwYWdlICpwZykKIHsKIAljbGVhcl9wYWdlKHBhZ2UpOwogfQogCi1zdGF0aWMgdm9pZCBpbmxpbmUgY29weV91c2VyX3BhZ2Uodm9pZCAqdG8sIHZvaWQgKmZyb20sIHVuc2lnbmVkIGxvbmcgdmFkZHIsCitzdGF0aWMgaW5saW5lIHZvaWQgY29weV91c2VyX3BhZ2Uodm9pZCAqdG8sIHZvaWQgKmZyb20sIHVuc2lnbmVkIGxvbmcgdmFkZHIsCiAJCQkJc3RydWN0IHBhZ2UgKnRvcGFnZSkKIHsKIAljb3B5X3BhZ2UodG8sIGZyb20pOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20teDg2L3BndGFibGUuaCBiL2luY2x1ZGUvYXNtLXg4Ni9wZ3RhYmxlLmgKaW5kZXggMTc0Yjg3Ny4uOWNmNDcyYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20teDg2L3BndGFibGUuaAorKysgYi9pbmNsdWRlL2FzbS14ODYvcGd0YWJsZS5oCkBAIC04NSw2ICs4NSw3IEBACiAjZGVmaW5lIF9fUEFHRV9LRVJORUxfUlgJCShfX1BBR0VfS0VSTkVMX0VYRUMgJiB+X1BBR0VfUlcpCiAjZGVmaW5lIF9fUEFHRV9LRVJORUxfRVhFQ19OT0NBQ0hFCShfX1BBR0VfS0VSTkVMX0VYRUMgfCBfUEFHRV9QQ0QgfCBfUEFHRV9QV1QpCiAjZGVmaW5lIF9fUEFHRV9LRVJORUxfTk9DQUNIRQkJKF9fUEFHRV9LRVJORUwgfCBfUEFHRV9QQ0QgfCBfUEFHRV9QV1QpCisjZGVmaW5lIF9fUEFHRV9LRVJORUxfVUNfTUlOVVMJCShfX1BBR0VfS0VSTkVMIHwgX1BBR0VfUENEKQogI2RlZmluZSBfX1BBR0VfS0VSTkVMX1ZTWVNDQUxMCQkoX19QQUdFX0tFUk5FTF9SWCB8IF9QQUdFX1VTRVIpCiAjZGVmaW5lIF9fUEFHRV9LRVJORUxfVlNZU0NBTExfTk9DQUNIRQkoX19QQUdFX0tFUk5FTF9WU1lTQ0FMTCB8IF9QQUdFX1BDRCB8IF9QQUdFX1BXVCkKICNkZWZpbmUgX19QQUdFX0tFUk5FTF9MQVJHRQkJKF9fUEFHRV9LRVJORUwgfCBfUEFHRV9QU0UpCkBAIC0xMDEsNiArMTAyLDcgQEAKICNkZWZpbmUgUEFHRV9LRVJORUxfRVhFQwkJTUFLRV9HTE9CQUwoX19QQUdFX0tFUk5FTF9FWEVDKQogI2RlZmluZSBQQUdFX0tFUk5FTF9SWAkJCU1BS0VfR0xPQkFMKF9fUEFHRV9LRVJORUxfUlgpCiAjZGVmaW5lIFBBR0VfS0VSTkVMX05PQ0FDSEUJCU1BS0VfR0xPQkFMKF9fUEFHRV9LRVJORUxfTk9DQUNIRSkKKyNkZWZpbmUgUEFHRV9LRVJORUxfVUNfTUlOVVMJCU1BS0VfR0xPQkFMKF9fUEFHRV9LRVJORUxfVUNfTUlOVVMpCiAjZGVmaW5lIFBBR0VfS0VSTkVMX0VYRUNfTk9DQUNIRQlNQUtFX0dMT0JBTChfX1BBR0VfS0VSTkVMX0VYRUNfTk9DQUNIRSkKICNkZWZpbmUgUEFHRV9LRVJORUxfTEFSR0UJCU1BS0VfR0xPQkFMKF9fUEFHRV9LRVJORUxfTEFSR0UpCiAjZGVmaW5lIFBBR0VfS0VSTkVMX0xBUkdFX0VYRUMJCU1BS0VfR0xPQkFMKF9fUEFHRV9LRVJORUxfTEFSR0VfRVhFQykKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLXg4Ni9zeW5jX2JpdG9wcy5oIGIvaW5jbHVkZS9hc20teDg2L3N5bmNfYml0b3BzLmgKaW5kZXggY2JjZTA4YS4uNmI3NzVjOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20teDg2L3N5bmNfYml0b3BzLmgKKysrIGIvaW5jbHVkZS9hc20teDg2L3N5bmNfYml0b3BzLmgKQEAgLTIzLDEwICsyMyw2IEBACiAgKiBUaGlzIGZ1bmN0aW9uIGlzIGF0b21pYyBhbmQgbWF5IG5vdCBiZSByZW9yZGVyZWQuICBTZWUgX19zZXRfYml0KCkKICAqIGlmIHlvdSBkbyBub3QgcmVxdWlyZSB0aGUgYXRvbWljIGd1YXJhbnRlZXMuCiAgKgotICogTm90ZTogdGhlcmUgYXJlIG5vIGd1YXJhbnRlZXMgdGhhdCB0aGlzIGZ1bmN0aW9uIHdpbGwgbm90IGJlIHJlb3JkZXJlZAotICogb24gbm9uLXg4NiBhcmNoaXRlY3R1cmVzLCBzbyBpZiB5b3UgYXJlIHdyaXRpbmcgcG9ydGFibGUgY29kZSwKLSAqIG1ha2Ugc3VyZSBub3QgdG8gcmVseSBvbiBpdHMgcmVvcmRlcmluZyBndWFyYW50ZWVzLgotICoKICAqIE5vdGUgdGhhdCBAbnIgbWF5IGJlIGFsbW9zdCBhcmJpdHJhcmlseSBsYXJnZTsgdGhpcyBmdW5jdGlvbiBpcyBub3QKICAqIHJlc3RyaWN0ZWQgdG8gYWN0aW5nIG9uIGEgc2luZ2xlLXdvcmQgcXVhbnRpdHkuCiAgKi8KQEAgLTYxLDggKzU3LDcgQEAKICAqIEBucjogQml0IHRvIGNoYW5nZQogICogQGFkZHI6IEFkZHJlc3MgdG8gc3RhcnQgY291bnRpbmcgZnJvbQogICoKLSAqIGNoYW5nZV9iaXQoKSBpcyBhdG9taWMgYW5kIG1heSBub3QgYmUgcmVvcmRlcmVkLiBJdCBtYXkgYmUKLSAqIHJlb3JkZXJlZCBvbiBvdGhlciBhcmNoaXRlY3R1cmVzIHRoYW4geDg2LgorICogc3luY19jaGFuZ2VfYml0KCkgaXMgYXRvbWljIGFuZCBtYXkgbm90IGJlIHJlb3JkZXJlZC4KICAqIE5vdGUgdGhhdCBAbnIgbWF5IGJlIGFsbW9zdCBhcmJpdHJhcmlseSBsYXJnZTsgdGhpcyBmdW5jdGlvbiBpcyBub3QKICAqIHJlc3RyaWN0ZWQgdG8gYWN0aW5nIG9uIGEgc2luZ2xlLXdvcmQgcXVhbnRpdHkuCiAgKi8KQEAgLTgwLDcgKzc1LDYgQEAKICAqIEBhZGRyOiBBZGRyZXNzIHRvIGNvdW50IGZyb20KICAqCiAgKiBUaGlzIG9wZXJhdGlvbiBpcyBhdG9taWMgYW5kIGNhbm5vdCBiZSByZW9yZGVyZWQuCi0gKiBJdCBtYXkgYmUgcmVvcmRlcmVkIG9uIG90aGVyIGFyY2hpdGVjdHVyZXMgdGhhbiB4ODYuCiAgKiBJdCBhbHNvIGltcGxpZXMgYSBtZW1vcnkgYmFycmllci4KICAqLwogc3RhdGljIGlubGluZSBpbnQgc3luY190ZXN0X2FuZF9zZXRfYml0KGludCBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqIGFkZHIpCkBAIC05OSw3ICs5Myw2IEBACiAgKiBAYWRkcjogQWRkcmVzcyB0byBjb3VudCBmcm9tCiAgKgogICogVGhpcyBvcGVyYXRpb24gaXMgYXRvbWljIGFuZCBjYW5ub3QgYmUgcmVvcmRlcmVkLgotICogSXQgY2FuIGJlIHJlb3JkZXJkZXJlZCBvbiBvdGhlciBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4geDg2LgogICogSXQgYWxzbyBpbXBsaWVzIGEgbWVtb3J5IGJhcnJpZXIuCiAgKi8KIHN0YXRpYyBpbmxpbmUgaW50IHN5bmNfdGVzdF9hbmRfY2xlYXJfYml0KGludCBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqIGFkZHIpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS14dGVuc2Eva3ZtLmggYi9pbmNsdWRlL2FzbS14dGVuc2Eva3ZtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmRhNGUzMwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLXh0ZW5zYS9rdm0uaApAQCAtMCwwICsxLDYgQEAKKyNpZm5kZWYgX19MSU5VWF9LVk1fWFRFTlNBX0gKKyNkZWZpbmUgX19MSU5VWF9LVk1fWFRFTlNBX0gKKworLyogeHRlbnNhIGRvZXMgbm90IHN1cHBvcnQgS1ZNICovCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9LYnVpbGQgYi9pbmNsdWRlL2xpbnV4L0tidWlsZAppbmRleCA5OTRkZjM3Li5jZWRiYmQ4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L0tidWlsZAorKysgYi9pbmNsdWRlL2xpbnV4L0tidWlsZApAQCAtODYsNiArODYsNyBAQAogaGVhZGVyLXkgKz0gaWZfcHBwLmgKIGhlYWRlci15ICs9IGlmX3NsaXAuaAogaGVhZGVyLXkgKz0gaWZfc3RyaXAuaAoraGVhZGVyLXkgKz0gaWZfdHVuLmgKIGhlYWRlci15ICs9IGlmX3R1bm5lbC5oCiBoZWFkZXIteSArPSBpbjYuaAogaGVhZGVyLXkgKz0gaW5fcm91dGUuaApAQCAtMTI3LDcgKzEyOCw2IEBACiBoZWFkZXIteSArPSBwb3NpeF90eXBlcy5oCiBoZWFkZXIteSArPSBwcGRldi5oCiBoZWFkZXIteSArPSBwcmN0bC5oCi1oZWFkZXIteSArPSBwczJlc2RpLmgKIGhlYWRlci15ICs9IHFueHR5cGVzLmgKIGhlYWRlci15ICs9IHF1b3RhaW9fdjEuaAogaGVhZGVyLXkgKz0gcXVvdGFpb192Mi5oCkBAIC0xOTYsNyArMTk2LDYgQEAKIHVuaWZkZWYteSArPSBldmVudHBvbGwuaAogdW5pZmRlZi15ICs9IHNpZ25hbGZkLmgKIHVuaWZkZWYteSArPSBleHQyX2ZzLmgKLXVuaWZkZWYteSArPSBleHQzX2ZzLmgKIHVuaWZkZWYteSArPSBmYi5oCiB1bmlmZGVmLXkgKz0gZmNudGwuaAogdW5pZmRlZi15ICs9IGZpbHRlci5oCkBAIC0yMDUsNyArMjA0LDYgQEAKIHVuaWZkZWYteSArPSBmcy5oCiB1bmlmZGVmLXkgKz0gZ2FtZXBvcnQuaAogdW5pZmRlZi15ICs9IGdlbmVyaWNfc2VyaWFsLmgKLXVuaWZkZWYteSArPSBnZW5oZC5oCiB1bmlmZGVmLXkgKz0gZ2ZzMl9vbmRpc2suaAogdW5pZmRlZi15ICs9IGhheWVzZXNwLmgKIHVuaWZkZWYteSArPSBoZGxjZHJ2LmgKQEAgLTIzMiw3ICsyMzAsNiBAQAogdW5pZmRlZi15ICs9IGlmX3BwcG9sMnRwLmgKIHVuaWZkZWYteSArPSBpZl9wcHBveC5oCiB1bmlmZGVmLXkgKz0gaWZfdHIuaAotdW5pZmRlZi15ICs9IGlmX3R1bi5oCiB1bmlmZGVmLXkgKz0gaWZfdmxhbi5oCiB1bmlmZGVmLXkgKz0gaWZfd2FucGlwZS5oCiB1bmlmZGVmLXkgKz0gaWdtcC5oCkBAIC0yNTAsMTQgKzI0NywxMyBAQAogdW5pZmRlZi15ICs9IGlzZG5pZi5oCiB1bmlmZGVmLXkgKz0gaXNkbl9kaXZlcnRpZi5oCiB1bmlmZGVmLXkgKz0gaXNkbl9wcHAuaAotdW5pZmRlZi15ICs9IGpiZC5oCiB1bmlmZGVmLXkgKz0gam95c3RpY2suaAogdW5pZmRlZi15ICs9IGtkZXZfdC5oCiB1bmlmZGVmLXkgKz0ga2QuaAogdW5pZmRlZi15ICs9IGtlcm5lbGNhcGkuaAogdW5pZmRlZi15ICs9IGtlcm5lbC5oCiB1bmlmZGVmLXkgKz0ga2V5Ym9hcmQuaAotdW5pZmRlZi0kKENPTkZJR19IQVZFX0tWTSkgKz0ga3ZtLmgKK3VuaWZkZWYteSArPSBrdm0uaAogdW5pZmRlZi15ICs9IGxsYy5oCiB1bmlmZGVmLXkgKz0gbG9vcC5oCiB1bmlmZGVmLXkgKz0gbHAuaApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9iaXRvcHMuaCBiL2luY2x1ZGUvbGludXgvYml0b3BzLmgKaW5kZXggNjljMWVkYi4uNDBkNTQ3MyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9iaXRvcHMuaAorKysgYi9pbmNsdWRlL2xpbnV4L2JpdG9wcy5oCkBAIC02NSw2ICs2NSw0NiBAQAogCXJldHVybiAod29yZCA+PiBzaGlmdCkgfCAod29yZCA8PCAoMzIgLSBzaGlmdCkpOwogfQogCisvKioKKyAqIHJvbDE2IC0gcm90YXRlIGEgMTYtYml0IHZhbHVlIGxlZnQKKyAqIEB3b3JkOiB2YWx1ZSB0byByb3RhdGUKKyAqIEBzaGlmdDogYml0cyB0byByb2xsCisgKi8KK3N0YXRpYyBpbmxpbmUgX191MTYgcm9sMTYoX191MTYgd29yZCwgdW5zaWduZWQgaW50IHNoaWZ0KQoreworCXJldHVybiAod29yZCA8PCBzaGlmdCkgfCAod29yZCA+PiAoMTYgLSBzaGlmdCkpOworfQorCisvKioKKyAqIHJvcjE2IC0gcm90YXRlIGEgMTYtYml0IHZhbHVlIHJpZ2h0CisgKiBAd29yZDogdmFsdWUgdG8gcm90YXRlCisgKiBAc2hpZnQ6IGJpdHMgdG8gcm9sbAorICovCitzdGF0aWMgaW5saW5lIF9fdTE2IHJvcjE2KF9fdTE2IHdvcmQsIHVuc2lnbmVkIGludCBzaGlmdCkKK3sKKwlyZXR1cm4gKHdvcmQgPj4gc2hpZnQpIHwgKHdvcmQgPDwgKDE2IC0gc2hpZnQpKTsKK30KKworLyoqCisgKiByb2w4IC0gcm90YXRlIGFuIDgtYml0IHZhbHVlIGxlZnQKKyAqIEB3b3JkOiB2YWx1ZSB0byByb3RhdGUKKyAqIEBzaGlmdDogYml0cyB0byByb2xsCisgKi8KK3N0YXRpYyBpbmxpbmUgX191OCByb2w4KF9fdTggd29yZCwgdW5zaWduZWQgaW50IHNoaWZ0KQoreworCXJldHVybiAod29yZCA8PCBzaGlmdCkgfCAod29yZCA+PiAoOCAtIHNoaWZ0KSk7Cit9CisKKy8qKgorICogcm9yOCAtIHJvdGF0ZSBhbiA4LWJpdCB2YWx1ZSByaWdodAorICogQHdvcmQ6IHZhbHVlIHRvIHJvdGF0ZQorICogQHNoaWZ0OiBiaXRzIHRvIHJvbGwKKyAqLworc3RhdGljIGlubGluZSBfX3U4IHJvcjgoX191OCB3b3JkLCB1bnNpZ25lZCBpbnQgc2hpZnQpCit7CisJcmV0dXJuICh3b3JkID4+IHNoaWZ0KSB8ICh3b3JkIDw8ICg4IC0gc2hpZnQpKTsKK30KKwogc3RhdGljIGlubGluZSB1bnNpZ25lZCBmbHNfbG9uZyh1bnNpZ25lZCBsb25nIGwpCiB7CiAJaWYgKHNpemVvZihsKSA9PSA0KQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9jZ3JvdXAuaCBiL2luY2x1ZGUvbGludXgvY2dyb3VwLmgKaW5kZXggMDI4YmEzYi4uYTZhNjAzNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9jZ3JvdXAuaAorKysgYi9pbmNsdWRlL2xpbnV4L2Nncm91cC5oCkBAIC0yNTYsNiArMjU2LDcgQEAKIAl2b2lkICgqYmluZCkoc3RydWN0IGNncm91cF9zdWJzeXMgKnNzLCBzdHJ1Y3QgY2dyb3VwICpyb290KTsKIAlpbnQgc3Vic3lzX2lkOwogCWludCBhY3RpdmU7CisJaW50IGRpc2FibGVkOwogCWludCBlYXJseV9pbml0OwogI2RlZmluZSBNQVhfQ0dST1VQX1RZUEVfTkFNRUxFTiAzMgogCWNvbnN0IGNoYXIgKm5hbWU7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2NvbXBhdC5oIGIvaW5jbHVkZS9saW51eC9jb21wYXQuaAppbmRleCBhNjcxZGJmLi44ZmE3ODU3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2NvbXBhdC5oCisrKyBiL2luY2x1ZGUvbGludXgvY29tcGF0LmgKQEAgLTE5Miw4ICsxOTIsOCBAQAogCQlzdHJ1Y3QgY29tcGF0X3RpbWV2YWwgX191c2VyICp0dnApOwogCiBhc21saW5rYWdlIGxvbmcgY29tcGF0X3N5c193YWl0NChjb21wYXRfcGlkX3QgcGlkLAotCQkJCSBjb21wYXRfdWludF90ICpzdGF0X2FkZHIsIGludCBvcHRpb25zLAotCQkJCSBzdHJ1Y3QgY29tcGF0X3J1c2FnZSAqcnUpOworCQkJCSBjb21wYXRfdWludF90IF9fdXNlciAqc3RhdF9hZGRyLCBpbnQgb3B0aW9ucywKKwkJCQkgc3RydWN0IGNvbXBhdF9ydXNhZ2UgX191c2VyICpydSk7CiAKICNkZWZpbmUgQklUU19QRVJfQ09NUEFUX0xPTkcgICAgKDgqc2l6ZW9mKGNvbXBhdF9sb25nX3QpKQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2NwdWlkbGUuaCBiL2luY2x1ZGUvbGludXgvY3B1aWRsZS5oCmluZGV4IDZiNzJhNDUuLjUxZTZiMWUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvY3B1aWRsZS5oCisrKyBiL2luY2x1ZGUvbGludXgvY3B1aWRsZS5oCkBAIC0zOCw4ICszOCw4IEBACiAJdW5zaWduZWQgaW50CXBvd2VyX3VzYWdlOyAvKiBpbiBtVyAqLwogCXVuc2lnbmVkIGludAl0YXJnZXRfcmVzaWRlbmN5OyAvKiBpbiBVUyAqLwogCi0JdW5zaWduZWQgaW50CXVzYWdlOwotCXVuc2lnbmVkIGludAl0aW1lOyAvKiBpbiBVUyAqLworCXVuc2lnbmVkIGxvbmcgbG9uZwl1c2FnZTsKKwl1bnNpZ25lZCBsb25nIGxvbmcJdGltZTsgLyogaW4gVVMgKi8KIAogCWludCAoKmVudGVyKQkoc3RydWN0IGNwdWlkbGVfZGV2aWNlICpkZXYsCiAJCQkgc3RydWN0IGNwdWlkbGVfc3RhdGUgKnN0YXRlKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZG1hZW5naW5lLmggYi9pbmNsdWRlL2xpbnV4L2RtYWVuZ2luZS5oCmluZGV4IDI2MWU0M2EuLjM0ZDQ0MDYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvZG1hZW5naW5lLmgKKysrIGIvaW5jbHVkZS9saW51eC9kbWFlbmdpbmUuaApAQCAtNDIzLDcgKzQyMyw3IEBACiAvKiAtLS0gSGVscGVyIGlvdi1sb2NraW5nIGZ1bmN0aW9ucyAtLS0gKi8KIAogc3RydWN0IGRtYV9wYWdlX2xpc3QgewotCWNoYXIgKmJhc2VfYWRkcmVzczsKKwljaGFyIF9fdXNlciAqYmFzZV9hZGRyZXNzOwogCWludCBucl9wYWdlczsKIAlzdHJ1Y3QgcGFnZSAqKnBhZ2VzOwogfTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZXRodG9vbC5oIGIvaW5jbHVkZS9saW51eC9ldGh0b29sLmgKaW5kZXggZmNiZThiNi4uYzhkMjE2MyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9ldGh0b29sLmgKKysrIGIvaW5jbHVkZS9saW51eC9ldGh0b29sLmgKQEAgLTEyLDYgKzEyLDcgQEAKICNpZm5kZWYgX0xJTlVYX0VUSFRPT0xfSAogI2RlZmluZSBfTElOVVhfRVRIVE9PTF9ICiAKKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgogCiAvKiBUaGlzIHNob3VsZCB3b3JrIGZvciBib3RoIDMyIGFuZCA2NCBiaXQgdXNlcmxhbmQuICovCiBzdHJ1Y3QgZXRodG9vbF9jbWQgewpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9leHBvcnRmcy5oIGIvaW5jbHVkZS9saW51eC9leHBvcnRmcy5oCmluZGV4IDUxZDIxNDEuLmFkY2JiMDUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvZXhwb3J0ZnMuaAorKysgYi9pbmNsdWRlL2xpbnV4L2V4cG9ydGZzLmgKQEAgLTQ5LDExICs0OSwxMSBAQAogCiAvKioKICAqIHN0cnVjdCBleHBvcnRfb3BlcmF0aW9ucyAtIGZvciBuZnNkIHRvIGNvbW11bmljYXRlIHdpdGggZmlsZSBzeXN0ZW1zCi0gKiBAZGVjb2RlX2ZoOiAgICAgIGRlY29kZSBhIGZpbGUgaGFuZGxlIGZyYWdtZW50IGFuZCByZXR1cm4gYSAmc3RydWN0IGRlbnRyeQogICogQGVuY29kZV9maDogICAgICBlbmNvZGUgYSBmaWxlIGhhbmRsZSBmcmFnbWVudCBmcm9tIGEgZGVudHJ5CisgKiBAZmhfdG9fZGVudHJ5OiAgIGZpbmQgdGhlIGltcGxpZWQgb2JqZWN0IGFuZCBnZXQgYSBkZW50cnkgZm9yIGl0CisgKiBAZmhfdG9fcGFyZW50OiAgIGZpbmQgdGhlIGltcGxpZWQgb2JqZWN0J3MgcGFyZW50IGFuZCBnZXQgYSBkZW50cnkgZm9yIGl0CiAgKiBAZ2V0X25hbWU6ICAgICAgIGZpbmQgdGhlIG5hbWUgZm9yIGEgZ2l2ZW4gaW5vZGUgaW4gYSBnaXZlbiBkaXJlY3RvcnkKICAqIEBnZXRfcGFyZW50OiAgICAgZmluZCB0aGUgcGFyZW50IG9mIGEgZ2l2ZW4gZGlyZWN0b3J5Ci0gKiBAZ2V0X2RlbnRyeTogICAgIGZpbmQgYSBkZW50cnkgZm9yIHRoZSBpbm9kZSBnaXZlbiBhIGZpbGUgaGFuZGxlIHN1Yi1mcmFnbWVudAogICoKICAqIFNlZSBEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL0V4cG9ydGluZyBmb3IgZGV0YWlscyBvbiBob3cgdG8gdXNlCiAgKiB0aGlzIGludGVyZmFjZSBjb3JyZWN0bHkuCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2dlbmhkLmggYi9pbmNsdWRlL2xpbnV4L2dlbmhkLmgKaW5kZXggMzJjMmFjNC4uZWNkMmJmNiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9nZW5oZC5oCisrKyBiL2luY2x1ZGUvbGludXgvZ2VuaGQuaApAQCAtNTUsMjQgKzU1LDYgQEAKIAlVTklYV0FSRV9QQVJUSVRJT04gPSAweDYzLAkvKiBTYW1lIGFzIEdOVV9IVVJEIGFuZCBTQ08gVW5peCAqLwogfTsKIAotI2lmbmRlZiBfX0tFUk5FTF9fCi0KLXN0cnVjdCBwYXJ0aXRpb24gewotCXVuc2lnbmVkIGNoYXIgYm9vdF9pbmQ7CQkvKiAweDgwIC0gYWN0aXZlICovCi0JdW5zaWduZWQgY2hhciBoZWFkOwkJLyogc3RhcnRpbmcgaGVhZCAqLwotCXVuc2lnbmVkIGNoYXIgc2VjdG9yOwkJLyogc3RhcnRpbmcgc2VjdG9yICovCi0JdW5zaWduZWQgY2hhciBjeWw7CQkvKiBzdGFydGluZyBjeWxpbmRlciAqLwotCXVuc2lnbmVkIGNoYXIgc3lzX2luZDsJCS8qIFdoYXQgcGFydGl0aW9uIHR5cGUgKi8KLQl1bnNpZ25lZCBjaGFyIGVuZF9oZWFkOwkJLyogZW5kIGhlYWQgKi8KLQl1bnNpZ25lZCBjaGFyIGVuZF9zZWN0b3I7CS8qIGVuZCBzZWN0b3IgKi8KLQl1bnNpZ25lZCBjaGFyIGVuZF9jeWw7CQkvKiBlbmQgY3lsaW5kZXIgKi8KLQl1bnNpZ25lZCBpbnQgc3RhcnRfc2VjdDsJLyogc3RhcnRpbmcgc2VjdG9yIGNvdW50aW5nIGZyb20gMCAqLwotCXVuc2lnbmVkIGludCBucl9zZWN0czsJCS8qIG5yIG9mIHNlY3RvcnMgaW4gcGFydGl0aW9uICovCi19IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwotCi0jZW5kaWYKLQotI2lmZGVmIF9fS0VSTkVMX18KICNpbmNsdWRlIDxsaW51eC9tYWpvci5oPgogI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPgogI2luY2x1ZGUgPGxpbnV4L3NtcC5oPgpAQCAtMjI4LDcgKzIxMCw3IEBACiAJCSAgICAgICBzaXplb2Yoc3RydWN0IGRpc2tfc3RhdHMpKTsKIH0KIAkJCQkKLSNlbHNlCisjZWxzZSAvKiAhQ09ORklHX1NNUCAqLwogI2RlZmluZSBfX2Rpc2tfc3RhdF9hZGQoZ2VuZGlza3AsIGZpZWxkLCBhZGRuZCkgXAogCQkJCShnZW5kaXNrcC0+ZGtzdGF0cy5maWVsZCArPSBhZGRuZCkKICNkZWZpbmUgZGlza19zdGF0X3JlYWQoZ2VuZGlza3AsIGZpZWxkKQkoZ2VuZGlza3AtPmRrc3RhdHMuZmllbGQpCkBAIC0yNTYsNyArMjM4LDcgQEAKIAltZW1zZXQoJnBhcnQtPmRrc3RhdHMsIHZhbHVlLCBzaXplb2Yoc3RydWN0IGRpc2tfc3RhdHMpKTsKIH0KIAotI2VuZGlmCisjZW5kaWYgLyogQ09ORklHX1NNUCAqLwogCiAjZGVmaW5lIGRpc2tfc3RhdF9hZGQoZ2VuZGlza3AsIGZpZWxkLCBhZGRuZCkJCQlcCiAJZG8gewkJCQkJCQlcCkBAIC0zOTUsOCArMzc3LDYgQEAKIAlkaXNrLT5jYXBhY2l0eSA9IHNpemU7CiB9CiAKLSNlbmRpZiAgLyogIF9fS0VSTkVMX18gICovCi0KICNpZmRlZiBDT05GSUdfU09MQVJJU19YODZfUEFSVElUSU9OCiAKICNkZWZpbmUgU09MQVJJU19YODZfTlVNU0xJQ0UJMTYKQEAgLTU0MCw4ICs1MjAsNiBAQAogIyAgIGRlZmluZSBNSU5JWF9OUl9TVUJQQVJUSVRJT05TICA0CiAjZW5kaWYgLyogQ09ORklHX01JTklYX1NVQlBBUlRJVElPTiAqLwogCi0jaWZkZWYgX19LRVJORUxfXwotCiAjZGVmaW5lIEFERFBBUlRfRkxBR19OT05FCTAKICNkZWZpbmUgQUREUEFSVF9GTEFHX1JBSUQJMQogI2RlZmluZSBBRERQQVJUX0ZMQUdfV0hPTEVESVNLCTIKQEAgLTU3MCw4ICs1NDgsNiBAQAogCXJldHVybiBiZGdldChNS0RFVihkaXNrLT5tYWpvciwgZGlzay0+Zmlyc3RfbWlub3IpICsgaW5kZXgpOwogfQogCi0jZW5kaWYKLQogI2Vsc2UgLyogQ09ORklHX0JMT0NLICovCiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBwcmludGtfYWxsX3BhcnRpdGlvbnModm9pZCkgeyB9CkBAIC01ODQsNCArNTYwLDQgQEAKIAogI2VuZGlmIC8qIENPTkZJR19CTE9DSyAqLwogCi0jZW5kaWYKKyNlbmRpZiAvKiBfTElOVVhfR0VOSERfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9oYXJkaXJxLmggYi9pbmNsdWRlL2xpbnV4L2hhcmRpcnEuaAppbmRleCA0OTgyOTk4Li44OTdmNzIzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2hhcmRpcnEuaAorKysgYi9pbmNsdWRlL2xpbnV4L2hhcmRpcnEuaApAQCAtNzIsNiArNzIsMTMgQEAKICNkZWZpbmUgaW5fc29mdGlycSgpCQkoc29mdGlycV9jb3VudCgpKQogI2RlZmluZSBpbl9pbnRlcnJ1cHQoKQkJKGlycV9jb3VudCgpKQogCisvKgorICogQXJlIHdlIHJ1bm5pbmcgaW4gYXRvbWljIGNvbnRleHQ/ICBXQVJOSU5HOiB0aGlzIG1hY3JvIGNhbm5vdAorICogYWx3YXlzIGRldGVjdCBhdG9taWMgY29udGV4dDsgaW4gcGFydGljdWxhciwgaXQgY2Fubm90IGtub3cgYWJvdXQKKyAqIGhlbGQgc3BpbmxvY2tzIGluIG5vbi1wcmVlbXB0aWJsZSBrZXJuZWxzLiAgVGh1cyBpdCBzaG91bGQgbm90IGJlCisgKiB1c2VkIGluIHRoZSBnZW5lcmFsIGNhc2UgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgc2xlZXBpbmcgaXMgcG9zc2libGUuCisgKiBEbyBub3QgdXNlIGluX2F0b21pYygpIGluIGRyaXZlciBjb2RlLgorICovCiAjZGVmaW5lIGluX2F0b21pYygpCQkoKHByZWVtcHRfY291bnQoKSAmIH5QUkVFTVBUX0FDVElWRSkgIT0gMCkKIAogI2lmZGVmIENPTkZJR19QUkVFTVBUCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2hwZXQuaCBiL2luY2x1ZGUvbGludXgvaHBldC5oCmluZGV4IDljZDk0YmYuLjJkYzI5Y2UgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvaHBldC5oCisrKyBiL2luY2x1ZGUvbGludXgvaHBldC5oCkBAIC02NCw3ICs2NCw3IEBACiAgKi8KIAogI2RlZmluZQlUbl9JTlRfUk9VVEVfQ0FQX01BU0sJCSgweGZmZmZmZmZmMDAwMDAwMDBVTEwpCi0jZGVmaW5lCVRuX0lOVF9ST1VURV9DQVBfU0hJRlQJCSgzMlVMKQorI2RlZmluZQlUbl9JTklfUk9VVEVfQ0FQX1NISUZUCQkoMzJVTCkKICNkZWZpbmUJVG5fRlNCX0lOVF9ERUxDQVBfTUFTSwkJKDB4ODAwMFVMKQogI2RlZmluZQlUbl9GU0JfSU5UX0RFTENBUF9TSElGVAkJKDE1KQogI2RlZmluZQlUbl9GU0JfRU5fQ05GX01BU0sJCSgweDQwMDBVTCkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvaWRlLmggYi9pbmNsdWRlL2xpbnV4L2lkZS5oCmluZGV4IGEzYjY5YzEuLmJjMjZiMmYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvaWRlLmgKKysrIGIvaW5jbHVkZS9saW51eC9pZGUuaApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgPGFzbS9zZW1hcGhvcmUuaD4KICNpbmNsdWRlIDxhc20vbXV0ZXguaD4KIAotI2lmIGRlZmluZWQoQ1JJUykgfHwgZGVmaW5lZChGUlYpCisjaWYgZGVmaW5lZChDT05GSUdfQ1JJUykgfHwgZGVmaW5lZChDT05GSUdfRlJWKQogIyBkZWZpbmUgU1VQUE9SVF9WTEJfU1lOQyAwCiAjZWxzZQogIyBkZWZpbmUgU1VQUE9SVF9WTEJfU1lOQyAxCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2lmX3R1bi5oIGIvaW5jbHVkZS9saW51eC9pZl90dW4uaAppbmRleCA3MmYxYzVmLi44YzcxZmUyIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2lmX3R1bi5oCisrKyBiL2luY2x1ZGUvbGludXgvaWZfdHVuLmgKQEAgLTE4LDQ3ICsxOCw4IEBACiAjaWZuZGVmIF9fSUZfVFVOX0gKICNkZWZpbmUgX19JRl9UVU5fSAogCi0vKiBVbmNvbW1lbnQgdG8gZW5hYmxlIGRlYnVnZ2luZyAqLwotLyogI2RlZmluZSBUVU5fREVCVUcgMSAqLwotCiAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KIAotI2lmZGVmIF9fS0VSTkVMX18KLQotI2lmZGVmIFRVTl9ERUJVRwotI2RlZmluZSBEQkcgIGlmKHR1bi0+ZGVidWcpcHJpbnRrCi0jZGVmaW5lIERCRzEgaWYoZGVidWc9PTIpcHJpbnRrCi0jZWxzZQotI2RlZmluZSBEQkcoIGEuLi4gKQotI2RlZmluZSBEQkcxKCBhLi4uICkKLSNlbmRpZgotCi1zdHJ1Y3QgdHVuX3N0cnVjdCB7Ci0Jc3RydWN0IGxpc3RfaGVhZCAgICAgICAgbGlzdDsKLQl1bnNpZ25lZCBsb25nIAkJZmxhZ3M7Ci0JaW50CQkJYXR0YWNoZWQ7Ci0JdWlkX3QJCQlvd25lcjsKLQlnaWRfdAkJCWdyb3VwOwotCi0Jd2FpdF9xdWV1ZV9oZWFkX3QJcmVhZF93YWl0OwotCXN0cnVjdCBza19idWZmX2hlYWQJcmVhZHE7Ci0KLQlzdHJ1Y3QgbmV0X2RldmljZQkqZGV2OwotCi0Jc3RydWN0IGZhc3luY19zdHJ1Y3QgICAgKmZhc3luYzsKLQotCXVuc2lnbmVkIGxvbmcgaWZfZmxhZ3M7Ci0JdTggZGV2X2FkZHJbRVRIX0FMRU5dOwotCXUzMiBjaHJfZmlsdGVyWzJdOwotCXUzMiBuZXRfZmlsdGVyWzJdOwotCi0jaWZkZWYgVFVOX0RFQlVHCQotCWludCBkZWJ1ZzsKLSNlbmRpZiAgCi19OwotCi0jZW5kaWYgLyogX19LRVJORUxfXyAqLwotCiAvKiBSZWFkIHF1ZXVlIHNpemUgKi8KICNkZWZpbmUgVFVOX1JFQURRX1NJWkUJNTAwCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvaW4uaCBiL2luY2x1ZGUvbGludXgvaW4uaAppbmRleCA3MGM2ZGY4Li40MDY1MzEzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2luLmgKKysrIGIvaW5jbHVkZS9saW51eC9pbi5oCkBAIC0yNjUsNyArMjY1LDcgQEAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpcHY0X2lzX2xiY2FzdChfX2JlMzIgYWRkcikKIHsKIAkvKiBsaW1pdGVkIGJyb2FkY2FzdCAqLwotCXJldHVybiBhZGRyID09IElOQUREUl9CUk9BRENBU1Q7CisJcmV0dXJuIGFkZHIgPT0gaHRvbmwoSU5BRERSX0JST0FEQ0FTVCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpcHY0X2lzX3plcm9uZXQoX19iZTMyIGFkZHIpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2lucHV0LmggYi9pbmNsdWRlL2xpbnV4L2lucHV0LmgKaW5kZXggMWJkYzM5YS4uY2FlMmMzNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9pbnB1dC5oCisrKyBiL2luY2x1ZGUvbGludXgvaW5wdXQuaApAQCAtMTIyNywxMiArMTIyNywxMyBAQAogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBpbnB1dF9kZXYgKmlucHV0X2dldF9kZXZpY2Uoc3RydWN0IGlucHV0X2RldiAqZGV2KQogewotCXJldHVybiB0b19pbnB1dF9kZXYoZ2V0X2RldmljZSgmZGV2LT5kZXYpKTsKKwlyZXR1cm4gZGV2ID8gdG9faW5wdXRfZGV2KGdldF9kZXZpY2UoJmRldi0+ZGV2KSkgOiBOVUxMOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgaW5wdXRfcHV0X2RldmljZShzdHJ1Y3QgaW5wdXRfZGV2ICpkZXYpCiB7Ci0JcHV0X2RldmljZSgmZGV2LT5kZXYpOworCWlmIChkZXYpCisJCXB1dF9kZXZpY2UoJmRldi0+ZGV2KTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkICppbnB1dF9nZXRfZHJ2ZGF0YShzdHJ1Y3QgaW5wdXRfZGV2ICpkZXYpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2lvY29udGV4dC5oIGIvaW5jbHVkZS9saW51eC9pb2NvbnRleHQuaAppbmRleCAxYjRjY2YyLi4yYjdhMTE4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2lvY29udGV4dC5oCisrKyBiL2luY2x1ZGUvbGludXgvaW9jb250ZXh0LmgKQEAgLTIsNiArMiw3IEBACiAjZGVmaW5lIElPQ09OVEVYVF9ICiAKICNpbmNsdWRlIDxsaW51eC9yYWRpeC10cmVlLmg+CisjaW5jbHVkZSA8bGludXgvcmN1cGRhdGUuaD4KIAogLyoKICAqIFRoaXMgaXMgdGhlIHBlci1wcm9jZXNzIGFudGljaXBhdG9yeSBJL08gc2NoZWR1bGVyIHN0YXRlLgpAQCAtNTQsNiArNTUsOCBAQAogCiAJdm9pZCAoKmR0b3IpKHN0cnVjdCBpb19jb250ZXh0ICopOyAvKiBkZXN0cnVjdG9yICovCiAJdm9pZCAoKmV4aXQpKHN0cnVjdCBpb19jb250ZXh0ICopOyAvKiBjYWxsZWQgb24gdGFzayBleGl0ICovCisKKwlzdHJ1Y3QgcmN1X2hlYWQgcmN1X2hlYWQ7CiB9OwogCiAvKgpAQCAtODgsOCArOTEsMTAgQEAKIAkgKiBpZiByZWYgY291bnQgaXMgemVybywgZG9uJ3QgYWxsb3cgc2hhcmluZyAoaW9jIGlzIGdvaW5nIGF3YXksIGl0J3MKIAkgKiBhIHJhY2UpLgogCSAqLwotCWlmIChpb2MgJiYgYXRvbWljX2luY19ub3RfemVybygmaW9jLT5yZWZjb3VudCkpCisJaWYgKGlvYyAmJiBhdG9taWNfaW5jX25vdF96ZXJvKCZpb2MtPnJlZmNvdW50KSkgeworCQlhdG9taWNfaW5jKCZpb2MtPm5yX3Rhc2tzKTsKIAkJcmV0dXJuIGlvYzsKKwl9CiAKIAlyZXR1cm4gTlVMTDsKIH0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvaXB2Ni5oIGIvaW5jbHVkZS9saW51eC9pcHY2LmgKaW5kZXggNGFhZWZjMy4uMTM0YzhlNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9pcHY2LmgKKysrIGIvaW5jbHVkZS9saW51eC9pcHY2LmgKQEAgLTUzLDcgKzUzLDcgQEAKIAkvKiAKIAkgKiBUTFYgZW5jb2RlZCBvcHRpb24gZGF0YSBmb2xsb3dzLgogCSAqLwotfTsKK30gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOwkvKiByZXF1aXJlZCBmb3Igc29tZSBhcmNocyAqLwogCiAjZGVmaW5lIGlwdjZfZGVzdG9wdF9oZHIgaXB2Nl9vcHRfaGRyCiAjZGVmaW5lIGlwdjZfaG9wb3B0X2hkciAgaXB2Nl9vcHRfaGRyCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2piZC5oIGIvaW5jbHVkZS9saW51eC9qYmQuaAppbmRleCBiMThmZDNiLi40MjNmNTgyIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2piZC5oCisrKyBiL2luY2x1ZGUvbGludXgvamJkLmgKQEAgLTM0OCw4ICszNDgsNyBAQAogc3RydWN0IGpiZF9yZXZva2VfdGFibGVfczsKIAogLyoqCi0gKiBzdHJ1Y3QgaGFuZGxlX3MgLSBUaGUgaGFuZGxlX3MgdHlwZSBpcyB0aGUgY29uY3JldGUgdHlwZSBhc3NvY2lhdGVkIHdpdGgKLSAqICAgICBoYW5kbGVfdC4KKyAqIHN0cnVjdCBoYW5kbGVfcyAtIHRoaXMgaXMgdGhlIGNvbmNyZXRlIHR5cGUgYXNzb2NpYXRlZCB3aXRoIGhhbmRsZV90LgogICogQGhfdHJhbnNhY3Rpb246IFdoaWNoIGNvbXBvdW5kIHRyYW5zYWN0aW9uIGlzIHRoaXMgdXBkYXRlIGEgcGFydCBvZj8KICAqIEBoX2J1ZmZlcl9jcmVkaXRzOiBOdW1iZXIgb2YgcmVtYWluaW5nIGJ1ZmZlcnMgd2UgYXJlIGFsbG93ZWQgdG8gZGlydHkuCiAgKiBAaF9yZWY6IFJlZmVyZW5jZSBjb3VudCBvbiB0aGlzIGhhbmRsZQpAQCAtMzU4LDEyICszNTcsNyBAQAogICogQGhfamRhdGE6IGZsYWcgdG8gZm9yY2UgZGF0YSBqb3VybmFsaW5nCiAgKiBAaF9hYm9ydGVkOiBmbGFnIGluZGljYXRpbmcgZmF0YWwgZXJyb3Igb24gaGFuZGxlCiAgKiBAaF9sb2NrZGVwX21hcDogbG9ja2RlcCBpbmZvIGZvciBkZWJ1Z2dpbmcgbG9jayBwcm9ibGVtcwotICoqLwotCi0vKiBEb2Nib29rIGNhbid0IHlldCBjb3BlIHdpdGggdGhlIGJpdCBmaWVsZHMsIGJ1dCB3aWxsIGxlYXZlIHRoZSBkb2N1bWVudGF0aW9uCi0gKiBpbiBzbyBpdCBjYW4gYmUgZml4ZWQgbGF0ZXIuCiAgKi8KLQogc3RydWN0IGhhbmRsZV9zCiB7CiAJLyogV2hpY2ggY29tcG91bmQgdHJhbnNhY3Rpb24gaXMgdGhpcyB1cGRhdGUgYSBwYXJ0IG9mPyAqLwpAQCAtNTU4LDggKzU1Miw3IEBACiB9OwogCiAvKioKLSAqIHN0cnVjdCBqb3VybmFsX3MgLSBUaGUgam91cm5hbF9zIHR5cGUgaXMgdGhlIGNvbmNyZXRlIHR5cGUgYXNzb2NpYXRlZCB3aXRoCi0gKiAgICAgam91cm5hbF90LgorICogc3RydWN0IGpvdXJuYWxfcyAtIHRoaXMgaXMgdGhlIGNvbmNyZXRlIHR5cGUgYXNzb2NpYXRlZCB3aXRoIGpvdXJuYWxfdC4KICAqIEBqX2ZsYWdzOiAgR2VuZXJhbCBqb3VybmFsaW5nIHN0YXRlIGZsYWdzCiAgKiBAal9lcnJubzogIElzIHRoZXJlIGFuIG91dHN0YW5kaW5nIHVuY2xlYXJlZCBlcnJvciBvbiB0aGUgam91cm5hbCAoZnJvbSBhCiAgKiAgICAgcHJpb3IgYWJvcnQpPwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9sZ3Vlc3RfbGF1bmNoZXIuaCBiL2luY2x1ZGUvbGludXgvbGd1ZXN0X2xhdW5jaGVyLmgKaW5kZXggNTg5YmUzZS4uZTcyMTdkYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9sZ3Vlc3RfbGF1bmNoZXIuaAorKysgYi9pbmNsdWRlL2xpbnV4L2xndWVzdF9sYXVuY2hlci5oCkBAIC0xNiw2ICsxNiwxMCBAQAogICogYSBuZXcgZGV2aWNlLCB3ZSBzaW1wbHkgbmVlZCB0byB3cml0ZSBhIG5ldyB2aXJ0aW8gZHJpdmVyIGFuZCBjcmVhdGUgc3VwcG9ydAogICogZm9yIGl0IGluIHRoZSBMYXVuY2hlcjogdGhpcyBjb2RlIHdvbid0IG5lZWQgdG8gY2hhbmdlLgogICoKKyAqIFZpcnRpbyBkZXZpY2VzIGFyZSBhbHNvIHVzZWQgYnkga3ZtLCBzbyB3ZSBjYW4gc2ltcGx5IHJldXNlIHRoZWlyIG9wdGltaXplZAorICogZGV2aWNlIGRyaXZlcnMuICBBbmQgb25lIGRheSB3aGVuIGV2ZXJ5b25lIHVzZXMgdmlydGlvLCBteSBwbGFuIHdpbGwgYmUKKyAqIGNvbXBsZXRlLiAgQndhaGFoYWhhaCEKKyAqCiAgKiBEZXZpY2VzIGFyZSBkZXNjcmliZWQgYnkgYSBzaW1wbGlmaWVkIElELCBhIHN0YXR1cyBieXRlLCBhbmQgc29tZSAiY29uZmlnIgogICogYnl0ZXMgd2hpY2ggZGVzY3JpYmUgdGhpcyBkZXZpY2UncyBjb25maWd1cmF0aW9uLiAgVGhpcyBpcyBwbGFjZWQgYnkgdGhlCiAgKiBMYXVuY2hlciBqdXN0IGFib3ZlIHRoZSB0b3Agb2YgcGh5c2ljYWwgbWVtb3J5OgpAQCAtMjYsNyArMzAsNyBAQAogCS8qIFRoZSBudW1iZXIgb2YgdmlydHF1ZXVlcyAoZmlyc3QgaW4gY29uZmlnIGFycmF5KSAqLwogCV9fdTggbnVtX3ZxOwogCS8qIFRoZSBudW1iZXIgb2YgYnl0ZXMgb2YgZmVhdHVyZSBiaXRzLiAgTXVsdGlwbHkgYnkgMjogb25lIGZvciBob3N0Ci0JICogZmVhdHVyZXMgYW5kIG9uZSBmb3IgZ3Vlc3QgYWNrbm93bGVkZ2VtZW50cy4gKi8KKwkgKiBmZWF0dXJlcyBhbmQgb25lIGZvciBHdWVzdCBhY2tub3dsZWRnZW1lbnRzLiAqLwogCV9fdTggZmVhdHVyZV9sZW47CiAJLyogVGhlIG51bWJlciBvZiBieXRlcyBvZiB0aGUgY29uZmlnIGFycmF5IGFmdGVyIHZpcnRxdWV1ZXMuICovCiAJX191OCBjb25maWdfbGVuOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9saWJhdGEuaCBiL2luY2x1ZGUvbGludXgvbGliYXRhLmgKaW5kZXggYTA1ZjYwMC4uMzdlZTg4MSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9saWJhdGEuaAorKysgYi9pbmNsdWRlL2xpbnV4L2xpYmF0YS5oCkBAIC0yOTUsNiArMjk1LDcgQEAKIAlBVEFfRUhfU09GVFJFU0VUCT0gKDEgPDwgMSksCiAJQVRBX0VIX0hBUkRSRVNFVAk9ICgxIDw8IDIpLAogCUFUQV9FSF9FTkFCTEVfTElOSwk9ICgxIDw8IDMpLAorCUFUQV9FSF9MUE0JCT0gKDEgPDwgNCksICAvKiBsaW5rIHBvd2VyIG1hbmFnZW1lbnQgYWN0aW9uICovCiAKIAlBVEFfRUhfUkVTRVRfTUFTSwk9IEFUQV9FSF9TT0ZUUkVTRVQgfCBBVEFfRUhfSEFSRFJFU0VULAogCUFUQV9FSF9QRVJERVZfTUFTSwk9IEFUQV9FSF9SRVZBTElEQVRFLApAQCAtMzA0LDcgKzMwNSw2IEBACiAJQVRBX0VISV9SRVNVTUVfTElOSwk9ICgxIDw8IDEpLCAgLyogcmVzdW1lIGxpbmsgKHJlc2V0IG1vZGlmaWVyKSAqLwogCUFUQV9FSElfTk9fQVVUT1BTWQk9ICgxIDw8IDIpLCAgLyogbm8gYXV0b3BzeSAqLwogCUFUQV9FSElfUVVJRVQJCT0gKDEgPDwgMyksICAvKiBiZSBxdWlldCAqLwotCUFUQV9FSElfTFBNCQk9ICgxIDw8IDQpLCAgLyogbGluayBwb3dlciBtYW5hZ2VtZW50IGFjdGlvbiAqLwogCiAJQVRBX0VISV9ESURfU09GVFJFU0VUCT0gKDEgPDwgMTYpLCAvKiBhbHJlYWR5IHNvZnQtcmVzZXQgdGhpcyBwb3J0ICovCiAJQVRBX0VISV9ESURfSEFSRFJFU0VUCT0gKDEgPDwgMTcpLCAvKiBhbHJlYWR5IHNvZnQtcmVzZXQgdGhpcyBwb3J0ICovCkBAIC0zNTAsNyArMzUwLDggQEAKIAlBVEFQSV9SRUFECQk9IDAsCQkvKiBSRUFEcyAqLwogCUFUQVBJX1dSSVRFCQk9IDEsCQkvKiBXUklURXMgKi8KIAlBVEFQSV9SRUFEX0NECQk9IDIsCQkvKiBSRUFEIENEIFtNU0ZdICovCi0JQVRBUElfTUlTQwkJPSAzLAkJLyogdGhlIHJlc3QgKi8KKwlBVEFQSV9QQVNTX1RIUlUJCT0gMywJCS8qIFNBVCBwYXNzLXRocnUgKi8KKwlBVEFQSV9NSVNDCQk9IDQsCQkvKiB0aGUgcmVzdCAqLwogfTsKIAogZW51bSBhdGFfeGZlcl9tYXNrIHsKQEAgLTQ2Myw2ICs0NjQsNyBAQAogCXVuc2lnbmVkIGludAkJc2VjdF9zaXplOwogCiAJdW5zaWduZWQgaW50CQluYnl0ZXM7CisJdW5zaWduZWQgaW50CQlleHRyYWJ5dGVzOwogCXVuc2lnbmVkIGludAkJY3VyYnl0ZXM7CiAKIAlzdHJ1Y3Qgc2NhdHRlcmxpc3QJKmN1cnNnOwpAQCAtODQ4LDYgKzg1MCw3IEBACiAgKi8KIGV4dGVybiB2b2lkIGF0YV90Zl9sb2FkKHN0cnVjdCBhdGFfcG9ydCAqYXAsIGNvbnN0IHN0cnVjdCBhdGFfdGFza2ZpbGUgKnRmKTsKIGV4dGVybiB2b2lkIGF0YV90Zl9yZWFkKHN0cnVjdCBhdGFfcG9ydCAqYXAsIHN0cnVjdCBhdGFfdGFza2ZpbGUgKnRmKTsKK2V4dGVybiBpbnQgYXRhcGlfY21kX3R5cGUodTggb3Bjb2RlKTsKIGV4dGVybiB2b2lkIGF0YV90Zl90b19maXMoY29uc3Qgc3RydWN0IGF0YV90YXNrZmlsZSAqdGYsCiAJCQkgIHU4IHBtcCwgaW50IGlzX2NtZCwgdTggKmZpcyk7CiBleHRlcm4gdm9pZCBhdGFfdGZfZnJvbV9maXMoY29uc3QgdTggKmZpcywgc3RydWN0IGF0YV90YXNrZmlsZSAqdGYpOwpAQCAtMTMzNiw2ICsxMzM5LDExIEBACiAJcmV0dXJuIE5VTEw7CiB9CiAKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGF0YV9xY19yYXdfbmJ5dGVzKHN0cnVjdCBhdGFfcXVldWVkX2NtZCAqcWMpCit7CisJcmV0dXJuIHFjLT5uYnl0ZXMgLSBtaW4ocWMtPmV4dHJhYnl0ZXMsIHFjLT5uYnl0ZXMpOworfQorCiBzdGF0aWMgaW5saW5lIHZvaWQgYXRhX3RmX2luaXQoc3RydWN0IGF0YV9kZXZpY2UgKmRldiwgc3RydWN0IGF0YV90YXNrZmlsZSAqdGYpCiB7CiAJbWVtc2V0KHRmLCAwLCBzaXplb2YoKnRmKSk7CkBAIC0xMzU0LDcgKzEzNjIsNyBAQAogCXFjLT5mbGFncyA9IDA7CiAJcWMtPmN1cnNnID0gTlVMTDsKIAlxYy0+Y3Vyc2dfb2ZzID0gMDsKLQlxYy0+bmJ5dGVzID0gcWMtPmN1cmJ5dGVzID0gMDsKKwlxYy0+bmJ5dGVzID0gcWMtPmV4dHJhYnl0ZXMgPSBxYy0+Y3VyYnl0ZXMgPSAwOwogCXFjLT5uX2VsZW0gPSAwOwogCXFjLT5lcnJfbWFzayA9IDA7CiAJcWMtPnNlY3Rfc2l6ZSA9IEFUQV9TRUNUX1NJWkU7CkBAIC0xMzczLDI3ICsxMzgxLDYgQEAKIAkgICAgICAgYXRhX2lkX2hhc19mbHVzaF9leHQoZGV2LT5pZCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgaW50IGF0YXBpX2NtZF90eXBlKHU4IG9wY29kZSkKLXsKLQlzd2l0Y2ggKG9wY29kZSkgewotCWNhc2UgR1BDTURfUkVBRF8xMDoKLQljYXNlIEdQQ01EX1JFQURfMTI6Ci0JCXJldHVybiBBVEFQSV9SRUFEOwotCi0JY2FzZSBHUENNRF9XUklURV8xMDoKLQljYXNlIEdQQ01EX1dSSVRFXzEyOgotCWNhc2UgR1BDTURfV1JJVEVfQU5EX1ZFUklGWV8xMDoKLQkJcmV0dXJuIEFUQVBJX1dSSVRFOwotCi0JY2FzZSBHUENNRF9SRUFEX0NEOgotCWNhc2UgR1BDTURfUkVBRF9DRF9NU0Y6Ci0JCXJldHVybiBBVEFQSV9SRUFEX0NEOwotCi0JZGVmYXVsdDoKLQkJcmV0dXJuIEFUQVBJX01JU0M7Ci0JfQotfQotCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBhY19lcnJfbWFzayh1OCBzdGF0dXMpCiB7CiAJaWYgKHN0YXR1cyAmIChBVEFfQlVTWSB8IEFUQV9EUlEpKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9saW5rYWdlLmggYi9pbmNsdWRlL2xpbnV4L2xpbmthZ2UuaAppbmRleCAwNTkyOTM2Li4yMTE5NjEwIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2xpbmthZ2UuaAorKysgYi9pbmNsdWRlL2xpbnV4L2xpbmthZ2UuaApAQCAtMTcsOCArMTcsMjQgQEAKICMgZGVmaW5lIGFzbXJlZ3Bhcm0KICNlbmRpZgogCi0jaWZuZGVmIHByZXZlbnRfdGFpbF9jYWxsCi0jIGRlZmluZSBwcmV2ZW50X3RhaWxfY2FsbChyZXQpIGRvIHsgfSB3aGlsZSAoMCkKKy8qCisgKiBUaGlzIGlzIHVzZWQgYnkgYXJjaGl0ZWN0dXJlcyB0byBrZWVwIGFyZ3VtZW50cyBvbiB0aGUgc3RhY2sKKyAqIHVudG91Y2hlZCBieSB0aGUgY29tcGlsZXIgYnkga2VlcGluZyB0aGVtIGxpdmUgdW50aWwgdGhlIGVuZC4KKyAqIFRoZSBhcmd1bWVudCBzdGFjayBtYXkgYmUgb3duZWQgYnkgdGhlIGFzc2VtYmx5LWxhbmd1YWdlCisgKiBjYWxsZXIsIG5vdCB0aGUgY2FsbGVlLCBhbmQgZ2NjIGRvZXNuJ3QgYWx3YXlzIHVuZGVyc3RhbmQKKyAqIHRoYXQuCisgKgorICogV2UgaGF2ZSB0aGUgcmV0dXJuIHZhbHVlLCBhbmQgYSBtYXhpbXVtIG9mIHNpeCBhcmd1bWVudHMuCisgKgorICogVGhpcyBzaG91bGQgYWx3YXlzIGJlIGZvbGxvd2VkIGJ5IGEgInJldHVybiByZXQiIGZvciB0aGUKKyAqIHByb3RlY3Rpb24gdG8gd29yayAoaWUgbm8gbW9yZSB3b3JrIHRoYXQgdGhlIGNvbXBpbGVyIG1pZ2h0CisgKiBlbmQgdXAgbmVlZGluZyBzdGFjayB0ZW1wb3JhcmllcyBmb3IpLgorICovCisvKiBBc3NlbWJseSBmaWxlcyBtYXkgYmUgY29tcGlsZWQgd2l0aCAtdHJhZGl0aW9uYWwgLi4gKi8KKyNpZm5kZWYgX19BU1NFTUJMWV9fCisjaWZuZGVmIGFzbWxpbmthZ2VfcHJvdGVjdAorIyBkZWZpbmUgYXNtbGlua2FnZV9wcm90ZWN0KG4sIHJldCwgYXJncy4uLikJZG8geyB9IHdoaWxlICgwKQorI2VuZGlmCiAjZW5kaWYKIAogI2lmbmRlZiBfX0FMSUdOCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21iY2FjaGUuaCBiL2luY2x1ZGUvbGludXgvbWJjYWNoZS5oCmluZGV4IDk5ZTA0NGIuLmEwOWI4NGUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbWJjYWNoZS5oCisrKyBiL2luY2x1ZGUvbGludXgvbWJjYWNoZS5oCkBAIC0zNCw3ICszNCw3IEBACiAKIC8qIEZ1bmN0aW9ucyBvbiBjYWNoZSBlbnRyaWVzICovCiAKLXN0cnVjdCBtYl9jYWNoZV9lbnRyeSAqbWJfY2FjaGVfZW50cnlfYWxsb2Moc3RydWN0IG1iX2NhY2hlICopOworc3RydWN0IG1iX2NhY2hlX2VudHJ5ICptYl9jYWNoZV9lbnRyeV9hbGxvYyhzdHJ1Y3QgbWJfY2FjaGUgKiwgZ2ZwX3QpOwogaW50IG1iX2NhY2hlX2VudHJ5X2luc2VydChzdHJ1Y3QgbWJfY2FjaGVfZW50cnkgKiwgc3RydWN0IGJsb2NrX2RldmljZSAqLAogCQkJICBzZWN0b3JfdCwgdW5zaWduZWQgaW50W10pOwogdm9pZCBtYl9jYWNoZV9lbnRyeV9yZWxlYXNlKHN0cnVjdCBtYl9jYWNoZV9lbnRyeSAqKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbWVtc3RpY2suaCBiL2luY2x1ZGUvbGludXgvbWVtc3RpY2suaAppbmRleCBiN2VlMjU4Li4zZTY4NmVjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L21lbXN0aWNrLmgKKysrIGIvaW5jbHVkZS9saW51eC9tZW1zdGljay5oCkBAIC0yMzksNyArMjM5LDYgQEAKIAl1bnNpZ25lZCBjaGFyIHRwYzsKIAl1bnNpZ25lZCBjaGFyIGRhdGFfZGlyOjEsCiAJCSAgICAgIG5lZWRfY2FyZF9pbnQ6MSwKLQkJICAgICAgZ2V0X2ludF9yZWc6MSwKIAkJICAgICAgbG9uZ19kYXRhOjE7CiAJdW5zaWduZWQgY2hhciBpbnRfcmVnOwogCWludCAgICAgICAgICAgZXJyb3I7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21tLmggYi9pbmNsdWRlL2xpbnV4L21tLmgKaW5kZXggM2YzY2NmZS4uYjY5NTg3NSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9tbS5oCisrKyBiL2luY2x1ZGUvbGludXgvbW0uaApAQCAtMjM1LDE1ICsyMzUsMjIgQEAKIHN0cnVjdCBwYWdlICp2bWFsbG9jX3RvX3BhZ2UoY29uc3Qgdm9pZCAqYWRkcik7CiB1bnNpZ25lZCBsb25nIHZtYWxsb2NfdG9fcGZuKGNvbnN0IHZvaWQgKmFkZHIpOwogCi0jaWZkZWYgQ09ORklHX01NVQotLyogRGV0ZXJtaW5lIGlmIGFuIGFkZHJlc3MgaXMgd2l0aGluIHRoZSB2bWFsbG9jIHJhbmdlICovCisvKgorICogRGV0ZXJtaW5lIGlmIGFuIGFkZHJlc3MgaXMgd2l0aGluIHRoZSB2bWFsbG9jIHJhbmdlCisgKgorICogT24gbm9tbXUsIHZtYWxsb2MvdmZyZWUgd3JhcCB0aHJvdWdoIGttYWxsb2Mva2ZyZWUgZGlyZWN0bHksIHNvIHRoZXJlCisgKiBpcyBubyBzcGVjaWFsIGNhc2luZyByZXF1aXJlZC4KKyAqLwogc3RhdGljIGlubGluZSBpbnQgaXNfdm1hbGxvY19hZGRyKGNvbnN0IHZvaWQgKngpCiB7CisjaWZkZWYgQ09ORklHX01NVQogCXVuc2lnbmVkIGxvbmcgYWRkciA9ICh1bnNpZ25lZCBsb25nKXg7CiAKIAlyZXR1cm4gYWRkciA+PSBWTUFMTE9DX1NUQVJUICYmIGFkZHIgPCBWTUFMTE9DX0VORDsKLX0KKyNlbHNlCisJcmV0dXJuIDA7CiAjZW5kaWYKK30KIAogc3RhdGljIGlubGluZSBzdHJ1Y3QgcGFnZSAqY29tcG91bmRfaGVhZChzdHJ1Y3QgcGFnZSAqcGFnZSkKIHsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW91bnQuaCBiL2luY2x1ZGUvbGludXgvbW91bnQuaAppbmRleCA2ZDMwNDdkLi41ZWUyZGYyIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L21vdW50LmgKKysrIGIvaW5jbHVkZS9saW51eC9tb3VudC5oCkBAIC02MSw2ICs2MSw3IEBACiAJYXRvbWljX3QgbW50X2NvdW50OwogCWludCBtbnRfZXhwaXJ5X21hcms7CQkvKiB0cnVlIGlmIG1hcmtlZCBmb3IgZXhwaXJ5ICovCiAJaW50IG1udF9waW5uZWQ7CisJaW50IG1udF9naG9zdHM7CiB9OwogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCB2ZnNtb3VudCAqbW50Z2V0KHN0cnVjdCB2ZnNtb3VudCAqbW50KQpAQCAtOTgsNyArOTksNiBAQAogCQkJaW50IG1udF9mbGFncywgc3RydWN0IGxpc3RfaGVhZCAqZnNsaXN0KTsKIAogZXh0ZXJuIHZvaWQgbWFya19tb3VudHNfZm9yX2V4cGlyeShzdHJ1Y3QgbGlzdF9oZWFkICptb3VudHMpOwotZXh0ZXJuIHZvaWQgc2hyaW5rX3N1Ym1vdW50cyhzdHJ1Y3QgdmZzbW91bnQgKm1vdW50cG9pbnQsIHN0cnVjdCBsaXN0X2hlYWQgKm1vdW50cyk7CiAKIGV4dGVybiBzcGlubG9ja190IHZmc21vdW50X2xvY2s7CiBleHRlcm4gZGV2X3QgbmFtZV90b19kZXZfdChjaGFyICpuYW1lKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmggYi9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oCmluZGV4IGEyZjAwMzIuLmVlODE5MDYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgKKysrIGIvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaApAQCAtMzgzLDkgKzM4MywxMSBAQAogCiBzdGF0aWMgaW5saW5lIHZvaWQgbmFwaV9jb21wbGV0ZShzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm4pCiB7Ci0JbG9jYWxfaXJxX2Rpc2FibGUoKTsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJbG9jYWxfaXJxX3NhdmUoZmxhZ3MpOwogCV9fbmFwaV9jb21wbGV0ZShuKTsKLQlsb2NhbF9pcnFfZW5hYmxlKCk7CisJbG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOwogfQogCiAvKioKQEAgLTEwNzIsMTIgKzEwNzQsMTQgQEAKIH0KIAogLyogVXNlIHRoaXMgdmFyaWFudCB3aGVuIGl0IGlzIGtub3duIGZvciBzdXJlIHRoYXQgaXQKLSAqIGlzIGV4ZWN1dGluZyBmcm9tIGludGVycnVwdCBjb250ZXh0LgorICogaXMgZXhlY3V0aW5nIGZyb20gaGFyZHdhcmUgaW50ZXJydXB0IGNvbnRleHQgb3Igd2l0aCBoYXJkd2FyZSBpbnRlcnJ1cHRzCisgKiBkaXNhYmxlZC4KICAqLwogZXh0ZXJuIHZvaWQgZGV2X2tmcmVlX3NrYl9pcnEoc3RydWN0IHNrX2J1ZmYgKnNrYik7CiAKIC8qIFVzZSB0aGlzIHZhcmlhbnQgaW4gcGxhY2VzIHdoZXJlIGl0IGNvdWxkIGJlIGludm9rZWQKLSAqIGVpdGhlciBmcm9tIGludGVycnVwdCBvciBub24taW50ZXJydXB0IGNvbnRleHQuCisgKiBmcm9tIGVpdGhlciBoYXJkd2FyZSBpbnRlcnJ1cHQgb3Igb3RoZXIgY29udGV4dCwgd2l0aCBoYXJkd2FyZSBpbnRlcnJ1cHRzCisgKiBlaXRoZXIgZGlzYWJsZWQgb3IgZW5hYmxlZC4KICAqLwogZXh0ZXJuIHZvaWQgZGV2X2tmcmVlX3NrYl9hbnkoc3RydWN0IHNrX2J1ZmYgKnNrYik7CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mbmV0bGlua19jb21wYXQuaCBiL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mbmV0bGlua19jb21wYXQuaAppbmRleCAwMmE0MmQ4Li5lMTQ1MTc2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZm5ldGxpbmtfY29tcGF0LmgKKysrIGIvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2NvbXBhdC5oCkBAIC0xLDYgKzEsNiBAQAogI2lmbmRlZiBfTkZORVRMSU5LX0NPTVBBVF9ICiAjZGVmaW5lIF9ORk5FVExJTktfQ09NUEFUX0gKLSNpZm5kZWYgX19LRVJORUwKKyNpZm5kZWYgX19LRVJORUxfXwogLyogT2xkIG5mbmV0bGluayBtYWNyb3MgZm9yIHVzZXJzcGFjZSAqLwogCiAvKiBuZm5ldGxpbmsgZ3JvdXBzOiBVcCB0byAzMiBtYXhpbXVtICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BjaS5oIGIvaW5jbHVkZS9saW51eC9wY2kuaAppbmRleCAzOGVmZjE5Li5lYTc2MGU1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3BjaS5oCisrKyBiL2luY2x1ZGUvbGludXgvcGNpLmgKQEAgLTI3OCw2ICsyNzgsNyBAQAogCXN0cnVjdCBkZXZpY2UJCWRldjsKIAlzdHJ1Y3QgYmluX2F0dHJpYnV0ZQkqbGVnYWN5X2lvOyAvKiBsZWdhY3kgSS9PIGZvciB0aGlzIGJ1cyAqLwogCXN0cnVjdCBiaW5fYXR0cmlidXRlCSpsZWdhY3lfbWVtOyAvKiBsZWdhY3kgbWVtICovCisJdW5zaWduZWQgaW50CQlpc19hZGRlZDoxOwogfTsKIAogI2RlZmluZSBwY2lfYnVzX2IobikJbGlzdF9lbnRyeShuLCBzdHJ1Y3QgcGNpX2J1cywgbm9kZSkKQEAgLTUxMiw3ICs1MTMsNiBAQAogaW50IHBjaV9maW5kX2V4dF9jYXBhYmlsaXR5KHN0cnVjdCBwY2lfZGV2ICpkZXYsIGludCBjYXApOwogaW50IHBjaV9maW5kX2h0X2NhcGFiaWxpdHkoc3RydWN0IHBjaV9kZXYgKmRldiwgaW50IGh0X2NhcCk7CiBpbnQgcGNpX2ZpbmRfbmV4dF9odF9jYXBhYmlsaXR5KHN0cnVjdCBwY2lfZGV2ICpkZXYsIGludCBwb3MsIGludCBodF9jYXApOwotdm9pZCBwY2llX3dhaXRfcGVuZGluZ190cmFuc2FjdGlvbihzdHJ1Y3QgcGNpX2RldiAqZGV2KTsKIHN0cnVjdCBwY2lfYnVzICpwY2lfZmluZF9uZXh0X2J1cyhjb25zdCBzdHJ1Y3QgcGNpX2J1cyAqZnJvbSk7CiAKIHN0cnVjdCBwY2lfZGV2ICpwY2lfZ2V0X2RldmljZSh1bnNpZ25lZCBpbnQgdmVuZG9yLCB1bnNpZ25lZCBpbnQgZGV2aWNlLApAQCAtODgzLDkgKzg4Myw2IEBACiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBwY2llX3dhaXRfcGVuZGluZ190cmFuc2FjdGlvbihzdHJ1Y3QgcGNpX2RldiAqZGV2KQoteyB9Ci0KIC8qIFBvd2VyIG1hbmFnZW1lbnQgcmVsYXRlZCByb3V0aW5lcyAqLwogc3RhdGljIGlubGluZSBpbnQgcGNpX3NhdmVfc3RhdGUoc3RydWN0IHBjaV9kZXYgKmRldikKIHsKQEAgLTEwNDQsNiArMTA0MSw4IEBACiB2b2lkIHBjaW1faW91bm1hcChzdHJ1Y3QgcGNpX2RldiAqcGRldiwgdm9pZCBfX2lvbWVtICphZGRyKTsKIHZvaWQgX19pb21lbSAqIGNvbnN0ICpwY2ltX2lvbWFwX3RhYmxlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KTsKIGludCBwY2ltX2lvbWFwX3JlZ2lvbnMoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHUxNiBtYXNrLCBjb25zdCBjaGFyICpuYW1lKTsKK2ludCBwY2ltX2lvbWFwX3JlZ2lvbnNfcmVxdWVzdF9hbGwoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHUxNiBtYXNrLAorCQkJCSAgIGNvbnN0IGNoYXIgKm5hbWUpOwogdm9pZCBwY2ltX2lvdW5tYXBfcmVnaW9ucyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgdTE2IG1hc2spOwogCiBleHRlcm4gaW50IHBjaV9wY2lfcHJvYmxlbXM7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BrdF9jbHMuaCBiL2luY2x1ZGUvbGludXgvcGt0X2Nscy5oCmluZGV4IDI4ZGZjNjEuLjk5ZWZiZWQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvcGt0X2Nscy5oCisrKyBiL2luY2x1ZGUvbGludXgvcGt0X2Nscy5oCkBAIC0yMDEsOCArMjAxLDggQEAKIAogc3RydWN0IHRjX3UzMl9rZXkKIHsKLQlfX3UzMgkJbWFzazsKLQlfX3UzMgkJdmFsOworCV9fYmUzMgkJbWFzazsKKwlfX2JlMzIJCXZhbDsKIAlpbnQJCW9mZjsKIAlpbnQJCW9mZm1hc2s7CiB9OwpAQCAtMjEzLDEyICsyMTMsMTIgQEAKIAl1bnNpZ25lZCBjaGFyCQlvZmZzaGlmdDsKIAl1bnNpZ25lZCBjaGFyCQlua2V5czsKIAotCV9fdTE2CQkJb2ZmbWFzazsKKwlfX2JlMTYJCQlvZmZtYXNrOwogCV9fdTE2CQkJb2ZmOwogCXNob3J0CQkJb2Zmb2ZmOwogCiAJc2hvcnQJCQlob2ZmOwotCV9fdTMyCQkJaG1hc2s7CisJX19iZTMyCQkJaG1hc2s7CiAJc3RydWN0IHRjX3UzMl9rZXkJa2V5c1swXTsKIH07CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcG11LmggYi9pbmNsdWRlL2xpbnV4L3BtdS5oCmluZGV4IDRjNWY2NTMuLmNhZmU5OGQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvcG11LmgKKysrIGIvaW5jbHVkZS9saW51eC9wbXUuaApAQCAtMTQ3LDggKzE0NywxNSBAQAogLyogRm9yIHVzZSBiZWZvcmUgc3dpdGNoaW5nIGludGVycnVwdHMgb2ZmIGZvciBhIGxvbmcgdGltZTsKICAqIHdhcm5pbmc6IG5vdCBzdGFja2FibGUKICAqLworI2lmIGRlZmluZWQoQ09ORklHX0FEQl9QTVUpCiBleHRlcm4gdm9pZCBwbXVfc3VzcGVuZCh2b2lkKTsKIGV4dGVybiB2b2lkIHBtdV9yZXN1bWUodm9pZCk7CisjZWxzZQorc3RhdGljIGlubGluZSB2b2lkIHBtdV9zdXNwZW5kKHZvaWQpCit7fQorc3RhdGljIGlubGluZSB2b2lkIHBtdV9yZXN1bWUodm9pZCkKK3t9CisjZW5kaWYKIAogZXh0ZXJuIHZvaWQgcG11X2VuYWJsZV9pcmxlZChpbnQgb24pOwogCkBAIC0xOTIsNyArMTk5LDcgQEAKIGV4dGVybiB2b2lkIHBtdV9iYWNrbGlnaHRfaW5pdCh2b2lkKTsKIAogLyogc29tZSBjb2RlIG5lZWRzIHRvIGtub3cgaWYgdGhlIFBNVSB3YXMgc3VzcGVuZGVkIGZvciBoaWJlcm5hdGlvbiAqLwotI2lmIGRlZmluZWQoQ09ORklHX1BNX1NMRUVQKSAmJiBkZWZpbmVkKENPTkZJR19QUEMzMikKKyNpZiBkZWZpbmVkKENPTkZJR19TVVNQRU5EKSAmJiBkZWZpbmVkKENPTkZJR19QUEMzMikKIGV4dGVybiBpbnQgcG11X3N5c19zdXNwZW5kZWQ7CiAjZWxzZQogLyogaWYgcG93ZXIgbWFuYWdlbWVudCBpcyBub3QgY29uZmlndXJlZCBpdCBjYW4ndCBiZSBzdXNwZW5kZWQgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcG5wLmggYi9pbmNsdWRlL2xpbnV4L3BucC5oCmluZGV4IGNkNjMzMmIuLmIyZjA1YzIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvcG5wLmgKKysrIGIvaW5jbHVkZS9saW51eC9wbnAuaApAQCAtMTQsNyArMTQsNyBAQAogI2luY2x1ZGUgPGxpbnV4L21vZF9kZXZpY2V0YWJsZS5oPgogCiAjZGVmaW5lIFBOUF9NQVhfUE9SVAkJNDAKLSNkZWZpbmUgUE5QX01BWF9NRU0JCTEyCisjZGVmaW5lIFBOUF9NQVhfTUVNCQkyNAogI2RlZmluZSBQTlBfTUFYX0lSUQkJMgogI2RlZmluZSBQTlBfTUFYX0RNQQkJMgogI2RlZmluZSBQTlBfTkFNRV9MRU4JCTUwCkBAIC0xNzUsNyArMTc1LDcgQEAKIHN0cnVjdCBwbnBfZGV2IHsKIAlzdHJ1Y3QgZGV2aWNlIGRldjsJCS8qIERyaXZlciBNb2RlbCBkZXZpY2UgaW50ZXJmYWNlICovCiAJdTY0IGRtYV9tYXNrOwotCXVuc2lnbmVkIGNoYXIgbnVtYmVyOwkJLyogdXNlZCBhcyBhbiBpbmRleCwgbXVzdCBiZSB1bmlxdWUgKi8KKwl1bnNpZ25lZCBpbnQgbnVtYmVyOwkJLyogdXNlZCBhcyBhbiBpbmRleCwgbXVzdCBiZSB1bmlxdWUgKi8KIAlpbnQgc3RhdHVzOwogCiAJc3RydWN0IGxpc3RfaGVhZCBnbG9iYWxfbGlzdDsJLyogbm9kZSBpbiBnbG9iYWwgbGlzdCBvZiBkZXZpY2VzICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3Byb2NfZnMuaCBiL2luY2x1ZGUvbGludXgvcHJvY19mcy5oCmluZGV4IGQ5YTllNzEuLjliNmM5MzUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvcHJvY19mcy5oCisrKyBiL2luY2x1ZGUvbGludXgvcHJvY19mcy5oCkBAIC01MCw4ICs1MCw2IEBACiB0eXBlZGVmCWludCAod3JpdGVfcHJvY190KShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKmJ1ZmZlciwKIAkJCSAgIHVuc2lnbmVkIGxvbmcgY291bnQsIHZvaWQgKmRhdGEpOwogdHlwZWRlZiBpbnQgKGdldF9pbmZvX3QpKGNoYXIgKiwgY2hhciAqKiwgb2ZmX3QsIGludCk7Ci10eXBlZGVmIHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqKHNoYWRvd19wcm9jX3QpKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywKLQkJCQkJCXN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqcGRlKTsKIAogc3RydWN0IHByb2NfZGlyX2VudHJ5IHsKIAl1bnNpZ25lZCBpbnQgbG93X2lubzsKQEAgLTgyLDcgKzgwLDYgQEAKIAlpbnQgcGRlX3VzZXJzOwkvKiBudW1iZXIgb2YgY2FsbGVycyBpbnRvIG1vZHVsZSBpbiBwcm9ncmVzcyAqLwogCXNwaW5sb2NrX3QgcGRlX3VubG9hZF9sb2NrOyAvKiBwcm9jX2ZvcHMgY2hlY2tzIGFuZCBwZGVfdXNlcnMgYnVtcHMgKi8KIAlzdHJ1Y3QgY29tcGxldGlvbiAqcGRlX3VubG9hZF9jb21wbGV0aW9uOwotCXNoYWRvd19wcm9jX3QgKnNoYWRvd19wcm9jOwogfTsKIAogc3RydWN0IGtjb3JlX2xpc3QgewpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wczJlc2RpLmggYi9pbmNsdWRlL2xpbnV4L3BzMmVzZGkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzBlMDUwYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL2xpbnV4L3BzMmVzZGkuaAorKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLSNpZm5kZWYgX1BTMkVTRElfSF8KLSNkZWZpbmUgX1BTMkVTRElfSF8KLQotI2RlZmluZSBOUk1MX0VTRElfSUQgMHhkZGZmCi0jZGVmaW5lIElOVEdfRVNESV9JRCAweGRmOWYKLQotI2RlZmluZSBQUklNQVJZX0lPX0JBU0UgMHgzNTEwCi0jZGVmaW5lIEFMVF9JT19CQVNFIDB4MzUxOAotCi0jZGVmaW5lIEVTRElfQ01EX0lOVCAoaW9fYmFzZSswKQotI2RlZmluZSBFU0RJX1NUVF9JTlQgKGlvX2Jhc2UrMCkKLSNkZWZpbmUgRVNESV9DT05UUk9MIChpb19iYXNlKzIpCi0jZGVmaW5lIEVTRElfU1RBVFVTICAoaW9fYmFzZSsyKQotI2RlZmluZSBFU0RJX0FUVE4gICAgKGlvX2Jhc2UrMykKLSNkZWZpbmUgRVNESV9JTlRSUFQgIChpb19iYXNlKzMpCi0KLSNkZWZpbmUgU1RBVFVTX0VOQUJMRUQgICAgMHgwMQotI2RlZmluZSBTVEFUVVNfQUxURVJOQVRFICAweDAyCi0jZGVmaW5lIFNUQVRVU19CVVNZICAgICAgIDB4MTAKLSNkZWZpbmUgU1RBVFVTX1NUQVRfQVZBSUwgMHgwOAotI2RlZmluZSBTVEFUVVNfSU5UUiAgICAgICAweDAxCi0jZGVmaW5lIFNUQVRVU19SRVNFVF9GQUlMIDB4ZWEKLSNkZWZpbmUgU1RBVFVTX0NNRF9JTkYJICAweDA0Ci0KLSNkZWZpbmUgQ1RSTF9TT0ZUX1JFU0VUICAgMHhlNAotI2RlZmluZSBDVFJMX0hBUkRfUkVTRVQgICAweDgwCi0jZGVmaW5lIENUUkxfRU9JICAgICAgICAgIDB4ZTIKLSNkZWZpbmUgQ1RSTF9FTkFCTEVfRE1BICAgMHgwMgotI2RlZmluZSBDVFJMX0VOQUJMRV9JTlRSICAweDAxCi0jZGVmaW5lIENUUkxfRElTQUJMRV9JTlRSICAweDAwCi0KLSNkZWZpbmUgQVRUX0VPSSAweDAyCi0KLS8qIGJpdHMgb2Ygd29yZCAwIG9mIGNvbmZpZ3VyYXRpb24gc3RhdHVzIGJsb2NrLiBtb3JlIGluZm8gc2VlIHAuMzggb2YgdGVjaCByZWYgKi8KLSNkZWZpbmUgQ09ORklHX0lTIDB4MTAgLyogSW52YWxpZCBTZWNvbmRhcnkgKi8KLSNkZWZpbmUgQ09ORklHX1pEIDB4MDggLyogWmVybyBEZWZlY3QgKi8KLSNkZWZpbmUgQ09ORklHX1NGIDB4MDQgLyogU2tld2VkIEZvcm1hdCAqLwotI2RlZmluZSBDT05GSUdfRlIgMHgwMiAvKiBSZW1vdmFibGUgKi8KLSNkZWZpbmUgQ09ORklHX1JUIDB4MDEgLyogUmV0cmllcyAqLwotCi0jZGVmaW5lIFBPUlRfU1lTX0EgICAweDkyCi0jZGVmaW5lIFBPUlRfRE1BX0ZOICAweDE4Ci0jZGVmaW5lIFBPUlRfRE1BX0VYICAweDFhCi0KLSNkZWZpbmUgT04gKHVuc2lnbmVkIGNoYXIpMHg0MAotI2RlZmluZSBPRkYgKHVuc2lnbmVkIGNoYXIpfk9OCi0jZGVmaW5lIExJVEVfT04gb3V0YihpbmIoUE9SVF9TWVNfQSkgfCBPTixQT1JUX1NZU19BKQotI2RlZmluZSBMSVRFX09GRiBvdXRiKChpbmIoUE9SVF9TWVNfQSkgJiBPRkYpLFBPUlRfU1lTX0EpCi0KLSNkZWZpbmUgRkFJTCAwCi0jZGVmaW5lIFNVQ0NFUyAxCi0KLSNkZWZpbmUgSU5UX0NNRF9DT01QTEVURSAweDAxCi0jZGVmaW5lIElOVF9DTURfRUNDICAgICAgMHgwMwotI2RlZmluZSBJTlRfQ01EX1JFVFJZICAgIDB4MDUKLSNkZWZpbmUgSU5UX0NNRF9GT1JNQVQgICAweDA2Ci0jZGVmaW5lIElOVF9DTURfRUNDX1JFVFJZIDB4MDcKLSNkZWZpbmUgSU5UX0NNRF9XQVJOSU5HICAweDA4Ci0jZGVmaW5lIElOVF9DTURfQUJPUlQgICAgMHgwOQotI2RlZmluZSBJTlRfUkVTRVQgICAgICAgIDB4MEEKLSNkZWZpbmUgSU5UX1RSQU5TRkVSX1JFUSAweDBCCi0jZGVmaW5lIElOVF9DTURfRkFJTEVEICAgMHgwQwotI2RlZmluZSBJTlRfRE1BX0VSUiAgICAgIDB4MEQKLSNkZWZpbmUgSU5UX0NNRF9CTEtfRVJSICAweDBFCi0jZGVmaW5lIElOVF9BVFROX0VSUk9SICAgMHgwRgotCi0jZGVmaW5lIERNQV9NQVNLX0NIQU4gMHg5MAotI2RlZmluZSBETUFfVU5NQVNLX0NIQU4gMHhBMAotI2RlZmluZSBETUFfV1JJVEVfQUREUiAweDIwCi0jZGVmaW5lIERNQV9XUklURV9UQyAweDQwCi0jZGVmaW5lIERNQV9XUklURV9NT0RFIDB4NzAKLQotI2RlZmluZSBDTURfR0VUX0RFVl9DT05GSUcgMHgwOQotI2RlZmluZSBDTURfUkVBRCAweDQ2MDEKLSNkZWZpbmUgQ01EX1dSSVRFIDB4NDYwMgotI2RlZmluZSBETUFfUkVBRF8xNiAweDRDCi0jZGVmaW5lIERNQV9XUklURV8xNiAweDQ0Ci0KLQotI2RlZmluZSBNQiAxMDI0KjEwMjQKLSNkZWZpbmUgU0VDVF9TSVpFIDUxMiAgIAotCi0jZGVmaW5lIEVSUk9SIDEKLSNkZWZpbmUgT0sgMAotCi0jZGVmaW5lIEhESU9fR0VUR0VPIDB4MDMwMQotCi0jZGVmaW5lIEZBTFNFIDAKLSNkZWZpbmUgVFJVRSAhRkFMU0UKLQotc3RydWN0IHBzMmVzZGlfZ2VvbWV0cnkgewotCXVuc2lnbmVkIGNoYXIgaGVhZHM7Ci0JdW5zaWduZWQgY2hhciBzZWN0b3JzOwotCXVuc2lnbmVkIHNob3J0IGN5bGluZGVyczsKLQl1bnNpZ25lZCBsb25nIHN0YXJ0OwotfTsKLQotI2VuZGlmIC8qIF9QUzJFU0RJX0hfICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3JjdXByZWVtcHQuaCBiL2luY2x1ZGUvbGludXgvcmN1cHJlZW1wdC5oCmluZGV4IDAxMTUyZWQuLmQwMzhhYTYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvcmN1cHJlZW1wdC5oCisrKyBiL2luY2x1ZGUvbGludXgvcmN1cHJlZW1wdC5oCkBAIC04NywxNSArODcsMTUgQEAKIAogc3RhdGljIGlubGluZSB2b2lkIHJjdV9lbnRlcl9ub2h6KHZvaWQpCiB7CisJc21wX21iKCk7IC8qIENQVXMgc2VlaW5nICsrIG11c3Qgc2VlIHByaW9yIFJDVSByZWFkLXNpZGUgY3JpdCBzZWN0cyAqLwogCV9fZ2V0X2NwdV92YXIoZHludGlja3NfcHJvZ3Jlc3NfY291bnRlcikrKzsKIAlXQVJOX09OKF9fZ2V0X2NwdV92YXIoZHludGlja3NfcHJvZ3Jlc3NfY291bnRlcikgJiAweDEpOwotCW1iKCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCByY3VfZXhpdF9ub2h6KHZvaWQpCiB7Ci0JbWIoKTsKIAlfX2dldF9jcHVfdmFyKGR5bnRpY2tzX3Byb2dyZXNzX2NvdW50ZXIpKys7CisJc21wX21iKCk7IC8qIENQVXMgc2VlaW5nICsrIG11c3Qgc2VlIGxhdGVyIFJDVSByZWFkLXNpZGUgY3JpdCBzZWN0cyAqLwogCVdBUk5fT04oIShfX2dldF9jcHVfdmFyKGR5bnRpY2tzX3Byb2dyZXNzX2NvdW50ZXIpICYgMHgxKSk7CiB9CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2NoZWQuaCBiL2luY2x1ZGUvbGludXgvc2NoZWQuaAppbmRleCAxMWQ4ZTlhLi42YTFlN2FmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3NjaGVkLmgKKysrIGIvaW5jbHVkZS9saW51eC9zY2hlZC5oCkBAIC03OTAsNiArNzkwLDcgQEAKIH07CiAKIGV4dGVybiB2b2lkIHBhcnRpdGlvbl9zY2hlZF9kb21haW5zKGludCBuZG9tc19uZXcsIGNwdW1hc2tfdCAqZG9tc19uZXcpOworZXh0ZXJuIGludCBhcmNoX3JlaW5pdF9zY2hlZF9kb21haW5zKHZvaWQpOwogCiAjZW5kaWYJLyogQ09ORklHX1NNUCAqLwogCkBAIC05MjksNiArOTMwLDkgQEAKIAl1NjQJCQl2cnVudGltZTsKIAl1NjQJCQlwcmV2X3N1bV9leGVjX3J1bnRpbWU7CiAKKwl1NjQJCQlsYXN0X3dha2V1cDsKKwl1NjQJCQlhdmdfb3ZlcmxhcDsKKwogI2lmZGVmIENPTkZJR19TQ0hFRFNUQVRTCiAJdTY0CQkJd2FpdF9zdGFydDsKIAl1NjQJCQl3YWl0X21heDsKQEAgLTE1MzcsNiArMTU0MSwxMiBAQAogCiBleHRlcm4gdm9pZCBzY2hlZF9pZGxlX25leHQodm9pZCk7CiAKKyNpZiBkZWZpbmVkKENPTkZJR19OT19IWikgJiYgZGVmaW5lZChDT05GSUdfU01QKQorZXh0ZXJuIHZvaWQgd2FrZV91cF9pZGxlX2NwdShpbnQgY3B1KTsKKyNlbHNlCitzdGF0aWMgaW5saW5lIHZvaWQgd2FrZV91cF9pZGxlX2NwdShpbnQgY3B1KSB7IH0KKyNlbmRpZgorCiAjaWZkZWYgQ09ORklHX1NDSEVEX0RFQlVHCiBleHRlcm4gdW5zaWduZWQgaW50IHN5c2N0bF9zY2hlZF9sYXRlbmN5OwogZXh0ZXJuIHVuc2lnbmVkIGludCBzeXNjdGxfc2NoZWRfbWluX2dyYW51bGFyaXR5OwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9zZWN1cml0eS5oIGIvaW5jbHVkZS9saW51eC9zZWN1cml0eS5oCmluZGV4IGIwNzM1N2MuLmM2NzNkZmQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvc2VjdXJpdHkuaAorKysgYi9pbmNsdWRlL2xpbnV4L3NlY3VyaXR5LmgKQEAgLTU3LDcgKzU3LDYgQEAKIGV4dGVybiBpbnQgY2FwX2lub2RlX2tpbGxwcml2KHN0cnVjdCBkZW50cnkgKmRlbnRyeSk7CiBleHRlcm4gaW50IGNhcF90YXNrX3Bvc3Rfc2V0dWlkICh1aWRfdCBvbGRfcnVpZCwgdWlkX3Qgb2xkX2V1aWQsIHVpZF90IG9sZF9zdWlkLCBpbnQgZmxhZ3MpOwogZXh0ZXJuIHZvaWQgY2FwX3Rhc2tfcmVwYXJlbnRfdG9faW5pdCAoc3RydWN0IHRhc2tfc3RydWN0ICpwKTsKLWV4dGVybiBpbnQgY2FwX3Rhc2tfa2lsbChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIHN0cnVjdCBzaWdpbmZvICppbmZvLCBpbnQgc2lnLCB1MzIgc2VjaWQpOwogZXh0ZXJuIGludCBjYXBfdGFza19zZXRzY2hlZHVsZXIgKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgaW50IHBvbGljeSwgc3RydWN0IHNjaGVkX3BhcmFtICpscCk7CiBleHRlcm4gaW50IGNhcF90YXNrX3NldGlvcHJpbyAoc3RydWN0IHRhc2tfc3RydWN0ICpwLCBpbnQgaW9wcmlvKTsKIGV4dGVybiBpbnQgY2FwX3Rhc2tfc2V0bmljZSAoc3RydWN0IHRhc2tfc3RydWN0ICpwLCBpbnQgbmljZSk7CkBAIC0yMTg3LDcgKzIxODYsNyBAQAogCQkJCSAgICAgIHN0cnVjdCBzaWdpbmZvICppbmZvLCBpbnQgc2lnLAogCQkJCSAgICAgIHUzMiBzZWNpZCkKIHsKLQlyZXR1cm4gY2FwX3Rhc2tfa2lsbChwLCBpbmZvLCBzaWcsIHNlY2lkKTsKKwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGlubGluZSBpbnQgc2VjdXJpdHlfdGFza193YWl0IChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmggYi9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgKaW5kZXggNTc2YTVmNy4uMTEyOWVlMCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9zcGlubG9jay5oCisrKyBiL2luY2x1ZGUvbGludXgvc3BpbmxvY2suaApAQCAtMzQxLDYgKzM0MSw5IEBACiAgKiBhdG9taWNfZGVjX2FuZF9sb2NrIC0gbG9jayBvbiByZWFjaGluZyByZWZlcmVuY2UgY291bnQgemVybwogICogQGF0b21pYzogdGhlIGF0b21pYyBjb3VudGVyCiAgKiBAbG9jazogdGhlIHNwaW5sb2NrIGluIHF1ZXN0aW9uCisgKgorICogRGVjcmVtZW50cyBAYXRvbWljIGJ5IDEuICBJZiB0aGUgcmVzdWx0IGlzIDAsIHJldHVybnMgdHJ1ZSBhbmQgbG9ja3MKKyAqIEBsb2NrLiAgUmV0dXJucyBmYWxzZSBmb3IgYWxsIG90aGVyIGNhc2VzLgogICovCiBleHRlcm4gaW50IF9hdG9taWNfZGVjX2FuZF9sb2NrKGF0b21pY190ICphdG9taWMsIHNwaW5sb2NrX3QgKmxvY2spOwogI2RlZmluZSBhdG9taWNfZGVjX2FuZF9sb2NrKGF0b21pYywgbG9jaykgXApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9zc2Ivc3NiLmggYi9pbmNsdWRlL2xpbnV4L3NzYi9zc2IuaAppbmRleCAyMGFkZDY1Li5kYjUzZGVmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3NzYi9zc2IuaAorKysgYi9pbmNsdWRlL2xpbnV4L3NzYi9zc2IuaApAQCAtMTI5LDYgKzEyOSwxMCBAQAogCWNvbnN0IHN0cnVjdCBzc2JfYnVzX29wcyAqb3BzOwogCiAJc3RydWN0IGRldmljZSAqZGV2OworCS8qIFBvaW50ZXIgdG8gdGhlIGRldmljZSB0aGF0IGhhcyB0byBiZSB1c2VkIGZvcgorCSAqIGFueSBETUEgcmVsYXRlZCBvcGVyYXRpb24uICovCisJc3RydWN0IGRldmljZSAqZG1hX2RldjsKKwogCXN0cnVjdCBzc2JfYnVzICpidXM7CiAJc3RydWN0IHNzYl9kZXZpY2VfaWQgaWQ7CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdGhlcm1hbC5oIGIvaW5jbHVkZS9saW51eC90aGVybWFsLmgKaW5kZXggODE4Y2ExYy4uOTBjMWMxOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC90aGVybWFsLmgKKysrIGIvaW5jbHVkZS9saW51eC90aGVybWFsLmgKQEAgLTUwLDcgKzUwLDcgQEAKIH07CiAKICNkZWZpbmUgVEhFUk1BTF9UUklQU19OT05FIC0xCi0jZGVmaW5lIFRIRVJNQUxfTUFYX1RSSVBTIDEwCisjZGVmaW5lIFRIRVJNQUxfTUFYX1RSSVBTIDEyCiAjZGVmaW5lIFRIRVJNQUxfTkFNRV9MRU5HVEggMjAKIHN0cnVjdCB0aGVybWFsX2Nvb2xpbmdfZGV2aWNlIHsKIAlpbnQgaWQ7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3RvcG9sb2d5LmggYi9pbmNsdWRlL2xpbnV4L3RvcG9sb2d5LmgKaW5kZXggMjM1MmY0Ni4uYmQxNGY4YiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC90b3BvbG9neS5oCisrKyBiL2luY2x1ZGUvbGludXgvdG9wb2xvZ3kuaApAQCAtNTAsNiArNTAsOCBAQAogCWZvcl9lYWNoX29ubGluZV9ub2RlKG5vZGUpCQkJCQkJXAogCQlpZiAobnJfY3B1c19ub2RlKG5vZGUpKQogCit2b2lkIGFyY2hfdXBkYXRlX2NwdV90b3BvbG9neSh2b2lkKTsKKwogLyogQ29uZm9ybSB0byBBQ1BJIDIuMCBTTElUIGRpc3RhbmNlIGRlZmluaXRpb25zICovCiAjZGVmaW5lIExPQ0FMX0RJU1RBTkNFCQkxMAogI2RlZmluZSBSRU1PVEVfRElTVEFOQ0UJCTIwCkBAIC0xMzgsNyArMTQwLDYgQEAKIAkJCQl8IFNEX0JBTEFOQ0VfRk9SSwlcCiAJCQkJfCBTRF9CQUxBTkNFX0VYRUMJXAogCQkJCXwgU0RfV0FLRV9BRkZJTkUJXAotCQkJCXwgU0RfV0FLRV9JRExFCQlcCiAJCQkJfCBTRF9TSEFSRV9QS0dfUkVTT1VSQ0VTXAogCQkJCXwgQkFMQU5DRV9GT1JfTUNfUE9XRVIsCVwKIAkubGFzdF9iYWxhbmNlCQk9IGppZmZpZXMsCQlcCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3VzYi9xdWlya3MuaCBiL2luY2x1ZGUvbGludXgvdXNiL3F1aXJrcy5oCmluZGV4IDI2OTJlYzkuLjFmOTk5ZWMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvdXNiL3F1aXJrcy5oCisrKyBiL2luY2x1ZGUvbGludXgvdXNiL3F1aXJrcy5oCkBAIC05LDMgKzksNiBAQAogCiAvKiBkZXZpY2UgY2FuJ3QgcmVzdW1lIGNvcnJlY3RseSBzbyByZXNldCBpdCBpbnN0ZWFkICovCiAjZGVmaW5lIFVTQl9RVUlSS19SRVNFVF9SRVNVTUUJCTB4MDAwMDAwMDIKKworLyogZGV2aWNlIGNhbid0IGhhbmRsZSBTZXQtSW50ZXJmYWNlIHJlcXVlc3RzICovCisjZGVmaW5lIFVTQl9RVUlSS19OT19TRVRfSU5URgkJMHgwMDAwMDAwNApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC91c2JfdXN1YWwuaCBiL2luY2x1ZGUvbGludXgvdXNiX3VzdWFsLmgKaW5kZXggY2VlMDYyMy4uMGE0MGRmYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC91c2JfdXN1YWwuaAorKysgYi9pbmNsdWRlL2xpbnV4L3VzYl91c3VhbC5oCkBAIC01MCw3ICs1MCw5IEBACiAJVVNfRkxBRyhDQVBBQ0lUWV9IRVVSSVNUSUNTLAkweDAwMDAxMDAwKQkJXAogCQkvKiBzb21ldGltZXMgc2l6ZXMgaXMgdG9vIGJpZyAqLwkJXAogCVVTX0ZMQUcoTUFYX1NFQ1RPUlNfTUlOLDB4MDAwMDIwMDApCQkJXAotCQkvKiBTZXRzIG1heF9zZWN0b3JzIHRvIGFyY2ggbWluICovCisJCS8qIFNldHMgbWF4X3NlY3RvcnMgdG8gYXJjaCBtaW4gKi8JCVwKKwlVU19GTEFHKEJVTEtfSUdOT1JFX1RBRywweDAwMDA0MDAwKQkJCVwKKwkJLyogSWdub3JlIHRhZyBtaXNtYXRjaCBpbiBidWxrIG9wZXJhdGlvbnMgKi8KIAogCiAjZGVmaW5lIFVTX0ZMQUcobmFtZSwgdmFsdWUpCVVTX0ZMXyMjbmFtZSA9IHZhbHVlICwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdmlydGlvLmggYi9pbmNsdWRlL2xpbnV4L3ZpcnRpby5oCmluZGV4IDI2MGQxZmMuLmU3ZDEwODQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvdmlydGlvLmgKKysrIGIvaW5jbHVkZS9saW51eC92aXJ0aW8uaApAQCAtNDEsMTMgKzQxLDE3IEBACiAgKglSZXR1cm5zIE5VTEwgb3IgdGhlICJkYXRhIiB0b2tlbiBoYW5kZWQgdG8gYWRkX2J1Zi4KICAqIEBkaXNhYmxlX2NiOiBkaXNhYmxlIGNhbGxiYWNrcwogICoJdnE6IHRoZSBzdHJ1Y3QgdmlydHF1ZXVlIHdlJ3JlIHRhbGtpbmcgYWJvdXQuCisgKglOb3RlIHRoYXQgdGhpcyBpcyBub3QgbmVjZXNzYXJpbHkgc3luY2hyb25vdXMsIGhlbmNlIHVucmVsaWFibGUgYW5kIG9ubHkKKyAqCXVzZWZ1bCBhcyBhbiBvcHRpbWl6YXRpb24uCiAgKiBAZW5hYmxlX2NiOiByZXN0YXJ0IGNhbGxiYWNrcyBhZnRlciBkaXNhYmxlX2NiLgogICoJdnE6IHRoZSBzdHJ1Y3QgdmlydHF1ZXVlIHdlJ3JlIHRhbGtpbmcgYWJvdXQuCi0gKglUaGlzIHJldHVybnMgImZhbHNlIiAoYW5kIGRvZXNuJ3QgcmUtZW5hYmxlKSBpZiB0aGVyZSBhcmUgcGVuZGluZwotICoJYnVmZmVycyBpbiB0aGUgcXVldWUsIHRvIGF2b2lkIGEgcmFjZS4KKyAqCVRoaXMgcmUtZW5hYmxlcyBjYWxsYmFja3M7IGl0IHJldHVybnMgImZhbHNlIiBpZiB0aGVyZSBhcmUgcGVuZGluZworICoJYnVmZmVycyBpbiB0aGUgcXVldWUsIHRvIGRldGVjdCBhIHBvc3NpYmxlIHJhY2UgYmV0d2VlbiB0aGUgZHJpdmVyCisgKgljaGVja2luZyBmb3IgbW9yZSB3b3JrLCBhbmQgZW5hYmxpbmcgY2FsbGJhY2tzLgogICoKICAqIExvY2tpbmcgcnVsZXMgYXJlIHN0cmFpZ2h0Zm9yd2FyZDogdGhlIGRyaXZlciBpcyByZXNwb25zaWJsZSBmb3IKLSAqIGxvY2tpbmcuICBObyB0d28gb3BlcmF0aW9ucyBtYXkgYmUgaW52b2tlZCBzaW11bHRhbmVvdXNseS4KKyAqIGxvY2tpbmcuICBObyB0d28gb3BlcmF0aW9ucyBtYXkgYmUgaW52b2tlZCBzaW11bHRhbmVvdXNseSwgd2l0aCB0aGUgZXhjZXB0aW9uCisgKiBvZiBAZGlzYWJsZV9jYi4KICAqCiAgKiBBbGwgb3BlcmF0aW9ucyBjYW4gYmUgY2FsbGVkIGluIGFueSBjb250ZXh0LgogICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9ibHVldG9vdGgvYmx1ZXRvb3RoLmggYi9pbmNsdWRlL25ldC9ibHVldG9vdGgvYmx1ZXRvb3RoLmgKaW5kZXggNzcxZDE3Ny4uNzUwNjQ4ZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvYmx1ZXRvb3RoL2JsdWV0b290aC5oCisrKyBiL2luY2x1ZGUvbmV0L2JsdWV0b290aC9ibHVldG9vdGguaApAQCAtMTcwLDcgKzE3MCw3IEBACiBpbnQgYnRfZXJyKF9fdTE2IGNvZGUpOwogCiBleHRlcm4gaW50IGhjaV9zb2NrX2luaXQodm9pZCk7Ci1leHRlcm4gaW50IGhjaV9zb2NrX2NsZWFudXAodm9pZCk7CitleHRlcm4gdm9pZCBoY2lfc29ja19jbGVhbnVwKHZvaWQpOwogCiBleHRlcm4gaW50IGJ0X3N5c2ZzX2luaXQodm9pZCk7CiBleHRlcm4gdm9pZCBidF9zeXNmc19jbGVhbnVwKHZvaWQpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvZHN0LmggYi9pbmNsdWRlL25ldC9kc3QuaAppbmRleCBlM2FjN2QwLi5hZTEzMzcwIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9kc3QuaAorKysgYi9pbmNsdWRlL25ldC9kc3QuaApAQCAtNTIsMTUgKzUyLDEwIEBACiAJdW5zaWduZWQgc2hvcnQJCWhlYWRlcl9sZW47CS8qIG1vcmUgc3BhY2UgYXQgaGVhZCByZXF1aXJlZCAqLwogCXVuc2lnbmVkIHNob3J0CQl0cmFpbGVyX2xlbjsJLyogc3BhY2UgdG8gcmVzZXJ2ZSBhdCB0YWlsICovCiAKLQl1MzIJCQltZXRyaWNzW1JUQVhfTUFYXTsKLQlzdHJ1Y3QgZHN0X2VudHJ5CSpwYXRoOwotCi0JdW5zaWduZWQgbG9uZwkJcmF0ZV9sYXN0OwkvKiByYXRlIGxpbWl0aW5nIGZvciBJQ01QICovCiAJdW5zaWduZWQgaW50CQlyYXRlX3Rva2VuczsKKwl1bnNpZ25lZCBsb25nCQlyYXRlX2xhc3Q7CS8qIHJhdGUgbGltaXRpbmcgZm9yIElDTVAgKi8KIAotI2lmZGVmIENPTkZJR19ORVRfQ0xTX1JPVVRFCi0JX191MzIJCQl0Y2xhc3NpZDsKLSNlbmRpZgorCXN0cnVjdCBkc3RfZW50cnkJKnBhdGg7CiAKIAlzdHJ1Y3QgbmVpZ2hib3VyCSpuZWlnaGJvdXI7CiAJc3RydWN0IGhoX2NhY2hlCQkqaGg7CkBAIC03MCwxMCArNjUsMjAgQEAKIAlpbnQJCQkoKm91dHB1dCkoc3RydWN0IHNrX2J1ZmYqKTsKIAogCXN0cnVjdCAgZHN0X29wcwkgICAgICAgICpvcHM7Ci0JCQotCXVuc2lnbmVkIGxvbmcJCWxhc3R1c2U7CisKKwl1MzIJCQltZXRyaWNzW1JUQVhfTUFYXTsKKworI2lmZGVmIENPTkZJR19ORVRfQ0xTX1JPVVRFCisJX191MzIJCQl0Y2xhc3NpZDsKKyNlbmRpZgorCisJLyoKKwkgKiBfX3JlZmNudCB3YW50cyB0byBiZSBvbiBhIGRpZmZlcmVudCBjYWNoZSBsaW5lIGZyb20KKwkgKiBpbnB1dC9vdXRwdXQvb3BzIG9yIHBlcmZvcm1hbmNlIHRhbmtzIGJhZGx5CisJICovCiAJYXRvbWljX3QJCV9fcmVmY250OwkvKiBjbGllbnQgcmVmZXJlbmNlcwkqLwogCWludAkJCV9fdXNlOworCXVuc2lnbmVkIGxvbmcJCWxhc3R1c2U7CiAJdW5pb24gewogCQlzdHJ1Y3QgZHN0X2VudHJ5ICpuZXh0OwogCQlzdHJ1Y3QgcnRhYmxlICAgICpydF9uZXh0OwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvaW5ldF9lY24uaCBiL2luY2x1ZGUvbmV0L2luZXRfZWNuLmgKaW5kZXggYmEzM2RiMC4uNzA0MGE3OCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvaW5ldF9lY24uaAorKysgYi9pbmNsdWRlL25ldC9pbmV0X2Vjbi5oCkBAIC00Nyw3ICs0Nyw3IEBACiAgICAgfSB3aGlsZSAoMCkKIAogI2RlZmluZQlJUDZfRUNOX2Zsb3dfeG1pdChzaywgbGFiZWwpIGRvIHsJCQkJXAotCWlmIChJTkVUX0VDTl9pc19jYXBhYmxlKGluZXRfc2soc2spLT50b3MpKQkJCVwKKwlpZiAoSU5FVF9FQ05faXNfY2FwYWJsZShpbmV0Nl9zayhzayktPnRjbGFzcykpCQkJXAogCQkobGFiZWwpIHw9IGh0b25sKElORVRfRUNOX0VDVF8wIDw8IDIwKTsJCQlcCiAgICAgfSB3aGlsZSAoMCkKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvaXJkYS9pcnR0cC5oIGIvaW5jbHVkZS9uZXQvaXJkYS9pcnR0cC5oCmluZGV4IDMyYzM4NWQuLjA3ODhjMjMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L2lyZGEvaXJ0dHAuaAorKysgYi9pbmNsdWRlL25ldC9pcmRhL2lydHRwLmgKQEAgLTE2OSwxNyArMTY5LDE3IEBACiB2b2lkIGlydHRwX2Zsb3dfcmVxdWVzdChzdHJ1Y3QgdHNhcF9jYiAqc2VsZiwgTE9DQUxfRkxPVyBmbG93KTsKIHN0cnVjdCB0c2FwX2NiICppcnR0cF9kdXAoc3RydWN0IHRzYXBfY2IgKnNlbGYsIHZvaWQgKmluc3RhbmNlKTsKIAotc3RhdGljIF9faW5saW5lIF9fdTMyIGlydHRwX2dldF9zYWRkcihzdHJ1Y3QgdHNhcF9jYiAqc2VsZikKK3N0YXRpYyBpbmxpbmUgX191MzIgaXJ0dHBfZ2V0X3NhZGRyKHN0cnVjdCB0c2FwX2NiICpzZWxmKQogewogCXJldHVybiBpcmxtcF9nZXRfc2FkZHIoc2VsZi0+bHNhcCk7CiB9CiAKLXN0YXRpYyBfX2lubGluZSBfX3UzMiBpcnR0cF9nZXRfZGFkZHIoc3RydWN0IHRzYXBfY2IgKnNlbGYpCitzdGF0aWMgaW5saW5lIF9fdTMyIGlydHRwX2dldF9kYWRkcihzdHJ1Y3QgdHNhcF9jYiAqc2VsZikKIHsKIAlyZXR1cm4gaXJsbXBfZ2V0X2RhZGRyKHNlbGYtPmxzYXApOwogfQogCi1zdGF0aWMgX19pbmxpbmUgX191MzIgaXJ0dHBfZ2V0X21heF9zZWdfc2l6ZShzdHJ1Y3QgdHNhcF9jYiAqc2VsZikKK3N0YXRpYyBpbmxpbmUgX191MzIgaXJ0dHBfZ2V0X21heF9zZWdfc2l6ZShzdHJ1Y3QgdHNhcF9jYiAqc2VsZikKIHsKIAlyZXR1cm4gc2VsZi0+bWF4X3NlZ19zaXplOwogfQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbGxjLmggYi9pbmNsdWRlL25ldC9sbGMuaAppbmRleCBmNTAyNDU4Li43OTQwZGExIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9sbGMuaAorKysgYi9pbmNsdWRlL25ldC9sbGMuaApAQCAtNjUsNyArNjUsNiBAQAogCiBleHRlcm4gc3RydWN0IGxpc3RfaGVhZCBsbGNfc2FwX2xpc3Q7CiBleHRlcm4gcndsb2NrX3QgbGxjX3NhcF9saXN0X2xvY2s7Ci1leHRlcm4gdW5zaWduZWQgY2hhciBsbGNfc3RhdGlvbl9tYWNfc2FbRVRIX0FMRU5dOwogCiBleHRlcm4gaW50IGxsY19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAkJICAgc3RydWN0IHBhY2tldF90eXBlICpwdCwgc3RydWN0IG5ldF9kZXZpY2UgKm9yaWdfZGV2KTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2xsY19wZHUuaCBiL2luY2x1ZGUvbmV0L2xsY19wZHUuaAppbmRleCA0YThmNThiLi43NWI4ZTI5IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9sbGNfcGR1LmgKKysrIGIvaW5jbHVkZS9uZXQvbGxjX3BkdS5oCkBAIC0zODEsNyArMzgxLDcgQEAKIAl4aWRfaW5mby0+Zm10X2lkID0gTExDX1hJRF9GTVRfSUQ7CS8qIDB4ODEgKi8KIAl4aWRfaW5mby0+dHlwZQkgPSBzdmNzX3N1cHBvcnRlZDsKIAl4aWRfaW5mby0+cncJID0gcnhfd2luZG93IDw8IDE7CS8qIHNpemUgb2YgcmVjZWl2ZSB3aW5kb3cgKi8KLQlza2JfcHV0KHNrYiwgMyk7CisJc2tiX3B1dChza2IsIHNpemVvZihzdHJ1Y3QgbGxjX3hpZF9pbmZvKSk7CiB9CiAKIC8qKgpAQCAtNDA2LDcgKzQwNiw3IEBACiAJeGlkX2luZm8tPmZtdF9pZCA9IExMQ19YSURfRk1UX0lEOwogCXhpZF9pbmZvLT50eXBlCSA9IHN2Y3Nfc3VwcG9ydGVkOwogCXhpZF9pbmZvLT5ydwkgPSByeF93aW5kb3cgPDwgMTsKLQlza2JfcHV0KHNrYiwgMyk7CisJc2tiX3B1dChza2IsIHNpemVvZihzdHJ1Y3QgbGxjX3hpZF9pbmZvKSk7CiB9CiAKIC8qIExMQyBUeXBlIDIgRlJNUiByZXNwb25zZSBpbmZvcm1hdGlvbiBmaWVsZCBmb3JtYXQgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2xsY19zYXAuaCBiL2luY2x1ZGUvbmV0L2xsY19zYXAuaAppbmRleCAyYzU2ZGJlLi5lZDI1YmVjIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9sbGNfc2FwLmgKKysrIGIvaW5jbHVkZS9uZXQvbGxjX3NhcC5oCkBAIC0xLDUgKzEsOCBAQAogI2lmbmRlZiBMTENfU0FQX0gKICNkZWZpbmUgTExDX1NBUF9ICisKKyNpbmNsdWRlIDxhc20vdHlwZXMuaD4KKwogLyoKICAqIENvcHlyaWdodCAoYykgMTk5NyBieSBQcm9jb20gVGVjaG5vbG9neSxJbmMuCiAgKiAJCSAyMDAxLTIwMDMgYnkgQXJuYWxkbyBDYXJ2YWxobyBkZSBNZWxvIDxhY21lQGNvbmVjdGl2YS5jb20uYnI+CkBAIC0xOSw4ICsyMiw4IEBACiBleHRlcm4gdm9pZCBsbGNfc2FwX3J0bl9wZHUoc3RydWN0IGxsY19zYXAgKnNhcCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7CiBleHRlcm4gdm9pZCBsbGNfc2F2ZV9wcmltaXRpdmUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiogc2tiLAogCQkJICAgICAgIHVuc2lnbmVkIGNoYXIgcHJpbSk7Ci1leHRlcm4gc3RydWN0IHNrX2J1ZmYgKmxsY19hbGxvY19mcmFtZShzdHJ1Y3Qgc29jayAqc2ssCi0JCQkJICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOworZXh0ZXJuIHN0cnVjdCBza19idWZmICpsbGNfYWxsb2NfZnJhbWUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAorCQkJCSAgICAgICB1OCB0eXBlLCB1MzIgZGF0YV9zaXplKTsKIAogZXh0ZXJuIHZvaWQgbGxjX2J1aWxkX2FuZF9zZW5kX3Rlc3RfcGt0KHN0cnVjdCBsbGNfc2FwICpzYXAsCiAJCQkJICAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbmVpZ2hib3VyLmggYi9pbmNsdWRlL25ldC9uZWlnaGJvdXIuaAppbmRleCBlYmJmYjUwLi42NGE1ZjAxIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9uZWlnaGJvdXIuaAorKysgYi9pbmNsdWRlL25ldC9uZWlnaGJvdXIuaApAQCAtMjE4LDYgKzIxOCwxMCBAQAogZXh0ZXJuIHZvaWQJCQlwbmVpZ2hfZW5xdWV1ZShzdHJ1Y3QgbmVpZ2hfdGFibGUgKnRibCwgc3RydWN0IG5laWdoX3Bhcm1zICpwLAogCQkJCQkgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYik7CiBleHRlcm4gc3RydWN0IHBuZWlnaF9lbnRyeQkqcG5laWdoX2xvb2t1cChzdHJ1Y3QgbmVpZ2hfdGFibGUgKnRibCwgc3RydWN0IG5ldCAqbmV0LCBjb25zdCB2b2lkICprZXksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBjcmVhdCk7CitleHRlcm4gc3RydWN0IHBuZWlnaF9lbnRyeQkqX19wbmVpZ2hfbG9va3VwKHN0cnVjdCBuZWlnaF90YWJsZSAqdGJsLAorCQkJCQkJIHN0cnVjdCBuZXQgKm5ldCwKKwkJCQkJCSBjb25zdCB2b2lkICprZXksCisJCQkJCQkgc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CiBleHRlcm4gaW50CQkJcG5laWdoX2RlbGV0ZShzdHJ1Y3QgbmVpZ2hfdGFibGUgKnRibCwgc3RydWN0IG5ldCAqbmV0LCBjb25zdCB2b2lkICprZXksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwogCiBleHRlcm4gdm9pZCBuZWlnaF9hcHBfbnMoc3RydWN0IG5laWdoYm91ciAqbik7CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9uZXRfbmFtZXNwYWNlLmggYi9pbmNsdWRlL25ldC9uZXRfbmFtZXNwYWNlLmgKaW5kZXggMjg3MzhiNy4uOTIzZjJiOCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvbmV0X25hbWVzcGFjZS5oCisrKyBiL2luY2x1ZGUvbmV0L25ldF9uYW1lc3BhY2UuaApAQCAtMzEsNyArMzEsNiBAQAogCiAJc3RydWN0IHByb2NfZGlyX2VudHJ5IAkqcHJvY19uZXQ7CiAJc3RydWN0IHByb2NfZGlyX2VudHJ5IAkqcHJvY19uZXRfc3RhdDsKLQlzdHJ1Y3QgcHJvY19kaXJfZW50cnkgCSpwcm9jX25ldF9yb290OwogCiAJc3RydWN0IGxpc3RfaGVhZAlzeXNjdGxfdGFibGVfaGVhZGVyczsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHRlbmQuaCBiL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmgKaW5kZXggNDlhYWM2My4uZjczNmU4NCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHRlbmQuaAorKysgYi9pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5oCkBAIC0xNyw3ICsxNyw2IEBACiBzdHJ1Y3QgbmZfY3RfZXh0IHsKIAl1OCBvZmZzZXRbTkZfQ1RfRVhUX05VTV07CiAJdTggbGVuOwotCXU4IHJlYWxfbGVuOwogCWNoYXIgZGF0YVswXTsKIH07CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3NjdHAvY29tbWFuZC5oIGIvaW5jbHVkZS9uZXQvc2N0cC9jb21tYW5kLmgKaW5kZXggMTBhZTJkYS4uMzViMWU4MyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvc2N0cC9jb21tYW5kLmgKKysrIGIvaW5jbHVkZS9uZXQvc2N0cC9jb21tYW5kLmgKQEAgLTEwNCw2ICsxMDQsNyBAQAogCVNDVFBfQ01EX0FEQVBUQVRJT05fSU5ELCAvKiBnZW5lcmF0ZSBhbmQgc2VuZCBhZGFwdGF0aW9uIGV2ZW50ICovCiAJU0NUUF9DTURfQVNTT0NfU0hLRVksICAgIC8qIGdlbmVyYXRlIHRoZSBhc3NvY2lhdGlvbiBzaGFyZWQga2V5cyAqLwogCVNDVFBfQ01EX1QxX1JFVFJBTiwJIC8qIE1hcmsgZm9yIHJldHJhbnNtaXNzaW9uIGFmdGVyIFQxIHRpbWVvdXQgICovCisJU0NUUF9DTURfVVBEQVRFX0lOSVRUQUcsIC8qIFVwZGF0ZSBwZWVyIGluaXR0YWcgKi8KIAlTQ1RQX0NNRF9MQVNUCiB9IHNjdHBfdmVyYl90OwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9zY3RwL3NjdHAuaCBiL2luY2x1ZGUvbmV0L3NjdHAvc2N0cC5oCmluZGV4IDU3ZGYyN2YuLmVhODA2NzMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L3NjdHAvc2N0cC5oCisrKyBiL2luY2x1ZGUvbmV0L3NjdHAvc2N0cC5oCkBAIC0zODAsMTUgKzM4MCwxOSBAQAogCiAjaWYgZGVmaW5lZChDT05GSUdfSVBWNikgfHwgZGVmaW5lZChDT05GSUdfSVBWNl9NT0RVTEUpCiAKLWludCBzY3RwX3Y2X2luaXQodm9pZCk7Ci12b2lkIHNjdHBfdjZfZXhpdCh2b2lkKTsKK3ZvaWQgc2N0cF92Nl9wZl9pbml0KHZvaWQpOwordm9pZCBzY3RwX3Y2X3BmX2V4aXQodm9pZCk7CitpbnQgc2N0cF92Nl9wcm90b3N3X2luaXQodm9pZCk7Cit2b2lkIHNjdHBfdjZfcHJvdG9zd19leGl0KHZvaWQpOwogaW50IHNjdHBfdjZfYWRkX3Byb3RvY29sKHZvaWQpOwogdm9pZCBzY3RwX3Y2X2RlbF9wcm90b2NvbCh2b2lkKTsKIAogI2Vsc2UgLyogI2lmZGVmIGRlZmluZWQoQ09ORklHX0lQVjYpICovCiAKLXN0YXRpYyBpbmxpbmUgaW50IHNjdHBfdjZfaW5pdCh2b2lkKSB7IHJldHVybiAwOyB9Ci1zdGF0aWMgaW5saW5lIHZvaWQgc2N0cF92Nl9leGl0KHZvaWQpIHsgcmV0dXJuOyB9CitzdGF0aWMgaW5saW5lIHZvaWQgc2N0cF92Nl9wZl9pbml0KHZvaWQpIHsgcmV0dXJuOyB9CitzdGF0aWMgaW5saW5lIHZvaWQgc2N0cF92Nl9wZl9leGl0KHZvaWQpIHsgcmV0dXJuOyB9CitzdGF0aWMgaW5saW5lIGludCBzY3RwX3Y2X3Byb3Rvc3dfaW5pdCh2b2lkKSB7IHJldHVybiAwOyB9CitzdGF0aWMgaW5saW5lIHZvaWQgc2N0cF92Nl9wcm90b3N3X2V4aXQodm9pZCkgeyByZXR1cm47IH0KIHN0YXRpYyBpbmxpbmUgaW50IHNjdHBfdjZfYWRkX3Byb3RvY29sKHZvaWQpIHsgcmV0dXJuIDA7IH0KIHN0YXRpYyBpbmxpbmUgdm9pZCBzY3RwX3Y2X2RlbF9wcm90b2NvbCh2b2lkKSB7IHJldHVybjsgfQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9zY3RwL3VscGV2ZW50LmggYi9pbmNsdWRlL25ldC9zY3RwL3VscGV2ZW50LmgKaW5kZXggOWJjZmMxMi4uN2VhMTJlOCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvc2N0cC91bHBldmVudC5oCisrKyBiL2luY2x1ZGUvbmV0L3NjdHAvdWxwZXZlbnQuaApAQCAtNjcsNyArNjcsNyBAQAogfTsKIAogLyogUmV0cmlldmUgdGhlIHNrYiB0aGlzIGV2ZW50IHNpdHMgaW5zaWRlIG9mLiAqLwotc3RhdGljIGlubGluZSBzdHJ1Y3Qgc2tfYnVmZiAqc2N0cF9ldmVudDJza2Ioc3RydWN0IHNjdHBfdWxwZXZlbnQgKmV2KQorc3RhdGljIGlubGluZSBzdHJ1Y3Qgc2tfYnVmZiAqc2N0cF9ldmVudDJza2IoY29uc3Qgc3RydWN0IHNjdHBfdWxwZXZlbnQgKmV2KQogewogCXJldHVybiBjb250YWluZXJfb2YoKHZvaWQgKilldiwgc3RydWN0IHNrX2J1ZmYsIGNiKTsKIH0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3RjcC5oIGIvaW5jbHVkZS9uZXQvdGNwLmgKaW5kZXggN2RlNGVhMy4uNGZkM2ViMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvdGNwLmgKKysrIGIvaW5jbHVkZS9uZXQvdGNwLmgKQEAgLTc1Miw2ICs3NTIsOCBAQAogCXJldHVybiB0cC0+cGFja2V0c19vdXQgLSB0Y3BfbGVmdF9vdXQodHApICsgdHAtPnJldHJhbnNfb3V0OwogfQogCitleHRlcm4gaW50IHRjcF9saW1pdF9yZW5vX3NhY2tlZChzdHJ1Y3QgdGNwX3NvY2sgKnRwKTsKKwogLyogSWYgY3duZCA+IHNzdGhyZXNoLCB3ZSBtYXkgcmFpc2Ugc3N0aHJlc2ggdG8gYmUgaGFsZi13YXkgdG8gY3duZC4KICAqIFRoZSBleGNlcHRpb24gaXMgcmF0ZSBoYWx2aW5nIHBoYXNlLCB3aGVuIGN3bmQgaXMgZGVjcmVhc2luZyB0b3dhcmRzCiAgKiBzc3RocmVzaC4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3hmcm0uaCBiL2luY2x1ZGUvbmV0L3hmcm0uaAppbmRleCBlZWE3Nzg1Li4wZDI1NWFlIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC94ZnJtLmgKKysrIGIvaW5jbHVkZS9uZXQveGZybS5oCkBAIC0yMDQsNiArMjA0LDcgQEAKIAkgKiB0cmFuc2Zvcm1lci4gKi8KIAljb25zdCBzdHJ1Y3QgeGZybV90eXBlCSp0eXBlOwogCXN0cnVjdCB4ZnJtX21vZGUJKmlubmVyX21vZGU7CisJc3RydWN0IHhmcm1fbW9kZQkqaW5uZXJfbW9kZV9pYWY7CiAJc3RydWN0IHhmcm1fbW9kZQkqb3V0ZXJfbW9kZTsKIAogCS8qIFNlY3VyaXR5IGNvbnRleHQgKi8KQEAgLTI3Nyw3ICsyNzgsNyBAQAogc3RydWN0IHhmcm1fc3RhdGVfYWZpbmZvIHsKIAl1bnNpZ25lZCBpbnQJCWZhbWlseTsKIAl1bnNpZ25lZCBpbnQJCXByb3RvOwotCXVuc2lnbmVkIGludAkJZXRoX3Byb3RvOworCV9fYmUxNgkJCWV0aF9wcm90bzsKIAlzdHJ1Y3QgbW9kdWxlCQkqb3duZXI7CiAJY29uc3Qgc3RydWN0IHhmcm1fdHlwZQkqdHlwZV9tYXBbSVBQUk9UT19NQVhdOwogCXN0cnVjdCB4ZnJtX21vZGUJKm1vZGVfbWFwW1hGUk1fTU9ERV9NQVhdOwpAQCAtMzg3LDYgKzM4OCwyNyBAQAogZXh0ZXJuIGludCB4ZnJtX3JlZ2lzdGVyX21vZGUoc3RydWN0IHhmcm1fbW9kZSAqbW9kZSwgaW50IGZhbWlseSk7CiBleHRlcm4gaW50IHhmcm1fdW5yZWdpc3Rlcl9tb2RlKHN0cnVjdCB4ZnJtX21vZGUgKm1vZGUsIGludCBmYW1pbHkpOwogCitzdGF0aWMgaW5saW5lIGludCB4ZnJtX2FmMnByb3RvKHVuc2lnbmVkIGludCBmYW1pbHkpCit7CisJc3dpdGNoKGZhbWlseSkgeworCWNhc2UgQUZfSU5FVDoKKwkJcmV0dXJuIElQUFJPVE9fSVBJUDsKKwljYXNlIEFGX0lORVQ2OgorCQlyZXR1cm4gSVBQUk9UT19JUFY2OworCWRlZmF1bHQ6CisJCXJldHVybiAwOworCX0KK30KKworc3RhdGljIGlubGluZSBzdHJ1Y3QgeGZybV9tb2RlICp4ZnJtX2lwMmlubmVyX21vZGUoc3RydWN0IHhmcm1fc3RhdGUgKngsIGludCBpcHByb3RvKQoreworCWlmICgoaXBwcm90byA9PSBJUFBST1RPX0lQSVAgJiYgeC0+cHJvcHMuZmFtaWx5ID09IEFGX0lORVQpIHx8CisJICAgIChpcHByb3RvID09IElQUFJPVE9fSVBWNiAmJiB4LT5wcm9wcy5mYW1pbHkgPT0gQUZfSU5FVDYpKQorCQlyZXR1cm4geC0+aW5uZXJfbW9kZTsKKwllbHNlCisJCXJldHVybiB4LT5pbm5lcl9tb2RlX2lhZjsKK30KKwogc3RydWN0IHhmcm1fdG1wbAogewogLyogaWQgaW4gdGVtcGxhdGUgaXMgaW50ZXJwcmV0ZWQgYXM6CkBAIC01MzAsNiArNTUyLDkgQEAKIAlfX2JlMTYgaWQ7CiAJX19iZTE2IGZyYWdfb2ZmOwogCisJLyogSVAgaGVhZGVyIGxlbmd0aCAoZXhjbHVkaW5nIG9wdGlvbnMgb3IgZXh0ZW5zaW9uIGhlYWRlcnMpLiAqLworCXU4IGlobDsKKwogCS8qIFRPUyBmb3IgSVB2NCwgY2xhc3MgZm9yIElQdjYuICovCiAJdTggdG9zOwogCkBAIC01MzksNiArNTY0LDkgQEAKIAkvKiBQcm90b2NvbCBmb3IgSVB2NCwgTkggZm9yIElQdjYuICovCiAJdTggcHJvdG9jb2w7CiAKKwkvKiBPcHRpb24gbGVuZ3RoIGZvciBJUHY0LCB6ZXJvIGZvciBJUHY2LiAqLworCXU4IG9wdGxlbjsKKwogCS8qIFVzZWQgYnkgSVB2NiBvbmx5LCB6ZXJvIGZvciBJUHY0LiAqLwogCXU4IGZsb3dfbGJsWzNdOwogfTsKQEAgLTEyNTMsNiArMTI4MSw3IEBACiBleHRlcm4gaW50IHhmcm1faW5wdXRfcmVzdW1lKHN0cnVjdCBza19idWZmICpza2IsIGludCBuZXh0aGRyKTsKIGV4dGVybiBpbnQgeGZybV9vdXRwdXRfcmVzdW1lKHN0cnVjdCBza19idWZmICpza2IsIGludCBlcnIpOwogZXh0ZXJuIGludCB4ZnJtX291dHB1dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKK2V4dGVybiBpbnQgeGZybV9pbm5lcl9leHRyYWN0X291dHB1dChzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7CiBleHRlcm4gaW50IHhmcm00X2V4dHJhY3RfaGVhZGVyKHN0cnVjdCBza19idWZmICpza2IpOwogZXh0ZXJuIGludCB4ZnJtNF9leHRyYWN0X2lucHV0KHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKIGV4dGVybiBpbnQgeGZybTRfcmN2X2VuY2FwKHN0cnVjdCBza19idWZmICpza2IsIGludCBuZXh0aGRyLCBfX2JlMzIgc3BpLApkaWZmIC0tZ2l0IGEvaW5pdC9pbml0cmFtZnMuYyBiL2luaXQvaW5pdHJhbWZzLmMKaW5kZXggYzBiMWUwNS4uZDUzZmVlOCAxMDA2NDQKLS0tIGEvaW5pdC9pbml0cmFtZnMuYworKysgYi9pbml0L2luaXRyYW1mcy5jCkBAIC01MzgsNyArNTM4LDcgQEAKIAlpbml0cmRfZW5kID0gMDsKIH0KIAotaW50IF9faW5pdCBwb3B1bGF0ZV9yb290ZnModm9pZCkKK3N0YXRpYyBpbnQgX19pbml0IHBvcHVsYXRlX3Jvb3Rmcyh2b2lkKQogewogCWNoYXIgKmVyciA9IHVucGFja190b19yb290ZnMoX19pbml0cmFtZnNfc3RhcnQsCiAJCQkgX19pbml0cmFtZnNfZW5kIC0gX19pbml0cmFtZnNfc3RhcnQsIDApOwpAQCAtNTc3LDEwICs1NzcsNCBAQAogCX0KIAlyZXR1cm4gMDsKIH0KLSNpZm5kZWYgQ09ORklHX0FDUElfQ1VTVE9NX0RTRFRfSU5JVFJECi0vKgotICogaWYgdGhpcyBvcHRpb24gaXMgZW5hYmxlZCwgcG9wdWxhdGVfcm9vdGZzKCkgaXMgY2FsbGVkIF9lYXJsaWVyXyBpbiB0aGUKLSAqIGJvb3Qgc2VxdWVuY2UuIFRoaXMgaW5zdXJlcyB0aGF0IHRoZSBBQ1BJIGluaXRpYWxpc2F0aW9uIGNhbiBmaW5kIHRoZSBmaWxlLgotICovCiByb290ZnNfaW5pdGNhbGwocG9wdWxhdGVfcm9vdGZzKTsKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5pdC9tYWluLmMgYi9pbml0L21haW4uYwppbmRleCBmYmIwMTY3Li45OWNlOTQ5IDEwMDY0NAotLS0gYS9pbml0L21haW4uYworKysgYi9pbml0L21haW4uYwpAQCAtMTAyLDEyICsxMDIsNiBAQAogZXh0ZXJuIHZvaWQgdGNfaW5pdCh2b2lkKTsKICNlbmRpZgogCi0jaWZkZWYgQ09ORklHX0FDUElfQ1VTVE9NX0RTRFRfSU5JVFJECi1leHRlcm4gaW50IHBvcHVsYXRlX3Jvb3Rmcyh2b2lkKTsKLSNlbHNlCi1zdGF0aWMgaW5saW5lIHZvaWQgcG9wdWxhdGVfcm9vdGZzKHZvaWQpIHt9Ci0jZW5kaWYKLQogZW51bSBzeXN0ZW1fc3RhdGVzIHN5c3RlbV9zdGF0ZTsKIEVYUE9SVF9TWU1CT0woc3lzdGVtX3N0YXRlKTsKIApAQCAtNjUwLDcgKzY0NCw2IEBACiAKIAljaGVja19idWdzKCk7CiAKLQlwb3B1bGF0ZV9yb290ZnMoKTsgLyogRm9yIERTRFQgb3ZlcnJpZGUgZnJvbSBpbml0cmFtZnMgKi8KIAlhY3BpX2Vhcmx5X2luaXQoKTsgLyogYmVmb3JlIExBUElDIGFuZCBTTVAgaW5pdCAqLwogCiAJLyogRG8gdGhlIHJlc3Qgbm9uLV9faW5pdCdlZCwgd2UncmUgbm93IGFsaXZlICovCmRpZmYgLS1naXQgYS9rZXJuZWwvYWNjdC5jIGIva2VybmVsL2FjY3QuYwppbmRleCA1MjFkZmE1Li45MWUxY2ZkIDEwMDY0NAotLS0gYS9rZXJuZWwvYWNjdC5jCisrKyBiL2tlcm5lbC9hY2N0LmMKQEAgLTU4LDYgKzU4LDcgQEAKICNpbmNsdWRlIDxhc20vdWFjY2Vzcy5oPgogI2luY2x1ZGUgPGFzbS9kaXY2NC5oPgogI2luY2x1ZGUgPGxpbnV4L2Jsa2Rldi5oPiAvKiBzZWN0b3JfZGl2ICovCisjaW5jbHVkZSA8bGludXgvcGlkX25hbWVzcGFjZS5oPgogCiAvKgogICogVGhlc2UgY29uc3RhbnRzIGNvbnRyb2wgdGhlIGFtb3VudCBvZiBmcmVlc3BhY2UgdGhhdCBzdXNwZW5kIGFuZApAQCAtNzQsNyArNzUsNyBAQAogLyoKICAqIEV4dGVybmFsIHJlZmVyZW5jZXMgYW5kIGFsbCBvZiB0aGUgZ2xvYmFscy4KICAqLwotc3RhdGljIHZvaWQgZG9fYWNjdF9wcm9jZXNzKHN0cnVjdCBmaWxlICopOworc3RhdGljIHZvaWQgZG9fYWNjdF9wcm9jZXNzKHN0cnVjdCBwaWRfbmFtZXNwYWNlICpucywgc3RydWN0IGZpbGUgKik7CiAKIC8qCiAgKiBUaGlzIHN0cnVjdHVyZSBpcyB1c2VkIHNvIHRoYXQgYWxsIHRoZSBkYXRhIHByb3RlY3RlZCBieSBsb2NrCkBAIC04Niw2ICs4Nyw3IEBACiAJdm9sYXRpbGUgaW50CQlhY3RpdmU7CiAJdm9sYXRpbGUgaW50CQluZWVkY2hlY2s7CiAJc3RydWN0IGZpbGUJCSpmaWxlOworCXN0cnVjdCBwaWRfbmFtZXNwYWNlCSpuczsKIAlzdHJ1Y3QgdGltZXJfbGlzdAl0aW1lcjsKIH07CiAKQEAgLTE3NSw5ICsxNzcsMTEgQEAKIHN0YXRpYyB2b2lkIGFjY3RfZmlsZV9yZW9wZW4oc3RydWN0IGZpbGUgKmZpbGUpCiB7CiAJc3RydWN0IGZpbGUgKm9sZF9hY2N0ID0gTlVMTDsKKwlzdHJ1Y3QgcGlkX25hbWVzcGFjZSAqb2xkX25zID0gTlVMTDsKIAogCWlmIChhY2N0X2dsb2JhbHMuZmlsZSkgewogCQlvbGRfYWNjdCA9IGFjY3RfZ2xvYmFscy5maWxlOworCQlvbGRfbnMgPSBhY2N0X2dsb2JhbHMubnM7CiAJCWRlbF90aW1lcigmYWNjdF9nbG9iYWxzLnRpbWVyKTsKIAkJYWNjdF9nbG9iYWxzLmFjdGl2ZSA9IDA7CiAJCWFjY3RfZ2xvYmFscy5uZWVkY2hlY2sgPSAwOwpAQCAtMTg1LDYgKzE4OSw3IEBACiAJfQogCWlmIChmaWxlKSB7CiAJCWFjY3RfZ2xvYmFscy5maWxlID0gZmlsZTsKKwkJYWNjdF9nbG9iYWxzLm5zID0gZ2V0X3BpZF9ucyh0YXNrX2FjdGl2ZV9waWRfbnMoY3VycmVudCkpOwogCQlhY2N0X2dsb2JhbHMubmVlZGNoZWNrID0gMDsKIAkJYWNjdF9nbG9iYWxzLmFjdGl2ZSA9IDE7CiAJCS8qIEl0J3MgYmVlbiBkZWxldGVkIGlmIGl0IHdhcyB1c2VkIGJlZm9yZSBzbyB0aGlzIGlzIHNhZmUgKi8KQEAgLTE5Niw4ICsyMDEsOSBAQAogCWlmIChvbGRfYWNjdCkgewogCQltbnRfdW5waW4ob2xkX2FjY3QtPmZfcGF0aC5tbnQpOwogCQlzcGluX3VubG9jaygmYWNjdF9nbG9iYWxzLmxvY2spOwotCQlkb19hY2N0X3Byb2Nlc3Mob2xkX2FjY3QpOworCQlkb19hY2N0X3Byb2Nlc3Mob2xkX25zLCBvbGRfYWNjdCk7CiAJCWZpbHBfY2xvc2Uob2xkX2FjY3QsIE5VTEwpOworCQlwdXRfcGlkX25zKG9sZF9ucyk7CiAJCXNwaW5fbG9jaygmYWNjdF9nbG9iYWxzLmxvY2spOwogCX0KIH0KQEAgLTQxOSw3ICs0MjUsNyBAQAogLyoKICAqICBkb19hY2N0X3Byb2Nlc3MgZG9lcyBhbGwgYWN0dWFsIHdvcmsuIENhbGxlciBob2xkcyB0aGUgcmVmZXJlbmNlIHRvIGZpbGUuCiAgKi8KLXN0YXRpYyB2b2lkIGRvX2FjY3RfcHJvY2VzcyhzdHJ1Y3QgZmlsZSAqZmlsZSkKK3N0YXRpYyB2b2lkIGRvX2FjY3RfcHJvY2VzcyhzdHJ1Y3QgcGlkX25hbWVzcGFjZSAqbnMsIHN0cnVjdCBmaWxlICpmaWxlKQogewogCXN0cnVjdCBwYWNjdF9zdHJ1Y3QgKnBhY2N0ID0gJmN1cnJlbnQtPnNpZ25hbC0+cGFjY3Q7CiAJYWNjdF90IGFjOwpAQCAtNDgxLDggKzQ4NywxMCBAQAogCWFjLmFjX2dpZDE2ID0gY3VycmVudC0+Z2lkOwogI2VuZGlmCiAjaWYgQUNDVF9WRVJTSU9OPT0zCi0JYWMuYWNfcGlkID0gY3VycmVudC0+dGdpZDsKLQlhYy5hY19wcGlkID0gY3VycmVudC0+cmVhbF9wYXJlbnQtPnRnaWQ7CisJYWMuYWNfcGlkID0gdGFza190Z2lkX25yX25zKGN1cnJlbnQsIG5zKTsKKwlyY3VfcmVhZF9sb2NrKCk7CisJYWMuYWNfcHBpZCA9IHRhc2tfdGdpZF9ucl9ucyhyY3VfZGVyZWZlcmVuY2UoY3VycmVudC0+cmVhbF9wYXJlbnQpLCBucyk7CisJcmN1X3JlYWRfdW5sb2NrKCk7CiAjZW5kaWYKIAogCXNwaW5fbG9ja19pcnEoJmN1cnJlbnQtPnNpZ2hhbmQtPnNpZ2xvY2spOwpAQCAtNTc4LDYgKzU4Niw3IEBACiB2b2lkIGFjY3RfcHJvY2Vzcyh2b2lkKQogewogCXN0cnVjdCBmaWxlICpmaWxlID0gTlVMTDsKKwlzdHJ1Y3QgcGlkX25hbWVzcGFjZSAqbnM7CiAKIAkvKgogCSAqIGFjY2VsZXJhdGUgdGhlIGNvbW1vbiBmYXN0cGF0aDoKQEAgLTU5Miw4ICs2MDEsMTAgQEAKIAkJcmV0dXJuOwogCX0KIAlnZXRfZmlsZShmaWxlKTsKKwlucyA9IGdldF9waWRfbnMoYWNjdF9nbG9iYWxzLm5zKTsKIAlzcGluX3VubG9jaygmYWNjdF9nbG9iYWxzLmxvY2spOwogCi0JZG9fYWNjdF9wcm9jZXNzKGZpbGUpOworCWRvX2FjY3RfcHJvY2VzcyhucywgZmlsZSk7CiAJZnB1dChmaWxlKTsKKwlwdXRfcGlkX25zKG5zKTsKIH0KZGlmZiAtLWdpdCBhL2tlcm5lbC9hdWRpdC5jIGIva2VybmVsL2F1ZGl0LmMKaW5kZXggMTBjNDkzMC4uYjc4MmIwNCAxMDA2NDQKLS0tIGEva2VybmVsL2F1ZGl0LmMKKysrIGIva2VybmVsL2F1ZGl0LmMKQEAgLTc4LDkgKzc4LDEzIEBACiAvKiBJZiBhdWRpdGluZyBjYW5ub3QgcHJvY2VlZCwgYXVkaXRfZmFpbHVyZSBzZWxlY3RzIHdoYXQgaGFwcGVucy4gKi8KIHN0YXRpYyBpbnQJYXVkaXRfZmFpbHVyZSA9IEFVRElUX0ZBSUxfUFJJTlRLOwogCi0vKiBJZiBhdWRpdCByZWNvcmRzIGFyZSB0byBiZSB3cml0dGVuIHRvIHRoZSBuZXRsaW5rIHNvY2tldCwgYXVkaXRfcGlkCi0gKiBjb250YWlucyB0aGUgKG5vbi16ZXJvKSBwaWQuICovCisvKgorICogSWYgYXVkaXQgcmVjb3JkcyBhcmUgdG8gYmUgd3JpdHRlbiB0byB0aGUgbmV0bGluayBzb2NrZXQsIGF1ZGl0X3BpZAorICogY29udGFpbnMgdGhlIHBpZCBvZiB0aGUgYXVkaXRkIHByb2Nlc3MgYW5kIGF1ZGl0X25sa19waWQgY29udGFpbnMKKyAqIHRoZSBwaWQgdG8gdXNlIHRvIHNlbmQgbmV0bGluayBtZXNzYWdlcyB0byB0aGF0IHByb2Nlc3MuCisgKi8KIGludAkJYXVkaXRfcGlkOworc3RhdGljIGludAlhdWRpdF9ubGtfcGlkOwogCiAvKiBJZiBhdWRpdF9yYXRlX2xpbWl0IGlzIG5vbi16ZXJvLCBsaW1pdCB0aGUgcmF0ZSBvZiBzZW5kaW5nIGF1ZGl0IHJlY29yZHMKICAqIHRvIHRoYXQgbnVtYmVyIHBlciBzZWNvbmQuICBUaGlzIHByZXZlbnRzIERvUyBhdHRhY2tzLCBidXQgcmVzdWx0cyBpbgpAQCAtMzUwLDcgKzM1NCw3IEBACiAJCXdha2VfdXAoJmF1ZGl0X2JhY2tsb2dfd2FpdCk7CiAJCWlmIChza2IpIHsKIAkJCWlmIChhdWRpdF9waWQpIHsKLQkJCQlpbnQgZXJyID0gbmV0bGlua191bmljYXN0KGF1ZGl0X3NvY2ssIHNrYiwgYXVkaXRfcGlkLCAwKTsKKwkJCQlpbnQgZXJyID0gbmV0bGlua191bmljYXN0KGF1ZGl0X3NvY2ssIHNrYiwgYXVkaXRfbmxrX3BpZCwgMCk7CiAJCQkJaWYgKGVyciA8IDApIHsKIAkJCQkJQlVHX09OKGVyciAhPSAtRUNPTk5SRUZVU0VEKTsgLyogU2hvdWRuJ3QgaGFwcGVuICovCiAJCQkJCXByaW50ayhLRVJOX0VSUiAiYXVkaXQ6ICpOTyogZGFlbW9uIGF0IGF1ZGl0X3BpZD0lZFxuIiwgYXVkaXRfcGlkKTsKQEAgLTYyNiw2ICs2MzAsNyBAQAogCQkJCQkJCXNpZCwgMSk7CiAKIAkJCWF1ZGl0X3BpZCA9IG5ld19waWQ7CisJCQlhdWRpdF9ubGtfcGlkID0gTkVUTElOS19DQihza2IpLnBpZDsKIAkJfQogCQlpZiAoc3RhdHVzX2dldC0+bWFzayAmIEFVRElUX1NUQVRVU19SQVRFX0xJTUlUKQogCQkJZXJyID0gYXVkaXRfc2V0X3JhdGVfbGltaXQoc3RhdHVzX2dldC0+cmF0ZV9saW1pdCwKQEAgLTEyNjQsOCArMTI2OSw4IEBACiAKIC8qKgogICogYXVkaXRfc3RyaW5nX2NvbnRhaW5zX2NvbnRyb2wgLSBkb2VzIGEgc3RyaW5nIG5lZWQgdG8gYmUgbG9nZ2VkIGluIGhleAotICogQHN0cmluZyAtIHN0cmluZyB0byBiZSBjaGVja2VkCi0gKiBAbGVuIC0gbWF4IGxlbmd0aCBvZiB0aGUgc3RyaW5nIHRvIGNoZWNrCisgKiBAc3RyaW5nOiBzdHJpbmcgdG8gYmUgY2hlY2tlZAorICogQGxlbjogbWF4IGxlbmd0aCBvZiB0aGUgc3RyaW5nIHRvIGNoZWNrCiAgKi8KIGludCBhdWRpdF9zdHJpbmdfY29udGFpbnNfY29udHJvbChjb25zdCBjaGFyICpzdHJpbmcsIHNpemVfdCBsZW4pCiB7CkBAIC0xMjgwLDcgKzEyODUsNyBAQAogLyoqCiAgKiBhdWRpdF9sb2dfbl91bnRydXN0ZWRzdHJpbmcgLSBsb2cgYSBzdHJpbmcgdGhhdCBtYXkgY29udGFpbiByYW5kb20gY2hhcmFjdGVycwogICogQGFiOiBhdWRpdF9idWZmZXIKLSAqIEBsZW46IGxlbnRoIG9mIHN0cmluZyAobm90IGluY2x1ZGluZyB0cmFpbGluZyBudWxsKQorICogQGxlbjogbGVuZ3RoIG9mIHN0cmluZyAobm90IGluY2x1ZGluZyB0cmFpbGluZyBudWxsKQogICogQHN0cmluZzogc3RyaW5nIHRvIGJlIGxvZ2dlZAogICoKICAqIFRoaXMgY29kZSB3aWxsIGVzY2FwZSBhIHN0cmluZyB0aGF0IGlzIHBhc3NlZCB0byBpdCBpZiB0aGUgc3RyaW5nCmRpZmYgLS1naXQgYS9rZXJuZWwvY2dyb3VwLmMgYi9rZXJuZWwvY2dyb3VwLmMKaW5kZXggZTljMmZiMC4uMjcyN2Y5MiAxMDA2NDQKLS0tIGEva2VybmVsL2Nncm91cC5jCisrKyBiL2tlcm5lbC9jZ3JvdXAuYwpAQCAtNzgyLDcgKzc4MiwxNCBAQAogCQlpZiAoISp0b2tlbikKIAkJCXJldHVybiAtRUlOVkFMOwogCQlpZiAoIXN0cmNtcCh0b2tlbiwgImFsbCIpKSB7Ci0JCQlvcHRzLT5zdWJzeXNfYml0cyA9ICgxIDw8IENHUk9VUF9TVUJTWVNfQ09VTlQpIC0gMTsKKwkJCS8qIEFkZCBhbGwgbm9uLWRpc2FibGVkIHN1YnN5c3RlbXMgKi8KKwkJCWludCBpOworCQkJb3B0cy0+c3Vic3lzX2JpdHMgPSAwOworCQkJZm9yIChpID0gMDsgaSA8IENHUk9VUF9TVUJTWVNfQ09VTlQ7IGkrKykgeworCQkJCXN0cnVjdCBjZ3JvdXBfc3Vic3lzICpzcyA9IHN1YnN5c1tpXTsKKwkJCQlpZiAoIXNzLT5kaXNhYmxlZCkKKwkJCQkJb3B0cy0+c3Vic3lzX2JpdHMgfD0gMXVsIDw8IGk7CisJCQl9CiAJCX0gZWxzZSBpZiAoIXN0cmNtcCh0b2tlbiwgIm5vcHJlZml4IikpIHsKIAkJCXNldF9iaXQoUk9PVF9OT1BSRUZJWCwgJm9wdHMtPmZsYWdzKTsKIAkJfSBlbHNlIGlmICghc3RybmNtcCh0b2tlbiwgInJlbGVhc2VfYWdlbnQ9IiwgMTQpKSB7CkBAIC04MDAsNyArODA3LDggQEAKIAkJCWZvciAoaSA9IDA7IGkgPCBDR1JPVVBfU1VCU1lTX0NPVU5UOyBpKyspIHsKIAkJCQlzcyA9IHN1YnN5c1tpXTsKIAkJCQlpZiAoIXN0cmNtcCh0b2tlbiwgc3MtPm5hbWUpKSB7Ci0JCQkJCXNldF9iaXQoaSwgJm9wdHMtPnN1YnN5c19iaXRzKTsKKwkJCQkJaWYgKCFzcy0+ZGlzYWJsZWQpCisJCQkJCQlzZXRfYml0KGksICZvcHRzLT5zdWJzeXNfYml0cyk7CiAJCQkJCWJyZWFrOwogCQkJCX0KIAkJCX0KQEAgLTIwODIsNyArMjA5MCw3IEBACiAKIAkJa2ZyZWUocGlkYXJyYXkpOwogCX0gZWxzZSB7Ci0JCWN0ci0+YnVmID0gMDsKKwkJY3RyLT5idWYgPSBOVUxMOwogCQljdHItPmJ1ZnN6ID0gMDsKIAl9CiAJZmlsZS0+cHJpdmF0ZV9kYXRhID0gY3RyOwpAQCAtMjU2MSw2ICsyNTY5LDcgQEAKIAkJLyogU2tpcCB0aGlzIGhpZXJhcmNoeSBpZiBpdCBoYXMgbm8gYWN0aXZlIHN1YnN5c3RlbXMgKi8KIAkJaWYgKCFyb290LT5hY3R1YWxfc3Vic3lzX2JpdHMpCiAJCQljb250aW51ZTsKKwkJc2VxX3ByaW50ZihtLCAiJWx1OiIsIHJvb3QtPnN1YnN5c19iaXRzKTsKIAkJZm9yX2VhY2hfc3Vic3lzKHJvb3QsIHNzKQogCQkJc2VxX3ByaW50ZihtLCAiJXMlcyIsIGNvdW50KysgPyAiLCIgOiAiIiwgc3MtPm5hbWUpOwogCQlzZXFfcHV0YyhtLCAnOicpOwpAQCAtMjYwMCwxMyArMjYwOSwxMyBAQAogewogCWludCBpOwogCi0Jc2VxX3B1dHMobSwgIiNzdWJzeXNfbmFtZVx0aGllcmFyY2h5XHRudW1fY2dyb3Vwc1xuIik7CisJc2VxX3B1dHMobSwgIiNzdWJzeXNfbmFtZVx0aGllcmFyY2h5XHRudW1fY2dyb3Vwc1x0ZW5hYmxlZFxuIik7CiAJbXV0ZXhfbG9jaygmY2dyb3VwX211dGV4KTsKIAlmb3IgKGkgPSAwOyBpIDwgQ0dST1VQX1NVQlNZU19DT1VOVDsgaSsrKSB7CiAJCXN0cnVjdCBjZ3JvdXBfc3Vic3lzICpzcyA9IHN1YnN5c1tpXTsKLQkJc2VxX3ByaW50ZihtLCAiJXNcdCVsdVx0JWRcbiIsCisJCXNlcV9wcmludGYobSwgIiVzXHQlbHVcdCVkXHQlZFxuIiwKIAkJCSAgIHNzLT5uYW1lLCBzcy0+cm9vdC0+c3Vic3lzX2JpdHMsCi0JCQkgICBzcy0+cm9vdC0+bnVtYmVyX29mX2Nncm91cHMpOworCQkJICAgc3MtPnJvb3QtPm51bWJlcl9vZl9jZ3JvdXBzLCAhc3MtPmRpc2FibGVkKTsKIAl9CiAJbXV0ZXhfdW5sb2NrKCZjZ3JvdXBfbXV0ZXgpOwogCXJldHVybiAwOwpAQCAtMjYxNCw3ICsyNjIzLDcgQEAKIAogc3RhdGljIGludCBjZ3JvdXBzdGF0c19vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKQogewotCXJldHVybiBzaW5nbGVfb3BlbihmaWxlLCBwcm9jX2Nncm91cHN0YXRzX3Nob3csIDApOworCXJldHVybiBzaW5nbGVfb3BlbihmaWxlLCBwcm9jX2Nncm91cHN0YXRzX3Nob3csIE5VTEwpOwogfQogCiBzdGF0aWMgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBwcm9jX2Nncm91cHN0YXRzX29wZXJhdGlvbnMgPSB7CkBAIC0zMDEwLDMgKzMwMTksMjcgQEAKIAlzcGluX3VubG9jaygmcmVsZWFzZV9saXN0X2xvY2spOwogCW11dGV4X3VubG9jaygmY2dyb3VwX211dGV4KTsKIH0KKworc3RhdGljIGludCBfX2luaXQgY2dyb3VwX2Rpc2FibGUoY2hhciAqc3RyKQoreworCWludCBpOworCWNoYXIgKnRva2VuOworCisJd2hpbGUgKCh0b2tlbiA9IHN0cnNlcCgmc3RyLCAiLCIpKSAhPSBOVUxMKSB7CisJCWlmICghKnRva2VuKQorCQkJY29udGludWU7CisKKwkJZm9yIChpID0gMDsgaSA8IENHUk9VUF9TVUJTWVNfQ09VTlQ7IGkrKykgeworCQkJc3RydWN0IGNncm91cF9zdWJzeXMgKnNzID0gc3Vic3lzW2ldOworCisJCQlpZiAoIXN0cmNtcCh0b2tlbiwgc3MtPm5hbWUpKSB7CisJCQkJc3MtPmRpc2FibGVkID0gMTsKKwkJCQlwcmludGsoS0VSTl9JTkZPICJEaXNhYmxpbmcgJXMgY29udHJvbCBncm91cCIKKwkJCQkJIiBzdWJzeXN0ZW1cbiIsIHNzLT5uYW1lKTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCX0KKwlyZXR1cm4gMTsKK30KK19fc2V0dXAoImNncm91cF9kaXNhYmxlPSIsIGNncm91cF9kaXNhYmxlKTsKZGlmZiAtLWdpdCBhL2tlcm5lbC9leGl0LmMgYi9rZXJuZWwvZXhpdC5jCmluZGV4IDUzODcyYmYuLjA3MzAwNWIgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9leGl0LmMKKysrIGIva2VybmVsL2V4aXQuYwpAQCAtMTYwOCw3ICsxNjA4LDcgQEAKIAlwdXRfcGlkKHBpZCk7CiAKIAkvKiBhdm9pZCBSRUdQQVJNIGJyZWFrYWdlIG9uIHg4NjogKi8KLQlwcmV2ZW50X3RhaWxfY2FsbChyZXQpOworCWFzbWxpbmthZ2VfcHJvdGVjdCg1LCByZXQsIHdoaWNoLCB1cGlkLCBpbmZvcCwgb3B0aW9ucywgcnUpOwogCXJldHVybiByZXQ7CiB9CiAKQEAgLTE2NDAsNyArMTY0MCw3IEBACiAJcHV0X3BpZChwaWQpOwogCiAJLyogYXZvaWQgUkVHUEFSTSBicmVha2FnZSBvbiB4ODY6ICovCi0JcHJldmVudF90YWlsX2NhbGwocmV0KTsKKwlhc21saW5rYWdlX3Byb3RlY3QoNCwgcmV0LCB1cGlkLCBzdGF0X2FkZHIsIG9wdGlvbnMsIHJ1KTsKIAlyZXR1cm4gcmV0OwogfQogCmRpZmYgLS1naXQgYS9rZXJuZWwvZm9yay5jIGIva2VybmVsL2ZvcmsuYwppbmRleCBkZDI0OWMzLi45YzA0MmY5IDEwMDY0NAotLS0gYS9rZXJuZWwvZm9yay5jCisrKyBiL2tlcm5lbC9mb3JrLmMKQEAgLTM5NCw3ICszOTQsNiBAQAogewogCUJVR19PTihtbSA9PSAmaW5pdF9tbSk7CiAJbW1fZnJlZV9wZ2QobW0pOwotCW1tX2ZyZWVfY2dyb3VwKG1tKTsKIAlkZXN0cm95X2NvbnRleHQobW0pOwogCWZyZWVfbW0obW0pOwogfQpAQCAtNDE2LDYgKzQxNSw3IEBACiAJCQlzcGluX3VubG9jaygmbW1saXN0X2xvY2spOwogCQl9CiAJCXB1dF9zd2FwX3Rva2VuKG1tKTsKKwkJbW1fZnJlZV9jZ3JvdXAobW0pOwogCQltbWRyb3AobW0pOwogCX0KIH0KZGlmZiAtLWdpdCBhL2tlcm5lbC9mdXRleC5jIGIva2VybmVsL2Z1dGV4LmMKaW5kZXggMDY5NjhjZC4uZTQzOTQ1ZSAxMDA2NDQKLS0tIGEva2VybmVsL2Z1dGV4LmMKKysrIGIva2VybmVsL2Z1dGV4LmMKQEAgLTI4MSw3ICsyODEsNyBAQAogICovCiBzdGF0aWMgdm9pZCBnZXRfZnV0ZXhfa2V5X3JlZnModW5pb24gZnV0ZXhfa2V5ICprZXkpCiB7Ci0JaWYgKGtleS0+Ym90aC5wdHIgPT0gMCkKKwlpZiAoa2V5LT5ib3RoLnB0ciA9PSBOVUxMKQogCQlyZXR1cm47CiAJc3dpdGNoIChrZXktPmJvdGgub2Zmc2V0ICYgKEZVVF9PRkZfSU5PREV8RlVUX09GRl9NTVNIQVJFRCkpIHsKIAkJY2FzZSBGVVRfT0ZGX0lOT0RFOgpAQCAtMjE1OCw3ICsyMTU4LDcgQEAKIAkua2lsbF9zYgk9IGtpbGxfYW5vbl9zdXBlciwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IGluaXQodm9pZCkKK3N0YXRpYyBpbnQgX19pbml0IGZ1dGV4X2luaXQodm9pZCkKIHsKIAl1MzIgY3VydmFsOwogCWludCBpOwpAQCAtMjE5NCw0ICsyMTk0LDQgQEAKIAogCXJldHVybiAwOwogfQotX19pbml0Y2FsbChpbml0KTsKK19faW5pdGNhbGwoZnV0ZXhfaW5pdCk7CmRpZmYgLS1naXQgYS9rZXJuZWwvZnV0ZXhfY29tcGF0LmMgYi9rZXJuZWwvZnV0ZXhfY29tcGF0LmMKaW5kZXggZmY5MGYwNC4uMDRhYzNhOSAxMDA2NDQKLS0tIGEva2VybmVsL2Z1dGV4X2NvbXBhdC5jCisrKyBiL2tlcm5lbC9mdXRleF9jb21wYXQuYwpAQCAtMzAsNyArMzAsNyBAQAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgdm9pZCBfX3VzZXIgKmZ1dGV4X3VhZGRyKHN0cnVjdCByb2J1c3RfbGlzdCAqZW50cnksCitzdGF0aWMgdm9pZCBfX3VzZXIgKmZ1dGV4X3VhZGRyKHN0cnVjdCByb2J1c3RfbGlzdCBfX3VzZXIgKmVudHJ5LAogCQkJCWNvbXBhdF9sb25nX3QgZnV0ZXhfb2Zmc2V0KQogewogCWNvbXBhdF91cHRyX3QgYmFzZSA9IHB0cl90b19jb21wYXQoZW50cnkpOwpkaWZmIC0tZ2l0IGEva2VybmVsL21hcmtlci5jIGIva2VybmVsL21hcmtlci5jCmluZGV4IDQ4YTRlYTUuLjAwNWI5NTkgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9tYXJrZXIuYworKysgYi9rZXJuZWwvbWFya2VyLmMKQEAgLTEwNCwxOCArMTA0LDE4IEBACiAJY2hhciBwdHlwZTsKIAogCS8qCi0JICogZGlzYWJsaW5nIHByZWVtcHRpb24gdG8gbWFrZSBzdXJlIHRoZSB0ZWFyZG93biBvZiB0aGUgY2FsbGJhY2tzIGNhbgotCSAqIGJlIGRvbmUgY29ycmVjdGx5IHdoZW4gdGhleSBhcmUgaW4gbW9kdWxlcyBhbmQgdGhleSBpbnN1cmUgUkNVIHJlYWQKLQkgKiBjb2hlcmVuY3kuCisJICogcHJlZW1wdF9kaXNhYmxlIGRvZXMgdHdvIHRoaW5ncyA6IGRpc2FibGluZyBwcmVlbXB0aW9uIHRvIG1ha2Ugc3VyZQorCSAqIHRoZSB0ZWFyZG93biBvZiB0aGUgY2FsbGJhY2tzIGNhbiBiZSBkb25lIGNvcnJlY3RseSB3aGVuIHRoZXkgYXJlIGluCisJICogbW9kdWxlcyBhbmQgdGhleSBpbnN1cmUgUkNVIHJlYWQgY29oZXJlbmN5LgogCSAqLwogCXByZWVtcHRfZGlzYWJsZSgpOwotCXB0eXBlID0gQUNDRVNTX09OQ0UobWRhdGEtPnB0eXBlKTsKKwlwdHlwZSA9IG1kYXRhLT5wdHlwZTsKIAlpZiAobGlrZWx5KCFwdHlwZSkpIHsKIAkJbWFya2VyX3Byb2JlX2Z1bmMgKmZ1bmM7CiAJCS8qIE11c3QgcmVhZCB0aGUgcHR5cGUgYmVmb3JlIHB0ci4gVGhleSBhcmUgbm90IGRhdGEgZGVwZW5kYW50LAogCQkgKiBzbyB3ZSBwdXQgYW4gZXhwbGljaXQgc21wX3JtYigpIGhlcmUuICovCiAJCXNtcF9ybWIoKTsKLQkJZnVuYyA9IEFDQ0VTU19PTkNFKG1kYXRhLT5zaW5nbGUuZnVuYyk7CisJCWZ1bmMgPSBtZGF0YS0+c2luZ2xlLmZ1bmM7CiAJCS8qIE11c3QgcmVhZCB0aGUgcHRyIGJlZm9yZSBwcml2YXRlIGRhdGEuIFRoZXkgYXJlIG5vdCBkYXRhCiAJCSAqIGRlcGVuZGFudCwgc28gd2UgcHV0IGFuIGV4cGxpY2l0IHNtcF9ybWIoKSBoZXJlLiAqLwogCQlzbXBfcm1iKCk7CkBAIC0xMzMsNyArMTMzLDcgQEAKIAkJICogaW4gdGhlIGZhc3QgcGF0aCwgc28gcHV0IHRoZSBleHBsaWNpdCBiYXJyaWVyIGhlcmUuCiAJCSAqLwogCQlzbXBfcmVhZF9iYXJyaWVyX2RlcGVuZHMoKTsKLQkJbXVsdGkgPSBBQ0NFU1NfT05DRShtZGF0YS0+bXVsdGkpOworCQltdWx0aSA9IG1kYXRhLT5tdWx0aTsKIAkJZm9yIChpID0gMDsgbXVsdGlbaV0uZnVuYzsgaSsrKSB7CiAJCQl2YV9zdGFydChhcmdzLCBmbXQpOwogCQkJbXVsdGlbaV0uZnVuYyhtdWx0aVtpXS5wcm9iZV9wcml2YXRlLCBjYWxsX3ByaXZhdGUsIGZtdCwKQEAgLTE2MSwxMyArMTYxLDEzIEBACiAJY2hhciBwdHlwZTsKIAogCXByZWVtcHRfZGlzYWJsZSgpOwotCXB0eXBlID0gQUNDRVNTX09OQ0UobWRhdGEtPnB0eXBlKTsKKwlwdHlwZSA9IG1kYXRhLT5wdHlwZTsKIAlpZiAobGlrZWx5KCFwdHlwZSkpIHsKIAkJbWFya2VyX3Byb2JlX2Z1bmMgKmZ1bmM7CiAJCS8qIE11c3QgcmVhZCB0aGUgcHR5cGUgYmVmb3JlIHB0ci4gVGhleSBhcmUgbm90IGRhdGEgZGVwZW5kYW50LAogCQkgKiBzbyB3ZSBwdXQgYW4gZXhwbGljaXQgc21wX3JtYigpIGhlcmUuICovCiAJCXNtcF9ybWIoKTsKLQkJZnVuYyA9IEFDQ0VTU19PTkNFKG1kYXRhLT5zaW5nbGUuZnVuYyk7CisJCWZ1bmMgPSBtZGF0YS0+c2luZ2xlLmZ1bmM7CiAJCS8qIE11c3QgcmVhZCB0aGUgcHRyIGJlZm9yZSBwcml2YXRlIGRhdGEuIFRoZXkgYXJlIG5vdCBkYXRhCiAJCSAqIGRlcGVuZGFudCwgc28gd2UgcHV0IGFuIGV4cGxpY2l0IHNtcF9ybWIoKSBoZXJlLiAqLwogCQlzbXBfcm1iKCk7CkBAIC0xODMsNyArMTgzLDcgQEAKIAkJICogaW4gdGhlIGZhc3QgcGF0aCwgc28gcHV0IHRoZSBleHBsaWNpdCBiYXJyaWVyIGhlcmUuCiAJCSAqLwogCQlzbXBfcmVhZF9iYXJyaWVyX2RlcGVuZHMoKTsKLQkJbXVsdGkgPSBBQ0NFU1NfT05DRShtZGF0YS0+bXVsdGkpOworCQltdWx0aSA9IG1kYXRhLT5tdWx0aTsKIAkJZm9yIChpID0gMDsgbXVsdGlbaV0uZnVuYzsgaSsrKQogCQkJbXVsdGlbaV0uZnVuYyhtdWx0aVtpXS5wcm9iZV9wcml2YXRlLCBjYWxsX3ByaXZhdGUsIGZtdCwKIAkJCQkmYXJncyk7CkBAIC01NTEsOSArNTUxLDkgQEAKIAogLyoKICAqIERpc2FibGUgYSBtYXJrZXIgYW5kIGl0cyBwcm9iZSBjYWxsYmFjay4KLSAqIE5vdGU6IG9ubHkgYWZ0ZXIgYSBzeW5jaHJvbml6ZV9zY2hlZCgpIGlzc3VlZCBhZnRlciBzZXR0aW5nIGVsZW0tPmNhbGwgdG8gdGhlCi0gKiBlbXB0eSBmdW5jdGlvbiBpbnN1cmVzIHRoYXQgdGhlIG9yaWdpbmFsIGNhbGxiYWNrIGlzIG5vdCB1c2VkIGFueW1vcmUuIFRoaXMKLSAqIGluc3VyZWQgYnkgcHJlZW1wdGlvbiBkaXNhYmxpbmcgYXJvdW5kIHRoZSBjYWxsIHNpdGUuCisgKiBOb3RlOiBvbmx5IHdhaXRpbmcgYW4gUkNVIHBlcmlvZCBhZnRlciBzZXR0aW5nIGVsZW0tPmNhbGwgdG8gdGhlIGVtcHR5CisgKiBmdW5jdGlvbiBpbnN1cmVzIHRoYXQgdGhlIG9yaWdpbmFsIGNhbGxiYWNrIGlzIG5vdCB1c2VkIGFueW1vcmUuIFRoaXMgaW5zdXJlZAorICogYnkgcHJlZW1wdF9kaXNhYmxlIGFyb3VuZCB0aGUgY2FsbCBzaXRlLgogICovCiBzdGF0aWMgdm9pZCBkaXNhYmxlX21hcmtlcihzdHJ1Y3QgbWFya2VyICplbGVtKQogewpAQCAtNTY1LDggKzU2NSw4IEBACiAJZWxlbS0+cHR5cGUgPSAwOwkvKiBzaW5nbGUgcHJvYmUgKi8KIAkvKgogCSAqIExlYXZlIHRoZSBwcml2YXRlIGRhdGEgYW5kIGlkIHRoZXJlLCBiZWNhdXNlIHJlbW92YWwgaXMgcmFjeSBhbmQKLQkgKiBzaG91bGQgYmUgZG9uZSBvbmx5IGFmdGVyIGEgc3luY2hyb25pemVfc2NoZWQoKS4gVGhlc2UgYXJlIG5ldmVyIHVzZWQKLQkgKiB1bnRpbCB0aGUgbmV4dCBpbml0aWFsaXphdGlvbiBhbnl3YXkuCisJICogc2hvdWxkIGJlIGRvbmUgb25seSBhZnRlciBhbiBSQ1UgcGVyaW9kLiBUaGVzZSBhcmUgbmV2ZXIgdXNlZCB1bnRpbAorCSAqIHRoZSBuZXh0IGluaXRpYWxpemF0aW9uIGFueXdheS4KIAkgKi8KIH0KIApAQCAtNjAxLDkgKzYwMSw2IEBACiAKIC8qCiAgKiBVcGRhdGUgcHJvYmVzLCByZW1vdmluZyB0aGUgZmF1bHR5IHByb2Jlcy4KLSAqIElzc3VlcyBhIHN5bmNocm9uaXplX3NjaGVkKCkgd2hlbiBubyByZWZlcmVuY2UgdG8gdGhlIG1vZHVsZSBwYXNzZWQKLSAqIGFzIHBhcmFtZXRlciBpcyBmb3VuZCBpbiB0aGUgcHJvYmVzIHNvIHRoZSBwcm9iZSBtb2R1bGUgY2FuIGJlCi0gKiBzYWZlbHkgdW5sb2FkZWQgZnJvbSBub3cgb24uCiAgKgogICogSW50ZXJuYWwgY2FsbGJhY2sgb25seSBjaGFuZ2VkIGJlZm9yZSB0aGUgZmlyc3QgcHJvYmUgaXMgY29ubmVjdGVkIHRvIGl0LgogICogU2luZ2xlIHByb2JlIHByaXZhdGUgZGF0YSBjYW4gb25seSBiZSBjaGFuZ2VkIG9uIDAgLT4gMSBhbmQgMiAtPiAxCkBAIC02NzQsNiArNjcxLDkgQEAKIAllbnRyeS0+cmN1X3BlbmRpbmcgPSAxOwogCS8qIHdyaXRlIHJjdV9wZW5kaW5nIGJlZm9yZSBjYWxsaW5nIHRoZSBSQ1UgY2FsbGJhY2sgKi8KIAlzbXBfd21iKCk7CisjaWZkZWYgQ09ORklHX1BSRUVNUFRfUkNVCisJc3luY2hyb25pemVfc2NoZWQoKTsJLyogVW50aWwgd2UgaGF2ZSB0aGUgY2FsbF9yY3Vfc2NoZWQoKSAqLworI2VuZGlmCiAJY2FsbF9yY3UoJmVudHJ5LT5yY3UsIGZyZWVfb2xkX2Nsb3N1cmUpOwogZW5kOgogCW11dGV4X3VubG9jaygmbWFya2Vyc19tdXRleCk7CkBAIC03MTcsNiArNzE3LDkgQEAKIAllbnRyeS0+cmN1X3BlbmRpbmcgPSAxOwogCS8qIHdyaXRlIHJjdV9wZW5kaW5nIGJlZm9yZSBjYWxsaW5nIHRoZSBSQ1UgY2FsbGJhY2sgKi8KIAlzbXBfd21iKCk7CisjaWZkZWYgQ09ORklHX1BSRUVNUFRfUkNVCisJc3luY2hyb25pemVfc2NoZWQoKTsJLyogVW50aWwgd2UgaGF2ZSB0aGUgY2FsbF9yY3Vfc2NoZWQoKSAqLworI2VuZGlmCiAJY2FsbF9yY3UoJmVudHJ5LT5yY3UsIGZyZWVfb2xkX2Nsb3N1cmUpOwogCXJlbW92ZV9tYXJrZXIobmFtZSk7CS8qIElnbm9yZSBidXN5IGVycm9yIG1lc3NhZ2UgKi8KIAlyZXQgPSAwOwpAQCAtNzk1LDYgKzc5OCw5IEBACiAJZW50cnktPnJjdV9wZW5kaW5nID0gMTsKIAkvKiB3cml0ZSByY3VfcGVuZGluZyBiZWZvcmUgY2FsbGluZyB0aGUgUkNVIGNhbGxiYWNrICovCiAJc21wX3dtYigpOworI2lmZGVmIENPTkZJR19QUkVFTVBUX1JDVQorCXN5bmNocm9uaXplX3NjaGVkKCk7CS8qIFVudGlsIHdlIGhhdmUgdGhlIGNhbGxfcmN1X3NjaGVkKCkgKi8KKyNlbmRpZgogCWNhbGxfcmN1KCZlbnRyeS0+cmN1LCBmcmVlX29sZF9jbG9zdXJlKTsKIAlyZW1vdmVfbWFya2VyKGVudHJ5LT5uYW1lKTsJLyogSWdub3JlIGJ1c3kgZXJyb3IgbWVzc2FnZSAqLwogZW5kOgpkaWZmIC0tZ2l0IGEva2VybmVsL3Bvd2VyL0tjb25maWcgYi9rZXJuZWwvcG93ZXIvS2NvbmZpZwppbmRleCA3OTgzMzE3Li42MjMzZjNiIDEwMDY0NAotLS0gYS9rZXJuZWwvcG93ZXIvS2NvbmZpZworKysgYi9rZXJuZWwvcG93ZXIvS2NvbmZpZwpAQCAtMTkwLDcgKzE5MCw3IEBACiAJICBub3RpZmljYXRpb24gb2YgQVBNICJldmVudHMiIChlLmcuIGJhdHRlcnkgc3RhdHVzIGNoYW5nZSkuCiAKIAkgIEluIG9yZGVyIHRvIHVzZSBBUE0sIHlvdSB3aWxsIG5lZWQgc3VwcG9ydGluZyBzb2Z0d2FyZS4gRm9yIGxvY2F0aW9uCi0JICBhbmQgbW9yZSBpbmZvcm1hdGlvbiwgcmVhZCA8ZmlsZTpEb2N1bWVudGF0aW9uL3BtLnR4dD4gYW5kIHRoZQorCSAgYW5kIG1vcmUgaW5mb3JtYXRpb24sIHJlYWQgPGZpbGU6RG9jdW1lbnRhdGlvbi9wb3dlci9wbS50eHQ+IGFuZCB0aGUKIAkgIEJhdHRlcnkgUG93ZXJlZCBMaW51eCBtaW5pLUhPV1RPLCBhdmFpbGFibGUgZnJvbQogCSAgPGh0dHA6Ly93d3cudGxkcC5vcmcvZG9jcy5odG1sI2hvd3RvPi4KIApkaWZmIC0tZ2l0IGEva2VybmVsL3Bvd2VyL3NuYXBzaG90LmMgYi9rZXJuZWwvcG93ZXIvc25hcHNob3QuYwppbmRleCA3MmEwMjBjLi41ZjkxYTA3IDEwMDY0NAotLS0gYS9rZXJuZWwvcG93ZXIvc25hcHNob3QuYworKysgYi9rZXJuZWwvcG93ZXIvc25hcHNob3QuYwpAQCAtNDQ3LDcgKzQ0Nyw3IEBACiAgKglvZiBAYm0tPmN1cl96b25lX2JtIGFyZSB1cGRhdGVkLgogICovCiAKLXN0YXRpYyB2b2lkIG1lbW9yeV9ibV9maW5kX2JpdChzdHJ1Y3QgbWVtb3J5X2JpdG1hcCAqYm0sIHVuc2lnbmVkIGxvbmcgcGZuLAorc3RhdGljIGludCBtZW1vcnlfYm1fZmluZF9iaXQoc3RydWN0IG1lbW9yeV9iaXRtYXAgKmJtLCB1bnNpZ25lZCBsb25nIHBmbiwKIAkJCQl2b2lkICoqYWRkciwgdW5zaWduZWQgaW50ICpiaXRfbnIpCiB7CiAJc3RydWN0IHpvbmVfYml0bWFwICp6b25lX2JtOwpAQCAtNDYxLDcgKzQ2MSw4IEBACiAJCXdoaWxlIChwZm4gPCB6b25lX2JtLT5zdGFydF9wZm4gfHwgcGZuID49IHpvbmVfYm0tPmVuZF9wZm4pIHsKIAkJCXpvbmVfYm0gPSB6b25lX2JtLT5uZXh0OwogCi0JCQlCVUdfT04oIXpvbmVfYm0pOworCQkJaWYgKCF6b25lX2JtKQorCQkJCXJldHVybiAtRUZBVUxUOwogCQl9CiAJCWJtLT5jdXIuem9uZV9ibSA9IHpvbmVfYm07CiAJfQpAQCAtNDc5LDIzICs0ODAsNDAgQEAKIAlwZm4gLT0gYmItPnN0YXJ0X3BmbjsKIAkqYml0X25yID0gcGZuICUgQk1fQklUU19QRVJfQ0hVTks7CiAJKmFkZHIgPSBiYi0+ZGF0YSArIHBmbiAvIEJNX0JJVFNfUEVSX0NIVU5LOworCXJldHVybiAwOwogfQogCiBzdGF0aWMgdm9pZCBtZW1vcnlfYm1fc2V0X2JpdChzdHJ1Y3QgbWVtb3J5X2JpdG1hcCAqYm0sIHVuc2lnbmVkIGxvbmcgcGZuKQogewogCXZvaWQgKmFkZHI7CiAJdW5zaWduZWQgaW50IGJpdDsKKwlpbnQgZXJyb3I7CiAKLQltZW1vcnlfYm1fZmluZF9iaXQoYm0sIHBmbiwgJmFkZHIsICZiaXQpOworCWVycm9yID0gbWVtb3J5X2JtX2ZpbmRfYml0KGJtLCBwZm4sICZhZGRyLCAmYml0KTsKKwlCVUdfT04oZXJyb3IpOwogCXNldF9iaXQoYml0LCBhZGRyKTsKIH0KIAorc3RhdGljIGludCBtZW1fYm1fc2V0X2JpdF9jaGVjayhzdHJ1Y3QgbWVtb3J5X2JpdG1hcCAqYm0sIHVuc2lnbmVkIGxvbmcgcGZuKQoreworCXZvaWQgKmFkZHI7CisJdW5zaWduZWQgaW50IGJpdDsKKwlpbnQgZXJyb3I7CisKKwllcnJvciA9IG1lbW9yeV9ibV9maW5kX2JpdChibSwgcGZuLCAmYWRkciwgJmJpdCk7CisJaWYgKCFlcnJvcikKKwkJc2V0X2JpdChiaXQsIGFkZHIpOworCXJldHVybiBlcnJvcjsKK30KKwogc3RhdGljIHZvaWQgbWVtb3J5X2JtX2NsZWFyX2JpdChzdHJ1Y3QgbWVtb3J5X2JpdG1hcCAqYm0sIHVuc2lnbmVkIGxvbmcgcGZuKQogewogCXZvaWQgKmFkZHI7CiAJdW5zaWduZWQgaW50IGJpdDsKKwlpbnQgZXJyb3I7CiAKLQltZW1vcnlfYm1fZmluZF9iaXQoYm0sIHBmbiwgJmFkZHIsICZiaXQpOworCWVycm9yID0gbWVtb3J5X2JtX2ZpbmRfYml0KGJtLCBwZm4sICZhZGRyLCAmYml0KTsKKwlCVUdfT04oZXJyb3IpOwogCWNsZWFyX2JpdChiaXQsIGFkZHIpOwogfQogCkBAIC01MDMsOCArNTIxLDEwIEBACiB7CiAJdm9pZCAqYWRkcjsKIAl1bnNpZ25lZCBpbnQgYml0OworCWludCBlcnJvcjsKIAotCW1lbW9yeV9ibV9maW5kX2JpdChibSwgcGZuLCAmYWRkciwgJmJpdCk7CisJZXJyb3IgPSBtZW1vcnlfYm1fZmluZF9iaXQoYm0sIHBmbiwgJmFkZHIsICZiaXQpOworCUJVR19PTihlcnJvcik7CiAJcmV0dXJuIHRlc3RfYml0KGJpdCwgYWRkcik7CiB9CiAKQEAgLTcwOSw4ICs3MjksMTUgQEAKIAkJCQlyZWdpb24tPmVuZF9wZm4gPDwgUEFHRV9TSElGVCk7CiAKIAkJZm9yIChwZm4gPSByZWdpb24tPnN0YXJ0X3BmbjsgcGZuIDwgcmVnaW9uLT5lbmRfcGZuOyBwZm4rKykKLQkJCWlmIChwZm5fdmFsaWQocGZuKSkKLQkJCQltZW1vcnlfYm1fc2V0X2JpdChibSwgcGZuKTsKKwkJCWlmIChwZm5fdmFsaWQocGZuKSkgeworCQkJCS8qCisJCQkJICogSXQgaXMgc2FmZSB0byBpZ25vcmUgdGhlIHJlc3VsdCBvZgorCQkJCSAqIG1lbV9ibV9zZXRfYml0X2NoZWNrKCkgaGVyZSwgc2luY2Ugd2Ugd29uJ3QKKwkJCQkgKiB0b3VjaCB0aGUgUEZOcyBmb3Igd2hpY2ggdGhlIGVycm9yIGlzCisJCQkJICogcmV0dXJuZWQgYW55d2F5LgorCQkJCSAqLworCQkJCW1lbV9ibV9zZXRfYml0X2NoZWNrKGJtLCBwZm4pOworCQkJfQogCX0KIH0KIApkaWZmIC0tZ2l0IGEva2VybmVsL3ByaW50ay5jIGIva2VybmVsL3ByaW50ay5jCmluZGV4IDlhZGMyYTQuLmJkZDRlYTggMTAwNjQ0Ci0tLSBhL2tlcm5lbC9wcmludGsuYworKysgYi9rZXJuZWwvcHJpbnRrLmMKQEAgLTYxNiw2ICs2MTYsNTMgQEAKIC8qIGNwdSBjdXJyZW50bHkgaG9sZGluZyBsb2didWZfbG9jayAqLwogc3RhdGljIHZvbGF0aWxlIHVuc2lnbmVkIGludCBwcmludGtfY3B1ID0gVUlOVF9NQVg7CiAKKy8qCisgKiBDYW4gd2UgYWN0dWFsbHkgdXNlIHRoZSBjb25zb2xlIGF0IHRoaXMgdGltZSBvbiB0aGlzIGNwdT8KKyAqCisgKiBDb25zb2xlIGRyaXZlcnMgbWF5IGFzc3VtZSB0aGF0IHBlci1jcHUgcmVzb3VyY2VzIGhhdmUKKyAqIGJlZW4gYWxsb2NhdGVkLiBTbyB1bmxlc3MgdGhleSdyZSBleHBsaWNpdGx5IG1hcmtlZCBhcworICogYmVpbmcgYWJsZSB0byBjb3BlIChDT05fQU5ZVElNRSkgZG9uJ3QgY2FsbCB0aGVtIHVudGlsCisgKiB0aGlzIENQVSBpcyBvZmZpY2lhbGx5IHVwLgorICovCitzdGF0aWMgaW5saW5lIGludCBjYW5fdXNlX2NvbnNvbGUodW5zaWduZWQgaW50IGNwdSkKK3sKKwlyZXR1cm4gY3B1X29ubGluZShjcHUpIHx8IGhhdmVfY2FsbGFibGVfY29uc29sZSgpOworfQorCisvKgorICogVHJ5IHRvIGdldCBjb25zb2xlIG93bmVyc2hpcCB0byBhY3R1YWxseSBzaG93IHRoZSBrZXJuZWwKKyAqIG1lc3NhZ2VzIGZyb20gYSAncHJpbnRrJy4gUmV0dXJuIHRydWUgKGFuZCB3aXRoIHRoZQorICogY29uc29sZV9zZW1hcGhvcmUgaGVsZCwgYW5kICdjb25zb2xlX2xvY2tlZCcgc2V0KSBpZiBpdAorICogaXMgc3VjY2Vzc2Z1bCwgZmFsc2Ugb3RoZXJ3aXNlLgorICoKKyAqIFRoaXMgZ2V0cyBjYWxsZWQgd2l0aCB0aGUgJ2xvZ2J1Zl9sb2NrJyBzcGlubG9jayBoZWxkIGFuZAorICogaW50ZXJydXB0cyBkaXNhYmxlZC4gSXQgc2hvdWxkIHJldHVybiB3aXRoICdsb2NrYnVmX2xvY2snCisgKiByZWxlYXNlZCBidXQgaW50ZXJydXB0cyBzdGlsbCBkaXNhYmxlZC4KKyAqLworc3RhdGljIGludCBhY3F1aXJlX2NvbnNvbGVfc2VtYXBob3JlX2Zvcl9wcmludGsodW5zaWduZWQgaW50IGNwdSkKK3sKKwlpbnQgcmV0dmFsID0gMDsKKworCWlmICghdHJ5X2FjcXVpcmVfY29uc29sZV9zZW0oKSkgeworCQlyZXR2YWwgPSAxOworCisJCS8qCisJCSAqIElmIHdlIGNhbid0IHVzZSB0aGUgY29uc29sZSwgd2UgbmVlZCB0byByZWxlYXNlCisJCSAqIHRoZSBjb25zb2xlIHNlbWFwaG9yZSBieSBoYW5kIHRvIGF2b2lkIGZsdXNoaW5nCisJCSAqIHRoZSBidWZmZXIuIFdlIG5lZWQgdG8gaG9sZCB0aGUgY29uc29sZSBzZW1hcGhvcmUKKwkJICogaW4gb3JkZXIgdG8gZG8gdGhpcyB0ZXN0IHNhZmVseS4KKwkJICovCisJCWlmICghY2FuX3VzZV9jb25zb2xlKGNwdSkpIHsKKwkJCWNvbnNvbGVfbG9ja2VkID0gMDsKKwkJCXVwKCZjb25zb2xlX3NlbSk7CisJCQlyZXR2YWwgPSAwOworCQl9CisJfQorCXByaW50a19jcHUgPSBVSU5UX01BWDsKKwlzcGluX3VubG9jaygmbG9nYnVmX2xvY2spOworCXJldHVybiByZXR2YWw7Cit9CisKIGNvbnN0IGNoYXIgcHJpbnRrX3JlY3Vyc2lvbl9idWdfbXNnIFtdID0KIAkJCUtFUk5fQ1JJVCAiQlVHOiByZWNlbnQgcHJpbnRrIHJlY3Vyc2lvbiFcbiI7CiBzdGF0aWMgaW50IHByaW50a19yZWN1cnNpb25fYnVnOwpAQCAtNzI1LDQzICs3NzIsMjIgQEAKIAkJCWxvZ19sZXZlbF91bmtub3duID0gMTsKIAl9CiAKLQlpZiAoIWRvd25fdHJ5bG9jaygmY29uc29sZV9zZW0pKSB7Ci0JCS8qCi0JCSAqIFdlIG93biB0aGUgZHJpdmVycy4gIFdlIGNhbiBkcm9wIHRoZSBzcGlubG9jayBhbmQKLQkJICogbGV0IHJlbGVhc2VfY29uc29sZV9zZW0oKSBwcmludCB0aGUgdGV4dCwgbWF5YmUgLi4uCi0JCSAqLwotCQljb25zb2xlX2xvY2tlZCA9IDE7Ci0JCXByaW50a19jcHUgPSBVSU5UX01BWDsKLQkJc3Bpbl91bmxvY2soJmxvZ2J1Zl9sb2NrKTsKKwkvKgorCSAqIFRyeSB0byBhY3F1aXJlIGFuZCB0aGVuIGltbWVkaWF0ZWx5IHJlbGVhc2UgdGhlCisJICogY29uc29sZSBzZW1hcGhvcmUuIFRoZSByZWxlYXNlIHdpbGwgZG8gYWxsIHRoZQorCSAqIGFjdHVhbCBtYWdpYyAocHJpbnQgb3V0IGJ1ZmZlcnMsIHdha2UgdXAga2xvZ2QsCisJICogZXRjKS4gCisJICoKKwkgKiBUaGUgYWNxdWlyZV9jb25zb2xlX3NlbWFwaG9yZV9mb3JfcHJpbnRrKCkgZnVuY3Rpb24KKwkgKiB3aWxsIHJlbGVhc2UgJ2xvZ2J1Zl9sb2NrJyByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQKKwkgKiBhY3R1YWxseSBnZXRzIHRoZSBzZW1hcGhvcmUgb3Igbm90LgorCSAqLworCWlmIChhY3F1aXJlX2NvbnNvbGVfc2VtYXBob3JlX2Zvcl9wcmludGsodGhpc19jcHUpKQorCQlyZWxlYXNlX2NvbnNvbGVfc2VtKCk7CiAKLQkJLyoKLQkJICogQ29uc29sZSBkcml2ZXJzIG1heSBhc3N1bWUgdGhhdCBwZXItY3B1IHJlc291cmNlcyBoYXZlCi0JCSAqIGJlZW4gYWxsb2NhdGVkLiBTbyB1bmxlc3MgdGhleSdyZSBleHBsaWNpdGx5IG1hcmtlZCBhcwotCQkgKiBiZWluZyBhYmxlIHRvIGNvcGUgKENPTl9BTllUSU1FKSBkb24ndCBjYWxsIHRoZW0gdW50aWwKLQkJICogdGhpcyBDUFUgaXMgb2ZmaWNpYWxseSB1cC4KLQkJICovCi0JCWlmIChjcHVfb25saW5lKHNtcF9wcm9jZXNzb3JfaWQoKSkgfHwgaGF2ZV9jYWxsYWJsZV9jb25zb2xlKCkpIHsKLQkJCWNvbnNvbGVfbWF5X3NjaGVkdWxlID0gMDsKLQkJCXJlbGVhc2VfY29uc29sZV9zZW0oKTsKLQkJfSBlbHNlIHsKLQkJCS8qIFJlbGVhc2UgYnkgaGFuZCB0byBhdm9pZCBmbHVzaGluZyB0aGUgYnVmZmVyLiAqLwotCQkJY29uc29sZV9sb2NrZWQgPSAwOwotCQkJdXAoJmNvbnNvbGVfc2VtKTsKLQkJfQotCQlsb2NrZGVwX29uKCk7Ci0JCXJhd19sb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7Ci0JfSBlbHNlIHsKLQkJLyoKLQkJICogU29tZW9uZSBlbHNlIG93bnMgdGhlIGRyaXZlcnMuICBXZSBkcm9wIHRoZSBzcGlubG9jaywgd2hpY2gKLQkJICogYWxsb3dzIHRoZSBzZW1hcGhvcmUgaG9sZGVyIHRvIHByb2NlZWQgYW5kIHRvIGNhbGwgdGhlCi0JCSAqIGNvbnNvbGUgZHJpdmVycyB3aXRoIHRoZSBvdXRwdXQgd2hpY2ggd2UganVzdCBwcm9kdWNlZC4KLQkJICovCi0JCXByaW50a19jcHUgPSBVSU5UX01BWDsKLQkJc3Bpbl91bmxvY2soJmxvZ2J1Zl9sb2NrKTsKLQkJbG9ja2RlcF9vbigpOworCWxvY2tkZXBfb24oKTsKIG91dF9yZXN0b3JlX2lycXM6Ci0JCXJhd19sb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7Ci0JfQorCXJhd19sb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7CiAKIAlwcmVlbXB0X2VuYWJsZSgpOwogCXJldHVybiBwcmludGVkX2xlbjsKZGlmZiAtLWdpdCBhL2tlcm5lbC9yZWxheS5jIGIva2VybmVsL3JlbGF5LmMKaW5kZXggZDA4MGI5ZC4uZDYyMDRhNCAxMDA2NDQKLS0tIGEva2VybmVsL3JlbGF5LmMKKysrIGIva2VybmVsL3JlbGF5LmMKQEAgLTczNiw3ICs3MzYsNyBAQAogCWtyZWZfZ2V0KCZidWYtPmtyZWYpOwogCWZpbHAtPnByaXZhdGVfZGF0YSA9IGJ1ZjsKIAotCXJldHVybiAwOworCXJldHVybiBub25zZWVrYWJsZV9vcGVuKGlub2RlLCBmaWxwKTsKIH0KIAogLyoqCkBAIC0xMDU2LDYgKzEwNTYsMTAgQEAKIAkuZ2V0ID0gZ2VuZXJpY19waXBlX2J1Zl9nZXQsCiB9OwogCitzdGF0aWMgdm9pZCByZWxheV9wYWdlX3JlbGVhc2Uoc3RydWN0IHNwbGljZV9waXBlX2Rlc2MgKnNwZCwgdW5zaWduZWQgaW50IGkpCit7Cit9CisKIC8qCiAgKglzdWJidWZfc3BsaWNlX2FjdG9yIC0gc3BsaWNlIHVwIHRvIG9uZSBzdWJidWYncyB3b3J0aCBvZiBkYXRhCiAgKi8KQEAgLTEwNjYsNyArMTA3MCw3IEBACiAJCQkgICAgICAgdW5zaWduZWQgaW50IGZsYWdzLAogCQkJICAgICAgIGludCAqbm9ucGFkX3JldCkKIHsKLQl1bnNpZ25lZCBpbnQgcGlkeCwgcG9mZiwgdG90YWxfbGVuLCBzdWJidWZfcGFnZXMsIHJldDsKKwl1bnNpZ25lZCBpbnQgcGlkeCwgcG9mZiwgdG90YWxfbGVuLCBzdWJidWZfcGFnZXMsIG5yX3BhZ2VzLCByZXQ7CiAJc3RydWN0IHJjaGFuX2J1ZiAqcmJ1ZiA9IGluLT5wcml2YXRlX2RhdGE7CiAJdW5zaWduZWQgaW50IHN1YmJ1Zl9zaXplID0gcmJ1Zi0+Y2hhbi0+c3ViYnVmX3NpemU7CiAJdWludDY0X3QgcG9zID0gKHVpbnQ2NF90KSAqcHBvczsKQEAgLTEwODMsNiArMTA4Nyw3IEBACiAJCS5wYXJ0aWFsID0gcGFydGlhbCwKIAkJLmZsYWdzID0gZmxhZ3MsCiAJCS5vcHMgPSAmcmVsYXlfcGlwZV9idWZfb3BzLAorCQkuc3BkX3JlbGVhc2UgPSByZWxheV9wYWdlX3JlbGVhc2UsCiAJfTsKIAogCWlmIChyYnVmLT5zdWJidWZzX3Byb2R1Y2VkID09IHJidWYtPnN1YmJ1ZnNfY29uc3VtZWQpCkBAIC0xMDk3LDggKzExMDIsOSBAQAogCXN1YmJ1Zl9wYWdlcyA9IHJidWYtPmNoYW4tPmFsbG9jX3NpemUgPj4gUEFHRV9TSElGVDsKIAlwaWR4ID0gKHJlYWRfc3RhcnQgLyBQQUdFX1NJWkUpICUgc3ViYnVmX3BhZ2VzOwogCXBvZmYgPSByZWFkX3N0YXJ0ICYgflBBR0VfTUFTSzsKKwlucl9wYWdlcyA9IG1pbl90KHVuc2lnbmVkIGludCwgc3ViYnVmX3BhZ2VzLCBQSVBFX0JVRkZFUlMpOwogCi0JZm9yICh0b3RhbF9sZW4gPSAwOyBzcGQubnJfcGFnZXMgPCBzdWJidWZfcGFnZXM7IHNwZC5ucl9wYWdlcysrKSB7CisJZm9yICh0b3RhbF9sZW4gPSAwOyBzcGQubnJfcGFnZXMgPCBucl9wYWdlczsgc3BkLm5yX3BhZ2VzKyspIHsKIAkJdW5zaWduZWQgaW50IHRoaXNfbGVuLCB0aGlzX2VuZCwgcHJpdmF0ZTsKIAkJdW5zaWduZWQgaW50IGN1cl9wb3MgPSByZWFkX3N0YXJ0ICsgdG90YWxfbGVuOwogCmRpZmYgLS1naXQgYS9rZXJuZWwvc2NoZWQuYyBiL2tlcm5lbC9zY2hlZC5jCmluZGV4IDFjYjUzZmIuLjhkY2RlYzYgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9zY2hlZC5jCisrKyBiL2tlcm5lbC9zY2hlZC5jCkBAIC0zMDEsNyArMzAxLDcgQEAKIAkvKiAnY3VycicgcG9pbnRzIHRvIGN1cnJlbnRseSBydW5uaW5nIGVudGl0eSBvbiB0aGlzIGNmc19ycS4KIAkgKiBJdCBpcyBzZXQgdG8gTlVMTCBvdGhlcndpc2UgKGkuZSB3aGVuIG5vbmUgYXJlIGN1cnJlbnRseSBydW5uaW5nKS4KIAkgKi8KLQlzdHJ1Y3Qgc2NoZWRfZW50aXR5ICpjdXJyOworCXN0cnVjdCBzY2hlZF9lbnRpdHkgKmN1cnIsICpuZXh0OwogCiAJdW5zaWduZWQgbG9uZyBucl9zcHJlYWRfb3ZlcjsKIApAQCAtNTk0LDE4ICs1OTQsMTQgQEAKIAlTQ0hFRF9GRUFUX05FV19GQUlSX1NMRUVQRVJTCT0gMSwKIAlTQ0hFRF9GRUFUX1dBS0VVUF9QUkVFTVBUCT0gMiwKIAlTQ0hFRF9GRUFUX1NUQVJUX0RFQklUCQk9IDQsCi0JU0NIRURfRkVBVF9UUkVFX0FWRwkJPSA4LAotCVNDSEVEX0ZFQVRfQVBQUk9YX0FWRwkJPSAxNiwKLQlTQ0hFRF9GRUFUX0hSVElDSwkJPSAzMiwKLQlTQ0hFRF9GRUFUX0RPVUJMRV9USUNLCQk9IDY0LAorCVNDSEVEX0ZFQVRfSFJUSUNLCQk9IDgsCisJU0NIRURfRkVBVF9ET1VCTEVfVElDSwkJPSAxNiwKIH07CiAKIGNvbnN0X2RlYnVnIHVuc2lnbmVkIGludCBzeXNjdGxfc2NoZWRfZmVhdHVyZXMgPQogCQlTQ0hFRF9GRUFUX05FV19GQUlSX1NMRUVQRVJTCSogMSB8CiAJCVNDSEVEX0ZFQVRfV0FLRVVQX1BSRUVNUFQJKiAxIHwKIAkJU0NIRURfRkVBVF9TVEFSVF9ERUJJVAkJKiAxIHwKLQkJU0NIRURfRkVBVF9UUkVFX0FWRwkJKiAwIHwKLQkJU0NIRURfRkVBVF9BUFBST1hfQVZHCQkqIDAgfAogCQlTQ0hFRF9GRUFUX0hSVElDSwkJKiAxIHwKIAkJU0NIRURfRkVBVF9ET1VCTEVfVElDSwkJKiAwOwogCkBAIC0xMDU2LDYgKzEwNTIsNDkgQEAKIAlyZXNjaGVkX3Rhc2soY3B1X2N1cnIoY3B1KSk7CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcnEtPmxvY2ssIGZsYWdzKTsKIH0KKworI2lmZGVmIENPTkZJR19OT19IWgorLyoKKyAqIFdoZW4gYWRkX3RpbWVyX29uKCkgZW5xdWV1ZXMgYSB0aW1lciBpbnRvIHRoZSB0aW1lciB3aGVlbCBvZiBhbgorICogaWRsZSBDUFUgdGhlbiB0aGlzIHRpbWVyIG1pZ2h0IGV4cGlyZSBiZWZvcmUgdGhlIG5leHQgdGltZXIgZXZlbnQKKyAqIHdoaWNoIGlzIHNjaGVkdWxlZCB0byB3YWtlIHVwIHRoYXQgQ1BVLiBJbiBjYXNlIG9mIGEgY29tcGxldGVseQorICogaWRsZSBzeXN0ZW0gdGhlIG5leHQgZXZlbnQgbWlnaHQgZXZlbiBiZSBpbmZpbml0ZSB0aW1lIGludG8gdGhlCisgKiBmdXR1cmUuIHdha2VfdXBfaWRsZV9jcHUoKSBlbnN1cmVzIHRoYXQgdGhlIENQVSBpcyB3b2tlbiB1cCBhbmQKKyAqIGxlYXZlcyB0aGUgaW5uZXIgaWRsZSBsb29wIHNvIHRoZSBuZXdseSBhZGRlZCB0aW1lciBpcyB0YWtlbiBpbnRvCisgKiBhY2NvdW50IHdoZW4gdGhlIENQVSBnb2VzIGJhY2sgdG8gaWRsZSBhbmQgZXZhbHVhdGVzIHRoZSB0aW1lcgorICogd2hlZWwgZm9yIHRoZSBuZXh0IHRpbWVyIGV2ZW50LgorICovCit2b2lkIHdha2VfdXBfaWRsZV9jcHUoaW50IGNwdSkKK3sKKwlzdHJ1Y3QgcnEgKnJxID0gY3B1X3JxKGNwdSk7CisKKwlpZiAoY3B1ID09IHNtcF9wcm9jZXNzb3JfaWQoKSkKKwkJcmV0dXJuOworCisJLyoKKwkgKiBUaGlzIGlzIHNhZmUsIGFzIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggdGhlIHRpbWVyCisJICogd2hlZWwgYmFzZSBsb2NrIG9mIChjcHUpIGhlbGQuIFdoZW4gdGhlIENQVSBpcyBvbiB0aGUgd2F5CisJICogdG8gaWRsZSBhbmQgaGFzIG5vdCB5ZXQgc2V0IHJxLT5jdXJyIHRvIGlkbGUgdGhlbiBpdCB3aWxsCisJICogYmUgc2VyaWFsaXplZCBvbiB0aGUgdGltZXIgd2hlZWwgYmFzZSBsb2NrIGFuZCB0YWtlIHRoZSBuZXcKKwkgKiB0aW1lciBpbnRvIGFjY291bnQgYXV0b21hdGljYWxseS4KKwkgKi8KKwlpZiAocnEtPmN1cnIgIT0gcnEtPmlkbGUpCisJCXJldHVybjsKKworCS8qCisJICogV2UgY2FuIHNldCBUSUZfUkVTQ0hFRCBvbiB0aGUgaWRsZSB0YXNrIG9mIHRoZSBvdGhlciBDUFUKKwkgKiBsb2NrbGVzcy4gVGhlIHdvcnN0IGNhc2UgaXMgdGhhdCB0aGUgb3RoZXIgQ1BVIHJ1bnMgdGhlCisJICogaWRsZSB0YXNrIHRocm91Z2ggYW4gYWRkaXRpb25hbCBOT09QIHNjaGVkdWxlKCkKKwkgKi8KKwlzZXRfdHNrX3RocmVhZF9mbGFnKHJxLT5pZGxlLCBUSUZfTkVFRF9SRVNDSEVEKTsKKworCS8qIE5FRURfUkVTQ0hFRCBtdXN0IGJlIHZpc2libGUgYmVmb3JlIHdlIHRlc3QgcG9sbGluZyAqLworCXNtcF9tYigpOworCWlmICghdHNrX2lzX3BvbGxpbmcocnEtPmlkbGUpKQorCQlzbXBfc2VuZF9yZXNjaGVkdWxlKGNwdSk7Cit9CisjZW5kaWYKKwogI2Vsc2UKIHN0YXRpYyB2b2lkIF9fcmVzY2hlZF90YXNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgaW50IHRpZl9iaXQpCiB7CkBAIC0xMDg0LDcgKzExMjMsNyBAQAogCXU2NCB0bXA7CiAKIAlpZiAodW5saWtlbHkoIWx3LT5pbnZfd2VpZ2h0KSkKLQkJbHctPmludl93ZWlnaHQgPSAoV01VTFRfQ09OU1QgLSBsdy0+d2VpZ2h0LzIpIC8gbHctPndlaWdodCArIDE7CisJCWx3LT5pbnZfd2VpZ2h0ID0gKFdNVUxUX0NPTlNULWx3LT53ZWlnaHQvMikgLyAobHctPndlaWdodCsxKTsKIAogCXRtcCA9ICh1NjQpZGVsdGFfZXhlYyAqIHdlaWdodDsKIAkvKgpAQCAtMTEwOCwxMSArMTE0NywxMyBAQAogc3RhdGljIGlubGluZSB2b2lkIHVwZGF0ZV9sb2FkX2FkZChzdHJ1Y3QgbG9hZF93ZWlnaHQgKmx3LCB1bnNpZ25lZCBsb25nIGluYykKIHsKIAlsdy0+d2VpZ2h0ICs9IGluYzsKKwlsdy0+aW52X3dlaWdodCA9IDA7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGVfbG9hZF9zdWIoc3RydWN0IGxvYWRfd2VpZ2h0ICpsdywgdW5zaWduZWQgbG9uZyBkZWMpCiB7CiAJbHctPndlaWdodCAtPSBkZWM7CisJbHctPmludl93ZWlnaHQgPSAwOwogfQogCiAvKgpAQCAtMTM5NCw2ICsxNDM1LDEyIEBACiB7CiAJczY0IGRlbHRhOwogCisJLyoKKwkgKiBCdWRkeSBjYW5kaWRhdGVzIGFyZSBjYWNoZSBob3Q6CisJICovCisJaWYgKCZwLT5zZSA9PSBjZnNfcnFfb2YoJnAtPnNlKS0+bmV4dCkKKwkJcmV0dXJuIDE7CisKIAlpZiAocC0+c2NoZWRfY2xhc3MgIT0gJmZhaXJfc2NoZWRfY2xhc3MpCiAJCXJldHVybiAwOwogCkBAIC0xODUzLDEwICsxOTAwLDExIEBACiAJCXNjaGVkc3RhdF9pbmMocCwgc2UubnJfd2FrZXVwc19yZW1vdGUpOwogCXVwZGF0ZV9ycV9jbG9jayhycSk7CiAJYWN0aXZhdGVfdGFzayhycSwgcCwgMSk7Ci0JY2hlY2tfcHJlZW1wdF9jdXJyKHJxLCBwKTsKIAlzdWNjZXNzID0gMTsKIAogb3V0X3J1bm5pbmc6CisJY2hlY2tfcHJlZW1wdF9jdXJyKHJxLCBwKTsKKwogCXAtPnN0YXRlID0gVEFTS19SVU5OSU5HOwogI2lmZGVmIENPTkZJR19TTVAKIAlpZiAocC0+c2NoZWRfY2xhc3MtPnRhc2tfd2FrZV91cCkKQEAgLTE4OTAsNiArMTkzOCw4IEBACiAJcC0+c2UuZXhlY19zdGFydAkJPSAwOwogCXAtPnNlLnN1bV9leGVjX3J1bnRpbWUJCT0gMDsKIAlwLT5zZS5wcmV2X3N1bV9leGVjX3J1bnRpbWUJPSAwOworCXAtPnNlLmxhc3Rfd2FrZXVwCQk9IDA7CisJcC0+c2UuYXZnX292ZXJsYXAJCT0gMDsKIAogI2lmZGVmIENPTkZJR19TQ0hFRFNUQVRTCiAJcC0+c2Uud2FpdF9zdGFydAkJPSAwOwpAQCAtMzg3NSw3ICszOTI1LDcgQEAKIAogCWlmIChwcmV2LT5zdGF0ZSAmJiAhKHByZWVtcHRfY291bnQoKSAmIFBSRUVNUFRfQUNUSVZFKSkgewogCQlpZiAodW5saWtlbHkoKHByZXYtPnN0YXRlICYgVEFTS19JTlRFUlJVUFRJQkxFKSAmJgotCQkJCXVubGlrZWx5KHNpZ25hbF9wZW5kaW5nKHByZXYpKSkpIHsKKwkJCQlzaWduYWxfcGVuZGluZyhwcmV2KSkpIHsKIAkJCXByZXYtPnN0YXRlID0gVEFTS19SVU5OSU5HOwogCQl9IGVsc2UgewogCQkJZGVhY3RpdmF0ZV90YXNrKHJxLCBwcmV2LCAxKTsKQEAgLTQyNjgsMTEgKzQzMTgsMTAgQEAKIAlvbGRwcmlvID0gcC0+cHJpbzsKIAlvbl9ycSA9IHAtPnNlLm9uX3JxOwogCXJ1bm5pbmcgPSB0YXNrX2N1cnJlbnQocnEsIHApOwotCWlmIChvbl9ycSkgeworCWlmIChvbl9ycSkKIAkJZGVxdWV1ZV90YXNrKHJxLCBwLCAwKTsKLQkJaWYgKHJ1bm5pbmcpCi0JCQlwLT5zY2hlZF9jbGFzcy0+cHV0X3ByZXZfdGFzayhycSwgcCk7Ci0JfQorCWlmIChydW5uaW5nKQorCQlwLT5zY2hlZF9jbGFzcy0+cHV0X3ByZXZfdGFzayhycSwgcCk7CiAKIAlpZiAocnRfcHJpbyhwcmlvKSkKIAkJcC0+c2NoZWRfY2xhc3MgPSAmcnRfc2NoZWRfY2xhc3M7CkBAIC00MjgxLDEwICs0MzMwLDkgQEAKIAogCXAtPnByaW8gPSBwcmlvOwogCisJaWYgKHJ1bm5pbmcpCisJCXAtPnNjaGVkX2NsYXNzLT5zZXRfY3Vycl90YXNrKHJxKTsKIAlpZiAob25fcnEpIHsKLQkJaWYgKHJ1bm5pbmcpCi0JCQlwLT5zY2hlZF9jbGFzcy0+c2V0X2N1cnJfdGFzayhycSk7Ci0KIAkJZW5xdWV1ZV90YXNrKHJxLCBwLCAwKTsKIAogCQljaGVja19jbGFzc19jaGFuZ2VkKHJxLCBwLCBwcmV2X2NsYXNzLCBvbGRwcmlvLCBydW5uaW5nKTsKQEAgLTQ1ODEsMTkgKzQ2MjksMTcgQEAKIAl1cGRhdGVfcnFfY2xvY2socnEpOwogCW9uX3JxID0gcC0+c2Uub25fcnE7CiAJcnVubmluZyA9IHRhc2tfY3VycmVudChycSwgcCk7Ci0JaWYgKG9uX3JxKSB7CisJaWYgKG9uX3JxKQogCQlkZWFjdGl2YXRlX3Rhc2socnEsIHAsIDApOwotCQlpZiAocnVubmluZykKLQkJCXAtPnNjaGVkX2NsYXNzLT5wdXRfcHJldl90YXNrKHJxLCBwKTsKLQl9CisJaWYgKHJ1bm5pbmcpCisJCXAtPnNjaGVkX2NsYXNzLT5wdXRfcHJldl90YXNrKHJxLCBwKTsKIAogCW9sZHByaW8gPSBwLT5wcmlvOwogCV9fc2V0c2NoZWR1bGVyKHJxLCBwLCBwb2xpY3ksIHBhcmFtLT5zY2hlZF9wcmlvcml0eSk7CiAKKwlpZiAocnVubmluZykKKwkJcC0+c2NoZWRfY2xhc3MtPnNldF9jdXJyX3Rhc2socnEpOwogCWlmIChvbl9ycSkgewotCQlpZiAocnVubmluZykKLQkJCXAtPnNjaGVkX2NsYXNzLT5zZXRfY3Vycl90YXNrKHJxKTsKLQogCQlhY3RpdmF0ZV90YXNrKHJxLCBwLCAwKTsKIAogCQljaGVja19jbGFzc19jaGFuZ2VkKHJxLCBwLCBwcmV2X2NsYXNzLCBvbGRwcmlvLCBydW5uaW5nKTsKQEAgLTY4MDQsNiArNjg1MCwxMCBAQAogICovCiBzdGF0aWMgY3B1bWFza190IGZhbGxiYWNrX2RvbXM7CiAKK3ZvaWQgX19hdHRyaWJ1dGVfXygod2VhaykpIGFyY2hfdXBkYXRlX2NwdV90b3BvbG9neSh2b2lkKQoreworfQorCiAvKgogICogU2V0IHVwIHNjaGVkdWxlciBkb21haW5zIGFuZCBncm91cHMuIENhbGxlcnMgbXVzdCBob2xkIHRoZSBob3RwbHVnIGxvY2suCiAgKiBGb3Igbm93IHRoaXMganVzdCBleGNsdWRlcyBpc29sYXRlZCBjcHVzLCBidXQgY291bGQgYmUgdXNlZCB0bwpAQCAtNjgxMyw2ICs2ODYzLDcgQEAKIHsKIAlpbnQgZXJyOwogCisJYXJjaF91cGRhdGVfY3B1X3RvcG9sb2d5KCk7CiAJbmRvbXNfY3VyID0gMTsKIAlkb21zX2N1ciA9IGttYWxsb2Moc2l6ZW9mKGNwdW1hc2tfdCksIEdGUF9LRVJORUwpOwogCWlmICghZG9tc19jdXIpCkBAIC02OTE3LDcgKzY5NjgsNyBAQAogfQogCiAjaWYgZGVmaW5lZChDT05GSUdfU0NIRURfTUMpIHx8IGRlZmluZWQoQ09ORklHX1NDSEVEX1NNVCkKLXN0YXRpYyBpbnQgYXJjaF9yZWluaXRfc2NoZWRfZG9tYWlucyh2b2lkKQoraW50IGFyY2hfcmVpbml0X3NjaGVkX2RvbWFpbnModm9pZCkKIHsKIAlpbnQgZXJyOwogCkBAIC03NjE4LDExICs3NjY5LDEwIEBACiAJcnVubmluZyA9IHRhc2tfY3VycmVudChycSwgdHNrKTsKIAlvbl9ycSA9IHRzay0+c2Uub25fcnE7CiAKLQlpZiAob25fcnEpIHsKKwlpZiAob25fcnEpCiAJCWRlcXVldWVfdGFzayhycSwgdHNrLCAwKTsKLQkJaWYgKHVubGlrZWx5KHJ1bm5pbmcpKQotCQkJdHNrLT5zY2hlZF9jbGFzcy0+cHV0X3ByZXZfdGFzayhycSwgdHNrKTsKLQl9CisJaWYgKHVubGlrZWx5KHJ1bm5pbmcpKQorCQl0c2stPnNjaGVkX2NsYXNzLT5wdXRfcHJldl90YXNrKHJxLCB0c2spOwogCiAJc2V0X3Rhc2tfcnEodHNrLCB0YXNrX2NwdSh0c2spKTsKIApAQCAtNzYzMSwxMSArNzY4MSwxMCBAQAogCQl0c2stPnNjaGVkX2NsYXNzLT5tb3ZlZF9ncm91cCh0c2spOwogI2VuZGlmCiAKLQlpZiAob25fcnEpIHsKLQkJaWYgKHVubGlrZWx5KHJ1bm5pbmcpKQotCQkJdHNrLT5zY2hlZF9jbGFzcy0+c2V0X2N1cnJfdGFzayhycSk7CisJaWYgKHVubGlrZWx5KHJ1bm5pbmcpKQorCQl0c2stPnNjaGVkX2NsYXNzLT5zZXRfY3Vycl90YXNrKHJxKTsKKwlpZiAob25fcnEpCiAJCWVucXVldWVfdGFzayhycSwgdHNrLCAwKTsKLQl9CiAKIAl0YXNrX3JxX3VubG9jayhycSwgJmZsYWdzKTsKIH0KZGlmZiAtLWdpdCBhL2tlcm5lbC9zY2hlZF9kZWJ1Zy5jIGIva2VybmVsL3NjaGVkX2RlYnVnLmMKaW5kZXggNGI1ZTI0Yy4uZWYzNThiYSAxMDA2NDQKLS0tIGEva2VybmVsL3NjaGVkX2RlYnVnLmMKKysrIGIva2VybmVsL3NjaGVkX2RlYnVnLmMKQEAgLTI4OCw2ICsyODgsNyBAQAogCVBOKHNlLmV4ZWNfc3RhcnQpOwogCVBOKHNlLnZydW50aW1lKTsKIAlQTihzZS5zdW1fZXhlY19ydW50aW1lKTsKKwlQTihzZS5hdmdfb3ZlcmxhcCk7CiAKIAlucl9zd2l0Y2hlcyA9IHAtPm52Y3N3ICsgcC0+bml2Y3N3OwogCmRpZmYgLS1naXQgYS9rZXJuZWwvc2NoZWRfZmFpci5jIGIva2VybmVsL3NjaGVkX2ZhaXIuYwppbmRleCBlMmE1MzA1Li4wMDgwOTY4IDEwMDY0NAotLS0gYS9rZXJuZWwvc2NoZWRfZmFpci5jCisrKyBiL2tlcm5lbC9zY2hlZF9mYWlyLmMKQEAgLTczLDEzICs3MywxMyBAQAogCiAvKgogICogU0NIRURfT1RIRVIgd2FrZS11cCBncmFudWxhcml0eS4KLSAqIChkZWZhdWx0OiAxMCBtc2VjICogKDEgKyBpbG9nKG5jcHVzKSksIHVuaXRzOiBuYW5vc2Vjb25kcykKKyAqIChkZWZhdWx0OiA1IG1zZWMgKiAoMSArIGlsb2cobmNwdXMpKSwgdW5pdHM6IG5hbm9zZWNvbmRzKQogICoKICAqIFRoaXMgb3B0aW9uIGRlbGF5cyB0aGUgcHJlZW1wdGlvbiBlZmZlY3RzIG9mIGRlY291cGxlZCB3b3JrbG9hZHMKICAqIGFuZCByZWR1Y2VzIHRoZWlyIG92ZXItc2NoZWR1bGluZy4gU3luY2hyb25vdXMgd29ya2xvYWRzIHdpbGwgc3RpbGwKICAqIGhhdmUgaW1tZWRpYXRlIHdha2V1cC9zbGVlcCBsYXRlbmNpZXMuCiAgKi8KLXVuc2lnbmVkIGludCBzeXNjdGxfc2NoZWRfd2FrZXVwX2dyYW51bGFyaXR5ID0gMTAwMDAwMDBVTDsKK3Vuc2lnbmVkIGludCBzeXNjdGxfc2NoZWRfd2FrZXVwX2dyYW51bGFyaXR5ID0gNTAwMDAwMFVMOwogCiBjb25zdF9kZWJ1ZyB1bnNpZ25lZCBpbnQgc3lzY3RsX3NjaGVkX21pZ3JhdGlvbl9jb3N0ID0gNTAwMDAwVUw7CiAKQEAgLTE3NSw4ICsxNzUsMTUgQEAKIAkgKiBNYWludGFpbiBhIGNhY2hlIG9mIGxlZnRtb3N0IHRyZWUgZW50cmllcyAoaXQgaXMgZnJlcXVlbnRseQogCSAqIHVzZWQpOgogCSAqLwotCWlmIChsZWZ0bW9zdCkKKwlpZiAobGVmdG1vc3QpIHsKIAkJY2ZzX3JxLT5yYl9sZWZ0bW9zdCA9ICZzZS0+cnVuX25vZGU7CisJCS8qCisJCSAqIG1haW50YWluIGNmc19ycS0+bWluX3ZydW50aW1lIHRvIGJlIGEgbW9ub3RvbmljIGluY3JlYXNpbmcKKwkJICogdmFsdWUgdHJhY2tpbmcgdGhlIGxlZnRtb3N0IHZydW50aW1lIGluIHRoZSB0cmVlLgorCQkgKi8KKwkJY2ZzX3JxLT5taW5fdnJ1bnRpbWUgPQorCQkJbWF4X3ZydW50aW1lKGNmc19ycS0+bWluX3ZydW50aW1lLCBzZS0+dnJ1bnRpbWUpOworCX0KIAogCXJiX2xpbmtfbm9kZSgmc2UtPnJ1bl9ub2RlLCBwYXJlbnQsIGxpbmspOwogCXJiX2luc2VydF9jb2xvcigmc2UtPnJ1bl9ub2RlLCAmY2ZzX3JxLT50YXNrc190aW1lbGluZSk7CkBAIC0xODQsOCArMTkxLDI0IEBACiAKIHN0YXRpYyB2b2lkIF9fZGVxdWV1ZV9lbnRpdHkoc3RydWN0IGNmc19ycSAqY2ZzX3JxLCBzdHJ1Y3Qgc2NoZWRfZW50aXR5ICpzZSkKIHsKLQlpZiAoY2ZzX3JxLT5yYl9sZWZ0bW9zdCA9PSAmc2UtPnJ1bl9ub2RlKQotCQljZnNfcnEtPnJiX2xlZnRtb3N0ID0gcmJfbmV4dCgmc2UtPnJ1bl9ub2RlKTsKKwlpZiAoY2ZzX3JxLT5yYl9sZWZ0bW9zdCA9PSAmc2UtPnJ1bl9ub2RlKSB7CisJCXN0cnVjdCByYl9ub2RlICpuZXh0X25vZGU7CisJCXN0cnVjdCBzY2hlZF9lbnRpdHkgKm5leHQ7CisKKwkJbmV4dF9ub2RlID0gcmJfbmV4dCgmc2UtPnJ1bl9ub2RlKTsKKwkJY2ZzX3JxLT5yYl9sZWZ0bW9zdCA9IG5leHRfbm9kZTsKKworCQlpZiAobmV4dF9ub2RlKSB7CisJCQluZXh0ID0gcmJfZW50cnkobmV4dF9ub2RlLAorCQkJCQlzdHJ1Y3Qgc2NoZWRfZW50aXR5LCBydW5fbm9kZSk7CisJCQljZnNfcnEtPm1pbl92cnVudGltZSA9CisJCQkJbWF4X3ZydW50aW1lKGNmc19ycS0+bWluX3ZydW50aW1lLAorCQkJCQkgICAgIG5leHQtPnZydW50aW1lKTsKKwkJfQorCX0KKworCWlmIChjZnNfcnEtPm5leHQgPT0gc2UpCisJCWNmc19ycS0+bmV4dCA9IE5VTEw7CiAKIAlyYl9lcmFzZSgmc2UtPnJ1bl9ub2RlLCAmY2ZzX3JxLT50YXNrc190aW1lbGluZSk7CiB9CkBAIC0yNjAsMTIgKzI4Myw4IEBACiAgKi8KIHN0YXRpYyB1NjQgc2NoZWRfc2xpY2Uoc3RydWN0IGNmc19ycSAqY2ZzX3JxLCBzdHJ1Y3Qgc2NoZWRfZW50aXR5ICpzZSkKIHsKLQl1NjQgc2xpY2UgPSBfX3NjaGVkX3BlcmlvZChjZnNfcnEtPm5yX3J1bm5pbmcpOwotCi0Jc2xpY2UgKj0gc2UtPmxvYWQud2VpZ2h0OwotCWRvX2RpdihzbGljZSwgY2ZzX3JxLT5sb2FkLndlaWdodCk7Ci0KLQlyZXR1cm4gc2xpY2U7CisJcmV0dXJuIGNhbGNfZGVsdGFfbWluZShfX3NjaGVkX3BlcmlvZChjZnNfcnEtPm5yX3J1bm5pbmcpLAorCQkJICAgICAgIHNlLT5sb2FkLndlaWdodCwgJmNmc19ycS0+bG9hZCk7CiB9CiAKIC8qCkBAIC0yODMsMTEgKzMwMiw2IEBACiAJcmV0dXJuIHZzbGljZTsKIH0KIAotc3RhdGljIHU2NCBzY2hlZF92c2xpY2Uoc3RydWN0IGNmc19ycSAqY2ZzX3JxKQotewotCXJldHVybiBfX3NjaGVkX3ZzbGljZShjZnNfcnEtPmxvYWQud2VpZ2h0LCBjZnNfcnEtPm5yX3J1bm5pbmcpOwotfQotCiBzdGF0aWMgdTY0IHNjaGVkX3ZzbGljZV9hZGQoc3RydWN0IGNmc19ycSAqY2ZzX3JxLCBzdHJ1Y3Qgc2NoZWRfZW50aXR5ICpzZSkKIHsKIAlyZXR1cm4gX19zY2hlZF92c2xpY2UoY2ZzX3JxLT5sb2FkLndlaWdodCArIHNlLT5sb2FkLndlaWdodCwKQEAgLTMwMyw3ICszMTcsNiBAQAogCSAgICAgIHVuc2lnbmVkIGxvbmcgZGVsdGFfZXhlYykKIHsKIAl1bnNpZ25lZCBsb25nIGRlbHRhX2V4ZWNfd2VpZ2h0ZWQ7Ci0JdTY0IHZydW50aW1lOwogCiAJc2NoZWRzdGF0X3NldChjdXJyLT5leGVjX21heCwgbWF4KCh1NjQpZGVsdGFfZXhlYywgY3Vyci0+ZXhlY19tYXgpKTsKIApAQCAtMzE1LDE5ICszMjgsNiBAQAogCQkJCQkJCSZjdXJyLT5sb2FkKTsKIAl9CiAJY3Vyci0+dnJ1bnRpbWUgKz0gZGVsdGFfZXhlY193ZWlnaHRlZDsKLQotCS8qCi0JICogbWFpbnRhaW4gY2ZzX3JxLT5taW5fdnJ1bnRpbWUgdG8gYmUgYSBtb25vdG9uaWMgaW5jcmVhc2luZwotCSAqIHZhbHVlIHRyYWNraW5nIHRoZSBsZWZ0bW9zdCB2cnVudGltZSBpbiB0aGUgdHJlZS4KLQkgKi8KLQlpZiAoZmlyc3RfZmFpcihjZnNfcnEpKSB7Ci0JCXZydW50aW1lID0gbWluX3ZydW50aW1lKGN1cnItPnZydW50aW1lLAotCQkJCV9fcGlja19uZXh0X2VudGl0eShjZnNfcnEpLT52cnVudGltZSk7Ci0JfSBlbHNlCi0JCXZydW50aW1lID0gY3Vyci0+dnJ1bnRpbWU7Ci0KLQljZnNfcnEtPm1pbl92cnVudGltZSA9Ci0JCW1heF92cnVudGltZShjZnNfcnEtPm1pbl92cnVudGltZSwgdnJ1bnRpbWUpOwogfQogCiBzdGF0aWMgdm9pZCB1cGRhdGVfY3VycihzdHJ1Y3QgY2ZzX3JxICpjZnNfcnEpCkBAIC00OTMsMTYgKzQ5MywxMSBAQAogewogCXU2NCB2cnVudGltZTsKIAotCXZydW50aW1lID0gY2ZzX3JxLT5taW5fdnJ1bnRpbWU7Ci0KLQlpZiAoc2NoZWRfZmVhdChUUkVFX0FWRykpIHsKLQkJc3RydWN0IHNjaGVkX2VudGl0eSAqbGFzdCA9IF9fcGlja19sYXN0X2VudGl0eShjZnNfcnEpOwotCQlpZiAobGFzdCkgewotCQkJdnJ1bnRpbWUgKz0gbGFzdC0+dnJ1bnRpbWU7Ci0JCQl2cnVudGltZSA+Pj0gMTsKLQkJfQotCX0gZWxzZSBpZiAoc2NoZWRfZmVhdChBUFBST1hfQVZHKSAmJiBjZnNfcnEtPm5yX3J1bm5pbmcpCi0JCXZydW50aW1lICs9IHNjaGVkX3ZzbGljZShjZnNfcnEpLzI7CisJaWYgKGZpcnN0X2ZhaXIoY2ZzX3JxKSkgeworCQl2cnVudGltZSA9IG1pbl92cnVudGltZShjZnNfcnEtPm1pbl92cnVudGltZSwKKwkJCQlfX3BpY2tfbmV4dF9lbnRpdHkoY2ZzX3JxKS0+dnJ1bnRpbWUpOworCX0gZWxzZQorCQl2cnVudGltZSA9IGNmc19ycS0+bWluX3ZydW50aW1lOwogCiAJLyoKIAkgKiBUaGUgJ2N1cnJlbnQnIHBlcmlvZCBpcyBhbHJlYWR5IHByb21pc2VkIHRvIHRoZSBjdXJyZW50IHRhc2tzLApAQCAtNTQ1LDYgKzU0MCwyMSBAQAogCWFjY291bnRfZW50aXR5X2VucXVldWUoY2ZzX3JxLCBzZSk7CiB9CiAKK3N0YXRpYyB2b2lkIHVwZGF0ZV9hdmcodTY0ICphdmcsIHU2NCBzYW1wbGUpCit7CisJczY0IGRpZmYgPSBzYW1wbGUgLSAqYXZnOworCSphdmcgKz0gZGlmZiA+PiAzOworfQorCitzdGF0aWMgdm9pZCB1cGRhdGVfYXZnX3N0YXRzKHN0cnVjdCBjZnNfcnEgKmNmc19ycSwgc3RydWN0IHNjaGVkX2VudGl0eSAqc2UpCit7CisJaWYgKCFzZS0+bGFzdF93YWtldXApCisJCXJldHVybjsKKworCXVwZGF0ZV9hdmcoJnNlLT5hdmdfb3ZlcmxhcCwgc2UtPnN1bV9leGVjX3J1bnRpbWUgLSBzZS0+bGFzdF93YWtldXApOworCXNlLT5sYXN0X3dha2V1cCA9IDA7Cit9CisKIHN0YXRpYyB2b2lkCiBkZXF1ZXVlX2VudGl0eShzdHJ1Y3QgY2ZzX3JxICpjZnNfcnEsIHN0cnVjdCBzY2hlZF9lbnRpdHkgKnNlLCBpbnQgc2xlZXApCiB7CkBAIC01NTUsNiArNTY1LDcgQEAKIAogCXVwZGF0ZV9zdGF0c19kZXF1ZXVlKGNmc19ycSwgc2UpOwogCWlmIChzbGVlcCkgeworCQl1cGRhdGVfYXZnX3N0YXRzKGNmc19ycSwgc2UpOwogI2lmZGVmIENPTkZJR19TQ0hFRFNUQVRTCiAJCWlmIChlbnRpdHlfaXNfdGFzayhzZSkpIHsKIAkJCXN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrID0gdGFza19vZihzZSk7CkBAIC02MTYsMTIgKzYyNywzMiBAQAogCXNlLT5wcmV2X3N1bV9leGVjX3J1bnRpbWUgPSBzZS0+c3VtX2V4ZWNfcnVudGltZTsKIH0KIAorc3RhdGljIHN0cnVjdCBzY2hlZF9lbnRpdHkgKgorcGlja19uZXh0KHN0cnVjdCBjZnNfcnEgKmNmc19ycSwgc3RydWN0IHNjaGVkX2VudGl0eSAqc2UpCit7CisJczY0IGRpZmYsIGdyYW47CisKKwlpZiAoIWNmc19ycS0+bmV4dCkKKwkJcmV0dXJuIHNlOworCisJZGlmZiA9IGNmc19ycS0+bmV4dC0+dnJ1bnRpbWUgLSBzZS0+dnJ1bnRpbWU7CisJaWYgKGRpZmYgPCAwKQorCQlyZXR1cm4gc2U7CisKKwlncmFuID0gY2FsY19kZWx0YV9mYWlyKHN5c2N0bF9zY2hlZF93YWtldXBfZ3JhbnVsYXJpdHksICZjZnNfcnEtPmxvYWQpOworCWlmIChkaWZmID4gZ3JhbikKKwkJcmV0dXJuIHNlOworCisJcmV0dXJuIGNmc19ycS0+bmV4dDsKK30KKwogc3RhdGljIHN0cnVjdCBzY2hlZF9lbnRpdHkgKnBpY2tfbmV4dF9lbnRpdHkoc3RydWN0IGNmc19ycSAqY2ZzX3JxKQogewogCXN0cnVjdCBzY2hlZF9lbnRpdHkgKnNlID0gTlVMTDsKIAogCWlmIChmaXJzdF9mYWlyKGNmc19ycSkpIHsKIAkJc2UgPSBfX3BpY2tfbmV4dF9lbnRpdHkoY2ZzX3JxKTsKKwkJc2UgPSBwaWNrX25leHQoY2ZzX3JxLCBzZSk7CiAJCXNldF9uZXh0X2VudGl0eShjZnNfcnEsIHNlKTsKIAl9CiAKQEAgLTk0OSw5NiArOTgwLDEyMSBAQAogI2VuZGlmCiAKICNpZmRlZiBDT05GSUdfU01QCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc2NoZWRfY2xhc3MgZmFpcl9zY2hlZF9jbGFzczsKKworc3RhdGljIGludAord2FrZV9hZmZpbmUoc3RydWN0IHJxICpycSwgc3RydWN0IHNjaGVkX2RvbWFpbiAqdGhpc19zZCwgc3RydWN0IHJxICp0aGlzX3JxLAorCSAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIGludCBwcmV2X2NwdSwgaW50IHRoaXNfY3B1LCBpbnQgc3luYywKKwkgICAgaW50IGlkeCwgdW5zaWduZWQgbG9uZyBsb2FkLCB1bnNpZ25lZCBsb25nIHRoaXNfbG9hZCwKKwkgICAgdW5zaWduZWQgaW50IGltYmFsYW5jZSkKK3sKKwlzdHJ1Y3QgdGFza19zdHJ1Y3QgKmN1cnIgPSB0aGlzX3JxLT5jdXJyOworCXVuc2lnbmVkIGxvbmcgdGwgPSB0aGlzX2xvYWQ7CisJdW5zaWduZWQgbG9uZyB0bF9wZXJfdGFzazsKKworCWlmICghKHRoaXNfc2QtPmZsYWdzICYgU0RfV0FLRV9BRkZJTkUpKQorCQlyZXR1cm4gMDsKKworCS8qCisJICogSWYgdGhlIGN1cnJlbnRseSBydW5uaW5nIHRhc2sgd2lsbCBzbGVlcCB3aXRoaW4KKwkgKiBhIHJlYXNvbmFibGUgYW1vdW50IG9mIHRpbWUgdGhlbiBhdHRyYWN0IHRoaXMgbmV3bHkKKwkgKiB3b2tlbiB0YXNrOgorCSAqLworCWlmIChzeW5jICYmIGN1cnItPnNjaGVkX2NsYXNzID09ICZmYWlyX3NjaGVkX2NsYXNzKSB7CisJCWlmIChjdXJyLT5zZS5hdmdfb3ZlcmxhcCA8IHN5c2N0bF9zY2hlZF9taWdyYXRpb25fY29zdCAmJgorCQkJCXAtPnNlLmF2Z19vdmVybGFwIDwgc3lzY3RsX3NjaGVkX21pZ3JhdGlvbl9jb3N0KQorCQkJcmV0dXJuIDE7CisJfQorCisJc2NoZWRzdGF0X2luYyhwLCBzZS5ucl93YWtldXBzX2FmZmluZV9hdHRlbXB0cyk7CisJdGxfcGVyX3Rhc2sgPSBjcHVfYXZnX2xvYWRfcGVyX3Rhc2sodGhpc19jcHUpOworCisJLyoKKwkgKiBJZiBzeW5jIHdha2V1cCB0aGVuIHN1YnRyYWN0IHRoZSAobWF4aW11bSBwb3NzaWJsZSkKKwkgKiBlZmZlY3Qgb2YgdGhlIGN1cnJlbnRseSBydW5uaW5nIHRhc2sgZnJvbSB0aGUgbG9hZAorCSAqIG9mIHRoZSBjdXJyZW50IENQVToKKwkgKi8KKwlpZiAoc3luYykKKwkJdGwgLT0gY3VycmVudC0+c2UubG9hZC53ZWlnaHQ7CisKKwlpZiAoKHRsIDw9IGxvYWQgJiYgdGwgKyB0YXJnZXRfbG9hZChwcmV2X2NwdSwgaWR4KSA8PSB0bF9wZXJfdGFzaykgfHwKKwkJCTEwMCoodGwgKyBwLT5zZS5sb2FkLndlaWdodCkgPD0gaW1iYWxhbmNlKmxvYWQpIHsKKwkJLyoKKwkJICogVGhpcyBkb21haW4gaGFzIFNEX1dBS0VfQUZGSU5FIGFuZAorCQkgKiBwIGlzIGNhY2hlIGNvbGQgaW4gdGhpcyBkb21haW4sIGFuZAorCQkgKiB0aGVyZSBpcyBubyBiYWQgaW1iYWxhbmNlLgorCQkgKi8KKwkJc2NoZWRzdGF0X2luYyh0aGlzX3NkLCB0dHd1X21vdmVfYWZmaW5lKTsKKwkJc2NoZWRzdGF0X2luYyhwLCBzZS5ucl93YWtldXBzX2FmZmluZSk7CisKKwkJcmV0dXJuIDE7CisJfQorCXJldHVybiAwOworfQorCiBzdGF0aWMgaW50IHNlbGVjdF90YXNrX3JxX2ZhaXIoc3RydWN0IHRhc2tfc3RydWN0ICpwLCBpbnQgc3luYykKIHsKLQlpbnQgY3B1LCB0aGlzX2NwdTsKLQlzdHJ1Y3QgcnEgKnJxOwogCXN0cnVjdCBzY2hlZF9kb21haW4gKnNkLCAqdGhpc19zZCA9IE5VTEw7Ci0JaW50IG5ld19jcHU7CisJaW50IHByZXZfY3B1LCB0aGlzX2NwdSwgbmV3X2NwdTsKKwl1bnNpZ25lZCBsb25nIGxvYWQsIHRoaXNfbG9hZDsKKwlzdHJ1Y3QgcnEgKnJxLCAqdGhpc19ycTsKKwl1bnNpZ25lZCBpbnQgaW1iYWxhbmNlOworCWludCBpZHg7CiAKLQljcHUgICAgICA9IHRhc2tfY3B1KHApOwotCXJxICAgICAgID0gdGFza19ycShwKTsKLQl0aGlzX2NwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsKLQluZXdfY3B1ICA9IGNwdTsKKwlwcmV2X2NwdQk9IHRhc2tfY3B1KHApOworCXJxCQk9IHRhc2tfcnEocCk7CisJdGhpc19jcHUJPSBzbXBfcHJvY2Vzc29yX2lkKCk7CisJdGhpc19ycQkJPSBjcHVfcnEodGhpc19jcHUpOworCW5ld19jcHUJCT0gcHJldl9jcHU7CiAKLQlpZiAoY3B1ID09IHRoaXNfY3B1KQotCQlnb3RvIG91dF9zZXRfY3B1OwotCisJLyoKKwkgKiAndGhpc19zZCcgaXMgdGhlIGZpcnN0IGRvbWFpbiB0aGF0IGJvdGgKKwkgKiB0aGlzX2NwdSBhbmQgcHJldl9jcHUgYXJlIHByZXNlbnQgaW46CisJICovCiAJZm9yX2VhY2hfZG9tYWluKHRoaXNfY3B1LCBzZCkgewotCQlpZiAoY3B1X2lzc2V0KGNwdSwgc2QtPnNwYW4pKSB7CisJCWlmIChjcHVfaXNzZXQocHJldl9jcHUsIHNkLT5zcGFuKSkgewogCQkJdGhpc19zZCA9IHNkOwogCQkJYnJlYWs7CiAJCX0KIAl9CiAKIAlpZiAodW5saWtlbHkoIWNwdV9pc3NldCh0aGlzX2NwdSwgcC0+Y3B1c19hbGxvd2VkKSkpCi0JCWdvdG8gb3V0X3NldF9jcHU7CisJCWdvdG8gb3V0OwogCiAJLyoKIAkgKiBDaGVjayBmb3IgYWZmaW5lIHdha2V1cCBhbmQgcGFzc2l2ZSBiYWxhbmNpbmcgcG9zc2liaWxpdGllcy4KIAkgKi8KLQlpZiAodGhpc19zZCkgewotCQlpbnQgaWR4ID0gdGhpc19zZC0+d2FrZV9pZHg7Ci0JCXVuc2lnbmVkIGludCBpbWJhbGFuY2U7Ci0JCXVuc2lnbmVkIGxvbmcgbG9hZCwgdGhpc19sb2FkOworCWlmICghdGhpc19zZCkKKwkJZ290byBvdXQ7CiAKLQkJaW1iYWxhbmNlID0gMTAwICsgKHRoaXNfc2QtPmltYmFsYW5jZV9wY3QgLSAxMDApIC8gMjsKKwlpZHggPSB0aGlzX3NkLT53YWtlX2lkeDsKIAotCQlsb2FkID0gc291cmNlX2xvYWQoY3B1LCBpZHgpOwotCQl0aGlzX2xvYWQgPSB0YXJnZXRfbG9hZCh0aGlzX2NwdSwgaWR4KTsKKwlpbWJhbGFuY2UgPSAxMDAgKyAodGhpc19zZC0+aW1iYWxhbmNlX3BjdCAtIDEwMCkgLyAyOwogCi0JCW5ld19jcHUgPSB0aGlzX2NwdTsgLyogV2FrZSB0byB0aGlzIENQVSBpZiB3ZSBjYW4gKi8KKwlsb2FkID0gc291cmNlX2xvYWQocHJldl9jcHUsIGlkeCk7CisJdGhpc19sb2FkID0gdGFyZ2V0X2xvYWQodGhpc19jcHUsIGlkeCk7CiAKLQkJaWYgKHRoaXNfc2QtPmZsYWdzICYgU0RfV0FLRV9BRkZJTkUpIHsKLQkJCXVuc2lnbmVkIGxvbmcgdGwgPSB0aGlzX2xvYWQ7Ci0JCQl1bnNpZ25lZCBsb25nIHRsX3Blcl90YXNrOworCWlmICh3YWtlX2FmZmluZShycSwgdGhpc19zZCwgdGhpc19ycSwgcCwgcHJldl9jcHUsIHRoaXNfY3B1LCBzeW5jLCBpZHgsCisJCQkJICAgICBsb2FkLCB0aGlzX2xvYWQsIGltYmFsYW5jZSkpCisJCXJldHVybiB0aGlzX2NwdTsKIAotCQkJLyoKLQkJCSAqIEF0dHJhY3QgY2FjaGUtY29sZCB0YXNrcyBvbiBzeW5jIHdha2V1cHM6Ci0JCQkgKi8KLQkJCWlmIChzeW5jICYmICF0YXNrX2hvdChwLCBycS0+Y2xvY2ssIHRoaXNfc2QpKQotCQkJCWdvdG8gb3V0X3NldF9jcHU7CisJaWYgKHByZXZfY3B1ID09IHRoaXNfY3B1KQorCQlnb3RvIG91dDsKIAotCQkJc2NoZWRzdGF0X2luYyhwLCBzZS5ucl93YWtldXBzX2FmZmluZV9hdHRlbXB0cyk7Ci0JCQl0bF9wZXJfdGFzayA9IGNwdV9hdmdfbG9hZF9wZXJfdGFzayh0aGlzX2NwdSk7Ci0KLQkJCS8qCi0JCQkgKiBJZiBzeW5jIHdha2V1cCB0aGVuIHN1YnRyYWN0IHRoZSAobWF4aW11bSBwb3NzaWJsZSkKLQkJCSAqIGVmZmVjdCBvZiB0aGUgY3VycmVudGx5IHJ1bm5pbmcgdGFzayBmcm9tIHRoZSBsb2FkCi0JCQkgKiBvZiB0aGUgY3VycmVudCBDUFU6Ci0JCQkgKi8KLQkJCWlmIChzeW5jKQotCQkJCXRsIC09IGN1cnJlbnQtPnNlLmxvYWQud2VpZ2h0OwotCi0JCQlpZiAoKHRsIDw9IGxvYWQgJiYKLQkJCQl0bCArIHRhcmdldF9sb2FkKGNwdSwgaWR4KSA8PSB0bF9wZXJfdGFzaykgfHwKLQkJCSAgICAgICAxMDAqKHRsICsgcC0+c2UubG9hZC53ZWlnaHQpIDw9IGltYmFsYW5jZSpsb2FkKSB7Ci0JCQkJLyoKLQkJCQkgKiBUaGlzIGRvbWFpbiBoYXMgU0RfV0FLRV9BRkZJTkUgYW5kCi0JCQkJICogcCBpcyBjYWNoZSBjb2xkIGluIHRoaXMgZG9tYWluLCBhbmQKLQkJCQkgKiB0aGVyZSBpcyBubyBiYWQgaW1iYWxhbmNlLgotCQkJCSAqLwotCQkJCXNjaGVkc3RhdF9pbmModGhpc19zZCwgdHR3dV9tb3ZlX2FmZmluZSk7Ci0JCQkJc2NoZWRzdGF0X2luYyhwLCBzZS5ucl93YWtldXBzX2FmZmluZSk7Ci0JCQkJZ290byBvdXRfc2V0X2NwdTsKLQkJCX0KLQkJfQotCi0JCS8qCi0JCSAqIFN0YXJ0IHBhc3NpdmUgYmFsYW5jaW5nIHdoZW4gaGFsZiB0aGUgaW1iYWxhbmNlX3BjdAotCQkgKiBsaW1pdCBpcyByZWFjaGVkLgotCQkgKi8KLQkJaWYgKHRoaXNfc2QtPmZsYWdzICYgU0RfV0FLRV9CQUxBTkNFKSB7Ci0JCQlpZiAoaW1iYWxhbmNlKnRoaXNfbG9hZCA8PSAxMDAqbG9hZCkgewotCQkJCXNjaGVkc3RhdF9pbmModGhpc19zZCwgdHR3dV9tb3ZlX2JhbGFuY2UpOwotCQkJCXNjaGVkc3RhdF9pbmMocCwgc2UubnJfd2FrZXVwc19wYXNzaXZlKTsKLQkJCQlnb3RvIG91dF9zZXRfY3B1OwotCQkJfQorCS8qCisJICogU3RhcnQgcGFzc2l2ZSBiYWxhbmNpbmcgd2hlbiBoYWxmIHRoZSBpbWJhbGFuY2VfcGN0CisJICogbGltaXQgaXMgcmVhY2hlZC4KKwkgKi8KKwlpZiAodGhpc19zZC0+ZmxhZ3MgJiBTRF9XQUtFX0JBTEFOQ0UpIHsKKwkJaWYgKGltYmFsYW5jZSp0aGlzX2xvYWQgPD0gMTAwKmxvYWQpIHsKKwkJCXNjaGVkc3RhdF9pbmModGhpc19zZCwgdHR3dV9tb3ZlX2JhbGFuY2UpOworCQkJc2NoZWRzdGF0X2luYyhwLCBzZS5ucl93YWtldXBzX3Bhc3NpdmUpOworCQkJcmV0dXJuIHRoaXNfY3B1OwogCQl9CiAJfQogCi0JbmV3X2NwdSA9IGNwdTsgLyogQ291bGQgbm90IHdha2UgdG8gdGhpc19jcHUuIFdha2UgdG8gY3B1IGluc3RlYWQgKi8KLW91dF9zZXRfY3B1Ogorb3V0OgogCXJldHVybiB3YWtlX2lkbGUobmV3X2NwdSwgcCk7CiB9CiAjZW5kaWYgLyogQ09ORklHX1NNUCAqLwpAQCAtMTA2MCw2ICsxMTE2LDEzIEBACiAJCXJlc2NoZWRfdGFzayhjdXJyKTsKIAkJcmV0dXJuOwogCX0KKworCXNlLT5sYXN0X3dha2V1cCA9IHNlLT5zdW1fZXhlY19ydW50aW1lOworCWlmICh1bmxpa2VseShzZSA9PSBwc2UpKQorCQlyZXR1cm47CisKKwljZnNfcnFfb2YocHNlKS0+bmV4dCA9IHBzZTsKKwogCS8qCiAJICogQmF0Y2ggdGFza3MgZG8gbm90IHByZWVtcHQgKHRoZWlyIHByZWVtcHRpb24gaXMgZHJpdmVuIGJ5CiAJICogdGhlIHRpY2spOgpkaWZmIC0tZ2l0IGEva2VybmVsL3RpbWUvY2xvY2tzb3VyY2UuYyBiL2tlcm5lbC90aW1lL2Nsb2Nrc291cmNlLmMKaW5kZXggNTQ4YzQzNi4uN2Y2MDA5NyAxMDA2NDQKLS0tIGEva2VybmVsL3RpbWUvY2xvY2tzb3VyY2UuYworKysgYi9rZXJuZWwvdGltZS9jbG9ja3NvdXJjZS5jCkBAIC0xNDEsMTMgKzE0MSw4IEBACiAJfQogCiAJaWYgKCFsaXN0X2VtcHR5KCZ3YXRjaGRvZ19saXN0KSkgewotCQkvKiBDeWNsZSB0aHJvdWdoIENQVXMgdG8gY2hlY2sgaWYgdGhlIENQVXMgc3RheSBzeW5jaHJvbml6ZWQgdG8KLQkJICogZWFjaCBvdGhlci4gKi8KLQkJaW50IG5leHRfY3B1ID0gbmV4dF9jcHUocmF3X3NtcF9wcm9jZXNzb3JfaWQoKSwgY3B1X29ubGluZV9tYXApOwotCQlpZiAobmV4dF9jcHUgPj0gTlJfQ1BVUykKLQkJCW5leHRfY3B1ID0gZmlyc3RfY3B1KGNwdV9vbmxpbmVfbWFwKTsKLQkJd2F0Y2hkb2dfdGltZXIuZXhwaXJlcyArPSBXQVRDSERPR19JTlRFUlZBTDsKLQkJYWRkX3RpbWVyX29uKCZ3YXRjaGRvZ190aW1lciwgbmV4dF9jcHUpOworCQlfX21vZF90aW1lcigmd2F0Y2hkb2dfdGltZXIsCisJCQkgICAgd2F0Y2hkb2dfdGltZXIuZXhwaXJlcyArIFdBVENIRE9HX0lOVEVSVkFMKTsKIAl9CiAJc3Bpbl91bmxvY2soJndhdGNoZG9nX2xvY2spOwogfQpAQCAtMTY5LDcgKzE2NCw3IEBACiAJCWlmICghc3RhcnRlZCAmJiB3YXRjaGRvZykgewogCQkJd2F0Y2hkb2dfbGFzdCA9IHdhdGNoZG9nLT5yZWFkKCk7CiAJCQl3YXRjaGRvZ190aW1lci5leHBpcmVzID0gamlmZmllcyArIFdBVENIRE9HX0lOVEVSVkFMOwotCQkJYWRkX3RpbWVyX29uKCZ3YXRjaGRvZ190aW1lciwgZmlyc3RfY3B1KGNwdV9vbmxpbmVfbWFwKSk7CisJCQlhZGRfdGltZXIoJndhdGNoZG9nX3RpbWVyKTsKIAkJfQogCX0gZWxzZSB7CiAJCWlmIChjcy0+ZmxhZ3MgJiBDTE9DS19TT1VSQ0VfSVNfQ09OVElOVU9VUykKQEAgLTE3OSw3ICsxNzQsNyBAQAogCQkJaWYgKHdhdGNoZG9nKQogCQkJCWRlbF90aW1lcigmd2F0Y2hkb2dfdGltZXIpOwogCQkJd2F0Y2hkb2cgPSBjczsKLQkJCWluaXRfdGltZXJfZGVmZXJyYWJsZSgmd2F0Y2hkb2dfdGltZXIpOworCQkJaW5pdF90aW1lcigmd2F0Y2hkb2dfdGltZXIpOwogCQkJd2F0Y2hkb2dfdGltZXIuZnVuY3Rpb24gPSBjbG9ja3NvdXJjZV93YXRjaGRvZzsKIAogCQkJLyogUmVzZXQgd2F0Y2hkb2cgY3ljbGVzICovCkBAIC0xOTAsOCArMTg1LDcgQEAKIAkJCQl3YXRjaGRvZ19sYXN0ID0gd2F0Y2hkb2ctPnJlYWQoKTsKIAkJCQl3YXRjaGRvZ190aW1lci5leHBpcmVzID0KIAkJCQkJamlmZmllcyArIFdBVENIRE9HX0lOVEVSVkFMOwotCQkJCWFkZF90aW1lcl9vbigmd2F0Y2hkb2dfdGltZXIsCi0JCQkJCQlmaXJzdF9jcHUoY3B1X29ubGluZV9tYXApKTsKKwkJCQlhZGRfdGltZXIoJndhdGNoZG9nX3RpbWVyKTsKIAkJCX0KIAkJfQogCX0KZGlmZiAtLWdpdCBhL2tlcm5lbC90aW1lL3RpbWVrZWVwaW5nLmMgYi9rZXJuZWwvdGltZS90aW1la2VlcGluZy5jCmluZGV4IDY3MWFmNjEuLmEzZmE1ODcgMTAwNjQ0Ci0tLSBhL2tlcm5lbC90aW1lL3RpbWVrZWVwaW5nLmMKKysrIGIva2VybmVsL3RpbWUvdGltZWtlZXBpbmcuYwpAQCAtMTkxLDggKzE5MSwxMiBAQAogCiAJdGlja19jbG9ja19ub3RpZnkoKTsKIAorCS8qCisJICogV2UncmUgaG9sZGluZyB4dGltZSBsb2NrIGFuZCB3YWtpbmcgdXAga2xvZ2Qgd291bGQgZGVhZGxvY2sKKwkgKiB1cyBvbiBlbnF1ZXVlLiAgU28gbm8gcHJpbnRpbmchCiAJcHJpbnRrKEtFUk5fSU5GTyAiVGltZTogJXMgY2xvY2tzb3VyY2UgaGFzIGJlZW4gaW5zdGFsbGVkLlxuIiwKIAkgICAgICAgY2xvY2stPm5hbWUpOworCSAqLwogfQogI2Vsc2UKIHN0YXRpYyBpbmxpbmUgdm9pZCBjaGFuZ2VfY2xvY2tzb3VyY2Uodm9pZCkgeyB9CmRpZmYgLS1naXQgYS9rZXJuZWwvdGltZXIuYyBiL2tlcm5lbC90aW1lci5jCmluZGV4IDk5YjAwYTIuLmIwMjQxMDYgMTAwNjQ0Ci0tLSBhL2tlcm5lbC90aW1lci5jCisrKyBiL2tlcm5lbC90aW1lci5jCkBAIC00NTEsMTAgKzQ1MSwxOCBAQAogCXNwaW5fbG9ja19pcnFzYXZlKCZiYXNlLT5sb2NrLCBmbGFncyk7CiAJdGltZXJfc2V0X2Jhc2UodGltZXIsIGJhc2UpOwogCWludGVybmFsX2FkZF90aW1lcihiYXNlLCB0aW1lcik7CisJLyoKKwkgKiBDaGVjayB3aGV0aGVyIHRoZSBvdGhlciBDUFUgaXMgaWRsZSBhbmQgbmVlZHMgdG8gYmUKKwkgKiB0cmlnZ2VyZWQgdG8gcmVldmFsdWF0ZSB0aGUgdGltZXIgd2hlZWwgd2hlbiBub2h6IGlzCisJICogYWN0aXZlLiBXZSBhcmUgcHJvdGVjdGVkIGFnYWluc3QgdGhlIG90aGVyIENQVSBmaWRkbGluZworCSAqIHdpdGggdGhlIHRpbWVyIGJ5IGhvbGRpbmcgdGhlIHRpbWVyIGJhc2UgbG9jay4gVGhpcyBhbHNvCisJICogbWFrZXMgc3VyZSB0aGF0IGEgQ1BVIG9uIHRoZSB3YXkgdG8gaWRsZSBjYW4gbm90IGV2YWx1YXRlCisJICogdGhlIHRpbWVyIHdoZWVsLgorCSAqLworCXdha2VfdXBfaWRsZV9jcHUoY3B1KTsKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZiYXNlLT5sb2NrLCBmbGFncyk7CiB9CiAKLQogLyoqCiAgKiBtb2RfdGltZXIgLSBtb2RpZnkgYSB0aW1lcidzIHRpbWVvdXQKICAqIEB0aW1lcjogdGhlIHRpbWVyIHRvIGJlIG1vZGlmaWVkCmRpZmYgLS1naXQgYS9rZXJuZWwvdWlkMTYuYyBiL2tlcm5lbC91aWQxNi5jCmluZGV4IGRkMzA4YmEuLjNlNDFjMTYgMTAwNjQ0Ci0tLSBhL2tlcm5lbC91aWQxNi5jCisrKyBiL2tlcm5lbC91aWQxNi5jCkBAIC0yMSw3ICsyMSw3IEBACiB7CiAJbG9uZyByZXQgPSBzeXNfY2hvd24oZmlsZW5hbWUsIGxvdzJoaWdodWlkKHVzZXIpLCBsb3cyaGlnaGdpZChncm91cCkpOwogCS8qIGF2b2lkIFJFR1BBUk0gYnJlYWthZ2Ugb24geDg2OiAqLwotCXByZXZlbnRfdGFpbF9jYWxsKHJldCk7CisJYXNtbGlua2FnZV9wcm90ZWN0KDMsIHJldCwgZmlsZW5hbWUsIHVzZXIsIGdyb3VwKTsKIAlyZXR1cm4gcmV0OwogfQogCkBAIC0yOSw3ICsyOSw3IEBACiB7CiAJbG9uZyByZXQgPSBzeXNfbGNob3duKGZpbGVuYW1lLCBsb3cyaGlnaHVpZCh1c2VyKSwgbG93MmhpZ2hnaWQoZ3JvdXApKTsKIAkvKiBhdm9pZCBSRUdQQVJNIGJyZWFrYWdlIG9uIHg4NjogKi8KLQlwcmV2ZW50X3RhaWxfY2FsbChyZXQpOworCWFzbWxpbmthZ2VfcHJvdGVjdCgzLCByZXQsIGZpbGVuYW1lLCB1c2VyLCBncm91cCk7CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtMzcsNyArMzcsNyBAQAogewogCWxvbmcgcmV0ID0gc3lzX2ZjaG93bihmZCwgbG93MmhpZ2h1aWQodXNlciksIGxvdzJoaWdoZ2lkKGdyb3VwKSk7CiAJLyogYXZvaWQgUkVHUEFSTSBicmVha2FnZSBvbiB4ODY6ICovCi0JcHJldmVudF90YWlsX2NhbGwocmV0KTsKKwlhc21saW5rYWdlX3Byb3RlY3QoMywgcmV0LCBmZCwgdXNlciwgZ3JvdXApOwogCXJldHVybiByZXQ7CiB9CiAKQEAgLTQ1LDcgKzQ1LDcgQEAKIHsKIAlsb25nIHJldCA9IHN5c19zZXRyZWdpZChsb3cyaGlnaGdpZChyZ2lkKSwgbG93MmhpZ2hnaWQoZWdpZCkpOwogCS8qIGF2b2lkIFJFR1BBUk0gYnJlYWthZ2Ugb24geDg2OiAqLwotCXByZXZlbnRfdGFpbF9jYWxsKHJldCk7CisJYXNtbGlua2FnZV9wcm90ZWN0KDIsIHJldCwgcmdpZCwgZWdpZCk7CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtNTMsNyArNTMsNyBAQAogewogCWxvbmcgcmV0ID0gc3lzX3NldGdpZChsb3cyaGlnaGdpZChnaWQpKTsKIAkvKiBhdm9pZCBSRUdQQVJNIGJyZWFrYWdlIG9uIHg4NjogKi8KLQlwcmV2ZW50X3RhaWxfY2FsbChyZXQpOworCWFzbWxpbmthZ2VfcHJvdGVjdCgxLCByZXQsIGdpZCk7CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtNjEsNyArNjEsNyBAQAogewogCWxvbmcgcmV0ID0gc3lzX3NldHJldWlkKGxvdzJoaWdodWlkKHJ1aWQpLCBsb3cyaGlnaHVpZChldWlkKSk7CiAJLyogYXZvaWQgUkVHUEFSTSBicmVha2FnZSBvbiB4ODY6ICovCi0JcHJldmVudF90YWlsX2NhbGwocmV0KTsKKwlhc21saW5rYWdlX3Byb3RlY3QoMiwgcmV0LCBydWlkLCBldWlkKTsKIAlyZXR1cm4gcmV0OwogfQogCkBAIC02OSw3ICs2OSw3IEBACiB7CiAJbG9uZyByZXQgPSBzeXNfc2V0dWlkKGxvdzJoaWdodWlkKHVpZCkpOwogCS8qIGF2b2lkIFJFR1BBUk0gYnJlYWthZ2Ugb24geDg2OiAqLwotCXByZXZlbnRfdGFpbF9jYWxsKHJldCk7CisJYXNtbGlua2FnZV9wcm90ZWN0KDEsIHJldCwgdWlkKTsKIAlyZXR1cm4gcmV0OwogfQogCkBAIC03OCw3ICs3OCw3IEBACiAJbG9uZyByZXQgPSBzeXNfc2V0cmVzdWlkKGxvdzJoaWdodWlkKHJ1aWQpLCBsb3cyaGlnaHVpZChldWlkKSwKIAkJCQkgbG93MmhpZ2h1aWQoc3VpZCkpOwogCS8qIGF2b2lkIFJFR1BBUk0gYnJlYWthZ2Ugb24geDg2OiAqLwotCXByZXZlbnRfdGFpbF9jYWxsKHJldCk7CisJYXNtbGlua2FnZV9wcm90ZWN0KDMsIHJldCwgcnVpZCwgZXVpZCwgc3VpZCk7CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtOTgsNyArOTgsNyBAQAogCWxvbmcgcmV0ID0gc3lzX3NldHJlc2dpZChsb3cyaGlnaGdpZChyZ2lkKSwgbG93MmhpZ2hnaWQoZWdpZCksCiAJCQkJIGxvdzJoaWdoZ2lkKHNnaWQpKTsKIAkvKiBhdm9pZCBSRUdQQVJNIGJyZWFrYWdlIG9uIHg4NjogKi8KLQlwcmV2ZW50X3RhaWxfY2FsbChyZXQpOworCWFzbWxpbmthZ2VfcHJvdGVjdCgzLCByZXQsIHJnaWQsIGVnaWQsIHNnaWQpOwogCXJldHVybiByZXQ7CiB9CiAKQEAgLTExNyw3ICsxMTcsNyBAQAogewogCWxvbmcgcmV0ID0gc3lzX3NldGZzdWlkKGxvdzJoaWdodWlkKHVpZCkpOwogCS8qIGF2b2lkIFJFR1BBUk0gYnJlYWthZ2Ugb24geDg2OiAqLwotCXByZXZlbnRfdGFpbF9jYWxsKHJldCk7CisJYXNtbGlua2FnZV9wcm90ZWN0KDEsIHJldCwgdWlkKTsKIAlyZXR1cm4gcmV0OwogfQogCkBAIC0xMjUsNyArMTI1LDcgQEAKIHsKIAlsb25nIHJldCA9IHN5c19zZXRmc2dpZChsb3cyaGlnaGdpZChnaWQpKTsKIAkvKiBhdm9pZCBSRUdQQVJNIGJyZWFrYWdlIG9uIHg4NjogKi8KLQlwcmV2ZW50X3RhaWxfY2FsbChyZXQpOworCWFzbWxpbmthZ2VfcHJvdGVjdCgxLCByZXQsIGdpZCk7CiAJcmV0dXJuIHJldDsKIH0KIApkaWZmIC0tZ2l0IGEvbGliL2RldnJlcy5jIGIvbGliL2RldnJlcy5jCmluZGV4IGIxZDMzNmMuLmVkYzI3YTUgMTAwNjQ0Ci0tLSBhL2xpYi9kZXZyZXMuYworKysgYi9saWIvZGV2cmVzLmMKQEAgLTI5OCw2ICsyOTgsMzEgQEAKIEVYUE9SVF9TWU1CT0wocGNpbV9pb21hcF9yZWdpb25zKTsKIAogLyoqCisgKiBwY2ltX2lvbWFwX3JlZ2lvbnNfcmVxdWVzdF9hbGwgLSBSZXF1ZXN0IGFsbCBCQVJzIGFuZCBpb21hcCBzcGVjaWZpZWQgb25lcworICogQHBkZXY6IFBDSSBkZXZpY2UgdG8gbWFwIElPIHJlc291cmNlcyBmb3IKKyAqIEBtYXNrOiBNYXNrIG9mIEJBUnMgdG8gaW9tYXAKKyAqIEBuYW1lOiBOYW1lIHVzZWQgd2hlbiByZXF1ZXN0aW5nIHJlZ2lvbnMKKyAqCisgKiBSZXF1ZXN0IGFsbCBQQ0kgQkFScyBhbmQgaW9tYXAgcmVnaW9ucyBzcGVjaWZpZWQgYnkgQG1hc2suCisgKi8KK2ludCBwY2ltX2lvbWFwX3JlZ2lvbnNfcmVxdWVzdF9hbGwoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHUxNiBtYXNrLAorCQkJCSAgIGNvbnN0IGNoYXIgKm5hbWUpCit7CisJaW50IHJlcXVlc3RfbWFzayA9ICgoMSA8PCA2KSAtIDEpICYgfm1hc2s7CisJaW50IHJjOworCisJcmMgPSBwY2lfcmVxdWVzdF9zZWxlY3RlZF9yZWdpb25zKHBkZXYsIHJlcXVlc3RfbWFzaywgbmFtZSk7CisJaWYgKHJjKQorCQlyZXR1cm4gcmM7CisKKwlyYyA9IHBjaW1faW9tYXBfcmVnaW9ucyhwZGV2LCBtYXNrLCBuYW1lKTsKKwlpZiAocmMpCisJCXBjaV9yZWxlYXNlX3NlbGVjdGVkX3JlZ2lvbnMocGRldiwgcmVxdWVzdF9tYXNrKTsKKwlyZXR1cm4gcmM7Cit9CitFWFBPUlRfU1lNQk9MKHBjaW1faW9tYXBfcmVnaW9uc19yZXF1ZXN0X2FsbCk7CisKKy8qKgogICogcGNpbV9pb3VubWFwX3JlZ2lvbnMgLSBVbm1hcCBhbmQgcmVsZWFzZSBQQ0kgQkFScwogICogQHBkZXY6IFBDSSBkZXZpY2UgdG8gbWFwIElPIHJlc291cmNlcyBmb3IKICAqIEBtYXNrOiBNYXNrIG9mIEJBUnMgdG8gdW5tYXAgYW5kIHJlbGVhc2UKZGlmZiAtLWdpdCBhL2xpYi9pb21hcC5jIGIvbGliL2lvbWFwLmMKaW5kZXggZGIwMDRhOS4uZGQ2Y2E0OCAxMDA2NDQKLS0tIGEvbGliL2lvbWFwLmMKKysrIGIvbGliL2lvbWFwLmMKQEAgLTI1Niw3ICsyNTYsNyBAQAogICogKi8KIHZvaWQgX19pb21lbSAqcGNpX2lvbWFwKHN0cnVjdCBwY2lfZGV2ICpkZXYsIGludCBiYXIsIHVuc2lnbmVkIGxvbmcgbWF4bGVuKQogewotCXVuc2lnbmVkIGxvbmcgc3RhcnQgPSBwY2lfcmVzb3VyY2Vfc3RhcnQoZGV2LCBiYXIpOworCXJlc291cmNlX3NpemVfdCBzdGFydCA9IHBjaV9yZXNvdXJjZV9zdGFydChkZXYsIGJhcik7CiAJdW5zaWduZWQgbG9uZyBsZW4gPSBwY2lfcmVzb3VyY2VfbGVuKGRldiwgYmFyKTsKIAl1bnNpZ25lZCBsb25nIGZsYWdzID0gcGNpX3Jlc291cmNlX2ZsYWdzKGRldiwgYmFyKTsKIApkaWZmIC0tZ2l0IGEvbGliL2tvYmplY3RfdWV2ZW50LmMgYi9saWIva29iamVjdF91ZXZlbnQuYwppbmRleCA1YTQwMmUyLi41YjZkN2Y2IDEwMDY0NAotLS0gYS9saWIva29iamVjdF91ZXZlbnQuYworKysgYi9saWIva29iamVjdF91ZXZlbnQuYwpAQCAtNTUsNyArNTUsNyBAQAogCWVudW0ga29iamVjdF9hY3Rpb24gYWN0aW9uOwogCWludCByZXQgPSAtRUlOVkFMOwogCi0JaWYgKGNvdW50ICYmIGJ1Zltjb3VudC0xXSA9PSAnXG4nKQorCWlmIChjb3VudCAmJiAoYnVmW2NvdW50LTFdID09ICdcbicgfHwgYnVmW2NvdW50LTFdID09ICdcMCcpKQogCQljb3VudC0tOwogCiAJaWYgKCFjb3VudCkKZGlmZiAtLWdpdCBhL2xpYi9sem8vbHpvMXhfZGVjb21wcmVzcy5jIGIvbGliL2x6by9sem8xeF9kZWNvbXByZXNzLmMKaW5kZXggOWRjNzA1Ni4uNzdmMGY5YiAxMDA2NDQKLS0tIGEvbGliL2x6by9sem8xeF9kZWNvbXByZXNzLmMKKysrIGIvbGliL2x6by9sem8xeF9kZWNvbXByZXNzLmMKQEAgLTE1OCw3ICsxNTgsNyBAQAogCQkJCQl0ICs9IDcgKyAqaXArKzsKIAkJCQl9CiAJCQkJbV9wb3MgLT0gbGUxNl90b19jcHUoZ2V0X3VuYWxpZ25lZCgKLQkJCQkJKGNvbnN0IHVuc2lnbmVkIHNob3J0ICopaXApID4+IDIpOworCQkJCQkoY29uc3QgdW5zaWduZWQgc2hvcnQgKilpcCkpID4+IDI7CiAJCQkJaXAgKz0gMjsKIAkJCQlpZiAobV9wb3MgPT0gb3ApCiAJCQkJCWdvdG8gZW9mX2ZvdW5kOwpkaWZmIC0tZ2l0IGEvbGliL3JhbmRvbTMyLmMgYi9saWIvcmFuZG9tMzIuYwppbmRleCBlYzdmODFkLi5jYTg3ZDg2IDEwMDY0NAotLS0gYS9saWIvcmFuZG9tMzIuYworKysgYi9saWIvcmFuZG9tMzIuYwpAQCAtOTcsMTMgKzk3LDE4IEBACiAgKglAc2VlZDogc2VlZCB2YWx1ZQogICoKICAqCUFkZCBzb21lIGFkZGl0aW9uYWwgc2VlZGluZyB0byB0aGUgcmFuZG9tMzIoKSBwb29sLgotICoJTm90ZTogdGhpcyBwb29sIGlzIHBlciBjcHUgc28gaXQgb25seSBhZmZlY3RzIGN1cnJlbnQgQ1BVLgogICovCiB2b2lkIHNyYW5kb20zMih1MzIgZW50cm9weSkKIHsKLQlzdHJ1Y3Qgcm5kX3N0YXRlICpzdGF0ZSA9ICZnZXRfY3B1X3ZhcihuZXRfcmFuZF9zdGF0ZSk7Ci0JX19zZXRfcmFuZG9tMzIoc3RhdGUsIHN0YXRlLT5zMSBeIGVudHJvcHkpOwotCXB1dF9jcHVfdmFyKHN0YXRlKTsKKwlpbnQgaTsKKwkvKgorCSAqIE5vIGxvY2tpbmcgb24gdGhlIENQVXMsIGJ1dCB0aGVuIHNvbWV3aGF0IHJhbmRvbSByZXN1bHRzIGFyZSwgd2VsbCwKKwkgKiBleHBlY3RlZC4KKwkgKi8KKwlmb3JfZWFjaF9wb3NzaWJsZV9jcHUgKGkpIHsKKwkJc3RydWN0IHJuZF9zdGF0ZSAqc3RhdGUgPSAmcGVyX2NwdShuZXRfcmFuZF9zdGF0ZSwgaSk7CisJCV9fc2V0X3JhbmRvbTMyKHN0YXRlLCBzdGF0ZS0+czEgXiBlbnRyb3B5KTsKKwl9CiB9CiBFWFBPUlRfU1lNQk9MKHNyYW5kb20zMik7CiAKZGlmZiAtLWdpdCBhL2xpYi9zd2lvdGxiLmMgYi9saWIvc3dpb3RsYi5jCmluZGV4IDRiYjVhMTEuLjAyNTkyMjggMTAwNjQ0Ci0tLSBhL2xpYi9zd2lvdGxiLmMKKysrIGIvbGliL3N3aW90bGIuYwpAQCAtMzEwLDcgKzMxMCw5IEBACiAJc3RhcnRfZG1hX2FkZHIgPSB2aXJ0X3RvX2J1cyhpb190bGJfc3RhcnQpICYgbWFzazsKIAogCW9mZnNldF9zbG90cyA9IEFMSUdOKHN0YXJ0X2RtYV9hZGRyLCAxIDw8IElPX1RMQl9TSElGVCkgPj4gSU9fVExCX1NISUZUOwotCW1heF9zbG90cyA9IEFMSUdOKG1hc2sgKyAxLCAxIDw8IElPX1RMQl9TSElGVCkgPj4gSU9fVExCX1NISUZUOworCW1heF9zbG90cyA9IG1hc2sgKyAxCisJCSAgICA/IEFMSUdOKG1hc2sgKyAxLCAxIDw8IElPX1RMQl9TSElGVCkgPj4gSU9fVExCX1NISUZUCisJCSAgICA6IDFVTCA8PCAoQklUU19QRVJfTE9ORyAtIElPX1RMQl9TSElGVCk7CiAKIAkvKgogCSAqIEZvciBtYXBwaW5ncyBncmVhdGVyIHRoYW4gYSBwYWdlLCB3ZSBsaW1pdCB0aGUgc3RyaWRlIChhbmQKQEAgLTMzMywxNiArMzM1LDE4IEBACiAJCWluZGV4ID0gQUxJR04oaW9fdGxiX2luZGV4LCBzdHJpZGUpOwogCQlpZiAoaW5kZXggPj0gaW9fdGxiX25zbGFicykKIAkJCWluZGV4ID0gMDsKLQotCQl3aGlsZSAoaXNfc3Bhbl9ib3VuZGFyeShpbmRleCwgbnNsb3RzLCBvZmZzZXRfc2xvdHMsCi0JCQkJCW1heF9zbG90cykpIHsKLQkJCWluZGV4ICs9IHN0cmlkZTsKLQkJCWlmIChpbmRleCA+PSBpb190bGJfbnNsYWJzKQotCQkJCWluZGV4ID0gMDsKLQkJfQogCQl3cmFwID0gaW5kZXg7CiAKIAkJZG8geworCQkJd2hpbGUgKGlzX3NwYW5fYm91bmRhcnkoaW5kZXgsIG5zbG90cywgb2Zmc2V0X3Nsb3RzLAorCQkJCQkJbWF4X3Nsb3RzKSkgeworCQkJCWluZGV4ICs9IHN0cmlkZTsKKwkJCQlpZiAoaW5kZXggPj0gaW9fdGxiX25zbGFicykKKwkJCQkJaW5kZXggPSAwOworCQkJCWlmIChpbmRleCA9PSB3cmFwKQorCQkJCQlnb3RvIG5vdF9mb3VuZDsKKwkJCX0KKwogCQkJLyoKIAkJCSAqIElmIHdlIGZpbmQgYSBzbG90IHRoYXQgaW5kaWNhdGVzIHdlIGhhdmUgJ25zbG90cycKIAkJCSAqIG51bWJlciBvZiBjb250aWd1b3VzIGJ1ZmZlcnMsIHdlIGFsbG9jYXRlIHRoZQpAQCAtMzY3LDE0ICszNzEsMTIgQEAKIAogCQkJCWdvdG8gZm91bmQ7CiAJCQl9Ci0JCQlkbyB7Ci0JCQkJaW5kZXggKz0gc3RyaWRlOwotCQkJCWlmIChpbmRleCA+PSBpb190bGJfbnNsYWJzKQotCQkJCQlpbmRleCA9IDA7Ci0JCQl9IHdoaWxlIChpc19zcGFuX2JvdW5kYXJ5KGluZGV4LCBuc2xvdHMsIG9mZnNldF9zbG90cywKLQkJCQkJCSAgbWF4X3Nsb3RzKSk7CisJCQlpbmRleCArPSBzdHJpZGU7CisJCQlpZiAoaW5kZXggPj0gaW9fdGxiX25zbGFicykKKwkJCQlpbmRleCA9IDA7CiAJCX0gd2hpbGUgKGluZGV4ICE9IHdyYXApOwogCisgIG5vdF9mb3VuZDoKIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW9fdGxiX2xvY2ssIGZsYWdzKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQpkaWZmIC0tZ2l0IGEvbW0vYm9vdG1lbS5jIGIvbW0vYm9vdG1lbS5jCmluZGV4IGY2ZmY0MzMuLjJjY2VhNzAgMTAwNjQ0Ci0tLSBhL21tL2Jvb3RtZW0uYworKysgYi9tbS9ib290bWVtLmMKQEAgLTEyNSw2ICsxMjUsNyBAQAogCUJVR19PTighc2l6ZSk7CiAJQlVHX09OKFBGTl9ET1dOKGFkZHIpID49IGJkYXRhLT5ub2RlX2xvd19wZm4pOwogCUJVR19PTihQRk5fVVAoYWRkciArIHNpemUpID4gYmRhdGEtPm5vZGVfbG93X3Bmbik7CisJQlVHX09OKGFkZHIgPCBiZGF0YS0+bm9kZV9ib290X3N0YXJ0KTsKIAogCXNpZHggPSBQRk5fRE9XTihhZGRyIC0gYmRhdGEtPm5vZGVfYm9vdF9zdGFydCk7CiAJZWlkeCA9IFBGTl9VUChhZGRyICsgc2l6ZSAtIGJkYXRhLT5ub2RlX2Jvb3Rfc3RhcnQpOwpAQCAtMTU2LDIxICsxNTcsMzEgQEAKIAl1bnNpZ25lZCBsb25nIHNpZHgsIGVpZHg7CiAJdW5zaWduZWQgbG9uZyBpOwogCisJQlVHX09OKCFzaXplKTsKKworCS8qIG91dCByYW5nZSAqLworCWlmIChhZGRyICsgc2l6ZSA8IGJkYXRhLT5ub2RlX2Jvb3Rfc3RhcnQgfHwKKwkJUEZOX0RPV04oYWRkcikgPiBiZGF0YS0+bm9kZV9sb3dfcGZuKQorCQlyZXR1cm47CiAJLyoKIAkgKiByb3VuZCBkb3duIGVuZCBvZiB1c2FibGUgbWVtLCBwYXJ0aWFsbHkgZnJlZSBwYWdlcyBhcmUKIAkgKiBjb25zaWRlcmVkIHJlc2VydmVkLgogCSAqLwotCUJVR19PTighc2l6ZSk7Ci0JQlVHX09OKFBGTl9ET1dOKGFkZHIgKyBzaXplKSA+IGJkYXRhLT5ub2RlX2xvd19wZm4pOwogCi0JaWYgKGFkZHIgPCBiZGF0YS0+bGFzdF9zdWNjZXNzKQorCWlmIChhZGRyID49IGJkYXRhLT5ub2RlX2Jvb3Rfc3RhcnQgJiYgYWRkciA8IGJkYXRhLT5sYXN0X3N1Y2Nlc3MpCiAJCWJkYXRhLT5sYXN0X3N1Y2Nlc3MgPSBhZGRyOwogCiAJLyoKLQkgKiBSb3VuZCB1cCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBhZGRyZXNzLgorCSAqIFJvdW5kIHVwIHRvIGluZGV4IHRvIHRoZSByYW5nZS4KIAkgKi8KLQlzaWR4ID0gUEZOX1VQKGFkZHIpIC0gUEZOX0RPV04oYmRhdGEtPm5vZGVfYm9vdF9zdGFydCk7CisJaWYgKFBGTl9VUChhZGRyKSA+IFBGTl9ET1dOKGJkYXRhLT5ub2RlX2Jvb3Rfc3RhcnQpKQorCQlzaWR4ID0gUEZOX1VQKGFkZHIpIC0gUEZOX0RPV04oYmRhdGEtPm5vZGVfYm9vdF9zdGFydCk7CisJZWxzZQorCQlzaWR4ID0gMDsKKwogCWVpZHggPSBQRk5fRE9XTihhZGRyICsgc2l6ZSAtIGJkYXRhLT5ub2RlX2Jvb3Rfc3RhcnQpOworCWlmIChlaWR4ID4gYmRhdGEtPm5vZGVfbG93X3BmbiAtIFBGTl9ET1dOKGJkYXRhLT5ub2RlX2Jvb3Rfc3RhcnQpKQorCQllaWR4ID0gYmRhdGEtPm5vZGVfbG93X3BmbiAtIFBGTl9ET1dOKGJkYXRhLT5ub2RlX2Jvb3Rfc3RhcnQpOwogCiAJZm9yIChpID0gc2lkeDsgaSA8IGVpZHg7IGkrKykgewogCQlpZiAodW5saWtlbHkoIXRlc3RfYW5kX2NsZWFyX2JpdChpLCBiZGF0YS0+bm9kZV9ib290bWVtX21hcCkpKQpAQCAtNDIxLDcgKzQzMiw5IEBACiAKIHZvaWQgX19pbml0IGZyZWVfYm9vdG1lbSh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgc2l6ZSkKIHsKLQlmcmVlX2Jvb3RtZW1fY29yZShOT0RFX0RBVEEoMCktPmJkYXRhLCBhZGRyLCBzaXplKTsKKwlib290bWVtX2RhdGFfdCAqYmRhdGE7CisJbGlzdF9mb3JfZWFjaF9lbnRyeShiZGF0YSwgJmJkYXRhX2xpc3QsIGxpc3QpCisJCWZyZWVfYm9vdG1lbV9jb3JlKGJkYXRhLCBhZGRyLCBzaXplKTsKIH0KIAogdW5zaWduZWQgbG9uZyBfX2luaXQgZnJlZV9hbGxfYm9vdG1lbSh2b2lkKQpkaWZmIC0tZ2l0IGEvbW0vZmlsZW1hcC5jIGIvbW0vZmlsZW1hcC5jCmluZGV4IGRmMzQzZDFlLi4wN2U5ZDkyIDEwMDY0NAotLS0gYS9tbS9maWxlbWFwLmMKKysrIGIvbW0vZmlsZW1hcC5jCkBAIC0zNDMsNyArMzQzLDcgQEAKIEVYUE9SVF9TWU1CT0woc3luY19wYWdlX3JhbmdlKTsKIAogLyoqCi0gKiBzeW5jX3BhZ2VfcmFuZ2Vfbm9sb2NrCisgKiBzeW5jX3BhZ2VfcmFuZ2Vfbm9sb2NrIC0gd3JpdGUgJiB3YWl0IG9uIGFsbCBwYWdlcyBpbiB0aGUgcGFzc2VkIHJhbmdlIHdpdGhvdXQgbG9ja2luZwogICogQGlub2RlOgl0YXJnZXQgaW5vZGUKICAqIEBtYXBwaW5nOgl0YXJnZXQgYWRkcmVzc19zcGFjZQogICogQHBvczoJYmVnaW5uaW5nIG9mZnNldCBpbiBwYWdlcyB0byB3cml0ZQpAQCAtNjExLDcgKzYxMSwxMCBAQAogCQkJCQlzeW5jX3BhZ2Vfa2lsbGFibGUsIFRBU0tfS0lMTEFCTEUpOwogfQogCi0vKgorLyoqCisgKiBfX2xvY2tfcGFnZV9ub3N5bmMgLSBnZXQgYSBsb2NrIG9uIHRoZSBwYWdlLCB3aXRob3V0IGNhbGxpbmcgc3luY19wYWdlKCkKKyAqIEBwYWdlOiB0aGUgcGFnZSB0byBsb2NrCisgKgogICogVmFyaWFudCBvZiBsb2NrX3BhZ2UgdGhhdCBkb2VzIG5vdCByZXF1aXJlIHRoZSBjYWxsZXIgdG8gaG9sZCBhIHJlZmVyZW5jZQogICogb24gdGhlIHBhZ2UncyBtYXBwaW5nLgogICovCkBAIC0xNTM4LDkgKzE1NDEsMjAgQEAKIAlyZXR1cm4gcGFnZTsKIH0KIAotLyoKKy8qKgorICogcmVhZF9jYWNoZV9wYWdlX2FzeW5jIC0gcmVhZCBpbnRvIHBhZ2UgY2FjaGUsIGZpbGwgaXQgaWYgbmVlZGVkCisgKiBAbWFwcGluZzoJdGhlIHBhZ2UncyBhZGRyZXNzX3NwYWNlCisgKiBAaW5kZXg6CXRoZSBwYWdlIGluZGV4CisgKiBAZmlsbGVyOglmdW5jdGlvbiB0byBwZXJmb3JtIHRoZSByZWFkCisgKiBAZGF0YToJZGVzdGluYXRpb24gZm9yIHJlYWQgZGF0YQorICoKICAqIFNhbWUgYXMgcmVhZF9jYWNoZV9wYWdlLCBidXQgZG9uJ3Qgd2FpdCBmb3IgcGFnZSB0byBiZWNvbWUgdW5sb2NrZWQKICAqIGFmdGVyIHN1Ym1pdHRpbmcgaXQgdG8gdGhlIGZpbGxlci4KKyAqCisgKiBSZWFkIGludG8gdGhlIHBhZ2UgY2FjaGUuIElmIGEgcGFnZSBhbHJlYWR5IGV4aXN0cywgYW5kIFBhZ2VVcHRvZGF0ZSgpIGlzCisgKiBub3Qgc2V0LCB0cnkgdG8gZmlsbCB0aGUgcGFnZSBidXQgZG9uJ3Qgd2FpdCBmb3IgaXQgdG8gYmVjb21lIHVubG9ja2VkLgorICoKKyAqIElmIHRoZSBwYWdlIGRvZXMgbm90IGdldCBicm91Z2h0IHVwdG9kYXRlLCByZXR1cm4gLUVJTy4KICAqLwogc3RydWN0IHBhZ2UgKnJlYWRfY2FjaGVfcGFnZV9hc3luYyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywKIAkJCQlwZ29mZl90IGluZGV4LApkaWZmIC0tZ2l0IGEvbW0vZnJlbWFwLmMgYi9tbS9mcmVtYXAuYwppbmRleCA2OWEzN2MyLi4wN2E5YzgyIDEwMDY0NAotLS0gYS9tbS9mcmVtYXAuYworKysgYi9tbS9mcmVtYXAuYwpAQCAtMTEzLDcgKzExMyw3IEBACiAgKiBtbWFwKCkvbXJlbWFwKCkgaXQgZG9lcyBub3QgY3JlYXRlIGFueSBuZXcgdm1hcy4gVGhlIG5ldyBtYXBwaW5ncyBhcmUKICAqIGFsc28gc2FmZSBhY3Jvc3Mgc3dhcG91dC4KICAqCi0gKiBOT1RFOiB0aGUgJ3Byb3QnIHBhcmFtZXRlciByaWdodCBub3cgaXMgaWdub3JlZCAoYnV0IG11c3QgYmUgemVybyksCisgKiBOT1RFOiB0aGUgQHByb3QgcGFyYW1ldGVyIHJpZ2h0IG5vdyBpcyBpZ25vcmVkIChidXQgbXVzdCBiZSB6ZXJvKSwKICAqIGFuZCB0aGUgdm1hJ3MgZGVmYXVsdCBwcm90ZWN0aW9uIGlzIHVzZWQuIEFyYml0cmFyeSBwcm90ZWN0aW9ucwogICogbWlnaHQgYmUgaW1wbGVtZW50ZWQgaW4gdGhlIGZ1dHVyZS4KICAqLwpkaWZmIC0tZ2l0IGEvbW0vaGlnaG1lbS5jIGIvbW0vaGlnaG1lbS5jCmluZGV4IDM1ZDQ3NzMuLjdkYTRhN2IgMTAwNjQ0Ci0tLSBhL21tL2hpZ2htZW0uYworKysgYi9tbS9oaWdobWVtLmMKQEAgLTEwNCw4ICsxMDQsOSBAQAogCWZsdXNoX3RsYl9rZXJuZWxfcmFuZ2UoUEtNQVBfQUREUigwKSwgUEtNQVBfQUREUihMQVNUX1BLTUFQKSk7CiB9CiAKLS8qIEZsdXNoIGFsbCB1bnVzZWQga21hcCBtYXBwaW5ncyBpbiBvcmRlciB0byByZW1vdmUgc3RyYXkKLSAgIG1hcHBpbmdzLiAqLworLyoqCisgKiBrbWFwX2ZsdXNoX3VudXNlZCAtIGZsdXNoIGFsbCB1bnVzZWQga21hcCBtYXBwaW5ncyBpbiBvcmRlciB0byByZW1vdmUgc3RyYXkgbWFwcGluZ3MKKyAqLwogdm9pZCBrbWFwX2ZsdXNoX3VudXNlZCh2b2lkKQogewogCXNwaW5fbG9jaygma21hcF9sb2NrKTsKQEAgLTE2Myw2ICsxNjQsMTQgQEAKIAlyZXR1cm4gdmFkZHI7CiB9CiAKKy8qKgorICoga21hcF9oaWdoIC0gbWFwIGEgaGlnaG1lbSBwYWdlIGludG8gbWVtb3J5CisgKiBAcGFnZTogJnN0cnVjdCBwYWdlIHRvIG1hcAorICoKKyAqIFJldHVybnMgdGhlIHBhZ2UncyB2aXJ0dWFsIG1lbW9yeSBhZGRyZXNzLgorICoKKyAqIFdlIGNhbm5vdCBjYWxsIHRoaXMgZnJvbSBpbnRlcnJ1cHRzLCBhcyBpdCBtYXkgYmxvY2suCisgKi8KIHZvaWQgKmttYXBfaGlnaChzdHJ1Y3QgcGFnZSAqcGFnZSkKIHsKIAl1bnNpZ25lZCBsb25nIHZhZGRyOwpAQCAtMTcwLDggKzE3OSw2IEBACiAJLyoKIAkgKiBGb3IgaGlnaG1lbSBwYWdlcywgd2UgY2FuJ3QgdHJ1c3QgInZpcnR1YWwiIHVudGlsCiAJICogYWZ0ZXIgd2UgaGF2ZSB0aGUgbG9jay4KLQkgKgotCSAqIFdlIGNhbm5vdCBjYWxsIHRoaXMgZnJvbSBpbnRlcnJ1cHRzLCBhcyBpdCBtYXkgYmxvY2sKIAkgKi8KIAlzcGluX2xvY2soJmttYXBfbG9jayk7CiAJdmFkZHIgPSAodW5zaWduZWQgbG9uZylwYWdlX2FkZHJlc3MocGFnZSk7CkBAIC0xODUsNiArMTkyLDEwIEBACiAKIEVYUE9SVF9TWU1CT0woa21hcF9oaWdoKTsKIAorLyoqCisgKiBrdW5tYXBfaGlnaCAtIG1hcCBhIGhpZ2htZW0gcGFnZSBpbnRvIG1lbW9yeQorICogQHBhZ2U6ICZzdHJ1Y3QgcGFnZSB0byB1bm1hcAorICovCiB2b2lkIGt1bm1hcF9oaWdoKHN0cnVjdCBwYWdlICpwYWdlKQogewogCXVuc2lnbmVkIGxvbmcgdmFkZHI7CkBAIC0yNTksNiArMjcwLDEyIEBACiAJcmV0dXJuICZwYWdlX2FkZHJlc3NfaHRhYmxlW2hhc2hfcHRyKHBhZ2UsIFBBX0hBU0hfT1JERVIpXTsKIH0KIAorLyoqCisgKiBwYWdlX2FkZHJlc3MgLSBnZXQgdGhlIG1hcHBlZCB2aXJ0dWFsIGFkZHJlc3Mgb2YgYSBwYWdlCisgKiBAcGFnZTogJnN0cnVjdCBwYWdlIHRvIGdldCB0aGUgdmlydHVhbCBhZGRyZXNzIG9mCisgKgorICogUmV0dXJucyB0aGUgcGFnZSdzIHZpcnR1YWwgYWRkcmVzcy4KKyAqLwogdm9pZCAqcGFnZV9hZGRyZXNzKHN0cnVjdCBwYWdlICpwYWdlKQogewogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CkBAIC0yODgsNiArMzA1LDExIEBACiAKIEVYUE9SVF9TWU1CT0wocGFnZV9hZGRyZXNzKTsKIAorLyoqCisgKiBzZXRfcGFnZV9hZGRyZXNzIC0gc2V0IGEgcGFnZSdzIHZpcnR1YWwgYWRkcmVzcworICogQHBhZ2U6ICZzdHJ1Y3QgcGFnZSB0byBzZXQKKyAqIEB2aXJ0dWFsOiB2aXJ0dWFsIGFkZHJlc3MgdG8gdXNlCisgKi8KIHZvaWQgc2V0X3BhZ2VfYWRkcmVzcyhzdHJ1Y3QgcGFnZSAqcGFnZSwgdm9pZCAqdmlydHVhbCkKIHsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwpkaWZmIC0tZ2l0IGEvbW0vaHVnZXRsYi5jIGIvbW0vaHVnZXRsYi5jCmluZGV4IDc0YzFiNmIuLjUxYzllMmMgMTAwNjQ0Ci0tLSBhL21tL2h1Z2V0bGIuYworKysgYi9tbS9odWdldGxiLmMKQEAgLTQwMSwxMiArNDAxLDIwIEBACiAJc3RydWN0IHBhZ2UgKnBhZ2U7CiAJdW5zaWduZWQgbG9uZyBucl9wYWdlczsKIAorCS8qCisJICogV2Ugd2FudCB0byByZWxlYXNlIGFzIG1hbnkgc3VycGx1cyBwYWdlcyBhcyBwb3NzaWJsZSwgc3ByZWFkCisJICogZXZlbmx5IGFjcm9zcyBhbGwgbm9kZXMuIEl0ZXJhdGUgYWNyb3NzIGFsbCBub2RlcyB1bnRpbCB3ZQorCSAqIGNhbiBubyBsb25nZXIgZnJlZSB1bnJlc2VydmVkIHN1cnBsdXMgcGFnZXMuIFRoaXMgb2NjdXJzIHdoZW4KKwkgKiB0aGUgbm9kZXMgd2l0aCBzdXJwbHVzIHBhZ2VzIGhhdmUgbm8gZnJlZSBwYWdlcy4KKwkgKi8KKwl1bnNpZ25lZCBsb25nIHJlbWFpbmluZ19pdGVyYXRpb25zID0gbnVtX29ubGluZV9ub2RlcygpOworCiAJLyogVW5jb21taXQgdGhlIHJlc2VydmF0aW9uICovCiAJcmVzdl9odWdlX3BhZ2VzIC09IHVudXNlZF9yZXN2X3BhZ2VzOwogCiAJbnJfcGFnZXMgPSBtaW4odW51c2VkX3Jlc3ZfcGFnZXMsIHN1cnBsdXNfaHVnZV9wYWdlcyk7CiAKLQl3aGlsZSAobnJfcGFnZXMpIHsKKwl3aGlsZSAocmVtYWluaW5nX2l0ZXJhdGlvbnMtLSAmJiBucl9wYWdlcykgewogCQluaWQgPSBuZXh0X25vZGUobmlkLCBub2RlX29ubGluZV9tYXApOwogCQlpZiAobmlkID09IE1BWF9OVU1OT0RFUykKIAkJCW5pZCA9IGZpcnN0X25vZGUobm9kZV9vbmxpbmVfbWFwKTsKQEAgLTQyNCw2ICs0MzIsNyBAQAogCQkJc3VycGx1c19odWdlX3BhZ2VzLS07CiAJCQlzdXJwbHVzX2h1Z2VfcGFnZXNfbm9kZVtuaWRdLS07CiAJCQlucl9wYWdlcy0tOworCQkJcmVtYWluaW5nX2l0ZXJhdGlvbnMgPSBudW1fb25saW5lX25vZGVzKCk7CiAJCX0KIAl9CiB9CkBAIC02NzEsOSArNjgwLDExIEBACiB7CiAJcmV0dXJuIHNwcmludGYoYnVmLAogCQkiTm9kZSAlZCBIdWdlUGFnZXNfVG90YWw6ICU1dVxuIgotCQkiTm9kZSAlZCBIdWdlUGFnZXNfRnJlZTogICU1dVxuIiwKKwkJIk5vZGUgJWQgSHVnZVBhZ2VzX0ZyZWU6ICAlNXVcbiIKKwkJIk5vZGUgJWQgSHVnZVBhZ2VzX1N1cnA6ICAlNXVcbiIsCiAJCW5pZCwgbnJfaHVnZV9wYWdlc19ub2RlW25pZF0sCi0JCW5pZCwgZnJlZV9odWdlX3BhZ2VzX25vZGVbbmlkXSk7CisJCW5pZCwgZnJlZV9odWdlX3BhZ2VzX25vZGVbbmlkXSwKKwkJbmlkLCBzdXJwbHVzX2h1Z2VfcGFnZXNfbm9kZVtuaWRdKTsKIH0KIAogLyogUmV0dXJuIHRoZSBudW1iZXIgcGFnZXMgb2YgbWVtb3J5IHdlIHBoeXNpY2FsbHkgaGF2ZSwgaW4gUEFHRV9TSVpFIHVuaXRzLiAqLwpkaWZmIC0tZ2l0IGEvbW0vbWVtY29udHJvbC5jIGIvbW0vbWVtY29udHJvbC5jCmluZGV4IDhiOWY2Y2EuLjJlMGJmYzkzIDEwMDY0NAotLS0gYS9tbS9tZW1jb250cm9sLmMKKysrIGIvbW0vbWVtY29udHJvbC5jCkBAIC01MzMsNiArNTMzLDkgQEAKIAl1bnNpZ25lZCBsb25nIG5yX3JldHJpZXMgPSBNRU1fQ0dST1VQX1JFQ0xBSU1fUkVUUklFUzsKIAlzdHJ1Y3QgbWVtX2Nncm91cF9wZXJfem9uZSAqbXo7CiAKKwlpZiAobWVtX2Nncm91cF9zdWJzeXMuZGlzYWJsZWQpCisJCXJldHVybiAwOworCiAJLyoKIAkgKiBTaG91bGQgcGFnZV9jZ3JvdXAncyBnbyB0byB0aGVpciBvd24gc2xhYj8KIAkgKiBPbmUgY291bGQgb3B0aW1pemUgdGhlIHBlcmZvcm1hbmNlIG9mIHRoZSBjaGFyZ2luZyByb3V0aW5lCkBAIC02NjUsNiArNjY4LDkgQEAKIAlzdHJ1Y3QgbWVtX2Nncm91cF9wZXJfem9uZSAqbXo7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAorCWlmIChtZW1fY2dyb3VwX3N1YnN5cy5kaXNhYmxlZCkKKwkJcmV0dXJuOworCiAJLyoKIAkgKiBDaGVjayBpZiBvdXIgcGFnZV9jZ3JvdXAgaXMgdmFsaWQKIAkgKi8KQEAgLTcwNSw2ICs3MTEsOSBAQAogewogCXN0cnVjdCBwYWdlX2Nncm91cCAqcGM7CiAKKwlpZiAobWVtX2Nncm91cF9zdWJzeXMuZGlzYWJsZWQpCisJCXJldHVybiAwOworCiAJbG9ja19wYWdlX2Nncm91cChwYWdlKTsKIAlwYyA9IHBhZ2VfZ2V0X3BhZ2VfY2dyb3VwKHBhZ2UpOwogCWlmIChwYykKQEAgLTgwMyw2ICs4MTIsOSBAQAogCWludCByZXQgPSAtRUJVU1k7CiAJaW50IG5vZGUsIHppZDsKIAorCWlmIChtZW1fY2dyb3VwX3N1YnN5cy5kaXNhYmxlZCkKKwkJcmV0dXJuIDA7CisKIAljc3NfZ2V0KCZtZW0tPmNzcyk7CiAJLyoKIAkgKiBwYWdlIHJlY2xhaW0gY29kZSAoa3N3YXBkIGV0Yy4uKSB3aWxsIG1vdmUgcGFnZXMgYmV0d2VlbgpAQCAtOTY2LDcgKzk3OCw3IEBACiB7CiAJc3RydWN0IG1lbV9jZ3JvdXBfcGVyX25vZGUgKnBuOwogCXN0cnVjdCBtZW1fY2dyb3VwX3Blcl96b25lICptejsKLQlpbnQgem9uZTsKKwlpbnQgem9uZSwgdG1wID0gbm9kZTsKIAkvKgogCSAqIFRoaXMgcm91dGluZSBpcyBjYWxsZWQgYWdhaW5zdCBwb3NzaWJsZSBub2Rlcy4KIAkgKiBCdXQgaXQncyBCVUcgdG8gY2FsbCBrbWFsbG9jKCkgYWdhaW5zdCBvZmZsaW5lIG5vZGUuCkBAIC05NzUsMTAgKzk4Nyw5IEBACiAJICogICAgICAgbmV2ZXIgYmUgb25saW5lZC4gSXQncyBiZXR0ZXIgdG8gdXNlIG1lbW9yeSBob3RwbHVnIGNhbGxiYWNrCiAJICogICAgICAgZnVuY3Rpb24uCiAJICovCi0JaWYgKG5vZGVfc3RhdGUobm9kZSwgTl9ISUdIX01FTU9SWSkpCi0JCXBuID0ga21hbGxvY19ub2RlKHNpemVvZigqcG4pLCBHRlBfS0VSTkVMLCBub2RlKTsKLQllbHNlCi0JCXBuID0ga21hbGxvYyhzaXplb2YoKnBuKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFub2RlX3N0YXRlKG5vZGUsIE5fTk9STUFMX01FTU9SWSkpCisJCXRtcCA9IC0xOworCXBuID0ga21hbGxvY19ub2RlKHNpemVvZigqcG4pLCBHRlBfS0VSTkVMLCB0bXApOwogCWlmICghcG4pCiAJCXJldHVybiAxOwogCkBAIC0xMDUzLDYgKzEwNjQsOCBAQAogc3RhdGljIGludCBtZW1fY2dyb3VwX3BvcHVsYXRlKHN0cnVjdCBjZ3JvdXBfc3Vic3lzICpzcywKIAkJCQlzdHJ1Y3QgY2dyb3VwICpjb250KQogeworCWlmIChtZW1fY2dyb3VwX3N1YnN5cy5kaXNhYmxlZCkKKwkJcmV0dXJuIDA7CiAJcmV0dXJuIGNncm91cF9hZGRfZmlsZXMoY29udCwgc3MsIG1lbV9jZ3JvdXBfZmlsZXMsCiAJCQkJCUFSUkFZX1NJWkUobWVtX2Nncm91cF9maWxlcykpOwogfQpAQCAtMTA2NSw2ICsxMDc4LDkgQEAKIAlzdHJ1Y3QgbW1fc3RydWN0ICptbTsKIAlzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtLCAqb2xkX21lbTsKIAorCWlmIChtZW1fY2dyb3VwX3N1YnN5cy5kaXNhYmxlZCkKKwkJcmV0dXJuOworCiAJbW0gPSBnZXRfdGFza19tbShwKTsKIAlpZiAobW0gPT0gTlVMTCkKIAkJcmV0dXJuOwpAQCAtMTA3OSw3ICsxMDk1LDcgQEAKIAkgKiBPbmx5IHRocmVhZCBncm91cCBsZWFkZXJzIGFyZSBhbGxvd2VkIHRvIG1pZ3JhdGUsIHRoZSBtbV9zdHJ1Y3QgaXMKIAkgKiBpbiBlZmZlY3Qgb3duZWQgYnkgdGhlIGxlYWRlcgogCSAqLwotCWlmIChwLT50Z2lkICE9IHAtPnBpZCkKKwlpZiAoIXRocmVhZF9ncm91cF9sZWFkZXIocCkpCiAJCWdvdG8gb3V0OwogCiAJY3NzX2dldCgmbWVtLT5jc3MpOwpkaWZmIC0tZ2l0IGEvbW0vb29tX2tpbGwuYyBiL21tL29vbV9raWxsLmMKaW5kZXggNDRiMmRhMS4uYmViNTkyZiAxMDA2NDQKLS0tIGEvbW0vb29tX2tpbGwuYworKysgYi9tbS9vb21fa2lsbC5jCkBAIC0zNyw2ICszNyw3IEBACiAgKiBiYWRuZXNzIC0gY2FsY3VsYXRlIGEgbnVtZXJpYyB2YWx1ZSBmb3IgaG93IGJhZCB0aGlzIHRhc2sgaGFzIGJlZW4KICAqIEBwOiB0YXNrIHN0cnVjdCBvZiB3aGljaCB0YXNrIHdlIHNob3VsZCBjYWxjdWxhdGUKICAqIEB1cHRpbWU6IGN1cnJlbnQgdXB0aW1lIGluIHNlY29uZHMKKyAqIEBtZW06IHRhcmdldCBtZW1vcnkgY29udHJvbGxlcgogICoKICAqIFRoZSBmb3JtdWxhIHVzZWQgaXMgcmVsYXRpdmVseSBzaW1wbGUgYW5kIGRvY3VtZW50ZWQgaW5saW5lIGluIHRoZQogICogZnVuY3Rpb24uIFRoZSBtYWluIHJhdGlvbmFsZSBpcyB0aGF0IHdlIHdhbnQgdG8gc2VsZWN0IGEgZ29vZCB0YXNrCkBAIC0yNjQsNiArMjY1LDkgQEAKIH0KIAogLyoqCisgKiBkdW1wX3Rhc2tzIC0gZHVtcCBjdXJyZW50IG1lbW9yeSBzdGF0ZSBvZiBhbGwgc3lzdGVtIHRhc2tzCisgKiBAbWVtOiB0YXJnZXQgbWVtb3J5IGNvbnRyb2xsZXIKKyAqCiAgKiBEdW1wcyB0aGUgY3VycmVudCBtZW1vcnkgc3RhdGUgb2YgYWxsIHN5c3RlbSB0YXNrcywgZXhjbHVkaW5nIGtlcm5lbCB0aHJlYWRzLgogICogU3RhdGUgaW5mb3JtYXRpb24gaW5jbHVkZXMgdGFzaydzIHBpZCwgdWlkLCB0Z2lkLCB2bSBzaXplLCByc3MsIGNwdSwgb29tX2FkagogICogc2NvcmUsIGFuZCBuYW1lLgpAQCAtMjk4LDcgKzMwMiw3IEBACiAJfSB3aGlsZV9lYWNoX3RocmVhZChnLCBwKTsKIH0KIAotLyoqCisvKgogICogU2VuZCBTSUdLSUxMIHRvIHRoZSBzZWxlY3RlZCAgcHJvY2VzcyBpcnJlc3BlY3RpdmUgb2YgIENBUF9TWVNfUkFXX0lPCiAgKiBmbGFnIHRob3VnaCBpdCdzIHVubGlrZWx5IHRoYXQgIHdlIHNlbGVjdCBhIHByb2Nlc3Mgd2l0aCBDQVBfU1lTX1JBV19JTwogICogc2V0LgpAQCAtNDE5LDcgKzQyMyw3IEBACiAJc3RydWN0IHRhc2tfc3RydWN0ICpwOwogCiAJY2dyb3VwX2xvY2soKTsKLQlyY3VfcmVhZF9sb2NrKCk7CisJcmVhZF9sb2NrKCZ0YXNrbGlzdF9sb2NrKTsKIHJldHJ5OgogCXAgPSBzZWxlY3RfYmFkX3Byb2Nlc3MoJnBvaW50cywgbWVtKTsKIAlpZiAoUFRSX0VSUihwKSA9PSAtMVVMKQpAQCAtNDMyLDcgKzQzNiw3IEBACiAJCQkJIk1lbW9yeSBjZ3JvdXAgb3V0IG9mIG1lbW9yeSIpKQogCQlnb3RvIHJldHJ5Owogb3V0OgotCXJjdV9yZWFkX3VubG9jaygpOworCXJlYWRfdW5sb2NrKCZ0YXNrbGlzdF9sb2NrKTsKIAljZ3JvdXBfdW5sb2NrKCk7CiB9CiAjZW5kaWYKQEAgLTUwNCw2ICs1MDgsOSBAQAogCiAvKioKICAqIG91dF9vZl9tZW1vcnkgLSBraWxsIHRoZSAiYmVzdCIgcHJvY2VzcyB3aGVuIHdlIHJ1biBvdXQgb2YgbWVtb3J5CisgKiBAem9uZWxpc3Q6IHpvbmVsaXN0IHBvaW50ZXIKKyAqIEBnZnBfbWFzazogbWVtb3J5IGFsbG9jYXRpb24gZmxhZ3MKKyAqIEBvcmRlcjogYW1vdW50IG9mIG1lbW9yeSBiZWluZyByZXF1ZXN0ZWQgYXMgYSBwb3dlciBvZiAyCiAgKgogICogSWYgd2UgcnVuIG91dCBvZiBtZW1vcnksIHdlIGhhdmUgdGhlIGNob2ljZSBiZXR3ZWVuIGVpdGhlcgogICoga2lsbGluZyBhIHJhbmRvbSB0YXNrIChiYWQpLCBsZXR0aW5nIHRoZSBzeXN0ZW0gY3Jhc2ggKHdvcnNlKQpkaWZmIC0tZ2l0IGEvbW0vcGFnZXdhbGsuYyBiL21tL3BhZ2V3YWxrLmMKaW5kZXggYjRmMjdkMi4uMWNmMTQxNyAxMDA2NDQKLS0tIGEvbW0vcGFnZXdhbGsuYworKysgYi9tbS9wYWdld2Fsay5jCkBAIC03NywxMSArNzcsMTEgQEAKIAogLyoqCiAgKiB3YWxrX3BhZ2VfcmFuZ2UgLSB3YWxrIGEgbWVtb3J5IG1hcCdzIHBhZ2UgdGFibGVzIHdpdGggYSBjYWxsYmFjawotICogQG1tIC0gbWVtb3J5IG1hcCB0byB3YWxrCi0gKiBAYWRkciAtIHN0YXJ0aW5nIGFkZHJlc3MKLSAqIEBlbmQgLSBlbmRpbmcgYWRkcmVzcwotICogQHdhbGsgLSBzZXQgb2YgY2FsbGJhY2tzIHRvIGludm9rZSBmb3IgZWFjaCBsZXZlbCBvZiB0aGUgdHJlZQotICogQHByaXZhdGUgLSBwcml2YXRlIGRhdGEgcGFzc2VkIHRvIHRoZSBjYWxsYmFjayBmdW5jdGlvbgorICogQG1tOiBtZW1vcnkgbWFwIHRvIHdhbGsKKyAqIEBhZGRyOiBzdGFydGluZyBhZGRyZXNzCisgKiBAZW5kOiBlbmRpbmcgYWRkcmVzcworICogQHdhbGs6IHNldCBvZiBjYWxsYmFja3MgdG8gaW52b2tlIGZvciBlYWNoIGxldmVsIG9mIHRoZSB0cmVlCisgKiBAcHJpdmF0ZTogcHJpdmF0ZSBkYXRhIHBhc3NlZCB0byB0aGUgY2FsbGJhY2sgZnVuY3Rpb24KICAqCiAgKiBSZWN1cnNpdmVseSB3YWxrIHRoZSBwYWdlIHRhYmxlIGZvciB0aGUgbWVtb3J5IGFyZWEgaW4gYSBWTUEsCiAgKiBjYWxsaW5nIHN1cHBsaWVkIGNhbGxiYWNrcy4gQ2FsbGJhY2tzIGFyZSBjYWxsZWQgaW4tb3JkZXIgKGZpcnN0CmRpZmYgLS1naXQgYS9tbS9yZWFkYWhlYWQuYyBiL21tL3JlYWRhaGVhZC5jCmluZGV4IGM5YzUwY2EuLjg3NjJlODkgMTAwNjQ0Ci0tLSBhL21tL3JlYWRhaGVhZC5jCisrKyBiL21tL3JlYWRhaGVhZC5jCkBAIC00NDMsOSArNDQzLDEwIEBACiAgKiAgICAgICAgICAgIHBhZ2VjYWNoZSBwYWdlcwogICoKICAqIHBhZ2VfY2FjaGVfYXN5bmNfb25kZW1hbmQoKSBzaG91bGQgYmUgY2FsbGVkIHdoZW4gYSBwYWdlIGlzIHVzZWQgd2hpY2gKLSAqIGhhcyB0aGUgUEdfcmVhZGFoZWFkIGZsYWc6IHRoaXMgaXMgYSBtYXJrZXIgdG8gc3VnZ2VzdCB0aGF0IHRoZSBhcHBsaWNhdGlvbgorICogaGFzIHRoZSBQR19yZWFkYWhlYWQgZmxhZzsgdGhpcyBpcyBhIG1hcmtlciB0byBzdWdnZXN0IHRoYXQgdGhlIGFwcGxpY2F0aW9uCiAgKiBoYXMgdXNlZCB1cCBlbm91Z2ggb2YgdGhlIHJlYWRhaGVhZCB3aW5kb3cgdGhhdCB3ZSBzaG91bGQgc3RhcnQgcHVsbGluZyBpbgotICogbW9yZSBwYWdlcy4gKi8KKyAqIG1vcmUgcGFnZXMuCisgKi8KIHZvaWQKIHBhZ2VfY2FjaGVfYXN5bmNfcmVhZGFoZWFkKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLAogCQkJICAgc3RydWN0IGZpbGVfcmFfc3RhdGUgKnJhLCBzdHJ1Y3QgZmlsZSAqZmlscCwKZGlmZiAtLWdpdCBhL21tL3JtYXAuYyBiL21tL3JtYXAuYwppbmRleCAwYzlhMmRmLi45OTdmMDY5IDEwMDY0NAotLS0gYS9tbS9ybWFwLmMKKysrIGIvbW0vcm1hcC5jCkBAIC0zMzUsNiArMzM1LDcgQEAKIC8qKgogICogcGFnZV9yZWZlcmVuY2VkX2ZpbGUgLSByZWZlcmVuY2VkIGNoZWNrIGZvciBvYmplY3QtYmFzZWQgcm1hcAogICogQHBhZ2U6IHRoZSBwYWdlIHdlJ3JlIGNoZWNraW5nIHJlZmVyZW5jZXMgb24uCisgKiBAbWVtX2NvbnQ6IHRhcmdldCBtZW1vcnkgY29udHJvbGxlcgogICoKICAqIEZvciBhbiBvYmplY3QtYmFzZWQgbWFwcGVkIHBhZ2UsIGZpbmQgYWxsIHRoZSBwbGFjZXMgaXQgaXMgbWFwcGVkIGFuZAogICogY2hlY2svY2xlYXIgdGhlIHJlZmVyZW5jZWQgZmxhZy4gIFRoaXMgaXMgZG9uZSBieSBmb2xsb3dpbmcgdGhlIHBhZ2UtPm1hcHBpbmcKQEAgLTQwMiw2ICs0MDMsNyBAQAogICogcGFnZV9yZWZlcmVuY2VkIC0gdGVzdCBpZiB0aGUgcGFnZSB3YXMgcmVmZXJlbmNlZAogICogQHBhZ2U6IHRoZSBwYWdlIHRvIHRlc3QKICAqIEBpc19sb2NrZWQ6IGNhbGxlciBob2xkcyBsb2NrIG9uIHRoZSBwYWdlCisgKiBAbWVtX2NvbnQ6IHRhcmdldCBtZW1vcnkgY29udHJvbGxlcgogICoKICAqIFF1aWNrIHRlc3RfYW5kX2NsZWFyX3JlZmVyZW5jZWQgZm9yIGFsbCBtYXBwaW5ncyB0byBhIHBhZ2UsCiAgKiByZXR1cm5zIHRoZSBudW1iZXIgb2YgcHRlcyB3aGljaCByZWZlcmVuY2VkIHRoZSBwYWdlLgpAQCAtNTA2LDcgKzUwOCw3IEBACiBFWFBPUlRfU1lNQk9MX0dQTChwYWdlX21rY2xlYW4pOwogCiAvKioKLSAqIHBhZ2Vfc2V0X2Fub25fcm1hcCAtIHNldHVwIG5ldyBhbm9ueW1vdXMgcm1hcAorICogX19wYWdlX3NldF9hbm9uX3JtYXAgLSBzZXR1cCBuZXcgYW5vbnltb3VzIHJtYXAKICAqIEBwYWdlOgl0aGUgcGFnZSB0byBhZGQgdGhlIG1hcHBpbmcgdG8KICAqIEB2bWE6CXRoZSB2bSBhcmVhIGluIHdoaWNoIHRoZSBtYXBwaW5nIGlzIGFkZGVkCiAgKiBAYWRkcmVzczoJdGhlIHVzZXIgdmlydHVhbCBhZGRyZXNzIG1hcHBlZApAQCAtNTMwLDcgKzUzMiw3IEBACiB9CiAKIC8qKgotICogcGFnZV9zZXRfYW5vbl9ybWFwIC0gc2FuaXR5IGNoZWNrIGFub255bW91cyBybWFwIGFkZGl0aW9uCisgKiBfX3BhZ2VfY2hlY2tfYW5vbl9ybWFwIC0gc2FuaXR5IGNoZWNrIGFub255bW91cyBybWFwIGFkZGl0aW9uCiAgKiBAcGFnZToJdGhlIHBhZ2UgdG8gYWRkIHRoZSBtYXBwaW5nIHRvCiAgKiBAdm1hOgl0aGUgdm0gYXJlYSBpbiB3aGljaCB0aGUgbWFwcGluZyBpcyBhZGRlZAogICogQGFkZHJlc3M6CXRoZSB1c2VyIHZpcnR1YWwgYWRkcmVzcyBtYXBwZWQKQEAgLTU4Myw3ICs1ODUsNyBAQAogCX0KIH0KIAotLyoKKy8qKgogICogcGFnZV9hZGRfbmV3X2Fub25fcm1hcCAtIGFkZCBwdGUgbWFwcGluZyB0byBhIG5ldyBhbm9ueW1vdXMgcGFnZQogICogQHBhZ2U6CXRoZSBwYWdlIHRvIGFkZCB0aGUgbWFwcGluZyB0bwogICogQHZtYToJdGhlIHZtIGFyZWEgaW4gd2hpY2ggdGhlIG1hcHBpbmcgaXMgYWRkZWQKQEAgLTYyMyw2ICs2MjUsOCBAQAogLyoqCiAgKiBwYWdlX2R1cF9ybWFwIC0gZHVwbGljYXRlIHB0ZSBtYXBwaW5nIHRvIGEgcGFnZQogICogQHBhZ2U6CXRoZSBwYWdlIHRvIGFkZCB0aGUgbWFwcGluZyB0bworICogQHZtYToJdGhlIHZtIGFyZWEgYmVpbmcgZHVwbGljYXRlZAorICogQGFkZHJlc3M6CXRoZSB1c2VyIHZpcnR1YWwgYWRkcmVzcyBtYXBwZWQKICAqCiAgKiBGb3IgY29weV9wYWdlX3JhbmdlIG9ubHk6IG1pbmltYWwgZXh0cmFjdCBmcm9tIHBhZ2VfYWRkX2ZpbGVfcm1hcCAvCiAgKiBwYWdlX2FkZF9hbm9uX3JtYXAsIGF2b2lkaW5nIHVubmVjZXNzYXJ5IHRlc3RzIChhbHJlYWR5IGNoZWNrZWQpIHNvIGl0J3MKQEAgLTY0Miw2ICs2NDYsNyBAQAogLyoqCiAgKiBwYWdlX3JlbW92ZV9ybWFwIC0gdGFrZSBkb3duIHB0ZSBtYXBwaW5nIGZyb20gYSBwYWdlCiAgKiBAcGFnZTogcGFnZSB0byByZW1vdmUgbWFwcGluZyBmcm9tCisgKiBAdm1hOiB0aGUgdm0gYXJlYSBpbiB3aGljaCB0aGUgbWFwcGluZyBpcyByZW1vdmVkCiAgKgogICogVGhlIGNhbGxlciBuZWVkcyB0byBob2xkIHRoZSBwdGUgbG9jay4KICAqLwpAQCAtODkwLDYgKzg5NSw3IEBACiAvKioKICAqIHRyeV90b191bm1hcF9maWxlIC0gdW5tYXAgZmlsZSBwYWdlIHVzaW5nIHRoZSBvYmplY3QtYmFzZWQgcm1hcCBtZXRob2QKICAqIEBwYWdlOiB0aGUgcGFnZSB0byB1bm1hcAorICogQG1pZ3JhdGlvbjogbWlncmF0aW9uIGZsYWcKICAqCiAgKiBGaW5kIGFsbCB0aGUgbWFwcGluZ3Mgb2YgYSBwYWdlIHVzaW5nIHRoZSBtYXBwaW5nIHBvaW50ZXIgYW5kIHRoZSB2bWEgY2hhaW5zCiAgKiBjb250YWluZWQgaW4gdGhlIGFkZHJlc3Nfc3BhY2Ugc3RydWN0IGl0IHBvaW50cyB0by4KQEAgLTk4Niw2ICs5OTIsNyBAQAogLyoqCiAgKiB0cnlfdG9fdW5tYXAgLSB0cnkgdG8gcmVtb3ZlIGFsbCBwYWdlIHRhYmxlIG1hcHBpbmdzIHRvIGEgcGFnZQogICogQHBhZ2U6IHRoZSBwYWdlIHRvIGdldCB1bm1hcHBlZAorICogQG1pZ3JhdGlvbjogbWlncmF0aW9uIGZsYWcKICAqCiAgKiBUcmllcyB0byByZW1vdmUgYWxsIHRoZSBwYWdlIHRhYmxlIGVudHJpZXMgd2hpY2ggYXJlIG1hcHBpbmcgdGhpcwogICogcGFnZSwgdXNlZCBpbiB0aGUgcGFnZW91dCBwYXRoLiAgQ2FsbGVyIG11c3QgaG9sZCB0aGUgcGFnZSBsb2NrLgpkaWZmIC0tZ2l0IGEvbW0vc2htZW0uYyBiL21tL3NobWVtLmMKaW5kZXggMzM3MmJjNS4uZjUxNGRkMyAxMDA2NDQKLS0tIGEvbW0vc2htZW0uYworKysgYi9tbS9zaG1lbS5jCkBAIC0yNDQsOSArMjQ0LDggQEAKIAl9CiB9CiAKLS8qCisvKioKICAqIHNobWVtX3JlY2FsY19pbm9kZSAtIHJlY2FsY3VsYXRlIHRoZSBzaXplIG9mIGFuIGlub2RlCi0gKgogICogQGlub2RlOiBpbm9kZSB0byByZWNhbGMKICAqCiAgKiBXZSBoYXZlIHRvIGNhbGN1bGF0ZSB0aGUgZnJlZSBibG9ja3Mgc2luY2UgdGhlIG1tIGNhbiBkcm9wCkBAIC0yNzAsOSArMjY5LDggQEAKIAl9CiB9CiAKLS8qCisvKioKICAqIHNobWVtX3N3cF9lbnRyeSAtIGZpbmQgdGhlIHN3YXAgdmVjdG9yIHBvc2l0aW9uIGluIHRoZSBpbmZvIHN0cnVjdHVyZQotICoKICAqIEBpbmZvOiAgaW5mbyBzdHJ1Y3R1cmUgZm9yIHRoZSBpbm9kZQogICogQGluZGV4OiBpbmRleCBvZiB0aGUgcGFnZSB0byBmaW5kCiAgKiBAcGFnZTogIG9wdGlvbmFsIHBhZ2UgdG8gYWRkIHRvIHRoZSBzdHJ1Y3R1cmUuIEhhcyB0byBiZSBwcmVzZXQgdG8KQEAgLTM3NCwxMyArMzcyLDEzIEBACiAJfQogfQogCi0vKgorLyoqCiAgKiBzaG1lbV9zd3BfYWxsb2MgLSBnZXQgdGhlIHBvc2l0aW9uIG9mIHRoZSBzd2FwIGVudHJ5IGZvciB0aGUgcGFnZS4KLSAqICAgICAgICAgICAgICAgICAgIElmIGl0IGRvZXMgbm90IGV4aXN0IGFsbG9jYXRlIHRoZSBlbnRyeS4KLSAqCiAgKiBAaW5mbzoJaW5mbyBzdHJ1Y3R1cmUgZm9yIHRoZSBpbm9kZQogICogQGluZGV4OglpbmRleCBvZiB0aGUgcGFnZSB0byBmaW5kCiAgKiBAc2dwOgljaGVjayBhbmQgcmVjaGVjayBpX3NpemU/IHNraXAgYWxsb2NhdGlvbj8KKyAqCisgKiBJZiB0aGUgZW50cnkgZG9lcyBub3QgZXhpc3QsIGFsbG9jYXRlIGl0LgogICovCiBzdGF0aWMgc3dwX2VudHJ5X3QgKnNobWVtX3N3cF9hbGxvYyhzdHJ1Y3Qgc2htZW1faW5vZGVfaW5mbyAqaW5mbywgdW5zaWduZWQgbG9uZyBpbmRleCwgZW51bSBzZ3BfdHlwZSBzZ3ApCiB7CkBAIC00NDAsOSArNDM4LDggQEAKIAlyZXR1cm4gZW50cnk7CiB9CiAKLS8qCisvKioKICAqIHNobWVtX2ZyZWVfc3dwIC0gZnJlZSBzb21lIHN3YXAgZW50cmllcyBpbiBhIGRpcmVjdG9yeQotICoKICAqIEBkaXI6ICAgICAgICBwb2ludGVyIHRvIHRoZSBkaXJlY3RvcnkKICAqIEBlZGlyOiAgICAgICBwb2ludGVyIGFmdGVyIGxhc3QgZW50cnkgb2YgdGhlIGRpcmVjdG9yeQogICogQHB1bmNoX2xvY2s6IHBvaW50ZXIgdG8gc3BpbmxvY2sgd2hlbiBuZWVkZWQgZm9yIHRoZSBob2xlcHVuY2ggY2FzZQpAQCAtMjAyMiw3ICsyMDE5LDcgQEAKIH07CiAKICNpZmRlZiBDT05GSUdfVE1QRlNfUE9TSVhfQUNMCi0vKioKKy8qCiAgKiBTdXBlcmJsb2NrcyB3aXRob3V0IHhhdHRyIGlub2RlIG9wZXJhdGlvbnMgd2lsbCBnZXQgc2VjdXJpdHkuKiB4YXR0cgogICogc3VwcG9ydCBmcm9tIHRoZSBWRlMgImZvciBmcmVlIi4gQXMgc29vbiBhcyB3ZSBoYXZlIGFueSBvdGhlciB4YXR0cnMKICAqIGxpa2UgQUNMcywgd2UgYWxzbyBuZWVkIHRvIGltcGxlbWVudCB0aGUgc2VjdXJpdHkuKiBoYW5kbGVycyBhdApAQCAtMjU2MSwxMiArMjU1OCwxMSBAQAogfQogbW9kdWxlX2luaXQoaW5pdF90bXBmcykKIAotLyoKKy8qKgogICogc2htZW1fZmlsZV9zZXR1cCAtIGdldCBhbiB1bmxpbmtlZCBmaWxlIGxpdmluZyBpbiB0bXBmcwotICoKICAqIEBuYW1lOiBuYW1lIGZvciBkZW50cnkgKHRvIGJlIHNlZW4gaW4gL3Byb2MvPHBpZD4vbWFwcwogICogQHNpemU6IHNpemUgdG8gYmUgc2V0IGZvciB0aGUgZmlsZQotICoKKyAqIEBmbGFnczogdm1fZmxhZ3MKICAqLwogc3RydWN0IGZpbGUgKnNobWVtX2ZpbGVfc2V0dXAoY2hhciAqbmFtZSwgbG9mZl90IHNpemUsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCiB7CkBAIC0yNjIxLDkgKzI2MTcsOCBAQAogCXJldHVybiBFUlJfUFRSKGVycm9yKTsKIH0KIAotLyoKKy8qKgogICogc2htZW1femVyb19zZXR1cCAtIHNldHVwIGEgc2hhcmVkIGFub255bW91cyBtYXBwaW5nCi0gKgogICogQHZtYTogdGhlIHZtYSB0byBiZSBtbWFwcGVkIGlzIHByZXBhcmVkIGJ5IGRvX21tYXBfcGdvZmYKICAqLwogaW50IHNobWVtX3plcm9fc2V0dXAoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCmRpZmYgLS1naXQgYS9tbS9zbGFiLmMgYi9tbS9zbGFiLmMKaW5kZXggZTZjNjk4Zi4uMDRiMzA4YyAxMDA2NDQKLS0tIGEvbW0vc2xhYi5jCisrKyBiL21tL3NsYWIuYwpAQCAtMTQ4MSw3ICsxNDgxLDcgQEAKIAlsaXN0X2FkZCgmY2FjaGVfY2FjaGUubmV4dCwgJmNhY2hlX2NoYWluKTsKIAljYWNoZV9jYWNoZS5jb2xvdXJfb2ZmID0gY2FjaGVfbGluZV9zaXplKCk7CiAJY2FjaGVfY2FjaGUuYXJyYXlbc21wX3Byb2Nlc3Nvcl9pZCgpXSA9ICZpbml0YXJyYXlfY2FjaGUuY2FjaGU7Ci0JY2FjaGVfY2FjaGUubm9kZWxpc3RzW25vZGVdID0gJmluaXRrbWVtX2xpc3QzW0NBQ0hFX0NBQ0hFXTsKKwljYWNoZV9jYWNoZS5ub2RlbGlzdHNbbm9kZV0gPSAmaW5pdGttZW1fbGlzdDNbQ0FDSEVfQ0FDSEUgKyBub2RlXTsKIAogCS8qCiAJICogc3RydWN0IGttZW1fY2FjaGUgc2l6ZSBkZXBlbmRzIG9uIG5yX25vZGVfaWRzLCB3aGljaApAQCAtMTYwMiw3ICsxNjAyLDcgQEAKIAkJaW50IG5pZDsKIAogCQlmb3JfZWFjaF9vbmxpbmVfbm9kZShuaWQpIHsKLQkJCWluaXRfbGlzdCgmY2FjaGVfY2FjaGUsICZpbml0a21lbV9saXN0M1tDQUNIRV9DQUNIRV0sIG5pZCk7CisJCQlpbml0X2xpc3QoJmNhY2hlX2NhY2hlLCAmaW5pdGttZW1fbGlzdDNbQ0FDSEVfQ0FDSEUgKyBuaWRdLCBuaWQpOwogCiAJCQlpbml0X2xpc3QobWFsbG9jX3NpemVzW0lOREVYX0FDXS5jc19jYWNoZXAsCiAJCQkJICAmaW5pdGttZW1fbGlzdDNbU0laRV9BQyArIG5pZF0sIG5pZCk7CkBAIC0zNjI0LDEyICszNjI0LDExIEBACiBFWFBPUlRfU1lNQk9MKGttZW1fY2FjaGVfYWxsb2MpOwogCiAvKioKLSAqIGttZW1fcHRyX3ZhbGlkYXRlIC0gY2hlY2sgaWYgYW4gdW50cnVzdGVkIHBvaW50ZXIgbWlnaHQKLSAqCWJlIGEgc2xhYiBlbnRyeS4KKyAqIGttZW1fcHRyX3ZhbGlkYXRlIC0gY2hlY2sgaWYgYW4gdW50cnVzdGVkIHBvaW50ZXIgbWlnaHQgYmUgYSBzbGFiIGVudHJ5LgogICogQGNhY2hlcDogdGhlIGNhY2hlIHdlJ3JlIGNoZWNraW5nIGFnYWluc3QKICAqIEBwdHI6IHBvaW50ZXIgdG8gdmFsaWRhdGUKICAqCi0gKiBUaGlzIHZlcmlmaWVzIHRoYXQgdGhlIHVudHJ1c3RlZCBwb2ludGVyIGxvb2tzIHNhbmU6CisgKiBUaGlzIHZlcmlmaWVzIHRoYXQgdGhlIHVudHJ1c3RlZCBwb2ludGVyIGxvb2tzIHNhbmU7CiAgKiBpdCBpcyBfbm90XyBhIGd1YXJhbnRlZSB0aGF0IHRoZSBwb2ludGVyIGlzIGFjdHVhbGx5CiAgKiBwYXJ0IG9mIHRoZSBzbGFiIGNhY2hlIGluIHF1ZXN0aW9uLCBidXQgaXQgYXQgbGVhc3QKICAqIHZhbGlkYXRlcyB0aGF0IHRoZSBwb2ludGVyIGNhbiBiZSBkZXJlZmVyZW5jZWQgYW5kCmRpZmYgLS1naXQgYS9tbS9zbHViLmMgYi9tbS9zbHViLmMKaW5kZXggOTZkNjNlYi4uYWNjOTc1ZiAxMDA2NDQKLS0tIGEvbW0vc2x1Yi5jCisrKyBiL21tL3NsdWIuYwpAQCAtMTQ3MCw2ICsxNDcwLDkgQEAKIAl2b2lkICoqb2JqZWN0OwogCXN0cnVjdCBwYWdlICpuZXc7CiAKKwkvKiBXZSBoYW5kbGUgX19HRlBfWkVSTyBpbiB0aGUgY2FsbGVyICovCisJZ2ZwZmxhZ3MgJj0gfl9fR0ZQX1pFUk87CisKIAlpZiAoIWMtPnBhZ2UpCiAJCWdvdG8gbmV3X3NsYWI7CiAKQEAgLTE1MzYsOSArMTUzOSwxNSBAQAogCSAqIFRoYXQgaXMgb25seSBwb3NzaWJsZSBpZiBjZXJ0YWluIGNvbmRpdGlvbnMgYXJlIG1ldCB0aGF0IGFyZSBiZWluZwogCSAqIGNoZWNrZWQgd2hlbiBhIHNsYWIgaXMgY3JlYXRlZC4KIAkgKi8KLQlpZiAoIShnZnBmbGFncyAmIF9fR0ZQX05PUkVUUlkpICYmIChzLT5mbGFncyAmIF9fUEFHRV9BTExPQ19GQUxMQkFDSykpCi0JCXJldHVybiBrbWFsbG9jX2xhcmdlKHMtPm9ianNpemUsIGdmcGZsYWdzKTsKLQorCWlmICghKGdmcGZsYWdzICYgX19HRlBfTk9SRVRSWSkgJiYKKwkJCQkocy0+ZmxhZ3MgJiBfX1BBR0VfQUxMT0NfRkFMTEJBQ0spKSB7CisJCWlmIChnZnBmbGFncyAmIF9fR0ZQX1dBSVQpCisJCQlsb2NhbF9pcnFfZW5hYmxlKCk7CisJCW9iamVjdCA9IGttYWxsb2NfbGFyZ2Uocy0+b2Jqc2l6ZSwgZ2ZwZmxhZ3MpOworCQlpZiAoZ2ZwZmxhZ3MgJiBfX0dGUF9XQUlUKQorCQkJbG9jYWxfaXJxX2Rpc2FibGUoKTsKKwkJcmV0dXJuIG9iamVjdDsKKwl9CiAJcmV0dXJuIE5VTEw7CiBkZWJ1ZzoKIAlpZiAoIWFsbG9jX2RlYnVnX3Byb2Nlc3NpbmcocywgYy0+cGFnZSwgb2JqZWN0LCBhZGRyKSkKQEAgLTI2NzksNiArMjY4OCw3IEBACiB9CiBFWFBPUlRfU1lNQk9MKGtmcmVlKTsKIAorI2lmIGRlZmluZWQoQ09ORklHX1NMVUJfREVCVUcpIHx8IGRlZmluZWQoQ09ORklHX1NMQUJJTkZPKQogc3RhdGljIHVuc2lnbmVkIGxvbmcgY291bnRfcGFydGlhbChzdHJ1Y3Qga21lbV9jYWNoZV9ub2RlICpuKQogewogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CkBAIC0yNjkxLDYgKzI3MDEsNyBAQAogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJm4tPmxpc3RfbG9jaywgZmxhZ3MpOwogCXJldHVybiB4OwogfQorI2VuZGlmCiAKIC8qCiAgKiBrbWVtX2NhY2hlX3NocmluayByZW1vdmVzIGVtcHR5IHNsYWJzIGZyb20gdGhlIHBhcnRpYWwgbGlzdHMgYW5kIHNvcnRzCmRpZmYgLS1naXQgYS9tbS9zcGFyc2Utdm1lbW1hcC5jIGIvbW0vc3BhcnNlLXZtZW1tYXAuYwppbmRleCBjZDc1YjIxLi45OWM0ZjM2IDEwMDY0NAotLS0gYS9tbS9zcGFyc2Utdm1lbW1hcC5jCisrKyBiL21tL3NwYXJzZS12bWVtbWFwLmMKQEAgLTc2LDcgKzc2LDcgQEAKIAkJcHRlX3QgZW50cnk7CiAJCXZvaWQgKnAgPSB2bWVtbWFwX2FsbG9jX2Jsb2NrKFBBR0VfU0laRSwgbm9kZSk7CiAJCWlmICghcCkKLQkJCXJldHVybiAwOworCQkJcmV0dXJuIE5VTEw7CiAJCWVudHJ5ID0gcGZuX3B0ZShfX3BhKHApID4+IFBBR0VfU0hJRlQsIFBBR0VfS0VSTkVMKTsKIAkJc2V0X3B0ZV9hdCgmaW5pdF9tbSwgYWRkciwgcHRlLCBlbnRyeSk7CiAJfQpAQCAtODksNyArODksNyBAQAogCWlmIChwbWRfbm9uZSgqcG1kKSkgewogCQl2b2lkICpwID0gdm1lbW1hcF9hbGxvY19ibG9jayhQQUdFX1NJWkUsIG5vZGUpOwogCQlpZiAoIXApCi0JCQlyZXR1cm4gMDsKKwkJCXJldHVybiBOVUxMOwogCQlwbWRfcG9wdWxhdGVfa2VybmVsKCZpbml0X21tLCBwbWQsIHApOwogCX0KIAlyZXR1cm4gcG1kOwpAQCAtMTAxLDcgKzEwMSw3IEBACiAJaWYgKHB1ZF9ub25lKCpwdWQpKSB7CiAJCXZvaWQgKnAgPSB2bWVtbWFwX2FsbG9jX2Jsb2NrKFBBR0VfU0laRSwgbm9kZSk7CiAJCWlmICghcCkKLQkJCXJldHVybiAwOworCQkJcmV0dXJuIE5VTEw7CiAJCXB1ZF9wb3B1bGF0ZSgmaW5pdF9tbSwgcHVkLCBwKTsKIAl9CiAJcmV0dXJuIHB1ZDsKQEAgLTExMyw3ICsxMTMsNyBAQAogCWlmIChwZ2Rfbm9uZSgqcGdkKSkgewogCQl2b2lkICpwID0gdm1lbW1hcF9hbGxvY19ibG9jayhQQUdFX1NJWkUsIG5vZGUpOwogCQlpZiAoIXApCi0JCQlyZXR1cm4gMDsKKwkJCXJldHVybiBOVUxMOwogCQlwZ2RfcG9wdWxhdGUoJmluaXRfbW0sIHBnZCwgcCk7CiAJfQogCXJldHVybiBwZ2Q7CmRpZmYgLS1naXQgYS9tbS9zcGFyc2UuYyBiL21tL3NwYXJzZS5jCmluZGV4IGY2YTQzYzAuLjk4ZDZiMzljIDEwMDY0NAotLS0gYS9tbS9zcGFyc2UuYworKysgYi9tbS9zcGFyc2UuYwpAQCAtMTQ5LDggKzE0OSwxOCBAQAogLyogUmVjb3JkIGEgbWVtb3J5IGFyZWEgYWdhaW5zdCBhIG5vZGUuICovCiB2b2lkIF9faW5pdCBtZW1vcnlfcHJlc2VudChpbnQgbmlkLCB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCkKIHsKKwl1bnNpZ25lZCBsb25nIG1heF9hcmNoX3BmbiA9IDFVTCA8PCAoTUFYX1BIWVNNRU1fQklUUy1QQUdFX1NISUZUKTsKIAl1bnNpZ25lZCBsb25nIHBmbjsKIAorCS8qCisJICogU2FuaXR5IGNoZWNrcyAtIGRvIG5vdCBhbGxvdyBhbiBhcmNoaXRlY3R1cmUgdG8gcGFzcworCSAqIGluIGxhcmdlciBwZm5zIHRoYW4gdGhlIG1heGltdW0gc2NvcGUgb2Ygc3BhcnNlbWVtOgorCSAqLworCWlmIChzdGFydCA+PSBtYXhfYXJjaF9wZm4pCisJCXJldHVybjsKKwlpZiAoZW5kID49IG1heF9hcmNoX3BmbikKKwkJZW5kID0gbWF4X2FyY2hfcGZuOworCiAJc3RhcnQgJj0gUEFHRV9TRUNUSU9OX01BU0s7CiAJZm9yIChwZm4gPSBzdGFydDsgcGZuIDwgZW5kOyBwZm4gKz0gUEFHRVNfUEVSX1NFQ1RJT04pIHsKIAkJdW5zaWduZWQgbG9uZyBzZWN0aW9uID0gcGZuX3RvX3NlY3Rpb25fbnIocGZuKTsKZGlmZiAtLWdpdCBhL21tL3N3YXAuYyBiL21tL3N3YXAuYwppbmRleCBkNGVjNTlhLi5hYTExMzljIDEwMDY0NAotLS0gYS9tbS9zd2FwLmMKKysrIGIvbW0vc3dhcC5jCkBAIC03OCwxMiArNzgsMTEgQEAKIEVYUE9SVF9TWU1CT0wocHV0X3BhZ2UpOwogCiAvKioKLSAqIHB1dF9wYWdlc19saXN0KCk6IHJlbGVhc2UgYSBsaXN0IG9mIHBhZ2VzCisgKiBwdXRfcGFnZXNfbGlzdCgpIC0gcmVsZWFzZSBhIGxpc3Qgb2YgcGFnZXMKKyAqIEBwYWdlczogbGlzdCBvZiBwYWdlcyB0aHJlYWRlZCBvbiBwYWdlLT5scnUKICAqCiAgKiBSZWxlYXNlIGEgbGlzdCBvZiBwYWdlcyB3aGljaCBhcmUgc3RydW5nIHRvZ2V0aGVyIG9uIHBhZ2UubHJ1LiAgQ3VycmVudGx5CiAgKiB1c2VkIGJ5IHJlYWRfY2FjaGVfcGFnZXMoKSBhbmQgcmVsYXRlZCBlcnJvciByZWNvdmVyeSBjb2RlLgotICoKLSAqIEBwYWdlczogbGlzdCBvZiBwYWdlcyB0aHJlYWRlZCBvbiBwYWdlLT5scnUKICAqLwogdm9pZCBwdXRfcGFnZXNfbGlzdChzdHJ1Y3QgbGlzdF9oZWFkICpwYWdlcykKIHsKZGlmZiAtLWdpdCBhL21tL3N3YXBfc3RhdGUuYyBiL21tL3N3YXBfc3RhdGUuYwppbmRleCBlYzQyZjAxLi41MDc1N2VlIDEwMDY0NAotLS0gYS9tbS9zd2FwX3N0YXRlLmMKKysrIGIvbW0vc3dhcF9zdGF0ZS5jCkBAIC0xMTUsNiArMTE1LDcgQEAKIC8qKgogICogYWRkX3RvX3N3YXAgLSBhbGxvY2F0ZSBzd2FwIHNwYWNlIGZvciBhIHBhZ2UKICAqIEBwYWdlOiBwYWdlIHdlIHdhbnQgdG8gbW92ZSB0byBzd2FwCisgKiBAZ2ZwX21hc2s6IG1lbW9yeSBhbGxvY2F0aW9uIGZsYWdzCiAgKgogICogQWxsb2NhdGUgc3dhcCBzcGFjZSBmb3IgdGhlIHBhZ2UgYW5kIGFkZCB0aGUgcGFnZSB0byB0aGUKICAqIHN3YXAgY2FjaGUuICBDYWxsZXIgbmVlZHMgdG8gaG9sZCB0aGUgcGFnZSBsb2NrLiAKQEAgLTMxNSw2ICszMTYsNyBAQAogLyoqCiAgKiBzd2FwaW5fcmVhZGFoZWFkIC0gc3dhcCBpbiBwYWdlcyBpbiBob3BlIHdlIG5lZWQgdGhlbSBzb29uCiAgKiBAZW50cnk6IHN3YXAgZW50cnkgb2YgdGhpcyBtZW1vcnkKKyAqIEBnZnBfbWFzazogbWVtb3J5IGFsbG9jYXRpb24gZmxhZ3MKICAqIEB2bWE6IHVzZXIgdm1hIHRoaXMgYWRkcmVzcyBiZWxvbmdzIHRvCiAgKiBAYWRkcjogdGFyZ2V0IGFkZHJlc3MgZm9yIG1lbXBvbGljeQogICoKZGlmZiAtLWdpdCBhL21tL3Rpbnktc2htZW0uYyBiL21tL3Rpbnktc2htZW0uYwppbmRleCA3MDIwODM2Li5hZTUzMmY1IDEwMDY0NAotLS0gYS9tbS90aW55LXNobWVtLmMKKysrIGIvbW0vdGlueS1zaG1lbS5jCkBAIC0zOSwxMiArMzksMTEgQEAKIH0KIG1vZHVsZV9pbml0KGluaXRfdG1wZnMpCiAKLS8qCisvKioKICAqIHNobWVtX2ZpbGVfc2V0dXAgLSBnZXQgYW4gdW5saW5rZWQgZmlsZSBsaXZpbmcgaW4gdG1wZnMKLSAqCiAgKiBAbmFtZTogbmFtZSBmb3IgZGVudHJ5ICh0byBiZSBzZWVuIGluIC9wcm9jLzxwaWQ+L21hcHMKICAqIEBzaXplOiBzaXplIHRvIGJlIHNldCBmb3IgdGhlIGZpbGUKLSAqCisgKiBAZmxhZ3M6IHZtX2ZsYWdzCiAgKi8KIHN0cnVjdCBmaWxlICpzaG1lbV9maWxlX3NldHVwKGNoYXIgKm5hbWUsIGxvZmZfdCBzaXplLCB1bnNpZ25lZCBsb25nIGZsYWdzKQogewpAQCAtODksMTUgKzg4LDE2IEBACiAKIGNsb3NlX2ZpbGU6CiAJcHV0X2ZpbHAoZmlsZSk7CisJcmV0dXJuIEVSUl9QVFIoZXJyb3IpOworCiBwdXRfZGVudHJ5OgogCWRwdXQoZGVudHJ5KTsKIHB1dF9tZW1vcnk6CiAJcmV0dXJuIEVSUl9QVFIoZXJyb3IpOwogfQogCi0vKgorLyoqCiAgKiBzaG1lbV96ZXJvX3NldHVwIC0gc2V0dXAgYSBzaGFyZWQgYW5vbnltb3VzIG1hcHBpbmcKLSAqCiAgKiBAdm1hOiB0aGUgdm1hIHRvIGJlIG1tYXBwZWQgaXMgcHJlcGFyZWQgYnkgZG9fbW1hcF9wZ29mZgogICovCiBpbnQgc2htZW1femVyb19zZXR1cChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkKZGlmZiAtLWdpdCBhL21tL3ZtYWxsb2MuYyBiL21tL3ZtYWxsb2MuYwppbmRleCA5NTBjMGJlLi5lY2Y5MWY4IDEwMDY0NAotLS0gYS9tbS92bWFsbG9jLmMKKysrIGIvbW0vdm1hbGxvYy5jCkBAIC03NTcsNyArNzU3LDggQEAKICAqCUB2bWE6CQl2bWEgdG8gY292ZXIgKG1hcCBmdWxsIHJhbmdlIG9mIHZtYSkKICAqCUBhZGRyOgkJdm1hbGxvYyBtZW1vcnkKICAqCUBwZ29mZjoJCW51bWJlciBvZiBwYWdlcyBpbnRvIGFkZHIgYmVmb3JlIGZpcnN0IHBhZ2UgdG8gbWFwCi0gKglAcmV0dXJuczoJMCBmb3Igc3VjY2VzcywgLUV4eHggb24gZmFpbHVyZQorICoKKyAqCVJldHVybnM6CTAgZm9yIHN1Y2Nlc3MsIC1FeHh4IG9uIGZhaWx1cmUKICAqCiAgKglUaGlzIGZ1bmN0aW9uIGNoZWNrcyB0aGF0IGFkZHIgaXMgYSB2YWxpZCB2bWFsbG9jJ2VkIGFyZWEsIGFuZAogICoJdGhhdCBpdCBpcyBiaWcgZW5vdWdoIHRvIGNvdmVyIHRoZSB2bWEuIFdpbGwgcmV0dXJuIGZhaWx1cmUgaWYKQEAgLTgyOSw3ICs4MzAsOCBAQAogLyoqCiAgKglhbGxvY192bV9hcmVhIC0gYWxsb2NhdGUgYSByYW5nZSBvZiBrZXJuZWwgYWRkcmVzcyBzcGFjZQogICoJQHNpemU6CQlzaXplIG9mIHRoZSBhcmVhCi0gKglAcmV0dXJuczoJTlVMTCBvbiBmYWlsdXJlLCB2bV9zdHJ1Y3Qgb24gc3VjY2VzcworICoKKyAqCVJldHVybnM6CU5VTEwgb24gZmFpbHVyZSwgdm1fc3RydWN0IG9uIHN1Y2Nlc3MKICAqCiAgKglUaGlzIGZ1bmN0aW9uIHJlc2VydmVzIGEgcmFuZ2Ugb2Yga2VybmVsIGFkZHJlc3Mgc3BhY2UsIGFuZAogICoJYWxsb2NhdGVzIHBhZ2V0YWJsZXMgdG8gbWFwIHRoYXQgcmFuZ2UuICBObyBhY3R1YWwgbWFwcGluZ3MKZGlmZiAtLWdpdCBhL21tL3Ztc2Nhbi5jIGIvbW0vdm1zY2FuLmMKaW5kZXggNDU3MTE1OC4uNDA0NjQzNCAxMDA2NDQKLS0tIGEvbW0vdm1zY2FuLmMKKysrIGIvbW0vdm1zY2FuLmMKQEAgLTcwLDEzICs3MCw2IEBACiAKIAlpbnQgb3JkZXI7CiAKLQkvKgotCSAqIFBhZ2VzIHRoYXQgaGF2ZSAob3Igc2hvdWxkIGhhdmUpIElPIHBlbmRpbmcuICBJZiB3ZSBydW4gaW50bwotCSAqIGEgbG90IG9mIHRoZXNlLCB3ZSdyZSBiZXR0ZXIgb2ZmIHdhaXRpbmcgYSBsaXR0bGUgZm9yIElPIHRvCi0JICogZmluaXNoIHJhdGhlciB0aGFuIHNjYW5uaW5nIG1vcmUgcGFnZXMgaW4gdGhlIFZNLgotCSAqLwotCWludCBucl9pb19wYWdlczsKLQogCS8qIFdoaWNoIGNncm91cCBkbyB3ZSByZWNsYWltIGZyb20gKi8KIAlzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtX2Nncm91cDsKIApAQCAtNTEyLDEwICs1MDUsOCBAQAogCQkJICovCiAJCQlpZiAoc3luY193cml0ZWJhY2sgPT0gUEFHRU9VVF9JT19TWU5DICYmIG1heV9lbnRlcl9mcykKIAkJCQl3YWl0X29uX3BhZ2Vfd3JpdGViYWNrKHBhZ2UpOwotCQkJZWxzZSB7Ci0JCQkJc2MtPm5yX2lvX3BhZ2VzKys7CisJCQllbHNlCiAJCQkJZ290byBrZWVwX2xvY2tlZDsKLQkJCX0KIAkJfQogCiAJCXJlZmVyZW5jZWQgPSBwYWdlX3JlZmVyZW5jZWQocGFnZSwgMSwgc2MtPm1lbV9jZ3JvdXApOwpAQCAtNTU0LDEwICs1NDUsOCBAQAogCQlpZiAoUGFnZURpcnR5KHBhZ2UpKSB7CiAJCQlpZiAoc2MtPm9yZGVyIDw9IFBBR0VfQUxMT0NfQ09TVExZX09SREVSICYmIHJlZmVyZW5jZWQpCiAJCQkJZ290byBrZWVwX2xvY2tlZDsKLQkJCWlmICghbWF5X2VudGVyX2ZzKSB7Ci0JCQkJc2MtPm5yX2lvX3BhZ2VzKys7CisJCQlpZiAoIW1heV9lbnRlcl9mcykKIAkJCQlnb3RvIGtlZXBfbG9ja2VkOwotCQkJfQogCQkJaWYgKCFzYy0+bWF5X3dyaXRlcGFnZSkKIAkJCQlnb3RvIGtlZXBfbG9ja2VkOwogCkBAIC01NjgsMTAgKzU1Nyw4IEBACiAJCQljYXNlIFBBR0VfQUNUSVZBVEU6CiAJCQkJZ290byBhY3RpdmF0ZV9sb2NrZWQ7CiAJCQljYXNlIFBBR0VfU1VDQ0VTUzoKLQkJCQlpZiAoUGFnZVdyaXRlYmFjayhwYWdlKSB8fCBQYWdlRGlydHkocGFnZSkpIHsKLQkJCQkJc2MtPm5yX2lvX3BhZ2VzKys7CisJCQkJaWYgKFBhZ2VXcml0ZWJhY2socGFnZSkgfHwgUGFnZURpcnR5KHBhZ2UpKQogCQkJCQlnb3RvIGtlZXA7Ci0JCQkJfQogCQkJCS8qCiAJCQkJICogQSBzeW5jaHJvbm91cyB3cml0ZSAtIHByb2JhYmx5IGEgcmFtZGlzay4gIEdvCiAJCQkJICogYWhlYWQgYW5kIHRyeSB0byByZWNsYWltIHRoZSBwYWdlLgpAQCAtMTM0NCw3ICsxMzMxLDYgQEAKIAogCWZvciAocHJpb3JpdHkgPSBERUZfUFJJT1JJVFk7IHByaW9yaXR5ID49IDA7IHByaW9yaXR5LS0pIHsKIAkJc2MtPm5yX3NjYW5uZWQgPSAwOwotCQlzYy0+bnJfaW9fcGFnZXMgPSAwOwogCQlpZiAoIXByaW9yaXR5KQogCQkJZGlzYWJsZV9zd2FwX3Rva2VuKCk7CiAJCW5yX3JlY2xhaW1lZCArPSBzaHJpbmtfem9uZXMocHJpb3JpdHksIHpvbmVzLCBzYyk7CkBAIC0xMzc5LDggKzEzNjUsNyBAQAogCQl9CiAKIAkJLyogVGFrZSBhIG5hcCwgd2FpdCBmb3Igc29tZSB3cml0ZWJhY2sgdG8gY29tcGxldGUgKi8KLQkJaWYgKHNjLT5ucl9zY2FubmVkICYmIHByaW9yaXR5IDwgREVGX1BSSU9SSVRZIC0gMiAmJgotCQkJCXNjLT5ucl9pb19wYWdlcyA+IHNjLT5zd2FwX2NsdXN0ZXJfbWF4KQorCQlpZiAoc2MtPm5yX3NjYW5uZWQgJiYgcHJpb3JpdHkgPCBERUZfUFJJT1JJVFkgLSAyKQogCQkJY29uZ2VzdGlvbl93YWl0KFdSSVRFLCBIWi8xMCk7CiAJfQogCS8qIHRvcCBwcmlvcml0eSBzaHJpbmtfY2FjaGVzIHN0aWxsIGhhZCBtb3JlIHRvIGRvPyBkb24ndCBPT00sIHRoZW4gKi8KQEAgLTE1MTQsNyArMTQ5OSw2IEBACiAJCWlmICghcHJpb3JpdHkpCiAJCQlkaXNhYmxlX3N3YXBfdG9rZW4oKTsKIAotCQlzYy5ucl9pb19wYWdlcyA9IDA7CiAJCWFsbF96b25lc19vayA9IDE7CiAKIAkJLyoKQEAgLTE2MDcsOCArMTU5MSw3IEBACiAJCSAqIE9LLCBrc3dhcGQgaXMgZ2V0dGluZyBpbnRvIHRyb3VibGUuICBUYWtlIGEgbmFwLCB0aGVuIHRha2UKIAkJICogYW5vdGhlciBwYXNzIGFjcm9zcyB0aGUgem9uZXMuCiAJCSAqLwotCQlpZiAodG90YWxfc2Nhbm5lZCAmJiBwcmlvcml0eSA8IERFRl9QUklPUklUWSAtIDIgJiYKLQkJCQkJc2MubnJfaW9fcGFnZXMgPiBzYy5zd2FwX2NsdXN0ZXJfbWF4KQorCQlpZiAodG90YWxfc2Nhbm5lZCAmJiBwcmlvcml0eSA8IERFRl9QUklPUklUWSAtIDIpCiAJCQljb25nZXN0aW9uX3dhaXQoV1JJVEUsIEhaLzEwKTsKIAogCQkvKgpkaWZmIC0tZ2l0IGEvbW0vdm1zdGF0LmMgYi9tbS92bXN0YXQuYwppbmRleCA0MjJkOTYwLi43YzcyODZlIDEwMDY0NAotLS0gYS9tbS92bXN0YXQuYworKysgYi9tbS92bXN0YXQuYwpAQCAtMzg4LDYgKzM4OCw3IEBACiAJIlJlY2xhaW1hYmxlIiwKIAkiTW92YWJsZSIsCiAJIlJlc2VydmUiLAorCSJJc29sYXRlIiwKIH07CiAKIHN0YXRpYyB2b2lkICpmcmFnX3N0YXJ0KHN0cnVjdCBzZXFfZmlsZSAqbSwgbG9mZl90ICpwb3MpCmRpZmYgLS1naXQgYS9uZXQvODAyMXEvdmxhbi5jIGIvbmV0LzgwMjFxL3ZsYW4uYwppbmRleCBkYmM4MWI5Li5iMzM0MTBhIDEwMDY0NAotLS0gYS9uZXQvODAyMXEvdmxhbi5jCisrKyBiL25ldC84MDIxcS92bGFuLmMKQEAgLTM3NCwxNyArMzc0LDM1IEBACiAJbWVtY3B5KHZsYW4tPnJlYWxfZGV2X2FkZHIsIGRldi0+ZGV2X2FkZHIsIEVUSF9BTEVOKTsKIH0KIAorc3RhdGljIHZvaWQgX192bGFuX2RldmljZV9ldmVudChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGV2ZW50KQoreworCXN3aXRjaCAoZXZlbnQpIHsKKwljYXNlIE5FVERFVl9DSEFOR0VOQU1FOgorCQl2bGFuX3Byb2NfcmVtX2RldihkZXYpOworCQlpZiAodmxhbl9wcm9jX2FkZF9kZXYoZGV2KSA8IDApCisJCQlwcl93YXJuaW5nKCI4MDIxcTogZmFpbGVkIHRvIGNoYW5nZSBwcm9jIG5hbWUgZm9yICVzXG4iLAorCQkJCQlkZXYtPm5hbWUpOworCQlicmVhazsKKwl9Cit9CisKIHN0YXRpYyBpbnQgdmxhbl9kZXZpY2VfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp1bnVzZWQsIHVuc2lnbmVkIGxvbmcgZXZlbnQsCiAJCQkgICAgIHZvaWQgKnB0cikKIHsKIAlzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gcHRyOwotCXN0cnVjdCB2bGFuX2dyb3VwICpncnAgPSBfX3ZsYW5fZmluZF9ncm91cChkZXYtPmlmaW5kZXgpOworCXN0cnVjdCB2bGFuX2dyb3VwICpncnA7CiAJaW50IGksIGZsZ3M7CiAJc3RydWN0IG5ldF9kZXZpY2UgKnZsYW5kZXY7CiAKIAlpZiAoZGV2LT5uZF9uZXQgIT0gJmluaXRfbmV0KQogCQlyZXR1cm4gTk9USUZZX0RPTkU7CiAKKwlpZiAoaXNfdmxhbl9kZXYoZGV2KSkgeworCQlfX3ZsYW5fZGV2aWNlX2V2ZW50KGRldiwgZXZlbnQpOworCQlnb3RvIG91dDsKKwl9CisKKwlncnAgPSBfX3ZsYW5fZmluZF9ncm91cChkZXYtPmlmaW5kZXgpOwogCWlmICghZ3JwKQogCQlnb3RvIG91dDsKIApkaWZmIC0tZ2l0IGEvbmV0LzgwMjFxL3ZsYW4uaCBiL25ldC84MDIxcS92bGFuLmgKaW5kZXggNzNlZmNjNy4uNTEyNzFhZSAxMDA2NDQKLS0tIGEvbmV0LzgwMjFxL3ZsYW4uaAorKysgYi9uZXQvODAyMXEvdmxhbi5oCkBAIC00NSw0ICs0NSw5IEBACiAKIGV4dGVybiBzdHJ1Y3QgcnRubF9saW5rX29wcyB2bGFuX2xpbmtfb3BzOwogCitzdGF0aWMgaW5saW5lIGludCBpc192bGFuX2RldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQoreworCXJldHVybiBkZXYtPnByaXZfZmxhZ3MgJiBJRkZfODAyXzFRX1ZMQU47Cit9CisKICNlbmRpZiAvKiAhKF9fQkVOX1ZMQU5fODAyXzFRX0lOQ19fKSAqLwpkaWZmIC0tZ2l0IGEvbmV0LzgwMjFxL3ZsYW5fZGV2LmMgYi9uZXQvODAyMXEvdmxhbl9kZXYuYwppbmRleCA3N2YwNGU0Li40MWE3NmEwIDEwMDY0NAotLS0gYS9uZXQvODAyMXEvdmxhbl9kZXYuYworKysgYi9uZXQvODAyMXEvdmxhbl9kZXYuYwpAQCAtMzgyLDcgKzM4Miw3IEBACiAJCXZsYW5fZGV2X2luZm8oZGV2KS0+Y250X2VuY2FwX29uX3htaXQrKzsKIAogCQlwcl9kZWJ1ZygiJXM6IHByb3RvIHRvIGVuY2FwOiAweCVoeFxuIiwKLQkJCSBfX0ZVTkNUSU9OX18sIGh0b25zKHZldGgtPmhfdmxhbl9wcm90bykpOworCQkJIF9fRlVOQ1RJT05fXywgbnRvaHModmV0aC0+aF92bGFuX3Byb3RvKSk7CiAJCS8qIENvbnN0cnVjdCB0aGUgc2Vjb25kIHR3byBieXRlcy4gVGhpcyBmaWVsZCBsb29rcyBzb21ldGhpbmcKIAkJICogbGlrZToKIAkJICogdXNyX3ByaW9yaXR5OiAzIGJpdHMJIChoaWdoIGJpdHMpCkBAIC02NjAsNyArNjYwLDcgQEAKIAlpbnQgc3ViY2xhc3MgPSAwOwogCiAJLyogSUZGX0JST0FEQ0FTVHxJRkZfTVVMVElDQVNUOyA/Pz8gKi8KLQlkZXYtPmZsYWdzICA9IHJlYWxfZGV2LT5mbGFncyAmIH5JRkZfVVA7CisJZGV2LT5mbGFncyAgPSByZWFsX2Rldi0+ZmxhZ3MgJiB+KElGRl9VUCB8IElGRl9QUk9NSVNDIHwgSUZGX0FMTE1VTFRJKTsKIAlkZXYtPmlmbGluayA9IHJlYWxfZGV2LT5pZmluZGV4OwogCWRldi0+c3RhdGUgID0gKHJlYWxfZGV2LT5zdGF0ZSAmICgoMTw8X19MSU5LX1NUQVRFX05PQ0FSUklFUikgfAogCQkJCQkgICgxPDxfX0xJTktfU1RBVEVfRE9STUFOVCkpKSB8CkBAIC02OTIsNiArNjkyLDIwIEBACiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyB2b2lkIHZsYW5fZGV2X3VuaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQoreworCXN0cnVjdCB2bGFuX3ByaW9yaXR5X3RjaV9tYXBwaW5nICpwbTsKKwlzdHJ1Y3Qgdmxhbl9kZXZfaW5mbyAqdmxhbiA9IHZsYW5fZGV2X2luZm8oZGV2KTsKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHZsYW4tPmVncmVzc19wcmlvcml0eV9tYXApOyBpKyspIHsKKwkJd2hpbGUgKChwbSA9IHZsYW4tPmVncmVzc19wcmlvcml0eV9tYXBbaV0pICE9IE5VTEwpIHsKKwkJCXZsYW4tPmVncmVzc19wcmlvcml0eV9tYXBbaV0gPSBwbS0+bmV4dDsKKwkJCWtmcmVlKHBtKTsKKwkJfQorCX0KK30KKwogdm9pZCB2bGFuX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiB7CiAJZXRoZXJfc2V0dXAoZGV2KTsKQEAgLTcwMSw2ICs3MTUsNyBAQAogCiAJZGV2LT5jaGFuZ2VfbXR1CQk9IHZsYW5fZGV2X2NoYW5nZV9tdHU7CiAJZGV2LT5pbml0CQk9IHZsYW5fZGV2X2luaXQ7CisJZGV2LT51bmluaXQJCT0gdmxhbl9kZXZfdW5pbml0OwogCWRldi0+b3BlbgkJPSB2bGFuX2Rldl9vcGVuOwogCWRldi0+c3RvcAkJPSB2bGFuX2Rldl9zdG9wOwogCWRldi0+c2V0X21hY19hZGRyZXNzCT0gdmxhbl9kZXZfc2V0X21hY19hZGRyZXNzOwpkaWZmIC0tZ2l0IGEvbmV0LzgwMjFxL3ZsYW5wcm9jLmMgYi9uZXQvODAyMXEvdmxhbnByb2MuYwppbmRleCAxNDZjZmIwLi45NjcxYWE1IDEwMDY0NAotLS0gYS9uZXQvODAyMXEvdmxhbnByb2MuYworKysgYi9uZXQvODAyMXEvdmxhbnByb2MuYwpAQCAtMjEwLDExICsyMTAsNiBAQAogICogVGhlIGZvbGxvd2luZyBmZXcgZnVuY3Rpb25zIGJ1aWxkIHRoZSBjb250ZW50IG9mIC9wcm9jL25ldC92bGFuL2NvbmZpZwogICovCiAKLXN0YXRpYyBpbmxpbmUgaW50IGlzX3ZsYW5fZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCi17Ci0JcmV0dXJuIGRldi0+cHJpdl9mbGFncyAmIElGRl84MDJfMVFfVkxBTjsKLX0KLQogLyogc3RhcnQgcmVhZCBvZiAvcHJvYy9uZXQvdmxhbi9jb25maWcgKi8KIHN0YXRpYyB2b2lkICp2bGFuX3NlcV9zdGFydChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgbG9mZl90ICpwb3MpCiAJX19hY3F1aXJlcyhkZXZfYmFzZV9sb2NrKQpkaWZmIC0tZ2l0IGEvbmV0LzlwL3RyYW5zX2ZkLmMgYi9uZXQvOXAvdHJhbnNfZmQuYwppbmRleCAxYWE5ZDUxLi5mNjI0ZGZmIDEwMDY0NAotLS0gYS9uZXQvOXAvdHJhbnNfZmQuYworKysgYi9uZXQvOXAvdHJhbnNfZmQuYwpAQCAtODYxLDcgKzg2MSw2IEBACiAKIHN0YXRpYyB2b2lkIHA5X211eF9mbHVzaF9jYihzdHJ1Y3QgcDlfcmVxICpmcmVxLCB2b2lkICphKQogewotCXA5X2Nvbm5fcmVxX2NhbGxiYWNrIGNiOwogCWludCB0YWc7CiAJc3RydWN0IHA5X2Nvbm4gKm07CiAJc3RydWN0IHA5X3JlcSAqcmVxLCAqcnJlcSwgKnJwdHI7CkBAIC04NzIsNyArODcxLDYgQEAKIAkJZnJlcS0+dGNhbGwtPnBhcmFtcy50Zmx1c2gub2xkdGFnKTsKIAogCXNwaW5fbG9jaygmbS0+bG9jayk7Ci0JY2IgPSBOVUxMOwogCXRhZyA9IGZyZXEtPnRjYWxsLT5wYXJhbXMudGZsdXNoLm9sZHRhZzsKIAlyZXEgPSBOVUxMOwogCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShycmVxLCBycHRyLCAmbS0+cmVxX2xpc3QsIHJlcV9saXN0KSB7CkBAIC0xNTIyLDcgKzE1MjAsNyBAQAogCXY5ZnNfcmVnaXN0ZXJfdHJhbnMoJnA5X3VuaXhfdHJhbnMpOwogCXY5ZnNfcmVnaXN0ZXJfdHJhbnMoJnA5X2ZkX3RyYW5zKTsKIAotCXJldHVybiAxOworCXJldHVybiAwOwogfQogCiBtb2R1bGVfaW5pdChwOV90cmFuc19mZF9pbml0KTsKZGlmZiAtLWdpdCBhL25ldC9hdG0vY2xpcC5jIGIvbmV0L2F0bS9jbGlwLmMKaW5kZXggZDMwMTY3Yy4uMmFiMWUzNiAxMDA2NDQKLS0tIGEvbmV0L2F0bS9jbGlwLmMKKysrIGIvbmV0L2F0bS9jbGlwLmMKQEAgLTk0Nyw2ICs5NDcsOCBAQAogfTsKICNlbmRpZgogCitzdGF0aWMgdm9pZCBhdG1fY2xpcF9leGl0X25vcHJvYyh2b2lkKTsKKwogc3RhdGljIGludCBfX2luaXQgYXRtX2NsaXBfaW5pdCh2b2lkKQogewogCW5laWdoX3RhYmxlX2luaXRfbm9fbmV0bGluaygmY2xpcF90YmwpOwpAQCAtOTYzLDE4ICs5NjUsMjIgQEAKIAkJc3RydWN0IHByb2NfZGlyX2VudHJ5ICpwOwogCiAJCXAgPSBwcm9jX2NyZWF0ZSgiYXJwIiwgU19JUlVHTywgYXRtX3Byb2Nfcm9vdCwgJmFycF9zZXFfZm9wcyk7CisJCWlmICghcCkgeworCQkJcHJpbnRrKEtFUk5fRVJSICJVbmFibGUgdG8gaW5pdGlhbGl6ZSAiCisJCQkgICAgICAgIi9wcm9jL25ldC9hdG0vYXJwXG4iKTsKKwkJCWF0bV9jbGlwX2V4aXRfbm9wcm9jKCk7CisJCQlyZXR1cm4gLUVOT01FTTsKKwkJfQogCX0KICNlbmRpZgogCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lkIF9fZXhpdCBhdG1fY2xpcF9leGl0KHZvaWQpCitzdGF0aWMgdm9pZCBhdG1fY2xpcF9leGl0X25vcHJvYyh2b2lkKQogewogCXN0cnVjdCBuZXRfZGV2aWNlICpkZXYsICpuZXh0OwogCi0JcmVtb3ZlX3Byb2NfZW50cnkoImFycCIsIGF0bV9wcm9jX3Jvb3QpOwotCiAJdW5yZWdpc3Rlcl9pbmV0YWRkcl9ub3RpZmllcigmY2xpcF9pbmV0X25vdGlmaWVyKTsKIAl1bnJlZ2lzdGVyX25ldGRldmljZV9ub3RpZmllcigmY2xpcF9kZXZfbm90aWZpZXIpOwogCkBAIC0xMDA1LDYgKzEwMTEsMTMgQEAKIAljbGlwX3RibF9ob29rID0gTlVMTDsKIH0KIAorc3RhdGljIHZvaWQgX19leGl0IGF0bV9jbGlwX2V4aXQodm9pZCkKK3sKKwlyZW1vdmVfcHJvY19lbnRyeSgiYXJwIiwgYXRtX3Byb2Nfcm9vdCk7CisKKwlhdG1fY2xpcF9leGl0X25vcHJvYygpOworfQorCiBtb2R1bGVfaW5pdChhdG1fY2xpcF9pbml0KTsKIG1vZHVsZV9leGl0KGF0bV9jbGlwX2V4aXQpOwogTU9EVUxFX0FVVEhPUigiV2VybmVyIEFsbWVzYmVyZ2VyIik7CmRpZmYgLS1naXQgYS9uZXQvYXRtL2xlYy5jIGIvbmV0L2F0bS9sZWMuYwppbmRleCAwZTQ1MGQxLi4zMjM1YzU3IDEwMDY0NAotLS0gYS9uZXQvYXRtL2xlYy5jCisrKyBiL25ldC9hdG0vbGVjLmMKQEAgLTI2Niw3ICsyNjYsNiBAQAogCWNoYXIgYnVmWzMwMF07CiAJaW50IGkgPSAwOwogI2VuZGlmIC8qIERVTVBfUEFDS0VUUyA+MCAqLwotCURFQ0xBUkVfTUFDX0JVRihtYWMpOwogCiAJcHJfZGVidWcoImxlY19zdGFydF94bWl0IGNhbGxlZFxuIik7CiAJaWYgKCFwcml2LT5sZWNkKSB7CkBAIC0zNzQsMTUgKzM3MywxOSBAQAogCQlpZiAoZW50cnkgJiYgKGVudHJ5LT50eF93YWl0LnFsZW4gPCBMRUNfVU5SRVNfUVVFX0xFTikpIHsKIAkJCXByX2RlYnVnKCIlczpsZWNfc3RhcnRfeG1pdDogcXVldWluZyBwYWNrZXQsICIsCiAJCQkJZGV2LT5uYW1lKTsKLQkJCXByX2RlYnVnKCJNQUMgYWRkcmVzcyAlc1xuIiwKLQkJCQkgcHJpbnRfbWFjKG1hYywgbGVjX2gtPmhfZGVzdCkpOworCQkJcHJfZGVidWcoIk1BQyBhZGRyZXNzICIgTUFDX0ZNVCAiXG4iLAorCQkJCSBsZWNfaC0+aF9kZXN0WzBdLCBsZWNfaC0+aF9kZXN0WzFdLAorCQkJCSBsZWNfaC0+aF9kZXN0WzJdLCBsZWNfaC0+aF9kZXN0WzNdLAorCQkJCSBsZWNfaC0+aF9kZXN0WzRdLCBsZWNfaC0+aF9kZXN0WzVdKTsKIAkJCXNrYl9xdWV1ZV90YWlsKCZlbnRyeS0+dHhfd2FpdCwgc2tiKTsKIAkJfSBlbHNlIHsKIAkJCXByX2RlYnVnCiAJCQkgICAgKCIlczpsZWNfc3RhcnRfeG1pdDogdHggcXVldWUgZnVsbCBvciBubyBhcnAgZW50cnksIGRyb3BwaW5nLCAiLAogCQkJICAgICBkZXYtPm5hbWUpOwotCQkJcHJfZGVidWcoIk1BQyBhZGRyZXNzICVzXG4iLAotCQkJCSBwcmludF9tYWMobWFjLCBsZWNfaC0+aF9kZXN0KSk7CisJCQlwcl9kZWJ1ZygiTUFDIGFkZHJlc3MgIiBNQUNfRk1UICJcbiIsCisJCQkJIGxlY19oLT5oX2Rlc3RbMF0sIGxlY19oLT5oX2Rlc3RbMV0sCisJCQkJIGxlY19oLT5oX2Rlc3RbMl0sIGxlY19oLT5oX2Rlc3RbM10sCisJCQkJIGxlY19oLT5oX2Rlc3RbNF0sIGxlY19oLT5oX2Rlc3RbNV0pOwogCQkJcHJpdi0+c3RhdHMudHhfZHJvcHBlZCsrOwogCQkJZGV2X2tmcmVlX3NrYihza2IpOwogCQl9CkBAIC0zOTQsOCArMzk3LDEwIEBACiAKIAl3aGlsZSAoZW50cnkgJiYgKHNrYjIgPSBza2JfZGVxdWV1ZSgmZW50cnktPnR4X3dhaXQpKSkgewogCQlwcl9kZWJ1ZygibGVjLmM6IGVtcHR5aW5nIHR4IHF1ZXVlLCAiKTsKLQkJcHJfZGVidWcoIk1BQyBhZGRyZXNzICVzXG4iLAotCQkJIHByaW50X21hYyhtYWMsIGxlY19oLT5oX2Rlc3QpKTsKKwkJcHJfZGVidWcoIk1BQyBhZGRyZXNzICIgTUFDX0ZNVCAiXG4iLAorCQkJIGxlY19oLT5oX2Rlc3RbMF0sIGxlY19oLT5oX2Rlc3RbMV0sCisJCQkgbGVjX2gtPmhfZGVzdFsyXSwgbGVjX2gtPmhfZGVzdFszXSwKKwkJCSBsZWNfaC0+aF9kZXN0WzRdLCBsZWNfaC0+aF9kZXN0WzVdKTsKIAkJbGVjX3NlbmQodmNjLCBza2IyLCBwcml2KTsKIAl9CiAKQEAgLTQ0OSw3ICs0NTQsNiBAQAogCXN0cnVjdCBsZWNfYXJwX3RhYmxlICplbnRyeTsKIAlpbnQgaTsKIAljaGFyICp0bXA7CQkvKiBGSVhNRSAqLwotCURFQ0xBUkVfTUFDX0JVRihtYWMpOwogCiAJYXRvbWljX3N1Yihza2ItPnRydWVzaXplLCAmc2tfYXRtKHZjYyktPnNrX3dtZW1fYWxsb2MpOwogCW1lc2cgPSAoc3RydWN0IGF0bWxlY19tc2cgKilza2ItPmRhdGE7CkBAIC01MzYsOSArNTQwLDE0IEBACiAJCQlzdHJ1Y3QgbmV0X2JyaWRnZV9mZGJfZW50cnkgKmY7CiAKIAkJCXByX2RlYnVnCi0JCQkgICAgKCIlczogYnJpZGdlIHplcHBlbGluIGFza3MgYWJvdXQgJXNcbiIsCisJCQkgICAgKCIlczogYnJpZGdlIHplcHBlbGluIGFza3MgYWJvdXQgIiBNQUNfRk1UICJcbiIsCiAJCQkgICAgIGRldi0+bmFtZSwKLQkJCSAgICAgcHJpbnRfbWFjKG1hYywgbWVzZy0+Y29udGVudC5wcm94eS5tYWNfYWRkcikpOworCQkJICAgICBtZXNnLT5jb250ZW50LnByb3h5Lm1hY19hZGRyWzBdLAorCQkJICAgICBtZXNnLT5jb250ZW50LnByb3h5Lm1hY19hZGRyWzFdLAorCQkJICAgICBtZXNnLT5jb250ZW50LnByb3h5Lm1hY19hZGRyWzJdLAorCQkJICAgICBtZXNnLT5jb250ZW50LnByb3h5Lm1hY19hZGRyWzNdLAorCQkJICAgICBtZXNnLT5jb250ZW50LnByb3h5Lm1hY19hZGRyWzRdLAorCQkJICAgICBtZXNnLT5jb250ZW50LnByb3h5Lm1hY19hZGRyWzVdKTsKIAogCQkJaWYgKGJyX2ZkYl9nZXRfaG9vayA9PSBOVUxMIHx8IGRldi0+YnJfcG9ydCA9PSBOVUxMKQogCQkJCWJyZWFrOwpAQCAtMTI1MCw2ICsxMjU5LDEwIEBACiAJc3RydWN0IHByb2NfZGlyX2VudHJ5ICpwOwogCiAJcCA9IHByb2NfY3JlYXRlKCJsZWMiLCBTX0lSVUdPLCBhdG1fcHJvY19yb290LCAmbGVjX3NlcV9mb3BzKTsKKwlpZiAoIXApIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJVbmFibGUgdG8gaW5pdGlhbGl6ZSAvcHJvYy9uZXQvYXRtL2xlY1xuIik7CisJCXJldHVybiAtRU5PTUVNOworCX0KICNlbmRpZgogCiAJcmVnaXN0ZXJfYXRtX2lvY3RsKCZsYW5lX2lvY3RsX29wcyk7CmRpZmYgLS1naXQgYS9uZXQvYXgyNS9UT0RPIGIvbmV0L2F4MjUvVE9ETwppbmRleCA0MDg5YzQ5Li42OWZiNGUzIDEwMDY0NAotLS0gYS9uZXQvYXgyNS9UT0RPCisrKyBiL25ldC9heDI1L1RPRE8KQEAgLTksMTAgKzksNiBAQAogUm91dGVzIHRvIGEgZGV2aWNlIGJlaW5nIHRha2VuIGRvd24gbWlnaHQgYmUgZGVsZXRlZCBieSBheDI1X3J0X2RldmljZV9kb3duCiBidXQgYWRkZWQgYnkgc29tZWJvZHkgZWxzZSBiZWZvcmUgdGhlIGRldmljZSBoYXMgYmVlbiBkZWxldGVkIGZ1bGx5LgogCi1NYXNzaXZlIGFtb3VudHMgb2YgbG9ja19rZXJuZWwgLyB1bmxvY2tfa2VybmVsIGFyZSBqdXN0IGEgdGVtcG9yYXJ5IHNvbHV0aW9uIHRvCi1nZXQgYXJvdW5kIHRoZSByZW1vdmFsIG9mIFNPQ0tPUFNfV1JBUC4gIEEgc2VyaW91cyBsb2NraW5nIHN0cmF0ZWd5IGhhcyB0byBiZQotaW1wbGVtZW50ZWQuCi0KIFRoZSBheDI1X3J0X2ZpbmRfcm91dGUgc3lub3BzeXMgaXMgcGVydmVydCBidXQgSSBzb21laG93IGhhZCB0byBkZWFsIHdpdGgKIHRoZSByYWNlIGNhdXNlZCBieSB0aGUgc3RhdGljIHZhcmlhYmxlIGluIGl0J3MgcHJldmlvdXMgaW1wbGVtZW50YXRpb24uCiAKZGlmZiAtLWdpdCBhL25ldC9heDI1L2F4MjVfdWlkLmMgYi9uZXQvYXgyNS9heDI1X3VpZC5jCmluZGV4IDVmNGViNzMuLjU3YWViYTcgMTAwNjQ0Ci0tLSBhL25ldC9heDI1L2F4MjVfdWlkLmMKKysrIGIvbmV0L2F4MjUvYXgyNV91aWQuYwpAQCAtMjE4LDkgKzIxOCwxMSBAQAogCXN0cnVjdCBobGlzdF9ub2RlICpub2RlOwogCiAJd3JpdGVfbG9jaygmYXgyNV91aWRfbG9jayk7CithZ2FpbjoKIAlheDI1X3VpZF9mb3JfZWFjaChheDI1X3VpZCwgbm9kZSwgJmF4MjVfdWlkX2xpc3QpIHsKIAkJaGxpc3RfZGVsX2luaXQoJmF4MjVfdWlkLT51aWRfbm9kZSk7CiAJCWF4MjVfdWlkX3B1dChheDI1X3VpZCk7CisJCWdvdG8gYWdhaW47CiAJfQogCXdyaXRlX3VubG9jaygmYXgyNV91aWRfbG9jayk7CiB9CmRpZmYgLS1naXQgYS9uZXQvYmx1ZXRvb3RoL2FmX2JsdWV0b290aC5jIGIvbmV0L2JsdWV0b290aC9hZl9ibHVldG9vdGguYwppbmRleCAxMjIwZDhhLi5kMzY2NDIzIDEwMDY0NAotLS0gYS9uZXQvYmx1ZXRvb3RoL2FmX2JsdWV0b290aC5jCisrKyBiL25ldC9ibHVldG9vdGgvYWZfYmx1ZXRvb3RoLmMKQEAgLTUzLDYgKzUzLDMwIEBACiAvKiBCbHVldG9vdGggc29ja2V0cyAqLwogI2RlZmluZSBCVF9NQVhfUFJPVE8JOAogc3RhdGljIHN0cnVjdCBuZXRfcHJvdG9fZmFtaWx5ICpidF9wcm90b1tCVF9NQVhfUFJPVE9dOworCitzdGF0aWMgc3RydWN0IGxvY2tfY2xhc3Nfa2V5IGJ0X3Nsb2NrX2tleVtCVF9NQVhfUFJPVE9dOworc3RhdGljIHN0cnVjdCBsb2NrX2NsYXNzX2tleSBidF9sb2NrX2tleVtCVF9NQVhfUFJPVE9dOworc3RhdGljIGNvbnN0IGNoYXIgKmJ0X2tleV9zdHJpbmdzW0JUX01BWF9QUk9UT10gPSB7CisJInNrX2xvY2stQUZfQkxVRVRPT1RILUJUUFJPVE9fTDJDQVAiLAorCSJza19sb2NrLUFGX0JMVUVUT09USC1CVFBST1RPX0hDSSIsCisJInNrX2xvY2stQUZfQkxVRVRPT1RILUJUUFJPVE9fU0NPIiwKKwkic2tfbG9jay1BRl9CTFVFVE9PVEgtQlRQUk9UT19SRkNPTU0iLAorCSJza19sb2NrLUFGX0JMVUVUT09USC1CVFBST1RPX0JORVAiLAorCSJza19sb2NrLUFGX0JMVUVUT09USC1CVFBST1RPX0NNVFAiLAorCSJza19sb2NrLUFGX0JMVUVUT09USC1CVFBST1RPX0hJRFAiLAorCSJza19sb2NrLUFGX0JMVUVUT09USC1CVFBST1RPX0FWRFRQIiwKK307CisKK3N0YXRpYyBjb25zdCBjaGFyICpidF9zbG9ja19rZXlfc3RyaW5nc1tCVF9NQVhfUFJPVE9dID0geworCSJzbG9jay1BRl9CTFVFVE9PVEgtQlRQUk9UT19MMkNBUCIsCisJInNsb2NrLUFGX0JMVUVUT09USC1CVFBST1RPX0hDSSIsCisJInNsb2NrLUFGX0JMVUVUT09USC1CVFBST1RPX1NDTyIsCisJInNsb2NrLUFGX0JMVUVUT09USC1CVFBST1RPX1JGQ09NTSIsCisJInNsb2NrLUFGX0JMVUVUT09USC1CVFBST1RPX0JORVAiLAorCSJzbG9jay1BRl9CTFVFVE9PVEgtQlRQUk9UT19DTVRQIiwKKwkic2xvY2stQUZfQkxVRVRPT1RILUJUUFJPVE9fSElEUCIsCisJInNsb2NrLUFGX0JMVUVUT09USC1CVFBST1RPX0FWRFRQIiwKK307CiBzdGF0aWMgREVGSU5FX1JXTE9DSyhidF9wcm90b19sb2NrKTsKIAogaW50IGJ0X3NvY2tfcmVnaXN0ZXIoaW50IHByb3RvLCBzdHJ1Y3QgbmV0X3Byb3RvX2ZhbWlseSAqb3BzKQpAQCAtOTUsNiArMTE5LDIxIEBACiB9CiBFWFBPUlRfU1lNQk9MKGJ0X3NvY2tfdW5yZWdpc3Rlcik7CiAKK3N0YXRpYyB2b2lkIGJ0X3JlY2xhc3NpZnlfc29ja19sb2NrKHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBwcm90bykKK3sKKwlzdHJ1Y3Qgc29jayAqc2sgPSBzb2NrLT5zazsKKworCWlmICghc2spCisJCXJldHVybjsKKwlCVUdfT04oc29ja19vd25lZF9ieV91c2VyKHNrKSk7CisKKwlzb2NrX2xvY2tfaW5pdF9jbGFzc19hbmRfbmFtZShzaywKKwkJCWJ0X3Nsb2NrX2tleV9zdHJpbmdzW3Byb3RvXSwKKwkJCSZidF9zbG9ja19rZXlbcHJvdG9dLAorCQkJYnRfa2V5X3N0cmluZ3NbcHJvdG9dLAorCQkJJmJ0X2xvY2tfa2V5W3Byb3RvXSk7Cit9CisKIHN0YXRpYyBpbnQgYnRfc29ja19jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgcHJvdG8pCiB7CiAJaW50IGVycjsKQEAgLTExNyw2ICsxNTYsNyBAQAogCiAJaWYgKGJ0X3Byb3RvW3Byb3RvXSAmJiB0cnlfbW9kdWxlX2dldChidF9wcm90b1twcm90b10tPm93bmVyKSkgewogCQllcnIgPSBidF9wcm90b1twcm90b10tPmNyZWF0ZShuZXQsIHNvY2ssIHByb3RvKTsKKwkJYnRfcmVjbGFzc2lmeV9zb2NrX2xvY2soc29jaywgcHJvdG8pOwogCQltb2R1bGVfcHV0KGJ0X3Byb3RvW3Byb3RvXS0+b3duZXIpOwogCX0KIApkaWZmIC0tZ2l0IGEvbmV0L2JsdWV0b290aC9ibmVwL2JuZXAuaCBiL25ldC9ibHVldG9vdGgvYm5lcC9ibmVwLmgKaW5kZXggYTI5OTIyOC4uZTY5MjQ0ZCAxMDA2NDQKLS0tIGEvbmV0L2JsdWV0b290aC9ibmVwL2JuZXAuaAorKysgYi9uZXQvYmx1ZXRvb3RoL2JuZXAvYm5lcC5oCkBAIC0xNzQsNyArMTc0LDcgQEAKIAogdm9pZCBibmVwX25ldF9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKIGludCBibmVwX3NvY2tfaW5pdCh2b2lkKTsKLWludCBibmVwX3NvY2tfY2xlYW51cCh2b2lkKTsKK3ZvaWQgYm5lcF9zb2NrX2NsZWFudXAodm9pZCk7CiAKIHN0YXRpYyBpbmxpbmUgaW50IGJuZXBfbWNfaGFzaChfX3U4ICphZGRyKQogewpkaWZmIC0tZ2l0IGEvbmV0L2JsdWV0b290aC9ibmVwL3NvY2suYyBiL25ldC9ibHVldG9vdGgvYm5lcC9zb2NrLmMKaW5kZXggODEwNjVlNS4uMjAxZTViMSAxMDA2NDQKLS0tIGEvbmV0L2JsdWV0b290aC9ibmVwL3NvY2suYworKysgYi9uZXQvYmx1ZXRvb3RoL2JuZXAvc29jay5jCkBAIC0yNTcsMTIgKzI1NywxMCBAQAogCXJldHVybiBlcnI7CiB9CiAKLWludCBfX2V4aXQgYm5lcF9zb2NrX2NsZWFudXAodm9pZCkKK3ZvaWQgX19leGl0IGJuZXBfc29ja19jbGVhbnVwKHZvaWQpCiB7CiAJaWYgKGJ0X3NvY2tfdW5yZWdpc3RlcihCVFBST1RPX0JORVApIDwgMCkKIAkJQlRfRVJSKCJDYW4ndCB1bnJlZ2lzdGVyIEJORVAgc29ja2V0Iik7CiAKIAlwcm90b191bnJlZ2lzdGVyKCZibmVwX3Byb3RvKTsKLQotCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvbmV0L2JsdWV0b290aC9oY2lfY29yZS5jIGIvbmV0L2JsdWV0b290aC9oY2lfY29yZS5jCmluZGV4IDkzMGI1OGUuLmFlYzY5MjkgMTAwNjQ0Ci0tLSBhL25ldC9ibHVldG9vdGgvaGNpX2NvcmUuYworKysgYi9uZXQvYmx1ZXRvb3RoL2hjaV9jb3JlLmMKQEAgLTkwMiw4ICs5MDIsNiBAQAogCiAJQlRfREJHKCIlcCBuYW1lICVzIHR5cGUgJWQiLCBoZGV2LCBoZGV2LT5uYW1lLCBoZGV2LT50eXBlKTsKIAotCWhjaV91bnJlZ2lzdGVyX3N5c2ZzKGhkZXYpOwotCiAJd3JpdGVfbG9ja19iaCgmaGNpX2Rldl9saXN0X2xvY2spOwogCWxpc3RfZGVsKCZoZGV2LT5saXN0KTsKIAl3cml0ZV91bmxvY2tfYmgoJmhjaV9kZXZfbGlzdF9sb2NrKTsKQEAgLTkxNSw2ICs5MTMsOCBAQAogCiAJaGNpX25vdGlmeShoZGV2LCBIQ0lfREVWX1VOUkVHKTsKIAorCWhjaV91bnJlZ2lzdGVyX3N5c2ZzKGhkZXYpOworCiAJX19oY2lfZGV2X3B1dChoZGV2KTsKIAogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvbmV0L2JsdWV0b290aC9oY2lfc29jay5jIGIvbmV0L2JsdWV0b290aC9oY2lfc29jay5jCmluZGV4IDE0OTkxMzIuLjFkMzZjMDkgMTAwNjQ0Ci0tLSBhL25ldC9ibHVldG9vdGgvaGNpX3NvY2suYworKysgYi9uZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmMKQEAgLTg0LDcgKzg0LDcgQEAKIH07CiAKIHN0YXRpYyBzdHJ1Y3QgYnRfc29ja19saXN0IGhjaV9za19saXN0ID0gewotCS5sb2NrID0gUldfTE9DS19VTkxPQ0tFRAorCS5sb2NrID0gX19SV19MT0NLX1VOTE9DS0VEKGhjaV9za19saXN0LmxvY2spCiB9OwogCiAvKiBTZW5kIGZyYW1lIHRvIFJBVyBzb2NrZXQgKi8KQEAgLTczNCw3ICs3MzQsNyBAQAogCXJldHVybiBlcnI7CiB9CiAKLWludCBfX2V4aXQgaGNpX3NvY2tfY2xlYW51cCh2b2lkKQordm9pZCBfX2V4aXQgaGNpX3NvY2tfY2xlYW51cCh2b2lkKQogewogCWlmIChidF9zb2NrX3VucmVnaXN0ZXIoQlRQUk9UT19IQ0kpIDwgMCkKIAkJQlRfRVJSKCJIQ0kgc29ja2V0IHVucmVnaXN0cmF0aW9uIGZhaWxlZCIpOwpAQCAtNzQyLDYgKzc0Miw0IEBACiAJaGNpX3VucmVnaXN0ZXJfbm90aWZpZXIoJmhjaV9zb2NrX25ibG9jayk7CiAKIAlwcm90b191bnJlZ2lzdGVyKCZoY2lfc2tfcHJvdG8pOwotCi0JcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9uZXQvYmx1ZXRvb3RoL2wyY2FwLmMgYi9uZXQvYmx1ZXRvb3RoL2wyY2FwLmMKaW5kZXggMzRmOGJmOTguLjI5NTdkZjQgMTAwNjQ0Ci0tLSBhL25ldC9ibHVldG9vdGgvbDJjYXAuYworKysgYi9uZXQvYmx1ZXRvb3RoL2wyY2FwLmMKQEAgLTYyLDcgKzYyLDcgQEAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGwyY2FwX3NvY2tfb3BzOwogCiBzdGF0aWMgc3RydWN0IGJ0X3NvY2tfbGlzdCBsMmNhcF9za19saXN0ID0gewotCS5sb2NrID0gUldfTE9DS19VTkxPQ0tFRAorCS5sb2NrID0gX19SV19MT0NLX1VOTE9DS0VEKGwyY2FwX3NrX2xpc3QubG9jaykKIH07CiAKIHN0YXRpYyB2b2lkIF9fbDJjYXBfc29ja19jbG9zZShzdHJ1Y3Qgc29jayAqc2ssIGludCByZWFzb24pOwpkaWZmIC0tZ2l0IGEvbmV0L2JsdWV0b290aC9yZmNvbW0vY29yZS5jIGIvbmV0L2JsdWV0b290aC9yZmNvbW0vY29yZS5jCmluZGV4IDBjMmM5MzcuLmViNjI1NTggMTAwNjQ0Ci0tLSBhL25ldC9ibHVldG9vdGgvcmZjb21tL2NvcmUuYworKysgYi9uZXQvYmx1ZXRvb3RoL3JmY29tbS9jb3JlLmMKQEAgLTQyMyw4ICs0MjMsOCBAQAogCiAJCXJmY29tbV9kbGNfbG9jayhkKTsKIAkJZC0+c3RhdGUgPSBCVF9DTE9TRUQ7Ci0JCWQtPnN0YXRlX2NoYW5nZShkLCBlcnIpOwogCQlyZmNvbW1fZGxjX3VubG9jayhkKTsKKwkJZC0+c3RhdGVfY2hhbmdlKGQsIGVycik7CiAKIAkJc2tiX3F1ZXVlX3B1cmdlKCZkLT50eF9xdWV1ZSk7CiAJCXJmY29tbV9kbGNfdW5saW5rKGQpOwpkaWZmIC0tZ2l0IGEvbmV0L2JsdWV0b290aC9yZmNvbW0vc29jay5jIGIvbmV0L2JsdWV0b290aC9yZmNvbW0vc29jay5jCmluZGV4IGM0NmQ1MTAuLmFmNGUzOTMgMTAwNjQ0Ci0tLSBhL25ldC9ibHVldG9vdGgvcmZjb21tL3NvY2suYworKysgYi9uZXQvYmx1ZXRvb3RoL3JmY29tbS9zb2NrLmMKQEAgLTYwLDcgKzYwLDcgQEAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHJmY29tbV9zb2NrX29wczsKIAogc3RhdGljIHN0cnVjdCBidF9zb2NrX2xpc3QgcmZjb21tX3NrX2xpc3QgPSB7Ci0JLmxvY2sgPSBSV19MT0NLX1VOTE9DS0VECisJLmxvY2sgPSBfX1JXX0xPQ0tfVU5MT0NLRUQocmZjb21tX3NrX2xpc3QubG9jaykKIH07CiAKIHN0YXRpYyB2b2lkIHJmY29tbV9zb2NrX2Nsb3NlKHN0cnVjdCBzb2NrICpzayk7CmRpZmYgLS1naXQgYS9uZXQvYmx1ZXRvb3RoL3JmY29tbS90dHkuYyBiL25ldC9ibHVldG9vdGgvcmZjb21tL3R0eS5jCmluZGV4IGU0Yzc3OWIuLmMzZjc0OWEgMTAwNjQ0Ci0tLSBhL25ldC9ibHVldG9vdGgvcmZjb21tL3R0eS5jCisrKyBiL25ldC9ibHVldG9vdGgvcmZjb21tL3R0eS5jCkBAIC01NzAsMTIgKzU3MCw3IEBACiAJCQkJCXJldHVybjsKIAogCQkJCXJmY29tbV9kZXZfZGVsKGRldik7Ci0JCQkJLyogV2UgaGF2ZSB0byBkcm9wIERMQyBsb2NrIGhlcmUsIG90aGVyd2lzZQotCQkJCSAgIHJmY29tbV9kZXZfcHV0KCkgd2lsbCBkZWFkIGxvY2sgaWYgaXQncwotCQkJCSAgIHRoZSBsYXN0IHJlZmVyZW5jZS4gKi8KLQkJCQlyZmNvbW1fZGxjX3VubG9jayhkbGMpOwogCQkJCXJmY29tbV9kZXZfcHV0KGRldik7Ci0JCQkJcmZjb21tX2RsY19sb2NrKGRsYyk7CiAJCQl9CiAJCX0gZWxzZQogCQkJdHR5X2hhbmd1cChkZXYtPnR0eSk7CmRpZmYgLS1naXQgYS9uZXQvYmx1ZXRvb3RoL3Njby5jIGIvbmV0L2JsdWV0b290aC9zY28uYwppbmRleCBiOTFkM2M4Li5jZDg4N2NkIDEwMDY0NAotLS0gYS9uZXQvYmx1ZXRvb3RoL3Njby5jCisrKyBiL25ldC9ibHVldG9vdGgvc2NvLmMKQEAgLTU4LDcgKzU4LDcgQEAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHNjb19zb2NrX29wczsKIAogc3RhdGljIHN0cnVjdCBidF9zb2NrX2xpc3Qgc2NvX3NrX2xpc3QgPSB7Ci0JLmxvY2sgPSBSV19MT0NLX1VOTE9DS0VECisJLmxvY2sgPSBfX1JXX0xPQ0tfVU5MT0NLRUQoc2NvX3NrX2xpc3QubG9jaykKIH07CiAKIHN0YXRpYyB2b2lkIF9fc2NvX2NoYW5fYWRkKHN0cnVjdCBzY29fY29ubiAqY29ubiwgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc29jayAqcGFyZW50KTsKZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfZmRiLmMgYi9uZXQvYnJpZGdlL2JyX2ZkYi5jCmluZGV4IGJjNDAzNzcuLjkzMjZjMzcgMTAwNjQ0Ci0tLSBhL25ldC9icmlkZ2UvYnJfZmRiLmMKKysrIGIvbmV0L2JyaWRnZS9icl9mZGIuYwpAQCAtMTM2LDcgKzEzNiw3IEBACiAJCQl0aGlzX3RpbWVyID0gZi0+YWdlaW5nX3RpbWVyICsgZGVsYXk7CiAJCQlpZiAodGltZV9iZWZvcmVfZXEodGhpc190aW1lciwgamlmZmllcykpCiAJCQkJZmRiX2RlbGV0ZShmKTsKLQkJCWVsc2UgaWYgKHRoaXNfdGltZXIgPCBuZXh0X3RpbWVyKQorCQkJZWxzZSBpZiAodGltZV9iZWZvcmUodGhpc190aW1lciwgbmV4dF90aW1lcikpCiAJCQkJbmV4dF90aW1lciA9IHRoaXNfdGltZXI7CiAJCX0KIAl9CmRpZmYgLS1naXQgYS9uZXQvYnJpZGdlL2JyX25ldGZpbHRlci5jIGIvbmV0L2JyaWRnZS9icl9uZXRmaWx0ZXIuYwppbmRleCAxYzBlZmQ4Li5hZjdlOGJlIDEwMDY0NAotLS0gYS9uZXQvYnJpZGdlL2JyX25ldGZpbHRlci5jCisrKyBiL25ldC9icmlkZ2UvYnJfbmV0ZmlsdGVyLmMKQEAgLTExMCw3ICsxMTAsOCBAQAogICogaXB0X1JFSkVDVCBuZWVkcyBpdC4gIEZ1dHVyZSBuZXRmaWx0ZXIgbW9kdWxlcyBtaWdodAogICogcmVxdWlyZSB1cyB0byBmaWxsIGFkZGl0aW9uYWwgZmllbGRzLiAqLwogc3RhdGljIHN0cnVjdCBuZXRfZGV2aWNlIF9fZmFrZV9uZXRfZGV2aWNlID0gewotCS5oYXJkX2hlYWRlcl9sZW4JPSBFVEhfSExFTgorCS5oYXJkX2hlYWRlcl9sZW4JPSBFVEhfSExFTiwKKwkubmRfbmV0CQkJPSAmaW5pdF9uZXQsCiB9OwogCiBzdGF0aWMgc3RydWN0IHJ0YWJsZSBfX2Zha2VfcnRhYmxlID0gewpkaWZmIC0tZ2l0IGEvbmV0L2NvcmUvZGV2LmMgYi9uZXQvY29yZS9kZXYuYwppbmRleCBmY2RmMDNjLi40NjBlN2Y5IDEwMDY0NAotLS0gYS9uZXQvY29yZS9kZXYuYworKysgYi9uZXQvY29yZS9kZXYuYwpAQCAtMzMyOSw3ICszMzI5LDcgQEAKIAkJCXJldHVybiAtRU9QTk9UU1VQUDsKIAogCQljYXNlIFNJT0NBRERNVUxUSToKLQkJCWlmICghZGV2LT5zZXRfbXVsdGljYXN0X2xpc3QgfHwKKwkJCWlmICgoIWRldi0+c2V0X211bHRpY2FzdF9saXN0ICYmICFkZXYtPnNldF9yeF9tb2RlKSB8fAogCQkJICAgIGlmci0+aWZyX2h3YWRkci5zYV9mYW1pbHkgIT0gQUZfVU5TUEVDKQogCQkJCXJldHVybiAtRUlOVkFMOwogCQkJaWYgKCFuZXRpZl9kZXZpY2VfcHJlc2VudChkZXYpKQpAQCAtMzMzOCw3ICszMzM4LDcgQEAKIAkJCQkJICBkZXYtPmFkZHJfbGVuLCAxKTsKIAogCQljYXNlIFNJT0NERUxNVUxUSToKLQkJCWlmICghZGV2LT5zZXRfbXVsdGljYXN0X2xpc3QgfHwKKwkJCWlmICgoIWRldi0+c2V0X211bHRpY2FzdF9saXN0ICYmICFkZXYtPnNldF9yeF9tb2RlKSB8fAogCQkJICAgIGlmci0+aWZyX2h3YWRkci5zYV9mYW1pbHkgIT0gQUZfVU5TUEVDKQogCQkJCXJldHVybiAtRUlOVkFMOwogCQkJaWYgKCFuZXRpZl9kZXZpY2VfcHJlc2VudChkZXYpKQpkaWZmIC0tZ2l0IGEvbmV0L2NvcmUvbmVpZ2hib3VyLmMgYi9uZXQvY29yZS9uZWlnaGJvdXIuYwppbmRleCBkOWEwMmIyLi4xOWI4ZTAwIDEwMDY0NAotLS0gYS9uZXQvY29yZS9uZWlnaGJvdXIuYworKysgYi9uZXQvY29yZS9uZWlnaGJvdXIuYwpAQCAtNDY2LDYgKzQ2NiwyOCBAQAogCWdvdG8gb3V0OwogfQogCitzdHJ1Y3QgcG5laWdoX2VudHJ5ICpfX3BuZWlnaF9sb29rdXAoc3RydWN0IG5laWdoX3RhYmxlICp0YmwsCisJCXN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgdm9pZCAqcGtleSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgcG5laWdoX2VudHJ5ICpuOworCWludCBrZXlfbGVuID0gdGJsLT5rZXlfbGVuOworCXUzMiBoYXNoX3ZhbCA9ICoodTMyICopKHBrZXkgKyBrZXlfbGVuIC0gNCk7CisKKwloYXNoX3ZhbCBePSAoaGFzaF92YWwgPj4gMTYpOworCWhhc2hfdmFsIF49IGhhc2hfdmFsID4+IDg7CisJaGFzaF92YWwgXj0gaGFzaF92YWwgPj4gNDsKKwloYXNoX3ZhbCAmPSBQTkVJR0hfSEFTSE1BU0s7CisKKwlmb3IgKG4gPSB0YmwtPnBoYXNoX2J1Y2tldHNbaGFzaF92YWxdOyBuOyBuID0gbi0+bmV4dCkgeworCQlpZiAoIW1lbWNtcChuLT5rZXksIHBrZXksIGtleV9sZW4pICYmCisJCSAgICAobi0+bmV0ID09IG5ldCkgJiYKKwkJICAgIChuLT5kZXYgPT0gZGV2IHx8ICFuLT5kZXYpKQorCQkJYnJlYWs7CisJfQorCisJcmV0dXJuIG47Cit9CisKIHN0cnVjdCBwbmVpZ2hfZW50cnkgKiBwbmVpZ2hfbG9va3VwKHN0cnVjdCBuZWlnaF90YWJsZSAqdGJsLAogCQkJCSAgICBzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHZvaWQgKnBrZXksCiAJCQkJICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBjcmVhdCkKQEAgLTI4MDMsNiArMjgyNSw3IEBACiBFWFBPUlRfU1lNQk9MKG5laWdoX3VwZGF0ZSk7CiBFWFBPUlRfU1lNQk9MKHBuZWlnaF9lbnF1ZXVlKTsKIEVYUE9SVF9TWU1CT0wocG5laWdoX2xvb2t1cCk7CitFWFBPUlRfU1lNQk9MX0dQTChfX3BuZWlnaF9sb29rdXApOwogCiAjaWZkZWYgQ09ORklHX0FSUEQKIEVYUE9SVF9TWU1CT0wobmVpZ2hfYXBwX25zKTsKZGlmZiAtLWdpdCBhL25ldC9jb3JlL25ldHBvbGwuYyBiL25ldC9jb3JlL25ldHBvbGwuYwppbmRleCA0YjdlNzU2Li5jNjM1ZGU1IDEwMDY0NAotLS0gYS9uZXQvY29yZS9uZXRwb2xsLmMKKysrIGIvbmV0L2NvcmUvbmV0cG9sbC5jCkBAIC0yMTUsMTAgKzIxNSwxMiBAQAogCQl3aGlsZSAoY2xpc3QgIT0gTlVMTCkgewogCQkJc3RydWN0IHNrX2J1ZmYgKnNrYiA9IGNsaXN0OwogCQkJY2xpc3QgPSBjbGlzdC0+bmV4dDsKLQkJCWlmIChza2ItPmRlc3RydWN0b3IpCisJCQlpZiAoc2tiLT5kZXN0cnVjdG9yKSB7CisJCQkJYXRvbWljX2luYygmc2tiLT51c2Vycyk7CiAJCQkJZGV2X2tmcmVlX3NrYl9hbnkoc2tiKTsgLyogcHV0IHRoaXMgb25lIGJhY2sgKi8KLQkJCWVsc2UKKwkJCX0gZWxzZSB7CiAJCQkJX19rZnJlZV9za2Ioc2tiKTsKKwkJCX0KIAkJfQogCX0KIApkaWZmIC0tZ2l0IGEvbmV0L2NvcmUvc2tidWZmLmMgYi9uZXQvY29yZS9za2J1ZmYuYwppbmRleCAwZDBmZDI4Li42MDg3MDEzIDEwMDY0NAotLS0gYS9uZXQvY29yZS9za2J1ZmYuYworKysgYi9uZXQvY29yZS9za2J1ZmYuYwpAQCAtMjEzMSw4ICsyMTMxLDggQEAKICAqCUBmZWF0dXJlczogZmVhdHVyZXMgZm9yIHRoZSBvdXRwdXQgcGF0aCAoc2VlIGRldi0+ZmVhdHVyZXMpCiAgKgogICoJVGhpcyBmdW5jdGlvbiBwZXJmb3JtcyBzZWdtZW50YXRpb24gb24gdGhlIGdpdmVuIHNrYi4gIEl0IHJldHVybnMKLSAqCXRoZSBzZWdtZW50IGF0IHRoZSBnaXZlbiBwb3NpdGlvbi4gIEl0IHJldHVybnMgTlVMTCBpZiB0aGVyZSBhcmUKLSAqCW5vIG1vcmUgc2VnbWVudHMgdG8gZ2VuZXJhdGUsIG9yIHdoZW4gYW4gZXJyb3IgaXMgZW5jb3VudGVyZWQuCisgKglhIHBvaW50ZXIgdG8gdGhlIGZpcnN0IGluIGEgbGlzdCBvZiBuZXcgc2ticyBmb3IgdGhlIHNlZ21lbnRzLgorICoJSW4gY2FzZSBvZiBlcnJvciBpdCByZXR1cm5zIEVSUl9QVFIoZXJyKS4KICAqLwogc3RydWN0IHNrX2J1ZmYgKnNrYl9zZWdtZW50KHN0cnVjdCBza19idWZmICpza2IsIGludCBmZWF0dXJlcykKIHsKZGlmZiAtLWdpdCBhL25ldC9jb3JlL3NvY2suYyBiL25ldC9jb3JlL3NvY2suYwppbmRleCAwOWNiM2E3Li43YTA1NjdiIDEwMDY0NAotLS0gYS9uZXQvY29yZS9zb2NrLmMKKysrIGIvbmV0L2NvcmUvc29jay5jCkBAIC0xNjIxLDcgKzE2MjEsNyBAQAogewogCXJlYWRfbG9jaygmc2stPnNrX2NhbGxiYWNrX2xvY2spOwogCWlmIChzay0+c2tfc2xlZXAgJiYgd2FpdHF1ZXVlX2FjdGl2ZShzay0+c2tfc2xlZXApKQotCQl3YWtlX3VwX2ludGVycnVwdGlibGUoc2stPnNrX3NsZWVwKTsKKwkJd2FrZV91cF9pbnRlcnJ1cHRpYmxlX3N5bmMoc2stPnNrX3NsZWVwKTsKIAlza193YWtlX2FzeW5jKHNrLCBTT0NLX1dBS0VfV0FJVEQsIFBPTExfSU4pOwogCXJlYWRfdW5sb2NrKCZzay0+c2tfY2FsbGJhY2tfbG9jayk7CiB9CkBAIC0xNjM1LDcgKzE2MzUsNyBAQAogCSAqLwogCWlmICgoYXRvbWljX3JlYWQoJnNrLT5za193bWVtX2FsbG9jKSA8PCAxKSA8PSBzay0+c2tfc25kYnVmKSB7CiAJCWlmIChzay0+c2tfc2xlZXAgJiYgd2FpdHF1ZXVlX2FjdGl2ZShzay0+c2tfc2xlZXApKQotCQkJd2FrZV91cF9pbnRlcnJ1cHRpYmxlKHNrLT5za19zbGVlcCk7CisJCQl3YWtlX3VwX2ludGVycnVwdGlibGVfc3luYyhzay0+c2tfc2xlZXApOwogCiAJCS8qIFNob3VsZCBhZ3JlZSB3aXRoIHBvbGwsIG90aGVyd2lzZSBzb21lIHByb2dyYW1zIGJyZWFrICovCiAJCWlmIChzb2NrX3dyaXRlYWJsZShzaykpCkBAIC0xNzI1LDcgKzE3MjUsNyBAQAogCXNrLT5za19yY3Z0aW1lbwkJPQlNQVhfU0NIRURVTEVfVElNRU9VVDsKIAlzay0+c2tfc25kdGltZW8JCT0JTUFYX1NDSEVEVUxFX1RJTUVPVVQ7CiAKLQlzay0+c2tfc3RhbXAgPSBrdGltZV9zZXQoLTFMLCAtMUwpOworCXNrLT5za19zdGFtcCA9IGt0aW1lX3NldCgtMUwsIDApOwogCiAJYXRvbWljX3NldCgmc2stPnNrX3JlZmNudCwgMSk7CiAJYXRvbWljX3NldCgmc2stPnNrX2Ryb3BzLCAwKTsKZGlmZiAtLWdpdCBhL25ldC9kY2NwL2RjY3AuaCBiL25ldC9kY2NwL2RjY3AuaAppbmRleCAyODdhNjJiLi5iYTJlZjk0IDEwMDY0NAotLS0gYS9uZXQvZGNjcC9kY2NwLmgKKysrIGIvbmV0L2RjY3AvZGNjcC5oCkBAIC0zMjUsNiArMzI1LDEyIEBACiAgKiBUaGlzIGlzIHVzZWQgZm9yIHRyYW5zbWlzc2lvbiBhcyB3ZWxsIGFzIGZvciByZWNlcHRpb24uCiAgKi8KIHN0cnVjdCBkY2NwX3NrYl9jYiB7CisJdW5pb24geworCQlzdHJ1Y3QgaW5ldF9za2JfcGFybQloNDsKKyNpZiBkZWZpbmVkKENPTkZJR19JUFY2KSB8fCBkZWZpbmVkIChDT05GSUdfSVBWNl9NT0RVTEUpCisJCXN0cnVjdCBpbmV0Nl9za2JfcGFybQloNjsKKyNlbmRpZgorCX0gaGVhZGVyOwogCV9fdTggIGRjY3BkX3R5cGU6NDsKIAlfX3U4ICBkY2NwZF9jY3ZhbDo0OwogCV9fdTggIGRjY3BkX3Jlc2V0X2NvZGUsCmRpZmYgLS1naXQgYS9uZXQvZGNjcC9pcHY0LmMgYi9uZXQvZGNjcC9pcHY0LmMKaW5kZXggNDc0MDc1YS4uYjMzNzA0NCAxMDA2NDQKLS0tIGEvbmV0L2RjY3AvaXB2NC5jCisrKyBiL25ldC9kY2NwL2lwdjQuYwpAQCAtNDg5LDcgKzQ4OSw2IEBACiAKIAkJZGgtPmRjY3BoX2NoZWNrc3VtID0gZGNjcF92NF9jc3VtX2ZpbmlzaChza2IsIGlyZXEtPmxvY19hZGRyLAogCQkJCQkJCSAgICAgIGlyZXEtPnJtdF9hZGRyKTsKLQkJbWVtc2V0KCYoSVBDQihza2IpLT5vcHQpLCAwLCBzaXplb2YoSVBDQihza2IpLT5vcHQpKTsKIAkJZXJyID0gaXBfYnVpbGRfYW5kX3NlbmRfcGt0KHNrYiwgc2ssIGlyZXEtPmxvY19hZGRyLAogCQkJCQkgICAgaXJlcS0+cm10X2FkZHIsCiAJCQkJCSAgICBpcmVxLT5vcHQpOwpkaWZmIC0tZ2l0IGEvbmV0L2RjY3Avb3V0cHV0LmMgYi9uZXQvZGNjcC9vdXRwdXQuYwppbmRleCAzYjc2M2RiLi4zZDdkNjI4IDEwMDY0NAotLS0gYS9uZXQvZGNjcC9vdXRwdXQuYworKysgYi9uZXQvZGNjcC9vdXRwdXQuYwpAQCAtMTI2LDcgKzEyNiw2IEBACiAKIAkJRENDUF9JTkNfU1RBVFMoRENDUF9NSUJfT1VUU0VHUyk7CiAKLQkJbWVtc2V0KCYoSVBDQihza2IpLT5vcHQpLCAwLCBzaXplb2YoSVBDQihza2IpLT5vcHQpKTsKIAkJZXJyID0gaWNzay0+aWNza19hZl9vcHMtPnF1ZXVlX3htaXQoc2tiLCAwKTsKIAkJcmV0dXJuIG5ldF94bWl0X2V2YWwoZXJyKTsKIAl9CmRpZmYgLS1naXQgYS9uZXQvZGNjcC9wcm90by5jIGIvbmV0L2RjY3AvcHJvdG8uYwppbmRleCBlM2Y1ZDM3Li5jOTFkM2MxIDEwMDY0NAotLS0gYS9uZXQvZGNjcC9wcm90by5jCisrKyBiL25ldC9kY2NwL3Byb3RvLmMKQEAgLTEwNTcsNiArMTA1Nyw5IEBACiAJaW50IGVoYXNoX29yZGVyLCBiaGFzaF9vcmRlciwgaTsKIAlpbnQgcmMgPSAtRU5PQlVGUzsKIAorCUJVSUxEX0JVR19PTihzaXplb2Yoc3RydWN0IGRjY3Bfc2tiX2NiKSA+CisJCSAgICAgRklFTERfU0laRU9GKHN0cnVjdCBza19idWZmLCBjYikpOworCiAJZGNjcF9oYXNoaW5mby5iaW5kX2J1Y2tldF9jYWNoZXAgPQogCQlrbWVtX2NhY2hlX2NyZWF0ZSgiZGNjcF9iaW5kX2J1Y2tldCIsCiAJCQkJICBzaXplb2Yoc3RydWN0IGluZXRfYmluZF9idWNrZXQpLCAwLApkaWZmIC0tZ2l0IGEvbmV0L2V0aGVybmV0L2V0aC5jIGIvbmV0L2V0aGVybmV0L2V0aC5jCmluZGV4IGE3YjQxNzUuLmE4MDgzOWIgMTAwNjQ0Ci0tLSBhL25ldC9ldGhlcm5ldC9ldGguYworKysgYi9uZXQvZXRoZXJuZXQvZXRoLmMKQEAgLTMwMSw3ICszMDEsNyBAQAogc3RhdGljIGludCBldGhfdmFsaWRhdGVfYWRkcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogewogCWlmICghaXNfdmFsaWRfZXRoZXJfYWRkcihkZXYtPmRldl9hZGRyKSkKLQkJcmV0dXJuIC1FSU5WQUw7CisJCXJldHVybiAtRUFERFJOT1RBVkFJTDsKIAogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvbmV0L2llZWU4MDIxMS9pZWVlODAyMTFfcnguYyBiL25ldC9pZWVlODAyMTEvaWVlZTgwMjExX3J4LmMKaW5kZXggMWUzZjg3Yy4uMjAwZWUxZSAxMDA2NDQKLS0tIGEvbmV0L2llZWU4MDIxMS9pZWVlODAyMTFfcnguYworKysgYi9uZXQvaWVlZTgwMjExL2llZWU4MDIxMV9yeC5jCkBAIC0yNzEsNyArMjcxLDYgQEAKIHsKIAlzdHJ1Y3QgaWVlZTgwMjExX2hkcl8zYWRkciAqaGRyOwogCWludCByZXMsIGhkcmxlbjsKLQlERUNMQVJFX01BQ19CVUYobWFjKTsKIAogCWlmIChjcnlwdCA9PSBOVUxMIHx8IGNyeXB0LT5vcHMtPmRlY3J5cHRfbXBkdSA9PSBOVUxMKQogCQlyZXR1cm4gMDsKQEAgLTI4Myw4ICsyODIsMTIgQEAKIAlyZXMgPSBjcnlwdC0+b3BzLT5kZWNyeXB0X21wZHUoc2tiLCBoZHJsZW4sIGNyeXB0LT5wcml2KTsKIAlhdG9taWNfZGVjKCZjcnlwdC0+cmVmY250KTsKIAlpZiAocmVzIDwgMCkgewotCQlJRUVFODAyMTFfREVCVUdfRFJPUCgiZGVjcnlwdGlvbiBmYWlsZWQgKFNBPSVzIgotCQkJCSAgICAgIikgcmVzPSVkXG4iLCBwcmludF9tYWMobWFjLCBoZHItPmFkZHIyKSwgcmVzKTsKKwkJSUVFRTgwMjExX0RFQlVHX0RST1AoImRlY3J5cHRpb24gZmFpbGVkIChTQT0iIE1BQ19GTVQKKwkJCQkgICAgICIpIHJlcz0lZFxuIiwKKwkJCQkgICAgIGhkci0+YWRkcjJbMF0sIGhkci0+YWRkcjJbMV0sCisJCQkJICAgICBoZHItPmFkZHIyWzJdLCBoZHItPmFkZHIyWzNdLAorCQkJCSAgICAgaGRyLT5hZGRyMls0XSwgaGRyLT5hZGRyMls1XSwKKwkJCQkgICAgIHJlcyk7CiAJCWlmIChyZXMgPT0gLTIpCiAJCQlJRUVFODAyMTFfREVCVUdfRFJPUCgiRGVjcnlwdGlvbiBmYWlsZWQgSUNWICIKIAkJCQkJICAgICAibWlzbWF0Y2ggKGtleSAlZClcbiIsCkBAIC0zMDQsNyArMzA3LDYgQEAKIHsKIAlzdHJ1Y3QgaWVlZTgwMjExX2hkcl8zYWRkciAqaGRyOwogCWludCByZXMsIGhkcmxlbjsKLQlERUNMQVJFX01BQ19CVUYobWFjKTsKIAogCWlmIChjcnlwdCA9PSBOVUxMIHx8IGNyeXB0LT5vcHMtPmRlY3J5cHRfbXNkdSA9PSBOVUxMKQogCQlyZXR1cm4gMDsKQEAgLTMxNyw4ICszMTksMTIgQEAKIAlhdG9taWNfZGVjKCZjcnlwdC0+cmVmY250KTsKIAlpZiAocmVzIDwgMCkgewogCQlwcmludGsoS0VSTl9ERUJVRyAiJXM6IE1TRFUgZGVjcnlwdGlvbi9NSUMgdmVyaWZpY2F0aW9uIGZhaWxlZCIKLQkJICAgICAgICIgKFNBPSVzIGtleWlkeD0lZClcbiIsCi0JCSAgICAgICBpZWVlLT5kZXYtPm5hbWUsIHByaW50X21hYyhtYWMsIGhkci0+YWRkcjIpLCBrZXlpZHgpOworCQkgICAgICAgIiAoU0E9IiBNQUNfRk1UICIga2V5aWR4PSVkKVxuIiwKKwkJICAgICAgIGllZWUtPmRldi0+bmFtZSwKKwkJICAgICAgIGhkci0+YWRkcjJbMF0sIGhkci0+YWRkcjJbMV0sCisJCSAgICAgICBoZHItPmFkZHIyWzJdLCBoZHItPmFkZHIyWzNdLAorCQkgICAgICAgaGRyLT5hZGRyMls0XSwgaGRyLT5hZGRyMls1XSwKKwkJICAgICAgIGtleWlkeCk7CiAJCXJldHVybiAtMTsKIAl9CiAKQEAgLTQ2Miw4ICs0NjgsMTAgQEAKIAkJCSAqIGZyYW1lcyBzaWxlbnRseSBpbnN0ZWFkIG9mIGZpbGxpbmcgc3lzdGVtIGxvZyB3aXRoCiAJCQkgKiB0aGVzZSByZXBvcnRzLiAqLwogCQkJSUVFRTgwMjExX0RFQlVHX0RST1AoIkRlY3J5cHRpb24gZmFpbGVkIChub3Qgc2V0KSIKLQkJCQkJICAgICAiIChTQT0lcylcbiIsCi0JCQkJCSAgICAgcHJpbnRfbWFjKG1hYywgaGRyLT5hZGRyMikpOworCQkJCQkgICAgICIgKFNBPSIgTUFDX0ZNVCAiKVxuIiwKKwkJCQkJICAgICBoZHItPmFkZHIyWzBdLCBoZHItPmFkZHIyWzFdLAorCQkJCQkgICAgIGhkci0+YWRkcjJbMl0sIGhkci0+YWRkcjJbM10sCisJCQkJCSAgICAgaGRyLT5hZGRyMls0XSwgaGRyLT5hZGRyMls1XSk7CiAJCQlpZWVlLT5pZWVlX3N0YXRzLnJ4X2Rpc2NhcmRzX3VuZGVjcnlwdGFibGUrKzsKIAkJCWdvdG8gcnhfZHJvcHBlZDsKIAkJfQpAQCAtNDc0LDggKzQ4MiwxMCBAQAogCQkgICAgZmMgJiBJRUVFODAyMTFfRkNUTF9QUk9URUNURUQgJiYgaWVlZS0+aG9zdF9kZWNyeXB0ICYmCiAJCSAgICAoa2V5aWR4ID0gaG9zdGFwX3J4X2ZyYW1lX2RlY3J5cHQoaWVlZSwgc2tiLCBjcnlwdCkpIDwgMCkgewogCQkJcHJpbnRrKEtFUk5fREVCVUcgIiVzOiBmYWlsZWQgdG8gZGVjcnlwdCBtZ210OjphdXRoICIKLQkJCSAgICAgICAiZnJvbSAlc1xuIiwgZGV2LT5uYW1lLAotCQkJICAgICAgIHByaW50X21hYyhtYWMsIGhkci0+YWRkcjIpKTsKKwkJCSAgICAgICAiZnJvbSAiIE1BQ19GTVQgIlxuIiwgZGV2LT5uYW1lLAorCQkJICAgICAgIGhkci0+YWRkcjJbMF0sIGhkci0+YWRkcjJbMV0sCisJCQkgICAgICAgaGRyLT5hZGRyMlsyXSwgaGRyLT5hZGRyMlszXSwKKwkJCSAgICAgICBoZHItPmFkZHIyWzRdLCBoZHItPmFkZHIyWzVdKTsKIAkJCS8qIFRPRE86IGNvdWxkIGluZm9ybSBob3N0YXBkIGFib3V0IHRoaXMgc28gdGhhdCBpdAogCQkJICogY291bGQgc2VuZCBhdXRoIGZhaWx1cmUgcmVwb3J0ICovCiAJCQlnb3RvIHJ4X2Ryb3BwZWQ7CkBAIC02NTMsOCArNjYzLDExIEBACiAJCQkgKiBjb25maWd1cmVkICovCiAJCX0gZWxzZSB7CiAJCQlJRUVFODAyMTFfREVCVUdfRFJPUCgiZW5jcnlwdGlvbiBjb25maWd1cmVkLCBidXQgUlggIgotCQkJCQkgICAgICJmcmFtZSBub3QgZW5jcnlwdGVkIChTQT0lcyIKLQkJCQkJICAgICAiKVxuIiwgcHJpbnRfbWFjKG1hYywgaGRyLT5hZGRyMikpOworCQkJCQkgICAgICJmcmFtZSBub3QgZW5jcnlwdGVkIChTQT0iCisJCQkJCSAgICAgTUFDX0ZNVCAiKVxuIiwKKwkJCQkJICAgICBoZHItPmFkZHIyWzBdLCBoZHItPmFkZHIyWzFdLAorCQkJCQkgICAgIGhkci0+YWRkcjJbMl0sIGhkci0+YWRkcjJbM10sCisJCQkJCSAgICAgaGRyLT5hZGRyMls0XSwgaGRyLT5hZGRyMls1XSk7CiAJCQlnb3RvIHJ4X2Ryb3BwZWQ7CiAJCX0KIAl9CkBAIC02NjIsOSArNjc1LDExIEBACiAJaWYgKGNyeXB0ICYmICEoZmMgJiBJRUVFODAyMTFfRkNUTF9QUk9URUNURUQpICYmICFpZWVlLT5vcGVuX3dlcCAmJgogCSAgICAhaWVlZTgwMjExX2lzX2VhcG9sX2ZyYW1lKGllZWUsIHNrYikpIHsKIAkJSUVFRTgwMjExX0RFQlVHX0RST1AoImRyb3BwZWQgdW5lbmNyeXB0ZWQgUlggZGF0YSAiCi0JCQkJICAgICAiZnJhbWUgZnJvbSAlcyIKKwkJCQkgICAgICJmcmFtZSBmcm9tICIgTUFDX0ZNVAogCQkJCSAgICAgIiAoZHJvcF91bmVuY3J5cHRlZD0xKVxuIiwKLQkJCQkgICAgIHByaW50X21hYyhtYWMsIGhkci0+YWRkcjIpKTsKKwkJCQkgICAgIGhkci0+YWRkcjJbMF0sIGhkci0+YWRkcjJbMV0sCisJCQkJICAgICBoZHItPmFkZHIyWzJdLCBoZHItPmFkZHIyWzNdLAorCQkJCSAgICAgaGRyLT5hZGRyMls0XSwgaGRyLT5hZGRyMls1XSk7CiAJCWdvdG8gcnhfZHJvcHBlZDsKIAl9CiAKZGlmZiAtLWdpdCBhL25ldC9pcHY0L0tjb25maWcgYi9uZXQvaXB2NC9LY29uZmlnCmluZGV4IDljN2U1ZmYuLjQ2NzA2ODMgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L0tjb25maWcKKysrIGIvbmV0L2lwdjQvS2NvbmZpZwpAQCAtMTYwLDcgKzE2MCw3IEBACiAKIAkgIElmIHVuc3VyZSwgc2F5IFkuIE5vdGUgdGhhdCBpZiB5b3Ugd2FudCB0byB1c2UgREhDUCwgYSBESENQIHNlcnZlcgogCSAgbXVzdCBiZSBvcGVyYXRpbmcgb24geW91ciBuZXR3b3JrLiAgUmVhZAotCSAgPGZpbGU6RG9jdW1lbnRhdGlvbi9uZnNyb290LnR4dD4gZm9yIGRldGFpbHMuCisJICA8ZmlsZTpEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL25mc3Jvb3QudHh0PiBmb3IgZGV0YWlscy4KIAogY29uZmlnIElQX1BOUF9CT09UUAogCWJvb2wgIklQOiBCT09UUCBzdXBwb3J0IgpAQCAtMTc1LDcgKzE3NSw3IEBACiAJICBkb2VzIEJPT1RQIGl0c2VsZiwgcHJvdmlkaW5nIGFsbCBuZWNlc3NhcnkgaW5mb3JtYXRpb24gb24gdGhlIGtlcm5lbAogCSAgY29tbWFuZCBsaW5lLCB5b3UgY2FuIHNheSBOIGhlcmUuIElmIHVuc3VyZSwgc2F5IFkuIE5vdGUgdGhhdCBpZiB5b3UKIAkgIHdhbnQgdG8gdXNlIEJPT1RQLCBhIEJPT1RQIHNlcnZlciBtdXN0IGJlIG9wZXJhdGluZyBvbiB5b3VyIG5ldHdvcmsuCi0JICBSZWFkIDxmaWxlOkRvY3VtZW50YXRpb24vbmZzcm9vdC50eHQ+IGZvciBkZXRhaWxzLgorCSAgUmVhZCA8ZmlsZTpEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL25mc3Jvb3QudHh0PiBmb3IgZGV0YWlscy4KIAogY29uZmlnIElQX1BOUF9SQVJQCiAJYm9vbCAiSVA6IFJBUlAgc3VwcG9ydCIKQEAgLTE4Nyw4ICsxODcsOCBAQAogCSAgZGlzY292ZXJlZCBhdXRvbWF0aWNhbGx5IGF0IGJvb3QgdGltZSB1c2luZyB0aGUgUkFSUCBwcm90b2NvbCAoYW4KIAkgIG9sZGVyIHByb3RvY29sIHdoaWNoIGlzIGJlaW5nIG9ic29sZXRlZCBieSBCT09UUCBhbmQgREhDUCksIHNheSBZCiAJICBoZXJlLiBOb3RlIHRoYXQgaWYgeW91IHdhbnQgdG8gdXNlIFJBUlAsIGEgUkFSUCBzZXJ2ZXIgbXVzdCBiZQotCSAgb3BlcmF0aW5nIG9uIHlvdXIgbmV0d29yay4gUmVhZCA8ZmlsZTpEb2N1bWVudGF0aW9uL25mc3Jvb3QudHh0PiBmb3IKLQkgIGRldGFpbHMuCisJICBvcGVyYXRpbmcgb24geW91ciBuZXR3b3JrLiBSZWFkCisJICA8ZmlsZTpEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL25mc3Jvb3QudHh0PiBmb3IgZGV0YWlscy4KIAogIyBub3QgeWV0IHJlYWR5Li4KICMgICBib29sICcgICAgSVA6IEFSUCBzdXBwb3J0JyBDT05GSUdfSVBfUE5QX0FSUAkJCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9hZl9pbmV0LmMgYi9uZXQvaXB2NC9hZl9pbmV0LmMKaW5kZXggMDljYTUyOS4uMGQxMDk1MCAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvYWZfaW5ldC5jCisrKyBiL25ldC9pcHY0L2FmX2luZXQuYwpAQCAtNDU4LDcgKzQ1OCw3IEBACiAJZXJyID0gLUVBRERSTk9UQVZBSUw7CiAJaWYgKCFzeXNjdGxfaXBfbm9ubG9jYWxfYmluZCAmJgogCSAgICAhaW5ldC0+ZnJlZWJpbmQgJiYKLQkgICAgYWRkci0+c2luX2FkZHIuc19hZGRyICE9IElOQUREUl9BTlkgJiYKKwkgICAgYWRkci0+c2luX2FkZHIuc19hZGRyICE9IGh0b25sKElOQUREUl9BTlkpICYmCiAJICAgIGNoa19hZGRyX3JldCAhPSBSVE5fTE9DQUwgJiYKIAkgICAgY2hrX2FkZHJfcmV0ICE9IFJUTl9NVUxUSUNBU1QgJiYKIAkgICAgY2hrX2FkZHJfcmV0ICE9IFJUTl9CUk9BRENBU1QpCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9lc3A0LmMgYi9uZXQvaXB2NC9lc3A0LmMKaW5kZXggMDkxZTY3MC4uNGU3M2U1NyAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvZXNwNC5jCisrKyBiL25ldC9pcHY0L2VzcDQuYwpAQCAtMTY4LDcgKzE2OCw3IEBACiAJCXN0cnVjdCB4ZnJtX2VuY2FwX3RtcGwgKmVuY2FwID0geC0+ZW5jYXA7CiAJCXN0cnVjdCB1ZHBoZHIgKnVoOwogCQlfX2JlMzIgKnVkcGRhdGEzMjsKLQkJdW5zaWduZWQgaW50IHNwb3J0LCBkcG9ydDsKKwkJX19iZTE2IHNwb3J0LCBkcG9ydDsKIAkJaW50IGVuY2FwX3R5cGU7CiAKIAkJc3Bpbl9sb2NrX2JoKCZ4LT5sb2NrKTsKQEAgLTMzNiw3ICszMzYsNyBAQAogCXN0cnVjdCBzY2F0dGVybGlzdCAqYXNnOwogCWludCBlcnIgPSAtRUlOVkFMOwogCi0JaWYgKCFwc2tiX21heV9wdWxsKHNrYiwgc2l6ZW9mKCplc3BoKSkpCisJaWYgKCFwc2tiX21heV9wdWxsKHNrYiwgc2l6ZW9mKCplc3BoKSArIGNyeXB0b19hZWFkX2l2c2l6ZShhZWFkKSkpCiAJCWdvdG8gb3V0OwogCiAJaWYgKGVsZW4gPD0gMCkKZGlmZiAtLWdpdCBhL25ldC9pcHY0L2ZpYl90cmllLmMgYi9uZXQvaXB2NC9maWJfdHJpZS5jCmluZGV4IDFmZjQ0NmQuLmY2Y2RjMDEgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L2ZpYl90cmllLmMKKysrIGIvbmV0L2lwdjQvZmliX3RyaWUuYwpAQCAtMTc3LDEwICsxNzcsMTMgQEAKIAlyZXR1cm4gcmN1X2RlcmVmZXJlbmNlKHJldCk7CiB9CiAKKy8qIFNhbWUgYXMgcmN1X2Fzc2lnbl9wb2ludGVyCisgKiBidXQgdGhhdCBtYWNybygpIGFzc3VtZXMgdGhhdCB2YWx1ZSBpcyBhIHBvaW50ZXIuCisgKi8KIHN0YXRpYyBpbmxpbmUgdm9pZCBub2RlX3NldF9wYXJlbnQoc3RydWN0IG5vZGUgKm5vZGUsIHN0cnVjdCB0bm9kZSAqcHRyKQogewotCXJjdV9hc3NpZ25fcG9pbnRlcihub2RlLT5wYXJlbnQsCi0JCQkgICAodW5zaWduZWQgbG9uZylwdHIgfCBOT0RFX1RZUEUobm9kZSkpOworCXNtcF93bWIoKTsKKwlub2RlLT5wYXJlbnQgPSAodW5zaWduZWQgbG9uZylwdHIgfCBOT0RFX1RZUEUobm9kZSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgc3RydWN0IG5vZGUgKnRub2RlX2dldF9jaGlsZChzdHJ1Y3QgdG5vZGUgKnRuLCB1bnNpZ25lZCBpbnQgaSkKZGlmZiAtLWdpdCBhL25ldC9pcHY0L2ljbXAuYyBiL25ldC9pcHY0L2ljbXAuYwppbmRleCBhMTNjMDc0Li40MDUwOGJhIDEwMDY0NAotLS0gYS9uZXQvaXB2NC9pY21wLmMKKysrIGIvbmV0L2lwdjQvaWNtcC5jCkBAIC01OTEsNyArNTkxLDcgQEAKIAkJfQogCiAJCWlmICh4ZnJtX2RlY29kZV9zZXNzaW9uX3JldmVyc2Uoc2tiX2luLCAmZmwsIEFGX0lORVQpKQotCQkJZ290byBvdXRfdW5sb2NrOworCQkJZ290byByZWxvb2t1cF9mYWlsZWQ7CiAKIAkJaWYgKGluZXRfYWRkcl90eXBlKG5ldCwgZmwuZmw0X3NyYykgPT0gUlROX0xPQ0FMKQogCQkJZXJyID0gX19pcF9yb3V0ZV9vdXRwdXRfa2V5KG5ldCwgJnJ0MiwgJmZsKTsKQEAgLTYwMSw3ICs2MDEsNyBAQAogCiAJCQlmbDIuZmw0X2RzdCA9IGZsLmZsNF9zcmM7CiAJCQlpZiAoaXBfcm91dGVfb3V0cHV0X2tleShuZXQsICZydDIsICZmbDIpKQotCQkJCWdvdG8gb3V0X3VubG9jazsKKwkJCQlnb3RvIHJlbG9va3VwX2ZhaWxlZDsKIAogCQkJLyogVWdoISAqLwogCQkJb2RzdCA9IHNrYl9pbi0+ZHN0OwpAQCAtNjE0LDIxICs2MTQsMjMgQEAKIAkJfQogCiAJCWlmIChlcnIpCi0JCQlnb3RvIG91dF91bmxvY2s7CisJCQlnb3RvIHJlbG9va3VwX2ZhaWxlZDsKIAogCQllcnIgPSB4ZnJtX2xvb2t1cCgoc3RydWN0IGRzdF9lbnRyeSAqKikmcnQyLCAmZmwsIE5VTEwsCiAJCQkJICBYRlJNX0xPT0tVUF9JQ01QKTsKLQkJaWYgKGVyciA9PSAtRU5PRU5UKSB7CisJCXN3aXRjaCAoZXJyKSB7CisJCWNhc2UgMDoKKwkJCWRzdF9yZWxlYXNlKCZydC0+dS5kc3QpOworCQkJcnQgPSBydDI7CisJCQlicmVhazsKKwkJY2FzZSAtRVBFUk06CisJCQlnb3RvIGVuZGU7CisJCWRlZmF1bHQ6CityZWxvb2t1cF9mYWlsZWQ6CiAJCQlpZiAoIXJ0KQogCQkJCWdvdG8gb3V0X3VubG9jazsKLQkJCWdvdG8gcm91dGVfZG9uZTsKKwkJCWJyZWFrOwogCQl9Ci0KLQkJZHN0X3JlbGVhc2UoJnJ0LT51LmRzdCk7Ci0JCXJ0ID0gcnQyOwotCi0JCWlmIChlcnIpCi0JCQlnb3RvIG91dF91bmxvY2s7CiAJfQogCiByb3V0ZV9kb25lOgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaW5ldF9mcmFnbWVudC5jIGIvbmV0L2lwdjQvaW5ldF9mcmFnbWVudC5jCmluZGV4IDcyNGQ2OWEuLmEwYTNjNzggMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L2luZXRfZnJhZ21lbnQuYworKysgYi9uZXQvaXB2NC9pbmV0X2ZyYWdtZW50LmMKQEAgLTg2LDcgKzg2LDEwIEBACiB2b2lkIGluZXRfZnJhZ3NfZXhpdF9uZXQoc3RydWN0IG5ldG5zX2ZyYWdzICpuZiwgc3RydWN0IGluZXRfZnJhZ3MgKmYpCiB7CiAJbmYtPmxvd190aHJlc2ggPSAwOworCisJbG9jYWxfYmhfZGlzYWJsZSgpOwogCWluZXRfZnJhZ19ldmljdG9yKG5mLCBmKTsKKwlsb2NhbF9iaF9lbmFibGUoKTsKIH0KIEVYUE9SVF9TWU1CT0woaW5ldF9mcmFnc19leGl0X25ldCk7CiAKZGlmZiAtLWdpdCBhL25ldC9pcHY0L2luZXRfdGltZXdhaXRfc29jay5jIGIvbmV0L2lwdjQvaW5ldF90aW1ld2FpdF9zb2NrLmMKaW5kZXggODc2MTY5Zi4uNzE3YzQxMSAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvaW5ldF90aW1ld2FpdF9zb2NrLmMKKysrIGIvbmV0L2lwdjQvaW5ldF90aW1ld2FpdF9zb2NrLmMKQEAgLTEyNCw2ICsxMjQsNyBAQAogCQl0dy0+dHdfaGFzaAkgICAgPSBzay0+c2tfaGFzaDsKIAkJdHctPnR3X2lwdjZvbmx5CSAgICA9IDA7CiAJCXR3LT50d19wcm90CSAgICA9IHNrLT5za19wcm90X2NyZWF0b3I7CisJCXR3LT50d19uZXQgICAgICAgICAgPSBzay0+c2tfbmV0OwogCQlhdG9taWNfc2V0KCZ0dy0+dHdfcmVmY250LCAxKTsKIAkJaW5ldF90d3NrX2RlYWRfbm9kZV9pbml0KHR3KTsKIAkJX19tb2R1bGVfZ2V0KHR3LT50d19wcm90LT5vd25lcik7CmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pcF9mb3J3YXJkLmMgYi9uZXQvaXB2NC9pcF9mb3J3YXJkLmMKaW5kZXggMGIzYjMyOC4uYTQ1MDZjOCAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvaXBfZm9yd2FyZC5jCisrKyBiL25ldC9pcHY0L2lwX2ZvcndhcmQuYwpAQCAtODUsNyArODUsNyBAQAogCWlmIChvcHQtPmlzX3N0cmljdHJvdXRlICYmIHJ0LT5ydF9kc3QgIT0gcnQtPnJ0X2dhdGV3YXkpCiAJCWdvdG8gc3JfZmFpbGVkOwogCi0JaWYgKHVubGlrZWx5KHNrYi0+bGVuID4gZHN0X210dSgmcnQtPnUuZHN0KSAmJgorCWlmICh1bmxpa2VseShza2ItPmxlbiA+IGRzdF9tdHUoJnJ0LT51LmRzdCkgJiYgIXNrYl9pc19nc28oc2tiKSAmJgogCQkgICAgIChpcF9oZHIoc2tiKS0+ZnJhZ19vZmYgJiBodG9ucyhJUF9ERikpKSAmJiAhc2tiLT5sb2NhbF9kZikgewogCQlJUF9JTkNfU1RBVFMoSVBTVEFUU19NSUJfRlJBR0ZBSUxTKTsKIAkJaWNtcF9zZW5kKHNrYiwgSUNNUF9ERVNUX1VOUkVBQ0gsIElDTVBfRlJBR19ORUVERUQsCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pcF9mcmFnbWVudC5jIGIvbmV0L2lwdjQvaXBfZnJhZ21lbnQuYwppbmRleCBhMmU5MmY5Li4zYjJlNWFkIDEwMDY0NAotLS0gYS9uZXQvaXB2NC9pcF9mcmFnbWVudC5jCisrKyBiL25ldC9pcHY0L2lwX2ZyYWdtZW50LmMKQEAgLTU2OCw3ICs1NjgsNyBAQAogCiAJSVBfSU5DX1NUQVRTX0JIKElQU1RBVFNfTUlCX1JFQVNNUkVRRFMpOwogCi0JbmV0ID0gc2tiLT5kZXYtPm5kX25ldDsKKwluZXQgPSBza2ItPmRldiA/IHNrYi0+ZGV2LT5uZF9uZXQgOiBza2ItPmRzdC0+ZGV2LT5uZF9uZXQ7CiAJLyogU3RhcnQgYnkgY2xlYW5pbmcgdXAgdGhlIG1lbW9yeS4gKi8KIAlpZiAoYXRvbWljX3JlYWQoJm5ldC0+aXB2NC5mcmFncy5tZW0pID4gbmV0LT5pcHY0LmZyYWdzLmhpZ2hfdGhyZXNoKQogCQlpcF9ldmljdG9yKG5ldCk7CmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pcF9zb2NrZ2x1ZS5jIGIvbmV0L2lwdjQvaXBfc29ja2dsdWUuYwppbmRleCBkZTA1NzJjLi5jMjkyMWQwIDEwMDY0NAotLS0gYS9uZXQvaXB2NC9pcF9zb2NrZ2x1ZS5jCisrKyBiL25ldC9pcHY0L2lwX3NvY2tnbHVlLmMKQEAgLTU4Myw3ICs1ODMsNyBAQAogCQl9CiAKIAkJaWYgKCFtcmVxLmltcl9pZmluZGV4KSB7Ci0JCQlpZiAobXJlcS5pbXJfYWRkcmVzcy5zX2FkZHIgPT0gSU5BRERSX0FOWSkgeworCQkJaWYgKG1yZXEuaW1yX2FkZHJlc3Muc19hZGRyID09IGh0b25sKElOQUREUl9BTlkpKSB7CiAJCQkJaW5ldC0+bWNfaW5kZXggPSAwOwogCQkJCWluZXQtPm1jX2FkZHIgID0gMDsKIAkJCQllcnIgPSAwOwpAQCAtMTEzMiw3ICsxMTMyLDcgQEAKIAl9CiAJcmVsZWFzZV9zb2NrKHNrKTsKIAotCWlmIChsZW4gPCBzaXplb2YoaW50KSAmJiBsZW4gPiAwICYmIHZhbD49MCAmJiB2YWw8MjU1KSB7CisJaWYgKGxlbiA8IHNpemVvZihpbnQpICYmIGxlbiA+IDAgJiYgdmFsPj0wICYmIHZhbDw9MjU1KSB7CiAJCXVuc2lnbmVkIGNoYXIgdWN2YWwgPSAodW5zaWduZWQgY2hhcil2YWw7CiAJCWxlbiA9IDE7CiAJCWlmIChwdXRfdXNlcihsZW4sIG9wdGxlbikpCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pcGNvbmZpZy5jIGIvbmV0L2lwdjQvaXBjb25maWcuYwppbmRleCA1ZGQ5Mzg1Li40ODI0ZmU4IDEwMDY0NAotLS0gYS9uZXQvaXB2NC9pcGNvbmZpZy5jCisrKyBiL25ldC9pcHY0L2lwY29uZmlnLmMKQEAgLTEwMyw2ICsxMDMsNyBAQAogCQkJCQkgICAtICczJyBmcm9tIHJlc29sdi5oICovCiAKICNkZWZpbmUgTk9ORSBfX2NvbnN0YW50X2h0b25sKElOQUREUl9OT05FKQorI2RlZmluZSBBTlkgX19jb25zdGFudF9odG9ubChJTkFERFJfQU5ZKQogCiAvKgogICogUHVibGljIElQIGNvbmZpZ3VyYXRpb24KQEAgLTE0MTAsNyArMTQxMSw3IEBACiAKIC8qCiAgKiAgRGVjb2RlIGFueSBJUCBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW4gdGhlICJpcD0iIG9yICJuZnNhZGRycz0iIGtlcm5lbAotICogIGNvbW1hbmQgbGluZSBwYXJhbWV0ZXIuICBTZWUgRG9jdW1lbnRhdGlvbi9uZnNyb290LnR4dC4KKyAqICBjb21tYW5kIGxpbmUgcGFyYW1ldGVyLiAgU2VlIERvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvbmZzcm9vdC50eHQuCiAgKi8KIHN0YXRpYyBpbnQgX19pbml0IGljX3Byb3RvX25hbWUoY2hhciAqbmFtZSkKIHsKQEAgLTE0NzksMTkgKzE0ODAsMTkgQEAKIAkJCURCRygoIklQLUNvbmZpZzogUGFyYW1ldGVyICMlZDogYCVzJ1xuIiwgbnVtLCBpcCkpOwogCQkJc3dpdGNoIChudW0pIHsKIAkJCWNhc2UgMDoKLQkJCQlpZiAoKGljX215YWRkciA9IGluX2F0b24oaXApKSA9PSBJTkFERFJfQU5ZKQorCQkJCWlmICgoaWNfbXlhZGRyID0gaW5fYXRvbihpcCkpID09IEFOWSkKIAkJCQkJaWNfbXlhZGRyID0gTk9ORTsKIAkJCQlicmVhazsKIAkJCWNhc2UgMToKLQkJCQlpZiAoKGljX3NlcnZhZGRyID0gaW5fYXRvbihpcCkpID09IElOQUREUl9BTlkpCisJCQkJaWYgKChpY19zZXJ2YWRkciA9IGluX2F0b24oaXApKSA9PSBBTlkpCiAJCQkJCWljX3NlcnZhZGRyID0gTk9ORTsKIAkJCQlicmVhazsKIAkJCWNhc2UgMjoKLQkJCQlpZiAoKGljX2dhdGV3YXkgPSBpbl9hdG9uKGlwKSkgPT0gSU5BRERSX0FOWSkKKwkJCQlpZiAoKGljX2dhdGV3YXkgPSBpbl9hdG9uKGlwKSkgPT0gQU5ZKQogCQkJCQlpY19nYXRld2F5ID0gTk9ORTsKIAkJCQlicmVhazsKIAkJCWNhc2UgMzoKLQkJCQlpZiAoKGljX25ldG1hc2sgPSBpbl9hdG9uKGlwKSkgPT0gSU5BRERSX0FOWSkKKwkJCQlpZiAoKGljX25ldG1hc2sgPSBpbl9hdG9uKGlwKSkgPT0gQU5ZKQogCQkJCQlpY19uZXRtYXNrID0gTk9ORTsKIAkJCQlicmVhazsKIAkJCWNhc2UgNDoKZGlmZiAtLWdpdCBhL25ldC9pcHY0L25ldGZpbHRlci9pcF9xdWV1ZS5jIGIvbmV0L2lwdjQvbmV0ZmlsdGVyL2lwX3F1ZXVlLmMKaW5kZXggZmUwNWRhNC4uNGRjMTYyOCAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvbmV0ZmlsdGVyL2lwX3F1ZXVlLmMKKysrIGIvbmV0L2lwdjQvbmV0ZmlsdGVyL2lwX3F1ZXVlLmMKQEAgLTU4OCwxMSArNTg4LDkgQEAKIAl9CiAKICNpZmRlZiBDT05GSUdfUFJPQ19GUwotCXByb2MgPSBjcmVhdGVfcHJvY19lbnRyeShJUFFfUFJPQ19GU19OQU1FLCAwLCBpbml0X25ldC5wcm9jX25ldCk7Ci0JaWYgKHByb2MpIHsKLQkJcHJvYy0+b3duZXIgPSBUSElTX01PRFVMRTsKLQkJcHJvYy0+cHJvY19mb3BzID0gJmlwX3F1ZXVlX3Byb2NfZm9wczsKLQl9IGVsc2UgeworCXByb2MgPSBwcm9jX2NyZWF0ZShJUFFfUFJPQ19GU19OQU1FLCAwLCBpbml0X25ldC5wcm9jX25ldCwKKwkJCSAgICZpcF9xdWV1ZV9wcm9jX2ZvcHMpOworCWlmICghcHJvYykgewogCQlwcmludGsoS0VSTl9FUlIgImlwX3F1ZXVlOiBmYWlsZWQgdG8gY3JlYXRlIHByb2MgZW50cnlcbiIpOwogCQlnb3RvIGNsZWFudXBfaXBxbmw7CiAJfQpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9DTFVTVEVSSVAuYyBiL25ldC9pcHY0L25ldGZpbHRlci9pcHRfQ0xVU1RFUklQLmMKaW5kZXggYzZjZjg0Yy4uYTEyZGQzMiAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9DTFVTVEVSSVAuYworKysgYi9uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X0NMVVNURVJJUC5jCkBAIC04Miw4ICs4Miw4IEBACiBzdGF0aWMgaW5saW5lIHZvaWQKIGNsdXN0ZXJpcF9jb25maWdfZW50cnlfcHV0KHN0cnVjdCBjbHVzdGVyaXBfY29uZmlnICpjKQogeworCXdyaXRlX2xvY2tfYmgoJmNsdXN0ZXJpcF9sb2NrKTsKIAlpZiAoYXRvbWljX2RlY19hbmRfdGVzdCgmYy0+ZW50cmllcykpIHsKLQkJd3JpdGVfbG9ja19iaCgmY2x1c3RlcmlwX2xvY2spOwogCQlsaXN0X2RlbCgmYy0+bGlzdCk7CiAJCXdyaXRlX3VubG9ja19iaCgmY2x1c3RlcmlwX2xvY2spOwogCkBAIC05Niw3ICs5Niw5IEBACiAjaWZkZWYgQ09ORklHX1BST0NfRlMKIAkJcmVtb3ZlX3Byb2NfZW50cnkoYy0+cGRlLT5uYW1lLCBjLT5wZGUtPnBhcmVudCk7CiAjZW5kaWYKKwkJcmV0dXJuOwogCX0KKwl3cml0ZV91bmxvY2tfYmgoJmNsdXN0ZXJpcF9sb2NrKTsKIH0KIAogc3RhdGljIHN0cnVjdCBjbHVzdGVyaXBfY29uZmlnICoKQEAgLTE2NywxNCArMTY5LDEzIEBACiAKIAkJLyogY3JlYXRlIHByb2MgZGlyIGVudHJ5ICovCiAJCXNwcmludGYoYnVmZmVyLCAiJXUuJXUuJXUuJXUiLCBOSVBRVUFEKGlwKSk7Ci0JCWMtPnBkZSA9IGNyZWF0ZV9wcm9jX2VudHJ5KGJ1ZmZlciwgU19JV1VTUnxTX0lSVVNSLAotCQkJCQkgICBjbHVzdGVyaXBfcHJvY2Rpcik7CisJCWMtPnBkZSA9IHByb2NfY3JlYXRlKGJ1ZmZlciwgU19JV1VTUnxTX0lSVVNSLAorCQkJCSAgICAgY2x1c3RlcmlwX3Byb2NkaXIsICZjbHVzdGVyaXBfcHJvY19mb3BzKTsKIAkJaWYgKCFjLT5wZGUpIHsKIAkJCWtmcmVlKGMpOwogCQkJcmV0dXJuIE5VTEw7CiAJCX0KIAl9Ci0JYy0+cGRlLT5wcm9jX2ZvcHMgPSAmY2x1c3RlcmlwX3Byb2NfZm9wczsKIAljLT5wZGUtPmRhdGEgPSBjOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL25ldC9pcHY0L25ldGZpbHRlci9pcHRfcmVjZW50LmMgYi9uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X3JlY2VudC5jCmluZGV4IDY4Y2JlM2MuLjUwZTA2NjkgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L25ldGZpbHRlci9pcHRfcmVjZW50LmMKKysrIGIvbmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9yZWNlbnQuYwpAQCAtMjUyLDYgKzI1Miw4IEBACiAJaWYgKChpbmZvLT5jaGVja19zZXQgJiAoSVBUX1JFQ0VOVF9TRVQgfCBJUFRfUkVDRU5UX1JFTU9WRSkpICYmCiAJICAgIChpbmZvLT5zZWNvbmRzIHx8IGluZm8tPmhpdF9jb3VudCkpCiAJCXJldHVybiBmYWxzZTsKKwlpZiAoaW5mby0+aGl0X2NvdW50ID4gaXBfcGt0X2xpc3RfdG90KQorCQlyZXR1cm4gZmFsc2U7CiAJaWYgKGluZm8tPm5hbWVbMF0gPT0gJ1wwJyB8fAogCSAgICBzdHJubGVuKGluZm8tPm5hbWUsIElQVF9SRUNFTlRfTkFNRV9MRU4pID09IElQVF9SRUNFTlRfTkFNRV9MRU4pCiAJCXJldHVybiBmYWxzZTsKQEAgLTI3NCwxMiArMjc2LDExIEBACiAJZm9yIChpID0gMDsgaSA8IGlwX2xpc3RfaGFzaF9zaXplOyBpKyspCiAJCUlOSVRfTElTVF9IRUFEKCZ0LT5pcGhhc2hbaV0pOwogI2lmZGVmIENPTkZJR19QUk9DX0ZTCi0JdC0+cHJvYyA9IGNyZWF0ZV9wcm9jX2VudHJ5KHQtPm5hbWUsIGlwX2xpc3RfcGVybXMsIHByb2NfZGlyKTsKKwl0LT5wcm9jID0gcHJvY19jcmVhdGUodC0+bmFtZSwgaXBfbGlzdF9wZXJtcywgcHJvY19kaXIsICZyZWNlbnRfZm9wcyk7CiAJaWYgKHQtPnByb2MgPT0gTlVMTCkgewogCQlrZnJlZSh0KTsKIAkJZ290byBvdXQ7CiAJfQotCXQtPnByb2MtPnByb2NfZm9wcyA9ICZyZWNlbnRfZm9wczsKIAl0LT5wcm9jLT51aWQgICAgICAgPSBpcF9saXN0X3VpZDsKIAl0LT5wcm9jLT5naWQgICAgICAgPSBpcF9saXN0X2dpZDsKIAl0LT5wcm9jLT5kYXRhICAgICAgPSB0OwpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19sM3Byb3RvX2lwdjRfY29tcGF0LmMgYi9uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2wzcHJvdG9faXB2NF9jb21wYXQuYwppbmRleCAwODkyNTJlLi5mNTAwYjBmIDEwMDY0NAotLS0gYS9uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2wzcHJvdG9faXB2NF9jb21wYXQuYworKysgYi9uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2wzcHJvdG9faXB2NF9jb21wYXQuYwpAQCAtMzk1LDEzICszOTUsMTAgQEAKIAlpZiAoIXByb2NfZXhwKQogCQlnb3RvIGVycjI7CiAKLQlwcm9jX3N0YXQgPSBjcmVhdGVfcHJvY19lbnRyeSgiaXBfY29ubnRyYWNrIiwgU19JUlVHTywgaW5pdF9uZXQucHJvY19uZXRfc3RhdCk7CisJcHJvY19zdGF0ID0gcHJvY19jcmVhdGUoImlwX2Nvbm50cmFjayIsIFNfSVJVR08sCisJCQkJaW5pdF9uZXQucHJvY19uZXRfc3RhdCwgJmN0X2NwdV9zZXFfZm9wcyk7CiAJaWYgKCFwcm9jX3N0YXQpCiAJCWdvdG8gZXJyMzsKLQotCXByb2Nfc3RhdC0+cHJvY19mb3BzID0gJmN0X2NwdV9zZXFfZm9wczsKLQlwcm9jX3N0YXQtPm93bmVyID0gVEhJU19NT0RVTEU7Ci0KIAlyZXR1cm4gMDsKIAogZXJyMzoKZGlmZiAtLWdpdCBhL25ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfY29yZS5jIGIvbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9jb3JlLmMKaW5kZXggMGQ1ZmEzYS4uMzZiNGUzYiAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9jb3JlLmMKKysrIGIvbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9jb3JlLmMKQEAgLTYyOSw2ICs2MjksOCBAQAogCXNpemVfdCBpOwogCWludCByZXQ7CiAKKwluZWVkX2lwdjRfY29ubnRyYWNrKCk7CisKIAlyZXQgPSBuZl9jdF9leHRlbmRfcmVnaXN0ZXIoJm5hdF9leHRlbmQpOwogCWlmIChyZXQgPCAwKSB7CiAJCXByaW50ayhLRVJOX0VSUiAibmZfbmF0X2NvcmU6IFVuYWJsZSB0byByZWdpc3RlciBleHRlbnNpb25cbiIpOwpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwLmMgYi9uZXQvaXB2NC90Y3AuYwppbmRleCAwNzFlODNhLi4zOWI2MjlhIDEwMDY0NAotLS0gYS9uZXQvaXB2NC90Y3AuYworKysgYi9uZXQvaXB2NC90Y3AuYwpAQCAtNzM1LDcgKzczNSw3IEBACiAJCWlmICghKHBzaXplIC09IGNvcHkpKQogCQkJZ290byBvdXQ7CiAKLQkJaWYgKHNrYi0+bGVuIDwgbXNzX25vdyB8fCAoZmxhZ3MgJiBNU0dfT09CKSkKKwkJaWYgKHNrYi0+bGVuIDwgc2l6ZV9nb2FsIHx8IChmbGFncyAmIE1TR19PT0IpKQogCQkJY29udGludWU7CiAKIAkJaWYgKGZvcmNlZF9wdXNoKHRwKSkgewpAQCAtOTgxLDcgKzk4MSw3IEBACiAJCQlpZiAoKHNlZ2xlbiAtPSBjb3B5KSA9PSAwICYmIGlvdmxlbiA9PSAwKQogCQkJCWdvdG8gb3V0OwogCi0JCQlpZiAoc2tiLT5sZW4gPCBtc3Nfbm93IHx8IChmbGFncyAmIE1TR19PT0IpKQorCQkJaWYgKHNrYi0+bGVuIDwgc2l6ZV9nb2FsIHx8IChmbGFncyAmIE1TR19PT0IpKQogCQkJCWNvbnRpbnVlOwogCiAJCQlpZiAoZm9yY2VkX3B1c2godHApKSB7CmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfaW5wdXQuYyBiL25ldC9pcHY0L3RjcF9pbnB1dC5jCmluZGV4IDdmYWNkYjAuLmJiYjdkODggMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3RjcF9pbnB1dC5jCisrKyBiL25ldC9pcHY0L3RjcF9pbnB1dC5jCkBAIC0xNjI1LDEzICsxNjI1LDExIEBACiAJcmV0dXJuIGZsYWc7CiB9CiAKLS8qIElmIHdlIHJlY2VpdmUgbW9yZSBkdXBhY2tzIHRoYW4gd2UgZXhwZWN0ZWQgY291bnRpbmcgc2VnbWVudHMKLSAqIGluIGFzc3VtcHRpb24gb2YgYWJzZW50IHJlb3JkZXJpbmcsIGludGVycHJldCB0aGlzIGFzIHJlb3JkZXJpbmcuCi0gKiBUaGUgb25seSBhbm90aGVyIHJlYXNvbiBjb3VsZCBiZSBidWcgaW4gcmVjZWl2ZXIgVENQLgorLyogTGltaXRzIHNhY2tlZF9vdXQgc28gdGhhdCBzdW0gd2l0aCBsb3N0X291dCBpc24ndCBldmVyIGxhcmdlciB0aGFuCisgKiBwYWNrZXRzX291dC4gUmV0dXJucyB6ZXJvIGlmIHNhY2tlZF9vdXQgYWRqdXN0ZW1lbnQgd2Fzbid0IG5lY2Vzc2FyeS4KICAqLwotc3RhdGljIHZvaWQgdGNwX2NoZWNrX3Jlbm9fcmVvcmRlcmluZyhzdHJ1Y3Qgc29jayAqc2ssIGNvbnN0IGludCBhZGRlbmQpCitpbnQgdGNwX2xpbWl0X3Jlbm9fc2Fja2VkKHN0cnVjdCB0Y3Bfc29jayAqdHApCiB7Ci0Jc3RydWN0IHRjcF9zb2NrICp0cCA9IHRjcF9zayhzayk7CiAJdTMyIGhvbGVzOwogCiAJaG9sZXMgPSBtYXgodHAtPmxvc3Rfb3V0LCAxVSk7CkBAIC0xNjM5LDggKzE2MzcsMjAgQEAKIAogCWlmICgodHAtPnNhY2tlZF9vdXQgKyBob2xlcykgPiB0cC0+cGFja2V0c19vdXQpIHsKIAkJdHAtPnNhY2tlZF9vdXQgPSB0cC0+cGFja2V0c19vdXQgLSBob2xlczsKLQkJdGNwX3VwZGF0ZV9yZW9yZGVyaW5nKHNrLCB0cC0+cGFja2V0c19vdXQgKyBhZGRlbmQsIDApOworCQlyZXR1cm4gMTsKIAl9CisJcmV0dXJuIDA7Cit9CisKKy8qIElmIHdlIHJlY2VpdmUgbW9yZSBkdXBhY2tzIHRoYW4gd2UgZXhwZWN0ZWQgY291bnRpbmcgc2VnbWVudHMKKyAqIGluIGFzc3VtcHRpb24gb2YgYWJzZW50IHJlb3JkZXJpbmcsIGludGVycHJldCB0aGlzIGFzIHJlb3JkZXJpbmcuCisgKiBUaGUgb25seSBhbm90aGVyIHJlYXNvbiBjb3VsZCBiZSBidWcgaW4gcmVjZWl2ZXIgVENQLgorICovCitzdGF0aWMgdm9pZCB0Y3BfY2hlY2tfcmVub19yZW9yZGVyaW5nKHN0cnVjdCBzb2NrICpzaywgY29uc3QgaW50IGFkZGVuZCkKK3sKKwlzdHJ1Y3QgdGNwX3NvY2sgKnRwID0gdGNwX3NrKHNrKTsKKwlpZiAodGNwX2xpbWl0X3Jlbm9fc2Fja2VkKHRwKSkKKwkJdGNwX3VwZGF0ZV9yZW9yZGVyaW5nKHNrLCB0cC0+cGFja2V0c19vdXQgKyBhZGRlbmQsIDApOwogfQogCiAvKiBFbXVsYXRlIFNBQ0tzIGZvciBTQUNLbGVzcyBjb25uZWN0aW9uOiBhY2NvdW50IGZvciBhIG5ldyBkdXBhY2suICovCkBAIC0xNjgxLDExICsxNjkxLDE2IEBACiBpbnQgdGNwX3VzZV9mcnRvKHN0cnVjdCBzb2NrICpzaykKIHsKIAljb25zdCBzdHJ1Y3QgdGNwX3NvY2sgKnRwID0gdGNwX3NrKHNrKTsKKwljb25zdCBzdHJ1Y3QgaW5ldF9jb25uZWN0aW9uX3NvY2sgKmljc2sgPSBpbmV0X2Nzayhzayk7CiAJc3RydWN0IHNrX2J1ZmYgKnNrYjsKIAogCWlmICghc3lzY3RsX3RjcF9mcnRvKQogCQlyZXR1cm4gMDsKIAorCS8qIE1UVSBwcm9iZSBhbmQgRi1SVE8gd29uJ3QgcmVhbGx5IHBsYXkgbmljZWx5IGFsb25nIGN1cnJlbnRseSAqLworCWlmIChpY3NrLT5pY3NrX210dXAucHJvYmVfc2l6ZSkKKwkJcmV0dXJuIDA7CisKIAlpZiAoSXNTYWNrRnJ0bygpKQogCQlyZXR1cm4gMTsKIApAQCAtMjEzNCwxMSArMjE0OSwxMyBAQAogLyogTWFyayBoZWFkIG9mIHF1ZXVlIHVwIGFzIGxvc3QuIFdpdGggUkZDMzUxNyBTQUNLLCB0aGUgcGFja2V0cyBpcwogICogaXMgYWdhaW5zdCBzYWNrZWQgImNudCIsIG90aGVyd2lzZSBpdCdzIGFnYWluc3QgZmFja2VkICJjbnQiCiAgKi8KLXN0YXRpYyB2b2lkIHRjcF9tYXJrX2hlYWRfbG9zdChzdHJ1Y3Qgc29jayAqc2ssIGludCBwYWNrZXRzLCBpbnQgZmFzdF9yZXhtaXQpCitzdGF0aWMgdm9pZCB0Y3BfbWFya19oZWFkX2xvc3Qoc3RydWN0IHNvY2sgKnNrLCBpbnQgcGFja2V0cykKIHsKIAlzdHJ1Y3QgdGNwX3NvY2sgKnRwID0gdGNwX3NrKHNrKTsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwotCWludCBjbnQ7CisJaW50IGNudCwgb2xkY250OworCWludCBlcnI7CisJdW5zaWduZWQgaW50IG1zczsKIAogCUJVR19UUkFQKHBhY2tldHMgPD0gdHAtPnBhY2tldHNfb3V0KTsKIAlpZiAodHAtPmxvc3Rfc2tiX2hpbnQpIHsKQEAgLTIxNTcsMTMgKzIxNzQsMjUgQEAKIAkJdHAtPmxvc3Rfc2tiX2hpbnQgPSBza2I7CiAJCXRwLT5sb3N0X2NudF9oaW50ID0gY250OwogCisJCWlmIChhZnRlcihUQ1BfU0tCX0NCKHNrYiktPmVuZF9zZXEsIHRwLT5oaWdoX3NlcSkpCisJCQlicmVhazsKKworCQlvbGRjbnQgPSBjbnQ7CiAJCWlmICh0Y3BfaXNfZmFjayh0cCkgfHwgdGNwX2lzX3Jlbm8odHApIHx8CiAJCSAgICAoVENQX1NLQl9DQihza2IpLT5zYWNrZWQgJiBUQ1BDQl9TQUNLRURfQUNLRUQpKQogCQkJY250ICs9IHRjcF9za2JfcGNvdW50KHNrYik7CiAKLQkJaWYgKCgoIWZhc3RfcmV4bWl0IHx8ICh0cC0+bG9zdF9vdXQgPiAwKSkgJiYgKGNudCA+IHBhY2tldHMpKSB8fAotCQkgICAgYWZ0ZXIoVENQX1NLQl9DQihza2IpLT5lbmRfc2VxLCB0cC0+aGlnaF9zZXEpKQotCQkJYnJlYWs7CisJCWlmIChjbnQgPiBwYWNrZXRzKSB7CisJCQlpZiAodGNwX2lzX3NhY2sodHApIHx8IChvbGRjbnQgPj0gcGFja2V0cykpCisJCQkJYnJlYWs7CisKKwkJCW1zcyA9IHNrYl9zaGluZm8oc2tiKS0+Z3NvX3NpemU7CisJCQllcnIgPSB0Y3BfZnJhZ21lbnQoc2ssIHNrYiwgKHBhY2tldHMgLSBvbGRjbnQpICogbXNzLCBtc3MpOworCQkJaWYgKGVyciA8IDApCisJCQkJYnJlYWs7CisJCQljbnQgPSBwYWNrZXRzOworCQl9CisKIAkJaWYgKCEoVENQX1NLQl9DQihza2IpLT5zYWNrZWQgJiAoVENQQ0JfU0FDS0VEX0FDS0VEfFRDUENCX0xPU1QpKSkgewogCQkJVENQX1NLQl9DQihza2IpLT5zYWNrZWQgfD0gVENQQ0JfTE9TVDsKIAkJCXRwLT5sb3N0X291dCArPSB0Y3Bfc2tiX3Bjb3VudChza2IpOwpAQCAtMjE4MCwxNyArMjIwOSwxNyBAQAogCXN0cnVjdCB0Y3Bfc29jayAqdHAgPSB0Y3Bfc2soc2spOwogCiAJaWYgKHRjcF9pc19yZW5vKHRwKSkgewotCQl0Y3BfbWFya19oZWFkX2xvc3Qoc2ssIDEsIGZhc3RfcmV4bWl0KTsKKwkJdGNwX21hcmtfaGVhZF9sb3N0KHNrLCAxKTsKIAl9IGVsc2UgaWYgKHRjcF9pc19mYWNrKHRwKSkgewogCQlpbnQgbG9zdCA9IHRwLT5mYWNrZXRzX291dCAtIHRwLT5yZW9yZGVyaW5nOwogCQlpZiAobG9zdCA8PSAwKQogCQkJbG9zdCA9IDE7Ci0JCXRjcF9tYXJrX2hlYWRfbG9zdChzaywgbG9zdCwgZmFzdF9yZXhtaXQpOworCQl0Y3BfbWFya19oZWFkX2xvc3Qoc2ssIGxvc3QpOwogCX0gZWxzZSB7CiAJCWludCBzYWNrZWRfdXB0byA9IHRwLT5zYWNrZWRfb3V0IC0gdHAtPnJlb3JkZXJpbmc7Ci0JCWlmIChzYWNrZWRfdXB0byA8IDApCi0JCQlzYWNrZWRfdXB0byA9IDA7Ci0JCXRjcF9tYXJrX2hlYWRfbG9zdChzaywgc2Fja2VkX3VwdG8sIGZhc3RfcmV4bWl0KTsKKwkJaWYgKHNhY2tlZF91cHRvIDwgZmFzdF9yZXhtaXQpCisJCQlzYWNrZWRfdXB0byA9IGZhc3RfcmV4bWl0OworCQl0Y3BfbWFya19oZWFkX2xvc3Qoc2ssIHNhY2tlZF91cHRvKTsKIAl9CiAKIAkvKiBOZXcgaGV1cmlzdGljczogaXQgaXMgcG9zc2libGUgb25seSBhZnRlciB3ZSBzd2l0Y2hlZApAQCAtMjUyNCw3ICsyNTUzLDcgQEAKIAkgICAgYmVmb3JlKHRwLT5zbmRfdW5hLCB0cC0+aGlnaF9zZXEpICYmCiAJICAgIGljc2stPmljc2tfY2Ffc3RhdGUgIT0gVENQX0NBX09wZW4gJiYKIAkgICAgdHAtPmZhY2tldHNfb3V0ID4gdHAtPnJlb3JkZXJpbmcpIHsKLQkJdGNwX21hcmtfaGVhZF9sb3N0KHNrLCB0cC0+ZmFja2V0c19vdXQgLSB0cC0+cmVvcmRlcmluZywgMCk7CisJCXRjcF9tYXJrX2hlYWRfbG9zdChzaywgdHAtPmZhY2tldHNfb3V0IC0gdHAtPnJlb3JkZXJpbmcpOwogCQlORVRfSU5DX1NUQVRTX0JIKExJTlVYX01JQl9UQ1BMT1NTKTsKIAl9CiAKQEAgLTI1ODYsNiArMjYxNSw4IEBACiAJY2FzZSBUQ1BfQ0FfTG9zczoKIAkJaWYgKGZsYWcgJiBGTEFHX0RBVEFfQUNLRUQpCiAJCQlpY3NrLT5pY3NrX3JldHJhbnNtaXRzID0gMDsKKwkJaWYgKHRjcF9pc19yZW5vKHRwKSAmJiBmbGFnICYgRkxBR19TTkRfVU5BX0FEVkFOQ0VEKQorCQkJdGNwX3Jlc2V0X3Jlbm9fc2Fjayh0cCk7CiAJCWlmICghdGNwX3RyeV91bmRvX2xvc3Moc2spKSB7CiAJCQl0Y3BfbW9kZXJhdGVfY3duZCh0cCk7CiAJCQl0Y3BfeG1pdF9yZXRyYW5zbWl0X3F1ZXVlKHNrKTsKQEAgLTM4MTAsOCArMzg0MSwyOCBAQAogCX0KIH0KIAorc3RhdGljIGludCB0Y3BfcHJ1bmVfb2ZvX3F1ZXVlKHN0cnVjdCBzb2NrICpzayk7CiBzdGF0aWMgaW50IHRjcF9wcnVuZV9xdWV1ZShzdHJ1Y3Qgc29jayAqc2spOwogCitzdGF0aWMgaW5saW5lIGludCB0Y3BfdHJ5X3JtZW1fc2NoZWR1bGUoc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBpbnQgc2l6ZSkKK3sKKwlpZiAoYXRvbWljX3JlYWQoJnNrLT5za19ybWVtX2FsbG9jKSA+IHNrLT5za19yY3ZidWYgfHwKKwkgICAgIXNrX3JtZW1fc2NoZWR1bGUoc2ssIHNpemUpKSB7CisKKwkJaWYgKHRjcF9wcnVuZV9xdWV1ZShzaykgPCAwKQorCQkJcmV0dXJuIC0xOworCisJCWlmICghc2tfcm1lbV9zY2hlZHVsZShzaywgc2l6ZSkpIHsKKwkJCWlmICghdGNwX3BydW5lX29mb19xdWV1ZShzaykpCisJCQkJcmV0dXJuIC0xOworCisJCQlpZiAoIXNrX3JtZW1fc2NoZWR1bGUoc2ssIHNpemUpKQorCQkJCXJldHVybiAtMTsKKwkJfQorCX0KKwlyZXR1cm4gMDsKK30KKwogc3RhdGljIHZvaWQgdGNwX2RhdGFfcXVldWUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogewogCXN0cnVjdCB0Y3BoZHIgKnRoID0gdGNwX2hkcihza2IpOwpAQCAtMzg2MSwxMiArMzkxMiw5IEBACiAJCWlmIChlYXRlbiA8PSAwKSB7CiBxdWV1ZV9hbmRfb3V0OgogCQkJaWYgKGVhdGVuIDwgMCAmJgotCQkJICAgIChhdG9taWNfcmVhZCgmc2stPnNrX3JtZW1fYWxsb2MpID4gc2stPnNrX3JjdmJ1ZiB8fAotCQkJICAgICAhc2tfcm1lbV9zY2hlZHVsZShzaywgc2tiLT50cnVlc2l6ZSkpKSB7Ci0JCQkJaWYgKHRjcF9wcnVuZV9xdWV1ZShzaykgPCAwIHx8Ci0JCQkJICAgICFza19ybWVtX3NjaGVkdWxlKHNrLCBza2ItPnRydWVzaXplKSkKLQkJCQkJZ290byBkcm9wOwotCQkJfQorCQkJICAgIHRjcF90cnlfcm1lbV9zY2hlZHVsZShzaywgc2tiLT50cnVlc2l6ZSkpCisJCQkJZ290byBkcm9wOworCiAJCQlza2Jfc2V0X293bmVyX3Ioc2tiLCBzayk7CiAJCQlfX3NrYl9xdWV1ZV90YWlsKCZzay0+c2tfcmVjZWl2ZV9xdWV1ZSwgc2tiKTsKIAkJfQpAQCAtMzkzNSwxMiArMzk4Myw4IEBACiAKIAlUQ1BfRUNOX2NoZWNrX2NlKHRwLCBza2IpOwogCi0JaWYgKGF0b21pY19yZWFkKCZzay0+c2tfcm1lbV9hbGxvYykgPiBzay0+c2tfcmN2YnVmIHx8Ci0JICAgICFza19ybWVtX3NjaGVkdWxlKHNrLCBza2ItPnRydWVzaXplKSkgewotCQlpZiAodGNwX3BydW5lX3F1ZXVlKHNrKSA8IDAgfHwKLQkJICAgICFza19ybWVtX3NjaGVkdWxlKHNrLCBza2ItPnRydWVzaXplKSkKLQkJCWdvdG8gZHJvcDsKLQl9CisJaWYgKHRjcF90cnlfcm1lbV9zY2hlZHVsZShzaywgc2tiLT50cnVlc2l6ZSkpCisJCWdvdG8gZHJvcDsKIAogCS8qIERpc2FibGUgaGVhZGVyIHByZWRpY3Rpb24uICovCiAJdHAtPnByZWRfZmxhZ3MgPSAwOwpAQCAtNDE2Nyw2ICs0MjExLDMyIEBACiAJfQogfQogCisvKgorICogUHVyZ2UgdGhlIG91dC1vZi1vcmRlciBxdWV1ZS4KKyAqIFJldHVybiB0cnVlIGlmIHF1ZXVlIHdhcyBwcnVuZWQuCisgKi8KK3N0YXRpYyBpbnQgdGNwX3BydW5lX29mb19xdWV1ZShzdHJ1Y3Qgc29jayAqc2spCit7CisJc3RydWN0IHRjcF9zb2NrICp0cCA9IHRjcF9zayhzayk7CisJaW50IHJlcyA9IDA7CisKKwlpZiAoIXNrYl9xdWV1ZV9lbXB0eSgmdHAtPm91dF9vZl9vcmRlcl9xdWV1ZSkpIHsKKwkJTkVUX0lOQ19TVEFUU19CSChMSU5VWF9NSUJfT0ZPUFJVTkVEKTsKKwkJX19za2JfcXVldWVfcHVyZ2UoJnRwLT5vdXRfb2Zfb3JkZXJfcXVldWUpOworCisJCS8qIFJlc2V0IFNBQ0sgc3RhdGUuICBBIGNvbmZvcm1pbmcgU0FDSyBpbXBsZW1lbnRhdGlvbiB3aWxsCisJCSAqIGRvIHRoZSBzYW1lIGF0IGEgdGltZW91dCBiYXNlZCByZXRyYW5zbWl0LiAgV2hlbiBhIGNvbm5lY3Rpb24KKwkJICogaXMgaW4gYSBzYWQgc3RhdGUgbGlrZSB0aGlzLCB3ZSBjYXJlIG9ubHkgYWJvdXQgaW50ZWdyaXR5CisJCSAqIG9mIHRoZSBjb25uZWN0aW9uIG5vdCBwZXJmb3JtYW5jZS4KKwkJICovCisJCWlmICh0cC0+cnhfb3B0LnNhY2tfb2spCisJCQl0Y3Bfc2Fja19yZXNldCgmdHAtPnJ4X29wdCk7CisJCXNrX21lbV9yZWNsYWltKHNrKTsKKwkJcmVzID0gMTsKKwl9CisJcmV0dXJuIHJlczsKK30KKwogLyogUmVkdWNlIGFsbG9jYXRlZCBtZW1vcnkgaWYgd2UgY2FuLCB0cnlpbmcgdG8gZ2V0CiAgKiB0aGUgc29ja2V0IHdpdGhpbiBpdHMgbWVtb3J5IGxpbWl0cyBhZ2Fpbi4KICAqCkBAIC00MjAwLDIwICs0MjcwLDcgQEAKIAkvKiBDb2xsYXBzaW5nIGRpZCBub3QgaGVscCwgZGVzdHJ1Y3RpdmUgYWN0aW9ucyBmb2xsb3cuCiAJICogVGhpcyBtdXN0IG5vdCBldmVyIG9jY3VyLiAqLwogCi0JLyogRmlyc3QsIHB1cmdlIHRoZSBvdXRfb2Zfb3JkZXIgcXVldWUuICovCi0JaWYgKCFza2JfcXVldWVfZW1wdHkoJnRwLT5vdXRfb2Zfb3JkZXJfcXVldWUpKSB7Ci0JCU5FVF9JTkNfU1RBVFNfQkgoTElOVVhfTUlCX09GT1BSVU5FRCk7Ci0JCV9fc2tiX3F1ZXVlX3B1cmdlKCZ0cC0+b3V0X29mX29yZGVyX3F1ZXVlKTsKLQotCQkvKiBSZXNldCBTQUNLIHN0YXRlLiAgQSBjb25mb3JtaW5nIFNBQ0sgaW1wbGVtZW50YXRpb24gd2lsbAotCQkgKiBkbyB0aGUgc2FtZSBhdCBhIHRpbWVvdXQgYmFzZWQgcmV0cmFuc21pdC4gIFdoZW4gYSBjb25uZWN0aW9uCi0JCSAqIGlzIGluIGEgc2FkIHN0YXRlIGxpa2UgdGhpcywgd2UgY2FyZSBvbmx5IGFib3V0IGludGVncml0eQotCQkgKiBvZiB0aGUgY29ubmVjdGlvbiBub3QgcGVyZm9ybWFuY2UuCi0JCSAqLwotCQlpZiAodGNwX2lzX3NhY2sodHApKQotCQkJdGNwX3NhY2tfcmVzZXQoJnRwLT5yeF9vcHQpOwotCQlza19tZW1fcmVjbGFpbShzayk7Ci0JfQorCXRjcF9wcnVuZV9vZm9fcXVldWUoc2spOwogCiAJaWYgKGF0b21pY19yZWFkKCZzay0+c2tfcm1lbV9hbGxvYykgPD0gc2stPnNrX3JjdmJ1ZikKIAkJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3Bfb3V0cHV0LmMgYi9uZXQvaXB2NC90Y3Bfb3V0cHV0LmMKaW5kZXggZWQ3NTBmOS4uZDI5ZWY3OSAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvdGNwX291dHB1dC5jCisrKyBiL25ldC9pcHY0L3RjcF9vdXRwdXQuYwpAQCAtMjU1LDcgKzI1NSw3IEBACiAJCSAqCiAJCSAqIFJlbGF4IFdpbGwgUm9iaW5zb24uCiAJCSAqLwotCQluZXdfd2luID0gY3VyX3dpbjsKKwkJbmV3X3dpbiA9IEFMSUdOKGN1cl93aW4sIDEgPDwgdHAtPnJ4X29wdC5yY3Zfd3NjYWxlKTsKIAl9CiAJdHAtPnJjdl93bmQgPSBuZXdfd2luOwogCXRwLT5yY3Zfd3VwID0gdHAtPnJjdl9ueHQ7CkBAIC0xMDM1LDYgKzEwMzUsMTMgQEAKICAqIGludHJvZHVjaW5nIE1TUyBvZGRpdGllcyB0byBzZWdtZW50IGJvdW5kYXJpZXMuIEluIHJhcmUgY2FzZXMgd2hlcmUKICAqIG1zc19ub3cgIT0gbXNzX2NhY2hlLCB3ZSB3aWxsIHJlcXVlc3QgY2FsbGVyIHRvIGNyZWF0ZSBhIHNtYWxsIHNrYgogICogcGVyIGlucHV0IHNrYiB3aGljaCBjb3VsZCBiZSBtb3N0bHkgYXZvaWRlZCBoZXJlIChpZiBkZXNpcmVkKS4KKyAqCisgKiBXZSBleHBsaWNpdGx5IHdhbnQgdG8gY3JlYXRlIGEgcmVxdWVzdCBmb3Igc3BsaXR0aW5nIHdyaXRlIHF1ZXVlIHRhaWwKKyAqIHRvIGEgc21hbGwgc2tiIGZvciBOYWdsZSBwdXJwb3NlcyB3aGlsZSBhdm9pZGluZyB1bm5lY2Vzc2FyeSBtb2R1bG9zLAorICogdGh1cyBhbGwgdGhlIGNvbXBsZXhpdHkgKGN3bmRfbGVuIGlzIGFsd2F5cyBNU1MgbXVsdGlwbGUgd2hpY2ggd2UKKyAqIHJldHVybiB3aGVuZXZlciBhbGxvd2VkIGJ5IHRoZSBvdGhlciBmYWN0b3JzKS4gQmFzaWNhbGx5IHdlIG5lZWQgdGhlCisgKiBtb2R1bG8gb25seSB3aGVuIHRoZSByZWNlaXZlciB3aW5kb3cgYWxvbmUgaXMgdGhlIGxpbWl0aW5nIGZhY3RvciBvcgorICogd2hlbiB3ZSB3b3VsZCBiZSBhbGxvd2VkIHRvIHNlbmQgdGhlIHNwbGl0LWR1ZS10by1OYWdsZSBza2IgZnVsbHkuCiAgKi8KIHN0YXRpYyB1bnNpZ25lZCBpbnQgdGNwX21zc19zcGxpdF9wb2ludChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsCiAJCQkJCXVuc2lnbmVkIGludCBtc3Nfbm93LCB1bnNpZ25lZCBpbnQgY3duZCkKQEAgLTEwNDgsMTAgKzEwNTUsMTEgQEAKIAlpZiAobGlrZWx5KGN3bmRfbGVuIDw9IHdpbmRvdyAmJiBza2IgIT0gdGNwX3dyaXRlX3F1ZXVlX3RhaWwoc2spKSkKIAkJcmV0dXJuIGN3bmRfbGVuOwogCi0JaWYgKHNrYiA9PSB0Y3Bfd3JpdGVfcXVldWVfdGFpbChzaykgJiYgY3duZF9sZW4gPD0gc2tiLT5sZW4pCisJbmVlZGVkID0gbWluKHNrYi0+bGVuLCB3aW5kb3cpOworCisJaWYgKHNrYiA9PSB0Y3Bfd3JpdGVfcXVldWVfdGFpbChzaykgJiYgY3duZF9sZW4gPD0gbmVlZGVkKQogCQlyZXR1cm4gY3duZF9sZW47CiAKLQluZWVkZWQgPSBtaW4oc2tiLT5sZW4sIHdpbmRvdyk7CiAJcmV0dXJuIG5lZWRlZCAtIG5lZWRlZCAlIG1zc19ub3c7CiB9CiAKQEAgLTE4MDAsNiArMTgwOCw5IEBACiAJaWYgKCFsb3N0KQogCQlyZXR1cm47CiAKKwlpZiAodGNwX2lzX3Jlbm8odHApKQorCQl0Y3BfbGltaXRfcmVub19zYWNrZWQodHApOworCiAJdGNwX3ZlcmlmeV9sZWZ0X291dCh0cCk7CiAKIAkvKiBEb24ndCBtdWNrIHdpdGggdGhlIGNvbmdlc3Rpb24gd2luZG93IGhlcmUuCmRpZmYgLS1naXQgYS9uZXQvaXB2NC91ZHAuYyBiL25ldC9pcHY0L3VkcC5jCmluZGV4IDdlYTFiNjcuLjE3MDRjMTQgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3VkcC5jCisrKyBiL25ldC9pcHY0L3VkcC5jCkBAIC0xNTU2LDE0ICsxNTU2LDE0IEBACiAJX19hY3F1aXJlcyh1ZHBfaGFzaF9sb2NrKQogewogCXJlYWRfbG9jaygmdWRwX2hhc2hfbG9jayk7Ci0JcmV0dXJuICpwb3MgPyB1ZHBfZ2V0X2lkeChzZXEsICpwb3MtMSkgOiAodm9pZCAqKTE7CisJcmV0dXJuICpwb3MgPyB1ZHBfZ2V0X2lkeChzZXEsICpwb3MtMSkgOiBTRVFfU1RBUlRfVE9LRU47CiB9CiAKIHN0YXRpYyB2b2lkICp1ZHBfc2VxX25leHQoc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYsIGxvZmZfdCAqcG9zKQogewogCXN0cnVjdCBzb2NrICpzazsKIAotCWlmICh2ID09ICh2b2lkICopMSkKKwlpZiAodiA9PSBTRVFfU1RBUlRfVE9LRU4pCiAJCXNrID0gdWRwX2dldF9pZHgoc2VxLCAwKTsKIAllbHNlCiAJCXNrID0gdWRwX2dldF9uZXh0KHNlcSwgdik7CmRpZmYgLS1naXQgYS9uZXQvaXB2NC94ZnJtNF9tb2RlX2JlZXQuYyBiL25ldC9pcHY0L3hmcm00X21vZGVfYmVldC5jCmluZGV4IGI0NzAzMGIuLjljNzk4YWIgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3hmcm00X21vZGVfYmVldC5jCisrKyBiL25ldC9pcHY0L3hmcm00X21vZGVfYmVldC5jCkBAIC0zOSwxMyArMzksMTEgQEAKIHN0YXRpYyBpbnQgeGZybTRfYmVldF9vdXRwdXQoc3RydWN0IHhmcm1fc3RhdGUgKngsIHN0cnVjdCBza19idWZmICpza2IpCiB7CiAJc3RydWN0IGlwX2JlZXRfcGhkciAqcGg7Ci0Jc3RydWN0IGlwaGRyICppcGgsICp0b3BfaXBoOworCXN0cnVjdCBpcGhkciAqdG9wX2lwaDsKIAlpbnQgaGRybGVuLCBvcHRsZW47CiAKLQlpcGggPSBpcF9oZHIoc2tiKTsKLQogCWhkcmxlbiA9IDA7Ci0Jb3B0bGVuID0gaXBoLT5paGwgKiA0IC0gc2l6ZW9mKCppcGgpOworCW9wdGxlbiA9IFhGUk1fTU9ERV9TS0JfQ0Ioc2tiKS0+b3B0bGVuOwogCWlmICh1bmxpa2VseShvcHRsZW4pKQogCQloZHJsZW4gKz0gSVBWNF9CRUVUX1BITUFYTEVOIC0gKG9wdGxlbiAmIDQpOwogCkBAIC01MywxMSArNTEsMTIgQEAKIAkJCQkgICAgaGRybGVuKTsKIAlza2ItPm1hY19oZWFkZXIgPSBza2ItPm5ldHdvcmtfaGVhZGVyICsKIAkJCSAgb2Zmc2V0b2Yoc3RydWN0IGlwaGRyLCBwcm90b2NvbCk7Ci0Jc2tiLT50cmFuc3BvcnRfaGVhZGVyID0gc2tiLT5uZXR3b3JrX2hlYWRlciArIHNpemVvZigqaXBoKTsKKwlza2ItPnRyYW5zcG9ydF9oZWFkZXIgPSBza2ItPm5ldHdvcmtfaGVhZGVyICsgc2l6ZW9mKCp0b3BfaXBoKTsKIAogCXhmcm00X2JlZXRfbWFrZV9oZWFkZXIoc2tiKTsKIAotCXBoID0gKHN0cnVjdCBpcF9iZWV0X3BoZHIgKilfX3NrYl9wdWxsKHNrYiwgc2l6ZW9mKCppcGgpIC0gaGRybGVuKTsKKwlwaCA9IChzdHJ1Y3QgaXBfYmVldF9waGRyICopCisJCV9fc2tiX3B1bGwoc2tiLCBYRlJNX01PREVfU0tCX0NCKHNrYiktPmlobCAtIGhkcmxlbik7CiAKIAl0b3BfaXBoID0gaXBfaGRyKHNrYik7CiAKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3hmcm00X21vZGVfdHVubmVsLmMgYi9uZXQvaXB2NC94ZnJtNF9tb2RlX3R1bm5lbC5jCmluZGV4IDhkZWU2MTcuLjU4NGU2ZDcgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3hmcm00X21vZGVfdHVubmVsLmMKKysrIGIvbmV0L2lwdjQveGZybTRfbW9kZV90dW5uZWwuYwpAQCAtNDEsNyArNDEsNyBAQAogCXRvcF9pcGgtPmlobCA9IDU7CiAJdG9wX2lwaC0+dmVyc2lvbiA9IDQ7CiAKLQl0b3BfaXBoLT5wcm90b2NvbCA9IHgtPmlubmVyX21vZGUtPmFmaW5mby0+cHJvdG87CisJdG9wX2lwaC0+cHJvdG9jb2wgPSB4ZnJtX2FmMnByb3RvKHNrYi0+ZHN0LT5vcHMtPmZhbWlseSk7CiAKIAkvKiBEUyBkaXNjbG9zZWQgKi8KIAl0b3BfaXBoLT50b3MgPSBJTkVUX0VDTl9lbmNhcHN1bGF0ZShYRlJNX01PREVfU0tCX0NCKHNrYiktPnRvcywKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3hmcm00X291dHB1dC5jIGIvbmV0L2lwdjQveGZybTRfb3V0cHV0LmMKaW5kZXggZDVhNThhOC4uOGMzMTgwYSAxMDA2NDQKLS0tIGEvbmV0L2lwdjQveGZybTRfb3V0cHV0LmMKKysrIGIvbmV0L2lwdjQveGZybTRfb3V0cHV0LmMKQEAgLTU2LDcgKzU2LDcgQEAKIHsKIAlpbnQgZXJyOwogCi0JZXJyID0geC0+aW5uZXJfbW9kZS0+YWZpbmZvLT5leHRyYWN0X291dHB1dCh4LCBza2IpOworCWVyciA9IHhmcm1faW5uZXJfZXh0cmFjdF9vdXRwdXQoeCwgc2tiKTsKIAlpZiAoZXJyKQogCQlyZXR1cm4gZXJyOwogCmRpZmYgLS1naXQgYS9uZXQvaXB2NC94ZnJtNF9zdGF0ZS5jIGIvbmV0L2lwdjQveGZybTRfc3RhdGUuYwppbmRleCBmZGVlYmU2Li4wNzczNWVkIDEwMDY0NAotLS0gYS9uZXQvaXB2NC94ZnJtNF9zdGF0ZS5jCisrKyBiL25ldC9pcHY0L3hmcm00X3N0YXRlLmMKQEAgLTUyLDEwICs1MiwxMiBAQAogewogCXN0cnVjdCBpcGhkciAqaXBoID0gaXBfaGRyKHNrYik7CiAKKwlYRlJNX01PREVfU0tCX0NCKHNrYiktPmlobCA9IHNpemVvZigqaXBoKTsKIAlYRlJNX01PREVfU0tCX0NCKHNrYiktPmlkID0gaXBoLT5pZDsKIAlYRlJNX01PREVfU0tCX0NCKHNrYiktPmZyYWdfb2ZmID0gaXBoLT5mcmFnX29mZjsKIAlYRlJNX01PREVfU0tCX0NCKHNrYiktPnRvcyA9IGlwaC0+dG9zOwogCVhGUk1fTU9ERV9TS0JfQ0Ioc2tiKS0+dHRsID0gaXBoLT50dGw7CisJWEZSTV9NT0RFX1NLQl9DQihza2IpLT5vcHRsZW4gPSBpcGgtPmlobCAqIDQgLSBzaXplb2YoKmlwaCk7CiAJbWVtc2V0KFhGUk1fTU9ERV9TS0JfQ0Ioc2tiKS0+Zmxvd19sYmwsIDAsCiAJICAgICAgIHNpemVvZihYRlJNX01PREVfU0tCX0NCKHNrYiktPmZsb3dfbGJsKSk7CiAKZGlmZiAtLWdpdCBhL25ldC9pcHY2L0tjb25maWcgYi9uZXQvaXB2Ni9LY29uZmlnCmluZGV4IDU4MjE5ZGYuLjQ3MjYzZTQgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L0tjb25maWcKKysrIGIvbmV0L2lwdjYvS2NvbmZpZwpAQCAtMTc5LDExICsxNzksMTIgQEAKIAkgIFNheWluZyBNIGhlcmUgd2lsbCBwcm9kdWNlIGEgbW9kdWxlIGNhbGxlZCBzaXQua28uIElmIHVuc3VyZSwgc2F5IFkuCiAKIGNvbmZpZyBJUFY2X1RVTk5FTAotCXRyaXN0YXRlICJJUHY2OiBJUHY2LWluLUlQdjYgdHVubmVsIgorCXRyaXN0YXRlICJJUHY2OiBJUC1pbi1JUHY2IHR1bm5lbCAoUkZDMjQ3MykiCiAJc2VsZWN0IElORVQ2X1RVTk5FTAogCWRlcGVuZHMgb24gSVBWNgogCS0tLWhlbHAtLS0KLQkgIFN1cHBvcnQgZm9yIElQdjYtaW4tSVB2NiB0dW5uZWxzIGRlc2NyaWJlZCBpbiBSRkMgMjQ3My4KKwkgIFN1cHBvcnQgZm9yIElQdjYtaW4tSVB2NiBhbmQgSVB2NC1pbi1JUHY2IHR1bm5lbHMgZGVzY3JpYmVkIGluCisJICBSRkMgMjQ3My4KIAogCSAgSWYgdW5zdXJlLCBzYXkgTi4KIApkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvYWRkcmNvbmYuYyBiL25ldC9pcHY2L2FkZHJjb25mLmMKaW5kZXggMTAxZTBlNy4uZTA4OTU1YiAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvYWRkcmNvbmYuYworKysgYi9uZXQvaXB2Ni9hZGRyY29uZi5jCkBAIC0zNzEsMjUgKzM3MSwyNiBAQAogCSAqLwogCWluNl9kZXZfaG9sZChuZGV2KTsKIAorI2lmIGRlZmluZWQoQ09ORklHX0lQVjZfU0lUKSB8fCBkZWZpbmVkKENPTkZJR19JUFY2X1NJVF9NT0RVTEUpCisJaWYgKGRldi0+dHlwZSA9PSBBUlBIUkRfU0lUICYmIChkZXYtPnByaXZfZmxhZ3MgJiBJRkZfSVNBVEFQKSkgeworCQlwcmludGsoS0VSTl9JTkZPCisJCSAgICAgICAiJXM6IERpc2FibGVkIE11bHRpY2FzdCBSU1xuIiwKKwkJICAgICAgIGRldi0+bmFtZSk7CisJCW5kZXYtPmNuZi5ydHJfc29saWNpdHMgPSAwOworCX0KKyNlbmRpZgorCiAjaWZkZWYgQ09ORklHX0lQVjZfUFJJVkFDWQogCXNldHVwX3RpbWVyKCZuZGV2LT5yZWdlbl90aW1lciwgaXB2Nl9yZWdlbl9ybmRpZCwgKHVuc2lnbmVkIGxvbmcpbmRldik7CiAJaWYgKChkZXYtPmZsYWdzJklGRl9MT09QQkFDSykgfHwKIAkgICAgZGV2LT50eXBlID09IEFSUEhSRF9UVU5ORUwgfHwKLSNpZiBkZWZpbmVkKENPTkZJR19JUFY2X1NJVCkgfHwgZGVmaW5lZChDT05GSUdfSVBWNl9TSVRfTU9EVUxFKQorCSAgICBkZXYtPnR5cGUgPT0gQVJQSFJEX1RVTk5FTDYgfHwKIAkgICAgZGV2LT50eXBlID09IEFSUEhSRF9TSVQgfHwKLSNlbmRpZgogCSAgICBkZXYtPnR5cGUgPT0gQVJQSFJEX05PTkUpIHsKIAkJcHJpbnRrKEtFUk5fSU5GTwogCQkgICAgICAgIiVzOiBEaXNhYmxlZCBQcml2YWN5IEV4dGVuc2lvbnNcbiIsCiAJCSAgICAgICBkZXYtPm5hbWUpOwogCQluZGV2LT5jbmYudXNlX3RlbXBhZGRyID0gLTE7Ci0KLQkJaWYgKGRldi0+dHlwZSA9PSBBUlBIUkRfU0lUICYmIChkZXYtPnByaXZfZmxhZ3MgJiBJRkZfSVNBVEFQKSkgewotCQkJcHJpbnRrKEtFUk5fSU5GTwotCQkJICAgICAgICIlczogRGlzYWJsZWQgTXVsdGljYXN0IFJTXG4iLAotCQkJICAgICAgIGRldi0+bmFtZSk7Ci0JCQluZGV2LT5jbmYucnRyX3NvbGljaXRzID0gMDsKLQkJfQogCX0gZWxzZSB7CiAJCWluNl9kZXZfaG9sZChuZGV2KTsKIAkJaXB2Nl9yZWdlbl9ybmRpZCgodW5zaWduZWQgbG9uZykgbmRldik7CkBAIC03NzYsNiArNzc3LDcgQEAKIAlzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2ID0gaWZwLT5pZGV2OwogCXN0cnVjdCBpbjZfYWRkciBhZGRyLCAqdG1wYWRkcjsKIAl1bnNpZ25lZCBsb25nIHRtcF9wcmVmZXJlZF9sZnQsIHRtcF92YWxpZF9sZnQsIHRtcF9jc3RhbXAsIHRtcF90c3RhbXA7CisJdW5zaWduZWQgbG9uZyByZWdlbl9hZHZhbmNlOwogCWludCB0bXBfcGxlbjsKIAlpbnQgcmV0ID0gMDsKIAlpbnQgbWF4X2FkZHJlc3NlczsKQEAgLTgzNiw4ICs4MzgsMjMgQEAKIAl0bXBfdHN0YW1wID0gaWZwLT50c3RhbXA7CiAJc3Bpbl91bmxvY2tfYmgoJmlmcC0+bG9jayk7CiAKKwlyZWdlbl9hZHZhbmNlID0gaWRldi0+Y25mLnJlZ2VuX21heF9yZXRyeSAqCisJICAgICAgICAgICAgICAgIGlkZXYtPmNuZi5kYWRfdHJhbnNtaXRzICoKKwkgICAgICAgICAgICAgICAgaWRldi0+bmRfcGFybXMtPnJldHJhbnNfdGltZSAvIEhaOwogCXdyaXRlX3VubG9jaygmaWRldi0+bG9jayk7CiAKKwkvKiBBIHRlbXBvcmFyeSBhZGRyZXNzIGlzIGNyZWF0ZWQgb25seSBpZiB0aGlzIGNhbGN1bGF0ZWQgUHJlZmVycmVkCisJICogTGlmZXRpbWUgaXMgZ3JlYXRlciB0aGFuIFJFR0VOX0FEVkFOQ0UgdGltZSB1bml0cy4gIEluIHBhcnRpY3VsYXIsCisJICogYW4gaW1wbGVtZW50YXRpb24gbXVzdCBub3QgY3JlYXRlIGEgdGVtcG9yYXJ5IGFkZHJlc3Mgd2l0aCBhIHplcm8KKwkgKiBQcmVmZXJyZWQgTGlmZXRpbWUuCisJICovCisJaWYgKHRtcF9wcmVmZXJlZF9sZnQgPD0gcmVnZW5fYWR2YW5jZSkgeworCQlpbjZfaWZhX3B1dChpZnApOworCQlpbjZfZGV2X3B1dChpZGV2KTsKKwkJcmV0ID0gLTE7CisJCWdvdG8gb3V0OworCX0KKwogCWFkZHJfZmxhZ3MgPSBJRkFfRl9URU1QT1JBUlk7CiAJLyogc2V0IGluIGFkZHJjb25mX3ByZWZpeF9yY3YoKSAqLwogCWlmIChpZnAtPmZsYWdzICYgSUZBX0ZfT1BUSU1JU1RJQykKQEAgLTE4MzEsNiArMTg0OCw5IEBACiAJCQkJICogbGlmZXRpbWVzIG9mIGFuIGV4aXN0aW5nIHRlbXBvcmFyeSBhZGRyZXNzCiAJCQkJICogd2hlbiBwcm9jZXNzaW5nIGEgUHJlZml4IEluZm9ybWF0aW9uIE9wdGlvbi4KIAkJCQkgKi8KKwkJCQlpZiAoaWZwICE9IGlmdC0+aWZwdWIpCisJCQkJCWNvbnRpbnVlOworCiAJCQkJc3Bpbl9sb2NrKCZpZnQtPmxvY2spOwogCQkJCWZsYWdzID0gaWZ0LT5mbGFnczsKIAkJCQlpZiAoaWZ0LT52YWxpZF9sZnQgPiB2YWxpZF9sZnQgJiYKQEAgLTI0MzcsNyArMjQ1Nyw3IEBACiAKIAlBU1NFUlRfUlROTCgpOwogCi0JaWYgKGRldiA9PSBpbml0X25ldC5sb29wYmFja19kZXYgJiYgaG93ID09IDEpCisJaWYgKChkZXYtPmZsYWdzICYgSUZGX0xPT1BCQUNLKSAmJiBob3cgPT0gMSkKIAkJaG93ID0gMDsKIAogCXJ0Nl9pZmRvd24oZGV2KTsKQEAgLTI0NTAsNyArMjQ3MCw3IEBACiAJLyogU3RlcCAxOiByZW1vdmUgcmVmZXJlbmNlIHRvIGlwdjYgZGV2aWNlIGZyb20gcGFyZW50IGRldmljZS4KIAkJICAgRG8gbm90IGRldl9wdXQhCiAJICovCi0JaWYgKGhvdyA9PSAxKSB7CisJaWYgKGhvdykgewogCQlpZGV2LT5kZWFkID0gMTsKIAogCQkvKiBwcm90ZWN0ZWQgYnkgcnRubF9sb2NrICovCkBAIC0yNDgyLDEyICsyNTAyLDEyIEBACiAJd3JpdGVfbG9ja19iaCgmaWRldi0+bG9jayk7CiAKIAkvKiBTdGVwIDM6IGNsZWFyIGZsYWdzIGZvciBzdGF0ZWxlc3MgYWRkcmNvbmYgKi8KLQlpZiAoaG93ICE9IDEpCisJaWYgKCFob3cpCiAJCWlkZXYtPmlmX2ZsYWdzICY9IH4oSUZfUlNfU0VOVHxJRl9SQV9SQ1ZEfElGX1JFQURZKTsKIAogCS8qIFN0ZXAgNDogY2xlYXIgYWRkcmVzcyBsaXN0ICovCiAjaWZkZWYgQ09ORklHX0lQVjZfUFJJVkFDWQotCWlmIChob3cgPT0gMSAmJiBkZWxfdGltZXIoJmlkZXYtPnJlZ2VuX3RpbWVyKSkKKwlpZiAoaG93ICYmIGRlbF90aW1lcigmaWRldi0+cmVnZW5fdGltZXIpKQogCQlpbjZfZGV2X3B1dChpZGV2KTsKIAogCS8qIGNsZWFyIHRlbXBhZGRyIGxpc3QgKi8KQEAgLTI1MjQsNyArMjU0NCw3IEBACiAKIAkvKiBTdGVwIDU6IERpc2NhcmQgbXVsdGljYXN0IGxpc3QgKi8KIAotCWlmIChob3cgPT0gMSkKKwlpZiAoaG93KQogCQlpcHY2X21jX2Rlc3Ryb3lfZGV2KGlkZXYpOwogCWVsc2UKIAkJaXB2Nl9tY19kb3duKGlkZXYpOwpAQCAtMjUzMyw3ICsyNTUzLDcgQEAKIAogCS8qIFNob3QgdGhlIGRldmljZSAoaWYgdW5yZWdpc3RlcmVkKSAqLwogCi0JaWYgKGhvdyA9PSAxKSB7CisJaWYgKGhvdykgewogCQlhZGRyY29uZl9zeXNjdGxfdW5yZWdpc3RlcihpZGV2KTsKIAkJbmVpZ2hfcGFybXNfcmVsZWFzZSgmbmRfdGJsLCBpZGV2LT5uZF9wYXJtcyk7CiAJCW5laWdoX2lmZG93bigmbmRfdGJsLCBkZXYpOwpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvYW55Y2FzdC5jIGIvbmV0L2lwdjYvYW55Y2FzdC5jCmluZGV4IDljN2Y4M2YuLmU1ZjU2YzkgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L2FueWNhc3QuYworKysgYi9uZXQvaXB2Ni9hbnljYXN0LmMKQEAgLTMzNCw5ICszMzQsNyBAQAogCWlkZXYtPmFjX2xpc3QgPSBhY2E7CiAJd3JpdGVfdW5sb2NrX2JoKCZpZGV2LT5sb2NrKTsKIAotCWRzdF9ob2xkKCZydC0+dS5kc3QpOwotCWlmIChpcDZfaW5zX3J0KHJ0KSkKLQkJZHN0X3JlbGVhc2UoJnJ0LT51LmRzdCk7CisJaXA2X2luc19ydChydCk7CiAKIAlhZGRyY29uZl9qb2luX3NvbGljdChkZXYsICZhY2EtPmFjYV9hZGRyKTsKIApAQCAtMzc4LDEwICszNzYsNyBAQAogCWFkZHJjb25mX2xlYXZlX3NvbGljdChpZGV2LCAmYWNhLT5hY2FfYWRkcik7CiAKIAlkc3RfaG9sZCgmYWNhLT5hY2FfcnQtPnUuZHN0KTsKLQlpZiAoaXA2X2RlbF9ydChhY2EtPmFjYV9ydCkpCi0JCWRzdF9mcmVlKCZhY2EtPmFjYV9ydC0+dS5kc3QpOwotCWVsc2UKLQkJZHN0X3JlbGVhc2UoJmFjYS0+YWNhX3J0LT51LmRzdCk7CisJaXA2X2RlbF9ydChhY2EtPmFjYV9ydCk7CiAKIAlhY2FfcHV0KGFjYSk7CiAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9lc3A2LmMgYi9uZXQvaXB2Ni9lc3A2LmMKaW5kZXggMGVjMTQwMi4uYzZiYjRjNiAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvZXNwNi5jCisrKyBiL25ldC9pcHY2L2VzcDYuYwpAQCAtMjgyLDcgKzI4Miw3IEBACiAJc3RydWN0IHNjYXR0ZXJsaXN0ICpzZzsKIAlzdHJ1Y3Qgc2NhdHRlcmxpc3QgKmFzZzsKIAotCWlmICghcHNrYl9tYXlfcHVsbChza2IsIHNpemVvZigqZXNwaCkpKSB7CisJaWYgKCFwc2tiX21heV9wdWxsKHNrYiwgc2l6ZW9mKCplc3BoKSArIGNyeXB0b19hZWFkX2l2c2l6ZShhZWFkKSkpIHsKIAkJcmV0ID0gLUVJTlZBTDsKIAkJZ290byBvdXQ7CiAJfQpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvaWNtcC5jIGIvbmV0L2lwdjYvaWNtcC5jCmluZGV4IDEyMWQ1MTcuLjg5MzI4N2UgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L2ljbXAuYworKysgYi9uZXQvaXB2Ni9pY21wLmMKQEAgLTQzNiwyNCArNDM2LDI2IEBACiAJfQogCiAJaWYgKHhmcm1fZGVjb2RlX3Nlc3Npb25fcmV2ZXJzZShza2IsICZmbDIsIEFGX0lORVQ2KSkKLQkJZ290byBvdXQ7CisJCWdvdG8gcmVsb29rdXBfZmFpbGVkOwogCiAJaWYgKGlwNl9kc3RfbG9va3VwKHNrLCAmZHN0MiwgJmZsKSkKLQkJZ290byBvdXQ7CisJCWdvdG8gcmVsb29rdXBfZmFpbGVkOwogCiAJZXJyID0geGZybV9sb29rdXAoJmRzdDIsICZmbCwgc2ssIFhGUk1fTE9PS1VQX0lDTVApOwotCWlmIChlcnIgPT0gLUVOT0VOVCkgeworCXN3aXRjaCAoZXJyKSB7CisJY2FzZSAwOgorCQlkc3RfcmVsZWFzZShkc3QpOworCQlkc3QgPSBkc3QyOworCQlicmVhazsKKwljYXNlIC1FUEVSTToKKwkJZ290byBvdXRfZHN0X3JlbGVhc2U7CisJZGVmYXVsdDoKK3JlbG9va3VwX2ZhaWxlZDoKIAkJaWYgKCFkc3QpCiAJCQlnb3RvIG91dDsKLQkJZ290byByb3V0ZV9kb25lOworCQlicmVhazsKIAl9CiAKLQlkc3RfcmVsZWFzZShkc3QpOwotCWRzdCA9IGRzdDI7Ci0KLQlpZiAoZXJyKQotCQlnb3RvIG91dDsKLQogcm91dGVfZG9uZToKIAlpZiAoaXB2Nl9hZGRyX2lzX211bHRpY2FzdCgmZmwuZmw2X2RzdCkpCiAJCWhsaW1pdCA9IG5wLT5tY2FzdF9ob3BzOwpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvaXA2X2lucHV0LmMgYi9uZXQvaXB2Ni9pcDZfaW5wdXQuYwppbmRleCAxNzhhZWJjLi45OGFiNGY0IDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9pcDZfaW5wdXQuYworKysgYi9uZXQvaXB2Ni9pcDZfaW5wdXQuYwpAQCAtMjM5LDggKzIzOSw3IEBACiAJSVA2X0lOQ19TVEFUU19CSChpcDZfZHN0X2lkZXYoc2tiLT5kc3QpLCBJUFNUQVRTX01JQl9JTk1DQVNUUEtUUyk7CiAKIAloZHIgPSBpcHY2X2hkcihza2IpOwotCWRlbGl2ZXIgPSB1bmxpa2VseShza2ItPmRldi0+ZmxhZ3MgJiAoSUZGX1BST01JU0N8SUZGX0FMTE1VTFRJKSkgfHwKLQkgICAgaXB2Nl9jaGtfbWNhc3RfYWRkcihza2ItPmRldiwgJmhkci0+ZGFkZHIsIE5VTEwpOworCWRlbGl2ZXIgPSBpcHY2X2Noa19tY2FzdF9hZGRyKHNrYi0+ZGV2LCAmaGRyLT5kYWRkciwgTlVMTCk7CiAKIAkvKgogCSAqCUlQdjYgbXVsdGljYXN0IHJvdXRlciBtb2RlIGlzbnQgY3VycmVudGx5IHN1cHBvcnRlZC4KZGlmZiAtLWdpdCBhL25ldC9pcHY2L25kaXNjLmMgYi9uZXQvaXB2Ni9uZGlzYy5jCmluZGV4IDBkMzNhN2QuLjQ1MmEyYWMgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L25kaXNjLmMKKysrIGIvbmV0L2lwdjYvbmRpc2MuYwpAQCAtNjc2LDYgKzY3NiwyMCBAQAogCX0KIH0KIAorc3RhdGljIHN0cnVjdCBwbmVpZ2hfZW50cnkgKnBuZGlzY19jaGVja19yb3V0ZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKKwkJc3RydWN0IGluNl9hZGRyICphZGRyLCBpbnQgKmlzX3JvdXRlcikKK3sKKwlzdHJ1Y3QgcG5laWdoX2VudHJ5ICpuOworCisJcmVhZF9sb2NrX2JoKCZuZF90YmwubG9jayk7CisJbiA9IF9fcG5laWdoX2xvb2t1cCgmbmRfdGJsLCAmaW5pdF9uZXQsIGFkZHIsIGRldik7CisJaWYgKG4gIT0gTlVMTCkKKwkJKmlzX3JvdXRlciA9IChuLT5mbGFncyAmIE5URl9ST1VURVIpOworCXJlYWRfdW5sb2NrX2JoKCZuZF90YmwubG9jayk7CisKKwlyZXR1cm4gbjsKK30KKwogc3RhdGljIHZvaWQgbmRpc2NfcmVjdl9ucyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogewogCXN0cnVjdCBuZF9tc2cgKm1zZyA9IChzdHJ1Y3QgbmRfbXNnICopc2tiX3RyYW5zcG9ydF9oZWFkZXIoc2tiKTsKQEAgLTY5Miw3ICs3MDYsNyBAQAogCXN0cnVjdCBwbmVpZ2hfZW50cnkgKnBuZWlnaCA9IE5VTEw7CiAJaW50IGRhZCA9IGlwdjZfYWRkcl9hbnkoc2FkZHIpOwogCWludCBpbmM7Ci0JaW50IGlzX3JvdXRlcjsKKwlpbnQgaXNfcm91dGVyID0gMDsKIAogCWlmIChpcHY2X2FkZHJfaXNfbXVsdGljYXN0KCZtc2ctPnRhcmdldCkpIHsKIAkJTkRfUFJJTlRLMihLRVJOX1dBUk5JTkcKQEAgLTc5MCw4ICs4MDQsOCBAQAogCQlpZiAoaXB2Nl9jaGtfYWNhc3RfYWRkcihkZXYsICZtc2ctPnRhcmdldCkgfHwKIAkJICAgIChpZGV2LT5jbmYuZm9yd2FyZGluZyAmJgogCQkgICAgIChpcHY2X2RldmNvbmYucHJveHlfbmRwIHx8IGlkZXYtPmNuZi5wcm94eV9uZHApICYmCi0JCSAgICAgKHBuZWlnaCA9IHBuZWlnaF9sb29rdXAoJm5kX3RibCwgJmluaXRfbmV0LAotCQkJCQkgICAgICZtc2ctPnRhcmdldCwgZGV2LCAwKSkgIT0gTlVMTCkpIHsKKwkJICAgICAocG5laWdoID0gcG5kaXNjX2NoZWNrX3JvdXRlcihkZXYsICZtc2ctPnRhcmdldCwKKwkJCQkJCSAgJmlzX3JvdXRlcikpICE9IE5VTEwpKSB7CiAJCQlpZiAoIShORUlHSF9DQihza2IpLT5mbGFncyAmIExPQ0FMTFlfRU5RVUVVRUQpICYmCiAJCQkgICAgc2tiLT5wa3RfdHlwZSAhPSBQQUNLRVRfSE9TVCAmJgogCQkJICAgIGluYyAhPSAwICYmCkBAIC04MTIsNyArODI2LDcgQEAKIAkJCWdvdG8gb3V0OwogCX0KIAotCWlzX3JvdXRlciA9ICEhKHBuZWlnaCA/IHBuZWlnaC0+ZmxhZ3MgJiBOVEZfUk9VVEVSIDogaWRldi0+Y25mLmZvcndhcmRpbmcpOworCWlzX3JvdXRlciA9ICEhKHBuZWlnaCA/IGlzX3JvdXRlciA6IGlkZXYtPmNuZi5mb3J3YXJkaW5nKTsKIAogCWlmIChkYWQpIHsKIAkJc3RydWN0IGluNl9hZGRyIG1hZGRyOwpAQCAtMTQyMCw3ICsxNDM0LDYgQEAKIAl1OCAqb3B0OwogCWludCByZF9sZW47CiAJaW50IGVycjsKLQlpbnQgaGxlbjsKIAl1OCBoYV9idWZbTUFYX0FERFJfTEVOXSwgKmhhID0gTlVMTDsKIAogCWRldiA9IHNrYi0+ZGV2OwpAQCAtMTQ5MSw3ICsxNTA0LDYgQEAKIAkJcmV0dXJuOwogCX0KIAotCWhsZW4gPSAwOwogCiAJc2tiX3Jlc2VydmUoYnVmZiwgTExfUkVTRVJWRURfU1BBQ0UoZGV2KSk7CiAJaXA2X25kX2hkcihzaywgYnVmZiwgZGV2LCAmc2FkZHJfYnVmLCAmaXB2Nl9oZHIoc2tiKS0+c2FkZHIsCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2X3F1ZXVlLmMgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2X3F1ZXVlLmMKaW5kZXggY2MyZjlhZi4uOGQzNjZmNyAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNl9xdWV1ZS5jCisrKyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZfcXVldWUuYwpAQCAtNTkxLDExICs1OTEsOSBAQAogCX0KIAogI2lmZGVmIENPTkZJR19QUk9DX0ZTCi0JcHJvYyA9IGNyZWF0ZV9wcm9jX2VudHJ5KElQUV9QUk9DX0ZTX05BTUUsIDAsIGluaXRfbmV0LnByb2NfbmV0KTsKLQlpZiAocHJvYykgewotCQlwcm9jLT5vd25lciA9IFRISVNfTU9EVUxFOwotCQlwcm9jLT5wcm9jX2ZvcHMgPSAmaXA2X3F1ZXVlX3Byb2NfZm9wczsKLQl9IGVsc2UgeworCXByb2MgPSBwcm9jX2NyZWF0ZShJUFFfUFJPQ19GU19OQU1FLCAwLCBpbml0X25ldC5wcm9jX25ldCwKKwkJCSAgICZpcDZfcXVldWVfcHJvY19mb3BzKTsKKwlpZiAoIXByb2MpIHsKIAkJcHJpbnRrKEtFUk5fRVJSICJpcDZfcXVldWU6IGZhaWxlZCB0byBjcmVhdGUgcHJvYyBlbnRyeVxuIik7CiAJCWdvdG8gY2xlYW51cF9pcHFubDsKIAl9CmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3JlYXNtLmMgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3JlYXNtLmMKaW5kZXggMmEwZDY5OC4uMjRjMGQwMyAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19yZWFzbS5jCisrKyBiL25ldC9pcHY2L25ldGZpbHRlci9uZl9jb25udHJhY2tfcmVhc20uYwpAQCAtMTcxLDcgKzE3MSw5IEBACiAKIHN0YXRpYyB2b2lkIG5mX2N0X2ZyYWc2X2V2aWN0b3Iodm9pZCkKIHsKKwlsb2NhbF9iaF9kaXNhYmxlKCk7CiAJaW5ldF9mcmFnX2V2aWN0b3IoJm5mX2luaXRfZnJhZ3MsICZuZl9mcmFncyk7CisJbG9jYWxfYmhfZW5hYmxlKCk7CiB9CiAKIHN0YXRpYyB2b2lkIG5mX2N0X2ZyYWc2X2V4cGlyZSh1bnNpZ25lZCBsb25nIGRhdGEpCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9yYXcuYyBiL25ldC9pcHY2L3Jhdy5jCmluZGV4IDg4OTdjY2YuLjBhNmZiYzEgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L3Jhdy5jCisrKyBiL25ldC9pcHY2L3Jhdy5jCkBAIC0zNzIsOCArMzcyLDEwIEBACiAJcmVhZF9sb2NrKCZyYXdfdjZfaGFzaGluZm8ubG9jayk7CiAJc2sgPSBza19oZWFkKCZyYXdfdjZfaGFzaGluZm8uaHRbaGFzaF0pOwogCWlmIChzayAhPSBOVUxMKSB7Ci0JCXNhZGRyID0gJmlwdjZfaGRyKHNrYiktPnNhZGRyOwotCQlkYWRkciA9ICZpcHY2X2hkcihza2IpLT5kYWRkcjsKKwkJc3RydWN0IGlwdjZoZHIgKmhkciA9IChzdHJ1Y3QgaXB2NmhkciAqKSBza2ItPmRhdGE7CisKKwkJc2FkZHIgPSAmaGRyLT5zYWRkcjsKKwkJZGFkZHIgPSAmaGRyLT5kYWRkcjsKIAkJbmV0ID0gc2tiLT5kZXYtPm5kX25ldDsKIAogCQl3aGlsZSAoKHNrID0gX19yYXdfdjZfbG9va3VwKG5ldCwgc2ssIG5leHRoZHIsIHNhZGRyLCBkYWRkciwKZGlmZiAtLWdpdCBhL25ldC9pcHY2L3hmcm02X21vZGVfYmVldC5jIGIvbmV0L2lwdjYveGZybTZfbW9kZV9iZWV0LmMKaW5kZXggMDUyN2QxMS4uZDZjZTQwMCAxMDA2NDQKLS0tIGEvbmV0L2lwdjYveGZybTZfbW9kZV9iZWV0LmMKKysrIGIvbmV0L2lwdjYveGZybTZfbW9kZV9iZWV0LmMKQEAgLTQ1LDYgKzQ1LDcgQEAKIAlza2ItPm1hY19oZWFkZXIgPSBza2ItPm5ldHdvcmtfaGVhZGVyICsKIAkJCSAgb2Zmc2V0b2Yoc3RydWN0IGlwdjZoZHIsIG5leHRoZHIpOwogCXNrYi0+dHJhbnNwb3J0X2hlYWRlciA9IHNrYi0+bmV0d29ya19oZWFkZXIgKyBzaXplb2YoKnRvcF9pcGgpOworCV9fc2tiX3B1bGwoc2tiLCBYRlJNX01PREVfU0tCX0NCKHNrYiktPmlobCk7CiAKIAl4ZnJtNl9iZWV0X21ha2VfaGVhZGVyKHNrYik7CiAKZGlmZiAtLWdpdCBhL25ldC9pcHY2L3hmcm02X21vZGVfdHVubmVsLmMgYi9uZXQvaXB2Ni94ZnJtNl9tb2RlX3R1bm5lbC5jCmluZGV4IDBjNzQyZmEuLmUyMDUyOWIgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L3hmcm02X21vZGVfdHVubmVsLmMKKysrIGIvbmV0L2lwdjYveGZybTZfbW9kZV90dW5uZWwuYwpAQCAtNDUsNyArNDUsNyBAQAogCiAJbWVtY3B5KHRvcF9pcGgtPmZsb3dfbGJsLCBYRlJNX01PREVfU0tCX0NCKHNrYiktPmZsb3dfbGJsLAogCSAgICAgICBzaXplb2YodG9wX2lwaC0+Zmxvd19sYmwpKTsKLQl0b3BfaXBoLT5uZXh0aGRyID0geC0+aW5uZXJfbW9kZS0+YWZpbmZvLT5wcm90bzsKKwl0b3BfaXBoLT5uZXh0aGRyID0geGZybV9hZjJwcm90byhza2ItPmRzdC0+b3BzLT5mYW1pbHkpOwogCiAJZHNmaWVsZCA9IFhGUk1fTU9ERV9TS0JfQ0Ioc2tiKS0+dG9zOwogCWRzZmllbGQgPSBJTkVUX0VDTl9lbmNhcHN1bGF0ZShkc2ZpZWxkLCBkc2ZpZWxkKTsKZGlmZiAtLWdpdCBhL25ldC9pcHY2L3hmcm02X291dHB1dC5jIGIvbmV0L2lwdjYveGZybTZfb3V0cHV0LmMKaW5kZXggNzljY2ZiMC4uMGFmODIzYyAxMDA2NDQKLS0tIGEvbmV0L2lwdjYveGZybTZfb3V0cHV0LmMKKysrIGIvbmV0L2lwdjYveGZybTZfb3V0cHV0LmMKQEAgLTYyLDcgKzYyLDcgQEAKIHsKIAlpbnQgZXJyOwogCi0JZXJyID0geC0+aW5uZXJfbW9kZS0+YWZpbmZvLT5leHRyYWN0X291dHB1dCh4LCBza2IpOworCWVyciA9IHhmcm1faW5uZXJfZXh0cmFjdF9vdXRwdXQoeCwgc2tiKTsKIAlpZiAoZXJyKQogCQlyZXR1cm4gZXJyOwogCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni94ZnJtNl9zdGF0ZS5jIGIvbmV0L2lwdjYveGZybTZfc3RhdGUuYwppbmRleCBkYzgxN2UwLi5mZjFlMWRiIDEwMDY0NAotLS0gYS9uZXQvaXB2Ni94ZnJtNl9zdGF0ZS5jCisrKyBiL25ldC9pcHY2L3hmcm02X3N0YXRlLmMKQEAgLTE3NCwxMCArMTc0LDEyIEBACiB7CiAJc3RydWN0IGlwdjZoZHIgKmlwaCA9IGlwdjZfaGRyKHNrYik7CiAKKwlYRlJNX01PREVfU0tCX0NCKHNrYiktPmlobCA9IHNpemVvZigqaXBoKTsKIAlYRlJNX01PREVfU0tCX0NCKHNrYiktPmlkID0gMDsKIAlYRlJNX01PREVfU0tCX0NCKHNrYiktPmZyYWdfb2ZmID0gaHRvbnMoSVBfREYpOwogCVhGUk1fTU9ERV9TS0JfQ0Ioc2tiKS0+dG9zID0gaXB2Nl9nZXRfZHNmaWVsZChpcGgpOwogCVhGUk1fTU9ERV9TS0JfQ0Ioc2tiKS0+dHRsID0gaXBoLT5ob3BfbGltaXQ7CisJWEZSTV9NT0RFX1NLQl9DQihza2IpLT5vcHRsZW4gPSAwOwogCW1lbWNweShYRlJNX01PREVfU0tCX0NCKHNrYiktPmZsb3dfbGJsLCBpcGgtPmZsb3dfbGJsLAogCSAgICAgICBzaXplb2YoWEZSTV9NT0RFX1NLQl9DQihza2IpLT5mbG93X2xibCkpOwogCmRpZmYgLS1naXQgYS9uZXQvaXJkYS9pcm5ldC9pcm5ldC5oIGIvbmV0L2lyZGEvaXJuZXQvaXJuZXQuaAppbmRleCBiYzJlMTVjLi43ODczYzM5IDEwMDY0NAotLS0gYS9uZXQvaXJkYS9pcm5ldC9pcm5ldC5oCisrKyBiL25ldC9pcmRhL2lybmV0L2lybmV0LmgKQEAgLTQwNSw3ICs0MDUsNyBAQAogICAvKiAicHBwZCIgaW50ZXJhY3QgZGlyZWN0bHkgd2l0aCB1cyBvbiBhIC9kZXYvIGZpbGUgKi8KICAgc3RydWN0IGZpbGUgKgkJZmlsZTsJCS8qIEZpbGUgZGVzY3JpcHRvciBvZiB0aGlzIGluc3RhbmNlICovCiAgIC8qIFRUWSBzdHVmZiAtIHRvIGtlZXAgInBwcGQiIGhhcHB5ICovCi0gIHN0cnVjdCB0ZXJtaW9zCXRlcm1pb3M7CS8qIFZhcmlvdXMgdHR5IGZsYWdzICovCisgIHN0cnVjdCBrdGVybWlvcwl0ZXJtaW9zOwkvKiBWYXJpb3VzIHR0eSBmbGFncyAqLwogICAvKiBTdHVmZiBmb3IgdGhlIGNvbnRyb2wgY2hhbm5lbCAqLwogICBpbnQJCQlldmVudF9pbmRleDsJLyogTGFzdCByZWFkIGluIHRoZSBldmVudCBsb2cgKi8KIApkaWZmIC0tZ2l0IGEvbmV0L2tleS9hZl9rZXkuYyBiL25ldC9rZXkvYWZfa2V5LmMKaW5kZXggOGI1ZjQ4Ni4uZTllZjlhZiAxMDA2NDQKLS0tIGEvbmV0L2tleS9hZl9rZXkuYworKysgYi9uZXQva2V5L2FmX2tleS5jCkBAIC0xMjE5LDcgKzEyMTksNyBAQAogCQl4LT5zZWwucHJlZml4bGVuX3MgPSBhZGRyLT5zYWRiX2FkZHJlc3NfcHJlZml4bGVuOwogCX0KIAotCWlmICgheC0+c2VsLmZhbWlseSkKKwlpZiAoeC0+cHJvcHMubW9kZSA9PSBYRlJNX01PREVfVFJBTlNQT1JUKQogCQl4LT5zZWwuZmFtaWx5ID0geC0+cHJvcHMuZmFtaWx5OwogCiAJaWYgKGV4dF9oZHJzW1NBREJfWF9FWFRfTkFUX1RfVFlQRS0xXSkgewpkaWZmIC0tZ2l0IGEvbmV0L2xsYy9hZl9sbGMuYyBiL25ldC9sbGMvYWZfbGxjLmMKaW5kZXggNDZjZjk2Mi4uOGM1MGViNCAxMDA2NDQKLS0tIGEvbmV0L2xsYy9hZl9sbGMuYworKysgYi9uZXQvbGxjL2FmX2xsYy5jCkBAIC0xNTUsNiArMTU1LDkgQEAKIAlzdHJ1Y3Qgc29jayAqc2s7CiAJaW50IHJjID0gLUVTT0NLVE5PU1VQUE9SVDsKIAorCWlmICghY2FwYWJsZShDQVBfTkVUX1JBVykpCisJCXJldHVybiAtRVBFUk07CisKIAlpZiAobmV0ICE9ICZpbml0X25ldCkKIAkJcmV0dXJuIC1FQUZOT1NVUFBPUlQ7CiAKZGlmZiAtLWdpdCBhL25ldC9sbGMvbGxjX2NfYWMuYyBiL25ldC9sbGMvbGxjX2NfYWMuYwppbmRleCA4NjAxNDBjLi43MWEwMDIyIDEwMDY0NAotLS0gYS9uZXQvbGxjL2xsY19jX2FjLmMKKysrIGIvbmV0L2xsYy9sbGNfY19hYy5jCkBAIC0xOTgsNyArMTk4LDcgQEAKIHsKIAlpbnQgcmMgPSAtRU5PQlVGUzsKIAlzdHJ1Y3QgbGxjX3NvY2sgKmxsYyA9IGxsY19zayhzayk7Ci0Jc3RydWN0IHNrX2J1ZmYgKm5za2IgPSBsbGNfYWxsb2NfZnJhbWUoc2ssIGxsYy0+ZGV2KTsKKwlzdHJ1Y3Qgc2tfYnVmZiAqbnNrYiA9IGxsY19hbGxvY19mcmFtZShzaywgbGxjLT5kZXYsIExMQ19QRFVfVFlQRV9VLCAwKTsKIAogCWlmIChuc2tiKSB7CiAJCXN0cnVjdCBsbGNfc2FwICpzYXAgPSBsbGMtPnNhcDsKQEAgLTIyMyw3ICsyMjMsNyBAQAogewogCWludCByYyA9IC1FTk9CVUZTOwogCXN0cnVjdCBsbGNfc29jayAqbGxjID0gbGxjX3NrKHNrKTsKLQlzdHJ1Y3Qgc2tfYnVmZiAqbnNrYiA9IGxsY19hbGxvY19mcmFtZShzaywgbGxjLT5kZXYpOworCXN0cnVjdCBza19idWZmICpuc2tiID0gbGxjX2FsbG9jX2ZyYW1lKHNrLCBsbGMtPmRldiwgTExDX1BEVV9UWVBFX1UsIDApOwogCiAJaWYgKG5za2IpIHsKIAkJc3RydWN0IGxsY19zYXAgKnNhcCA9IGxsYy0+c2FwOwpAQCAtMjQ5LDcgKzI0OSw3IEBACiB7CiAJaW50IHJjID0gLUVOT0JVRlM7CiAJc3RydWN0IGxsY19zb2NrICpsbGMgPSBsbGNfc2soc2spOwotCXN0cnVjdCBza19idWZmICpuc2tiID0gbGxjX2FsbG9jX2ZyYW1lKHNrLCBsbGMtPmRldik7CisJc3RydWN0IHNrX2J1ZmYgKm5za2IgPSBsbGNfYWxsb2NfZnJhbWUoc2ssIGxsYy0+ZGV2LCBMTENfUERVX1RZUEVfVSwgMCk7CiAKIAlpZiAobnNrYikgewogCQlzdHJ1Y3QgbGxjX3NhcCAqc2FwID0gbGxjLT5zYXA7CkBAIC0yODIsNyArMjgyLDggQEAKIAkJbGxjX3BkdV9kZWNvZGVfcGZfYml0KHNrYiwgJmZfYml0KTsKIAllbHNlCiAJCWZfYml0ID0gMDsKLQluc2tiID0gbGxjX2FsbG9jX2ZyYW1lKHNrLCBsbGMtPmRldik7CisJbnNrYiA9IGxsY19hbGxvY19mcmFtZShzaywgbGxjLT5kZXYsIExMQ19QRFVfVFlQRV9VLAorCQkJICAgICAgIHNpemVvZihzdHJ1Y3QgbGxjX2ZybXJfaW5mbykpOwogCWlmIChuc2tiKSB7CiAJCXN0cnVjdCBsbGNfc2FwICpzYXAgPSBsbGMtPnNhcDsKIApAQCAtMzA2LDcgKzMwNyw4IEBACiB7CiAJaW50IHJjID0gLUVOT0JVRlM7CiAJc3RydWN0IGxsY19zb2NrICpsbGMgPSBsbGNfc2soc2spOwotCXN0cnVjdCBza19idWZmICpuc2tiID0gbGxjX2FsbG9jX2ZyYW1lKHNrLCBsbGMtPmRldik7CisJc3RydWN0IHNrX2J1ZmYgKm5za2IgPSBsbGNfYWxsb2NfZnJhbWUoc2ssIGxsYy0+ZGV2LCBMTENfUERVX1RZUEVfVSwKKwkJCQkJICAgICAgIHNpemVvZihzdHJ1Y3QgbGxjX2ZybXJfaW5mbykpOwogCiAJaWYgKG5za2IpIHsKIAkJc3RydWN0IGxsY19zYXAgKnNhcCA9IGxsYy0+c2FwOwpAQCAtMzM2LDcgKzMzOCw4IEBACiAJc3RydWN0IGxsY19zb2NrICpsbGMgPSBsbGNfc2soc2spOwogCiAJbGxjX3BkdV9kZWNvZGVfcGZfYml0KHNrYiwgJmZfYml0KTsKLQluc2tiID0gbGxjX2FsbG9jX2ZyYW1lKHNrLCBsbGMtPmRldik7CisJbnNrYiA9IGxsY19hbGxvY19mcmFtZShzaywgbGxjLT5kZXYsIExMQ19QRFVfVFlQRV9VLAorCQkJICAgICAgIHNpemVvZihzdHJ1Y3QgbGxjX2ZybXJfaW5mbykpOwogCWlmIChuc2tiKSB7CiAJCXN0cnVjdCBsbGNfc2FwICpzYXAgPSBsbGMtPnNhcDsKIAkJc3RydWN0IGxsY19wZHVfc24gKnBkdSA9IGxsY19wZHVfc25faGRyKHNrYik7CkBAIC00MjQsNyArNDI3LDcgQEAKIAlzdHJ1Y3QgbGxjX3BkdV9zbiAqcGR1ID0gbGxjX3BkdV9zbl9oZHIoc2tiKTsKIAlpbnQgcmMgPSAtRU5PQlVGUzsKIAlzdHJ1Y3QgbGxjX3NvY2sgKmxsYyA9IGxsY19zayhzayk7Ci0Jc3RydWN0IHNrX2J1ZmYgKm5za2IgPSBsbGNfYWxsb2NfZnJhbWUoc2ssIGxsYy0+ZGV2KTsKKwlzdHJ1Y3Qgc2tfYnVmZiAqbnNrYiA9IGxsY19hbGxvY19mcmFtZShzaywgbGxjLT5kZXYsIExMQ19QRFVfVFlQRV9VLCAwKTsKIAogCWlmIChuc2tiKSB7CiAJCXN0cnVjdCBsbGNfc2FwICpzYXAgPSBsbGMtPnNhcDsKQEAgLTQ1OSw3ICs0NjIsNyBAQAogewogCWludCByYyA9IC1FTk9CVUZTOwogCXN0cnVjdCBsbGNfc29jayAqbGxjID0gbGxjX3NrKHNrKTsKLQlzdHJ1Y3Qgc2tfYnVmZiAqbnNrYiA9IGxsY19hbGxvY19mcmFtZShzaywgbGxjLT5kZXYpOworCXN0cnVjdCBza19idWZmICpuc2tiID0gbGxjX2FsbG9jX2ZyYW1lKHNrLCBsbGMtPmRldiwgTExDX1BEVV9UWVBFX1MsIDApOwogCiAJaWYgKG5za2IpIHsKIAkJc3RydWN0IGxsY19zYXAgKnNhcCA9IGxsYy0+c2FwOwpAQCAtNDgzLDcgKzQ4Niw3IEBACiB7CiAJaW50IHJjID0gLUVOT0JVRlM7CiAJc3RydWN0IGxsY19zb2NrICpsbGMgPSBsbGNfc2soc2spOwotCXN0cnVjdCBza19idWZmICpuc2tiID0gbGxjX2FsbG9jX2ZyYW1lKHNrLCBsbGMtPmRldik7CisJc3RydWN0IHNrX2J1ZmYgKm5za2IgPSBsbGNfYWxsb2NfZnJhbWUoc2ssIGxsYy0+ZGV2LCBMTENfUERVX1RZUEVfUywgMCk7CiAKIAlpZiAobnNrYikgewogCQlzdHJ1Y3QgbGxjX3NhcCAqc2FwID0gbGxjLT5zYXA7CkBAIC01MDcsNyArNTEwLDcgQEAKIHsKIAlpbnQgcmMgPSAtRU5PQlVGUzsKIAlzdHJ1Y3QgbGxjX3NvY2sgKmxsYyA9IGxsY19zayhzayk7Ci0Jc3RydWN0IHNrX2J1ZmYgKm5za2IgPSBsbGNfYWxsb2NfZnJhbWUoc2ssIGxsYy0+ZGV2KTsKKwlzdHJ1Y3Qgc2tfYnVmZiAqbnNrYiA9IGxsY19hbGxvY19mcmFtZShzaywgbGxjLT5kZXYsIExMQ19QRFVfVFlQRV9TLCAwKTsKIAogCWlmIChuc2tiKSB7CiAJCXN0cnVjdCBsbGNfc2FwICpzYXAgPSBsbGMtPnNhcDsKQEAgLTUzMSw3ICs1MzQsNyBAQAogewogCWludCByYyA9IC1FTk9CVUZTOwogCXN0cnVjdCBsbGNfc29jayAqbGxjID0gbGxjX3NrKHNrKTsKLQlzdHJ1Y3Qgc2tfYnVmZiAqbnNrYiA9IGxsY19hbGxvY19mcmFtZShzaywgbGxjLT5kZXYpOworCXN0cnVjdCBza19idWZmICpuc2tiID0gbGxjX2FsbG9jX2ZyYW1lKHNrLCBsbGMtPmRldiwgTExDX1BEVV9UWVBFX1MsIDApOwogCiAJaWYgKG5za2IpIHsKIAkJc3RydWN0IGxsY19zYXAgKnNhcCA9IGxsYy0+c2FwOwpAQCAtNTU1LDcgKzU1OCw3IEBACiB7CiAJaW50IHJjID0gLUVOT0JVRlM7CiAJc3RydWN0IGxsY19zb2NrICpsbGMgPSBsbGNfc2soc2spOwotCXN0cnVjdCBza19idWZmICpuc2tiID0gbGxjX2FsbG9jX2ZyYW1lKHNrLCBsbGMtPmRldik7CisJc3RydWN0IHNrX2J1ZmYgKm5za2IgPSBsbGNfYWxsb2NfZnJhbWUoc2ssIGxsYy0+ZGV2LCBMTENfUERVX1RZUEVfUywgMCk7CiAKIAlpZiAobnNrYikgewogCQlzdHJ1Y3QgbGxjX3NhcCAqc2FwID0gbGxjLT5zYXA7CkBAIC01NzksNyArNTgyLDcgQEAKIHsKIAlpbnQgcmMgPSAtRU5PQlVGUzsKIAlzdHJ1Y3QgbGxjX3NvY2sgKmxsYyA9IGxsY19zayhzayk7Ci0Jc3RydWN0IHNrX2J1ZmYgKm5za2IgPSBsbGNfYWxsb2NfZnJhbWUoc2ssIGxsYy0+ZGV2KTsKKwlzdHJ1Y3Qgc2tfYnVmZiAqbnNrYiA9IGxsY19hbGxvY19mcmFtZShzaywgbGxjLT5kZXYsIExMQ19QRFVfVFlQRV9TLCAwKTsKIAogCWlmIChuc2tiKSB7CiAJCXN0cnVjdCBsbGNfc2FwICpzYXAgPSBsbGMtPnNhcDsKQEAgLTYxNSw3ICs2MTgsNyBAQAogewogCWludCByYyA9IC1FTk9CVUZTOwogCXN0cnVjdCBsbGNfc29jayAqbGxjID0gbGxjX3NrKHNrKTsKLQlzdHJ1Y3Qgc2tfYnVmZiAqbnNrYiA9IGxsY19hbGxvY19mcmFtZShzaywgbGxjLT5kZXYpOworCXN0cnVjdCBza19idWZmICpuc2tiID0gbGxjX2FsbG9jX2ZyYW1lKHNrLCBsbGMtPmRldiwgTExDX1BEVV9UWVBFX1MsIDApOwogCiAJaWYgKG5za2IpIHsKIAkJc3RydWN0IGxsY19zYXAgKnNhcCA9IGxsYy0+c2FwOwpAQCAtNjM5LDcgKzY0Miw3IEBACiB7CiAJaW50IHJjID0gLUVOT0JVRlM7CiAJc3RydWN0IGxsY19zb2NrICpsbGMgPSBsbGNfc2soc2spOwotCXN0cnVjdCBza19idWZmICpuc2tiID0gbGxjX2FsbG9jX2ZyYW1lKHNrLCBsbGMtPmRldik7CisJc3RydWN0IHNrX2J1ZmYgKm5za2IgPSBsbGNfYWxsb2NfZnJhbWUoc2ssIGxsYy0+ZGV2LCBMTENfUERVX1RZUEVfUywgMCk7CiAKIAlpZiAobnNrYikgewogCQlzdHJ1Y3QgbGxjX3NhcCAqc2FwID0gbGxjLT5zYXA7CkBAIC02NjMsNyArNjY2LDcgQEAKIHsKIAlpbnQgcmMgPSAtRU5PQlVGUzsKIAlzdHJ1Y3QgbGxjX3NvY2sgKmxsYyA9IGxsY19zayhzayk7Ci0Jc3RydWN0IHNrX2J1ZmYgKm5za2IgPSBsbGNfYWxsb2NfZnJhbWUoc2ssIGxsYy0+ZGV2KTsKKwlzdHJ1Y3Qgc2tfYnVmZiAqbnNrYiA9IGxsY19hbGxvY19mcmFtZShzaywgbGxjLT5kZXYsIExMQ19QRFVfVFlQRV9TLCAwKTsKIAogCWlmIChuc2tiKSB7CiAJCXN0cnVjdCBsbGNfc2FwICpzYXAgPSBsbGMtPnNhcDsKQEAgLTY4OCw3ICs2OTEsNyBAQAogewogCWludCByYyA9IC1FTk9CVUZTOwogCXN0cnVjdCBsbGNfc29jayAqbGxjID0gbGxjX3NrKHNrKTsKLQlzdHJ1Y3Qgc2tfYnVmZiAqbnNrYiA9IGxsY19hbGxvY19mcmFtZShzaywgbGxjLT5kZXYpOworCXN0cnVjdCBza19idWZmICpuc2tiID0gbGxjX2FsbG9jX2ZyYW1lKHNrLCBsbGMtPmRldiwgTExDX1BEVV9UWVBFX1MsIDApOwogCiAJaWYgKG5za2IpIHsKIAkJc3RydWN0IGxsY19zYXAgKnNhcCA9IGxsYy0+c2FwOwpAQCAtNzEyLDcgKzcxNSw3IEBACiB7CiAJaW50IHJjID0gLUVOT0JVRlM7CiAJc3RydWN0IGxsY19zb2NrICpsbGMgPSBsbGNfc2soc2spOwotCXN0cnVjdCBza19idWZmICpuc2tiID0gbGxjX2FsbG9jX2ZyYW1lKHNrLCBsbGMtPmRldik7CisJc3RydWN0IHNrX2J1ZmYgKm5za2IgPSBsbGNfYWxsb2NfZnJhbWUoc2ssIGxsYy0+ZGV2LCBMTENfUERVX1RZUEVfUywgMCk7CiAKIAlpZiAobnNrYikgewogCQlzdHJ1Y3QgbGxjX3NhcCAqc2FwID0gbGxjLT5zYXA7CkBAIC03MzYsNyArNzM5LDcgQEAKIHsKIAlpbnQgcmMgPSAtRU5PQlVGUzsKIAlzdHJ1Y3QgbGxjX3NvY2sgKmxsYyA9IGxsY19zayhzayk7Ci0Jc3RydWN0IHNrX2J1ZmYgKm5za2IgPSBsbGNfYWxsb2NfZnJhbWUoc2ssIGxsYy0+ZGV2KTsKKwlzdHJ1Y3Qgc2tfYnVmZiAqbnNrYiA9IGxsY19hbGxvY19mcmFtZShzaywgbGxjLT5kZXYsIExMQ19QRFVfVFlQRV9TLCAwKTsKIAogCWlmIChuc2tiKSB7CiAJCXN0cnVjdCBsbGNfc2FwICpzYXAgPSBsbGMtPnNhcDsKQEAgLTc3MCw3ICs3NzMsNyBAQAogewogCWludCByYyA9IC1FTk9CVUZTOwogCXN0cnVjdCBsbGNfc29jayAqbGxjID0gbGxjX3NrKHNrKTsKLQlzdHJ1Y3Qgc2tfYnVmZiAqbnNrYiA9IGxsY19hbGxvY19mcmFtZShzaywgbGxjLT5kZXYpOworCXN0cnVjdCBza19idWZmICpuc2tiID0gbGxjX2FsbG9jX2ZyYW1lKHNrLCBsbGMtPmRldiwgTExDX1BEVV9UWVBFX1UsIDApOwogCiAJaWYgKG5za2IpIHsKIAkJc3RydWN0IGxsY19zYXAgKnNhcCA9IGxsYy0+c2FwOwpAQCAtNzk5LDcgKzgwMiw3IEBACiAJdTggZl9iaXQ7CiAJaW50IHJjID0gLUVOT0JVRlM7CiAJc3RydWN0IGxsY19zb2NrICpsbGMgPSBsbGNfc2soc2spOwotCXN0cnVjdCBza19idWZmICpuc2tiID0gbGxjX2FsbG9jX2ZyYW1lKHNrLCBsbGMtPmRldik7CisJc3RydWN0IHNrX2J1ZmYgKm5za2IgPSBsbGNfYWxsb2NfZnJhbWUoc2ssIGxsYy0+ZGV2LCBMTENfUERVX1RZUEVfVSwgMCk7CiAKIAlsbGNfcGR1X2RlY29kZV9wZl9iaXQoc2tiLCAmZl9iaXQpOwogCWlmIChuc2tiKSB7CkBAIC05NTYsNyArOTU5LDcgQEAKIHsKIAlpbnQgcmMgPSAtRU5PQlVGUzsKIAlzdHJ1Y3QgbGxjX3NvY2sgKmxsYyA9IGxsY19zayhzayk7Ci0Jc3RydWN0IHNrX2J1ZmYgKm5za2IgPSBsbGNfYWxsb2NfZnJhbWUoc2ssIGxsYy0+ZGV2KTsKKwlzdHJ1Y3Qgc2tfYnVmZiAqbnNrYiA9IGxsY19hbGxvY19mcmFtZShzaywgbGxjLT5kZXYsIExMQ19QRFVfVFlQRV9TLCAwKTsKIAogCWlmIChuc2tiKSB7CiAJCXN0cnVjdCBsbGNfc2FwICpzYXAgPSBsbGMtPnNhcDsKZGlmZiAtLWdpdCBhL25ldC9sbGMvbGxjX2NvcmUuYyBiL25ldC9sbGMvbGxjX2NvcmUuYwppbmRleCAyNDhiNTkwLi41MGQ1YjEwIDEwMDY0NAotLS0gYS9uZXQvbGxjL2xsY19jb3JlLmMKKysrIGIvbmV0L2xsYy9sbGNfY29yZS5jCkBAIC0yNSw4ICsyNSw2IEBACiBMSVNUX0hFQUQobGxjX3NhcF9saXN0KTsKIERFRklORV9SV0xPQ0sobGxjX3NhcF9saXN0X2xvY2spOwogCi11bnNpZ25lZCBjaGFyIGxsY19zdGF0aW9uX21hY19zYVtFVEhfQUxFTl07Ci0KIC8qKgogICoJbGxjX3NhcF9hbGxvYyAtIGFsbG9jYXRlcyBhbmQgaW5pdGlhbGl6ZXMgc2FwLgogICoKQEAgLTM3LDggKzM1LDggQEAKIAlzdHJ1Y3QgbGxjX3NhcCAqc2FwID0ga3phbGxvYyhzaXplb2YoKnNhcCksIEdGUF9BVE9NSUMpOwogCiAJaWYgKHNhcCkgeworCQkvKiBzYXAtPmxhZGRyLm1hYyAtIGxlYXZlIGFzIGEgbnVsbCwgaXQncyBmaWxsZWQgYnkgYmluZCAqLwogCQlzYXAtPnN0YXRlID0gTExDX1NBUF9TVEFURV9BQ1RJVkU7Ci0JCW1lbWNweShzYXAtPmxhZGRyLm1hYywgbGxjX3N0YXRpb25fbWFjX3NhLCBFVEhfQUxFTik7CiAJCXJ3bG9ja19pbml0KCZzYXAtPnNrX2xpc3QubG9jayk7CiAJCWF0b21pY19zZXQoJnNhcC0+cmVmY250LCAxKTsKIAl9CkBAIC0xNjcsMTAgKzE2NSw2IEBACiAJaWYgKGRldiAhPSBOVUxMKQogCQlkZXYgPSBuZXh0X25ldF9kZXZpY2UoZGV2KTsKIAotCWlmIChkZXYgIT0gTlVMTCkKLQkJbWVtY3B5KGxsY19zdGF0aW9uX21hY19zYSwgZGV2LT5kZXZfYWRkciwgRVRIX0FMRU4pOwotCWVsc2UKLQkJbWVtc2V0KGxsY19zdGF0aW9uX21hY19zYSwgMCwgRVRIX0FMRU4pOwogCWRldl9hZGRfcGFjaygmbGxjX3BhY2tldF90eXBlKTsKIAlkZXZfYWRkX3BhY2soJmxsY190cl9wYWNrZXRfdHlwZSk7CiAJcmV0dXJuIDA7CkBAIC0xODUsNyArMTc5LDYgQEAKIG1vZHVsZV9pbml0KGxsY19pbml0KTsKIG1vZHVsZV9leGl0KGxsY19leGl0KTsKIAotRVhQT1JUX1NZTUJPTChsbGNfc3RhdGlvbl9tYWNfc2EpOwogRVhQT1JUX1NZTUJPTChsbGNfc2FwX2xpc3QpOwogRVhQT1JUX1NZTUJPTChsbGNfc2FwX2xpc3RfbG9jayk7CiBFWFBPUlRfU1lNQk9MKGxsY19zYXBfZmluZCk7CmRpZmYgLS1naXQgYS9uZXQvbGxjL2xsY19pbnB1dC5jIGIvbmV0L2xsYy9sbGNfaW5wdXQuYwppbmRleCBjNDBjOWIyLi5iZmQyNTY3IDEwMDY0NAotLS0gYS9uZXQvbGxjL2xsY19pbnB1dC5jCisrKyBiL25ldC9sbGMvbGxjX2lucHV0LmMKQEAgLTExNyw4ICsxMTcsMTIgQEAKIAlza2JfcHVsbChza2IsIGxsY19sZW4pOwogCWlmIChza2ItPnByb3RvY29sID09IGh0b25zKEVUSF9QXzgwMl8yKSkgewogCQlfX2JlMTYgcGR1bGVuID0gZXRoX2hkcihza2IpLT5oX3Byb3RvOwotCQl1MTYgZGF0YV9zaXplID0gbnRvaHMocGR1bGVuKSAtIGxsY19sZW47CisJCXMzMiBkYXRhX3NpemUgPSBudG9ocyhwZHVsZW4pIC0gbGxjX2xlbjsKIAorCQlpZiAoZGF0YV9zaXplIDwgMCB8fAorCQkgICAgKChza2JfdGFpbF9wb2ludGVyKHNrYikgLQorCQkgICAgICAodTggKilwZHUpIC0gbGxjX2xlbikgPCBkYXRhX3NpemUpCisJCQlyZXR1cm4gMDsKIAkJaWYgKHVubGlrZWx5KHBza2JfdHJpbV9yY3N1bShza2IsIGRhdGFfc2l6ZSkpKQogCQkJcmV0dXJuIDA7CiAJfQpkaWZmIC0tZ2l0IGEvbmV0L2xsYy9sbGNfcGR1LmMgYi9uZXQvbGxjL2xsY19wZHUuYwppbmRleCBmYTgzMjQzLi4yZTZjYjc5IDEwMDY0NAotLS0gYS9uZXQvbGxjL2xsY19wZHUuYworKysgYi9uZXQvbGxjL2xsY19wZHUuYwpAQCAtMjQxLDcgKzI0MSw3IEBACiAJRlJNUl9JTkZPX1NFVF9QRFVfSU5GT18yTE9OR19JTkQoZnJtcl9pbmZvLCB2enl4dyk7CiAJRlJNUl9JTkZPX1NFVF9QRFVfSU5WQUxJRF9Ocl9JTkQoZnJtcl9pbmZvLCB2enl4dyk7CiAJRlJNUl9JTkZPX1NFVF9QRFVfSU5WQUxJRF9Oc19JTkQoZnJtcl9pbmZvLCB2enl4dyk7Ci0Jc2tiX3B1dChza2IsIDUpOworCXNrYl9wdXQoc2tiLCBzaXplb2Yoc3RydWN0IGxsY19mcm1yX2luZm8pKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9uZXQvbGxjL2xsY19zX2FjLmMgYi9uZXQvbGxjL2xsY19zX2FjLmMKaW5kZXggYWMzZDkzYi4uYTk0YmQ1NiAxMDA2NDQKLS0tIGEvbmV0L2xsYy9sbGNfc19hYy5jCisrKyBiL25ldC9sbGMvbGxjX3NfYWMuYwpAQCAtMTAzLDcgKzEwMyw4IEBACiAJbGxjX3BkdV9kZWNvZGVfc2Eoc2tiLCBtYWNfZGEpOwogCWxsY19wZHVfZGVjb2RlX2RhKHNrYiwgbWFjX3NhKTsKIAlsbGNfcGR1X2RlY29kZV9zc2FwKHNrYiwgJmRzYXApOwotCW5za2IgPSBsbGNfYWxsb2NfZnJhbWUoTlVMTCwgc2tiLT5kZXYpOworCW5za2IgPSBsbGNfYWxsb2NfZnJhbWUoTlVMTCwgc2tiLT5kZXYsIExMQ19QRFVfVFlQRV9VLAorCQkJICAgICAgIHNpemVvZihzdHJ1Y3QgbGxjX3hpZF9pbmZvKSk7CiAJaWYgKCFuc2tiKQogCQlnb3RvIG91dDsKIAlsbGNfcGR1X2hlYWRlcl9pbml0KG5za2IsIExMQ19QRFVfVFlQRV9VLCBzYXAtPmxhZGRyLmxzYXAsIGRzYXAsCkBAIC0xNDQsMTEgKzE0NSwxNSBAQAogCXU4IG1hY19kYVtFVEhfQUxFTl0sIG1hY19zYVtFVEhfQUxFTl0sIGRzYXA7CiAJc3RydWN0IHNrX2J1ZmYgKm5za2I7CiAJaW50IHJjID0gMTsKKwl1MzIgZGF0YV9zaXplOwogCiAJbGxjX3BkdV9kZWNvZGVfc2Eoc2tiLCBtYWNfZGEpOwogCWxsY19wZHVfZGVjb2RlX2RhKHNrYiwgbWFjX3NhKTsKIAlsbGNfcGR1X2RlY29kZV9zc2FwKHNrYiwgJmRzYXApOwotCW5za2IgPSBsbGNfYWxsb2NfZnJhbWUoTlVMTCwgc2tiLT5kZXYpOworCisJLyogVGhlIHRlc3QgcmVxdWVzdCBjb21tYW5kIGlzIHR5cGUgVSAobGxjX2xlbiA9IDMpICovCisJZGF0YV9zaXplID0gbnRvaHMoZXRoX2hkcihza2IpLT5oX3Byb3RvKSAtIDM7CisJbnNrYiA9IGxsY19hbGxvY19mcmFtZShOVUxMLCBza2ItPmRldiwgTExDX1BEVV9UWVBFX1UsIGRhdGFfc2l6ZSk7CiAJaWYgKCFuc2tiKQogCQlnb3RvIG91dDsKIAlsbGNfcGR1X2hlYWRlcl9pbml0KG5za2IsIExMQ19QRFVfVFlQRV9VLCBzYXAtPmxhZGRyLmxzYXAsIGRzYXAsCmRpZmYgLS1naXQgYS9uZXQvbGxjL2xsY19zYXAuYyBiL25ldC9sbGMvbGxjX3NhcC5jCmluZGV4IDI1MjUxNjUuLmUyZGRkZTcgMTAwNjQ0Ci0tLSBhL25ldC9sbGMvbGxjX3NhcC5jCisrKyBiL25ldC9sbGMvbGxjX3NhcC5jCkBAIC0yNCwyMCArMjQsNDEgQEAKICNpbmNsdWRlIDxuZXQvdGNwX3N0YXRlcy5oPgogI2luY2x1ZGUgPGxpbnV4L2xsYy5oPgogCitzdGF0aWMgaW50IGxsY19tYWNfaGVhZGVyX2xlbih1bnNpZ25lZCBzaG9ydCBkZXZ0eXBlKQoreworCXN3aXRjaCAoZGV2dHlwZSkgeworCWNhc2UgQVJQSFJEX0VUSEVSOgorCWNhc2UgQVJQSFJEX0xPT1BCQUNLOgorCQlyZXR1cm4gc2l6ZW9mKHN0cnVjdCBldGhoZHIpOworI2lmZGVmIENPTkZJR19UUgorCWNhc2UgQVJQSFJEX0lFRUU4MDJfVFI6CisJCXJldHVybiBzaXplb2Yoc3RydWN0IHRyaF9oZHIpOworI2VuZGlmCisJfQorCXJldHVybiAwOworfQorCiAvKioKICAqCWxsY19hbGxvY19mcmFtZSAtIGFsbG9jYXRlcyBza19idWZmIGZvciBmcmFtZQogICoJQGRldjogbmV0d29yayBkZXZpY2UgdGhpcyBza2Igd2lsbCBiZSBzZW50IG92ZXIKKyAqCUB0eXBlOiBwZHUgdHlwZSB0byBhbGxvY2F0ZQorICoJQGRhdGFfc2l6ZTogZGF0YSBzaXplIHRvIGFsbG9jYXRlCiAgKgogICoJQWxsb2NhdGVzIGFuIHNrX2J1ZmYgZm9yIGZyYW1lIGFuZCBpbml0aWFsaXplcyBza19idWZmIGZpZWxkcy4KICAqCVJldHVybnMgYWxsb2NhdGVkIHNrYiBvciAlTlVMTCB3aGVuIG91dCBvZiBtZW1vcnkuCiAgKi8KLXN0cnVjdCBza19idWZmICpsbGNfYWxsb2NfZnJhbWUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQorc3RydWN0IHNrX2J1ZmYgKmxsY19hbGxvY19mcmFtZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCisJCQkJdTggdHlwZSwgdTMyIGRhdGFfc2l6ZSkKIHsKLQlzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gYWxsb2Nfc2tiKDEyOCwgR0ZQX0FUT01JQyk7CisJaW50IGhsZW4gPSB0eXBlID09IExMQ19QRFVfVFlQRV9VID8gMyA6IDQ7CisJc3RydWN0IHNrX2J1ZmYgKnNrYjsKKworCWhsZW4gKz0gbGxjX21hY19oZWFkZXJfbGVuKGRldi0+dHlwZSk7CisJc2tiID0gYWxsb2Nfc2tiKGhsZW4gKyBkYXRhX3NpemUsIEdGUF9BVE9NSUMpOwogCiAJaWYgKHNrYikgewogCQlza2JfcmVzZXRfbWFjX2hlYWRlcihza2IpOwotCQlza2JfcmVzZXJ2ZShza2IsIDUwKTsKKwkJc2tiX3Jlc2VydmUoc2tiLCBobGVuKTsKIAkJc2tiX3Jlc2V0X25ldHdvcmtfaGVhZGVyKHNrYik7CiAJCXNrYl9yZXNldF90cmFuc3BvcnRfaGVhZGVyKHNrYik7CiAJCXNrYi0+cHJvdG9jb2wgPSBodG9ucyhFVEhfUF84MDJfMik7CmRpZmYgLS1naXQgYS9uZXQvbGxjL2xsY19zdGF0aW9uLmMgYi9uZXQvbGxjL2xsY19zdGF0aW9uLmMKaW5kZXggNmYyZWEyMC4uODNkYTEzMyAxMDA2NDQKLS0tIGEvbmV0L2xsYy9sbGNfc3RhdGlvbi5jCisrKyBiL25ldC9sbGMvbGxjX3N0YXRpb24uYwpAQCAtMjUzLDEzICsyNTMsMTQgQEAKIHN0YXRpYyBpbnQgbGxjX3N0YXRpb25fYWNfc2VuZF9udWxsX2RzYXBfeGlkX2Moc3RydWN0IHNrX2J1ZmYgKnNrYikKIHsKIAlpbnQgcmMgPSAxOwotCXN0cnVjdCBza19idWZmICpuc2tiID0gbGxjX2FsbG9jX2ZyYW1lKE5VTEwsIHNrYi0+ZGV2KTsKKwlzdHJ1Y3Qgc2tfYnVmZiAqbnNrYiA9IGxsY19hbGxvY19mcmFtZShOVUxMLCBza2ItPmRldiwgTExDX1BEVV9UWVBFX1UsCisJCQkJCSAgICAgICBzaXplb2Yoc3RydWN0IGxsY194aWRfaW5mbykpOwogCiAJaWYgKCFuc2tiKQogCQlnb3RvIG91dDsKIAlsbGNfcGR1X2hlYWRlcl9pbml0KG5za2IsIExMQ19QRFVfVFlQRV9VLCAwLCAwLCBMTENfUERVX0NNRCk7CiAJbGxjX3BkdV9pbml0X2FzX3hpZF9jbWQobnNrYiwgTExDX1hJRF9OVUxMX0NMQVNTXzIsIDEyNyk7Ci0JcmMgPSBsbGNfbWFjX2hkcl9pbml0KG5za2IsIGxsY19zdGF0aW9uX21hY19zYSwgbGxjX3N0YXRpb25fbWFjX3NhKTsKKwlyYyA9IGxsY19tYWNfaGRyX2luaXQobnNrYiwgc2tiLT5kZXYtPmRldl9hZGRyLCBza2ItPmRldi0+ZGV2X2FkZHIpOwogCWlmICh1bmxpa2VseShyYykpCiAJCWdvdG8gZnJlZTsKIAlsbGNfc3RhdGlvbl9zZW5kX3BkdShuc2tiKTsKQEAgLTI3NCw3ICsyNzUsOCBAQAogewogCXU4IG1hY19kYVtFVEhfQUxFTl0sIGRzYXA7CiAJaW50IHJjID0gMTsKLQlzdHJ1Y3Qgc2tfYnVmZiogbnNrYiA9IGxsY19hbGxvY19mcmFtZShOVUxMLCBza2ItPmRldik7CisJc3RydWN0IHNrX2J1ZmYgKm5za2IgPSBsbGNfYWxsb2NfZnJhbWUoTlVMTCwgc2tiLT5kZXYsIExMQ19QRFVfVFlQRV9VLAorCQkJCQkgICAgICAgc2l6ZW9mKHN0cnVjdCBsbGNfeGlkX2luZm8pKTsKIAogCWlmICghbnNrYikKIAkJZ290byBvdXQ7CkBAIC0yODMsNyArMjg1LDcgQEAKIAlsbGNfcGR1X2RlY29kZV9zc2FwKHNrYiwgJmRzYXApOwogCWxsY19wZHVfaGVhZGVyX2luaXQobnNrYiwgTExDX1BEVV9UWVBFX1UsIDAsIGRzYXAsIExMQ19QRFVfUlNQKTsKIAlsbGNfcGR1X2luaXRfYXNfeGlkX3JzcChuc2tiLCBMTENfWElEX05VTExfQ0xBU1NfMiwgMTI3KTsKLQlyYyA9IGxsY19tYWNfaGRyX2luaXQobnNrYiwgbGxjX3N0YXRpb25fbWFjX3NhLCBtYWNfZGEpOworCXJjID0gbGxjX21hY19oZHJfaW5pdChuc2tiLCBza2ItPmRldi0+ZGV2X2FkZHIsIG1hY19kYSk7CiAJaWYgKHVubGlrZWx5KHJjKSkKIAkJZ290byBmcmVlOwogCWxsY19zdGF0aW9uX3NlbmRfcGR1KG5za2IpOwpAQCAtMjk4LDcgKzMwMCwxMiBAQAogewogCXU4IG1hY19kYVtFVEhfQUxFTl0sIGRzYXA7CiAJaW50IHJjID0gMTsKLQlzdHJ1Y3Qgc2tfYnVmZiAqbnNrYiA9IGxsY19hbGxvY19mcmFtZShOVUxMLCBza2ItPmRldik7CisJdTMyIGRhdGFfc2l6ZTsKKwlzdHJ1Y3Qgc2tfYnVmZiAqbnNrYjsKKworCS8qIFRoZSB0ZXN0IHJlcXVlc3QgY29tbWFuZCBpcyB0eXBlIFUgKGxsY19sZW4gPSAzKSAqLworCWRhdGFfc2l6ZSA9IG50b2hzKGV0aF9oZHIoc2tiKS0+aF9wcm90bykgLSAzOworCW5za2IgPSBsbGNfYWxsb2NfZnJhbWUoTlVMTCwgc2tiLT5kZXYsIExMQ19QRFVfVFlQRV9VLCBkYXRhX3NpemUpOwogCiAJaWYgKCFuc2tiKQogCQlnb3RvIG91dDsKQEAgLTMwNyw3ICszMTQsNyBAQAogCWxsY19wZHVfZGVjb2RlX3NzYXAoc2tiLCAmZHNhcCk7CiAJbGxjX3BkdV9oZWFkZXJfaW5pdChuc2tiLCBMTENfUERVX1RZUEVfVSwgMCwgZHNhcCwgTExDX1BEVV9SU1ApOwogCWxsY19wZHVfaW5pdF9hc190ZXN0X3JzcChuc2tiLCBza2IpOwotCXJjID0gbGxjX21hY19oZHJfaW5pdChuc2tiLCBsbGNfc3RhdGlvbl9tYWNfc2EsIG1hY19kYSk7CisJcmMgPSBsbGNfbWFjX2hkcl9pbml0KG5za2IsIHNrYi0+ZGV2LT5kZXZfYWRkciwgbWFjX2RhKTsKIAlpZiAodW5saWtlbHkocmMpKQogCQlnb3RvIGZyZWU7CiAJbGxjX3N0YXRpb25fc2VuZF9wZHUobnNrYik7CmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvaWVlZTgwMjExLmMgYi9uZXQvbWFjODAyMTEvaWVlZTgwMjExLmMKaW5kZXggMjhiY2RmOS4uOGU1ODYzOSAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL2llZWU4MDIxMS5jCisrKyBiL25ldC9tYWM4MDIxMS9pZWVlODAyMTEuYwpAQCAtMjg2LDYgKzI4NiwxOCBAQAogCWlmIChuZWVkX2h3X3JlY29uZmlnKQogCQlpZWVlODAyMTFfaHdfY29uZmlnKGxvY2FsKTsKIAorCS8qCisJICogaWVlZTgwMjExX3N0YV93b3JrIGlzIGRpc2FibGVkIHdoaWxlIG5ldHdvcmsgaW50ZXJmYWNlCisJICogaXMgZG93bi4gVGhlcmVmb3JlLCBzb21lIGNvbmZpZ3VyYXRpb24gY2hhbmdlcyBtYXkgbm90CisJICogeWV0IGJlIGVmZmVjdGl2ZS4gVHJpZ2dlciBleGVjdXRpb24gb2YgaWVlZTgwMjExX3N0YV93b3JrCisJICogdG8gZml4IHRoaXMuCisJICovCisJaWYoc2RhdGEtPnZpZi50eXBlID09IElFRUU4MDIxMV9JRl9UWVBFX1NUQSB8fAorCSAgIHNkYXRhLT52aWYudHlwZSA9PSBJRUVFODAyMTFfSUZfVFlQRV9JQlNTKSB7CisJCXN0cnVjdCBpZWVlODAyMTFfaWZfc3RhICppZnN0YSA9ICZzZGF0YS0+dS5zdGE7CisJCXF1ZXVlX3dvcmsobG9jYWwtPmh3LndvcmtxdWV1ZSwgJmlmc3RhLT53b3JrKTsKKwl9CisKIAluZXRpZl9zdGFydF9xdWV1ZShkZXYpOwogCiAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvaWVlZTgwMjExX3N0YS5jIGIvbmV0L21hYzgwMjExL2llZWU4MDIxMV9zdGEuYwppbmRleCA5YWVlZDUzLi5jMTcwNjg1IDEwMDY0NAotLS0gYS9uZXQvbWFjODAyMTEvaWVlZTgwMjExX3N0YS5jCisrKyBiL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfc3RhLmMKQEAgLTMxMiwxNCArMzEyLDEyIEBACiAJfQogfQogCi0KLXN0YXRpYyB1MzIgaWVlZTgwMjExX2hhbmRsZV9lcnBfaWUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsCi0JCQkJICAgdTggZXJwX3ZhbHVlKQorc3RhdGljIHUzMiBpZWVlODAyMTFfaGFuZGxlX3Byb3RlY3RfcHJlYW1iKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLAorCQkJCQkgICBib29sIHVzZV9wcm90ZWN0aW9uLAorCQkJCQkgICBib29sIHVzZV9zaG9ydF9wcmVhbWJsZSkKIHsKIAlzdHJ1Y3QgaWVlZTgwMjExX2Jzc19jb25mICpic3NfY29uZiA9ICZzZGF0YS0+YnNzX2NvbmY7CiAJc3RydWN0IGllZWU4MDIxMV9pZl9zdGEgKmlmc3RhID0gJnNkYXRhLT51LnN0YTsKLQlib29sIHVzZV9wcm90ZWN0aW9uID0gKGVycF92YWx1ZSAmIFdMQU5fRVJQX1VTRV9QUk9URUNUSU9OKSAhPSAwOwotCWJvb2wgcHJlYW1ibGVfbW9kZSA9IChlcnBfdmFsdWUgJiBXTEFOX0VSUF9CQVJLRVJfUFJFQU1CTEUpICE9IDA7CiAJREVDTEFSRV9NQUNfQlVGKG1hYyk7CiAJdTMyIGNoYW5nZWQgPSAwOwogCkBAIC0zMzUsMjIgKzMzMyw0NyBAQAogCQljaGFuZ2VkIHw9IEJTU19DSEFOR0VEX0VSUF9DVFNfUFJPVDsKIAl9CiAKLQlpZiAocHJlYW1ibGVfbW9kZSAhPSBic3NfY29uZi0+dXNlX3Nob3J0X3ByZWFtYmxlKSB7CisJaWYgKHVzZV9zaG9ydF9wcmVhbWJsZSAhPSBic3NfY29uZi0+dXNlX3Nob3J0X3ByZWFtYmxlKSB7CiAJCWlmIChuZXRfcmF0ZWxpbWl0KCkpIHsKIAkJCXByaW50ayhLRVJOX0RFQlVHICIlczogc3dpdGNoZWQgdG8gJXMgYmFya2VyIHByZWFtYmxlIgogCQkJICAgICAgICIgKEJTU0lEPSVzKVxuIiwKIAkJCSAgICAgICBzZGF0YS0+ZGV2LT5uYW1lLAotCQkJICAgICAgIChwcmVhbWJsZV9tb2RlID09IFdMQU5fRVJQX1BSRUFNQkxFX1NIT1JUKSA/Ci0JCQkJCSJzaG9ydCIgOiAibG9uZyIsCisJCQkgICAgICAgdXNlX3Nob3J0X3ByZWFtYmxlID8gInNob3J0IiA6ICJsb25nIiwKIAkJCSAgICAgICBwcmludF9tYWMobWFjLCBpZnN0YS0+YnNzaWQpKTsKIAkJfQotCQlic3NfY29uZi0+dXNlX3Nob3J0X3ByZWFtYmxlID0gcHJlYW1ibGVfbW9kZTsKKwkJYnNzX2NvbmYtPnVzZV9zaG9ydF9wcmVhbWJsZSA9IHVzZV9zaG9ydF9wcmVhbWJsZTsKIAkJY2hhbmdlZCB8PSBCU1NfQ0hBTkdFRF9FUlBfUFJFQU1CTEU7CiAJfQogCiAJcmV0dXJuIGNoYW5nZWQ7CiB9CiAKK3N0YXRpYyB1MzIgaWVlZTgwMjExX2hhbmRsZV9lcnBfaWUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsCisJCQkJICAgdTggZXJwX3ZhbHVlKQoreworCWJvb2wgdXNlX3Byb3RlY3Rpb24gPSAoZXJwX3ZhbHVlICYgV0xBTl9FUlBfVVNFX1BST1RFQ1RJT04pICE9IDA7CisJYm9vbCB1c2Vfc2hvcnRfcHJlYW1ibGUgPSAoZXJwX3ZhbHVlICYgV0xBTl9FUlBfQkFSS0VSX1BSRUFNQkxFKSA9PSAwOworCisJcmV0dXJuIGllZWU4MDIxMV9oYW5kbGVfcHJvdGVjdF9wcmVhbWIoc2RhdGEsCisJCQl1c2VfcHJvdGVjdGlvbiwgdXNlX3Nob3J0X3ByZWFtYmxlKTsKK30KKworc3RhdGljIHUzMiBpZWVlODAyMTFfaGFuZGxlX2Jzc19jYXBhYmlsaXR5KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLAorCQkJCQkgICBzdHJ1Y3QgaWVlZTgwMjExX3N0YV9ic3MgKmJzcykKK3sKKwl1MzIgY2hhbmdlZCA9IDA7CisKKwlpZiAoYnNzLT5oYXNfZXJwX3ZhbHVlKQorCQljaGFuZ2VkIHw9IGllZWU4MDIxMV9oYW5kbGVfZXJwX2llKHNkYXRhLCBic3MtPmVycF92YWx1ZSk7CisJZWxzZSB7CisJCXUxNiBjYXBhYiA9IGJzcy0+Y2FwYWJpbGl0eTsKKwkJY2hhbmdlZCB8PSBpZWVlODAyMTFfaGFuZGxlX3Byb3RlY3RfcHJlYW1iKHNkYXRhLCBmYWxzZSwKKwkJCQkoY2FwYWIgJiBXTEFOX0NBUEFCSUxJVFlfU0hPUlRfUFJFQU1CTEUpICE9IDApOworCX0KKworCXJldHVybiBjaGFuZ2VkOworfQorCiBpbnQgaWVlZTgwMjExX2h0X2NhcF9pZV90b19odF9pbmZvKHN0cnVjdCBpZWVlODAyMTFfaHRfY2FwICpodF9jYXBfaWUsCiAJCQkJICAgc3RydWN0IGllZWU4MDIxMV9odF9pbmZvICpodF9pbmZvKQogewpAQCAtNDY5LDkgKzQ5Miw3IEBACiAJCQkJCSAgIGxvY2FsLT5ody5jb25mLmNoYW5uZWwsCiAJCQkJCSAgIGlmc3RhLT5zc2lkLCBpZnN0YS0+c3NpZF9sZW4pOwogCQlpZiAoYnNzKSB7Ci0JCQlpZiAoYnNzLT5oYXNfZXJwX3ZhbHVlKQotCQkJCWNoYW5nZWQgfD0gaWVlZTgwMjExX2hhbmRsZV9lcnBfaWUoCi0JCQkJCQlzZGF0YSwgYnNzLT5lcnBfdmFsdWUpOworCQkJY2hhbmdlZCB8PSBpZWVlODAyMTFfaGFuZGxlX2Jzc19jYXBhYmlsaXR5KHNkYXRhLCBic3MpOwogCQkJaWVlZTgwMjExX3J4X2Jzc19wdXQoZGV2LCBic3MpOwogCQl9CiAKQEAgLTIxMTcsNiArMjEzOCwxMSBAQAogCiAJaWYgKGVsZW1zLmVycF9pbmZvICYmIGVsZW1zLmVycF9pbmZvX2xlbiA+PSAxKQogCQljaGFuZ2VkIHw9IGllZWU4MDIxMV9oYW5kbGVfZXJwX2llKHNkYXRhLCBlbGVtcy5lcnBfaW5mb1swXSk7CisJZWxzZSB7CisJCXUxNiBjYXBhYiA9IGxlMTZfdG9fY3B1KG1nbXQtPnUuYmVhY29uLmNhcGFiX2luZm8pOworCQljaGFuZ2VkIHw9IGllZWU4MDIxMV9oYW5kbGVfcHJvdGVjdF9wcmVhbWIoc2RhdGEsIGZhbHNlLAorCQkJCShjYXBhYiAmIFdMQU5fQ0FQQUJJTElUWV9TSE9SVF9QUkVBTUJMRSkgIT0gMCk7CisJfQogCiAJaWYgKGVsZW1zLmh0X2NhcF9lbGVtICYmIGVsZW1zLmh0X2luZm9fZWxlbSAmJgogCSAgICBlbGVtcy53bW1fcGFyYW0gJiYgbG9jYWwtPm9wcy0+Y29uZl9odCAmJgpkaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3J4LmMgYi9uZXQvbWFjODAyMTEvcnguYwppbmRleCA1MzU0MDdkLi5hOGE0MGFiIDEwMDY0NAotLS0gYS9uZXQvbWFjODAyMTEvcnguYworKysgYi9uZXQvbWFjODAyMTEvcnguYwpAQCAtMTA1MCwxMiArMTA1MCw5IEBACiAJaWYgKHVubGlrZWx5KCEocngtPmZjICYgSUVFRTgwMjExX0ZDVExfUFJPVEVDVEVEKSAmJgogCQkgICAgIChyeC0+ZmMgJiBJRUVFODAyMTFfRkNUTF9GVFlQRSkgPT0gSUVFRTgwMjExX0ZUWVBFX0RBVEEgJiYKIAkJICAgICAocngtPmZjICYgSUVFRTgwMjExX0ZDVExfU1RZUEUpICE9IElFRUU4MDIxMV9TVFlQRV9OVUxMRlVOQyAmJgotCQkgICAgIChyeC0+a2V5IHx8IHJ4LT5zZGF0YS0+ZHJvcF91bmVuY3J5cHRlZCkpKSB7Ci0JCWlmIChuZXRfcmF0ZWxpbWl0KCkpCi0JCQlwcmludGsoS0VSTl9ERUJVRyAiJXM6IFJYIG5vbi1XRVAgZnJhbWUsIGJ1dCBleHBlY3RlZCAiCi0JCQkgICAgICAgImVuY3J5cHRpb25cbiIsIHJ4LT5kZXYtPm5hbWUpOworCQkgICAgIChyeC0+a2V5IHx8IHJ4LT5zZGF0YS0+ZHJvcF91bmVuY3J5cHRlZCkpKQogCQlyZXR1cm4gLUVBQ0NFUzsKLQl9CisKIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYwppbmRleCBlMDZiZjAwLi42ODRlYzljIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYworKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYwpAQCAtMzgxLDcgKzM4MSw3IEBACiAJaWYgKG5mX2N0X2V4cGVjdF9jb3VudCA+PSBuZl9jdF9leHBlY3RfbWF4KSB7CiAJCWlmIChuZXRfcmF0ZWxpbWl0KCkpCiAJCQlwcmludGsoS0VSTl9XQVJOSU5HCi0JCQkgICAgICAgIm5mX2Nvbm50cmFjazogZXhwZWN0YXRpb24gdGFibGUgZnVsbCIpOworCQkJICAgICAgICJuZl9jb25udHJhY2s6IGV4cGVjdGF0aW9uIHRhYmxlIGZ1bGxcbiIpOwogCQlyZXQgPSAtRU1GSUxFOwogCQlnb3RvIG91dDsKIAl9CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHRlbmQuYyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jCmluZGV4IDhiOWJlMWUuLjJiZDk5NjMgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jCisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jCkBAIC0xOSwxNCArMTksNiBAQAogc3RhdGljIHN0cnVjdCBuZl9jdF9leHRfdHlwZSAqbmZfY3RfZXh0X3R5cGVzW05GX0NUX0VYVF9OVU1dOwogc3RhdGljIERFRklORV9NVVRFWChuZl9jdF9leHRfdHlwZV9tdXRleCk7CiAKLS8qIEhvcnJpYmxlIHRyaWNrIHRvIGZpZ3VyZSBvdXQgc21hbGxlc3QgYW1vdW50IHdvcnRoIGttYWxsb2NpbmcuICovCi0jZGVmaW5lIENBQ0hFKHgpICh4KSArIDAgKgotZW51bSB7Ci0JTkZfQ1RfRVhUX01JTl9TSVpFID0KLSNpbmNsdWRlIDxsaW51eC9rbWFsbG9jX3NpemVzLmg+Ci0JMSB9OwotI3VuZGVmIENBQ0hFCi0KIHZvaWQgX19uZl9jdF9leHRfZGVzdHJveShzdHJ1Y3QgbmZfY29ubiAqY3QpCiB7CiAJdW5zaWduZWQgaW50IGk7CkBAIC01Myw3ICs0NSw3IEBACiBzdGF0aWMgdm9pZCAqCiBuZl9jdF9leHRfY3JlYXRlKHN0cnVjdCBuZl9jdF9leHQgKipleHQsIGVudW0gbmZfY3RfZXh0X2lkIGlkLCBnZnBfdCBnZnApCiB7Ci0JdW5zaWduZWQgaW50IG9mZiwgbGVuLCByZWFsX2xlbjsKKwl1bnNpZ25lZCBpbnQgb2ZmLCBsZW47CiAJc3RydWN0IG5mX2N0X2V4dF90eXBlICp0OwogCiAJcmN1X3JlYWRfbG9jaygpOwpAQCAtNjEsMTYgKzUzLDE0IEBACiAJQlVHX09OKHQgPT0gTlVMTCk7CiAJb2ZmID0gQUxJR04oc2l6ZW9mKHN0cnVjdCBuZl9jdF9leHQpLCB0LT5hbGlnbik7CiAJbGVuID0gb2ZmICsgdC0+bGVuOwotCXJlYWxfbGVuID0gdC0+YWxsb2Nfc2l6ZTsKIAlyY3VfcmVhZF91bmxvY2soKTsKIAotCSpleHQgPSBremFsbG9jKHJlYWxfbGVuLCBnZnApOworCSpleHQgPSBremFsbG9jKHQtPmFsbG9jX3NpemUsIGdmcCk7CiAJaWYgKCEqZXh0KQogCQlyZXR1cm4gTlVMTDsKIAogCSgqZXh0KS0+b2Zmc2V0W2lkXSA9IG9mZjsKIAkoKmV4dCktPmxlbiA9IGxlbjsKLQkoKmV4dCktPnJlYWxfbGVuID0gcmVhbF9sZW47CiAKIAlyZXR1cm4gKHZvaWQgKikoKmV4dCkgKyBvZmY7CiB9CkBAIC05NSw3ICs4NSw3IEBACiAJbmV3bGVuID0gbmV3b2ZmICsgdC0+bGVuOwogCXJjdV9yZWFkX3VubG9jaygpOwogCi0JaWYgKG5ld2xlbiA+PSBjdC0+ZXh0LT5yZWFsX2xlbikgeworCWlmIChuZXdsZW4gPj0ga3NpemUoY3QtPmV4dCkpIHsKIAkJbmV3ID0ga21hbGxvYyhuZXdsZW4sIGdmcCk7CiAJCWlmICghbmV3KQogCQkJcmV0dXJuIE5VTEw7CkBAIC0xMTQsNyArMTA0LDYgQEAKIAkJCXJjdV9yZWFkX3VubG9jaygpOwogCQl9CiAJCWtmcmVlKGN0LT5leHQpOwotCQluZXctPnJlYWxfbGVuID0gbmV3bGVuOwogCQljdC0+ZXh0ID0gbmV3OwogCX0KIApAQCAtMTU2LDggKzE0NSw2IEBACiAJCQl0MS0+YWxsb2Nfc2l6ZSA9IEFMSUdOKHQxLT5hbGxvY19zaXplLCB0Mi0+YWxpZ24pCiAJCQkJCSArIHQyLT5sZW47CiAJCX0KLQkJaWYgKHQxLT5hbGxvY19zaXplIDwgTkZfQ1RfRVhUX01JTl9TSVpFKQotCQkJdDEtPmFsbG9jX3NpemUgPSBORl9DVF9FWFRfTUlOX1NJWkU7CiAJfQogfQogCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jCmluZGV4IDYyMTM3ODcuLjg5OGYxOTIgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jCisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jCkBAIC04NDIsNyArODQyLDcgQEAKIAogCXNldF9oMjI1X2FkZHIgPSByY3VfZGVyZWZlcmVuY2Uoc2V0X2gyMjVfYWRkcl9ob29rKTsKIAlpZiAoKHNldHVwLT5vcHRpb25zICYgZVNldHVwX1VVSUVfZGVzdENhbGxTaWduYWxBZGRyZXNzKSAmJgotCSAgICAoc2V0X2gyMjVfYWRkcikgJiYgY3QtPnN0YXR1cyAmJiBJUFNfTkFUX01BU0sgJiYKKwkgICAgKHNldF9oMjI1X2FkZHIpICYmIGN0LT5zdGF0dXMgJiBJUFNfTkFUX01BU0sgJiYKIAkgICAgZ2V0X2gyMjVfYWRkcihjdCwgKmRhdGEsICZzZXR1cC0+ZGVzdENhbGxTaWduYWxBZGRyZXNzLAogCQkJICAmYWRkciwgJnBvcnQpICYmCiAJICAgIG1lbWNtcCgmYWRkciwgJmN0LT50dXBsZWhhc2hbIWRpcl0udHVwbGUuc3JjLnUzLCBzaXplb2YoYWRkcikpKSB7CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zdGFuZGFsb25lLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zdGFuZGFsb25lLmMKaW5kZXggZTg4ZTk2YS4uODU5OTA2OCAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc3RhbmRhbG9uZS5jCisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3N0YW5kYWxvbmUuYwpAQCAtMzk1LDcgKzM5NSw3IEBACiBzdGF0aWMgaW50IF9faW5pdCBuZl9jb25udHJhY2tfc3RhbmRhbG9uZV9pbml0KHZvaWQpCiB7CiAjaWZkZWYgQ09ORklHX1BST0NfRlMKLQlzdHJ1Y3QgcHJvY19kaXJfZW50cnkgKnByb2MsICpwcm9jX3N0YXQ7CisJc3RydWN0IHByb2NfZGlyX2VudHJ5ICpwcm9jOwogI2VuZGlmCiAJaW50IHJldCA9IDA7CiAKQEAgLTQwNywxMiArNDA3LDkgQEAKIAlwcm9jID0gcHJvY19uZXRfZm9wc19jcmVhdGUoJmluaXRfbmV0LCAibmZfY29ubnRyYWNrIiwgMDQ0MCwgJmN0X2ZpbGVfb3BzKTsKIAlpZiAoIXByb2MpIGdvdG8gY2xlYW51cF9pbml0OwogCi0JcHJvY19zdGF0ID0gY3JlYXRlX3Byb2NfZW50cnkoIm5mX2Nvbm50cmFjayIsIFNfSVJVR08sIGluaXRfbmV0LnByb2NfbmV0X3N0YXQpOwotCWlmICghcHJvY19zdGF0KQorCWlmICghcHJvY19jcmVhdGUoIm5mX2Nvbm50cmFjayIsIFNfSVJVR08sCisJCQkgaW5pdF9uZXQucHJvY19uZXRfc3RhdCwgJmN0X2NwdV9zZXFfZm9wcykpCiAJCWdvdG8gY2xlYW51cF9wcm9jOwotCi0JcHJvY19zdGF0LT5wcm9jX2ZvcHMgPSAmY3RfY3B1X3NlcV9mb3BzOwotCXByb2Nfc3RhdC0+b3duZXIgPSBUSElTX01PRFVMRTsKICNlbmRpZgogI2lmZGVmIENPTkZJR19TWVNDVEwKIAluZl9jdF9zeXNjdGxfaGVhZGVyID0gcmVnaXN0ZXJfc3lzY3RsX3BhdGhzKG5mX2N0X3BhdGgsCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2xvZy5jIGIvbmV0L25ldGZpbHRlci9uZl9sb2cuYwppbmRleCBjZWM5OTc2Li5iYzExZDcwIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2xvZy5jCisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfbG9nLmMKQEAgLTE2OCwxMyArMTY4LDkgQEAKIGludCBfX2luaXQgbmV0ZmlsdGVyX2xvZ19pbml0KHZvaWQpCiB7CiAjaWZkZWYgQ09ORklHX1BST0NfRlMKLQlzdHJ1Y3QgcHJvY19kaXJfZW50cnkgKnBkZTsKLQotCXBkZSA9IGNyZWF0ZV9wcm9jX2VudHJ5KCJuZl9sb2ciLCBTX0lSVUdPLCBwcm9jX25ldF9uZXRmaWx0ZXIpOwotCWlmICghcGRlKQorCWlmICghcHJvY19jcmVhdGUoIm5mX2xvZyIsIFNfSVJVR08sCisJCQkgcHJvY19uZXRfbmV0ZmlsdGVyLCAmbmZsb2dfZmlsZV9vcHMpKQogCQlyZXR1cm4gLTE7Ci0KLQlwZGUtPnByb2NfZm9wcyA9ICZuZmxvZ19maWxlX29wczsKICNlbmRpZgogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9xdWV1ZS5jIGIvbmV0L25ldGZpbHRlci9uZl9xdWV1ZS5jCmluZGV4IGJmYzI5MjguLmJiZDI2ODkgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfcXVldWUuYworKysgYi9uZXQvbmV0ZmlsdGVyL25mX3F1ZXVlLmMKQEAgLTUxLDcgKzUxLDcgQEAKIAkJcmV0dXJuIC1FSU5WQUw7CiAKIAltdXRleF9sb2NrKCZxdWV1ZV9oYW5kbGVyX211dGV4KTsKLQlpZiAocXVldWVfaGFuZGxlcltwZl0gIT0gcWgpIHsKKwlpZiAocXVldWVfaGFuZGxlcltwZl0gJiYgcXVldWVfaGFuZGxlcltwZl0gIT0gcWgpIHsKIAkJbXV0ZXhfdW5sb2NrKCZxdWV1ZV9oYW5kbGVyX211dGV4KTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQpAQCAtMzQ4LDEyICszNDgsOSBAQAogaW50IF9faW5pdCBuZXRmaWx0ZXJfcXVldWVfaW5pdCh2b2lkKQogewogI2lmZGVmIENPTkZJR19QUk9DX0ZTCi0Jc3RydWN0IHByb2NfZGlyX2VudHJ5ICpwZGU7Ci0KLQlwZGUgPSBjcmVhdGVfcHJvY19lbnRyeSgibmZfcXVldWUiLCBTX0lSVUdPLCBwcm9jX25ldF9uZXRmaWx0ZXIpOwotCWlmICghcGRlKQorCWlmICghcHJvY19jcmVhdGUoIm5mX3F1ZXVlIiwgU19JUlVHTywKKwkJCSBwcm9jX25ldF9uZXRmaWx0ZXIsICZuZnF1ZXVlX2ZpbGVfb3BzKSkKIAkJcmV0dXJuIC0xOwotCXBkZS0+cHJvY19mb3BzID0gJm5mcXVldWVfZmlsZV9vcHM7CiAjZW5kaWYKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2xvZy5jIGIvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmMKaW5kZXggN2VmYTQwZC4uYjgxNzNhZiAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmMKKysrIGIvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmMKQEAgLTU1Niw3ICs1NTYsNyBAQAogCS8qIEZJWE1FOiBkbyB3ZSB3YW50IHRvIG1ha2UgdGhlIHNpemUgY2FsY3VsYXRpb24gY29uZGl0aW9uYWwgYmFzZWQgb24KIAkgKiB3aGF0IGlzIGFjdHVhbGx5IHByZXNlbnQ/ICB3YXkgbW9yZSBicmFuY2hlcyBhbmQgY2hlY2tzLCBidXQgbW9yZQogCSAqIG1lbW9yeSBlZmZpY2llbnQuLi4gKi8KLQlzaXplID0gICAgTkxNU0dfQUxJR04oc2l6ZW9mKHN0cnVjdCBuZmdlbm1zZykpCisJc2l6ZSA9ICAgIE5MTVNHX1NQQUNFKHNpemVvZihzdHJ1Y3QgbmZnZW5tc2cpKQogCQkrIG5sYV90b3RhbF9zaXplKHNpemVvZihzdHJ1Y3QgbmZ1bG5sX21zZ19wYWNrZXRfaGRyKSkKIAkJKyBubGFfdG90YWxfc2l6ZShzaXplb2YodV9pbnQzMl90KSkJLyogaWZpbmRleCAqLwogCQkrIG5sYV90b3RhbF9zaXplKHNpemVvZih1X2ludDMyX3QpKQkvKiBpZmluZGV4ICovCkBAIC03MDIsMjAgKzcwMiwzMCBAQAogCXN0cnVjdCBuZmdlbm1zZyAqbmZtc2cgPSBOTE1TR19EQVRBKG5saCk7CiAJdV9pbnQxNl90IGdyb3VwX251bSA9IG50b2hzKG5mbXNnLT5yZXNfaWQpOwogCXN0cnVjdCBuZnVsbmxfaW5zdGFuY2UgKmluc3Q7CisJc3RydWN0IG5mdWxubF9tc2dfY29uZmlnX2NtZCAqY21kID0gTlVMTDsKIAlpbnQgcmV0ID0gMDsKIAorCWlmIChuZnVsYVtORlVMQV9DRkdfQ01EXSkgeworCQl1X2ludDhfdCBwZiA9IG5mbXNnLT5uZmdlbl9mYW1pbHk7CisJCWNtZCA9IG5sYV9kYXRhKG5mdWxhW05GVUxBX0NGR19DTURdKTsKKworCQkvKiBDb21tYW5kcyB3aXRob3V0IHF1ZXVlIGNvbnRleHQgKi8KKwkJc3dpdGNoIChjbWQtPmNvbW1hbmQpIHsKKwkJY2FzZSBORlVMTkxfQ0ZHX0NNRF9QRl9CSU5EOgorCQkJcmV0dXJuIG5mX2xvZ19yZWdpc3RlcihwZiwgJm5mdWxubF9sb2dnZXIpOworCQljYXNlIE5GVUxOTF9DRkdfQ01EX1BGX1VOQklORDoKKwkJCW5mX2xvZ191bnJlZ2lzdGVyX3BmKHBmKTsKKwkJCXJldHVybiAwOworCQl9CisJfQorCiAJaW5zdCA9IGluc3RhbmNlX2xvb2t1cF9nZXQoZ3JvdXBfbnVtKTsKIAlpZiAoaW5zdCAmJiBpbnN0LT5wZWVyX3BpZCAhPSBORVRMSU5LX0NCKHNrYikucGlkKSB7CiAJCXJldCA9IC1FUEVSTTsKIAkJZ290byBvdXRfcHV0OwogCX0KIAotCWlmIChuZnVsYVtORlVMQV9DRkdfQ01EXSkgewotCQl1X2ludDhfdCBwZiA9IG5mbXNnLT5uZmdlbl9mYW1pbHk7Ci0JCXN0cnVjdCBuZnVsbmxfbXNnX2NvbmZpZ19jbWQgKmNtZDsKLQotCQljbWQgPSBubGFfZGF0YShuZnVsYVtORlVMQV9DRkdfQ01EXSk7Ci0KKwlpZiAoY21kICE9IE5VTEwpIHsKIAkJc3dpdGNoIChjbWQtPmNvbW1hbmQpIHsKIAkJY2FzZSBORlVMTkxfQ0ZHX0NNRF9CSU5EOgogCQkJaWYgKGluc3QpIHsKQEAgLTczOCwxNCArNzQ4LDYgQEAKIAogCQkJaW5zdGFuY2VfZGVzdHJveShpbnN0KTsKIAkJCWdvdG8gb3V0OwotCQljYXNlIE5GVUxOTF9DRkdfQ01EX1BGX0JJTkQ6Ci0JCQlyZXQgPSBuZl9sb2dfcmVnaXN0ZXIocGYsICZuZnVsbmxfbG9nZ2VyKTsKLQkJCWJyZWFrOwotCQljYXNlIE5GVUxOTF9DRkdfQ01EX1BGX1VOQklORDoKLQkJCS8qIFRoaXMgaXMgYSBidWcgYW5kIGEgZmVhdHVyZS4gIFdlIGNhbm5vdCB1bnJlZ2lzdGVyCi0JCQkgKiBvdGhlciBoYW5kbGVycywgbGlrZSBuZm5ldGxpbmtfaW5zdCBjYW4gKi8KLQkJCW5mX2xvZ191bnJlZ2lzdGVyX3BmKHBmKTsKLQkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJcmV0ID0gLUVOT1RTVVBQOwogCQkJYnJlYWs7CkBAIC05MjEsOSArOTIzLDYgQEAKIHN0YXRpYyBpbnQgX19pbml0IG5mbmV0bGlua19sb2dfaW5pdCh2b2lkKQogewogCWludCBpLCBzdGF0dXMgPSAtRU5PTUVNOwotI2lmZGVmIENPTkZJR19QUk9DX0ZTCi0Jc3RydWN0IHByb2NfZGlyX2VudHJ5ICpwcm9jX25mdWw7Ci0jZW5kaWYKIAogCWZvciAoaSA9IDA7IGkgPCBJTlNUQU5DRV9CVUNLRVRTOyBpKyspCiAJCUlOSVRfSExJU1RfSEVBRCgmaW5zdGFuY2VfdGFibGVbaV0pOwpAQCAtOTQxLDExICs5NDAsOSBAQAogCX0KIAogI2lmZGVmIENPTkZJR19QUk9DX0ZTCi0JcHJvY19uZnVsID0gY3JlYXRlX3Byb2NfZW50cnkoIm5mbmV0bGlua19sb2ciLCAwNDQwLAotCQkJCSAgICAgIHByb2NfbmV0X25ldGZpbHRlcik7Ci0JaWYgKCFwcm9jX25mdWwpCisJaWYgKCFwcm9jX2NyZWF0ZSgibmZuZXRsaW5rX2xvZyIsIDA0NDAsCisJCQkgcHJvY19uZXRfbmV0ZmlsdGVyLCAmbmZ1bF9maWxlX29wcykpCiAJCWdvdG8gY2xlYW51cF9zdWJzeXM7Ci0JcHJvY19uZnVsLT5wcm9jX2ZvcHMgPSAmbmZ1bF9maWxlX29wczsKICNlbmRpZgogCXJldHVybiBzdGF0dXM7CiAKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMgYi9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jCmluZGV4IDAwNDNkM2EuLjEwNTIyYzAgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMKKysrIGIvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYwpAQCAtMjI0LDcgKzIyNCw3IEBACiAJc3RydWN0IG5ldF9kZXZpY2UgKmluZGV2OwogCXN0cnVjdCBuZXRfZGV2aWNlICpvdXRkZXY7CiAKLQlzaXplID0gICAgTkxNU0dfQUxJR04oc2l6ZW9mKHN0cnVjdCBuZmdlbm1zZykpCisJc2l6ZSA9ICAgIE5MTVNHX1NQQUNFKHNpemVvZihzdHJ1Y3QgbmZnZW5tc2cpKQogCQkrIG5sYV90b3RhbF9zaXplKHNpemVvZihzdHJ1Y3QgbmZxbmxfbXNnX3BhY2tldF9oZHIpKQogCQkrIG5sYV90b3RhbF9zaXplKHNpemVvZih1X2ludDMyX3QpKQkvKiBpZmluZGV4ICovCiAJCSsgbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHVfaW50MzJfdCkpCS8qIGlmaW5kZXggKi8KQEAgLTcwMywxOSArNzAzLDEyIEBACiAJCS8qIENvbW1hbmRzIHdpdGhvdXQgcXVldWUgY29udGV4dCAtIG1pZ2h0IHNsZWVwICovCiAJCXN3aXRjaCAoY21kLT5jb21tYW5kKSB7CiAJCWNhc2UgTkZRTkxfQ0ZHX0NNRF9QRl9CSU5EOgotCQkJcmV0ID0gbmZfcmVnaXN0ZXJfcXVldWVfaGFuZGxlcihudG9ocyhjbWQtPnBmKSwKLQkJCQkJCQkmbmZxaCk7Ci0JCQlicmVhazsKKwkJCXJldHVybiBuZl9yZWdpc3Rlcl9xdWV1ZV9oYW5kbGVyKG50b2hzKGNtZC0+cGYpLAorCQkJCQkJCSAmbmZxaCk7CiAJCWNhc2UgTkZRTkxfQ0ZHX0NNRF9QRl9VTkJJTkQ6Ci0JCQlyZXQgPSBuZl91bnJlZ2lzdGVyX3F1ZXVlX2hhbmRsZXIobnRvaHMoY21kLT5wZiksCi0JCQkJCQkJICAmbmZxaCk7Ci0JCQlicmVhazsKLQkJZGVmYXVsdDoKLQkJCWJyZWFrOworCQkJcmV0dXJuIG5mX3VucmVnaXN0ZXJfcXVldWVfaGFuZGxlcihudG9ocyhjbWQtPnBmKSwKKwkJCQkJCQkgICAmbmZxaCk7CiAJCX0KLQotCQlpZiAocmV0IDwgMCkKLQkJCXJldHVybiByZXQ7CiAJfQogCiAJcmN1X3JlYWRfbG9jaygpOwpAQCAtOTAzLDkgKzg5Niw2IEBACiBzdGF0aWMgaW50IF9faW5pdCBuZm5ldGxpbmtfcXVldWVfaW5pdCh2b2lkKQogewogCWludCBpLCBzdGF0dXMgPSAtRU5PTUVNOwotI2lmZGVmIENPTkZJR19QUk9DX0ZTCi0Jc3RydWN0IHByb2NfZGlyX2VudHJ5ICpwcm9jX25mcXVldWU7Ci0jZW5kaWYKIAogCWZvciAoaSA9IDA7IGkgPCBJTlNUQU5DRV9CVUNLRVRTOyBpKyspCiAJCUlOSVRfSExJU1RfSEVBRCgmaW5zdGFuY2VfdGFibGVbaV0pOwpAQCAtOTE4LDExICs5MDgsOSBAQAogCX0KIAogI2lmZGVmIENPTkZJR19QUk9DX0ZTCi0JcHJvY19uZnF1ZXVlID0gY3JlYXRlX3Byb2NfZW50cnkoIm5mbmV0bGlua19xdWV1ZSIsIDA0NDAsCi0JCQkJCSBwcm9jX25ldF9uZXRmaWx0ZXIpOwotCWlmICghcHJvY19uZnF1ZXVlKQorCWlmICghcHJvY19jcmVhdGUoIm5mbmV0bGlua19xdWV1ZSIsIDA0NDAsCisJCQkgcHJvY19uZXRfbmV0ZmlsdGVyLCAmbmZxbmxfZmlsZV9vcHMpKQogCQlnb3RvIGNsZWFudXBfc3Vic3lzOwotCXByb2NfbmZxdWV1ZS0+cHJvY19mb3BzID0gJm5mcW5sX2ZpbGVfb3BzOwogI2VuZGlmCiAKIAlyZWdpc3Rlcl9uZXRkZXZpY2Vfbm90aWZpZXIoJm5mcW5sX2Rldl9ub3RpZmllcik7CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL3h0X2hhc2hsaW1pdC5jIGIvbmV0L25ldGZpbHRlci94dF9oYXNobGltaXQuYwppbmRleCA1NDE4Y2U1Li40MGQzNDRiIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL3h0X2hhc2hsaW1pdC5jCisrKyBiL25ldC9uZXRmaWx0ZXIveHRfaGFzaGxpbWl0LmMKQEAgLTIzNywxNCArMjM3LDE0IEBACiAJaGluZm8tPmZhbWlseSA9IGZhbWlseTsKIAloaW5mby0+cm5kX2luaXRpYWxpemVkID0gMDsKIAlzcGluX2xvY2tfaW5pdCgmaGluZm8tPmxvY2spOwotCWhpbmZvLT5wZGUgPSBjcmVhdGVfcHJvY19lbnRyeShtaW5mby0+bmFtZSwgMCwKLQkJCQkgICAgICAgZmFtaWx5ID09IEFGX0lORVQgPyBoYXNobGltaXRfcHJvY2RpcjQgOgotCQkJCQkJCSAgIGhhc2hsaW1pdF9wcm9jZGlyNik7CisJaGluZm8tPnBkZSA9IHByb2NfY3JlYXRlKG1pbmZvLT5uYW1lLCAwLAorCQkJCSBmYW1pbHkgPT0gQUZfSU5FVCA/IGhhc2hsaW1pdF9wcm9jZGlyNCA6CisJCQkJCQkgICAgIGhhc2hsaW1pdF9wcm9jZGlyNiwKKwkJCQkgJmRsX2ZpbGVfb3BzKTsKIAlpZiAoIWhpbmZvLT5wZGUpIHsKIAkJdmZyZWUoaGluZm8pOwogCQlyZXR1cm4gLTE7CiAJfQotCWhpbmZvLT5wZGUtPnByb2NfZm9wcyA9ICZkbF9maWxlX29wczsKIAloaW5mby0+cGRlLT5kYXRhID0gaGluZm87CiAKIAlzZXR1cF90aW1lcigmaGluZm8tPnRpbWVyLCBodGFibGVfZ2MsICh1bnNpZ25lZCBsb25nICloaW5mbyk7CkBAIC0zMDEsMTQgKzMwMSwxNCBAQAogCWhpbmZvLT5ybmRfaW5pdGlhbGl6ZWQgPSAwOwogCXNwaW5fbG9ja19pbml0KCZoaW5mby0+bG9jayk7CiAKLQloaW5mby0+cGRlID0gY3JlYXRlX3Byb2NfZW50cnkobWluZm8tPm5hbWUsIDAsCi0JCQkJICAgICAgIGZhbWlseSA9PSBBRl9JTkVUID8gaGFzaGxpbWl0X3Byb2NkaXI0IDoKLQkJCQkJCQkgICBoYXNobGltaXRfcHJvY2RpcjYpOworCWhpbmZvLT5wZGUgPSBwcm9jX2NyZWF0ZShtaW5mby0+bmFtZSwgMCwKKwkJCQkgZmFtaWx5ID09IEFGX0lORVQgPyBoYXNobGltaXRfcHJvY2RpcjQgOgorCQkJCQkJICAgICBoYXNobGltaXRfcHJvY2RpcjYsCisJCQkJICZkbF9maWxlX29wcyk7CiAJaWYgKGhpbmZvLT5wZGUgPT0gTlVMTCkgewogCQl2ZnJlZShoaW5mbyk7CiAJCXJldHVybiAtMTsKIAl9Ci0JaGluZm8tPnBkZS0+cHJvY19mb3BzID0gJmRsX2ZpbGVfb3BzOwogCWhpbmZvLT5wZGUtPmRhdGEgPSBoaW5mbzsKIAogCXNldHVwX3RpbWVyKCZoaW5mby0+dGltZXIsIGh0YWJsZV9nYywgKHVuc2lnbmVkIGxvbmcpaGluZm8pOwpAQCAtNDY2LDM4ICs0NjYsMjUgQEAKIAogc3RhdGljIGlubGluZSBfX2JlMzIgbWFza2woX19iZTMyIGEsIHVuc2lnbmVkIGludCBsKQogewotCXJldHVybiBodG9ubChudG9obChhKSAmIH4ofih1X2ludDMyX3QpMCA+PiBsKSk7CisJcmV0dXJuIGwgPyBodG9ubChudG9obChhKSAmIH4wIDw8ICgzMiAtIGwpKSA6IDA7CiB9CiAKICNpZiBkZWZpbmVkKENPTkZJR19JUDZfTkZfSVBUQUJMRVMpIHx8IGRlZmluZWQoQ09ORklHX0lQNl9ORl9JUFRBQkxFU19NT0RVTEUpCiBzdGF0aWMgdm9pZCBoYXNobGltaXRfaXB2Nl9tYXNrKF9fYmUzMiAqaSwgdW5zaWduZWQgaW50IHApCiB7CiAJc3dpdGNoIChwKSB7Ci0JY2FzZSAwOgotCQlpWzBdID0gaVsxXSA9IDA7Ci0JCWlbMl0gPSBpWzNdID0gMDsKLQkJYnJlYWs7Ci0JY2FzZSAxIC4uLiAzMToKKwljYXNlIDAgLi4uIDMxOgogCQlpWzBdID0gbWFza2woaVswXSwgcCk7CiAJCWlbMV0gPSBpWzJdID0gaVszXSA9IDA7CiAJCWJyZWFrOwotCWNhc2UgMzI6Ci0JCWlbMV0gPSBpWzJdID0gaVszXSA9IDA7Ci0JCWJyZWFrOwotCWNhc2UgMzMgLi4uIDYzOgorCWNhc2UgMzIgLi4uIDYzOgogCQlpWzFdID0gbWFza2woaVsxXSwgcCAtIDMyKTsKIAkJaVsyXSA9IGlbM10gPSAwOwogCQlicmVhazsKLQljYXNlIDY0OgotCQlpWzJdID0gaVszXSA9IDA7Ci0JCWJyZWFrOwotCWNhc2UgNjUgLi4uIDk1OgorCWNhc2UgNjQgLi4uIDk1OgogCQlpWzJdID0gbWFza2woaVsyXSwgcCAtIDY0KTsKIAkJaVszXSA9IDA7Ci0JY2FzZSA5NjoKLQkJaVszXSA9IDA7Ci0JCWJyZWFrOwotCWNhc2UgOTcgLi4uIDEyNzoKKwljYXNlIDk2IC4uLiAxMjc6CiAJCWlbM10gPSBtYXNrbChpWzNdLCBwIC0gOTYpOwogCQlicmVhazsKIAljYXNlIDEyODoKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIveHRfdGltZS5jIGIvbmV0L25ldGZpbHRlci94dF90aW1lLmMKaW5kZXggZTlhODc5NC4uOWZhMmUwOCAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci94dF90aW1lLmMKKysrIGIvbmV0L25ldGZpbHRlci94dF90aW1lLmMKQEAgLTk1LDggKzk1LDExIEBACiAJICovCiAJci0+ZHNlID0gdGltZSAvIDg2NDAwOwogCi0JLyogMTk3MC0wMS0wMSAodz0wKSB3YXMgYSBUaHVyc2RheSAoNCkuICovCi0Jci0+d2Vla2RheSA9ICg0ICsgci0+ZHNlKSAlIDc7CisJLyoKKwkgKiAxOTcwLTAxLTAxICh3PTApIHdhcyBhIFRodXJzZGF5ICg0KS4KKwkgKiAtMSBhbmQgKzEgbWFwIFN1bmRheSBwcm9wZXJseSBvbnRvIDcuCisJICovCisJci0+d2Vla2RheSA9ICg0ICsgci0+ZHNlIC0gMSkgJSA3ICsgMTsKIH0KIAogc3RhdGljIHZvaWQgbG9jYWx0aW1lXzMoc3RydWN0IHh0bSAqciwgdGltZV90IHRpbWUpCmRpZmYgLS1naXQgYS9uZXQvcmZraWxsL3Jma2lsbC5jIGIvbmV0L3Jma2lsbC9yZmtpbGwuYwppbmRleCAxNDBhMGE4Li40ZTEwYTk1IDEwMDY0NAotLS0gYS9uZXQvcmZraWxsL3Jma2lsbC5jCisrKyBiL25ldC9yZmtpbGwvcmZraWxsLmMKQEAgLTkyLDcgKzkyLDcgQEAKIAlyZmtpbGxfc3RhdGVzW3R5cGVdID0gc3RhdGU7CiAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJma2lsbCwgJnJma2lsbF9saXN0LCBub2RlKSB7Ci0JCWlmICghcmZraWxsLT51c2VyX2NsYWltKQorCQlpZiAoKCFyZmtpbGwtPnVzZXJfY2xhaW0pICYmIChyZmtpbGwtPnR5cGUgPT0gdHlwZSkpCiAJCQlyZmtpbGxfdG9nZ2xlX3JhZGlvKHJma2lsbCwgc3RhdGUpOwogCX0KIApkaWZmIC0tZ2l0IGEvbmV0L3Jvc2UvYWZfcm9zZS5jIGIvbmV0L3Jvc2UvYWZfcm9zZS5jCmluZGV4IDRhMzFhODEuLjA2M2NiYzUgMTAwNjQ0Ci0tLSBhL25ldC9yb3NlL2FmX3Jvc2UuYworKysgYi9uZXQvcm9zZS9hZl9yb3NlLmMKQEAgLTU5OCwxNyArNTk4LDI0IEBACiAKIAlpZiAoc2sgPT0gTlVMTCkgcmV0dXJuIDA7CiAKKwlzb2NrX2hvbGQoc2spOworCXNvY2tfb3JwaGFuKHNrKTsKKwlsb2NrX3NvY2soc2spOwogCXJvc2UgPSByb3NlX3NrKHNrKTsKIAogCXN3aXRjaCAocm9zZS0+c3RhdGUpIHsKIAljYXNlIFJPU0VfU1RBVEVfMDoKKwkJcmVsZWFzZV9zb2NrKHNrKTsKIAkJcm9zZV9kaXNjb25uZWN0KHNrLCAwLCAtMSwgLTEpOworCQlsb2NrX3NvY2soc2spOwogCQlyb3NlX2Rlc3Ryb3lfc29ja2V0KHNrKTsKIAkJYnJlYWs7CiAKIAljYXNlIFJPU0VfU1RBVEVfMjoKIAkJcm9zZS0+bmVpZ2hib3VyLT51c2UtLTsKKwkJcmVsZWFzZV9zb2NrKHNrKTsKIAkJcm9zZV9kaXNjb25uZWN0KHNrLCAwLCAtMSwgLTEpOworCQlsb2NrX3NvY2soc2spOwogCQlyb3NlX2Rlc3Ryb3lfc29ja2V0KHNrKTsKIAkJYnJlYWs7CiAKQEAgLTYzMyw2ICs2NDAsOCBAQAogCX0KIAogCXNvY2stPnNrID0gTlVMTDsKKwlyZWxlYXNlX3NvY2soc2spOworCXNvY2tfcHV0KHNrKTsKIAogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvbmV0L3J4cnBjL2FmX3J4cnBjLmMgYi9uZXQvcnhycGMvYWZfcnhycGMuYwppbmRleCAyZDBjMjljLi40YjI2ODJmIDEwMDY0NAotLS0gYS9uZXQvcnhycGMvYWZfcnhycGMuYworKysgYi9uZXQvcnhycGMvYWZfcnhycGMuYwpAQCAtMjcsNyArMjcsNyBAQAogCiB1bnNpZ25lZCByeHJwY19kZWJ1ZzsgLy8gPSBSWFJQQ19ERUJVR19LUFJPVE87CiBtb2R1bGVfcGFyYW1fbmFtZWQoZGVidWcsIHJ4cnBjX2RlYnVnLCB1aW50LCBTX0lXVVNSIHwgU19JUlVHTyk7Ci1NT0RVTEVfUEFSTV9ERVNDKHJ4cnBjX2RlYnVnLCAiUnhSUEMgZGVidWdnaW5nIG1hc2siKTsKK01PRFVMRV9QQVJNX0RFU0MoZGVidWcsICJSeFJQQyBkZWJ1Z2dpbmcgbWFzayIpOwogCiBzdGF0aWMgaW50IHN5c2N0bF9yeHJwY19tYXhfcWxlbiBfX3JlYWRfbW9zdGx5ID0gMTA7CiAKZGlmZiAtLWdpdCBhL25ldC9yeHJwYy9hci1pbnRlcm5hbC5oIGIvbmV0L3J4cnBjL2FyLWludGVybmFsLmgKaW5kZXggMWFhYTJlOC4uNTNmZTk0YyAxMDA2NDQKLS0tIGEvbmV0L3J4cnBjL2FyLWludGVybmFsLmgKKysrIGIvbmV0L3J4cnBjL2FyLWludGVybmFsLmgKQEAgLTIzLDcgKzIzLDcgQEAKIHN0cnVjdCByeHJwY19jcnlwdCB7CiAJdW5pb24gewogCQl1OAl4W0ZDUllQVF9CU0laRV07Ci0JCXUzMgluWzJdOworCQlfX2JlMzIJblsyXTsKIAl9OwogfSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDgpKSk7CiAKQEAgLTYxMSw3ICs2MTEsNyBAQAogZXh0ZXJuIHVuc2lnbmVkIHJ4cnBjX2RlYnVnOwogCiAjZGVmaW5lIGRiZ3ByaW50ayhGTVQsLi4uKSBcCi0JcHJpbnRrKCJbJXglLTYuNnNdICJGTVQiXG4iLCBzbXBfcHJvY2Vzc29yX2lkKCksIGN1cnJlbnQtPmNvbW0gLCMjX19WQV9BUkdTX18pCisJcHJpbnRrKCJbJS02LjZzXSAiRk1UIlxuIiwgY3VycmVudC0+Y29tbSAsIyNfX1ZBX0FSR1NfXykKIAogLyogbWFrZSBzdXJlIHdlIG1haW50YWluIHRoZSBmb3JtYXQgc3RyaW5ncywgZXZlbiB3aGVuIGRlYnVnZ2luZyBpcyBkaXNhYmxlZCAqLwogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChmb3JtYXQocHJpbnRmLDEsMikpKQpkaWZmIC0tZ2l0IGEvbmV0L3J4cnBjL2FyLXJlY3Ztc2cuYyBiL25ldC9yeHJwYy9hci1yZWN2bXNnLmMKaW5kZXggZjE5MTIxZC4uYTM5YmY5NyAxMDA2NDQKLS0tIGEvbmV0L3J4cnBjL2FyLXJlY3Ztc2cuYworKysgYi9uZXQvcnhycGMvYXItcmVjdm1zZy5jCkBAIC0xNDMsNyArMTQzLDggQEAKIAkJLyogY29weSB0aGUgcGVlciBhZGRyZXNzIGFuZCB0aW1lc3RhbXAgKi8KIAkJaWYgKCFjb250aW51ZV9jYWxsKSB7CiAJCQlpZiAobXNnLT5tc2dfbmFtZSAmJiBtc2ctPm1zZ19uYW1lbGVuID4gMCkKLQkJCQltZW1jcHkoJm1zZy0+bXNnX25hbWUsICZjYWxsLT5jb25uLT50cmFucy0+cGVlci0+c3J4LAorCQkJCW1lbWNweShtc2ctPm1zZ19uYW1lLAorCQkJCSAgICAgICAmY2FsbC0+Y29ubi0+dHJhbnMtPnBlZXItPnNyeCwKIAkJCQkgICAgICAgc2l6ZW9mKGNhbGwtPmNvbm4tPnRyYW5zLT5wZWVyLT5zcngpKTsKIAkJCXNvY2tfcmVjdl90aW1lc3RhbXAobXNnLCAmcngtPnNrLCBza2IpOwogCQl9CmRpZmYgLS1naXQgYS9uZXQvcnhycGMvcnhrYWQuYyBiL25ldC9yeHJwYy9yeGthZC5jCmluZGV4IGY0ODQzNGEuLjZkMzhhODEgMTAwNjQ0Ci0tLSBhL25ldC9yeHJwYy9yeGthZC5jCisrKyBiL25ldC9yeHJwYy9yeGthZC5jCkBAIC0zMSw3ICszMSw3IEBACiAKIHVuc2lnbmVkIHJ4cnBjX2RlYnVnOwogbW9kdWxlX3BhcmFtX25hbWVkKGRlYnVnLCByeHJwY19kZWJ1ZywgdWludCwgU19JV1VTUiB8IFNfSVJVR08pOwotTU9EVUxFX1BBUk1fREVTQyhyeHJwY19kZWJ1ZywgInJ4a2FkIGRlYnVnZ2luZyBtYXNrIik7CitNT0RVTEVfUEFSTV9ERVNDKGRlYnVnLCAicnhrYWQgZGVidWdnaW5nIG1hc2siKTsKIAogc3RydWN0IHJ4a2FkX2xldmVsMV9oZHIgewogCV9fYmUzMglkYXRhX3NpemU7CS8qIHRydWUgZGF0YSBzaXplIChleGNsdWRpbmcgcGFkZGluZykgKi8KQEAgLTI2MSw2ICsyNjEsNyBAQAogCQlfX2JlMzIgeFsyXTsKIAl9IHRtcGJ1ZiBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDgpKSk7IC8qIG11c3QgYWxsIGJlIGluIHNhbWUgcGFnZSAqLwogCV9fYmUzMiB4OworCXUzMiB5OwogCWludCByZXQ7CiAKIAlzcCA9IHJ4cnBjX3NrYihza2IpOwpAQCAtMjkyLDExICsyOTMsMTEgQEAKIAlzZ19pbml0X29uZSgmc2dbMV0sICZ0bXBidWYsIHNpemVvZih0bXBidWYpKTsKIAljcnlwdG9fYmxrY2lwaGVyX2VuY3J5cHRfaXYoJmRlc2MsICZzZ1swXSwgJnNnWzFdLCBzaXplb2YodG1wYnVmKSk7CiAKLQl4ID0gbnRvaGwodG1wYnVmLnhbMV0pOwotCXggPSAoeCA+PiAxNikgJiAweGZmZmY7Ci0JaWYgKHggPT0gMCkKLQkJeCA9IDE7IC8qIHplcm8gY2hlY2tzdW1zIGFyZSBub3QgcGVybWl0dGVkICovCi0Jc3AtPmhkci5ja3N1bSA9IGh0b25zKHgpOworCXkgPSBudG9obCh0bXBidWYueFsxXSk7CisJeSA9ICh5ID4+IDE2KSAmIDB4ZmZmZjsKKwlpZiAoeSA9PSAwKQorCQl5ID0gMTsgLyogemVybyBjaGVja3N1bXMgYXJlIG5vdCBwZXJtaXR0ZWQgKi8KKwlzcC0+aGRyLmNrc3VtID0gaHRvbnMoeSk7CiAKIAlzd2l0Y2ggKGNhbGwtPmNvbm4tPnNlY3VyaXR5X2xldmVsKSB7CiAJY2FzZSBSWFJQQ19TRUNVUklUWV9QTEFJTjoKQEAgLTMxNCw3ICszMTUsNyBAQAogCQlicmVhazsKIAl9CiAKLQlfbGVhdmUoIiA9ICVkIFtzZXQgJWh4XSIsIHJldCwgeCk7CisJX2xlYXZlKCIgPSAlZCBbc2V0ICVoeF0iLCByZXQsIHkpOwogCXJldHVybiByZXQ7CiB9CiAKQEAgLTQ5Miw2ICs0OTMsNyBAQAogCQlfX2JlMzIgeFsyXTsKIAl9IHRtcGJ1ZiBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDgpKSk7IC8qIG11c3QgYWxsIGJlIGluIHNhbWUgcGFnZSAqLwogCV9fYmUzMiB4OworCXUxNiB5OwogCV9fYmUxNiBja3N1bTsKIAlpbnQgcmV0OwogCkBAIC01MjYsMTIgKzUyOCwxMiBAQAogCXNnX2luaXRfb25lKCZzZ1sxXSwgJnRtcGJ1Ziwgc2l6ZW9mKHRtcGJ1ZikpOwogCWNyeXB0b19ibGtjaXBoZXJfZW5jcnlwdF9pdigmZGVzYywgJnNnWzBdLCAmc2dbMV0sIHNpemVvZih0bXBidWYpKTsKIAotCXggPSBudG9obCh0bXBidWYueFsxXSk7Ci0JeCA9ICh4ID4+IDE2KSAmIDB4ZmZmZjsKLQlpZiAoeCA9PSAwKQotCQl4ID0gMTsgLyogemVybyBjaGVja3N1bXMgYXJlIG5vdCBwZXJtaXR0ZWQgKi8KKwl5ID0gbnRvaGwodG1wYnVmLnhbMV0pOworCXkgPSAoeSA+PiAxNikgJiAweGZmZmY7CisJaWYgKHkgPT0gMCkKKwkJeSA9IDE7IC8qIHplcm8gY2hlY2tzdW1zIGFyZSBub3QgcGVybWl0dGVkICovCiAKLQlja3N1bSA9IGh0b25zKHgpOworCWNrc3VtID0gaHRvbnMoeSk7CiAJaWYgKHNwLT5oZHIuY2tzdW0gIT0gY2tzdW0pIHsKIAkJKl9hYm9ydF9jb2RlID0gUlhLQURTRUFMRURJTkNPTjsKIAkJX2xlYXZlKCIgPSAtRVBST1RPIFtjc3VtIGZhaWxlZF0iKTsKQEAgLTEwMDEsNyArMTAwMyw4IEBACiAJc3RydWN0IHJ4cnBjX2NyeXB0IHNlc3Npb25fa2V5OwogCXRpbWVfdCBleHBpcnk7CiAJdm9pZCAqdGlja2V0OwotCXUzMiBhYm9ydF9jb2RlLCB2ZXJzaW9uLCBrdm5vLCB0aWNrZXRfbGVuLCBjc3VtLCBsZXZlbDsKKwl1MzIgYWJvcnRfY29kZSwgdmVyc2lvbiwga3ZubywgdGlja2V0X2xlbiwgbGV2ZWw7CisJX19iZTMyIGNzdW07CiAJaW50IHJldDsKIAogCV9lbnRlcigieyVkLCV4fSIsIGNvbm4tPmRlYnVnX2lkLCBrZXlfc2VyaWFsKGNvbm4tPnNlcnZlcl9rZXkpKTsKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9jbHNfdTMyLmMgYi9uZXQvc2NoZWQvY2xzX3UzMi5jCmluZGV4IGIxOGZhOTUuLjRkNzU1NDQgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9jbHNfdTMyLmMKKysrIGIvbmV0L3NjaGVkL2Nsc191MzIuYwpAQCAtODksNyArODksNyBAQAogCiBzdGF0aWMgc3RydWN0IHRjX3VfY29tbW9uICp1MzJfbGlzdDsKIAotc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgdTMyX2hhc2hfZm9sZCh1MzIga2V5LCBzdHJ1Y3QgdGNfdTMyX3NlbCAqc2VsLCB1OCBmc2hpZnQpCitzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCB1MzJfaGFzaF9mb2xkKF9fYmUzMiBrZXksIHN0cnVjdCB0Y191MzJfc2VsICpzZWwsIHU4IGZzaGlmdCkKIHsKIAl1bnNpZ25lZCBoID0gbnRvaGwoa2V5ICYgc2VsLT5obWFzayk+PmZzaGlmdDsKIApAQCAtMTM3LDcgKzEzNyw3IEBACiAKIAkJZm9yIChpID0gbi0+c2VsLm5rZXlzOyBpPjA7IGktLSwga2V5KyspIHsKIAotCQkJaWYgKCgqKHUzMiopKHB0citrZXktPm9mZisob2ZmMiZrZXktPm9mZm1hc2spKV5rZXktPnZhbCkma2V5LT5tYXNrKSB7CisJCQlpZiAoKCooX19iZTMyKikocHRyK2tleS0+b2ZmKyhvZmYyJmtleS0+b2ZmbWFzaykpXmtleS0+dmFsKSZrZXktPm1hc2spIHsKIAkJCQluID0gbi0+bmV4dDsKIAkJCQlnb3RvIG5leHRfa25vZGU7CiAJCQl9CkBAIC0xODIsNyArMTgyLDcgQEAKIAkJaHQgPSBuLT5odF9kb3duOwogCQlzZWwgPSAwOwogCQlpZiAoaHQtPmRpdmlzb3IpCi0JCQlzZWwgPSBodC0+ZGl2aXNvciZ1MzJfaGFzaF9mb2xkKCoodTMyKikocHRyK24tPnNlbC5ob2ZmKSwgJm4tPnNlbCxuLT5mc2hpZnQpOworCQkJc2VsID0gaHQtPmRpdmlzb3ImdTMyX2hhc2hfZm9sZCgqKF9fYmUzMiopKHB0cituLT5zZWwuaG9mZiksICZuLT5zZWwsbi0+ZnNoaWZ0KTsKIAogCQlpZiAoIShuLT5zZWwuZmxhZ3MmKFRDX1UzMl9WQVJPRkZTRVR8VENfVTMyX09GRlNFVHxUQ19VMzJfRUFUKSkpCiAJCQlnb3RvIG5leHRfaHQ7CkBAIC0xOTAsNyArMTkwLDcgQEAKIAkJaWYgKG4tPnNlbC5mbGFncyYoVENfVTMyX09GRlNFVHxUQ19VMzJfVkFST0ZGU0VUKSkgewogCQkJb2ZmMiA9IG4tPnNlbC5vZmYgKyAzOwogCQkJaWYgKG4tPnNlbC5mbGFncyZUQ19VMzJfVkFST0ZGU0VUKQotCQkJCW9mZjIgKz0gbnRvaHMobi0+c2VsLm9mZm1hc2sgJiAqKHUxNiopKHB0cituLT5zZWwub2Zmb2ZmKSkgPj5uLT5zZWwub2Zmc2hpZnQ7CisJCQkJb2ZmMiArPSBudG9ocyhuLT5zZWwub2ZmbWFzayAmICooX19iZTE2KikocHRyK24tPnNlbC5vZmZvZmYpKSA+Pm4tPnNlbC5vZmZzaGlmdDsKIAkJCW9mZjIgJj0gfjM7CiAJCX0KIAkJaWYgKG4tPnNlbC5mbGFncyZUQ19VMzJfRUFUKSB7CkBAIC00MTEsOCArNDExLDEwIEBACiAJCQl9CiAJCX0KIAotCQlmb3IgKGh0PXRwX2MtPmhsaXN0OyBodDsgaHQgPSBodC0+bmV4dCkKKwkJZm9yIChodCA9IHRwX2MtPmhsaXN0OyBodDsgaHQgPSBodC0+bmV4dCkgeworCQkJaHQtPnJlZmNudC0tOwogCQkJdTMyX2NsZWFyX2hub2RlKHRwLCBodCk7CisJCX0KIAogCQl3aGlsZSAoKGh0ID0gdHBfYy0+aGxpc3QpICE9IE5VTEwpIHsKIAkJCXRwX2MtPmhsaXN0ID0gaHQtPm5leHQ7CkBAIC00NDEsOCArNDQzLDEyIEBACiAJaWYgKHRwLT5yb290ID09IGh0KQogCQlyZXR1cm4gLUVJTlZBTDsKIAotCWlmICgtLWh0LT5yZWZjbnQgPT0gMCkKKwlpZiAoaHQtPnJlZmNudCA9PSAxKSB7CisJCWh0LT5yZWZjbnQtLTsKIAkJdTMyX2Rlc3Ryb3lfaG5vZGUodHAsIGh0KTsKKwl9IGVsc2UgeworCQlyZXR1cm4gLUVCVVNZOworCX0KIAogCXJldHVybiAwOwogfQpAQCAtNTY4LDcgKzU3NCw3IEBACiAJCWlmIChodCA9PSBOVUxMKQogCQkJcmV0dXJuIC1FTk9CVUZTOwogCQlodC0+dHBfYyA9IHRwX2M7Ci0JCWh0LT5yZWZjbnQgPSAwOworCQlodC0+cmVmY250ID0gMTsKIAkJaHQtPmRpdmlzb3IgPSBkaXZpc29yOwogCQlodC0+aGFuZGxlID0gaGFuZGxlOwogCQlodC0+cHJpbyA9IHRwLT5wcmlvOwpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2VtX3UzMi5jIGIvbmV0L3NjaGVkL2VtX3UzMi5jCmluZGV4IDExMjc5NmUuLjk1M2YxNDcgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9lbV91MzIuYworKysgYi9uZXQvc2NoZWQvZW1fdTMyLmMKQEAgLTM1LDcgKzM1LDcgQEAKIAlpZiAoIXRjZl92YWxpZF9vZmZzZXQoc2tiLCBwdHIsIHNpemVvZih1MzIpKSkKIAkJcmV0dXJuIDA7CiAKLQlyZXR1cm4gISgoKCoodTMyKikgcHRyKSAgXiBrZXktPnZhbCkgJiBrZXktPm1hc2spOworCXJldHVybiAhKCgoKihfX2JlMzIqKSBwdHIpICBeIGtleS0+dmFsKSAmIGtleS0+bWFzayk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgdGNmX2VtYXRjaF9vcHMgZW1fdTMyX29wcyA9IHsKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfYXBpLmMgYi9uZXQvc2NoZWQvc2NoX2FwaS5jCmluZGV4IDdlM2MwNDguLmZjODcwOGEgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfYXBpLmMKKysrIGIvbmV0L3NjaGVkL3NjaF9hcGkuYwpAQCAtMzg2LDYgKzM4Niw5IEBACiAJaWYgKG4gPT0gMCkKIAkJcmV0dXJuOwogCXdoaWxlICgocGFyZW50aWQgPSBzY2gtPnBhcmVudCkpIHsKKwkJaWYgKFRDX0hfTUFKKHBhcmVudGlkKSA9PSBUQ19IX01BSihUQ19IX0lOR1JFU1MpKQorCQkJcmV0dXJuOworCiAJCXNjaCA9IHFkaXNjX2xvb2t1cChzY2gtPmRldiwgVENfSF9NQUoocGFyZW50aWQpKTsKIAkJaWYgKHNjaCA9PSBOVUxMKSB7CiAJCQlXQVJOX09OKHBhcmVudGlkICE9IFRDX0hfUk9PVCk7CmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYyBiL25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jCmluZGV4IDEwYjVjMDguLmI3NDE2MTggMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jCisrKyBiL25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jCkBAIC0xODQsMTAgKzE4NCwyMiBAQAogCiB2b2lkIF9fcWRpc2NfcnVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiB7Ci0JZG8gewotCQlpZiAoIXFkaXNjX3Jlc3RhcnQoZGV2KSkKKwl1bnNpZ25lZCBsb25nIHN0YXJ0X3RpbWUgPSBqaWZmaWVzOworCisJd2hpbGUgKHFkaXNjX3Jlc3RhcnQoZGV2KSkgeworCQlpZiAobmV0aWZfcXVldWVfc3RvcHBlZChkZXYpKQogCQkJYnJlYWs7Ci0JfSB3aGlsZSAoIW5ldGlmX3F1ZXVlX3N0b3BwZWQoZGV2KSk7CisKKwkJLyoKKwkJICogUG9zdHBvbmUgcHJvY2Vzc2luZyBpZgorCQkgKiAxLiBhbm90aGVyIHByb2Nlc3MgbmVlZHMgdGhlIENQVTsKKwkJICogMi4gd2UndmUgYmVlbiBkb2luZyBpdCBmb3IgdG9vIGxvbmcuCisJCSAqLworCQlpZiAobmVlZF9yZXNjaGVkKCkgfHwgamlmZmllcyAhPSBzdGFydF90aW1lKSB7CisJCQluZXRpZl9zY2hlZHVsZShkZXYpOworCQkJYnJlYWs7CisJCX0KKwl9CiAKIAljbGVhcl9iaXQoX19MSU5LX1NUQVRFX1FESVNDX1JVTk5JTkcsICZkZXYtPnN0YXRlKTsKIH0KZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfaHRiLmMgYi9uZXQvc2NoZWQvc2NoX2h0Yi5jCmluZGV4IDc5NWM3NjEuLjY2MTQ4Y2MgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfaHRiLmMKKysrIGIvbmV0L3NjaGVkL3NjaF9odGIuYwpAQCAtNzExLDkgKzcxMSwxMSBAQAogICovCiBzdGF0aWMgcHNjaGVkX3RpbWVfdCBodGJfZG9fZXZlbnRzKHN0cnVjdCBodGJfc2NoZWQgKnEsIGludCBsZXZlbCkKIHsKLQlpbnQgaTsKLQotCWZvciAoaSA9IDA7IGkgPCA1MDA7IGkrKykgeworCS8qIGRvbid0IHJ1biBmb3IgbG9uZ2VyIHRoYW4gMiBqaWZmaWVzOyAyIGlzIHVzZWQgaW5zdGVhZCBvZgorCSAgIDEgdG8gc2ltcGxpZnkgdGhpbmdzIHdoZW4gamlmZnkgaXMgZ29pbmcgdG8gYmUgaW5jcmVtZW50ZWQKKwkgICB0b28gc29vbiAqLworCXVuc2lnbmVkIGxvbmcgc3RvcF9hdCA9IGppZmZpZXMgKyAyOworCXdoaWxlICh0aW1lX2JlZm9yZShqaWZmaWVzLCBzdG9wX2F0KSkgewogCQlzdHJ1Y3QgaHRiX2NsYXNzICpjbDsKIAkJbG9uZyBkaWZmOwogCQlzdHJ1Y3QgcmJfbm9kZSAqcCA9IHJiX2ZpcnN0KCZxLT53YWl0X3BxW2xldmVsXSk7CkBAIC03MzEsOSArNzMzLDggQEAKIAkJaWYgKGNsLT5jbW9kZSAhPSBIVEJfQ0FOX1NFTkQpCiAJCQlodGJfYWRkX3RvX3dhaXRfdHJlZShxLCBjbCwgZGlmZik7CiAJfQotCWlmIChuZXRfcmF0ZWxpbWl0KCkpCi0JCXByaW50ayhLRVJOX1dBUk5JTkcgImh0YjogdG9vIG1hbnkgZXZlbnRzICFcbiIpOwotCXJldHVybiBxLT5ub3cgKyBQU0NIRURfVElDS1NfUEVSX1NFQyAvIDEwOworCS8qIHRvbyBtdWNoIGxvYWQgLSBsZXQncyBjb250aW51ZSBvbiBuZXh0IGppZmZpZSAqLworCXJldHVybiBxLT5ub3cgKyBQU0NIRURfVElDS1NfUEVSX1NFQyAvIEhaOwogfQogCiAvKiBSZXR1cm5zIGNsYXNzLT5ub2RlK3ByaW8gZnJvbSBpZC10cmVlIHdoZXJlIGNsYXNzZSdzIGlkIGlzID49IGlkLiBOVUxMCmRpZmYgLS1naXQgYS9uZXQvc2N0cC9iaW5kX2FkZHIuYyBiL25ldC9zY3RwL2JpbmRfYWRkci5jCmluZGV4IGEyNzUxMWUuLmNlZWZkYTAgMTAwNjQ0Ci0tLSBhL25ldC9zY3RwL2JpbmRfYWRkci5jCisrKyBiL25ldC9zY3RwL2JpbmRfYWRkci5jCkBAIC0yMDksNiArMjA5LDcgQEAKIGludCBzY3RwX2RlbF9iaW5kX2FkZHIoc3RydWN0IHNjdHBfYmluZF9hZGRyICpicCwgdW5pb24gc2N0cF9hZGRyICpkZWxfYWRkcikKIHsKIAlzdHJ1Y3Qgc2N0cF9zb2NrYWRkcl9lbnRyeSAqYWRkciwgKnRlbXA7CisJaW50IGZvdW5kID0gMDsKIAogCS8qIFdlIGhvbGQgdGhlIHNvY2tldCBsb2NrIHdoZW4gY2FsbGluZyB0aGlzIGZ1bmN0aW9uLAogCSAqIGFuZCB0aGF0IGFjdHMgYXMgYSB3cml0ZXIgc3luY2hyb25pemluZyBsb2NrLgpAQCAtMjE2LDEzICsyMTcsMTQgQEAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoYWRkciwgdGVtcCwgJmJwLT5hZGRyZXNzX2xpc3QsIGxpc3QpIHsKIAkJaWYgKHNjdHBfY21wX2FkZHJfZXhhY3QoJmFkZHItPmEsIGRlbF9hZGRyKSkgewogCQkJLyogRm91bmQgdGhlIGV4YWN0IG1hdGNoLiAqLworCQkJZm91bmQgPSAxOwogCQkJYWRkci0+dmFsaWQgPSAwOwogCQkJbGlzdF9kZWxfcmN1KCZhZGRyLT5saXN0KTsKIAkJCWJyZWFrOwogCQl9CiAJfQogCi0JaWYgKGFkZHIgJiYgIWFkZHItPnZhbGlkKSB7CisJaWYgKGZvdW5kKSB7CiAJCWNhbGxfcmN1KCZhZGRyLT5yY3UsIHNjdHBfbG9jYWxfYWRkcl9mcmVlKTsKIAkJU0NUUF9EQkdfT0JKQ05UX0RFQyhhZGRyKTsKIAkJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9uZXQvc2N0cC9pbnB1dC5jIGIvbmV0L3NjdHAvaW5wdXQuYwppbmRleCA1N2ZlMmY4Li44MTJmZjE3IDEwMDY0NAotLS0gYS9uZXQvc2N0cC9pbnB1dC5jCisrKyBiL25ldC9zY3RwL2lucHV0LmMKQEAgLTk0NCw3ICs5NDQsNyBAQAogc3RhdGljIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICpfX3NjdHBfcmN2X2FzY29uZl9sb29rdXAoCiAJCQkJCXNjdHBfY2h1bmtoZHJfdCAqY2gsCiAJCQkJCWNvbnN0IHVuaW9uIHNjdHBfYWRkciAqbGFkZHIsCi0JCQkJCV9fYmUzMiBwZWVyX3BvcnQsCisJCQkJCV9fYmUxNiBwZWVyX3BvcnQsCiAJCQkJCXN0cnVjdCBzY3RwX3RyYW5zcG9ydCAqKnRyYW5zcG9ydHApCiB7CiAJc2N0cF9hZGRpcF9jaHVua190ICphc2NvbmYgPSAoc3RydWN0IHNjdHBfYWRkaXBfY2h1bmsgKiljaDsKZGlmZiAtLWdpdCBhL25ldC9zY3RwL2lwdjYuYyBiL25ldC9zY3RwL2lwdjYuYwppbmRleCA4N2Y5NDA1Li44NWYxNDk1IDEwMDY0NAotLS0gYS9uZXQvc2N0cC9pcHY2LmMKKysrIGIvbmV0L3NjdHAvaXB2Ni5jCkBAIC04OSw2ICs4OSw3IEBACiAJc3RydWN0IGluZXQ2X2lmYWRkciAqaWZhID0gKHN0cnVjdCBpbmV0Nl9pZmFkZHIgKilwdHI7CiAJc3RydWN0IHNjdHBfc29ja2FkZHJfZW50cnkgKmFkZHIgPSBOVUxMOwogCXN0cnVjdCBzY3RwX3NvY2thZGRyX2VudHJ5ICp0ZW1wOworCWludCBmb3VuZCA9IDA7CiAKIAlzd2l0Y2ggKGV2KSB7CiAJY2FzZSBORVRERVZfVVA6CkBAIC0xMDksMTUgKzExMCwxNyBAQAogCQlzcGluX2xvY2tfYmgoJnNjdHBfbG9jYWxfYWRkcl9sb2NrKTsKIAkJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGFkZHIsIHRlbXAsCiAJCQkJCSZzY3RwX2xvY2FsX2FkZHJfbGlzdCwgbGlzdCkgewotCQkJaWYgKGlwdjZfYWRkcl9lcXVhbCgmYWRkci0+YS52Ni5zaW42X2FkZHIsCi0JCQkJCSAgICAgJmlmYS0+YWRkcikpIHsKKwkJCWlmIChhZGRyLT5hLnNhLnNhX2ZhbWlseSA9PSBBRl9JTkVUNiAmJgorCQkJCQlpcHY2X2FkZHJfZXF1YWwoJmFkZHItPmEudjYuc2luNl9hZGRyLAorCQkJCQkJJmlmYS0+YWRkcikpIHsKKwkJCQlmb3VuZCA9IDE7CiAJCQkJYWRkci0+dmFsaWQgPSAwOwogCQkJCWxpc3RfZGVsX3JjdSgmYWRkci0+bGlzdCk7CiAJCQkJYnJlYWs7CiAJCQl9CiAJCX0KIAkJc3Bpbl91bmxvY2tfYmgoJnNjdHBfbG9jYWxfYWRkcl9sb2NrKTsKLQkJaWYgKGFkZHIgJiYgIWFkZHItPnZhbGlkKQorCQlpZiAoZm91bmQpCiAJCQljYWxsX3JjdSgmYWRkci0+cmN1LCBzY3RwX2xvY2FsX2FkZHJfZnJlZSk7CiAJCWJyZWFrOwogCX0KQEAgLTEwMTIsMTUgKzEwMTUsMjQgQEAKIH07CiAKIC8qIEluaXRpYWxpemUgSVB2NiBzdXBwb3J0IGFuZCByZWdpc3RlciB3aXRoIHNvY2tldCBsYXllci4gICovCi1pbnQgc2N0cF92Nl9pbml0KHZvaWQpCit2b2lkIHNjdHBfdjZfcGZfaW5pdCh2b2lkKQogewotCWludCByYzsKLQogCS8qIFJlZ2lzdGVyIHRoZSBTQ1RQIHNwZWNpZmljIFBGX0lORVQ2IGZ1bmN0aW9ucy4gKi8KIAlzY3RwX3JlZ2lzdGVyX3BmKCZzY3RwX3BmX2luZXQ2LCBQRl9JTkVUNik7CiAKIAkvKiBSZWdpc3RlciB0aGUgU0NUUCBzcGVjaWZpYyBBRl9JTkVUNiBmdW5jdGlvbnMuICovCiAJc2N0cF9yZWdpc3Rlcl9hZigmc2N0cF9hZl9pbmV0Nik7Cit9CisKK3ZvaWQgc2N0cF92Nl9wZl9leGl0KHZvaWQpCit7CisJbGlzdF9kZWwoJnNjdHBfYWZfaW5ldDYubGlzdCk7Cit9CisKKy8qIEluaXRpYWxpemUgSVB2NiBzdXBwb3J0IGFuZCByZWdpc3RlciB3aXRoIHNvY2tldCBsYXllci4gICovCitpbnQgc2N0cF92Nl9wcm90b3N3X2luaXQodm9pZCkKK3sKKwlpbnQgcmM7CiAKIAlyYyA9IHByb3RvX3JlZ2lzdGVyKCZzY3RwdjZfcHJvdCwgMSk7CiAJaWYgKHJjKQpAQCAtMTAzMyw2ICsxMDQ1LDE0IEBACiAJcmV0dXJuIDA7CiB9CiAKK3ZvaWQgc2N0cF92Nl9wcm90b3N3X2V4aXQodm9pZCkKK3sKKwlpbmV0Nl91bnJlZ2lzdGVyX3Byb3Rvc3coJnNjdHB2Nl9zZXFwYWNrZXRfcHJvdG9zdyk7CisJaW5ldDZfdW5yZWdpc3Rlcl9wcm90b3N3KCZzY3RwdjZfc3RyZWFtX3Byb3Rvc3cpOworCXByb3RvX3VucmVnaXN0ZXIoJnNjdHB2Nl9wcm90KTsKK30KKworCiAvKiBSZWdpc3RlciB3aXRoIGluZXQ2IGxheWVyLiAqLwogaW50IHNjdHBfdjZfYWRkX3Byb3RvY29sKHZvaWQpCiB7CkBAIC0xMDQ1LDE1ICsxMDY1LDYgQEAKIAlyZXR1cm4gMDsKIH0KIAotLyogSVB2NiBzcGVjaWZpYyBleGl0IHN1cHBvcnQuICovCi12b2lkIHNjdHBfdjZfZXhpdCh2b2lkKQotewotCWluZXQ2X3VucmVnaXN0ZXJfcHJvdG9zdygmc2N0cHY2X3NlcXBhY2tldF9wcm90b3N3KTsKLQlpbmV0Nl91bnJlZ2lzdGVyX3Byb3Rvc3coJnNjdHB2Nl9zdHJlYW1fcHJvdG9zdyk7Ci0JcHJvdG9fdW5yZWdpc3Rlcigmc2N0cHY2X3Byb3QpOwotCWxpc3RfZGVsKCZzY3RwX2FmX2luZXQ2Lmxpc3QpOwotfQotCiAvKiBVbnJlZ2lzdGVyIHdpdGggaW5ldDYgbGF5ZXIuICovCiB2b2lkIHNjdHBfdjZfZGVsX3Byb3RvY29sKHZvaWQpCiB7CmRpZmYgLS1naXQgYS9uZXQvc2N0cC9vdXRxdWV1ZS5jIGIvbmV0L3NjdHAvb3V0cXVldWUuYwppbmRleCAxYmIzYzVjLi5jMDcxNDQ2IDEwMDY0NAotLS0gYS9uZXQvc2N0cC9vdXRxdWV1ZS5jCisrKyBiL25ldC9zY3RwL291dHF1ZXVlLmMKQEAgLTc5Myw2ICs3OTMsOSBAQAogCQkJYnJlYWs7CiAKIAkJY2FzZSBTQ1RQX0NJRF9BQk9SVDoKKwkJCWlmIChzY3RwX3Rlc3RfVF9iaXQoY2h1bmspKSB7CisJCQkJcGFja2V0LT52dGFnID0gYXNvYy0+Yy5teV92dGFnOworCQkJfQogCQljYXNlIFNDVFBfQ0lEX1NBQ0s6CiAJCWNhc2UgU0NUUF9DSURfSEVBUlRCRUFUOgogCQljYXNlIFNDVFBfQ0lEX0hFQVJUQkVBVF9BQ0s6CmRpZmYgLS1naXQgYS9uZXQvc2N0cC9wcm90b2NvbC5jIGIvbmV0L3NjdHAvcHJvdG9jb2wuYwppbmRleCA2ODg1NDZkLi5jMmRkNjVkIDEwMDY0NAotLS0gYS9uZXQvc2N0cC9wcm90b2NvbC5jCisrKyBiL25ldC9zY3RwL3Byb3RvY29sLmMKQEAgLTMzNywxNCArMzM3LDE0IEBACiBzdGF0aWMgdm9pZCBzY3RwX3Y0X2luYWRkcl9hbnkodW5pb24gc2N0cF9hZGRyICphZGRyLCBfX2JlMTYgcG9ydCkKIHsKIAlhZGRyLT52NC5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKLQlhZGRyLT52NC5zaW5fYWRkci5zX2FkZHIgPSBJTkFERFJfQU5ZOworCWFkZHItPnY0LnNpbl9hZGRyLnNfYWRkciA9IGh0b25sKElOQUREUl9BTlkpOwogCWFkZHItPnY0LnNpbl9wb3J0ID0gcG9ydDsKIH0KIAogLyogSXMgdGhpcyBhIHdpbGRjYXJkIGFkZHJlc3M/ICovCiBzdGF0aWMgaW50IHNjdHBfdjRfaXNfYW55KGNvbnN0IHVuaW9uIHNjdHBfYWRkciAqYWRkcikKIHsKLQlyZXR1cm4gSU5BRERSX0FOWSA9PSBhZGRyLT52NC5zaW5fYWRkci5zX2FkZHI7CisJcmV0dXJuIGh0b25sKElOQUREUl9BTlkpID09IGFkZHItPnY0LnNpbl9hZGRyLnNfYWRkcjsKIH0KIAogLyogVGhpcyBmdW5jdGlvbiBjaGVja3MgaWYgdGhlIGFkZHJlc3MgaXMgYSB2YWxpZCBhZGRyZXNzIHRvIGJlIHVzZWQgZm9yCkBAIC0zNzUsNyArMzc1LDcgQEAKIAlpbnQgcmV0ID0gaW5ldF9hZGRyX3R5cGUoJmluaXRfbmV0LCBhZGRyLT52NC5zaW5fYWRkci5zX2FkZHIpOwogCiAKLQlpZiAoYWRkci0+djQuc2luX2FkZHIuc19hZGRyICE9IElOQUREUl9BTlkgJiYKKwlpZiAoYWRkci0+djQuc2luX2FkZHIuc19hZGRyICE9IGh0b25sKElOQUREUl9BTlkpICYmCiAJICAgcmV0ICE9IFJUTl9MT0NBTCAmJgogCSAgICFzcC0+aW5ldC5mcmVlYmluZCAmJgogCSAgICFzeXNjdGxfaXBfbm9ubG9jYWxfYmluZCkKQEAgLTYyOCw2ICs2MjgsNyBAQAogCXN0cnVjdCBpbl9pZmFkZHIgKmlmYSA9IChzdHJ1Y3QgaW5faWZhZGRyICopcHRyOwogCXN0cnVjdCBzY3RwX3NvY2thZGRyX2VudHJ5ICphZGRyID0gTlVMTDsKIAlzdHJ1Y3Qgc2N0cF9zb2NrYWRkcl9lbnRyeSAqdGVtcDsKKwlpbnQgZm91bmQgPSAwOwogCiAJc3dpdGNoIChldikgewogCWNhc2UgTkVUREVWX1VQOgpAQCAtNjQ2LDE0ICs2NDcsMTcgQEAKIAkJc3Bpbl9sb2NrX2JoKCZzY3RwX2xvY2FsX2FkZHJfbG9jayk7CiAJCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShhZGRyLCB0ZW1wLAogCQkJCQkmc2N0cF9sb2NhbF9hZGRyX2xpc3QsIGxpc3QpIHsKLQkJCWlmIChhZGRyLT5hLnY0LnNpbl9hZGRyLnNfYWRkciA9PSBpZmEtPmlmYV9sb2NhbCkgeworCQkJaWYgKGFkZHItPmEuc2Euc2FfZmFtaWx5ID09IEFGX0lORVQgJiYKKwkJCQkJYWRkci0+YS52NC5zaW5fYWRkci5zX2FkZHIgPT0KKwkJCQkJaWZhLT5pZmFfbG9jYWwpIHsKKwkJCQlmb3VuZCA9IDE7CiAJCQkJYWRkci0+dmFsaWQgPSAwOwogCQkJCWxpc3RfZGVsX3JjdSgmYWRkci0+bGlzdCk7CiAJCQkJYnJlYWs7CiAJCQl9CiAJCX0KIAkJc3Bpbl91bmxvY2tfYmgoJnNjdHBfbG9jYWxfYWRkcl9sb2NrKTsKLQkJaWYgKGFkZHIgJiYgIWFkZHItPnZhbGlkKQorCQlpZiAoZm91bmQpCiAJCQljYWxsX3JjdSgmYWRkci0+cmN1LCBzY3RwX2xvY2FsX2FkZHJfZnJlZSk7CiAJCWJyZWFrOwogCX0KQEAgLTc4Myw4ICs3ODcsOCBAQAogCS8qIFBGX0lORVQgb25seSBzdXBwb3J0cyBBRl9JTkVUIGFkZHJlc3Nlcy4gKi8KIAlpZiAoYWRkcjEtPnNhLnNhX2ZhbWlseSAhPSBhZGRyMi0+c2Euc2FfZmFtaWx5KQogCQlyZXR1cm4gMDsKLQlpZiAoSU5BRERSX0FOWSA9PSBhZGRyMS0+djQuc2luX2FkZHIuc19hZGRyIHx8Ci0JICAgIElOQUREUl9BTlkgPT0gYWRkcjItPnY0LnNpbl9hZGRyLnNfYWRkcikKKwlpZiAoaHRvbmwoSU5BRERSX0FOWSkgPT0gYWRkcjEtPnY0LnNpbl9hZGRyLnNfYWRkciB8fAorCSAgICBodG9ubChJTkFERFJfQU5ZKSA9PSBhZGRyMi0+djQuc2luX2FkZHIuc19hZGRyKQogCQlyZXR1cm4gMTsKIAlpZiAoYWRkcjEtPnY0LnNpbl9hZGRyLnNfYWRkciA9PSBhZGRyMi0+djQuc2luX2FkZHIuc19hZGRyKQogCQlyZXR1cm4gMTsKQEAgLTk5MCw2ICs5OTQsNTggQEAKIAlmcmVlX3BlcmNwdShzY3RwX3N0YXRpc3RpY3NbMV0pOwogfQogCitzdGF0aWMgdm9pZCBzY3RwX3Y0X3BmX2luaXQodm9pZCkKK3sKKwkvKiBJbml0aWFsaXplIHRoZSBTQ1RQIHNwZWNpZmljIFBGIGZ1bmN0aW9ucy4gKi8KKwlzY3RwX3JlZ2lzdGVyX3BmKCZzY3RwX3BmX2luZXQsIFBGX0lORVQpOworCXNjdHBfcmVnaXN0ZXJfYWYoJnNjdHBfYWZfaW5ldCk7Cit9CisKK3N0YXRpYyB2b2lkIHNjdHBfdjRfcGZfZXhpdCh2b2lkKQoreworCWxpc3RfZGVsKCZzY3RwX2FmX2luZXQubGlzdCk7Cit9CisKK3N0YXRpYyBpbnQgc2N0cF92NF9wcm90b3N3X2luaXQodm9pZCkKK3sKKwlpbnQgcmM7CisKKwlyYyA9IHByb3RvX3JlZ2lzdGVyKCZzY3RwX3Byb3QsIDEpOworCWlmIChyYykKKwkJcmV0dXJuIHJjOworCisJLyogUmVnaXN0ZXIgU0NUUChVRFAgYW5kIFRDUCBzdHlsZSkgd2l0aCBzb2NrZXQgbGF5ZXIuICAqLworCWluZXRfcmVnaXN0ZXJfcHJvdG9zdygmc2N0cF9zZXFwYWNrZXRfcHJvdG9zdyk7CisJaW5ldF9yZWdpc3Rlcl9wcm90b3N3KCZzY3RwX3N0cmVhbV9wcm90b3N3KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBzY3RwX3Y0X3Byb3Rvc3dfZXhpdCh2b2lkKQoreworCWluZXRfdW5yZWdpc3Rlcl9wcm90b3N3KCZzY3RwX3N0cmVhbV9wcm90b3N3KTsKKwlpbmV0X3VucmVnaXN0ZXJfcHJvdG9zdygmc2N0cF9zZXFwYWNrZXRfcHJvdG9zdyk7CisJcHJvdG9fdW5yZWdpc3Rlcigmc2N0cF9wcm90KTsKK30KKworc3RhdGljIGludCBzY3RwX3Y0X2FkZF9wcm90b2NvbCh2b2lkKQoreworCS8qIFJlZ2lzdGVyIG5vdGlmaWVyIGZvciBpbmV0IGFkZHJlc3MgYWRkaXRpb25zL2RlbGV0aW9ucy4gKi8KKwlyZWdpc3Rlcl9pbmV0YWRkcl9ub3RpZmllcigmc2N0cF9pbmV0YWRkcl9ub3RpZmllcik7CisKKwkvKiBSZWdpc3RlciBTQ1RQIHdpdGggaW5ldCBsYXllci4gICovCisJaWYgKGluZXRfYWRkX3Byb3RvY29sKCZzY3RwX3Byb3RvY29sLCBJUFBST1RPX1NDVFApIDwgMCkKKwkJcmV0dXJuIC1FQUdBSU47CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgc2N0cF92NF9kZWxfcHJvdG9jb2wodm9pZCkKK3sKKwlpbmV0X2RlbF9wcm90b2NvbCgmc2N0cF9wcm90b2NvbCwgSVBQUk9UT19TQ1RQKTsKKwl1bnJlZ2lzdGVyX2luZXRhZGRyX25vdGlmaWVyKCZzY3RwX2luZXRhZGRyX25vdGlmaWVyKTsKK30KKwogLyogSW5pdGlhbGl6ZSB0aGUgdW5pdmVyc2UgaW50byBzb21ldGhpbmcgc2Vuc2libGUuICAqLwogU0NUUF9TVEFUSUMgX19pbml0IGludCBzY3RwX2luaXQodm9pZCkKIHsKQEAgLTEwMzMsOCArMTA4OSw2IEBACiAJLyogSW5pdGlhbGl6ZSBvYmplY3QgY291bnQgZGVidWdnaW5nLiAgKi8KIAlzY3RwX2RiZ19vYmpjbnRfaW5pdCgpOwogCi0JLyogSW5pdGlhbGl6ZSB0aGUgU0NUUCBzcGVjaWZpYyBQRiBmdW5jdGlvbnMuICovCi0Jc2N0cF9yZWdpc3Rlcl9wZigmc2N0cF9wZl9pbmV0LCBQRl9JTkVUKTsKIAkvKgogCSAqIDE0LiBTdWdnZXN0ZWQgU0NUUCBQcm90b2NvbCBQYXJhbWV0ZXIgVmFsdWVzCiAJICovCkBAIC0xMTkyLDE5ICsxMjQ2LDIyIEBACiAJc2N0cF9zeXNjdGxfcmVnaXN0ZXIoKTsKIAogCUlOSVRfTElTVF9IRUFEKCZzY3RwX2FkZHJlc3NfZmFtaWxpZXMpOwotCXNjdHBfcmVnaXN0ZXJfYWYoJnNjdHBfYWZfaW5ldCk7CisJc2N0cF92NF9wZl9pbml0KCk7CisJc2N0cF92Nl9wZl9pbml0KCk7CiAKLQlzdGF0dXMgPSBwcm90b19yZWdpc3Rlcigmc2N0cF9wcm90LCAxKTsKKwkvKiBJbml0aWFsaXplIHRoZSBsb2NhbCBhZGRyZXNzIGxpc3QuICovCisJSU5JVF9MSVNUX0hFQUQoJnNjdHBfbG9jYWxfYWRkcl9saXN0KTsKKwlzcGluX2xvY2tfaW5pdCgmc2N0cF9sb2NhbF9hZGRyX2xvY2spOworCXNjdHBfZ2V0X2xvY2FsX2FkZHJfbGlzdCgpOworCisJc3RhdHVzID0gc2N0cF92NF9wcm90b3N3X2luaXQoKTsKKwogCWlmIChzdGF0dXMpCi0JCWdvdG8gZXJyX3Byb3RvX3JlZ2lzdGVyOworCQlnb3RvIGVycl9wcm90b3N3X2luaXQ7CiAKLQkvKiBSZWdpc3RlciBTQ1RQKFVEUCBhbmQgVENQIHN0eWxlKSB3aXRoIHNvY2tldCBsYXllci4gICovCi0JaW5ldF9yZWdpc3Rlcl9wcm90b3N3KCZzY3RwX3NlcXBhY2tldF9wcm90b3N3KTsKLQlpbmV0X3JlZ2lzdGVyX3Byb3Rvc3coJnNjdHBfc3RyZWFtX3Byb3Rvc3cpOwotCi0Jc3RhdHVzID0gc2N0cF92Nl9pbml0KCk7CisJc3RhdHVzID0gc2N0cF92Nl9wcm90b3N3X2luaXQoKTsKIAlpZiAoc3RhdHVzKQotCQlnb3RvIGVycl92Nl9pbml0OworCQlnb3RvIGVycl92Nl9wcm90b3N3X2luaXQ7CiAKIAkvKiBJbml0aWFsaXplIHRoZSBjb250cm9sIGlub2RlL3NvY2tldCBmb3IgaGFuZGxpbmcgT09UQiBwYWNrZXRzLiAgKi8KIAlpZiAoKHN0YXR1cyA9IHNjdHBfY3RsX3NvY2tfaW5pdCgpKSkgewpAQCAtMTIxMywxOSArMTI3MCw5IEBACiAJCWdvdG8gZXJyX2N0bF9zb2NrX2luaXQ7CiAJfQogCi0JLyogSW5pdGlhbGl6ZSB0aGUgbG9jYWwgYWRkcmVzcyBsaXN0LiAqLwotCUlOSVRfTElTVF9IRUFEKCZzY3RwX2xvY2FsX2FkZHJfbGlzdCk7Ci0Jc3Bpbl9sb2NrX2luaXQoJnNjdHBfbG9jYWxfYWRkcl9sb2NrKTsKLQlzY3RwX2dldF9sb2NhbF9hZGRyX2xpc3QoKTsKLQotCS8qIFJlZ2lzdGVyIG5vdGlmaWVyIGZvciBpbmV0IGFkZHJlc3MgYWRkaXRpb25zL2RlbGV0aW9ucy4gKi8KLQlyZWdpc3Rlcl9pbmV0YWRkcl9ub3RpZmllcigmc2N0cF9pbmV0YWRkcl9ub3RpZmllcik7Ci0KLQkvKiBSZWdpc3RlciBTQ1RQIHdpdGggaW5ldCBsYXllci4gICovCi0JaWYgKGluZXRfYWRkX3Byb3RvY29sKCZzY3RwX3Byb3RvY29sLCBJUFBST1RPX1NDVFApIDwgMCkgewotCQlzdGF0dXMgPSAtRUFHQUlOOworCXN0YXR1cyA9IHNjdHBfdjRfYWRkX3Byb3RvY29sKCk7CisJaWYgKHN0YXR1cykKIAkJZ290byBlcnJfYWRkX3Byb3RvY29sOwotCX0KIAogCS8qIFJlZ2lzdGVyIFNDVFAgd2l0aCBpbmV0NiBsYXllci4gICovCiAJc3RhdHVzID0gc2N0cF92Nl9hZGRfcHJvdG9jb2woKTsKQEAgLTEyMzYsMTggKzEyODMsMTggQEAKIG91dDoKIAlyZXR1cm4gc3RhdHVzOwogZXJyX3Y2X2FkZF9wcm90b2NvbDoKLQlpbmV0X2RlbF9wcm90b2NvbCgmc2N0cF9wcm90b2NvbCwgSVBQUk9UT19TQ1RQKTsKLQl1bnJlZ2lzdGVyX2luZXRhZGRyX25vdGlmaWVyKCZzY3RwX2luZXRhZGRyX25vdGlmaWVyKTsKKwlzY3RwX3Y2X2RlbF9wcm90b2NvbCgpOwogZXJyX2FkZF9wcm90b2NvbDoKLQlzY3RwX2ZyZWVfbG9jYWxfYWRkcl9saXN0KCk7CisJc2N0cF92NF9kZWxfcHJvdG9jb2woKTsKIAlzb2NrX3JlbGVhc2Uoc2N0cF9jdGxfc29ja2V0KTsKIGVycl9jdGxfc29ja19pbml0OgotCXNjdHBfdjZfZXhpdCgpOwotZXJyX3Y2X2luaXQ6Ci0JaW5ldF91bnJlZ2lzdGVyX3Byb3Rvc3coJnNjdHBfc3RyZWFtX3Byb3Rvc3cpOwotCWluZXRfdW5yZWdpc3Rlcl9wcm90b3N3KCZzY3RwX3NlcXBhY2tldF9wcm90b3N3KTsKLQlwcm90b191bnJlZ2lzdGVyKCZzY3RwX3Byb3QpOwotZXJyX3Byb3RvX3JlZ2lzdGVyOgorCXNjdHBfdjZfcHJvdG9zd19leGl0KCk7CitlcnJfdjZfcHJvdG9zd19pbml0OgorCXNjdHBfdjRfcHJvdG9zd19leGl0KCk7CitlcnJfcHJvdG9zd19pbml0OgorCXNjdHBfZnJlZV9sb2NhbF9hZGRyX2xpc3QoKTsKKwlzY3RwX3Y0X3BmX2V4aXQoKTsKKwlzY3RwX3Y2X3BmX2V4aXQoKTsKIAlzY3RwX3N5c2N0bF91bnJlZ2lzdGVyKCk7CiAJbGlzdF9kZWwoJnNjdHBfYWZfaW5ldC5saXN0KTsKIAlmcmVlX3BhZ2VzKCh1bnNpZ25lZCBsb25nKXNjdHBfcG9ydF9oYXNodGFibGUsCkBAIC0xMjgwLDIzICsxMzI3LDIxIEBACiAKIAkvKiBVbnJlZ2lzdGVyIHdpdGggaW5ldDYvaW5ldCBsYXllcnMuICovCiAJc2N0cF92Nl9kZWxfcHJvdG9jb2woKTsKLQlpbmV0X2RlbF9wcm90b2NvbCgmc2N0cF9wcm90b2NvbCwgSVBQUk9UT19TQ1RQKTsKLQotCS8qIFVucmVnaXN0ZXIgbm90aWZpZXIgZm9yIGluZXQgYWRkcmVzcyBhZGRpdGlvbnMvZGVsZXRpb25zLiAqLwotCXVucmVnaXN0ZXJfaW5ldGFkZHJfbm90aWZpZXIoJnNjdHBfaW5ldGFkZHJfbm90aWZpZXIpOwotCi0JLyogRnJlZSB0aGUgbG9jYWwgYWRkcmVzcyBsaXN0LiAgKi8KLQlzY3RwX2ZyZWVfbG9jYWxfYWRkcl9saXN0KCk7CisJc2N0cF92NF9kZWxfcHJvdG9jb2woKTsKIAogCS8qIEZyZWUgdGhlIGNvbnRyb2wgZW5kcG9pbnQuICAqLwogCXNvY2tfcmVsZWFzZShzY3RwX2N0bF9zb2NrZXQpOwogCi0JLyogQ2xlYW51cCB2NiBpbml0aWFsaXphdGlvbnMuICovCi0Jc2N0cF92Nl9leGl0KCk7CisJLyogRnJlZSBwcm90b3N3IHJlZ2lzdHJhdGlvbnMgKi8KKwlzY3RwX3Y2X3Byb3Rvc3dfZXhpdCgpOworCXNjdHBfdjRfcHJvdG9zd19leGl0KCk7CisKKwkvKiBGcmVlIHRoZSBsb2NhbCBhZGRyZXNzIGxpc3QuICAqLworCXNjdHBfZnJlZV9sb2NhbF9hZGRyX2xpc3QoKTsKIAogCS8qIFVucmVnaXN0ZXIgd2l0aCBzb2NrZXQgbGF5ZXIuICovCi0JaW5ldF91bnJlZ2lzdGVyX3Byb3Rvc3coJnNjdHBfc3RyZWFtX3Byb3Rvc3cpOwotCWluZXRfdW5yZWdpc3Rlcl9wcm90b3N3KCZzY3RwX3NlcXBhY2tldF9wcm90b3N3KTsKKwlzY3RwX3Y2X3BmX2V4aXQoKTsKKwlzY3RwX3Y0X3BmX2V4aXQoKTsKIAogCXNjdHBfc3lzY3RsX3VucmVnaXN0ZXIoKTsKIAlsaXN0X2RlbCgmc2N0cF9hZl9pbmV0Lmxpc3QpOwpAQCAtMTMxNSw4ICsxMzYwLDYgQEAKIAogCWttZW1fY2FjaGVfZGVzdHJveShzY3RwX2NodW5rX2NhY2hlcCk7CiAJa21lbV9jYWNoZV9kZXN0cm95KHNjdHBfYnVja2V0X2NhY2hlcCk7Ci0KLQlwcm90b191bnJlZ2lzdGVyKCZzY3RwX3Byb3QpOwogfQogCiBtb2R1bGVfaW5pdChzY3RwX2luaXQpOwpkaWZmIC0tZ2l0IGEvbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jIGIvbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jCmluZGV4IGU0NWJlNGUuLjM2ZWJiMzkgMTAwNjQ0Ci0tLSBhL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuYworKysgYi9uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMKQEAgLTE5ODIsNyArMTk4MiwxMCBAQAogCQkJCQlzdHJ1Y3Qgc2N0cF9jaHVuayAqY2h1bmssCiAJCQkJCXN0cnVjdCBzY3RwX2NodW5rICoqZXJyX2NodW5rKQogeworCXN0cnVjdCBzY3RwX2htYWNfYWxnb19wYXJhbSAqaG1hY3M7CiAJaW50IHJldHZhbCA9IFNDVFBfSUVSUk9SX05PX0VSUk9SOworCV9fdTE2IG5fZWx0LCBpZCA9IDA7CisJaW50IGk7CiAKIAkvKiBGSVhNRSAtIFRoaXMgcm91dGluZSBpcyBub3QgbG9va2luZyBhdCBlYWNoIHBhcmFtZXRlciBwZXIgdGhlCiAJICogY2h1bmsgdHlwZSwgaS5lLiwgdW5yZWNvZ25pemVkIHBhcmFtZXRlcnMgc2hvdWxkIGJlIGZ1cnRoZXIKQEAgLTIwNTYsOSArMjA1OSwyOSBAQAogCQlicmVhazsKIAogCWNhc2UgU0NUUF9QQVJBTV9ITUFDX0FMR086Ci0JCWlmIChzY3RwX2F1dGhfZW5hYmxlKQotCQkJYnJlYWs7Ci0JCS8qIEZhbGwgVGhyb3VnaCAqLworCQlpZiAoIXNjdHBfYXV0aF9lbmFibGUpCisJCQlnb3RvIGZhbGx0aHJvdWdoOworCisJCWhtYWNzID0gKHN0cnVjdCBzY3RwX2htYWNfYWxnb19wYXJhbSAqKXBhcmFtLnA7CisJCW5fZWx0ID0gKG50b2hzKHBhcmFtLnAtPmxlbmd0aCkgLSBzaXplb2Yoc2N0cF9wYXJhbWhkcl90KSkgPj4gMTsKKworCQkvKiBTQ1RQLUFVVEg6IFNlY3Rpb24gNi4xCisJCSAqIFRoZSBITUFDIGFsZ29yaXRobSBiYXNlZCBvbiBTSEEtMSBNVVNUIGJlIHN1cHBvcnRlZCBhbmQKKwkJICogaW5jbHVkZWQgaW4gdGhlIEhNQUMtQUxHTyBwYXJhbWV0ZXIuCisJCSAqLworCQlmb3IgKGkgPSAwOyBpIDwgbl9lbHQ7IGkrKykgeworCQkJaWQgPSBudG9ocyhobWFjcy0+aG1hY19pZHNbaV0pOworCisJCQlpZiAoaWQgPT0gU0NUUF9BVVRIX0hNQUNfSURfU0hBMSkKKwkJCQlicmVhazsKKwkJfQorCisJCWlmIChpZCAhPSBTQ1RQX0FVVEhfSE1BQ19JRF9TSEExKSB7CisJCQlzY3RwX3Byb2Nlc3NfaW52X3BhcmFtbGVuZ3RoKGFzb2MsIHBhcmFtLnAsIGNodW5rLAorCQkJCQkJICAgICBlcnJfY2h1bmspOworCQkJcmV0dmFsID0gU0NUUF9JRVJST1JfQUJPUlQ7CisJCX0KKwkJYnJlYWs7CiBmYWxsdGhyb3VnaDoKIAlkZWZhdWx0OgogCQlTQ1RQX0RFQlVHX1BSSU5USygiVW5yZWNvZ25pemVkIHBhcmFtOiAlZCBmb3IgY2h1bmsgJWQuXG4iLApAQCAtMjM3NSw2ICsyMzk4LDE0IEBACiAJCWFzb2MtPnBlZXIuaXB2NF9hZGRyZXNzID0gMDsKIAkJYXNvYy0+cGVlci5pcHY2X2FkZHJlc3MgPSAwOwogCisJCS8qIEFzc3VtZSB0aGF0IHBlZXIgc3VwcG9ydHMgdGhlIGFkZHJlc3MgZmFtaWx5CisJCSAqIGJ5IHdoaWNoIGl0IHNlbmRzIGEgcGFja2V0LgorCQkgKi8KKwkJaWYgKHBlZXJfYWRkci0+c2Euc2FfZmFtaWx5ID09IEFGX0lORVQ2KQorCQkJYXNvYy0+cGVlci5pcHY2X2FkZHJlc3MgPSAxOworCQllbHNlIGlmIChwZWVyX2FkZHItPnNhLnNhX2ZhbWlseSA9PSBBRl9JTkVUKQorCQkJYXNvYy0+cGVlci5pcHY0X2FkZHJlc3MgPSAxOworCiAJCS8qIEN5Y2xlIHRocm91Z2ggYWRkcmVzcyB0eXBlczsgYXZvaWQgZGl2aWRlIGJ5IDAuICovCiAJCXNhdCA9IG50b2hzKHBhcmFtLnAtPmxlbmd0aCkgLSBzaXplb2Yoc2N0cF9wYXJhbWhkcl90KTsKIAkJaWYgKHNhdCkKZGlmZiAtLWdpdCBhL25ldC9zY3RwL3NtX3NpZGVlZmZlY3QuYyBiL25ldC9zY3RwL3NtX3NpZGVlZmZlY3QuYwppbmRleCAyOGViMzhlLi5hNDc2M2ZkIDEwMDY0NAotLS0gYS9uZXQvc2N0cC9zbV9zaWRlZWZmZWN0LmMKKysrIGIvbmV0L3NjdHAvc21fc2lkZWVmZmVjdC5jCkBAIC0xNTM2LDYgKzE1MzYsOSBAQAogCQkJZXJyb3IgPSBzY3RwX2F1dGhfYXNvY19pbml0X2FjdGl2ZV9rZXkoYXNvYywKIAkJCQkJCUdGUF9BVE9NSUMpOwogCQkJYnJlYWs7CisJCWNhc2UgU0NUUF9DTURfVVBEQVRFX0lOSVRUQUc6CisJCQlhc29jLT5wZWVyLmkuaW5pdF90YWcgPSBjbWQtPm9iai51MzI7CisJCQlicmVhazsKIAogCQlkZWZhdWx0OgogCQkJcHJpbnRrKEtFUk5fV0FSTklORyAiSW1wb3NzaWJsZSBjb21tYW5kOiAldSwgJXBcbiIsCmRpZmYgLS1naXQgYS9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYyBiL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jCmluZGV4IGYyZWQ2NDcuLjA3MTk0YzIgMTAwNjQ0Ci0tLSBhL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jCisrKyBiL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jCkBAIC00MTQ0LDYgKzQxNDQsMjQgQEAKIAkJZ290byBub21lbTsKIAogCWlmIChhc29jKSB7CisJCS8qIFRyZWF0IElOSVQtQUNLIGFzIGEgc3BlY2lhbCBjYXNlIGR1cmluZyBDT09LSUUtV0FJVC4gKi8KKwkJaWYgKGNodW5rLT5jaHVua19oZHItPnR5cGUgPT0gU0NUUF9DSURfSU5JVF9BQ0sgJiYKKwkJICAgICFhc29jLT5wZWVyLmkuaW5pdF90YWcpIHsKKwkJCXNjdHBfaW5pdGFja19jaHVua190ICppbml0YWNrOworCisJCQlpbml0YWNrID0gKHNjdHBfaW5pdGFja19jaHVua190ICopY2h1bmstPmNodW5rX2hkcjsKKwkJCWlmICghc2N0cF9jaHVua19sZW5ndGhfdmFsaWQoY2h1bmssCisJCQkJCQkgICAgIHNpemVvZihzY3RwX2luaXRhY2tfY2h1bmtfdCkpKQorCQkJCWFib3J0LT5jaHVua19oZHItPmZsYWdzIHw9IFNDVFBfQ0hVTktfRkxBR19UOworCQkJZWxzZSB7CisJCQkJdW5zaWduZWQgaW50IGluaXR0YWc7CisKKwkJCQlpbml0dGFnID0gbnRvaGwoaW5pdGFjay0+aW5pdF9oZHIuaW5pdF90YWcpOworCQkJCXNjdHBfYWRkX2NtZF9zZihjb21tYW5kcywgU0NUUF9DTURfVVBEQVRFX0lOSVRUQUcsCisJCQkJCQlTQ1RQX1UzMihpbml0dGFnKSk7CisJCQl9CisJCX0KKwogCQlzY3RwX2FkZF9jbWRfc2YoY29tbWFuZHMsIFNDVFBfQ01EX1JFUExZLCBTQ1RQX0NIVU5LKGFib3J0KSk7CiAJCVNDVFBfSU5DX1NUQVRTKFNDVFBfTUlCX09VVENUUkxDSFVOS1MpOwogCkBAIC00MzQ5LDYgKzQzNjcsNyBAQAogCQkJCSAgICAgICBzY3RwX2NtZF9zZXFfdCAqY29tbWFuZHMpCiB7CiAJc3RydWN0IHNjdHBfY2h1bmsgKnJlcGw7CisJc3RydWN0IHNjdHBfYXNzb2NpYXRpb24qIG15X2Fzb2M7CiAKIAkvKiBUaGUgY29tbWVudCBiZWxvdyBzYXlzIHRoYXQgd2UgZW50ZXIgQ09PS0lFLVdBSVQgQUZURVIKIAkgKiBzZW5kaW5nIHRoZSBJTklULCBidXQgdGhhdCBkb2Vzbid0IGFjdHVhbGx5IHdvcmsgaW4gb3VyCkBAIC00MzcyLDggKzQzOTEsOCBAQAogCS8qIENhc3QgYXdheSB0aGUgY29uc3QgbW9kaWZpZXIsIGFzIHdlIHdhbnQgdG8ganVzdAogCSAqIHJlcnVuIGl0IHRocm91Z2ggYXMgYSBzaWRlZmZlY3QuCiAJICovCi0Jc2N0cF9hZGRfY21kX3NmKGNvbW1hbmRzLCBTQ1RQX0NNRF9ORVdfQVNPQywKLQkJCVNDVFBfQVNPQygoc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKikgYXNvYykpOworCW15X2Fzb2MgPSAoc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKilhc29jOworCXNjdHBfYWRkX2NtZF9zZihjb21tYW5kcywgU0NUUF9DTURfTkVXX0FTT0MsIFNDVFBfQVNPQyhteV9hc29jKSk7CiAKIAkvKiBDaG9vc2UgdHJhbnNwb3J0IGZvciBJTklULiAqLwogCXNjdHBfYWRkX2NtZF9zZihjb21tYW5kcywgU0NUUF9DTURfSU5JVF9DSE9PU0VfVFJBTlNQT1JULApkaWZmIC0tZ2l0IGEvbmV0L3NjdHAvc29ja2V0LmMgYi9uZXQvc2N0cC9zb2NrZXQuYwppbmRleCA5Mzk4OTI2Li45OThlNjNhIDEwMDY0NAotLS0gYS9uZXQvc2N0cC9zb2NrZXQuYworKysgYi9uZXQvc2N0cC9zb2NrZXQuYwpAQCAtMjkzMywxNyArMjkzMywzOSBAQAogCQkJCSAgICBjaGFyIF9fdXNlciAqb3B0dmFsLAogCQkJCSAgICBpbnQgb3B0bGVuKQogeworCXN0cnVjdCBzY3RwX2Fzc29jX3ZhbHVlIHBhcmFtczsKKwlzdHJ1Y3Qgc2N0cF9zb2NrICpzcDsKKwlzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYzsKIAlpbnQgdmFsOworCWludCBhc3NvY19pZCA9IDA7CiAKLQlpZiAob3B0bGVuICE9IHNpemVvZihpbnQpKQotCQlyZXR1cm4gLUVJTlZBTDsKLQlpZiAoZ2V0X3VzZXIodmFsLCAoaW50IF9fdXNlciAqKW9wdHZhbCkpCi0JCXJldHVybiAtRUZBVUxUOwotCi0JaWYgKHZhbCA8IDApCisJaWYgKG9wdGxlbiA8IHNpemVvZihpbnQpKQogCQlyZXR1cm4gLUVJTlZBTDsKIAotCXNjdHBfc2soc2spLT5tYXhfYnVyc3QgPSB2YWw7CisJaWYgKG9wdGxlbiA9PSBzaXplb2YoaW50KSkgeworCQlwcmludGsoS0VSTl9XQVJOSU5HCisJCSAgICJTQ1RQOiBVc2Ugb2YgaW50IGluIG1heF9idXJzdCBzb2NrZXQgb3B0aW9uIGRlcHJlY2F0ZWRcbiIpOworCQlwcmludGsoS0VSTl9XQVJOSU5HCisJCSAgICJTQ1RQOiBVc2Ugc3RydWN0IHNjdHBfYXNzb2NfdmFsdWUgaW5zdGVhZFxuIik7CisJCWlmIChjb3B5X2Zyb21fdXNlcigmdmFsLCBvcHR2YWwsIG9wdGxlbikpCisJCQlyZXR1cm4gLUVGQVVMVDsKKwl9IGVsc2UgaWYgKG9wdGxlbiA9PSBzaXplb2Yoc3RydWN0IHNjdHBfYXNzb2NfdmFsdWUpKSB7CisJCWlmIChjb3B5X2Zyb21fdXNlcigmcGFyYW1zLCBvcHR2YWwsIG9wdGxlbikpCisJCQlyZXR1cm4gLUVGQVVMVDsKKwkJdmFsID0gcGFyYW1zLmFzc29jX3ZhbHVlOworCQlhc3NvY19pZCA9IHBhcmFtcy5hc3NvY19pZDsKKwl9IGVsc2UKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlzcCA9IHNjdHBfc2soc2spOworCisJaWYgKGFzc29jX2lkICE9IDApIHsKKwkJYXNvYyA9IHNjdHBfaWQyYXNzb2Moc2ssIGFzc29jX2lkKTsKKwkJaWYgKCFhc29jKQorCQkJcmV0dXJuIC1FSU5WQUw7CisJCWFzb2MtPm1heF9idXJzdCA9IHZhbDsKKwl9IGVsc2UKKwkJc3AtPm1heF9idXJzdCA9IHZhbDsKIAogCXJldHVybiAwOwogfQpAQCAtNTAwNSwyMCArNTAyNyw0NSBAQAogCQkJCSAgICBjaGFyIF9fdXNlciAqb3B0dmFsLAogCQkJCSAgICBpbnQgX191c2VyICpvcHRsZW4pCiB7Ci0JaW50IHZhbDsKKwlzdHJ1Y3Qgc2N0cF9hc3NvY192YWx1ZSBwYXJhbXM7CisJc3RydWN0IHNjdHBfc29jayAqc3A7CisJc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2M7CiAKIAlpZiAobGVuIDwgc2l6ZW9mKGludCkpCiAJCXJldHVybiAtRUlOVkFMOwogCi0JbGVuID0gc2l6ZW9mKGludCk7CisJaWYgKGxlbiA9PSBzaXplb2YoaW50KSkgeworCQlwcmludGsoS0VSTl9XQVJOSU5HCisJCSAgICJTQ1RQOiBVc2Ugb2YgaW50IGluIG1heF9idXJzdCBzb2NrZXQgb3B0aW9uIGRlcHJlY2F0ZWRcbiIpOworCQlwcmludGsoS0VSTl9XQVJOSU5HCisJCSAgICJTQ1RQOiBVc2Ugc3RydWN0IHNjdHBfYXNzb2NfdmFsdWUgaW5zdGVhZFxuIik7CisJCXBhcmFtcy5hc3NvY19pZCA9IDA7CisJfSBlbHNlIGlmIChsZW4gPT0gc2l6ZW9mIChzdHJ1Y3Qgc2N0cF9hc3NvY192YWx1ZSkpIHsKKwkJaWYgKGNvcHlfZnJvbV91c2VyKCZwYXJhbXMsIG9wdHZhbCwgbGVuKSkKKwkJCXJldHVybiAtRUZBVUxUOworCX0gZWxzZQorCQlyZXR1cm4gLUVJTlZBTDsKIAotCXZhbCA9IHNjdHBfc2soc2spLT5tYXhfYnVyc3Q7Ci0JaWYgKHB1dF91c2VyKGxlbiwgb3B0bGVuKSkKLQkJcmV0dXJuIC1FRkFVTFQ7Ci0JaWYgKGNvcHlfdG9fdXNlcihvcHR2YWwsICZ2YWwsIGxlbikpCi0JCXJldHVybiAtRUZBVUxUOworCXNwID0gc2N0cF9zayhzayk7CiAKLQlyZXR1cm4gLUVOT1RTVVBQOworCWlmIChwYXJhbXMuYXNzb2NfaWQgIT0gMCkgeworCQlhc29jID0gc2N0cF9pZDJhc3NvYyhzaywgcGFyYW1zLmFzc29jX2lkKTsKKwkJaWYgKCFhc29jKQorCQkJcmV0dXJuIC1FSU5WQUw7CisJCXBhcmFtcy5hc3NvY192YWx1ZSA9IGFzb2MtPm1heF9idXJzdDsKKwl9IGVsc2UKKwkJcGFyYW1zLmFzc29jX3ZhbHVlID0gc3AtPm1heF9idXJzdDsKKworCWlmIChsZW4gPT0gc2l6ZW9mKGludCkpIHsKKwkJaWYgKGNvcHlfdG9fdXNlcihvcHR2YWwsICZwYXJhbXMuYXNzb2NfdmFsdWUsIGxlbikpCisJCQlyZXR1cm4gLUVGQVVMVDsKKwl9IGVsc2UgeworCQlpZiAoY29weV90b191c2VyKG9wdHZhbCwgJnBhcmFtcywgbGVuKSkKKwkJCXJldHVybiAtRUZBVUxUOworCX0KKworCXJldHVybiAwOworCiB9CiAKIHN0YXRpYyBpbnQgc2N0cF9nZXRzb2Nrb3B0X2htYWNfaWRlbnQoc3RydWN0IHNvY2sgKnNrLCBpbnQgbGVuLApAQCAtNTgyMSwxMSArNTg2OCwxMiBAQAogCQkJCSAgc2N0cF9jbXNnc190ICpjbXNncykKIHsKIAlzdHJ1Y3QgY21zZ2hkciAqY21zZzsKKwlzdHJ1Y3QgbXNnaGRyICpteV9tc2cgPSAoc3RydWN0IG1zZ2hkciAqKW1zZzsKIAogCWZvciAoY21zZyA9IENNU0dfRklSU1RIRFIobXNnKTsKIAkgICAgIGNtc2cgIT0gTlVMTDsKLQkgICAgIGNtc2cgPSBDTVNHX05YVEhEUigoc3RydWN0IG1zZ2hkciopbXNnLCBjbXNnKSkgewotCQlpZiAoIUNNU0dfT0sobXNnLCBjbXNnKSkKKwkgICAgIGNtc2cgPSBDTVNHX05YVEhEUihteV9tc2csIGNtc2cpKSB7CisJCWlmICghQ01TR19PSyhteV9tc2csIGNtc2cpKQogCQkJcmV0dXJuIC1FSU5WQUw7CiAKIAkJLyogU2hvdWxkIHdlIHBhcnNlIHRoaXMgaGVhZGVyIG9yIGlnbm9yZT8gICovCmRpZmYgLS1naXQgYS9uZXQvc2N0cC91bHBldmVudC5jIGIvbmV0L3NjdHAvdWxwZXZlbnQuYwppbmRleCBiNDNmMWYxLi5jZTZjZGE2IDEwMDY0NAotLS0gYS9uZXQvc2N0cC91bHBldmVudC5jCisrKyBiL25ldC9zY3RwL3VscGV2ZW50LmMKQEAgLTg1OSw3ICs4NTksNyBAQAogCXVuaW9uIHNjdHBfbm90aWZpY2F0aW9uICpub3RpZmljYXRpb247CiAJc3RydWN0IHNrX2J1ZmYgKnNrYjsKIAotCXNrYiA9IHNjdHBfZXZlbnQyc2tiKChzdHJ1Y3Qgc2N0cF91bHBldmVudCAqKWV2ZW50KTsKKwlza2IgPSBzY3RwX2V2ZW50MnNrYihldmVudCk7CiAJbm90aWZpY2F0aW9uID0gKHVuaW9uIHNjdHBfbm90aWZpY2F0aW9uICopIHNrYi0+ZGF0YTsKIAlyZXR1cm4gbm90aWZpY2F0aW9uLT5zbl9oZWFkZXIuc25fdHlwZTsKIH0KZGlmZiAtLWdpdCBhL25ldC9zb2NrZXQuYyBiL25ldC9zb2NrZXQuYwppbmRleCBiNmQzNWNkLi45ZDNmYmZiIDEwMDY0NAotLS0gYS9uZXQvc29ja2V0LmMKKysrIGIvbmV0L3NvY2tldC5jCkBAIC05MDksMTEgKzkwOSwxMCBAQAogCQkJaWYgKCFkbGNpX2lvY3RsX2hvb2spCiAJCQkJcmVxdWVzdF9tb2R1bGUoImRsY2kiKTsKIAotCQkJaWYgKGRsY2lfaW9jdGxfaG9vaykgewotCQkJCW11dGV4X2xvY2soJmRsY2lfaW9jdGxfbXV0ZXgpOworCQkJbXV0ZXhfbG9jaygmZGxjaV9pb2N0bF9tdXRleCk7CisJCQlpZiAoZGxjaV9pb2N0bF9ob29rKQogCQkJCWVyciA9IGRsY2lfaW9jdGxfaG9vayhjbWQsIGFyZ3ApOwotCQkJCW11dGV4X3VubG9jaygmZGxjaV9pb2N0bF9tdXRleCk7Ci0JCQl9CisJCQltdXRleF91bmxvY2soJmRsY2lfaW9jdGxfbXV0ZXgpOwogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllcnIgPSBzb2NrLT5vcHMtPmlvY3RsKHNvY2ssIGNtZCwgYXJnKTsKZGlmZiAtLWdpdCBhL25ldC9zdW5ycGMvYXV0aF9nc3MvZ3NzX21lY2hfc3dpdGNoLmMgYi9uZXQvc3VucnBjL2F1dGhfZ3NzL2dzc19tZWNoX3N3aXRjaC5jCmluZGV4IDYxODAxYTAuLmJjZTlkNTIgMTAwNjQ0Ci0tLSBhL25ldC9zdW5ycGMvYXV0aF9nc3MvZ3NzX21lY2hfc3dpdGNoLmMKKysrIGIvbmV0L3N1bnJwYy9hdXRoX2dzcy9nc3NfbWVjaF9zd2l0Y2guYwpAQCAtMzE3LDcgKzMxNyw3IEBACiAKIAlpZiAoISpjb250ZXh0X2hhbmRsZSkKIAkJcmV0dXJuKEdTU19TX05PX0NPTlRFWFQpOwotCWlmICgoKmNvbnRleHRfaGFuZGxlKS0+aW50ZXJuYWxfY3R4X2lkICE9IDApCisJaWYgKCgqY29udGV4dF9oYW5kbGUpLT5pbnRlcm5hbF9jdHhfaWQpCiAJCSgqY29udGV4dF9oYW5kbGUpLT5tZWNoX3R5cGUtPmdtX29wcwogCQkJLT5nc3NfZGVsZXRlX3NlY19jb250ZXh0KCgqY29udGV4dF9oYW5kbGUpCiAJCQkJCQkJLT5pbnRlcm5hbF9jdHhfaWQpOwpkaWZmIC0tZ2l0IGEvbmV0L3N1bnJwYy9jbG50LmMgYi9uZXQvc3VucnBjL2NsbnQuYwppbmRleCA4YzZhN2YxLi44ODM0ZDY4IDEwMDY0NAotLS0gYS9uZXQvc3VucnBjL2NsbnQuYworKysgYi9uZXQvc3VucnBjL2NsbnQuYwpAQCAtMjYxLDEwICsyNjEsNiBAQAogCX07CiAJY2hhciBzZXJ2ZXJuYW1lWzQ4XTsKIAotCXhwcnQgPSB4cHJ0X2NyZWF0ZV90cmFuc3BvcnQoJnhwcnRhcmdzKTsKLQlpZiAoSVNfRVJSKHhwcnQpKQotCQlyZXR1cm4gKHN0cnVjdCBycGNfY2xudCAqKXhwcnQ7Ci0KIAkvKgogCSAqIElmIHRoZSBjYWxsZXIgY2hvb3NlcyBub3QgdG8gc3BlY2lmeSBhIGhvc3RuYW1lLCB3aGlwCiAJICogdXAgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHBhc3NlZC1pbiBhZGRyZXNzLgpkaWZmIC0tZ2l0IGEvbmV0L3N1bnJwYy9zdmNfeHBydC5jIGIvbmV0L3N1bnJwYy9zdmNfeHBydC5jCmluZGV4IGVhMzc3ZTAuLjMzMmViNDcgMTAwNjQ0Ci0tLSBhL25ldC9zdW5ycGMvc3ZjX3hwcnQuYworKysgYi9uZXQvc3VucnBjL3N2Y194cHJ0LmMKQEAgLTE4NSw3ICsxODUsNyBAQAogCXN0cnVjdCBzdmNfeHBydF9jbGFzcyAqeGNsOwogCXN0cnVjdCBzb2NrYWRkcl9pbiBzaW4gPSB7CiAJCS5zaW5fZmFtaWx5CQk9IEFGX0lORVQsCi0JCS5zaW5fYWRkci5zX2FkZHIJPSBJTkFERFJfQU5ZLAorCQkuc2luX2FkZHIuc19hZGRyCT0gaHRvbmwoSU5BRERSX0FOWSksCiAJCS5zaW5fcG9ydAkJPSBodG9ucyhwb3J0KSwKIAl9OwogCWRwcmludGsoInN2YzogY3JlYXRpbmcgdHJhbnNwb3J0ICVzWyVkXVxuIiwgeHBydF9uYW1lLCBwb3J0KTsKZGlmZiAtLWdpdCBhL25ldC9zdW5ycGMveGRyLmMgYi9uZXQvc3VucnBjL3hkci5jCmluZGV4IDk5NWMzZmQuLjc5YTU1ZDUgMTAwNjQ0Ci0tLSBhL25ldC9zdW5ycGMveGRyLmMKKysrIGIvbmV0L3N1bnJwYy94ZHIuYwpAQCAtMjQ0LDcgKzI0NCw3IEBACiAJcGd0byA9IHBhZ2VzICsgKHBnYmFzZSA+PiBQQUdFX0NBQ0hFX1NISUZUKTsKIAlwZ2Jhc2UgJj0gflBBR0VfQ0FDSEVfTUFTSzsKIAotCWRvIHsKKwlmb3IgKDs7KSB7CiAJCWNvcHkgPSBQQUdFX0NBQ0hFX1NJWkUgLSBwZ2Jhc2U7CiAJCWlmIChjb3B5ID4gbGVuKQogCQkJY29weSA9IGxlbjsKQEAgLTI1Myw2ICsyNTMsMTAgQEAKIAkJbWVtY3B5KHZ0byArIHBnYmFzZSwgcCwgY29weSk7CiAJCWt1bm1hcF9hdG9taWModnRvLCBLTV9VU0VSMCk7CiAKKwkJbGVuIC09IGNvcHk7CisJCWlmIChsZW4gPT0gMCkKKwkJCWJyZWFrOworCiAJCXBnYmFzZSArPSBjb3B5OwogCQlpZiAocGdiYXNlID09IFBBR0VfQ0FDSEVfU0laRSkgewogCQkJZmx1c2hfZGNhY2hlX3BhZ2UoKnBndG8pOwpAQCAtMjYwLDggKzI2NCw3IEBACiAJCQlwZ3RvKys7CiAJCX0KIAkJcCArPSBjb3B5OwotCi0JfSB3aGlsZSAoKGxlbiAtPSBjb3B5KSAhPSAwKTsKKwl9CiAJZmx1c2hfZGNhY2hlX3BhZ2UoKnBndG8pOwogfQogCmRpZmYgLS1naXQgYS9uZXQvc3VucnBjL3hwcnRyZG1hL3N2Y19yZG1hX3JlY3Zmcm9tLmMgYi9uZXQvc3VucnBjL3hwcnRyZG1hL3N2Y19yZG1hX3JlY3Zmcm9tLmMKaW5kZXggYWI1NGE3My4uYzIyZDZiNiAxMDA2NDQKLS0tIGEvbmV0L3N1bnJwYy94cHJ0cmRtYS9zdmNfcmRtYV9yZWN2ZnJvbS5jCisrKyBiL25ldC9zdW5ycGMveHBydHJkbWEvc3ZjX3JkbWFfcmVjdmZyb20uYwpAQCAtMjM3LDE0ICsyMzcsMTIgQEAKIAogc3RhdGljIGludCByZG1hX3JlYWRfbWF4X3NnZShzdHJ1Y3Qgc3ZjeHBydF9yZG1hICp4cHJ0LCBpbnQgc2dlX2NvdW50KQogewotI2lmZGVmIFJETUFfVFJBTlNQT1JUX0lXQVJQCiAJaWYgKChSRE1BX1RSQU5TUE9SVF9JV0FSUCA9PQogCSAgICAgcmRtYV9ub2RlX2dldF90cmFuc3BvcnQoeHBydC0+c2NfY21faWQtPgogCQkJCSAgICAgZGV2aWNlLT5ub2RlX3R5cGUpKQogCSAgICAmJiBzZ2VfY291bnQgPiAxKQogCQlyZXR1cm4gMTsKIAllbHNlCi0jZW5kaWYKIAkJcmV0dXJuIG1pbl90KGludCwgc2dlX2NvdW50LCB4cHJ0LT5zY19tYXhfc2dlKTsKIH0KIApAQCAtMzI0LDE1ICszMjIsNiBAQAogCQljdHh0LT5kaXJlY3Rpb24gPSBETUFfRlJPTV9ERVZJQ0U7CiAJCWNsZWFyX2JpdChSRE1BQ1RYVF9GX1JFQURfRE9ORSwgJmN0eHQtPmZsYWdzKTsKIAkJY2xlYXJfYml0KFJETUFDVFhUX0ZfTEFTVF9DVFhULCAmY3R4dC0+ZmxhZ3MpOwotCQlpZiAoKGNoKzEpLT5yY19kaXNjcmltID09IDApIHsKLQkJCS8qCi0JCQkgKiBDaGVja2VkIGluIHNxX2NxX3JlYXAgdG8gc2VlIGlmIHdlIG5lZWQgdG8KLQkJCSAqIGJlIGVucXVldWVkCi0JCQkgKi8KLQkJCXNldF9iaXQoUkRNQUNUWFRfRl9MQVNUX0NUWFQsICZjdHh0LT5mbGFncyk7Ci0JCQljdHh0LT5uZXh0ID0gaGRyX2N0eHQ7Ci0JCQloZHJfY3R4dC0+bmV4dCA9IGhlYWQ7Ci0JCX0KIAogCQkvKiBQcmVwYXJlIFJFQUQgV1IgKi8KIAkJbWVtc2V0KCZyZWFkX3dyLCAwLCBzaXplb2YgcmVhZF93cik7CkBAIC0zNTAsNyArMzM5LDE3IEBACiAJCXJkbWFfc2V0X2N0eHRfc2dlKGN0eHQsICZzZ2VbY2hfc2dlX2FyeVtjaF9ub10uc3RhcnRdLAogCQkJCSAgJnNnbF9vZmZzZXQsCiAJCQkJICByZWFkX3dyLm51bV9zZ2UpOwotCisJCWlmICgoKGNoKzEpLT5yY19kaXNjcmltID09IDApICYmCisJCSAgICAocmVhZF93ci5udW1fc2dlID09IGNoX3NnZV9hcnlbY2hfbm9dLmNvdW50KSkgeworCQkJLyoKKwkJCSAqIE1hcmsgdGhlIGxhc3QgUkRNQV9SRUFEIHdpdGggYSBiaXQgdG8KKwkJCSAqIGluZGljYXRlIGFsbCBSUEMgZGF0YSBoYXMgYmVlbiBmZXRjaGVkIGZyb20KKwkJCSAqIHRoZSBjbGllbnQgYW5kIHRoZSBSUEMgbmVlZHMgdG8gYmUgZW5xdWV1ZWQuCisJCQkgKi8KKwkJCXNldF9iaXQoUkRNQUNUWFRfRl9MQVNUX0NUWFQsICZjdHh0LT5mbGFncyk7CisJCQljdHh0LT5uZXh0ID0gaGRyX2N0eHQ7CisJCQloZHJfY3R4dC0+bmV4dCA9IGhlYWQ7CisJCX0KIAkJLyogUG9zdCB0aGUgcmVhZCAqLwogCQllcnIgPSBzdmNfcmRtYV9zZW5kKHhwcnQsICZyZWFkX3dyKTsKIAkJaWYgKGVycikgewpkaWZmIC0tZ2l0IGEvbmV0L3N1bnJwYy94cHJ0cmRtYS9zdmNfcmRtYV9zZW5kdG8uYyBiL25ldC9zdW5ycGMveHBydHJkbWEvc3ZjX3JkbWFfc2VuZHRvLmMKaW5kZXggMDU5OGIyMi4uOTgxZjE5MCAxMDA2NDQKLS0tIGEvbmV0L3N1bnJwYy94cHJ0cmRtYS9zdmNfcmRtYV9zZW5kdG8uYworKysgYi9uZXQvc3VucnBjL3hwcnRyZG1hL3N2Y19yZG1hX3NlbmR0by5jCkBAIC0xNTYsNyArMTU2LDcgQEAKIAlzdHJ1Y3Qgc3ZjX3JkbWFfb3BfY3R4dCAqY3R4dDsKIAlpbnQgcmV0ID0gMDsKIAotCUJVR19PTihzZ2VfY291bnQgPj0gMzIpOworCUJVR19PTihzZ2VfY291bnQgPiBSUENTVkNfTUFYUEFHRVMpOwogCWRwcmludGsoInN2Y3JkbWE6IFJETUFfV1JJVEUgcm1yPSV4LCB0bz0lbGx4LCB4ZHJfb2ZmPSVkLCAiCiAJCSJ3cml0ZV9sZW49JWQsIHhkcl9zZ2U9JXAsIHNnZV9jb3VudD0lZFxuIiwKIAkJcm1yLCAodW5zaWduZWQgbG9uZyBsb25nKXRvLCB4ZHJfb2ZmLApkaWZmIC0tZ2l0IGEvbmV0L3N1bnJwYy94cHJ0cmRtYS9zdmNfcmRtYV90cmFuc3BvcnQuYyBiL25ldC9zdW5ycGMveHBydHJkbWEvc3ZjX3JkbWFfdHJhbnNwb3J0LmMKaW5kZXggZjA5NDQ0Yy4uMTZmZDNmNiAxMDA2NDQKLS0tIGEvbmV0L3N1bnJwYy94cHJ0cmRtYS9zdmNfcmRtYV90cmFuc3BvcnQuYworKysgYi9uZXQvc3VucnBjL3hwcnRyZG1hL3N2Y19yZG1hX3RyYW5zcG9ydC5jCkBAIC01NCw3ICs1NCw2IEBACiAJCQkJCWludCBmbGFncyk7CiBzdGF0aWMgc3RydWN0IHN2Y194cHJ0ICpzdmNfcmRtYV9hY2NlcHQoc3RydWN0IHN2Y194cHJ0ICp4cHJ0KTsKIHN0YXRpYyB2b2lkIHN2Y19yZG1hX3JlbGVhc2VfcnFzdChzdHJ1Y3Qgc3ZjX3Jxc3QgKik7Ci1zdGF0aWMgdm9pZCByZG1hX2Rlc3Ryb3lfeHBydChzdHJ1Y3Qgc3ZjeHBydF9yZG1hICp4cHJ0KTsKIHN0YXRpYyB2b2lkIGR0b190YXNrbGV0X2Z1bmModW5zaWduZWQgbG9uZyBkYXRhKTsKIHN0YXRpYyB2b2lkIHN2Y19yZG1hX2RldGFjaChzdHJ1Y3Qgc3ZjX3hwcnQgKnhwcnQpOwogc3RhdGljIHZvaWQgc3ZjX3JkbWFfZnJlZShzdHJ1Y3Qgc3ZjX3hwcnQgKnhwcnQpOwpAQCAtMjQ3LDYgKzI0Niw3IEBACiAJCQlzcV9jcV9yZWFwKHhwcnQpOwogCQl9CiAKKwkJc3ZjX3hwcnRfcHV0KCZ4cHJ0LT5zY194cHJ0KTsKIAkJc3Bpbl9sb2NrX2lycXNhdmUoJmR0b19sb2NrLCBmbGFncyk7CiAJfQogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmR0b19sb2NrLCBmbGFncyk7CkBAIC0yNzUsOCArMjc1LDEwIEBACiAJICogYWRkIGl0CiAJICovCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmR0b19sb2NrLCBmbGFncyk7Ci0JaWYgKGxpc3RfZW1wdHkoJnhwcnQtPnNjX2R0b19xKSkKKwlpZiAobGlzdF9lbXB0eSgmeHBydC0+c2NfZHRvX3EpKSB7CisJCXN2Y194cHJ0X2dldCgmeHBydC0+c2NfeHBydCk7CiAJCWxpc3RfYWRkX3RhaWwoJnhwcnQtPnNjX2R0b19xLCAmZHRvX3hwcnRfcSk7CisJfQogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmR0b19sb2NrLCBmbGFncyk7CiAKIAkvKiBUYXNrbGV0IGRvZXMgYWxsIHRoZSB3b3JrIHRvIGF2b2lkIGlycXNhdmUgbG9ja3MuICovCkBAIC0zODYsOCArMzg4LDEwIEBACiAJICogYWRkIGl0CiAJICovCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmR0b19sb2NrLCBmbGFncyk7Ci0JaWYgKGxpc3RfZW1wdHkoJnhwcnQtPnNjX2R0b19xKSkKKwlpZiAobGlzdF9lbXB0eSgmeHBydC0+c2NfZHRvX3EpKSB7CisJCXN2Y194cHJ0X2dldCgmeHBydC0+c2NfeHBydCk7CiAJCWxpc3RfYWRkX3RhaWwoJnhwcnQtPnNjX2R0b19xLCAmZHRvX3hwcnRfcSk7CisJfQogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmR0b19sb2NrLCBmbGFncyk7CiAKIAkvKiBUYXNrbGV0IGRvZXMgYWxsIHRoZSB3b3JrIHRvIGF2b2lkIGlycXNhdmUgbG9ja3MuICovCkBAIC02MTEsNiArNjE1LDcgQEAKIAlzd2l0Y2ggKGV2ZW50LT5ldmVudCkgewogCWNhc2UgUkRNQV9DTV9FVkVOVF9FU1RBQkxJU0hFRDoKIAkJLyogQWNjZXB0IGNvbXBsZXRlICovCisJCXN2Y194cHJ0X2dldCh4cHJ0KTsKIAkJZHByaW50aygic3ZjcmRtYTogQ29ubmVjdGlvbiBjb21wbGV0ZWQgb24gRFRPIHhwcnQ9JXAsICIKIAkJCSJjbV9pZD0lcFxuIiwgeHBydCwgY21hX2lkKTsKIAkJY2xlYXJfYml0KFJETUFYUFJUX0NPTk5fUEVORElORywgJnJkbWEtPnNjX2ZsYWdzKTsKQEAgLTY2MSwxNSArNjY2LDE1IEBACiAKIAlsaXN0ZW5faWQgPSByZG1hX2NyZWF0ZV9pZChyZG1hX2xpc3Rlbl9oYW5kbGVyLCBjbWFfeHBydCwgUkRNQV9QU19UQ1ApOwogCWlmIChJU19FUlIobGlzdGVuX2lkKSkgewotCQlyZG1hX2Rlc3Ryb3lfeHBydChjbWFfeHBydCk7CisJCXN2Y194cHJ0X3B1dCgmY21hX3hwcnQtPnNjX3hwcnQpOwogCQlkcHJpbnRrKCJzdmNyZG1hOiByZG1hX2NyZWF0ZV9pZCBmYWlsZWQgPSAlbGRcbiIsCiAJCQlQVFJfRVJSKGxpc3Rlbl9pZCkpOwogCQlyZXR1cm4gKHZvaWQgKilsaXN0ZW5faWQ7CiAJfQogCXJldCA9IHJkbWFfYmluZF9hZGRyKGxpc3Rlbl9pZCwgc2EpOwogCWlmIChyZXQpIHsKLQkJcmRtYV9kZXN0cm95X3hwcnQoY21hX3hwcnQpOwogCQlyZG1hX2Rlc3Ryb3lfaWQobGlzdGVuX2lkKTsKKwkJc3ZjX3hwcnRfcHV0KCZjbWFfeHBydC0+c2NfeHBydCk7CiAJCWRwcmludGsoInN2Y3JkbWE6IHJkbWFfYmluZF9hZGRyIGZhaWxlZCA9ICVkXG4iLCByZXQpOwogCQlyZXR1cm4gRVJSX1BUUihyZXQpOwogCX0KQEAgLTY3OCw4ICs2ODMsOSBAQAogCXJldCA9IHJkbWFfbGlzdGVuKGxpc3Rlbl9pZCwgUlBDUkRNQV9MSVNURU5fQkFDS0xPRyk7CiAJaWYgKHJldCkgewogCQlyZG1hX2Rlc3Ryb3lfaWQobGlzdGVuX2lkKTsKLQkJcmRtYV9kZXN0cm95X3hwcnQoY21hX3hwcnQpOworCQlzdmNfeHBydF9wdXQoJmNtYV94cHJ0LT5zY194cHJ0KTsKIAkJZHByaW50aygic3ZjcmRtYTogcmRtYV9saXN0ZW4gZmFpbGVkID0gJWRcbiIsIHJldCk7CisJCXJldHVybiBFUlJfUFRSKHJldCk7CiAJfQogCiAJLyoKQEAgLTgyMCw2ICs4MjYsNyBAQAogCQluZXd4cHJ0LT5zY19zcV9kZXB0aCA9IHFwX2F0dHIuY2FwLm1heF9zZW5kX3dyOwogCQluZXd4cHJ0LT5zY19tYXhfcmVxdWVzdHMgPSBxcF9hdHRyLmNhcC5tYXhfcmVjdl93cjsKIAl9CisJc3ZjX3hwcnRfZ2V0KCZuZXd4cHJ0LT5zY194cHJ0KTsKIAluZXd4cHJ0LT5zY19xcCA9IG5ld3hwcnQtPnNjX2NtX2lkLT5xcDsKIAogCS8qIFJlZ2lzdGVyIGFsbCBvZiBwaHlzaWNhbCBtZW1vcnkgKi8KQEAgLTg5MSw4ICs4OTgsMTUgQEAKIAogIGVycm91dDoKIAlkcHJpbnRrKCJzdmNyZG1hOiBmYWlsdXJlIGFjY2VwdGluZyBuZXcgY29ubmVjdGlvbiByYz0lZC5cbiIsIHJldCk7CisJLyogVGFrZSBhIHJlZmVyZW5jZSBpbiBjYXNlIHRoZSBEVE8gaGFuZGxlciBydW5zICovCisJc3ZjX3hwcnRfZ2V0KCZuZXd4cHJ0LT5zY194cHJ0KTsKKwlpZiAobmV3eHBydC0+c2NfcXAgJiYgIUlTX0VSUihuZXd4cHJ0LT5zY19xcCkpIHsKKwkJaWJfZGVzdHJveV9xcChuZXd4cHJ0LT5zY19xcCk7CisJCXN2Y194cHJ0X3B1dCgmbmV3eHBydC0+c2NfeHBydCk7CisJfQogCXJkbWFfZGVzdHJveV9pZChuZXd4cHJ0LT5zY19jbV9pZCk7Ci0JcmRtYV9kZXN0cm95X3hwcnQobmV3eHBydCk7CisJLyogVGhpcyBjYWxsIHRvIHB1dCB3aWxsIGRlc3Ryb3kgdGhlIHRyYW5zcG9ydCAqLworCXN2Y194cHJ0X3B1dCgmbmV3eHBydC0+c2NfeHBydCk7CiAJcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTkxOSw1NiArOTMzLDYyIEBACiAJcnFzdHAtPnJxX3hwcnRfY3R4dCA9IE5VTEw7CiB9CiAKLS8qIERpc2FibGUgZGF0YSByZWFkeSBldmVudHMgZm9yIHRoaXMgY29ubmVjdGlvbiAqLworLyoKKyAqIFdoZW4gY29ubmVjdGVkLCBhbiBzdmNfeHBydCBoYXMgYXQgbGVhc3QgdGhyZWUgcmVmZXJlbmNlczoKKyAqCisgKiAtIEEgcmVmZXJlbmNlIGhlbGQgYnkgdGhlIFFQLiBXZSBzdGlsbCBob2xkIHRoYXQgaGVyZSBiZWNhdXNlIHRoaXMKKyAqICAgY29kZSBkZWxldGVzIHRoZSBRUCBhbmQgcHV0cyB0aGUgcmVmZXJlbmNlLgorICoKKyAqIC0gQSByZWZlcmVuY2UgaGVsZCBieSB0aGUgY21faWQgYmV0d2VlbiB0aGUgRVNUQUJMSVNIRUQgYW5kCisgKiAgIERJU0NPTk5FQ1RFRCBldmVudHMuIElmIHRoZSByZW1vdGUgcGVlciBkaXNjb25uZWN0ZWQgZmlyc3QsIHRoaXMKKyAqICAgcmVmZXJlbmNlIGNvdWxkIGJlIGdvbmUuCisgKgorICogLSBBIHJlZmVyZW5jZSBoZWxkIGJ5IHRoZSBzdmNfcmVjdiBjb2RlIHRoYXQgY2FsbGVkIHRoaXMgZnVuY3Rpb24KKyAqICAgYXMgcGFydCBvZiBjbG9zZSBwcm9jZXNzaW5nLgorICoKKyAqIEF0IGEgbWluaW11bSB0d28gcmVmZXJlbmNlcyBzaG91bGQgc3RpbGwgYmUgaGVsZC4KKyAqLwogc3RhdGljIHZvaWQgc3ZjX3JkbWFfZGV0YWNoKHN0cnVjdCBzdmNfeHBydCAqeHBydCkKIHsKIAlzdHJ1Y3Qgc3ZjeHBydF9yZG1hICpyZG1hID0KIAkJY29udGFpbmVyX29mKHhwcnQsIHN0cnVjdCBzdmN4cHJ0X3JkbWEsIHNjX3hwcnQpOwotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Ci0KIAlkcHJpbnRrKCJzdmM6IHN2Y19yZG1hX2RldGFjaCglcClcbiIsIHhwcnQpOwotCS8qCi0JICogU2h1dGRvd24gdGhlIGNvbm5lY3Rpb24uIFRoaXMgd2lsbCBlbnN1cmUgd2UgZG9uJ3QgZ2V0IGFueQotCSAqIG1vcmUgZXZlbnRzIGZyb20gdGhlIHByb3ZpZGVyLgotCSAqLwotCXJkbWFfZGlzY29ubmVjdChyZG1hLT5zY19jbV9pZCk7Ci0JcmRtYV9kZXN0cm95X2lkKHJkbWEtPnNjX2NtX2lkKTsKIAotCS8qIFdlIG1heSBhbHJlYWR5IGJlIG9uIHRoZSBEVE8gbGlzdCAqLwotCXNwaW5fbG9ja19pcnFzYXZlKCZkdG9fbG9jaywgZmxhZ3MpOwotCWlmICghbGlzdF9lbXB0eSgmcmRtYS0+c2NfZHRvX3EpKQotCQlsaXN0X2RlbF9pbml0KCZyZG1hLT5zY19kdG9fcSk7Ci0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZHRvX2xvY2ssIGZsYWdzKTsKKwkvKiBEaXNjb25uZWN0IGFuZCBmbHVzaCBwb3N0ZWQgV1FFICovCisJcmRtYV9kaXNjb25uZWN0KHJkbWEtPnNjX2NtX2lkKTsKKworCS8qIERlc3Ryb3kgdGhlIFFQIGlmIHByZXNlbnQgKG5vdCBhIGxpc3RlbmVyKSAqLworCWlmIChyZG1hLT5zY19xcCAmJiAhSVNfRVJSKHJkbWEtPnNjX3FwKSkgeworCQlpYl9kZXN0cm95X3FwKHJkbWEtPnNjX3FwKTsKKwkJc3ZjX3hwcnRfcHV0KHhwcnQpOworCX0KKworCS8qIERlc3Ryb3kgdGhlIENNIElEICovCisJcmRtYV9kZXN0cm95X2lkKHJkbWEtPnNjX2NtX2lkKTsKIH0KIAogc3RhdGljIHZvaWQgc3ZjX3JkbWFfZnJlZShzdHJ1Y3Qgc3ZjX3hwcnQgKnhwcnQpCiB7CiAJc3RydWN0IHN2Y3hwcnRfcmRtYSAqcmRtYSA9IChzdHJ1Y3Qgc3ZjeHBydF9yZG1hICopeHBydDsKIAlkcHJpbnRrKCJzdmNyZG1hOiBzdmNfcmRtYV9mcmVlKCVwKVxuIiwgcmRtYSk7Ci0JcmRtYV9kZXN0cm95X3hwcnQocmRtYSk7CisJLyogV2Ugc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGZyb20ga3JlZl9wdXQgKi8KKwlCVUdfT04oYXRvbWljX3JlYWQoJnhwcnQtPnhwdF9yZWYucmVmY291bnQpICE9IDApOworCWlmIChyZG1hLT5zY19zcV9jcSAmJiAhSVNfRVJSKHJkbWEtPnNjX3NxX2NxKSkKKwkJaWJfZGVzdHJveV9jcShyZG1hLT5zY19zcV9jcSk7CisKKwlpZiAocmRtYS0+c2NfcnFfY3EgJiYgIUlTX0VSUihyZG1hLT5zY19ycV9jcSkpCisJCWliX2Rlc3Ryb3lfY3EocmRtYS0+c2NfcnFfY3EpOworCisJaWYgKHJkbWEtPnNjX3BoeXNfbXIgJiYgIUlTX0VSUihyZG1hLT5zY19waHlzX21yKSkKKwkJaWJfZGVyZWdfbXIocmRtYS0+c2NfcGh5c19tcik7CisKKwlpZiAocmRtYS0+c2NfcGQgJiYgIUlTX0VSUihyZG1hLT5zY19wZCkpCisJCWliX2RlYWxsb2NfcGQocmRtYS0+c2NfcGQpOworCisJZGVzdHJveV9jb250ZXh0X2NhY2hlKHJkbWEtPnNjX2N0eHRfaGVhZCk7CiAJa2ZyZWUocmRtYSk7CiB9CiAKLXN0YXRpYyB2b2lkIHJkbWFfZGVzdHJveV94cHJ0KHN0cnVjdCBzdmN4cHJ0X3JkbWEgKnhwcnQpCi17Ci0JaWYgKHhwcnQtPnNjX3FwICYmICFJU19FUlIoeHBydC0+c2NfcXApKQotCQlpYl9kZXN0cm95X3FwKHhwcnQtPnNjX3FwKTsKLQotCWlmICh4cHJ0LT5zY19zcV9jcSAmJiAhSVNfRVJSKHhwcnQtPnNjX3NxX2NxKSkKLQkJaWJfZGVzdHJveV9jcSh4cHJ0LT5zY19zcV9jcSk7Ci0KLQlpZiAoeHBydC0+c2NfcnFfY3EgJiYgIUlTX0VSUih4cHJ0LT5zY19ycV9jcSkpCi0JCWliX2Rlc3Ryb3lfY3EoeHBydC0+c2NfcnFfY3EpOwotCi0JaWYgKHhwcnQtPnNjX3BoeXNfbXIgJiYgIUlTX0VSUih4cHJ0LT5zY19waHlzX21yKSkKLQkJaWJfZGVyZWdfbXIoeHBydC0+c2NfcGh5c19tcik7Ci0KLQlpZiAoeHBydC0+c2NfcGQgJiYgIUlTX0VSUih4cHJ0LT5zY19wZCkpCi0JCWliX2RlYWxsb2NfcGQoeHBydC0+c2NfcGQpOwotCi0JZGVzdHJveV9jb250ZXh0X2NhY2hlKHhwcnQtPnNjX2N0eHRfaGVhZCk7Ci19Ci0KIHN0YXRpYyBpbnQgc3ZjX3JkbWFfaGFzX3dzcGFjZShzdHJ1Y3Qgc3ZjX3hwcnQgKnhwcnQpCiB7CiAJc3RydWN0IHN2Y3hwcnRfcmRtYSAqcmRtYSA9CmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jIGIvbmV0L3dpcmVsZXNzL25sODAyMTEuYwppbmRleCBlM2EyMTRmLi5mNjhhNWM4IDEwMDY0NAotLS0gYS9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jCisrKyBiL25ldC93aXJlbGVzcy9ubDgwMjExLmMKQEAgLTk0NSw3ICs5NDUsNyBAQAogCQlubGFfbGVuKGluZm8tPmF0dHJzW05MODAyMTFfQVRUUl9TVEFfU1VQUE9SVEVEX1JBVEVTXSk7CiAJcGFyYW1zLmxpc3Rlbl9pbnRlcnZhbCA9CiAJCW5sYV9nZXRfdTE2KGluZm8tPmF0dHJzW05MODAyMTFfQVRUUl9TVEFfTElTVEVOX0lOVEVSVkFMXSk7Ci0JcGFyYW1zLmxpc3Rlbl9pbnRlcnZhbCA9IG5sYV9nZXRfdTE2KGluZm8tPmF0dHJzW05MODAyMTFfQVRUUl9TVEFfQUlEXSk7CisJcGFyYW1zLmFpZCA9IG5sYV9nZXRfdTE2KGluZm8tPmF0dHJzW05MODAyMTFfQVRUUl9TVEFfQUlEXSk7CiAKIAlpZiAocGFyc2Vfc3RhdGlvbl9mbGFncyhpbmZvLT5hdHRyc1tOTDgwMjExX0FUVFJfU1RBX0ZMQUdTXSwKIAkJCQkmcGFyYW1zLnN0YXRpb25fZmxhZ3MpKQpkaWZmIC0tZ2l0IGEvbmV0L3hmcm0veGZybV9pbnB1dC5jIGIvbmV0L3hmcm0veGZybV9pbnB1dC5jCmluZGV4IDYyMTg4YzYuLjc1Mjc5NDAgMTAwNjQ0Ci0tLSBhL25ldC94ZnJtL3hmcm1faW5wdXQuYworKysgYi9uZXQveGZybS94ZnJtX2lucHV0LmMKQEAgLTg0LDE0ICs4NCwyMSBAQAogCiBpbnQgeGZybV9wcmVwYXJlX2lucHV0KHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogeworCXN0cnVjdCB4ZnJtX21vZGUgKmlubmVyX21vZGUgPSB4LT5pbm5lcl9tb2RlOwogCWludCBlcnI7CiAKIAllcnIgPSB4LT5vdXRlcl9tb2RlLT5hZmluZm8tPmV4dHJhY3RfaW5wdXQoeCwgc2tiKTsKIAlpZiAoZXJyKQogCQlyZXR1cm4gZXJyOwogCi0Jc2tiLT5wcm90b2NvbCA9IHgtPmlubmVyX21vZGUtPmFmaW5mby0+ZXRoX3Byb3RvOwotCXJldHVybiB4LT5pbm5lcl9tb2RlLT5pbnB1dDIoeCwgc2tiKTsKKwlpZiAoeC0+c2VsLmZhbWlseSA9PSBBRl9VTlNQRUMpIHsKKwkJaW5uZXJfbW9kZSA9IHhmcm1faXAyaW5uZXJfbW9kZSh4LCBYRlJNX01PREVfU0tCX0NCKHNrYiktPnByb3RvY29sKTsKKwkJaWYgKGlubmVyX21vZGUgPT0gTlVMTCkKKwkJCXJldHVybiAtRUFGTk9TVVBQT1JUOworCX0KKworCXNrYi0+cHJvdG9jb2wgPSBpbm5lcl9tb2RlLT5hZmluZm8tPmV0aF9wcm90bzsKKwlyZXR1cm4gaW5uZXJfbW9kZS0+aW5wdXQyKHgsIHNrYik7CiB9CiBFWFBPUlRfU1lNQk9MKHhmcm1fcHJlcGFyZV9pbnB1dCk7CiAKQEAgLTEwMSw2ICsxMDgsNyBAQAogCV9fYmUzMiBzZXE7CiAJc3RydWN0IHhmcm1fc3RhdGUgKng7CiAJeGZybV9hZGRyZXNzX3QgKmRhZGRyOworCXN0cnVjdCB4ZnJtX21vZGUgKmlubmVyX21vZGU7CiAJdW5zaWduZWQgaW50IGZhbWlseTsKIAlpbnQgZGVjYXBzID0gMDsKIAlpbnQgYXN5bmMgPSAwOwpAQCAtMjA3LDcgKzIxNSwxNSBAQAogCiAJCVhGUk1fTU9ERV9TS0JfQ0Ioc2tiKS0+cHJvdG9jb2wgPSBuZXh0aGRyOwogCi0JCWlmICh4LT5pbm5lcl9tb2RlLT5pbnB1dCh4LCBza2IpKSB7CisJCWlubmVyX21vZGUgPSB4LT5pbm5lcl9tb2RlOworCisJCWlmICh4LT5zZWwuZmFtaWx5ID09IEFGX1VOU1BFQykgeworCQkJaW5uZXJfbW9kZSA9IHhmcm1faXAyaW5uZXJfbW9kZSh4LCBYRlJNX01PREVfU0tCX0NCKHNrYiktPnByb3RvY29sKTsKKwkJCWlmIChpbm5lcl9tb2RlID09IE5VTEwpCisJCQkJZ290byBkcm9wOworCQl9CisKKwkJaWYgKGlubmVyX21vZGUtPmlucHV0KHgsIHNrYikpIHsKIAkJCVhGUk1fSU5DX1NUQVRTKExJTlVYX01JQl9YRlJNSU5TVEFURU1PREVFUlJPUik7CiAJCQlnb3RvIGRyb3A7CiAJCX0KZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fb3V0cHV0LmMgYi9uZXQveGZybS94ZnJtX291dHB1dC5jCmluZGV4IDU2OWQzNzcuLjI1MTkxMjkgMTAwNjQ0Ci0tLSBhL25ldC94ZnJtL3hmcm1fb3V0cHV0LmMKKysrIGIvbmV0L3hmcm0veGZybV9vdXRwdXQuYwpAQCAtMTI0LDcgKzEyNCw3IEBACiAJCWlmICgheCkKIAkJCXJldHVybiBkc3Rfb3V0cHV0KHNrYik7CiAKLQkJZXJyID0gbmZfaG9vayh4LT5pbm5lcl9tb2RlLT5hZmluZm8tPmZhbWlseSwKKwkJZXJyID0gbmZfaG9vayhza2ItPmRzdC0+b3BzLT5mYW1pbHksCiAJCQkgICAgICBORl9JTkVUX1BPU1RfUk9VVElORywgc2tiLAogCQkJICAgICAgTlVMTCwgc2tiLT5kc3QtPmRldiwgeGZybV9vdXRwdXQyKTsKIAkJaWYgKHVubGlrZWx5KGVyciAhPSAxKSkKQEAgLTE5Myw0ICsxOTMsMjAgQEAKIAogCXJldHVybiB4ZnJtX291dHB1dDIoc2tiKTsKIH0KKworaW50IHhmcm1faW5uZXJfZXh0cmFjdF9vdXRwdXQoc3RydWN0IHhmcm1fc3RhdGUgKngsIHN0cnVjdCBza19idWZmICpza2IpCit7CisJc3RydWN0IHhmcm1fbW9kZSAqaW5uZXJfbW9kZTsKKwlpZiAoeC0+c2VsLmZhbWlseSA9PSBBRl9VTlNQRUMpCisJCWlubmVyX21vZGUgPSB4ZnJtX2lwMmlubmVyX21vZGUoeCwKKwkJCQl4ZnJtX2FmMnByb3RvKHNrYi0+ZHN0LT5vcHMtPmZhbWlseSkpOworCWVsc2UKKwkJaW5uZXJfbW9kZSA9IHgtPmlubmVyX21vZGU7CisKKwlpZiAoaW5uZXJfbW9kZSA9PSBOVUxMKQorCQlyZXR1cm4gLUVBRk5PU1VQUE9SVDsKKwlyZXR1cm4gaW5uZXJfbW9kZS0+YWZpbmZvLT5leHRyYWN0X291dHB1dCh4LCBza2IpOworfQorCiBFWFBPUlRfU1lNQk9MX0dQTCh4ZnJtX291dHB1dCk7CitFWFBPUlRfU1lNQk9MX0dQTCh4ZnJtX2lubmVyX2V4dHJhY3Rfb3V0cHV0KTsKZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fc3RhdGUuYyBiL25ldC94ZnJtL3hmcm1fc3RhdGUuYwppbmRleCA3YmE2NWU4Li41OGYxZjkzIDEwMDY0NAotLS0gYS9uZXQveGZybS94ZnJtX3N0YXRlLmMKKysrIGIvbmV0L3hmcm0veGZybV9zdGF0ZS5jCkBAIC0zODgsNiArMzg4LDggQEAKIAlrZnJlZSh4LT5jb2FkZHIpOwogCWlmICh4LT5pbm5lcl9tb2RlKQogCQl4ZnJtX3B1dF9tb2RlKHgtPmlubmVyX21vZGUpOworCWlmICh4LT5pbm5lcl9tb2RlX2lhZikKKwkJeGZybV9wdXRfbW9kZSh4LT5pbm5lcl9tb2RlX2lhZik7CiAJaWYgKHgtPm91dGVyX21vZGUpCiAJCXhmcm1fcHV0X21vZGUoeC0+b3V0ZXJfbW9kZSk7CiAJaWYgKHgtPnR5cGUpIHsKQEAgLTUyMyw2ICs1MjUsOCBAQAogCQl4LT5sZnQuaGFyZF9wYWNrZXRfbGltaXQgPSBYRlJNX0lORjsKIAkJeC0+cmVwbGF5X21heGFnZSA9IDA7CiAJCXgtPnJlcGxheV9tYXhkaWZmID0gMDsKKwkJeC0+aW5uZXJfbW9kZSA9IE5VTEw7CisJCXgtPmlubmVyX21vZGVfaWFmID0gTlVMTDsKIAkJc3Bpbl9sb2NrX2luaXQoJngtPmxvY2spOwogCX0KIAlyZXR1cm4geDsKQEAgLTc5Niw3ICs4MDAsNyBAQAogCQkJICAgICAgc2VsZWN0b3IuCiAJCQkgKi8KIAkJCWlmICh4LT5rbS5zdGF0ZSA9PSBYRlJNX1NUQVRFX1ZBTElEKSB7Ci0JCQkJaWYgKCF4ZnJtX3NlbGVjdG9yX21hdGNoKCZ4LT5zZWwsIGZsLCB4LT5zZWwuZmFtaWx5KSB8fAorCQkJCWlmICgoeC0+c2VsLmZhbWlseSAmJiAheGZybV9zZWxlY3Rvcl9tYXRjaCgmeC0+c2VsLCBmbCwgeC0+c2VsLmZhbWlseSkpIHx8CiAJCQkJICAgICFzZWN1cml0eV94ZnJtX3N0YXRlX3BvbF9mbG93X21hdGNoKHgsIHBvbCwgZmwpKQogCQkJCQljb250aW51ZTsKIAkJCQlpZiAoIWJlc3QgfHwKQEAgLTE5NDQsNiArMTk0OCw3IEBACiBpbnQgeGZybV9pbml0X3N0YXRlKHN0cnVjdCB4ZnJtX3N0YXRlICp4KQogewogCXN0cnVjdCB4ZnJtX3N0YXRlX2FmaW5mbyAqYWZpbmZvOworCXN0cnVjdCB4ZnJtX21vZGUgKmlubmVyX21vZGU7CiAJaW50IGZhbWlseSA9IHgtPnByb3BzLmZhbWlseTsKIAlpbnQgZXJyOwogCkBAIC0xOTYyLDEzICsxOTY3LDQ4IEBACiAJCWdvdG8gZXJyb3I7CiAKIAllcnIgPSAtRVBST1RPTk9TVVBQT1JUOwotCXgtPmlubmVyX21vZGUgPSB4ZnJtX2dldF9tb2RlKHgtPnByb3BzLm1vZGUsIHgtPnNlbC5mYW1pbHkpOwotCWlmICh4LT5pbm5lcl9tb2RlID09IE5VTEwpCi0JCWdvdG8gZXJyb3I7CiAKLQlpZiAoISh4LT5pbm5lcl9tb2RlLT5mbGFncyAmIFhGUk1fTU9ERV9GTEFHX1RVTk5FTCkgJiYKLQkgICAgZmFtaWx5ICE9IHgtPnNlbC5mYW1pbHkpCi0JCWdvdG8gZXJyb3I7CisJaWYgKHgtPnNlbC5mYW1pbHkgIT0gQUZfVU5TUEVDKSB7CisJCWlubmVyX21vZGUgPSB4ZnJtX2dldF9tb2RlKHgtPnByb3BzLm1vZGUsIHgtPnNlbC5mYW1pbHkpOworCQlpZiAoaW5uZXJfbW9kZSA9PSBOVUxMKQorCQkJZ290byBlcnJvcjsKKworCQlpZiAoIShpbm5lcl9tb2RlLT5mbGFncyAmIFhGUk1fTU9ERV9GTEFHX1RVTk5FTCkgJiYKKwkJICAgIGZhbWlseSAhPSB4LT5zZWwuZmFtaWx5KSB7CisJCQl4ZnJtX3B1dF9tb2RlKGlubmVyX21vZGUpOworCQkJZ290byBlcnJvcjsKKwkJfQorCisJCXgtPmlubmVyX21vZGUgPSBpbm5lcl9tb2RlOworCX0gZWxzZSB7CisJCXN0cnVjdCB4ZnJtX21vZGUgKmlubmVyX21vZGVfaWFmOworCisJCWlubmVyX21vZGUgPSB4ZnJtX2dldF9tb2RlKHgtPnByb3BzLm1vZGUsIEFGX0lORVQpOworCQlpZiAoaW5uZXJfbW9kZSA9PSBOVUxMKQorCQkJZ290byBlcnJvcjsKKworCQlpZiAoIShpbm5lcl9tb2RlLT5mbGFncyAmIFhGUk1fTU9ERV9GTEFHX1RVTk5FTCkpIHsKKwkJCXhmcm1fcHV0X21vZGUoaW5uZXJfbW9kZSk7CisJCQlnb3RvIGVycm9yOworCQl9CisKKwkJaW5uZXJfbW9kZV9pYWYgPSB4ZnJtX2dldF9tb2RlKHgtPnByb3BzLm1vZGUsIEFGX0lORVQ2KTsKKwkJaWYgKGlubmVyX21vZGVfaWFmID09IE5VTEwpCisJCQlnb3RvIGVycm9yOworCisJCWlmICghKGlubmVyX21vZGVfaWFmLT5mbGFncyAmIFhGUk1fTU9ERV9GTEFHX1RVTk5FTCkpIHsKKwkJCXhmcm1fcHV0X21vZGUoaW5uZXJfbW9kZV9pYWYpOworCQkJZ290byBlcnJvcjsKKwkJfQorCisJCWlmICh4LT5wcm9wcy5mYW1pbHkgPT0gQUZfSU5FVCkgeworCQkJeC0+aW5uZXJfbW9kZSA9IGlubmVyX21vZGU7CisJCQl4LT5pbm5lcl9tb2RlX2lhZiA9IGlubmVyX21vZGVfaWFmOworCQl9IGVsc2UgeworCQkJeC0+aW5uZXJfbW9kZSA9IGlubmVyX21vZGVfaWFmOworCQkJeC0+aW5uZXJfbW9kZV9pYWYgPSBpbm5lcl9tb2RlOworCQl9CisJfQogCiAJeC0+dHlwZSA9IHhmcm1fZ2V0X3R5cGUoeC0+aWQucHJvdG8sIGZhbWlseSk7CiAJaWYgKHgtPnR5cGUgPT0gTlVMTCkKZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fdXNlci5jIGIvbmV0L3hmcm0veGZybV91c2VyLmMKaW5kZXggZjk3MWNhNS4uMDE5ZDIxZCAxMDA2NDQKLS0tIGEvbmV0L3hmcm0veGZybV91c2VyLmMKKysrIGIvbmV0L3hmcm0veGZybV91c2VyLmMKQEAgLTI4OCwxMiArMjg4LDkgQEAKIAltZW1jcHkoJngtPnByb3BzLnNhZGRyLCAmcC0+c2FkZHIsIHNpemVvZih4LT5wcm9wcy5zYWRkcikpOwogCXgtPnByb3BzLmZsYWdzID0gcC0+ZmxhZ3M7CiAKLQkvKgotCSAqIFNldCBpbm5lciBhZGRyZXNzIGZhbWlseSBpZiB0aGUgS00gbGVmdCBpdCBhcyB6ZXJvLgotCSAqIFNlZSBjb21tZW50IGluIHZhbGlkYXRlX3RtcGwuCi0JICovCiAJaWYgKCF4LT5zZWwuZmFtaWx5KQogCQl4LT5zZWwuZmFtaWx5ID0gcC0+ZmFtaWx5OworCiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zY3JpcHRzL01ha2VmaWxlLm1vZHBvc3QgYi9zY3JpcHRzL01ha2VmaWxlLm1vZHBvc3QKaW5kZXggY2ZjMDA0ZS4uMmQyMDY0MCAxMDA2NDQKLS0tIGEvc2NyaXB0cy9NYWtlZmlsZS5tb2Rwb3N0CisrKyBiL3NjcmlwdHMvTWFrZWZpbGUubW9kcG9zdApAQCAtNTgsNiArNTgsOSBAQAogIyBTdG9wIGFmdGVyIGJ1aWxkaW5nIC5vIGZpbGVzIGlmIE5PRklOQUwgaXMgc2V0LiBNYWtlcyBjb21waWxlIHRlc3RzIHF1aWNrZXIKIF9tb2Rwb3N0OiAkKGlmICQoS0JVSUxEX01PRFBPU1RfTk9GSU5BTCksICQobW9kdWxlczoua286Lm8pLCQobW9kdWxlcykpCiAKK2lmbmVxICgkKEtCVUlMRF9CVUlMREhPU1QpLCQoQVJDSCkpCisgICAgICAgIGNyb3NzX2J1aWxkIDo9IDEKK2VuZGlmCiAKICMgU3RlcCAyKSwgaW52b2tlIG1vZHBvc3QKICMgIEluY2x1ZGVzIHN0ZXAgMyw0CkBAIC03MCw3ICs3Myw4IEBACiAgJChpZiAkKENPTkZJR19ERUJVR19TRUNUSU9OX01JU01BVENIKSwsLVMpICAgICAgXAogICQoaWYgJChDT05GSUdfTUFSS0VSUyksLUsgJChrZXJuZWxtYXJrZXJzZmlsZSkpIFwKICAkKGlmICQoQ09ORklHX01BUktFUlMpLC1NICQobWFya2Vyc2ZpbGUpKQkgXAotICQoaWYgJChLQlVJTERfRVhUTU9EKSQoS0JVSUxEX01PRFBPU1RfV0FSTiksLXcpCisgJChpZiAkKEtCVUlMRF9FWFRNT0QpJChLQlVJTERfTU9EUE9TVF9XQVJOKSwtdykgXAorICQoaWYgJChjcm9zc19idWlsZCksLWMpCiAKIHF1aWV0X2NtZF9tb2Rwb3N0ID0gTU9EUE9TVCAkKHdvcmRzICQoZmlsdGVyLW91dCB2bWxpbnV4IEZPUkNFLCAkXikpIG1vZHVsZXMKICAgICAgIGNtZF9tb2Rwb3N0ID0gJChtb2Rwb3N0KSAtcwpkaWZmIC0tZ2l0IGEvc2NyaXB0cy9jaGVja3BhdGNoLnBsIGIvc2NyaXB0cy9jaGVja3BhdGNoLnBsCmluZGV4IDJhN2NlZjkuLjU4YTk0OTQgMTAwNzU1Ci0tLSBhL3NjcmlwdHMvY2hlY2twYXRjaC5wbAorKysgYi9zY3JpcHRzL2NoZWNrcGF0Y2gucGwKQEAgLTksNyArOSw3IEBACiBteSAkUCA9ICQwOwogJFAgPX4gc0AuKi9AQGc7CiAKLW15ICRWID0gJzAuMTUnOworbXkgJFYgPSAnMC4xNic7CiAKIHVzZSBHZXRvcHQ6OkxvbmcgcXcoOmNvbmZpZyBub19hdXRvX2FiYnJldik7CiAKQEAgLTE4LDYgKzE4LDcgQEAKIG15ICRjaGtfc2lnbm9mZiA9IDE7CiBteSAkY2hrX3BhdGNoID0gMTsKIG15ICR0c3RfdHlwZSA9IDA7CitteSAkdHN0X29ubHk7CiBteSAkZW1hY3MgPSAwOwogbXkgJHRlcnNlID0gMDsKIG15ICRmaWxlID0gMDsKQEAgLTQ0LDYgKzQ1LDcgQEAKIAogCSdkZWJ1Zz1zJwk9PiBcJWRlYnVnLAogCSd0ZXN0LXR5cGUhJwk9PiBcJHRzdF90eXBlLAorCSd0ZXN0LW9ubHk9cycJPT4gXCR0c3Rfb25seSwKICkgb3IgZXhpdDsKIAogbXkgJGV4aXQgPSAwOwpAQCAtMjYzLDE3ICsyNjUsNyBAQAogCXJldHVybiAkcmVzOwogfQogc3ViIGNvcHlfc3BhY2luZyB7Ci0JbXkgKCRzdHIpID0gQF87Ci0KLQlteSAkcmVzID0gJyc7Ci0JZm9yIG15ICRjIChzcGxpdCgvLywgJHN0cikpIHsKLQkJaWYgKCRjIGVxICJcdCIpIHsKLQkJCSRyZXMgLj0gJGM7Ci0JCX0gZWxzZSB7Ci0JCQkkcmVzIC49ICcgJzsKLQkJfQotCX0KLQorCShteSAkcmVzID0gc2hpZnQpID1+IHRyL1x0LyAvYzsKIAlyZXR1cm4gJHJlczsKIH0KIApAQCAtMjkwLDUzICsyODIsNzYgQEAKIAlyZXR1cm4gKGxlbmd0aCgkbGluZSksIGxlbmd0aCgkd2hpdGUpKTsKIH0KIAorbXkgJHNhbml0aXNlX3F1b3RlID0gJyc7CisKK3N1YiBzYW5pdGlzZV9saW5lX3Jlc2V0IHsKKwlteSAoJGluX2NvbW1lbnQpID0gQF87CisKKwlpZiAoJGluX2NvbW1lbnQpIHsKKwkJJHNhbml0aXNlX3F1b3RlID0gJyovJzsKKwl9IGVsc2UgeworCQkkc2FuaXRpc2VfcXVvdGUgPSAnJzsKKwl9Cit9CiBzdWIgc2FuaXRpc2VfbGluZSB7CiAJbXkgKCRsaW5lKSA9IEBfOwogCiAJbXkgJHJlcyA9ICcnOwogCW15ICRsID0gJyc7CiAKLQlteSAkcXVvdGUgPSAnJzsKIAlteSAkcWxlbiA9IDA7CisJbXkgJG9mZiA9IDA7CisJbXkgJGM7CiAKLQlmb3JlYWNoIG15ICRjIChzcGxpdCgvLywgJGxpbmUpKSB7Ci0JCSMgVGhlIHNlY29uZCBiYWNrc2xhc2ggb2YgYSBwYWlyIGlzIG5vdCBhICJxdW90ZSIuCi0JCWlmICgkbCBlcSAiXFwiICYmICRjIGVxICJcXCIpIHsKLQkJCSRjID0gJ1gnOworCSMgQWx3YXlzIGNvcHkgb3ZlciB0aGUgZGlmZiBtYXJrZXIuCisJJHJlcyA9IHN1YnN0cigkbGluZSwgMCwgMSk7CisKKwlmb3IgKCRvZmYgPSAxOyAkb2ZmIDwgbGVuZ3RoKCRsaW5lKTsgJG9mZisrKSB7CisJCSRjID0gc3Vic3RyKCRsaW5lLCAkb2ZmLCAxKTsKKworCQkjIENvbW1lbnRzIHdlIGFyZSB3YWNraW5nIGNvbXBsZXRseSBpbmNsdWRpbmcgdGhlIGJlZ2luCisJCSMgYW5kIGVuZCwgYWxsIHRvICQ7LgorCQlpZiAoJHNhbml0aXNlX3F1b3RlIGVxICcnICYmIHN1YnN0cigkbGluZSwgJG9mZiwgMikgZXEgJy8qJykgeworCQkJJHNhbml0aXNlX3F1b3RlID0gJyovJzsKKworCQkJc3Vic3RyKCRyZXMsICRvZmYsIDIsICIkOyQ7Iik7CisJCQkkb2ZmKys7CisJCQluZXh0OwogCQl9Ci0JCWlmICgkbCBuZSAiXFwiICYmICgkYyBlcSAiJyIgfHwgJGMgZXEgJyInKSkgewotCQkJaWYgKCRxdW90ZSBlcSAnJykgewotCQkJCSRxdW90ZSA9ICRjOwotCQkJCSRyZXMgLj0gJGM7Ci0JCQkJJGwgPSAkYzsKLQkJCQkkcWxlbiA9IDA7CisJCWlmIChzdWJzdHIoJGxpbmUsICRvZmYsIDIpIGVxICRzYW5pdGlzZV9xdW90ZSkgeworCQkJJHNhbml0aXNlX3F1b3RlID0gJyc7CisJCQlzdWJzdHIoJHJlcywgJG9mZiwgMiwgIiQ7JDsiKTsKKwkJCSRvZmYrKzsKKwkJCW5leHQ7CisJCX0KKworCQkjIEEgXCBpbiBhIHN0cmluZyBtZWFucyBpZ25vcmUgdGhlIG5leHQgY2hhcmFjdGVyLgorCQlpZiAoKCRzYW5pdGlzZV9xdW90ZSBlcSAiJyIgfHwgJHNhbml0aXNlX3F1b3RlIGVxICciJykgJiYKKwkJICAgICRjIGVxICJcXCIpIHsKKwkJCXN1YnN0cigkcmVzLCAkb2ZmLCAyLCAnWFgnKTsKKwkJCSRvZmYrKzsKKwkJCW5leHQ7CisJCX0KKwkJIyBSZWd1bGFyIHF1b3Rlcy4KKwkJaWYgKCRjIGVxICInIiB8fCAkYyBlcSAnIicpIHsKKwkJCWlmICgkc2FuaXRpc2VfcXVvdGUgZXEgJycpIHsKKwkJCQkkc2FuaXRpc2VfcXVvdGUgPSAkYzsKKworCQkJCXN1YnN0cigkcmVzLCAkb2ZmLCAxLCAkYyk7CiAJCQkJbmV4dDsKLQkJCX0gZWxzaWYgKCRxdW90ZSBlcSAkYykgewotCQkJCSRxdW90ZSA9ICcnOworCQkJfSBlbHNpZiAoJHNhbml0aXNlX3F1b3RlIGVxICRjKSB7CisJCQkJJHNhbml0aXNlX3F1b3RlID0gJyc7CiAJCQl9CiAJCX0KLQkJaWYgKCRxdW90ZSBlcSAiJyIgJiYgJHFsZW4gPiAxKSB7Ci0JCQkkcXVvdGUgPSAnJzsKLQkJfQotCQlpZiAoJHF1b3RlICYmICRjIG5lICJcdCIpIHsKLQkJCSRyZXMgLj0gIlgiOwotCQkJJHFsZW4rKzsKKworCQkjcHJpbnQgIlNROiRzYW5pdGlzZV9xdW90ZVxuIjsKKwkJaWYgKCRvZmYgIT0gMCAmJiAkc2FuaXRpc2VfcXVvdGUgZXEgJyovJyAmJiAkYyBuZSAiXHQiKSB7CisJCQlzdWJzdHIoJHJlcywgJG9mZiwgMSwgJDspOworCQl9IGVsc2lmICgkb2ZmICE9IDAgJiYgJHNhbml0aXNlX3F1b3RlICYmICRjIG5lICJcdCIpIHsKKwkJCXN1YnN0cigkcmVzLCAkb2ZmLCAxLCAnWCcpOwogCQl9IGVsc2UgewotCQkJJHJlcyAuPSAkYzsKKwkJCXN1YnN0cigkcmVzLCAkb2ZmLCAxLCAkYyk7CiAJCX0KLQotCQkkbCA9ICRjOwotCX0KLQotCSMgQ2xlYXIgb3V0IHRoZSBjb21tZW50cy4KLQl3aGlsZSAoJHJlcyA9fiBtQCgvXCouKj9cKi8pQGcpIHsKLQkJc3Vic3RyKCRyZXMsICQtWzFdLCAkK1sxXSAtICQtWzFdKSA9ICQ7IHggKCQrWzFdIC0gJC1bMV0pOwotCX0KLQlpZiAoJHJlcyA9fiBtQCgvXCouKilAKSB7Ci0JCXN1YnN0cigkcmVzLCAkLVsxXSwgJCtbMV0gLSAkLVsxXSkgPSAkOyB4ICgkK1sxXSAtICQtWzFdKTsKLQl9Ci0JaWYgKCRyZXMgPX4gbUBeLiguKlwqLylAKSB7Ci0JCXN1YnN0cigkcmVzLCAkLVsxXSwgJCtbMV0gLSAkLVsxXSkgPSAkOyB4ICgkK1sxXSAtICQtWzFdKTsKIAl9CiAKIAkjIFRoZSBwYXRobmFtZSBvbiBhICNpbmNsdWRlIG1heSBiZSBzdXJyb3VuZGVkIGJ5ICc8JyBhbmQgJz4nLgpAQCAtMzU5LDYgKzM3NCw3IEBACiAJbXkgJGJsayA9ICcnOwogCW15ICRzb2ZmID0gJG9mZjsKIAlteSAkY29mZiA9ICRvZmYgLSAxOworCW15ICRjb2ZmX3NldCA9IDA7CiAKIAlteSAkbG9mZiA9IDA7CiAKQEAgLTM3MCw3ICszODYsNyBAQAogCiAJbXkgJHJlbWFpbmRlcjsKIAl3aGlsZSAoMSkgewotCQkjd2FybiAiQ1NCOiBibGs8JGJsaz5cbiI7CisJCSN3YXJuICJDU0I6IGJsazwkYmxrPiByZW1haW48JHJlbWFpbj5cbiI7CiAJCSMgSWYgd2UgYXJlIGFib3V0IHRvIGRyb3Agb2ZmIHRoZSBlbmQsIHB1bGwgaW4gbW9yZQogCQkjIGNvbnRleHQuCiAJCWlmICgkb2ZmID49ICRsZW4pIHsKQEAgLTM5Myw3ICs0MDksNyBAQAogCQkkYyA9IHN1YnN0cigkYmxrLCAkb2ZmLCAxKTsKIAkJJHJlbWFpbmRlciA9IHN1YnN0cigkYmxrLCAkb2ZmKTsKIAotCQkjd2FybiAiQ1NCOiBjPCRjPiB0eXBlPCR0eXBlPiBsZXZlbDwkbGV2ZWw+XG4iOworCQkjd2FybiAiQ1NCOiBjPCRjPiB0eXBlPCR0eXBlPiBsZXZlbDwkbGV2ZWw+IHJlbWFpbmRlcjwkcmVtYWluZGVyPiBjb2ZmX3NldDwkY29mZl9zZXQ+XG4iOwogCQkjIFN0YXRlbWVudCBlbmRzIGF0IHRoZSAnOycgb3IgYSBjbG9zZSAnfScgYXQgdGhlCiAJCSMgb3V0ZXJtb3N0IGxldmVsLgogCQlpZiAoJGxldmVsID09IDAgJiYgJGMgZXEgJzsnKSB7CkBAIC00MDEsMTAgKzQxNywxNCBAQAogCQl9CiAKIAkJIyBBbiBlbHNlIGlzIHJlYWxseSBhIGNvbmRpdGlvbmFsIGFzIGxvbmcgYXMgaXRzIG5vdCBlbHNlIGlmCi0JCWlmICgkbGV2ZWwgPT0gMCAmJiAoIWRlZmluZWQoJHApIHx8ICRwID1+IC8oPzpcc3xcfSkvKSAmJgotCQkJCSRyZW1haW5kZXIgPX4gLyhlbHNlKSg/OlxzfHspLyAmJgotCQkJCSRyZW1haW5kZXIgIX4gL2Vsc2VccytpZlxiLykgewotCQkJJGNvZmYgPSAkb2ZmICsgbGVuZ3RoKCQxKTsKKwkJaWYgKCRsZXZlbCA9PSAwICYmICRjb2ZmX3NldCA9PSAwICYmCisJCQkJKCFkZWZpbmVkKCRwKSB8fCAkcCA9fiAvKD86XHN8XH18XCspLykgJiYKKwkJCQkkcmVtYWluZGVyID1+IC9eKGVsc2UpKD86XHN8eykvICYmCisJCQkJJHJlbWFpbmRlciAhfiAvXmVsc2VccytpZlxiLykgeworCQkJJGNvZmYgPSAkb2ZmICsgbGVuZ3RoKCQxKSAtIDE7CisJCQkkY29mZl9zZXQgPSAxOworCQkJI3dhcm4gIkNTQjogbWFyayBjb2ZmPCRjb2ZmPiBzb2ZmPCRzb2ZmPiAxPCQxPlxuIjsKKwkJCSN3YXJuICJbIiAuIHN1YnN0cigkYmxrLCAkc29mZiwgJGNvZmYgLSAkc29mZiArIDEpIC4gIl1cbiI7CiAJCX0KIAogCQlpZiAoKCR0eXBlIGVxICcnIHx8ICR0eXBlIGVxICcoJykgJiYgJGMgZXEgJygnKSB7CkBAIC00MTcsNiArNDM3LDggQEAKIAogCQkJaWYgKCRsZXZlbCA9PSAwICYmICRjb2ZmIDwgJHNvZmYpIHsKIAkJCQkkY29mZiA9ICRvZmY7CisJCQkJJGNvZmZfc2V0ID0gMTsKKwkJCQkjd2FybiAiQ1NCOiBtYXJrIGNvZmY8JGNvZmY+XG4iOwogCQkJfQogCQl9CiAJCWlmICgoJHR5cGUgZXEgJycgfHwgJHR5cGUgZXEgJ3snKSAmJiAkYyBlcSAneycpIHsKQEAgLTQ0NCw3ICs0NjYsNyBAQAogCSN3YXJuICJTVEFURU1FTlQ8JHN0YXRlbWVudD5cbiI7CiAJI3dhcm4gIkNPTkRJVElPTjwkY29uZGl0aW9uPlxuIjsKIAotCSNwcmludCAib2ZmPCRvZmY+IGxvZmY8JGxvZmY+XG4iOworCSNwcmludCAiY29mZjwkY29mZj4gc29mZjwkb2ZmPiBsb2ZmPCRsb2ZmPlxuIjsKIAogCXJldHVybiAoJHN0YXRlbWVudCwgJGNvbmRpdGlvbiwKIAkJCSRsaW5lLCAkcmVtYWluICsgMSwgJG9mZiAtICRsb2ZmICsgMSwgJGxldmVsKTsKQEAgLTUwMiw3ICs1MjQsNyBAQAogCSMgR3JhYiB0aGUgZmlyc3QgY29uZGl0aW9uYWwvYmxvY2sgcGFpci4KIAkoJHN0YXRlbWVudCwgJGNvbmRpdGlvbiwgJGxpbmVuciwgJHJlbWFpbiwgJG9mZiwgJGxldmVsKSA9CiAJCQkJY3R4X3N0YXRlbWVudF9ibG9jaygkbGluZW5yLCAkcmVtYWluLCAkb2ZmKTsKLQkjcHJpbnQgIkY6IGM8JGNvbmRpdGlvbj4gczwkc3RhdGVtZW50PlxuIjsKKwkjcHJpbnQgIkY6IGM8JGNvbmRpdGlvbj4gczwkc3RhdGVtZW50PiByZW1haW48JHJlbWFpbj5cbiI7CiAJcHVzaChAY2h1bmtzLCBbICRjb25kaXRpb24sICRzdGF0ZW1lbnQgXSk7CiAJaWYgKCEoJHJlbWFpbiA+IDAgJiYgJGNvbmRpdGlvbiA9fiAvXlxzKig/OlxuWystXSk/XHMqKD86aWZ8ZWxzZXxkbylcYi9zKSkgewogCQlyZXR1cm4gKCRsZXZlbCwgJGxpbmVuciwgQGNodW5rcyk7CkBAIC01MTQsNyArNTM2LDcgQEAKIAkJKCRzdGF0ZW1lbnQsICRjb25kaXRpb24sICRsaW5lbnIsICRyZW1haW4sICRvZmYsICRsZXZlbCkgPQogCQkJCWN0eF9zdGF0ZW1lbnRfYmxvY2soJGxpbmVuciwgJHJlbWFpbiwgJG9mZik7CiAJCSNwcmludCAiQzogYzwkY29uZGl0aW9uPiBzPCRzdGF0ZW1lbnQ+IHJlbWFpbjwkcmVtYWluPlxuIjsKLQkJbGFzdCBpZiAoISgkcmVtYWluID4gMCAmJiAkY29uZGl0aW9uID1+IC9eXHMqKD86XG5bKy1dKT9ccyooPzplbHNlfGRvKVxiL3MpKTsKKwkJbGFzdCBpZiAoISgkcmVtYWluID4gMCAmJiAkY29uZGl0aW9uID1+IC9eKD86XHMqXG5bKy1dKSpccyooPzplbHNlfGRvKVxiL3MpKTsKIAkJI3ByaW50ICJDOiBwdXNoXG4iOwogCQlwdXNoKEBjaHVua3MsIFsgJGNvbmRpdGlvbiwgJHN0YXRlbWVudCBdKTsKIAl9CkBAIC02NjgsNiArNjkwLDcgQEAKIAlwcmludCAiJHN0cmVhbVxuIiBpZiAoJGRiZ192YWx1ZXMgPiAxKTsKIAogCXdoaWxlIChsZW5ndGgoJGN1cikpIHsKKwkJQGF2X3BhcmVuX3R5cGUgPSAoJ0UnKSBpZiAoJCNhdl9wYXJlbl90eXBlIDwgMCk7CiAJCXByaW50ICIgPCIgLiBqb2luKCcnLCBAYXZfcGFyZW5fdHlwZSkgLgogCQkJCQkiPiA8JHR5cGU+ICIgaWYgKCRkYmdfdmFsdWVzID4gMSk7CiAJCWlmICgkY3VyID1+IC9eKFxzKykvbykgewpAQCAtODA0LDI4ICs4MjcsMzQgQEAKIG15ICRwcmVmaXggPSAnJzsKIAogc3ViIHJlcG9ydCB7CisJaWYgKGRlZmluZWQgJHRzdF9vbmx5ICYmICRfWzBdICF+IC9cUSR0c3Rfb25seVxFLykgeworCQlyZXR1cm4gMDsKKwl9CiAJbXkgJGxpbmUgPSAkcHJlZml4IC4gJF9bMF07CiAKIAkkbGluZSA9IChzcGxpdCgnXG4nLCAkbGluZSkpWzBdIC4gIlxuIiBpZiAoJHRlcnNlKTsKIAogCXB1c2gob3VyIEByZXBvcnQsICRsaW5lKTsKKworCXJldHVybiAxOwogfQogc3ViIHJlcG9ydF9kdW1wIHsKIAlvdXIgQHJlcG9ydDsKIH0KIHN1YiBFUlJPUiB7Ci0JcmVwb3J0KCJFUlJPUjogJF9bMF1cbiIpOwotCW91ciAkY2xlYW4gPSAwOwotCW91ciAkY250X2Vycm9yKys7CisJaWYgKHJlcG9ydCgiRVJST1I6ICRfWzBdXG4iKSkgeworCQlvdXIgJGNsZWFuID0gMDsKKwkJb3VyICRjbnRfZXJyb3IrKzsKKwl9CiB9CiBzdWIgV0FSTiB7Ci0JcmVwb3J0KCJXQVJOSU5HOiAkX1swXVxuIik7Ci0Jb3VyICRjbGVhbiA9IDA7Ci0Jb3VyICRjbnRfd2FybisrOworCWlmIChyZXBvcnQoIldBUk5JTkc6ICRfWzBdXG4iKSkgeworCQlvdXIgJGNsZWFuID0gMDsKKwkJb3VyICRjbnRfd2FybisrOworCX0KIH0KIHN1YiBDSEsgewotCWlmICgkY2hlY2spIHsKLQkJcmVwb3J0KCJDSEVDSzogJF9bMF1cbiIpOworCWlmICgkY2hlY2sgJiYgcmVwb3J0KCJDSEVDSzogJF9bMF1cbiIpKSB7CiAJCW91ciAkY2xlYW4gPSAwOwogCQlvdXIgJGNudF9jaGsrKzsKIAl9CkBAIC04NjcsMzAgKzg5Niw3NiBAQAogCW15ICRwcmV2X3ZhbHVlcyA9ICdFJzsKIAogCSMgc3VwcHJlc3Npb24gZmxhZ3MKLQlteSAkc3VwcHJlc3NfaWZicmFjZXMgPSAwOworCW15ICVzdXBwcmVzc19pZmJyYWNlczsKIAogCSMgUHJlLXNjYW4gdGhlIHBhdGNoIHNhbml0aXppbmcgdGhlIGxpbmVzLgogCSMgUHJlLXNjYW4gdGhlIHBhdGNoIGxvb2tpbmcgZm9yIGFueSBfX3NldHVwIGRvY3VtZW50YXRpb24uCiAJIwogCW15IEBzZXR1cF9kb2NzID0gKCk7CiAJbXkgJHNldHVwX2RvY3MgPSAwOworCisJc2FuaXRpc2VfbGluZV9yZXNldCgpOwogCW15ICRsaW5lOwogCWZvcmVhY2ggbXkgJHJhd2xpbmUgKEByYXdsaW5lcykgewotCQkjIFN0YW5kYXJkaXNlIHRoZSBzdHJpbmdzIGFuZCBjaGFycyB3aXRoaW4gdGhlIGlucHV0IHRvCi0JCSMgc2ltcGxpZnkgbWF0Y2hpbmcuCi0JCSRsaW5lID0gc2FuaXRpc2VfbGluZSgkcmF3bGluZSk7Ci0JCXB1c2goQGxpbmVzLCAkbGluZSk7CisJCSRsaW5lbnIrKzsKKwkJJGxpbmUgPSAkcmF3bGluZTsKIAotCQkjI3ByaW50ICI9PT4kcmF3bGluZVxuIjsKLQkJIyNwcmludCAiLS0+JGxpbmVcbiI7Ci0KLQkJaWYgKCRsaW5lPX4vXlwrXCtcK1xzKyhcUyspLykgeworCQlpZiAoJHJhd2xpbmU9fi9eXCtcK1wrXHMrKFxTKykvKSB7CiAJCQkkc2V0dXBfZG9jcyA9IDA7CiAJCQlpZiAoJDEgPX4gbUBEb2N1bWVudGF0aW9uL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dCRAKSB7CiAJCQkJJHNldHVwX2RvY3MgPSAxOwogCQkJfQotCQkJbmV4dDsKKwkJCSNuZXh0OwogCQl9CisJCWlmICgkcmF3bGluZT1+L15cQFxAIC1cZCsoPzosXGQrKT8gXCsoXGQrKSgsKFxkKykpPyBcQFxALykgeworCQkJJHJlYWxsaW5lPSQxLTE7CisJCQlpZiAoZGVmaW5lZCAkMikgeworCQkJCSRyZWFsY250PSQzKzE7CisJCQl9IGVsc2UgeworCQkJCSRyZWFsY250PTErMTsKKwkJCX0KKworCQkJIyBHdWVzdGltYXRlIGlmIHRoaXMgaXMgYSBjb250aW51aW5nIGNvbW1lbnQuICBSdW4KKwkJCSMgdGhlIGNvbnRleHQgbG9va2luZyBmb3IgYSBjb21tZW50ICJlZGdlIi4gIElmIHRoaXMKKwkJCSMgZWRnZSBpcyBhIGNsb3NlIGNvbW1lbnQgdGhlbiB3ZSBtdXN0IGJlIGluIGEgY29tbWVudAorCQkJIyBhdCBjb250ZXh0IHN0YXJ0LgorCQkJbXkgJGVkZ2U7CisJCQlmb3IgKG15ICRsbiA9ICRsaW5lbnI7ICRsbiA8ICgkbGluZW5yICsgJHJlYWxjbnQpOyAkbG4rKykgeworCQkJCW5leHQgaWYgKCRsaW5lID1+IC9eLS8pOworCQkJCSgkZWRnZSkgPSAoJHJhd2xpbmVzWyRsbiAtIDFdID1+IG1AKC9cKnxcKi8pQCk7CisJCQkJbGFzdCBpZiAoZGVmaW5lZCAkZWRnZSk7CisJCQl9CisJCQlpZiAoZGVmaW5lZCAkZWRnZSAmJiAkZWRnZSBlcSAnKi8nKSB7CisJCQkJJGluX2NvbW1lbnQgPSAxOworCQkJfQorCisJCQkjIEd1ZXN0aW1hdGUgaWYgdGhpcyBpcyBhIGNvbnRpbnVpbmcgY29tbWVudC4gIElmIHRoaXMKKwkJCSMgaXMgdGhlIHN0YXJ0IG9mIGEgZGlmZiBibG9jayBhbmQgdGhpcyBsaW5lIHN0YXJ0cworCQkJIyAnIConIHRoZW4gaXQgaXMgdmVyeSBsaWtlbHkgYSBjb21tZW50LgorCQkJaWYgKCFkZWZpbmVkICRlZGdlICYmCisJCQkgICAgJHJhd2xpbmVzWyRsaW5lbnJdID1+IG1AXi5ccyogXCooPzpcc3wkKUApCisJCQl7CisJCQkJJGluX2NvbW1lbnQgPSAxOworCQkJfQorCisJCQkjI3ByaW50ICJDT01NRU5UOiRpbl9jb21tZW50IGVkZ2U8JGVkZ2U+ICRyYXdsaW5lXG4iOworCQkJc2FuaXRpc2VfbGluZV9yZXNldCgkaW5fY29tbWVudCk7CisKKwkJfSBlbHNpZiAoJHJlYWxjbnQpIHsKKwkJCSMgU3RhbmRhcmRpc2UgdGhlIHN0cmluZ3MgYW5kIGNoYXJzIHdpdGhpbiB0aGUgaW5wdXQgdG8KKwkJCSMgc2ltcGxpZnkgbWF0Y2hpbmcuCisJCQkkbGluZSA9IHNhbml0aXNlX2xpbmUoJHJhd2xpbmUpOworCQl9CisJCXB1c2goQGxpbmVzLCAkbGluZSk7CisKKwkJaWYgKCRyZWFsY250ID4gMSkgeworCQkJJHJlYWxjbnQtLSBpZiAoJGxpbmUgPX4gL14oPzpcK3wgfCQpLyk7CisJCX0gZWxzZSB7CisJCQkkcmVhbGNudCA9IDA7CisJCX0KKworCQkjcHJpbnQgIj09PiRyYXdsaW5lXG4iOworCQkjcHJpbnQgIi0tPiRsaW5lXG4iOwogCiAJCWlmICgkc2V0dXBfZG9jcyAmJiAkbGluZSA9fiAvXlwrLykgewogCQkJcHVzaChAc2V0dXBfZG9jcywgJGxpbmUpOwpAQCAtODk5LDIzICs5NzQsMTcgQEAKIAogCSRwcmVmaXggPSAnJzsKIAorCSRyZWFsY250ID0gMDsKKwkkbGluZW5yID0gMDsKIAlmb3JlYWNoIG15ICRsaW5lIChAbGluZXMpIHsKIAkJJGxpbmVucisrOwogCiAJCW15ICRyYXdsaW5lID0gJHJhd2xpbmVzWyRsaW5lbnIgLSAxXTsKIAotI2V4dHJhY3QgdGhlIGZpbGVuYW1lIGFzIGl0IHBhc3NlcwotCQlpZiAoJGxpbmU9fi9eXCtcK1wrXHMrKFxTKykvKSB7Ci0JCQkkcmVhbGZpbGU9JDE7Ci0JCQkkcmVhbGZpbGUgPX4gc0BeW14vXSovQEA7Ci0JCQkkaW5fY29tbWVudCA9IDA7Ci0JCQluZXh0OwotCQl9CiAjZXh0cmFjdCB0aGUgbGluZSByYW5nZSBpbiB0aGUgZmlsZSBhZnRlciB0aGUgcGF0Y2ggaXMgYXBwbGllZAogCQlpZiAoJGxpbmU9fi9eXEBcQCAtXGQrKD86LFxkKyk/IFwrKFxkKykoLChcZCspKT8gXEBcQC8pIHsKIAkJCSRpc19wYXRjaCA9IDE7CiAJCQkkZmlyc3RfbGluZSA9ICRsaW5lbnIgKyAxOwotCQkJJGluX2NvbW1lbnQgPSAwOwogCQkJJHJlYWxsaW5lPSQxLTE7CiAJCQlpZiAoZGVmaW5lZCAkMikgewogCQkJCSRyZWFsY250PSQzKzE7CkBAIC05MjUsNTAgKzk5NCwxNiBAQAogCQkJYW5ub3RhdGVfcmVzZXQoKTsKIAkJCSRwcmV2X3ZhbHVlcyA9ICdFJzsKIAotCQkJJHN1cHByZXNzX2lmYnJhY2VzID0gJGxpbmVuciAtIDE7CisJCQklc3VwcHJlc3NfaWZicmFjZXMgPSAoKTsKIAkJCW5leHQ7Ci0JCX0KIAogIyB0cmFjayB0aGUgbGluZSBudW1iZXIgYXMgd2UgbW92ZSB0aHJvdWdoIHRoZSBodW5rLCBub3RlIHRoYXQKICMgbmV3IHZlcnNpb25zIG9mIEdOVSBkaWZmIG9taXQgdGhlIGxlYWRpbmcgc3BhY2Ugb24gY29tcGxldGVseQogIyBibGFuayBjb250ZXh0IGxpbmVzIHNvIHdlIG5lZWQgdG8gY291bnQgdGhhdCB0b28uCi0JCWlmICgkbGluZSA9fiAvXiggfFwrfCQpLykgeworCQl9IGVsc2lmICgkbGluZSA9fiAvXiggfFwrfCQpLykgewogCQkJJHJlYWxsaW5lKys7CiAJCQkkcmVhbGNudC0tIGlmICgkcmVhbGNudCAhPSAwKTsKIAotCQkJIyBHdWVzdGltYXRlIGlmIHRoaXMgaXMgYSBjb250aW51aW5nIGNvbW1lbnQuICBSdW4KLQkJCSMgdGhlIGNvbnRleHQgbG9va2luZyBmb3IgYSBjb21tZW50ICJlZGdlIi4gIElmIHRoaXMKLQkJCSMgZWRnZSBpcyBhIGNsb3NlIGNvbW1lbnQgdGhlbiB3ZSBtdXN0IGJlIGluIGEgY29tbWVudAotCQkJIyBhdCBjb250ZXh0IHN0YXJ0LgotCQkJaWYgKCRsaW5lbnIgPT0gJGZpcnN0X2xpbmUpIHsKLQkJCQlteSAkZWRnZTsKLQkJCQlmb3IgKG15ICRsbiA9ICRmaXJzdF9saW5lOyAkbG4gPCAoJGxpbmVuciArICRyZWFsY250KTsgJGxuKyspIHsKLQkJCQkJKCRlZGdlKSA9ICgkcmF3bGluZXNbJGxuIC0gMV0gPX4gbUAoL1wqfFwqLylAKTsKLQkJCQkJbGFzdCBpZiAoZGVmaW5lZCAkZWRnZSk7Ci0JCQkJfQotCQkJCWlmIChkZWZpbmVkICRlZGdlICYmICRlZGdlIGVxICcqLycpIHsKLQkJCQkJJGluX2NvbW1lbnQgPSAxOwotCQkJCX0KLQkJCX0KLQotCQkJIyBHdWVzdGltYXRlIGlmIHRoaXMgaXMgYSBjb250aW51aW5nIGNvbW1lbnQuICBJZiB0aGlzCi0JCQkjIGlzIHRoZSBzdGFydCBvZiBhIGRpZmYgYmxvY2sgYW5kIHRoaXMgbGluZSBzdGFydHMKLQkJCSMgJyAqJyB0aGVuIGl0IGlzIHZlcnkgbGlrZWx5IGEgY29tbWVudC4KLQkJCWlmICgkbGluZW5yID09ICRmaXJzdF9saW5lIGFuZCAkcmF3bGluZSA9fiBtQF4uXHMqIFwqKD86XHN8JClAKSB7Ci0JCQkJJGluX2NvbW1lbnQgPSAxOwotCQkJfQotCi0JCQkjIEZpbmQgdGhlIGxhc3QgY29tbWVudCBlZGdlIG9uIF90aGlzXyBsaW5lLgotCQkJJGNvbW1lbnRfZWRnZSA9IDA7Ci0JCQl3aGlsZSAoKCRyYXdsaW5lID1+IG1AKC9cKnxcKi8pQGcpKSB7Ci0JCQkJaWYgKCQxIGVxICcvKicpIHsKLQkJCQkJJGluX2NvbW1lbnQgPSAxOwotCQkJCX0gZWxzZSB7Ci0JCQkJCSRpbl9jb21tZW50ID0gMDsKLQkJCQl9Ci0JCQkJJGNvbW1lbnRfZWRnZSA9IDE7Ci0JCQl9Ci0KIAkJCSMgTWVhc3VyZSB0aGUgbGluZSBsZW5ndGggYW5kIGluZGVudC4KIAkJCSgkbGVuZ3RoLCAkaW5kZW50KSA9IGxpbmVfc3RhdHMoJHJhd2xpbmUpOwogCkBAIC05NzcsMjMgKzEwMTIsMzYgQEAKIAkJCSgkcHJldmluZGVudCwgJHN0YXNoaW5kZW50KSA9ICgkc3Rhc2hpbmRlbnQsICRpbmRlbnQpOwogCQkJKCRwcmV2cmF3bGluZSwgJHN0YXNocmF3bGluZSkgPSAoJHN0YXNocmF3bGluZSwgJHJhd2xpbmUpOwogCi0JCQkjd2FybiAiaWM8JGluX2NvbW1lbnQ+IGNlPCRjb21tZW50X2VkZ2U+IGxpbmU8JGxpbmU+XG4iOworCQkJI3dhcm4gImxpbmU8JGxpbmU+XG4iOwogCiAJCX0gZWxzaWYgKCRyZWFsY250ID09IDEpIHsKIAkJCSRyZWFsY250LS07CiAJCX0KIAogI21ha2UgdXAgdGhlIGhhbmRsZSBmb3IgYW55IGVycm9yIHdlIHJlcG9ydCBvbiB0aGlzIGxpbmUKKwkJJHByZWZpeCA9ICIkZmlsZW5hbWU6JHJlYWxsaW5lOiAiIGlmICgkZW1hY3MgJiYgJGZpbGUpOworCQkkcHJlZml4ID0gIiRmaWxlbmFtZTokbGluZW5yOiAiIGlmICgkZW1hY3MgJiYgISRmaWxlKTsKKwogCQkkaGVyZSA9ICIjJGxpbmVucjogIiBpZiAoISRmaWxlKTsKIAkJJGhlcmUgPSAiIyRyZWFsbGluZTogIiBpZiAoJGZpbGUpOworCisJCSMgZXh0cmFjdCB0aGUgZmlsZW5hbWUgYXMgaXQgcGFzc2VzCisJCWlmICgkbGluZT1+L15cK1wrXCtccysoXFMrKS8pIHsKKwkJCSRyZWFsZmlsZSA9ICQxOworCQkJJHJlYWxmaWxlID1+IHNAXlteL10qL0BAOworCisJCQlpZiAoJHJlYWxmaWxlID1+IG1AaW5jbHVkZS9hc20vQCkgeworCQkJCUVSUk9SKCJkbyBub3QgbW9kaWZ5IGZpbGVzIGluIGluY2x1ZGUvYXNtLCBjaGFuZ2UgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIGZpbGVzIGluIGluY2x1ZGUvYXNtLTxhcmNoaXRlY3R1cmU+XG4iIC4gIiRoZXJlJHJhd2xpbmVcbiIpOworCQkJfQorCQkJbmV4dDsKKwkJfQorCiAJCSRoZXJlIC49ICJGSUxFOiAkcmVhbGZpbGU6JHJlYWxsaW5lOiIgaWYgKCRyZWFsY250ICE9IDApOwogCiAJCW15ICRoZXJlbGluZSA9ICIkaGVyZVxuJHJhd2xpbmVcbiI7CiAJCW15ICRoZXJlY3VyciA9ICIkaGVyZVxuJHJhd2xpbmVcbiI7CiAJCW15ICRoZXJlcHJldiA9ICIkaGVyZVxuJHByZXZyYXdsaW5lXG4kcmF3bGluZVxuIjsKIAotCQkkcHJlZml4ID0gIiRmaWxlbmFtZTokcmVhbGxpbmU6ICIgaWYgKCRlbWFjcyAmJiAkZmlsZSk7Ci0JCSRwcmVmaXggPSAiJGZpbGVuYW1lOiRsaW5lbnI6ICIgaWYgKCRlbWFjcyAmJiAhJGZpbGUpOwogCQkkY250X2xpbmVzKysgaWYgKCRyZWFsY250ICE9IDApOwogCiAjY2hlY2sgdGhlIHBhdGNoIGZvciBhIHNpZ25vZmY6CkBAIC0xMDA1LDcgKzEwNTMsNyBAQAogCQkJCQkkaGVyZWN1cnIpOwogCQkJfQogCQkJaWYgKCRsaW5lID1+IC9eXHMqc2lnbmVkLW9mZi1ieTpcUy9pKSB7Ci0JCQkJV0FSTigibmVlZCBzcGFjZSBhZnRlciBTaWduZWQtb2ZmLWJ5OlxuIiAuCisJCQkJV0FSTigic3BhY2UgcmVxdWlyZWQgYWZ0ZXIgU2lnbmVkLW9mZi1ieTpcbiIgLgogCQkJCQkkaGVyZWN1cnIpOwogCQkJfQogCQl9CkBAIC0xMDcyLDExICsxMTIwLDYgQEAKIAkJCVdBUk4oIkNWUyBzdHlsZSBrZXl3b3JkIG1hcmtlcnMsIHRoZXNlIHdpbGwgX25vdF8gYmUgdXBkYXRlZFxuIi4gJGhlcmVjdXJyKTsKIAkJfQogCi0jIFRoZSByZXN0IG9mIG91ciBjaGVja3MgcmVmZXIgc3BlY2lmaWNhbGx5IHRvIEMgc3R5bGUKLSMgb25seSBhcHBseSB0aG9zZSBfb3V0c2lkZV8gY29tbWVudHMuICBPbmx5IHNraXAKLSMgbGluZXMgaW4gdGhlIG1pZGRsZSBvZiBjb21tZW50cy4KLQkJbmV4dCBpZiAoISRjb21tZW50X2VkZ2UgJiYgJGluX2NvbW1lbnQpOwotCiAjIENoZWNrIGZvciBwb3RlbnRpYWwgJ2JhcmUnIHR5cGVzCiAJCWlmICgkcmVhbGNudCkgewogCQkJbXkgKCRzLCAkYykgPSBjdHhfc3RhdGVtZW50X2Jsb2NrKCRsaW5lbnIsICRyZWFsY250LCAwKTsKQEAgLTExMTAsNyArMTE1Myw3IEBACiAJCQkJbXkgKCRuYW1lX2xlbikgPSBsZW5ndGgoJDEpOwogCiAJCQkJbXkgJGN0eCA9ICRzOwotCQkJCXN1YnN0cigkY3R4LCAwLCAkbmFtZV9sZW4gKyAxKSA9ICcnOworCQkJCXN1YnN0cigkY3R4LCAwLCAkbmFtZV9sZW4gKyAxLCAnJyk7CiAJCQkJJGN0eCA9fiBzL1wpW15cKV0qJC8vOwogCiAJCQkJZm9yIG15ICRhcmcgKHNwbGl0KC9ccyosXHMqLywgJGN0eCkpIHsKQEAgLTExNTEsMjcgKzExOTQsMzMgQEAKIAogIyBpZi93aGlsZS9ldGMgYnJhY2UgZG8gbm90IGdvIG9uIG5leHQgbGluZSwgdW5sZXNzIGRlZmluaW5nIGEgZG8gd2hpbGUgbG9vcCwKICMgb3IgaWYgdGhhdCBicmFjZSBvbiB0aGUgbmV4dCBsaW5lIGlzIGZvciBzb21ldGhpbmcgZWxzZQotCQlpZiAoJGxpbmUgPX4gL1xiKD86KGlmfHdoaWxlfGZvcnxzd2l0Y2gpXHMqXCh8ZG9cYnxlbHNlXGIpLyAmJiAkbGluZSAhfiAvXi4jLykgeworCQlpZiAoJGxpbmUgPX4gLyguKilcYigoPzppZnx3aGlsZXxmb3J8c3dpdGNoKVxzKlwofGRvXGJ8ZWxzZVxiKS8gJiYgJGxpbmUgIX4gL14uIy8pIHsKKwkJCW15ICRwcmVfY3R4ID0gIiQxJDIiOworCiAJCQlteSAoJGxldmVsLCBAY3R4KSA9IGN0eF9zdGF0ZW1lbnRfbGV2ZWwoJGxpbmVuciwgJHJlYWxjbnQsIDApOwogCQkJbXkgJGN0eF9sbiA9ICRsaW5lbnIgKyAkI2N0eCArIDE7CiAJCQlteSAkY3R4X2NudCA9ICRyZWFsY250IC0gJCNjdHggLSAxOwogCQkJbXkgJGN0eCA9IGpvaW4oIlxuIiwgQGN0eCk7CiAKLQkJCSMgU2tpcCBvdmVyIGFueSByZW1vdmVkIGxpbmVzIGluIHRoZSBjb250ZXh0IGZvbGxvd2luZyBzdGF0ZW1lbnQuCi0JCQl3aGlsZSAoJGN0eF9jbnQgPiAwICYmICRsaW5lc1skY3R4X2xuIC0gMV0gPX4gL14tLykgewotCQkJCSRjdHhfbG4rKzsKLQkJCQkkY3R4X2NudC0tOwotCQkJfQotCQkJIyN3YXJuICJsaW5lPCRsaW5lPlxuY3R4PCRjdHg+XG5uZXh0PCRsaW5lc1skY3R4X2xuIC0gMV0+IjsKKwkJCSMjd2FybiAicmVhbGNudDwkcmVhbGNudD4gY3R4X2NudDwkY3R4X2NudD5cbiI7CiAKLQkJCWlmICgkY3R4ICF+IC97XHMqLyAmJiAkY3R4X2NudCA+IDAgJiYgJGxpbmVzWyRjdHhfbG4gLSAxXSA9fiAvXlwrXHMqey8pIHsKLQkJCQlFUlJPUigiVGhhdCBvcGVuIGJyYWNlIHsgc2hvdWxkIGJlIG9uIHRoZSBwcmV2aW91cyBsaW5lXG4iIC4KKwkJCSMgU2tpcCBvdmVyIGFueSByZW1vdmVkIGxpbmVzIGluIHRoZSBjb250ZXh0IGZvbGxvd2luZyBzdGF0ZW1lbnQuCisJCQl3aGlsZSAoZGVmaW5lZCgkbGluZXNbJGN0eF9sbiAtIDFdKSAmJiAkbGluZXNbJGN0eF9sbiAtIDFdID1+IC9eLS8pIHsKKwkJCQkkY3R4X2xuKys7CisJCQl9CisJCQkjI3dhcm4gInByZTwkcHJlX2N0eD5cbmxpbmU8JGxpbmU+XG5jdHg8JGN0eD5cbm5leHQ8JGxpbmVzWyRjdHhfbG4gLSAxXT5cbiI7CisKKwkJCWlmICgkY3R4ICF+IC97XHMqLyAmJiBkZWZpbmVkKCRsaW5lc1skY3R4X2xuIC0xXSkgJiYgJGxpbmVzWyRjdHhfbG4gLSAxXSA9fiAvXlwrXHMqey8pIHsKKwkJCQlFUlJPUigidGhhdCBvcGVuIGJyYWNlIHsgc2hvdWxkIGJlIG9uIHRoZSBwcmV2aW91cyBsaW5lXG4iIC4KIAkJCQkJIiRoZXJlXG4kY3R4XG4kbGluZXNbJGN0eF9sbiAtIDFdIik7CiAJCQl9Ci0JCQlpZiAoJGxldmVsID09IDAgJiYgJGN0eCA9fiAvXClccypcO1xzKiQvICYmIGRlZmluZWQgJGxpbmVzWyRjdHhfbG4gLSAxXSkgeworCQkJaWYgKCRsZXZlbCA9PSAwICYmICRwcmVfY3R4ICF+IC99XHMqd2hpbGVccypcKCQvICYmCisJCQkgICAgJGN0eCA9fiAvXClccypcO1xzKiQvICYmCisJCQkgICAgZGVmaW5lZCAkbGluZXNbJGN0eF9sbiAtIDFdKQorCQkJewogCQkJCW15ICgkbmxlbmd0aCwgJG5pbmRlbnQpID0gbGluZV9zdGF0cygkbGluZXNbJGN0eF9sbiAtIDFdKTsKIAkJCQlpZiAoJG5pbmRlbnQgPiAkaW5kZW50KSB7Ci0JCQkJCVdBUk4oIlRyYWlsaW5nIHNlbWljb2xvbiBpbmRpY2F0ZXMgbm8gc3RhdGVtZW50cywgaW5kZW50IGltcGxpZXMgb3RoZXJ3aXNlXG4iIC4KKwkJCQkJV0FSTigidHJhaWxpbmcgc2VtaWNvbG9uIGluZGljYXRlcyBubyBzdGF0ZW1lbnRzLCBpbmRlbnQgaW1wbGllcyBvdGhlcndpc2VcbiIgLgogCQkJCQkJIiRoZXJlXG4kY3R4XG4kbGluZXNbJGN0eF9sbiAtIDFdIik7CiAJCQkJfQogCQkJfQpAQCAtMTIwMCw3ICsxMjQ5LDcgQEAKICMgY2hlY2sgZm9yIGluaXRpYWxpc2F0aW9uIHRvIGFnZ3JlZ2F0ZXMgb3BlbiBicmFjZSBvbiB0aGUgbmV4dCBsaW5lCiAJCWlmICgkcHJldmxpbmUgPX4gLyREZWNsYXJlXHMqJElkZW50XHMqPVxzKiQvICYmCiAJCSAgICAkbGluZSA9fiAvXi5ccyp7LykgewotCQkJRVJST1IoIlRoYXQgb3BlbiBicmFjZSB7IHNob3VsZCBiZSBvbiB0aGUgcHJldmlvdXMgbGluZVxuIiAuICRoZXJlcHJldik7CisJCQlFUlJPUigidGhhdCBvcGVuIGJyYWNlIHsgc2hvdWxkIGJlIG9uIHRoZSBwcmV2aW91cyBsaW5lXG4iIC4gJGhlcmVwcmV2KTsKIAkJfQogCiAjCkBAIC0xMzI1LDIyICsxMzc0LDMxIEBACiAjIGNoZWNrIGZvciBzcGFjZXMgYmV0d2VlbiBmdW5jdGlvbnMgYW5kIHRoZWlyIHBhcmVudGhlc2VzLgogCQl3aGlsZSAoJGxpbmUgPX4gLygkSWRlbnQpXHMrXCgvZykgewogCQkJbXkgJG5hbWUgPSAkMTsKLQkJCW15ICRjdHggPSBzdWJzdHIoJGxpbmUsIDAsICQtWzFdKTsKKwkJCW15ICRjdHhfYmVmb3JlID0gc3Vic3RyKCRsaW5lLCAwLCAkLVsxXSk7CisJCQlteSAkY3R4ID0gIiRjdHhfYmVmb3JlJG5hbWUiOwogCiAJCQkjIElnbm9yZSB0aG9zZSBkaXJlY3RpdmVzIHdoZXJlIHNwYWNlcyBfYXJlXyBwZXJtaXR0ZWQuCi0JCQlpZiAoJG5hbWUgPX4gL14oPzppZnxmb3J8d2hpbGV8c3dpdGNofHJldHVybnx2b2xhdGlsZXxfX3ZvbGF0aWxlX198X19hdHRyaWJ1dGVfX3xmb3JtYXR8X19leHRlbnNpb25fX3xDb3B5cmlnaHR8Y2FzZXxfX2FzbV9fKSQvKSB7CisJCQlpZiAoJG5hbWUgPX4gL14oPzoKKwkJCQlpZnxmb3J8d2hpbGV8c3dpdGNofHJldHVybnxjYXNlfAorCQkJCXZvbGF0aWxlfF9fdm9sYXRpbGVfX3wKKwkJCQlfX2F0dHJpYnV0ZV9ffGZvcm1hdHxfX2V4dGVuc2lvbl9ffAorCQkJCWFzbXxfX2FzbV9fKSQveCkKKwkJCXsKIAogCQkJIyBjcHAgI2RlZmluZSBzdGF0ZW1lbnRzIGhhdmUgbm9uLW9wdGlvbmFsIHNwYWNlcywgaWUKIAkJCSMgaWYgdGhlcmUgaXMgYSBzcGFjZSBiZXR3ZWVuIHRoZSBuYW1lIGFuZCB0aGUgb3BlbgogCQkJIyBwYXJlbnRoZXNpcyBpdCBpcyBzaW1wbHkgbm90IGEgcGFyYW1ldGVyIGdyb3VwLgotCQkJfSBlbHNpZiAoJGN0eCA9fiAvXi5cI1xzKmRlZmluZVxzKiQvKSB7CisJCQl9IGVsc2lmICgkY3R4X2JlZm9yZSA9fiAvXi5cI1xzKmRlZmluZVxzKiQvKSB7CisKKwkJCSMgY3BwICNlbGlmIHN0YXRlbWVudCBjb25kaXRpb24gbWF5IHN0YXJ0IHdpdGggYSAoCisJCQl9IGVsc2lmICgkY3R4ID1+IC9eLlwjXHMqZWxpZlxzKiQvKSB7CiAKIAkJCSMgSWYgdGhpcyB3aG9sZSB0aGluZ3MgZW5kcyB3aXRoIGEgdHlwZSBpdHMgbW9zdAogCQkJIyBsaWtlbHkgYSB0eXBlZGVmIGZvciBhIGZ1bmN0aW9uLgotCQkJfSBlbHNpZiAoIiRjdHgkbmFtZSIgPX4gLyRUeXBlJC8pIHsKKwkJCX0gZWxzaWYgKCRjdHggPX4gLyRUeXBlJC8pIHsKIAogCQkJfSBlbHNlIHsKLQkJCQlXQVJOKCJubyBzcGFjZSBiZXR3ZWVuIGZ1bmN0aW9uIG5hbWUgYW5kIG9wZW4gcGFyZW50aGVzaXMgJygnXG4iIC4gJGhlcmVjdXJyKTsKKwkJCQlXQVJOKCJzcGFjZSBwcm9oaWJpdGVkIGJldHdlZW4gZnVuY3Rpb24gbmFtZSBhbmQgb3BlbiBwYXJlbnRoZXNpcyAnKCdcbiIgLiAkaGVyZWN1cnIpOwogCQkJfQogCQl9CiAjIENoZWNrIG9wZXJhdG9yIHNwYWNpbmcuCkBAIC0xMzU5LDEzICsxNDE3LDIxIEBACiAJCQlmb3IgKG15ICRuID0gMDsgJG4gPCAkI2VsZW1lbnRzOyAkbiArPSAyKSB7CiAJCQkJJG9mZiArPSBsZW5ndGgoJGVsZW1lbnRzWyRuXSk7CiAKKwkJCQkjIFBpY2sgdXAgdGhlIHByZWNlZWRpbmcgYW5kIHN1Y2NlZWRpbmcgY2hhcmFjdGVycy4KKwkJCQlteSAkY2EgPSBzdWJzdHIoJG9wbGluZSwgMCwgJG9mZik7CisJCQkJbXkgJGNjID0gJyc7CisJCQkJaWYgKGxlbmd0aCgkb3BsaW5lKSA+PSAoJG9mZiArIGxlbmd0aCgkZWxlbWVudHNbJG4gKyAxXSkpKSB7CisJCQkJCSRjYyA9IHN1YnN0cigkb3BsaW5lLCAkb2ZmICsgbGVuZ3RoKCRlbGVtZW50c1skbiArIDFdKSk7CisJCQkJfQorCQkJCW15ICRjYiA9ICIkY2EkOyRjYyI7CisKIAkJCQlteSAkYSA9ICcnOwogCQkJCSRhID0gJ1YnIGlmICgkZWxlbWVudHNbJG5dIG5lICcnKTsKIAkJCQkkYSA9ICdXJyBpZiAoJGVsZW1lbnRzWyRuXSA9fiAvXHMkLyk7CiAJCQkJJGEgPSAnQycgaWYgKCRlbGVtZW50c1skbl0gPX4gLyQ7JC8pOwogCQkJCSRhID0gJ0InIGlmICgkZWxlbWVudHNbJG5dID1+IC8oXFt8XCgpJC8pOwogCQkJCSRhID0gJ08nIGlmICgkZWxlbWVudHNbJG5dIGVxICcnKTsKLQkJCQkkYSA9ICdFJyBpZiAoJGVsZW1lbnRzWyRuXSBlcSAnJyAmJiAkbiA9PSAwKTsKKwkJCQkkYSA9ICdFJyBpZiAoJGNhID1+IC9eXHMqJC8pOwogCiAJCQkJbXkgJG9wID0gJGVsZW1lbnRzWyRuICsgMV07CiAKQEAgLTEzODEsMTQgKzE0NDcsNiBAQAogCQkJCQkkYyA9ICdFJzsKIAkJCQl9CiAKLQkJCQkjIFBpY2sgdXAgdGhlIHByZWNlZWRpbmcgYW5kIHN1Y2NlZWRpbmcgY2hhcmFjdGVycy4KLQkJCQlteSAkY2EgPSBzdWJzdHIoJG9wbGluZSwgMCwgJG9mZik7Ci0JCQkJbXkgJGNjID0gJyc7Ci0JCQkJaWYgKGxlbmd0aCgkb3BsaW5lKSA+PSAoJG9mZiArIGxlbmd0aCgkZWxlbWVudHNbJG4gKyAxXSkpKSB7Ci0JCQkJCSRjYyA9IHN1YnN0cigkb3BsaW5lLCAkb2ZmICsgbGVuZ3RoKCRlbGVtZW50c1skbiArIDFdKSk7Ci0JCQkJfQotCQkJCW15ICRjYiA9ICIkY2EkOyRjYyI7Ci0KIAkJCQlteSAkY3R4ID0gIiR7YX14JHtjfSI7CiAKIAkJCQlteSAkYXQgPSAiKGN0eDokY3R4KSI7CkBAIC0xNDI0LDcgKzE0ODIsNyBAQAogCQkJCX0gZWxzaWYgKCRvcCBlcSAnOycpIHsKIAkJCQkJaWYgKCRjdHggIX4gLy54W1dFQkNdLyAmJgogCQkJCQkgICAgJGNjICF+IC9eXFwvICYmICRjYyAhfiAvXjsvKSB7Ci0JCQkJCQlFUlJPUigibmVlZCBzcGFjZSBhZnRlciB0aGF0ICckb3AnICRhdFxuIiAuICRoZXJlcHRyKTsKKwkJCQkJCUVSUk9SKCJzcGFjZSByZXF1aXJlZCBhZnRlciB0aGF0ICckb3AnICRhdFxuIiAuICRoZXJlcHRyKTsKIAkJCQkJfQogCiAJCQkJIyAvLyBpcyBhIGNvbW1lbnQKQEAgLTE0MzMsMTMgKzE0OTEsMTMgQEAKIAkJCQkjIC0+IHNob3VsZCBoYXZlIG5vIHNwYWNlcwogCQkJCX0gZWxzaWYgKCRvcCBlcSAnLT4nKSB7CiAJCQkJCWlmICgkY3R4ID1+IC9XeC58LnhXLykgewotCQkJCQkJRVJST1IoIm5vIHNwYWNlcyBhcm91bmQgdGhhdCAnJG9wJyAkYXRcbiIgLiAkaGVyZXB0cik7CisJCQkJCQlFUlJPUigic3BhY2VzIHByb2hpYml0ZWQgYXJvdW5kIHRoYXQgJyRvcCcgJGF0XG4iIC4gJGhlcmVwdHIpOwogCQkJCQl9CiAKIAkJCQkjICwgbXVzdCBoYXZlIGEgc3BhY2Ugb24gdGhlIHJpZ2h0LgogCQkJCX0gZWxzaWYgKCRvcCBlcSAnLCcpIHsKIAkJCQkJaWYgKCRjdHggIX4gLy54W1dFQ10vICYmICRjYyAhfiAvXn0vKSB7Ci0JCQkJCQlFUlJPUigibmVlZCBzcGFjZSBhZnRlciB0aGF0ICckb3AnICRhdFxuIiAuICRoZXJlcHRyKTsKKwkJCQkJCUVSUk9SKCJzcGFjZSByZXF1aXJlZCBhZnRlciB0aGF0ICckb3AnICRhdFxuIiAuICRoZXJlcHRyKTsKIAkJCQkJfQogCiAJCQkJIyAnKicgYXMgcGFydCBvZiBhIHR5cGUgZGVmaW5pdGlvbiAtLSByZXBvcnRlZCBhbHJlYWR5LgpAQCAtMTQ1MiwyMCArMTUxMCwyNSBAQAogCQkJCX0gZWxzaWYgKCRvcCBlcSAnIScgfHwgJG9wIGVxICd+JyB8fAogCQkJCSAgICAgICAgICgkaXNfdW5hcnkgJiYgKCRvcCBlcSAnKicgfHwgJG9wIGVxICctJyB8fCAkb3AgZXEgJyYnKSkpIHsKIAkJCQkJaWYgKCRjdHggIX4gL1tXRUJDXXguLyAmJiAkY2EgIX4gLyg/OlwpfCF8fnxcKnwtfFwmfFx8fFwrXCt8XC1cLXxceykkLykgewotCQkJCQkJRVJST1IoIm5lZWQgc3BhY2UgYmVmb3JlIHRoYXQgJyRvcCcgJGF0XG4iIC4gJGhlcmVwdHIpOworCQkJCQkJRVJST1IoInNwYWNlIHJlcXVpcmVkIGJlZm9yZSB0aGF0ICckb3AnICRhdFxuIiAuICRoZXJlcHRyKTsKIAkJCQkJfQogCQkJCQlpZiAoJGN0eCA9fiAvLnhXLykgewotCQkJCQkJRVJST1IoIm5vIHNwYWNlIGFmdGVyIHRoYXQgJyRvcCcgJGF0XG4iIC4gJGhlcmVwdHIpOworCQkJCQkJRVJST1IoInNwYWNlIHByb2hpYml0ZWQgYWZ0ZXIgdGhhdCAnJG9wJyAkYXRcbiIgLiAkaGVyZXB0cik7CiAJCQkJCX0KIAogCQkJCSMgdW5hcnkgKysgYW5kIHVuYXJ5IC0tIGFyZSBhbGxvd2VkIG5vIHNwYWNlIG9uIG9uZSBzaWRlLgogCQkJCX0gZWxzaWYgKCRvcCBlcSAnKysnIG9yICRvcCBlcSAnLS0nKSB7Ci0JCQkJCWlmICgkY3R4ICF+IC9bV09CQ114W15XXS8gJiYgJGN0eCAhfiAvW15XXXhbV09CRUNdLykgewotCQkJCQkJRVJST1IoIm5lZWQgc3BhY2Ugb25lIHNpZGUgb2YgdGhhdCAnJG9wJyAkYXRcbiIgLiAkaGVyZXB0cik7CisJCQkJCWlmICgkY3R4ICF+IC9bV0VPQkNdeFteV10vICYmICRjdHggIX4gL1teV114W1dPQkVDXS8pIHsKKwkJCQkJCUVSUk9SKCJzcGFjZSByZXF1aXJlZCBvbmUgc2lkZSBvZiB0aGF0ICckb3AnICRhdFxuIiAuICRoZXJlcHRyKTsKIAkJCQkJfQotCQkJCQlpZiAoJGN0eCA9fiAvV3hCLyB8fCAoJGN0eCA9fiAvV3guLyAmJiAkY2MgPX4gL147LykpIHsKLQkJCQkJCUVSUk9SKCJubyBzcGFjZSBiZWZvcmUgdGhhdCAnJG9wJyAkYXRcbiIgLiAkaGVyZXB0cik7CisJCQkJCWlmICgkY3R4ID1+IC9XeFtCRV0vIHx8CisJCQkJCSAgICAoJGN0eCA9fiAvV3guLyAmJiAkY2MgPX4gL147LykpIHsKKwkJCQkJCUVSUk9SKCJzcGFjZSBwcm9oaWJpdGVkIGJlZm9yZSB0aGF0ICckb3AnICRhdFxuIiAuICRoZXJlcHRyKTsKIAkJCQkJfQorCQkJCQlpZiAoJGN0eCA9fiAvRXhXLykgeworCQkJCQkJRVJST1IoInNwYWNlIHByb2hpYml0ZWQgYWZ0ZXIgdGhhdCAnJG9wJyAkYXRcbiIgLiAkaGVyZXB0cik7CisJCQkJCX0KKwogCiAJCQkJIyA8PCBhbmQgPj4gbWF5IGVpdGhlciBoYXZlIG9yIG5vdCBoYXZlIHNwYWNlcyBib3RoIHNpZGVzCiAJCQkJfSBlbHNpZiAoJG9wIGVxICc8PCcgb3IgJG9wIGVxICc+Picgb3IKQEAgLTE0NzQsNyArMTUzNyw3IEBACiAJCQkJCSAkb3AgZXEgJyonIG9yICRvcCBlcSAnLycgb3IKIAkJCQkJICRvcCBlcSAnJScpCiAJCQkJewotCQkJCQlpZiAoJGN0eCAhfiAvVnhWfFd4V3xWeEV8V3hFfFZ4T3xDeC58LnhDLykgeworCQkJCQlpZiAoJGN0eCA9fiAvV3hbXldDRV18W15XQ0VdeFcvKSB7CiAJCQkJCQlFUlJPUigibmVlZCBjb25zaXN0ZW50IHNwYWNpbmcgYXJvdW5kICckb3AnICRhdFxuIiAuCiAJCQkJCQkJJGhlcmVwdHIpOwogCQkJCQl9CkBAIC0xNDg0LDcgKzE1NDcsNyBAQAogCQkJCQkjIElnbm9yZSBlbWFpbCBhZGRyZXNzZXMgPGZvb0BiYXI+CiAJCQkJCWlmICghKCRvcCBlcSAnPCcgJiYgJGNiID1+IC8kO1xTK1xAXFMrPi8pICYmCiAJCQkJCSAgICAhKCRvcCBlcSAnPicgJiYgJGNiID1+IC88XFMrXEBcUyskOy8pKSB7Ci0JCQkJCQlFUlJPUigibmVlZCBzcGFjZXMgYXJvdW5kIHRoYXQgJyRvcCcgJGF0XG4iIC4gJGhlcmVwdHIpOworCQkJCQkJRVJST1IoInNwYWNlcyByZXF1aXJlZCBhcm91bmQgdGhhdCAnJG9wJyAkYXRcbiIgLiAkaGVyZXB0cik7CiAJCQkJCX0KIAkJCQl9CiAJCQkJJG9mZiArPSBsZW5ndGgoJGVsZW1lbnRzWyRuICsgMV0pOwpAQCAtMTUxNCwzMSArMTU3NywzMSBAQAogI25lZWQgc3BhY2UgYmVmb3JlIGJyYWNlIGZvbGxvd2luZyBpZiwgd2hpbGUsIGV0YwogCQlpZiAoKCRsaW5lID1+IC9cKC4qXCl7LyAmJiAkbGluZSAhfiAvXCgkVHlwZVwpey8pIHx8CiAJCSAgICAkbGluZSA9fiAvZG97LykgewotCQkJRVJST1IoIm5lZWQgYSBzcGFjZSBiZWZvcmUgdGhlIG9wZW4gYnJhY2UgJ3snXG4iIC4gJGhlcmVjdXJyKTsKKwkJCUVSUk9SKCJzcGFjZSByZXF1aXJlZCBiZWZvcmUgdGhlIG9wZW4gYnJhY2UgJ3snXG4iIC4gJGhlcmVjdXJyKTsKIAkJfQogCiAjIGNsb3NpbmcgYnJhY2Ugc2hvdWxkIGhhdmUgYSBzcGFjZSBmb2xsb3dpbmcgaXQgd2hlbiBpdCBoYXMgYW55dGhpbmcKICMgb24gdGhlIGxpbmUKIAkJaWYgKCRsaW5lID1+IC99KD8hKD86LHw7fFwpKSlcUy8pIHsKLQkJCUVSUk9SKCJuZWVkIGEgc3BhY2UgYWZ0ZXIgdGhhdCBjbG9zZSBicmFjZSAnfSdcbiIgLiAkaGVyZWN1cnIpOworCQkJRVJST1IoInNwYWNlIHJlcXVpcmVkIGFmdGVyIHRoYXQgY2xvc2UgYnJhY2UgJ30nXG4iIC4gJGhlcmVjdXJyKTsKIAkJfQogCiAjIGNoZWNrIHNwYWNpbmcgb24gc3F1YXJlIGJyYWNrZXRzCiAJCWlmICgkbGluZSA9fiAvXFtccy8gJiYgJGxpbmUgIX4gL1xbXHMqJC8pIHsKLQkJCUVSUk9SKCJubyBzcGFjZSBhZnRlciB0aGF0IG9wZW4gc3F1YXJlIGJyYWNrZXQgJ1snXG4iIC4gJGhlcmVjdXJyKTsKKwkJCUVSUk9SKCJzcGFjZSBwcm9oaWJpdGVkIGFmdGVyIHRoYXQgb3BlbiBzcXVhcmUgYnJhY2tldCAnWydcbiIgLiAkaGVyZWN1cnIpOwogCQl9CiAJCWlmICgkbGluZSA9fiAvXHNcXS8pIHsKLQkJCUVSUk9SKCJubyBzcGFjZSBiZWZvcmUgdGhhdCBjbG9zZSBzcXVhcmUgYnJhY2tldCAnXSdcbiIgLiAkaGVyZWN1cnIpOworCQkJRVJST1IoInNwYWNlIHByb2hpYml0ZWQgYmVmb3JlIHRoYXQgY2xvc2Ugc3F1YXJlIGJyYWNrZXQgJ10nXG4iIC4gJGhlcmVjdXJyKTsKIAkJfQogCiAjIGNoZWNrIHNwYWNpbmcgb24gcGFyZXRoZXNlcwogCQlpZiAoJGxpbmUgPX4gL1woXHMvICYmICRsaW5lICF+IC9cKFxzKig/OlxcKT8kLyAmJgogCQkgICAgJGxpbmUgIX4gL2ZvclxzKlwoXHMrOy8pIHsKLQkJCUVSUk9SKCJubyBzcGFjZSBhZnRlciB0aGF0IG9wZW4gcGFyZW50aGVzaXMgJygnXG4iIC4gJGhlcmVjdXJyKTsKKwkJCUVSUk9SKCJzcGFjZSBwcm9oaWJpdGVkIGFmdGVyIHRoYXQgb3BlbiBwYXJlbnRoZXNpcyAnKCdcbiIgLiAkaGVyZWN1cnIpOwogCQl9CiAJCWlmICgkbGluZSA9fiAvKFxzKylcKS8gJiYgJGxpbmUgIX4gL14uXHMqXCkvICYmCiAJCSAgICAkbGluZSAhfiAvZm9yXHMqXCguKjtccytcKS8pIHsKLQkJCUVSUk9SKCJubyBzcGFjZSBiZWZvcmUgdGhhdCBjbG9zZSBwYXJlbnRoZXNpcyAnKSdcbiIgLiAkaGVyZWN1cnIpOworCQkJRVJST1IoInNwYWNlIHByb2hpYml0ZWQgYmVmb3JlIHRoYXQgY2xvc2UgcGFyZW50aGVzaXMgJyknXG4iIC4gJGhlcmVjdXJyKTsKIAkJfQogCiAjZ290byBsYWJlbHMgYXJlbid0IGluZGVudGVkLCBhbGxvdyBhIHNpbmdsZSBzcGFjZSBob3dldmVyCkBAIC0xNTQ5LDcgKzE2MTIsNyBAQAogCiAjIE5lZWQgYSBzcGFjZSBiZWZvcmUgb3BlbiBwYXJlbnRoZXNpcyBhZnRlciBpZiwgd2hpbGUgZXRjCiAJCWlmICgkbGluZT1+L1xiKGlmfHdoaWxlfGZvcnxzd2l0Y2gpXCgvKSB7Ci0JCQlFUlJPUigibmVlZCBhIHNwYWNlIGJlZm9yZSB0aGUgb3BlbiBwYXJlbnRoZXNpcyAnKCdcbiIgLiAkaGVyZWN1cnIpOworCQkJRVJST1IoInNwYWNlIHJlcXVpcmVkIGJlZm9yZSB0aGUgb3BlbiBwYXJlbnRoZXNpcyAnKCdcbiIgLiAkaGVyZWN1cnIpOwogCQl9CiAKICMgQ2hlY2sgZm9yIGlsbGVnYWwgYXNzaWdubWVudCBpbiBpZiBjb25kaXRpb25hbC4KQEAgLTE1NjIsMTAgKzE2MjUsMTIgQEAKIAogCQkJIyBGaW5kIG91dCB3aGF0IGlzIG9uIHRoZSBlbmQgb2YgdGhlIGxpbmUgYWZ0ZXIgdGhlCiAJCQkjIGNvbmRpdGlvbmFsLgotCQkJc3Vic3RyKCRzLCAwLCBsZW5ndGgoJGMpKSA9ICcnOworCQkJc3Vic3RyKCRzLCAwLCBsZW5ndGgoJGMpLCAnJyk7CiAJCQkkcyA9fiBzL1xuLiovL2c7CiAJCQkkcyA9fiBzLyQ7Ly9nOyAJIyBSZW1vdmUgYW55IGNvbW1lbnRzCi0JCQlpZiAobGVuZ3RoKCRjKSAmJiAkcyAhfiAvXlxzKih7fDt8KVxzKlxcKlxzKiQvKSB7CisJCQlpZiAobGVuZ3RoKCRjKSAmJiAkcyAhfiAvXlxzKih7fDt8KVxzKlxcKlxzKiQvICYmCisJCQkgICAgJGMgIX4gL14uXCNccyppZi8pCisJCQl7CiAJCQkJRVJST1IoInRyYWlsaW5nIHN0YXRlbWVudHMgc2hvdWxkIGJlIG9uIG5leHQgbGluZVxuIiAuICRoZXJlY3Vycik7CiAJCQl9CiAJCX0KQEAgLTE2MDcsNyArMTY3Miw3IEBACiAKIAkJCSMgRmluZCBvdXQgd2hhdCBpcyBvbiB0aGUgZW5kIG9mIHRoZSBsaW5lIGFmdGVyIHRoZQogCQkJIyBjb25kaXRpb25hbC4KLQkJCXN1YnN0cigkcywgMCwgbGVuZ3RoKCRjKSkgPSAnJzsKKwkJCXN1YnN0cigkcywgMCwgbGVuZ3RoKCRjKSwgJycpOwogCQkJJHMgPX4gcy9cbi4qLy9nOwogCiAJCQlpZiAoJHMgPX4gL15ccyo7LykgewpAQCAtMTYzMSw3ICsxNjk2LDcgQEAKIAkJaWYgKCR0cmVlICYmICRyYXdsaW5lID1+IG17Xi5cI1xzKmluY2x1ZGVccypcPGFzbVwvKC4qKVwuaFw+fSkgewogCQkJbXkgJGNoZWNrZmlsZSA9ICIkcm9vdC9pbmNsdWRlL2xpbnV4LyQxLmgiOwogCQkJaWYgKC1mICRjaGVja2ZpbGUgJiYgJDEgbmUgJ2lycS5oJykgewotCQkJCUNISygiVXNlICNpbmNsdWRlIDxsaW51eC8kMS5oPiBpbnN0ZWFkIG9mIDxhc20vJDEuaD5cbiIgLgorCQkJCVdBUk4oIlVzZSAjaW5jbHVkZSA8bGludXgvJDEuaD4gaW5zdGVhZCBvZiA8YXNtLyQxLmg+XG4iIC4KIAkJCQkJJGhlcmVjdXJyKTsKIAkJCX0KIAkJfQpAQCAtMTY5MiwxNSArMTc1NywyNCBAQAogCQkJaWYgKCQjY2h1bmtzID4gMCAmJiAkbGV2ZWwgPT0gMCkgewogCQkJCW15ICRhbGxvd2VkID0gMDsKIAkJCQlteSAkc2VlbiA9IDA7Ci0JCQkJbXkgJGhlcmVjdHggPSAkaGVyZSAuICJcbiI7OworCQkJCW15ICRoZXJlY3R4ID0gJGhlcmUgLiAiXG4iOwogCQkJCW15ICRsbiA9ICRsaW5lbnIgLSAxOwogCQkJCWZvciBteSAkY2h1bmsgKEBjaHVua3MpIHsKIAkJCQkJbXkgKCRjb25kLCAkYmxvY2spID0gQHskY2h1bmt9OwogCi0JCQkJCSRoZXJlY3R4IC49ICIkcmF3bGluZXNbJGxuXVxuWy4uLl1cbiI7CisJCQkJCSMgSWYgdGhlIGNvbmRpdGlvbiBjYXJyaWVzIGxlYWRpbmcgbmV3bGluZXMsIHRoZW4gY291bnQgdGhvc2UgYXMgb2Zmc2V0cy4KKwkJCQkJbXkgKCR3aGl0ZXNwYWNlKSA9ICgkY29uZCA9fiAvXigoPzpccypcblsrLV0pKlxzKikvcyk7CisJCQkJCW15ICRvZmZzZXQgPSBzdGF0ZW1lbnRfcmF3bGluZXMoJHdoaXRlc3BhY2UpIC0gMTsKKworCQkJCQkjcHJpbnQgIkNPTkQ8JGNvbmQ+IHdoaXRlc3BhY2U8JHdoaXRlc3BhY2U+IG9mZnNldDwkb2Zmc2V0PlxuIjsKKworCQkJCQkjIFdlIGhhdmUgbG9va2VkIGF0IGFuZCBhbGxvd2VkIHRoaXMgc3BlY2lmaWMgbGluZS4KKwkJCQkJJHN1cHByZXNzX2lmYnJhY2VzeyRsbiArICRvZmZzZXR9ID0gMTsKKworCQkJCQkkaGVyZWN0eCAuPSAiJHJhd2xpbmVzWyRsbiArICRvZmZzZXRdXG5bLi4uXVxuIjsKIAkJCQkJJGxuICs9IHN0YXRlbWVudF9yYXdsaW5lcygkYmxvY2spIC0gMTsKIAotCQkJCQlzdWJzdHIoJGJsb2NrLCAwLCBsZW5ndGgoJGNvbmQpKSA9ICcnOworCQkJCQlzdWJzdHIoJGJsb2NrLCAwLCBsZW5ndGgoJGNvbmQpLCAnJyk7CiAKIAkJCQkJJHNlZW4rKyBpZiAoJGJsb2NrID1+IC9eXHMqey8pOwogCkBAIC0xNzIxLDE2ICsxNzk1LDEwIEBACiAJCQkJaWYgKCRzZWVuICYmICEkYWxsb3dlZCkgewogCQkJCQlXQVJOKCJicmFjZXMge30gYXJlIG5vdCBuZWNlc3NhcnkgZm9yIGFueSBhcm0gb2YgdGhpcyBzdGF0ZW1lbnRcbiIgLiAkaGVyZWN0eCk7CiAJCQkJfQotCQkJCSMgRWl0aGVyIHdheSB3ZSBoYXZlIGxvb2tlZCBvdmVyIHRoaXMgd2hvbGUKLQkJCQkjIHN0YXRlbWVudCBhbmQgc2FpZCB3aGF0IG5lZWRzIHRvIGJlIHNhaWQuCi0JCQkJJHN1cHByZXNzX2lmYnJhY2VzID0gJGVuZGxuOwogCQkJfQogCQl9Ci0JCWlmICgkbGluZW5yID4gJHN1cHByZXNzX2lmYnJhY2VzICYmCisJCWlmICghZGVmaW5lZCAkc3VwcHJlc3NfaWZicmFjZXN7JGxpbmVuciAtIDF9ICYmCiAJCQkJCSRsaW5lID1+IC9cYihpZnx3aGlsZXxmb3J8ZWxzZSlcYi8pIHsKLQkJCW15ICgkbGV2ZWwsICRlbmRsbiwgQGNodW5rcykgPQotCQkJCWN0eF9zdGF0ZW1lbnRfZnVsbCgkbGluZW5yLCAkcmVhbGNudCwgJC1bMF0pOwotCiAJCQlteSAkYWxsb3dlZCA9IDA7CiAKIAkJCSMgQ2hlY2sgdGhlIHByZS1jb250ZXh0LgpAQCAtMTczOCwxMCArMTgwNiwxNSBAQAogCQkJCSNwcmludCAiQVBXOiBBTExPV0VEOiBwcmU8JDE+XG4iOwogCQkJCSRhbGxvd2VkID0gMTsKIAkJCX0KKworCQkJbXkgKCRsZXZlbCwgJGVuZGxuLCBAY2h1bmtzKSA9CisJCQkJY3R4X3N0YXRlbWVudF9mdWxsKCRsaW5lbnIsICRyZWFsY250LCAkLVswXSk7CisKIAkJCSMgQ2hlY2sgdGhlIGNvbmRpdGlvbi4KIAkJCW15ICgkY29uZCwgJGJsb2NrKSA9IEB7JGNodW5rc1swXX07CisJCQkjcHJpbnQgIkNIRUNLSU5HPCRsaW5lbnI+IGNvbmQ8JGNvbmQ+IGJsb2NrPCRibG9jaz5cbiI7CiAJCQlpZiAoZGVmaW5lZCAkY29uZCkgewotCQkJCXN1YnN0cigkYmxvY2ssIDAsIGxlbmd0aCgkY29uZCkpID0gJyc7CisJCQkJc3Vic3RyKCRibG9jaywgMCwgbGVuZ3RoKCRjb25kKSwgJycpOwogCQkJfQogCQkJaWYgKHN0YXRlbWVudF9saW5lcygkY29uZCkgPiAxKSB7CiAJCQkJI3ByaW50ICJBUFc6IEFMTE9XRUQ6IGNvbmQ8JGNvbmQ+XG4iOwpAQCAtMTc1OSw3ICsxODMyLDcgQEAKIAkJCWlmIChkZWZpbmVkICRjaHVua3NbMV0pIHsKIAkJCQlteSAoJGNvbmQsICRibG9jaykgPSBAeyRjaHVua3NbMV19OwogCQkJCWlmIChkZWZpbmVkICRjb25kKSB7Ci0JCQkJCXN1YnN0cigkYmxvY2ssIDAsIGxlbmd0aCgkY29uZCkpID0gJyc7CisJCQkJCXN1YnN0cigkYmxvY2ssIDAsIGxlbmd0aCgkY29uZCksICcnKTsKIAkJCQl9CiAJCQkJaWYgKCRibG9jayA9fiAvXlxzKlx7LykgewogCQkJCQkjcHJpbnQgIkFQVzogQUxMT1dFRDogY2h1bmstMSBibG9jazwkYmxvY2s+XG4iOwpAQCAtMTg4Miw2ICsxOTU1LDI4IEBACiAJCWlmICgkbGluZSA9fiAvX19GVU5DVElPTl9fLykgewogCQkJV0FSTigiX19mdW5jX18gc2hvdWxkIGJlIHVzZWQgaW5zdGVhZCBvZiBnY2Mgc3BlY2lmaWMgX19GVU5DVElPTl9fXG4iICAuICRoZXJlY3Vycik7CiAJCX0KKworIyBjaGVjayBmb3Igc2VtYXBob3JlcyB1c2VkIGFzIG11dGV4ZXMKKwkJaWYgKCRsaW5lID1+IC9cYihERUNMQVJFX01VVEVYfGluaXRfTVVURVgpXHMqXCgvKSB7CisJCQlXQVJOKCJtdXRleGVzIGFyZSBwcmVmZXJyZWQgZm9yIHNpbmdsZSBob2xkZXIgc2VtYXBob3Jlc1xuIiAuICRoZXJlY3Vycik7CisJCX0KKyMgY2hlY2sgZm9yIHNlbWFwaG9yZXMgdXNlZCBhcyBtdXRleGVzCisJCWlmICgkbGluZSA9fiAvXGJpbml0X01VVEVYX0xPQ0tFRFxzKlwoLykgeworCQkJV0FSTigiY29uc2lkZXIgdXNpbmcgYSBjb21wbGV0aW9uXG4iIC4gJGhlcmVjdXJyKTsKKwkJfQorIyByZWNvbW1lbmQgc3RyaWN0X3N0cnRvKiBvdmVyIHNpbXBsZV9zdHJ0byoKKwkJaWYgKCRsaW5lID1+IC9cYnNpbXBsZV8oc3RydG8uKj8pXHMqXCgvKSB7CisJCQlXQVJOKCJjb25zaWRlciB1c2luZyBzdHJpY3RfJDEgaW4gcHJlZmVyZW5jZSB0byBzaW1wbGVfJDFcbiIgLiAkaGVyZWN1cnIpOworCQl9CisKKyMgdXNlIG9mIE5SX0NQVVMgaXMgdXN1YWxseSB3cm9uZworIyBpZ25vcmUgZGVmaW5pdGlvbnMgb2YgTlJfQ1BVUyBhbmQgdXNhZ2UgdG8gZGVmaW5lIGFycmF5cyBhcyBsaWtlbHkgcmlnaHQKKwkJaWYgKCRsaW5lID1+IC9cYk5SX0NQVVNcYi8gJiYKKwkJICAgICRsaW5lICF+IC9eLiNccypkZWZpbmVccytOUl9DUFVTXHMrLyAmJgorCQkgICAgJGxpbmUgIX4gL14uXHMqJERlY2xhcmVccy4qXFtbXlxdXSpOUl9DUFVTW15cXV0qXF0vKQorCQl7CisJCQlXQVJOKCJ1c2FnZSBvZiBOUl9DUFVTIGlzIG9mdGVuIHdyb25nIC0gY29uc2lkZXIgdXNpbmcgY3B1X3Bvc3NpYmxlKCksIG51bV9wb3NzaWJsZV9jcHVzKCksIGZvcl9lYWNoX3Bvc3NpYmxlX2NwdSgpLCBldGNcbiIgLiAkaGVyZWN1cnIpOworCQl9CiAJfQogCiAJIyBJZiB3ZSBoYXZlIG5vIGlucHV0IGF0IGFsbCwgdGhlbiB0aGVyZSBpcyBub3RoaW5nIHRvIHJlcG9ydCBvbgpkaWZmIC0tZ2l0IGEvc2NyaXB0cy9rZXJuZWwtZG9jIGIvc2NyaXB0cy9rZXJuZWwtZG9jCmluZGV4IDc0YzJmOWRiLi4yNjNkMDRhIDEwMDc1NQotLS0gYS9zY3JpcHRzL2tlcm5lbC1kb2MKKysrIGIvc2NyaXB0cy9rZXJuZWwtZG9jCkBAIC0yNDcsNiArMjQ3LDEwIEBACiBteSAoJHR5cGUsJGRlY2xhcmF0aW9uX25hbWUsJHJldHVybl90eXBlKTsKIG15ICgkbmV3c2VjdGlvbiwkbmV3Y29udGVudHMsJHByb3RvdHlwZSwkZmlsZWxpc3QsICRicmNvdW50LCAlc291cmNlX21hcCk7CiAKK2lmIChkZWZpbmVkKCRFTlZ7J0tCVUlMRF9WRVJCT1NFJ30pKSB7CisJJHZlcmJvc2UgPSAiJEVOVnsnS0JVSUxEX1ZFUkJPU0UnfSI7Cit9CisKICMgR2VuZXJhdGVkIGRvY2Jvb2sgY29kZSBpcyBpbnNlcnRlZCBpbiBhIHRlbXBsYXRlIGF0IGEgcG9pbnQgd2hlcmUKICMgZG9jYm9vayB2My4xIHJlcXVpcmVzIGEgbm9uLXplcm8gc2VxdWVuY2Ugb2YgUmVmRW50cnknczsgc2VlOgogIyBodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2svZG9jdW1lbnRhdGlvbi9yZWZlcmVuY2UvaHRtbC9yZWZlbnRyeS5odG1sCmRpZmYgLS1naXQgYS9zY3JpcHRzL21vZC9maWxlMmFsaWFzLmMgYi9zY3JpcHRzL21vZC9maWxlMmFsaWFzLmMKaW5kZXggOWRkZjk0NC4uMzQ4ZDg2OCAxMDA2NDQKLS0tIGEvc2NyaXB0cy9tb2QvZmlsZTJhbGlhcy5jCisrKyBiL3NjcmlwdHMvbW9kL2ZpbGUyYWxpYXMuYwpAQCAtNTEsMTEgKzUxLDEzIEBACiAgICAgICAgICAgICAgICAgc3ByaW50ZihzdHIgKyBzdHJsZW4oc3RyKSwgIioiKTsgICAgICAgICAgICAgICAgXAogfSB3aGlsZSgwKQogCit1bnNpZ25lZCBpbnQgY3Jvc3NfYnVpbGQgPSAwOwogLyoqCiAgKiBDaGVjayB0aGF0IHNpemVvZihkZXZpY2VfaWQgdHlwZSkgYXJlIGNvbnNpc3RlbnQgd2l0aCBzaXplIG9mIHNlY3Rpb24KICAqIGluIC5vIGZpbGUuIElmIGluLWNvbnNpc3RlbnQgdGhlbiB1c2Vyc3BhY2UgYW5kIGtlcm5lbCBkb2VzIG5vdCBhZ3JlZQogICogb24gYWN0dWFsIHNpemUgd2hpY2ggaXMgYSBidWcuCiAgKiBBbHNvIHZlcmlmeSB0aGF0IHRoZSBmaW5hbCBlbnRyeSBpbiB0aGUgdGFibGUgaXMgYWxsIHplcm9zLgorICogSWdub3JlIGJvdGggY2hlY2tzIGlmIGJ1aWxkIGhvc3QgZGlmZmVyIGZyb20gdGFyZ2V0IGhvc3QgYW5kIHNpemUgZGlmZmVycy4KICAqKi8KIHN0YXRpYyB2b2lkIGRldmljZV9pZF9jaGVjayhjb25zdCBjaGFyICptb2RuYW1lLCBjb25zdCBjaGFyICpkZXZpY2VfaWQsCiAJCQkgICAgdW5zaWduZWQgbG9uZyBzaXplLCB1bnNpZ25lZCBsb25nIGlkX3NpemUsCkBAIC02NCw2ICs2Niw4IEBACiAJaW50IGk7CiAKIAlpZiAoc2l6ZSAlIGlkX3NpemUgfHwgc2l6ZSA8IGlkX3NpemUpIHsKKwkJaWYgKGNyb3NzX2J1aWxkICE9IDApCisJCQlyZXR1cm47CiAJCWZhdGFsKCIlczogc2l6ZW9mKHN0cnVjdCAlc19kZXZpY2VfaWQpPSVsdSBpcyBub3QgYSBtb2R1bG8gIgogCQkgICAgICAib2YgdGhlIHNpemUgb2Ygc2VjdGlvbiBfX21vZF8lc19kZXZpY2VfdGFibGU9JWx1LlxuIgogCQkgICAgICAiRml4IGRlZmluaXRpb24gb2Ygc3RydWN0ICVzX2RldmljZV9pZCAiCmRpZmYgLS1naXQgYS9zY3JpcHRzL21vZC9tb2Rwb3N0LmMgYi9zY3JpcHRzL21vZC9tb2Rwb3N0LmMKaW5kZXggNjk1YjVkNi4uMTEwY2YyNCAxMDA2NDQKLS0tIGEvc2NyaXB0cy9tb2QvbW9kcG9zdC5jCisrKyBiL3NjcmlwdHMvbW9kL21vZHBvc3QuYwpAQCAtMjAyNiw3ICsyMDI2LDcgQEAKIAlpbnQgb3B0OwogCWludCBlcnI7CiAKLQl3aGlsZSAoKG9wdCA9IGdldG9wdChhcmdjLCBhcmd2LCAiaTpJOm1zU286YXdNOks6IikpICE9IC0xKSB7CisJd2hpbGUgKChvcHQgPSBnZXRvcHQoYXJnYywgYXJndiwgImk6STpjbXNTbzphd006SzoiKSkgIT0gLTEpIHsKIAkJc3dpdGNoIChvcHQpIHsKIAkJY2FzZSAnaSc6CiAJCQlrZXJuZWxfcmVhZCA9IG9wdGFyZzsKQEAgLTIwMzUsNiArMjAzNSw5IEBACiAJCQltb2R1bGVfcmVhZCA9IG9wdGFyZzsKIAkJCWV4dGVybmFsX21vZHVsZSA9IDE7CiAJCQlicmVhazsKKwkJY2FzZSAnYyc6CisJCQljcm9zc19idWlsZCA9IDE7CisJCQlicmVhazsKIAkJY2FzZSAnbSc6CiAJCQltb2R2ZXJzaW9ucyA9IDE7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NjcmlwdHMvbW9kL21vZHBvc3QuaCBiL3NjcmlwdHMvbW9kL21vZHBvc3QuaAppbmRleCA1NjVjNTg3Li4wOWY1OGUzIDEwMDY0NAotLS0gYS9zY3JpcHRzL21vZC9tb2Rwb3N0LmgKKysrIGIvc2NyaXB0cy9tb2QvbW9kcG9zdC5oCkBAIC0xMzUsNiArMTM1LDcgQEAKIH07CiAKIC8qIGZpbGUyYWxpYXMuYyAqLworZXh0ZXJuIHVuc2lnbmVkIGludCBjcm9zc19idWlsZDsKIHZvaWQgaGFuZGxlX21vZGRldnRhYmxlKHN0cnVjdCBtb2R1bGUgKm1vZCwgc3RydWN0IGVsZl9pbmZvICppbmZvLAogCQkJRWxmX1N5bSAqc3ltLCBjb25zdCBjaGFyICpzeW1uYW1lKTsKIHZvaWQgYWRkX21vZGRldnRhYmxlKHN0cnVjdCBidWZmZXIgKmJ1Ziwgc3RydWN0IG1vZHVsZSAqbW9kKTsKZGlmZiAtLWdpdCBhL3NlY3VyaXR5L2NhcGFiaWxpdHkuYyBiL3NlY3VyaXR5L2NhcGFiaWxpdHkuYwppbmRleCA5ZTk5ZjM2YS4uMmM2ZTA2ZCAxMDA2NDQKLS0tIGEvc2VjdXJpdHkvY2FwYWJpbGl0eS5jCisrKyBiL3NlY3VyaXR5L2NhcGFiaWxpdHkuYwpAQCAtNDAsNyArNDAsNiBAQAogCS5pbm9kZV9uZWVkX2tpbGxwcml2ID0JCWNhcF9pbm9kZV9uZWVkX2tpbGxwcml2LAogCS5pbm9kZV9raWxscHJpdiA9CQljYXBfaW5vZGVfa2lsbHByaXYsCiAKLQkudGFza19raWxsID0JCQljYXBfdGFza19raWxsLAogCS50YXNrX3NldHNjaGVkdWxlciA9CQljYXBfdGFza19zZXRzY2hlZHVsZXIsCiAJLnRhc2tfc2V0aW9wcmlvID0JCWNhcF90YXNrX3NldGlvcHJpbywKIAkudGFza19zZXRuaWNlID0JCQljYXBfdGFza19zZXRuaWNlLApkaWZmIC0tZ2l0IGEvc2VjdXJpdHkvY29tbW9uY2FwLmMgYi9zZWN1cml0eS9jb21tb25jYXAuYwppbmRleCBiYjBjMDk1Li4wNmQ1Yzk0IDEwMDY0NAotLS0gYS9zZWN1cml0eS9jb21tb25jYXAuYworKysgYi9zZWN1cml0eS9jb21tb25jYXAuYwpAQCAtNTQwLDQxICs1NDAsNiBAQAogCXJldHVybiBjYXBfc2FmZV9uaWNlKHApOwogfQogCi1pbnQgY2FwX3Rhc2tfa2lsbChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIHN0cnVjdCBzaWdpbmZvICppbmZvLAotCQkJCWludCBzaWcsIHUzMiBzZWNpZCkKLXsKLQlpZiAoaW5mbyAhPSBTRU5EX1NJR19OT0lORk8gJiYgKGlzX3NpX3NwZWNpYWwoaW5mbykgfHwgU0lfRlJPTUtFUk5FTChpbmZvKSkpCi0JCXJldHVybiAwOwotCi0JLyoKLQkgKiBSdW5uaW5nIGEgc2V0dWlkIHJvb3QgcHJvZ3JhbSByYWlzZXMgeW91ciBjYXBhYmlsaXRpZXMuCi0JICogS2lsbGluZyB5b3VyIG93biBzZXR1aWQgcm9vdCBwcm9jZXNzZXMgd2FzIHByZXZpb3VzbHkKLQkgKiBhbGxvd2VkLgotCSAqIFdlIG11c3QgcHJlc2VydmUgbGVnYWN5IHNpZ25hbCBiZWhhdmlvciBpbiB0aGlzIGNhc2UuCi0JICovCi0JaWYgKHAtPnVpZCA9PSBjdXJyZW50LT51aWQpCi0JCXJldHVybiAwOwotCi0JLyogc2lnY29udCBpcyBwZXJtaXR0ZWQgd2l0aGluIHNhbWUgc2Vzc2lvbiAqLwotCWlmIChzaWcgPT0gU0lHQ09OVCAmJiAodGFza19zZXNzaW9uX25yKGN1cnJlbnQpID09IHRhc2tfc2Vzc2lvbl9ucihwKSkpCi0JCXJldHVybiAwOwotCi0JaWYgKHNlY2lkKQotCQkvKgotCQkgKiBTaWduYWwgc2VudCBhcyBhIHBhcnRpY3VsYXIgdXNlci4KLQkJICogQ2FwYWJpbGl0aWVzIGFyZSBpZ25vcmVkLiAgTWF5IGJlIHdyb25nLCBidXQgaXQncyB0aGUKLQkJICogb25seSB0aGluZyB3ZSBjYW4gZG8gYXQgdGhlIG1vbWVudC4KLQkJICogVXNlZCBvbmx5IGJ5IHVzYiBkcml2ZXJzPwotCQkgKi8KLQkJcmV0dXJuIDA7Ci0JaWYgKGNhcF9pc3N1YnNldChwLT5jYXBfcGVybWl0dGVkLCBjdXJyZW50LT5jYXBfcGVybWl0dGVkKSkKLQkJcmV0dXJuIDA7Ci0JaWYgKGNhcGFibGUoQ0FQX0tJTEwpKQotCQlyZXR1cm4gMDsKLQotCXJldHVybiAtRVBFUk07Ci19Ci0KIC8qCiAgKiBjYWxsZWQgZnJvbSBrZXJuZWwvc3lzLmMgZm9yIHByY3RsKFBSX0NBQlNFVF9EUk9QKQogICogZG9uZSB3aXRob3V0IHRhc2tfY2FwYWJpbGl0eV9sb2NrKCkgYmVjYXVzZSBpdCBpbnRyb2R1Y2VzCkBAIC02MDUsMTEgKzU3MCw2IEBACiB7CiAJcmV0dXJuIDA7CiB9Ci1pbnQgY2FwX3Rhc2tfa2lsbChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIHN0cnVjdCBzaWdpbmZvICppbmZvLAotCQkJCWludCBzaWcsIHUzMiBzZWNpZCkKLXsKLQlyZXR1cm4gMDsKLX0KICNlbmRpZgogCiB2b2lkIGNhcF90YXNrX3JlcGFyZW50X3RvX2luaXQgKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKZGlmZiAtLWdpdCBhL3NlY3VyaXR5L3NlbGludXgvaG9va3MuYyBiL3NlY3VyaXR5L3NlbGludXgvaG9va3MuYwppbmRleCA0YmY0ODA3Li5kMzliNTljIDEwMDY0NAotLS0gYS9zZWN1cml0eS9zZWxpbnV4L2hvb2tzLmMKKysrIGIvc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jCkBAIC0xODAsNyArMTgwLDcgQEAKIAlzdHJ1Y3QgdGFza19zZWN1cml0eV9zdHJ1Y3QgKnRzZWMgPSBjdXJyZW50LT5zZWN1cml0eTsKIAlzdHJ1Y3QgaW5vZGVfc2VjdXJpdHlfc3RydWN0ICppc2VjOwogCi0JaXNlYyA9IGttZW1fY2FjaGVfemFsbG9jKHNlbF9pbm9kZV9jYWNoZSwgR0ZQX0tFUk5FTCk7CisJaXNlYyA9IGttZW1fY2FjaGVfemFsbG9jKHNlbF9pbm9kZV9jYWNoZSwgR0ZQX05PRlMpOwogCWlmICghaXNlYykKIAkJcmV0dXJuIC1FTk9NRU07CiAKQEAgLTc2MCwxMyArNzYwLDEzIEBACiAJICogdGhpcyBlYXJseSBpbiB0aGUgYm9vdCBwcm9jZXNzLiAqLwogCUJVR19PTighc3NfaW5pdGlhbGl6ZWQpOwogCi0JLyogdGhpcyBtaWdodCBnbyBhd2F5IHNvbWV0aW1lIGRvd24gdGhlIGxpbmUgaWYgdGhlcmUgaXMgYSBuZXcgdXNlcgotCSAqIG9mIGNsb25lLCBidXQgZm9yIG5vdywgbmZzIGJldHRlciBub3QgZ2V0IGhlcmUuLi4gKi8KLQlCVUdfT04obmV3c2JzZWMtPmluaXRpYWxpemVkKTsKLQogCS8qIGhvdyBjYW4gd2UgY2xvbmUgaWYgdGhlIG9sZCBvbmUgd2Fzbid0IHNldCB1cD8/ICovCiAJQlVHX09OKCFvbGRzYnNlYy0+aW5pdGlhbGl6ZWQpOwogCisJLyogaWYgZnMgaXMgcmV1c2luZyBhIHNiLCBqdXN0IGxldCBpdHMgb3B0aW9ucyBzdGFuZC4uLiAqLworCWlmIChuZXdzYnNlYy0+aW5pdGlhbGl6ZWQpCisJCXJldHVybjsKKwogCW11dGV4X2xvY2soJm5ld3Nic2VjLT5sb2NrKTsKIAogCW5ld3Nic2VjLT5mbGFncyA9IG9sZHNic2VjLT5mbGFnczsKQEAgLTgwMCw3ICs4MDAsOCBAQAogCW11dGV4X3VubG9jaygmbmV3c2JzZWMtPmxvY2spOwogfQogCi1pbnQgc2VsaW51eF9wYXJzZV9vcHRzX3N0cihjaGFyICpvcHRpb25zLCBzdHJ1Y3Qgc2VjdXJpdHlfbW50X29wdHMgKm9wdHMpCitzdGF0aWMgaW50IHNlbGludXhfcGFyc2Vfb3B0c19zdHIoY2hhciAqb3B0aW9ucywKKwkJCQkgIHN0cnVjdCBzZWN1cml0eV9tbnRfb3B0cyAqb3B0cykKIHsKIAljaGFyICpwOwogCWNoYXIgKmNvbnRleHQgPSBOVUxMLCAqZGVmY29udGV4dCA9IE5VTEw7CkBAIC0xMTQyLDcgKzExNDMsNyBAQAogCQl9CiAKIAkJbGVuID0gSU5JVENPTlRFWFRMRU47Ci0JCWNvbnRleHQgPSBrbWFsbG9jKGxlbiwgR0ZQX0tFUk5FTCk7CisJCWNvbnRleHQgPSBrbWFsbG9jKGxlbiwgR0ZQX05PRlMpOwogCQlpZiAoIWNvbnRleHQpIHsKIAkJCXJjID0gLUVOT01FTTsKIAkJCWRwdXQoZGVudHJ5KTsKQEAgLTExNjAsNyArMTE2MSw3IEBACiAJCQl9CiAJCQlrZnJlZShjb250ZXh0KTsKIAkJCWxlbiA9IHJjOwotCQkJY29udGV4dCA9IGttYWxsb2MobGVuLCBHRlBfS0VSTkVMKTsKKwkJCWNvbnRleHQgPSBrbWFsbG9jKGxlbiwgR0ZQX05PRlMpOwogCQkJaWYgKCFjb250ZXh0KSB7CiAJCQkJcmMgPSAtRU5PTUVNOwogCQkJCWRwdXQoZGVudHJ5KTsKQEAgLTExODQsNyArMTE4NSw4IEBACiAJCQlyYyA9IDA7CiAJCX0gZWxzZSB7CiAJCQlyYyA9IHNlY3VyaXR5X2NvbnRleHRfdG9fc2lkX2RlZmF1bHQoY29udGV4dCwgcmMsICZzaWQsCi0JCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2JzZWMtPmRlZl9zaWQpOworCQkJCQkJCSAgICAgc2JzZWMtPmRlZl9zaWQsCisJCQkJCQkJICAgICBHRlBfTk9GUyk7CiAJCQlpZiAocmMpIHsKIAkJCQlwcmludGsoS0VSTl9XQVJOSU5HICIlczogIGNvbnRleHRfdG9fc2lkKCVzKSAiCiAJCQkJICAgICAgICJyZXR1cm5lZCAlZCBmb3IgZGV2PSVzIGlubz0lbGRcbiIsCkBAIC0xNjI5LDYgKzE2MzEsMTIgQEAKIAkJZWxzZQogCQkJYXYgfD0gRklMRV9fV1JJVEU7CiAJfQorCWlmICghYXYpIHsKKwkJLyoKKwkJICogU3BlY2lhbCBmaWxlIG9wZW5lZCB3aXRoIGZsYWdzIDMgZm9yIGlvY3RsLW9ubHkgdXNlLgorCQkgKi8KKwkJYXYgPSBGSUxFX19JT0NUTDsKKwl9CiAKIAlyZXR1cm4gYXY7CiB9CkBAIC0yNDIyLDcgKzI0MzAsNyBAQAogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKIAlpZiAobmFtZSkgewotCQluYW1lcCA9IGtzdHJkdXAoWEFUVFJfU0VMSU5VWF9TVUZGSVgsIEdGUF9LRVJORUwpOworCQluYW1lcCA9IGtzdHJkdXAoWEFUVFJfU0VMSU5VWF9TVUZGSVgsIEdGUF9OT0ZTKTsKIAkJaWYgKCFuYW1lcCkKIAkJCXJldHVybiAtRU5PTUVNOwogCQkqbmFtZSA9IG5hbWVwOwpkaWZmIC0tZ2l0IGEvc2VjdXJpdHkvc2VsaW51eC9pbmNsdWRlL3NlY3VyaXR5LmggYi9zZWN1cml0eS9zZWxpbnV4L2luY2x1ZGUvc2VjdXJpdHkuaAppbmRleCBmN2QyZjAzLi40NGUxMmVjIDEwMDY0NAotLS0gYS9zZWN1cml0eS9zZWxpbnV4L2luY2x1ZGUvc2VjdXJpdHkuaAorKysgYi9zZWN1cml0eS9zZWxpbnV4L2luY2x1ZGUvc2VjdXJpdHkuaApAQCAtODYsNyArODYsOCBAQAogaW50IHNlY3VyaXR5X2NvbnRleHRfdG9fc2lkKGNoYXIgKnNjb250ZXh0LCB1MzIgc2NvbnRleHRfbGVuLAogCXUzMiAqb3V0X3NpZCk7CiAKLWludCBzZWN1cml0eV9jb250ZXh0X3RvX3NpZF9kZWZhdWx0KGNoYXIgKnNjb250ZXh0LCB1MzIgc2NvbnRleHRfbGVuLCB1MzIgKm91dF9zaWQsIHUzMiBkZWZfc2lkKTsKK2ludCBzZWN1cml0eV9jb250ZXh0X3RvX3NpZF9kZWZhdWx0KGNoYXIgKnNjb250ZXh0LCB1MzIgc2NvbnRleHRfbGVuLAorCQkJCSAgICB1MzIgKm91dF9zaWQsIHUzMiBkZWZfc2lkLCBnZnBfdCBnZnBfZmxhZ3MpOwogCiBpbnQgc2VjdXJpdHlfZ2V0X3VzZXJfc2lkcyh1MzIgY2FsbHNpZCwgY2hhciAqdXNlcm5hbWUsCiAJCQkgICB1MzIgKipzaWRzLCB1MzIgKm5lbCk7CmRpZmYgLS1naXQgYS9zZWN1cml0eS9zZWxpbnV4L3NzL3NlcnZpY2VzLmMgYi9zZWN1cml0eS9zZWxpbnV4L3NzL3NlcnZpY2VzLmMKaW5kZXggZjM3NDE4Ni4uM2YyYmFkMiAxMDA2NDQKLS0tIGEvc2VjdXJpdHkvc2VsaW51eC9zcy9zZXJ2aWNlcy5jCisrKyBiL3NlY3VyaXR5L3NlbGludXgvc3Mvc2VydmljZXMuYwpAQCAtNjgwLDcgKzY4MCw4IEBACiAKIH0KIAotc3RhdGljIGludCBzZWN1cml0eV9jb250ZXh0X3RvX3NpZF9jb3JlKGNoYXIgKnNjb250ZXh0LCB1MzIgc2NvbnRleHRfbGVuLCB1MzIgKnNpZCwgdTMyIGRlZl9zaWQpCitzdGF0aWMgaW50IHNlY3VyaXR5X2NvbnRleHRfdG9fc2lkX2NvcmUoY2hhciAqc2NvbnRleHQsIHUzMiBzY29udGV4dF9sZW4sCisJCQkJCXUzMiAqc2lkLCB1MzIgZGVmX3NpZCwgZ2ZwX3QgZ2ZwX2ZsYWdzKQogewogCWNoYXIgKnNjb250ZXh0MjsKIAlzdHJ1Y3QgY29udGV4dCBjb250ZXh0OwpAQCAtNzA5LDcgKzcxMCw3IEBACiAJICAgbnVsbCBzdWZmaXggdG8gdGhlIGNvcHkgdG8gYXZvaWQgcHJvYmxlbXMgd2l0aCB0aGUgZXhpc3RpbmcKIAkgICBhdHRyIHBhY2thZ2UsIHdoaWNoIGRvZXNuJ3QgdmlldyB0aGUgbnVsbCB0ZXJtaW5hdG9yIGFzIHBhcnQKIAkgICBvZiB0aGUgYXR0cmlidXRlIHZhbHVlLiAqLwotCXNjb250ZXh0MiA9IGttYWxsb2Moc2NvbnRleHRfbGVuKzEsR0ZQX0tFUk5FTCk7CisJc2NvbnRleHQyID0ga21hbGxvYyhzY29udGV4dF9sZW4rMSwgZ2ZwX2ZsYWdzKTsKIAlpZiAoIXNjb250ZXh0MikgewogCQlyYyA9IC1FTk9NRU07CiAJCWdvdG8gb3V0OwpAQCAtODA5LDcgKzgxMCw3IEBACiBpbnQgc2VjdXJpdHlfY29udGV4dF90b19zaWQoY2hhciAqc2NvbnRleHQsIHUzMiBzY29udGV4dF9sZW4sIHUzMiAqc2lkKQogewogCXJldHVybiBzZWN1cml0eV9jb250ZXh0X3RvX3NpZF9jb3JlKHNjb250ZXh0LCBzY29udGV4dF9sZW4sCi0JICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lkLCBTRUNTSURfTlVMTCk7CisJCQkJCSAgICBzaWQsIFNFQ1NJRF9OVUxMLCBHRlBfS0VSTkVMKTsKIH0KIAogLyoqCkBAIC04MjksMTAgKzgzMCwxMSBAQAogICogUmV0dXJucyAtJUVJTlZBTCBpZiB0aGUgY29udGV4dCBpcyBpbnZhbGlkLCAtJUVOT01FTSBpZiBpbnN1ZmZpY2llbnQKICAqIG1lbW9yeSBpcyBhdmFpbGFibGUsIG9yIDAgb24gc3VjY2Vzcy4KICAqLwotaW50IHNlY3VyaXR5X2NvbnRleHRfdG9fc2lkX2RlZmF1bHQoY2hhciAqc2NvbnRleHQsIHUzMiBzY29udGV4dF9sZW4sIHUzMiAqc2lkLCB1MzIgZGVmX3NpZCkKK2ludCBzZWN1cml0eV9jb250ZXh0X3RvX3NpZF9kZWZhdWx0KGNoYXIgKnNjb250ZXh0LCB1MzIgc2NvbnRleHRfbGVuLCB1MzIgKnNpZCwKKwkJCQkgICAgdTMyIGRlZl9zaWQsIGdmcF90IGdmcF9mbGFncykKIHsKIAlyZXR1cm4gc2VjdXJpdHlfY29udGV4dF90b19zaWRfY29yZShzY29udGV4dCwgc2NvbnRleHRfbGVuLAotCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZCwgZGVmX3NpZCk7CisJCQkJCSAgICBzaWQsIGRlZl9zaWQsIGdmcF9mbGFncyk7CiB9CiAKIHN0YXRpYyBpbnQgY29tcHV0ZV9zaWRfaGFuZGxlX2ludmFsaWRfY29udGV4dCgKZGlmZiAtLWdpdCBhL3NlY3VyaXR5L3NtYWNrL3NtYWNrLmggYi9zZWN1cml0eS9zbWFjay9zbWFjay5oCmluZGV4IGEyMWEwZTkuLjYyYzFlOTggMTAwNjQ0Ci0tLSBhL3NlY3VyaXR5L3NtYWNrL3NtYWNrLmgKKysrIGIvc2VjdXJpdHkvc21hY2svc21hY2suaApAQCAtMjYsMTQgKzI2LDYgQEAKICNkZWZpbmUgU01LX01BWExFTgkyMwogI2RlZmluZSBTTUtfTEFCRUxMRU4JKFNNS19NQVhMRU4rMSkKIAotLyoKLSAqIEhvdyBtYW55IGtpbmRzIG9mIGFjY2VzcyBhcmUgdGhlcmU/Ci0gKiBIZXJlJ3MgeW91ciBhbnN3ZXIuCi0gKi8KLSNkZWZpbmUgU01LX0FDQ0VTU0RBU0gJJy0nCi0jZGVmaW5lIFNNS19BQ0NFU1NMT1cJInJ3eGEiCi0jZGVmaW5lIFNNS19BQ0NFU1NLSU5EUwkoc2l6ZW9mKFNNS19BQ0NFU1NMT1cpIC0gMSkKLQogc3RydWN0IHN1cGVyYmxvY2tfc21hY2sgewogCWNoYXIJCSpzbWtfcm9vdDsKIAljaGFyCQkqc21rX2Zsb29yOwpkaWZmIC0tZ2l0IGEvc2VjdXJpdHkvc21hY2svc21hY2tfbHNtLmMgYi9zZWN1cml0eS9zbWFjay9zbWFja19sc20uYwppbmRleCAwMjQxZmQzLi43MzJiYTI3IDEwMDY0NAotLS0gYS9zZWN1cml0eS9zbWFjay9zbWFja19sc20uYworKysgYi9zZWN1cml0eS9zbWFjay9zbWFja19sc20uYwpAQCAtMTExNywxMSArMTExNyw2IEBACiBzdGF0aWMgaW50IHNtYWNrX3Rhc2tfa2lsbChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIHN0cnVjdCBzaWdpbmZvICppbmZvLAogCQkJICAgaW50IHNpZywgdTMyIHNlY2lkKQogewotCWludCByYzsKLQotCXJjID0gY2FwX3Rhc2tfa2lsbChwLCBpbmZvLCBzaWcsIHNlY2lkKTsKLQlpZiAocmMgIT0gMCkKLQkJcmV0dXJuIHJjOwogCS8qCiAJICogU3BlY2lhbCBjYXNlcyB3aGVyZSBzaWduYWxzIHJlYWxseSBvdWdodCB0byBnbyB0aHJvdWdoCiAJICogaW4gc3BpdGUgb2YgcG9saWN5LiBTdGVwaGVuIFNtYWxsZXkgc3VnZ2VzdHMgaXQgbWF5CkBAIC0xNTA4LDcgKzE1MDMsNyBAQAogICovCiBzdGF0aWMgaW50IHNtYWNrX3NobV9zaG1jdGwoc3RydWN0IHNobWlkX2tlcm5lbCAqc2hwLCBpbnQgY21kKQogewotCWNoYXIgKnNzcCA9IHNtYWNrX29mX3NobShzaHApOworCWNoYXIgKnNzcDsKIAlpbnQgbWF5OwogCiAJc3dpdGNoIChjbWQpIHsKQEAgLTE1MzIsNiArMTUyNyw3IEBACiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAorCXNzcCA9IHNtYWNrX29mX3NobShzaHApOwogCXJldHVybiBzbWtfY3VyYWNjKHNzcCwgbWF5KTsKIH0KIApAQCAtMTYxNiw3ICsxNjEyLDcgQEAKICAqLwogc3RhdGljIGludCBzbWFja19zZW1fc2VtY3RsKHN0cnVjdCBzZW1fYXJyYXkgKnNtYSwgaW50IGNtZCkKIHsKLQljaGFyICpzc3AgPSBzbWFja19vZl9zZW0oc21hKTsKKwljaGFyICpzc3A7CiAJaW50IG1heTsKIAogCXN3aXRjaCAoY21kKSB7CkBAIC0xNjQ1LDYgKzE2NDEsNyBAQAogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKKwlzc3AgPSBzbWFja19vZl9zZW0oc21hKTsKIAlyZXR1cm4gc21rX2N1cmFjYyhzc3AsIG1heSk7CiB9CiAKQEAgLTE3MzAsNyArMTcyNyw3IEBACiAgKi8KIHN0YXRpYyBpbnQgc21hY2tfbXNnX3F1ZXVlX21zZ2N0bChzdHJ1Y3QgbXNnX3F1ZXVlICptc3EsIGludCBjbWQpCiB7Ci0JY2hhciAqbXNwID0gc21hY2tfb2ZfbXNxKG1zcSk7CisJY2hhciAqbXNwOwogCWludCBtYXk7CiAKIAlzd2l0Y2ggKGNtZCkgewpAQCAtMTc1Miw2ICsxNzQ5LDcgQEAKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCisJbXNwID0gc21hY2tfb2ZfbXNxKG1zcSk7CiAJcmV0dXJuIHNta19jdXJhY2MobXNwLCBtYXkpOwogfQogCmRpZmYgLS1naXQgYS9zZWN1cml0eS9zbWFjay9zbWFja2ZzLmMgYi9zZWN1cml0eS9zbWFjay9zbWFja2ZzLmMKaW5kZXggMzU4YzkyYy4uY2ZhZThhZiAxMDA2NDQKLS0tIGEvc2VjdXJpdHkvc21hY2svc21hY2tmcy5jCisrKyBiL3NlY3VyaXR5L3NtYWNrL3NtYWNrZnMuYwpAQCAtNzQsMTcgKzc0LDI1IEBACiAjZGVmaW5lCVNFUV9SRUFEX0ZJTklTSEVECTEKIAogLyoKLSAqIERpc2FibGUgY29uY3VycmVudCB3cml0aW5nIG9wZW4oKSBvcGVyYXRpb25zCi0gKi8KLXN0YXRpYyBzdHJ1Y3Qgc2VtYXBob3JlIHNtYWNrX3dyaXRlX3NlbTsKLQotLyoKICAqIFZhbHVlcyBmb3IgcGFyc2luZyBjaXBzbyBydWxlcwogICogU01LX0RJR0lUTEVOOiBMZW5ndGggb2YgYSBkaWdpdCBmaWVsZCBpbiBhIHJ1bGUuCi0gKiBTTUtfQ0lQU09NRU46IE1pbmltdW0gcG9zc2libGUgY2lwc28gcnVsZSBsZW5ndGguCisgKiBTTUtfQ0lQU09NSU46IE1pbmltdW0gcG9zc2libGUgY2lwc28gcnVsZSBsZW5ndGguCisgKiBTTUtfQ0lQU09NQVg6IE1heGltdW0gcG9zc2libGUgY2lwc28gcnVsZSBsZW5ndGguCiAgKi8KICNkZWZpbmUgU01LX0RJR0lUTEVOIDQKLSNkZWZpbmUgU01LX0NJUFNPTUlOIChTTUtfTUFYTEVOICsgMiAqIFNNS19ESUdJVExFTikKKyNkZWZpbmUgU01LX0NJUFNPTUlOIChTTUtfTEFCRUxMRU4gKyAyICogU01LX0RJR0lUTEVOKQorI2RlZmluZSBTTUtfQ0lQU09NQVggKFNNS19DSVBTT01JTiArIFNNQUNLX0NJUFNPX01BWENBVE5VTSAqIFNNS19ESUdJVExFTikKKworLyoKKyAqIFZhbHVlcyBmb3IgcGFyc2luZyBNQUMgcnVsZXMKKyAqIFNNS19BQ0NFU1M6IE1heGltdW0gcG9zc2libGUgY29tYmluYXRpb24gb2YgYWNjZXNzIHBlcm1pc3Npb25zCisgKiBTTUtfQUNDRVNTTEVOOiBNYXhpbXVtIGxlbmd0aCBmb3IgYSBydWxlIGFjY2VzcyBmaWVsZAorICogU01LX0xPQURMRU46IFNtYWNrIHJ1bGUgbGVuZ3RoCisgKi8KKyNkZWZpbmUgU01LX0FDQ0VTUyAgICAicnd4YSIKKyNkZWZpbmUgU01LX0FDQ0VTU0xFTiAoc2l6ZW9mKFNNS19BQ0NFU1MpIC0gMSkKKyNkZWZpbmUgU01LX0xPQURMRU4gICAoU01LX0xBQkVMTEVOICsgU01LX0xBQkVMTEVOICsgU01LX0FDQ0VTU0xFTikKKwogCiAvKgogICogU2VxX2ZpbGUgcmVhZCBvcGVyYXRpb25zIGZvciAvc21hY2svbG9hZApAQCAtMTU1LDMyICsxNjMsNyBAQAogICovCiBzdGF0aWMgaW50IHNta19vcGVuX2xvYWQoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpCiB7Ci0JaWYgKChmaWxlLT5mX2ZsYWdzICYgT19BQ0NNT0RFKSA9PSBPX1JET05MWSkKLQkJcmV0dXJuIHNlcV9vcGVuKGZpbGUsICZsb2FkX3NlcV9vcHMpOwotCi0JaWYgKGRvd25faW50ZXJydXB0aWJsZSgmc21hY2tfd3JpdGVfc2VtKSkKLQkJcmV0dXJuIC1FUkVTVEFSVFNZUzsKLQotCXJldHVybiAwOwotfQotCi0vKioKLSAqIHNta19yZWxlYXNlX2xvYWQgLSByZWxlYXNlKCkgZm9yIC9zbWFjay9sb2FkCi0gKiBAaW5vZGU6IGlub2RlIHN0cnVjdHVyZSByZXByZXNlbnRpbmcgZmlsZQotICogQGZpbGU6ICJsb2FkIiBmaWxlIHBvaW50ZXIKLSAqCi0gKiBGb3IgYSByZWFkaW5nIHNlc3Npb24sIHVzZSB0aGUgc2VxX2ZpbGUgcmVsZWFzZQotICogaW1wbGVtZW50YXRpb24uCi0gKiBPdGhlcndpc2UsIHdlIGFyZSBhdCB0aGUgZW5kIG9mIGEgd3JpdGluZyBzZXNzaW9uIHNvCi0gKiBjbGVhbiBldmVyeXRoaW5nIHVwLgotICovCi1zdGF0aWMgaW50IHNta19yZWxlYXNlX2xvYWQoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpCi17Ci0JaWYgKChmaWxlLT5mX2ZsYWdzICYgT19BQ0NNT0RFKSA9PSBPX1JET05MWSkKLQkJcmV0dXJuIHNlcV9yZWxlYXNlKGlub2RlLCBmaWxlKTsKLQotCXVwKCZzbWFja193cml0ZV9zZW0pOwotCXJldHVybiAwOworCXJldHVybiBzZXFfb3BlbihmaWxlLCAmbG9hZF9zZXFfb3BzKTsKIH0KIAogLyoqCkBAIC0yMjksMTQgKzIxMiwxMCBAQAogICogVGhlIGZvcm1hdCBpcyBleGFjdGx5OgogICogICAgIGNoYXIgc3ViamVjdFtTTUtfTEFCRUxMRU5dCiAgKiAgICAgY2hhciBvYmplY3RbU01LX0xBQkVMTEVOXQotICogICAgIGNoYXIgYWNjZXNzW1NNS19BQ0NFU1NLSU5EU10KKyAqICAgICBjaGFyIGFjY2Vzc1tTTUtfQUNDRVNTTEVOXQogICoKLSAqICAgICBBbnl0aGluZyBmb2xsb3dpbmcgaXMgY29tbWVudGFyeSBhbmQgaWdub3JlZC4KLSAqCi0gKiB3cml0ZXMgbXVzdCBiZSBTTUtfTEFCRUxMRU4rU01LX0xBQkVMTEVOKzQgYnl0ZXMuCisgKiB3cml0ZXMgbXVzdCBiZSBTTUtfTEFCRUxMRU4rU01LX0xBQkVMTEVOK1NNS19BQ0NFU1NMRU4gYnl0ZXMuCiAgKi8KLSNkZWZpbmUgTUlOSU1VTV9MT0FEIChTTUtfTEFCRUxMRU4gKyBTTUtfTEFCRUxMRU4gKyBTTUtfQUNDRVNTS0lORFMpCi0KIHN0YXRpYyBzc2l6ZV90IHNta193cml0ZV9sb2FkKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLAogCQkJICAgICAgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpCiB7CkBAIC0yNTMsNyArMjMyLDcgQEAKIAkJcmV0dXJuIC1FUEVSTTsKIAlpZiAoKnBwb3MgIT0gMCkKIAkJcmV0dXJuIC1FSU5WQUw7Ci0JaWYgKGNvdW50IDwgTUlOSU1VTV9MT0FEKQorCWlmIChjb3VudCAhPSBTTUtfTE9BRExFTikKIAkJcmV0dXJuIC1FSU5WQUw7CiAKIAlkYXRhID0ga3phbGxvYyhjb3VudCwgR0ZQX0tFUk5FTCk7CkBAIC0zMzIsNyArMzExLDcgQEAKIAkucmVhZAkJPSBzZXFfcmVhZCwKIAkubGxzZWVrICAgICAgICAgPSBzZXFfbHNlZWssCiAJLndyaXRlCQk9IHNta193cml0ZV9sb2FkLAotCS5yZWxlYXNlICAgICAgICA9IHNta19yZWxlYXNlX2xvYWQsCisJLnJlbGVhc2UgICAgICAgID0gc2VxX3JlbGVhc2UsCiB9OwogCiAvKioKQEAgLTUxMyw3ICs0OTIsNyBAQAogCQlyZXR1cm4gLUVQRVJNOwogCWlmICgqcHBvcyAhPSAwKQogCQlyZXR1cm4gLUVJTlZBTDsKLQlpZiAoY291bnQgPD0gU01LX0NJUFNPTUlOKQorCWlmIChjb3VudCA8IFNNS19DSVBTT01JTiB8fCBjb3VudCA+IFNNS19DSVBTT01BWCkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKIAlkYXRhID0ga3phbGxvYyhjb3VudCArIDEsIEdGUF9LRVJORUwpOwpAQCAtNTQ3LDcgKzUyNiw3IEBACiAJaWYgKHJldCAhPSAxIHx8IGNhdGxlbiA+IFNNQUNLX0NJUFNPX01BWENBVE5VTSkKIAkJZ290byBvdXQ7CiAKLQlpZiAoY291bnQgPD0gKFNNS19DSVBTT01JTiArIGNhdGxlbiAqIFNNS19ESUdJVExFTikpCisJaWYgKGNvdW50ICE9IChTTUtfQ0lQU09NSU4gKyBjYXRsZW4gKiBTTUtfRElHSVRMRU4pKQogCQlnb3RvIG91dDsKIAogCW1lbXNldChtYXBjYXRzZXQsIDAsIHNpemVvZihtYXBjYXRzZXQpKTsKQEAgLTEwMDIsNyArOTgxLDYgQEAKIAkJfQogCX0KIAotCXNlbWFfaW5pdCgmc21hY2tfd3JpdGVfc2VtLCAxKTsKIAlzbWtfY2lwc29fZG9pKCk7CiAJc21rX3VubGJsX2FtYmllbnQoTlVMTCk7CiAKZGlmZiAtLWdpdCBhL3NvdW5kL29zcy9hYzk3X2NvZGVjLmMgYi9zb3VuZC9vc3MvYWM5N19jb2RlYy5jCmluZGV4IDg3YTY3MjYuLmI2MzgzOWUgMTAwNjQ0Ci0tLSBhL3NvdW5kL29zcy9hYzk3X2NvZGVjLmMKKysrIGIvc291bmQvb3NzL2FjOTdfY29kZWMuYwpAQCAtMTIwMiwzICsxMjAyLDUgQEAKIAogRVhQT1JUX1NZTUJPTChhYzk3X3Byb2JlX2NvZGVjKTsKIAorTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworCmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvZXMxOTY4LmMgYi9zb3VuZC9wY2kvZXMxOTY4LmMKaW5kZXggMjVjY2ZjZS4uN2Q5MTFhMSAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2VzMTk2OC5jCisrKyBiL3NvdW5kL3BjaS9lczE5NjguYwpAQCAtNjE3LDYgKzYxNywxOCBAQAogCXJldHVybiAxOyAvKiB0aW1lb3V0ICovCiB9CiAKK3N0YXRpYyBpbnQgc25kX2VzMTk2OF9hYzk3X3dhaXRfcG9sbChzdHJ1Y3QgZXMxOTY4ICpjaGlwKQoreworCWludCB0aW1lb3V0ID0gMTAwMDAwOworCisJd2hpbGUgKHRpbWVvdXQtLSA+IDApIHsKKwkJaWYgKCEoaW5iKGNoaXAtPmlvX3BvcnQgKyBFU01fQUM5N19JTkRFWCkgJiAxKSkKKwkJCXJldHVybiAwOworCX0KKwlzbmRfcHJpbnRkKCJlczE5Njg6IGFjOTcgdGltZW91dFxuIik7CisJcmV0dXJuIDE7IC8qIHRpbWVvdXQgKi8KK30KKwogc3RhdGljIHZvaWQgc25kX2VzMTk2OF9hYzk3X3dyaXRlKHN0cnVjdCBzbmRfYWM5NyAqYWM5NywgdW5zaWduZWQgc2hvcnQgcmVnLCB1bnNpZ25lZCBzaG9ydCB2YWwpCiB7CiAJc3RydWN0IGVzMTk2OCAqY2hpcCA9IGFjOTctPnByaXZhdGVfZGF0YTsKQEAgLTY0NSw3ICs2NTcsNyBAQAogCW91dGIocmVnIHwgMHg4MCwgY2hpcC0+aW9fcG9ydCArIEVTTV9BQzk3X0lOREVYKTsKIAkvKm1zbGVlcCgxKTsqLwogCi0JaWYgKCEgc25kX2VzMTk2OF9hYzk3X3dhaXQoY2hpcCkpIHsKKwlpZiAoIXNuZF9lczE5NjhfYWM5N193YWl0X3BvbGwoY2hpcCkpIHsKIAkJZGF0YSA9IGludyhjaGlwLT5pb19wb3J0ICsgRVNNX0FDOTdfREFUQSk7CiAJCS8qbXNsZWVwKDEpOyovCiAJfQpkaWZmIC0tZ2l0IGEvc291bmQvc29jL2NvZGVjcy90bHYzMjBhaWMzeC5jIGIvc291bmQvc29jL2NvZGVjcy90bHYzMjBhaWMzeC5jCmluZGV4IDU2OWVjYWMuLjg4OWE4OTcgMTAwNjQ0Ci0tLSBhL3NvdW5kL3NvYy9jb2RlY3MvdGx2MzIwYWljM3guYworKysgYi9zb3VuZC9zb2MvY29kZWNzL3RsdjMyMGFpYzN4LmMKQEAgLTExODcsMTAgKzExODcsOCBAQAogCQkubmFtZSA9ICJhaWMzeCBJMkMgQ29kZWMiLAogCQkub3duZXIgPSBUSElTX01PRFVMRSwKIAl9LAotCS5pZCA9IEkyQ19EUklWRVJJRF9JMkNERVYsCiAJLmF0dGFjaF9hZGFwdGVyID0gYWljM3hfaTJjX2F0dGFjaCwKIAkuZGV0YWNoX2NsaWVudCA9IGFpYzN4X2kyY19kZXRhY2gsCi0JLmNvbW1hbmQgPSBOVUxMLAogfTsKIAogc3RhdGljIHN0cnVjdCBpMmNfY2xpZW50IGNsaWVudF90ZW1wbGF0ZSA9IHsK