From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Bastien Nocera To: git-commits@fedoraproject.org Subject: [rpms/bluez] rawhide: Rebase to latest upstream HEAD (Closes: #2528181, #2525293) Date: Wed, 09 Sep 2026 12:27:58 GMT Message-ID: <178895687801.1.17949431567968293721.rpms-bluez-86e689ec8020@fedoraproject.org> List-ID: X-Git-Repo: rpms/bluez X-Git-Branch: rawhide X-Git-Rev: 86e689ec80200a8443ee646b4f67ff411eda6497 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvYmx1ZXoKQnJhbmNo IDogcmF3aGlkZQpDb21taXQgOiA4NmU2ODllYzgwMjAwYTg0NDNlZTY0NmI0ZjY3ZmY0MTFlZGE2 NDk3CkF1dGhvciA6IEJhc3RpZW4gTm9jZXJhIDxoYWRlc3NAaGFkZXNzLm5ldD4KRGF0ZSAgIDog MjAyNi0wOS0wOVQxNDoyNzo1MCswMjowMApTdGF0cyAgOiArMTQvLTUwNTcgaW4gNiBmaWxlKHMp ClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvYmx1ZXovYy84NmU2 ODllYzgwMjAwYTg0NDNlZTY0NmI0ZjY3ZmY0MTFlZGE2NDk3P2JyYW5jaD1yYXdoaWRlCgpMb2c6 ClJlYmFzZSB0byBsYXRlc3QgdXBzdHJlYW0gSEVBRCAoQ2xvc2VzOiAjMjUyODE4MSwgIzI1MjUy OTMpCgotLS0KZGlmZiAtLWdpdCBhLzUuODctYnVnLWZpeGVzLTEucGF0Y2ggYi81Ljg3LWJ1Zy1m aXhlcy0xLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTE1NzgzLi4wMDAw MDAwCi0tLSBhLzUuODctYnVnLWZpeGVzLTEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMzc3 ICswLDAgQEAKLUZyb20gNWJjNmFhNzllNTM3MDBkNTZmYzFmOWY5MzY0NTczYmE0Yzc4ZGE2NSBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEx1aXogQXVndXN0byB2b24gRGVudHogPGx1 aXoudm9uLmRlbnR6QGludGVsLmNvbT4KLURhdGU6IFRodSwgMiBKdWwgMjAyNiAxMTo0Mzo1MiAt MDQwMAotU3ViamVjdDogW1BBVENIIDAxLzE5XSBhZGFwdGVyOiBGaXggY3Jhc2ggb24gZGV2X2Rp c2Nvbm5lY3RlZAotCi1Db21taXQgNWQ4MzZmMWM2OTdjICgiYWRhcHRlcjogRml4IGZhaWxlZCBi b25kaW5nIGF0dGVtcHQgYWZ0ZXIgTEUKLWxpbmsgZGlzY29ubmVjdGlvbiIpIGludHJvZHVjZXMg YSByZWdyZXNzaW9uIHNpbmNlIGl0IGF0dGVtcHRzIHRvCi1jYWxsIGRldmljZV9pc19jb25uZWN0 ZWQgYWZ0ZXIgYWRhcHRlcl9yZW1vdmVfY29ubmVjdGlvbiB3aGljaCBtYXkKLWZyZWUgdGhlIGRl dmljZSBjYXVzaW5nIHRoZSBmb2xsb3dpbmcgYmFja3RyYWNlOgotCi0gICAgIzAgMHg1Y2Q2ZTM4 NDI2MmYgaW4gYnRkX2RldmljZV9iZWFyZXJfaXNfY29ubmVjdGVkIHNyYy9kZXZpY2UuYzozNzU0 Ci0gICAgIzEgMHg1Y2Q2ZTM4NDI2NmYgaW4gYnRkX2RldmljZV9pc19jb25uZWN0ZWQgc3JjL2Rl dmljZS5jOjM3NDUKLSAgICAjMiAweDVjZDZlMzdmODYxNCBpbiBkZXZfZGlzY29ubmVjdGVkIHNy Yy9hZGFwdGVyLmM6ODYyNgotCi1GaXhlczogaHR0cHM6Ly9naXRodWIuY29tL2JsdWV6L2JsdWV6 L2lzc3Vlcy8yMjIxCi0tLS0KLSBzcmMvYWRhcHRlci5jIHwgMjUgKysrKysrKysrKysrKysrKysr KysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygt KQotCi1kaWZmIC0tZ2l0IGEvc3JjL2FkYXB0ZXIuYyBiL3NyYy9hZGFwdGVyLmMKLWluZGV4IDUz OGY2M2UwYTE1My4uMjEwMjI1MjQzZjAwIDEwMDY0NAotLS0tIGEvc3JjL2FkYXB0ZXIuYwotKysr IGIvc3JjL2FkYXB0ZXIuYwotQEAgLTc2MTIsMTIgKzc2MTIsMTYgQEAgc3RydWN0IGFnZW50ICph ZGFwdGVyX2dldF9hZ2VudChzdHJ1Y3QgYnRkX2FkYXB0ZXIgKmFkYXB0ZXIpCi0gc3RhdGljIHZv aWQgYWRhcHRlcl9yZW1vdmVfY29ubmVjdGlvbihzdHJ1Y3QgYnRkX2FkYXB0ZXIgKmFkYXB0ZXIs Ci0gCQkJCQkJc3RydWN0IGJ0ZF9kZXZpY2UgKmRldmljZSwKLSAJCQkJCQl1aW50OF90IGJkYWRk cl90eXBlLAotLQkJCQkJCXVpbnQ4X3QgcmVhc29uKQotKwkJCQkJCXVpbnQ4X3QgcmVhc29uLAot KwkJCQkJCWJvb2wgKnJlbW92ZWQpCi0gewotIAlib29sIHJlbW92ZV9kZXZpY2UgPSBmYWxzZTsK LSAKLSAJREJHKCIiKTsKLSAKLSsJaWYgKHJlbW92ZWQpCi0rCQkqcmVtb3ZlZCA9IGZhbHNlOwot KwotIAlpZiAoIWdfc2xpc3RfZmluZChhZGFwdGVyLT5jb25uZWN0aW9ucywgZGV2aWNlKSkgewot IAkJYnRkX2Vycm9yKGFkYXB0ZXItPmRldl9pZCwgIk5vIG1hdGNoaW5nIGNvbm5lY3Rpb24gZm9y IGRldmljZSIpOwotIAkJcmV0dXJuOwotQEAgLTc2MzgsNiArNzY0Miw5IEBAIHN0YXRpYyB2b2lk IGFkYXB0ZXJfcmVtb3ZlX2Nvbm5lY3Rpb24oc3RydWN0IGJ0ZF9hZGFwdGVyICphZGFwdGVyLAot IAotIAkJREJHKCJSZW1vdmluZyB0ZW1wb3JhcnkgZGV2aWNlICVzIiwgcGF0aCk7Ci0gCQlidGRf YWRhcHRlcl9yZW1vdmVfZGV2aWNlKGFkYXB0ZXIsIGRldmljZSk7Ci0rCi0rCQlpZiAocmVtb3Zl ZCkKLSsJCQkqcmVtb3ZlZCA9IHRydWU7Ci0gCX0KLSB9Ci0gCi1AQCAtNzY2NSwxMCArNzY3Miwx MCBAQCBzdGF0aWMgdm9pZCBhZGFwdGVyX3N0b3Aoc3RydWN0IGJ0ZF9hZGFwdGVyICphZGFwdGVy KQotIAkJdWludDhfdCBhZGRyX3R5cGUgPSBidGRfZGV2aWNlX2dldF9iZGFkZHJfdHlwZShkZXZp Y2UpOwotIAotIAkJYWRhcHRlcl9yZW1vdmVfY29ubmVjdGlvbihhZGFwdGVyLCBkZXZpY2UsIEJE QUREUl9CUkVEUiwKLS0JCQkJCQlNR01UX0RFVl9ESVNDT05OX1VOS05PV04pOwotKwkJCQkJCU1H TVRfREVWX0RJU0NPTk5fVU5LTk9XTiwgTlVMTCk7Ci0gCQlpZiAoYWRkcl90eXBlICE9IEJEQURE Ul9CUkVEUikKLSAJCQlhZGFwdGVyX3JlbW92ZV9jb25uZWN0aW9uKGFkYXB0ZXIsIGRldmljZSwg YWRkcl90eXBlLAotLQkJCQkJCU1HTVRfREVWX0RJU0NPTk5fVU5LTk9XTik7Ci0rCQkJCQkJTUdN VF9ERVZfRElTQ09OTl9VTktOT1dOLCBOVUxMKTsKLSAJfQotIAotIAlnX2RidXNfZW1pdF9wcm9w ZXJ0eV9jaGFuZ2VkKGRidXNfY29ubiwgYWRhcHRlci0+cGF0aCwKLUBAIC04NjE4LDcgKzg2MjUs MTcgQEAgc3RhdGljIHZvaWQgZGV2X2Rpc2Nvbm5lY3RlZChzdHJ1Y3QgYnRkX2FkYXB0ZXIgKmFk YXB0ZXIsCi0gCi0gCWRldmljZSA9IGJ0ZF9hZGFwdGVyX2ZpbmRfZGV2aWNlKGFkYXB0ZXIsICZh ZGRyLT5iZGFkZHIsIGFkZHItPnR5cGUpOwotIAlpZiAoZGV2aWNlKSB7Ci0tCQlhZGFwdGVyX3Jl bW92ZV9jb25uZWN0aW9uKGFkYXB0ZXIsIGRldmljZSwgYWRkci0+dHlwZSwgcmVhc29uKTsKLSsJ CWJvb2wgcmVtb3ZlZDsKLSsKLSsJCWFkYXB0ZXJfcmVtb3ZlX2Nvbm5lY3Rpb24oYWRhcHRlciwg ZGV2aWNlLCBhZGRyLT50eXBlLCByZWFzb24sCi0rCQkJCQkJJnJlbW92ZWQpOwotKwkJLyogTm8g bmVlZCB0byBjb250aW51ZSBpZiBkZXZpY2Ugd2FzIHJlbW92ZWQgZnJvbSB0aGUgYWRhcHRlciwK LSsJCSAqIGFzIGl0IHdpbGwgYmUgZnJlZWQgYW5kIHRoZSBkaXNjb25uZWN0IG5vdGlmeSB3aWxs IGJlIGNhbGxlZAotKwkJICogaW4gdGhlIGRldmljZSBmcmVlIGNhbGxiYWNrLgotKwkJICovCi0r CQlpZiAocmVtb3ZlZCkKLSsJCQlyZXR1cm47Ci0rCi0gCQlkaXNjb25uZWN0X25vdGlmeShkZXZp Y2UsIHJlYXNvbik7Ci0gCX0KLSAKLS0tIAotMi41NC4wCi0KLQotRnJvbSBiODRhYTg5NDkyMTAz N2UxYjFkZTAwZDI4MmRiMmVlMjdhNGNlNjNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJv bTogTHVpeiBBdWd1c3RvIHZvbiBEZW50eiA8bHVpei52b24uZGVudHpAaW50ZWwuY29tPgotRGF0 ZTogTW9uLCA2IEp1bCAyMDI2IDEwOjU5OjI4IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDIvMTld IGwydGVzdDogRml4IGNhbGxpbmcgZ2V0c29ja29wdChCVF9QSFkpCi0KLWdldHNvY2tvcHQoQlRf UEhZKSBleHBlY3RlcyBhIDMyIGJpdHMgYXJndW1lbnQgbm90IGEKLXNpemVvZihzdHJ1Y3Qgc29j a2FkZHJfbDIpLgotLS0tCi0gdG9vbHMvbDJ0ZXN0LmMgfCA1ICsrKystCi0gMSBmaWxlIGNoYW5n ZWQsIDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvdG9vbHMv bDJ0ZXN0LmMgYi90b29scy9sMnRlc3QuYwotaW5kZXggYWEwNWY1MjQ3YzVlLi4wOGQyMjY5OTM2 YjkgMTAwNjQ0Ci0tLS0gYS90b29scy9sMnRlc3QuYwotKysrIGIvdG9vbHMvbDJ0ZXN0LmMKLUBA IC0zNTgsNyArMzU4LDggQEAgc3RhdGljIGludCBwcmludF9pbmZvKGludCBzaywgc3RydWN0IGwy Y2FwX29wdGlvbnMgKm9wdHMpCi0gCXN0cnVjdCBzb2NrYWRkcl9sMiBhZGRyOwotIAlzb2NrbGVu X3Qgb3B0bGVuOwotIAlzdHJ1Y3QgbDJjYXBfY29ubmluZm8gY29ubjsKLS0JaW50IHByaW8sIHBo eTsKLSsJaW50IHByaW87Ci0rCXVpbnQzMl90IHBoeTsKLSAJY2hhciBiYVsxOF07Ci0gCi0gCS8q IEdldCBjb25uZWN0aW9uIGluZm9ybWF0aW9uICovCi1AQCAtNDE0LDYgKzQxNSw4IEBAIHN0YXRp YyBpbnQgcHJpbnRfaW5mbyhpbnQgc2ssIHN0cnVjdCBsMmNhcF9vcHRpb25zICpvcHRzKQotIAkJ Y29ubi5kZXZfY2xhc3NbMF0sIHByaW8sIHJjdmJ1Zik7Ci0gCi0gCi0rCW9wdGxlbiA9IHNpemVv ZihwaHkpOwotKwotIAlpZiAoIWdldHNvY2tvcHQoc2ssIFNPTF9CTFVFVE9PVEgsIEJUX1BIWSwg JnBoeSwgJm9wdGxlbikpIHsKLSAJCXN5c2xvZyhMT0dfSU5GTywgIlN1cHBvcnRlZCBQSFk6IDB4 JTA4eCIsIHBoeSk7Ci0gCQlwcmludF9iaXRmaWVsZCgyLCBwaHksIHBoeV90YWJsZSk7Ci0tLSAK LTIuNTQuMAotCi0KLUZyb20gM2YyODNjOGUwYWIzYmFkMTdlZThjMTNmYTBkY2YyNTFhMTZlNGUy NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IHJhZ2hhdmVuZHJhIDxyYWdoYXZlbmRy YS5yYW9AY29sbGFib3JhLmNvbT4KLURhdGU6IFRodSwgMiBKdWwgMjAyNiAxODozOTowNCArMDUz MAotU3ViamVjdDogW1BBVENIIDAzLzE5XSBzaGFyZWQvYmFwOiBWYWxpZGF0ZSBjb2RlYyBjb25m aWd1cmF0aW9uIHBhcmFtZXRlcnMKLQotVGhpcyBpcyByZXF1aXJlZCBmb3IgUFRTIHRlc3QgQVND Uy9TUi9TUEUvQkktMDctQwotLS0tCi0gc3JjL3NoYXJlZC9iYXAuYyB8IDIyICsrKysrKysrKysr KysrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgMjIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0t Z2l0IGEvc3JjL3NoYXJlZC9iYXAuYyBiL3NyYy9zaGFyZWQvYmFwLmMKLWluZGV4IDFmNjEyMjdm ODJhNy4uNmJjMDQ0YTYzNzU4IDEwMDY0NAotLS0tIGEvc3JjL3NoYXJlZC9iYXAuYwotKysrIGIv c3JjL3NoYXJlZC9iYXAuYwotQEAgLTI5LDYgKzI5LDcgQEAKLSAjaW5jbHVkZSAic3JjL3NoYXJl ZC9nYXR0LWNsaWVudC5oIgotICNpbmNsdWRlICJzcmMvc2hhcmVkL2JhcC5oIgotICNpbmNsdWRl ICJzcmMvc2hhcmVkL2FzY3MuaCIKLSsjaW5jbHVkZSAic3JjL3NoYXJlZC9sYzMuaCIKLSAjaW5j bHVkZSAic3JjL3NoYXJlZC9iYXAtZGVidWcuaCIKLSAKLSAvKiBNYXhpbXVtIG51bWJlciBvZiBB U0UocykgKi8KLUBAIC0zMTU3LDYgKzMxNTgsNyBAQCBzdGF0aWMgdWludDhfdCBlcF9jb25maWco c3RydWN0IGJ0X2JhcF9lbmRwb2ludCAqZXAsIHN0cnVjdCBidF9iYXAgKmJhcCwKLSAJc3RydWN0 IGlvdmVjIGNjOwotIAljb25zdCBzdHJ1Y3QgcXVldWVfZW50cnkgKmU7Ci0gCXN0cnVjdCBidF9i YXBfY29kZWMgY29kZWM7Ci0rCXVpbnQ4X3QgKmx0djsKLSAKLSAJREJHKGJhcCwgImVwICVwIGlk IDB4JTAyeCBkaXIgMHglMDJ4IiwgZXAsIGVwLT5pZCwgZXAtPmRpcik7Ci0gCi1AQCAtMzE5MCw2 ICszMTkyLDE5IEBAIHN0YXRpYyB1aW50OF90IGVwX2NvbmZpZyhzdHJ1Y3QgYnRfYmFwX2VuZHBv aW50ICplcCwgc3RydWN0IGJ0X2JhcCAqYmFwLAotIAkJcmV0dXJuIDA7Ci0gCX0KLSAKLSsJbHR2 ID0gY2MuaW92X2Jhc2U7Ci0rCi0rCWlmIChyZXEtPmNvZGVjLmlkID09IExDM19JRCAmJiBjYy5p b3ZfbGVuID09IDMgJiYKLSsJCQlsdHZbMF0gPT0gMHgwMiAmJgotKwkJCWx0dlsxXSA9PSBMQzNf Q09ORklHX0RVUkFUSU9OICYmCi0rCQkJbHR2WzJdICE9IExDM19DT05GSUdfRFVSQVRJT05fN181 ICYmCi0rCQkJbHR2WzJdICE9IExDM19DT05GSUdfRFVSQVRJT05fMTApIHsKLSsJCWFzY3NfYXNl X3JzcF9hZGQocnNwLCByZXEtPmFzZSwKLSsJCQkJQlRfQVNDU19SU1BfQ09ORl9JTlZBTElELAot KwkJCQlCVF9BU0NTX1JFQVNPTl9DT0RFQ19EQVRBKTsKLSsJCXJldHVybiAwOwotKwl9Ci0rCi0g CXN3aXRjaCAoZXAtPmRpcikgewotIAljYXNlIEJUX0JBUF9TSU5LOgotIAkJZSA9IHF1ZXVlX2dl dF9lbnRyaWVzKGJhcC0+bGRiLT5zaW5rcyk7Ci1AQCAtMzIwNyw2ICszMjIyLDEzIEBAIHN0YXRp YyB1aW50OF90IGVwX2NvbmZpZyhzdHJ1Y3QgYnRfYmFwX2VuZHBvaW50ICplcCwgc3RydWN0IGJ0 X2JhcCAqYmFwLAotIAljb2RlYy5jaWQgPSBsZTE2X3RvX2NwdShyZXEtPmNvZGVjLmNpZCk7Ci0g CWNvZGVjLnZpZCA9IGxlMTZfdG9fY3B1KHJlcS0+Y29kZWMudmlkKTsKLSAKLSsJaWYgKGNvZGVj LmlkICE9IDB4ZmYgJiYgKGNvZGVjLmNpZCB8fCBjb2RlYy52aWQpKSB7Ci0rCQlhc2NzX2FzZV9y c3BfYWRkKHJzcCwgcmVxLT5hc2UsCi0rCQkJCUJUX0FTQ1NfUlNQX0NPTkZfSU5WQUxJRCwKLSsJ CQkJQlRfQVNDU19SRUFTT05fQ09ERUMpOwotKwkJcmV0dXJuIDA7Ci0rCX0KLSsKLSAJZm9yICg7 IGU7IGUgPSBlLT5uZXh0KSB7Ci0gCQlzdHJ1Y3QgYnRfYmFwX3BhYyAqcGFjID0gZS0+ZGF0YTsK LSAKLS0tIAotMi41NC4wCi0KLQotRnJvbSA1YzFjNjc5ZWMzMDRiOGFhZGFhMjg3Y2NhNTliMzg1 ODlkMzM5ZTkxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogcmFnaGF2ZW5kcmEgPHJh Z2hhdmVuZHJhLnJhb0Bjb2xsYWJvcmEuY29tPgotRGF0ZTogVGh1LCAyIEp1bCAyMDI2IDE4OjM5 OjA1ICswNTMwCi1TdWJqZWN0OiBbUEFUQ0ggMDQvMTldIHNoYXJlZC9iYXA6IFZhbGlkYXRlIHVu aWNhc3QgUW9TIGNvbmZpZ3VyYXRpb24KLQotVGhpcyBpcyByZXF1aXJlZCBmb3IgUFRTIHRlc3Rz IEFTQ1MvU1IvU1BFL0JJLTA4LUMgYW5kIEFTQ1MvU1IvU1BFL0JJLTEwLUMuCi0tLS0KLSBzcmMv c2hhcmVkL2JhcC5jIHwgMjYgKysrKysrKysrKysrKysrKysrKysrKysrKysKLSAxIGZpbGUgY2hh bmdlZCwgMjYgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3NoYXJlZC9iYXAuYyBi L3NyYy9zaGFyZWQvYmFwLmMKLWluZGV4IDZiYzA0NGE2Mzc1OC4uZjJiZTdjMDdiYTVkIDEwMDY0 NAotLS0tIGEvc3JjL3NoYXJlZC9iYXAuYwotKysrIGIvc3JjL3NoYXJlZC9iYXAuYwotQEAgLTMz MTYsNiArMzMxNiwzMiBAQCBzdGF0aWMgdWludDhfdCBlcF9xb3Moc3RydWN0IGJ0X2JhcF9lbmRw b2ludCAqZXAsIHN0cnVjdCBidF9iYXAgKmJhcCwKLSAJCXJldHVybiAwOwotIAl9Ci0gCi0rCWlm IChlcC0+c3RyZWFtLT5scGFjLT5jb2RlYy5pZCA9PSBMQzNfSUQgJiYKLSsJCQlxb3MtPnVjYXN0 LmlvX3Fvcy5pbnRlcnZhbCA8IDB4MDAwMGZmKSB7Ci0rCQlhc2NzX2FzZV9yc3BfYWRkKHJzcCwg ZXAtPmlkLAotKwkJCQlCVF9BU0NTX1JTUF9DT05GX0lOVkFMSUQsCi0rCQkJCUJUX0FTQ1NfUkVB U09OX0lOVEVSVkFMKTsKLSsJCXJldHVybiAwOwotKwl9Ci0rCi0rCWlmIChxb3MtPnVjYXN0LmZy YW1pbmcgIT0gQlRfQVNDU19RT1NfRlJBTUlOR19VTkZSQU1FRCAmJgotKwkJCXFvcy0+dWNhc3Qu ZnJhbWluZyAhPSBCVF9BU0NTX1FPU19GUkFNSU5HX0ZSQU1FRCkgewotKwkJYXNjc19hc2VfcnNw X2FkZChyc3AsIGVwLT5pZCwKLSsJCQkJQlRfQVNDU19SU1BfQ09ORl9JTlZBTElELAotKwkJCQlC VF9BU0NTX1JFQVNPTl9GUkFNSU5HKTsKLSsJCXJldHVybiAwOwotKwl9Ci0rCi0rCWlmICghcW9z LT51Y2FzdC5pb19xb3MucGh5cyB8fAotKwkJCShxb3MtPnVjYXN0LmlvX3Fvcy5waHlzICYgfihC VF9CQVBfQ09ORklHX1BIWV8xTSB8Ci0rCQkJCQlCVF9CQVBfQ09ORklHX1BIWV8yTSB8Ci0rCQkJ CQlCVF9CQVBfQ09ORklHX1BIWV9DT0RFQykpKSB7Ci0rCQlhc2NzX2FzZV9yc3BfYWRkKHJzcCwg ZXAtPmlkLAotKwkJCQlCVF9BU0NTX1JTUF9DT05GX0lOVkFMSUQsCi0rCQkJCUJUX0FTQ1NfUkVB U09OX1BIWSk7Ci0rCQlyZXR1cm4gMDsKLSsJfQotKwotIAlyZXR1cm4gc3RyZWFtX3FvcyhlcC0+ c3RyZWFtLCBxb3MsIHJzcCk7Ci0gfQotIAotLS0gCi0yLjU0LjAKLQotCi1Gcm9tIDEzYjE0ZGI5 NTA4OTM4MjcwMWY1NGE0NmU2ZWYwMTIwYjY5ZDRhNjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx Ci1Gcm9tOiBMdWl6IEF1Z3VzdG8gdm9uIERlbnR6IDxsdWl6LnZvbi5kZW50ekBpbnRlbC5jb20+ Ci1EYXRlOiBUdWUsIDcgSnVsIDIwMjYgMTQ6MzQ6MzAgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSCAw NS8xOV0gc2hhcmVkL2JhcDogVXNlIHV0aWxfbHR2X2ZvcmVhY2ggdG8gcHJvY2VzcyBtZXRhZGF0 YQotCi1UaGlzIG1ha2VzIHVzZSBvZiB1dGlsX2x0dl9mb3JlYWNoIHRvIHByb2Nlc3MgdGhlIG1l dGFkYXRhIGVudHJpZXMKLWluc3RlYWQgb2YgYXR0ZW1wdGluZyB0byBpdGVyYXRlIG92ZXIgdGhl IGVudHJpZXMgbWFudWFsbHkgd2hpY2gKLXByb2JhYmx5IG9ubHkgd29ya3Mgd2l0aCB0aGUgZXhh Y3Qgc2FtZSBvcmRlciBhcyB1c2VkIGJ5IFBUUy4KLS0tLQotIHNyYy9zaGFyZWQvYmFwLmMgfCA4 NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KLSAxIGZp bGUgY2hhbmdlZCwgNTkgaW5zZXJ0aW9ucygrKSwgMjUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1n aXQgYS9zcmMvc2hhcmVkL2JhcC5jIGIvc3JjL3NoYXJlZC9iYXAuYwotaW5kZXggZjJiZTdjMDdi YTVkLi5kYjZmNGYyMDQ3ODcgMTAwNjQ0Ci0tLS0gYS9zcmMvc2hhcmVkL2JhcC5jCi0rKysgYi9z cmMvc2hhcmVkL2JhcC5jCi1AQCAtMzQwNCwzNSArMzQwNCw2OSBAQCBzdGF0aWMgdWludDhfdCBz dHJlYW1fZW5hYmxlKHN0cnVjdCBidF9iYXBfc3RyZWFtICpzdHJlYW0sIHN0cnVjdCBpb3ZlYyAq bWV0YSwKLSAJcmV0dXJuIDA7Ci0gfQotIAotLXN0YXRpYyBib29sIGFzY3NfbWV0YWRhdGFfcnNw KHN0cnVjdCBidF9iYXBfZW5kcG9pbnQgKmVwLCBzdHJ1Y3QgaW92ZWMgKm1ldGEsCi0tCQkJCQkJ CXN0cnVjdCBpb3ZlYyAqcnNwKQotK3N0cnVjdCBiYXBfbWV0YWRhdGFfcHJvY2VzcyB7Ci0rCXN0 cnVjdCBidF9iYXBfZW5kcG9pbnQgKmVwOwotKwl1aW50MTZfdCBjb250ZXh0OwotKwlzdHJ1Y3Qg aW92ZWMgKnJzcDsKLSsJdWludDhfdCBlcnI7Ci0rfTsKLSsKLStzdGF0aWMgdm9pZCBiYXBfbWV0 YWRhdGFfcHJvY2VzcyhzaXplX3QgaSwgdWludDhfdCBsLCB1aW50OF90IHQsIHVpbnQ4X3QgKnYs Ci0rCQkJCQl2b2lkICp1c2VyX2RhdGEpCi0gewotLQlzdHJ1Y3QgYnRfbHR2ICpsdHY7Ci0tCXVp bnQxNl90IHN1cHBvcnRlZF9jb250ZXh0ID0gMDsKLSsJc3RydWN0IGJhcF9tZXRhZGF0YV9wcm9j ZXNzICpkYXRhID0gdXNlcl9kYXRhOwotIAl1aW50MTZfdCBjb250ZXh0OwotIAotKwlzd2l0Y2gg KHQpIHsKLSsJY2FzZSBCQVBfTUVUQURBVEFfUFJFRl9DT05URVhUX0xUVl9UWVBFOgotKwkJYnJl YWs7Ci0rCWNhc2UgQkFQX01FVEFEQVRBX0NPTlRFWFRfTFRWX1RZUEU6Ci0rCQlpZiAobCAhPSBz aXplb2YoY29udGV4dCkpIHsKLSsJCQlhc2NzX2FzZV9yc3BfYWRkKGRhdGEtPnJzcCwgZGF0YS0+ ZXAtPmlkLAotKwkJCQkJQlRfQVNDU19SU1BfTUVUQURBVEFfSU5WQUxJRCwgdCk7Ci0rCQkJZGF0 YS0+ZXJyID0gQlRfQVNDU19SU1BfTUVUQURBVEFfSU5WQUxJRDsKLSsJCQlicmVhazsKLSsJCX0K LSsKLSsJCWNvbnRleHQgPSBnZXRfbGUxNih2KTsKLSsJCWlmICghY29udGV4dCB8fCAoY29udGV4 dCAmIH5kYXRhLT5jb250ZXh0KSkgewotKwkJCWFzY3NfYXNlX3JzcF9hZGQoZGF0YS0+cnNwLCBk YXRhLT5lcC0+aWQsCi0rCQkJCQlCVF9BU0NTX1JTUF9NRVRBREFUQV9JTlZBTElELCB0KTsKLSsJ CQlkYXRhLT5lcnIgPSBCVF9BU0NTX1JTUF9NRVRBREFUQV9JTlZBTElEOwotKwkJfQotKwotKwkJ YnJlYWs7Ci0rCWNhc2UgQkFQX01FVEFEQVRBX1BST0dSQU1fSU5GT19MVFZfVFlQRToKLSsJY2Fz ZSBCQVBfTUVUQURBVEFfTEFOR1VBR0VfTFRWX1RZUEU6Ci0rCQlicmVhazsKLSsJZGVmYXVsdDoK LSsJCWFzY3NfYXNlX3JzcF9hZGQoZGF0YS0+cnNwLCBkYXRhLT5lcC0+aWQsCi0rCQkJCQlCVF9B U0NTX1JTUF9NRVRBREFUQV9VTlNVUFBPUlRFRCwKLSsJCQkJCXQpOwotKwkJZGF0YS0+ZXJyID0g QlRfQVNDU19SU1BfTUVUQURBVEFfVU5TVVBQT1JURUQ7Ci0rCQlicmVhazsKLSsJfTsKLSt9Ci0r Ci0rc3RhdGljIGJvb2wgYXNjc19tZXRhZGF0YV9yc3Aoc3RydWN0IGJ0X2JhcF9lbmRwb2ludCAq ZXAsIHN0cnVjdCBidF9iYXAgKmJhcCwKLSsJCQkJc3RydWN0IGlvdmVjICptZXRhLCBzdHJ1Y3Qg aW92ZWMgKnJzcCkKLSt7Ci0rCXN0cnVjdCBiYXBfbWV0YWRhdGFfcHJvY2VzcyBkYXRhID0gewot KwkJLmVwID0gZXAsCi0rCQkucnNwID0gcnNwLAotKwkJLmVyciA9IDAsCi0rCX07Ci0rCi0gCWlm IChlcC0+c3RyZWFtICYmIGVwLT5zdHJlYW0tPmxwYWMpCi0tCQlzdXBwb3J0ZWRfY29udGV4dCA9 IGVwLT5zdHJlYW0tPmxwYWMtPnFvcy5zdXBwb3J0ZWRfY29udGV4dDsKLSsJCWRhdGEuY29udGV4 dCA9IGVwLT5zdHJlYW0tPmxwYWMtPnFvcy5zdXBwb3J0ZWRfY29udGV4dDsKLSAKLS0JbHR2ID0g bWV0YS0+aW92X2Jhc2U7Ci0tCWlmIChtZXRhLT5pb3ZfbGVuID49IHNpemVvZigqbHR2KSAmJgot LQkJCShsdHYtPnR5cGUgPCBCQVBfTUVUQURBVEFfUFJFRl9DT05URVhUX0xUVl9UWVBFIHx8Ci0t CQkJbHR2LT50eXBlID4gQkFQX01FVEFEQVRBX0xBTkdVQUdFX0xUVl9UWVBFKSkgewotLQkJYXNj c19hc2VfcnNwX2FkZChyc3AsIGVwLT5pZCwKLS0JCQkJQlRfQVNDU19SU1BfTUVUQURBVEFfVU5T VVBQT1JURUQsIGx0di0+dHlwZSk7Ci0tCQlyZXR1cm4gdHJ1ZTsKLS0JfQotKwl1dGlsX2x0dl9m b3JlYWNoKG1ldGEtPmlvdl9iYXNlLCBtZXRhLT5pb3ZfbGVuLCBOVUxMLAotKwkJCQliYXBfbWV0 YWRhdGFfcHJvY2VzcywgJmRhdGEpOwotIAotLQlpZiAobWV0YS0+aW92X2xlbiA+PSBzaXplb2Yo Kmx0dikgKyBzaXplb2YoY29udGV4dCkgJiYKLS0JCQlsdHYtPnR5cGUgPT0gQkFQX01FVEFEQVRB X0NPTlRFWFRfTFRWX1RZUEUgJiYKLS0JCQlsdHYtPmxlbiA9PSBzaXplb2YoY29udGV4dCkgKyAx KSB7Ci0tCQljb250ZXh0ID0gZ2V0X2xlMTYobHR2LT52YWx1ZSk7Ci0tCQlpZiAoIWNvbnRleHQg fHwgKGNvbnRleHQgJiB+c3VwcG9ydGVkX2NvbnRleHQpKSB7Ci0tCQkJYXNjc19hc2VfcnNwX2Fk ZChyc3AsIGVwLT5pZCwKLS0JCQkJCUJUX0FTQ1NfUlNQX01FVEFEQVRBX0lOVkFMSUQsCi0tCQkJ CQlsdHYtPnR5cGUpOwotLQkJCXJldHVybiB0cnVlOwotLQkJfQotKwlpZiAoZGF0YS5lcnIpIHsK LSsJCURCRyhiYXAsICJlcCAlcCBpZCAweCUwMnggbWV0YWRhdGEgZXJyb3IgMHglMDJ4IiwgZXAs IGVwLT5pZCwKLSsJCQkJZGF0YS5lcnIpOwotKwkJcmV0dXJuIHRydWU7Ci0gCX0KLSAKLSAJcmV0 dXJuIGZhbHNlOwotQEAgLTM0NjksNyArMzUwMyw3IEBAIHN0YXRpYyB1aW50OF90IGVwX2VuYWJs ZShzdHJ1Y3QgYnRfYmFwX2VuZHBvaW50ICplcCwgc3RydWN0IGJ0X2JhcCAqYmFwLAotIAkJcmV0 dXJuIDA7Ci0gCX0KLSAKLS0JaWYgKGFzY3NfbWV0YWRhdGFfcnNwKGVwLCAmbWV0YSwgcnNwKSkK LSsJaWYgKGFzY3NfbWV0YWRhdGFfcnNwKGVwLCBiYXAsICZtZXRhLCByc3ApKQotIAkJcmV0dXJu IDA7Ci0gCi0gCWlmICghZXAtPnN0cmVhbSkgewotQEAgLTM3MDUsNyArMzczOSw3IEBAIHN0YXRp YyB1aW50OF90IGVwX21ldGFkYXRhKHN0cnVjdCBidF9iYXBfZW5kcG9pbnQgKmVwLAotIAltZXRh Lmlvdl9iYXNlID0gdXRpbF9pb3ZfcHVsbF9tZW0oaW92LCByZXEtPmxlbik7Ci0gCW1ldGEuaW92 X2xlbiA9IHJlcS0+bGVuOwotIAotLQlpZiAoYXNjc19tZXRhZGF0YV9yc3AoZXAsICZtZXRhLCBy c3ApKQotKwlpZiAoYXNjc19tZXRhZGF0YV9yc3AoZXAsIHN0cmVhbS0+YmFwLCAmbWV0YSwgcnNw KSkKLSAJCXJldHVybiAwOwotIAotIAlyZXR1cm4gc3RyZWFtX21ldGFkYXRhKGVwLT5zdHJlYW0s ICZtZXRhLCByc3ApOwotLS0gCi0yLjU0LjAKLQotCi1Gcm9tIDllOWYwYTM3MGM1OTFjMTI2YzM5 MjI1ZjVmNTBiODg5MTVkMTEwOTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSYWh1 bCBTYW1hbmEgPHJhaHVsLnNhbWFuYUBvc3MucXVhbGNvbW0uY29tPgotRGF0ZTogVHVlLCA3IEp1 bCAyMDI2IDEyOjA1OjQzICswNTMwCi1TdWJqZWN0OiBbUEFUQ0ggMDYvMTldIGdvYmV4OiBGaXgg dXNlLWFmdGVyLWZyZWUgd2hlbiBjYW5jZWxsaW5nIFNSTSBQVVQKLSB0cmFuc2ZlcgotCi1JbiBT Uk0gbW9kZSBwdXRfZ2V0X2RhdGEoKSBxdWV1ZXMgdGhlIG5leHQgcGFja2V0IGR1cmluZyBlbmNv ZGluZyBvZgotdGhlIGN1cnJlbnQgb25lLCBzbyB0cmFuc2Zlci0+cmVxX2lkIGFuZCBwZW5kaW5n X3JlcS0+aWQgY2FuIGRpdmVyZ2UuCi1XaGVuIGdfb2JleF9jYW5jZWxfdHJhbnNmZXIoKSBjYW5j ZWxzIHRoZSBxdWV1ZWQgcGFja2V0IGZyb20gdHhfcXVldWUsCi1jYW5jZWxfY29tcGxldGUoKSBm cmVlcyB0aGUgdHJhbnNmZXIgd2hpbGUgcGVuZGluZ19yZXEgc3RpbGwgaG9sZHMgYQotY2FsbGJh Y2sgcG9pbnRpbmcgdG8gaXQuIEl0cyBHX09CRVhfREVGQVVMVF9USU1FT1VUICgxMHMpIHRoZW4g ZmlyZXMKLW9uIGZyZWVkIG1lbW9yeSBjYXVzaW5nIGEgU0lHU0VHVi4KLQotRml4IGJ5IGNsZWFy aW5nIHBlbmRpbmdfcmVxLT5yc3BfZnVuYyBpZiBpdCBiZWxvbmdzIHRvIHRoZSBzYW1lCi10cmFu c2ZlciBiZWluZyBjYW5jZWxsZWQuCi0tLS0KLSBnb2JleC9nb2JleC5jIHwgOCArKysrKysrKwot IDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2dvYmV4L2dv YmV4LmMgYi9nb2JleC9nb2JleC5jCi1pbmRleCBkZjgwZDc5ZjMxYmIuLjEwYTQzODM5MWVhZSAx MDA2NDQKLS0tLSBhL2dvYmV4L2dvYmV4LmMKLSsrKyBiL2dvYmV4L2dvYmV4LmMKLUBAIC04NjEs NiArODYxLDE0IEBAIGdib29sZWFuIGdfb2JleF9jYW5jZWxfcmVxKEdPYmV4ICpvYmV4LCBndWlu dCByZXFfaWQsIGdib29sZWFuIHJlbW92ZV9jYWxsYmFjaykKLSAKLSAJZ19xdWV1ZV9kZWxldGVf bGluayhvYmV4LT50eF9xdWV1ZSwgbWF0Y2gpOwotIAotKwkvKiBJbiBTUk0gbW9kZSBwZW5kaW5n X3JlcSBtYXkgYmVsb25nIHRvIHRoZSBzYW1lIHRyYW5zZmVyIGJ1dCBjYXJyeQotKwkgKiBhIGRp ZmZlcmVudCByZXFfaWQuIENsZWFyIGl0cyBjYWxsYmFjayB0byBhdm9pZCB1c2UtYWZ0ZXItZnJl ZQotKwkgKiB3aGVuIGl0cyB0aW1lb3V0IGZpcmVzIGFmdGVyIHRyYW5zZmVyX2ZyZWUoKS4KLSsJ ICovCi0rCWlmIChyZW1vdmVfY2FsbGJhY2sgJiYgb2JleC0+cGVuZGluZ19yZXEgJiYKLSsJCQkJ b2JleC0+cGVuZGluZ19yZXEtPnJzcF9kYXRhID09IHAtPnJzcF9kYXRhKQotKwkJb2JleC0+cGVu ZGluZ19yZXEtPnJzcF9mdW5jID0gTlVMTDsKLSsKLSBpbW1lZGlhdGVfY29tcGxldGlvbjoKLSAJ cC0+Y2FuY2VsbGVkID0gVFJVRTsKLSAJcC0+b2JleCA9IGdfb2JleF9yZWYob2JleCk7Ci0tLSAK LTIuNTQuMAotCi0KLUZyb20gODJhZjJiZWFmYzM5NTEwZTJjNGE0MzliZjQ0ZmFlYTcxMWQ2NTAz ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFRvbSBDYXRzaG9layA8dG9tY2F0c2hv ZWtAemVlbGFuZG5ldC5ubD4KLURhdGU6IFRodSwgOSBKdWwgMjAyNiAxNDoyNzowNCArMDIwMAot U3ViamVjdDogW1BBVENIIDA3LzE5XSBhZGFwdGVyOiBGaXggY3Jhc2ggb24gVVVJRCBkaXNjb3Zl cnkgZmlsdGVyIG1hdGNoCi0KLWlzX2ZpbHRlcl9tYXRjaCgpIGxvb2tzIHVwIGVhY2ggZGlzY292 ZXJ5LWZpbHRlciBVVUlEIGluIHRoZSBxdWV1ZSBvZgotc2VydmljZXMgcGFyc2VkIGZyb20gYSBk ZXZpY2UgYWR2ZXJ0aXNlbWVudC4gV2hlbiB0aGF0IHNlcnZpY2VzIGxpc3Qgd2FzCi1taWdyYXRl ZCBmcm9tIGEgR1NMaXN0IHRvIGEgc3RydWN0IHF1ZXVlLCB0aGUgcXVldWVfZmluZCgpIGNhbGwg a2VwdAotR0xpYidzIGdfc2xpc3RfZmluZF9jdXN0b20oKSBhcmd1bWVudCBvcmRlciwgcGFzc2lu ZyB0aGUgVVVJRCBzdHJpbmcKLXdoZXJlIHF1ZXVlX2ZpbmQoKSBleHBlY3RzIGEgbWF0Y2ggZnVu Y3Rpb24gYW5kIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9uCi13aGVyZSBpdCBleHBlY3RzIHRoZSBt YXRjaCBkYXRhLgotCi1BcyBhIHJlc3VsdCBxdWV1ZV9maW5kKCkgY2FsbHMgdGhlIFVVSUQgc3Ry aW5nIGFzIGlmIGl0IHdlcmUgYSBmdW5jdGlvbiwKLWp1bXBpbmcgaW50byBub24tZXhlY3V0YWJs ZSBoZWFwIGFuZCBjcmFzaGluZyBibHVldG9vdGhkIHdpdGggU0lHU0VHViBhcwotc29vbiBhcyBh biBhZHZlcnRpc2VtZW50IG1hdGNoZXMgYSBVVUlEIGZpbHRlciBjb25maWd1cmVkIHZpYQotU2V0 RGlzY292ZXJ5RmlsdGVyLgotCi1BZGQgYSBxdWV1ZV9tYXRjaF9mdW5jX3QgaGVscGVyIGFuZCBw YXNzIHRoZSBhcmd1bWVudHMgaW4gdGhlIGNvcnJlY3QKLW9yZGVyLgotCi1GaXhlczogaHR0cHM6 Ly9naXRodWIuY29tL2JsdWV6L2JsdWV6L2lzc3Vlcy8yMjgyCi0tLS0KLSBzcmMvYWRhcHRlci5j IHwgMTEgKysrKysrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAyIGRl bGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2FkYXB0ZXIuYyBiL3NyYy9hZGFwdGVyLmMK LWluZGV4IDIxMDIyNTI0M2YwMC4uNGZmYTMyYTUyYzEzIDEwMDY0NAotLS0tIGEvc3JjL2FkYXB0 ZXIuYwotKysrIGIvc3JjL2FkYXB0ZXIuYwotQEAgLTcxODQsNiArNzE4NCwxNCBAQCBzdGF0aWMg dm9pZCBhZGFwdGVyX21zZF9ub3RpZnkoc3RydWN0IGJ0ZF9hZGFwdGVyICphZGFwdGVyLAotIAl9 Ci0gfQotIAotK3N0YXRpYyBib29sIG1hdGNoX3V1aWQoY29uc3Qgdm9pZCAqZGF0YSwgY29uc3Qg dm9pZCAqbWF0Y2hfZGF0YSkKLSt7Ci0rCWNvbnN0IGNoYXIgKnV1aWQgPSBkYXRhOwotKwljb25z dCBjaGFyICptYXRjaCA9IG1hdGNoX2RhdGE7Ci0rCi0rCXJldHVybiBzdHJjbXAodXVpZCwgbWF0 Y2gpID09IDA7Ci0rfQotKwotIHN0YXRpYyBib29sIGlzX2ZpbHRlcl9tYXRjaChHU0xpc3QgKmRp c2NvdmVyeV9maWx0ZXIsIHN0cnVjdCBlaXJfZGF0YSAqZWlyX2RhdGEsCi0gCQkJCQkJCQlpbnQ4 X3QgcnNzaSkKLSB7Ci1AQCAtNzIxNiw4ICs3MjI0LDcgQEAgc3RhdGljIGJvb2wgaXNfZmlsdGVy X21hdGNoKEdTTGlzdCAqZGlzY292ZXJ5X2ZpbHRlciwgc3RydWN0IGVpcl9kYXRhICplaXJfZGF0 YSwKLSAJCQkJICogdXVpZC4KLSAJCQkJICovCi0gCQkJCWlmIChxdWV1ZV9maW5kKGVpcl9kYXRh LT5zZXJ2aWNlcywKLS0JCQkJCQkJbS0+ZGF0YSwKLS0JCQkJCQkJZ19zdHJjbXApICE9IE5VTEwp Ci0rCQkJCQkJCW1hdGNoX3V1aWQsIG0tPmRhdGEpKQotIAkJCQkJZ290X21hdGNoID0gdHJ1ZTsK LSAJCQl9Ci0gCQl9Ci0tLSAKLTIuNTQuMAotCi0KLUZyb20gYjdkNzFlNTA2Nzg1NmIwZGFmMmYx ZjczYjNmYzk1NDgzMjM2NjEwZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pa2hh aWwgR2F2cmlsb3YgPG1pa2hhaWwudi5nYXZyaWxvdkBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDEw IEp1bCAyMDI2IDEyOjI4OjE3ICswNTAwCi1TdWJqZWN0OiBbUEFUQ0ggMDgvMTldIGEyZHA6IEZp eCBsb2FkaW5nIG9mIHJlbW90ZSBTRVAgZnJvbSBjYWNoZQotCi1Db21taXQgOTEyZjVlZmIwZGQ5 ICgiYTJkcDogRml4IGhhbmRsaW5nIG9mIGNvZGVjIGNhcGFiaWxpdHkgc3RvcmFnZSIpCi1hZGRl ZCBhbiAnaSA+PSAyJyBjb25kaXRpb24gdG8gdGhlIGxvb3AgdGhhdCBwYXJzZXMgdGhlIHN0b3Jl ZCBjb2RlYwotY2FwYWJpbGl0aWVzLiBTaW5jZSBpIHN0YXJ0cyBhdCAwIHRoZSBsb29wIGJvZHkg bmV2ZXIgcnVucywgaSBzdGF5cyAwLAotYW5kIHRoZSBzdWJzZXF1ZW50ICdpZiAoaSAhPSBzaXpl KScgY2hlY2sgZGlzY2FyZHMgZXZlcnkgZW5kcG9pbnQgZm91bmQKLWluIHRoZSBjYWNoZToKLQot ICBsb2FkX3JlbW90ZV9zZXAoKSBVbmFibGUgdG8gbG9hZCBMYXN0VXNlZDogcnNlaWQgNiBub3Qg Zm91bmQKLQotV2l0aCBubyByZW1vdGUgU0VQIGxvYWRlZCwgYXZkdHBfZGlzY292ZXIoKSBjYW4g bm8gbG9uZ2VyIHRha2UgdGhlCi1jYWNoZWQgcGF0aCBhbmQgaXNzdWVzIEFWRFRQIERpc2NvdmVy L0dldCBBbGwgQ2FwYWJpbGl0aWVzIG9uIGV2ZXJ5Ci1yZWNvbm5lY3QsIGFuZCBhMmRwX3NldHVw X3JlbW90ZV9wYXRoKCkgcmV0dXJucyBOVUxMIHNvIHRoZSB0cmFuc3BvcnQKLWVuZHMgdXAgYXQg L29yZy9ibHVlei9oY2lYL2Rldl9ZWS9mZDAgaW5zdGVhZCBvZiAuLi4vc2VwTi9mZDAuCi0KLVRo ZSBjb25kaXRpb24gd2FzIHByZXN1bWFibHkgbWVhbnQgdG8gYm91bmQgdGhlIHdyaXRlcyBpbnRv IGRhdGFbMTI4XSwKLXdoaWNoIHRoZSBvcmlnaW5hbCBjb21taXQgZGlkIG5vdCBhY3R1YWxseSBm aXg6IGNhcHMgaXMgcmVhZCB3aXRoCi0nJTUxMnMnIHNvIHNpemUgLyAyIGNhbiBiZSB1cCB0byAy NTYuIFZhbGlkYXRlIHNpemUgdXAgZnJvbnQgaW5zdGVhZC4KLQotRml4ZXM6IGh0dHBzOi8vZ2l0 aHViLmNvbS9ibHVlei9ibHVlei9pc3N1ZXMvMjI4NQotLS0tCi0gcHJvZmlsZXMvYXVkaW8vYTJk cC5jIHwgMTMgKysrKysrKysrKy0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCsp LCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvcHJvZmlsZXMvYXVkaW8vYTJkcC5jIGIv cHJvZmlsZXMvYXVkaW8vYTJkcC5jCi1pbmRleCBjOGFkYzMxMjI1NjMuLmE0YmExZGFjZjk0MyAx MDA2NDQKLS0tLSBhL3Byb2ZpbGVzL2F1ZGlvL2EyZHAuYwotKysrIGIvcHJvZmlsZXMvYXVkaW8v YTJkcC5jCi1AQCAtMjM5OCw3ICsyMzk4LDE2IEBAIHN0YXRpYyB2b2lkIGxvYWRfcmVtb3RlX3Nl cChzdHJ1Y3QgYTJkcF9jaGFubmVsICpjaGFuLCBHS2V5RmlsZSAqa2V5X2ZpbGUsCi0gCQkJZGVs YXlfcmVwb3J0aW5nID0gZmFsc2U7Ci0gCQl9Ci0gCi0tCQlmb3IgKGkgPSAwLCBzaXplID0gc3Ry bGVuKGNhcHMpOyBpIDwgc2l6ZSAmJiBpID49IDI7IGkgKz0gMikgewotKwkJc2l6ZSA9IHN0cmxl bihjYXBzKTsKLSsKLSsJCWdfZnJlZSh2YWx1ZSk7Ci0rCi0rCQlpZiAoc2l6ZSAlIDIgfHwgc2l6 ZSAvIDIgPiAoaW50KSBzaXplb2YoZGF0YSkpIHsKLSsJCQl3YXJuKCJVbmFibGUgdG8gbG9hZCBF bmRwb2ludDogc2VpZCAldSIsIHJzZWlkKTsKLSsJCQljb250aW51ZTsKLSsJCX0KLSsKLSsJCWZv ciAoaSA9IDA7IGkgPCBzaXplOyBpICs9IDIpIHsKLSAJCQl1aW50OF90ICp0bXAgPSBkYXRhICsg aSAvIDI7Ci0gCi0gCQkJaWYgKHNzY2FuZihjYXBzICsgaSwgIiUwMmhoeCIsIHRtcCkgIT0gMSkg ewotQEAgLTI0MDcsOCArMjQxNiw2IEBAIHN0YXRpYyB2b2lkIGxvYWRfcmVtb3RlX3NlcChzdHJ1 Y3QgYTJkcF9jaGFubmVsICpjaGFuLCBHS2V5RmlsZSAqa2V5X2ZpbGUsCi0gCQkJfQotIAkJfQot IAotLQkJZ19mcmVlKHZhbHVlKTsKLS0KLSAJCWlmIChpICE9IHNpemUpCi0gCQkJY29udGludWU7 Ci0gCi0tLSAKLTIuNTQuMAotCi0KLUZyb20gMmEzZDNiMGU2ZjgzNTE2NzM2YzNjODE5MWZiOTQ0 MDQ3NTE3MTYwMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEx1aXogQXVndXN0byB2 b24gRGVudHogPGx1aXoudm9uLmRlbnR6QGludGVsLmNvbT4KLURhdGU6IEZyaSwgMTAgSnVsIDIw MjYgMTQ6NDc6MTQgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSCAwOS8xOV0gbW9uaXRvcjogRml4IHBy aW50aW5nIHN1YnBhZ2VzIGJpdHMgYWZ0ZXIgYWxsIHN1YnBhZ2VzCi0KLVRoaXMgZml4ZXMgcHJp bnRpbmcgdGhlIGRlY29kZWQgc3VicGFnZSBiaXRmaWVsZHMgYWZ0ZXIgYWxsIHN1YnBhZ2VzCi1y YXRoZXIgdGhlbiBhZnRlciB0aGUgc3VicGFnZSBpdHNlbGY6Ci0KLWJlZm9yZToKLQotICAgICAg ICBGZWF0dXJlc1sxLzBdWzhdOgotICAgICAgICAwMCAwMyAwMCAwMCAwMCAwMCAwMCAwMCAgICAg ICAgICAgICAgICAgICAgICAgICAgLi4uLi4uLi4KLSAgICAgICAgRmVhdHVyZXNbMS8xXVs4XToK LSAgICAgICAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgICAgICAgICAgICAgICAgICAgICAgICAg IC4uLi4uLi4uCi0gICAgICAgIEZlYXR1cmVzWzEvMl1bOF06Ci0gICAgICAgIDAwIDAwIDAwIDAw IDAwIDAwIDAwIDAwICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4uLi4uLgotICAgICAgICAg IFNob3J0ZXIgQ29ubmVjdGlvbiBJbnRlcnZhbHMKLSAgICAgICAgICBTaG9ydGVyIENvbm5lY3Rp b24gSW50ZXJ2YWxzIChIb3N0IFN1cHBvcnQpCi0KLWFmdGVyOgotCi0gICAgICAgIEZlYXR1cmVz WzEvMF1bOF06Ci0gICAgICAgIDAwIDAzIDAwIDAwIDAwIDAwIDAwIDAwICAgICAgICAgICAgICAg ICAgICAgICAgICAuLi4uLi4uLgotICAgICAgICAgIFNob3J0ZXIgQ29ubmVjdGlvbiBJbnRlcnZh bHMKLSAgICAgICAgICBTaG9ydGVyIENvbm5lY3Rpb24gSW50ZXJ2YWxzIChIb3N0IFN1cHBvcnQp Ci0tLS0KLSBtb25pdG9yL3BhY2tldC5jIHwgMzMgKysrKysrKysrKysrKysrKystLS0tLS0tLS0t LS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygt KQotCi1kaWZmIC0tZ2l0IGEvbW9uaXRvci9wYWNrZXQuYyBiL21vbml0b3IvcGFja2V0LmMKLWlu ZGV4IGU2MmFkNGNmYjMzNy4uYmE2ZmY4ZThlNTUxIDEwMDY0NAotLS0tIGEvbW9uaXRvci9wYWNr ZXQuYwotKysrIGIvbW9uaXRvci9wYWNrZXQuYwotQEAgLTI5MjUsMTcgKzI5MjUsMjkgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCBiaXRmaWVsZF9kYXRhIGZlYXR1cmVzX21zZnRbXSA9IHsKLSAKLSBz dGF0aWMgdm9pZCBwcmludF9mZWF0dXJlc19zdWJwYWdlKHVpbnQ4X3QgcGFnZSwgdWludDhfdCBz dWJwYWdlcywKLSAJCQkJCWNvbnN0IHVpbnQ4X3QgKmZlYXR1cmVzX2FycmF5LAotLQkJCQkJdWlu dDY0X3QgKmZlYXR1cmVzKQotKwkJCQkJdWludDY0X3QgKmZlYXR1cmVzLAotKwkJCQkJY29uc3Qg c3RydWN0IGJpdGZpZWxkX2RhdGEgKnRhYmxlKQotIHsKLSAJaW50IGksIGo7Ci0gCWNoYXIgc3Ry WzE4XTsKLSAKLSAJZm9yIChpID0gMDsgaSA8IHN1YnBhZ2VzOyBpKyspIHsKLSsJCXVpbnQ2NF90 IG1hc2s7Ci0rCi0gCQlmb3IgKGogPSAwOyBqIDwgODsgaisrKQotIAkJCWZlYXR1cmVzW2ldIHw9 ICgodWludDY0X3QpIGZlYXR1cmVzX2FycmF5W2kgKiA4ICsgal0pCi0gCQkJCQk8PCAoaiAqIDgp OwotIAkJc3ByaW50ZihzdHIsICJGZWF0dXJlc1sldS8ldV0iLCBwYWdlLCBpKTsKLSAJCXByaW50 X2hleF9maWVsZChzdHIsICZmZWF0dXJlc19hcnJheVtpICogOF0sIDgpOwotKwotKwkJaWYgKCF0 YWJsZSkKLSsJCQljb250aW51ZTsKLSsKLSsJCW1hc2sgPSBwcmludF9iaXRmaWVsZCgyLCBmZWF0 dXJlc1tpXSwgdGFibGUpOwotKwkJaWYgKG1hc2spCi0rCQkJcHJpbnRfdGV4dChDT0xPUl9VTktO T1dOX0ZFQVRVUkVfQklULAotKwkJCQkiICBVbmtub3duIGZlYXR1cmVzICgweCUxNi4xNiIgUFJJ eDY0ICIpIiwKLSsJCQkJbWFzayk7Ci0gCX0KLSB9Ci0gCi1AQCAtMjk0MywxNiArMjk1NSwxMyBA QCBzdGF0aWMgdm9pZCBwcmludF9mZWF0dXJlcyh1aW50OF90IHBhZ2UsIGNvbnN0IHVpbnQ4X3Qg KmZlYXR1cmVzX2FycmF5LAotIAkJCQkJCQkJdWludDhfdCB0eXBlKQotIHsKLSAJY29uc3Qgc3Ry dWN0IGJpdGZpZWxkX2RhdGEgKmZlYXR1cmVzX3RhYmxlID0gTlVMTDsKLS0JdWludDY0X3QgbWFz aywgZmVhdHVyZXNbM10gPSB7fTsKLSsJdWludDY0X3QgZmVhdHVyZXNbM10gPSB7fTsKLSAJdWlu dDhfdCBzdWJwYWdlcyA9IDE7Ci0tCWludCBpOwotIAotIAkvKiBMRSBwYWdlcyAxLTEwIGFyZSAx OTIgYml0cyAoMjQgb2N0ZXRzKSBlYWNoICovCi0gCWlmICh0eXBlID09IDB4MDEgJiYgcGFnZSkK LSAJCXN1YnBhZ2VzID0gMzsKLSAKLS0JcHJpbnRfZmVhdHVyZXNfc3VicGFnZShwYWdlLCBzdWJw YWdlcywgZmVhdHVyZXNfYXJyYXksIGZlYXR1cmVzKTsKLS0KLSAJc3dpdGNoICh0eXBlKSB7Ci0g CWNhc2UgMHgwMDoKLSAJCXN3aXRjaCAocGFnZSkgewotQEAgLTI5ODUsMTYgKzI5OTQsOCBAQCBz dGF0aWMgdm9pZCBwcmludF9mZWF0dXJlcyh1aW50OF90IHBhZ2UsIGNvbnN0IHVpbnQ4X3QgKmZl YXR1cmVzX2FycmF5LAotIAkJYnJlYWs7Ci0gCX0KLSAKLS0JaWYgKCFmZWF0dXJlc190YWJsZSkK LS0JCXJldHVybjsKLS0KLS0JZm9yIChpID0gMDsgaSA8IHN1YnBhZ2VzOyBpKyspIHsKLS0JCW1h c2sgPSBwcmludF9iaXRmaWVsZCgyLCBmZWF0dXJlc1tpXSwgZmVhdHVyZXNfdGFibGUpOwotLQkJ aWYgKG1hc2spCi0tCQkJcHJpbnRfdGV4dChDT0xPUl9VTktOT1dOX0ZFQVRVUkVfQklULAotLQkJ CQkiICBVbmtub3duIGZlYXR1cmVzICgweCUxNi4xNiIgUFJJeDY0ICIpIiwKLS0JCQkJbWFzayk7 Ci0tCX0KLSsJcHJpbnRfZmVhdHVyZXNfc3VicGFnZShwYWdlLCBzdWJwYWdlcywgZmVhdHVyZXNf YXJyYXksIGZlYXR1cmVzLAotKwkJCQkJCQlmZWF0dXJlc190YWJsZSk7Ci0gfQotIAotIHZvaWQg cGFja2V0X3ByaW50X2ZlYXR1cmVzX2xtcChjb25zdCB1aW50OF90ICpmZWF0dXJlcywgdWludDhf dCBwYWdlKQotQEAgLTExMDY1LDcgKzExMDY2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvcGNv ZGVfZGF0YSBvcGNvZGVfdGFibGVbXSA9IHsKLSAJCQkJIkxFIFJlYWQgTWluaW11bSBTdXBwb3J0 ZWQgQ29ubmVjdGlvbiBJbnRlcnZhbCIsCi0gCQkJCW51bGxfY21kLCAwLCB0cnVlLCBsZV9yZWFk X2Nvbm5faW50ZXJ2YWxfcnNwLAotIAkJCQlzaXplb2Yoc3RydWN0IGJ0X2hjaV9yc3BfbGVfcmVh ZF9jb25uX2ludGVydmFsKSwKLS0JCQkJdHJ1ZSB9LAotKwkJCQlmYWxzZSB9LAotIAl7IH0KLSB9 OwotIAotLS0gCi0yLjU0LjAKLQotCi1Gcm9tIDBmMmY1M2ZkMDRkNGViNzM4MDFkZTFmOGNhMTZh NDBlM2IxMmMwMzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQYXVsaSBWaXJ0YW5l biA8cGF2QGlraS5maT4KLURhdGU6IE1vbiwgMTMgSnVsIDIwMjYgMTY6NTA6MjMgKzAzMDAKLVN1 YmplY3Q6IFtQQVRDSCAxMC8xOV0gdG9vbHMvc2NvLXRlc3RlcjogZml4IG1pc3NpbmcgY2xlYXIg b2YgaW9faWQgaW4KLSBjYWxsYmFja3MKLQotRml4ZXMgaXNzdWVzCi0KLUdMaWItQ1JJVElDQUwg Kio6IFNvdXJjZSBJRCAxMjYgd2FzIG5vdCBmb3VuZCB3aGVuIGF0dGVtcHRpbmcgdG8gcmVtb3Zl IGl0Ci0tLS0KLSB0b29scy9zY28tdGVzdGVyLmMgfCAyICsrCi0gMSBmaWxlIGNoYW5nZWQsIDIg aW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvdG9vbHMvc2NvLXRlc3Rlci5jIGIvdG9vbHMv c2NvLXRlc3Rlci5jCi1pbmRleCBhMjE4NWI4ZWYxOTguLmZjYTk5YTkxYzIwZiAxMDA2NDQKLS0t LSBhL3Rvb2xzL3Njby10ZXN0ZXIuYwotKysrIGIvdG9vbHMvc2NvLXRlc3Rlci5jCi1AQCAtMTQx NSw2ICsxNDE1LDggQEAgc3RhdGljIGdib29sZWFuIHNjb19hY2NlcHRfY2IoR0lPQ2hhbm5lbCAq aW8sIEdJT0NvbmRpdGlvbiBjb25kLAotIAlnYm9vbGVhbiByZXQ7Ci0gCUdJT0NoYW5uZWwgKm5l d19pbzsKLSAKLSsJZGF0YS0+aW9faWQgPSAwOwotKwotIAl0ZXN0ZXJfZGVidWcoIk5ldyBjb25u ZWN0aW9uIik7Ci0gCi0gCXNrID0gZ19pb19jaGFubmVsX3VuaXhfZ2V0X2ZkKGlvKTsKLS0tIAot Mi41NC4wCi0KLQotRnJvbSA5MzUzYzBlYTlmNmMxYmFjZmYwMGQ5YWZlZjBkOTYzNzk2ZDg2YmQz IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGF1bGkgVmlydGFuZW4gPHBhdkBpa2ku Zmk+Ci1EYXRlOiBNb24sIDEzIEp1bCAyMDI2IDE2OjUwOjI0ICswMzAwCi1TdWJqZWN0OiBbUEFU Q0ggMTEvMTldIHRvb2xzLzZsb3dwYW4tdGVzdGVyOiBmaXggcmFjZSBpbiBDbGllbnQgQ29ubmVj dCAtCi0gRGlzYWJsZQotCi1JdCdzIHBvc3NpYmxlIGNsaWVudF9sMmNhcF9kaXNjb25uZWN0X2Ni KCkgaXMgY2FsbGVkIGFmdGVyIDZsb3dwYW4KLWRpc2FibGUgb24gY29ubmVjdC4gUHJldmVudCBm YWlsaW5nIHRlc3QgaW4gZmluaXNoX3N0ZXAoKSBpbiB0aGlzIGNhc2UuCi0tLS0KLSB0b29scy82 bG93cGFuLXRlc3Rlci5jIHwgNSArKysrLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMo KyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3Rvb2xzLzZsb3dwYW4tdGVzdGVyLmMg Yi90b29scy82bG93cGFuLXRlc3Rlci5jCi1pbmRleCA5NWZkZjIwNmZjMGMuLjczODcxNGQ2OGRk MSAxMDA2NDQKLS0tLSBhL3Rvb2xzLzZsb3dwYW4tdGVzdGVyLmMKLSsrKyBiL3Rvb2xzLzZsb3dw YW4tdGVzdGVyLmMKLUBAIC02NDgsOCArNjQ4LDExIEBAIHN0YXRpYyB2b2lkIGNsaWVudF9sMmNh cF9jb25uZWN0X2NiKHVpbnQxNl90IGhhbmRsZSwgdWludDE2X3QgY2lkLAotIAlpZiAoY2RhdGEt PmRpc2FibGVfb25fY29ubmVjdCkgewotIAkJaWYgKHdyaXRlXzZsb3dwYW4oIjZsb3dwYW5fZW5h YmxlIiwgIjAiKSkKLSAJCQl0ZXN0ZXJfdGVzdF9mYWlsZWQoKTsKLS0JCWVsc2UKLSsJCWVsc2Ug ewotKwkJCWRhdGEtPmhhbmRsZSA9IDA7Ci0rCQkJZGF0YS0+ZGNpZCA9IDA7Ci0gCQkJdGVzdGVy X3Rlc3RfcGFzc2VkKCk7Ci0rCQl9Ci0gCX0KLSB9Ci0gCi0tLSAKLTIuNTQuMAotCi0KLUZyb20g YmEwOGUwZjZiZTBmMmFjMTdkZTNjMDYwOWM2NGUxZDFhY2FhMTU2MyBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKLUZyb206IFBhdWxpIFZpcnRhbmVuIDxwYXZAaWtpLmZpPgotRGF0ZTogTW9uLCAx MyBKdWwgMjAyNiAxNjo1MDoyNSArMDMwMAotU3ViamVjdDogW1BBVENIIDEyLzE5XSB0b29scy82 bG93cGFuLXRlc3RlcjogYWRkIHRlc3QgZm9yIFZIQ0kgdGVhcmRvd24KLSB3aXRob3V0IGRpc2Fi bGUKLQotQ2hlY2sgNmxvd3BhbiB0ZWFyZG93biB3aGVuIGNvbnRyb2xsZXIgZGlzYXBwZXJzIHdp dGggYWN0aXZlIGRldmljZXMuCi1BZGQgdGVzdAotCi1DbGllbnQgQ29ubmVjdCAtIE5vIERpc2Fi bGUKLS0tLQotIHRvb2xzLzZsb3dwYW4tdGVzdGVyLmMgfCAyOCArKysrKysrKysrKysrKysrKysr KysrKy0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDIzIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25z KC0pCi0KLWRpZmYgLS1naXQgYS90b29scy82bG93cGFuLXRlc3Rlci5jIGIvdG9vbHMvNmxvd3Bh bi10ZXN0ZXIuYwotaW5kZXggNzM4NzE0ZDY4ZGQxLi5hOGZhZjZlYjU5NzYgMTAwNjQ0Ci0tLS0g YS90b29scy82bG93cGFuLXRlc3Rlci5jCi0rKysgYi90b29scy82bG93cGFuLXRlc3Rlci5jCi1A QCAtNzYsNiArNzYsOSBAQCBzdHJ1Y3QgY2xpZW50X2RhdGEgewotIAotIAkvKiBJbnRlcmZhY2Ug bGlzdGVuZXIgc29ja2V0IHR5cGUsIFNPQ0tfUkFXIC8gREdSQU0gKi8KLSAJaW50IHNrX3R5cGU7 Ci0rCi0rCS8qIERvbid0IGRpc2FibGUgNmxvd3BhbiBiZWZvcmUgYWRhcHRlciB0ZWFyZG93biAq LwotKwlib29sIG5vX3RlYXJkb3duX2Rpc2FibGU7Ci0gfTsKLSAKLSBzdGF0aWMgdm9pZCBwcmlu dF9kZWJ1Zyhjb25zdCBjaGFyICpzdHIsIHZvaWQgKnVzZXJfZGF0YSkKLUBAIC0yNjQsNiArMjY3 LDcgQEAgc3RhdGljIHZvaWQgdGVzdF9wcmVfc2V0dXAoY29uc3Qgdm9pZCAqdGVzdF9kYXRhKQot IHN0YXRpYyB2b2lkIHRlc3RfcG9zdF90ZWFyZG93bihjb25zdCB2b2lkICp0ZXN0X2RhdGEpCi0g ewotIAlzdHJ1Y3QgdGVzdF9kYXRhICpkYXRhID0gdGVzdGVyX2dldF9kYXRhKCk7Ci0rCWNvbnN0 IHN0cnVjdCBjbGllbnRfZGF0YSAqY2RhdGEgPSBkYXRhLT50ZXN0X2RhdGE7Ci0gCWludCByZXQ7 Ci0gCi0gCWlmIChkYXRhLT5pb19pZCA+IDApIHsKLUBAIC0yNzYsMTEgKzI4MCwxMyBAQCBzdGF0 aWMgdm9pZCB0ZXN0X3Bvc3RfdGVhcmRvd24oY29uc3Qgdm9pZCAqdGVzdF9kYXRhKQotIAkJZGF0 YS0+cGFja2V0X2ZkID0gLTE7Ci0gCX0KLSAKLS0JcmV0ID0gd3JpdGVfNmxvd3BhbigiNmxvd3Bh bl9lbmFibGUiLCAiMCIpOwotLQlpZiAocmV0IDwgMCkgewotLQkJdGVzdGVyX3dhcm4oIkZhaWxl ZCB0byBkaXNhYmxlIDZsb3dwYW4iKTsKLS0JCXRlc3Rlcl9wb3N0X3RlYXJkb3duX2ZhaWxlZCgp OwotLQkJcmV0dXJuOwotKwlpZiAoIWNkYXRhIHx8ICFjZGF0YS0+bm9fdGVhcmRvd25fZGlzYWJs ZSkgewotKwkJcmV0ID0gd3JpdGVfNmxvd3BhbigiNmxvd3Bhbl9lbmFibGUiLCAiMCIpOwotKwkJ aWYgKHJldCA8IDApIHsKLSsJCQl0ZXN0ZXJfd2FybigiRmFpbGVkIHRvIGRpc2FibGUgNmxvd3Bh biIpOwotKwkJCXRlc3Rlcl9wb3N0X3RlYXJkb3duX2ZhaWxlZCgpOwotKwkJCXJldHVybjsKLSsJ CX0KLSAJfQotIAotIAloY2llbXVfdW5yZWYoZGF0YS0+aGNpZW11KTsKLUBAIC0zMTcsNiArMzIz LDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY2xpZW50X2RhdGEgY2xpZW50X2Nvbm5lY3RfZGlz YWJsZSA9IHsKLSAJLmRpc2FibGVfb25fY29ubmVjdCA9IHRydWUsCi0gfTsKLSAKLStzdGF0aWMg Y29uc3Qgc3RydWN0IGNsaWVudF9kYXRhIGNsaWVudF9jb25uZWN0X25vX2Rpc2FibGUgPSB7Ci0r CS5ub190ZWFyZG93bl9kaXNhYmxlID0gdHJ1ZSwKLSt9OwotKwotIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgY2xpZW50X2RhdGEgY2xpZW50X2Nvbm5lY3RfZGlzY29ubmVjdCA9IHsKLSAJLmRpc2Nvbm5l Y3QgPSB0cnVlLAotIH07Ci1AQCAtNjUzLDYgKzY2MywxMCBAQCBzdGF0aWMgdm9pZCBjbGllbnRf bDJjYXBfY29ubmVjdF9jYih1aW50MTZfdCBoYW5kbGUsIHVpbnQxNl90IGNpZCwKLSAJCQlkYXRh LT5kY2lkID0gMDsKLSAJCQl0ZXN0ZXJfdGVzdF9wYXNzZWQoKTsKLSAJCX0KLSsJfSBlbHNlIGlm IChjZGF0YS0+bm9fdGVhcmRvd25fZGlzYWJsZSkgewotKwkJZGF0YS0+aGFuZGxlID0gMDsKLSsJ CWRhdGEtPmRjaWQgPSAwOwotKwkJdGVzdGVyX3Rlc3RfcGFzc2VkKCk7Ci0gCX0KLSB9Ci0gCi1A QCAtNzA4LDYgKzcyMiwxMCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAkJ CQkJCQlzZXR1cF9wb3dlcmVkX2NsaWVudCwKLSAJCQkJCQkJdGVzdF9jb25uZWN0KTsKLSAKLSsJ dGVzdF82bG93cGFuKCJDbGllbnQgQ29ubmVjdCAtIE5vIERpc2FibGUiLCAmY2xpZW50X2Nvbm5l Y3Rfbm9fZGlzYWJsZSwKLSsJCQkJCQkJc2V0dXBfcG93ZXJlZF9jbGllbnQsCi0rCQkJCQkJCXRl c3RfY29ubmVjdCk7Ci0rCi0gCXRlc3RfNmxvd3BhbigiQ2xpZW50IENvbm5lY3QgLSBEaXNjb25u ZWN0IiwgJmNsaWVudF9jb25uZWN0X2Rpc2Nvbm5lY3QsCi0gCQkJCQkJCXNldHVwX3Bvd2VyZWRf Y2xpZW50LAotIAkJCQkJCQl0ZXN0X2Nvbm5lY3QpOwotLS0gCi0yLjU0LjAKLQotCi1Gcm9tIDFj ZmUyZDhiMmNiYjhjNjQ1NDM5NDY0YTIxNzA1M2QzY2RjNDFlNWYgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCi1Gcm9tOiBQYXVsaSBWaXJ0YW5lbiA8cGF2QGlraS5maT4KLURhdGU6IE1vbiwgMTMg SnVsIDIwMjYgMTY6NTA6MjYgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSCAxMy8xOV0gdG9vbHMvbDJj YXAtdGVzdGVyOiBmaXggU2V0IFBIWSB0ZXN0IHNwdXJpb3VzIGZhaWx1cmVzCi0KLVNldHRpbmcg QlRfUEhZIGRvZXMgbm90IHRha2UgZWZmZWN0IGluc3RhbnRhbmVvdXNseSBhcyBrZXJuZWwgd2Fp dHMgZm9yCi1jb250cm9sbGVyLCBzbyBjaGVja2luZyBnZXRzb2Nrb3B0KCkgc29tZXRpbWVzIGZh aWxzIGhlcmUuIEluIFBIWSB0ZXN0cywKLXVzZSByZXRyeSB3aXRoIHRpbWVvdXQgdG8gY2hlY2sg YWdhaW4gbGF0ZXIuCi0tLS0KLSB0b29scy9sMmNhcC10ZXN0ZXIuYyB8IDE4ICsrKysrKysrKysr LS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygt KQotCi1kaWZmIC0tZ2l0IGEvdG9vbHMvbDJjYXAtdGVzdGVyLmMgYi90b29scy9sMmNhcC10ZXN0 ZXIuYwotaW5kZXggYThjYWMzOTAyYjMyLi4yNzcxYWVlNjU4MTQgMTAwNjQ0Ci0tLS0gYS90b29s cy9sMmNhcC10ZXN0ZXIuYwotKysrIGIvdG9vbHMvbDJjYXAtdGVzdGVyLmMKLUBAIC0yNzcsNyAr Mjc3LDcgQEAgc3RhdGljIHZvaWQgdGVzdF9kYXRhX2ZyZWUodm9pZCAqdGVzdF9kYXRhKQotICNk ZWZpbmUgdGVzdF9sMmNhcChuYW1lLCB0eXBlLCBkYXRhLCBzZXR1cCwgZnVuYykgXAotIAlkbyB7 IFwKLSAJCXN0cnVjdCB0ZXN0X2RhdGEgKnVzZXI7IFwKLS0JCXVzZXIgPSBtYWxsb2Moc2l6ZW9m KHN0cnVjdCB0ZXN0X2RhdGEpKTsgXAotKwkJdXNlciA9IGNhbGxvYygxLCBzaXplb2Yoc3RydWN0 IHRlc3RfZGF0YSkpOyBcCi0gCQlpZiAoIXVzZXIpIFwKLSAJCQlicmVhazsgXAotIAkJdXNlci0+ aGNpZW11X3R5cGUgPSB0eXBlOyBcCi1AQCAtMTY1Nyw4ICsxNjU3LDEwIEBAIHN0YXRpYyBnYm9v bGVhbiBzb2NrZXRfY2xvc2VkX2NiKEdJT0NoYW5uZWwgKmlvLCBHSU9Db25kaXRpb24gY29uZCwK LSAJCXRlc3Rlcl9wcmludCgiZXJyICVkICE9ICVkIGV4cGVjdGVkX2VyciIsIC1lcnIsCi0gCQkJ CQkJbDJkYXRhLT5leHBlY3RfZXJyKTsKLSAJCXRlc3Rlcl90ZXN0X2ZhaWxlZCgpOwotLQl9IGVs c2UKLSsJfSBlbHNlIGlmICghZGF0YS0+c3RlcCkKLSAJCXRlc3Rlcl90ZXN0X3Bhc3NlZCgpOwot KwllbHNlCi0rCQl0ZXN0ZXJfdGVzdF9mYWlsZWQoKTsKLSAKLSAJcmV0dXJuIEZBTFNFOwotIH0K LUBAIC0xNzI5LDEyICsxNzMxLDEzIEBAIHN0YXRpYyBnYm9vbGVhbiBjaGVja19waHkoZ3BvaW50 ZXIgYXJncykKLSAJfQotIAotIAlpZiAobDJkYXRhLT5waHkgJiYgbDJkYXRhLT5waHkgIT0gZGF0 YS0+cGh5cykgewotLQkJdGVzdGVyX3dhcm4oInBoeSAweCUwOHggIT0gMHglMDh4IiwgbDJkYXRh LT5waHksIGRhdGEtPnBoeXMpOwotLQkJdGVzdGVyX3Rlc3RfZmFpbGVkKCk7Ci0tCQlnb3RvIGRv bmU7Ci0rCQl0ZXN0ZXJfcHJpbnQoInBoeSAweCUwOHggIT0gMHglMDh4IiwgbDJkYXRhLT5waHks IGRhdGEtPnBoeXMpOwotKwotKwkJLyogUmV0cnkgKi8KLSsJCXJldHVybiBUUlVFOwotIAl9Ci0g Ci0tCXRlc3Rlcl90ZXN0X3Bhc3NlZCgpOwotKwlkYXRhLT5zdGVwLS07Ci0gCi0gZG9uZToKLSAJ c2h1dGRvd24oc2ssIFNIVVRfV1IpOwotQEAgLTE3NzAsNyArMTc3Myw4IEBAIHN0YXRpYyBpbnQg Y2hlY2tfcGh5cyhzdHJ1Y3QgdGVzdF9kYXRhICpkYXRhLCBpbnQgc2spCi0gCQl9Ci0gCi0gCQkv KiBXYWl0IGZvciB0aGUgUEhZIHRvIGNoYW5nZSAqLwotLQkJZ19pZGxlX2FkZChjaGVja19waHks IElOVF9UT19QVFIoc2spKTsKLSsJCWRhdGEtPnN0ZXArKzsKLSsJCWdfdGltZW91dF9hZGQoNTAs IGNoZWNrX3BoeSwgSU5UX1RPX1BUUihzaykpOwotIAotIAkJcmV0dXJuIC1FSU5QUk9HUkVTUzsK LSAJfQotLS0gCi0yLjU0LjAKLQotCi1Gcm9tIDdmODI2ZDAwM2VlN2JjMDc2OThkZGVjZjgwNDY5 N2Q1NWU3YjljODYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBGZXJvc2UgPGZlcm9z ZTJAZ21haWwuY29tPgotRGF0ZTogU2F0LCAxMSBKdWwgMjAyNiAwMDowMjozMCAtMDcwMAotU3Vi amVjdDogW1BBVENIIDE0LzE5XSBzaGFyZWQvYmFwOiBGaXggcmVqZWN0aW5nIHJlLWF0dGFjaCBv ZiB0aGUgc2FtZSBmZAotCi1XaGVuIHRoZSByZW1vdGUncyBTVFJFQU1JTkcgQVNFIG5vdGlmaWNh dGlvbiBhcnJpdmVzIGJlZm9yZQotaXNvX2Nvbm5lY3RfY2IoKSBmaXJlcywgdGhlIHJhY2UgaGFu ZGxlciBpbiBiYXBfc3RhdGUoKQotKHByb2ZpbGVzL2F1ZGlvL2JhcC5jKSBhbHJlYWR5IGF0dGFj aGVzIHRoZSBpbyB0byB0aGUgc3RyZWFtOyB0aGUKLWNvbW1lbnQgdGhlcmUgbm90ZXMgIk9yZGVy IG9mIFNUUkVBTUlORyBhbmQgaXNvX2Nvbm5lY3RfY2IoKSBpcwotbm9uZGV0ZXJtaW5pc3RpYyIu IFdoZW4gaXNvX2Nvbm5lY3RfY2IoKSB0aGVuIGNhbGxzCi1idF9iYXBfc3RyZWFtX3NldF9pbygp IHdpdGggdGhlIHNhbWUgZmQsIHRoZSBndWFyZCBpbgotYmFwX3VjYXN0X3NldF9pbygpIHNlZXMg YW4gYXR0YWNoZWQsIG5vbi1jb25uZWN0aW5nIGlvIGFuZCByZXR1cm5zCi1mYWxzZS4gaXNvX2Nv bm5lY3RfY2IoKSB0cmVhdHMgdGhhdCBhcyBmYXRhbDoKLQotICBwcm9maWxlcy9hdWRpby9iYXAu Yzppc29fY29ubmVjdF9jYigpIFVuYWJsZSB0byBzZXQgSU8KLSAgcHJvZmlsZXMvYXVkaW8vdHJh bnNwb3J0LmM6YmFwX3N0YXRlX2NoYW5nZWQoKSBVbmFibGUgdG8gZ2V0IHN0cmVhbSBJTwotCi1h bmQgdGVhcnMgZG93biBhIENJUyB0aGF0IGJ0bW9uIHNob3dzIHdhcyBlc3RhYmxpc2hlZCBzdWNj ZXNzZnVsbHkKLShDSVMgRXN0YWJsaXNoZWQgc3RhdHVzIDAsIGJvdGggSVNPIGRhdGEgcGF0aHMg c2V0IHVwKS4gV2l0aCBhIGRldmljZQotd2hvc2UgU1RSRUFNSU5HIG5vdGlmaWNhdGlvbnMgY29u c2lzdGVudGx5IHdpbiB0aGUgcmFjZSwgc3RyZWFtaW5nIGlzCi1uZXZlciBwb3NzaWJsZS4KLQot VHJlYXQgcmUtYXR0YWNoaW5nIHRoZSBmZCB0aGF0IGlzIGFscmVhZHkgYXR0YWNoZWQgYXMgYSBu by1vcCBzdWNjZXNzLAotd2l0aG91dCByZS1ydW5uaW5nIHRoZSBwZXItc3RyZWFtIHN0YXRlIGFj dGlvbnMgKHdoaWNoIHdvdWxkIHNlbmQgYQotZHVwbGljYXRlIFJlY2VpdmVyIFN0YXJ0IFJlYWR5 IHRvIGEgbGlua2VkIHNvdXJjZSBBU0UpLiBBdHRhY2hpbmcgYQotZGlmZmVyZW50IGZkIHRvIGEg bm9uLWNvbm5lY3RpbmcgaW8gcmVtYWlucyBhbiBlcnJvci4KLQotRml4ZXM6IGh0dHBzOi8vZ2l0 aHViLmNvbS9ibHVlei9ibHVlei9pc3N1ZXMvMjIyMwotLS0tCi0gc3JjL3NoYXJlZC9iYXAuYyB8 IDExICsrKysrKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDEgZGVs ZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvYmFwLmMgYi9zcmMvc2hhcmVkL2Jh cC5jCi1pbmRleCBkYjZmNGYyMDQ3ODcuLjE2NjBiOGIyYzFjZiAxMDA2NDQKLS0tLSBhL3NyYy9z aGFyZWQvYmFwLmMKLSsrKyBiL3NyYy9zaGFyZWQvYmFwLmMKLUBAIC0yNTg5LDkgKzI1ODksMTgg QEAgc3RhdGljIHVuc2lnbmVkIGludCBiYXBfYmNhc3RfcmVsZWFzZShzdHJ1Y3QgYnRfYmFwX3N0 cmVhbSAqc3RyZWFtLAotIAotIHN0YXRpYyBib29sIGJhcF91Y2FzdF9zZXRfaW8oc3RydWN0IGJ0 X2JhcF9zdHJlYW0gKnN0cmVhbSwgaW50IGZkKQotIHsKLS0JaWYgKCFzdHJlYW0gfHwgKGZkID49 IDAgJiYgc3RyZWFtLT5pbyAmJiAhc3RyZWFtLT5pby0+Y29ubmVjdGluZykpCi0rCWlmICghc3Ry ZWFtKQotIAkJcmV0dXJuIGZhbHNlOwotIAotKwkvKgotKwkgKiBUaGUgU1RSRUFNSU5HIHN0YXRl IGhhbmRsZXIgbWF5IGFscmVhZHkgaGF2ZSBhdHRhY2hlZCB0aGlzIGlvCi0rCSAqIGlmIHRoZSBy ZW1vdGUncyBBU0Ugbm90aWZpY2F0aW9uIHJhY2VkIGFoZWFkIG9mIGlzb19jb25uZWN0X2NiCi0r CSAqIChzZWUgYmFwX3N0YXRlKCkgaW4gcHJvZmlsZXMvYXVkaW8vYmFwLmMpLiBSZS1hdHRhY2hp bmcgdGhlCi0rCSAqIHNhbWUgZmQgaXMgYSBuby1vcCBzdWNjZXNzOyBvbmx5IGEgZGlmZmVyZW50 IGZkIGlzIGFuIGVycm9yLgotKwkgKi8KLSsJaWYgKGZkID49IDAgJiYgc3RyZWFtLT5pbyAmJiAh c3RyZWFtLT5pby0+Y29ubmVjdGluZykKLSsJCXJldHVybiBzdHJlYW1faW9fZ2V0X2ZkKHN0cmVh bS0+aW8pID09IGZkOwotKwotIAliYXBfc3RyZWFtX3NldF9pbyhzdHJlYW0sIElOVF9UT19QVFIo ZmQpKTsKLSAKLSAJcXVldWVfZm9yZWFjaChzdHJlYW0tPmxpbmtzLCBiYXBfc3RyZWFtX3NldF9p bywgSU5UX1RPX1BUUihmZCkpOwotLS0gCi0yLjU0LjAKLQotCi1Gcm9tIGJjNDlkNjMyMTBmMjNl MDcyNGUwN2YzZTU4MzhhZmYwNWZiYWE0YWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9t OiBQYXVsaSBWaXJ0YW5lbiA8cGF2QGlraS5maT4KLURhdGU6IFNhdCwgMTEgSnVsIDIwMjYgMTI6 MTU6MjUgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSCAxNS8xOV0gbGliOiBhZGQgaXNvX2RhdGFfKiBt YWNyb3MgdG8gaGNpLmgKLQotQWRkIG1hY3JvcyBmb3IgcGFyc2luZyBJU08gRGF0YSBQYWNrZXQg aGVhZGVyIGl0ZW1zLgotLS0tCi0gbGliL2JsdWV0b290aC9oY2kuaCB8IDYgKysrKysrCi0gMSBm aWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbGliL2JsdWV0b290 aC9oY2kuaCBiL2xpYi9ibHVldG9vdGgvaGNpLmgKLWluZGV4IDczMjQ3N2VjNGI1NS4uMmU0YWEz OTRlMTNlIDEwMDY0NAotLS0tIGEvbGliL2JsdWV0b290aC9oY2kuaAotKysrIGIvbGliL2JsdWV0 b290aC9oY2kuaAotQEAgLTIzMzUsNiArMjMzNSwxMiBAQCB0eXBlZGVmIHN0cnVjdCB7Ci0gI2Rl ZmluZSBpc29fZmxhZ3NfdHMoZikJCSgoZiA+PiAyKSAmIDB4MDAwMSkKLSAjZGVmaW5lIGlzb19m bGFnc19wYWNrKHBiLCB0cykJKChwYiAmIDB4MDMpIHwgKCh0cyAmIDB4MDEpIDw8IDIpKQotIAot Ky8qIElTTyBkYXRhIGxlbmd0aCBhbmQgZmxhZ3MgcGFjay91bnBhY2sgKi8KLSsjZGVmaW5lIGlz b19kYXRhX2xlbl9wYWNrKGgsIGYpCSgoX191MTYpICgoKGgpICYgMHgwZmZmKSB8IFwKLSsJCQkJ CQkgICgoKGYpICYgMHgzKSA8PCAxNCkpKQotKyNkZWZpbmUgaXNvX2RhdGFfbGVuKGgpCQkoKGgp ICYgMHgwZmZmKQotKyNkZWZpbmUgaXNvX2RhdGFfZmxhZ3MoaCkJKChoKSA+PiAxNCkKLSsKLSAj ZW5kaWYgLyogX05PX0hDSV9ERUZTICovCi0gCi0gLyogSENJIFNvY2tldCBvcHRpb25zICovCi0t LSAKLTIuNTQuMAotCi0KLUZyb20gMTMwOWQ1ZjkzMDVkMTMyYmMwOTcwNWZmYTRhZmExMTNjNjQ5 MWMyYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFBhdWxpIFZpcnRhbmVuIDxwYXZA aWtpLmZpPgotRGF0ZTogU2F0LCAxMSBKdWwgMjAyNiAxMjoxNToyNiArMDMwMAotU3ViamVjdDog W1BBVENIIDE2LzE5XSBtb25pdG9yOiBmaXggcGFyc2luZyBvZiBJU08gcGFja2V0IGRhdGEgaGVh ZGVyIGFuZCBzbGVuCi0gY2hlY2sKLQotQ2hlY2sgUEIgZmxhZyB0byBzZWUgd2hldGhlciB0aW1l c3RhbXAgYW5kIGRhdGEgaGVhZGVycyBhcmUgcHJlc2VudC4KLQotQ2hlY2sgYm91bmRzIGJlZm9y ZSBhY2Nlc3NpbmcgZGF0YS4gQnVtcCBoYW5kbGVfc3RyIGxlbmd0aCB0byBmaXQKLW1heGltdW0u Ci0KLUJ5dGVzd2FwIGxlbmd0aCB2YWx1ZXMsIGFuZCBtYXNrIFBhY2tldF9TdGF0dXNfRmxhZyBj b3JyZWN0bHkuICBSZW1vdmUKLVNEVSBsZW5ndGggY2hlY2ssIGFzIHdlIGFyZSBub3QgdHJhY2tp bmcgZnJhZ21lbnRhdGlvbi4KLQotRml4ZXM6IGh0dHBzOi8vZ2l0aHViLmNvbS9ibHVlei9ibHVl ei9pc3N1ZXMvMjI5MgotQXNzaXN0ZWQtYnk6IEdMTS01LjIKLS0tLQotIG1vbml0b3IvcGFja2V0 LmMgfCA2OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0K LSAxIGZpbGUgY2hhbmdlZCwgNDYgaW5zZXJ0aW9ucygrKSwgMjMgZGVsZXRpb25zKC0pCi0KLWRp ZmYgLS1naXQgYS9tb25pdG9yL3BhY2tldC5jIGIvbW9uaXRvci9wYWNrZXQuYwotaW5kZXggYmE2 ZmY4ZThlNTUxLi5mYjA1M2UyYjQxM2YgMTAwNjQ0Ci0tLS0gYS9tb25pdG9yL3BhY2tldC5jCi0r KysgYi9tb25pdG9yL3BhY2tldC5jCi1AQCAtMTQ1NDEsMjAgKzE0NTQxLDIzIEBAIHZvaWQgcGFj a2V0X2hjaV9pc29kYXRhKHN0cnVjdCB0aW1ldmFsICp0diwgc3RydWN0IHVjcmVkICpjcmVkLCB1 aW50MTZfdCBpbmRleCwKLSAJCQkJYm9vbCBpbiwgY29uc3Qgdm9pZCAqZGF0YSwgdWludDE2X3Qg c2l6ZSkKLSB7Ci0gCWNvbnN0IHN0cnVjdCBidF9oY2lfaXNvX2hkciAqaGRyID0gZGF0YTsKLS0J Y29uc3Qgc3RydWN0IGJ0X2hjaV9pc29fZGF0YV9zdGFydCAqc3RhcnQ7Ci0tCXVpbnQxNl90IGhh bmRsZSA9IGxlMTZfdG9fY3B1KGhkci0+aGFuZGxlKTsKLS0JdWludDhfdCBmbGFncyA9IGFjbF9m bGFncyhoYW5kbGUpOwotKwl1aW50MTZfdCBoYW5kbGUsIGRsZW47Ci0rCXVpbnQ4X3QgZmxhZ3Ms IHBiX2ZsYWc7Ci0gCWNoYXIgbGFiZWxbOF07Ci0tCWNoYXIgaGFuZGxlX3N0cls1Nl0sIGV4dHJh X3N0cls1MF0sIHRzX3N0clsxNl0gPSB7IDAgfTsKLS0Jc3RydWN0IGluZGV4X2J1Zl9wb29sICpw b29sID0gJmluZGV4X2xpc3RbaW5kZXhdLmlzbzsKLSsJY2hhciBoYW5kbGVfc3RyWzEwMF0sIGV4 dHJhX3N0cls3MF0sIHRzX3N0clsxNl0gPSB7IDAgfTsKLSsJY2hhciBzbl9zdHJbMTZdID0geyAw IH0sIHNsZW5fc3RyWzMyXSA9IHsgMCB9OwotKwlzdHJ1Y3QgaW5kZXhfYnVmX3Bvb2wgKnBvb2w7 Ci0gCXN0cnVjdCBwYWNrZXRfY29ubl9kYXRhICpjb25uOwotIAlzaXplX3QgdHNfc2l6ZSA9IDA7 Ci0rCWJvb2wgaGF2ZV9oZHI7Ci0gCi0gCWlmIChpbmRleCA+PSBNQVhfSU5ERVgpIHsKLSAJCXBy aW50X2ZpZWxkKCJJbnZhbGlkIGluZGV4ICglZCkuIiwgaW5kZXgpOwotIAkJcmV0dXJuOwotIAl9 Ci0gCi0rCXBvb2wgPSAmaW5kZXhfbGlzdFtpbmRleF0uaXNvOwotKwotIAlpbmRleF9saXN0W2lu ZGV4XS5mcmFtZSsrOwotIAotIAlpZiAoc2l6ZSA8IHNpemVvZigqaGRyKSkKLUBAIC0xNDU2Mywx MSArMTQ1NjYsMTggQEAgdm9pZCBwYWNrZXRfaGNpX2lzb2RhdGEoc3RydWN0IHRpbWV2YWwgKnR2 LCBzdHJ1Y3QgdWNyZWQgKmNyZWQsIHVpbnQxNl90IGluZGV4LAotIAlkYXRhICs9IHNpemVvZigq aGRyKTsKLSAJc2l6ZSAtPSBzaXplb2YoKmhkcik7Ci0gCi0rCWhhbmRsZSA9IGxlMTZfdG9fY3B1 KGhkci0+aGFuZGxlKTsKLSsJZmxhZ3MgPSBhY2xfZmxhZ3MoaGFuZGxlKTsKLSsJcGJfZmxhZyA9 IGlzb19mbGFnc19wYihmbGFncyk7Ci0rCWRsZW4gPSBsZTE2X3RvX2NwdShoZHItPmRsZW4pOwot KwotKwloYXZlX2hkciA9IChwYl9mbGFnID09IDB4MDAgfHwgcGJfZmxhZyA9PSAweDAyKTsKLSsK LSAJLyogRGV0ZWN0IGlmIHRpbWVzdGFtcCBmaWVsZCBpcyBwcmVzZXQgKi8KLSAJaWYgKGlzb19m bGFnc190cyhmbGFncykpIHsKLSAJCXRzX3NpemUgPSBzaXplb2YodWludDMyX3QpOwotIAotLQkJ aWYgKHNpemUgPCB0c19zaXplKQotKwkJaWYgKHNpemUgPCB0c19zaXplIHx8ICFoYXZlX2hkcikK LSAJCQlnb3RvIG1hbGZvcm1lZDsKLSAKLSAJCXNucHJpbnRmKHRzX3N0ciwgc2l6ZW9mKHRzX3N0 ciksICIgdHMgJXUiLCBnZXRfbGUzMihkYXRhKSk7Ci1AQCAtMTQ1NzYsMjAgKzE0NTg2LDQwIEBA IHZvaWQgcGFja2V0X2hjaV9pc29kYXRhKHN0cnVjdCB0aW1ldmFsICp0diwgc3RydWN0IHVjcmVk ICpjcmVkLCB1aW50MTZfdCBpbmRleCwKLSAJCXNpemUgLT0gdHNfc2l6ZTsKLSAJfQotIAotLQlz dGFydCA9IGRhdGE7Ci0rCWlmIChoYXZlX2hkcikgewotKwkJY29uc3Qgc3RydWN0IGJ0X2hjaV9p c29fZGF0YV9zdGFydCAqc3RhcnQgPSBkYXRhOwotKwkJdWludDhfdCBzZmxhZ3M7Ci0rCQl1aW50 MTZfdCBzbGVuOwotKwotKwkJaWYgKHNpemUgPCBzaXplb2YoKnN0YXJ0KSkKLSsJCQlnb3RvIG1h bGZvcm1lZDsKLSsKLSsJCXNmbGFncyA9IGlzb19kYXRhX2ZsYWdzKGxlMTZfdG9fY3B1KHN0YXJ0 LT5zbGVuKSk7Ci0rCQlzbGVuID0gaXNvX2RhdGFfbGVuKGxlMTZfdG9fY3B1KHN0YXJ0LT5zbGVu KSk7Ci0rCi0rCQlpZiAoc2xlbikKLSsJCQlzbnByaW50ZihzbGVuX3N0ciwgc2l6ZW9mKHNsZW5f c3RyKSwgIiBzbGVuICV1Iiwgc2xlbik7Ci0rCQlpZiAoc2ZsYWdzKQotKwkJCXNucHJpbnRmKHNs ZW5fc3RyICsgc3RybGVuKHNsZW5fc3RyKSwKLSsJCQkJCXNpemVvZihzbGVuX3N0cikgLSBzdHJs ZW4oc2xlbl9zdHIpLAotKwkJCQkJIiBzZmxhZ3MgJXUiLCBzZmxhZ3MpOwotKwotKwkJc25wcmlu dGYoc25fc3RyLCBzaXplb2Yoc25fc3RyKSwgIiBTTiAldSIsCi0rCQkJCQkJCWxlMTZfdG9fY3B1 KHN0YXJ0LT5zbikpOwotKwl9Ci0rCi0gCWNvbm4gPSBwYWNrZXRfZ2V0X2Nvbm5fZGF0YShoYW5k bGUpOwotIAotIAlpZiAoIWluICYmIHBvb2wtPnRvdGFsKQotLQkJc3ByaW50ZihoYW5kbGVfc3Ry LCAiSGFuZGxlICVkIFsldS8ldV0gU04gJXUiLAotLQkJCWFjbF9oYW5kbGUoaGFuZGxlKSwgKytw b29sLT50eCwgcG9vbC0+dG90YWwsIHN0YXJ0LT5zbik7Ci0rCQlzcHJpbnRmKGhhbmRsZV9zdHIs ICJIYW5kbGUgJWQgWyV1LyV1XSVzIiwKLSsJCQlhY2xfaGFuZGxlKGhhbmRsZSksICsrcG9vbC0+ dHgsIHBvb2wtPnRvdGFsLCBzbl9zdHIpOwotIAllbHNlCi0tCQlzcHJpbnRmKGhhbmRsZV9zdHIs ICJIYW5kbGUgJXUgU04gJXUiLCBhY2xfaGFuZGxlKGhhbmRsZSksCi0tCQkJc3RhcnQtPnNuKTsK LSsJCXNwcmludGYoaGFuZGxlX3N0ciwgIkhhbmRsZSAldSVzIiwgYWNsX2hhbmRsZShoYW5kbGUp LCBzbl9zdHIpOwotIAotIAloYW5kbGVfc3RyX2FwcGVuZF9hZGRyKGhhbmRsZV9zdHIsIGNvbm4p OwotIAotLQlzcHJpbnRmKGV4dHJhX3N0ciwgImZsYWdzIDB4JTIuMnggZGxlbiAldSBzbGVuICV1 JXMiLCBmbGFncywgaGRyLT5kbGVuLAotLQkJCQkJCQlzdGFydC0+c2xlbiwgdHNfc3RyKTsKLSsJ c3ByaW50ZihleHRyYV9zdHIsICJmbGFncyAweCUyLjJ4IGRsZW4gJXUlcyVzIiwgZmxhZ3MsIGRs ZW4sIHNsZW5fc3RyLAotKwkJCQkJCQkJCXRzX3N0cik7Ci0gCi0gCWlmIChjb25uKQotIAkJc3By aW50ZihsYWJlbCwgIiVzIiwgY29ubl90eXBlX3N0cihjb25uLT50eXBlKSk7Ci1AQCAtMTQ2MDEs MTggKzE0NjMxLDExIEBAIHZvaWQgcGFja2V0X2hjaV9pc29kYXRhKHN0cnVjdCB0aW1ldmFsICp0 diwgc3RydWN0IHVjcmVkICpjcmVkLCB1aW50MTZfdCBpbmRleCwKLSAKLSAJaWYgKCFpbikKLSAJ CXBhY2tldF9lbnF1ZXVlX3R4KHR2LCBhY2xfaGFuZGxlKGhhbmRsZSksCi0tCQkJCQlpbmRleF9s aXN0W2luZGV4XS5mcmFtZSwgaGRyLT5kbGVuKTsKLSsJCQkJCWluZGV4X2xpc3RbaW5kZXhdLmZy YW1lLCBkbGVuKTsKLSAKLS0JaWYgKHNpemUgKyB0c19zaXplICE9IGhkci0+ZGxlbikgewotKwlp ZiAoc2l6ZSArIHRzX3NpemUgIT0gZGxlbikgewotIAkJcHJpbnRfdGV4dChDT0xPUl9FUlJPUiwg ImludmFsaWQgcGFja2V0IHNpemUgKCVkICE9ICVkKSIsCi0tCQkJCQkJc2l6ZSArIChpbnQpdHNf c2l6ZSwgaGRyLT5kbGVuKTsKLS0JCXBhY2tldF9oZXhkdW1wKGRhdGEsIHNpemUpOwotLQkJcmV0 dXJuOwotLQl9Ci0tCi0tCWlmIChzaXplICE9IHN0YXJ0LT5zbGVuICsgNCkgewotLQkJcHJpbnRf dGV4dChDT0xPUl9FUlJPUiwgImludmFsaWQgcGFja2V0IHNsZW4gKCVkKzQgIT0gJWQpIiwKLS0J CQkJCQkJc3RhcnQtPnNsZW4sIHNpemUpOwotKwkJCQkJCXNpemUgKyAoaW50KXRzX3NpemUsIGRs ZW4pOwotIAkJcGFja2V0X2hleGR1bXAoZGF0YSwgc2l6ZSk7Ci0gCQlyZXR1cm47Ci0gCX0KLS0t IAotMi41NC4wCi0KLQotRnJvbSA3NDgyYWNlZWNlNzA0NGU2ODhmMjBmMTEzMjYzYjUwYzIxZDY5 ZmI2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP0ZyPUMzPUE5ZD1D Mz1BOXJpYz0yMERhbmlzPz0gPGZyZWRlcmljLmRhbmlzQGNvbGxhYm9yYS5jb20+Ci1EYXRlOiBX ZWQsIDE1IEp1bCAyMDI2IDE3OjUxOjQ0ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMTcvMTldIHBy b2ZpbGVzL2F1ZGlvOiBmaXggVUFGIG9uIGV4dGVybmFsIG1lZGlhIHNlcnZpY2UKLSB0ZWFyZG93 bgotCi1LZWVwIG1lZGlhX2FwcCBlbmRwb2ludC9wbGF5ZXIgcXVldWVzIGluIHN5bmMgd2l0aCBv YmplY3QgbGlmZXRpbWUgdG8KLWF2b2lkIHN0YWxlIHBvaW50ZXJzIGR1cmluZyBwcm94eSByZW1v dmFsLgotCi1XaGVuIGFkbWluIGFsbG93bGlzdCByZWFwcGx5IHJlbW92ZXMgYXVkaW8gc2Vydmlj ZXMsIGVuZHBvaW50L3BsYXllcgotb2JqZWN0cyBtYXkgYmUgZGVzdHJveWVkIHRocm91Z2ggbm9u LXByb3h5IHBhdGhzIGZpcnN0LgotTGF0ZXIgcHJveHlfcmVtb3ZlZF9jYiBjYWxscyBxdWV1ZV9y ZW1vdmVfaWYoKSBhbmQgbWF0Y2hpbmcgYnkgcGF0aAotY2FuIGRlcmVmZXJlbmNlIGZyZWVkIGVu ZHBvaW50L3BsYXllciBtZW1vcnkuCi0KLUZpeCBieToKLS0gYWRkaW5nIG1lZGlhX2FwcCBiYWNr LXJlZmVyZW5jZXMgaW4gbWVkaWFfZW5kcG9pbnQvbG9jYWxfcGxheWVyCi0tIHVubGlua2luZyBm cm9tIGFwcCBxdWV1ZXMgaW5zaWRlIG1lZGlhX2VuZHBvaW50X3JlbW92ZSBvcgotICBsb2NhbF9w bGF5ZXJfcmVtb3ZlCi0tIHNldHRpbmcgb3duZXJzaGlwIHdoZW4gYXBwLXJlZ2lzdGVyaW5nIGVu ZHBvaW50L3BsYXllciBvYmplY3RzCi0KLVRoaXMgcHJldmVudHMgaGVhcC11c2UtYWZ0ZXItZnJl ZSBpbiBtYXRjaF9lbmRwb2ludF9ieV9wYXRoIG9yCi1tYXRjaF9wbGF5ZXJfYnlfcGF0aCBkdXJp bmcgc2VydmljZSBkaXNjb25uZWN0LgotCi1Bc3Npc3RlZC1ieTogR1BUOkdQVC01LjMtQ29kZXgK LS0tLQotIHByb2ZpbGVzL2F1ZGlvL21lZGlhLmMgfCAxNiArKysrKysrKysrKysrKysrCi0gMSBm aWxlIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3Byb2ZpbGVzL2F1 ZGlvL21lZGlhLmMgYi9wcm9maWxlcy9hdWRpby9tZWRpYS5jCi1pbmRleCA1ZDllYTJjYmNiY2Uu Ljk1Zjk1ODBiMDhmZiAxMDA2NDQKLS0tLSBhL3Byb2ZpbGVzL2F1ZGlvL21lZGlhLmMKLSsrKyBi L3Byb2ZpbGVzL2F1ZGlvL21lZGlhLmMKLUBAIC0xMzYsMTIgKzEzNiwxNCBAQCBzdHJ1Y3QgbWVk aWFfZW5kcG9pbnQgewotIAlndWludAkJCXdhdGNoOwotIAlHU0xpc3QJCQkqcmVxdWVzdHM7Ci0g CXN0cnVjdCBtZWRpYV9hZGFwdGVyCSphZGFwdGVyOwotKwlzdHJ1Y3QgbWVkaWFfYXBwCSphcHA7 Ci0gCUdTTGlzdAkJCSp0cmFuc3BvcnRzOwotIAlzdHJ1Y3QgZW5kcG9pbnRfZmVhdHVyZXMJZmVh dHVyZXM7Ci0gfTsKLSAKLSBzdHJ1Y3QgbG9jYWxfcGxheWVyIHsKLSAJc3RydWN0IG1lZGlhX2Fk YXB0ZXIJKmFkYXB0ZXI7Ci0rCXN0cnVjdCBtZWRpYV9hcHAJKmFwcDsKLSAJY2hhcgkJCSpzZW5k ZXI7CS8qIFBsYXllciBEQnVzIGJ1cyBpZCAqLwotIAljaGFyCQkJKnBhdGg7CQkvKiBQbGF5ZXIg b2JqZWN0IHBhdGggKi8KLSAJR0hhc2hUYWJsZQkJKnNldHRpbmdzOwkvKiBQbGF5ZXIgc2V0dGlu Z3MgKi8KLUBAIC0zMDUsNiArMzA3LDExIEBAIHN0YXRpYyB2b2lkIG1lZGlhX2VuZHBvaW50X3Jl bW92ZSh2b2lkICpkYXRhKQotIAl9Ci0gI2VuZGlmCi0gCi0rCWlmIChlbmRwb2ludC0+YXBwKSB7 Ci0rCQlxdWV1ZV9yZW1vdmUoZW5kcG9pbnQtPmFwcC0+ZW5kcG9pbnRzLCBlbmRwb2ludCk7Ci0r CQllbmRwb2ludC0+YXBwID0gTlVMTDsKLSsJfQotKwotIAlpbmZvKCJFbmRwb2ludCB1bnJlZ2lz dGVyZWQ6IHNlbmRlcj0lcyBwYXRoPSVzIiwgZW5kcG9pbnQtPnNlbmRlciwKLSAJCQllbmRwb2lu dC0+cGF0aCk7Ci0gCi1AQCAtMjA3Niw2ICsyMDgzLDExIEBAIHN0YXRpYyB2b2lkIGxvY2FsX3Bs YXllcl9yZW1vdmUodm9pZCAqZGF0YSkKLSB7Ci0gCXN0cnVjdCBsb2NhbF9wbGF5ZXIgKm1wID0g ZGF0YTsKLSAKLSsJaWYgKG1wLT5hcHApIHsKLSsJCXF1ZXVlX3JlbW92ZShtcC0+YXBwLT5wbGF5 ZXJzLCBtcCk7Ci0rCQltcC0+YXBwID0gTlVMTDsKLSsJfQotKwotIAlpbmZvKCJQbGF5ZXIgdW5y ZWdpc3RlcmVkOiBzZW5kZXI9JXMgcGF0aD0lcyIsIG1wLT5zZW5kZXIsIG1wLT5wYXRoKTsKLSAK LSAJbG9jYWxfcGxheWVyX2Rlc3Ryb3kobXApOwotQEAgLTMxNjgsNiArMzE4MCw4IEBAIHN0YXRp YyB2b2lkIGFwcF9yZWdpc3Rlcl9lbmRwb2ludCh2b2lkICpkYXRhLCB2b2lkICp1c2VyX2RhdGEp Ci0gCQlyZXR1cm47Ci0gCX0KLSAKLSsJZW5kcG9pbnQtPmFwcCA9IGFwcDsKLSsKLSAJcXVldWVf cHVzaF90YWlsKGFwcC0+ZW5kcG9pbnRzLCBlbmRwb2ludCk7Ci0gCi0gCXJldHVybjsKLUBAIC0z MTk2LDYgKzMyMTAsOCBAQCBzdGF0aWMgdm9pZCBhcHBfcmVnaXN0ZXJfcGxheWVyKHZvaWQgKmRh dGEsIHZvaWQgKnVzZXJfZGF0YSkKLSAJaWYgKCFwbGF5ZXIpCi0gCQlyZXR1cm47Ci0gCi0rCXBs YXllci0+YXBwID0gYXBwOwotKwotIAlpZiAoZ19kYnVzX3Byb3h5X2dldF9wcm9wZXJ0eShwcm94 eSwgIlBsYXliYWNrU3RhdHVzIiwgJml0ZXIpKSB7Ci0gCQlpZiAoIXNldF9zdGF0dXMocGxheWVy LCAmaXRlcikpCi0gCQkJZ290byBmYWlsOwotLS0gCi0yLjU0LjAKLQotCi1Gcm9tIGIwYWJlMjNm NThmMWVjYzQ0ZDlkMGI2YjMyOGJlNzJkMmQyMTEzYjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx Ci1Gcm9tOiBOYWdhIEJoYXZhbmkgQWtlbGxhIDxuYWdhLmFrZWxsYUBvc3MucXVhbGNvbW0uY29t PgotRGF0ZTogV2VkLCAxNSBKdWwgMjAyNiAxNDowOTo1NiArMDUzMAotU3ViamVjdDogW1BBVENI IDE4LzE5XSBkb2Mvb3JnLmJsdWV6LkNoYW5uZWxTb3VuZGluZzE6QWRkIFVzZWQgYnkgcmVmZXJl bmNlCi0gYW5kIEV4YW1wbGVzCi0KLUFkZCA6VXNlZCBieTogZmllbGQgbGlua2luZyB0byBibHVl dG9vdGhjdGwgY3Mgc3VibWVudSBhbmQKLUV4YW1wbGVzIHNlY3Rpb24gc2hvd2luZyBjb3JyZXNw b25kaW5nIGJsdWV0b290aGN0bCBjcyBjb21tYW5kcwotZm9yIEQtQnVzIG1ldGhvZHMKLS0tLQot IE1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKwotIGRvYy9vcmcuYmx1 ZXouQ2hhbm5lbFNvdW5kaW5nMS5yc3QgfCA1MzQgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysKLSAyIGZpbGVzIGNoYW5nZWQsIDUzNiBpbnNlcnRpb25zKCspCi0gY3JlYXRlIG1vZGUgMTAw NjQ0IGRvYy9vcmcuYmx1ZXouQ2hhbm5lbFNvdW5kaW5nMS5yc3QKLQotZGlmZiAtLWdpdCBhL01h a2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IDc2YzRhYjVkNGY0ZS4uMjNiOTZjMmUzMDNm IDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCi1AQCAtNDA1LDYg KzQwNSw3IEBAIG1hbl9NQU5TICs9IGRvYy9vcmcuYmx1ZXouVGVsZXBob255LjUgZG9jL29yZy5i bHVlei5DYWxsLjUKLSBtYW5fTUFOUyArPSBkb2Mvb3JnLmJsdWV6LlRoZXJtb21ldGVyTWFuYWdl ci41IFwKLSAJCWRvYy9vcmcuYmx1ZXouVGhlcm1vbWV0ZXIuNSBcCi0gCQlkb2Mvb3JnLmJsdWV6 LlRoZXJtb21ldGVyV2F0Y2hlci41Ci0rbWFuX01BTlMgKz0gZG9jL29yZy5ibHVlei5DaGFubmVs U291bmRpbmcxLjUKLSBlbmRpZgotIG1hbnVhbF9wYWdlcyArPSBkb2MvYmx1ZXRvb3RoZC44Ci0g bWFudWFsX3BhZ2VzICs9IGRvYy9oY2kuNyBkb2MvbWdtdC43IGRvYy9sMmNhcC43IGRvYy9yZmNv bW0uNyBkb2Mvc2NvLjcgXAotQEAgLTQ0NSw2ICs0NDYsNyBAQCBtYW51YWxfcGFnZXMgKz0gZG9j L29yZy5ibHVlei5UZWxlcGhvbnkuNSBkb2Mvb3JnLmJsdWV6LkNhbGwuNQotIG1hbnVhbF9wYWdl cyArPSBkb2Mvb3JnLmJsdWV6LlRoZXJtb21ldGVyTWFuYWdlci41IFwKLSAJCWRvYy9vcmcuYmx1 ZXouVGhlcm1vbWV0ZXIuNSBcCi0gCQlkb2Mvb3JnLmJsdWV6LlRoZXJtb21ldGVyV2F0Y2hlci41 Ci0rbWFudWFsX3BhZ2VzICs9IGRvYy9vcmcuYmx1ZXouQ2hhbm5lbFNvdW5kaW5nMS41Ci0gCi0g RVhUUkFfRElTVCArPSBzcmMvZ2VuYnVpbHRpbiBzcmMvYmx1ZXRvb3RoLmNvbmYgXAotIAkJCXNy Yy9tYWluLmNvbmYgcHJvZmlsZXMvbmV0d29yay9uZXR3b3JrLmNvbmYgXAotZGlmZiAtLWdpdCBh L2RvYy9vcmcuYmx1ZXouQ2hhbm5lbFNvdW5kaW5nMS5yc3QgYi9kb2Mvb3JnLmJsdWV6LkNoYW5u ZWxTb3VuZGluZzEucnN0Ci1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMDAw Li5jMDZlMWQ3Mjg1ZTAKLS0tLSAvZGV2L251bGwKLSsrKyBiL2RvYy9vcmcuYmx1ZXouQ2hhbm5l bFNvdW5kaW5nMS5yc3QKLUBAIC0wLDAgKzEsNTM0IEBACi0rPT09PT09PT09PT09PT09PT09PT09 PT09PT0KLStvcmcuYmx1ZXouQ2hhbm5lbFNvdW5kaW5nMQotKz09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0rCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQotK0JsdWVaIEQtQnVzIENoYW5uZWwgU291bmRpbmcgQVBJIGRvY3VtZW50YXRpb24KLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0rCi0rOlZlcnNpb246 IEJsdWVaCi0rOkRhdGU6IEp1bmUgMjAyNgotKzpNYW51YWwgc2VjdGlvbjogNQotKzpNYW51YWwg Z3JvdXA6IExpbnV4IFN5c3RlbSBBZG1pbmlzdHJhdGlvbgotKwotK0ludGVyZmFjZQotKz09PT09 PT09PQotKwotKzpTZXJ2aWNlOglvcmcuYmx1ZXoKLSs6SW50ZXJmYWNlOglvcmcuYmx1ZXouQ2hh bm5lbFNvdW5kaW5nMQotKzpPYmplY3QgcGF0aDoJW3ZhcmlhYmxlIHByZWZpeF0ve2hjaTAsaGNp MSwuLi59L2Rldl9YWF9YWF9YWF9YWF9YWF9YWAotKzpVc2VkIGJ5OgkqKmJsdWV0b290aGN0bCgx KSoqLCAqKmJsdWV0b290aGN0bC1jcygxKSoqCi0rCi0rTWV0aG9kcwotKy0tLS0tLS0KLSsKLSt2 b2lkIFN0YXJ0TWVhc3VyZW1lbnQoZGljdCBwYXJhbXMpCi0rYGBgYGBgYGBgYGBgYGBgYGBgYGBg YGBgYGBgYGBgYGBgYAotKwotK1N0YXJ0cyBhIENoYW5uZWwgU291bmRpbmcgZGlzdGFuY2UgbWVh c3VyZW1lbnQgcHJvY2VkdXJlIG9uIHRoZSBjb25uZWN0ZWQKLStkZXZpY2UuIEFsbCBjb25maWd1 cmF0aW9uIGlzIHN1cHBsaWVkIGluIGEgc2luZ2xlIGBgYXtzdn1gYCBkaWN0aW9uYXJ5LgotK0Fu eSBrZXkgdGhhdCBpcyBvbWl0dGVkIHJldGFpbnMgaXRzIGN1cnJlbnQgdmFsdWUgaW4gdGhlIGRh ZW1vbi4KLSsKLStUaGUgZGV2aWNlIHRvIG1lYXN1cmUgaXMgaWRlbnRpZmllZCBieSB0aGUgRC1C dXMgb2JqZWN0IHBhdGggb24gd2hpY2gKLSt0aGlzIG1ldGhvZCBpcyBjYWxsZWQKLSsoYGBbdmFy aWFibGUgcHJlZml4XS97aGNpMCxoY2kxLC4uLn0vZGV2X1hYX1hYX1hYX1hYX1hYX1hYYGApLgot K09ubHkgb25lIG1lYXN1cmVtZW50IHBlciBkZXZpY2Ugb2JqZWN0IG1heSBiZSBhY3RpdmUgYXQg YSB0aW1lLiBDYWxsaW5nCi0rKipTdGFydE1lYXN1cmVtZW50Kiogd2hpbGUgYSBzZXNzaW9uIGlz IGFscmVhZHkgYWN0aXZlIHJldHVybnMKLStgYG9yZy5ibHVlei5FcnJvci5JblByb2dyZXNzYGAu Ci0rCi0rV2hlbiBgYHJvbGVgYCBpcyBSZWZsZWN0b3IgKGBgMHgwMmBgKSwgdGhpcyBtZXRob2Qg ZG9lcyBub3Qgc3RhcnQgYSBDUwotK2Rpc3RhbmNlIG1lYXN1cmVtZW50OiBhIFJlZmxlY3RvciBu ZXZlciBpbml0aWF0ZXMgYSBwcm9jZWR1cmUgbG9jYWxseSwKLStzbyBpdCBjYW5ub3Qgc3RhcnQg b25lIHZpYSB0aGlzIGNhbGwuIEluc3RlYWQsIGFsbCBnaXZlbiBjb25maWd1cmF0aW9uCi0raXMg YXBwbGllZCBhbmQgc3RvcmVkIHNvIHRoZSBjb250cm9sbGVyIGlzIHJlYWR5IHRvIHJlc3BvbmQg b25jZSBhCi0rcmVtb3RlIEluaXRpYXRvciBiZWdpbnMgYSBwcm9jZWR1cmUsIGFuZCB0aGUgbWV0 aG9kIHJldHVybnMgc3VjY2VzcwotK3dpdGhvdXQgYXJtaW5nIGEgbG9jYWwgbWVhc3VyZW1lbnQg c2Vzc2lvbi4gVGhlIGBgQWN0aXZlYGAgcHJvcGVydHkKLStvbmx5IHRyYW5zaXRpb25zIHRvIGBg dHJ1ZWBgIHdoZW4gYSByZW1vdGUtaW5pdGlhdGVkIHByb2NlZHVyZQotK2FjdHVhbGx5IHN0YXJ0 cywgd2hpY2ggbWF5IGhhcHBlbiB3ZWxsIGFmdGVyIHRoaXMgbWV0aG9kIHJldHVybnMgKG9yCi0r bm90IGF0IGFsbCwgaWYgdGhlIHJlbW90ZSBuZXZlciBpbml0aWF0ZXMgb25lKS4gQ2xpZW50cyB0 aGF0IHdhdGNoCi0rYGBQcm9wZXJ0aWVzQ2hhbmdlZGBgIGZvciBgYEFjdGl2ZWBgIChhcyAqKmJs dWV0b290aGN0bC1jcygxKSoqIGRvZXMpCi0rYXJlIG5vdGlmaWVkIG9mIGJvdGggdGhlIHJlbW90 ZS1pbml0aWF0ZWQgc3RhcnQgYW5kIGl0cyBldmVudHVhbCBzdG9wLgotKwotK0ZvciBJbml0aWF0 b3Igcm9sZSAob3IgQm90aCksIGBgZHVyYXRpb25fc2Vjc2BgIGFuZCB0aGUgZGV2aWNlIG9iamVj dAotK3BhdGggYXJlIHRoZSBwYXJhbWV0ZXJzIHRoYXQgbWF0dGVyIHRvIHN0YXJ0IGEgbWVhc3Vy ZW1lbnQ7IGV2ZXJ5Ci0rb3RoZXIga2V5IGJlbG93IGlzIG9wdGlvbmFsIGNvbmZpZ3VyYXRpb24g d2l0aCBhIHVzYWJsZSBkZWZhdWx0LiBGb3IKLStSZWZsZWN0b3Igcm9sZSwgb25seSBgYHJvbGVg YCwgYGBzeW5jX2FudF9zZWxgYCBhbmQgYGBtYXhfdHhfcG93ZXJgYAotK2FyZSByZXF1aXJlZCBv ciBoYXZlIGFueSBlZmZlY3Qg4oCUIHRoZSByZW1haW5pbmcga2V5cyBhcmUgYWNjZXB0ZWQgYnV0 Ci0rb3RoZXJ3aXNlIHVudXNlZCwgc2luY2Ugbm8gbG9jYWwgcHJvY2VkdXJlIGlzIGFybWVkLgot KwotK1N1cHBvcnRlZCBkaWN0aW9uYXJ5IGtleXM6Ci0rCi0rOnVpbnQzMiBkdXJhdGlvbl9zZWNz IChEZWZhdWx0OiAwKToKLSsKLSsJRHVyYXRpb24gaW4gc2Vjb25kcyBiZWZvcmUgdGhlIG1lYXN1 cmVtZW50IGlzIHN0b3BwZWQKLSsJYXV0b21hdGljYWxseS4gQSB2YWx1ZSBvZiAwIGRpc2FibGVz IHRoZSBhdXRvbWF0aWMgdGltZW91dC4KLSsKLSs6Ynl0ZSByb2xlIChEZWZhdWx0OiAweDAzKToK LSsKLSsJQ1Mgcm9sZSB0byB1c2UgZm9yIHRoZSBtZWFzdXJlbWVudC4KLSsKLSsJUG9zc2libGUg dmFsdWVzOgotKwotKwk6MHgwMTogSW5pdGlhdG9yCi0rCToweDAyOiBSZWZsZWN0b3IKLSsJOjB4 MDM6IEJvdGggKEluaXRpYXRvciBhbmQgUmVmbGVjdG9yKQotKwotKzpieXRlIHN5bmNfYW50X3Nl bCAoRGVmYXVsdDogMHhGRik6Ci0rCi0rCUNTIHN5bmMgYW50ZW5uYSBzZWxlY3Rpb24uIFZhbHVl cyAweEZFIGFuZCAweEZGIGFyZSByZXNlcnZlZAotKwlieSB0aGUgQmx1ZXRvb3RoIHNwZWNpZmlj YXRpb24uCi0rCi0rOmJ5dGUgbWF4X3R4X3Bvd2VyIChEZWZhdWx0OiAweDE0KToKLSsKLSsJTWF4 aW11bSBUWCBwb3dlciBpbiBkQm0sIHRyZWF0ZWQgYXMgYSBzaWduZWQgdmFsdWUuIFZhbGlkCi0r CXJhbmdlIGlzIC0xMjcgdG8gKzIwIGRCbS4KLSsKLSs6Ynl0ZSBjb25maWdfaWQ6Ci0rCi0rCUNT IGNvbmZpZ3VyYXRpb24gaWRlbnRpZmllci4KLSsKLSs6Ynl0ZSBtYWluX21vZGVfdHlwZToKLSsK LSsJTWFpbiBDUyBtb2RlIHVzZWQgaW4gdGhlIHByb2NlZHVyZS4KLSsKLSs6Ynl0ZSBzdWJfbW9k ZV90eXBlOgotKwotKwlTdWItbW9kZSB3aXRoaW4gdGhlIG1haW4gbW9kZS4gU2V0IHRvIDB4RkYg d2hlbiB1bnVzZWQuCi0rCi0rOmJ5dGUgbWFpbl9tb2RlX21pbl9zdGVwczoKLSsKLSsJTWluaW11 bSBudW1iZXIgb2YgQ1MgbWFpbiBtb2RlIHN0ZXBzIHBlciBDUyBzdWJldmVudC4KLSsKLSs6Ynl0 ZSBtYWluX21vZGVfbWF4X3N0ZXBzOgotKwotKwlNYXhpbXVtIG51bWJlciBvZiBDUyBtYWluIG1v ZGUgc3RlcHMgcGVyIENTIHN1YmV2ZW50LgotKwotKzpieXRlIG1haW5fbW9kZV9yZXBldGl0aW9u OgotKwotKwlOdW1iZXIgb2YgdGltZXMgdGhlIG1haW4gbW9kZSBzdGVwcyBhcmUgcmVwZWF0ZWQg aW4gYQotKwlzdWJldmVudC4KLSsKLSs6Ynl0ZSBtb2RlMF9zdGVwczoKLSsKLSsJTnVtYmVyIG9m IENTIE1vZGUgMCBzdGVwcyBhdCB0aGUgYmVnaW5uaW5nIG9mIGVhY2ggc3ViZXZlbnQuCi0rCi0r OmJ5dGUgcnR0X3R5cGVzOgotKwotKwlSb3VuZCBUcmlwIFRpbWUgbWVhc3VyZW1lbnQgdHlwZXMg Zm9yIHRoZSBjb25maWd1cmF0aW9uLgotKwotKzpieXRlIHN5bmNfcGh5OgotKwotKwlQSFkgdXNl ZCBmb3IgQ1Mgc3luYyBwYWNrZXRzLgotKwotKwlQb3NzaWJsZSB2YWx1ZXM6Ci0rCi0rCToweDAx OiBMRSAxTSBQSFkKLSsJOjB4MDI6IExFIDJNIFBIWQotKwotKzphcnJheXtieXRlfSBjaGFubmVs X21hcDoKLSsKLSsJMTAtYnl0ZSBjaGFubmVsIG1hcCBiaXRtYXAuIE11c3QgYmUgZXhhY3RseSAx MCBieXRlcy4KLSsKLSs6Ynl0ZSBjaGFubmVsX21hcF9yZXBldGl0aW9uOgotKwotKwlOdW1iZXIg b2YgY29uc2VjdXRpdmUgcmVwZXRpdGlvbnMgb2YgdGhlIGNoYW5uZWwgbWFwLgotKwotKzpieXRl IGNoYW5uZWxfc2VsZWN0aW9uX3R5cGU6Ci0rCi0rCUFsZ29yaXRobSB1c2VkIGZvciBDUyBjaGFu bmVsIHNlbGVjdGlvbi4KLSsKLSs6Ynl0ZSBjaGFubmVsX3NoYXBlOgotKwotKwlTaGFwZSB1c2Vk IGluIHRoZSBjaGFubmVsIHNlbGVjdGlvbiBhbGdvcml0aG0uCi0rCi0rOmJ5dGUgY2hhbm5lbF9q dW1wOgotKwotKwlDaGFubmVsIGp1bXAgc2l6ZSB1c2VkIGluIHRoZSBjaGFubmVsIHNlbGVjdGlv biBhbGdvcml0aG0uCi0rCi0rOmJ5dGUgY29tcGFuaW9uX3NpZ25hbF9lbmFibGU6Ci0rCi0rCVNl dCB0byAxIHRvIHRyYW5zbWl0IGEgY29tcGFuaW9uIHNpZ25hbCBhbG9uZ3NpZGUgdGhlIENTCi0r CXRvbmUsIDAgdG8gZGlzYWJsZS4KLSsKLSs6dWludDE2IG1heF9wcm9jZWR1cmVfZHVyYXRpb246 Ci0rCi0rCU1heGltdW0gZHVyYXRpb24gb2YgYSBzaW5nbGUgQ1MgbWVhc3VyZW1lbnQgcHJvY2Vk dXJlLgotKwotKzp1aW50MTYgbWluX3BlcmlvZF9iZXR3ZWVuX3Byb2NlZHVyZXM6Ci0rCi0rCU1p bmltdW0gdGltZSBiZXR3ZWVuIGNvbnNlY3V0aXZlIENTIG1lYXN1cmVtZW50IHByb2NlZHVyZXMu Ci0rCi0rOnVpbnQxNiBtYXhfcGVyaW9kX2JldHdlZW5fcHJvY2VkdXJlczoKLSsKLSsJTWF4aW11 bSB0aW1lIGJldHdlZW4gY29uc2VjdXRpdmUgQ1MgbWVhc3VyZW1lbnQgcHJvY2VkdXJlcy4KLSsK LSs6dWludDE2IG1heF9wcm9jZWR1cmVfY291bnQ6Ci0rCi0rCU1heGltdW0gbnVtYmVyIG9mIENT IG1lYXN1cmVtZW50IHByb2NlZHVyZXMgdG8gcnVuLgotKwlBIHZhbHVlIG9mIDAgbWVhbnMgbm8g bGltaXQuCi0rCi0rOmFycmF5e2J5dGV9IG1pbl9zdWJfZXZlbnRfbGVuOgotKwotKwlNaW5pbXVt IENTIHN1YmV2ZW50IGxlbmd0aCBhcyBhIDMtYnl0ZSBsaXR0bGUtZW5kaWFuIHZhbHVlLgotKwlN dXN0IGJlIGV4YWN0bHkgMyBieXRlcy4KLSsKLSs6YXJyYXl7Ynl0ZX0gbWF4X3N1Yl9ldmVudF9s ZW46Ci0rCi0rCU1heGltdW0gQ1Mgc3ViZXZlbnQgbGVuZ3RoIGFzIGEgMy1ieXRlIGxpdHRsZS1l bmRpYW4gdmFsdWUuCi0rCU11c3QgYmUgZXhhY3RseSAzIGJ5dGVzLgotKwotKzpieXRlIHRvbmVf YW50ZW5uYV9jb25maWdfc2VsZWN0aW9uOgotKwotKwlBbnRlbm5hIGNvbmZpZ3VyYXRpb24gdXNl ZCBmb3IgQ1MgdG9uZSBleGNoYW5nZXMuCi0rCi0rOmJ5dGUgcGh5OgotKwotKwlQSFkgdXNlZCBk dXJpbmcgQ1MgcHJvY2VkdXJlcy4KLSsKLSsJUG9zc2libGUgdmFsdWVzOgotKwotKwk6MHgwMTog TEUgMU0gUEhZCi0rCToweDAyOiBMRSAyTSBQSFkKLSsKLSs6Ynl0ZSB0eF9wb3dlcl9kZWx0YToK LSsKLSsJRGlmZmVyZW5jZSBiZXR3ZWVuIHJlbW90ZSBhbmQgbG9jYWwgVFggcG93ZXIgZHVyaW5n IENTCi0rCXByb2NlZHVyZXMuIDB4ODAgaW5kaWNhdGVzIG5vdCBhcHBsaWNhYmxlLgotKwotKzpi eXRlIHByZWZlcnJlZF9wZWVyX2FudGVubmE6Ci0rCi0rCVByZWZlcnJlZCBhbnRlbm5hIHRvIGJl IHVzZWQgYnkgdGhlIHBlZXIgZGV2aWNlLgotKwotKzpieXRlIHNucl9jb250cm9sX2luaXRpYXRv cjoKLSsKLSsJU05SIGNvbnRyb2wgc2V0dGluZyBmb3IgdGhlIGluaXRpYXRvciByb2xlLgotKwkw eEZGIGluZGljYXRlcyBubyBwcmVmZXJlbmNlLgotKwotKzpieXRlIHNucl9jb250cm9sX3JlZmxl Y3RvcjoKLSsKLSsJU05SIGNvbnRyb2wgc2V0dGluZyBmb3IgdGhlIHJlZmxlY3RvciByb2xlLgot KwkweEZGIGluZGljYXRlcyBubyBwcmVmZXJlbmNlLgotKwotK1Bvc3NpYmxlIGVycm9yczoKLSsK LSs6b3JnLmJsdWV6LkVycm9yLkluUHJvZ3Jlc3M6Ci0rOm9yZy5ibHVlei5FcnJvci5JbnZhbGlk QXJnczoKLSs6b3JnLmZyZWVkZXNrdG9wLkRCdXMuRXJyb3IuRmFpbGVkOgotKwotK0V4YW1wbGVz OgotKwotKzpibHVldG9vdGhjdGwgc2V0IHJvbGUgdGhlbiBzdGFydDoKLSsJfCBbY3NdID4gcm9s ZSAweDAxCi0rCXwgW2NzXSA+IG1haW5fbW9kZV90eXBlIDIKLSsJfCBbY3NdID4gc3RhcnQgQUE6 QkI6Q0M6REQ6RUU6RkYKLSs6Ymx1ZXRvb3RoY3RsIHN0YXJ0IHdpdGggZGVmYXVsdHM6Ci0rCXwg W2NzXSA+IHN0YXJ0IFtkZXZfYWRkcl0gW2R1cmF0aW9uX3NlY3NdCi0rOmJsdWV0b290aGN0bCBj b25maWd1cmUgYXMgUmVmbGVjdG9yIChhcHBsaWVzIHNldHRpbmdzLCBkb2VzIG5vdCBzdGFydCBh IG1lYXN1cmVtZW50KToKLSsJfCBbY3NdID4gcm9sZSAweDAyCi0rCXwgW2NzXSA+IHN0YXJ0Ci0r Ci0rdm9pZCBTdG9wTWVhc3VyZW1lbnQodm9pZCkKLStgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBg YAotKwotK1N0b3BzIHRoZSBhY3RpdmUgQ2hhbm5lbCBTb3VuZGluZyBkaXN0YW5jZSBtZWFzdXJl bWVudCBvbiB0aGlzIGRldmljZS4KLStUaGUgZGV2aWNlIGlzIGlkZW50aWZpZWQgYnkgdGhlIEQt QnVzIG9iamVjdCBwYXRoIG9uIHdoaWNoIHRoaXMgbWV0aG9kCi0raXMgY2FsbGVkIOKAlCBubyBz ZXNzaW9uIGlkZW50aWZpZXIgaXMgcmVxdWlyZWQuCi0rCi0rUmFpc2VzIGBgb3JnLmJsdWV6LkVy cm9yLk5vdENvbm5lY3RlZGBgIGlmIG5vIG1lYXN1cmVtZW50IGlzIGFjdGl2ZS4KLSsKLStQb3Nz aWJsZSBlcnJvcnM6Ci0rCi0rOm9yZy5ibHVlei5FcnJvci5Ob3RDb25uZWN0ZWQ6Ci0rOm9yZy5m cmVlZGVza3RvcC5EQnVzLkVycm9yLkZhaWxlZDoKLSsKLStJbiAqKmJsdWV0b290aGN0bCgxKSoq LCB0aGUgZGV2aWNlIGFkZHJlc3MgYXJndW1lbnQgbWF5IGJlIG9taXR0ZWQgb25seQotK3doZW4g YSBzaW5nbGUgbWVhc3VyZW1lbnQgaXMgYWN0aXZlOyBpdCBpcyByZXF1aXJlZCB3aGVuIG11bHRp cGxlCi0rbWVhc3VyZW1lbnRzIGFyZSBhY3RpdmUuCi0rCi0rRXhhbXBsZXM6Ci0rCi0rOmJsdWV0 b290aGN0bCBzdG9wIHRoZSBvbmx5IGFjdGl2ZSBtZWFzdXJlbWVudDoKLSsJfCBbY3NdID4gc3Rv cAotKzpibHVldG9vdGhjdGwgc3RvcCBhIHNwZWNpZmljIGRldmljZSB3aGVuIG11bHRpcGxlIGFy ZSBhY3RpdmU6Ci0rCXwgW2NzXSA+IHN0b3AgQUE6QkI6Q0M6REQ6RUU6RkYKLSsKLStTaWduYWxz Ci0rLS0tLS0tLQotKwotK3ZvaWQgUHJvY2VkdXJlRGF0YShkaWN0IGRhdGEpCi0rYGBgYGBgYGBg YGBgYGBgYGBgYGBgYGBgYGBgYGBgCi0rCi0rRW1pdHRlZCB3aGVuIGEgQ2hhbm5lbCBTb3VuZGlu ZyBtZWFzdXJlbWVudCBwcm9jZWR1cmUgY29tcGxldGVzIG9uIHRoaXMKLStkZXZpY2UsIGNhcnJ5 aW5nIHRoZSByYXcgQ1MgcHJvY2VkdXJlIHJlc3VsdHMgYXMgcmVwb3J0ZWQgYnkgdGhlCi0rY29u dHJvbGxlci4gQ29uc3VtZXJzIHN1Y2ggYXMgYW4gZXh0ZXJuYWwgcmFuZ2luZyBlc3RpbWF0aW9u IGRhZW1vbgotK3N1YnNjcmliZSB0byB0aGlzIHNpZ25hbCB0byBjb21wdXRlIGRpc3RhbmNlIGVz dGltYXRlcy4KLSsKLSs6ZGljdCBkYXRhOgotKwotKwk6aW50MzIgcHJvY2VkdXJlQ291bnRlcjoK LSsKLSsJCVByb2NlZHVyZSBjb3VudGVyIHZhbHVlIGZyb20gdGhlIGNvbnRyb2xsZXIuCi0rCi0r CTppbnQzMiBwcm9jZWR1cmVTZXF1ZW5jZToKLSsKLSsJCVNlcXVlbmNlIG51bWJlciBvZiB0aGlz IHByb2NlZHVyZS4KLSsKLSsJOmJ5dGUgaW5pdGlhdG9yU2VsZWN0ZWRUeFBvd2VyOgotKwotKwkJ VFggcG93ZXIgc2VsZWN0ZWQgYnkgdGhlIEluaXRpYXRvciwgdHJlYXRlZCBhcyBhIHNpZ25lZAot KwkJdmFsdWUuCi0rCi0rCTpieXRlIHJlZmxlY3RvclNlbGVjdGVkVHhQb3dlcjoKLSsKLSsJCVRY IHBvd2VyIHNlbGVjdGVkIGJ5IHRoZSBSZWZsZWN0b3IsIHRyZWF0ZWQgYXMgYSBzaWduZWQKLSsJ CXZhbHVlLgotKwotKwk6dWludDMyIGluaXRpYXRvclN1YmV2ZW50Q291bnQ6Ci0rCi0rCQlOdW1i ZXIgb2Ygc3ViZXZlbnQgcmVzdWx0cyByZXBvcnRlZCBieSB0aGUgSW5pdGlhdG9yLgotKwotKwk6 YXJyYXl7ZGljdH0gaW5pdGlhdG9yU3ViZXZlbnRSZXN1bHRzOgotKwotKwkJUHJlc2VudCBvbmx5 IHdoZW4gYGBpbml0aWF0b3JTdWJldmVudENvdW50YGAgaXMgZ3JlYXRlcgotKwkJdGhhbiAwLiBP bmUgZW50cnkgcGVyIEluaXRpYXRvciBzdWJldmVudCwgZWFjaCB3aXRoIHRoZQotKwkJZmllbGRz IGRlc2NyaWJlZCBpbiBgU3ViZXZlbnQgUmVzdWx0YF8gYmVsb3cuCi0rCi0rCTpieXRlIGluaXRp YXRvclByb2NlZHVyZUFib3J0UmVhc29uOgotKwotKwkJUmVhc29uIHRoZSBJbml0aWF0b3IncyBw cm9jZWR1cmUgd2FzIGFib3J0ZWQsIDAgaWYgbm90Ci0rCQlhYm9ydGVkLgotKwotKwk6dWludDMy IHJlZmxlY3RvclN1YmV2ZW50Q291bnQ6Ci0rCi0rCQlOdW1iZXIgb2Ygc3ViZXZlbnQgcmVzdWx0 cyByZXBvcnRlZCBieSB0aGUgUmVmbGVjdG9yLgotKwotKwk6YXJyYXl7ZGljdH0gcmVmbGVjdG9y U3ViZXZlbnRSZXN1bHRzOgotKwotKwkJUHJlc2VudCBvbmx5IHdoZW4gYGByZWZsZWN0b3JTdWJl dmVudENvdW50YGAgaXMgZ3JlYXRlcgotKwkJdGhhbiAwLiBPbmUgZW50cnkgcGVyIFJlZmxlY3Rv ciBzdWJldmVudCwgZWFjaCB3aXRoIHRoZQotKwkJZmllbGRzIGRlc2NyaWJlZCBpbiBgU3ViZXZl bnQgUmVzdWx0YF8gYmVsb3cuCi0rCi0rCTpieXRlIHJlZmxlY3RvclByb2NlZHVyZUFib3J0UmVh c29uOgotKwotKwkJUmVhc29uIHRoZSBSZWZsZWN0b3IncyBwcm9jZWR1cmUgd2FzIGFib3J0ZWQs IDAgaWYgbm90Ci0rCQlhYm9ydGVkLgotKwotKwk6ZGljdCBwcm9jZWR1cmVFbmFibGVDb25maWc6 Ci0rCi0rCQk6Ynl0ZSB0b25lQW50ZW5uYUNvbmZpZ1NlbGVjdGlvbjoKLSsKLSsJCQlBbnRlbm5h IGNvbmZpZ3VyYXRpb24gdXNlZCBmb3IgQ1MgdG9uZSBleGNoYW5nZXMuCi0rCi0rCQk6dWludDMy IHN1YmV2ZW50TGVuVXM6Ci0rCi0rCQkJU3ViZXZlbnQgbGVuZ3RoIGluIG1pY3Jvc2Vjb25kcy4K LSsKLSsJCTpieXRlIHN1YmV2ZW50c1BlckV2ZW50OgotKwotKwkJCU51bWJlciBvZiBzdWJldmVu dHMgcGVyIGV2ZW50LgotKwotKwkJOnVpbnQzMiBzdWJldmVudEludGVydmFsOgotKwotKwkJCUlu dGVydmFsIGJldHdlZW4gc3ViZXZlbnRzLgotKwotKwkJOnVpbnQzMiBldmVudEludGVydmFsOgot KwotKwkJCUludGVydmFsIGJldHdlZW4gZXZlbnRzLgotKwotKwkJOnVpbnQzMiBwcm9jZWR1cmVJ bnRlcnZhbDoKLSsKLSsJCQlJbnRlcnZhbCBiZXR3ZWVuIHByb2NlZHVyZXMuCi0rCi0rCQk6dWlu dDMyIHByb2NlZHVyZUNvdW50OgotKwotKwkJCU51bWJlciBvZiBwcm9jZWR1cmVzIGNvbmZpZ3Vy ZWQuCi0rCi0rCQk6dWludDMyIG1heFByb2NlZHVyZUxlbjoKLSsKLSsJCQlNYXhpbXVtIHByb2Nl ZHVyZSBsZW5ndGguCi0rCi0rCTpkaWN0IGNzQ29uZmlnUGFyYW06Ci0rCi0rCQk6Ynl0ZSBtb2Rl VHlwZToKLSsKLSsJCQlNYWluIENTIG1vZGUgdXNlZCBpbiB0aGUgcHJvY2VkdXJlLgotKwotKwkJ OmJ5dGUgc3ViTW9kZVR5cGU6Ci0rCi0rCQkJU3ViLW1vZGUgd2l0aGluIHRoZSBtYWluIG1vZGUu Ci0rCi0rCQk6Ynl0ZSBydHRUeXBlOgotKwotKwkJCVJvdW5kIFRyaXAgVGltZSBtZWFzdXJlbWVu dCB0eXBlLgotKwotKwkJOmFycmF5e2J5dGV9IGNoYW5uZWxNYXA6Ci0rCi0rCQkJMTAtYnl0ZSBj aGFubmVsIG1hcCBiaXRtYXAuCi0rCi0rCQk6Ynl0ZSBtaW5NYWluTW9kZVN0ZXBzOgotKwkJOmJ5 dGUgbWF4TWFpbk1vZGVTdGVwczoKLSsJCTpieXRlIG1haW5Nb2RlUmVwZXRpdGlvbjoKLSsJCTpi eXRlIG1vZGUwU3RlcHM6Ci0rCi0rCQk6Ynl0ZSByb2xlOgotKwotKwkJCUNTIHJvbGUgaW4gZWZm ZWN0IGZvciB0aGUgcHJvY2VkdXJlIChJbml0aWF0b3IsCi0rCQkJUmVmbGVjdG9yLCBvciBCb3Ro KS4KLSsKLSsJCTpieXRlIGNzU3luY1BoeVR5cGU6Ci0rCi0rCQkJUEhZIHVzZWQgZm9yIENTIHN5 bmMgcGFja2V0cy4KLSsKLSsJCTpieXRlIGNoYW5uZWxTZWxlY3Rpb25UeXBlOgotKwkJOmJ5dGUg Y2gzY1NoYXBlVHlwZToKLSsJCTpieXRlIGNoM2NKdW1wOgotKwkJOmJ5dGUgY2hhbm5lbE1hcFJl cGV0aXRpb246Ci0rCQk6Ynl0ZSB0SXAxVGltZVVzOgotKwkJOmJ5dGUgdElwMlRpbWVVczoKLSsJ CTpieXRlIHRGY3NUaW1lVXM6Ci0rCQk6Ynl0ZSB0UG1UaW1lVXM6Ci0rCQk6Ynl0ZSB0U3dUaW1l VXNTdXBwb3J0ZWRCeUxvY2FsOgotKwkJOmJ5dGUgdFN3VGltZVVzU3VwcG9ydGVkQnlSZW1vdGU6 Ci0rCi0rCQk6dWludDMyIGJsZUNvbm5JbnRlcnZhbDoKLSsKLSsJCQlCTEUgY29ubmVjdGlvbiBp bnRlcnZhbCBpbiBlZmZlY3QgZHVyaW5nIHRoZQotKwkJCXByb2NlZHVyZS4KLSsKLStTdWJldmVu dCBSZXN1bHQKLSt+fn5+fn5+fn5+fn5+fn5+Ci0rCi0rRWFjaCBlbGVtZW50IG9mIGBgaW5pdGlh dG9yU3ViZXZlbnRSZXN1bHRzYGAgYW5kCi0rYGByZWZsZWN0b3JTdWJldmVudFJlc3VsdHNgYCBp cyBhIGRpY3Qgd2l0aCB0aGUgZm9sbG93aW5nIGZpZWxkczoKLSsKLSs6aW50MzIgc3RhcnRBY2xD b25uRXZ0Q291bnRlcjoKLSsKLSsJQUNMIGNvbm5lY3Rpb24gZXZlbnQgY291bnRlciBhdCB0aGUg c3RhcnQgb2YgdGhlIHN1YmV2ZW50LgotKwotKzppbnQzMiBmcmVxQ29tcDoKLSsKLSsJRnJlcXVl bmN5IGNvbXBlbnNhdGlvbiB2YWx1ZS4KLSsKLSs6Ynl0ZSByZWZQd3JMdmw6Ci0rCi0rCVJlZmVy ZW5jZSBwb3dlciBsZXZlbCwgdHJlYXRlZCBhcyBhIHNpZ25lZCB2YWx1ZS4KLSsKLSs6Ynl0ZSBu dW1BbnRQYXRoczoKLSsKLSsJTnVtYmVyIG9mIGFudGVubmEgcGF0aHMgdXNlZC4KLSsKLSs6Ynl0 ZSBzdWJldmVudEFib3J0UmVhc29uOgotKwotKwlSZWFzb24gdGhlIHN1YmV2ZW50IHdhcyBhYm9y dGVkLCAwIGlmIG5vdCBhYm9ydGVkLgotKwotKzp1aW50NjQgdGltZXN0YW1wTmFub3M6Ci0rCi0r CVRpbWVzdGFtcCBvZiB0aGUgc3ViZXZlbnQgcmVzdWx0LCBpbiBuYW5vc2Vjb25kcy4KLSsKLSs6 dWludDMyIG51bVN0ZXBzOgotKwotKwlOdW1iZXIgb2Ygc3RlcHMgcmVwb3J0ZWQgaW4gdGhpcyBz dWJldmVudC4KLSsKLSs6YXJyYXl7ZGljdH0gc3RlcERhdGE6Ci0rCi0rCU9uZSBlbnRyeSBwZXIg c3RlcC4gRWFjaCBlbnRyeSBoYXM6Ci0rCi0rCTpieXRlIHN0ZXBNb2RlOgotKwotKwkJQ1Mgc3Rl cCBtb2RlICgwLTMpLgotKwotKwk6Ynl0ZSBzdGVwQ2hhbm5lbDoKLSsKLSsJCUNoYW5uZWwgdXNl ZCBmb3IgdGhlIHN0ZXAuCi0rCi0rCTpkaWN0IG1vZGVaZXJvRGF0YToKLSsKLSsJCVByZXNlbnQg d2hlbiBgYHN0ZXBNb2RlYGAgaXMgMC4KLSsKLSsJCTpieXRlIHBhY2tldFF1YWxpdHk6Ci0rCQk6 Ynl0ZSBwYWNrZXRSc3NpRGJtOgotKwkJOmJ5dGUgcGFja2V0QW50ZW5uYToKLSsKLSsJCTppbnQz MiBpbml0aWF0b3JNZWFzdXJlZEZyZXFPZmZzZXQ6Ci0rCi0rCQkJRnJlcXVlbmN5IG9mZnNldCBt ZWFzdXJlZCBieSB0aGUgSW5pdGlhdG9yLgotKwotKwk6ZGljdCBtb2RlT25lRGF0YToKLSsKLSsJ CVByZXNlbnQgd2hlbiBgYHN0ZXBNb2RlYGAgaXMgMS4KLSsKLSsJCTpieXRlIHBhY2tldFF1YWxp dHk6Ci0rCQk6Ynl0ZSBwYWNrZXROYWRtOgotKwkJOmJ5dGUgcGFja2V0UnNzaURibToKLSsKLSsJ CTppbnQzMiB0b2FUb2RJbml0aWF0b3I6Ci0rCi0rCQkJVGltZSBvZiBBcnJpdmFsIC8gVGltZSBv ZiBEZXBhcnR1cmUgYXQgdGhlCi0rCQkJSW5pdGlhdG9yLgotKwotKwkJOmludDMyIHRvZFRvYVJl ZmxlY3RvcjoKLSsKLSsJCQlUaW1lIG9mIERlcGFydHVyZSAvIFRpbWUgb2YgQXJyaXZhbCBhdCB0 aGUKLSsJCQlSZWZsZWN0b3IuCi0rCi0rCQk6Ynl0ZSBwYWNrZXRBbnRlbm5hOgotKwotKwkJOmFy cmF5e2ludDMyfSBwYWNrZXRQY3QxOgotKwotKwkJCUluLXBoYXNlL3F1YWRyYXR1cmUgc2FtcGxl IHBhaXIsIGFzCi0rCQkJYGBbaV9zYW1wbGUsIHFfc2FtcGxlXWBgLgotKwotKwkJOmFycmF5e2lu dDMyfSBwYWNrZXRQY3QyOgotKwotKwkJCUluLXBoYXNlL3F1YWRyYXR1cmUgc2FtcGxlIHBhaXIs IGFzCi0rCQkJYGBbaV9zYW1wbGUsIHFfc2FtcGxlXWBgLgotKwotKwk6ZGljdCBtb2RlVHdvRGF0 YToKLSsKLSsJCVByZXNlbnQgd2hlbiBgYHN0ZXBNb2RlYGAgaXMgMi4KLSsKLSsJCTpieXRlIGFu dGVubmFQZXJtdXRhdGlvbkluZGV4OgotKwotKwkJOmFycmF5e2ludDMyfSB0b25lUGN0SVFTYW1w bGVzOgotKwotKwkJCUludGVybGVhdmVkIGluLXBoYXNlL3F1YWRyYXR1cmUgdG9uZSBzYW1wbGVz LCBhcwotKwkJCWBgW2lfc2FtcGxlLCBxX3NhbXBsZSwgLi4uXWBgIOKAlCBvbmUgcGFpciBwZXIK LSsJCQlhbnRlbm5hIHBhdGguCi0rCi0rCQk6YXJyYXl7Ynl0ZX0gdG9uZVF1YWxpdHlJbmRpY2F0 b3JzOgotKwotKwkJCU9uZSBxdWFsaXR5IGluZGljYXRvciBieXRlIHBlciBhbnRlbm5hIHBhdGgu Ci0rCi0rCTpkaWN0IG1vZGVUaHJlZURhdGE6Ci0rCi0rCQlQcmVzZW50IHdoZW4gYGBzdGVwTW9k ZWBgIGlzIDMuIENvbnRhaW5zIHRoZSBjb21iaW5lZAotKwkJZmllbGRzIG9mIGJvdGggKiptb2Rl T25lRGF0YSoqIGFuZCAqKm1vZGVUd29EYXRhKiouCi0rCi0rUHJvcGVydGllcwotKy0tLS0tLS0t LS0KLSsKLStib29sZWFuIEFjdGl2ZSBbcmVhZG9ubHldCi0rYGBgYGBgYGBgYGBgYGBgYGBgYGBg YGBgYAotKwotK0luZGljYXRlcyB3aGV0aGVyIGEgQ1MgZGlzdGFuY2UgbWVhc3VyZW1lbnQgcHJv Y2VkdXJlIGlzIGN1cnJlbnRseQotK2FjdGl2ZSBvbiB0aGlzIGRldmljZS4KLSsKLStTZXQgdG8g YGB0cnVlYGAgd2hlbiBhIHByb2NlZHVyZSBzdGFydHMg4oCUIGVpdGhlciBiZWNhdXNlIHRoZSBs b2NhbAotK0luaXRpYXRvciBjYWxsZWQgKipTdGFydE1lYXN1cmVtZW50Kiogc3VjY2Vzc2Z1bGx5 LCBvciBiZWNhdXNlIHRoZQotK3JlbW90ZSBJbml0aWF0b3IgZW5hYmxlZCBhIENTIHByb2NlZHVy ZSBvbiB0aGUgbG9jYWwgUmVmbGVjdG9yLgotKwotK1NldCB0byBgYGZhbHNlYGAgd2hlbiB0aGUg cHJvY2VkdXJlIHN0b3BzIGZvciBhbnkgcmVhc29uOiB0aGUgbG9jYWwKLSthcHBsaWNhdGlvbiBj YWxsZWQgKipTdG9wTWVhc3VyZW1lbnQqKiwgdGhlIG1lYXN1cmVtZW50IGR1cmF0aW9uIHRpbWVy Ci0rZXhwaXJlZCwgb3IgdGhlIEFDTCBjb25uZWN0aW9uIHdhcyBkcm9wcGVkLgotKwotK1RoaXMg cHJvcGVydHkgZW1pdHMgYGBQcm9wZXJ0aWVzQ2hhbmdlZGBgIG9uIGV2ZXJ5IHRyYW5zaXRpb24g c28gdGhhdAotK2NsaWVudHMgY2FuIHRyYWNrIG1lYXN1cmVtZW50IHN0YXRlIHdpdGhvdXQgcG9s bGluZy4KLSsKLStSRVNPVVJDRVMKLSs9PT09PT09PT0KLSsKLStodHRwOi8vd3d3LmJsdWV6Lm9y ZwotKwotK1JFUE9SVElORyBCVUdTCi0rPT09PT09PT09PT09PT0KLSsKLStsaW51eC1ibHVldG9v dGhAdmdlci5rZXJuZWwub3JnCi0tLSAKLTIuNTQuMAotCi0KLUZyb20gMzBkYjY2ZGM5NzFiZDFj ZDk1ZDRhN2IwZWVhMjk2MzY3YWI2NWIzYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206 IE5hZ2EgQmhhdmFuaSBBa2VsbGEgPG5hZ2EuYWtlbGxhQG9zcy5xdWFsY29tbS5jb20+Ci1EYXRl OiBXZWQsIDE1IEp1bCAyMDI2IDE0OjA5OjU3ICswNTMwCi1TdWJqZWN0OiBbUEFUQ0ggMTkvMTld IGRvYy9ibHVldG9vdGhjdGwtY3M6IEFkZCA6VXNlczogZmllbGRzIGFuZCBkb2N1bWVudAotIGFy Z3VtZW50cwotCi1BZGQgOlVzZXM6IGZpZWxkcyB0byBsaW5rIGNvbW1hbmRzIHRvIHRoZWlyIGNv cnJlc3BvbmRpbmcgRC1CdXMgQVBJCi1tZXRob2RzLCBhbmQgZG9jdW1lbnQgY29tbWFuZCBhcmd1 bWVudHMgd2l0aCB1c2FnZSBleGFtcGxlcwotLS0tCi0gTWFrZWZpbGUudG9vbHMgICAgICAgICAg fCAgIDUgKy0KLSBkb2MvYmx1ZXRvb3RoY3RsLWNzLnJzdCB8IDU0NiArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCA1NDkgaW5zZXJ0aW9u cygrKSwgMiBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZG9jL2JsdWV0b290aGN0 bC1jcy5yc3QKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLnRvb2xzIGIvTWFrZWZpbGUudG9vbHMK LWluZGV4IDYxODg0NDlmMTU2NS4uMDY0NmQ1MmUxNGRjIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUu dG9vbHMKLSsrKyBiL01ha2VmaWxlLnRvb2xzCi1AQCAtMzU5LDcgKzM1OSw3IEBAIG1hbl9NQU5T ICs9IGRvYy9yY3Rlc3QuMSBkb2MvbDJwaW5nLjEgZG9jL2J0YXR0YWNoLjEgZG9jL2lzb3Rlc3Qu MSBcCi0gCQlkb2MvYmx1ZXRvb3RoY3RsLWdhdHQuMSBkb2MvYmx1ZXRvb3RoY3RsLXBsYXllci4x IFwKLSAJCWRvYy9ibHVldG9vdGhjdGwtc2Nhbi4xIGRvYy9ibHVldG9vdGhjdGwtdHJhbnNwb3J0 LjEgXAotIAkJZG9jL2JsdWV0b290aGN0bC1hc3Npc3RhbnQuMSBkb2MvYmx1ZXRvb3RoY3RsLWhj aS4xIFwKLS0JCWRvYy9ibHVldG9vdGhjdGwtdGVsZXBob255LjEKLSsJCWRvYy9ibHVldG9vdGhj dGwtdGVsZXBob255LjEgZG9jL2JsdWV0b290aGN0bC1jcy4xCi0gCi0gZW5kaWYKLSAKLUBAIC00 NjUsNyArNDY1LDggQEAgbWFudWFsX3BhZ2VzICs9IGRvYy9oY2lhdHRhY2guMSBkb2MvaGNpY29u ZmlnLjEgZG9jL2hjaXRvb2wuMSBcCi0gCQkJZG9jL2JsdWV0b290aGN0bC10cmFuc3BvcnQuMSBc Ci0gCQkJZG9jL2JsdWV0b290aGN0bC1hc3Npc3RhbnQuMSBcCi0gCQkJZG9jL2JsdWV0b290aGN0 bC1oY2kuMSBcCi0tCQkJZG9jL2JsdWV0b290aGN0bC10ZWxlcGhvbnkuMQotKwkJCWRvYy9ibHVl dG9vdGhjdGwtdGVsZXBob255LjEgXAotKwkJCWRvYy9ibHVldG9vdGhjdGwtY3MuMQotIAotIGlm IEhJRDJIQ0kKLSB1ZGV2ZGlyID0gJChVREVWX0RJUikKLWRpZmYgLS1naXQgYS9kb2MvYmx1ZXRv b3RoY3RsLWNzLnJzdCBiL2RvYy9ibHVldG9vdGhjdGwtY3MucnN0Ci1uZXcgZmlsZSBtb2RlIDEw MDY0NAotaW5kZXggMDAwMDAwMDAwMDAwLi5iYmMxZDg1NjVmOTEKLS0tLSAvZGV2L251bGwKLSsr KyBiL2RvYy9ibHVldG9vdGhjdGwtY3MucnN0Ci1AQCAtMCwwICsxLDU0NiBAQAotKz09PT09PT09 PT09PT09PT0KLStibHVldG9vdGhjdGwtY3MKLSs9PT09PT09PT09PT09PT09Ci0rCi0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KLStDaGFubmVsIFNvdW5kaW5nIFN1Ym1lbnUKLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQotKwotKzpWZXJzaW9uOiBCbHVlWgotKzpDb3B5cmlnaHQ6IEZy ZWUgdXNlIG9mIHRoaXMgc29mdHdhcmUgaXMgZ3JhbnRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVQotKyAgICAgICAgICAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlcyAoTEdQTCku Ci0rOkRhdGU6IEp1bmUgMjAyNgotKzpNYW51YWwgc2VjdGlvbjogMQotKzpNYW51YWwgZ3JvdXA6 IExpbnV4IFN5c3RlbSBBZG1pbmlzdHJhdGlvbgotKwotK1NZTk9QU0lTCi0rPT09PT09PT0KLSsK LSsqKmJsdWV0b290aGN0bCoqIFstLW9wdGlvbnNdIFtjcy5jb21tYW5kc10KLSsKLStUaGlzIHN1 Ym1lbnUgY29udHJvbHMgQmx1ZXRvb3RoIENoYW5uZWwgU291bmRpbmcgKENTKSBkaXN0YW5jZSBt ZWFzdXJlbWVudAotK3VzaW5nIHRoZSAqKm9yZy5ibHVlei5DaGFubmVsU291bmRpbmcxKDUpKiog RC1CdXMgaW50ZXJmYWNlLiBJdCBhbGxvd3MKLStzdGFydGluZyBhbmQgc3RvcHBpbmcgbWVhc3Vy ZW1lbnRzIGFuZCBpbnNwZWN0aW5nIHRoZSBjdXJyZW50IHBhcmFtZXRlcgotK3N0YXRlIGFuZCBh Y3RpdmUgc2Vzc2lvbiBpZGVudGlmaWVyLgotKwotK0VhY2ggQ1MgcGFyYW1ldGVyIGhhcyBpdHMg b3duICoqY3MuPHBhcmFtPioqIHNldCBjb21tYW5kIChzZWUgdGhlCi0rKipDUyBQYXJhbWV0ZXIg Q29tbWFuZHMqKiBzZWN0aW9uIGJlbG93KS4gT3ZlcnJpZGVzIGFyZSBhcHBsaWVkIHRvCi0rdGhl IGxvY2FsIHBhcmFtZXRlciBzdGF0ZSBpbW1lZGlhdGVseSwgc28gKipzaG93KiogcmVmbGVjdHMg dGhlbQotK3JpZ2h0IGF3YXk7ICoqc3RhcnQqKiBhbHdheXMgdXNlcyB3aGF0ZXZlciB2YWx1ZXMg YXJlIGN1cnJlbnRseSBzZXQuCi0rCi0rCi0rQ2hhbm5lbCBTb3VuZGluZyBDb21tYW5kcwotKz09 PT09PT09PT09PT09PT09PT09PT09PT0KLSsKLStzdGFydAotKy0tLS0tCi0rCi0rU3RhcnRzIGEg ZGlzdGFuY2UgbWVhc3VyZW1lbnQgb24gdGhlIGNvbm5lY3RlZCBkZXZpY2UgdXNpbmcgdGhlCi0r Y3VycmVudGx5IHNldCBDUyBwYXJhbWV0ZXJzIChzZWUgdGhlICoqY3MuPHBhcmFtPioqIGNvbW1h bmRzIGJlbG93KS4KLStBbGwgY29uZmlndXJhdGlvbiBpcyBzZW50IHRvIHRoZSBkYWVtb24gaW4g YSBzaW5nbGUgKipTdGFydE1lYXN1cmVtZW50KioKLStjYWxsLiBPbiBzdWNjZXNzIHRoZSBkZXZp Y2UgcGF0aCBpcyBwcmludGVkIHRvIHRoZSBjb25zb2xlLiBNdWx0aXBsZQotK3NpbXVsdGFuZW91 cyBzZXNzaW9ucyBhY3Jvc3MgZGlmZmVyZW50IGRldmljZXMgYXJlIHN1cHBvcnRlZDsgZWFjaCBp cwotK3RyYWNrZWQgaW5kZXBlbmRlbnRseS4KLSsKLStDYWxsaW5nICoqc3RhcnQqKiBvbiBhIGRl dmljZSB0aGF0IGFscmVhZHkgaGFzIGFuIGFjdGl2ZSBtZWFzdXJlbWVudAotK3JldHVybnMgYW4g ZXJyb3Igd2l0aG91dCBzdGFydGluZyBhIHNlY29uZCBzZXNzaW9uIG9uIHRoZSBzYW1lIGRldmlj ZS4KLSsKLStGb3IgSW5pdGlhdG9yIHJvbGUgKG9yIEJvdGgpLCB0aGUgbWFuZGF0b3J5IHBhcmFt ZXRlcnMgYXJlIHRoZQotK3Bvc2l0aW9uYWwgYGBkZXZfYWRkcmBgIGFuZCBgYGR1cmF0aW9uX3Nl Y3NgYDsgZXZlcnkgYGBjcy48cGFyYW0+YGAKLStjb21tYW5kIGJlbG93IGlzIG9wdGlvbmFsIGNv bmZpZ3VyYXRpb24gd2l0aCBhIHVzYWJsZSBkZWZhdWx0LgotKwotK0lmIGBgcm9sZWBgIGlzIHNl dCB0byBSZWZsZWN0b3IgKGBgMHgwMmBgLCB2aWEgKipjcy5yb2xlKiopLCAqKnN0YXJ0KioKLStk b2VzIG5vdCBiZWdpbiBtZWFzdXJpbmcgZGlzdGFuY2U6IGEgUmVmbGVjdG9yIG5ldmVyIGluaXRp YXRlcyBhIENTCi0rcHJvY2VkdXJlLiBJdCBvbmx5IHB1c2hlcyB0aGUgY3VycmVudCBwYXJhbWV0 ZXJzIHRvIHRoZSBkYWVtb24gYW5kCi0rYXJtcyB0aGUgZGV2aWNlIHRvIHJlc3BvbmQgb25jZSB0 aGUgcmVtb3RlIEluaXRpYXRvciBzdGFydHMgb25lOyB0aGUKLStjYWxsIHN0aWxsIHN1Y2NlZWRz LiBXaGVuIHRoZSByZW1vdGUgc2lkZSBzdGFydHMgb3Igc3RvcHMgYSBwcm9jZWR1cmUsCi0rdGhl IGNvbnNvbGUgcHJpbnRzIGBgTWVhc3VyZW1lbnQgc3RhcnRlZGBgL2BgTWVhc3VyZW1lbnQgc3Rv cHBlZGBgIGZvcgotK3RoYXQgZGV2aWNlIOKAlCB1c2UgKipzaG93Kiogb3Igd2F0Y2ggdGhlIGBg QWN0aXZlYGAgcHJvcGVydHkgdG8gc2VlCi0rdGhlIHNhbWUgdHJhbnNpdGlvbi4gSW4gdGhpcyBy b2xlIHRoZSBvbmx5IHBhcmFtZXRlcnMgdGhhdCBhcmUKLStyZXF1aXJlZCBvciBoYXZlIGFueSBl ZmZlY3QgYXJlIGBgcm9sZWBgLCBgYHN5bmNfYW50X3NlbGBgIGFuZAotK2BgbWF4X3R4X3Bvd2Vy YGA7IGV2ZXJ5IG90aGVyICoqY3MuPHBhcmFtPioqIGNvbW1hbmQgYmVsb3cgaXMKLSthY2NlcHRl ZCBidXQgdW51c2VkLgotKwotK1Bvc2l0aW9uYWwgYXJndW1lbnRzIGFyZSBvcHRpb25hbDoKLSsK LSstIGBgZGV2X2FkZHJgYCDigJQgQmx1ZXRvb3RoIGFkZHJlc3Mgb2YgdGhlIHRhcmdldCBkZXZp Y2U7IHVzZXMgdGhlIG9ubHkKLSsgIGF2YWlsYWJsZSBDUy1jYXBhYmxlIGRldmljZSB3aGVuIG9t aXR0ZWQuCi0rLSBgYGR1cmF0aW9uX3NlY3NgYCDigJQgYXV0by1zdG9wIHRpbWVvdXQgaW4gc2Vj b25kczsgYGAwYGAgKGRlZmF1bHQpIG1lYW5zCi0rICBubyB0aW1lb3V0LgotKwotKzpVc2FnZTog Kio+IHN0YXJ0IFtkZXZfYWRkcl0gW2R1cmF0aW9uX3NlY3NdKioKLSs6VXNlczogKipvcmcuYmx1 ZXouQ2hhbm5lbFNvdW5kaW5nMSg1KSoqIG1ldGhvZCAqKlN0YXJ0TWVhc3VyZW1lbnQqKgotKzpb ZGV2X2FkZHJdOiBCbHVldG9vdGggYWRkcmVzcyBvZiB0aGUgdGFyZ2V0IGRldmljZSAob3B0aW9u YWw7IHVzZXMgdGhlCi0rICAgICAgICAgICAgIG9ubHkgYXZhaWxhYmxlIENTLWNhcGFibGUgZGV2 aWNlIHdoZW4gb21pdHRlZCkKLSs6W2R1cmF0aW9uX3NlY3NdOiBTZWNvbmRzIGJlZm9yZSBhdXRv LXN0b3AgKG9wdGlvbmFsLCBkZWZhdWx0IDAgPSBubyB0aW1lb3V0KQotKwotKzpFeGFtcGxlIFN0 YXJ0IHdpdGggYWxsIGRlZmF1bHRzLCBubyB0aW1lb3V0OgotKwl8ICoqPiBzdGFydCoqCi0rOkV4 YW1wbGUgU3RhcnQgb24gYSBzcGVjaWZpYyBkZXZpY2U6Ci0rCXwgKio+IHN0YXJ0IEFBOkJCOkND OkREOkVFOkZGKioKLSs6RXhhbXBsZSBTdGFydCBvbiBhIHNwZWNpZmljIGRldmljZSB3aXRoIDEw LXNlY29uZCBhdXRvLXN0b3A6Ci0rCXwgKio+IHN0YXJ0IEFBOkJCOkNDOkREOkVFOkZGIDEwKioK LSs6RXhhbXBsZSBTdGFydCB3aXRoIDEwLXNlY29uZCBhdXRvLXN0b3AgKHNpbmdsZSBkZXZpY2Us IGFkZHJlc3Mgb21pdHRlZCk6Ci0rCXwgKio+IHN0YXJ0IDAgMTAqKgotKzpFeGFtcGxlIFN0YXJ0 IHdpdGggNS1taW51dGUgYXV0by1zdG9wOgotKwl8ICoqPiBzdGFydCBBQTpCQjpDQzpERDpFRTpG RiAzMDAqKgotKwotK3N0b3AKLSstLS0tCi0rCi0rU3RvcHMgYW4gYWN0aXZlIENTIGRpc3RhbmNl IG1lYXN1cmVtZW50LiBXaGVuIG9ubHkgb25lIG1lYXN1cmVtZW50IGlzCi0rcnVubmluZyB0aGUg ZGV2aWNlIGFkZHJlc3MgbWF5IGJlIG9taXR0ZWQuIFdoZW4gbXVsdGlwbGUgbWVhc3VyZW1lbnRz Ci0rYXJlIGFjdGl2ZSB0aGUgYWRkcmVzcyBpcyByZXF1aXJlZCB0byBpZGVudGlmeSB3aGljaCBv bmUgdG8gc3RvcC4KLSsKLSs6VXNhZ2U6ICoqPiBzdG9wIFtkZXZfYWRkcl0qKgotKzpVc2VzOiAq Km9yZy5ibHVlei5DaGFubmVsU291bmRpbmcxKDUpKiogbWV0aG9kICoqU3RvcE1lYXN1cmVtZW50 KioKLSs6W2Rldl9hZGRyXTogQmx1ZXRvb3RoIGFkZHJlc3Mgb2YgdGhlIGRldmljZSB0byBzdG9w IChvcHRpb25hbCB3aGVuCi0rICAgICAgICAgICAgIG9ubHkgb25lIHNlc3Npb24gaXMgYWN0aXZl OyByZXF1aXJlZCBvdGhlcndpc2UpCi0rOkV4YW1wbGUgU3RvcCB0aGUgb25seSBhY3RpdmUgbWVh c3VyZW1lbnQ6Ci0rCXwgKio+IHN0b3AqKgotKzpFeGFtcGxlIFN0b3AgYSBzcGVjaWZpYyBkZXZp Y2Ugd2hlbiBtdWx0aXBsZSBhcmUgYWN0aXZlOgotKwl8ICoqPiBzdG9wIEFBOkJCOkNDOkREOkVF OkZGKioKLSs6RXhhbXBsZSBTdG9wIGEgc2Vjb25kIGRldmljZToKLSsJfCAqKj4gc3RvcCAxMToy MjozMzo0NDo1NTo2NioqCi0rCi0rc2hvdwotKy0tLS0KLSsKLStEaXNwbGF5cyBhbGwgYWN0aXZl IG1lYXN1cmVtZW50cyAoZGV2aWNlIHBhdGggZm9yIGVhY2gpIGFuZCB0aGUgZnVsbAotK3NldCBv ZiBDUyBwYXJhbWV0ZXIgdmFsdWVzIHRoYXQgd2lsbCBiZSB1c2VkIG9uIHRoZSBuZXh0ICoqc3Rh cnQqKiBjYWxsLgotK1doZW4gbm8gbWVhc3VyZW1lbnRzIGFyZSBhY3RpdmUsIGBgbm9uZWBgIGlz IHNob3duLgotKwotK1RoZSBwYXJhbWV0ZXIgb3V0cHV0IGlzIGRpdmlkZWQgaW50byB0aHJlZSBz ZWN0aW9uczoKLSsKLSstICoqRGVmYXVsdCBTZXR0aW5ncyoqIOKAlCByb2xlLCBDUyBzeW5jIGFu dGVubmEgc2VsZWN0aW9uLCBtYXggVFggcG93ZXIuCi0rLSAqKkNTIENvbmZpZyBQYXJhbXMqKiDi gJQgcGVyLXByb2NlZHVyZSBjb25maWd1cmF0aW9uIGZpZWxkcyBpbmNsdWRpbmcKLSsgIG1vZGUg dHlwZSwgc3RlcCBjb3VudHMsIFBIWSwgYW5kIGNoYW5uZWwgbWFwLgotKy0gKipDUyBGcmVxdWVu Y3kgUGFyYW1zKiog4oCUIHByb2NlZHVyZSBzY2hlZHVsaW5nIGZpZWxkcyBpbmNsdWRpbmcKLSsg IGR1cmF0aW9uLCBwZXJpb2QsIHN1YmV2ZW50IGxlbmd0aHMsIGFuZCBTTlIgY29udHJvbC4KLSsK LSs6VXNhZ2U6ICoqPiBzaG93KioKLSs6RXhhbXBsZSBTaG93IGFjdGl2ZSBzZXNzaW9uIGFuZCBh bGwgQ1MgcGFyYW1ldGVyczoKLSsJfCAqKj4gc2hvdyoqCi0rCi0rQ1MgUGFyYW1ldGVyIENvbW1h bmRzCi0rPT09PT09PT09PT09PT09PT09PT09PQotKwotK0VhY2ggQ1MgcGFyYW1ldGVyIGlzIHNl dCB3aXRoIGl0cyBvd24gY29tbWFuZCwgb2YgdGhlIGZvcm0KLStgYGNzLjxwYXJhbT4gPHZhbHVl PmBgLiBFbnRlcmluZyBhIHBhcmFtIGNvbW1hbmQgd2l0aCBubyB2YWx1ZSBzaG93cwotK2l0cyBj dXJyZW50IHNldHRpbmcuIE92ZXJyaWRlcyBhcHBseSB0byB0aGUgbG9jYWwgcGFyYW1ldGVyIHN0 YXRlCi0raW1tZWRpYXRlbHksIHNvICoqc2hvdyoqIHJlZmxlY3RzIHRoZW0gcmlnaHQgYXdheTsg KipzdGFydCoqIGFsd2F5cwotK3VzZXMgd2hhdGV2ZXIgdmFsdWVzIGFyZSBjdXJyZW50bHkgc2V0 LiBBcnJheS12YWx1ZWQgcGFyYW1ldGVycwotKyhgYGNoYW5uZWxfbWFwYGAsIGBgbWluX3N1Yl9l dmVudF9sZW5gYCwgYGBtYXhfc3ViX2V2ZW50X2xlbmBgKSB0YWtlCi0rY29sb24tc2VwYXJhdGVk IGhleCBieXRlcyB3aXRoIG5vIGBgMHhgYCBwcmVmaXguCi0rCi0rOlVzYWdlOiAqKj4gPHBhcmFt PiBbdmFsdWVdKioKLSsKLStyb2xlCi0rLS0tLQotKwotK0dldC9zZXQgdGhlIENTIHJvbGUuCi0r Ci0rOlVzYWdlOiAqKj4gcm9sZSBbMHgwMXwweDAyfDB4MDNdKioKLSs6WzB4MDF8MHgwMnwweDAz XTogYGAweDAxYGAgSW5pdGlhdG9yLCBgYDB4MDJgYCBSZWZsZWN0b3IsIGBgMHgwM2BgIEJvdGgK LSsgICAgICAgICAgICAgICAgICAgKG9wdGlvbmFsLCBzaG93cyBjdXJyZW50IGlmIG9taXR0ZWQ7 IGRlZmF1bHQgYGAweDAzYGApCi0rOkV4YW1wbGUgU2hvdyBjdXJyZW50IHJvbGU6Ci0rCXwgKio+ IHJvbGUqKgotKzpFeGFtcGxlIFNldCByb2xlIHRvIEluaXRpYXRvciBvbmx5OgotKwl8ICoqPiBy b2xlIDB4MDEqKgotKzpFeGFtcGxlIFNldCByb2xlIHRvIFJlZmxlY3RvciBvbmx5IChkb2VzIG5v dCBtZWFzdXJlKToKLSsJfCAqKj4gcm9sZSAweDAyKioKLSs6RXhhbXBsZSBTZXQgcm9sZSB0byBi b3RoIEluaXRpYXRvciBhbmQgUmVmbGVjdG9yOgotKwl8ICoqPiByb2xlIDB4MDMqKgotKwotK3N5 bmNfYW50X3NlbAotKy0tLS0tLS0tLS0tLQotKwotK0dldC9zZXQgdGhlIENTIHN5bmMgYW50ZW5u YSBzZWxlY3Rpb24uCi0rCi0rOlVzYWdlOiAqKj4gc3luY19hbnRfc2VsIFt2YWx1ZV0qKgotKzpb dmFsdWVdOiBDUyBzeW5jIGFudGVubmEgc2VsZWN0aW9uOyBgYDB4RkVgYC9gYDB4RkZgYCByZXNl cnZlZAotKyAgICAgICAgICAob3B0aW9uYWwsIHNob3dzIGN1cnJlbnQgaWYgb21pdHRlZDsgZGVm YXVsdCBgYDB4RkZgYCkKLSs6RXhhbXBsZSBTaG93IGN1cnJlbnQgYW50ZW5uYSBzZWxlY3Rpb246 Ci0rCXwgKio+IHN5bmNfYW50X3NlbCoqCi0rOkV4YW1wbGUgU2VsZWN0IGFudGVubmEgMToKLSsJ fCAqKj4gc3luY19hbnRfc2VsIDB4MDEqKgotKwotK21heF90eF9wb3dlcgotKy0tLS0tLS0tLS0t LQotKwotK0dldC9zZXQgdGhlIG1heGltdW0gVFggcG93ZXIuCi0rCi0rOlVzYWdlOiAqKj4gbWF4 X3R4X3Bvd2VyIFtkQm1dKioKLSs6W2RCbV06IE1heCBUWCBwb3dlciBpbiBkQm0sIHNpZ25lZCAo b3B0aW9uYWwsIHNob3dzIGN1cnJlbnQgaWYKLSsgICAgICAgIG9taXR0ZWQ7IHJhbmdlIOKIkjEy NyB0byArMjA7IGRlZmF1bHQgYGAyMGBgKQotKzpFeGFtcGxlIFNob3cgY3VycmVudCBtYXggVFgg cG93ZXI6Ci0rCXwgKio+IG1heF90eF9wb3dlcioqCi0rOkV4YW1wbGUgUmVkdWNlIG1heCBUWCBw b3dlciB0byAxMCBkQm06Ci0rCXwgKio+IG1heF90eF9wb3dlciAxMCoqCi0rCi0rY29uZmlnX2lk Ci0rLS0tLS0tLS0tCi0rCi0rR2V0L3NldCB0aGUgQ1MgY29uZmlndXJhdGlvbiBpZGVudGlmaWVy LgotKwotKzpVc2FnZTogKio+IGNvbmZpZ19pZCBbdmFsdWVdKioKLSs6W3ZhbHVlXTogQ1MgY29u ZmlndXJhdGlvbiBpZGVudGlmaWVyIChvcHRpb25hbCwgc2hvd3MgY3VycmVudCBpZgotKyAgICAg ICAgICBvbWl0dGVkOyBkZWZhdWx0IGBgMGBgKQotKzpFeGFtcGxlIFNob3cgY3VycmVudCBjb25m aWcgaWQ6Ci0rCXwgKio+IGNvbmZpZ19pZCoqCi0rOkV4YW1wbGUgU2V0IGNvbmZpZyBpZCB0byAx OgotKwl8ICoqPiBjb25maWdfaWQgMSoqCi0rCi0rbWFpbl9tb2RlX3R5cGUKLSstLS0tLS0tLS0t LS0tLQotKwotK0dldC9zZXQgdGhlIENTIG1haW4gbW9kZSB0eXBlLgotKwotKzpVc2FnZTogKio+ IG1haW5fbW9kZV90eXBlIFsxfDJ8M10qKgotKzpbMXwyfDNdOiBgYDFgYCBNb2RlIDEgKFJUVCks IGBgMmBgIE1vZGUgMiAoUEJSKSwgYGAzYGAgQm90aCAob3B0aW9uYWwsCi0rICAgICAgICAgIHNo b3dzIGN1cnJlbnQgaWYgb21pdHRlZDsgZGVmYXVsdCBgYDFgYCkKLSs6RXhhbXBsZSBTaG93IGN1 cnJlbnQgbWFpbiBtb2RlIHR5cGU6Ci0rCXwgKio+IG1haW5fbW9kZV90eXBlKioKLSs6RXhhbXBs ZSBTZXQgbWFpbiBtb2RlIHRvIE1vZGUgMiAoUEJSKToKLSsJfCAqKj4gbWFpbl9tb2RlX3R5cGUg MioqCi0rOkV4YW1wbGUgU2V0IG1haW4gbW9kZSB0byBib3RoIFJUVCBhbmQgUEJSOgotKwl8ICoq PiBtYWluX21vZGVfdHlwZSAzKioKLSsKLStzdWJfbW9kZV90eXBlCi0rLS0tLS0tLS0tLS0tLQot KwotK0dldC9zZXQgdGhlIENTIHN1Yi1tb2RlIHR5cGUgd2l0aGluIHRoZSBtYWluIG1vZGUuCi0r Ci0rOlVzYWdlOiAqKj4gc3ViX21vZGVfdHlwZSBbdmFsdWVdKioKLSs6W3ZhbHVlXTogU3ViLW1v ZGUgd2l0aGluIG1haW4gbW9kZTsgYGAweEZGYGAgPSB1bnVzZWQgKG9wdGlvbmFsLAotKyAgICAg ICAgICBzaG93cyBjdXJyZW50IGlmIG9taXR0ZWQ7IGRlZmF1bHQgYGAweEZGYGApCi0rOkV4YW1w bGUgU2hvdyBjdXJyZW50IHN1Yi1tb2RlIHR5cGU6Ci0rCXwgKio+IHN1Yl9tb2RlX3R5cGUqKgot KzpFeGFtcGxlIFNldCBzdWItbW9kZSB0eXBlIHRvIDB4MDE6Ci0rCXwgKio+IHN1Yl9tb2RlX3R5 cGUgMHgwMSoqCi0rCi0rbWFpbl9tb2RlX21pbl9zdGVwcwotKy0tLS0tLS0tLS0tLS0tLS0tLS0t Ci0rCi0rR2V0L3NldCB0aGUgbWluaW11bSBDUyBtYWluIG1vZGUgc3RlcHMgcGVyIHN1YmV2ZW50 LgotKwotKzpVc2FnZTogKio+IG1haW5fbW9kZV9taW5fc3RlcHMgW3ZhbHVlXSoqCi0rOlt2YWx1 ZV06IE1pbiBDUyBtYWluIG1vZGUgc3RlcHMgcGVyIHN1YmV2ZW50IChvcHRpb25hbCwgc2hvd3MK LSsgICAgICAgICAgY3VycmVudCBpZiBvbWl0dGVkOyBkZWZhdWx0IGBgMmBgKQotKzpFeGFtcGxl IFNob3cgY3VycmVudCB2YWx1ZToKLSsJfCAqKj4gbWFpbl9tb2RlX21pbl9zdGVwcyoqCi0rOkV4 YW1wbGUgU2V0IG1pbmltdW0gc3RlcHMgdG8gNDoKLSsJfCAqKj4gbWFpbl9tb2RlX21pbl9zdGVw cyA0KioKLSsKLSttYWluX21vZGVfbWF4X3N0ZXBzCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSsK LStHZXQvc2V0IHRoZSBtYXhpbXVtIENTIG1haW4gbW9kZSBzdGVwcyBwZXIgc3ViZXZlbnQuCi0r Ci0rOlVzYWdlOiAqKj4gbWFpbl9tb2RlX21heF9zdGVwcyBbdmFsdWVdKioKLSs6W3ZhbHVlXTog TWF4IENTIG1haW4gbW9kZSBzdGVwcyBwZXIgc3ViZXZlbnQgKG9wdGlvbmFsLCBzaG93cwotKyAg ICAgICAgICBjdXJyZW50IGlmIG9taXR0ZWQ7IGRlZmF1bHQgYGAzYGApCi0rOkV4YW1wbGUgU2hv dyBjdXJyZW50IHZhbHVlOgotKwl8ICoqPiBtYWluX21vZGVfbWF4X3N0ZXBzKioKLSs6RXhhbXBs ZSBTZXQgbWF4aW11bSBzdGVwcyB0byA4OgotKwl8ICoqPiBtYWluX21vZGVfbWF4X3N0ZXBzIDgq KgotKwotK21haW5fbW9kZV9yZXBldGl0aW9uCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0rCi0r R2V0L3NldCBob3cgbWFueSB0aW1lcyBtYWluIG1vZGUgc3RlcHMgYXJlIHJlcGVhdGVkIGluIGEg c3ViZXZlbnQuCi0rCi0rOlVzYWdlOiAqKj4gbWFpbl9tb2RlX3JlcGV0aXRpb24gW3ZhbHVlXSoq Ci0rOlt2YWx1ZV06IFJlcGV0aXRpb24gY291bnQgKG9wdGlvbmFsLCBzaG93cyBjdXJyZW50IGlm IG9taXR0ZWQ7Ci0rICAgICAgICAgIGRlZmF1bHQgYGAxYGApCi0rOkV4YW1wbGUgU2hvdyBjdXJy ZW50IHZhbHVlOgotKwl8ICoqPiBtYWluX21vZGVfcmVwZXRpdGlvbioqCi0rOkV4YW1wbGUgUmVw ZWF0IG1haW4gbW9kZSBzdGVwcyB0d2ljZToKLSsJfCAqKj4gbWFpbl9tb2RlX3JlcGV0aXRpb24g MioqCi0rCi0rbW9kZTBfc3RlcHMKLSstLS0tLS0tLS0tLQotKwotK0dldC9zZXQgdGhlIG51bWJl ciBvZiBDUyBNb2RlIDAgc3RlcHMgYXQgdGhlIGJlZ2lubmluZyBvZiBlYWNoCi0rc3ViZXZlbnQu Ci0rCi0rOlVzYWdlOiAqKj4gbW9kZTBfc3RlcHMgW3ZhbHVlXSoqCi0rOlt2YWx1ZV06IENTIE1v ZGUgMCBzdGVwIGNvdW50IChvcHRpb25hbCwgc2hvd3MgY3VycmVudCBpZiBvbWl0dGVkOwotKyAg ICAgICAgICBkZWZhdWx0IGBgMmBgKQotKzpFeGFtcGxlIFNob3cgY3VycmVudCB2YWx1ZToKLSsJ fCAqKj4gbW9kZTBfc3RlcHMqKgotKzpFeGFtcGxlIFNldCBNb2RlIDAgc3RlcHMgdG8gMzoKLSsJ fCAqKj4gbW9kZTBfc3RlcHMgMyoqCi0rCi0rcnR0X3R5cGVzCi0rLS0tLS0tLS0tCi0rCi0rR2V0 L3NldCB0aGUgUlRUIG1lYXN1cmVtZW50IHR5cGVzIGJpdG1hc2suCi0rCi0rOlVzYWdlOiAqKj4g cnR0X3R5cGVzIFt2YWx1ZV0qKgotKzpbdmFsdWVdOiBSVFQgbWVhc3VyZW1lbnQgdHlwZXMgYml0 bWFzayAob3B0aW9uYWwsIHNob3dzIGN1cnJlbnQgaWYKLSsgICAgICAgICAgb21pdHRlZDsgZGVm YXVsdCBgYDBgYCkKLSs6RXhhbXBsZSBTaG93IGN1cnJlbnQgdmFsdWU6Ci0rCXwgKio+IHJ0dF90 eXBlcyoqCi0rOkV4YW1wbGUgU2V0IFJUVCB0eXBlcyBiaXRtYXNrOgotKwl8ICoqPiBydHRfdHlw ZXMgMHgwMSoqCi0rCi0rc3luY19waHkKLSstLS0tLS0tLQotKwotK0dldC9zZXQgdGhlIFBIWSB1 c2VkIGZvciBDUyBzeW5jLgotKwotKzpVc2FnZTogKio+IHN5bmNfcGh5IFsweDAxfDB4MDJdKioK LSs6WzB4MDF8MHgwMl06IGBgMHgwMWBgIExFIDFNLCBgYDB4MDJgYCBMRSAyTSAob3B0aW9uYWws IHNob3dzIGN1cnJlbnQKLSsgICAgICAgICAgICAgIGlmIG9taXR0ZWQ7IGRlZmF1bHQgYGAweDAx YGApCi0rOkV4YW1wbGUgU2hvdyBjdXJyZW50IHN5bmMgUEhZOgotKwl8ICoqPiBzeW5jX3BoeSoq Ci0rOkV4YW1wbGUgU2V0IENTIHN5bmMgUEhZIHRvIExFIDJNOgotKwl8ICoqPiBzeW5jX3BoeSAw eDAyKioKLSsKLStjaGFubmVsX21hcAotKy0tLS0tLS0tLS0tCi0rCi0rR2V0L3NldCB0aGUgMTAt Ynl0ZSBDUyBjaGFubmVsIG1hcCBiaXRtYXAuCi0rCi0rOlVzYWdlOiAqKj4gY2hhbm5lbF9tYXAg W2IwOmIxOi4uLjpiOV0qKgotKzpbYjA6YjE6Li4uOmI5XTogMTAgY29sb24tc2VwYXJhdGVkIGhl eCBieXRlcyAob3B0aW9uYWwsIHNob3dzIGN1cnJlbnQKLSsgICAgICAgICAgICAgICAgIGlmIG9t aXR0ZWQ7IGRlZmF1bHQgYGBGQzpGRjo3RjpGQzpGRjpGRjpGRjpGRjpGRjoxRmBgKQotKzpFeGFt cGxlIFNob3cgY3VycmVudCBjaGFubmVsIG1hcDoKLSsJfCAqKj4gY2hhbm5lbF9tYXAqKgotKzpF eGFtcGxlIFNldCBhIGN1c3RvbSBjaGFubmVsIG1hcCAoYWxsIGVuYWJsZWQpOgotKwl8ICoqPiBj aGFubmVsX21hcCBGRjpGRjpGRjpGRjpGRjpGRjpGRjpGRjpGRjpGRioqCi0rCi0rY2hhbm5lbF9t YXBfcmVwZXRpdGlvbgotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0rCi0rR2V0L3NldCB0aGUg bnVtYmVyIG9mIGNvbnNlY3V0aXZlIHJlcGV0aXRpb25zIG9mIHRoZSBjaGFubmVsIG1hcC4KLSsK LSs6VXNhZ2U6ICoqPiBjaGFubmVsX21hcF9yZXBldGl0aW9uIFt2YWx1ZV0qKgotKzpbdmFsdWVd OiBSZXBldGl0aW9uIGNvdW50IChvcHRpb25hbCwgc2hvd3MgY3VycmVudCBpZiBvbWl0dGVkOwot KyAgICAgICAgICBkZWZhdWx0IGBgMWBgKQotKzpFeGFtcGxlIFNob3cgY3VycmVudCB2YWx1ZToK LSsJfCAqKj4gY2hhbm5lbF9tYXBfcmVwZXRpdGlvbioqCi0rOkV4YW1wbGUgUmVwZWF0IHRoZSBj aGFubmVsIG1hcCAzIHRpbWVzOgotKwl8ICoqPiBjaGFubmVsX21hcF9yZXBldGl0aW9uIDMqKgot KwotK2NoYW5uZWxfc2VsZWN0aW9uX3R5cGUKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKwot K0dldC9zZXQgdGhlIENTIGNoYW5uZWwgc2VsZWN0aW9uIGFsZ29yaXRobS4KLSsKLSs6VXNhZ2U6 ICoqPiBjaGFubmVsX3NlbGVjdGlvbl90eXBlIFt2YWx1ZV0qKgotKzpbdmFsdWVdOiBDaGFubmVs IHNlbGVjdGlvbiBhbGdvcml0aG0gKG9wdGlvbmFsLCBzaG93cyBjdXJyZW50IGlmCi0rICAgICAg ICAgIG9taXR0ZWQ7IGRlZmF1bHQgYGAwYGApCi0rOkV4YW1wbGUgU2hvdyBjdXJyZW50IHZhbHVl OgotKwl8ICoqPiBjaGFubmVsX3NlbGVjdGlvbl90eXBlKioKLSs6RXhhbXBsZSBTZWxlY3QgYWxn b3JpdGhtIDE6Ci0rCXwgKio+IGNoYW5uZWxfc2VsZWN0aW9uX3R5cGUgMSoqCi0rCi0rY2hhbm5l bF9zaGFwZQotKy0tLS0tLS0tLS0tLS0KLSsKLStHZXQvc2V0IHRoZSBzaGFwZSB1c2VkIGluIHRo ZSBjaGFubmVsIHNlbGVjdGlvbiBhbGdvcml0aG0uCi0rCi0rOlVzYWdlOiAqKj4gY2hhbm5lbF9z aGFwZSBbdmFsdWVdKioKLSs6W3ZhbHVlXTogQ2hhbm5lbCBzaGFwZSAob3B0aW9uYWwsIHNob3dz IGN1cnJlbnQgaWYgb21pdHRlZDsgZGVmYXVsdAotKyAgICAgICAgICBgYDBgYCkKLSs6RXhhbXBs ZSBTaG93IGN1cnJlbnQgdmFsdWU6Ci0rCXwgKio+IGNoYW5uZWxfc2hhcGUqKgotKzpFeGFtcGxl IFNldCBjaGFubmVsIHNoYXBlIHRvIDE6Ci0rCXwgKio+IGNoYW5uZWxfc2hhcGUgMSoqCi0rCi0r Y2hhbm5lbF9qdW1wCi0rLS0tLS0tLS0tLS0tCi0rCi0rR2V0L3NldCB0aGUgY2hhbm5lbCBqdW1w IHNpemUuCi0rCi0rOlVzYWdlOiAqKj4gY2hhbm5lbF9qdW1wIFt2YWx1ZV0qKgotKzpbdmFsdWVd OiBDaGFubmVsIGp1bXAgc2l6ZSAob3B0aW9uYWwsIHNob3dzIGN1cnJlbnQgaWYgb21pdHRlZDsK LSsgICAgICAgICAgZGVmYXVsdCBgYDJgYCkKLSs6RXhhbXBsZSBTaG93IGN1cnJlbnQgdmFsdWU6 Ci0rCXwgKio+IGNoYW5uZWxfanVtcCoqCi0rOkV4YW1wbGUgU2V0IGNoYW5uZWwganVtcCB0byA0 OgotKwl8ICoqPiBjaGFubmVsX2p1bXAgNCoqCi0rCi0rY29tcGFuaW9uX3NpZ25hbF9lbmFibGUK LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSsKLStHZXQvc2V0IHdoZXRoZXIgdGhlIGNvbXBh bmlvbiBzaWduYWwgaXMgdHJhbnNtaXR0ZWQuCi0rCi0rOlVzYWdlOiAqKj4gY29tcGFuaW9uX3Np Z25hbF9lbmFibGUgWzB8MV0qKgotKzpbMHwxXTogYGAxYGAgdG8gdHJhbnNtaXQgY29tcGFuaW9u IHNpZ25hbCwgYGAwYGAgdG8gZGlzYWJsZSAob3B0aW9uYWwsCi0rICAgICAgICBzaG93cyBjdXJy ZW50IGlmIG9taXR0ZWQ7IGRlZmF1bHQgYGAwYGApCi0rOkV4YW1wbGUgU2hvdyBjdXJyZW50IHZh bHVlOgotKwl8ICoqPiBjb21wYW5pb25fc2lnbmFsX2VuYWJsZSoqCi0rOkV4YW1wbGUgRW5hYmxl IHRoZSBjb21wYW5pb24gc2lnbmFsOgotKwl8ICoqPiBjb21wYW5pb25fc2lnbmFsX2VuYWJsZSAx KioKLSsKLSttYXhfcHJvY2VkdXJlX2R1cmF0aW9uCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K LSsKLStHZXQvc2V0IHRoZSBtYXhpbXVtIGR1cmF0aW9uIG9mIG9uZSBDUyBtZWFzdXJlbWVudCBw cm9jZWR1cmUuCi0rCi0rOlVzYWdlOiAqKj4gbWF4X3Byb2NlZHVyZV9kdXJhdGlvbiBbdmFsdWVd KioKLSs6W3ZhbHVlXTogTWF4aW11bSBwcm9jZWR1cmUgZHVyYXRpb24gKG9wdGlvbmFsLCBzaG93 cyBjdXJyZW50IGlmCi0rICAgICAgICAgIG9taXR0ZWQ7IGRlZmF1bHQgYGAxNjAwYGApCi0rOkV4 YW1wbGUgU2hvdyBjdXJyZW50IHZhbHVlOgotKwl8ICoqPiBtYXhfcHJvY2VkdXJlX2R1cmF0aW9u KioKLSs6RXhhbXBsZSBTZXQgbWF4IHByb2NlZHVyZSBkdXJhdGlvbiB0byA4MDA6Ci0rCXwgKio+ IG1heF9wcm9jZWR1cmVfZHVyYXRpb24gODAwKioKLSsKLSttaW5fcGVyaW9kX2JldHdlZW5fcHJv Y2VkdXJlcwotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSsKLStHZXQvc2V0IHRo ZSBtaW5pbXVtIHRpbWUgYmV0d2VlbiBjb25zZWN1dGl2ZSBwcm9jZWR1cmVzLgotKwotKzpVc2Fn ZTogKio+IG1pbl9wZXJpb2RfYmV0d2Vlbl9wcm9jZWR1cmVzIFt2YWx1ZV0qKgotKzpbdmFsdWVd OiBNaW5pbXVtIHBlcmlvZCAob3B0aW9uYWwsIHNob3dzIGN1cnJlbnQgaWYgb21pdHRlZDsgZGVm YXVsdAotKyAgICAgICAgICBgYDMwYGApCi0rOkV4YW1wbGUgU2hvdyBjdXJyZW50IHZhbHVlOgot Kwl8ICoqPiBtaW5fcGVyaW9kX2JldHdlZW5fcHJvY2VkdXJlcyoqCi0rOkV4YW1wbGUgU2V0IG1p bmltdW0gcGVyaW9kIHRvIDUwOgotKwl8ICoqPiBtaW5fcGVyaW9kX2JldHdlZW5fcHJvY2VkdXJl cyA1MCoqCi0rCi0rbWF4X3BlcmlvZF9iZXR3ZWVuX3Byb2NlZHVyZXMKLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCi0rCi0rR2V0L3NldCB0aGUgbWF4aW11bSB0aW1lIGJldHdlZW4g Y29uc2VjdXRpdmUgcHJvY2VkdXJlcy4KLSsKLSs6VXNhZ2U6ICoqPiBtYXhfcGVyaW9kX2JldHdl ZW5fcHJvY2VkdXJlcyBbdmFsdWVdKioKLSs6W3ZhbHVlXTogTWF4aW11bSBwZXJpb2QgKG9wdGlv bmFsLCBzaG93cyBjdXJyZW50IGlmIG9taXR0ZWQ7IGRlZmF1bHQKLSsgICAgICAgICAgYGAxNTBg YCkKLSs6RXhhbXBsZSBTaG93IGN1cnJlbnQgdmFsdWU6Ci0rCXwgKio+IG1heF9wZXJpb2RfYmV0 d2Vlbl9wcm9jZWR1cmVzKioKLSs6RXhhbXBsZSBTZXQgbWF4aW11bSBwZXJpb2QgdG8gMjAwOgot Kwl8ICoqPiBtYXhfcGVyaW9kX2JldHdlZW5fcHJvY2VkdXJlcyAyMDAqKgotKwotK21heF9wcm9j ZWR1cmVfY291bnQKLSstLS0tLS0tLS0tLS0tLS0tLS0tLQotKwotK0dldC9zZXQgdGhlIG1heGlt dW0gbnVtYmVyIG9mIHByb2NlZHVyZXMuCi0rCi0rOlVzYWdlOiAqKj4gbWF4X3Byb2NlZHVyZV9j b3VudCBbdmFsdWVdKioKLSs6W3ZhbHVlXTogTWF4IHByb2NlZHVyZSBjb3VudDsgYGAwYGAgPSBu byBsaW1pdCAob3B0aW9uYWwsIHNob3dzCi0rICAgICAgICAgIGN1cnJlbnQgaWYgb21pdHRlZDsg ZGVmYXVsdCBgYDBgYCkKLSs6RXhhbXBsZSBTaG93IGN1cnJlbnQgdmFsdWU6Ci0rCXwgKio+IG1h eF9wcm9jZWR1cmVfY291bnQqKgotKzpFeGFtcGxlIExpbWl0IHRoZSBwcm9jZWR1cmUgY291bnQg dG8gMTAwOgotKwl8ICoqPiBtYXhfcHJvY2VkdXJlX2NvdW50IDEwMCoqCi0rCi0rbWluX3N1Yl9l dmVudF9sZW4KLSstLS0tLS0tLS0tLS0tLS0tLS0KLSsKLStHZXQvc2V0IHRoZSBtaW5pbXVtIENT IHN1YmV2ZW50IGxlbmd0aC4KLSsKLSs6VXNhZ2U6ICoqPiBtaW5fc3ViX2V2ZW50X2xlbiBbYjA6 YjE6YjJdKioKLSs6W2IwOmIxOmIyXTogMy1ieXRlIExFIHZhbHVlLCBjb2xvbi1zZXBhcmF0ZWQg aGV4IChvcHRpb25hbCwgc2hvd3MKLSsgICAgICAgICAgICAgY3VycmVudCBpZiBvbWl0dGVkOyBk ZWZhdWx0IGBgMDA6MjA6MDBgYCkKLSs6RXhhbXBsZSBTaG93IGN1cnJlbnQgdmFsdWU6Ci0rCXwg Kio+IG1pbl9zdWJfZXZlbnRfbGVuKioKLSs6RXhhbXBsZSBTZXQgbWluaW11bSBzdWJldmVudCBs ZW5ndGg6Ci0rCXwgKio+IG1pbl9zdWJfZXZlbnRfbGVuIDAwOjEwOjAwKioKLSsKLSttYXhfc3Vi X2V2ZW50X2xlbgotKy0tLS0tLS0tLS0tLS0tLS0tLQotKwotK0dldC9zZXQgdGhlIG1heGltdW0g Q1Mgc3ViZXZlbnQgbGVuZ3RoLgotKwotKzpVc2FnZTogKio+IG1heF9zdWJfZXZlbnRfbGVuIFti MDpiMTpiMl0qKgotKzpbYjA6YjE6YjJdOiAzLWJ5dGUgTEUgdmFsdWUsIGNvbG9uLXNlcGFyYXRl ZCBoZXggKG9wdGlvbmFsLCBzaG93cwotKyAgICAgICAgICAgICBjdXJyZW50IGlmIG9taXR0ZWQ7 IGRlZmF1bHQgYGAwMzoyMDowMGBgKQotKzpFeGFtcGxlIFNob3cgY3VycmVudCB2YWx1ZToKLSsJ fCAqKj4gbWF4X3N1Yl9ldmVudF9sZW4qKgotKzpFeGFtcGxlIFNldCBtYXhpbXVtIHN1YmV2ZW50 IGxlbmd0aDoKLSsJfCAqKj4gbWF4X3N1Yl9ldmVudF9sZW4gMDQ6MjA6MDAqKgotKwotK3RvbmVf YW50ZW5uYV9jb25maWdfc2VsZWN0aW9uCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQotKwotK0dldC9zZXQgdGhlIGFudGVubmEgY29uZmlndXJhdGlvbiBmb3IgQ1MgdG9uZSBleGNo YW5nZXMuCi0rCi0rOlVzYWdlOiAqKj4gdG9uZV9hbnRlbm5hX2NvbmZpZ19zZWxlY3Rpb24gW3Zh bHVlXSoqCi0rOlt2YWx1ZV06IEFudGVubmEgY29uZmlnIHNlbGVjdGlvbiAob3B0aW9uYWwsIHNo b3dzIGN1cnJlbnQgaWYKLSsgICAgICAgICAgb21pdHRlZDsgZGVmYXVsdCBgYDB4MDdgYCkKLSs6 RXhhbXBsZSBTaG93IGN1cnJlbnQgdmFsdWU6Ci0rCXwgKio+IHRvbmVfYW50ZW5uYV9jb25maWdf c2VsZWN0aW9uKioKLSs6RXhhbXBsZSBTZXQgYW50ZW5uYSBjb25maWcgdG8gMHgwMToKLSsJfCAq Kj4gdG9uZV9hbnRlbm5hX2NvbmZpZ19zZWxlY3Rpb24gMHgwMSoqCi0rCi0rcGh5Ci0rLS0tCi0r Ci0rR2V0L3NldCB0aGUgUEhZIHVzZWQgZm9yIENTIHByb2NlZHVyZXMuCi0rCi0rOlVzYWdlOiAq Kj4gcGh5IFsweDAxfDB4MDJdKioKLSs6WzB4MDF8MHgwMl06IGBgMHgwMWBgIExFIDFNLCBgYDB4 MDJgYCBMRSAyTSAob3B0aW9uYWwsIHNob3dzIGN1cnJlbnQKLSsgICAgICAgICAgICAgIGlmIG9t aXR0ZWQ7IGRlZmF1bHQgYGAweDAxYGApCi0rOkV4YW1wbGUgU2hvdyBjdXJyZW50IHByb2NlZHVy ZSBQSFk6Ci0rCXwgKio+IHBoeSoqCi0rOkV4YW1wbGUgU2V0IENTIHByb2NlZHVyZSBQSFkgdG8g TEUgMk06Ci0rCXwgKio+IHBoeSAweDAyKioKLSsKLSt0eF9wb3dlcl9kZWx0YQotKy0tLS0tLS0t LS0tLS0tCi0rCi0rR2V0L3NldCB0aGUgcmVtb3RlIHZzIGxvY2FsIFRYIHBvd2VyIGRlbHRhLgot KwotKzpVc2FnZTogKio+IHR4X3Bvd2VyX2RlbHRhIFt2YWx1ZV0qKgotKzpbdmFsdWVdOiBUWCBw b3dlciBkZWx0YTsgYGAweDgwYGAgPSBub3QgYXBwbGljYWJsZSAob3B0aW9uYWwsIHNob3dzCi0r ICAgICAgICAgIGN1cnJlbnQgaWYgb21pdHRlZDsgZGVmYXVsdCBgYDB4ODBgYCkKLSs6RXhhbXBs ZSBTaG93IGN1cnJlbnQgdmFsdWU6Ci0rCXwgKio+IHR4X3Bvd2VyX2RlbHRhKioKLSs6RXhhbXBs ZSBTZXQgVFggcG93ZXIgZGVsdGEgdG8gMHgwNToKLSsJfCAqKj4gdHhfcG93ZXJfZGVsdGEgMHgw NSoqCi0rCi0rcHJlZmVycmVkX3BlZXJfYW50ZW5uYQotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ci0rCi0rR2V0L3NldCB0aGUgcHJlZmVycmVkIGFudGVubmEgZm9yIHRoZSBwZWVyIGRldmljZS4K LSsKLSs6VXNhZ2U6ICoqPiBwcmVmZXJyZWRfcGVlcl9hbnRlbm5hIFt2YWx1ZV0qKgotKzpbdmFs dWVdOiBQcmVmZXJyZWQgcGVlciBhbnRlbm5hIChvcHRpb25hbCwgc2hvd3MgY3VycmVudCBpZiBv bWl0dGVkOwotKyAgICAgICAgICBkZWZhdWx0IGBgMHgwM2BgKQotKzpFeGFtcGxlIFNob3cgY3Vy cmVudCB2YWx1ZToKLSsJfCAqKj4gcHJlZmVycmVkX3BlZXJfYW50ZW5uYSoqCi0rOkV4YW1wbGUg UHJlZmVyIGFudGVubmEgMSBvbiB0aGUgcGVlcjoKLSsJfCAqKj4gcHJlZmVycmVkX3BlZXJfYW50 ZW5uYSAweDAxKioKLSsKLStzbnJfY29udHJvbF9pbml0aWF0b3IKLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tCi0rCi0rR2V0L3NldCB0aGUgU05SIGNvbnRyb2wgZm9yIHRoZSBpbml0aWF0b3IuCi0r Ci0rOlVzYWdlOiAqKj4gc25yX2NvbnRyb2xfaW5pdGlhdG9yIFt2YWx1ZV0qKgotKzpbdmFsdWVd OiBTTlIgY29udHJvbDsgYGAweEZGYGAgPSBubyBwcmVmZXJlbmNlIChvcHRpb25hbCwgc2hvd3MK LSsgICAgICAgICAgY3VycmVudCBpZiBvbWl0dGVkOyBkZWZhdWx0IGBgMHhGRmBgKQotKzpFeGFt cGxlIFNob3cgY3VycmVudCB2YWx1ZToKLSsJfCAqKj4gc25yX2NvbnRyb2xfaW5pdGlhdG9yKioK LSs6RXhhbXBsZSBQcmVmZXIgaGlnaCBTTlIgb24gdGhlIGluaXRpYXRvcjoKLSsJfCAqKj4gc25y X2NvbnRyb2xfaW5pdGlhdG9yIDB4MDEqKgotKwotK3Nucl9jb250cm9sX3JlZmxlY3RvcgotKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KLSsKLStHZXQvc2V0IHRoZSBTTlIgY29udHJvbCBmb3IgdGhl IHJlZmxlY3Rvci4KLSsKLSs6VXNhZ2U6ICoqPiBzbnJfY29udHJvbF9yZWZsZWN0b3IgW3ZhbHVl XSoqCi0rOlt2YWx1ZV06IFNOUiBjb250cm9sOyBgYDB4RkZgYCA9IG5vIHByZWZlcmVuY2UgKG9w dGlvbmFsLCBzaG93cwotKyAgICAgICAgICBjdXJyZW50IGlmIG9taXR0ZWQ7IGRlZmF1bHQgYGAw eEZGYGApCi0rOkV4YW1wbGUgU2hvdyBjdXJyZW50IHZhbHVlOgotKwl8ICoqPiBzbnJfY29udHJv bF9yZWZsZWN0b3IqKgotKzpFeGFtcGxlIFByZWZlciBoaWdoIFNOUiBvbiB0aGUgcmVmbGVjdG9y OgotKwl8ICoqPiBzbnJfY29udHJvbF9yZWZsZWN0b3IgMHgwMSoqCi0rOkV4YW1wbGUgUHJlZmVy IGhpZ2ggU05SIG9uIGJvdGggcm9sZXM6Ci0rCXwgKio+IHNucl9jb250cm9sX2luaXRpYXRvciAw eDAxKioKLSsJfCAqKj4gc25yX2NvbnRyb2xfcmVmbGVjdG9yIDB4MDEqKgotKwotK1JFU09VUkNF UwotKz09PT09PT09PQotKwotK2h0dHA6Ly93d3cuYmx1ZXoub3JnCi0rCi0rUkVQT1JUSU5HIEJV R1MKLSs9PT09PT09PT09PT09PQotKwotK2xpbnV4LWJsdWV0b290aEB2Z2VyLmtlcm5lbC5vcmcK LS0tIAotMi41NC4wCi0KCmRpZmYgLS1naXQgYS9hdnJjcC1nZXRmb2xkZXJpdGVtcy5wYXRjaCBi L2F2cmNwLWdldGZvbGRlcml0ZW1zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCA2NjY4MjVkLi4wMDAwMDAwCi0tLSBhL2F2cmNwLWdldGZvbGRlcml0ZW1zLnBhdGNoCisrKyAv ZGV2L251bGwKQEAgLTEsMTQ4ICswLDAgQEAKLUZyb20gYmQ4OTg5NjIwZWQ2ZTgwNzU1ZjA2Y2Zk YjE4ZjViNGEzOTEzNDkzYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEJhc3RpZW4g Tm9jZXJhIDxoYWRlc3NAaGFkZXNzLm5ldD4KLURhdGU6IEZyaSwgMTQgQXVnIDIwMjYgMTY6MDE6 MTggKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gYXZyY3A6IEZpeCBPdXQtb2YtQm91bmRzIFJlYWQg aW4gQVZSQ1AgR2V0Rm9sZGVySXRlbXMgcGFyc2luZwotCi1JZiB0aGUgIkRpc3BsYXlhYmxlIE5h bWUgTGVuZ3RoIiBpcyBtdWNoIGxvbmdlciB0aGFuIHRoZSBzaXplIG9mIHRoZSBQRFUKLXBhY2tl dCB3ZSByZWNlaXZlLCB0aGVuIHdlIG1pZ2h0IHRyeSB0byBtZW1jcHkoKSBwYXN0IHRoZSBlbmQg b2YgdGhlIFBEVQotcGFja2V0LgotCi1CZSBjYXJlZnVsIGFib3V0IGNsYW1waW5nIHRoZSBuYW1l IGNvcHlpbmcgdG8gdGhlIHNtYWxsZXN0IG9mOgotLSBsZW5ndGggc3BlY2lmaWVkIGluIHRoZSBQ RFUKLS0gbGVmdC1vdmVyIHBhY2tldCBhZnRlciB0aGUgbGVuZ3RoIGZpZWxkCi0tIHNpemUgb2Yg dGhlIHN0cmluZyB3ZSdsbCBjb3B5IGl0IGludG8KLQotUmVwb3J0ZWQtYnk6IEVsbWFuIFNoYWhi YXpvdiA8c2hhaGJhem92ZWxtYW45N0BnbWFpbC5jb20+Ci0tLS0KLSBwcm9maWxlcy9hdWRpby9h dnJjcC5jIHwgNTEgKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCi0g MSBmaWxlIGNoYW5nZWQsIDMxIGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQotCi1kaWZm IC0tZ2l0IGEvcHJvZmlsZXMvYXVkaW8vYXZyY3AuYyBiL3Byb2ZpbGVzL2F1ZGlvL2F2cmNwLmMK LWluZGV4IDIxOTRhOTEzNTgwZi4uMjNlOTU5Yzc2OTE3IDEwMDY0NAotLS0tIGEvcHJvZmlsZXMv YXVkaW8vYXZyY3AuYwotKysrIGIvcHJvZmlsZXMvYXVkaW8vYXZyY3AuYwotQEAgLTE0NSw2ICsx NDUsOCBAQAotICNkZWZpbmUgQVZSQ1BfU0NPUEVfU0VBUkNICQkJCTB4MDIKLSAjZGVmaW5lIEFW UkNQX1NDT1BFX05PV19QTEFZSU5HCQkJMHgwMwotIAotKyNkZWZpbmUgTkFNRV9NQVhfTEVOIDI1 NQotKwotICNpZiBfX0JZVEVfT1JERVIgPT0gX19MSVRUTEVfRU5ESUFOCi0gCi0gc3RydWN0IGF2 cmNwX2hlYWRlciB7Ci1AQCAtMjYwOCwzMCArMjYxMCw0NSBAQCBzdGF0aWMgY29uc3QgY2hhciAq c3VidHlwZV90b19zdHJpbmcodWludDMyX3Qgc3VidHlwZSkKLSAJcmV0dXJuICJOb25lIjsKLSB9 Ci0gCi0rc3RhdGljIGdib29sZWFuIHBhcnNlX21lZGlhX25hbWUodWludDhfdCAqb3BlcmFuZHMs IHVpbnQxNl90IGxlbiwKLSsJCQkJc2l6ZV90IG5hbWVfbGVuX29mZnNldCwKLSsJCQkJY2hhciAq bmFtZSwgdWludDE2X3QgKm5hbWVsZW4pCi0rewotKwl1aW50MTZfdCBuYW1lc2l6ZTsKLSsKLSsJ aWYgKGxlbiA8IG5hbWVfbGVuX29mZnNldCArIDIpCi0rCQlyZXR1cm4gRkFMU0U7Ci0rCi0rCW1l bXNldChuYW1lLCAwLCBOQU1FX01BWF9MRU4pOwotKwluYW1lc2l6ZSA9IE1JTihnZXRfYmUxNigm b3BlcmFuZHNbbmFtZV9sZW5fb2Zmc2V0XSksCi0rCQkJbGVuIC0gbmFtZV9sZW5fb2Zmc2V0IC0g Mik7Ci0rCW5hbWVzaXplID0gTUlOKG5hbWVzaXplLCBOQU1FX01BWF9MRU4gLSAxKTsKLSsJaWYg KCpuYW1lbGVuID4gMCkgewotKwkJaWYgKGxlbiA8IG5hbWVfbGVuX29mZnNldCArIDIgKyBuYW1l c2l6ZSkKLSsJCQlyZXR1cm4gRkFMU0U7Ci0rCQltZW1jcHkobmFtZSwgJm9wZXJhbmRzW25hbWVf bGVuX29mZnNldCArIDJdLCBuYW1lc2l6ZSk7Ci0rCQlzdHJ0b3V0ZjgobmFtZSwgbmFtZXNpemUp OwotKwl9Ci0rCWlmIChuYW1lbGVuKQotKwkJKm5hbWVsZW4gPSBuYW1lc2l6ZTsKLSsJcmV0dXJu IFRSVUU7Ci0rfQotKwotIHN0YXRpYyBzdHJ1Y3QgbWVkaWFfaXRlbSAqcGFyc2VfbWVkaWFfZWxl bWVudChzdHJ1Y3QgYXZyY3AgKnNlc3Npb24sCi0gCQkJCQl1aW50OF90ICpvcGVyYW5kcywgdWlu dDE2X3QgbGVuKQotIHsKLSAJc3RydWN0IGF2cmNwX3BsYXllciAqcGxheWVyOwotIAlzdHJ1Y3Qg bWVkaWFfcGxheWVyICptcDsKLSAJc3RydWN0IG1lZGlhX2l0ZW0gKml0ZW07Ci0tCXVpbnQxNl90 IG5hbWVsZW4sIG5hbWVzaXplOwotLQljaGFyIG5hbWVbMjU1XTsKLSsJdWludDE2X3QgbmFtZXNp emU7Ci0rCWNoYXIgbmFtZVtOQU1FX01BWF9MRU5dOwotIAl1aW50NjRfdCB1aWQ7Ci0gCXVpbnQ4 X3QgY291bnQ7Ci0gCi0tCWlmIChsZW4gPCAxMykKLSsJaWYgKCFwYXJzZV9tZWRpYV9uYW1lKG9w ZXJhbmRzLCBsZW4sIDExLCBuYW1lLCAmbmFtZXNpemUpKQotIAkJcmV0dXJuIE5VTEw7Ci0gCi0g CXVpZCA9IGdldF9iZTY0KCZvcGVyYW5kc1swXSk7Ci0tCi0tCW1lbXNldChuYW1lLCAwLCBzaXpl b2YobmFtZSkpOwotLQluYW1lc2l6ZSA9IGdldF9iZTE2KCZvcGVyYW5kc1sxMV0pOwotLQluYW1l bGVuID0gTUlOKG5hbWVzaXplLCBzaXplb2YobmFtZSkgLSAxKTsKLS0JaWYgKG5hbWVsZW4gPiAw KSB7Ci0tCQltZW1jcHkobmFtZSwgJm9wZXJhbmRzWzEzXSwgbmFtZWxlbik7Ci0tCQlzdHJ0b3V0 ZjgobmFtZSwgbmFtZWxlbik7Ci0tCX0KLS0KLSAJY291bnQgPSBvcGVyYW5kc1sxMyArIG5hbWVz aXplXTsKLSAKLSAJcGxheWVyID0gc2Vzc2lvbi0+Y29udHJvbGxlci0+cGxheWVyOwotQEAgLTI2 NTUsMjQgKzI2NzIsMTggQEAgc3RhdGljIHN0cnVjdCBtZWRpYV9pdGVtICpwYXJzZV9tZWRpYV9m b2xkZXIoc3RydWN0IGF2cmNwICpzZXNzaW9uLAotIAlzdHJ1Y3QgYXZyY3BfcGxheWVyICpwbGF5 ZXIgPSBzZXNzaW9uLT5jb250cm9sbGVyLT5wbGF5ZXI7Ci0gCXN0cnVjdCBtZWRpYV9wbGF5ZXIg Km1wID0gcGxheWVyLT51c2VyX2RhdGE7Ci0gCXN0cnVjdCBtZWRpYV9pdGVtICppdGVtOwotLQl1 aW50MTZfdCBuYW1lbGVuOwotLQljaGFyIG5hbWVbMjU1XTsKLSsJY2hhciBuYW1lW05BTUVfTUFY X0xFTl07Ci0gCXVpbnQ2NF90IHVpZDsKLSAJdWludDhfdCB0eXBlOwotIAl1aW50OF90IHBsYXlh YmxlOwotIAotLQlpZiAobGVuIDwgMTIpCi0rCWlmICghcGFyc2VfbWVkaWFfbmFtZShvcGVyYW5k cywgbGVuLCAxMiwgbmFtZSwgTlVMTCkpCi0gCQlyZXR1cm4gTlVMTDsKLSAKLSAJdWlkID0gZ2V0 X2JlNjQoJm9wZXJhbmRzWzBdKTsKLSAJdHlwZSA9IG9wZXJhbmRzWzhdOwotIAlwbGF5YWJsZSA9 IG9wZXJhbmRzWzldOwotIAotLQltZW1zZXQobmFtZSwgMCwgc2l6ZW9mKG5hbWUpKTsKLS0JbmFt ZWxlbiA9IE1JTihnZXRfYmUxNigmb3BlcmFuZHNbMTJdKSwgc2l6ZW9mKG5hbWUpIC0gMSk7Ci0t CWlmIChuYW1lbGVuID4gMCkKLS0JCW1lbWNweShuYW1lLCAmb3BlcmFuZHNbMTRdLCBuYW1lbGVu KTsKLS0KLSAJaXRlbSA9IG1lZGlhX3BsYXllcl9jcmVhdGVfZm9sZGVyKG1wLCBuYW1lLCB0eXBl LCB1aWQpOwotIAlpZiAoIWl0ZW0pCi0gCQlyZXR1cm4gTlVMTDsKLS0tIAotMi41NS4wCi0KLUZy b20gOGJmN2ZlNDg0NzgzM2E3NmJkN2U1MWQ0ZDI2OWI0YjMzNjM4OTE5MyBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKLUZyb206IEJhc3RpZW4gTm9jZXJhIDxoYWRlc3NAaGFkZXNzLm5ldD4KLURh dGU6IE1vbiwgMTcgQXVnIDIwMjYgMTA6MTE6MTkgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gYXZy Y3A6IEZpeCBtZWRpYS9mb2xkZXIgbmFtZSBub3QgYmVpbmcgc2V0Ci0KLSpuYW1lbGVuIHdhcyB1 c2VkIGJlZm9yZSBiZWluZyBzZXQuCi0KLUZpeGVzOiBiZDg5ODk2MjBlZDYgKCJhdnJjcDogRml4 IE91dC1vZi1Cb3VuZHMgUmVhZCBpbiBBVlJDUCBHZXRGb2xkZXJJdGVtcyBwYXJzaW5nIikKLS0t LQotIHByb2ZpbGVzL2F1ZGlvL2F2cmNwLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5z ZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9wcm9maWxlcy9hdWRpby9h dnJjcC5jIGIvcHJvZmlsZXMvYXVkaW8vYXZyY3AuYwotaW5kZXggMjNlOTU5Yzc2OTE3Li4wMjhj MWMyNTRiODIgMTAwNjQ0Ci0tLS0gYS9wcm9maWxlcy9hdWRpby9hdnJjcC5jCi0rKysgYi9wcm9m aWxlcy9hdWRpby9hdnJjcC5jCi1AQCAtMjYyMyw3ICsyNjIzLDcgQEAgc3RhdGljIGdib29sZWFu IHBhcnNlX21lZGlhX25hbWUodWludDhfdCAqb3BlcmFuZHMsIHVpbnQxNl90IGxlbiwKLSAJbmFt ZXNpemUgPSBNSU4oZ2V0X2JlMTYoJm9wZXJhbmRzW25hbWVfbGVuX29mZnNldF0pLAotIAkJCWxl biAtIG5hbWVfbGVuX29mZnNldCAtIDIpOwotIAluYW1lc2l6ZSA9IE1JTihuYW1lc2l6ZSwgTkFN RV9NQVhfTEVOIC0gMSk7Ci0tCWlmICgqbmFtZWxlbiA+IDApIHsKLSsJaWYgKG5hbWVzaXplID4g MCkgewotIAkJaWYgKGxlbiA8IG5hbWVfbGVuX29mZnNldCArIDIgKyBuYW1lc2l6ZSkKLSAJCQly ZXR1cm4gRkFMU0U7Ci0gCQltZW1jcHkobmFtZSwgJm9wZXJhbmRzW25hbWVfbGVuX29mZnNldCAr IDJdLCBuYW1lc2l6ZSk7Ci0tLSAKLTIuNTUuMAotCgpkaWZmIC0tZ2l0IGEvYmx1ZXouc3BlYyBi L2JsdWV6LnNwZWMKaW5kZXggOTgwMTAyMS4uNGJjNWUyNyAxMDA2NDQKLS0tIGEvYmx1ZXouc3Bl YworKysgYi9ibHVlei5zcGVjCkBAIC00LDI0ICs0LDIyIEBACiAlYmNvbmRfd2l0aCBkZXByZWNh dGVkCiAlZW5kaWYKIAorIyBTbmFwc2hvdCBnZW5lcmF0ZWQgd2l0aDoKKyMgZ2l0IGNvbmZpZyB0 YXIudGFyLnh6LmNvbW1hbmQgInh6IC1jIgorIyBleHBvcnQgU0hBPWBnaXQgcmV2LXBhcnNlIC0t c2hvcnQgSEVBRGAgOyBleHBvcnQgVkVSU0lPTj01Ljg3IDsgZ2l0IGFyY2hpdmUgLS1mb3JtYXQ9 dGFyLnh6IC1vIGJsdWV6LSRWRVJTSU9OKzEuZ2l0JFNIQS50YXIueHogLS1wcmVmaXg9Ymx1ZXot JFZFUlNJT04rMS5naXQkU0hBLyBIRUFECisjIGFzIGEgcG9zdC1yZWxlYXNlIHNuYXBzaG90LCBz ZWU6CisjIGh0dHBzOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9QYWNrYWdpbmdEcmFmdHMvVGls ZGVWZXJzaW9uaW5nCislZ2xvYmFsIGdpdHNoYSA4NzUwMTI5ZWZjYTgKKwogTmFtZTogICAgYmx1 ZXoKLVZlcnNpb246IDUuODcKLVJlbGVhc2U6IDclez9kaXN0fQorVmVyc2lvbjogNS44NysxLmdp dCV7Z2l0c2hhfQorUmVsZWFzZTogMSV7P2Rpc3R9CiBTdW1tYXJ5OiBCbHVldG9vdGggdXRpbGl0 aWVzCiBMaWNlbnNlOiBHUEwtMi4wLW9yLWxhdGVyCiBVUkw6ICAgICBodHRwOi8vd3d3LmJsdWV6 Lm9yZy8KIAogU291cmNlMDogaHR0cHM6Ly93d3cua2VybmVsLm9yZy9wdWIvbGludXgvYmx1ZXRv b3RoLyV7bmFtZX0tJXt2ZXJzaW9ufS50YXIueHoKIAotIyBnaXQgZm9ybWF0LXBhdGNoIC0tc3Rk b3V0IDUuODcuLi4zMGRiNjZkYzk3MWJkMWNkOTVkNGE3YjBlZWEyOTYzNjdhYjY1YjNiCi1QYXRj aDE6IDUuODctYnVnLWZpeGVzLTEucGF0Y2gKLSMgQ1ZFLTIwMjYtNzUwMzIKLVBhdGNoMjogYXZy Y3AtZ2V0Zm9sZGVyaXRlbXMucGF0Y2gKLSMgQ1ZFLTIwMjYtODAxODYKLVBhdGNoMzogbmFtZTJ1 dGY4LW92ZXJmbG93LnBhdGNoCi0jIENWRS0yMDI2LTgwMTg1Ci1QYXRjaDQ6IHNkcC14bWwtdHlw ZS1jb25mdXNpb24ucGF0Y2gKLQogQnVpbGRSZXF1aXJlczogZGJ1cy1kZXZlbCA+PSAxLjYKIEJ1 aWxkUmVxdWlyZXM6IGdsaWIyLWRldmVsCiBCdWlsZFJlcXVpcmVzOiBsaWJlbGwtZGV2ZWwgPj0g MC4zOQpAQCAtMTgwLDcgKzE3OCw3IEBAIGluc3RhbGwgLW0wNzU1IHRvb2xzL2J0c25vb3AgJFJQ TV9CVUlMRF9ST09UJXtfYmluZGlyfQogIyBzb21lIGlzc3VlcyBhbmQgdG8gc2V0IHRoZSBNQUMg YWRkcmVzcyBvbiBIQ0lzIHdoaWNoIGRvbid0IGhhdmUgdGhlaXIKICMgTUFDIGFkZHJlc3MgY29u ZmlndXJlZCAKIGluc3RhbGwgLW0wNzU1IHRvb2xzL2J0bWdtdCAkUlBNX0JVSUxEX1JPT1Qle19i aW5kaXJ9Ci1pbnN0YWxsIC1tMDY0NCBkb2MvYnRtZ210LjEgJFJQTV9CVUlMRF9ST09UJXtfbWFu ZGlyfS9tYW4xLworcnN0Mm1hbiBkb2MvYnRtZ210LnJzdCAtLW5vLWRhdGVzdGFtcCAtLW5vLWdl bmVyYXRvciAkUlBNX0JVSUxEX1JPT1Qle19tYW5kaXJ9L21hbjEvYnRtZ210LjEKIAogIyBSZW1v dmUgbGlidG9vbCBhcmNoaXZlCiBmaW5kICRSUE1fQlVJTERfUk9PVCAtbmFtZSAnKi5sYScgLWRl bGV0ZQpAQCAtMzQ2LDYgKzM0NCw5IEBAIGluc3RhbGwgZW11bGF0b3IvYnR2aXJ0ICR7UlBNX0JV SUxEX1JPT1R9LyV7X2xpYmV4ZWNkaXJ9L2JsdWV0b290aC8KICV7X3VzZXJ1bml0ZGlyfS9vYmV4 LnNlcnZpY2UKIAogJWNoYW5nZWxvZworKiBXZWQgU2VwIDA5IDIwMjYgQmFzdGllbiBOb2NlcmEg PGJub2NlcmFAcmVkaGF0LmNvbT4gLSA1Ljg3KzEuZ2l0ODc1MDEyOWVmY2E4LTEKKy0gUmViYXNl IHRvIGxhdGVzdCB1cHN0cmVhbSBIRUFEIChDbG9zZXM6ICMyNTI4MTgxLCAjMjUyNTI5MykKKwog KiBXZWQgQXVnIDI2IDIwMjYgQmFzdGllbiBOb2NlcmEgPGJub2NlcmFAcmVkaGF0LmNvbT4gLSA1 Ljg3LTcKIC0gRml4IENWRS0yMDI2LTgwMTg1IChDbG9zZXM6ICMyNTI0Mzk3KQogCgpkaWZmIC0t Z2l0IGEvbmFtZTJ1dGY4LW92ZXJmbG93LnBhdGNoIGIvbmFtZTJ1dGY4LW92ZXJmbG93LnBhdGNo CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0N2IyYjZkLi4wMDAwMDAwCi0tLSBhL25h bWUydXRmOC1vdmVyZmxvdy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzNDcgKzAsMCBAQAot RnJvbSAzODFiNWQwZDIwODk3MjU4NjI4MjExNmQzMzM4NjViYTkzYjhkZWMyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQotRnJvbTogTHVpeiBBdWd1c3RvIHZvbiBEZW50eiA8bHVpei52b24uZGVu dHpAaW50ZWwuY29tPgotRGF0ZTogV2VkLCAxOSBBdWcgMjAyNiAxNjowMjo0NyAtMDQwMAotU3Vi amVjdDogW1BBVENIIDAxLzEwXSBlaXI6IEZpeCBzdGFjayBidWZmZXIgb3ZlcmZsb3cgd2hlbiBw YXJzaW5nIHRoZSByZW1vdGUKLSBuYW1lCi0KLW5hbWUydXRmOCgpIGNvcGllcyBsZW4gYnl0ZXMg aW50byBhIEhDSV9NQVhfTkFNRV9MRU5HVEggKyAyLCBzbyAyNTAsCi1ieXRlIHN0YWNrIGJ1ZmZl ciB3aXRob3V0IGNsYW1waW5nIGxlbiBmaXJzdC4KLQotZWlyX3BhcnNlKCkgb25seSByZWplY3Rz IGEgZmllbGQgb25jZSBpdCBydW5zIHBhc3QgdGhlIGVuZCBvZiB0aGUgRUlSCi1kYXRhLCBhbmQg dGhhdCBkYXRhIGlzIHVwIHRvIDI1NSBieXRlcywgc28gZmllbGRfbGVuIGNhbiBiZSAyNTQgYW5k IHRoZQotZGF0YV9sZW4gcGFzc2VkIHRvIG5hbWUydXRmOCgpIGNhbiByZWFjaCAyNTMuIHN0cm5j cHkoKSB0aGVuIHdyaXRlcyAyNTMKLWJ5dGVzIGludG8gdGhlIDI1MCBieXRlIGJ1ZmZlciBhbmQg bGVhdmVzIGl0IHVudGVybWluYXRlZCwgc28gdGhlCi1mb2xsb3dpbmcgZ19zdHJzdHJpcCgpIGFu ZCBnX3N0cmR1cCgpIGFsc28gcmVhZCBwYXN0IHRoZSBlbmQuCi0KLVRoZSBFSVIgZGF0YSBjb21l cyBmcm9tIGEgcmVtb3RlIGRldmljZSwgZWl0aGVyIGluIGFuIGV4dGVuZGVkIGlucXVpcnkKLXJl c3BvbnNlIG9yIGluIGFuIGFkdmVydGlzaW5nIHJlcG9ydCwgc28gdGhlIGxlbmd0aCBpcyBhdHRh Y2tlcgotY29udHJvbGxlZC4KLQotQ2xhbXAgbGVuIHRvIEhDSV9NQVhfTkFNRV9MRU5HVEgsIHdo aWNoIGlzIHdoYXQgdGhlIGxvY2FsIG5hbWUgaXMKLWxpbWl0ZWQgdG8gYW55d2F5LCBhbmQgd2hh dCBhZF9yZXBsYWNlX25hbWUoKSBhbHJlYWR5IGNsYW1wcyB0by4KLQotRml4ZXM6IGh0dHBzOi8v Z2l0aHViLmNvbS9ibHVlei9ibHVlei9zZWN1cml0eS9hZHZpc29yaWVzL0dIU0EtNjhoNi01cWdw LTM5NzUKLUFzc2lzdGVkLWJ5OiBDbGF1ZGU6Y2xhdWRlLW9wdXMtNQotLS0tCi0gc3JjL2Vpci5j IHwgMiArKwotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBh L3NyYy9laXIuYyBiL3NyYy9laXIuYwotaW5kZXggODljMTU5OTVhNTQ2Li40NDIxYjE2NjJkNjUg MTAwNjQ0Ci0tLS0gYS9zcmMvZWlyLmMKLSsrKyBiL3NyYy9laXIuYwotQEAgLTEzNyw2ICsxMzcs OCBAQCBzdGF0aWMgY2hhciAqbmFtZTJ1dGY4KGNvbnN0IHVpbnQ4X3QgKm5hbWUsIHVpbnQ4X3Qg bGVuKQotIHsKLSAJY2hhciB1dGY4X25hbWVbSENJX01BWF9OQU1FX0xFTkdUSCArIDJdOwotIAot KwlsZW4gPSBNSU4obGVuLCBIQ0lfTUFYX05BTUVfTEVOR1RIKTsKLSsKLSAJbWVtc2V0KHV0Zjhf bmFtZSwgMCwgc2l6ZW9mKHV0ZjhfbmFtZSkpOwotIAlzdHJuY3B5KHV0ZjhfbmFtZSwgKGNoYXIg KikgbmFtZSwgbGVuKTsKLSAJc3RydG91dGY4KHV0ZjhfbmFtZSwgbGVuKTsKLS0tIAotMi41NS4w Ci0KLQotRnJvbSA3ODQyMDMxNjBlMmZiOTA2MDkwMDU5MzM2ZDg2YTI0ZjI4MzQ5YjAyIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTHVpeiBBdWd1c3RvIHZvbiBEZW50eiA8bHVpei52 b24uZGVudHpAaW50ZWwuY29tPgotRGF0ZTogVGh1LCAyMCBBdWcgMjAyNiAxMzo0MjoxMiAtMDQw MAotU3ViamVjdDogW1BBVENIIDAyLzEwXSBzaGFyZWQvYWQ6IEZpeCByZWFkaW5nIHBhc3QgdGhl IG5hbWUgdGhhdCB3YXMgY29waWVkCi0KLWFkX3JlcGxhY2VfbmFtZSgpIGNvcGllcyBhdCBtb3N0 IEhDSV9NQVhfTkFNRV9MRU5HVEggYnl0ZXMgb2YgdGhlIG5hbWUKLWludG8gaXRzIGJ1ZmZlciwg YnV0IHRoZW4gaGFuZHMgdGhlIGZ1bGwgaW92X2xlbiB0byBzdHJpc3V0ZjgoKSBhbmQKLXN0cnRv dXRmOCgpLgotCi1UaGUgYWR2ZXJ0aXNpbmcgZGF0YSBpcyB1cCB0byAyNTUgYnl0ZXMsIHNvIGEg Y29tcGxldGUgbG9jYWwgbmFtZSBmaWVsZAotY2FuIGhvbGQgMjUzIG9mIHRoZW0sIGFuZCBib3Ro IGVuZCB1cCByZWFkaW5nIDI1MyBieXRlcyBvdXQgb2YgYSAyNTAKLWJ5dGUgYnVmZmVyLCAzIG9m IHRoZW0gcGFzdCBpdHMgZW5kLgotCi1Vc2UgdGhlIHNhbWUgY2xhbXBlZCBsZW5ndGggdGhyb3Vn aG91dC4KLQotQXNzaXN0ZWQtYnk6IENsYXVkZTpjbGF1ZGUtb3B1cy01Ci0tLS0KLSBzcmMvc2hh cmVkL2FkLmMgfCA4ICsrKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwg NCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvYWQuYyBiL3NyYy9zaGFy ZWQvYWQuYwotaW5kZXggYjFkMWI4NDYxMWFhLi5lYmVlMDc4NTAwYzYgMTAwNjQ0Ci0tLS0gYS9z cmMvc2hhcmVkL2FkLmMKLSsrKyBiL3NyYy9zaGFyZWQvYWQuYwotQEAgLTI3NiwxNSArMjc2LDE1 IEBAIHN0YXRpYyBib29sIGFkX3JlcGxhY2VfdXVpZDEyOChzdHJ1Y3QgYnRfYWQgKmFkLCBzdHJ1 Y3QgaW92ZWMgKmlvdikKLSBzdGF0aWMgYm9vbCBhZF9yZXBsYWNlX25hbWUoc3RydWN0IGJ0X2Fk ICphZCwgc3RydWN0IGlvdmVjICppb3YpCi0gewotIAljaGFyIHV0ZjhfbmFtZVtIQ0lfTUFYX05B TUVfTEVOR1RIICsgMl07Ci0rCXNpemVfdCBsZW4gPSBNSU4oaW92LT5pb3ZfbGVuLCAoc2l6ZV90 KSBIQ0lfTUFYX05BTUVfTEVOR1RIKTsKLSAKLSAJbWVtc2V0KHV0ZjhfbmFtZSwgMCwgc2l6ZW9m KHV0ZjhfbmFtZSkpOwotLQlzdHJuY3B5KHV0ZjhfbmFtZSwgKGNvbnN0IGNoYXIgKilpb3YtPmlv dl9iYXNlLAotLQkJCU1JTihpb3YtPmlvdl9sZW4sIEhDSV9NQVhfTkFNRV9MRU5HVEgpKTsKLSsJ c3RybmNweSh1dGY4X25hbWUsIChjb25zdCBjaGFyICopaW92LT5pb3ZfYmFzZSwgbGVuKTsKLSAK LS0JaWYgKHN0cmlzdXRmOCh1dGY4X25hbWUsIGlvdi0+aW92X2xlbikpCi0rCWlmIChzdHJpc3V0 ZjgodXRmOF9uYW1lLCBsZW4pKQotIAkJZ290byBkb25lOwotIAotLQlzdHJ0b3V0ZjgodXRmOF9u YW1lLCBpb3YtPmlvdl9sZW4pOwotKwlzdHJ0b3V0ZjgodXRmOF9uYW1lLCBsZW4pOwotIAotIAkv KiBSZW1vdmUgbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzICovCi0g CXN0cnN0cmlwKHV0ZjhfbmFtZSk7Ci0tLSAKLTIuNTUuMAotCi0KLUZyb20gZGViZDQzMmVmMTNj NWVhOWZmYWI5ZmZjYmZjYjQ1MzcyOTQ2OTIwZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZy b206IEx1aXogQXVndXN0byB2b24gRGVudHogPGx1aXoudm9uLmRlbnR6QGludGVsLmNvbT4KLURh dGU6IFRodSwgMjAgQXVnIDIwMjYgMTM6Mjg6MzggLTA0MDAKLVN1YmplY3Q6IFtQQVRDSCAwMy8x MF0gdW5pdC90ZXN0LWVpcjogQWRkIHRlc3RzIGZvciB0aGUgbG9uZ2VzdCBsb2NhbCBuYW1lcwot Ci1Ob3RoaW5nIGNvdmVyZWQgYSBuYW1lIGFueXdoZXJlIG5lYXIgdGhlIHNpemUgb2YgdGhlIGJ1 ZmZlciBpdCBpcyBjb3BpZWQKLWludG8sIHdoaWNoIGlzIHdoeSB0aGUgbWlzc2luZyBjbGFtcCB3 ZW50IHVubm90aWNlZC4KLQotQWRkIHR3byB0ZXN0cy4gVGhlIGZpcnN0IHVzZXMgYSBuYW1lIG9m IEhDSV9NQVhfTkFNRV9MRU5HVEggYnl0ZXMsIHRoZQotbG9uZ2VzdCBvbmUgdGhhdCBmaXRzLCB0 byBwaW4gdGhlIGJvdW5kYXJ5IGRvd24uCi0KLVRoZSBzZWNvbmQgdXNlcyBhIG5hbWUgb2YgMjUz IGJ5dGVzLCBhcyBsYXJnZSBhcyBlaXJfcGFyc2UoKSBjYW4gYmUKLWhhbmRlZCBnaXZlbiB0aGUg RUlSIGxlbmd0aCBpcyBhIHNpbmdsZSBieXRlLCBhbmQgd2hpY2ggZG9lcyBub3QgZml0LgotUnVu IGFnYWluc3QgdGhlIGNvZGUgYmVmb3JlIHRoZSBwcmV2aW91cyBwYXRjaCwgaXQgZGllcyB3aXRo Ci0KLSAgKioqIGJ1ZmZlciBvdmVyZmxvdyBkZXRlY3RlZCAqKio6IHRlcm1pbmF0ZWQKLQotQXNz aXN0ZWQtYnk6IENsYXVkZTpjbGF1ZGUtb3B1cy01Ci0tLS0KLSB1bml0L3Rlc3QtZWlyLmMgfCA2 MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gMSBm aWxlIGNoYW5nZWQsIDYyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3VuaXQvdGVzdC1l aXIuYyBiL3VuaXQvdGVzdC1laXIuYwotaW5kZXggNjIxNjRjYTk5M2Y2Li4zMjZiYzg5OWUyNTEg MTAwNjQ0Ci0tLS0gYS91bml0L3Rlc3QtZWlyLmMKLSsrKyBiL3VuaXQvdGVzdC1laXIuYwotQEAg LTQ0MCw2ICs0NDAsNjQgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB0ZXN0X2RhdGEgaXNvXzIwMjJf anBfbmFtZV90ZXN0ID0gewotIAkudHhfcG93ZXIgPSAxMjcsCi0gfTsKLSAKLSsvKgotKyAqIEEg Y29tcGxldGUgbG9jYWwgbmFtZSBvZiBIQ0lfTUFYX05BTUVfTEVOR1RIIGJ5dGVzLCB0aGUgbG9u Z2VzdCBvbmUgdGhhdAotKyAqIGZpdHMgdGhlIGJ1ZmZlciBlaXJfcGFyc2UoKSBjb3BpZXMgdGhl IG5hbWUgaW50by4KLSsgKi8KLStzdGF0aWMgdW5zaWduZWQgY2hhciBtYXhfbmFtZV9kYXRhW0hD SV9NQVhfTkFNRV9MRU5HVEggKyAyXTsKLStzdGF0aWMgY2hhciBtYXhfbmFtZVtIQ0lfTUFYX05B TUVfTEVOR1RIICsgMV07Ci0rCi0rc3RhdGljIGNvbnN0IHN0cnVjdCB0ZXN0X2RhdGEgbWF4X25h bWVfdGVzdCA9IHsKLSsJLmVpcl9kYXRhID0gbWF4X25hbWVfZGF0YSwKLSsJLmVpcl9zaXplID0g c2l6ZW9mKG1heF9uYW1lX2RhdGEpLAotKwkubmFtZSA9IG1heF9uYW1lLAotKwkubmFtZV9jb21w bGV0ZSA9IHRydWUsCi0rCS50eF9wb3dlciA9IDEyNywKLSt9OwotKwotK3N0YXRpYyB2b2lkIG1h eF9uYW1lX3NldHVwKGNvbnN0IHZvaWQgKmRhdGEpCi0rewotKwltYXhfbmFtZV9kYXRhWzBdID0g c2l6ZW9mKG1heF9uYW1lX2RhdGEpIC0gMTsKLSsJbWF4X25hbWVfZGF0YVsxXSA9IEVJUl9OQU1F X0NPTVBMRVRFOwotKwltZW1zZXQobWF4X25hbWVfZGF0YSArIDIsICdBJywgSENJX01BWF9OQU1F X0xFTkdUSCk7Ci0rCi0rCW1lbXNldChtYXhfbmFtZSwgJ0EnLCBIQ0lfTUFYX05BTUVfTEVOR1RI KTsKLSsJbWF4X25hbWVbSENJX01BWF9OQU1FX0xFTkdUSF0gPSAnXDAnOwotKwotKwl0ZXN0ZXJf c2V0dXBfY29tcGxldGUoKTsKLSt9Ci0rCi0rLyoKLSsgKiBUaGUgbG9uZ2VzdCBjb21wbGV0ZSBs b2NhbCBuYW1lIGVpcl9wYXJzZSgpIGNhbiBiZSBoYW5kZWQgYXQgYWxsLCB3aGljaCBpcwotKyAq IGJvdW5kZWQgYnkgdGhlIEVJUiBsZW5ndGggYmVpbmcgYSBzaW5nbGUgYnl0ZS4gVGhhdCBpcyAy NTMgYnl0ZXMsIG1vcmUgdGhhbgotKyAqIHRoZSBidWZmZXIgaXQgaXMgY29waWVkIGludG8sIHNv IHRoaXMgdXNlZCB0byBvdmVyZmxvdyBpdC4KLSsgKi8KLStzdGF0aWMgdW5zaWduZWQgY2hhciBs b25nX25hbWVfZGF0YVsyNTVdOwotK3N0YXRpYyBjaGFyIGxvbmdfbmFtZVtzaXplb2YobG9uZ19u YW1lX2RhdGEpIC0gMiArIDFdOwotKwotKy8qIFRoZSBuYW1lIGRvZXMgbm90IGZpdCwgc28gaXQg Y29tZXMgYmFjayBjbGFtcGVkIHRvIEhDSV9NQVhfTkFNRV9MRU5HVEggKi8KLSsjZGVmaW5lIExP TkdfTkFNRV9MRU4JSENJX01BWF9OQU1FX0xFTkdUSAotKwotK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg dGVzdF9kYXRhIGxvbmdfbmFtZV90ZXN0ID0gewotKwkuZWlyX2RhdGEgPSBsb25nX25hbWVfZGF0 YSwKLSsJLmVpcl9zaXplID0gc2l6ZW9mKGxvbmdfbmFtZV9kYXRhKSwKLSsJLm5hbWUgPSBsb25n X25hbWUsCi0rCS5uYW1lX2NvbXBsZXRlID0gdHJ1ZSwKLSsJLnR4X3Bvd2VyID0gMTI3LAotK307 Ci0rCi0rc3RhdGljIHZvaWQgbG9uZ19uYW1lX3NldHVwKGNvbnN0IHZvaWQgKmRhdGEpCi0rewot Kwlsb25nX25hbWVfZGF0YVswXSA9IHNpemVvZihsb25nX25hbWVfZGF0YSkgLSAxOwotKwlsb25n X25hbWVfZGF0YVsxXSA9IEVJUl9OQU1FX0NPTVBMRVRFOwotKwltZW1zZXQobG9uZ19uYW1lX2Rh dGEgKyAyLCAnQicsIHNpemVvZihsb25nX25hbWVfZGF0YSkgLSAyKTsKLSsKLSsJbWVtc2V0KGxv bmdfbmFtZSwgJ0InLCBMT05HX05BTUVfTEVOKTsKLSsJbG9uZ19uYW1lW0xPTkdfTkFNRV9MRU5d ID0gJ1wwJzsKLSsKLSsJdGVzdGVyX3NldHVwX2NvbXBsZXRlKCk7Ci0rfQotKwotIHN0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIGJsdWVzY19kYXRhW10gPSB7Ci0gCQkweDAyLCAweDAxLCAweDA2 LCAweDAzLCAweDAyLCAweDE2LCAweDE4LCAweDEyLAotIAkJMHgwOSwgMHg1NywgMHg2MSwgMHg2 OCwgMHg2ZiwgMHg2ZiwgMHgyMCwgMHg0MiwKLUBAIC03NTYsNiArODE0LDEwIEBAIGludCBtYWlu KGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCQkJCQkJCQkJTlVMTCk7Ci0gCXRlc3Rlcl9hZGQo Ii9laXIvaXNvLTIwMjItanAtbmFtZSIsICZpc29fMjAyMl9qcF9uYW1lX3Rlc3QsIE5VTEwsCi0g CQkJCQkJCXRlc3RfcGFyc2luZywgTlVMTCk7Ci0rCXRlc3Rlcl9hZGQoIi9laXIvbWF4LW5hbWUi LCAmbWF4X25hbWVfdGVzdCwgbWF4X25hbWVfc2V0dXAsCi0rCQkJCQkJCXRlc3RfcGFyc2luZywg TlVMTCk7Ci0rCXRlc3Rlcl9hZGQoIi9laXIvbG9uZy1uYW1lIiwgJmxvbmdfbmFtZV90ZXN0LCBs b25nX25hbWVfc2V0dXAsCi0rCQkJCQkJCXRlc3RfcGFyc2luZywgTlVMTCk7Ci0gCXRlc3Rlcl9h ZGQoIi9hZC9ibHVlc2MiLCAmYmx1ZXNjX3Rlc3QsIE5VTEwsIHRlc3RfcGFyc2luZywgTlVMTCk7 Ci0gCXRlc3Rlcl9hZGQoIi9hZC93YWhvb3NjYWxlIiwgJndhaG9vX3NjYWxlX3Rlc3QsIE5VTEws IHRlc3RfcGFyc2luZywKLSAJCQkJCQkJCQlOVUxMKTsKLS0tIAotMi41NS4wCi0KLQotRnJvbSAz YWQ4MzJhM2MyYTk4OWVkOWYxNDU4NmNkM2I1NmY0MGFkNjA4Njc5IE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQotRnJvbTogTHVpeiBBdWd1c3RvIHZvbiBEZW50eiA8bHVpei52b24uZGVudHpAaW50 ZWwuY29tPgotRGF0ZTogV2VkLCAxOSBBdWcgMjAyNiAxNjoxMDozNiAtMDQwMAotU3ViamVjdDog W1BBVENIIDA0LzEwXSBzaGFyZWQvdXRpbDogTWFrZSBzdHJubGVudXRmOCByZWplY3QgaWxsLWZv cm1lZAotIHNlcXVlbmNlcwotCi1zdHJubGVudXRmOCgpIG9ubHkgY2hlY2tzIHRoZSBzaGFwZSBv ZiB0aGUgbGVhZCBieXRlIGFuZCB0aGF0IHRoZQotZm9sbG93aW5nIGJ5dGVzIGFyZSBjb250aW51 YXRpb24gYnl0ZXMsIHNvIGl0IGFjY2VwdHMgc2VxdWVuY2VzIHRoYXQgYXJlCi1ub3Qgd2VsbC1m b3JtZWQgVVRGLTg6Ci0KLSAgQzAgODAgICAgICAgIG92ZXJsb25nIGVuY29kaW5nIG9mIFUrMDAw MAotICBDMCBBRiAgICAgICAgb3ZlcmxvbmcgZW5jb2Rpbmcgb2YgJy8nCi0gIEVEIEEwIDgwICAg ICBVVEYtMTYgc3Vycm9nYXRlIFUrRDgwMAotICBGNSA4MCA4MCA4MCAgcGFzdCB0aGUgVSsxMEZG RkYgbGltaXQKLQotc3RyaXN1dGY4KCkgYW5kIHN0cnRvdXRmOCgpIGFyZSBidWlsdCBvbiBpdCwg c28gYSByZW1vdGUgbmFtZSBjb250YWluaW5nCi1hbnkgb2YgdGhvc2UgaXMgY29uc2lkZXJlZCB2 YWxpZCBhbmQgcGFzc2VkIG9uIHVuY2hhbmdlZCwgZm9yIGluc3RhbmNlCi10byBELUJ1cywgd2hp Y2ggZG9lcyB2YWxpZGF0ZSBVVEYtOCBzdHJpY3RseSBhbmQgcmVqZWN0cyB0aGVtLgotCi1WYWxp ZGF0ZSB0aGUgc2VxdWVuY2VzIGFzIGRlZmluZWQgYnkgdGFibGUgMy03IG9mIHRoZSBVbmljb2Rl IFN0YW5kYXJkCi1pbnN0ZWFkLCB3aGljaCBjb25zdHJhaW5zIHRoZSByYW5nZSBvZiB0aGUgc2Vj b25kIGJ5dGUgZm9yIHRoZSBFMCwgRUQsCi1GMCBhbmQgRjQgbGVhZCBieXRlcyBhbmQgcmVqZWN0 cyB0aGUgQzAsIEMxIGFuZCBGNSB0byBGRiBvbmVzIG91dHJpZ2h0LgotCi1UaGUgZGVjb2Rpbmcg aXMgc3BsaXQgb3V0IGludG8gYSBoZWxwZXIgdGhhdCBhbHNvIHJlcG9ydHMgdGhlIHNpemUgb2YK LXRoZSBtYXhpbWFsIHN1YnBhcnQgb2YgYW4gaWxsLWZvcm1lZCBzZXF1ZW5jZSwgc28gdGhhdCBj YWxsZXJzIGNhbiBza2lwCi1vdmVyIGl0LCBhcyByZWNvbW1lbmRlZCBieSBzZWN0aW9uIDMuOSBv ZiB0aGUgVW5pY29kZSBTdGFuZGFyZC4KLQotQXNzaXN0ZWQtYnk6IENsYXVkZTpjbGF1ZGUtb3B1 cy01Ci0tLS0KLSBzcmMvc2hhcmVkL3V0aWwuYyB8IDkwICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDYyIGluc2VydGlvbnMo KyksIDI4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3NoYXJlZC91dGlsLmMgYi9z cmMvc2hhcmVkL3V0aWwuYwotaW5kZXggNjJkZDEzNjliNzBkLi5lOTQ2MjE0ZWRiYjkgMTAwNjQ0 Ci0tLS0gYS9zcmMvc2hhcmVkL3V0aWwuYwotKysrIGIvc3JjL3NoYXJlZC91dGlsLmMKLUBAIC0y MjExLDQ0ICsyMjExLDc4IEBAIGNoYXIgKnN0cnN0cmlwKGNoYXIgKnN0cikKLSAJcmV0dXJuIHN0 cjsKLSB9Ci0gCi0tc2l6ZV90IHN0cm5sZW51dGY4KGNvbnN0IGNoYXIgKnN0ciwgc2l6ZV90IGxl bikKLS0KLSsvKgotKyAqIERlY29kZSB0aGUgVVRGLTggc2VxdWVuY2UgYXQgc3RyLCBhcyBkZWZp bmVkIGJ5IHRhYmxlIDMtNyBvZiB0aGUgVW5pY29kZQotKyAqIFN0YW5kYXJkLCBhbmQgcmV0dXJu IGl0cyBzaXplLCBvciAwIGlmIGl0IGlzIGlsbC1mb3JtZWQuCi0rICoKLSsgKiBzdWJsZW4gaXMg c2V0IHRvIHRoZSBzaXplIG9mIHRoZSBtYXhpbWFsIHN1YnBhcnQgb2YgdGhlIHNlcXVlbmNlLCB0 aGF0IGlzCi0rICogdGhlIG51bWJlciBvZiBsZWFkaW5nIGJ5dGVzIHRoYXQgY291bGQgc3RpbGwg aGF2ZSBmb3JtZWQgYSB3ZWxsLWZvcm1lZAotKyAqIHNlcXVlbmNlLCB3aGljaCBpcyB3aGF0IHRo ZSBjYWxsZXIgbmVlZHMgdG8gc2tpcCBvdmVyLgotKyAqLwotK3N0YXRpYyBzaXplX3QgdXRmOF9z ZXFsZW4oY29uc3QgdW5zaWduZWQgY2hhciAqc3RyLCBzaXplX3QgbGVuLCBzaXplX3QgKnN1Ymxl bikKLSB7Ci0tCXNpemVfdCBpID0gMDsKLSsJdW5zaWduZWQgY2hhciBsbyA9IDB4ODAsIGhpID0g MHhiZjsKLSsJc2l6ZV90IHNpemUsIGk7Ci0gCi0tCXdoaWxlIChpIDwgbGVuKSB7Ci0tCQl1bnNp Z25lZCBjaGFyIGMgPSBzdHJbaV07Ci0tCQlzaXplX3Qgc2l6ZSA9IDA7Ci0rCWlmIChzdHJbMF0g PD0gMHg3ZikgewotKwkJKnN1YmxlbiA9IDE7Ci0rCQlyZXR1cm4gMTsKLSsJfQotIAotLQkJLyog Q2hlY2sgdGhlIGZpcnN0IGJ5dGUgdG8gZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4g dGhlCi0tCQkgKiBVVEYtOCBjaGFyYWN0ZXIuCi0rCWlmIChzdHJbMF0gPj0gMHhjMiAmJiBzdHJb MF0gPD0gMHhkZikgewotKwkJc2l6ZSA9IDI7Ci0rCX0gZWxzZSBpZiAoc3RyWzBdID49IDB4ZTAg JiYgc3RyWzBdIDw9IDB4ZWYpIHsKLSsJCXNpemUgPSAzOwotKwkJLyogUmVqZWN0IHRoZSBvdmVy bG9uZyBlbmNvZGluZ3MgYW5kIHRoZSBVVEYtMTYgc3Vycm9nYXRlcyAqLwotKwkJaWYgKHN0clsw XSA9PSAweGUwKQotKwkJCWxvID0gMHhhMDsKLSsJCWVsc2UgaWYgKHN0clswXSA9PSAweGVkKQot KwkJCWhpID0gMHg5ZjsKLSsJfSBlbHNlIGlmIChzdHJbMF0gPj0gMHhmMCAmJiBzdHJbMF0gPD0g MHhmNCkgewotKwkJc2l6ZSA9IDQ7Ci0rCQkvKiBSZWplY3QgdGhlIG92ZXJsb25nIGVuY29kaW5n cyBhbmQgYW55dGhpbmcgcGFzdCBVKzEwRkZGRiAqLwotKwkJaWYgKHN0clswXSA9PSAweGYwKQot KwkJCWxvID0gMHg5MDsKLSsJCWVsc2UgaWYgKHN0clswXSA9PSAweGY0KQotKwkJCWhpID0gMHg4 ZjsKLSsJfSBlbHNlIHsKLSsJCS8qIEMwIGFuZCBDMSBhcmUgb3ZlcmxvbmcsIEY1IHRvIEZGIGFy ZSBvdXQgb2YgcmFuZ2UsIGFuZCBhCi0rCQkgKiBjb250aW51YXRpb24gYnl0ZSBjYW5ub3Qgc3Rh cnQgYSBzZXF1ZW5jZS4KLSAJCSAqLwotLQkJaWYgKChjICYgMHg4MCkgPT0gMHgwMCkKLS0JCQlz aXplID0gMTsKLS0JCWVsc2UgaWYgKChjICYgMHhFMCkgPT0gMHhDMCkKLS0JCQlzaXplID0gMjsK LS0JCWVsc2UgaWYgKChjICYgMHhGMCkgPT0gMHhFMCkKLS0JCQlzaXplID0gMzsKLS0JCWVsc2Ug aWYgKChjICYgMHhGOCkgPT0gMHhGMCkKLS0JCQlzaXplID0gNDsKLS0JCWVsc2UKLS0JCQkvKiBJ bnZhbGlkIFVURi04IHNlcXVlbmNlICovCi0tCQkJZ290byBkb25lOwotKwkJKnN1YmxlbiA9IDE7 Ci0rCQlyZXR1cm4gMDsKLSsJfQotIAotLQkJLyogQ2hlY2sgdGhlIGZvbGxvd2luZyBieXRlcyB0 byBlbnN1cmUgdGhleSBoYXZlIHRoZSBjb3JyZWN0Ci0tCQkgKiBmb3JtYXQuCi0tCQkgKi8KLS0J CWZvciAoc2l6ZV90IGogPSAxOyBqIDwgc2l6ZTsgKytqKSB7Ci0tCQkJaWYgKGkgKyBqID49IGxl biB8fCAoc3RyW2kgKyBqXSAmIDB4QzApICE9IDB4ODApCi0tCQkJCS8qIEludmFsaWQgVVRGLTgg c2VxdWVuY2UgKi8KLS0JCQkJZ290byBkb25lOwotKwlmb3IgKGkgPSAxOyBpIDwgc2l6ZTsgaSsr KSB7Ci0rCQlpZiAoaSA+PSBsZW4gfHwgc3RyW2ldIDwgbG8gfHwgc3RyW2ldID4gaGkpIHsKLSsJ CQkqc3VibGVuID0gaTsKLSsJCQlyZXR1cm4gMDsKLSAJCX0KLSAKLSsJCS8qIE9ubHkgdGhlIHNl Y29uZCBieXRlIGhhcyBhIHJlc3RyaWN0ZWQgcmFuZ2UgKi8KLSsJCWxvID0gMHg4MDsKLSsJCWhp ID0gMHhiZjsKLSsJfQotKwotKwkqc3VibGVuID0gc2l6ZTsKLSsJcmV0dXJuIHNpemU7Ci0rfQot KwotK3NpemVfdCBzdHJubGVudXRmOChjb25zdCBjaGFyICpzdHIsIHNpemVfdCBsZW4pCi0rewot KwlzaXplX3QgaSA9IDA7Ci0rCi0rCXdoaWxlIChpIDwgbGVuKSB7Ci0rCQlzaXplX3Qgc3VibGVu OwotKwotKwkJaWYgKCF1dGY4X3NlcWxlbigoY29uc3QgdW5zaWduZWQgY2hhciAqKSBzdHIgKyBp LCBsZW4gLSBpLAotKwkJCQkJCQkJJnN1YmxlbikpCi0rCQkJYnJlYWs7Ci0rCi0gCQkvKiBNb3Zl IHRvIHRoZSBuZXh0IGNoYXJhY3RlciAqLwotLQkJaSArPSBzaXplOwotKwkJaSArPSBzdWJsZW47 Ci0gCX0KLSAKLS1kb25lOgotIAlyZXR1cm4gaTsKLSB9Ci0gCi0tLSAKLTIuNTUuMAotCi0KLUZy b20gMTEwODFmNjBkOTVmNjQxZGRiY2E0YTUzOTIyZDg4Njk3MmM4N2FhMSBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKLUZyb206IEx1aXogQXVndXN0byB2b24gRGVudHogPGx1aXoudm9uLmRlbnR6 QGludGVsLmNvbT4KLURhdGU6IFdlZCwgMTkgQXVnIDIwMjYgMTY6MTE6MDMgLTA0MDAKLVN1Ympl Y3Q6IFtQQVRDSCAwNS8xMF0gc2hhcmVkL3V0aWw6IEFkZCBzdHIydXRmOAotCi1UaGVyZSBhcmUg Zml2ZSBuZWFyIGNvcGllcyBvZiB0aGUgc2FtZSAidHVybiBhIHJlbW90ZSBuYW1lIGludG8gYSBV VEYtOAotc3RyaW5nIiBoZWxwZXIsIGluIG1vbml0b3IvYXR0LmMsIHByb2ZpbGVzL2F1ZGlvL21j cC5jLCBwcm9maWxlcy9nYXAvZ2FzLmMsCi1zcmMvZWlyLmMgYW5kIHNyYy9zaGFyZWQvYWQuYywg YW5kIHRoZXkgZG8gbm90IGFncmVlIHdpdGggZWFjaCBvdGhlci4KLQotTW9zdCB0cnVuY2F0ZSBh dCB0aGUgZmlyc3QgaWxsLWZvcm1lZCBzZXF1ZW5jZSwgd2hpY2ggdGhyb3dzIGF3YXkgdGhlCi1y ZXN0IG9mIHRoZSBuYW1lLCB3aGlsZSB0aGUgbW9uaXRvciByZXBsYWNlcyBldmVyeSBub24tQVND SUkgYnl0ZSB3aXRoIGEKLXNwYWNlLCB3aGljaCBtYW5nbGVzIHBlcmZlY3RseSB2YWxpZCBVVEYt OCBuYW1lcyBhcyBzb29uIGFzIG9uZSBiYWQgYnl0ZQotYXBwZWFycy4gTW9zdCBhbHNvIGNvcHkg aW50byBhIGZpeGVkIHNpemUgc3RhY2sgYnVmZmVyIGZpcnN0LCB3aGljaCBpcwotd2hhdCBtYWRl IHRoZSBtaXNzaW5nIGNsYW1wIGluIHNyYy9laXIuYyBhIGJ1ZmZlciBvdmVyZmxvdy4KLQotQWRk IGEgc2luZ2xlIGhlbHBlciB0aGV5IGNhbiBzaGFyZS4gSXQgYWxsb2NhdGVzIHRoZSByZXN1bHQs IHNvIHRoZXJlIGlzCi1ubyB0cnVuY2F0aW9uIHRvIGEgYnVmZmVyIHNpemUsIGFuZCByZXBsYWNl cyBlYWNoIGlsbC1mb3JtZWQgc2VxdWVuY2UKLXdpdGggVStGRkZEIFJFUExBQ0VNRU5UIENIQVJB Q1RFUiByYXRoZXIgdGhhbiBkcm9wcGluZyB0aGUgcmVzdCBvZiB0aGUKLXN0cmluZywgbWF0Y2hp bmcgd2hhdCBnX3V0ZjhfbWFrZV92YWxpZCgpIGFuZCB0aGUgV0hBVFdHIEVuY29kaW5nCi1TdGFu ZGFyZCBkby4KLQotVGhlIHJlc3VsdCBoYXMgYmVlbiBjaGVja2VkIGJ5dGUgZm9yIGJ5dGUgYWdh aW5zdCBQeXRob24ncwotYnl0ZXMuZGVjb2RlKCd1dGYtOCcsIGVycm9ycz0ncmVwbGFjZScpIG92 ZXIgYWxsIG9uZSBhbmQgdHdvIGJ5dGUKLXNlcXVlbmNlcywgYSBzYW1wbGUgb2YgdGhlIHRocmVl IGJ5dGUgb25lcyBhbmQgMjAwMDAwIHJhbmRvbSBpbnB1dHMuCi0KLUFzc2lzdGVkLWJ5OiBDbGF1 ZGU6Y2xhdWRlLW9wdXMtNQotLS0tCi0gc3JjL3NoYXJlZC91dGlsLmMgfCA0NiArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gc3JjL3NoYXJlZC91dGlsLmgg fCAgNyArKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCA1MyBpbnNlcnRpb25zKCspCi0KLWRpZmYg LS1naXQgYS9zcmMvc2hhcmVkL3V0aWwuYyBiL3NyYy9zaGFyZWQvdXRpbC5jCi1pbmRleCBlOTQ2 MjE0ZWRiYjkuLjhlYzliNTJlNjQwMSAxMDA2NDQKLS0tLSBhL3NyYy9zaGFyZWQvdXRpbC5jCi0r KysgYi9zcmMvc2hhcmVkL3V0aWwuYwotQEAgLTIzMTUsMyArMjMxNSw0OSBAQCBjaGFyICpzdHJ0 b3V0ZjgoY2hhciAqc3RyLCBzaXplX3QgbGVuKQotIAltZW1zZXQoc3RyICsgaSwgMCwgbGVuIC0g aSk7Ci0gCXJldHVybiBzdHI7Ci0gfQotKwotK2NoYXIgKnN0cjJ1dGY4KGNvbnN0IHVpbnQ4X3Qg KnN0ciwgc2l6ZV90IGxlbikKLSt7Ci0rCWNoYXIgKnV0ZjgsICpvdXQsICpzdHJpcHBlZDsKLSsJ c2l6ZV90IGkgPSAwOwotKwotKwlpZiAoIXN0cikKLSsJCXJldHVybiBOVUxMOwotKwotKwkvKgot KwkgKiBJbnZhbGlkIGJ5dGVzIGFyZSByZXBsYWNlZCB3aXRoIFUrRkZGRCBSRVBMQUNFTUVOVCBD SEFSQUNURVIsIHdoaWNoCi0rCSAqIGlzIDMgYnl0ZXMgbG9uZywgc28gdGhhdCBpcyB0aGUgd29y c3QgY2FzZSBzaXplIG9mIHRoZSByZXN1bHQuCi0rCSAqLwotKwl1dGY4ID0gbWFsbG9jKGxlbiAq IDMgKyAxKTsKLSsJaWYgKCF1dGY4KQotKwkJcmV0dXJuIE5VTEw7Ci0rCi0rCW91dCA9IHV0Zjg7 Ci0rCi0rCXdoaWxlIChpIDwgbGVuKSB7Ci0rCQlzaXplX3Qgc3VibGVuOwotKwkJc2l6ZV90IHNp emUgPSB1dGY4X3NlcWxlbihzdHIgKyBpLCBsZW4gLSBpLCAmc3VibGVuKTsKLSsKLSsJCWlmIChz aXplKSB7Ci0rCQkJbWVtY3B5KG91dCwgc3RyICsgaSwgc2l6ZSk7Ci0rCQkJb3V0ICs9IHNpemU7 Ci0rCQkJaSArPSBzaXplOwotKwkJCWNvbnRpbnVlOwotKwkJfQotKwotKwkJLyogUmVwbGFjZSB0 aGUgbWF4aW1hbCBzdWJwYXJ0IHdpdGggVStGRkZEICovCi0rCQkqb3V0KysgPSAweGVmOwotKwkJ Km91dCsrID0gMHhiZjsKLSsJCSpvdXQrKyA9IDB4YmQ7Ci0rCQlpICs9IHN1YmxlbjsKLSsJfQot KwotKwkqb3V0ID0gJ1wwJzsKLSsKLSsJLyogUmVtb3ZlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdo aXRlc3BhY2UgY2hhcmFjdGVycyAqLwotKwlzdHJpcHBlZCA9IHN0cnN0cmlwKHV0ZjgpOwotKwlp ZiAoc3RyaXBwZWQgIT0gdXRmOCkKLSsJCW1lbW1vdmUodXRmOCwgc3RyaXBwZWQsIHN0cmxlbihz dHJpcHBlZCkgKyAxKTsKLSsKLSsJcmV0dXJuIHV0Zjg7Ci0rfQotZGlmZiAtLWdpdCBhL3NyYy9z aGFyZWQvdXRpbC5oIGIvc3JjL3NoYXJlZC91dGlsLmgKLWluZGV4IDU2MmE1YWYzMTc1MS4uMTk4 NGZiNzVmMDllIDEwMDY0NAotLS0tIGEvc3JjL3NoYXJlZC91dGlsLmgKLSsrKyBiL3NyYy9zaGFy ZWQvdXRpbC5oCi1AQCAtMTQzLDYgKzE0MywxMyBAQCBib29sIHN0cmlzdXRmOChjb25zdCBjaGFy ICpzdHIsIHNpemVfdCBsZW5ndGgpOwotIGJvb2wgYXJnc2lzdXRmOChpbnQgYXJnYywgY2hhciAq YXJndltdKTsKLSBjaGFyICpzdHJ0b3V0ZjgoY2hhciAqc3RyLCBzaXplX3QgbGVuKTsKLSAKLSsv KgotKyAqIFJldHVybiBhIG5ld2x5IGFsbG9jYXRlZCwgTlVMIHRlcm1pbmF0ZWQgYW5kIHdoaXRl c3BhY2Ugc3RyaXBwZWQgVVRGLTgKLSsgKiBjb3B5IG9mIHRoZSBmaXJzdCBsZW4gYnl0ZXMgb2Yg c3RyLCB3aXRoIGVhY2ggaWxsLWZvcm1lZCBzZXF1ZW5jZSByZXBsYWNlZAotKyAqIGJ5IFUrRkZG RCBSRVBMQUNFTUVOVCBDSEFSQUNURVIuIFRoZSByZXN1bHQgbXVzdCBiZSBmcmVlZCB3aXRoIGZy ZWUoKS4KLSsgKi8KLStjaGFyICpzdHIydXRmOChjb25zdCB1aW50OF90ICpzdHIsIHNpemVfdCBs ZW4pOwotKwotIHZvaWQgKnV0aWxfbWFsbG9jKHNpemVfdCBzaXplKTsKLSB2b2lkICp1dGlsX21l bWR1cChjb25zdCB2b2lkICpzcmMsIHNpemVfdCBzaXplKTsKLSAKLS0tIAotMi41NS4wCi0KLQot RnJvbSA3NGM1NmRmZjJhYTVkNWYzY2Y0MWU0NDZhMGFmZWViYjIxZmZjNGU0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQotRnJvbTogTHVpeiBBdWd1c3RvIHZvbiBEZW50eiA8bHVpei52b24uZGVu dHpAaW50ZWwuY29tPgotRGF0ZTogV2VkLCAxOSBBdWcgMjAyNiAxNjoxMjoxMSAtMDQwMAotU3Vi amVjdDogW1BBVENIIDA2LzEwXSB1bml0L3Rlc3QtdXRpbDogQWRkIHN0cjJ1dGY4IHRlc3RzCi0K LUNvdmVyIHRoZSBjYXNlcyBzdHIydXRmOCgpIGlzIG1lYW50IHRvIGhhbmRsZTogd2VsbC1mb3Jt ZWQgaW5wdXQgdGhhdAotaGFzIHRvIGJlIGxlZnQgYWxvbmUsIHdoaXRlc3BhY2Ugc3RyaXBwaW5n LCBpbnB1dCB0aGF0IGlzIG5vdCBOVUwKLXRlcm1pbmF0ZWQsIGFuZCB0aGUgaWxsLWZvcm1lZCBz ZXF1ZW5jZXMgdGhhdCBoYXZlIHRvIGJlIHJlcGxhY2VkLAotaW5jbHVkaW5nIHRoZSBvdmVybG9u ZyBlbmNvZGluZ3MsIHRoZSBVVEYtMTYgc3Vycm9nYXRlcyBhbmQgdGhlIGNvZGUKLXBvaW50cyBw YXN0IFUrMTBGRkZGLgotCi1BbHNvIGNoZWNrIHRoYXQgYSBtYXhpbWFsIHN1YnBhcnQgaXMgcmVw bGFjZWQgYnkgYSBzaW5nbGUgVStGRkZEIHJhdGhlcgotdGhhbiBvbmUgcGVyIGJ5dGUsIGFuZCB0 aGF0IHRoZSByZXN1bHQgaXMgYWx3YXlzIHdlbGwtZm9ybWVkIFVURi04LgotCi1Bc3Npc3RlZC1i eTogQ2xhdWRlOmNsYXVkZS1vcHVzLTUKLS0tLQotIHVuaXQvdGVzdC11dGlsLmMgfCA4MyArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSAxIGZpbGUgY2hh bmdlZCwgODMgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvdW5pdC90ZXN0LXV0aWwuYyBi L3VuaXQvdGVzdC11dGlsLmMKLWluZGV4IDE2NzJiMzJlYjM5Yy4uZjBiMWJiNzk5NGZiIDEwMDY0 NAotLS0tIGEvdW5pdC90ZXN0LXV0aWwuYwotKysrIGIvdW5pdC90ZXN0LXV0aWwuYwotQEAgLTgz LDYgKzgzLDg1IEBAIHN0YXRpYyB2b2lkIHRlc3RfbWluX21heChjb25zdCB2b2lkICpkYXRhKQot IAl0ZXN0ZXJfdGVzdF9wYXNzZWQoKTsKLSB9Ci0gCi0rc3RydWN0IHN0cjJ1dGY4X2RhdGEgewot Kwljb25zdCBjaGFyICppbnB1dDsJLyogTm90IE5VTCB0ZXJtaW5hdGVkLCBsZW4gYnl0ZXMgYXJl IHVzZWQgKi8KLSsJc2l6ZV90IGxlbjsKLSsJY29uc3QgY2hhciAqZXhwZWN0ZWQ7Ci0rfTsKLSsK LSsjZGVmaW5lIEZGRkQgIlx4ZWZceGJmXHhiZCIJCS8qIFUrRkZGRCBSRVBMQUNFTUVOVCBDSEFS QUNURVIgKi8KLSsKLStzdGF0aWMgY29uc3Qgc3RydWN0IHN0cjJ1dGY4X2RhdGEgc3RyMnV0Zjhf dGVzdHNbXSA9IHsKLSsJLyogTm90aGluZyB0byBkbyAqLwotKwl7ICIiLCAwLCAiIiB9LAotKwl7 ICJQaXhlbCA3IiwgNywgIlBpeGVsIDciIH0sCi0rCS8qIFdlbGwtZm9ybWVkIG11bHRpLWJ5dGUg c2VxdWVuY2VzIGFyZSBrZXB0IGFzIHRoZXkgYXJlICovCi0rCXsgIlx4ZTJceDgyXHhhYyA1Iiwg NSwgIlx4ZTJceDgyXHhhYyA1IiB9LAkJLyogVSsyMEFDICovCi0rCXsgIlx4ZjBceDlmXHg5NFx4 OGEiLCA0LCAiXHhmMFx4OWZceDk0XHg4YSIgfSwJCS8qIFUrMUY1MEEgKi8KLSsJLyogTGVhZGlu ZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZSBpcyByZW1vdmVkICovCi0rCXsgIiAgc3BhY2VkICAi LCAxMCwgInNwYWNlZCIgfSwKLSsJeyAiXHRcclxubmFtZVxuXHJcdCIsIDEwLCAibmFtZSIgfSwK LSsJeyAiICAgIiwgMywgIiIgfSwKLSsJLyogVGhlIG5hbWUgaXMgbm90IE5VTCB0ZXJtaW5hdGVk LCBvbmx5IGxlbiBieXRlcyBhcmUgdXNlZCAqLwotKwl7ICJ0cnVuY2F0ZWQiLCA0LCAidHJ1biIg fSwKLSsJLyogQSBieXRlIHRoYXQgY2FuIG5ldmVyIGFwcGVhciBpbiBVVEYtOCAqLwotKwl7ICJh Ylx4ZmYiImNkIiwgNSwgImFiIiBGRkZEICJjZCIgfSwKLSsJLyogQSBjb250aW51YXRpb24gYnl0 ZSBjYW5ub3Qgc3RhcnQgYSBzZXF1ZW5jZSAqLwotKwl7ICJhYlx4ODAiImNkIiwgNSwgImFiIiBG RkZEICJjZCIgfSwKLSsJLyogT25lIFUrRkZGRCBwZXIgbWF4aW1hbCBzdWJwYXJ0LCBub3QgcGVy IGJ5dGUgKi8KLSsJeyAiYWJceGUyXHg4MiIiY2QiLCA2LCAiYWIiIEZGRkQgImNkIiB9LAotKwkv KiBBIHNlcXVlbmNlIGN1dCBzaG9ydCBieSBsZW4gaXMgc3RpbGwgb25lIG1heGltYWwgc3VicGFy dCAqLwotKwl7ICJhYlx4ZTJceDgyXHhhYyIsIDQsICJhYiIgRkZGRCB9LAotKwkvKiBMYXRpbi0x IHRleHQgaXMgbm90IHZhbGlkIFVURi04ICovCi0rCXsgImNhZlx4ZTkiLCA0LCAiY2FmIiBGRkZE IH0sCi0rCS8qIE92ZXJsb25nIGVuY29kaW5ncyBhcmUgcmVqZWN0ZWQsIEMwIGFuZCBDMSBhcmUg bmV2ZXIgdmFsaWQgKi8KLSsJeyAiXHhjMFx4ODAiLCAyLCBGRkZEIEZGRkQgfSwKLSsJeyAiXHhj MFx4YWYiLCAyLCBGRkZEIEZGRkQgfSwKLSsJLyogVVRGLTE2IHN1cnJvZ2F0ZXMgaGF2ZSBubyBV VEYtOCBlbmNvZGluZyAqLwotKwl7ICJceGVkXHhhMFx4ODAiLCAzLCBGRkZEIEZGRkQgRkZGRCB9 LAotKwkvKiBVKzEwRkZGRiBpcyB0aGUgbGFzdCBjb2RlIHBvaW50LCBGNSB0byBGRiBhcmUgb3V0 IG9mIHJhbmdlICovCi0rCXsgIlx4ZjRceDkwXHg4MFx4ODAiLCA0LCBGRkZEIEZGRkQgRkZGRCBG RkZEIH0sCi0rCXsgIlx4ZjVceDgwXHg4MFx4ODAiLCA0LCBGRkZEIEZGRkQgRkZGRCBGRkZEIH0s Ci0rCS8qIFRoZSBsYXN0IGNvZGUgcG9pbnQgaXRzZWxmIGlzIGZpbmUgKi8KLSsJeyAiXHhmNFx4 OGZceGJmXHhiZiIsIDQsICJceGY0XHg4Zlx4YmZceGJmIiB9LAotKwkvKiBSZXBsYWNlbWVudCBh bmQgc3RyaXBwaW5nIGNvbWJpbmVkICovCi0rCXsgIiBceGZmICIsIDMsIEZGRkQgfSwKLSt9Owot KwotK3N0YXRpYyB2b2lkIHRlc3Rfc3RyMnV0ZjgoY29uc3Qgdm9pZCAqZGF0YSkKLSt7Ci0rCXNp emVfdCBpOwotKwotKwlmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKHN0cjJ1dGY4X3Rlc3RzKSAvCi0r CQkJCXNpemVvZihzdHIydXRmOF90ZXN0c1swXSk7IGkrKykgewotKwkJY29uc3Qgc3RydWN0IHN0 cjJ1dGY4X2RhdGEgKnRlc3QgPSAmc3RyMnV0ZjhfdGVzdHNbaV07Ci0rCQljaGFyICpzdHIgPSBz dHIydXRmOCgoY29uc3QgdWludDhfdCAqKSB0ZXN0LT5pbnB1dCwKLSsJCQkJCQkJCXRlc3QtPmxl bik7Ci0rCi0rCQlhc3NlcnQoc3RyKTsKLSsJCWlmIChzdHJjbXAoc3RyLCB0ZXN0LT5leHBlY3Rl ZCkpIHsKLSsJCQlwcmludGYoInRlc3QgJXp1OiBleHBlY3RlZCBcIiVzXCIsIGdvdCBcIiVzXCJc biIsIGksCi0rCQkJCQkJCXRlc3QtPmV4cGVjdGVkLCBzdHIpOwotKwkJCWZyZWUoc3RyKTsKLSsJ CQl0ZXN0ZXJfdGVzdF9mYWlsZWQoKTsKLSsJCQlyZXR1cm47Ci0rCQl9Ci0rCi0rCQkvKiBUaGUg cmVzdWx0IGlzIGFsd2F5cyB3ZWxsLWZvcm1lZCBVVEYtOCAqLwotKwkJYXNzZXJ0KHN0cmlzdXRm OChzdHIsIHN0cmxlbihzdHIpKSk7Ci0rCi0rCQlmcmVlKHN0cik7Ci0rCX0KLSsKLSsJdGVzdGVy X3Rlc3RfcGFzc2VkKCk7Ci0rfQotKwotK3N0YXRpYyB2b2lkIHRlc3Rfc3RyMnV0ZjhfbnVsbChj b25zdCB2b2lkICpkYXRhKQotK3sKLSsJYXNzZXJ0KCFzdHIydXRmOChOVUxMLCAwKSk7Ci0rCXRl c3Rlcl90ZXN0X3Bhc3NlZCgpOwotK30KLSsKLSBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJn dltdKQotIHsKLSAJdGVzdGVyX2luaXQoJmFyZ2MsICZhcmd2KTsKLUBAIC05NSw2ICsxNzQsMTAg QEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJCQl0ZXN0X2NsZWFudXBfdHlw ZSwgTlVMTCk7Ci0gCXRlc3Rlcl9hZGQoIi91dGlsL2NsZWFudXBfZmQiLCBOVUxMLCBOVUxMLAot IAkJCXRlc3RfY2xlYW51cF9mZCwgTlVMTCk7Ci0rCXRlc3Rlcl9hZGQoIi91dGlsL3N0cjJ1dGY4 IiwgTlVMTCwgTlVMTCwKLSsJCQl0ZXN0X3N0cjJ1dGY4LCBOVUxMKTsKLSsJdGVzdGVyX2FkZCgi L3V0aWwvc3RyMnV0ZjhfbnVsbCIsIE5VTEwsIE5VTEwsCi0rCQkJdGVzdF9zdHIydXRmOF9udWxs LCBOVUxMKTsKLSAKLSAJcmV0dXJuIHRlc3Rlcl9ydW4oKTsKLSB9Ci0tLSAKLTIuNTUuMAotCi0K LUZyb20gOGM4MWFiMTA4YjA5MTU0Yjg4NGIxYjA1NDlkYzljMjNmZmUzZWM2ZiBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKLUZyb206IEx1aXogQXVndXN0byB2b24gRGVudHogPGx1aXoudm9uLmRl bnR6QGludGVsLmNvbT4KLURhdGU6IFdlZCwgMTkgQXVnIDIwMjYgMTY6MTg6MzggLTA0MDAKLVN1 YmplY3Q6IFtQQVRDSCAwNy8xMF0gUmVwbGFjZSB0aGUgbmFtZTJ1dGY4IGNvcGllcyB3aXRoIHN0 cjJ1dGY4Ci1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFy c2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLW1vbml0b3IvYXR0 LmMsIHByb2ZpbGVzL2F1ZGlvL21jcC5jLCBwcm9maWxlcy9nYXAvZ2FzLmMgYW5kIHNyYy9laXIu YwotZWFjaCBjYXJyaWVkIHRoZWlyIG93biBuYW1lMnV0ZjgoKSwgYW5kIHNyYy9zaGFyZWQvYWQu YyBvcGVuIGNvZGVkIHRoZQotc2FtZSB0aGluZyBpbiBhZF9yZXBsYWNlX25hbWUoKSwgd2l0aCBu b25lIG9mIHRoZW0gYWdyZWVpbmcuCi0KLVVzZSB0aGUgc2hhcmVkIGhlbHBlciBpbnN0ZWFkLCB3 aGljaCBkcm9wcyBhcm91bmQgMTIwIGxpbmVzIGFuZCBnaXZlcwotZXZlcnkgY2FsbGVyIHRoZSBz YW1lIGJlaGF2aW91ci4KLQotVHdvIHRoaW5ncyBjaGFuZ2UgYXMgYSByZXN1bHQuIFRoZSBtb25p dG9yIHVzZWQgdG8gcmVwbGFjZSBldmVyeQotbm9uLUFTQ0lJIGJ5dGUgd2l0aCBhIHNwYWNlIGFz IHNvb24gYXMgb25lIGJhZCBieXRlIGFwcGVhcmVkLCBtYW5nbGluZwotdGhlIHZhbGlkIHBhcnQg b2YgdGhlIG5hbWUsIGFuZCBub3cgb25seSB0aGUgaWxsLWZvcm1lZCBzZXF1ZW5jZXMgYXJlCi1y ZXBsYWNlZC4gRXZlcnl0aGluZyBlbHNlIHVzZWQgdG8gdHJ1bmNhdGUgYXQgdGhlIGZpcnN0IGls bC1mb3JtZWQKLXNlcXVlbmNlLCB0aHJvd2luZyBhd2F5IHRoZSByZXN0IG9mIHRoZSBuYW1lLCBh bmQgbm93IGtlZXBzIGl0LgotCi1UaGUgdW5pdC90ZXN0LWVpciBleHBlY3RhdGlvbnMgYXJlIHVw ZGF0ZWQgYWNjb3JkaW5nbHksIGFuZCB0aGV5IHNob3cKLXRoZSBpbXByb3ZlbWVudDogdGhlIG5h bWUgdGhhdCB1c2VkIHRvIGJlIHJlcG9ydGVkIGFzICJ0ZXN0IOCkquCksOClgCIgaXMgbm93Ci1y ZXBvcnRlZCBhcyAidGVzdCDgpKrgpLDgpYA8VStGRkZEPuCljeCkt+CkviBpbnZhbGlkIi4KLQot c3RyMnV0ZjgoKSByZXR1cm5zIG1lbW9yeSBmcm9tIG1hbGxvYygpLCBzbyB0aGUgY2FsbGVycyB0 aGF0IHVzZWQKLWdfZnJlZSgpIG5vdyB1c2UgZnJlZSgpLgotCi1Bc3Npc3RlZC1ieTogQ2xhdWRl OmNsYXVkZS1vcHVzLTUKLS0tLQotIG1vbml0b3IvYXR0LmMgICAgICAgIHwgNjYgKysrKysrKysr KysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBwcm9maWxlcy9hdWRpby9tY3Au YyB8IDI0ICsrLS0tLS0tLS0tLS0tLS0KLSBwcm9maWxlcy9nYXAvZ2FzLmMgICB8IDIwICsrLS0t LS0tLS0tLS0tCi0gc3JjL2Vpci5jICAgICAgICAgICAgfCAyMiArKy0tLS0tLS0tLS0tLS0KLSBz cmMvc2hhcmVkL2FkLmMgICAgICB8IDIwICsrKysrKy0tLS0tLS0tCi0gdW5pdC90ZXN0LWVpci5j ICAgICAgfCAxMSArKysrKy0tLQotIDYgZmlsZXMgY2hhbmdlZCwgNDIgaW5zZXJ0aW9ucygrKSwg MTIxIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbW9uaXRvci9hdHQuYyBiL21vbml0b3Iv YXR0LmMKLWluZGV4IDc1MDZkYzUyOGU4NS4uNDQ5NjVhMmFhZjNiIDEwMDY0NAotLS0tIGEvbW9u aXRvci9hdHQuYwotKysrIGIvbW9uaXRvci9hdHQuYwotQEAgLTE1LDcgKzE1LDYgQEAKLSAjZW5k aWYKLSAKLSAjZGVmaW5lIF9HTlVfU09VUkNFCi0tI2luY2x1ZGUgPGN0eXBlLmg+Ci0gI2luY2x1 ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4K LUBAIC0yMzI1LDQwICsyMzI0LDE1IEBAIHN0YXRpYyB2b2lkIHZvbF9mbGFnX25vdGlmeShjb25z dCBzdHJ1Y3QgbDJjYXBfZnJhbWUgKmZyYW1lKQotIAlwcmludF92Y3NfZmxhZyhmcmFtZSk7Ci0g fQotIAotLXN0YXRpYyBjaGFyICpuYW1lMnV0ZjgoY29uc3QgdWludDhfdCAqbmFtZSwgdWludDE2 X3QgbGVuKQotLXsKLS0JY2hhciB1dGY4X25hbWVbSENJX01BWF9OQU1FX0xFTkdUSCArIDJdOwot LQlpbnQgaTsKLS0KLS0JaWYgKGdfdXRmOF92YWxpZGF0ZSgoY29uc3QgY2hhciAqKSBuYW1lLCBs ZW4sIE5VTEwpKQotLQkJcmV0dXJuIGdfc3RybmR1cCgoY2hhciAqKSBuYW1lLCBsZW4pOwotLQot LQlsZW4gPSBNSU4obGVuLCBzaXplb2YodXRmOF9uYW1lKSAtIDEpOwotLQotLQltZW1zZXQodXRm OF9uYW1lLCAwLCBzaXplb2YodXRmOF9uYW1lKSk7Ci0tCXN0cm5jcHkodXRmOF9uYW1lLCAoY2hh ciAqKSBuYW1lLCBsZW4pOwotLQotLQkvKiBBc3N1bWUgQVNDSUksIGFuZCByZXBsYWNlIGFsbCBu b24tQVNDSUkgd2l0aCBzcGFjZXMgKi8KLS0JZm9yIChpID0gMDsgdXRmOF9uYW1lW2ldICE9ICdc MCc7IGkrKykgewotLQkJaWYgKCFpc2FzY2lpKHV0ZjhfbmFtZVtpXSkpCi0tCQkJdXRmOF9uYW1l W2ldID0gJyAnOwotLQl9Ci0tCi0tCS8qIFJlbW92ZSBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0 ZXNwYWNlIGNoYXJhY3RlcnMgKi8KLS0JZ19zdHJzdHJpcCh1dGY4X25hbWUpOwotLQotLQlyZXR1 cm4gZ19zdHJkdXAodXRmOF9uYW1lKTsKLS19Ci0tCi0gc3RhdGljIHZvaWQgcHJpbnRfbXBfbmFt ZShjb25zdCBzdHJ1Y3QgbDJjYXBfZnJhbWUgKmZyYW1lKQotIHsKLSAJY2hhciAqbmFtZTsKLSAK LS0JbmFtZSA9IG5hbWUydXRmOCgodWludDhfdCAqKWZyYW1lLT5kYXRhLCBmcmFtZS0+c2l6ZSk7 Ci0rCW5hbWUgPSBzdHIydXRmOChmcmFtZS0+ZGF0YSwgZnJhbWUtPnNpemUpOwotIAotIAlwcmlu dF9maWVsZCgiICBNZWRpYSBQbGF5ZXIgTmFtZTogJXMiLCBuYW1lKTsKLSAKLS0JZ19mcmVlKG5h bWUpOwotKwlmcmVlKG5hbWUpOwotIH0KLSAKLSBzdGF0aWMgdm9pZCBtcF9uYW1lX3JlYWQoY29u c3Qgc3RydWN0IGwyY2FwX2ZyYW1lICpmcmFtZSkKLUBAIC0yMzg1LDExICsyMzU5LDExIEBAIHN0 YXRpYyB2b2lkIHByaW50X3RyYWNrX3RpdGxlKGNvbnN0IHN0cnVjdCBsMmNhcF9mcmFtZSAqZnJh bWUpCi0gewotIAljaGFyICpuYW1lOwotIAotLQluYW1lID0gbmFtZTJ1dGY4KCh1aW50OF90ICop ZnJhbWUtPmRhdGEsIGZyYW1lLT5zaXplKTsKLSsJbmFtZSA9IHN0cjJ1dGY4KGZyYW1lLT5kYXRh LCBmcmFtZS0+c2l6ZSk7Ci0gCi0gCXByaW50X2ZpZWxkKCIgIFRyYWNrIFRpdGxlOiAlcyIsIG5h bWUpOwotIAotLQlnX2ZyZWUobmFtZSk7Ci0rCWZyZWUobmFtZSk7Ci0gfQotIAotIHN0YXRpYyB2 b2lkIHRyYWNrX3RpdGxlX3JlYWQoY29uc3Qgc3RydWN0IGwyY2FwX2ZyYW1lICpmcmFtZSkKLUBA IC0yNTIwLDExICsyNDk0LDExIEBAIHN0YXRpYyB2b2lkIHByaW50X2JlYXJlcl9uYW1lKGNvbnN0 IHN0cnVjdCBsMmNhcF9mcmFtZSAqZnJhbWUpCi0gewotIAljaGFyICpuYW1lOwotIAotLQluYW1l ID0gbmFtZTJ1dGY4KCh1aW50OF90ICopZnJhbWUtPmRhdGEsIGZyYW1lLT5zaXplKTsKLSsJbmFt ZSA9IHN0cjJ1dGY4KGZyYW1lLT5kYXRhLCBmcmFtZS0+c2l6ZSk7Ci0gCi0gCXByaW50X2ZpZWxk KCIgIEJlYXJlciBOYW1lOiAlcyIsIG5hbWUpOwotIAotLQlnX2ZyZWUobmFtZSk7Ci0rCWZyZWUo bmFtZSk7Ci0gfQotIAotIHN0YXRpYyB2b2lkIGJlYXJlcl9uYW1lX3JlYWQoY29uc3Qgc3RydWN0 IGwyY2FwX2ZyYW1lICpmcmFtZSkKLUBAIC0yNTQxLDExICsyNTE1LDExIEBAIHN0YXRpYyB2b2lk IGJlYXJlcl91Y2lfcmVhZChjb25zdCBzdHJ1Y3QgbDJjYXBfZnJhbWUgKmZyYW1lKQotIHsKLSAJ Y2hhciAqbmFtZTsKLSAKLS0JbmFtZSA9IG5hbWUydXRmOCgodWludDhfdCAqKWZyYW1lLT5kYXRh LCBmcmFtZS0+c2l6ZSk7Ci0rCW5hbWUgPSBzdHIydXRmOChmcmFtZS0+ZGF0YSwgZnJhbWUtPnNp emUpOwotIAotIAlwcmludF9maWVsZCgiICBCZWFyZXIgVWNpIE5hbWU6ICVzIiwgbmFtZSk7Ci0g Ci0tCWdfZnJlZShuYW1lKTsKLSsJZnJlZShuYW1lKTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQgcHJp bnRfdGVjaG5vbG9neV9uYW1lKGNvbnN0IHN0cnVjdCBsMmNhcF9mcmFtZSAqZnJhbWUpCi1AQCAt MjYxMiwxMSArMjU4NiwxMSBAQCBzdGF0aWMgdm9pZCBwcmludF91cmlfc2NoZW1lX2xpc3QoY29u c3Qgc3RydWN0IGwyY2FwX2ZyYW1lICpmcmFtZSkKLSB7Ci0gCWNoYXIgKm5hbWU7Ci0gCi0tCW5h bWUgPSBuYW1lMnV0ZjgoKHVpbnQ4X3QgKilmcmFtZS0+ZGF0YSwgZnJhbWUtPnNpemUpOwotKwlu YW1lID0gc3RyMnV0ZjgoZnJhbWUtPmRhdGEsIGZyYW1lLT5zaXplKTsKLSAKLSAJcHJpbnRfZmll bGQoIiAgVXJpIHNjaGVtZSBOYW1lOiAlcyIsIG5hbWUpOwotIAotLQlnX2ZyZWUobmFtZSk7Ci0r CWZyZWUobmFtZSk7Ci0gfQotIAotIHN0YXRpYyB2b2lkIGJlYXJlcl91cmlfc2NoZW1lc19saXN0 X3JlYWQoY29uc3Qgc3RydWN0IGwyY2FwX2ZyYW1lICpmcmFtZSkKLUBAIC0yNzI2LDExICsyNzAw LDExIEBAIHN0YXRpYyB2b2lkIHByaW50X2NhbGxfbGlzdChjb25zdCBzdHJ1Y3QgbDJjYXBfZnJh bWUgKmZyYW1lKQotIAotIAlwcmludF9maWVsZCgiICBjYWxsX2ZsYWc6IDB4JXgiLCBjYWxsX2Zs YWcpOwotIAotLQljYWxsX3VyaSA9IG5hbWUydXRmOCgodWludDhfdCAqKWZyYW1lLT5kYXRhLCBm cmFtZS0+c2l6ZSk7Ci0rCWNhbGxfdXJpID0gc3RyMnV0ZjgoZnJhbWUtPmRhdGEsIGZyYW1lLT5z aXplKTsKLSAKLSAJcHJpbnRfZmllbGQoIiAgY2FsbF91cmk6ICVzIiwgY2FsbF91cmkpOwotIAot LQlnX2ZyZWUoY2FsbF91cmkpOwotKwlmcmVlKGNhbGxfdXJpKTsKLSAKLSBkb25lOgotIAlpZiAo ZnJhbWUtPnNpemUpCi1AQCAtMjgxNiwxMSArMjc5MCwxMSBAQCBzdGF0aWMgdm9pZCBwcmludF90 YXJnZXRfdXJpKGNvbnN0IHN0cnVjdCBsMmNhcF9mcmFtZSAqZnJhbWUpCi0gCi0gCXByaW50X2Zp ZWxkKCIgIGNhbGxfaWR4OiAleCIsIGNhbGxfaWR4KTsKLSAKLS0JbmFtZSA9IG5hbWUydXRmOCgo dWludDhfdCAqKWZyYW1lLT5kYXRhLCBmcmFtZS0+c2l6ZSk7Ci0rCW5hbWUgPSBzdHIydXRmOChm cmFtZS0+ZGF0YSwgZnJhbWUtPnNpemUpOwotIAotIAlwcmludF9maWVsZCgiICBVcmk6ICVzIiwg bmFtZSk7Ci0gCi0tCWdfZnJlZShuYW1lKTsKLSsJZnJlZShuYW1lKTsKLSAKLSBkb25lOgotIAlp ZiAoZnJhbWUtPnNpemUpCi1AQCAtMjkyOCw5ICsyOTAyLDkgQEAgc3RhdGljIHZvaWQgcHJpbnRf Y2FsbF9jcChjb25zdCBzdHJ1Y3QgbDJjYXBfZnJhbWUgKmZyYW1lKQotIAkJYnJlYWs7Ci0gCWNh c2UgMHgwNDoKLSAJCXN0ciA9ICJPcmlnaW5hdGUiOwotLQkJbmFtZSA9IG5hbWUydXRmOCgodWlu dDhfdCAqKWZyYW1lLT5kYXRhLCBmcmFtZS0+c2l6ZSk7Ci0rCQluYW1lID0gc3RyMnV0ZjgoZnJh bWUtPmRhdGEsIGZyYW1lLT5zaXplKTsKLSAJCXByaW50X2ZpZWxkKCIgIE9wZXJhdGlvbjogJXMg IFVyaTogJXMiLCBzdHIsIG5hbWUpOwotLQkJZ19mcmVlKG5hbWUpOwotKwkJZnJlZShuYW1lKTsK LSAJCWJyZWFrOwotIAljYXNlIDB4MDU6Ci0gCQlzdHIgPSAiSm9pbiI7Ci1AQCAtMzEyNCwxMSAr MzA5OCwxMSBAQCBzdGF0aWMgdm9pZCBwcmludF9pbmNvbV9jYWxsKGNvbnN0IHN0cnVjdCBsMmNh cF9mcmFtZSAqZnJhbWUpCi0gCi0gCXByaW50X2ZpZWxkKCIgIENhbGwgSW5kZXg6ICV1IiwgY2Fs bF9pZCk7Ci0gCi0tCW5hbWUgPSBuYW1lMnV0ZjgoKHVpbnQ4X3QgKilmcmFtZS0+ZGF0YSwgZnJh bWUtPnNpemUpOwotKwluYW1lID0gc3RyMnV0ZjgoZnJhbWUtPmRhdGEsIGZyYW1lLT5zaXplKTsK LSAKLSAJcHJpbnRfZmllbGQoIiAgY2FsbF9zdHJpbmc6ICVzIiwgbmFtZSk7Ci0gCi0tCWdfZnJl ZShuYW1lKTsKLSsJZnJlZShuYW1lKTsKLSAKLSBkb25lOgotIAlpZiAoZnJhbWUtPnNpemUpCi1A QCAtMzE1NywxMSArMzEzMSwxMSBAQCBzdGF0aWMgdm9pZCBwcmludF9jYWxsX2ZyaWVuZGx5X25h bWUoY29uc3Qgc3RydWN0IGwyY2FwX2ZyYW1lICpmcmFtZSkKLSAKLSAJcHJpbnRfZmllbGQoIiAg Q2FsbCBJbmRleDogJXUiLCBjYWxsX2lkKTsKLSAKLS0JbmFtZSA9IG5hbWUydXRmOCgodWludDhf dCAqKWZyYW1lLT5kYXRhLCBmcmFtZS0+c2l6ZSk7Ci0rCW5hbWUgPSBzdHIydXRmOChmcmFtZS0+ ZGF0YSwgZnJhbWUtPnNpemUpOwotIAotIAlwcmludF9maWVsZCgiICBGcmllbmRseSBOYW1lOiAl cyIsIG5hbWUpOwotIAotLQlnX2ZyZWUobmFtZSk7Ci0rCWZyZWUobmFtZSk7Ci0gCi0gZG9uZToK LSAJaWYgKGZyYW1lLT5zaXplKQotZGlmZiAtLWdpdCBhL3Byb2ZpbGVzL2F1ZGlvL21jcC5jIGIv cHJvZmlsZXMvYXVkaW8vbWNwLmMKLWluZGV4IDBjMmUwZGUwYjE1Ni4uOGFkZjgxNGU4ZDczIDEw MDY0NAotLS0tIGEvcHJvZmlsZXMvYXVkaW8vbWNwLmMKLSsrKyBiL3Byb2ZpbGVzL2F1ZGlvL21j cC5jCi1AQCAtNzMsMjYgKzczLDYgQEAgc3RydWN0IHJlbW90ZV9wbGF5ZXIgewotIAl1aW50OF90 IHBsYXlpbmdfb3JkZXI7Ci0gfTsKLSAKLS1zdGF0aWMgY2hhciAqbmFtZTJ1dGY4KGNvbnN0IHVp bnQ4X3QgKm5hbWUsIHVpbnQxNl90IGxlbikKLS17Ci0tCWNoYXIgKnV0ZjhfbmFtZTsKLS0KLS0J dXRmOF9uYW1lID0gbWFsbG9jKGxlbiArIDEpOwotLQlpZiAoIXV0ZjhfbmFtZSkKLS0JCXJldHVy biBOVUxMOwotLQotLQlpZiAobGVuKQotLQkJbWVtY3B5KHV0ZjhfbmFtZSwgbmFtZSwgbGVuKTsK LS0KLS0JdXRmOF9uYW1lW2xlbl0gPSAwOwotLQlzdHJ0b3V0ZjgodXRmOF9uYW1lLCBsZW4pOwot LQotLQkvKiBSZW1vdmUgbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZSBjaGFyYWN0ZXJz ICovCi0tCWdfc3Ryc3RyaXAodXRmOF9uYW1lKTsKLS0KLS0JcmV0dXJuIHV0ZjhfbmFtZTsKLS19 Ci0tCi0gc3RhdGljIGNvbnN0IGNoYXIgKm1jcF9zdGF0dXNfdmFsX3RvX3N0cmluZyh1aW50OF90 IHN0YXR1cykKLSB7Ci0gCXN3aXRjaCAoc3RhdHVzKSB7Ci1AQCAtMTE4LDcgKzk4LDcgQEAgc3Rh dGljIHZvaWQgcmVtb3RlX21lZGlhX3BsYXllcl9uYW1lKHZvaWQgKmRhdGEsIGNvbnN0IHVpbnQ4 X3QgKnZhbHVlLAotIAlzdHJ1Y3QgcmVtb3RlX3BsYXllciAqcmVtb3RlID0gZGF0YTsKLSAJY2hh ciAqbmFtZTsKLSAKLS0JbmFtZSA9IG5hbWUydXRmOCh2YWx1ZSwgbGVuZ3RoKTsKLSsJbmFtZSA9 IHN0cjJ1dGY4KHZhbHVlLCBsZW5ndGgpOwotIAlpZiAoIW5hbWUpCi0gCQlyZXR1cm47Ci0gCi1A QCAtMTQ1LDcgKzEyNSw3IEBAIHN0YXRpYyB2b2lkIHJlbW90ZV90cmFja190aXRsZSh2b2lkICpk YXRhLCBjb25zdCB1aW50OF90ICp2YWx1ZSwKLSAJY2hhciAqbmFtZTsKLSAJdWludDE2X3QgbGVu OwotIAotLQluYW1lID0gbmFtZTJ1dGY4KHZhbHVlLCBsZW5ndGgpOwotKwluYW1lID0gc3RyMnV0 ZjgodmFsdWUsIGxlbmd0aCk7Ci0gCWlmICghbmFtZSkKLSAJCXJldHVybjsKLSAKLWRpZmYgLS1n aXQgYS9wcm9maWxlcy9nYXAvZ2FzLmMgYi9wcm9maWxlcy9nYXAvZ2FzLmMKLWluZGV4IDBmNDFj OWU2YzJhNS4uNTE4NGQ3NGU4ZjA3IDEwMDY0NAotLS0tIGEvcHJvZmlsZXMvZ2FwL2dhcy5jCi0r KysgYi9wcm9maWxlcy9nYXAvZ2FzLmMKLUBAIC02NiwyMiArNjYsNiBAQCBzdGF0aWMgdm9pZCBn YXNfZnJlZShzdHJ1Y3QgZ2FzICpnYXMpCi0gCWdfZnJlZShnYXMpOwotIH0KLSAKLS1zdGF0aWMg Y2hhciAqbmFtZTJ1dGY4KGNvbnN0IHVpbnQ4X3QgKm5hbWUsIHVpbnQxNl90IGxlbikKLS17Ci0t CWNoYXIgdXRmOF9uYW1lW0hDSV9NQVhfTkFNRV9MRU5HVEggKyAyXTsKLS0KLS0JbGVuID0gTUlO KGxlbiwgc2l6ZW9mKHV0ZjhfbmFtZSkgLSAxKTsKLS0KLS0JbWVtc2V0KHV0ZjhfbmFtZSwgMCwg c2l6ZW9mKHV0ZjhfbmFtZSkpOwotLQlzdHJuY3B5KHV0ZjhfbmFtZSwgKGNoYXIgKikgbmFtZSwg bGVuKTsKLS0Jc3RydG91dGY4KHV0ZjhfbmFtZSwgbGVuKTsKLS0KLS0JLyogUmVtb3ZlIGxlYWRp bmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UgY2hhcmFjdGVycyAqLwotLQlnX3N0cnN0cmlwKHV0 ZjhfbmFtZSk7Ci0tCi0tCXJldHVybiBnX3N0cmR1cCh1dGY4X25hbWUpOwotLX0KLS0KLSBzdGF0 aWMgdm9pZCByZWFkX2RldmljZV9uYW1lX2NiKGJvb2wgc3VjY2VzcywgdWludDhfdCBhdHRfZWNv ZGUsCi0gCQkJCQljb25zdCB1aW50OF90ICp2YWx1ZSwgdWludDE2X3QgbGVuZ3RoLAotIAkJCQkJ dm9pZCAqdXNlcl9kYXRhKQotQEAgLTk4LDEzICs4MiwxMyBAQCBzdGF0aWMgdm9pZCByZWFkX2Rl dmljZV9uYW1lX2NiKGJvb2wgc3VjY2VzcywgdWludDhfdCBhdHRfZWNvZGUsCi0gCWlmICghbGVu Z3RoKQotIAkJcmV0dXJuOwotIAotLQluYW1lID0gbmFtZTJ1dGY4KHZhbHVlLCBsZW5ndGgpOwot KwluYW1lID0gc3RyMnV0ZjgodmFsdWUsIGxlbmd0aCk7Ci0gCi0gCURCRygiR0FQIERldmljZSBO YW1lOiAlcyIsIG5hbWUpOwotIAotIAlidGRfZGV2aWNlX2RldmljZV9zZXRfbmFtZShnYXMtPmRl dmljZSwgbmFtZSk7Ci0gCi0tCWdfZnJlZShuYW1lKTsKLSsJZnJlZShuYW1lKTsKLSB9Ci0gCi0g c3RhdGljIHZvaWQgaGFuZGxlX2RldmljZV9uYW1lKHN0cnVjdCBnYXMgKmdhcywgdWludDE2X3Qg dmFsdWVfaGFuZGxlKQotZGlmZiAtLWdpdCBhL3NyYy9laXIuYyBiL3NyYy9laXIuYwotaW5kZXgg NDQyMWIxNjYyZDY1Li41YzllYmUyYWYzYTMgMTAwNjQ0Ci0tLS0gYS9zcmMvZWlyLmMKLSsrKyBi L3NyYy9laXIuYwotQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBlaXJfZGF0YV9mcmVlKHN0cnVjdCBl aXJfZGF0YSAqZWlyKQotIHsKLSAJcXVldWVfZGVzdHJveShlaXItPnNlcnZpY2VzLCBnX2ZyZWUp OwotIAllaXItPnNlcnZpY2VzID0gTlVMTDsKLS0JZ19mcmVlKGVpci0+bmFtZSk7Ci0rCWZyZWUo ZWlyLT5uYW1lKTsKLSAJZWlyLT5uYW1lID0gTlVMTDsKLSAJZnJlZShlaXItPmhhc2gpOwotIAll aXItPmhhc2ggPSBOVUxMOwotQEAgLTEzMywyMiArMTMzLDYgQEAgc3RhdGljIHZvaWQgZWlyX3Bh cnNlX3V1aWQxMjgoc3RydWN0IGVpcl9kYXRhICplaXIsIGNvbnN0IHVpbnQ4X3QgKmRhdGEsCi0g CX0KLSB9Ci0gCi0tc3RhdGljIGNoYXIgKm5hbWUydXRmOChjb25zdCB1aW50OF90ICpuYW1lLCB1 aW50OF90IGxlbikKLS17Ci0tCWNoYXIgdXRmOF9uYW1lW0hDSV9NQVhfTkFNRV9MRU5HVEggKyAy XTsKLS0KLS0JbGVuID0gTUlOKGxlbiwgSENJX01BWF9OQU1FX0xFTkdUSCk7Ci0tCi0tCW1lbXNl dCh1dGY4X25hbWUsIDAsIHNpemVvZih1dGY4X25hbWUpKTsKLS0Jc3RybmNweSh1dGY4X25hbWUs IChjaGFyICopIG5hbWUsIGxlbik7Ci0tCXN0cnRvdXRmOCh1dGY4X25hbWUsIGxlbik7Ci0tCi0t CS8qIFJlbW92ZSBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgKi8K LS0JZ19zdHJzdHJpcCh1dGY4X25hbWUpOwotLQotLQlyZXR1cm4gZ19zdHJkdXAodXRmOF9uYW1l KTsKLS19Ci0tCi0gc3RhdGljIHZvaWQgZWlyX3BhcnNlX21zZChzdHJ1Y3QgZWlyX2RhdGEgKmVp ciwgY29uc3QgdWludDhfdCAqZGF0YSwKLSAJCQkJCQkJCXVpbnQ4X3QgbGVuKQotIHsKLUBAIC0z MDEsOSArMjg1LDkgQEAgdm9pZCBlaXJfcGFyc2Uoc3RydWN0IGVpcl9kYXRhICplaXIsIGNvbnN0 IHVpbnQ4X3QgKmVpcl9kYXRhLCB1aW50OF90IGVpcl9sZW4pCi0gCQkJd2hpbGUgKGRhdGFfbGVu ID4gMCAmJiBkYXRhW2RhdGFfbGVuIC0gMV0gPT0gJ1wwJykKLSAJCQkJZGF0YV9sZW4tLTsKLSAK LS0JCQlnX2ZyZWUoZWlyLT5uYW1lKTsKLSsJCQlmcmVlKGVpci0+bmFtZSk7Ci0gCi0tCQkJZWly LT5uYW1lID0gbmFtZTJ1dGY4KGRhdGEsIGRhdGFfbGVuKTsKLSsJCQllaXItPm5hbWUgPSBzdHIy dXRmOChkYXRhLCBkYXRhX2xlbik7Ci0gCQkJZWlyLT5uYW1lX2NvbXBsZXRlID0gZWlyX2RhdGFb MV0gIT0gRUlSX05BTUVfU0hPUlQ7Ci0gCQkJYnJlYWs7Ci0gCi1kaWZmIC0tZ2l0IGEvc3JjL3No YXJlZC9hZC5jIGIvc3JjL3NoYXJlZC9hZC5jCi1pbmRleCBlYmVlMDc4NTAwYzYuLjIzNmU3MTk1 MDdlNCAxMDA2NDQKLS0tLSBhL3NyYy9zaGFyZWQvYWQuYwotKysrIGIvc3JjL3NoYXJlZC9hZC5j Ci1AQCAtMjc1LDIyICsyNzUsMTggQEAgc3RhdGljIGJvb2wgYWRfcmVwbGFjZV91dWlkMTI4KHN0 cnVjdCBidF9hZCAqYWQsIHN0cnVjdCBpb3ZlYyAqaW92KQotIAotIHN0YXRpYyBib29sIGFkX3Jl cGxhY2VfbmFtZShzdHJ1Y3QgYnRfYWQgKmFkLCBzdHJ1Y3QgaW92ZWMgKmlvdikKLSB7Ci0tCWNo YXIgdXRmOF9uYW1lW0hDSV9NQVhfTkFNRV9MRU5HVEggKyAyXTsKLS0Jc2l6ZV90IGxlbiA9IE1J Tihpb3YtPmlvdl9sZW4sIChzaXplX3QpIEhDSV9NQVhfTkFNRV9MRU5HVEgpOwotKwljaGFyICp1 dGY4X25hbWU7Ci0rCWJvb2wgcmV0OwotIAotLQltZW1zZXQodXRmOF9uYW1lLCAwLCBzaXplb2Yo dXRmOF9uYW1lKSk7Ci0tCXN0cm5jcHkodXRmOF9uYW1lLCAoY29uc3QgY2hhciAqKWlvdi0+aW92 X2Jhc2UsIGxlbik7Ci0tCi0tCWlmIChzdHJpc3V0ZjgodXRmOF9uYW1lLCBsZW4pKQotLQkJZ290 byBkb25lOwotKwl1dGY4X25hbWUgPSBzdHIydXRmOChpb3YtPmlvdl9iYXNlLCBpb3YtPmlvdl9s ZW4pOwotKwlpZiAoIXV0ZjhfbmFtZSkKLSsJCXJldHVybiBmYWxzZTsKLSAKLS0Jc3RydG91dGY4 KHV0ZjhfbmFtZSwgbGVuKTsKLSsJcmV0ID0gYnRfYWRfYWRkX25hbWUoYWQsIHV0ZjhfbmFtZSk7 Ci0gCi0tCS8qIFJlbW92ZSBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlIGNoYXJhY3Rl cnMgKi8KLS0Jc3Ryc3RyaXAodXRmOF9uYW1lKTsKLSsJZnJlZSh1dGY4X25hbWUpOwotIAotLWRv bmU6Ci0tCXJldHVybiBidF9hZF9hZGRfbmFtZShhZCwgdXRmOF9uYW1lKTsKLSsJcmV0dXJuIHJl dDsKLSB9Ci0gCi0gc3RhdGljIGJvb2wgYWRfcmVwbGFjZV91dWlkMTZfZGF0YShzdHJ1Y3QgYnRf YWQgKmFkLCBzdHJ1Y3QgaW92ZWMgKmlvdikKLWRpZmYgLS1naXQgYS91bml0L3Rlc3QtZWlyLmMg Yi91bml0L3Rlc3QtZWlyLmMKLWluZGV4IDMyNmJjODk5ZTI1MS4uMzgwZmNiYTJmMzhlIDEwMDY0 NAotLS0tIGEvdW5pdC90ZXN0LWVpci5jCi0rKysgYi91bml0L3Rlc3QtZWlyLmMKLUBAIC00MDcs NyArNDA3LDggQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaW52YWxpZF91dGY4X25hbWVf ZGF0YVtdID0gewotIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdGVzdF9kYXRhIGludmFsaWRfdXRmOF9u YW1lX3Rlc3QgPSB7Ci0gCS5laXJfZGF0YSA9IGludmFsaWRfdXRmOF9uYW1lX2RhdGEsCi0gCS5l aXJfc2l6ZSA9IHNpemVvZihpbnZhbGlkX3V0ZjhfbmFtZV9kYXRhKSwKLS0JLm5hbWUgPSAidGVz dCDgpKrgpLDgpYAiLAotKwkvKiBUaGUgdHJ1bmNhdGVkIHNlcXVlbmNlIGlzIHJlcGxhY2VkIGJ5 IFUrRkZGRCwgdGhlIHJlc3QgaXMga2VwdCAqLwotKwkubmFtZSA9ICJ0ZXN0IOCkquCksOClgCIg Ilx4ZWZceGJmXHhiZCIgIuCljeCkt+CkviBpbnZhbGlkIiwKLSAJLm5hbWVfY29tcGxldGUgPSB0 cnVlLAotIAkudHhfcG93ZXIgPSAxMjcsCi0gfTsKLUBAIC00MzUsNyArNDM2LDkgQEAgc3RhdGlj IGNvbnN0IHVuc2lnbmVkIGNoYXIgaXNvXzIwMjJfanBfbmFtZV9kYXRhW10gPSB7Ci0gc3RhdGlj IGNvbnN0IHN0cnVjdCB0ZXN0X2RhdGEgaXNvXzIwMjJfanBfbmFtZV90ZXN0ID0gewotIAkuZWly X2RhdGEgPSBpc29fMjAyMl9qcF9uYW1lX2RhdGEsCi0gCS5laXJfc2l6ZSA9IHNpemVvZihpc29f MjAyMl9qcF9uYW1lX2RhdGEpLAotLQkubmFtZSA9ICJ0ZXN0IFwwMzMkQiIsCi0rCS8qIFRoZSA0 IEpJUyBieXRlcyBhcmUgcmVwbGFjZWQgYnkgVStGRkZELCB0aGUgZXNjYXBlcyBhcmUgQVNDSUkg Ki8KLSsJLm5hbWUgPSAidGVzdCBcMDMzJEIiICJceGVmXHhiZlx4YmRceGVmXHhiZlx4YmRceGVm XHhiZlx4YmRceGVmXHhiZlx4YmQiCi0rCQkJCQkJCQkiXDAzMyhCIE9LIiwKLSAJLm5hbWVfY29t cGxldGUgPSB0cnVlLAotIAkudHhfcG93ZXIgPSAxMjcsCi0gfTsKLUBAIC00NzUsOCArNDc4LDgg QEAgc3RhdGljIHZvaWQgbWF4X25hbWVfc2V0dXAoY29uc3Qgdm9pZCAqZGF0YSkKLSBzdGF0aWMg dW5zaWduZWQgY2hhciBsb25nX25hbWVfZGF0YVsyNTVdOwotIHN0YXRpYyBjaGFyIGxvbmdfbmFt ZVtzaXplb2YobG9uZ19uYW1lX2RhdGEpIC0gMiArIDFdOwotIAotLS8qIFRoZSBuYW1lIGRvZXMg bm90IGZpdCwgc28gaXQgY29tZXMgYmFjayBjbGFtcGVkIHRvIEhDSV9NQVhfTkFNRV9MRU5HVEgg Ki8KLS0jZGVmaW5lIExPTkdfTkFNRV9MRU4JSENJX01BWF9OQU1FX0xFTkdUSAotKy8qIHN0cjJ1 dGY4KCkgZG9lcyBub3QgY2xhbXAsIHNvIHRoZSB3aG9sZSBuYW1lIGlzIGtlcHQgKi8KLSsjZGVm aW5lIExPTkdfTkFNRV9MRU4JKHNpemVvZihsb25nX25hbWVfZGF0YSkgLSAyKQotIAotIHN0YXRp YyBjb25zdCBzdHJ1Y3QgdGVzdF9kYXRhIGxvbmdfbmFtZV90ZXN0ID0gewotIAkuZWlyX2RhdGEg PSBsb25nX25hbWVfZGF0YSwKLS0tIAotMi41NS4wCi0KLQotRnJvbSAyYmY4Mjg2YzRlYmU2MjU2 YjE1MmMzYWRhYjZlYTBmZWQ4YTgzNGQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTog THVpeiBBdWd1c3RvIHZvbiBEZW50eiA8bHVpei52b24uZGVudHpAaW50ZWwuY29tPgotRGF0ZTog V2VkLCAxOSBBdWcgMjAyNiAxNjoyNzowNyAtMDQwMAotU3ViamVjdDogW1BBVENIIDA4LzEwXSBk ZXZpY2U6IEZpeCB0aGUgbmFtZSB0cnVuY2F0aW9uIHNwbGl0dGluZyBVVEYtOAotIHNlcXVlbmNl cwotCi1idGRfZGV2aWNlX2RldmljZV9zZXRfbmFtZSgpIGNvcGllcyB0aGUgbmFtZSB3aXRoCi0K LQlzdHJuY3B5KGRldmljZS0+bmFtZSwgbmFtZSwgTUFYX05BTUVfTEVOR1RIKTsKLQotd2hpY2gg Y3V0cyBhdCAyNDggYnl0ZXMgd2l0aG91dCBhbnkgcmVnYXJkIGZvciB3aGVyZSB0aGUgVVRGLTgK LWNoYXJhY3RlcnMgc3RhcnQgYW5kIGVuZCwgc28gYSBsb25nZXIgbmFtZSBjYW4gYmUgbGVmdCB3 aXRoIGEgcGFydGlhbAotc2VxdWVuY2UuIFRoZSByZXN1bHQgaXMgbm8gbG9uZ2VyIHZhbGlkIFVU Ri04IGFuZCBELUJ1cyByZWplY3RzIGl0IHdoZW4KLXRoZSBOYW1lIHByb3BlcnR5IGlzIGVtaXR0 ZWQuCi0KLUEgbmFtZSBtYWRlIG9mIDI0OSBVK0ZGRkQgY2hhcmFjdGVycyBpcyA3NDcgYnl0ZXMg bG9uZyBhbmQgY3V0dGluZyBpdCBhdAotMjQ4IGxlYXZlcyBhIHRyYWlsaW5nICJlZiBiZiIsIHR3 byB0aGlyZHMgb2YgYSBjaGFyYWN0ZXIuCi0KLVRydW5jYXRlIG9uIGEgY2hhcmFjdGVyIGJvdW5k YXJ5IGluc3RlYWQuIFRoZSBzYW1lIG5hbWUgbm93IGVuZHMgdXAgMjQ2Ci1ieXRlcyBsb25nIGFu ZCBzdGF5cyB2YWxpZC4KLQotVGhpcyBhbHNvIG1lYW5zIGEgbmFtZSB0aGF0IGlzIG5vdCB2YWxp ZCBVVEYtOCB0byBiZWdpbiB3aXRoLCBhcyBjYW4gYmUKLWhhZCBmcm9tIHRoZSBuZWFyZCBhbmQg c2l4YXhpcyBwbHVnaW5zLCBpcyBub3cgY3V0IGF0IHRoZSBmaXJzdAotaWxsLWZvcm1lZCBzZXF1 ZW5jZSByYXRoZXIgdGhhbiBwYXNzZWQgb24gYXMgaXMuCi0KLUFzc2lzdGVkLWJ5OiBDbGF1ZGU6 Y2xhdWRlLW9wdXMtNQotLS0tCi0gc3JjL2RldmljZS5jIHwgMTIgKysrKysrKysrKystCi0gMSBm aWxlIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdp dCBhL3NyYy9kZXZpY2UuYyBiL3NyYy9kZXZpY2UuYwotaW5kZXggNjVkODRiZTU2Y2E1Li5kZjYw N2Y3MThiZTEgMTAwNjQ0Ci0tLS0gYS9zcmMvZGV2aWNlLmMKLSsrKyBiL3NyYy9kZXZpY2UuYwot QEAgLTUxMDMsMTIgKzUxMDMsMjIgQEAgY2hhciAqYnRkX2RldmljZV9nZXRfc3RvcmFnZV9wYXRo KHN0cnVjdCBidGRfZGV2aWNlICpkZXZpY2UsIGNvbnN0IGNoYXIgKm5hbWUpCi0gCi0gdm9pZCBi dGRfZGV2aWNlX2RldmljZV9zZXRfbmFtZShzdHJ1Y3QgYnRkX2RldmljZSAqZGV2aWNlLCBjb25z dCBjaGFyICpuYW1lKQotIHsKLSsJc2l6ZV90IGxlbjsKLSsKLSAJaWYgKHN0cm5jbXAobmFtZSwg ZGV2aWNlLT5uYW1lLCBNQVhfTkFNRV9MRU5HVEgpID09IDApCi0gCQlyZXR1cm47Ci0gCi0gCURC RygiJXMgJXMiLCBkZXZpY2UtPnBhdGgsIG5hbWUpOwotIAotLQlzdHJuY3B5KGRldmljZS0+bmFt ZSwgbmFtZSwgTUFYX05BTUVfTEVOR1RIKTsKLSsJLyoKLSsJICogVHJ1bmNhdGUgb24gYSBjaGFy YWN0ZXIgYm91bmRhcnksIHNvIHRoYXQgYSBuYW1lIGxvbmdlciB0aGFuCi0rCSAqIE1BWF9OQU1F X0xFTkdUSCBkb2VzIG5vdCBlbmQgdXAgd2l0aCBhIHBhcnRpYWwgc2VxdWVuY2UsIHdoaWNoCi0r CSAqIHdvdWxkIG5vIGxvbmdlciBiZSB2YWxpZCBVVEYtOCBhbmQgd291bGQgYmUgcmVqZWN0ZWQg YnkgRC1CdXMuCi0rCSAqLwotKwlsZW4gPSBzdHJubGVudXRmOChuYW1lLCBNSU4oc3RybGVuKG5h bWUpLCAoc2l6ZV90KSBNQVhfTkFNRV9MRU5HVEgpKTsKLSsKLSsJbWVtY3B5KGRldmljZS0+bmFt ZSwgbmFtZSwgbGVuKTsKLSsJZGV2aWNlLT5uYW1lW2xlbl0gPSAnXDAnOwotIAotIAlzdG9yZV9k ZXZpY2VfaW5mbyhkZXZpY2UpOwotIAotLS0gCi0yLjU1LjAKLQotCi1Gcm9tIGJlZjBmYWEzMTJl ZWI4MzM0NGJiMmJlYWQ1YmJiZDBiNTM4NDE0ZTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1G cm9tOiBMdWl6IEF1Z3VzdG8gdm9uIERlbnR6IDxsdWl6LnZvbi5kZW50ekBpbnRlbC5jb20+Ci1E YXRlOiBXZWQsIDE5IEF1ZyAyMDI2IDE2OjI3OjE5IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDkv MTBdIGRldmljZTogUmVuYW1lIGJ0ZF9kZXZpY2VfZGV2aWNlX3NldF9uYW1lIHRvCi0gYnRkX2Rl dmljZV9zZXRfbmFtZQotCi1UaGUgImRldmljZSIgd2FzIGluIHRoZXJlIHR3aWNlLgotCi1Bc3Np c3RlZC1ieTogQ2xhdWRlOmNsYXVkZS1vcHVzLTUKLS0tLQotIHBsdWdpbnMvbmVhcmQuYyAgICB8 IDIgKy0KLSBwbHVnaW5zL3NpeGF4aXMuYyAgfCAyICstCi0gcHJvZmlsZXMvZ2FwL2dhcy5jIHwg MiArLQotIHNyYy9hZGFwdGVyLmMgICAgICB8IDQgKystLQotIHNyYy9kZXZpY2UuYyAgICAgICB8 IDIgKy0KLSBzcmMvZGV2aWNlLmggICAgICAgfCAyICstCi0gNiBmaWxlcyBjaGFuZ2VkLCA3IGlu c2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9wbHVnaW5zL25lYXJk LmMgYi9wbHVnaW5zL25lYXJkLmMKLWluZGV4IGVkZmMxMTUzNzNlZi4uMTYzM2RkNTc2NzQ3IDEw MDY0NAotLS0tIGEvcGx1Z2lucy9uZWFyZC5jCi0rKysgYi9wbHVnaW5zL25lYXJkLmMKLUBAIC02 MjksNyArNjI5LDcgQEAgc3RhdGljIHZvaWQgc3RvcmVfcGFyYW1zKHN0cnVjdCBidGRfYWRhcHRl ciAqYWRhcHRlciwgc3RydWN0IGJ0ZF9kZXZpY2UgKmRldmljZSwKLSAKLSAJaWYgKHBhcmFtcy0+ bmFtZSkgewotIAkJZGV2aWNlX3N0b3JlX2NhY2hlZF9uYW1lKGRldmljZSwgcGFyYW1zLT5uYW1l KTsKLS0JCWJ0ZF9kZXZpY2VfZGV2aWNlX3NldF9uYW1lKGRldmljZSwgcGFyYW1zLT5uYW1lKTsK LSsJCWJ0ZF9kZXZpY2Vfc2V0X25hbWUoZGV2aWNlLCBwYXJhbXMtPm5hbWUpOwotIAl9Ci0gCi0g CWlmIChwYXJhbXMtPnNlcnZpY2VzKQotZGlmZiAtLWdpdCBhL3BsdWdpbnMvc2l4YXhpcy5jIGIv cGx1Z2lucy9zaXhheGlzLmMKLWluZGV4IGEwNGE3NmQzOTRlYi4uZmMyYjJhOWQwMTU2IDEwMDY0 NAotLS0tIGEvcGx1Z2lucy9zaXhheGlzLmMKLSsrKyBiL3BsdWdpbnMvc2l4YXhpcy5jCi1AQCAt MzYyLDcgKzM2Miw3IEBAIHN0YXRpYyBib29sIHNldHVwX2RldmljZShpbnQgZmQsIGNvbnN0IGNo YXIgKnN5c2ZzX3BhdGgsCi0gCi0gCWluZm8oInNpeGF4aXM6IHNldHRpbmcgdXAgbmV3IGRldmlj ZSIpOwotIAotLQlidGRfZGV2aWNlX2RldmljZV9zZXRfbmFtZShkZXZpY2UsIGNwLT5uYW1lKTsK LSsJYnRkX2RldmljZV9zZXRfbmFtZShkZXZpY2UsIGNwLT5uYW1lKTsKLSAJYnRkX2RldmljZV9z ZXRfcG5waWQoZGV2aWNlLCBjcC0+c291cmNlLCBjcC0+dmlkLCBjcC0+cGlkLCBjcC0+dmVyc2lv bik7Ci0gCWJ0ZF9kZXZpY2Vfc2V0X3RlbXBvcmFyeShkZXZpY2UsIHRydWUpOwotIAotZGlmZiAt LWdpdCBhL3Byb2ZpbGVzL2dhcC9nYXMuYyBiL3Byb2ZpbGVzL2dhcC9nYXMuYwotaW5kZXggNTE4 NGQ3NGU4ZjA3Li40OTU3OTllNjQxZDkgMTAwNjQ0Ci0tLS0gYS9wcm9maWxlcy9nYXAvZ2FzLmMK LSsrKyBiL3Byb2ZpbGVzL2dhcC9nYXMuYwotQEAgLTg2LDcgKzg2LDcgQEAgc3RhdGljIHZvaWQg cmVhZF9kZXZpY2VfbmFtZV9jYihib29sIHN1Y2Nlc3MsIHVpbnQ4X3QgYXR0X2Vjb2RlLAotIAot IAlEQkcoIkdBUCBEZXZpY2UgTmFtZTogJXMiLCBuYW1lKTsKLSAKLS0JYnRkX2RldmljZV9kZXZp Y2Vfc2V0X25hbWUoZ2FzLT5kZXZpY2UsIG5hbWUpOwotKwlidGRfZGV2aWNlX3NldF9uYW1lKGdh cy0+ZGV2aWNlLCBuYW1lKTsKLSAKLSAJZnJlZShuYW1lKTsKLSB9Ci1kaWZmIC0tZ2l0IGEvc3Jj L2FkYXB0ZXIuYyBiL3NyYy9hZGFwdGVyLmMKLWluZGV4IGMyMWIzZTdmYmNjMi4uY2Y1OWRiNGFh NWE5IDEwMDY0NAotLS0tIGEvc3JjL2FkYXB0ZXIuYwotKysrIGIvc3JjL2FkYXB0ZXIuYwotQEAg LTc2MjgsNyArNzYyOCw3IEBAIHZvaWQgYnRkX2FkYXB0ZXJfZGV2aWNlX2ZvdW5kKHN0cnVjdCBi dGRfYWRhcHRlciAqYWRhcHRlciwKLSAJbmFtZV9rbm93biA9IGRldmljZV9uYW1lX2tub3duKGRl dik7Ci0gCi0gCWlmIChlaXJfZGF0YS5uYW1lICYmIChlaXJfZGF0YS5uYW1lX2NvbXBsZXRlIHx8 ICFuYW1lX2tub3duKSkKLS0JCWJ0ZF9kZXZpY2VfZGV2aWNlX3NldF9uYW1lKGRldiwgZWlyX2Rh dGEubmFtZSk7Ci0rCQlidGRfZGV2aWNlX3NldF9uYW1lKGRldiwgZWlyX2RhdGEubmFtZSk7Ci0g Ci0gCWlmIChlaXJfZGF0YS5jbGFzcyAhPSAwKQotIAkJZGV2aWNlX3NldF9jbGFzcyhkZXYsIGVp cl9kYXRhLmNsYXNzKTsKLUBAIC05ODE0LDcgKzk4MTQsNyBAQCBzdGF0aWMgdm9pZCBjb25uZWN0 ZWRfY2FsbGJhY2sodWludDE2X3QgaW5kZXgsIHVpbnQxNl90IGxlbmd0aCwKLSAKLSAJaWYgKGVp cl9kYXRhLm5hbWUgJiYgKGVpcl9kYXRhLm5hbWVfY29tcGxldGUgfHwgIW5hbWVfa25vd24pKSB7 Ci0gCQlkZXZpY2Vfc3RvcmVfY2FjaGVkX25hbWUoZGV2aWNlLCBlaXJfZGF0YS5uYW1lKTsKLS0J CWJ0ZF9kZXZpY2VfZGV2aWNlX3NldF9uYW1lKGRldmljZSwgZWlyX2RhdGEubmFtZSk7Ci0rCQli dGRfZGV2aWNlX3NldF9uYW1lKGRldmljZSwgZWlyX2RhdGEubmFtZSk7Ci0gCX0KLSAKLSAJaWYg KGVpcl9kYXRhLm1zZF9saXN0KQotZGlmZiAtLWdpdCBhL3NyYy9kZXZpY2UuYyBiL3NyYy9kZXZp Y2UuYwotaW5kZXggZGY2MDdmNzE4YmUxLi45NjA5YTE0Zjc4ODMgMTAwNjQ0Ci0tLS0gYS9zcmMv ZGV2aWNlLmMKLSsrKyBiL3NyYy9kZXZpY2UuYwotQEAgLTUxMDEsNyArNTEwMSw3IEBAIGNoYXIg KmJ0ZF9kZXZpY2VfZ2V0X3N0b3JhZ2VfcGF0aChzdHJ1Y3QgYnRkX2RldmljZSAqZGV2aWNlLCBj b25zdCBjaGFyICpuYW1lKQotIAlyZXR1cm4gc3RyZHVwKGZpbGVuYW1lKTsKLSB9Ci0gCi0tdm9p ZCBidGRfZGV2aWNlX2RldmljZV9zZXRfbmFtZShzdHJ1Y3QgYnRkX2RldmljZSAqZGV2aWNlLCBj b25zdCBjaGFyICpuYW1lKQotK3ZvaWQgYnRkX2RldmljZV9zZXRfbmFtZShzdHJ1Y3QgYnRkX2Rl dmljZSAqZGV2aWNlLCBjb25zdCBjaGFyICpuYW1lKQotIHsKLSAJc2l6ZV90IGxlbjsKLSAKLWRp ZmYgLS1naXQgYS9zcmMvZGV2aWNlLmggYi9zcmMvZGV2aWNlLmgKLWluZGV4IGI4OTBmMjNkNDY0 Mi4uNzY4M2JlODJlZTNmIDEwMDY0NAotLS0tIGEvc3JjL2RldmljZS5oCi0rKysgYi9zcmMvZGV2 aWNlLmgKLUBAIC0yMyw3ICsyMyw3IEBAIGNoYXIgKmJ0ZF9kZXZpY2VfZ2V0X3N0b3JhZ2VfcGF0 aChzdHJ1Y3QgYnRkX2RldmljZSAqZGV2aWNlLAotIAkJCQljb25zdCBjaGFyICpmaWxlbmFtZSk7 Ci0gCi0gCi0tdm9pZCBidGRfZGV2aWNlX2RldmljZV9zZXRfbmFtZShzdHJ1Y3QgYnRkX2Rldmlj ZSAqZGV2aWNlLCBjb25zdCBjaGFyICpuYW1lKTsKLSt2b2lkIGJ0ZF9kZXZpY2Vfc2V0X25hbWUo c3RydWN0IGJ0ZF9kZXZpY2UgKmRldmljZSwgY29uc3QgY2hhciAqbmFtZSk7Ci0gdm9pZCBkZXZp Y2Vfc3RvcmVfY2FjaGVkX25hbWUoc3RydWN0IGJ0ZF9kZXZpY2UgKmRldiwgY29uc3QgY2hhciAq bmFtZSk7Ci0gdm9pZCBkZXZpY2VfZ2V0X25hbWUoc3RydWN0IGJ0ZF9kZXZpY2UgKmRldmljZSwg Y2hhciAqbmFtZSwgc2l6ZV90IGxlbik7Ci0gYm9vbCBkZXZpY2VfbmFtZV9rbm93bihzdHJ1Y3Qg YnRkX2RldmljZSAqZGV2aWNlKTsKLS0tIAotMi41NS4wCi0KLQotRnJvbSBmMGU0MGM1YjNlNmFm Njk3NGM0NDA3N2NjZDBjZGMwMWEyMTcyZjMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJv bTogTHVpeiBBdWd1c3RvIHZvbiBEZW50eiA8bHVpei52b24uZGVudHpAaW50ZWwuY29tPgotRGF0 ZTogV2VkLCAxOSBBdWcgMjAyNiAxNjoyOToxOSAtMDQwMAotU3ViamVjdDogW1BBVENIIDEwLzEw XSB1bml0L3Rlc3QtdXRpbDogQ292ZXIgc3RydG91dGY4IHdpdGggdGhlIHN0cjJ1dGY4IHRlc3Rz Ci0KLXN0cnRvdXRmOCgpIGFuZCBzdHIydXRmOCgpIGFyZSB0aGUgdHdvIHdheXMgb2YgZGVhbGlu ZyB3aXRoIGEgbmFtZSB0aGF0Ci1pcyBub3QgdmFsaWQgVVRGLTgsIHNvIHJ1biB0aGVtIG92ZXIg dGhlIHNhbWUgaW5wdXRzIGFuZCBrZWVwIHRoZSB0d28KLWV4cGVjdGVkIHJlc3VsdHMgc2lkZSBi eSBzaWRlLCB3aGljaCBkb2N1bWVudHMgaG93IHRoZXkgZGlmZmVyOgotc3RydG91dGY4KCkgdHJ1 bmNhdGVzIGF0IHRoZSBmaXJzdCBpbGwtZm9ybWVkIHNlcXVlbmNlIGFuZCBsZWF2ZXMgdGhlCi13 aGl0ZXNwYWNlIGFsb25lLCBzdHIydXRmOCgpIHJlcGxhY2VzIHRoZSBpbGwtZm9ybWVkIHNlcXVl bmNlcyBhbmQKLXN0cmlwcy4KLQotVGhlIGV4cGVjdGVkIHJlc3VsdHMgd2VyZSBjaGVja2VkIGFn YWluc3QgUHl0aG9uLCB0YWtpbmcgdGhlIGxvbmdlc3QKLXByZWZpeCB0aGF0IGRlY29kZXMgYXMg c3RyaWN0IFVURi04LCBvdmVyIGV2ZXJ5IG9uZSwgdHdvIGFuZCB0aHJlZSBieXRlCi1zZXF1ZW5j ZSwgMTY2NDY2NTUgb2YgdGhlbSwgd2l0aCBubyBtaXNtYXRjaC4KLQotQXNzaXN0ZWQtYnk6IENs YXVkZTpjbGF1ZGUtb3B1cy01Ci0tLS0KLSB1bml0L3Rlc3QtdXRpbC5jIHwgOTQgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQs IDY2IGluc2VydGlvbnMoKyksIDI4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdW5pdC90 ZXN0LXV0aWwuYyBiL3VuaXQvdGVzdC11dGlsLmMKLWluZGV4IGYwYjFiYjc5OTRmYi4uZTYwNWQx N2I2YjU2IDEwMDY0NAotLS0tIGEvdW5pdC90ZXN0LXV0aWwuYwotKysrIGIvdW5pdC90ZXN0LXV0 aWwuYwotQEAgLTgzLDY1ICs4MywxMDEgQEAgc3RhdGljIHZvaWQgdGVzdF9taW5fbWF4KGNvbnN0 IHZvaWQgKmRhdGEpCi0gCXRlc3Rlcl90ZXN0X3Bhc3NlZCgpOwotIH0KLSAKLS1zdHJ1Y3Qgc3Ry MnV0ZjhfZGF0YSB7Ci0rc3RydWN0IHV0ZjhfZGF0YSB7Ci0gCWNvbnN0IGNoYXIgKmlucHV0Owkv KiBOb3QgTlVMIHRlcm1pbmF0ZWQsIGxlbiBieXRlcyBhcmUgdXNlZCAqLwotIAlzaXplX3QgbGVu OwotLQljb25zdCBjaGFyICpleHBlY3RlZDsKLSsJY29uc3QgY2hhciAqc3RyMnV0Zjg7CS8qIEls bC1mb3JtZWQgc2VxdWVuY2VzIHJlcGxhY2VkLCBzdHJpcHBlZCAqLwotKwljb25zdCBjaGFyICpz dHJ0b3V0Zjg7CS8qIFRydW5jYXRlZCBhdCB0aGUgZmlyc3QgaWxsLWZvcm1lZCBvbmUgKi8KLSB9 OwotIAotICNkZWZpbmUgRkZGRCAiXHhlZlx4YmZceGJkIgkJLyogVStGRkZEIFJFUExBQ0VNRU5U IENIQVJBQ1RFUiAqLwotIAotLXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RyMnV0ZjhfZGF0YSBzdHIy dXRmOF90ZXN0c1tdID0gewotK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdXRmOF9kYXRhIHV0ZjhfdGVz dHNbXSA9IHsKLSAJLyogTm90aGluZyB0byBkbyAqLwotLQl7ICIiLCAwLCAiIiB9LAotLQl7ICJQ aXhlbCA3IiwgNywgIlBpeGVsIDciIH0sCi0rCXsgIiIsIDAsICIiLCAiIiB9LAotKwl7ICJQaXhl bCA3IiwgNywgIlBpeGVsIDciLCAiUGl4ZWwgNyIgfSwKLSAJLyogV2VsbC1mb3JtZWQgbXVsdGkt Ynl0ZSBzZXF1ZW5jZXMgYXJlIGtlcHQgYXMgdGhleSBhcmUgKi8KLS0JeyAiXHhlMlx4ODJceGFj IDUiLCA1LCAiXHhlMlx4ODJceGFjIDUiIH0sCQkvKiBVKzIwQUMgKi8KLS0JeyAiXHhmMFx4OWZc eDk0XHg4YSIsIDQsICJceGYwXHg5Zlx4OTRceDhhIiB9LAkJLyogVSsxRjUwQSAqLwotKwl7ICJc eGUyXHg4Mlx4YWMgNSIsIDUsICJceGUyXHg4Mlx4YWMgNSIsCQkvKiBVKzIwQUMgKi8KLSsJCQkJ CQkiXHhlMlx4ODJceGFjIDUiIH0sCi0rCXsgIlx4ZjBceDlmXHg5NFx4OGEiLCA0LCAiXHhmMFx4 OWZceDk0XHg4YSIsCS8qIFUrMUY1MEEgKi8KLSsJCQkJCQkiXHhmMFx4OWZceDk0XHg4YSIgfSwK LSAJLyogTGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZSBpcyByZW1vdmVkICovCi0tCXsg IiAgc3BhY2VkICAiLCAxMCwgInNwYWNlZCIgfSwKLS0JeyAiXHRcclxubmFtZVxuXHJcdCIsIDEw LCAibmFtZSIgfSwKLS0JeyAiICAgIiwgMywgIiIgfSwKLSsJeyAiICBzcGFjZWQgICIsIDEwLCAi c3BhY2VkIiwgIiAgc3BhY2VkICAiIH0sCi0rCXsgIlx0XHJcbm5hbWVcblxyXHQiLCAxMCwgIm5h bWUiLCAiXHRcclxubmFtZVxuXHJcdCIgfSwKLSsJeyAiICAgIiwgMywgIiIsICIgICAiIH0sCi0g CS8qIFRoZSBuYW1lIGlzIG5vdCBOVUwgdGVybWluYXRlZCwgb25seSBsZW4gYnl0ZXMgYXJlIHVz ZWQgKi8KLS0JeyAidHJ1bmNhdGVkIiwgNCwgInRydW4iIH0sCi0rCXsgInRydW5jYXRlZCIsIDQs ICJ0cnVuIiwgInRydW4iIH0sCi0gCS8qIEEgYnl0ZSB0aGF0IGNhbiBuZXZlciBhcHBlYXIgaW4g VVRGLTggKi8KLS0JeyAiYWJceGZmIiJjZCIsIDUsICJhYiIgRkZGRCAiY2QiIH0sCi0rCXsgImFi XHhmZiIiY2QiLCA1LCAiYWIiIEZGRkQgImNkIiwgImFiIiB9LAotIAkvKiBBIGNvbnRpbnVhdGlv biBieXRlIGNhbm5vdCBzdGFydCBhIHNlcXVlbmNlICovCi0tCXsgImFiXHg4MCIiY2QiLCA1LCAi YWIiIEZGRkQgImNkIiB9LAotKwl7ICJhYlx4ODAiImNkIiwgNSwgImFiIiBGRkZEICJjZCIsICJh YiIgfSwKLSAJLyogT25lIFUrRkZGRCBwZXIgbWF4aW1hbCBzdWJwYXJ0LCBub3QgcGVyIGJ5dGUg Ki8KLS0JeyAiYWJceGUyXHg4MiIiY2QiLCA2LCAiYWIiIEZGRkQgImNkIiB9LAotKwl7ICJhYlx4 ZTJceDgyIiJjZCIsIDYsICJhYiIgRkZGRCAiY2QiLCAiYWIiIH0sCi0gCS8qIEEgc2VxdWVuY2Ug Y3V0IHNob3J0IGJ5IGxlbiBpcyBzdGlsbCBvbmUgbWF4aW1hbCBzdWJwYXJ0ICovCi0tCXsgImFi XHhlMlx4ODJceGFjIiwgNCwgImFiIiBGRkZEIH0sCi0rCXsgImFiXHhlMlx4ODJceGFjIiwgNCwg ImFiIiBGRkZELCAiYWIiIH0sCi0gCS8qIExhdGluLTEgdGV4dCBpcyBub3QgdmFsaWQgVVRGLTgg Ki8KLS0JeyAiY2FmXHhlOSIsIDQsICJjYWYiIEZGRkQgfSwKLSsJeyAiY2FmXHhlOSIsIDQsICJj YWYiIEZGRkQsICJjYWYiIH0sCi0gCS8qIE92ZXJsb25nIGVuY29kaW5ncyBhcmUgcmVqZWN0ZWQs IEMwIGFuZCBDMSBhcmUgbmV2ZXIgdmFsaWQgKi8KLS0JeyAiXHhjMFx4ODAiLCAyLCBGRkZEIEZG RkQgfSwKLS0JeyAiXHhjMFx4YWYiLCAyLCBGRkZEIEZGRkQgfSwKLSsJeyAiXHhjMFx4ODAiLCAy LCBGRkZEIEZGRkQsICIiIH0sCi0rCXsgIlx4YzBceGFmIiwgMiwgRkZGRCBGRkZELCAiIiB9LAot IAkvKiBVVEYtMTYgc3Vycm9nYXRlcyBoYXZlIG5vIFVURi04IGVuY29kaW5nICovCi0tCXsgIlx4 ZWRceGEwXHg4MCIsIDMsIEZGRkQgRkZGRCBGRkZEIH0sCi0rCXsgIlx4ZWRceGEwXHg4MCIsIDMs IEZGRkQgRkZGRCBGRkZELCAiIiB9LAotIAkvKiBVKzEwRkZGRiBpcyB0aGUgbGFzdCBjb2RlIHBv aW50LCBGNSB0byBGRiBhcmUgb3V0IG9mIHJhbmdlICovCi0tCXsgIlx4ZjRceDkwXHg4MFx4ODAi LCA0LCBGRkZEIEZGRkQgRkZGRCBGRkZEIH0sCi0tCXsgIlx4ZjVceDgwXHg4MFx4ODAiLCA0LCBG RkZEIEZGRkQgRkZGRCBGRkZEIH0sCi0rCXsgIlx4ZjRceDkwXHg4MFx4ODAiLCA0LCBGRkZEIEZG RkQgRkZGRCBGRkZELCAiIiB9LAotKwl7ICJceGY1XHg4MFx4ODBceDgwIiwgNCwgRkZGRCBGRkZE IEZGRkQgRkZGRCwgIiIgfSwKLSAJLyogVGhlIGxhc3QgY29kZSBwb2ludCBpdHNlbGYgaXMgZmlu ZSAqLwotLQl7ICJceGY0XHg4Zlx4YmZceGJmIiwgNCwgIlx4ZjRceDhmXHhiZlx4YmYiIH0sCi0r CXsgIlx4ZjRceDhmXHhiZlx4YmYiLCA0LCAiXHhmNFx4OGZceGJmXHhiZiIsCi0rCQkJCQkJIlx4 ZjRceDhmXHhiZlx4YmYiIH0sCi0gCS8qIFJlcGxhY2VtZW50IGFuZCBzdHJpcHBpbmcgY29tYmlu ZWQgKi8KLS0JeyAiIFx4ZmYgIiwgMywgRkZGRCB9LAotKwl7ICIgXHhmZiAiLCAzLCBGRkZELCAi ICIgfSwKLSB9OwotIAotIHN0YXRpYyB2b2lkIHRlc3Rfc3RyMnV0ZjgoY29uc3Qgdm9pZCAqZGF0 YSkKLSB7Ci0gCXNpemVfdCBpOwotIAotLQlmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKHN0cjJ1dGY4 X3Rlc3RzKSAvCi0tCQkJCXNpemVvZihzdHIydXRmOF90ZXN0c1swXSk7IGkrKykgewotLQkJY29u c3Qgc3RydWN0IHN0cjJ1dGY4X2RhdGEgKnRlc3QgPSAmc3RyMnV0ZjhfdGVzdHNbaV07Ci0rCWZv ciAoaSA9IDA7IGkgPCBzaXplb2YodXRmOF90ZXN0cykgLyBzaXplb2YodXRmOF90ZXN0c1swXSk7 IGkrKykgewotKwkJY29uc3Qgc3RydWN0IHV0ZjhfZGF0YSAqdGVzdCA9ICZ1dGY4X3Rlc3RzW2ld OwotIAkJY2hhciAqc3RyID0gc3RyMnV0ZjgoKGNvbnN0IHVpbnQ4X3QgKikgdGVzdC0+aW5wdXQs Ci0gCQkJCQkJCQl0ZXN0LT5sZW4pOwotIAotIAkJYXNzZXJ0KHN0cik7Ci0tCQlpZiAoc3RyY21w KHN0ciwgdGVzdC0+ZXhwZWN0ZWQpKSB7Ci0rCQlpZiAoc3RyY21wKHN0ciwgdGVzdC0+c3RyMnV0 ZjgpKSB7Ci0gCQkJcHJpbnRmKCJ0ZXN0ICV6dTogZXhwZWN0ZWQgXCIlc1wiLCBnb3QgXCIlc1wi XG4iLCBpLAotLQkJCQkJCQl0ZXN0LT5leHBlY3RlZCwgc3RyKTsKLSsJCQkJCQkJdGVzdC0+c3Ry MnV0ZjgsIHN0cik7Ci0rCQkJZnJlZShzdHIpOwotKwkJCXRlc3Rlcl90ZXN0X2ZhaWxlZCgpOwot KwkJCXJldHVybjsKLSsJCX0KLSsKLSsJCS8qIFRoZSByZXN1bHQgaXMgYWx3YXlzIHdlbGwtZm9y bWVkIFVURi04ICovCi0rCQlhc3NlcnQoc3RyaXN1dGY4KHN0ciwgc3RybGVuKHN0cikpKTsKLSsK LSsJCWZyZWUoc3RyKTsKLSsJfQotKwotKwl0ZXN0ZXJfdGVzdF9wYXNzZWQoKTsKLSt9Ci0rCi0r c3RhdGljIHZvaWQgdGVzdF9zdHJ0b3V0ZjgoY29uc3Qgdm9pZCAqZGF0YSkKLSt7Ci0rCXNpemVf dCBpOwotKwotKwlmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKHV0ZjhfdGVzdHMpIC8gc2l6ZW9mKHV0 ZjhfdGVzdHNbMF0pOyBpKyspIHsKLSsJCWNvbnN0IHN0cnVjdCB1dGY4X2RhdGEgKnRlc3QgPSAm dXRmOF90ZXN0c1tpXTsKLSsJCWNoYXIgKnN0cjsKLSsKLSsJCS8qIHN0cnRvdXRmOCgpIHdvcmtz IGluIHBsYWNlLCBzbyBpdCBuZWVkcyBhIHdyaXRhYmxlIGNvcHkgKi8KLSsJCXN0ciA9IG1hbGxv Yyh0ZXN0LT5sZW4gKyAxKTsKLSsJCWFzc2VydChzdHIpOwotKwkJbWVtY3B5KHN0ciwgdGVzdC0+ aW5wdXQsIHRlc3QtPmxlbik7Ci0rCQlzdHJbdGVzdC0+bGVuXSA9ICdcMCc7Ci0rCi0rCQlhc3Nl cnQoc3RydG91dGY4KHN0ciwgdGVzdC0+bGVuKSA9PSBzdHIpOwotKwotKwkJaWYgKHN0cmNtcChz dHIsIHRlc3QtPnN0cnRvdXRmOCkpIHsKLSsJCQlwcmludGYoInRlc3QgJXp1OiBleHBlY3RlZCBc IiVzXCIsIGdvdCBcIiVzXCJcbiIsIGksCi0rCQkJCQkJCXRlc3QtPnN0cnRvdXRmOCwgc3RyKTsK LSAJCQlmcmVlKHN0cik7Ci0gCQkJdGVzdGVyX3Rlc3RfZmFpbGVkKCk7Ci0gCQkJcmV0dXJuOwot QEAgLTE3OCw2ICsyMTQsOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAkJ CXRlc3Rfc3RyMnV0ZjgsIE5VTEwpOwotIAl0ZXN0ZXJfYWRkKCIvdXRpbC9zdHIydXRmOF9udWxs IiwgTlVMTCwgTlVMTCwKLSAJCQl0ZXN0X3N0cjJ1dGY4X251bGwsIE5VTEwpOwotKwl0ZXN0ZXJf YWRkKCIvdXRpbC9zdHJ0b3V0ZjgiLCBOVUxMLCBOVUxMLAotKwkJCXRlc3Rfc3RydG91dGY4LCBO VUxMKTsKLSAKLSAJcmV0dXJuIHRlc3Rlcl9ydW4oKTsKLSB9Ci0tLSAKLTIuNTUuMAotCgpkaWZm IC0tZ2l0IGEvc2RwLXhtbC10eXBlLWNvbmZ1c2lvbi5wYXRjaCBiL3NkcC14bWwtdHlwZS1jb25m dXNpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1N2QxNzIuLjAwMDAw MDAKLS0tIGEvc2RwLXhtbC10eXBlLWNvbmZ1c2lvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0x LDExNzIgKzAsMCBAQAotRnJvbSBlNTVmZjg4MThmNzIyZGZiZWZjNjJiOTY0NmY2OWJhZDE5MDE0 ZmRkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQmFzdGllbiBOb2NlcmEgPGhhZGVz c0BoYWRlc3MubmV0PgotRGF0ZTogV2VkLCAxMiBBdWcgMjAyNiAxMDowMTozMiArMDIwMAotU3Vi amVjdDogW1BBVENIIDEvOV0gdW5pdDogQWRkIHRlc3QgZm9yIHNkcF94bWxfcGFyc2VfcmVjb3Jk KCkKLQotVGhpcyBhZGRzIDIgZXhhbXBsZSBYTUwgZmlsZXMgZnJvbSBvdGhlciByZXBvc2l0b3Jp ZXMsIHVuZGVyIGEgZmFpciB1c2UKLWxpY2Vuc2UgZXhjZXB0aW9uLgotUmVwb3J0ZWQtYnk6IEFp c2xlIFJlc2VhcmNoCi1SZXBvcnRlZC1ieTogQWlzbGUgUmVzZWFyY2gKLS0tLQotIE1ha2VmaWxl LmFtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEzICsrKwotIHVuaXQvc2RwLXht bC9CbHVldG9vdGhfSElELXNkcF9yZWNvcmQueG1sIHwgMTIzICsrKysrKysrKysrKysrKysrKysr KysKLSB1bml0L3NkcC14bWwvcXQtU2VyaWFsUG9ydFNEUFJlY29yZC54bWwgICB8ICA1NyArKysr KysrKysrCi0gdW5pdC90ZXN0LXNkcC14bWwuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgODUg KysrKysrKysrKysrKysrCi0gNCBmaWxlcyBjaGFuZ2VkLCAyNzggaW5zZXJ0aW9ucygrKQotIGNy ZWF0ZSBtb2RlIDEwMDY0NCB1bml0L3NkcC14bWwvQmx1ZXRvb3RoX0hJRC1zZHBfcmVjb3JkLnht bAotIGNyZWF0ZSBtb2RlIDEwMDY0NCB1bml0L3NkcC14bWwvcXQtU2VyaWFsUG9ydFNEUFJlY29y ZC54bWwKLSBjcmVhdGUgbW9kZSAxMDA2NDQgdW5pdC90ZXN0LXNkcC14bWwuYwotCi1kaWZmIC0t Z2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQotaW5kZXggMTljNDY4ZDNhNTA0Li4xZWNi NWUxZGRhZWMgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBA IC02MzcsNiArNjM3LDE5IEBAIHVuaXRfdGVzdF9zZHBfU09VUkNFUyA9IHVuaXQvdGVzdC1zZHAu YyBcCi0gdW5pdF90ZXN0X3NkcF9MREFERCA9IGxpYi9saWJibHVldG9vdGgtaW50ZXJuYWwubGEg XAotIAkJCQlzcmMvbGlic2hhcmVkLWdsaWIubGEgJChHTElCX0xJQlMpCi0gCi0rdW5pdF90ZXN0 cyArPSB1bml0L3Rlc3Qtc2RwLXhtbAotKwotK3VuaXRfdGVzdF9zZHBfeG1sX1NPVVJDRVMgPSB1 bml0L3Rlc3Qtc2RwLXhtbC5jIFwKLSsJCQkJc3JjL3NkcC14bWwuYyBzcmMvc2RwLXhtbC5oIFwK LSsJCQkJc3JjL2xvZy5oIHNyYy9sb2cuYwotK3VuaXRfdGVzdF9zZHBfeG1sX0xEQUREID0gbGli L2xpYmJsdWV0b290aC1pbnRlcm5hbC5sYSBcCi0rCQkJCXNyYy9saWJzaGFyZWQtZ2xpYi5sYSAk KEdMSUJfTElCUykKLSt1bml0X3Rlc3Rfc2RwX3htbF9DRkxBR1MgPSAkKEFNX0NGTEFHUykgJChH TElCX0NGTEFHUykgLURUT1BfU1JDRElSPVwiIiQoc3JjZGlyKSJcIgotK3VuaXRfdGVzdF9zZHBf eG1sX0NQUEZMQUdTID0gLUkkKHNyY2RpcikvbGliCi0rCi0rRVhUUkFfRElTVCArPSB1bml0L3Nk cC14bWwvQmx1ZXRvb3RoX0hJRC1zZHBfcmVjb3JkLnhtbAkJXAotKwl1bml0L3NkcC14bWwvcXQt U2VyaWFsUG9ydFNEUFJlY29yZC54bWwKLSsKLSB1bml0X3Rlc3RzICs9IHVuaXQvdGVzdC1hdmR0 cAotIAotIHVuaXRfdGVzdF9hdmR0cF9TT1VSQ0VTID0gdW5pdC90ZXN0LWF2ZHRwLmMgXAotZGlm ZiAtLWdpdCBhL3VuaXQvc2RwLXhtbC9CbHVldG9vdGhfSElELXNkcF9yZWNvcmQueG1sIGIvdW5p dC9zZHAteG1sL0JsdWV0b290aF9ISUQtc2RwX3JlY29yZC54bWwKLW5ldyBmaWxlIG1vZGUgMTAw NjQ0Ci1pbmRleCAwMDAwMDAwMDAwMDAuLjY4N2IwYjE1YjUyMAotLS0tIC9kZXYvbnVsbAotKysr IGIvdW5pdC9zZHAteG1sL0JsdWV0b290aF9ISUQtc2RwX3JlY29yZC54bWwKLUBAIC0wLDAgKzEs MTIzIEBACi0rPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Ci0rCi0rPCEt LQotKwotKyBGcm9tOiBodHRwczovL2dpdGh1Yi5jb20vQW5lc0Jlbm1lcnpvdWcvQmx1ZXRvb3Ro X0hJRC9ibG9iL21hc3Rlci9zZHBfcmVjb3JkLnhtbAotKyBBIGRlc2NyaXB0aW9uIG9mIHRoZXNl IGZpZWxkcyBjYW4gYmUgZm91bmQgaW4gdGhlIGZvbGxvd2luZyBsaW5rczoKLSsgaHR0cDovL3d3 dy5ibHVlY292ZS5vcmcvYmx1ZWNvdmUvYXBpZG9jcy9qYXZheC9ibHVldG9vdGgvU2VydmljZVJl Y29yZC5odG1sCi0rIGh0dHBzOi8vd3d3LmJsdWV0b290aC5jb20vc3BlY2lmaWNhdGlvbnMvYXNz aWduZWQtbnVtYmVycy9zZXJ2aWNlLWRpc2NvdmVyeQotKwotKyAtLT4KLSsKLSs8cmVjb3JkPgot Kwk8YXR0cmlidXRlIGlkPSIweDAwMDEiPiA8IS0tIFNlcnZpY2UgQ2xhc3MgSUQgTGlzdCAtLT4K LSsJCTxzZXF1ZW5jZT4KLSsJCQk8dXVpZCB2YWx1ZT0iMHgxMTI0IiAvPiA8IS0tIEh1bWFuIElu dGVyZmFjZSBEZXZpY2UgLS0+Ci0rCQk8L3NlcXVlbmNlPgotKwk8L2F0dHJpYnV0ZT4KLSsJPGF0 dHJpYnV0ZSBpZD0iMHgwMDA0Ij4gPCEtLSBQcm90b2NvbCBEZXNjcmlwdG9yIExpc3QgLS0+Ci0r CQk8c2VxdWVuY2U+Ci0rCQkJPHNlcXVlbmNlPgotKwkJCQk8dXVpZCB2YWx1ZT0iMHgwMTAwIiAv PiA8IS0tIEwyQ0FQIC0tPgotKwkJCQk8dWludDE2IHZhbHVlPSIweDAwMTEiIC8+IDwhLS0gSElE UCAtLT4KLSsJCQk8L3NlcXVlbmNlPgotKwkJCTxzZXF1ZW5jZT4KLSsJCQkJPHV1aWQgdmFsdWU9 IjB4MDAxMSIgLz4gPCEtLSBISURQIC0tPgotKwkJCTwvc2VxdWVuY2U+Ci0rCQk8L3NlcXVlbmNl PgotKwk8L2F0dHJpYnV0ZT4KLSsJPGF0dHJpYnV0ZSBpZD0iMHgwMDA1Ij4gPCEtLSBCcm93c2Ug R3JvdXAgTGlzdCAtLT4KLSsJCTxzZXF1ZW5jZT4KLSsJCQk8dXVpZCB2YWx1ZT0iMHgxMDAyIiAv PgotKwkJPC9zZXF1ZW5jZT4KLSsJPC9hdHRyaWJ1dGU+Ci0rCTxhdHRyaWJ1dGUgaWQ9IjB4MDAw NiI+IDwhLS0gTGFuZ3VhZ2UgQmFzZWQgQXR0cmlidXRlIElEIExpc3QgLS0+Ci0rCQk8c2VxdWVu Y2U+Ci0rCQkJPHVpbnQxNiB2YWx1ZT0iMHg2NTZlIiAvPiA8IS0tIGNvZGVfSVNPNjM5IC0tPgot KwkJCTx1aW50MTYgdmFsdWU9IjB4MDA2YSIgLz4gPCEtLSBlbmNvZGluZyAtLT4KLSsJCQk8dWlu dDE2IHZhbHVlPSIweDAxMDAiIC8+IDwhLS0gYmFzZV9vZmZzZXQgLS0+Ci0rCQk8L3NlcXVlbmNl PgotKwk8L2F0dHJpYnV0ZT4KLSsJPGF0dHJpYnV0ZSBpZD0iMHgwMDA5Ij4gPCEtLSBCbHVldG9v dGggUHJvZmlsZSBEZXNjcmlwdG9yIExpc3QgLS0+Ci0rCQk8c2VxdWVuY2U+Ci0rCQkJPHNlcXVl bmNlPgotKwkJCQk8dXVpZCB2YWx1ZT0iMHgxMTI0IiAvPiA8IS0tIEh1bWFuIEludGVyZmFjZSBE ZXZpY2UgLS0+Ci0rCQkJCTx1aW50MTYgdmFsdWU9IjB4MDEwMCIgLz4gPCEtLSBMMkNBUCAtLT4K LSsJCQk8L3NlcXVlbmNlPgotKwkJPC9zZXF1ZW5jZT4KLSsJPC9hdHRyaWJ1dGU+Ci0rCTxhdHRy aWJ1dGUgaWQ9IjB4MDAwZCI+IDwhLS0gQWRkaXRpb25hbCBQcm90b2NvbCBEZXNjcmlwdG9yIExp c3RzIC0tPgotKwkJPHNlcXVlbmNlPgotKwkJCTxzZXF1ZW5jZT4KLSsJCQkJPHNlcXVlbmNlPgot KwkJCQkJPHV1aWQgdmFsdWU9IjB4MDEwMCIgLz4gPCEtLSBMMkNBUCAtLT4KLSsJCQkJCTx1aW50 MTYgdmFsdWU9IjB4MDAxMyIgLz4KLSsJCQkJPC9zZXF1ZW5jZT4KLSsJCQkJPHNlcXVlbmNlPgot KwkJCQkJPHV1aWQgdmFsdWU9IjB4MDAxMSIgLz4gPCEtLSBISURQIC0tPgotKwkJCQk8L3NlcXVl bmNlPgotKwkJCTwvc2VxdWVuY2U+Ci0rCQk8L3NlcXVlbmNlPgotKwk8L2F0dHJpYnV0ZT4KLSsJ PGF0dHJpYnV0ZSBpZD0iMHgwMTAwIj4KLSsJCTx0ZXh0IHZhbHVlPSJCbHVldG9vdGhfS2V5Ym9h cmQvTW91c2UiIC8+Ci0rCTwvYXR0cmlidXRlPgotKwk8YXR0cmlidXRlIGlkPSIweDAxMDEiPgot KwkJPHRleHQgdmFsdWU9IlVTQiA+IEJUIEtleWJvYXJkL01vdXNlIiAvPgotKwk8L2F0dHJpYnV0 ZT4KLSsJPGF0dHJpYnV0ZSBpZD0iMHgwMTAyIj4KLSsJCTx0ZXh0IHZhbHVlPSJSYXNwYmVycnkg UGkgMyIgLz4KLSsJPC9hdHRyaWJ1dGU+Ci0rCTxhdHRyaWJ1dGUgaWQ9IjB4MDIwMCI+Ci0rCQk8 dWludDE2IHZhbHVlPSIweDAxMDAiIC8+Ci0rCTwvYXR0cmlidXRlPgotKwk8YXR0cmlidXRlIGlk PSIweDAyMDEiPgotKwkJPHVpbnQxNiB2YWx1ZT0iMHgwMTExIiAvPgotKwk8L2F0dHJpYnV0ZT4K LSsJPGF0dHJpYnV0ZSBpZD0iMHgwMjAyIj4KLSsJCTx1aW50OCB2YWx1ZT0iMHg0MCIgLz4KLSsJ PC9hdHRyaWJ1dGU+Ci0rCTxhdHRyaWJ1dGUgaWQ9IjB4MDIwMyI+Ci0rCQk8dWludDggdmFsdWU9 IjB4MDAiIC8+Ci0rCTwvYXR0cmlidXRlPgotKwk8YXR0cmlidXRlIGlkPSIweDAyMDQiPgotKwkJ PGJvb2xlYW4gdmFsdWU9ImZhbHNlIiAvPgotKwk8L2F0dHJpYnV0ZT4KLSsJPGF0dHJpYnV0ZSBp ZD0iMHgwMjA1Ij4KLSsJCTxib29sZWFuIHZhbHVlPSJmYWxzZSIgLz4KLSsJPC9hdHRyaWJ1dGU+ Ci0rCTxhdHRyaWJ1dGUgaWQ9IjB4MDIwNiI+Ci0rCQk8c2VxdWVuY2U+Ci0rCQkJPHNlcXVlbmNl PgotKwkJCQk8dWludDggdmFsdWU9IjB4MjIiIC8+Ci0rCQkJCTx0ZXh0IGVuY29kaW5nPSJoZXgi IHZhbHVlPSIwNTAxMDkwNkExMDE4NTAxQTEwMDA1MDcxOUUwMjlFNzE1MDAyNTAxNzUwMTk1MDg4 MTAyOTUwMTc1MDg4MTAxOTUwODc1MDgxNTAwMjU2NTA1MDcxOTAwMjk2NTgxMDBDMEMwMDUwMTA5 MDJBMTAxODUwMjA5MDFBMTAwMDUwOTE5MDEyOTAzMTUwMDI1MDE3NTAxOTUwMzgxMDI3NTA1OTUw MTgxMDEwNTAxMDkzMDA5MzEwOTM4MTU4MTI1N0Y3NTA4OTUwMzgxMDZDMEMwIi8+Ci0rCQkJPC9z ZXF1ZW5jZT4KLSsJCTwvc2VxdWVuY2U+Ci0rCTwvYXR0cmlidXRlPgotKwk8YXR0cmlidXRlIGlk PSIweDAyMDciPgotKwkJPHNlcXVlbmNlPgotKwkJCTxzZXF1ZW5jZT4KLSsJCQkJPHVpbnQxNiB2 YWx1ZT0iMHgwNDA5IiAvPgotKwkJCQk8dWludDE2IHZhbHVlPSIweDAxMDAiIC8+Ci0rCQkJPC9z ZXF1ZW5jZT4KLSsJCTwvc2VxdWVuY2U+Ci0rCTwvYXR0cmlidXRlPgotKwk8YXR0cmlidXRlIGlk PSIweDAyMGIiPgotKwkJPHVpbnQxNiB2YWx1ZT0iMHgwMTAwIiAvPgotKwk8L2F0dHJpYnV0ZT4K LSsJPGF0dHJpYnV0ZSBpZD0iMHgwMjBjIj4KLSsJCTx1aW50MTYgdmFsdWU9IjB4MGM4MCIgLz4K LSsJPC9hdHRyaWJ1dGU+Ci0rCTxhdHRyaWJ1dGUgaWQ9IjB4MDIwZCI+Ci0rCQk8Ym9vbGVhbiB2 YWx1ZT0idHJ1ZSIgLz4KLSsJPC9hdHRyaWJ1dGU+Ci0rCTxhdHRyaWJ1dGUgaWQ9IjB4MDIwZSI+ Ci0rCQk8Ym9vbGVhbiB2YWx1ZT0iZmFsc2UiIC8+Ci0rCTwvYXR0cmlidXRlPgotKwk8YXR0cmli dXRlIGlkPSIweDAyMGYiPgotKwkJPHVpbnQxNiB2YWx1ZT0iMHgwNjQwIiAvPgotKwk8L2F0dHJp YnV0ZT4KLSsJPGF0dHJpYnV0ZSBpZD0iMHgwMjEwIj4KLSsJCTx1aW50MTYgdmFsdWU9IjB4MDMy MCIgLz4KLSsJPC9hdHRyaWJ1dGU+Ci0rPC9yZWNvcmQ+Ci1kaWZmIC0tZ2l0IGEvdW5pdC9zZHAt eG1sL3F0LVNlcmlhbFBvcnRTRFBSZWNvcmQueG1sIGIvdW5pdC9zZHAteG1sL3F0LVNlcmlhbFBv cnRTRFBSZWNvcmQueG1sCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMDAw Li4xZjYyY2NmMTFhNDEKLS0tLSAvZGV2L251bGwKLSsrKyBiL3VuaXQvc2RwLXhtbC9xdC1TZXJp YWxQb3J0U0RQUmVjb3JkLnhtbAotQEAgLTAsMCArMSw1NyBAQAotKzw/eG1sIHZlcnNpb249IjEu MCIgZW5jb2Rpbmc9IlVURi04IiA/PgotKwotKzwhLS0KLSsgVGhpcyBpcyBhbiBYTUwgZmlsZSBk ZXNjcmliaW5nIGFuIFNEUCBzZXJ2aWNlIHJlY29yZCBmb3IgYSBTZXJpYWwgUG9ydAotKyBzZXJ2 aWNlLgotKwotKyBZb3UgY2FuIHVzZSB0aGUgbGludXggc2RwdG9vbCBjb21tYW5kIHRvIGNyZWF0 ZSBhIGZpbGUgbGlrZSB0aGlzIGZvcgotKyBwdWJsaXNoaW5nIHlvdXIgQmx1ZXRvb3RoIHNlcnZp Y2VzLiBTZWUgdGhlICJDcmVhdGluZyBhIEJsdWV0b290aCBzZXJ2aWNlIgotKyB0dXRvcmlhbCBm b3IgbW9yZSBkZXRhaWxzLgotKwotKyBGcm9tOiBodHRwczovL3JhZGVrcC5naXRodWIuaW8vcXRt b2tvL2FwaS9ibHVldG9vdGgtYmx1ZXRvb3Roc2VydmljZS1zZXJpYWxwb3J0c2RwcmVjb3JkLXht bC5odG1sCi0rLS0+Ci0rCi0rIDxyZWNvcmQ+Ci0rICAgICAgICAgPGF0dHJpYnV0ZSBpZD0iMHgw MDAxIj4KLSsgICAgICAgICAgICAgICAgIDxzZXF1ZW5jZT4KLSsgICAgICAgICAgICAgICAgICAg ICAgICAgPHV1aWQgdmFsdWU9IjB4MTEwMSIgLz4KLSsgICAgICAgICAgICAgICAgIDwvc2VxdWVu Y2U+Ci0rICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0rICAgICAgICAgPGF0dHJpYnV0ZSBpZD0iMHgw MDA0Ij4KLSsgICAgICAgICAgICAgICAgIDxzZXF1ZW5jZT4KLSsgICAgICAgICAgICAgICAgICAg ICAgICAgPHNlcXVlbmNlPgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1dWlk IHZhbHVlPSIweDAxMDAiIC8+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VxdWVuY2U+ Ci0rICAgICAgICAgICAgICAgICAgICAgICAgIDxzZXF1ZW5jZT4KLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8dXVpZCB2YWx1ZT0iMHgwMDAzIiAvPgotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDx1aW50OCB2YWx1ZT0iMHgwNSIgLz4KLSsgICAgICAgICAgICAg ICAgICAgICAgICAgPC9zZXF1ZW5jZT4KLSsgICAgICAgICAgICAgICAgIDwvc2VxdWVuY2U+Ci0r ICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0rICAgICAgICAgPGF0dHJpYnV0ZSBpZD0iMHgwMDA1Ij4K LSsgICAgICAgICAgICAgICAgIDxzZXF1ZW5jZT4KLSsgICAgICAgICAgICAgICAgICAgICAgICAg PHV1aWQgdmFsdWU9IjB4MTAwMiIgLz4KLSsgICAgICAgICAgICAgICAgIDwvc2VxdWVuY2U+Ci0r ICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0rICAgICAgICAgPGF0dHJpYnV0ZSBpZD0iMHgwMDA2Ij4K LSsgICAgICAgICAgICAgICAgIDxzZXF1ZW5jZT4KLSsgICAgICAgICAgICAgICAgICAgICAgICAg PHVpbnQxNiB2YWx1ZT0iMHg2NTZlIiAvPgotKyAgICAgICAgICAgICAgICAgICAgICAgICA8dWlu dDE2IHZhbHVlPSIweDAwNmEiIC8+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgIDx1aW50MTYg dmFsdWU9IjB4MDEwMCIgLz4KLSsgICAgICAgICAgICAgICAgIDwvc2VxdWVuY2U+Ci0rICAgICAg ICAgPC9hdHRyaWJ1dGU+Ci0rICAgICAgICAgPGF0dHJpYnV0ZSBpZD0iMHgwMDA5Ij4KLSsgICAg ICAgICAgICAgICAgIDxzZXF1ZW5jZT4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgPHNlcXVl bmNlPgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1dWlkIHZhbHVlPSIweDEx MDEiIC8+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVpbnQxNiB2YWx1ZT0i MHgwMTAwIiAvPgotKyAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlcXVlbmNlPgotKyAgICAg ICAgICAgICAgICAgPC9zZXF1ZW5jZT4KLSsgICAgICAgICA8L2F0dHJpYnV0ZT4KLSsgICAgICAg ICA8YXR0cmlidXRlIGlkPSIweDAxMDAiPgotKyAgICAgICAgICAgICAgICAgPHRleHQgdmFsdWU9 IlNlcmlhbCBQb3J0IiAvPgotKyAgICAgICAgIDwvYXR0cmlidXRlPgotKyAgICAgICAgIDxhdHRy aWJ1dGUgaWQ9IjB4MDEwMSI+Ci0rICAgICAgICAgICAgICAgICA8dGV4dCB2YWx1ZT0iQ09NIFBv cnQiIC8+Ci0rICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0rIDwvcmVjb3JkPgotZGlmZiAtLWdpdCBh L3VuaXQvdGVzdC1zZHAteG1sLmMgYi91bml0L3Rlc3Qtc2RwLXhtbC5jCi1uZXcgZmlsZSBtb2Rl IDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMDAwLi45YWYyZjhjODcwZjYKLS0tLSAvZGV2L251bGwK LSsrKyBiL3VuaXQvdGVzdC1zZHAteG1sLmMKLUBAIC0wLDAgKzEsODUgQEAKLSsvLyBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlcgotKy8qCi0rICoKLSsgKiAgQmx1ZVog LSBCbHVldG9vdGggcHJvdG9jb2wgc3RhY2sgZm9yIExpbnV4Ci0rICoKLSsgKiAgQ29weXJpZ2h0 IChDKSAyMDI2ICBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsgKgot KyAqCi0rICovCi0rCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjaW5jbHVkZSA8Y29uZmlnLmg+ Ci0rI2VuZGlmCi0rCi0rI2luY2x1ZGUgPGdsaWIuaD4KLSsKLSsjaW5jbHVkZSAiYmx1ZXRvb3Ro L3NkcC5oIgotKyNpbmNsdWRlICJibHVldG9vdGgvc2RwX2xpYi5oIgotKwotKyNpbmNsdWRlICJz cmMvc2hhcmVkL3V0aWwuaCIKLSsjaW5jbHVkZSAic3JjL3NoYXJlZC90ZXN0ZXIuaCIKLSsjaW5j bHVkZSAic3JjL2xvZy5oIgotKyNpbmNsdWRlICJzcmMvc2RwLXhtbC5oIgotKwotK3N0cnVjdCB0 ZXN0X2RhdGEgewotKwlHU3RyaW5nICpzOwotKwljaGFyICpmaWxlbmFtZTsKLSsJZ2Jvb2xlYW4g ZXhwZWN0ZWRfcmVzdWx0OwotK307Ci0rCi0rc3RhdGljIHZvaWQgcGFyc2VfeG1sKGdjb25zdHBv aW50ZXIgZGF0YSwgZ3NpemUgbGVuLCBnYm9vbGVhbiBleHBlY3RlZF9yZXN1bHQpCi0rewotKwlz ZHBfcmVjb3JkX3QgKnJlYyA9IE5VTEw7Ci0rCWdib29sZWFuIHJldDsKLSsKLSsJcmVjID0gc2Rw X3htbF9wYXJzZV9yZWNvcmQoZGF0YSwgbGVuKTsKLSsJcmV0ID0gcmVjID8gVFJVRSA6IEZBTFNF OwotKwlpZiAocmV0ID09IGV4cGVjdGVkX3Jlc3VsdCkKLSsJCXRlc3Rlcl90ZXN0X3Bhc3NlZCgp OwotKwllbHNlCi0rCQl0ZXN0ZXJfdGVzdF9mYWlsZWQoKTsKLSsJaWYgKHJlYykKLSsJCXNkcF9y ZWNvcmRfZnJlZShyZWMpOwotK30KLSsKLStzdGF0aWMgdm9pZCBwYXJzZV94bWxfZm9yX2ZpbGVu YW1lKGdjb25zdHBvaW50ZXIgZGF0YSkKLSt7Ci0rCXN0cnVjdCB0ZXN0X2RhdGEgKnQgPSAoc3Ry dWN0IHRlc3RfZGF0YSAqKSBkYXRhOwotKwljaGFyICpwYXRoID0gTlVMTDsKLSsJR0Vycm9yICpl cnJvciA9IE5VTEw7Ci0rCWNoYXIgKmNvbnRlbnRzID0gTlVMTDsKLSsJZ3NpemUgbGVuOwotKwot KwlwYXRoID0gZ19idWlsZF9maWxlbmFtZShUT1BfU1JDRElSLCAidW5pdCIsICJzZHAteG1sIiwK LSsJCQkJCXQtPmZpbGVuYW1lLCBOVUxMKTsKLSsJaWYgKCFnX2ZpbGVfZ2V0X2NvbnRlbnRzKHBh dGgsICZjb250ZW50cywgJmxlbiwgJmVycm9yKSkgewotKwkJZ193YXJuaW5nKCJDYW4ndCBsb2Fk IGZpbGUgJyVzJzogJXMiLCBwYXRoLCBlcnJvci0+bWVzc2FnZSk7Ci0rCQlnX2ZyZWUocGF0aCk7 Ci0rCQlnX2Vycm9yX2ZyZWUoZXJyb3IpOwotKwkJdGVzdGVyX3Rlc3RfZmFpbGVkKCk7Ci0rCQly ZXR1cm47Ci0rCX0KLSsJcGFyc2VfeG1sKGNvbnRlbnRzLCBsZW4sIHQtPmV4cGVjdGVkX3Jlc3Vs dCk7Ci0rCWdfZnJlZShjb250ZW50cyk7Ci0rCWdfZnJlZShwYXRoKTsKLSt9Ci0rCi0rI2RlZmlu ZSBERUZJTkVfVEVTVChmbmFtZSwgcmVzKSB7CQkJCQlcCi0rCWRhdGEuZXhwZWN0ZWRfcmVzdWx0 ID0gcmVzOwkJCQkJXAotKwlkYXRhLmZpbGVuYW1lID0gZm5hbWU7CQkJCQkJXAotKwl0ZXN0ZXJf YWRkKCIvIiBmbmFtZSwgJmRhdGEsIE5VTEwsCQkJCVwKLSsJCQlwYXJzZV94bWxfZm9yX2ZpbGVu YW1lLCBOVUxMKTsJCQlcCi0rCX0KLSsKLStpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltd KQotK3sKLSsJc3RydWN0IHRlc3RfZGF0YSBkYXRhOwotKwotKwl0ZXN0ZXJfaW5pdCgmYXJnYywg JmFyZ3YpOwotKwotKwlERUZJTkVfVEVTVCgiQmx1ZXRvb3RoX0hJRC1zZHBfcmVjb3JkLnhtbCIs IFRSVUUpOwotKwlERUZJTkVfVEVTVCgicXQtU2VyaWFsUG9ydFNEUFJlY29yZC54bWwiLCBUUlVF KTsKLSsKLSsJcmV0dXJuIHRlc3Rlcl9ydW4oKTsKLSt9Ci0tLSAKLTIuNTUuMAotCi0KLUZyb20g OTg1ZTY0M2Q3OGIwOWFmYzgxZDYwNmJjMGEwODU4MWZjMDViMWIxNSBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKLUZyb206IEJhc3RpZW4gTm9jZXJhIDxoYWRlc3NAaGFkZXNzLm5ldD4KLURhdGU6 IFdlZCwgMTIgQXVnIDIwMjYgMTA6MDE6MzMgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAyLzldIHNk cC14bWw6IEZpeCBjcmFzaCBjYXVzZWQgYnkgdHlwZSBjb25mdXNpb24gd2hlbiBwYXJzaW5nCi0g Y3JhZnRlZCBTRFAgWE1MCi0KLVdoZW4gZWxlbWVudF9lbmQoKSBwcm9jZXNzZXMgPC9hdHRyaWJ1 dGU+LCBpdCBmcmVlcyBjdHhfZGF0YS0+c3RhY2tfaGVhZAotYW5kIGNsZWFycyB0aGUgc3RhY2sg ZXZlbiBpZiBwYXJzaW5nIGlzIHN0aWxsIG5lc3RlZCBpbnNpZGUgYSBwYXJlbnQKLWNvbnRhaW5l ci4KLQotSWYgYSBjcmFmdGVkIFNlcnZpY2VSZWNvcmQgcGxhY2VzIGEgbmVzdGVkIDxhdHRyaWJ1 dGU+IGluc2lkZSA8c2VxdWVuY2U+LAotYSBsYXRlciBzaWJsaW5nIHNjYWxhciBlbGVtZW50IHN1 Y2ggYXMgPHVpbnQ2ND4gY2FuIGJlY29tZSB0aGUgbmV3IHN0YWNrCi1oZWFkLiBXaGVuIHRoZSBj bG9zaW5nIDwvc2VxdWVuY2U+IGlzIHRoZW4gcHJvY2Vzc2VkLCBjb21wdXRlX3NlcV9zaXplKCkK LWlzIHJlYWNoZWQgd2l0aG91dCBmaXJzdCB2YWxpZGF0aW5nIHRoYXQgdGhlIGN1cnJlbnQgbm9k ZSBpcyBhY3R1YWxseQotYSBzZXF1ZW5jZS4KLQotc2RwX2RhdGFfdC52YWwgc3RvcmVzIGJvdGgg c2NhbGFyIG1lbWJlcnMgc3VjaCBhcyB1aW50NjQgYW5kIHRoZQotZGF0YXNlcSBwb2ludGVyIGlu IHRoZSBzYW1lIHVuaW9uLiBBcyBhIHJlc3VsdCwgYXR0YWNrZXItY29udHJvbGxlZAotc2NhbGFy IGRhdGEgY2FuIGJlIHJlaW50ZXJwcmV0ZWQgYXMgYSBsaW5rZWQtbGlzdCBwb2ludGVyIGFuZCB0 cmF2ZXJzZWQKLXVudGlsIGJsdWV0b290aGQgY3Jhc2hlcy4KLQotU2VlIGh0dHBzOi8vZ2l0aHVi LmNvbS9ibHVlei9ibHVlei9zZWN1cml0eS9hZHZpc29yaWVzL0dIU0EtN21tci1nd3F4LXZjMzQK LQotUmVwb3J0ZWQtYnk6IEFpc2xlIFJlc2VhcmNoCi1Dby1hdXRob3JlZC1ieTogQWlzbGUgUmVz ZWFyY2gKLS0tLQotIHNyYy9zZHAteG1sLmMgfCAyMyArKysrKysrKysrKysrKysrKysrKysrLQot IDEgZmlsZSBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYg LS1naXQgYS9zcmMvc2RwLXhtbC5jIGIvc3JjL3NkcC14bWwuYwotaW5kZXggZTViMzBlODg1MDVm Li5jOGY5ZWQwMTNiMjkgMTAwNjQ0Ci0tLS0gYS9zcmMvc2RwLXhtbC5jCi0rKysgYi9zcmMvc2Rw LXhtbC5jCi1AQCAtNTI5LDcgKzUyOSw5IEBAIHN0YXRpYyB2b2lkIGVsZW1lbnRfZW5kKEdNYXJr dXBQYXJzZUNvbnRleHQgKmNvbnRleHQsCi0gCQlyZXR1cm47Ci0gCi0gCWlmICghc3RyY21wKGVs ZW1lbnRfbmFtZSwgImF0dHJpYnV0ZSIpKSB7Ci0tCQlpZiAoY3R4X2RhdGEtPnN0YWNrX2hlYWQg JiYgY3R4X2RhdGEtPnN0YWNrX2hlYWQtPmRhdGEpIHsKLSsJCS8qIEF0dHJpYnV0ZXMgYXJlIGV4 cGVjdGVkIGF0IHRvcC1sZXZlbCByZWNvcmQgc2NvcGUuICovCi0rCQlpZiAoY3R4X2RhdGEtPnN0 YWNrX2hlYWQgJiYgY3R4X2RhdGEtPnN0YWNrX2hlYWQtPmRhdGEgJiYKLSsJCSAgICBjdHhfZGF0 YS0+c3RhY2tfaGVhZC0+bmV4dCA9PSBOVUxMKSB7Ci0gCQkJaW50IHJldCA9IHNkcF9hdHRyX2Fk ZChjdHhfZGF0YS0+cmVjb3JkLCBjdHhfZGF0YS0+YXR0cl9pZCwKLSAJCQkJCQkJY3R4X2RhdGEt PnN0YWNrX2hlYWQtPmRhdGEpOwotIAkJCWlmIChyZXQgPT0gLTEpCi1AQCAtNTM5LDYgKzU0MSwx MSBAQCBzdGF0aWMgdm9pZCBlbGVtZW50X2VuZChHTWFya3VwUGFyc2VDb250ZXh0ICpjb250ZXh0 LAotIAkJCWN0eF9kYXRhLT5zdGFja19oZWFkLT5kYXRhID0gTlVMTDsKLSAJCQlzZHBfeG1sX2Rh dGFfZnJlZShjdHhfZGF0YS0+c3RhY2tfaGVhZCk7Ci0gCQkJY3R4X2RhdGEtPnN0YWNrX2hlYWQg PSBOVUxMOwotKwkJfSBlbHNlIGlmIChjdHhfZGF0YS0+c3RhY2tfaGVhZCAmJiBjdHhfZGF0YS0+ c3RhY2tfaGVhZC0+bmV4dCkgewotKwkJCWdfc2V0X2Vycm9yKGVyciwgR19NQVJLVVBfRVJST1Is Ci0rCQkJCSAgICBHX01BUktVUF9FUlJPUl9JTlZBTElEX0NPTlRFTlQsCi0rCQkJCSAgICAiTmVz dGVkIDxhdHRyaWJ1dGU+IGlzIGludmFsaWQiKTsKLSsJCQlyZXR1cm47Ci0gCQl9IGVsc2Ugewot IAkJCURCRygiTm8gZGF0YSBmb3IgYXR0cmlidXRlIDB4JTA0eCIsIGN0eF9kYXRhLT5hdHRyX2lk KTsKLSAJCX0KLUBAIC01NTgsNiArNTY1LDEzIEBAIHN0YXRpYyB2b2lkIGVsZW1lbnRfZW5kKEdN YXJrdXBQYXJzZUNvbnRleHQgKmNvbnRleHQsCi0gCX0KLSAKLSAJaWYgKCFzdHJjbXAoZWxlbWVu dF9uYW1lLCAic2VxdWVuY2UiKSkgewotKwkJaWYgKCFTRFBfSVNfU0VRKGN0eF9kYXRhLT5zdGFj a19oZWFkLT5kYXRhLT5kdGQpKSB7Ci0rCQkJZ19zZXRfZXJyb3IoZXJyLCBHX01BUktVUF9FUlJP UiwKLSsJCQkJICAgIEdfTUFSS1VQX0VSUk9SX0lOVkFMSURfQ09OVEVOVCwKLSsJCQkJICAgICJN aXNtYXRjaGVkIDwvc2VxdWVuY2U+IGNsb3NlIik7Ci0rCQkJcmV0dXJuOwotKwkJfQotKwotIAkJ Y3R4X2RhdGEtPnN0YWNrX2hlYWQtPmRhdGEtPnVuaXRTaXplID0gY29tcHV0ZV9zZXFfc2l6ZShj dHhfZGF0YS0+c3RhY2tfaGVhZC0+ZGF0YSk7Ci0gCi0gCQlpZiAoY3R4X2RhdGEtPnN0YWNrX2hl YWQtPmRhdGEtPnVuaXRTaXplID4gVVNIUlRfTUFYKSB7Ci1AQCAtNTcwLDYgKzU4NCwxMyBAQCBz dGF0aWMgdm9pZCBlbGVtZW50X2VuZChHTWFya3VwUGFyc2VDb250ZXh0ICpjb250ZXh0LAotIAkJ CWN0eF9kYXRhLT5zdGFja19oZWFkLT5kYXRhLT51bml0U2l6ZSArPSBzaXplb2YodWludDhfdCk7 Ci0gCQl9Ci0gCX0gZWxzZSBpZiAoIXN0cmNtcChlbGVtZW50X25hbWUsICJhbHRlcm5hdGUiKSkg ewotKwkJaWYgKCFTRFBfSVNfQUxUKGN0eF9kYXRhLT5zdGFja19oZWFkLT5kYXRhLT5kdGQpKSB7 Ci0rCQkJZ19zZXRfZXJyb3IoZXJyLCBHX01BUktVUF9FUlJPUiwKLSsJCQkJICAgIEdfTUFSS1VQ X0VSUk9SX0lOVkFMSURfQ09OVEVOVCwKLSsJCQkJICAgICJNaXNtYXRjaGVkIDwvYWx0ZXJuYXRl PiBjbG9zZSIpOwotKwkJCXJldHVybjsKLSsJCX0KLSsKLSAJCWN0eF9kYXRhLT5zdGFja19oZWFk LT5kYXRhLT51bml0U2l6ZSA9IGNvbXB1dGVfc2VxX3NpemUoY3R4X2RhdGEtPnN0YWNrX2hlYWQt PmRhdGEpOwotIAotIAkJaWYgKGN0eF9kYXRhLT5zdGFja19oZWFkLT5kYXRhLT51bml0U2l6ZSA+ IFVTSFJUX01BWCkgewotLS0gCi0yLjU1LjAKLQotCi1Gcm9tIGE5MjY4M2NlODFhYjkyY2Q3ZGZm ZDMzNTAyODQ1NzlmYmUwZDRjMzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBCYXN0 aWVuIE5vY2VyYSA8aGFkZXNzQGhhZGVzcy5uZXQ+Ci1EYXRlOiBXZWQsIDEyIEF1ZyAyMDI2IDEw OjAxOjM0ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMy85XSB1bml0OiBBZGQgdGVzdCBmb3Igc2Rw LXhtbCB0eXBlLWNvbmZ1c2lvbiBidWcKLQotU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ibHVlei9i bHVlei9zZWN1cml0eS9hZHZpc29yaWVzL0dIU0EtN21tci1nd3F4LXZjMzQKLQotQ28tYXV0aG9y ZWQtYnk6IEFpc2xlIFJlc2VhcmNoCi0tLS0KLSBNYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAxICsKLSB1bml0L3NkcC14bWwvY29tcHV0ZS1zZXEtc2l6 ZS10eXBlLWNvbmZ1c2lvbi54bWwgfCA5ICsrKysrKysrKwotIHVuaXQvdGVzdC1zZHAteG1sLmMg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKysKLSAzIGZpbGVzIGNoYW5nZWQsIDEy IGluc2VydGlvbnMoKykKLSBjcmVhdGUgbW9kZSAxMDA2NDQgdW5pdC9zZHAteG1sL2NvbXB1dGUt c2VxLXNpemUtdHlwZS1jb25mdXNpb24ueG1sCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBi L01ha2VmaWxlLmFtCi1pbmRleCAxZWNiNWUxZGRhZWMuLjFkNWYwMmIwZDM2MiAxMDA2NDQKLS0t LSBhL01ha2VmaWxlLmFtCi0rKysgYi9NYWtlZmlsZS5hbQotQEAgLTY0OCw2ICs2NDgsNyBAQCB1 bml0X3Rlc3Rfc2RwX3htbF9DRkxBR1MgPSAkKEFNX0NGTEFHUykgJChHTElCX0NGTEFHUykgLURU T1BfU1JDRElSPVwiIiQoc3JjZGlyKQotIHVuaXRfdGVzdF9zZHBfeG1sX0NQUEZMQUdTID0gLUkk KHNyY2RpcikvbGliCi0gCi0gRVhUUkFfRElTVCArPSB1bml0L3NkcC14bWwvQmx1ZXRvb3RoX0hJ RC1zZHBfcmVjb3JkLnhtbAkJXAotKwl1bml0L3NkcC14bWwvY29tcHV0ZS1zZXEtc2l6ZS10eXBl LWNvbmZ1c2lvbi54bWwJXAotIAl1bml0L3NkcC14bWwvcXQtU2VyaWFsUG9ydFNEUFJlY29yZC54 bWwKLSAKLSB1bml0X3Rlc3RzICs9IHVuaXQvdGVzdC1hdmR0cAotZGlmZiAtLWdpdCBhL3VuaXQv c2RwLXhtbC9jb21wdXRlLXNlcS1zaXplLXR5cGUtY29uZnVzaW9uLnhtbCBiL3VuaXQvc2RwLXht bC9jb21wdXRlLXNlcS1zaXplLXR5cGUtY29uZnVzaW9uLnhtbAotbmV3IGZpbGUgbW9kZSAxMDA2 NDQKLWluZGV4IDAwMDAwMDAwMDAwMC4uNDFkNjQ3OGFmMjc2Ci0tLS0gL2Rldi9udWxsCi0rKysg Yi91bml0L3NkcC14bWwvY29tcHV0ZS1zZXEtc2l6ZS10eXBlLWNvbmZ1c2lvbi54bWwKLUBAIC0w LDAgKzEsOSBAQAotKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgotKzxy ZWNvcmQ+Ci0rPGF0dHJpYnV0ZSBpZD0iMHgwMDAxIj4KLSs8c2VxdWVuY2U+Ci0rPGF0dHJpYnV0 ZSBpZD0iMHgwMDAyIj48dWludDggdmFsdWU9IjB4MDEiLz48L2F0dHJpYnV0ZT4KLSs8dWludDY0 IHZhbHVlPSIweDQxNDE0MTQxNDE0MTQxNDEiLz4KLSs8L3NlcXVlbmNlPgotKzwvYXR0cmlidXRl PgotKzwvcmVjb3JkPgotZGlmZiAtLWdpdCBhL3VuaXQvdGVzdC1zZHAteG1sLmMgYi91bml0L3Rl c3Qtc2RwLXhtbC5jCi1pbmRleCA5YWYyZjhjODcwZjYuLmM4Mjg4Y2ExMGI4YiAxMDA2NDQKLS0t LSBhL3VuaXQvdGVzdC1zZHAteG1sLmMKLSsrKyBiL3VuaXQvdGVzdC1zZHAteG1sLmMKLUBAIC04 MCw2ICs4MCw4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCi0gCURFRklO RV9URVNUKCJCbHVldG9vdGhfSElELXNkcF9yZWNvcmQueG1sIiwgVFJVRSk7Ci0gCURFRklORV9U RVNUKCJxdC1TZXJpYWxQb3J0U0RQUmVjb3JkLnhtbCIsIFRSVUUpOwotKwkvKiBGcm9tIGh0dHBz Oi8vZ2l0aHViLmNvbS9ibHVlei9ibHVlei9zZWN1cml0eS9hZHZpc29yaWVzL0dIU0EtN21tci1n d3F4LXZjMzQgKi8KLSsJREVGSU5FX1RFU1QoImNvbXB1dGUtc2VxLXNpemUtdHlwZS1jb25mdXNp b24ueG1sIiwgRkFMU0UpOwotIAotIAlyZXR1cm4gdGVzdGVyX3J1bigpOwotIH0KLS0tIAotMi41 NS4wCi0KLQotRnJvbSBhZTZjNTQzZTg5MmYxZmM1NWQxNjU4NGNlMWVmMDJlMTk2OTM1MmFmIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQmFzdGllbiBOb2NlcmEgPGhhZGVzc0BoYWRl c3MubmV0PgotRGF0ZTogV2VkLCAxMiBBdWcgMjAyNiAxMDowMTozNSArMDIwMAotU3ViamVjdDog W1BBVENIIDQvOV0gc2RwLXhtbDogRml4IG1lbW9yeSBsZWFrIHdoZW4gYWRkaW5nIGR1cGxpY2F0 ZSBhdHRyaWJ1dGVzCi0KLVdoZW4gc2RwX2F0dHJfYWRkKCkgZmFpbHMgYmVjYXVzZSBhbiBhdHRy aWJ1dGUgaXMgZHVwbGljYXRlZCwgZG9uJ3QKLXVuc2V0IGl0cyBwb2ludGVyIGluIHRoZSBwYXJz aW5nIGNvbnRleHQgZGF0YS4gQXMgdGhlIGF0dHJpYnV0ZSB3YXNuJ3QKLWFkZGVkIHRvIHRoZSBy ZWNvcmQsIHRoZSBvd25lcnNoaXAgb2YgdGhlIGF0dHJpYnV0ZSBkaWRuJ3QgZ2V0IHBhc3NlZAot dG8gdGhlIHJlY29yZCBlaXRoZXIuCi0KLURvbid0IHNldCB0aGUgcG9pbnRlciB0byBOVUxMIHNv IGl0IGdldHMgZnJlZWQgd2hlbiBjbGVhbmluZyB1cCB0aGUKLWNvbnRleHQuCi0KLUZpeGVzIHRo b3NlIDIgQVNhbiB3YXJuaW5nczoKLURpcmVjdCBsZWFrIG9mIDQ4IGJ5dGUocykgaW4gMSBvYmpl Y3QocykgYWxsb2NhdGVkIGZyb206Ci0gICAgIzAgMHg3Zjg5NmE4ZWYyNGYgaW4gY2FsbG9jICgv bGliNjQvbGliYXNhbi5zby44KzB4ZWYyNGYpIChCdWlsZElkOiA1Mzk1ZWM3NGY1NGQ5ZWM3YmY5 N2MwNjU4M2RkMzlhOTZjMjMwODIyKQotICAgICMxIDB4NTYyMDQyYjc0N2YyIGluIHNkcF9kYXRh X2FsbG9jX3dpdGhfbGVuZ3RoIGxpYi9ibHVldG9vdGgvc2RwLmM6MzUwCi0KLUluZGlyZWN0IGxl YWsgb2YgMiBieXRlKHMpIGluIDEgb2JqZWN0KHMpIGFsbG9jYXRlZCBmcm9tOgotICAgICMwIDB4 N2Y4OTZhOGVmMjRmIGluIGNhbGxvYyAoL2xpYjY0L2xpYmFzYW4uc28uOCsweGVmMjRmKSAoQnVp bGRJZDogNTM5NWVjNzRmNTRkOWVjN2JmOTdjMDY1ODNkZDM5YTk2YzIzMDgyMikKLSAgICAjMSAw eDU2MjA0MmI3NGJkNyBpbiBzZHBfZGF0YV9hbGxvY193aXRoX2xlbmd0aCBsaWIvYmx1ZXRvb3Ro L3NkcC5jOjQyNQotCi1TZWUgaHR0cHM6Ly9naXRodWIuY29tL2JsdWV6L2JsdWV6L3NlY3VyaXR5 L2Fkdmlzb3JpZXMvR0hTQS03NXY2LTZxNDQtNTdoYwotCi1SZXBvcnRlZC1ieTogQWlzbGUgUmVz ZWFyY2gKLUNvLWF1dGhvcmVkLWJ5OiBBaXNsZSBSZXNlYXJjaAotLS0tCi0gc3JjL3NkcC14bWwu YyB8IDUgKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9u KC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvc2RwLXhtbC5jIGIvc3JjL3NkcC14bWwuYwotaW5kZXgg YzhmOWVkMDEzYjI5Li44MTZkMTk2MTFmOGIgMTAwNjQ0Ci0tLS0gYS9zcmMvc2RwLXhtbC5jCi0r KysgYi9zcmMvc2RwLXhtbC5jCi1AQCAtNTM3LDggKzUzNywxMSBAQCBzdGF0aWMgdm9pZCBlbGVt ZW50X2VuZChHTWFya3VwUGFyc2VDb250ZXh0ICpjb250ZXh0LAotIAkJCWlmIChyZXQgPT0gLTEp Ci0gCQkJCURCRygiQ291bGQgbm90IGFkZCBhdHRyaWJ1dGUgMHglMDR4IiwKLSAJCQkJCQkJY3R4 X2RhdGEtPmF0dHJfaWQpOwotKwkJCWVsc2UgewotKwkJCQkvKiBvd25lcnNoaXAgdHJhbnNmZXJy ZWQgdG8gcmVjb3JkICovCi0rCQkJCWN0eF9kYXRhLT5zdGFja19oZWFkLT5kYXRhID0gTlVMTDsK LSsJCQl9Ci0gCi0tCQkJY3R4X2RhdGEtPnN0YWNrX2hlYWQtPmRhdGEgPSBOVUxMOwotIAkJCXNk cF94bWxfZGF0YV9mcmVlKGN0eF9kYXRhLT5zdGFja19oZWFkKTsKLSAJCQljdHhfZGF0YS0+c3Rh Y2tfaGVhZCA9IE5VTEw7Ci0gCQl9IGVsc2UgaWYgKGN0eF9kYXRhLT5zdGFja19oZWFkICYmIGN0 eF9kYXRhLT5zdGFja19oZWFkLT5uZXh0KSB7Ci0tLSAKLTIuNTUuMAotCi0KLUZyb20gYWI5MWI0 NTI4MjI5N2UwNTJiMmUzYmUyMmMxOTgyNjVkMTlhYzA5NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKLUZyb206IEJhc3RpZW4gTm9jZXJhIDxoYWRlc3NAaGFkZXNzLm5ldD4KLURhdGU6IFdlZCwg MTIgQXVnIDIwMjYgMTA6MDE6MzYgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCA1LzldIHVuaXQ6IEFk ZCB0ZXN0IGZvciBzZHAteG1sIGR1cGxpY2F0ZSBhdHRyaWJ1dGUgYnVnCi0KLVNlZSBodHRwczov L2dpdGh1Yi5jb20vYmx1ZXovYmx1ZXovc2VjdXJpdHkvYWR2aXNvcmllcy9HSFNBLTc1djYtNnE0 NC01N2hjCi0KLUNvLWF1dGhvcmVkLWJ5OiBBaXNsZSBSZXNlYXJjaAotLS0tCi0gTWFrZWZpbGUu YW0gICAgICAgICAgICAgICAgICAgICAgICAgIHwgMSArCi0gdW5pdC9zZHAteG1sL2R1cGxpY2F0 ZS1hdHRyaWJ1dGUueG1sIHwgNCArKysrCi0gdW5pdC90ZXN0LXNkcC14bWwuYyAgICAgICAgICAg ICAgICAgIHwgMiArKwotIDMgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspCi0gY3JlYXRl IG1vZGUgMTAwNjQ0IHVuaXQvc2RwLXhtbC9kdXBsaWNhdGUtYXR0cmlidXRlLnhtbAotCi1kaWZm IC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQotaW5kZXggMWQ1ZjAyYjBkMzYyLi4z YzZjZjkyYWI0MDMgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0K LUBAIC02NDksNiArNjQ5LDcgQEAgdW5pdF90ZXN0X3NkcF94bWxfQ1BQRkxBR1MgPSAtSSQoc3Jj ZGlyKS9saWIKLSAKLSBFWFRSQV9ESVNUICs9IHVuaXQvc2RwLXhtbC9CbHVldG9vdGhfSElELXNk cF9yZWNvcmQueG1sCQlcCi0gCXVuaXQvc2RwLXhtbC9jb21wdXRlLXNlcS1zaXplLXR5cGUtY29u ZnVzaW9uLnhtbAlcCi0rCXVuaXQvc2RwLXhtbC9kdXBsaWNhdGUtYXR0cmlidXRlLnhtbAkJCVwK LSAJdW5pdC9zZHAteG1sL3F0LVNlcmlhbFBvcnRTRFBSZWNvcmQueG1sCi0gCi0gdW5pdF90ZXN0 cyArPSB1bml0L3Rlc3QtYXZkdHAKLWRpZmYgLS1naXQgYS91bml0L3NkcC14bWwvZHVwbGljYXRl LWF0dHJpYnV0ZS54bWwgYi91bml0L3NkcC14bWwvZHVwbGljYXRlLWF0dHJpYnV0ZS54bWwKLW5l dyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwMDAuLmEzMGJjNTlkOTRmZgotLS0t IC9kZXYvbnVsbAotKysrIGIvdW5pdC9zZHAteG1sL2R1cGxpY2F0ZS1hdHRyaWJ1dGUueG1sCi1A QCAtMCwwICsxLDQgQEAKLSs8cmVjb3JkPgotKzxhdHRyaWJ1dGUgaWQ9IjB4MDAwMSI+PHRleHQg dmFsdWU9IkEiLz48L2F0dHJpYnV0ZT4KLSs8YXR0cmlidXRlIGlkPSIweDAwMDEiPjx0ZXh0IHZh bHVlPSJCIi8+PC9hdHRyaWJ1dGU+Ci0rPC9yZWNvcmQ+Ci1kaWZmIC0tZ2l0IGEvdW5pdC90ZXN0 LXNkcC14bWwuYyBiL3VuaXQvdGVzdC1zZHAteG1sLmMKLWluZGV4IGM4Mjg4Y2ExMGI4Yi4uOWJm MzUyMzU0MjNiIDEwMDY0NAotLS0tIGEvdW5pdC90ZXN0LXNkcC14bWwuYwotKysrIGIvdW5pdC90 ZXN0LXNkcC14bWwuYwotQEAgLTgyLDYgKzgyLDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIg KmFyZ3ZbXSkKLSAJREVGSU5FX1RFU1QoInF0LVNlcmlhbFBvcnRTRFBSZWNvcmQueG1sIiwgVFJV RSk7Ci0gCS8qIEZyb20gaHR0cHM6Ly9naXRodWIuY29tL2JsdWV6L2JsdWV6L3NlY3VyaXR5L2Fk dmlzb3JpZXMvR0hTQS03bW1yLWd3cXgtdmMzNCAqLwotIAlERUZJTkVfVEVTVCgiY29tcHV0ZS1z ZXEtc2l6ZS10eXBlLWNvbmZ1c2lvbi54bWwiLCBGQUxTRSk7Ci0rCS8qIEZyb20gaHR0cHM6Ly9n aXRodWIuY29tL2JsdWV6L2JsdWV6L3NlY3VyaXR5L2Fkdmlzb3JpZXMvR0hTQS03NXY2LTZxNDQt NTdoYyAqLwotKwlERUZJTkVfVEVTVCgiZHVwbGljYXRlLWF0dHJpYnV0ZS54bWwiLCBUUlVFKTsK LSAKLSAJcmV0dXJuIHRlc3Rlcl9ydW4oKTsKLSB9Ci0tLSAKLTIuNTUuMAotCi0KLUZyb20gMzA4 ZTM1MzY2ODhjMDAxMWUxMWIyZDliZmRjOTRjYjM4ZTUyYzA2MCBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKLUZyb206IEJhc3RpZW4gTm9jZXJhIDxoYWRlc3NAaGFkZXNzLm5ldD4KLURhdGU6IFdl ZCwgMTIgQXVnIDIwMjYgMTA6MDE6MzcgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCA2LzldIHNkcC14 bWw6IE9wdGltaXNlIHBhcnNpbmcgbGFyZ2Ugc2VxdWVuY2VzCi0KLVNEUCBzZXF1ZW5jZXMgYXJl IHN0b3JlZCBhcyBzaW5nbGUtbGlua2VkIGxpc3RzLCBzbyBhcHBlbmRpbmcgbWVtYmVycwotdG8g YSBzZXF1ZW5jZSByZXF1aXJlcyBmaW5kaW5nIHRoZSB0YWlsIG9mIHRoZSBsaXN0IGJlZm9yZSB0 aGUKLWluc2VydGlvbi4KLQotRmluZGluZyB0aGUgdGFpbCBvZiB0aGUgbGlzdCBhbHdheXMgc3Rh cnRzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxpc3QsCi1zbyB0YWtlcyBsb25nZXIgYW5kIGxv bmdlciBhcyB0aGUgbGlzdCBncm93cyBiaWdnZXIuCi0KLUtlZXAgdHJhY2sgb2YgdGhlIHRhaWwg dG8gYXZvaWQgdGhhdCBwcm9ibGVtLiBUaGlzIGN1dHMgZG93biB0aGUKLXNlcXVlbmNlX29uX3Nx dWFyZWQoKSB0ZXN0IGZyb20gYXJvdW5kIDMgdG8gNCBzZWNvbmRzIHRvIGxlc3MgdGhhbgotMC4x IHNlY29uZHMuCi0tLS0KLSBzcmMvc2RwLXhtbC5jIHwgMTggKysrKysrKysrKysrKysrLS0tCi0g MSBmaWxlIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYg LS1naXQgYS9zcmMvc2RwLXhtbC5jIGIvc3JjL3NkcC14bWwuYwotaW5kZXggODE2ZDE5NjExZjhi Li5mYjg0MTdiM2ZjNjAgMTAwNjQ0Ci0tLS0gYS9zcmMvc2RwLXhtbC5jCi0rKysgYi9zcmMvc2Rw LXhtbC5jCi1AQCAtNDQsNiArNDQsNyBAQCBzdHJ1Y3Qgc2RwX3htbF9kYXRhIHsKLSAJY2hhciB0 eXBlOwkJCS8qIDAgPSBUZXh0IG9yIEhleGFkZWNpbWFsICovCi0gCWNoYXIgKm5hbWU7CQkJLyog TmFtZSwgb3B0aW9uYWwgaW4gdGhlIGR0ZCAqLwotIAkvKiBUT0RPOiBXaGF0IGlzIGl0IHVzZWQg Zm9yPyAqLwotKwlzZHBfZGF0YV90ICp0YWlsOwkJLyogVGFpbCBmb3IgTygxKSBkYXRhc2VxIGFw cGVuZCAqLwotIH07Ci0gCi0gc3RydWN0IGNvbnRleHRfZGF0YSB7Ci1AQCAtNjA5LDYgKzYxMCw3 IEBAIHN0YXRpYyB2b2lkIGVsZW1lbnRfZW5kKEdNYXJrdXBQYXJzZUNvbnRleHQgKmNvbnRleHQs Ci0gCi0gCWlmIChjdHhfZGF0YS0+c3RhY2tfaGVhZC0+bmV4dCAmJiBjdHhfZGF0YS0+c3RhY2tf aGVhZC0+ZGF0YSAmJgotIAkJCQkJY3R4X2RhdGEtPnN0YWNrX2hlYWQtPm5leHQtPmRhdGEpIHsK LSsJCXNkcF9kYXRhX3QgKnRhaWw7Ci0gCQlzd2l0Y2ggKGN0eF9kYXRhLT5zdGFja19oZWFkLT5u ZXh0LT5kYXRhLT5kdGQpIHsKLSAJCWNhc2UgU0RQX1NFUTg6Ci0gCQljYXNlIFNEUF9TRVExNjoK LUBAIC02MTYsMTAgKzYxOCwyMCBAQCBzdGF0aWMgdm9pZCBlbGVtZW50X2VuZChHTWFya3VwUGFy c2VDb250ZXh0ICpjb250ZXh0LAotIAkJY2FzZSBTRFBfQUxUODoKLSAJCWNhc2UgU0RQX0FMVDE2 OgotIAkJY2FzZSBTRFBfQUxUMzI6Ci0tCQkJY3R4X2RhdGEtPnN0YWNrX2hlYWQtPm5leHQtPmRh dGEtPnZhbC5kYXRhc2VxID0KLS0JCQkJc2RwX3NlcV9hcHBlbmQoY3R4X2RhdGEtPnN0YWNrX2hl YWQtPm5leHQtPmRhdGEtPnZhbC5kYXRhc2VxLAotLQkJCQkJCQkJY3R4X2RhdGEtPnN0YWNrX2hl YWQtPmRhdGEpOwotKwkJCXRhaWwgPSBjdHhfZGF0YS0+c3RhY2tfaGVhZC0+bmV4dC0+ZGF0YS0+ dmFsLmRhdGFzZXEgPwotKwkJCQljdHhfZGF0YS0+c3RhY2tfaGVhZC0+bmV4dC0+dGFpbCA6IE5V TEw7Ci0rCQkJaWYgKHRhaWwpIHsKLSsJCQkJc2RwX3NlcV9hcHBlbmQodGFpbCwKLSsJCQkJCWN0 eF9kYXRhLT5zdGFja19oZWFkLT5kYXRhKTsKLSsJCQl9IGVsc2UgewotKwkJCQljdHhfZGF0YS0+ c3RhY2tfaGVhZC0+bmV4dC0+ZGF0YS0+dmFsLmRhdGFzZXEgPQotKwkJCQkJc2RwX3NlcV9hcHBl bmQoTlVMTCwKLSsJCQkJCQljdHhfZGF0YS0+c3RhY2tfaGVhZC0+ZGF0YSk7Ci0rCQkJfQotKwkJ CWN0eF9kYXRhLT5zdGFja19oZWFkLT5uZXh0LT50YWlsID0KLSsJCQkJCWN0eF9kYXRhLT5zdGFj a19oZWFkLT5kYXRhOwotIAkJCWN0eF9kYXRhLT5zdGFja19oZWFkLT5kYXRhID0gTlVMTDsKLSsJ CQljdHhfZGF0YS0+c3RhY2tfaGVhZC0+dGFpbCA9IE5VTEw7Ci0gCQkJYnJlYWs7Ci0gCQl9Ci0g Ci0tLSAKLTIuNTUuMAotCi0KLUZyb20gOTVmYTU3MzU1NjJlOWYwMjBjMTc0MTk5ZjE5MDE2Y2Ji MWMwOWZmMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEJhc3RpZW4gTm9jZXJhIDxo YWRlc3NAaGFkZXNzLm5ldD4KLURhdGU6IFdlZCwgMTIgQXVnIDIwMjYgMTA6MDE6MzggKzAyMDAK LVN1YmplY3Q6IFtQQVRDSCA3LzldIHVuaXQ6IEFkZCB0ZXN0IGZvciBzbG93IGVsZW1lbnRfZW5k KCkgYXBwZW5kCi0KLVRoaXMgdXNlcyA0MGsgaXRlcmF0aW9ucyBhcyB0aGlzIHRha2VzIGEgdmlz aWJsZSBhbW91bnQgb2YgdGltZSBvbiBhCi1wcmV0dHkgZmFzdCBkZXNrdG9wIG1hY2hpbmUgKDMt NCBzZWNzIG9uIGFuIGk5IDk5MDBrKS4KLQotU2VlOiBodHRwczovL2dpdGh1Yi5jb20vYmx1ZXov Ymx1ZXovc2VjdXJpdHkvYWR2aXNvcmllcy9HSFNBLTRwNTctbXJjdi1yMmpjCi0tLS0KLSB1bml0 L3Rlc3Qtc2RwLXhtbC5jIHwgNDYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQ2IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdp dCBhL3VuaXQvdGVzdC1zZHAteG1sLmMgYi91bml0L3Rlc3Qtc2RwLXhtbC5jCi1pbmRleCA5YmYz NTIzNTQyM2IuLjVhYTk4MzM0ZWFiYyAxMDA2NDQKLS0tLSBhL3VuaXQvdGVzdC1zZHAteG1sLmMK LSsrKyBiL3VuaXQvdGVzdC1zZHAteG1sLmMKLUBAIC02NSw2ICs2NSw0NyBAQCBzdGF0aWMgdm9p ZCBwYXJzZV94bWxfZm9yX2ZpbGVuYW1lKGdjb25zdHBvaW50ZXIgZGF0YSkKLSAJZ19mcmVlKHBh dGgpOwotIH0KLSAKLSsjZGVmaW5lIFhNTF9TVEFSVAkJCQkJCVwKLSsJIjw/eG1sIHZlcnNpb249 XCIxLjBcIiBlbmNvZGluZz1cIlVURi04XCIgPz5cbiIJCVwKLSsJIjxyZWNvcmQ+XG4iCQkJCQkJ XAotKwkiCTxhdHRyaWJ1dGUgaWQ9XCIweDAwMDRcIj5cbiIJCQlcCi0rCSIJCTxzZXF1ZW5jZT4i Ci0rCi0rI2RlZmluZSBYTUxfVkFMVUUJCQkJCQlcCi0rCSIJCQk8dWludDggdmFsdWU9XCIweDAx XCIgLz5cbiIKLSsKLSsjZGVmaW5lIFhNTF9FTkQJCQkJCQkJXAotKwkiCQk8L3NlcXVlbmNlPlxu IgkJCQlcCi0rCSIJPC9hdHRyaWJ1dGU+XG4iCQkJCQlcCi0rCSI8L3JlY29yZD4iCi0rCi0rc3Rh dGljIHZvaWQgc2VxdWVuY2Vfb25fc3F1YXJlZChnY29uc3Rwb2ludGVyIGRhdGEpCi0rewotKwlz dHJ1Y3QgdGVzdF9kYXRhICp0ID0gKHN0cnVjdCB0ZXN0X2RhdGEgKikgZGF0YTsKLSsJcGFyc2Vf eG1sKHQtPnMtPnN0ciwgdC0+cy0+bGVuLCBUUlVFKTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQgc2Vx dWVuY2Vfb25fc3F1YXJlZF9zZXR1cChnY29uc3Rwb2ludGVyIGRhdGEpCi0rewotKwlzdHJ1Y3Qg dGVzdF9kYXRhICp0ID0gKHN0cnVjdCB0ZXN0X2RhdGEgKikgZGF0YTsKLSsJZ3VpbnQgaTsKLSsK LSsJdC0+cyA9IGdfc3RyaW5nX25ldyhYTUxfU1RBUlQpOwotKwlmb3IgKGkgPSAwOyBpIDwgNDAw MDA7IGkrKykKLSsJCXQtPnMgPSBnX3N0cmluZ19hcHBlbmQodC0+cywgWE1MX1ZBTFVFKTsKLSsJ dC0+cyA9IGdfc3RyaW5nX2FwcGVuZCh0LT5zLCBYTUxfRU5EKTsKLSsKLSsJdGVzdGVyX3NldHVw X2NvbXBsZXRlKCk7Ci0rfQotKwotK3N0YXRpYyB2b2lkIHNlcXVlbmNlX29uX3NxdWFyZWRfdGVh cmRvd24oZ2NvbnN0cG9pbnRlciBkYXRhKQotK3sKLSsJc3RydWN0IHRlc3RfZGF0YSAqdCA9IChz dHJ1Y3QgdGVzdF9kYXRhICopIGRhdGE7Ci0rCi0rCWdfc3RyaW5nX2ZyZWUodC0+cywgVFJVRSk7 Ci0rCXRlc3Rlcl90ZWFyZG93bl9jb21wbGV0ZSgpOwotK30KLSsKLSAjZGVmaW5lIERFRklORV9U RVNUKGZuYW1lLCByZXMpIHsJCQkJCVwKLSAJZGF0YS5leHBlY3RlZF9yZXN1bHQgPSByZXM7CQkJ CQlcCi0gCWRhdGEuZmlsZW5hbWUgPSBmbmFtZTsJCQkJCQlcCi1AQCAtODUsNSArMTI2LDEwIEBA IGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCS8qIEZyb20gaHR0cHM6Ly9naXRo dWIuY29tL2JsdWV6L2JsdWV6L3NlY3VyaXR5L2Fkdmlzb3JpZXMvR0hTQS03NXY2LTZxNDQtNTdo YyAqLwotIAlERUZJTkVfVEVTVCgiZHVwbGljYXRlLWF0dHJpYnV0ZS54bWwiLCBUUlVFKTsKLSAK LSsJdGVzdGVyX2FkZCgiL3NlcXVlbmNlX29uX3NxdWFyZWQiLCAmZGF0YSwKLSsJCSAgIHNlcXVl bmNlX29uX3NxdWFyZWRfc2V0dXAsCi0rCQkgICBzZXF1ZW5jZV9vbl9zcXVhcmVkLAotKwkJICAg c2VxdWVuY2Vfb25fc3F1YXJlZF90ZWFyZG93bik7Ci0rCi0gCXJldHVybiB0ZXN0ZXJfcnVuKCk7 Ci0gfQotLS0gCi0yLjU1LjAKLQotCi1Gcm9tIGU5Y2FhN2QzZTJiZjc0NjIwMzM0OGU1MDY1NGU3 NzU4ZmM4NDI4NWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBCYXN0aWVuIE5vY2Vy YSA8aGFkZXNzQGhhZGVzcy5uZXQ+Ci1EYXRlOiBXZWQsIDEyIEF1ZyAyMDI2IDEwOjAxOjM5ICsw MjAwCi1TdWJqZWN0OiBbUEFUQ0ggOC85XSBzZHAteG1sOiBGaXggc3RhY2sgb3ZlcmZsb3cgd2hl biBjb252ZXJ0aW5nIGxhcmdlCi0gc2VxdWVuY2VzIHRvIFhNTAotCi1Eb24ndCBtYWtlIGNvbnZl cnRfcmF3X2RhdGFfdG9feG1sKCkgY2FsbCBpdHNlbGYgcmVjdXJzaXZlbHkgWCB0aW1lcwotaWYg dGhlcmUgYXJlIFggZWxlbWVudHMgaW4gYSBzZXF1ZW5jZS4KLQotQWRkcmVzc1Nhbml0aXplcjpE RUFETFlTSUdOQUwKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci09PTE2ODQ1MTg9PUVSUk9SOiBBZGRyZXNzU2FuaXRpemVy OiBzdGFjay1vdmVyZmxvdyBvbiBhZGRyZXNzIDB4N2ZmZjdmYjQwZDk4IChwYyAweDdmYmUxZWU5 NWMyYiBicCAweDdmZmY3ZmI0MTYxMCBzcCAweDdmZmY3ZmI0MGQ3MCBUMCkKLSAgICAjMCAweDdm YmUxZWU5NWMyYiBpbiBwcmludGZfY29tbW9uKHZvaWQqLCBjaGFyIGNvbnN0KiwgX192YV9saXN0 X3RhZyopICgvbGliNjQvbGliYXNhbi5zby44KzB4OTVjMmIpIChCdWlsZElkOiA1Mzk1ZWM3NGY1 NGQ5ZWM3YmY5N2MwNjU4M2RkMzlhOTZjMjMwODIyKQotICAgICMxIDB4N2ZiZTFlZWI3MmQ2IGlu IHZzbnByaW50ZiAoL2xpYjY0L2xpYmFzYW4uc28uOCsweGI3MmQ2KSAoQnVpbGRJZDogNTM5NWVj NzRmNTRkOWVjN2JmOTdjMDY1ODNkZDM5YTk2YzIzMDgyMikKLSAgICAjMiAweDdmYmUxZWViOTRm NCBpbiBzbnByaW50ZiAoL2xpYjY0L2xpYmFzYW4uc28uOCsweGI5NGY0KSAoQnVpbGRJZDogNTM5 NWVjNzRmNTRkOWVjN2JmOTdjMDY1ODNkZDM5YTk2YzIzMDgyMikKLSAgICAjMyAweDAwMDAwMDQw MWZjMiBpbiBjb252ZXJ0X3Jhd19kYXRhX3RvX3htbCAuLi8uLi8uLi8uLi9Qcm9qZWN0cy9qaGJ1 aWxkL2JsdWV6L3NyYy9zZHAteG1sLmM6NzA5Ci0gICAgIzQgMHgwMDAwMDA0MDFjNGYgaW4gY29u dmVydF9yYXdfZGF0YV90b194bWwgLi4vLi4vLi4vLi4vUHJvamVjdHMvamhidWlsZC9ibHVlei9z cmMvc2RwLXhtbC5jOjk5NAotWy4uLl0KLSAgICAjMjQ2IDB4MDAwMDAwNDAxYzRmIGluIGNvbnZl cnRfcmF3X2RhdGFfdG9feG1sIC4uLy4uLy4uLy4uL1Byb2plY3RzL2poYnVpbGQvYmx1ZXovc3Jj L3NkcC14bWwuYzo5OTQKLQotU1VNTUFSWTogQWRkcmVzc1Nhbml0aXplcjogc3RhY2stb3ZlcmZs b3cgLi4vLi4vLi4vLi4vUHJvamVjdHMvamhidWlsZC9ibHVlei9zcmMvc2RwLXhtbC5jOjcwOSBp biBjb252ZXJ0X3Jhd19kYXRhX3RvX3htbAotLS0tCi0gc3JjL3NkcC14bWwuYyB8IDE2ICsrKysr KysrKysrKystLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlv bnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9zZHAteG1sLmMgYi9zcmMvc2RwLXhtbC5jCi1pbmRl eCBmYjg0MTdiM2ZjNjAuLjViNDQ4ZmU4MzQxMCAxMDA2NDQKLS0tLSBhL3NyYy9zZHAteG1sLmMK LSsrKyBiL3NyYy9zZHAteG1sLmMKLUBAIC02ODIsOSArNjgyLDEyIEBAIHNkcF9yZWNvcmRfdCAq c2RwX3htbF9wYXJzZV9yZWNvcmQoY29uc3QgY2hhciAqZGF0YSwgaW50IHNpemUpCi0gCXJldHVy biByZWNvcmQ7Ci0gfQotIAotLQotIHN0YXRpYyB2b2lkIGNvbnZlcnRfcmF3X2RhdGFfdG9feG1s KHNkcF9kYXRhX3QgKnZhbHVlLCBpbnQgaW5kZW50X2xldmVsLAotLQkJdm9pZCAqZGF0YSwgdm9p ZCAoKmFwcGVuZGVyKSh2b2lkICosIGNvbnN0IGNoYXIgKikpCi0rCQl2b2lkICpkYXRhLCB2b2lk ICgqYXBwZW5kZXIpKHZvaWQgKiwgY29uc3QgY2hhciAqKSk7Ci0rCi0rc3RhdGljIGlubGluZSB2 b2lkIGNvbnZlcnRfcmF3X2RhdGFfdG9feG1sX2VsZW1lbnQoc2RwX2RhdGFfdCAqdmFsdWUsCi0r CQlpbnQgaW5kZW50X2xldmVsLHZvaWQgKmRhdGEsCi0rCQl2b2lkICgqYXBwZW5kZXIpKHZvaWQg KiwgY29uc3QgY2hhciAqKSkKLSB7Ci0gCWludCBpLCBoZXg7Ci0gCWNoYXIgYnVmW1NUUkJVRlNJ WkVdOwotQEAgLTEwMDIsOCArMTAwNSwxNSBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0X3Jhd19kYXRh X3RvX3htbChzZHBfZGF0YV90ICp2YWx1ZSwgaW50IGluZGVudF9sZXZlbCwKLSAKLSAJCWJyZWFr OwotIAl9Ci0rfQotIAotLQljb252ZXJ0X3Jhd19kYXRhX3RvX3htbCh2YWx1ZS0+bmV4dCwgaW5k ZW50X2xldmVsLCBkYXRhLCBhcHBlbmRlcik7Ci0rc3RhdGljIHZvaWQgY29udmVydF9yYXdfZGF0 YV90b194bWwoc2RwX2RhdGFfdCAqdmFsdWUsIGludCBpbmRlbnRfbGV2ZWwsCi0rCQl2b2lkICpk YXRhLCB2b2lkICgqYXBwZW5kZXIpKHZvaWQgKiwgY29uc3QgY2hhciAqKSkKLSt7Ci0rCWZvciAo OyB2YWx1ZSAhPSBOVUxMOyB2YWx1ZSA9IHZhbHVlLT5uZXh0KSB7Ci0rCQljb252ZXJ0X3Jhd19k YXRhX3RvX3htbF9lbGVtZW50KHZhbHVlLCBpbmRlbnRfbGV2ZWwsCi0rCQkJZGF0YSwgYXBwZW5k ZXIpOwotKwl9Ci0gfQotIAotIHN0cnVjdCBjb252ZXJzaW9uX2RhdGEgewotLS0gCi0yLjU1LjAK LQotCi1Gcm9tIGQwMWJhNzhiMWQ4YTMyOTRmODJhZTAwMzQ3OWM5MjJlMTQ5OWVkNDkgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBCYXN0aWVuIE5vY2VyYSA8aGFkZXNzQGhhZGVzcy5u ZXQ+Ci1EYXRlOiBXZWQsIDEyIEF1ZyAyMDI2IDEwOjAxOjQwICswMjAwCi1TdWJqZWN0OiBbUEFU Q0ggOS85XSB1bml0OiBBZGQgY29udmVydF9zZHBfcmVjb3JkX3RvX3htbCgpIHRvIFNEUCBYTUwg dGVzdGluZwotCi1UaGlzIHRlc3RzIFNEUCBiaW5hcnkgdG8gWE1MIGNvbnZlcnNpb24sIGluY2x1 ZGluZyB3aGV0aGVyIGEgZml4IGZvcgotYSBzdGFjayBvdmVyZmxvdyB3aGVuIGRlYWxpbmcgd2l0 aCBsYXJnZSBzZXF1ZW5jZXMsIGxpa2UgaW4KLXNlcXVlbmNlX29uX3NxdWFyZWQoKSwgd29ya3Mg Y29ycmVjdGx5LgotLS0tCi0gdW5pdC90ZXN0LXNkcC14bWwuYyB8IDEwICsrKysrKysrKy0KLSAx IGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1n aXQgYS91bml0L3Rlc3Qtc2RwLXhtbC5jIGIvdW5pdC90ZXN0LXNkcC14bWwuYwotaW5kZXggNWFh OTgzMzRlYWJjLi5iMzM4Nzg4YWEyOTUgMTAwNjQ0Ci0tLS0gYS91bml0L3Rlc3Qtc2RwLXhtbC5j Ci0rKysgYi91bml0L3Rlc3Qtc2RwLXhtbC5jCi1AQCAtMjgsNiArMjgsMTIgQEAgc3RydWN0IHRl c3RfZGF0YSB7Ci0gCWdib29sZWFuIGV4cGVjdGVkX3Jlc3VsdDsKLSB9OwotIAotK3N0YXRpYyB2 b2lkIGRvcHJpbnRmKHZvaWQgKmRhdGEsIGNvbnN0IGNoYXIgKnN0cikKLSt7Ci0rCS8qIERvIG5v dGhpbmcgZm9yIG91ciB0ZXN0cyAqLwotKwkvKiBwcmludGYoIiVzIiwgc3RyKTsgKi8KLSt9Ci0r Ci0gc3RhdGljIHZvaWQgcGFyc2VfeG1sKGdjb25zdHBvaW50ZXIgZGF0YSwgZ3NpemUgbGVuLCBn Ym9vbGVhbiBleHBlY3RlZF9yZXN1bHQpCi0gewotIAlzZHBfcmVjb3JkX3QgKnJlYyA9IE5VTEw7 Ci1AQCAtMzksOCArNDUsMTAgQEAgc3RhdGljIHZvaWQgcGFyc2VfeG1sKGdjb25zdHBvaW50ZXIg ZGF0YSwgZ3NpemUgbGVuLCBnYm9vbGVhbiBleHBlY3RlZF9yZXN1bHQpCi0gCQl0ZXN0ZXJfdGVz dF9wYXNzZWQoKTsKLSAJZWxzZQotIAkJdGVzdGVyX3Rlc3RfZmFpbGVkKCk7Ci0tCWlmIChyZWMp Ci0rCWlmIChyZWMpIHsKLSsJCWNvbnZlcnRfc2RwX3JlY29yZF90b194bWwocmVjLCAwLCBkb3By aW50Zik7Ci0gCQlzZHBfcmVjb3JkX2ZyZWUocmVjKTsKLSsJfQotIH0KLSAKLSBzdGF0aWMgdm9p ZCBwYXJzZV94bWxfZm9yX2ZpbGVuYW1lKGdjb25zdHBvaW50ZXIgZGF0YSkKLS0tIAotMi41NS4w Ci0KLUZyb20gYjIxZWRjNDliMmMzNjc1YzdhZWExOTI4NmZkYjJiODg3ZjI5YzBmZiBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEx1aXogQXVndXN0byB2b24gRGVudHogPGx1aXoudm9u LmRlbnR6QGludGVsLmNvbT4KLURhdGU6IEZyaSwgMTQgQXVnIDIwMjYgMTM6MzE6MDcgLTA0MDAK LVN1YmplY3Q6IFtQQVRDSCAxLzRdIHNkcC14bWw6IFVzZSBhIHF1ZXVlIHRvIGNvbGxlY3Qgc2Vx dWVuY2UgbWVtYmVycwotCi1BcHBlbmRpbmcgYSBtZW1iZXIgdG8gYSBzZXF1ZW5jZSB3aXRoIHNk cF9zZXFfYXBwZW5kKCkgd2Fsa3MgdGhlCi1zaW5nbGUtbGlua2VkIGxpc3QgdG8gZmluZCBpdHMg dGFpbCwgc28gYnVpbGRpbmcgYSBzZXF1ZW5jZSBpcyBPKG5eMikuCi0KLVRoaXMgd2FzIHByZXZp b3VzbHkgd29ya2VkIGFyb3VuZCBieSBjYWNoaW5nIHRoZSB0YWlsIG9mIHRoZSBzZXF1ZW5jZSBp bgotc3RydWN0IHNkcF94bWxfZGF0YSwgd2hpY2ggcmVxdWlyZWQgdGhlIGNhbGxlciB0byBwaWNr IGJldHdlZW4gYXBwZW5kaW5nCi10byB0aGUgY2FjaGVkIHRhaWwgYW5kIGluaXRpYWxpc2luZyB2 YWwuZGF0YXNlcSwgYW5kIHRvIGtlZXAgdGhlIGNhY2hlIGluCi1zeW5jIG9uIGV2ZXJ5IGFwcGVu ZC4KLQotQ29sbGVjdCB0aGUgbWVtYmVycyBpbiBhIHN0cnVjdCBxdWV1ZSBpbnN0ZWFkLCB3aGlj aCB0cmFja3MgaXRzIG93biB0YWlsLAotYW5kIGxpbmsgdGhlbSBpbnRvIHZhbC5kYXRhc2VxIG9u Y2UgdGhlIGVsZW1lbnQgaXMgY2xvc2VkLiBBcHBlbmRpbmcgaXMgYQotcGxhaW4gcXVldWVfcHVz aF90YWlsKCksIGFuZCB0aGUgcXVldWUgaXMgZGVzdHJveWVkIGFsb25nIHdpdGggdGhlIHJlc3QK LW9mIHRoZSBlbGVtZW50IHNvIG1lbWJlcnMgdGhhdCB3ZXJlIG5ldmVyIGxpbmtlZCwgc3VjaCBh cyBvbiBtYWxmb3JtZWQKLWlucHV0LCBhcmUgc3RpbGwgZnJlZWQuCi0KLVRoZSBzZXF1ZW5jZV9v bl9zcXVhcmVkKCkgdGVzdCBzdGF5cyBhdCBsZXNzIHRoYW4gMC4xIHNlY29uZHMuCi0KLUFzc2lz dGVkLWJ5OiBDbGF1ZGU6Y2xhdWRlLW9wdXMtNQotLS0tCi0gTWFrZWZpbGUudG9vbHMgfCAgNCAr KystCi0gc3JjL3NkcC14bWwuYyAgfCA2MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKystLS0tLS0tLS0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgNDYgaW5zZXJ0aW9ucygrKSwg MTggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS50b29scyBiL01ha2VmaWxl LnRvb2xzCi1pbmRleCAxYTRlNTY2MDgxM2IuLmIzZWY0YWUxYzNkZiAxMDA2NDQKLS0tLSBhL01h a2VmaWxlLnRvb2xzCi0rKysgYi9NYWtlZmlsZS50b29scwotQEAgLTQzNyw3ICs0MzcsOSBAQCB0 b29sc19oY2ljb25maWdfTERBREQgPSBsaWIvbGliYmx1ZXRvb3RoLWludGVybmFsLmxhCi0gdG9v bHNfaGNpdG9vbF9TT1VSQ0VTID0gdG9vbHMvaGNpdG9vbC5jIHNyYy9vdWkuaCBzcmMvb3VpLmMK LSB0b29sc19oY2l0b29sX0xEQUREID0gbGliL2xpYmJsdWV0b290aC1pbnRlcm5hbC5sYSAkKFVE RVZfTElCUykKLSAKLS10b29sc19zZHB0b29sX1NPVVJDRVMgPSB0b29scy9zZHB0b29sLmMgc3Jj L3NkcC14bWwuaCBzcmMvc2RwLXhtbC5jCi0rdG9vbHNfc2RwdG9vbF9TT1VSQ0VTID0gdG9vbHMv c2RwdG9vbC5jIHNyYy9zZHAteG1sLmggc3JjL3NkcC14bWwuYyBcCi0rCQkJc3JjL3NoYXJlZC9x dWV1ZS5oIHNyYy9zaGFyZWQvcXVldWUuYyBcCi0rCQkJc3JjL3NoYXJlZC91dGlsLmggc3JjL3No YXJlZC91dGlsLmMKLSB0b29sc19zZHB0b29sX0xEQUREID0gbGliL2xpYmJsdWV0b290aC1pbnRl cm5hbC5sYSAkKEdMSUJfTElCUykKLSAKLSB0b29sc19jaXB0b29sX0xEQUREID0gbGliL2xpYmJs dWV0b290aC1pbnRlcm5hbC5sYQotZGlmZiAtLWdpdCBhL3NyYy9zZHAteG1sLmMgYi9zcmMvc2Rw LXhtbC5jCi1pbmRleCA1YjQ0OGZlODM0MTAuLmJhZDllMjg5MzQ0ZiAxMDA2NDQKLS0tLSBhL3Ny Yy9zZHAteG1sLmMKLSsrKyBiL3NyYy9zZHAteG1sLmMKLUBAIC0yNSw2ICsyNSw4IEBACi0gI2lu Y2x1ZGUgImJsdWV0b290aC9zZHAuaCIKLSAjaW5jbHVkZSAiYmx1ZXRvb3RoL3NkcF9saWIuaCIK LSAKLSsjaW5jbHVkZSAic2hhcmVkL3F1ZXVlLmgiCi0rCi0gI2luY2x1ZGUgInNkcC14bWwuaCIK LSAKLSAjZGVmaW5lIERCRyguLi4pICh2b2lkKSgwKQotQEAgLTQ0LDcgKzQ2LDcgQEAgc3RydWN0 IHNkcF94bWxfZGF0YSB7Ci0gCWNoYXIgdHlwZTsJCQkvKiAwID0gVGV4dCBvciBIZXhhZGVjaW1h bCAqLwotIAljaGFyICpuYW1lOwkJCS8qIE5hbWUsIG9wdGlvbmFsIGluIHRoZSBkdGQgKi8KLSAJ LyogVE9ETzogV2hhdCBpcyBpdCB1c2VkIGZvcj8gKi8KLS0Jc2RwX2RhdGFfdCAqdGFpbDsJCS8q IFRhaWwgZm9yIE8oMSkgZGF0YXNlcSBhcHBlbmQgKi8KLSsJc3RydWN0IHF1ZXVlICpzZXE7CQkv KiBNZW1iZXJzIG9mIGEgZGF0YXNlcSwgaWYgYW55ICovCi0gfTsKLSAKLSBzdHJ1Y3QgY29udGV4 dF9kYXRhIHsKLUBAIC01MTAsOCArNTEyLDM3IEBAIHN0YXRpYyB2b2lkIGVsZW1lbnRfc3RhcnQo R01hcmt1cFBhcnNlQ29udGV4dCAqY29udGV4dCwKLSAJfQotIH0KLSAKLSsvKgotKyAqIExpbmsg dGhlIG1lbWJlcnMgY29sbGVjdGVkIGluIGVsZW0tPnNlcSBpbnRvIGVsZW0tPmRhdGEtPnZhbC5k YXRhc2VxLgotKyAqCi0rICogTWVtYmVycyBhcmUgY29sbGVjdGVkIGluIGEgcXVldWUgc28gdGhh dCBhcHBlbmRpbmcgaXMgTygxKSwgc2RwX3NlcV9hcHBlbmQoKQotKyAqIHdvdWxkIG90aGVyd2lz ZSBoYXZlIHRvIHdhbGsgdG8gdGhlIHRhaWwgb2YgdGhlIHNlcXVlbmNlIG9uIGV2ZXJ5IGFwcGVu ZC4KLSsgKi8KLStzdGF0aWMgdm9pZCBzZHBfeG1sX2RhdGFfZmx1c2hfc2VxKHN0cnVjdCBzZHBf eG1sX2RhdGEgKmVsZW0pCi0rewotKwljb25zdCBzdHJ1Y3QgcXVldWVfZW50cnkgKmVudHJ5Owot KwlzZHBfZGF0YV90ICp0YWlsID0gTlVMTDsKLSsKLSsJaWYgKCFlbGVtLT5zZXEpCi0rCQlyZXR1 cm47Ci0rCi0rCWZvciAoZW50cnkgPSBxdWV1ZV9nZXRfZW50cmllcyhlbGVtLT5zZXEpOyBlbnRy eTsgZW50cnkgPSBlbnRyeS0+bmV4dCkgewotKwkJaWYgKHRhaWwpCi0rCQkJc2RwX3NlcV9hcHBl bmQodGFpbCwgZW50cnktPmRhdGEpOwotKwkJZWxzZQotKwkJCWVsZW0tPmRhdGEtPnZhbC5kYXRh c2VxID0gc2RwX3NlcV9hcHBlbmQoTlVMTCwKLSsJCQkJCQkJCWVudHJ5LT5kYXRhKTsKLSsJCXRh aWwgPSBlbnRyeS0+ZGF0YTsKLSsJfQotKwotKwlxdWV1ZV9kZXN0cm95KGVsZW0tPnNlcSwgTlVM TCk7Ci0rCWVsZW0tPnNlcSA9IE5VTEw7Ci0rfQotKwotIHN0YXRpYyB2b2lkIHNkcF94bWxfZGF0 YV9mcmVlKHN0cnVjdCBzZHBfeG1sX2RhdGEgKmVsZW0pCi0gewotKwlxdWV1ZV9kZXN0cm95KGVs ZW0tPnNlcSwgKHF1ZXVlX2Rlc3Ryb3lfZnVuY190KSBzZHBfZGF0YV9mcmVlKTsKLSsKLSAJaWYg KGVsZW0tPmRhdGEpCi0gCQlzZHBfZGF0YV9mcmVlKGVsZW0tPmRhdGEpOwotIAotQEAgLTU2OCw2 ICs1OTksOCBAQCBzdGF0aWMgdm9pZCBlbGVtZW50X2VuZChHTWFya3VwUGFyc2VDb250ZXh0ICpj b250ZXh0LAotIAkJcmV0dXJuOwotIAl9Ci0gCi0rCXNkcF94bWxfZGF0YV9mbHVzaF9zZXEoY3R4 X2RhdGEtPnN0YWNrX2hlYWQpOwotKwotIAlpZiAoIXN0cmNtcChlbGVtZW50X25hbWUsICJzZXF1 ZW5jZSIpKSB7Ci0gCQlpZiAoIVNEUF9JU19TRVEoY3R4X2RhdGEtPnN0YWNrX2hlYWQtPmRhdGEt PmR0ZCkpIHsKLSAJCQlnX3NldF9lcnJvcihlcnIsIEdfTUFSS1VQX0VSUk9SLAotQEAgLTYxMCwy OCArNjQzLDIxIEBAIHN0YXRpYyB2b2lkIGVsZW1lbnRfZW5kKEdNYXJrdXBQYXJzZUNvbnRleHQg KmNvbnRleHQsCi0gCi0gCWlmIChjdHhfZGF0YS0+c3RhY2tfaGVhZC0+bmV4dCAmJiBjdHhfZGF0 YS0+c3RhY2tfaGVhZC0+ZGF0YSAmJgotIAkJCQkJY3R4X2RhdGEtPnN0YWNrX2hlYWQtPm5leHQt PmRhdGEpIHsKLS0JCXNkcF9kYXRhX3QgKnRhaWw7Ci0tCQlzd2l0Y2ggKGN0eF9kYXRhLT5zdGFj a19oZWFkLT5uZXh0LT5kYXRhLT5kdGQpIHsKLSsJCXN0cnVjdCBzZHBfeG1sX2RhdGEgKnBhcmVu dCA9IGN0eF9kYXRhLT5zdGFja19oZWFkLT5uZXh0OwotKwotKwkJc3dpdGNoIChwYXJlbnQtPmRh dGEtPmR0ZCkgewotIAkJY2FzZSBTRFBfU0VRODoKLSAJCWNhc2UgU0RQX1NFUTE2OgotIAkJY2Fz ZSBTRFBfU0VRMzI6Ci0gCQljYXNlIFNEUF9BTFQ4OgotIAkJY2FzZSBTRFBfQUxUMTY6Ci0gCQlj YXNlIFNEUF9BTFQzMjoKLS0JCQl0YWlsID0gY3R4X2RhdGEtPnN0YWNrX2hlYWQtPm5leHQtPmRh dGEtPnZhbC5kYXRhc2VxID8KLS0JCQkJY3R4X2RhdGEtPnN0YWNrX2hlYWQtPm5leHQtPnRhaWwg OiBOVUxMOwotLQkJCWlmICh0YWlsKSB7Ci0tCQkJCXNkcF9zZXFfYXBwZW5kKHRhaWwsCi0tCQkJ CQljdHhfZGF0YS0+c3RhY2tfaGVhZC0+ZGF0YSk7Ci0tCQkJfSBlbHNlIHsKLS0JCQkJY3R4X2Rh dGEtPnN0YWNrX2hlYWQtPm5leHQtPmRhdGEtPnZhbC5kYXRhc2VxID0KLS0JCQkJCXNkcF9zZXFf YXBwZW5kKE5VTEwsCi0tCQkJCQkJY3R4X2RhdGEtPnN0YWNrX2hlYWQtPmRhdGEpOwotLQkJCX0K LS0JCQljdHhfZGF0YS0+c3RhY2tfaGVhZC0+bmV4dC0+dGFpbCA9Ci0tCQkJCQljdHhfZGF0YS0+ c3RhY2tfaGVhZC0+ZGF0YTsKLS0JCQljdHhfZGF0YS0+c3RhY2tfaGVhZC0+ZGF0YSA9IE5VTEw7 Ci0tCQkJY3R4X2RhdGEtPnN0YWNrX2hlYWQtPnRhaWwgPSBOVUxMOwotKwkJCWlmICghcGFyZW50 LT5zZXEpCi0rCQkJCXBhcmVudC0+c2VxID0gcXVldWVfbmV3KCk7Ci0rCi0rCQkJaWYgKHF1ZXVl X3B1c2hfdGFpbChwYXJlbnQtPnNlcSwKLSsJCQkJCQljdHhfZGF0YS0+c3RhY2tfaGVhZC0+ZGF0 YSkpCi0rCQkJCWN0eF9kYXRhLT5zdGFja19oZWFkLT5kYXRhID0gTlVMTDsKLSAJCQlicmVhazsK LSAJCX0KLSAKLS0tIAotMi41NS4wCi0KLQotRnJvbSA5NzUyMWFiNGRkNzlhMzhiMmMzMGQ4ZDY2 NGI0ZTExZjg2NjgwZTg4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTHVpeiBBdWd1 c3RvIHZvbiBEZW50eiA8bHVpei52b24uZGVudHpAaW50ZWwuY29tPgotRGF0ZTogRnJpLCAxNCBB dWcgMjAyNiAxMzo0MDo1MSAtMDQwMAotU3ViamVjdDogW1BBVENIIDIvNF0gc2RwLXhtbDogRml4 IGxlYWtpbmcgdGhlIHBhcnNlIHN0YWNrIG9uIG1hbGZvcm1lZCBpbnB1dAotCi1zZHBfeG1sX3Bh cnNlX3JlY29yZCgpIGZyZWVzIGl0cyBjb250ZXh0IGJ1dCBuZXZlciB0aGUgZWxlbWVudHMgbGVm dCBvbgotY3R4X2RhdGEtPnN0YWNrX2hlYWQuCi0KLWVsZW1lbnRfZW5kKCkgcmV0dXJucyBlYXJs eSB3aXRob3V0IHBvcHBpbmcgdGhlIHN0YWNrIHdoZW4gaXQgcmVqZWN0cyBhCi1kb2N1bWVudCwg Zm9yIGluc3RhbmNlIG9uIGEgbWlzbWF0Y2hlZCA8L3NlcXVlbmNlPiBjbG9zZSwgc28gYSBtYWxm b3JtZWQKLXJlY29yZCBsZWF2ZXMgaXRzIGVsZW1lbnRzIGJlaGluZCBhbmQgdGhleSBhcmUgbmV2 ZXIgZnJlZWQuCi0KLUZyZWUgdGhlIHJlbWFpbmluZyBzdGFjayBlbGVtZW50cyBiZWZvcmUgcmV0 dXJuaW5nLiBGb3VuZCB3aXRoIHRoZQotY29tcHV0ZS1zZXEtc2l6ZS10eXBlLWNvbmZ1c2lvbi54 bWwgdGVzdDoKLQotNTYgKGRpcmVjdCkgKyAxLDA3MiAoaW5kaXJlY3QpIGJ5dGVzIGluIDEgYmxv Y2tzIGFyZSBkZWZpbml0ZWx5IGxvc3QKLSAgIGF0IGNhbGxvYyAodmdfcmVwbGFjZV9tYWxsb2Mu YzoxNjc4KQotICAgYnkgc2RwX3htbF9kYXRhX2FsbG9jIChzZHAteG1sLmM6NzMpCi0gICBieSBl bGVtZW50X3N0YXJ0IChzZHAteG1sLmM6NDczKQotICAgYnkgZ19tYXJrdXBfcGFyc2VfY29udGV4 dF9wYXJzZSAoZ21hcmt1cC5jOjEzNjkpCi0gICBieSBzZHBfeG1sX3BhcnNlX3JlY29yZCAoc2Rw LXhtbC5jOjY5NikKLQotQXNzaXN0ZWQtYnk6IENsYXVkZTpjbGF1ZGUtb3B1cy01Ci0tLS0KLSBz cmMvc2RwLXhtbC5jIHwgMTQgKysrKysrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgMTQgaW5z ZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3NkcC14bWwuYyBiL3NyYy9zZHAteG1sLmMK LWluZGV4IGJhZDllMjg5MzQ0Zi4uYmNkNTc4NWY4N2NhIDEwMDY0NAotLS0tIGEvc3JjL3NkcC14 bWwuYwotKysrIGIvc3JjL3NkcC14bWwuYwotQEAgLTU1MSw2ICs1NTEsMTcgQEAgc3RhdGljIHZv aWQgc2RwX3htbF9kYXRhX2ZyZWUoc3RydWN0IHNkcF94bWxfZGF0YSAqZWxlbSkKLSAJZnJlZShl bGVtKTsKLSB9Ci0gCi0rLyogRnJlZSB0aGUgZWxlbWVudHMgbGVmdCBvbiB0aGUgc3RhY2ssIGUu Zy4gYnkgYSBkb2N1bWVudCB0aGF0IGlzIG1hbGZvcm1lZCAqLwotK3N0YXRpYyB2b2lkIHNkcF94 bWxfZGF0YV9mcmVlX3N0YWNrKHN0cnVjdCBzZHBfeG1sX2RhdGEgKmVsZW0pCi0rewotKwl3aGls ZSAoZWxlbSkgewotKwkJc3RydWN0IHNkcF94bWxfZGF0YSAqbmV4dCA9IGVsZW0tPm5leHQ7Ci0r Ci0rCQlzZHBfeG1sX2RhdGFfZnJlZShlbGVtKTsKLSsJCWVsZW0gPSBuZXh0OwotKwl9Ci0rfQot KwotIHN0YXRpYyB2b2lkIGVsZW1lbnRfZW5kKEdNYXJrdXBQYXJzZUNvbnRleHQgKmNvbnRleHQs Ci0gCQljb25zdCBjaGFyICplbGVtZW50X25hbWUsIGdwb2ludGVyIHVzZXJfZGF0YSwgR0Vycm9y ICoqZXJyKQotIHsKLUBAIC02OTYsNiArNzA3LDcgQEAgc2RwX3JlY29yZF90ICpzZHBfeG1sX3Bh cnNlX3JlY29yZChjb25zdCBjaGFyICpkYXRhLCBpbnQgc2l6ZSkKLSAJaWYgKGdfbWFya3VwX3Bh cnNlX2NvbnRleHRfcGFyc2UoY3R4LCBkYXRhLCBzaXplLCBOVUxMKSA9PSBGQUxTRSkgewotIAkJ ZXJyb3IoIlhNTCBwYXJzaW5nIGVycm9yIik7Ci0gCQlnX21hcmt1cF9wYXJzZV9jb250ZXh0X2Zy ZWUoY3R4KTsKLSsJCXNkcF94bWxfZGF0YV9mcmVlX3N0YWNrKGN0eF9kYXRhLT5zdGFja19oZWFk KTsKLSAJCXNkcF9yZWNvcmRfZnJlZShyZWNvcmQpOwotIAkJZnJlZShjdHhfZGF0YSk7Ci0gCQly ZXR1cm4gTlVMTDsKLUBAIC03MDMsNiArNzE1LDggQEAgc2RwX3JlY29yZF90ICpzZHBfeG1sX3Bh cnNlX3JlY29yZChjb25zdCBjaGFyICpkYXRhLCBpbnQgc2l6ZSkKLSAKLSAJZ19tYXJrdXBfcGFy c2VfY29udGV4dF9mcmVlKGN0eCk7Ci0gCi0rCXNkcF94bWxfZGF0YV9mcmVlX3N0YWNrKGN0eF9k YXRhLT5zdGFja19oZWFkKTsKLSsKLSAJZnJlZShjdHhfZGF0YSk7Ci0gCi0gCXJldHVybiByZWNv cmQ7Ci0tLSAKLTIuNTUuMAotCi0KLUZyb20gMDc4ZWYxMGE0NTMxZTNmZGRiYWMzMzJjZjY1MDc3 ZjMxNzA5MjU1NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEx1aXogQXVndXN0byB2 b24gRGVudHogPGx1aXoudm9uLmRlbnR6QGludGVsLmNvbT4KLURhdGU6IE1vbiwgMTcgQXVnIDIw MjYgMTQ6NTY6MTYgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSCAzLzRdIHNkcDogRml4IG1lbW9yeSBs ZWFrIHdoZW4gZnJlZWluZyBhbHRlcm5hdGVzCi0KLXNkcF9kYXRhX2FsbG9jX3dpdGhfbGVuZ3Ro KCkgc3RvcmVzIHRoZSBtZW1iZXJzIG9mIFNEUF9BTFQ4LCBTRFBfQUxUMTYKLWFuZCBTRFBfQUxU MzIgaW4gdmFsLmRhdGFzZXEsIGV4YWN0bHkgbGlrZSBpdCBkb2VzIGZvciB0aGUgU0RQX1NFUTgs Ci1TRFBfU0VRMTYgYW5kIFNEUF9TRVEzMiBzZXF1ZW5jZXMuCi0KLXNkcF9kYXRhX2ZyZWUoKSBv bmx5IGNhbGxzIGRhdGFfc2VxX2ZyZWUoKSBmb3IgdGhlIHNlcXVlbmNlcyB0aG91Z2gsIHNvCi1m cmVlaW5nIGFuIGFsdGVybmF0ZSBmcmVlcyB0aGUgYWx0ZXJuYXRlIGl0c2VsZiBhbmQgbGVha3Mg ZXZlcnkgb25lIG9mCi1pdHMgbWVtYmVycywgYWxvbmcgd2l0aCBhbnl0aGluZyB0aGV5IG93biBp biB0dXJuOgotCi0yMDkgKDQ4IGRpcmVjdCwgMTYxIGluZGlyZWN0KSBieXRlcyBpbiAxIGJsb2Nr cyBhcmUgZGVmaW5pdGVseSBsb3N0Ci0gICBhdCBjYWxsb2MgKHZnX3JlcGxhY2VfbWFsbG9jLmM6 MTY3OCkKLSAgIGJ5IHNkcF9kYXRhX2FsbG9jX3dpdGhfbGVuZ3RoIChzZHAuYzozNTApCi0gICBi eSBzZHBfZGF0YV9hbGxvYyAoc2RwLmM6NDg2KQotICAgYnkgc2RwX3htbF9wYXJzZV9pbnQgKHNk cC14bWwuYzoyNDMpCi0gICBieSBzZHBfeG1sX3BhcnNlX2RhdGF0eXBlIChzZHAteG1sLmM6NDIx KQotICAgYnkgZWxlbWVudF9zdGFydCAoc2RwLXhtbC5jOjUwNykKLQotRnJlZSB0aGUgbWVtYmVy cyBvZiBhbHRlcm5hdGVzIGFzIHdlbGwuCi0KLUFzc2lzdGVkLWJ5OiBDbGF1ZGU6Y2xhdWRlLW9w dXMtNQotLS0tCi0gbGliL2JsdWV0b290aC9zZHAuYyB8IDMgKysrCi0gMSBmaWxlIGNoYW5nZWQs IDMgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbGliL2JsdWV0b290aC9zZHAuYyBiL2xp Yi9ibHVldG9vdGgvc2RwLmMKLWluZGV4IDhjMDg2NTM5ODUxOS4uMWUwMjdmOWViZTZkIDEwMDY0 NAotLS0tIGEvbGliL2JsdWV0b290aC9zZHAuYwotKysrIGIvbGliL2JsdWV0b290aC9zZHAuYwot QEAgLTk3Miw2ICs5NzIsOSBAQCB2b2lkIHNkcF9kYXRhX2ZyZWUoc2RwX2RhdGFfdCAqZCkKLSAJ Y2FzZSBTRFBfU0VRODoKLSAJY2FzZSBTRFBfU0VRMTY6Ci0gCWNhc2UgU0RQX1NFUTMyOgotKwlj YXNlIFNEUF9BTFQ4OgotKwljYXNlIFNEUF9BTFQxNjoKLSsJY2FzZSBTRFBfQUxUMzI6Ci0gCQlk YXRhX3NlcV9mcmVlKGQpOwotIAkJYnJlYWs7Ci0gCWNhc2UgU0RQX1VSTF9TVFI4OgotLS0gCi0y LjU1LjAKLQotCi1Gcm9tIDVhYmMwMDQ1Yjg0YWRjYjQ3YWYyNmY4OGY2OTlmMzNjMDAzN2EwMGMg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBMdWl6IEF1Z3VzdG8gdm9uIERlbnR6IDxs dWl6LnZvbi5kZW50ekBpbnRlbC5jb20+Ci1EYXRlOiBNb24sIDE3IEF1ZyAyMDI2IDE0OjU2OjI0 IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0ggNC80XSB1bml0L3Rlc3Qtc2RwLXhtbDogQWRkIGEgdGVz dCBwYXJzaW5nIGFsdGVybmF0ZXMKLQotTm9uZSBvZiB0aGUgZXhpc3RpbmcgcmVjb3JkcyBjb250 YWluIGFuIDxhbHRlcm5hdGU+LCBzbyBub3RoaW5nIGNvdmVyZWQKLXRoZSBTRFBfQUxUOCwgU0RQ X0FMVDE2IGFuZCBTRFBfQUxUMzIgaGFuZGxpbmcuCi0KLUFkZCBhIHJlY29yZCB3aXRoIGFuIGFs dGVybmF0ZSBob2xkaW5nIGFuIGludGVnZXIsIGEgc3RyaW5nIGFuZCBhIG5lc3RlZAotc2VxdWVu Y2UsIHdoaWNoIGxlYWtzIGl0cyBtZW1iZXJzIHVuZGVyIHZhbGdyaW5kIHdpdGhvdXQgdGhlIHBy ZXZpb3VzCi1zZHBfZGF0YV9mcmVlKCkgZml4LgotCi1Bc3Npc3RlZC1ieTogQ2xhdWRlOmNsYXVk ZS1vcHVzLTUKLS0tLQotIE1ha2VmaWxlLmFtICAgICAgICAgICAgICAgIHwgIDEgKwotIHVuaXQv c2RwLXhtbC9hbHRlcm5hdGUueG1sIHwgMTIgKysrKysrKysrKysrCi0gdW5pdC90ZXN0LXNkcC14 bWwuYyAgICAgICAgfCAgMSArCi0gMyBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspCi0g Y3JlYXRlIG1vZGUgMTAwNjQ0IHVuaXQvc2RwLXhtbC9hbHRlcm5hdGUueG1sCi0KLWRpZmYgLS1n aXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCAzYzZjZjkyYWI0MDMuLjI3NTRl MWI3ZjJkYSAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmFtCi0rKysgYi9NYWtlZmlsZS5hbQotQEAg LTY0OCw2ICs2NDgsNyBAQCB1bml0X3Rlc3Rfc2RwX3htbF9DRkxBR1MgPSAkKEFNX0NGTEFHUykg JChHTElCX0NGTEFHUykgLURUT1BfU1JDRElSPVwiIiQoc3JjZGlyKQotIHVuaXRfdGVzdF9zZHBf eG1sX0NQUEZMQUdTID0gLUkkKHNyY2RpcikvbGliCi0gCi0gRVhUUkFfRElTVCArPSB1bml0L3Nk cC14bWwvQmx1ZXRvb3RoX0hJRC1zZHBfcmVjb3JkLnhtbAkJXAotKwl1bml0L3NkcC14bWwvYWx0 ZXJuYXRlLnhtbAkJCQlcCi0gCXVuaXQvc2RwLXhtbC9jb21wdXRlLXNlcS1zaXplLXR5cGUtY29u ZnVzaW9uLnhtbAlcCi0gCXVuaXQvc2RwLXhtbC9kdXBsaWNhdGUtYXR0cmlidXRlLnhtbAkJCVwK LSAJdW5pdC9zZHAteG1sL3F0LVNlcmlhbFBvcnRTRFBSZWNvcmQueG1sCi1kaWZmIC0tZ2l0IGEv dW5pdC9zZHAteG1sL2FsdGVybmF0ZS54bWwgYi91bml0L3NkcC14bWwvYWx0ZXJuYXRlLnhtbAot bmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAwMC4uYTM1ZWJjY2JjNzFmCi0t LS0gL2Rldi9udWxsCi0rKysgYi91bml0L3NkcC14bWwvYWx0ZXJuYXRlLnhtbAotQEAgLTAsMCAr MSwxMiBAQAotKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgotKzxyZWNv cmQ+Ci0rCTxhdHRyaWJ1dGUgaWQ9IjB4MDAwNCI+Ci0rCQk8YWx0ZXJuYXRlPgotKwkJCTx1aW50 MzIgdmFsdWU9IjB4MTEyMjMzNDQiIC8+Ci0rCQkJPHRleHQgdmFsdWU9ImFsdGVybmF0ZS1tZW1i ZXIiIC8+Ci0rCQkJPHNlcXVlbmNlPgotKwkJCQk8dWludDE2IHZhbHVlPSIweDAxMDAiIC8+Ci0r CQkJPC9zZXF1ZW5jZT4KLSsJCTwvYWx0ZXJuYXRlPgotKwk8L2F0dHJpYnV0ZT4KLSs8L3JlY29y ZD4KLWRpZmYgLS1naXQgYS91bml0L3Rlc3Qtc2RwLXhtbC5jIGIvdW5pdC90ZXN0LXNkcC14bWwu YwotaW5kZXggYjMzODc4OGFhMjk1Li5jYjViOTE3MTdmY2EgMTAwNjQ0Ci0tLS0gYS91bml0L3Rl c3Qtc2RwLXhtbC5jCi0rKysgYi91bml0L3Rlc3Qtc2RwLXhtbC5jCi1AQCAtMTMzLDYgKzEzMyw3 IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCURFRklORV9URVNUKCJjb21w dXRlLXNlcS1zaXplLXR5cGUtY29uZnVzaW9uLnhtbCIsIEZBTFNFKTsKLSAJLyogRnJvbSBodHRw czovL2dpdGh1Yi5jb20vYmx1ZXovYmx1ZXovc2VjdXJpdHkvYWR2aXNvcmllcy9HSFNBLTc1djYt NnE0NC01N2hjICovCi0gCURFRklORV9URVNUKCJkdXBsaWNhdGUtYXR0cmlidXRlLnhtbCIsIFRS VUUpOwotKwlERUZJTkVfVEVTVCgiYWx0ZXJuYXRlLnhtbCIsIFRSVUUpOwotIAotIAl0ZXN0ZXJf YWRkKCIvc2VxdWVuY2Vfb25fc3F1YXJlZCIsICZkYXRhLAotIAkJICAgc2VxdWVuY2Vfb25fc3F1 YXJlZF9zZXR1cCwKLS0tIAotMi41NS4wCi0KCmRpZmYgLS1naXQgYS9zb3VyY2VzIGIvc291cmNl cwppbmRleCAwNTBiZDI2Li4yOWRjZjgwIDEwMDY0NAotLS0gYS9zb3VyY2VzCisrKyBiL3NvdXJj ZXMKQEAgLTEgKzEgQEAKLVNIQTUxMiAoYmx1ZXotNS44Ny50YXIueHopID0gZjFlM2JlZGU5YjBi YmMzYjVjZmU5ZmVkNWY3OTQ1YmU3Y2JjZjdhMjk5NzI5YjVmODJmMWNiYTRiYmJkNmM0ZDJlMzcy Yzk2ODVmNjE0NThkZmMzNzRjOWRmZWUzNTJiNmMyOTMzYTJjMGQ3NzI3YjgxNzFmZjM5NDA1NWUx NjkKK1NIQTUxMiAoYmx1ZXotNS44NysxLmdpdDg3NTAxMjllZmNhOC50YXIueHopID0gYTc2OWM2 ZTkyYWY4YmVkZmU1NTRlMjkyZWIyNGUyNzUwYzA0ZmU0NzNmMmY3MWU2NTVlMWEwYmQxNmNlMDk3 MDI1MzAxNTM5OGY1OTg0MGY4MjQwZjhiNDBlOTkwNzJhYTdhYTQzMjM5ZjA3MGY2MmU1YzdhYjQ3 ZjhhM2YwMDEK