ZGlmZiAtLWdpdCBhL0FuZHJvaWQubWsgYi9BbmRyb2lkLm1rCmluZGV4IDQ2YWY5ODUuLjVmYmNmYzYgMTAwNjQ0Ci0tLSBhL0FuZHJvaWQubWsKKysrIGIvQW5kcm9pZC5tawpAQCAtNywxMSArNyw4IEBACiAjIFRoZXNlIG1ha2VmaWxlcyBhcmUgaGVyZSBpbnN0ZWFkIG9mIGJlaW5nIEFuZHJvaWQubWsgZmlsZXMgaW4gdGhlCiAjIHJlc3BlY3RpdmUgY3J5cHRvLCBzc2wsIGFuZCBhcHBzIGRpcmVjdG9yaWVzIHNvCiAjIHRoYXQgaW1wb3J0X29wZW5zc2wuc2ggaW1wb3J0IHdvbid0IHJlbW92ZSB0aGVtLgotaWZlcSAoJChzdHJpcCAkKFRBUkdFVF9JU182NF9CSVQpKSx0cnVlKQotICBpbmNsdWRlICQoTE9DQUxfUEFUSCkvYnVpbGQtY29uZmlnLTY0Lm1rCi1lbHNlCi0gIGluY2x1ZGUgJChMT0NBTF9QQVRIKS9idWlsZC1jb25maWctMzIubWsKLWVuZGlmCitpbmNsdWRlICQoTE9DQUxfUEFUSCkvYnVpbGQtY29uZmlnLTY0Lm1rCitpbmNsdWRlICQoTE9DQUxfUEFUSCkvYnVpbGQtY29uZmlnLTMyLm1rCiBpbmNsdWRlICQoTE9DQUxfUEFUSCkvQ3J5cHRvLm1rCiBpbmNsdWRlICQoTE9DQUxfUEFUSCkvU3NsLm1rCiBpbmNsdWRlICQoTE9DQUxfUEFUSCkvQXBwcy5tawpkaWZmIC0tZ2l0IGEvQXBwcy1jb25maWctaG9zdC5tayBiL0FwcHMtY29uZmlnLWhvc3QubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWMxNjA0ZQotLS0gL2Rldi9udWxsCisrKyBiL0FwcHMtY29uZmlnLWhvc3QubWsKQEAgLTAsMCArMSwxMTkgQEAKKyMgQXV0by1nZW5lcmF0ZWQgLSBETyBOT1QgRURJVCEKKyMgVG8gcmVnZW5lcmF0ZSwgZWRpdCBvcGVuc3NsLmNvbmZpZywgdGhlbiBydW46CisjICAgICAuL2ltcG9ydF9vcGVuc3NsLnNoIGltcG9ydCAvcGF0aC90by9vcGVuc3NsLTEuMC4xaC50YXIuZ3oKKyMKKyMgVGhpcyBzY3JpcHQgd2lsbCBhcHBlbmQgdG8gdGhlIGZvbGxvd2luZyB2YXJpYWJsZXM6CisjCisjICAgIExPQ0FMX0NGTEFHUworIyAgICBMT0NBTF9DX0lOQ0xVREVTCisjICAgIExPQ0FMX1NSQ19GSUxFU18kKFRBUkdFVF9BUkNIKQorIyAgICBMT0NBTF9TUkNfRklMRVNfJChUQVJHRVRfMk5EX0FSQ0gpCisjICAgIExPQ0FMX0NGTEFHU18kKFRBUkdFVF9BUkNIKQorIyAgICBMT0NBTF9DRkxBR1NfJChUQVJHRVRfMk5EX0FSQ0gpCisjICAgIExPQ0FMX0FERElUSU9OQUxfREVQRU5ERU5DSUVTCisKKworTE9DQUxfQURESVRJT05BTF9ERVBFTkRFTkNJRVMgKz0gJChMT0NBTF9QQVRIKS9BcHBzLWNvbmZpZy1ob3N0Lm1rCisKK2NvbW1vbl9jZmxhZ3MgOj0gXAorICAtRE1PTk9MSVRIIFwKKworY29tbW9uX3NyY19maWxlcyA6PSBcCisgIGFwcHMvYXBwX3JhbmQuYyBcCisgIGFwcHMvYXBwcy5jIFwKKyAgYXBwcy9hc24xcGFycy5jIFwKKyAgYXBwcy9jYS5jIFwKKyAgYXBwcy9jaXBoZXJzLmMgXAorICBhcHBzL2Ntcy5jIFwKKyAgYXBwcy9jcmwuYyBcCisgIGFwcHMvY3JsMnA3LmMgXAorICBhcHBzL2Rnc3QuYyBcCisgIGFwcHMvZGguYyBcCisgIGFwcHMvZGhwYXJhbS5jIFwKKyAgYXBwcy9kc2EuYyBcCisgIGFwcHMvZHNhcGFyYW0uYyBcCisgIGFwcHMvZWMuYyBcCisgIGFwcHMvZWNwYXJhbS5jIFwKKyAgYXBwcy9lbmMuYyBcCisgIGFwcHMvZW5naW5lLmMgXAorICBhcHBzL2VycnN0ci5jIFwKKyAgYXBwcy9nZW5kaC5jIFwKKyAgYXBwcy9nZW5kc2EuYyBcCisgIGFwcHMvZ2VucGtleS5jIFwKKyAgYXBwcy9nZW5yc2EuYyBcCisgIGFwcHMvbnNlcS5jIFwKKyAgYXBwcy9vY3NwLmMgXAorICBhcHBzL29wZW5zc2wuYyBcCisgIGFwcHMvcGFzc3dkLmMgXAorICBhcHBzL3BrY3MxMi5jIFwKKyAgYXBwcy9wa2NzNy5jIFwKKyAgYXBwcy9wa2NzOC5jIFwKKyAgYXBwcy9wa2V5LmMgXAorICBhcHBzL3BrZXlwYXJhbS5jIFwKKyAgYXBwcy9wa2V5dXRsLmMgXAorICBhcHBzL3ByaW1lLmMgXAorICBhcHBzL3JhbmQuYyBcCisgIGFwcHMvcmVxLmMgXAorICBhcHBzL3JzYS5jIFwKKyAgYXBwcy9yc2F1dGwuYyBcCisgIGFwcHMvc19jYi5jIFwKKyAgYXBwcy9zX2NsaWVudC5jIFwKKyAgYXBwcy9zX3NlcnZlci5jIFwKKyAgYXBwcy9zX3NvY2tldC5jIFwKKyAgYXBwcy9zX3RpbWUuYyBcCisgIGFwcHMvc2Vzc19pZC5jIFwKKyAgYXBwcy9zbWltZS5jIFwKKyAgYXBwcy9zcGVlZC5jIFwKKyAgYXBwcy9zcGthYy5jIFwKKyAgYXBwcy9zcnAuYyBcCisgIGFwcHMvdmVyaWZ5LmMgXAorICBhcHBzL3ZlcnNpb24uYyBcCisgIGFwcHMveDUwOS5jIFwKKworY29tbW9uX2NfaW5jbHVkZXMgOj0gXAorICBleHRlcm5hbC9vcGVuc3NsLy4gXAorICBleHRlcm5hbC9vcGVuc3NsL2luY2x1ZGUgXAorCithcm1fY2ZsYWdzIDo9CisKK2FybV9zcmNfZmlsZXMgOj0KKworYXJtX2V4Y2x1ZGVfZmlsZXMgOj0KKworYXJtNjRfY2ZsYWdzIDo9CisKK2FybTY0X3NyY19maWxlcyA6PQorCithcm02NF9leGNsdWRlX2ZpbGVzIDo9CisKK3g4Nl9jZmxhZ3MgOj0KKworeDg2X3NyY19maWxlcyA6PQorCit4ODZfZXhjbHVkZV9maWxlcyA6PQorCit4ODZfNjRfY2ZsYWdzIDo9CisKK3g4Nl82NF9zcmNfZmlsZXMgOj0KKworeDg2XzY0X2V4Y2x1ZGVfZmlsZXMgOj0KKworbWlwc19jZmxhZ3MgOj0KKworbWlwc19zcmNfZmlsZXMgOj0KKworbWlwc19leGNsdWRlX2ZpbGVzIDo9CisKKworTE9DQUxfQ0ZMQUdTICs9ICQoY29tbW9uX2NmbGFncykKK0xPQ0FMX0NfSU5DTFVERVMgKz0gJChjb21tb25fY19pbmNsdWRlcykgJChsb2NhbF9jX2luY2x1ZGVzKQorCitpZmVxICgkKEhPU1RfT1MpLGxpbnV4KQorTE9DQUxfQ0ZMQUdTX3g4NiArPSAkKHg4Nl9jZmxhZ3MpCitMT0NBTF9TUkNfRklMRVNfeDg2ICs9ICQoZmlsdGVyLW91dCAkKHg4Nl9leGNsdWRlX2ZpbGVzKSwgJChjb21tb25fc3JjX2ZpbGVzKSAkKHg4Nl9zcmNfZmlsZXMpKQorTE9DQUxfQ0ZMQUdTX3g4Nl82NCArPSAkKHg4Nl82NF9jZmxhZ3MpCitMT0NBTF9TUkNfRklMRVNfeDg2XzY0ICs9ICQoZmlsdGVyLW91dCAkKHg4Nl82NF9leGNsdWRlX2ZpbGVzKSwgJChjb21tb25fc3JjX2ZpbGVzKSAkKHg4Nl82NF9zcmNfZmlsZXMpKQorZWxzZQorJCh3YXJuaW5nIFVua25vd24gaG9zdCBPUyAkKEhPU1RfT1MpKQorTE9DQUxfU1JDX0ZJTEVTICs9ICQoY29tbW9uX3NyY19maWxlcykKK2VuZGlmCmRpZmYgLS1naXQgYS9BcHBzLWNvbmZpZy10YXJnZXQubWsgYi9BcHBzLWNvbmZpZy10YXJnZXQubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGM1NjdkNAotLS0gL2Rldi9udWxsCisrKyBiL0FwcHMtY29uZmlnLXRhcmdldC5tawpAQCAtMCwwICsxLDEyNCBAQAorIyBBdXRvLWdlbmVyYXRlZCAtIERPIE5PVCBFRElUIQorIyBUbyByZWdlbmVyYXRlLCBlZGl0IG9wZW5zc2wuY29uZmlnLCB0aGVuIHJ1bjoKKyMgICAgIC4vaW1wb3J0X29wZW5zc2wuc2ggaW1wb3J0IC9wYXRoL3RvL29wZW5zc2wtMS4wLjFoLnRhci5negorIworIyBUaGlzIHNjcmlwdCB3aWxsIGFwcGVuZCB0byB0aGUgZm9sbG93aW5nIHZhcmlhYmxlczoKKyMKKyMgICAgTE9DQUxfQ0ZMQUdTCisjICAgIExPQ0FMX0NfSU5DTFVERVMKKyMgICAgTE9DQUxfU1JDX0ZJTEVTXyQoVEFSR0VUX0FSQ0gpCisjICAgIExPQ0FMX1NSQ19GSUxFU18kKFRBUkdFVF8yTkRfQVJDSCkKKyMgICAgTE9DQUxfQ0ZMQUdTXyQoVEFSR0VUX0FSQ0gpCisjICAgIExPQ0FMX0NGTEFHU18kKFRBUkdFVF8yTkRfQVJDSCkKKyMgICAgTE9DQUxfQURESVRJT05BTF9ERVBFTkRFTkNJRVMKKworCitMT0NBTF9BRERJVElPTkFMX0RFUEVOREVOQ0lFUyArPSAkKExPQ0FMX1BBVEgpL0FwcHMtY29uZmlnLXRhcmdldC5taworCitjb21tb25fY2ZsYWdzIDo9IFwKKyAgLURNT05PTElUSCBcCisKK2NvbW1vbl9zcmNfZmlsZXMgOj0gXAorICBhcHBzL2FwcF9yYW5kLmMgXAorICBhcHBzL2FwcHMuYyBcCisgIGFwcHMvYXNuMXBhcnMuYyBcCisgIGFwcHMvY2EuYyBcCisgIGFwcHMvY2lwaGVycy5jIFwKKyAgYXBwcy9jbXMuYyBcCisgIGFwcHMvY3JsLmMgXAorICBhcHBzL2NybDJwNy5jIFwKKyAgYXBwcy9kZ3N0LmMgXAorICBhcHBzL2RoLmMgXAorICBhcHBzL2RocGFyYW0uYyBcCisgIGFwcHMvZHNhLmMgXAorICBhcHBzL2RzYXBhcmFtLmMgXAorICBhcHBzL2VjLmMgXAorICBhcHBzL2VjcGFyYW0uYyBcCisgIGFwcHMvZW5jLmMgXAorICBhcHBzL2VuZ2luZS5jIFwKKyAgYXBwcy9lcnJzdHIuYyBcCisgIGFwcHMvZ2VuZGguYyBcCisgIGFwcHMvZ2VuZHNhLmMgXAorICBhcHBzL2dlbnBrZXkuYyBcCisgIGFwcHMvZ2VucnNhLmMgXAorICBhcHBzL25zZXEuYyBcCisgIGFwcHMvb2NzcC5jIFwKKyAgYXBwcy9vcGVuc3NsLmMgXAorICBhcHBzL3Bhc3N3ZC5jIFwKKyAgYXBwcy9wa2NzMTIuYyBcCisgIGFwcHMvcGtjczcuYyBcCisgIGFwcHMvcGtjczguYyBcCisgIGFwcHMvcGtleS5jIFwKKyAgYXBwcy9wa2V5cGFyYW0uYyBcCisgIGFwcHMvcGtleXV0bC5jIFwKKyAgYXBwcy9wcmltZS5jIFwKKyAgYXBwcy9yYW5kLmMgXAorICBhcHBzL3JlcS5jIFwKKyAgYXBwcy9yc2EuYyBcCisgIGFwcHMvcnNhdXRsLmMgXAorICBhcHBzL3NfY2IuYyBcCisgIGFwcHMvc19jbGllbnQuYyBcCisgIGFwcHMvc19zZXJ2ZXIuYyBcCisgIGFwcHMvc19zb2NrZXQuYyBcCisgIGFwcHMvc190aW1lLmMgXAorICBhcHBzL3Nlc3NfaWQuYyBcCisgIGFwcHMvc21pbWUuYyBcCisgIGFwcHMvc3BlZWQuYyBcCisgIGFwcHMvc3BrYWMuYyBcCisgIGFwcHMvc3JwLmMgXAorICBhcHBzL3ZlcmlmeS5jIFwKKyAgYXBwcy92ZXJzaW9uLmMgXAorICBhcHBzL3g1MDkuYyBcCisKK2NvbW1vbl9jX2luY2x1ZGVzIDo9IFwKKyAgZXh0ZXJuYWwvb3BlbnNzbC8uIFwKKyAgZXh0ZXJuYWwvb3BlbnNzbC9pbmNsdWRlIFwKKworYXJtX2NmbGFncyA6PQorCithcm1fc3JjX2ZpbGVzIDo9CisKK2FybV9leGNsdWRlX2ZpbGVzIDo9CisKK2FybTY0X2NmbGFncyA6PQorCithcm02NF9zcmNfZmlsZXMgOj0KKworYXJtNjRfZXhjbHVkZV9maWxlcyA6PQorCit4ODZfY2ZsYWdzIDo9CisKK3g4Nl9zcmNfZmlsZXMgOj0KKworeDg2X2V4Y2x1ZGVfZmlsZXMgOj0KKworeDg2XzY0X2NmbGFncyA6PQorCit4ODZfNjRfc3JjX2ZpbGVzIDo9CisKK3g4Nl82NF9leGNsdWRlX2ZpbGVzIDo9CisKK21pcHNfY2ZsYWdzIDo9CisKK21pcHNfc3JjX2ZpbGVzIDo9CisKK21pcHNfZXhjbHVkZV9maWxlcyA6PQorCisKK0xPQ0FMX0NGTEFHUyArPSAkKGNvbW1vbl9jZmxhZ3MpCitMT0NBTF9DX0lOQ0xVREVTICs9ICQoY29tbW9uX2NfaW5jbHVkZXMpCisKK0xPQ0FMX1NSQ19GSUxFU19hcm0gKz0gJChmaWx0ZXItb3V0ICQoYXJtX2V4Y2x1ZGVfZmlsZXMpLCQoY29tbW9uX3NyY19maWxlcykgJChhcm1fc3JjX2ZpbGVzKSkKK0xPQ0FMX0NGTEFHU19hcm0gKz0gJChhcm1fY2ZsYWdzKQorCitMT0NBTF9TUkNfRklMRVNfYXJtNjQgKz0gJChmaWx0ZXItb3V0ICQoYXJtNjRfZXhjbHVkZV9maWxlcyksJChjb21tb25fc3JjX2ZpbGVzKSAkKGFybTY0X3NyY19maWxlcykpCitMT0NBTF9DRkxBR1NfYXJtNjQgKz0gJChhcm02NF9jZmxhZ3MpCisKK0xPQ0FMX1NSQ19GSUxFU194ODYgKz0gJChmaWx0ZXItb3V0ICQoeDg2X2V4Y2x1ZGVfZmlsZXMpLCQoY29tbW9uX3NyY19maWxlcykgJCh4ODZfc3JjX2ZpbGVzKSkKK0xPQ0FMX0NGTEFHU194ODYgKz0gJCh4ODZfY2ZsYWdzKQorCitMT0NBTF9TUkNfRklMRVNfeDg2XzY0ICs9ICQoZmlsdGVyLW91dCAkKHg4Nl82NF9leGNsdWRlX2ZpbGVzKSwkKGNvbW1vbl9zcmNfZmlsZXMpICQoeDg2XzY0X3NyY19maWxlcykpCitMT0NBTF9DRkxBR1NfeDg2XzY0ICs9ICQoeDg2XzY0X2NmbGFncykKKworTE9DQUxfU1JDX0ZJTEVTX21pcHMgKz0gJChmaWx0ZXItb3V0ICQobWlwc19leGNsdWRlX2ZpbGVzKSwkKGNvbW1vbl9zcmNfZmlsZXMpICQobWlwc19zcmNfZmlsZXMpKQorTE9DQUxfQ0ZMQUdTX21pcHMgKz0gJChtaXBzX2NmbGFncykKZGlmZiAtLWdpdCBhL0FwcHMtY29uZmlnLm1rIGIvQXBwcy1jb25maWcubWsKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjNjdkYjIuLjAwMDAwMDAKLS0tIGEvQXBwcy1jb25maWcubWsKKysrIC9kZXYvbnVsbApAQCAtMSwxNDAgKzAsMCBAQAotIyBBdXRvLWdlbmVyYXRlZCAtIERPIE5PVCBFRElUIQotIyBUbyByZWdlbmVyYXRlLCBlZGl0IG9wZW5zc2wuY29uZmlnLCB0aGVuIHJ1bjoKLSMgICAgIC4vaW1wb3J0X29wZW5zc2wuc2ggaW1wb3J0IC9wYXRoL3RvL29wZW5zc2wtMS4wLjFmLnRhci5negotIwotIyBCZWZvcmUgaW5jbHVkaW5nIHRoaXMgZmlsZSwgdGhlIGxvY2FsIEFuZHJvaWQubWsgbXVzdCBkZWZpbmUgdGhlIGZvbGxvd2luZwotIyB2YXJpYWJsZXM6Ci0jCi0jICAgIGxvY2FsX2NfZmxhZ3MKLSMgICAgbG9jYWxfY19pbmNsdWRlcwotIyAgICBsb2NhbF9hZGRpdGlvbmFsX2RlcGVuZGVuY2llcwotIwotIyBUaGlzIHNjcmlwdCB3aWxsIGRlZmluZSB0aGUgZm9sbG93aW5nIHZhcmlhYmxlczoKLSMKLSMgICAgdGFyZ2V0X2NfZmxhZ3MKLSMgICAgdGFyZ2V0X2NfaW5jbHVkZXMKLSMgICAgdGFyZ2V0X3NyY19maWxlcwotIwotIyAgICBob3N0X2NfZmxhZ3MKLSMgICAgaG9zdF9jX2luY2x1ZGVzCi0jICAgIGhvc3Rfc3JjX2ZpbGVzCi0jCi0KLSMgRW5zdXJlIHRoZXNlIGFyZSBlbXB0eS4KLXVua25vd25fYXJjaF9jX2ZsYWdzIDo9Ci11bmtub3duX2FyY2hfc3JjX2ZpbGVzIDo9Ci11bmtub3duX2FyY2hfZXhjbHVkZV9maWxlcyA6PQotCi0KLWNvbW1vbl9jX2ZsYWdzIDo9IFwKLSAgLURNT05PTElUSCBcCi0KLWNvbW1vbl9zcmNfZmlsZXMgOj0gXAotICBhcHBzL2FwcF9yYW5kLmMgXAotICBhcHBzL2FwcHMuYyBcCi0gIGFwcHMvYXNuMXBhcnMuYyBcCi0gIGFwcHMvY2EuYyBcCi0gIGFwcHMvY2lwaGVycy5jIFwKLSAgYXBwcy9jbXMuYyBcCi0gIGFwcHMvY3JsLmMgXAotICBhcHBzL2NybDJwNy5jIFwKLSAgYXBwcy9kZ3N0LmMgXAotICBhcHBzL2RoLmMgXAotICBhcHBzL2RocGFyYW0uYyBcCi0gIGFwcHMvZHNhLmMgXAotICBhcHBzL2RzYXBhcmFtLmMgXAotICBhcHBzL2VjLmMgXAotICBhcHBzL2VjcGFyYW0uYyBcCi0gIGFwcHMvZW5jLmMgXAotICBhcHBzL2VuZ2luZS5jIFwKLSAgYXBwcy9lcnJzdHIuYyBcCi0gIGFwcHMvZ2VuZGguYyBcCi0gIGFwcHMvZ2VuZHNhLmMgXAotICBhcHBzL2dlbnBrZXkuYyBcCi0gIGFwcHMvZ2VucnNhLmMgXAotICBhcHBzL25zZXEuYyBcCi0gIGFwcHMvb2NzcC5jIFwKLSAgYXBwcy9vcGVuc3NsLmMgXAotICBhcHBzL3Bhc3N3ZC5jIFwKLSAgYXBwcy9wa2NzMTIuYyBcCi0gIGFwcHMvcGtjczcuYyBcCi0gIGFwcHMvcGtjczguYyBcCi0gIGFwcHMvcGtleS5jIFwKLSAgYXBwcy9wa2V5cGFyYW0uYyBcCi0gIGFwcHMvcGtleXV0bC5jIFwKLSAgYXBwcy9wcmltZS5jIFwKLSAgYXBwcy9yYW5kLmMgXAotICBhcHBzL3JlcS5jIFwKLSAgYXBwcy9yc2EuYyBcCi0gIGFwcHMvcnNhdXRsLmMgXAotICBhcHBzL3NfY2IuYyBcCi0gIGFwcHMvc19jbGllbnQuYyBcCi0gIGFwcHMvc19zZXJ2ZXIuYyBcCi0gIGFwcHMvc19zb2NrZXQuYyBcCi0gIGFwcHMvc190aW1lLmMgXAotICBhcHBzL3Nlc3NfaWQuYyBcCi0gIGFwcHMvc21pbWUuYyBcCi0gIGFwcHMvc3BlZWQuYyBcCi0gIGFwcHMvc3BrYWMuYyBcCi0gIGFwcHMvc3JwLmMgXAotICBhcHBzL3ZlcmlmeS5jIFwKLSAgYXBwcy92ZXJzaW9uLmMgXAotICBhcHBzL3g1MDkuYyBcCi0KLWNvbW1vbl9jX2luY2x1ZGVzIDo9IFwKLSAgLiBcCi0gIGluY2x1ZGUgXAotCi1hcm1fY19mbGFncyA6PQotCi1hcm1fc3JjX2ZpbGVzIDo9Ci0KLWFybV9leGNsdWRlX2ZpbGVzIDo9Ci0KLWFybTY0X2NfZmxhZ3MgOj0KLQotYXJtNjRfc3JjX2ZpbGVzIDo9Ci0KLWFybTY0X2V4Y2x1ZGVfZmlsZXMgOj0KLQoteDg2X2NfZmxhZ3MgOj0KLQoteDg2X3NyY19maWxlcyA6PQotCi14ODZfZXhjbHVkZV9maWxlcyA6PQotCi14ODZfNjRfY19mbGFncyA6PQotCi14ODZfNjRfc3JjX2ZpbGVzIDo9Ci0KLXg4Nl82NF9leGNsdWRlX2ZpbGVzIDo9Ci0KLW1pcHNfY19mbGFncyA6PQotCi1taXBzX3NyY19maWxlcyA6PQotCi1taXBzX2V4Y2x1ZGVfZmlsZXMgOj0KLQotdGFyZ2V0X2FyY2ggOj0gJChUQVJHRVRfQVJDSCkKLWlmZXEgKCQodGFyZ2V0X2FyY2gpLSQoVEFSR0VUX0hBU19CSUdFTkRJQU4pLG1pcHMtdHJ1ZSkKLXRhcmdldF9hcmNoIDo9IHVua25vd25fYXJjaAotZW5kaWYKLQotdGFyZ2V0X2NfZmxhZ3MgICAgOj0gJChjb21tb25fY19mbGFncykgJCgkKHRhcmdldF9hcmNoKV9jX2ZsYWdzKSAkKGxvY2FsX2NfZmxhZ3MpCi10YXJnZXRfY19pbmNsdWRlcyA6PSAkKGFkZHByZWZpeCBleHRlcm5hbC9vcGVuc3NsLywkKGNvbW1vbl9jX2luY2x1ZGVzKSkgJChsb2NhbF9jX2luY2x1ZGVzKQotdGFyZ2V0X3NyY19maWxlcyAgOj0gJChjb21tb25fc3JjX2ZpbGVzKSAkKCQodGFyZ2V0X2FyY2gpX3NyY19maWxlcykKLXRhcmdldF9zcmNfZmlsZXMgIDo9ICQoZmlsdGVyLW91dCAkKCQodGFyZ2V0X2FyY2gpX2V4Y2x1ZGVfZmlsZXMpLCAkKHRhcmdldF9zcmNfZmlsZXMpKQotCi1pZmVxICgkKEhPU1RfT1MpLSQoSE9TVF9BUkNIKSxsaW51eC14ODYpCi1ob3N0X2FyY2ggOj0geDg2Ci1lbHNlCi1ob3N0X2FyY2ggOj0gdW5rbm93bl9hcmNoCi1lbmRpZgotCi1ob3N0X2NfZmxhZ3MgICAgOj0gJChjb21tb25fY19mbGFncykgJCgkKGhvc3RfYXJjaClfY19mbGFncykgJChsb2NhbF9jX2ZsYWdzKQotaG9zdF9jX2luY2x1ZGVzIDo9ICQoYWRkcHJlZml4IGV4dGVybmFsL29wZW5zc2wvLCQoY29tbW9uX2NfaW5jbHVkZXMpKSAkKGxvY2FsX2NfaW5jbHVkZXMpCi1ob3N0X3NyY19maWxlcyAgOj0gJChjb21tb25fc3JjX2ZpbGVzKSAkKCQoaG9zdF9hcmNoKV9zcmNfZmlsZXMpCi1ob3N0X3NyY19maWxlcyAgOj0gJChmaWx0ZXItb3V0ICQoJChob3N0X2FyY2gpX2V4Y2x1ZGVfZmlsZXMpLCAkKGhvc3Rfc3JjX2ZpbGVzKSkKLQotbG9jYWxfYWRkaXRpb25hbF9kZXBlbmRlbmNpZXMgKz0gJChMT0NBTF9QQVRIKS9BcHBzLWNvbmZpZy5tawotCmRpZmYgLS1naXQgYS9BcHBzLm1rIGIvQXBwcy5tawppbmRleCAwYWNmMDQ2Li5iMmQ4NzFjIDEwMDY0NAotLS0gYS9BcHBzLm1rCisrKyBiL0FwcHMubWsKQEAgLTEsMzMgKzEsMjUgQEAKICMgQ29weXJpZ2h0IDIwMDYgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAogCi1MT0NBTF9QQVRIOj0gJChjYWxsIG15LWRpcikKLQotbG9jYWxfY19pbmNsdWRlcyA6PQotbG9jYWxfY19mbGFncyA6PQotCi1sb2NhbF9hZGRpdGlvbmFsX2RlcGVuZGVuY2llcyA6PSAkKExPQ0FMX1BBVEgpL2FuZHJvaWQtY29uZmlnLm1rICQoTE9DQUxfUEFUSCkvQXBwcy5tawotCi1pbmNsdWRlICQoTE9DQUxfUEFUSCkvQXBwcy1jb25maWcubWsKK0xPQ0FMX1BBVEggOj0gJChjYWxsIG15LWRpcikKIAogaW5jbHVkZSAkKENMRUFSX1ZBUlMpCi1MT0NBTF9NT0RVTEU6PSBvcGVuc3NsCitMT0NBTF9NT0RVTEUgOj0gb3BlbnNzbAorTE9DQUxfTVVMVElMSUIgOj0gYm90aAorTE9DQUxfTU9EVUxFX1NURU1fMzIgOj0gb3BlbnNzbAorTE9DQUxfTU9EVUxFX1NURU1fNjQgOj0gb3BlbnNzbDY0CiBMT0NBTF9DTEFORyA6PSB0cnVlCiBMT0NBTF9NT0RVTEVfVEFHUyA6PSBvcHRpb25hbAotTE9DQUxfU1JDX0ZJTEVTIDo9ICQodGFyZ2V0X3NyY19maWxlcykKIExPQ0FMX1NIQVJFRF9MSUJSQVJJRVMgOj0gbGlic3NsIGxpYmNyeXB0bwotTE9DQUxfQ19JTkNMVURFUyA6PSAkKHRhcmdldF9jX2luY2x1ZGVzKQotTE9DQUxfQ0ZMQUdTIDo9ICQodGFyZ2V0X2NfZmxhZ3MpCi1MT0NBTF9BRERJVElPTkFMX0RFUEVOREVOQ0lFUyA6PSAkKGxvY2FsX2FkZGl0aW9uYWxfZGVwZW5kZW5jaWVzKQoraW5jbHVkZSAkKExPQ0FMX1BBVEgpL0FwcHMtY29uZmlnLXRhcmdldC5tawogaW5jbHVkZSAkKExPQ0FMX1BBVEgpL2FuZHJvaWQtY29uZmlnLm1rCitMT0NBTF9BRERJVElPTkFMX0RFUEVOREVOQ0lFUyA6PSAkKExPQ0FMX1BBVEgpL2FuZHJvaWQtY29uZmlnLm1rICQoTE9DQUxfUEFUSCkvQXBwcy5tawogaW5jbHVkZSAkKEJVSUxEX0VYRUNVVEFCTEUpCiAKIGluY2x1ZGUgJChDTEVBUl9WQVJTKQotTE9DQUxfTU9EVUxFOj0gb3BlbnNzbAorTE9DQUxfTU9EVUxFIDo9IG9wZW5zc2wKIExPQ0FMX01PRFVMRV9UQUdTIDo9IG9wdGlvbmFsCi1MT0NBTF9TUkNfRklMRVMgOj0gJChob3N0X3NyY19maWxlcykKIExPQ0FMX1NIQVJFRF9MSUJSQVJJRVMgOj0gbGlic3NsLWhvc3QgbGliY3J5cHRvLWhvc3QKLUxPQ0FMX0NfSU5DTFVERVMgOj0gJChob3N0X2NfaW5jbHVkZXMpCi1MT0NBTF9DRkxBR1MgOj0gJChob3N0X2NfZmxhZ3MpCi1MT0NBTF9BRERJVElPTkFMX0RFUEVOREVOQ0lFUyA6PSAkKGxvY2FsX2FkZGl0aW9uYWxfZGVwZW5kZW5jaWVzKQoraW5jbHVkZSAkKExPQ0FMX1BBVEgpL0FwcHMtY29uZmlnLWhvc3QubWsKIGluY2x1ZGUgJChMT0NBTF9QQVRIKS9hbmRyb2lkLWNvbmZpZy5taworTE9DQUxfQURESVRJT05BTF9ERVBFTkRFTkNJRVMgOj0gJChMT0NBTF9QQVRIKS9hbmRyb2lkLWNvbmZpZy5tayAkKExPQ0FMX1BBVEgpL0FwcHMubWsKIGluY2x1ZGUgJChCVUlMRF9IT1NUX0VYRUNVVEFCTEUpCmRpZmYgLS1naXQgYS9DcnlwdG8tY29uZmlnLm1rIGIvQ3J5cHRvLWNvbmZpZy1ob3N0Lm1rCnNpbWlsYXJpdHkgaW5kZXggODklCnJlbmFtZSBmcm9tIENyeXB0by1jb25maWcubWsKcmVuYW1lIHRvIENyeXB0by1jb25maWctaG9zdC5tawppbmRleCBiNWI5YTVmLi41YjY0Mzc5IDEwMDY0NAotLS0gYS9DcnlwdG8tY29uZmlnLm1rCisrKyBiL0NyeXB0by1jb25maWctaG9zdC5tawpAQCAtMSwzMiArMSwyMSBAQAogIyBBdXRvLWdlbmVyYXRlZCAtIERPIE5PVCBFRElUIQogIyBUbyByZWdlbmVyYXRlLCBlZGl0IG9wZW5zc2wuY29uZmlnLCB0aGVuIHJ1bjoKLSMgICAgIC4vaW1wb3J0X29wZW5zc2wuc2ggaW1wb3J0IC9wYXRoL3RvL29wZW5zc2wtMS4wLjFmLnRhci5negorIyAgICAgLi9pbXBvcnRfb3BlbnNzbC5zaCBpbXBvcnQgL3BhdGgvdG8vb3BlbnNzbC0xLjAuMWgudGFyLmd6CiAjCi0jIEJlZm9yZSBpbmNsdWRpbmcgdGhpcyBmaWxlLCB0aGUgbG9jYWwgQW5kcm9pZC5tayBtdXN0IGRlZmluZSB0aGUgZm9sbG93aW5nCi0jIHZhcmlhYmxlczoKKyMgVGhpcyBzY3JpcHQgd2lsbCBhcHBlbmQgdG8gdGhlIGZvbGxvd2luZyB2YXJpYWJsZXM6CiAjCi0jICAgIGxvY2FsX2NfZmxhZ3MKLSMgICAgbG9jYWxfY19pbmNsdWRlcwotIyAgICBsb2NhbF9hZGRpdGlvbmFsX2RlcGVuZGVuY2llcwotIwotIyBUaGlzIHNjcmlwdCB3aWxsIGRlZmluZSB0aGUgZm9sbG93aW5nIHZhcmlhYmxlczoKLSMKLSMgICAgdGFyZ2V0X2NfZmxhZ3MKLSMgICAgdGFyZ2V0X2NfaW5jbHVkZXMKLSMgICAgdGFyZ2V0X3NyY19maWxlcwotIwotIyAgICBob3N0X2NfZmxhZ3MKLSMgICAgaG9zdF9jX2luY2x1ZGVzCi0jICAgIGhvc3Rfc3JjX2ZpbGVzCi0jCi0KLSMgRW5zdXJlIHRoZXNlIGFyZSBlbXB0eS4KLXVua25vd25fYXJjaF9jX2ZsYWdzIDo9Ci11bmtub3duX2FyY2hfc3JjX2ZpbGVzIDo9Ci11bmtub3duX2FyY2hfZXhjbHVkZV9maWxlcyA6PQorIyAgICBMT0NBTF9DRkxBR1MKKyMgICAgTE9DQUxfQ19JTkNMVURFUworIyAgICBMT0NBTF9TUkNfRklMRVNfJChUQVJHRVRfQVJDSCkKKyMgICAgTE9DQUxfU1JDX0ZJTEVTXyQoVEFSR0VUXzJORF9BUkNIKQorIyAgICBMT0NBTF9DRkxBR1NfJChUQVJHRVRfQVJDSCkKKyMgICAgTE9DQUxfQ0ZMQUdTXyQoVEFSR0VUXzJORF9BUkNIKQorIyAgICBMT0NBTF9BRERJVElPTkFMX0RFUEVOREVOQ0lFUwogCiAKLWNvbW1vbl9jX2ZsYWdzIDo9IFwKK0xPQ0FMX0FERElUSU9OQUxfREVQRU5ERU5DSUVTICs9ICQoTE9DQUxfUEFUSCkvQ3J5cHRvLWNvbmZpZy1ob3N0Lm1rCisKK2NvbW1vbl9jZmxhZ3MgOj0gXAogICAtRE5PX1dJTkRPV1NfQlJBSU5ERUFUSCBcCiAKIGNvbW1vbl9zcmNfZmlsZXMgOj0gXApAQCAtMzQzLDcgKzMzMiw2IEBACiAgIGNyeXB0by9ldnAvbV9tZDUuYyBcCiAgIGNyeXB0by9ldnAvbV9tZGMyLmMgXAogICBjcnlwdG8vZXZwL21fbnVsbC5jIFwKLSAgY3J5cHRvL2V2cC9tX3JpcGVtZC5jIFwKICAgY3J5cHRvL2V2cC9tX3NoYTEuYyBcCiAgIGNyeXB0by9ldnAvbV9zaWd2ZXIuYyBcCiAgIGNyeXB0by9ldnAvbV93cC5jIFwKQEAgLTQ0OSw4ICs0MzcsNiBAQAogICBjcnlwdG8vcmM0L3JjNF9lbmMuYyBcCiAgIGNyeXB0by9yYzQvcmM0X3NrZXkuYyBcCiAgIGNyeXB0by9yYzQvcmM0X3V0bC5jIFwKLSAgY3J5cHRvL3JpcGVtZC9ybWRfZGdzdC5jIFwKLSAgY3J5cHRvL3JpcGVtZC9ybWRfb25lLmMgXAogICBjcnlwdG8vcnNhL3JzYV9hbWV0aC5jIFwKICAgY3J5cHRvL3JzYS9yc2FfYXNuMS5jIFwKICAgY3J5cHRvL3JzYS9yc2FfY2hrLmMgXApAQCAtNTQ2LDQzICs1MzIsNjMgQEAKICAgY3J5cHRvL3g1MDl2My92M2Vyci5jIFwKIAogY29tbW9uX2NfaW5jbHVkZXMgOj0gXAotICAuIFwKLSAgY3J5cHRvIFwKLSAgY3J5cHRvL2FzbjEgXAotICBjcnlwdG8vZXZwIFwKLSAgY3J5cHRvL21vZGVzIFwKLSAgaW5jbHVkZSBcCi0gIGluY2x1ZGUvb3BlbnNzbCBcCisgIGV4dGVybmFsL29wZW5zc2wvLiBcCisgIGV4dGVybmFsL29wZW5zc2wvY3J5cHRvIFwKKyAgZXh0ZXJuYWwvb3BlbnNzbC9jcnlwdG8vYXNuMSBcCisgIGV4dGVybmFsL29wZW5zc2wvY3J5cHRvL2V2cCBcCisgIGV4dGVybmFsL29wZW5zc2wvY3J5cHRvL21vZGVzIFwKKyAgZXh0ZXJuYWwvb3BlbnNzbC9pbmNsdWRlIFwKKyAgZXh0ZXJuYWwvb3BlbnNzbC9pbmNsdWRlL29wZW5zc2wgXAogCi1hcm1fY19mbGFncyA6PSBcCithcm1fY2ZsYWdzIDo9IFwKICAgLURBRVNfQVNNIFwKKyAgLURCU0FFU19BU00gXAorICAtRERFU19VTlJPTEwgXAogICAtREdIQVNIX0FTTSBcCiAgIC1ET1BFTlNTTF9CTl9BU01fR0YybSBcCiAgIC1ET1BFTlNTTF9CTl9BU01fTU9OVCBcCisgIC1ET1BFTlNTTF9DUFVJRF9PQkogXAogICAtRFNIQTFfQVNNIFwKICAgLURTSEEyNTZfQVNNIFwKICAgLURTSEE1MTJfQVNNIFwKIAogYXJtX3NyY19maWxlcyA6PSBcCiAgIGNyeXB0by9hZXMvYXNtL2Flcy1hcm12NC5TIFwKKyAgY3J5cHRvL2Flcy9hc20vYWVzdjgtYXJteC5TIFwKKyAgY3J5cHRvL2Flcy9hc20vYnNhZXMtYXJtdjcuUyBcCisgIGNyeXB0by9hcm1jYXAuYyBcCisgIGNyeXB0by9hcm12NGNwdWlkLlMgXAogICBjcnlwdG8vYm4vYXNtL2FybXY0LWdmMm0uUyBcCiAgIGNyeXB0by9ibi9hc20vYXJtdjQtbW9udC5TIFwKICAgY3J5cHRvL21vZGVzL2FzbS9naGFzaC1hcm12NC5TIFwKKyAgY3J5cHRvL21vZGVzL2FzbS9naGFzaHY4LWFybXguUyBcCiAgIGNyeXB0by9zaGEvYXNtL3NoYTEtYXJtdjQtbGFyZ2UuUyBcCiAgIGNyeXB0by9zaGEvYXNtL3NoYTI1Ni1hcm12NC5TIFwKICAgY3J5cHRvL3NoYS9hc20vc2hhNTEyLWFybXY0LlMgXAogCiBhcm1fZXhjbHVkZV9maWxlcyA6PSBcCiAgIGNyeXB0by9hZXMvYWVzX2NvcmUuYyBcCisgIGNyeXB0by9tZW1fY2xyLmMgXAogCi1hcm02NF9jX2ZsYWdzIDo9IFwKLSAgLURPUEVOU1NMX05PX0FTTSBcCithcm02NF9jZmxhZ3MgOj0gXAorICAtRERFU19VTlJPTEwgXAorICAtRE9QRU5TU0xfQ1BVSURfT0JKIFwKKyAgLURTSEExX0FTTSBcCisgIC1EU0hBMjU2X0FTTSBcCisgIC1EU0hBNTEyX0FTTSBcCiAKLWFybTY0X3NyY19maWxlcyA6PQorYXJtNjRfc3JjX2ZpbGVzIDo9IFwKKyAgY3J5cHRvL2Flcy9hc20vYWVzdjgtYXJteC02NC5TIFwKKyAgY3J5cHRvL2FybTY0Y3B1aWQuUyBcCisgIGNyeXB0by9hcm1jYXAuYyBcCisgIGNyeXB0by9tb2Rlcy9hc20vZ2hhc2h2OC1hcm14LTY0LlMgXAorICBjcnlwdG8vc2hhL2FzbS9zaGExLWFybXY4LlMgXAorICBjcnlwdG8vc2hhL2FzbS9zaGEyNTYtYXJtdjguUyBcCisgIGNyeXB0by9zaGEvYXNtL3NoYTUxMi1hcm12OC5TIFwKIAogYXJtNjRfZXhjbHVkZV9maWxlcyA6PQogCi14ODZfY19mbGFncyA6PSBcCit4ODZfY2ZsYWdzIDo9IFwKICAgLURBRVNfQVNNIFwKICAgLURERVNfUFRSIFwKICAgLURERVNfUklTQzEgXApAQCAtNTkzLDkgKzU5OSwxMyBAQAogICAtRE9QRU5TU0xfQk5fQVNNX01PTlQgXAogICAtRE9QRU5TU0xfQk5fQVNNX1BBUlRfV09SRFMgXAogICAtRE9QRU5TU0xfQ1BVSURfT0JKIFwKKyAgLURPUEVOU1NMX0lBMzJfU1NFMiBcCisgIC1EUkM0X0lOREVYIFwKKyAgLURSTUQxNjBfQVNNIFwKICAgLURTSEExX0FTTSBcCiAgIC1EU0hBMjU2X0FTTSBcCiAgIC1EU0hBNTEyX0FTTSBcCisgIC1EVlBBRVNfQVNNIFwKIAogeDg2X3NyY19maWxlcyA6PSBcCiAgIGNyeXB0by9hZXMvYXNtL2Flcy01ODYuUyBcCkBAIC02MjQsMTkgKzYzNCwyMSBAQAogICBjcnlwdG8vZGVzL2ZjcnlwdF9iLmMgXAogICBjcnlwdG8vbWVtX2Nsci5jIFwKIAoteDg2XzY0X2NfZmxhZ3MgOj0gXAoreDg2XzY0X2NmbGFncyA6PSBcCiAgIC1EQUVTX0FTTSBcCi0gIC1EREVTX1BUUiBcCi0gIC1EREVTX1JJU0MxIFwKKyAgLURCU0FFU19BU00gXAogICAtRERFU19VTlJPTEwgXAogICAtREdIQVNIX0FTTSBcCiAgIC1ETUQ1X0FTTSBcCiAgIC1ET1BFTlNTTF9CTl9BU01fR0YybSBcCiAgIC1ET1BFTlNTTF9CTl9BU01fTU9OVCBcCisgIC1ET1BFTlNTTF9CTl9BU01fTU9OVDUgXAogICAtRE9QRU5TU0xfQ1BVSURfT0JKIFwKKyAgLURPUEVOU1NMX0lBMzJfU1NFMiBcCiAgIC1EU0hBMV9BU00gXAogICAtRFNIQTI1Nl9BU00gXAogICAtRFNIQTUxMl9BU00gXAorICAtRFZQQUVTX0FTTSBcCiAKIHg4Nl82NF9zcmNfZmlsZXMgOj0gXAogICBjcnlwdG8vYWVzL2FzbS9hZXMteDg2XzY0LlMgXApAQCAtNjY2LDcgKzY3OCw3IEBACiAgIGNyeXB0by9yYzQvcmM0X2VuYy5jIFwKICAgY3J5cHRvL3JjNC9yYzRfc2tleS5jIFwKIAotbWlwc19jX2ZsYWdzIDo9IFwKK21pcHNfY2ZsYWdzIDo9IFwKICAgLURBRVNfQVNNIFwKICAgLURPUEVOU1NMX0JOX0FTTV9NT05UIFwKICAgLURTSEExX0FTTSBcCkBAIC02ODMsMjYgKzY5NSwxNiBAQAogICBjcnlwdG8vYWVzL2Flc19jb3JlLmMgXAogICBjcnlwdG8vYm4vYm5fYXNtLmMgXAogCi10YXJnZXRfYXJjaCA6PSAkKFRBUkdFVF9BUkNIKQotaWZlcSAoJCh0YXJnZXRfYXJjaCktJChUQVJHRVRfSEFTX0JJR0VORElBTiksbWlwcy10cnVlKQotdGFyZ2V0X2FyY2ggOj0gdW5rbm93bl9hcmNoCi1lbmRpZgogCi10YXJnZXRfY19mbGFncyAgICA6PSAkKGNvbW1vbl9jX2ZsYWdzKSAkKCQodGFyZ2V0X2FyY2gpX2NfZmxhZ3MpICQobG9jYWxfY19mbGFncykKLXRhcmdldF9jX2luY2x1ZGVzIDo9ICQoYWRkcHJlZml4IGV4dGVybmFsL29wZW5zc2wvLCQoY29tbW9uX2NfaW5jbHVkZXMpKSAkKGxvY2FsX2NfaW5jbHVkZXMpCi10YXJnZXRfc3JjX2ZpbGVzICA6PSAkKGNvbW1vbl9zcmNfZmlsZXMpICQoJCh0YXJnZXRfYXJjaClfc3JjX2ZpbGVzKQotdGFyZ2V0X3NyY19maWxlcyAgOj0gJChmaWx0ZXItb3V0ICQoJCh0YXJnZXRfYXJjaClfZXhjbHVkZV9maWxlcyksICQodGFyZ2V0X3NyY19maWxlcykpCitMT0NBTF9DRkxBR1MgKz0gJChjb21tb25fY2ZsYWdzKQorTE9DQUxfQ19JTkNMVURFUyArPSAkKGNvbW1vbl9jX2luY2x1ZGVzKSAkKGxvY2FsX2NfaW5jbHVkZXMpCiAKLWlmZXEgKCQoSE9TVF9PUyktJChIT1NUX0FSQ0gpLGxpbnV4LXg4NikKLWhvc3RfYXJjaCA6PSB4ODYKK2lmZXEgKCQoSE9TVF9PUyksbGludXgpCitMT0NBTF9DRkxBR1NfeDg2ICs9ICQoeDg2X2NmbGFncykKK0xPQ0FMX1NSQ19GSUxFU194ODYgKz0gJChmaWx0ZXItb3V0ICQoeDg2X2V4Y2x1ZGVfZmlsZXMpLCAkKGNvbW1vbl9zcmNfZmlsZXMpICQoeDg2X3NyY19maWxlcykpCitMT0NBTF9DRkxBR1NfeDg2XzY0ICs9ICQoeDg2XzY0X2NmbGFncykKK0xPQ0FMX1NSQ19GSUxFU194ODZfNjQgKz0gJChmaWx0ZXItb3V0ICQoeDg2XzY0X2V4Y2x1ZGVfZmlsZXMpLCAkKGNvbW1vbl9zcmNfZmlsZXMpICQoeDg2XzY0X3NyY19maWxlcykpCiBlbHNlCi1ob3N0X2FyY2ggOj0gdW5rbm93bl9hcmNoCiskKHdhcm5pbmcgVW5rbm93biBob3N0IE9TICQoSE9TVF9PUykpCitMT0NBTF9TUkNfRklMRVMgKz0gJChjb21tb25fc3JjX2ZpbGVzKQogZW5kaWYKLQotaG9zdF9jX2ZsYWdzICAgIDo9ICQoY29tbW9uX2NfZmxhZ3MpICQoJChob3N0X2FyY2gpX2NfZmxhZ3MpICQobG9jYWxfY19mbGFncykKLWhvc3RfY19pbmNsdWRlcyA6PSAkKGFkZHByZWZpeCBleHRlcm5hbC9vcGVuc3NsLywkKGNvbW1vbl9jX2luY2x1ZGVzKSkgJChsb2NhbF9jX2luY2x1ZGVzKQotaG9zdF9zcmNfZmlsZXMgIDo9ICQoY29tbW9uX3NyY19maWxlcykgJCgkKGhvc3RfYXJjaClfc3JjX2ZpbGVzKQotaG9zdF9zcmNfZmlsZXMgIDo9ICQoZmlsdGVyLW91dCAkKCQoaG9zdF9hcmNoKV9leGNsdWRlX2ZpbGVzKSwgJChob3N0X3NyY19maWxlcykpCi0KLWxvY2FsX2FkZGl0aW9uYWxfZGVwZW5kZW5jaWVzICs9ICQoTE9DQUxfUEFUSCkvQ3J5cHRvLWNvbmZpZy5tawotCmRpZmYgLS1naXQgYS9DcnlwdG8tY29uZmlnLm1rIGIvQ3J5cHRvLWNvbmZpZy10YXJnZXQubWsKc2ltaWxhcml0eSBpbmRleCA4NyUKY29weSBmcm9tIENyeXB0by1jb25maWcubWsKY29weSB0byBDcnlwdG8tY29uZmlnLXRhcmdldC5tawppbmRleCBiNWI5YTVmLi45MjBjYTY0IDEwMDY0NAotLS0gYS9DcnlwdG8tY29uZmlnLm1rCisrKyBiL0NyeXB0by1jb25maWctdGFyZ2V0Lm1rCkBAIC0xLDMyICsxLDIxIEBACiAjIEF1dG8tZ2VuZXJhdGVkIC0gRE8gTk9UIEVESVQhCiAjIFRvIHJlZ2VuZXJhdGUsIGVkaXQgb3BlbnNzbC5jb25maWcsIHRoZW4gcnVuOgotIyAgICAgLi9pbXBvcnRfb3BlbnNzbC5zaCBpbXBvcnQgL3BhdGgvdG8vb3BlbnNzbC0xLjAuMWYudGFyLmd6CisjICAgICAuL2ltcG9ydF9vcGVuc3NsLnNoIGltcG9ydCAvcGF0aC90by9vcGVuc3NsLTEuMC4xaC50YXIuZ3oKICMKLSMgQmVmb3JlIGluY2x1ZGluZyB0aGlzIGZpbGUsIHRoZSBsb2NhbCBBbmRyb2lkLm1rIG11c3QgZGVmaW5lIHRoZSBmb2xsb3dpbmcKLSMgdmFyaWFibGVzOgorIyBUaGlzIHNjcmlwdCB3aWxsIGFwcGVuZCB0byB0aGUgZm9sbG93aW5nIHZhcmlhYmxlczoKICMKLSMgICAgbG9jYWxfY19mbGFncwotIyAgICBsb2NhbF9jX2luY2x1ZGVzCi0jICAgIGxvY2FsX2FkZGl0aW9uYWxfZGVwZW5kZW5jaWVzCi0jCi0jIFRoaXMgc2NyaXB0IHdpbGwgZGVmaW5lIHRoZSBmb2xsb3dpbmcgdmFyaWFibGVzOgotIwotIyAgICB0YXJnZXRfY19mbGFncwotIyAgICB0YXJnZXRfY19pbmNsdWRlcwotIyAgICB0YXJnZXRfc3JjX2ZpbGVzCi0jCi0jICAgIGhvc3RfY19mbGFncwotIyAgICBob3N0X2NfaW5jbHVkZXMKLSMgICAgaG9zdF9zcmNfZmlsZXMKLSMKLQotIyBFbnN1cmUgdGhlc2UgYXJlIGVtcHR5LgotdW5rbm93bl9hcmNoX2NfZmxhZ3MgOj0KLXVua25vd25fYXJjaF9zcmNfZmlsZXMgOj0KLXVua25vd25fYXJjaF9leGNsdWRlX2ZpbGVzIDo9CisjICAgIExPQ0FMX0NGTEFHUworIyAgICBMT0NBTF9DX0lOQ0xVREVTCisjICAgIExPQ0FMX1NSQ19GSUxFU18kKFRBUkdFVF9BUkNIKQorIyAgICBMT0NBTF9TUkNfRklMRVNfJChUQVJHRVRfMk5EX0FSQ0gpCisjICAgIExPQ0FMX0NGTEFHU18kKFRBUkdFVF9BUkNIKQorIyAgICBMT0NBTF9DRkxBR1NfJChUQVJHRVRfMk5EX0FSQ0gpCisjICAgIExPQ0FMX0FERElUSU9OQUxfREVQRU5ERU5DSUVTCiAKIAotY29tbW9uX2NfZmxhZ3MgOj0gXAorTE9DQUxfQURESVRJT05BTF9ERVBFTkRFTkNJRVMgKz0gJChMT0NBTF9QQVRIKS9DcnlwdG8tY29uZmlnLXRhcmdldC5taworCitjb21tb25fY2ZsYWdzIDo9IFwKICAgLUROT19XSU5ET1dTX0JSQUlOREVBVEggXAogCiBjb21tb25fc3JjX2ZpbGVzIDo9IFwKQEAgLTM0Myw3ICszMzIsNiBAQAogICBjcnlwdG8vZXZwL21fbWQ1LmMgXAogICBjcnlwdG8vZXZwL21fbWRjMi5jIFwKICAgY3J5cHRvL2V2cC9tX251bGwuYyBcCi0gIGNyeXB0by9ldnAvbV9yaXBlbWQuYyBcCiAgIGNyeXB0by9ldnAvbV9zaGExLmMgXAogICBjcnlwdG8vZXZwL21fc2lndmVyLmMgXAogICBjcnlwdG8vZXZwL21fd3AuYyBcCkBAIC00NDksOCArNDM3LDYgQEAKICAgY3J5cHRvL3JjNC9yYzRfZW5jLmMgXAogICBjcnlwdG8vcmM0L3JjNF9za2V5LmMgXAogICBjcnlwdG8vcmM0L3JjNF91dGwuYyBcCi0gIGNyeXB0by9yaXBlbWQvcm1kX2Rnc3QuYyBcCi0gIGNyeXB0by9yaXBlbWQvcm1kX29uZS5jIFwKICAgY3J5cHRvL3JzYS9yc2FfYW1ldGguYyBcCiAgIGNyeXB0by9yc2EvcnNhX2FzbjEuYyBcCiAgIGNyeXB0by9yc2EvcnNhX2Noay5jIFwKQEAgLTU0Niw0MyArNTMyLDYzIEBACiAgIGNyeXB0by94NTA5djMvdjNlcnIuYyBcCiAKIGNvbW1vbl9jX2luY2x1ZGVzIDo9IFwKLSAgLiBcCi0gIGNyeXB0byBcCi0gIGNyeXB0by9hc24xIFwKLSAgY3J5cHRvL2V2cCBcCi0gIGNyeXB0by9tb2RlcyBcCi0gIGluY2x1ZGUgXAotICBpbmNsdWRlL29wZW5zc2wgXAorICBleHRlcm5hbC9vcGVuc3NsLy4gXAorICBleHRlcm5hbC9vcGVuc3NsL2NyeXB0byBcCisgIGV4dGVybmFsL29wZW5zc2wvY3J5cHRvL2FzbjEgXAorICBleHRlcm5hbC9vcGVuc3NsL2NyeXB0by9ldnAgXAorICBleHRlcm5hbC9vcGVuc3NsL2NyeXB0by9tb2RlcyBcCisgIGV4dGVybmFsL29wZW5zc2wvaW5jbHVkZSBcCisgIGV4dGVybmFsL29wZW5zc2wvaW5jbHVkZS9vcGVuc3NsIFwKIAotYXJtX2NfZmxhZ3MgOj0gXAorYXJtX2NmbGFncyA6PSBcCiAgIC1EQUVTX0FTTSBcCisgIC1EQlNBRVNfQVNNIFwKKyAgLURERVNfVU5ST0xMIFwKICAgLURHSEFTSF9BU00gXAogICAtRE9QRU5TU0xfQk5fQVNNX0dGMm0gXAogICAtRE9QRU5TU0xfQk5fQVNNX01PTlQgXAorICAtRE9QRU5TU0xfQ1BVSURfT0JKIFwKICAgLURTSEExX0FTTSBcCiAgIC1EU0hBMjU2X0FTTSBcCiAgIC1EU0hBNTEyX0FTTSBcCiAKIGFybV9zcmNfZmlsZXMgOj0gXAogICBjcnlwdG8vYWVzL2FzbS9hZXMtYXJtdjQuUyBcCisgIGNyeXB0by9hZXMvYXNtL2Flc3Y4LWFybXguUyBcCisgIGNyeXB0by9hZXMvYXNtL2JzYWVzLWFybXY3LlMgXAorICBjcnlwdG8vYXJtY2FwLmMgXAorICBjcnlwdG8vYXJtdjRjcHVpZC5TIFwKICAgY3J5cHRvL2JuL2FzbS9hcm12NC1nZjJtLlMgXAogICBjcnlwdG8vYm4vYXNtL2FybXY0LW1vbnQuUyBcCiAgIGNyeXB0by9tb2Rlcy9hc20vZ2hhc2gtYXJtdjQuUyBcCisgIGNyeXB0by9tb2Rlcy9hc20vZ2hhc2h2OC1hcm14LlMgXAogICBjcnlwdG8vc2hhL2FzbS9zaGExLWFybXY0LWxhcmdlLlMgXAogICBjcnlwdG8vc2hhL2FzbS9zaGEyNTYtYXJtdjQuUyBcCiAgIGNyeXB0by9zaGEvYXNtL3NoYTUxMi1hcm12NC5TIFwKIAogYXJtX2V4Y2x1ZGVfZmlsZXMgOj0gXAogICBjcnlwdG8vYWVzL2Flc19jb3JlLmMgXAorICBjcnlwdG8vbWVtX2Nsci5jIFwKIAotYXJtNjRfY19mbGFncyA6PSBcCi0gIC1ET1BFTlNTTF9OT19BU00gXAorYXJtNjRfY2ZsYWdzIDo9IFwKKyAgLURERVNfVU5ST0xMIFwKKyAgLURPUEVOU1NMX0NQVUlEX09CSiBcCisgIC1EU0hBMV9BU00gXAorICAtRFNIQTI1Nl9BU00gXAorICAtRFNIQTUxMl9BU00gXAogCi1hcm02NF9zcmNfZmlsZXMgOj0KK2FybTY0X3NyY19maWxlcyA6PSBcCisgIGNyeXB0by9hZXMvYXNtL2Flc3Y4LWFybXgtNjQuUyBcCisgIGNyeXB0by9hcm02NGNwdWlkLlMgXAorICBjcnlwdG8vYXJtY2FwLmMgXAorICBjcnlwdG8vbW9kZXMvYXNtL2doYXNodjgtYXJteC02NC5TIFwKKyAgY3J5cHRvL3NoYS9hc20vc2hhMS1hcm12OC5TIFwKKyAgY3J5cHRvL3NoYS9hc20vc2hhMjU2LWFybXY4LlMgXAorICBjcnlwdG8vc2hhL2FzbS9zaGE1MTItYXJtdjguUyBcCiAKIGFybTY0X2V4Y2x1ZGVfZmlsZXMgOj0KIAoteDg2X2NfZmxhZ3MgOj0gXAoreDg2X2NmbGFncyA6PSBcCiAgIC1EQUVTX0FTTSBcCiAgIC1EREVTX1BUUiBcCiAgIC1EREVTX1JJU0MxIFwKQEAgLTU5Myw5ICs1OTksMTMgQEAKICAgLURPUEVOU1NMX0JOX0FTTV9NT05UIFwKICAgLURPUEVOU1NMX0JOX0FTTV9QQVJUX1dPUkRTIFwKICAgLURPUEVOU1NMX0NQVUlEX09CSiBcCisgIC1ET1BFTlNTTF9JQTMyX1NTRTIgXAorICAtRFJDNF9JTkRFWCBcCisgIC1EUk1EMTYwX0FTTSBcCiAgIC1EU0hBMV9BU00gXAogICAtRFNIQTI1Nl9BU00gXAogICAtRFNIQTUxMl9BU00gXAorICAtRFZQQUVTX0FTTSBcCiAKIHg4Nl9zcmNfZmlsZXMgOj0gXAogICBjcnlwdG8vYWVzL2FzbS9hZXMtNTg2LlMgXApAQCAtNjI0LDE5ICs2MzQsMjEgQEAKICAgY3J5cHRvL2Rlcy9mY3J5cHRfYi5jIFwKICAgY3J5cHRvL21lbV9jbHIuYyBcCiAKLXg4Nl82NF9jX2ZsYWdzIDo9IFwKK3g4Nl82NF9jZmxhZ3MgOj0gXAogICAtREFFU19BU00gXAotICAtRERFU19QVFIgXAotICAtRERFU19SSVNDMSBcCisgIC1EQlNBRVNfQVNNIFwKICAgLURERVNfVU5ST0xMIFwKICAgLURHSEFTSF9BU00gXAogICAtRE1ENV9BU00gXAogICAtRE9QRU5TU0xfQk5fQVNNX0dGMm0gXAogICAtRE9QRU5TU0xfQk5fQVNNX01PTlQgXAorICAtRE9QRU5TU0xfQk5fQVNNX01PTlQ1IFwKICAgLURPUEVOU1NMX0NQVUlEX09CSiBcCisgIC1ET1BFTlNTTF9JQTMyX1NTRTIgXAogICAtRFNIQTFfQVNNIFwKICAgLURTSEEyNTZfQVNNIFwKICAgLURTSEE1MTJfQVNNIFwKKyAgLURWUEFFU19BU00gXAogCiB4ODZfNjRfc3JjX2ZpbGVzIDo9IFwKICAgY3J5cHRvL2Flcy9hc20vYWVzLXg4Nl82NC5TIFwKQEAgLTY2Niw3ICs2NzgsNyBAQAogICBjcnlwdG8vcmM0L3JjNF9lbmMuYyBcCiAgIGNyeXB0by9yYzQvcmM0X3NrZXkuYyBcCiAKLW1pcHNfY19mbGFncyA6PSBcCittaXBzX2NmbGFncyA6PSBcCiAgIC1EQUVTX0FTTSBcCiAgIC1ET1BFTlNTTF9CTl9BU01fTU9OVCBcCiAgIC1EU0hBMV9BU00gXApAQCAtNjgzLDI2ICs2OTUsMjEgQEAKICAgY3J5cHRvL2Flcy9hZXNfY29yZS5jIFwKICAgY3J5cHRvL2JuL2JuX2FzbS5jIFwKIAotdGFyZ2V0X2FyY2ggOj0gJChUQVJHRVRfQVJDSCkKLWlmZXEgKCQodGFyZ2V0X2FyY2gpLSQoVEFSR0VUX0hBU19CSUdFTkRJQU4pLG1pcHMtdHJ1ZSkKLXRhcmdldF9hcmNoIDo9IHVua25vd25fYXJjaAotZW5kaWYKIAotdGFyZ2V0X2NfZmxhZ3MgICAgOj0gJChjb21tb25fY19mbGFncykgJCgkKHRhcmdldF9hcmNoKV9jX2ZsYWdzKSAkKGxvY2FsX2NfZmxhZ3MpCi10YXJnZXRfY19pbmNsdWRlcyA6PSAkKGFkZHByZWZpeCBleHRlcm5hbC9vcGVuc3NsLywkKGNvbW1vbl9jX2luY2x1ZGVzKSkgJChsb2NhbF9jX2luY2x1ZGVzKQotdGFyZ2V0X3NyY19maWxlcyAgOj0gJChjb21tb25fc3JjX2ZpbGVzKSAkKCQodGFyZ2V0X2FyY2gpX3NyY19maWxlcykKLXRhcmdldF9zcmNfZmlsZXMgIDo9ICQoZmlsdGVyLW91dCAkKCQodGFyZ2V0X2FyY2gpX2V4Y2x1ZGVfZmlsZXMpLCAkKHRhcmdldF9zcmNfZmlsZXMpKQorTE9DQUxfQ0ZMQUdTICs9ICQoY29tbW9uX2NmbGFncykKK0xPQ0FMX0NfSU5DTFVERVMgKz0gJChjb21tb25fY19pbmNsdWRlcykKIAotaWZlcSAoJChIT1NUX09TKS0kKEhPU1RfQVJDSCksbGludXgteDg2KQotaG9zdF9hcmNoIDo9IHg4NgotZWxzZQotaG9zdF9hcmNoIDo9IHVua25vd25fYXJjaAotZW5kaWYKK0xPQ0FMX1NSQ19GSUxFU19hcm0gKz0gJChmaWx0ZXItb3V0ICQoYXJtX2V4Y2x1ZGVfZmlsZXMpLCQoY29tbW9uX3NyY19maWxlcykgJChhcm1fc3JjX2ZpbGVzKSkKK0xPQ0FMX0NGTEFHU19hcm0gKz0gJChhcm1fY2ZsYWdzKQogCi1ob3N0X2NfZmxhZ3MgICAgOj0gJChjb21tb25fY19mbGFncykgJCgkKGhvc3RfYXJjaClfY19mbGFncykgJChsb2NhbF9jX2ZsYWdzKQotaG9zdF9jX2luY2x1ZGVzIDo9ICQoYWRkcHJlZml4IGV4dGVybmFsL29wZW5zc2wvLCQoY29tbW9uX2NfaW5jbHVkZXMpKSAkKGxvY2FsX2NfaW5jbHVkZXMpCi1ob3N0X3NyY19maWxlcyAgOj0gJChjb21tb25fc3JjX2ZpbGVzKSAkKCQoaG9zdF9hcmNoKV9zcmNfZmlsZXMpCi1ob3N0X3NyY19maWxlcyAgOj0gJChmaWx0ZXItb3V0ICQoJChob3N0X2FyY2gpX2V4Y2x1ZGVfZmlsZXMpLCAkKGhvc3Rfc3JjX2ZpbGVzKSkKK0xPQ0FMX1NSQ19GSUxFU19hcm02NCArPSAkKGZpbHRlci1vdXQgJChhcm02NF9leGNsdWRlX2ZpbGVzKSwkKGNvbW1vbl9zcmNfZmlsZXMpICQoYXJtNjRfc3JjX2ZpbGVzKSkKK0xPQ0FMX0NGTEFHU19hcm02NCArPSAkKGFybTY0X2NmbGFncykKIAotbG9jYWxfYWRkaXRpb25hbF9kZXBlbmRlbmNpZXMgKz0gJChMT0NBTF9QQVRIKS9DcnlwdG8tY29uZmlnLm1rCitMT0NBTF9TUkNfRklMRVNfeDg2ICs9ICQoZmlsdGVyLW91dCAkKHg4Nl9leGNsdWRlX2ZpbGVzKSwkKGNvbW1vbl9zcmNfZmlsZXMpICQoeDg2X3NyY19maWxlcykpCitMT0NBTF9DRkxBR1NfeDg2ICs9ICQoeDg2X2NmbGFncykKIAorTE9DQUxfU1JDX0ZJTEVTX3g4Nl82NCArPSAkKGZpbHRlci1vdXQgJCh4ODZfNjRfZXhjbHVkZV9maWxlcyksJChjb21tb25fc3JjX2ZpbGVzKSAkKHg4Nl82NF9zcmNfZmlsZXMpKQorTE9DQUxfQ0ZMQUdTX3g4Nl82NCArPSAkKHg4Nl82NF9jZmxhZ3MpCisKK0xPQ0FMX1NSQ19GSUxFU19taXBzICs9ICQoZmlsdGVyLW91dCAkKG1pcHNfZXhjbHVkZV9maWxlcyksJChjb21tb25fc3JjX2ZpbGVzKSAkKG1pcHNfc3JjX2ZpbGVzKSkKK0xPQ0FMX0NGTEFHU19taXBzICs9ICQobWlwc19jZmxhZ3MpCmRpZmYgLS1naXQgYS9DcnlwdG8tY29uZmlnLXRydXN0eS5tayBiL0NyeXB0by1jb25maWctdHJ1c3R5Lm1rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5OTE1OTgKLS0tIC9kZXYvbnVsbAorKysgYi9DcnlwdG8tY29uZmlnLXRydXN0eS5tawpAQCAtMCwwICsxLDI2MiBAQAorIyBBdXRvLWdlbmVyYXRlZCAtIERPIE5PVCBFRElUIQorIyBUbyByZWdlbmVyYXRlLCBlZGl0IG9wZW5zc2wuY29uZmlnLCB0aGVuIHJ1bjoKKyMgICAgIC4vaW1wb3J0X29wZW5zc2wuc2ggaW1wb3J0IC9wYXRoL3RvL29wZW5zc2wtMS4wLjFoLnRhci5negorIworIyBUaGlzIHNjcmlwdCB3aWxsIGFwcGVuZCB0byB0aGUgZm9sbG93aW5nIHZhcmlhYmxlczoKKyMKKyMgICAgTE9DQUxfQ0ZMQUdTCisjICAgIExPQ0FMX0NfSU5DTFVERVMKKyMgICAgTE9DQUxfU1JDX0ZJTEVTXyQoVEFSR0VUX0FSQ0gpCisjICAgIExPQ0FMX1NSQ19GSUxFU18kKFRBUkdFVF8yTkRfQVJDSCkKKyMgICAgTE9DQUxfQ0ZMQUdTXyQoVEFSR0VUX0FSQ0gpCisjICAgIExPQ0FMX0NGTEFHU18kKFRBUkdFVF8yTkRfQVJDSCkKKyMgICAgTE9DQUxfQURESVRJT05BTF9ERVBFTkRFTkNJRVMKKworCitMT0NBTF9BRERJVElPTkFMX0RFUEVOREVOQ0lFUyArPSAkKExPQ0FMX1BBVEgpL0NyeXB0by1jb25maWctdHJ1c3R5Lm1rCisKK2NvbW1vbl9jZmxhZ3MgOj0gXAorICAtREdFVFBJRF9JU19NRUFOSU5HTEVTUyBcCisgIC1ETk9fV0lORE9XU19CUkFJTkRFQVRIIFwKKworY29tbW9uX3NyY19maWxlcyA6PSBcCisgIENyeXB0by1jb25maWcubWsgXAorICBjcnlwdG8vYWVzL2Flc19jYmMuYyBcCisgIGNyeXB0by9hZXMvYWVzX21pc2MuYyBcCisgIGNyeXB0by9hc24xL2FfYml0c3RyLmMgXAorICBjcnlwdG8vYXNuMS9hX2QyaV9mcC5jIFwKKyAgY3J5cHRvL2FzbjEvYV9pbnQuYyBcCisgIGNyeXB0by9hc24xL2Ffb2JqZWN0LmMgXAorICBjcnlwdG8vYXNuMS9hX29jdGV0LmMgXAorICBjcnlwdG8vYXNuMS9hX3R5cGUuYyBcCisgIGNyeXB0by9hc24xL2FtZXRoX2xpYi5jIFwKKyAgY3J5cHRvL2FzbjEvYXNuMV9saWIuYyBcCisgIGNyeXB0by9hc24xL2Fzbl9wYWNrLmMgXAorICBjcnlwdG8vYXNuMS9kMmlfcHIuYyBcCisgIGNyeXB0by9hc24xL2ZfaW50LmMgXAorICBjcnlwdG8vYXNuMS9pMmRfcHIuYyBcCisgIGNyeXB0by9hc24xL3A4X3BrZXkuYyBcCisgIGNyeXB0by9hc24xL3RfcGtleS5jIFwKKyAgY3J5cHRvL2FzbjEvdF94NTA5LmMgXAorICBjcnlwdG8vYXNuMS90YXNuX2RlYy5jIFwKKyAgY3J5cHRvL2FzbjEvdGFzbl9lbmMuYyBcCisgIGNyeXB0by9hc24xL3Rhc25fZnJlLmMgXAorICBjcnlwdG8vYXNuMS90YXNuX25ldy5jIFwKKyAgY3J5cHRvL2FzbjEvdGFzbl90eXAuYyBcCisgIGNyeXB0by9hc24xL3Rhc25fdXRsLmMgXAorICBjcnlwdG8vYXNuMS94X2FsZ29yLmMgXAorICBjcnlwdG8vYXNuMS94X2F0dHJpYi5jIFwKKyAgY3J5cHRvL2FzbjEveF9iaWdudW0uYyBcCisgIGNyeXB0by9hc24xL3hfbG9uZy5jIFwKKyAgY3J5cHRvL2FzbjEveF9wdWJrZXkuYyBcCisgIGNyeXB0by9hc24xL3hfc2lnLmMgXAorICBjcnlwdG8vYmlvL2JfcHJpbnQuYyBcCisgIGNyeXB0by9iaW8vYmlvX2xpYi5jIFwKKyAgY3J5cHRvL2Jpby9ic3NfbWVtLmMgXAorICBjcnlwdG8vYm4vYm5fYWRkLmMgXAorICBjcnlwdG8vYm4vYm5fYXNtLmMgXAorICBjcnlwdG8vYm4vYm5fYmxpbmQuYyBcCisgIGNyeXB0by9ibi9ibl9jdHguYyBcCisgIGNyeXB0by9ibi9ibl9kaXYuYyBcCisgIGNyeXB0by9ibi9ibl9leHAuYyBcCisgIGNyeXB0by9ibi9ibl9leHAyLmMgXAorICBjcnlwdG8vYm4vYm5fZ2NkLmMgXAorICBjcnlwdG8vYm4vYm5fZ2YybS5jIFwKKyAgY3J5cHRvL2JuL2JuX2tyb24uYyBcCisgIGNyeXB0by9ibi9ibl9saWIuYyBcCisgIGNyeXB0by9ibi9ibl9tb2QuYyBcCisgIGNyeXB0by9ibi9ibl9tb250LmMgXAorICBjcnlwdG8vYm4vYm5fbXVsLmMgXAorICBjcnlwdG8vYm4vYm5fbmlzdC5jIFwKKyAgY3J5cHRvL2JuL2JuX3ByaW1lLmMgXAorICBjcnlwdG8vYm4vYm5fcHJpbnQuYyBcCisgIGNyeXB0by9ibi9ibl9yYW5kLmMgXAorICBjcnlwdG8vYm4vYm5fcmVjcC5jIFwKKyAgY3J5cHRvL2JuL2JuX3NoaWZ0LmMgXAorICBjcnlwdG8vYm4vYm5fc3FyLmMgXAorICBjcnlwdG8vYm4vYm5fc3FydC5jIFwKKyAgY3J5cHRvL2JuL2JuX3dvcmQuYyBcCisgIGNyeXB0by9idWZmZXIvYnVmX3N0ci5jIFwKKyAgY3J5cHRvL2J1ZmZlci9idWZmZXIuYyBcCisgIGNyeXB0by9jbWFjL2NtX2FtZXRoLmMgXAorICBjcnlwdG8vY21hYy9jbV9wbWV0aC5jIFwKKyAgY3J5cHRvL2NtYWMvY21hYy5jIFwKKyAgY3J5cHRvL2NyeXB0bGliLmMgXAorICBjcnlwdG8vZGgvZGhfYW1ldGguYyBcCisgIGNyeXB0by9kaC9kaF9hc24xLmMgXAorICBjcnlwdG8vZGgvZGhfY2hlY2suYyBcCisgIGNyeXB0by9kaC9kaF9nZW4uYyBcCisgIGNyeXB0by9kaC9kaF9rZXkuYyBcCisgIGNyeXB0by9kaC9kaF9saWIuYyBcCisgIGNyeXB0by9kaC9kaF9wbWV0aC5jIFwKKyAgY3J5cHRvL2RzYS9kc2FfYW1ldGguYyBcCisgIGNyeXB0by9kc2EvZHNhX2FzbjEuYyBcCisgIGNyeXB0by9kc2EvZHNhX2dlbi5jIFwKKyAgY3J5cHRvL2RzYS9kc2Ffa2V5LmMgXAorICBjcnlwdG8vZHNhL2RzYV9saWIuYyBcCisgIGNyeXB0by9kc2EvZHNhX29zc2wuYyBcCisgIGNyeXB0by9kc2EvZHNhX3BtZXRoLmMgXAorICBjcnlwdG8vZHNhL2RzYV9zaWduLmMgXAorICBjcnlwdG8vZHNhL2RzYV92cmYuYyBcCisgIGNyeXB0by9lYy9lYzJfbXVsdC5jIFwKKyAgY3J5cHRvL2VjL2VjMl9vY3QuYyBcCisgIGNyeXB0by9lYy9lYzJfc21wbC5jIFwKKyAgY3J5cHRvL2VjL2VjX2FtZXRoLmMgXAorICBjcnlwdG8vZWMvZWNfYXNuMS5jIFwKKyAgY3J5cHRvL2VjL2VjX2N1cnZlLmMgXAorICBjcnlwdG8vZWMvZWNfY3Z0LmMgXAorICBjcnlwdG8vZWMvZWNfa2V5LmMgXAorICBjcnlwdG8vZWMvZWNfbGliLmMgXAorICBjcnlwdG8vZWMvZWNfbXVsdC5jIFwKKyAgY3J5cHRvL2VjL2VjX29jdC5jIFwKKyAgY3J5cHRvL2VjL2VjX3BtZXRoLmMgXAorICBjcnlwdG8vZWMvZWNfcHJpbnQuYyBcCisgIGNyeXB0by9lYy9lY2tfcHJuLmMgXAorICBjcnlwdG8vZWMvZWNwX21vbnQuYyBcCisgIGNyeXB0by9lYy9lY3BfbmlzdC5jIFwKKyAgY3J5cHRvL2VjL2VjcF9vY3QuYyBcCisgIGNyeXB0by9lYy9lY3Bfc21wbC5jIFwKKyAgY3J5cHRvL2VjZGgvZWNoX2tleS5jIFwKKyAgY3J5cHRvL2VjZGgvZWNoX2xpYi5jIFwKKyAgY3J5cHRvL2VjZGgvZWNoX29zc2wuYyBcCisgIGNyeXB0by9lY2RzYS9lY3NfYXNuMS5jIFwKKyAgY3J5cHRvL2VjZHNhL2Vjc19saWIuYyBcCisgIGNyeXB0by9lY2RzYS9lY3Nfb3NzbC5jIFwKKyAgY3J5cHRvL2VjZHNhL2Vjc19zaWduLmMgXAorICBjcnlwdG8vZWNkc2EvZWNzX3ZyZi5jIFwKKyAgY3J5cHRvL2VuZ2luZS9lbmdfaW5pdC5jIFwKKyAgY3J5cHRvL2VuZ2luZS9lbmdfbGliLmMgXAorICBjcnlwdG8vZW5naW5lL2VuZ190YWJsZS5jIFwKKyAgY3J5cHRvL2VuZ2luZS90Yl9hc25tdGguYyBcCisgIGNyeXB0by9lbmdpbmUvdGJfY2lwaGVyLmMgXAorICBjcnlwdG8vZW5naW5lL3RiX2RoLmMgXAorICBjcnlwdG8vZW5naW5lL3RiX2RpZ2VzdC5jIFwKKyAgY3J5cHRvL2VuZ2luZS90Yl9kc2EuYyBcCisgIGNyeXB0by9lbmdpbmUvdGJfZWNkaC5jIFwKKyAgY3J5cHRvL2VuZ2luZS90Yl9lY2RzYS5jIFwKKyAgY3J5cHRvL2VuZ2luZS90Yl9wa21ldGguYyBcCisgIGNyeXB0by9lbmdpbmUvdGJfcmFuZC5jIFwKKyAgY3J5cHRvL2VuZ2luZS90Yl9yc2EuYyBcCisgIGNyeXB0by9lcnIvZXJyLmMgXAorICBjcnlwdG8vZXZwL2RpZ2VzdC5jIFwKKyAgY3J5cHRvL2V2cC9lX2Flcy5jIFwKKyAgY3J5cHRvL2V2cC9ldnBfZW5jLmMgXAorICBjcnlwdG8vZXZwL2V2cF9saWIuYyBcCisgIGNyeXB0by9ldnAvZXZwX3BrZXkuYyBcCisgIGNyeXB0by9ldnAvbV9zaGExLmMgXAorICBjcnlwdG8vZXZwL21fc2lndmVyLmMgXAorICBjcnlwdG8vZXZwL25hbWVzLmMgXAorICBjcnlwdG8vZXZwL3BfbGliLmMgXAorICBjcnlwdG8vZXZwL3BtZXRoX2ZuLmMgXAorICBjcnlwdG8vZXZwL3BtZXRoX2duLmMgXAorICBjcnlwdG8vZXZwL3BtZXRoX2xpYi5jIFwKKyAgY3J5cHRvL2V4X2RhdGEuYyBcCisgIGNyeXB0by9obWFjL2htX2FtZXRoLmMgXAorICBjcnlwdG8vaG1hYy9obV9wbWV0aC5jIFwKKyAgY3J5cHRvL2htYWMvaG1hYy5jIFwKKyAgY3J5cHRvL2xoYXNoL2xoYXNoLmMgXAorICBjcnlwdG8vbWVtLmMgXAorICBjcnlwdG8vbWVtX2Nsci5jIFwKKyAgY3J5cHRvL21lbV9kYmcuYyBcCisgIGNyeXB0by9tb2Rlcy9jYmMxMjguYyBcCisgIGNyeXB0by9tb2Rlcy9jdHIxMjguYyBcCisgIGNyeXB0by9vYmplY3RzL29fbmFtZXMuYyBcCisgIGNyeXB0by9vYmplY3RzL29ial9kYXQuYyBcCisgIGNyeXB0by9vYmplY3RzL29ial94cmVmLmMgXAorICBjcnlwdG8vcGtjczcvcGs3X2xpYi5jIFwKKyAgY3J5cHRvL3JhbmQvbWRfcmFuZC5jIFwKKyAgY3J5cHRvL3JhbmQvcmFuZF9saWIuYyBcCisgIGNyeXB0by9yc2EvcnNhX2FtZXRoLmMgXAorICBjcnlwdG8vcnNhL3JzYV9hc24xLmMgXAorICBjcnlwdG8vcnNhL3JzYV9jaGsuYyBcCisgIGNyeXB0by9yc2EvcnNhX2NycHQuYyBcCisgIGNyeXB0by9yc2EvcnNhX2VheS5jIFwKKyAgY3J5cHRvL3JzYS9yc2FfZ2VuLmMgXAorICBjcnlwdG8vcnNhL3JzYV9saWIuYyBcCisgIGNyeXB0by9yc2EvcnNhX25vbmUuYyBcCisgIGNyeXB0by9yc2EvcnNhX29hZXAuYyBcCisgIGNyeXB0by9yc2EvcnNhX3BrMS5jIFwKKyAgY3J5cHRvL3JzYS9yc2FfcG1ldGguYyBcCisgIGNyeXB0by9yc2EvcnNhX3Bzcy5jIFwKKyAgY3J5cHRvL3JzYS9yc2Ffc2Fvcy5jIFwKKyAgY3J5cHRvL3JzYS9yc2Ffc2lnbi5jIFwKKyAgY3J5cHRvL3JzYS9yc2Ffc3NsLmMgXAorICBjcnlwdG8vcnNhL3JzYV94OTMxLmMgXAorICBjcnlwdG8vc2hhL3NoYTFfb25lLmMgXAorICBjcnlwdG8vc2hhL3NoYTFkZ3N0LmMgXAorICBjcnlwdG8vc2hhL3NoYTI1Ni5jIFwKKyAgY3J5cHRvL3NoYS9zaGE1MTIuYyBcCisgIGNyeXB0by9zdGFjay9zdGFjay5jIFwKKyAgY3J5cHRvL3g1MDkveF9hbGwuYyBcCisgIGNyeXB0by94NTA5djMvdjNfdXRsLmMgXAorCitjb21tb25fY19pbmNsdWRlcyA6PSBcCisgIGV4dGVybmFsL29wZW5zc2wvLiBcCisgIGV4dGVybmFsL29wZW5zc2wvY3J5cHRvIFwKKyAgZXh0ZXJuYWwvb3BlbnNzbC9jcnlwdG8vYXNuMSBcCisgIGV4dGVybmFsL29wZW5zc2wvY3J5cHRvL2V2cCBcCisgIGV4dGVybmFsL29wZW5zc2wvY3J5cHRvL21vZGVzIFwKKyAgZXh0ZXJuYWwvb3BlbnNzbC9pbmNsdWRlIFwKKyAgZXh0ZXJuYWwvb3BlbnNzbC9pbmNsdWRlL29wZW5zc2wgXAorCithcm1fY2ZsYWdzIDo9IFwKKyAgLURBRVNfQVNNIFwKKyAgLURHSEFTSF9BU00gXAorICAtRE9QRU5TU0xfQk5fQVNNX0dGMm0gXAorICAtRE9QRU5TU0xfQk5fQVNNX01PTlQgXAorICAtRFNIQTFfQVNNIFwKKyAgLURTSEEyNTZfQVNNIFwKKyAgLURTSEE1MTJfQVNNIFwKKworYXJtX3NyY19maWxlcyA6PSBcCisgIGNyeXB0by9hZXMvYXNtL2Flcy1hcm12NC5TIFwKKyAgY3J5cHRvL2JuL2FzbS9hcm12NC1nZjJtLlMgXAorICBjcnlwdG8vYm4vYXNtL2FybXY0LW1vbnQuUyBcCisgIGNyeXB0by9zaGEvYXNtL3NoYTEtYXJtdjQtbGFyZ2UuUyBcCisgIGNyeXB0by9zaGEvYXNtL3NoYTI1Ni1hcm12NC5TIFwKKyAgY3J5cHRvL3NoYS9hc20vc2hhNTEyLWFybXY0LlMgXAorCithcm1fZXhjbHVkZV9maWxlcyA6PQorCithcm02NF9jZmxhZ3MgOj0KKworYXJtNjRfc3JjX2ZpbGVzIDo9CisKK2FybTY0X2V4Y2x1ZGVfZmlsZXMgOj0KKworeDg2X2NmbGFncyA6PQorCit4ODZfc3JjX2ZpbGVzIDo9CisKK3g4Nl9leGNsdWRlX2ZpbGVzIDo9CisKK3g4Nl82NF9jZmxhZ3MgOj0KKworeDg2XzY0X3NyY19maWxlcyA6PQorCit4ODZfNjRfZXhjbHVkZV9maWxlcyA6PQorCittaXBzX2NmbGFncyA6PQorCittaXBzX3NyY19maWxlcyA6PQorCittaXBzX2V4Y2x1ZGVfZmlsZXMgOj0KKworCitMT0NBTF9DRkxBR1MgKz0gJChjb21tb25fY2ZsYWdzKQorTE9DQUxfQ19JTkNMVURFUyArPSAkKGNvbW1vbl9jX2luY2x1ZGVzKQorCitMT0NBTF9TUkNfRklMRVNfYXJtICs9ICQoZmlsdGVyLW91dCAkKGFybV9leGNsdWRlX2ZpbGVzKSwkKGNvbW1vbl9zcmNfZmlsZXMpICQoYXJtX3NyY19maWxlcykpCitMT0NBTF9DRkxBR1NfYXJtICs9ICQoYXJtX2NmbGFncykKKworTE9DQUxfU1JDX0ZJTEVTX2FybTY0ICs9ICQoZmlsdGVyLW91dCAkKGFybTY0X2V4Y2x1ZGVfZmlsZXMpLCQoY29tbW9uX3NyY19maWxlcykgJChhcm02NF9zcmNfZmlsZXMpKQorTE9DQUxfQ0ZMQUdTX2FybTY0ICs9ICQoYXJtNjRfY2ZsYWdzKQorCitMT0NBTF9TUkNfRklMRVNfeDg2ICs9ICQoZmlsdGVyLW91dCAkKHg4Nl9leGNsdWRlX2ZpbGVzKSwkKGNvbW1vbl9zcmNfZmlsZXMpICQoeDg2X3NyY19maWxlcykpCitMT0NBTF9DRkxBR1NfeDg2ICs9ICQoeDg2X2NmbGFncykKKworTE9DQUxfU1JDX0ZJTEVTX3g4Nl82NCArPSAkKGZpbHRlci1vdXQgJCh4ODZfNjRfZXhjbHVkZV9maWxlcyksJChjb21tb25fc3JjX2ZpbGVzKSAkKHg4Nl82NF9zcmNfZmlsZXMpKQorTE9DQUxfQ0ZMQUdTX3g4Nl82NCArPSAkKHg4Nl82NF9jZmxhZ3MpCisKK0xPQ0FMX1NSQ19GSUxFU19taXBzICs9ICQoZmlsdGVyLW91dCAkKG1pcHNfZXhjbHVkZV9maWxlcyksJChjb21tb25fc3JjX2ZpbGVzKSAkKG1pcHNfc3JjX2ZpbGVzKSkKK0xPQ0FMX0NGTEFHU19taXBzICs9ICQobWlwc19jZmxhZ3MpCmRpZmYgLS1naXQgYS9DcnlwdG8ubWsgYi9DcnlwdG8ubWsKaW5kZXggYmNmZDE0MS4uYzBjZWYyNSAxMDA2NDQKLS0tIGEvQ3J5cHRvLm1rCisrKyBiL0NyeXB0by5tawpAQCAtMSwzOSArMSwyNiBAQAotbG9jYWxfY19mbGFncyA6PQotCi1sb2NhbF9jX2luY2x1ZGVzIDo9ICQobG9nX2NfaW5jbHVkZXMpCi0KLWxvY2FsX2FkZGl0aW9uYWxfZGVwZW5kZW5jaWVzIDo9ICQoTE9DQUxfUEFUSCkvYW5kcm9pZC1jb25maWcubWsgJChMT0NBTF9QQVRIKS9DcnlwdG8ubWsKLQotaW5jbHVkZSAkKExPQ0FMX1BBVEgpL0NyeXB0by1jb25maWcubWsKLQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIHRhcmdldCBzdGF0aWMgbGlicmFyeQogaW5jbHVkZSAkKENMRUFSX1ZBUlMpCi1pbmNsdWRlICQoTE9DQUxfUEFUSCkvYW5kcm9pZC1jb25maWcubWsKLQogTE9DQUxfU0hBUkVEX0xJQlJBUklFUyA6PSAkKGxvZ19zaGFyZWRfbGlicmFyaWVzKQogCiAjIFRoZSBzdGF0aWMgbGlicmFyeSBzaG91bGQgYmUgdXNlZCBpbiBvbmx5IHVuYnVuZGxlZCBhcHBzCiAjIGFuZCB3ZSBkb24ndCBoYXZlIGNsYW5nIGluIHVuYnVuZGxlZCBidWlsZCB5ZXQuCi1pZmVxICgkKFRBUkdFVF9BUkNIKSxhcm02NCkKLSQoaW5mbyBUT0RPQXJtNjQ6ICQoTE9DQUxfUEFUSCkvQW5kcm9pZC5tayA6IFVzZSBOREsgb25jZSBpdCBpcyBhdmFpbGFibGUgZm9yIEFybTY0KQotZWxzZQogTE9DQUxfU0RLX1ZFUlNJT04gOj0gOQotZW5kaWYKIAotTE9DQUxfU1JDX0ZJTEVTICs9ICQodGFyZ2V0X3NyY19maWxlcykKLUxPQ0FMX0NGTEFHUyArPSAkKHRhcmdldF9jX2ZsYWdzKQotTE9DQUxfQ19JTkNMVURFUyArPSAkKHRhcmdldF9jX2luY2x1ZGVzKQogTE9DQUxfTU9EVUxFX1RBR1MgOj0gb3B0aW9uYWwKLUxPQ0FMX01PRFVMRTo9IGxpYmNyeXB0b19zdGF0aWMKLUxPQ0FMX0FERElUSU9OQUxfREVQRU5ERU5DSUVTIDo9ICQobG9jYWxfYWRkaXRpb25hbF9kZXBlbmRlbmNpZXMpCitMT0NBTF9NT0RVTEUgOj0gbGliY3J5cHRvX3N0YXRpYworTE9DQUxfQURESVRJT05BTF9ERVBFTkRFTkNJRVMgOj0gJChMT0NBTF9QQVRIKS9hbmRyb2lkLWNvbmZpZy5tayAkKExPQ0FMX1BBVEgpL0NyeXB0by5taworaW5jbHVkZSAkKExPQ0FMX1BBVEgpL0NyeXB0by1jb25maWctdGFyZ2V0Lm1rCitpbmNsdWRlICQoTE9DQUxfUEFUSCkvYW5kcm9pZC1jb25maWcubWsKKworIyBSZXBsYWNlIGNmbGFncyB3aXRoIHN0YXRpYy1zcGVjaWZpYyBjZmxhZ3Mgc28gd2UgZG9udCBidWlsZCBpbiBsaWJkbCBkZXBzCitMT0NBTF9DRkxBR1NfMzIgOj0gJChvcGVuc3NsX2NmbGFnc19zdGF0aWNfMzIpCitMT0NBTF9DRkxBR1NfNjQgOj0gJChvcGVuc3NsX2NmbGFnc19zdGF0aWNfNjQpCiBpbmNsdWRlICQoQlVJTERfU1RBVElDX0xJQlJBUlkpCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyB0YXJnZXQgc2hhcmVkIGxpYnJhcnkKIGluY2x1ZGUgJChDTEVBUl9WQVJTKQotaW5jbHVkZSAkKExPQ0FMX1BBVEgpL2FuZHJvaWQtY29uZmlnLm1rCi0KIExPQ0FMX1NIQVJFRF9MSUJSQVJJRVMgOj0gJChsb2dfc2hhcmVkX2xpYnJhcmllcykKIAogIyBJZiB3ZSdyZSBidWlsZGluZyBhbiB1bmJ1bmRsZWQgYnVpbGQsIGRvbid0IHRyeSB0byB1c2UgY2xhbmcgc2luY2UgaXQncyBub3QKQEAgLTQxLDQ0ICsyOCw0NiBAQAogIyBpbiB0aGUgTkRLLgogaWZlcSAoLCQoVEFSR0VUX0JVSUxEX0FQUFMpKQogTE9DQUxfQ0xBTkcgOj0gdHJ1ZQoraWZlcSAoJChIT1NUX09TKSwgZGFyd2luKQorTE9DQUxfQVNGTEFHUyArPSAtbm8taW50ZWdyYXRlZC1hcworTE9DQUxfQ0ZMQUdTICs9IC1uby1pbnRlZ3JhdGVkLWFzCitlbmRpZgogZWxzZQogTE9DQUxfU0RLX1ZFUlNJT04gOj0gOQogZW5kaWYKIExPQ0FMX0xERkxBR1MgKz0gLWxkbAogCi1MT0NBTF9TUkNfRklMRVMgKz0gJCh0YXJnZXRfc3JjX2ZpbGVzKQotTE9DQUxfQ0ZMQUdTICs9ICQodGFyZ2V0X2NfZmxhZ3MpCi1MT0NBTF9DX0lOQ0xVREVTICs9ICQodGFyZ2V0X2NfaW5jbHVkZXMpCiBMT0NBTF9NT0RVTEVfVEFHUyA6PSBvcHRpb25hbAotTE9DQUxfTU9EVUxFOj0gbGliY3J5cHRvCi1MT0NBTF9BRERJVElPTkFMX0RFUEVOREVOQ0lFUyA6PSAkKGxvY2FsX2FkZGl0aW9uYWxfZGVwZW5kZW5jaWVzKQorTE9DQUxfTU9EVUxFIDo9IGxpYmNyeXB0bworTE9DQUxfQURESVRJT05BTF9ERVBFTkRFTkNJRVMgOj0gJChMT0NBTF9QQVRIKS9hbmRyb2lkLWNvbmZpZy5tayAkKExPQ0FMX1BBVEgpL0NyeXB0by5taworaW5jbHVkZSAkKExPQ0FMX1BBVEgpL0NyeXB0by1jb25maWctdGFyZ2V0Lm1rCitpbmNsdWRlICQoTE9DQUxfUEFUSCkvYW5kcm9pZC1jb25maWcubWsKIGluY2x1ZGUgJChCVUlMRF9TSEFSRURfTElCUkFSWSkKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIGhvc3Qgc2hhcmVkIGxpYnJhcnkKIGluY2x1ZGUgJChDTEVBUl9WQVJTKQotaW5jbHVkZSAkKExPQ0FMX1BBVEgpL2FuZHJvaWQtY29uZmlnLm1rCiBMT0NBTF9TSEFSRURfTElCUkFSSUVTIDo9ICQobG9nX3NoYXJlZF9saWJyYXJpZXMpCi1MT0NBTF9TUkNfRklMRVMgKz0gJChob3N0X3NyY19maWxlcykKLUxPQ0FMX0NGTEFHUyArPSAkKGhvc3RfY19mbGFncykgLURQVVJJRlkKLUxPQ0FMX0NfSU5DTFVERVMgKz0gJChob3N0X2NfaW5jbHVkZXMpCitMT0NBTF9DRkxBR1MgKz0gLURQVVJJRlkKIExPQ0FMX0xETElCUyArPSAtbGRsCiBMT0NBTF9NT0RVTEVfVEFHUyA6PSBvcHRpb25hbAotTE9DQUxfTU9EVUxFOj0gbGliY3J5cHRvLWhvc3QKLUxPQ0FMX0FERElUSU9OQUxfREVQRU5ERU5DSUVTIDo9ICQobG9jYWxfYWRkaXRpb25hbF9kZXBlbmRlbmNpZXMpCitMT0NBTF9NT0RVTEUgOj0gbGliY3J5cHRvLWhvc3QKK0xPQ0FMX0FERElUSU9OQUxfREVQRU5ERU5DSUVTIDo9ICQoTE9DQUxfUEFUSCkvYW5kcm9pZC1jb25maWcubWsgJChMT0NBTF9QQVRIKS9DcnlwdG8ubWsKK0xPQ0FMX01VTFRJTElCIDo9IGJvdGgKK2luY2x1ZGUgJChMT0NBTF9QQVRIKS9DcnlwdG8tY29uZmlnLWhvc3QubWsKK2luY2x1ZGUgJChMT0NBTF9QQVRIKS9hbmRyb2lkLWNvbmZpZy5tawogaW5jbHVkZSAkKEJVSUxEX0hPU1RfU0hBUkVEX0xJQlJBUlkpCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgaG9zdCBzdGF0aWMgbGlicmFyeSwgd2hpY2ggaXMgdXNlZCBieSBzb21lIFNESyB0b29scy4KIAogaW5jbHVkZSAkKENMRUFSX1ZBUlMpCi1pbmNsdWRlICQoTE9DQUxfUEFUSCkvYW5kcm9pZC1jb25maWcubWsKIExPQ0FMX1NIQVJFRF9MSUJSQVJJRVMgOj0gJChsb2dfc2hhcmVkX2xpYnJhcmllcykKLUxPQ0FMX1NSQ19GSUxFUyArPSAkKGhvc3Rfc3JjX2ZpbGVzKQotTE9DQUxfQ0ZMQUdTICs9ICQoaG9zdF9jX2ZsYWdzKSAtRFBVUklGWQotTE9DQUxfQ19JTkNMVURFUyArPSAkKGhvc3RfY19pbmNsdWRlcykKK0xPQ0FMX0NGTEFHUyArPSAtRFBVUklGWQogTE9DQUxfTERMSUJTICs9IC1sZGwKIExPQ0FMX01PRFVMRV9UQUdTIDo9IG9wdGlvbmFsCi1MT0NBTF9NT0RVTEU6PSBsaWJjcnlwdG9fc3RhdGljCi1MT0NBTF9BRERJVElPTkFMX0RFUEVOREVOQ0lFUyA6PSAkKGxvY2FsX2FkZGl0aW9uYWxfZGVwZW5kZW5jaWVzKQorTE9DQUxfTU9EVUxFIDo9IGxpYmNyeXB0b19zdGF0aWMKK0xPQ0FMX0FERElUSU9OQUxfREVQRU5ERU5DSUVTIDo9ICQoTE9DQUxfUEFUSCkvYW5kcm9pZC1jb25maWcubWsgJChMT0NBTF9QQVRIKS9DcnlwdG8ubWsKK2luY2x1ZGUgJChMT0NBTF9QQVRIKS9DcnlwdG8tY29uZmlnLWhvc3QubWsKK2luY2x1ZGUgJChMT0NBTF9QQVRIKS9hbmRyb2lkLWNvbmZpZy5tawogaW5jbHVkZSAkKEJVSUxEX0hPU1RfU1RBVElDX0xJQlJBUlkpCmRpZmYgLS1naXQgYS9Tc2wtY29uZmlnLWhvc3QubWsgYi9Tc2wtY29uZmlnLWhvc3QubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTdlYTM3NwotLS0gL2Rldi9udWxsCisrKyBiL1NzbC1jb25maWctaG9zdC5tawpAQCAtMCwwICsxLDExMyBAQAorIyBBdXRvLWdlbmVyYXRlZCAtIERPIE5PVCBFRElUIQorIyBUbyByZWdlbmVyYXRlLCBlZGl0IG9wZW5zc2wuY29uZmlnLCB0aGVuIHJ1bjoKKyMgICAgIC4vaW1wb3J0X29wZW5zc2wuc2ggaW1wb3J0IC9wYXRoL3RvL29wZW5zc2wtMS4wLjFoLnRhci5negorIworIyBUaGlzIHNjcmlwdCB3aWxsIGFwcGVuZCB0byB0aGUgZm9sbG93aW5nIHZhcmlhYmxlczoKKyMKKyMgICAgTE9DQUxfQ0ZMQUdTCisjICAgIExPQ0FMX0NfSU5DTFVERVMKKyMgICAgTE9DQUxfU1JDX0ZJTEVTXyQoVEFSR0VUX0FSQ0gpCisjICAgIExPQ0FMX1NSQ19GSUxFU18kKFRBUkdFVF8yTkRfQVJDSCkKKyMgICAgTE9DQUxfQ0ZMQUdTXyQoVEFSR0VUX0FSQ0gpCisjICAgIExPQ0FMX0NGTEFHU18kKFRBUkdFVF8yTkRfQVJDSCkKKyMgICAgTE9DQUxfQURESVRJT05BTF9ERVBFTkRFTkNJRVMKKworCitMT0NBTF9BRERJVElPTkFMX0RFUEVOREVOQ0lFUyArPSAkKExPQ0FMX1BBVEgpL1NzbC1jb25maWctaG9zdC5taworCitjb21tb25fY2ZsYWdzIDo9CisKK2NvbW1vbl9zcmNfZmlsZXMgOj0gXAorICBzc2wvYmlvX3NzbC5jIFwKKyAgc3NsL2QxX2JvdGguYyBcCisgIHNzbC9kMV9lbmMuYyBcCisgIHNzbC9kMV9saWIuYyBcCisgIHNzbC9kMV9wa3QuYyBcCisgIHNzbC9kMV9zcnRwLmMgXAorICBzc2wva3NzbC5jIFwKKyAgc3NsL3MyM19jbG50LmMgXAorICBzc2wvczIzX2xpYi5jIFwKKyAgc3NsL3MyM19tZXRoLmMgXAorICBzc2wvczIzX3BrdC5jIFwKKyAgc3NsL3MyM19zcnZyLmMgXAorICBzc2wvczJfY2xudC5jIFwKKyAgc3NsL3MyX2VuYy5jIFwKKyAgc3NsL3MyX2xpYi5jIFwKKyAgc3NsL3MyX21ldGguYyBcCisgIHNzbC9zMl9wa3QuYyBcCisgIHNzbC9zMl9zcnZyLmMgXAorICBzc2wvczNfYm90aC5jIFwKKyAgc3NsL3MzX2NiYy5jIFwKKyAgc3NsL3MzX2NsbnQuYyBcCisgIHNzbC9zM19lbmMuYyBcCisgIHNzbC9zM19saWIuYyBcCisgIHNzbC9zM19tZXRoLmMgXAorICBzc2wvczNfcGt0LmMgXAorICBzc2wvczNfc3J2ci5jIFwKKyAgc3NsL3NzbF9hbGdzLmMgXAorICBzc2wvc3NsX2FzbjEuYyBcCisgIHNzbC9zc2xfY2VydC5jIFwKKyAgc3NsL3NzbF9jaXBoLmMgXAorICBzc2wvc3NsX2Vyci5jIFwKKyAgc3NsL3NzbF9lcnIyLmMgXAorICBzc2wvc3NsX2xpYi5jIFwKKyAgc3NsL3NzbF9yc2EuYyBcCisgIHNzbC9zc2xfc2Vzcy5jIFwKKyAgc3NsL3NzbF9zdGF0LmMgXAorICBzc2wvc3NsX3R4dC5jIFwKKyAgc3NsL3QxX2NsbnQuYyBcCisgIHNzbC90MV9lbmMuYyBcCisgIHNzbC90MV9saWIuYyBcCisgIHNzbC90MV9tZXRoLmMgXAorICBzc2wvdDFfcmVuZWcuYyBcCisgIHNzbC90MV9zcnZyLmMgXAorICBzc2wvdGxzX3NycC5jIFwKKworY29tbW9uX2NfaW5jbHVkZXMgOj0gXAorICBleHRlcm5hbC9vcGVuc3NsLy4gXAorICBleHRlcm5hbC9vcGVuc3NsL2NyeXB0byBcCisgIGV4dGVybmFsL29wZW5zc2wvaW5jbHVkZSBcCisKK2FybV9jZmxhZ3MgOj0KKworYXJtX3NyY19maWxlcyA6PQorCithcm1fZXhjbHVkZV9maWxlcyA6PQorCithcm02NF9jZmxhZ3MgOj0KKworYXJtNjRfc3JjX2ZpbGVzIDo9CisKK2FybTY0X2V4Y2x1ZGVfZmlsZXMgOj0KKworeDg2X2NmbGFncyA6PQorCit4ODZfc3JjX2ZpbGVzIDo9CisKK3g4Nl9leGNsdWRlX2ZpbGVzIDo9CisKK3g4Nl82NF9jZmxhZ3MgOj0KKworeDg2XzY0X3NyY19maWxlcyA6PQorCit4ODZfNjRfZXhjbHVkZV9maWxlcyA6PQorCittaXBzX2NmbGFncyA6PQorCittaXBzX3NyY19maWxlcyA6PQorCittaXBzX2V4Y2x1ZGVfZmlsZXMgOj0KKworCitMT0NBTF9DRkxBR1MgKz0gJChjb21tb25fY2ZsYWdzKQorTE9DQUxfQ19JTkNMVURFUyArPSAkKGNvbW1vbl9jX2luY2x1ZGVzKSAkKGxvY2FsX2NfaW5jbHVkZXMpCisKK2lmZXEgKCQoSE9TVF9PUyksbGludXgpCitMT0NBTF9DRkxBR1NfeDg2ICs9ICQoeDg2X2NmbGFncykKK0xPQ0FMX1NSQ19GSUxFU194ODYgKz0gJChmaWx0ZXItb3V0ICQoeDg2X2V4Y2x1ZGVfZmlsZXMpLCAkKGNvbW1vbl9zcmNfZmlsZXMpICQoeDg2X3NyY19maWxlcykpCitMT0NBTF9DRkxBR1NfeDg2XzY0ICs9ICQoeDg2XzY0X2NmbGFncykKK0xPQ0FMX1NSQ19GSUxFU194ODZfNjQgKz0gJChmaWx0ZXItb3V0ICQoeDg2XzY0X2V4Y2x1ZGVfZmlsZXMpLCAkKGNvbW1vbl9zcmNfZmlsZXMpICQoeDg2XzY0X3NyY19maWxlcykpCitlbHNlCiskKHdhcm5pbmcgVW5rbm93biBob3N0IE9TICQoSE9TVF9PUykpCitMT0NBTF9TUkNfRklMRVMgKz0gJChjb21tb25fc3JjX2ZpbGVzKQorZW5kaWYKZGlmZiAtLWdpdCBhL1NzbC1jb25maWctdGFyZ2V0Lm1rIGIvU3NsLWNvbmZpZy10YXJnZXQubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjM5ZTMyOQotLS0gL2Rldi9udWxsCisrKyBiL1NzbC1jb25maWctdGFyZ2V0Lm1rCkBAIC0wLDAgKzEsMTE4IEBACisjIEF1dG8tZ2VuZXJhdGVkIC0gRE8gTk9UIEVESVQhCisjIFRvIHJlZ2VuZXJhdGUsIGVkaXQgb3BlbnNzbC5jb25maWcsIHRoZW4gcnVuOgorIyAgICAgLi9pbXBvcnRfb3BlbnNzbC5zaCBpbXBvcnQgL3BhdGgvdG8vb3BlbnNzbC0xLjAuMWgudGFyLmd6CisjCisjIFRoaXMgc2NyaXB0IHdpbGwgYXBwZW5kIHRvIHRoZSBmb2xsb3dpbmcgdmFyaWFibGVzOgorIworIyAgICBMT0NBTF9DRkxBR1MKKyMgICAgTE9DQUxfQ19JTkNMVURFUworIyAgICBMT0NBTF9TUkNfRklMRVNfJChUQVJHRVRfQVJDSCkKKyMgICAgTE9DQUxfU1JDX0ZJTEVTXyQoVEFSR0VUXzJORF9BUkNIKQorIyAgICBMT0NBTF9DRkxBR1NfJChUQVJHRVRfQVJDSCkKKyMgICAgTE9DQUxfQ0ZMQUdTXyQoVEFSR0VUXzJORF9BUkNIKQorIyAgICBMT0NBTF9BRERJVElPTkFMX0RFUEVOREVOQ0lFUworCisKK0xPQ0FMX0FERElUSU9OQUxfREVQRU5ERU5DSUVTICs9ICQoTE9DQUxfUEFUSCkvU3NsLWNvbmZpZy10YXJnZXQubWsKKworY29tbW9uX2NmbGFncyA6PQorCitjb21tb25fc3JjX2ZpbGVzIDo9IFwKKyAgc3NsL2Jpb19zc2wuYyBcCisgIHNzbC9kMV9ib3RoLmMgXAorICBzc2wvZDFfZW5jLmMgXAorICBzc2wvZDFfbGliLmMgXAorICBzc2wvZDFfcGt0LmMgXAorICBzc2wvZDFfc3J0cC5jIFwKKyAgc3NsL2tzc2wuYyBcCisgIHNzbC9zMjNfY2xudC5jIFwKKyAgc3NsL3MyM19saWIuYyBcCisgIHNzbC9zMjNfbWV0aC5jIFwKKyAgc3NsL3MyM19wa3QuYyBcCisgIHNzbC9zMjNfc3J2ci5jIFwKKyAgc3NsL3MyX2NsbnQuYyBcCisgIHNzbC9zMl9lbmMuYyBcCisgIHNzbC9zMl9saWIuYyBcCisgIHNzbC9zMl9tZXRoLmMgXAorICBzc2wvczJfcGt0LmMgXAorICBzc2wvczJfc3J2ci5jIFwKKyAgc3NsL3MzX2JvdGguYyBcCisgIHNzbC9zM19jYmMuYyBcCisgIHNzbC9zM19jbG50LmMgXAorICBzc2wvczNfZW5jLmMgXAorICBzc2wvczNfbGliLmMgXAorICBzc2wvczNfbWV0aC5jIFwKKyAgc3NsL3MzX3BrdC5jIFwKKyAgc3NsL3MzX3NydnIuYyBcCisgIHNzbC9zc2xfYWxncy5jIFwKKyAgc3NsL3NzbF9hc24xLmMgXAorICBzc2wvc3NsX2NlcnQuYyBcCisgIHNzbC9zc2xfY2lwaC5jIFwKKyAgc3NsL3NzbF9lcnIuYyBcCisgIHNzbC9zc2xfZXJyMi5jIFwKKyAgc3NsL3NzbF9saWIuYyBcCisgIHNzbC9zc2xfcnNhLmMgXAorICBzc2wvc3NsX3Nlc3MuYyBcCisgIHNzbC9zc2xfc3RhdC5jIFwKKyAgc3NsL3NzbF90eHQuYyBcCisgIHNzbC90MV9jbG50LmMgXAorICBzc2wvdDFfZW5jLmMgXAorICBzc2wvdDFfbGliLmMgXAorICBzc2wvdDFfbWV0aC5jIFwKKyAgc3NsL3QxX3JlbmVnLmMgXAorICBzc2wvdDFfc3J2ci5jIFwKKyAgc3NsL3Rsc19zcnAuYyBcCisKK2NvbW1vbl9jX2luY2x1ZGVzIDo9IFwKKyAgZXh0ZXJuYWwvb3BlbnNzbC8uIFwKKyAgZXh0ZXJuYWwvb3BlbnNzbC9jcnlwdG8gXAorICBleHRlcm5hbC9vcGVuc3NsL2luY2x1ZGUgXAorCithcm1fY2ZsYWdzIDo9CisKK2FybV9zcmNfZmlsZXMgOj0KKworYXJtX2V4Y2x1ZGVfZmlsZXMgOj0KKworYXJtNjRfY2ZsYWdzIDo9CisKK2FybTY0X3NyY19maWxlcyA6PQorCithcm02NF9leGNsdWRlX2ZpbGVzIDo9CisKK3g4Nl9jZmxhZ3MgOj0KKworeDg2X3NyY19maWxlcyA6PQorCit4ODZfZXhjbHVkZV9maWxlcyA6PQorCit4ODZfNjRfY2ZsYWdzIDo9CisKK3g4Nl82NF9zcmNfZmlsZXMgOj0KKworeDg2XzY0X2V4Y2x1ZGVfZmlsZXMgOj0KKworbWlwc19jZmxhZ3MgOj0KKworbWlwc19zcmNfZmlsZXMgOj0KKworbWlwc19leGNsdWRlX2ZpbGVzIDo9CisKKworTE9DQUxfQ0ZMQUdTICs9ICQoY29tbW9uX2NmbGFncykKK0xPQ0FMX0NfSU5DTFVERVMgKz0gJChjb21tb25fY19pbmNsdWRlcykKKworTE9DQUxfU1JDX0ZJTEVTX2FybSArPSAkKGZpbHRlci1vdXQgJChhcm1fZXhjbHVkZV9maWxlcyksJChjb21tb25fc3JjX2ZpbGVzKSAkKGFybV9zcmNfZmlsZXMpKQorTE9DQUxfQ0ZMQUdTX2FybSArPSAkKGFybV9jZmxhZ3MpCisKK0xPQ0FMX1NSQ19GSUxFU19hcm02NCArPSAkKGZpbHRlci1vdXQgJChhcm02NF9leGNsdWRlX2ZpbGVzKSwkKGNvbW1vbl9zcmNfZmlsZXMpICQoYXJtNjRfc3JjX2ZpbGVzKSkKK0xPQ0FMX0NGTEFHU19hcm02NCArPSAkKGFybTY0X2NmbGFncykKKworTE9DQUxfU1JDX0ZJTEVTX3g4NiArPSAkKGZpbHRlci1vdXQgJCh4ODZfZXhjbHVkZV9maWxlcyksJChjb21tb25fc3JjX2ZpbGVzKSAkKHg4Nl9zcmNfZmlsZXMpKQorTE9DQUxfQ0ZMQUdTX3g4NiArPSAkKHg4Nl9jZmxhZ3MpCisKK0xPQ0FMX1NSQ19GSUxFU194ODZfNjQgKz0gJChmaWx0ZXItb3V0ICQoeDg2XzY0X2V4Y2x1ZGVfZmlsZXMpLCQoY29tbW9uX3NyY19maWxlcykgJCh4ODZfNjRfc3JjX2ZpbGVzKSkKK0xPQ0FMX0NGTEFHU194ODZfNjQgKz0gJCh4ODZfNjRfY2ZsYWdzKQorCitMT0NBTF9TUkNfRklMRVNfbWlwcyArPSAkKGZpbHRlci1vdXQgJChtaXBzX2V4Y2x1ZGVfZmlsZXMpLCQoY29tbW9uX3NyY19maWxlcykgJChtaXBzX3NyY19maWxlcykpCitMT0NBTF9DRkxBR1NfbWlwcyArPSAkKG1pcHNfY2ZsYWdzKQpkaWZmIC0tZ2l0IGEvU3NsLWNvbmZpZy5tayBiL1NzbC1jb25maWcubWsKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwN2MxMDAuLjAwMDAwMDAKLS0tIGEvU3NsLWNvbmZpZy5taworKysgL2Rldi9udWxsCkBAIC0xLDEzNCArMCwwIEBACi0jIEF1dG8tZ2VuZXJhdGVkIC0gRE8gTk9UIEVESVQhCi0jIFRvIHJlZ2VuZXJhdGUsIGVkaXQgb3BlbnNzbC5jb25maWcsIHRoZW4gcnVuOgotIyAgICAgLi9pbXBvcnRfb3BlbnNzbC5zaCBpbXBvcnQgL3BhdGgvdG8vb3BlbnNzbC0xLjAuMWYudGFyLmd6Ci0jCi0jIEJlZm9yZSBpbmNsdWRpbmcgdGhpcyBmaWxlLCB0aGUgbG9jYWwgQW5kcm9pZC5tayBtdXN0IGRlZmluZSB0aGUgZm9sbG93aW5nCi0jIHZhcmlhYmxlczoKLSMKLSMgICAgbG9jYWxfY19mbGFncwotIyAgICBsb2NhbF9jX2luY2x1ZGVzCi0jICAgIGxvY2FsX2FkZGl0aW9uYWxfZGVwZW5kZW5jaWVzCi0jCi0jIFRoaXMgc2NyaXB0IHdpbGwgZGVmaW5lIHRoZSBmb2xsb3dpbmcgdmFyaWFibGVzOgotIwotIyAgICB0YXJnZXRfY19mbGFncwotIyAgICB0YXJnZXRfY19pbmNsdWRlcwotIyAgICB0YXJnZXRfc3JjX2ZpbGVzCi0jCi0jICAgIGhvc3RfY19mbGFncwotIyAgICBob3N0X2NfaW5jbHVkZXMKLSMgICAgaG9zdF9zcmNfZmlsZXMKLSMKLQotIyBFbnN1cmUgdGhlc2UgYXJlIGVtcHR5LgotdW5rbm93bl9hcmNoX2NfZmxhZ3MgOj0KLXVua25vd25fYXJjaF9zcmNfZmlsZXMgOj0KLXVua25vd25fYXJjaF9leGNsdWRlX2ZpbGVzIDo9Ci0KLQotY29tbW9uX2NfZmxhZ3MgOj0KLQotY29tbW9uX3NyY19maWxlcyA6PSBcCi0gIHNzbC9iaW9fc3NsLmMgXAotICBzc2wvZDFfYm90aC5jIFwKLSAgc3NsL2QxX2VuYy5jIFwKLSAgc3NsL2QxX2xpYi5jIFwKLSAgc3NsL2QxX3BrdC5jIFwKLSAgc3NsL2QxX3NydHAuYyBcCi0gIHNzbC9rc3NsLmMgXAotICBzc2wvczIzX2NsbnQuYyBcCi0gIHNzbC9zMjNfbGliLmMgXAotICBzc2wvczIzX21ldGguYyBcCi0gIHNzbC9zMjNfcGt0LmMgXAotICBzc2wvczIzX3NydnIuYyBcCi0gIHNzbC9zMl9jbG50LmMgXAotICBzc2wvczJfZW5jLmMgXAotICBzc2wvczJfbGliLmMgXAotICBzc2wvczJfbWV0aC5jIFwKLSAgc3NsL3MyX3BrdC5jIFwKLSAgc3NsL3MyX3NydnIuYyBcCi0gIHNzbC9zM19ib3RoLmMgXAotICBzc2wvczNfY2JjLmMgXAotICBzc2wvczNfY2xudC5jIFwKLSAgc3NsL3MzX2VuYy5jIFwKLSAgc3NsL3MzX2xpYi5jIFwKLSAgc3NsL3MzX21ldGguYyBcCi0gIHNzbC9zM19wa3QuYyBcCi0gIHNzbC9zM19zcnZyLmMgXAotICBzc2wvc3NsX2FsZ3MuYyBcCi0gIHNzbC9zc2xfYXNuMS5jIFwKLSAgc3NsL3NzbF9jZXJ0LmMgXAotICBzc2wvc3NsX2NpcGguYyBcCi0gIHNzbC9zc2xfZXJyLmMgXAotICBzc2wvc3NsX2VycjIuYyBcCi0gIHNzbC9zc2xfbGliLmMgXAotICBzc2wvc3NsX3JzYS5jIFwKLSAgc3NsL3NzbF9zZXNzLmMgXAotICBzc2wvc3NsX3N0YXQuYyBcCi0gIHNzbC9zc2xfdHh0LmMgXAotICBzc2wvdDFfY2xudC5jIFwKLSAgc3NsL3QxX2VuYy5jIFwKLSAgc3NsL3QxX2xpYi5jIFwKLSAgc3NsL3QxX21ldGguYyBcCi0gIHNzbC90MV9yZW5lZy5jIFwKLSAgc3NsL3QxX3NydnIuYyBcCi0gIHNzbC90bHNfc3JwLmMgXAotCi1jb21tb25fY19pbmNsdWRlcyA6PSBcCi0gIC4gXAotICBjcnlwdG8gXAotICBpbmNsdWRlIFwKLQotYXJtX2NfZmxhZ3MgOj0KLQotYXJtX3NyY19maWxlcyA6PQotCi1hcm1fZXhjbHVkZV9maWxlcyA6PQotCi1hcm02NF9jX2ZsYWdzIDo9Ci0KLWFybTY0X3NyY19maWxlcyA6PQotCi1hcm02NF9leGNsdWRlX2ZpbGVzIDo9Ci0KLXg4Nl9jX2ZsYWdzIDo9Ci0KLXg4Nl9zcmNfZmlsZXMgOj0KLQoteDg2X2V4Y2x1ZGVfZmlsZXMgOj0KLQoteDg2XzY0X2NfZmxhZ3MgOj0KLQoteDg2XzY0X3NyY19maWxlcyA6PQotCi14ODZfNjRfZXhjbHVkZV9maWxlcyA6PQotCi1taXBzX2NfZmxhZ3MgOj0KLQotbWlwc19zcmNfZmlsZXMgOj0KLQotbWlwc19leGNsdWRlX2ZpbGVzIDo9Ci0KLXRhcmdldF9hcmNoIDo9ICQoVEFSR0VUX0FSQ0gpCi1pZmVxICgkKHRhcmdldF9hcmNoKS0kKFRBUkdFVF9IQVNfQklHRU5ESUFOKSxtaXBzLXRydWUpCi10YXJnZXRfYXJjaCA6PSB1bmtub3duX2FyY2gKLWVuZGlmCi0KLXRhcmdldF9jX2ZsYWdzICAgIDo9ICQoY29tbW9uX2NfZmxhZ3MpICQoJCh0YXJnZXRfYXJjaClfY19mbGFncykgJChsb2NhbF9jX2ZsYWdzKQotdGFyZ2V0X2NfaW5jbHVkZXMgOj0gJChhZGRwcmVmaXggZXh0ZXJuYWwvb3BlbnNzbC8sJChjb21tb25fY19pbmNsdWRlcykpICQobG9jYWxfY19pbmNsdWRlcykKLXRhcmdldF9zcmNfZmlsZXMgIDo9ICQoY29tbW9uX3NyY19maWxlcykgJCgkKHRhcmdldF9hcmNoKV9zcmNfZmlsZXMpCi10YXJnZXRfc3JjX2ZpbGVzICA6PSAkKGZpbHRlci1vdXQgJCgkKHRhcmdldF9hcmNoKV9leGNsdWRlX2ZpbGVzKSwgJCh0YXJnZXRfc3JjX2ZpbGVzKSkKLQotaWZlcSAoJChIT1NUX09TKS0kKEhPU1RfQVJDSCksbGludXgteDg2KQotaG9zdF9hcmNoIDo9IHg4NgotZWxzZQotaG9zdF9hcmNoIDo9IHVua25vd25fYXJjaAotZW5kaWYKLQotaG9zdF9jX2ZsYWdzICAgIDo9ICQoY29tbW9uX2NfZmxhZ3MpICQoJChob3N0X2FyY2gpX2NfZmxhZ3MpICQobG9jYWxfY19mbGFncykKLWhvc3RfY19pbmNsdWRlcyA6PSAkKGFkZHByZWZpeCBleHRlcm5hbC9vcGVuc3NsLywkKGNvbW1vbl9jX2luY2x1ZGVzKSkgJChsb2NhbF9jX2luY2x1ZGVzKQotaG9zdF9zcmNfZmlsZXMgIDo9ICQoY29tbW9uX3NyY19maWxlcykgJCgkKGhvc3RfYXJjaClfc3JjX2ZpbGVzKQotaG9zdF9zcmNfZmlsZXMgIDo9ICQoZmlsdGVyLW91dCAkKCQoaG9zdF9hcmNoKV9leGNsdWRlX2ZpbGVzKSwgJChob3N0X3NyY19maWxlcykpCi0KLWxvY2FsX2FkZGl0aW9uYWxfZGVwZW5kZW5jaWVzICs9ICQoTE9DQUxfUEFUSCkvU3NsLWNvbmZpZy5tawotCmRpZmYgLS1naXQgYS9Tc2wubWsgYi9Tc2wubWsKaW5kZXggNGQxZGE0OC4uMjJhNjFlMCAxMDA2NDQKLS0tIGEvU3NsLm1rCisrKyBiL1NzbC5tawpAQCAtMSwzNyArMSwyNSBAQAotbG9jYWxfY19mbGFncyA6PQotCi1sb2NhbF9jX2luY2x1ZGVzIDo9ICQobG9nX2NfaW5jbHVkZXMpCi0KLWxvY2FsX2FkZGl0aW9uYWxfZGVwZW5kZW5jaWVzIDo9ICQoTE9DQUxfUEFUSCkvYW5kcm9pZC1jb25maWcubWsgJChMT0NBTF9QQVRIKS9Tc2wubWsKLQotaW5jbHVkZSAkKExPQ0FMX1BBVEgpL1NzbC1jb25maWcubWsKLQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIHRhcmdldCBzdGF0aWMgbGlicmFyeQogaW5jbHVkZSAkKENMRUFSX1ZBUlMpCi1pbmNsdWRlICQoTE9DQUxfUEFUSCkvYW5kcm9pZC1jb25maWcubWsKIAogIyBUaGUgc3RhdGljIGxpYnJhcnkgc2hvdWxkIGJlIHVzZWQgaW4gb25seSB1bmJ1bmRsZWQgYXBwcwogIyBhbmQgd2UgZG9uJ3QgaGF2ZSBjbGFuZyBpbiB1bmJ1bmRsZWQgYnVpbGQgeWV0LgotaWZlcSAoJChUQVJHRVRfQVJDSCksYXJtNjQpCi0kKGluZm8gVE9ET0FybTY0OiAkKExPQ0FMX1BBVEgpL0FuZHJvaWQubWsgOiBVc2UgTkRLIG9uY2UgaXQgaXMgYXZhaWxhYmxlIGZvciBBcm02NCkKLWVsc2UKIExPQ0FMX1NES19WRVJTSU9OIDo9IDkKLWVuZGlmCiAKIExPQ0FMX1NSQ19GSUxFUyArPSAkKHRhcmdldF9zcmNfZmlsZXMpCiBMT0NBTF9DRkxBR1MgKz0gJCh0YXJnZXRfY19mbGFncykKIExPQ0FMX0NfSU5DTFVERVMgKz0gJCh0YXJnZXRfY19pbmNsdWRlcykKIExPQ0FMX1NIQVJFRF9MSUJSQVJJRVMgPSAkKGxvZ19zaGFyZWRfbGlicmFyaWVzKQogTE9DQUxfTU9EVUxFX1RBR1MgOj0gb3B0aW9uYWwKLUxPQ0FMX01PRFVMRTo9IGxpYnNzbF9zdGF0aWMKLUxPQ0FMX0FERElUSU9OQUxfREVQRU5ERU5DSUVTIDo9ICQobG9jYWxfYWRkaXRpb25hbF9kZXBlbmRlbmNpZXMpCitMT0NBTF9NT0RVTEUgOj0gbGlic3NsX3N0YXRpYworTE9DQUxfQURESVRJT05BTF9ERVBFTkRFTkNJRVMgOj0gJChMT0NBTF9QQVRIKS9hbmRyb2lkLWNvbmZpZy5tayAkKExPQ0FMX1BBVEgpL1NzbC5taworaW5jbHVkZSAkKExPQ0FMX1BBVEgpL1NzbC1jb25maWctdGFyZ2V0Lm1rCitpbmNsdWRlICQoTE9DQUxfUEFUSCkvYW5kcm9pZC1jb25maWcubWsKIGluY2x1ZGUgJChCVUlMRF9TVEFUSUNfTElCUkFSWSkKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIHRhcmdldCBzaGFyZWQgbGlicmFyeQogaW5jbHVkZSAkKENMRUFSX1ZBUlMpCi1pbmNsdWRlICQoTE9DQUxfUEFUSCkvYW5kcm9pZC1jb25maWcubWsKIAogIyBJZiB3ZSdyZSBidWlsZGluZyBhbiB1bmJ1bmRsZWQgYnVpbGQsIGRvbid0IHRyeSB0byB1c2UgY2xhbmcgc2luY2UgaXQncyBub3QKICMgaW4gdGhlIE5ESyB5ZXQuIFRoaXMgY2FuIGJlIHJlbW92ZWQgd2hlbiBhIGNsYW5nIHZlcnNpb24gdGhhdCBpcyBmYXN0IGVub3VnaApAQCAtNDIsMzYgKzMwLDM3IEBACiBMT0NBTF9TREtfVkVSU0lPTiA6PSA5CiBlbmRpZgogCi1MT0NBTF9TUkNfRklMRVMgKz0gJCh0YXJnZXRfc3JjX2ZpbGVzKQotTE9DQUxfQ0ZMQUdTICs9ICQodGFyZ2V0X2NfZmxhZ3MpCi1MT0NBTF9DX0lOQ0xVREVTICs9ICQodGFyZ2V0X2NfaW5jbHVkZXMpCiBMT0NBTF9TSEFSRURfTElCUkFSSUVTICs9IGxpYmNyeXB0byAkKGxvZ19zaGFyZWRfbGlicmFyaWVzKQogTE9DQUxfTU9EVUxFX1RBR1MgOj0gb3B0aW9uYWwKLUxPQ0FMX01PRFVMRTo9IGxpYnNzbAotTE9DQUxfQURESVRJT05BTF9ERVBFTkRFTkNJRVMgOj0gJChsb2NhbF9hZGRpdGlvbmFsX2RlcGVuZGVuY2llcykKK0xPQ0FMX01PRFVMRSA6PSBsaWJzc2wKK0xPQ0FMX0FERElUSU9OQUxfREVQRU5ERU5DSUVTIDo9ICQoTE9DQUxfUEFUSCkvYW5kcm9pZC1jb25maWcubWsgJChMT0NBTF9QQVRIKS9Tc2wubWsKK2luY2x1ZGUgJChMT0NBTF9QQVRIKS9Tc2wtY29uZmlnLXRhcmdldC5taworaW5jbHVkZSAkKExPQ0FMX1BBVEgpL2FuZHJvaWQtY29uZmlnLm1rCiBpbmNsdWRlICQoQlVJTERfU0hBUkVEX0xJQlJBUlkpCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBob3N0IHNoYXJlZCBsaWJyYXJ5CiBpbmNsdWRlICQoQ0xFQVJfVkFSUykKLWluY2x1ZGUgJChMT0NBTF9QQVRIKS9hbmRyb2lkLWNvbmZpZy5tawotTE9DQUxfU1JDX0ZJTEVTICs9ICQoaG9zdF9zcmNfZmlsZXMpCi1MT0NBTF9DRkxBR1MgKz0gJChob3N0X2NfZmxhZ3MpCi1MT0NBTF9DX0lOQ0xVREVTICs9ICQoaG9zdF9jX2luY2x1ZGVzKQogTE9DQUxfU0hBUkVEX0xJQlJBUklFUyArPSBsaWJjcnlwdG8taG9zdCAkKGxvZ19zaGFyZWRfbGlicmFyaWVzKQogTE9DQUxfTU9EVUxFX1RBR1MgOj0gb3B0aW9uYWwKLUxPQ0FMX01PRFVMRTo9IGxpYnNzbC1ob3N0Ci1MT0NBTF9BRERJVElPTkFMX0RFUEVOREVOQ0lFUyA6PSAkKGxvY2FsX2FkZGl0aW9uYWxfZGVwZW5kZW5jaWVzKQorTE9DQUxfTU9EVUxFIDo9IGxpYnNzbC1ob3N0CitMT0NBTF9NVUxUSUxJQiA6PSBib3RoCitMT0NBTF9BRERJVElPTkFMX0RFUEVOREVOQ0lFUyA6PSAkKExPQ0FMX1BBVEgpL2FuZHJvaWQtY29uZmlnLm1rICQoTE9DQUxfUEFUSCkvU3NsLm1rCitpbmNsdWRlICQoTE9DQUxfUEFUSCkvU3NsLWNvbmZpZy1ob3N0Lm1rCitpbmNsdWRlICQoTE9DQUxfUEFUSCkvYW5kcm9pZC1jb25maWcubWsKIGluY2x1ZGUgJChCVUlMRF9IT1NUX1NIQVJFRF9MSUJSQVJZKQogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgc3NsdGVzdAogaW5jbHVkZSAkKENMRUFSX1ZBUlMpCi1pbmNsdWRlICQoTE9DQUxfUEFUSCkvYW5kcm9pZC1jb25maWcubWsKLUxPQ0FMX1NSQ19GSUxFUzo9IHNzbC9zc2x0ZXN0LmMKLUxPQ0FMX0NfSU5DTFVERVMgKz0gJChob3N0X2NfaW5jbHVkZXMpCitMT0NBTF9TUkNfRklMRVMgOj0gc3NsL3NzbHRlc3QuYwogTE9DQUxfU0hBUkVEX0xJQlJBUklFUyA6PSBsaWJzc2wgbGliY3J5cHRvICQobG9nX3NoYXJlZF9saWJyYXJpZXMpCi1MT0NBTF9NT0RVTEU6PSBzc2x0ZXN0CitMT0NBTF9NT0RVTEUgOj0gc3NsdGVzdAorTE9DQUxfTVVMVElMSUIgOj0gYm90aAorTE9DQUxfTU9EVUxFX1NURU1fMzIgOj0gc3NsdGVzdAorTE9DQUxfTU9EVUxFX1NURU1fNjQgOj0gc3NsdGVzdDY0CiBMT0NBTF9NT0RVTEVfVEFHUyA6PSBvcHRpb25hbAotTE9DQUxfQURESVRJT05BTF9ERVBFTkRFTkNJRVMgOj0gJChsb2NhbF9hZGRpdGlvbmFsX2RlcGVuZGVuY2llcykKK0xPQ0FMX0FERElUSU9OQUxfREVQRU5ERU5DSUVTIDo9ICQoTE9DQUxfUEFUSCkvYW5kcm9pZC1jb25maWcubWsgJChMT0NBTF9QQVRIKS9Tc2wubWsKK2luY2x1ZGUgJChMT0NBTF9QQVRIKS9Tc2wtY29uZmlnLWhvc3QubWsKK2luY2x1ZGUgJChMT0NBTF9QQVRIKS9hbmRyb2lkLWNvbmZpZy5tawogaW5jbHVkZSAkKEJVSUxEX0VYRUNVVEFCTEUpCmRpZmYgLS1naXQgYS9hbmRyb2lkLWNvbmZpZy5tayBiL2FuZHJvaWQtY29uZmlnLm1rCmluZGV4IGQxYmRhOTkuLjY3NWE2NWIgMTAwNjQ0Ci0tLSBhL2FuZHJvaWQtY29uZmlnLm1rCisrKyBiL2FuZHJvaWQtY29uZmlnLm1rCkBAIC03LDIxICs3LDQxIEBACiAjIFRoaXMgc2NyaXB0IHBlcmZvcm1zIG1pbm9yIGJ1dCByZXF1aXJlZCBwYXRjaGluZyBmb3IgdGhlIEFuZHJvaWQgYnVpbGQuCiAjCiAKLUxPQ0FMX0NGTEFHUyArPSAkKG9wZW5zc2xfY2ZsYWdzKQotCi1MT0NBTF9DRkxBR1MgOj0gJChmaWx0ZXItb3V0IC1EVEVSTUlPLCAkKExPQ0FMX0NGTEFHUykpCi0KLWlmZXEgKCQoSE9TVF9PUyksd2luZG93cykKLUxPQ0FMX0NGTEFHUyA6PSAkKGZpbHRlci1vdXQgLUREU09fRExGQ04gLURIQVZFX0RMRkNOX0gsJChMT0NBTF9DRkxBR1MpKQotZW5kaWYKLQotIyBEaXJlY3RvcmllcwotTE9DQUxfQ0ZMQUdTICs9IFwKKyMgRGlyZWN0b3JpZXMgZm9yIEVOR0lORSBzaGFyZWQgbGlicmFyaWVzCitvcGVuc3NsX2NmbGFnc18zMiArPSBcCiAgIC1ET1BFTlNTTERJUj0iXCIvc3lzdGVtL2xpYi9zc2xcIiIgXAogICAtREVOR0lORVNESVI9IlwiL3N5c3RlbS9saWIvc3NsL2VuZ2luZXNcIiIKK29wZW5zc2xfY2ZsYWdzX3N0YXRpY18zMiArPSBcCisgIC1ET1BFTlNTTERJUj0iXCIvc3lzdGVtL2xpYi9zc2xcIiIgXAorICAtREVOR0lORVNESVI9IlwiL3N5c3RlbS9saWIvc3NsL2VuZ2luZXNcIiIKK29wZW5zc2xfY2ZsYWdzXzY0ICs9IFwKKyAgLURPUEVOU1NMRElSPSJcIi9zeXN0ZW0vbGliNjQvc3NsXCIiIFwKKyAgLURFTkdJTkVTRElSPSJcIi9zeXN0ZW0vbGliNjQvc3NsL2VuZ2luZXNcIiIKK29wZW5zc2xfY2ZsYWdzX3N0YXRpY182NCArPSBcCisgIC1ET1BFTlNTTERJUj0iXCIvc3lzdGVtL2xpYjY0L3NzbFwiIiBcCisgIC1ERU5HSU5FU0RJUj0iXCIvc3lzdGVtL2xpYjY0L3NzbC9lbmdpbmVzXCIiCiAKICMgSW50ZW50aW9uYWxseSBleGNsdWRlZCBodHRwOi8vYi83MDc5OTY1Ci1MT0NBTF9DRkxBR1MgOj0gJChmaWx0ZXItb3V0IC1EWkxJQiwgJChMT0NBTF9DRkxBR1MpKQoraWZuZXEgKCwkKGZpbHRlciAtRFpMSUIsICQob3BlbnNzbF9jZmxhZ3NfMzIpICQob3BlbnNzbF9jZmxhZ3NfNjQpIFwKKyAgICAkKG9wZW5zc2xfY2ZsYWdzX3N0YXRpY18zMikgJChvcGVuc3NsX2NmbGFnc19zdGF0aWNfNjQpKSkKKyQoZXJyb3IgWkxJQiBzaG91bGQgbm90IGJlIGVuYWJsZWQgaW4gb3BlbnNzbCBjb25maWd1cmF0aW9uKQorZW5kaWYKKworTE9DQUxfQ0ZMQUdTXzMyICs9ICQob3BlbnNzbF9jZmxhZ3NfMzIpCitMT0NBTF9DRkxBR1NfNjQgKz0gJChvcGVuc3NsX2NmbGFnc182NCkKKworTE9DQUxfQ0ZMQUdTXzMyIDo9ICQoZmlsdGVyLW91dCAtRFRFUk1JTywgJChMT0NBTF9DRkxBR1NfMzIpKQorTE9DQUxfQ0ZMQUdTXzY0IDo9ICQoZmlsdGVyLW91dCAtRFRFUk1JTywgJChMT0NBTF9DRkxBR1NfNjQpKQorIyBmaWx0ZXIgb3V0IHN0YXRpYyBmbGFncyB0b28KK29wZW5zc2xfY2ZsYWdzX3N0YXRpY18zMiA6PSAkKGZpbHRlci1vdXQgLURURVJNSU8sICQob3BlbnNzbF9jZmxhZ3Nfc3RhdGljXzMyKSkKK29wZW5zc2xfY2ZsYWdzX3N0YXRpY182NCA6PSAkKGZpbHRlci1vdXQgLURURVJNSU8sICQob3BlbnNzbF9jZmxhZ3Nfc3RhdGljXzY0KSkKKworaWZlcSAoJChIT1NUX09TKSx3aW5kb3dzKQorTE9DQUxfQ0ZMQUdTXzMyIDo9ICQoZmlsdGVyLW91dCAtRERTT19ETEZDTiAtREhBVkVfRExGQ05fSCwkKExPQ0FMX0NGTEFHU18zMikpCitMT0NBTF9DRkxBR1NfNjQgOj0gJChmaWx0ZXItb3V0IC1ERFNPX0RMRkNOIC1ESEFWRV9ETEZDTl9ILCQoTE9DQUxfQ0ZMQUdTXzY0KSkKK2VuZGlmCisKK0xPQ0FMX0NGTEFHUyArPSAtV25vLW1pc3NpbmctZmllbGQtaW5pdGlhbGl6ZXJzIC1Xbm8tdW51c2VkLXBhcmFtZXRlcgogCiAjIERlYnVnCiAjIExPQ0FMX0NGTEFHUyArPSAtRENJUEhFUl9ERUJVRwpkaWZmIC0tZ2l0IGEvYXBwcy9hcHBzLmMgYi9hcHBzL2FwcHMuYwppbmRleCAxMDk2ZWVlLi5iNzZkYjEwIDEwMDY0NAotLS0gYS9hcHBzL2FwcHMuYworKysgYi9hcHBzL2FwcHMuYwpAQCAtNTg2LDEyICs1ODYsMTIgQEAKIAogCQlpZiAob2sgPj0gMCkKIAkJCW9rID0gVUlfYWRkX2lucHV0X3N0cmluZyh1aSxwcm9tcHQsdWlfZmxhZ3MsYnVmLAotCQkJCVBXX01JTl9MRU5HVEgsQlVGU0laLTEpOworCQkJCVBXX01JTl9MRU5HVEgsYnVmc2l6LTEpOwogCQlpZiAob2sgPj0gMCAmJiB2ZXJpZnkpCiAJCQl7CiAJCQlidWZmID0gKGNoYXIgKilPUEVOU1NMX21hbGxvYyhidWZzaXopOwogCQkJb2sgPSBVSV9hZGRfdmVyaWZ5X3N0cmluZyh1aSxwcm9tcHQsdWlfZmxhZ3MsYnVmZiwKLQkJCQlQV19NSU5fTEVOR1RILEJVRlNJWi0xLCBidWYpOworCQkJCVBXX01JTl9MRU5HVEgsYnVmc2l6LTEsIGJ1Zik7CiAJCQl9CiAJCWlmIChvayA+PSAwKQogCQkJZG8KQEAgLTI4NDEsNyArMjg0MSw3IEBACiAKIAlpZiAocHJvYz09TlVMTCkKIAkJewotCQlpZiAoR2V0VmVyc2lvbigpIDwgMHg4MDAwMDAwMCkKKwkJaWYgKGNoZWNrX3dpbm50KCkpCiAJCQlwcm9jID0gT3BlblByb2Nlc3MoUFJPQ0VTU19RVUVSWV9JTkZPUk1BVElPTixGQUxTRSwKIAkJCQkJCUdldEN1cnJlbnRQcm9jZXNzSWQoKSk7CiAJCWlmIChwcm9jPT1OVUxMKSBwcm9jID0gKEhBTkRMRSktMTsKZGlmZiAtLWdpdCBhL2FwcHMvY3JsLmMgYi9hcHBzL2NybC5jCmluZGV4IGMzOTViMmEuLjg3OTdkMzAgMTAwNjQ0Ci0tLSBhL2FwcHMvY3JsLmMKKysrIGIvYXBwcy9jcmwuYwpAQCAtODEsNiArODEsOSBAQAogIiAtaW4gYXJnICAgICAgICAgLSBpbnB1dCBmaWxlIC0gZGVmYXVsdCBzdGRpblxuIiwKICIgLW91dCBhcmcgICAgICAgIC0gb3V0cHV0IGZpbGUgLSBkZWZhdWx0IHN0ZG91dFxuIiwKICIgLWhhc2ggICAgICAgICAgIC0gcHJpbnQgaGFzaCB2YWx1ZVxuIiwKKyNpZm5kZWYgT1BFTlNTTF9OT19NRDUKKyIgLWhhc2hfb2xkICAgICAgIC0gcHJpbnQgb2xkLXN0eWxlIChNRDUpIGhhc2ggdmFsdWVcbiIsCisjZW5kaWYKICIgLWZpbmdlcnByaW50ICAgIC0gcHJpbnQgdGhlIGNybCBmaW5nZXJwcmludFxuIiwKICIgLWlzc3VlciAgICAgICAgIC0gcHJpbnQgaXNzdWVyIEROXG4iLAogIiAtbGFzdHVwZGF0ZSAgICAgLSBsYXN0VXBkYXRlIGZpZWxkXG4iLApAQCAtMTA4LDYgKzExMSw5IEBACiAJaW50IGluZm9ybWF0LG91dGZvcm1hdDsKIAljaGFyICppbmZpbGU9TlVMTCwqb3V0ZmlsZT1OVUxMOwogCWludCBoYXNoPTAsaXNzdWVyPTAsbGFzdHVwZGF0ZT0wLG5leHR1cGRhdGU9MCxub291dD0wLHRleHQ9MDsKKyNpZm5kZWYgT1BFTlNTTF9OT19NRDUKKyAgICAgICBpbnQgaGFzaF9vbGQ9MDsKKyNlbmRpZgogCWludCBmaW5nZXJwcmludCA9IDAsIGNybG51bWJlciA9IDA7CiAJY29uc3QgY2hhciAqKnBwOwogCVg1MDlfU1RPUkUgKnN0b3JlID0gTlVMTDsKQEAgLTE5Miw2ICsxOTgsMTAgQEAKIAkJCXRleHQgPSAxOwogCQllbHNlIGlmIChzdHJjbXAoKmFyZ3YsIi1oYXNoIikgPT0gMCkKIAkJCWhhc2g9ICsrbnVtOworI2lmbmRlZiBPUEVOU1NMX05PX01ENQorCQllbHNlIGlmIChzdHJjbXAoKmFyZ3YsIi1oYXNoX29sZCIpID09IDApCisJCQloYXNoX29sZD0gKytudW07CisjZW5kaWYKIAkJZWxzZSBpZiAoc3RyY21wKCphcmd2LCItbmFtZW9wdCIpID09IDApCiAJCQl7CiAJCQlpZiAoLS1hcmdjIDwgMSkgZ290byBiYWQ7CkBAIC0zMDQsNiArMzE0LDE0IEBACiAJCQkJQklPX3ByaW50ZihiaW9fb3V0LCIlMDhseFxuIiwKIAkJCQkJWDUwOV9OQU1FX2hhc2goWDUwOV9DUkxfZ2V0X2lzc3Vlcih4KSkpOwogCQkJCX0KKyNpZm5kZWYgT1BFTlNTTF9OT19NRDUKKwkJCWlmIChoYXNoX29sZCA9PSBpKQorCQkJCXsKKwkJCQlCSU9fcHJpbnRmKGJpb19vdXQsIiUwOGx4XG4iLAorCQkJCQlYNTA5X05BTUVfaGFzaF9vbGQoCisJCQkJCQlYNTA5X0NSTF9nZXRfaXNzdWVyKHgpKSk7CisJCQkJfQorI2VuZGlmCiAJCQlpZiAobGFzdHVwZGF0ZSA9PSBpKQogCQkJCXsKIAkJCQlCSU9fcHJpbnRmKGJpb19vdXQsImxhc3RVcGRhdGU9Iik7CmRpZmYgLS1naXQgYS9hcHBzL2Rnc3QuYyBiL2FwcHMvZGdzdC5jCmluZGV4IDgxYmQ4NzAuLmY0YWVjNzcgMTAwNjQ0Ci0tLSBhL2FwcHMvZGdzdC5jCisrKyBiL2FwcHMvZGdzdC5jCkBAIC00MjcsOSArNDI3LDkgQEAKIAkJCWdvdG8gZW5kOwogCQkJfQogCQlpZiAoZG9fdmVyaWZ5KQotCQkJciA9IEVWUF9EaWdlc3RWZXJpZnlJbml0KG1jdHgsICZwY3R4LCBtZCwgZSwgc2lna2V5KTsKKwkJCXIgPSBFVlBfRGlnZXN0VmVyaWZ5SW5pdChtY3R4LCAmcGN0eCwgbWQsIE5VTEwsIHNpZ2tleSk7CiAJCWVsc2UKLQkJCXIgPSBFVlBfRGlnZXN0U2lnbkluaXQobWN0eCwgJnBjdHgsIG1kLCBlLCBzaWdrZXkpOworCQkJciA9IEVWUF9EaWdlc3RTaWduSW5pdChtY3R4LCAmcGN0eCwgbWQsIE5VTEwsIHNpZ2tleSk7CiAJCWlmICghcikKIAkJCXsKIAkJCUJJT19wcmludGYoYmlvX2VyciwgIkVycm9yIHNldHRpbmcgY29udGV4dFxuIik7CmRpZmYgLS1naXQgYS9hcHBzL2VjcGFyYW0uYyBiL2FwcHMvZWNwYXJhbS5jCmluZGV4IDQ2NTQ4MGIuLjk3NmViZWYgMTAwNjQ0Ci0tLSBhL2FwcHMvZWNwYXJhbS5jCisrKyBiL2FwcHMvZWNwYXJhbS5jCkBAIC0xMDUsNyArMTA1LDcgQEAKICAqICAgICAgICAgICAgICAgICAgICBpbiB0aGUgYXNuMSBkZXIgZW5jb2RpbmcKICAqICAgICAgICAgICAgICAgICAgICBwb3NzaWJsZSB2YWx1ZXM6IG5hbWVkX2N1cnZlIChkZWZhdWx0KQogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwbGljaXQKLSAqIC1ub19zZWVkICAgICAgICAgLSBpZiAnZXhwbGljaXQnIHBhcmFtZXRlcnMgYXJlIGNob29zZW4gZG8gbm90IHVzZSB0aGUgc2VlZAorICogLW5vX3NlZWQgICAgICAgICAtIGlmICdleHBsaWNpdCcgcGFyYW1ldGVycyBhcmUgY2hvc2VuIGRvIG5vdCB1c2UgdGhlIHNlZWQKICAqIC1nZW5rZXkgICAgICAgICAgLSBnZW5lcmF0ZSBlYyBrZXkKICAqIC1yYW5kIGZpbGUgICAgICAgLSBmaWxlcyB0byB1c2UgZm9yIHJhbmRvbSBudW1iZXIgaW5wdXQKICAqIC1lbmdpbmUgZSAgICAgICAgLSB1c2UgZW5naW5lIGUsIHBvc3NpYmx5IGEgaGFyZHdhcmUgZGV2aWNlCkBAIC0yODYsNyArMjg2LDcgQEAKIAkJQklPX3ByaW50ZihiaW9fZXJyLCAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCiAJCQkJIiBleHBsaWNpdFxuIik7CiAJCUJJT19wcmludGYoYmlvX2VyciwgIiAtbm9fc2VlZCAgICAgICAgICBpZiAnZXhwbGljaXQnIgotCQkJCSIgcGFyYW1ldGVycyBhcmUgY2hvb3NlbiBkbyBub3QiCisJCQkJIiBwYXJhbWV0ZXJzIGFyZSBjaG9zZW4gZG8gbm90IgogCQkJCSIgdXNlIHRoZSBzZWVkXG4iKTsKIAkJQklPX3ByaW50ZihiaW9fZXJyLCAiIC1nZW5rZXkgICAgICAgICAgIGdlbmVyYXRlIGVjIgogCQkJCSIga2V5XG4iKTsKZGlmZiAtLWdpdCBhL2FwcHMvZW5jLmMgYi9hcHBzL2VuYy5jCmluZGV4IDcxOWFjYzMuLjE5ZWEzZGYgMTAwNjQ0Ci0tLSBhL2FwcHMvZW5jLmMKKysrIGIvYXBwcy9lbmMuYwpAQCAtMzMxLDYgKzMzMSwxMiBAQAogICAgICAgICBzZXR1cF9lbmdpbmUoYmlvX2VyciwgZW5naW5lLCAwKTsKICNlbmRpZgogCisJaWYgKGNpcGhlciAmJiBFVlBfQ0lQSEVSX2ZsYWdzKGNpcGhlcikgJiBFVlBfQ0lQSF9GTEFHX0FFQURfQ0lQSEVSKQorCQl7CisJCUJJT19wcmludGYoYmlvX2VyciwgIkFFQUQgY2lwaGVycyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBlbmMgdXRpbGl0eVxuIik7CisJCWdvdG8gZW5kOworCQl9CisKIAlpZiAobWQgJiYgKGRnc3Q9RVZQX2dldF9kaWdlc3RieW5hbWUobWQpKSA9PSBOVUxMKQogCQl7CiAJCUJJT19wcmludGYoYmlvX2VyciwiJXMgaXMgYW4gdW5zdXBwb3J0ZWQgbWVzc2FnZSBkaWdlc3QgdHlwZVxuIixtZCk7CmRpZmYgLS1naXQgYS9hcHBzL29jc3AuYyBiL2FwcHMvb2NzcC5jCmluZGV4IDgzYzVhNzYuLjc2N2YxMmMgMTAwNjQ0Ci0tLSBhL2FwcHMvb2NzcC5jCisrKyBiL2FwcHMvb2NzcC5jCkBAIC0xMjcsNiArMTI3LDcgQEAKIAlFTkdJTkUgKmUgPSBOVUxMOwogCWNoYXIgKiphcmdzOwogCWNoYXIgKmhvc3QgPSBOVUxMLCAqcG9ydCA9IE5VTEwsICpwYXRoID0gIi8iOworCWNoYXIgKnRob3N0ID0gTlVMTCwgKnRwb3J0ID0gTlVMTCwgKnRwYXRoID0gTlVMTDsKIAljaGFyICpyZXFpbiA9IE5VTEwsICpyZXNwaW4gPSBOVUxMOwogCWNoYXIgKnJlcW91dCA9IE5VTEwsICpyZXNwb3V0ID0gTlVMTDsKIAljaGFyICpzaWduZmlsZSA9IE5VTEwsICprZXlmaWxlID0gTlVMTDsKQEAgLTIwNCw2ICsyMDUsMTIgQEAKIAkJCX0KIAkJZWxzZSBpZiAoIXN0cmNtcCgqYXJncywgIi11cmwiKSkKIAkJCXsKKwkJCWlmICh0aG9zdCkKKwkJCQlPUEVOU1NMX2ZyZWUodGhvc3QpOworCQkJaWYgKHRwb3J0KQorCQkJCU9QRU5TU0xfZnJlZSh0cG9ydCk7CisJCQlpZiAodHBhdGgpCisJCQkJT1BFTlNTTF9mcmVlKHRwYXRoKTsKIAkJCWlmIChhcmdzWzFdKQogCQkJCXsKIAkJCQlhcmdzKys7CkBAIC0yMTIsNiArMjE5LDkgQEAKIAkJCQkJQklPX3ByaW50ZihiaW9fZXJyLCAiRXJyb3IgcGFyc2luZyBVUkxcbiIpOwogCQkJCQliYWRhcmcgPSAxOwogCQkJCQl9CisJCQkJdGhvc3QgPSBob3N0OworCQkJCXRwb3J0ID0gcG9ydDsKKwkJCQl0cGF0aCA9IHBhdGg7CiAJCQkJfQogCQkJZWxzZSBiYWRhcmcgPSAxOwogCQkJfQpAQCAtOTIwLDEyICs5MzAsMTIgQEAKIAlza19YNTA5X3BvcF9mcmVlKHZlcmlmeV9vdGhlciwgWDUwOV9mcmVlKTsKIAlza19DT05GX1ZBTFVFX3BvcF9mcmVlKGhlYWRlcnMsIFg1MDlWM19jb25mX2ZyZWUpOwogCi0JaWYgKHVzZV9zc2wgIT0gLTEpCi0JCXsKLQkJT1BFTlNTTF9mcmVlKGhvc3QpOwotCQlPUEVOU1NMX2ZyZWUocG9ydCk7Ci0JCU9QRU5TU0xfZnJlZShwYXRoKTsKLQkJfQorCWlmICh0aG9zdCkKKwkJT1BFTlNTTF9mcmVlKHRob3N0KTsKKwlpZiAodHBvcnQpCisJCU9QRU5TU0xfZnJlZSh0cG9ydCk7CisJaWYgKHRwYXRoKQorCQlPUEVOU1NMX2ZyZWUodHBhdGgpOwogCiAJT1BFTlNTTF9FWElUKHJldCk7CiB9CmRpZmYgLS1naXQgYS9hcHBzL3JlcS5jIGIvYXBwcy9yZXEuYwppbmRleCA4NTUyNjU4Li5kNDEzODVkIDEwMDY0NAotLS0gYS9hcHBzL3JlcS5jCisrKyBiL2FwcHMvcmVxLmMKQEAgLTY0NCw2ICs2NDQsMTEgQEAKIAkJaWYgKGlucmFuZCkKIAkJCWFwcF9SQU5EX2xvYWRfZmlsZXMoaW5yYW5kKTsKIAorCQlpZiAoIU5DT05GX2dldF9udW1iZXIocmVxX2NvbmYsU0VDVElPTixCSVRTLCAmbmV3a2V5KSkKKwkJCXsKKwkJCW5ld2tleT1ERUZBVUxUX0tFWV9MRU5HVEg7CisJCQl9CisKIAkJaWYgKGtleWFsZykKIAkJCXsKIAkJCWdlbmN0eCA9IHNldF9rZXlnZW5fY3R4KGJpb19lcnIsIGtleWFsZywgJnBrZXlfdHlwZSwgJm5ld2tleSwKQEAgLTY1MiwxMiArNjU3LDYgQEAKIAkJCQlnb3RvIGVuZDsKIAkJCX0KIAkKLQkJaWYgKG5ld2tleSA8PSAwKQotCQkJewotCQkJaWYgKCFOQ09ORl9nZXRfbnVtYmVyKHJlcV9jb25mLFNFQ1RJT04sQklUUywgJm5ld2tleSkpCi0JCQkJbmV3a2V5PURFRkFVTFRfS0VZX0xFTkdUSDsKLQkJCX0KLQogCQlpZiAobmV3a2V5IDwgTUlOX0tFWV9MRU5HVEggJiYgKHBrZXlfdHlwZSA9PSBFVlBfUEtFWV9SU0EgfHwgcGtleV90eXBlID09IEVWUF9QS0VZX0RTQSkpCiAJCQl7CiAJCQlCSU9fcHJpbnRmKGJpb19lcnIsInByaXZhdGUga2V5IGxlbmd0aCBpcyB0b28gc2hvcnQsXG4iKTsKQEAgLTE0OTAsNyArMTQ4OSwxMyBAQAogI2lmZGVmIENIQVJTRVRfRUJDRElDCiAJZWJjZGljMmFzY2lpKGJ1ZiwgYnVmLCBpKTsKICNlbmRpZgotCWlmKCFyZXFfY2hlY2tfbGVuKGksIG5fbWluLCBuX21heCkpIGdvdG8gc3RhcnQ7CisJaWYoIXJlcV9jaGVja19sZW4oaSwgbl9taW4sIG5fbWF4KSkKKwkJeworCQlpZiAoYmF0Y2ggfHwgdmFsdWUpCisJCQlyZXR1cm4gMDsKKwkJZ290byBzdGFydDsKKwkJfQorCiAJaWYgKCFYNTA5X05BTUVfYWRkX2VudHJ5X2J5X05JRChuLG5pZCwgY2h0eXBlLAogCQkJCSh1bnNpZ25lZCBjaGFyICopIGJ1ZiwgLTEsLTEsbXZhbCkpIGdvdG8gZXJyOwogCXJldD0xOwpAQCAtMTU0OSw3ICsxNTU0LDEyIEBACiAjaWZkZWYgQ0hBUlNFVF9FQkNESUMKIAllYmNkaWMyYXNjaWkoYnVmLCBidWYsIGkpOwogI2VuZGlmCi0JaWYoIXJlcV9jaGVja19sZW4oaSwgbl9taW4sIG5fbWF4KSkgZ290byBzdGFydDsKKwlpZighcmVxX2NoZWNrX2xlbihpLCBuX21pbiwgbl9tYXgpKQorCQl7CisJCWlmIChiYXRjaCB8fCB2YWx1ZSkKKwkJCXJldHVybiAwOworCQlnb3RvIHN0YXJ0OworCQl9CiAKIAlpZighWDUwOV9SRVFfYWRkMV9hdHRyX2J5X05JRChyZXEsIG5pZCwgY2h0eXBlLAogCQkJCQkodW5zaWduZWQgY2hhciAqKWJ1ZiwgLTEpKSB7CkBAIC0xNjQ5LDYgKzE2NTksOCBAQAogCQkJCWtleWxlbiA9IGF0b2wocCArIDEpOwogCQkJCSpwa2V5bGVuID0ga2V5bGVuOwogCQkJCX0KKwkJCWVsc2UKKwkJCQlrZXlsZW4gPSAqcGtleWxlbjsKIAkJCX0KIAkJZWxzZSBpZiAocCkKIAkJCXBhcmFtZmlsZSA9IHAgKyAxOwpkaWZmIC0tZ2l0IGEvYXBwcy9zX2NiLmMgYi9hcHBzL3NfY2IuYwppbmRleCA4NGMzYjQ0Li4xNDZhOTYwIDEwMDY0NAotLS0gYS9hcHBzL3NfY2IuYworKysgYi9hcHBzL3NfY2IuYwpAQCAtNzQ3LDYgKzc0NywxMCBAQAogCQlicmVhazsKICNlbmRpZgogCisJCWNhc2UgVExTRVhUX1RZUEVfcGFkZGluZzoKKwkJZXh0bmFtZSA9ICJUTFMgcGFkZGluZyI7CisJCWJyZWFrOworCiAJCWRlZmF1bHQ6CiAJCWV4dG5hbWUgPSAidW5rbm93biI7CiAJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvYXBwcy9zX3NvY2tldC5jIGIvYXBwcy9zX3NvY2tldC5jCmluZGV4IDM4MGVmZGIuLjk0ZWI0MGYgMTAwNjQ0Ci0tLSBhL2FwcHMvc19zb2NrZXQuYworKysgYi9hcHBzL3Nfc29ja2V0LmMKQEAgLTI3NCw3ICsyNzQsNyBAQAogCQl7CiAJCWk9MDsKIAkJaT1zZXRzb2Nrb3B0KHMsU09MX1NPQ0tFVCxTT19LRUVQQUxJVkUsKGNoYXIgKikmaSxzaXplb2YoaSkpOwotCQlpZiAoaSA8IDApIHsgcGVycm9yKCJrZWVwYWxpdmUiKTsgcmV0dXJuKDApOyB9CisJCWlmIChpIDwgMCkgeyBjbG9zZXNvY2tldChzKTsgcGVycm9yKCJrZWVwYWxpdmUiKTsgcmV0dXJuKDApOyB9CiAJCX0KICNlbmRpZgogCkBAIC00NTAsNiArNDUwLDcgQEAKIAkJaWYgKCgqaG9zdD0oY2hhciAqKU9QRU5TU0xfbWFsbG9jKHN0cmxlbihoMS0+aF9uYW1lKSsxKSkgPT0gTlVMTCkKIAkJCXsKIAkJCXBlcnJvcigiT1BFTlNTTF9tYWxsb2MiKTsKKwkJCWNsb3Nlc29ja2V0KHJldCk7CiAJCQlyZXR1cm4oMCk7CiAJCQl9CiAJCUJVRl9zdHJsY3B5KCpob3N0LGgxLT5oX25hbWUsc3RybGVuKGgxLT5oX25hbWUpKzEpOwpAQCAtNDU4LDExICs0NTksMTMgQEAKIAkJaWYgKGgyID09IE5VTEwpCiAJCQl7CiAJCQlCSU9fcHJpbnRmKGJpb19lcnIsImdldGhvc3RieW5hbWUgZmFpbHVyZVxuIik7CisJCQljbG9zZXNvY2tldChyZXQpOwogCQkJcmV0dXJuKDApOwogCQkJfQogCQlpZiAoaDItPmhfYWRkcnR5cGUgIT0gQUZfSU5FVCkKIAkJCXsKIAkJCUJJT19wcmludGYoYmlvX2VyciwiZ2V0aG9zdGJ5bmFtZSBhZGRyIGlzIG5vdCBBRl9JTkVUXG4iKTsKKwkJCWNsb3Nlc29ja2V0KHJldCk7CiAJCQlyZXR1cm4oMCk7CiAJCQl9CiAJCX0KZGlmZiAtLWdpdCBhL2FwcHMvc21pbWUuYyBiL2FwcHMvc21pbWUuYwppbmRleCBjNTgzZjhhMC4uZDFmZTMyZCAxMDA2NDQKLS0tIGEvYXBwcy9zbWltZS5jCisrKyBiL2FwcHMvc21pbWUuYwpAQCAtNTQxLDggKzU0MSw4IEBACiAJCXsKIAkJaWYgKCFjaXBoZXIpCiAJCQl7Ci0jaWZuZGVmIE9QRU5TU0xfTk9fUkMyCQkJCi0JCQljaXBoZXIgPSBFVlBfcmMyXzQwX2NiYygpOworI2lmbmRlZiBPUEVOU1NMX05PX0RFUwkJCQorCQkJY2lwaGVyID0gRVZQX2Rlc19lZGUzX2NiYygpOwogI2Vsc2UKIAkJCUJJT19wcmludGYoYmlvX2VyciwgIk5vIGNpcGhlciBzZWxlY3RlZFxuIik7CiAJCQlnb3RvIGVuZDsKZGlmZiAtLWdpdCBhL2J1aWxkLWNvbmZpZy0zMi5tayBiL2J1aWxkLWNvbmZpZy0zMi5tawppbmRleCBiNjJjMzQyLi5kMDM1ZjFlIDEwMDY0NAotLS0gYS9idWlsZC1jb25maWctMzIubWsKKysrIGIvYnVpbGQtY29uZmlnLTMyLm1rCkBAIC0xLDggKzEsOCBAQAogIyBBdXRvLWdlbmVyYXRlZCAtIERPIE5PVCBFRElUIQogIyBUbyByZWdlbmVyYXRlLCBlZGl0IG9wZW5zc2wuY29uZmlnLCB0aGVuIHJ1bjoKLSMgICAgIC4vaW1wb3J0X29wZW5zc2wuc2ggaW1wb3J0IC9wYXRoL3RvL29wZW5zc2wtMS4wLjFmLnRhci5negorIyAgICAgLi9pbXBvcnRfb3BlbnNzbC5zaCBpbXBvcnQgL3BhdGgvdG8vb3BlbnNzbC0xLjAuMWgudGFyLmd6CiAjCi1vcGVuc3NsX2NmbGFncyA6PSBcCitvcGVuc3NsX2NmbGFnc18zMiA6PSBcCiAgIC1ET1BFTlNTTF9USFJFQURTIFwKICAgLURfUkVFTlRSQU5UIFwKICAgLUREU09fRExGQ04gXApAQCAtMjQsNiArMjQsNyBAQAogICAtRE9QRU5TU0xfTk9fUkM1IFwKICAgLURPUEVOU1NMX05PX1JEUkFORCBcCiAgIC1ET1BFTlNTTF9OT19SRkMzNzc5IFwKKyAgLURPUEVOU1NMX05PX1JJUEVNRCBcCiAgIC1ET1BFTlNTTF9OT19SU0FYIFwKICAgLURPUEVOU1NMX05PX1NDVFAgXAogICAtRE9QRU5TU0xfTk9fU0VFRCBcCkBAIC0zMSwzICszMiwzMyBAQAogICAtRE9QRU5TU0xfTk9fU1RBVElDX0VOR0lORSBcCiAgIC1ET1BFTlNTTF9OT19TVE9SRSBcCiAgIC1ET1BFTlNTTF9OT19XSElSTFBPT0wgXAorCitvcGVuc3NsX2NmbGFnc19zdGF0aWNfMzIgOj0gXAorICAtRE9QRU5TU0xfVEhSRUFEUyBcCisgIC1EX1JFRU5UUkFOVCBcCisgIC1ETF9FTkRJQU4gXAorICAtRFRFUk1JTyBcCisgIC1ET1BFTlNTTF9OT19DQU1FTExJQSBcCisgIC1ET1BFTlNTTF9OT19DQVBJRU5HIFwKKyAgLURPUEVOU1NMX05PX0NBU1QgXAorICAtRE9QRU5TU0xfTk9fRFRMUzEgXAorICAtRE9QRU5TU0xfTk9fRUNfTklTVFBfNjRfR0NDXzEyOCBcCisgIC1ET1BFTlNTTF9OT19HTVAgXAorICAtRE9QRU5TU0xfTk9fR09TVCBcCisgIC1ET1BFTlNTTF9OT19IRUFSVEJFQVRTIFwKKyAgLURPUEVOU1NMX05PX0lERUEgXAorICAtRE9QRU5TU0xfTk9fSlBBS0UgXAorICAtRE9QRU5TU0xfTk9fTUQyIFwKKyAgLURPUEVOU1NMX05PX01EQzIgXAorICAtRE9QRU5TU0xfTk9fUkM1IFwKKyAgLURPUEVOU1NMX05PX1JEUkFORCBcCisgIC1ET1BFTlNTTF9OT19SRkMzNzc5IFwKKyAgLURPUEVOU1NMX05PX1JJUEVNRCBcCisgIC1ET1BFTlNTTF9OT19SU0FYIFwKKyAgLURPUEVOU1NMX05PX1NDVFAgXAorICAtRE9QRU5TU0xfTk9fU0VFRCBcCisgIC1ET1BFTlNTTF9OT19TSEEwIFwKKyAgLURPUEVOU1NMX05PX1NUQVRJQ19FTkdJTkUgXAorICAtRE9QRU5TU0xfTk9fU1RPUkUgXAorICAtRE9QRU5TU0xfTk9fV0hJUkxQT09MIFwKKwpkaWZmIC0tZ2l0IGEvYnVpbGQtY29uZmlnLTY0Lm1rIGIvYnVpbGQtY29uZmlnLTY0Lm1rCmluZGV4IGI2MmMzNDIuLjQ1YTgxNDEgMTAwNjQ0Ci0tLSBhL2J1aWxkLWNvbmZpZy02NC5taworKysgYi9idWlsZC1jb25maWctNjQubWsKQEAgLTEsOCArMSw4IEBACiAjIEF1dG8tZ2VuZXJhdGVkIC0gRE8gTk9UIEVESVQhCiAjIFRvIHJlZ2VuZXJhdGUsIGVkaXQgb3BlbnNzbC5jb25maWcsIHRoZW4gcnVuOgotIyAgICAgLi9pbXBvcnRfb3BlbnNzbC5zaCBpbXBvcnQgL3BhdGgvdG8vb3BlbnNzbC0xLjAuMWYudGFyLmd6CisjICAgICAuL2ltcG9ydF9vcGVuc3NsLnNoIGltcG9ydCAvcGF0aC90by9vcGVuc3NsLTEuMC4xaC50YXIuZ3oKICMKLW9wZW5zc2xfY2ZsYWdzIDo9IFwKK29wZW5zc2xfY2ZsYWdzXzY0IDo9IFwKICAgLURPUEVOU1NMX1RIUkVBRFMgXAogICAtRF9SRUVOVFJBTlQgXAogICAtRERTT19ETEZDTiBcCkBAIC0yNCw2ICsyNCw3IEBACiAgIC1ET1BFTlNTTF9OT19SQzUgXAogICAtRE9QRU5TU0xfTk9fUkRSQU5EIFwKICAgLURPUEVOU1NMX05PX1JGQzM3NzkgXAorICAtRE9QRU5TU0xfTk9fUklQRU1EIFwKICAgLURPUEVOU1NMX05PX1JTQVggXAogICAtRE9QRU5TU0xfTk9fU0NUUCBcCiAgIC1ET1BFTlNTTF9OT19TRUVEIFwKQEAgLTMxLDMgKzMyLDMzIEBACiAgIC1ET1BFTlNTTF9OT19TVEFUSUNfRU5HSU5FIFwKICAgLURPUEVOU1NMX05PX1NUT1JFIFwKICAgLURPUEVOU1NMX05PX1dISVJMUE9PTCBcCisKK29wZW5zc2xfY2ZsYWdzX3N0YXRpY182NCA6PSBcCisgIC1ET1BFTlNTTF9USFJFQURTIFwKKyAgLURfUkVFTlRSQU5UIFwKKyAgLURMX0VORElBTiBcCisgIC1EVEVSTUlPIFwKKyAgLURPUEVOU1NMX05PX0NBTUVMTElBIFwKKyAgLURPUEVOU1NMX05PX0NBUElFTkcgXAorICAtRE9QRU5TU0xfTk9fQ0FTVCBcCisgIC1ET1BFTlNTTF9OT19EVExTMSBcCisgIC1ET1BFTlNTTF9OT19FQ19OSVNUUF82NF9HQ0NfMTI4IFwKKyAgLURPUEVOU1NMX05PX0dNUCBcCisgIC1ET1BFTlNTTF9OT19HT1NUIFwKKyAgLURPUEVOU1NMX05PX0hFQVJUQkVBVFMgXAorICAtRE9QRU5TU0xfTk9fSURFQSBcCisgIC1ET1BFTlNTTF9OT19KUEFLRSBcCisgIC1ET1BFTlNTTF9OT19NRDIgXAorICAtRE9QRU5TU0xfTk9fTURDMiBcCisgIC1ET1BFTlNTTF9OT19SQzUgXAorICAtRE9QRU5TU0xfTk9fUkRSQU5EIFwKKyAgLURPUEVOU1NMX05PX1JGQzM3NzkgXAorICAtRE9QRU5TU0xfTk9fUklQRU1EIFwKKyAgLURPUEVOU1NMX05PX1JTQVggXAorICAtRE9QRU5TU0xfTk9fU0NUUCBcCisgIC1ET1BFTlNTTF9OT19TRUVEIFwKKyAgLURPUEVOU1NMX05PX1NIQTAgXAorICAtRE9QRU5TU0xfTk9fU1RBVElDX0VOR0lORSBcCisgIC1ET1BFTlNTTF9OT19TVE9SRSBcCisgIC1ET1BFTlNTTF9OT19XSElSTFBPT0wgXAorCmRpZmYgLS1naXQgYS9idWlsZC1jb25maWctc3RhdGljLTMyLm1rIGIvYnVpbGQtY29uZmlnLXN0YXRpYy0zMi5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41N2JiNTVhCi0tLSAvZGV2L251bGwKKysrIGIvYnVpbGQtY29uZmlnLXN0YXRpYy0zMi5tawpAQCAtMCwwICsxLDMzIEBACisjIEF1dG8tZ2VuZXJhdGVkIC0gRE8gTk9UIEVESVQhCisjIFRvIHJlZ2VuZXJhdGUsIGVkaXQgb3BlbnNzbC5jb25maWcsIHRoZW4gcnVuOgorIyAgICAgLi9pbXBvcnRfb3BlbnNzbC5zaCBpbXBvcnQgL3BhdGgvdG8vb3BlbnNzbC0xLjAuMWYudGFyLmd6CisjCitvcGVuc3NsX2NmbGFnc18zMiA6PSBcCisgIC1ET1BFTlNTTF9USFJFQURTIFwKKyAgLURfUkVFTlRSQU5UIFwKKyAgLUREU09fRExGQ04gXAorICAtREhBVkVfRExGQ05fSCBcCisgIC1ETF9FTkRJQU4gXAorICAtRFRFUk1JTyBcCisgIC1ET1BFTlNTTF9OT19DQU1FTExJQSBcCisgIC1ET1BFTlNTTF9OT19DQVBJRU5HIFwKKyAgLURPUEVOU1NMX05PX0NBU1QgXAorICAtRE9QRU5TU0xfTk9fRFRMUzEgXAorICAtRE9QRU5TU0xfTk9fRUNfTklTVFBfNjRfR0NDXzEyOCBcCisgIC1ET1BFTlNTTF9OT19HTVAgXAorICAtRE9QRU5TU0xfTk9fR09TVCBcCisgIC1ET1BFTlNTTF9OT19IRUFSVEJFQVRTIFwKKyAgLURPUEVOU1NMX05PX0lERUEgXAorICAtRE9QRU5TU0xfTk9fSlBBS0UgXAorICAtRE9QRU5TU0xfTk9fTUQyIFwKKyAgLURPUEVOU1NMX05PX01EQzIgXAorICAtRE9QRU5TU0xfTk9fUkM1IFwKKyAgLURPUEVOU1NMX05PX1JEUkFORCBcCisgIC1ET1BFTlNTTF9OT19SRkMzNzc5IFwKKyAgLURPUEVOU1NMX05PX1JTQVggXAorICAtRE9QRU5TU0xfTk9fU0NUUCBcCisgIC1ET1BFTlNTTF9OT19TRUVEIFwKKyAgLURPUEVOU1NMX05PX1NIQTAgXAorICAtRE9QRU5TU0xfTk9fU1RBVElDX0VOR0lORSBcCisgIC1ET1BFTlNTTF9OT19TVE9SRSBcCisgIC1ET1BFTlNTTF9OT19XSElSTFBPT0wgXApkaWZmIC0tZ2l0IGEvYnVpbGQtY29uZmlnLXN0YXRpYy02NC5tayBiL2J1aWxkLWNvbmZpZy1zdGF0aWMtNjQubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjY5NDNhYwotLS0gL2Rldi9udWxsCisrKyBiL2J1aWxkLWNvbmZpZy1zdGF0aWMtNjQubWsKQEAgLTAsMCArMSwzMyBAQAorIyBBdXRvLWdlbmVyYXRlZCAtIERPIE5PVCBFRElUIQorIyBUbyByZWdlbmVyYXRlLCBlZGl0IG9wZW5zc2wuY29uZmlnLCB0aGVuIHJ1bjoKKyMgICAgIC4vaW1wb3J0X29wZW5zc2wuc2ggaW1wb3J0IC9wYXRoL3RvL29wZW5zc2wtMS4wLjFmLnRhci5negorIworb3BlbnNzbF9jZmxhZ3NfNjQgOj0gXAorICAtRE9QRU5TU0xfVEhSRUFEUyBcCisgIC1EX1JFRU5UUkFOVCBcCisgIC1ERFNPX0RMRkNOIFwKKyAgLURIQVZFX0RMRkNOX0ggXAorICAtRExfRU5ESUFOIFwKKyAgLURURVJNSU8gXAorICAtRE9QRU5TU0xfTk9fQ0FNRUxMSUEgXAorICAtRE9QRU5TU0xfTk9fQ0FQSUVORyBcCisgIC1ET1BFTlNTTF9OT19DQVNUIFwKKyAgLURPUEVOU1NMX05PX0RUTFMxIFwKKyAgLURPUEVOU1NMX05PX0VDX05JU1RQXzY0X0dDQ18xMjggXAorICAtRE9QRU5TU0xfTk9fR01QIFwKKyAgLURPUEVOU1NMX05PX0dPU1QgXAorICAtRE9QRU5TU0xfTk9fSEVBUlRCRUFUUyBcCisgIC1ET1BFTlNTTF9OT19JREVBIFwKKyAgLURPUEVOU1NMX05PX0pQQUtFIFwKKyAgLURPUEVOU1NMX05PX01EMiBcCisgIC1ET1BFTlNTTF9OT19NREMyIFwKKyAgLURPUEVOU1NMX05PX1JDNSBcCisgIC1ET1BFTlNTTF9OT19SRFJBTkQgXAorICAtRE9QRU5TU0xfTk9fUkZDMzc3OSBcCisgIC1ET1BFTlNTTF9OT19SU0FYIFwKKyAgLURPUEVOU1NMX05PX1NDVFAgXAorICAtRE9QRU5TU0xfTk9fU0VFRCBcCisgIC1ET1BFTlNTTF9OT19TSEEwIFwKKyAgLURPUEVOU1NMX05PX1NUQVRJQ19FTkdJTkUgXAorICAtRE9QRU5TU0xfTk9fU1RPUkUgXAorICAtRE9QRU5TU0xfTk9fV0hJUkxQT09MIFwKZGlmZiAtLWdpdCBhL2J1aWxkLWNvbmZpZy10cnVzdHkubWsgYi9idWlsZC1jb25maWctdHJ1c3R5Lm1rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkNmZiNTgKLS0tIC9kZXYvbnVsbAorKysgYi9idWlsZC1jb25maWctdHJ1c3R5Lm1rCkBAIC0wLDAgKzEsMTAwIEBACisjIEF1dG8tZ2VuZXJhdGVkIC0gRE8gTk9UIEVESVQhCisjIFRvIHJlZ2VuZXJhdGUsIGVkaXQgb3BlbnNzbC5jb25maWcsIHRoZW4gcnVuOgorIyAgICAgLi9pbXBvcnRfb3BlbnNzbC5zaCBpbXBvcnQgL3BhdGgvdG8vb3BlbnNzbC0xLjAuMWgudGFyLmd6CisjCitvcGVuc3NsX2NmbGFnc190cnVzdHkgOj0gXAorICAtRExfRU5ESUFOIFwKKyAgLURPUEVOU1NMX05PX0VSUiBcCisgIC1ET1BFTlNTTF9OT19DQU1FTExJQSBcCisgIC1ET1BFTlNTTF9OT19DQVBJRU5HIFwKKyAgLURPUEVOU1NMX05PX0NBU1QgXAorICAtRE9QRU5TU0xfTk9fQ01TIFwKKyAgLURPUEVOU1NMX05PX0NPTVAgXAorICAtRE9QRU5TU0xfTk9fQ09ORiBcCisgIC1ET1BFTlNTTF9OT19ERVMgXAorICAtRE9QRU5TU0xfTk9fRFRMUzEgXAorICAtRE9QRU5TU0xfTk9fRUNfTklTVFBfNjRfR0NDXzEyOCBcCisgIC1ET1BFTlNTTF9OT19HTVAgXAorICAtRE9QRU5TU0xfTk9fR09TVCBcCisgIC1ET1BFTlNTTF9OT19IRUFSVEJFQVRTIFwKKyAgLURPUEVOU1NMX05PX0lERUEgXAorICAtRE9QRU5TU0xfTk9fSlBBS0UgXAorICAtRE9QRU5TU0xfTk9fTE9DS0lORyBcCisgIC1ET1BFTlNTTF9OT19NRDIgXAorICAtRE9QRU5TU0xfTk9fTUQ0IFwKKyAgLURPUEVOU1NMX05PX01ENSBcCisgIC1ET1BFTlNTTF9OT19NREMyIFwKKyAgLURPUEVOU1NMX05PX09DU1AgXAorICAtRE9QRU5TU0xfTk9fUEVNIFwKKyAgLURPUEVOU1NMX05PX1BLQ1MxMiBcCisgIC1ET1BFTlNTTF9OT19QUVVFVUUgXAorICAtRE9QRU5TU0xfTk9fUkMyIFwKKyAgLURPUEVOU1NMX05PX1JDNCBcCisgIC1ET1BFTlNTTF9OT19SQzUgXAorICAtRE9QRU5TU0xfTk9fUkRSQU5EIFwKKyAgLURPUEVOU1NMX05PX1JGQzM3NzkgXAorICAtRE9QRU5TU0xfTk9fUklQRU1EIFwKKyAgLURPUEVOU1NMX05PX1JTQVggXAorICAtRE9QRU5TU0xfTk9fU0NUUCBcCisgIC1ET1BFTlNTTF9OT19TRUVEIFwKKyAgLURPUEVOU1NMX05PX1NIQTAgXAorICAtRE9QRU5TU0xfTk9fU1JQIFwKKyAgLURPUEVOU1NMX05PX1NTTDIgXAorICAtRE9QRU5TU0xfTk9fU1NMMyBcCisgIC1ET1BFTlNTTF9OT19TVEFUSUNfRU5HSU5FIFwKKyAgLURPUEVOU1NMX05PX1NUT1JFIFwKKyAgLURPUEVOU1NMX05PX1RMUzEgXAorICAtRE9QRU5TU0xfTk9fVExTRVhUIFwKKyAgLURPUEVOU1NMX05PX1RTIFwKKyAgLURPUEVOU1NMX05PX1RYVF9EQiBcCisgIC1ET1BFTlNTTF9OT19VSSBcCisgIC1ET1BFTlNTTF9OT19XSElSTFBPT0wgXAorCitvcGVuc3NsX2NmbGFnc19zdGF0aWNfdHJ1c3R5IDo9IFwKKyAgLURMX0VORElBTiBcCisgIC1ET1BFTlNTTF9OT19FUlIgXAorICAtRE9QRU5TU0xfTk9fQ0FNRUxMSUEgXAorICAtRE9QRU5TU0xfTk9fQ0FQSUVORyBcCisgIC1ET1BFTlNTTF9OT19DQVNUIFwKKyAgLURPUEVOU1NMX05PX0NNUyBcCisgIC1ET1BFTlNTTF9OT19DT01QIFwKKyAgLURPUEVOU1NMX05PX0NPTkYgXAorICAtRE9QRU5TU0xfTk9fREVTIFwKKyAgLURPUEVOU1NMX05PX0RUTFMxIFwKKyAgLURPUEVOU1NMX05PX0VDX05JU1RQXzY0X0dDQ18xMjggXAorICAtRE9QRU5TU0xfTk9fR01QIFwKKyAgLURPUEVOU1NMX05PX0dPU1QgXAorICAtRE9QRU5TU0xfTk9fSEVBUlRCRUFUUyBcCisgIC1ET1BFTlNTTF9OT19JREVBIFwKKyAgLURPUEVOU1NMX05PX0pQQUtFIFwKKyAgLURPUEVOU1NMX05PX0xPQ0tJTkcgXAorICAtRE9QRU5TU0xfTk9fTUQyIFwKKyAgLURPUEVOU1NMX05PX01ENCBcCisgIC1ET1BFTlNTTF9OT19NRDUgXAorICAtRE9QRU5TU0xfTk9fTURDMiBcCisgIC1ET1BFTlNTTF9OT19PQ1NQIFwKKyAgLURPUEVOU1NMX05PX1BFTSBcCisgIC1ET1BFTlNTTF9OT19QS0NTMTIgXAorICAtRE9QRU5TU0xfTk9fUFFVRVVFIFwKKyAgLURPUEVOU1NMX05PX1JDMiBcCisgIC1ET1BFTlNTTF9OT19SQzQgXAorICAtRE9QRU5TU0xfTk9fUkM1IFwKKyAgLURPUEVOU1NMX05PX1JEUkFORCBcCisgIC1ET1BFTlNTTF9OT19SRkMzNzc5IFwKKyAgLURPUEVOU1NMX05PX1JJUEVNRCBcCisgIC1ET1BFTlNTTF9OT19SU0FYIFwKKyAgLURPUEVOU1NMX05PX1NDVFAgXAorICAtRE9QRU5TU0xfTk9fU0VFRCBcCisgIC1ET1BFTlNTTF9OT19TSEEwIFwKKyAgLURPUEVOU1NMX05PX1NSUCBcCisgIC1ET1BFTlNTTF9OT19TU0wyIFwKKyAgLURPUEVOU1NMX05PX1NTTDMgXAorICAtRE9QRU5TU0xfTk9fU1RBVElDX0VOR0lORSBcCisgIC1ET1BFTlNTTF9OT19TVE9SRSBcCisgIC1ET1BFTlNTTF9OT19UTFMxIFwKKyAgLURPUEVOU1NMX05PX1RMU0VYVCBcCisgIC1ET1BFTlNTTF9OT19UUyBcCisgIC1ET1BFTlNTTF9OT19UWFRfREIgXAorICAtRE9QRU5TU0xfTk9fVUkgXAorICAtRE9QRU5TU0xfTk9fV0hJUkxQT09MIFwKKwpkaWZmIC0tZ2l0IGEvY2hlY2stYWxsLWJ1aWxkcy5zaCBiL2NoZWNrLWFsbC1idWlsZHMuc2gKaW5kZXggOThkYzM5MS4uOTc0Mzg3MiAxMDA3NTUKLS0tIGEvY2hlY2stYWxsLWJ1aWxkcy5zaAorKysgYi9jaGVjay1hbGwtYnVpbGRzLnNoCkBAIC0xMzksNyArMTM5LDExIEBACiBlc2FjCiAKICMgVGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIEFuZHJvaWQgdGFyZ2V0IGFyY2hpdGVjdHVyZXMuCi1BTkRST0lEX0FSQ0hTPSJhcm0geDg2IG1pcHMiCisKKyMgTk9URTogeDg2XzY0IGlzIG5vdCByZWFkeSB5ZXQsIHdoaWxlIHRoZSB0b29sY2hhaW4gaXMgaW4KKyMgcHJlYnVpbHRzLyBpdCBkb2Vzbid0IGhhdmUgYSBzeXNyb290IHdoaWNoIG1lYW5zIGl0IHJlcXVpcmVzCisjIGEgcGxhdGZvcm0gYnVpbGQgdG8gZ2V0IEJpb25pYyBhbmQgc3R1ZmYuCitBTkRST0lEX0FSQ0hTPSJhcm0gYXJtNjQgeDg2IHg4Nl82NCBtaXBzIgogCiBCVUlMRF9UWVBFUz0KIGZvciBBUkNIIGluICRBTkRST0lEX0FSQ0hTOyBkbwpAQCAtMTQ3LDkgKzE1MSw4IEBACiBkb25lCiBBTkRST0lEX0JVSUxEX1RZUEVTPSRCVUlMRF9UWVBFUwogCi0jIE5PVEU6IFRoZSAkSE9TVF9PUy14ODZfNjQgaXMgY3VycmVudGx5IGJyb2tlbiBiZWNhdXNlIHRoZSBzaW5nbGUKLSMgICAgICAgPG9wZW5zc2wvb3BlbnNzbGNvbmYuaD4gaGVhZGVyIGlzIHRhaWxvcmVkIGZvciAzMi1iaXRzLgogSE9TVF9CVUlMRF9UWVBFUz0iJEhPU1RfT1MteDg2ICRIT1NUX09TLWdlbmVyaWMzMiAkSE9TVF9PUy1nZW5lcmljNjQiCitIT1NUX0JVSUxEX1RZUEVTPSIkSE9TVF9CVUlMRF9UWVBFUyAkSE9TVF9PUy14ODZfNjQiCiAKIEJVSUxEX1RZUEVTPSIkQU5EUk9JRF9CVUlMRF9UWVBFUyAkSE9TVF9CVUlMRF9UWVBFUyIKIApAQCAtMzA4LDExICszMTEsMTcgQEAKICMgT3V0OiBHTlUgY29uZmlndXJhdGlvbiB0YXJnZXQgKGUuZy4gYXJtLWxpbnV4LWFuZHJvaWRlYWJpKQogZ2V0X2J1aWxkX2FyY2hfdGFyZ2V0ICgpIHsKICAgY2FzZSAkMSBpbgorICAgIGFybTY0KQorICAgICAgZWNobyAiYWFyY2g2NC1saW51eC1hbmRyb2lkIgorICAgICAgOzsKICAgICBhcm0pCiAgICAgICBlY2hvICJhcm0tbGludXgtYW5kcm9pZGVhYmkiCiAgICAgICA7OwogICAgIHg4NikKLSAgICAgIGVjaG8gImk2ODYtbGludXgtYW5kcm9pZCIKKyAgICAgIGVjaG8gIng4Nl82NC1saW51eC1hbmRyb2lkIgorICAgICAgOzsKKyAgICB4ODZfNjQpCisgICAgICBlY2hvICJ4ODZfNjQtbGludXgtYW5kcm9pZCIKICAgICAgIDs7CiAgICAgbWlwcykKICAgICAgIGVjaG8gIm1pcHNlbC1saW51eC1hbmRyb2lkIgpAQCAtMzIzLDEyICszMzIsMjIgQEAKICAgZXNhYwogfQogCi1HQ0NfVkVSU0lPTj00LjcKLUNMQU5HX1ZFUlNJT049My4xCitHQ0NfVkVSU0lPTj00LjgKK0NMQU5HX1ZFUlNJT049My4yCiAKIGdldF9wcmVidWlsdF9nY2NfZGlyX2Zvcl9hcmNoICgpIHsKICAgbG9jYWwgYXJjaD0kMQogICBsb2NhbCB0YXJnZXQ9JChnZXRfYnVpbGRfYXJjaF90YXJnZXQgJGFyY2gpCisgICMgQWRqdXN0ICRhcmNoIGZvciB4ODZfNjQgYmVjYXVzZSB0aGUgcHJlYnVpbHRzIGFyZSBhY3R1YWxseQorICAjIHVuZGVyIHByZWJ1aWx0cy9nY2MvPGhvc3Q+L3g4Ni8KKyAgY2FzZSAkYXJjaCBpbgorICAgIHg4Nl82NCkKKyAgICAgICAgYXJjaD14ODYKKyAgICAgICAgOzsKKyAgICBhcm02NCkKKyAgICAgICAgYXJjaD1hYXJjaDY0CisgICAgICAgIDs7CisgIGVzYWMKICAgZWNobyAiJEFORFJPSURfQlVJTERfVE9QL3ByZWJ1aWx0cy9nY2MvJEFORFJPSURfSE9TVF9UQUcvJGFyY2gvJHRhcmdldC0kR0NDX1ZFUlNJT04iCiB9CiAKQEAgLTM4NCw3ICs0MDMsNyBAQAogCiAgICMgRm9yY2UgLW0zMiBmbGFnIHdoZW4gbmVlZGVkIGZvciAzMi1iaXQgYnVpbGRzLgogICBjYXNlICQxIGluCi0gICAgKi1saW51eC14ODZ8Ki1kYXJ3aW4teDg2fCotZ2VuZXJpYzMyKQorICAgICoteDg2fCotZ2VuZXJpYzMyKQogICAgICAgcmVzdWx0PSIkcmVzdWx0IC1tMzIiCiAgICAgICA7OwogICBlc2FjCkBAIC02MjMsNiArNjQyLDYgQEAKICAgICBkdW1wICJFcnJvciwgdHJ5IGRvaW5nIHRoZSBmb2xsb3dpbmcgdG8gaW5zcGVjdCB0aGUgaXNzdWVzOiIKICAgICBkdW1wICIgICAkUFJPR05BTUUgLS1idWlsZC1kaXI9L3RtcC9teWJ1aWxkIgogICAgIGR1bXAgIiAgIG1ha2UgLUMgL3RtcC9teWJ1aWxkIFY9MSIKLSAgICBkdW1wICIiCisgICAgZHVtcCAiICIKICAgICA7OwogZXNhYwpkaWZmIC0tZ2l0IGEvY3J5cHRvL2Flcy9hc20vYWVzLWFybXY0LlMgYi9jcnlwdG8vYWVzL2FzbS9hZXMtYXJtdjQuUwppbmRleCAyNjk3ZDRjLi4zMzNhNTIyIDEwMDY0NAotLS0gYS9jcnlwdG8vYWVzL2FzbS9hZXMtYXJtdjQuUworKysgYi9jcnlwdG8vYWVzL2FzbS9hZXMtYXJtdjQuUwpAQCAtMSw2ICsxLDUzIEBACi0jaW5jbHVkZSAiYXJtX2FyY2guaCIKKworQCA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQCBXcml0dGVuIGJ5IEFuZHkgUG9seWFrb3YgPGFwcHJvQG9wZW5zc2wub3JnPiBmb3IgdGhlIE9wZW5TU0wKK0AgcHJvamVjdC4gVGhlIG1vZHVsZSBpcywgaG93ZXZlciwgZHVhbCBsaWNlbnNlZCB1bmRlciBPcGVuU1NMIGFuZAorQCBDUllQVE9HQU1TIGxpY2Vuc2VzIGRlcGVuZGluZyBvbiB3aGVyZSB5b3Ugb2J0YWluIGl0LiBGb3IgZnVydGhlcgorQCBkZXRhaWxzIHNlZSBodHRwOi8vd3d3Lm9wZW5zc2wub3JnL35hcHByby9jcnlwdG9nYW1zLy4KK0AgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQCBBRVMgZm9yIEFSTXY0CisKK0AgSmFudWFyeSAyMDA3LgorQAorQCBDb2RlIHVzZXMgc2luZ2xlIDFLIFMtYm94IGFuZCBpcyA+MiB0aW1lcyBmYXN0ZXIgdGhhbiBjb2RlIGdlbmVyYXRlZAorQCBieSBnY2MtMy40LjEuIFRoaXMgaXMgdGhhbmtzIHRvIHVuaXF1ZSBmZWF0dXJlIG9mIEFSTXY0IElTQSwgd2hpY2gKK0AgYWxsb3dzIHRvIG1lcmdlIGxvZ2ljYWwgb3IgYXJpdGhtZXRpYyBvcGVyYXRpb24gd2l0aCBzaGlmdCBvciByb3RhdGUKK0AgaW4gb25lIGluc3RydWN0aW9uIGFuZCBlbWl0IGNvbWJpbmVkIHJlc3VsdCBldmVyeSBjeWNsZS4gVGhlIG1vZHVsZQorQCBpcyBlbmRpYW4tbmV1dHJhbC4gVGhlIHBlcmZvcm1hbmNlIGlzIH40MiBjeWNsZXMvYnl0ZSBmb3IgMTI4LWJpdAorQCBrZXkgW29uIHNpbmdsZS1pc3N1ZSBYc2NhbGUgUFhBMjUwIGNvcmVdLgorCitAIE1heSAyMDA3LgorQAorQCBBRVNfc2V0X1tlbnxkZV1jcnlwdF9rZXkgaXMgYWRkZWQuCisKK0AgSnVseSAyMDEwLgorQAorQCBSZXNjaGVkdWxpbmcgZm9yIGR1YWwtaXNzdWUgcGlwZWxpbmUgcmVzdWx0ZWQgaW4gMTIlIGltcHJvdmVtZW50IG9uCitAIENvcnRleCBBOCBjb3JlIGFuZCB+MjUgY3ljbGVzIHBlciBieXRlIHByb2Nlc3NlZCB3aXRoIDEyOC1iaXQga2V5LgorCitAIEZlYnJ1YXJ5IDIwMTEuCitACitAIFByb2ZpbGVyLWFzc2lzdGVkIGFuZCBwbGF0Zm9ybS1zcGVjaWZpYyBvcHRpbWl6YXRpb24gcmVzdWx0ZWQgaW4gMTYlCitAIGltcHJvdmVtZW50IG9uIENvcnRleCBBOCBjb3JlIGFuZCB+MjEuNSBjeWNsZXMgcGVyIGJ5dGUuCisKKyNpZm5kZWYgX19LRVJORUxfXworIyBpbmNsdWRlICJhcm1fYXJjaC5oIgorI2Vsc2UKKyMgZGVmaW5lIF9fQVJNX0FSQ0hfXyBfX0xJTlVYX0FSTV9BUkNIX18KKyNlbmRpZgorCiAudGV4dAorI2lmIF9fQVJNX0FSQ0hfXzw3CiAuY29kZQkzMgorI2Vsc2UKKy5zeW50YXgJdW5pZmllZAorIyBpZmRlZiBfX3RodW1iMl9fCisudGh1bWIKKyMgZWxzZQorLmNvZGUJMzIKKyMgZW5kaWYKKyNlbmRpZgogCiAudHlwZQlBRVNfVGUsJW9iamVjdAogLmFsaWduCTUKQEAgLTExNCw3ICsxNjEsMTEgQEAKIC50eXBlICAgQUVTX2VuY3J5cHQsJWZ1bmN0aW9uCiAuYWxpZ24JNQogQUVTX2VuY3J5cHQ6CisjaWYgX19BUk1fQVJDSF9fPDcKIAlzdWIJcjMscGMsIzgJCUAgQUVTX2VuY3J5cHQKKyNlbHNlCisJYWRyCXIzLEFFU19lbmNyeXB0CisjZW5kaWYKIAlzdG1kYiAgIHNwISx7cjEscjQtcjEyLGxyfQogCW1vdglyMTIscjAJCUAgaW5wCiAJbW92CXIxMSxyMgpAQCAtMzU2LDExICs0MDcsMjEgQEAKIC5hbGlnbgk1CiBwcml2YXRlX0FFU19zZXRfZW5jcnlwdF9rZXk6CiBfYXJtdjRfQUVTX3NldF9lbmNyeXB0X2tleToKKyNpZiBfX0FSTV9BUkNIX188NwogCXN1YglyMyxwYywjOAkJQCBBRVNfc2V0X2VuY3J5cHRfa2V5CisjZWxzZQorCWFkcglyMyxwcml2YXRlX0FFU19zZXRfZW5jcnlwdF9rZXkKKyNlbmRpZgogCXRlcQlyMCwjMAorI2lmIF9fQVJNX0FSQ0hfXz49NworCWl0dAllcQkJCUAgVGh1bWIyIHRoaW5nLCBzYW5pdHkgY2hlY2sgaW4gQVJNCisjZW5kaWYKIAltb3ZlcQlyMCwjLTEKIAliZXEJLkxhYnJ0CiAJdGVxCXIyLCMwCisjaWYgX19BUk1fQVJDSF9fPj03CisJaXR0CWVxCQkJQCBUaHVtYjIgdGhpbmcsIHNhbml0eSBjaGVjayBpbiBBUk0KKyNlbmRpZgogCW1vdmVxCXIwLCMtMQogCWJlcQkuTGFicnQKIApAQCAtMzY5LDYgKzQzMCw5IEBACiAJdGVxCXIxLCMxOTIKIAliZXEJLkxvawogCXRlcQlyMSwjMjU2CisjaWYgX19BUk1fQVJDSF9fPj03CisJaXR0CW5lCQkJQCBUaHVtYjIgdGhpbmcsIHNhbml0eSBjaGVjayBpbiBBUk0KKyNlbmRpZgogCW1vdm5lCXIwLCMtMQogCWJuZQkuTGFicnQKIApAQCAtNTIzLDYgKzU4Nyw5IEBACiAJc3RyCXIyLFtyMTEsIy0xNl0KIAlzdWJzCXIxMixyMTIsIzEKIAlzdHIJcjMsW3IxMSwjLTEyXQorI2lmIF9fQVJNX0FSQ0hfXz49NworCWl0dAllcQkJCQlAIFRodW1iMiB0aGluZywgc2FuaXR5IGNoZWNrIGluIEFSTQorI2VuZGlmCiAJc3ViZXEJcjIscjExLCMyMTYKIAliZXEJLkxkb25lCiAKQEAgLTU5Miw2ICs2NTksOSBAQAogCXN0cglyMixbcjExLCMtMjRdCiAJc3VicwlyMTIscjEyLCMxCiAJc3RyCXIzLFtyMTEsIy0yMF0KKyNpZiBfX0FSTV9BUkNIX18+PTcKKwlpdHQJZXEJCQkJQCBUaHVtYjIgdGhpbmcsIHNhbml0eSBjaGVjayBpbiBBUk0KKyNlbmRpZgogCXN1YmVxCXIyLHIxMSwjMjU2CiAJYmVxCS5MZG9uZQogCkBAIC02MjEsMTEgKzY5MSwxNyBAQAogCXN0cglyOSxbcjExLCMtNF0KIAliCS5MMjU2X2xvb3AKIAorLmFsaWduCTIKIC5MZG9uZToJbW92CXIwLCMwCiAJbGRtaWEgICBzcCEse3I0LXIxMixscn0KLS5MYWJydDoJdHN0CWxyLCMxCisuTGFicnQ6CisjaWYgX19BUk1fQVJDSF9fPj01CisJYngJbHIJCQkJQCAud29yZAkweGUxMmZmZjFlCisjZWxzZQorCXRzdAlsciwjMQogCW1vdmVxCXBjLGxyCQkJQCBiZSBiaW5hcnkgY29tcGF0aWJsZSB3aXRoIFY0LCB5ZXQKIAkud29yZAkweGUxMmZmZjFlCQkJQCBpbnRlcm9wZXJhYmxlIHdpdGggVGh1bWIgSVNBOi0pCisjZW5kaWYKIC5zaXplCXByaXZhdGVfQUVTX3NldF9lbmNyeXB0X2tleSwuLXByaXZhdGVfQUVTX3NldF9lbmNyeXB0X2tleQogCiAuZ2xvYmFsIHByaXZhdGVfQUVTX3NldF9kZWNyeXB0X2tleQpAQCAtNjM1LDM0ICs3MTEsNTcgQEAKIAlzdHIJbHIsW3NwLCMtNF0hICAgICAgICAgICAgQCBwdXNoIGxyCiAJYmwJX2FybXY0X0FFU19zZXRfZW5jcnlwdF9rZXkKIAl0ZXEJcjAsIzAKLQlsZHJuZQlscixbc3BdLCM0ICAgICAgICAgICAgICBAIHBvcCBscgorCWxkcglscixbc3BdLCM0ICAgICAgICAgICAgICBAIHBvcCBscgogCWJuZQkuTGFicnQKIAotCXN0bWRiICAgc3AhLHtyNC1yMTJ9CisJbW92CXIwLHIyCQkJQCBBRVNfc2V0X2VuY3J5cHRfa2V5IHByZXNlcnZlcyByMiwKKwltb3YJcjEscjIJCQlAIHdoaWNoIGlzIEFFU19LRVkgKmtleQorCWIJX2FybXY0X0FFU19zZXRfZW5jMmRlY19rZXkKKy5zaXplCXByaXZhdGVfQUVTX3NldF9kZWNyeXB0X2tleSwuLXByaXZhdGVfQUVTX3NldF9kZWNyeXB0X2tleQogCi0JbGRyCXIxMixbcjIsIzI0MF0JQCBBRVNfc2V0X2VuY3J5cHRfa2V5IHByZXNlcnZlcyByMiwKLQltb3YJcjExLHIyCQkJQCB3aGljaCBpcyBBRVNfS0VZICprZXkKLQltb3YJcjcscjIKLQlhZGQJcjgscjIscjEyLGxzbCM0CitAIHZvaWQgQUVTX3NldF9lbmMyZGVjX2tleShjb25zdCBBRVNfS0VZICppbnAsQUVTX0tFWSAqb3V0KQorLmdsb2JhbAlBRVNfc2V0X2VuYzJkZWNfa2V5CisudHlwZQlBRVNfc2V0X2VuYzJkZWNfa2V5LCVmdW5jdGlvbgorLmFsaWduCTUKK0FFU19zZXRfZW5jMmRlY19rZXk6CitfYXJtdjRfQUVTX3NldF9lbmMyZGVjX2tleToKKwlzdG1kYiAgIHNwISx7cjQtcjEyLGxyfQogCi0uTGludjoJbGRyCXIwLFtyN10KKwlsZHIJcjEyLFtyMCwjMjQwXQorCW1vdglyNyxyMAkJCUAgaW5wdXQKKwlhZGQJcjgscjAscjEyLGxzbCM0CisJbW92CXIxMSxyMQkJCUAgb3VwdXQKKwlhZGQJcjEwLHIxLHIxMixsc2wjNAorCXN0cglyMTIsW3IxLCMyNDBdCisKKy5MaW52OglsZHIJcjAsW3I3XSwjMTYKKwlsZHIJcjEsW3I3LCMtMTJdCisJbGRyCXIyLFtyNywjLThdCisJbGRyCXIzLFtyNywjLTRdCisJbGRyCXI0LFtyOF0sIy0xNgorCWxkcglyNSxbcjgsIzE2KzRdCisJbGRyCXI2LFtyOCwjMTYrOF0KKwlsZHIJcjksW3I4LCMxNisxMl0KKwlzdHIJcjAsW3IxMF0sIy0xNgorCXN0cglyMSxbcjEwLCMxNis0XQorCXN0cglyMixbcjEwLCMxNis4XQorCXN0cglyMyxbcjEwLCMxNisxMl0KKwlzdHIJcjQsW3IxMV0sIzE2CisJc3RyCXI1LFtyMTEsIy0xMl0KKwlzdHIJcjYsW3IxMSwjLThdCisJc3RyCXI5LFtyMTEsIy00XQorCXRlcQlyNyxyOAorCWJuZQkuTGludgorCisJbGRyCXIwLFtyN10KIAlsZHIJcjEsW3I3LCM0XQogCWxkcglyMixbcjcsIzhdCiAJbGRyCXIzLFtyNywjMTJdCi0JbGRyCXI0LFtyOF0KLQlsZHIJcjUsW3I4LCM0XQotCWxkcglyNixbcjgsIzhdCi0JbGRyCXI5LFtyOCwjMTJdCi0Jc3RyCXIwLFtyOF0sIy0xNgotCXN0cglyMSxbcjgsIzE2KzRdCi0Jc3RyCXIyLFtyOCwjMTYrOF0KLQlzdHIJcjMsW3I4LCMxNisxMl0KLQlzdHIJcjQsW3I3XSwjMTYKLQlzdHIJcjUsW3I3LCMtMTJdCi0Jc3RyCXI2LFtyNywjLThdCi0Jc3RyCXI5LFtyNywjLTRdCi0JdGVxCXI3LHI4Ci0JYm5lCS5MaW52CisJc3RyCXIwLFtyMTFdCisJc3RyCXIxLFtyMTEsIzRdCisJc3RyCXIyLFtyMTEsIzhdCisJc3RyCXIzLFtyMTEsIzEyXQorCXN1YglyMTEscjExLHIxMixsc2wjMwogCWxkcglyMCxbcjExLCMxNl0hCQlAIHByZWZldGNoIHRwMQogCW1vdglyNywjMHg4MAogCW1vdglyOCwjMHgxYgpAQCAtNzE1LDcgKzgxNCw3IEBACiAJbW92ZXEJcGMsbHIJCQlAIGJlIGJpbmFyeSBjb21wYXRpYmxlIHdpdGggVjQsIHlldAogCS53b3JkCTB4ZTEyZmZmMWUJCQlAIGludGVyb3BlcmFibGUgd2l0aCBUaHVtYiBJU0E6LSkKICNlbmRpZgotLnNpemUJcHJpdmF0ZV9BRVNfc2V0X2RlY3J5cHRfa2V5LC4tcHJpdmF0ZV9BRVNfc2V0X2RlY3J5cHRfa2V5Cisuc2l6ZQlBRVNfc2V0X2VuYzJkZWNfa2V5LC4tQUVTX3NldF9lbmMyZGVjX2tleQogCiAudHlwZQlBRVNfVGQsJW9iamVjdAogLmFsaWduCTUKQEAgLTgyNSw3ICs5MjQsMTEgQEAKIC50eXBlICAgQUVTX2RlY3J5cHQsJWZ1bmN0aW9uCiAuYWxpZ24JNQogQUVTX2RlY3J5cHQ6CisjaWYgX19BUk1fQVJDSF9fPDcKIAlzdWIJcjMscGMsIzgJCUAgQUVTX2RlY3J5cHQKKyNlbHNlCisJYWRyCXIzLEFFU19kZWNyeXB0CisjZW5kaWYKIAlzdG1kYiAgIHNwISx7cjEscjQtcjEyLGxyfQogCW1vdglyMTIscjAJCUAgaW5wCiAJbW92CXIxMSxyMgpAQCAtMTAyMiw4ICsxMTI1LDkgQEAKIAlsZHJiCXI2LFtyMTAscjldCQlAIFRkNFtzMD4+MF0KIAlhbmQJcjksbHIscjEsbHNyIzgKIAorCWFkZAlyMSxyMTAscjEsbHNyIzI0CiAJbGRyYglyNyxbcjEwLHI3XQkJQCBUZDRbczE+PjBdCi0JbGRyYglyMSxbcjEwLHIxLGxzciMyNF0JQCBUZDRbczE+PjI0XQorCWxkcmIJcjEsW3IxXQkJQCBUZDRbczE+PjI0XQogCWxkcmIJcjgsW3IxMCxyOF0JCUAgVGQ0W3MxPj4xNl0KIAllb3IJcjAscjcscjAsbHNsIzI0CiAJbGRyYglyOSxbcjEwLHI5XQkJQCBUZDRbczE+PjhdCkBAIC0xMDM2LDcgKzExNDAsOCBAQAogCWxkcmIJcjgsW3IxMCxyOF0JCUAgVGQ0W3MyPj4wXQogCWFuZAlyOSxscixyMixsc3IjMTYKIAotCWxkcmIJcjIsW3IxMCxyMixsc3IjMjRdCUAgVGQ0W3MyPj4yNF0KKwlhZGQJcjIscjEwLHIyLGxzciMyNAorCWxkcmIJcjIsW3IyXQkJQCBUZDRbczI+PjI0XQogCWVvcglyMCxyMCxyNyxsc2wjOAogCWxkcmIJcjksW3IxMCxyOV0JCUAgVGQ0W3MyPj4xNl0KIAllb3IJcjEscjgscjEsbHNsIzE2CkBAIC0xMDQ4LDggKzExNTMsOSBAQAogCWxkcmIJcjgsW3IxMCxyOF0JCUAgVGQ0W3MzPj44XQogCWFuZAlyOSxscixyMwkJQCBpMgogCisJYWRkCXIzLHIxMCxyMyxsc3IjMjQKIAlsZHJiCXI5LFtyMTAscjldCQlAIFRkNFtzMz4+MF0KLQlsZHJiCXIzLFtyMTAscjMsbHNyIzI0XQlAIFRkNFtzMz4+MjRdCisJbGRyYglyMyxbcjNdCQlAIFRkNFtzMz4+MjRdCiAJZW9yCXIwLHIwLHI3LGxzbCMxNgogCWxkcglyNyxbcjExLCMwXQogCWVvcglyMSxyMSxyOCxsc2wjOApkaWZmIC0tZ2l0IGEvY3J5cHRvL2Flcy9hc20vYWVzLWFybXY0LnBsIGIvY3J5cHRvL2Flcy9hc20vYWVzLWFybXY0LnBsCmluZGV4IDg2Yjg2YzQuLjRmODkxNzAgMTAwNjQ0Ci0tLSBhL2NyeXB0by9hZXMvYXNtL2Flcy1hcm12NC5wbAorKysgYi9jcnlwdG8vYWVzL2FzbS9hZXMtYXJtdjQucGwKQEAgLTEsNyArMSw3IEBACiAjIS91c3IvYmluL2VudiBwZXJsCiAKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSMgV3JpdHRlbiBieSBBbmR5IFBvbHlha292IDxhcHByb0BmeS5jaGFsbWVycy5zZT4gZm9yIHRoZSBPcGVuU1NMCisjIFdyaXR0ZW4gYnkgQW5keSBQb2x5YWtvdiA8YXBwcm9Ab3BlbnNzbC5vcmc+IGZvciB0aGUgT3BlblNTTAogIyBwcm9qZWN0LiBUaGUgbW9kdWxlIGlzLCBob3dldmVyLCBkdWFsIGxpY2Vuc2VkIHVuZGVyIE9wZW5TU0wgYW5kCiAjIENSWVBUT0dBTVMgbGljZW5zZXMgZGVwZW5kaW5nIG9uIHdoZXJlIHlvdSBvYnRhaW4gaXQuIEZvciBmdXJ0aGVyCiAjIGRldGFpbHMgc2VlIGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvfmFwcHJvL2NyeXB0b2dhbXMvLgpAQCAtNTEsOSArNTEsMjMgQEAKICRyb3VuZHM9InIxMiI7CiAKICRjb2RlPTw8X19fOwotI2luY2x1ZGUgImFybV9hcmNoLmgiCisjaWZuZGVmIF9fS0VSTkVMX18KKyMgaW5jbHVkZSAiYXJtX2FyY2guaCIKKyNlbHNlCisjIGRlZmluZSBfX0FSTV9BUkNIX18gX19MSU5VWF9BUk1fQVJDSF9fCisjZW5kaWYKKwogLnRleHQKKyNpZiBfX0FSTV9BUkNIX188NwogLmNvZGUJMzIKKyNlbHNlCisuc3ludGF4CXVuaWZpZWQKKyMgaWZkZWYgX190aHVtYjJfXworLnRodW1iCisjIGVsc2UKKy5jb2RlCTMyCisjIGVuZGlmCisjZW5kaWYKIAogLnR5cGUJQUVTX1RlLCVvYmplY3QKIC5hbGlnbgk1CkBAIC0xNjcsNyArMTgxLDExIEBACiAudHlwZSAgIEFFU19lbmNyeXB0LCVmdW5jdGlvbgogLmFsaWduCTUKIEFFU19lbmNyeXB0OgorI2lmIF9fQVJNX0FSQ0hfXzw3CiAJc3ViCXIzLHBjLCM4CQlAIEFFU19lbmNyeXB0CisjZWxzZQorCWFkcglyMyxBRVNfZW5jcnlwdAorI2VuZGlmCiAJc3RtZGIgICBzcCEse3IxLHI0LXIxMixscn0KIAltb3YJJHJvdW5kcyxyMAkJQCBpbnAKIAltb3YJJGtleSxyMgpAQCAtNDA5LDExICs0MjcsMjEgQEAKIC5hbGlnbgk1CiBwcml2YXRlX0FFU19zZXRfZW5jcnlwdF9rZXk6CiBfYXJtdjRfQUVTX3NldF9lbmNyeXB0X2tleToKKyNpZiBfX0FSTV9BUkNIX188NwogCXN1YglyMyxwYywjOAkJQCBBRVNfc2V0X2VuY3J5cHRfa2V5CisjZWxzZQorCWFkcglyMyxwcml2YXRlX0FFU19zZXRfZW5jcnlwdF9rZXkKKyNlbmRpZgogCXRlcQlyMCwjMAorI2lmIF9fQVJNX0FSQ0hfXz49NworCWl0dAllcQkJCUAgVGh1bWIyIHRoaW5nLCBzYW5pdHkgY2hlY2sgaW4gQVJNCisjZW5kaWYKIAltb3ZlcQlyMCwjLTEKIAliZXEJLkxhYnJ0CiAJdGVxCXIyLCMwCisjaWYgX19BUk1fQVJDSF9fPj03CisJaXR0CWVxCQkJQCBUaHVtYjIgdGhpbmcsIHNhbml0eSBjaGVjayBpbiBBUk0KKyNlbmRpZgogCW1vdmVxCXIwLCMtMQogCWJlcQkuTGFicnQKIApAQCAtNDIyLDYgKzQ1MCw5IEBACiAJdGVxCXIxLCMxOTIKIAliZXEJLkxvawogCXRlcQlyMSwjMjU2CisjaWYgX19BUk1fQVJDSF9fPj03CisJaXR0CW5lCQkJQCBUaHVtYjIgdGhpbmcsIHNhbml0eSBjaGVjayBpbiBBUk0KKyNlbmRpZgogCW1vdm5lCXIwLCMtMQogCWJuZQkuTGFicnQKIApAQCAtNTc2LDYgKzYwNyw5IEBACiAJc3RyCSRzMixbJGtleSwjLTE2XQogCXN1YnMJJHJvdW5kcywkcm91bmRzLCMxCiAJc3RyCSRzMyxbJGtleSwjLTEyXQorI2lmIF9fQVJNX0FSQ0hfXz49NworCWl0dAllcQkJCQlAIFRodW1iMiB0aGluZywgc2FuaXR5IGNoZWNrIGluIEFSTQorI2VuZGlmCiAJc3ViZXEJcjIsJGtleSwjMjE2CiAJYmVxCS5MZG9uZQogCkBAIC02NDUsNiArNjc5LDkgQEAKIAlzdHIJJHMyLFska2V5LCMtMjRdCiAJc3Vicwkkcm91bmRzLCRyb3VuZHMsIzEKIAlzdHIJJHMzLFska2V5LCMtMjBdCisjaWYgX19BUk1fQVJDSF9fPj03CisJaXR0CWVxCQkJCUAgVGh1bWIyIHRoaW5nLCBzYW5pdHkgY2hlY2sgaW4gQVJNCisjZW5kaWYKIAlzdWJlcQlyMiwka2V5LCMyNTYKIAliZXEJLkxkb25lCiAKQEAgLTY3NCwxMSArNzExLDE3IEBACiAJc3RyCSRpMyxbJGtleSwjLTRdCiAJYgkuTDI1Nl9sb29wCiAKKy5hbGlnbgkyCiAuTGRvbmU6CW1vdglyMCwjMAogCWxkbWlhICAgc3AhLHtyNC1yMTIsbHJ9Ci0uTGFicnQ6CXRzdAlsciwjMQorLkxhYnJ0OgorI2lmIF9fQVJNX0FSQ0hfXz49NQorCXJldAkJCQlAIGJ4IGxyCisjZWxzZQorCXRzdAlsciwjMQogCW1vdmVxCXBjLGxyCQkJQCBiZSBiaW5hcnkgY29tcGF0aWJsZSB3aXRoIFY0LCB5ZXQKIAlieAlscgkJCUAgaW50ZXJvcGVyYWJsZSB3aXRoIFRodW1iIElTQTotKQorI2VuZGlmCiAuc2l6ZQlwcml2YXRlX0FFU19zZXRfZW5jcnlwdF9rZXksLi1wcml2YXRlX0FFU19zZXRfZW5jcnlwdF9rZXkKIAogLmdsb2JhbCBwcml2YXRlX0FFU19zZXRfZGVjcnlwdF9rZXkKQEAgLTY4OCwzNCArNzMxLDU3IEBACiAJc3RyCWxyLFtzcCwjLTRdISAgICAgICAgICAgIEAgcHVzaCBscgogCWJsCV9hcm12NF9BRVNfc2V0X2VuY3J5cHRfa2V5CiAJdGVxCXIwLCMwCi0JbGRybmUJbHIsW3NwXSwjNCAgICAgICAgICAgICAgQCBwb3AgbHIKKwlsZHIJbHIsW3NwXSwjNCAgICAgICAgICAgICAgQCBwb3AgbHIKIAlibmUJLkxhYnJ0CiAKLQlzdG1kYiAgIHNwISx7cjQtcjEyfQorCW1vdglyMCxyMgkJCUAgQUVTX3NldF9lbmNyeXB0X2tleSBwcmVzZXJ2ZXMgcjIsCisJbW92CXIxLHIyCQkJQCB3aGljaCBpcyBBRVNfS0VZICprZXkKKwliCV9hcm12NF9BRVNfc2V0X2VuYzJkZWNfa2V5Cisuc2l6ZQlwcml2YXRlX0FFU19zZXRfZGVjcnlwdF9rZXksLi1wcml2YXRlX0FFU19zZXRfZGVjcnlwdF9rZXkKIAotCWxkcgkkcm91bmRzLFtyMiwjMjQwXQlAIEFFU19zZXRfZW5jcnlwdF9rZXkgcHJlc2VydmVzIHIyLAotCW1vdgkka2V5LHIyCQkJQCB3aGljaCBpcyBBRVNfS0VZICprZXkKLQltb3YJJGkxLHIyCi0JYWRkCSRpMixyMiwkcm91bmRzLGxzbCM0CitAIHZvaWQgQUVTX3NldF9lbmMyZGVjX2tleShjb25zdCBBRVNfS0VZICppbnAsQUVTX0tFWSAqb3V0KQorLmdsb2JhbAlBRVNfc2V0X2VuYzJkZWNfa2V5CisudHlwZQlBRVNfc2V0X2VuYzJkZWNfa2V5LCVmdW5jdGlvbgorLmFsaWduCTUKK0FFU19zZXRfZW5jMmRlY19rZXk6CitfYXJtdjRfQUVTX3NldF9lbmMyZGVjX2tleToKKwlzdG1kYiAgIHNwISx7cjQtcjEyLGxyfQogCi0uTGludjoJbGRyCSRzMCxbJGkxXQorCWxkcgkkcm91bmRzLFtyMCwjMjQwXQorCW1vdgkkaTEscjAJCQlAIGlucHV0CisJYWRkCSRpMixyMCwkcm91bmRzLGxzbCM0CisJbW92CSRrZXkscjEJCQlAIG91cHV0CisJYWRkCSR0YmwscjEsJHJvdW5kcyxsc2wjNAorCXN0cgkkcm91bmRzLFtyMSwjMjQwXQorCisuTGludjoJbGRyCSRzMCxbJGkxXSwjMTYKKwlsZHIJJHMxLFskaTEsIy0xMl0KKwlsZHIJJHMyLFskaTEsIy04XQorCWxkcgkkczMsWyRpMSwjLTRdCisJbGRyCSR0MSxbJGkyXSwjLTE2CisJbGRyCSR0MixbJGkyLCMxNis0XQorCWxkcgkkdDMsWyRpMiwjMTYrOF0KKwlsZHIJJGkzLFskaTIsIzE2KzEyXQorCXN0cgkkczAsWyR0YmxdLCMtMTYKKwlzdHIJJHMxLFskdGJsLCMxNis0XQorCXN0cgkkczIsWyR0YmwsIzE2KzhdCisJc3RyCSRzMyxbJHRibCwjMTYrMTJdCisJc3RyCSR0MSxbJGtleV0sIzE2CisJc3RyCSR0MixbJGtleSwjLTEyXQorCXN0cgkkdDMsWyRrZXksIy04XQorCXN0cgkkaTMsWyRrZXksIy00XQorCXRlcQkkaTEsJGkyCisJYm5lCS5MaW52CisKKwlsZHIJJHMwLFskaTFdCiAJbGRyCSRzMSxbJGkxLCM0XQogCWxkcgkkczIsWyRpMSwjOF0KIAlsZHIJJHMzLFskaTEsIzEyXQotCWxkcgkkdDEsWyRpMl0KLQlsZHIJJHQyLFskaTIsIzRdCi0JbGRyCSR0MyxbJGkyLCM4XQotCWxkcgkkaTMsWyRpMiwjMTJdCi0Jc3RyCSRzMCxbJGkyXSwjLTE2Ci0Jc3RyCSRzMSxbJGkyLCMxNis0XQotCXN0cgkkczIsWyRpMiwjMTYrOF0KLQlzdHIJJHMzLFskaTIsIzE2KzEyXQotCXN0cgkkdDEsWyRpMV0sIzE2Ci0Jc3RyCSR0MixbJGkxLCMtMTJdCi0Jc3RyCSR0MyxbJGkxLCMtOF0KLQlzdHIJJGkzLFskaTEsIy00XQotCXRlcQkkaTEsJGkyCi0JYm5lCS5MaW52CisJc3RyCSRzMCxbJGtleV0KKwlzdHIJJHMxLFska2V5LCM0XQorCXN0cgkkczIsWyRrZXksIzhdCisJc3RyCSRzMyxbJGtleSwjMTJdCisJc3ViCSRrZXksJGtleSwkcm91bmRzLGxzbCMzCiBfX18KICRtYXNrODA9JGkxOwogJG1hc2sxYj0kaTI7CkBAIC03NzMsNyArODM5LDcgQEAKIAltb3ZlcQlwYyxscgkJCUAgYmUgYmluYXJ5IGNvbXBhdGlibGUgd2l0aCBWNCwgeWV0CiAJYngJbHIJCQlAIGludGVyb3BlcmFibGUgd2l0aCBUaHVtYiBJU0E6LSkKICNlbmRpZgotLnNpemUJcHJpdmF0ZV9BRVNfc2V0X2RlY3J5cHRfa2V5LC4tcHJpdmF0ZV9BRVNfc2V0X2RlY3J5cHRfa2V5Cisuc2l6ZQlBRVNfc2V0X2VuYzJkZWNfa2V5LC4tQUVTX3NldF9lbmMyZGVjX2tleQogCiAudHlwZQlBRVNfVGQsJW9iamVjdAogLmFsaWduCTUKQEAgLTg4Myw3ICs5NDksMTEgQEAKIC50eXBlICAgQUVTX2RlY3J5cHQsJWZ1bmN0aW9uCiAuYWxpZ24JNQogQUVTX2RlY3J5cHQ6CisjaWYgX19BUk1fQVJDSF9fPDcKIAlzdWIJcjMscGMsIzgJCUAgQUVTX2RlY3J5cHQKKyNlbHNlCisJYWRyCXIzLEFFU19kZWNyeXB0CisjZW5kaWYKIAlzdG1kYiAgIHNwISx7cjEscjQtcjEyLGxyfQogCW1vdgkkcm91bmRzLHIwCQlAIGlucAogCW1vdgkka2V5LHIyCkBAIC0xMDgwLDggKzExNTAsOSBAQAogCWxkcmIJJHQzLFskdGJsLCRpM10JCUAgVGQ0W3MwPj4wXQogCWFuZAkkaTMsbHIsJHMxLGxzciM4CiAKKwlhZGQJJHMxLCR0YmwsJHMxLGxzciMyNAogCWxkcmIJJGkxLFskdGJsLCRpMV0JCUAgVGQ0W3MxPj4wXQotCWxkcmIJJHMxLFskdGJsLCRzMSxsc3IjMjRdCUAgVGQ0W3MxPj4yNF0KKwlsZHJiCSRzMSxbJHMxXQkJQCBUZDRbczE+PjI0XQogCWxkcmIJJGkyLFskdGJsLCRpMl0JCUAgVGQ0W3MxPj4xNl0KIAllb3IJJHMwLCRpMSwkczAsbHNsIzI0CiAJbGRyYgkkaTMsWyR0YmwsJGkzXQkJQCBUZDRbczE+PjhdCkBAIC0xMDk0LDcgKzExNjUsOCBAQAogCWxkcmIJJGkyLFskdGJsLCRpMl0JCUAgVGQ0W3MyPj4wXQogCWFuZAkkaTMsbHIsJHMyLGxzciMxNgogCi0JbGRyYgkkczIsWyR0YmwsJHMyLGxzciMyNF0JQCBUZDRbczI+PjI0XQorCWFkZAkkczIsJHRibCwkczIsbHNyIzI0CisJbGRyYgkkczIsWyRzMl0JCUAgVGQ0W3MyPj4yNF0KIAllb3IJJHMwLCRzMCwkaTEsbHNsIzgKIAlsZHJiCSRpMyxbJHRibCwkaTNdCQlAIFRkNFtzMj4+MTZdCiAJZW9yCSRzMSwkaTIsJHMxLGxzbCMxNgpAQCAtMTEwNiw4ICsxMTc4LDkgQEAKIAlsZHJiCSRpMixbJHRibCwkaTJdCQlAIFRkNFtzMz4+OF0KIAlhbmQJJGkzLGxyLCRzMwkJQCBpMgogCisJYWRkCSRzMywkdGJsLCRzMyxsc3IjMjQKIAlsZHJiCSRpMyxbJHRibCwkaTNdCQlAIFRkNFtzMz4+MF0KLQlsZHJiCSRzMyxbJHRibCwkczMsbHNyIzI0XQlAIFRkNFtzMz4+MjRdCisJbGRyYgkkczMsWyRzM10JCUAgVGQ0W3MzPj4yNF0KIAllb3IJJHMwLCRzMCwkaTEsbHNsIzE2CiAJbGRyCSRpMSxbJGtleSwjMF0KIAllb3IJJHMxLCRzMSwkaTIsbHNsIzgKQEAgLTExMzAsNSArMTIwMywxNSBAQAogX19fCiAKICRjb2RlID1+IHMvXGJieFxzK2xyXGIvLndvcmRcdDB4ZTEyZmZmMWUvZ207CSMgbWFrZSBpdCBwb3NzaWJsZSB0byBjb21waWxlIHdpdGggLW1hcmNoPWFybXY0CiskY29kZSA9fiBzL1xicmV0XGIvYnhcdGxyL2dtOworCitvcGVuIFNFTEYsJDA7Cit3aGlsZSg8U0VMRj4pIHsKKwluZXh0IGlmICgvXiMhLyk7CisJbGFzdCBpZiAoIXMvXiMvQC8gYW5kICEvXiQvKTsKKwlwcmludDsKK30KK2Nsb3NlIFNFTEY7CisKIHByaW50ICRjb2RlOwogY2xvc2UgU1RET1VUOwkjIGVuZm9yY2UgZmx1c2gKZGlmZiAtLWdpdCBhL2NyeXB0by9hZXMvYXNtL2Flc3Y4LWFybXgtNjQuUyBiL2NyeXB0by9hZXMvYXNtL2Flc3Y4LWFybXgtNjQuUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTBhMTNkCi0tLSAvZGV2L251bGwKKysrIGIvY3J5cHRvL2Flcy9hc20vYWVzdjgtYXJteC02NC5TCkBAIC0wLDAgKzEsNzYxIEBACisjaW5jbHVkZSAiYXJtX2FyY2guaCIKKworI2lmIF9fQVJNX0FSQ0hfXz49NworLnRleHQKKy5hcmNoCWFybXY4LWErY3J5cHRvCisuYWxpZ24JNQorcmNvbjoKKy5sb25nCTB4MDEsMHgwMSwweDAxLDB4MDEKKy5sb25nCTB4MGMwZjBlMGQsMHgwYzBmMGUwZCwweDBjMGYwZTBkLDB4MGMwZjBlMGQJLy8gcm90YXRlLW4tc3BsYXQKKy5sb25nCTB4MWIsMHgxYiwweDFiLDB4MWIKKworLmdsb2JsCWFlc192OF9zZXRfZW5jcnlwdF9rZXkKKy50eXBlCWFlc192OF9zZXRfZW5jcnlwdF9rZXksJWZ1bmN0aW9uCisuYWxpZ24JNQorYWVzX3Y4X3NldF9lbmNyeXB0X2tleToKKy5MZW5jX2tleToKKwlzdHAJeDI5LHgzMCxbc3AsIy0xNl0hCisJYWRkCXgyOSxzcCwjMAorCWFkcgl4MyxyY29uCisJY21wCXcxLCMxOTIKKworCWVvcgl2MC4xNmIsdjAuMTZiLHYwLjE2YgorCWxkMQl7djMuMTZifSxbeDBdLCMxNgorCW1vdgl3MSwjOAkJLy8gcmV1c2UgdzEKKwlsZDEJe3YxLjRzLHYyLjRzfSxbeDNdLCMzMgorCisJYi5sdAkuTG9vcDEyOAorCWIuZXEJLkwxOTIKKwliCS5MMjU2CisKKy5hbGlnbgk0CisuTG9vcDEyODoKKwl0YmwJdjYuMTZiLHt2My4xNmJ9LHYyLjE2YgorCWV4dAl2NS4xNmIsdjAuMTZiLHYzLjE2YiwjMTIKKwlzdDEJe3YzLjRzfSxbeDJdLCMxNgorCWFlc2UJdjYuMTZiLHYwLjE2YgorCXN1YnMJdzEsdzEsIzEKKworCWVvcgl2My4xNmIsdjMuMTZiLHY1LjE2YgorCWV4dAl2NS4xNmIsdjAuMTZiLHY1LjE2YiwjMTIKKwllb3IJdjMuMTZiLHYzLjE2Yix2NS4xNmIKKwlleHQJdjUuMTZiLHYwLjE2Yix2NS4xNmIsIzEyCisJIGVvcgl2Ni4xNmIsdjYuMTZiLHYxLjE2YgorCWVvcgl2My4xNmIsdjMuMTZiLHY1LjE2YgorCXNobAl2MS4xNmIsdjEuMTZiLCMxCisJZW9yCXYzLjE2Yix2My4xNmIsdjYuMTZiCisJYi5uZQkuTG9vcDEyOAorCisJbGQxCXt2MS40c30sW3gzXQorCisJdGJsCXY2LjE2Yix7djMuMTZifSx2Mi4xNmIKKwlleHQJdjUuMTZiLHYwLjE2Yix2My4xNmIsIzEyCisJc3QxCXt2My40c30sW3gyXSwjMTYKKwlhZXNlCXY2LjE2Yix2MC4xNmIKKworCWVvcgl2My4xNmIsdjMuMTZiLHY1LjE2YgorCWV4dAl2NS4xNmIsdjAuMTZiLHY1LjE2YiwjMTIKKwllb3IJdjMuMTZiLHYzLjE2Yix2NS4xNmIKKwlleHQJdjUuMTZiLHYwLjE2Yix2NS4xNmIsIzEyCisJIGVvcgl2Ni4xNmIsdjYuMTZiLHYxLjE2YgorCWVvcgl2My4xNmIsdjMuMTZiLHY1LjE2YgorCXNobAl2MS4xNmIsdjEuMTZiLCMxCisJZW9yCXYzLjE2Yix2My4xNmIsdjYuMTZiCisKKwl0YmwJdjYuMTZiLHt2My4xNmJ9LHYyLjE2YgorCWV4dAl2NS4xNmIsdjAuMTZiLHYzLjE2YiwjMTIKKwlzdDEJe3YzLjRzfSxbeDJdLCMxNgorCWFlc2UJdjYuMTZiLHYwLjE2YgorCisJZW9yCXYzLjE2Yix2My4xNmIsdjUuMTZiCisJZXh0CXY1LjE2Yix2MC4xNmIsdjUuMTZiLCMxMgorCWVvcgl2My4xNmIsdjMuMTZiLHY1LjE2YgorCWV4dAl2NS4xNmIsdjAuMTZiLHY1LjE2YiwjMTIKKwkgZW9yCXY2LjE2Yix2Ni4xNmIsdjEuMTZiCisJZW9yCXYzLjE2Yix2My4xNmIsdjUuMTZiCisJZW9yCXYzLjE2Yix2My4xNmIsdjYuMTZiCisJc3QxCXt2My40c30sW3gyXQorCWFkZAl4Mix4MiwjMHg1MAorCisJbW92CXcxMiwjMTAKKwliCS5MZG9uZQorCisuYWxpZ24JNAorLkwxOTI6CisJbGQxCXt2NC44Yn0sW3gwXSwjOAorCW1vdmkJdjYuMTZiLCM4CQkJLy8gYm9ycm93IHY2LjE2YgorCXN0MQl7djMuNHN9LFt4Ml0sIzE2CisJc3ViCXYyLjE2Yix2Mi4xNmIsdjYuMTZiCS8vIGFkanVzdCB0aGUgbWFzaworCisuTG9vcDE5MjoKKwl0YmwJdjYuMTZiLHt2NC4xNmJ9LHYyLjE2YgorCWV4dAl2NS4xNmIsdjAuMTZiLHYzLjE2YiwjMTIKKwlzdDEJe3Y0LjhifSxbeDJdLCM4CisJYWVzZQl2Ni4xNmIsdjAuMTZiCisJc3Vicwl3MSx3MSwjMQorCisJZW9yCXYzLjE2Yix2My4xNmIsdjUuMTZiCisJZXh0CXY1LjE2Yix2MC4xNmIsdjUuMTZiLCMxMgorCWVvcgl2My4xNmIsdjMuMTZiLHY1LjE2YgorCWV4dAl2NS4xNmIsdjAuMTZiLHY1LjE2YiwjMTIKKwllb3IJdjMuMTZiLHYzLjE2Yix2NS4xNmIKKworCWR1cAl2NS40cyx2My5zWzNdCisJZW9yCXY1LjE2Yix2NS4xNmIsdjQuMTZiCisJIGVvcgl2Ni4xNmIsdjYuMTZiLHYxLjE2YgorCWV4dAl2NC4xNmIsdjAuMTZiLHY0LjE2YiwjMTIKKwlzaGwJdjEuMTZiLHYxLjE2YiwjMQorCWVvcgl2NC4xNmIsdjQuMTZiLHY1LjE2YgorCWVvcgl2My4xNmIsdjMuMTZiLHY2LjE2YgorCWVvcgl2NC4xNmIsdjQuMTZiLHY2LjE2YgorCXN0MQl7djMuNHN9LFt4Ml0sIzE2CisJYi5uZQkuTG9vcDE5MgorCisJbW92CXcxMiwjMTIKKwlhZGQJeDIseDIsIzB4MjAKKwliCS5MZG9uZQorCisuYWxpZ24JNAorLkwyNTY6CisJbGQxCXt2NC4xNmJ9LFt4MF0KKwltb3YJdzEsIzcKKwltb3YJdzEyLCMxNAorCXN0MQl7djMuNHN9LFt4Ml0sIzE2CisKKy5Mb29wMjU2OgorCXRibAl2Ni4xNmIse3Y0LjE2Yn0sdjIuMTZiCisJZXh0CXY1LjE2Yix2MC4xNmIsdjMuMTZiLCMxMgorCXN0MQl7djQuNHN9LFt4Ml0sIzE2CisJYWVzZQl2Ni4xNmIsdjAuMTZiCisJc3Vicwl3MSx3MSwjMQorCisJZW9yCXYzLjE2Yix2My4xNmIsdjUuMTZiCisJZXh0CXY1LjE2Yix2MC4xNmIsdjUuMTZiLCMxMgorCWVvcgl2My4xNmIsdjMuMTZiLHY1LjE2YgorCWV4dAl2NS4xNmIsdjAuMTZiLHY1LjE2YiwjMTIKKwkgZW9yCXY2LjE2Yix2Ni4xNmIsdjEuMTZiCisJZW9yCXYzLjE2Yix2My4xNmIsdjUuMTZiCisJc2hsCXYxLjE2Yix2MS4xNmIsIzEKKwllb3IJdjMuMTZiLHYzLjE2Yix2Ni4xNmIKKwlzdDEJe3YzLjRzfSxbeDJdLCMxNgorCWIuZXEJLkxkb25lCisKKwlkdXAJdjYuNHMsdjMuc1szXQkJLy8ganVzdCBzcGxhdAorCWV4dAl2NS4xNmIsdjAuMTZiLHY0LjE2YiwjMTIKKwlhZXNlCXY2LjE2Yix2MC4xNmIKKworCWVvcgl2NC4xNmIsdjQuMTZiLHY1LjE2YgorCWV4dAl2NS4xNmIsdjAuMTZiLHY1LjE2YiwjMTIKKwllb3IJdjQuMTZiLHY0LjE2Yix2NS4xNmIKKwlleHQJdjUuMTZiLHYwLjE2Yix2NS4xNmIsIzEyCisJZW9yCXY0LjE2Yix2NC4xNmIsdjUuMTZiCisKKwllb3IJdjQuMTZiLHY0LjE2Yix2Ni4xNmIKKwliCS5Mb29wMjU2CisKKy5MZG9uZToKKwlzdHIJdzEyLFt4Ml0KKworCWVvcgl4MCx4MCx4MAkJLy8gcmV0dXJuIHZhbHVlCisJbGRyCXgyOSxbc3BdLCMxNgorCXJldAorLnNpemUJYWVzX3Y4X3NldF9lbmNyeXB0X2tleSwuLWFlc192OF9zZXRfZW5jcnlwdF9rZXkKKworLmdsb2JsCWFlc192OF9zZXRfZGVjcnlwdF9rZXkKKy50eXBlCWFlc192OF9zZXRfZGVjcnlwdF9rZXksJWZ1bmN0aW9uCisuYWxpZ24JNQorYWVzX3Y4X3NldF9kZWNyeXB0X2tleToKKwlzdHAJeDI5LHgzMCxbc3AsIy0xNl0hCisJYWRkCXgyOSxzcCwjMAorCWJsCS5MZW5jX2tleQorCisJc3ViCXgyLHgyLCMyNDAJCS8vIHJlc3RvcmUgb3JpZ2luYWwgeDIKKwltb3YJeDQsIy0xNgorCWFkZAl4MCx4Mix4MTIsbHNsIzQJLy8gZW5kIG9mIGtleSBzY2hlZHVsZQorCisJbGQxCXt2MC40c30sW3gyXQorCWxkMQl7djEuNHN9LFt4MF0KKwlzdDEJe3YwLjRzfSxbeDBdLHg0CisJc3QxCXt2MS40c30sW3gyXSwjMTYKKworLkxvb3BfaW1jOgorCWxkMQl7djAuNHN9LFt4Ml0KKwlsZDEJe3YxLjRzfSxbeDBdCisJYWVzaW1jCXYwLjE2Yix2MC4xNmIKKwlhZXNpbWMJdjEuMTZiLHYxLjE2YgorCXN0MQl7djAuNHN9LFt4MF0seDQKKwlzdDEJe3YxLjRzfSxbeDJdLCMxNgorCWNtcAl4MCx4MgorCWIuaGkJLkxvb3BfaW1jCisKKwlsZDEJe3YwLjRzfSxbeDJdCisJYWVzaW1jCXYwLjE2Yix2MC4xNmIKKwlzdDEJe3YwLjRzfSxbeDBdCisKKwllb3IJeDAseDAseDAJCS8vIHJldHVybiB2YWx1ZQorCWxkcAl4MjkseDMwLFtzcF0sIzE2CisJcmV0Cisuc2l6ZQlhZXNfdjhfc2V0X2RlY3J5cHRfa2V5LC4tYWVzX3Y4X3NldF9kZWNyeXB0X2tleQorLmdsb2JsCWFlc192OF9lbmNyeXB0CisudHlwZQlhZXNfdjhfZW5jcnlwdCwlZnVuY3Rpb24KKy5hbGlnbgk1CithZXNfdjhfZW5jcnlwdDoKKwlsZHIJdzMsW3gyLCMyNDBdCisJbGQxCXt2MC40c30sW3gyXSwjMTYKKwlsZDEJe3YyLjE2Yn0sW3gwXQorCXN1Ygl3Myx3MywjMgorCWxkMQl7djEuNHN9LFt4Ml0sIzE2CisKKy5Mb29wX2VuYzoKKwlhZXNlCXYyLjE2Yix2MC4xNmIKKwlsZDEJe3YwLjRzfSxbeDJdLCMxNgorCWFlc21jCXYyLjE2Yix2Mi4xNmIKKwlzdWJzCXczLHczLCMyCisJYWVzZQl2Mi4xNmIsdjEuMTZiCisJbGQxCXt2MS40c30sW3gyXSwjMTYKKwlhZXNtYwl2Mi4xNmIsdjIuMTZiCisJYi5ndAkuTG9vcF9lbmMKKworCWFlc2UJdjIuMTZiLHYwLjE2YgorCWxkMQl7djAuNHN9LFt4Ml0KKwlhZXNtYwl2Mi4xNmIsdjIuMTZiCisJYWVzZQl2Mi4xNmIsdjEuMTZiCisJZW9yCXYyLjE2Yix2Mi4xNmIsdjAuMTZiCisKKwlzdDEJe3YyLjE2Yn0sW3gxXQorCXJldAorLnNpemUJYWVzX3Y4X2VuY3J5cHQsLi1hZXNfdjhfZW5jcnlwdAorLmdsb2JsCWFlc192OF9kZWNyeXB0CisudHlwZQlhZXNfdjhfZGVjcnlwdCwlZnVuY3Rpb24KKy5hbGlnbgk1CithZXNfdjhfZGVjcnlwdDoKKwlsZHIJdzMsW3gyLCMyNDBdCisJbGQxCXt2MC40c30sW3gyXSwjMTYKKwlsZDEJe3YyLjE2Yn0sW3gwXQorCXN1Ygl3Myx3MywjMgorCWxkMQl7djEuNHN9LFt4Ml0sIzE2CisKKy5Mb29wX2RlYzoKKwlhZXNkCXYyLjE2Yix2MC4xNmIKKwlsZDEJe3YwLjRzfSxbeDJdLCMxNgorCWFlc2ltYwl2Mi4xNmIsdjIuMTZiCisJc3Vicwl3Myx3MywjMgorCWFlc2QJdjIuMTZiLHYxLjE2YgorCWxkMQl7djEuNHN9LFt4Ml0sIzE2CisJYWVzaW1jCXYyLjE2Yix2Mi4xNmIKKwliLmd0CS5Mb29wX2RlYworCisJYWVzZAl2Mi4xNmIsdjAuMTZiCisJbGQxCXt2MC40c30sW3gyXQorCWFlc2ltYwl2Mi4xNmIsdjIuMTZiCisJYWVzZAl2Mi4xNmIsdjEuMTZiCisJZW9yCXYyLjE2Yix2Mi4xNmIsdjAuMTZiCisKKwlzdDEJe3YyLjE2Yn0sW3gxXQorCXJldAorLnNpemUJYWVzX3Y4X2RlY3J5cHQsLi1hZXNfdjhfZGVjcnlwdAorLmdsb2JsCWFlc192OF9jYmNfZW5jcnlwdAorLnR5cGUJYWVzX3Y4X2NiY19lbmNyeXB0LCVmdW5jdGlvbgorLmFsaWduCTUKK2Flc192OF9jYmNfZW5jcnlwdDoKKwlzdHAJeDI5LHgzMCxbc3AsIy0xNl0hCisJYWRkCXgyOSxzcCwjMAorCXN1YnMJeDIseDIsIzE2CisJbW92CXg4LCMxNgorCWIubG8JLkxjYmNfYWJvcnQKKwljc2VsCXg4LHh6cix4OCxlcQorCisJY21wCXc1LCMwCQkJLy8gZW4tIG9yIGRlY3J5cHRpbmc/CisJbGRyCXc1LFt4MywjMjQwXQorCWFuZAl4Mix4MiwjLTE2CisJbGQxCXt2Ni4xNmJ9LFt4NF0KKwlsZDEJe3YwLjE2Yn0sW3gwXSx4OAorCisJbGQxCXt2MTYuNHMtdjE3LjRzfSxbeDNdCQkvLyBsb2FkIGtleSBzY2hlZHVsZS4uLgorCXN1Ygl3NSx3NSwjNgorCWFkZAl4Nyx4Myx4NSxsc2wjNAkvLyBwb2ludGVyIHRvIGxhc3QgNyByb3VuZCBrZXlzCisJc3ViCXc1LHc1LCMyCisJbGQxCXt2MTguNHMtdjE5LjRzfSxbeDddLCMzMgorCWxkMQl7djIwLjRzLXYyMS40c30sW3g3XSwjMzIKKwlsZDEJe3YyMi40cy12MjMuNHN9LFt4N10sIzMyCisJbGQxCXt2Ny40c30sW3g3XQorCisJYWRkCXg3LHgzLCMzMgorCW1vdgl3Nix3NQorCWIuZXEJLkxjYmNfZGVjCisKKwljbXAJdzUsIzIKKwllb3IJdjAuMTZiLHYwLjE2Yix2Ni4xNmIKKwllb3IJdjUuMTZiLHYxNi4xNmIsdjcuMTZiCisJYi5lcQkuTGNiY19lbmMxMjgKKworLkxvb3BfY2JjX2VuYzoKKwlhZXNlCXYwLjE2Yix2MTYuMTZiCisJbGQxCXt2MTYuNHN9LFt4N10sIzE2CisJYWVzbWMJdjAuMTZiLHYwLjE2YgorCXN1YnMJdzYsdzYsIzIKKwlhZXNlCXYwLjE2Yix2MTcuMTZiCisJbGQxCXt2MTcuNHN9LFt4N10sIzE2CisJYWVzbWMJdjAuMTZiLHYwLjE2YgorCWIuZ3QJLkxvb3BfY2JjX2VuYworCisJYWVzZQl2MC4xNmIsdjE2LjE2YgorCWFlc21jCXYwLjE2Yix2MC4xNmIKKwkgc3Vicwl4Mix4MiwjMTYKKwlhZXNlCXYwLjE2Yix2MTcuMTZiCisJYWVzbWMJdjAuMTZiLHYwLjE2YgorCSBjc2VsCXg4LHh6cix4OCxlcQorCWFlc2UJdjAuMTZiLHYxOC4xNmIKKwlhZXNtYwl2MC4xNmIsdjAuMTZiCisJIGFkZAl4Nyx4MywjMTYKKwlhZXNlCXYwLjE2Yix2MTkuMTZiCisJYWVzbWMJdjAuMTZiLHYwLjE2YgorCSBsZDEJe3YxNi4xNmJ9LFt4MF0seDgKKwlhZXNlCXYwLjE2Yix2MjAuMTZiCisJYWVzbWMJdjAuMTZiLHYwLjE2YgorCSBlb3IJdjE2LjE2Yix2MTYuMTZiLHY1LjE2YgorCWFlc2UJdjAuMTZiLHYyMS4xNmIKKwlhZXNtYwl2MC4xNmIsdjAuMTZiCisJIGxkMSB7djE3LjRzfSxbeDddLCMxNgkvLyByZS1wcmUtbG9hZCBybmRrZXlbMV0KKwlhZXNlCXYwLjE2Yix2MjIuMTZiCisJYWVzbWMJdjAuMTZiLHYwLjE2YgorCWFlc2UJdjAuMTZiLHYyMy4xNmIKKworCSBtb3YJdzYsdzUKKwllb3IJdjYuMTZiLHYwLjE2Yix2Ny4xNmIKKwlzdDEJe3Y2LjE2Yn0sW3gxXSwjMTYKKwliLmhzCS5Mb29wX2NiY19lbmMKKworCWIJLkxjYmNfZG9uZQorCisuYWxpZ24JNQorLkxjYmNfZW5jMTI4OgorCWxkMQl7djIuNHMtdjMuNHN9LFt4N10KKwlhZXNlCXYwLjE2Yix2MTYuMTZiCisJYWVzbWMJdjAuMTZiLHYwLjE2YgorCWIJLkxlbnRlcl9jYmNfZW5jMTI4CisuTG9vcF9jYmNfZW5jMTI4OgorCWFlc2UJdjAuMTZiLHYxNi4xNmIKKwlhZXNtYwl2MC4xNmIsdjAuMTZiCisJIHN0MQl7djYuMTZifSxbeDFdLCMxNgorLkxlbnRlcl9jYmNfZW5jMTI4OgorCWFlc2UJdjAuMTZiLHYxNy4xNmIKKwlhZXNtYwl2MC4xNmIsdjAuMTZiCisJIHN1YnMJeDIseDIsIzE2CisJYWVzZQl2MC4xNmIsdjIuMTZiCisJYWVzbWMJdjAuMTZiLHYwLjE2YgorCSBjc2VsCXg4LHh6cix4OCxlcQorCWFlc2UJdjAuMTZiLHYzLjE2YgorCWFlc21jCXYwLjE2Yix2MC4xNmIKKwlhZXNlCXYwLjE2Yix2MTguMTZiCisJYWVzbWMJdjAuMTZiLHYwLjE2YgorCWFlc2UJdjAuMTZiLHYxOS4xNmIKKwlhZXNtYwl2MC4xNmIsdjAuMTZiCisJIGxkMQl7djE2LjE2Yn0sW3gwXSx4OAorCWFlc2UJdjAuMTZiLHYyMC4xNmIKKwlhZXNtYwl2MC4xNmIsdjAuMTZiCisJYWVzZQl2MC4xNmIsdjIxLjE2YgorCWFlc21jCXYwLjE2Yix2MC4xNmIKKwlhZXNlCXYwLjE2Yix2MjIuMTZiCisJYWVzbWMJdjAuMTZiLHYwLjE2YgorCSBlb3IJdjE2LjE2Yix2MTYuMTZiLHY1LjE2YgorCWFlc2UJdjAuMTZiLHYyMy4xNmIKKwllb3IJdjYuMTZiLHYwLjE2Yix2Ny4xNmIKKwliLmhzCS5Mb29wX2NiY19lbmMxMjgKKworCXN0MQl7djYuMTZifSxbeDFdLCMxNgorCWIJLkxjYmNfZG9uZQorCisuYWxpZ24JNQorLkxjYmNfZGVjMTI4OgorCWxkMQl7djQuNHMtdjUuNHN9LFt4N10KKwllb3IJdjYuMTZiLHY2LjE2Yix2Ny4xNmIKKwllb3IJdjIuMTZiLHYwLjE2Yix2Ny4xNmIKKwltb3YJeDEyLHg4CisKKy5Mb29wMnhfY2JjX2RlYzEyODoKKwlhZXNkCXYwLjE2Yix2MTYuMTZiCisJYWVzZAl2MS4xNmIsdjE2LjE2YgorCWFlc2ltYwl2MC4xNmIsdjAuMTZiCisJYWVzaW1jCXYxLjE2Yix2MS4xNmIKKwkgc3Vicwl4Mix4MiwjMzIKKwlhZXNkCXYwLjE2Yix2MTcuMTZiCisJYWVzZAl2MS4xNmIsdjE3LjE2YgorCWFlc2ltYwl2MC4xNmIsdjAuMTZiCisJYWVzaW1jCXYxLjE2Yix2MS4xNmIKKwkgY3NlbAl4OCx4enIseDgsbG8KKwlhZXNkCXYwLjE2Yix2NC4xNmIKKwlhZXNkCXYxLjE2Yix2NC4xNmIKKwlhZXNpbWMJdjAuMTZiLHYwLjE2YgorCWFlc2ltYwl2MS4xNmIsdjEuMTZiCisJIGNzZWwJeDEyLHh6cix4MTIsbHMKKwlhZXNkCXYwLjE2Yix2NS4xNmIKKwlhZXNkCXYxLjE2Yix2NS4xNmIKKwlhZXNpbWMJdjAuMTZiLHYwLjE2YgorCWFlc2ltYwl2MS4xNmIsdjEuMTZiCisJYWVzZAl2MC4xNmIsdjE4LjE2YgorCWFlc2QJdjEuMTZiLHYxOC4xNmIKKwlhZXNpbWMJdjAuMTZiLHYwLjE2YgorCWFlc2ltYwl2MS4xNmIsdjEuMTZiCisJYWVzZAl2MC4xNmIsdjE5LjE2YgorCWFlc2QJdjEuMTZiLHYxOS4xNmIKKwlhZXNpbWMJdjAuMTZiLHYwLjE2YgorCWFlc2ltYwl2MS4xNmIsdjEuMTZiCisJYWVzZAl2MC4xNmIsdjIwLjE2YgorCWFlc2QJdjEuMTZiLHYyMC4xNmIKKwlhZXNpbWMJdjAuMTZiLHYwLjE2YgorCWFlc2ltYwl2MS4xNmIsdjEuMTZiCisJYWVzZAl2MC4xNmIsdjIxLjE2YgorCWFlc2QJdjEuMTZiLHYyMS4xNmIKKwlhZXNpbWMJdjAuMTZiLHYwLjE2YgorCWFlc2ltYwl2MS4xNmIsdjEuMTZiCisJYWVzZAl2MC4xNmIsdjIyLjE2YgorCWFlc2QJdjEuMTZiLHYyMi4xNmIKKwlhZXNpbWMJdjAuMTZiLHYwLjE2YgorCWFlc2ltYwl2MS4xNmIsdjEuMTZiCisJYWVzZAl2MC4xNmIsdjIzLjE2YgorCWFlc2QJdjEuMTZiLHYyMy4xNmIKKworCWVvcgl2Ni4xNmIsdjYuMTZiLHYwLjE2YgorCWxkMQl7djAuMTZifSxbeDBdLHg4CisJZW9yCXYyLjE2Yix2Mi4xNmIsdjEuMTZiCisJbGQxCXt2MS4xNmJ9LFt4MF0seDEyCisJc3QxCXt2Ni4xNmJ9LFt4MV0sIzE2CisJZW9yCXY2LjE2Yix2My4xNmIsdjcuMTZiCisJc3QxCXt2Mi4xNmJ9LFt4MV0sIzE2CisJZW9yCXYyLjE2Yix2MC4xNmIsdjcuMTZiCisJb3JyCXYzLjE2Yix2MS4xNmIsdjEuMTZiCisJYi5ocwkuTG9vcDJ4X2NiY19kZWMxMjgKKworCWFkZHMJeDIseDIsIzMyCisJZW9yCXY2LjE2Yix2Ni4xNmIsdjcuMTZiCisJYi5lcQkuTGNiY19kb25lCisJZW9yCXYyLjE2Yix2Mi4xNmIsdjcuMTZiCisJYgkuTGNiY19kZWNfdGFpbAorCisuYWxpZ24JNQorLkxjYmNfZGVjOgorCXN1YnMJeDIseDIsIzE2CisJb3JyCXYyLjE2Yix2MC4xNmIsdjAuMTZiCisJYi5sbwkuTGNiY19kZWNfdGFpbAorCisJY3NlbAl4OCx4enIseDgsZXEKKwljbXAJdzUsIzIKKwlsZDEJe3YxLjE2Yn0sW3gwXSx4OAorCW9ycgl2My4xNmIsdjEuMTZiLHYxLjE2YgorCWIuZXEJLkxjYmNfZGVjMTI4CisKKy5Mb29wMnhfY2JjX2RlYzoKKwlhZXNkCXYwLjE2Yix2MTYuMTZiCisJYWVzZAl2MS4xNmIsdjE2LjE2YgorCWxkMQl7djE2LjRzfSxbeDddLCMxNgorCWFlc2ltYwl2MC4xNmIsdjAuMTZiCisJYWVzaW1jCXYxLjE2Yix2MS4xNmIKKwlzdWJzCXc2LHc2LCMyCisJYWVzZAl2MC4xNmIsdjE3LjE2YgorCWFlc2QJdjEuMTZiLHYxNy4xNmIKKwlsZDEJe3YxNy40c30sW3g3XSwjMTYKKwlhZXNpbWMJdjAuMTZiLHYwLjE2YgorCWFlc2ltYwl2MS4xNmIsdjEuMTZiCisJYi5ndAkuTG9vcDJ4X2NiY19kZWMKKworCWFlc2QJdjAuMTZiLHYxNi4xNmIKKwlhZXNkCXYxLjE2Yix2MTYuMTZiCisJYWVzaW1jCXYwLjE2Yix2MC4xNmIKKwlhZXNpbWMJdjEuMTZiLHYxLjE2YgorCSBlb3IJdjQuMTZiLHY2LjE2Yix2Ny4xNmIKKwkgZW9yCXY1LjE2Yix2Mi4xNmIsdjcuMTZiCisJYWVzZAl2MC4xNmIsdjE3LjE2YgorCWFlc2QJdjEuMTZiLHYxNy4xNmIKKwlhZXNpbWMJdjAuMTZiLHYwLjE2YgorCWFlc2ltYwl2MS4xNmIsdjEuMTZiCisJIG9ycgl2Ni4xNmIsdjMuMTZiLHYzLjE2YgorCSBzdWJzCXgyLHgyLCMzMgorCWFlc2QJdjAuMTZiLHYxOC4xNmIKKwlhZXNkCXYxLjE2Yix2MTguMTZiCisJYWVzaW1jCXYwLjE2Yix2MC4xNmIKKwkgY3NlbAl4OCx4enIseDgsbG8KKwlhZXNpbWMJdjEuMTZiLHYxLjE2YgorCSBtb3YJeDcseDMKKwlhZXNkCXYwLjE2Yix2MTkuMTZiCisJYWVzZAl2MS4xNmIsdjE5LjE2YgorCWFlc2ltYwl2MC4xNmIsdjAuMTZiCisJIGxkMQl7djIuMTZifSxbeDBdLHg4CisJYWVzaW1jCXYxLjE2Yix2MS4xNmIKKwkgY3NlbAl4OCx4enIseDgsbHMKKwlhZXNkCXYwLjE2Yix2MjAuMTZiCisJYWVzZAl2MS4xNmIsdjIwLjE2YgorCWFlc2ltYwl2MC4xNmIsdjAuMTZiCisJYWVzaW1jCXYxLjE2Yix2MS4xNmIKKwkgbGQxCXt2My4xNmJ9LFt4MF0seDgKKwlhZXNkCXYwLjE2Yix2MjEuMTZiCisJYWVzZAl2MS4xNmIsdjIxLjE2YgorCWFlc2ltYwl2MC4xNmIsdjAuMTZiCisJYWVzaW1jCXYxLjE2Yix2MS4xNmIKKwkgbGQxIHt2MTYuNHN9LFt4N10sIzE2CS8vIHJlLXByZS1sb2FkIHJuZGtleVswXQorCWFlc2QJdjAuMTZiLHYyMi4xNmIKKwlhZXNkCXYxLjE2Yix2MjIuMTZiCisJYWVzaW1jCXYwLjE2Yix2MC4xNmIKKwlhZXNpbWMJdjEuMTZiLHYxLjE2YgorCSBsZDEge3YxNy40c30sW3g3XSwjMTYJLy8gcmUtcHJlLWxvYWQgcm5ka2V5WzFdCisJYWVzZAl2MC4xNmIsdjIzLjE2YgorCWFlc2QJdjEuMTZiLHYyMy4xNmIKKworCSBtb3YJdzYsdzUKKwllb3IJdjQuMTZiLHY0LjE2Yix2MC4xNmIKKwllb3IJdjUuMTZiLHY1LjE2Yix2MS4xNmIKKwkgb3JyCXYwLjE2Yix2Mi4xNmIsdjIuMTZiCisJc3QxCXt2NC4xNmJ9LFt4MV0sIzE2CisJIG9ycgl2MS4xNmIsdjMuMTZiLHYzLjE2YgorCXN0MQl7djUuMTZifSxbeDFdLCMxNgorCWIuaHMJLkxvb3AyeF9jYmNfZGVjCisKKwlhZGRzCXgyLHgyLCMzMgorCWIuZXEJLkxjYmNfZG9uZQorCisuTGNiY19kZWNfdGFpbDoKKwlhZXNkCXYwLjE2Yix2MTYuMTZiCisJbGQxCXt2MTYuNHN9LFt4N10sIzE2CisJYWVzaW1jCXYwLjE2Yix2MC4xNmIKKwlzdWJzCXc2LHc2LCMyCisJYWVzZAl2MC4xNmIsdjE3LjE2YgorCWxkMQl7djE3LjRzfSxbeDddLCMxNgorCWFlc2ltYwl2MC4xNmIsdjAuMTZiCisJYi5ndAkuTGNiY19kZWNfdGFpbAorCisJYWVzZAl2MC4xNmIsdjE2LjE2YgorCWFlc2ltYwl2MC4xNmIsdjAuMTZiCisJYWVzZAl2MC4xNmIsdjE3LjE2YgorCWFlc2ltYwl2MC4xNmIsdjAuMTZiCisJIGVvcgl2NC4xNmIsdjYuMTZiLHY3LjE2YgorCWFlc2QJdjAuMTZiLHYxOC4xNmIKKwlhZXNpbWMJdjAuMTZiLHYwLjE2YgorCSBvcnIJdjYuMTZiLHYyLjE2Yix2Mi4xNmIKKwlhZXNkCXYwLjE2Yix2MTkuMTZiCisJYWVzaW1jCXYwLjE2Yix2MC4xNmIKKwlhZXNkCXYwLjE2Yix2MjAuMTZiCisJYWVzaW1jCXYwLjE2Yix2MC4xNmIKKwlhZXNkCXYwLjE2Yix2MjEuMTZiCisJYWVzaW1jCXYwLjE2Yix2MC4xNmIKKwlhZXNkCXYwLjE2Yix2MjIuMTZiCisJYWVzaW1jCXYwLjE2Yix2MC4xNmIKKwlhZXNkCXYwLjE2Yix2MjMuMTZiCisKKwllb3IJdjQuMTZiLHY0LjE2Yix2MC4xNmIKKwlzdDEJe3Y0LjE2Yn0sW3gxXSwjMTYKKworLkxjYmNfZG9uZToKKwlzdDEJe3Y2LjE2Yn0sW3g0XQorLkxjYmNfYWJvcnQ6CisJbGRyCXgyOSxbc3BdLCMxNgorCXJldAorLnNpemUJYWVzX3Y4X2NiY19lbmNyeXB0LC4tYWVzX3Y4X2NiY19lbmNyeXB0CisuZ2xvYmwJYWVzX3Y4X2N0cjMyX2VuY3J5cHRfYmxvY2tzCisudHlwZQlhZXNfdjhfY3RyMzJfZW5jcnlwdF9ibG9ja3MsJWZ1bmN0aW9uCisuYWxpZ24JNQorYWVzX3Y4X2N0cjMyX2VuY3J5cHRfYmxvY2tzOgorCXN0cAkJeDI5LHgzMCxbc3AsIy0xNl0hCisJYWRkCQl4Mjksc3AsIzAKKwlsZHIJCXc1LFt4MywjMjQwXQorCisJbGRyCQl3OCwgW3g0LCAjMTJdCisJbGQxCQl7djAuNHN9LFt4NF0KKworCWxkMQkJe3YxNi40cy12MTcuNHN9LFt4M10JCS8vIGxvYWQga2V5IHNjaGVkdWxlLi4uCisJc3ViCQl3NSx3NSwjNgorCWFkZAkJeDcseDMseDUsbHNsIzQJLy8gcG9pbnRlciB0byBsYXN0IDcgcm91bmQga2V5cworCXN1YgkJdzUsdzUsIzIKKwlsZDEJCXt2MTguNHMtdjE5LjRzfSxbeDddLCMzMgorCWxkMQkJe3YyMC40cy12MjEuNHN9LFt4N10sIzMyCisJbGQxCQl7djIyLjRzLXYyMy40c30sW3g3XSwjMzIKKwlsZDEJCXt2Ny40c30sW3g3XQorCisJYWRkCQl4Nyx4MywjMzIKKwltb3YJCXc2LHc1CisKKwlzdWJzCQl4Mix4MiwjMgorCWIubG8JCS5MY3RyMzJfdGFpbAorCisjaWZuZGVmIF9fQVJNRUJfXworCXJldgkJdzgsIHc4CisjZW5kaWYKKwlvcnIJCXYxLjE2Yix2MC4xNmIsdjAuMTZiCisJYWRkCQl3OCwgdzgsICMxCisJb3JyCQl2Ni4xNmIsdjAuMTZiLHYwLjE2YgorCXJldgkJdzEwLCB3OAorCWNtcAkJdzUsIzIKKwltb3YJCXYxLnNbM10sdzEwCisJYi5lcQkJLkxjdHIzMl8xMjgKKworLkxvb3AyeF9jdHIzMjoKKwlhZXNlCQl2MC4xNmIsdjE2LjE2YgorCWFlc2UJCXYxLjE2Yix2MTYuMTZiCisJbGQxCQl7djE2LjRzfSxbeDddLCMxNgorCWFlc21jCQl2MC4xNmIsdjAuMTZiCisJYWVzbWMJCXYxLjE2Yix2MS4xNmIKKwlzdWJzCQl3Nix3NiwjMgorCWFlc2UJCXYwLjE2Yix2MTcuMTZiCisJYWVzZQkJdjEuMTZiLHYxNy4xNmIKKwlsZDEJCXt2MTcuNHN9LFt4N10sIzE2CisJYWVzbWMJCXYwLjE2Yix2MC4xNmIKKwlhZXNtYwkJdjEuMTZiLHYxLjE2YgorCWIuZ3QJCS5Mb29wMnhfY3RyMzIKKworCWFlc2UJCXYwLjE2Yix2MTYuMTZiCisJYWVzZQkJdjEuMTZiLHYxNi4xNmIKKwlhZXNtYwkJdjQuMTZiLHYwLjE2YgorCSBvcnIJCXYwLjE2Yix2Ni4xNmIsdjYuMTZiCisJYWVzbWMJCXY1LjE2Yix2MS4xNmIKKwkgb3JyCQl2MS4xNmIsdjYuMTZiLHY2LjE2YgorCWFlc2UJCXY0LjE2Yix2MTcuMTZiCisJYWVzZQkJdjUuMTZiLHYxNy4xNmIKKwkgbGQxCQl7djIuMTZifSxbeDBdLCMxNgorCWFlc21jCQl2NC4xNmIsdjQuMTZiCisJIGxkMQkJe3YzLjE2Yn0sW3gwXSwjMTYKKwlhZXNtYwkJdjUuMTZiLHY1LjE2YgorCSBhZGQJCXc4LHc4LCMxCisJYWVzZQkJdjQuMTZiLHYxOC4xNmIKKwlhZXNlCQl2NS4xNmIsdjE4LjE2YgorCSByZXYJCXc5LHc4CisJYWVzbWMJCXY0LjE2Yix2NC4xNmIKKwlhZXNtYwkJdjUuMTZiLHY1LjE2YgorCSBhZGQJCXc4LHc4LCMxCisJYWVzZQkJdjQuMTZiLHYxOS4xNmIKKwlhZXNlCQl2NS4xNmIsdjE5LjE2YgorCSBlb3IJCXYyLjE2Yix2Mi4xNmIsdjcuMTZiCisJIHJldgkJdzEwLHc4CisJYWVzbWMJCXY0LjE2Yix2NC4xNmIKKwlhZXNtYwkJdjUuMTZiLHY1LjE2YgorCSBlb3IJCXYzLjE2Yix2My4xNmIsdjcuMTZiCisJIG1vdgkJeDcseDMKKwlhZXNlCQl2NC4xNmIsdjIwLjE2YgorCWFlc2UJCXY1LjE2Yix2MjAuMTZiCisJIHN1YnMJCXgyLHgyLCMyCisJYWVzbWMJCXY0LjE2Yix2NC4xNmIKKwlhZXNtYwkJdjUuMTZiLHY1LjE2YgorCSBsZDEJIHt2MTYuNHMtdjE3LjRzfSxbeDddLCMzMgkvLyByZS1wcmUtbG9hZCBybmRrZXlbMC0xXQorCWFlc2UJCXY0LjE2Yix2MjEuMTZiCisJYWVzZQkJdjUuMTZiLHYyMS4xNmIKKwlhZXNtYwkJdjQuMTZiLHY0LjE2YgorCWFlc21jCQl2NS4xNmIsdjUuMTZiCisJYWVzZQkJdjQuMTZiLHYyMi4xNmIKKwlhZXNlCQl2NS4xNmIsdjIyLjE2YgorCSBtb3YJdjAuc1szXSwgdzkKKwlhZXNtYwkJdjQuMTZiLHY0LjE2YgorCSBtb3YJdjEuc1szXSwgdzEwCisJYWVzbWMJCXY1LjE2Yix2NS4xNmIKKwlhZXNlCQl2NC4xNmIsdjIzLjE2YgorCWFlc2UJCXY1LjE2Yix2MjMuMTZiCisKKwkgbW92CQl3Nix3NQorCWVvcgkJdjIuMTZiLHYyLjE2Yix2NC4xNmIKKwllb3IJCXYzLjE2Yix2My4xNmIsdjUuMTZiCisJc3QxCQl7djIuMTZifSxbeDFdLCMxNgorCXN0MQkJe3YzLjE2Yn0sW3gxXSwjMTYKKwliLmhzCQkuTG9vcDJ4X2N0cjMyCisKKwlhZGRzCQl4Mix4MiwjMgorCWIuZXEJCS5MY3RyMzJfZG9uZQorCWIJCS5MY3RyMzJfdGFpbAorCisuTGN0cjMyXzEyODoKKwlsZDEJCXt2NC40cy12NS40c30sW3g3XQorCisuTG9vcDJ4X2N0cjMyXzEyODoKKwlhZXNlCQl2MC4xNmIsdjE2LjE2YgorCWFlc2UJCXYxLjE2Yix2MTYuMTZiCisJYWVzbWMJCXYwLjE2Yix2MC4xNmIKKwkgbGQxCQl7djIuMTZifSxbeDBdLCMxNgorCWFlc21jCQl2MS4xNmIsdjEuMTZiCisJIGxkMQkJe3YzLjE2Yn0sW3gwXSwjMTYKKwlhZXNlCQl2MC4xNmIsdjE3LjE2YgorCWFlc2UJCXYxLjE2Yix2MTcuMTZiCisJIGFkZAkJdzgsdzgsIzEKKwlhZXNtYwkJdjAuMTZiLHYwLjE2YgorCWFlc21jCQl2MS4xNmIsdjEuMTZiCisJIHJldgkJdzksdzgKKwlhZXNlCQl2MC4xNmIsdjQuMTZiCisJYWVzZQkJdjEuMTZiLHY0LjE2YgorCSBhZGQJCXc4LHc4LCMxCisJYWVzbWMJCXYwLjE2Yix2MC4xNmIKKwlhZXNtYwkJdjEuMTZiLHYxLjE2YgorCSByZXYJCXcxMCx3OAorCWFlc2UJCXYwLjE2Yix2NS4xNmIKKwlhZXNlCQl2MS4xNmIsdjUuMTZiCisJIHN1YnMJCXgyLHgyLCMyCisJYWVzbWMJCXYwLjE2Yix2MC4xNmIKKwlhZXNtYwkJdjEuMTZiLHYxLjE2YgorCWFlc2UJCXYwLjE2Yix2MTguMTZiCisJYWVzZQkJdjEuMTZiLHYxOC4xNmIKKwlhZXNtYwkJdjAuMTZiLHYwLjE2YgorCWFlc21jCQl2MS4xNmIsdjEuMTZiCisJYWVzZQkJdjAuMTZiLHYxOS4xNmIKKwlhZXNlCQl2MS4xNmIsdjE5LjE2YgorCWFlc21jCQl2MC4xNmIsdjAuMTZiCisJYWVzbWMJCXYxLjE2Yix2MS4xNmIKKwlhZXNlCQl2MC4xNmIsdjIwLjE2YgorCWFlc2UJCXYxLjE2Yix2MjAuMTZiCisJYWVzbWMJCXYwLjE2Yix2MC4xNmIKKwlhZXNtYwkJdjEuMTZiLHYxLjE2YgorCWFlc2UJCXYwLjE2Yix2MjEuMTZiCisJYWVzZQkJdjEuMTZiLHYyMS4xNmIKKwlhZXNtYwkJdjAuMTZiLHYwLjE2YgorCWFlc21jCQl2MS4xNmIsdjEuMTZiCisJYWVzZQkJdjAuMTZiLHYyMi4xNmIKKwlhZXNlCQl2MS4xNmIsdjIyLjE2YgorCWFlc21jCQl2MC4xNmIsdjAuMTZiCisJYWVzbWMJCXYxLjE2Yix2MS4xNmIKKwkgZW9yCQl2Mi4xNmIsdjIuMTZiLHY3LjE2YgorCWFlc2UJCXYwLjE2Yix2MjMuMTZiCisJIGVvcgkJdjMuMTZiLHYzLjE2Yix2Ny4xNmIKKwlhZXNlCQl2MS4xNmIsdjIzLjE2YgorCisJZW9yCQl2Mi4xNmIsdjIuMTZiLHYwLjE2YgorCW9ycgkJdjAuMTZiLHY2LjE2Yix2Ni4xNmIKKwllb3IJCXYzLjE2Yix2My4xNmIsdjEuMTZiCisJb3JyCQl2MS4xNmIsdjYuMTZiLHY2LjE2YgorCXN0MQkJe3YyLjE2Yn0sW3gxXSwjMTYKKwltb3YJCXYwLnNbM10sIHc5CisJc3QxCQl7djMuMTZifSxbeDFdLCMxNgorCW1vdgkJdjEuc1szXSwgdzEwCisJYi5ocwkJLkxvb3AyeF9jdHIzMl8xMjgKKworCWFkZHMJCXgyLHgyLCMyCisJYi5lcQkJLkxjdHIzMl9kb25lCisKKy5MY3RyMzJfdGFpbDoKKwlhZXNlCQl2MC4xNmIsdjE2LjE2YgorCWxkMQkJe3YxNi40c30sW3g3XSwjMTYKKwlhZXNtYwkJdjAuMTZiLHYwLjE2YgorCXN1YnMJCXc2LHc2LCMyCisJYWVzZQkJdjAuMTZiLHYxNy4xNmIKKwlsZDEJCXt2MTcuNHN9LFt4N10sIzE2CisJYWVzbWMJCXYwLjE2Yix2MC4xNmIKKwliLmd0CQkuTGN0cjMyX3RhaWwKKworCWFlc2UJCXYwLjE2Yix2MTYuMTZiCisJYWVzbWMJCXYwLjE2Yix2MC4xNmIKKwlhZXNlCQl2MC4xNmIsdjE3LjE2YgorCWFlc21jCQl2MC4xNmIsdjAuMTZiCisJIGxkMQkJe3YyLjE2Yn0sW3gwXQorCWFlc2UJCXYwLjE2Yix2MTguMTZiCisJYWVzbWMJCXYwLjE2Yix2MC4xNmIKKwlhZXNlCQl2MC4xNmIsdjE5LjE2YgorCWFlc21jCQl2MC4xNmIsdjAuMTZiCisJYWVzZQkJdjAuMTZiLHYyMC4xNmIKKwlhZXNtYwkJdjAuMTZiLHYwLjE2YgorCWFlc2UJCXYwLjE2Yix2MjEuMTZiCisJYWVzbWMJCXYwLjE2Yix2MC4xNmIKKwlhZXNlCQl2MC4xNmIsdjIyLjE2YgorCWFlc21jCQl2MC4xNmIsdjAuMTZiCisJIGVvcgkJdjIuMTZiLHYyLjE2Yix2Ny4xNmIKKwlhZXNlCQl2MC4xNmIsdjIzLjE2YgorCisJZW9yCQl2Mi4xNmIsdjIuMTZiLHYwLjE2YgorCXN0MQkJe3YyLjE2Yn0sW3gxXQorCisuTGN0cjMyX2RvbmU6CisJbGRyCQl4MjksW3NwXSwjMTYKKwlyZXQKKy5zaXplCWFlc192OF9jdHIzMl9lbmNyeXB0X2Jsb2NrcywuLWFlc192OF9jdHIzMl9lbmNyeXB0X2Jsb2NrcworI2VuZGlmCmRpZmYgLS1naXQgYS9jcnlwdG8vYWVzL2FzbS9hZXN2OC1hcm14LlMgYi9jcnlwdG8vYWVzL2FzbS9hZXN2OC1hcm14LlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTYzN2U0ZAotLS0gL2Rldi9udWxsCisrKyBiL2NyeXB0by9hZXMvYXNtL2Flc3Y4LWFybXguUwpAQCAtMCwwICsxLDc2NyBAQAorI2luY2x1ZGUgImFybV9hcmNoLmgiCisKKyNpZiBfX0FSTV9BUkNIX18+PTcKKy50ZXh0CisuZnB1CW5lb24KKy5jb2RlCTMyCisuYWxpZ24JNQorcmNvbjoKKy5sb25nCTB4MDEsMHgwMSwweDAxLDB4MDEKKy5sb25nCTB4MGMwZjBlMGQsMHgwYzBmMGUwZCwweDBjMGYwZTBkLDB4MGMwZjBlMGQJQCByb3RhdGUtbi1zcGxhdAorLmxvbmcJMHgxYiwweDFiLDB4MWIsMHgxYgorCisuZ2xvYmwJYWVzX3Y4X3NldF9lbmNyeXB0X2tleQorLnR5cGUJYWVzX3Y4X3NldF9lbmNyeXB0X2tleSwlZnVuY3Rpb24KKy5hbGlnbgk1CithZXNfdjhfc2V0X2VuY3J5cHRfa2V5OgorLkxlbmNfa2V5OgorCWFkcglyMyxyY29uCisJY21wCXIxLCMxOTIKKworCXZlb3IJcTAscTAscTAKKwl2bGQxLjgJe3EzfSxbcjBdIQorCW1vdglyMSwjOAkJQCByZXVzZSByMQorCXZsZDEuMzIJe3ExLHEyfSxbcjNdIQorCisJYmx0CS5Mb29wMTI4CisJYmVxCS5MMTkyCisJYgkuTDI1NgorCisuYWxpZ24JNAorLkxvb3AxMjg6CisJdnRibC44CWQyMCx7cTN9LGQ0CisJdnRibC44CWQyMSx7cTN9LGQ1CisJdmV4dC44CXE5LHEwLHEzLCMxMgorCXZzdDEuMzIJe3EzfSxbcjJdIQorCS5ieXRlCTB4MDAsMHg0MywweGYwLDB4ZjMJQCBhZXNlIHExMCxxMAorCXN1YnMJcjEscjEsIzEKKworCXZlb3IJcTMscTMscTkKKwl2ZXh0LjgJcTkscTAscTksIzEyCisJdmVvcglxMyxxMyxxOQorCXZleHQuOAlxOSxxMCxxOSwjMTIKKwkgdmVvcglxMTAscTEwLHExCisJdmVvcglxMyxxMyxxOQorCXZzaGwudTgJcTEscTEsIzEKKwl2ZW9yCXEzLHEzLHExMAorCWJuZQkuTG9vcDEyOAorCisJdmxkMS4zMgl7cTF9LFtyM10KKworCXZ0YmwuOAlkMjAse3EzfSxkNAorCXZ0YmwuOAlkMjEse3EzfSxkNQorCXZleHQuOAlxOSxxMCxxMywjMTIKKwl2c3QxLjMyCXtxM30sW3IyXSEKKwkuYnl0ZQkweDAwLDB4NDMsMHhmMCwweGYzCUAgYWVzZSBxMTAscTAKKworCXZlb3IJcTMscTMscTkKKwl2ZXh0LjgJcTkscTAscTksIzEyCisJdmVvcglxMyxxMyxxOQorCXZleHQuOAlxOSxxMCxxOSwjMTIKKwkgdmVvcglxMTAscTEwLHExCisJdmVvcglxMyxxMyxxOQorCXZzaGwudTgJcTEscTEsIzEKKwl2ZW9yCXEzLHEzLHExMAorCisJdnRibC44CWQyMCx7cTN9LGQ0CisJdnRibC44CWQyMSx7cTN9LGQ1CisJdmV4dC44CXE5LHEwLHEzLCMxMgorCXZzdDEuMzIJe3EzfSxbcjJdIQorCS5ieXRlCTB4MDAsMHg0MywweGYwLDB4ZjMJQCBhZXNlIHExMCxxMAorCisJdmVvcglxMyxxMyxxOQorCXZleHQuOAlxOSxxMCxxOSwjMTIKKwl2ZW9yCXEzLHEzLHE5CisJdmV4dC44CXE5LHEwLHE5LCMxMgorCSB2ZW9yCXExMCxxMTAscTEKKwl2ZW9yCXEzLHEzLHE5CisJdmVvcglxMyxxMyxxMTAKKwl2c3QxLjMyCXtxM30sW3IyXQorCWFkZAlyMixyMiwjMHg1MAorCisJbW92CXIxMiwjMTAKKwliCS5MZG9uZQorCisuYWxpZ24JNAorLkwxOTI6CisJdmxkMS44CXtkMTZ9LFtyMF0hCisJdm1vdi5pOAlxMTAsIzgJCQlAIGJvcnJvdyBxMTAKKwl2c3QxLjMyCXtxM30sW3IyXSEKKwl2c3ViLmk4CXEyLHEyLHExMAlAIGFkanVzdCB0aGUgbWFzaworCisuTG9vcDE5MjoKKwl2dGJsLjgJZDIwLHtxOH0sZDQKKwl2dGJsLjgJZDIxLHtxOH0sZDUKKwl2ZXh0LjgJcTkscTAscTMsIzEyCisJdnN0MS4zMgl7ZDE2fSxbcjJdIQorCS5ieXRlCTB4MDAsMHg0MywweGYwLDB4ZjMJQCBhZXNlIHExMCxxMAorCXN1YnMJcjEscjEsIzEKKworCXZlb3IJcTMscTMscTkKKwl2ZXh0LjgJcTkscTAscTksIzEyCisJdmVvcglxMyxxMyxxOQorCXZleHQuOAlxOSxxMCxxOSwjMTIKKwl2ZW9yCXEzLHEzLHE5CisKKwl2ZHVwLjMyCXE5LGQ3WzFdCisJdmVvcglxOSxxOSxxOAorCSB2ZW9yCXExMCxxMTAscTEKKwl2ZXh0LjgJcTgscTAscTgsIzEyCisJdnNobC51OAlxMSxxMSwjMQorCXZlb3IJcTgscTgscTkKKwl2ZW9yCXEzLHEzLHExMAorCXZlb3IJcTgscTgscTEwCisJdnN0MS4zMgl7cTN9LFtyMl0hCisJYm5lCS5Mb29wMTkyCisKKwltb3YJcjEyLCMxMgorCWFkZAlyMixyMiwjMHgyMAorCWIJLkxkb25lCisKKy5hbGlnbgk0CisuTDI1NjoKKwl2bGQxLjgJe3E4fSxbcjBdCisJbW92CXIxLCM3CisJbW92CXIxMiwjMTQKKwl2c3QxLjMyCXtxM30sW3IyXSEKKworLkxvb3AyNTY6CisJdnRibC44CWQyMCx7cTh9LGQ0CisJdnRibC44CWQyMSx7cTh9LGQ1CisJdmV4dC44CXE5LHEwLHEzLCMxMgorCXZzdDEuMzIJe3E4fSxbcjJdIQorCS5ieXRlCTB4MDAsMHg0MywweGYwLDB4ZjMJQCBhZXNlIHExMCxxMAorCXN1YnMJcjEscjEsIzEKKworCXZlb3IJcTMscTMscTkKKwl2ZXh0LjgJcTkscTAscTksIzEyCisJdmVvcglxMyxxMyxxOQorCXZleHQuOAlxOSxxMCxxOSwjMTIKKwkgdmVvcglxMTAscTEwLHExCisJdmVvcglxMyxxMyxxOQorCXZzaGwudTgJcTEscTEsIzEKKwl2ZW9yCXEzLHEzLHExMAorCXZzdDEuMzIJe3EzfSxbcjJdIQorCWJlcQkuTGRvbmUKKworCXZkdXAuMzIJcTEwLGQ3WzFdCisJdmV4dC44CXE5LHEwLHE4LCMxMgorCS5ieXRlCTB4MDAsMHg0MywweGYwLDB4ZjMJQCBhZXNlIHExMCxxMAorCisJdmVvcglxOCxxOCxxOQorCXZleHQuOAlxOSxxMCxxOSwjMTIKKwl2ZW9yCXE4LHE4LHE5CisJdmV4dC44CXE5LHEwLHE5LCMxMgorCXZlb3IJcTgscTgscTkKKworCXZlb3IJcTgscTgscTEwCisJYgkuTG9vcDI1NgorCisuTGRvbmU6CisJc3RyCXIxMixbcjJdCisKKwllb3IJcjAscjAscjAJCUAgcmV0dXJuIHZhbHVlCisJCisJYngJbHIKKy5zaXplCWFlc192OF9zZXRfZW5jcnlwdF9rZXksLi1hZXNfdjhfc2V0X2VuY3J5cHRfa2V5CisKKy5nbG9ibAlhZXNfdjhfc2V0X2RlY3J5cHRfa2V5CisudHlwZQlhZXNfdjhfc2V0X2RlY3J5cHRfa2V5LCVmdW5jdGlvbgorLmFsaWduCTUKK2Flc192OF9zZXRfZGVjcnlwdF9rZXk6CisJc3RtZGIJc3AhLHtyNCxscn0KKwlibAkuTGVuY19rZXkKKworCXN1YglyMixyMiwjMjQwCQlAIHJlc3RvcmUgb3JpZ2luYWwgcjIKKwltb3YJcjQsIy0xNgorCWFkZAlyMCxyMixyMTIsbHNsIzQJQCBlbmQgb2Yga2V5IHNjaGVkdWxlCisKKwl2bGQxLjMyCXtxMH0sW3IyXQorCXZsZDEuMzIJe3ExfSxbcjBdCisJdnN0MS4zMgl7cTB9LFtyMF0scjQKKwl2c3QxLjMyCXtxMX0sW3IyXSEKKworLkxvb3BfaW1jOgorCXZsZDEuMzIJe3EwfSxbcjJdCisJdmxkMS4zMgl7cTF9LFtyMF0KKwkuYnl0ZQkweGMwLDB4MDMsMHhiMCwweGYzCUAgYWVzaW1jIHEwLHEwCisJLmJ5dGUJMHhjMiwweDIzLDB4YjAsMHhmMwlAIGFlc2ltYyBxMSxxMQorCXZzdDEuMzIJe3EwfSxbcjBdLHI0CisJdnN0MS4zMgl7cTF9LFtyMl0hCisJY21wCXIwLHIyCisJYmhpCS5Mb29wX2ltYworCisJdmxkMS4zMgl7cTB9LFtyMl0KKwkuYnl0ZQkweGMwLDB4MDMsMHhiMCwweGYzCUAgYWVzaW1jIHEwLHEwCisJdnN0MS4zMgl7cTB9LFtyMF0KKworCWVvcglyMCxyMCxyMAkJQCByZXR1cm4gdmFsdWUKKwlsZG1pYQlzcCEse3I0LHBjfQorLnNpemUJYWVzX3Y4X3NldF9kZWNyeXB0X2tleSwuLWFlc192OF9zZXRfZGVjcnlwdF9rZXkKKy5nbG9ibAlhZXNfdjhfZW5jcnlwdAorLnR5cGUJYWVzX3Y4X2VuY3J5cHQsJWZ1bmN0aW9uCisuYWxpZ24JNQorYWVzX3Y4X2VuY3J5cHQ6CisJbGRyCXIzLFtyMiwjMjQwXQorCXZsZDEuMzIJe3EwfSxbcjJdIQorCXZsZDEuOAl7cTJ9LFtyMF0KKwlzdWIJcjMscjMsIzIKKwl2bGQxLjMyCXtxMX0sW3IyXSEKKworLkxvb3BfZW5jOgorCS5ieXRlCTB4MDAsMHg0MywweGIwLDB4ZjMJQCBhZXNlIHEyLHEwCisJdmxkMS4zMgl7cTB9LFtyMl0hCisJLmJ5dGUJMHg4NCwweDQzLDB4YjAsMHhmMwlAIGFlc21jIHEyLHEyCisJc3VicwlyMyxyMywjMgorCS5ieXRlCTB4MDIsMHg0MywweGIwLDB4ZjMJQCBhZXNlIHEyLHExCisJdmxkMS4zMgl7cTF9LFtyMl0hCisJLmJ5dGUJMHg4NCwweDQzLDB4YjAsMHhmMwlAIGFlc21jIHEyLHEyCisJYmd0CS5Mb29wX2VuYworCisJLmJ5dGUJMHgwMCwweDQzLDB4YjAsMHhmMwlAIGFlc2UgcTIscTAKKwl2bGQxLjMyCXtxMH0sW3IyXQorCS5ieXRlCTB4ODQsMHg0MywweGIwLDB4ZjMJQCBhZXNtYyBxMixxMgorCS5ieXRlCTB4MDIsMHg0MywweGIwLDB4ZjMJQCBhZXNlIHEyLHExCisJdmVvcglxMixxMixxMAorCisJdnN0MS44CXtxMn0sW3IxXQorCWJ4CWxyCisuc2l6ZQlhZXNfdjhfZW5jcnlwdCwuLWFlc192OF9lbmNyeXB0CisuZ2xvYmwJYWVzX3Y4X2RlY3J5cHQKKy50eXBlCWFlc192OF9kZWNyeXB0LCVmdW5jdGlvbgorLmFsaWduCTUKK2Flc192OF9kZWNyeXB0OgorCWxkcglyMyxbcjIsIzI0MF0KKwl2bGQxLjMyCXtxMH0sW3IyXSEKKwl2bGQxLjgJe3EyfSxbcjBdCisJc3ViCXIzLHIzLCMyCisJdmxkMS4zMgl7cTF9LFtyMl0hCisKKy5Mb29wX2RlYzoKKwkuYnl0ZQkweDQwLDB4NDMsMHhiMCwweGYzCUAgYWVzZCBxMixxMAorCXZsZDEuMzIJe3EwfSxbcjJdIQorCS5ieXRlCTB4YzQsMHg0MywweGIwLDB4ZjMJQCBhZXNpbWMgcTIscTIKKwlzdWJzCXIzLHIzLCMyCisJLmJ5dGUJMHg0MiwweDQzLDB4YjAsMHhmMwlAIGFlc2QgcTIscTEKKwl2bGQxLjMyCXtxMX0sW3IyXSEKKwkuYnl0ZQkweGM0LDB4NDMsMHhiMCwweGYzCUAgYWVzaW1jIHEyLHEyCisJYmd0CS5Mb29wX2RlYworCisJLmJ5dGUJMHg0MCwweDQzLDB4YjAsMHhmMwlAIGFlc2QgcTIscTAKKwl2bGQxLjMyCXtxMH0sW3IyXQorCS5ieXRlCTB4YzQsMHg0MywweGIwLDB4ZjMJQCBhZXNpbWMgcTIscTIKKwkuYnl0ZQkweDQyLDB4NDMsMHhiMCwweGYzCUAgYWVzZCBxMixxMQorCXZlb3IJcTIscTIscTAKKworCXZzdDEuOAl7cTJ9LFtyMV0KKwlieAlscgorLnNpemUJYWVzX3Y4X2RlY3J5cHQsLi1hZXNfdjhfZGVjcnlwdAorLmdsb2JsCWFlc192OF9jYmNfZW5jcnlwdAorLnR5cGUJYWVzX3Y4X2NiY19lbmNyeXB0LCVmdW5jdGlvbgorLmFsaWduCTUKK2Flc192OF9jYmNfZW5jcnlwdDoKKwltb3YJaXAsc3AKKwlzdG1kYglzcCEse3I0LXI4LGxyfQorCXZzdG1kYglzcCEse2Q4LWQxNX0gICAgICAgICAgICBAIEFCSSBzcGVjaWZpY2F0aW9uIHNheXMgc28KKwlsZG1pYQlpcCx7cjQtcjV9CQlAIGxvYWQgcmVtYWluaW5nIGFyZ3MKKwlzdWJzCXIyLHIyLCMxNgorCW1vdglyOCwjMTYKKwlibG8JLkxjYmNfYWJvcnQKKwltb3ZlcQlyOCwjMAorCisJY21wCXI1LCMwCQkJQCBlbi0gb3IgZGVjcnlwdGluZz8KKwlsZHIJcjUsW3IzLCMyNDBdCisJYW5kCXIyLHIyLCMtMTYKKwl2bGQxLjgJe3E2fSxbcjRdCisJdmxkMS44CXtxMH0sW3IwXSxyOAorCisJdmxkMS4zMgl7cTgtcTl9LFtyM10JCUAgbG9hZCBrZXkgc2NoZWR1bGUuLi4KKwlzdWIJcjUscjUsIzYKKwlhZGQJcjcscjMscjUsbHNsIzQJQCBwb2ludGVyIHRvIGxhc3QgNyByb3VuZCBrZXlzCisJc3ViCXI1LHI1LCMyCisJdmxkMS4zMgl7cTEwLXExMX0sW3I3XSEKKwl2bGQxLjMyCXtxMTItcTEzfSxbcjddIQorCXZsZDEuMzIJe3ExNC1xMTV9LFtyN10hCisJdmxkMS4zMgl7cTd9LFtyN10KKworCWFkZAlyNyxyMywjMzIKKwltb3YJcjYscjUKKwliZXEJLkxjYmNfZGVjCisKKwljbXAJcjUsIzIKKwl2ZW9yCXEwLHEwLHE2CisJdmVvcglxNSxxOCxxNworCWJlcQkuTGNiY19lbmMxMjgKKworLkxvb3BfY2JjX2VuYzoKKwkuYnl0ZQkweDIwLDB4MDMsMHhiMCwweGYzCUAgYWVzZSBxMCxxOAorCXZsZDEuMzIJe3E4fSxbcjddIQorCS5ieXRlCTB4ODAsMHgwMywweGIwLDB4ZjMJQCBhZXNtYyBxMCxxMAorCXN1YnMJcjYscjYsIzIKKwkuYnl0ZQkweDIyLDB4MDMsMHhiMCwweGYzCUAgYWVzZSBxMCxxOQorCXZsZDEuMzIJe3E5fSxbcjddIQorCS5ieXRlCTB4ODAsMHgwMywweGIwLDB4ZjMJQCBhZXNtYyBxMCxxMAorCWJndAkuTG9vcF9jYmNfZW5jCisKKwkuYnl0ZQkweDIwLDB4MDMsMHhiMCwweGYzCUAgYWVzZSBxMCxxOAorCS5ieXRlCTB4ODAsMHgwMywweGIwLDB4ZjMJQCBhZXNtYyBxMCxxMAorCSBzdWJzCXIyLHIyLCMxNgorCS5ieXRlCTB4MjIsMHgwMywweGIwLDB4ZjMJQCBhZXNlIHEwLHE5CisJLmJ5dGUJMHg4MCwweDAzLDB4YjAsMHhmMwlAIGFlc21jIHEwLHEwCisJIG1vdmVxCXI4LCMwCisJLmJ5dGUJMHgyNCwweDAzLDB4YjAsMHhmMwlAIGFlc2UgcTAscTEwCisJLmJ5dGUJMHg4MCwweDAzLDB4YjAsMHhmMwlAIGFlc21jIHEwLHEwCisJIGFkZAlyNyxyMywjMTYKKwkuYnl0ZQkweDI2LDB4MDMsMHhiMCwweGYzCUAgYWVzZSBxMCxxMTEKKwkuYnl0ZQkweDgwLDB4MDMsMHhiMCwweGYzCUAgYWVzbWMgcTAscTAKKwkgdmxkMS44CXtxOH0sW3IwXSxyOAorCS5ieXRlCTB4MjgsMHgwMywweGIwLDB4ZjMJQCBhZXNlIHEwLHExMgorCS5ieXRlCTB4ODAsMHgwMywweGIwLDB4ZjMJQCBhZXNtYyBxMCxxMAorCSB2ZW9yCXE4LHE4LHE1CisJLmJ5dGUJMHgyYSwweDAzLDB4YjAsMHhmMwlAIGFlc2UgcTAscTEzCisJLmJ5dGUJMHg4MCwweDAzLDB4YjAsMHhmMwlAIGFlc21jIHEwLHEwCisJIHZsZDEuMzIge3E5fSxbcjddIQlAIHJlLXByZS1sb2FkIHJuZGtleVsxXQorCS5ieXRlCTB4MmMsMHgwMywweGIwLDB4ZjMJQCBhZXNlIHEwLHExNAorCS5ieXRlCTB4ODAsMHgwMywweGIwLDB4ZjMJQCBhZXNtYyBxMCxxMAorCS5ieXRlCTB4MmUsMHgwMywweGIwLDB4ZjMJQCBhZXNlIHEwLHExNQorCisJIG1vdglyNixyNQorCXZlb3IJcTYscTAscTcKKwl2c3QxLjgJe3E2fSxbcjFdIQorCWJocwkuTG9vcF9jYmNfZW5jCisKKwliCS5MY2JjX2RvbmUKKworLmFsaWduCTUKKy5MY2JjX2VuYzEyODoKKwl2bGQxLjMyCXtxMi1xM30sW3I3XQorCS5ieXRlCTB4MjAsMHgwMywweGIwLDB4ZjMJQCBhZXNlIHEwLHE4CisJLmJ5dGUJMHg4MCwweDAzLDB4YjAsMHhmMwlAIGFlc21jIHEwLHEwCisJYgkuTGVudGVyX2NiY19lbmMxMjgKKy5Mb29wX2NiY19lbmMxMjg6CisJLmJ5dGUJMHgyMCwweDAzLDB4YjAsMHhmMwlAIGFlc2UgcTAscTgKKwkuYnl0ZQkweDgwLDB4MDMsMHhiMCwweGYzCUAgYWVzbWMgcTAscTAKKwkgdnN0MS44CXtxNn0sW3IxXSEKKy5MZW50ZXJfY2JjX2VuYzEyODoKKwkuYnl0ZQkweDIyLDB4MDMsMHhiMCwweGYzCUAgYWVzZSBxMCxxOQorCS5ieXRlCTB4ODAsMHgwMywweGIwLDB4ZjMJQCBhZXNtYyBxMCxxMAorCSBzdWJzCXIyLHIyLCMxNgorCS5ieXRlCTB4MDQsMHgwMywweGIwLDB4ZjMJQCBhZXNlIHEwLHEyCisJLmJ5dGUJMHg4MCwweDAzLDB4YjAsMHhmMwlAIGFlc21jIHEwLHEwCisJIG1vdmVxCXI4LCMwCisJLmJ5dGUJMHgwNiwweDAzLDB4YjAsMHhmMwlAIGFlc2UgcTAscTMKKwkuYnl0ZQkweDgwLDB4MDMsMHhiMCwweGYzCUAgYWVzbWMgcTAscTAKKwkuYnl0ZQkweDI0LDB4MDMsMHhiMCwweGYzCUAgYWVzZSBxMCxxMTAKKwkuYnl0ZQkweDgwLDB4MDMsMHhiMCwweGYzCUAgYWVzbWMgcTAscTAKKwkuYnl0ZQkweDI2LDB4MDMsMHhiMCwweGYzCUAgYWVzZSBxMCxxMTEKKwkuYnl0ZQkweDgwLDB4MDMsMHhiMCwweGYzCUAgYWVzbWMgcTAscTAKKwkgdmxkMS44CXtxOH0sW3IwXSxyOAorCS5ieXRlCTB4MjgsMHgwMywweGIwLDB4ZjMJQCBhZXNlIHEwLHExMgorCS5ieXRlCTB4ODAsMHgwMywweGIwLDB4ZjMJQCBhZXNtYyBxMCxxMAorCS5ieXRlCTB4MmEsMHgwMywweGIwLDB4ZjMJQCBhZXNlIHEwLHExMworCS5ieXRlCTB4ODAsMHgwMywweGIwLDB4ZjMJQCBhZXNtYyBxMCxxMAorCS5ieXRlCTB4MmMsMHgwMywweGIwLDB4ZjMJQCBhZXNlIHEwLHExNAorCS5ieXRlCTB4ODAsMHgwMywweGIwLDB4ZjMJQCBhZXNtYyBxMCxxMAorCSB2ZW9yCXE4LHE4LHE1CisJLmJ5dGUJMHgyZSwweDAzLDB4YjAsMHhmMwlAIGFlc2UgcTAscTE1CisJdmVvcglxNixxMCxxNworCWJocwkuTG9vcF9jYmNfZW5jMTI4CisKKwl2c3QxLjgJe3E2fSxbcjFdIQorCWIJLkxjYmNfZG9uZQorCisuYWxpZ24JNQorLkxjYmNfZGVjMTI4OgorCXZsZDEuMzIJe3E0LXE1fSxbcjddCisJdmVvcglxNixxNixxNworCXZlb3IJcTIscTAscTcKKwltb3YJcjEyLHI4CisKKy5Mb29wMnhfY2JjX2RlYzEyODoKKwkuYnl0ZQkweDYwLDB4MDMsMHhiMCwweGYzCUAgYWVzZCBxMCxxOAorCS5ieXRlCTB4NjAsMHgyMywweGIwLDB4ZjMJQCBhZXNkIHExLHE4CisJLmJ5dGUJMHhjMCwweDAzLDB4YjAsMHhmMwlAIGFlc2ltYyBxMCxxMAorCS5ieXRlCTB4YzIsMHgyMywweGIwLDB4ZjMJQCBhZXNpbWMgcTEscTEKKwkgc3VicwlyMixyMiwjMzIKKwkuYnl0ZQkweDYyLDB4MDMsMHhiMCwweGYzCUAgYWVzZCBxMCxxOQorCS5ieXRlCTB4NjIsMHgyMywweGIwLDB4ZjMJQCBhZXNkIHExLHE5CisJLmJ5dGUJMHhjMCwweDAzLDB4YjAsMHhmMwlAIGFlc2ltYyBxMCxxMAorCS5ieXRlCTB4YzIsMHgyMywweGIwLDB4ZjMJQCBhZXNpbWMgcTEscTEKKwkgbW92bG8JcjgsIzAKKwkuYnl0ZQkweDQ4LDB4MDMsMHhiMCwweGYzCUAgYWVzZCBxMCxxNAorCS5ieXRlCTB4NDgsMHgyMywweGIwLDB4ZjMJQCBhZXNkIHExLHE0CisJLmJ5dGUJMHhjMCwweDAzLDB4YjAsMHhmMwlAIGFlc2ltYyBxMCxxMAorCS5ieXRlCTB4YzIsMHgyMywweGIwLDB4ZjMJQCBhZXNpbWMgcTEscTEKKwkgbW92bHMJcjEyLCMwCisJLmJ5dGUJMHg0YSwweDAzLDB4YjAsMHhmMwlAIGFlc2QgcTAscTUKKwkuYnl0ZQkweDRhLDB4MjMsMHhiMCwweGYzCUAgYWVzZCBxMSxxNQorCS5ieXRlCTB4YzAsMHgwMywweGIwLDB4ZjMJQCBhZXNpbWMgcTAscTAKKwkuYnl0ZQkweGMyLDB4MjMsMHhiMCwweGYzCUAgYWVzaW1jIHExLHExCisJLmJ5dGUJMHg2NCwweDAzLDB4YjAsMHhmMwlAIGFlc2QgcTAscTEwCisJLmJ5dGUJMHg2NCwweDIzLDB4YjAsMHhmMwlAIGFlc2QgcTEscTEwCisJLmJ5dGUJMHhjMCwweDAzLDB4YjAsMHhmMwlAIGFlc2ltYyBxMCxxMAorCS5ieXRlCTB4YzIsMHgyMywweGIwLDB4ZjMJQCBhZXNpbWMgcTEscTEKKwkuYnl0ZQkweDY2LDB4MDMsMHhiMCwweGYzCUAgYWVzZCBxMCxxMTEKKwkuYnl0ZQkweDY2LDB4MjMsMHhiMCwweGYzCUAgYWVzZCBxMSxxMTEKKwkuYnl0ZQkweGMwLDB4MDMsMHhiMCwweGYzCUAgYWVzaW1jIHEwLHEwCisJLmJ5dGUJMHhjMiwweDIzLDB4YjAsMHhmMwlAIGFlc2ltYyBxMSxxMQorCS5ieXRlCTB4NjgsMHgwMywweGIwLDB4ZjMJQCBhZXNkIHEwLHExMgorCS5ieXRlCTB4NjgsMHgyMywweGIwLDB4ZjMJQCBhZXNkIHExLHExMgorCS5ieXRlCTB4YzAsMHgwMywweGIwLDB4ZjMJQCBhZXNpbWMgcTAscTAKKwkuYnl0ZQkweGMyLDB4MjMsMHhiMCwweGYzCUAgYWVzaW1jIHExLHExCisJLmJ5dGUJMHg2YSwweDAzLDB4YjAsMHhmMwlAIGFlc2QgcTAscTEzCisJLmJ5dGUJMHg2YSwweDIzLDB4YjAsMHhmMwlAIGFlc2QgcTEscTEzCisJLmJ5dGUJMHhjMCwweDAzLDB4YjAsMHhmMwlAIGFlc2ltYyBxMCxxMAorCS5ieXRlCTB4YzIsMHgyMywweGIwLDB4ZjMJQCBhZXNpbWMgcTEscTEKKwkuYnl0ZQkweDZjLDB4MDMsMHhiMCwweGYzCUAgYWVzZCBxMCxxMTQKKwkuYnl0ZQkweDZjLDB4MjMsMHhiMCwweGYzCUAgYWVzZCBxMSxxMTQKKwkuYnl0ZQkweGMwLDB4MDMsMHhiMCwweGYzCUAgYWVzaW1jIHEwLHEwCisJLmJ5dGUJMHhjMiwweDIzLDB4YjAsMHhmMwlAIGFlc2ltYyBxMSxxMQorCS5ieXRlCTB4NmUsMHgwMywweGIwLDB4ZjMJQCBhZXNkIHEwLHExNQorCS5ieXRlCTB4NmUsMHgyMywweGIwLDB4ZjMJQCBhZXNkIHExLHExNQorCisJdmVvcglxNixxNixxMAorCXZsZDEuOAl7cTB9LFtyMF0scjgKKwl2ZW9yCXEyLHEyLHExCisJdmxkMS44CXtxMX0sW3IwXSxyMTIKKwl2c3QxLjgJe3E2fSxbcjFdIQorCXZlb3IJcTYscTMscTcKKwl2c3QxLjgJe3EyfSxbcjFdIQorCXZlb3IJcTIscTAscTcKKwl2b3JyCXEzLHExLHExCisJYmhzCS5Mb29wMnhfY2JjX2RlYzEyOAorCisJYWRkcwlyMixyMiwjMzIKKwl2ZW9yCXE2LHE2LHE3CisJYmVxCS5MY2JjX2RvbmUKKwl2ZW9yCXEyLHEyLHE3CisJYgkuTGNiY19kZWNfdGFpbAorCisuYWxpZ24JNQorLkxjYmNfZGVjOgorCXN1YnMJcjIscjIsIzE2CisJdm9ycglxMixxMCxxMAorCWJsbwkuTGNiY19kZWNfdGFpbAorCisJbW92ZXEJcjgsIzAKKwljbXAJcjUsIzIKKwl2bGQxLjgJe3ExfSxbcjBdLHI4CisJdm9ycglxMyxxMSxxMQorCWJlcQkuTGNiY19kZWMxMjgKKworLkxvb3AyeF9jYmNfZGVjOgorCS5ieXRlCTB4NjAsMHgwMywweGIwLDB4ZjMJQCBhZXNkIHEwLHE4CisJLmJ5dGUJMHg2MCwweDIzLDB4YjAsMHhmMwlAIGFlc2QgcTEscTgKKwl2bGQxLjMyCXtxOH0sW3I3XSEKKwkuYnl0ZQkweGMwLDB4MDMsMHhiMCwweGYzCUAgYWVzaW1jIHEwLHEwCisJLmJ5dGUJMHhjMiwweDIzLDB4YjAsMHhmMwlAIGFlc2ltYyBxMSxxMQorCXN1YnMJcjYscjYsIzIKKwkuYnl0ZQkweDYyLDB4MDMsMHhiMCwweGYzCUAgYWVzZCBxMCxxOQorCS5ieXRlCTB4NjIsMHgyMywweGIwLDB4ZjMJQCBhZXNkIHExLHE5CisJdmxkMS4zMgl7cTl9LFtyN10hCisJLmJ5dGUJMHhjMCwweDAzLDB4YjAsMHhmMwlAIGFlc2ltYyBxMCxxMAorCS5ieXRlCTB4YzIsMHgyMywweGIwLDB4ZjMJQCBhZXNpbWMgcTEscTEKKwliZ3QJLkxvb3AyeF9jYmNfZGVjCisKKwkuYnl0ZQkweDYwLDB4MDMsMHhiMCwweGYzCUAgYWVzZCBxMCxxOAorCS5ieXRlCTB4NjAsMHgyMywweGIwLDB4ZjMJQCBhZXNkIHExLHE4CisJLmJ5dGUJMHhjMCwweDAzLDB4YjAsMHhmMwlAIGFlc2ltYyBxMCxxMAorCS5ieXRlCTB4YzIsMHgyMywweGIwLDB4ZjMJQCBhZXNpbWMgcTEscTEKKwkgdmVvcglxNCxxNixxNworCSB2ZW9yCXE1LHEyLHE3CisJLmJ5dGUJMHg2MiwweDAzLDB4YjAsMHhmMwlAIGFlc2QgcTAscTkKKwkuYnl0ZQkweDYyLDB4MjMsMHhiMCwweGYzCUAgYWVzZCBxMSxxOQorCS5ieXRlCTB4YzAsMHgwMywweGIwLDB4ZjMJQCBhZXNpbWMgcTAscTAKKwkuYnl0ZQkweGMyLDB4MjMsMHhiMCwweGYzCUAgYWVzaW1jIHExLHExCisJIHZvcnIJcTYscTMscTMKKwkgc3VicwlyMixyMiwjMzIKKwkuYnl0ZQkweDY0LDB4MDMsMHhiMCwweGYzCUAgYWVzZCBxMCxxMTAKKwkuYnl0ZQkweDY0LDB4MjMsMHhiMCwweGYzCUAgYWVzZCBxMSxxMTAKKwkuYnl0ZQkweGMwLDB4MDMsMHhiMCwweGYzCUAgYWVzaW1jIHEwLHEwCisJIG1vdmxvCXI4LCMwCisJLmJ5dGUJMHhjMiwweDIzLDB4YjAsMHhmMwlAIGFlc2ltYyBxMSxxMQorCSBtb3YJcjcscjMKKwkuYnl0ZQkweDY2LDB4MDMsMHhiMCwweGYzCUAgYWVzZCBxMCxxMTEKKwkuYnl0ZQkweDY2LDB4MjMsMHhiMCwweGYzCUAgYWVzZCBxMSxxMTEKKwkuYnl0ZQkweGMwLDB4MDMsMHhiMCwweGYzCUAgYWVzaW1jIHEwLHEwCisJIHZsZDEuOAl7cTJ9LFtyMF0scjgKKwkuYnl0ZQkweGMyLDB4MjMsMHhiMCwweGYzCUAgYWVzaW1jIHExLHExCisJIG1vdmxzCXI4LCMwCisJLmJ5dGUJMHg2OCwweDAzLDB4YjAsMHhmMwlAIGFlc2QgcTAscTEyCisJLmJ5dGUJMHg2OCwweDIzLDB4YjAsMHhmMwlAIGFlc2QgcTEscTEyCisJLmJ5dGUJMHhjMCwweDAzLDB4YjAsMHhmMwlAIGFlc2ltYyBxMCxxMAorCS5ieXRlCTB4YzIsMHgyMywweGIwLDB4ZjMJQCBhZXNpbWMgcTEscTEKKwkgdmxkMS44CXtxM30sW3IwXSxyOAorCS5ieXRlCTB4NmEsMHgwMywweGIwLDB4ZjMJQCBhZXNkIHEwLHExMworCS5ieXRlCTB4NmEsMHgyMywweGIwLDB4ZjMJQCBhZXNkIHExLHExMworCS5ieXRlCTB4YzAsMHgwMywweGIwLDB4ZjMJQCBhZXNpbWMgcTAscTAKKwkuYnl0ZQkweGMyLDB4MjMsMHhiMCwweGYzCUAgYWVzaW1jIHExLHExCisJIHZsZDEuMzIge3E4fSxbcjddIQlAIHJlLXByZS1sb2FkIHJuZGtleVswXQorCS5ieXRlCTB4NmMsMHgwMywweGIwLDB4ZjMJQCBhZXNkIHEwLHExNAorCS5ieXRlCTB4NmMsMHgyMywweGIwLDB4ZjMJQCBhZXNkIHExLHExNAorCS5ieXRlCTB4YzAsMHgwMywweGIwLDB4ZjMJQCBhZXNpbWMgcTAscTAKKwkuYnl0ZQkweGMyLDB4MjMsMHhiMCwweGYzCUAgYWVzaW1jIHExLHExCisJIHZsZDEuMzIge3E5fSxbcjddIQlAIHJlLXByZS1sb2FkIHJuZGtleVsxXQorCS5ieXRlCTB4NmUsMHgwMywweGIwLDB4ZjMJQCBhZXNkIHEwLHExNQorCS5ieXRlCTB4NmUsMHgyMywweGIwLDB4ZjMJQCBhZXNkIHExLHExNQorCisJIG1vdglyNixyNQorCXZlb3IJcTQscTQscTAKKwl2ZW9yCXE1LHE1LHExCisJIHZvcnIJcTAscTIscTIKKwl2c3QxLjgJe3E0fSxbcjFdIQorCSB2b3JyCXExLHEzLHEzCisJdnN0MS44CXtxNX0sW3IxXSEKKwliaHMJLkxvb3AyeF9jYmNfZGVjCisKKwlhZGRzCXIyLHIyLCMzMgorCWJlcQkuTGNiY19kb25lCisKKy5MY2JjX2RlY190YWlsOgorCS5ieXRlCTB4NjAsMHgwMywweGIwLDB4ZjMJQCBhZXNkIHEwLHE4CisJdmxkMS4zMgl7cTh9LFtyN10hCisJLmJ5dGUJMHhjMCwweDAzLDB4YjAsMHhmMwlAIGFlc2ltYyBxMCxxMAorCXN1YnMJcjYscjYsIzIKKwkuYnl0ZQkweDYyLDB4MDMsMHhiMCwweGYzCUAgYWVzZCBxMCxxOQorCXZsZDEuMzIJe3E5fSxbcjddIQorCS5ieXRlCTB4YzAsMHgwMywweGIwLDB4ZjMJQCBhZXNpbWMgcTAscTAKKwliZ3QJLkxjYmNfZGVjX3RhaWwKKworCS5ieXRlCTB4NjAsMHgwMywweGIwLDB4ZjMJQCBhZXNkIHEwLHE4CisJLmJ5dGUJMHhjMCwweDAzLDB4YjAsMHhmMwlAIGFlc2ltYyBxMCxxMAorCS5ieXRlCTB4NjIsMHgwMywweGIwLDB4ZjMJQCBhZXNkIHEwLHE5CisJLmJ5dGUJMHhjMCwweDAzLDB4YjAsMHhmMwlAIGFlc2ltYyBxMCxxMAorCSB2ZW9yCXE0LHE2LHE3CisJLmJ5dGUJMHg2NCwweDAzLDB4YjAsMHhmMwlAIGFlc2QgcTAscTEwCisJLmJ5dGUJMHhjMCwweDAzLDB4YjAsMHhmMwlAIGFlc2ltYyBxMCxxMAorCSB2b3JyCXE2LHEyLHEyCisJLmJ5dGUJMHg2NiwweDAzLDB4YjAsMHhmMwlAIGFlc2QgcTAscTExCisJLmJ5dGUJMHhjMCwweDAzLDB4YjAsMHhmMwlAIGFlc2ltYyBxMCxxMAorCS5ieXRlCTB4NjgsMHgwMywweGIwLDB4ZjMJQCBhZXNkIHEwLHExMgorCS5ieXRlCTB4YzAsMHgwMywweGIwLDB4ZjMJQCBhZXNpbWMgcTAscTAKKwkuYnl0ZQkweDZhLDB4MDMsMHhiMCwweGYzCUAgYWVzZCBxMCxxMTMKKwkuYnl0ZQkweGMwLDB4MDMsMHhiMCwweGYzCUAgYWVzaW1jIHEwLHEwCisJLmJ5dGUJMHg2YywweDAzLDB4YjAsMHhmMwlAIGFlc2QgcTAscTE0CisJLmJ5dGUJMHhjMCwweDAzLDB4YjAsMHhmMwlAIGFlc2ltYyBxMCxxMAorCS5ieXRlCTB4NmUsMHgwMywweGIwLDB4ZjMJQCBhZXNkIHEwLHExNQorCisJdmVvcglxNCxxNCxxMAorCXZzdDEuOAl7cTR9LFtyMV0hCisKKy5MY2JjX2RvbmU6CisJdnN0MS44CXtxNn0sW3I0XQorLkxjYmNfYWJvcnQ6CisJdmxkbWlhCXNwISx7ZDgtZDE1fQorCWxkbWlhCXNwISx7cjQtcjgscGN9Cisuc2l6ZQlhZXNfdjhfY2JjX2VuY3J5cHQsLi1hZXNfdjhfY2JjX2VuY3J5cHQKKy5nbG9ibAlhZXNfdjhfY3RyMzJfZW5jcnlwdF9ibG9ja3MKKy50eXBlCWFlc192OF9jdHIzMl9lbmNyeXB0X2Jsb2NrcywlZnVuY3Rpb24KKy5hbGlnbgk1CithZXNfdjhfY3RyMzJfZW5jcnlwdF9ibG9ja3M6CisJbW92CQlpcCxzcAorCXN0bWRiCQlzcCEse3I0LXIxMCxscn0KKwl2c3RtZGIJCXNwISx7ZDgtZDE1fSAgICAgICAgICAgIEAgQUJJIHNwZWNpZmljYXRpb24gc2F5cyBzbworCWxkcgkJcjQsIFtpcF0JCUAgbG9hZCByZW1haW5pbmcgYXJnCisJbGRyCQlyNSxbcjMsIzI0MF0KKworCWxkcgkJcjgsIFtyNCwgIzEyXQorCXZsZDEuMzIJCXtxMH0sW3I0XQorCisJdmxkMS4zMgkJe3E4LXE5fSxbcjNdCQlAIGxvYWQga2V5IHNjaGVkdWxlLi4uCisJc3ViCQlyNSxyNSwjNgorCWFkZAkJcjcscjMscjUsbHNsIzQJQCBwb2ludGVyIHRvIGxhc3QgNyByb3VuZCBrZXlzCisJc3ViCQlyNSxyNSwjMgorCXZsZDEuMzIJCXtxMTAtcTExfSxbcjddIQorCXZsZDEuMzIJCXtxMTItcTEzfSxbcjddIQorCXZsZDEuMzIJCXtxMTQtcTE1fSxbcjddIQorCXZsZDEuMzIJCXtxN30sW3I3XQorCisJYWRkCQlyNyxyMywjMzIKKwltb3YJCXI2LHI1CisKKwlzdWJzCQlyMixyMiwjMgorCWJsbwkJLkxjdHIzMl90YWlsCisKKyNpZm5kZWYgX19BUk1FQl9fCisJcmV2CQlyOCwgcjgKKyNlbmRpZgorCXZvcnIJCXExLHEwLHEwCisJYWRkCQlyOCwgcjgsICMxCisJdm9ycgkJcTYscTAscTAKKwlyZXYJCXIxMCwgcjgKKwljbXAJCXI1LCMyCisJdm1vdi4zMglkM1sxXSxyMTAKKwliZXEJCS5MY3RyMzJfMTI4CisKKy5Mb29wMnhfY3RyMzI6CisJLmJ5dGUJMHgyMCwweDAzLDB4YjAsMHhmMwlAIGFlc2UgcTAscTgKKwkuYnl0ZQkweDIwLDB4MjMsMHhiMCwweGYzCUAgYWVzZSBxMSxxOAorCXZsZDEuMzIJCXtxOH0sW3I3XSEKKwkuYnl0ZQkweDgwLDB4MDMsMHhiMCwweGYzCUAgYWVzbWMgcTAscTAKKwkuYnl0ZQkweDgyLDB4MjMsMHhiMCwweGYzCUAgYWVzbWMgcTEscTEKKwlzdWJzCQlyNixyNiwjMgorCS5ieXRlCTB4MjIsMHgwMywweGIwLDB4ZjMJQCBhZXNlIHEwLHE5CisJLmJ5dGUJMHgyMiwweDIzLDB4YjAsMHhmMwlAIGFlc2UgcTEscTkKKwl2bGQxLjMyCQl7cTl9LFtyN10hCisJLmJ5dGUJMHg4MCwweDAzLDB4YjAsMHhmMwlAIGFlc21jIHEwLHEwCisJLmJ5dGUJMHg4MiwweDIzLDB4YjAsMHhmMwlAIGFlc21jIHExLHExCisJYmd0CQkuTG9vcDJ4X2N0cjMyCisKKwkuYnl0ZQkweDIwLDB4MDMsMHhiMCwweGYzCUAgYWVzZSBxMCxxOAorCS5ieXRlCTB4MjAsMHgyMywweGIwLDB4ZjMJQCBhZXNlIHExLHE4CisJLmJ5dGUJMHg4MCwweDgzLDB4YjAsMHhmMwlAIGFlc21jIHE0LHEwCisJIHZvcnIJCXEwLHE2LHE2CisJLmJ5dGUJMHg4MiwweGEzLDB4YjAsMHhmMwlAIGFlc21jIHE1LHExCisJIHZvcnIJCXExLHE2LHE2CisJLmJ5dGUJMHgyMiwweDgzLDB4YjAsMHhmMwlAIGFlc2UgcTQscTkKKwkuYnl0ZQkweDIyLDB4YTMsMHhiMCwweGYzCUAgYWVzZSBxNSxxOQorCSB2bGQxLjgJCXtxMn0sW3IwXSEKKwkuYnl0ZQkweDg4LDB4ODMsMHhiMCwweGYzCUAgYWVzbWMgcTQscTQKKwkgdmxkMS44CQl7cTN9LFtyMF0hCisJLmJ5dGUJMHg4YSwweGEzLDB4YjAsMHhmMwlAIGFlc21jIHE1LHE1CisJIGFkZAkJcjgscjgsIzEKKwkuYnl0ZQkweDI0LDB4ODMsMHhiMCwweGYzCUAgYWVzZSBxNCxxMTAKKwkuYnl0ZQkweDI0LDB4YTMsMHhiMCwweGYzCUAgYWVzZSBxNSxxMTAKKwkgcmV2CQlyOSxyOAorCS5ieXRlCTB4ODgsMHg4MywweGIwLDB4ZjMJQCBhZXNtYyBxNCxxNAorCS5ieXRlCTB4OGEsMHhhMywweGIwLDB4ZjMJQCBhZXNtYyBxNSxxNQorCSBhZGQJCXI4LHI4LCMxCisJLmJ5dGUJMHgyNiwweDgzLDB4YjAsMHhmMwlAIGFlc2UgcTQscTExCisJLmJ5dGUJMHgyNiwweGEzLDB4YjAsMHhmMwlAIGFlc2UgcTUscTExCisJIHZlb3IJCXEyLHEyLHE3CisJIHJldgkJcjEwLHI4CisJLmJ5dGUJMHg4OCwweDgzLDB4YjAsMHhmMwlAIGFlc21jIHE0LHE0CisJLmJ5dGUJMHg4YSwweGEzLDB4YjAsMHhmMwlAIGFlc21jIHE1LHE1CisJIHZlb3IJCXEzLHEzLHE3CisJIG1vdgkJcjcscjMKKwkuYnl0ZQkweDI4LDB4ODMsMHhiMCwweGYzCUAgYWVzZSBxNCxxMTIKKwkuYnl0ZQkweDI4LDB4YTMsMHhiMCwweGYzCUAgYWVzZSBxNSxxMTIKKwkgc3VicwkJcjIscjIsIzIKKwkuYnl0ZQkweDg4LDB4ODMsMHhiMCwweGYzCUAgYWVzbWMgcTQscTQKKwkuYnl0ZQkweDhhLDB4YTMsMHhiMCwweGYzCUAgYWVzbWMgcTUscTUKKwkgdmxkMS4zMgkge3E4LXE5fSxbcjddIQlAIHJlLXByZS1sb2FkIHJuZGtleVswLTFdCisJLmJ5dGUJMHgyYSwweDgzLDB4YjAsMHhmMwlAIGFlc2UgcTQscTEzCisJLmJ5dGUJMHgyYSwweGEzLDB4YjAsMHhmMwlAIGFlc2UgcTUscTEzCisJLmJ5dGUJMHg4OCwweDgzLDB4YjAsMHhmMwlAIGFlc21jIHE0LHE0CisJLmJ5dGUJMHg4YSwweGEzLDB4YjAsMHhmMwlAIGFlc21jIHE1LHE1CisJLmJ5dGUJMHgyYywweDgzLDB4YjAsMHhmMwlAIGFlc2UgcTQscTE0CisJLmJ5dGUJMHgyYywweGEzLDB4YjAsMHhmMwlAIGFlc2UgcTUscTE0CisJIHZtb3YuMzIJZDFbMV0sIHI5CisJLmJ5dGUJMHg4OCwweDgzLDB4YjAsMHhmMwlAIGFlc21jIHE0LHE0CisJIHZtb3YuMzIJZDNbMV0sIHIxMAorCS5ieXRlCTB4OGEsMHhhMywweGIwLDB4ZjMJQCBhZXNtYyBxNSxxNQorCS5ieXRlCTB4MmUsMHg4MywweGIwLDB4ZjMJQCBhZXNlIHE0LHExNQorCS5ieXRlCTB4MmUsMHhhMywweGIwLDB4ZjMJQCBhZXNlIHE1LHExNQorCisJIG1vdgkJcjYscjUKKwl2ZW9yCQlxMixxMixxNAorCXZlb3IJCXEzLHEzLHE1CisJdnN0MS44CQl7cTJ9LFtyMV0hCisJdnN0MS44CQl7cTN9LFtyMV0hCisJYmhzCQkuTG9vcDJ4X2N0cjMyCisKKwlhZGRzCQlyMixyMiwjMgorCWJlcQkJLkxjdHIzMl9kb25lCisJYgkJLkxjdHIzMl90YWlsCisKKy5MY3RyMzJfMTI4OgorCXZsZDEuMzIJCXtxNC1xNX0sW3I3XQorCisuTG9vcDJ4X2N0cjMyXzEyODoKKwkuYnl0ZQkweDIwLDB4MDMsMHhiMCwweGYzCUAgYWVzZSBxMCxxOAorCS5ieXRlCTB4MjAsMHgyMywweGIwLDB4ZjMJQCBhZXNlIHExLHE4CisJLmJ5dGUJMHg4MCwweDAzLDB4YjAsMHhmMwlAIGFlc21jIHEwLHEwCisJIHZsZDEuOAkJe3EyfSxbcjBdIQorCS5ieXRlCTB4ODIsMHgyMywweGIwLDB4ZjMJQCBhZXNtYyBxMSxxMQorCSB2bGQxLjgJCXtxM30sW3IwXSEKKwkuYnl0ZQkweDIyLDB4MDMsMHhiMCwweGYzCUAgYWVzZSBxMCxxOQorCS5ieXRlCTB4MjIsMHgyMywweGIwLDB4ZjMJQCBhZXNlIHExLHE5CisJIGFkZAkJcjgscjgsIzEKKwkuYnl0ZQkweDgwLDB4MDMsMHhiMCwweGYzCUAgYWVzbWMgcTAscTAKKwkuYnl0ZQkweDgyLDB4MjMsMHhiMCwweGYzCUAgYWVzbWMgcTEscTEKKwkgcmV2CQlyOSxyOAorCS5ieXRlCTB4MDgsMHgwMywweGIwLDB4ZjMJQCBhZXNlIHEwLHE0CisJLmJ5dGUJMHgwOCwweDIzLDB4YjAsMHhmMwlAIGFlc2UgcTEscTQKKwkgYWRkCQlyOCxyOCwjMQorCS5ieXRlCTB4ODAsMHgwMywweGIwLDB4ZjMJQCBhZXNtYyBxMCxxMAorCS5ieXRlCTB4ODIsMHgyMywweGIwLDB4ZjMJQCBhZXNtYyBxMSxxMQorCSByZXYJCXIxMCxyOAorCS5ieXRlCTB4MGEsMHgwMywweGIwLDB4ZjMJQCBhZXNlIHEwLHE1CisJLmJ5dGUJMHgwYSwweDIzLDB4YjAsMHhmMwlAIGFlc2UgcTEscTUKKwkgc3VicwkJcjIscjIsIzIKKwkuYnl0ZQkweDgwLDB4MDMsMHhiMCwweGYzCUAgYWVzbWMgcTAscTAKKwkuYnl0ZQkweDgyLDB4MjMsMHhiMCwweGYzCUAgYWVzbWMgcTEscTEKKwkuYnl0ZQkweDI0LDB4MDMsMHhiMCwweGYzCUAgYWVzZSBxMCxxMTAKKwkuYnl0ZQkweDI0LDB4MjMsMHhiMCwweGYzCUAgYWVzZSBxMSxxMTAKKwkuYnl0ZQkweDgwLDB4MDMsMHhiMCwweGYzCUAgYWVzbWMgcTAscTAKKwkuYnl0ZQkweDgyLDB4MjMsMHhiMCwweGYzCUAgYWVzbWMgcTEscTEKKwkuYnl0ZQkweDI2LDB4MDMsMHhiMCwweGYzCUAgYWVzZSBxMCxxMTEKKwkuYnl0ZQkweDI2LDB4MjMsMHhiMCwweGYzCUAgYWVzZSBxMSxxMTEKKwkuYnl0ZQkweDgwLDB4MDMsMHhiMCwweGYzCUAgYWVzbWMgcTAscTAKKwkuYnl0ZQkweDgyLDB4MjMsMHhiMCwweGYzCUAgYWVzbWMgcTEscTEKKwkuYnl0ZQkweDI4LDB4MDMsMHhiMCwweGYzCUAgYWVzZSBxMCxxMTIKKwkuYnl0ZQkweDI4LDB4MjMsMHhiMCwweGYzCUAgYWVzZSBxMSxxMTIKKwkuYnl0ZQkweDgwLDB4MDMsMHhiMCwweGYzCUAgYWVzbWMgcTAscTAKKwkuYnl0ZQkweDgyLDB4MjMsMHhiMCwweGYzCUAgYWVzbWMgcTEscTEKKwkuYnl0ZQkweDJhLDB4MDMsMHhiMCwweGYzCUAgYWVzZSBxMCxxMTMKKwkuYnl0ZQkweDJhLDB4MjMsMHhiMCwweGYzCUAgYWVzZSBxMSxxMTMKKwkuYnl0ZQkweDgwLDB4MDMsMHhiMCwweGYzCUAgYWVzbWMgcTAscTAKKwkuYnl0ZQkweDgyLDB4MjMsMHhiMCwweGYzCUAgYWVzbWMgcTEscTEKKwkuYnl0ZQkweDJjLDB4MDMsMHhiMCwweGYzCUAgYWVzZSBxMCxxMTQKKwkuYnl0ZQkweDJjLDB4MjMsMHhiMCwweGYzCUAgYWVzZSBxMSxxMTQKKwkuYnl0ZQkweDgwLDB4MDMsMHhiMCwweGYzCUAgYWVzbWMgcTAscTAKKwkuYnl0ZQkweDgyLDB4MjMsMHhiMCwweGYzCUAgYWVzbWMgcTEscTEKKwkgdmVvcgkJcTIscTIscTcKKwkuYnl0ZQkweDJlLDB4MDMsMHhiMCwweGYzCUAgYWVzZSBxMCxxMTUKKwkgdmVvcgkJcTMscTMscTcKKwkuYnl0ZQkweDJlLDB4MjMsMHhiMCwweGYzCUAgYWVzZSBxMSxxMTUKKworCXZlb3IJCXEyLHEyLHEwCisJdm9ycgkJcTAscTYscTYKKwl2ZW9yCQlxMyxxMyxxMQorCXZvcnIJCXExLHE2LHE2CisJdnN0MS44CQl7cTJ9LFtyMV0hCisJdm1vdi4zMglkMVsxXSwgcjkKKwl2c3QxLjgJCXtxM30sW3IxXSEKKwl2bW92LjMyCWQzWzFdLCByMTAKKwliaHMJCS5Mb29wMnhfY3RyMzJfMTI4CisKKwlhZGRzCQlyMixyMiwjMgorCWJlcQkJLkxjdHIzMl9kb25lCisKKy5MY3RyMzJfdGFpbDoKKwkuYnl0ZQkweDIwLDB4MDMsMHhiMCwweGYzCUAgYWVzZSBxMCxxOAorCXZsZDEuMzIJCXtxOH0sW3I3XSEKKwkuYnl0ZQkweDgwLDB4MDMsMHhiMCwweGYzCUAgYWVzbWMgcTAscTAKKwlzdWJzCQlyNixyNiwjMgorCS5ieXRlCTB4MjIsMHgwMywweGIwLDB4ZjMJQCBhZXNlIHEwLHE5CisJdmxkMS4zMgkJe3E5fSxbcjddIQorCS5ieXRlCTB4ODAsMHgwMywweGIwLDB4ZjMJQCBhZXNtYyBxMCxxMAorCWJndAkJLkxjdHIzMl90YWlsCisKKwkuYnl0ZQkweDIwLDB4MDMsMHhiMCwweGYzCUAgYWVzZSBxMCxxOAorCS5ieXRlCTB4ODAsMHgwMywweGIwLDB4ZjMJQCBhZXNtYyBxMCxxMAorCS5ieXRlCTB4MjIsMHgwMywweGIwLDB4ZjMJQCBhZXNlIHEwLHE5CisJLmJ5dGUJMHg4MCwweDAzLDB4YjAsMHhmMwlAIGFlc21jIHEwLHEwCisJIHZsZDEuOAkJe3EyfSxbcjBdCisJLmJ5dGUJMHgyNCwweDAzLDB4YjAsMHhmMwlAIGFlc2UgcTAscTEwCisJLmJ5dGUJMHg4MCwweDAzLDB4YjAsMHhmMwlAIGFlc21jIHEwLHEwCisJLmJ5dGUJMHgyNiwweDAzLDB4YjAsMHhmMwlAIGFlc2UgcTAscTExCisJLmJ5dGUJMHg4MCwweDAzLDB4YjAsMHhmMwlAIGFlc21jIHEwLHEwCisJLmJ5dGUJMHgyOCwweDAzLDB4YjAsMHhmMwlAIGFlc2UgcTAscTEyCisJLmJ5dGUJMHg4MCwweDAzLDB4YjAsMHhmMwlAIGFlc21jIHEwLHEwCisJLmJ5dGUJMHgyYSwweDAzLDB4YjAsMHhmMwlAIGFlc2UgcTAscTEzCisJLmJ5dGUJMHg4MCwweDAzLDB4YjAsMHhmMwlAIGFlc21jIHEwLHEwCisJLmJ5dGUJMHgyYywweDAzLDB4YjAsMHhmMwlAIGFlc2UgcTAscTE0CisJLmJ5dGUJMHg4MCwweDAzLDB4YjAsMHhmMwlAIGFlc21jIHEwLHEwCisJIHZlb3IJCXEyLHEyLHE3CisJLmJ5dGUJMHgyZSwweDAzLDB4YjAsMHhmMwlAIGFlc2UgcTAscTE1CisKKwl2ZW9yCQlxMixxMixxMAorCXZzdDEuOAkJe3EyfSxbcjFdCisKKy5MY3RyMzJfZG9uZToKKwl2bGRtaWEJCXNwISx7ZDgtZDE1fQorCWxkbWlhCQlzcCEse3I0LXIxMCxwY30KKy5zaXplCWFlc192OF9jdHIzMl9lbmNyeXB0X2Jsb2NrcywuLWFlc192OF9jdHIzMl9lbmNyeXB0X2Jsb2NrcworI2VuZGlmCmRpZmYgLS1naXQgYS9jcnlwdG8vYWVzL2FzbS9hZXN2OC1hcm14LnBsIGIvY3J5cHRvL2Flcy9hc20vYWVzdjgtYXJteC5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MTVkYzA0Ci0tLSAvZGV2L251bGwKKysrIGIvY3J5cHRvL2Flcy9hc20vYWVzdjgtYXJteC5wbApAQCAtMCwwICsxLDk4MCBAQAorIyEvdXNyL2Jpbi9lbnYgcGVybAorIworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBXcml0dGVuIGJ5IEFuZHkgUG9seWFrb3YgPGFwcHJvQG9wZW5zc2wub3JnPiBmb3IgdGhlIE9wZW5TU0wKKyMgcHJvamVjdC4gVGhlIG1vZHVsZSBpcywgaG93ZXZlciwgZHVhbCBsaWNlbnNlZCB1bmRlciBPcGVuU1NMIGFuZAorIyBDUllQVE9HQU1TIGxpY2Vuc2VzIGRlcGVuZGluZyBvbiB3aGVyZSB5b3Ugb2J0YWluIGl0LiBGb3IgZnVydGhlcgorIyBkZXRhaWxzIHNlZSBodHRwOi8vd3d3Lm9wZW5zc2wub3JnL35hcHByby9jcnlwdG9nYW1zLy4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMKKyMgVGhpcyBtb2R1bGUgaW1wbGVtZW50cyBzdXBwb3J0IGZvciBBUk12OCBBRVMgaW5zdHJ1Y3Rpb25zLiBUaGUKKyMgbW9kdWxlIGlzIGVuZGlhbi1hZ25vc3RpYyBpbiBzZW5zZSB0aGF0IGl0IHN1cHBvcnRzIGJvdGggYmlnLSBhbmQKKyMgbGl0dGxlLWVuZGlhbiBjYXNlcy4gQXMgZG9lcyBpdCBzdXBwb3J0IGJvdGggMzItIGFuZCA2NC1iaXQgbW9kZXMKKyMgb2Ygb3BlcmF0aW9uLiBMYXR0ZXIgaXMgYWNoaWV2ZWQgYnkgbGltaXRpbmcgYW1vdW50IG9mIHV0aWxpemVkCisjIHJlZ2lzdGVycyB0byAxNiwgd2hpY2ggaW1wbGllcyBhZGRpdGlvbmFsIGluc3RydWN0aW9ucy4gVGhpcyBoYXMKKyMgbm8gZWZmZWN0IG9uIG1pZ2h0eSBBcHBsZSBBNywgYXMgcmVzdWx0cyBhcmUgbGl0ZXJhbGx5IGVxdWFsIHRvCisjIHRoZSB0aGVvcmV0aWNhbCBlc3RpbWF0ZXMgYmFzZWQgb24gaW5zdHJ1Y3Rpb24gbGF0ZW5jaWVzIGFuZCBpc3N1ZQorIyByYXRlLiBJdCByZW1haW5zIHRvIGJlIHNlZW4gaG93IGRvZXMgaXQgYWZmZWN0IG90aGVyIHBsYXRmb3Jtcy4uLgorIworIyBQZXJmb3JtYW5jZSBpbiBjeWNsZXMgcGVyIGJ5dGUgcHJvY2Vzc2VkIHdpdGggMTI4LWJpdCBrZXk6CisjCisjCQlDQkMgZW5jCQlDQkMgZGVjCQlDVFIKKyMgQXBwbGUgQTcJMi4zOQkJMS4yMAkJMS4yMAorIyBDb3J0ZXgtQTV4CW4vYQkJbi9hCQluL2EKKworJGZsYXZvdXIgPSBzaGlmdDsKK29wZW4gU1RET1VULCI+Ii5zaGlmdDsKKworJHByZWZpeD0iYWVzX3Y4IjsKKworJGNvZGU9PDxfX187CisjaW5jbHVkZSAiYXJtX2FyY2guaCIKKworI2lmIF9fQVJNX0FSQ0hfXz49NworLnRleHQKK19fXworJGNvZGUuPSIuYXJjaAlhcm12OC1hK2NyeXB0b1xuIglpZiAoJGZsYXZvdXIgPX4gLzY0Lyk7CiskY29kZS49Ii5mcHUJbmVvblxuLmNvZGUJMzJcbiIJaWYgKCRmbGF2b3VyICF+IC82NC8pOworCisjIEFzc2VtYmxlciBtbmVtb25pY3MgYXJlIGFuIGVjbGVjdGljIG1peCBvZiAzMi0gYW5kIDY0LWJpdCBzeW50YXgsCisjIE5FT04gaXMgbW9zdGx5IDMyLWJpdCBtbmVtb25pY3MsIGludGVnZXIgLSBtb3N0bHkgNjQuIEdvYWwgaXMgdG8KKyMgbWFpbnRhaW4gYm90aCAzMi0gYW5kIDY0LWJpdCBjb2RlcyB3aXRoaW4gc2luZ2xlIG1vZHVsZSBhbmQKKyMgdHJhbnNsaXRlcmF0ZSBjb21tb24gY29kZSB0byBlaXRoZXIgZmxhdm91ciB3aXRoIHJlZ2V4IHZvZG9vLgorIwore3t7CitteSAoJGlucCwkYml0cywkb3V0LCRwdHIsJHJvdW5kcyk9KCJ4MCIsIncxIiwieDIiLCJ4MyIsIncxMiIpOworbXkgKCR6ZXJvLCRyY29uLCRtYXNrLCRpbjAsJGluMSwkdG1wLCRrZXkpPQorCSRmbGF2b3VyPX4vNjQvPyBtYXAoInEkXyIsKDAuLjYpKSA6IG1hcCgicSRfIiwoMC4uMyw4Li4xMCkpOworCisKKyRjb2RlLj08PF9fXzsKKy5hbGlnbgk1CityY29uOgorLmxvbmcJMHgwMSwweDAxLDB4MDEsMHgwMQorLmxvbmcJMHgwYzBmMGUwZCwweDBjMGYwZTBkLDB4MGMwZjBlMGQsMHgwYzBmMGUwZAkvLyByb3RhdGUtbi1zcGxhdAorLmxvbmcJMHgxYiwweDFiLDB4MWIsMHgxYgorCisuZ2xvYmwJJHtwcmVmaXh9X3NldF9lbmNyeXB0X2tleQorLnR5cGUJJHtwcmVmaXh9X3NldF9lbmNyeXB0X2tleSwlZnVuY3Rpb24KKy5hbGlnbgk1Ciske3ByZWZpeH1fc2V0X2VuY3J5cHRfa2V5OgorLkxlbmNfa2V5OgorX19fCiskY29kZS49PDxfX18JaWYgKCRmbGF2b3VyID1+IC82NC8pOworCXN0cAl4MjkseDMwLFtzcCwjLTE2XSEKKwlhZGQJeDI5LHNwLCMwCitfX18KKyRjb2RlLj08PF9fXzsKKwlhZHIJJHB0cixyY29uCisJY21wCSRiaXRzLCMxOTIKKworCXZlb3IJJHplcm8sJHplcm8sJHplcm8KKwl2bGQxLjgJeyRpbjB9LFskaW5wXSwjMTYKKwltb3YJJGJpdHMsIzgJCS8vIHJldXNlICRiaXRzCisJdmxkMS4zMgl7JHJjb24sJG1hc2t9LFskcHRyXSwjMzIKKworCWIubHQJLkxvb3AxMjgKKwliLmVxCS5MMTkyCisJYgkuTDI1NgorCisuYWxpZ24JNAorLkxvb3AxMjg6CisJdnRibC44CSRrZXkseyRpbjB9LCRtYXNrCisJdmV4dC44CSR0bXAsJHplcm8sJGluMCwjMTIKKwl2c3QxLjMyCXskaW4wfSxbJG91dF0sIzE2CisJYWVzZQkka2V5LCR6ZXJvCisJc3VicwkkYml0cywkYml0cywjMQorCisJdmVvcgkkaW4wLCRpbjAsJHRtcAorCXZleHQuOAkkdG1wLCR6ZXJvLCR0bXAsIzEyCisJdmVvcgkkaW4wLCRpbjAsJHRtcAorCXZleHQuOAkkdG1wLCR6ZXJvLCR0bXAsIzEyCisJIHZlb3IJJGtleSwka2V5LCRyY29uCisJdmVvcgkkaW4wLCRpbjAsJHRtcAorCXZzaGwudTgJJHJjb24sJHJjb24sIzEKKwl2ZW9yCSRpbjAsJGluMCwka2V5CisJYi5uZQkuTG9vcDEyOAorCisJdmxkMS4zMgl7JHJjb259LFskcHRyXQorCisJdnRibC44CSRrZXkseyRpbjB9LCRtYXNrCisJdmV4dC44CSR0bXAsJHplcm8sJGluMCwjMTIKKwl2c3QxLjMyCXskaW4wfSxbJG91dF0sIzE2CisJYWVzZQkka2V5LCR6ZXJvCisKKwl2ZW9yCSRpbjAsJGluMCwkdG1wCisJdmV4dC44CSR0bXAsJHplcm8sJHRtcCwjMTIKKwl2ZW9yCSRpbjAsJGluMCwkdG1wCisJdmV4dC44CSR0bXAsJHplcm8sJHRtcCwjMTIKKwkgdmVvcgkka2V5LCRrZXksJHJjb24KKwl2ZW9yCSRpbjAsJGluMCwkdG1wCisJdnNobC51OAkkcmNvbiwkcmNvbiwjMQorCXZlb3IJJGluMCwkaW4wLCRrZXkKKworCXZ0YmwuOAkka2V5LHskaW4wfSwkbWFzaworCXZleHQuOAkkdG1wLCR6ZXJvLCRpbjAsIzEyCisJdnN0MS4zMgl7JGluMH0sWyRvdXRdLCMxNgorCWFlc2UJJGtleSwkemVybworCisJdmVvcgkkaW4wLCRpbjAsJHRtcAorCXZleHQuOAkkdG1wLCR6ZXJvLCR0bXAsIzEyCisJdmVvcgkkaW4wLCRpbjAsJHRtcAorCXZleHQuOAkkdG1wLCR6ZXJvLCR0bXAsIzEyCisJIHZlb3IJJGtleSwka2V5LCRyY29uCisJdmVvcgkkaW4wLCRpbjAsJHRtcAorCXZlb3IJJGluMCwkaW4wLCRrZXkKKwl2c3QxLjMyCXskaW4wfSxbJG91dF0KKwlhZGQJJG91dCwkb3V0LCMweDUwCisKKwltb3YJJHJvdW5kcywjMTAKKwliCS5MZG9uZQorCisuYWxpZ24JNAorLkwxOTI6CisJdmxkMS44CXskaW4xfSxbJGlucF0sIzgKKwl2bW92Lmk4CSRrZXksIzgJCQkvLyBib3Jyb3cgJGtleQorCXZzdDEuMzIJeyRpbjB9LFskb3V0XSwjMTYKKwl2c3ViLmk4CSRtYXNrLCRtYXNrLCRrZXkJLy8gYWRqdXN0IHRoZSBtYXNrCisKKy5Mb29wMTkyOgorCXZ0YmwuOAkka2V5LHskaW4xfSwkbWFzaworCXZleHQuOAkkdG1wLCR6ZXJvLCRpbjAsIzEyCisJdnN0MS4zMgl7JGluMX0sWyRvdXRdLCM4CisJYWVzZQkka2V5LCR6ZXJvCisJc3VicwkkYml0cywkYml0cywjMQorCisJdmVvcgkkaW4wLCRpbjAsJHRtcAorCXZleHQuOAkkdG1wLCR6ZXJvLCR0bXAsIzEyCisJdmVvcgkkaW4wLCRpbjAsJHRtcAorCXZleHQuOAkkdG1wLCR6ZXJvLCR0bXAsIzEyCisJdmVvcgkkaW4wLCRpbjAsJHRtcAorCisJdmR1cC4zMgkkdG1wLCR7aW4wfVszXQorCXZlb3IJJHRtcCwkdG1wLCRpbjEKKwkgdmVvcgkka2V5LCRrZXksJHJjb24KKwl2ZXh0LjgJJGluMSwkemVybywkaW4xLCMxMgorCXZzaGwudTgJJHJjb24sJHJjb24sIzEKKwl2ZW9yCSRpbjEsJGluMSwkdG1wCisJdmVvcgkkaW4wLCRpbjAsJGtleQorCXZlb3IJJGluMSwkaW4xLCRrZXkKKwl2c3QxLjMyCXskaW4wfSxbJG91dF0sIzE2CisJYi5uZQkuTG9vcDE5MgorCisJbW92CSRyb3VuZHMsIzEyCisJYWRkCSRvdXQsJG91dCwjMHgyMAorCWIJLkxkb25lCisKKy5hbGlnbgk0CisuTDI1NjoKKwl2bGQxLjgJeyRpbjF9LFskaW5wXQorCW1vdgkkYml0cywjNworCW1vdgkkcm91bmRzLCMxNAorCXZzdDEuMzIJeyRpbjB9LFskb3V0XSwjMTYKKworLkxvb3AyNTY6CisJdnRibC44CSRrZXkseyRpbjF9LCRtYXNrCisJdmV4dC44CSR0bXAsJHplcm8sJGluMCwjMTIKKwl2c3QxLjMyCXskaW4xfSxbJG91dF0sIzE2CisJYWVzZQkka2V5LCR6ZXJvCisJc3VicwkkYml0cywkYml0cywjMQorCisJdmVvcgkkaW4wLCRpbjAsJHRtcAorCXZleHQuOAkkdG1wLCR6ZXJvLCR0bXAsIzEyCisJdmVvcgkkaW4wLCRpbjAsJHRtcAorCXZleHQuOAkkdG1wLCR6ZXJvLCR0bXAsIzEyCisJIHZlb3IJJGtleSwka2V5LCRyY29uCisJdmVvcgkkaW4wLCRpbjAsJHRtcAorCXZzaGwudTgJJHJjb24sJHJjb24sIzEKKwl2ZW9yCSRpbjAsJGluMCwka2V5CisJdnN0MS4zMgl7JGluMH0sWyRvdXRdLCMxNgorCWIuZXEJLkxkb25lCisKKwl2ZHVwLjMyCSRrZXksJHtpbjB9WzNdCQkvLyBqdXN0IHNwbGF0CisJdmV4dC44CSR0bXAsJHplcm8sJGluMSwjMTIKKwlhZXNlCSRrZXksJHplcm8KKworCXZlb3IJJGluMSwkaW4xLCR0bXAKKwl2ZXh0LjgJJHRtcCwkemVybywkdG1wLCMxMgorCXZlb3IJJGluMSwkaW4xLCR0bXAKKwl2ZXh0LjgJJHRtcCwkemVybywkdG1wLCMxMgorCXZlb3IJJGluMSwkaW4xLCR0bXAKKworCXZlb3IJJGluMSwkaW4xLCRrZXkKKwliCS5Mb29wMjU2CisKKy5MZG9uZToKKwlzdHIJJHJvdW5kcyxbJG91dF0KKworCWVvcgl4MCx4MCx4MAkJLy8gcmV0dXJuIHZhbHVlCisJYCJsZHIJeDI5LFtzcF0sIzE2IgkJaWYgKCRmbGF2b3VyID1+IC82NC8pYAorCXJldAorLnNpemUJJHtwcmVmaXh9X3NldF9lbmNyeXB0X2tleSwuLSR7cHJlZml4fV9zZXRfZW5jcnlwdF9rZXkKKworLmdsb2JsCSR7cHJlZml4fV9zZXRfZGVjcnlwdF9rZXkKKy50eXBlCSR7cHJlZml4fV9zZXRfZGVjcnlwdF9rZXksJWZ1bmN0aW9uCisuYWxpZ24JNQorJHtwcmVmaXh9X3NldF9kZWNyeXB0X2tleToKK19fXworJGNvZGUuPTw8X19fCWlmICgkZmxhdm91ciA9fiAvNjQvKTsKKwlzdHAJeDI5LHgzMCxbc3AsIy0xNl0hCisJYWRkCXgyOSxzcCwjMAorX19fCiskY29kZS49PDxfX18JaWYgKCRmbGF2b3VyICF+IC82NC8pOworCXN0bWRiCXNwISx7cjQsbHJ9CitfX18KKyRjb2RlLj08PF9fXzsKKwlibAkuTGVuY19rZXkKKworCXN1Ygkkb3V0LCRvdXQsIzI0MAkJLy8gcmVzdG9yZSBvcmlnaW5hbCAkb3V0CisJbW92CXg0LCMtMTYKKwlhZGQJJGlucCwkb3V0LHgxMixsc2wjNAkvLyBlbmQgb2Yga2V5IHNjaGVkdWxlCisKKwl2bGQxLjMyCXt2MC4xNmJ9LFskb3V0XQorCXZsZDEuMzIJe3YxLjE2Yn0sWyRpbnBdCisJdnN0MS4zMgl7djAuMTZifSxbJGlucF0seDQKKwl2c3QxLjMyCXt2MS4xNmJ9LFskb3V0XSwjMTYKKworLkxvb3BfaW1jOgorCXZsZDEuMzIJe3YwLjE2Yn0sWyRvdXRdCisJdmxkMS4zMgl7djEuMTZifSxbJGlucF0KKwlhZXNpbWMJdjAuMTZiLHYwLjE2YgorCWFlc2ltYwl2MS4xNmIsdjEuMTZiCisJdnN0MS4zMgl7djAuMTZifSxbJGlucF0seDQKKwl2c3QxLjMyCXt2MS4xNmJ9LFskb3V0XSwjMTYKKwljbXAJJGlucCwkb3V0CisJYi5oaQkuTG9vcF9pbWMKKworCXZsZDEuMzIJe3YwLjE2Yn0sWyRvdXRdCisJYWVzaW1jCXYwLjE2Yix2MC4xNmIKKwl2c3QxLjMyCXt2MC4xNmJ9LFskaW5wXQorCisJZW9yCXgwLHgwLHgwCQkvLyByZXR1cm4gdmFsdWUKK19fXworJGNvZGUuPTw8X19fCWlmICgkZmxhdm91ciAhfiAvNjQvKTsKKwlsZG1pYQlzcCEse3I0LHBjfQorX19fCiskY29kZS49PDxfX18JaWYgKCRmbGF2b3VyID1+IC82NC8pOworCWxkcAl4MjkseDMwLFtzcF0sIzE2CisJcmV0CitfX18KKyRjb2RlLj08PF9fXzsKKy5zaXplCSR7cHJlZml4fV9zZXRfZGVjcnlwdF9rZXksLi0ke3ByZWZpeH1fc2V0X2RlY3J5cHRfa2V5CitfX18KK319fQore3t7CitzdWIgZ2VuX2Jsb2NrICgpIHsKK215ICRkaXIgPSBzaGlmdDsKK215ICgkZSwkbWMpID0gJGRpciBlcSAiZW4iID8gKCJlIiwibWMiKSA6ICgiZCIsImltYyIpOworbXkgKCRpbnAsJG91dCwka2V5KT1tYXAoIngkXyIsKDAuLjIpKTsKK215ICRyb3VuZHM9InczIjsKK215ICgkcm5ka2V5MCwkcm5ka2V5MSwkaW5vdXQpPW1hcCgicSRfIiwoMC4uMykpOworCiskY29kZS49PDxfX187CisuZ2xvYmwJJHtwcmVmaXh9XyR7ZGlyfWNyeXB0CisudHlwZQkke3ByZWZpeH1fJHtkaXJ9Y3J5cHQsJWZ1bmN0aW9uCisuYWxpZ24JNQorJHtwcmVmaXh9XyR7ZGlyfWNyeXB0OgorCWxkcgkkcm91bmRzLFska2V5LCMyNDBdCisJdmxkMS4zMgl7JHJuZGtleTB9LFska2V5XSwjMTYKKwl2bGQxLjgJeyRpbm91dH0sWyRpbnBdCisJc3ViCSRyb3VuZHMsJHJvdW5kcywjMgorCXZsZDEuMzIJeyRybmRrZXkxfSxbJGtleV0sIzE2CisKKy5Mb29wXyR7ZGlyfWM6CisJYWVzJGUJJGlub3V0LCRybmRrZXkwCisJdmxkMS4zMgl7JHJuZGtleTB9LFska2V5XSwjMTYKKwlhZXMkbWMJJGlub3V0LCRpbm91dAorCXN1YnMJJHJvdW5kcywkcm91bmRzLCMyCisJYWVzJGUJJGlub3V0LCRybmRrZXkxCisJdmxkMS4zMgl7JHJuZGtleTF9LFska2V5XSwjMTYKKwlhZXMkbWMJJGlub3V0LCRpbm91dAorCWIuZ3QJLkxvb3BfJHtkaXJ9YworCisJYWVzJGUJJGlub3V0LCRybmRrZXkwCisJdmxkMS4zMgl7JHJuZGtleTB9LFska2V5XQorCWFlcyRtYwkkaW5vdXQsJGlub3V0CisJYWVzJGUJJGlub3V0LCRybmRrZXkxCisJdmVvcgkkaW5vdXQsJGlub3V0LCRybmRrZXkwCisKKwl2c3QxLjgJeyRpbm91dH0sWyRvdXRdCisJcmV0Cisuc2l6ZQkke3ByZWZpeH1fJHtkaXJ9Y3J5cHQsLi0ke3ByZWZpeH1fJHtkaXJ9Y3J5cHQKK19fXworfQorJmdlbl9ibG9jaygiZW4iKTsKKyZnZW5fYmxvY2soImRlIik7Cit9fX0KK3t7eworbXkgKCRpbnAsJG91dCwkbGVuLCRrZXksJGl2cCk9bWFwKCJ4JF8iLCgwLi40KSk7IG15ICRlbmM9Inc1IjsKK215ICgkcm91bmRzLCRjbnQsJGtleV8sJHN0ZXAsJHN0ZXAxKT0oJGVuYywidzYiLCJ4NyIsIng4IiwieDEyIik7CitteSAoJGRhdDAsJGRhdDEsJGluMCwkaW4xLCR0bXAwLCR0bXAxLCRpdmVjLCRybmRsYXN0KT1tYXAoInEkXyIsKDAuLjcpKTsKKworbXkgKCRkYXQsJHRtcCwkcm5kemVyb19uX2xhc3QpPSgkZGF0MCwkdG1wMCwkdG1wMSk7CisKKyMjIyBxOC1xMTUJcHJlbG9hZGVkIGtleSBzY2hlZHVsZQorCiskY29kZS49PDxfX187CisuZ2xvYmwJJHtwcmVmaXh9X2NiY19lbmNyeXB0CisudHlwZQkke3ByZWZpeH1fY2JjX2VuY3J5cHQsJWZ1bmN0aW9uCisuYWxpZ24JNQorJHtwcmVmaXh9X2NiY19lbmNyeXB0OgorX19fCiskY29kZS49PDxfX18JaWYgKCRmbGF2b3VyID1+IC82NC8pOworCXN0cAl4MjkseDMwLFtzcCwjLTE2XSEKKwlhZGQJeDI5LHNwLCMwCitfX18KKyRjb2RlLj08PF9fXwlpZiAoJGZsYXZvdXIgIX4gLzY0Lyk7CisJbW92CWlwLHNwCisJc3RtZGIJc3AhLHtyNC1yOCxscn0KKwl2c3RtZGIJc3AhLHtkOC1kMTV9ICAgICAgICAgICAgQCBBQkkgc3BlY2lmaWNhdGlvbiBzYXlzIHNvCisJbGRtaWEJaXAse3I0LXI1fQkJQCBsb2FkIHJlbWFpbmluZyBhcmdzCitfX18KKyRjb2RlLj08PF9fXzsKKwlzdWJzCSRsZW4sJGxlbiwjMTYKKwltb3YJJHN0ZXAsIzE2CisJYi5sbwkuTGNiY19hYm9ydAorCWNjbHIJJHN0ZXAsZXEKKworCWNtcAkkZW5jLCMwCQkJLy8gZW4tIG9yIGRlY3J5cHRpbmc/CisJbGRyCSRyb3VuZHMsWyRrZXksIzI0MF0KKwlhbmQJJGxlbiwkbGVuLCMtMTYKKwl2bGQxLjgJeyRpdmVjfSxbJGl2cF0KKwl2bGQxLjgJeyRkYXR9LFskaW5wXSwkc3RlcAorCisJdmxkMS4zMgl7cTgtcTl9LFska2V5XQkJLy8gbG9hZCBrZXkgc2NoZWR1bGUuLi4KKwlzdWIJJHJvdW5kcywkcm91bmRzLCM2CisJYWRkCSRrZXlfLCRrZXkseDUsbHNsIzQJLy8gcG9pbnRlciB0byBsYXN0IDcgcm91bmQga2V5cworCXN1Ygkkcm91bmRzLCRyb3VuZHMsIzIKKwl2bGQxLjMyCXtxMTAtcTExfSxbJGtleV9dLCMzMgorCXZsZDEuMzIJe3ExMi1xMTN9LFska2V5X10sIzMyCisJdmxkMS4zMgl7cTE0LXExNX0sWyRrZXlfXSwjMzIKKwl2bGQxLjMyCXskcm5kbGFzdH0sWyRrZXlfXQorCisJYWRkCSRrZXlfLCRrZXksIzMyCisJbW92CSRjbnQsJHJvdW5kcworCWIuZXEJLkxjYmNfZGVjCisKKwljbXAJJHJvdW5kcywjMgorCXZlb3IJJGRhdCwkZGF0LCRpdmVjCisJdmVvcgkkcm5kemVyb19uX2xhc3QscTgsJHJuZGxhc3QKKwliLmVxCS5MY2JjX2VuYzEyOAorCisuTG9vcF9jYmNfZW5jOgorCWFlc2UJJGRhdCxxOAorCXZsZDEuMzIJe3E4fSxbJGtleV9dLCMxNgorCWFlc21jCSRkYXQsJGRhdAorCXN1YnMJJGNudCwkY250LCMyCisJYWVzZQkkZGF0LHE5CisJdmxkMS4zMgl7cTl9LFska2V5X10sIzE2CisJYWVzbWMJJGRhdCwkZGF0CisJYi5ndAkuTG9vcF9jYmNfZW5jCisKKwlhZXNlCSRkYXQscTgKKwlhZXNtYwkkZGF0LCRkYXQKKwkgc3VicwkkbGVuLCRsZW4sIzE2CisJYWVzZQkkZGF0LHE5CisJYWVzbWMJJGRhdCwkZGF0CisJIGNjbHIJJHN0ZXAsZXEKKwlhZXNlCSRkYXQscTEwCisJYWVzbWMJJGRhdCwkZGF0CisJIGFkZAkka2V5Xywka2V5LCMxNgorCWFlc2UJJGRhdCxxMTEKKwlhZXNtYwkkZGF0LCRkYXQKKwkgdmxkMS44CXtxOH0sWyRpbnBdLCRzdGVwCisJYWVzZQkkZGF0LHExMgorCWFlc21jCSRkYXQsJGRhdAorCSB2ZW9yCXE4LHE4LCRybmR6ZXJvX25fbGFzdAorCWFlc2UJJGRhdCxxMTMKKwlhZXNtYwkkZGF0LCRkYXQKKwkgdmxkMS4zMiB7cTl9LFska2V5X10sIzE2CS8vIHJlLXByZS1sb2FkIHJuZGtleVsxXQorCWFlc2UJJGRhdCxxMTQKKwlhZXNtYwkkZGF0LCRkYXQKKwlhZXNlCSRkYXQscTE1CisKKwkgbW92CSRjbnQsJHJvdW5kcworCXZlb3IJJGl2ZWMsJGRhdCwkcm5kbGFzdAorCXZzdDEuOAl7JGl2ZWN9LFskb3V0XSwjMTYKKwliLmhzCS5Mb29wX2NiY19lbmMKKworCWIJLkxjYmNfZG9uZQorCisuYWxpZ24JNQorLkxjYmNfZW5jMTI4OgorCXZsZDEuMzIJeyRpbjAtJGluMX0sWyRrZXlfXQorCWFlc2UJJGRhdCxxOAorCWFlc21jCSRkYXQsJGRhdAorCWIJLkxlbnRlcl9jYmNfZW5jMTI4CisuTG9vcF9jYmNfZW5jMTI4OgorCWFlc2UJJGRhdCxxOAorCWFlc21jCSRkYXQsJGRhdAorCSB2c3QxLjgJeyRpdmVjfSxbJG91dF0sIzE2CisuTGVudGVyX2NiY19lbmMxMjg6CisJYWVzZQkkZGF0LHE5CisJYWVzbWMJJGRhdCwkZGF0CisJIHN1YnMJJGxlbiwkbGVuLCMxNgorCWFlc2UJJGRhdCwkaW4wCisJYWVzbWMJJGRhdCwkZGF0CisJIGNjbHIJJHN0ZXAsZXEKKwlhZXNlCSRkYXQsJGluMQorCWFlc21jCSRkYXQsJGRhdAorCWFlc2UJJGRhdCxxMTAKKwlhZXNtYwkkZGF0LCRkYXQKKwlhZXNlCSRkYXQscTExCisJYWVzbWMJJGRhdCwkZGF0CisJIHZsZDEuOAl7cTh9LFskaW5wXSwkc3RlcAorCWFlc2UJJGRhdCxxMTIKKwlhZXNtYwkkZGF0LCRkYXQKKwlhZXNlCSRkYXQscTEzCisJYWVzbWMJJGRhdCwkZGF0CisJYWVzZQkkZGF0LHExNAorCWFlc21jCSRkYXQsJGRhdAorCSB2ZW9yCXE4LHE4LCRybmR6ZXJvX25fbGFzdAorCWFlc2UJJGRhdCxxMTUKKwl2ZW9yCSRpdmVjLCRkYXQsJHJuZGxhc3QKKwliLmhzCS5Mb29wX2NiY19lbmMxMjgKKworCXZzdDEuOAl7JGl2ZWN9LFskb3V0XSwjMTYKKwliCS5MY2JjX2RvbmUKKworLmFsaWduCTUKKy5MY2JjX2RlYzEyODoKKwl2bGQxLjMyCXskdG1wMC0kdG1wMX0sWyRrZXlfXQorCXZlb3IJJGl2ZWMsJGl2ZWMsJHJuZGxhc3QKKwl2ZW9yCSRpbjAsJGRhdDAsJHJuZGxhc3QKKwltb3YJJHN0ZXAxLCRzdGVwCisKKy5Mb29wMnhfY2JjX2RlYzEyODoKKwlhZXNkCSRkYXQwLHE4CisJYWVzZAkkZGF0MSxxOAorCWFlc2ltYwkkZGF0MCwkZGF0MAorCWFlc2ltYwkkZGF0MSwkZGF0MQorCSBzdWJzCSRsZW4sJGxlbiwjMzIKKwlhZXNkCSRkYXQwLHE5CisJYWVzZAkkZGF0MSxxOQorCWFlc2ltYwkkZGF0MCwkZGF0MAorCWFlc2ltYwkkZGF0MSwkZGF0MQorCSBjY2xyCSRzdGVwLGxvCisJYWVzZAkkZGF0MCwkdG1wMAorCWFlc2QJJGRhdDEsJHRtcDAKKwlhZXNpbWMJJGRhdDAsJGRhdDAKKwlhZXNpbWMJJGRhdDEsJGRhdDEKKwkgY2Nscgkkc3RlcDEsbHMKKwlhZXNkCSRkYXQwLCR0bXAxCisJYWVzZAkkZGF0MSwkdG1wMQorCWFlc2ltYwkkZGF0MCwkZGF0MAorCWFlc2ltYwkkZGF0MSwkZGF0MQorCWFlc2QJJGRhdDAscTEwCisJYWVzZAkkZGF0MSxxMTAKKwlhZXNpbWMJJGRhdDAsJGRhdDAKKwlhZXNpbWMJJGRhdDEsJGRhdDEKKwlhZXNkCSRkYXQwLHExMQorCWFlc2QJJGRhdDEscTExCisJYWVzaW1jCSRkYXQwLCRkYXQwCisJYWVzaW1jCSRkYXQxLCRkYXQxCisJYWVzZAkkZGF0MCxxMTIKKwlhZXNkCSRkYXQxLHExMgorCWFlc2ltYwkkZGF0MCwkZGF0MAorCWFlc2ltYwkkZGF0MSwkZGF0MQorCWFlc2QJJGRhdDAscTEzCisJYWVzZAkkZGF0MSxxMTMKKwlhZXNpbWMJJGRhdDAsJGRhdDAKKwlhZXNpbWMJJGRhdDEsJGRhdDEKKwlhZXNkCSRkYXQwLHExNAorCWFlc2QJJGRhdDEscTE0CisJYWVzaW1jCSRkYXQwLCRkYXQwCisJYWVzaW1jCSRkYXQxLCRkYXQxCisJYWVzZAkkZGF0MCxxMTUKKwlhZXNkCSRkYXQxLHExNQorCisJdmVvcgkkaXZlYywkaXZlYywkZGF0MAorCXZsZDEuOAl7JGRhdDB9LFskaW5wXSwkc3RlcAorCXZlb3IJJGluMCwkaW4wLCRkYXQxCisJdmxkMS44CXskZGF0MX0sWyRpbnBdLCRzdGVwMQorCXZzdDEuOAl7JGl2ZWN9LFskb3V0XSwjMTYKKwl2ZW9yCSRpdmVjLCRpbjEsJHJuZGxhc3QKKwl2c3QxLjgJeyRpbjB9LFskb3V0XSwjMTYKKwl2ZW9yCSRpbjAsJGRhdDAsJHJuZGxhc3QKKwl2b3JyCSRpbjEsJGRhdDEsJGRhdDEKKwliLmhzCS5Mb29wMnhfY2JjX2RlYzEyOAorCisJYWRkcwkkbGVuLCRsZW4sIzMyCisJdmVvcgkkaXZlYywkaXZlYywkcm5kbGFzdAorCWIuZXEJLkxjYmNfZG9uZQorCXZlb3IJJGluMCwkaW4wLCRybmRsYXN0CisJYgkuTGNiY19kZWNfdGFpbAorCisuYWxpZ24JNQorLkxjYmNfZGVjOgorCXN1YnMJJGxlbiwkbGVuLCMxNgorCXZvcnIJJGluMCwkZGF0LCRkYXQKKwliLmxvCS5MY2JjX2RlY190YWlsCisKKwljY2xyCSRzdGVwLGVxCisJY21wCSRyb3VuZHMsIzIKKwl2bGQxLjgJeyRkYXQxfSxbJGlucF0sJHN0ZXAKKwl2b3JyCSRpbjEsJGRhdDEsJGRhdDEKKwliLmVxCS5MY2JjX2RlYzEyOAorCisuTG9vcDJ4X2NiY19kZWM6CisJYWVzZAkkZGF0MCxxOAorCWFlc2QJJGRhdDEscTgKKwl2bGQxLjMyCXtxOH0sWyRrZXlfXSwjMTYKKwlhZXNpbWMJJGRhdDAsJGRhdDAKKwlhZXNpbWMJJGRhdDEsJGRhdDEKKwlzdWJzCSRjbnQsJGNudCwjMgorCWFlc2QJJGRhdDAscTkKKwlhZXNkCSRkYXQxLHE5CisJdmxkMS4zMgl7cTl9LFska2V5X10sIzE2CisJYWVzaW1jCSRkYXQwLCRkYXQwCisJYWVzaW1jCSRkYXQxLCRkYXQxCisJYi5ndAkuTG9vcDJ4X2NiY19kZWMKKworCWFlc2QJJGRhdDAscTgKKwlhZXNkCSRkYXQxLHE4CisJYWVzaW1jCSRkYXQwLCRkYXQwCisJYWVzaW1jCSRkYXQxLCRkYXQxCisJIHZlb3IJJHRtcDAsJGl2ZWMsJHJuZGxhc3QKKwkgdmVvcgkkdG1wMSwkaW4wLCRybmRsYXN0CisJYWVzZAkkZGF0MCxxOQorCWFlc2QJJGRhdDEscTkKKwlhZXNpbWMJJGRhdDAsJGRhdDAKKwlhZXNpbWMJJGRhdDEsJGRhdDEKKwkgdm9ycgkkaXZlYywkaW4xLCRpbjEKKwkgc3VicwkkbGVuLCRsZW4sIzMyCisJYWVzZAkkZGF0MCxxMTAKKwlhZXNkCSRkYXQxLHExMAorCWFlc2ltYwkkZGF0MCwkZGF0MAorCSBjY2xyCSRzdGVwLGxvCisJYWVzaW1jCSRkYXQxLCRkYXQxCisJIG1vdgkka2V5Xywka2V5CisJYWVzZAkkZGF0MCxxMTEKKwlhZXNkCSRkYXQxLHExMQorCWFlc2ltYwkkZGF0MCwkZGF0MAorCSB2bGQxLjgJeyRpbjB9LFskaW5wXSwkc3RlcAorCWFlc2ltYwkkZGF0MSwkZGF0MQorCSBjY2xyCSRzdGVwLGxzCisJYWVzZAkkZGF0MCxxMTIKKwlhZXNkCSRkYXQxLHExMgorCWFlc2ltYwkkZGF0MCwkZGF0MAorCWFlc2ltYwkkZGF0MSwkZGF0MQorCSB2bGQxLjgJeyRpbjF9LFskaW5wXSwkc3RlcAorCWFlc2QJJGRhdDAscTEzCisJYWVzZAkkZGF0MSxxMTMKKwlhZXNpbWMJJGRhdDAsJGRhdDAKKwlhZXNpbWMJJGRhdDEsJGRhdDEKKwkgdmxkMS4zMiB7cTh9LFska2V5X10sIzE2CS8vIHJlLXByZS1sb2FkIHJuZGtleVswXQorCWFlc2QJJGRhdDAscTE0CisJYWVzZAkkZGF0MSxxMTQKKwlhZXNpbWMJJGRhdDAsJGRhdDAKKwlhZXNpbWMJJGRhdDEsJGRhdDEKKwkgdmxkMS4zMiB7cTl9LFska2V5X10sIzE2CS8vIHJlLXByZS1sb2FkIHJuZGtleVsxXQorCWFlc2QJJGRhdDAscTE1CisJYWVzZAkkZGF0MSxxMTUKKworCSBtb3YJJGNudCwkcm91bmRzCisJdmVvcgkkdG1wMCwkdG1wMCwkZGF0MAorCXZlb3IJJHRtcDEsJHRtcDEsJGRhdDEKKwkgdm9ycgkkZGF0MCwkaW4wLCRpbjAKKwl2c3QxLjgJeyR0bXAwfSxbJG91dF0sIzE2CisJIHZvcnIJJGRhdDEsJGluMSwkaW4xCisJdnN0MS44CXskdG1wMX0sWyRvdXRdLCMxNgorCWIuaHMJLkxvb3AyeF9jYmNfZGVjCisKKwlhZGRzCSRsZW4sJGxlbiwjMzIKKwliLmVxCS5MY2JjX2RvbmUKKworLkxjYmNfZGVjX3RhaWw6CisJYWVzZAkkZGF0LHE4CisJdmxkMS4zMgl7cTh9LFska2V5X10sIzE2CisJYWVzaW1jCSRkYXQsJGRhdAorCXN1YnMJJGNudCwkY250LCMyCisJYWVzZAkkZGF0LHE5CisJdmxkMS4zMgl7cTl9LFska2V5X10sIzE2CisJYWVzaW1jCSRkYXQsJGRhdAorCWIuZ3QJLkxjYmNfZGVjX3RhaWwKKworCWFlc2QJJGRhdCxxOAorCWFlc2ltYwkkZGF0LCRkYXQKKwlhZXNkCSRkYXQscTkKKwlhZXNpbWMJJGRhdCwkZGF0CisJIHZlb3IJJHRtcCwkaXZlYywkcm5kbGFzdAorCWFlc2QJJGRhdCxxMTAKKwlhZXNpbWMJJGRhdCwkZGF0CisJIHZvcnIJJGl2ZWMsJGluMCwkaW4wCisJYWVzZAkkZGF0LHExMQorCWFlc2ltYwkkZGF0LCRkYXQKKwlhZXNkCSRkYXQscTEyCisJYWVzaW1jCSRkYXQsJGRhdAorCWFlc2QJJGRhdCxxMTMKKwlhZXNpbWMJJGRhdCwkZGF0CisJYWVzZAkkZGF0LHExNAorCWFlc2ltYwkkZGF0LCRkYXQKKwlhZXNkCSRkYXQscTE1CisKKwl2ZW9yCSR0bXAsJHRtcCwkZGF0CisJdnN0MS44CXskdG1wfSxbJG91dF0sIzE2CisKKy5MY2JjX2RvbmU6CisJdnN0MS44CXskaXZlY30sWyRpdnBdCisuTGNiY19hYm9ydDoKK19fXworJGNvZGUuPTw8X19fCWlmICgkZmxhdm91ciAhfiAvNjQvKTsKKwl2bGRtaWEJc3AhLHtkOC1kMTV9CisJbGRtaWEJc3AhLHtyNC1yOCxwY30KK19fXworJGNvZGUuPTw8X19fCWlmICgkZmxhdm91ciA9fiAvNjQvKTsKKwlsZHIJeDI5LFtzcF0sIzE2CisJcmV0CitfX18KKyRjb2RlLj08PF9fXzsKKy5zaXplCSR7cHJlZml4fV9jYmNfZW5jcnlwdCwuLSR7cHJlZml4fV9jYmNfZW5jcnlwdAorX19fCit9fX0KK3t7eworbXkgKCRpbnAsJG91dCwkbGVuLCRrZXksJGl2cCk9bWFwKCJ4JF8iLCgwLi40KSk7CitteSAoJHJvdW5kcywkY250LCRrZXlfLCRjdHIsJHRjdHIsJHRjdHIxKT0oInc1IiwidzYiLCJ4NyIsInc4IiwidzkiLCJ3MTAiKTsKK215ICgkZGF0MCwkZGF0MSwkaW4wLCRpbjEsJHRtcDAsJHRtcDEsJGl2ZWMsJHJuZGxhc3QpPW1hcCgicSRfIiwoMC4uNykpOworCitteSAoJGRhdCwkdG1wKT0oJGRhdDAsJHRtcDApOworCisjIyMgcTgtcTE1CXByZWxvYWRlZCBrZXkgc2NoZWR1bGUKKworJGNvZGUuPTw8X19fOworLmdsb2JsCSR7cHJlZml4fV9jdHIzMl9lbmNyeXB0X2Jsb2NrcworLnR5cGUJJHtwcmVmaXh9X2N0cjMyX2VuY3J5cHRfYmxvY2tzLCVmdW5jdGlvbgorLmFsaWduCTUKKyR7cHJlZml4fV9jdHIzMl9lbmNyeXB0X2Jsb2NrczoKK19fXworJGNvZGUuPTw8X19fCWlmICgkZmxhdm91ciA9fiAvNjQvKTsKKwlzdHAJCXgyOSx4MzAsW3NwLCMtMTZdIQorCWFkZAkJeDI5LHNwLCMwCitfX18KKyRjb2RlLj08PF9fXwlpZiAoJGZsYXZvdXIgIX4gLzY0Lyk7CisJbW92CQlpcCxzcAorCXN0bWRiCQlzcCEse3I0LXIxMCxscn0KKwl2c3RtZGIJCXNwISx7ZDgtZDE1fSAgICAgICAgICAgIEAgQUJJIHNwZWNpZmljYXRpb24gc2F5cyBzbworCWxkcgkJcjQsIFtpcF0JCUAgbG9hZCByZW1haW5pbmcgYXJnCitfX18KKyRjb2RlLj08PF9fXzsKKwlsZHIJCSRyb3VuZHMsWyRrZXksIzI0MF0KKworCWxkcgkJJGN0ciwgWyRpdnAsICMxMl0KKwl2bGQxLjMyCQl7JGRhdDB9LFskaXZwXQorCisJdmxkMS4zMgkJe3E4LXE5fSxbJGtleV0JCS8vIGxvYWQga2V5IHNjaGVkdWxlLi4uCisJc3ViCQkkcm91bmRzLCRyb3VuZHMsIzYKKwlhZGQJCSRrZXlfLCRrZXkseDUsbHNsIzQJLy8gcG9pbnRlciB0byBsYXN0IDcgcm91bmQga2V5cworCXN1YgkJJHJvdW5kcywkcm91bmRzLCMyCisJdmxkMS4zMgkJe3ExMC1xMTF9LFska2V5X10sIzMyCisJdmxkMS4zMgkJe3ExMi1xMTN9LFska2V5X10sIzMyCisJdmxkMS4zMgkJe3ExNC1xMTV9LFska2V5X10sIzMyCisJdmxkMS4zMgkJeyRybmRsYXN0fSxbJGtleV9dCisKKwlhZGQJCSRrZXlfLCRrZXksIzMyCisJbW92CQkkY250LCRyb3VuZHMKKworCXN1YnMJCSRsZW4sJGxlbiwjMgorCWIubG8JCS5MY3RyMzJfdGFpbAorCisjaWZuZGVmIF9fQVJNRUJfXworCXJldgkJJGN0ciwgJGN0cgorI2VuZGlmCisJdm9ycgkJJGRhdDEsJGRhdDAsJGRhdDAKKwlhZGQJCSRjdHIsICRjdHIsICMxCisJdm9ycgkJJGl2ZWMsJGRhdDAsJGRhdDAKKwlyZXYJCSR0Y3RyMSwgJGN0cgorCWNtcAkJJHJvdW5kcywjMgorCXZtb3YuMzIJCSR7ZGF0MX1bM10sJHRjdHIxCisJYi5lcQkJLkxjdHIzMl8xMjgKKworLkxvb3AyeF9jdHIzMjoKKwlhZXNlCQkkZGF0MCxxOAorCWFlc2UJCSRkYXQxLHE4CisJdmxkMS4zMgkJe3E4fSxbJGtleV9dLCMxNgorCWFlc21jCQkkZGF0MCwkZGF0MAorCWFlc21jCQkkZGF0MSwkZGF0MQorCXN1YnMJCSRjbnQsJGNudCwjMgorCWFlc2UJCSRkYXQwLHE5CisJYWVzZQkJJGRhdDEscTkKKwl2bGQxLjMyCQl7cTl9LFska2V5X10sIzE2CisJYWVzbWMJCSRkYXQwLCRkYXQwCisJYWVzbWMJCSRkYXQxLCRkYXQxCisJYi5ndAkJLkxvb3AyeF9jdHIzMgorCisJYWVzZQkJJGRhdDAscTgKKwlhZXNlCQkkZGF0MSxxOAorCWFlc21jCQkkdG1wMCwkZGF0MAorCSB2b3JyCQkkZGF0MCwkaXZlYywkaXZlYworCWFlc21jCQkkdG1wMSwkZGF0MQorCSB2b3JyCQkkZGF0MSwkaXZlYywkaXZlYworCWFlc2UJCSR0bXAwLHE5CisJYWVzZQkJJHRtcDEscTkKKwkgdmxkMS44CQl7JGluMH0sWyRpbnBdLCMxNgorCWFlc21jCQkkdG1wMCwkdG1wMAorCSB2bGQxLjgJCXskaW4xfSxbJGlucF0sIzE2CisJYWVzbWMJCSR0bXAxLCR0bXAxCisJIGFkZAkJJGN0ciwkY3RyLCMxCisJYWVzZQkJJHRtcDAscTEwCisJYWVzZQkJJHRtcDEscTEwCisJIHJldgkJJHRjdHIsJGN0cgorCWFlc21jCQkkdG1wMCwkdG1wMAorCWFlc21jCQkkdG1wMSwkdG1wMQorCSBhZGQJCSRjdHIsJGN0ciwjMQorCWFlc2UJCSR0bXAwLHExMQorCWFlc2UJCSR0bXAxLHExMQorCSB2ZW9yCQkkaW4wLCRpbjAsJHJuZGxhc3QKKwkgcmV2CQkkdGN0cjEsJGN0cgorCWFlc21jCQkkdG1wMCwkdG1wMAorCWFlc21jCQkkdG1wMSwkdG1wMQorCSB2ZW9yCQkkaW4xLCRpbjEsJHJuZGxhc3QKKwkgbW92CQkka2V5Xywka2V5CisJYWVzZQkJJHRtcDAscTEyCisJYWVzZQkJJHRtcDEscTEyCisJIHN1YnMJCSRsZW4sJGxlbiwjMgorCWFlc21jCQkkdG1wMCwkdG1wMAorCWFlc21jCQkkdG1wMSwkdG1wMQorCSB2bGQxLjMyCSB7cTgtcTl9LFska2V5X10sIzMyCS8vIHJlLXByZS1sb2FkIHJuZGtleVswLTFdCisJYWVzZQkJJHRtcDAscTEzCisJYWVzZQkJJHRtcDEscTEzCisJYWVzbWMJCSR0bXAwLCR0bXAwCisJYWVzbWMJCSR0bXAxLCR0bXAxCisJYWVzZQkJJHRtcDAscTE0CisJYWVzZQkJJHRtcDEscTE0CisJIHZtb3YuMzIJJHtkYXQwfVszXSwgJHRjdHIKKwlhZXNtYwkJJHRtcDAsJHRtcDAKKwkgdm1vdi4zMgkke2RhdDF9WzNdLCAkdGN0cjEKKwlhZXNtYwkJJHRtcDEsJHRtcDEKKwlhZXNlCQkkdG1wMCxxMTUKKwlhZXNlCQkkdG1wMSxxMTUKKworCSBtb3YJCSRjbnQsJHJvdW5kcworCXZlb3IJCSRpbjAsJGluMCwkdG1wMAorCXZlb3IJCSRpbjEsJGluMSwkdG1wMQorCXZzdDEuOAkJeyRpbjB9LFskb3V0XSwjMTYKKwl2c3QxLjgJCXskaW4xfSxbJG91dF0sIzE2CisJYi5ocwkJLkxvb3AyeF9jdHIzMgorCisJYWRkcwkJJGxlbiwkbGVuLCMyCisJYi5lcQkJLkxjdHIzMl9kb25lCisJYgkJLkxjdHIzMl90YWlsCisKKy5MY3RyMzJfMTI4OgorCXZsZDEuMzIJCXskdG1wMC0kdG1wMX0sWyRrZXlfXQorCisuTG9vcDJ4X2N0cjMyXzEyODoKKwlhZXNlCQkkZGF0MCxxOAorCWFlc2UJCSRkYXQxLHE4CisJYWVzbWMJCSRkYXQwLCRkYXQwCisJIHZsZDEuOAkJeyRpbjB9LFskaW5wXSwjMTYKKwlhZXNtYwkJJGRhdDEsJGRhdDEKKwkgdmxkMS44CQl7JGluMX0sWyRpbnBdLCMxNgorCWFlc2UJCSRkYXQwLHE5CisJYWVzZQkJJGRhdDEscTkKKwkgYWRkCQkkY3RyLCRjdHIsIzEKKwlhZXNtYwkJJGRhdDAsJGRhdDAKKwlhZXNtYwkJJGRhdDEsJGRhdDEKKwkgcmV2CQkkdGN0ciwkY3RyCisJYWVzZQkJJGRhdDAsJHRtcDAKKwlhZXNlCQkkZGF0MSwkdG1wMAorCSBhZGQJCSRjdHIsJGN0ciwjMQorCWFlc21jCQkkZGF0MCwkZGF0MAorCWFlc21jCQkkZGF0MSwkZGF0MQorCSByZXYJCSR0Y3RyMSwkY3RyCisJYWVzZQkJJGRhdDAsJHRtcDEKKwlhZXNlCQkkZGF0MSwkdG1wMQorCSBzdWJzCQkkbGVuLCRsZW4sIzIKKwlhZXNtYwkJJGRhdDAsJGRhdDAKKwlhZXNtYwkJJGRhdDEsJGRhdDEKKwlhZXNlCQkkZGF0MCxxMTAKKwlhZXNlCQkkZGF0MSxxMTAKKwlhZXNtYwkJJGRhdDAsJGRhdDAKKwlhZXNtYwkJJGRhdDEsJGRhdDEKKwlhZXNlCQkkZGF0MCxxMTEKKwlhZXNlCQkkZGF0MSxxMTEKKwlhZXNtYwkJJGRhdDAsJGRhdDAKKwlhZXNtYwkJJGRhdDEsJGRhdDEKKwlhZXNlCQkkZGF0MCxxMTIKKwlhZXNlCQkkZGF0MSxxMTIKKwlhZXNtYwkJJGRhdDAsJGRhdDAKKwlhZXNtYwkJJGRhdDEsJGRhdDEKKwlhZXNlCQkkZGF0MCxxMTMKKwlhZXNlCQkkZGF0MSxxMTMKKwlhZXNtYwkJJGRhdDAsJGRhdDAKKwlhZXNtYwkJJGRhdDEsJGRhdDEKKwlhZXNlCQkkZGF0MCxxMTQKKwlhZXNlCQkkZGF0MSxxMTQKKwlhZXNtYwkJJGRhdDAsJGRhdDAKKwlhZXNtYwkJJGRhdDEsJGRhdDEKKwkgdmVvcgkJJGluMCwkaW4wLCRybmRsYXN0CisJYWVzZQkJJGRhdDAscTE1CisJIHZlb3IJCSRpbjEsJGluMSwkcm5kbGFzdAorCWFlc2UJCSRkYXQxLHExNQorCisJdmVvcgkJJGluMCwkaW4wLCRkYXQwCisJdm9ycgkJJGRhdDAsJGl2ZWMsJGl2ZWMKKwl2ZW9yCQkkaW4xLCRpbjEsJGRhdDEKKwl2b3JyCQkkZGF0MSwkaXZlYywkaXZlYworCXZzdDEuOAkJeyRpbjB9LFskb3V0XSwjMTYKKwl2bW92LjMyCQkke2RhdDB9WzNdLCAkdGN0cgorCXZzdDEuOAkJeyRpbjF9LFskb3V0XSwjMTYKKwl2bW92LjMyCQkke2RhdDF9WzNdLCAkdGN0cjEKKwliLmhzCQkuTG9vcDJ4X2N0cjMyXzEyOAorCisJYWRkcwkJJGxlbiwkbGVuLCMyCisJYi5lcQkJLkxjdHIzMl9kb25lCisKKy5MY3RyMzJfdGFpbDoKKwlhZXNlCQkkZGF0LHE4CisJdmxkMS4zMgkJe3E4fSxbJGtleV9dLCMxNgorCWFlc21jCQkkZGF0LCRkYXQKKwlzdWJzCQkkY250LCRjbnQsIzIKKwlhZXNlCQkkZGF0LHE5CisJdmxkMS4zMgkJe3E5fSxbJGtleV9dLCMxNgorCWFlc21jCQkkZGF0LCRkYXQKKwliLmd0CQkuTGN0cjMyX3RhaWwKKworCWFlc2UJCSRkYXQscTgKKwlhZXNtYwkJJGRhdCwkZGF0CisJYWVzZQkJJGRhdCxxOQorCWFlc21jCQkkZGF0LCRkYXQKKwkgdmxkMS44CQl7JGluMH0sWyRpbnBdCisJYWVzZQkJJGRhdCxxMTAKKwlhZXNtYwkJJGRhdCwkZGF0CisJYWVzZQkJJGRhdCxxMTEKKwlhZXNtYwkJJGRhdCwkZGF0CisJYWVzZQkJJGRhdCxxMTIKKwlhZXNtYwkJJGRhdCwkZGF0CisJYWVzZQkJJGRhdCxxMTMKKwlhZXNtYwkJJGRhdCwkZGF0CisJYWVzZQkJJGRhdCxxMTQKKwlhZXNtYwkJJGRhdCwkZGF0CisJIHZlb3IJCSRpbjAsJGluMCwkcm5kbGFzdAorCWFlc2UJCSRkYXQscTE1CisKKwl2ZW9yCQkkaW4wLCRpbjAsJGRhdAorCXZzdDEuOAkJeyRpbjB9LFskb3V0XQorCisuTGN0cjMyX2RvbmU6CitfX18KKyRjb2RlLj08PF9fXwlpZiAoJGZsYXZvdXIgIX4gLzY0Lyk7CisJdmxkbWlhCQlzcCEse2Q4LWQxNX0KKwlsZG1pYQkJc3AhLHtyNC1yMTAscGN9CitfX18KKyRjb2RlLj08PF9fXwlpZiAoJGZsYXZvdXIgPX4gLzY0Lyk7CisJbGRyCQl4MjksW3NwXSwjMTYKKwlyZXQKK19fXworJGNvZGUuPTw8X19fOworLnNpemUJJHtwcmVmaXh9X2N0cjMyX2VuY3J5cHRfYmxvY2tzLC4tJHtwcmVmaXh9X2N0cjMyX2VuY3J5cHRfYmxvY2tzCitfX18KK319fQorJGNvZGUuPTw8X19fOworI2VuZGlmCitfX18KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK2lmICgkZmxhdm91ciA9fiAvNjQvKSB7CQkJIyMjIyMjIyMgNjQtYml0IGNvZGUKKyAgICBteSAlb3Bjb2RlID0gKAorCSJhZXNkIgk9PgkweDRlMjg1ODAwLAkiYWVzZSIJPT4JMHg0ZTI4NDgwMCwKKwkiYWVzaW1jIj0+CTB4NGUyODc4MDAsCSJhZXNtYyIJPT4JMHg0ZTI4NjgwMAkpOworCisgICAgbG9jYWwgKnVuYWVzID0gc3ViIHsKKwlteSAoJG1uZW1vbmljLCRhcmcpPUBfOworCisJJGFyZyA9fiBtL1txdl0oWzAtOV0rKVteLF0qLFxzKltxdl0oWzAtOV0rKS9vCSYmCisJc3ByaW50ZiAiLmluc3RcdDB4JTA4eFx0Ly8lcyAlcyIsCisJCQkkb3Bjb2RleyRtbmVtb25pY318JDF8KCQyPDw1KSwKKwkJCSRtbmVtb25pYywkYXJnOworICAgIH07CisKKyAgICBmb3JlYWNoKHNwbGl0KCJcbiIsJGNvZGUpKSB7CisgICAgICAgIHMvXGAoW15cYF0qKVxgL2V2YWwoJDEpL2dlbzsKKworCXMvXGJxKFswLTldKylcYi8idiIuKCQxPDg/JDE6JDErOCkuIi4xNmIiL2dlbzsJIyBvbGQtPm5ldyByZWdpc3RlcnMKKyAgICAgICAgcy9AXHMvXC9cLy9vOwkJCSMgb2xkLT5uZXcgc3R5bGUgY29tbWVudGFyeQorCisJI3MvW3ZdPyhhZXNcdyspXHMrKFtxdl0uKikvdW5hZXMoJDEsJDIpL2dlbwlvcgorCXMvY2NsclxzKyhbd3hdKShbXixdKyksXHMqKFthLXpdKykvY3NlbAkkMSQyLCQxenIsJDEkMiwkMy9vCW9yCisgICAgICAgIHMvdm1vdlwuaTgvbW92aS9vCW9yCSMgZml4IHVwIGxlZ2FjeSBtbmVtb25pY3MKKyAgICAgICAgcy92ZXh0XC44L2V4dC9vCQlvcgorICAgICAgICBzL3ZyZXYzMlwuOC9yZXYzMi9vCW9yCisgICAgICAgIHMvdnRzdFwuOC9jbXRzdC9vCW9yCisgICAgICAgIHMvdnNoci91c2hyL28JCW9yCisgICAgICAgIHMvXihccyspdi8kMS9vCQlvcgkjIHN0cmlwIG9mZiB2IHByZWZpeAorCXMvXGJieFxzK2xyXGIvcmV0L287CisKKwkjIGZpeCB1cCByZW1haW5pZyBsZWdhY3kgc3VmZml4ZXMKKwlzL1wuW3VpXT84Ly9vOworCW0vXF0sIzgvbyBhbmQgcy9cLjE2Yi9cLjhiL2dvOworICAgICAgICBzL1wuW3VpXT8zMi8vbyBhbmQgcy9cLjE2Yi9cLjRzL2dvOworICAgICAgICBzL1wuW3VpXT82NC8vbyBhbmQgcy9cLjE2Yi9cLjJkL2dvOworCXMvXC5bNDJdKFtzZF0pXFsoWzAtM10pXF0vXC4kMVxbJDJcXS9vOworCisgICAgICAgIHByaW50ICRfLCJcbiI7CisgICAgfQorfSBlbHNlIHsJCQkJIyMjIyMjIyMgMzItYml0IGNvZGUKKyAgICBteSAlb3Bjb2RlID0gKAorCSJhZXNkIgk9PgkweGYzYjAwMzQwLAkiYWVzZSIJPT4JMHhmM2IwMDMwMCwKKwkiYWVzaW1jIj0+CTB4ZjNiMDAzYzAsCSJhZXNtYyIJPT4JMHhmM2IwMDM4MAkpOworCisgICAgbG9jYWwgKnVuYWVzID0gc3ViIHsKKwlteSAoJG1uZW1vbmljLCRhcmcpPUBfOworCisJaWYgKCRhcmcgPX4gbS9bcXZdKFswLTldKylbXixdKixccypbcXZdKFswLTldKykvbykgeworCSAgICBteSAkd29yZCA9ICRvcGNvZGV7JG1uZW1vbmljfXwoKCQxJjcpPDwxMyl8KCgkMSY4KTw8MTkpCisJCQkJCSB8KCgkMiY3KTw8MSkgfCgoJDImOCk8PDIpOworCSAgICAjIHNpbmNlIEFSTXY3IGluc3RydWN0aW9ucyBhcmUgYWx3YXlzIGVuY29kZWQgbGl0dGxlLWVuZGlhbi4KKwkgICAgIyBjb3JyZWN0IHNvbHV0aW9uIGlzIHRvIHVzZSAuaW5zdCBkaXJlY3RpdmUsIGJ1dCBvbGRlcgorCSAgICAjIGFzc2VtYmxlcnMgZG9uJ3QgaW1wbGVtZW50IGl0Oi0oCisJICAgIHNwcmludGYgIi5ieXRlXHQweCUwMngsMHglMDJ4LDB4JTAyeCwweCUwMnhcdEAgJXMgJXMiLAorCQkJJHdvcmQmMHhmZiwoJHdvcmQ+PjgpJjB4ZmYsCisJCQkoJHdvcmQ+PjE2KSYweGZmLCgkd29yZD4+MjQpJjB4ZmYsCisJCQkkbW5lbW9uaWMsJGFyZzsKKwl9CisgICAgfTsKKworICAgIHN1YiB1bnZ0YmwgeworCW15ICRhcmc9c2hpZnQ7CisKKwkkYXJnID1+IG0vcShbMC05XSspLFxzKlx7cShbMC05XSspXH0sXHMqcShbMC05XSspL28gJiYKKwlzcHJpbnRmCSJ2dGJsLjgJZCVkLHtxJWR9LGQlZFxuXHQiLgorCQkidnRibC44CWQlZCx7cSVkfSxkJWQiLCAyKiQxLCQyLDIqJDMsIDIqJDErMSwkMiwyKiQzKzE7CQorICAgIH0KKworICAgIHN1YiB1bnZkdXAzMiB7CisJbXkgJGFyZz1zaGlmdDsKKworCSRhcmcgPX4gbS9xKFswLTldKyksXHMqcShbMC05XSspXFsoWzAtM10pXF0vbyAmJgorCXNwcmludGYJInZkdXAuMzIJcSVkLGQlZFslZF0iLCQxLDIqJDIrKCQzPj4xKSwkMyYxOwkKKyAgICB9CisKKyAgICBzdWIgdW52bW92MzIgeworCW15ICRhcmc9c2hpZnQ7CisKKwkkYXJnID1+IG0vcShbMC05XSspXFsoWzAtM10pXF0sKC4qKS9vICYmCisJc3ByaW50Zgkidm1vdi4zMglkJWRbJWRdLCVzIiwyKiQxKygkMj4+MSksJDImMSwkMzsJCisgICAgfQorCisgICAgZm9yZWFjaChzcGxpdCgiXG4iLCRjb2RlKSkgeworICAgICAgICBzL1xgKFteXGBdKilcYC9ldmFsKCQxKS9nZW87CisKKwlzL1xiW3d4XShbMC05XSspXGIvciQxL2dvOwkJIyBuZXctPm9sZCByZWdpc3RlcnMKKwlzL1xidihbMC05XSlcLlsxMjQ2OF0rW2JzZF1cYi9xJDEvZ287CSMgbmV3LT5vbGQgcmVnaXN0ZXJzCisgICAgICAgIHMvXC9cL1xzPy9AIC9vOwkJCQkjIG5ldy0+b2xkIHN0eWxlIGNvbW1lbnRhcnkKKworCSMgZml4IHVwIHJlbWFpbmlnIG5ldy1zdHlsZSBzdWZmaXhlcworCXMvXHtxKFswLTldKylcfSxccypcWyguKylcXSwjOC9zcHJpbnRmICJ7ZCVkfSxbJDJdISIsMiokMS9lbwlvcgorCXMvXF0sI1swLTldKy9dIS9vOworCisJcy9bdl0/KGFlc1x3KylccysoW3F2XS4qKS91bmFlcygkMSwkMikvZ2VvCW9yCisJcy9jY2xyXHMrKFteLF0rKSxccyooW2Etel0rKS9tb3YkMgkkMSwjMC9vCW9yCisJcy92dGJsXC44XHMrKC4qKS91bnZ0YmwoJDEpL2dlbwkJCW9yCisJcy92ZHVwXC4zMlxzKyguKikvdW52ZHVwMzIoJDEpL2dlbwkJb3IKKwlzL3Ztb3ZcLjMyXHMrKC4qKS91bnZtb3YzMigkMSkvZ2VvCQlvcgorCXMvXihccyspYlwuLyQxYi9vCQkJCW9yCisJcy9eKFxzKylyZXQvJDFieFx0bHIvbzsKKworICAgICAgICBwcmludCAkXywiXG4iOworICAgIH0KK30KKworY2xvc2UgU1RET1VUOwpkaWZmIC0tZ2l0IGEvY3J5cHRvL2Flcy9hc20vYnNhZXMtYXJtdjcuUyBiL2NyeXB0by9hZXMvYXNtL2JzYWVzLWFybXY3LlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQyMDVkNAotLS0gL2Rldi9udWxsCisrKyBiL2NyeXB0by9hZXMvYXNtL2JzYWVzLWFybXY3LlMKQEAgLTAsMCArMSwyNTQ0IEBACisKK0AgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0AgV3JpdHRlbiBieSBBbmR5IFBvbHlha292IDxhcHByb0BvcGVuc3NsLm9yZz4gZm9yIHRoZSBPcGVuU1NMCitAIHByb2plY3QuIFRoZSBtb2R1bGUgaXMsIGhvd2V2ZXIsIGR1YWwgbGljZW5zZWQgdW5kZXIgT3BlblNTTCBhbmQKK0AgQ1JZUFRPR0FNUyBsaWNlbnNlcyBkZXBlbmRpbmcgb24gd2hlcmUgeW91IG9idGFpbiBpdC4gRm9yIGZ1cnRoZXIKK0AgZGV0YWlscyBzZWUgaHR0cDovL3d3dy5vcGVuc3NsLm9yZy9+YXBwcm8vY3J5cHRvZ2Ftcy8uCitACitAIFNwZWNpZmljIG1vZGVzIGFuZCBhZGFwdGF0aW9uIGZvciBMaW51eCBrZXJuZWwgYnkgQXJkIEJpZXNoZXV2ZWwKK0AgPGFyZC5iaWVzaGV1dmVsQGxpbmFyby5vcmc+LiBQZXJtaXNzaW9uIHRvIHVzZSB1bmRlciBHUEwgdGVybXMgaXMKK0AgZ3JhbnRlZC4KK0AgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQCBCaXQtc2xpY2VkIEFFUyBmb3IgQVJNIE5FT04KK0AKK0AgRmVicnVhcnkgMjAxMi4KK0AKK0AgVGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBkaXJlY3QgYWRhcHRhdGlvbiBvZiBic2Flcy14ODZfNjQgbW9kdWxlIGZvcgorQCBBUk0gTkVPTi4gRXhjZXB0IHRoYXQgdGhpcyBtb2R1bGUgaXMgZW5kaWFuLW5ldXRyYWwgW2luIHNlbnNlIHRoYXQKK0AgaXQgY2FuIGJlIGNvbXBpbGVkIGZvciBlaXRoZXIgZW5kaWFubmVzc10gYnkgY291cnRlc3kgb2YgdmxkMS44J3MKK0AgbmV1dHJhbGl0eS4gSW5pdGlhbCB2ZXJzaW9uIGRvZXNuJ3QgaW1wbGVtZW50IGludGVyZmFjZSB0byBPcGVuU1NMLAorQCBvbmx5IGxvdy1sZXZlbCBwcmltaXRpdmVzIGFuZCB1bnN1cHBvcnRlZCBlbnRyeSBwb2ludHMsIGp1c3QgZW5vdWdoCitAIHRvIGNvbGxlY3QgcGVyZm9ybWFuY2UgcmVzdWx0cywgd2hpY2ggZm9yIENvcnRleC1BOCBjb3JlIGFyZToKK0AKK0AgZW5jcnlwdAkxOS41IGN5Y2xlcyBwZXIgYnl0ZSBwcm9jZXNzZWQgd2l0aCAxMjgtYml0IGtleQorQCBkZWNyeXB0CTIyLjEgY3ljbGVzIHBlciBieXRlIHByb2Nlc3NlZCB3aXRoIDEyOC1iaXQga2V5CitAIGtleSBjb252Lgk0NDAgIGN5Y2xlcyBwZXIgMTI4LWJpdCBrZXkvMC4xOCBvZiA4eCBibG9jaworQAorQCBTbmFwZHJhZ29uIFM0IGVuY3J5cHRzIGJ5dGUgaW4gMTcuNiBjeWNsZXMgYW5kIGRlY3J5cHRzIGluIDE5LjcsCitAIHdoaWNoIGlzIFttdWNoXSB3b3JzZSB0aGFuIGFudGljaXBhdGVkIChmb3IgZnVydGhlciBkZXRhaWxzIHNlZQorQCBodHRwOi8vd3d3Lm9wZW5zc2wub3JnL35hcHByby9TbmFwZHJhZ29uLVM0Lmh0bWwpLgorQAorQCBDb3J0ZXgtQTE1IG1hbmFnZXMgaW4gMTQuMi8xNi4xIGN5Y2xlcyBbd2hlbiBpbnRlZ2VyLW9ubHkgY29kZQorQCBtYW5hZ2VzIGluIDIwLjAgY3ljbGVzXS4KK0AKK0AgV2hlbiBjb21wYXJpbmcgdG8geDg2XzY0IHJlc3VsdHMga2VlcCBpbiBtaW5kIHRoYXQgTkVPTiB1bml0IGlzCitAIFttb3N0bHldIHNpbmdsZS1pc3N1ZSBhbmQgdGh1cyBjYW4ndCBbZnVsbHldIGJlbmVmaXQgZnJvbQorQCBpbnN0cnVjdGlvbi1sZXZlbCBwYXJhbGxlbGlzbS4gQW5kIHdoZW4gY29tcGFyaW5nIHRvIGFlcy1hcm12NAorQCByZXN1bHRzIGtlZXAgaW4gbWluZCBrZXkgc2NoZWR1bGUgY29udmVyc2lvbiBvdmVyaGVhZCAoc2VlCitAIGJzYWVzLXg4Nl82NC5wbCBmb3IgZnVydGhlciBkZXRhaWxzKS4uLgorQAorQAkJCQkJCTxhcHByb0BvcGVuc3NsLm9yZz4KKworQCBBcHJpbC1BdWd1c3QgMjAxMworQAorQCBBZGQgQ0JDLCBDVFIgYW5kIFhUUyBzdWJyb3V0aW5lcywgYWRhcHQgZm9yIGtlcm5lbCB1c2UuCitACitACQkJCQk8YXJkLmJpZXNoZXV2ZWxAbGluYXJvLm9yZz4KKworI2lmbmRlZiBfX0tFUk5FTF9fCisjIGluY2x1ZGUgImFybV9hcmNoLmgiCisKKyMgZGVmaW5lIFZGUF9BQklfUFVTSAl2c3RtZGIJc3AhLHtkOC1kMTV9CisjIGRlZmluZSBWRlBfQUJJX1BPUAl2bGRtaWEJc3AhLHtkOC1kMTV9CisjIGRlZmluZSBWRlBfQUJJX0ZSQU1FCTB4NDAKKyNlbHNlCisjIGRlZmluZSBWRlBfQUJJX1BVU0gKKyMgZGVmaW5lIFZGUF9BQklfUE9QCisjIGRlZmluZSBWRlBfQUJJX0ZSQU1FCTAKKyMgZGVmaW5lIEJTQUVTX0FTTV9FWFRFTkRFRF9LRVkKKyMgZGVmaW5lIFhUU19DSEFJTl9UV0VBSworIyBkZWZpbmUgX19BUk1fQVJDSF9fIF9fTElOVVhfQVJNX0FSQ0hfXworI2VuZGlmCisKKyNpZmRlZiBfX3RodW1iX18KKyMgZGVmaW5lIGFkcmwgYWRyCisjZW5kaWYKKworI2lmIF9fQVJNX0FSQ0hfXz49NworLnRleHQKKy5zeW50YXgJdW5pZmllZCAJQCBBUk12Ny1jYXBhYmxlIGFzc2VtYmxlciBpcyBleHBlY3RlZCB0byBoYW5kbGUgdGhpcworI2lmZGVmIF9fdGh1bWIyX18KKy50aHVtYgorI2Vsc2UKKy5jb2RlICAgMzIKKyNlbmRpZgorCisuZnB1CW5lb24KKworLnR5cGUJX2JzYWVzX2RlY3J5cHQ4LCVmdW5jdGlvbgorLmFsaWduCTQKK19ic2Flc19kZWNyeXB0ODoKKwlhZHIJcjYsX2JzYWVzX2RlY3J5cHQ4CisJdmxkbWlhCXI0ISwge3E5fQkJQCByb3VuZCAwIGtleQorCWFkZAlyNixyNiwjLkxNMElTUi1fYnNhZXNfZGVjcnlwdDgKKworCXZsZG1pYQlyNiEsIHtxOH0JCUAgLkxNMElTUgorCXZlb3IJcTEwLCBxMCwgcTkJQCB4b3Igd2l0aCByb3VuZDAga2V5CisJdmVvcglxMTEsIHExLCBxOQorCSB2dGJsLjgJZDAsIHtxMTB9LCBkMTYKKwkgdnRibC44CWQxLCB7cTEwfSwgZDE3CisJdmVvcglxMTIsIHEyLCBxOQorCSB2dGJsLjgJZDIsIHtxMTF9LCBkMTYKKwkgdnRibC44CWQzLCB7cTExfSwgZDE3CisJdmVvcglxMTMsIHEzLCBxOQorCSB2dGJsLjgJZDQsIHtxMTJ9LCBkMTYKKwkgdnRibC44CWQ1LCB7cTEyfSwgZDE3CisJdmVvcglxMTQsIHE0LCBxOQorCSB2dGJsLjgJZDYsIHtxMTN9LCBkMTYKKwkgdnRibC44CWQ3LCB7cTEzfSwgZDE3CisJdmVvcglxMTUsIHE1LCBxOQorCSB2dGJsLjgJZDgsIHtxMTR9LCBkMTYKKwkgdnRibC44CWQ5LCB7cTE0fSwgZDE3CisJdmVvcglxMTAsIHE2LCBxOQorCSB2dGJsLjgJZDEwLCB7cTE1fSwgZDE2CisJIHZ0YmwuOAlkMTEsIHtxMTV9LCBkMTcKKwl2ZW9yCXExMSwgcTcsIHE5CisJIHZ0YmwuOAlkMTIsIHtxMTB9LCBkMTYKKwkgdnRibC44CWQxMywge3ExMH0sIGQxNworCSB2dGJsLjgJZDE0LCB7cTExfSwgZDE2CisJIHZ0YmwuOAlkMTUsIHtxMTF9LCBkMTcKKwl2bW92Lmk4CXE4LCMweDU1CQkJQCBjb21wb3NlIC5MQlMwCisJdm1vdi5pOAlxOSwjMHgzMwkJCUAgY29tcG9zZSAuTEJTMQorCXZzaHIudTY0CXExMCwgcTYsICMxCisJIHZzaHIudTY0CXExMSwgcTQsICMxCisJdmVvcgkJcTEwLCBxMTAsIHE3CisJIHZlb3IJCXExMSwgcTExLCBxNQorCXZhbmQJCXExMCwgcTEwLCBxOAorCSB2YW5kCQlxMTEsIHExMSwgcTgKKwl2ZW9yCQlxNywgcTcsIHExMAorCXZzaGwudTY0CXExMCwgcTEwLCAjMQorCSB2ZW9yCQlxNSwgcTUsIHExMQorCSB2c2hsLnU2NAlxMTEsIHExMSwgIzEKKwl2ZW9yCQlxNiwgcTYsIHExMAorCSB2ZW9yCQlxNCwgcTQsIHExMQorCXZzaHIudTY0CXExMCwgcTIsICMxCisJIHZzaHIudTY0CXExMSwgcTAsICMxCisJdmVvcgkJcTEwLCBxMTAsIHEzCisJIHZlb3IJCXExMSwgcTExLCBxMQorCXZhbmQJCXExMCwgcTEwLCBxOAorCSB2YW5kCQlxMTEsIHExMSwgcTgKKwl2ZW9yCQlxMywgcTMsIHExMAorCXZzaGwudTY0CXExMCwgcTEwLCAjMQorCSB2ZW9yCQlxMSwgcTEsIHExMQorCSB2c2hsLnU2NAlxMTEsIHExMSwgIzEKKwl2ZW9yCQlxMiwgcTIsIHExMAorCSB2ZW9yCQlxMCwgcTAsIHExMQorCXZtb3YuaTgJcTgsIzB4MGYJCQlAIGNvbXBvc2UgLkxCUzIKKwl2c2hyLnU2NAlxMTAsIHE1LCAjMgorCSB2c2hyLnU2NAlxMTEsIHE0LCAjMgorCXZlb3IJCXExMCwgcTEwLCBxNworCSB2ZW9yCQlxMTEsIHExMSwgcTYKKwl2YW5kCQlxMTAsIHExMCwgcTkKKwkgdmFuZAkJcTExLCBxMTEsIHE5CisJdmVvcgkJcTcsIHE3LCBxMTAKKwl2c2hsLnU2NAlxMTAsIHExMCwgIzIKKwkgdmVvcgkJcTYsIHE2LCBxMTEKKwkgdnNobC51NjQJcTExLCBxMTEsICMyCisJdmVvcgkJcTUsIHE1LCBxMTAKKwkgdmVvcgkJcTQsIHE0LCBxMTEKKwl2c2hyLnU2NAlxMTAsIHExLCAjMgorCSB2c2hyLnU2NAlxMTEsIHEwLCAjMgorCXZlb3IJCXExMCwgcTEwLCBxMworCSB2ZW9yCQlxMTEsIHExMSwgcTIKKwl2YW5kCQlxMTAsIHExMCwgcTkKKwkgdmFuZAkJcTExLCBxMTEsIHE5CisJdmVvcgkJcTMsIHEzLCBxMTAKKwl2c2hsLnU2NAlxMTAsIHExMCwgIzIKKwkgdmVvcgkJcTIsIHEyLCBxMTEKKwkgdnNobC51NjQJcTExLCBxMTEsICMyCisJdmVvcgkJcTEsIHExLCBxMTAKKwkgdmVvcgkJcTAsIHEwLCBxMTEKKwl2c2hyLnU2NAlxMTAsIHEzLCAjNAorCSB2c2hyLnU2NAlxMTEsIHEyLCAjNAorCXZlb3IJCXExMCwgcTEwLCBxNworCSB2ZW9yCQlxMTEsIHExMSwgcTYKKwl2YW5kCQlxMTAsIHExMCwgcTgKKwkgdmFuZAkJcTExLCBxMTEsIHE4CisJdmVvcgkJcTcsIHE3LCBxMTAKKwl2c2hsLnU2NAlxMTAsIHExMCwgIzQKKwkgdmVvcgkJcTYsIHE2LCBxMTEKKwkgdnNobC51NjQJcTExLCBxMTEsICM0CisJdmVvcgkJcTMsIHEzLCBxMTAKKwkgdmVvcgkJcTIsIHEyLCBxMTEKKwl2c2hyLnU2NAlxMTAsIHExLCAjNAorCSB2c2hyLnU2NAlxMTEsIHEwLCAjNAorCXZlb3IJCXExMCwgcTEwLCBxNQorCSB2ZW9yCQlxMTEsIHExMSwgcTQKKwl2YW5kCQlxMTAsIHExMCwgcTgKKwkgdmFuZAkJcTExLCBxMTEsIHE4CisJdmVvcgkJcTUsIHE1LCBxMTAKKwl2c2hsLnU2NAlxMTAsIHExMCwgIzQKKwkgdmVvcgkJcTQsIHE0LCBxMTEKKwkgdnNobC51NjQJcTExLCBxMTEsICM0CisJdmVvcgkJcTEsIHExLCBxMTAKKwkgdmVvcgkJcTAsIHEwLCBxMTEKKwlzdWIJcjUscjUsIzEKKwliCS5MZGVjX3Nib3gKKy5hbGlnbgk0CisuTGRlY19sb29wOgorCXZsZG1pYQlyNCEsIHtxOC1xMTF9CisJdmVvcglxOCwgcTgsIHEwCisJdmVvcglxOSwgcTksIHExCisJdnRibC44CWQwLCB7cTh9LCBkMjQKKwl2dGJsLjgJZDEsIHtxOH0sIGQyNQorCXZsZG1pYQlyNCEsIHtxOH0KKwl2ZW9yCXExMCwgcTEwLCBxMgorCXZ0YmwuOAlkMiwge3E5fSwgZDI0CisJdnRibC44CWQzLCB7cTl9LCBkMjUKKwl2bGRtaWEJcjQhLCB7cTl9CisJdmVvcglxMTEsIHExMSwgcTMKKwl2dGJsLjgJZDQsIHtxMTB9LCBkMjQKKwl2dGJsLjgJZDUsIHtxMTB9LCBkMjUKKwl2bGRtaWEJcjQhLCB7cTEwfQorCXZ0YmwuOAlkNiwge3ExMX0sIGQyNAorCXZ0YmwuOAlkNywge3ExMX0sIGQyNQorCXZsZG1pYQlyNCEsIHtxMTF9CisJdmVvcglxOCwgcTgsIHE0CisJdmVvcglxOSwgcTksIHE1CisJdnRibC44CWQ4LCB7cTh9LCBkMjQKKwl2dGJsLjgJZDksIHtxOH0sIGQyNQorCXZlb3IJcTEwLCBxMTAsIHE2CisJdnRibC44CWQxMCwge3E5fSwgZDI0CisJdnRibC44CWQxMSwge3E5fSwgZDI1CisJdmVvcglxMTEsIHExMSwgcTcKKwl2dGJsLjgJZDEyLCB7cTEwfSwgZDI0CisJdnRibC44CWQxMywge3ExMH0sIGQyNQorCXZ0YmwuOAlkMTQsIHtxMTF9LCBkMjQKKwl2dGJsLjgJZDE1LCB7cTExfSwgZDI1CisuTGRlY19zYm94OgorCSB2ZW9yCXExLCBxMSwgcTQKKwl2ZW9yCXEzLCBxMywgcTQKKworCXZlb3IJcTQsIHE0LCBxNworCSB2ZW9yCXExLCBxMSwgcTYKKwl2ZW9yCXEyLCBxMiwgcTcKKwl2ZW9yCXE2LCBxNiwgcTQKKworCXZlb3IJcTAsIHEwLCBxMQorCXZlb3IJcTIsIHEyLCBxNQorCSB2ZW9yCXE3LCBxNywgcTYKKwl2ZW9yCXEzLCBxMywgcTAKKwl2ZW9yCXE1LCBxNSwgcTAKKwl2ZW9yCXExLCBxMSwgcTMKKwl2ZW9yCXExMSwgcTMsIHEwCisJdmVvcglxMTAsIHE3LCBxNAorCXZlb3IJcTksIHExLCBxNgorCXZlb3IJcTEzLCBxNCwgcTAKKwkgdm1vdglxOCwgcTEwCisJdmVvcglxMTIsIHE1LCBxMgorCisJdm9ycglxMTAsIHExMCwgcTkKKwl2ZW9yCXExNSwgcTExLCBxOAorCXZhbmQJcTE0LCBxMTEsIHExMgorCXZvcnIJcTExLCBxMTEsIHExMgorCXZlb3IJcTEyLCBxMTIsIHE5CisJdmFuZAlxOCwgcTgsIHE5CisJdmVvcglxOSwgcTYsIHEyCisJdmFuZAlxMTUsIHExNSwgcTEyCisJdmFuZAlxMTMsIHExMywgcTkKKwl2ZW9yCXE5LCBxMywgcTcKKwl2ZW9yCXExMiwgcTEsIHE1CisJdmVvcglxMTEsIHExMSwgcTEzCisJdmVvcglxMTAsIHExMCwgcTEzCisJdmFuZAlxMTMsIHE5LCBxMTIKKwl2b3JyCXE5LCBxOSwgcTEyCisJdmVvcglxMTEsIHExMSwgcTE1CisJdmVvcglxOCwgcTgsIHExMworCXZlb3IJcTEwLCBxMTAsIHExNAorCXZlb3IJcTksIHE5LCBxMTUKKwl2ZW9yCXE4LCBxOCwgcTE0CisJdmFuZAlxMTIsIHE0LCBxNgorCXZlb3IJcTksIHE5LCBxMTQKKwl2YW5kCXExMywgcTAsIHEyCisJdmFuZAlxMTQsIHE3LCBxMQorCXZvcnIJcTE1LCBxMywgcTUKKwl2ZW9yCXExMSwgcTExLCBxMTIKKwl2ZW9yCXE5LCBxOSwgcTE0CisJdmVvcglxOCwgcTgsIHExNQorCXZlb3IJcTEwLCBxMTAsIHExMworCisJQCBJbnZfR0YxNiAJMCwgCTEsIAkyLCAJMywgczAsIHMxLCBzMiwgczMKKworCUAgbmV3IHNtYWxsZXIgaW52ZXJzaW9uCisKKwl2YW5kCXExNCwgcTExLCBxOQorCXZtb3YJcTEyLCBxOAorCisJdmVvcglxMTMsIHExMCwgcTE0CisJdmVvcglxMTUsIHE4LCBxMTQKKwl2ZW9yCXExNCwgcTgsIHExNAlAIHExND1xMTUKKworCXZic2wJcTEzLCBxOSwgcTgKKwl2YnNsCXExNSwgcTExLCBxMTAKKwl2ZW9yCXExMSwgcTExLCBxMTAKKworCXZic2wJcTEyLCBxMTMsIHExNAorCXZic2wJcTgsIHExNCwgcTEzCisKKwl2YW5kCXExNCwgcTEyLCBxMTUKKwl2ZW9yCXE5LCBxOSwgcTgKKworCXZlb3IJcTE0LCBxMTQsIHExMQorCXZlb3IJcTEyLCBxNSwgcTIKKwl2ZW9yCXE4LCBxMSwgcTYKKwl2ZW9yIAlxMTAsIHExNSwgcTE0CisJdmFuZAlxMTAsIHExMCwgcTUKKwl2ZW9yCXE1LCBxNSwgcTEKKwl2YW5kCXExMSwgcTEsIHExNQorCXZhbmQJcTUsIHE1LCBxMTQKKwl2ZW9yCXExLCBxMTEsIHExMAorCXZlb3IJcTUsIHE1LCBxMTEKKwl2ZW9yCXExNSwgcTE1LCBxMTMKKwl2ZW9yCXExNCwgcTE0LCBxOQorCXZlb3IJcTExLCBxMTUsIHExNAorCSB2ZW9yIAlxMTAsIHExMywgcTkKKwl2YW5kCXExMSwgcTExLCBxMTIKKwkgdmFuZAlxMTAsIHExMCwgcTIKKwl2ZW9yCXExMiwgcTEyLCBxOAorCSB2ZW9yCXEyLCBxMiwgcTYKKwl2YW5kCXE4LCBxOCwgcTE1CisJIHZhbmQJcTYsIHE2LCBxMTMKKwl2YW5kCXExMiwgcTEyLCBxMTQKKwkgdmFuZAlxMiwgcTIsIHE5CisJdmVvcglxOCwgcTgsIHExMgorCSB2ZW9yCXEyLCBxMiwgcTYKKwl2ZW9yCXExMiwgcTEyLCBxMTEKKwkgdmVvcglxNiwgcTYsIHExMAorCXZlb3IJcTUsIHE1LCBxMTIKKwl2ZW9yCXEyLCBxMiwgcTEyCisJdmVvcglxMSwgcTEsIHE4CisJdmVvcglxNiwgcTYsIHE4CisKKwl2ZW9yCXExMiwgcTMsIHEwCisJdmVvcglxOCwgcTcsIHE0CisJdmVvcglxMTEsIHExNSwgcTE0CisJIHZlb3IgCXExMCwgcTEzLCBxOQorCXZhbmQJcTExLCBxMTEsIHExMgorCSB2YW5kCXExMCwgcTEwLCBxMAorCXZlb3IJcTEyLCBxMTIsIHE4CisJIHZlb3IJcTAsIHEwLCBxNAorCXZhbmQJcTgsIHE4LCBxMTUKKwkgdmFuZAlxNCwgcTQsIHExMworCXZhbmQJcTEyLCBxMTIsIHExNAorCSB2YW5kCXEwLCBxMCwgcTkKKwl2ZW9yCXE4LCBxOCwgcTEyCisJIHZlb3IJcTAsIHEwLCBxNAorCXZlb3IJcTEyLCBxMTIsIHExMQorCSB2ZW9yCXE0LCBxNCwgcTEwCisJdmVvcglxMTUsIHExNSwgcTEzCisJdmVvcglxMTQsIHExNCwgcTkKKwl2ZW9yIAlxMTAsIHExNSwgcTE0CisJdmFuZAlxMTAsIHExMCwgcTMKKwl2ZW9yCXEzLCBxMywgcTcKKwl2YW5kCXExMSwgcTcsIHExNQorCXZhbmQJcTMsIHEzLCBxMTQKKwl2ZW9yCXE3LCBxMTEsIHExMAorCXZlb3IJcTMsIHEzLCBxMTEKKwl2ZW9yCXEzLCBxMywgcTEyCisJdmVvcglxMCwgcTAsIHExMgorCXZlb3IJcTcsIHE3LCBxOAorCXZlb3IJcTQsIHE0LCBxOAorCXZlb3IJcTEsIHExLCBxNworCXZlb3IJcTYsIHE2LCBxNQorCisJdmVvcglxNCwgcTQsIHExCisJdmVvcglxMiwgcTIsIHE3CisJdmVvcglxNSwgcTUsIHE3CisJdmVvcglxNCwgcTQsIHEyCisJIHZlb3IgCXE3LCBxNywgcTAKKwl2ZW9yCXE0LCBxNCwgcTUKKwkgdmVvcglxMywgcTMsIHE2CisJIHZlb3IJcTYsIHE2LCBxMQorCXZlb3IJcTMsIHEzLCBxNAorCisJdmVvcglxNCwgcTQsIHEwCisJdmVvcglxNywgcTcsIHEzCisJc3VicwlyNSxyNSwjMQorCWJjYwkuTGRlY19kb25lCisJQCBtdWx0aXBsaWNhdGlvbiBieSAweDA1LTB4MDAtMHgwNC0weDAwCisJdmV4dC44CXE4LCBxMCwgcTAsICM4CisJdmV4dC44CXExNCwgcTMsIHEzLCAjOAorCXZleHQuOAlxMTUsIHE1LCBxNSwgIzgKKwl2ZW9yCXE4LCBxOCwgcTAKKwl2ZXh0LjgJcTksIHExLCBxMSwgIzgKKwl2ZW9yCXExNCwgcTE0LCBxMworCXZleHQuOAlxMTAsIHE2LCBxNiwgIzgKKwl2ZW9yCXExNSwgcTE1LCBxNQorCXZleHQuOAlxMTEsIHE0LCBxNCwgIzgKKwl2ZW9yCXE5LCBxOSwgcTEKKwl2ZXh0LjgJcTEyLCBxMiwgcTIsICM4CisJdmVvcglxMTAsIHExMCwgcTYKKwl2ZXh0LjgJcTEzLCBxNywgcTcsICM4CisJdmVvcglxMTEsIHExMSwgcTQKKwl2ZW9yCXExMiwgcTEyLCBxMgorCXZlb3IJcTEzLCBxMTMsIHE3CisKKwkgdmVvcglxMCwgcTAsIHExNAorCSB2ZW9yCXExLCBxMSwgcTE0CisJIHZlb3IJcTYsIHE2LCBxOAorCSB2ZW9yCXEyLCBxMiwgcTEwCisJIHZlb3IJcTQsIHE0LCBxOQorCSB2ZW9yCXExLCBxMSwgcTE1CisJIHZlb3IJcTYsIHE2LCBxMTUKKwkgdmVvcglxMiwgcTIsIHExNAorCSB2ZW9yCXE3LCBxNywgcTExCisJIHZlb3IJcTQsIHE0LCBxMTQKKwkgdmVvcglxMywgcTMsIHExMgorCSB2ZW9yCXEyLCBxMiwgcTE1CisJIHZlb3IJcTcsIHE3LCBxMTUKKwkgdmVvcglxNSwgcTUsIHExMworCXZleHQuOAlxOCwgcTAsIHEwLCAjMTIJQCB4MCA8PDwgMzIKKwl2ZXh0LjgJcTksIHExLCBxMSwgIzEyCisJIHZlb3IJcTAsIHEwLCBxOAkJQCB4MCBeICh4MCA8PDwgMzIpCisJdmV4dC44CXExMCwgcTYsIHE2LCAjMTIKKwkgdmVvcglxMSwgcTEsIHE5CisJdmV4dC44CXExMSwgcTQsIHE0LCAjMTIKKwkgdmVvcglxNiwgcTYsIHExMAorCXZleHQuOAlxMTIsIHEyLCBxMiwgIzEyCisJIHZlb3IJcTQsIHE0LCBxMTEKKwl2ZXh0LjgJcTEzLCBxNywgcTcsICMxMgorCSB2ZW9yCXEyLCBxMiwgcTEyCisJdmV4dC44CXExNCwgcTMsIHEzLCAjMTIKKwkgdmVvcglxNywgcTcsIHExMworCXZleHQuOAlxMTUsIHE1LCBxNSwgIzEyCisJIHZlb3IJcTMsIHEzLCBxMTQKKworCXZlb3IJcTksIHE5LCBxMAorCSB2ZW9yCXE1LCBxNSwgcTE1CisJIHZleHQuOAlxMCwgcTAsIHEwLCAjOAkJQCAoeDAgXiAoeDAgPDw8IDMyKSkgPDw8IDY0KQorCXZlb3IJcTEwLCBxMTAsIHExCisJdmVvcglxOCwgcTgsIHE1CisJdmVvcglxOSwgcTksIHE1CisJIHZleHQuOAlxMSwgcTEsIHExLCAjOAorCXZlb3IJcTEzLCBxMTMsIHEyCisJIHZlb3IJcTAsIHEwLCBxOAorCXZlb3IJcTE0LCBxMTQsIHE3CisJIHZlb3IJcTEsIHExLCBxOQorCSB2ZXh0LjgJcTgsIHEyLCBxMiwgIzgKKwl2ZW9yCXExMiwgcTEyLCBxNAorCSB2ZXh0LjgJcTksIHE3LCBxNywgIzgKKwl2ZW9yCXExNSwgcTE1LCBxMworCSB2ZXh0LjgJcTIsIHE0LCBxNCwgIzgKKwl2ZW9yCXExMSwgcTExLCBxNgorCSB2ZXh0LjgJcTcsIHE1LCBxNSwgIzgKKwl2ZW9yCXExMiwgcTEyLCBxNQorCSB2ZXh0LjgJcTQsIHEzLCBxMywgIzgKKwl2ZW9yCXExMSwgcTExLCBxNQorCSB2ZXh0LjgJcTMsIHE2LCBxNiwgIzgKKwl2ZW9yCXE1LCBxOSwgcTEzCisJdmVvcglxMTEsIHExMSwgcTIKKwl2ZW9yCXE3LCBxNywgcTE1CisJdmVvcglxNiwgcTQsIHExNAorCXZlb3IJcTQsIHE4LCBxMTIKKwl2ZW9yCXEyLCBxMywgcTEwCisJdm1vdglxMywgcTExCisJIEAgdm1vdglxNSwgcTkKKwl2bGRtaWEJcjYsIHtxMTJ9CQlAIC5MSVNSCisJaXRlCWVxCQkJCUAgVGh1bWIyIHRoaW5nLCBzYW5pdHkgY2hlY2sgaW4gQVJNCisJYWRkZXEJcjYscjYsIzB4MTAKKwlibmUJLkxkZWNfbG9vcAorCXZsZG1pYQlyNiwge3ExMn0JCUAgLkxJU1JNMAorCWIJLkxkZWNfbG9vcAorLmFsaWduCTQKKy5MZGVjX2RvbmU6CisJdm1vdi5pOAlxOCwjMHg1NQkJCUAgY29tcG9zZSAuTEJTMAorCXZtb3YuaTgJcTksIzB4MzMJCQlAIGNvbXBvc2UgLkxCUzEKKwl2c2hyLnU2NAlxMTAsIHEzLCAjMQorCSB2c2hyLnU2NAlxMTEsIHEyLCAjMQorCXZlb3IJCXExMCwgcTEwLCBxNQorCSB2ZW9yCQlxMTEsIHExMSwgcTcKKwl2YW5kCQlxMTAsIHExMCwgcTgKKwkgdmFuZAkJcTExLCBxMTEsIHE4CisJdmVvcgkJcTUsIHE1LCBxMTAKKwl2c2hsLnU2NAlxMTAsIHExMCwgIzEKKwkgdmVvcgkJcTcsIHE3LCBxMTEKKwkgdnNobC51NjQJcTExLCBxMTEsICMxCisJdmVvcgkJcTMsIHEzLCBxMTAKKwkgdmVvcgkJcTIsIHEyLCBxMTEKKwl2c2hyLnU2NAlxMTAsIHE2LCAjMQorCSB2c2hyLnU2NAlxMTEsIHEwLCAjMQorCXZlb3IJCXExMCwgcTEwLCBxNAorCSB2ZW9yCQlxMTEsIHExMSwgcTEKKwl2YW5kCQlxMTAsIHExMCwgcTgKKwkgdmFuZAkJcTExLCBxMTEsIHE4CisJdmVvcgkJcTQsIHE0LCBxMTAKKwl2c2hsLnU2NAlxMTAsIHExMCwgIzEKKwkgdmVvcgkJcTEsIHExLCBxMTEKKwkgdnNobC51NjQJcTExLCBxMTEsICMxCisJdmVvcgkJcTYsIHE2LCBxMTAKKwkgdmVvcgkJcTAsIHEwLCBxMTEKKwl2bW92Lmk4CXE4LCMweDBmCQkJQCBjb21wb3NlIC5MQlMyCisJdnNoci51NjQJcTEwLCBxNywgIzIKKwkgdnNoci51NjQJcTExLCBxMiwgIzIKKwl2ZW9yCQlxMTAsIHExMCwgcTUKKwkgdmVvcgkJcTExLCBxMTEsIHEzCisJdmFuZAkJcTEwLCBxMTAsIHE5CisJIHZhbmQJCXExMSwgcTExLCBxOQorCXZlb3IJCXE1LCBxNSwgcTEwCisJdnNobC51NjQJcTEwLCBxMTAsICMyCisJIHZlb3IJCXEzLCBxMywgcTExCisJIHZzaGwudTY0CXExMSwgcTExLCAjMgorCXZlb3IJCXE3LCBxNywgcTEwCisJIHZlb3IJCXEyLCBxMiwgcTExCisJdnNoci51NjQJcTEwLCBxMSwgIzIKKwkgdnNoci51NjQJcTExLCBxMCwgIzIKKwl2ZW9yCQlxMTAsIHExMCwgcTQKKwkgdmVvcgkJcTExLCBxMTEsIHE2CisJdmFuZAkJcTEwLCBxMTAsIHE5CisJIHZhbmQJCXExMSwgcTExLCBxOQorCXZlb3IJCXE0LCBxNCwgcTEwCisJdnNobC51NjQJcTEwLCBxMTAsICMyCisJIHZlb3IJCXE2LCBxNiwgcTExCisJIHZzaGwudTY0CXExMSwgcTExLCAjMgorCXZlb3IJCXExLCBxMSwgcTEwCisJIHZlb3IJCXEwLCBxMCwgcTExCisJdnNoci51NjQJcTEwLCBxNCwgIzQKKwkgdnNoci51NjQJcTExLCBxNiwgIzQKKwl2ZW9yCQlxMTAsIHExMCwgcTUKKwkgdmVvcgkJcTExLCBxMTEsIHEzCisJdmFuZAkJcTEwLCBxMTAsIHE4CisJIHZhbmQJCXExMSwgcTExLCBxOAorCXZlb3IJCXE1LCBxNSwgcTEwCisJdnNobC51NjQJcTEwLCBxMTAsICM0CisJIHZlb3IJCXEzLCBxMywgcTExCisJIHZzaGwudTY0CXExMSwgcTExLCAjNAorCXZlb3IJCXE0LCBxNCwgcTEwCisJIHZlb3IJCXE2LCBxNiwgcTExCisJdnNoci51NjQJcTEwLCBxMSwgIzQKKwkgdnNoci51NjQJcTExLCBxMCwgIzQKKwl2ZW9yCQlxMTAsIHExMCwgcTcKKwkgdmVvcgkJcTExLCBxMTEsIHEyCisJdmFuZAkJcTEwLCBxMTAsIHE4CisJIHZhbmQJCXExMSwgcTExLCBxOAorCXZlb3IJCXE3LCBxNywgcTEwCisJdnNobC51NjQJcTEwLCBxMTAsICM0CisJIHZlb3IJCXEyLCBxMiwgcTExCisJIHZzaGwudTY0CXExMSwgcTExLCAjNAorCXZlb3IJCXExLCBxMSwgcTEwCisJIHZlb3IJCXEwLCBxMCwgcTExCisJdmxkbWlhCXI0LCB7cTh9CQkJQCBsYXN0IHJvdW5kIGtleQorCXZlb3IJcTYsIHE2LCBxOAorCXZlb3IJcTQsIHE0LCBxOAorCXZlb3IJcTIsIHEyLCBxOAorCXZlb3IJcTcsIHE3LCBxOAorCXZlb3IJcTMsIHEzLCBxOAorCXZlb3IJcTUsIHE1LCBxOAorCXZlb3IJcTAsIHEwLCBxOAorCXZlb3IJcTEsIHExLCBxOAorCWJ4CWxyCisuc2l6ZQlfYnNhZXNfZGVjcnlwdDgsLi1fYnNhZXNfZGVjcnlwdDgKKworLnR5cGUJX2JzYWVzX2NvbnN0LCVvYmplY3QKKy5hbGlnbgk2CitfYnNhZXNfY29uc3Q6CisuTE0wSVNSOglAIEludlNoaWZ0Um93cyBjb25zdGFudHMKKwkucXVhZAkweDBhMGUwMjA2MDcwYjBmMDMsIDB4MDAwNDA4MGMwZDAxMDUwOQorLkxJU1I6CisJLnF1YWQJMHgwNTA0MDcwNjAyMDEwMDAzLCAweDBmMGUwZDBjMDgwYjBhMDkKKy5MSVNSTTA6CisJLnF1YWQJMHgwMTA0MGIwZTAyMDUwODBmLCAweDAzMDYwOTBjMDAwNzBhMGQKKy5MTTBTUjoJCUAgU2hpZnRSb3dzIGNvbnN0YW50cworCS5xdWFkCTB4MGEwZTAyMDYwZjAzMDcwYiwgMHgwMDA0MDgwYzA1MDkwZDAxCisuTFNSOgorCS5xdWFkCTB4MDUwNDA3MDYwMDAzMDIwMSwgMHgwZjBlMGQwYzBhMDkwODBiCisuTFNSTTA6CisJLnF1YWQJMHgwMzA0MDkwZTAwMDUwYTBmLCAweDAxMDYwYjBjMDIwNzA4MGQKKy5MTTA6CisJLnF1YWQJMHgwMjA2MGEwZTAzMDcwYjBmLCAweDAwMDQwODBjMDEwNTA5MGQKKy5MUkVWTTBTUjoKKwkucXVhZAkweDA5MGQwMTA1MGMwMDA0MDgsIDB4MDMwNzBiMGYwNjBhMGUwMgorLmFzY2l6CSJCaXQtc2xpY2VkIEFFUyBmb3IgTkVPTiwgQ1JZUFRPR0FNUyBieSA8YXBwcm9Ab3BlbnNzbC5vcmc+IgorLmFsaWduCTYKKy5zaXplCV9ic2Flc19jb25zdCwuLV9ic2Flc19jb25zdAorCisudHlwZQlfYnNhZXNfZW5jcnlwdDgsJWZ1bmN0aW9uCisuYWxpZ24JNAorX2JzYWVzX2VuY3J5cHQ4OgorCWFkcglyNixfYnNhZXNfZW5jcnlwdDgKKwl2bGRtaWEJcjQhLCB7cTl9CQlAIHJvdW5kIDAga2V5CisJc3ViCXI2LHI2LCNfYnNhZXNfZW5jcnlwdDgtLkxNMFNSCisKKwl2bGRtaWEJcjYhLCB7cTh9CQlAIC5MTTBTUgorX2JzYWVzX2VuY3J5cHQ4X2FsdDoKKwl2ZW9yCXExMCwgcTAsIHE5CUAgeG9yIHdpdGggcm91bmQwIGtleQorCXZlb3IJcTExLCBxMSwgcTkKKwkgdnRibC44CWQwLCB7cTEwfSwgZDE2CisJIHZ0YmwuOAlkMSwge3ExMH0sIGQxNworCXZlb3IJcTEyLCBxMiwgcTkKKwkgdnRibC44CWQyLCB7cTExfSwgZDE2CisJIHZ0YmwuOAlkMywge3ExMX0sIGQxNworCXZlb3IJcTEzLCBxMywgcTkKKwkgdnRibC44CWQ0LCB7cTEyfSwgZDE2CisJIHZ0YmwuOAlkNSwge3ExMn0sIGQxNworCXZlb3IJcTE0LCBxNCwgcTkKKwkgdnRibC44CWQ2LCB7cTEzfSwgZDE2CisJIHZ0YmwuOAlkNywge3ExM30sIGQxNworCXZlb3IJcTE1LCBxNSwgcTkKKwkgdnRibC44CWQ4LCB7cTE0fSwgZDE2CisJIHZ0YmwuOAlkOSwge3ExNH0sIGQxNworCXZlb3IJcTEwLCBxNiwgcTkKKwkgdnRibC44CWQxMCwge3ExNX0sIGQxNgorCSB2dGJsLjgJZDExLCB7cTE1fSwgZDE3CisJdmVvcglxMTEsIHE3LCBxOQorCSB2dGJsLjgJZDEyLCB7cTEwfSwgZDE2CisJIHZ0YmwuOAlkMTMsIHtxMTB9LCBkMTcKKwkgdnRibC44CWQxNCwge3ExMX0sIGQxNgorCSB2dGJsLjgJZDE1LCB7cTExfSwgZDE3CitfYnNhZXNfZW5jcnlwdDhfYml0c2xpY2U6CisJdm1vdi5pOAlxOCwjMHg1NQkJCUAgY29tcG9zZSAuTEJTMAorCXZtb3YuaTgJcTksIzB4MzMJCQlAIGNvbXBvc2UgLkxCUzEKKwl2c2hyLnU2NAlxMTAsIHE2LCAjMQorCSB2c2hyLnU2NAlxMTEsIHE0LCAjMQorCXZlb3IJCXExMCwgcTEwLCBxNworCSB2ZW9yCQlxMTEsIHExMSwgcTUKKwl2YW5kCQlxMTAsIHExMCwgcTgKKwkgdmFuZAkJcTExLCBxMTEsIHE4CisJdmVvcgkJcTcsIHE3LCBxMTAKKwl2c2hsLnU2NAlxMTAsIHExMCwgIzEKKwkgdmVvcgkJcTUsIHE1LCBxMTEKKwkgdnNobC51NjQJcTExLCBxMTEsICMxCisJdmVvcgkJcTYsIHE2LCBxMTAKKwkgdmVvcgkJcTQsIHE0LCBxMTEKKwl2c2hyLnU2NAlxMTAsIHEyLCAjMQorCSB2c2hyLnU2NAlxMTEsIHEwLCAjMQorCXZlb3IJCXExMCwgcTEwLCBxMworCSB2ZW9yCQlxMTEsIHExMSwgcTEKKwl2YW5kCQlxMTAsIHExMCwgcTgKKwkgdmFuZAkJcTExLCBxMTEsIHE4CisJdmVvcgkJcTMsIHEzLCBxMTAKKwl2c2hsLnU2NAlxMTAsIHExMCwgIzEKKwkgdmVvcgkJcTEsIHExLCBxMTEKKwkgdnNobC51NjQJcTExLCBxMTEsICMxCisJdmVvcgkJcTIsIHEyLCBxMTAKKwkgdmVvcgkJcTAsIHEwLCBxMTEKKwl2bW92Lmk4CXE4LCMweDBmCQkJQCBjb21wb3NlIC5MQlMyCisJdnNoci51NjQJcTEwLCBxNSwgIzIKKwkgdnNoci51NjQJcTExLCBxNCwgIzIKKwl2ZW9yCQlxMTAsIHExMCwgcTcKKwkgdmVvcgkJcTExLCBxMTEsIHE2CisJdmFuZAkJcTEwLCBxMTAsIHE5CisJIHZhbmQJCXExMSwgcTExLCBxOQorCXZlb3IJCXE3LCBxNywgcTEwCisJdnNobC51NjQJcTEwLCBxMTAsICMyCisJIHZlb3IJCXE2LCBxNiwgcTExCisJIHZzaGwudTY0CXExMSwgcTExLCAjMgorCXZlb3IJCXE1LCBxNSwgcTEwCisJIHZlb3IJCXE0LCBxNCwgcTExCisJdnNoci51NjQJcTEwLCBxMSwgIzIKKwkgdnNoci51NjQJcTExLCBxMCwgIzIKKwl2ZW9yCQlxMTAsIHExMCwgcTMKKwkgdmVvcgkJcTExLCBxMTEsIHEyCisJdmFuZAkJcTEwLCBxMTAsIHE5CisJIHZhbmQJCXExMSwgcTExLCBxOQorCXZlb3IJCXEzLCBxMywgcTEwCisJdnNobC51NjQJcTEwLCBxMTAsICMyCisJIHZlb3IJCXEyLCBxMiwgcTExCisJIHZzaGwudTY0CXExMSwgcTExLCAjMgorCXZlb3IJCXExLCBxMSwgcTEwCisJIHZlb3IJCXEwLCBxMCwgcTExCisJdnNoci51NjQJcTEwLCBxMywgIzQKKwkgdnNoci51NjQJcTExLCBxMiwgIzQKKwl2ZW9yCQlxMTAsIHExMCwgcTcKKwkgdmVvcgkJcTExLCBxMTEsIHE2CisJdmFuZAkJcTEwLCBxMTAsIHE4CisJIHZhbmQJCXExMSwgcTExLCBxOAorCXZlb3IJCXE3LCBxNywgcTEwCisJdnNobC51NjQJcTEwLCBxMTAsICM0CisJIHZlb3IJCXE2LCBxNiwgcTExCisJIHZzaGwudTY0CXExMSwgcTExLCAjNAorCXZlb3IJCXEzLCBxMywgcTEwCisJIHZlb3IJCXEyLCBxMiwgcTExCisJdnNoci51NjQJcTEwLCBxMSwgIzQKKwkgdnNoci51NjQJcTExLCBxMCwgIzQKKwl2ZW9yCQlxMTAsIHExMCwgcTUKKwkgdmVvcgkJcTExLCBxMTEsIHE0CisJdmFuZAkJcTEwLCBxMTAsIHE4CisJIHZhbmQJCXExMSwgcTExLCBxOAorCXZlb3IJCXE1LCBxNSwgcTEwCisJdnNobC51NjQJcTEwLCBxMTAsICM0CisJIHZlb3IJCXE0LCBxNCwgcTExCisJIHZzaGwudTY0CXExMSwgcTExLCAjNAorCXZlb3IJCXExLCBxMSwgcTEwCisJIHZlb3IJCXEwLCBxMCwgcTExCisJc3ViCXI1LHI1LCMxCisJYgkuTGVuY19zYm94CisuYWxpZ24JNAorLkxlbmNfbG9vcDoKKwl2bGRtaWEJcjQhLCB7cTgtcTExfQorCXZlb3IJcTgsIHE4LCBxMAorCXZlb3IJcTksIHE5LCBxMQorCXZ0YmwuOAlkMCwge3E4fSwgZDI0CisJdnRibC44CWQxLCB7cTh9LCBkMjUKKwl2bGRtaWEJcjQhLCB7cTh9CisJdmVvcglxMTAsIHExMCwgcTIKKwl2dGJsLjgJZDIsIHtxOX0sIGQyNAorCXZ0YmwuOAlkMywge3E5fSwgZDI1CisJdmxkbWlhCXI0ISwge3E5fQorCXZlb3IJcTExLCBxMTEsIHEzCisJdnRibC44CWQ0LCB7cTEwfSwgZDI0CisJdnRibC44CWQ1LCB7cTEwfSwgZDI1CisJdmxkbWlhCXI0ISwge3ExMH0KKwl2dGJsLjgJZDYsIHtxMTF9LCBkMjQKKwl2dGJsLjgJZDcsIHtxMTF9LCBkMjUKKwl2bGRtaWEJcjQhLCB7cTExfQorCXZlb3IJcTgsIHE4LCBxNAorCXZlb3IJcTksIHE5LCBxNQorCXZ0YmwuOAlkOCwge3E4fSwgZDI0CisJdnRibC44CWQ5LCB7cTh9LCBkMjUKKwl2ZW9yCXExMCwgcTEwLCBxNgorCXZ0YmwuOAlkMTAsIHtxOX0sIGQyNAorCXZ0YmwuOAlkMTEsIHtxOX0sIGQyNQorCXZlb3IJcTExLCBxMTEsIHE3CisJdnRibC44CWQxMiwge3ExMH0sIGQyNAorCXZ0YmwuOAlkMTMsIHtxMTB9LCBkMjUKKwl2dGJsLjgJZDE0LCB7cTExfSwgZDI0CisJdnRibC44CWQxNSwge3ExMX0sIGQyNQorLkxlbmNfc2JveDoKKwl2ZW9yCXEyLCBxMiwgcTEKKwl2ZW9yCXE1LCBxNSwgcTYKKwl2ZW9yCXEzLCBxMywgcTAKKwl2ZW9yCXE2LCBxNiwgcTIKKwl2ZW9yCXE1LCBxNSwgcTAKKworCXZlb3IJcTYsIHE2LCBxMworCXZlb3IJcTMsIHEzLCBxNworCXZlb3IJcTcsIHE3LCBxNQorCXZlb3IJcTMsIHEzLCBxNAorCXZlb3IJcTQsIHE0LCBxNQorCisJdmVvcglxMiwgcTIsIHE3CisJdmVvcglxMywgcTMsIHExCisJdmVvcglxMSwgcTEsIHE1CisJdmVvcglxMTEsIHE3LCBxNAorCXZlb3IJcTEwLCBxMSwgcTIKKwl2ZW9yCXE5LCBxNSwgcTMKKwl2ZW9yCXExMywgcTIsIHE0CisJIHZtb3YJcTgsIHExMAorCXZlb3IJcTEyLCBxNiwgcTAKKworCXZvcnIJcTEwLCBxMTAsIHE5CisJdmVvcglxMTUsIHExMSwgcTgKKwl2YW5kCXExNCwgcTExLCBxMTIKKwl2b3JyCXExMSwgcTExLCBxMTIKKwl2ZW9yCXExMiwgcTEyLCBxOQorCXZhbmQJcTgsIHE4LCBxOQorCXZlb3IJcTksIHEzLCBxMAorCXZhbmQJcTE1LCBxMTUsIHExMgorCXZhbmQJcTEzLCBxMTMsIHE5CisJdmVvcglxOSwgcTcsIHExCisJdmVvcglxMTIsIHE1LCBxNgorCXZlb3IJcTExLCBxMTEsIHExMworCXZlb3IJcTEwLCBxMTAsIHExMworCXZhbmQJcTEzLCBxOSwgcTEyCisJdm9ycglxOSwgcTksIHExMgorCXZlb3IJcTExLCBxMTEsIHExNQorCXZlb3IJcTgsIHE4LCBxMTMKKwl2ZW9yCXExMCwgcTEwLCBxMTQKKwl2ZW9yCXE5LCBxOSwgcTE1CisJdmVvcglxOCwgcTgsIHExNAorCXZhbmQJcTEyLCBxMiwgcTMKKwl2ZW9yCXE5LCBxOSwgcTE0CisJdmFuZAlxMTMsIHE0LCBxMAorCXZhbmQJcTE0LCBxMSwgcTUKKwl2b3JyCXExNSwgcTcsIHE2CisJdmVvcglxMTEsIHExMSwgcTEyCisJdmVvcglxOSwgcTksIHExNAorCXZlb3IJcTgsIHE4LCBxMTUKKwl2ZW9yCXExMCwgcTEwLCBxMTMKKworCUAgSW52X0dGMTYgCTAsIAkxLCAJMiwgCTMsIHMwLCBzMSwgczIsIHMzCisKKwlAIG5ldyBzbWFsbGVyIGludmVyc2lvbgorCisJdmFuZAlxMTQsIHExMSwgcTkKKwl2bW92CXExMiwgcTgKKworCXZlb3IJcTEzLCBxMTAsIHExNAorCXZlb3IJcTE1LCBxOCwgcTE0CisJdmVvcglxMTQsIHE4LCBxMTQJQCBxMTQ9cTE1CisKKwl2YnNsCXExMywgcTksIHE4CisJdmJzbAlxMTUsIHExMSwgcTEwCisJdmVvcglxMTEsIHExMSwgcTEwCisKKwl2YnNsCXExMiwgcTEzLCBxMTQKKwl2YnNsCXE4LCBxMTQsIHExMworCisJdmFuZAlxMTQsIHExMiwgcTE1CisJdmVvcglxOSwgcTksIHE4CisKKwl2ZW9yCXExNCwgcTE0LCBxMTEKKwl2ZW9yCXExMiwgcTYsIHEwCisJdmVvcglxOCwgcTUsIHEzCisJdmVvciAJcTEwLCBxMTUsIHExNAorCXZhbmQJcTEwLCBxMTAsIHE2CisJdmVvcglxNiwgcTYsIHE1CisJdmFuZAlxMTEsIHE1LCBxMTUKKwl2YW5kCXE2LCBxNiwgcTE0CisJdmVvcglxNSwgcTExLCBxMTAKKwl2ZW9yCXE2LCBxNiwgcTExCisJdmVvcglxMTUsIHExNSwgcTEzCisJdmVvcglxMTQsIHExNCwgcTkKKwl2ZW9yCXExMSwgcTE1LCBxMTQKKwkgdmVvciAJcTEwLCBxMTMsIHE5CisJdmFuZAlxMTEsIHExMSwgcTEyCisJIHZhbmQJcTEwLCBxMTAsIHEwCisJdmVvcglxMTIsIHExMiwgcTgKKwkgdmVvcglxMCwgcTAsIHEzCisJdmFuZAlxOCwgcTgsIHExNQorCSB2YW5kCXEzLCBxMywgcTEzCisJdmFuZAlxMTIsIHExMiwgcTE0CisJIHZhbmQJcTAsIHEwLCBxOQorCXZlb3IJcTgsIHE4LCBxMTIKKwkgdmVvcglxMCwgcTAsIHEzCisJdmVvcglxMTIsIHExMiwgcTExCisJIHZlb3IJcTMsIHEzLCBxMTAKKwl2ZW9yCXE2LCBxNiwgcTEyCisJdmVvcglxMCwgcTAsIHExMgorCXZlb3IJcTUsIHE1LCBxOAorCXZlb3IJcTMsIHEzLCBxOAorCisJdmVvcglxMTIsIHE3LCBxNAorCXZlb3IJcTgsIHExLCBxMgorCXZlb3IJcTExLCBxMTUsIHExNAorCSB2ZW9yIAlxMTAsIHExMywgcTkKKwl2YW5kCXExMSwgcTExLCBxMTIKKwkgdmFuZAlxMTAsIHExMCwgcTQKKwl2ZW9yCXExMiwgcTEyLCBxOAorCSB2ZW9yCXE0LCBxNCwgcTIKKwl2YW5kCXE4LCBxOCwgcTE1CisJIHZhbmQJcTIsIHEyLCBxMTMKKwl2YW5kCXExMiwgcTEyLCBxMTQKKwkgdmFuZAlxNCwgcTQsIHE5CisJdmVvcglxOCwgcTgsIHExMgorCSB2ZW9yCXE0LCBxNCwgcTIKKwl2ZW9yCXExMiwgcTEyLCBxMTEKKwkgdmVvcglxMiwgcTIsIHExMAorCXZlb3IJcTE1LCBxMTUsIHExMworCXZlb3IJcTE0LCBxMTQsIHE5CisJdmVvciAJcTEwLCBxMTUsIHExNAorCXZhbmQJcTEwLCBxMTAsIHE3CisJdmVvcglxNywgcTcsIHExCisJdmFuZAlxMTEsIHExLCBxMTUKKwl2YW5kCXE3LCBxNywgcTE0CisJdmVvcglxMSwgcTExLCBxMTAKKwl2ZW9yCXE3LCBxNywgcTExCisJdmVvcglxNywgcTcsIHExMgorCXZlb3IJcTQsIHE0LCBxMTIKKwl2ZW9yCXExLCBxMSwgcTgKKwl2ZW9yCXEyLCBxMiwgcTgKKwl2ZW9yCXE3LCBxNywgcTAKKwl2ZW9yCXExLCBxMSwgcTYKKwl2ZW9yCXE2LCBxNiwgcTAKKwl2ZW9yCXE0LCBxNCwgcTcKKwl2ZW9yCXEwLCBxMCwgcTEKKworCXZlb3IJcTEsIHExLCBxNQorCXZlb3IJcTUsIHE1LCBxMgorCXZlb3IJcTIsIHEyLCBxMworCXZlb3IJcTMsIHEzLCBxNQorCXZlb3IJcTQsIHE0LCBxNQorCisJdmVvcglxNiwgcTYsIHEzCisJc3VicwlyNSxyNSwjMQorCWJjYwkuTGVuY19kb25lCisJdmV4dC44CXE4LCBxMCwgcTAsICMxMglAIHgwIDw8PCAzMgorCXZleHQuOAlxOSwgcTEsIHExLCAjMTIKKwkgdmVvcglxMCwgcTAsIHE4CQlAIHgwIF4gKHgwIDw8PCAzMikKKwl2ZXh0LjgJcTEwLCBxNCwgcTQsICMxMgorCSB2ZW9yCXExLCBxMSwgcTkKKwl2ZXh0LjgJcTExLCBxNiwgcTYsICMxMgorCSB2ZW9yCXE0LCBxNCwgcTEwCisJdmV4dC44CXExMiwgcTMsIHEzLCAjMTIKKwkgdmVvcglxNiwgcTYsIHExMQorCXZleHQuOAlxMTMsIHE3LCBxNywgIzEyCisJIHZlb3IJcTMsIHEzLCBxMTIKKwl2ZXh0LjgJcTE0LCBxMiwgcTIsICMxMgorCSB2ZW9yCXE3LCBxNywgcTEzCisJdmV4dC44CXExNSwgcTUsIHE1LCAjMTIKKwkgdmVvcglxMiwgcTIsIHExNAorCisJdmVvcglxOSwgcTksIHEwCisJIHZlb3IJcTUsIHE1LCBxMTUKKwkgdmV4dC44CXEwLCBxMCwgcTAsICM4CQlAICh4MCBeICh4MCA8PDwgMzIpKSA8PDwgNjQpCisJdmVvcglxMTAsIHExMCwgcTEKKwl2ZW9yCXE4LCBxOCwgcTUKKwl2ZW9yCXE5LCBxOSwgcTUKKwkgdmV4dC44CXExLCBxMSwgcTEsICM4CisJdmVvcglxMTMsIHExMywgcTMKKwkgdmVvcglxMCwgcTAsIHE4CisJdmVvcglxMTQsIHExNCwgcTcKKwkgdmVvcglxMSwgcTEsIHE5CisJIHZleHQuOAlxOCwgcTMsIHEzLCAjOAorCXZlb3IJcTEyLCBxMTIsIHE2CisJIHZleHQuOAlxOSwgcTcsIHE3LCAjOAorCXZlb3IJcTE1LCBxMTUsIHEyCisJIHZleHQuOAlxMywgcTYsIHE2LCAjOAorCXZlb3IJcTExLCBxMTEsIHE0CisJIHZleHQuOAlxNywgcTUsIHE1LCAjOAorCXZlb3IJcTEyLCBxMTIsIHE1CisJIHZleHQuOAlxNiwgcTIsIHEyLCAjOAorCXZlb3IJcTExLCBxMTEsIHE1CisJIHZleHQuOAlxMiwgcTQsIHE0LCAjOAorCXZlb3IJcTUsIHE5LCBxMTMKKwl2ZW9yCXE0LCBxOCwgcTEyCisJdmVvcglxMywgcTMsIHExMQorCXZlb3IJcTcsIHE3LCBxMTUKKwl2ZW9yCXE2LCBxNiwgcTE0CisJIEAgdm1vdglxNCwgcTgKKwl2ZW9yCXEyLCBxMiwgcTEwCisJIEAgdm1vdglxNSwgcTkKKwl2bGRtaWEJcjYsIHtxMTJ9CQlAIC5MU1IKKwlpdGUJZXEJCQkJQCBUaHVtYjIgdGhpbmcsIHNhbWl0eSBjaGVjayBpbiBBUk0KKwlhZGRlcQlyNixyNiwjMHgxMAorCWJuZQkuTGVuY19sb29wCisJdmxkbWlhCXI2LCB7cTEyfQkJQCAuTFNSTTAKKwliCS5MZW5jX2xvb3AKKy5hbGlnbgk0CisuTGVuY19kb25lOgorCXZtb3YuaTgJcTgsIzB4NTUJCQlAIGNvbXBvc2UgLkxCUzAKKwl2bW92Lmk4CXE5LCMweDMzCQkJQCBjb21wb3NlIC5MQlMxCisJdnNoci51NjQJcTEwLCBxMiwgIzEKKwkgdnNoci51NjQJcTExLCBxMywgIzEKKwl2ZW9yCQlxMTAsIHExMCwgcTUKKwkgdmVvcgkJcTExLCBxMTEsIHE3CisJdmFuZAkJcTEwLCBxMTAsIHE4CisJIHZhbmQJCXExMSwgcTExLCBxOAorCXZlb3IJCXE1LCBxNSwgcTEwCisJdnNobC51NjQJcTEwLCBxMTAsICMxCisJIHZlb3IJCXE3LCBxNywgcTExCisJIHZzaGwudTY0CXExMSwgcTExLCAjMQorCXZlb3IJCXEyLCBxMiwgcTEwCisJIHZlb3IJCXEzLCBxMywgcTExCisJdnNoci51NjQJcTEwLCBxNCwgIzEKKwkgdnNoci51NjQJcTExLCBxMCwgIzEKKwl2ZW9yCQlxMTAsIHExMCwgcTYKKwkgdmVvcgkJcTExLCBxMTEsIHExCisJdmFuZAkJcTEwLCBxMTAsIHE4CisJIHZhbmQJCXExMSwgcTExLCBxOAorCXZlb3IJCXE2LCBxNiwgcTEwCisJdnNobC51NjQJcTEwLCBxMTAsICMxCisJIHZlb3IJCXExLCBxMSwgcTExCisJIHZzaGwudTY0CXExMSwgcTExLCAjMQorCXZlb3IJCXE0LCBxNCwgcTEwCisJIHZlb3IJCXEwLCBxMCwgcTExCisJdm1vdi5pOAlxOCwjMHgwZgkJCUAgY29tcG9zZSAuTEJTMgorCXZzaHIudTY0CXExMCwgcTcsICMyCisJIHZzaHIudTY0CXExMSwgcTMsICMyCisJdmVvcgkJcTEwLCBxMTAsIHE1CisJIHZlb3IJCXExMSwgcTExLCBxMgorCXZhbmQJCXExMCwgcTEwLCBxOQorCSB2YW5kCQlxMTEsIHExMSwgcTkKKwl2ZW9yCQlxNSwgcTUsIHExMAorCXZzaGwudTY0CXExMCwgcTEwLCAjMgorCSB2ZW9yCQlxMiwgcTIsIHExMQorCSB2c2hsLnU2NAlxMTEsIHExMSwgIzIKKwl2ZW9yCQlxNywgcTcsIHExMAorCSB2ZW9yCQlxMywgcTMsIHExMQorCXZzaHIudTY0CXExMCwgcTEsICMyCisJIHZzaHIudTY0CXExMSwgcTAsICMyCisJdmVvcgkJcTEwLCBxMTAsIHE2CisJIHZlb3IJCXExMSwgcTExLCBxNAorCXZhbmQJCXExMCwgcTEwLCBxOQorCSB2YW5kCQlxMTEsIHExMSwgcTkKKwl2ZW9yCQlxNiwgcTYsIHExMAorCXZzaGwudTY0CXExMCwgcTEwLCAjMgorCSB2ZW9yCQlxNCwgcTQsIHExMQorCSB2c2hsLnU2NAlxMTEsIHExMSwgIzIKKwl2ZW9yCQlxMSwgcTEsIHExMAorCSB2ZW9yCQlxMCwgcTAsIHExMQorCXZzaHIudTY0CXExMCwgcTYsICM0CisJIHZzaHIudTY0CXExMSwgcTQsICM0CisJdmVvcgkJcTEwLCBxMTAsIHE1CisJIHZlb3IJCXExMSwgcTExLCBxMgorCXZhbmQJCXExMCwgcTEwLCBxOAorCSB2YW5kCQlxMTEsIHExMSwgcTgKKwl2ZW9yCQlxNSwgcTUsIHExMAorCXZzaGwudTY0CXExMCwgcTEwLCAjNAorCSB2ZW9yCQlxMiwgcTIsIHExMQorCSB2c2hsLnU2NAlxMTEsIHExMSwgIzQKKwl2ZW9yCQlxNiwgcTYsIHExMAorCSB2ZW9yCQlxNCwgcTQsIHExMQorCXZzaHIudTY0CXExMCwgcTEsICM0CisJIHZzaHIudTY0CXExMSwgcTAsICM0CisJdmVvcgkJcTEwLCBxMTAsIHE3CisJIHZlb3IJCXExMSwgcTExLCBxMworCXZhbmQJCXExMCwgcTEwLCBxOAorCSB2YW5kCQlxMTEsIHExMSwgcTgKKwl2ZW9yCQlxNywgcTcsIHExMAorCXZzaGwudTY0CXExMCwgcTEwLCAjNAorCSB2ZW9yCQlxMywgcTMsIHExMQorCSB2c2hsLnU2NAlxMTEsIHExMSwgIzQKKwl2ZW9yCQlxMSwgcTEsIHExMAorCSB2ZW9yCQlxMCwgcTAsIHExMQorCXZsZG1pYQlyNCwge3E4fQkJCUAgbGFzdCByb3VuZCBrZXkKKwl2ZW9yCXE0LCBxNCwgcTgKKwl2ZW9yCXE2LCBxNiwgcTgKKwl2ZW9yCXEzLCBxMywgcTgKKwl2ZW9yCXE3LCBxNywgcTgKKwl2ZW9yCXEyLCBxMiwgcTgKKwl2ZW9yCXE1LCBxNSwgcTgKKwl2ZW9yCXEwLCBxMCwgcTgKKwl2ZW9yCXExLCBxMSwgcTgKKwlieAlscgorLnNpemUJX2JzYWVzX2VuY3J5cHQ4LC4tX2JzYWVzX2VuY3J5cHQ4CisudHlwZQlfYnNhZXNfa2V5X2NvbnZlcnQsJWZ1bmN0aW9uCisuYWxpZ24JNAorX2JzYWVzX2tleV9jb252ZXJ0OgorCWFkcglyNixfYnNhZXNfa2V5X2NvbnZlcnQKKwl2bGQxLjgJe3E3fSwgIFtyNF0hCQlAIGxvYWQgcm91bmQgMCBrZXkKKwlzdWIJcjYscjYsI19ic2Flc19rZXlfY29udmVydC0uTE0wCisJdmxkMS44CXtxMTV9LCBbcjRdIQkJQCBsb2FkIHJvdW5kIDEga2V5CisKKwl2bW92Lmk4CXE4LCAgIzB4MDEJCQlAIGJpdCBtYXNrcworCXZtb3YuaTgJcTksICAjMHgwMgorCXZtb3YuaTgJcTEwLCAjMHgwNAorCXZtb3YuaTgJcTExLCAjMHgwOAorCXZtb3YuaTgJcTEyLCAjMHgxMAorCXZtb3YuaTgJcTEzLCAjMHgyMAorCXZsZG1pYQlyNiwge3ExNH0JCUAgLkxNMAorCisjaWZkZWYgX19BUk1FTF9fCisJdnJldjMyLjgJcTcsICBxNworCXZyZXYzMi44CXExNSwgcTE1CisjZW5kaWYKKwlzdWIJcjUscjUsIzEKKwl2c3RtaWEJcjEyISwge3E3fQkJQCBzYXZlIHJvdW5kIDAga2V5CisJYgkuTGtleV9sb29wCisKKy5hbGlnbgk0CisuTGtleV9sb29wOgorCXZ0YmwuOAlkMTQse3ExNX0sZDI4CisJdnRibC44CWQxNSx7cTE1fSxkMjkKKwl2bW92Lmk4CXE2LCAgIzB4NDAKKwl2bW92Lmk4CXExNSwgIzB4ODAKKworCXZ0c3QuOAlxMCwgcTcsIHE4CisJdnRzdC44CXExLCBxNywgcTkKKwl2dHN0LjgJcTIsIHE3LCBxMTAKKwl2dHN0LjgJcTMsIHE3LCBxMTEKKwl2dHN0LjgJcTQsIHE3LCBxMTIKKwl2dHN0LjgJcTUsIHE3LCBxMTMKKwl2dHN0LjgJcTYsIHE3LCBxNgorCXZ0c3QuOAlxNywgcTcsIHExNQorCXZsZDEuOAl7cTE1fSwgW3I0XSEJCUAgbG9hZCBuZXh0IHJvdW5kIGtleQorCXZtdm4JcTAsIHEwCQlAICJwbm90IgorCXZtdm4JcTEsIHExCisJdm12bglxNSwgcTUKKwl2bXZuCXE2LCBxNgorI2lmZGVmIF9fQVJNRUxfXworCXZyZXYzMi44CXExNSwgcTE1CisjZW5kaWYKKwlzdWJzCXI1LHI1LCMxCisJdnN0bWlhCXIxMiEse3EwLXE3fQkJQCB3cml0ZSBiaXQtc2xpY2VkIHJvdW5kIGtleQorCWJuZQkuTGtleV9sb29wCisKKwl2bW92Lmk4CXE3LCMweDYzCQkJQCBjb21wb3NlIC5MNjMKKwlAIGRvbid0IHNhdmUgbGFzdCByb3VuZCBrZXkKKwlieAlscgorLnNpemUJX2JzYWVzX2tleV9jb252ZXJ0LC4tX2JzYWVzX2tleV9jb252ZXJ0CisuZXh0ZXJuIEFFU19jYmNfZW5jcnlwdAorLmV4dGVybiBBRVNfZGVjcnlwdAorCisuZ2xvYmFsCWJzYWVzX2NiY19lbmNyeXB0CisudHlwZQlic2Flc19jYmNfZW5jcnlwdCwlZnVuY3Rpb24KKy5hbGlnbgk1Citic2Flc19jYmNfZW5jcnlwdDoKKyNpZm5kZWYJX19LRVJORUxfXworCWNtcAlyMiwgIzEyOAorI2lmbmRlZglfX3RodW1iX18KKwlibG8JQUVTX2NiY19lbmNyeXB0CisjZWxzZQorCWJocwkxZgorCWIJQUVTX2NiY19lbmNyeXB0CisxOgorI2VuZGlmCisjZW5kaWYKKworCUAgaXQgaXMgdXAgdG8gdGhlIGNhbGxlciB0byBtYWtlIHN1cmUgd2UgYXJlIGNhbGxlZCB3aXRoIGVuYyA9PSAwCisKKwltb3YJaXAsIHNwCisJc3RtZGIJc3AhLCB7cjQtcjEwLCBscn0KKwlWRlBfQUJJX1BVU0gKKwlsZHIJcjgsIFtpcF0JCQlAIElWIGlzIDFzdCBhcmcgb24gdGhlIHN0YWNrCisJbW92CXIyLCByMiwgbHNyIzQJCUAgbGVuIGluIDE2IGJ5dGUgYmxvY2tzCisJc3ViCXNwLCAjMHgxMAkJCUAgc2NyYXRjaCBzcGFjZSB0byBjYXJyeSBvdmVyIHRoZSBJVgorCW1vdglyOSwgc3AJCQkJQCBzYXZlIHNwCisKKwlsZHIJcjEwLCBbcjMsICMyNDBdCQlAIGdldCAjIG9mIHJvdW5kcworI2lmbmRlZglCU0FFU19BU01fRVhURU5ERURfS0VZCisJQCBhbGxvY2F0ZSB0aGUga2V5IHNjaGVkdWxlIG9uIHRoZSBzdGFjaworCXN1YglyMTIsIHNwLCByMTAsIGxzbCM3CQlAIDEyOCBieXRlcyBwZXIgaW5uZXIgcm91bmQga2V5CisJYWRkCXIxMiwgIzk2CQkJQCBzaWZ6ZSBvZiBiaXQtc2xpY2VzIGtleSBzY2hlZHVsZQorCisJQCBwb3B1bGF0ZSB0aGUga2V5IHNjaGVkdWxlCisJbW92CXI0LCByMwkJCUAgcGFzcyBrZXkKKwltb3YJcjUsIHIxMAkJCUAgcGFzcyAjIG9mIHJvdW5kcworCW1vdglzcCwgcjEyCQkJCUAgc3AgaXMgc3AKKwlibAlfYnNhZXNfa2V5X2NvbnZlcnQKKwl2bGRtaWEJc3AsIHtxNn0KKwl2c3RtaWEJcjEyLCAge3ExNX0JCUAgc2F2ZSBsYXN0IHJvdW5kIGtleQorCXZlb3IJcTcsIHE3LCBxNglAIGZpeCB1cCByb3VuZCAwIGtleQorCXZzdG1pYQlzcCwge3E3fQorI2Vsc2UKKwlsZHIJcjEyLCBbcjMsICMyNDRdCisJZW9ycwlyMTIsICMxCisJYmVxCTBmCisKKwlAIHBvcHVsYXRlIHRoZSBrZXkgc2NoZWR1bGUKKwlzdHIJcjEyLCBbcjMsICMyNDRdCisJbW92CXI0LCByMwkJCUAgcGFzcyBrZXkKKwltb3YJcjUsIHIxMAkJCUAgcGFzcyAjIG9mIHJvdW5kcworCWFkZAlyMTIsIHIzLCAjMjQ4CQkJQCBwYXNzIGtleSBzY2hlZHVsZQorCWJsCV9ic2Flc19rZXlfY29udmVydAorCWFkZAlyNCwgcjMsICMyNDgKKwl2bGRtaWEJcjQsIHtxNn0KKwl2c3RtaWEJcjEyLCB7cTE1fQkJCUAgc2F2ZSBsYXN0IHJvdW5kIGtleQorCXZlb3IJcTcsIHE3LCBxNglAIGZpeCB1cCByb3VuZCAwIGtleQorCXZzdG1pYQlyNCwge3E3fQorCisuYWxpZ24JMgorMDoKKyNlbmRpZgorCisJdmxkMS44CXtxMTV9LCBbcjhdCQlAIGxvYWQgSVYKKwliCS5MY2JjX2RlY19sb29wCisKKy5hbGlnbgk0CisuTGNiY19kZWNfbG9vcDoKKwlzdWJzCXIyLCByMiwgIzB4OAorCWJtaQkuTGNiY19kZWNfbG9vcF9maW5pc2gKKworCXZsZDEuOAl7cTAtcTF9LCBbcjBdIQlAIGxvYWQgaW5wdXQKKwl2bGQxLjgJe3EyLXEzfSwgW3IwXSEKKyNpZm5kZWYJQlNBRVNfQVNNX0VYVEVOREVEX0tFWQorCW1vdglyNCwgc3AJCQlAIHBhc3MgdGhlIGtleQorI2Vsc2UKKwlhZGQJcjQsIHIzLCAjMjQ4CisjZW5kaWYKKwl2bGQxLjgJe3E0LXE1fSwgW3IwXSEKKwltb3YJcjUsIHIxMAorCXZsZDEuOAl7cTYtcTd9LCBbcjBdCisJc3ViCXIwLCByMCwgIzB4NjAKKwl2c3RtaWEJcjksIHtxMTV9CQkJQCBwdXQgYXNpZGUgSVYKKworCWJsCV9ic2Flc19kZWNyeXB0OAorCisJdmxkbWlhCXI5LCB7cTE0fQkJCUAgcmVsb2FkIElWCisJdmxkMS44CXtxOC1xOX0sIFtyMF0hCUAgcmVsb2FkIGlucHV0CisJdmVvcglxMCwgcTAsIHExNAlAIF49IElWCisJdmxkMS44CXtxMTAtcTExfSwgW3IwXSEKKwl2ZW9yCXExLCBxMSwgcTgKKwl2ZW9yCXE2LCBxNiwgcTkKKwl2bGQxLjgJe3ExMi1xMTN9LCBbcjBdIQorCXZlb3IJcTQsIHE0LCBxMTAKKwl2ZW9yCXEyLCBxMiwgcTExCisJdmxkMS44CXtxMTQtcTE1fSwgW3IwXSEKKwl2ZW9yCXE3LCBxNywgcTEyCisJdnN0MS44CXtxMC1xMX0sIFtyMV0hCUAgd3JpdGUgb3V0cHV0CisJdmVvcglxMywgcTMsIHExMworCXZzdDEuOAl7cTZ9LCBbcjFdIQorCXZlb3IJcTUsIHE1LCBxMTQKKwl2c3QxLjgJe3E0fSwgW3IxXSEKKwl2c3QxLjgJe3EyfSwgW3IxXSEKKwl2c3QxLjgJe3E3fSwgW3IxXSEKKwl2c3QxLjgJe3EzfSwgW3IxXSEKKwl2c3QxLjgJe3E1fSwgW3IxXSEKKworCWIJLkxjYmNfZGVjX2xvb3AKKworLkxjYmNfZGVjX2xvb3BfZmluaXNoOgorCWFkZHMJcjIsIHIyLCAjOAorCWJlcQkuTGNiY19kZWNfZG9uZQorCisJdmxkMS44CXtxMH0sIFtyMF0hCQlAIGxvYWQgaW5wdXQKKwljbXAJcjIsICMyCisJYmxvCS5MY2JjX2RlY19vbmUKKwl2bGQxLjgJe3ExfSwgW3IwXSEKKyNpZm5kZWYJQlNBRVNfQVNNX0VYVEVOREVEX0tFWQorCW1vdglyNCwgc3AJCQlAIHBhc3MgdGhlIGtleQorI2Vsc2UKKwlhZGQJcjQsIHIzLCAjMjQ4CisjZW5kaWYKKwltb3YJcjUsIHIxMAorCXZzdG1pYQlyOSwge3ExNX0JCQlAIHB1dCBhc2lkZSBJVgorCWJlcQkuTGNiY19kZWNfdHdvCisJdmxkMS44CXtxMn0sIFtyMF0hCisJY21wCXIyLCAjNAorCWJsbwkuTGNiY19kZWNfdGhyZWUKKwl2bGQxLjgJe3EzfSwgW3IwXSEKKwliZXEJLkxjYmNfZGVjX2ZvdXIKKwl2bGQxLjgJe3E0fSwgW3IwXSEKKwljbXAJcjIsICM2CisJYmxvCS5MY2JjX2RlY19maXZlCisJdmxkMS44CXtxNX0sIFtyMF0hCisJYmVxCS5MY2JjX2RlY19zaXgKKwl2bGQxLjgJe3E2fSwgW3IwXSEKKwlzdWIJcjAsIHIwLCAjMHg3MAorCisJYmwJX2JzYWVzX2RlY3J5cHQ4CisKKwl2bGRtaWEJcjksIHtxMTR9CQkJQCByZWxvYWQgSVYKKwl2bGQxLjgJe3E4LXE5fSwgW3IwXSEJQCByZWxvYWQgaW5wdXQKKwl2ZW9yCXEwLCBxMCwgcTE0CUAgXj0gSVYKKwl2bGQxLjgJe3ExMC1xMTF9LCBbcjBdIQorCXZlb3IJcTEsIHExLCBxOAorCXZlb3IJcTYsIHE2LCBxOQorCXZsZDEuOAl7cTEyLXExM30sIFtyMF0hCisJdmVvcglxNCwgcTQsIHExMAorCXZlb3IJcTIsIHEyLCBxMTEKKwl2bGQxLjgJe3ExNX0sIFtyMF0hCisJdmVvcglxNywgcTcsIHExMgorCXZzdDEuOAl7cTAtcTF9LCBbcjFdIQlAIHdyaXRlIG91dHB1dAorCXZlb3IJcTMsIHEzLCBxMTMKKwl2c3QxLjgJe3E2fSwgW3IxXSEKKwl2c3QxLjgJe3E0fSwgW3IxXSEKKwl2c3QxLjgJe3EyfSwgW3IxXSEKKwl2c3QxLjgJe3E3fSwgW3IxXSEKKwl2c3QxLjgJe3EzfSwgW3IxXSEKKwliCS5MY2JjX2RlY19kb25lCisuYWxpZ24JNAorLkxjYmNfZGVjX3NpeDoKKwlzdWIJcjAsIHIwLCAjMHg2MAorCWJsCV9ic2Flc19kZWNyeXB0OAorCXZsZG1pYQlyOSx7cTE0fQkJCUAgcmVsb2FkIElWCisJdmxkMS44CXtxOC1xOX0sIFtyMF0hCUAgcmVsb2FkIGlucHV0CisJdmVvcglxMCwgcTAsIHExNAlAIF49IElWCisJdmxkMS44CXtxMTAtcTExfSwgW3IwXSEKKwl2ZW9yCXExLCBxMSwgcTgKKwl2ZW9yCXE2LCBxNiwgcTkKKwl2bGQxLjgJe3ExMn0sIFtyMF0hCisJdmVvcglxNCwgcTQsIHExMAorCXZlb3IJcTIsIHEyLCBxMTEKKwl2bGQxLjgJe3ExNX0sIFtyMF0hCisJdmVvcglxNywgcTcsIHExMgorCXZzdDEuOAl7cTAtcTF9LCBbcjFdIQlAIHdyaXRlIG91dHB1dAorCXZzdDEuOAl7cTZ9LCBbcjFdIQorCXZzdDEuOAl7cTR9LCBbcjFdIQorCXZzdDEuOAl7cTJ9LCBbcjFdIQorCXZzdDEuOAl7cTd9LCBbcjFdIQorCWIJLkxjYmNfZGVjX2RvbmUKKy5hbGlnbgk0CisuTGNiY19kZWNfZml2ZToKKwlzdWIJcjAsIHIwLCAjMHg1MAorCWJsCV9ic2Flc19kZWNyeXB0OAorCXZsZG1pYQlyOSwge3ExNH0JCQlAIHJlbG9hZCBJVgorCXZsZDEuOAl7cTgtcTl9LCBbcjBdIQlAIHJlbG9hZCBpbnB1dAorCXZlb3IJcTAsIHEwLCBxMTQJQCBePSBJVgorCXZsZDEuOAl7cTEwLXExMX0sIFtyMF0hCisJdmVvcglxMSwgcTEsIHE4CisJdmVvcglxNiwgcTYsIHE5CisJdmxkMS44CXtxMTV9LCBbcjBdIQorCXZlb3IJcTQsIHE0LCBxMTAKKwl2c3QxLjgJe3EwLXExfSwgW3IxXSEJQCB3cml0ZSBvdXRwdXQKKwl2ZW9yCXEyLCBxMiwgcTExCisJdnN0MS44CXtxNn0sIFtyMV0hCisJdnN0MS44CXtxNH0sIFtyMV0hCisJdnN0MS44CXtxMn0sIFtyMV0hCisJYgkuTGNiY19kZWNfZG9uZQorLmFsaWduCTQKKy5MY2JjX2RlY19mb3VyOgorCXN1YglyMCwgcjAsICMweDQwCisJYmwJX2JzYWVzX2RlY3J5cHQ4CisJdmxkbWlhCXI5LCB7cTE0fQkJCUAgcmVsb2FkIElWCisJdmxkMS44CXtxOC1xOX0sIFtyMF0hCUAgcmVsb2FkIGlucHV0CisJdmVvcglxMCwgcTAsIHExNAlAIF49IElWCisJdmxkMS44CXtxMTB9LCBbcjBdIQorCXZlb3IJcTEsIHExLCBxOAorCXZlb3IJcTYsIHE2LCBxOQorCXZsZDEuOAl7cTE1fSwgW3IwXSEKKwl2ZW9yCXE0LCBxNCwgcTEwCisJdnN0MS44CXtxMC1xMX0sIFtyMV0hCUAgd3JpdGUgb3V0cHV0CisJdnN0MS44CXtxNn0sIFtyMV0hCisJdnN0MS44CXtxNH0sIFtyMV0hCisJYgkuTGNiY19kZWNfZG9uZQorLmFsaWduCTQKKy5MY2JjX2RlY190aHJlZToKKwlzdWIJcjAsIHIwLCAjMHgzMAorCWJsCV9ic2Flc19kZWNyeXB0OAorCXZsZG1pYQlyOSwge3ExNH0JCQlAIHJlbG9hZCBJVgorCXZsZDEuOAl7cTgtcTl9LCBbcjBdIQlAIHJlbG9hZCBpbnB1dAorCXZlb3IJcTAsIHEwLCBxMTQJQCBePSBJVgorCXZsZDEuOAl7cTE1fSwgW3IwXSEKKwl2ZW9yCXExLCBxMSwgcTgKKwl2ZW9yCXE2LCBxNiwgcTkKKwl2c3QxLjgJe3EwLXExfSwgW3IxXSEJQCB3cml0ZSBvdXRwdXQKKwl2c3QxLjgJe3E2fSwgW3IxXSEKKwliCS5MY2JjX2RlY19kb25lCisuYWxpZ24JNAorLkxjYmNfZGVjX3R3bzoKKwlzdWIJcjAsIHIwLCAjMHgyMAorCWJsCV9ic2Flc19kZWNyeXB0OAorCXZsZG1pYQlyOSwge3ExNH0JCQlAIHJlbG9hZCBJVgorCXZsZDEuOAl7cTh9LCBbcjBdIQkJQCByZWxvYWQgaW5wdXQKKwl2ZW9yCXEwLCBxMCwgcTE0CUAgXj0gSVYKKwl2bGQxLjgJe3ExNX0sIFtyMF0hCQlAIHJlbG9hZCBpbnB1dAorCXZlb3IJcTEsIHExLCBxOAorCXZzdDEuOAl7cTAtcTF9LCBbcjFdIQlAIHdyaXRlIG91dHB1dAorCWIJLkxjYmNfZGVjX2RvbmUKKy5hbGlnbgk0CisuTGNiY19kZWNfb25lOgorCXN1YglyMCwgcjAsICMweDEwCisJbW92CXIxMCwgcjEJCQlAIHNhdmUgb3JpZ2luYWwgb3V0IHBvaW50ZXIKKwltb3YJcjEsIHI5CQkJQCB1c2UgdGhlIGl2IHNjcmF0Y2ggc3BhY2UgYXMgb3V0IGJ1ZmZlcgorCW1vdglyMiwgcjMKKwl2bW92CXE0LHExNQkJQCBqdXN0IGluIGNhc2UgZW5zdXJlIHRoYXQgSVYKKwl2bW92CXE1LHEwCQkJQCBhbmQgaW5wdXQgYXJlIHByZXNlcnZlZAorCWJsCUFFU19kZWNyeXB0CisJdmxkMS44CXtxMH0sIFtyOSw6NjRdCQlAIGxvYWQgcmVzdWx0CisJdmVvcglxMCwgcTAsIHE0CUAgXj0gSVYKKwl2bW92CXExNSwgcTUJCUAgcTUgaG9sZHMgaW5wdXQKKwl2c3QxLjgJe3EwfSwgW3IxMF0JCUAgd3JpdGUgb3V0cHV0CisKKy5MY2JjX2RlY19kb25lOgorI2lmbmRlZglCU0FFU19BU01fRVhURU5ERURfS0VZCisJdm1vdi5pMzIJcTAsICMwCisJdm1vdi5pMzIJcTEsICMwCisuTGNiY19kZWNfYnplcm86CQkJCUAgd2lwZSBrZXkgc2NoZWR1bGUgW2lmIGFueV0KKwl2c3RtaWEJCXNwISwge3EwLXExfQorCWNtcAkJc3AsIHI5CisJYm5lCQkuTGNiY19kZWNfYnplcm8KKyNlbmRpZgorCisJbW92CXNwLCByOQorCWFkZAlzcCwgIzB4MTAJCQlAIGFkZCBzcCxyOSwjMHgxMCBpcyBubyBnb29kIGZvciB0aHVtYgorCXZzdDEuOAl7cTE1fSwgW3I4XQkJQCByZXR1cm4gSVYKKwlWRlBfQUJJX1BPUAorCWxkbWlhCXNwISwge3I0LXIxMCwgcGN9Cisuc2l6ZQlic2Flc19jYmNfZW5jcnlwdCwuLWJzYWVzX2NiY19lbmNyeXB0CisuZXh0ZXJuCUFFU19lbmNyeXB0CisuZ2xvYmFsCWJzYWVzX2N0cjMyX2VuY3J5cHRfYmxvY2tzCisudHlwZQlic2Flc19jdHIzMl9lbmNyeXB0X2Jsb2NrcywlZnVuY3Rpb24KKy5hbGlnbgk1Citic2Flc19jdHIzMl9lbmNyeXB0X2Jsb2NrczoKKwljbXAJcjIsICM4CQkJQCB1c2UgcGxhaW4gQUVTIGZvcgorCWJsbwkuTGN0cl9lbmNfc2hvcnQJCQlAIHNtYWxsIHNpemVzCisKKwltb3YJaXAsIHNwCisJc3RtZGIJc3AhLCB7cjQtcjEwLCBscn0KKwlWRlBfQUJJX1BVU0gKKwlsZHIJcjgsIFtpcF0JCQlAIGN0ciBpcyAxc3QgYXJnIG9uIHRoZSBzdGFjaworCXN1YglzcCwgc3AsICMweDEwCQkJQCBzY3JhdGNoIHNwYWNlIHRvIGNhcnJ5IG92ZXIgdGhlIGN0cgorCW1vdglyOSwgc3AJCQkJQCBzYXZlIHNwCisKKwlsZHIJcjEwLCBbcjMsICMyNDBdCQlAIGdldCAjIG9mIHJvdW5kcworI2lmbmRlZglCU0FFU19BU01fRVhURU5ERURfS0VZCisJQCBhbGxvY2F0ZSB0aGUga2V5IHNjaGVkdWxlIG9uIHRoZSBzdGFjaworCXN1YglyMTIsIHNwLCByMTAsIGxzbCM3CQlAIDEyOCBieXRlcyBwZXIgaW5uZXIgcm91bmQga2V5CisJYWRkCXIxMiwgIzk2CQkJQCBzaXplIG9mIGJpdC1zbGljZWQga2V5IHNjaGVkdWxlCisKKwlAIHBvcHVsYXRlIHRoZSBrZXkgc2NoZWR1bGUKKwltb3YJcjQsIHIzCQkJQCBwYXNzIGtleQorCW1vdglyNSwgcjEwCQkJQCBwYXNzICMgb2Ygcm91bmRzCisJbW92CXNwLCByMTIJCQkJQCBzcCBpcyBzcAorCWJsCV9ic2Flc19rZXlfY29udmVydAorCXZlb3IJcTcscTcscTE1CUAgZml4IHVwIGxhc3Qgcm91bmQga2V5CisJdnN0bWlhCXIxMiwge3E3fQkJCUAgc2F2ZSBsYXN0IHJvdW5kIGtleQorCisJdmxkMS44CXtxMH0sIFtyOF0JCUAgbG9hZCBjb3VudGVyCisJYWRkCXI4LCByNiwgIy5MUkVWTTBTUi0uTE0wCUAgYm9ycm93IHI4CisJdmxkbWlhCXNwLCB7cTR9CQlAIGxvYWQgcm91bmQwIGtleQorI2Vsc2UKKwlsZHIJcjEyLCBbcjMsICMyNDRdCisJZW9ycwlyMTIsICMxCisJYmVxCTBmCisKKwlAIHBvcHVsYXRlIHRoZSBrZXkgc2NoZWR1bGUKKwlzdHIJcjEyLCBbcjMsICMyNDRdCisJbW92CXI0LCByMwkJCUAgcGFzcyBrZXkKKwltb3YJcjUsIHIxMAkJCUAgcGFzcyAjIG9mIHJvdW5kcworCWFkZAlyMTIsIHIzLCAjMjQ4CQkJQCBwYXNzIGtleSBzY2hlZHVsZQorCWJsCV9ic2Flc19rZXlfY29udmVydAorCXZlb3IJcTcscTcscTE1CUAgZml4IHVwIGxhc3Qgcm91bmQga2V5CisJdnN0bWlhCXIxMiwge3E3fQkJCUAgc2F2ZSBsYXN0IHJvdW5kIGtleQorCisuYWxpZ24JMgorMDoJYWRkCXIxMiwgcjMsICMyNDgKKwl2bGQxLjgJe3EwfSwgW3I4XQkJQCBsb2FkIGNvdW50ZXIKKwlhZHJsCXI4LCAuTFJFVk0wU1IJCQlAIGJvcnJvdyByOAorCXZsZG1pYQlyMTIsIHtxNH0JCQlAIGxvYWQgcm91bmQwIGtleQorCXN1YglzcCwgIzB4MTAJCQlAIHBsYWNlIGZvciBhZGp1c3RlZCByb3VuZDAga2V5CisjZW5kaWYKKworCXZtb3YuaTMyCXE4LCMxCQlAIGNvbXBvc2UgMTw8OTYKKwl2ZW9yCQlxOSxxOSxxOQorCXZyZXYzMi44CXEwLHEwCisJdmV4dC44CQlxOCxxOSxxOCwjNAorCXZyZXYzMi44CXE0LHE0CisJdmFkZC51MzIJcTkscTgscTgJQCBjb21wb3NlIDI8PDk2CisJdnN0bWlhCXNwLCB7cTR9CQlAIHNhdmUgYWRqdXN0ZWQgcm91bmQwIGtleQorCWIJLkxjdHJfZW5jX2xvb3AKKworLmFsaWduCTQKKy5MY3RyX2VuY19sb29wOgorCXZhZGQudTMyCXExMCwgcTgsIHE5CUAgY29tcG9zZSAzPDw5NgorCXZhZGQudTMyCXExLCBxMCwgcTgJQCArMQorCXZhZGQudTMyCXEyLCBxMCwgcTkJQCArMgorCXZhZGQudTMyCXEzLCBxMCwgcTEwCUAgKzMKKwl2YWRkLnUzMglxNCwgcTEsIHExMAorCXZhZGQudTMyCXE1LCBxMiwgcTEwCisJdmFkZC51MzIJcTYsIHEzLCBxMTAKKwl2YWRkLnUzMglxNywgcTQsIHExMAorCXZhZGQudTMyCXExMCwgcTUsIHExMAlAIG5leHQgY291bnRlcgorCisJQCBCb3Jyb3cgcHJvbG9ndWUgZnJvbSBfYnNhZXNfZW5jcnlwdDggdG8gdXNlIHRoZSBvcHBvcnR1bml0eQorCUAgdG8gZmxpcCBieXRlIG9yZGVyIGluIDMyLWJpdCBjb3VudGVyCisKKwl2bGRtaWEJCXNwLCB7cTl9CQlAIGxvYWQgcm91bmQwIGtleQorI2lmbmRlZglCU0FFU19BU01fRVhURU5ERURfS0VZCisJYWRkCQlyNCwgc3AsICMweDEwCQlAIHBhc3MgbmV4dCByb3VuZCBrZXkKKyNlbHNlCisJYWRkCQlyNCwgcjMsICMyNjQKKyNlbmRpZgorCXZsZG1pYQkJcjgsIHtxOH0JCQlAIC5MUkVWTTBTUgorCW1vdgkJcjUsIHIxMAkJCUAgcGFzcyByb3VuZHMKKwl2c3RtaWEJCXI5LCB7cTEwfQkJCUAgc2F2ZSBuZXh0IGNvdW50ZXIKKwlzdWIJCXI2LCByOCwgIy5MUkVWTTBTUi0uTFNSCUAgcGFzcyBjb25zdGFudHMKKworCWJsCQlfYnNhZXNfZW5jcnlwdDhfYWx0CisKKwlzdWJzCQlyMiwgcjIsICM4CisJYmxvCQkuTGN0cl9lbmNfbG9vcF9kb25lCisKKwl2bGQxLjgJCXtxOC1xOX0sIFtyMF0hCUAgbG9hZCBpbnB1dAorCXZsZDEuOAkJe3ExMC1xMTF9LCBbcjBdIQorCXZlb3IJCXEwLCBxOAorCXZlb3IJCXExLCBxOQorCXZsZDEuOAkJe3ExMi1xMTN9LCBbcjBdIQorCXZlb3IJCXE0LCBxMTAKKwl2ZW9yCQlxNiwgcTExCisJdmxkMS44CQl7cTE0LXExNX0sIFtyMF0hCisJdmVvcgkJcTMsIHExMgorCXZzdDEuOAkJe3EwLXExfSwgW3IxXSEJQCB3cml0ZSBvdXRwdXQKKwl2ZW9yCQlxNywgcTEzCisJdmVvcgkJcTIsIHExNAorCXZzdDEuOAkJe3E0fSwgW3IxXSEKKwl2ZW9yCQlxNSwgcTE1CisJdnN0MS44CQl7cTZ9LCBbcjFdIQorCXZtb3YuaTMyCXE4LCAjMQkJCUAgY29tcG9zZSAxPDw5NgorCXZzdDEuOAkJe3EzfSwgW3IxXSEKKwl2ZW9yCQlxOSwgcTksIHE5CisJdnN0MS44CQl7cTd9LCBbcjFdIQorCXZleHQuOAkJcTgsIHE5LCBxOCwgIzQKKwl2c3QxLjgJCXtxMn0sIFtyMV0hCisJdmFkZC51MzIJcTkscTgscTgJCUAgY29tcG9zZSAyPDw5NgorCXZzdDEuOAkJe3E1fSwgW3IxXSEKKwl2bGRtaWEJCXI5LCB7cTB9CQkJQCBsb2FkIGNvdW50ZXIKKworCWJuZQkJLkxjdHJfZW5jX2xvb3AKKwliCQkuTGN0cl9lbmNfZG9uZQorCisuYWxpZ24JNAorLkxjdHJfZW5jX2xvb3BfZG9uZToKKwlhZGQJCXIyLCByMiwgIzgKKwl2bGQxLjgJCXtxOH0sIFtyMF0hCUAgbG9hZCBpbnB1dAorCXZlb3IJCXEwLCBxOAorCXZzdDEuOAkJe3EwfSwgW3IxXSEJQCB3cml0ZSBvdXRwdXQKKwljbXAJCXIyLCAjMgorCWJsbwkJLkxjdHJfZW5jX2RvbmUKKwl2bGQxLjgJCXtxOX0sIFtyMF0hCisJdmVvcgkJcTEsIHE5CisJdnN0MS44CQl7cTF9LCBbcjFdIQorCWJlcQkJLkxjdHJfZW5jX2RvbmUKKwl2bGQxLjgJCXtxMTB9LCBbcjBdIQorCXZlb3IJCXE0LCBxMTAKKwl2c3QxLjgJCXtxNH0sIFtyMV0hCisJY21wCQlyMiwgIzQKKwlibG8JCS5MY3RyX2VuY19kb25lCisJdmxkMS44CQl7cTExfSwgW3IwXSEKKwl2ZW9yCQlxNiwgcTExCisJdnN0MS44CQl7cTZ9LCBbcjFdIQorCWJlcQkJLkxjdHJfZW5jX2RvbmUKKwl2bGQxLjgJCXtxMTJ9LCBbcjBdIQorCXZlb3IJCXEzLCBxMTIKKwl2c3QxLjgJCXtxM30sIFtyMV0hCisJY21wCQlyMiwgIzYKKwlibG8JCS5MY3RyX2VuY19kb25lCisJdmxkMS44CQl7cTEzfSwgW3IwXSEKKwl2ZW9yCQlxNywgcTEzCisJdnN0MS44CQl7cTd9LCBbcjFdIQorCWJlcQkJLkxjdHJfZW5jX2RvbmUKKwl2bGQxLjgJCXtxMTR9LCBbcjBdCisJdmVvcgkJcTIsIHExNAorCXZzdDEuOAkJe3EyfSwgW3IxXSEKKworLkxjdHJfZW5jX2RvbmU6CisJdm1vdi5pMzIJcTAsICMwCisJdm1vdi5pMzIJcTEsICMwCisjaWZuZGVmCUJTQUVTX0FTTV9FWFRFTkRFRF9LRVkKKy5MY3RyX2VuY19iemVybzoJCQlAIHdpcGUga2V5IHNjaGVkdWxlIFtpZiBhbnldCisJdnN0bWlhCQlzcCEsIHtxMC1xMX0KKwljbXAJCXNwLCByOQorCWJuZQkJLkxjdHJfZW5jX2J6ZXJvCisjZWxzZQorCXZzdG1pYQkJc3AsIHtxMC1xMX0KKyNlbmRpZgorCisJbW92CXNwLCByOQorCWFkZAlzcCwgIzB4MTAJCUAgYWRkIHNwLHI5LCMweDEwIGlzIG5vIGdvb2QgZm9yIHRodW1iCisJVkZQX0FCSV9QT1AKKwlsZG1pYQlzcCEsIHtyNC1yMTAsIHBjfQlAIHJldHVybgorCisuYWxpZ24JNAorLkxjdHJfZW5jX3Nob3J0OgorCWxkcglpcCwgW3NwXQkJQCBjdHIgcG9pbnRlciBpcyBwYXNzZWQgb24gc3RhY2sKKwlzdG1kYglzcCEsIHtyNC1yOCwgbHJ9CisKKwltb3YJcjQsIHIwCQlAIGNvcHkgYXJndW1lbnRzCisJbW92CXI1LCByMQorCW1vdglyNiwgcjIKKwltb3YJcjcsIHIzCisJbGRyCXI4LCBbaXAsICMxMl0JCUAgbG9hZCBjb3VudGVyIExTVworCXZsZDEuOAl7cTF9LCBbaXBdCQlAIGxvYWQgd2hvbGUgY291bnRlciB2YWx1ZQorI2lmZGVmIF9fQVJNRUxfXworCXJldglyOCwgcjgKKyNlbmRpZgorCXN1YglzcCwgc3AsICMweDEwCisJdnN0MS44CXtxMX0sIFtzcCw6NjRdCUAgY29weSBjb3VudGVyIHZhbHVlCisJc3ViCXNwLCBzcCwgIzB4MTAKKworLkxjdHJfZW5jX3Nob3J0X2xvb3A6CisJYWRkCXIwLCBzcCwgIzB4MTAJCUAgaW5wdXQgY291bnRlciB2YWx1ZQorCW1vdglyMSwgc3AJCQlAIG91dHB1dCBvbiB0aGUgc3RhY2sKKwltb3YJcjIsIHI3CQkJQCBrZXkKKworCWJsCUFFU19lbmNyeXB0CisKKwl2bGQxLjgJe3EwfSwgW3I0XSEJQCBsb2FkIGlucHV0CisJdmxkMS44CXtxMX0sIFtzcCw6NjRdCUAgbG9hZCBlbmNyeXB0ZWQgY291bnRlcgorCWFkZAlyOCwgcjgsICMxCisjaWZkZWYgX19BUk1FTF9fCisJcmV2CXIwLCByOAorCXN0cglyMCwgW3NwLCAjMHgxY10JCUAgbmV4dCBjb3VudGVyIHZhbHVlCisjZWxzZQorCXN0cglyOCwgW3NwLCAjMHgxY10JCUAgbmV4dCBjb3VudGVyIHZhbHVlCisjZW5kaWYKKwl2ZW9yCXEwLHEwLHExCisJdnN0MS44CXtxMH0sIFtyNV0hCUAgc3RvcmUgb3V0cHV0CisJc3VicwlyNiwgcjYsICMxCisJYm5lCS5MY3RyX2VuY19zaG9ydF9sb29wCisKKwl2bW92LmkzMglxMCwgIzAKKwl2bW92LmkzMglxMSwgIzAKKwl2c3RtaWEJCXNwISwge3EwLXExfQorCisJbGRtaWEJc3AhLCB7cjQtcjgsIHBjfQorLnNpemUJYnNhZXNfY3RyMzJfZW5jcnlwdF9ibG9ja3MsLi1ic2Flc19jdHIzMl9lbmNyeXB0X2Jsb2NrcworLmdsb2JsCWJzYWVzX3h0c19lbmNyeXB0CisudHlwZQlic2Flc194dHNfZW5jcnlwdCwlZnVuY3Rpb24KKy5hbGlnbgk0Citic2Flc194dHNfZW5jcnlwdDoKKwltb3YJaXAsIHNwCisJc3RtZGIJc3AhLCB7cjQtcjEwLCBscn0JCUAgMHgyMAorCVZGUF9BQklfUFVTSAorCW1vdglyNiwgc3AJCQkJQCBmdXR1cmUgcjMKKworCW1vdglyNywgcjAKKwltb3YJcjgsIHIxCisJbW92CXI5LCByMgorCW1vdglyMTAsIHIzCisKKwlzdWIJcjAsIHNwLCAjMHgxMAkJCUAgMHgxMAorCWJpYwlyMCwgIzB4ZgkJCUAgYWxpZ24gYXQgMTYgYnl0ZXMKKwltb3YJc3AsIHIwCisKKyNpZmRlZglYVFNfQ0hBSU5fVFdFQUsKKwlsZHIJcjAsIFtpcF0JCQlAIHBvaW50ZXIgdG8gaW5wdXQgdHdlYWsKKyNlbHNlCisJQCBnZW5lcmF0ZSBpbml0aWFsIHR3ZWFrCisJbGRyCXIwLCBbaXAsICM0XQkJCUAgaXZbXQorCW1vdglyMSwgc3AKKwlsZHIJcjIsIFtpcCwgIzBdCQkJQCBrZXkyCisJYmwJQUVTX2VuY3J5cHQKKwltb3YJcjAsc3AJCQkJQCBwb2ludGVyIHRvIGluaXRpYWwgdHdlYWsKKyNlbmRpZgorCisJbGRyCXIxLCBbcjEwLCAjMjQwXQkJQCBnZXQgIyBvZiByb3VuZHMKKwltb3YJcjMsIHI2CisjaWZuZGVmCUJTQUVTX0FTTV9FWFRFTkRFRF9LRVkKKwlAIGFsbG9jYXRlIHRoZSBrZXkgc2NoZWR1bGUgb24gdGhlIHN0YWNrCisJc3ViCXIxMiwgc3AsIHIxLCBsc2wjNwkJQCAxMjggYnl0ZXMgcGVyIGlubmVyIHJvdW5kIGtleQorCUAgYWRkCXIxMiwgIzk2CQkJQCBzaXplIG9mIGJpdC1zbGljZWQga2V5IHNjaGVkdWxlCisJc3ViCXIxMiwgIzQ4CQkJQCBwbGFjZSBmb3IgdHdlYWtbOV0KKworCUAgcG9wdWxhdGUgdGhlIGtleSBzY2hlZHVsZQorCW1vdglyNCwgcjEwCQkJQCBwYXNzIGtleQorCW1vdglyNSwgcjEJCQlAIHBhc3MgIyBvZiByb3VuZHMKKwltb3YJc3AsIHIxMgorCWFkZAlyMTIsICMweDkwCQkJQCBwYXNzIGtleSBzY2hlZHVsZQorCWJsCV9ic2Flc19rZXlfY29udmVydAorCXZlb3IJcTcsIHE3LCBxMTUJQCBmaXggdXAgbGFzdCByb3VuZCBrZXkKKwl2c3RtaWEJcjEyLCB7cTd9CQkJQCBzYXZlIGxhc3Qgcm91bmQga2V5CisjZWxzZQorCWxkcglyMTIsIFtyMTAsICMyNDRdCisJZW9ycwlyMTIsICMxCisJYmVxCTBmCisKKwlzdHIJcjEyLCBbcjEwLCAjMjQ0XQorCW1vdglyNCwgcjEwCQkJQCBwYXNzIGtleQorCW1vdglyNSwgcjEJCQlAIHBhc3MgIyBvZiByb3VuZHMKKwlhZGQJcjEyLCByMTAsICMyNDgJCQlAIHBhc3Mga2V5IHNjaGVkdWxlCisJYmwJX2JzYWVzX2tleV9jb252ZXJ0CisJdmVvcglxNywgcTcsIHExNQlAIGZpeCB1cCBsYXN0IHJvdW5kIGtleQorCXZzdG1pYQlyMTIsIHtxN30KKworLmFsaWduCTIKKzA6CXN1YglzcCwgIzB4OTAJCQlAIHBsYWNlIGZvciB0d2Vha1s5XQorI2VuZGlmCisKKwl2bGQxLjgJe3E4fSwgW3IwXQkJCUAgaW5pdGlhbCB0d2VhaworCWFkcglyMiwgLkx4dHNfbWFnaWMKKworCXN1YnMJcjksICMweDgwCisJYmxvCS5MeHRzX2VuY19zaG9ydAorCWIJLkx4dHNfZW5jX2xvb3AKKworLmFsaWduCTQKKy5MeHRzX2VuY19sb29wOgorCXZsZG1pYQkJcjIsIHtxNX0JQCBsb2FkIFhUUyBtYWdpYworCXZzaHIuczY0CXE2LCBxOCwgIzYzCisJbW92CQlyMCwgc3AKKwl2YW5kCQlxNiwgcTYsIHE1CisJdmFkZC51NjQJcTksIHE4LCBxOAorCXZzdDEuNjQJCXtxOH0sIFtyMCw6MTI4XSEKKwl2c3dwCQlkMTMsZDEyCisJdnNoci5zNjQJcTcsIHE5LCAjNjMKKwl2ZW9yCQlxOSwgcTksIHE2CisJdmFuZAkJcTcsIHE3LCBxNQorCXZhZGQudTY0CXExMCwgcTksIHE5CisJdnN0MS42NAkJe3E5fSwgW3IwLDoxMjhdIQorCXZzd3AJCWQxNSxkMTQKKwl2c2hyLnM2NAlxNiwgcTEwLCAjNjMKKwl2ZW9yCQlxMTAsIHExMCwgcTcKKwl2YW5kCQlxNiwgcTYsIHE1CisJdmxkMS44CQl7cTB9LCBbcjddIQorCXZhZGQudTY0CXExMSwgcTEwLCBxMTAKKwl2c3QxLjY0CQl7cTEwfSwgW3IwLDoxMjhdIQorCXZzd3AJCWQxMyxkMTIKKwl2c2hyLnM2NAlxNywgcTExLCAjNjMKKwl2ZW9yCQlxMTEsIHExMSwgcTYKKwl2YW5kCQlxNywgcTcsIHE1CisJdmxkMS44CQl7cTF9LCBbcjddIQorCXZlb3IJCXEwLCBxMCwgcTgKKwl2YWRkLnU2NAlxMTIsIHExMSwgcTExCisJdnN0MS42NAkJe3ExMX0sIFtyMCw6MTI4XSEKKwl2c3dwCQlkMTUsZDE0CisJdnNoci5zNjQJcTYsIHExMiwgIzYzCisJdmVvcgkJcTEyLCBxMTIsIHE3CisJdmFuZAkJcTYsIHE2LCBxNQorCXZsZDEuOAkJe3EyfSwgW3I3XSEKKwl2ZW9yCQlxMSwgcTEsIHE5CisJdmFkZC51NjQJcTEzLCBxMTIsIHExMgorCXZzdDEuNjQJCXtxMTJ9LCBbcjAsOjEyOF0hCisJdnN3cAkJZDEzLGQxMgorCXZzaHIuczY0CXE3LCBxMTMsICM2MworCXZlb3IJCXExMywgcTEzLCBxNgorCXZhbmQJCXE3LCBxNywgcTUKKwl2bGQxLjgJCXtxM30sIFtyN10hCisJdmVvcgkJcTIsIHEyLCBxMTAKKwl2YWRkLnU2NAlxMTQsIHExMywgcTEzCisJdnN0MS42NAkJe3ExM30sIFtyMCw6MTI4XSEKKwl2c3dwCQlkMTUsZDE0CisJdnNoci5zNjQJcTYsIHExNCwgIzYzCisJdmVvcgkJcTE0LCBxMTQsIHE3CisJdmFuZAkJcTYsIHE2LCBxNQorCXZsZDEuOAkJe3E0fSwgW3I3XSEKKwl2ZW9yCQlxMywgcTMsIHExMQorCXZhZGQudTY0CXExNSwgcTE0LCBxMTQKKwl2c3QxLjY0CQl7cTE0fSwgW3IwLDoxMjhdIQorCXZzd3AJCWQxMyxkMTIKKwl2c2hyLnM2NAlxNywgcTE1LCAjNjMKKwl2ZW9yCQlxMTUsIHExNSwgcTYKKwl2YW5kCQlxNywgcTcsIHE1CisJdmxkMS44CQl7cTV9LCBbcjddIQorCXZlb3IJCXE0LCBxNCwgcTEyCisJdmFkZC51NjQJcTgsIHExNSwgcTE1CisJdnN0MS42NAkJe3ExNX0sIFtyMCw6MTI4XSEKKwl2c3dwCQlkMTUsZDE0CisJdmVvcgkJcTgsIHE4LCBxNworCXZzdDEuNjQJCXtxOH0sIFtyMCw6MTI4XQkJQCBuZXh0IHJvdW5kIHR3ZWFrCisKKwl2bGQxLjgJCXtxNi1xN30sIFtyN10hCisJdmVvcgkJcTUsIHE1LCBxMTMKKyNpZm5kZWYJQlNBRVNfQVNNX0VYVEVOREVEX0tFWQorCWFkZAkJcjQsIHNwLCAjMHg5MAkJCUAgcGFzcyBrZXkgc2NoZWR1bGUKKyNlbHNlCisJYWRkCQlyNCwgcjEwLCAjMjQ4CQkJQCBwYXNzIGtleSBzY2hlZHVsZQorI2VuZGlmCisJdmVvcgkJcTYsIHE2LCBxMTQKKwltb3YJCXI1LCByMQkJCUAgcGFzcyByb3VuZHMKKwl2ZW9yCQlxNywgcTcsIHExNQorCW1vdgkJcjAsIHNwCisKKwlibAkJX2JzYWVzX2VuY3J5cHQ4CisKKwl2bGQxLjY0CQl7cTgtcTl9LCBbcjAsOjEyOF0hCisJdmxkMS42NAkJe3ExMC1xMTF9LCBbcjAsOjEyOF0hCisJdmVvcgkJcTAsIHEwLCBxOAorCXZsZDEuNjQJCXtxMTItcTEzfSwgW3IwLDoxMjhdIQorCXZlb3IJCXExLCBxMSwgcTkKKwl2ZW9yCQlxOCwgcTQsIHExMAorCXZzdDEuOAkJe3EwLXExfSwgW3I4XSEKKwl2ZW9yCQlxOSwgcTYsIHExMQorCXZsZDEuNjQJCXtxMTQtcTE1fSwgW3IwLDoxMjhdIQorCXZlb3IJCXExMCwgcTMsIHExMgorCXZzdDEuOAkJe3E4LXE5fSwgW3I4XSEKKwl2ZW9yCQlxMTEsIHE3LCBxMTMKKwl2ZW9yCQlxMTIsIHEyLCBxMTQKKwl2c3QxLjgJCXtxMTAtcTExfSwgW3I4XSEKKwl2ZW9yCQlxMTMsIHE1LCBxMTUKKwl2c3QxLjgJCXtxMTItcTEzfSwgW3I4XSEKKworCXZsZDEuNjQJCXtxOH0sIFtyMCw6MTI4XQkJQCBuZXh0IHJvdW5kIHR3ZWFrCisKKwlzdWJzCQlyOSwgIzB4ODAKKwlicGwJCS5MeHRzX2VuY19sb29wCisKKy5MeHRzX2VuY19zaG9ydDoKKwlhZGRzCQlyOSwgIzB4NzAKKwlibWkJCS5MeHRzX2VuY19kb25lCisKKwl2bGRtaWEJCXIyLCB7cTV9CUAgbG9hZCBYVFMgbWFnaWMKKwl2c2hyLnM2NAlxNywgcTgsICM2MworCW1vdgkJcjAsIHNwCisJdmFuZAkJcTcsIHE3LCBxNQorCXZhZGQudTY0CXE5LCBxOCwgcTgKKwl2c3QxLjY0CQl7cTh9LCBbcjAsOjEyOF0hCisJdnN3cAkJZDE1LGQxNAorCXZzaHIuczY0CXE2LCBxOSwgIzYzCisJdmVvcgkJcTksIHE5LCBxNworCXZhbmQJCXE2LCBxNiwgcTUKKwl2YWRkLnU2NAlxMTAsIHE5LCBxOQorCXZzdDEuNjQJCXtxOX0sIFtyMCw6MTI4XSEKKwl2c3dwCQlkMTMsZDEyCisJdnNoci5zNjQJcTcsIHExMCwgIzYzCisJdmVvcgkJcTEwLCBxMTAsIHE2CisJdmFuZAkJcTcsIHE3LCBxNQorCXZsZDEuOAkJe3EwfSwgW3I3XSEKKwlzdWJzCQlyOSwgIzB4MTAKKwlibWkJCS5MeHRzX2VuY18xCisJdmFkZC51NjQJcTExLCBxMTAsIHExMAorCXZzdDEuNjQJCXtxMTB9LCBbcjAsOjEyOF0hCisJdnN3cAkJZDE1LGQxNAorCXZzaHIuczY0CXE2LCBxMTEsICM2MworCXZlb3IJCXExMSwgcTExLCBxNworCXZhbmQJCXE2LCBxNiwgcTUKKwl2bGQxLjgJCXtxMX0sIFtyN10hCisJc3VicwkJcjksICMweDEwCisJYm1pCQkuTHh0c19lbmNfMgorCXZlb3IJCXEwLCBxMCwgcTgKKwl2YWRkLnU2NAlxMTIsIHExMSwgcTExCisJdnN0MS42NAkJe3ExMX0sIFtyMCw6MTI4XSEKKwl2c3dwCQlkMTMsZDEyCisJdnNoci5zNjQJcTcsIHExMiwgIzYzCisJdmVvcgkJcTEyLCBxMTIsIHE2CisJdmFuZAkJcTcsIHE3LCBxNQorCXZsZDEuOAkJe3EyfSwgW3I3XSEKKwlzdWJzCQlyOSwgIzB4MTAKKwlibWkJCS5MeHRzX2VuY18zCisJdmVvcgkJcTEsIHExLCBxOQorCXZhZGQudTY0CXExMywgcTEyLCBxMTIKKwl2c3QxLjY0CQl7cTEyfSwgW3IwLDoxMjhdIQorCXZzd3AJCWQxNSxkMTQKKwl2c2hyLnM2NAlxNiwgcTEzLCAjNjMKKwl2ZW9yCQlxMTMsIHExMywgcTcKKwl2YW5kCQlxNiwgcTYsIHE1CisJdmxkMS44CQl7cTN9LCBbcjddIQorCXN1YnMJCXI5LCAjMHgxMAorCWJtaQkJLkx4dHNfZW5jXzQKKwl2ZW9yCQlxMiwgcTIsIHExMAorCXZhZGQudTY0CXExNCwgcTEzLCBxMTMKKwl2c3QxLjY0CQl7cTEzfSwgW3IwLDoxMjhdIQorCXZzd3AJCWQxMyxkMTIKKwl2c2hyLnM2NAlxNywgcTE0LCAjNjMKKwl2ZW9yCQlxMTQsIHExNCwgcTYKKwl2YW5kCQlxNywgcTcsIHE1CisJdmxkMS44CQl7cTR9LCBbcjddIQorCXN1YnMJCXI5LCAjMHgxMAorCWJtaQkJLkx4dHNfZW5jXzUKKwl2ZW9yCQlxMywgcTMsIHExMQorCXZhZGQudTY0CXExNSwgcTE0LCBxMTQKKwl2c3QxLjY0CQl7cTE0fSwgW3IwLDoxMjhdIQorCXZzd3AJCWQxNSxkMTQKKwl2c2hyLnM2NAlxNiwgcTE1LCAjNjMKKwl2ZW9yCQlxMTUsIHExNSwgcTcKKwl2YW5kCQlxNiwgcTYsIHE1CisJdmxkMS44CQl7cTV9LCBbcjddIQorCXN1YnMJCXI5LCAjMHgxMAorCWJtaQkJLkx4dHNfZW5jXzYKKwl2ZW9yCQlxNCwgcTQsIHExMgorCXN1YgkJcjksICMweDEwCisJdnN0MS42NAkJe3ExNX0sIFtyMCw6MTI4XQkJQCBuZXh0IHJvdW5kIHR3ZWFrCisKKwl2bGQxLjgJCXtxNn0sIFtyN10hCisJdmVvcgkJcTUsIHE1LCBxMTMKKyNpZm5kZWYJQlNBRVNfQVNNX0VYVEVOREVEX0tFWQorCWFkZAkJcjQsIHNwLCAjMHg5MAkJCUAgcGFzcyBrZXkgc2NoZWR1bGUKKyNlbHNlCisJYWRkCQlyNCwgcjEwLCAjMjQ4CQkJQCBwYXNzIGtleSBzY2hlZHVsZQorI2VuZGlmCisJdmVvcgkJcTYsIHE2LCBxMTQKKwltb3YJCXI1LCByMQkJCUAgcGFzcyByb3VuZHMKKwltb3YJCXIwLCBzcAorCisJYmwJCV9ic2Flc19lbmNyeXB0OAorCisJdmxkMS42NAkJe3E4LXE5fSwgW3IwLDoxMjhdIQorCXZsZDEuNjQJCXtxMTAtcTExfSwgW3IwLDoxMjhdIQorCXZlb3IJCXEwLCBxMCwgcTgKKwl2bGQxLjY0CQl7cTEyLXExM30sIFtyMCw6MTI4XSEKKwl2ZW9yCQlxMSwgcTEsIHE5CisJdmVvcgkJcTgsIHE0LCBxMTAKKwl2c3QxLjgJCXtxMC1xMX0sIFtyOF0hCisJdmVvcgkJcTksIHE2LCBxMTEKKwl2bGQxLjY0CQl7cTE0fSwgW3IwLDoxMjhdIQorCXZlb3IJCXExMCwgcTMsIHExMgorCXZzdDEuOAkJe3E4LXE5fSwgW3I4XSEKKwl2ZW9yCQlxMTEsIHE3LCBxMTMKKwl2ZW9yCQlxMTIsIHEyLCBxMTQKKwl2c3QxLjgJCXtxMTAtcTExfSwgW3I4XSEKKwl2c3QxLjgJCXtxMTJ9LCBbcjhdIQorCisJdmxkMS42NAkJe3E4fSwgW3IwLDoxMjhdCQlAIG5leHQgcm91bmQgdHdlYWsKKwliCQkuTHh0c19lbmNfZG9uZQorLmFsaWduCTQKKy5MeHRzX2VuY182OgorCXZzdDEuNjQJCXtxMTR9LCBbcjAsOjEyOF0JCUAgbmV4dCByb3VuZCB0d2VhaworCisJdmVvcgkJcTQsIHE0LCBxMTIKKyNpZm5kZWYJQlNBRVNfQVNNX0VYVEVOREVEX0tFWQorCWFkZAkJcjQsIHNwLCAjMHg5MAkJCUAgcGFzcyBrZXkgc2NoZWR1bGUKKyNlbHNlCisJYWRkCQlyNCwgcjEwLCAjMjQ4CQkJQCBwYXNzIGtleSBzY2hlZHVsZQorI2VuZGlmCisJdmVvcgkJcTUsIHE1LCBxMTMKKwltb3YJCXI1LCByMQkJCUAgcGFzcyByb3VuZHMKKwltb3YJCXIwLCBzcAorCisJYmwJCV9ic2Flc19lbmNyeXB0OAorCisJdmxkMS42NAkJe3E4LXE5fSwgW3IwLDoxMjhdIQorCXZsZDEuNjQJCXtxMTAtcTExfSwgW3IwLDoxMjhdIQorCXZlb3IJCXEwLCBxMCwgcTgKKwl2bGQxLjY0CQl7cTEyLXExM30sIFtyMCw6MTI4XSEKKwl2ZW9yCQlxMSwgcTEsIHE5CisJdmVvcgkJcTgsIHE0LCBxMTAKKwl2c3QxLjgJCXtxMC1xMX0sIFtyOF0hCisJdmVvcgkJcTksIHE2LCBxMTEKKwl2ZW9yCQlxMTAsIHEzLCBxMTIKKwl2c3QxLjgJCXtxOC1xOX0sIFtyOF0hCisJdmVvcgkJcTExLCBxNywgcTEzCisJdnN0MS44CQl7cTEwLXExMX0sIFtyOF0hCisKKwl2bGQxLjY0CQl7cTh9LCBbcjAsOjEyOF0JCUAgbmV4dCByb3VuZCB0d2VhaworCWIJCS5MeHRzX2VuY19kb25lCisKK0AgcHV0IHRoaXMgaW4gcmFuZ2UgZm9yIGJvdGggQVJNIGFuZCBUaHVtYiBtb2RlIGFkciBpbnN0cnVjdGlvbnMKKy5hbGlnbgk1CisuTHh0c19tYWdpYzoKKwkucXVhZAkxLCAweDg3CisKKy5hbGlnbgk1CisuTHh0c19lbmNfNToKKwl2c3QxLjY0CQl7cTEzfSwgW3IwLDoxMjhdCQlAIG5leHQgcm91bmQgdHdlYWsKKworCXZlb3IJCXEzLCBxMywgcTExCisjaWZuZGVmCUJTQUVTX0FTTV9FWFRFTkRFRF9LRVkKKwlhZGQJCXI0LCBzcCwgIzB4OTAJCQlAIHBhc3Mga2V5IHNjaGVkdWxlCisjZWxzZQorCWFkZAkJcjQsIHIxMCwgIzI0OAkJCUAgcGFzcyBrZXkgc2NoZWR1bGUKKyNlbmRpZgorCXZlb3IJCXE0LCBxNCwgcTEyCisJbW92CQlyNSwgcjEJCQlAIHBhc3Mgcm91bmRzCisJbW92CQlyMCwgc3AKKworCWJsCQlfYnNhZXNfZW5jcnlwdDgKKworCXZsZDEuNjQJCXtxOC1xOX0sIFtyMCw6MTI4XSEKKwl2bGQxLjY0CQl7cTEwLXExMX0sIFtyMCw6MTI4XSEKKwl2ZW9yCQlxMCwgcTAsIHE4CisJdmxkMS42NAkJe3ExMn0sIFtyMCw6MTI4XSEKKwl2ZW9yCQlxMSwgcTEsIHE5CisJdmVvcgkJcTgsIHE0LCBxMTAKKwl2c3QxLjgJCXtxMC1xMX0sIFtyOF0hCisJdmVvcgkJcTksIHE2LCBxMTEKKwl2ZW9yCQlxMTAsIHEzLCBxMTIKKwl2c3QxLjgJCXtxOC1xOX0sIFtyOF0hCisJdnN0MS44CQl7cTEwfSwgW3I4XSEKKworCXZsZDEuNjQJCXtxOH0sIFtyMCw6MTI4XQkJQCBuZXh0IHJvdW5kIHR3ZWFrCisJYgkJLkx4dHNfZW5jX2RvbmUKKy5hbGlnbgk0CisuTHh0c19lbmNfNDoKKwl2c3QxLjY0CQl7cTEyfSwgW3IwLDoxMjhdCQlAIG5leHQgcm91bmQgdHdlYWsKKworCXZlb3IJCXEyLCBxMiwgcTEwCisjaWZuZGVmCUJTQUVTX0FTTV9FWFRFTkRFRF9LRVkKKwlhZGQJCXI0LCBzcCwgIzB4OTAJCQlAIHBhc3Mga2V5IHNjaGVkdWxlCisjZWxzZQorCWFkZAkJcjQsIHIxMCwgIzI0OAkJCUAgcGFzcyBrZXkgc2NoZWR1bGUKKyNlbmRpZgorCXZlb3IJCXEzLCBxMywgcTExCisJbW92CQlyNSwgcjEJCQlAIHBhc3Mgcm91bmRzCisJbW92CQlyMCwgc3AKKworCWJsCQlfYnNhZXNfZW5jcnlwdDgKKworCXZsZDEuNjQJCXtxOC1xOX0sIFtyMCw6MTI4XSEKKwl2bGQxLjY0CQl7cTEwLXExMX0sIFtyMCw6MTI4XSEKKwl2ZW9yCQlxMCwgcTAsIHE4CisJdmVvcgkJcTEsIHExLCBxOQorCXZlb3IJCXE4LCBxNCwgcTEwCisJdnN0MS44CQl7cTAtcTF9LCBbcjhdIQorCXZlb3IJCXE5LCBxNiwgcTExCisJdnN0MS44CQl7cTgtcTl9LCBbcjhdIQorCisJdmxkMS42NAkJe3E4fSwgW3IwLDoxMjhdCQlAIG5leHQgcm91bmQgdHdlYWsKKwliCQkuTHh0c19lbmNfZG9uZQorLmFsaWduCTQKKy5MeHRzX2VuY18zOgorCXZzdDEuNjQJCXtxMTF9LCBbcjAsOjEyOF0JCUAgbmV4dCByb3VuZCB0d2VhaworCisJdmVvcgkJcTEsIHExLCBxOQorI2lmbmRlZglCU0FFU19BU01fRVhURU5ERURfS0VZCisJYWRkCQlyNCwgc3AsICMweDkwCQkJQCBwYXNzIGtleSBzY2hlZHVsZQorI2Vsc2UKKwlhZGQJCXI0LCByMTAsICMyNDgJCQlAIHBhc3Mga2V5IHNjaGVkdWxlCisjZW5kaWYKKwl2ZW9yCQlxMiwgcTIsIHExMAorCW1vdgkJcjUsIHIxCQkJQCBwYXNzIHJvdW5kcworCW1vdgkJcjAsIHNwCisKKwlibAkJX2JzYWVzX2VuY3J5cHQ4CisKKwl2bGQxLjY0CQl7cTgtcTl9LCBbcjAsOjEyOF0hCisJdmxkMS42NAkJe3ExMH0sIFtyMCw6MTI4XSEKKwl2ZW9yCQlxMCwgcTAsIHE4CisJdmVvcgkJcTEsIHExLCBxOQorCXZlb3IJCXE4LCBxNCwgcTEwCisJdnN0MS44CQl7cTAtcTF9LCBbcjhdIQorCXZzdDEuOAkJe3E4fSwgW3I4XSEKKworCXZsZDEuNjQJCXtxOH0sIFtyMCw6MTI4XQkJQCBuZXh0IHJvdW5kIHR3ZWFrCisJYgkJLkx4dHNfZW5jX2RvbmUKKy5hbGlnbgk0CisuTHh0c19lbmNfMjoKKwl2c3QxLjY0CQl7cTEwfSwgW3IwLDoxMjhdCQlAIG5leHQgcm91bmQgdHdlYWsKKworCXZlb3IJCXEwLCBxMCwgcTgKKyNpZm5kZWYJQlNBRVNfQVNNX0VYVEVOREVEX0tFWQorCWFkZAkJcjQsIHNwLCAjMHg5MAkJCUAgcGFzcyBrZXkgc2NoZWR1bGUKKyNlbHNlCisJYWRkCQlyNCwgcjEwLCAjMjQ4CQkJQCBwYXNzIGtleSBzY2hlZHVsZQorI2VuZGlmCisJdmVvcgkJcTEsIHExLCBxOQorCW1vdgkJcjUsIHIxCQkJQCBwYXNzIHJvdW5kcworCW1vdgkJcjAsIHNwCisKKwlibAkJX2JzYWVzX2VuY3J5cHQ4CisKKwl2bGQxLjY0CQl7cTgtcTl9LCBbcjAsOjEyOF0hCisJdmVvcgkJcTAsIHEwLCBxOAorCXZlb3IJCXExLCBxMSwgcTkKKwl2c3QxLjgJCXtxMC1xMX0sIFtyOF0hCisKKwl2bGQxLjY0CQl7cTh9LCBbcjAsOjEyOF0JCUAgbmV4dCByb3VuZCB0d2VhaworCWIJCS5MeHRzX2VuY19kb25lCisuYWxpZ24JNAorLkx4dHNfZW5jXzE6CisJbW92CQlyMCwgc3AKKwl2ZW9yCQlxMCwgcTgKKwltb3YJCXIxLCBzcAorCXZzdDEuOAkJe3EwfSwgW3NwLDoxMjhdCisJbW92CQlyMiwgcjEwCisJbW92CQlyNCwgcjMJCQkJQCBwcmVzZXJ2ZSBmcAorCisJYmwJCUFFU19lbmNyeXB0CisKKwl2bGQxLjgJCXtxMH0sIFtzcCw6MTI4XQorCXZlb3IJCXEwLCBxMCwgcTgKKwl2c3QxLjgJCXtxMH0sIFtyOF0hCisJbW92CQlyMywgcjQKKworCXZtb3YJCXE4LCBxOQkJQCBuZXh0IHJvdW5kIHR3ZWFrCisKKy5MeHRzX2VuY19kb25lOgorI2lmbmRlZglYVFNfQ0hBSU5fVFdFQUsKKwlhZGRzCQlyOSwgIzB4MTAKKwliZXEJCS5MeHRzX2VuY19yZXQKKwlzdWIJCXI2LCByOCwgIzB4MTAKKworLkx4dHNfZW5jX3N0ZWFsOgorCWxkcmIJCXIwLCBbcjddLCAjMQorCWxkcmIJCXIxLCBbcjgsICMtMHgxMF0KKwlzdHJiCQlyMCwgW3I4LCAjLTB4MTBdCisJc3RyYgkJcjEsIFtyOF0sICMxCisKKwlzdWJzCQlyOSwgIzEKKwliaGkJCS5MeHRzX2VuY19zdGVhbAorCisJdmxkMS44CQl7cTB9LCBbcjZdCisJbW92CQlyMCwgc3AKKwl2ZW9yCQlxMCwgcTAsIHE4CisJbW92CQlyMSwgc3AKKwl2c3QxLjgJCXtxMH0sIFtzcCw6MTI4XQorCW1vdgkJcjIsIHIxMAorCW1vdgkJcjQsIHIzCQkJQCBwcmVzZXJ2ZSBmcAorCisJYmwJCUFFU19lbmNyeXB0CisKKwl2bGQxLjgJCXtxMH0sIFtzcCw6MTI4XQorCXZlb3IJCXEwLCBxMCwgcTgKKwl2c3QxLjgJCXtxMH0sIFtyNl0KKwltb3YJCXIzLCByNAorI2VuZGlmCisKKy5MeHRzX2VuY19yZXQ6CisJYmljCQlyMCwgcjMsICMweGYKKwl2bW92LmkzMglxMCwgIzAKKwl2bW92LmkzMglxMSwgIzAKKyNpZmRlZglYVFNfQ0hBSU5fVFdFQUsKKwlsZHIJCXIxLCBbcjMsICMweDIwK1ZGUF9BQklfRlJBTUVdCUAgY2hhaW4gdHdlYWsKKyNlbmRpZgorLkx4dHNfZW5jX2J6ZXJvOgkJCQlAIHdpcGUga2V5IHNjaGVkdWxlIFtpZiBhbnldCisJdnN0bWlhCQlzcCEsIHtxMC1xMX0KKwljbXAJCXNwLCByMAorCWJuZQkJLkx4dHNfZW5jX2J6ZXJvCisKKwltb3YJCXNwLCByMworI2lmZGVmCVhUU19DSEFJTl9UV0VBSworCXZzdDEuOAkJe3E4fSwgW3IxXQorI2VuZGlmCisJVkZQX0FCSV9QT1AKKwlsZG1pYQkJc3AhLCB7cjQtcjEwLCBwY30JQCByZXR1cm4KKworLnNpemUJYnNhZXNfeHRzX2VuY3J5cHQsLi1ic2Flc194dHNfZW5jcnlwdAorCisuZ2xvYmwJYnNhZXNfeHRzX2RlY3J5cHQKKy50eXBlCWJzYWVzX3h0c19kZWNyeXB0LCVmdW5jdGlvbgorLmFsaWduCTQKK2JzYWVzX3h0c19kZWNyeXB0OgorCW1vdglpcCwgc3AKKwlzdG1kYglzcCEsIHtyNC1yMTAsIGxyfQkJQCAweDIwCisJVkZQX0FCSV9QVVNICisJbW92CXI2LCBzcAkJCQlAIGZ1dHVyZSByMworCisJbW92CXI3LCByMAorCW1vdglyOCwgcjEKKwltb3YJcjksIHIyCisJbW92CXIxMCwgcjMKKworCXN1YglyMCwgc3AsICMweDEwCQkJQCAweDEwCisJYmljCXIwLCAjMHhmCQkJQCBhbGlnbiBhdCAxNiBieXRlcworCW1vdglzcCwgcjAKKworI2lmZGVmCVhUU19DSEFJTl9UV0VBSworCWxkcglyMCwgW2lwXQkJCUAgcG9pbnRlciB0byBpbnB1dCB0d2VhaworI2Vsc2UKKwlAIGdlbmVyYXRlIGluaXRpYWwgdHdlYWsKKwlsZHIJcjAsIFtpcCwgIzRdCQkJQCBpdltdCisJbW92CXIxLCBzcAorCWxkcglyMiwgW2lwLCAjMF0JCQlAIGtleTIKKwlibAlBRVNfZW5jcnlwdAorCW1vdglyMCwgc3AJCQkJQCBwb2ludGVyIHRvIGluaXRpYWwgdHdlYWsKKyNlbmRpZgorCisJbGRyCXIxLCBbcjEwLCAjMjQwXQkJQCBnZXQgIyBvZiByb3VuZHMKKwltb3YJcjMsIHI2CisjaWZuZGVmCUJTQUVTX0FTTV9FWFRFTkRFRF9LRVkKKwlAIGFsbG9jYXRlIHRoZSBrZXkgc2NoZWR1bGUgb24gdGhlIHN0YWNrCisJc3ViCXIxMiwgc3AsIHIxLCBsc2wjNwkJQCAxMjggYnl0ZXMgcGVyIGlubmVyIHJvdW5kIGtleQorCUAgYWRkCXIxMiwgIzk2CQkJQCBzaXplIG9mIGJpdC1zbGljZWQga2V5IHNjaGVkdWxlCisJc3ViCXIxMiwgIzQ4CQkJQCBwbGFjZSBmb3IgdHdlYWtbOV0KKworCUAgcG9wdWxhdGUgdGhlIGtleSBzY2hlZHVsZQorCW1vdglyNCwgcjEwCQkJQCBwYXNzIGtleQorCW1vdglyNSwgcjEJCQlAIHBhc3MgIyBvZiByb3VuZHMKKwltb3YJc3AsIHIxMgorCWFkZAlyMTIsICMweDkwCQkJQCBwYXNzIGtleSBzY2hlZHVsZQorCWJsCV9ic2Flc19rZXlfY29udmVydAorCWFkZAlyNCwgc3AsICMweDkwCisJdmxkbWlhCXI0LCB7cTZ9CisJdnN0bWlhCXIxMiwgIHtxMTV9CQlAIHNhdmUgbGFzdCByb3VuZCBrZXkKKwl2ZW9yCXE3LCBxNywgcTYJQCBmaXggdXAgcm91bmQgMCBrZXkKKwl2c3RtaWEJcjQsIHtxN30KKyNlbHNlCisJbGRyCXIxMiwgW3IxMCwgIzI0NF0KKwllb3JzCXIxMiwgIzEKKwliZXEJMGYKKworCXN0cglyMTIsIFtyMTAsICMyNDRdCisJbW92CXI0LCByMTAJCQlAIHBhc3Mga2V5CisJbW92CXI1LCByMQkJCUAgcGFzcyAjIG9mIHJvdW5kcworCWFkZAlyMTIsIHIxMCwgIzI0OAkJCUAgcGFzcyBrZXkgc2NoZWR1bGUKKwlibAlfYnNhZXNfa2V5X2NvbnZlcnQKKwlhZGQJcjQsIHIxMCwgIzI0OAorCXZsZG1pYQlyNCwge3E2fQorCXZzdG1pYQlyMTIsICB7cTE1fQkJQCBzYXZlIGxhc3Qgcm91bmQga2V5CisJdmVvcglxNywgcTcsIHE2CUAgZml4IHVwIHJvdW5kIDAga2V5CisJdnN0bWlhCXI0LCB7cTd9CisKKy5hbGlnbgkyCiswOglzdWIJc3AsICMweDkwCQkJQCBwbGFjZSBmb3IgdHdlYWtbOV0KKyNlbmRpZgorCXZsZDEuOAl7cTh9LCBbcjBdCQkJQCBpbml0aWFsIHR3ZWFrCisJYWRyCXIyLCAuTHh0c19tYWdpYworCisJdHN0CXI5LCAjMHhmCQkJQCBpZiBub3QgbXVsdGlwbGUgb2YgMTYKKwlpdAluZQkJCQlAIFRodW1iMiB0aGluZywgc2FuaXR5IGNoZWNrIGluIEFSTQorCXN1Ym5lCXI5LCAjMHgxMAkJCUAgc3VidHJhY3QgYW5vdGhlciAxNiBieXRlcworCXN1YnMJcjksICMweDgwCisKKwlibG8JLkx4dHNfZGVjX3Nob3J0CisJYgkuTHh0c19kZWNfbG9vcAorCisuYWxpZ24JNAorLkx4dHNfZGVjX2xvb3A6CisJdmxkbWlhCQlyMiwge3E1fQlAIGxvYWQgWFRTIG1hZ2ljCisJdnNoci5zNjQJcTYsIHE4LCAjNjMKKwltb3YJCXIwLCBzcAorCXZhbmQJCXE2LCBxNiwgcTUKKwl2YWRkLnU2NAlxOSwgcTgsIHE4CisJdnN0MS42NAkJe3E4fSwgW3IwLDoxMjhdIQorCXZzd3AJCWQxMyxkMTIKKwl2c2hyLnM2NAlxNywgcTksICM2MworCXZlb3IJCXE5LCBxOSwgcTYKKwl2YW5kCQlxNywgcTcsIHE1CisJdmFkZC51NjQJcTEwLCBxOSwgcTkKKwl2c3QxLjY0CQl7cTl9LCBbcjAsOjEyOF0hCisJdnN3cAkJZDE1LGQxNAorCXZzaHIuczY0CXE2LCBxMTAsICM2MworCXZlb3IJCXExMCwgcTEwLCBxNworCXZhbmQJCXE2LCBxNiwgcTUKKwl2bGQxLjgJCXtxMH0sIFtyN10hCisJdmFkZC51NjQJcTExLCBxMTAsIHExMAorCXZzdDEuNjQJCXtxMTB9LCBbcjAsOjEyOF0hCisJdnN3cAkJZDEzLGQxMgorCXZzaHIuczY0CXE3LCBxMTEsICM2MworCXZlb3IJCXExMSwgcTExLCBxNgorCXZhbmQJCXE3LCBxNywgcTUKKwl2bGQxLjgJCXtxMX0sIFtyN10hCisJdmVvcgkJcTAsIHEwLCBxOAorCXZhZGQudTY0CXExMiwgcTExLCBxMTEKKwl2c3QxLjY0CQl7cTExfSwgW3IwLDoxMjhdIQorCXZzd3AJCWQxNSxkMTQKKwl2c2hyLnM2NAlxNiwgcTEyLCAjNjMKKwl2ZW9yCQlxMTIsIHExMiwgcTcKKwl2YW5kCQlxNiwgcTYsIHE1CisJdmxkMS44CQl7cTJ9LCBbcjddIQorCXZlb3IJCXExLCBxMSwgcTkKKwl2YWRkLnU2NAlxMTMsIHExMiwgcTEyCisJdnN0MS42NAkJe3ExMn0sIFtyMCw6MTI4XSEKKwl2c3dwCQlkMTMsZDEyCisJdnNoci5zNjQJcTcsIHExMywgIzYzCisJdmVvcgkJcTEzLCBxMTMsIHE2CisJdmFuZAkJcTcsIHE3LCBxNQorCXZsZDEuOAkJe3EzfSwgW3I3XSEKKwl2ZW9yCQlxMiwgcTIsIHExMAorCXZhZGQudTY0CXExNCwgcTEzLCBxMTMKKwl2c3QxLjY0CQl7cTEzfSwgW3IwLDoxMjhdIQorCXZzd3AJCWQxNSxkMTQKKwl2c2hyLnM2NAlxNiwgcTE0LCAjNjMKKwl2ZW9yCQlxMTQsIHExNCwgcTcKKwl2YW5kCQlxNiwgcTYsIHE1CisJdmxkMS44CQl7cTR9LCBbcjddIQorCXZlb3IJCXEzLCBxMywgcTExCisJdmFkZC51NjQJcTE1LCBxMTQsIHExNAorCXZzdDEuNjQJCXtxMTR9LCBbcjAsOjEyOF0hCisJdnN3cAkJZDEzLGQxMgorCXZzaHIuczY0CXE3LCBxMTUsICM2MworCXZlb3IJCXExNSwgcTE1LCBxNgorCXZhbmQJCXE3LCBxNywgcTUKKwl2bGQxLjgJCXtxNX0sIFtyN10hCisJdmVvcgkJcTQsIHE0LCBxMTIKKwl2YWRkLnU2NAlxOCwgcTE1LCBxMTUKKwl2c3QxLjY0CQl7cTE1fSwgW3IwLDoxMjhdIQorCXZzd3AJCWQxNSxkMTQKKwl2ZW9yCQlxOCwgcTgsIHE3CisJdnN0MS42NAkJe3E4fSwgW3IwLDoxMjhdCQlAIG5leHQgcm91bmQgdHdlYWsKKworCXZsZDEuOAkJe3E2LXE3fSwgW3I3XSEKKwl2ZW9yCQlxNSwgcTUsIHExMworI2lmbmRlZglCU0FFU19BU01fRVhURU5ERURfS0VZCisJYWRkCQlyNCwgc3AsICMweDkwCQkJQCBwYXNzIGtleSBzY2hlZHVsZQorI2Vsc2UKKwlhZGQJCXI0LCByMTAsICMyNDgJCQlAIHBhc3Mga2V5IHNjaGVkdWxlCisjZW5kaWYKKwl2ZW9yCQlxNiwgcTYsIHExNAorCW1vdgkJcjUsIHIxCQkJQCBwYXNzIHJvdW5kcworCXZlb3IJCXE3LCBxNywgcTE1CisJbW92CQlyMCwgc3AKKworCWJsCQlfYnNhZXNfZGVjcnlwdDgKKworCXZsZDEuNjQJCXtxOC1xOX0sIFtyMCw6MTI4XSEKKwl2bGQxLjY0CQl7cTEwLXExMX0sIFtyMCw6MTI4XSEKKwl2ZW9yCQlxMCwgcTAsIHE4CisJdmxkMS42NAkJe3ExMi1xMTN9LCBbcjAsOjEyOF0hCisJdmVvcgkJcTEsIHExLCBxOQorCXZlb3IJCXE4LCBxNiwgcTEwCisJdnN0MS44CQl7cTAtcTF9LCBbcjhdIQorCXZlb3IJCXE5LCBxNCwgcTExCisJdmxkMS42NAkJe3ExNC1xMTV9LCBbcjAsOjEyOF0hCisJdmVvcgkJcTEwLCBxMiwgcTEyCisJdnN0MS44CQl7cTgtcTl9LCBbcjhdIQorCXZlb3IJCXExMSwgcTcsIHExMworCXZlb3IJCXExMiwgcTMsIHExNAorCXZzdDEuOAkJe3ExMC1xMTF9LCBbcjhdIQorCXZlb3IJCXExMywgcTUsIHExNQorCXZzdDEuOAkJe3ExMi1xMTN9LCBbcjhdIQorCisJdmxkMS42NAkJe3E4fSwgW3IwLDoxMjhdCQlAIG5leHQgcm91bmQgdHdlYWsKKworCXN1YnMJCXI5LCAjMHg4MAorCWJwbAkJLkx4dHNfZGVjX2xvb3AKKworLkx4dHNfZGVjX3Nob3J0OgorCWFkZHMJCXI5LCAjMHg3MAorCWJtaQkJLkx4dHNfZGVjX2RvbmUKKworCXZsZG1pYQkJcjIsIHtxNX0JQCBsb2FkIFhUUyBtYWdpYworCXZzaHIuczY0CXE3LCBxOCwgIzYzCisJbW92CQlyMCwgc3AKKwl2YW5kCQlxNywgcTcsIHE1CisJdmFkZC51NjQJcTksIHE4LCBxOAorCXZzdDEuNjQJCXtxOH0sIFtyMCw6MTI4XSEKKwl2c3dwCQlkMTUsZDE0CisJdnNoci5zNjQJcTYsIHE5LCAjNjMKKwl2ZW9yCQlxOSwgcTksIHE3CisJdmFuZAkJcTYsIHE2LCBxNQorCXZhZGQudTY0CXExMCwgcTksIHE5CisJdnN0MS42NAkJe3E5fSwgW3IwLDoxMjhdIQorCXZzd3AJCWQxMyxkMTIKKwl2c2hyLnM2NAlxNywgcTEwLCAjNjMKKwl2ZW9yCQlxMTAsIHExMCwgcTYKKwl2YW5kCQlxNywgcTcsIHE1CisJdmxkMS44CQl7cTB9LCBbcjddIQorCXN1YnMJCXI5LCAjMHgxMAorCWJtaQkJLkx4dHNfZGVjXzEKKwl2YWRkLnU2NAlxMTEsIHExMCwgcTEwCisJdnN0MS42NAkJe3ExMH0sIFtyMCw6MTI4XSEKKwl2c3dwCQlkMTUsZDE0CisJdnNoci5zNjQJcTYsIHExMSwgIzYzCisJdmVvcgkJcTExLCBxMTEsIHE3CisJdmFuZAkJcTYsIHE2LCBxNQorCXZsZDEuOAkJe3ExfSwgW3I3XSEKKwlzdWJzCQlyOSwgIzB4MTAKKwlibWkJCS5MeHRzX2RlY18yCisJdmVvcgkJcTAsIHEwLCBxOAorCXZhZGQudTY0CXExMiwgcTExLCBxMTEKKwl2c3QxLjY0CQl7cTExfSwgW3IwLDoxMjhdIQorCXZzd3AJCWQxMyxkMTIKKwl2c2hyLnM2NAlxNywgcTEyLCAjNjMKKwl2ZW9yCQlxMTIsIHExMiwgcTYKKwl2YW5kCQlxNywgcTcsIHE1CisJdmxkMS44CQl7cTJ9LCBbcjddIQorCXN1YnMJCXI5LCAjMHgxMAorCWJtaQkJLkx4dHNfZGVjXzMKKwl2ZW9yCQlxMSwgcTEsIHE5CisJdmFkZC51NjQJcTEzLCBxMTIsIHExMgorCXZzdDEuNjQJCXtxMTJ9LCBbcjAsOjEyOF0hCisJdnN3cAkJZDE1LGQxNAorCXZzaHIuczY0CXE2LCBxMTMsICM2MworCXZlb3IJCXExMywgcTEzLCBxNworCXZhbmQJCXE2LCBxNiwgcTUKKwl2bGQxLjgJCXtxM30sIFtyN10hCisJc3VicwkJcjksICMweDEwCisJYm1pCQkuTHh0c19kZWNfNAorCXZlb3IJCXEyLCBxMiwgcTEwCisJdmFkZC51NjQJcTE0LCBxMTMsIHExMworCXZzdDEuNjQJCXtxMTN9LCBbcjAsOjEyOF0hCisJdnN3cAkJZDEzLGQxMgorCXZzaHIuczY0CXE3LCBxMTQsICM2MworCXZlb3IJCXExNCwgcTE0LCBxNgorCXZhbmQJCXE3LCBxNywgcTUKKwl2bGQxLjgJCXtxNH0sIFtyN10hCisJc3VicwkJcjksICMweDEwCisJYm1pCQkuTHh0c19kZWNfNQorCXZlb3IJCXEzLCBxMywgcTExCisJdmFkZC51NjQJcTE1LCBxMTQsIHExNAorCXZzdDEuNjQJCXtxMTR9LCBbcjAsOjEyOF0hCisJdnN3cAkJZDE1LGQxNAorCXZzaHIuczY0CXE2LCBxMTUsICM2MworCXZlb3IJCXExNSwgcTE1LCBxNworCXZhbmQJCXE2LCBxNiwgcTUKKwl2bGQxLjgJCXtxNX0sIFtyN10hCisJc3VicwkJcjksICMweDEwCisJYm1pCQkuTHh0c19kZWNfNgorCXZlb3IJCXE0LCBxNCwgcTEyCisJc3ViCQlyOSwgIzB4MTAKKwl2c3QxLjY0CQl7cTE1fSwgW3IwLDoxMjhdCQlAIG5leHQgcm91bmQgdHdlYWsKKworCXZsZDEuOAkJe3E2fSwgW3I3XSEKKwl2ZW9yCQlxNSwgcTUsIHExMworI2lmbmRlZglCU0FFU19BU01fRVhURU5ERURfS0VZCisJYWRkCQlyNCwgc3AsICMweDkwCQkJQCBwYXNzIGtleSBzY2hlZHVsZQorI2Vsc2UKKwlhZGQJCXI0LCByMTAsICMyNDgJCQlAIHBhc3Mga2V5IHNjaGVkdWxlCisjZW5kaWYKKwl2ZW9yCQlxNiwgcTYsIHExNAorCW1vdgkJcjUsIHIxCQkJQCBwYXNzIHJvdW5kcworCW1vdgkJcjAsIHNwCisKKwlibAkJX2JzYWVzX2RlY3J5cHQ4CisKKwl2bGQxLjY0CQl7cTgtcTl9LCBbcjAsOjEyOF0hCisJdmxkMS42NAkJe3ExMC1xMTF9LCBbcjAsOjEyOF0hCisJdmVvcgkJcTAsIHEwLCBxOAorCXZsZDEuNjQJCXtxMTItcTEzfSwgW3IwLDoxMjhdIQorCXZlb3IJCXExLCBxMSwgcTkKKwl2ZW9yCQlxOCwgcTYsIHExMAorCXZzdDEuOAkJe3EwLXExfSwgW3I4XSEKKwl2ZW9yCQlxOSwgcTQsIHExMQorCXZsZDEuNjQJCXtxMTR9LCBbcjAsOjEyOF0hCisJdmVvcgkJcTEwLCBxMiwgcTEyCisJdnN0MS44CQl7cTgtcTl9LCBbcjhdIQorCXZlb3IJCXExMSwgcTcsIHExMworCXZlb3IJCXExMiwgcTMsIHExNAorCXZzdDEuOAkJe3ExMC1xMTF9LCBbcjhdIQorCXZzdDEuOAkJe3ExMn0sIFtyOF0hCisKKwl2bGQxLjY0CQl7cTh9LCBbcjAsOjEyOF0JCUAgbmV4dCByb3VuZCB0d2VhaworCWIJCS5MeHRzX2RlY19kb25lCisuYWxpZ24JNAorLkx4dHNfZGVjXzY6CisJdnN0MS42NAkJe3ExNH0sIFtyMCw6MTI4XQkJQCBuZXh0IHJvdW5kIHR3ZWFrCisKKwl2ZW9yCQlxNCwgcTQsIHExMgorI2lmbmRlZglCU0FFU19BU01fRVhURU5ERURfS0VZCisJYWRkCQlyNCwgc3AsICMweDkwCQkJQCBwYXNzIGtleSBzY2hlZHVsZQorI2Vsc2UKKwlhZGQJCXI0LCByMTAsICMyNDgJCQlAIHBhc3Mga2V5IHNjaGVkdWxlCisjZW5kaWYKKwl2ZW9yCQlxNSwgcTUsIHExMworCW1vdgkJcjUsIHIxCQkJQCBwYXNzIHJvdW5kcworCW1vdgkJcjAsIHNwCisKKwlibAkJX2JzYWVzX2RlY3J5cHQ4CisKKwl2bGQxLjY0CQl7cTgtcTl9LCBbcjAsOjEyOF0hCisJdmxkMS42NAkJe3ExMC1xMTF9LCBbcjAsOjEyOF0hCisJdmVvcgkJcTAsIHEwLCBxOAorCXZsZDEuNjQJCXtxMTItcTEzfSwgW3IwLDoxMjhdIQorCXZlb3IJCXExLCBxMSwgcTkKKwl2ZW9yCQlxOCwgcTYsIHExMAorCXZzdDEuOAkJe3EwLXExfSwgW3I4XSEKKwl2ZW9yCQlxOSwgcTQsIHExMQorCXZlb3IJCXExMCwgcTIsIHExMgorCXZzdDEuOAkJe3E4LXE5fSwgW3I4XSEKKwl2ZW9yCQlxMTEsIHE3LCBxMTMKKwl2c3QxLjgJCXtxMTAtcTExfSwgW3I4XSEKKworCXZsZDEuNjQJCXtxOH0sIFtyMCw6MTI4XQkJQCBuZXh0IHJvdW5kIHR3ZWFrCisJYgkJLkx4dHNfZGVjX2RvbmUKKy5hbGlnbgk0CisuTHh0c19kZWNfNToKKwl2c3QxLjY0CQl7cTEzfSwgW3IwLDoxMjhdCQlAIG5leHQgcm91bmQgdHdlYWsKKworCXZlb3IJCXEzLCBxMywgcTExCisjaWZuZGVmCUJTQUVTX0FTTV9FWFRFTkRFRF9LRVkKKwlhZGQJCXI0LCBzcCwgIzB4OTAJCQlAIHBhc3Mga2V5IHNjaGVkdWxlCisjZWxzZQorCWFkZAkJcjQsIHIxMCwgIzI0OAkJCUAgcGFzcyBrZXkgc2NoZWR1bGUKKyNlbmRpZgorCXZlb3IJCXE0LCBxNCwgcTEyCisJbW92CQlyNSwgcjEJCQlAIHBhc3Mgcm91bmRzCisJbW92CQlyMCwgc3AKKworCWJsCQlfYnNhZXNfZGVjcnlwdDgKKworCXZsZDEuNjQJCXtxOC1xOX0sIFtyMCw6MTI4XSEKKwl2bGQxLjY0CQl7cTEwLXExMX0sIFtyMCw6MTI4XSEKKwl2ZW9yCQlxMCwgcTAsIHE4CisJdmxkMS42NAkJe3ExMn0sIFtyMCw6MTI4XSEKKwl2ZW9yCQlxMSwgcTEsIHE5CisJdmVvcgkJcTgsIHE2LCBxMTAKKwl2c3QxLjgJCXtxMC1xMX0sIFtyOF0hCisJdmVvcgkJcTksIHE0LCBxMTEKKwl2ZW9yCQlxMTAsIHEyLCBxMTIKKwl2c3QxLjgJCXtxOC1xOX0sIFtyOF0hCisJdnN0MS44CQl7cTEwfSwgW3I4XSEKKworCXZsZDEuNjQJCXtxOH0sIFtyMCw6MTI4XQkJQCBuZXh0IHJvdW5kIHR3ZWFrCisJYgkJLkx4dHNfZGVjX2RvbmUKKy5hbGlnbgk0CisuTHh0c19kZWNfNDoKKwl2c3QxLjY0CQl7cTEyfSwgW3IwLDoxMjhdCQlAIG5leHQgcm91bmQgdHdlYWsKKworCXZlb3IJCXEyLCBxMiwgcTEwCisjaWZuZGVmCUJTQUVTX0FTTV9FWFRFTkRFRF9LRVkKKwlhZGQJCXI0LCBzcCwgIzB4OTAJCQlAIHBhc3Mga2V5IHNjaGVkdWxlCisjZWxzZQorCWFkZAkJcjQsIHIxMCwgIzI0OAkJCUAgcGFzcyBrZXkgc2NoZWR1bGUKKyNlbmRpZgorCXZlb3IJCXEzLCBxMywgcTExCisJbW92CQlyNSwgcjEJCQlAIHBhc3Mgcm91bmRzCisJbW92CQlyMCwgc3AKKworCWJsCQlfYnNhZXNfZGVjcnlwdDgKKworCXZsZDEuNjQJCXtxOC1xOX0sIFtyMCw6MTI4XSEKKwl2bGQxLjY0CQl7cTEwLXExMX0sIFtyMCw6MTI4XSEKKwl2ZW9yCQlxMCwgcTAsIHE4CisJdmVvcgkJcTEsIHExLCBxOQorCXZlb3IJCXE4LCBxNiwgcTEwCisJdnN0MS44CQl7cTAtcTF9LCBbcjhdIQorCXZlb3IJCXE5LCBxNCwgcTExCisJdnN0MS44CQl7cTgtcTl9LCBbcjhdIQorCisJdmxkMS42NAkJe3E4fSwgW3IwLDoxMjhdCQlAIG5leHQgcm91bmQgdHdlYWsKKwliCQkuTHh0c19kZWNfZG9uZQorLmFsaWduCTQKKy5MeHRzX2RlY18zOgorCXZzdDEuNjQJCXtxMTF9LCBbcjAsOjEyOF0JCUAgbmV4dCByb3VuZCB0d2VhaworCisJdmVvcgkJcTEsIHExLCBxOQorI2lmbmRlZglCU0FFU19BU01fRVhURU5ERURfS0VZCisJYWRkCQlyNCwgc3AsICMweDkwCQkJQCBwYXNzIGtleSBzY2hlZHVsZQorI2Vsc2UKKwlhZGQJCXI0LCByMTAsICMyNDgJCQlAIHBhc3Mga2V5IHNjaGVkdWxlCisjZW5kaWYKKwl2ZW9yCQlxMiwgcTIsIHExMAorCW1vdgkJcjUsIHIxCQkJQCBwYXNzIHJvdW5kcworCW1vdgkJcjAsIHNwCisKKwlibAkJX2JzYWVzX2RlY3J5cHQ4CisKKwl2bGQxLjY0CQl7cTgtcTl9LCBbcjAsOjEyOF0hCisJdmxkMS42NAkJe3ExMH0sIFtyMCw6MTI4XSEKKwl2ZW9yCQlxMCwgcTAsIHE4CisJdmVvcgkJcTEsIHExLCBxOQorCXZlb3IJCXE4LCBxNiwgcTEwCisJdnN0MS44CQl7cTAtcTF9LCBbcjhdIQorCXZzdDEuOAkJe3E4fSwgW3I4XSEKKworCXZsZDEuNjQJCXtxOH0sIFtyMCw6MTI4XQkJQCBuZXh0IHJvdW5kIHR3ZWFrCisJYgkJLkx4dHNfZGVjX2RvbmUKKy5hbGlnbgk0CisuTHh0c19kZWNfMjoKKwl2c3QxLjY0CQl7cTEwfSwgW3IwLDoxMjhdCQlAIG5leHQgcm91bmQgdHdlYWsKKworCXZlb3IJCXEwLCBxMCwgcTgKKyNpZm5kZWYJQlNBRVNfQVNNX0VYVEVOREVEX0tFWQorCWFkZAkJcjQsIHNwLCAjMHg5MAkJCUAgcGFzcyBrZXkgc2NoZWR1bGUKKyNlbHNlCisJYWRkCQlyNCwgcjEwLCAjMjQ4CQkJQCBwYXNzIGtleSBzY2hlZHVsZQorI2VuZGlmCisJdmVvcgkJcTEsIHExLCBxOQorCW1vdgkJcjUsIHIxCQkJQCBwYXNzIHJvdW5kcworCW1vdgkJcjAsIHNwCisKKwlibAkJX2JzYWVzX2RlY3J5cHQ4CisKKwl2bGQxLjY0CQl7cTgtcTl9LCBbcjAsOjEyOF0hCisJdmVvcgkJcTAsIHEwLCBxOAorCXZlb3IJCXExLCBxMSwgcTkKKwl2c3QxLjgJCXtxMC1xMX0sIFtyOF0hCisKKwl2bGQxLjY0CQl7cTh9LCBbcjAsOjEyOF0JCUAgbmV4dCByb3VuZCB0d2VhaworCWIJCS5MeHRzX2RlY19kb25lCisuYWxpZ24JNAorLkx4dHNfZGVjXzE6CisJbW92CQlyMCwgc3AKKwl2ZW9yCQlxMCwgcTgKKwltb3YJCXIxLCBzcAorCXZzdDEuOAkJe3EwfSwgW3NwLDoxMjhdCisJbW92CQlyMiwgcjEwCisJbW92CQlyNCwgcjMJCQkJQCBwcmVzZXJ2ZSBmcAorCW1vdgkJcjUsIHIyCQkJQCBwcmVzZXJ2ZSBtYWdpYworCisJYmwJCUFFU19kZWNyeXB0CisKKwl2bGQxLjgJCXtxMH0sIFtzcCw6MTI4XQorCXZlb3IJCXEwLCBxMCwgcTgKKwl2c3QxLjgJCXtxMH0sIFtyOF0hCisJbW92CQlyMywgcjQKKwltb3YJCXIyLCByNQorCisJdm1vdgkJcTgsIHE5CQlAIG5leHQgcm91bmQgdHdlYWsKKworLkx4dHNfZGVjX2RvbmU6CisjaWZuZGVmCVhUU19DSEFJTl9UV0VBSworCWFkZHMJCXI5LCAjMHgxMAorCWJlcQkJLkx4dHNfZGVjX3JldAorCisJQCBjYWxjdWxhdGUgb25lIHJvdW5kIG9mIGV4dHJhIHR3ZWFrIGZvciB0aGUgc3RvbGVuIGNpcGhlcnRleHQKKwl2bGRtaWEJCXIyLCB7cTV9CisJdnNoci5zNjQJcTYsIHE4LCAjNjMKKwl2YW5kCQlxNiwgcTYsIHE1CisJdmFkZC51NjQJcTksIHE4LCBxOAorCXZzd3AJCWQxMyxkMTIKKwl2ZW9yCQlxOSwgcTksIHE2CisKKwlAIHBlcmZvcm0gdGhlIGZpbmFsIGRlY3J5cHRpb24gd2l0aCB0aGUgbGFzdCB0d2VhayB2YWx1ZQorCXZsZDEuOAkJe3EwfSwgW3I3XSEKKwltb3YJCXIwLCBzcAorCXZlb3IJCXEwLCBxMCwgcTkKKwltb3YJCXIxLCBzcAorCXZzdDEuOAkJe3EwfSwgW3NwLDoxMjhdCisJbW92CQlyMiwgcjEwCisJbW92CQlyNCwgcjMJCQlAIHByZXNlcnZlIGZwCisKKwlibAkJQUVTX2RlY3J5cHQKKworCXZsZDEuOAkJe3EwfSwgW3NwLDoxMjhdCisJdmVvcgkJcTAsIHEwLCBxOQorCXZzdDEuOAkJe3EwfSwgW3I4XQorCisJbW92CQlyNiwgcjgKKy5MeHRzX2RlY19zdGVhbDoKKwlsZHJiCQlyMSwgW3I4XQorCWxkcmIJCXIwLCBbcjddLCAjMQorCXN0cmIJCXIxLCBbcjgsICMweDEwXQorCXN0cmIJCXIwLCBbcjhdLCAjMQorCisJc3VicwkJcjksICMxCisJYmhpCQkuTHh0c19kZWNfc3RlYWwKKworCXZsZDEuOAkJe3EwfSwgW3I2XQorCW1vdgkJcjAsIHNwCisJdmVvcgkJcTAsIHE4CisJbW92CQlyMSwgc3AKKwl2c3QxLjgJCXtxMH0sIFtzcCw6MTI4XQorCW1vdgkJcjIsIHIxMAorCisJYmwJCUFFU19kZWNyeXB0CisKKwl2bGQxLjgJCXtxMH0sIFtzcCw6MTI4XQorCXZlb3IJCXEwLCBxMCwgcTgKKwl2c3QxLjgJCXtxMH0sIFtyNl0KKwltb3YJCXIzLCByNAorI2VuZGlmCisKKy5MeHRzX2RlY19yZXQ6CisJYmljCQlyMCwgcjMsICMweGYKKwl2bW92LmkzMglxMCwgIzAKKwl2bW92LmkzMglxMSwgIzAKKyNpZmRlZglYVFNfQ0hBSU5fVFdFQUsKKwlsZHIJCXIxLCBbcjMsICMweDIwK1ZGUF9BQklfRlJBTUVdCUAgY2hhaW4gdHdlYWsKKyNlbmRpZgorLkx4dHNfZGVjX2J6ZXJvOgkJCQlAIHdpcGUga2V5IHNjaGVkdWxlIFtpZiBhbnldCisJdnN0bWlhCQlzcCEsIHtxMC1xMX0KKwljbXAJCXNwLCByMAorCWJuZQkJLkx4dHNfZGVjX2J6ZXJvCisKKwltb3YJCXNwLCByMworI2lmZGVmCVhUU19DSEFJTl9UV0VBSworCXZzdDEuOAkJe3E4fSwgW3IxXQorI2VuZGlmCisJVkZQX0FCSV9QT1AKKwlsZG1pYQkJc3AhLCB7cjQtcjEwLCBwY30JQCByZXR1cm4KKworLnNpemUJYnNhZXNfeHRzX2RlY3J5cHQsLi1ic2Flc194dHNfZGVjcnlwdAorI2VuZGlmCmRpZmYgLS1naXQgYS9jcnlwdG8vYWVzL2FzbS9ic2Flcy1hcm12Ny5wbCBiL2NyeXB0by9hZXMvYXNtL2JzYWVzLWFybXY3LnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzZDk2ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9jcnlwdG8vYWVzL2FzbS9ic2Flcy1hcm12Ny5wbApAQCAtMCwwICsxLDI0NjcgQEAKKyMhL3Vzci9iaW4vZW52IHBlcmwKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBXcml0dGVuIGJ5IEFuZHkgUG9seWFrb3YgPGFwcHJvQG9wZW5zc2wub3JnPiBmb3IgdGhlIE9wZW5TU0wKKyMgcHJvamVjdC4gVGhlIG1vZHVsZSBpcywgaG93ZXZlciwgZHVhbCBsaWNlbnNlZCB1bmRlciBPcGVuU1NMIGFuZAorIyBDUllQVE9HQU1TIGxpY2Vuc2VzIGRlcGVuZGluZyBvbiB3aGVyZSB5b3Ugb2J0YWluIGl0LiBGb3IgZnVydGhlcgorIyBkZXRhaWxzIHNlZSBodHRwOi8vd3d3Lm9wZW5zc2wub3JnL35hcHByby9jcnlwdG9nYW1zLy4KKyMKKyMgU3BlY2lmaWMgbW9kZXMgYW5kIGFkYXB0YXRpb24gZm9yIExpbnV4IGtlcm5lbCBieSBBcmQgQmllc2hldXZlbAorIyA8YXJkLmJpZXNoZXV2ZWxAbGluYXJvLm9yZz4uIFBlcm1pc3Npb24gdG8gdXNlIHVuZGVyIEdQTCB0ZXJtcyBpcworIyBncmFudGVkLgorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisjIEJpdC1zbGljZWQgQUVTIGZvciBBUk0gTkVPTgorIworIyBGZWJydWFyeSAyMDEyLgorIworIyBUaGlzIGltcGxlbWVudGF0aW9uIGlzIGRpcmVjdCBhZGFwdGF0aW9uIG9mIGJzYWVzLXg4Nl82NCBtb2R1bGUgZm9yCisjIEFSTSBORU9OLiBFeGNlcHQgdGhhdCB0aGlzIG1vZHVsZSBpcyBlbmRpYW4tbmV1dHJhbCBbaW4gc2Vuc2UgdGhhdAorIyBpdCBjYW4gYmUgY29tcGlsZWQgZm9yIGVpdGhlciBlbmRpYW5uZXNzXSBieSBjb3VydGVzeSBvZiB2bGQxLjgncworIyBuZXV0cmFsaXR5LiBJbml0aWFsIHZlcnNpb24gZG9lc24ndCBpbXBsZW1lbnQgaW50ZXJmYWNlIHRvIE9wZW5TU0wsCisjIG9ubHkgbG93LWxldmVsIHByaW1pdGl2ZXMgYW5kIHVuc3VwcG9ydGVkIGVudHJ5IHBvaW50cywganVzdCBlbm91Z2gKKyMgdG8gY29sbGVjdCBwZXJmb3JtYW5jZSByZXN1bHRzLCB3aGljaCBmb3IgQ29ydGV4LUE4IGNvcmUgYXJlOgorIworIyBlbmNyeXB0CTE5LjUgY3ljbGVzIHBlciBieXRlIHByb2Nlc3NlZCB3aXRoIDEyOC1iaXQga2V5CisjIGRlY3J5cHQJMjIuMSBjeWNsZXMgcGVyIGJ5dGUgcHJvY2Vzc2VkIHdpdGggMTI4LWJpdCBrZXkKKyMga2V5IGNvbnYuCTQ0MCAgY3ljbGVzIHBlciAxMjgtYml0IGtleS8wLjE4IG9mIDh4IGJsb2NrCisjCisjIFNuYXBkcmFnb24gUzQgZW5jcnlwdHMgYnl0ZSBpbiAxNy42IGN5Y2xlcyBhbmQgZGVjcnlwdHMgaW4gMTkuNywKKyMgd2hpY2ggaXMgW211Y2hdIHdvcnNlIHRoYW4gYW50aWNpcGF0ZWQgKGZvciBmdXJ0aGVyIGRldGFpbHMgc2VlCisjIGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvfmFwcHJvL1NuYXBkcmFnb24tUzQuaHRtbCkuCisjCisjIENvcnRleC1BMTUgbWFuYWdlcyBpbiAxNC4yLzE2LjEgY3ljbGVzIFt3aGVuIGludGVnZXItb25seSBjb2RlCisjIG1hbmFnZXMgaW4gMjAuMCBjeWNsZXNdLgorIworIyBXaGVuIGNvbXBhcmluZyB0byB4ODZfNjQgcmVzdWx0cyBrZWVwIGluIG1pbmQgdGhhdCBORU9OIHVuaXQgaXMKKyMgW21vc3RseV0gc2luZ2xlLWlzc3VlIGFuZCB0aHVzIGNhbid0IFtmdWxseV0gYmVuZWZpdCBmcm9tCisjIGluc3RydWN0aW9uLWxldmVsIHBhcmFsbGVsaXNtLiBBbmQgd2hlbiBjb21wYXJpbmcgdG8gYWVzLWFybXY0CisjIHJlc3VsdHMga2VlcCBpbiBtaW5kIGtleSBzY2hlZHVsZSBjb252ZXJzaW9uIG92ZXJoZWFkIChzZWUKKyMgYnNhZXMteDg2XzY0LnBsIGZvciBmdXJ0aGVyIGRldGFpbHMpLi4uCisjCisjCQkJCQkJPGFwcHJvQG9wZW5zc2wub3JnPgorCisjIEFwcmlsLUF1Z3VzdCAyMDEzCisjCisjIEFkZCBDQkMsIENUUiBhbmQgWFRTIHN1YnJvdXRpbmVzLCBhZGFwdCBmb3Iga2VybmVsIHVzZS4KKyMKKyMJCQkJCTxhcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnPgorCit3aGlsZSAoKCRvdXRwdXQ9c2hpZnQpICYmICgkb3V0cHV0IX4vXlx3W1x3XC1dKlwuXHcrJC8pKSB7fQorb3BlbiBTVERPVVQsIj4kb3V0cHV0IjsKKworbXkgKCRpbnAsJG91dCwkbGVuLCRrZXkpPSgicjAiLCJyMSIsInIyIiwicjMiKTsKK215IEBYTU09bWFwKCJxJF8iLCgwLi4xNSkpOworCit7CitteSAoJGtleSwkcm91bmRzLCRjb25zdCk9KCJyNCIsInI1IiwicjYiKTsKKworc3ViIERsbygpICAgeyBzaGlmdD1+bXxxKFsxXT9bMC05XSl8PyJkIi4oJDEqMik6IiI7ICAgICB9CitzdWIgRGhpKCkgICB7IHNoaWZ0PX5tfHEoWzFdP1swLTldKXw/ImQiLigkMSoyKzEpOiIiOyAgIH0KKworc3ViIFNib3ggeworIyBpbnB1dCBpbiAgbHNiID4gW2IwLCBiMSwgYjIsIGIzLCBiNCwgYjUsIGI2LCBiN10gPCBtc2IKKyMgb3V0cHV0IGluIGxzYiA+IFtiMCwgYjEsIGI0LCBiNiwgYjMsIGI3LCBiMiwgYjVdIDwgbXNiCitteSBAYj1AX1swLi43XTsKK215IEB0PUBfWzguLjExXTsKK215IEBzPUBfWzEyLi4xNV07CisJJkluQmFzaXNDaGFuZ2UJKEBiKTsKKwkmSW52X0dGMjU2CShAYls2LDUsMCwzLDcsMSw0LDJdLEB0LEBzKTsKKwkmT3V0QmFzaXNDaGFuZ2UJKEBiWzcsMSw0LDIsNiw1LDAsM10pOworfQorCitzdWIgSW5CYXNpc0NoYW5nZSB7CisjIGlucHV0IGluICBsc2IgPiBbYjAsIGIxLCBiMiwgYjMsIGI0LCBiNSwgYjYsIGI3XSA8IG1zYgorIyBvdXRwdXQgaW4gbHNiID4gW2I2LCBiNSwgYjAsIGIzLCBiNywgYjEsIGI0LCBiMl0gPCBtc2IgCitteSBAYj1AX1swLi43XTsKKyRjb2RlLj08PF9fXzsKKwl2ZW9yCUBiWzJdLCBAYlsyXSwgQGJbMV0KKwl2ZW9yCUBiWzVdLCBAYls1XSwgQGJbNl0KKwl2ZW9yCUBiWzNdLCBAYlszXSwgQGJbMF0KKwl2ZW9yCUBiWzZdLCBAYls2XSwgQGJbMl0KKwl2ZW9yCUBiWzVdLCBAYls1XSwgQGJbMF0KKworCXZlb3IJQGJbNl0sIEBiWzZdLCBAYlszXQorCXZlb3IJQGJbM10sIEBiWzNdLCBAYls3XQorCXZlb3IJQGJbN10sIEBiWzddLCBAYls1XQorCXZlb3IJQGJbM10sIEBiWzNdLCBAYls0XQorCXZlb3IJQGJbNF0sIEBiWzRdLCBAYls1XQorCisJdmVvcglAYlsyXSwgQGJbMl0sIEBiWzddCisJdmVvcglAYlszXSwgQGJbM10sIEBiWzFdCisJdmVvcglAYlsxXSwgQGJbMV0sIEBiWzVdCitfX18KK30KKworc3ViIE91dEJhc2lzQ2hhbmdlIHsKKyMgaW5wdXQgaW4gIGxzYiA+IFtiMCwgYjEsIGIyLCBiMywgYjQsIGI1LCBiNiwgYjddIDwgbXNiCisjIG91dHB1dCBpbiBsc2IgPiBbYjYsIGIxLCBiMiwgYjQsIGI3LCBiMCwgYjMsIGI1XSA8IG1zYgorbXkgQGI9QF9bMC4uN107CiskY29kZS49PDxfX187CisJdmVvcglAYlswXSwgQGJbMF0sIEBiWzZdCisJdmVvcglAYlsxXSwgQGJbMV0sIEBiWzRdCisJdmVvcglAYls0XSwgQGJbNF0sIEBiWzZdCisJdmVvcglAYlsyXSwgQGJbMl0sIEBiWzBdCisJdmVvcglAYls2XSwgQGJbNl0sIEBiWzFdCisKKwl2ZW9yCUBiWzFdLCBAYlsxXSwgQGJbNV0KKwl2ZW9yCUBiWzVdLCBAYls1XSwgQGJbM10KKwl2ZW9yCUBiWzNdLCBAYlszXSwgQGJbN10KKwl2ZW9yCUBiWzddLCBAYls3XSwgQGJbNV0KKwl2ZW9yCUBiWzJdLCBAYlsyXSwgQGJbNV0KKworCXZlb3IJQGJbNF0sIEBiWzRdLCBAYls3XQorX19fCit9CisKK3N1YiBJbnZTYm94IHsKKyMgaW5wdXQgaW4gbHNiIAk+IFtiMCwgYjEsIGIyLCBiMywgYjQsIGI1LCBiNiwgYjddIDwgbXNiCisjIG91dHB1dCBpbiBsc2IJPiBbYjAsIGIxLCBiNiwgYjQsIGIyLCBiNywgYjMsIGI1XSA8IG1zYgorbXkgQGI9QF9bMC4uN107CitteSBAdD1AX1s4Li4xMV07CitteSBAcz1AX1sxMi4uMTVdOworCSZJbnZJbkJhc2lzQ2hhbmdlCShAYik7CisJJkludl9HRjI1NgkJKEBiWzUsMSwyLDYsMyw3LDAsNF0sQHQsQHMpOworCSZJbnZPdXRCYXNpc0NoYW5nZQkoQGJbMyw3LDAsNCw1LDEsMiw2XSk7Cit9CisKK3N1YiBJbnZJbkJhc2lzQ2hhbmdlIHsJCSMgT3V0QmFzaXNDaGFuZ2UgaW4gcmV2ZXJzZSAod2l0aCB0d2lzdCkKK215IEBiPUBfWzUsMSwyLDYsMyw3LDAsNF07CiskY29kZS49PDxfX18KKwkgdmVvcglAYlsxXSwgQGJbMV0sIEBiWzddCisJdmVvcglAYls0XSwgQGJbNF0sIEBiWzddCisKKwl2ZW9yCUBiWzddLCBAYls3XSwgQGJbNV0KKwkgdmVvcglAYlsxXSwgQGJbMV0sIEBiWzNdCisJdmVvcglAYlsyXSwgQGJbMl0sIEBiWzVdCisJdmVvcglAYlszXSwgQGJbM10sIEBiWzddCisKKwl2ZW9yCUBiWzZdLCBAYls2XSwgQGJbMV0KKwl2ZW9yCUBiWzJdLCBAYlsyXSwgQGJbMF0KKwkgdmVvcglAYls1XSwgQGJbNV0sIEBiWzNdCisJdmVvcglAYls0XSwgQGJbNF0sIEBiWzZdCisJdmVvcglAYlswXSwgQGJbMF0sIEBiWzZdCisJdmVvcglAYlsxXSwgQGJbMV0sIEBiWzRdCitfX18KK30KKworc3ViIEludk91dEJhc2lzQ2hhbmdlIHsJCSMgSW5CYXNpc0NoYW5nZSBpbiByZXZlcnNlCitteSBAYj1AX1syLDUsNywzLDYsMSwwLDRdOworJGNvZGUuPTw8X19fOworCXZlb3IJQGJbMV0sIEBiWzFdLCBAYls1XQorCXZlb3IJQGJbMl0sIEBiWzJdLCBAYls3XQorCisJdmVvcglAYlszXSwgQGJbM10sIEBiWzFdCisJdmVvcglAYls0XSwgQGJbNF0sIEBiWzVdCisJdmVvcglAYls3XSwgQGJbN10sIEBiWzVdCisJdmVvcglAYlszXSwgQGJbM10sIEBiWzRdCisJIHZlb3IgCUBiWzVdLCBAYls1XSwgQGJbMF0KKwl2ZW9yCUBiWzNdLCBAYlszXSwgQGJbN10KKwkgdmVvcglAYls2XSwgQGJbNl0sIEBiWzJdCisJIHZlb3IJQGJbMl0sIEBiWzJdLCBAYlsxXQorCXZlb3IJQGJbNl0sIEBiWzZdLCBAYlszXQorCisJdmVvcglAYlszXSwgQGJbM10sIEBiWzBdCisJdmVvcglAYls1XSwgQGJbNV0sIEBiWzZdCitfX18KK30KKworc3ViIE11bF9HRjQgeworIzsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjOyogTXVsX0dGNDogSW5wdXQgeDAteDEseTAteTEgT3V0cHV0IHgwLXgxIFRlbXAgdDAgKDgpICoKKyM7KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorbXkgKCR4MCwkeDEsJHkwLCR5MSwkdDAsJHQxKT1AXzsKKyRjb2RlLj08PF9fXzsKKwl2ZW9yIAkkdDAsICR5MCwgJHkxCisJdmFuZAkkdDAsICR0MCwgJHgwCisJdmVvcgkkeDAsICR4MCwgJHgxCisJdmFuZAkkdDEsICR4MSwgJHkwCisJdmFuZAkkeDAsICR4MCwgJHkxCisJdmVvcgkkeDEsICR0MSwgJHQwCisJdmVvcgkkeDAsICR4MCwgJHQxCitfX18KK30KKworc3ViIE11bF9HRjRfTiB7CQkJCSMgbm90IHVzZWQsIHNlZSBuZXh0IHN1YnJvdXRpbmUKKyMgbXVsdGlwbHkgYW5kIHNjYWxlIGJ5IE4KK215ICgkeDAsJHgxLCR5MCwkeTEsJHQwKT1AXzsKKyRjb2RlLj08PF9fXzsKKwl2ZW9yCSR0MCwgJHkwLCAkeTEKKwl2YW5kCSR0MCwgJHQwLCAkeDAKKwl2ZW9yCSR4MCwgJHgwLCAkeDEKKwl2YW5kCSR4MSwgJHgxLCAkeTAKKwl2YW5kCSR4MCwgJHgwLCAkeTEKKwl2ZW9yCSR4MSwgJHgxLCAkeDAKKwl2ZW9yCSR4MCwgJHgwLCAkdDAKK19fXworfQorCitzdWIgTXVsX0dGNF9OX0dGNCB7CisjIGludGVybGVhdmVkIE11bF9HRjRfTiBhbmQgTXVsX0dGNAorbXkgKCR4MCwkeDEsJHkwLCR5MSwkdDAsCisgICAgJHgyLCR4MywkeTIsJHkzLCR0MSk9QF87CiskY29kZS49PDxfX187CisJdmVvcgkkdDAsICR5MCwgJHkxCisJIHZlb3IgCSR0MSwgJHkyLCAkeTMKKwl2YW5kCSR0MCwgJHQwLCAkeDAKKwkgdmFuZAkkdDEsICR0MSwgJHgyCisJdmVvcgkkeDAsICR4MCwgJHgxCisJIHZlb3IJJHgyLCAkeDIsICR4MworCXZhbmQJJHgxLCAkeDEsICR5MAorCSB2YW5kCSR4MywgJHgzLCAkeTIKKwl2YW5kCSR4MCwgJHgwLCAkeTEKKwkgdmFuZAkkeDIsICR4MiwgJHkzCisJdmVvcgkkeDEsICR4MSwgJHgwCisJIHZlb3IJJHgyLCAkeDIsICR4MworCXZlb3IJJHgwLCAkeDAsICR0MAorCSB2ZW9yCSR4MywgJHgzLCAkdDEKK19fXworfQorc3ViIE11bF9HRjE2XzIgeworbXkgQHg9QF9bMC4uN107CitteSBAeT1AX1s4Li4xMV07CitteSBAdD1AX1sxMi4uMTVdOworJGNvZGUuPTw8X19fOworCXZlb3IJQHRbMF0sIEB4WzBdLCBAeFsyXQorCXZlb3IJQHRbMV0sIEB4WzFdLCBAeFszXQorX19fCisJJk11bF9HRjQgIAkoQHhbMF0sIEB4WzFdLCBAeVswXSwgQHlbMV0sIEB0WzIuLjNdKTsKKyRjb2RlLj08PF9fXzsKKwl2ZW9yCUB5WzBdLCBAeVswXSwgQHlbMl0KKwl2ZW9yCUB5WzFdLCBAeVsxXSwgQHlbM10KK19fXworCU11bF9HRjRfTl9HRjQJKEB0WzBdLCBAdFsxXSwgQHlbMF0sIEB5WzFdLCBAdFszXSwKKwkJCSBAeFsyXSwgQHhbM10sIEB5WzJdLCBAeVszXSwgQHRbMl0pOworJGNvZGUuPTw8X19fOworCXZlb3IJQHhbMF0sIEB4WzBdLCBAdFswXQorCXZlb3IJQHhbMl0sIEB4WzJdLCBAdFswXQorCXZlb3IJQHhbMV0sIEB4WzFdLCBAdFsxXQorCXZlb3IJQHhbM10sIEB4WzNdLCBAdFsxXQorCisJdmVvcglAdFswXSwgQHhbNF0sIEB4WzZdCisJdmVvcglAdFsxXSwgQHhbNV0sIEB4WzddCitfX18KKwkmTXVsX0dGNF9OX0dGNAkoQHRbMF0sIEB0WzFdLCBAeVswXSwgQHlbMV0sIEB0WzNdLAorCQkJIEB4WzZdLCBAeFs3XSwgQHlbMl0sIEB5WzNdLCBAdFsyXSk7CiskY29kZS49PDxfX187CisJdmVvcglAeVswXSwgQHlbMF0sIEB5WzJdCisJdmVvcglAeVsxXSwgQHlbMV0sIEB5WzNdCitfX18KKwkmTXVsX0dGNCAgCShAeFs0XSwgQHhbNV0sIEB5WzBdLCBAeVsxXSwgQHRbMi4uM10pOworJGNvZGUuPTw8X19fOworCXZlb3IJQHhbNF0sIEB4WzRdLCBAdFswXQorCXZlb3IJQHhbNl0sIEB4WzZdLCBAdFswXQorCXZlb3IJQHhbNV0sIEB4WzVdLCBAdFsxXQorCXZlb3IJQHhbN10sIEB4WzddLCBAdFsxXQorX19fCit9CitzdWIgSW52X0dGMjU2IHsKKyM7KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyM7KiBJbnZfR0YyNTY6IElucHV0IHgwLXg3IE91dHB1dCB4MC14NyBUZW1wIHQwLXQzLHMwLXMzICgxNDQpICAgICAgICoKKyM7KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK215IEB4PUBfWzAuLjddOworbXkgQHQ9QF9bOC4uMTFdOworbXkgQHM9QF9bMTIuLjE1XTsKKyMgZGlyZWN0IG9wdGltaXphdGlvbnMgZnJvbSBoYXJkd2FyZQorJGNvZGUuPTw8X19fOworCXZlb3IJQHRbM10sIEB4WzRdLCBAeFs2XQorCXZlb3IJQHRbMl0sIEB4WzVdLCBAeFs3XQorCXZlb3IJQHRbMV0sIEB4WzFdLCBAeFszXQorCXZlb3IJQHNbMV0sIEB4WzddLCBAeFs2XQorCSB2bW92CUB0WzBdLCBAdFsyXQorCXZlb3IJQHNbMF0sIEB4WzBdLCBAeFsyXQorCisJdm9ycglAdFsyXSwgQHRbMl0sIEB0WzFdCisJdmVvcglAc1szXSwgQHRbM10sIEB0WzBdCisJdmFuZAlAc1syXSwgQHRbM10sIEBzWzBdCisJdm9ycglAdFszXSwgQHRbM10sIEBzWzBdCisJdmVvcglAc1swXSwgQHNbMF0sIEB0WzFdCisJdmFuZAlAdFswXSwgQHRbMF0sIEB0WzFdCisJdmVvcglAdFsxXSwgQHhbM10sIEB4WzJdCisJdmFuZAlAc1szXSwgQHNbM10sIEBzWzBdCisJdmFuZAlAc1sxXSwgQHNbMV0sIEB0WzFdCisJdmVvcglAdFsxXSwgQHhbNF0sIEB4WzVdCisJdmVvcglAc1swXSwgQHhbMV0sIEB4WzBdCisJdmVvcglAdFszXSwgQHRbM10sIEBzWzFdCisJdmVvcglAdFsyXSwgQHRbMl0sIEBzWzFdCisJdmFuZAlAc1sxXSwgQHRbMV0sIEBzWzBdCisJdm9ycglAdFsxXSwgQHRbMV0sIEBzWzBdCisJdmVvcglAdFszXSwgQHRbM10sIEBzWzNdCisJdmVvcglAdFswXSwgQHRbMF0sIEBzWzFdCisJdmVvcglAdFsyXSwgQHRbMl0sIEBzWzJdCisJdmVvcglAdFsxXSwgQHRbMV0sIEBzWzNdCisJdmVvcglAdFswXSwgQHRbMF0sIEBzWzJdCisJdmFuZAlAc1swXSwgQHhbN10sIEB4WzNdCisJdmVvcglAdFsxXSwgQHRbMV0sIEBzWzJdCisJdmFuZAlAc1sxXSwgQHhbNl0sIEB4WzJdCisJdmFuZAlAc1syXSwgQHhbNV0sIEB4WzFdCisJdm9ycglAc1szXSwgQHhbNF0sIEB4WzBdCisJdmVvcglAdFszXSwgQHRbM10sIEBzWzBdCisJdmVvcglAdFsxXSwgQHRbMV0sIEBzWzJdCisJdmVvcglAdFswXSwgQHRbMF0sIEBzWzNdCisJdmVvcglAdFsyXSwgQHRbMl0sIEBzWzFdCisKKwlAIEludl9HRjE2IFx0MCwgXHQxLCBcdDIsIFx0MywgXHMwLCBcczEsIFxzMiwgXHMzCisKKwlAIG5ldyBzbWFsbGVyIGludmVyc2lvbgorCisJdmFuZAlAc1syXSwgQHRbM10sIEB0WzFdCisJdm1vdglAc1swXSwgQHRbMF0KKworCXZlb3IJQHNbMV0sIEB0WzJdLCBAc1syXQorCXZlb3IJQHNbM10sIEB0WzBdLCBAc1syXQorCXZlb3IJQHNbMl0sIEB0WzBdLCBAc1syXQlAIEBzWzJdPUBzWzNdCisKKwl2YnNsCUBzWzFdLCBAdFsxXSwgQHRbMF0KKwl2YnNsCUBzWzNdLCBAdFszXSwgQHRbMl0KKwl2ZW9yCUB0WzNdLCBAdFszXSwgQHRbMl0KKworCXZic2wJQHNbMF0sIEBzWzFdLCBAc1syXQorCXZic2wJQHRbMF0sIEBzWzJdLCBAc1sxXQorCisJdmFuZAlAc1syXSwgQHNbMF0sIEBzWzNdCisJdmVvcglAdFsxXSwgQHRbMV0sIEB0WzBdCisKKwl2ZW9yCUBzWzJdLCBAc1syXSwgQHRbM10KK19fXworIyBvdXRwdXQgaW4gczMsIHMyLCBzMSwgdDEKKworIyBNdWxfR0YxNl8yIFx4MCwgXHgxLCBceDIsIFx4MywgXHg0LCBceDUsIFx4NiwgXHg3LCBcdDIsIFx0MywgXHQwLCBcdDEsIFxzMCwgXHMxLCBcczIsIFxzMworCisjIE11bF9HRjE2XzIgXHgwLCBceDEsIFx4MiwgXHgzLCBceDQsIFx4NSwgXHg2LCBceDcsIFxzMywgXHMyLCBcczEsIFx0MSwgXHMwLCBcdDAsIFx0MiwgXHQzCisJJk11bF9HRjE2XzIoQHgsQHNbMywyLDFdLEB0WzFdLEBzWzBdLEB0WzAsMiwzXSk7CisKKyMjIyBvdXRwdXQgbXNiID4gW3gzLHgyLHgxLHgwLHg3LHg2LHg1LHg0XSA8IGxzYgorfQorCisjIEFFUyBsaW5lYXIgY29tcG9uZW50cworCitzdWIgU2hpZnRSb3dzIHsKK215IEB4PUBfWzAuLjddOworbXkgQHQ9QF9bOC4uMTFdOworbXkgJG1hc2s9cG9wOworJGNvZGUuPTw8X19fOworCXZsZG1pYQkka2V5ISwge0B0WzBdLUB0WzNdfQorCXZlb3IJQHRbMF0sIEB0WzBdLCBAeFswXQorCXZlb3IJQHRbMV0sIEB0WzFdLCBAeFsxXQorCXZ0YmwuOAlgJkRsbyhAeFswXSlgLCB7QHRbMF19LCBgJkRsbygkbWFzaylgCisJdnRibC44CWAmRGhpKEB4WzBdKWAsIHtAdFswXX0sIGAmRGhpKCRtYXNrKWAKKwl2bGRtaWEJJGtleSEsIHtAdFswXX0KKwl2ZW9yCUB0WzJdLCBAdFsyXSwgQHhbMl0KKwl2dGJsLjgJYCZEbG8oQHhbMV0pYCwge0B0WzFdfSwgYCZEbG8oJG1hc2spYAorCXZ0YmwuOAlgJkRoaShAeFsxXSlgLCB7QHRbMV19LCBgJkRoaSgkbWFzaylgCisJdmxkbWlhCSRrZXkhLCB7QHRbMV19CisJdmVvcglAdFszXSwgQHRbM10sIEB4WzNdCisJdnRibC44CWAmRGxvKEB4WzJdKWAsIHtAdFsyXX0sIGAmRGxvKCRtYXNrKWAKKwl2dGJsLjgJYCZEaGkoQHhbMl0pYCwge0B0WzJdfSwgYCZEaGkoJG1hc2spYAorCXZsZG1pYQkka2V5ISwge0B0WzJdfQorCXZ0YmwuOAlgJkRsbyhAeFszXSlgLCB7QHRbM119LCBgJkRsbygkbWFzaylgCisJdnRibC44CWAmRGhpKEB4WzNdKWAsIHtAdFszXX0sIGAmRGhpKCRtYXNrKWAKKwl2bGRtaWEJJGtleSEsIHtAdFszXX0KKwl2ZW9yCUB0WzBdLCBAdFswXSwgQHhbNF0KKwl2ZW9yCUB0WzFdLCBAdFsxXSwgQHhbNV0KKwl2dGJsLjgJYCZEbG8oQHhbNF0pYCwge0B0WzBdfSwgYCZEbG8oJG1hc2spYAorCXZ0YmwuOAlgJkRoaShAeFs0XSlgLCB7QHRbMF19LCBgJkRoaSgkbWFzaylgCisJdmVvcglAdFsyXSwgQHRbMl0sIEB4WzZdCisJdnRibC44CWAmRGxvKEB4WzVdKWAsIHtAdFsxXX0sIGAmRGxvKCRtYXNrKWAKKwl2dGJsLjgJYCZEaGkoQHhbNV0pYCwge0B0WzFdfSwgYCZEaGkoJG1hc2spYAorCXZlb3IJQHRbM10sIEB0WzNdLCBAeFs3XQorCXZ0YmwuOAlgJkRsbyhAeFs2XSlgLCB7QHRbMl19LCBgJkRsbygkbWFzaylgCisJdnRibC44CWAmRGhpKEB4WzZdKWAsIHtAdFsyXX0sIGAmRGhpKCRtYXNrKWAKKwl2dGJsLjgJYCZEbG8oQHhbN10pYCwge0B0WzNdfSwgYCZEbG8oJG1hc2spYAorCXZ0YmwuOAlgJkRoaShAeFs3XSlgLCB7QHRbM119LCBgJkRoaSgkbWFzaylgCitfX18KK30KKworc3ViIE1peENvbHVtbnMgeworIyBtb2RpZmllZCB0byBlbWl0IG91dHB1dCBpbiBvcmRlciBzdWl0YWJsZSBmb3IgZmVlZGluZyBiYWNrIHRvIGFlc2VuY1tsYXN0XQorbXkgQHg9QF9bMC4uN107CitteSBAdD1AX1s4Li4xNV07CitteSAkaW52PUBfWzE2XTsJIyBvcHRpb25hbAorJGNvZGUuPTw8X19fOworCXZleHQuOAlAdFswXSwgQHhbMF0sIEB4WzBdLCAjMTIJQCB4MCA8PDwgMzIKKwl2ZXh0LjgJQHRbMV0sIEB4WzFdLCBAeFsxXSwgIzEyCisJIHZlb3IJQHhbMF0sIEB4WzBdLCBAdFswXQkJQCB4MCBeICh4MCA8PDwgMzIpCisJdmV4dC44CUB0WzJdLCBAeFsyXSwgQHhbMl0sICMxMgorCSB2ZW9yCUB4WzFdLCBAeFsxXSwgQHRbMV0KKwl2ZXh0LjgJQHRbM10sIEB4WzNdLCBAeFszXSwgIzEyCisJIHZlb3IJQHhbMl0sIEB4WzJdLCBAdFsyXQorCXZleHQuOAlAdFs0XSwgQHhbNF0sIEB4WzRdLCAjMTIKKwkgdmVvcglAeFszXSwgQHhbM10sIEB0WzNdCisJdmV4dC44CUB0WzVdLCBAeFs1XSwgQHhbNV0sICMxMgorCSB2ZW9yCUB4WzRdLCBAeFs0XSwgQHRbNF0KKwl2ZXh0LjgJQHRbNl0sIEB4WzZdLCBAeFs2XSwgIzEyCisJIHZlb3IJQHhbNV0sIEB4WzVdLCBAdFs1XQorCXZleHQuOAlAdFs3XSwgQHhbN10sIEB4WzddLCAjMTIKKwkgdmVvcglAeFs2XSwgQHhbNl0sIEB0WzZdCisKKwl2ZW9yCUB0WzFdLCBAdFsxXSwgQHhbMF0KKwkgdmVvcglAeFs3XSwgQHhbN10sIEB0WzddCisJIHZleHQuOAlAeFswXSwgQHhbMF0sIEB4WzBdLCAjOAkJQCAoeDAgXiAoeDAgPDw8IDMyKSkgPDw8IDY0KQorCXZlb3IJQHRbMl0sIEB0WzJdLCBAeFsxXQorCXZlb3IJQHRbMF0sIEB0WzBdLCBAeFs3XQorCXZlb3IJQHRbMV0sIEB0WzFdLCBAeFs3XQorCSB2ZXh0LjgJQHhbMV0sIEB4WzFdLCBAeFsxXSwgIzgKKwl2ZW9yCUB0WzVdLCBAdFs1XSwgQHhbNF0KKwkgdmVvcglAeFswXSwgQHhbMF0sIEB0WzBdCisJdmVvcglAdFs2XSwgQHRbNl0sIEB4WzVdCisJIHZlb3IJQHhbMV0sIEB4WzFdLCBAdFsxXQorCSB2ZXh0LjgJQHRbMF0sIEB4WzRdLCBAeFs0XSwgIzgKKwl2ZW9yCUB0WzRdLCBAdFs0XSwgQHhbM10KKwkgdmV4dC44CUB0WzFdLCBAeFs1XSwgQHhbNV0sICM4CisJdmVvcglAdFs3XSwgQHRbN10sIEB4WzZdCisJIHZleHQuOAlAeFs0XSwgQHhbM10sIEB4WzNdLCAjOAorCXZlb3IJQHRbM10sIEB0WzNdLCBAeFsyXQorCSB2ZXh0LjgJQHhbNV0sIEB4WzddLCBAeFs3XSwgIzgKKwl2ZW9yCUB0WzRdLCBAdFs0XSwgQHhbN10KKwkgdmV4dC44CUB4WzNdLCBAeFs2XSwgQHhbNl0sICM4CisJdmVvcglAdFszXSwgQHRbM10sIEB4WzddCisJIHZleHQuOAlAeFs2XSwgQHhbMl0sIEB4WzJdLCAjOAorCXZlb3IJQHhbN10sIEB0WzFdLCBAdFs1XQorX19fCiskY29kZS49PDxfX18gaWYgKCEkaW52KTsKKwl2ZW9yCUB4WzJdLCBAdFswXSwgQHRbNF0KKwl2ZW9yCUB4WzRdLCBAeFs0XSwgQHRbM10KKwl2ZW9yCUB4WzVdLCBAeFs1XSwgQHRbN10KKwl2ZW9yCUB4WzNdLCBAeFszXSwgQHRbNl0KKwkgQCB2bW92CUB4WzJdLCBAdFswXQorCXZlb3IJQHhbNl0sIEB4WzZdLCBAdFsyXQorCSBAIHZtb3YJQHhbN10sIEB0WzFdCitfX18KKyRjb2RlLj08PF9fXyBpZiAoJGludik7CisJdmVvcglAdFszXSwgQHRbM10sIEB4WzRdCisJdmVvcglAeFs1XSwgQHhbNV0sIEB0WzddCisJdmVvcglAeFsyXSwgQHhbM10sIEB0WzZdCisJdmVvcglAeFszXSwgQHRbMF0sIEB0WzRdCisJdmVvcglAeFs0XSwgQHhbNl0sIEB0WzJdCisJdm1vdglAeFs2XSwgQHRbM10KKwkgQCB2bW92CUB4WzddLCBAdFsxXQorX19fCit9CisKK3N1YiBJbnZNaXhDb2x1bW5zX29yaWcgeworbXkgQHg9QF9bMC4uN107CitteSBAdD1AX1s4Li4xNV07CisKKyRjb2RlLj08PF9fXzsKKwlAIG11bHRpcGxpY2F0aW9uIGJ5IDB4MGUKKwl2ZXh0LjgJQHRbN10sIEB4WzddLCBAeFs3XSwgIzEyCisJdm1vdglAdFsyXSwgQHhbMl0KKwl2ZW9yCUB4WzJdLCBAeFsyXSwgQHhbNV0JCUAgMiA1CisJdmVvcglAeFs3XSwgQHhbN10sIEB4WzVdCQlAIDcgNQorCXZleHQuOAlAdFswXSwgQHhbMF0sIEB4WzBdLCAjMTIKKwl2bW92CUB0WzVdLCBAeFs1XQorCXZlb3IJQHhbNV0sIEB4WzVdLCBAeFswXQkJQCA1IDAJCVsxXQorCXZlb3IJQHhbMF0sIEB4WzBdLCBAeFsxXQkJQCAwIDEKKwl2ZXh0LjgJQHRbMV0sIEB4WzFdLCBAeFsxXSwgIzEyCisJdmVvcglAeFsxXSwgQHhbMV0sIEB4WzJdCQlAIDEgMjUKKwl2ZW9yCUB4WzBdLCBAeFswXSwgQHhbNl0JCUAgMDEgNgkJWzJdCisJdmV4dC44CUB0WzNdLCBAeFszXSwgQHhbM10sICMxMgorCXZlb3IJQHhbMV0sIEB4WzFdLCBAeFszXQkJQCAxMjUgMwkJWzRdCisJdmVvcglAeFsyXSwgQHhbMl0sIEB4WzBdCQlAIDI1IDAxNglbM10KKwl2ZW9yCUB4WzNdLCBAeFszXSwgQHhbN10JCUAgMyA3NQorCXZlb3IJQHhbN10sIEB4WzddLCBAeFs2XQkJQCA3NSA2CQlbMF0KKwl2ZXh0LjgJQHRbNl0sIEB4WzZdLCBAeFs2XSwgIzEyCisJdm1vdglAdFs0XSwgQHhbNF0KKwl2ZW9yCUB4WzZdLCBAeFs2XSwgQHhbNF0JCUAgNiA0CisJdmVvcglAeFs0XSwgQHhbNF0sIEB4WzNdCQlAIDQgMzc1CQlbNl0KKwl2ZW9yCUB4WzNdLCBAeFszXSwgQHhbN10JCUAgMzc1IDc1Nj0zNgorCXZlb3IJQHhbNl0sIEB4WzZdLCBAdFs1XQkJQCA2NCA1CQlbN10KKwl2ZW9yCUB4WzNdLCBAeFszXSwgQHRbMl0JCUAgMzYgMgorCXZleHQuOAlAdFs1XSwgQHRbNV0sIEB0WzVdLCAjMTIKKwl2ZW9yCUB4WzNdLCBAeFszXSwgQHRbNF0JCUAgMzYyIDQJCVs1XQorX19fCisJCQkJCW15IEB5ID0gQHhbNyw1LDAsMiwxLDMsNCw2XTsKKyRjb2RlLj08PF9fXzsKKwlAIG11bHRpcGxpY2F0aW9uIGJ5IDB4MGIKKwl2ZW9yCUB5WzFdLCBAeVsxXSwgQHlbMF0KKwl2ZW9yCUB5WzBdLCBAeVswXSwgQHRbMF0KKwl2ZXh0LjgJQHRbMl0sIEB0WzJdLCBAdFsyXSwgIzEyCisJdmVvcglAeVsxXSwgQHlbMV0sIEB0WzFdCisJdmVvcglAeVswXSwgQHlbMF0sIEB0WzVdCisJdmV4dC44CUB0WzRdLCBAdFs0XSwgQHRbNF0sICMxMgorCXZlb3IJQHlbMV0sIEB5WzFdLCBAdFs2XQorCXZlb3IJQHlbMF0sIEB5WzBdLCBAdFs3XQorCXZlb3IJQHRbN10sIEB0WzddLCBAdFs2XQkJQCBjbG9iYmVyIHRbN10KKworCXZlb3IJQHlbM10sIEB5WzNdLCBAdFswXQorCSB2ZW9yCUB5WzFdLCBAeVsxXSwgQHlbMF0KKwl2ZXh0LjgJQHRbMF0sIEB0WzBdLCBAdFswXSwgIzEyCisJdmVvcglAeVsyXSwgQHlbMl0sIEB0WzFdCisJdmVvcglAeVs0XSwgQHlbNF0sIEB0WzFdCisJdmV4dC44CUB0WzFdLCBAdFsxXSwgQHRbMV0sICMxMgorCXZlb3IJQHlbMl0sIEB5WzJdLCBAdFsyXQorCXZlb3IJQHlbM10sIEB5WzNdLCBAdFsyXQorCXZlb3IJQHlbNV0sIEB5WzVdLCBAdFsyXQorCXZlb3IJQHlbMl0sIEB5WzJdLCBAdFs3XQorCXZleHQuOAlAdFsyXSwgQHRbMl0sIEB0WzJdLCAjMTIKKwl2ZW9yCUB5WzNdLCBAeVszXSwgQHRbM10KKwl2ZW9yCUB5WzZdLCBAeVs2XSwgQHRbM10KKwl2ZW9yCUB5WzRdLCBAeVs0XSwgQHRbM10KKwl2ZW9yCUB5WzddLCBAeVs3XSwgQHRbNF0KKwl2ZXh0LjgJQHRbM10sIEB0WzNdLCBAdFszXSwgIzEyCisJdmVvcglAeVs1XSwgQHlbNV0sIEB0WzRdCisJdmVvcglAeVs3XSwgQHlbN10sIEB0WzddCisJdmVvcglAdFs3XSwgQHRbN10sIEB0WzVdCQlAIGNsb2JiZXIgdFs3XSBldmVuIG1vcmUKKwl2ZW9yCUB5WzNdLCBAeVszXSwgQHRbNV0KKwl2ZW9yCUB5WzRdLCBAeVs0XSwgQHRbNF0KKworCXZlb3IJQHlbNV0sIEB5WzVdLCBAdFs3XQorCXZleHQuOAlAdFs0XSwgQHRbNF0sIEB0WzRdLCAjMTIKKwl2ZW9yCUB5WzZdLCBAeVs2XSwgQHRbN10KKwl2ZW9yCUB5WzRdLCBAeVs0XSwgQHRbN10KKworCXZlb3IJQHRbN10sIEB0WzddLCBAdFs1XQorCXZleHQuOAlAdFs1XSwgQHRbNV0sIEB0WzVdLCAjMTIKKworCUAgbXVsdGlwbGljYXRpb24gYnkgMHgwZAorCXZlb3IJQHlbNF0sIEB5WzRdLCBAeVs3XQorCSB2ZW9yCUB0WzddLCBAdFs3XSwgQHRbNl0JCUAgcmVzdG9yZSB0WzddCisJdmVvcglAeVs3XSwgQHlbN10sIEB0WzRdCisJdmV4dC44CUB0WzZdLCBAdFs2XSwgQHRbNl0sICMxMgorCXZlb3IJQHlbMl0sIEB5WzJdLCBAdFswXQorCXZlb3IJQHlbN10sIEB5WzddLCBAdFs1XQorCXZleHQuOAlAdFs3XSwgQHRbN10sIEB0WzddLCAjMTIKKwl2ZW9yCUB5WzJdLCBAeVsyXSwgQHRbMl0KKworCXZlb3IJQHlbM10sIEB5WzNdLCBAeVsxXQorCXZlb3IJQHlbMV0sIEB5WzFdLCBAdFsxXQorCXZlb3IJQHlbMF0sIEB5WzBdLCBAdFswXQorCXZlb3IJQHlbM10sIEB5WzNdLCBAdFswXQorCXZlb3IJQHlbMV0sIEB5WzFdLCBAdFs1XQorCXZlb3IJQHlbMF0sIEB5WzBdLCBAdFs1XQorCXZleHQuOAlAdFswXSwgQHRbMF0sIEB0WzBdLCAjMTIKKwl2ZW9yCUB5WzFdLCBAeVsxXSwgQHRbN10KKwl2ZW9yCUB5WzBdLCBAeVswXSwgQHRbNl0KKwl2ZW9yCUB5WzNdLCBAeVszXSwgQHlbMV0KKwl2ZW9yCUB5WzRdLCBAeVs0XSwgQHRbMV0KKwl2ZXh0LjgJQHRbMV0sIEB0WzFdLCBAdFsxXSwgIzEyCisKKwl2ZW9yCUB5WzddLCBAeVs3XSwgQHRbN10KKwl2ZW9yCUB5WzRdLCBAeVs0XSwgQHRbMl0KKwl2ZW9yCUB5WzVdLCBAeVs1XSwgQHRbMl0KKwl2ZW9yCUB5WzJdLCBAeVsyXSwgQHRbNl0KKwl2ZW9yCUB0WzZdLCBAdFs2XSwgQHRbM10JCUAgY2xvYmJlciB0WzZdCisJdmV4dC44CUB0WzJdLCBAdFsyXSwgQHRbMl0sICMxMgorCXZlb3IJQHlbNF0sIEB5WzRdLCBAeVs3XQorCXZlb3IJQHlbM10sIEB5WzNdLCBAdFs2XQorCisJdmVvcglAeVs2XSwgQHlbNl0sIEB0WzZdCisJdmVvcglAeVs1XSwgQHlbNV0sIEB0WzVdCisJdmV4dC44CUB0WzVdLCBAdFs1XSwgQHRbNV0sICMxMgorCXZlb3IJQHlbNl0sIEB5WzZdLCBAdFs0XQorCXZleHQuOAlAdFs0XSwgQHRbNF0sIEB0WzRdLCAjMTIKKwl2ZW9yCUB5WzVdLCBAeVs1XSwgQHRbNl0KKwl2ZW9yCUB5WzZdLCBAeVs2XSwgQHRbN10KKwl2ZXh0LjgJQHRbN10sIEB0WzddLCBAdFs3XSwgIzEyCisJdmVvcglAdFs2XSwgQHRbNl0sIEB0WzNdCQlAIHJlc3RvcmUgdFs2XQorCXZleHQuOAlAdFszXSwgQHRbM10sIEB0WzNdLCAjMTIKKworCUAgbXVsdGlwbGljYXRpb24gYnkgMHgwOQorCXZlb3IJQHlbNF0sIEB5WzRdLCBAeVsxXQorCXZlb3IJQHRbMV0sIEB0WzFdLCBAeVsxXQkJQCB0WzFdPXlbMV0KKwl2ZW9yCUB0WzBdLCBAdFswXSwgQHRbNV0JCUAgY2xvYmJlciB0WzBdCisJdmV4dC44CUB0WzZdLCBAdFs2XSwgQHRbNl0sICMxMgorCXZlb3IJQHRbMV0sIEB0WzFdLCBAdFs1XQorCXZlb3IJQHlbM10sIEB5WzNdLCBAdFswXQorCXZlb3IJQHRbMF0sIEB0WzBdLCBAeVswXQkJQCB0WzBdPXlbMF0KKwl2ZW9yCUB0WzFdLCBAdFsxXSwgQHRbNl0KKwl2ZW9yCUB0WzZdLCBAdFs2XSwgQHRbN10JCUAgY2xvYmJlciB0WzZdCisJdmVvcglAeVs0XSwgQHlbNF0sIEB0WzFdCisJdmVvcglAeVs3XSwgQHlbN10sIEB0WzRdCisJdmVvcglAeVs2XSwgQHlbNl0sIEB0WzNdCisJdmVvcglAeVs1XSwgQHlbNV0sIEB0WzJdCisJdmVvcglAdFs0XSwgQHRbNF0sIEB5WzRdCQlAIHRbNF09eVs0XQorCXZlb3IJQHRbM10sIEB0WzNdLCBAeVszXQkJQCB0WzNdPXlbM10KKwl2ZW9yCUB0WzVdLCBAdFs1XSwgQHlbNV0JCUAgdFs1XT15WzVdCisJdmVvcglAdFsyXSwgQHRbMl0sIEB5WzJdCQlAIHRbMl09eVsyXQorCXZlb3IJQHRbM10sIEB0WzNdLCBAdFs3XQorCXZlb3IJQFhNTVs1XSwgQHRbNV0sIEB0WzZdCisJdmVvcglAWE1NWzZdLCBAdFs2XSwgQHlbNl0JCUAgdFs2XT15WzZdCisJdmVvcglAWE1NWzJdLCBAdFsyXSwgQHRbNl0KKwl2ZW9yCUBYTU1bN10sIEB0WzddLCBAeVs3XQkJQCB0WzddPXlbN10KKworCXZtb3YJQFhNTVswXSwgQHRbMF0KKwl2bW92CUBYTU1bMV0sIEB0WzFdCisJQCB2bW92CUBYTU1bMl0sIEB0WzJdCisJdm1vdglAWE1NWzNdLCBAdFszXQorCXZtb3YJQFhNTVs0XSwgQHRbNF0KKwlAIHZtb3YJQFhNTVs1XSwgQHRbNV0KKwlAIHZtb3YJQFhNTVs2XSwgQHRbNl0KKwlAIHZtb3YJQFhNTVs3XSwgQHRbN10KK19fXworfQorCitzdWIgSW52TWl4Q29sdW1ucyB7CitteSBAeD1AX1swLi43XTsKK215IEB0PUBfWzguLjE1XTsKKworIyBUaGFua3MgdG8gSnVzc2kgS2l2aWxpbm5hIGZvciBwcm92aWRpbmcgcG9pbnRlciB0bworIworIyB8IDBlIDBiIDBkIDA5IHwgICB8IDAyIDAzIDAxIDAxIHwgICB8IDA1IDAwIDA0IDAwIHwKKyMgfCAwOSAwZSAwYiAwZCB8ID0gfCAwMSAwMiAwMyAwMSB8IHggfCAwMCAwNSAwMCAwNCB8CisjIHwgMGQgMDkgMGUgMGIgfCAgIHwgMDEgMDEgMDIgMDMgfCAgIHwgMDQgMDAgMDUgMDAgfAorIyB8IDBiIDBkIDA5IDBlIHwgICB8IDAzIDAxIDAxIDAyIHwgICB8IDAwIDA0IDAwIDA1IHwKKworJGNvZGUuPTw8X19fOworCUAgbXVsdGlwbGljYXRpb24gYnkgMHgwNS0weDAwLTB4MDQtMHgwMAorCXZleHQuOAlAdFswXSwgQHhbMF0sIEB4WzBdLCAjOAorCXZleHQuOAlAdFs2XSwgQHhbNl0sIEB4WzZdLCAjOAorCXZleHQuOAlAdFs3XSwgQHhbN10sIEB4WzddLCAjOAorCXZlb3IJQHRbMF0sIEB0WzBdLCBAeFswXQorCXZleHQuOAlAdFsxXSwgQHhbMV0sIEB4WzFdLCAjOAorCXZlb3IJQHRbNl0sIEB0WzZdLCBAeFs2XQorCXZleHQuOAlAdFsyXSwgQHhbMl0sIEB4WzJdLCAjOAorCXZlb3IJQHRbN10sIEB0WzddLCBAeFs3XQorCXZleHQuOAlAdFszXSwgQHhbM10sIEB4WzNdLCAjOAorCXZlb3IJQHRbMV0sIEB0WzFdLCBAeFsxXQorCXZleHQuOAlAdFs0XSwgQHhbNF0sIEB4WzRdLCAjOAorCXZlb3IJQHRbMl0sIEB0WzJdLCBAeFsyXQorCXZleHQuOAlAdFs1XSwgQHhbNV0sIEB4WzVdLCAjOAorCXZlb3IJQHRbM10sIEB0WzNdLCBAeFszXQorCXZlb3IJQHRbNF0sIEB0WzRdLCBAeFs0XQorCXZlb3IJQHRbNV0sIEB0WzVdLCBAeFs1XQorCisJIHZlb3IJQHhbMF0sIEB4WzBdLCBAdFs2XQorCSB2ZW9yCUB4WzFdLCBAeFsxXSwgQHRbNl0KKwkgdmVvcglAeFsyXSwgQHhbMl0sIEB0WzBdCisJIHZlb3IJQHhbNF0sIEB4WzRdLCBAdFsyXQorCSB2ZW9yCUB4WzNdLCBAeFszXSwgQHRbMV0KKwkgdmVvcglAeFsxXSwgQHhbMV0sIEB0WzddCisJIHZlb3IJQHhbMl0sIEB4WzJdLCBAdFs3XQorCSB2ZW9yCUB4WzRdLCBAeFs0XSwgQHRbNl0KKwkgdmVvcglAeFs1XSwgQHhbNV0sIEB0WzNdCisJIHZlb3IJQHhbM10sIEB4WzNdLCBAdFs2XQorCSB2ZW9yCUB4WzZdLCBAeFs2XSwgQHRbNF0KKwkgdmVvcglAeFs0XSwgQHhbNF0sIEB0WzddCisJIHZlb3IJQHhbNV0sIEB4WzVdLCBAdFs3XQorCSB2ZW9yCUB4WzddLCBAeFs3XSwgQHRbNV0KK19fXworCSZNaXhDb2x1bW5zCShAeCxAdCwxKTsJIyBmbGlwcGVkIDI8LT4zIGFuZCA0PC0+NgorfQorCitzdWIgc3dhcG1vdmUgeworbXkgKCRhLCRiLCRuLCRtYXNrLCR0KT1AXzsKKyRjb2RlLj08PF9fXzsKKwl2c2hyLnU2NAkkdCwgJGIsICMkbgorCXZlb3IJCSR0LCAkdCwgJGEKKwl2YW5kCQkkdCwgJHQsICRtYXNrCisJdmVvcgkJJGEsICRhLCAkdAorCXZzaGwudTY0CSR0LCAkdCwgIyRuCisJdmVvcgkJJGIsICRiLCAkdAorX19fCit9CitzdWIgc3dhcG1vdmUyeCB7CitteSAoJGEwLCRiMCwkYTEsJGIxLCRuLCRtYXNrLCR0MCwkdDEpPUBfOworJGNvZGUuPTw8X19fOworCXZzaHIudTY0CSR0MCwgJGIwLCAjJG4KKwkgdnNoci51NjQJJHQxLCAkYjEsICMkbgorCXZlb3IJCSR0MCwgJHQwLCAkYTAKKwkgdmVvcgkJJHQxLCAkdDEsICRhMQorCXZhbmQJCSR0MCwgJHQwLCAkbWFzaworCSB2YW5kCQkkdDEsICR0MSwgJG1hc2sKKwl2ZW9yCQkkYTAsICRhMCwgJHQwCisJdnNobC51NjQJJHQwLCAkdDAsICMkbgorCSB2ZW9yCQkkYTEsICRhMSwgJHQxCisJIHZzaGwudTY0CSR0MSwgJHQxLCAjJG4KKwl2ZW9yCQkkYjAsICRiMCwgJHQwCisJIHZlb3IJCSRiMSwgJGIxLCAkdDEKK19fXworfQorCitzdWIgYml0c2xpY2UgeworbXkgQHg9cmV2ZXJzZShAX1swLi43XSk7CitteSAoJHQwLCR0MSwkdDIsJHQzKT1AX1s4Li4xMV07CiskY29kZS49PDxfX187CisJdm1vdi5pOAkkdDAsIzB4NTUJCQlAIGNvbXBvc2UgLkxCUzAKKwl2bW92Lmk4CSR0MSwjMHgzMwkJCUAgY29tcG9zZSAuTEJTMQorX19fCisJJnN3YXBtb3ZlMngoQHhbMCwxLDIsM10sMSwkdDAsJHQyLCR0Myk7CisJJnN3YXBtb3ZlMngoQHhbNCw1LDYsN10sMSwkdDAsJHQyLCR0Myk7CiskY29kZS49PDxfX187CisJdm1vdi5pOAkkdDAsIzB4MGYJCQlAIGNvbXBvc2UgLkxCUzIKK19fXworCSZzd2FwbW92ZTJ4KEB4WzAsMiwxLDNdLDIsJHQxLCR0MiwkdDMpOworCSZzd2FwbW92ZTJ4KEB4WzQsNiw1LDddLDIsJHQxLCR0MiwkdDMpOworCisJJnN3YXBtb3ZlMngoQHhbMCw0LDEsNV0sNCwkdDAsJHQyLCR0Myk7CisJJnN3YXBtb3ZlMngoQHhbMiw2LDMsN10sNCwkdDAsJHQyLCR0Myk7Cit9CisKKyRjb2RlLj08PF9fXzsKKyNpZm5kZWYgX19LRVJORUxfXworIyBpbmNsdWRlICJhcm1fYXJjaC5oIgorCisjIGRlZmluZSBWRlBfQUJJX1BVU0gJdnN0bWRiCXNwISx7ZDgtZDE1fQorIyBkZWZpbmUgVkZQX0FCSV9QT1AJdmxkbWlhCXNwISx7ZDgtZDE1fQorIyBkZWZpbmUgVkZQX0FCSV9GUkFNRQkweDQwCisjZWxzZQorIyBkZWZpbmUgVkZQX0FCSV9QVVNICisjIGRlZmluZSBWRlBfQUJJX1BPUAorIyBkZWZpbmUgVkZQX0FCSV9GUkFNRQkwCisjIGRlZmluZSBCU0FFU19BU01fRVhURU5ERURfS0VZCisjIGRlZmluZSBYVFNfQ0hBSU5fVFdFQUsKKyMgZGVmaW5lIF9fQVJNX0FSQ0hfXyBfX0xJTlVYX0FSTV9BUkNIX18KKyNlbmRpZgorCisjaWZkZWYgX190aHVtYl9fCisjIGRlZmluZSBhZHJsIGFkcgorI2VuZGlmCisKKyNpZiBfX0FSTV9BUkNIX18+PTcKKy50ZXh0Cisuc3ludGF4CXVuaWZpZWQgCUAgQVJNdjctY2FwYWJsZSBhc3NlbWJsZXIgaXMgZXhwZWN0ZWQgdG8gaGFuZGxlIHRoaXMKKyNpZmRlZiBfX3RodW1iMl9fCisudGh1bWIKKyNlbHNlCisuY29kZSAgIDMyCisjZW5kaWYKKworLmZwdQluZW9uCisKKy50eXBlCV9ic2Flc19kZWNyeXB0OCwlZnVuY3Rpb24KKy5hbGlnbgk0CitfYnNhZXNfZGVjcnlwdDg6CisJYWRyCSRjb25zdCxfYnNhZXNfZGVjcnlwdDgKKwl2bGRtaWEJJGtleSEsIHtAWE1NWzldfQkJQCByb3VuZCAwIGtleQorCWFkZAkkY29uc3QsJGNvbnN0LCMuTE0wSVNSLV9ic2Flc19kZWNyeXB0OAorCisJdmxkbWlhCSRjb25zdCEsIHtAWE1NWzhdfQkJQCAuTE0wSVNSCisJdmVvcglAWE1NWzEwXSwgQFhNTVswXSwgQFhNTVs5XQlAIHhvciB3aXRoIHJvdW5kMCBrZXkKKwl2ZW9yCUBYTU1bMTFdLCBAWE1NWzFdLCBAWE1NWzldCisJIHZ0YmwuOAlgJkRsbyhAWE1NWzBdKWAsIHtAWE1NWzEwXX0sIGAmRGxvKEBYTU1bOF0pYAorCSB2dGJsLjgJYCZEaGkoQFhNTVswXSlgLCB7QFhNTVsxMF19LCBgJkRoaShAWE1NWzhdKWAKKwl2ZW9yCUBYTU1bMTJdLCBAWE1NWzJdLCBAWE1NWzldCisJIHZ0YmwuOAlgJkRsbyhAWE1NWzFdKWAsIHtAWE1NWzExXX0sIGAmRGxvKEBYTU1bOF0pYAorCSB2dGJsLjgJYCZEaGkoQFhNTVsxXSlgLCB7QFhNTVsxMV19LCBgJkRoaShAWE1NWzhdKWAKKwl2ZW9yCUBYTU1bMTNdLCBAWE1NWzNdLCBAWE1NWzldCisJIHZ0YmwuOAlgJkRsbyhAWE1NWzJdKWAsIHtAWE1NWzEyXX0sIGAmRGxvKEBYTU1bOF0pYAorCSB2dGJsLjgJYCZEaGkoQFhNTVsyXSlgLCB7QFhNTVsxMl19LCBgJkRoaShAWE1NWzhdKWAKKwl2ZW9yCUBYTU1bMTRdLCBAWE1NWzRdLCBAWE1NWzldCisJIHZ0YmwuOAlgJkRsbyhAWE1NWzNdKWAsIHtAWE1NWzEzXX0sIGAmRGxvKEBYTU1bOF0pYAorCSB2dGJsLjgJYCZEaGkoQFhNTVszXSlgLCB7QFhNTVsxM119LCBgJkRoaShAWE1NWzhdKWAKKwl2ZW9yCUBYTU1bMTVdLCBAWE1NWzVdLCBAWE1NWzldCisJIHZ0YmwuOAlgJkRsbyhAWE1NWzRdKWAsIHtAWE1NWzE0XX0sIGAmRGxvKEBYTU1bOF0pYAorCSB2dGJsLjgJYCZEaGkoQFhNTVs0XSlgLCB7QFhNTVsxNF19LCBgJkRoaShAWE1NWzhdKWAKKwl2ZW9yCUBYTU1bMTBdLCBAWE1NWzZdLCBAWE1NWzldCisJIHZ0YmwuOAlgJkRsbyhAWE1NWzVdKWAsIHtAWE1NWzE1XX0sIGAmRGxvKEBYTU1bOF0pYAorCSB2dGJsLjgJYCZEaGkoQFhNTVs1XSlgLCB7QFhNTVsxNV19LCBgJkRoaShAWE1NWzhdKWAKKwl2ZW9yCUBYTU1bMTFdLCBAWE1NWzddLCBAWE1NWzldCisJIHZ0YmwuOAlgJkRsbyhAWE1NWzZdKWAsIHtAWE1NWzEwXX0sIGAmRGxvKEBYTU1bOF0pYAorCSB2dGJsLjgJYCZEaGkoQFhNTVs2XSlgLCB7QFhNTVsxMF19LCBgJkRoaShAWE1NWzhdKWAKKwkgdnRibC44CWAmRGxvKEBYTU1bN10pYCwge0BYTU1bMTFdfSwgYCZEbG8oQFhNTVs4XSlgCisJIHZ0YmwuOAlgJkRoaShAWE1NWzddKWAsIHtAWE1NWzExXX0sIGAmRGhpKEBYTU1bOF0pYAorX19fCisJJmJpdHNsaWNlCShAWE1NWzAuLjcsIDguLjExXSk7CiskY29kZS49PDxfX187CisJc3ViCSRyb3VuZHMsJHJvdW5kcywjMQorCWIJLkxkZWNfc2JveAorLmFsaWduCTQKKy5MZGVjX2xvb3A6CitfX18KKwkmU2hpZnRSb3dzCShAWE1NWzAuLjcsIDguLjEyXSk7CiskY29kZS49Ii5MZGVjX3Nib3g6XG4iOworCSZJbnZTYm94CShAWE1NWzAuLjcsIDguLjE1XSk7CiskY29kZS49PDxfX187CisJc3Vicwkkcm91bmRzLCRyb3VuZHMsIzEKKwliY2MJLkxkZWNfZG9uZQorX19fCisJJkludk1peENvbHVtbnMJKEBYTU1bMCwxLDYsNCwyLDcsMyw1LCA4Li4xNV0pOworJGNvZGUuPTw8X19fOworCXZsZG1pYQkkY29uc3QsIHtAWE1NWzEyXX0JCUAgLkxJU1IKKwlpdGUJZXEJCQkJQCBUaHVtYjIgdGhpbmcsIHNhbml0eSBjaGVjayBpbiBBUk0KKwlhZGRlcQkkY29uc3QsJGNvbnN0LCMweDEwCisJYm5lCS5MZGVjX2xvb3AKKwl2bGRtaWEJJGNvbnN0LCB7QFhNTVsxMl19CQlAIC5MSVNSTTAKKwliCS5MZGVjX2xvb3AKKy5hbGlnbgk0CisuTGRlY19kb25lOgorX19fCisJJmJpdHNsaWNlCShAWE1NWzAsMSw2LDQsMiw3LDMsNSwgOC4uMTFdKTsKKyRjb2RlLj08PF9fXzsKKwl2bGRtaWEJJGtleSwge0BYTU1bOF19CQkJQCBsYXN0IHJvdW5kIGtleQorCXZlb3IJQFhNTVs2XSwgQFhNTVs2XSwgQFhNTVs4XQorCXZlb3IJQFhNTVs0XSwgQFhNTVs0XSwgQFhNTVs4XQorCXZlb3IJQFhNTVsyXSwgQFhNTVsyXSwgQFhNTVs4XQorCXZlb3IJQFhNTVs3XSwgQFhNTVs3XSwgQFhNTVs4XQorCXZlb3IJQFhNTVszXSwgQFhNTVszXSwgQFhNTVs4XQorCXZlb3IJQFhNTVs1XSwgQFhNTVs1XSwgQFhNTVs4XQorCXZlb3IJQFhNTVswXSwgQFhNTVswXSwgQFhNTVs4XQorCXZlb3IJQFhNTVsxXSwgQFhNTVsxXSwgQFhNTVs4XQorCWJ4CWxyCisuc2l6ZQlfYnNhZXNfZGVjcnlwdDgsLi1fYnNhZXNfZGVjcnlwdDgKKworLnR5cGUJX2JzYWVzX2NvbnN0LCVvYmplY3QKKy5hbGlnbgk2CitfYnNhZXNfY29uc3Q6CisuTE0wSVNSOglAIEludlNoaWZ0Um93cyBjb25zdGFudHMKKwkucXVhZAkweDBhMGUwMjA2MDcwYjBmMDMsIDB4MDAwNDA4MGMwZDAxMDUwOQorLkxJU1I6CisJLnF1YWQJMHgwNTA0MDcwNjAyMDEwMDAzLCAweDBmMGUwZDBjMDgwYjBhMDkKKy5MSVNSTTA6CisJLnF1YWQJMHgwMTA0MGIwZTAyMDUwODBmLCAweDAzMDYwOTBjMDAwNzBhMGQKKy5MTTBTUjoJCUAgU2hpZnRSb3dzIGNvbnN0YW50cworCS5xdWFkCTB4MGEwZTAyMDYwZjAzMDcwYiwgMHgwMDA0MDgwYzA1MDkwZDAxCisuTFNSOgorCS5xdWFkCTB4MDUwNDA3MDYwMDAzMDIwMSwgMHgwZjBlMGQwYzBhMDkwODBiCisuTFNSTTA6CisJLnF1YWQJMHgwMzA0MDkwZTAwMDUwYTBmLCAweDAxMDYwYjBjMDIwNzA4MGQKKy5MTTA6CisJLnF1YWQJMHgwMjA2MGEwZTAzMDcwYjBmLCAweDAwMDQwODBjMDEwNTA5MGQKKy5MUkVWTTBTUjoKKwkucXVhZAkweDA5MGQwMTA1MGMwMDA0MDgsIDB4MDMwNzBiMGYwNjBhMGUwMgorLmFzY2l6CSJCaXQtc2xpY2VkIEFFUyBmb3IgTkVPTiwgQ1JZUFRPR0FNUyBieSA8YXBwcm9cQG9wZW5zc2wub3JnPiIKKy5hbGlnbgk2Cisuc2l6ZQlfYnNhZXNfY29uc3QsLi1fYnNhZXNfY29uc3QKKworLnR5cGUJX2JzYWVzX2VuY3J5cHQ4LCVmdW5jdGlvbgorLmFsaWduCTQKK19ic2Flc19lbmNyeXB0ODoKKwlhZHIJJGNvbnN0LF9ic2Flc19lbmNyeXB0OAorCXZsZG1pYQkka2V5ISwge0BYTU1bOV19CQlAIHJvdW5kIDAga2V5CisJc3ViCSRjb25zdCwkY29uc3QsI19ic2Flc19lbmNyeXB0OC0uTE0wU1IKKworCXZsZG1pYQkkY29uc3QhLCB7QFhNTVs4XX0JCUAgLkxNMFNSCitfYnNhZXNfZW5jcnlwdDhfYWx0OgorCXZlb3IJQFhNTVsxMF0sIEBYTU1bMF0sIEBYTU1bOV0JQCB4b3Igd2l0aCByb3VuZDAga2V5CisJdmVvcglAWE1NWzExXSwgQFhNTVsxXSwgQFhNTVs5XQorCSB2dGJsLjgJYCZEbG8oQFhNTVswXSlgLCB7QFhNTVsxMF19LCBgJkRsbyhAWE1NWzhdKWAKKwkgdnRibC44CWAmRGhpKEBYTU1bMF0pYCwge0BYTU1bMTBdfSwgYCZEaGkoQFhNTVs4XSlgCisJdmVvcglAWE1NWzEyXSwgQFhNTVsyXSwgQFhNTVs5XQorCSB2dGJsLjgJYCZEbG8oQFhNTVsxXSlgLCB7QFhNTVsxMV19LCBgJkRsbyhAWE1NWzhdKWAKKwkgdnRibC44CWAmRGhpKEBYTU1bMV0pYCwge0BYTU1bMTFdfSwgYCZEaGkoQFhNTVs4XSlgCisJdmVvcglAWE1NWzEzXSwgQFhNTVszXSwgQFhNTVs5XQorCSB2dGJsLjgJYCZEbG8oQFhNTVsyXSlgLCB7QFhNTVsxMl19LCBgJkRsbyhAWE1NWzhdKWAKKwkgdnRibC44CWAmRGhpKEBYTU1bMl0pYCwge0BYTU1bMTJdfSwgYCZEaGkoQFhNTVs4XSlgCisJdmVvcglAWE1NWzE0XSwgQFhNTVs0XSwgQFhNTVs5XQorCSB2dGJsLjgJYCZEbG8oQFhNTVszXSlgLCB7QFhNTVsxM119LCBgJkRsbyhAWE1NWzhdKWAKKwkgdnRibC44CWAmRGhpKEBYTU1bM10pYCwge0BYTU1bMTNdfSwgYCZEaGkoQFhNTVs4XSlgCisJdmVvcglAWE1NWzE1XSwgQFhNTVs1XSwgQFhNTVs5XQorCSB2dGJsLjgJYCZEbG8oQFhNTVs0XSlgLCB7QFhNTVsxNF19LCBgJkRsbyhAWE1NWzhdKWAKKwkgdnRibC44CWAmRGhpKEBYTU1bNF0pYCwge0BYTU1bMTRdfSwgYCZEaGkoQFhNTVs4XSlgCisJdmVvcglAWE1NWzEwXSwgQFhNTVs2XSwgQFhNTVs5XQorCSB2dGJsLjgJYCZEbG8oQFhNTVs1XSlgLCB7QFhNTVsxNV19LCBgJkRsbyhAWE1NWzhdKWAKKwkgdnRibC44CWAmRGhpKEBYTU1bNV0pYCwge0BYTU1bMTVdfSwgYCZEaGkoQFhNTVs4XSlgCisJdmVvcglAWE1NWzExXSwgQFhNTVs3XSwgQFhNTVs5XQorCSB2dGJsLjgJYCZEbG8oQFhNTVs2XSlgLCB7QFhNTVsxMF19LCBgJkRsbyhAWE1NWzhdKWAKKwkgdnRibC44CWAmRGhpKEBYTU1bNl0pYCwge0BYTU1bMTBdfSwgYCZEaGkoQFhNTVs4XSlgCisJIHZ0YmwuOAlgJkRsbyhAWE1NWzddKWAsIHtAWE1NWzExXX0sIGAmRGxvKEBYTU1bOF0pYAorCSB2dGJsLjgJYCZEaGkoQFhNTVs3XSlgLCB7QFhNTVsxMV19LCBgJkRoaShAWE1NWzhdKWAKK19ic2Flc19lbmNyeXB0OF9iaXRzbGljZToKK19fXworCSZiaXRzbGljZQkoQFhNTVswLi43LCA4Li4xMV0pOworJGNvZGUuPTw8X19fOworCXN1Ygkkcm91bmRzLCRyb3VuZHMsIzEKKwliCS5MZW5jX3Nib3gKKy5hbGlnbgk0CisuTGVuY19sb29wOgorX19fCisJJlNoaWZ0Um93cwkoQFhNTVswLi43LCA4Li4xMl0pOworJGNvZGUuPSIuTGVuY19zYm94OlxuIjsKKwkmU2JveAkJKEBYTU1bMC4uNywgOC4uMTVdKTsKKyRjb2RlLj08PF9fXzsKKwlzdWJzCSRyb3VuZHMsJHJvdW5kcywjMQorCWJjYwkuTGVuY19kb25lCitfX18KKwkmTWl4Q29sdW1ucwkoQFhNTVswLDEsNCw2LDMsNywyLDUsIDguLjE1XSk7CiskY29kZS49PDxfX187CisJdmxkbWlhCSRjb25zdCwge0BYTU1bMTJdfQkJQCAuTFNSCisJaXRlCWVxCQkJCUAgVGh1bWIyIHRoaW5nLCBzYW1pdHkgY2hlY2sgaW4gQVJNCisJYWRkZXEJJGNvbnN0LCRjb25zdCwjMHgxMAorCWJuZQkuTGVuY19sb29wCisJdmxkbWlhCSRjb25zdCwge0BYTU1bMTJdfQkJQCAuTFNSTTAKKwliCS5MZW5jX2xvb3AKKy5hbGlnbgk0CisuTGVuY19kb25lOgorX19fCisJIyBvdXRwdXQgaW4gbHNiID4gW3QwLCB0MSwgdDQsIHQ2LCB0MywgdDcsIHQyLCB0NV0gPCBtc2IKKwkmYml0c2xpY2UJKEBYTU1bMCwxLDQsNiwzLDcsMiw1LCA4Li4xMV0pOworJGNvZGUuPTw8X19fOworCXZsZG1pYQkka2V5LCB7QFhNTVs4XX0JCQlAIGxhc3Qgcm91bmQga2V5CisJdmVvcglAWE1NWzRdLCBAWE1NWzRdLCBAWE1NWzhdCisJdmVvcglAWE1NWzZdLCBAWE1NWzZdLCBAWE1NWzhdCisJdmVvcglAWE1NWzNdLCBAWE1NWzNdLCBAWE1NWzhdCisJdmVvcglAWE1NWzddLCBAWE1NWzddLCBAWE1NWzhdCisJdmVvcglAWE1NWzJdLCBAWE1NWzJdLCBAWE1NWzhdCisJdmVvcglAWE1NWzVdLCBAWE1NWzVdLCBAWE1NWzhdCisJdmVvcglAWE1NWzBdLCBAWE1NWzBdLCBAWE1NWzhdCisJdmVvcglAWE1NWzFdLCBAWE1NWzFdLCBAWE1NWzhdCisJYngJbHIKKy5zaXplCV9ic2Flc19lbmNyeXB0OCwuLV9ic2Flc19lbmNyeXB0OAorX19fCit9Cit7CitteSAoJG91dCwkaW5wLCRyb3VuZHMsJGNvbnN0KT0oInIxMiIsInI0IiwicjUiLCJyNiIpOworCitzdWIgYml0c2xpY2Vfa2V5IHsKK215IEB4PXJldmVyc2UoQF9bMC4uN10pOworbXkgKCRiczAsJGJzMSwkYnMyLCR0MiwkdDMpPUBfWzguLjEyXTsKKworCSZzd2FwbW92ZQkoQHhbMCwxXSwxLCRiczAsJHQyLCR0Myk7CiskY29kZS49PDxfX187CisJQCAmc3dhcG1vdmUoQHhbMiwzXSwxLCR0MCwkdDIsJHQzKTsKKwl2bW92CUB4WzJdLCBAeFswXQorCXZtb3YJQHhbM10sIEB4WzFdCitfX18KKwkjJnN3YXBtb3ZlMngoQHhbNCw1LDYsN10sMSwkdDAsJHQyLCR0Myk7CisKKwkmc3dhcG1vdmUyeAkoQHhbMCwyLDEsM10sMiwkYnMxLCR0MiwkdDMpOworJGNvZGUuPTw8X19fOworCUAgJnN3YXBtb3ZlMngoQHhbNCw2LDUsN10sMiwkdDEsJHQyLCR0Myk7CisJdm1vdglAeFs0XSwgQHhbMF0KKwl2bW92CUB4WzZdLCBAeFsyXQorCXZtb3YJQHhbNV0sIEB4WzFdCisJdm1vdglAeFs3XSwgQHhbM10KK19fXworCSZzd2FwbW92ZTJ4CShAeFswLDQsMSw1XSw0LCRiczIsJHQyLCR0Myk7CisJJnN3YXBtb3ZlMngJKEB4WzIsNiwzLDddLDQsJGJzMiwkdDIsJHQzKTsKK30KKworJGNvZGUuPTw8X19fOworLnR5cGUJX2JzYWVzX2tleV9jb252ZXJ0LCVmdW5jdGlvbgorLmFsaWduCTQKK19ic2Flc19rZXlfY29udmVydDoKKwlhZHIJJGNvbnN0LF9ic2Flc19rZXlfY29udmVydAorCXZsZDEuOAl7QFhNTVs3XX0sICBbJGlucF0hCQlAIGxvYWQgcm91bmQgMCBrZXkKKwlzdWIJJGNvbnN0LCRjb25zdCwjX2JzYWVzX2tleV9jb252ZXJ0LS5MTTAKKwl2bGQxLjgJe0BYTU1bMTVdfSwgWyRpbnBdIQkJQCBsb2FkIHJvdW5kIDEga2V5CisKKwl2bW92Lmk4CUBYTU1bOF0sICAjMHgwMQkJCUAgYml0IG1hc2tzCisJdm1vdi5pOAlAWE1NWzldLCAgIzB4MDIKKwl2bW92Lmk4CUBYTU1bMTBdLCAjMHgwNAorCXZtb3YuaTgJQFhNTVsxMV0sICMweDA4CisJdm1vdi5pOAlAWE1NWzEyXSwgIzB4MTAKKwl2bW92Lmk4CUBYTU1bMTNdLCAjMHgyMAorCXZsZG1pYQkkY29uc3QsIHtAWE1NWzE0XX0JCUAgLkxNMAorCisjaWZkZWYgX19BUk1FTF9fCisJdnJldjMyLjgJQFhNTVs3XSwgIEBYTU1bN10KKwl2cmV2MzIuOAlAWE1NWzE1XSwgQFhNTVsxNV0KKyNlbmRpZgorCXN1Ygkkcm91bmRzLCRyb3VuZHMsIzEKKwl2c3RtaWEJJG91dCEsIHtAWE1NWzddfQkJQCBzYXZlIHJvdW5kIDAga2V5CisJYgkuTGtleV9sb29wCisKKy5hbGlnbgk0CisuTGtleV9sb29wOgorCXZ0YmwuOAlgJkRsbyhAWE1NWzddKWAse0BYTU1bMTVdfSxgJkRsbyhAWE1NWzE0XSlgCisJdnRibC44CWAmRGhpKEBYTU1bN10pYCx7QFhNTVsxNV19LGAmRGhpKEBYTU1bMTRdKWAKKwl2bW92Lmk4CUBYTU1bNl0sICAjMHg0MAorCXZtb3YuaTgJQFhNTVsxNV0sICMweDgwCisKKwl2dHN0LjgJQFhNTVswXSwgQFhNTVs3XSwgQFhNTVs4XQorCXZ0c3QuOAlAWE1NWzFdLCBAWE1NWzddLCBAWE1NWzldCisJdnRzdC44CUBYTU1bMl0sIEBYTU1bN10sIEBYTU1bMTBdCisJdnRzdC44CUBYTU1bM10sIEBYTU1bN10sIEBYTU1bMTFdCisJdnRzdC44CUBYTU1bNF0sIEBYTU1bN10sIEBYTU1bMTJdCisJdnRzdC44CUBYTU1bNV0sIEBYTU1bN10sIEBYTU1bMTNdCisJdnRzdC44CUBYTU1bNl0sIEBYTU1bN10sIEBYTU1bNl0KKwl2dHN0LjgJQFhNTVs3XSwgQFhNTVs3XSwgQFhNTVsxNV0KKwl2bGQxLjgJe0BYTU1bMTVdfSwgWyRpbnBdIQkJQCBsb2FkIG5leHQgcm91bmQga2V5CisJdm12bglAWE1NWzBdLCBAWE1NWzBdCQlAICJwbm90IgorCXZtdm4JQFhNTVsxXSwgQFhNTVsxXQorCXZtdm4JQFhNTVs1XSwgQFhNTVs1XQorCXZtdm4JQFhNTVs2XSwgQFhNTVs2XQorI2lmZGVmIF9fQVJNRUxfXworCXZyZXYzMi44CUBYTU1bMTVdLCBAWE1NWzE1XQorI2VuZGlmCisJc3Vicwkkcm91bmRzLCRyb3VuZHMsIzEKKwl2c3RtaWEJJG91dCEse0BYTU1bMF0tQFhNTVs3XX0JCUAgd3JpdGUgYml0LXNsaWNlZCByb3VuZCBrZXkKKwlibmUJLkxrZXlfbG9vcAorCisJdm1vdi5pOAlAWE1NWzddLCMweDYzCQkJQCBjb21wb3NlIC5MNjMKKwlAIGRvbid0IHNhdmUgbGFzdCByb3VuZCBrZXkKKwlieAlscgorLnNpemUJX2JzYWVzX2tleV9jb252ZXJ0LC4tX2JzYWVzX2tleV9jb252ZXJ0CitfX18KK30KKworaWYgKDApIHsJCSMgZm9sbG93aW5nIGZvdXIgZnVuY3Rpb25zIGFyZSB1bnN1cHBvcnRlZCBpbnRlcmZhY2UKKwkJCSMgdXNlZCBmb3IgYmVuY2htYXJraW5nLi4uCiskY29kZS49PDxfX187CisuZ2xvYmwJYnNhZXNfZW5jX2tleV9jb252ZXJ0CisudHlwZQlic2Flc19lbmNfa2V5X2NvbnZlcnQsJWZ1bmN0aW9uCisuYWxpZ24JNAorYnNhZXNfZW5jX2tleV9jb252ZXJ0OgorCXN0bWRiCXNwISx7cjQtcjYsbHJ9CisJdnN0bWRiCXNwISx7ZDgtZDE1fQkJQCBBQkkgc3BlY2lmaWNhdGlvbiBzYXlzIHNvCisKKwlsZHIJcjUsWyRpbnAsIzI0MF0JCQlAIHBhc3Mgcm91bmRzCisJbW92CXI0LCRpbnAJCQkJQCBwYXNzIGtleQorCW1vdglyMTIsJG91dAkJCUAgcGFzcyBrZXkgc2NoZWR1bGUKKwlibAlfYnNhZXNfa2V5X2NvbnZlcnQKKwl2ZW9yCUBYTU1bN10sQFhNTVs3XSxAWE1NWzE1XQlAIGZpeCB1cCBsYXN0IHJvdW5kIGtleQorCXZzdG1pYQlyMTIsIHtAWE1NWzddfQkJCUAgc2F2ZSBsYXN0IHJvdW5kIGtleQorCisJdmxkbWlhCXNwISx7ZDgtZDE1fQorCWxkbWlhCXNwISx7cjQtcjYscGN9Cisuc2l6ZQlic2Flc19lbmNfa2V5X2NvbnZlcnQsLi1ic2Flc19lbmNfa2V5X2NvbnZlcnQKKworLmdsb2JsCWJzYWVzX2VuY3J5cHRfMTI4CisudHlwZQlic2Flc19lbmNyeXB0XzEyOCwlZnVuY3Rpb24KKy5hbGlnbgk0Citic2Flc19lbmNyeXB0XzEyODoKKwlzdG1kYglzcCEse3I0LXI2LGxyfQorCXZzdG1kYglzcCEse2Q4LWQxNX0JCUAgQUJJIHNwZWNpZmljYXRpb24gc2F5cyBzbworLkxlbmMxMjhfbG9vcDoKKwl2bGQxLjgJe0BYTU1bMF0tQFhNTVsxXX0sIFskaW5wXSEJQCBsb2FkIGlucHV0CisJdmxkMS44CXtAWE1NWzJdLUBYTU1bM119LCBbJGlucF0hCisJbW92CXI0LCRrZXkJCQkJQCBwYXNzIHRoZSBrZXkKKwl2bGQxLjgJe0BYTU1bNF0tQFhNTVs1XX0sIFskaW5wXSEKKwltb3YJcjUsIzEwCQkJCUAgcGFzcyByb3VuZHMKKwl2bGQxLjgJe0BYTU1bNl0tQFhNTVs3XX0sIFskaW5wXSEKKworCWJsCV9ic2Flc19lbmNyeXB0OAorCisJdnN0MS44CXtAWE1NWzBdLUBYTU1bMV19LCBbJG91dF0hCUAgd3JpdGUgb3V0cHV0CisJdnN0MS44CXtAWE1NWzRdfSwgWyRvdXRdIQorCXZzdDEuOAl7QFhNTVs2XX0sIFskb3V0XSEKKwl2c3QxLjgJe0BYTU1bM119LCBbJG91dF0hCisJdnN0MS44CXtAWE1NWzddfSwgWyRvdXRdIQorCXZzdDEuOAl7QFhNTVsyXX0sIFskb3V0XSEKKwlzdWJzCSRsZW4sJGxlbiwjMHg4MAorCXZzdDEuOAl7QFhNTVs1XX0sIFskb3V0XSEKKwliaGkJLkxlbmMxMjhfbG9vcAorCisJdmxkbWlhCXNwISx7ZDgtZDE1fQorCWxkbWlhCXNwISx7cjQtcjYscGN9Cisuc2l6ZQlic2Flc19lbmNyeXB0XzEyOCwuLWJzYWVzX2VuY3J5cHRfMTI4CisKKy5nbG9ibAlic2Flc19kZWNfa2V5X2NvbnZlcnQKKy50eXBlCWJzYWVzX2RlY19rZXlfY29udmVydCwlZnVuY3Rpb24KKy5hbGlnbgk0Citic2Flc19kZWNfa2V5X2NvbnZlcnQ6CisJc3RtZGIJc3AhLHtyNC1yNixscn0KKwl2c3RtZGIJc3AhLHtkOC1kMTV9CQlAIEFCSSBzcGVjaWZpY2F0aW9uIHNheXMgc28KKworCWxkcglyNSxbJGlucCwjMjQwXQkJCUAgcGFzcyByb3VuZHMKKwltb3YJcjQsJGlucAkJCQlAIHBhc3Mga2V5CisJbW92CXIxMiwkb3V0CQkJQCBwYXNzIGtleSBzY2hlZHVsZQorCWJsCV9ic2Flc19rZXlfY29udmVydAorCXZsZG1pYQkkb3V0LCB7QFhNTVs2XX0KKwl2c3RtaWEJcjEyLCAge0BYTU1bMTVdfQkJQCBzYXZlIGxhc3Qgcm91bmQga2V5CisJdmVvcglAWE1NWzddLCBAWE1NWzddLCBAWE1NWzZdCUAgZml4IHVwIHJvdW5kIDAga2V5CisJdnN0bWlhCSRvdXQsIHtAWE1NWzddfQorCisJdmxkbWlhCXNwISx7ZDgtZDE1fQorCWxkbWlhCXNwISx7cjQtcjYscGN9Cisuc2l6ZQlic2Flc19kZWNfa2V5X2NvbnZlcnQsLi1ic2Flc19kZWNfa2V5X2NvbnZlcnQKKworLmdsb2JsCWJzYWVzX2RlY3J5cHRfMTI4CisudHlwZQlic2Flc19kZWNyeXB0XzEyOCwlZnVuY3Rpb24KKy5hbGlnbgk0Citic2Flc19kZWNyeXB0XzEyODoKKwlzdG1kYglzcCEse3I0LXI2LGxyfQorCXZzdG1kYglzcCEse2Q4LWQxNX0JCUAgQUJJIHNwZWNpZmljYXRpb24gc2F5cyBzbworLkxkZWMxMjhfbG9vcDoKKwl2bGQxLjgJe0BYTU1bMF0tQFhNTVsxXX0sIFskaW5wXSEJQCBsb2FkIGlucHV0CisJdmxkMS44CXtAWE1NWzJdLUBYTU1bM119LCBbJGlucF0hCisJbW92CXI0LCRrZXkJCQkJQCBwYXNzIHRoZSBrZXkKKwl2bGQxLjgJe0BYTU1bNF0tQFhNTVs1XX0sIFskaW5wXSEKKwltb3YJcjUsIzEwCQkJCUAgcGFzcyByb3VuZHMKKwl2bGQxLjgJe0BYTU1bNl0tQFhNTVs3XX0sIFskaW5wXSEKKworCWJsCV9ic2Flc19kZWNyeXB0OAorCisJdnN0MS44CXtAWE1NWzBdLUBYTU1bMV19LCBbJG91dF0hCUAgd3JpdGUgb3V0cHV0CisJdnN0MS44CXtAWE1NWzZdfSwgWyRvdXRdIQorCXZzdDEuOAl7QFhNTVs0XX0sIFskb3V0XSEKKwl2c3QxLjgJe0BYTU1bMl19LCBbJG91dF0hCisJdnN0MS44CXtAWE1NWzddfSwgWyRvdXRdIQorCXZzdDEuOAl7QFhNTVszXX0sIFskb3V0XSEKKwlzdWJzCSRsZW4sJGxlbiwjMHg4MAorCXZzdDEuOAl7QFhNTVs1XX0sIFskb3V0XSEKKwliaGkJLkxkZWMxMjhfbG9vcAorCisJdmxkbWlhCXNwISx7ZDgtZDE1fQorCWxkbWlhCXNwISx7cjQtcjYscGN9Cisuc2l6ZQlic2Flc19kZWNyeXB0XzEyOCwuLWJzYWVzX2RlY3J5cHRfMTI4CitfX18KK30KK3sKK215ICgkaW5wLCRvdXQsJGxlbiwka2V5LCAkaXZwLCRmcCwkcm91bmRzKT1tYXAoInIkXyIsKDAuLjMsOC4uMTApKTsKK215ICgka2V5c2NoZWQpPSgic3AiKTsKKworJGNvZGUuPTw8X19fOworLmV4dGVybiBBRVNfY2JjX2VuY3J5cHQKKy5leHRlcm4gQUVTX2RlY3J5cHQKKworLmdsb2JhbAlic2Flc19jYmNfZW5jcnlwdAorLnR5cGUJYnNhZXNfY2JjX2VuY3J5cHQsJWZ1bmN0aW9uCisuYWxpZ24JNQorYnNhZXNfY2JjX2VuY3J5cHQ6CisjaWZuZGVmCV9fS0VSTkVMX18KKwljbXAJJGxlbiwgIzEyOAorI2lmbmRlZglfX3RodW1iX18KKwlibG8JQUVTX2NiY19lbmNyeXB0CisjZWxzZQorCWJocwkxZgorCWIJQUVTX2NiY19lbmNyeXB0CisxOgorI2VuZGlmCisjZW5kaWYKKworCUAgaXQgaXMgdXAgdG8gdGhlIGNhbGxlciB0byBtYWtlIHN1cmUgd2UgYXJlIGNhbGxlZCB3aXRoIGVuYyA9PSAwCisKKwltb3YJaXAsIHNwCisJc3RtZGIJc3AhLCB7cjQtcjEwLCBscn0KKwlWRlBfQUJJX1BVU0gKKwlsZHIJJGl2cCwgW2lwXQkJCUAgSVYgaXMgMXN0IGFyZyBvbiB0aGUgc3RhY2sKKwltb3YJJGxlbiwgJGxlbiwgbHNyIzQJCUAgbGVuIGluIDE2IGJ5dGUgYmxvY2tzCisJc3ViCXNwLCAjMHgxMAkJCUAgc2NyYXRjaCBzcGFjZSB0byBjYXJyeSBvdmVyIHRoZSBJVgorCW1vdgkkZnAsIHNwCQkJCUAgc2F2ZSBzcAorCisJbGRyCSRyb3VuZHMsIFska2V5LCAjMjQwXQkJQCBnZXQgIyBvZiByb3VuZHMKKyNpZm5kZWYJQlNBRVNfQVNNX0VYVEVOREVEX0tFWQorCUAgYWxsb2NhdGUgdGhlIGtleSBzY2hlZHVsZSBvbiB0aGUgc3RhY2sKKwlzdWIJcjEyLCBzcCwgJHJvdW5kcywgbHNsIzcJCUAgMTI4IGJ5dGVzIHBlciBpbm5lciByb3VuZCBrZXkKKwlhZGQJcjEyLCAjYDEyOC0zMmAJCQlAIHNpZnplIG9mIGJpdC1zbGljZXMga2V5IHNjaGVkdWxlCisKKwlAIHBvcHVsYXRlIHRoZSBrZXkgc2NoZWR1bGUKKwltb3YJcjQsICRrZXkJCQlAIHBhc3Mga2V5CisJbW92CXI1LCAkcm91bmRzCQkJQCBwYXNzICMgb2Ygcm91bmRzCisJbW92CXNwLCByMTIJCQkJQCBzcCBpcyAka2V5c2NoZWQKKwlibAlfYnNhZXNfa2V5X2NvbnZlcnQKKwl2bGRtaWEJJGtleXNjaGVkLCB7QFhNTVs2XX0KKwl2c3RtaWEJcjEyLCAge0BYTU1bMTVdfQkJQCBzYXZlIGxhc3Qgcm91bmQga2V5CisJdmVvcglAWE1NWzddLCBAWE1NWzddLCBAWE1NWzZdCUAgZml4IHVwIHJvdW5kIDAga2V5CisJdnN0bWlhCSRrZXlzY2hlZCwge0BYTU1bN119CisjZWxzZQorCWxkcglyMTIsIFska2V5LCAjMjQ0XQorCWVvcnMJcjEyLCAjMQorCWJlcQkwZgorCisJQCBwb3B1bGF0ZSB0aGUga2V5IHNjaGVkdWxlCisJc3RyCXIxMiwgWyRrZXksICMyNDRdCisJbW92CXI0LCAka2V5CQkJQCBwYXNzIGtleQorCW1vdglyNSwgJHJvdW5kcwkJCUAgcGFzcyAjIG9mIHJvdW5kcworCWFkZAlyMTIsICRrZXksICMyNDgJCQlAIHBhc3Mga2V5IHNjaGVkdWxlCisJYmwJX2JzYWVzX2tleV9jb252ZXJ0CisJYWRkCXI0LCAka2V5LCAjMjQ4CisJdmxkbWlhCXI0LCB7QFhNTVs2XX0KKwl2c3RtaWEJcjEyLCB7QFhNTVsxNV19CQkJQCBzYXZlIGxhc3Qgcm91bmQga2V5CisJdmVvcglAWE1NWzddLCBAWE1NWzddLCBAWE1NWzZdCUAgZml4IHVwIHJvdW5kIDAga2V5CisJdnN0bWlhCXI0LCB7QFhNTVs3XX0KKworLmFsaWduCTIKKzA6CisjZW5kaWYKKworCXZsZDEuOAl7QFhNTVsxNV19LCBbJGl2cF0JCUAgbG9hZCBJVgorCWIJLkxjYmNfZGVjX2xvb3AKKworLmFsaWduCTQKKy5MY2JjX2RlY19sb29wOgorCXN1YnMJJGxlbiwgJGxlbiwgIzB4OAorCWJtaQkuTGNiY19kZWNfbG9vcF9maW5pc2gKKworCXZsZDEuOAl7QFhNTVswXS1AWE1NWzFdfSwgWyRpbnBdIQlAIGxvYWQgaW5wdXQKKwl2bGQxLjgJe0BYTU1bMl0tQFhNTVszXX0sIFskaW5wXSEKKyNpZm5kZWYJQlNBRVNfQVNNX0VYVEVOREVEX0tFWQorCW1vdglyNCwgJGtleXNjaGVkCQkJQCBwYXNzIHRoZSBrZXkKKyNlbHNlCisJYWRkCXI0LCAka2V5LCAjMjQ4CisjZW5kaWYKKwl2bGQxLjgJe0BYTU1bNF0tQFhNTVs1XX0sIFskaW5wXSEKKwltb3YJcjUsICRyb3VuZHMKKwl2bGQxLjgJe0BYTU1bNl0tQFhNTVs3XX0sIFskaW5wXQorCXN1YgkkaW5wLCAkaW5wLCAjMHg2MAorCXZzdG1pYQkkZnAsIHtAWE1NWzE1XX0JCQlAIHB1dCBhc2lkZSBJVgorCisJYmwJX2JzYWVzX2RlY3J5cHQ4CisKKwl2bGRtaWEJJGZwLCB7QFhNTVsxNF19CQkJQCByZWxvYWQgSVYKKwl2bGQxLjgJe0BYTU1bOF0tQFhNTVs5XX0sIFskaW5wXSEJQCByZWxvYWQgaW5wdXQKKwl2ZW9yCUBYTU1bMF0sIEBYTU1bMF0sIEBYTU1bMTRdCUAgXj0gSVYKKwl2bGQxLjgJe0BYTU1bMTBdLUBYTU1bMTFdfSwgWyRpbnBdIQorCXZlb3IJQFhNTVsxXSwgQFhNTVsxXSwgQFhNTVs4XQorCXZlb3IJQFhNTVs2XSwgQFhNTVs2XSwgQFhNTVs5XQorCXZsZDEuOAl7QFhNTVsxMl0tQFhNTVsxM119LCBbJGlucF0hCisJdmVvcglAWE1NWzRdLCBAWE1NWzRdLCBAWE1NWzEwXQorCXZlb3IJQFhNTVsyXSwgQFhNTVsyXSwgQFhNTVsxMV0KKwl2bGQxLjgJe0BYTU1bMTRdLUBYTU1bMTVdfSwgWyRpbnBdIQorCXZlb3IJQFhNTVs3XSwgQFhNTVs3XSwgQFhNTVsxMl0KKwl2c3QxLjgJe0BYTU1bMF0tQFhNTVsxXX0sIFskb3V0XSEJQCB3cml0ZSBvdXRwdXQKKwl2ZW9yCUBYTU1bM10sIEBYTU1bM10sIEBYTU1bMTNdCisJdnN0MS44CXtAWE1NWzZdfSwgWyRvdXRdIQorCXZlb3IJQFhNTVs1XSwgQFhNTVs1XSwgQFhNTVsxNF0KKwl2c3QxLjgJe0BYTU1bNF19LCBbJG91dF0hCisJdnN0MS44CXtAWE1NWzJdfSwgWyRvdXRdIQorCXZzdDEuOAl7QFhNTVs3XX0sIFskb3V0XSEKKwl2c3QxLjgJe0BYTU1bM119LCBbJG91dF0hCisJdnN0MS44CXtAWE1NWzVdfSwgWyRvdXRdIQorCisJYgkuTGNiY19kZWNfbG9vcAorCisuTGNiY19kZWNfbG9vcF9maW5pc2g6CisJYWRkcwkkbGVuLCAkbGVuLCAjOAorCWJlcQkuTGNiY19kZWNfZG9uZQorCisJdmxkMS44CXtAWE1NWzBdfSwgWyRpbnBdIQkJQCBsb2FkIGlucHV0CisJY21wCSRsZW4sICMyCisJYmxvCS5MY2JjX2RlY19vbmUKKwl2bGQxLjgJe0BYTU1bMV19LCBbJGlucF0hCisjaWZuZGVmCUJTQUVTX0FTTV9FWFRFTkRFRF9LRVkKKwltb3YJcjQsICRrZXlzY2hlZAkJCUAgcGFzcyB0aGUga2V5CisjZWxzZQorCWFkZAlyNCwgJGtleSwgIzI0OAorI2VuZGlmCisJbW92CXI1LCAkcm91bmRzCisJdnN0bWlhCSRmcCwge0BYTU1bMTVdfQkJCUAgcHV0IGFzaWRlIElWCisJYmVxCS5MY2JjX2RlY190d28KKwl2bGQxLjgJe0BYTU1bMl19LCBbJGlucF0hCisJY21wCSRsZW4sICM0CisJYmxvCS5MY2JjX2RlY190aHJlZQorCXZsZDEuOAl7QFhNTVszXX0sIFskaW5wXSEKKwliZXEJLkxjYmNfZGVjX2ZvdXIKKwl2bGQxLjgJe0BYTU1bNF19LCBbJGlucF0hCisJY21wCSRsZW4sICM2CisJYmxvCS5MY2JjX2RlY19maXZlCisJdmxkMS44CXtAWE1NWzVdfSwgWyRpbnBdIQorCWJlcQkuTGNiY19kZWNfc2l4CisJdmxkMS44CXtAWE1NWzZdfSwgWyRpbnBdIQorCXN1YgkkaW5wLCAkaW5wLCAjMHg3MAorCisJYmwJX2JzYWVzX2RlY3J5cHQ4CisKKwl2bGRtaWEJJGZwLCB7QFhNTVsxNF19CQkJQCByZWxvYWQgSVYKKwl2bGQxLjgJe0BYTU1bOF0tQFhNTVs5XX0sIFskaW5wXSEJQCByZWxvYWQgaW5wdXQKKwl2ZW9yCUBYTU1bMF0sIEBYTU1bMF0sIEBYTU1bMTRdCUAgXj0gSVYKKwl2bGQxLjgJe0BYTU1bMTBdLUBYTU1bMTFdfSwgWyRpbnBdIQorCXZlb3IJQFhNTVsxXSwgQFhNTVsxXSwgQFhNTVs4XQorCXZlb3IJQFhNTVs2XSwgQFhNTVs2XSwgQFhNTVs5XQorCXZsZDEuOAl7QFhNTVsxMl0tQFhNTVsxM119LCBbJGlucF0hCisJdmVvcglAWE1NWzRdLCBAWE1NWzRdLCBAWE1NWzEwXQorCXZlb3IJQFhNTVsyXSwgQFhNTVsyXSwgQFhNTVsxMV0KKwl2bGQxLjgJe0BYTU1bMTVdfSwgWyRpbnBdIQorCXZlb3IJQFhNTVs3XSwgQFhNTVs3XSwgQFhNTVsxMl0KKwl2c3QxLjgJe0BYTU1bMF0tQFhNTVsxXX0sIFskb3V0XSEJQCB3cml0ZSBvdXRwdXQKKwl2ZW9yCUBYTU1bM10sIEBYTU1bM10sIEBYTU1bMTNdCisJdnN0MS44CXtAWE1NWzZdfSwgWyRvdXRdIQorCXZzdDEuOAl7QFhNTVs0XX0sIFskb3V0XSEKKwl2c3QxLjgJe0BYTU1bMl19LCBbJG91dF0hCisJdnN0MS44CXtAWE1NWzddfSwgWyRvdXRdIQorCXZzdDEuOAl7QFhNTVszXX0sIFskb3V0XSEKKwliCS5MY2JjX2RlY19kb25lCisuYWxpZ24JNAorLkxjYmNfZGVjX3NpeDoKKwlzdWIJJGlucCwgJGlucCwgIzB4NjAKKwlibAlfYnNhZXNfZGVjcnlwdDgKKwl2bGRtaWEJJGZwLHtAWE1NWzE0XX0JCQlAIHJlbG9hZCBJVgorCXZsZDEuOAl7QFhNTVs4XS1AWE1NWzldfSwgWyRpbnBdIQlAIHJlbG9hZCBpbnB1dAorCXZlb3IJQFhNTVswXSwgQFhNTVswXSwgQFhNTVsxNF0JQCBePSBJVgorCXZsZDEuOAl7QFhNTVsxMF0tQFhNTVsxMV19LCBbJGlucF0hCisJdmVvcglAWE1NWzFdLCBAWE1NWzFdLCBAWE1NWzhdCisJdmVvcglAWE1NWzZdLCBAWE1NWzZdLCBAWE1NWzldCisJdmxkMS44CXtAWE1NWzEyXX0sIFskaW5wXSEKKwl2ZW9yCUBYTU1bNF0sIEBYTU1bNF0sIEBYTU1bMTBdCisJdmVvcglAWE1NWzJdLCBAWE1NWzJdLCBAWE1NWzExXQorCXZsZDEuOAl7QFhNTVsxNV19LCBbJGlucF0hCisJdmVvcglAWE1NWzddLCBAWE1NWzddLCBAWE1NWzEyXQorCXZzdDEuOAl7QFhNTVswXS1AWE1NWzFdfSwgWyRvdXRdIQlAIHdyaXRlIG91dHB1dAorCXZzdDEuOAl7QFhNTVs2XX0sIFskb3V0XSEKKwl2c3QxLjgJe0BYTU1bNF19LCBbJG91dF0hCisJdnN0MS44CXtAWE1NWzJdfSwgWyRvdXRdIQorCXZzdDEuOAl7QFhNTVs3XX0sIFskb3V0XSEKKwliCS5MY2JjX2RlY19kb25lCisuYWxpZ24JNAorLkxjYmNfZGVjX2ZpdmU6CisJc3ViCSRpbnAsICRpbnAsICMweDUwCisJYmwJX2JzYWVzX2RlY3J5cHQ4CisJdmxkbWlhCSRmcCwge0BYTU1bMTRdfQkJCUAgcmVsb2FkIElWCisJdmxkMS44CXtAWE1NWzhdLUBYTU1bOV19LCBbJGlucF0hCUAgcmVsb2FkIGlucHV0CisJdmVvcglAWE1NWzBdLCBAWE1NWzBdLCBAWE1NWzE0XQlAIF49IElWCisJdmxkMS44CXtAWE1NWzEwXS1AWE1NWzExXX0sIFskaW5wXSEKKwl2ZW9yCUBYTU1bMV0sIEBYTU1bMV0sIEBYTU1bOF0KKwl2ZW9yCUBYTU1bNl0sIEBYTU1bNl0sIEBYTU1bOV0KKwl2bGQxLjgJe0BYTU1bMTVdfSwgWyRpbnBdIQorCXZlb3IJQFhNTVs0XSwgQFhNTVs0XSwgQFhNTVsxMF0KKwl2c3QxLjgJe0BYTU1bMF0tQFhNTVsxXX0sIFskb3V0XSEJQCB3cml0ZSBvdXRwdXQKKwl2ZW9yCUBYTU1bMl0sIEBYTU1bMl0sIEBYTU1bMTFdCisJdnN0MS44CXtAWE1NWzZdfSwgWyRvdXRdIQorCXZzdDEuOAl7QFhNTVs0XX0sIFskb3V0XSEKKwl2c3QxLjgJe0BYTU1bMl19LCBbJG91dF0hCisJYgkuTGNiY19kZWNfZG9uZQorLmFsaWduCTQKKy5MY2JjX2RlY19mb3VyOgorCXN1YgkkaW5wLCAkaW5wLCAjMHg0MAorCWJsCV9ic2Flc19kZWNyeXB0OAorCXZsZG1pYQkkZnAsIHtAWE1NWzE0XX0JCQlAIHJlbG9hZCBJVgorCXZsZDEuOAl7QFhNTVs4XS1AWE1NWzldfSwgWyRpbnBdIQlAIHJlbG9hZCBpbnB1dAorCXZlb3IJQFhNTVswXSwgQFhNTVswXSwgQFhNTVsxNF0JQCBePSBJVgorCXZsZDEuOAl7QFhNTVsxMF19LCBbJGlucF0hCisJdmVvcglAWE1NWzFdLCBAWE1NWzFdLCBAWE1NWzhdCisJdmVvcglAWE1NWzZdLCBAWE1NWzZdLCBAWE1NWzldCisJdmxkMS44CXtAWE1NWzE1XX0sIFskaW5wXSEKKwl2ZW9yCUBYTU1bNF0sIEBYTU1bNF0sIEBYTU1bMTBdCisJdnN0MS44CXtAWE1NWzBdLUBYTU1bMV19LCBbJG91dF0hCUAgd3JpdGUgb3V0cHV0CisJdnN0MS44CXtAWE1NWzZdfSwgWyRvdXRdIQorCXZzdDEuOAl7QFhNTVs0XX0sIFskb3V0XSEKKwliCS5MY2JjX2RlY19kb25lCisuYWxpZ24JNAorLkxjYmNfZGVjX3RocmVlOgorCXN1YgkkaW5wLCAkaW5wLCAjMHgzMAorCWJsCV9ic2Flc19kZWNyeXB0OAorCXZsZG1pYQkkZnAsIHtAWE1NWzE0XX0JCQlAIHJlbG9hZCBJVgorCXZsZDEuOAl7QFhNTVs4XS1AWE1NWzldfSwgWyRpbnBdIQlAIHJlbG9hZCBpbnB1dAorCXZlb3IJQFhNTVswXSwgQFhNTVswXSwgQFhNTVsxNF0JQCBePSBJVgorCXZsZDEuOAl7QFhNTVsxNV19LCBbJGlucF0hCisJdmVvcglAWE1NWzFdLCBAWE1NWzFdLCBAWE1NWzhdCisJdmVvcglAWE1NWzZdLCBAWE1NWzZdLCBAWE1NWzldCisJdnN0MS44CXtAWE1NWzBdLUBYTU1bMV19LCBbJG91dF0hCUAgd3JpdGUgb3V0cHV0CisJdnN0MS44CXtAWE1NWzZdfSwgWyRvdXRdIQorCWIJLkxjYmNfZGVjX2RvbmUKKy5hbGlnbgk0CisuTGNiY19kZWNfdHdvOgorCXN1YgkkaW5wLCAkaW5wLCAjMHgyMAorCWJsCV9ic2Flc19kZWNyeXB0OAorCXZsZG1pYQkkZnAsIHtAWE1NWzE0XX0JCQlAIHJlbG9hZCBJVgorCXZsZDEuOAl7QFhNTVs4XX0sIFskaW5wXSEJCUAgcmVsb2FkIGlucHV0CisJdmVvcglAWE1NWzBdLCBAWE1NWzBdLCBAWE1NWzE0XQlAIF49IElWCisJdmxkMS44CXtAWE1NWzE1XX0sIFskaW5wXSEJCUAgcmVsb2FkIGlucHV0CisJdmVvcglAWE1NWzFdLCBAWE1NWzFdLCBAWE1NWzhdCisJdnN0MS44CXtAWE1NWzBdLUBYTU1bMV19LCBbJG91dF0hCUAgd3JpdGUgb3V0cHV0CisJYgkuTGNiY19kZWNfZG9uZQorLmFsaWduCTQKKy5MY2JjX2RlY19vbmU6CisJc3ViCSRpbnAsICRpbnAsICMweDEwCisJbW92CSRyb3VuZHMsICRvdXQJCQlAIHNhdmUgb3JpZ2luYWwgb3V0IHBvaW50ZXIKKwltb3YJJG91dCwgJGZwCQkJQCB1c2UgdGhlIGl2IHNjcmF0Y2ggc3BhY2UgYXMgb3V0IGJ1ZmZlcgorCW1vdglyMiwgJGtleQorCXZtb3YJQFhNTVs0XSxAWE1NWzE1XQkJQCBqdXN0IGluIGNhc2UgZW5zdXJlIHRoYXQgSVYKKwl2bW92CUBYTU1bNV0sQFhNTVswXQkJCUAgYW5kIGlucHV0IGFyZSBwcmVzZXJ2ZWQKKwlibAlBRVNfZGVjcnlwdAorCXZsZDEuOAl7QFhNTVswXX0sIFskZnAsOjY0XQkJQCBsb2FkIHJlc3VsdAorCXZlb3IJQFhNTVswXSwgQFhNTVswXSwgQFhNTVs0XQlAIF49IElWCisJdm1vdglAWE1NWzE1XSwgQFhNTVs1XQkJQCBAWE1NWzVdIGhvbGRzIGlucHV0CisJdnN0MS44CXtAWE1NWzBdfSwgWyRyb3VuZHNdCQlAIHdyaXRlIG91dHB1dAorCisuTGNiY19kZWNfZG9uZToKKyNpZm5kZWYJQlNBRVNfQVNNX0VYVEVOREVEX0tFWQorCXZtb3YuaTMyCXEwLCAjMAorCXZtb3YuaTMyCXExLCAjMAorLkxjYmNfZGVjX2J6ZXJvOgkJCQlAIHdpcGUga2V5IHNjaGVkdWxlIFtpZiBhbnldCisJdnN0bWlhCQkka2V5c2NoZWQhLCB7cTAtcTF9CisJY21wCQkka2V5c2NoZWQsICRmcAorCWJuZQkJLkxjYmNfZGVjX2J6ZXJvCisjZW5kaWYKKworCW1vdglzcCwgJGZwCisJYWRkCXNwLCAjMHgxMAkJCUAgYWRkIHNwLCRmcCwjMHgxMCBpcyBubyBnb29kIGZvciB0aHVtYgorCXZzdDEuOAl7QFhNTVsxNV19LCBbJGl2cF0JCUAgcmV0dXJuIElWCisJVkZQX0FCSV9QT1AKKwlsZG1pYQlzcCEsIHtyNC1yMTAsIHBjfQorLnNpemUJYnNhZXNfY2JjX2VuY3J5cHQsLi1ic2Flc19jYmNfZW5jcnlwdAorX19fCit9Cit7CitteSAoJGlucCwkb3V0LCRsZW4sJGtleSwgJGN0ciwkZnAsJHJvdW5kcyk9KG1hcCgiciRfIiwoMC4uMyw4Li4xMCkpKTsKK215ICRjb25zdCA9ICJyNiI7CSMgc2hhcmVkIHdpdGggX2JzYWVzX2VuY3J5cHQ4X2FsdAorbXkgJGtleXNjaGVkID0gInNwIjsKKworJGNvZGUuPTw8X19fOworLmV4dGVybglBRVNfZW5jcnlwdAorLmdsb2JhbAlic2Flc19jdHIzMl9lbmNyeXB0X2Jsb2NrcworLnR5cGUJYnNhZXNfY3RyMzJfZW5jcnlwdF9ibG9ja3MsJWZ1bmN0aW9uCisuYWxpZ24JNQorYnNhZXNfY3RyMzJfZW5jcnlwdF9ibG9ja3M6CisJY21wCSRsZW4sICM4CQkJQCB1c2UgcGxhaW4gQUVTIGZvcgorCWJsbwkuTGN0cl9lbmNfc2hvcnQJCQlAIHNtYWxsIHNpemVzCisKKwltb3YJaXAsIHNwCisJc3RtZGIJc3AhLCB7cjQtcjEwLCBscn0KKwlWRlBfQUJJX1BVU0gKKwlsZHIJJGN0ciwgW2lwXQkJCUAgY3RyIGlzIDFzdCBhcmcgb24gdGhlIHN0YWNrCisJc3ViCXNwLCBzcCwgIzB4MTAJCQlAIHNjcmF0Y2ggc3BhY2UgdG8gY2Fycnkgb3ZlciB0aGUgY3RyCisJbW92CSRmcCwgc3AJCQkJQCBzYXZlIHNwCisKKwlsZHIJJHJvdW5kcywgWyRrZXksICMyNDBdCQlAIGdldCAjIG9mIHJvdW5kcworI2lmbmRlZglCU0FFU19BU01fRVhURU5ERURfS0VZCisJQCBhbGxvY2F0ZSB0aGUga2V5IHNjaGVkdWxlIG9uIHRoZSBzdGFjaworCXN1YglyMTIsIHNwLCAkcm91bmRzLCBsc2wjNwkJQCAxMjggYnl0ZXMgcGVyIGlubmVyIHJvdW5kIGtleQorCWFkZAlyMTIsICNgMTI4LTMyYAkJCUAgc2l6ZSBvZiBiaXQtc2xpY2VkIGtleSBzY2hlZHVsZQorCisJQCBwb3B1bGF0ZSB0aGUga2V5IHNjaGVkdWxlCisJbW92CXI0LCAka2V5CQkJQCBwYXNzIGtleQorCW1vdglyNSwgJHJvdW5kcwkJCUAgcGFzcyAjIG9mIHJvdW5kcworCW1vdglzcCwgcjEyCQkJCUAgc3AgaXMgJGtleXNjaGVkCisJYmwJX2JzYWVzX2tleV9jb252ZXJ0CisJdmVvcglAWE1NWzddLEBYTU1bN10sQFhNTVsxNV0JQCBmaXggdXAgbGFzdCByb3VuZCBrZXkKKwl2c3RtaWEJcjEyLCB7QFhNTVs3XX0JCQlAIHNhdmUgbGFzdCByb3VuZCBrZXkKKworCXZsZDEuOAl7QFhNTVswXX0sIFskY3RyXQkJQCBsb2FkIGNvdW50ZXIKKwlhZGQJJGN0ciwgJGNvbnN0LCAjLkxSRVZNMFNSLS5MTTAJQCBib3Jyb3cgJGN0cgorCXZsZG1pYQkka2V5c2NoZWQsIHtAWE1NWzRdfQkJQCBsb2FkIHJvdW5kMCBrZXkKKyNlbHNlCisJbGRyCXIxMiwgWyRrZXksICMyNDRdCisJZW9ycwlyMTIsICMxCisJYmVxCTBmCisKKwlAIHBvcHVsYXRlIHRoZSBrZXkgc2NoZWR1bGUKKwlzdHIJcjEyLCBbJGtleSwgIzI0NF0KKwltb3YJcjQsICRrZXkJCQlAIHBhc3Mga2V5CisJbW92CXI1LCAkcm91bmRzCQkJQCBwYXNzICMgb2Ygcm91bmRzCisJYWRkCXIxMiwgJGtleSwgIzI0OAkJCUAgcGFzcyBrZXkgc2NoZWR1bGUKKwlibAlfYnNhZXNfa2V5X2NvbnZlcnQKKwl2ZW9yCUBYTU1bN10sQFhNTVs3XSxAWE1NWzE1XQlAIGZpeCB1cCBsYXN0IHJvdW5kIGtleQorCXZzdG1pYQlyMTIsIHtAWE1NWzddfQkJCUAgc2F2ZSBsYXN0IHJvdW5kIGtleQorCisuYWxpZ24JMgorMDoJYWRkCXIxMiwgJGtleSwgIzI0OAorCXZsZDEuOAl7QFhNTVswXX0sIFskY3RyXQkJQCBsb2FkIGNvdW50ZXIKKwlhZHJsCSRjdHIsIC5MUkVWTTBTUgkJCUAgYm9ycm93ICRjdHIKKwl2bGRtaWEJcjEyLCB7QFhNTVs0XX0JCQlAIGxvYWQgcm91bmQwIGtleQorCXN1YglzcCwgIzB4MTAJCQlAIHBsYWNlIGZvciBhZGp1c3RlZCByb3VuZDAga2V5CisjZW5kaWYKKworCXZtb3YuaTMyCUBYTU1bOF0sIzEJCUAgY29tcG9zZSAxPDw5NgorCXZlb3IJCUBYTU1bOV0sQFhNTVs5XSxAWE1NWzldCisJdnJldjMyLjgJQFhNTVswXSxAWE1NWzBdCisJdmV4dC44CQlAWE1NWzhdLEBYTU1bOV0sQFhNTVs4XSwjNAorCXZyZXYzMi44CUBYTU1bNF0sQFhNTVs0XQorCXZhZGQudTMyCUBYTU1bOV0sQFhNTVs4XSxAWE1NWzhdCUAgY29tcG9zZSAyPDw5NgorCXZzdG1pYQkka2V5c2NoZWQsIHtAWE1NWzRdfQkJQCBzYXZlIGFkanVzdGVkIHJvdW5kMCBrZXkKKwliCS5MY3RyX2VuY19sb29wCisKKy5hbGlnbgk0CisuTGN0cl9lbmNfbG9vcDoKKwl2YWRkLnUzMglAWE1NWzEwXSwgQFhNTVs4XSwgQFhNTVs5XQlAIGNvbXBvc2UgMzw8OTYKKwl2YWRkLnUzMglAWE1NWzFdLCBAWE1NWzBdLCBAWE1NWzhdCUAgKzEKKwl2YWRkLnUzMglAWE1NWzJdLCBAWE1NWzBdLCBAWE1NWzldCUAgKzIKKwl2YWRkLnUzMglAWE1NWzNdLCBAWE1NWzBdLCBAWE1NWzEwXQlAICszCisJdmFkZC51MzIJQFhNTVs0XSwgQFhNTVsxXSwgQFhNTVsxMF0KKwl2YWRkLnUzMglAWE1NWzVdLCBAWE1NWzJdLCBAWE1NWzEwXQorCXZhZGQudTMyCUBYTU1bNl0sIEBYTU1bM10sIEBYTU1bMTBdCisJdmFkZC51MzIJQFhNTVs3XSwgQFhNTVs0XSwgQFhNTVsxMF0KKwl2YWRkLnUzMglAWE1NWzEwXSwgQFhNTVs1XSwgQFhNTVsxMF0JQCBuZXh0IGNvdW50ZXIKKworCUAgQm9ycm93IHByb2xvZ3VlIGZyb20gX2JzYWVzX2VuY3J5cHQ4IHRvIHVzZSB0aGUgb3Bwb3J0dW5pdHkKKwlAIHRvIGZsaXAgYnl0ZSBvcmRlciBpbiAzMi1iaXQgY291bnRlcgorCisJdmxkbWlhCQkka2V5c2NoZWQsIHtAWE1NWzldfQkJQCBsb2FkIHJvdW5kMCBrZXkKKyNpZm5kZWYJQlNBRVNfQVNNX0VYVEVOREVEX0tFWQorCWFkZAkJcjQsICRrZXlzY2hlZCwgIzB4MTAJCUAgcGFzcyBuZXh0IHJvdW5kIGtleQorI2Vsc2UKKwlhZGQJCXI0LCAka2V5LCAjYDI0OCsxNmAKKyNlbmRpZgorCXZsZG1pYQkJJGN0ciwge0BYTU1bOF19CQkJQCAuTFJFVk0wU1IKKwltb3YJCXI1LCAkcm91bmRzCQkJQCBwYXNzIHJvdW5kcworCXZzdG1pYQkJJGZwLCB7QFhNTVsxMF19CQkJQCBzYXZlIG5leHQgY291bnRlcgorCXN1YgkJJGNvbnN0LCAkY3RyLCAjLkxSRVZNMFNSLS5MU1IJQCBwYXNzIGNvbnN0YW50cworCisJYmwJCV9ic2Flc19lbmNyeXB0OF9hbHQKKworCXN1YnMJCSRsZW4sICRsZW4sICM4CisJYmxvCQkuTGN0cl9lbmNfbG9vcF9kb25lCisKKwl2bGQxLjgJCXtAWE1NWzhdLUBYTU1bOV19LCBbJGlucF0hCUAgbG9hZCBpbnB1dAorCXZsZDEuOAkJe0BYTU1bMTBdLUBYTU1bMTFdfSwgWyRpbnBdIQorCXZlb3IJCUBYTU1bMF0sIEBYTU1bOF0KKwl2ZW9yCQlAWE1NWzFdLCBAWE1NWzldCisJdmxkMS44CQl7QFhNTVsxMl0tQFhNTVsxM119LCBbJGlucF0hCisJdmVvcgkJQFhNTVs0XSwgQFhNTVsxMF0KKwl2ZW9yCQlAWE1NWzZdLCBAWE1NWzExXQorCXZsZDEuOAkJe0BYTU1bMTRdLUBYTU1bMTVdfSwgWyRpbnBdIQorCXZlb3IJCUBYTU1bM10sIEBYTU1bMTJdCisJdnN0MS44CQl7QFhNTVswXS1AWE1NWzFdfSwgWyRvdXRdIQlAIHdyaXRlIG91dHB1dAorCXZlb3IJCUBYTU1bN10sIEBYTU1bMTNdCisJdmVvcgkJQFhNTVsyXSwgQFhNTVsxNF0KKwl2c3QxLjgJCXtAWE1NWzRdfSwgWyRvdXRdIQorCXZlb3IJCUBYTU1bNV0sIEBYTU1bMTVdCisJdnN0MS44CQl7QFhNTVs2XX0sIFskb3V0XSEKKwl2bW92LmkzMglAWE1NWzhdLCAjMQkJCUAgY29tcG9zZSAxPDw5NgorCXZzdDEuOAkJe0BYTU1bM119LCBbJG91dF0hCisJdmVvcgkJQFhNTVs5XSwgQFhNTVs5XSwgQFhNTVs5XQorCXZzdDEuOAkJe0BYTU1bN119LCBbJG91dF0hCisJdmV4dC44CQlAWE1NWzhdLCBAWE1NWzldLCBAWE1NWzhdLCAjNAorCXZzdDEuOAkJe0BYTU1bMl19LCBbJG91dF0hCisJdmFkZC51MzIJQFhNTVs5XSxAWE1NWzhdLEBYTU1bOF0JCUAgY29tcG9zZSAyPDw5NgorCXZzdDEuOAkJe0BYTU1bNV19LCBbJG91dF0hCisJdmxkbWlhCQkkZnAsIHtAWE1NWzBdfQkJCUAgbG9hZCBjb3VudGVyCisKKwlibmUJCS5MY3RyX2VuY19sb29wCisJYgkJLkxjdHJfZW5jX2RvbmUKKworLmFsaWduCTQKKy5MY3RyX2VuY19sb29wX2RvbmU6CisJYWRkCQkkbGVuLCAkbGVuLCAjOAorCXZsZDEuOAkJe0BYTU1bOF19LCBbJGlucF0hCUAgbG9hZCBpbnB1dAorCXZlb3IJCUBYTU1bMF0sIEBYTU1bOF0KKwl2c3QxLjgJCXtAWE1NWzBdfSwgWyRvdXRdIQlAIHdyaXRlIG91dHB1dAorCWNtcAkJJGxlbiwgIzIKKwlibG8JCS5MY3RyX2VuY19kb25lCisJdmxkMS44CQl7QFhNTVs5XX0sIFskaW5wXSEKKwl2ZW9yCQlAWE1NWzFdLCBAWE1NWzldCisJdnN0MS44CQl7QFhNTVsxXX0sIFskb3V0XSEKKwliZXEJCS5MY3RyX2VuY19kb25lCisJdmxkMS44CQl7QFhNTVsxMF19LCBbJGlucF0hCisJdmVvcgkJQFhNTVs0XSwgQFhNTVsxMF0KKwl2c3QxLjgJCXtAWE1NWzRdfSwgWyRvdXRdIQorCWNtcAkJJGxlbiwgIzQKKwlibG8JCS5MY3RyX2VuY19kb25lCisJdmxkMS44CQl7QFhNTVsxMV19LCBbJGlucF0hCisJdmVvcgkJQFhNTVs2XSwgQFhNTVsxMV0KKwl2c3QxLjgJCXtAWE1NWzZdfSwgWyRvdXRdIQorCWJlcQkJLkxjdHJfZW5jX2RvbmUKKwl2bGQxLjgJCXtAWE1NWzEyXX0sIFskaW5wXSEKKwl2ZW9yCQlAWE1NWzNdLCBAWE1NWzEyXQorCXZzdDEuOAkJe0BYTU1bM119LCBbJG91dF0hCisJY21wCQkkbGVuLCAjNgorCWJsbwkJLkxjdHJfZW5jX2RvbmUKKwl2bGQxLjgJCXtAWE1NWzEzXX0sIFskaW5wXSEKKwl2ZW9yCQlAWE1NWzddLCBAWE1NWzEzXQorCXZzdDEuOAkJe0BYTU1bN119LCBbJG91dF0hCisJYmVxCQkuTGN0cl9lbmNfZG9uZQorCXZsZDEuOAkJe0BYTU1bMTRdfSwgWyRpbnBdCisJdmVvcgkJQFhNTVsyXSwgQFhNTVsxNF0KKwl2c3QxLjgJCXtAWE1NWzJdfSwgWyRvdXRdIQorCisuTGN0cl9lbmNfZG9uZToKKwl2bW92LmkzMglxMCwgIzAKKwl2bW92LmkzMglxMSwgIzAKKyNpZm5kZWYJQlNBRVNfQVNNX0VYVEVOREVEX0tFWQorLkxjdHJfZW5jX2J6ZXJvOgkJCUAgd2lwZSBrZXkgc2NoZWR1bGUgW2lmIGFueV0KKwl2c3RtaWEJCSRrZXlzY2hlZCEsIHtxMC1xMX0KKwljbXAJCSRrZXlzY2hlZCwgJGZwCisJYm5lCQkuTGN0cl9lbmNfYnplcm8KKyNlbHNlCisJdnN0bWlhCQkka2V5c2NoZWQsIHtxMC1xMX0KKyNlbmRpZgorCisJbW92CXNwLCAkZnAKKwlhZGQJc3AsICMweDEwCQlAIGFkZCBzcCwkZnAsIzB4MTAgaXMgbm8gZ29vZCBmb3IgdGh1bWIKKwlWRlBfQUJJX1BPUAorCWxkbWlhCXNwISwge3I0LXIxMCwgcGN9CUAgcmV0dXJuCisKKy5hbGlnbgk0CisuTGN0cl9lbmNfc2hvcnQ6CisJbGRyCWlwLCBbc3BdCQlAIGN0ciBwb2ludGVyIGlzIHBhc3NlZCBvbiBzdGFjaworCXN0bWRiCXNwISwge3I0LXI4LCBscn0KKworCW1vdglyNCwgJGlucAkJQCBjb3B5IGFyZ3VtZW50cworCW1vdglyNSwgJG91dAorCW1vdglyNiwgJGxlbgorCW1vdglyNywgJGtleQorCWxkcglyOCwgW2lwLCAjMTJdCQlAIGxvYWQgY291bnRlciBMU1cKKwl2bGQxLjgJe0BYTU1bMV19LCBbaXBdCQlAIGxvYWQgd2hvbGUgY291bnRlciB2YWx1ZQorI2lmZGVmIF9fQVJNRUxfXworCXJldglyOCwgcjgKKyNlbmRpZgorCXN1YglzcCwgc3AsICMweDEwCisJdnN0MS44CXtAWE1NWzFdfSwgW3NwLDo2NF0JQCBjb3B5IGNvdW50ZXIgdmFsdWUKKwlzdWIJc3AsIHNwLCAjMHgxMAorCisuTGN0cl9lbmNfc2hvcnRfbG9vcDoKKwlhZGQJcjAsIHNwLCAjMHgxMAkJQCBpbnB1dCBjb3VudGVyIHZhbHVlCisJbW92CXIxLCBzcAkJCUAgb3V0cHV0IG9uIHRoZSBzdGFjaworCW1vdglyMiwgcjcJCQlAIGtleQorCisJYmwJQUVTX2VuY3J5cHQKKworCXZsZDEuOAl7QFhNTVswXX0sIFtyNF0hCUAgbG9hZCBpbnB1dAorCXZsZDEuOAl7QFhNTVsxXX0sIFtzcCw6NjRdCUAgbG9hZCBlbmNyeXB0ZWQgY291bnRlcgorCWFkZAlyOCwgcjgsICMxCisjaWZkZWYgX19BUk1FTF9fCisJcmV2CXIwLCByOAorCXN0cglyMCwgW3NwLCAjMHgxY10JCUAgbmV4dCBjb3VudGVyIHZhbHVlCisjZWxzZQorCXN0cglyOCwgW3NwLCAjMHgxY10JCUAgbmV4dCBjb3VudGVyIHZhbHVlCisjZW5kaWYKKwl2ZW9yCUBYTU1bMF0sQFhNTVswXSxAWE1NWzFdCisJdnN0MS44CXtAWE1NWzBdfSwgW3I1XSEJQCBzdG9yZSBvdXRwdXQKKwlzdWJzCXI2LCByNiwgIzEKKwlibmUJLkxjdHJfZW5jX3Nob3J0X2xvb3AKKworCXZtb3YuaTMyCXEwLCAjMAorCXZtb3YuaTMyCXExLCAjMAorCXZzdG1pYQkJc3AhLCB7cTAtcTF9CisKKwlsZG1pYQlzcCEsIHtyNC1yOCwgcGN9Cisuc2l6ZQlic2Flc19jdHIzMl9lbmNyeXB0X2Jsb2NrcywuLWJzYWVzX2N0cjMyX2VuY3J5cHRfYmxvY2tzCitfX18KK30KK3sKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgdm9pZCBic2Flc194dHNfW2VufGRlXWNyeXB0KGNvbnN0IGNoYXIgKmlucCxjaGFyICpvdXQsc2l6ZV90IGxlbiwKKyMJY29uc3QgQUVTX0tFWSAqa2V5MSwgY29uc3QgQUVTX0tFWSAqa2V5MiwKKyMJY29uc3QgdW5zaWduZWQgY2hhciBpdlsxNl0pOworIworbXkgKCRpbnAsJG91dCwkbGVuLCRrZXksJHJvdW5kcywkbWFnaWMsJGZwKT0obWFwKCJyJF8iLCg3Li4xMCwxLi4zKSkpOworbXkgJGNvbnN0PSJyNiI7CQkjIHJldHVybmVkIGJ5IF9ic2Flc19rZXlfY29udmVydAorbXkgJHR3bWFzaz1AWE1NWzVdOworbXkgQFQ9QFhNTVs2Li43XTsKKworJGNvZGUuPTw8X19fOworLmdsb2JsCWJzYWVzX3h0c19lbmNyeXB0CisudHlwZQlic2Flc194dHNfZW5jcnlwdCwlZnVuY3Rpb24KKy5hbGlnbgk0Citic2Flc194dHNfZW5jcnlwdDoKKwltb3YJaXAsIHNwCisJc3RtZGIJc3AhLCB7cjQtcjEwLCBscn0JCUAgMHgyMAorCVZGUF9BQklfUFVTSAorCW1vdglyNiwgc3AJCQkJQCBmdXR1cmUgJGZwCisKKwltb3YJJGlucCwgcjAKKwltb3YJJG91dCwgcjEKKwltb3YJJGxlbiwgcjIKKwltb3YJJGtleSwgcjMKKworCXN1YglyMCwgc3AsICMweDEwCQkJQCAweDEwCisJYmljCXIwLCAjMHhmCQkJQCBhbGlnbiBhdCAxNiBieXRlcworCW1vdglzcCwgcjAKKworI2lmZGVmCVhUU19DSEFJTl9UV0VBSworCWxkcglyMCwgW2lwXQkJCUAgcG9pbnRlciB0byBpbnB1dCB0d2VhaworI2Vsc2UKKwlAIGdlbmVyYXRlIGluaXRpYWwgdHdlYWsKKwlsZHIJcjAsIFtpcCwgIzRdCQkJQCBpdltdCisJbW92CXIxLCBzcAorCWxkcglyMiwgW2lwLCAjMF0JCQlAIGtleTIKKwlibAlBRVNfZW5jcnlwdAorCW1vdglyMCxzcAkJCQlAIHBvaW50ZXIgdG8gaW5pdGlhbCB0d2VhaworI2VuZGlmCisKKwlsZHIJJHJvdW5kcywgWyRrZXksICMyNDBdCQlAIGdldCAjIG9mIHJvdW5kcworCW1vdgkkZnAsIHI2CisjaWZuZGVmCUJTQUVTX0FTTV9FWFRFTkRFRF9LRVkKKwlAIGFsbG9jYXRlIHRoZSBrZXkgc2NoZWR1bGUgb24gdGhlIHN0YWNrCisJc3ViCXIxMiwgc3AsICRyb3VuZHMsIGxzbCM3CQlAIDEyOCBieXRlcyBwZXIgaW5uZXIgcm91bmQga2V5CisJQCBhZGQJcjEyLCAjYDEyOC0zMmAJCQlAIHNpemUgb2YgYml0LXNsaWNlZCBrZXkgc2NoZWR1bGUKKwlzdWIJcjEyLCAjYDMyKzE2YAkJCUAgcGxhY2UgZm9yIHR3ZWFrWzldCisKKwlAIHBvcHVsYXRlIHRoZSBrZXkgc2NoZWR1bGUKKwltb3YJcjQsICRrZXkJCQlAIHBhc3Mga2V5CisJbW92CXI1LCAkcm91bmRzCQkJQCBwYXNzICMgb2Ygcm91bmRzCisJbW92CXNwLCByMTIKKwlhZGQJcjEyLCAjMHg5MAkJCUAgcGFzcyBrZXkgc2NoZWR1bGUKKwlibAlfYnNhZXNfa2V5X2NvbnZlcnQKKwl2ZW9yCUBYTU1bN10sIEBYTU1bN10sIEBYTU1bMTVdCUAgZml4IHVwIGxhc3Qgcm91bmQga2V5CisJdnN0bWlhCXIxMiwge0BYTU1bN119CQkJQCBzYXZlIGxhc3Qgcm91bmQga2V5CisjZWxzZQorCWxkcglyMTIsIFska2V5LCAjMjQ0XQorCWVvcnMJcjEyLCAjMQorCWJlcQkwZgorCisJc3RyCXIxMiwgWyRrZXksICMyNDRdCisJbW92CXI0LCAka2V5CQkJQCBwYXNzIGtleQorCW1vdglyNSwgJHJvdW5kcwkJCUAgcGFzcyAjIG9mIHJvdW5kcworCWFkZAlyMTIsICRrZXksICMyNDgJCQlAIHBhc3Mga2V5IHNjaGVkdWxlCisJYmwJX2JzYWVzX2tleV9jb252ZXJ0CisJdmVvcglAWE1NWzddLCBAWE1NWzddLCBAWE1NWzE1XQlAIGZpeCB1cCBsYXN0IHJvdW5kIGtleQorCXZzdG1pYQlyMTIsIHtAWE1NWzddfQorCisuYWxpZ24JMgorMDoJc3ViCXNwLCAjMHg5MAkJCUAgcGxhY2UgZm9yIHR3ZWFrWzldCisjZW5kaWYKKworCXZsZDEuOAl7QFhNTVs4XX0sIFtyMF0JCQlAIGluaXRpYWwgdHdlYWsKKwlhZHIJJG1hZ2ljLCAuTHh0c19tYWdpYworCisJc3VicwkkbGVuLCAjMHg4MAorCWJsbwkuTHh0c19lbmNfc2hvcnQKKwliCS5MeHRzX2VuY19sb29wCisKKy5hbGlnbgk0CisuTHh0c19lbmNfbG9vcDoKKwl2bGRtaWEJCSRtYWdpYywgeyR0d21hc2t9CUAgbG9hZCBYVFMgbWFnaWMKKwl2c2hyLnM2NAlAVFswXSwgQFhNTVs4XSwgIzYzCisJbW92CQlyMCwgc3AKKwl2YW5kCQlAVFswXSwgQFRbMF0sICR0d21hc2sKK19fXworZm9yKCRpPTk7JGk8MTY7JGkrKykgeworJGNvZGUuPTw8X19fOworCXZhZGQudTY0CUBYTU1bJGldLCBAWE1NWyRpLTFdLCBAWE1NWyRpLTFdCisJdnN0MS42NAkJe0BYTU1bJGktMV19LCBbcjAsOjEyOF0hCisJdnN3cAkJYCZEaGkoIkBUWzBdIilgLGAmRGxvKCJAVFswXSIpYAorCXZzaHIuczY0CUBUWzFdLCBAWE1NWyRpXSwgIzYzCisJdmVvcgkJQFhNTVskaV0sIEBYTU1bJGldLCBAVFswXQorCXZhbmQJCUBUWzFdLCBAVFsxXSwgJHR3bWFzaworX19fCisJQFQ9cmV2ZXJzZShAVCk7CisKKyRjb2RlLj08PF9fXyBpZiAoJGk+PTEwKTsKKwl2bGQxLjgJCXtAWE1NWyRpLTEwXX0sIFskaW5wXSEKK19fXworJGNvZGUuPTw8X19fIGlmICgkaT49MTEpOworCXZlb3IJCUBYTU1bJGktMTFdLCBAWE1NWyRpLTExXSwgQFhNTVskaS0zXQorX19fCit9CiskY29kZS49PDxfX187CisJdmFkZC51NjQJQFhNTVs4XSwgQFhNTVsxNV0sIEBYTU1bMTVdCisJdnN0MS42NAkJe0BYTU1bMTVdfSwgW3IwLDoxMjhdIQorCXZzd3AJCWAmRGhpKCJAVFswXSIpYCxgJkRsbygiQFRbMF0iKWAKKwl2ZW9yCQlAWE1NWzhdLCBAWE1NWzhdLCBAVFswXQorCXZzdDEuNjQJCXtAWE1NWzhdfSwgW3IwLDoxMjhdCQlAIG5leHQgcm91bmQgdHdlYWsKKworCXZsZDEuOAkJe0BYTU1bNl0tQFhNTVs3XX0sIFskaW5wXSEKKwl2ZW9yCQlAWE1NWzVdLCBAWE1NWzVdLCBAWE1NWzEzXQorI2lmbmRlZglCU0FFU19BU01fRVhURU5ERURfS0VZCisJYWRkCQlyNCwgc3AsICMweDkwCQkJQCBwYXNzIGtleSBzY2hlZHVsZQorI2Vsc2UKKwlhZGQJCXI0LCAka2V5LCAjMjQ4CQkJQCBwYXNzIGtleSBzY2hlZHVsZQorI2VuZGlmCisJdmVvcgkJQFhNTVs2XSwgQFhNTVs2XSwgQFhNTVsxNF0KKwltb3YJCXI1LCAkcm91bmRzCQkJQCBwYXNzIHJvdW5kcworCXZlb3IJCUBYTU1bN10sIEBYTU1bN10sIEBYTU1bMTVdCisJbW92CQlyMCwgc3AKKworCWJsCQlfYnNhZXNfZW5jcnlwdDgKKworCXZsZDEuNjQJCXtAWE1NWyA4XS1AWE1NWyA5XX0sIFtyMCw6MTI4XSEKKwl2bGQxLjY0CQl7QFhNTVsxMF0tQFhNTVsxMV19LCBbcjAsOjEyOF0hCisJdmVvcgkJQFhNTVswXSwgQFhNTVswXSwgQFhNTVsgOF0KKwl2bGQxLjY0CQl7QFhNTVsxMl0tQFhNTVsxM119LCBbcjAsOjEyOF0hCisJdmVvcgkJQFhNTVsxXSwgQFhNTVsxXSwgQFhNTVsgOV0KKwl2ZW9yCQlAWE1NWzhdLCBAWE1NWzRdLCBAWE1NWzEwXQorCXZzdDEuOAkJe0BYTU1bMF0tQFhNTVsxXX0sIFskb3V0XSEKKwl2ZW9yCQlAWE1NWzldLCBAWE1NWzZdLCBAWE1NWzExXQorCXZsZDEuNjQJCXtAWE1NWzE0XS1AWE1NWzE1XX0sIFtyMCw6MTI4XSEKKwl2ZW9yCQlAWE1NWzEwXSwgQFhNTVszXSwgQFhNTVsxMl0KKwl2c3QxLjgJCXtAWE1NWzhdLUBYTU1bOV19LCBbJG91dF0hCisJdmVvcgkJQFhNTVsxMV0sIEBYTU1bN10sIEBYTU1bMTNdCisJdmVvcgkJQFhNTVsxMl0sIEBYTU1bMl0sIEBYTU1bMTRdCisJdnN0MS44CQl7QFhNTVsxMF0tQFhNTVsxMV19LCBbJG91dF0hCisJdmVvcgkJQFhNTVsxM10sIEBYTU1bNV0sIEBYTU1bMTVdCisJdnN0MS44CQl7QFhNTVsxMl0tQFhNTVsxM119LCBbJG91dF0hCisKKwl2bGQxLjY0CQl7QFhNTVs4XX0sIFtyMCw6MTI4XQkJQCBuZXh0IHJvdW5kIHR3ZWFrCisKKwlzdWJzCQkkbGVuLCAjMHg4MAorCWJwbAkJLkx4dHNfZW5jX2xvb3AKKworLkx4dHNfZW5jX3Nob3J0OgorCWFkZHMJCSRsZW4sICMweDcwCisJYm1pCQkuTHh0c19lbmNfZG9uZQorCisJdmxkbWlhCQkkbWFnaWMsIHskdHdtYXNrfQlAIGxvYWQgWFRTIG1hZ2ljCisJdnNoci5zNjQJQFRbMF0sIEBYTU1bOF0sICM2MworCW1vdgkJcjAsIHNwCisJdmFuZAkJQFRbMF0sIEBUWzBdLCAkdHdtYXNrCitfX18KK2ZvcigkaT05OyRpPDE2OyRpKyspIHsKKyRjb2RlLj08PF9fXzsKKwl2YWRkLnU2NAlAWE1NWyRpXSwgQFhNTVskaS0xXSwgQFhNTVskaS0xXQorCXZzdDEuNjQJCXtAWE1NWyRpLTFdfSwgW3IwLDoxMjhdIQorCXZzd3AJCWAmRGhpKCJAVFswXSIpYCxgJkRsbygiQFRbMF0iKWAKKwl2c2hyLnM2NAlAVFsxXSwgQFhNTVskaV0sICM2MworCXZlb3IJCUBYTU1bJGldLCBAWE1NWyRpXSwgQFRbMF0KKwl2YW5kCQlAVFsxXSwgQFRbMV0sICR0d21hc2sKK19fXworCUBUPXJldmVyc2UoQFQpOworCiskY29kZS49PDxfX18gaWYgKCRpPj0xMCk7CisJdmxkMS44CQl7QFhNTVskaS0xMF19LCBbJGlucF0hCisJc3VicwkJJGxlbiwgIzB4MTAKKwlibWkJCS5MeHRzX2VuY19gJGktOWAKK19fXworJGNvZGUuPTw8X19fIGlmICgkaT49MTEpOworCXZlb3IJCUBYTU1bJGktMTFdLCBAWE1NWyRpLTExXSwgQFhNTVskaS0zXQorX19fCit9CiskY29kZS49PDxfX187CisJc3ViCQkkbGVuLCAjMHgxMAorCXZzdDEuNjQJCXtAWE1NWzE1XX0sIFtyMCw6MTI4XQkJQCBuZXh0IHJvdW5kIHR3ZWFrCisKKwl2bGQxLjgJCXtAWE1NWzZdfSwgWyRpbnBdIQorCXZlb3IJCUBYTU1bNV0sIEBYTU1bNV0sIEBYTU1bMTNdCisjaWZuZGVmCUJTQUVTX0FTTV9FWFRFTkRFRF9LRVkKKwlhZGQJCXI0LCBzcCwgIzB4OTAJCQlAIHBhc3Mga2V5IHNjaGVkdWxlCisjZWxzZQorCWFkZAkJcjQsICRrZXksICMyNDgJCQlAIHBhc3Mga2V5IHNjaGVkdWxlCisjZW5kaWYKKwl2ZW9yCQlAWE1NWzZdLCBAWE1NWzZdLCBAWE1NWzE0XQorCW1vdgkJcjUsICRyb3VuZHMJCQlAIHBhc3Mgcm91bmRzCisJbW92CQlyMCwgc3AKKworCWJsCQlfYnNhZXNfZW5jcnlwdDgKKworCXZsZDEuNjQJCXtAWE1NWyA4XS1AWE1NWyA5XX0sIFtyMCw6MTI4XSEKKwl2bGQxLjY0CQl7QFhNTVsxMF0tQFhNTVsxMV19LCBbcjAsOjEyOF0hCisJdmVvcgkJQFhNTVswXSwgQFhNTVswXSwgQFhNTVsgOF0KKwl2bGQxLjY0CQl7QFhNTVsxMl0tQFhNTVsxM119LCBbcjAsOjEyOF0hCisJdmVvcgkJQFhNTVsxXSwgQFhNTVsxXSwgQFhNTVsgOV0KKwl2ZW9yCQlAWE1NWzhdLCBAWE1NWzRdLCBAWE1NWzEwXQorCXZzdDEuOAkJe0BYTU1bMF0tQFhNTVsxXX0sIFskb3V0XSEKKwl2ZW9yCQlAWE1NWzldLCBAWE1NWzZdLCBAWE1NWzExXQorCXZsZDEuNjQJCXtAWE1NWzE0XX0sIFtyMCw6MTI4XSEKKwl2ZW9yCQlAWE1NWzEwXSwgQFhNTVszXSwgQFhNTVsxMl0KKwl2c3QxLjgJCXtAWE1NWzhdLUBYTU1bOV19LCBbJG91dF0hCisJdmVvcgkJQFhNTVsxMV0sIEBYTU1bN10sIEBYTU1bMTNdCisJdmVvcgkJQFhNTVsxMl0sIEBYTU1bMl0sIEBYTU1bMTRdCisJdnN0MS44CQl7QFhNTVsxMF0tQFhNTVsxMV19LCBbJG91dF0hCisJdnN0MS44CQl7QFhNTVsxMl19LCBbJG91dF0hCisKKwl2bGQxLjY0CQl7QFhNTVs4XX0sIFtyMCw6MTI4XQkJQCBuZXh0IHJvdW5kIHR3ZWFrCisJYgkJLkx4dHNfZW5jX2RvbmUKKy5hbGlnbgk0CisuTHh0c19lbmNfNjoKKwl2c3QxLjY0CQl7QFhNTVsxNF19LCBbcjAsOjEyOF0JCUAgbmV4dCByb3VuZCB0d2VhaworCisJdmVvcgkJQFhNTVs0XSwgQFhNTVs0XSwgQFhNTVsxMl0KKyNpZm5kZWYJQlNBRVNfQVNNX0VYVEVOREVEX0tFWQorCWFkZAkJcjQsIHNwLCAjMHg5MAkJCUAgcGFzcyBrZXkgc2NoZWR1bGUKKyNlbHNlCisJYWRkCQlyNCwgJGtleSwgIzI0OAkJCUAgcGFzcyBrZXkgc2NoZWR1bGUKKyNlbmRpZgorCXZlb3IJCUBYTU1bNV0sIEBYTU1bNV0sIEBYTU1bMTNdCisJbW92CQlyNSwgJHJvdW5kcwkJCUAgcGFzcyByb3VuZHMKKwltb3YJCXIwLCBzcAorCisJYmwJCV9ic2Flc19lbmNyeXB0OAorCisJdmxkMS42NAkJe0BYTU1bIDhdLUBYTU1bIDldfSwgW3IwLDoxMjhdIQorCXZsZDEuNjQJCXtAWE1NWzEwXS1AWE1NWzExXX0sIFtyMCw6MTI4XSEKKwl2ZW9yCQlAWE1NWzBdLCBAWE1NWzBdLCBAWE1NWyA4XQorCXZsZDEuNjQJCXtAWE1NWzEyXS1AWE1NWzEzXX0sIFtyMCw6MTI4XSEKKwl2ZW9yCQlAWE1NWzFdLCBAWE1NWzFdLCBAWE1NWyA5XQorCXZlb3IJCUBYTU1bOF0sIEBYTU1bNF0sIEBYTU1bMTBdCisJdnN0MS44CQl7QFhNTVswXS1AWE1NWzFdfSwgWyRvdXRdIQorCXZlb3IJCUBYTU1bOV0sIEBYTU1bNl0sIEBYTU1bMTFdCisJdmVvcgkJQFhNTVsxMF0sIEBYTU1bM10sIEBYTU1bMTJdCisJdnN0MS44CQl7QFhNTVs4XS1AWE1NWzldfSwgWyRvdXRdIQorCXZlb3IJCUBYTU1bMTFdLCBAWE1NWzddLCBAWE1NWzEzXQorCXZzdDEuOAkJe0BYTU1bMTBdLUBYTU1bMTFdfSwgWyRvdXRdIQorCisJdmxkMS42NAkJe0BYTU1bOF19LCBbcjAsOjEyOF0JCUAgbmV4dCByb3VuZCB0d2VhaworCWIJCS5MeHRzX2VuY19kb25lCisKK0AgcHV0IHRoaXMgaW4gcmFuZ2UgZm9yIGJvdGggQVJNIGFuZCBUaHVtYiBtb2RlIGFkciBpbnN0cnVjdGlvbnMKKy5hbGlnbgk1CisuTHh0c19tYWdpYzoKKwkucXVhZAkxLCAweDg3CisKKy5hbGlnbgk1CisuTHh0c19lbmNfNToKKwl2c3QxLjY0CQl7QFhNTVsxM119LCBbcjAsOjEyOF0JCUAgbmV4dCByb3VuZCB0d2VhaworCisJdmVvcgkJQFhNTVszXSwgQFhNTVszXSwgQFhNTVsxMV0KKyNpZm5kZWYJQlNBRVNfQVNNX0VYVEVOREVEX0tFWQorCWFkZAkJcjQsIHNwLCAjMHg5MAkJCUAgcGFzcyBrZXkgc2NoZWR1bGUKKyNlbHNlCisJYWRkCQlyNCwgJGtleSwgIzI0OAkJCUAgcGFzcyBrZXkgc2NoZWR1bGUKKyNlbmRpZgorCXZlb3IJCUBYTU1bNF0sIEBYTU1bNF0sIEBYTU1bMTJdCisJbW92CQlyNSwgJHJvdW5kcwkJCUAgcGFzcyByb3VuZHMKKwltb3YJCXIwLCBzcAorCisJYmwJCV9ic2Flc19lbmNyeXB0OAorCisJdmxkMS42NAkJe0BYTU1bIDhdLUBYTU1bIDldfSwgW3IwLDoxMjhdIQorCXZsZDEuNjQJCXtAWE1NWzEwXS1AWE1NWzExXX0sIFtyMCw6MTI4XSEKKwl2ZW9yCQlAWE1NWzBdLCBAWE1NWzBdLCBAWE1NWyA4XQorCXZsZDEuNjQJCXtAWE1NWzEyXX0sIFtyMCw6MTI4XSEKKwl2ZW9yCQlAWE1NWzFdLCBAWE1NWzFdLCBAWE1NWyA5XQorCXZlb3IJCUBYTU1bOF0sIEBYTU1bNF0sIEBYTU1bMTBdCisJdnN0MS44CQl7QFhNTVswXS1AWE1NWzFdfSwgWyRvdXRdIQorCXZlb3IJCUBYTU1bOV0sIEBYTU1bNl0sIEBYTU1bMTFdCisJdmVvcgkJQFhNTVsxMF0sIEBYTU1bM10sIEBYTU1bMTJdCisJdnN0MS44CQl7QFhNTVs4XS1AWE1NWzldfSwgWyRvdXRdIQorCXZzdDEuOAkJe0BYTU1bMTBdfSwgWyRvdXRdIQorCisJdmxkMS42NAkJe0BYTU1bOF19LCBbcjAsOjEyOF0JCUAgbmV4dCByb3VuZCB0d2VhaworCWIJCS5MeHRzX2VuY19kb25lCisuYWxpZ24JNAorLkx4dHNfZW5jXzQ6CisJdnN0MS42NAkJe0BYTU1bMTJdfSwgW3IwLDoxMjhdCQlAIG5leHQgcm91bmQgdHdlYWsKKworCXZlb3IJCUBYTU1bMl0sIEBYTU1bMl0sIEBYTU1bMTBdCisjaWZuZGVmCUJTQUVTX0FTTV9FWFRFTkRFRF9LRVkKKwlhZGQJCXI0LCBzcCwgIzB4OTAJCQlAIHBhc3Mga2V5IHNjaGVkdWxlCisjZWxzZQorCWFkZAkJcjQsICRrZXksICMyNDgJCQlAIHBhc3Mga2V5IHNjaGVkdWxlCisjZW5kaWYKKwl2ZW9yCQlAWE1NWzNdLCBAWE1NWzNdLCBAWE1NWzExXQorCW1vdgkJcjUsICRyb3VuZHMJCQlAIHBhc3Mgcm91bmRzCisJbW92CQlyMCwgc3AKKworCWJsCQlfYnNhZXNfZW5jcnlwdDgKKworCXZsZDEuNjQJCXtAWE1NWyA4XS1AWE1NWyA5XX0sIFtyMCw6MTI4XSEKKwl2bGQxLjY0CQl7QFhNTVsxMF0tQFhNTVsxMV19LCBbcjAsOjEyOF0hCisJdmVvcgkJQFhNTVswXSwgQFhNTVswXSwgQFhNTVsgOF0KKwl2ZW9yCQlAWE1NWzFdLCBAWE1NWzFdLCBAWE1NWyA5XQorCXZlb3IJCUBYTU1bOF0sIEBYTU1bNF0sIEBYTU1bMTBdCisJdnN0MS44CQl7QFhNTVswXS1AWE1NWzFdfSwgWyRvdXRdIQorCXZlb3IJCUBYTU1bOV0sIEBYTU1bNl0sIEBYTU1bMTFdCisJdnN0MS44CQl7QFhNTVs4XS1AWE1NWzldfSwgWyRvdXRdIQorCisJdmxkMS42NAkJe0BYTU1bOF19LCBbcjAsOjEyOF0JCUAgbmV4dCByb3VuZCB0d2VhaworCWIJCS5MeHRzX2VuY19kb25lCisuYWxpZ24JNAorLkx4dHNfZW5jXzM6CisJdnN0MS42NAkJe0BYTU1bMTFdfSwgW3IwLDoxMjhdCQlAIG5leHQgcm91bmQgdHdlYWsKKworCXZlb3IJCUBYTU1bMV0sIEBYTU1bMV0sIEBYTU1bOV0KKyNpZm5kZWYJQlNBRVNfQVNNX0VYVEVOREVEX0tFWQorCWFkZAkJcjQsIHNwLCAjMHg5MAkJCUAgcGFzcyBrZXkgc2NoZWR1bGUKKyNlbHNlCisJYWRkCQlyNCwgJGtleSwgIzI0OAkJCUAgcGFzcyBrZXkgc2NoZWR1bGUKKyNlbmRpZgorCXZlb3IJCUBYTU1bMl0sIEBYTU1bMl0sIEBYTU1bMTBdCisJbW92CQlyNSwgJHJvdW5kcwkJCUAgcGFzcyByb3VuZHMKKwltb3YJCXIwLCBzcAorCisJYmwJCV9ic2Flc19lbmNyeXB0OAorCisJdmxkMS42NAkJe0BYTU1bOF0tQFhNTVs5XX0sIFtyMCw6MTI4XSEKKwl2bGQxLjY0CQl7QFhNTVsxMF19LCBbcjAsOjEyOF0hCisJdmVvcgkJQFhNTVswXSwgQFhNTVswXSwgQFhNTVsgOF0KKwl2ZW9yCQlAWE1NWzFdLCBAWE1NWzFdLCBAWE1NWyA5XQorCXZlb3IJCUBYTU1bOF0sIEBYTU1bNF0sIEBYTU1bMTBdCisJdnN0MS44CQl7QFhNTVswXS1AWE1NWzFdfSwgWyRvdXRdIQorCXZzdDEuOAkJe0BYTU1bOF19LCBbJG91dF0hCisKKwl2bGQxLjY0CQl7QFhNTVs4XX0sIFtyMCw6MTI4XQkJQCBuZXh0IHJvdW5kIHR3ZWFrCisJYgkJLkx4dHNfZW5jX2RvbmUKKy5hbGlnbgk0CisuTHh0c19lbmNfMjoKKwl2c3QxLjY0CQl7QFhNTVsxMF19LCBbcjAsOjEyOF0JCUAgbmV4dCByb3VuZCB0d2VhaworCisJdmVvcgkJQFhNTVswXSwgQFhNTVswXSwgQFhNTVs4XQorI2lmbmRlZglCU0FFU19BU01fRVhURU5ERURfS0VZCisJYWRkCQlyNCwgc3AsICMweDkwCQkJQCBwYXNzIGtleSBzY2hlZHVsZQorI2Vsc2UKKwlhZGQJCXI0LCAka2V5LCAjMjQ4CQkJQCBwYXNzIGtleSBzY2hlZHVsZQorI2VuZGlmCisJdmVvcgkJQFhNTVsxXSwgQFhNTVsxXSwgQFhNTVs5XQorCW1vdgkJcjUsICRyb3VuZHMJCQlAIHBhc3Mgcm91bmRzCisJbW92CQlyMCwgc3AKKworCWJsCQlfYnNhZXNfZW5jcnlwdDgKKworCXZsZDEuNjQJCXtAWE1NWzhdLUBYTU1bOV19LCBbcjAsOjEyOF0hCisJdmVvcgkJQFhNTVswXSwgQFhNTVswXSwgQFhNTVsgOF0KKwl2ZW9yCQlAWE1NWzFdLCBAWE1NWzFdLCBAWE1NWyA5XQorCXZzdDEuOAkJe0BYTU1bMF0tQFhNTVsxXX0sIFskb3V0XSEKKworCXZsZDEuNjQJCXtAWE1NWzhdfSwgW3IwLDoxMjhdCQlAIG5leHQgcm91bmQgdHdlYWsKKwliCQkuTHh0c19lbmNfZG9uZQorLmFsaWduCTQKKy5MeHRzX2VuY18xOgorCW1vdgkJcjAsIHNwCisJdmVvcgkJQFhNTVswXSwgQFhNTVs4XQorCW1vdgkJcjEsIHNwCisJdnN0MS44CQl7QFhNTVswXX0sIFtzcCw6MTI4XQorCW1vdgkJcjIsICRrZXkKKwltb3YJCXI0LCAkZnAJCQkJQCBwcmVzZXJ2ZSBmcAorCisJYmwJCUFFU19lbmNyeXB0CisKKwl2bGQxLjgJCXtAWE1NWzBdfSwgW3NwLDoxMjhdCisJdmVvcgkJQFhNTVswXSwgQFhNTVswXSwgQFhNTVs4XQorCXZzdDEuOAkJe0BYTU1bMF19LCBbJG91dF0hCisJbW92CQkkZnAsIHI0CisKKwl2bW92CQlAWE1NWzhdLCBAWE1NWzldCQlAIG5leHQgcm91bmQgdHdlYWsKKworLkx4dHNfZW5jX2RvbmU6CisjaWZuZGVmCVhUU19DSEFJTl9UV0VBSworCWFkZHMJCSRsZW4sICMweDEwCisJYmVxCQkuTHh0c19lbmNfcmV0CisJc3ViCQlyNiwgJG91dCwgIzB4MTAKKworLkx4dHNfZW5jX3N0ZWFsOgorCWxkcmIJCXIwLCBbJGlucF0sICMxCisJbGRyYgkJcjEsIFskb3V0LCAjLTB4MTBdCisJc3RyYgkJcjAsIFskb3V0LCAjLTB4MTBdCisJc3RyYgkJcjEsIFskb3V0XSwgIzEKKworCXN1YnMJCSRsZW4sICMxCisJYmhpCQkuTHh0c19lbmNfc3RlYWwKKworCXZsZDEuOAkJe0BYTU1bMF19LCBbcjZdCisJbW92CQlyMCwgc3AKKwl2ZW9yCQlAWE1NWzBdLCBAWE1NWzBdLCBAWE1NWzhdCisJbW92CQlyMSwgc3AKKwl2c3QxLjgJCXtAWE1NWzBdfSwgW3NwLDoxMjhdCisJbW92CQlyMiwgJGtleQorCW1vdgkJcjQsICRmcAkJCUAgcHJlc2VydmUgZnAKKworCWJsCQlBRVNfZW5jcnlwdAorCisJdmxkMS44CQl7QFhNTVswXX0sIFtzcCw6MTI4XQorCXZlb3IJCUBYTU1bMF0sIEBYTU1bMF0sIEBYTU1bOF0KKwl2c3QxLjgJCXtAWE1NWzBdfSwgW3I2XQorCW1vdgkJJGZwLCByNAorI2VuZGlmCisKKy5MeHRzX2VuY19yZXQ6CisJYmljCQlyMCwgJGZwLCAjMHhmCisJdm1vdi5pMzIJcTAsICMwCisJdm1vdi5pMzIJcTEsICMwCisjaWZkZWYJWFRTX0NIQUlOX1RXRUFLCisJbGRyCQlyMSwgWyRmcCwgIzB4MjArVkZQX0FCSV9GUkFNRV0JQCBjaGFpbiB0d2VhaworI2VuZGlmCisuTHh0c19lbmNfYnplcm86CQkJCUAgd2lwZSBrZXkgc2NoZWR1bGUgW2lmIGFueV0KKwl2c3RtaWEJCXNwISwge3EwLXExfQorCWNtcAkJc3AsIHIwCisJYm5lCQkuTHh0c19lbmNfYnplcm8KKworCW1vdgkJc3AsICRmcAorI2lmZGVmCVhUU19DSEFJTl9UV0VBSworCXZzdDEuOAkJe0BYTU1bOF19LCBbcjFdCisjZW5kaWYKKwlWRlBfQUJJX1BPUAorCWxkbWlhCQlzcCEsIHtyNC1yMTAsIHBjfQlAIHJldHVybgorCisuc2l6ZQlic2Flc194dHNfZW5jcnlwdCwuLWJzYWVzX3h0c19lbmNyeXB0CisKKy5nbG9ibAlic2Flc194dHNfZGVjcnlwdAorLnR5cGUJYnNhZXNfeHRzX2RlY3J5cHQsJWZ1bmN0aW9uCisuYWxpZ24JNAorYnNhZXNfeHRzX2RlY3J5cHQ6CisJbW92CWlwLCBzcAorCXN0bWRiCXNwISwge3I0LXIxMCwgbHJ9CQlAIDB4MjAKKwlWRlBfQUJJX1BVU0gKKwltb3YJcjYsIHNwCQkJCUAgZnV0dXJlICRmcAorCisJbW92CSRpbnAsIHIwCisJbW92CSRvdXQsIHIxCisJbW92CSRsZW4sIHIyCisJbW92CSRrZXksIHIzCisKKwlzdWIJcjAsIHNwLCAjMHgxMAkJCUAgMHgxMAorCWJpYwlyMCwgIzB4ZgkJCUAgYWxpZ24gYXQgMTYgYnl0ZXMKKwltb3YJc3AsIHIwCisKKyNpZmRlZglYVFNfQ0hBSU5fVFdFQUsKKwlsZHIJcjAsIFtpcF0JCQlAIHBvaW50ZXIgdG8gaW5wdXQgdHdlYWsKKyNlbHNlCisJQCBnZW5lcmF0ZSBpbml0aWFsIHR3ZWFrCisJbGRyCXIwLCBbaXAsICM0XQkJCUAgaXZbXQorCW1vdglyMSwgc3AKKwlsZHIJcjIsIFtpcCwgIzBdCQkJQCBrZXkyCisJYmwJQUVTX2VuY3J5cHQKKwltb3YJcjAsIHNwCQkJCUAgcG9pbnRlciB0byBpbml0aWFsIHR3ZWFrCisjZW5kaWYKKworCWxkcgkkcm91bmRzLCBbJGtleSwgIzI0MF0JCUAgZ2V0ICMgb2Ygcm91bmRzCisJbW92CSRmcCwgcjYKKyNpZm5kZWYJQlNBRVNfQVNNX0VYVEVOREVEX0tFWQorCUAgYWxsb2NhdGUgdGhlIGtleSBzY2hlZHVsZSBvbiB0aGUgc3RhY2sKKwlzdWIJcjEyLCBzcCwgJHJvdW5kcywgbHNsIzcJCUAgMTI4IGJ5dGVzIHBlciBpbm5lciByb3VuZCBrZXkKKwlAIGFkZAlyMTIsICNgMTI4LTMyYAkJCUAgc2l6ZSBvZiBiaXQtc2xpY2VkIGtleSBzY2hlZHVsZQorCXN1YglyMTIsICNgMzIrMTZgCQkJQCBwbGFjZSBmb3IgdHdlYWtbOV0KKworCUAgcG9wdWxhdGUgdGhlIGtleSBzY2hlZHVsZQorCW1vdglyNCwgJGtleQkJCUAgcGFzcyBrZXkKKwltb3YJcjUsICRyb3VuZHMJCQlAIHBhc3MgIyBvZiByb3VuZHMKKwltb3YJc3AsIHIxMgorCWFkZAlyMTIsICMweDkwCQkJQCBwYXNzIGtleSBzY2hlZHVsZQorCWJsCV9ic2Flc19rZXlfY29udmVydAorCWFkZAlyNCwgc3AsICMweDkwCisJdmxkbWlhCXI0LCB7QFhNTVs2XX0KKwl2c3RtaWEJcjEyLCAge0BYTU1bMTVdfQkJQCBzYXZlIGxhc3Qgcm91bmQga2V5CisJdmVvcglAWE1NWzddLCBAWE1NWzddLCBAWE1NWzZdCUAgZml4IHVwIHJvdW5kIDAga2V5CisJdnN0bWlhCXI0LCB7QFhNTVs3XX0KKyNlbHNlCisJbGRyCXIxMiwgWyRrZXksICMyNDRdCisJZW9ycwlyMTIsICMxCisJYmVxCTBmCisKKwlzdHIJcjEyLCBbJGtleSwgIzI0NF0KKwltb3YJcjQsICRrZXkJCQlAIHBhc3Mga2V5CisJbW92CXI1LCAkcm91bmRzCQkJQCBwYXNzICMgb2Ygcm91bmRzCisJYWRkCXIxMiwgJGtleSwgIzI0OAkJCUAgcGFzcyBrZXkgc2NoZWR1bGUKKwlibAlfYnNhZXNfa2V5X2NvbnZlcnQKKwlhZGQJcjQsICRrZXksICMyNDgKKwl2bGRtaWEJcjQsIHtAWE1NWzZdfQorCXZzdG1pYQlyMTIsICB7QFhNTVsxNV19CQlAIHNhdmUgbGFzdCByb3VuZCBrZXkKKwl2ZW9yCUBYTU1bN10sIEBYTU1bN10sIEBYTU1bNl0JQCBmaXggdXAgcm91bmQgMCBrZXkKKwl2c3RtaWEJcjQsIHtAWE1NWzddfQorCisuYWxpZ24JMgorMDoJc3ViCXNwLCAjMHg5MAkJCUAgcGxhY2UgZm9yIHR3ZWFrWzldCisjZW5kaWYKKwl2bGQxLjgJe0BYTU1bOF19LCBbcjBdCQkJQCBpbml0aWFsIHR3ZWFrCisJYWRyCSRtYWdpYywgLkx4dHNfbWFnaWMKKworCXRzdAkkbGVuLCAjMHhmCQkJQCBpZiBub3QgbXVsdGlwbGUgb2YgMTYKKwlpdAluZQkJCQlAIFRodW1iMiB0aGluZywgc2FuaXR5IGNoZWNrIGluIEFSTQorCXN1Ym5lCSRsZW4sICMweDEwCQkJQCBzdWJ0cmFjdCBhbm90aGVyIDE2IGJ5dGVzCisJc3VicwkkbGVuLCAjMHg4MAorCisJYmxvCS5MeHRzX2RlY19zaG9ydAorCWIJLkx4dHNfZGVjX2xvb3AKKworLmFsaWduCTQKKy5MeHRzX2RlY19sb29wOgorCXZsZG1pYQkJJG1hZ2ljLCB7JHR3bWFza30JQCBsb2FkIFhUUyBtYWdpYworCXZzaHIuczY0CUBUWzBdLCBAWE1NWzhdLCAjNjMKKwltb3YJCXIwLCBzcAorCXZhbmQJCUBUWzBdLCBAVFswXSwgJHR3bWFzaworX19fCitmb3IoJGk9OTskaTwxNjskaSsrKSB7CiskY29kZS49PDxfX187CisJdmFkZC51NjQJQFhNTVskaV0sIEBYTU1bJGktMV0sIEBYTU1bJGktMV0KKwl2c3QxLjY0CQl7QFhNTVskaS0xXX0sIFtyMCw6MTI4XSEKKwl2c3dwCQlgJkRoaSgiQFRbMF0iKWAsYCZEbG8oIkBUWzBdIilgCisJdnNoci5zNjQJQFRbMV0sIEBYTU1bJGldLCAjNjMKKwl2ZW9yCQlAWE1NWyRpXSwgQFhNTVskaV0sIEBUWzBdCisJdmFuZAkJQFRbMV0sIEBUWzFdLCAkdHdtYXNrCitfX18KKwlAVD1yZXZlcnNlKEBUKTsKKworJGNvZGUuPTw8X19fIGlmICgkaT49MTApOworCXZsZDEuOAkJe0BYTU1bJGktMTBdfSwgWyRpbnBdIQorX19fCiskY29kZS49PDxfX18gaWYgKCRpPj0xMSk7CisJdmVvcgkJQFhNTVskaS0xMV0sIEBYTU1bJGktMTFdLCBAWE1NWyRpLTNdCitfX18KK30KKyRjb2RlLj08PF9fXzsKKwl2YWRkLnU2NAlAWE1NWzhdLCBAWE1NWzE1XSwgQFhNTVsxNV0KKwl2c3QxLjY0CQl7QFhNTVsxNV19LCBbcjAsOjEyOF0hCisJdnN3cAkJYCZEaGkoIkBUWzBdIilgLGAmRGxvKCJAVFswXSIpYAorCXZlb3IJCUBYTU1bOF0sIEBYTU1bOF0sIEBUWzBdCisJdnN0MS42NAkJe0BYTU1bOF19LCBbcjAsOjEyOF0JCUAgbmV4dCByb3VuZCB0d2VhaworCisJdmxkMS44CQl7QFhNTVs2XS1AWE1NWzddfSwgWyRpbnBdIQorCXZlb3IJCUBYTU1bNV0sIEBYTU1bNV0sIEBYTU1bMTNdCisjaWZuZGVmCUJTQUVTX0FTTV9FWFRFTkRFRF9LRVkKKwlhZGQJCXI0LCBzcCwgIzB4OTAJCQlAIHBhc3Mga2V5IHNjaGVkdWxlCisjZWxzZQorCWFkZAkJcjQsICRrZXksICMyNDgJCQlAIHBhc3Mga2V5IHNjaGVkdWxlCisjZW5kaWYKKwl2ZW9yCQlAWE1NWzZdLCBAWE1NWzZdLCBAWE1NWzE0XQorCW1vdgkJcjUsICRyb3VuZHMJCQlAIHBhc3Mgcm91bmRzCisJdmVvcgkJQFhNTVs3XSwgQFhNTVs3XSwgQFhNTVsxNV0KKwltb3YJCXIwLCBzcAorCisJYmwJCV9ic2Flc19kZWNyeXB0OAorCisJdmxkMS42NAkJe0BYTU1bIDhdLUBYTU1bIDldfSwgW3IwLDoxMjhdIQorCXZsZDEuNjQJCXtAWE1NWzEwXS1AWE1NWzExXX0sIFtyMCw6MTI4XSEKKwl2ZW9yCQlAWE1NWzBdLCBAWE1NWzBdLCBAWE1NWyA4XQorCXZsZDEuNjQJCXtAWE1NWzEyXS1AWE1NWzEzXX0sIFtyMCw6MTI4XSEKKwl2ZW9yCQlAWE1NWzFdLCBAWE1NWzFdLCBAWE1NWyA5XQorCXZlb3IJCUBYTU1bOF0sIEBYTU1bNl0sIEBYTU1bMTBdCisJdnN0MS44CQl7QFhNTVswXS1AWE1NWzFdfSwgWyRvdXRdIQorCXZlb3IJCUBYTU1bOV0sIEBYTU1bNF0sIEBYTU1bMTFdCisJdmxkMS42NAkJe0BYTU1bMTRdLUBYTU1bMTVdfSwgW3IwLDoxMjhdIQorCXZlb3IJCUBYTU1bMTBdLCBAWE1NWzJdLCBAWE1NWzEyXQorCXZzdDEuOAkJe0BYTU1bOF0tQFhNTVs5XX0sIFskb3V0XSEKKwl2ZW9yCQlAWE1NWzExXSwgQFhNTVs3XSwgQFhNTVsxM10KKwl2ZW9yCQlAWE1NWzEyXSwgQFhNTVszXSwgQFhNTVsxNF0KKwl2c3QxLjgJCXtAWE1NWzEwXS1AWE1NWzExXX0sIFskb3V0XSEKKwl2ZW9yCQlAWE1NWzEzXSwgQFhNTVs1XSwgQFhNTVsxNV0KKwl2c3QxLjgJCXtAWE1NWzEyXS1AWE1NWzEzXX0sIFskb3V0XSEKKworCXZsZDEuNjQJCXtAWE1NWzhdfSwgW3IwLDoxMjhdCQlAIG5leHQgcm91bmQgdHdlYWsKKworCXN1YnMJCSRsZW4sICMweDgwCisJYnBsCQkuTHh0c19kZWNfbG9vcAorCisuTHh0c19kZWNfc2hvcnQ6CisJYWRkcwkJJGxlbiwgIzB4NzAKKwlibWkJCS5MeHRzX2RlY19kb25lCisKKwl2bGRtaWEJCSRtYWdpYywgeyR0d21hc2t9CUAgbG9hZCBYVFMgbWFnaWMKKwl2c2hyLnM2NAlAVFswXSwgQFhNTVs4XSwgIzYzCisJbW92CQlyMCwgc3AKKwl2YW5kCQlAVFswXSwgQFRbMF0sICR0d21hc2sKK19fXworZm9yKCRpPTk7JGk8MTY7JGkrKykgeworJGNvZGUuPTw8X19fOworCXZhZGQudTY0CUBYTU1bJGldLCBAWE1NWyRpLTFdLCBAWE1NWyRpLTFdCisJdnN0MS42NAkJe0BYTU1bJGktMV19LCBbcjAsOjEyOF0hCisJdnN3cAkJYCZEaGkoIkBUWzBdIilgLGAmRGxvKCJAVFswXSIpYAorCXZzaHIuczY0CUBUWzFdLCBAWE1NWyRpXSwgIzYzCisJdmVvcgkJQFhNTVskaV0sIEBYTU1bJGldLCBAVFswXQorCXZhbmQJCUBUWzFdLCBAVFsxXSwgJHR3bWFzaworX19fCisJQFQ9cmV2ZXJzZShAVCk7CisKKyRjb2RlLj08PF9fXyBpZiAoJGk+PTEwKTsKKwl2bGQxLjgJCXtAWE1NWyRpLTEwXX0sIFskaW5wXSEKKwlzdWJzCQkkbGVuLCAjMHgxMAorCWJtaQkJLkx4dHNfZGVjX2AkaS05YAorX19fCiskY29kZS49PDxfX18gaWYgKCRpPj0xMSk7CisJdmVvcgkJQFhNTVskaS0xMV0sIEBYTU1bJGktMTFdLCBAWE1NWyRpLTNdCitfX18KK30KKyRjb2RlLj08PF9fXzsKKwlzdWIJCSRsZW4sICMweDEwCisJdnN0MS42NAkJe0BYTU1bMTVdfSwgW3IwLDoxMjhdCQlAIG5leHQgcm91bmQgdHdlYWsKKworCXZsZDEuOAkJe0BYTU1bNl19LCBbJGlucF0hCisJdmVvcgkJQFhNTVs1XSwgQFhNTVs1XSwgQFhNTVsxM10KKyNpZm5kZWYJQlNBRVNfQVNNX0VYVEVOREVEX0tFWQorCWFkZAkJcjQsIHNwLCAjMHg5MAkJCUAgcGFzcyBrZXkgc2NoZWR1bGUKKyNlbHNlCisJYWRkCQlyNCwgJGtleSwgIzI0OAkJCUAgcGFzcyBrZXkgc2NoZWR1bGUKKyNlbmRpZgorCXZlb3IJCUBYTU1bNl0sIEBYTU1bNl0sIEBYTU1bMTRdCisJbW92CQlyNSwgJHJvdW5kcwkJCUAgcGFzcyByb3VuZHMKKwltb3YJCXIwLCBzcAorCisJYmwJCV9ic2Flc19kZWNyeXB0OAorCisJdmxkMS42NAkJe0BYTU1bIDhdLUBYTU1bIDldfSwgW3IwLDoxMjhdIQorCXZsZDEuNjQJCXtAWE1NWzEwXS1AWE1NWzExXX0sIFtyMCw6MTI4XSEKKwl2ZW9yCQlAWE1NWzBdLCBAWE1NWzBdLCBAWE1NWyA4XQorCXZsZDEuNjQJCXtAWE1NWzEyXS1AWE1NWzEzXX0sIFtyMCw6MTI4XSEKKwl2ZW9yCQlAWE1NWzFdLCBAWE1NWzFdLCBAWE1NWyA5XQorCXZlb3IJCUBYTU1bOF0sIEBYTU1bNl0sIEBYTU1bMTBdCisJdnN0MS44CQl7QFhNTVswXS1AWE1NWzFdfSwgWyRvdXRdIQorCXZlb3IJCUBYTU1bOV0sIEBYTU1bNF0sIEBYTU1bMTFdCisJdmxkMS42NAkJe0BYTU1bMTRdfSwgW3IwLDoxMjhdIQorCXZlb3IJCUBYTU1bMTBdLCBAWE1NWzJdLCBAWE1NWzEyXQorCXZzdDEuOAkJe0BYTU1bOF0tQFhNTVs5XX0sIFskb3V0XSEKKwl2ZW9yCQlAWE1NWzExXSwgQFhNTVs3XSwgQFhNTVsxM10KKwl2ZW9yCQlAWE1NWzEyXSwgQFhNTVszXSwgQFhNTVsxNF0KKwl2c3QxLjgJCXtAWE1NWzEwXS1AWE1NWzExXX0sIFskb3V0XSEKKwl2c3QxLjgJCXtAWE1NWzEyXX0sIFskb3V0XSEKKworCXZsZDEuNjQJCXtAWE1NWzhdfSwgW3IwLDoxMjhdCQlAIG5leHQgcm91bmQgdHdlYWsKKwliCQkuTHh0c19kZWNfZG9uZQorLmFsaWduCTQKKy5MeHRzX2RlY182OgorCXZzdDEuNjQJCXtAWE1NWzE0XX0sIFtyMCw6MTI4XQkJQCBuZXh0IHJvdW5kIHR3ZWFrCisKKwl2ZW9yCQlAWE1NWzRdLCBAWE1NWzRdLCBAWE1NWzEyXQorI2lmbmRlZglCU0FFU19BU01fRVhURU5ERURfS0VZCisJYWRkCQlyNCwgc3AsICMweDkwCQkJQCBwYXNzIGtleSBzY2hlZHVsZQorI2Vsc2UKKwlhZGQJCXI0LCAka2V5LCAjMjQ4CQkJQCBwYXNzIGtleSBzY2hlZHVsZQorI2VuZGlmCisJdmVvcgkJQFhNTVs1XSwgQFhNTVs1XSwgQFhNTVsxM10KKwltb3YJCXI1LCAkcm91bmRzCQkJQCBwYXNzIHJvdW5kcworCW1vdgkJcjAsIHNwCisKKwlibAkJX2JzYWVzX2RlY3J5cHQ4CisKKwl2bGQxLjY0CQl7QFhNTVsgOF0tQFhNTVsgOV19LCBbcjAsOjEyOF0hCisJdmxkMS42NAkJe0BYTU1bMTBdLUBYTU1bMTFdfSwgW3IwLDoxMjhdIQorCXZlb3IJCUBYTU1bMF0sIEBYTU1bMF0sIEBYTU1bIDhdCisJdmxkMS42NAkJe0BYTU1bMTJdLUBYTU1bMTNdfSwgW3IwLDoxMjhdIQorCXZlb3IJCUBYTU1bMV0sIEBYTU1bMV0sIEBYTU1bIDldCisJdmVvcgkJQFhNTVs4XSwgQFhNTVs2XSwgQFhNTVsxMF0KKwl2c3QxLjgJCXtAWE1NWzBdLUBYTU1bMV19LCBbJG91dF0hCisJdmVvcgkJQFhNTVs5XSwgQFhNTVs0XSwgQFhNTVsxMV0KKwl2ZW9yCQlAWE1NWzEwXSwgQFhNTVsyXSwgQFhNTVsxMl0KKwl2c3QxLjgJCXtAWE1NWzhdLUBYTU1bOV19LCBbJG91dF0hCisJdmVvcgkJQFhNTVsxMV0sIEBYTU1bN10sIEBYTU1bMTNdCisJdnN0MS44CQl7QFhNTVsxMF0tQFhNTVsxMV19LCBbJG91dF0hCisKKwl2bGQxLjY0CQl7QFhNTVs4XX0sIFtyMCw6MTI4XQkJQCBuZXh0IHJvdW5kIHR3ZWFrCisJYgkJLkx4dHNfZGVjX2RvbmUKKy5hbGlnbgk0CisuTHh0c19kZWNfNToKKwl2c3QxLjY0CQl7QFhNTVsxM119LCBbcjAsOjEyOF0JCUAgbmV4dCByb3VuZCB0d2VhaworCisJdmVvcgkJQFhNTVszXSwgQFhNTVszXSwgQFhNTVsxMV0KKyNpZm5kZWYJQlNBRVNfQVNNX0VYVEVOREVEX0tFWQorCWFkZAkJcjQsIHNwLCAjMHg5MAkJCUAgcGFzcyBrZXkgc2NoZWR1bGUKKyNlbHNlCisJYWRkCQlyNCwgJGtleSwgIzI0OAkJCUAgcGFzcyBrZXkgc2NoZWR1bGUKKyNlbmRpZgorCXZlb3IJCUBYTU1bNF0sIEBYTU1bNF0sIEBYTU1bMTJdCisJbW92CQlyNSwgJHJvdW5kcwkJCUAgcGFzcyByb3VuZHMKKwltb3YJCXIwLCBzcAorCisJYmwJCV9ic2Flc19kZWNyeXB0OAorCisJdmxkMS42NAkJe0BYTU1bIDhdLUBYTU1bIDldfSwgW3IwLDoxMjhdIQorCXZsZDEuNjQJCXtAWE1NWzEwXS1AWE1NWzExXX0sIFtyMCw6MTI4XSEKKwl2ZW9yCQlAWE1NWzBdLCBAWE1NWzBdLCBAWE1NWyA4XQorCXZsZDEuNjQJCXtAWE1NWzEyXX0sIFtyMCw6MTI4XSEKKwl2ZW9yCQlAWE1NWzFdLCBAWE1NWzFdLCBAWE1NWyA5XQorCXZlb3IJCUBYTU1bOF0sIEBYTU1bNl0sIEBYTU1bMTBdCisJdnN0MS44CQl7QFhNTVswXS1AWE1NWzFdfSwgWyRvdXRdIQorCXZlb3IJCUBYTU1bOV0sIEBYTU1bNF0sIEBYTU1bMTFdCisJdmVvcgkJQFhNTVsxMF0sIEBYTU1bMl0sIEBYTU1bMTJdCisJdnN0MS44CQl7QFhNTVs4XS1AWE1NWzldfSwgWyRvdXRdIQorCXZzdDEuOAkJe0BYTU1bMTBdfSwgWyRvdXRdIQorCisJdmxkMS42NAkJe0BYTU1bOF19LCBbcjAsOjEyOF0JCUAgbmV4dCByb3VuZCB0d2VhaworCWIJCS5MeHRzX2RlY19kb25lCisuYWxpZ24JNAorLkx4dHNfZGVjXzQ6CisJdnN0MS42NAkJe0BYTU1bMTJdfSwgW3IwLDoxMjhdCQlAIG5leHQgcm91bmQgdHdlYWsKKworCXZlb3IJCUBYTU1bMl0sIEBYTU1bMl0sIEBYTU1bMTBdCisjaWZuZGVmCUJTQUVTX0FTTV9FWFRFTkRFRF9LRVkKKwlhZGQJCXI0LCBzcCwgIzB4OTAJCQlAIHBhc3Mga2V5IHNjaGVkdWxlCisjZWxzZQorCWFkZAkJcjQsICRrZXksICMyNDgJCQlAIHBhc3Mga2V5IHNjaGVkdWxlCisjZW5kaWYKKwl2ZW9yCQlAWE1NWzNdLCBAWE1NWzNdLCBAWE1NWzExXQorCW1vdgkJcjUsICRyb3VuZHMJCQlAIHBhc3Mgcm91bmRzCisJbW92CQlyMCwgc3AKKworCWJsCQlfYnNhZXNfZGVjcnlwdDgKKworCXZsZDEuNjQJCXtAWE1NWyA4XS1AWE1NWyA5XX0sIFtyMCw6MTI4XSEKKwl2bGQxLjY0CQl7QFhNTVsxMF0tQFhNTVsxMV19LCBbcjAsOjEyOF0hCisJdmVvcgkJQFhNTVswXSwgQFhNTVswXSwgQFhNTVsgOF0KKwl2ZW9yCQlAWE1NWzFdLCBAWE1NWzFdLCBAWE1NWyA5XQorCXZlb3IJCUBYTU1bOF0sIEBYTU1bNl0sIEBYTU1bMTBdCisJdnN0MS44CQl7QFhNTVswXS1AWE1NWzFdfSwgWyRvdXRdIQorCXZlb3IJCUBYTU1bOV0sIEBYTU1bNF0sIEBYTU1bMTFdCisJdnN0MS44CQl7QFhNTVs4XS1AWE1NWzldfSwgWyRvdXRdIQorCisJdmxkMS42NAkJe0BYTU1bOF19LCBbcjAsOjEyOF0JCUAgbmV4dCByb3VuZCB0d2VhaworCWIJCS5MeHRzX2RlY19kb25lCisuYWxpZ24JNAorLkx4dHNfZGVjXzM6CisJdnN0MS42NAkJe0BYTU1bMTFdfSwgW3IwLDoxMjhdCQlAIG5leHQgcm91bmQgdHdlYWsKKworCXZlb3IJCUBYTU1bMV0sIEBYTU1bMV0sIEBYTU1bOV0KKyNpZm5kZWYJQlNBRVNfQVNNX0VYVEVOREVEX0tFWQorCWFkZAkJcjQsIHNwLCAjMHg5MAkJCUAgcGFzcyBrZXkgc2NoZWR1bGUKKyNlbHNlCisJYWRkCQlyNCwgJGtleSwgIzI0OAkJCUAgcGFzcyBrZXkgc2NoZWR1bGUKKyNlbmRpZgorCXZlb3IJCUBYTU1bMl0sIEBYTU1bMl0sIEBYTU1bMTBdCisJbW92CQlyNSwgJHJvdW5kcwkJCUAgcGFzcyByb3VuZHMKKwltb3YJCXIwLCBzcAorCisJYmwJCV9ic2Flc19kZWNyeXB0OAorCisJdmxkMS42NAkJe0BYTU1bOF0tQFhNTVs5XX0sIFtyMCw6MTI4XSEKKwl2bGQxLjY0CQl7QFhNTVsxMF19LCBbcjAsOjEyOF0hCisJdmVvcgkJQFhNTVswXSwgQFhNTVswXSwgQFhNTVsgOF0KKwl2ZW9yCQlAWE1NWzFdLCBAWE1NWzFdLCBAWE1NWyA5XQorCXZlb3IJCUBYTU1bOF0sIEBYTU1bNl0sIEBYTU1bMTBdCisJdnN0MS44CQl7QFhNTVswXS1AWE1NWzFdfSwgWyRvdXRdIQorCXZzdDEuOAkJe0BYTU1bOF19LCBbJG91dF0hCisKKwl2bGQxLjY0CQl7QFhNTVs4XX0sIFtyMCw6MTI4XQkJQCBuZXh0IHJvdW5kIHR3ZWFrCisJYgkJLkx4dHNfZGVjX2RvbmUKKy5hbGlnbgk0CisuTHh0c19kZWNfMjoKKwl2c3QxLjY0CQl7QFhNTVsxMF19LCBbcjAsOjEyOF0JCUAgbmV4dCByb3VuZCB0d2VhaworCisJdmVvcgkJQFhNTVswXSwgQFhNTVswXSwgQFhNTVs4XQorI2lmbmRlZglCU0FFU19BU01fRVhURU5ERURfS0VZCisJYWRkCQlyNCwgc3AsICMweDkwCQkJQCBwYXNzIGtleSBzY2hlZHVsZQorI2Vsc2UKKwlhZGQJCXI0LCAka2V5LCAjMjQ4CQkJQCBwYXNzIGtleSBzY2hlZHVsZQorI2VuZGlmCisJdmVvcgkJQFhNTVsxXSwgQFhNTVsxXSwgQFhNTVs5XQorCW1vdgkJcjUsICRyb3VuZHMJCQlAIHBhc3Mgcm91bmRzCisJbW92CQlyMCwgc3AKKworCWJsCQlfYnNhZXNfZGVjcnlwdDgKKworCXZsZDEuNjQJCXtAWE1NWzhdLUBYTU1bOV19LCBbcjAsOjEyOF0hCisJdmVvcgkJQFhNTVswXSwgQFhNTVswXSwgQFhNTVsgOF0KKwl2ZW9yCQlAWE1NWzFdLCBAWE1NWzFdLCBAWE1NWyA5XQorCXZzdDEuOAkJe0BYTU1bMF0tQFhNTVsxXX0sIFskb3V0XSEKKworCXZsZDEuNjQJCXtAWE1NWzhdfSwgW3IwLDoxMjhdCQlAIG5leHQgcm91bmQgdHdlYWsKKwliCQkuTHh0c19kZWNfZG9uZQorLmFsaWduCTQKKy5MeHRzX2RlY18xOgorCW1vdgkJcjAsIHNwCisJdmVvcgkJQFhNTVswXSwgQFhNTVs4XQorCW1vdgkJcjEsIHNwCisJdnN0MS44CQl7QFhNTVswXX0sIFtzcCw6MTI4XQorCW1vdgkJcjIsICRrZXkKKwltb3YJCXI0LCAkZnAJCQkJQCBwcmVzZXJ2ZSBmcAorCW1vdgkJcjUsICRtYWdpYwkJCUAgcHJlc2VydmUgbWFnaWMKKworCWJsCQlBRVNfZGVjcnlwdAorCisJdmxkMS44CQl7QFhNTVswXX0sIFtzcCw6MTI4XQorCXZlb3IJCUBYTU1bMF0sIEBYTU1bMF0sIEBYTU1bOF0KKwl2c3QxLjgJCXtAWE1NWzBdfSwgWyRvdXRdIQorCW1vdgkJJGZwLCByNAorCW1vdgkJJG1hZ2ljLCByNQorCisJdm1vdgkJQFhNTVs4XSwgQFhNTVs5XQkJQCBuZXh0IHJvdW5kIHR3ZWFrCisKKy5MeHRzX2RlY19kb25lOgorI2lmbmRlZglYVFNfQ0hBSU5fVFdFQUsKKwlhZGRzCQkkbGVuLCAjMHgxMAorCWJlcQkJLkx4dHNfZGVjX3JldAorCisJQCBjYWxjdWxhdGUgb25lIHJvdW5kIG9mIGV4dHJhIHR3ZWFrIGZvciB0aGUgc3RvbGVuIGNpcGhlcnRleHQKKwl2bGRtaWEJCSRtYWdpYywgeyR0d21hc2t9CisJdnNoci5zNjQJQFhNTVs2XSwgQFhNTVs4XSwgIzYzCisJdmFuZAkJQFhNTVs2XSwgQFhNTVs2XSwgJHR3bWFzaworCXZhZGQudTY0CUBYTU1bOV0sIEBYTU1bOF0sIEBYTU1bOF0KKwl2c3dwCQlgJkRoaSgiQFhNTVs2XSIpYCxgJkRsbygiQFhNTVs2XSIpYAorCXZlb3IJCUBYTU1bOV0sIEBYTU1bOV0sIEBYTU1bNl0KKworCUAgcGVyZm9ybSB0aGUgZmluYWwgZGVjcnlwdGlvbiB3aXRoIHRoZSBsYXN0IHR3ZWFrIHZhbHVlCisJdmxkMS44CQl7QFhNTVswXX0sIFskaW5wXSEKKwltb3YJCXIwLCBzcAorCXZlb3IJCUBYTU1bMF0sIEBYTU1bMF0sIEBYTU1bOV0KKwltb3YJCXIxLCBzcAorCXZzdDEuOAkJe0BYTU1bMF19LCBbc3AsOjEyOF0KKwltb3YJCXIyLCAka2V5CisJbW92CQlyNCwgJGZwCQkJQCBwcmVzZXJ2ZSBmcAorCisJYmwJCUFFU19kZWNyeXB0CisKKwl2bGQxLjgJCXtAWE1NWzBdfSwgW3NwLDoxMjhdCisJdmVvcgkJQFhNTVswXSwgQFhNTVswXSwgQFhNTVs5XQorCXZzdDEuOAkJe0BYTU1bMF19LCBbJG91dF0KKworCW1vdgkJcjYsICRvdXQKKy5MeHRzX2RlY19zdGVhbDoKKwlsZHJiCQlyMSwgWyRvdXRdCisJbGRyYgkJcjAsIFskaW5wXSwgIzEKKwlzdHJiCQlyMSwgWyRvdXQsICMweDEwXQorCXN0cmIJCXIwLCBbJG91dF0sICMxCisKKwlzdWJzCQkkbGVuLCAjMQorCWJoaQkJLkx4dHNfZGVjX3N0ZWFsCisKKwl2bGQxLjgJCXtAWE1NWzBdfSwgW3I2XQorCW1vdgkJcjAsIHNwCisJdmVvcgkJQFhNTVswXSwgQFhNTVs4XQorCW1vdgkJcjEsIHNwCisJdnN0MS44CQl7QFhNTVswXX0sIFtzcCw6MTI4XQorCW1vdgkJcjIsICRrZXkKKworCWJsCQlBRVNfZGVjcnlwdAorCisJdmxkMS44CQl7QFhNTVswXX0sIFtzcCw6MTI4XQorCXZlb3IJCUBYTU1bMF0sIEBYTU1bMF0sIEBYTU1bOF0KKwl2c3QxLjgJCXtAWE1NWzBdfSwgW3I2XQorCW1vdgkJJGZwLCByNAorI2VuZGlmCisKKy5MeHRzX2RlY19yZXQ6CisJYmljCQlyMCwgJGZwLCAjMHhmCisJdm1vdi5pMzIJcTAsICMwCisJdm1vdi5pMzIJcTEsICMwCisjaWZkZWYJWFRTX0NIQUlOX1RXRUFLCisJbGRyCQlyMSwgWyRmcCwgIzB4MjArVkZQX0FCSV9GUkFNRV0JQCBjaGFpbiB0d2VhaworI2VuZGlmCisuTHh0c19kZWNfYnplcm86CQkJCUAgd2lwZSBrZXkgc2NoZWR1bGUgW2lmIGFueV0KKwl2c3RtaWEJCXNwISwge3EwLXExfQorCWNtcAkJc3AsIHIwCisJYm5lCQkuTHh0c19kZWNfYnplcm8KKworCW1vdgkJc3AsICRmcAorI2lmZGVmCVhUU19DSEFJTl9UV0VBSworCXZzdDEuOAkJe0BYTU1bOF19LCBbcjFdCisjZW5kaWYKKwlWRlBfQUJJX1BPUAorCWxkbWlhCQlzcCEsIHtyNC1yMTAsIHBjfQlAIHJldHVybgorCisuc2l6ZQlic2Flc194dHNfZGVjcnlwdCwuLWJzYWVzX3h0c19kZWNyeXB0CitfX18KK30KKyRjb2RlLj08PF9fXzsKKyNlbmRpZgorX19fCisKKyRjb2RlID1+IHMvXGAoW15cYF0qKVxgL2V2YWwoJDEpL2dlbTsKKworb3BlbiBTRUxGLCQwOword2hpbGUoPFNFTEY+KSB7CisJbmV4dCBpZiAoL14jIS8pOworICAgICAgICBsYXN0IGlmICghcy9eIy9ALyBhbmQgIS9eJC8pOworICAgICAgICBwcmludDsKK30KK2Nsb3NlIFNFTEY7CisKK3ByaW50ICRjb2RlOworCitjbG9zZSBTVERPVVQ7CmRpZmYgLS1naXQgYS9jcnlwdG8vYWVzL2FzbS92cGFlcy14ODZfNjQuUyBiL2NyeXB0by9hZXMvYXNtL3ZwYWVzLXg4Nl82NC5TCmluZGV4IDJiNjhlNjEuLjAxNjI2MzEgMTAwNjQ0Ci0tLSBhL2NyeXB0by9hZXMvYXNtL3ZwYWVzLXg4Nl82NC5TCisrKyBiL2NyeXB0by9hZXMvYXNtL3ZwYWVzLXg4Nl82NC5TCkBAIC04MjMsNiArODIzLDYgQEAKIC5Ma19kc2JvOgogLnF1YWQJMHgxMzg3RUE1MzdFRjk0MDAwLCAweEM3QUE2REI5RDQ5NDNFMkQKIC5xdWFkCTB4MTJENzU2MEY5MzQ0MUQwMCwgMHhDQTRCODE1OUQ4QzU4RTlDCi0uYnl0ZQk4NiwxMDEsOTksMTE2LDExMSwxMTQsMzIsODAsMTAxLDExNCwxMDksMTE3LDExNiw5NywxMDUsMTExLDExMCwzMiw2NSw2OSw4MywzMiwxMDIsMTExLDExNCwzMiwxMjAsNTYsNTQsOTUsNTQsNTIsNDcsODMsODMsODMsNjksNTEsNDQsMzIsNzcsMTA1LDEwNywxMDEsMzIsNzIsOTcsMTA5LDk4LDExNywxMTQsMTAzLDMyLDQwLDgzLDExNiw5NywxMTAsMTAyLDExMSwxMTQsMTAwLDMyLDg1LDExMCwxMDUsMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTYsMTIxLDQxLDAKKy5ieXRlCTg2LDEwMSw5OSwxMTYsMTExLDExNCwzMiw4MCwxMDEsMTE0LDEwOSwxMTcsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiw2NSw2OSw4MywzMiwxMDIsMTExLDExNCwzMiwxMjAsNTYsNTQsOTUsNTQsNTIsNDcsODMsODMsODMsNjksNTEsNDQsMzIsNzcsMTA1LDEwNywxMDEsMzIsNzIsOTcsMTA5LDk4LDExNywxMTQsMTAzLDMyLDQwLDgzLDExNiw5NywxMTAsMTAyLDExMSwxMTQsMTAwLDMyLDg1LDExMCwxMDUsMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTYsMTIxLDQxLDAKIC5hbGlnbgk2NAogLnNpemUJX3ZwYWVzX2NvbnN0cywuLV92cGFlc19jb25zdHMKZGlmZiAtLWdpdCBhL2NyeXB0by9hZXMvYXNtL3ZwYWVzLXg4Nl82NC5wbCBiL2NyeXB0by9hZXMvYXNtL3ZwYWVzLXg4Nl82NC5wbAppbmRleCA0MWYyZTQ2Li5iZDdmNDViIDEwMDY0NAotLS0gYS9jcnlwdG8vYWVzL2FzbS92cGFlcy14ODZfNjQucGwKKysrIGIvY3J5cHRvL2Flcy9hc20vdnBhZXMteDg2XzY0LnBsCkBAIC0xMDYwLDcgKzEwNjAsNyBAQAogLkxrX2RzYm86CSMgZGVjcnlwdGlvbiBzYm94IGZpbmFsIG91dHB1dAogCS5xdWFkCTB4MTM4N0VBNTM3RUY5NDAwMCwgMHhDN0FBNkRCOUQ0OTQzRTJECiAJLnF1YWQJMHgxMkQ3NTYwRjkzNDQxRDAwLCAweENBNEI4MTU5RDhDNThFOUMKLS5hc2NpegkiVmVjdG9yIFBlcm11dGFpb24gQUVTIGZvciB4ODZfNjQvU1NTRTMsIE1pa2UgSGFtYnVyZyAoU3RhbmZvcmQgVW5pdmVyc2l0eSkiCisuYXNjaXoJIlZlY3RvciBQZXJtdXRhdGlvbiBBRVMgZm9yIHg4Nl82NC9TU1NFMywgTWlrZSBIYW1idXJnIChTdGFuZm9yZCBVbml2ZXJzaXR5KSIKIC5hbGlnbgk2NAogLnNpemUJX3ZwYWVzX2NvbnN0cywuLV92cGFlc19jb25zdHMKIF9fXwpkaWZmIC0tZ2l0IGEvY3J5cHRvL2FybTY0Y3B1aWQuUyBiL2NyeXB0by9hcm02NGNwdWlkLlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc3OGFjMQotLS0gL2Rldi9udWxsCisrKyBiL2NyeXB0by9hcm02NGNwdWlkLlMKQEAgLTAsMCArMSw0NiBAQAorI2luY2x1ZGUgImFybV9hcmNoLmgiCisKKy50ZXh0CisuYXJjaAlhcm12OC1hK2NyeXB0bworCisuYWxpZ24JNQorLmdsb2JhbAlfYXJtdjdfbmVvbl9wcm9iZQorLnR5cGUJX2FybXY3X25lb25fcHJvYmUsJWZ1bmN0aW9uCitfYXJtdjdfbmVvbl9wcm9iZToKKwlvcnIJdjE1LjE2YiwgdjE1LjE2YiwgdjE1LjE2YgorCXJldAorLnNpemUJX2FybXY3X25lb25fcHJvYmUsLi1fYXJtdjdfbmVvbl9wcm9iZQorCisuZ2xvYmFsCV9hcm12N190aWNrCisudHlwZQlfYXJtdjdfdGljaywlZnVuY3Rpb24KK19hcm12N190aWNrOgorCW1ycwl4MCwgQ05UVkNUX0VMMAorCXJldAorLnNpemUJX2FybXY3X3RpY2ssLi1fYXJtdjdfdGljaworCisuZ2xvYmFsCV9hcm12OF9hZXNfcHJvYmUKKy50eXBlCV9hcm12OF9hZXNfcHJvYmUsJWZ1bmN0aW9uCitfYXJtdjhfYWVzX3Byb2JlOgorCWFlc2UJdjAuMTZiLCB2MC4xNmIKKwlyZXQKKy5zaXplCV9hcm12OF9hZXNfcHJvYmUsLi1fYXJtdjhfYWVzX3Byb2JlCisKKy5nbG9iYWwJX2FybXY4X3NoYTFfcHJvYmUKKy50eXBlCV9hcm12OF9zaGExX3Byb2JlLCVmdW5jdGlvbgorX2FybXY4X3NoYTFfcHJvYmU6CisJc2hhMWgJczAsIHMwCisJcmV0Cisuc2l6ZQlfYXJtdjhfc2hhMV9wcm9iZSwuLV9hcm12OF9zaGExX3Byb2JlCisKKy5nbG9iYWwJX2FybXY4X3NoYTI1Nl9wcm9iZQorLnR5cGUJX2FybXY4X3NoYTI1Nl9wcm9iZSwlZnVuY3Rpb24KK19hcm12OF9zaGEyNTZfcHJvYmU6CisJc2hhMjU2c3UwCXYwLjRzLCB2MC40cworCXJldAorLnNpemUJX2FybXY4X3NoYTI1Nl9wcm9iZSwuLV9hcm12OF9zaGEyNTZfcHJvYmUKKy5nbG9iYWwJX2FybXY4X3BtdWxsX3Byb2JlCisudHlwZQlfYXJtdjhfcG11bGxfcHJvYmUsJWZ1bmN0aW9uCitfYXJtdjhfcG11bGxfcHJvYmU6CisJcG11bGwJdjAuMXEsIHYwLjFkLCB2MC4xZAorCXJldAorLnNpemUJX2FybXY4X3BtdWxsX3Byb2JlLC4tX2FybXY4X3BtdWxsX3Byb2JlCmRpZmYgLS1naXQgYS9jcnlwdG8vYXJtX2FyY2guaCBiL2NyeXB0by9hcm1fYXJjaC5oCmluZGV4IDVhODMxMDcuLjZmYTg3MjQgMTAwNjQ0Ci0tLSBhL2NyeXB0by9hcm1fYXJjaC5oCisrKyBiL2NyeXB0by9hcm1fYXJjaC5oCkBAIC0xMCwxMyArMTAsMjQgQEAKICMgICBkZWZpbmUgX19BUk1FTF9fCiAjICBlbmRpZgogIyBlbGlmIGRlZmluZWQoX19HTlVDX18pCisjICBpZglkZWZpbmVkKF9fYWFyY2g2NF9fKQorIyAgIGRlZmluZSBfX0FSTV9BUkNIX18gOAorIyAgIGlmIF9fQllURV9PUkRFUl9fPT1fX09SREVSX0JJR19FTkRJQU5fXworIyAgICBkZWZpbmUgX19BUk1FQl9fCisjICAgZWxzZQorIyAgICBkZWZpbmUgX19BUk1FTF9fCisjICAgZW5kaWYKICAgLyoKICAgICogV2h5IGRvZXNuJ3QgZ2NjIGRlZmluZSBfX0FSTV9BUkNIX18/IEluc3RlYWQgaXQgZGVmaW5lcwogICAgKiBidW5jaCBvZiBiZWxvdyBtYWNyb3MuIFNlZSBhbGxfYXJjaGl0ZWN0aXJlc1tdIHRhYmxlIGluCiAgICAqIGdjYy9jb25maWcvYXJtL2FybS5jLiBPbiBhIHNpZGUgbm90ZSBpdCBkZWZpbmVzCiAgICAqIF9fQVJNRUxfXy9fX0FSTUVCX18gZm9yIGxpdHRsZS0vYmlnLWVuZGlhbi4KICAgICovCi0jICBpZglkZWZpbmVkKF9fQVJNX0FSQ0hfN19fKQl8fCBkZWZpbmVkKF9fQVJNX0FSQ0hfN0FfXykJfHwgXAorIyAgZWxpZiBkZWZpbmVkKF9fQVJNX0FSQ0gpCisjICAgZGVmaW5lIF9fQVJNX0FSQ0hfXyBfX0FSTV9BUkNICisjICBlbGlmCWRlZmluZWQoX19BUk1fQVJDSF84QV9fKQorIyAgIGRlZmluZSBfX0FSTV9BUkNIX18gOAorIyAgZWxpZglkZWZpbmVkKF9fQVJNX0FSQ0hfN19fKQl8fCBkZWZpbmVkKF9fQVJNX0FSQ0hfN0FfXykJfHwgXAogCWRlZmluZWQoX19BUk1fQVJDSF83Ul9fKXx8IGRlZmluZWQoX19BUk1fQVJDSF83TV9fKQl8fCBcCiAJZGVmaW5lZChfX0FSTV9BUkNIXzdFTV9fKQogIyAgIGRlZmluZSBfX0FSTV9BUkNIX18gNwpAQCAtNDMsOSArNTQsMTMgQEAKIAogI2lmICFfX0FTU0VNQkxFUl9fCiBleHRlcm4gdW5zaWduZWQgaW50IE9QRU5TU0xfYXJtY2FwX1A7CisjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICNkZWZpbmUgQVJNVjdfTkVPTiAgICAgICgxPDwwKQogI2RlZmluZSBBUk1WN19USUNLICAgICAgKDE8PDEpCi0jZW5kaWYKKyNkZWZpbmUgQVJNVjhfQUVTICAgICAgICgxPDwyKQorI2RlZmluZSBBUk1WOF9TSEExICAgICAgKDE8PDMpCisjZGVmaW5lIEFSTVY4X1NIQTI1NiAgICAoMTw8NCkKKyNkZWZpbmUgQVJNVjhfUE1VTEwgICAgICgxPDw1KQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2NyeXB0by9hcm1jYXAuYyBiL2NyeXB0by9hcm1jYXAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTQ2ZDA3Ci0tLSAvZGV2L251bGwKKysrIGIvY3J5cHRvL2FybWNhcC5jCkBAIC0wLDAgKzEsMTU3IEBACisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzZXRqbXAuaD4KKyNpbmNsdWRlIDxzaWduYWwuaD4KKyNpbmNsdWRlIDxjcnlwdG8uaD4KKworI2luY2x1ZGUgImFybV9hcmNoLmgiCisKK3Vuc2lnbmVkIGludCBPUEVOU1NMX2FybWNhcF9QOworCitzdGF0aWMgc2lnc2V0X3QgYWxsX21hc2tlZDsKKworc3RhdGljIHNpZ2ptcF9idWYgaWxsX2ptcDsKK3N0YXRpYyB2b2lkIGlsbF9oYW5kbGVyIChpbnQgc2lnKSB7IHNpZ2xvbmdqbXAoaWxsX2ptcCxzaWcpOyB9CisKKy8qCisgKiBGb2xsb3dpbmcgc3Vicm91dGluZXMgY291bGQgaGF2ZSBiZWVuIGlubGluZWQsIGJ1dCBpdCdzIG5vdCBhbGwKKyAqIEFSTSBjb21waWxlcnMgc3VwcG9ydCBpbmxpbmUgYXNzZW1ibGVyLi4uCisgKi8KK3ZvaWQgX2FybXY3X25lb25fcHJvYmUodm9pZCk7Cit2b2lkIF9hcm12OF9hZXNfcHJvYmUodm9pZCk7Cit2b2lkIF9hcm12OF9zaGExX3Byb2JlKHZvaWQpOwordm9pZCBfYXJtdjhfc2hhMjU2X3Byb2JlKHZvaWQpOwordm9pZCBfYXJtdjhfcG11bGxfcHJvYmUodm9pZCk7Cit1bnNpZ25lZCBsb25nIF9hcm12N190aWNrKHZvaWQpOworCit1bnNpZ25lZCBsb25nIE9QRU5TU0xfcmR0c2Modm9pZCkKKwl7CisJaWYgKE9QRU5TU0xfYXJtY2FwX1AgJiBBUk1WN19USUNLKQorCQlyZXR1cm4gX2FybXY3X3RpY2soKTsKKwllbHNlCisJCXJldHVybiAwOworCX0KKworLyoKKyAqIFVzZSBhIHdlYWsgcmVmZXJlbmNlIHRvIGdldGF1eHZhbCgpIHNvIHdlIGNhbiB1c2UgaXQgaWYgaXQgaXMgYXZhaWxhYmxlIGJ1dAorICogZG9uJ3QgYnJlYWsgdGhlIGJ1aWxkIGlmIGl0IGlzIG5vdC4KKyAqLworI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fPj0yCit2b2lkIE9QRU5TU0xfY3B1aWRfc2V0dXAodm9pZCkgX19hdHRyaWJ1dGVfXygoY29uc3RydWN0b3IpKTsKK2V4dGVybiB1bnNpZ25lZCBsb25nIGdldGF1eHZhbCh1bnNpZ25lZCBsb25nIHR5cGUpIF9fYXR0cmlidXRlX18oKHdlYWspKTsKKyNlbHNlCitzdGF0aWMgdW5zaWduZWQgbG9uZyAoKmdldGF1eHZhbCkodW5zaWduZWQgbG9uZykgPSBOVUxMOworI2VuZGlmCisKKy8qCisgKiBBUk0gcHV0cyB0aGUgdGhlIGZlYXR1cmUgYml0cyBmb3IgQ3J5cHRvIEV4dGVuc2lvbnMgaW4gQVRfSFdDQVAyLCB3aGVyZWFzCisgKiBBQXJjaDY0IHVzZWQgQVRfSFdDQVAuCisgKi8KKyNpZiBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQgKF9fYXJtKQorIyBkZWZpbmUgSFdDQVAJCQkxNgkvKiBBVF9IV0NBUCAqLworIyBkZWZpbmUgSFdDQVBfTkVPTgkJKDEgPDwgMTIpCisKKyMgZGVmaW5lIEhXQ0FQX0NFCQkyNgkvKiBBVF9IV0NBUDIgKi8KKyMgZGVmaW5lIEhXQ0FQX0NFX0FFUwkJKDEgPDwgMCkKKyMgZGVmaW5lIEhXQ0FQX0NFX1BNVUxMCQkoMSA8PCAxKQorIyBkZWZpbmUgSFdDQVBfQ0VfU0hBMQkJKDEgPDwgMikKKyMgZGVmaW5lIEhXQ0FQX0NFX1NIQTI1NgkoMSA8PCAzKQorI2VsaWYgZGVmaW5lZChfX2FhcmNoNjRfXykKKyMgZGVmaW5lIEhXQ0FQCQkJMTYJLyogQVRfSFdDQVAgKi8KKyMgZGVmaW5lIEhXQ0FQX05FT04JCSgxIDw8IDEpCisKKyMgZGVmaW5lIEhXQ0FQX0NFCQlIV0NBUAorIyBkZWZpbmUgSFdDQVBfQ0VfQUVTCQkoMSA8PCAzKQorIyBkZWZpbmUgSFdDQVBfQ0VfUE1VTEwJCSgxIDw8IDQpCisjIGRlZmluZSBIV0NBUF9DRV9TSEExCQkoMSA8PCA1KQorIyBkZWZpbmUgSFdDQVBfQ0VfU0hBMjU2CSgxIDw8IDYpCisjZW5kaWYKKwordm9pZCBPUEVOU1NMX2NwdWlkX3NldHVwKHZvaWQpCisJeworCWNoYXIgKmU7CisJc3RydWN0IHNpZ2FjdGlvbglpbGxfb2FjdCxpbGxfYWN0OworCXNpZ3NldF90CQlvc2V0OworCXN0YXRpYyBpbnQgdHJpZ2dlcj0wOworCisJaWYgKHRyaWdnZXIpIHJldHVybjsKKwl0cmlnZ2VyPTE7CisgCisJaWYgKChlPWdldGVudigiT1BFTlNTTF9hcm1jYXAiKSkpCisJCXsKKwkJT1BFTlNTTF9hcm1jYXBfUD0odW5zaWduZWQgaW50KXN0cnRvdWwoZSxOVUxMLDApOworCQlyZXR1cm47CisJCX0KKworCXNpZ2ZpbGxzZXQoJmFsbF9tYXNrZWQpOworCXNpZ2RlbHNldCgmYWxsX21hc2tlZCxTSUdJTEwpOworCXNpZ2RlbHNldCgmYWxsX21hc2tlZCxTSUdUUkFQKTsKKwlzaWdkZWxzZXQoJmFsbF9tYXNrZWQsU0lHRlBFKTsKKwlzaWdkZWxzZXQoJmFsbF9tYXNrZWQsU0lHQlVTKTsKKwlzaWdkZWxzZXQoJmFsbF9tYXNrZWQsU0lHU0VHVik7CisKKwlPUEVOU1NMX2FybWNhcF9QID0gMDsKKworCW1lbXNldCgmaWxsX2FjdCwwLHNpemVvZihpbGxfYWN0KSk7CisJaWxsX2FjdC5zYV9oYW5kbGVyID0gaWxsX2hhbmRsZXI7CisJaWxsX2FjdC5zYV9tYXNrICAgID0gYWxsX21hc2tlZDsKKworCXNpZ3Byb2NtYXNrKFNJR19TRVRNQVNLLCZpbGxfYWN0LnNhX21hc2ssJm9zZXQpOworCXNpZ2FjdGlvbihTSUdJTEwsJmlsbF9hY3QsJmlsbF9vYWN0KTsKKworCWlmIChnZXRhdXh2YWwgIT0gTlVMTCkKKwkJeworCQlpZiAoZ2V0YXV4dmFsKEhXQ0FQKSAmIEhXQ0FQX05FT04pCisJCQl7CisJCQl1bnNpZ25lZCBsb25nIGh3Y2FwID0gZ2V0YXV4dmFsKEhXQ0FQX0NFKTsKKworCQkJT1BFTlNTTF9hcm1jYXBfUCB8PSBBUk1WN19ORU9OOworCisJCQlpZiAoaHdjYXAgJiBIV0NBUF9DRV9BRVMpCisJCQkJT1BFTlNTTF9hcm1jYXBfUCB8PSBBUk1WOF9BRVM7CisKKwkJCWlmIChod2NhcCAmIEhXQ0FQX0NFX1BNVUxMKQorCQkJCU9QRU5TU0xfYXJtY2FwX1AgfD0gQVJNVjhfUE1VTEw7CisKKwkJCWlmIChod2NhcCAmIEhXQ0FQX0NFX1NIQTEpCisJCQkJT1BFTlNTTF9hcm1jYXBfUCB8PSBBUk1WOF9TSEExOworCisJCQlpZiAoaHdjYXAgJiBIV0NBUF9DRV9TSEEyNTYpCisJCQkJT1BFTlNTTF9hcm1jYXBfUCB8PSBBUk1WOF9TSEEyNTY7CisJCQl9CisJCX0KKwllbHNlIGlmIChzaWdzZXRqbXAoaWxsX2ptcCwxKSA9PSAwKQorCQl7CisJCV9hcm12N19uZW9uX3Byb2JlKCk7CisJCU9QRU5TU0xfYXJtY2FwX1AgfD0gQVJNVjdfTkVPTjsKKwkJaWYgKHNpZ3NldGptcChpbGxfam1wLDEpID09IDApCisJCQl7CisJCQlfYXJtdjhfcG11bGxfcHJvYmUoKTsKKwkJCU9QRU5TU0xfYXJtY2FwX1AgfD0gQVJNVjhfUE1VTEx8QVJNVjhfQUVTOworCQkJfQorCQllbHNlIGlmIChzaWdzZXRqbXAoaWxsX2ptcCwxKSA9PSAwKQorCQkJeworCQkJX2FybXY4X2Flc19wcm9iZSgpOworCQkJT1BFTlNTTF9hcm1jYXBfUCB8PSBBUk1WOF9BRVM7CisJCQl9CisJCWlmIChzaWdzZXRqbXAoaWxsX2ptcCwxKSA9PSAwKQorCQkJeworCQkJX2FybXY4X3NoYTFfcHJvYmUoKTsKKwkJCU9QRU5TU0xfYXJtY2FwX1AgfD0gQVJNVjhfU0hBMTsKKwkJCX0KKwkJaWYgKHNpZ3NldGptcChpbGxfam1wLDEpID09IDApCisJCQl7CisJCQlfYXJtdjhfc2hhMjU2X3Byb2JlKCk7CisJCQlPUEVOU1NMX2FybWNhcF9QIHw9IEFSTVY4X1NIQTI1NjsKKwkJCX0KKwkJfQorCWlmIChzaWdzZXRqbXAoaWxsX2ptcCwxKSA9PSAwKQorCQl7CisJCV9hcm12N190aWNrKCk7CisJCU9QRU5TU0xfYXJtY2FwX1AgfD0gQVJNVjdfVElDSzsKKwkJfQorCisJc2lnYWN0aW9uIChTSUdJTEwsJmlsbF9vYWN0LE5VTEwpOworCXNpZ3Byb2NtYXNrKFNJR19TRVRNQVNLLCZvc2V0LE5VTEwpOworCX0KZGlmZiAtLWdpdCBhL2NyeXB0by9hcm12NGNwdWlkLlMgYi9jcnlwdG8vYXJtdjRjcHVpZC5TCmluZGV4IDJkNjE4ZGUuLmFkZDExZDQgMTAwNjQ0Ci0tLSBhL2NyeXB0by9hcm12NGNwdWlkLlMKKysrIGIvY3J5cHRvL2FybXY0Y3B1aWQuUwpAQCAtNywxNyArNyw0OSBAQAogLmdsb2JhbAlfYXJtdjdfbmVvbl9wcm9iZQogLnR5cGUJX2FybXY3X25lb25fcHJvYmUsJWZ1bmN0aW9uCiBfYXJtdjdfbmVvbl9wcm9iZToKLQkud29yZAkweGYyNmVlMWZlCUAgdm9ycglxMTUscTE1LHExNQotCS53b3JkCTB4ZTEyZmZmMWUJQCBieAlscgorCS5ieXRlCTB4ZjAsMHgwMSwweDYwLDB4ZjIJQCB2b3JyCXE4LHE4LHE4CisJLmJ5dGUJMHgxZSwweGZmLDB4MmYsMHhlMQlAIGJ4CWxyCiAuc2l6ZQlfYXJtdjdfbmVvbl9wcm9iZSwuLV9hcm12N19uZW9uX3Byb2JlCiAKIC5nbG9iYWwJX2FybXY3X3RpY2sKIC50eXBlCV9hcm12N190aWNrLCVmdW5jdGlvbgogX2FybXY3X3RpY2s6Ci0JbXJjCXAxNSwwLHIwLGM5LGMxMywwCi0JLndvcmQJMHhlMTJmZmYxZQlAIGJ4CWxyCisJbXJyYwlwMTUsMSxyMCxyMSxjMTQJCUAgQ05UVkNUCisjaWYgX19BUk1fQVJDSF9fPj01CisJYngJbHIKKyNlbHNlCisJLndvcmQJMHhlMTJmZmYxZQkJQCBieAlscgorI2VuZGlmCiAuc2l6ZQlfYXJtdjdfdGljaywuLV9hcm12N190aWNrCiAKKy5nbG9iYWwJX2FybXY4X2Flc19wcm9iZQorLnR5cGUJX2FybXY4X2Flc19wcm9iZSwlZnVuY3Rpb24KK19hcm12OF9hZXNfcHJvYmU6CisJLmJ5dGUJMHgwMCwweDAzLDB4YjAsMHhmMwlAIGFlc2UuOAlxMCxxMAorCS5ieXRlCTB4MWUsMHhmZiwweDJmLDB4ZTEJQCBieAlscgorLnNpemUJX2FybXY4X2Flc19wcm9iZSwuLV9hcm12OF9hZXNfcHJvYmUKKworLmdsb2JhbAlfYXJtdjhfc2hhMV9wcm9iZQorLnR5cGUJX2FybXY4X3NoYTFfcHJvYmUsJWZ1bmN0aW9uCitfYXJtdjhfc2hhMV9wcm9iZToKKwkuYnl0ZQkweDQwLDB4MGMsMHgwMCwweGYyCUAgc2hhMWMuMzIJcTAscTAscTAKKwkuYnl0ZQkweDFlLDB4ZmYsMHgyZiwweGUxCUAgYngJbHIKKy5zaXplCV9hcm12OF9zaGExX3Byb2JlLC4tX2FybXY4X3NoYTFfcHJvYmUKKworLmdsb2JhbAlfYXJtdjhfc2hhMjU2X3Byb2JlCisudHlwZQlfYXJtdjhfc2hhMjU2X3Byb2JlLCVmdW5jdGlvbgorX2FybXY4X3NoYTI1Nl9wcm9iZToKKwkuYnl0ZQkweDQwLDB4MGMsMHgwMCwweGYzCUAgc2hhMjU2aC4zMglxMCxxMCxxMAorCS5ieXRlCTB4MWUsMHhmZiwweDJmLDB4ZTEJQCBieCBscgorLnNpemUJX2FybXY4X3NoYTI1Nl9wcm9iZSwuLV9hcm12OF9zaGEyNTZfcHJvYmUKKy5nbG9iYWwJX2FybXY4X3BtdWxsX3Byb2JlCisudHlwZQlfYXJtdjhfcG11bGxfcHJvYmUsJWZ1bmN0aW9uCitfYXJtdjhfcG11bGxfcHJvYmU6CisJLmJ5dGUJMHgwMCwweDBlLDB4YTAsMHhmMglAIHZtdWxsLnA2NAlxMCxkMCxkMAorCS5ieXRlCTB4MWUsMHhmZiwweDJmLDB4ZTEJQCBieAlscgorLnNpemUJX2FybXY4X3BtdWxsX3Byb2JlLC4tX2FybXY4X3BtdWxsX3Byb2JlCisKKy5hbGlnbgk1CiAuZ2xvYmFsCU9QRU5TU0xfYXRvbWljX2FkZAogLnR5cGUJT1BFTlNTTF9hdG9taWNfYWRkLCVmdW5jdGlvbgogT1BFTlNTTF9hdG9taWNfYWRkOgpAQCAtMjgsNyArNjAsNyBAQAogCWNtcAlyMiwjMAogCWJuZQkuTGFkZAogCW1vdglyMCxyMwotCS53b3JkCTB4ZTEyZmZmMWUJQCBieAlscgorCWJ4CWxyCiAjZWxzZQogCXN0bWRiCXNwISx7cjQtcjYsbHJ9CiAJbGRyCXIyLC5Mc3BpbmxvY2sKQEAgLTgxLDkgKzExMywxMyBAQAogCWFkZHMJcjEscjEsIzQKIAlibmUJLkxpdHRsZQogLkxjbGVhbnNlX2RvbmU6CisjaWYgX19BUk1fQVJDSF9fPj01CisJYngJbHIKKyNlbHNlCiAJdHN0CWxyLCMxCiAJbW92ZXEJcGMsbHIKIAkud29yZAkweGUxMmZmZjFlCUAgYngJbHIKKyNlbmRpZgogLnNpemUJT1BFTlNTTF9jbGVhbnNlLC4tT1BFTlNTTF9jbGVhbnNlCiAKIC5nbG9iYWwJT1BFTlNTTF93aXBlX2NwdQpAQCAtOTcsNDEgKzEzMyw1MyBAQAogCWVvcglpcCxpcCxpcAogCXRzdAlyMCwjMQogCWJlcQkuTHdpcGVfZG9uZQotCS53b3JkCTB4ZjMwMDAxNTAJQCB2ZW9yICAgIHEwLCBxMCwgcTAKLQkud29yZAkweGYzMDIyMTUyCUAgdmVvciAgICBxMSwgcTEsIHExCi0JLndvcmQJMHhmMzA0NDE1NAlAIHZlb3IgICAgcTIsIHEyLCBxMgotCS53b3JkCTB4ZjMwNjYxNTYJQCB2ZW9yICAgIHEzLCBxMywgcTMKLQkud29yZAkweGYzNDAwMWYwCUAgdmVvciAgICBxOCwgcTgsIHE4Ci0JLndvcmQJMHhmMzQyMjFmMglAIHZlb3IgICAgcTksIHE5LCBxOQotCS53b3JkCTB4ZjM0NDQxZjQJQCB2ZW9yICAgIHExMCwgcTEwLCBxMTAKLQkud29yZAkweGYzNDY2MWY2CUAgdmVvciAgICBxMTEsIHExMSwgcTExCi0JLndvcmQJMHhmMzQ4ODFmOAlAIHZlb3IgICAgcTEyLCBxMTIsIHExMgotCS53b3JkCTB4ZjM0YWExZmEJQCB2ZW9yICAgIHExMywgcTEzLCBxMTMKLQkud29yZAkweGYzNGNjMWZjCUAgdmVvciAgICBxMTQsIHExNCwgcTE0Ci0JLndvcmQJMHhmMzRlZTFmZQlAIHZlb3IgICAgcTE1LCBxMTUsIHExNQorCS5ieXRlCTB4NTAsMHgwMSwweDAwLDB4ZjMJQCB2ZW9yCXEwLCBxMCwgcTAKKwkuYnl0ZQkweDUyLDB4MjEsMHgwMiwweGYzCUAgdmVvcglxMSwgcTEsIHExCisJLmJ5dGUJMHg1NCwweDQxLDB4MDQsMHhmMwlAIHZlb3IJcTIsIHEyLCBxMgorCS5ieXRlCTB4NTYsMHg2MSwweDA2LDB4ZjMJQCB2ZW9yCXEzLCBxMywgcTMKKwkuYnl0ZQkweGYwLDB4MDEsMHg0MCwweGYzCUAgdmVvcglxOCwgcTgsIHE4CisJLmJ5dGUJMHhmMiwweDIxLDB4NDIsMHhmMwlAIHZlb3IJcTksIHE5LCBxOQorCS5ieXRlCTB4ZjQsMHg0MSwweDQ0LDB4ZjMJQCB2ZW9yCXExMCwgcTEwLCBxMTAKKwkuYnl0ZQkweGY2LDB4NjEsMHg0NiwweGYzCUAgdmVvcglxMTEsIHExMSwgcTExCisJLmJ5dGUJMHhmOCwweDgxLDB4NDgsMHhmMwlAIHZlb3IJcTEyLCBxMTIsIHExMgorCS5ieXRlCTB4ZmEsMHhhMSwweDRhLDB4ZjMJQCB2ZW9yCXExMywgcTEzLCBxMTMKKwkuYnl0ZQkweGZjLDB4YzEsMHg0YywweGYzCUAgdmVvcglxMTQsIHExNCwgcTE0CisJLmJ5dGUJMHhmZSwweGUxLDB4NGUsMHhmMwlAIHZlb3IJcTE0LCBxMTQsIHExNAogLkx3aXBlX2RvbmU6CiAJbW92CXIwLHNwCisjaWYgX19BUk1fQVJDSF9fPj01CisJYngJbHIKKyNlbHNlCiAJdHN0CWxyLCMxCiAJbW92ZXEJcGMsbHIKIAkud29yZAkweGUxMmZmZjFlCUAgYngJbHIKKyNlbmRpZgogLnNpemUJT1BFTlNTTF93aXBlX2NwdSwuLU9QRU5TU0xfd2lwZV9jcHUKIAogLmdsb2JhbAlPUEVOU1NMX2luc3RydW1lbnRfYnVzCiAudHlwZQlPUEVOU1NMX2luc3RydW1lbnRfYnVzLCVmdW5jdGlvbgogT1BFTlNTTF9pbnN0cnVtZW50X2J1czoKIAllb3IJcjAscjAscjAKKyNpZiBfX0FSTV9BUkNIX18+PTUKKwlieAlscgorI2Vsc2UKIAl0c3QJbHIsIzEKIAltb3ZlcQlwYyxscgogCS53b3JkCTB4ZTEyZmZmMWUJQCBieAlscgorI2VuZGlmCiAuc2l6ZQlPUEVOU1NMX2luc3RydW1lbnRfYnVzLC4tT1BFTlNTTF9pbnN0cnVtZW50X2J1cwogCiAuZ2xvYmFsCU9QRU5TU0xfaW5zdHJ1bWVudF9idXMyCiAudHlwZQlPUEVOU1NMX2luc3RydW1lbnRfYnVzMiwlZnVuY3Rpb24KIE9QRU5TU0xfaW5zdHJ1bWVudF9idXMyOgogCWVvcglyMCxyMCxyMAorI2lmIF9fQVJNX0FSQ0hfXz49NQorCWJ4CWxyCisjZWxzZQogCXRzdAlsciwjMQogCW1vdmVxCXBjLGxyCiAJLndvcmQJMHhlMTJmZmYxZQlAIGJ4CWxyCisjZW5kaWYKIC5zaXplCU9QRU5TU0xfaW5zdHJ1bWVudF9idXMyLC4tT1BFTlNTTF9pbnN0cnVtZW50X2J1czIKIAogLmFsaWduCTUKZGlmZiAtLWdpdCBhL2NyeXB0by9hc24xL2Ffc3RybmlkLmMgYi9jcnlwdG8vYXNuMS9hX3N0cm5pZC5jCmluZGV4IDJmYzQ4YzEuLjJhZmQ1YTQgMTAwNjQ0Ci0tLSBhL2NyeXB0by9hc24xL2Ffc3RybmlkLmMKKysrIGIvY3J5cHRvL2FzbjEvYV9zdHJuaWQuYwpAQCAtNzQsNyArNzQsNyBAQAogICogY2VydGFpbiBzb2Z0d2FyZSAoZS5nLiBOZXRzY2FwZSkgaGFzIHByb2JsZW1zIHdpdGggdGhlbS4KICAqLwogCi1zdGF0aWMgdW5zaWduZWQgbG9uZyBnbG9iYWxfbWFzayA9IDB4RkZGRkZGRkZMOworc3RhdGljIHVuc2lnbmVkIGxvbmcgZ2xvYmFsX21hc2sgPSBCX0FTTjFfVVRGOFNUUklORzsKIAogdm9pZCBBU04xX1NUUklOR19zZXRfZGVmYXVsdF9tYXNrKHVuc2lnbmVkIGxvbmcgbWFzaykKIHsKZGlmZiAtLWdpdCBhL2NyeXB0by9hc24xL2FzbjFfZXJyLmMgYi9jcnlwdG8vYXNuMS9hc24xX2Vyci5jCmluZGV4IDFhMzBiZjEuLmFhNjAyMDMgMTAwNjQ0Ci0tLSBhL2NyeXB0by9hc24xL2FzbjFfZXJyLmMKKysrIGIvY3J5cHRvL2FzbjEvYXNuMV9lcnIuYwpAQCAtMzA1LDcgKzMwNSw3IEBACiB7RVJSX1JFQVNPTihBU04xX1JfVU5LTk9XTl9QVUJMSUNfS0VZX1RZUEUpLCJ1bmtub3duIHB1YmxpYyBrZXkgdHlwZSJ9LAoge0VSUl9SRUFTT04oQVNOMV9SX1VOS05PV05fU0lHTkFUVVJFX0FMR09SSVRITSksInVua25vd24gc2lnbmF0dXJlIGFsZ29yaXRobSJ9LAoge0VSUl9SRUFTT04oQVNOMV9SX1VOS05PV05fVEFHKSAgICAgICAgICAsInVua25vd24gdGFnIn0sCi17RVJSX1JFQVNPTihBU04xX1JfVU5LT1dOX0ZPUk1BVCkgICAgICAgICwidW5rb3duIGZvcm1hdCJ9LAore0VSUl9SRUFTT04oQVNOMV9SX1VOS09XTl9GT1JNQVQpICAgICAgICAsInVua25vd24gZm9ybWF0In0sCiB7RVJSX1JFQVNPTihBU04xX1JfVU5TVVBQT1JURURfQU5ZX0RFRklORURfQllfVFlQRSksInVuc3VwcG9ydGVkIGFueSBkZWZpbmVkIGJ5IHR5cGUifSwKIHtFUlJfUkVBU09OKEFTTjFfUl9VTlNVUFBPUlRFRF9DSVBIRVIpICAgLCJ1bnN1cHBvcnRlZCBjaXBoZXIifSwKIHtFUlJfUkVBU09OKEFTTjFfUl9VTlNVUFBPUlRFRF9FTkNSWVBUSU9OX0FMR09SSVRITSksInVuc3VwcG9ydGVkIGVuY3J5cHRpb24gYWxnb3JpdGhtIn0sCmRpZmYgLS1naXQgYS9jcnlwdG8vYmlvL2Jpby5oIGIvY3J5cHRvL2Jpby9iaW8uaAppbmRleCAwNTY5OWFiLi5kMDVmYTIyIDEwMDY0NAotLS0gYS9jcnlwdG8vYmlvL2Jpby5oCisrKyBiL2NyeXB0by9iaW8vYmlvLmgKQEAgLTI2Niw2ICsyNjYsOSBAQAogI2RlZmluZSBCSU9fUlJfQ09OTkVDVAkJCTB4MDIKIC8qIFJldHVybmVkIGZyb20gdGhlIGFjY2VwdCBCSU8gd2hlbiBhbiBhY2NlcHQgd291bGQgaGF2ZSBibG9ja2VkICovCiAjZGVmaW5lIEJJT19SUl9BQ0NFUFQJCQkweDAzCisvKiBSZXR1cm5lZCBmcm9tIHRoZSBTU0wgYmlvIHdoZW4gdGhlIGNoYW5uZWwgaWQgcmV0cmlldmFsIGNvZGUgY2Fubm90IGZpbmQgdGhlCisgKiBwcml2YXRlIGtleS4gKi8KKyNkZWZpbmUgQklPX1JSX1NTTF9DSEFOTkVMX0lEX0xPT0tVUAkweDA0CiAKIC8qIFRoZXNlIGFyZSBwYXNzZWQgYnkgdGhlIEJJTyBjYWxsYmFjayAqLwogI2RlZmluZSBCSU9fQ0JfRlJFRQkweDAxCmRpZmYgLS1naXQgYS9jcnlwdG8vYmlvL2Jzc19kZ3JhbS5jIGIvY3J5cHRvL2Jpby9ic3NfZGdyYW0uYwppbmRleCA1NGMwMTJjLi5kOTk2N2U3IDEwMDY0NAotLS0gYS9jcnlwdG8vYmlvL2Jzc19kZ3JhbS5jCisrKyBiL2NyeXB0by9iaW8vYnNzX2RncmFtLmMKQEAgLTEzMzMsNyArMTMzMyw3IEBACiAJYmlvX2RncmFtX3NjdHBfZGF0YSAqZGF0YSA9IE5VTEw7CiAJc29ja2xlbl90IHNvY2tvcHRfbGVuID0gMDsKIAlzdHJ1Y3Qgc2N0cF9hdXRoa2V5aWQgYXV0aGtleWlkOwotCXN0cnVjdCBzY3RwX2F1dGhrZXkgKmF1dGhrZXk7CisJc3RydWN0IHNjdHBfYXV0aGtleSAqYXV0aGtleSA9IE5VTEw7CiAKIAlkYXRhID0gKGJpb19kZ3JhbV9zY3RwX2RhdGEgKiliLT5wdHI7CiAKQEAgLTEzODgsNiArMTM4OCwxMSBAQAogCQkvKiBBZGQgbmV3IGtleSAqLwogCQlzb2Nrb3B0X2xlbiA9IHNpemVvZihzdHJ1Y3Qgc2N0cF9hdXRoa2V5KSArIDY0ICogc2l6ZW9mKHVpbnQ4X3QpOwogCQlhdXRoa2V5ID0gT1BFTlNTTF9tYWxsb2Moc29ja29wdF9sZW4pOworCQlpZiAoYXV0aGtleSA9PSBOVUxMKQorCQkJeworCQkJcmV0ID0gLTE7CisJCQlicmVhazsKKwkJCX0KIAkJbWVtc2V0KGF1dGhrZXksIDB4MDAsIHNvY2tvcHRfbGVuKTsKIAkJYXV0aGtleS0+c2NhX2tleW51bWJlciA9IGF1dGhrZXlpZC5zY2FjdF9rZXludW1iZXIgKyAxOwogI2lmbmRlZiBfX0ZyZWVCU0RfXwpAQCAtMTM5OSw2ICsxNDA0LDggQEAKIAkJbWVtY3B5KCZhdXRoa2V5LT5zY2Ffa2V5WzBdLCBwdHIsIDY0ICogc2l6ZW9mKHVpbnQ4X3QpKTsKIAogCQlyZXQgPSBzZXRzb2Nrb3B0KGItPm51bSwgSVBQUk9UT19TQ1RQLCBTQ1RQX0FVVEhfS0VZLCBhdXRoa2V5LCBzb2Nrb3B0X2xlbik7CisJCU9QRU5TU0xfZnJlZShhdXRoa2V5KTsKKwkJYXV0aGtleSA9IE5VTEw7CiAJCWlmIChyZXQgPCAwKSBicmVhazsKIAogCQkvKiBSZXNldCBhY3RpdmUga2V5ICovCmRpZmYgLS1naXQgYS9jcnlwdG8vYmlvL2Jzc19sb2cuYyBiL2NyeXB0by9iaW8vYnNzX2xvZy5jCmluZGV4IGI3ZGNlNWMuLjIyMjdiMmIgMTAwNjQ0Ci0tLSBhL2NyeXB0by9iaW8vYnNzX2xvZy5jCisrKyBiL2NyeXB0by9iaW8vYnNzX2xvZy5jCkBAIC0yNDUsNyArMjQ1LDcgQEAKIAogc3RhdGljIHZvaWQgeG9wZW5sb2coQklPKiBicCwgY2hhciogbmFtZSwgaW50IGxldmVsKQogewotCWlmIChHZXRWZXJzaW9uKCkgPCAweDgwMDAwMDAwKQorCWlmIChjaGVja193aW5udCgpKQogCQlicC0+cHRyID0gUmVnaXN0ZXJFdmVudFNvdXJjZUEoTlVMTCxuYW1lKTsKIAllbHNlCiAJCWJwLT5wdHIgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvY3J5cHRvL2JuL2FzbS9hcm12NC1nZjJtLlMgYi9jcnlwdG8vYm4vYXNtL2FybXY0LWdmMm0uUwppbmRleCAwMzhmMDg2Li4wZmEyNWIyIDEwMDY0NAotLS0gYS9jcnlwdG8vYm4vYXNtL2FybXY0LWdmMm0uUworKysgYi9jcnlwdG8vYm4vYXNtL2FybXY0LWdmMm0uUwpAQCAtNSwzMSArNSw2IEBACiAKICNpZiBfX0FSTV9BUkNIX18+PTcKIC5mcHUJbmVvbgotCi0udHlwZQltdWxfMXgxX25lb24sJWZ1bmN0aW9uCi0uYWxpZ24JNQotbXVsXzF4MV9uZW9uOgotCXZzaGwudTY0CWQyLGQxNiwjOAlAIHExLXEzIGFyZSBzbGlkZWQgCi0Jdm11bGwucDgJcTAsZDE2LGQxNwlAIGHCt2JiCi0JdnNobC51NjQJZDQsZDE2LCMxNgotCXZtdWxsLnA4CXExLGQyLGQxNwlAIGE8PDjCt2JiCi0JdnNobC51NjQJZDYsZDE2LCMyNAotCXZtdWxsLnA4CXEyLGQ0LGQxNwlAIGE8PDE2wrdiYgotCXZzaHIudTY0CWQyLCM4Ci0Jdm11bGwucDgJcTMsZDYsZDE3CUAgYTw8MjTCt2JiCi0JdnNobC51NjQJZDMsIzI0Ci0JdmVvcgkJZDAsZDIKLQl2c2hyLnU2NAlkNCwjMTYKLQl2ZW9yCQlkMCxkMwotCXZzaGwudTY0CWQ1LCMxNgotCXZlb3IJCWQwLGQ0Ci0JdnNoci51NjQJZDYsIzI0Ci0JdmVvcgkJZDAsZDUKLQl2c2hsLnU2NAlkNywjOAotCXZlb3IJCWQwLGQ2Ci0JdmVvcgkJZDAsZDcKLQkud29yZAkweGUxMmZmZjFlCi0uc2l6ZQltdWxfMXgxX25lb24sLi1tdWxfMXgxX25lb24KICNlbmRpZgogLnR5cGUJbXVsXzF4MV9pYWx1LCVmdW5jdGlvbgogLmFsaWduCTUKQEAgLTEyMCw0MCArOTUsNTMgQEAKIAl0c3QJcjEyLCMxCiAJYmVxCS5MaWFsdQogCi0JdmVvcglkMTgsZDE4Ci0Jdm1vdi4zMglkMTkscjMscjMJCUAgdHdvIGNvcGllcyBvZiBiMQotCXZtb3YuMzIJZDE4WzBdLHIxCQlAIGExCisJbGRyCQlyMTIsIFtzcF0JCUAgNXRoIGFyZ3VtZW50CisJdm1vdi4zMgkJZDI2LCByMiwgcjEKKwl2bW92LjMyCQlkMjcsIHIxMiwgcjMKKwl2bW92Lmk2NAlkMjgsICMweDAwMDBmZmZmZmZmZmZmZmYKKwl2bW92Lmk2NAlkMjksICMweDAwMDAwMDAwZmZmZmZmZmYKKwl2bW92Lmk2NAlkMzAsICMweDAwMDAwMDAwMDAwMGZmZmYKIAotCXZlb3IJZDIwLGQyMAotCXZsZDEuMzIJZDIxW10sW3NwLDozMl0JQCB0d28gY29waWVzIG9mIGIwCi0Jdm1vdi4zMglkMjBbMF0scjIJCUAgYTAKLQltb3YJcjEyLGxyCisJdmV4dC44CQlkMiwgZDI2LCBkMjYsICMxCUAgQTEKKwl2bXVsbC5wOAlxMSwgZDIsIGQyNwkJQCBGID0gQTEqQgorCXZleHQuOAkJZDAsIGQyNywgZDI3LCAjMQlAIEIxCisJdm11bGwucDgJcTAsIGQyNiwgZDAJCUAgRSA9IEEqQjEKKwl2ZXh0LjgJCWQ0LCBkMjYsIGQyNiwgIzIJQCBBMgorCXZtdWxsLnA4CXEyLCBkNCwgZDI3CQlAIEggPSBBMipCCisJdmV4dC44CQlkMTYsIGQyNywgZDI3LCAjMglAIEIyCisJdm11bGwucDgJcTgsIGQyNiwgZDE2CQlAIEcgPSBBKkIyCisJdmV4dC44CQlkNiwgZDI2LCBkMjYsICMzCUAgQTMKKwl2ZW9yCQlxMSwgcTEsIHEwCQlAIEwgPSBFICsgRgorCXZtdWxsLnA4CXEzLCBkNiwgZDI3CQlAIEogPSBBMypCCisJdmV4dC44CQlkMCwgZDI3LCBkMjcsICMzCUAgQjMKKwl2ZW9yCQlxMiwgcTIsIHE4CQlAIE0gPSBHICsgSAorCXZtdWxsLnA4CXEwLCBkMjYsIGQwCQlAIEkgPSBBKkIzCisJdmVvcgkJZDIsIGQyLCBkMwlAIHQwID0gKEwpIChQMCArIFAxKSA8PCA4CisJdmFuZAkJZDMsIGQzLCBkMjgKKwl2ZXh0LjgJCWQxNiwgZDI3LCBkMjcsICM0CUAgQjQKKwl2ZW9yCQlkNCwgZDQsIGQ1CUAgdDEgPSAoTSkgKFAyICsgUDMpIDw8IDE2CisJdmFuZAkJZDUsIGQ1LCBkMjkKKwl2bXVsbC5wOAlxOCwgZDI2LCBkMTYJCUAgSyA9IEEqQjQKKwl2ZW9yCQlxMywgcTMsIHEwCQlAIE4gPSBJICsgSgorCXZlb3IJCWQyLCBkMiwgZDMKKwl2ZW9yCQlkNCwgZDQsIGQ1CisJdmVvcgkJZDYsIGQ2LCBkNwlAIHQyID0gKE4pIChQNCArIFA1KSA8PCAyNAorCXZhbmQJCWQ3LCBkNywgZDMwCisJdmV4dC44CQlxMSwgcTEsIHExLCAjMTUKKwl2ZW9yCQlkMTYsIGQxNiwgZDE3CUAgdDMgPSAoSykgKFA2ICsgUDcpIDw8IDMyCisJdm1vdi5pNjQJZDE3LCAjMAorCXZleHQuOAkJcTIsIHEyLCBxMiwgIzE0CisJdmVvcgkJZDYsIGQ2LCBkNworCXZtdWxsLnA4CXEwLCBkMjYsIGQyNwkJQCBEID0gQSpCCisJdmV4dC44CQlxOCwgcTgsIHE4LCAjMTIKKwl2ZXh0LjgJCXEzLCBxMywgcTMsICMxMworCXZlb3IJCXExLCBxMSwgcTIKKwl2ZW9yCQlxMywgcTMsIHE4CisJdmVvcgkJcTAsIHEwLCBxMQorCXZlb3IJCXEwLCBxMCwgcTMKIAotCXZtb3YJZDE2LGQxOAotCXZtb3YJZDE3LGQxOQotCWJsCW11bF8xeDFfbmVvbgkJQCBhMcK3YjEKLQl2bW92CWQyMixkMAotCi0Jdm1vdglkMTYsZDIwCi0Jdm1vdglkMTcsZDIxCi0JYmwJbXVsXzF4MV9uZW9uCQlAIGEwwrdiMAotCXZtb3YJZDIzLGQwCi0KLQl2ZW9yCWQxNixkMjAsZDE4Ci0JdmVvcglkMTcsZDIxLGQxOQotCXZlb3IJZDIwLGQyMyxkMjIKLQlibAltdWxfMXgxX25lb24JCUAgKGEwK2ExKcK3KGIwK2IxKQotCi0JdmVvcglkMCxkMjAJCQlAIChhMCthMSnCtyhiMCtiMSktYTDCt2IwLWExwrdiMQotCXZzaGwudTY0IGQxLGQwLCMzMgotCXZzaHIudTY0IGQwLGQwLCMzMgotCXZlb3IJZDIzLGQxCi0JdmVvcglkMjIsZDAKLQl2c3QxLjMyCXtkMjNbMF19LFtyMCw6MzJdIQotCXZzdDEuMzIJe2QyM1sxXX0sW3IwLDozMl0hCi0JdnN0MS4zMgl7ZDIyWzBdfSxbcjAsOjMyXSEKLQl2c3QxLjMyCXtkMjJbMV19LFtyMCw6MzJdCi0JYngJcjEyCisJdnN0MS4zMgkJe3EwfSwgW3IwXQorCWJ4CWxyCQlAIGJ4IGxyCiAuYWxpZ24JNAogLkxpYWx1OgogI2VuZGlmCmRpZmYgLS1naXQgYS9jcnlwdG8vYm4vYXNtL2FybXY0LWdmMm0ucGwgYi9jcnlwdG8vYm4vYXNtL2FybXY0LWdmMm0ucGwKaW5kZXggMjJhZDFmOC4uM2YxZjRmNiAxMDA2NDQKLS0tIGEvY3J5cHRvL2JuL2FzbS9hcm12NC1nZjJtLnBsCisrKyBiL2NyeXB0by9ibi9hc20vYXJtdjQtZ2YybS5wbApAQCAtMjAsMTQgKzIwLDIxIEBACiAjIGxlbmd0aCwgbW9yZSBmb3IgbG9uZ2VyIGtleXMuIEV2ZW4gdGhvdWdoIE5FT04gMXgxIG11bHRpcGxpY2F0aW9uCiAjIHJ1bnMgaW4gZXZlbiBsZXNzIGN5Y2xlcywgfjMwLCBpbXByb3ZlbWVudCBpcyBtZWFzdXJhYmxlIG9ubHkgb24KICMgbG9uZ2VyIGtleXMuIE9uZSBoYXMgdG8gb3B0aW1pemUgY29kZSBlbHNld2hlcmUgdG8gZ2V0IE5FT04gZ2xvdy4uLgorIworIyBBcHJpbCAyMDE0CisjCisjIERvdWJsZSBibl9HRjJtX211bF8yeDIgcGVyZm9ybWFuY2UgYnkgdXNpbmcgYWxnb3JpdGhtIGZyb20gcGFwZXIKKyMgcmVmZXJyZWQgYmVsb3csIHdoaWNoIGltcHJvdmVzIEVDREggYW5kIEVDRFNBIHZlcmlmeSBiZW5jaG1hcmtzCisjIGJ5IDE4LTQwJS4KKyMKKyMgQ8OibWFyYSwgRC47IEdvdXbDqmEsIEMuIFAuIEwuOyBMw7NwZXosIEouICYgRGFoYWIsIFIuOiBGYXN0IFNvZnR3YXJlCisjIFBvbHlub21pYWwgTXVsdGlwbGljYXRpb24gb24gQVJNIFByb2Nlc3NvcnMgdXNpbmcgdGhlIE5FT04gRW5naW5lLgorIyAKKyMgaHR0cDovL2NvbnJhZG9wbGcuY3J5cHRvbGFuZC5uZXQvZmlsZXMvMjAxMC8xMi9tb2NyeXNlbjEzLnBkZgogCiB3aGlsZSAoKCRvdXRwdXQ9c2hpZnQpICYmICgkb3V0cHV0IX4vXlx3W1x3XC1dKlwuXHcrJC8pKSB7fQogb3BlbiBTVERPVVQsIj4kb3V0cHV0IjsKIAotc3ViIERsbygpICAgeyBzaGlmdD1+bXxxKFsxXT9bMC05XSl8PyJkIi4oJDEqMik6IiI7ICAgICB9Ci1zdWIgRGhpKCkgICB7IHNoaWZ0PX5tfHEoWzFdP1swLTldKXw/ImQiLigkMSoyKzEpOiIiOyAgIH0KLXN1YiBRKCkgICAgIHsgc2hpZnQ9fm18ZChbMS0zXT9bMDI0NjhdKXw/InEiLigkMS8yKToiIjsgfQotCiAkY29kZT08PF9fXzsKICNpbmNsdWRlICJhcm1fYXJjaC5oIgogCkBAIC0zNiwzMSArNDMsNiBAQAogCiAjaWYgX19BUk1fQVJDSF9fPj03CiAuZnB1CW5lb24KLQotLnR5cGUJbXVsXzF4MV9uZW9uLCVmdW5jdGlvbgotLmFsaWduCTUKLW11bF8xeDFfbmVvbjoKLQl2c2hsLnU2NAlgJkRsbygicTEiKWAsZDE2LCM4CUAgcTEtcTMgYXJlIHNsaWRlZCAkYQotCXZtdWxsLnA4CWAmUSgiZDAiKWAsZDE2LGQxNwlAIGHCt2JiCi0JdnNobC51NjQJYCZEbG8oInEyIilgLGQxNiwjMTYKLQl2bXVsbC5wOAlxMSxgJkRsbygicTEiKWAsZDE3CUAgYTw8OMK3YmIKLQl2c2hsLnU2NAlgJkRsbygicTMiKWAsZDE2LCMyNAotCXZtdWxsLnA4CXEyLGAmRGxvKCJxMiIpYCxkMTcJQCBhPDwxNsK3YmIKLQl2c2hyLnU2NAlgJkRsbygicTEiKWAsIzgKLQl2bXVsbC5wOAlxMyxgJkRsbygicTMiKWAsZDE3CUAgYTw8MjTCt2JiCi0JdnNobC51NjQJYCZEaGkoInExIilgLCMyNAotCXZlb3IJCWQwLGAmRGxvKCJxMSIpYAotCXZzaHIudTY0CWAmRGxvKCJxMiIpYCwjMTYKLQl2ZW9yCQlkMCxgJkRoaSgicTEiKWAKLQl2c2hsLnU2NAlgJkRoaSgicTIiKWAsIzE2Ci0JdmVvcgkJZDAsYCZEbG8oInEyIilgCi0JdnNoci51NjQJYCZEbG8oInEzIilgLCMyNAotCXZlb3IJCWQwLGAmRGhpKCJxMiIpYAotCXZzaGwudTY0CWAmRGhpKCJxMyIpYCwjOAotCXZlb3IJCWQwLGAmRGxvKCJxMyIpYAotCXZlb3IJCWQwLGAmRGhpKCJxMyIpYAotCWJ4CWxyCi0uc2l6ZQltdWxfMXgxX25lb24sLi1tdWxfMXgxX25lb24KICNlbmRpZgogX19fCiAjIyMjIyMjIyMjIyMjIyMjCkBAIC0xNTksOCArMTQxLDkgQEAKICMgdm9pZAlibl9HRjJtX211bF8yeDIoQk5fVUxPTkcgKnIsCiAjCUJOX1VMT05HIGExLEJOX1VMT05HIGEwLAogIwlCTl9VTE9ORyBiMSxCTl9VTE9ORyBiMCk7CSMgclszLi4wXT1hMWEwwrdiMWIwCi0KLSgkQTEsJEIxLCRBMCwkQjAsJEExQjEsJEEwQjApPW1hcCgiZCRfIiwoMTguLjIzKSk7Cit7CitteSAoJHIsJHQwLCR0MSwkdDIsJHQzKT1tYXAoInEkXyIsKDAuLjMsOC4uMTIpKTsKK215ICgkYSwkYiwkazQ4LCRrMzIsJGsxNik9bWFwKCJkJF8iLCgyNi4uMzEpKTsKIAogJGNvZGUuPTw8X19fOwogLmdsb2JhbAlibl9HRjJtX211bF8yeDIKQEAgLTE3Myw0NCArMTU2LDU4IEBACiAJdHN0CXIxMiwjMQogCWJlcQkuTGlhbHUKIAotCXZlb3IJJEExLCRBMQotCXZtb3YuMzIJJEIxLHIzLHIzCQlAIHR3byBjb3BpZXMgb2YgYjEKLQl2bW92LjMyCSR7QTF9WzBdLHIxCQlAIGExCisJbGRyCQlyMTIsIFtzcF0JCUAgNXRoIGFyZ3VtZW50CisJdm1vdi4zMgkJJGEsIHIyLCByMQorCXZtb3YuMzIJCSRiLCByMTIsIHIzCisJdm1vdi5pNjQJJGs0OCwgIzB4MDAwMGZmZmZmZmZmZmZmZgorCXZtb3YuaTY0CSRrMzIsICMweDAwMDAwMDAwZmZmZmZmZmYKKwl2bW92Lmk2NAkkazE2LCAjMHgwMDAwMDAwMDAwMDBmZmZmCiAKLQl2ZW9yCSRBMCwkQTAKLQl2bGQxLjMyCSR7QjB9W10sW3NwLDozMl0JQCB0d28gY29waWVzIG9mIGIwCi0Jdm1vdi4zMgkke0EwfVswXSxyMgkJQCBhMAotCW1vdglyMTIsbHIKKwl2ZXh0LjgJCSR0MCNsbywgJGEsICRhLCAjMQlAIEExCisJdm11bGwucDgJJHQwLCAkdDAjbG8sICRiCQlAIEYgPSBBMSpCCisJdmV4dC44CQkkciNsbywgJGIsICRiLCAjMQlAIEIxCisJdm11bGwucDgJJHIsICRhLCAkciNsbwkJQCBFID0gQSpCMQorCXZleHQuOAkJJHQxI2xvLCAkYSwgJGEsICMyCUAgQTIKKwl2bXVsbC5wOAkkdDEsICR0MSNsbywgJGIJCUAgSCA9IEEyKkIKKwl2ZXh0LjgJCSR0MyNsbywgJGIsICRiLCAjMglAIEIyCisJdm11bGwucDgJJHQzLCAkYSwgJHQzI2xvCQlAIEcgPSBBKkIyCisJdmV4dC44CQkkdDIjbG8sICRhLCAkYSwgIzMJQCBBMworCXZlb3IJCSR0MCwgJHQwLCAkcgkJQCBMID0gRSArIEYKKwl2bXVsbC5wOAkkdDIsICR0MiNsbywgJGIJCUAgSiA9IEEzKkIKKwl2ZXh0LjgJCSRyI2xvLCAkYiwgJGIsICMzCUAgQjMKKwl2ZW9yCQkkdDEsICR0MSwgJHQzCQlAIE0gPSBHICsgSAorCXZtdWxsLnA4CSRyLCAkYSwgJHIjbG8JCUAgSSA9IEEqQjMKKwl2ZW9yCQkkdDAjbG8sICR0MCNsbywgJHQwI2hpCUAgdDAgPSAoTCkgKFAwICsgUDEpIDw8IDgKKwl2YW5kCQkkdDAjaGksICR0MCNoaSwgJGs0OAorCXZleHQuOAkJJHQzI2xvLCAkYiwgJGIsICM0CUAgQjQKKwl2ZW9yCQkkdDEjbG8sICR0MSNsbywgJHQxI2hpCUAgdDEgPSAoTSkgKFAyICsgUDMpIDw8IDE2CisJdmFuZAkJJHQxI2hpLCAkdDEjaGksICRrMzIKKwl2bXVsbC5wOAkkdDMsICRhLCAkdDMjbG8JCUAgSyA9IEEqQjQKKwl2ZW9yCQkkdDIsICR0MiwgJHIJCUAgTiA9IEkgKyBKCisJdmVvcgkJJHQwI2xvLCAkdDAjbG8sICR0MCNoaQorCXZlb3IJCSR0MSNsbywgJHQxI2xvLCAkdDEjaGkKKwl2ZW9yCQkkdDIjbG8sICR0MiNsbywgJHQyI2hpCUAgdDIgPSAoTikgKFA0ICsgUDUpIDw8IDI0CisJdmFuZAkJJHQyI2hpLCAkdDIjaGksICRrMTYKKwl2ZXh0LjgJCSR0MCwgJHQwLCAkdDAsICMxNQorCXZlb3IJCSR0MyNsbywgJHQzI2xvLCAkdDMjaGkJQCB0MyA9IChLKSAoUDYgKyBQNykgPDwgMzIKKwl2bW92Lmk2NAkkdDMjaGksICMwCisJdmV4dC44CQkkdDEsICR0MSwgJHQxLCAjMTQKKwl2ZW9yCQkkdDIjbG8sICR0MiNsbywgJHQyI2hpCisJdm11bGwucDgJJHIsICRhLCAkYgkJQCBEID0gQSpCCisJdmV4dC44CQkkdDMsICR0MywgJHQzLCAjMTIKKwl2ZXh0LjgJCSR0MiwgJHQyLCAkdDIsICMxMworCXZlb3IJCSR0MCwgJHQwLCAkdDEKKwl2ZW9yCQkkdDIsICR0MiwgJHQzCisJdmVvcgkJJHIsICRyLCAkdDAKKwl2ZW9yCQkkciwgJHIsICR0MgogCi0Jdm1vdglkMTYsJEExCi0Jdm1vdglkMTcsJEIxCi0JYmwJbXVsXzF4MV9uZW9uCQlAIGExwrdiMQotCXZtb3YJJEExQjEsZDAKLQotCXZtb3YJZDE2LCRBMAotCXZtb3YJZDE3LCRCMAotCWJsCW11bF8xeDFfbmVvbgkJQCBhMMK3YjAKLQl2bW92CSRBMEIwLGQwCi0KLQl2ZW9yCWQxNiwkQTAsJEExCi0JdmVvcglkMTcsJEIwLCRCMQotCXZlb3IJJEEwLCRBMEIwLCRBMUIxCi0JYmwJbXVsXzF4MV9uZW9uCQlAIChhMCthMSnCtyhiMCtiMSkKLQotCXZlb3IJZDAsJEEwCQkJQCAoYTArYTEpwrcoYjArYjEpLWEwwrdiMC1hMcK3YjEKLQl2c2hsLnU2NCBkMSxkMCwjMzIKLQl2c2hyLnU2NCBkMCxkMCwjMzIKLQl2ZW9yCSRBMEIwLGQxCi0JdmVvcgkkQTFCMSxkMAotCXZzdDEuMzIJeyR7QTBCMH1bMF19LFtyMCw6MzJdIQotCXZzdDEuMzIJeyR7QTBCMH1bMV19LFtyMCw6MzJdIQotCXZzdDEuMzIJeyR7QTFCMX1bMF19LFtyMCw6MzJdIQotCXZzdDEuMzIJeyR7QTFCMX1bMV19LFtyMCw6MzJdCi0JYngJcjEyCisJdnN0MS4zMgkJeyRyfSwgW3IwXQorCXJldAkJQCBieCBscgogLmFsaWduCTQKIC5MaWFsdToKICNlbmRpZgogX19fCit9CiAkcmV0PSJyMTAiOwkjIHJlYXNzaWduZWQgMXN0IGFyZ3VtZW50CiAkY29kZS49PDxfX187CiAJc3RtZGIJc3AhLHtyNC1yMTAsbHJ9CkBAIC0yNzIsNyArMjY5LDEzIEBACiAuY29tbQlPUEVOU1NMX2FybWNhcF9QLDQsNAogX19fCiAKLSRjb2RlID1+IHMvXGAoW15cYF0qKVxgL2V2YWwgJDEvZ2VtOwotJGNvZGUgPX4gcy9cYmJ4XHMrbHJcYi8ud29yZFx0MHhlMTJmZmYxZS9nbTsgICAgIyBtYWtlIGl0IHBvc3NpYmxlIHRvIGNvbXBpbGUgd2l0aCAtbWFyY2g9YXJtdjQKLXByaW50ICRjb2RlOworZm9yZWFjaCAoc3BsaXQoIlxuIiwkY29kZSkpIHsKKwlzL1xgKFteXGBdKilcYC9ldmFsICQxL2dlbzsKKworCXMvXGJxKFswLTldKykjKGxvfGhpKS9zcHJpbnRmICJkJWQiLDIqJDErKCQyIGVxICJoaSIpL2dlbwlvcgorCXMvXGJyZXRcYi9ieAlsci9nbwkJb3IKKwlzL1xiYnhccytsclxiLy53b3JkXHQweGUxMmZmZjFlL2dvOyAgICAjIG1ha2UgaXQgcG9zc2libGUgdG8gY29tcGlsZSB3aXRoIC1tYXJjaD1hcm12NAorCisJcHJpbnQgJF8sIlxuIjsKK30KIGNsb3NlIFNURE9VVDsgICAjIGVuZm9yY2UgZmx1c2gKZGlmZiAtLWdpdCBhL2NyeXB0by9ibi9hc20vYXJtdjQtbW9udC5TIGIvY3J5cHRvL2JuL2FzbS9hcm12NC1tb250LlMKaW5kZXggNjRjMjIwYi4uZmVjYWUxNSAxMDA2NDQKLS0tIGEvY3J5cHRvL2JuL2FzbS9hcm12NC1tb250LlMKKysrIGIvY3J5cHRvL2JuL2FzbS9hcm12NC1tb250LlMKQEAgLTEsMTMgKzEsMzcgQEAKKyNpbmNsdWRlICJhcm1fYXJjaC5oIgorCiAudGV4dAorLmNvZGUJMzIKKworI2lmIF9fQVJNX0FSQ0hfXz49NworLmFsaWduCTUKKy5MT1BFTlNTTF9hcm1jYXA6Cisud29yZAlPUEVOU1NMX2FybWNhcF9QLWJuX211bF9tb250CisjZW5kaWYKIAogLmdsb2JhbAlibl9tdWxfbW9udAogLnR5cGUJYm5fbXVsX21vbnQsJWZ1bmN0aW9uCiAKLS5hbGlnbgkyCisuYWxpZ24JNQogYm5fbXVsX21vbnQ6CisJbGRyCWlwLFtzcCwjNF0JCUAgbG9hZCBudW0KIAlzdG1kYglzcCEse3IwLHIyfQkJQCBzcCBwb2ludHMgYXQgYXJndW1lbnQgYmxvY2sKLQlsZHIJcjAsW3NwLCMzKjRdCQlAIGxvYWQgbnVtCi0JY21wCXIwLCMyCisjaWYgX19BUk1fQVJDSF9fPj03CisJdHN0CWlwLCM3CisJYm5lCS5MaWFsdQorCWFkcglyMCxibl9tdWxfbW9udAorCWxkcglyMiwuTE9QRU5TU0xfYXJtY2FwCisJbGRyCXIwLFtyMCxyMl0KKwl0c3QJcjAsIzEJCQlAIE5FT04gYXZhaWxhYmxlPworCWxkbWlhCXNwLCB7cjAscjJ9CisJYmVxCS5MaWFsdQorCWFkZAlzcCxzcCwjOAorCWIJYm5fbXVsOHhfbW9udF9uZW9uCisuYWxpZ24JNAorLkxpYWx1OgorI2VuZGlmCisJY21wCWlwLCMyCisJbW92CXIwLGlwCQkJQCBsb2FkIG51bQogCW1vdmx0CXIwLCMwCiAJYWRkbHQJc3Asc3AsIzIqNAogCWJsdAkuTGFicnQKQEAgLTEzNyw5ICsxNjEsNDE5IEBACiAJbGRtaWEJc3AhLHtyNC1yMTIsbHJ9CQlAIHJlc3RvcmUgcmVnaXN0ZXJzCiAJYWRkCXNwLHNwLCMyKjQJCUAgc2tpcCBvdmVyIHtyMCxyMn0KIAltb3YJcjAsIzEKLS5MYWJydDoJdHN0CWxyLCMxCisuTGFicnQ6CisjaWYgX19BUk1fQVJDSF9fPj01CisJYngJbHIJCQkJQCAud29yZAkweGUxMmZmZjFlCisjZWxzZQorCXRzdAlsciwjMQogCW1vdmVxCXBjLGxyCQkJQCBiZSBiaW5hcnkgY29tcGF0aWJsZSB3aXRoIFY0LCB5ZXQKIAkud29yZAkweGUxMmZmZjFlCQkJQCBpbnRlcm9wZXJhYmxlIHdpdGggVGh1bWIgSVNBOi0pCisjZW5kaWYKIC5zaXplCWJuX211bF9tb250LC4tYm5fbXVsX21vbnQKLS5hc2NpegkiTW9udGdvbWVyeSBtdWx0aXBsaWNhdGlvbiBmb3IgQVJNdjQsIENSWVBUT0dBTVMgYnkgPGFwcHJvQG9wZW5zc2wub3JnPiIKKyNpZiBfX0FSTV9BUkNIX18+PTcKKy5mcHUJbmVvbgorCisudHlwZQlibl9tdWw4eF9tb250X25lb24sJWZ1bmN0aW9uCisuYWxpZ24JNQorYm5fbXVsOHhfbW9udF9uZW9uOgorCW1vdglpcCxzcAorCXN0bWRiCXNwISx7cjQtcjExfQorCXZzdG1kYglzcCEse2Q4LWQxNX0JCUAgQUJJIHNwZWNpZmljYXRpb24gc2F5cyBzbworCWxkbWlhCWlwLHtyNC1yNX0JCUAgbG9hZCByZXN0IG9mIHBhcmFtZXRlciBibG9jaworCisJc3ViCQlyNyxzcCwjMTYKKwl2bGQxLjMyCQl7ZDI4WzBdfSwgW3IyLDozMl0hCisJc3ViCQlyNyxyNyxyNSxsc2wjNAorCXZsZDEuMzIJCXtkMC1kM30sICBbcjFdIQkJQCBjYW4ndCBzcGVjaWZ5IDozMiA6LSgKKwlhbmQJCXI3LHI3LCMtNjQKKwl2bGQxLjMyCQl7ZDMwWzBdfSwgW3I0LDozMl0KKwltb3YJCXNwLHI3CQkJQCBhbGxvY2EKKwl2ZW9yCQlkOCxkOCxkOAorCXN1YnMJCXI4LHI1LCM4CisJdnppcC4xNgkJZDI4LGQ4CisKKwl2bXVsbC51MzIJcTYsZDI4LGQwWzBdCisJdm11bGwudTMyCXE3LGQyOCxkMFsxXQorCXZtdWxsLnUzMglxOCxkMjgsZDFbMF0KKwl2c2hsLmk2NAlkMTAsZDEzLCMxNgorCXZtdWxsLnUzMglxOSxkMjgsZDFbMV0KKworCXZhZGQudTY0CWQxMCxkMTAsZDEyCisJdmVvcgkJZDgsZDgsZDgKKwl2bXVsLnUzMglkMjksZDEwLGQzMAorCisJdm11bGwudTMyCXExMCxkMjgsZDJbMF0KKwkgdmxkMS4zMgl7ZDQtZDd9LCBbcjNdIQorCXZtdWxsLnUzMglxMTEsZDI4LGQyWzFdCisJdm11bGwudTMyCXExMixkMjgsZDNbMF0KKwl2emlwLjE2CQlkMjksZDgKKwl2bXVsbC51MzIJcTEzLGQyOCxkM1sxXQorCisJYm5lCS5MTkVPTl8xc3QKKworCUAgc3BlY2lhbCBjYXNlIGZvciBudW09OCwgZXZlcnl0aGluZyBpcyBpbiByZWdpc3RlciBiYW5rLi4uCisKKwl2bWxhbC51MzIJcTYsZDI5LGQ0WzBdCisJc3ViCQlyOSxyNSwjMQorCXZtbGFsLnUzMglxNyxkMjksZDRbMV0KKwl2bWxhbC51MzIJcTgsZDI5LGQ1WzBdCisJdm1sYWwudTMyCXE5LGQyOSxkNVsxXQorCisJdm1sYWwudTMyCXExMCxkMjksZDZbMF0KKwl2bW92CQlxNSxxNgorCXZtbGFsLnUzMglxMTEsZDI5LGQ2WzFdCisJdm1vdgkJcTYscTcKKwl2bWxhbC51MzIJcTEyLGQyOSxkN1swXQorCXZtb3YJCXE3LHE4CisJdm1sYWwudTMyCXExMyxkMjksZDdbMV0KKwl2bW92CQlxOCxxOQorCXZtb3YJCXE5LHExMAorCXZzaHIudTY0CWQxMCxkMTAsIzE2CisJdm1vdgkJcTEwLHExMQorCXZtb3YJCXExMSxxMTIKKwl2YWRkLnU2NAlkMTAsZDEwLGQxMQorCXZtb3YJCXExMixxMTMKKwl2ZW9yCQlxMTMscTEzCisJdnNoci51NjQJZDEwLGQxMCwjMTYKKworCWIJLkxORU9OX291dGVyOAorCisuYWxpZ24JNAorLkxORU9OX291dGVyODoKKwl2bGQxLjMyCQl7ZDI4WzBdfSwgW3IyLDozMl0hCisJdmVvcgkJZDgsZDgsZDgKKwl2emlwLjE2CQlkMjgsZDgKKwl2YWRkLnU2NAlkMTIsZDEyLGQxMAorCisJdm1sYWwudTMyCXE2LGQyOCxkMFswXQorCXZtbGFsLnUzMglxNyxkMjgsZDBbMV0KKwl2bWxhbC51MzIJcTgsZDI4LGQxWzBdCisJdnNobC5pNjQJZDEwLGQxMywjMTYKKwl2bWxhbC51MzIJcTksZDI4LGQxWzFdCisKKwl2YWRkLnU2NAlkMTAsZDEwLGQxMgorCXZlb3IJCWQ4LGQ4LGQ4CisJc3VicwkJcjkscjksIzEKKwl2bXVsLnUzMglkMjksZDEwLGQzMAorCisJdm1sYWwudTMyCXExMCxkMjgsZDJbMF0KKwl2bWxhbC51MzIJcTExLGQyOCxkMlsxXQorCXZtbGFsLnUzMglxMTIsZDI4LGQzWzBdCisJdnppcC4xNgkJZDI5LGQ4CisJdm1sYWwudTMyCXExMyxkMjgsZDNbMV0KKworCXZtbGFsLnUzMglxNixkMjksZDRbMF0KKwl2bWxhbC51MzIJcTcsZDI5LGQ0WzFdCisJdm1sYWwudTMyCXE4LGQyOSxkNVswXQorCXZtbGFsLnUzMglxOSxkMjksZDVbMV0KKworCXZtbGFsLnUzMglxMTAsZDI5LGQ2WzBdCisJdm1vdgkJcTUscTYKKwl2bWxhbC51MzIJcTExLGQyOSxkNlsxXQorCXZtb3YJCXE2LHE3CisJdm1sYWwudTMyCXExMixkMjksZDdbMF0KKwl2bW92CQlxNyxxOAorCXZtbGFsLnUzMglxMTMsZDI5LGQ3WzFdCisJdm1vdgkJcTgscTkKKwl2bW92CQlxOSxxMTAKKwl2c2hyLnU2NAlkMTAsZDEwLCMxNgorCXZtb3YJCXExMCxxMTEKKwl2bW92CQlxMTEscTEyCisJdmFkZC51NjQJZDEwLGQxMCxkMTEKKwl2bW92CQlxMTIscTEzCisJdmVvcgkJcTEzLHExMworCXZzaHIudTY0CWQxMCxkMTAsIzE2CisKKwlibmUJLkxORU9OX291dGVyOAorCisJdmFkZC51NjQJZDEyLGQxMixkMTAKKwltb3YJCXI3LHNwCisJdnNoci51NjQJZDEwLGQxMiwjMTYKKwltb3YJCXI4LHI1CisJdmFkZC51NjQJZDEzLGQxMyxkMTAKKwlhZGQJCXI2LHNwLCMxNgorCXZzaHIudTY0CWQxMCxkMTMsIzE2CisJdnppcC4xNgkJZDEyLGQxMworCisJYgkuTE5FT05fdGFpbDIKKworLmFsaWduCTQKKy5MTkVPTl8xc3Q6CisJdm1sYWwudTMyCXE2LGQyOSxkNFswXQorCSB2bGQxLjMyCXtkMC1kM30sIFtyMV0hCisJdm1sYWwudTMyCXE3LGQyOSxkNFsxXQorCXN1YnMJCXI4LHI4LCM4CisJdm1sYWwudTMyCXE4LGQyOSxkNVswXQorCXZtbGFsLnUzMglxOSxkMjksZDVbMV0KKworCXZtbGFsLnUzMglxMTAsZDI5LGQ2WzBdCisJIHZsZDEuMzIJe2Q0LWQ1fSwgW3IzXSEKKwl2bWxhbC51MzIJcTExLGQyOSxkNlsxXQorCSB2c3QxLjY0CXtxNi1xN30sIFtyNyw6MjU2XSEKKwl2bWxhbC51MzIJcTEyLGQyOSxkN1swXQorCXZtbGFsLnUzMglxMTMsZDI5LGQ3WzFdCisJIHZzdDEuNjQJe3E4LXE5fSwgW3I3LDoyNTZdIQorCisJdm11bGwudTMyCXE2LGQyOCxkMFswXQorCSB2bGQxLjMyCXtkNi1kN30sIFtyM10hCisJdm11bGwudTMyCXE3LGQyOCxkMFsxXQorCSB2c3QxLjY0CXtxMTAtcTExfSwgW3I3LDoyNTZdIQorCXZtdWxsLnUzMglxOCxkMjgsZDFbMF0KKwl2bXVsbC51MzIJcTksZDI4LGQxWzFdCisJIHZzdDEuNjQJe3ExMi1xMTN9LCBbcjcsOjI1Nl0hCisKKwl2bXVsbC51MzIJcTEwLGQyOCxkMlswXQorCXZtdWxsLnUzMglxMTEsZDI4LGQyWzFdCisJdm11bGwudTMyCXExMixkMjgsZDNbMF0KKwl2bXVsbC51MzIJcTEzLGQyOCxkM1sxXQorCisJYm5lCS5MTkVPTl8xc3QKKworCXZtbGFsLnUzMglxNixkMjksZDRbMF0KKwlhZGQJCXI2LHNwLCMxNgorCXZtbGFsLnUzMglxNyxkMjksZDRbMV0KKwlzdWIJCXIxLHIxLHI1LGxzbCMyCQlAIHJld2luZCByMQorCXZtbGFsLnUzMglxOCxkMjksZDVbMF0KKwkgdmxkMS42NAl7cTV9LCBbc3AsOjEyOF0KKwl2bWxhbC51MzIJcTksZDI5LGQ1WzFdCisJc3ViCQlyOSxyNSwjMQorCisJdm1sYWwudTMyCXExMCxkMjksZDZbMF0KKwl2c3QxLjY0CQl7cTYtcTd9LCBbcjcsOjI1Nl0hCisJdm1sYWwudTMyCXExMSxkMjksZDZbMV0KKwl2c2hyLnU2NAlkMTAsZDEwLCMxNgorCSB2bGQxLjY0CXtxNn0sICAgICAgIFtyNiwgOjEyOF0hCisJdm1sYWwudTMyCXExMixkMjksZDdbMF0KKwl2c3QxLjY0CQl7cTgtcTl9LCBbcjcsOjI1Nl0hCisJdm1sYWwudTMyCXExMyxkMjksZDdbMV0KKworCXZzdDEuNjQJCXtxMTAtcTExfSwgW3I3LDoyNTZdIQorCXZhZGQudTY0CWQxMCxkMTAsZDExCisJdmVvcgkJcTQscTQscTQKKwl2c3QxLjY0CQl7cTEyLXExM30sIFtyNyw6MjU2XSEKKwkgdmxkMS42NAl7cTctcTh9LCBbcjYsIDoyNTZdIQorCXZzdDEuNjQJCXtxNH0sICAgICAgICAgIFtyNyw6MTI4XQorCXZzaHIudTY0CWQxMCxkMTAsIzE2CisKKwliCQkuTE5FT05fb3V0ZXIKKworLmFsaWduCTQKKy5MTkVPTl9vdXRlcjoKKwl2bGQxLjMyCQl7ZDI4WzBdfSwgW3IyLDozMl0hCisJc3ViCQlyMyxyMyxyNSxsc2wjMgkJQCByZXdpbmQgcjMKKwl2bGQxLjMyCQl7ZDAtZDN9LCAgW3IxXSEKKwl2ZW9yCQlkOCxkOCxkOAorCW1vdgkJcjcsc3AKKwl2emlwLjE2CQlkMjgsZDgKKwlzdWIJCXI4LHI1LCM4CisJdmFkZC51NjQJZDEyLGQxMixkMTAKKworCXZtbGFsLnUzMglxNixkMjgsZDBbMF0KKwkgdmxkMS42NAl7cTktcTEwfSxbcjYsOjI1Nl0hCisJdm1sYWwudTMyCXE3LGQyOCxkMFsxXQorCXZtbGFsLnUzMglxOCxkMjgsZDFbMF0KKwkgdmxkMS42NAl7cTExLXExMn0sW3I2LDoyNTZdIQorCXZtbGFsLnUzMglxOSxkMjgsZDFbMV0KKworCXZzaGwuaTY0CWQxMCxkMTMsIzE2CisJdmVvcgkJZDgsZDgsZDgKKwl2YWRkLnU2NAlkMTAsZDEwLGQxMgorCSB2bGQxLjY0CXtxMTN9LFtyNiw6MTI4XSEKKwl2bXVsLnUzMglkMjksZDEwLGQzMAorCisJdm1sYWwudTMyCXExMCxkMjgsZDJbMF0KKwkgdmxkMS4zMgl7ZDQtZDd9LCBbcjNdIQorCXZtbGFsLnUzMglxMTEsZDI4LGQyWzFdCisJdm1sYWwudTMyCXExMixkMjgsZDNbMF0KKwl2emlwLjE2CQlkMjksZDgKKwl2bWxhbC51MzIJcTEzLGQyOCxkM1sxXQorCisuTE5FT05faW5uZXI6CisJdm1sYWwudTMyCXE2LGQyOSxkNFswXQorCSB2bGQxLjMyCXtkMC1kM30sIFtyMV0hCisJdm1sYWwudTMyCXE3LGQyOSxkNFsxXQorCSBzdWJzCQlyOCxyOCwjOAorCXZtbGFsLnUzMglxOCxkMjksZDVbMF0KKwl2bWxhbC51MzIJcTksZDI5LGQ1WzFdCisJdnN0MS42NAkJe3E2LXE3fSwgW3I3LDoyNTZdIQorCisJdm1sYWwudTMyCXExMCxkMjksZDZbMF0KKwkgdmxkMS42NAl7cTZ9LCAgICAgICBbcjYsIDoxMjhdIQorCXZtbGFsLnUzMglxMTEsZDI5LGQ2WzFdCisJdnN0MS42NAkJe3E4LXE5fSwgW3I3LDoyNTZdIQorCXZtbGFsLnUzMglxMTIsZDI5LGQ3WzBdCisJIHZsZDEuNjQJe3E3LXE4fSwgW3I2LCA6MjU2XSEKKwl2bWxhbC51MzIJcTEzLGQyOSxkN1sxXQorCXZzdDEuNjQJCXtxMTAtcTExfSwgW3I3LDoyNTZdIQorCisJdm1sYWwudTMyCXE2LGQyOCxkMFswXQorCSB2bGQxLjY0CXtxOS1xMTB9LCBbcjYsIDoyNTZdIQorCXZtbGFsLnUzMglxNyxkMjgsZDBbMV0KKwl2c3QxLjY0CQl7cTEyLXExM30sIFtyNyw6MjU2XSEKKwl2bWxhbC51MzIJcTgsZDI4LGQxWzBdCisJIHZsZDEuNjQJe3ExMS1xMTJ9LCBbcjYsIDoyNTZdIQorCXZtbGFsLnUzMglxOSxkMjgsZDFbMV0KKwkgdmxkMS4zMgl7ZDQtZDd9LCBbcjNdIQorCisJdm1sYWwudTMyCXExMCxkMjgsZDJbMF0KKwkgdmxkMS42NAl7cTEzfSwgICAgICAgW3I2LCA6MTI4XSEKKwl2bWxhbC51MzIJcTExLGQyOCxkMlsxXQorCXZtbGFsLnUzMglxMTIsZDI4LGQzWzBdCisJdm1sYWwudTMyCXExMyxkMjgsZDNbMV0KKworCWJuZQkuTE5FT05faW5uZXIKKworCXZtbGFsLnUzMglxNixkMjksZDRbMF0KKwlhZGQJCXI2LHNwLCMxNgorCXZtbGFsLnUzMglxNyxkMjksZDRbMV0KKwlzdWIJCXIxLHIxLHI1LGxzbCMyCQlAIHJld2luZCByMQorCXZtbGFsLnUzMglxOCxkMjksZDVbMF0KKwkgdmxkMS42NAl7cTV9LCBbc3AsOjEyOF0KKwl2bWxhbC51MzIJcTksZDI5LGQ1WzFdCisJc3VicwkJcjkscjksIzEKKworCXZtbGFsLnUzMglxMTAsZDI5LGQ2WzBdCisJdnN0MS42NAkJe3E2LXE3fSwgW3I3LDoyNTZdIQorCXZtbGFsLnUzMglxMTEsZDI5LGQ2WzFdCisJIHZsZDEuNjQJe3E2fSwgICAgICAgW3I2LCA6MTI4XSEKKwl2c2hyLnU2NAlkMTAsZDEwLCMxNgorCXZzdDEuNjQJCXtxOC1xOX0sIFtyNyw6MjU2XSEKKwl2bWxhbC51MzIJcTEyLGQyOSxkN1swXQorCSB2bGQxLjY0CXtxNy1xOH0sIFtyNiwgOjI1Nl0hCisJdm1sYWwudTMyCXExMyxkMjksZDdbMV0KKworCXZzdDEuNjQJCXtxMTAtcTExfSwgW3I3LDoyNTZdIQorCXZhZGQudTY0CWQxMCxkMTAsZDExCisJdnN0MS42NAkJe3ExMi1xMTN9LCBbcjcsOjI1Nl0hCisJdnNoci51NjQJZDEwLGQxMCwjMTYKKworCWJuZQkuTE5FT05fb3V0ZXIKKworCW1vdgkJcjcsc3AKKwltb3YJCXI4LHI1CisKKy5MTkVPTl90YWlsOgorCXZhZGQudTY0CWQxMixkMTIsZDEwCisJdmxkMS42NAkJe3E5LXExMH0sIFtyNiwgOjI1Nl0hCisJdnNoci51NjQJZDEwLGQxMiwjMTYKKwl2YWRkLnU2NAlkMTMsZDEzLGQxMAorCXZsZDEuNjQJCXtxMTEtcTEyfSwgW3I2LCA6MjU2XSEKKwl2c2hyLnU2NAlkMTAsZDEzLCMxNgorCXZsZDEuNjQJCXtxMTN9LCAgICAgICBbcjYsIDoxMjhdIQorCXZ6aXAuMTYJCWQxMixkMTMKKworLkxORU9OX3RhaWwyOgorCXZhZGQudTY0CWQxNCxkMTQsZDEwCisJdnN0MS4zMgkJe2QxMlswXX0sIFtyNywgOjMyXSEKKwl2c2hyLnU2NAlkMTAsZDE0LCMxNgorCXZhZGQudTY0CWQxNSxkMTUsZDEwCisJdnNoci51NjQJZDEwLGQxNSwjMTYKKwl2emlwLjE2CQlkMTQsZDE1CisKKwl2YWRkLnU2NAlkMTYsZDE2LGQxMAorCXZzdDEuMzIJCXtkMTRbMF19LCBbcjcsIDozMl0hCisJdnNoci51NjQJZDEwLGQxNiwjMTYKKwl2YWRkLnU2NAlkMTcsZDE3LGQxMAorCXZzaHIudTY0CWQxMCxkMTcsIzE2CisJdnppcC4xNgkJZDE2LGQxNworCisJdmFkZC51NjQJZDE4LGQxOCxkMTAKKwl2c3QxLjMyCQl7ZDE2WzBdfSwgW3I3LCA6MzJdIQorCXZzaHIudTY0CWQxMCxkMTgsIzE2CisJdmFkZC51NjQJZDE5LGQxOSxkMTAKKwl2c2hyLnU2NAlkMTAsZDE5LCMxNgorCXZ6aXAuMTYJCWQxOCxkMTkKKworCXZhZGQudTY0CWQyMCxkMjAsZDEwCisJdnN0MS4zMgkJe2QxOFswXX0sIFtyNywgOjMyXSEKKwl2c2hyLnU2NAlkMTAsZDIwLCMxNgorCXZhZGQudTY0CWQyMSxkMjEsZDEwCisJdnNoci51NjQJZDEwLGQyMSwjMTYKKwl2emlwLjE2CQlkMjAsZDIxCisKKwl2YWRkLnU2NAlkMjIsZDIyLGQxMAorCXZzdDEuMzIJCXtkMjBbMF19LCBbcjcsIDozMl0hCisJdnNoci51NjQJZDEwLGQyMiwjMTYKKwl2YWRkLnU2NAlkMjMsZDIzLGQxMAorCXZzaHIudTY0CWQxMCxkMjMsIzE2CisJdnppcC4xNgkJZDIyLGQyMworCisJdmFkZC51NjQJZDI0LGQyNCxkMTAKKwl2c3QxLjMyCQl7ZDIyWzBdfSwgW3I3LCA6MzJdIQorCXZzaHIudTY0CWQxMCxkMjQsIzE2CisJdmFkZC51NjQJZDI1LGQyNSxkMTAKKwl2bGQxLjY0CQl7cTZ9LCBbcjYsIDoxMjhdIQorCXZzaHIudTY0CWQxMCxkMjUsIzE2CisJdnppcC4xNgkJZDI0LGQyNQorCisJdmFkZC51NjQJZDI2LGQyNixkMTAKKwl2c3QxLjMyCQl7ZDI0WzBdfSwgW3I3LCA6MzJdIQorCXZzaHIudTY0CWQxMCxkMjYsIzE2CisJdmFkZC51NjQJZDI3LGQyNyxkMTAKKwl2bGQxLjY0CQl7cTctcTh9LAlbcjYsIDoyNTZdIQorCXZzaHIudTY0CWQxMCxkMjcsIzE2CisJdnppcC4xNgkJZDI2LGQyNworCXN1YnMJCXI4LHI4LCM4CisJdnN0MS4zMgkJe2QyNlswXX0sIFtyNywgOjMyXSEKKworCWJuZQkuTE5FT05fdGFpbAorCisJdnN0MS4zMgl7ZDEwWzBdfSwgW3I3LCA6MzJdCQlAIHRvcC1tb3N0IGJpdAorCXN1YglyMyxyMyxyNSxsc2wjMgkJCUAgcmV3aW5kIHIzCisJc3VicwlyMSxzcCwjMAkJCQlAIGNsZWFyIGNhcnJ5IGZsYWcKKwlhZGQJcjIsc3AscjUsbHNsIzIKKworLkxORU9OX3N1YjoKKwlsZG1pYQlyMSEsIHtyNC1yN30KKwlsZG1pYQlyMyEsIHtyOC1yMTF9CisJc2JjcwlyOCwgcjQscjgKKwlzYmNzCXI5LCByNSxyOQorCXNiY3MJcjEwLHI2LHIxMAorCXNiY3MJcjExLHI3LHIxMQorCXRlcQlyMSxyMgkJCQlAIHByZXNlcnZlcyBjYXJyeQorCXN0bWlhCXIwISwge3I4LXIxMX0KKwlibmUJLkxORU9OX3N1YgorCisJbGRyCXIxMCwgW3IxXQkJCQlAIGxvYWQgdG9wLW1vc3QgYml0CisJdmVvcglxMCxxMCxxMAorCXN1YglyMTEscjIsc3AJCQkJQCB0aGlzIGlzIG51bSo0CisJdmVvcglxMSxxMSxxMQorCW1vdglyMSxzcAorCXN1YglyMCxyMCxyMTEJCQkJQCByZXdpbmQgcjAKKwltb3YJcjMscjIJCQkJQCBzZWNvbmQgMy80dGggb2YgZnJhbWUKKwlzYmNzCXIxMCxyMTAsIzAJCQkJQCByZXN1bHQgaXMgY2FycnkgZmxhZworCisuTE5FT05fY29weV9uX3phcDoKKwlsZG1pYQlyMSEsIHtyNC1yN30KKwlsZG1pYQlyMCwgIHtyOC1yMTF9CisJbW92Y2MJcjgsIHI0CisJdnN0MS42NAl7cTAtcTF9LCBbcjMsOjI1Nl0hCQkJQCB3aXBlCisJbW92Y2MJcjksIHI1CisJbW92Y2MJcjEwLHI2CisJdnN0MS42NAl7cTAtcTF9LCBbcjMsOjI1Nl0hCQkJQCB3aXBlCisJbW92Y2MJcjExLHI3CisJbGRtaWEJcjEsIHtyNC1yN30KKwlzdG1pYQlyMCEsIHtyOC1yMTF9CisJc3ViCXIxLHIxLCMxNgorCWxkbWlhCXIwLCB7cjgtcjExfQorCW1vdmNjCXI4LCByNAorCXZzdDEuNjQJe3EwLXExfSwgW3IxLDoyNTZdIQkJCUAgd2lwZQorCW1vdmNjCXI5LCByNQorCW1vdmNjCXIxMCxyNgorCXZzdDEuNjQJe3EwLXExfSwgW3IzLDoyNTZdIQkJCUAgd2lwZQorCW1vdmNjCXIxMSxyNworCXRlcQlyMSxyMgkJCQlAIHByZXNlcnZlcyBjYXJyeQorCXN0bWlhCXIwISwge3I4LXIxMX0KKwlibmUJLkxORU9OX2NvcHlfbl96YXAKKworCXN1YglzcCxpcCwjOTYKKyAgICAgICAgdmxkbWlhICBzcCEse2Q4LWQxNX0KKyAgICAgICAgbGRtaWEgICBzcCEse3I0LXIxMX0KKwlieAlscgkJCQkJCUAgLndvcmQJMHhlMTJmZmYxZQorLnNpemUJYm5fbXVsOHhfbW9udF9uZW9uLC4tYm5fbXVsOHhfbW9udF9uZW9uCisjZW5kaWYKKy5hc2NpegkiTW9udGdvbWVyeSBtdWx0aXBsaWNhdGlvbiBmb3IgQVJNdjQvTkVPTiwgQ1JZUFRPR0FNUyBieSA8YXBwcm9Ab3BlbnNzbC5vcmc+IgogLmFsaWduCTIKKyNpZiBfX0FSTV9BUkNIX18+PTcKKy5jb21tCU9QRU5TU0xfYXJtY2FwX1AsNCw0CisjZW5kaWYKZGlmZiAtLWdpdCBhL2NyeXB0by9ibi9hc20vYXJtdjQtbW9udC5wbCBiL2NyeXB0by9ibi9hc20vYXJtdjQtbW9udC5wbAppbmRleCBmNzhhOGI1Li43MmJhZDhlIDEwMDY0NAotLS0gYS9jcnlwdG8vYm4vYXNtL2FybXY0LW1vbnQucGwKKysrIGIvY3J5cHRvL2JuL2FzbS9hcm12NC1tb250LnBsCkBAIC0xLDcgKzEsNyBAQAogIyEvdXNyL2Jpbi9lbnYgcGVybAogCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0jIFdyaXR0ZW4gYnkgQW5keSBQb2x5YWtvdiA8YXBwcm9AZnkuY2hhbG1lcnMuc2U+IGZvciB0aGUgT3BlblNTTAorIyBXcml0dGVuIGJ5IEFuZHkgUG9seWFrb3YgPGFwcHJvQG9wZW5zc2wub3JnPiBmb3IgdGhlIE9wZW5TU0wKICMgcHJvamVjdC4gVGhlIG1vZHVsZSBpcywgaG93ZXZlciwgZHVhbCBsaWNlbnNlZCB1bmRlciBPcGVuU1NMIGFuZAogIyBDUllQVE9HQU1TIGxpY2Vuc2VzIGRlcGVuZGluZyBvbiB3aGVyZSB5b3Ugb2J0YWluIGl0LiBGb3IgZnVydGhlcgogIyBkZXRhaWxzIHNlZSBodHRwOi8vd3d3Lm9wZW5zc2wub3JnL35hcHByby9jcnlwdG9nYW1zLy4KQEAgLTIzLDYgKzIzLDIxIEBACiAjIHRoYW4gMS8yS0IuIFdpbmRvd3MgQ0UgcG9ydCB3b3VsZCBiZSB0cml2aWFsLCBhcyBpdCdzIGV4Y2x1c2l2ZWx5CiAjIGFib3V0IGRlY29yYXRpb25zLCBBQkkgYW5kIGluc3RydWN0aW9uIHN5bnRheCBhcmUgaWRlbnRpY2FsLgogCisjIE5vdmVtYmVyIDIwMTMKKyMKKyMgQWRkIE5FT04gY29kZSBwYXRoLCB3aGljaCBoYW5kbGVzIGxlbmd0aHMgZGl2aXNpYmxlIGJ5IDguIFJTQS9EU0EKKyMgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQgb24gQ29ydGV4LUE4IGlzIH40NS0xMDAlIGRlcGVuZGluZyBvbiBrZXkKKyMgbGVuZ3RoLCBtb3JlIGZvciBsb25nZXIga2V5cy4gT24gQ29ydGV4LUExNSB0aGUgc3BhbiBpcyB+MTAtMTA1JS4KKyMgT24gU25hcGRyYWdvbiBTNCBpbXByb3ZlbWVudCB3YXMgbWVhc3VyZWQgdG8gdmFyeSBmcm9tIH43MCUgdG8KKyMgaW5jcmVkaWJsZSB+MzgwJSwgeWVzLCA0Ljh4IGZhc3RlciwgZm9yIFJTQTQwOTYgc2lnbi4gQnV0IHRoaXMgaXMKKyMgcmF0aGVyIGJlY2F1c2Ugb3JpZ2luYWwgaW50ZWdlci1vbmx5IGNvZGUgc2VlbXMgdG8gcGVyZm9ybQorIyBzdWJvcHRpbWFsbHkgb24gUzQuIFNpdHVhdGlvbiBvbiBDb3J0ZXgtQTkgaXMgdW5mb3J0dW5hdGVseQorIyBkaWZmZXJlbnQuIEl0J3MgYmVpbmcgbG9va2VkIGludG8sIGJ1dCB0aGUgdHJvdWJsZSBpcyB0aGF0CisjIHBlcmZvcm1hbmNlIGZvciB2ZWN0b3JzIGxvbmdlciB0aGFuIDI1NiBiaXRzIGlzIGFjdHVhbGx5IGNvdXBsZQorIyBvZiBwZXJjZW50IHdvcnNlIHRoYW4gZm9yIGludGVnZXItb25seSBjb2RlLiBUaGUgY29kZSBpcyBjaG9zZW4KKyMgZm9yIGV4ZWN1dGlvbiBvbiBhbGwgTkVPTi1jYXBhYmxlIHByb2Nlc3NvcnMsIGJlY2F1c2UgZ2FpbiBvbgorIyBvdGhlcnMgb3V0d2VpZ2hzIHRoZSBtYXJnaW5hbCBsb3NzIG9uIENvcnRleC1BOS4KKwogd2hpbGUgKCgkb3V0cHV0PXNoaWZ0KSAmJiAoJG91dHB1dCF+L15cd1tcd1wtXSpcLlx3KyQvKSkge30KIG9wZW4gU1RET1VULCI+JG91dHB1dCI7CiAKQEAgLTUyLDE2ICs2Nyw0MCBAQAogJF9udW09IiRudW0sIzE1KjQiOwkkX2JwZW5kPSRfbnVtOwogCiAkY29kZT08PF9fXzsKKyNpbmNsdWRlICJhcm1fYXJjaC5oIgorCiAudGV4dAorLmNvZGUJMzIKKworI2lmIF9fQVJNX0FSQ0hfXz49NworLmFsaWduCTUKKy5MT1BFTlNTTF9hcm1jYXA6Cisud29yZAlPUEVOU1NMX2FybWNhcF9QLWJuX211bF9tb250CisjZW5kaWYKIAogLmdsb2JhbAlibl9tdWxfbW9udAogLnR5cGUJYm5fbXVsX21vbnQsJWZ1bmN0aW9uCiAKLS5hbGlnbgkyCisuYWxpZ24JNQogYm5fbXVsX21vbnQ6CisJbGRyCWlwLFtzcCwjNF0JCUAgbG9hZCBudW0KIAlzdG1kYglzcCEse3IwLHIyfQkJQCBzcCBwb2ludHMgYXQgYXJndW1lbnQgYmxvY2sKLQlsZHIJJG51bSxbc3AsIzMqNF0JCUAgbG9hZCBudW0KLQljbXAJJG51bSwjMgorI2lmIF9fQVJNX0FSQ0hfXz49NworCXRzdAlpcCwjNworCWJuZQkuTGlhbHUKKwlhZHIJcjAsYm5fbXVsX21vbnQKKwlsZHIJcjIsLkxPUEVOU1NMX2FybWNhcAorCWxkcglyMCxbcjAscjJdCisJdHN0CXIwLCMxCQkJQCBORU9OIGF2YWlsYWJsZT8KKwlsZG1pYQlzcCwge3IwLHIyfQorCWJlcQkuTGlhbHUKKwlhZGQJc3Asc3AsIzgKKwliCWJuX211bDh4X21vbnRfbmVvbgorLmFsaWduCTQKKy5MaWFsdToKKyNlbmRpZgorCWNtcAlpcCwjMgorCW1vdgkkbnVtLGlwCQkJQCBsb2FkIG51bQogCW1vdmx0CXIwLCMwCiAJYWRkbHQJc3Asc3AsIzIqNAogCWJsdAkuTGFicnQKQEAgLTE5MSwxNCArMjMwLDQ0NiBAQAogCWxkbWlhCXNwISx7cjQtcjEyLGxyfQkJQCByZXN0b3JlIHJlZ2lzdGVycwogCWFkZAlzcCxzcCwjMio0CQlAIHNraXAgb3ZlciB7cjAscjJ9CiAJbW92CXIwLCMxCi0uTGFicnQ6CXRzdAlsciwjMQorLkxhYnJ0OgorI2lmIF9fQVJNX0FSQ0hfXz49NQorCXJldAkJCQlAIGJ4IGxyCisjZWxzZQorCXRzdAlsciwjMQogCW1vdmVxCXBjLGxyCQkJQCBiZSBiaW5hcnkgY29tcGF0aWJsZSB3aXRoIFY0LCB5ZXQKIAlieAlscgkJCUAgaW50ZXJvcGVyYWJsZSB3aXRoIFRodW1iIElTQTotKQorI2VuZGlmCiAuc2l6ZQlibl9tdWxfbW9udCwuLWJuX211bF9tb250Ci0uYXNjaXoJIk1vbnRnb21lcnkgbXVsdGlwbGljYXRpb24gZm9yIEFSTXY0LCBDUllQVE9HQU1TIGJ5IDxhcHByb1xAb3BlbnNzbC5vcmc+IgorX19fCit7CitzdWIgRGxvKCkgICB7IHNoaWZ0PX5tfHEoWzFdP1swLTldKXw/ImQiLigkMSoyKToiIjsgICAgIH0KK3N1YiBEaGkoKSAgIHsgc2hpZnQ9fm18cShbMV0/WzAtOV0pfD8iZCIuKCQxKjIrMSk6IiI7ICAgfQorCitteSAoJEEwLCRBMSwkQTIsJEEzKT1tYXAoImQkXyIsKDAuLjMpKTsKK215ICgkTjAsJE4xLCROMiwkTjMpPW1hcCgiZCRfIiwoNC4uNykpOworbXkgKCRaLCRUZW1wKT0oInE0IiwicTUiKTsKK215ICgkQTB4QiwkQTF4QiwkQTJ4QiwkQTN4QiwkQTR4QiwkQTV4QiwkQTZ4QiwkQTd4Qik9bWFwKCJxJF8iLCg2Li4xMykpOworbXkgKCRCaSwkTmksJE0wKT1tYXAoImQkXyIsKDI4Li4zMSkpOworbXkgJHplcm89JkRsbygkWik7CitteSAkdGVtcD0mRGxvKCRUZW1wKTsKKworbXkgKCRycHRyLCRhcHRyLCRicHRyLCRucHRyLCRuMCwkbnVtKT1tYXAoInIkXyIsKDAuLjUpKTsKK215ICgkdGlucHRyLCR0b3V0cHRyLCRpbm5lciwkb3V0ZXIpPW1hcCgiciRfIiwoNi4uOSkpOworCiskY29kZS49PDxfX187CisjaWYgX19BUk1fQVJDSF9fPj03CisuZnB1CW5lb24KKworLnR5cGUJYm5fbXVsOHhfbW9udF9uZW9uLCVmdW5jdGlvbgorLmFsaWduCTUKK2JuX211bDh4X21vbnRfbmVvbjoKKwltb3YJaXAsc3AKKwlzdG1kYglzcCEse3I0LXIxMX0KKwl2c3RtZGIJc3AhLHtkOC1kMTV9CQlAIEFCSSBzcGVjaWZpY2F0aW9uIHNheXMgc28KKwlsZG1pYQlpcCx7cjQtcjV9CQlAIGxvYWQgcmVzdCBvZiBwYXJhbWV0ZXIgYmxvY2sKKworCXN1YgkJJHRvdXRwdHIsc3AsIzE2CisJdmxkMS4zMgkJeyR7Qml9WzBdfSwgWyRicHRyLDozMl0hCisJc3ViCQkkdG91dHB0ciwkdG91dHB0ciwkbnVtLGxzbCM0CisJdmxkMS4zMgkJeyRBMC0kQTN9LCAgWyRhcHRyXSEJCUAgY2FuJ3Qgc3BlY2lmeSA6MzIgOi0oCisJYW5kCQkkdG91dHB0ciwkdG91dHB0ciwjLTY0CisJdmxkMS4zMgkJeyR7TTB9WzBdfSwgWyRuMCw6MzJdCisJbW92CQlzcCwkdG91dHB0cgkJCUAgYWxsb2NhCisJdmVvcgkJJHplcm8sJHplcm8sJHplcm8KKwlzdWJzCQkkaW5uZXIsJG51bSwjOAorCXZ6aXAuMTYJCSRCaSwkemVybworCisJdm11bGwudTMyCSRBMHhCLCRCaSwke0EwfVswXQorCXZtdWxsLnUzMgkkQTF4QiwkQmksJHtBMH1bMV0KKwl2bXVsbC51MzIJJEEyeEIsJEJpLCR7QTF9WzBdCisJdnNobC5pNjQJJHRlbXAsYCZEaGkoIiRBMHhCIilgLCMxNgorCXZtdWxsLnUzMgkkQTN4QiwkQmksJHtBMX1bMV0KKworCXZhZGQudTY0CSR0ZW1wLCR0ZW1wLGAmRGxvKCIkQTB4QiIpYAorCXZlb3IJCSR6ZXJvLCR6ZXJvLCR6ZXJvCisJdm11bC51MzIJJE5pLCR0ZW1wLCRNMAorCisJdm11bGwudTMyCSRBNHhCLCRCaSwke0EyfVswXQorCSB2bGQxLjMyCXskTjAtJE4zfSwgWyRucHRyXSEKKwl2bXVsbC51MzIJJEE1eEIsJEJpLCR7QTJ9WzFdCisJdm11bGwudTMyCSRBNnhCLCRCaSwke0EzfVswXQorCXZ6aXAuMTYJCSROaSwkemVybworCXZtdWxsLnUzMgkkQTd4QiwkQmksJHtBM31bMV0KKworCWJuZQkuTE5FT05fMXN0CisKKwlAIHNwZWNpYWwgY2FzZSBmb3IgbnVtPTgsIGV2ZXJ5dGhpbmcgaXMgaW4gcmVnaXN0ZXIgYmFuay4uLgorCisJdm1sYWwudTMyCSRBMHhCLCROaSwke04wfVswXQorCXN1YgkJJG91dGVyLCRudW0sIzEKKwl2bWxhbC51MzIJJEExeEIsJE5pLCR7TjB9WzFdCisJdm1sYWwudTMyCSRBMnhCLCROaSwke04xfVswXQorCXZtbGFsLnUzMgkkQTN4QiwkTmksJHtOMX1bMV0KKworCXZtbGFsLnUzMgkkQTR4QiwkTmksJHtOMn1bMF0KKwl2bW92CQkkVGVtcCwkQTB4QgorCXZtbGFsLnUzMgkkQTV4QiwkTmksJHtOMn1bMV0KKwl2bW92CQkkQTB4QiwkQTF4QgorCXZtbGFsLnUzMgkkQTZ4QiwkTmksJHtOM31bMF0KKwl2bW92CQkkQTF4QiwkQTJ4QgorCXZtbGFsLnUzMgkkQTd4QiwkTmksJHtOM31bMV0KKwl2bW92CQkkQTJ4QiwkQTN4QgorCXZtb3YJCSRBM3hCLCRBNHhCCisJdnNoci51NjQJJHRlbXAsJHRlbXAsIzE2CisJdm1vdgkJJEE0eEIsJEE1eEIKKwl2bW92CQkkQTV4QiwkQTZ4QgorCXZhZGQudTY0CSR0ZW1wLCR0ZW1wLGAmRGhpKCIkVGVtcCIpYAorCXZtb3YJCSRBNnhCLCRBN3hCCisJdmVvcgkJJEE3eEIsJEE3eEIKKwl2c2hyLnU2NAkkdGVtcCwkdGVtcCwjMTYKKworCWIJLkxORU9OX291dGVyOAorCisuYWxpZ24JNAorLkxORU9OX291dGVyODoKKwl2bGQxLjMyCQl7JHtCaX1bMF19LCBbJGJwdHIsOjMyXSEKKwl2ZW9yCQkkemVybywkemVybywkemVybworCXZ6aXAuMTYJCSRCaSwkemVybworCXZhZGQudTY0CWAmRGxvKCIkQTB4QiIpYCxgJkRsbygiJEEweEIiKWAsJHRlbXAKKworCXZtbGFsLnUzMgkkQTB4QiwkQmksJHtBMH1bMF0KKwl2bWxhbC51MzIJJEExeEIsJEJpLCR7QTB9WzFdCisJdm1sYWwudTMyCSRBMnhCLCRCaSwke0ExfVswXQorCXZzaGwuaTY0CSR0ZW1wLGAmRGhpKCIkQTB4QiIpYCwjMTYKKwl2bWxhbC51MzIJJEEzeEIsJEJpLCR7QTF9WzFdCisKKwl2YWRkLnU2NAkkdGVtcCwkdGVtcCxgJkRsbygiJEEweEIiKWAKKwl2ZW9yCQkkemVybywkemVybywkemVybworCXN1YnMJCSRvdXRlciwkb3V0ZXIsIzEKKwl2bXVsLnUzMgkkTmksJHRlbXAsJE0wCisKKwl2bWxhbC51MzIJJEE0eEIsJEJpLCR7QTJ9WzBdCisJdm1sYWwudTMyCSRBNXhCLCRCaSwke0EyfVsxXQorCXZtbGFsLnUzMgkkQTZ4QiwkQmksJHtBM31bMF0KKwl2emlwLjE2CQkkTmksJHplcm8KKwl2bWxhbC51MzIJJEE3eEIsJEJpLCR7QTN9WzFdCisKKwl2bWxhbC51MzIJJEEweEIsJE5pLCR7TjB9WzBdCisJdm1sYWwudTMyCSRBMXhCLCROaSwke04wfVsxXQorCXZtbGFsLnUzMgkkQTJ4QiwkTmksJHtOMX1bMF0KKwl2bWxhbC51MzIJJEEzeEIsJE5pLCR7TjF9WzFdCisKKwl2bWxhbC51MzIJJEE0eEIsJE5pLCR7TjJ9WzBdCisJdm1vdgkJJFRlbXAsJEEweEIKKwl2bWxhbC51MzIJJEE1eEIsJE5pLCR7TjJ9WzFdCisJdm1vdgkJJEEweEIsJEExeEIKKwl2bWxhbC51MzIJJEE2eEIsJE5pLCR7TjN9WzBdCisJdm1vdgkJJEExeEIsJEEyeEIKKwl2bWxhbC51MzIJJEE3eEIsJE5pLCR7TjN9WzFdCisJdm1vdgkJJEEyeEIsJEEzeEIKKwl2bW92CQkkQTN4QiwkQTR4QgorCXZzaHIudTY0CSR0ZW1wLCR0ZW1wLCMxNgorCXZtb3YJCSRBNHhCLCRBNXhCCisJdm1vdgkJJEE1eEIsJEE2eEIKKwl2YWRkLnU2NAkkdGVtcCwkdGVtcCxgJkRoaSgiJFRlbXAiKWAKKwl2bW92CQkkQTZ4QiwkQTd4QgorCXZlb3IJCSRBN3hCLCRBN3hCCisJdnNoci51NjQJJHRlbXAsJHRlbXAsIzE2CisKKwlibmUJLkxORU9OX291dGVyOAorCisJdmFkZC51NjQJYCZEbG8oIiRBMHhCIilgLGAmRGxvKCIkQTB4QiIpYCwkdGVtcAorCW1vdgkJJHRvdXRwdHIsc3AKKwl2c2hyLnU2NAkkdGVtcCxgJkRsbygiJEEweEIiKWAsIzE2CisJbW92CQkkaW5uZXIsJG51bQorCXZhZGQudTY0CWAmRGhpKCIkQTB4QiIpYCxgJkRoaSgiJEEweEIiKWAsJHRlbXAKKwlhZGQJCSR0aW5wdHIsc3AsIzE2CisJdnNoci51NjQJJHRlbXAsYCZEaGkoIiRBMHhCIilgLCMxNgorCXZ6aXAuMTYJCWAmRGxvKCIkQTB4QiIpYCxgJkRoaSgiJEEweEIiKWAKKworCWIJLkxORU9OX3RhaWwyCisKKy5hbGlnbgk0CisuTE5FT05fMXN0OgorCXZtbGFsLnUzMgkkQTB4QiwkTmksJHtOMH1bMF0KKwkgdmxkMS4zMgl7JEEwLSRBM30sIFskYXB0cl0hCisJdm1sYWwudTMyCSRBMXhCLCROaSwke04wfVsxXQorCXN1YnMJCSRpbm5lciwkaW5uZXIsIzgKKwl2bWxhbC51MzIJJEEyeEIsJE5pLCR7TjF9WzBdCisJdm1sYWwudTMyCSRBM3hCLCROaSwke04xfVsxXQorCisJdm1sYWwudTMyCSRBNHhCLCROaSwke04yfVswXQorCSB2bGQxLjMyCXskTjAtJE4xfSwgWyRucHRyXSEKKwl2bWxhbC51MzIJJEE1eEIsJE5pLCR7TjJ9WzFdCisJIHZzdDEuNjQJeyRBMHhCLSRBMXhCfSwgWyR0b3V0cHRyLDoyNTZdIQorCXZtbGFsLnUzMgkkQTZ4QiwkTmksJHtOM31bMF0KKwl2bWxhbC51MzIJJEE3eEIsJE5pLCR7TjN9WzFdCisJIHZzdDEuNjQJeyRBMnhCLSRBM3hCfSwgWyR0b3V0cHRyLDoyNTZdIQorCisJdm11bGwudTMyCSRBMHhCLCRCaSwke0EwfVswXQorCSB2bGQxLjMyCXskTjItJE4zfSwgWyRucHRyXSEKKwl2bXVsbC51MzIJJEExeEIsJEJpLCR7QTB9WzFdCisJIHZzdDEuNjQJeyRBNHhCLSRBNXhCfSwgWyR0b3V0cHRyLDoyNTZdIQorCXZtdWxsLnUzMgkkQTJ4QiwkQmksJHtBMX1bMF0KKwl2bXVsbC51MzIJJEEzeEIsJEJpLCR7QTF9WzFdCisJIHZzdDEuNjQJeyRBNnhCLSRBN3hCfSwgWyR0b3V0cHRyLDoyNTZdIQorCisJdm11bGwudTMyCSRBNHhCLCRCaSwke0EyfVswXQorCXZtdWxsLnUzMgkkQTV4QiwkQmksJHtBMn1bMV0KKwl2bXVsbC51MzIJJEE2eEIsJEJpLCR7QTN9WzBdCisJdm11bGwudTMyCSRBN3hCLCRCaSwke0EzfVsxXQorCisJYm5lCS5MTkVPTl8xc3QKKworCXZtbGFsLnUzMgkkQTB4QiwkTmksJHtOMH1bMF0KKwlhZGQJCSR0aW5wdHIsc3AsIzE2CisJdm1sYWwudTMyCSRBMXhCLCROaSwke04wfVsxXQorCXN1YgkJJGFwdHIsJGFwdHIsJG51bSxsc2wjMgkJQCByZXdpbmQgJGFwdHIKKwl2bWxhbC51MzIJJEEyeEIsJE5pLCR7TjF9WzBdCisJIHZsZDEuNjQJeyRUZW1wfSwgW3NwLDoxMjhdCisJdm1sYWwudTMyCSRBM3hCLCROaSwke04xfVsxXQorCXN1YgkJJG91dGVyLCRudW0sIzEKKworCXZtbGFsLnUzMgkkQTR4QiwkTmksJHtOMn1bMF0KKwl2c3QxLjY0CQl7JEEweEItJEExeEJ9LCBbJHRvdXRwdHIsOjI1Nl0hCisJdm1sYWwudTMyCSRBNXhCLCROaSwke04yfVsxXQorCXZzaHIudTY0CSR0ZW1wLCR0ZW1wLCMxNgorCSB2bGQxLjY0CXskQTB4Qn0sICAgICAgIFskdGlucHRyLCA6MTI4XSEKKwl2bWxhbC51MzIJJEE2eEIsJE5pLCR7TjN9WzBdCisJdnN0MS42NAkJeyRBMnhCLSRBM3hCfSwgWyR0b3V0cHRyLDoyNTZdIQorCXZtbGFsLnUzMgkkQTd4QiwkTmksJHtOM31bMV0KKworCXZzdDEuNjQJCXskQTR4Qi0kQTV4Qn0sIFskdG91dHB0ciw6MjU2XSEKKwl2YWRkLnU2NAkkdGVtcCwkdGVtcCxgJkRoaSgiJFRlbXAiKWAKKwl2ZW9yCQkkWiwkWiwkWgorCXZzdDEuNjQJCXskQTZ4Qi0kQTd4Qn0sIFskdG91dHB0ciw6MjU2XSEKKwkgdmxkMS42NAl7JEExeEItJEEyeEJ9LCBbJHRpbnB0ciwgOjI1Nl0hCisJdnN0MS42NAkJeyRafSwgICAgICAgICAgWyR0b3V0cHRyLDoxMjhdCisJdnNoci51NjQJJHRlbXAsJHRlbXAsIzE2CisKKwliCQkuTE5FT05fb3V0ZXIKKworLmFsaWduCTQKKy5MTkVPTl9vdXRlcjoKKwl2bGQxLjMyCQl7JHtCaX1bMF19LCBbJGJwdHIsOjMyXSEKKwlzdWIJCSRucHRyLCRucHRyLCRudW0sbHNsIzIJCUAgcmV3aW5kICRucHRyCisJdmxkMS4zMgkJeyRBMC0kQTN9LCAgWyRhcHRyXSEKKwl2ZW9yCQkkemVybywkemVybywkemVybworCW1vdgkJJHRvdXRwdHIsc3AKKwl2emlwLjE2CQkkQmksJHplcm8KKwlzdWIJCSRpbm5lciwkbnVtLCM4CisJdmFkZC51NjQJYCZEbG8oIiRBMHhCIilgLGAmRGxvKCIkQTB4QiIpYCwkdGVtcAorCisJdm1sYWwudTMyCSRBMHhCLCRCaSwke0EwfVswXQorCSB2bGQxLjY0CXskQTN4Qi0kQTR4Qn0sWyR0aW5wdHIsOjI1Nl0hCisJdm1sYWwudTMyCSRBMXhCLCRCaSwke0EwfVsxXQorCXZtbGFsLnUzMgkkQTJ4QiwkQmksJHtBMX1bMF0KKwkgdmxkMS42NAl7JEE1eEItJEE2eEJ9LFskdGlucHRyLDoyNTZdIQorCXZtbGFsLnUzMgkkQTN4QiwkQmksJHtBMX1bMV0KKworCXZzaGwuaTY0CSR0ZW1wLGAmRGhpKCIkQTB4QiIpYCwjMTYKKwl2ZW9yCQkkemVybywkemVybywkemVybworCXZhZGQudTY0CSR0ZW1wLCR0ZW1wLGAmRGxvKCIkQTB4QiIpYAorCSB2bGQxLjY0CXskQTd4Qn0sWyR0aW5wdHIsOjEyOF0hCisJdm11bC51MzIJJE5pLCR0ZW1wLCRNMAorCisJdm1sYWwudTMyCSRBNHhCLCRCaSwke0EyfVswXQorCSB2bGQxLjMyCXskTjAtJE4zfSwgWyRucHRyXSEKKwl2bWxhbC51MzIJJEE1eEIsJEJpLCR7QTJ9WzFdCisJdm1sYWwudTMyCSRBNnhCLCRCaSwke0EzfVswXQorCXZ6aXAuMTYJCSROaSwkemVybworCXZtbGFsLnUzMgkkQTd4QiwkQmksJHtBM31bMV0KKworLkxORU9OX2lubmVyOgorCXZtbGFsLnUzMgkkQTB4QiwkTmksJHtOMH1bMF0KKwkgdmxkMS4zMgl7JEEwLSRBM30sIFskYXB0cl0hCisJdm1sYWwudTMyCSRBMXhCLCROaSwke04wfVsxXQorCSBzdWJzCQkkaW5uZXIsJGlubmVyLCM4CisJdm1sYWwudTMyCSRBMnhCLCROaSwke04xfVswXQorCXZtbGFsLnUzMgkkQTN4QiwkTmksJHtOMX1bMV0KKwl2c3QxLjY0CQl7JEEweEItJEExeEJ9LCBbJHRvdXRwdHIsOjI1Nl0hCisKKwl2bWxhbC51MzIJJEE0eEIsJE5pLCR7TjJ9WzBdCisJIHZsZDEuNjQJeyRBMHhCfSwgICAgICAgWyR0aW5wdHIsIDoxMjhdIQorCXZtbGFsLnUzMgkkQTV4QiwkTmksJHtOMn1bMV0KKwl2c3QxLjY0CQl7JEEyeEItJEEzeEJ9LCBbJHRvdXRwdHIsOjI1Nl0hCisJdm1sYWwudTMyCSRBNnhCLCROaSwke04zfVswXQorCSB2bGQxLjY0CXskQTF4Qi0kQTJ4Qn0sIFskdGlucHRyLCA6MjU2XSEKKwl2bWxhbC51MzIJJEE3eEIsJE5pLCR7TjN9WzFdCisJdnN0MS42NAkJeyRBNHhCLSRBNXhCfSwgWyR0b3V0cHRyLDoyNTZdIQorCisJdm1sYWwudTMyCSRBMHhCLCRCaSwke0EwfVswXQorCSB2bGQxLjY0CXskQTN4Qi0kQTR4Qn0sIFskdGlucHRyLCA6MjU2XSEKKwl2bWxhbC51MzIJJEExeEIsJEJpLCR7QTB9WzFdCisJdnN0MS42NAkJeyRBNnhCLSRBN3hCfSwgWyR0b3V0cHRyLDoyNTZdIQorCXZtbGFsLnUzMgkkQTJ4QiwkQmksJHtBMX1bMF0KKwkgdmxkMS42NAl7JEE1eEItJEE2eEJ9LCBbJHRpbnB0ciwgOjI1Nl0hCisJdm1sYWwudTMyCSRBM3hCLCRCaSwke0ExfVsxXQorCSB2bGQxLjMyCXskTjAtJE4zfSwgWyRucHRyXSEKKworCXZtbGFsLnUzMgkkQTR4QiwkQmksJHtBMn1bMF0KKwkgdmxkMS42NAl7JEE3eEJ9LCAgICAgICBbJHRpbnB0ciwgOjEyOF0hCisJdm1sYWwudTMyCSRBNXhCLCRCaSwke0EyfVsxXQorCXZtbGFsLnUzMgkkQTZ4QiwkQmksJHtBM31bMF0KKwl2bWxhbC51MzIJJEE3eEIsJEJpLCR7QTN9WzFdCisKKwlibmUJLkxORU9OX2lubmVyCisKKwl2bWxhbC51MzIJJEEweEIsJE5pLCR7TjB9WzBdCisJYWRkCQkkdGlucHRyLHNwLCMxNgorCXZtbGFsLnUzMgkkQTF4QiwkTmksJHtOMH1bMV0KKwlzdWIJCSRhcHRyLCRhcHRyLCRudW0sbHNsIzIJCUAgcmV3aW5kICRhcHRyCisJdm1sYWwudTMyCSRBMnhCLCROaSwke04xfVswXQorCSB2bGQxLjY0CXskVGVtcH0sIFtzcCw6MTI4XQorCXZtbGFsLnUzMgkkQTN4QiwkTmksJHtOMX1bMV0KKwlzdWJzCQkkb3V0ZXIsJG91dGVyLCMxCisKKwl2bWxhbC51MzIJJEE0eEIsJE5pLCR7TjJ9WzBdCisJdnN0MS42NAkJeyRBMHhCLSRBMXhCfSwgWyR0b3V0cHRyLDoyNTZdIQorCXZtbGFsLnUzMgkkQTV4QiwkTmksJHtOMn1bMV0KKwkgdmxkMS42NAl7JEEweEJ9LCAgICAgICBbJHRpbnB0ciwgOjEyOF0hCisJdnNoci51NjQJJHRlbXAsJHRlbXAsIzE2CisJdnN0MS42NAkJeyRBMnhCLSRBM3hCfSwgWyR0b3V0cHRyLDoyNTZdIQorCXZtbGFsLnUzMgkkQTZ4QiwkTmksJHtOM31bMF0KKwkgdmxkMS42NAl7JEExeEItJEEyeEJ9LCBbJHRpbnB0ciwgOjI1Nl0hCisJdm1sYWwudTMyCSRBN3hCLCROaSwke04zfVsxXQorCisJdnN0MS42NAkJeyRBNHhCLSRBNXhCfSwgWyR0b3V0cHRyLDoyNTZdIQorCXZhZGQudTY0CSR0ZW1wLCR0ZW1wLGAmRGhpKCIkVGVtcCIpYAorCXZzdDEuNjQJCXskQTZ4Qi0kQTd4Qn0sIFskdG91dHB0ciw6MjU2XSEKKwl2c2hyLnU2NAkkdGVtcCwkdGVtcCwjMTYKKworCWJuZQkuTE5FT05fb3V0ZXIKKworCW1vdgkJJHRvdXRwdHIsc3AKKwltb3YJCSRpbm5lciwkbnVtCisKKy5MTkVPTl90YWlsOgorCXZhZGQudTY0CWAmRGxvKCIkQTB4QiIpYCxgJkRsbygiJEEweEIiKWAsJHRlbXAKKwl2bGQxLjY0CQl7JEEzeEItJEE0eEJ9LCBbJHRpbnB0ciwgOjI1Nl0hCisJdnNoci51NjQJJHRlbXAsYCZEbG8oIiRBMHhCIilgLCMxNgorCXZhZGQudTY0CWAmRGhpKCIkQTB4QiIpYCxgJkRoaSgiJEEweEIiKWAsJHRlbXAKKwl2bGQxLjY0CQl7JEE1eEItJEE2eEJ9LCBbJHRpbnB0ciwgOjI1Nl0hCisJdnNoci51NjQJJHRlbXAsYCZEaGkoIiRBMHhCIilgLCMxNgorCXZsZDEuNjQJCXskQTd4Qn0sICAgICAgIFskdGlucHRyLCA6MTI4XSEKKwl2emlwLjE2CQlgJkRsbygiJEEweEIiKWAsYCZEaGkoIiRBMHhCIilgCisKKy5MTkVPTl90YWlsMjoKKwl2YWRkLnU2NAlgJkRsbygiJEExeEIiKWAsYCZEbG8oIiRBMXhCIilgLCR0ZW1wCisJdnN0MS4zMgkJe2AmRGxvKCIkQTB4QiIpYFswXX0sIFskdG91dHB0ciwgOjMyXSEKKwl2c2hyLnU2NAkkdGVtcCxgJkRsbygiJEExeEIiKWAsIzE2CisJdmFkZC51NjQJYCZEaGkoIiRBMXhCIilgLGAmRGhpKCIkQTF4QiIpYCwkdGVtcAorCXZzaHIudTY0CSR0ZW1wLGAmRGhpKCIkQTF4QiIpYCwjMTYKKwl2emlwLjE2CQlgJkRsbygiJEExeEIiKWAsYCZEaGkoIiRBMXhCIilgCisKKwl2YWRkLnU2NAlgJkRsbygiJEEyeEIiKWAsYCZEbG8oIiRBMnhCIilgLCR0ZW1wCisJdnN0MS4zMgkJe2AmRGxvKCIkQTF4QiIpYFswXX0sIFskdG91dHB0ciwgOjMyXSEKKwl2c2hyLnU2NAkkdGVtcCxgJkRsbygiJEEyeEIiKWAsIzE2CisJdmFkZC51NjQJYCZEaGkoIiRBMnhCIilgLGAmRGhpKCIkQTJ4QiIpYCwkdGVtcAorCXZzaHIudTY0CSR0ZW1wLGAmRGhpKCIkQTJ4QiIpYCwjMTYKKwl2emlwLjE2CQlgJkRsbygiJEEyeEIiKWAsYCZEaGkoIiRBMnhCIilgCisKKwl2YWRkLnU2NAlgJkRsbygiJEEzeEIiKWAsYCZEbG8oIiRBM3hCIilgLCR0ZW1wCisJdnN0MS4zMgkJe2AmRGxvKCIkQTJ4QiIpYFswXX0sIFskdG91dHB0ciwgOjMyXSEKKwl2c2hyLnU2NAkkdGVtcCxgJkRsbygiJEEzeEIiKWAsIzE2CisJdmFkZC51NjQJYCZEaGkoIiRBM3hCIilgLGAmRGhpKCIkQTN4QiIpYCwkdGVtcAorCXZzaHIudTY0CSR0ZW1wLGAmRGhpKCIkQTN4QiIpYCwjMTYKKwl2emlwLjE2CQlgJkRsbygiJEEzeEIiKWAsYCZEaGkoIiRBM3hCIilgCisKKwl2YWRkLnU2NAlgJkRsbygiJEE0eEIiKWAsYCZEbG8oIiRBNHhCIilgLCR0ZW1wCisJdnN0MS4zMgkJe2AmRGxvKCIkQTN4QiIpYFswXX0sIFskdG91dHB0ciwgOjMyXSEKKwl2c2hyLnU2NAkkdGVtcCxgJkRsbygiJEE0eEIiKWAsIzE2CisJdmFkZC51NjQJYCZEaGkoIiRBNHhCIilgLGAmRGhpKCIkQTR4QiIpYCwkdGVtcAorCXZzaHIudTY0CSR0ZW1wLGAmRGhpKCIkQTR4QiIpYCwjMTYKKwl2emlwLjE2CQlgJkRsbygiJEE0eEIiKWAsYCZEaGkoIiRBNHhCIilgCisKKwl2YWRkLnU2NAlgJkRsbygiJEE1eEIiKWAsYCZEbG8oIiRBNXhCIilgLCR0ZW1wCisJdnN0MS4zMgkJe2AmRGxvKCIkQTR4QiIpYFswXX0sIFskdG91dHB0ciwgOjMyXSEKKwl2c2hyLnU2NAkkdGVtcCxgJkRsbygiJEE1eEIiKWAsIzE2CisJdmFkZC51NjQJYCZEaGkoIiRBNXhCIilgLGAmRGhpKCIkQTV4QiIpYCwkdGVtcAorCXZzaHIudTY0CSR0ZW1wLGAmRGhpKCIkQTV4QiIpYCwjMTYKKwl2emlwLjE2CQlgJkRsbygiJEE1eEIiKWAsYCZEaGkoIiRBNXhCIilgCisKKwl2YWRkLnU2NAlgJkRsbygiJEE2eEIiKWAsYCZEbG8oIiRBNnhCIilgLCR0ZW1wCisJdnN0MS4zMgkJe2AmRGxvKCIkQTV4QiIpYFswXX0sIFskdG91dHB0ciwgOjMyXSEKKwl2c2hyLnU2NAkkdGVtcCxgJkRsbygiJEE2eEIiKWAsIzE2CisJdmFkZC51NjQJYCZEaGkoIiRBNnhCIilgLGAmRGhpKCIkQTZ4QiIpYCwkdGVtcAorCXZsZDEuNjQJCXskQTB4Qn0sIFskdGlucHRyLCA6MTI4XSEKKwl2c2hyLnU2NAkkdGVtcCxgJkRoaSgiJEE2eEIiKWAsIzE2CisJdnppcC4xNgkJYCZEbG8oIiRBNnhCIilgLGAmRGhpKCIkQTZ4QiIpYAorCisJdmFkZC51NjQJYCZEbG8oIiRBN3hCIilgLGAmRGxvKCIkQTd4QiIpYCwkdGVtcAorCXZzdDEuMzIJCXtgJkRsbygiJEE2eEIiKWBbMF19LCBbJHRvdXRwdHIsIDozMl0hCisJdnNoci51NjQJJHRlbXAsYCZEbG8oIiRBN3hCIilgLCMxNgorCXZhZGQudTY0CWAmRGhpKCIkQTd4QiIpYCxgJkRoaSgiJEE3eEIiKWAsJHRlbXAKKwl2bGQxLjY0CQl7JEExeEItJEEyeEJ9LAlbJHRpbnB0ciwgOjI1Nl0hCisJdnNoci51NjQJJHRlbXAsYCZEaGkoIiRBN3hCIilgLCMxNgorCXZ6aXAuMTYJCWAmRGxvKCIkQTd4QiIpYCxgJkRoaSgiJEE3eEIiKWAKKwlzdWJzCQkkaW5uZXIsJGlubmVyLCM4CisJdnN0MS4zMgkJe2AmRGxvKCIkQTd4QiIpYFswXX0sIFskdG91dHB0ciwgOjMyXSEKKworCWJuZQkuTE5FT05fdGFpbAorCisJdnN0MS4zMgl7JHt0ZW1wfVswXX0sIFskdG91dHB0ciwgOjMyXQkJQCB0b3AtbW9zdCBiaXQKKwlzdWIJJG5wdHIsJG5wdHIsJG51bSxsc2wjMgkJCUAgcmV3aW5kICRucHRyCisJc3VicwkkYXB0cixzcCwjMAkJCQlAIGNsZWFyIGNhcnJ5IGZsYWcKKwlhZGQJJGJwdHIsc3AsJG51bSxsc2wjMgorCisuTE5FT05fc3ViOgorCWxkbWlhCSRhcHRyISwge3I0LXI3fQorCWxkbWlhCSRucHRyISwge3I4LXIxMX0KKwlzYmNzCXI4LCByNCxyOAorCXNiY3MJcjksIHI1LHI5CisJc2JjcwlyMTAscjYscjEwCisJc2JjcwlyMTEscjcscjExCisJdGVxCSRhcHRyLCRicHRyCQkJCUAgcHJlc2VydmVzIGNhcnJ5CisJc3RtaWEJJHJwdHIhLCB7cjgtcjExfQorCWJuZQkuTE5FT05fc3ViCisKKwlsZHIJcjEwLCBbJGFwdHJdCQkJCUAgbG9hZCB0b3AtbW9zdCBiaXQKKwl2ZW9yCXEwLHEwLHEwCisJc3ViCXIxMSwkYnB0cixzcAkJCQlAIHRoaXMgaXMgbnVtKjQKKwl2ZW9yCXExLHExLHExCisJbW92CSRhcHRyLHNwCisJc3ViCSRycHRyLCRycHRyLHIxMQkJCQlAIHJld2luZCAkcnB0cgorCW1vdgkkbnB0ciwkYnB0cgkJCQlAIHNlY29uZCAzLzR0aCBvZiBmcmFtZQorCXNiY3MJcjEwLHIxMCwjMAkJCQlAIHJlc3VsdCBpcyBjYXJyeSBmbGFnCisKKy5MTkVPTl9jb3B5X25femFwOgorCWxkbWlhCSRhcHRyISwge3I0LXI3fQorCWxkbWlhCSRycHRyLCAge3I4LXIxMX0KKwltb3ZjYwlyOCwgcjQKKwl2c3QxLjY0CXtxMC1xMX0sIFskbnB0ciw6MjU2XSEJCQlAIHdpcGUKKwltb3ZjYwlyOSwgcjUKKwltb3ZjYwlyMTAscjYKKwl2c3QxLjY0CXtxMC1xMX0sIFskbnB0ciw6MjU2XSEJCQlAIHdpcGUKKwltb3ZjYwlyMTEscjcKKwlsZG1pYQkkYXB0ciwge3I0LXI3fQorCXN0bWlhCSRycHRyISwge3I4LXIxMX0KKwlzdWIJJGFwdHIsJGFwdHIsIzE2CisJbGRtaWEJJHJwdHIsIHtyOC1yMTF9CisJbW92Y2MJcjgsIHI0CisJdnN0MS42NAl7cTAtcTF9LCBbJGFwdHIsOjI1Nl0hCQkJQCB3aXBlCisJbW92Y2MJcjksIHI1CisJbW92Y2MJcjEwLHI2CisJdnN0MS42NAl7cTAtcTF9LCBbJG5wdHIsOjI1Nl0hCQkJQCB3aXBlCisJbW92Y2MJcjExLHI3CisJdGVxCSRhcHRyLCRicHRyCQkJCUAgcHJlc2VydmVzIGNhcnJ5CisJc3RtaWEJJHJwdHIhLCB7cjgtcjExfQorCWJuZQkuTE5FT05fY29weV9uX3phcAorCisJc3ViCXNwLGlwLCM5NgorICAgICAgICB2bGRtaWEgIHNwISx7ZDgtZDE1fQorICAgICAgICBsZG1pYSAgIHNwISx7cjQtcjExfQorCXJldAkJCQkJCUAgYnggbHIKKy5zaXplCWJuX211bDh4X21vbnRfbmVvbiwuLWJuX211bDh4X21vbnRfbmVvbgorI2VuZGlmCitfX18KK30KKyRjb2RlLj08PF9fXzsKKy5hc2NpegkiTW9udGdvbWVyeSBtdWx0aXBsaWNhdGlvbiBmb3IgQVJNdjQvTkVPTiwgQ1JZUFRPR0FNUyBieSA8YXBwcm9cQG9wZW5zc2wub3JnPiIKIC5hbGlnbgkyCisjaWYgX19BUk1fQVJDSF9fPj03CisuY29tbQlPUEVOU1NMX2FybWNhcF9QLDQsNAorI2VuZGlmCiBfX18KIAorJGNvZGUgPX4gcy9cYChbXlxgXSopXGAvZXZhbCAkMS9nZW07CiAkY29kZSA9fiBzL1xiYnhccytsclxiLy53b3JkXHQweGUxMmZmZjFlL2dtOwkjIG1ha2UgaXQgcG9zc2libGUgdG8gY29tcGlsZSB3aXRoIC1tYXJjaD1hcm12NAorJGNvZGUgPX4gcy9cYnJldFxiL2J4CWxyL2dtOwogcHJpbnQgJGNvZGU7CiBjbG9zZSBTVERPVVQ7CmRpZmYgLS1naXQgYS9jcnlwdG8vYm4vYXNtL2JuLTU4Ni5TIGIvY3J5cHRvL2JuL2FzbS9ibi01ODYuUwppbmRleCBmZTg3M2NlLi42NjY5NWUyIDEwMDY0NAotLS0gYS9jcnlwdG8vYm4vYXNtL2JuLTU4Ni5TCisrKyBiL2NyeXB0by9ibi9hc20vYm4tNTg2LlMKQEAgLTUsNiArNSwxMDMgQEAKIC5hbGlnbgkxNgogYm5fbXVsX2FkZF93b3JkczoKIC5MX2JuX211bF9hZGRfd29yZHNfYmVnaW46CisJY2FsbAkuTDAwMFBJQ19tZV91cAorLkwwMDBQSUNfbWVfdXA6CisJcG9wbAklZWF4CisJbGVhbAlfR0xPQkFMX09GRlNFVF9UQUJMRV8rWy4tLkwwMDBQSUNfbWVfdXBdKCVlYXgpLCVlYXgKKwltb3ZsCU9QRU5TU0xfaWEzMmNhcF9QQEdPVCglZWF4KSwlZWF4CisJYnRsCSQyNiwoJWVheCkKKwlqbmMJLkwwMDFtYXdfbm9uX3NzZTIKKwltb3ZsCTQoJWVzcCksJWVheAorCW1vdmwJOCglZXNwKSwlZWR4CisJbW92bAkxMiglZXNwKSwlZWN4CisJbW92ZAkxNiglZXNwKSwlbW0wCisJcHhvcgklbW0xLCVtbTEKKwlqbXAJLkwwMDJtYXdfc3NlMl9lbnRyeQorLmFsaWduCTE2CisuTDAwM21hd19zc2UyX3Vucm9sbGVkOgorCW1vdmQJKCVlYXgpLCVtbTMKKwlwYWRkcQklbW0zLCVtbTEKKwltb3ZkCSglZWR4KSwlbW0yCisJcG11bHVkcQklbW0wLCVtbTIKKwltb3ZkCTQoJWVkeCksJW1tNAorCXBtdWx1ZHEJJW1tMCwlbW00CisJbW92ZAk4KCVlZHgpLCVtbTYKKwlwbXVsdWRxCSVtbTAsJW1tNgorCW1vdmQJMTIoJWVkeCksJW1tNworCXBtdWx1ZHEJJW1tMCwlbW03CisJcGFkZHEJJW1tMiwlbW0xCisJbW92ZAk0KCVlYXgpLCVtbTMKKwlwYWRkcQklbW00LCVtbTMKKwltb3ZkCTgoJWVheCksJW1tNQorCXBhZGRxCSVtbTYsJW1tNQorCW1vdmQJMTIoJWVheCksJW1tNAorCXBhZGRxCSVtbTQsJW1tNworCW1vdmQJJW1tMSwoJWVheCkKKwltb3ZkCTE2KCVlZHgpLCVtbTIKKwlwbXVsdWRxCSVtbTAsJW1tMgorCXBzcmxxCSQzMiwlbW0xCisJbW92ZAkyMCglZWR4KSwlbW00CisJcG11bHVkcQklbW0wLCVtbTQKKwlwYWRkcQklbW0zLCVtbTEKKwltb3ZkCTI0KCVlZHgpLCVtbTYKKwlwbXVsdWRxCSVtbTAsJW1tNgorCW1vdmQJJW1tMSw0KCVlYXgpCisJcHNybHEJJDMyLCVtbTEKKwltb3ZkCTI4KCVlZHgpLCVtbTMKKwlhZGRsCSQzMiwlZWR4CisJcG11bHVkcQklbW0wLCVtbTMKKwlwYWRkcQklbW01LCVtbTEKKwltb3ZkCTE2KCVlYXgpLCVtbTUKKwlwYWRkcQklbW01LCVtbTIKKwltb3ZkCSVtbTEsOCglZWF4KQorCXBzcmxxCSQzMiwlbW0xCisJcGFkZHEJJW1tNywlbW0xCisJbW92ZAkyMCglZWF4KSwlbW01CisJcGFkZHEJJW1tNSwlbW00CisJbW92ZAklbW0xLDEyKCVlYXgpCisJcHNybHEJJDMyLCVtbTEKKwlwYWRkcQklbW0yLCVtbTEKKwltb3ZkCTI0KCVlYXgpLCVtbTUKKwlwYWRkcQklbW01LCVtbTYKKwltb3ZkCSVtbTEsMTYoJWVheCkKKwlwc3JscQkkMzIsJW1tMQorCXBhZGRxCSVtbTQsJW1tMQorCW1vdmQJMjgoJWVheCksJW1tNQorCXBhZGRxCSVtbTUsJW1tMworCW1vdmQJJW1tMSwyMCglZWF4KQorCXBzcmxxCSQzMiwlbW0xCisJcGFkZHEJJW1tNiwlbW0xCisJbW92ZAklbW0xLDI0KCVlYXgpCisJcHNybHEJJDMyLCVtbTEKKwlwYWRkcQklbW0zLCVtbTEKKwltb3ZkCSVtbTEsMjgoJWVheCkKKwlsZWFsCTMyKCVlYXgpLCVlYXgKKwlwc3JscQkkMzIsJW1tMQorCXN1YmwJJDgsJWVjeAorCWp6CS5MMDA0bWF3X3NzZTJfZXhpdAorLkwwMDJtYXdfc3NlMl9lbnRyeToKKwl0ZXN0bAkkNDI5NDk2NzI4OCwlZWN4CisJam56CS5MMDAzbWF3X3NzZTJfdW5yb2xsZWQKKy5hbGlnbgk0CisuTDAwNW1hd19zc2UyX2xvb3A6CisJbW92ZAkoJWVkeCksJW1tMgorCW1vdmQJKCVlYXgpLCVtbTMKKwlwbXVsdWRxCSVtbTAsJW1tMgorCWxlYWwJNCglZWR4KSwlZWR4CisJcGFkZHEJJW1tMywlbW0xCisJcGFkZHEJJW1tMiwlbW0xCisJbW92ZAklbW0xLCglZWF4KQorCXN1YmwJJDEsJWVjeAorCXBzcmxxCSQzMiwlbW0xCisJbGVhbAk0KCVlYXgpLCVlYXgKKwlqbnoJLkwwMDVtYXdfc3NlMl9sb29wCisuTDAwNG1hd19zc2UyX2V4aXQ6CisJbW92ZAklbW0xLCVlYXgKKwllbW1zCisJcmV0CisuYWxpZ24JMTYKKy5MMDAxbWF3X25vbl9zc2UyOgogCXB1c2hsCSVlYnAKIAlwdXNobAklZWJ4CiAJcHVzaGwJJWVzaQpAQCAtMTcsOSArMTE0LDkgQEAKIAlhbmRsCSQ0Mjk0OTY3Mjg4LCVlY3gKIAltb3ZsCTMyKCVlc3ApLCVlYnAKIAlwdXNobAklZWN4Ci0JanoJLkwwMDBtYXdfZmluaXNoCisJanoJLkwwMDZtYXdfZmluaXNoCiAuYWxpZ24JMTYKLS5MMDAxbWF3X2xvb3A6CisuTDAwN21hd19sb29wOgogCiAJbW92bAkoJWVieCksJWVheAogCW11bGwJJWVicApAQCAtOTYsMTMgKzE5MywxMyBAQAogCXN1YmwJJDgsJWVjeAogCWxlYWwJMzIoJWVieCksJWVieAogCWxlYWwJMzIoJWVkaSksJWVkaQotCWpuegkuTDAwMW1hd19sb29wCi0uTDAwMG1hd19maW5pc2g6CisJam56CS5MMDA3bWF3X2xvb3AKKy5MMDA2bWF3X2ZpbmlzaDoKIAltb3ZsCTMyKCVlc3ApLCVlY3gKIAlhbmRsCSQ3LCVlY3gKLQlqbnoJLkwwMDJtYXdfZmluaXNoMgotCWptcAkuTDAwM21hd19lbmQKLS5MMDAybWF3X2ZpbmlzaDI6CisJam56CS5MMDA4bWF3X2ZpbmlzaDIKKwlqbXAJLkwwMDltYXdfZW5kCisuTDAwOG1hd19maW5pc2gyOgogCiAJbW92bAkoJWVieCksJWVheAogCW11bGwJJWVicApAQCAtMTEzLDcgKzIxMCw3IEBACiAJZGVjbAklZWN4CiAJbW92bAklZWF4LCglZWRpKQogCW1vdmwJJWVkeCwlZXNpCi0JanoJLkwwMDNtYXdfZW5kCisJanoJLkwwMDltYXdfZW5kCiAKIAltb3ZsCTQoJWVieCksJWVheAogCW11bGwJJWVicApAQCAtMTI0LDcgKzIyMSw3IEBACiAJZGVjbAklZWN4CiAJbW92bAklZWF4LDQoJWVkaSkKIAltb3ZsCSVlZHgsJWVzaQotCWp6CS5MMDAzbWF3X2VuZAorCWp6CS5MMDA5bWF3X2VuZAogCiAJbW92bAk4KCVlYngpLCVlYXgKIAltdWxsCSVlYnAKQEAgLTEzNSw3ICsyMzIsNyBAQAogCWRlY2wJJWVjeAogCW1vdmwJJWVheCw4KCVlZGkpCiAJbW92bAklZWR4LCVlc2kKLQlqegkuTDAwM21hd19lbmQKKwlqegkuTDAwOW1hd19lbmQKIAogCW1vdmwJMTIoJWVieCksJWVheAogCW11bGwJJWVicApAQCAtMTQ2LDcgKzI0Myw3IEBACiAJZGVjbAklZWN4CiAJbW92bAklZWF4LDEyKCVlZGkpCiAJbW92bAklZWR4LCVlc2kKLQlqegkuTDAwM21hd19lbmQKKwlqegkuTDAwOW1hd19lbmQKIAogCW1vdmwJMTYoJWVieCksJWVheAogCW11bGwJJWVicApAQCAtMTU3LDcgKzI1NCw3IEBACiAJZGVjbAklZWN4CiAJbW92bAklZWF4LDE2KCVlZGkpCiAJbW92bAklZWR4LCVlc2kKLQlqegkuTDAwM21hd19lbmQKKwlqegkuTDAwOW1hd19lbmQKIAogCW1vdmwJMjAoJWVieCksJWVheAogCW11bGwJJWVicApAQCAtMTY4LDcgKzI2NSw3IEBACiAJZGVjbAklZWN4CiAJbW92bAklZWF4LDIwKCVlZGkpCiAJbW92bAklZWR4LCVlc2kKLQlqegkuTDAwM21hd19lbmQKKwlqegkuTDAwOW1hd19lbmQKIAogCW1vdmwJMjQoJWVieCksJWVheAogCW11bGwJJWVicApAQCAtMTc4LDcgKzI3NSw3IEBACiAJYWRjbAkkMCwlZWR4CiAJbW92bAklZWF4LDI0KCVlZGkpCiAJbW92bAklZWR4LCVlc2kKLS5MMDAzbWF3X2VuZDoKKy5MMDA5bWF3X2VuZDoKIAltb3ZsCSVlc2ksJWVheAogCXBvcGwJJWVjeAogCXBvcGwJJWVkaQpAQCAtMTkyLDYgKzI4OSwzNCBAQAogLmFsaWduCTE2CiBibl9tdWxfd29yZHM6CiAuTF9ibl9tdWxfd29yZHNfYmVnaW46CisJY2FsbAkuTDAxMFBJQ19tZV91cAorLkwwMTBQSUNfbWVfdXA6CisJcG9wbAklZWF4CisJbGVhbAlfR0xPQkFMX09GRlNFVF9UQUJMRV8rWy4tLkwwMTBQSUNfbWVfdXBdKCVlYXgpLCVlYXgKKwltb3ZsCU9QRU5TU0xfaWEzMmNhcF9QQEdPVCglZWF4KSwlZWF4CisJYnRsCSQyNiwoJWVheCkKKwlqbmMJLkwwMTFtd19ub25fc3NlMgorCW1vdmwJNCglZXNwKSwlZWF4CisJbW92bAk4KCVlc3ApLCVlZHgKKwltb3ZsCTEyKCVlc3ApLCVlY3gKKwltb3ZkCTE2KCVlc3ApLCVtbTAKKwlweG9yCSVtbTEsJW1tMQorLmFsaWduCTE2CisuTDAxMm13X3NzZTJfbG9vcDoKKwltb3ZkCSglZWR4KSwlbW0yCisJcG11bHVkcQklbW0wLCVtbTIKKwlsZWFsCTQoJWVkeCksJWVkeAorCXBhZGRxCSVtbTIsJW1tMQorCW1vdmQJJW1tMSwoJWVheCkKKwlzdWJsCSQxLCVlY3gKKwlwc3JscQkkMzIsJW1tMQorCWxlYWwJNCglZWF4KSwlZWF4CisJam56CS5MMDEybXdfc3NlMl9sb29wCisJbW92ZAklbW0xLCVlYXgKKwllbW1zCisJcmV0CisuYWxpZ24JMTYKKy5MMDExbXdfbm9uX3NzZTI6CiAJcHVzaGwJJWVicAogCXB1c2hsCSVlYngKIAlwdXNobAklZXNpCkBAIC0yMDMsOCArMzI4LDggQEAKIAltb3ZsCTI4KCVlc3ApLCVlYnAKIAltb3ZsCTMyKCVlc3ApLCVlY3gKIAlhbmRsCSQ0Mjk0OTY3Mjg4LCVlYnAKLQlqegkuTDAwNG13X2ZpbmlzaAotLkwwMDVtd19sb29wOgorCWp6CS5MMDEzbXdfZmluaXNoCisuTDAxNG13X2xvb3A6CiAKIAltb3ZsCSglZWJ4KSwlZWF4CiAJbXVsbAklZWN4CkBAIC0yNjUsMTQgKzM5MCwxNCBAQAogCWFkZGwJJDMyLCVlYngKIAlhZGRsCSQzMiwlZWRpCiAJc3VibAkkOCwlZWJwCi0JanoJLkwwMDRtd19maW5pc2gKLQlqbXAJLkwwMDVtd19sb29wCi0uTDAwNG13X2ZpbmlzaDoKKwlqegkuTDAxM213X2ZpbmlzaAorCWptcAkuTDAxNG13X2xvb3AKKy5MMDEzbXdfZmluaXNoOgogCW1vdmwJMjgoJWVzcCksJWVicAogCWFuZGwJJDcsJWVicAotCWpuegkuTDAwNm13X2ZpbmlzaDIKLQlqbXAJLkwwMDdtd19lbmQKLS5MMDA2bXdfZmluaXNoMjoKKwlqbnoJLkwwMTVtd19maW5pc2gyCisJam1wCS5MMDE2bXdfZW5kCisuTDAxNW13X2ZpbmlzaDI6CiAKIAltb3ZsCSglZWJ4KSwlZWF4CiAJbXVsbAklZWN4CkBAIC0yODEsNyArNDA2LDcgQEAKIAltb3ZsCSVlYXgsKCVlZGkpCiAJbW92bAklZWR4LCVlc2kKIAlkZWNsCSVlYnAKLQlqegkuTDAwN213X2VuZAorCWp6CS5MMDE2bXdfZW5kCiAKIAltb3ZsCTQoJWVieCksJWVheAogCW11bGwJJWVjeApAQCAtMjkwLDcgKzQxNSw3IEBACiAJbW92bAklZWF4LDQoJWVkaSkKIAltb3ZsCSVlZHgsJWVzaQogCWRlY2wJJWVicAotCWp6CS5MMDA3bXdfZW5kCisJanoJLkwwMTZtd19lbmQKIAogCW1vdmwJOCglZWJ4KSwlZWF4CiAJbXVsbAklZWN4CkBAIC0yOTksNyArNDI0LDcgQEAKIAltb3ZsCSVlYXgsOCglZWRpKQogCW1vdmwJJWVkeCwlZXNpCiAJZGVjbAklZWJwCi0JanoJLkwwMDdtd19lbmQKKwlqegkuTDAxNm13X2VuZAogCiAJbW92bAkxMiglZWJ4KSwlZWF4CiAJbXVsbAklZWN4CkBAIC0zMDgsNyArNDMzLDcgQEAKIAltb3ZsCSVlYXgsMTIoJWVkaSkKIAltb3ZsCSVlZHgsJWVzaQogCWRlY2wJJWVicAotCWp6CS5MMDA3bXdfZW5kCisJanoJLkwwMTZtd19lbmQKIAogCW1vdmwJMTYoJWVieCksJWVheAogCW11bGwJJWVjeApAQCAtMzE3LDcgKzQ0Miw3IEBACiAJbW92bAklZWF4LDE2KCVlZGkpCiAJbW92bAklZWR4LCVlc2kKIAlkZWNsCSVlYnAKLQlqegkuTDAwN213X2VuZAorCWp6CS5MMDE2bXdfZW5kCiAKIAltb3ZsCTIwKCVlYngpLCVlYXgKIAltdWxsCSVlY3gKQEAgLTMyNiw3ICs0NTEsNyBAQAogCW1vdmwJJWVheCwyMCglZWRpKQogCW1vdmwJJWVkeCwlZXNpCiAJZGVjbAklZWJwCi0JanoJLkwwMDdtd19lbmQKKwlqegkuTDAxNm13X2VuZAogCiAJbW92bAkyNCglZWJ4KSwlZWF4CiAJbXVsbAklZWN4CkBAIC0zMzQsNyArNDU5LDcgQEAKIAlhZGNsCSQwLCVlZHgKIAltb3ZsCSVlYXgsMjQoJWVkaSkKIAltb3ZsCSVlZHgsJWVzaQotLkwwMDdtd19lbmQ6CisuTDAxNm13X2VuZDoKIAltb3ZsCSVlc2ksJWVheAogCXBvcGwJJWVkaQogCXBvcGwJJWVzaQpAQCAtMzQ3LDYgKzQ3MiwyOSBAQAogLmFsaWduCTE2CiBibl9zcXJfd29yZHM6CiAuTF9ibl9zcXJfd29yZHNfYmVnaW46CisJY2FsbAkuTDAxN1BJQ19tZV91cAorLkwwMTdQSUNfbWVfdXA6CisJcG9wbAklZWF4CisJbGVhbAlfR0xPQkFMX09GRlNFVF9UQUJMRV8rWy4tLkwwMTdQSUNfbWVfdXBdKCVlYXgpLCVlYXgKKwltb3ZsCU9QRU5TU0xfaWEzMmNhcF9QQEdPVCglZWF4KSwlZWF4CisJYnRsCSQyNiwoJWVheCkKKwlqbmMJLkwwMThzcXJfbm9uX3NzZTIKKwltb3ZsCTQoJWVzcCksJWVheAorCW1vdmwJOCglZXNwKSwlZWR4CisJbW92bAkxMiglZXNwKSwlZWN4CisuYWxpZ24JMTYKKy5MMDE5c3FyX3NzZTJfbG9vcDoKKwltb3ZkCSglZWR4KSwlbW0wCisJcG11bHVkcQklbW0wLCVtbTAKKwlsZWFsCTQoJWVkeCksJWVkeAorCW1vdnEJJW1tMCwoJWVheCkKKwlzdWJsCSQxLCVlY3gKKwlsZWFsCTgoJWVheCksJWVheAorCWpuegkuTDAxOXNxcl9zc2UyX2xvb3AKKwllbW1zCisJcmV0CisuYWxpZ24JMTYKKy5MMDE4c3FyX25vbl9zc2UyOgogCXB1c2hsCSVlYnAKIAlwdXNobAklZWJ4CiAJcHVzaGwJJWVzaQpAQCAtMzU2LDggKzUwNCw4IEBACiAJbW92bAkyNCglZXNwKSwlZWRpCiAJbW92bAkyOCglZXNwKSwlZWJ4CiAJYW5kbAkkNDI5NDk2NzI4OCwlZWJ4Ci0JanoJLkwwMDhzd19maW5pc2gKLS5MMDA5c3dfbG9vcDoKKwlqegkuTDAyMHN3X2ZpbmlzaAorLkwwMjFzd19sb29wOgogCiAJbW92bAkoJWVkaSksJWVheAogCW11bGwJJWVheApAQCAtNDAyLDU5ICs1NTAsNTkgQEAKIAlhZGRsCSQzMiwlZWRpCiAJYWRkbAkkNjQsJWVzaQogCXN1YmwJJDgsJWVieAotCWpuegkuTDAwOXN3X2xvb3AKLS5MMDA4c3dfZmluaXNoOgorCWpuegkuTDAyMXN3X2xvb3AKKy5MMDIwc3dfZmluaXNoOgogCW1vdmwJMjgoJWVzcCksJWVieAogCWFuZGwJJDcsJWVieAotCWp6CS5MMDEwc3dfZW5kCisJanoJLkwwMjJzd19lbmQKIAogCW1vdmwJKCVlZGkpLCVlYXgKIAltdWxsCSVlYXgKIAltb3ZsCSVlYXgsKCVlc2kpCiAJZGVjbAklZWJ4CiAJbW92bAklZWR4LDQoJWVzaSkKLQlqegkuTDAxMHN3X2VuZAorCWp6CS5MMDIyc3dfZW5kCiAKIAltb3ZsCTQoJWVkaSksJWVheAogCW11bGwJJWVheAogCW1vdmwJJWVheCw4KCVlc2kpCiAJZGVjbAklZWJ4CiAJbW92bAklZWR4LDEyKCVlc2kpCi0JanoJLkwwMTBzd19lbmQKKwlqegkuTDAyMnN3X2VuZAogCiAJbW92bAk4KCVlZGkpLCVlYXgKIAltdWxsCSVlYXgKIAltb3ZsCSVlYXgsMTYoJWVzaSkKIAlkZWNsCSVlYngKIAltb3ZsCSVlZHgsMjAoJWVzaSkKLQlqegkuTDAxMHN3X2VuZAorCWp6CS5MMDIyc3dfZW5kCiAKIAltb3ZsCTEyKCVlZGkpLCVlYXgKIAltdWxsCSVlYXgKIAltb3ZsCSVlYXgsMjQoJWVzaSkKIAlkZWNsCSVlYngKIAltb3ZsCSVlZHgsMjgoJWVzaSkKLQlqegkuTDAxMHN3X2VuZAorCWp6CS5MMDIyc3dfZW5kCiAKIAltb3ZsCTE2KCVlZGkpLCVlYXgKIAltdWxsCSVlYXgKIAltb3ZsCSVlYXgsMzIoJWVzaSkKIAlkZWNsCSVlYngKIAltb3ZsCSVlZHgsMzYoJWVzaSkKLQlqegkuTDAxMHN3X2VuZAorCWp6CS5MMDIyc3dfZW5kCiAKIAltb3ZsCTIwKCVlZGkpLCVlYXgKIAltdWxsCSVlYXgKIAltb3ZsCSVlYXgsNDAoJWVzaSkKIAlkZWNsCSVlYngKIAltb3ZsCSVlZHgsNDQoJWVzaSkKLQlqegkuTDAxMHN3X2VuZAorCWp6CS5MMDIyc3dfZW5kCiAKIAltb3ZsCTI0KCVlZGkpLCVlYXgKIAltdWxsCSVlYXgKIAltb3ZsCSVlYXgsNDgoJWVzaSkKIAltb3ZsCSVlZHgsNTIoJWVzaSkKLS5MMDEwc3dfZW5kOgorLkwwMjJzd19lbmQ6CiAJcG9wbAklZWRpCiAJcG9wbAklZXNpCiAJcG9wbAklZWJ4CkBAIC00ODgsOCArNjM2LDggQEAKIAltb3ZsCTMyKCVlc3ApLCVlYnAKIAl4b3JsCSVlYXgsJWVheAogCWFuZGwJJDQyOTQ5NjcyODgsJWVicAotCWp6CS5MMDExYXdfZmluaXNoCi0uTDAxMmF3X2xvb3A6CisJanoJLkwwMjNhd19maW5pc2gKKy5MMDI0YXdfbG9vcDoKIAogCW1vdmwJKCVlc2kpLCVlY3gKIAltb3ZsCSglZWRpKSwlZWR4CkBAIC01NjcsMTEgKzcxNSwxMSBAQAogCWFkZGwJJDMyLCVlZGkKIAlhZGRsCSQzMiwlZWJ4CiAJc3VibAkkOCwlZWJwCi0Jam56CS5MMDEyYXdfbG9vcAotLkwwMTFhd19maW5pc2g6CisJam56CS5MMDI0YXdfbG9vcAorLkwwMjNhd19maW5pc2g6CiAJbW92bAkzMiglZXNwKSwlZWJwCiAJYW5kbAkkNywlZWJwCi0JanoJLkwwMTNhd19lbmQKKwlqegkuTDAyNWF3X2VuZAogCiAJbW92bAkoJWVzaSksJWVjeAogCW1vdmwJKCVlZGkpLCVlZHgKQEAgLTU4Miw3ICs3MzAsNyBAQAogCWFkY2wJJDAsJWVheAogCWRlY2wJJWVicAogCW1vdmwJJWVjeCwoJWVieCkKLQlqegkuTDAxM2F3X2VuZAorCWp6CS5MMDI1YXdfZW5kCiAKIAltb3ZsCTQoJWVzaSksJWVjeAogCW1vdmwJNCglZWRpKSwlZWR4CkBAIC01OTMsNyArNzQxLDcgQEAKIAlhZGNsCSQwLCVlYXgKIAlkZWNsCSVlYnAKIAltb3ZsCSVlY3gsNCglZWJ4KQotCWp6CS5MMDEzYXdfZW5kCisJanoJLkwwMjVhd19lbmQKIAogCW1vdmwJOCglZXNpKSwlZWN4CiAJbW92bAk4KCVlZGkpLCVlZHgKQEAgLTYwNCw3ICs3NTIsNyBAQAogCWFkY2wJJDAsJWVheAogCWRlY2wJJWVicAogCW1vdmwJJWVjeCw4KCVlYngpCi0JanoJLkwwMTNhd19lbmQKKwlqegkuTDAyNWF3X2VuZAogCiAJbW92bAkxMiglZXNpKSwlZWN4CiAJbW92bAkxMiglZWRpKSwlZWR4CkBAIC02MTUsNyArNzYzLDcgQEAKIAlhZGNsCSQwLCVlYXgKIAlkZWNsCSVlYnAKIAltb3ZsCSVlY3gsMTIoJWVieCkKLQlqegkuTDAxM2F3X2VuZAorCWp6CS5MMDI1YXdfZW5kCiAKIAltb3ZsCTE2KCVlc2kpLCVlY3gKIAltb3ZsCTE2KCVlZGkpLCVlZHgKQEAgLTYyNiw3ICs3NzQsNyBAQAogCWFkY2wJJDAsJWVheAogCWRlY2wJJWVicAogCW1vdmwJJWVjeCwxNiglZWJ4KQotCWp6CS5MMDEzYXdfZW5kCisJanoJLkwwMjVhd19lbmQKIAogCW1vdmwJMjAoJWVzaSksJWVjeAogCW1vdmwJMjAoJWVkaSksJWVkeApAQCAtNjM3LDcgKzc4NSw3IEBACiAJYWRjbAkkMCwlZWF4CiAJZGVjbAklZWJwCiAJbW92bAklZWN4LDIwKCVlYngpCi0JanoJLkwwMTNhd19lbmQKKwlqegkuTDAyNWF3X2VuZAogCiAJbW92bAkyNCglZXNpKSwlZWN4CiAJbW92bAkyNCglZWRpKSwlZWR4CkBAIC02NDcsNyArNzk1LDcgQEAKIAlhZGRsCSVlZHgsJWVjeAogCWFkY2wJJDAsJWVheAogCW1vdmwJJWVjeCwyNCglZWJ4KQotLkwwMTNhd19lbmQ6CisuTDAyNWF3X2VuZDoKIAlwb3BsCSVlZGkKIAlwb3BsCSVlc2kKIAlwb3BsCSVlYngKQEAgLTY3MCw4ICs4MTgsOCBAQAogCW1vdmwJMzIoJWVzcCksJWVicAogCXhvcmwJJWVheCwlZWF4CiAJYW5kbAkkNDI5NDk2NzI4OCwlZWJwCi0JanoJLkwwMTRhd19maW5pc2gKLS5MMDE1YXdfbG9vcDoKKwlqegkuTDAyNmF3X2ZpbmlzaAorLkwwMjdhd19sb29wOgogCiAJbW92bAkoJWVzaSksJWVjeAogCW1vdmwJKCVlZGkpLCVlZHgKQEAgLTc0OSwxMSArODk3LDExIEBACiAJYWRkbAkkMzIsJWVkaQogCWFkZGwJJDMyLCVlYngKIAlzdWJsCSQ4LCVlYnAKLQlqbnoJLkwwMTVhd19sb29wCi0uTDAxNGF3X2ZpbmlzaDoKKwlqbnoJLkwwMjdhd19sb29wCisuTDAyNmF3X2ZpbmlzaDoKIAltb3ZsCTMyKCVlc3ApLCVlYnAKIAlhbmRsCSQ3LCVlYnAKLQlqegkuTDAxNmF3X2VuZAorCWp6CS5MMDI4YXdfZW5kCiAKIAltb3ZsCSglZXNpKSwlZWN4CiAJbW92bAkoJWVkaSksJWVkeApAQCAtNzY0LDcgKzkxMiw3IEBACiAJYWRjbAkkMCwlZWF4CiAJZGVjbAklZWJwCiAJbW92bAklZWN4LCglZWJ4KQotCWp6CS5MMDE2YXdfZW5kCisJanoJLkwwMjhhd19lbmQKIAogCW1vdmwJNCglZXNpKSwlZWN4CiAJbW92bAk0KCVlZGkpLCVlZHgKQEAgLTc3NSw3ICs5MjMsNyBAQAogCWFkY2wJJDAsJWVheAogCWRlY2wJJWVicAogCW1vdmwJJWVjeCw0KCVlYngpCi0JanoJLkwwMTZhd19lbmQKKwlqegkuTDAyOGF3X2VuZAogCiAJbW92bAk4KCVlc2kpLCVlY3gKIAltb3ZsCTgoJWVkaSksJWVkeApAQCAtNzg2LDcgKzkzNCw3IEBACiAJYWRjbAkkMCwlZWF4CiAJZGVjbAklZWJwCiAJbW92bAklZWN4LDgoJWVieCkKLQlqegkuTDAxNmF3X2VuZAorCWp6CS5MMDI4YXdfZW5kCiAKIAltb3ZsCTEyKCVlc2kpLCVlY3gKIAltb3ZsCTEyKCVlZGkpLCVlZHgKQEAgLTc5Nyw3ICs5NDUsNyBAQAogCWFkY2wJJDAsJWVheAogCWRlY2wJJWVicAogCW1vdmwJJWVjeCwxMiglZWJ4KQotCWp6CS5MMDE2YXdfZW5kCisJanoJLkwwMjhhd19lbmQKIAogCW1vdmwJMTYoJWVzaSksJWVjeAogCW1vdmwJMTYoJWVkaSksJWVkeApAQCAtODA4LDcgKzk1Niw3IEBACiAJYWRjbAkkMCwlZWF4CiAJZGVjbAklZWJwCiAJbW92bAklZWN4LDE2KCVlYngpCi0JanoJLkwwMTZhd19lbmQKKwlqegkuTDAyOGF3X2VuZAogCiAJbW92bAkyMCglZXNpKSwlZWN4CiAJbW92bAkyMCglZWRpKSwlZWR4CkBAIC04MTksNyArOTY3LDcgQEAKIAlhZGNsCSQwLCVlYXgKIAlkZWNsCSVlYnAKIAltb3ZsCSVlY3gsMjAoJWVieCkKLQlqegkuTDAxNmF3X2VuZAorCWp6CS5MMDI4YXdfZW5kCiAKIAltb3ZsCTI0KCVlc2kpLCVlY3gKIAltb3ZsCTI0KCVlZGkpLCVlZHgKQEAgLTgyOSw3ICs5NzcsNyBAQAogCXN1YmwJJWVkeCwlZWN4CiAJYWRjbAkkMCwlZWF4CiAJbW92bAklZWN4LDI0KCVlYngpCi0uTDAxNmF3X2VuZDoKKy5MMDI4YXdfZW5kOgogCXBvcGwJJWVkaQogCXBvcGwJJWVzaQogCXBvcGwJJWVieApAQCAtODUyLDggKzEwMDAsOCBAQAogCW1vdmwJMzIoJWVzcCksJWVicAogCXhvcmwJJWVheCwlZWF4CiAJYW5kbAkkNDI5NDk2NzI4OCwlZWJwCi0JanoJLkwwMTdhd19maW5pc2gKLS5MMDE4YXdfbG9vcDoKKwlqegkuTDAyOWF3X2ZpbmlzaAorLkwwMzBhd19sb29wOgogCiAJbW92bAkoJWVzaSksJWVjeAogCW1vdmwJKCVlZGkpLCVlZHgKQEAgLTkzMSwxMSArMTA3OSwxMSBAQAogCWFkZGwJJDMyLCVlZGkKIAlhZGRsCSQzMiwlZWJ4CiAJc3VibAkkOCwlZWJwCi0Jam56CS5MMDE4YXdfbG9vcAotLkwwMTdhd19maW5pc2g6CisJam56CS5MMDMwYXdfbG9vcAorLkwwMjlhd19maW5pc2g6CiAJbW92bAkzMiglZXNwKSwlZWJwCiAJYW5kbAkkNywlZWJwCi0JanoJLkwwMTlhd19lbmQKKwlqegkuTDAzMWF3X2VuZAogCiAJbW92bAkoJWVzaSksJWVjeAogCW1vdmwJKCVlZGkpLCVlZHgKQEAgLTk0OSw3ICsxMDk3LDcgQEAKIAlhZGRsCSQ0LCVlZGkKIAlhZGRsCSQ0LCVlYngKIAlkZWNsCSVlYnAKLQlqegkuTDAxOWF3X2VuZAorCWp6CS5MMDMxYXdfZW5kCiAKIAltb3ZsCSglZXNpKSwlZWN4CiAJbW92bAkoJWVkaSksJWVkeApAQCAtOTYzLDcgKzExMTEsNyBAQAogCWFkZGwJJDQsJWVkaQogCWFkZGwJJDQsJWVieAogCWRlY2wJJWVicAotCWp6CS5MMDE5YXdfZW5kCisJanoJLkwwMzFhd19lbmQKIAogCW1vdmwJKCVlc2kpLCVlY3gKIAltb3ZsCSglZWRpKSwlZWR4CkBAIC05NzcsNyArMTEyNSw3IEBACiAJYWRkbAkkNCwlZWRpCiAJYWRkbAkkNCwlZWJ4CiAJZGVjbAklZWJwCi0JanoJLkwwMTlhd19lbmQKKwlqegkuTDAzMWF3X2VuZAogCiAJbW92bAkoJWVzaSksJWVjeAogCW1vdmwJKCVlZGkpLCVlZHgKQEAgLTk5MSw3ICsxMTM5LDcgQEAKIAlhZGRsCSQ0LCVlZGkKIAlhZGRsCSQ0LCVlYngKIAlkZWNsCSVlYnAKLQlqegkuTDAxOWF3X2VuZAorCWp6CS5MMDMxYXdfZW5kCiAKIAltb3ZsCSglZXNpKSwlZWN4CiAJbW92bAkoJWVkaSksJWVkeApAQCAtMTAwNSw3ICsxMTUzLDcgQEAKIAlhZGRsCSQ0LCVlZGkKIAlhZGRsCSQ0LCVlYngKIAlkZWNsCSVlYnAKLQlqegkuTDAxOWF3X2VuZAorCWp6CS5MMDMxYXdfZW5kCiAKIAltb3ZsCSglZXNpKSwlZWN4CiAJbW92bAkoJWVkaSksJWVkeApAQCAtMTAxOSw3ICsxMTY3LDcgQEAKIAlhZGRsCSQ0LCVlZGkKIAlhZGRsCSQ0LCVlYngKIAlkZWNsCSVlYnAKLQlqegkuTDAxOWF3X2VuZAorCWp6CS5MMDMxYXdfZW5kCiAKIAltb3ZsCSglZXNpKSwlZWN4CiAJbW92bAkoJWVkaSksJWVkeApAQCAtMTAzMiwyMCArMTE4MCwyMCBAQAogCWFkZGwJJDQsJWVzaQogCWFkZGwJJDQsJWVkaQogCWFkZGwJJDQsJWVieAotLkwwMTlhd19lbmQ6CisuTDAzMWF3X2VuZDoKIAljbXBsCSQwLDM2KCVlc3ApCi0JamUJLkwwMjBwd19lbmQKKwlqZQkuTDAzMnB3X2VuZAogCW1vdmwJMzYoJWVzcCksJWVicAogCWNtcGwJJDAsJWVicAotCWplCS5MMDIwcHdfZW5kCi0JamdlCS5MMDIxcHdfcG9zCisJamUJLkwwMzJwd19lbmQKKwlqZ2UJLkwwMzNwd19wb3MKIAogCW1vdmwJJDAsJWVkeAogCXN1YmwJJWVicCwlZWR4CiAJbW92bAklZWR4LCVlYnAKIAlhbmRsCSQ0Mjk0OTY3Mjg4LCVlYnAKLQlqegkuTDAyMnB3X25lZ19maW5pc2gKLS5MMDIzcHdfbmVnX2xvb3A6CisJanoJLkwwMzRwd19uZWdfZmluaXNoCisuTDAzNXB3X25lZ19sb29wOgogCiAJbW92bAkkMCwlZWN4CiAJbW92bAkoJWVkaSksJWVkeApAQCAtMTEyMiwxMyArMTI3MCwxMyBAQAogCWFkZGwJJDMyLCVlZGkKIAlhZGRsCSQzMiwlZWJ4CiAJc3VibAkkOCwlZWJwCi0Jam56CS5MMDIzcHdfbmVnX2xvb3AKLS5MMDIycHdfbmVnX2ZpbmlzaDoKKwlqbnoJLkwwMzVwd19uZWdfbG9vcAorLkwwMzRwd19uZWdfZmluaXNoOgogCW1vdmwJMzYoJWVzcCksJWVkeAogCW1vdmwJJDAsJWVicAogCXN1YmwJJWVkeCwlZWJwCiAJYW5kbAkkNywlZWJwCi0JanoJLkwwMjBwd19lbmQKKwlqegkuTDAzMnB3X2VuZAogCiAJbW92bAkkMCwlZWN4CiAJbW92bAkoJWVkaSksJWVkeApAQCAtMTEzOSw3ICsxMjg3LDcgQEAKIAlhZGNsCSQwLCVlYXgKIAlkZWNsCSVlYnAKIAltb3ZsCSVlY3gsKCVlYngpCi0JanoJLkwwMjBwd19lbmQKKwlqegkuTDAzMnB3X2VuZAogCiAJbW92bAkkMCwlZWN4CiAJbW92bAk0KCVlZGkpLCVlZHgKQEAgLTExNTAsNyArMTI5OCw3IEBACiAJYWRjbAkkMCwlZWF4CiAJZGVjbAklZWJwCiAJbW92bAklZWN4LDQoJWVieCkKLQlqegkuTDAyMHB3X2VuZAorCWp6CS5MMDMycHdfZW5kCiAKIAltb3ZsCSQwLCVlY3gKIAltb3ZsCTgoJWVkaSksJWVkeApAQCAtMTE2MSw3ICsxMzA5LDcgQEAKIAlhZGNsCSQwLCVlYXgKIAlkZWNsCSVlYnAKIAltb3ZsCSVlY3gsOCglZWJ4KQotCWp6CS5MMDIwcHdfZW5kCisJanoJLkwwMzJwd19lbmQKIAogCW1vdmwJJDAsJWVjeAogCW1vdmwJMTIoJWVkaSksJWVkeApAQCAtMTE3Miw3ICsxMzIwLDcgQEAKIAlhZGNsCSQwLCVlYXgKIAlkZWNsCSVlYnAKIAltb3ZsCSVlY3gsMTIoJWVieCkKLQlqegkuTDAyMHB3X2VuZAorCWp6CS5MMDMycHdfZW5kCiAKIAltb3ZsCSQwLCVlY3gKIAltb3ZsCTE2KCVlZGkpLCVlZHgKQEAgLTExODMsNyArMTMzMSw3IEBACiAJYWRjbAkkMCwlZWF4CiAJZGVjbAklZWJwCiAJbW92bAklZWN4LDE2KCVlYngpCi0JanoJLkwwMjBwd19lbmQKKwlqegkuTDAzMnB3X2VuZAogCiAJbW92bAkkMCwlZWN4CiAJbW92bAkyMCglZWRpKSwlZWR4CkBAIC0xMTk0LDcgKzEzNDIsNyBAQAogCWFkY2wJJDAsJWVheAogCWRlY2wJJWVicAogCW1vdmwJJWVjeCwyMCglZWJ4KQotCWp6CS5MMDIwcHdfZW5kCisJanoJLkwwMzJwd19lbmQKIAogCW1vdmwJJDAsJWVjeAogCW1vdmwJMjQoJWVkaSksJWVkeApAQCAtMTIwNCwxODEgKzEzNTIsMTgyIEBACiAJc3VibAklZWR4LCVlY3gKIAlhZGNsCSQwLCVlYXgKIAltb3ZsCSVlY3gsMjQoJWVieCkKLQlqbXAJLkwwMjBwd19lbmQKLS5MMDIxcHdfcG9zOgorCWptcAkuTDAzMnB3X2VuZAorLkwwMzNwd19wb3M6CiAJYW5kbAkkNDI5NDk2NzI4OCwlZWJwCi0JanoJLkwwMjRwd19wb3NfZmluaXNoCi0uTDAyNXB3X3Bvc19sb29wOgorCWp6CS5MMDM2cHdfcG9zX2ZpbmlzaAorLkwwMzdwd19wb3NfbG9vcDoKIAogCW1vdmwJKCVlc2kpLCVlY3gKIAlzdWJsCSVlYXgsJWVjeAogCW1vdmwJJWVjeCwoJWVieCkKLQlqbmMJLkwwMjZwd19uYzAKKwlqbmMJLkwwMzhwd19uYzAKIAogCW1vdmwJNCglZXNpKSwlZWN4CiAJc3VibAklZWF4LCVlY3gKIAltb3ZsCSVlY3gsNCglZWJ4KQotCWpuYwkuTDAyN3B3X25jMQorCWpuYwkuTDAzOXB3X25jMQogCiAJbW92bAk4KCVlc2kpLCVlY3gKIAlzdWJsCSVlYXgsJWVjeAogCW1vdmwJJWVjeCw4KCVlYngpCi0Jam5jCS5MMDI4cHdfbmMyCisJam5jCS5MMDQwcHdfbmMyCiAKIAltb3ZsCTEyKCVlc2kpLCVlY3gKIAlzdWJsCSVlYXgsJWVjeAogCW1vdmwJJWVjeCwxMiglZWJ4KQotCWpuYwkuTDAyOXB3X25jMworCWpuYwkuTDA0MXB3X25jMwogCiAJbW92bAkxNiglZXNpKSwlZWN4CiAJc3VibAklZWF4LCVlY3gKIAltb3ZsCSVlY3gsMTYoJWVieCkKLQlqbmMJLkwwMzBwd19uYzQKKwlqbmMJLkwwNDJwd19uYzQKIAogCW1vdmwJMjAoJWVzaSksJWVjeAogCXN1YmwJJWVheCwlZWN4CiAJbW92bAklZWN4LDIwKCVlYngpCi0Jam5jCS5MMDMxcHdfbmM1CisJam5jCS5MMDQzcHdfbmM1CiAKIAltb3ZsCTI0KCVlc2kpLCVlY3gKIAlzdWJsCSVlYXgsJWVjeAogCW1vdmwJJWVjeCwyNCglZWJ4KQotCWpuYwkuTDAzMnB3X25jNgorCWpuYwkuTDA0NHB3X25jNgogCiAJbW92bAkyOCglZXNpKSwlZWN4CiAJc3VibAklZWF4LCVlY3gKIAltb3ZsCSVlY3gsMjgoJWVieCkKLQlqbmMJLkwwMzNwd19uYzcKKwlqbmMJLkwwNDVwd19uYzcKIAogCWFkZGwJJDMyLCVlc2kKIAlhZGRsCSQzMiwlZWJ4CiAJc3VibAkkOCwlZWJwCi0Jam56CS5MMDI1cHdfcG9zX2xvb3AKLS5MMDI0cHdfcG9zX2ZpbmlzaDoKKwlqbnoJLkwwMzdwd19wb3NfbG9vcAorLkwwMzZwd19wb3NfZmluaXNoOgogCW1vdmwJMzYoJWVzcCksJWVicAogCWFuZGwJJDcsJWVicAotCWp6CS5MMDIwcHdfZW5kCisJanoJLkwwMzJwd19lbmQKIAogCW1vdmwJKCVlc2kpLCVlY3gKIAlzdWJsCSVlYXgsJWVjeAogCW1vdmwJJWVjeCwoJWVieCkKLQlqbmMJLkwwMzRwd190YWlsX25jMAorCWpuYwkuTDA0NnB3X3RhaWxfbmMwCiAJZGVjbAklZWJwCi0JanoJLkwwMjBwd19lbmQKKwlqegkuTDAzMnB3X2VuZAogCiAJbW92bAk0KCVlc2kpLCVlY3gKIAlzdWJsCSVlYXgsJWVjeAogCW1vdmwJJWVjeCw0KCVlYngpCi0Jam5jCS5MMDM1cHdfdGFpbF9uYzEKKwlqbmMJLkwwNDdwd190YWlsX25jMQogCWRlY2wJJWVicAotCWp6CS5MMDIwcHdfZW5kCisJanoJLkwwMzJwd19lbmQKIAogCW1vdmwJOCglZXNpKSwlZWN4CiAJc3VibAklZWF4LCVlY3gKIAltb3ZsCSVlY3gsOCglZWJ4KQotCWpuYwkuTDAzNnB3X3RhaWxfbmMyCisJam5jCS5MMDQ4cHdfdGFpbF9uYzIKIAlkZWNsCSVlYnAKLQlqegkuTDAyMHB3X2VuZAorCWp6CS5MMDMycHdfZW5kCiAKIAltb3ZsCTEyKCVlc2kpLCVlY3gKIAlzdWJsCSVlYXgsJWVjeAogCW1vdmwJJWVjeCwxMiglZWJ4KQotCWpuYwkuTDAzN3B3X3RhaWxfbmMzCisJam5jCS5MMDQ5cHdfdGFpbF9uYzMKIAlkZWNsCSVlYnAKLQlqegkuTDAyMHB3X2VuZAorCWp6CS5MMDMycHdfZW5kCiAKIAltb3ZsCTE2KCVlc2kpLCVlY3gKIAlzdWJsCSVlYXgsJWVjeAogCW1vdmwJJWVjeCwxNiglZWJ4KQotCWpuYwkuTDAzOHB3X3RhaWxfbmM0CisJam5jCS5MMDUwcHdfdGFpbF9uYzQKIAlkZWNsCSVlYnAKLQlqegkuTDAyMHB3X2VuZAorCWp6CS5MMDMycHdfZW5kCiAKIAltb3ZsCTIwKCVlc2kpLCVlY3gKIAlzdWJsCSVlYXgsJWVjeAogCW1vdmwJJWVjeCwyMCglZWJ4KQotCWpuYwkuTDAzOXB3X3RhaWxfbmM1CisJam5jCS5MMDUxcHdfdGFpbF9uYzUKIAlkZWNsCSVlYnAKLQlqegkuTDAyMHB3X2VuZAorCWp6CS5MMDMycHdfZW5kCiAKIAltb3ZsCTI0KCVlc2kpLCVlY3gKIAlzdWJsCSVlYXgsJWVjeAogCW1vdmwJJWVjeCwyNCglZWJ4KQotCWpuYwkuTDA0MHB3X3RhaWxfbmM2CisJam5jCS5MMDUycHdfdGFpbF9uYzYKIAltb3ZsCSQxLCVlYXgKLQlqbXAJLkwwMjBwd19lbmQKLS5MMDQxcHdfbmNfbG9vcDoKKwlqbXAJLkwwMzJwd19lbmQKKy5MMDUzcHdfbmNfbG9vcDoKIAltb3ZsCSglZXNpKSwlZWN4CiAJbW92bAklZWN4LCglZWJ4KQotLkwwMjZwd19uYzA6CisuTDAzOHB3X25jMDoKIAltb3ZsCTQoJWVzaSksJWVjeAogCW1vdmwJJWVjeCw0KCVlYngpCi0uTDAyN3B3X25jMToKKy5MMDM5cHdfbmMxOgogCW1vdmwJOCglZXNpKSwlZWN4CiAJbW92bAklZWN4LDgoJWVieCkKLS5MMDI4cHdfbmMyOgorLkwwNDBwd19uYzI6CiAJbW92bAkxMiglZXNpKSwlZWN4CiAJbW92bAklZWN4LDEyKCVlYngpCi0uTDAyOXB3X25jMzoKKy5MMDQxcHdfbmMzOgogCW1vdmwJMTYoJWVzaSksJWVjeAogCW1vdmwJJWVjeCwxNiglZWJ4KQotLkwwMzBwd19uYzQ6CisuTDA0MnB3X25jNDoKIAltb3ZsCTIwKCVlc2kpLCVlY3gKIAltb3ZsCSVlY3gsMjAoJWVieCkKLS5MMDMxcHdfbmM1OgorLkwwNDNwd19uYzU6CiAJbW92bAkyNCglZXNpKSwlZWN4CiAJbW92bAklZWN4LDI0KCVlYngpCi0uTDAzMnB3X25jNjoKKy5MMDQ0cHdfbmM2OgogCW1vdmwJMjgoJWVzaSksJWVjeAogCW1vdmwJJWVjeCwyOCglZWJ4KQotLkwwMzNwd19uYzc6CisuTDA0NXB3X25jNzoKIAogCWFkZGwJJDMyLCVlc2kKIAlhZGRsCSQzMiwlZWJ4CiAJc3VibAkkOCwlZWJwCi0Jam56CS5MMDQxcHdfbmNfbG9vcAorCWpuegkuTDA1M3B3X25jX2xvb3AKIAltb3ZsCTM2KCVlc3ApLCVlYnAKIAlhbmRsCSQ3LCVlYnAKLQlqegkuTDA0MnB3X25jX2VuZAorCWp6CS5MMDU0cHdfbmNfZW5kCiAJbW92bAkoJWVzaSksJWVjeAogCW1vdmwJJWVjeCwoJWVieCkKLS5MMDM0cHdfdGFpbF9uYzA6CisuTDA0NnB3X3RhaWxfbmMwOgogCWRlY2wJJWVicAotCWp6CS5MMDQycHdfbmNfZW5kCisJanoJLkwwNTRwd19uY19lbmQKIAltb3ZsCTQoJWVzaSksJWVjeAogCW1vdmwJJWVjeCw0KCVlYngpCi0uTDAzNXB3X3RhaWxfbmMxOgorLkwwNDdwd190YWlsX25jMToKIAlkZWNsCSVlYnAKLQlqegkuTDA0MnB3X25jX2VuZAorCWp6CS5MMDU0cHdfbmNfZW5kCiAJbW92bAk4KCVlc2kpLCVlY3gKIAltb3ZsCSVlY3gsOCglZWJ4KQotLkwwMzZwd190YWlsX25jMjoKKy5MMDQ4cHdfdGFpbF9uYzI6CiAJZGVjbAklZWJwCi0JanoJLkwwNDJwd19uY19lbmQKKwlqegkuTDA1NHB3X25jX2VuZAogCW1vdmwJMTIoJWVzaSksJWVjeAogCW1vdmwJJWVjeCwxMiglZWJ4KQotLkwwMzdwd190YWlsX25jMzoKKy5MMDQ5cHdfdGFpbF9uYzM6CiAJZGVjbAklZWJwCi0JanoJLkwwNDJwd19uY19lbmQKKwlqegkuTDA1NHB3X25jX2VuZAogCW1vdmwJMTYoJWVzaSksJWVjeAogCW1vdmwJJWVjeCwxNiglZWJ4KQotLkwwMzhwd190YWlsX25jNDoKKy5MMDUwcHdfdGFpbF9uYzQ6CiAJZGVjbAklZWJwCi0JanoJLkwwNDJwd19uY19lbmQKKwlqegkuTDA1NHB3X25jX2VuZAogCW1vdmwJMjAoJWVzaSksJWVjeAogCW1vdmwJJWVjeCwyMCglZWJ4KQotLkwwMzlwd190YWlsX25jNToKKy5MMDUxcHdfdGFpbF9uYzU6CiAJZGVjbAklZWJwCi0JanoJLkwwNDJwd19uY19lbmQKKwlqegkuTDA1NHB3X25jX2VuZAogCW1vdmwJMjQoJWVzaSksJWVjeAogCW1vdmwJJWVjeCwyNCglZWJ4KQotLkwwNDBwd190YWlsX25jNjoKLS5MMDQycHdfbmNfZW5kOgorLkwwNTJwd190YWlsX25jNjoKKy5MMDU0cHdfbmNfZW5kOgogCW1vdmwJJDAsJWVheAotLkwwMjBwd19lbmQ6CisuTDAzMnB3X2VuZDoKIAlwb3BsCSVlZGkKIAlwb3BsCSVlc2kKIAlwb3BsCSVlYngKIAlwb3BsCSVlYnAKIAlyZXQKIC5zaXplCWJuX3N1Yl9wYXJ0X3dvcmRzLC4tLkxfYm5fc3ViX3BhcnRfd29yZHNfYmVnaW4KKy5jb21tCU9QRU5TU0xfaWEzMmNhcF9QLDgsNApkaWZmIC0tZ2l0IGEvY3J5cHRvL2JuL2FzbS94ODYtZ2YybS5TIGIvY3J5cHRvL2JuL2FzbS94ODYtZ2YybS5TCmluZGV4IDk0MDNhNWEuLjllZDI5YWUgMTAwNjQ0Ci0tLSBhL2NyeXB0by9ibi9hc20veDg2LWdmMm0uUworKysgYi9jcnlwdG8vYm4vYXNtL3g4Ni1nZjJtLlMKQEAgLTI0OSw2ICsyNDksMTggQEAKIAltb3ZsCTQoJWVkeCksJWVkeAogCXRlc3RsCSQ4Mzg4NjA4LCVlYXgKIAlqegkuTDAwMWlhbHUKKwl0ZXN0bAkkMTY3NzcyMTYsJWVheAorCWp6CS5MMDAybW14CisJdGVzdGwJJDIsJWVkeAorCWp6CS5MMDAybW14CisJbW92dXBzCTgoJWVzcCksJXhtbTAKKwlzaHVmcHMJJDE3NywleG1tMCwleG1tMAorLmJ5dGUJMTAyLDE1LDU4LDY4LDE5MiwxCisJbW92bAk0KCVlc3ApLCVlYXgKKwltb3Z1cHMJJXhtbTAsKCVlYXgpCisJcmV0CisuYWxpZ24JMTYKKy5MMDAybW14OgogCXB1c2hsCSVlYnAKIAlwdXNobAklZWJ4CiAJcHVzaGwJJWVzaQpkaWZmIC0tZ2l0IGEvY3J5cHRvL2JuL2FzbS94ODYtbW9udC5TIGIvY3J5cHRvL2JuL2FzbS94ODYtbW9udC5TCmluZGV4IDJiYmIwZTMuLmM3MDFlOWUgMTAwNjQ0Ci0tLSBhL2NyeXB0by9ibi9hc20veDg2LW1vbnQuUworKysgYi9jcnlwdG8vYm4vYXNtL3g4Ni1tb250LlMKQEAgLTQyLDYgKzQyLDEyNyBAQAogCW1vdmwJJWVzaSwyMCglZXNwKQogCWxlYWwJLTMoJWVkaSksJWVieAogCW1vdmwJJWVicCwyNCglZXNwKQorCWNhbGwJLkwwMDFQSUNfbWVfdXAKKy5MMDAxUElDX21lX3VwOgorCXBvcGwJJWVheAorCWxlYWwJX0dMT0JBTF9PRkZTRVRfVEFCTEVfK1suLS5MMDAxUElDX21lX3VwXSglZWF4KSwlZWF4CisJbW92bAlPUEVOU1NMX2lhMzJjYXBfUEBHT1QoJWVheCksJWVheAorCWJ0bAkkMjYsKCVlYXgpCisJam5jCS5MMDAybm9uX3NzZTIKKwltb3ZsCSQtMSwlZWF4CisJbW92ZAklZWF4LCVtbTcKKwltb3ZsCTgoJWVzcCksJWVzaQorCW1vdmwJMTIoJWVzcCksJWVkaQorCW1vdmwJMTYoJWVzcCksJWVicAorCXhvcmwJJWVkeCwlZWR4CisJeG9ybAklZWN4LCVlY3gKKwltb3ZkCSglZWRpKSwlbW00CisJbW92ZAkoJWVzaSksJW1tNQorCW1vdmQJKCVlYnApLCVtbTMKKwlwbXVsdWRxCSVtbTQsJW1tNQorCW1vdnEJJW1tNSwlbW0yCisJbW92cQklbW01LCVtbTAKKwlwYW5kCSVtbTcsJW1tMAorCXBtdWx1ZHEJMjAoJWVzcCksJW1tNQorCXBtdWx1ZHEJJW1tNSwlbW0zCisJcGFkZHEJJW1tMCwlbW0zCisJbW92ZAk0KCVlYnApLCVtbTEKKwltb3ZkCTQoJWVzaSksJW1tMAorCXBzcmxxCSQzMiwlbW0yCisJcHNybHEJJDMyLCVtbTMKKwlpbmNsCSVlY3gKKy5hbGlnbgkxNgorLkwwMDMxc3Q6CisJcG11bHVkcQklbW00LCVtbTAKKwlwbXVsdWRxCSVtbTUsJW1tMQorCXBhZGRxCSVtbTAsJW1tMgorCXBhZGRxCSVtbTEsJW1tMworCW1vdnEJJW1tMiwlbW0wCisJcGFuZAklbW03LCVtbTAKKwltb3ZkCTQoJWVicCwlZWN4LDQpLCVtbTEKKwlwYWRkcQklbW0wLCVtbTMKKwltb3ZkCTQoJWVzaSwlZWN4LDQpLCVtbTAKKwlwc3JscQkkMzIsJW1tMgorCW1vdmQJJW1tMywyOCglZXNwLCVlY3gsNCkKKwlwc3JscQkkMzIsJW1tMworCWxlYWwJMSglZWN4KSwlZWN4CisJY21wbAklZWJ4LCVlY3gKKwlqbAkuTDAwMzFzdAorCXBtdWx1ZHEJJW1tNCwlbW0wCisJcG11bHVkcQklbW01LCVtbTEKKwlwYWRkcQklbW0wLCVtbTIKKwlwYWRkcQklbW0xLCVtbTMKKwltb3ZxCSVtbTIsJW1tMAorCXBhbmQJJW1tNywlbW0wCisJcGFkZHEJJW1tMCwlbW0zCisJbW92ZAklbW0zLDI4KCVlc3AsJWVjeCw0KQorCXBzcmxxCSQzMiwlbW0yCisJcHNybHEJJDMyLCVtbTMKKwlwYWRkcQklbW0yLCVtbTMKKwltb3ZxCSVtbTMsMzIoJWVzcCwlZWJ4LDQpCisJaW5jbAklZWR4CisuTDAwNG91dGVyOgorCXhvcmwJJWVjeCwlZWN4CisJbW92ZAkoJWVkaSwlZWR4LDQpLCVtbTQKKwltb3ZkCSglZXNpKSwlbW01CisJbW92ZAkzMiglZXNwKSwlbW02CisJbW92ZAkoJWVicCksJW1tMworCXBtdWx1ZHEJJW1tNCwlbW01CisJcGFkZHEJJW1tNiwlbW01CisJbW92cQklbW01LCVtbTAKKwltb3ZxCSVtbTUsJW1tMgorCXBhbmQJJW1tNywlbW0wCisJcG11bHVkcQkyMCglZXNwKSwlbW01CisJcG11bHVkcQklbW01LCVtbTMKKwlwYWRkcQklbW0wLCVtbTMKKwltb3ZkCTM2KCVlc3ApLCVtbTYKKwltb3ZkCTQoJWVicCksJW1tMQorCW1vdmQJNCglZXNpKSwlbW0wCisJcHNybHEJJDMyLCVtbTIKKwlwc3JscQkkMzIsJW1tMworCXBhZGRxCSVtbTYsJW1tMgorCWluY2wJJWVjeAorCWRlY2wJJWVieAorLkwwMDVpbm5lcjoKKwlwbXVsdWRxCSVtbTQsJW1tMAorCXBtdWx1ZHEJJW1tNSwlbW0xCisJcGFkZHEJJW1tMCwlbW0yCisJcGFkZHEJJW1tMSwlbW0zCisJbW92cQklbW0yLCVtbTAKKwltb3ZkCTM2KCVlc3AsJWVjeCw0KSwlbW02CisJcGFuZAklbW03LCVtbTAKKwltb3ZkCTQoJWVicCwlZWN4LDQpLCVtbTEKKwlwYWRkcQklbW0wLCVtbTMKKwltb3ZkCTQoJWVzaSwlZWN4LDQpLCVtbTAKKwlwc3JscQkkMzIsJW1tMgorCW1vdmQJJW1tMywyOCglZXNwLCVlY3gsNCkKKwlwc3JscQkkMzIsJW1tMworCXBhZGRxCSVtbTYsJW1tMgorCWRlY2wJJWVieAorCWxlYWwJMSglZWN4KSwlZWN4CisJam56CS5MMDA1aW5uZXIKKwltb3ZsCSVlY3gsJWVieAorCXBtdWx1ZHEJJW1tNCwlbW0wCisJcG11bHVkcQklbW01LCVtbTEKKwlwYWRkcQklbW0wLCVtbTIKKwlwYWRkcQklbW0xLCVtbTMKKwltb3ZxCSVtbTIsJW1tMAorCXBhbmQJJW1tNywlbW0wCisJcGFkZHEJJW1tMCwlbW0zCisJbW92ZAklbW0zLDI4KCVlc3AsJWVjeCw0KQorCXBzcmxxCSQzMiwlbW0yCisJcHNybHEJJDMyLCVtbTMKKwltb3ZkCTM2KCVlc3AsJWVieCw0KSwlbW02CisJcGFkZHEJJW1tMiwlbW0zCisJcGFkZHEJJW1tNiwlbW0zCisJbW92cQklbW0zLDMyKCVlc3AsJWVieCw0KQorCWxlYWwJMSglZWR4KSwlZWR4CisJY21wbAklZWJ4LCVlZHgKKwlqbGUJLkwwMDRvdXRlcgorCWVtbXMKKwlqbXAJLkwwMDZjb21tb25fdGFpbAorLmFsaWduCTE2CisuTDAwMm5vbl9zc2UyOgogCW1vdmwJOCglZXNwKSwlZXNpCiAJbGVhbAkxKCVlYngpLCVlYnAKIAltb3ZsCTEyKCVlc3ApLCVlZGkKQEAgLTUyLDEyICsxNzMsMTIgQEAKIAlsZWFsCTQoJWVkaSwlZWJ4LDQpLCVlYXgKIAlvcmwJJWVkeCwlZWJwCiAJbW92bAkoJWVkaSksJWVkaQotCWp6CS5MMDAxYm5fc3FyX21vbnQKKwlqegkuTDAwN2JuX3Nxcl9tb250CiAJbW92bAklZWF4LDI4KCVlc3ApCiAJbW92bAkoJWVzaSksJWVheAogCXhvcmwJJWVkeCwlZWR4CiAuYWxpZ24JMTYKLS5MMDAybXVsbDoKKy5MMDA4bXVsbDoKIAltb3ZsCSVlZHgsJWVicAogCW11bGwJJWVkaQogCWFkZGwJJWVheCwlZWJwCkBAIC02Niw3ICsxODcsNyBAQAogCW1vdmwJKCVlc2ksJWVjeCw0KSwlZWF4CiAJY21wbAklZWJ4LCVlY3gKIAltb3ZsCSVlYnAsMjgoJWVzcCwlZWN4LDQpCi0JamwJLkwwMDJtdWxsCisJamwJLkwwMDhtdWxsCiAJbW92bAklZWR4LCVlYnAKIAltdWxsCSVlZGkKIAltb3ZsCTIwKCVlc3ApLCVlZGkKQEAgLTg0LDkgKzIwNSw5IEBACiAJbW92bAk0KCVlc2kpLCVlYXgKIAlhZGNsCSQwLCVlZHgKIAlpbmNsCSVlY3gKLQlqbXAJLkwwMDMybmRtYWRkCisJam1wCS5MMDA5Mm5kbWFkZAogLmFsaWduCTE2Ci0uTDAwNDFzdG1hZGQ6CisuTDAxMDFzdG1hZGQ6CiAJbW92bAklZWR4LCVlYnAKIAltdWxsCSVlZGkKIAlhZGRsCTMyKCVlc3AsJWVjeCw0KSwlZWJwCkBAIC05Nyw3ICsyMTgsNyBAQAogCWFkY2wJJDAsJWVkeAogCWNtcGwJJWVieCwlZWN4CiAJbW92bAklZWJwLDI4KCVlc3AsJWVjeCw0KQotCWpsCS5MMDA0MXN0bWFkZAorCWpsCS5MMDEwMXN0bWFkZAogCW1vdmwJJWVkeCwlZWJwCiAJbXVsbAklZWRpCiAJYWRkbAkzMiglZXNwLCVlYngsNCksJWVheApAQCAtMTIwLDcgKzI0MSw3IEBACiAJYWRjbAkkMCwlZWR4CiAJbW92bAkkMSwlZWN4CiAuYWxpZ24JMTYKLS5MMDAzMm5kbWFkZDoKKy5MMDA5Mm5kbWFkZDoKIAltb3ZsCSVlZHgsJWVicAogCW11bGwJJWVkaQogCWFkZGwJMzIoJWVzcCwlZWN4LDQpLCVlYnAKQEAgLTEzMSw3ICsyNTIsNyBAQAogCWFkY2wJJDAsJWVkeAogCWNtcGwJJWVieCwlZWN4CiAJbW92bAklZWJwLDI0KCVlc3AsJWVjeCw0KQotCWpsCS5MMDAzMm5kbWFkZAorCWpsCS5MMDA5Mm5kbWFkZAogCW1vdmwJJWVkeCwlZWJwCiAJbXVsbAklZWRpCiAJYWRkbAkzMiglZXNwLCVlYngsNCksJWVicApAQCAtMTQ3LDE2ICsyNjgsMTYgQEAKIAltb3ZsCSVlZHgsMzIoJWVzcCwlZWJ4LDQpCiAJY21wbAkyOCglZXNwKSwlZWN4CiAJbW92bAklZWF4LDM2KCVlc3AsJWVieCw0KQotCWplCS5MMDA1Y29tbW9uX3RhaWwKKwlqZQkuTDAwNmNvbW1vbl90YWlsCiAJbW92bAkoJWVjeCksJWVkaQogCW1vdmwJOCglZXNwKSwlZXNpCiAJbW92bAklZWN4LDEyKCVlc3ApCiAJeG9ybAklZWN4LCVlY3gKIAl4b3JsCSVlZHgsJWVkeAogCW1vdmwJKCVlc2kpLCVlYXgKLQlqbXAJLkwwMDQxc3RtYWRkCisJam1wCS5MMDEwMXN0bWFkZAogLmFsaWduCTE2Ci0uTDAwMWJuX3Nxcl9tb250OgorLkwwMDdibl9zcXJfbW9udDoKIAltb3ZsCSVlYngsKCVlc3ApCiAJbW92bAklZWN4LDEyKCVlc3ApCiAJbW92bAklZWRpLCVlYXgKQEAgLTE2Nyw3ICsyODgsNyBAQAogCWFuZGwJJDEsJWVieAogCWluY2wJJWVjeAogLmFsaWduCTE2Ci0uTDAwNnNxcjoKKy5MMDExc3FyOgogCW1vdmwJKCVlc2ksJWVjeCw0KSwlZWF4CiAJbW92bAklZWR4LCVlYnAKIAltdWxsCSVlZGkKQEAgLTE3OSw3ICszMDAsNyBAQAogCWNtcGwJKCVlc3ApLCVlY3gKIAltb3ZsCSVlYXgsJWVieAogCW1vdmwJJWVicCwyOCglZXNwLCVlY3gsNCkKLQlqbAkuTDAwNnNxcgorCWpsCS5MMDExc3FyCiAJbW92bAkoJWVzaSwlZWN4LDQpLCVlYXgKIAltb3ZsCSVlZHgsJWVicAogCW11bGwJJWVkaQpAQCAtMjAzLDcgKzMyNCw3IEBACiAJbW92bAk0KCVlc2kpLCVlYXgKIAltb3ZsCSQxLCVlY3gKIC5hbGlnbgkxNgotLkwwMDczcmRtYWRkOgorLkwwMTIzcmRtYWRkOgogCW1vdmwJJWVkeCwlZWJwCiAJbXVsbAklZWRpCiAJYWRkbAkzMiglZXNwLCVlY3gsNCksJWVicApAQCAtMjIyLDcgKzM0Myw3IEBACiAJYWRjbAkkMCwlZWR4CiAJY21wbAklZWJ4LCVlY3gKIAltb3ZsCSVlYnAsMjQoJWVzcCwlZWN4LDQpCi0JamwJLkwwMDczcmRtYWRkCisJamwJLkwwMTIzcmRtYWRkCiAJbW92bAklZWR4LCVlYnAKIAltdWxsCSVlZGkKIAlhZGRsCTMyKCVlc3AsJWVieCw0KSwlZWJwCkBAIC0yMzgsNyArMzU5LDcgQEAKIAltb3ZsCSVlZHgsMzIoJWVzcCwlZWJ4LDQpCiAJY21wbAklZWJ4LCVlY3gKIAltb3ZsCSVlYXgsMzYoJWVzcCwlZWJ4LDQpCi0JamUJLkwwMDVjb21tb25fdGFpbAorCWplCS5MMDA2Y29tbW9uX3RhaWwKIAltb3ZsCTQoJWVzaSwlZWN4LDQpLCVlZGkKIAlsZWFsCTEoJWVjeCksJWVjeAogCW1vdmwJJWVkaSwlZWF4CkBAIC0yNTAsMTIgKzM3MSwxMiBAQAogCXhvcmwJJWVicCwlZWJwCiAJY21wbAklZWJ4LCVlY3gKIAlsZWFsCTEoJWVjeCksJWVjeAotCWplCS5MMDA4c3FybGFzdAorCWplCS5MMDEzc3FybGFzdAogCW1vdmwJJWVkeCwlZWJ4CiAJc2hybAkkMSwlZWR4CiAJYW5kbAkkMSwlZWJ4CiAuYWxpZ24JMTYKLS5MMDA5c3FyYWRkOgorLkwwMTRzcXJhZGQ6CiAJbW92bAkoJWVzaSwlZWN4LDQpLCVlYXgKIAltb3ZsCSVlZHgsJWVicAogCW11bGwJJWVkaQpAQCAtMjcxLDEzICszOTIsMTMgQEAKIAljbXBsCSglZXNwKSwlZWN4CiAJbW92bAklZWJwLDI4KCVlc3AsJWVjeCw0KQogCW1vdmwJJWVheCwlZWJ4Ci0JamxlCS5MMDA5c3FyYWRkCisJamxlCS5MMDE0c3FyYWRkCiAJbW92bAklZWR4LCVlYnAKIAlhZGRsCSVlZHgsJWVkeAogCXNocmwJJDMxLCVlYnAKIAlhZGRsCSVlYngsJWVkeAogCWFkY2wJJDAsJWVicAotLkwwMDhzcXJsYXN0OgorLkwwMTNzcXJsYXN0OgogCW1vdmwJMjAoJWVzcCksJWVkaQogCW1vdmwJMTYoJWVzcCksJWVzaQogCWltdWxsCTMyKCVlc3ApLCVlZGkKQEAgLTI5Miw5ICs0MTMsOSBAQAogCWFkY2wJJDAsJWVkeAogCW1vdmwJJDEsJWVjeAogCW1vdmwJNCglZXNpKSwlZWF4Ci0Jam1wCS5MMDA3M3JkbWFkZAorCWptcAkuTDAxMjNyZG1hZGQKIC5hbGlnbgkxNgotLkwwMDVjb21tb25fdGFpbDoKKy5MMDA2Y29tbW9uX3RhaWw6CiAJbW92bAkxNiglZXNwKSwlZWJwCiAJbW92bAk0KCVlc3ApLCVlZGkKIAlsZWFsCTMyKCVlc3ApLCVlc2kKQEAgLTMwMiwxMyArNDIzLDEzIEBACiAJbW92bAklZWJ4LCVlY3gKIAl4b3JsCSVlZHgsJWVkeAogLmFsaWduCTE2Ci0uTDAxMHN1YjoKKy5MMDE1c3ViOgogCXNiYmwJKCVlYnAsJWVkeCw0KSwlZWF4CiAJbW92bAklZWF4LCglZWRpLCVlZHgsNCkKIAlkZWNsCSVlY3gKIAltb3ZsCTQoJWVzaSwlZWR4LDQpLCVlYXgKIAlsZWFsCTEoJWVkeCksJWVkeAotCWpnZQkuTDAxMHN1YgorCWpnZQkuTDAxNXN1YgogCXNiYmwJJDAsJWVheAogCWFuZGwJJWVheCwlZXNpCiAJbm90bAklZWF4CkBAIC0zMTYsMTIgKzQzNywxMiBAQAogCWFuZGwJJWVheCwlZWJwCiAJb3JsCSVlYnAsJWVzaQogLmFsaWduCTE2Ci0uTDAxMWNvcHk6CisuTDAxNmNvcHk6CiAJbW92bAkoJWVzaSwlZWJ4LDQpLCVlYXgKIAltb3ZsCSVlYXgsKCVlZGksJWVieCw0KQogCW1vdmwJJWVjeCwzMiglZXNwLCVlYngsNCkKIAlkZWNsCSVlYngKLQlqZ2UJLkwwMTFjb3B5CisJamdlCS5MMDE2Y29weQogCW1vdmwJMjQoJWVzcCksJWVzcAogCW1vdmwJJDEsJWVheAogLkwwMDBqdXN0X2xlYXZlOgpAQCAtMzM2LDMgKzQ1Nyw0IEBACiAuYnl0ZQk1NCw0NCwzMiw2Nyw4Miw4OSw4MCw4NCw3OSw3MSw2NSw3Nyw4MywzMiw5OCwxMjEKIC5ieXRlCTMyLDYwLDk3LDExMiwxMTIsMTE0LDExMSw2NCwxMTEsMTEyLDEwMSwxMTAsMTE1LDExNSwxMDgsNDYKIC5ieXRlCTExMSwxMTQsMTAzLDYyLDAKKy5jb21tCU9QRU5TU0xfaWEzMmNhcF9QLDgsNApkaWZmIC0tZ2l0IGEvY3J5cHRvL2JuL2JuLmggYi9jcnlwdG8vYm4vYm4uaAppbmRleCBmMzQyNDhlLi5lNzc2YzA3IDEwMDY0NAotLS0gYS9jcnlwdG8vYm4vYm4uaAorKysgYi9jcnlwdG8vYm4vYm4uaApAQCAtNTM4LDYgKzUzOCw4IEBACiBCSUdOVU0gKkJOX21vZF9zcXJ0KEJJR05VTSAqcmV0LAogCWNvbnN0IEJJR05VTSAqYSwgY29uc3QgQklHTlVNICpuLEJOX0NUWCAqY3R4KTsKIAordm9pZAlCTl9jb25zdHRpbWVfc3dhcChCTl9VTE9ORyBzd2FwLCBCSUdOVU0gKmEsIEJJR05VTSAqYiwgaW50IG53b3Jkcyk7CisKIC8qIERlcHJlY2F0ZWQgdmVyc2lvbnMgKi8KICNpZm5kZWYgT1BFTlNTTF9OT19ERVBSRUNBVEVECiBCSUdOVU0gKkJOX2dlbmVyYXRlX3ByaW1lKEJJR05VTSAqcmV0LGludCBiaXRzLGludCBzYWZlLApAQCAtNjkyLDYgKzY5NCwxMCBAQAogY29uc3QgQklHTlVNICpCTl9nZXQwX25pc3RfcHJpbWVfMzg0KHZvaWQpOwogY29uc3QgQklHTlVNICpCTl9nZXQwX25pc3RfcHJpbWVfNTIxKHZvaWQpOwogCitpbnQgQk5fZ2VuZXJhdGVfZHNhX25vbmNlKEJJR05VTSAqb3V0LCBjb25zdCBCSUdOVU0gKnJhbmdlLCBjb25zdCBCSUdOVU0gKnByaXYsCisJCQkgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKm1lc3NhZ2UsIHNpemVfdCBtZXNzYWdlX2xlbiwKKwkJCSAgQk5fQ1RYICpjdHgpOworCiAvKiBsaWJyYXJ5IGludGVybmFsIGZ1bmN0aW9ucyAqLwogCiAjZGVmaW5lIGJuX2V4cGFuZChhLGJpdHMpICgoKCgoKGJpdHMrQk5fQklUUzItMSkpL0JOX0JJVFMyKSkgPD0gKGEpLT5kbWF4KT9cCkBAIC03NzQsMTEgKzc4MCwyMCBAQAogCiAjZGVmaW5lIGJuX2ZpeF90b3AoYSkJCWJuX2NoZWNrX3RvcChhKQogCisjZGVmaW5lIGJuX2NoZWNrX3NpemUoYm4sIGJpdHMpIGJuX3djaGVja19zaXplKGJuLCAoKGJpdHMrQk5fQklUUzItMSkpL0JOX0JJVFMyKQorI2RlZmluZSBibl93Y2hlY2tfc2l6ZShibiwgd29yZHMpIFwKKwlkbyB7IFwKKwkJY29uc3QgQklHTlVNICpfYm51bTIgPSAoYm4pOyBcCisJCWFzc2VydCh3b3JkcyA8PSAoX2JudW0yKS0+ZG1heCAmJiB3b3JkcyA+PSAoX2JudW0yKS0+dG9wKTsgXAorCX0gd2hpbGUoMCkKKwogI2Vsc2UgLyogIUJOX0RFQlVHICovCiAKICNkZWZpbmUgYm5fcG9sbHV0ZShhKQogI2RlZmluZSBibl9jaGVja190b3AoYSkKICNkZWZpbmUgYm5fZml4X3RvcChhKQkJYm5fY29ycmVjdF90b3AoYSkKKyNkZWZpbmUgYm5fY2hlY2tfc2l6ZShibiwgYml0cykKKyNkZWZpbmUgYm5fd2NoZWNrX3NpemUoYm4sIHdvcmRzKQogCiAjZW5kaWYKIApAQCAtODQyLDYgKzg1Nyw3IEBACiAjZGVmaW5lIEJOX0ZfQk5fRVhQCQkJCQkgMTIzCiAjZGVmaW5lIEJOX0ZfQk5fRVhQQU5EMgkJCQkJIDEwOAogI2RlZmluZSBCTl9GX0JOX0VYUEFORF9JTlRFUk5BTAkJCQkgMTIwCisjZGVmaW5lIEJOX0ZfQk5fR0VORVJBVEVfRFNBX05PTkNFCQkJIDE0MAogI2RlZmluZSBCTl9GX0JOX0dGMk1fTU9ECQkJCSAxMzEKICNkZWZpbmUgQk5fRl9CTl9HRjJNX01PRF9FWFAJCQkJIDEzMgogI2RlZmluZSBCTl9GX0JOX0dGMk1fTU9EX01VTAkJCQkgMTMzCkBAIC04ODEsNiArODk3LDcgQEAKICNkZWZpbmUgQk5fUl9OT1RfSU5JVElBTElaRUQJCQkJIDEwNwogI2RlZmluZSBCTl9SX05PX0lOVkVSU0UJCQkJCSAxMDgKICNkZWZpbmUgQk5fUl9OT19TT0xVVElPTgkJCQkgMTE2CisjZGVmaW5lIEJOX1JfUFJJVkFURV9LRVlfVE9PX0xBUkdFCQkJIDExNwogI2RlZmluZSBCTl9SX1BfSVNfTk9UX1BSSU1FCQkJCSAxMTIKICNkZWZpbmUgQk5fUl9UT09fTUFOWV9JVEVSQVRJT05TCQkJIDExMwogI2RlZmluZSBCTl9SX1RPT19NQU5ZX1RFTVBPUkFSWV9WQVJJQUJMRVMJCSAxMDkKZGlmZiAtLWdpdCBhL2NyeXB0by9ibi9ibl9lcnIuYyBiL2NyeXB0by9ibi9ibl9lcnIuYwppbmRleCBjZmUyZWI5Li5mNzIyYjUyIDEwMDY0NAotLS0gYS9jcnlwdG8vYm4vYm5fZXJyLmMKKysrIGIvY3J5cHRvL2JuL2JuX2Vyci5jCkBAIC04Nyw2ICs4Nyw3IEBACiB7RVJSX0ZVTkMoQk5fRl9CTl9FWFApLAkiQk5fZXhwIn0sCiB7RVJSX0ZVTkMoQk5fRl9CTl9FWFBBTkQyKSwJImJuX2V4cGFuZDIifSwKIHtFUlJfRlVOQyhCTl9GX0JOX0VYUEFORF9JTlRFUk5BTCksCSJCTl9FWFBBTkRfSU5URVJOQUwifSwKK3tFUlJfRlVOQyhCTl9GX0JOX0dFTkVSQVRFX0RTQV9OT05DRSksCSJCTl9nZW5lcmF0ZV9kc2Ffbm9uY2UifSwKIHtFUlJfRlVOQyhCTl9GX0JOX0dGMk1fTU9EKSwJIkJOX0dGMm1fbW9kIn0sCiB7RVJSX0ZVTkMoQk5fRl9CTl9HRjJNX01PRF9FWFApLAkiQk5fR0YybV9tb2RfZXhwIn0sCiB7RVJSX0ZVTkMoQk5fRl9CTl9HRjJNX01PRF9NVUwpLAkiQk5fR0YybV9tb2RfbXVsIn0sCkBAIC0xMjksNiArMTMwLDcgQEAKIHtFUlJfUkVBU09OKEJOX1JfTk9UX0lOSVRJQUxJWkVEKSAgICAgICAgLCJub3QgaW5pdGlhbGl6ZWQifSwKIHtFUlJfUkVBU09OKEJOX1JfTk9fSU5WRVJTRSkgICAgICAgICAgICAgLCJubyBpbnZlcnNlIn0sCiB7RVJSX1JFQVNPTihCTl9SX05PX1NPTFVUSU9OKSAgICAgICAgICAgICwibm8gc29sdXRpb24ifSwKK3tFUlJfUkVBU09OKEJOX1JfUFJJVkFURV9LRVlfVE9PX0xBUkdFKSAgLCJwcml2YXRlIGtleSB0b28gbGFyZ2UifSwKIHtFUlJfUkVBU09OKEJOX1JfUF9JU19OT1RfUFJJTUUpICAgICAgICAgLCJwIGlzIG5vdCBwcmltZSJ9LAoge0VSUl9SRUFTT04oQk5fUl9UT09fTUFOWV9JVEVSQVRJT05TKSAgICAsInRvbyBtYW55IGl0ZXJhdGlvbnMifSwKIHtFUlJfUkVBU09OKEJOX1JfVE9PX01BTllfVEVNUE9SQVJZX1ZBUklBQkxFUyksInRvbyBtYW55IHRlbXBvcmFyeSB2YXJpYWJsZXMifSwKZGlmZiAtLWdpdCBhL2NyeXB0by9ibi9ibl9saWIuYyBiL2NyeXB0by9ibi9ibl9saWIuYwppbmRleCA3YTU2NzZkLi41NDYxZTZlIDEwMDY0NAotLS0gYS9jcnlwdG8vYm4vYm5fbGliLmMKKysrIGIvY3J5cHRvL2JuL2JuX2xpYi5jCkBAIC04MjQsMyArODI0LDU1IEBACiAJCX0KIAlyZXR1cm4gYm5fY21wX3dvcmRzKGEsYixjbCk7CiAJfQorCisvKiAKKyAqIENvbnN0YW50LXRpbWUgY29uZGl0aW9uYWwgc3dhcCBvZiBhIGFuZCBiLiAgCisgKiBhIGFuZCBiIGFyZSBzd2FwcGVkIGlmIGNvbmRpdGlvbiBpcyBub3QgMC4gIFRoZSBjb2RlIGFzc3VtZXMgdGhhdCBhdCBtb3N0IG9uZSBiaXQgb2YgY29uZGl0aW9uIGlzIHNldC4KKyAqIG53b3JkcyBpcyB0aGUgbnVtYmVyIG9mIHdvcmRzIHRvIHN3YXAuICBUaGUgY29kZSBhc3N1bWVzIHRoYXQgYXQgbGVhc3QgbndvcmRzIGFyZSBhbGxvY2F0ZWQgaW4gYm90aCBhIGFuZCBiLAorICogYW5kIHRoYXQgbm8gbW9yZSB0aGFuIG53b3JkcyBhcmUgdXNlZCBieSBlaXRoZXIgYSBvciBiLgorICogYSBhbmQgYiBjYW5ub3QgYmUgdGhlIHNhbWUgbnVtYmVyCisgKi8KK3ZvaWQgQk5fY29uc3R0aW1lX3N3YXAoQk5fVUxPTkcgY29uZGl0aW9uLCBCSUdOVU0gKmEsIEJJR05VTSAqYiwgaW50IG53b3JkcykKKwl7CisJQk5fVUxPTkcgdDsKKwlpbnQgaTsKKworCWJuX3djaGVja19zaXplKGEsIG53b3Jkcyk7CisJYm5fd2NoZWNrX3NpemUoYiwgbndvcmRzKTsKKworCWFzc2VydChhICE9IGIpOworCWFzc2VydCgoY29uZGl0aW9uICYgKGNvbmRpdGlvbiAtIDEpKSA9PSAwKTsKKwlhc3NlcnQoc2l6ZW9mKEJOX1VMT05HKSA+PSBzaXplb2YoaW50KSk7CisKKwljb25kaXRpb24gPSAoKGNvbmRpdGlvbiAtIDEpID4+IChCTl9CSVRTMiAtIDEpKSAtIDE7CisKKwl0ID0gKGEtPnRvcF5iLT50b3ApICYgY29uZGl0aW9uOworCWEtPnRvcCBePSB0OworCWItPnRvcCBePSB0OworCisjZGVmaW5lIEJOX0NPTlNUVElNRV9TV0FQKGluZCkgXAorCWRvIHsgXAorCQl0ID0gKGEtPmRbaW5kXSBeIGItPmRbaW5kXSkgJiBjb25kaXRpb247IFwKKwkJYS0+ZFtpbmRdIF49IHQ7IFwKKwkJYi0+ZFtpbmRdIF49IHQ7IFwKKwl9IHdoaWxlICgwKQorCisKKwlzd2l0Y2ggKG53b3JkcykgeworCWRlZmF1bHQ6CisJCWZvciAoaSA9IDEwOyBpIDwgbndvcmRzOyBpKyspIAorCQkJQk5fQ09OU1RUSU1FX1NXQVAoaSk7CisJCS8qIEZhbGx0aHJvdWdoICovCisJY2FzZSAxMDogQk5fQ09OU1RUSU1FX1NXQVAoOSk7IC8qIEZhbGx0aHJvdWdoICovCisJY2FzZSA5OiBCTl9DT05TVFRJTUVfU1dBUCg4KTsgLyogRmFsbHRocm91Z2ggKi8KKwljYXNlIDg6IEJOX0NPTlNUVElNRV9TV0FQKDcpOyAvKiBGYWxsdGhyb3VnaCAqLworCWNhc2UgNzogQk5fQ09OU1RUSU1FX1NXQVAoNik7IC8qIEZhbGx0aHJvdWdoICovCisJY2FzZSA2OiBCTl9DT05TVFRJTUVfU1dBUCg1KTsgLyogRmFsbHRocm91Z2ggKi8KKwljYXNlIDU6IEJOX0NPTlNUVElNRV9TV0FQKDQpOyAvKiBGYWxsdGhyb3VnaCAqLworCWNhc2UgNDogQk5fQ09OU1RUSU1FX1NXQVAoMyk7IC8qIEZhbGx0aHJvdWdoICovCisJY2FzZSAzOiBCTl9DT05TVFRJTUVfU1dBUCgyKTsgLyogRmFsbHRocm91Z2ggKi8KKwljYXNlIDI6IEJOX0NPTlNUVElNRV9TV0FQKDEpOyAvKiBGYWxsdGhyb3VnaCAqLworCWNhc2UgMTogQk5fQ09OU1RUSU1FX1NXQVAoMCk7CisJfQorI3VuZGVmIEJOX0NPTlNUVElNRV9TV0FQCit9CmRpZmYgLS1naXQgYS9jcnlwdG8vYm4vYm5fbW9udC5jIGIvY3J5cHRvL2JuL2JuX21vbnQuYwppbmRleCA0MjdiNWNmLi5lZTg1MzJjIDEwMDY0NAotLS0gYS9jcnlwdG8vYm4vYm5fbW9udC5jCisrKyBiL2NyeXB0by9ibi9ibl9tb250LmMKQEAgLTQ3OCwzMiArNDc4LDM4IEBACiBCTl9NT05UX0NUWCAqQk5fTU9OVF9DVFhfc2V0X2xvY2tlZChCTl9NT05UX0NUWCAqKnBtb250LCBpbnQgbG9jaywKIAkJCQkJY29uc3QgQklHTlVNICptb2QsIEJOX0NUWCAqY3R4KQogCXsKLQlpbnQgZ290X3dyaXRlX2xvY2sgPSAwOwogCUJOX01PTlRfQ1RYICpyZXQ7CiAKIAlDUllQVE9fcl9sb2NrKGxvY2spOwotCWlmICghKnBtb250KQotCQl7Ci0JCUNSWVBUT19yX3VubG9jayhsb2NrKTsKLQkJQ1JZUFRPX3dfbG9jayhsb2NrKTsKLQkJZ290X3dyaXRlX2xvY2sgPSAxOwotCi0JCWlmICghKnBtb250KQotCQkJewotCQkJcmV0ID0gQk5fTU9OVF9DVFhfbmV3KCk7Ci0JCQlpZiAocmV0ICYmICFCTl9NT05UX0NUWF9zZXQocmV0LCBtb2QsIGN0eCkpCi0JCQkJQk5fTU9OVF9DVFhfZnJlZShyZXQpOwotCQkJZWxzZQotCQkJCSpwbW9udCA9IHJldDsKLQkJCX0KLQkJfQotCQogCXJldCA9ICpwbW9udDsKLQkKLQlpZiAoZ290X3dyaXRlX2xvY2spCi0JCUNSWVBUT193X3VubG9jayhsb2NrKTsKKwlDUllQVE9fcl91bmxvY2sobG9jayk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCS8qIFdlIGRvbid0IHdhbnQgdG8gc2VyaWFsaXNlIGdsb2JhbGx5IHdoaWxlIGRvaW5nIG91ciBsYXp5LWluaXQgbWF0aCBpbgorCSAqIEJOX01PTlRfQ1RYX3NldC4gVGhhdCBwdW5pc2hlcyB0aHJlYWRzIHRoYXQgYXJlIGRvaW5nIGluZGVwZW5kZW50CisJICogdGhpbmdzLiBJbnN0ZWFkLCBwdW5pc2ggdGhlIGNhc2Ugd2hlcmUgbW9yZSB0aGFuIG9uZSB0aHJlYWQgdHJpZXMgdG8KKwkgKiBsYXp5LWluaXQgdGhlIHNhbWUgJ3Btb250JywgYnkgaGF2aW5nIGVhY2ggZG8gdGhlIGxhenktaW5pdCBtYXRoIHdvcmsKKwkgKiBpbmRlcGVuZGVudGx5IGFuZCBvbmx5IHVzZSB0aGUgb25lIGZyb20gdGhlIHRocmVhZCB0aGF0IHdpbnMgdGhlIHJhY2UKKwkgKiAodGhlIGxvc2VycyB0aHJvdyBhd2F5IHRoZSB3b3JrIHRoZXkndmUgZG9uZSkuICovCisJcmV0ID0gQk5fTU9OVF9DVFhfbmV3KCk7CisJaWYgKCFyZXQpCisJCXJldHVybiBOVUxMOworCWlmICghQk5fTU9OVF9DVFhfc2V0KHJldCwgbW9kLCBjdHgpKQorCQl7CisJCUJOX01PTlRfQ1RYX2ZyZWUocmV0KTsKKwkJcmV0dXJuIE5VTEw7CisJCX0KKworCS8qIFRoZSBsb2NrZWQgY29tcGFyZS1hbmQtc2V0LCBhZnRlciB0aGUgbG9jYWwgd29yayBpcyBkb25lLiAqLworCUNSWVBUT193X2xvY2sobG9jayk7CisJaWYgKCpwbW9udCkKKwkJeworCQlCTl9NT05UX0NUWF9mcmVlKHJldCk7CisJCXJldCA9ICpwbW9udDsKKwkJfQogCWVsc2UKLQkJQ1JZUFRPX3JfdW5sb2NrKGxvY2spOwotCQkKKwkJKnBtb250ID0gcmV0OworCUNSWVBUT193X3VubG9jayhsb2NrKTsKIAlyZXR1cm4gcmV0OwogCX0KZGlmZiAtLWdpdCBhL2NyeXB0by9ibi9ibl9yYW5kLmMgYi9jcnlwdG8vYm4vYm5fcmFuZC5jCmluZGV4IGIzNzZjMjguLjU1Njc2ZjAgMTAwNjQ0Ci0tLSBhL2NyeXB0by9ibi9ibl9yYW5kLmMKKysrIGIvY3J5cHRvL2JuL2JuX3JhbmQuYwpAQCAtMTE0LDYgKzExNCw3IEBACiAjaW5jbHVkZSAiY3J5cHRsaWIuaCIKICNpbmNsdWRlICJibl9sY2wuaCIKICNpbmNsdWRlIDxvcGVuc3NsL3JhbmQuaD4KKyNpbmNsdWRlIDxvcGVuc3NsL3NoYS5oPgogCiBzdGF0aWMgaW50IGJucmFuZChpbnQgcHNldWRvcmFuZCwgQklHTlVNICpybmQsIGludCBiaXRzLCBpbnQgdG9wLCBpbnQgYm90dG9tKQogCXsKQEAgLTMwMywzICszMDQsNzIgQEAKIAl7CiAJcmV0dXJuIGJuX3JhbmRfcmFuZ2UoMSwgciwgcmFuZ2UpOwogCX0KKworI2lmbmRlZiBPUEVOU1NMX05PX1NIQTUxMgorLyogQk5fZ2VuZXJhdGVfZHNhX25vbmNlIGdlbmVyYXRlcyBhIHJhbmRvbSBudW1iZXIgMCA8PSBvdXQgPCByYW5nZS4gVW5saWtlCisgKiBCTl9yYW5kX3JhbmdlLCBpdCBhbHNvIGluY2x1ZGVzIHRoZSBjb250ZW50cyBvZiB8cHJpdnwgYW5kIHxtZXNzYWdlfCBpbiB0aGUKKyAqIGdlbmVyYXRpb24gc28gdGhhdCBhbiBSTkcgZmFpbHVyZSBpc24ndCBmYXRhbCBhcyBsb25nIGFzIHxwcml2fCByZW1haW5zCisgKiBzZWNyZXQuIFRoaXMgaXMgaW50ZW5kZWQgZm9yIHVzZSBpbiBEU0EgYW5kIEVDRFNBIHdoZXJlIGFuIFJORyB3ZWFrbmVzcworICogbGVhZHMgZGlyZWN0bHkgdG8gcHJpdmF0ZSBrZXkgZXhwb3N1cmUgdW5sZXNzIHRoaXMgZnVuY3Rpb24gaXMgdXNlZC4gKi8KK2ludCBCTl9nZW5lcmF0ZV9kc2Ffbm9uY2UoQklHTlVNICpvdXQsIGNvbnN0IEJJR05VTSAqcmFuZ2UsIGNvbnN0IEJJR05VTSogcHJpdiwKKwkJCSAgY29uc3QgdW5zaWduZWQgY2hhciAqbWVzc2FnZSwgc2l6ZV90IG1lc3NhZ2VfbGVuLAorCQkJICBCTl9DVFggKmN0eCkKKwl7CisJU0hBNTEyX0NUWCBzaGE7CisJLyogV2UgdXNlIDUxMiBiaXRzIG9mIHJhbmRvbSBkYXRhIHBlciBpdGVyYXRpb24gdG8KKwkgKiBlbnN1cmUgdGhhdCB3ZSBoYXZlIGF0IGxlYXN0IHxyYW5nZXwgYml0cyBvZiByYW5kb21uZXNzLiAqLworCXVuc2lnbmVkIGNoYXIgcmFuZG9tX2J5dGVzWzY0XTsKKwl1bnNpZ25lZCBjaGFyIGRpZ2VzdFtTSEE1MTJfRElHRVNUX0xFTkdUSF07CisJdW5zaWduZWQgZG9uZSwgdG9kbzsKKwkvKiBXZSBnZW5lcmF0ZSB8cmFuZ2V8KzggYnl0ZXMgb2YgcmFuZG9tIG91dHB1dC4gKi8KKwljb25zdCB1bnNpZ25lZCBudW1fa19ieXRlcyA9IEJOX251bV9ieXRlcyhyYW5nZSkgKyA4OworCXVuc2lnbmVkIGNoYXIgcHJpdmF0ZV9ieXRlc1s5Nl07CisJdW5zaWduZWQgY2hhciAqa19ieXRlczsKKwlpbnQgcmV0ID0gMDsKKworCWtfYnl0ZXMgPSBPUEVOU1NMX21hbGxvYyhudW1fa19ieXRlcyk7CisJaWYgKCFrX2J5dGVzKQorCQlnb3RvIGVycjsKKworCS8qIFdlIGNvcHkgfHByaXZ8IGludG8gYSBsb2NhbCBidWZmZXIgdG8gYXZvaWQgZXhwb3NpbmcgaXRzIGxlbmd0aC4gKi8KKwl0b2RvID0gc2l6ZW9mKHByaXYtPmRbMF0pKnByaXYtPnRvcDsKKwlpZiAodG9kbyA+IHNpemVvZihwcml2YXRlX2J5dGVzKSkKKwkJeworCQkvKiBObyByZWFzb25hYmxlIERTQSBvciBFQ0RTQSBrZXkgc2hvdWxkIGhhdmUgYSBwcml2YXRlIGtleQorCQkgKiB0aGlzIGxhcmdlIGFuZCB3ZSBkb24ndCBoYW5kbGUgdGhpcyBjYXNlIGluIG9yZGVyIHRvIGF2b2lkCisJCSAqIGxlYWtpbmcgdGhlIGxlbmd0aCBvZiB0aGUgcHJpdmF0ZSBrZXkuICovCisJCUJOZXJyKEJOX0ZfQk5fR0VORVJBVEVfRFNBX05PTkNFLCBCTl9SX1BSSVZBVEVfS0VZX1RPT19MQVJHRSk7CisJCWdvdG8gZXJyOworCQl9CisJbWVtY3B5KHByaXZhdGVfYnl0ZXMsIHByaXYtPmQsIHRvZG8pOworCW1lbXNldChwcml2YXRlX2J5dGVzICsgdG9kbywgMCwgc2l6ZW9mKHByaXZhdGVfYnl0ZXMpIC0gdG9kbyk7CisKKwlmb3IgKGRvbmUgPSAwOyBkb25lIDwgbnVtX2tfYnl0ZXM7KSB7CisJCWlmIChSQU5EX2J5dGVzKHJhbmRvbV9ieXRlcywgc2l6ZW9mKHJhbmRvbV9ieXRlcykpICE9IDEpCisJCQlnb3RvIGVycjsKKwkJU0hBNTEyX0luaXQoJnNoYSk7CisJCVNIQTUxMl9VcGRhdGUoJnNoYSwgJmRvbmUsIHNpemVvZihkb25lKSk7CisJCVNIQTUxMl9VcGRhdGUoJnNoYSwgcHJpdmF0ZV9ieXRlcywgc2l6ZW9mKHByaXZhdGVfYnl0ZXMpKTsKKwkJU0hBNTEyX1VwZGF0ZSgmc2hhLCBtZXNzYWdlLCBtZXNzYWdlX2xlbik7CisJCVNIQTUxMl9VcGRhdGUoJnNoYSwgcmFuZG9tX2J5dGVzLCBzaXplb2YocmFuZG9tX2J5dGVzKSk7CisJCVNIQTUxMl9GaW5hbChkaWdlc3QsICZzaGEpOworCisJCXRvZG8gPSBudW1fa19ieXRlcyAtIGRvbmU7CisJCWlmICh0b2RvID4gU0hBNTEyX0RJR0VTVF9MRU5HVEgpCisJCQl0b2RvID0gU0hBNTEyX0RJR0VTVF9MRU5HVEg7CisJCW1lbWNweShrX2J5dGVzICsgZG9uZSwgZGlnZXN0LCB0b2RvKTsKKwkJZG9uZSArPSB0b2RvOworCX0KKworCWlmICghQk5fYmluMmJuKGtfYnl0ZXMsIG51bV9rX2J5dGVzLCBvdXQpKQorCQlnb3RvIGVycjsKKwlpZiAoQk5fbW9kKG91dCwgb3V0LCByYW5nZSwgY3R4KSAhPSAxKQorCQlnb3RvIGVycjsKKwlyZXQgPSAxOworCitlcnI6CisJaWYgKGtfYnl0ZXMpCisJCU9QRU5TU0xfZnJlZShrX2J5dGVzKTsKKwlyZXR1cm4gcmV0OworCX0KKyNlbmRpZiAgLyogT1BFTlNTTF9OT19TSEE1MTIgKi8KZGlmZiAtLWdpdCBhL2NyeXB0by9jbXMvY21zX2Vudi5jIGIvY3J5cHRvL2Ntcy9jbXNfZW52LmMKaW5kZXggYmUyMGIxYy4uYWRkMDBiZiAxMDA2NDQKLS0tIGEvY3J5cHRvL2Ntcy9jbXNfZW52LmMKKysrIGIvY3J5cHRvL2Ntcy9jbXNfZW52LmMKQEAgLTE4NSw2ICsxODUsOCBAQAogCWlmIChmbGFncyAmIENNU19VU0VfS0VZSUQpCiAJCXsKIAkJa3RyaS0+dmVyc2lvbiA9IDI7CisJCWlmIChlbnYtPnZlcnNpb24gPCAyKQorCQkJZW52LT52ZXJzaW9uID0gMjsKIAkJdHlwZSA9IENNU19SRUNJUElORk9fS0VZSURFTlRJRklFUjsKIAkJfQogCWVsc2UKZGlmZiAtLWdpdCBhL2NyeXB0by9jbXMvY21zX2xpYi5jIGIvY3J5cHRvL2Ntcy9jbXNfbGliLmMKaW5kZXggYjYyZDFiZi4uYmEwODI3OSAxMDA2NDQKLS0tIGEvY3J5cHRvL2Ntcy9jbXNfbGliLmMKKysrIGIvY3J5cHRvL2Ntcy9jbXNfbGliLmMKQEAgLTQ2NSw4ICs0NjUsNiBAQAogCXBjZXJ0cyA9IGNtc19nZXQwX2NlcnRpZmljYXRlX2Nob2ljZXMoY21zKTsKIAlpZiAoIXBjZXJ0cykKIAkJcmV0dXJuIDA7Ci0JaWYgKCFwY2VydHMpCi0JCXJldHVybiAwOwogCWZvciAoaSA9IDA7IGkgPCBza19DTVNfQ2VydGlmaWNhdGVDaG9pY2VzX251bSgqcGNlcnRzKTsgaSsrKQogCQl7CiAJCWNjaCA9IHNrX0NNU19DZXJ0aWZpY2F0ZUNob2ljZXNfdmFsdWUoKnBjZXJ0cywgaSk7CmRpZmYgLS1naXQgYS9jcnlwdG8vY21zL2Ntc19zZC5jIGIvY3J5cHRvL2Ntcy9jbXNfc2QuYwppbmRleCA3N2ZiZDEzLi41MWRkMzNhIDEwMDY0NAotLS0gYS9jcnlwdG8vY21zL2Ntc19zZC5jCisrKyBiL2NyeXB0by9jbXMvY21zX3NkLmMKQEAgLTE1OCw4ICsxNTgsOCBAQAogCQkJaWYgKHNkLT52ZXJzaW9uIDwgMykKIAkJCQlzZC0+dmVyc2lvbiA9IDM7CiAJCQl9Ci0JCWVsc2UKLQkJCXNkLT52ZXJzaW9uID0gMTsKKwkJZWxzZSBpZiAoc2ktPnZlcnNpb24gPCAxKQorCQkJc2ktPnZlcnNpb24gPSAxOwogCQl9CiAKIAlpZiAoc2QtPnZlcnNpb24gPCAxKQpkaWZmIC0tZ2l0IGEvY3J5cHRvL2Ntcy9jbXNfc21pbWUuYyBiL2NyeXB0by9jbXMvY21zX3NtaW1lLmMKaW5kZXggOGM1NmUzYS4uMWFmOWYzYSAxMDA2NDQKLS0tIGEvY3J5cHRvL2Ntcy9jbXNfc21pbWUuYworKysgYi9jcnlwdG8vY21zL2Ntc19zbWltZS5jCkBAIC02MTEsNyArNjExLDcgQEAKIAlTVEFDS19PRihDTVNfUmVjaXBpZW50SW5mbykgKnJpczsKIAlDTVNfUmVjaXBpZW50SW5mbyAqcmk7CiAJaW50IGksIHI7Ci0JaW50IGRlYnVnID0gMDsKKwlpbnQgZGVidWcgPSAwLCByaV9tYXRjaCA9IDA7CiAJcmlzID0gQ01TX2dldDBfUmVjaXBpZW50SW5mb3MoY21zKTsKIAlpZiAocmlzKQogCQlkZWJ1ZyA9IGNtcy0+ZC5lbnZlbG9wZWREYXRhLT5lbmNyeXB0ZWRDb250ZW50SW5mby0+ZGVidWc7CkBAIC02MjAsNiArNjIwLDcgQEAKIAkJcmkgPSBza19DTVNfUmVjaXBpZW50SW5mb192YWx1ZShyaXMsIGkpOwogCQlpZiAoQ01TX1JlY2lwaWVudEluZm9fdHlwZShyaSkgIT0gQ01TX1JFQ0lQSU5GT19UUkFOUykKIAkJCQljb250aW51ZTsKKwkJcmlfbWF0Y2ggPSAxOwogCQkvKiBJZiB3ZSBoYXZlIGEgY2VydCB0cnkgbWF0Y2hpbmcgUmVjaXBpZW50SW5mbwogCQkgKiBvdGhlcndpc2UgdHJ5IHRoZW0gYWxsLgogCQkgKi8KQEAgLTY1NSw3ICs2NTYsNyBAQAogCQkJfQogCQl9CiAJLyogSWYgbm8gY2VydCBhbmQgbm90IGRlYnVnZ2luZyBhbHdheXMgcmV0dXJuIHN1Y2Nlc3MgKi8KLQlpZiAoIWNlcnQgJiYgIWRlYnVnKQorCWlmIChyaV9tYXRjaCAmJiAhY2VydCAmJiAhZGVidWcpCiAJCXsKIAkJRVJSX2NsZWFyX2Vycm9yKCk7CiAJCXJldHVybiAxOwpkaWZmIC0tZ2l0IGEvY3J5cHRvL2NyeXB0bGliLmMgYi9jcnlwdG8vY3J5cHRsaWIuYwppbmRleCAzMDRjNmI3Li4wYjc3ZDhiIDEwMDY0NAotLS0gYS9jcnlwdG8vY3J5cHRsaWIuYworKysgYi9jcnlwdG8vY3J5cHRsaWIuYwpAQCAtODg5LDcgKzg4OSw3IEBACiAKICNpZiBkZWZpbmVkKF9XSU4zMl9XSU5OVCkgJiYgX1dJTjMyX1dJTk5UPj0weDAzMzMKICAgICAvKiB0aGlzIC0tLS0tLS0tLS0tLS12LS0tIGd1YXJkcyBOVC1zcGVjaWZpYyBjYWxscyAqLwotICAgIGlmIChHZXRWZXJzaW9uKCkgPCAweDgwMDAwMDAwICYmIE9QRU5TU0xfaXNzZXJ2aWNlKCkgPiAwKQorICAgIGlmIChjaGVja193aW5udCgpICYmIE9QRU5TU0xfaXNzZXJ2aWNlKCkgPiAwKQogICAgIHsJSEFORExFIGggPSBSZWdpc3RlckV2ZW50U291cmNlKDAsX1QoIk9QRU5TU0wiKSk7CiAJY29uc3QgVENIQVIgKnBtc2c9YnVmOwogCVJlcG9ydEV2ZW50KGgsRVZFTlRMT0dfRVJST1JfVFlQRSwwLDAsMCwxLDAsJnBtc2csMCk7CmRpZmYgLS1naXQgYS9jcnlwdG8vZHNhL2RzYS5oIGIvY3J5cHRvL2RzYS9kc2EuaAppbmRleCBhNmY2ZDBiLi43NTMxYzY1IDEwMDY0NAotLS0gYS9jcnlwdG8vZHNhL2RzYS5oCisrKyBiL2NyeXB0by9kc2EvZHNhLmgKQEAgLTk2LDYgKzk2LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBmYXN0ZXIgdmFyaWFibGUgc2xpZGluZyB3aW5kb3cgbWV0aG9kIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBiZSB1c2VkIGZvciBhbGwgZXhwb25lbnRzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIERTQV9GTEFHX05PTkNFX0ZST01fSEFTSAkweDA0IC8qIENhdXNlcyB0aGUgRFNBIG5vbmNlIHRvIGJlIGNhbGN1bGF0ZWQKKwkJCQkJCWZyb20gU0hBNTEyKHByaXZhdGVfa2V5ICsgSChtZXNzYWdlKSArCisJCQkJCQlyYW5kb20pLiBUaGlzIHN0cmVuZ3RoZW5zIERTQSBhZ2FpbnN0IGEKKwkJCQkJCXdlYWsgUFJORy4gKi8KIAogLyogSWYgdGhpcyBmbGFnIGlzIHNldCB0aGUgRFNBIG1ldGhvZCBpcyBGSVBTIGNvbXBsaWFudCBhbmQgY2FuIGJlIHVzZWQKICAqIGluIEZJUFMgbW9kZS4gVGhpcyBpcyBzZXQgaW4gdGhlIHZhbGlkYXRlZCBtb2R1bGUgbWV0aG9kLiBJZiBhbgpAQCAtMTMwLDggKzEzNCw5IEBACiAJewogCWNvbnN0IGNoYXIgKm5hbWU7CiAJRFNBX1NJRyAqICgqZHNhX2RvX3NpZ24pKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRnc3QsIGludCBkbGVuLCBEU0EgKmRzYSk7Ci0JaW50ICgqZHNhX3NpZ25fc2V0dXApKERTQSAqZHNhLCBCTl9DVFggKmN0eF9pbiwgQklHTlVNICoqa2ludnAsCi0JCQkJCQkJCUJJR05VTSAqKnJwKTsKKwlpbnQgKCpkc2Ffc2lnbl9zZXR1cCkoRFNBICpkc2EsIEJOX0NUWCAqY3R4X2luLAorCQkJICAgICAgQklHTlVNICoqa2ludnAsIEJJR05VTSAqKnJwLAorCQkJICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqZGdzdCwgaW50IGRsZW4pOwogCWludCAoKmRzYV9kb192ZXJpZnkpKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRnc3QsIGludCBkZ3N0X2xlbiwKIAkJCSAgICAgRFNBX1NJRyAqc2lnLCBEU0EgKmRzYSk7CiAJaW50ICgqZHNhX21vZF9leHApKERTQSAqZHNhLCBCSUdOVU0gKnJyLCBCSUdOVU0gKmExLCBCSUdOVU0gKnAxLApAQCAtMzE3LDYgKzMyMiw3IEBACiAjZGVmaW5lIERTQV9SX01JU1NJTkdfUEFSQU1FVEVSUwkJCSAxMDEKICNkZWZpbmUgRFNBX1JfTU9EVUxVU19UT09fTEFSR0UJCQkJIDEwMwogI2RlZmluZSBEU0FfUl9ORUVEX05FV19TRVRVUF9WQUxVRVMJCQkgMTEwCisjZGVmaW5lIERTQV9SX05PTkNFX0NBTk5PVF9CRV9QUkVDT01QVVRFRAkJIDExMgogI2RlZmluZSBEU0FfUl9OT05fRklQU19EU0FfTUVUSE9ECQkJIDExMQogI2RlZmluZSBEU0FfUl9OT19QQVJBTUVURVJTX1NFVAkJCQkgMTA3CiAjZGVmaW5lIERTQV9SX1BBUkFNRVRFUl9FTkNPRElOR19FUlJPUgkJCSAxMDUKZGlmZiAtLWdpdCBhL2NyeXB0by9kc2EvZHNhX2Vyci5jIGIvY3J5cHRvL2RzYS9kc2FfZXJyLmMKaW5kZXggMDA1NDViNy4uZTYxNzFjYyAxMDA2NDQKLS0tIGEvY3J5cHRvL2RzYS9kc2FfZXJyLmMKKysrIGIvY3J5cHRvL2RzYS9kc2FfZXJyLmMKQEAgLTEwOSw2ICsxMDksNyBAQAoge0VSUl9SRUFTT04oRFNBX1JfTUlTU0lOR19QQVJBTUVURVJTKSAgICAsIm1pc3NpbmcgcGFyYW1ldGVycyJ9LAoge0VSUl9SRUFTT04oRFNBX1JfTU9EVUxVU19UT09fTEFSR0UpICAgICAsIm1vZHVsdXMgdG9vIGxhcmdlIn0sCiB7RVJSX1JFQVNPTihEU0FfUl9ORUVEX05FV19TRVRVUF9WQUxVRVMpICwibmVlZCBuZXcgc2V0dXAgdmFsdWVzIn0sCit7RVJSX1JFQVNPTihEU0FfUl9OT05DRV9DQU5OT1RfQkVfUFJFQ09NUFVURUQpLCJub25jZSBjYW5ub3QgYmUgcHJlY29tcHV0ZWQifSwKIHtFUlJfUkVBU09OKERTQV9SX05PTl9GSVBTX0RTQV9NRVRIT0QpICAgLCJub24gZmlwcyBkc2EgbWV0aG9kIn0sCiB7RVJSX1JFQVNPTihEU0FfUl9OT19QQVJBTUVURVJTX1NFVCkgICAgICwibm8gcGFyYW1ldGVycyBzZXQifSwKIHtFUlJfUkVBU09OKERTQV9SX1BBUkFNRVRFUl9FTkNPRElOR19FUlJPUiksInBhcmFtZXRlciBlbmNvZGluZyBlcnJvciJ9LApkaWZmIC0tZ2l0IGEvY3J5cHRvL2RzYS9kc2Ffb3NzbC5jIGIvY3J5cHRvL2RzYS9kc2Ffb3NzbC5jCmluZGV4IGIzZDc4ZTUuLjE3N2ZjNTQgMTAwNjQ0Ci0tLSBhL2NyeXB0by9kc2EvZHNhX29zc2wuYworKysgYi9jcnlwdG8vZHNhL2RzYV9vc3NsLmMKQEAgLTY3LDcgKzY3LDkgQEAKICNpbmNsdWRlIDxvcGVuc3NsL2FzbjEuaD4KIAogc3RhdGljIERTQV9TSUcgKmRzYV9kb19zaWduKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRnc3QsIGludCBkbGVuLCBEU0EgKmRzYSk7Ci1zdGF0aWMgaW50IGRzYV9zaWduX3NldHVwKERTQSAqZHNhLCBCTl9DVFggKmN0eF9pbiwgQklHTlVNICoqa2ludnAsIEJJR05VTSAqKnJwKTsKK3N0YXRpYyBpbnQgZHNhX3NpZ25fc2V0dXAoRFNBICpkc2EsIEJOX0NUWCAqY3R4X2luLAorCQkJICBCSUdOVU0gKipraW52cCwgQklHTlVNICoqcnAsCisJCQkgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRnc3QsIGludCBkbGVuKTsKIHN0YXRpYyBpbnQgZHNhX2RvX3ZlcmlmeShjb25zdCB1bnNpZ25lZCBjaGFyICpkZ3N0LCBpbnQgZGdzdF9sZW4sIERTQV9TSUcgKnNpZywKIAkJCSBEU0EgKmRzYSk7CiBzdGF0aWMgaW50IGRzYV9pbml0KERTQSAqZHNhKTsKQEAgLTE1NCw3ICsxNTYsOCBAQAogcmVkbzoKIAlpZiAoKGRzYS0+a2ludiA9PSBOVUxMKSB8fCAoZHNhLT5yID09IE5VTEwpKQogCQl7Ci0JCWlmICghRFNBX3NpZ25fc2V0dXAoZHNhLGN0eCwma2ludiwmcikpIGdvdG8gZXJyOworCQlpZiAoIWRzYS0+bWV0aC0+ZHNhX3NpZ25fc2V0dXAoZHNhLGN0eCwma2ludiwmcixkZ3N0LGRsZW4pKQorCQkJZ290byBlcnI7CiAJCX0KIAllbHNlCiAJCXsKQEAgLTIxMyw3ICsyMTYsOSBAQAogCXJldHVybihyZXQpOwogCX0KIAotc3RhdGljIGludCBkc2Ffc2lnbl9zZXR1cChEU0EgKmRzYSwgQk5fQ1RYICpjdHhfaW4sIEJJR05VTSAqKmtpbnZwLCBCSUdOVU0gKipycCkKK3N0YXRpYyBpbnQgZHNhX3NpZ25fc2V0dXAoRFNBICpkc2EsIEJOX0NUWCAqY3R4X2luLAorCQkJICBCSUdOVU0gKipraW52cCwgQklHTlVNICoqcnAsCisJCQkgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRnc3QsIGludCBkbGVuKQogCXsKIAlCTl9DVFggKmN0eDsKIAlCSUdOVU0gayxrcSwqSywqa2ludj1OVUxMLCpyPU5VTEw7CkBAIC0yMzksOCArMjQ0LDIxIEBACiAKIAkvKiBHZXQgcmFuZG9tIGsgKi8KIAlkbwotCQlpZiAoIUJOX3JhbmRfcmFuZ2UoJmssIGRzYS0+cSkpIGdvdG8gZXJyOwotCXdoaWxlIChCTl9pc196ZXJvKCZrKSk7CisJCXsKKyNpZm5kZWYgT1BFTlNTTF9OT19TSEE1MTIKKwkJaWYgKGRzYS0+ZmxhZ3MgJiBEU0FfRkxBR19OT05DRV9GUk9NX0hBU0gpCisJCQl7CisJCQkvKiBJZiBEU0FfRkxBR19OT05DRV9GUk9NX0hBU0ggaXMgc2V0IHRoZW4gd2UgY2FsY3VsYXRlIGsgZnJvbQorCQkJICogU0hBNTEyKHByaXZhdGVfa2V5ICsgSChtZXNzYWdlKSArIHJhbmRvbSkuIFRoaXMgcHJvdGVjdHMgdGhlCisJCQkgKiBwcml2YXRlIGtleSBmcm9tIGEgd2VhayBQUk5HLiAqLworCQkJaWYgKCFCTl9nZW5lcmF0ZV9kc2Ffbm9uY2UoJmssIGRzYS0+cSwgZHNhLT5wcml2X2tleSwgZGdzdCwKKwkJCQkJCSAgIGRsZW4sIGN0eCkpCisJCQkJZ290byBlcnI7CisJCQl9CisJCWVsc2UKKyNlbmRpZgorCQkJaWYgKCFCTl9yYW5kX3JhbmdlKCZrLCBkc2EtPnEpKSBnb3RvIGVycjsKKwkJfSB3aGlsZSAoQk5faXNfemVybygmaykpOwogCWlmICgoZHNhLT5mbGFncyAmIERTQV9GTEFHX05PX0VYUF9DT05TVFRJTUUpID09IDApCiAJCXsKIAkJQk5fc2V0X2ZsYWdzKCZrLCBCTl9GTEdfQ09OU1RUSU1FKTsKZGlmZiAtLWdpdCBhL2NyeXB0by9kc2EvZHNhX3NpZ24uYyBiL2NyeXB0by9kc2EvZHNhX3NpZ24uYwppbmRleCBjM2NjMzY0Li44YWNlMzAwIDEwMDY0NAotLS0gYS9jcnlwdG8vZHNhL2RzYV9zaWduLmMKKysrIGIvY3J5cHRvL2RzYS9kc2Ffc2lnbi5jCkBAIC04Niw3ICs4NiwxNCBAQAogCQlyZXR1cm4gMDsKIAkJfQogI2VuZGlmCi0JcmV0dXJuIGRzYS0+bWV0aC0+ZHNhX3NpZ25fc2V0dXAoZHNhLCBjdHhfaW4sIGtpbnZwLCBycCk7CisJaWYgKGRzYS0+ZmxhZ3MgJiBEU0FfRkxBR19OT05DRV9GUk9NX0hBU0gpCisJCXsKKwkJLyogWW91IGNhbm5vdCBwcmVjb21wdXRlIHRoZSBEU0Egbm9uY2UgaWYgaXQgaXMgcmVxdWlyZWQgdG8KKwkJICogZGVwZW5kIG9uIHRoZSBtZXNzYWdlLiAqLworCQlEU0FlcnIoRFNBX0ZfRFNBX1NJR05fU0VUVVAsIERTQV9SX05PTkNFX0NBTk5PVF9CRV9QUkVDT01QVVRFRCk7CisJCXJldHVybiAwOworCQl9CisJcmV0dXJuIGRzYS0+bWV0aC0+ZHNhX3NpZ25fc2V0dXAoZHNhLCBjdHhfaW4sIGtpbnZwLCBycCwgTlVMTCwgMCk7CiAJfQogCiBEU0FfU0lHICpEU0FfU0lHX25ldyh2b2lkKQpkaWZmIC0tZ2l0IGEvY3J5cHRvL2Rzby9kc29fZGxmY24uYyBiL2NyeXB0by9kc28vZHNvX2RsZmNuLmMKaW5kZXggNWYyMjU0OC4uNGE1NmFhYyAxMDA2NDQKLS0tIGEvY3J5cHRvL2Rzby9kc29fZGxmY24uYworKysgYi9jcnlwdG8vZHNvL2Rzb19kbGZjbi5jCkBAIC00NjQsNyArNDY0LDcgQEAKIAkJcmV0dXJuIGxlbjsKIAkJfQogCi0JRVJSX2FkZF9lcnJvcl9kYXRhKDQsICJkbGZjbl9wYXRoYnlhZGRyKCk6ICIsIGRsZXJyb3IoKSk7CisJRVJSX2FkZF9lcnJvcl9kYXRhKDIsICJkbGZjbl9wYXRoYnlhZGRyKCk6ICIsIGRsZXJyb3IoKSk7CiAjZW5kaWYKIAlyZXR1cm4gLTE7CiAJfQpkaWZmIC0tZ2l0IGEvY3J5cHRvL2VjL2VjLmggYi9jcnlwdG8vZWMvZWMuaAppbmRleCBkZmU4NzEwLi5kMDA4YTBkIDEwMDY0NAotLS0gYS9jcnlwdG8vZWMvZWMuaAorKysgYi9jcnlwdG8vZWMvZWMuaApAQCAtODE5LDYgKzgxOSwxNyBAQAogLyogd3JhcHBlciBmdW5jdGlvbnMgZm9yIHRoZSB1bmRlcmx5aW5nIEVDX0dST1VQIG9iamVjdCAqLwogdm9pZCBFQ19LRVlfc2V0X2FzbjFfZmxhZyhFQ19LRVkgKmVja2V5LCBpbnQgYXNuMV9mbGFnKTsKIAorLyoqIFNldHMgd2hldGhlciBFQ0RTQSBvcGVyYXRpb25zIHdpdGggdGhlIGdpdmVuIGtleSB3aWxsIGNhbGN1bGF0ZSB0aGVpciBrCisgKiB2YWx1ZSBmcm9tIFNIQTUxMihwcml2YXRlX2tleSArIG1lc3NhZ2UgKyByYW5kb20pIGluIG9yZGVyIHRvIHByb3RlY3QKKyAqIGFnYWluc3QgYSB3ZWFrIFBSTkcuCisgKiBccGFyYW0gIG9uICBXaGV0aGVyIHRvIGNhbGN1bGF0ZSBrIGZyb20gYSBoYXNoIG9yIG5vdAorICovCit2b2lkIEVDX0tFWV9zZXRfbm9uY2VfZnJvbV9oYXNoKEVDX0tFWSAqa2V5LCBpbnQgb24pOworCisvKiogUmV0dXJucyB0aGUgdmFsdWUgb2Ygbm9uY2VfZnJvbV9oYXNoCisgKi8KK2ludCBFQ19LRVlfZ2V0X25vbmNlX2Zyb21faGFzaChjb25zdCBFQ19LRVkgKmtleSk7CisKIC8qKiBDcmVhdGVzIGEgdGFibGUgb2YgcHJlLWNvbXB1dGVkIG11bHRpcGxlcyBvZiB0aGUgZ2VuZXJhdG9yIHRvIAogICogIGFjY2VsZXJhdGUgZnVydGhlciBFQ19LRVkgb3BlcmF0aW9ucy4KICAqICBccGFyYW0gIGtleSAgRUNfS0VZIG9iamVjdApkaWZmIC0tZ2l0IGEvY3J5cHRvL2VjL2VjMl9tdWx0LmMgYi9jcnlwdG8vZWMvZWMyX211bHQuYwppbmRleCAyNmY0YTc4Li4xYzU3NWRjIDEwMDY0NAotLS0gYS9jcnlwdG8vZWMvZWMyX211bHQuYworKysgYi9jcnlwdG8vZWMvZWMyX211bHQuYwpAQCAtMjA4LDExICsyMDgsMTUgQEAKIAlyZXR1cm4gcmV0OwogCX0KIAorCiAvKiBDb21wdXRlcyBzY2FsYXIqcG9pbnQgYW5kIHN0b3JlcyB0aGUgcmVzdWx0IGluIHIuCiAgKiBwb2ludCBjYW4gbm90IGVxdWFsIHIuCi0gKiBVc2VzIGFsZ29yaXRobSAyUCBvZgorICogVXNlcyBhIG1vZGlmaWVkIGFsZ29yaXRobSAyUCBvZgogICogICAgIExvcGV6LCBKLiBhbmQgRGFoYWIsIFIuICAiRmFzdCBtdWx0aXBsaWNhdGlvbiBvbiBlbGxpcHRpYyBjdXJ2ZXMgb3ZlciAKICAqICAgICBHRigyXm0pIHdpdGhvdXQgcHJlY29tcHV0YXRpb24iIChDSEVTICc5OSwgTE5DUyAxNzE3KS4KKyAqCisgKiBUbyBwcm90ZWN0IGFnYWluc3Qgc2lkZS1jaGFubmVsIGF0dGFjayB0aGUgZnVuY3Rpb24gdXNlcyBjb25zdGFudCB0aW1lIHN3YXAsCisgKiBhdm9pZGluZyBjb25kaXRpb25hbCBicmFuY2hlcy4KICAqLwogc3RhdGljIGludCBlY19HRjJtX21vbnRnb21lcnlfcG9pbnRfbXVsdGlwbHkoY29uc3QgRUNfR1JPVVAgKmdyb3VwLCBFQ19QT0lOVCAqciwgY29uc3QgQklHTlVNICpzY2FsYXIsCiAJY29uc3QgRUNfUE9JTlQgKnBvaW50LCBCTl9DVFggKmN0eCkKQEAgLTI0Niw2ICsyNTAsMTEgQEAKIAl4MiA9ICZyLT5YOwogCXoyID0gJnItPlk7CiAKKwlibl93ZXhwYW5kKHgxLCBncm91cC0+ZmllbGQudG9wKTsKKwlibl93ZXhwYW5kKHoxLCBncm91cC0+ZmllbGQudG9wKTsKKwlibl93ZXhwYW5kKHgyLCBncm91cC0+ZmllbGQudG9wKTsKKwlibl93ZXhwYW5kKHoyLCBncm91cC0+ZmllbGQudG9wKTsKKwogCWlmICghQk5fR0YybV9tb2RfYXJyKHgxLCAmcG9pbnQtPlgsIGdyb3VwLT5wb2x5KSkgZ290byBlcnI7IC8qIHgxID0geCAqLwogCWlmICghQk5fb25lKHoxKSkgZ290byBlcnI7IC8qIHoxID0gMSAqLwogCWlmICghZ3JvdXAtPm1ldGgtPmZpZWxkX3Nxcihncm91cCwgejIsIHgxLCBjdHgpKSBnb3RvIGVycjsgLyogejIgPSB4MV4yID0geF4yICovCkBAIC0yNzAsMTYgKzI3OSwxMiBAQAogCQl3b3JkID0gc2NhbGFyLT5kW2ldOwogCQl3aGlsZSAobWFzaykKIAkJCXsKLQkJCWlmICh3b3JkICYgbWFzaykKLQkJCQl7Ci0JCQkJaWYgKCFnZjJtX01hZGQoZ3JvdXAsICZwb2ludC0+WCwgeDEsIHoxLCB4MiwgejIsIGN0eCkpIGdvdG8gZXJyOwotCQkJCWlmICghZ2YybV9NZG91YmxlKGdyb3VwLCB4MiwgejIsIGN0eCkpIGdvdG8gZXJyOwotCQkJCX0KLQkJCWVsc2UKLQkJCQl7Ci0JCQkJaWYgKCFnZjJtX01hZGQoZ3JvdXAsICZwb2ludC0+WCwgeDIsIHoyLCB4MSwgejEsIGN0eCkpIGdvdG8gZXJyOwotCQkJCWlmICghZ2YybV9NZG91YmxlKGdyb3VwLCB4MSwgejEsIGN0eCkpIGdvdG8gZXJyOwotCQkJCX0KKwkJCUJOX2NvbnN0dGltZV9zd2FwKHdvcmQgJiBtYXNrLCB4MSwgeDIsIGdyb3VwLT5maWVsZC50b3ApOworCQkJQk5fY29uc3R0aW1lX3N3YXAod29yZCAmIG1hc2ssIHoxLCB6MiwgZ3JvdXAtPmZpZWxkLnRvcCk7CisJCQlpZiAoIWdmMm1fTWFkZChncm91cCwgJnBvaW50LT5YLCB4MiwgejIsIHgxLCB6MSwgY3R4KSkgZ290byBlcnI7CisJCQlpZiAoIWdmMm1fTWRvdWJsZShncm91cCwgeDEsIHoxLCBjdHgpKSBnb3RvIGVycjsKKwkJCUJOX2NvbnN0dGltZV9zd2FwKHdvcmQgJiBtYXNrLCB4MSwgeDIsIGdyb3VwLT5maWVsZC50b3ApOworCQkJQk5fY29uc3R0aW1lX3N3YXAod29yZCAmIG1hc2ssIHoxLCB6MiwgZ3JvdXAtPmZpZWxkLnRvcCk7CiAJCQltYXNrID4+PSAxOwogCQkJfQogCQltYXNrID0gQk5fVEJJVDsKZGlmZiAtLWdpdCBhL2NyeXB0by9lYy9lY19hbWV0aC5jIGIvY3J5cHRvL2VjL2VjX2FtZXRoLmMKaW5kZXggMGNlNDUyNC4uZjcxNWEyMyAxMDA2NDQKLS0tIGEvY3J5cHRvL2VjL2VjX2FtZXRoLmMKKysrIGIvY3J5cHRvL2VjL2VjX2FtZXRoLmMKQEAgLTM1Miw2ICszNTIsNyBAQAogCQlFQ19LRVlfc2V0X2VuY19mbGFncyhlY19rZXksIG9sZF9mbGFncyk7CiAJCU9QRU5TU0xfZnJlZShlcCk7CiAJCUVDZXJyKEVDX0ZfRUNLRVlfUFJJVl9FTkNPREUsIEVSUl9SX0VDX0xJQik7CisJCXJldHVybiAwOwogCX0KIAkvKiByZXN0b3JlIG9sZCBlbmNvZGluZyBmbGFncyAqLwogCUVDX0tFWV9zZXRfZW5jX2ZsYWdzKGVjX2tleSwgb2xkX2ZsYWdzKTsKZGlmZiAtLWdpdCBhL2NyeXB0by9lYy9lY19hc24xLmMgYi9jcnlwdG8vZWMvZWNfYXNuMS5jCmluZGV4IDE0NTgwN2IuLmU5NGYzNGUgMTAwNjQ0Ci0tLSBhL2NyeXB0by9lYy9lY19hc24xLmMKKysrIGIvY3J5cHRvL2VjL2VjX2FzbjEuYwpAQCAtMTQzNSw4ICsxNDM1LDExIEBACiAJCQkJKm91dCwgYnVmX2xlbiwgTlVMTCkpCiAJCXsKIAkJRUNlcnIoRUNfRl9JMk9fRUNQVUJMSUNLRVksIEVSUl9SX0VDX0xJQik7Ci0JCU9QRU5TU0xfZnJlZSgqb3V0KTsKLQkJKm91dCA9IE5VTEw7CisJCWlmIChuZXdfYnVmZmVyKQorCQkJeworCQkJT1BFTlNTTF9mcmVlKCpvdXQpOworCQkJKm91dCA9IE5VTEw7CisJCQl9CiAJCXJldHVybiAwOwogCQl9CiAJaWYgKCFuZXdfYnVmZmVyKQpkaWZmIC0tZ2l0IGEvY3J5cHRvL2VjL2VjX2tleS5jIGIvY3J5cHRvL2VjL2VjX2tleS5jCmluZGV4IDdmYTI0NzUuLjczZGQ3YjkgMTAwNjQ0Ci0tLSBhL2NyeXB0by9lYy9lY19rZXkuYworKysgYi9jcnlwdG8vZWMvZWNfa2V5LmMKQEAgLTg1LDYgKzg1LDcgQEAKIAlyZXQtPnB1Yl9rZXkgPSBOVUxMOwogCXJldC0+cHJpdl9rZXk9IE5VTEw7CiAJcmV0LT5lbmNfZmxhZz0gMDsgCisJcmV0LT5ub25jZV9mcm9tX2hhc2hfZmxhZyA9IDA7CiAJcmV0LT5jb252X2Zvcm0gPSBQT0lOVF9DT05WRVJTSU9OX1VOQ09NUFJFU1NFRDsKIAlyZXQtPnJlZmVyZW5jZXM9IDE7CiAJcmV0LT5tZXRob2RfZGF0YSA9IE5VTEw7CkBAIC0xOTgsNiArMTk5LDcgQEAKIAogCS8qIGNvcHkgdGhlIHJlc3QgKi8KIAlkZXN0LT5lbmNfZmxhZyAgPSBzcmMtPmVuY19mbGFnOworCWRlc3QtPm5vbmNlX2Zyb21faGFzaF9mbGFnID0gc3JjLT5ub25jZV9mcm9tX2hhc2hfZmxhZzsKIAlkZXN0LT5jb252X2Zvcm0gPSBzcmMtPmNvbnZfZm9ybTsKIAlkZXN0LT52ZXJzaW9uICAgPSBzcmMtPnZlcnNpb247CiAJZGVzdC0+ZmxhZ3MgPSBzcmMtPmZsYWdzOwpAQCAtNTA1LDYgKzUwNywxNiBAQAogCWtleS0+ZW5jX2ZsYWcgPSBmbGFnczsKIAl9CiAKK2ludCBFQ19LRVlfZ2V0X25vbmNlX2Zyb21faGFzaChjb25zdCBFQ19LRVkgKmtleSkKKwl7CisJcmV0dXJuIGtleS0+bm9uY2VfZnJvbV9oYXNoX2ZsYWc7CisJfQorCit2b2lkIEVDX0tFWV9zZXRfbm9uY2VfZnJvbV9oYXNoKEVDX0tFWSAqa2V5LCBpbnQgb24pCisJeworCWtleS0+bm9uY2VfZnJvbV9oYXNoX2ZsYWcgPSBvbiAhPSAwOworCX0KKwogcG9pbnRfY29udmVyc2lvbl9mb3JtX3QgRUNfS0VZX2dldF9jb252X2Zvcm0oY29uc3QgRUNfS0VZICprZXkpCiAJewogCXJldHVybiBrZXktPmNvbnZfZm9ybTsKZGlmZiAtLWdpdCBhL2NyeXB0by9lYy9lY19sY2wuaCBiL2NyeXB0by9lYy9lY19sY2wuaAppbmRleCBkYTc5NjdkLi5kYWU5MTQ4IDEwMDY0NAotLS0gYS9jcnlwdG8vZWMvZWNfbGNsLmgKKysrIGIvY3J5cHRvL2VjL2VjX2xjbC5oCkBAIC0yNDYsNiArMjQ2LDcgQEAKIAlCSUdOVU0JICpwcml2X2tleTsKIAogCXVuc2lnbmVkIGludCBlbmNfZmxhZzsKKwljaGFyIG5vbmNlX2Zyb21faGFzaF9mbGFnOwogCXBvaW50X2NvbnZlcnNpb25fZm9ybV90IGNvbnZfZm9ybTsKIAogCWludCAJcmVmZXJlbmNlczsKQEAgLTQwNCw3ICs0MDUsNyBAQAogaW50IGVjX0dGMm1fcHJlY29tcHV0ZV9tdWx0KEVDX0dST1VQICpncm91cCwgQk5fQ1RYICpjdHgpOwogaW50IGVjX0dGMm1faGF2ZV9wcmVjb21wdXRlX211bHQoY29uc3QgRUNfR1JPVVAgKmdyb3VwKTsKIAotI2lmbmRlZiBPUEVOU1NMX0VDX05JU1RQXzY0X0dDQ18xMjgKKyNpZm5kZWYgT1BFTlNTTF9OT19FQ19OSVNUUF82NF9HQ0NfMTI4CiAvKiBtZXRob2QgZnVuY3Rpb25zIGluIGVjcF9uaXN0cDIyNC5jICovCiBpbnQgZWNfR0ZwX25pc3RwMjI0X2dyb3VwX2luaXQoRUNfR1JPVVAgKmdyb3VwKTsKIGludCBlY19HRnBfbmlzdHAyMjRfZ3JvdXBfc2V0X2N1cnZlKEVDX0dST1VQICpncm91cCwgY29uc3QgQklHTlVNICpwLCBjb25zdCBCSUdOVU0gKmEsIGNvbnN0IEJJR05VTSAqbiwgQk5fQ1RYICopOwpkaWZmIC0tZ2l0IGEvY3J5cHRvL2VjZHNhL2VjZHNhLmggYi9jcnlwdG8vZWNkc2EvZWNkc2EuaAppbmRleCA3ZmI1MjU0Li5kYzZhMzZiIDEwMDY0NAotLS0gYS9jcnlwdG8vZWNkc2EvZWNkc2EuaAorKysgYi9jcnlwdG8vZWNkc2EvZWNkc2EuaApAQCAtMjUwLDYgKzI1MCw3IEBACiAjZGVmaW5lIEVDRFNBX1JfRVJSX0VDX0xJQgkJCQkgMTAyCiAjZGVmaW5lIEVDRFNBX1JfTUlTU0lOR19QQVJBTUVURVJTCQkJIDEwMwogI2RlZmluZSBFQ0RTQV9SX05FRURfTkVXX1NFVFVQX1ZBTFVFUwkJCSAxMDYKKyNkZWZpbmUgRUNEU0FfUl9OT05DRV9DQU5OT1RfQkVfUFJFQ09NUFVURUQJCSAxMDgKICNkZWZpbmUgRUNEU0FfUl9OT05fRklQU19NRVRIT0QJCQkJIDEwNwogI2RlZmluZSBFQ0RTQV9SX1JBTkRPTV9OVU1CRVJfR0VORVJBVElPTl9GQUlMRUQJCSAxMDQKICNkZWZpbmUgRUNEU0FfUl9TSUdOQVRVUkVfTUFMTE9DX0ZBSUxFRAkJCSAxMDUKZGlmZiAtLWdpdCBhL2NyeXB0by9lY2RzYS9lY3NfZXJyLmMgYi9jcnlwdG8vZWNkc2EvZWNzX2Vyci5jCmluZGV4IDgxNTQyZTYuLjc0MDZjNmQgMTAwNjQ0Ci0tLSBhL2NyeXB0by9lY2RzYS9lY3NfZXJyLmMKKysrIGIvY3J5cHRvL2VjZHNhL2Vjc19lcnIuYwpAQCAtODUsNiArODUsNyBAQAoge0VSUl9SRUFTT04oRUNEU0FfUl9FUlJfRUNfTElCKSAgICAgICAgICAsImVyciBlYyBsaWIifSwKIHtFUlJfUkVBU09OKEVDRFNBX1JfTUlTU0lOR19QQVJBTUVURVJTKSAgLCJtaXNzaW5nIHBhcmFtZXRlcnMifSwKIHtFUlJfUkVBU09OKEVDRFNBX1JfTkVFRF9ORVdfU0VUVVBfVkFMVUVTKSwibmVlZCBuZXcgc2V0dXAgdmFsdWVzIn0sCit7RVJSX1JFQVNPTihFQ0RTQV9SX05PTkNFX0NBTk5PVF9CRV9QUkVDT01QVVRFRCksIm5vbmNlIGNhbm5vdCBiZSBwcmVjb21wdXRlZCJ9LAoge0VSUl9SRUFTT04oRUNEU0FfUl9OT05fRklQU19NRVRIT0QpICAgICAsIm5vbiBmaXBzIG1ldGhvZCJ9LAoge0VSUl9SRUFTT04oRUNEU0FfUl9SQU5ET01fTlVNQkVSX0dFTkVSQVRJT05fRkFJTEVEKSwicmFuZG9tIG51bWJlciBnZW5lcmF0aW9uIGZhaWxlZCJ9LAoge0VSUl9SRUFTT04oRUNEU0FfUl9TSUdOQVRVUkVfTUFMTE9DX0ZBSUxFRCksInNpZ25hdHVyZSBtYWxsb2MgZmFpbGVkIn0sCmRpZmYgLS1naXQgYS9jcnlwdG8vZWNkc2EvZWNzX2xvY2wuaCBiL2NyeXB0by9lY2RzYS9lY3NfbG9jbC5oCmluZGV4IGNiM2JlMTMuLjQ2ZjdhZDkgMTAwNjQ0Ci0tLSBhL2NyeXB0by9lY2RzYS9lY3NfbG9jbC5oCisrKyBiL2NyeXB0by9lY2RzYS9lY3NfbG9jbC5oCkBAIC03MCw4ICs3MCw5IEBACiAJY29uc3QgY2hhciAqbmFtZTsKIAlFQ0RTQV9TSUcgKigqZWNkc2FfZG9fc2lnbikoY29uc3QgdW5zaWduZWQgY2hhciAqZGdzdCwgaW50IGRnc3RfbGVuLCAKIAkJCWNvbnN0IEJJR05VTSAqaW52LCBjb25zdCBCSUdOVU0gKnJwLCBFQ19LRVkgKmVja2V5KTsKLQlpbnQgKCplY2RzYV9zaWduX3NldHVwKShFQ19LRVkgKmVja2V5LCBCTl9DVFggKmN0eCwgQklHTlVNICoqa2ludiwgCi0JCQlCSUdOVU0gKipyKTsKKwlpbnQgKCplY2RzYV9zaWduX3NldHVwKShFQ19LRVkgKmVja2V5LCBCTl9DVFggKmN0eCwKKwkJCQlCSUdOVU0gKipraW52LCBCSUdOVU0gKipyLAorCQkJCWNvbnN0IHVuc2lnbmVkIGNoYXIgKmRnc3QsIGludCBkbGVuKTsKIAlpbnQgKCplY2RzYV9kb192ZXJpZnkpKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRnc3QsIGludCBkZ3N0X2xlbiwgCiAJCQljb25zdCBFQ0RTQV9TSUcgKnNpZywgRUNfS0VZICplY2tleSk7CiAjaWYgMApkaWZmIC0tZ2l0IGEvY3J5cHRvL2VjZHNhL2Vjc19vc3NsLmMgYi9jcnlwdG8vZWNkc2EvZWNzX29zc2wuYwppbmRleCA3NzI1OTM1Li4zMjVhY2E4IDEwMDY0NAotLS0gYS9jcnlwdG8vZWNkc2EvZWNzX29zc2wuYworKysgYi9jcnlwdG8vZWNkc2EvZWNzX29zc2wuYwpAQCAtNjAsMTEgKzYwLDEzIEBACiAjaW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4KICNpbmNsdWRlIDxvcGVuc3NsL29ial9tYWMuaD4KICNpbmNsdWRlIDxvcGVuc3NsL2JuLmg+CisjaW5jbHVkZSA8b3BlbnNzbC9yYW5kLmg+CiAKIHN0YXRpYyBFQ0RTQV9TSUcgKmVjZHNhX2RvX3NpZ24oY29uc3QgdW5zaWduZWQgY2hhciAqZGdzdCwgaW50IGRsZW4sIAogCQljb25zdCBCSUdOVU0gKiwgY29uc3QgQklHTlVNICosIEVDX0tFWSAqZWNrZXkpOwotc3RhdGljIGludCBlY2RzYV9zaWduX3NldHVwKEVDX0tFWSAqZWNrZXksIEJOX0NUWCAqY3R4X2luLCBCSUdOVU0gKipraW52cCwgCi0JCUJJR05VTSAqKnJwKTsKK3N0YXRpYyBpbnQgZWNkc2Ffc2lnbl9zZXR1cChFQ19LRVkgKmVja2V5LCBCTl9DVFggKmN0eF9pbiwKKwkJCSAgICBCSUdOVU0gKipraW52cCwgQklHTlVNICoqcnAsCisJCQkgICAgY29uc3QgdW5zaWduZWQgY2hhciAqZGdzdCwgaW50IGRsZW4pOwogc3RhdGljIGludCBlY2RzYV9kb192ZXJpZnkoY29uc3QgdW5zaWduZWQgY2hhciAqZGdzdCwgaW50IGRnc3RfbGVuLCAKIAkJY29uc3QgRUNEU0FfU0lHICpzaWcsIEVDX0tFWSAqZWNrZXkpOwogCkBAIC04Niw4ICs4OCw5IEBACiAJcmV0dXJuICZvcGVuc3NsX2VjZHNhX21ldGg7CiB9CiAKLXN0YXRpYyBpbnQgZWNkc2Ffc2lnbl9zZXR1cChFQ19LRVkgKmVja2V5LCBCTl9DVFggKmN0eF9pbiwgQklHTlVNICoqa2ludnAsCi0JCUJJR05VTSAqKnJwKQorc3RhdGljIGludCBlY2RzYV9zaWduX3NldHVwKEVDX0tFWSAqZWNrZXksIEJOX0NUWCAqY3R4X2luLAorCQkJICAgIEJJR05VTSAqKmtpbnZwLCBCSUdOVU0gKipycCwKKwkJCSAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpkZ3N0LCBpbnQgZGxlbikKIHsKIAlCTl9DVFggICAqY3R4ID0gTlVMTDsKIAlCSUdOVU0JICprID0gTlVMTCwgKnIgPSBOVUxMLCAqb3JkZXIgPSBOVUxMLCAqWCA9IE5VTEw7CkBAIC0xMzYsMTEgKzEzOSwyOCBAQAogCXsKIAkJLyogZ2V0IHJhbmRvbSBrICovCQogCQlkbwotCQkJaWYgKCFCTl9yYW5kX3JhbmdlKGssIG9yZGVyKSkKKyNpZm5kZWYgT1BFTlNTTF9OT19TSEE1MTIKKwkJCWlmIChFQ19LRVlfZ2V0X25vbmNlX2Zyb21faGFzaChlY2tleSkpCiAJCQl7Ci0JCQkJRUNEU0FlcnIoRUNEU0FfRl9FQ0RTQV9TSUdOX1NFVFVQLAotCQkJCSBFQ0RTQV9SX1JBTkRPTV9OVU1CRVJfR0VORVJBVElPTl9GQUlMRUQpOwkKLQkJCQlnb3RvIGVycjsKKwkJCQlpZiAoIUJOX2dlbmVyYXRlX2RzYV9ub25jZSgKKwkJCQkJaywgb3JkZXIsCisJCQkJCUVDX0tFWV9nZXQwX3ByaXZhdGVfa2V5KGVja2V5KSwKKwkJCQkJZGdzdCwgZGxlbiwgY3R4KSkKKwkJCQkJeworCQkJCQlFQ0RTQWVycihFQ0RTQV9GX0VDRFNBX1NJR05fU0VUVVAsCisJCQkJCQkgRUNEU0FfUl9SQU5ET01fTlVNQkVSX0dFTkVSQVRJT05fRkFJTEVEKTsKKwkJCQkJZ290byBlcnI7CisJCQkJCX0KKwkJCX0KKwkJCWVsc2UKKyNlbmRpZgorCQkJeworCQkJCWlmICghQk5fcmFuZF9yYW5nZShrLCBvcmRlcikpCisJCQkJeworCQkJCQlFQ0RTQWVycihFQ0RTQV9GX0VDRFNBX1NJR05fU0VUVVAsCisJCQkJCSBFQ0RTQV9SX1JBTkRPTV9OVU1CRVJfR0VORVJBVElPTl9GQUlMRUQpOworCQkJCQlnb3RvIGVycjsKKwkJCQl9CiAJCQl9CiAJCXdoaWxlIChCTl9pc196ZXJvKGspKTsKIApAQCAtMjgyLDcgKzMwMiw3IEBACiAJewogCQlpZiAoaW5fa2ludiA9PSBOVUxMIHx8IGluX3IgPT0gTlVMTCkKIAkJewotCQkJaWYgKCFFQ0RTQV9zaWduX3NldHVwKGVja2V5LCBjdHgsICZraW52LCAmcmV0LT5yKSkKKwkJCWlmICghZWNkc2EtPm1ldGgtPmVjZHNhX3NpZ25fc2V0dXAoZWNrZXksIGN0eCwgJmtpbnYsICZyZXQtPnIsIGRnc3QsIGRnc3RfbGVuKSkKIAkJCXsKIAkJCQlFQ0RTQWVycihFQ0RTQV9GX0VDRFNBX0RPX1NJR04sRVJSX1JfRUNEU0FfTElCKTsKIAkJCQlnb3RvIGVycjsKZGlmZiAtLWdpdCBhL2NyeXB0by9lY2RzYS9lY3Nfc2lnbi5jIGIvY3J5cHRvL2VjZHNhL2Vjc19zaWduLmMKaW5kZXggMzUzZDVhZi4uZWE3OWEyNCAxMDA2NDQKLS0tIGEvY3J5cHRvL2VjZHNhL2Vjc19zaWduLmMKKysrIGIvY3J5cHRvL2VjZHNhL2Vjc19zaWduLmMKQEAgLTU4LDYgKzU4LDcgQEAKICNpbmNsdWRlIDxvcGVuc3NsL2VuZ2luZS5oPgogI2VuZGlmCiAjaW5jbHVkZSA8b3BlbnNzbC9yYW5kLmg+CisjaW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4KIAogRUNEU0FfU0lHICpFQ0RTQV9kb19zaWduKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRnc3QsIGludCBkbGVuLCBFQ19LRVkgKmVja2V5KQogewpAQCAtMTAyLDUgKzEwMywxMiBAQAogCUVDRFNBX0RBVEEgKmVjZHNhID0gZWNkc2FfY2hlY2soZWNrZXkpOwogCWlmIChlY2RzYSA9PSBOVUxMKQogCQlyZXR1cm4gMDsKLQlyZXR1cm4gZWNkc2EtPm1ldGgtPmVjZHNhX3NpZ25fc2V0dXAoZWNrZXksIGN0eF9pbiwga2ludnAsIHJwKTsgCisJaWYgKEVDX0tFWV9nZXRfbm9uY2VfZnJvbV9oYXNoKGVja2V5KSkKKwkJeworCQkvKiBZb3UgY2Fubm90IHByZWNvbXB1dGUgdGhlIEVDRFNBIG5vbmNlIGlmIGl0IGlzIHJlcXVpcmVkIHRvCisJCSAqIGRlcGVuZCBvbiB0aGUgbWVzc2FnZS4gKi8KKwkJRUNEU0FlcnIoRUNEU0FfRl9FQ0RTQV9TSUdOX1NFVFVQLCBFQ0RTQV9SX05PTkNFX0NBTk5PVF9CRV9QUkVDT01QVVRFRCk7CisJCXJldHVybiAwOworCQl9CisJcmV0dXJuIGVjZHNhLT5tZXRoLT5lY2RzYV9zaWduX3NldHVwKGVja2V5LCBjdHhfaW4sIGtpbnZwLCBycCwgTlVMTCwgMCk7CiB9CmRpZmYgLS1naXQgYS9jcnlwdG8vZW5naW5lL2VuZ19saXN0LmMgYi9jcnlwdG8vZW5naW5lL2VuZ19saXN0LmMKaW5kZXggMjc4NDZlZC4uOTVjODU4OSAxMDA2NDQKLS0tIGEvY3J5cHRvL2VuZ2luZS9lbmdfbGlzdC5jCisrKyBiL2NyeXB0by9lbmdpbmUvZW5nX2xpc3QuYwpAQCAtNDA4LDYgKzQwOCw3IEBACiAJCQkJIUVOR0lORV9jdHJsX2NtZF9zdHJpbmcoaXRlcmF0b3IsICJESVJfTE9BRCIsICIyIiwgMCkgfHwKIAkJCQkhRU5HSU5FX2N0cmxfY21kX3N0cmluZyhpdGVyYXRvciwgIkRJUl9BREQiLAogCQkJCQlsb2FkX2RpciwgMCkgfHwKKwkJCQkhRU5HSU5FX2N0cmxfY21kX3N0cmluZyhpdGVyYXRvciwgIkxJU1RfQUREIiwgIjEiLCAwKSB8fAogCQkJCSFFTkdJTkVfY3RybF9jbWRfc3RyaW5nKGl0ZXJhdG9yLCAiTE9BRCIsIE5VTEwsIDApKQogCQkJCWdvdG8gbm90Zm91bmQ7CiAJCXJldHVybiBpdGVyYXRvcjsKZGlmZiAtLWdpdCBhL2NyeXB0by9ldnAvYmlvX2I2NC5jIGIvY3J5cHRvL2V2cC9iaW9fYjY0LmMKaW5kZXggNzJhMmE2Ny4uMTY4NjNmZSAxMDA2NDQKLS0tIGEvY3J5cHRvL2V2cC9iaW9fYjY0LmMKKysrIGIvY3J5cHRvL2V2cC9iaW9fYjY0LmMKQEAgLTIyNiw2ICsyMjYsNyBAQAogCQllbHNlIGlmIChjdHgtPnN0YXJ0KQogCQkJewogCQkJcT1wPSh1bnNpZ25lZCBjaGFyICopY3R4LT50bXA7CisJCQludW0gPSAwOwogCQkJZm9yIChqPTA7IGo8aTsgaisrKQogCQkJCXsKIAkJCQlpZiAoKihxKyspICE9ICdcbicpIGNvbnRpbnVlOwpAQCAtMjY0LDcgKzI2NSw3IEBACiAJCQkJfQogCiAJCQkvKiB3ZSBmZWxsIG9mZiB0aGUgZW5kIHdpdGhvdXQgc3RhcnRpbmcgKi8KLQkJCWlmIChqID09IGkpCisJCQlpZiAoKGogPT0gaSkgJiYgKG51bSA9PSAwKSkKIAkJCQl7CiAJCQkJLyogSXMgdGhpcyBpcyBvbmUgbG9uZyBjaHVuaz8sIGlmIHNvLCBrZWVwIG9uCiAJCQkJICogcmVhZGluZyB1bnRpbCBhIG5ldyBsaW5lLiAqLwpkaWZmIC0tZ2l0IGEvY3J5cHRvL2V2cC9lX2Flcy5jIGIvY3J5cHRvL2V2cC9lX2Flcy5jCmluZGV4IGM3ODY5YjYuLmFkMGY3YTQgMTAwNjQ0Ci0tLSBhL2NyeXB0by9ldnAvZV9hZXMuYworKysgYi9jcnlwdG8vZXZwL2VfYWVzLmMKQEAgLTYyLDcgKzYyLDcgQEAKIAogdHlwZWRlZiBzdHJ1Y3QKIAl7Ci0JQUVTX0tFWSBrczsKKwl1bmlvbiB7IGRvdWJsZSBhbGlnbjsgQUVTX0tFWSBrczsgfSBrczsKIAlibG9jazEyOF9mIGJsb2NrOwogCXVuaW9uIHsKIAkJY2JjMTI4X2YgY2JjOwpAQCAtNzIsNyArNzIsNyBAQAogCiB0eXBlZGVmIHN0cnVjdAogCXsKLQlBRVNfS0VZIGtzOwkJLyogQUVTIGtleSBzY2hlZHVsZSB0byB1c2UgKi8KKwl1bmlvbiB7IGRvdWJsZSBhbGlnbjsgQUVTX0tFWSBrczsgfSBrczsJLyogQUVTIGtleSBzY2hlZHVsZSB0byB1c2UgKi8KIAlpbnQga2V5X3NldDsJCS8qIFNldCBpZiBrZXkgaW5pdGlhbGlzZWQgKi8KIAlpbnQgaXZfc2V0OwkJLyogU2V0IGlmIGFuIGl2IGlzIHNldCAqLwogCUdDTTEyOF9DT05URVhUIGdjbTsKQEAgLTg2LDcgKzg2LDcgQEAKIAogdHlwZWRlZiBzdHJ1Y3QKIAl7Ci0JQUVTX0tFWSBrczEsIGtzMjsJLyogQUVTIGtleSBzY2hlZHVsZXMgdG8gdXNlICovCisJdW5pb24geyBkb3VibGUgYWxpZ247IEFFU19LRVkga3M7IH0ga3MxLCBrczI7CS8qIEFFUyBrZXkgc2NoZWR1bGVzIHRvIHVzZSAqLwogCVhUUzEyOF9DT05URVhUIHh0czsKIAl2b2lkICAgICAoKnN0cmVhbSkoY29uc3QgdW5zaWduZWQgY2hhciAqaW4sCiAJCQl1bnNpZ25lZCBjaGFyICpvdXQsIHNpemVfdCBsZW5ndGgsCkBAIC05Niw3ICs5Niw3IEBACiAKIHR5cGVkZWYgc3RydWN0CiAJewotCUFFU19LRVkga3M7CQkvKiBBRVMga2V5IHNjaGVkdWxlIHRvIHVzZSAqLworCXVuaW9uIHsgZG91YmxlIGFsaWduOyBBRVNfS0VZIGtzOyB9IGtzOwkvKiBBRVMga2V5IHNjaGVkdWxlIHRvIHVzZSAqLwogCWludCBrZXlfc2V0OwkJLyogU2V0IGlmIGtleSBpbml0aWFsaXNlZCAqLwogCWludCBpdl9zZXQ7CQkvKiBTZXQgaWYgYW4gaXYgaXMgc2V0ICovCiAJaW50IHRhZ19zZXQ7CQkvKiBTZXQgaWYgdGFnIGlzIHZhbGlkICovCkBAIC0xNjAsNyArMTYwLDcgQEAKIAlkZWZpbmVkKF9NX0FNRDY0KQl8fCBkZWZpbmVkKF9NX1g2NCkJfHwgXAogCWRlZmluZWQoX19JTlRFTF9fKQkJCQkpCiAKLWV4dGVybiB1bnNpZ25lZCBpbnQgT1BFTlNTTF9pYTMyY2FwX1BbMl07CitleHRlcm4gdW5zaWduZWQgaW50IE9QRU5TU0xfaWEzMmNhcF9QW107CiAKICNpZmRlZiBWUEFFU19BU00KICNkZWZpbmUgVlBBRVNfQ0FQQUJMRQkoT1BFTlNTTF9pYTMyY2FwX1BbMV0mKDE8PCg0MS0zMikpKQpAQCAtMzEwLDcgKzMxMCw3IEBACiAJCXJldHVybiAxOwogCWlmIChrZXkpCiAJCXsKLQkJYWVzbmlfc2V0X2VuY3J5cHRfa2V5KGtleSwgY3R4LT5rZXlfbGVuICogOCwgJmdjdHgtPmtzKTsKKwkJYWVzbmlfc2V0X2VuY3J5cHRfa2V5KGtleSwgY3R4LT5rZXlfbGVuICogOCwgJmdjdHgtPmtzLmtzKTsKIAkJQ1JZUFRPX2djbTEyOF9pbml0KCZnY3R4LT5nY20sICZnY3R4LT5rcywKIAkJCQkoYmxvY2sxMjhfZilhZXNuaV9lbmNyeXB0KTsKIAkJZ2N0eC0+Y3RyID0gKGN0cjEyOF9mKWFlc25pX2N0cjMyX2VuY3J5cHRfYmxvY2tzOwpAQCAtMzU1LDE5ICszNTUsMTkgQEAKIAkJLyoga2V5X2xlbiBpcyB0d28gQUVTIGtleXMgKi8KIAkJaWYgKGVuYykKIAkJCXsKLQkJCWFlc25pX3NldF9lbmNyeXB0X2tleShrZXksIGN0eC0+a2V5X2xlbiAqIDQsICZ4Y3R4LT5rczEpOworCQkJYWVzbmlfc2V0X2VuY3J5cHRfa2V5KGtleSwgY3R4LT5rZXlfbGVuICogNCwgJnhjdHgtPmtzMS5rcyk7CiAJCQl4Y3R4LT54dHMuYmxvY2sxID0gKGJsb2NrMTI4X2YpYWVzbmlfZW5jcnlwdDsKIAkJCXhjdHgtPnN0cmVhbSA9IGFlc25pX3h0c19lbmNyeXB0OwogCQkJfQogCQllbHNlCiAJCQl7Ci0JCQlhZXNuaV9zZXRfZGVjcnlwdF9rZXkoa2V5LCBjdHgtPmtleV9sZW4gKiA0LCAmeGN0eC0+a3MxKTsKKwkJCWFlc25pX3NldF9kZWNyeXB0X2tleShrZXksIGN0eC0+a2V5X2xlbiAqIDQsICZ4Y3R4LT5rczEua3MpOwogCQkJeGN0eC0+eHRzLmJsb2NrMSA9IChibG9jazEyOF9mKWFlc25pX2RlY3J5cHQ7CiAJCQl4Y3R4LT5zdHJlYW0gPSBhZXNuaV94dHNfZGVjcnlwdDsKIAkJCX0KIAogCQlhZXNuaV9zZXRfZW5jcnlwdF9rZXkoa2V5ICsgY3R4LT5rZXlfbGVuLzIsCi0JCQkJCQljdHgtPmtleV9sZW4gKiA0LCAmeGN0eC0+a3MyKTsKKwkJCQkJCWN0eC0+a2V5X2xlbiAqIDQsICZ4Y3R4LT5rczIua3MpOwogCQl4Y3R4LT54dHMuYmxvY2syID0gKGJsb2NrMTI4X2YpYWVzbmlfZW5jcnlwdDsKIAogCQl4Y3R4LT54dHMua2V5MSA9ICZ4Y3R4LT5rczE7CkBAIC0zOTQsNyArMzk0LDcgQEAKIAkJcmV0dXJuIDE7CiAJaWYgKGtleSkKIAkJewotCQlhZXNuaV9zZXRfZW5jcnlwdF9rZXkoa2V5LCBjdHgtPmtleV9sZW4gKiA4LCAmY2N0eC0+a3MpOworCQlhZXNuaV9zZXRfZW5jcnlwdF9rZXkoa2V5LCBjdHgtPmtleV9sZW4gKiA4LCAmY2N0eC0+a3Mua3MpOwogCQlDUllQVE9fY2NtMTI4X2luaXQoJmNjdHgtPmNjbSwgY2N0eC0+TSwgY2N0eC0+TCwKIAkJCQkJJmNjdHgtPmtzLCAoYmxvY2sxMjhfZilhZXNuaV9lbmNyeXB0KTsKIAkJY2N0eC0+c3RyID0gZW5jPyhjY20xMjhfZilhZXNuaV9jY202NF9lbmNyeXB0X2Jsb2NrcyA6CkBAIC00ODQsNiArNDg0LDM4IEBACiB7IHJldHVybiAmYWVzXyMja2V5bGVuIyNfIyNtb2RlOyB9CiAjZW5kaWYKIAorI2lmIGRlZmluZWQoT1BFTlNTTF9DUFVJRF9PQkopICYmIChkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19hcm0pIHx8IGRlZmluZWQoX19hYXJjaDY0X18pKQorI2luY2x1ZGUgImFybV9hcmNoLmgiCisjaWYgX19BUk1fQVJDSF9fPj03CisjIGlmIGRlZmluZWQoQlNBRVNfQVNNKQorIyAgZGVmaW5lIEJTQUVTX0NBUEFCTEUJKE9QRU5TU0xfYXJtY2FwX1AgJiBBUk1WN19ORU9OKQorIyBlbmRpZgorIyBkZWZpbmUgSFdBRVNfQ0FQQUJMRSAoT1BFTlNTTF9hcm1jYXBfUCAmIEFSTVY4X0FFUykKKyMgZGVmaW5lIEhXQUVTX3NldF9lbmNyeXB0X2tleSBhZXNfdjhfc2V0X2VuY3J5cHRfa2V5CisjIGRlZmluZSBIV0FFU19zZXRfZGVjcnlwdF9rZXkgYWVzX3Y4X3NldF9kZWNyeXB0X2tleQorIyBkZWZpbmUgSFdBRVNfZW5jcnlwdCBhZXNfdjhfZW5jcnlwdAorIyBkZWZpbmUgSFdBRVNfZGVjcnlwdCBhZXNfdjhfZGVjcnlwdAorIyBkZWZpbmUgSFdBRVNfY2JjX2VuY3J5cHQgYWVzX3Y4X2NiY19lbmNyeXB0CisjIGRlZmluZSBIV0FFU19jdHIzMl9lbmNyeXB0X2Jsb2NrcyBhZXNfdjhfY3RyMzJfZW5jcnlwdF9ibG9ja3MKKyNlbmRpZgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKEhXQUVTX0NBUEFCTEUpCitpbnQgSFdBRVNfc2V0X2VuY3J5cHRfa2V5KGNvbnN0IHVuc2lnbmVkIGNoYXIgKnVzZXJLZXksIGNvbnN0IGludCBiaXRzLAorCUFFU19LRVkgKmtleSk7CitpbnQgSFdBRVNfc2V0X2RlY3J5cHRfa2V5KGNvbnN0IHVuc2lnbmVkIGNoYXIgKnVzZXJLZXksIGNvbnN0IGludCBiaXRzLAorCUFFU19LRVkgKmtleSk7Cit2b2lkIEhXQUVTX2VuY3J5cHQoY29uc3QgdW5zaWduZWQgY2hhciAqaW4sIHVuc2lnbmVkIGNoYXIgKm91dCwKKwljb25zdCBBRVNfS0VZICprZXkpOwordm9pZCBIV0FFU19kZWNyeXB0KGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluLCB1bnNpZ25lZCBjaGFyICpvdXQsCisJY29uc3QgQUVTX0tFWSAqa2V5KTsKK3ZvaWQgSFdBRVNfY2JjX2VuY3J5cHQoY29uc3QgdW5zaWduZWQgY2hhciAqaW4sIHVuc2lnbmVkIGNoYXIgKm91dCwKKwlzaXplX3QgbGVuZ3RoLCBjb25zdCBBRVNfS0VZICprZXksCisJdW5zaWduZWQgY2hhciAqaXZlYywgY29uc3QgaW50IGVuYyk7Cit2b2lkIEhXQUVTX2N0cjMyX2VuY3J5cHRfYmxvY2tzKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluLCB1bnNpZ25lZCBjaGFyICpvdXQsCisJc2l6ZV90IGxlbiwgY29uc3QgQUVTX0tFWSAqa2V5LCBjb25zdCB1bnNpZ25lZCBjaGFyIGl2ZWNbMTZdKTsKKyNlbmRpZgorCiAjZGVmaW5lIEJMT0NLX0NJUEhFUl9nZW5lcmljX3BhY2sobmlkLGtleWxlbixmbGFncykJCVwKIAlCTE9DS19DSVBIRVJfZ2VuZXJpYyhuaWQsa2V5bGVuLDE2LDE2LGNiYyxjYmMsQ0JDLGZsYWdzfEVWUF9DSVBIX0ZMQUdfREVGQVVMVF9BU04xKQlcCiAJQkxPQ0tfQ0lQSEVSX2dlbmVyaWMobmlkLGtleWxlbiwxNiwwLGVjYixlY2IsRUNCLGZsYWdzfEVWUF9DSVBIX0ZMQUdfREVGQVVMVF9BU04xKQlcCkBAIC01MDIsMTAgKzUzNCwyMyBAQAogCW1vZGUgPSBjdHgtPmNpcGhlci0+ZmxhZ3MgJiBFVlBfQ0lQSF9NT0RFOwogCWlmICgobW9kZSA9PSBFVlBfQ0lQSF9FQ0JfTU9ERSB8fCBtb2RlID09IEVWUF9DSVBIX0NCQ19NT0RFKQogCSAgICAmJiAhZW5jKQorI2lmZGVmIEhXQUVTX0NBUEFCTEUKKwkgICAgaWYgKEhXQUVTX0NBUEFCTEUpCisJCXsKKwkJcmV0ID0gSFdBRVNfc2V0X2RlY3J5cHRfa2V5KGtleSxjdHgtPmtleV9sZW4qOCwmZGF0LT5rcy5rcyk7CisJCWRhdC0+YmxvY2sgICAgICA9IChibG9jazEyOF9mKUhXQUVTX2RlY3J5cHQ7CisJCWRhdC0+c3RyZWFtLmNiYyA9IE5VTEw7CisjaWZkZWYgSFdBRVNfY2JjX2VuY3J5cHQKKwkJaWYgKG1vZGU9PUVWUF9DSVBIX0NCQ19NT0RFKQorCQkgICAgZGF0LT5zdHJlYW0uY2JjID0gKGNiYzEyOF9mKUhXQUVTX2NiY19lbmNyeXB0OworI2VuZGlmCisJCX0KKwkgICAgZWxzZQorI2VuZGlmCiAjaWZkZWYgQlNBRVNfQ0FQQUJMRQogCSAgICBpZiAoQlNBRVNfQ0FQQUJMRSAmJiBtb2RlPT1FVlBfQ0lQSF9DQkNfTU9ERSkKIAkJewotCQlyZXQgPSBBRVNfc2V0X2RlY3J5cHRfa2V5KGtleSxjdHgtPmtleV9sZW4qOCwmZGF0LT5rcyk7CisJCXJldCA9IEFFU19zZXRfZGVjcnlwdF9rZXkoa2V5LGN0eC0+a2V5X2xlbio4LCZkYXQtPmtzLmtzKTsKIAkJZGF0LT5ibG9jawk9IChibG9jazEyOF9mKUFFU19kZWNyeXB0OwogCQlkYXQtPnN0cmVhbS5jYmMJPSAoY2JjMTI4X2YpYnNhZXNfY2JjX2VuY3J5cHQ7CiAJCX0KQEAgLTUxNCw3ICs1NTksNyBAQAogI2lmZGVmIFZQQUVTX0NBUEFCTEUKIAkgICAgaWYgKFZQQUVTX0NBUEFCTEUpCiAJCXsKLQkJcmV0ID0gdnBhZXNfc2V0X2RlY3J5cHRfa2V5KGtleSxjdHgtPmtleV9sZW4qOCwmZGF0LT5rcyk7CisJCXJldCA9IHZwYWVzX3NldF9kZWNyeXB0X2tleShrZXksY3R4LT5rZXlfbGVuKjgsJmRhdC0+a3Mua3MpOwogCQlkYXQtPmJsb2NrCT0gKGJsb2NrMTI4X2YpdnBhZXNfZGVjcnlwdDsKIAkJZGF0LT5zdHJlYW0uY2JjCT0gbW9kZT09RVZQX0NJUEhfQ0JDX01PREUgPwogCQkJCQkoY2JjMTI4X2YpdnBhZXNfY2JjX2VuY3J5cHQgOgpAQCAtNTIzLDE3ICs1NjgsMzcgQEAKIAkgICAgZWxzZQogI2VuZGlmCiAJCXsKLQkJcmV0ID0gQUVTX3NldF9kZWNyeXB0X2tleShrZXksY3R4LT5rZXlfbGVuKjgsJmRhdC0+a3MpOworCQlyZXQgPSBBRVNfc2V0X2RlY3J5cHRfa2V5KGtleSxjdHgtPmtleV9sZW4qOCwmZGF0LT5rcy5rcyk7CiAJCWRhdC0+YmxvY2sJPSAoYmxvY2sxMjhfZilBRVNfZGVjcnlwdDsKIAkJZGF0LT5zdHJlYW0uY2JjCT0gbW9kZT09RVZQX0NJUEhfQ0JDX01PREUgPwogCQkJCQkoY2JjMTI4X2YpQUVTX2NiY19lbmNyeXB0IDoKIAkJCQkJTlVMTDsKIAkJfQogCWVsc2UKKyNpZmRlZiBIV0FFU19DQVBBQkxFCisJICAgIGlmIChIV0FFU19DQVBBQkxFKQorCQl7CisJCXJldCA9IEhXQUVTX3NldF9lbmNyeXB0X2tleShrZXksY3R4LT5rZXlfbGVuKjgsJmRhdC0+a3Mua3MpOworCQlkYXQtPmJsb2NrICAgICAgPSAoYmxvY2sxMjhfZilIV0FFU19lbmNyeXB0OworCQlkYXQtPnN0cmVhbS5jYmMgPSBOVUxMOworI2lmZGVmIEhXQUVTX2NiY19lbmNyeXB0CisJCWlmIChtb2RlPT1FVlBfQ0lQSF9DQkNfTU9ERSkKKwkJICAgIGRhdC0+c3RyZWFtLmNiYyA9IChjYmMxMjhfZilIV0FFU19jYmNfZW5jcnlwdDsKKwkJZWxzZQorI2VuZGlmCisjaWZkZWYgSFdBRVNfY3RyMzJfZW5jcnlwdF9ibG9ja3MKKwkJaWYgKG1vZGU9PUVWUF9DSVBIX0NUUl9NT0RFKQorCQkgICAgZGF0LT5zdHJlYW0uY3RyID0gKGN0cjEyOF9mKUhXQUVTX2N0cjMyX2VuY3J5cHRfYmxvY2tzOworCQllbHNlCisjZW5kaWYKKwkJKHZvaWQpMDsJLyogdGVybWluYXRlIHBvdGVudGlhbGx5IG9wZW4gJ2Vsc2UnICovCisJCX0KKwkgICAgZWxzZQorI2VuZGlmCiAjaWZkZWYgQlNBRVNfQ0FQQUJMRQogCSAgICBpZiAoQlNBRVNfQ0FQQUJMRSAmJiBtb2RlPT1FVlBfQ0lQSF9DVFJfTU9ERSkKIAkJewotCQlyZXQgPSBBRVNfc2V0X2VuY3J5cHRfa2V5KGtleSxjdHgtPmtleV9sZW4qOCwmZGF0LT5rcyk7CisJCXJldCA9IEFFU19zZXRfZW5jcnlwdF9rZXkoa2V5LGN0eC0+a2V5X2xlbio4LCZkYXQtPmtzLmtzKTsKIAkJZGF0LT5ibG9jawk9IChibG9jazEyOF9mKUFFU19lbmNyeXB0OwogCQlkYXQtPnN0cmVhbS5jdHIJPSAoY3RyMTI4X2YpYnNhZXNfY3RyMzJfZW5jcnlwdF9ibG9ja3M7CiAJCX0KQEAgLTU0Miw3ICs2MDcsNyBAQAogI2lmZGVmIFZQQUVTX0NBUEFCTEUKIAkgICAgaWYgKFZQQUVTX0NBUEFCTEUpCiAJCXsKLQkJcmV0ID0gdnBhZXNfc2V0X2VuY3J5cHRfa2V5KGtleSxjdHgtPmtleV9sZW4qOCwmZGF0LT5rcyk7CisJCXJldCA9IHZwYWVzX3NldF9lbmNyeXB0X2tleShrZXksY3R4LT5rZXlfbGVuKjgsJmRhdC0+a3Mua3MpOwogCQlkYXQtPmJsb2NrCT0gKGJsb2NrMTI4X2YpdnBhZXNfZW5jcnlwdDsKIAkJZGF0LT5zdHJlYW0uY2JjCT0gbW9kZT09RVZQX0NJUEhfQ0JDX01PREUgPwogCQkJCQkoY2JjMTI4X2YpdnBhZXNfY2JjX2VuY3J5cHQgOgpAQCAtNTUxLDcgKzYxNiw3IEBACiAJICAgIGVsc2UKICNlbmRpZgogCQl7Ci0JCXJldCA9IEFFU19zZXRfZW5jcnlwdF9rZXkoa2V5LGN0eC0+a2V5X2xlbio4LCZkYXQtPmtzKTsKKwkJcmV0ID0gQUVTX3NldF9lbmNyeXB0X2tleShrZXksY3R4LT5rZXlfbGVuKjgsJmRhdC0+a3Mua3MpOwogCQlkYXQtPmJsb2NrCT0gKGJsb2NrMTI4X2YpQUVTX2VuY3J5cHQ7CiAJCWRhdC0+c3RyZWFtLmNiYwk9IG1vZGU9PUVWUF9DSVBIX0NCQ19NT0RFID8KIAkJCQkJKGNiYzEyOF9mKUFFU19jYmNfZW5jcnlwdCA6CkBAIC04MjIsMTAgKzg4NywyNSBAQAogCQlyZXR1cm4gMTsKIAlpZiAoa2V5KQogCQl7IGRvIHsKKyNpZmRlZiBIV0FFU19DQVBBQkxFCisJCWlmIChIV0FFU19DQVBBQkxFKQorCQkJeworCQkJSFdBRVNfc2V0X2VuY3J5cHRfa2V5KGtleSxjdHgtPmtleV9sZW4qOCwmZ2N0eC0+a3Mua3MpOworCQkJQ1JZUFRPX2djbTEyOF9pbml0KCZnY3R4LT5nY20sJmdjdHgtPmtzLAorCQkJCQkoYmxvY2sxMjhfZilIV0FFU19lbmNyeXB0KTsKKyNpZmRlZiBIV0FFU19jdHIzMl9lbmNyeXB0X2Jsb2NrcworCQkJZ2N0eC0+Y3RyID0gKGN0cjEyOF9mKUhXQUVTX2N0cjMyX2VuY3J5cHRfYmxvY2tzOworI2Vsc2UKKwkJCWdjdHgtPmN0ciA9IE5VTEw7CisjZW5kaWYKKwkJCWJyZWFrOworCQkJfQorCQllbHNlCisjZW5kaWYKICNpZmRlZiBCU0FFU19DQVBBQkxFCiAJCWlmIChCU0FFU19DQVBBQkxFKQogCQkJewotCQkJQUVTX3NldF9lbmNyeXB0X2tleShrZXksY3R4LT5rZXlfbGVuKjgsJmdjdHgtPmtzKTsKKwkJCUFFU19zZXRfZW5jcnlwdF9rZXkoa2V5LGN0eC0+a2V5X2xlbio4LCZnY3R4LT5rcy5rcyk7CiAJCQlDUllQVE9fZ2NtMTI4X2luaXQoJmdjdHgtPmdjbSwmZ2N0eC0+a3MsCiAJCQkJCShibG9jazEyOF9mKUFFU19lbmNyeXB0KTsKIAkJCWdjdHgtPmN0ciA9IChjdHIxMjhfZilic2Flc19jdHIzMl9lbmNyeXB0X2Jsb2NrczsKQEAgLTgzNiw3ICs5MTYsNyBAQAogI2lmZGVmIFZQQUVTX0NBUEFCTEUKIAkJaWYgKFZQQUVTX0NBUEFCTEUpCiAJCQl7Ci0JCQl2cGFlc19zZXRfZW5jcnlwdF9rZXkoa2V5LGN0eC0+a2V5X2xlbio4LCZnY3R4LT5rcyk7CisJCQl2cGFlc19zZXRfZW5jcnlwdF9rZXkoa2V5LGN0eC0+a2V5X2xlbio4LCZnY3R4LT5rcy5rcyk7CiAJCQlDUllQVE9fZ2NtMTI4X2luaXQoJmdjdHgtPmdjbSwmZ2N0eC0+a3MsCiAJCQkJCShibG9jazEyOF9mKXZwYWVzX2VuY3J5cHQpOwogCQkJZ2N0eC0+Y3RyID0gTlVMTDsKQEAgLTg0Niw3ICs5MjYsNyBAQAogI2VuZGlmCiAJCSh2b2lkKTA7CS8qIHRlcm1pbmF0ZSBwb3RlbnRpYWxseSBvcGVuICdlbHNlJyAqLwogCi0JCUFFU19zZXRfZW5jcnlwdF9rZXkoa2V5LCBjdHgtPmtleV9sZW4gKiA4LCAmZ2N0eC0+a3MpOworCQlBRVNfc2V0X2VuY3J5cHRfa2V5KGtleSwgY3R4LT5rZXlfbGVuICogOCwgJmdjdHgtPmtzLmtzKTsKIAkJQ1JZUFRPX2djbTEyOF9pbml0KCZnY3R4LT5nY20sICZnY3R4LT5rcywgKGJsb2NrMTI4X2YpQUVTX2VuY3J5cHQpOwogI2lmZGVmIEFFU19DVFJfQVNNCiAJCWdjdHgtPmN0ciA9IChjdHIxMjhfZilBRVNfY3RyMzJfZW5jcnlwdDsKQEAgLTEwNjcsNiArMTE0NywyOSBAQAogCQl4Y3R4LT5zdHJlYW0gPSBOVUxMOwogI2VuZGlmCiAJCS8qIGtleV9sZW4gaXMgdHdvIEFFUyBrZXlzICovCisjaWZkZWYgSFdBRVNfQ0FQQUJMRQorCQlpZiAoSFdBRVNfQ0FQQUJMRSkKKwkJCXsKKwkJCWlmIChlbmMpCisJCQkgICAgeworCQkJICAgIEhXQUVTX3NldF9lbmNyeXB0X2tleShrZXksIGN0eC0+a2V5X2xlbiAqIDQsICZ4Y3R4LT5rczEua3MpOworCQkJICAgIHhjdHgtPnh0cy5ibG9jazEgPSAoYmxvY2sxMjhfZilIV0FFU19lbmNyeXB0OworCQkJICAgIH0KKwkJCWVsc2UKKwkJCSAgICB7CisJCQkgICAgSFdBRVNfc2V0X2RlY3J5cHRfa2V5KGtleSwgY3R4LT5rZXlfbGVuICogNCwgJnhjdHgtPmtzMS5rcyk7CisJCQkgICAgeGN0eC0+eHRzLmJsb2NrMSA9IChibG9jazEyOF9mKUhXQUVTX2RlY3J5cHQ7CisJCQkgICAgfQorCisJCQlIV0FFU19zZXRfZW5jcnlwdF9rZXkoa2V5ICsgY3R4LT5rZXlfbGVuLzIsCisJCQkJCQkgICAgY3R4LT5rZXlfbGVuICogNCwgJnhjdHgtPmtzMi5rcyk7CisJCQl4Y3R4LT54dHMuYmxvY2syID0gKGJsb2NrMTI4X2YpSFdBRVNfZW5jcnlwdDsKKworCQkJeGN0eC0+eHRzLmtleTEgPSAmeGN0eC0+a3MxOworCQkJYnJlYWs7CisJCQl9CisJCWVsc2UKKyNlbmRpZgogI2lmZGVmIEJTQUVTX0NBUEFCTEUKIAkJaWYgKEJTQUVTX0NBUEFCTEUpCiAJCQl4Y3R4LT5zdHJlYW0gPSBlbmMgPyBic2Flc194dHNfZW5jcnlwdCA6IGJzYWVzX3h0c19kZWNyeXB0OwpAQCAtMTA3NywxNyArMTE4MCwxNyBAQAogCQkgICAgewogCQkgICAgaWYgKGVuYykKIAkJCXsKLQkJCXZwYWVzX3NldF9lbmNyeXB0X2tleShrZXksIGN0eC0+a2V5X2xlbiAqIDQsICZ4Y3R4LT5rczEpOworCQkJdnBhZXNfc2V0X2VuY3J5cHRfa2V5KGtleSwgY3R4LT5rZXlfbGVuICogNCwgJnhjdHgtPmtzMS5rcyk7CiAJCQl4Y3R4LT54dHMuYmxvY2sxID0gKGJsb2NrMTI4X2YpdnBhZXNfZW5jcnlwdDsKIAkJCX0KIAkJICAgIGVsc2UKIAkJCXsKLQkJCXZwYWVzX3NldF9kZWNyeXB0X2tleShrZXksIGN0eC0+a2V5X2xlbiAqIDQsICZ4Y3R4LT5rczEpOworCQkJdnBhZXNfc2V0X2RlY3J5cHRfa2V5KGtleSwgY3R4LT5rZXlfbGVuICogNCwgJnhjdHgtPmtzMS5rcyk7CiAJCQl4Y3R4LT54dHMuYmxvY2sxID0gKGJsb2NrMTI4X2YpdnBhZXNfZGVjcnlwdDsKIAkJCX0KIAogCQkgICAgdnBhZXNfc2V0X2VuY3J5cHRfa2V5KGtleSArIGN0eC0+a2V5X2xlbi8yLAotCQkJCQkJY3R4LT5rZXlfbGVuICogNCwgJnhjdHgtPmtzMik7CisJCQkJCQljdHgtPmtleV9sZW4gKiA0LCAmeGN0eC0+a3MyLmtzKTsKIAkJICAgIHhjdHgtPnh0cy5ibG9jazIgPSAoYmxvY2sxMjhfZil2cGFlc19lbmNyeXB0OwogCiAJCSAgICB4Y3R4LT54dHMua2V5MSA9ICZ4Y3R4LT5rczE7CkBAIC0xMDk5LDE3ICsxMjAyLDE3IEBACiAKIAkJaWYgKGVuYykKIAkJCXsKLQkJCUFFU19zZXRfZW5jcnlwdF9rZXkoa2V5LCBjdHgtPmtleV9sZW4gKiA0LCAmeGN0eC0+a3MxKTsKKwkJCUFFU19zZXRfZW5jcnlwdF9rZXkoa2V5LCBjdHgtPmtleV9sZW4gKiA0LCAmeGN0eC0+a3MxLmtzKTsKIAkJCXhjdHgtPnh0cy5ibG9jazEgPSAoYmxvY2sxMjhfZilBRVNfZW5jcnlwdDsKIAkJCX0KIAkJZWxzZQogCQkJewotCQkJQUVTX3NldF9kZWNyeXB0X2tleShrZXksIGN0eC0+a2V5X2xlbiAqIDQsICZ4Y3R4LT5rczEpOworCQkJQUVTX3NldF9kZWNyeXB0X2tleShrZXksIGN0eC0+a2V5X2xlbiAqIDQsICZ4Y3R4LT5rczEua3MpOwogCQkJeGN0eC0+eHRzLmJsb2NrMSA9IChibG9jazEyOF9mKUFFU19kZWNyeXB0OwogCQkJfQogCiAJCUFFU19zZXRfZW5jcnlwdF9rZXkoa2V5ICsgY3R4LT5rZXlfbGVuLzIsCi0JCQkJCQljdHgtPmtleV9sZW4gKiA0LCAmeGN0eC0+a3MyKTsKKwkJCQkJCWN0eC0+a2V5X2xlbiAqIDQsICZ4Y3R4LT5rczIua3MpOwogCQl4Y3R4LT54dHMuYmxvY2syID0gKGJsb2NrMTI4X2YpQUVTX2VuY3J5cHQ7CiAKIAkJeGN0eC0+eHRzLmtleTEgPSAmeGN0eC0+a3MxOwpAQCAtMTIxNywxMCArMTMyMCwyMyBAQAogCQlyZXR1cm4gMTsKIAlpZiAoa2V5KSBkbwogCQl7CisjaWZkZWYgSFdBRVNfQ0FQQUJMRQorCQlpZiAoSFdBRVNfQ0FQQUJMRSkKKwkJCXsKKwkJCUhXQUVTX3NldF9lbmNyeXB0X2tleShrZXksY3R4LT5rZXlfbGVuKjgsJmNjdHgtPmtzLmtzKTsKKworCQkJQ1JZUFRPX2NjbTEyOF9pbml0KCZjY3R4LT5jY20sIGNjdHgtPk0sIGNjdHgtPkwsCisJCQkJCSZjY3R4LT5rcywgKGJsb2NrMTI4X2YpSFdBRVNfZW5jcnlwdCk7CisJCQljY3R4LT5zdHIgPSBOVUxMOworCQkJY2N0eC0+a2V5X3NldCA9IDE7CisJCQlicmVhazsKKwkJCX0KKwkJZWxzZQorI2VuZGlmCiAjaWZkZWYgVlBBRVNfQ0FQQUJMRQogCQlpZiAoVlBBRVNfQ0FQQUJMRSkKIAkJCXsKLQkJCXZwYWVzX3NldF9lbmNyeXB0X2tleShrZXksIGN0eC0+a2V5X2xlbio4LCAmY2N0eC0+a3MpOworCQkJdnBhZXNfc2V0X2VuY3J5cHRfa2V5KGtleSwgY3R4LT5rZXlfbGVuKjgsICZjY3R4LT5rcy5rcyk7CiAJCQlDUllQVE9fY2NtMTI4X2luaXQoJmNjdHgtPmNjbSwgY2N0eC0+TSwgY2N0eC0+TCwKIAkJCQkJJmNjdHgtPmtzLCAoYmxvY2sxMjhfZil2cGFlc19lbmNyeXB0KTsKIAkJCWNjdHgtPnN0ciA9IE5VTEw7CkBAIC0xMjI4LDcgKzEzNDQsNyBAQAogCQkJYnJlYWs7CiAJCQl9CiAjZW5kaWYKLQkJQUVTX3NldF9lbmNyeXB0X2tleShrZXksIGN0eC0+a2V5X2xlbiAqIDgsICZjY3R4LT5rcyk7CisJCUFFU19zZXRfZW5jcnlwdF9rZXkoa2V5LCBjdHgtPmtleV9sZW4gKiA4LCAmY2N0eC0+a3Mua3MpOwogCQlDUllQVE9fY2NtMTI4X2luaXQoJmNjdHgtPmNjbSwgY2N0eC0+TSwgY2N0eC0+TCwKIAkJCQkJJmNjdHgtPmtzLCAoYmxvY2sxMjhfZilBRVNfZW5jcnlwdCk7CiAJCWNjdHgtPnN0ciA9IE5VTEw7CmRpZmYgLS1naXQgYS9jcnlwdG8vZXZwL2VuY29kZS5jIGIvY3J5cHRvL2V2cC9lbmNvZGUuYwppbmRleCAyODU0NmE4Li40NjU0YmRjIDEwMDY0NAotLS0gYS9jcnlwdG8vZXZwL2VuY29kZS5jCisrKyBiL2NyeXB0by9ldnAvZW5jb2RlLmMKQEAgLTMyNCw2ICszMjQsNyBAQAogCQkJCXY9RVZQX0RlY29kZUJsb2NrKG91dCxkLG4pOwogCQkJCW49MDsKIAkJCQlpZiAodiA8IDApIHsgcnY9MDsgZ290byBlbmQ7IH0KKwkJCQlpZiAoZW9mID4gdikgeyBydj0tMTsgZ290byBlbmQ7IH0KIAkJCQlyZXQrPSh2LWVvZik7CiAJCQkJfQogCQkJZWxzZQpkaWZmIC0tZ2l0IGEvY3J5cHRvL2V2cC9wX2xpYi5jIGIvY3J5cHRvL2V2cC9wX2xpYi5jCmluZGV4IGJkMTk3N2QuLjhlZTUzYzEgMTAwNjQ0Ci0tLSBhL2NyeXB0by9ldnAvcF9saWIuYworKysgYi9jcnlwdG8vZXZwL3BfbGliLmMKQEAgLTIwMiw3ICsyMDIsNyBAQAogCiBFVlBfUEtFWSAqRVZQX1BLRVlfZHVwKEVWUF9QS0VZICpwa2V5KQogCXsKLQlDUllQVE9fYWRkKCZwa2V5LT5yZWZlcmVuY2VzLCAxLCBDUllQVE9fTE9DS19FVlBfUEtFWSk7CisJQ1JZUFRPX2FkZCgmcGtleS0+cmVmZXJlbmNlcywxLENSWVBUT19MT0NLX0VWUF9QS0VZKTsKIAlyZXR1cm4gcGtleTsKIAl9CiAKZGlmZiAtLWdpdCBhL2NyeXB0by9tb2Rlcy9hc20vZ2hhc2gtYXJtdjQuUyBiL2NyeXB0by9tb2Rlcy9hc20vZ2hhc2gtYXJtdjQuUwppbmRleCBkNjZjNGNiLi42YzQ1Mzc3IDEwMDY0NAotLS0gYS9jcnlwdG8vbW9kZXMvYXNtL2doYXNoLWFybXY0LlMKKysrIGIvY3J5cHRvL21vZGVzL2FzbS9naGFzaC1hcm12NC5TCkBAIC0zMDksOTkgKzMwOSwyMTMgQEAKICNpZiBfX0FSTV9BUkNIX18+PTcKIC5mcHUJbmVvbgogCisuZ2xvYmFsCWdjbV9pbml0X25lb24KKy50eXBlCWdjbV9pbml0X25lb24sJWZ1bmN0aW9uCisuYWxpZ24JNAorZ2NtX2luaXRfbmVvbjoKKwl2bGQxLjY0CQlkNyxbcjEsOjY0XSEJQCBsb2FkIEgKKwl2bW92Lmk4CQlxOCwjMHhlMQorCXZsZDEuNjQJCWQ2LFtyMSw6NjRdCisJdnNobC5pNjQJZDE3LCM1NworCXZzaHIudTY0CWQxNiwjNjMJCUAgdDA9MHhjMi4uLi4wMQorCXZkdXAuOAkJcTksZDdbN10KKwl2c2hyLnU2NAlkMjYsZDYsIzYzCisJdnNoci5zOAkJcTksIzcJCQlAIGJyb2FkY2FzdCBjYXJyeSBiaXQKKwl2c2hsLmk2NAlxMyxxMywjMQorCXZhbmQJCXE4LHE4LHE5CisJdm9ycgkJZDcsZDI2CQlAIEg8PDw9MQorCXZlb3IJCXEzLHEzLHE4CQlAIHR3aXN0ZWQgSAorCXZzdG1pYQkJcjAse3EzfQorCisJYngJbHIJCQkJCUAgYnggbHIKKy5zaXplCWdjbV9pbml0X25lb24sLi1nY21faW5pdF9uZW9uCisKIC5nbG9iYWwJZ2NtX2dtdWx0X25lb24KIC50eXBlCWdjbV9nbXVsdF9uZW9uLCVmdW5jdGlvbgogLmFsaWduCTQKIGdjbV9nbXVsdF9uZW9uOgotCXN1YgkJcjEsIzE2CQlAIHBvaW50IGF0IEggaW4gR0NNMTI4X0NUWAotCXZsZDEuNjQJCWQyOSxbcjAsOjY0XSFAIGxvYWQgWGkKLQl2bW92LmkzMglkNSwjMHhlMQkJQCBvdXIgaXJyZWR1Y2libGUgcG9seW5vbWlhbAotCXZsZDEuNjQJCWQyOCxbcjAsOjY0XSEKLQl2c2hyLnU2NAlkNSwjMzIKLQl2bGRtaWEJCXIxLHtkMC1kMX0JQCBsb2FkIEgKLQl2ZW9yCQlxMTIscTEyCisJdmxkMS42NAkJZDcsW3IwLDo2NF0hCUAgbG9hZCBYaQorCXZsZDEuNjQJCWQ2LFtyMCw6NjRdIQorCXZtb3YuaTY0CWQyOSwjMHgwMDAwZmZmZmZmZmZmZmZmCisJdmxkbWlhCQlyMSx7ZDI2LWQyN30JQCBsb2FkIHR3aXN0ZWQgSAorCXZtb3YuaTY0CWQzMCwjMHgwMDAwMDAwMGZmZmZmZmZmCiAjaWZkZWYgX19BUk1FTF9fCi0JdnJldjY0LjgJcTE0LHExNAorCXZyZXY2NC44CXEzLHEzCiAjZW5kaWYKLQl2ZW9yCQlxMTMscTEzCi0JdmVvcgkJcTExLHExMQotCW1vdgkJcjEsIzE2Ci0JdmVvcgkJcTEwLHExMAorCXZtb3YuaTY0CWQzMSwjMHgwMDAwMDAwMDAwMDBmZmZmCisJdmVvcgkJZDI4LGQyNixkMjcJCUAgS2FyYXRzdWJhIHByZS1wcm9jZXNzaW5nCiAJbW92CQlyMywjMTYKLQl2ZW9yCQlkMixkMgotCXZkdXAuOAkJZDQsZDI4WzBdCUAgYnJvYWRjYXN0IGxvd2VzdCBieXRlCi0JYgkJLkxpbm5lcl9uZW9uCisJYgkJLkxnbXVsdF9uZW9uCiAuc2l6ZQlnY21fZ211bHRfbmVvbiwuLWdjbV9nbXVsdF9uZW9uCiAKIC5nbG9iYWwJZ2NtX2doYXNoX25lb24KIC50eXBlCWdjbV9naGFzaF9uZW9uLCVmdW5jdGlvbgogLmFsaWduCTQKIGdjbV9naGFzaF9uZW9uOgotCXZsZDEuNjQJCWQyMSxbcjAsOjY0XSEJQCBsb2FkIFhpCi0Jdm1vdi5pMzIJZDUsIzB4ZTEJCUAgb3VyIGlycmVkdWNpYmxlIHBvbHlub21pYWwKLQl2bGQxLjY0CQlkMjAsW3IwLDo2NF0hCi0JdnNoci51NjQJZDUsIzMyCi0JdmxkbWlhCQlyMCx7ZDAtZDF9CQlAIGxvYWQgSAotCXZlb3IJCXExMixxMTIKLQlub3AKKwl2bGQxLjY0CQlkMSxbcjAsOjY0XSEJQCBsb2FkIFhpCisJdmxkMS42NAkJZDAsW3IwLDo2NF0hCisJdm1vdi5pNjQJZDI5LCMweDAwMDBmZmZmZmZmZmZmZmYKKwl2bGRtaWEJCXIxLHtkMjYtZDI3fQlAIGxvYWQgdHdpc3RlZCBICisJdm1vdi5pNjQJZDMwLCMweDAwMDAwMDAwZmZmZmZmZmYKICNpZmRlZiBfX0FSTUVMX18KLQl2cmV2NjQuOAlxMTAscTEwCisJdnJldjY0LjgJcTAscTAKICNlbmRpZgotLkxvdXRlcl9uZW9uOgotCXZsZDEuNjQJCWQyOSxbcjJdIQlAIGxvYWQgaW5wCi0JdmVvcgkJcTEzLHExMwotCXZsZDEuNjQJCWQyOCxbcjJdIQotCXZlb3IJCXExMSxxMTEKLQltb3YJCXIxLCMxNgorCXZtb3YuaTY0CWQzMSwjMHgwMDAwMDAwMDAwMDBmZmZmCisJdmVvcgkJZDI4LGQyNixkMjcJCUAgS2FyYXRzdWJhIHByZS1wcm9jZXNzaW5nCisKKy5Mb29wX25lb246CisJdmxkMS42NAkJZDcsW3IyXSEJCUAgbG9hZCBpbnAKKwl2bGQxLjY0CQlkNixbcjJdIQogI2lmZGVmIF9fQVJNRUxfXwotCXZyZXY2NC44CXExNCxxMTQKKwl2cmV2NjQuOAlxMyxxMwogI2VuZGlmCi0JdmVvcgkJZDIsZDIKLQl2ZW9yCQlxMTQscTEwCQkJQCBpbnBePVhpCi0JdmVvcgkJcTEwLHExMAotCXZkdXAuOAkJZDQsZDI4WzBdCUAgYnJvYWRjYXN0IGxvd2VzdCBieXRlCi0uTGlubmVyX25lb246Ci0Jc3VicwkJcjEscjEsIzEKLQl2bXVsbC5wOAlxOSxkMSxkNAkJQCBILmxvwrdYaVtpXQotCXZtdWxsLnA4CXE4LGQwLGQ0CQlAIEguaGnCt1hpW2ldCi0JdmV4dC44CQlxMTQscTEyLCMxCQlAIElOPj49OAorCXZlb3IJCXEzLHEwCQkJQCBpbnBePVhpCisuTGdtdWx0X25lb246CisJdmV4dC44CQlkMTYsIGQyNiwgZDI2LCAjMQlAIEExCisJdm11bGwucDgJcTgsIGQxNiwgZDYJCUAgRiA9IEExKkIKKwl2ZXh0LjgJCWQwLCBkNiwgZDYsICMxCUAgQjEKKwl2bXVsbC5wOAlxMCwgZDI2LCBkMAkJQCBFID0gQSpCMQorCXZleHQuOAkJZDE4LCBkMjYsIGQyNiwgIzIJQCBBMgorCXZtdWxsLnA4CXE5LCBkMTgsIGQ2CQlAIEggPSBBMipCCisJdmV4dC44CQlkMjIsIGQ2LCBkNiwgIzIJQCBCMgorCXZtdWxsLnA4CXExMSwgZDI2LCBkMjIJCUAgRyA9IEEqQjIKKwl2ZXh0LjgJCWQyMCwgZDI2LCBkMjYsICMzCUAgQTMKKwl2ZW9yCQlxOCwgcTgsIHEwCQlAIEwgPSBFICsgRgorCXZtdWxsLnA4CXExMCwgZDIwLCBkNgkJQCBKID0gQTMqQgorCXZleHQuOAkJZDAsIGQ2LCBkNiwgIzMJQCBCMworCXZlb3IJCXE5LCBxOSwgcTExCQlAIE0gPSBHICsgSAorCXZtdWxsLnA4CXEwLCBkMjYsIGQwCQlAIEkgPSBBKkIzCisJdmVvcgkJZDE2LCBkMTYsIGQxNwlAIHQwID0gKEwpIChQMCArIFAxKSA8PCA4CisJdmFuZAkJZDE3LCBkMTcsIGQyOQorCXZleHQuOAkJZDIyLCBkNiwgZDYsICM0CUAgQjQKKwl2ZW9yCQlkMTgsIGQxOCwgZDE5CUAgdDEgPSAoTSkgKFAyICsgUDMpIDw8IDE2CisJdmFuZAkJZDE5LCBkMTksIGQzMAorCXZtdWxsLnA4CXExMSwgZDI2LCBkMjIJCUAgSyA9IEEqQjQKKwl2ZW9yCQlxMTAsIHExMCwgcTAJCUAgTiA9IEkgKyBKCisJdmVvcgkJZDE2LCBkMTYsIGQxNworCXZlb3IJCWQxOCwgZDE4LCBkMTkKKwl2ZW9yCQlkMjAsIGQyMCwgZDIxCUAgdDIgPSAoTikgKFA0ICsgUDUpIDw8IDI0CisJdmFuZAkJZDIxLCBkMjEsIGQzMQorCXZleHQuOAkJcTgsIHE4LCBxOCwgIzE1CisJdmVvcgkJZDIyLCBkMjIsIGQyMwlAIHQzID0gKEspIChQNiArIFA3KSA8PCAzMgorCXZtb3YuaTY0CWQyMywgIzAKKwl2ZXh0LjgJCXE5LCBxOSwgcTksICMxNAorCXZlb3IJCWQyMCwgZDIwLCBkMjEKKwl2bXVsbC5wOAlxMCwgZDI2LCBkNgkJQCBEID0gQSpCCisJdmV4dC44CQlxMTEsIHExMSwgcTExLCAjMTIKKwl2ZXh0LjgJCXExMCwgcTEwLCBxMTAsICMxMworCXZlb3IJCXE4LCBxOCwgcTkKKwl2ZW9yCQlxMTAsIHExMCwgcTExCisJdmVvcgkJcTAsIHEwLCBxOAorCXZlb3IJCXEwLCBxMCwgcTEwCisJdmVvcgkJZDYsZDYsZDcJQCBLYXJhdHN1YmEgcHJlLXByb2Nlc3NpbmcKKwl2ZXh0LjgJCWQxNiwgZDI4LCBkMjgsICMxCUAgQTEKKwl2bXVsbC5wOAlxOCwgZDE2LCBkNgkJQCBGID0gQTEqQgorCXZleHQuOAkJZDIsIGQ2LCBkNiwgIzEJQCBCMQorCXZtdWxsLnA4CXExLCBkMjgsIGQyCQlAIEUgPSBBKkIxCisJdmV4dC44CQlkMTgsIGQyOCwgZDI4LCAjMglAIEEyCisJdm11bGwucDgJcTksIGQxOCwgZDYJCUAgSCA9IEEyKkIKKwl2ZXh0LjgJCWQyMiwgZDYsIGQ2LCAjMglAIEIyCisJdm11bGwucDgJcTExLCBkMjgsIGQyMgkJQCBHID0gQSpCMgorCXZleHQuOAkJZDIwLCBkMjgsIGQyOCwgIzMJQCBBMworCXZlb3IJCXE4LCBxOCwgcTEJCUAgTCA9IEUgKyBGCisJdm11bGwucDgJcTEwLCBkMjAsIGQ2CQlAIEogPSBBMypCCisJdmV4dC44CQlkMiwgZDYsIGQ2LCAjMwlAIEIzCisJdmVvcgkJcTksIHE5LCBxMTEJCUAgTSA9IEcgKyBICisJdm11bGwucDgJcTEsIGQyOCwgZDIJCUAgSSA9IEEqQjMKKwl2ZW9yCQlkMTYsIGQxNiwgZDE3CUAgdDAgPSAoTCkgKFAwICsgUDEpIDw8IDgKKwl2YW5kCQlkMTcsIGQxNywgZDI5CisJdmV4dC44CQlkMjIsIGQ2LCBkNiwgIzQJQCBCNAorCXZlb3IJCWQxOCwgZDE4LCBkMTkJQCB0MSA9IChNKSAoUDIgKyBQMykgPDwgMTYKKwl2YW5kCQlkMTksIGQxOSwgZDMwCisJdm11bGwucDgJcTExLCBkMjgsIGQyMgkJQCBLID0gQSpCNAorCXZlb3IJCXExMCwgcTEwLCBxMQkJQCBOID0gSSArIEoKKwl2ZW9yCQlkMTYsIGQxNiwgZDE3CisJdmVvcgkJZDE4LCBkMTgsIGQxOQorCXZlb3IJCWQyMCwgZDIwLCBkMjEJQCB0MiA9IChOKSAoUDQgKyBQNSkgPDwgMjQKKwl2YW5kCQlkMjEsIGQyMSwgZDMxCisJdmV4dC44CQlxOCwgcTgsIHE4LCAjMTUKKwl2ZW9yCQlkMjIsIGQyMiwgZDIzCUAgdDMgPSAoSykgKFA2ICsgUDcpIDw8IDMyCisJdm1vdi5pNjQJZDIzLCAjMAorCXZleHQuOAkJcTksIHE5LCBxOSwgIzE0CisJdmVvcgkJZDIwLCBkMjAsIGQyMQorCXZtdWxsLnA4CXExLCBkMjgsIGQ2CQlAIEQgPSBBKkIKKwl2ZXh0LjgJCXExMSwgcTExLCBxMTEsICMxMgorCXZleHQuOAkJcTEwLCBxMTAsIHExMCwgIzEzCisJdmVvcgkJcTgsIHE4LCBxOQorCXZlb3IJCXExMCwgcTEwLCBxMTEKKwl2ZW9yCQlxMSwgcTEsIHE4CisJdmVvcgkJcTEsIHExLCBxMTAKKwl2ZXh0LjgJCWQxNiwgZDI3LCBkMjcsICMxCUAgQTEKKwl2bXVsbC5wOAlxOCwgZDE2LCBkNwkJQCBGID0gQTEqQgorCXZleHQuOAkJZDQsIGQ3LCBkNywgIzEJQCBCMQorCXZtdWxsLnA4CXEyLCBkMjcsIGQ0CQlAIEUgPSBBKkIxCisJdmV4dC44CQlkMTgsIGQyNywgZDI3LCAjMglAIEEyCisJdm11bGwucDgJcTksIGQxOCwgZDcJCUAgSCA9IEEyKkIKKwl2ZXh0LjgJCWQyMiwgZDcsIGQ3LCAjMglAIEIyCisJdm11bGwucDgJcTExLCBkMjcsIGQyMgkJQCBHID0gQSpCMgorCXZleHQuOAkJZDIwLCBkMjcsIGQyNywgIzMJQCBBMworCXZlb3IJCXE4LCBxOCwgcTIJCUAgTCA9IEUgKyBGCisJdm11bGwucDgJcTEwLCBkMjAsIGQ3CQlAIEogPSBBMypCCisJdmV4dC44CQlkNCwgZDcsIGQ3LCAjMwlAIEIzCisJdmVvcgkJcTksIHE5LCBxMTEJCUAgTSA9IEcgKyBICisJdm11bGwucDgJcTIsIGQyNywgZDQJCUAgSSA9IEEqQjMKKwl2ZW9yCQlkMTYsIGQxNiwgZDE3CUAgdDAgPSAoTCkgKFAwICsgUDEpIDw8IDgKKwl2YW5kCQlkMTcsIGQxNywgZDI5CisJdmV4dC44CQlkMjIsIGQ3LCBkNywgIzQJQCBCNAorCXZlb3IJCWQxOCwgZDE4LCBkMTkJQCB0MSA9IChNKSAoUDIgKyBQMykgPDwgMTYKKwl2YW5kCQlkMTksIGQxOSwgZDMwCisJdm11bGwucDgJcTExLCBkMjcsIGQyMgkJQCBLID0gQSpCNAorCXZlb3IJCXExMCwgcTEwLCBxMgkJQCBOID0gSSArIEoKKwl2ZW9yCQlkMTYsIGQxNiwgZDE3CisJdmVvcgkJZDE4LCBkMTgsIGQxOQorCXZlb3IJCWQyMCwgZDIwLCBkMjEJQCB0MiA9IChOKSAoUDQgKyBQNSkgPDwgMjQKKwl2YW5kCQlkMjEsIGQyMSwgZDMxCisJdmV4dC44CQlxOCwgcTgsIHE4LCAjMTUKKwl2ZW9yCQlkMjIsIGQyMiwgZDIzCUAgdDMgPSAoSykgKFA2ICsgUDcpIDw8IDMyCisJdm1vdi5pNjQJZDIzLCAjMAorCXZleHQuOAkJcTksIHE5LCBxOSwgIzE0CisJdmVvcgkJZDIwLCBkMjAsIGQyMQorCXZtdWxsLnA4CXEyLCBkMjcsIGQ3CQlAIEQgPSBBKkIKKwl2ZXh0LjgJCXExMSwgcTExLCBxMTEsICMxMgorCXZleHQuOAkJcTEwLCBxMTAsIHExMCwgIzEzCisJdmVvcgkJcTgsIHE4LCBxOQorCXZlb3IJCXExMCwgcTEwLCBxMTEKKwl2ZW9yCQlxMiwgcTIsIHE4CisJdmVvcgkJcTIsIHEyLCBxMTAKKwl2ZW9yCQlxMSxxMSxxMAkJQCBLYXJhdHN1YmEgcG9zdC1wcm9jZXNzaW5nCisJdmVvcgkJcTEscTEscTIKKwl2ZW9yCQlkMSxkMSxkMgorCXZlb3IJCWQ0LGQ0LGQzCUAgWGh8WGwgLSAyNTYtYml0IHJlc3VsdAogCi0JdmVvcgkJcTEwLHExMwkJQCBtb2R1bG8tc2NoZWR1bGVkIHBhcnQKLQl2c2hsLmk2NAlkMjIsIzQ4Ci0JdmR1cC44CQlkNCxkMjhbMF0JQCBicm9hZGNhc3QgbG93ZXN0IGJ5dGUKLQl2ZW9yCQlkMyxkMTgsZDIwCisJQCBlcXVpdmFsZW50IG9mIHJlZHVjdGlvbl9hdnggZnJvbSBnaGFzaC14ODZfNjQucGwKKwl2c2hsLmk2NAlxOSxxMCwjNTcJCUAgMXN0IHBoYXNlCisJdnNobC5pNjQJcTEwLHEwLCM2MgorCXZlb3IJCXExMCxxMTAscTkJCUAKKwl2c2hsLmk2NAlxOSxxMCwjNjMKKwl2ZW9yCQlxMTAsIHExMCwgcTkJCUAKKyAJdmVvcgkJZDEsZDEsZDIwCUAKKwl2ZW9yCQlkNCxkNCxkMjEKIAotCXZlb3IJCWQyMSxkMjIKLQl2dXpwLjgJCXE5LHE4Ci0JdnNsaS44CQlkMixkMywjMQkJQCBjb21wb3NlIHRoZSAiY2FycnkiIGJ5dGUKLQl2ZXh0LjgJCXExMCxxMTIsIzEJCUAgWj4+PTgKKwl2c2hyLnU2NAlxMTAscTAsIzEJCUAgMm5kIHBoYXNlCisJdmVvcgkJcTIscTIscTAKKwl2ZW9yCQlxMCxxMCxxMTAJCUAKKwl2c2hyLnU2NAlxMTAscTEwLCM2CisJdnNoci51NjQJcTAscTAsIzEJCUAKKwl2ZW9yCQlxMCxxMCxxMgkJQAorCXZlb3IJCXEwLHEwLHExMAkJQAogCi0Jdm11bGwucDgJcTExLGQyLGQ1CQlAICJjYXJyeSLCtzB4ZTEKLQl2c2hyLnU4CQlkMixkMywjNwkJQCBzYXZlIFoncyBib3R0b20gYml0Ci0JdmV4dC44CQlxMTMscTkscTEyLCMxCUAgUWxvPj49OAotCXZlb3IJCXExMCxxOAotCWJuZQkJLkxpbm5lcl9uZW9uCi0KLQl2ZW9yCQlxMTAscTEzCQlAIG1vZHVsby1zY2hlZHVsZWQgYXJ0ZWZhY3QKLQl2c2hsLmk2NAlkMjIsIzQ4Ci0JdmVvcgkJZDIxLGQyMgotCi0JQCBmaW5hbGl6YXRpb24sIG5vcm1hbGl6ZSBaOlpvCi0JdmFuZAkJZDIsZDUJCUAgc3VmZmljZXMgdG8gbWFzayB0aGUgYml0Ci0JdnNoci51NjQJZDMsZDIwLCM2MwotCXZzaGwuaTY0CXExMCwjMQogCXN1YnMJCXIzLCMxNgotCXZvcnIJCXExMCxxMQkJQCBaPVo6Wm88PDEKLQlibmUJCS5Mb3V0ZXJfbmVvbgorCWJuZQkJLkxvb3BfbmVvbgogCiAjaWZkZWYgX19BUk1FTF9fCi0JdnJldjY0LjgJcTEwLHExMAorCXZyZXY2NC44CXEwLHEwCiAjZW5kaWYKIAlzdWIJCXIwLCMxNgkKLQl2c3QxLjY0CQlkMjEsW3IwLDo2NF0hCUAgd3JpdGUgb3V0IFhpCi0JdnN0MS42NAkJZDIwLFtyMCw6NjRdCisJdnN0MS42NAkJZDEsW3IwLDo2NF0hCUAgd3JpdGUgb3V0IFhpCisJdnN0MS42NAkJZDAsW3IwLDo2NF0KIAotCS53b3JkCTB4ZTEyZmZmMWUKKwlieAlscgkJCQkJQCBieCBscgogLnNpemUJZ2NtX2doYXNoX25lb24sLi1nY21fZ2hhc2hfbmVvbgogI2VuZGlmCiAuYXNjaXogICJHSEFTSCBmb3IgQVJNdjQvTkVPTiwgQ1JZUFRPR0FNUyBieSA8YXBwcm9Ab3BlbnNzbC5vcmc+IgpkaWZmIC0tZ2l0IGEvY3J5cHRvL21vZGVzL2FzbS9naGFzaC1hcm12NC5wbCBiL2NyeXB0by9tb2Rlcy9hc20vZ2hhc2gtYXJtdjQucGwKaW5kZXggZTQ2ZjhlMy4uYjc5ZWNiYyAxMDA2NDQKLS0tIGEvY3J5cHRvL21vZGVzL2FzbS9naGFzaC1hcm12NC5wbAorKysgYi9jcnlwdG8vbW9kZXMvYXNtL2doYXNoLWFybXY0LnBsCkBAIC0zNSw2ICszNSwyMCBAQAogIyBBZGQgTkVPTiBpbXBsZW1lbnRhdGlvbiBmZWF0dXJpbmcgcG9seW5vbWlhbCBtdWx0aXBsaWNhdGlvbiwgaS5lLiBubwogIyBsb29rdXAgdGFibGVzIGludm9sdmVkLiBPbiBDb3J0ZXggQTggaXQgd2FzIG1lYXN1cmVkIHRvIHByb2Nlc3Mgb25lCiAjIGJ5dGUgaW4gMTUgY3ljbGVzIG9yIDU1JSBmYXN0ZXIgdGhhbiBpbnRlZ2VyLW9ubHkgY29kZS4KKyMKKyMgQXByaWwgMjAxNAorIworIyBTd2l0Y2ggdG8gbXVsdGlwbGljYXRpb24gYWxnb3JpdGhtIHN1Z2dlc3RlZCBpbiBwYXBlciByZWZlcnJlZAorIyBiZWxvdyBhbmQgY29tYmluZSBpdCB3aXRoIHJlZHVjdGlvbiBhbGdvcml0aG0gZnJvbSB4ODYgbW9kdWxlLgorIyBQZXJmb3JtYW5jZSBpbXByb3ZlbWVudCBvdmVyIHByZXZpb3VzIHZlcnNpb24gdmFyaWVzIGZyb20gNjUlIG9uCisjIFNuYXBkcmFnb24gUzQgdG8gMTEwJSBvbiBDb3J0ZXggQTkuIEluIGFic29sdXRlIHRlcm1zIENvcnRleCBBOAorIyBwcm9jZXNzZXMgb25lIGJ5dGUgaW4gOC40NSBjeWNsZXMsIEE5IC0gaW4gMTAuMiwgU25hcGRyYWdvbiBTNCAtCisjIGluIDkuMzMuCisjCisjIEPDom1hcmEsIEQuOyBHb3V2w6phLCBDLiBQLiBMLjsgTMOzcGV6LCBKLiAmIERhaGFiLCBSLjogRmFzdCBTb2Z0d2FyZQorIyBQb2x5bm9taWFsIE11bHRpcGxpY2F0aW9uIG9uIEFSTSBQcm9jZXNzb3JzIHVzaW5nIHRoZSBORU9OIEVuZ2luZS4KKyMgCisjIGh0dHA6Ly9jb25yYWRvcGxnLmNyeXB0b2xhbmQubmV0L2ZpbGVzLzIwMTAvMTIvbW9jcnlzZW4xMy5wZGYKIAogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIyBOb3RlIGFib3V0ICI1MjhCIiB2YXJpYW50LiBJbiBBUk0gY2FzZSBpdCBtYWtlcyBsZXNzZXIgc2Vuc2UgdG8KQEAgLTMwMywxMTcgKzMxNywxNjAgQEAKIC5zaXplCWdjbV9nbXVsdF80Yml0LC4tZ2NtX2dtdWx0XzRiaXQKIF9fXwogewotbXkgJGNudD0kSHRibDsJIyAkSHRibCBpcyB1c2VkIG9uY2UgaW4gdGhlIHZlcnkgYmVnaW5uaW5nCitteSAoJFhsLCRYbSwkWGgsJElOKT1tYXAoInEkXyIsKDAuLjMpKTsKK215ICgkdDAsJHQxLCR0MiwkdDMpPW1hcCgicSRfIiwoOC4uMTIpKTsKK215ICgkSGxvLCRIaGksJEhobCwkazQ4LCRrMzIsJGsxNik9bWFwKCJkJF8iLCgyNi4uMzEpKTsKIAotbXkgKCRIaGksICRIbG8sICRabywgJFQsICR4aSwgJG1vZCkgPSBtYXAoImQkXyIsKDAuLjcpKTsKLW15ICgkUWhpLCAkUWxvLCAkWiwgICRSLCAkemVybywgJFFwb3N0LCAkSU4pID0gbWFwKCJxJF8iLCg4Li4xNSkpOwotCi0jIFo6Wm8ga2VlcHMgMTI4LWJpdCByZXN1bHQgc2hpZnRlZCBieSAxIHRvIHRoZSByaWdodCwgd2l0aCBib3R0b20gYml0Ci0jIGluIFpvLiBPciBzaG91bGQgSSBzYXkgInRvcCBiaXQiLCBiZWNhdXNlIEdIQVNIIGlzIHNwZWNpZmllZCBpbgotIyByZXZlcnNlIGJpdCBvcmRlcj8gT3RoZXJ3aXNlIHN0cmFpZ2h0Zm9yd2FyZCAxMjgtYnQgSCBieSBvbmUgaW5wdXQKLSMgYnl0ZSBtdWx0aXBsaWNhdGlvbiBhbmQgbW9kdWxvLXJlZHVjdGlvbiwgdGltZXMgMTYuCi0KLXN1YiBEbG8oKSAgIHsgc2hpZnQ9fm18cShbMV0/WzAtOV0pfD8iZCIuKCQxKjIpOiIiOyAgICAgfQotc3ViIERoaSgpICAgeyBzaGlmdD1+bXxxKFsxXT9bMC05XSl8PyJkIi4oJDEqMisxKToiIjsgICB9Ci1zdWIgUSgpICAgICB7IHNoaWZ0PX5tfGQoWzEtM10/WzAyNDY4XSl8PyJxIi4oJDEvMik6IiI7IH0KK3N1YiBjbG11bDY0eDY0IHsKK215ICgkciwkYSwkYik9QF87CiskY29kZS49PDxfX187CisJdmV4dC44CQkkdDAjbG8sICRhLCAkYSwgIzEJQCBBMQorCXZtdWxsLnA4CSR0MCwgJHQwI2xvLCAkYgkJQCBGID0gQTEqQgorCXZleHQuOAkJJHIjbG8sICRiLCAkYiwgIzEJQCBCMQorCXZtdWxsLnA4CSRyLCAkYSwgJHIjbG8JCUAgRSA9IEEqQjEKKwl2ZXh0LjgJCSR0MSNsbywgJGEsICRhLCAjMglAIEEyCisJdm11bGwucDgJJHQxLCAkdDEjbG8sICRiCQlAIEggPSBBMipCCisJdmV4dC44CQkkdDMjbG8sICRiLCAkYiwgIzIJQCBCMgorCXZtdWxsLnA4CSR0MywgJGEsICR0MyNsbwkJQCBHID0gQSpCMgorCXZleHQuOAkJJHQyI2xvLCAkYSwgJGEsICMzCUAgQTMKKwl2ZW9yCQkkdDAsICR0MCwgJHIJCUAgTCA9IEUgKyBGCisJdm11bGwucDgJJHQyLCAkdDIjbG8sICRiCQlAIEogPSBBMypCCisJdmV4dC44CQkkciNsbywgJGIsICRiLCAjMwlAIEIzCisJdmVvcgkJJHQxLCAkdDEsICR0MwkJQCBNID0gRyArIEgKKwl2bXVsbC5wOAkkciwgJGEsICRyI2xvCQlAIEkgPSBBKkIzCisJdmVvcgkJJHQwI2xvLCAkdDAjbG8sICR0MCNoaQlAIHQwID0gKEwpIChQMCArIFAxKSA8PCA4CisJdmFuZAkJJHQwI2hpLCAkdDAjaGksICRrNDgKKwl2ZXh0LjgJCSR0MyNsbywgJGIsICRiLCAjNAlAIEI0CisJdmVvcgkJJHQxI2xvLCAkdDEjbG8sICR0MSNoaQlAIHQxID0gKE0pIChQMiArIFAzKSA8PCAxNgorCXZhbmQJCSR0MSNoaSwgJHQxI2hpLCAkazMyCisJdm11bGwucDgJJHQzLCAkYSwgJHQzI2xvCQlAIEsgPSBBKkI0CisJdmVvcgkJJHQyLCAkdDIsICRyCQlAIE4gPSBJICsgSgorCXZlb3IJCSR0MCNsbywgJHQwI2xvLCAkdDAjaGkKKwl2ZW9yCQkkdDEjbG8sICR0MSNsbywgJHQxI2hpCisJdmVvcgkJJHQyI2xvLCAkdDIjbG8sICR0MiNoaQlAIHQyID0gKE4pIChQNCArIFA1KSA8PCAyNAorCXZhbmQJCSR0MiNoaSwgJHQyI2hpLCAkazE2CisJdmV4dC44CQkkdDAsICR0MCwgJHQwLCAjMTUKKwl2ZW9yCQkkdDMjbG8sICR0MyNsbywgJHQzI2hpCUAgdDMgPSAoSykgKFA2ICsgUDcpIDw8IDMyCisJdm1vdi5pNjQJJHQzI2hpLCAjMAorCXZleHQuOAkJJHQxLCAkdDEsICR0MSwgIzE0CisJdmVvcgkJJHQyI2xvLCAkdDIjbG8sICR0MiNoaQorCXZtdWxsLnA4CSRyLCAkYSwgJGIJCUAgRCA9IEEqQgorCXZleHQuOAkJJHQzLCAkdDMsICR0MywgIzEyCisJdmV4dC44CQkkdDIsICR0MiwgJHQyLCAjMTMKKwl2ZW9yCQkkdDAsICR0MCwgJHQxCisJdmVvcgkJJHQyLCAkdDIsICR0MworCXZlb3IJCSRyLCAkciwgJHQwCisJdmVvcgkJJHIsICRyLCAkdDIKK19fXworfQogCiAkY29kZS49PDxfX187CiAjaWYgX19BUk1fQVJDSF9fPj03CiAuZnB1CW5lb24KIAorLmdsb2JhbAlnY21faW5pdF9uZW9uCisudHlwZQlnY21faW5pdF9uZW9uLCVmdW5jdGlvbgorLmFsaWduCTQKK2djbV9pbml0X25lb246CisJdmxkMS42NAkJJElOI2hpLFtyMSw6NjRdIQlAIGxvYWQgSAorCXZtb3YuaTgJCSR0MCwjMHhlMQorCXZsZDEuNjQJCSRJTiNsbyxbcjEsOjY0XQorCXZzaGwuaTY0CSR0MCNoaSwjNTcKKwl2c2hyLnU2NAkkdDAjbG8sIzYzCQlAIHQwPTB4YzIuLi4uMDEKKwl2ZHVwLjgJCSR0MSwkSU4jaGlbN10KKwl2c2hyLnU2NAkkSGxvLCRJTiNsbywjNjMKKwl2c2hyLnM4CQkkdDEsIzcJCQlAIGJyb2FkY2FzdCBjYXJyeSBiaXQKKwl2c2hsLmk2NAkkSU4sJElOLCMxCisJdmFuZAkJJHQwLCR0MCwkdDEKKwl2b3JyCQkkSU4jaGksJEhsbwkJQCBIPDw8PTEKKwl2ZW9yCQkkSU4sJElOLCR0MAkJQCB0d2lzdGVkIEgKKwl2c3RtaWEJCXIwLHskSU59CisKKwlyZXQJCQkJCUAgYnggbHIKKy5zaXplCWdjbV9pbml0X25lb24sLi1nY21faW5pdF9uZW9uCisKIC5nbG9iYWwJZ2NtX2dtdWx0X25lb24KIC50eXBlCWdjbV9nbXVsdF9uZW9uLCVmdW5jdGlvbgogLmFsaWduCTQKIGdjbV9nbXVsdF9uZW9uOgotCXN1YgkJJEh0YmwsIzE2CQlAIHBvaW50IGF0IEggaW4gR0NNMTI4X0NUWAotCXZsZDEuNjQJCWAmRGhpKCIkSU4iKWAsWyRYaSw6NjRdIUAgbG9hZCBYaQotCXZtb3YuaTMyCSRtb2QsIzB4ZTEJCUAgb3VyIGlycmVkdWNpYmxlIHBvbHlub21pYWwKLQl2bGQxLjY0CQlgJkRsbygiJElOIilgLFskWGksOjY0XSEKLQl2c2hyLnU2NAkkbW9kLCMzMgotCXZsZG1pYQkJJEh0YmwseyRIaGktJEhsb30JQCBsb2FkIEgKLQl2ZW9yCQkkemVybywkemVybworCXZsZDEuNjQJCSRJTiNoaSxbJFhpLDo2NF0hCUAgbG9hZCBYaQorCXZsZDEuNjQJCSRJTiNsbyxbJFhpLDo2NF0hCisJdm1vdi5pNjQJJGs0OCwjMHgwMDAwZmZmZmZmZmZmZmZmCisJdmxkbWlhCQkkSHRibCx7JEhsby0kSGhpfQlAIGxvYWQgdHdpc3RlZCBICisJdm1vdi5pNjQJJGszMiwjMHgwMDAwMDAwMGZmZmZmZmZmCiAjaWZkZWYgX19BUk1FTF9fCiAJdnJldjY0LjgJJElOLCRJTgogI2VuZGlmCi0JdmVvcgkJJFFwb3N0LCRRcG9zdAotCXZlb3IJCSRSLCRSCi0JbW92CQkkY250LCMxNgotCXZlb3IJCSRaLCRaCisJdm1vdi5pNjQJJGsxNiwjMHgwMDAwMDAwMDAwMDBmZmZmCisJdmVvcgkJJEhobCwkSGxvLCRIaGkJCUAgS2FyYXRzdWJhIHByZS1wcm9jZXNzaW5nCiAJbW92CQkkbGVuLCMxNgotCXZlb3IJCSRabywkWm8KLQl2ZHVwLjgJCSR4aSxgJkRsbygiJElOIilgWzBdCUAgYnJvYWRjYXN0IGxvd2VzdCBieXRlCi0JYgkJLkxpbm5lcl9uZW9uCisJYgkJLkxnbXVsdF9uZW9uCiAuc2l6ZQlnY21fZ211bHRfbmVvbiwuLWdjbV9nbXVsdF9uZW9uCiAKIC5nbG9iYWwJZ2NtX2doYXNoX25lb24KIC50eXBlCWdjbV9naGFzaF9uZW9uLCVmdW5jdGlvbgogLmFsaWduCTQKIGdjbV9naGFzaF9uZW9uOgotCXZsZDEuNjQJCWAmRGhpKCIkWiIpYCxbJFhpLDo2NF0hCUAgbG9hZCBYaQotCXZtb3YuaTMyCSRtb2QsIzB4ZTEJCUAgb3VyIGlycmVkdWNpYmxlIHBvbHlub21pYWwKLQl2bGQxLjY0CQlgJkRsbygiJFoiKWAsWyRYaSw6NjRdIQotCXZzaHIudTY0CSRtb2QsIzMyCi0JdmxkbWlhCQkkWGkseyRIaGktJEhsb30JCUAgbG9hZCBICi0JdmVvcgkJJHplcm8sJHplcm8KLQlub3AKKwl2bGQxLjY0CQkkWGwjaGksWyRYaSw6NjRdIQlAIGxvYWQgWGkKKwl2bGQxLjY0CQkkWGwjbG8sWyRYaSw6NjRdIQorCXZtb3YuaTY0CSRrNDgsIzB4MDAwMGZmZmZmZmZmZmZmZgorCXZsZG1pYQkJJEh0YmwseyRIbG8tJEhoaX0JQCBsb2FkIHR3aXN0ZWQgSAorCXZtb3YuaTY0CSRrMzIsIzB4MDAwMDAwMDBmZmZmZmZmZgogI2lmZGVmIF9fQVJNRUxfXwotCXZyZXY2NC44CSRaLCRaCisJdnJldjY0LjgJJFhsLCRYbAogI2VuZGlmCi0uTG91dGVyX25lb246Ci0JdmxkMS42NAkJYCZEaGkoJElOKWAsWyRpbnBdIQlAIGxvYWQgaW5wCi0JdmVvcgkJJFFwb3N0LCRRcG9zdAotCXZsZDEuNjQJCWAmRGxvKCRJTilgLFskaW5wXSEKLQl2ZW9yCQkkUiwkUgotCW1vdgkJJGNudCwjMTYKKwl2bW92Lmk2NAkkazE2LCMweDAwMDAwMDAwMDAwMGZmZmYKKwl2ZW9yCQkkSGhsLCRIbG8sJEhoaQkJQCBLYXJhdHN1YmEgcHJlLXByb2Nlc3NpbmcKKworLkxvb3BfbmVvbjoKKwl2bGQxLjY0CQkkSU4jaGksWyRpbnBdIQkJQCBsb2FkIGlucAorCXZsZDEuNjQJCSRJTiNsbyxbJGlucF0hCiAjaWZkZWYgX19BUk1FTF9fCiAJdnJldjY0LjgJJElOLCRJTgogI2VuZGlmCi0JdmVvcgkJJFpvLCRabwotCXZlb3IJCSRJTiwkWgkJCUAgaW5wXj1YaQotCXZlb3IJCSRaLCRaCi0JdmR1cC44CQkkeGksYCZEbG8oIiRJTiIpYFswXQlAIGJyb2FkY2FzdCBsb3dlc3QgYnl0ZQotLkxpbm5lcl9uZW9uOgotCXN1YnMJCSRjbnQsJGNudCwjMQotCXZtdWxsLnA4CSRRbG8sJEhsbywkeGkJCUAgSC5sb8K3WGlbaV0KLQl2bXVsbC5wOAkkUWhpLCRIaGksJHhpCQlAIEguaGnCt1hpW2ldCi0JdmV4dC44CQkkSU4sJHplcm8sIzEJCUAgSU4+Pj04CisJdmVvcgkJJElOLCRYbAkJCUAgaW5wXj1YaQorLkxnbXVsdF9uZW9uOgorX19fCisJJmNsbXVsNjR4NjQJKCRYbCwkSGxvLCIkSU4jbG8iKTsJIyBILmxvwrdYaS5sbworJGNvZGUuPTw8X19fOworCXZlb3IJCSRJTiNsbywkSU4jbG8sJElOI2hpCUAgS2FyYXRzdWJhIHByZS1wcm9jZXNzaW5nCitfX18KKwkmY2xtdWw2NHg2NAkoJFhtLCRIaGwsIiRJTiNsbyIpOwkjIChILmxvK0guaGkpwrcoWGkubG8rWGkuaGkpCisJJmNsbXVsNjR4NjQJKCRYaCwkSGhpLCIkSU4jaGkiKTsJIyBILmhpwrdYaS5oaQorJGNvZGUuPTw8X19fOworCXZlb3IJCSRYbSwkWG0sJFhsCQlAIEthcmF0c3ViYSBwb3N0LXByb2Nlc3NpbmcKKwl2ZW9yCQkkWG0sJFhtLCRYaAorCXZlb3IJCSRYbCNoaSwkWGwjaGksJFhtI2xvCisJdmVvcgkJJFhoI2xvLCRYaCNsbywkWG0jaGkJQCBYaHxYbCAtIDI1Ni1iaXQgcmVzdWx0CiAKLQl2ZW9yCQkkWiwkUXBvc3QJCUAgbW9kdWxvLXNjaGVkdWxlZCBwYXJ0Ci0JdnNobC5pNjQJYCZEbG8oIiRSIilgLCM0OAotCXZkdXAuOAkJJHhpLGAmRGxvKCIkSU4iKWBbMF0JQCBicm9hZGNhc3QgbG93ZXN0IGJ5dGUKLQl2ZW9yCQkkVCxgJkRsbygiJFFsbyIpYCxgJkRsbygiJFoiKWAKKwlAIGVxdWl2YWxlbnQgb2YgcmVkdWN0aW9uX2F2eCBmcm9tIGdoYXNoLXg4Nl82NC5wbAorCXZzaGwuaTY0CSR0MSwkWGwsIzU3CQlAIDFzdCBwaGFzZQorCXZzaGwuaTY0CSR0MiwkWGwsIzYyCisJdmVvcgkJJHQyLCR0MiwkdDEJCUAKKwl2c2hsLmk2NAkkdDEsJFhsLCM2MworCXZlb3IJCSR0MiwgJHQyLCAkdDEJCUAKKyAJdmVvcgkJJFhsI2hpLCRYbCNoaSwkdDIjbG8JQAorCXZlb3IJCSRYaCNsbywkWGgjbG8sJHQyI2hpCiAKLQl2ZW9yCQlgJkRoaSgiJFoiKWAsYCZEbG8oIiRSIilgCi0JdnV6cC44CQkkUWxvLCRRaGkKLQl2c2xpLjgJCSRabywkVCwjMQkJQCBjb21wb3NlIHRoZSAiY2FycnkiIGJ5dGUKLQl2ZXh0LjgJCSRaLCR6ZXJvLCMxCQlAIFo+Pj04CisJdnNoci51NjQJJHQyLCRYbCwjMQkJQCAybmQgcGhhc2UKKwl2ZW9yCQkkWGgsJFhoLCRYbAorCXZlb3IJCSRYbCwkWGwsJHQyCQlACisJdnNoci51NjQJJHQyLCR0MiwjNgorCXZzaHIudTY0CSRYbCwkWGwsIzEJCUAKKwl2ZW9yCQkkWGwsJFhsLCRYaAkJQAorCXZlb3IJCSRYbCwkWGwsJHQyCQlACiAKLQl2bXVsbC5wOAkkUiwkWm8sJG1vZAkJQCAiY2FycnkiwrcweGUxCi0JdnNoci51OAkJJFpvLCRULCM3CQlAIHNhdmUgWidzIGJvdHRvbSBiaXQKLQl2ZXh0LjgJCSRRcG9zdCwkUWxvLCR6ZXJvLCMxCUAgUWxvPj49OAotCXZlb3IJCSRaLCRRaGkKLQlibmUJCS5MaW5uZXJfbmVvbgotCi0JdmVvcgkJJFosJFFwb3N0CQlAIG1vZHVsby1zY2hlZHVsZWQgYXJ0ZWZhY3QKLQl2c2hsLmk2NAlgJkRsbygiJFIiKWAsIzQ4Ci0JdmVvcgkJYCZEaGkoIiRaIilgLGAmRGxvKCIkUiIpYAotCi0JQCBmaW5hbGl6YXRpb24sIG5vcm1hbGl6ZSBaOlpvCi0JdmFuZAkJJFpvLCRtb2QJCUAgc3VmZmljZXMgdG8gbWFzayB0aGUgYml0Ci0JdnNoci51NjQJYCZEaGkoJlEoIiRabyIpKWAsYCZEbG8oIiRaIilgLCM2MwotCXZzaGwuaTY0CSRaLCMxCiAJc3VicwkJJGxlbiwjMTYKLQl2b3JyCQkkWixgJlEoIiRabyIpYAkJQCBaPVo6Wm88PDEKLQlibmUJCS5Mb3V0ZXJfbmVvbgorCWJuZQkJLkxvb3BfbmVvbgogCiAjaWZkZWYgX19BUk1FTF9fCi0JdnJldjY0LjgJJFosJFoKKwl2cmV2NjQuOAkkWGwsJFhsCiAjZW5kaWYKIAlzdWIJCSRYaSwjMTYJCi0JdnN0MS42NAkJYCZEaGkoIiRaIilgLFskWGksOjY0XSEJQCB3cml0ZSBvdXQgWGkKLQl2c3QxLjY0CQlgJkRsbygiJFoiKWAsWyRYaSw6NjRdCisJdnN0MS42NAkJJFhsI2hpLFskWGksOjY0XSEJQCB3cml0ZSBvdXQgWGkKKwl2c3QxLjY0CQkkWGwjbG8sWyRYaSw6NjRdCiAKLQlieAlscgorCXJldAkJCQkJQCBieCBscgogLnNpemUJZ2NtX2doYXNoX25lb24sLi1nY21fZ2hhc2hfbmVvbgogI2VuZGlmCiBfX18KQEAgLTQyMyw3ICs0ODAsMTMgQEAKIC5hbGlnbiAgMgogX19fCiAKLSRjb2RlID1+IHMvXGAoW15cYF0qKVxgL2V2YWwgJDEvZ2VtOwotJGNvZGUgPX4gcy9cYmJ4XHMrbHJcYi8ud29yZFx0MHhlMTJmZmYxZS9nbTsJIyBtYWtlIGl0IHBvc3NpYmxlIHRvIGNvbXBpbGUgd2l0aCAtbWFyY2g9YXJtdjQKLXByaW50ICRjb2RlOworZm9yZWFjaCAoc3BsaXQoIlxuIiwkY29kZSkpIHsKKwlzL1xgKFteXGBdKilcYC9ldmFsICQxL2dlbzsKKworCXMvXGJxKFswLTldKykjKGxvfGhpKS9zcHJpbnRmICJkJWQiLDIqJDErKCQyIGVxICJoaSIpL2dlbwlvcgorCXMvXGJyZXRcYi9ieAlsci9nbwkJb3IKKwlzL1xiYnhccytsclxiLy53b3JkXHQweGUxMmZmZjFlL2dvOyAgICAjIG1ha2UgaXQgcG9zc2libGUgdG8gY29tcGlsZSB3aXRoIC1tYXJjaD1hcm12NAorCisJcHJpbnQgJF8sIlxuIjsKK30KIGNsb3NlIFNURE9VVDsgIyBlbmZvcmNlIGZsdXNoCmRpZmYgLS1naXQgYS9jcnlwdG8vbW9kZXMvYXNtL2doYXNoLXg4Ni5TIGIvY3J5cHRvL21vZGVzL2FzbS9naGFzaC14ODYuUwppbmRleCBjYjlhZTIwLi41MDQ3MzIwIDEwMDY0NAotLS0gYS9jcnlwdG8vbW9kZXMvYXNtL2doYXNoLXg4Ni5TCisrKyBiL2NyeXB0by9tb2Rlcy9hc20vZ2hhc2gteDg2LlMKQEAgLTIwMyw0MDAgKzIwMyw2IEBACiAJcG9wbAklZWJwCiAJcmV0CiAuc2l6ZQlnY21fZ2hhc2hfNGJpdF94ODYsLi0uTF9nY21fZ2hhc2hfNGJpdF94ODZfYmVnaW4KLS50eXBlCV9tbXhfZ211bHRfNGJpdF9pbm5lcixAZnVuY3Rpb24KLS5hbGlnbgkxNgotX21teF9nbXVsdF80Yml0X2lubmVyOgotCXhvcmwJJWVjeCwlZWN4Ci0JbW92bAklZWJ4LCVlZHgKLQltb3ZiCSVkbCwlY2wKLQlzaGxiCSQ0LCVjbAotCWFuZGwJJDI0MCwlZWR4Ci0JbW92cQk4KCVlc2ksJWVjeCwxKSwlbW0wCi0JbW92cQkoJWVzaSwlZWN4LDEpLCVtbTEKLQltb3ZkCSVtbTAsJWVicAotCXBzcmxxCSQ0LCVtbTAKLQltb3ZxCSVtbTEsJW1tMgotCXBzcmxxCSQ0LCVtbTEKLQlweG9yCTgoJWVzaSwlZWR4LDEpLCVtbTAKLQltb3ZiCTE0KCVlZGkpLCVjbAotCXBzbGxxCSQ2MCwlbW0yCi0JYW5kbAkkMTUsJWVicAotCXB4b3IJKCVlc2ksJWVkeCwxKSwlbW0xCi0JbW92bAklZWN4LCVlZHgKLQltb3ZkCSVtbTAsJWVieAotCXB4b3IJJW1tMiwlbW0wCi0Jc2hsYgkkNCwlY2wKLQlwc3JscQkkNCwlbW0wCi0JbW92cQklbW0xLCVtbTIKLQlwc3JscQkkNCwlbW0xCi0JcHhvcgk4KCVlc2ksJWVjeCwxKSwlbW0wCi0JcHNsbHEJJDYwLCVtbTIKLQlhbmRsCSQyNDAsJWVkeAotCXB4b3IJKCVlYXgsJWVicCw4KSwlbW0xCi0JYW5kbAkkMTUsJWVieAotCXB4b3IJKCVlc2ksJWVjeCwxKSwlbW0xCi0JbW92ZAklbW0wLCVlYnAKLQlweG9yCSVtbTIsJW1tMAotCXBzcmxxCSQ0LCVtbTAKLQltb3ZxCSVtbTEsJW1tMgotCXBzcmxxCSQ0LCVtbTEKLQlweG9yCTgoJWVzaSwlZWR4LDEpLCVtbTAKLQltb3ZiCTEzKCVlZGkpLCVjbAotCXBzbGxxCSQ2MCwlbW0yCi0JcHhvcgkoJWVheCwlZWJ4LDgpLCVtbTEKLQlhbmRsCSQxNSwlZWJwCi0JcHhvcgkoJWVzaSwlZWR4LDEpLCVtbTEKLQltb3ZsCSVlY3gsJWVkeAotCW1vdmQJJW1tMCwlZWJ4Ci0JcHhvcgklbW0yLCVtbTAKLQlzaGxiCSQ0LCVjbAotCXBzcmxxCSQ0LCVtbTAKLQltb3ZxCSVtbTEsJW1tMgotCXBzcmxxCSQ0LCVtbTEKLQlweG9yCTgoJWVzaSwlZWN4LDEpLCVtbTAKLQlwc2xscQkkNjAsJW1tMgotCWFuZGwJJDI0MCwlZWR4Ci0JcHhvcgkoJWVheCwlZWJwLDgpLCVtbTEKLQlhbmRsCSQxNSwlZWJ4Ci0JcHhvcgkoJWVzaSwlZWN4LDEpLCVtbTEKLQltb3ZkCSVtbTAsJWVicAotCXB4b3IJJW1tMiwlbW0wCi0JcHNybHEJJDQsJW1tMAotCW1vdnEJJW1tMSwlbW0yCi0JcHNybHEJJDQsJW1tMQotCXB4b3IJOCglZXNpLCVlZHgsMSksJW1tMAotCW1vdmIJMTIoJWVkaSksJWNsCi0JcHNsbHEJJDYwLCVtbTIKLQlweG9yCSglZWF4LCVlYngsOCksJW1tMQotCWFuZGwJJDE1LCVlYnAKLQlweG9yCSglZXNpLCVlZHgsMSksJW1tMQotCW1vdmwJJWVjeCwlZWR4Ci0JbW92ZAklbW0wLCVlYngKLQlweG9yCSVtbTIsJW1tMAotCXNobGIJJDQsJWNsCi0JcHNybHEJJDQsJW1tMAotCW1vdnEJJW1tMSwlbW0yCi0JcHNybHEJJDQsJW1tMQotCXB4b3IJOCglZXNpLCVlY3gsMSksJW1tMAotCXBzbGxxCSQ2MCwlbW0yCi0JYW5kbAkkMjQwLCVlZHgKLQlweG9yCSglZWF4LCVlYnAsOCksJW1tMQotCWFuZGwJJDE1LCVlYngKLQlweG9yCSglZXNpLCVlY3gsMSksJW1tMQotCW1vdmQJJW1tMCwlZWJwCi0JcHhvcgklbW0yLCVtbTAKLQlwc3JscQkkNCwlbW0wCi0JbW92cQklbW0xLCVtbTIKLQlwc3JscQkkNCwlbW0xCi0JcHhvcgk4KCVlc2ksJWVkeCwxKSwlbW0wCi0JbW92YgkxMSglZWRpKSwlY2wKLQlwc2xscQkkNjAsJW1tMgotCXB4b3IJKCVlYXgsJWVieCw4KSwlbW0xCi0JYW5kbAkkMTUsJWVicAotCXB4b3IJKCVlc2ksJWVkeCwxKSwlbW0xCi0JbW92bAklZWN4LCVlZHgKLQltb3ZkCSVtbTAsJWVieAotCXB4b3IJJW1tMiwlbW0wCi0Jc2hsYgkkNCwlY2wKLQlwc3JscQkkNCwlbW0wCi0JbW92cQklbW0xLCVtbTIKLQlwc3JscQkkNCwlbW0xCi0JcHhvcgk4KCVlc2ksJWVjeCwxKSwlbW0wCi0JcHNsbHEJJDYwLCVtbTIKLQlhbmRsCSQyNDAsJWVkeAotCXB4b3IJKCVlYXgsJWVicCw4KSwlbW0xCi0JYW5kbAkkMTUsJWVieAotCXB4b3IJKCVlc2ksJWVjeCwxKSwlbW0xCi0JbW92ZAklbW0wLCVlYnAKLQlweG9yCSVtbTIsJW1tMAotCXBzcmxxCSQ0LCVtbTAKLQltb3ZxCSVtbTEsJW1tMgotCXBzcmxxCSQ0LCVtbTEKLQlweG9yCTgoJWVzaSwlZWR4LDEpLCVtbTAKLQltb3ZiCTEwKCVlZGkpLCVjbAotCXBzbGxxCSQ2MCwlbW0yCi0JcHhvcgkoJWVheCwlZWJ4LDgpLCVtbTEKLQlhbmRsCSQxNSwlZWJwCi0JcHhvcgkoJWVzaSwlZWR4LDEpLCVtbTEKLQltb3ZsCSVlY3gsJWVkeAotCW1vdmQJJW1tMCwlZWJ4Ci0JcHhvcgklbW0yLCVtbTAKLQlzaGxiCSQ0LCVjbAotCXBzcmxxCSQ0LCVtbTAKLQltb3ZxCSVtbTEsJW1tMgotCXBzcmxxCSQ0LCVtbTEKLQlweG9yCTgoJWVzaSwlZWN4LDEpLCVtbTAKLQlwc2xscQkkNjAsJW1tMgotCWFuZGwJJDI0MCwlZWR4Ci0JcHhvcgkoJWVheCwlZWJwLDgpLCVtbTEKLQlhbmRsCSQxNSwlZWJ4Ci0JcHhvcgkoJWVzaSwlZWN4LDEpLCVtbTEKLQltb3ZkCSVtbTAsJWVicAotCXB4b3IJJW1tMiwlbW0wCi0JcHNybHEJJDQsJW1tMAotCW1vdnEJJW1tMSwlbW0yCi0JcHNybHEJJDQsJW1tMQotCXB4b3IJOCglZXNpLCVlZHgsMSksJW1tMAotCW1vdmIJOSglZWRpKSwlY2wKLQlwc2xscQkkNjAsJW1tMgotCXB4b3IJKCVlYXgsJWVieCw4KSwlbW0xCi0JYW5kbAkkMTUsJWVicAotCXB4b3IJKCVlc2ksJWVkeCwxKSwlbW0xCi0JbW92bAklZWN4LCVlZHgKLQltb3ZkCSVtbTAsJWVieAotCXB4b3IJJW1tMiwlbW0wCi0Jc2hsYgkkNCwlY2wKLQlwc3JscQkkNCwlbW0wCi0JbW92cQklbW0xLCVtbTIKLQlwc3JscQkkNCwlbW0xCi0JcHhvcgk4KCVlc2ksJWVjeCwxKSwlbW0wCi0JcHNsbHEJJDYwLCVtbTIKLQlhbmRsCSQyNDAsJWVkeAotCXB4b3IJKCVlYXgsJWVicCw4KSwlbW0xCi0JYW5kbAkkMTUsJWVieAotCXB4b3IJKCVlc2ksJWVjeCwxKSwlbW0xCi0JbW92ZAklbW0wLCVlYnAKLQlweG9yCSVtbTIsJW1tMAotCXBzcmxxCSQ0LCVtbTAKLQltb3ZxCSVtbTEsJW1tMgotCXBzcmxxCSQ0LCVtbTEKLQlweG9yCTgoJWVzaSwlZWR4LDEpLCVtbTAKLQltb3ZiCTgoJWVkaSksJWNsCi0JcHNsbHEJJDYwLCVtbTIKLQlweG9yCSglZWF4LCVlYngsOCksJW1tMQotCWFuZGwJJDE1LCVlYnAKLQlweG9yCSglZXNpLCVlZHgsMSksJW1tMQotCW1vdmwJJWVjeCwlZWR4Ci0JbW92ZAklbW0wLCVlYngKLQlweG9yCSVtbTIsJW1tMAotCXNobGIJJDQsJWNsCi0JcHNybHEJJDQsJW1tMAotCW1vdnEJJW1tMSwlbW0yCi0JcHNybHEJJDQsJW1tMQotCXB4b3IJOCglZXNpLCVlY3gsMSksJW1tMAotCXBzbGxxCSQ2MCwlbW0yCi0JYW5kbAkkMjQwLCVlZHgKLQlweG9yCSglZWF4LCVlYnAsOCksJW1tMQotCWFuZGwJJDE1LCVlYngKLQlweG9yCSglZXNpLCVlY3gsMSksJW1tMQotCW1vdmQJJW1tMCwlZWJwCi0JcHhvcgklbW0yLCVtbTAKLQlwc3JscQkkNCwlbW0wCi0JbW92cQklbW0xLCVtbTIKLQlwc3JscQkkNCwlbW0xCi0JcHhvcgk4KCVlc2ksJWVkeCwxKSwlbW0wCi0JbW92Ygk3KCVlZGkpLCVjbAotCXBzbGxxCSQ2MCwlbW0yCi0JcHhvcgkoJWVheCwlZWJ4LDgpLCVtbTEKLQlhbmRsCSQxNSwlZWJwCi0JcHhvcgkoJWVzaSwlZWR4LDEpLCVtbTEKLQltb3ZsCSVlY3gsJWVkeAotCW1vdmQJJW1tMCwlZWJ4Ci0JcHhvcgklbW0yLCVtbTAKLQlzaGxiCSQ0LCVjbAotCXBzcmxxCSQ0LCVtbTAKLQltb3ZxCSVtbTEsJW1tMgotCXBzcmxxCSQ0LCVtbTEKLQlweG9yCTgoJWVzaSwlZWN4LDEpLCVtbTAKLQlwc2xscQkkNjAsJW1tMgotCWFuZGwJJDI0MCwlZWR4Ci0JcHhvcgkoJWVheCwlZWJwLDgpLCVtbTEKLQlhbmRsCSQxNSwlZWJ4Ci0JcHhvcgkoJWVzaSwlZWN4LDEpLCVtbTEKLQltb3ZkCSVtbTAsJWVicAotCXB4b3IJJW1tMiwlbW0wCi0JcHNybHEJJDQsJW1tMAotCW1vdnEJJW1tMSwlbW0yCi0JcHNybHEJJDQsJW1tMQotCXB4b3IJOCglZXNpLCVlZHgsMSksJW1tMAotCW1vdmIJNiglZWRpKSwlY2wKLQlwc2xscQkkNjAsJW1tMgotCXB4b3IJKCVlYXgsJWVieCw4KSwlbW0xCi0JYW5kbAkkMTUsJWVicAotCXB4b3IJKCVlc2ksJWVkeCwxKSwlbW0xCi0JbW92bAklZWN4LCVlZHgKLQltb3ZkCSVtbTAsJWVieAotCXB4b3IJJW1tMiwlbW0wCi0Jc2hsYgkkNCwlY2wKLQlwc3JscQkkNCwlbW0wCi0JbW92cQklbW0xLCVtbTIKLQlwc3JscQkkNCwlbW0xCi0JcHhvcgk4KCVlc2ksJWVjeCwxKSwlbW0wCi0JcHNsbHEJJDYwLCVtbTIKLQlhbmRsCSQyNDAsJWVkeAotCXB4b3IJKCVlYXgsJWVicCw4KSwlbW0xCi0JYW5kbAkkMTUsJWVieAotCXB4b3IJKCVlc2ksJWVjeCwxKSwlbW0xCi0JbW92ZAklbW0wLCVlYnAKLQlweG9yCSVtbTIsJW1tMAotCXBzcmxxCSQ0LCVtbTAKLQltb3ZxCSVtbTEsJW1tMgotCXBzcmxxCSQ0LCVtbTEKLQlweG9yCTgoJWVzaSwlZWR4LDEpLCVtbTAKLQltb3ZiCTUoJWVkaSksJWNsCi0JcHNsbHEJJDYwLCVtbTIKLQlweG9yCSglZWF4LCVlYngsOCksJW1tMQotCWFuZGwJJDE1LCVlYnAKLQlweG9yCSglZXNpLCVlZHgsMSksJW1tMQotCW1vdmwJJWVjeCwlZWR4Ci0JbW92ZAklbW0wLCVlYngKLQlweG9yCSVtbTIsJW1tMAotCXNobGIJJDQsJWNsCi0JcHNybHEJJDQsJW1tMAotCW1vdnEJJW1tMSwlbW0yCi0JcHNybHEJJDQsJW1tMQotCXB4b3IJOCglZXNpLCVlY3gsMSksJW1tMAotCXBzbGxxCSQ2MCwlbW0yCi0JYW5kbAkkMjQwLCVlZHgKLQlweG9yCSglZWF4LCVlYnAsOCksJW1tMQotCWFuZGwJJDE1LCVlYngKLQlweG9yCSglZXNpLCVlY3gsMSksJW1tMQotCW1vdmQJJW1tMCwlZWJwCi0JcHhvcgklbW0yLCVtbTAKLQlwc3JscQkkNCwlbW0wCi0JbW92cQklbW0xLCVtbTIKLQlwc3JscQkkNCwlbW0xCi0JcHhvcgk4KCVlc2ksJWVkeCwxKSwlbW0wCi0JbW92Ygk0KCVlZGkpLCVjbAotCXBzbGxxCSQ2MCwlbW0yCi0JcHhvcgkoJWVheCwlZWJ4LDgpLCVtbTEKLQlhbmRsCSQxNSwlZWJwCi0JcHhvcgkoJWVzaSwlZWR4LDEpLCVtbTEKLQltb3ZsCSVlY3gsJWVkeAotCW1vdmQJJW1tMCwlZWJ4Ci0JcHhvcgklbW0yLCVtbTAKLQlzaGxiCSQ0LCVjbAotCXBzcmxxCSQ0LCVtbTAKLQltb3ZxCSVtbTEsJW1tMgotCXBzcmxxCSQ0LCVtbTEKLQlweG9yCTgoJWVzaSwlZWN4LDEpLCVtbTAKLQlwc2xscQkkNjAsJW1tMgotCWFuZGwJJDI0MCwlZWR4Ci0JcHhvcgkoJWVheCwlZWJwLDgpLCVtbTEKLQlhbmRsCSQxNSwlZWJ4Ci0JcHhvcgkoJWVzaSwlZWN4LDEpLCVtbTEKLQltb3ZkCSVtbTAsJWVicAotCXB4b3IJJW1tMiwlbW0wCi0JcHNybHEJJDQsJW1tMAotCW1vdnEJJW1tMSwlbW0yCi0JcHNybHEJJDQsJW1tMQotCXB4b3IJOCglZXNpLCVlZHgsMSksJW1tMAotCW1vdmIJMyglZWRpKSwlY2wKLQlwc2xscQkkNjAsJW1tMgotCXB4b3IJKCVlYXgsJWVieCw4KSwlbW0xCi0JYW5kbAkkMTUsJWVicAotCXB4b3IJKCVlc2ksJWVkeCwxKSwlbW0xCi0JbW92bAklZWN4LCVlZHgKLQltb3ZkCSVtbTAsJWVieAotCXB4b3IJJW1tMiwlbW0wCi0Jc2hsYgkkNCwlY2wKLQlwc3JscQkkNCwlbW0wCi0JbW92cQklbW0xLCVtbTIKLQlwc3JscQkkNCwlbW0xCi0JcHhvcgk4KCVlc2ksJWVjeCwxKSwlbW0wCi0JcHNsbHEJJDYwLCVtbTIKLQlhbmRsCSQyNDAsJWVkeAotCXB4b3IJKCVlYXgsJWVicCw4KSwlbW0xCi0JYW5kbAkkMTUsJWVieAotCXB4b3IJKCVlc2ksJWVjeCwxKSwlbW0xCi0JbW92ZAklbW0wLCVlYnAKLQlweG9yCSVtbTIsJW1tMAotCXBzcmxxCSQ0LCVtbTAKLQltb3ZxCSVtbTEsJW1tMgotCXBzcmxxCSQ0LCVtbTEKLQlweG9yCTgoJWVzaSwlZWR4LDEpLCVtbTAKLQltb3ZiCTIoJWVkaSksJWNsCi0JcHNsbHEJJDYwLCVtbTIKLQlweG9yCSglZWF4LCVlYngsOCksJW1tMQotCWFuZGwJJDE1LCVlYnAKLQlweG9yCSglZXNpLCVlZHgsMSksJW1tMQotCW1vdmwJJWVjeCwlZWR4Ci0JbW92ZAklbW0wLCVlYngKLQlweG9yCSVtbTIsJW1tMAotCXNobGIJJDQsJWNsCi0JcHNybHEJJDQsJW1tMAotCW1vdnEJJW1tMSwlbW0yCi0JcHNybHEJJDQsJW1tMQotCXB4b3IJOCglZXNpLCVlY3gsMSksJW1tMAotCXBzbGxxCSQ2MCwlbW0yCi0JYW5kbAkkMjQwLCVlZHgKLQlweG9yCSglZWF4LCVlYnAsOCksJW1tMQotCWFuZGwJJDE1LCVlYngKLQlweG9yCSglZXNpLCVlY3gsMSksJW1tMQotCW1vdmQJJW1tMCwlZWJwCi0JcHhvcgklbW0yLCVtbTAKLQlwc3JscQkkNCwlbW0wCi0JbW92cQklbW0xLCVtbTIKLQlwc3JscQkkNCwlbW0xCi0JcHhvcgk4KCVlc2ksJWVkeCwxKSwlbW0wCi0JbW92YgkxKCVlZGkpLCVjbAotCXBzbGxxCSQ2MCwlbW0yCi0JcHhvcgkoJWVheCwlZWJ4LDgpLCVtbTEKLQlhbmRsCSQxNSwlZWJwCi0JcHhvcgkoJWVzaSwlZWR4LDEpLCVtbTEKLQltb3ZsCSVlY3gsJWVkeAotCW1vdmQJJW1tMCwlZWJ4Ci0JcHhvcgklbW0yLCVtbTAKLQlzaGxiCSQ0LCVjbAotCXBzcmxxCSQ0LCVtbTAKLQltb3ZxCSVtbTEsJW1tMgotCXBzcmxxCSQ0LCVtbTEKLQlweG9yCTgoJWVzaSwlZWN4LDEpLCVtbTAKLQlwc2xscQkkNjAsJW1tMgotCWFuZGwJJDI0MCwlZWR4Ci0JcHhvcgkoJWVheCwlZWJwLDgpLCVtbTEKLQlhbmRsCSQxNSwlZWJ4Ci0JcHhvcgkoJWVzaSwlZWN4LDEpLCVtbTEKLQltb3ZkCSVtbTAsJWVicAotCXB4b3IJJW1tMiwlbW0wCi0JcHNybHEJJDQsJW1tMAotCW1vdnEJJW1tMSwlbW0yCi0JcHNybHEJJDQsJW1tMQotCXB4b3IJOCglZXNpLCVlZHgsMSksJW1tMAotCW1vdmIJKCVlZGkpLCVjbAotCXBzbGxxCSQ2MCwlbW0yCi0JcHhvcgkoJWVheCwlZWJ4LDgpLCVtbTEKLQlhbmRsCSQxNSwlZWJwCi0JcHhvcgkoJWVzaSwlZWR4LDEpLCVtbTEKLQltb3ZsCSVlY3gsJWVkeAotCW1vdmQJJW1tMCwlZWJ4Ci0JcHhvcgklbW0yLCVtbTAKLQlzaGxiCSQ0LCVjbAotCXBzcmxxCSQ0LCVtbTAKLQltb3ZxCSVtbTEsJW1tMgotCXBzcmxxCSQ0LCVtbTEKLQlweG9yCTgoJWVzaSwlZWN4LDEpLCVtbTAKLQlwc2xscQkkNjAsJW1tMgotCWFuZGwJJDI0MCwlZWR4Ci0JcHhvcgkoJWVheCwlZWJwLDgpLCVtbTEKLQlhbmRsCSQxNSwlZWJ4Ci0JcHhvcgkoJWVzaSwlZWN4LDEpLCVtbTEKLQltb3ZkCSVtbTAsJWVicAotCXB4b3IJJW1tMiwlbW0wCi0JcHNybHEJJDQsJW1tMAotCW1vdnEJJW1tMSwlbW0yCi0JcHNybHEJJDQsJW1tMQotCXB4b3IJOCglZXNpLCVlZHgsMSksJW1tMAotCXBzbGxxCSQ2MCwlbW0yCi0JcHhvcgkoJWVheCwlZWJ4LDgpLCVtbTEKLQlhbmRsCSQxNSwlZWJwCi0JcHhvcgkoJWVzaSwlZWR4LDEpLCVtbTEKLQltb3ZkCSVtbTAsJWVieAotCXB4b3IJJW1tMiwlbW0wCi0JbW92bAk0KCVlYXgsJWVicCw4KSwlZWRpCi0JcHNybHEJJDMyLCVtbTAKLQltb3ZkCSVtbTEsJWVkeAotCXBzcmxxCSQzMiwlbW0xCi0JbW92ZAklbW0wLCVlY3gKLQltb3ZkCSVtbTEsJWVicAotCXNobGwJJDQsJWVkaQotCWJzd2FwCSVlYngKLQlic3dhcAklZWR4Ci0JYnN3YXAJJWVjeAotCXhvcmwJJWVkaSwlZWJwCi0JYnN3YXAJJWVicAotCXJldAotLnNpemUJX21teF9nbXVsdF80Yml0X2lubmVyLC4tX21teF9nbXVsdF80Yml0X2lubmVyCiAuZ2xvYmwJZ2NtX2dtdWx0XzRiaXRfbW14CiAudHlwZQlnY21fZ211bHRfNGJpdF9tbXgsQGZ1bmN0aW9uCiAuYWxpZ24JMTYKQEAgLTYxMyw4ICsyMTksNzggQEAKIAlwb3BsCSVlYXgKIAlsZWFsCS5McmVtXzRiaXQtLkwwMDVwaWNfcG9pbnQoJWVheCksJWVheAogCW1vdnpibAkxNSglZWRpKSwlZWJ4Ci0JY2FsbAlfbW14X2dtdWx0XzRiaXRfaW5uZXIKLQltb3ZsCTIwKCVlc3ApLCVlZGkKKwl4b3JsCSVlY3gsJWVjeAorCW1vdmwJJWVieCwlZWR4CisJbW92YgklZGwsJWNsCisJbW92bAkkMTQsJWVicAorCXNobGIJJDQsJWNsCisJYW5kbAkkMjQwLCVlZHgKKwltb3ZxCTgoJWVzaSwlZWN4LDEpLCVtbTAKKwltb3ZxCSglZXNpLCVlY3gsMSksJW1tMQorCW1vdmQJJW1tMCwlZWJ4CisJam1wCS5MMDA2bW14X2xvb3AKKy5hbGlnbgkxNgorLkwwMDZtbXhfbG9vcDoKKwlwc3JscQkkNCwlbW0wCisJYW5kbAkkMTUsJWVieAorCW1vdnEJJW1tMSwlbW0yCisJcHNybHEJJDQsJW1tMQorCXB4b3IJOCglZXNpLCVlZHgsMSksJW1tMAorCW1vdmIJKCVlZGksJWVicCwxKSwlY2wKKwlwc2xscQkkNjAsJW1tMgorCXB4b3IJKCVlYXgsJWVieCw4KSwlbW0xCisJZGVjbAklZWJwCisJbW92ZAklbW0wLCVlYngKKwlweG9yCSglZXNpLCVlZHgsMSksJW1tMQorCW1vdmwJJWVjeCwlZWR4CisJcHhvcgklbW0yLCVtbTAKKwlqcwkuTDAwN21teF9icmVhaworCXNobGIJJDQsJWNsCisJYW5kbAkkMTUsJWVieAorCXBzcmxxCSQ0LCVtbTAKKwlhbmRsCSQyNDAsJWVkeAorCW1vdnEJJW1tMSwlbW0yCisJcHNybHEJJDQsJW1tMQorCXB4b3IJOCglZXNpLCVlY3gsMSksJW1tMAorCXBzbGxxCSQ2MCwlbW0yCisJcHhvcgkoJWVheCwlZWJ4LDgpLCVtbTEKKwltb3ZkCSVtbTAsJWVieAorCXB4b3IJKCVlc2ksJWVjeCwxKSwlbW0xCisJcHhvcgklbW0yLCVtbTAKKwlqbXAJLkwwMDZtbXhfbG9vcAorLmFsaWduCTE2CisuTDAwN21teF9icmVhazoKKwlzaGxiCSQ0LCVjbAorCWFuZGwJJDE1LCVlYngKKwlwc3JscQkkNCwlbW0wCisJYW5kbAkkMjQwLCVlZHgKKwltb3ZxCSVtbTEsJW1tMgorCXBzcmxxCSQ0LCVtbTEKKwlweG9yCTgoJWVzaSwlZWN4LDEpLCVtbTAKKwlwc2xscQkkNjAsJW1tMgorCXB4b3IJKCVlYXgsJWVieCw4KSwlbW0xCisJbW92ZAklbW0wLCVlYngKKwlweG9yCSglZXNpLCVlY3gsMSksJW1tMQorCXB4b3IJJW1tMiwlbW0wCisJcHNybHEJJDQsJW1tMAorCWFuZGwJJDE1LCVlYngKKwltb3ZxCSVtbTEsJW1tMgorCXBzcmxxCSQ0LCVtbTEKKwlweG9yCTgoJWVzaSwlZWR4LDEpLCVtbTAKKwlwc2xscQkkNjAsJW1tMgorCXB4b3IJKCVlYXgsJWVieCw4KSwlbW0xCisJbW92ZAklbW0wLCVlYngKKwlweG9yCSglZXNpLCVlZHgsMSksJW1tMQorCXB4b3IJJW1tMiwlbW0wCisJcHNybHEJJDMyLCVtbTAKKwltb3ZkCSVtbTEsJWVkeAorCXBzcmxxCSQzMiwlbW0xCisJbW92ZAklbW0wLCVlY3gKKwltb3ZkCSVtbTEsJWVicAorCWJzd2FwCSVlYngKKwlic3dhcAklZWR4CisJYnN3YXAJJWVjeAorCWJzd2FwCSVlYnAKIAllbW1zCiAJbW92bAklZWJ4LDEyKCVlZGkpCiAJbW92bAklZWR4LDQoJWVkaSkKQEAgLTYzNSw2MSArMzExLDkyNiBAQAogCXB1c2hsCSVlYngKIAlwdXNobAklZXNpCiAJcHVzaGwJJWVkaQotCW1vdmwJMjAoJWVzcCksJWVicAotCW1vdmwJMjQoJWVzcCksJWVzaQotCW1vdmwJMjgoJWVzcCksJWVkaQotCW1vdmwJMzIoJWVzcCksJWVjeAotCWNhbGwJLkwwMDZwaWNfcG9pbnQKLS5MMDA2cGljX3BvaW50OgotCXBvcGwJJWVheAotCWxlYWwJLkxyZW1fNGJpdC0uTDAwNnBpY19wb2ludCglZWF4KSwlZWF4Ci0JYWRkbAklZWRpLCVlY3gKLQltb3ZsCSVlY3gsMzIoJWVzcCkKLQlzdWJsCSQyMCwlZXNwCi0JbW92bAkxMiglZWJwKSwlZWJ4Ci0JbW92bAk0KCVlYnApLCVlZHgKLQltb3ZsCTgoJWVicCksJWVjeAotCW1vdmwJKCVlYnApLCVlYnAKLQlqbXAJLkwwMDdtbXhfb3V0ZXJfbG9vcAorCW1vdmwJMjAoJWVzcCksJWVheAorCW1vdmwJMjQoJWVzcCksJWVieAorCW1vdmwJMjgoJWVzcCksJWVjeAorCW1vdmwJMzIoJWVzcCksJWVkeAorCW1vdmwJJWVzcCwlZWJwCisJY2FsbAkuTDAwOHBpY19wb2ludAorLkwwMDhwaWNfcG9pbnQ6CisJcG9wbAklZXNpCisJbGVhbAkuTHJlbV84Yml0LS5MMDA4cGljX3BvaW50KCVlc2kpLCVlc2kKKwlzdWJsCSQ1NDQsJWVzcAorCWFuZGwJJC02NCwlZXNwCisJc3VibAkkMTYsJWVzcAorCWFkZGwJJWVjeCwlZWR4CisJbW92bAklZWF4LDU0NCglZXNwKQorCW1vdmwJJWVkeCw1NTIoJWVzcCkKKwltb3ZsCSVlYnAsNTU2KCVlc3ApCisJYWRkbAkkMTI4LCVlYngKKwlsZWFsCTE0NCglZXNwKSwlZWRpCisJbGVhbAk0MDAoJWVzcCksJWVicAorCW1vdmwJLTEyMCglZWJ4KSwlZWR4CisJbW92cQktMTIwKCVlYngpLCVtbTAKKwltb3ZxCS0xMjgoJWVieCksJW1tMworCXNobGwJJDQsJWVkeAorCW1vdmIJJWRsLCglZXNwKQorCW1vdmwJLTEwNCglZWJ4KSwlZWR4CisJbW92cQktMTA0KCVlYngpLCVtbTIKKwltb3ZxCS0xMTIoJWVieCksJW1tNQorCW1vdnEJJW1tMCwtMTI4KCVlZGkpCisJcHNybHEJJDQsJW1tMAorCW1vdnEJJW1tMywoJWVkaSkKKwltb3ZxCSVtbTMsJW1tNworCXBzcmxxCSQ0LCVtbTMKKwlzaGxsCSQ0LCVlZHgKKwltb3ZiCSVkbCwxKCVlc3ApCisJbW92bAktODgoJWVieCksJWVkeAorCW1vdnEJLTg4KCVlYngpLCVtbTEKKwlwc2xscQkkNjAsJW1tNworCW1vdnEJLTk2KCVlYngpLCVtbTQKKwlwb3IJJW1tNywlbW0wCisJbW92cQklbW0yLC0xMjAoJWVkaSkKKwlwc3JscQkkNCwlbW0yCisJbW92cQklbW01LDgoJWVkaSkKKwltb3ZxCSVtbTUsJW1tNgorCW1vdnEJJW1tMCwtMTI4KCVlYnApCisJcHNybHEJJDQsJW1tNQorCW1vdnEJJW1tMywoJWVicCkKKwlzaGxsCSQ0LCVlZHgKKwltb3ZiCSVkbCwyKCVlc3ApCisJbW92bAktNzIoJWVieCksJWVkeAorCW1vdnEJLTcyKCVlYngpLCVtbTAKKwlwc2xscQkkNjAsJW1tNgorCW1vdnEJLTgwKCVlYngpLCVtbTMKKwlwb3IJJW1tNiwlbW0yCisJbW92cQklbW0xLC0xMTIoJWVkaSkKKwlwc3JscQkkNCwlbW0xCisJbW92cQklbW00LDE2KCVlZGkpCisJbW92cQklbW00LCVtbTcKKwltb3ZxCSVtbTIsLTEyMCglZWJwKQorCXBzcmxxCSQ0LCVtbTQKKwltb3ZxCSVtbTUsOCglZWJwKQorCXNobGwJJDQsJWVkeAorCW1vdmIJJWRsLDMoJWVzcCkKKwltb3ZsCS01NiglZWJ4KSwlZWR4CisJbW92cQktNTYoJWVieCksJW1tMgorCXBzbGxxCSQ2MCwlbW03CisJbW92cQktNjQoJWVieCksJW1tNQorCXBvcgklbW03LCVtbTEKKwltb3ZxCSVtbTAsLTEwNCglZWRpKQorCXBzcmxxCSQ0LCVtbTAKKwltb3ZxCSVtbTMsMjQoJWVkaSkKKwltb3ZxCSVtbTMsJW1tNgorCW1vdnEJJW1tMSwtMTEyKCVlYnApCisJcHNybHEJJDQsJW1tMworCW1vdnEJJW1tNCwxNiglZWJwKQorCXNobGwJJDQsJWVkeAorCW1vdmIJJWRsLDQoJWVzcCkKKwltb3ZsCS00MCglZWJ4KSwlZWR4CisJbW92cQktNDAoJWVieCksJW1tMQorCXBzbGxxCSQ2MCwlbW02CisJbW92cQktNDgoJWVieCksJW1tNAorCXBvcgklbW02LCVtbTAKKwltb3ZxCSVtbTIsLTk2KCVlZGkpCisJcHNybHEJJDQsJW1tMgorCW1vdnEJJW1tNSwzMiglZWRpKQorCW1vdnEJJW1tNSwlbW03CisJbW92cQklbW0wLC0xMDQoJWVicCkKKwlwc3JscQkkNCwlbW01CisJbW92cQklbW0zLDI0KCVlYnApCisJc2hsbAkkNCwlZWR4CisJbW92YgklZGwsNSglZXNwKQorCW1vdmwJLTI0KCVlYngpLCVlZHgKKwltb3ZxCS0yNCglZWJ4KSwlbW0wCisJcHNsbHEJJDYwLCVtbTcKKwltb3ZxCS0zMiglZWJ4KSwlbW0zCisJcG9yCSVtbTcsJW1tMgorCW1vdnEJJW1tMSwtODgoJWVkaSkKKwlwc3JscQkkNCwlbW0xCisJbW92cQklbW00LDQwKCVlZGkpCisJbW92cQklbW00LCVtbTYKKwltb3ZxCSVtbTIsLTk2KCVlYnApCisJcHNybHEJJDQsJW1tNAorCW1vdnEJJW1tNSwzMiglZWJwKQorCXNobGwJJDQsJWVkeAorCW1vdmIJJWRsLDYoJWVzcCkKKwltb3ZsCS04KCVlYngpLCVlZHgKKwltb3ZxCS04KCVlYngpLCVtbTIKKwlwc2xscQkkNjAsJW1tNgorCW1vdnEJLTE2KCVlYngpLCVtbTUKKwlwb3IJJW1tNiwlbW0xCisJbW92cQklbW0wLC04MCglZWRpKQorCXBzcmxxCSQ0LCVtbTAKKwltb3ZxCSVtbTMsNDgoJWVkaSkKKwltb3ZxCSVtbTMsJW1tNworCW1vdnEJJW1tMSwtODgoJWVicCkKKwlwc3JscQkkNCwlbW0zCisJbW92cQklbW00LDQwKCVlYnApCisJc2hsbAkkNCwlZWR4CisJbW92YgklZGwsNyglZXNwKQorCW1vdmwJOCglZWJ4KSwlZWR4CisJbW92cQk4KCVlYngpLCVtbTEKKwlwc2xscQkkNjAsJW1tNworCW1vdnEJKCVlYngpLCVtbTQKKwlwb3IJJW1tNywlbW0wCisJbW92cQklbW0yLC03MiglZWRpKQorCXBzcmxxCSQ0LCVtbTIKKwltb3ZxCSVtbTUsNTYoJWVkaSkKKwltb3ZxCSVtbTUsJW1tNgorCW1vdnEJJW1tMCwtODAoJWVicCkKKwlwc3JscQkkNCwlbW01CisJbW92cQklbW0zLDQ4KCVlYnApCisJc2hsbAkkNCwlZWR4CisJbW92YgklZGwsOCglZXNwKQorCW1vdmwJMjQoJWVieCksJWVkeAorCW1vdnEJMjQoJWVieCksJW1tMAorCXBzbGxxCSQ2MCwlbW02CisJbW92cQkxNiglZWJ4KSwlbW0zCisJcG9yCSVtbTYsJW1tMgorCW1vdnEJJW1tMSwtNjQoJWVkaSkKKwlwc3JscQkkNCwlbW0xCisJbW92cQklbW00LDY0KCVlZGkpCisJbW92cQklbW00LCVtbTcKKwltb3ZxCSVtbTIsLTcyKCVlYnApCisJcHNybHEJJDQsJW1tNAorCW1vdnEJJW1tNSw1NiglZWJwKQorCXNobGwJJDQsJWVkeAorCW1vdmIJJWRsLDkoJWVzcCkKKwltb3ZsCTQwKCVlYngpLCVlZHgKKwltb3ZxCTQwKCVlYngpLCVtbTIKKwlwc2xscQkkNjAsJW1tNworCW1vdnEJMzIoJWVieCksJW1tNQorCXBvcgklbW03LCVtbTEKKwltb3ZxCSVtbTAsLTU2KCVlZGkpCisJcHNybHEJJDQsJW1tMAorCW1vdnEJJW1tMyw3MiglZWRpKQorCW1vdnEJJW1tMywlbW02CisJbW92cQklbW0xLC02NCglZWJwKQorCXBzcmxxCSQ0LCVtbTMKKwltb3ZxCSVtbTQsNjQoJWVicCkKKwlzaGxsCSQ0LCVlZHgKKwltb3ZiCSVkbCwxMCglZXNwKQorCW1vdmwJNTYoJWVieCksJWVkeAorCW1vdnEJNTYoJWVieCksJW1tMQorCXBzbGxxCSQ2MCwlbW02CisJbW92cQk0OCglZWJ4KSwlbW00CisJcG9yCSVtbTYsJW1tMAorCW1vdnEJJW1tMiwtNDgoJWVkaSkKKwlwc3JscQkkNCwlbW0yCisJbW92cQklbW01LDgwKCVlZGkpCisJbW92cQklbW01LCVtbTcKKwltb3ZxCSVtbTAsLTU2KCVlYnApCisJcHNybHEJJDQsJW1tNQorCW1vdnEJJW1tMyw3MiglZWJwKQorCXNobGwJJDQsJWVkeAorCW1vdmIJJWRsLDExKCVlc3ApCisJbW92bAk3MiglZWJ4KSwlZWR4CisJbW92cQk3MiglZWJ4KSwlbW0wCisJcHNsbHEJJDYwLCVtbTcKKwltb3ZxCTY0KCVlYngpLCVtbTMKKwlwb3IJJW1tNywlbW0yCisJbW92cQklbW0xLC00MCglZWRpKQorCXBzcmxxCSQ0LCVtbTEKKwltb3ZxCSVtbTQsODgoJWVkaSkKKwltb3ZxCSVtbTQsJW1tNgorCW1vdnEJJW1tMiwtNDgoJWVicCkKKwlwc3JscQkkNCwlbW00CisJbW92cQklbW01LDgwKCVlYnApCisJc2hsbAkkNCwlZWR4CisJbW92YgklZGwsMTIoJWVzcCkKKwltb3ZsCTg4KCVlYngpLCVlZHgKKwltb3ZxCTg4KCVlYngpLCVtbTIKKwlwc2xscQkkNjAsJW1tNgorCW1vdnEJODAoJWVieCksJW1tNQorCXBvcgklbW02LCVtbTEKKwltb3ZxCSVtbTAsLTMyKCVlZGkpCisJcHNybHEJJDQsJW1tMAorCW1vdnEJJW1tMyw5NiglZWRpKQorCW1vdnEJJW1tMywlbW03CisJbW92cQklbW0xLC00MCglZWJwKQorCXBzcmxxCSQ0LCVtbTMKKwltb3ZxCSVtbTQsODgoJWVicCkKKwlzaGxsCSQ0LCVlZHgKKwltb3ZiCSVkbCwxMyglZXNwKQorCW1vdmwJMTA0KCVlYngpLCVlZHgKKwltb3ZxCTEwNCglZWJ4KSwlbW0xCisJcHNsbHEJJDYwLCVtbTcKKwltb3ZxCTk2KCVlYngpLCVtbTQKKwlwb3IJJW1tNywlbW0wCisJbW92cQklbW0yLC0yNCglZWRpKQorCXBzcmxxCSQ0LCVtbTIKKwltb3ZxCSVtbTUsMTA0KCVlZGkpCisJbW92cQklbW01LCVtbTYKKwltb3ZxCSVtbTAsLTMyKCVlYnApCisJcHNybHEJJDQsJW1tNQorCW1vdnEJJW1tMyw5NiglZWJwKQorCXNobGwJJDQsJWVkeAorCW1vdmIJJWRsLDE0KCVlc3ApCisJbW92bAkxMjAoJWVieCksJWVkeAorCW1vdnEJMTIwKCVlYngpLCVtbTAKKwlwc2xscQkkNjAsJW1tNgorCW1vdnEJMTEyKCVlYngpLCVtbTMKKwlwb3IJJW1tNiwlbW0yCisJbW92cQklbW0xLC0xNiglZWRpKQorCXBzcmxxCSQ0LCVtbTEKKwltb3ZxCSVtbTQsMTEyKCVlZGkpCisJbW92cQklbW00LCVtbTcKKwltb3ZxCSVtbTIsLTI0KCVlYnApCisJcHNybHEJJDQsJW1tNAorCW1vdnEJJW1tNSwxMDQoJWVicCkKKwlzaGxsCSQ0LCVlZHgKKwltb3ZiCSVkbCwxNSglZXNwKQorCXBzbGxxCSQ2MCwlbW03CisJcG9yCSVtbTcsJW1tMQorCW1vdnEJJW1tMCwtOCglZWRpKQorCXBzcmxxCSQ0LCVtbTAKKwltb3ZxCSVtbTMsMTIwKCVlZGkpCisJbW92cQklbW0zLCVtbTYKKwltb3ZxCSVtbTEsLTE2KCVlYnApCisJcHNybHEJJDQsJW1tMworCW1vdnEJJW1tNCwxMTIoJWVicCkKKwlwc2xscQkkNjAsJW1tNgorCXBvcgklbW02LCVtbTAKKwltb3ZxCSVtbTAsLTgoJWVicCkKKwltb3ZxCSVtbTMsMTIwKCVlYnApCisJbW92cQkoJWVheCksJW1tNgorCW1vdmwJOCglZWF4KSwlZWJ4CisJbW92bAkxMiglZWF4KSwlZWR4CiAuYWxpZ24JMTYKLS5MMDA3bW14X291dGVyX2xvb3A6Ci0JeG9ybAkxMiglZWRpKSwlZWJ4Ci0JeG9ybAk0KCVlZGkpLCVlZHgKLQl4b3JsCTgoJWVkaSksJWVjeAotCXhvcmwJKCVlZGkpLCVlYnAKLQltb3ZsCSVlZGksNDgoJWVzcCkKLQltb3ZsCSVlYngsMTIoJWVzcCkKLQltb3ZsCSVlZHgsNCglZXNwKQotCW1vdmwJJWVjeCw4KCVlc3ApCi0JbW92bAklZWJwLCglZXNwKQotCW1vdmwJJWVzcCwlZWRpCi0Jc2hybAkkMjQsJWVieAotCWNhbGwJX21teF9nbXVsdF80Yml0X2lubmVyCi0JbW92bAk0OCglZXNwKSwlZWRpCi0JbGVhbAkxNiglZWRpKSwlZWRpCi0JY21wbAk1MiglZXNwKSwlZWRpCi0JamIJLkwwMDdtbXhfb3V0ZXJfbG9vcAotCW1vdmwJNDAoJWVzcCksJWVkaQorLkwwMDlvdXRlcjoKKwl4b3JsCTEyKCVlY3gpLCVlZHgKKwl4b3JsCTgoJWVjeCksJWVieAorCXB4b3IJKCVlY3gpLCVtbTYKKwlsZWFsCTE2KCVlY3gpLCVlY3gKKwltb3ZsCSVlYngsNTM2KCVlc3ApCisJbW92cQklbW02LDUyOCglZXNwKQorCW1vdmwJJWVjeCw1NDgoJWVzcCkKKwl4b3JsCSVlYXgsJWVheAorCXJvbGwJJDgsJWVkeAorCW1vdmIJJWRsLCVhbAorCW1vdmwJJWVheCwlZWJwCisJYW5kYgkkMTUsJWFsCisJc2hybAkkNCwlZWJwCisJcHhvcgklbW0wLCVtbTAKKwlyb2xsCSQ4LCVlZHgKKwlweG9yCSVtbTEsJW1tMQorCXB4b3IJJW1tMiwlbW0yCisJbW92cQkxNiglZXNwLCVlYXgsOCksJW1tNworCW1vdnEJMTQ0KCVlc3AsJWVheCw4KSwlbW02CisJbW92YgklZGwsJWFsCisJbW92ZAklbW03LCVlYngKKwlwc3JscQkkOCwlbW03CisJbW92cQklbW02LCVtbTMKKwltb3ZsCSVlYXgsJWVkaQorCXBzcmxxCSQ4LCVtbTYKKwlweG9yCTI3MiglZXNwLCVlYnAsOCksJW1tNworCWFuZGIJJDE1LCVhbAorCXBzbGxxCSQ1NiwlbW0zCisJc2hybAkkNCwlZWRpCisJcHhvcgkxNiglZXNwLCVlYXgsOCksJW1tNworCXJvbGwJJDgsJWVkeAorCXB4b3IJMTQ0KCVlc3AsJWVheCw4KSwlbW02CisJcHhvcgklbW0zLCVtbTcKKwlweG9yCTQwMCglZXNwLCVlYnAsOCksJW1tNgorCXhvcmIJKCVlc3AsJWVicCwxKSwlYmwKKwltb3ZiCSVkbCwlYWwKKwltb3ZkCSVtbTcsJWVjeAorCW1vdnpibAklYmwsJWVieAorCXBzcmxxCSQ4LCVtbTcKKwltb3ZxCSVtbTYsJW1tMworCW1vdmwJJWVheCwlZWJwCisJcHNybHEJJDgsJW1tNgorCXB4b3IJMjcyKCVlc3AsJWVkaSw4KSwlbW03CisJYW5kYgkkMTUsJWFsCisJcHNsbHEJJDU2LCVtbTMKKwlzaHJsCSQ0LCVlYnAKKwlwaW5zcncJJDIsKCVlc2ksJWVieCwyKSwlbW0yCisJcHhvcgkxNiglZXNwLCVlYXgsOCksJW1tNworCXJvbGwJJDgsJWVkeAorCXB4b3IJMTQ0KCVlc3AsJWVheCw4KSwlbW02CisJcHhvcgklbW0zLCVtbTcKKwlweG9yCTQwMCglZXNwLCVlZGksOCksJW1tNgorCXhvcmIJKCVlc3AsJWVkaSwxKSwlY2wKKwltb3ZiCSVkbCwlYWwKKwltb3ZsCTUzNiglZXNwKSwlZWR4CisJbW92ZAklbW03LCVlYngKKwltb3Z6YmwJJWNsLCVlY3gKKwlwc3JscQkkOCwlbW03CisJbW92cQklbW02LCVtbTMKKwltb3ZsCSVlYXgsJWVkaQorCXBzcmxxCSQ4LCVtbTYKKwlweG9yCTI3MiglZXNwLCVlYnAsOCksJW1tNworCWFuZGIJJDE1LCVhbAorCXBzbGxxCSQ1NiwlbW0zCisJcHhvcgklbW0yLCVtbTYKKwlzaHJsCSQ0LCVlZGkKKwlwaW5zcncJJDIsKCVlc2ksJWVjeCwyKSwlbW0xCisJcHhvcgkxNiglZXNwLCVlYXgsOCksJW1tNworCXJvbGwJJDgsJWVkeAorCXB4b3IJMTQ0KCVlc3AsJWVheCw4KSwlbW02CisJcHhvcgklbW0zLCVtbTcKKwlweG9yCTQwMCglZXNwLCVlYnAsOCksJW1tNgorCXhvcmIJKCVlc3AsJWVicCwxKSwlYmwKKwltb3ZiCSVkbCwlYWwKKwltb3ZkCSVtbTcsJWVjeAorCW1vdnpibAklYmwsJWVieAorCXBzcmxxCSQ4LCVtbTcKKwltb3ZxCSVtbTYsJW1tMworCW1vdmwJJWVheCwlZWJwCisJcHNybHEJJDgsJW1tNgorCXB4b3IJMjcyKCVlc3AsJWVkaSw4KSwlbW03CisJYW5kYgkkMTUsJWFsCisJcHNsbHEJJDU2LCVtbTMKKwlweG9yCSVtbTEsJW1tNgorCXNocmwJJDQsJWVicAorCXBpbnNydwkkMiwoJWVzaSwlZWJ4LDIpLCVtbTAKKwlweG9yCTE2KCVlc3AsJWVheCw4KSwlbW03CisJcm9sbAkkOCwlZWR4CisJcHhvcgkxNDQoJWVzcCwlZWF4LDgpLCVtbTYKKwlweG9yCSVtbTMsJW1tNworCXB4b3IJNDAwKCVlc3AsJWVkaSw4KSwlbW02CisJeG9yYgkoJWVzcCwlZWRpLDEpLCVjbAorCW1vdmIJJWRsLCVhbAorCW1vdmQJJW1tNywlZWJ4CisJbW92emJsCSVjbCwlZWN4CisJcHNybHEJJDgsJW1tNworCW1vdnEJJW1tNiwlbW0zCisJbW92bAklZWF4LCVlZGkKKwlwc3JscQkkOCwlbW02CisJcHhvcgkyNzIoJWVzcCwlZWJwLDgpLCVtbTcKKwlhbmRiCSQxNSwlYWwKKwlwc2xscQkkNTYsJW1tMworCXB4b3IJJW1tMCwlbW02CisJc2hybAkkNCwlZWRpCisJcGluc3J3CSQyLCglZXNpLCVlY3gsMiksJW1tMgorCXB4b3IJMTYoJWVzcCwlZWF4LDgpLCVtbTcKKwlyb2xsCSQ4LCVlZHgKKwlweG9yCTE0NCglZXNwLCVlYXgsOCksJW1tNgorCXB4b3IJJW1tMywlbW03CisJcHhvcgk0MDAoJWVzcCwlZWJwLDgpLCVtbTYKKwl4b3JiCSglZXNwLCVlYnAsMSksJWJsCisJbW92YgklZGwsJWFsCisJbW92ZAklbW03LCVlY3gKKwltb3Z6YmwJJWJsLCVlYngKKwlwc3JscQkkOCwlbW03CisJbW92cQklbW02LCVtbTMKKwltb3ZsCSVlYXgsJWVicAorCXBzcmxxCSQ4LCVtbTYKKwlweG9yCTI3MiglZXNwLCVlZGksOCksJW1tNworCWFuZGIJJDE1LCVhbAorCXBzbGxxCSQ1NiwlbW0zCisJcHhvcgklbW0yLCVtbTYKKwlzaHJsCSQ0LCVlYnAKKwlwaW5zcncJJDIsKCVlc2ksJWVieCwyKSwlbW0xCisJcHhvcgkxNiglZXNwLCVlYXgsOCksJW1tNworCXJvbGwJJDgsJWVkeAorCXB4b3IJMTQ0KCVlc3AsJWVheCw4KSwlbW02CisJcHhvcgklbW0zLCVtbTcKKwlweG9yCTQwMCglZXNwLCVlZGksOCksJW1tNgorCXhvcmIJKCVlc3AsJWVkaSwxKSwlY2wKKwltb3ZiCSVkbCwlYWwKKwltb3ZsCTUzMiglZXNwKSwlZWR4CisJbW92ZAklbW03LCVlYngKKwltb3Z6YmwJJWNsLCVlY3gKKwlwc3JscQkkOCwlbW03CisJbW92cQklbW02LCVtbTMKKwltb3ZsCSVlYXgsJWVkaQorCXBzcmxxCSQ4LCVtbTYKKwlweG9yCTI3MiglZXNwLCVlYnAsOCksJW1tNworCWFuZGIJJDE1LCVhbAorCXBzbGxxCSQ1NiwlbW0zCisJcHhvcgklbW0xLCVtbTYKKwlzaHJsCSQ0LCVlZGkKKwlwaW5zcncJJDIsKCVlc2ksJWVjeCwyKSwlbW0wCisJcHhvcgkxNiglZXNwLCVlYXgsOCksJW1tNworCXJvbGwJJDgsJWVkeAorCXB4b3IJMTQ0KCVlc3AsJWVheCw4KSwlbW02CisJcHhvcgklbW0zLCVtbTcKKwlweG9yCTQwMCglZXNwLCVlYnAsOCksJW1tNgorCXhvcmIJKCVlc3AsJWVicCwxKSwlYmwKKwltb3ZiCSVkbCwlYWwKKwltb3ZkCSVtbTcsJWVjeAorCW1vdnpibAklYmwsJWVieAorCXBzcmxxCSQ4LCVtbTcKKwltb3ZxCSVtbTYsJW1tMworCW1vdmwJJWVheCwlZWJwCisJcHNybHEJJDgsJW1tNgorCXB4b3IJMjcyKCVlc3AsJWVkaSw4KSwlbW03CisJYW5kYgkkMTUsJWFsCisJcHNsbHEJJDU2LCVtbTMKKwlweG9yCSVtbTAsJW1tNgorCXNocmwJJDQsJWVicAorCXBpbnNydwkkMiwoJWVzaSwlZWJ4LDIpLCVtbTIKKwlweG9yCTE2KCVlc3AsJWVheCw4KSwlbW03CisJcm9sbAkkOCwlZWR4CisJcHhvcgkxNDQoJWVzcCwlZWF4LDgpLCVtbTYKKwlweG9yCSVtbTMsJW1tNworCXB4b3IJNDAwKCVlc3AsJWVkaSw4KSwlbW02CisJeG9yYgkoJWVzcCwlZWRpLDEpLCVjbAorCW1vdmIJJWRsLCVhbAorCW1vdmQJJW1tNywlZWJ4CisJbW92emJsCSVjbCwlZWN4CisJcHNybHEJJDgsJW1tNworCW1vdnEJJW1tNiwlbW0zCisJbW92bAklZWF4LCVlZGkKKwlwc3JscQkkOCwlbW02CisJcHhvcgkyNzIoJWVzcCwlZWJwLDgpLCVtbTcKKwlhbmRiCSQxNSwlYWwKKwlwc2xscQkkNTYsJW1tMworCXB4b3IJJW1tMiwlbW02CisJc2hybAkkNCwlZWRpCisJcGluc3J3CSQyLCglZXNpLCVlY3gsMiksJW1tMQorCXB4b3IJMTYoJWVzcCwlZWF4LDgpLCVtbTcKKwlyb2xsCSQ4LCVlZHgKKwlweG9yCTE0NCglZXNwLCVlYXgsOCksJW1tNgorCXB4b3IJJW1tMywlbW03CisJcHhvcgk0MDAoJWVzcCwlZWJwLDgpLCVtbTYKKwl4b3JiCSglZXNwLCVlYnAsMSksJWJsCisJbW92YgklZGwsJWFsCisJbW92ZAklbW03LCVlY3gKKwltb3Z6YmwJJWJsLCVlYngKKwlwc3JscQkkOCwlbW03CisJbW92cQklbW02LCVtbTMKKwltb3ZsCSVlYXgsJWVicAorCXBzcmxxCSQ4LCVtbTYKKwlweG9yCTI3MiglZXNwLCVlZGksOCksJW1tNworCWFuZGIJJDE1LCVhbAorCXBzbGxxCSQ1NiwlbW0zCisJcHhvcgklbW0xLCVtbTYKKwlzaHJsCSQ0LCVlYnAKKwlwaW5zcncJJDIsKCVlc2ksJWVieCwyKSwlbW0wCisJcHhvcgkxNiglZXNwLCVlYXgsOCksJW1tNworCXJvbGwJJDgsJWVkeAorCXB4b3IJMTQ0KCVlc3AsJWVheCw4KSwlbW02CisJcHhvcgklbW0zLCVtbTcKKwlweG9yCTQwMCglZXNwLCVlZGksOCksJW1tNgorCXhvcmIJKCVlc3AsJWVkaSwxKSwlY2wKKwltb3ZiCSVkbCwlYWwKKwltb3ZsCTUyOCglZXNwKSwlZWR4CisJbW92ZAklbW03LCVlYngKKwltb3Z6YmwJJWNsLCVlY3gKKwlwc3JscQkkOCwlbW03CisJbW92cQklbW02LCVtbTMKKwltb3ZsCSVlYXgsJWVkaQorCXBzcmxxCSQ4LCVtbTYKKwlweG9yCTI3MiglZXNwLCVlYnAsOCksJW1tNworCWFuZGIJJDE1LCVhbAorCXBzbGxxCSQ1NiwlbW0zCisJcHhvcgklbW0wLCVtbTYKKwlzaHJsCSQ0LCVlZGkKKwlwaW5zcncJJDIsKCVlc2ksJWVjeCwyKSwlbW0yCisJcHhvcgkxNiglZXNwLCVlYXgsOCksJW1tNworCXJvbGwJJDgsJWVkeAorCXB4b3IJMTQ0KCVlc3AsJWVheCw4KSwlbW02CisJcHhvcgklbW0zLCVtbTcKKwlweG9yCTQwMCglZXNwLCVlYnAsOCksJW1tNgorCXhvcmIJKCVlc3AsJWVicCwxKSwlYmwKKwltb3ZiCSVkbCwlYWwKKwltb3ZkCSVtbTcsJWVjeAorCW1vdnpibAklYmwsJWVieAorCXBzcmxxCSQ4LCVtbTcKKwltb3ZxCSVtbTYsJW1tMworCW1vdmwJJWVheCwlZWJwCisJcHNybHEJJDgsJW1tNgorCXB4b3IJMjcyKCVlc3AsJWVkaSw4KSwlbW03CisJYW5kYgkkMTUsJWFsCisJcHNsbHEJJDU2LCVtbTMKKwlweG9yCSVtbTIsJW1tNgorCXNocmwJJDQsJWVicAorCXBpbnNydwkkMiwoJWVzaSwlZWJ4LDIpLCVtbTEKKwlweG9yCTE2KCVlc3AsJWVheCw4KSwlbW03CisJcm9sbAkkOCwlZWR4CisJcHhvcgkxNDQoJWVzcCwlZWF4LDgpLCVtbTYKKwlweG9yCSVtbTMsJW1tNworCXB4b3IJNDAwKCVlc3AsJWVkaSw4KSwlbW02CisJeG9yYgkoJWVzcCwlZWRpLDEpLCVjbAorCW1vdmIJJWRsLCVhbAorCW1vdmQJJW1tNywlZWJ4CisJbW92emJsCSVjbCwlZWN4CisJcHNybHEJJDgsJW1tNworCW1vdnEJJW1tNiwlbW0zCisJbW92bAklZWF4LCVlZGkKKwlwc3JscQkkOCwlbW02CisJcHhvcgkyNzIoJWVzcCwlZWJwLDgpLCVtbTcKKwlhbmRiCSQxNSwlYWwKKwlwc2xscQkkNTYsJW1tMworCXB4b3IJJW1tMSwlbW02CisJc2hybAkkNCwlZWRpCisJcGluc3J3CSQyLCglZXNpLCVlY3gsMiksJW1tMAorCXB4b3IJMTYoJWVzcCwlZWF4LDgpLCVtbTcKKwlyb2xsCSQ4LCVlZHgKKwlweG9yCTE0NCglZXNwLCVlYXgsOCksJW1tNgorCXB4b3IJJW1tMywlbW03CisJcHhvcgk0MDAoJWVzcCwlZWJwLDgpLCVtbTYKKwl4b3JiCSglZXNwLCVlYnAsMSksJWJsCisJbW92YgklZGwsJWFsCisJbW92ZAklbW03LCVlY3gKKwltb3Z6YmwJJWJsLCVlYngKKwlwc3JscQkkOCwlbW03CisJbW92cQklbW02LCVtbTMKKwltb3ZsCSVlYXgsJWVicAorCXBzcmxxCSQ4LCVtbTYKKwlweG9yCTI3MiglZXNwLCVlZGksOCksJW1tNworCWFuZGIJJDE1LCVhbAorCXBzbGxxCSQ1NiwlbW0zCisJcHhvcgklbW0wLCVtbTYKKwlzaHJsCSQ0LCVlYnAKKwlwaW5zcncJJDIsKCVlc2ksJWVieCwyKSwlbW0yCisJcHhvcgkxNiglZXNwLCVlYXgsOCksJW1tNworCXJvbGwJJDgsJWVkeAorCXB4b3IJMTQ0KCVlc3AsJWVheCw4KSwlbW02CisJcHhvcgklbW0zLCVtbTcKKwlweG9yCTQwMCglZXNwLCVlZGksOCksJW1tNgorCXhvcmIJKCVlc3AsJWVkaSwxKSwlY2wKKwltb3ZiCSVkbCwlYWwKKwltb3ZsCTUyNCglZXNwKSwlZWR4CisJbW92ZAklbW03LCVlYngKKwltb3Z6YmwJJWNsLCVlY3gKKwlwc3JscQkkOCwlbW03CisJbW92cQklbW02LCVtbTMKKwltb3ZsCSVlYXgsJWVkaQorCXBzcmxxCSQ4LCVtbTYKKwlweG9yCTI3MiglZXNwLCVlYnAsOCksJW1tNworCWFuZGIJJDE1LCVhbAorCXBzbGxxCSQ1NiwlbW0zCisJcHhvcgklbW0yLCVtbTYKKwlzaHJsCSQ0LCVlZGkKKwlwaW5zcncJJDIsKCVlc2ksJWVjeCwyKSwlbW0xCisJcHhvcgkxNiglZXNwLCVlYXgsOCksJW1tNworCXB4b3IJMTQ0KCVlc3AsJWVheCw4KSwlbW02CisJeG9yYgkoJWVzcCwlZWJwLDEpLCVibAorCXB4b3IJJW1tMywlbW03CisJcHhvcgk0MDAoJWVzcCwlZWJwLDgpLCVtbTYKKwltb3Z6YmwJJWJsLCVlYngKKwlweG9yCSVtbTIsJW1tMgorCXBzbGxxCSQ0LCVtbTEKKwltb3ZkCSVtbTcsJWVjeAorCXBzcmxxCSQ0LCVtbTcKKwltb3ZxCSVtbTYsJW1tMworCXBzcmxxCSQ0LCVtbTYKKwlzaGxsCSQ0LCVlY3gKKwlweG9yCTE2KCVlc3AsJWVkaSw4KSwlbW03CisJcHNsbHEJJDYwLCVtbTMKKwltb3Z6YmwJJWNsLCVlY3gKKwlweG9yCSVtbTMsJW1tNworCXB4b3IJMTQ0KCVlc3AsJWVkaSw4KSwlbW02CisJcGluc3J3CSQyLCglZXNpLCVlYngsMiksJW1tMAorCXB4b3IJJW1tMSwlbW02CisJbW92ZAklbW03LCVlZHgKKwlwaW5zcncJJDMsKCVlc2ksJWVjeCwyKSwlbW0yCisJcHNsbHEJJDEyLCVtbTAKKwlweG9yCSVtbTAsJW1tNgorCXBzcmxxCSQzMiwlbW03CisJcHhvcgklbW0yLCVtbTYKKwltb3ZsCTU0OCglZXNwKSwlZWN4CisJbW92ZAklbW03LCVlYngKKwltb3ZxCSVtbTYsJW1tMworCXBzbGx3CSQ4LCVtbTYKKwlwc3JsdwkkOCwlbW0zCisJcG9yCSVtbTMsJW1tNgorCWJzd2FwCSVlZHgKKwlwc2h1ZncJJDI3LCVtbTYsJW1tNgorCWJzd2FwCSVlYngKKwljbXBsCTU1MiglZXNwKSwlZWN4CisJam5lCS5MMDA5b3V0ZXIKKwltb3ZsCTU0NCglZXNwKSwlZWF4CisJbW92bAklZWR4LDEyKCVlYXgpCisJbW92bAklZWJ4LDgoJWVheCkKKwltb3ZxCSVtbTYsKCVlYXgpCisJbW92bAk1NTYoJWVzcCksJWVzcAogCWVtbXMKLQltb3ZsCSVlYngsMTIoJWVkaSkKLQltb3ZsCSVlZHgsNCglZWRpKQotCW1vdmwJJWVjeCw4KCVlZGkpCi0JbW92bAklZWJwLCglZWRpKQotCWFkZGwJJDIwLCVlc3AKIAlwb3BsCSVlZGkKIAlwb3BsCSVlc2kKIAlwb3BsCSVlYngKIAlwb3BsCSVlYnAKIAlyZXQKIC5zaXplCWdjbV9naGFzaF80Yml0X21teCwuLS5MX2djbV9naGFzaF80Yml0X21teF9iZWdpbgorLmdsb2JsCWdjbV9pbml0X2NsbXVsCisudHlwZQlnY21faW5pdF9jbG11bCxAZnVuY3Rpb24KKy5hbGlnbgkxNgorZ2NtX2luaXRfY2xtdWw6CisuTF9nY21faW5pdF9jbG11bF9iZWdpbjoKKwltb3ZsCTQoJWVzcCksJWVkeAorCW1vdmwJOCglZXNwKSwlZWF4CisJY2FsbAkuTDAxMHBpYworLkwwMTBwaWM6CisJcG9wbAklZWN4CisJbGVhbAkuTGJzd2FwLS5MMDEwcGljKCVlY3gpLCVlY3gKKwltb3ZkcXUJKCVlYXgpLCV4bW0yCisJcHNodWZkCSQ3OCwleG1tMiwleG1tMgorCXBzaHVmZAkkMjU1LCV4bW0yLCV4bW00CisJbW92ZHFhCSV4bW0yLCV4bW0zCisJcHNsbHEJJDEsJXhtbTIKKwlweG9yCSV4bW01LCV4bW01CisJcHNybHEJJDYzLCV4bW0zCisJcGNtcGd0ZAkleG1tNCwleG1tNQorCXBzbGxkcQkkOCwleG1tMworCXBvcgkleG1tMywleG1tMgorCXBhbmQJMTYoJWVjeCksJXhtbTUKKwlweG9yCSV4bW01LCV4bW0yCisJbW92ZHFhCSV4bW0yLCV4bW0wCisJbW92ZHFhCSV4bW0wLCV4bW0xCisJcHNodWZkCSQ3OCwleG1tMCwleG1tMworCXBzaHVmZAkkNzgsJXhtbTIsJXhtbTQKKwlweG9yCSV4bW0wLCV4bW0zCisJcHhvcgkleG1tMiwleG1tNAorLmJ5dGUJMTAyLDE1LDU4LDY4LDE5NCwwCisuYnl0ZQkxMDIsMTUsNTgsNjgsMjAyLDE3CisuYnl0ZQkxMDIsMTUsNTgsNjgsMjIwLDAKKwl4b3JwcwkleG1tMCwleG1tMworCXhvcnBzCSV4bW0xLCV4bW0zCisJbW92ZHFhCSV4bW0zLCV4bW00CisJcHNybGRxCSQ4LCV4bW0zCisJcHNsbGRxCSQ4LCV4bW00CisJcHhvcgkleG1tMywleG1tMQorCXB4b3IJJXhtbTQsJXhtbTAKKwltb3ZkcWEJJXhtbTAsJXhtbTMKKwlwc2xscQkkMSwleG1tMAorCXB4b3IJJXhtbTMsJXhtbTAKKwlwc2xscQkkNSwleG1tMAorCXB4b3IJJXhtbTMsJXhtbTAKKwlwc2xscQkkNTcsJXhtbTAKKwltb3ZkcWEJJXhtbTAsJXhtbTQKKwlwc2xsZHEJJDgsJXhtbTAKKwlwc3JsZHEJJDgsJXhtbTQKKwlweG9yCSV4bW0zLCV4bW0wCisJcHhvcgkleG1tNCwleG1tMQorCW1vdmRxYQkleG1tMCwleG1tNAorCXBzcmxxCSQ1LCV4bW0wCisJcHhvcgkleG1tNCwleG1tMAorCXBzcmxxCSQxLCV4bW0wCisJcHhvcgkleG1tNCwleG1tMAorCXB4b3IJJXhtbTEsJXhtbTQKKwlwc3JscQkkMSwleG1tMAorCXB4b3IJJXhtbTQsJXhtbTAKKwltb3ZkcXUJJXhtbTIsKCVlZHgpCisJbW92ZHF1CSV4bW0wLDE2KCVlZHgpCisJcmV0Cisuc2l6ZQlnY21faW5pdF9jbG11bCwuLS5MX2djbV9pbml0X2NsbXVsX2JlZ2luCisuZ2xvYmwJZ2NtX2dtdWx0X2NsbXVsCisudHlwZQlnY21fZ211bHRfY2xtdWwsQGZ1bmN0aW9uCisuYWxpZ24JMTYKK2djbV9nbXVsdF9jbG11bDoKKy5MX2djbV9nbXVsdF9jbG11bF9iZWdpbjoKKwltb3ZsCTQoJWVzcCksJWVheAorCW1vdmwJOCglZXNwKSwlZWR4CisJY2FsbAkuTDAxMXBpYworLkwwMTFwaWM6CisJcG9wbAklZWN4CisJbGVhbAkuTGJzd2FwLS5MMDExcGljKCVlY3gpLCVlY3gKKwltb3ZkcXUJKCVlYXgpLCV4bW0wCisJbW92ZHFhCSglZWN4KSwleG1tNQorCW1vdnVwcwkoJWVkeCksJXhtbTIKKy5ieXRlCTEwMiwxNSw1NiwwLDE5NworCW1vdmRxYQkleG1tMCwleG1tMQorCXBzaHVmZAkkNzgsJXhtbTAsJXhtbTMKKwlwc2h1ZmQJJDc4LCV4bW0yLCV4bW00CisJcHhvcgkleG1tMCwleG1tMworCXB4b3IJJXhtbTIsJXhtbTQKKy5ieXRlCTEwMiwxNSw1OCw2OCwxOTQsMAorLmJ5dGUJMTAyLDE1LDU4LDY4LDIwMiwxNworLmJ5dGUJMTAyLDE1LDU4LDY4LDIyMCwwCisJeG9ycHMJJXhtbTAsJXhtbTMKKwl4b3JwcwkleG1tMSwleG1tMworCW1vdmRxYQkleG1tMywleG1tNAorCXBzcmxkcQkkOCwleG1tMworCXBzbGxkcQkkOCwleG1tNAorCXB4b3IJJXhtbTMsJXhtbTEKKwlweG9yCSV4bW00LCV4bW0wCisJbW92ZHFhCSV4bW0wLCV4bW0zCisJcHNsbHEJJDEsJXhtbTAKKwlweG9yCSV4bW0zLCV4bW0wCisJcHNsbHEJJDUsJXhtbTAKKwlweG9yCSV4bW0zLCV4bW0wCisJcHNsbHEJJDU3LCV4bW0wCisJbW92ZHFhCSV4bW0wLCV4bW00CisJcHNsbGRxCSQ4LCV4bW0wCisJcHNybGRxCSQ4LCV4bW00CisJcHhvcgkleG1tMywleG1tMAorCXB4b3IJJXhtbTQsJXhtbTEKKwltb3ZkcWEJJXhtbTAsJXhtbTQKKwlwc3JscQkkNSwleG1tMAorCXB4b3IJJXhtbTQsJXhtbTAKKwlwc3JscQkkMSwleG1tMAorCXB4b3IJJXhtbTQsJXhtbTAKKwlweG9yCSV4bW0xLCV4bW00CisJcHNybHEJJDEsJXhtbTAKKwlweG9yCSV4bW00LCV4bW0wCisuYnl0ZQkxMDIsMTUsNTYsMCwxOTcKKwltb3ZkcXUJJXhtbTAsKCVlYXgpCisJcmV0Cisuc2l6ZQlnY21fZ211bHRfY2xtdWwsLi0uTF9nY21fZ211bHRfY2xtdWxfYmVnaW4KKy5nbG9ibAlnY21fZ2hhc2hfY2xtdWwKKy50eXBlCWdjbV9naGFzaF9jbG11bCxAZnVuY3Rpb24KKy5hbGlnbgkxNgorZ2NtX2doYXNoX2NsbXVsOgorLkxfZ2NtX2doYXNoX2NsbXVsX2JlZ2luOgorCXB1c2hsCSVlYnAKKwlwdXNobAklZWJ4CisJcHVzaGwJJWVzaQorCXB1c2hsCSVlZGkKKwltb3ZsCTIwKCVlc3ApLCVlYXgKKwltb3ZsCTI0KCVlc3ApLCVlZHgKKwltb3ZsCTI4KCVlc3ApLCVlc2kKKwltb3ZsCTMyKCVlc3ApLCVlYngKKwljYWxsCS5MMDEycGljCisuTDAxMnBpYzoKKwlwb3BsCSVlY3gKKwlsZWFsCS5MYnN3YXAtLkwwMTJwaWMoJWVjeCksJWVjeAorCW1vdmRxdQkoJWVheCksJXhtbTAKKwltb3ZkcWEJKCVlY3gpLCV4bW01CisJbW92ZHF1CSglZWR4KSwleG1tMgorLmJ5dGUJMTAyLDE1LDU2LDAsMTk3CisJc3VibAkkMTYsJWVieAorCWp6CS5MMDEzb2RkX3RhaWwKKwltb3ZkcXUJKCVlc2kpLCV4bW0zCisJbW92ZHF1CTE2KCVlc2kpLCV4bW02CisuYnl0ZQkxMDIsMTUsNTYsMCwyMjEKKy5ieXRlCTEwMiwxNSw1NiwwLDI0NQorCXB4b3IJJXhtbTMsJXhtbTAKKwltb3ZkcWEJJXhtbTYsJXhtbTcKKwlwc2h1ZmQJJDc4LCV4bW02LCV4bW0zCisJcHNodWZkCSQ3OCwleG1tMiwleG1tNAorCXB4b3IJJXhtbTYsJXhtbTMKKwlweG9yCSV4bW0yLCV4bW00CisuYnl0ZQkxMDIsMTUsNTgsNjgsMjQyLDAKKy5ieXRlCTEwMiwxNSw1OCw2OCwyNTAsMTcKKy5ieXRlCTEwMiwxNSw1OCw2OCwyMjAsMAorCXhvcnBzCSV4bW02LCV4bW0zCisJeG9ycHMJJXhtbTcsJXhtbTMKKwltb3ZkcWEJJXhtbTMsJXhtbTQKKwlwc3JsZHEJJDgsJXhtbTMKKwlwc2xsZHEJJDgsJXhtbTQKKwlweG9yCSV4bW0zLCV4bW03CisJcHhvcgkleG1tNCwleG1tNgorCW1vdnVwcwkxNiglZWR4KSwleG1tMgorCWxlYWwJMzIoJWVzaSksJWVzaQorCXN1YmwJJDMyLCVlYngKKwlqYmUJLkwwMTRldmVuX3RhaWwKKy5MMDE1bW9kX2xvb3A6CisJbW92ZHFhCSV4bW0wLCV4bW0xCisJcHNodWZkCSQ3OCwleG1tMCwleG1tMworCXBzaHVmZAkkNzgsJXhtbTIsJXhtbTQKKwlweG9yCSV4bW0wLCV4bW0zCisJcHhvcgkleG1tMiwleG1tNAorLmJ5dGUJMTAyLDE1LDU4LDY4LDE5NCwwCisuYnl0ZQkxMDIsMTUsNTgsNjgsMjAyLDE3CisuYnl0ZQkxMDIsMTUsNTgsNjgsMjIwLDAKKwl4b3JwcwkleG1tMCwleG1tMworCXhvcnBzCSV4bW0xLCV4bW0zCisJbW92ZHFhCSV4bW0zLCV4bW00CisJcHNybGRxCSQ4LCV4bW0zCisJcHNsbGRxCSQ4LCV4bW00CisJcHhvcgkleG1tMywleG1tMQorCXB4b3IJJXhtbTQsJXhtbTAKKwltb3ZkcXUJKCVlc2kpLCV4bW0zCisJbW92dXBzCSglZWR4KSwleG1tMgorCXB4b3IJJXhtbTYsJXhtbTAKKwlweG9yCSV4bW03LCV4bW0xCisJbW92ZHF1CTE2KCVlc2kpLCV4bW02CisuYnl0ZQkxMDIsMTUsNTYsMCwyMjEKKy5ieXRlCTEwMiwxNSw1NiwwLDI0NQorCW1vdmRxYQkleG1tNiwleG1tNQorCW1vdmRxYQkleG1tNiwleG1tNworCXB4b3IJJXhtbTMsJXhtbTEKKwltb3ZkcWEJJXhtbTAsJXhtbTMKKwlwc2xscQkkMSwleG1tMAorCXB4b3IJJXhtbTMsJXhtbTAKKwlwc2xscQkkNSwleG1tMAorCXB4b3IJJXhtbTMsJXhtbTAKKy5ieXRlCTEwMiwxNSw1OCw2OCwyNDIsMAorCXBzbGxxCSQ1NywleG1tMAorCW1vdmRxYQkleG1tMCwleG1tNAorCXBzbGxkcQkkOCwleG1tMAorCXBzcmxkcQkkOCwleG1tNAorCXB4b3IJJXhtbTMsJXhtbTAKKwlwc2h1ZmQJJDc4LCV4bW01LCV4bW0zCisJcHhvcgkleG1tNCwleG1tMQorCXB4b3IJJXhtbTUsJXhtbTMKKwlwc2h1ZmQJJDc4LCV4bW0yLCV4bW01CisJcHhvcgkleG1tMiwleG1tNQorLmJ5dGUJMTAyLDE1LDU4LDY4LDI1MCwxNworCW1vdmRxYQkleG1tMCwleG1tNAorCXBzcmxxCSQ1LCV4bW0wCisJcHhvcgkleG1tNCwleG1tMAorCXBzcmxxCSQxLCV4bW0wCisJcHhvcgkleG1tNCwleG1tMAorCXB4b3IJJXhtbTEsJXhtbTQKKwlwc3JscQkkMSwleG1tMAorCXB4b3IJJXhtbTQsJXhtbTAKKy5ieXRlCTEwMiwxNSw1OCw2OCwyMjEsMAorCW1vdnVwcwkxNiglZWR4KSwleG1tMgorCXhvcnBzCSV4bW02LCV4bW0zCisJeG9ycHMJJXhtbTcsJXhtbTMKKwltb3ZkcWEJJXhtbTMsJXhtbTUKKwlwc3JsZHEJJDgsJXhtbTMKKwlwc2xsZHEJJDgsJXhtbTUKKwlweG9yCSV4bW0zLCV4bW03CisJcHhvcgkleG1tNSwleG1tNgorCW1vdmRxYQkoJWVjeCksJXhtbTUKKwlsZWFsCTMyKCVlc2kpLCVlc2kKKwlzdWJsCSQzMiwlZWJ4CisJamEJLkwwMTVtb2RfbG9vcAorLkwwMTRldmVuX3RhaWw6CisJbW92ZHFhCSV4bW0wLCV4bW0xCisJcHNodWZkCSQ3OCwleG1tMCwleG1tMworCXBzaHVmZAkkNzgsJXhtbTIsJXhtbTQKKwlweG9yCSV4bW0wLCV4bW0zCisJcHhvcgkleG1tMiwleG1tNAorLmJ5dGUJMTAyLDE1LDU4LDY4LDE5NCwwCisuYnl0ZQkxMDIsMTUsNTgsNjgsMjAyLDE3CisuYnl0ZQkxMDIsMTUsNTgsNjgsMjIwLDAKKwl4b3JwcwkleG1tMCwleG1tMworCXhvcnBzCSV4bW0xLCV4bW0zCisJbW92ZHFhCSV4bW0zLCV4bW00CisJcHNybGRxCSQ4LCV4bW0zCisJcHNsbGRxCSQ4LCV4bW00CisJcHhvcgkleG1tMywleG1tMQorCXB4b3IJJXhtbTQsJXhtbTAKKwlweG9yCSV4bW02LCV4bW0wCisJcHhvcgkleG1tNywleG1tMQorCW1vdmRxYQkleG1tMCwleG1tMworCXBzbGxxCSQxLCV4bW0wCisJcHhvcgkleG1tMywleG1tMAorCXBzbGxxCSQ1LCV4bW0wCisJcHhvcgkleG1tMywleG1tMAorCXBzbGxxCSQ1NywleG1tMAorCW1vdmRxYQkleG1tMCwleG1tNAorCXBzbGxkcQkkOCwleG1tMAorCXBzcmxkcQkkOCwleG1tNAorCXB4b3IJJXhtbTMsJXhtbTAKKwlweG9yCSV4bW00LCV4bW0xCisJbW92ZHFhCSV4bW0wLCV4bW00CisJcHNybHEJJDUsJXhtbTAKKwlweG9yCSV4bW00LCV4bW0wCisJcHNybHEJJDEsJXhtbTAKKwlweG9yCSV4bW00LCV4bW0wCisJcHhvcgkleG1tMSwleG1tNAorCXBzcmxxCSQxLCV4bW0wCisJcHhvcgkleG1tNCwleG1tMAorCXRlc3RsCSVlYngsJWVieAorCWpuegkuTDAxNmRvbmUKKwltb3Z1cHMJKCVlZHgpLCV4bW0yCisuTDAxM29kZF90YWlsOgorCW1vdmRxdQkoJWVzaSksJXhtbTMKKy5ieXRlCTEwMiwxNSw1NiwwLDIyMQorCXB4b3IJJXhtbTMsJXhtbTAKKwltb3ZkcWEJJXhtbTAsJXhtbTEKKwlwc2h1ZmQJJDc4LCV4bW0wLCV4bW0zCisJcHNodWZkCSQ3OCwleG1tMiwleG1tNAorCXB4b3IJJXhtbTAsJXhtbTMKKwlweG9yCSV4bW0yLCV4bW00CisuYnl0ZQkxMDIsMTUsNTgsNjgsMTk0LDAKKy5ieXRlCTEwMiwxNSw1OCw2OCwyMDIsMTcKKy5ieXRlCTEwMiwxNSw1OCw2OCwyMjAsMAorCXhvcnBzCSV4bW0wLCV4bW0zCisJeG9ycHMJJXhtbTEsJXhtbTMKKwltb3ZkcWEJJXhtbTMsJXhtbTQKKwlwc3JsZHEJJDgsJXhtbTMKKwlwc2xsZHEJJDgsJXhtbTQKKwlweG9yCSV4bW0zLCV4bW0xCisJcHhvcgkleG1tNCwleG1tMAorCW1vdmRxYQkleG1tMCwleG1tMworCXBzbGxxCSQxLCV4bW0wCisJcHhvcgkleG1tMywleG1tMAorCXBzbGxxCSQ1LCV4bW0wCisJcHhvcgkleG1tMywleG1tMAorCXBzbGxxCSQ1NywleG1tMAorCW1vdmRxYQkleG1tMCwleG1tNAorCXBzbGxkcQkkOCwleG1tMAorCXBzcmxkcQkkOCwleG1tNAorCXB4b3IJJXhtbTMsJXhtbTAKKwlweG9yCSV4bW00LCV4bW0xCisJbW92ZHFhCSV4bW0wLCV4bW00CisJcHNybHEJJDUsJXhtbTAKKwlweG9yCSV4bW00LCV4bW0wCisJcHNybHEJJDEsJXhtbTAKKwlweG9yCSV4bW00LCV4bW0wCisJcHhvcgkleG1tMSwleG1tNAorCXBzcmxxCSQxLCV4bW0wCisJcHhvcgkleG1tNCwleG1tMAorLkwwMTZkb25lOgorLmJ5dGUJMTAyLDE1LDU2LDAsMTk3CisJbW92ZHF1CSV4bW0wLCglZWF4KQorCXBvcGwJJWVkaQorCXBvcGwJJWVzaQorCXBvcGwJJWVieAorCXBvcGwJJWVicAorCXJldAorLnNpemUJZ2NtX2doYXNoX2NsbXVsLC4tLkxfZ2NtX2doYXNoX2NsbXVsX2JlZ2luCisuYWxpZ24JNjQKKy5MYnN3YXA6CisuYnl0ZQkxNSwxNCwxMywxMiwxMSwxMCw5LDgsNyw2LDUsNCwzLDIsMSwwCisuYnl0ZQkxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxOTQKIC5hbGlnbgk2NAogLkxyZW1fNGJpdDoKLS5sb25nCTAsMCwwLDI5NDkxMjAwLDAsNTg5ODI0MDAsMCwzODE0MTk1MgotLmxvbmcJMCwxMTc5NjQ4MDAsMCwxMTM5MDE1NjgsMCw3NjI4MzkwNCwwLDg4OTk3ODg4Ci0ubG9uZwkwLDIzNTkyOTYwMCwwLDI2NTQyMDgwMCwwLDIyNzgwMzEzNiwwLDIwNjk2MjY4OAotLmxvbmcJMCwxNTI1Njc4MDgsMCwxNDg1MDQ1NzYsMCwxNzc5OTU3NzYsMCwxOTA3MDk3NjAKKy5sb25nCTAsMCwwLDQ3MTg1OTIwMCwwLDk0MzcxODQwMCwwLDYxMDI3MTIzMgorLmxvbmcJMCwxODg3NDM2ODAwLDAsMTgyMjQyNTA4OCwwLDEyMjA1NDI0NjQsMCwxNDIzOTY2MjA4CisubG9uZwkwLDM3NzQ4NzM2MDAsMCw0MjQ2NzMyODAwLDAsMzY0NDg1MDE3NiwwLDMzMTE0MDMwMDgKKy5sb25nCTAsMjQ0MTA4NDkyOCwwLDIzNzYwNzMyMTYsMCwyODQ3OTMyNDE2LDAsMzA1MTM1NjE2MAogLmFsaWduCTY0Ci0uTDAwOHJlbV84Yml0OgorLkxyZW1fOGJpdDoKIC52YWx1ZQkwLDQ1MCw5MDAsNTgyLDE4MDAsMTczOCwxMTY0LDEzNTgKIC52YWx1ZQkzNjAwLDQwNTAsMzQ3NiwzMTU4LDIzMjgsMjI2NiwyNzE2LDI5MTAKIC52YWx1ZQk3MjAwLDc2NTAsODEwMCw3NzgyLDY5NTIsNjg5MCw2MzE2LDY1MTAKZGlmZiAtLWdpdCBhL2NyeXB0by9tb2Rlcy9hc20vZ2hhc2h2OC1hcm14LTY0LlMgYi9jcnlwdG8vbW9kZXMvYXNtL2doYXNodjgtYXJteC02NC5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3N2I2YzQKLS0tIC9kZXYvbnVsbAorKysgYi9jcnlwdG8vbW9kZXMvYXNtL2doYXNodjgtYXJteC02NC5TCkBAIC0wLDAgKzEsMTE1IEBACisjaW5jbHVkZSAiYXJtX2FyY2guaCIKKworLnRleHQKKy5hcmNoCWFybXY4LWErY3J5cHRvCisuZ2xvYmFsCWdjbV9pbml0X3Y4CisudHlwZQlnY21faW5pdF92OCwlZnVuY3Rpb24KKy5hbGlnbgk0CitnY21faW5pdF92ODoKKwlsZDEJCXt2MTcuMmR9LFt4MV0JCS8vbG9hZCBICisJbW92aQkJdjE2LjE2YiwjMHhlMQorCWV4dAkJdjMuMTZiLHYxNy4xNmIsdjE3LjE2YiwjOAorCXNobAl2MTYuMmQsdjE2LjJkLCM1NworCXVzaHIJdjE4LjJkLHYxNi4yZCwjNjMKKwlleHQJCXYxNi4xNmIsdjE4LjE2Yix2MTYuMTZiLCM4CQkvL3QwPTB4YzIuLi4uMDEKKwlkdXAJCXYxNy40cyx2MTcuc1sxXQorCXVzaHIJdjE5LjJkLHYzLjJkLCM2MworCXNzaHIJdjE3LjRzLHYxNy40cywjMzEJCS8vYnJvYWRjYXN0IGNhcnJ5IGJpdAorCWFuZAkJdjE5LjE2Yix2MTkuMTZiLHYxNi4xNmIKKwlzaGwJdjMuMmQsdjMuMmQsIzEKKwlleHQJCXYxOS4xNmIsdjE5LjE2Yix2MTkuMTZiLCM4CisJYW5kCQl2MTYuMTZiLHYxNi4xNmIsdjE3LjE2YgorCW9ycgkJdjMuMTZiLHYzLjE2Yix2MTkuMTZiCQkvL0g8PDw9MQorCWVvcgkJdjMuMTZiLHYzLjE2Yix2MTYuMTZiCQkvL3R3aXN0ZWQgSAorCXN0MQkJe3YzLjJkfSxbeDBdCisKKwlyZXQKKy5zaXplCWdjbV9pbml0X3Y4LC4tZ2NtX2luaXRfdjgKKworLmdsb2JhbAlnY21fZ211bHRfdjgKKy50eXBlCWdjbV9nbXVsdF92OCwlZnVuY3Rpb24KKy5hbGlnbgk0CitnY21fZ211bHRfdjg6CisJbGQxCQl7djE3LjJkfSxbeDBdCQkvL2xvYWQgWGkKKwltb3ZpCQl2MTkuMTZiLCMweGUxCisJbGQxCQl7djIwLjJkfSxbeDFdCQkvL2xvYWQgdHdpc3RlZCBICisJc2hsCXYxOS4yZCx2MTkuMmQsIzU3CisjaWZuZGVmIF9fQVJNRUJfXworCXJldjY0CXYxNy4xNmIsdjE3LjE2YgorI2VuZGlmCisJZXh0CQl2MjEuMTZiLHYyMC4xNmIsdjIwLjE2YiwjOAorCW1vdgkJeDMsIzAKKwlleHQJCXYzLjE2Yix2MTcuMTZiLHYxNy4xNmIsIzgKKwltb3YJCXgxMiwjMAorCWVvcgkJdjIxLjE2Yix2MjEuMTZiLHYyMC4xNmIJCS8vS2FyYXRzdWJhIHByZS1wcm9jZXNzaW5nCisJbW92CQl4Mix4MAorCWIJCS5MZ211bHRfdjgKKy5zaXplCWdjbV9nbXVsdF92OCwuLWdjbV9nbXVsdF92OAorCisuZ2xvYmFsCWdjbV9naGFzaF92OAorLnR5cGUJZ2NtX2doYXNoX3Y4LCVmdW5jdGlvbgorLmFsaWduCTQKK2djbV9naGFzaF92ODoKKwlsZDEJCXt2MC4yZH0sW3gwXQkJLy9sb2FkIFtyb3RhdGVkXSBYaQorCXN1YnMJCXgzLHgzLCMxNgorCW1vdmkJCXYxOS4xNmIsIzB4ZTEKKwltb3YJCXgxMiwjMTYKKwlsZDEJCXt2MjAuMmR9LFt4MV0JCS8vbG9hZCB0d2lzdGVkIEgKKwljc2VsCXgxMix4enIseDEyLGVxCisJZXh0CQl2MC4xNmIsdjAuMTZiLHYwLjE2YiwjOAorCXNobAl2MTkuMmQsdjE5LjJkLCM1NworCWxkMQkJe3YxNy4yZH0sW3gyXSx4MTIJLy9sb2FkIFtyb3RhdGVkXSBpbnAKKwlleHQJCXYyMS4xNmIsdjIwLjE2Yix2MjAuMTZiLCM4CisjaWZuZGVmIF9fQVJNRUJfXworCXJldjY0CXYwLjE2Yix2MC4xNmIKKwlyZXY2NAl2MTcuMTZiLHYxNy4xNmIKKyNlbmRpZgorCWVvcgkJdjIxLjE2Yix2MjEuMTZiLHYyMC4xNmIJCS8vS2FyYXRzdWJhIHByZS1wcm9jZXNzaW5nCisJZXh0CQl2My4xNmIsdjE3LjE2Yix2MTcuMTZiLCM4CisJYgkJLkxvb3BfdjgKKworLmFsaWduCTQKKy5Mb29wX3Y4OgorCWV4dAkJdjE4LjE2Yix2MC4xNmIsdjAuMTZiLCM4CisJZW9yCQl2My4xNmIsdjMuMTZiLHYwLjE2YgkJLy9pbnBePVhpCisJZW9yCQl2MTcuMTZiLHYxNy4xNmIsdjE4LjE2YgkJLy92MTcuMTZiIGlzIHJvdGF0ZWQgaW5wXlhpCisKKy5MZ211bHRfdjg6CisJcG11bGwJdjAuMXEsdjIwLjFkLHYzLjFkCQkvL0gubG/Ct1hpLmxvCisJZW9yCQl2MTcuMTZiLHYxNy4xNmIsdjMuMTZiCQkvL0thcmF0c3ViYSBwcmUtcHJvY2Vzc2luZworCXBtdWxsMgl2Mi4xcSx2MjAuMmQsdjMuMmQJCS8vSC5oacK3WGkuaGkKKwlzdWJzCQl4Myx4MywjMTYKKwlwbXVsbAl2MS4xcSx2MjEuMWQsdjE3LjFkCQkvLyhILmxvK0guaGkpwrcoWGkubG8rWGkuaGkpCisJY3NlbAl4MTIseHpyLHgxMixlcQorCisJZXh0CQl2MTcuMTZiLHYwLjE2Yix2Mi4xNmIsIzgJCS8vS2FyYXRzdWJhIHBvc3QtcHJvY2Vzc2luZworCWVvcgkJdjE4LjE2Yix2MC4xNmIsdjIuMTZiCisJZW9yCQl2MS4xNmIsdjEuMTZiLHYxNy4xNmIKKwkgbGQxCXt2MTcuMmR9LFt4Ml0seDEyCS8vbG9hZCBbcm90YXRlZF0gaW5wCisJZW9yCQl2MS4xNmIsdjEuMTZiLHYxOC4xNmIKKwlwbXVsbAl2MTguMXEsdjAuMWQsdjE5LjFkCQkvLzFzdCBwaGFzZQorCisJaW5zCXYyLmRbMF0sdjEuZFsxXQorCWlucwl2MS5kWzFdLHYwLmRbMF0KKyNpZm5kZWYgX19BUk1FQl9fCisJIHJldjY0CXYxNy4xNmIsdjE3LjE2YgorI2VuZGlmCisJZW9yCQl2MC4xNmIsdjEuMTZiLHYxOC4xNmIKKwkgZXh0CQl2My4xNmIsdjE3LjE2Yix2MTcuMTZiLCM4CisKKwlleHQJCXYxOC4xNmIsdjAuMTZiLHYwLjE2YiwjOAkJLy8ybmQgcGhhc2UKKwlwbXVsbAl2MC4xcSx2MC4xZCx2MTkuMWQKKwllb3IJCXYxOC4xNmIsdjE4LjE2Yix2Mi4xNmIKKwllb3IJCXYwLjE2Yix2MC4xNmIsdjE4LjE2YgorCWIuaHMJCS5Mb29wX3Y4CisKKyNpZm5kZWYgX19BUk1FQl9fCisJcmV2NjQJdjAuMTZiLHYwLjE2YgorI2VuZGlmCisJZXh0CQl2MC4xNmIsdjAuMTZiLHYwLjE2YiwjOAorCXN0MQkJe3YwLjJkfSxbeDBdCQkvL3dyaXRlIG91dCBYaQorCisJcmV0Cisuc2l6ZQlnY21fZ2hhc2hfdjgsLi1nY21fZ2hhc2hfdjgKKy5hc2NpeiAgIkdIQVNIIGZvciBBUk12OCwgQ1JZUFRPR0FNUyBieSA8YXBwcm9Ab3BlbnNzbC5vcmc+IgorLmFsaWduICAyCmRpZmYgLS1naXQgYS9jcnlwdG8vbW9kZXMvYXNtL2doYXNodjgtYXJteC5TIGIvY3J5cHRvL21vZGVzL2FzbS9naGFzaHY4LWFybXguUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzg4YzU0Ci0tLSAvZGV2L251bGwKKysrIGIvY3J5cHRvL21vZGVzL2FzbS9naGFzaHY4LWFybXguUwpAQCAtMCwwICsxLDExNiBAQAorI2luY2x1ZGUgImFybV9hcmNoLmgiCisKKy50ZXh0CisuZnB1CW5lb24KKy5jb2RlCTMyCisuZ2xvYmFsCWdjbV9pbml0X3Y4CisudHlwZQlnY21faW5pdF92OCwlZnVuY3Rpb24KKy5hbGlnbgk0CitnY21faW5pdF92ODoKKwl2bGQxLjY0CQl7cTl9LFtyMV0JCUAgbG9hZCBICisJdm1vdi5pOAkJcTgsIzB4ZTEKKwl2ZXh0LjgJCXEzLHE5LHE5LCM4CisJdnNobC5pNjQJcTgscTgsIzU3CisJdnNoci51NjQJcTEwLHE4LCM2MworCXZleHQuOAkJcTgscTEwLHE4LCM4CQlAIHQwPTB4YzIuLi4uMDEKKwl2ZHVwLjMyCXE5LGQxOFsxXQorCXZzaHIudTY0CXExMSxxMywjNjMKKwl2c2hyLnMzMglxOSxxOSwjMzEJCUAgYnJvYWRjYXN0IGNhcnJ5IGJpdAorCXZhbmQJCXExMSxxMTEscTgKKwl2c2hsLmk2NAlxMyxxMywjMQorCXZleHQuOAkJcTExLHExMSxxMTEsIzgKKwl2YW5kCQlxOCxxOCxxOQorCXZvcnIJCXEzLHEzLHExMQkJQCBIPDw8PTEKKwl2ZW9yCQlxMyxxMyxxOAkJQCB0d2lzdGVkIEgKKwl2c3QxLjY0CQl7cTN9LFtyMF0KKworCWJ4CWxyCisuc2l6ZQlnY21faW5pdF92OCwuLWdjbV9pbml0X3Y4CisKKy5nbG9iYWwJZ2NtX2dtdWx0X3Y4CisudHlwZQlnY21fZ211bHRfdjgsJWZ1bmN0aW9uCisuYWxpZ24JNAorZ2NtX2dtdWx0X3Y4OgorCXZsZDEuNjQJCXtxOX0sW3IwXQkJQCBsb2FkIFhpCisJdm1vdi5pOAkJcTExLCMweGUxCisJdmxkMS42NAkJe3ExMn0sW3IxXQkJQCBsb2FkIHR3aXN0ZWQgSAorCXZzaGwudTY0CXExMSxxMTEsIzU3CisjaWZuZGVmIF9fQVJNRUJfXworCXZyZXY2NC44CXE5LHE5CisjZW5kaWYKKwl2ZXh0LjgJCXExMyxxMTIscTEyLCM4CisJbW92CQlyMywjMAorCXZleHQuOAkJcTMscTkscTksIzgKKwltb3YJCXIxMiwjMAorCXZlb3IJCXExMyxxMTMscTEyCQlAIEthcmF0c3ViYSBwcmUtcHJvY2Vzc2luZworCW1vdgkJcjIscjAKKwliCQkuTGdtdWx0X3Y4Cisuc2l6ZQlnY21fZ211bHRfdjgsLi1nY21fZ211bHRfdjgKKworLmdsb2JhbAlnY21fZ2hhc2hfdjgKKy50eXBlCWdjbV9naGFzaF92OCwlZnVuY3Rpb24KKy5hbGlnbgk0CitnY21fZ2hhc2hfdjg6CisJdmxkMS42NAkJe3EwfSxbcjBdCQlAIGxvYWQgW3JvdGF0ZWRdIFhpCisJc3VicwkJcjMscjMsIzE2CisJdm1vdi5pOAkJcTExLCMweGUxCisJbW92CQlyMTIsIzE2CisJdmxkMS42NAkJe3ExMn0sW3IxXQkJQCBsb2FkIHR3aXN0ZWQgSAorCW1vdmVxCXIxMiwjMAorCXZleHQuOAkJcTAscTAscTAsIzgKKwl2c2hsLnU2NAlxMTEscTExLCM1NworCXZsZDEuNjQJCXtxOX0sW3IyXSxyMTIJQCBsb2FkIFtyb3RhdGVkXSBpbnAKKwl2ZXh0LjgJCXExMyxxMTIscTEyLCM4CisjaWZuZGVmIF9fQVJNRUJfXworCXZyZXY2NC44CXEwLHEwCisJdnJldjY0LjgJcTkscTkKKyNlbmRpZgorCXZlb3IJCXExMyxxMTMscTEyCQlAIEthcmF0c3ViYSBwcmUtcHJvY2Vzc2luZworCXZleHQuOAkJcTMscTkscTksIzgKKwliCQkuTG9vcF92OAorCisuYWxpZ24JNAorLkxvb3Bfdjg6CisJdmV4dC44CQlxMTAscTAscTAsIzgKKwl2ZW9yCQlxMyxxMyxxMAkJQCBpbnBePVhpCisJdmVvcgkJcTkscTkscTEwCQlAIHE5IGlzIHJvdGF0ZWQgaW5wXlhpCisKKy5MZ211bHRfdjg6CisJLmJ5dGUJMHg4NiwweDBlLDB4YTgsMHhmMglAIHBtdWxsIHEwLHExMixxMwkJQCBILmxvwrdYaS5sbworCXZlb3IJCXE5LHE5LHEzCQlAIEthcmF0c3ViYSBwcmUtcHJvY2Vzc2luZworCS5ieXRlCTB4ODcsMHg0ZSwweGE5LDB4ZjIJQCBwbXVsbDIgcTIscTEyLHEzCQlAIEguaGnCt1hpLmhpCisJc3VicwkJcjMscjMsIzE2CisJLmJ5dGUJMHhhMiwweDJlLDB4YWEsMHhmMglAIHBtdWxsIHExLHExMyxxOQkJQCAoSC5sbytILmhpKcK3KFhpLmxvK1hpLmhpKQorCW1vdmVxCXIxMiwjMAorCisJdmV4dC44CQlxOSxxMCxxMiwjOAkJQCBLYXJhdHN1YmEgcG9zdC1wcm9jZXNzaW5nCisJdmVvcgkJcTEwLHEwLHEyCisJdmVvcgkJcTEscTEscTkKKwkgdmxkMS42NAl7cTl9LFtyMl0scjEyCUAgbG9hZCBbcm90YXRlZF0gaW5wCisJdmVvcgkJcTEscTEscTEwCisJLmJ5dGUJMHgyNiwweDRlLDB4ZTAsMHhmMglAIHBtdWxsIHExMCxxMCxxMTEJCUAgMXN0IHBoYXNlCisKKwl2bW92CQlkNCxkMwkJQCBYaHxYbSAtIDI1Ni1iaXQgcmVzdWx0CisJdm1vdgkJZDMsZDAJCUAgWG0gaXMgcm90YXRlZCBYbAorI2lmbmRlZiBfX0FSTUVCX18KKwkgdnJldjY0LjgJcTkscTkKKyNlbmRpZgorCXZlb3IJCXEwLHExLHExMAorCSB2ZXh0LjgJCXEzLHE5LHE5LCM4CisKKwl2ZXh0LjgJCXExMCxxMCxxMCwjOAkJQCAybmQgcGhhc2UKKwkuYnl0ZQkweDI2LDB4MGUsMHhhMCwweGYyCUAgcG11bGwgcTAscTAscTExCisJdmVvcgkJcTEwLHExMCxxMgorCXZlb3IJCXEwLHEwLHExMAorCWJocwkJLkxvb3BfdjgKKworI2lmbmRlZiBfX0FSTUVCX18KKwl2cmV2NjQuOAlxMCxxMAorI2VuZGlmCisJdmV4dC44CQlxMCxxMCxxMCwjOAorCXZzdDEuNjQJCXtxMH0sW3IwXQkJQCB3cml0ZSBvdXQgWGkKKworCWJ4CWxyCisuc2l6ZQlnY21fZ2hhc2hfdjgsLi1nY21fZ2hhc2hfdjgKKy5hc2NpeiAgIkdIQVNIIGZvciBBUk12OCwgQ1JZUFRPR0FNUyBieSA8YXBwcm9Ab3BlbnNzbC5vcmc+IgorLmFsaWduICAyCmRpZmYgLS1naXQgYS9jcnlwdG8vbW9kZXMvYXNtL2doYXNodjgtYXJteC5wbCBiL2NyeXB0by9tb2Rlcy9hc20vZ2hhc2h2OC1hcm14LnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5ZTg2M2UKLS0tIC9kZXYvbnVsbAorKysgYi9jcnlwdG8vbW9kZXMvYXNtL2doYXNodjgtYXJteC5wbApAQCAtMCwwICsxLDI0MCBAQAorIyEvdXNyL2Jpbi9lbnYgcGVybAorIworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBXcml0dGVuIGJ5IEFuZHkgUG9seWFrb3YgPGFwcHJvQG9wZW5zc2wub3JnPiBmb3IgdGhlIE9wZW5TU0wKKyMgcHJvamVjdC4gVGhlIG1vZHVsZSBpcywgaG93ZXZlciwgZHVhbCBsaWNlbnNlZCB1bmRlciBPcGVuU1NMIGFuZAorIyBDUllQVE9HQU1TIGxpY2Vuc2VzIGRlcGVuZGluZyBvbiB3aGVyZSB5b3Ugb2J0YWluIGl0LiBGb3IgZnVydGhlcgorIyBkZXRhaWxzIHNlZSBodHRwOi8vd3d3Lm9wZW5zc2wub3JnL35hcHByby9jcnlwdG9nYW1zLy4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMKKyMgR0hBU0ggZm9yIEFSTXY4IENyeXB0byBFeHRlbnNpb24sIDY0LWJpdCBwb2x5bm9taWFsIG11bHRpcGxpY2F0aW9uLgorIworIyBKdW5lIDIwMTQKKyMKKyMgSW5pdGlhbCB2ZXJzaW9uIHdhcyBkZXZlbG9wZWQgaW4gdGlnaHQgY29vcGVyYXRpb24gd2l0aCBBcmQKKyMgQmllc2hldXZlbCA8YXJkLmJpZXNoZXV2ZWxAbGluYXJvLm9yZz4gZnJvbSBiaXRzLW4tcGllY2VzIGZyb20KKyMgb3RoZXIgYXNzZW1ibHkgbW9kdWxlcy4gSnVzdCBsaWtlIGFlc3Y4LWFybXgucGwgdGhpcyBtb2R1bGUKKyMgc3VwcG9ydHMgYm90aCBBQXJjaDMyIGFuZCBBQXJjaDY0IGV4ZWN1dGlvbiBtb2Rlcy4KKyMKKyMgQ3VycmVudCBwZXJmb3JtYW5jZSBpbiBjeWNsZXMgcGVyIHByb2Nlc3NlZCBieXRlOgorIworIwkJUE1VTExbMl0JMzItYml0IE5FT04oKikKKyMgQXBwbGUgQTcJMS43NgkJNS42MgorIyBDb3J0ZXgtQTV4CW4vYQkJbi9hCisjCisjICgqKQlwcmVzZW50ZWQgZm9yIHJlZmVyZW5jZS9jb21wYXJpc29uIHB1cnBvc2VzOworCiskZmxhdm91ciA9IHNoaWZ0Oworb3BlbiBTVERPVVQsIj4iLnNoaWZ0OworCiskWGk9IngwIjsJIyBhcmd1bWVudCBibG9jaworJEh0Ymw9IngxIjsKKyRpbnA9IngyIjsKKyRsZW49IngzIjsKKworJGluYz0ieDEyIjsKKworeworbXkgKCRYbCwkWG0sJFhoLCRJTik9bWFwKCJxJF8iLCgwLi4zKSk7CitteSAoJHQwLCR0MSwkdDIsJHQzLCRILCRIaGwpPW1hcCgicSRfIiwoOC4uMTQpKTsKKworJGNvZGU9PDxfX187CisjaW5jbHVkZSAiYXJtX2FyY2guaCIKKworLnRleHQKK19fXworJGNvZGUuPSIuYXJjaAlhcm12OC1hK2NyeXB0b1xuIglpZiAoJGZsYXZvdXIgPX4gLzY0Lyk7CiskY29kZS49Ii5mcHUJbmVvblxuLmNvZGUJMzJcbiIJaWYgKCRmbGF2b3VyICF+IC82NC8pOworCiskY29kZS49PDxfX187CisuZ2xvYmFsCWdjbV9pbml0X3Y4CisudHlwZQlnY21faW5pdF92OCwlZnVuY3Rpb24KKy5hbGlnbgk0CitnY21faW5pdF92ODoKKwl2bGQxLjY0CQl7JHQxfSxbeDFdCQlAIGxvYWQgSAorCXZtb3YuaTgJCSR0MCwjMHhlMQorCXZleHQuOAkJJElOLCR0MSwkdDEsIzgKKwl2c2hsLmk2NAkkdDAsJHQwLCM1NworCXZzaHIudTY0CSR0MiwkdDAsIzYzCisJdmV4dC44CQkkdDAsJHQyLCR0MCwjOAkJQCB0MD0weGMyLi4uLjAxCisJdmR1cC4zMgkJJHQxLCR7dDF9WzFdCisJdnNoci51NjQJJHQzLCRJTiwjNjMKKwl2c2hyLnMzMgkkdDEsJHQxLCMzMQkJQCBicm9hZGNhc3QgY2FycnkgYml0CisJdmFuZAkJJHQzLCR0MywkdDAKKwl2c2hsLmk2NAkkSU4sJElOLCMxCisJdmV4dC44CQkkdDMsJHQzLCR0MywjOAorCXZhbmQJCSR0MCwkdDAsJHQxCisJdm9ycgkJJElOLCRJTiwkdDMJCUAgSDw8PD0xCisJdmVvcgkJJElOLCRJTiwkdDAJCUAgdHdpc3RlZCBICisJdnN0MS42NAkJeyRJTn0sW3gwXQorCisJcmV0Cisuc2l6ZQlnY21faW5pdF92OCwuLWdjbV9pbml0X3Y4CisKKy5nbG9iYWwJZ2NtX2dtdWx0X3Y4CisudHlwZQlnY21fZ211bHRfdjgsJWZ1bmN0aW9uCisuYWxpZ24JNAorZ2NtX2dtdWx0X3Y4OgorCXZsZDEuNjQJCXskdDF9LFskWGldCQlAIGxvYWQgWGkKKwl2bW92Lmk4CQkkdDMsIzB4ZTEKKwl2bGQxLjY0CQl7JEh9LFskSHRibF0JCUAgbG9hZCB0d2lzdGVkIEgKKwl2c2hsLnU2NAkkdDMsJHQzLCM1NworI2lmbmRlZiBfX0FSTUVCX18KKwl2cmV2NjQuOAkkdDEsJHQxCisjZW5kaWYKKwl2ZXh0LjgJCSRIaGwsJEgsJEgsIzgKKwltb3YJCSRsZW4sIzAKKwl2ZXh0LjgJCSRJTiwkdDEsJHQxLCM4CisJbW92CQkkaW5jLCMwCisJdmVvcgkJJEhobCwkSGhsLCRICQlAIEthcmF0c3ViYSBwcmUtcHJvY2Vzc2luZworCW1vdgkJJGlucCwkWGkKKwliCQkuTGdtdWx0X3Y4Cisuc2l6ZQlnY21fZ211bHRfdjgsLi1nY21fZ211bHRfdjgKKworLmdsb2JhbAlnY21fZ2hhc2hfdjgKKy50eXBlCWdjbV9naGFzaF92OCwlZnVuY3Rpb24KKy5hbGlnbgk0CitnY21fZ2hhc2hfdjg6CisJdmxkMS42NAkJeyRYbH0sWyRYaV0JCUAgbG9hZCBbcm90YXRlZF0gWGkKKwlzdWJzCQkkbGVuLCRsZW4sIzE2CisJdm1vdi5pOAkJJHQzLCMweGUxCisJbW92CQkkaW5jLCMxNgorCXZsZDEuNjQJCXskSH0sWyRIdGJsXQkJQCBsb2FkIHR3aXN0ZWQgSAorCWNjbHIJCSRpbmMsZXEKKwl2ZXh0LjgJCSRYbCwkWGwsJFhsLCM4CisJdnNobC51NjQJJHQzLCR0MywjNTcKKwl2bGQxLjY0CQl7JHQxfSxbJGlucF0sJGluYwlAIGxvYWQgW3JvdGF0ZWRdIGlucAorCXZleHQuOAkJJEhobCwkSCwkSCwjOAorI2lmbmRlZiBfX0FSTUVCX18KKwl2cmV2NjQuOAkkWGwsJFhsCisJdnJldjY0LjgJJHQxLCR0MQorI2VuZGlmCisJdmVvcgkJJEhobCwkSGhsLCRICQlAIEthcmF0c3ViYSBwcmUtcHJvY2Vzc2luZworCXZleHQuOAkJJElOLCR0MSwkdDEsIzgKKwliCQkuTG9vcF92OAorCisuYWxpZ24JNAorLkxvb3Bfdjg6CisJdmV4dC44CQkkdDIsJFhsLCRYbCwjOAorCXZlb3IJCSRJTiwkSU4sJFhsCQlAIGlucF49WGkKKwl2ZW9yCQkkdDEsJHQxLCR0MgkJQCAkdDEgaXMgcm90YXRlZCBpbnBeWGkKKworLkxnbXVsdF92ODoKKwl2cG11bGwucDY0CSRYbCwkSCwkSU4JCUAgSC5sb8K3WGkubG8KKwl2ZW9yCQkkdDEsJHQxLCRJTgkJQCBLYXJhdHN1YmEgcHJlLXByb2Nlc3NpbmcKKwl2cG11bGwyLnA2NAkkWGgsJEgsJElOCQlAIEguaGnCt1hpLmhpCisJc3VicwkJJGxlbiwkbGVuLCMxNgorCXZwbXVsbC5wNjQJJFhtLCRIaGwsJHQxCQlAIChILmxvK0guaGkpwrcoWGkubG8rWGkuaGkpCisJY2NscgkJJGluYyxlcQorCisJdmV4dC44CQkkdDEsJFhsLCRYaCwjOAkJQCBLYXJhdHN1YmEgcG9zdC1wcm9jZXNzaW5nCisJdmVvcgkJJHQyLCRYbCwkWGgKKwl2ZW9yCQkkWG0sJFhtLCR0MQorCSB2bGQxLjY0CXskdDF9LFskaW5wXSwkaW5jCUAgbG9hZCBbcm90YXRlZF0gaW5wCisJdmVvcgkJJFhtLCRYbSwkdDIKKwl2cG11bGwucDY0CSR0MiwkWGwsJHQzCQlAIDFzdCBwaGFzZQorCisJdm1vdgkJJFhoI2xvLCRYbSNoaQkJQCBYaHxYbSAtIDI1Ni1iaXQgcmVzdWx0CisJdm1vdgkJJFhtI2hpLCRYbCNsbwkJQCBYbSBpcyByb3RhdGVkIFhsCisjaWZuZGVmIF9fQVJNRUJfXworCSB2cmV2NjQuOAkkdDEsJHQxCisjZW5kaWYKKwl2ZW9yCQkkWGwsJFhtLCR0MgorCSB2ZXh0LjgJCSRJTiwkdDEsJHQxLCM4CisKKwl2ZXh0LjgJCSR0MiwkWGwsJFhsLCM4CQlAIDJuZCBwaGFzZQorCXZwbXVsbC5wNjQJJFhsLCRYbCwkdDMKKwl2ZW9yCQkkdDIsJHQyLCRYaAorCXZlb3IJCSRYbCwkWGwsJHQyCisJYi5ocwkJLkxvb3BfdjgKKworI2lmbmRlZiBfX0FSTUVCX18KKwl2cmV2NjQuOAkkWGwsJFhsCisjZW5kaWYKKwl2ZXh0LjgJCSRYbCwkWGwsJFhsLCM4CisJdnN0MS42NAkJeyRYbH0sWyRYaV0JCUAgd3JpdGUgb3V0IFhpCisKKwlyZXQKKy5zaXplCWdjbV9naGFzaF92OCwuLWdjbV9naGFzaF92OAorX19fCit9CiskY29kZS49PDxfX187CisuYXNjaXogICJHSEFTSCBmb3IgQVJNdjgsIENSWVBUT0dBTVMgYnkgPGFwcHJvXEBvcGVuc3NsLm9yZz4iCisuYWxpZ24gIDIKK19fXworCitpZiAoJGZsYXZvdXIgPX4gLzY0LykgewkJCSMjIyMjIyMjIDY0LWJpdCBjb2RlCisgICAgc3ViIHVudm1vdiB7CisJbXkgJGFyZz1zaGlmdDsKKworCSRhcmcgPX4gbS9xKFswLTldKykjKGxvfGhpKSxccypxKFswLTldKykjKGxvfGhpKS9vICYmCisJc3ByaW50ZgkiaW5zCXYlZC5kWyVkXSx2JWQuZFslZF0iLCQxLCgkMiBlcSAibG8iKT8wOjEsJDMsKCQ0IGVxICJsbyIpPzA6MTsKKyAgICB9CisgICAgZm9yZWFjaChzcGxpdCgiXG4iLCRjb2RlKSkgeworCXMvY2NsclxzKyhbd3hdKShbXixdKyksXHMqKFthLXpdKykvY3NlbAkkMSQyLCQxenIsJDEkMiwkMy9vCW9yCisJcy92bW92XC5pOC9tb3ZpL28JCW9yCSMgZml4IHVwIGxlZ2FjeSBtbmVtb25pY3MKKwlzL3Ztb3ZccysoLiopL3Vudm1vdigkMSkvZ2VvCW9yCisJcy92ZXh0XC44L2V4dC9vCQkJb3IKKwlzL3ZzaHJcLnMvc3Noclwucy9vCQlvcgorCXMvdnNoci91c2hyL28JCQlvcgorCXMvXihccyspdi8kMS9vCQkJb3IJIyBzdHJpcCBvZmYgdiBwcmVmaXgKKwlzL1xiYnhccytsclxiL3JldC9vOworCisJcy9cYnEoWzAtOV0rKVxiLyJ2Ii4oJDE8OD8kMTokMSs4KS4iLjE2YiIvZ2VvOwkjIG9sZC0+bmV3IHJlZ2lzdGVycworCXMvQFxzL1wvXC8vbzsJCQkJIyBvbGQtPm5ldyBzdHlsZSBjb21tZW50YXJ5CisKKwkjIGZpeCB1cCByZW1haW5pZyBsZWdhY3kgc3VmZml4ZXMKKwlzL1wuW3VpXT84KFxzKS8kMS9vOworCXMvXC5bdWlzXT8zMi8vbyBhbmQgcy9cLjE2Yi9cLjRzL2dvOworCW0vXC5wNjQvbyBhbmQgcy9cLjE2Yi9cLjFxL287CQkjIDFzdCBwbXVsbCBhcmd1bWVudAorCW0vbFwucDY0L28gYW5kIHMvXC4xNmIvXC4xZC9nbzsJCSMgMm5kIGFuZCAzcmQgcG11bGwgYXJndW1lbnRzCisJcy9cLlt1aXNwXT82NC8vbyBhbmQgcy9cLjE2Yi9cLjJkL2dvOworCXMvXC5bNDJdKFtzZF0pXFsoWzAtM10pXF0vXC4kMVxbJDJcXS9vOworCisJcHJpbnQgJF8sIlxuIjsKKyAgICB9Cit9IGVsc2UgewkJCQkjIyMjIyMjIyAzMi1iaXQgY29kZQorICAgIHN1YiB1bnZkdXAzMiB7CisJbXkgJGFyZz1zaGlmdDsKKworCSRhcmcgPX4gbS9xKFswLTldKyksXHMqcShbMC05XSspXFsoWzAtM10pXF0vbyAmJgorCXNwcmludGYJInZkdXAuMzIJcSVkLGQlZFslZF0iLCQxLDIqJDIrKCQzPj4xKSwkMyYxOworICAgIH0KKyAgICBzdWIgdW52cG11bGxwNjQgeworCW15ICgkbW5lbW9uaWMsJGFyZyk9QF87CisKKwlpZiAoJGFyZyA9fiBtL3EoWzAtOV0rKSxccypxKFswLTldKyksXHMqcShbMC05XSspL28pIHsKKwkgICAgbXkgJHdvcmQgPSAweGYyYTAwZTAwfCgoJDEmNyk8PDEzKXwoKCQxJjgpPDwxOSkKKwkJCQkgfCgoJDImNyk8PDE3KXwoKCQyJjgpPDw0KQorCQkJCSB8KCgkMyY3KTw8MSkgfCgoJDMmOCk8PDIpOworCSAgICAkd29yZCB8PSAweDAwMDEwMDAxCSBpZiAoJG1uZW1vbmljID1+ICIyIik7CisJICAgICMgc2luY2UgQVJNdjcgaW5zdHJ1Y3Rpb25zIGFyZSBhbHdheXMgZW5jb2RlZCBsaXR0bGUtZW5kaWFuLgorCSAgICAjIGNvcnJlY3Qgc29sdXRpb24gaXMgdG8gdXNlIC5pbnN0IGRpcmVjdGl2ZSwgYnV0IG9sZGVyCisJICAgICMgYXNzZW1ibGVycyBkb24ndCBpbXBsZW1lbnQgaXQ6LSgKKwkgICAgc3ByaW50ZiAiLmJ5dGVcdDB4JTAyeCwweCUwMngsMHglMDJ4LDB4JTAyeFx0QCAlcyAlcyIsCisJCQkkd29yZCYweGZmLCgkd29yZD4+OCkmMHhmZiwKKwkJCSgkd29yZD4+MTYpJjB4ZmYsKCR3b3JkPj4yNCkmMHhmZiwKKwkJCSRtbmVtb25pYywkYXJnOworCX0KKyAgICB9CisKKyAgICBmb3JlYWNoKHNwbGl0KCJcbiIsJGNvZGUpKSB7CisJcy9cYlt3eF0oWzAtOV0rKVxiL3IkMS9nbzsJCSMgbmV3LT5vbGQgcmVnaXN0ZXJzCisJcy9cYnYoWzAtOV0pXC5bMTI0NjhdK1tic2RdXGIvcSQxL2dvOwkjIG5ldy0+b2xkIHJlZ2lzdGVycworICAgICAgICBzL1wvXC9ccz8vQCAvbzsJCQkJIyBuZXctPm9sZCBzdHlsZSBjb21tZW50YXJ5CisKKwkjIGZpeCB1cCByZW1haW5pZyBuZXctc3R5bGUgc3VmZml4ZXMKKwlzL1xdLCNbMC05XSsvXSEvbzsKKworCXMvY2NsclxzKyhbXixdKyksXHMqKFthLXpdKykvbW92JDIJJDEsIzAvbwkJCW9yCisJcy92ZHVwXC4zMlxzKyguKikvdW52ZHVwMzIoJDEpL2dlbwkJCQlvcgorCXMvdj8ocG11bGwyPylcLnA2NFxzKyguKikvdW52cG11bGxwNjQoJDEsJDIpL2dlbwkJb3IKKwlzL1xicShbMC05XSspIyhsb3xoaSkvc3ByaW50ZiAiZCVkIiwyKiQxKygkMiBlcSAiaGkiKS9nZW8Jb3IKKwlzL14oXHMrKWJcLi8kMWIvbwkJCQkJCW9yCisJcy9eKFxzKylyZXQvJDFieFx0bHIvbzsKKworICAgICAgICBwcmludCAkXywiXG4iOworICAgIH0KK30KKworY2xvc2UgU1RET1VUOyAjIGVuZm9yY2UgZmx1c2gKZGlmZiAtLWdpdCBhL2NyeXB0by9tb2Rlcy9nY20xMjguYyBiL2NyeXB0by9tb2Rlcy9nY20xMjguYwppbmRleCAyNTAwNjNkLi43OWViYjY2IDEwMDY0NAotLS0gYS9jcnlwdG8vbW9kZXMvZ2NtMTI4LmMKKysrIGIvY3J5cHRvL21vZGVzL2djbTEyOC5jCkBAIC02NDIsNyArNjQyLDcgQEAKIAogI2VuZGlmCiAKLSNpZglUQUJMRV9CSVRTPT00ICYmIGRlZmluZWQoR0hBU0hfQVNNKQorI2lmCVRBQkxFX0JJVFM9PTQgJiYgKGRlZmluZWQoR0hBU0hfQVNNKSB8fCBkZWZpbmVkKE9QRU5TU0xfQ1BVSURfT0JKKSkKICMgaWYJIWRlZmluZWQoSTM4Nl9PTkxZKSAmJiBcCiAJKGRlZmluZWQoX19pMzg2KQl8fCBkZWZpbmVkKF9faTM4Nl9fKQl8fCBcCiAJIGRlZmluZWQoX194ODZfNjQpCXx8IGRlZmluZWQoX194ODZfNjRfXykJfHwgXApAQCAtNjYzLDEzICs2NjMsMjEgQEAKIHZvaWQgZ2NtX2dtdWx0XzRiaXRfeDg2KHU2NCBYaVsyXSxjb25zdCB1MTI4IEh0YWJsZVsxNl0pOwogdm9pZCBnY21fZ2hhc2hfNGJpdF94ODYodTY0IFhpWzJdLGNvbnN0IHUxMjggSHRhYmxlWzE2XSxjb25zdCB1OCAqaW5wLHNpemVfdCBsZW4pOwogIyAgZW5kaWYKLSMgZWxpZiBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19hcm0pCisjIGVsaWYgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fYXJtKSB8fCBkZWZpbmVkKF9fYWFyY2g2NF9fKQogIyAgaW5jbHVkZSAiYXJtX2FyY2guaCIKICMgIGlmIF9fQVJNX0FSQ0hfXz49NwogIyAgIGRlZmluZSBHSEFTSF9BU01fQVJNCiAjICAgZGVmaW5lIEdDTV9GVU5DUkVGXzRCSVQKKyMgICBkZWZpbmUgUE1VTExfQ0FQQUJMRQkoT1BFTlNTTF9hcm1jYXBfUCAmIEFSTVY4X1BNVUxMKQorIyAgIGlmIGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX2FybSkKKyMgICAgZGVmaW5lIE5FT05fQ0FQQUJMRQkoT1BFTlNTTF9hcm1jYXBfUCAmIEFSTVY3X05FT04pCisjICAgZW5kaWYKK3ZvaWQgZ2NtX2luaXRfbmVvbih1MTI4IEh0YWJsZVsxNl0sY29uc3QgdTY0IFhpWzJdKTsKIHZvaWQgZ2NtX2dtdWx0X25lb24odTY0IFhpWzJdLGNvbnN0IHUxMjggSHRhYmxlWzE2XSk7CiB2b2lkIGdjbV9naGFzaF9uZW9uKHU2NCBYaVsyXSxjb25zdCB1MTI4IEh0YWJsZVsxNl0sY29uc3QgdTggKmlucCxzaXplX3QgbGVuKTsKK3ZvaWQgZ2NtX2luaXRfdjgodTEyOCBIdGFibGVbMTZdLGNvbnN0IHU2NCBYaVsyXSk7Cit2b2lkIGdjbV9nbXVsdF92OCh1NjQgWGlbMl0sY29uc3QgdTEyOCBIdGFibGVbMTZdKTsKK3ZvaWQgZ2NtX2doYXNoX3Y4KHU2NCBYaVsyXSxjb25zdCB1MTI4IEh0YWJsZVsxNl0sY29uc3QgdTggKmlucCxzaXplX3QgbGVuKTsKICMgIGVuZGlmCiAjIGVuZGlmCiAjZW5kaWYKQEAgLTczOSwxMCArNzQ3LDIxIEBACiAJY3R4LT5naGFzaCA9IGdjbV9naGFzaF80Yml0OwogIyAgZW5kaWYKICMgZWxpZglkZWZpbmVkKEdIQVNIX0FTTV9BUk0pCi0JaWYgKE9QRU5TU0xfYXJtY2FwX1AgJiBBUk1WN19ORU9OKSB7CisjICBpZmRlZiBQTVVMTF9DQVBBQkxFCisJaWYgKFBNVUxMX0NBUEFCTEUpIHsKKwkJZ2NtX2luaXRfdjgoY3R4LT5IdGFibGUsY3R4LT5ILnUpOworCQljdHgtPmdtdWx0ID0gZ2NtX2dtdWx0X3Y4OworCQljdHgtPmdoYXNoID0gZ2NtX2doYXNoX3Y4OworCX0gZWxzZQorIyAgZW5kaWYKKyMgIGlmZGVmIE5FT05fQ0FQQUJMRQorCWlmIChORU9OX0NBUEFCTEUpIHsKKwkJZ2NtX2luaXRfbmVvbihjdHgtPkh0YWJsZSxjdHgtPkgudSk7CiAJCWN0eC0+Z211bHQgPSBnY21fZ211bHRfbmVvbjsKIAkJY3R4LT5naGFzaCA9IGdjbV9naGFzaF9uZW9uOwotCX0gZWxzZSB7CisJfSBlbHNlCisjICBlbmRpZgorCXsKIAkJZ2NtX2luaXRfNGJpdChjdHgtPkh0YWJsZSxjdHgtPkgudSk7CiAJCWN0eC0+Z211bHQgPSBnY21fZ211bHRfNGJpdDsKIAkJY3R4LT5naGFzaCA9IGdjbV9naGFzaF80Yml0OwpAQCAtODEwLDcgKzgyOSwxMSBAQAogCQlHQ01fTVVMKGN0eCxZaSk7CiAKIAkJaWYgKGlzX2VuZGlhbi5saXR0bGUpCisjaWZkZWYgQlNXQVA0CisJCQljdHIgPSBCU1dBUDQoY3R4LT5ZaS5kWzNdKTsKKyNlbHNlCiAJCQljdHIgPSBHRVRVMzIoY3R4LT5ZaS5jKzEyKTsKKyNlbmRpZgogCQllbHNlCiAJCQljdHIgPSBjdHgtPllpLmRbM107CiAJfQpAQCAtODE4LDcgKzg0MSwxMSBAQAogCSgqY3R4LT5ibG9jaykoY3R4LT5ZaS5jLGN0eC0+RUswLmMsY3R4LT5rZXkpOwogCSsrY3RyOwogCWlmIChpc19lbmRpYW4ubGl0dGxlKQorI2lmZGVmIEJTV0FQNAorCQljdHgtPllpLmRbM10gPSBCU1dBUDQoY3RyKTsKKyNlbHNlCiAJCVBVVFUzMihjdHgtPllpLmMrMTIsY3RyKTsKKyNlbmRpZgogCWVsc2UKIAkJY3R4LT5ZaS5kWzNdID0gY3RyOwogfQpAQCAtOTEzLDcgKzk0MCwxMSBAQAogCX0KIAogCWlmIChpc19lbmRpYW4ubGl0dGxlKQorI2lmZGVmIEJTV0FQNAorCQljdHIgPSBCU1dBUDQoY3R4LT5ZaS5kWzNdKTsKKyNlbHNlCiAJCWN0ciA9IEdFVFUzMihjdHgtPllpLmMrMTIpOworI2VuZGlmCiAJZWxzZQogCQljdHIgPSBjdHgtPllpLmRbM107CiAKQEAgLTk0Nyw3ICs5NzgsMTEgQEAKIAkJCSgqYmxvY2spKGN0eC0+WWkuYyxjdHgtPkVLaS5jLGtleSk7CiAJCQkrK2N0cjsKIAkJCWlmIChpc19lbmRpYW4ubGl0dGxlKQorI2lmZGVmIEJTV0FQNAorCQkJCWN0eC0+WWkuZFszXSA9IEJTV0FQNChjdHIpOworI2Vsc2UKIAkJCQlQVVRVMzIoY3R4LT5ZaS5jKzEyLGN0cik7CisjZW5kaWYKIAkJCWVsc2UKIAkJCQljdHgtPllpLmRbM10gPSBjdHI7CiAJCQlmb3IgKGk9MDsgaTwxNi9zaXplb2Yoc2l6ZV90KTsgKytpKQpAQCAtOTY5LDcgKzEwMDQsMTEgQEAKIAkJCSgqYmxvY2spKGN0eC0+WWkuYyxjdHgtPkVLaS5jLGtleSk7CiAJCQkrK2N0cjsKIAkJCWlmIChpc19lbmRpYW4ubGl0dGxlKQorI2lmZGVmIEJTV0FQNAorCQkJCWN0eC0+WWkuZFszXSA9IEJTV0FQNChjdHIpOworI2Vsc2UKIAkJCQlQVVRVMzIoY3R4LT5ZaS5jKzEyLGN0cik7CisjZW5kaWYKIAkJCWVsc2UKIAkJCQljdHgtPllpLmRbM10gPSBjdHI7CiAJCQlmb3IgKGk9MDsgaTwxNi9zaXplb2Yoc2l6ZV90KTsgKytpKQpAQCAtOTg4LDcgKzEwMjcsMTEgQEAKIAkJCSgqYmxvY2spKGN0eC0+WWkuYyxjdHgtPkVLaS5jLGtleSk7CiAJCQkrK2N0cjsKIAkJCWlmIChpc19lbmRpYW4ubGl0dGxlKQorI2lmZGVmIEJTV0FQNAorCQkJCWN0eC0+WWkuZFszXSA9IEJTV0FQNChjdHIpOworI2Vsc2UKIAkJCQlQVVRVMzIoY3R4LT5ZaS5jKzEyLGN0cik7CisjZW5kaWYKIAkJCWVsc2UKIAkJCQljdHgtPllpLmRbM10gPSBjdHI7CiAJCQlmb3IgKGk9MDsgaTwxNi9zaXplb2Yoc2l6ZV90KTsgKytpKQpAQCAtMTAwNCw3ICsxMDQ3LDExIEBACiAJCQkoKmJsb2NrKShjdHgtPllpLmMsY3R4LT5FS2kuYyxrZXkpOwogCQkJKytjdHI7CiAJCQlpZiAoaXNfZW5kaWFuLmxpdHRsZSkKKyNpZmRlZiBCU1dBUDQKKwkJCQljdHgtPllpLmRbM10gPSBCU1dBUDQoY3RyKTsKKyNlbHNlCiAJCQkJUFVUVTMyKGN0eC0+WWkuYysxMixjdHIpOworI2VuZGlmCiAJCQllbHNlCiAJCQkJY3R4LT5ZaS5kWzNdID0gY3RyOwogCQkJd2hpbGUgKGxlbi0tKSB7CkBAIC0xMDIyLDcgKzEwNjksMTEgQEAKIAkJCSgqYmxvY2spKGN0eC0+WWkuYyxjdHgtPkVLaS5jLGtleSk7CiAJCQkrK2N0cjsKIAkJCWlmIChpc19lbmRpYW4ubGl0dGxlKQorI2lmZGVmIEJTV0FQNAorCQkJCWN0eC0+WWkuZFszXSA9IEJTV0FQNChjdHIpOworI2Vsc2UKIAkJCQlQVVRVMzIoY3R4LT5ZaS5jKzEyLGN0cik7CisjZW5kaWYKIAkJCWVsc2UKIAkJCQljdHgtPllpLmRbM10gPSBjdHI7CiAJCX0KQEAgLTEwNjYsNyArMTExNywxMSBAQAogCX0KIAogCWlmIChpc19lbmRpYW4ubGl0dGxlKQorI2lmZGVmIEJTV0FQNAorCQljdHIgPSBCU1dBUDQoY3R4LT5ZaS5kWzNdKTsKKyNlbHNlCiAJCWN0ciA9IEdFVFUzMihjdHgtPllpLmMrMTIpOworI2VuZGlmCiAJZWxzZQogCQljdHIgPSBjdHgtPllpLmRbM107CiAKQEAgLTExMDMsNyArMTE1OCwxMSBAQAogCQkJKCpibG9jaykoY3R4LT5ZaS5jLGN0eC0+RUtpLmMsa2V5KTsKIAkJCSsrY3RyOwogCQkJaWYgKGlzX2VuZGlhbi5saXR0bGUpCisjaWZkZWYgQlNXQVA0CisJCQkJY3R4LT5ZaS5kWzNdID0gQlNXQVA0KGN0cik7CisjZWxzZQogCQkJCVBVVFUzMihjdHgtPllpLmMrMTIsY3RyKTsKKyNlbmRpZgogCQkJZWxzZQogCQkJCWN0eC0+WWkuZFszXSA9IGN0cjsKIAkJCWZvciAoaT0wOyBpPDE2L3NpemVvZihzaXplX3QpOyArK2kpCkBAIC0xMTIzLDcgKzExODIsMTEgQEAKIAkJCSgqYmxvY2spKGN0eC0+WWkuYyxjdHgtPkVLaS5jLGtleSk7CiAJCQkrK2N0cjsKIAkJCWlmIChpc19lbmRpYW4ubGl0dGxlKQorI2lmZGVmIEJTV0FQNAorCQkJCWN0eC0+WWkuZFszXSA9IEJTV0FQNChjdHIpOworI2Vsc2UKIAkJCQlQVVRVMzIoY3R4LT5ZaS5jKzEyLGN0cik7CisjZW5kaWYKIAkJCWVsc2UKIAkJCQljdHgtPllpLmRbM10gPSBjdHI7CiAJCQlmb3IgKGk9MDsgaTwxNi9zaXplb2Yoc2l6ZV90KTsgKytpKQpAQCAtMTE0MSw3ICsxMjA0LDExIEBACiAJCQkoKmJsb2NrKShjdHgtPllpLmMsY3R4LT5FS2kuYyxrZXkpOwogCQkJKytjdHI7CiAJCQlpZiAoaXNfZW5kaWFuLmxpdHRsZSkKKyNpZmRlZiBCU1dBUDQKKwkJCQljdHgtPllpLmRbM10gPSBCU1dBUDQoY3RyKTsKKyNlbHNlCiAJCQkJUFVUVTMyKGN0eC0+WWkuYysxMixjdHIpOworI2VuZGlmCiAJCQllbHNlCiAJCQkJY3R4LT5ZaS5kWzNdID0gY3RyOwogCQkJZm9yIChpPTA7IGk8MTYvc2l6ZW9mKHNpemVfdCk7ICsraSkgewpAQCAtMTE1OSw3ICsxMjI2LDExIEBACiAJCQkoKmJsb2NrKShjdHgtPllpLmMsY3R4LT5FS2kuYyxrZXkpOwogCQkJKytjdHI7CiAJCQlpZiAoaXNfZW5kaWFuLmxpdHRsZSkKKyNpZmRlZiBCU1dBUDQKKwkJCQljdHgtPllpLmRbM10gPSBCU1dBUDQoY3RyKTsKKyNlbHNlCiAJCQkJUFVUVTMyKGN0eC0+WWkuYysxMixjdHIpOworI2VuZGlmCiAJCQllbHNlCiAJCQkJY3R4LT5ZaS5kWzNdID0gY3RyOwogCQkJd2hpbGUgKGxlbi0tKSB7CkBAIC0xMTgwLDcgKzEyNTEsMTEgQEAKIAkJCSgqYmxvY2spKGN0eC0+WWkuYyxjdHgtPkVLaS5jLGtleSk7CiAJCQkrK2N0cjsKIAkJCWlmIChpc19lbmRpYW4ubGl0dGxlKQorI2lmZGVmIEJTV0FQNAorCQkJCWN0eC0+WWkuZFszXSA9IEJTV0FQNChjdHIpOworI2Vsc2UKIAkJCQlQVVRVMzIoY3R4LT5ZaS5jKzEyLGN0cik7CisjZW5kaWYKIAkJCWVsc2UKIAkJCQljdHgtPllpLmRbM10gPSBjdHI7CiAJCX0KQEAgLTEyMjUsNyArMTMwMCwxMSBAQAogCX0KIAogCWlmIChpc19lbmRpYW4ubGl0dGxlKQorI2lmZGVmIEJTV0FQNAorCQljdHIgPSBCU1dBUDQoY3R4LT5ZaS5kWzNdKTsKKyNlbHNlCiAJCWN0ciA9IEdFVFUzMihjdHgtPllpLmMrMTIpOworI2VuZGlmCiAJZWxzZQogCQljdHIgPSBjdHgtPllpLmRbM107CiAKQEAgLTEyNDcsNyArMTMyNiwxMSBAQAogCQkoKnN0cmVhbSkoaW4sb3V0LEdIQVNIX0NIVU5LLzE2LGtleSxjdHgtPllpLmMpOwogCQljdHIgKz0gR0hBU0hfQ0hVTksvMTY7CiAJCWlmIChpc19lbmRpYW4ubGl0dGxlKQorI2lmZGVmIEJTV0FQNAorCQkJY3R4LT5ZaS5kWzNdID0gQlNXQVA0KGN0cik7CisjZWxzZQogCQkJUFVUVTMyKGN0eC0+WWkuYysxMixjdHIpOworI2VuZGlmCiAJCWVsc2UKIAkJCWN0eC0+WWkuZFszXSA9IGN0cjsKIAkJR0hBU0goY3R4LG91dCxHSEFTSF9DSFVOSyk7CkBAIC0xMjYyLDcgKzEzNDUsMTEgQEAKIAkJKCpzdHJlYW0pKGluLG91dCxqLGtleSxjdHgtPllpLmMpOwogCQljdHIgKz0gKHVuc2lnbmVkIGludClqOwogCQlpZiAoaXNfZW5kaWFuLmxpdHRsZSkKKyNpZmRlZiBCU1dBUDQKKwkJCWN0eC0+WWkuZFszXSA9IEJTV0FQNChjdHIpOworI2Vsc2UKIAkJCVBVVFUzMihjdHgtPllpLmMrMTIsY3RyKTsKKyNlbmRpZgogCQllbHNlCiAJCQljdHgtPllpLmRbM10gPSBjdHI7CiAJCWluICArPSBpOwpAQCAtMTI4Miw3ICsxMzY5LDExIEBACiAJCSgqY3R4LT5ibG9jaykoY3R4LT5ZaS5jLGN0eC0+RUtpLmMsa2V5KTsKIAkJKytjdHI7CiAJCWlmIChpc19lbmRpYW4ubGl0dGxlKQorI2lmZGVmIEJTV0FQNAorCQkJY3R4LT5ZaS5kWzNdID0gQlNXQVA0KGN0cik7CisjZWxzZQogCQkJUFVUVTMyKGN0eC0+WWkuYysxMixjdHIpOworI2VuZGlmCiAJCWVsc2UKIAkJCWN0eC0+WWkuZFszXSA9IGN0cjsKIAkJd2hpbGUgKGxlbi0tKSB7CkBAIC0xMzI0LDcgKzE0MTUsMTEgQEAKIAl9CiAKIAlpZiAoaXNfZW5kaWFuLmxpdHRsZSkKKyNpZmRlZiBCU1dBUDQKKwkJY3RyID0gQlNXQVA0KGN0eC0+WWkuZFszXSk7CisjZWxzZQogCQljdHIgPSBHRVRVMzIoY3R4LT5ZaS5jKzEyKTsKKyNlbmRpZgogCWVsc2UKIAkJY3RyID0gY3R4LT5ZaS5kWzNdOwogCkBAIC0xMzQ5LDcgKzE0NDQsMTEgQEAKIAkJKCpzdHJlYW0pKGluLG91dCxHSEFTSF9DSFVOSy8xNixrZXksY3R4LT5ZaS5jKTsKIAkJY3RyICs9IEdIQVNIX0NIVU5LLzE2OwogCQlpZiAoaXNfZW5kaWFuLmxpdHRsZSkKKyNpZmRlZiBCU1dBUDQKKwkJCWN0eC0+WWkuZFszXSA9IEJTV0FQNChjdHIpOworI2Vsc2UKIAkJCVBVVFUzMihjdHgtPllpLmMrMTIsY3RyKTsKKyNlbmRpZgogCQllbHNlCiAJCQljdHgtPllpLmRbM10gPSBjdHI7CiAJCW91dCArPSBHSEFTSF9DSFVOSzsKQEAgLTEzNzUsNyArMTQ3NCwxMSBAQAogCQkoKnN0cmVhbSkoaW4sb3V0LGosa2V5LGN0eC0+WWkuYyk7CiAJCWN0ciArPSAodW5zaWduZWQgaW50KWo7CiAJCWlmIChpc19lbmRpYW4ubGl0dGxlKQorI2lmZGVmIEJTV0FQNAorCQkJY3R4LT5ZaS5kWzNdID0gQlNXQVA0KGN0cik7CisjZWxzZQogCQkJUFVUVTMyKGN0eC0+WWkuYysxMixjdHIpOworI2VuZGlmCiAJCWVsc2UKIAkJCWN0eC0+WWkuZFszXSA9IGN0cjsKIAkJb3V0ICs9IGk7CkBAIC0xMzg2LDcgKzE0ODksMTEgQEAKIAkJKCpjdHgtPmJsb2NrKShjdHgtPllpLmMsY3R4LT5FS2kuYyxrZXkpOwogCQkrK2N0cjsKIAkJaWYgKGlzX2VuZGlhbi5saXR0bGUpCisjaWZkZWYgQlNXQVA0CisJCQljdHgtPllpLmRbM10gPSBCU1dBUDQoY3RyKTsKKyNlbHNlCiAJCQlQVVRVMzIoY3R4LT5ZaS5jKzEyLGN0cik7CisjZW5kaWYKIAkJZWxzZQogCQkJY3R4LT5ZaS5kWzNdID0gY3RyOwogCQl3aGlsZSAobGVuLS0pIHsKZGlmZiAtLWdpdCBhL2NyeXB0by9vY3NwL29jc3AuaCBiL2NyeXB0by9vY3NwL29jc3AuaAppbmRleCAzMWU0NTc0Li5mMTRlOWY3IDEwMDY0NAotLS0gYS9jcnlwdG8vb2NzcC9vY3NwLmgKKysrIGIvY3J5cHRvL29jc3Avb2NzcC5oCkBAIC05MCw2ICs5MCwxMyBAQAogI2RlZmluZSBPQ1NQX1JFU1BJRF9LRVkJCQkweDQwMAogI2RlZmluZSBPQ1NQX05PVElNRQkJCTB4ODAwCiAKKyNpZmRlZiBPUEVOU1NMX1NZU19XSU4zMgorICAvKiBVbmRlciBXaW4zMiB0aGVzZSBhcmUgZGVmaW5lZCBpbiB3aW5jcnlwdC5oICovCisjdW5kZWYgT0NTUF9SRVFVRVNUCisjdW5kZWYgWDUwOV9OQU1FCisjdW5kZWYgT0NTUF9SRVNQT05TRQorI2VuZGlmCisKIC8qICAgQ2VydElEIDo6PSBTRVFVRU5DRSB7CiAgKiAgICAgICBoYXNoQWxnb3JpdGhtICAgICAgICAgICAgQWxnb3JpdGhtSWRlbnRpZmllciwKICAqICAgICAgIGlzc3Vlck5hbWVIYXNoICAgICBPQ1RFVCBTVFJJTkcsIC0tIEhhc2ggb2YgSXNzdWVyJ3MgRE4KZGlmZiAtLWdpdCBhL2NyeXB0by9vcGVuc3NsY29uZi0zMi5oIGIvY3J5cHRvL29wZW5zc2xjb25mLTMyLmgKaW5kZXggZDY2MjU0OC4uY2FmNmYxYiAxMDA2NDQKLS0tIGEvY3J5cHRvL29wZW5zc2xjb25mLTMyLmgKKysrIGIvY3J5cHRvL29wZW5zc2xjb25mLTMyLmgKQEAgLTUzLDYgKzUzLDkgQEAKICNpZm5kZWYgT1BFTlNTTF9OT19SRkMzNzc5CiAjIGRlZmluZSBPUEVOU1NMX05PX1JGQzM3NzkKICNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1JJUEVNRAorIyBkZWZpbmUgT1BFTlNTTF9OT19SSVBFTUQKKyNlbmRpZgogI2lmbmRlZiBPUEVOU1NMX05PX1JTQVgKICMgZGVmaW5lIE9QRU5TU0xfTk9fUlNBWAogI2VuZGlmCkBAIC0xMzcsNiArMTQwLDkgQEAKICMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1JGQzM3NzkpICYmICFkZWZpbmVkKE5PX1JGQzM3NzkpCiAjICBkZWZpbmUgTk9fUkZDMzc3OQogIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fUklQRU1EKSAmJiAhZGVmaW5lZChOT19SSVBFTUQpCisjICBkZWZpbmUgTk9fUklQRU1ECisjIGVuZGlmCiAjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19SU0FYKSAmJiAhZGVmaW5lZChOT19SU0FYKQogIyAgZGVmaW5lIE5PX1JTQVgKICMgZW5kaWYKZGlmZiAtLWdpdCBhL2NyeXB0by9vcGVuc3NsY29uZi02NC5oIGIvY3J5cHRvL29wZW5zc2xjb25mLTY0LmgKaW5kZXggNzBjNWEyYy4uODhmYjA0MSAxMDA2NDQKLS0tIGEvY3J5cHRvL29wZW5zc2xjb25mLTY0LmgKKysrIGIvY3J5cHRvL29wZW5zc2xjb25mLTY0LmgKQEAgLTUzLDYgKzUzLDkgQEAKICNpZm5kZWYgT1BFTlNTTF9OT19SRkMzNzc5CiAjIGRlZmluZSBPUEVOU1NMX05PX1JGQzM3NzkKICNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1JJUEVNRAorIyBkZWZpbmUgT1BFTlNTTF9OT19SSVBFTUQKKyNlbmRpZgogI2lmbmRlZiBPUEVOU1NMX05PX1JTQVgKICMgZGVmaW5lIE9QRU5TU0xfTk9fUlNBWAogI2VuZGlmCkBAIC0xMzcsNiArMTQwLDkgQEAKICMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1JGQzM3NzkpICYmICFkZWZpbmVkKE5PX1JGQzM3NzkpCiAjICBkZWZpbmUgTk9fUkZDMzc3OQogIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fUklQRU1EKSAmJiAhZGVmaW5lZChOT19SSVBFTUQpCisjICBkZWZpbmUgTk9fUklQRU1ECisjIGVuZGlmCiAjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19SU0FYKSAmJiAhZGVmaW5lZChOT19SU0FYKQogIyAgZGVmaW5lIE5PX1JTQVgKICMgZW5kaWYKZGlmZiAtLWdpdCBhL2NyeXB0by9vcGVuc3NsY29uZi1zdGF0aWMtMzIuaCBiL2NyeXB0by9vcGVuc3NsY29uZi1zdGF0aWMtMzIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYWY2ZjFiCi0tLSAvZGV2L251bGwKKysrIGIvY3J5cHRvL29wZW5zc2xjb25mLXN0YXRpYy0zMi5oCkBAIC0wLDAgKzEsMzIyIEBACisvKiBvcGVuc3NsY29uZi5oICovCisvKiBXQVJOSU5HOiBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBmcm9tIG9wZW5zc2xjb25mLmguaW4gYnkgQ29uZmlndXJlLiAqLworCisvKiBPcGVuU1NMIHdhcyBjb25maWd1cmVkIHdpdGggdGhlIGZvbGxvd2luZyBvcHRpb25zOiAqLworI2lmbmRlZiBPUEVOU1NMX0RPSU5HX01BS0VERVBFTkQKKworCisjaWZuZGVmIE9QRU5TU0xfTk9fQ0FNRUxMSUEKKyMgZGVmaW5lIE9QRU5TU0xfTk9fQ0FNRUxMSUEKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX0NBUElFTkcKKyMgZGVmaW5lIE9QRU5TU0xfTk9fQ0FQSUVORworI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fQ0FTVAorIyBkZWZpbmUgT1BFTlNTTF9OT19DQVNUCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19EVExTMQorIyBkZWZpbmUgT1BFTlNTTF9OT19EVExTMQorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fRUNfTklTVFBfNjRfR0NDXzEyOAorIyBkZWZpbmUgT1BFTlNTTF9OT19FQ19OSVNUUF82NF9HQ0NfMTI4CisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19HTVAKKyMgZGVmaW5lIE9QRU5TU0xfTk9fR01QCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19HT1NUCisjIGRlZmluZSBPUEVOU1NMX05PX0dPU1QKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX0hFQVJUQkVBVFMKKyMgZGVmaW5lIE9QRU5TU0xfTk9fSEVBUlRCRUFUUworI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fSURFQQorIyBkZWZpbmUgT1BFTlNTTF9OT19JREVBCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19KUEFLRQorIyBkZWZpbmUgT1BFTlNTTF9OT19KUEFLRQorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fS1JCNQorIyBkZWZpbmUgT1BFTlNTTF9OT19LUkI1CisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19NRDIKKyMgZGVmaW5lIE9QRU5TU0xfTk9fTUQyCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19NREMyCisjIGRlZmluZSBPUEVOU1NMX05PX01EQzIKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1JDNQorIyBkZWZpbmUgT1BFTlNTTF9OT19SQzUKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1JEUkFORAorIyBkZWZpbmUgT1BFTlNTTF9OT19SRFJBTkQKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1JGQzM3NzkKKyMgZGVmaW5lIE9QRU5TU0xfTk9fUkZDMzc3OQorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fUklQRU1ECisjIGRlZmluZSBPUEVOU1NMX05PX1JJUEVNRAorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fUlNBWAorIyBkZWZpbmUgT1BFTlNTTF9OT19SU0FYCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19TQ1RQCisjIGRlZmluZSBPUEVOU1NMX05PX1NDVFAKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1NFRUQKKyMgZGVmaW5lIE9QRU5TU0xfTk9fU0VFRAorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fU0hBMAorIyBkZWZpbmUgT1BFTlNTTF9OT19TSEEwCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19TVEFUSUNfRU5HSU5FCisjIGRlZmluZSBPUEVOU1NMX05PX1NUQVRJQ19FTkdJTkUKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1NUT1JFCisjIGRlZmluZSBPUEVOU1NMX05PX1NUT1JFCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19XSElSTFBPT0wKKyMgZGVmaW5lIE9QRU5TU0xfTk9fV0hJUkxQT09MCisjZW5kaWYKKworI2VuZGlmIC8qIE9QRU5TU0xfRE9JTkdfTUFLRURFUEVORCAqLworCisjaWZuZGVmIE9QRU5TU0xfVEhSRUFEUworIyBkZWZpbmUgT1BFTlNTTF9USFJFQURTCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19EWU5BTUlDX0VOR0lORQorIyBkZWZpbmUgT1BFTlNTTF9OT19EWU5BTUlDX0VOR0lORQorI2VuZGlmCisKKy8qIFRoZSBPUEVOU1NMX05PXyogbWFjcm9zIGFyZSBhbHNvIGRlZmluZWQgYXMgTk9fKiBpZiB0aGUgYXBwbGljYXRpb24KKyAgIGFza3MgZm9yIGl0LiAgVGhpcyBpcyBhIHRyYW5zaWVudCBmZWF0dXJlIHRoYXQgaXMgcHJvdmlkZWQgZm9yIHRob3NlCisgICB3aG8gaGF2ZW4ndCBoYWQgdGhlIHRpbWUgdG8gZG8gdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgaW4gdGhlaXIKKyAgIGFwcGxpY2F0aW9ucy4gICovCisjaWZkZWYgT1BFTlNTTF9BTEdPUklUSE1fREVGSU5FUworIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fQ0FNRUxMSUEpICYmICFkZWZpbmVkKE5PX0NBTUVMTElBKQorIyAgZGVmaW5lIE5PX0NBTUVMTElBCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19DQVBJRU5HKSAmJiAhZGVmaW5lZChOT19DQVBJRU5HKQorIyAgZGVmaW5lIE5PX0NBUElFTkcKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX0NBU1QpICYmICFkZWZpbmVkKE5PX0NBU1QpCisjICBkZWZpbmUgTk9fQ0FTVAorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fRFRMUzEpICYmICFkZWZpbmVkKE5PX0RUTFMxKQorIyAgZGVmaW5lIE5PX0RUTFMxCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19FQ19OSVNUUF82NF9HQ0NfMTI4KSAmJiAhZGVmaW5lZChOT19FQ19OSVNUUF82NF9HQ0NfMTI4KQorIyAgZGVmaW5lIE5PX0VDX05JU1RQXzY0X0dDQ18xMjgKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX0dNUCkgJiYgIWRlZmluZWQoTk9fR01QKQorIyAgZGVmaW5lIE5PX0dNUAorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fR09TVCkgJiYgIWRlZmluZWQoTk9fR09TVCkKKyMgIGRlZmluZSBOT19HT1NUCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19IRUFSVEJFQVRTKSAmJiAhZGVmaW5lZChOT19IRUFSVEJFQVRTKQorIyAgZGVmaW5lIE5PX0hFQVJUQkVBVFMKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX0lERUEpICYmICFkZWZpbmVkKE5PX0lERUEpCisjICBkZWZpbmUgTk9fSURFQQorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fSlBBS0UpICYmICFkZWZpbmVkKE5PX0pQQUtFKQorIyAgZGVmaW5lIE5PX0pQQUtFCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19LUkI1KSAmJiAhZGVmaW5lZChOT19LUkI1KQorIyAgZGVmaW5lIE5PX0tSQjUKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX01EMikgJiYgIWRlZmluZWQoTk9fTUQyKQorIyAgZGVmaW5lIE5PX01EMgorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fTURDMikgJiYgIWRlZmluZWQoTk9fTURDMikKKyMgIGRlZmluZSBOT19NREMyCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19SQzUpICYmICFkZWZpbmVkKE5PX1JDNSkKKyMgIGRlZmluZSBOT19SQzUKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1JEUkFORCkgJiYgIWRlZmluZWQoTk9fUkRSQU5EKQorIyAgZGVmaW5lIE5PX1JEUkFORAorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fUkZDMzc3OSkgJiYgIWRlZmluZWQoTk9fUkZDMzc3OSkKKyMgIGRlZmluZSBOT19SRkMzNzc5CisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19SSVBFTUQpICYmICFkZWZpbmVkKE5PX1JJUEVNRCkKKyMgIGRlZmluZSBOT19SSVBFTUQKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1JTQVgpICYmICFkZWZpbmVkKE5PX1JTQVgpCisjICBkZWZpbmUgTk9fUlNBWAorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fU0NUUCkgJiYgIWRlZmluZWQoTk9fU0NUUCkKKyMgIGRlZmluZSBOT19TQ1RQCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19TRUVEKSAmJiAhZGVmaW5lZChOT19TRUVEKQorIyAgZGVmaW5lIE5PX1NFRUQKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1NIQTApICYmICFkZWZpbmVkKE5PX1NIQTApCisjICBkZWZpbmUgTk9fU0hBMAorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fU1RBVElDX0VOR0lORSkgJiYgIWRlZmluZWQoTk9fU1RBVElDX0VOR0lORSkKKyMgIGRlZmluZSBOT19TVEFUSUNfRU5HSU5FCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19TVE9SRSkgJiYgIWRlZmluZWQoTk9fU1RPUkUpCisjICBkZWZpbmUgTk9fU1RPUkUKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1dISVJMUE9PTCkgJiYgIWRlZmluZWQoTk9fV0hJUkxQT09MKQorIyAgZGVmaW5lIE5PX1dISVJMUE9PTAorIyBlbmRpZgorI2VuZGlmCisKKy8qIGNyeXB0by9vcGVuc3NsY29uZi5oLmluICovCisKKy8qIEdlbmVyYXRlIDgwMzg2IGNvZGU/ICovCisjdW5kZWYgSTM4Nl9PTkxZCisKKyNpZiAhKGRlZmluZWQoVk1TKSB8fCBkZWZpbmVkKF9fVk1TKSkgLyogVk1TIHVzZXMgbG9naWNhbCBuYW1lcyBpbnN0ZWFkICovCisjaWYgZGVmaW5lZChIRUFERVJfQ1JZUFRMSUJfSCkgJiYgIWRlZmluZWQoT1BFTlNTTERJUikKKyNkZWZpbmUgRU5HSU5FU0RJUiAiL3Vzci9sb2NhbC9zc2wvbGliL2VuZ2luZXMiCisjZGVmaW5lIE9QRU5TU0xESVIgIi91c3IvbG9jYWwvc3NsIgorI2VuZGlmCisjZW5kaWYKKworI3VuZGVmIE9QRU5TU0xfVU5JU1RECisjZGVmaW5lIE9QRU5TU0xfVU5JU1REIDx1bmlzdGQuaD4KKworI3VuZGVmIE9QRU5TU0xfRVhQT1JUX1ZBUl9BU19GVU5DVElPTgorCisjaWYgZGVmaW5lZChIRUFERVJfSURFQV9IKSAmJiAhZGVmaW5lZChJREVBX0lOVCkKKyNkZWZpbmUgSURFQV9JTlQgdW5zaWduZWQgaW50CisjZW5kaWYKKworI2lmIGRlZmluZWQoSEVBREVSX01EMl9IKSAmJiAhZGVmaW5lZChNRDJfSU5UKQorI2RlZmluZSBNRDJfSU5UIHVuc2lnbmVkIGludAorI2VuZGlmCisKKyNpZiBkZWZpbmVkKEhFQURFUl9SQzJfSCkgJiYgIWRlZmluZWQoUkMyX0lOVCkKKy8qIEkgbmVlZCB0byBwdXQgaW4gYSBtb2QgZm9yIHRoZSBhbHBoYSAtIGVheSAqLworI2RlZmluZSBSQzJfSU5UIHVuc2lnbmVkIGludAorI2VuZGlmCisKKyNpZiBkZWZpbmVkKEhFQURFUl9SQzRfSCkKKyNpZiAhZGVmaW5lZChSQzRfSU5UKQorLyogdXNpbmcgaW50IHR5cGVzIG1ha2UgdGhlIHN0cnVjdHVyZSBsYXJnZXIgYnV0IG1ha2UgdGhlIGNvZGUgZmFzdGVyCisgKiBvbiBtb3N0IGJveGVzIEkgaGF2ZSB0ZXN0ZWQgLSB1cCB0byAlMjAgZmFzdGVyLiAqLworLyoKKyAqIEkgZG9uJ3Qga25vdyB3aGF0IGRvZXMgIm1vc3QiIG1lYW4sIGJ1dCBkZWNsYXJpbmcgImludCIgaXMgYSBtdXN0IG9uOgorICogLSBJbnRlbCBQNiBiZWNhdXNlIHBhcnRpYWwgcmVnaXN0ZXIgc3RhbGxzIGFyZSB2ZXJ5IGV4cGVuc2l2ZTsKKyAqIC0gZWxkZXIgQWxwaGEgYmVjYXVzZSBpdCBsYWNrcyBieXRlIGxvYWQvc3RvcmUgaW5zdHJ1Y3Rpb25zOworICovCisjZGVmaW5lIFJDNF9JTlQgdW5zaWduZWQgY2hhcgorI2VuZGlmCisjaWYgIWRlZmluZWQoUkM0X0NIVU5LKQorLyoKKyAqIFRoaXMgZW5hYmxlcyBjb2RlIGhhbmRsaW5nIGRhdGEgYWxpZ25lZCBhdCBuYXR1cmFsIENQVSB3b3JkCisgKiBib3VuZGFyeS4gU2VlIGNyeXB0by9yYzQvcmM0X2VuYy5jIGZvciBmdXJ0aGVyIGRldGFpbHMuCisgKi8KKyNkZWZpbmUgUkM0X0NIVU5LIHVuc2lnbmVkIGxvbmcKKyNlbmRpZgorI2VuZGlmCisKKyNpZiAoZGVmaW5lZChIRUFERVJfTkVXX0RFU19IKSB8fCBkZWZpbmVkKEhFQURFUl9ERVNfSCkpICYmICFkZWZpbmVkKERFU19MT05HKQorLyogSWYgdGhpcyBpcyBzZXQgdG8gJ3Vuc2lnbmVkIGludCcgb24gYSBERUMgQWxwaGEsIHRoaXMgZ2l2ZXMgYWJvdXQgYQorICogJTIwIHNwZWVkIHVwIChsb25ncyBhcmUgOCBieXRlcywgaW50J3MgYXJlIDQpLiAqLworI2lmbmRlZiBERVNfTE9ORworI2RlZmluZSBERVNfTE9ORyB1bnNpZ25lZCBpbnQKKyNlbmRpZgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKEhFQURFUl9CTl9IKSAmJiAhZGVmaW5lZChDT05GSUdfSEVBREVSX0JOX0gpCisjZGVmaW5lIENPTkZJR19IRUFERVJfQk5fSAorI2RlZmluZSBCTl9MTE9ORworCisvKiBTaG91bGQgd2UgZGVmaW5lIEJOX0RJVjJXIGhlcmU/ICovCisKKy8qIE9ubHkgb25lIGZvciB0aGUgZm9sbG93aW5nIHNob3VsZCBiZSBkZWZpbmVkICovCisjdW5kZWYgU0lYVFlfRk9VUl9CSVRfTE9ORworI3VuZGVmIFNJWFRZX0ZPVVJfQklUCisjZGVmaW5lIFRISVJUWV9UV09fQklUCisjZW5kaWYKKworI2lmIGRlZmluZWQoSEVBREVSX1JDNF9MT0NMX0gpICYmICFkZWZpbmVkKENPTkZJR19IRUFERVJfUkM0X0xPQ0xfSCkKKyNkZWZpbmUgQ09ORklHX0hFQURFUl9SQzRfTE9DTF9ICisvKiBpZiB0aGlzIGlzIGRlZmluZWQgZGF0YVtpXSBpcyB1c2VkIGluc3RlYWQgb2YgKmRhdGEsIHRoaXMgaXMgYSAlMjAKKyAqIHNwZWVkdXAgb24geDg2ICovCisjdW5kZWYgUkM0X0lOREVYCisjZW5kaWYKKworI2lmIGRlZmluZWQoSEVBREVSX0JGX0xPQ0xfSCkgJiYgIWRlZmluZWQoQ09ORklHX0hFQURFUl9CRl9MT0NMX0gpCisjZGVmaW5lIENPTkZJR19IRUFERVJfQkZfTE9DTF9ICisjZGVmaW5lIEJGX1BUUgorI2VuZGlmIC8qIEhFQURFUl9CRl9MT0NMX0ggKi8KKworI2lmIGRlZmluZWQoSEVBREVSX0RFU19MT0NMX0gpICYmICFkZWZpbmVkKENPTkZJR19IRUFERVJfREVTX0xPQ0xfSCkKKyNkZWZpbmUgQ09ORklHX0hFQURFUl9ERVNfTE9DTF9ICisjaWZuZGVmIERFU19ERUZBVUxUX09QVElPTlMKKy8qIHRoZSBmb2xsb3dpbmcgaXMgdHdlYWtlZCBmcm9tIGEgY29uZmlnIHNjcmlwdCwgdGhhdCBpcyB3aHkgaXQgaXMgYQorICogcHJvdGVjdGVkIHVuZGVmL2RlZmluZSAqLworI2lmbmRlZiBERVNfUFRSCisjdW5kZWYgREVTX1BUUgorI2VuZGlmCisKKy8qIFRoaXMgaGVscHMgQyBjb21waWxlciBnZW5lcmF0ZSB0aGUgY29ycmVjdCBjb2RlIGZvciBtdWx0aXBsZSBmdW5jdGlvbmFsCisgKiB1bml0cy4gIEl0IHJlZHVjZXMgcmVnaXN0ZXIgZGVwZW5kYW5jaWVzIGF0IHRoZSBleHBlbnNlIG9mIDIgbW9yZQorICogcmVnaXN0ZXJzICovCisjaWZuZGVmIERFU19SSVNDMQorI3VuZGVmIERFU19SSVNDMQorI2VuZGlmCisKKyNpZm5kZWYgREVTX1JJU0MyCisjdW5kZWYgREVTX1JJU0MyCisjZW5kaWYKKworI2lmIGRlZmluZWQoREVTX1JJU0MxKSAmJiBkZWZpbmVkKERFU19SSVNDMikKK1lPVSBTSE9VTEQgTk9UIEhBVkUgQk9USCBERVNfUklTQzEgQU5EIERFU19SSVNDMiBERUZJTkVEISEhISEKKyNlbmRpZgorCisvKiBVbnJvbGwgdGhlIGlubmVyIGxvb3AsIHRoaXMgc29tZXRpbWVzIGhlbHBzLCBzb21ldGltZXMgaGluZGVycy4KKyAqIFZlcnkgbXVjeSBDUFUgZGVwZW5kYW50ICovCisjaWZuZGVmIERFU19VTlJPTEwKKyNkZWZpbmUgREVTX1VOUk9MTAorI2VuZGlmCisKKy8qIFRoZXNlIGRlZmF1bHQgdmFsdWVzIHdlcmUgc3VwcGxpZWQgYnkKKyAqIFBldGVyIEd1dG1hbiA8cGd1dDAwMUBjcy5hdWNrbGFuZC5hYy5uej4KKyAqIFRoZXkgYXJlIG9ubHkgdXNlZCBpZiBub3RoaW5nIGVsc2UgaGFzIGJlZW4gZGVmaW5lZCAqLworI2lmICFkZWZpbmVkKERFU19QVFIpICYmICFkZWZpbmVkKERFU19SSVNDMSkgJiYgIWRlZmluZWQoREVTX1JJU0MyKSAmJiAhZGVmaW5lZChERVNfVU5ST0xMKQorLyogU3BlY2lhbCBkZWZpbmVzIHdoaWNoIGNoYW5nZSB0aGUgd2F5IHRoZSBjb2RlIGlzIGJ1aWx0IGRlcGVuZGluZyBvbiB0aGUKKyAgIENQVSBhbmQgT1MuICBGb3IgU0dJIG1hY2hpbmVzIHlvdSBjYW4gdXNlIF9NSVBTX1NaTE9ORyAoMzIgb3IgNjQpIHRvIGZpbmQKKyAgIGV2ZW4gbmV3ZXIgTUlQUyBDUFUncywgYnV0IGF0IHRoZSBtb21lbnQgb25lIHNpemUgZml0cyBhbGwgZm9yCisgICBvcHRpbWl6YXRpb24gb3B0aW9ucy4gIE9sZGVyIFNwYXJjJ3Mgd29yayBiZXR0ZXIgd2l0aCBvbmx5IFVOUk9MTCwgYnV0CisgICB0aGVyZSdzIG5vIHdheSB0byB0ZWxsIGF0IGNvbXBpbGUgdGltZSB3aGF0IGl0IGlzIHlvdSdyZSBydW5uaW5nIG9uICovCisgCisjaWYgZGVmaW5lZCggc3VuICkJCS8qIE5ld2VyIFNwYXJjJ3MgKi8KKyMgIGRlZmluZSBERVNfUFRSCisjICBkZWZpbmUgREVTX1JJU0MxCisjICBkZWZpbmUgREVTX1VOUk9MTAorI2VsaWYgZGVmaW5lZCggX191bHRyaXggKQkvKiBPbGRlciBNSVBTICovCisjICBkZWZpbmUgREVTX1BUUgorIyAgZGVmaW5lIERFU19SSVNDMgorIyAgZGVmaW5lIERFU19VTlJPTEwKKyNlbGlmIGRlZmluZWQoIF9fb3NmMV9fICkJLyogQWxwaGEgKi8KKyMgIGRlZmluZSBERVNfUFRSCisjICBkZWZpbmUgREVTX1JJU0MyCisjZWxpZiBkZWZpbmVkICggX0FJWCApCQkvKiBSUzYwMDAgKi8KKyAgLyogVW5rbm93biAqLworI2VsaWYgZGVmaW5lZCggX19ocHV4ICkJCS8qIEhQLVBBICovCisgIC8qIFVua25vd24gKi8KKyNlbGlmIGRlZmluZWQoIF9fYXV4ICkJCS8qIDY4SyAqLworICAvKiBVbmtub3duICovCisjZWxpZiBkZWZpbmVkKCBfX2RndXggKQkJLyogODhLIChidXQgUDYgaW4gbGF0ZXN0IGJveGVzKSAqLworIyAgZGVmaW5lIERFU19VTlJPTEwKKyNlbGlmIGRlZmluZWQoIF9fc2dpICkJCS8qIE5ld2VyIE1JUFMgKi8KKyMgIGRlZmluZSBERVNfUFRSCisjICBkZWZpbmUgREVTX1JJU0MyCisjICBkZWZpbmUgREVTX1VOUk9MTAorI2VsaWYgZGVmaW5lZChpMzg2KSB8fCBkZWZpbmVkKF9faTM4Nl9fKQkvKiB4ODYgYm94ZXMsIHNob3VsZCBiZSBnY2MgKi8KKyMgIGRlZmluZSBERVNfUFRSCisjICBkZWZpbmUgREVTX1JJU0MxCisjICBkZWZpbmUgREVTX1VOUk9MTAorI2VuZGlmIC8qIFN5c3RlbXMtc3BlY2lmaWMgc3BlZWQgZGVmaW5lcyAqLworI2VuZGlmCisKKyNlbmRpZiAvKiBERVNfREVGQVVMVF9PUFRJT05TICovCisjZW5kaWYgLyogSEVBREVSX0RFU19MT0NMX0ggKi8KZGlmZiAtLWdpdCBhL2NyeXB0by9vcGVuc3NsY29uZi1zdGF0aWMtNjQuaCBiL2NyeXB0by9vcGVuc3NsY29uZi1zdGF0aWMtNjQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OGZiMDQxCi0tLSAvZGV2L251bGwKKysrIGIvY3J5cHRvL29wZW5zc2xjb25mLXN0YXRpYy02NC5oCkBAIC0wLDAgKzEsMzIyIEBACisvKiBvcGVuc3NsY29uZi5oICovCisvKiBXQVJOSU5HOiBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBmcm9tIG9wZW5zc2xjb25mLmguaW4gYnkgQ29uZmlndXJlLiAqLworCisvKiBPcGVuU1NMIHdhcyBjb25maWd1cmVkIHdpdGggdGhlIGZvbGxvd2luZyBvcHRpb25zOiAqLworI2lmbmRlZiBPUEVOU1NMX0RPSU5HX01BS0VERVBFTkQKKworCisjaWZuZGVmIE9QRU5TU0xfTk9fQ0FNRUxMSUEKKyMgZGVmaW5lIE9QRU5TU0xfTk9fQ0FNRUxMSUEKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX0NBUElFTkcKKyMgZGVmaW5lIE9QRU5TU0xfTk9fQ0FQSUVORworI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fQ0FTVAorIyBkZWZpbmUgT1BFTlNTTF9OT19DQVNUCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19EVExTMQorIyBkZWZpbmUgT1BFTlNTTF9OT19EVExTMQorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fRUNfTklTVFBfNjRfR0NDXzEyOAorIyBkZWZpbmUgT1BFTlNTTF9OT19FQ19OSVNUUF82NF9HQ0NfMTI4CisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19HTVAKKyMgZGVmaW5lIE9QRU5TU0xfTk9fR01QCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19HT1NUCisjIGRlZmluZSBPUEVOU1NMX05PX0dPU1QKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX0hFQVJUQkVBVFMKKyMgZGVmaW5lIE9QRU5TU0xfTk9fSEVBUlRCRUFUUworI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fSURFQQorIyBkZWZpbmUgT1BFTlNTTF9OT19JREVBCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19KUEFLRQorIyBkZWZpbmUgT1BFTlNTTF9OT19KUEFLRQorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fS1JCNQorIyBkZWZpbmUgT1BFTlNTTF9OT19LUkI1CisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19NRDIKKyMgZGVmaW5lIE9QRU5TU0xfTk9fTUQyCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19NREMyCisjIGRlZmluZSBPUEVOU1NMX05PX01EQzIKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1JDNQorIyBkZWZpbmUgT1BFTlNTTF9OT19SQzUKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1JEUkFORAorIyBkZWZpbmUgT1BFTlNTTF9OT19SRFJBTkQKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1JGQzM3NzkKKyMgZGVmaW5lIE9QRU5TU0xfTk9fUkZDMzc3OQorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fUklQRU1ECisjIGRlZmluZSBPUEVOU1NMX05PX1JJUEVNRAorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fUlNBWAorIyBkZWZpbmUgT1BFTlNTTF9OT19SU0FYCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19TQ1RQCisjIGRlZmluZSBPUEVOU1NMX05PX1NDVFAKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1NFRUQKKyMgZGVmaW5lIE9QRU5TU0xfTk9fU0VFRAorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fU0hBMAorIyBkZWZpbmUgT1BFTlNTTF9OT19TSEEwCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19TVEFUSUNfRU5HSU5FCisjIGRlZmluZSBPUEVOU1NMX05PX1NUQVRJQ19FTkdJTkUKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1NUT1JFCisjIGRlZmluZSBPUEVOU1NMX05PX1NUT1JFCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19XSElSTFBPT0wKKyMgZGVmaW5lIE9QRU5TU0xfTk9fV0hJUkxQT09MCisjZW5kaWYKKworI2VuZGlmIC8qIE9QRU5TU0xfRE9JTkdfTUFLRURFUEVORCAqLworCisjaWZuZGVmIE9QRU5TU0xfVEhSRUFEUworIyBkZWZpbmUgT1BFTlNTTF9USFJFQURTCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19EWU5BTUlDX0VOR0lORQorIyBkZWZpbmUgT1BFTlNTTF9OT19EWU5BTUlDX0VOR0lORQorI2VuZGlmCisKKy8qIFRoZSBPUEVOU1NMX05PXyogbWFjcm9zIGFyZSBhbHNvIGRlZmluZWQgYXMgTk9fKiBpZiB0aGUgYXBwbGljYXRpb24KKyAgIGFza3MgZm9yIGl0LiAgVGhpcyBpcyBhIHRyYW5zaWVudCBmZWF0dXJlIHRoYXQgaXMgcHJvdmlkZWQgZm9yIHRob3NlCisgICB3aG8gaGF2ZW4ndCBoYWQgdGhlIHRpbWUgdG8gZG8gdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgaW4gdGhlaXIKKyAgIGFwcGxpY2F0aW9ucy4gICovCisjaWZkZWYgT1BFTlNTTF9BTEdPUklUSE1fREVGSU5FUworIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fQ0FNRUxMSUEpICYmICFkZWZpbmVkKE5PX0NBTUVMTElBKQorIyAgZGVmaW5lIE5PX0NBTUVMTElBCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19DQVBJRU5HKSAmJiAhZGVmaW5lZChOT19DQVBJRU5HKQorIyAgZGVmaW5lIE5PX0NBUElFTkcKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX0NBU1QpICYmICFkZWZpbmVkKE5PX0NBU1QpCisjICBkZWZpbmUgTk9fQ0FTVAorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fRFRMUzEpICYmICFkZWZpbmVkKE5PX0RUTFMxKQorIyAgZGVmaW5lIE5PX0RUTFMxCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19FQ19OSVNUUF82NF9HQ0NfMTI4KSAmJiAhZGVmaW5lZChOT19FQ19OSVNUUF82NF9HQ0NfMTI4KQorIyAgZGVmaW5lIE5PX0VDX05JU1RQXzY0X0dDQ18xMjgKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX0dNUCkgJiYgIWRlZmluZWQoTk9fR01QKQorIyAgZGVmaW5lIE5PX0dNUAorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fR09TVCkgJiYgIWRlZmluZWQoTk9fR09TVCkKKyMgIGRlZmluZSBOT19HT1NUCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19IRUFSVEJFQVRTKSAmJiAhZGVmaW5lZChOT19IRUFSVEJFQVRTKQorIyAgZGVmaW5lIE5PX0hFQVJUQkVBVFMKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX0lERUEpICYmICFkZWZpbmVkKE5PX0lERUEpCisjICBkZWZpbmUgTk9fSURFQQorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fSlBBS0UpICYmICFkZWZpbmVkKE5PX0pQQUtFKQorIyAgZGVmaW5lIE5PX0pQQUtFCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19LUkI1KSAmJiAhZGVmaW5lZChOT19LUkI1KQorIyAgZGVmaW5lIE5PX0tSQjUKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX01EMikgJiYgIWRlZmluZWQoTk9fTUQyKQorIyAgZGVmaW5lIE5PX01EMgorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fTURDMikgJiYgIWRlZmluZWQoTk9fTURDMikKKyMgIGRlZmluZSBOT19NREMyCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19SQzUpICYmICFkZWZpbmVkKE5PX1JDNSkKKyMgIGRlZmluZSBOT19SQzUKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1JEUkFORCkgJiYgIWRlZmluZWQoTk9fUkRSQU5EKQorIyAgZGVmaW5lIE5PX1JEUkFORAorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fUkZDMzc3OSkgJiYgIWRlZmluZWQoTk9fUkZDMzc3OSkKKyMgIGRlZmluZSBOT19SRkMzNzc5CisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19SSVBFTUQpICYmICFkZWZpbmVkKE5PX1JJUEVNRCkKKyMgIGRlZmluZSBOT19SSVBFTUQKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1JTQVgpICYmICFkZWZpbmVkKE5PX1JTQVgpCisjICBkZWZpbmUgTk9fUlNBWAorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fU0NUUCkgJiYgIWRlZmluZWQoTk9fU0NUUCkKKyMgIGRlZmluZSBOT19TQ1RQCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19TRUVEKSAmJiAhZGVmaW5lZChOT19TRUVEKQorIyAgZGVmaW5lIE5PX1NFRUQKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1NIQTApICYmICFkZWZpbmVkKE5PX1NIQTApCisjICBkZWZpbmUgTk9fU0hBMAorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fU1RBVElDX0VOR0lORSkgJiYgIWRlZmluZWQoTk9fU1RBVElDX0VOR0lORSkKKyMgIGRlZmluZSBOT19TVEFUSUNfRU5HSU5FCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19TVE9SRSkgJiYgIWRlZmluZWQoTk9fU1RPUkUpCisjICBkZWZpbmUgTk9fU1RPUkUKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1dISVJMUE9PTCkgJiYgIWRlZmluZWQoTk9fV0hJUkxQT09MKQorIyAgZGVmaW5lIE5PX1dISVJMUE9PTAorIyBlbmRpZgorI2VuZGlmCisKKy8qIGNyeXB0by9vcGVuc3NsY29uZi5oLmluICovCisKKy8qIEdlbmVyYXRlIDgwMzg2IGNvZGU/ICovCisjdW5kZWYgSTM4Nl9PTkxZCisKKyNpZiAhKGRlZmluZWQoVk1TKSB8fCBkZWZpbmVkKF9fVk1TKSkgLyogVk1TIHVzZXMgbG9naWNhbCBuYW1lcyBpbnN0ZWFkICovCisjaWYgZGVmaW5lZChIRUFERVJfQ1JZUFRMSUJfSCkgJiYgIWRlZmluZWQoT1BFTlNTTERJUikKKyNkZWZpbmUgRU5HSU5FU0RJUiAiL3Vzci9sb2NhbC9zc2wvbGliL2VuZ2luZXMiCisjZGVmaW5lIE9QRU5TU0xESVIgIi91c3IvbG9jYWwvc3NsIgorI2VuZGlmCisjZW5kaWYKKworI3VuZGVmIE9QRU5TU0xfVU5JU1RECisjZGVmaW5lIE9QRU5TU0xfVU5JU1REIDx1bmlzdGQuaD4KKworI3VuZGVmIE9QRU5TU0xfRVhQT1JUX1ZBUl9BU19GVU5DVElPTgorCisjaWYgZGVmaW5lZChIRUFERVJfSURFQV9IKSAmJiAhZGVmaW5lZChJREVBX0lOVCkKKyNkZWZpbmUgSURFQV9JTlQgdW5zaWduZWQgaW50CisjZW5kaWYKKworI2lmIGRlZmluZWQoSEVBREVSX01EMl9IKSAmJiAhZGVmaW5lZChNRDJfSU5UKQorI2RlZmluZSBNRDJfSU5UIHVuc2lnbmVkIGludAorI2VuZGlmCisKKyNpZiBkZWZpbmVkKEhFQURFUl9SQzJfSCkgJiYgIWRlZmluZWQoUkMyX0lOVCkKKy8qIEkgbmVlZCB0byBwdXQgaW4gYSBtb2QgZm9yIHRoZSBhbHBoYSAtIGVheSAqLworI2RlZmluZSBSQzJfSU5UIHVuc2lnbmVkIGludAorI2VuZGlmCisKKyNpZiBkZWZpbmVkKEhFQURFUl9SQzRfSCkKKyNpZiAhZGVmaW5lZChSQzRfSU5UKQorLyogdXNpbmcgaW50IHR5cGVzIG1ha2UgdGhlIHN0cnVjdHVyZSBsYXJnZXIgYnV0IG1ha2UgdGhlIGNvZGUgZmFzdGVyCisgKiBvbiBtb3N0IGJveGVzIEkgaGF2ZSB0ZXN0ZWQgLSB1cCB0byAlMjAgZmFzdGVyLiAqLworLyoKKyAqIEkgZG9uJ3Qga25vdyB3aGF0IGRvZXMgIm1vc3QiIG1lYW4sIGJ1dCBkZWNsYXJpbmcgImludCIgaXMgYSBtdXN0IG9uOgorICogLSBJbnRlbCBQNiBiZWNhdXNlIHBhcnRpYWwgcmVnaXN0ZXIgc3RhbGxzIGFyZSB2ZXJ5IGV4cGVuc2l2ZTsKKyAqIC0gZWxkZXIgQWxwaGEgYmVjYXVzZSBpdCBsYWNrcyBieXRlIGxvYWQvc3RvcmUgaW5zdHJ1Y3Rpb25zOworICovCisjZGVmaW5lIFJDNF9JTlQgdW5zaWduZWQgY2hhcgorI2VuZGlmCisjaWYgIWRlZmluZWQoUkM0X0NIVU5LKQorLyoKKyAqIFRoaXMgZW5hYmxlcyBjb2RlIGhhbmRsaW5nIGRhdGEgYWxpZ25lZCBhdCBuYXR1cmFsIENQVSB3b3JkCisgKiBib3VuZGFyeS4gU2VlIGNyeXB0by9yYzQvcmM0X2VuYy5jIGZvciBmdXJ0aGVyIGRldGFpbHMuCisgKi8KKyNkZWZpbmUgUkM0X0NIVU5LIHVuc2lnbmVkIGxvbmcKKyNlbmRpZgorI2VuZGlmCisKKyNpZiAoZGVmaW5lZChIRUFERVJfTkVXX0RFU19IKSB8fCBkZWZpbmVkKEhFQURFUl9ERVNfSCkpICYmICFkZWZpbmVkKERFU19MT05HKQorLyogSWYgdGhpcyBpcyBzZXQgdG8gJ3Vuc2lnbmVkIGludCcgb24gYSBERUMgQWxwaGEsIHRoaXMgZ2l2ZXMgYWJvdXQgYQorICogJTIwIHNwZWVkIHVwIChsb25ncyBhcmUgOCBieXRlcywgaW50J3MgYXJlIDQpLiAqLworI2lmbmRlZiBERVNfTE9ORworI2RlZmluZSBERVNfTE9ORyB1bnNpZ25lZCBpbnQKKyNlbmRpZgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKEhFQURFUl9CTl9IKSAmJiAhZGVmaW5lZChDT05GSUdfSEVBREVSX0JOX0gpCisjZGVmaW5lIENPTkZJR19IRUFERVJfQk5fSAorI3VuZGVmIEJOX0xMT05HCisKKy8qIFNob3VsZCB3ZSBkZWZpbmUgQk5fRElWMlcgaGVyZT8gKi8KKworLyogT25seSBvbmUgZm9yIHRoZSBmb2xsb3dpbmcgc2hvdWxkIGJlIGRlZmluZWQgKi8KKyNkZWZpbmUgU0lYVFlfRk9VUl9CSVRfTE9ORworI3VuZGVmIFNJWFRZX0ZPVVJfQklUCisjdW5kZWYgVEhJUlRZX1RXT19CSVQKKyNlbmRpZgorCisjaWYgZGVmaW5lZChIRUFERVJfUkM0X0xPQ0xfSCkgJiYgIWRlZmluZWQoQ09ORklHX0hFQURFUl9SQzRfTE9DTF9IKQorI2RlZmluZSBDT05GSUdfSEVBREVSX1JDNF9MT0NMX0gKKy8qIGlmIHRoaXMgaXMgZGVmaW5lZCBkYXRhW2ldIGlzIHVzZWQgaW5zdGVhZCBvZiAqZGF0YSwgdGhpcyBpcyBhICUyMAorICogc3BlZWR1cCBvbiB4ODYgKi8KKyN1bmRlZiBSQzRfSU5ERVgKKyNlbmRpZgorCisjaWYgZGVmaW5lZChIRUFERVJfQkZfTE9DTF9IKSAmJiAhZGVmaW5lZChDT05GSUdfSEVBREVSX0JGX0xPQ0xfSCkKKyNkZWZpbmUgQ09ORklHX0hFQURFUl9CRl9MT0NMX0gKKyNkZWZpbmUgQkZfUFRSCisjZW5kaWYgLyogSEVBREVSX0JGX0xPQ0xfSCAqLworCisjaWYgZGVmaW5lZChIRUFERVJfREVTX0xPQ0xfSCkgJiYgIWRlZmluZWQoQ09ORklHX0hFQURFUl9ERVNfTE9DTF9IKQorI2RlZmluZSBDT05GSUdfSEVBREVSX0RFU19MT0NMX0gKKyNpZm5kZWYgREVTX0RFRkFVTFRfT1BUSU9OUworLyogdGhlIGZvbGxvd2luZyBpcyB0d2Vha2VkIGZyb20gYSBjb25maWcgc2NyaXB0LCB0aGF0IGlzIHdoeSBpdCBpcyBhCisgKiBwcm90ZWN0ZWQgdW5kZWYvZGVmaW5lICovCisjaWZuZGVmIERFU19QVFIKKyN1bmRlZiBERVNfUFRSCisjZW5kaWYKKworLyogVGhpcyBoZWxwcyBDIGNvbXBpbGVyIGdlbmVyYXRlIHRoZSBjb3JyZWN0IGNvZGUgZm9yIG11bHRpcGxlIGZ1bmN0aW9uYWwKKyAqIHVuaXRzLiAgSXQgcmVkdWNlcyByZWdpc3RlciBkZXBlbmRhbmNpZXMgYXQgdGhlIGV4cGVuc2Ugb2YgMiBtb3JlCisgKiByZWdpc3RlcnMgKi8KKyNpZm5kZWYgREVTX1JJU0MxCisjdW5kZWYgREVTX1JJU0MxCisjZW5kaWYKKworI2lmbmRlZiBERVNfUklTQzIKKyN1bmRlZiBERVNfUklTQzIKKyNlbmRpZgorCisjaWYgZGVmaW5lZChERVNfUklTQzEpICYmIGRlZmluZWQoREVTX1JJU0MyKQorWU9VIFNIT1VMRCBOT1QgSEFWRSBCT1RIIERFU19SSVNDMSBBTkQgREVTX1JJU0MyIERFRklORUQhISEhIQorI2VuZGlmCisKKy8qIFVucm9sbCB0aGUgaW5uZXIgbG9vcCwgdGhpcyBzb21ldGltZXMgaGVscHMsIHNvbWV0aW1lcyBoaW5kZXJzLgorICogVmVyeSBtdWN5IENQVSBkZXBlbmRhbnQgKi8KKyNpZm5kZWYgREVTX1VOUk9MTAorI2RlZmluZSBERVNfVU5ST0xMCisjZW5kaWYKKworLyogVGhlc2UgZGVmYXVsdCB2YWx1ZXMgd2VyZSBzdXBwbGllZCBieQorICogUGV0ZXIgR3V0bWFuIDxwZ3V0MDAxQGNzLmF1Y2tsYW5kLmFjLm56PgorICogVGhleSBhcmUgb25seSB1c2VkIGlmIG5vdGhpbmcgZWxzZSBoYXMgYmVlbiBkZWZpbmVkICovCisjaWYgIWRlZmluZWQoREVTX1BUUikgJiYgIWRlZmluZWQoREVTX1JJU0MxKSAmJiAhZGVmaW5lZChERVNfUklTQzIpICYmICFkZWZpbmVkKERFU19VTlJPTEwpCisvKiBTcGVjaWFsIGRlZmluZXMgd2hpY2ggY2hhbmdlIHRoZSB3YXkgdGhlIGNvZGUgaXMgYnVpbHQgZGVwZW5kaW5nIG9uIHRoZQorICAgQ1BVIGFuZCBPUy4gIEZvciBTR0kgbWFjaGluZXMgeW91IGNhbiB1c2UgX01JUFNfU1pMT05HICgzMiBvciA2NCkgdG8gZmluZAorICAgZXZlbiBuZXdlciBNSVBTIENQVSdzLCBidXQgYXQgdGhlIG1vbWVudCBvbmUgc2l6ZSBmaXRzIGFsbCBmb3IKKyAgIG9wdGltaXphdGlvbiBvcHRpb25zLiAgT2xkZXIgU3BhcmMncyB3b3JrIGJldHRlciB3aXRoIG9ubHkgVU5ST0xMLCBidXQKKyAgIHRoZXJlJ3Mgbm8gd2F5IHRvIHRlbGwgYXQgY29tcGlsZSB0aW1lIHdoYXQgaXQgaXMgeW91J3JlIHJ1bm5pbmcgb24gKi8KKyAKKyNpZiBkZWZpbmVkKCBzdW4gKQkJLyogTmV3ZXIgU3BhcmMncyAqLworIyAgZGVmaW5lIERFU19QVFIKKyMgIGRlZmluZSBERVNfUklTQzEKKyMgIGRlZmluZSBERVNfVU5ST0xMCisjZWxpZiBkZWZpbmVkKCBfX3VsdHJpeCApCS8qIE9sZGVyIE1JUFMgKi8KKyMgIGRlZmluZSBERVNfUFRSCisjICBkZWZpbmUgREVTX1JJU0MyCisjICBkZWZpbmUgREVTX1VOUk9MTAorI2VsaWYgZGVmaW5lZCggX19vc2YxX18gKQkvKiBBbHBoYSAqLworIyAgZGVmaW5lIERFU19QVFIKKyMgIGRlZmluZSBERVNfUklTQzIKKyNlbGlmIGRlZmluZWQgKCBfQUlYICkJCS8qIFJTNjAwMCAqLworICAvKiBVbmtub3duICovCisjZWxpZiBkZWZpbmVkKCBfX2hwdXggKQkJLyogSFAtUEEgKi8KKyAgLyogVW5rbm93biAqLworI2VsaWYgZGVmaW5lZCggX19hdXggKQkJLyogNjhLICovCisgIC8qIFVua25vd24gKi8KKyNlbGlmIGRlZmluZWQoIF9fZGd1eCApCQkvKiA4OEsgKGJ1dCBQNiBpbiBsYXRlc3QgYm94ZXMpICovCisjICBkZWZpbmUgREVTX1VOUk9MTAorI2VsaWYgZGVmaW5lZCggX19zZ2kgKQkJLyogTmV3ZXIgTUlQUyAqLworIyAgZGVmaW5lIERFU19QVFIKKyMgIGRlZmluZSBERVNfUklTQzIKKyMgIGRlZmluZSBERVNfVU5ST0xMCisjZWxpZiBkZWZpbmVkKGkzODYpIHx8IGRlZmluZWQoX19pMzg2X18pCS8qIHg4NiBib3hlcywgc2hvdWxkIGJlIGdjYyAqLworIyAgZGVmaW5lIERFU19QVFIKKyMgIGRlZmluZSBERVNfUklTQzEKKyMgIGRlZmluZSBERVNfVU5ST0xMCisjZW5kaWYgLyogU3lzdGVtcy1zcGVjaWZpYyBzcGVlZCBkZWZpbmVzICovCisjZW5kaWYKKworI2VuZGlmIC8qIERFU19ERUZBVUxUX09QVElPTlMgKi8KKyNlbmRpZiAvKiBIRUFERVJfREVTX0xPQ0xfSCAqLwpkaWZmIC0tZ2l0IGEvY3J5cHRvL29wZW5zc2xjb25mLXN0YXRpYy10cnVzdHkuaCBiL2NyeXB0by9vcGVuc3NsY29uZi1zdGF0aWMtdHJ1c3R5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDZmOWY5OAotLS0gL2Rldi9udWxsCisrKyBiL2NyeXB0by9vcGVuc3NsY29uZi1zdGF0aWMtdHJ1c3R5LmgKQEAgLTAsMCArMSw0NDggQEAKKy8qIG9wZW5zc2xjb25mLmggKi8KKy8qIFdBUk5JTkc6IEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGZyb20gb3BlbnNzbGNvbmYuaC5pbiBieSBDb25maWd1cmUuICovCisKKy8qIE9wZW5TU0wgd2FzIGNvbmZpZ3VyZWQgd2l0aCB0aGUgZm9sbG93aW5nIG9wdGlvbnM6ICovCisjaWZuZGVmIE9QRU5TU0xfRE9JTkdfTUFLRURFUEVORAorCisKKyNpZm5kZWYgT1BFTlNTTF9OT19DQU1FTExJQQorIyBkZWZpbmUgT1BFTlNTTF9OT19DQU1FTExJQQorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fQ0FQSUVORworIyBkZWZpbmUgT1BFTlNTTF9OT19DQVBJRU5HCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19DQVNUCisjIGRlZmluZSBPUEVOU1NMX05PX0NBU1QKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX0NNUworIyBkZWZpbmUgT1BFTlNTTF9OT19DTVMKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX0NPTVAKKyMgZGVmaW5lIE9QRU5TU0xfTk9fQ09NUAorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fQ09ORgorIyBkZWZpbmUgT1BFTlNTTF9OT19DT05GCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19ERVMKKyMgZGVmaW5lIE9QRU5TU0xfTk9fREVTCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19EVExTMQorIyBkZWZpbmUgT1BFTlNTTF9OT19EVExTMQorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fRUNfTklTVFBfNjRfR0NDXzEyOAorIyBkZWZpbmUgT1BFTlNTTF9OT19FQ19OSVNUUF82NF9HQ0NfMTI4CisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19HTVAKKyMgZGVmaW5lIE9QRU5TU0xfTk9fR01QCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19HT1NUCisjIGRlZmluZSBPUEVOU1NMX05PX0dPU1QKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX0hFQVJUQkVBVFMKKyMgZGVmaW5lIE9QRU5TU0xfTk9fSEVBUlRCRUFUUworI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fSURFQQorIyBkZWZpbmUgT1BFTlNTTF9OT19JREVBCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19KUEFLRQorIyBkZWZpbmUgT1BFTlNTTF9OT19KUEFLRQorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fS1JCNQorIyBkZWZpbmUgT1BFTlNTTF9OT19LUkI1CisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19MT0NLSU5HCisjIGRlZmluZSBPUEVOU1NMX05PX0xPQ0tJTkcKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX01EMgorIyBkZWZpbmUgT1BFTlNTTF9OT19NRDIKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX01ENAorIyBkZWZpbmUgT1BFTlNTTF9OT19NRDQKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX01ENQorIyBkZWZpbmUgT1BFTlNTTF9OT19NRDUKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX01EQzIKKyMgZGVmaW5lIE9QRU5TU0xfTk9fTURDMgorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fT0NTUAorIyBkZWZpbmUgT1BFTlNTTF9OT19PQ1NQCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19QRU0KKyMgZGVmaW5lIE9QRU5TU0xfTk9fUEVNCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19QS0NTMTIKKyMgZGVmaW5lIE9QRU5TU0xfTk9fUEtDUzEyCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19QUVVFVUUKKyMgZGVmaW5lIE9QRU5TU0xfTk9fUFFVRVVFCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19SQzIKKyMgZGVmaW5lIE9QRU5TU0xfTk9fUkMyCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19SQzQKKyMgZGVmaW5lIE9QRU5TU0xfTk9fUkM0CisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19SQzUKKyMgZGVmaW5lIE9QRU5TU0xfTk9fUkM1CisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19SRFJBTkQKKyMgZGVmaW5lIE9QRU5TU0xfTk9fUkRSQU5ECisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19SRkMzNzc5CisjIGRlZmluZSBPUEVOU1NMX05PX1JGQzM3NzkKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1JJUEVNRAorIyBkZWZpbmUgT1BFTlNTTF9OT19SSVBFTUQKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1JTQVgKKyMgZGVmaW5lIE9QRU5TU0xfTk9fUlNBWAorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fU0NUUAorIyBkZWZpbmUgT1BFTlNTTF9OT19TQ1RQCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19TRUVECisjIGRlZmluZSBPUEVOU1NMX05PX1NFRUQKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1NIQTAKKyMgZGVmaW5lIE9QRU5TU0xfTk9fU0hBMAorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fU1JQCisjIGRlZmluZSBPUEVOU1NMX05PX1NSUAorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fU1NMMgorIyBkZWZpbmUgT1BFTlNTTF9OT19TU0wyCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19TU0wzCisjIGRlZmluZSBPUEVOU1NMX05PX1NTTDMKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1NUQVRJQ19FTkdJTkUKKyMgZGVmaW5lIE9QRU5TU0xfTk9fU1RBVElDX0VOR0lORQorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fU1RPUkUKKyMgZGVmaW5lIE9QRU5TU0xfTk9fU1RPUkUKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1RMUzEKKyMgZGVmaW5lIE9QRU5TU0xfTk9fVExTMQorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fVExTRVhUCisjIGRlZmluZSBPUEVOU1NMX05PX1RMU0VYVAorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fVFMKKyMgZGVmaW5lIE9QRU5TU0xfTk9fVFMKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1RYVF9EQgorIyBkZWZpbmUgT1BFTlNTTF9OT19UWFRfREIKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1VJCisjIGRlZmluZSBPUEVOU1NMX05PX1VJCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19XSElSTFBPT0wKKyMgZGVmaW5lIE9QRU5TU0xfTk9fV0hJUkxQT09MCisjZW5kaWYKKworI2VuZGlmIC8qIE9QRU5TU0xfRE9JTkdfTUFLRURFUEVORCAqLworCisjaWZuZGVmIE9QRU5TU0xfTk9fRVJSCisjIGRlZmluZSBPUEVOU1NMX05PX0VSUgorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fRFlOQU1JQ19FTkdJTkUKKyMgZGVmaW5lIE9QRU5TU0xfTk9fRFlOQU1JQ19FTkdJTkUKKyNlbmRpZgorCisvKiBUaGUgT1BFTlNTTF9OT18qIG1hY3JvcyBhcmUgYWxzbyBkZWZpbmVkIGFzIE5PXyogaWYgdGhlIGFwcGxpY2F0aW9uCisgICBhc2tzIGZvciBpdC4gIFRoaXMgaXMgYSB0cmFuc2llbnQgZmVhdHVyZSB0aGF0IGlzIHByb3ZpZGVkIGZvciB0aG9zZQorICAgd2hvIGhhdmVuJ3QgaGFkIHRoZSB0aW1lIHRvIGRvIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGluIHRoZWlyCisgICBhcHBsaWNhdGlvbnMuICAqLworI2lmZGVmIE9QRU5TU0xfQUxHT1JJVEhNX0RFRklORVMKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX0NBTUVMTElBKSAmJiAhZGVmaW5lZChOT19DQU1FTExJQSkKKyMgIGRlZmluZSBOT19DQU1FTExJQQorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fQ0FQSUVORykgJiYgIWRlZmluZWQoTk9fQ0FQSUVORykKKyMgIGRlZmluZSBOT19DQVBJRU5HCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19DQVNUKSAmJiAhZGVmaW5lZChOT19DQVNUKQorIyAgZGVmaW5lIE5PX0NBU1QKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX0NNUykgJiYgIWRlZmluZWQoTk9fQ01TKQorIyAgZGVmaW5lIE5PX0NNUworIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fQ09NUCkgJiYgIWRlZmluZWQoTk9fQ09NUCkKKyMgIGRlZmluZSBOT19DT01QCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19DT05GKSAmJiAhZGVmaW5lZChOT19DT05GKQorIyAgZGVmaW5lIE5PX0NPTkYKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX0RFUykgJiYgIWRlZmluZWQoTk9fREVTKQorIyAgZGVmaW5lIE5PX0RFUworIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fRFRMUzEpICYmICFkZWZpbmVkKE5PX0RUTFMxKQorIyAgZGVmaW5lIE5PX0RUTFMxCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19FQ19OSVNUUF82NF9HQ0NfMTI4KSAmJiAhZGVmaW5lZChOT19FQ19OSVNUUF82NF9HQ0NfMTI4KQorIyAgZGVmaW5lIE5PX0VDX05JU1RQXzY0X0dDQ18xMjgKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX0dNUCkgJiYgIWRlZmluZWQoTk9fR01QKQorIyAgZGVmaW5lIE5PX0dNUAorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fR09TVCkgJiYgIWRlZmluZWQoTk9fR09TVCkKKyMgIGRlZmluZSBOT19HT1NUCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19IRUFSVEJFQVRTKSAmJiAhZGVmaW5lZChOT19IRUFSVEJFQVRTKQorIyAgZGVmaW5lIE5PX0hFQVJUQkVBVFMKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX0lERUEpICYmICFkZWZpbmVkKE5PX0lERUEpCisjICBkZWZpbmUgTk9fSURFQQorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fSlBBS0UpICYmICFkZWZpbmVkKE5PX0pQQUtFKQorIyAgZGVmaW5lIE5PX0pQQUtFCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19LUkI1KSAmJiAhZGVmaW5lZChOT19LUkI1KQorIyAgZGVmaW5lIE5PX0tSQjUKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX0xPQ0tJTkcpICYmICFkZWZpbmVkKE5PX0xPQ0tJTkcpCisjICBkZWZpbmUgTk9fTE9DS0lORworIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fTUQyKSAmJiAhZGVmaW5lZChOT19NRDIpCisjICBkZWZpbmUgTk9fTUQyCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19NRDQpICYmICFkZWZpbmVkKE5PX01ENCkKKyMgIGRlZmluZSBOT19NRDQKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX01ENSkgJiYgIWRlZmluZWQoTk9fTUQ1KQorIyAgZGVmaW5lIE5PX01ENQorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fTURDMikgJiYgIWRlZmluZWQoTk9fTURDMikKKyMgIGRlZmluZSBOT19NREMyCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19PQ1NQKSAmJiAhZGVmaW5lZChOT19PQ1NQKQorIyAgZGVmaW5lIE5PX09DU1AKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1BFTSkgJiYgIWRlZmluZWQoTk9fUEVNKQorIyAgZGVmaW5lIE5PX1BFTQorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fUEtDUzEyKSAmJiAhZGVmaW5lZChOT19QS0NTMTIpCisjICBkZWZpbmUgTk9fUEtDUzEyCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19QUVVFVUUpICYmICFkZWZpbmVkKE5PX1BRVUVVRSkKKyMgIGRlZmluZSBOT19QUVVFVUUKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1JDMikgJiYgIWRlZmluZWQoTk9fUkMyKQorIyAgZGVmaW5lIE5PX1JDMgorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fUkM0KSAmJiAhZGVmaW5lZChOT19SQzQpCisjICBkZWZpbmUgTk9fUkM0CisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19SQzUpICYmICFkZWZpbmVkKE5PX1JDNSkKKyMgIGRlZmluZSBOT19SQzUKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1JEUkFORCkgJiYgIWRlZmluZWQoTk9fUkRSQU5EKQorIyAgZGVmaW5lIE5PX1JEUkFORAorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fUkZDMzc3OSkgJiYgIWRlZmluZWQoTk9fUkZDMzc3OSkKKyMgIGRlZmluZSBOT19SRkMzNzc5CisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19SSVBFTUQpICYmICFkZWZpbmVkKE5PX1JJUEVNRCkKKyMgIGRlZmluZSBOT19SSVBFTUQKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1JTQVgpICYmICFkZWZpbmVkKE5PX1JTQVgpCisjICBkZWZpbmUgTk9fUlNBWAorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fU0NUUCkgJiYgIWRlZmluZWQoTk9fU0NUUCkKKyMgIGRlZmluZSBOT19TQ1RQCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19TRUVEKSAmJiAhZGVmaW5lZChOT19TRUVEKQorIyAgZGVmaW5lIE5PX1NFRUQKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1NIQTApICYmICFkZWZpbmVkKE5PX1NIQTApCisjICBkZWZpbmUgTk9fU0hBMAorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fU1JQKSAmJiAhZGVmaW5lZChOT19TUlApCisjICBkZWZpbmUgTk9fU1JQCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19TU0wyKSAmJiAhZGVmaW5lZChOT19TU0wyKQorIyAgZGVmaW5lIE5PX1NTTDIKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1NTTDMpICYmICFkZWZpbmVkKE5PX1NTTDMpCisjICBkZWZpbmUgTk9fU1NMMworIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fU1RBVElDX0VOR0lORSkgJiYgIWRlZmluZWQoTk9fU1RBVElDX0VOR0lORSkKKyMgIGRlZmluZSBOT19TVEFUSUNfRU5HSU5FCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19TVE9SRSkgJiYgIWRlZmluZWQoTk9fU1RPUkUpCisjICBkZWZpbmUgTk9fU1RPUkUKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1RMUzEpICYmICFkZWZpbmVkKE5PX1RMUzEpCisjICBkZWZpbmUgTk9fVExTMQorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fVExTRVhUKSAmJiAhZGVmaW5lZChOT19UTFNFWFQpCisjICBkZWZpbmUgTk9fVExTRVhUCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19UUykgJiYgIWRlZmluZWQoTk9fVFMpCisjICBkZWZpbmUgTk9fVFMKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1RYVF9EQikgJiYgIWRlZmluZWQoTk9fVFhUX0RCKQorIyAgZGVmaW5lIE5PX1RYVF9EQgorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fVUkpICYmICFkZWZpbmVkKE5PX1VJKQorIyAgZGVmaW5lIE5PX1VJCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19XSElSTFBPT0wpICYmICFkZWZpbmVkKE5PX1dISVJMUE9PTCkKKyMgIGRlZmluZSBOT19XSElSTFBPT0wKKyMgZW5kaWYKKyNlbmRpZgorCisvKiBjcnlwdG8vb3BlbnNzbGNvbmYuaC5pbiAqLworCisvKiBHZW5lcmF0ZSA4MDM4NiBjb2RlPyAqLworI3VuZGVmIEkzODZfT05MWQorCisjaWYgIShkZWZpbmVkKFZNUykgfHwgZGVmaW5lZChfX1ZNUykpIC8qIFZNUyB1c2VzIGxvZ2ljYWwgbmFtZXMgaW5zdGVhZCAqLworI2lmIGRlZmluZWQoSEVBREVSX0NSWVBUTElCX0gpICYmICFkZWZpbmVkKE9QRU5TU0xESVIpCisjZGVmaW5lIEVOR0lORVNESVIgIi91c3IvbG9jYWwvc3NsL2xpYi9lbmdpbmVzIgorI2RlZmluZSBPUEVOU1NMRElSICIvdXNyL2xvY2FsL3NzbCIKKyNlbmRpZgorI2VuZGlmCisKKyN1bmRlZiBPUEVOU1NMX1VOSVNURAorI2RlZmluZSBPUEVOU1NMX1VOSVNURCA8dHJ1c3R5X3N0ZC5oPgorCisjdW5kZWYgT1BFTlNTTF9FWFBPUlRfVkFSX0FTX0ZVTkNUSU9OCisKKyNpZiBkZWZpbmVkKEhFQURFUl9JREVBX0gpICYmICFkZWZpbmVkKElERUFfSU5UKQorI2RlZmluZSBJREVBX0lOVCB1bnNpZ25lZCBpbnQKKyNlbmRpZgorCisjaWYgZGVmaW5lZChIRUFERVJfTUQyX0gpICYmICFkZWZpbmVkKE1EMl9JTlQpCisjZGVmaW5lIE1EMl9JTlQgdW5zaWduZWQgaW50CisjZW5kaWYKKworI2lmIGRlZmluZWQoSEVBREVSX1JDMl9IKSAmJiAhZGVmaW5lZChSQzJfSU5UKQorLyogSSBuZWVkIHRvIHB1dCBpbiBhIG1vZCBmb3IgdGhlIGFscGhhIC0gZWF5ICovCisjZGVmaW5lIFJDMl9JTlQgdW5zaWduZWQgaW50CisjZW5kaWYKKworI2lmIGRlZmluZWQoSEVBREVSX1JDNF9IKQorI2lmICFkZWZpbmVkKFJDNF9JTlQpCisvKiB1c2luZyBpbnQgdHlwZXMgbWFrZSB0aGUgc3RydWN0dXJlIGxhcmdlciBidXQgbWFrZSB0aGUgY29kZSBmYXN0ZXIKKyAqIG9uIG1vc3QgYm94ZXMgSSBoYXZlIHRlc3RlZCAtIHVwIHRvICUyMCBmYXN0ZXIuICovCisvKgorICogSSBkb24ndCBrbm93IHdoYXQgZG9lcyAibW9zdCIgbWVhbiwgYnV0IGRlY2xhcmluZyAiaW50IiBpcyBhIG11c3Qgb246CisgKiAtIEludGVsIFA2IGJlY2F1c2UgcGFydGlhbCByZWdpc3RlciBzdGFsbHMgYXJlIHZlcnkgZXhwZW5zaXZlOworICogLSBlbGRlciBBbHBoYSBiZWNhdXNlIGl0IGxhY2tzIGJ5dGUgbG9hZC9zdG9yZSBpbnN0cnVjdGlvbnM7CisgKi8KKyNkZWZpbmUgUkM0X0lOVCB1bnNpZ25lZCBpbnQKKyNlbmRpZgorI2lmICFkZWZpbmVkKFJDNF9DSFVOSykKKy8qCisgKiBUaGlzIGVuYWJsZXMgY29kZSBoYW5kbGluZyBkYXRhIGFsaWduZWQgYXQgbmF0dXJhbCBDUFUgd29yZAorICogYm91bmRhcnkuIFNlZSBjcnlwdG8vcmM0L3JjNF9lbmMuYyBmb3IgZnVydGhlciBkZXRhaWxzLgorICovCisjdW5kZWYgUkM0X0NIVU5LCisjZW5kaWYKKyNlbmRpZgorCisjaWYgKGRlZmluZWQoSEVBREVSX05FV19ERVNfSCkgfHwgZGVmaW5lZChIRUFERVJfREVTX0gpKSAmJiAhZGVmaW5lZChERVNfTE9ORykKKy8qIElmIHRoaXMgaXMgc2V0IHRvICd1bnNpZ25lZCBpbnQnIG9uIGEgREVDIEFscGhhLCB0aGlzIGdpdmVzIGFib3V0IGEKKyAqICUyMCBzcGVlZCB1cCAobG9uZ3MgYXJlIDggYnl0ZXMsIGludCdzIGFyZSA0KS4gKi8KKyNpZm5kZWYgREVTX0xPTkcKKyNkZWZpbmUgREVTX0xPTkcgdW5zaWduZWQgbG9uZworI2VuZGlmCisjZW5kaWYKKworI2lmIGRlZmluZWQoSEVBREVSX0JOX0gpICYmICFkZWZpbmVkKENPTkZJR19IRUFERVJfQk5fSCkKKyNkZWZpbmUgQ09ORklHX0hFQURFUl9CTl9ICisjdW5kZWYgQk5fTExPTkcKKworLyogU2hvdWxkIHdlIGRlZmluZSBCTl9ESVYyVyBoZXJlPyAqLworCisvKiBPbmx5IG9uZSBmb3IgdGhlIGZvbGxvd2luZyBzaG91bGQgYmUgZGVmaW5lZCAqLworI3VuZGVmIFNJWFRZX0ZPVVJfQklUX0xPTkcKKyN1bmRlZiBTSVhUWV9GT1VSX0JJVAorI2RlZmluZSBUSElSVFlfVFdPX0JJVAorI2VuZGlmCisKKyNpZiBkZWZpbmVkKEhFQURFUl9SQzRfTE9DTF9IKSAmJiAhZGVmaW5lZChDT05GSUdfSEVBREVSX1JDNF9MT0NMX0gpCisjZGVmaW5lIENPTkZJR19IRUFERVJfUkM0X0xPQ0xfSAorLyogaWYgdGhpcyBpcyBkZWZpbmVkIGRhdGFbaV0gaXMgdXNlZCBpbnN0ZWFkIG9mICpkYXRhLCB0aGlzIGlzIGEgJTIwCisgKiBzcGVlZHVwIG9uIHg4NiAqLworI3VuZGVmIFJDNF9JTkRFWAorI2VuZGlmCisKKyNpZiBkZWZpbmVkKEhFQURFUl9CRl9MT0NMX0gpICYmICFkZWZpbmVkKENPTkZJR19IRUFERVJfQkZfTE9DTF9IKQorI2RlZmluZSBDT05GSUdfSEVBREVSX0JGX0xPQ0xfSAorI3VuZGVmIEJGX1BUUgorI2VuZGlmIC8qIEhFQURFUl9CRl9MT0NMX0ggKi8KKworI2lmIGRlZmluZWQoSEVBREVSX0RFU19MT0NMX0gpICYmICFkZWZpbmVkKENPTkZJR19IRUFERVJfREVTX0xPQ0xfSCkKKyNkZWZpbmUgQ09ORklHX0hFQURFUl9ERVNfTE9DTF9ICisjaWZuZGVmIERFU19ERUZBVUxUX09QVElPTlMKKy8qIHRoZSBmb2xsb3dpbmcgaXMgdHdlYWtlZCBmcm9tIGEgY29uZmlnIHNjcmlwdCwgdGhhdCBpcyB3aHkgaXQgaXMgYQorICogcHJvdGVjdGVkIHVuZGVmL2RlZmluZSAqLworI2lmbmRlZiBERVNfUFRSCisjdW5kZWYgREVTX1BUUgorI2VuZGlmCisKKy8qIFRoaXMgaGVscHMgQyBjb21waWxlciBnZW5lcmF0ZSB0aGUgY29ycmVjdCBjb2RlIGZvciBtdWx0aXBsZSBmdW5jdGlvbmFsCisgKiB1bml0cy4gIEl0IHJlZHVjZXMgcmVnaXN0ZXIgZGVwZW5kYW5jaWVzIGF0IHRoZSBleHBlbnNlIG9mIDIgbW9yZQorICogcmVnaXN0ZXJzICovCisjaWZuZGVmIERFU19SSVNDMQorI3VuZGVmIERFU19SSVNDMQorI2VuZGlmCisKKyNpZm5kZWYgREVTX1JJU0MyCisjdW5kZWYgREVTX1JJU0MyCisjZW5kaWYKKworI2lmIGRlZmluZWQoREVTX1JJU0MxKSAmJiBkZWZpbmVkKERFU19SSVNDMikKK1lPVSBTSE9VTEQgTk9UIEhBVkUgQk9USCBERVNfUklTQzEgQU5EIERFU19SSVNDMiBERUZJTkVEISEhISEKKyNlbmRpZgorCisvKiBVbnJvbGwgdGhlIGlubmVyIGxvb3AsIHRoaXMgc29tZXRpbWVzIGhlbHBzLCBzb21ldGltZXMgaGluZGVycy4KKyAqIFZlcnkgbXVjeSBDUFUgZGVwZW5kYW50ICovCisjaWZuZGVmIERFU19VTlJPTEwKKyN1bmRlZiBERVNfVU5ST0xMCisjZW5kaWYKKworLyogVGhlc2UgZGVmYXVsdCB2YWx1ZXMgd2VyZSBzdXBwbGllZCBieQorICogUGV0ZXIgR3V0bWFuIDxwZ3V0MDAxQGNzLmF1Y2tsYW5kLmFjLm56PgorICogVGhleSBhcmUgb25seSB1c2VkIGlmIG5vdGhpbmcgZWxzZSBoYXMgYmVlbiBkZWZpbmVkICovCisjaWYgIWRlZmluZWQoREVTX1BUUikgJiYgIWRlZmluZWQoREVTX1JJU0MxKSAmJiAhZGVmaW5lZChERVNfUklTQzIpICYmICFkZWZpbmVkKERFU19VTlJPTEwpCisvKiBTcGVjaWFsIGRlZmluZXMgd2hpY2ggY2hhbmdlIHRoZSB3YXkgdGhlIGNvZGUgaXMgYnVpbHQgZGVwZW5kaW5nIG9uIHRoZQorICAgQ1BVIGFuZCBPUy4gIEZvciBTR0kgbWFjaGluZXMgeW91IGNhbiB1c2UgX01JUFNfU1pMT05HICgzMiBvciA2NCkgdG8gZmluZAorICAgZXZlbiBuZXdlciBNSVBTIENQVSdzLCBidXQgYXQgdGhlIG1vbWVudCBvbmUgc2l6ZSBmaXRzIGFsbCBmb3IKKyAgIG9wdGltaXphdGlvbiBvcHRpb25zLiAgT2xkZXIgU3BhcmMncyB3b3JrIGJldHRlciB3aXRoIG9ubHkgVU5ST0xMLCBidXQKKyAgIHRoZXJlJ3Mgbm8gd2F5IHRvIHRlbGwgYXQgY29tcGlsZSB0aW1lIHdoYXQgaXQgaXMgeW91J3JlIHJ1bm5pbmcgb24gKi8KKyAKKyNpZiBkZWZpbmVkKCBzdW4gKQkJLyogTmV3ZXIgU3BhcmMncyAqLworIyAgZGVmaW5lIERFU19QVFIKKyMgIGRlZmluZSBERVNfUklTQzEKKyMgIGRlZmluZSBERVNfVU5ST0xMCisjZWxpZiBkZWZpbmVkKCBfX3VsdHJpeCApCS8qIE9sZGVyIE1JUFMgKi8KKyMgIGRlZmluZSBERVNfUFRSCisjICBkZWZpbmUgREVTX1JJU0MyCisjICBkZWZpbmUgREVTX1VOUk9MTAorI2VsaWYgZGVmaW5lZCggX19vc2YxX18gKQkvKiBBbHBoYSAqLworIyAgZGVmaW5lIERFU19QVFIKKyMgIGRlZmluZSBERVNfUklTQzIKKyNlbGlmIGRlZmluZWQgKCBfQUlYICkJCS8qIFJTNjAwMCAqLworICAvKiBVbmtub3duICovCisjZWxpZiBkZWZpbmVkKCBfX2hwdXggKQkJLyogSFAtUEEgKi8KKyAgLyogVW5rbm93biAqLworI2VsaWYgZGVmaW5lZCggX19hdXggKQkJLyogNjhLICovCisgIC8qIFVua25vd24gKi8KKyNlbGlmIGRlZmluZWQoIF9fZGd1eCApCQkvKiA4OEsgKGJ1dCBQNiBpbiBsYXRlc3QgYm94ZXMpICovCisjICBkZWZpbmUgREVTX1VOUk9MTAorI2VsaWYgZGVmaW5lZCggX19zZ2kgKQkJLyogTmV3ZXIgTUlQUyAqLworIyAgZGVmaW5lIERFU19QVFIKKyMgIGRlZmluZSBERVNfUklTQzIKKyMgIGRlZmluZSBERVNfVU5ST0xMCisjZWxpZiBkZWZpbmVkKGkzODYpIHx8IGRlZmluZWQoX19pMzg2X18pCS8qIHg4NiBib3hlcywgc2hvdWxkIGJlIGdjYyAqLworIyAgZGVmaW5lIERFU19QVFIKKyMgIGRlZmluZSBERVNfUklTQzEKKyMgIGRlZmluZSBERVNfVU5ST0xMCisjZW5kaWYgLyogU3lzdGVtcy1zcGVjaWZpYyBzcGVlZCBkZWZpbmVzICovCisjZW5kaWYKKworI2VuZGlmIC8qIERFU19ERUZBVUxUX09QVElPTlMgKi8KKyNlbmRpZiAvKiBIRUFERVJfREVTX0xPQ0xfSCAqLwpkaWZmIC0tZ2l0IGEvY3J5cHRvL29wZW5zc2xjb25mLXN0YXRpYy5oIGIvY3J5cHRvL29wZW5zc2xjb25mLXN0YXRpYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2M2E2ZTAKLS0tIC9kZXYvbnVsbAorKysgYi9jcnlwdG8vb3BlbnNzbGNvbmYtc3RhdGljLmgKQEAgLTAsMCArMSw2IEBACisvLyBBdXRvLWdlbmVyYXRlZCAtIERPIE5PVCBFRElUIQorI2lmIGRlZmluZWQoX19MUDY0X18pCisjaW5jbHVkZSAib3BlbnNzbGNvbmYtc3RhdGljLTY0LmgiCisjZWxzZQorI2luY2x1ZGUgIm9wZW5zc2xjb25mLXN0YXRpYy0zMi5oIgorI2VuZGlmCmRpZmYgLS1naXQgYS9jcnlwdG8vb3BlbnNzbGNvbmYtdHJ1c3R5LmggYi9jcnlwdG8vb3BlbnNzbGNvbmYtdHJ1c3R5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDZmOWY5OAotLS0gL2Rldi9udWxsCisrKyBiL2NyeXB0by9vcGVuc3NsY29uZi10cnVzdHkuaApAQCAtMCwwICsxLDQ0OCBAQAorLyogb3BlbnNzbGNvbmYuaCAqLworLyogV0FSTklORzogR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgZnJvbSBvcGVuc3NsY29uZi5oLmluIGJ5IENvbmZpZ3VyZS4gKi8KKworLyogT3BlblNTTCB3YXMgY29uZmlndXJlZCB3aXRoIHRoZSBmb2xsb3dpbmcgb3B0aW9uczogKi8KKyNpZm5kZWYgT1BFTlNTTF9ET0lOR19NQUtFREVQRU5ECisKKworI2lmbmRlZiBPUEVOU1NMX05PX0NBTUVMTElBCisjIGRlZmluZSBPUEVOU1NMX05PX0NBTUVMTElBCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19DQVBJRU5HCisjIGRlZmluZSBPUEVOU1NMX05PX0NBUElFTkcKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX0NBU1QKKyMgZGVmaW5lIE9QRU5TU0xfTk9fQ0FTVAorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fQ01TCisjIGRlZmluZSBPUEVOU1NMX05PX0NNUworI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fQ09NUAorIyBkZWZpbmUgT1BFTlNTTF9OT19DT01QCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19DT05GCisjIGRlZmluZSBPUEVOU1NMX05PX0NPTkYKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX0RFUworIyBkZWZpbmUgT1BFTlNTTF9OT19ERVMKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX0RUTFMxCisjIGRlZmluZSBPUEVOU1NMX05PX0RUTFMxCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19FQ19OSVNUUF82NF9HQ0NfMTI4CisjIGRlZmluZSBPUEVOU1NMX05PX0VDX05JU1RQXzY0X0dDQ18xMjgKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX0dNUAorIyBkZWZpbmUgT1BFTlNTTF9OT19HTVAKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX0dPU1QKKyMgZGVmaW5lIE9QRU5TU0xfTk9fR09TVAorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fSEVBUlRCRUFUUworIyBkZWZpbmUgT1BFTlNTTF9OT19IRUFSVEJFQVRTCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19JREVBCisjIGRlZmluZSBPUEVOU1NMX05PX0lERUEKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX0pQQUtFCisjIGRlZmluZSBPUEVOU1NMX05PX0pQQUtFCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19LUkI1CisjIGRlZmluZSBPUEVOU1NMX05PX0tSQjUKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX0xPQ0tJTkcKKyMgZGVmaW5lIE9QRU5TU0xfTk9fTE9DS0lORworI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fTUQyCisjIGRlZmluZSBPUEVOU1NMX05PX01EMgorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fTUQ0CisjIGRlZmluZSBPUEVOU1NMX05PX01ENAorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fTUQ1CisjIGRlZmluZSBPUEVOU1NMX05PX01ENQorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fTURDMgorIyBkZWZpbmUgT1BFTlNTTF9OT19NREMyCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19PQ1NQCisjIGRlZmluZSBPUEVOU1NMX05PX09DU1AKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1BFTQorIyBkZWZpbmUgT1BFTlNTTF9OT19QRU0KKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1BLQ1MxMgorIyBkZWZpbmUgT1BFTlNTTF9OT19QS0NTMTIKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1BRVUVVRQorIyBkZWZpbmUgT1BFTlNTTF9OT19QUVVFVUUKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1JDMgorIyBkZWZpbmUgT1BFTlNTTF9OT19SQzIKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1JDNAorIyBkZWZpbmUgT1BFTlNTTF9OT19SQzQKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1JDNQorIyBkZWZpbmUgT1BFTlNTTF9OT19SQzUKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1JEUkFORAorIyBkZWZpbmUgT1BFTlNTTF9OT19SRFJBTkQKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1JGQzM3NzkKKyMgZGVmaW5lIE9QRU5TU0xfTk9fUkZDMzc3OQorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fUklQRU1ECisjIGRlZmluZSBPUEVOU1NMX05PX1JJUEVNRAorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fUlNBWAorIyBkZWZpbmUgT1BFTlNTTF9OT19SU0FYCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19TQ1RQCisjIGRlZmluZSBPUEVOU1NMX05PX1NDVFAKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1NFRUQKKyMgZGVmaW5lIE9QRU5TU0xfTk9fU0VFRAorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fU0hBMAorIyBkZWZpbmUgT1BFTlNTTF9OT19TSEEwCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19TUlAKKyMgZGVmaW5lIE9QRU5TU0xfTk9fU1JQCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19TU0wyCisjIGRlZmluZSBPUEVOU1NMX05PX1NTTDIKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1NTTDMKKyMgZGVmaW5lIE9QRU5TU0xfTk9fU1NMMworI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fU1RBVElDX0VOR0lORQorIyBkZWZpbmUgT1BFTlNTTF9OT19TVEFUSUNfRU5HSU5FCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19TVE9SRQorIyBkZWZpbmUgT1BFTlNTTF9OT19TVE9SRQorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fVExTMQorIyBkZWZpbmUgT1BFTlNTTF9OT19UTFMxCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19UTFNFWFQKKyMgZGVmaW5lIE9QRU5TU0xfTk9fVExTRVhUCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19UUworIyBkZWZpbmUgT1BFTlNTTF9OT19UUworI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fVFhUX0RCCisjIGRlZmluZSBPUEVOU1NMX05PX1RYVF9EQgorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fVUkKKyMgZGVmaW5lIE9QRU5TU0xfTk9fVUkKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1dISVJMUE9PTAorIyBkZWZpbmUgT1BFTlNTTF9OT19XSElSTFBPT0wKKyNlbmRpZgorCisjZW5kaWYgLyogT1BFTlNTTF9ET0lOR19NQUtFREVQRU5EICovCisKKyNpZm5kZWYgT1BFTlNTTF9OT19FUlIKKyMgZGVmaW5lIE9QRU5TU0xfTk9fRVJSCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19EWU5BTUlDX0VOR0lORQorIyBkZWZpbmUgT1BFTlNTTF9OT19EWU5BTUlDX0VOR0lORQorI2VuZGlmCisKKy8qIFRoZSBPUEVOU1NMX05PXyogbWFjcm9zIGFyZSBhbHNvIGRlZmluZWQgYXMgTk9fKiBpZiB0aGUgYXBwbGljYXRpb24KKyAgIGFza3MgZm9yIGl0LiAgVGhpcyBpcyBhIHRyYW5zaWVudCBmZWF0dXJlIHRoYXQgaXMgcHJvdmlkZWQgZm9yIHRob3NlCisgICB3aG8gaGF2ZW4ndCBoYWQgdGhlIHRpbWUgdG8gZG8gdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgaW4gdGhlaXIKKyAgIGFwcGxpY2F0aW9ucy4gICovCisjaWZkZWYgT1BFTlNTTF9BTEdPUklUSE1fREVGSU5FUworIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fQ0FNRUxMSUEpICYmICFkZWZpbmVkKE5PX0NBTUVMTElBKQorIyAgZGVmaW5lIE5PX0NBTUVMTElBCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19DQVBJRU5HKSAmJiAhZGVmaW5lZChOT19DQVBJRU5HKQorIyAgZGVmaW5lIE5PX0NBUElFTkcKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX0NBU1QpICYmICFkZWZpbmVkKE5PX0NBU1QpCisjICBkZWZpbmUgTk9fQ0FTVAorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fQ01TKSAmJiAhZGVmaW5lZChOT19DTVMpCisjICBkZWZpbmUgTk9fQ01TCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19DT01QKSAmJiAhZGVmaW5lZChOT19DT01QKQorIyAgZGVmaW5lIE5PX0NPTVAKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX0NPTkYpICYmICFkZWZpbmVkKE5PX0NPTkYpCisjICBkZWZpbmUgTk9fQ09ORgorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fREVTKSAmJiAhZGVmaW5lZChOT19ERVMpCisjICBkZWZpbmUgTk9fREVTCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19EVExTMSkgJiYgIWRlZmluZWQoTk9fRFRMUzEpCisjICBkZWZpbmUgTk9fRFRMUzEKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX0VDX05JU1RQXzY0X0dDQ18xMjgpICYmICFkZWZpbmVkKE5PX0VDX05JU1RQXzY0X0dDQ18xMjgpCisjICBkZWZpbmUgTk9fRUNfTklTVFBfNjRfR0NDXzEyOAorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fR01QKSAmJiAhZGVmaW5lZChOT19HTVApCisjICBkZWZpbmUgTk9fR01QCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19HT1NUKSAmJiAhZGVmaW5lZChOT19HT1NUKQorIyAgZGVmaW5lIE5PX0dPU1QKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX0hFQVJUQkVBVFMpICYmICFkZWZpbmVkKE5PX0hFQVJUQkVBVFMpCisjICBkZWZpbmUgTk9fSEVBUlRCRUFUUworIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fSURFQSkgJiYgIWRlZmluZWQoTk9fSURFQSkKKyMgIGRlZmluZSBOT19JREVBCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19KUEFLRSkgJiYgIWRlZmluZWQoTk9fSlBBS0UpCisjICBkZWZpbmUgTk9fSlBBS0UKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX0tSQjUpICYmICFkZWZpbmVkKE5PX0tSQjUpCisjICBkZWZpbmUgTk9fS1JCNQorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fTE9DS0lORykgJiYgIWRlZmluZWQoTk9fTE9DS0lORykKKyMgIGRlZmluZSBOT19MT0NLSU5HCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19NRDIpICYmICFkZWZpbmVkKE5PX01EMikKKyMgIGRlZmluZSBOT19NRDIKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX01ENCkgJiYgIWRlZmluZWQoTk9fTUQ0KQorIyAgZGVmaW5lIE5PX01ENAorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fTUQ1KSAmJiAhZGVmaW5lZChOT19NRDUpCisjICBkZWZpbmUgTk9fTUQ1CisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19NREMyKSAmJiAhZGVmaW5lZChOT19NREMyKQorIyAgZGVmaW5lIE5PX01EQzIKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX09DU1ApICYmICFkZWZpbmVkKE5PX09DU1ApCisjICBkZWZpbmUgTk9fT0NTUAorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fUEVNKSAmJiAhZGVmaW5lZChOT19QRU0pCisjICBkZWZpbmUgTk9fUEVNCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19QS0NTMTIpICYmICFkZWZpbmVkKE5PX1BLQ1MxMikKKyMgIGRlZmluZSBOT19QS0NTMTIKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1BRVUVVRSkgJiYgIWRlZmluZWQoTk9fUFFVRVVFKQorIyAgZGVmaW5lIE5PX1BRVUVVRQorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fUkMyKSAmJiAhZGVmaW5lZChOT19SQzIpCisjICBkZWZpbmUgTk9fUkMyCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19SQzQpICYmICFkZWZpbmVkKE5PX1JDNCkKKyMgIGRlZmluZSBOT19SQzQKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1JDNSkgJiYgIWRlZmluZWQoTk9fUkM1KQorIyAgZGVmaW5lIE5PX1JDNQorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fUkRSQU5EKSAmJiAhZGVmaW5lZChOT19SRFJBTkQpCisjICBkZWZpbmUgTk9fUkRSQU5ECisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19SRkMzNzc5KSAmJiAhZGVmaW5lZChOT19SRkMzNzc5KQorIyAgZGVmaW5lIE5PX1JGQzM3NzkKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1JJUEVNRCkgJiYgIWRlZmluZWQoTk9fUklQRU1EKQorIyAgZGVmaW5lIE5PX1JJUEVNRAorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fUlNBWCkgJiYgIWRlZmluZWQoTk9fUlNBWCkKKyMgIGRlZmluZSBOT19SU0FYCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19TQ1RQKSAmJiAhZGVmaW5lZChOT19TQ1RQKQorIyAgZGVmaW5lIE5PX1NDVFAKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1NFRUQpICYmICFkZWZpbmVkKE5PX1NFRUQpCisjICBkZWZpbmUgTk9fU0VFRAorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fU0hBMCkgJiYgIWRlZmluZWQoTk9fU0hBMCkKKyMgIGRlZmluZSBOT19TSEEwCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19TUlApICYmICFkZWZpbmVkKE5PX1NSUCkKKyMgIGRlZmluZSBOT19TUlAKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1NTTDIpICYmICFkZWZpbmVkKE5PX1NTTDIpCisjICBkZWZpbmUgTk9fU1NMMgorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fU1NMMykgJiYgIWRlZmluZWQoTk9fU1NMMykKKyMgIGRlZmluZSBOT19TU0wzCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19TVEFUSUNfRU5HSU5FKSAmJiAhZGVmaW5lZChOT19TVEFUSUNfRU5HSU5FKQorIyAgZGVmaW5lIE5PX1NUQVRJQ19FTkdJTkUKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1NUT1JFKSAmJiAhZGVmaW5lZChOT19TVE9SRSkKKyMgIGRlZmluZSBOT19TVE9SRQorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fVExTMSkgJiYgIWRlZmluZWQoTk9fVExTMSkKKyMgIGRlZmluZSBOT19UTFMxCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19UTFNFWFQpICYmICFkZWZpbmVkKE5PX1RMU0VYVCkKKyMgIGRlZmluZSBOT19UTFNFWFQKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1RTKSAmJiAhZGVmaW5lZChOT19UUykKKyMgIGRlZmluZSBOT19UUworIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fVFhUX0RCKSAmJiAhZGVmaW5lZChOT19UWFRfREIpCisjICBkZWZpbmUgTk9fVFhUX0RCCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19VSSkgJiYgIWRlZmluZWQoTk9fVUkpCisjICBkZWZpbmUgTk9fVUkKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1dISVJMUE9PTCkgJiYgIWRlZmluZWQoTk9fV0hJUkxQT09MKQorIyAgZGVmaW5lIE5PX1dISVJMUE9PTAorIyBlbmRpZgorI2VuZGlmCisKKy8qIGNyeXB0by9vcGVuc3NsY29uZi5oLmluICovCisKKy8qIEdlbmVyYXRlIDgwMzg2IGNvZGU/ICovCisjdW5kZWYgSTM4Nl9PTkxZCisKKyNpZiAhKGRlZmluZWQoVk1TKSB8fCBkZWZpbmVkKF9fVk1TKSkgLyogVk1TIHVzZXMgbG9naWNhbCBuYW1lcyBpbnN0ZWFkICovCisjaWYgZGVmaW5lZChIRUFERVJfQ1JZUFRMSUJfSCkgJiYgIWRlZmluZWQoT1BFTlNTTERJUikKKyNkZWZpbmUgRU5HSU5FU0RJUiAiL3Vzci9sb2NhbC9zc2wvbGliL2VuZ2luZXMiCisjZGVmaW5lIE9QRU5TU0xESVIgIi91c3IvbG9jYWwvc3NsIgorI2VuZGlmCisjZW5kaWYKKworI3VuZGVmIE9QRU5TU0xfVU5JU1RECisjZGVmaW5lIE9QRU5TU0xfVU5JU1REIDx0cnVzdHlfc3RkLmg+CisKKyN1bmRlZiBPUEVOU1NMX0VYUE9SVF9WQVJfQVNfRlVOQ1RJT04KKworI2lmIGRlZmluZWQoSEVBREVSX0lERUFfSCkgJiYgIWRlZmluZWQoSURFQV9JTlQpCisjZGVmaW5lIElERUFfSU5UIHVuc2lnbmVkIGludAorI2VuZGlmCisKKyNpZiBkZWZpbmVkKEhFQURFUl9NRDJfSCkgJiYgIWRlZmluZWQoTUQyX0lOVCkKKyNkZWZpbmUgTUQyX0lOVCB1bnNpZ25lZCBpbnQKKyNlbmRpZgorCisjaWYgZGVmaW5lZChIRUFERVJfUkMyX0gpICYmICFkZWZpbmVkKFJDMl9JTlQpCisvKiBJIG5lZWQgdG8gcHV0IGluIGEgbW9kIGZvciB0aGUgYWxwaGEgLSBlYXkgKi8KKyNkZWZpbmUgUkMyX0lOVCB1bnNpZ25lZCBpbnQKKyNlbmRpZgorCisjaWYgZGVmaW5lZChIRUFERVJfUkM0X0gpCisjaWYgIWRlZmluZWQoUkM0X0lOVCkKKy8qIHVzaW5nIGludCB0eXBlcyBtYWtlIHRoZSBzdHJ1Y3R1cmUgbGFyZ2VyIGJ1dCBtYWtlIHRoZSBjb2RlIGZhc3RlcgorICogb24gbW9zdCBib3hlcyBJIGhhdmUgdGVzdGVkIC0gdXAgdG8gJTIwIGZhc3Rlci4gKi8KKy8qCisgKiBJIGRvbid0IGtub3cgd2hhdCBkb2VzICJtb3N0IiBtZWFuLCBidXQgZGVjbGFyaW5nICJpbnQiIGlzIGEgbXVzdCBvbjoKKyAqIC0gSW50ZWwgUDYgYmVjYXVzZSBwYXJ0aWFsIHJlZ2lzdGVyIHN0YWxscyBhcmUgdmVyeSBleHBlbnNpdmU7CisgKiAtIGVsZGVyIEFscGhhIGJlY2F1c2UgaXQgbGFja3MgYnl0ZSBsb2FkL3N0b3JlIGluc3RydWN0aW9uczsKKyAqLworI2RlZmluZSBSQzRfSU5UIHVuc2lnbmVkIGludAorI2VuZGlmCisjaWYgIWRlZmluZWQoUkM0X0NIVU5LKQorLyoKKyAqIFRoaXMgZW5hYmxlcyBjb2RlIGhhbmRsaW5nIGRhdGEgYWxpZ25lZCBhdCBuYXR1cmFsIENQVSB3b3JkCisgKiBib3VuZGFyeS4gU2VlIGNyeXB0by9yYzQvcmM0X2VuYy5jIGZvciBmdXJ0aGVyIGRldGFpbHMuCisgKi8KKyN1bmRlZiBSQzRfQ0hVTksKKyNlbmRpZgorI2VuZGlmCisKKyNpZiAoZGVmaW5lZChIRUFERVJfTkVXX0RFU19IKSB8fCBkZWZpbmVkKEhFQURFUl9ERVNfSCkpICYmICFkZWZpbmVkKERFU19MT05HKQorLyogSWYgdGhpcyBpcyBzZXQgdG8gJ3Vuc2lnbmVkIGludCcgb24gYSBERUMgQWxwaGEsIHRoaXMgZ2l2ZXMgYWJvdXQgYQorICogJTIwIHNwZWVkIHVwIChsb25ncyBhcmUgOCBieXRlcywgaW50J3MgYXJlIDQpLiAqLworI2lmbmRlZiBERVNfTE9ORworI2RlZmluZSBERVNfTE9ORyB1bnNpZ25lZCBsb25nCisjZW5kaWYKKyNlbmRpZgorCisjaWYgZGVmaW5lZChIRUFERVJfQk5fSCkgJiYgIWRlZmluZWQoQ09ORklHX0hFQURFUl9CTl9IKQorI2RlZmluZSBDT05GSUdfSEVBREVSX0JOX0gKKyN1bmRlZiBCTl9MTE9ORworCisvKiBTaG91bGQgd2UgZGVmaW5lIEJOX0RJVjJXIGhlcmU/ICovCisKKy8qIE9ubHkgb25lIGZvciB0aGUgZm9sbG93aW5nIHNob3VsZCBiZSBkZWZpbmVkICovCisjdW5kZWYgU0lYVFlfRk9VUl9CSVRfTE9ORworI3VuZGVmIFNJWFRZX0ZPVVJfQklUCisjZGVmaW5lIFRISVJUWV9UV09fQklUCisjZW5kaWYKKworI2lmIGRlZmluZWQoSEVBREVSX1JDNF9MT0NMX0gpICYmICFkZWZpbmVkKENPTkZJR19IRUFERVJfUkM0X0xPQ0xfSCkKKyNkZWZpbmUgQ09ORklHX0hFQURFUl9SQzRfTE9DTF9ICisvKiBpZiB0aGlzIGlzIGRlZmluZWQgZGF0YVtpXSBpcyB1c2VkIGluc3RlYWQgb2YgKmRhdGEsIHRoaXMgaXMgYSAlMjAKKyAqIHNwZWVkdXAgb24geDg2ICovCisjdW5kZWYgUkM0X0lOREVYCisjZW5kaWYKKworI2lmIGRlZmluZWQoSEVBREVSX0JGX0xPQ0xfSCkgJiYgIWRlZmluZWQoQ09ORklHX0hFQURFUl9CRl9MT0NMX0gpCisjZGVmaW5lIENPTkZJR19IRUFERVJfQkZfTE9DTF9ICisjdW5kZWYgQkZfUFRSCisjZW5kaWYgLyogSEVBREVSX0JGX0xPQ0xfSCAqLworCisjaWYgZGVmaW5lZChIRUFERVJfREVTX0xPQ0xfSCkgJiYgIWRlZmluZWQoQ09ORklHX0hFQURFUl9ERVNfTE9DTF9IKQorI2RlZmluZSBDT05GSUdfSEVBREVSX0RFU19MT0NMX0gKKyNpZm5kZWYgREVTX0RFRkFVTFRfT1BUSU9OUworLyogdGhlIGZvbGxvd2luZyBpcyB0d2Vha2VkIGZyb20gYSBjb25maWcgc2NyaXB0LCB0aGF0IGlzIHdoeSBpdCBpcyBhCisgKiBwcm90ZWN0ZWQgdW5kZWYvZGVmaW5lICovCisjaWZuZGVmIERFU19QVFIKKyN1bmRlZiBERVNfUFRSCisjZW5kaWYKKworLyogVGhpcyBoZWxwcyBDIGNvbXBpbGVyIGdlbmVyYXRlIHRoZSBjb3JyZWN0IGNvZGUgZm9yIG11bHRpcGxlIGZ1bmN0aW9uYWwKKyAqIHVuaXRzLiAgSXQgcmVkdWNlcyByZWdpc3RlciBkZXBlbmRhbmNpZXMgYXQgdGhlIGV4cGVuc2Ugb2YgMiBtb3JlCisgKiByZWdpc3RlcnMgKi8KKyNpZm5kZWYgREVTX1JJU0MxCisjdW5kZWYgREVTX1JJU0MxCisjZW5kaWYKKworI2lmbmRlZiBERVNfUklTQzIKKyN1bmRlZiBERVNfUklTQzIKKyNlbmRpZgorCisjaWYgZGVmaW5lZChERVNfUklTQzEpICYmIGRlZmluZWQoREVTX1JJU0MyKQorWU9VIFNIT1VMRCBOT1QgSEFWRSBCT1RIIERFU19SSVNDMSBBTkQgREVTX1JJU0MyIERFRklORUQhISEhIQorI2VuZGlmCisKKy8qIFVucm9sbCB0aGUgaW5uZXIgbG9vcCwgdGhpcyBzb21ldGltZXMgaGVscHMsIHNvbWV0aW1lcyBoaW5kZXJzLgorICogVmVyeSBtdWN5IENQVSBkZXBlbmRhbnQgKi8KKyNpZm5kZWYgREVTX1VOUk9MTAorI3VuZGVmIERFU19VTlJPTEwKKyNlbmRpZgorCisvKiBUaGVzZSBkZWZhdWx0IHZhbHVlcyB3ZXJlIHN1cHBsaWVkIGJ5CisgKiBQZXRlciBHdXRtYW4gPHBndXQwMDFAY3MuYXVja2xhbmQuYWMubno+CisgKiBUaGV5IGFyZSBvbmx5IHVzZWQgaWYgbm90aGluZyBlbHNlIGhhcyBiZWVuIGRlZmluZWQgKi8KKyNpZiAhZGVmaW5lZChERVNfUFRSKSAmJiAhZGVmaW5lZChERVNfUklTQzEpICYmICFkZWZpbmVkKERFU19SSVNDMikgJiYgIWRlZmluZWQoREVTX1VOUk9MTCkKKy8qIFNwZWNpYWwgZGVmaW5lcyB3aGljaCBjaGFuZ2UgdGhlIHdheSB0aGUgY29kZSBpcyBidWlsdCBkZXBlbmRpbmcgb24gdGhlCisgICBDUFUgYW5kIE9TLiAgRm9yIFNHSSBtYWNoaW5lcyB5b3UgY2FuIHVzZSBfTUlQU19TWkxPTkcgKDMyIG9yIDY0KSB0byBmaW5kCisgICBldmVuIG5ld2VyIE1JUFMgQ1BVJ3MsIGJ1dCBhdCB0aGUgbW9tZW50IG9uZSBzaXplIGZpdHMgYWxsIGZvcgorICAgb3B0aW1pemF0aW9uIG9wdGlvbnMuICBPbGRlciBTcGFyYydzIHdvcmsgYmV0dGVyIHdpdGggb25seSBVTlJPTEwsIGJ1dAorICAgdGhlcmUncyBubyB3YXkgdG8gdGVsbCBhdCBjb21waWxlIHRpbWUgd2hhdCBpdCBpcyB5b3UncmUgcnVubmluZyBvbiAqLworIAorI2lmIGRlZmluZWQoIHN1biApCQkvKiBOZXdlciBTcGFyYydzICovCisjICBkZWZpbmUgREVTX1BUUgorIyAgZGVmaW5lIERFU19SSVNDMQorIyAgZGVmaW5lIERFU19VTlJPTEwKKyNlbGlmIGRlZmluZWQoIF9fdWx0cml4ICkJLyogT2xkZXIgTUlQUyAqLworIyAgZGVmaW5lIERFU19QVFIKKyMgIGRlZmluZSBERVNfUklTQzIKKyMgIGRlZmluZSBERVNfVU5ST0xMCisjZWxpZiBkZWZpbmVkKCBfX29zZjFfXyApCS8qIEFscGhhICovCisjICBkZWZpbmUgREVTX1BUUgorIyAgZGVmaW5lIERFU19SSVNDMgorI2VsaWYgZGVmaW5lZCAoIF9BSVggKQkJLyogUlM2MDAwICovCisgIC8qIFVua25vd24gKi8KKyNlbGlmIGRlZmluZWQoIF9faHB1eCApCQkvKiBIUC1QQSAqLworICAvKiBVbmtub3duICovCisjZWxpZiBkZWZpbmVkKCBfX2F1eCApCQkvKiA2OEsgKi8KKyAgLyogVW5rbm93biAqLworI2VsaWYgZGVmaW5lZCggX19kZ3V4ICkJCS8qIDg4SyAoYnV0IFA2IGluIGxhdGVzdCBib3hlcykgKi8KKyMgIGRlZmluZSBERVNfVU5ST0xMCisjZWxpZiBkZWZpbmVkKCBfX3NnaSApCQkvKiBOZXdlciBNSVBTICovCisjICBkZWZpbmUgREVTX1BUUgorIyAgZGVmaW5lIERFU19SSVNDMgorIyAgZGVmaW5lIERFU19VTlJPTEwKKyNlbGlmIGRlZmluZWQoaTM4NikgfHwgZGVmaW5lZChfX2kzODZfXykJLyogeDg2IGJveGVzLCBzaG91bGQgYmUgZ2NjICovCisjICBkZWZpbmUgREVTX1BUUgorIyAgZGVmaW5lIERFU19SSVNDMQorIyAgZGVmaW5lIERFU19VTlJPTEwKKyNlbmRpZiAvKiBTeXN0ZW1zLXNwZWNpZmljIHNwZWVkIGRlZmluZXMgKi8KKyNlbmRpZgorCisjZW5kaWYgLyogREVTX0RFRkFVTFRfT1BUSU9OUyAqLworI2VuZGlmIC8qIEhFQURFUl9ERVNfTE9DTF9IICovCmRpZmYgLS1naXQgYS9jcnlwdG8vb3BlbnNzbGNvbmYuaCBiL2NyeXB0by9vcGVuc3NsY29uZi5oCmluZGV4IGQwMDU5MGIuLjk0MjEyYTAgMTAwNjQ0Ci0tLSBhL2NyeXB0by9vcGVuc3NsY29uZi5oCisrKyBiL2NyeXB0by9vcGVuc3NsY29uZi5oCkBAIC0xLDYgKzEsMTAgQEAKIC8vIEF1dG8tZ2VuZXJhdGVkIC0gRE8gTk9UIEVESVQhCisjaWZuZGVmIE9QRU5TU0xfU1lTX1RSVVNUWQogI2lmIGRlZmluZWQoX19MUDY0X18pCiAjaW5jbHVkZSAib3BlbnNzbGNvbmYtNjQuaCIKICNlbHNlCiAjaW5jbHVkZSAib3BlbnNzbGNvbmYtMzIuaCIKICNlbmRpZgorI2Vsc2UKKyNpbmNsdWRlICJvcGVuc3NsY29uZi10cnVzdHkuaCIKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvY3J5cHRvL29wZW5zc2x2LmggYi9jcnlwdG8vb3BlbnNzbHYuaAppbmRleCBiMjdhNWJiLi5jM2I2YWNlIDEwMDY0NAotLS0gYS9jcnlwdG8vb3BlbnNzbHYuaAorKysgYi9jcnlwdG8vb3BlbnNzbHYuaApAQCAtMjUsMTEgKzI1LDExIEBACiAgKiAoUHJpb3IgdG8gMC45LjVhIGJldGExLCBhIGRpZmZlcmVudCBzY2hlbWUgd2FzIHVzZWQ6IE1NTk5GRlJCQiBmb3IKICAqICBtYWpvciBtaW5vciBmaXggZmluYWwgcGF0Y2gvYmV0YSkKICAqLwotI2RlZmluZSBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSCTB4MTAwMDEwNmZMCisjZGVmaW5lIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIJMHgxMDAwMTA4ZkwKICNpZmRlZiBPUEVOU1NMX0ZJUFMKLSNkZWZpbmUgT1BFTlNTTF9WRVJTSU9OX1RFWFQJIk9wZW5TU0wgMS4wLjFmLWZpcHMgNiBKYW4gMjAxNCIKKyNkZWZpbmUgT1BFTlNTTF9WRVJTSU9OX1RFWFQJIk9wZW5TU0wgMS4wLjFoLWZpcHMgNSBKdW4gMjAxNCIKICNlbHNlCi0jZGVmaW5lIE9QRU5TU0xfVkVSU0lPTl9URVhUCSJPcGVuU1NMIDEuMC4xZiA2IEphbiAyMDE0IgorI2RlZmluZSBPUEVOU1NMX1ZFUlNJT05fVEVYVAkiT3BlblNTTCAxLjAuMWggNSBKdW4gMjAxNCIKICNlbmRpZgogI2RlZmluZSBPUEVOU1NMX1ZFUlNJT05fUFRFWFQJIiBwYXJ0IG9mICIgT1BFTlNTTF9WRVJTSU9OX1RFWFQKIApkaWZmIC0tZ2l0IGEvY3J5cHRvL3Blcmxhc20veDg2YXNtLnBsIGIvY3J5cHRvL3Blcmxhc20veDg2YXNtLnBsCmluZGV4IGViNTQzZGIuLjNmMTkwYWUgMTAwNjQ0Ci0tLSBhL2NyeXB0by9wZXJsYXNtL3g4NmFzbS5wbAorKysgYi9jcnlwdG8vcGVybGFzbS94ODZhc20ucGwKQEAgLTI1Nyw0ICsyNTcsNiBAQAogICAgICZmaWxlKCRmaWxlbmFtZSk7CiB9CiAKK3N1YiA6OmhpZGRlbiB7fQorCiAxOwpkaWZmIC0tZ2l0IGEvY3J5cHRvL3Blcmxhc20veDg2Z2FzLnBsIGIvY3J5cHRvL3Blcmxhc20veDg2Z2FzLnBsCmluZGV4IDY4MmEzYTMuLjczNWMxYWQgMTAwNjQ0Ci0tLSBhL2NyeXB0by9wZXJsYXNtL3g4Nmdhcy5wbAorKysgYi9jcnlwdG8vcGVybGFzbS94ODZnYXMucGwKQEAgLTI1MCw0ICsyNTAsNiBAQAogc3ViIDo6ZGF0YXNlZwogeyAgIHB1c2goQG91dCwiLmRhdGFcbiIpOyAgIH0KIAorKjo6aGlkZGVuID0gc3ViIHsgcHVzaChAb3V0LCIuaGlkZGVuXHQkbm1kZWNvciRfWzBdXG4iKTsgfSBpZiAoJDo6ZWxmKTsKKwogMTsKZGlmZiAtLWdpdCBhL2NyeXB0by9wa2NzMTIvcDEyX2NydC5jIGIvY3J5cHRvL3BrY3MxMi9wMTJfY3J0LmMKaW5kZXggYTM0OTE1ZC4uMzVlOGE0YSAxMDA2NDQKLS0tIGEvY3J5cHRvL3BrY3MxMi9wMTJfY3J0LmMKKysrIGIvY3J5cHRvL3BrY3MxMi9wMTJfY3J0LmMKQEAgLTk2LDcgKzk2LDExIEBACiAJCQluaWRfY2VydCA9IE5JRF9wYmVfV2l0aFNIQTFBbmQzX0tleV9UcmlwbGVERVNfQ0JDOwogCQllbHNlCiAjZW5kaWYKKyNpZmRlZiBPUEVOU1NMX05PX1JDMgorCQluaWRfY2VydCA9IE5JRF9wYmVfV2l0aFNIQTFBbmQzX0tleV9UcmlwbGVERVNfQ0JDOworI2Vsc2UKIAkJbmlkX2NlcnQgPSBOSURfcGJlX1dpdGhTSEExQW5kNDBCaXRSQzJfQ0JDOworI2VuZGlmCiAJCX0KIAlpZiAoIW5pZF9rZXkpCiAJCW5pZF9rZXkgPSBOSURfcGJlX1dpdGhTSEExQW5kM19LZXlfVHJpcGxlREVTX0NCQzsKQEAgLTI4Niw3ICsyOTAsMTEgQEAKIAkJZnJlZV9zYWZlcyA9IDA7CiAKIAlpZiAobmlkX3NhZmUgPT0gMCkKKyNpZmRlZiBPUEVOU1NMX05PX1JDMgorCQluaWRfc2FmZSA9IE5JRF9wYmVfV2l0aFNIQTFBbmQzX0tleV9UcmlwbGVERVNfQ0JDOworI2Vsc2UKIAkJbmlkX3NhZmUgPSBOSURfcGJlX1dpdGhTSEExQW5kNDBCaXRSQzJfQ0JDOworI2VuZGlmCiAKIAlpZiAobmlkX3NhZmUgPT0gLTEpCiAJCXA3ID0gUEtDUzEyX3BhY2tfcDdkYXRhKGJhZ3MpOwpkaWZmIC0tZ2l0IGEvY3J5cHRvL3BrY3MxMi9wMTJfa2lzcy5jIGIvY3J5cHRvL3BrY3MxMi9wMTJfa2lzcy5jCmluZGV4IDIwNmIxYjAuLmM5YjdhYjYgMTAwNjQ0Ci0tLSBhL2NyeXB0by9wa2NzMTIvcDEyX2tpc3MuYworKysgYi9jcnlwdG8vcGtjczEyL3AxMl9raXNzLmMKQEAgLTI2OSw3ICsyNjksNyBAQAogCQkJaW50IGxlbiwgcjsKIAkJCXVuc2lnbmVkIGNoYXIgKmRhdGE7CiAJCQlsZW4gPSBBU04xX1NUUklOR190b19VVEY4KCZkYXRhLCBmbmFtZSk7Ci0JCQlpZihsZW4gPiAwKSB7CisJCQlpZihsZW4gPj0gMCkgewogCQkJCXIgPSBYNTA5X2FsaWFzX3NldDEoeDUwOSwgZGF0YSwgbGVuKTsKIAkJCQlPUEVOU1NMX2ZyZWUoZGF0YSk7CiAJCQkJaWYgKCFyKQpkaWZmIC0tZ2l0IGEvY3J5cHRvL3BrY3M3L3BrN19kb2l0LmMgYi9jcnlwdG8vcGtjczcvcGs3X2RvaXQuYwppbmRleCA3N2ZkYTNiLi5kOTFhYTExIDEwMDY0NAotLS0gYS9jcnlwdG8vcGtjczcvcGs3X2RvaXQuYworKysgYi9jcnlwdG8vcGtjczcvcGs3X2RvaXQuYwpAQCAtNDQwLDYgKzQ0MCwxMSBAQAogCQl7CiAJY2FzZSBOSURfcGtjczdfc2lnbmVkOgogCQlkYXRhX2JvZHk9UEtDUzdfZ2V0X29jdGV0X3N0cmluZyhwNy0+ZC5zaWduLT5jb250ZW50cyk7CisJCWlmICghUEtDUzdfaXNfZGV0YWNoZWQocDcpICYmIGRhdGFfYm9keSA9PSBOVUxMKQorCQkJeworCQkJUEtDUzdlcnIoUEtDUzdfRl9QS0NTN19EQVRBREVDT0RFLFBLQ1M3X1JfSU5WQUxJRF9TSUdORURfREFUQV9UWVBFKTsKKwkJCWdvdG8gZXJyOworCQkJfQogCQltZF9zaz1wNy0+ZC5zaWduLT5tZF9hbGdzOwogCQlicmVhazsKIAljYXNlIE5JRF9wa2NzN19zaWduZWRBbmRFbnZlbG9wZWQ6CkBAIC05MjgsNiArOTMzLDcgQEAKIAlpZiAoRVZQX0RpZ2VzdFNpZ25VcGRhdGUoJm1jdHgsYWJ1ZixhbGVuKSA8PSAwKQogCQlnb3RvIGVycjsKIAlPUEVOU1NMX2ZyZWUoYWJ1Zik7CisJYWJ1ZiA9IE5VTEw7CiAJaWYgKEVWUF9EaWdlc3RTaWduRmluYWwoJm1jdHgsIE5VTEwsICZzaWdsZW4pIDw9IDApCiAJCWdvdG8gZXJyOwogCWFidWYgPSBPUEVOU1NMX21hbGxvYyhzaWdsZW4pOwpkaWZmIC0tZ2l0IGEvY3J5cHRvL3BrY3M3L3BrY3M3LmggYi9jcnlwdG8vcGtjczcvcGtjczcuaAppbmRleCBlNGQ0NDMxLi4wNGY2MDM3IDEwMDY0NAotLS0gYS9jcnlwdG8vcGtjczcvcGtjczcuaAorKysgYi9jcnlwdG8vcGtjczcvcGtjczcuaApAQCAtNDUzLDYgKzQ1Myw3IEBACiAjZGVmaW5lIFBLQ1M3X1JfRVJST1JfU0VUVElOR19DSVBIRVIJCQkgMTIxCiAjZGVmaW5lIFBLQ1M3X1JfSU5WQUxJRF9NSU1FX1RZUEUJCQkgMTMxCiAjZGVmaW5lIFBLQ1M3X1JfSU5WQUxJRF9OVUxMX1BPSU5URVIJCQkgMTQzCisjZGVmaW5lIFBLQ1M3X1JfSU5WQUxJRF9TSUdORURfREFUQV9UWVBFCQkgMTU1CiAjZGVmaW5lIFBLQ1M3X1JfTUlNRV9OT19DT05URU5UX1RZUEUJCQkgMTMyCiAjZGVmaW5lIFBLQ1M3X1JfTUlNRV9QQVJTRV9FUlJPUgkJCSAxMzMKICNkZWZpbmUgUEtDUzdfUl9NSU1FX1NJR19QQVJTRV9FUlJPUgkJCSAxMzQKZGlmZiAtLWdpdCBhL2NyeXB0by9wa2NzNy9wa2NzN2Vyci5jIGIvY3J5cHRvL3BrY3M3L3BrY3M3ZXJyLmMKaW5kZXggZDBhZjMyYS4uZjNkYjA4ZSAxMDA2NDQKLS0tIGEvY3J5cHRvL3BrY3M3L3BrY3M3ZXJyLmMKKysrIGIvY3J5cHRvL3BrY3M3L3BrY3M3ZXJyLmMKQEAgLTEsNiArMSw2IEBACiAvKiBjcnlwdG8vcGtjczcvcGtjczdlcnIuYyAqLwogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAqIENvcHlyaWdodCAoYykgMTk5OS0yMDA3IFRoZSBPcGVuU1NMIFByb2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChjKSAxOTk5LTIwMTQgVGhlIE9wZW5TU0wgUHJvamVjdC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzMCw2ICsxMzAsNyBAQAoge0VSUl9SRUFTT04oUEtDUzdfUl9FUlJPUl9TRVRUSU5HX0NJUEhFUiksImVycm9yIHNldHRpbmcgY2lwaGVyIn0sCiB7RVJSX1JFQVNPTihQS0NTN19SX0lOVkFMSURfTUlNRV9UWVBFKSAgICwiaW52YWxpZCBtaW1lIHR5cGUifSwKIHtFUlJfUkVBU09OKFBLQ1M3X1JfSU5WQUxJRF9OVUxMX1BPSU5URVIpLCJpbnZhbGlkIG51bGwgcG9pbnRlciJ9LAore0VSUl9SRUFTT04oUEtDUzdfUl9JTlZBTElEX1NJR05FRF9EQVRBX1RZUEUpLCJpbnZhbGlkIHNpZ25lZCBkYXRhIHR5cGUifSwKIHtFUlJfUkVBU09OKFBLQ1M3X1JfTUlNRV9OT19DT05URU5UX1RZUEUpLCJtaW1lIG5vIGNvbnRlbnQgdHlwZSJ9LAoge0VSUl9SRUFTT04oUEtDUzdfUl9NSU1FX1BBUlNFX0VSUk9SKSAgICAsIm1pbWUgcGFyc2UgZXJyb3IifSwKIHtFUlJfUkVBU09OKFBLQ1M3X1JfTUlNRV9TSUdfUEFSU0VfRVJST1IpLCJtaW1lIHNpZyBwYXJzZSBlcnJvciJ9LApkaWZmIC0tZ2l0IGEvY3J5cHRvL3JhbmQvbWRfcmFuZC5jIGIvY3J5cHRvL3JhbmQvbWRfcmFuZC5jCmluZGV4IGRkMjkxNjMuLmFlZTFjMzAgMTAwNjQ0Ci0tLSBhL2NyeXB0by9yYW5kL21kX3JhbmQuYworKysgYi9jcnlwdG8vcmFuZC9tZF9yYW5kLmMKQEAgLTE5OCw2ICsxOTgsOSBAQAogCUVWUF9NRF9DVFggbTsKIAlpbnQgZG9fbm90X2xvY2s7CiAKKwlpZiAoIW51bSkKKwkJcmV0dXJuOworCiAJLyoKIAkgKiAoQmFzZWQgb24gdGhlIHJhbmQoMykgbWFucGFnZSkKIAkgKgpkaWZmIC0tZ2l0IGEvY3J5cHRvL3JhbmQvcmFuZF93aW4uYyBiL2NyeXB0by9yYW5kL3JhbmRfd2luLmMKaW5kZXggNWQxMzRlMS4uMzRmZmNkMiAxMDA2NDQKLS0tIGEvY3J5cHRvL3JhbmQvcmFuZF93aW4uYworKysgYi9jcnlwdG8vcmFuZC9yYW5kX3dpbi5jCkBAIC03NTAsNyArNzUwLDcgQEAKICAgaW50CQl5OwkJLyogeS1jb29yZGluYXRlIG9mIHNjcmVlbiBsaW5lcyB0byBncmFiICovCiAgIGludAkJbiA9IDE2OwkJLyogbnVtYmVyIG9mIHNjcmVlbiBsaW5lcyB0byBncmFiIGF0IGEgdGltZSAqLwogCi0gIGlmIChHZXRWZXJzaW9uKCkgPCAweDgwMDAwMDAwICYmIE9QRU5TU0xfaXNzZXJ2aWNlKCk+MCkKKyAgaWYgKGNoZWNrX3dpbm50KCkgJiYgT1BFTlNTTF9pc3NlcnZpY2UoKT4wKQogICAgIHJldHVybjsKIAogICAvKiBDcmVhdGUgYSBzY3JlZW4gREMgYW5kIGEgbWVtb3J5IERDIGNvbXBhdGlibGUgdG8gc2NyZWVuIERDICovCmRpZmYgLS1naXQgYS9jcnlwdG8vcmlwZW1kL1JFQURNRSBiL2NyeXB0by9yaXBlbWQvUkVBRE1FCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMWZmYzhiLi4wMDAwMDAwCi0tLSBhL2NyeXB0by9yaXBlbWQvUkVBRE1FCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotUklQRU1ELTE2MAotaHR0cDovL3d3dy5lc2F0Lmt1bGV1dmVuLmFjLmJlL35ib3NzZWxhZS9yaXBlbWQxNjAuaHRtbAotCi1UaGlzIGlzIG15IGltcGxlbWVudGF0aW9uIG9mIFJJUEVNRC0xNjAuICBUaGUgcGVudGl1bSBhc3NlbWJlciBpcyBhIGxpdHRsZQotb2ZmIHRoZSBwYWNlIHNpbmNlIEkgb25seSBnZXQgMTA1MCBjeWNsZXMsIHdoaWxlIHRoZSBiZXN0IGlzIDEwMTMuCi1JIGhhdmUgYSBmZXcgaWRlYXMgZm9yIGhvdyB0byBnZXQgYW5vdGhlciAyMCBvciBzbyBjeWNsZXMsIGJ1dCBhdAotdGhpcyBwb2ludCBJIHdpbGwgbm90IGJvdGhlciByaWdodCBub3cuICBJIGJlbGlldmUgdGhlIHRyaWNrIHdpbGwgYmUKLXRvIHJlbW92ZSBteSAnY29weSBYIGFycmF5IG9udG8gc3RhY2snIHVudGlsIGluc2lkZSB0aGUgUklQMSgpIGZpbmN0aW9ucyB0aGUKLWZpcnN0IHRpbWUgcm91bmQuICBUbyBkbyB0aGlzIEkgbmVlZCBhbm90aGVyIHJlZ2lzdGVyIGFuZCB3aWxsIG9ubHkgaGF2ZSBvbmUKLXRlbXBvcmFyeSBvbmUuICBBIGJpdCB0cmlja3kuLi4uICBJIGNhbiBhbHNvIGNsZWFudXAgdGhlIHNhdmluZyBvZiB0aGUgNSB3b3JkcwotYWZ0ZXIgdGhlIGZpcnN0IGhhbGYgb2YgdGhlIGNhbGN1bGF0aW9uLiAgSSBzaG91bGQgcmVhZCB0aGUgb3JpZ2lvbmFsCi12YWx1ZSwgYWRkIHRoZW4gd3JpdGUuICBDdXJyZW50bHkgSSBqdXN0IHNhdmUgdGhlIG5ldyBhbmQgcmVhZCB0aGUgb3JpZ2lvYWwuCi1JIHRoZW4gcmVhZCBib3RoIGF0IHRoZSBlbmQuICBCYWQuCi0KLWVyaWMgKDIwLUphbi0xOTk4KQpkaWZmIC0tZ2l0IGEvY3J5cHRvL3JpcGVtZC9hc20vcmlwcy5jcHAgYi9jcnlwdG8vcmlwZW1kL2FzbS9yaXBzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjdhMTM2Ny4uMDAwMDAwMAotLS0gYS9jcnlwdG8vcmlwZW1kL2FzbS9yaXBzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDgyICswLDAgQEAKLS8vCi0vLyBnZXR0c2MuaW5sCi0vLwotLy8gZ2l2ZXMgYWNjZXNzIHRvIHRoZSBQZW50aXVtJ3MgKHNlY3JldCkgY3ljbGUgY291bnRlcgotLy8KLS8vIFRoaXMgc29mdHdhcmUgd2FzIHdyaXR0ZW4gYnkgTGVvbmFyZCBKYW5rZSAoamFua2VAdW5peGcudWJjLmNhKQotLy8gaW4gMTk5Ni03IGFuZCBpcyBlbnRlcmVkLCBieSBoaW0sIGludG8gdGhlIHB1YmxpYyBkb21haW4uCi0KLSNpZiBkZWZpbmVkKF9fV0FUQ09NQ19fKQotdm9pZCBHZXRUU0ModW5zaWduZWQgbG9uZyYpOwotI3ByYWdtYSBhdXggR2V0VFNDID0gMHgwZiAweDMxICJtb3YgW2VkaV0sIGVheCIgcGFybSBbZWRpXSBtb2RpZnkgW2VkeCBlYXhdOwotI2VsaWYgZGVmaW5lZChfX0dOVUNfXykKLWlubGluZQotdm9pZCBHZXRUU0ModW5zaWduZWQgbG9uZyYgdHNjKQotewotICBhc20gdm9sYXRpbGUoIi5ieXRlIDE1LCA0OVxuXHQiCi0JICAgICAgIDogIj1lYXgiICh0c2MpCi0JICAgICAgIDoKLQkgICAgICAgOiAiJWVkeCIsICIlZWF4Iik7Ci19Ci0jZWxpZiBkZWZpbmVkKF9NU0NfVkVSKQotaW5saW5lCi12b2lkIEdldFRTQyh1bnNpZ25lZCBsb25nJiB0c2MpCi17Ci0gIHVuc2lnbmVkIGxvbmcgYTsKLSAgX19hc20gX2VtaXQgMGZoCi0gIF9fYXNtIF9lbWl0IDMxaAotICBfX2FzbSBtb3YgYSwgZWF4OwotICB0c2M9YTsKLX0KLSNlbmRpZiAgICAgIAotCi0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxvcGVuc3NsL3JpcGVtZC5oPgotCi0jZGVmaW5lIHJpcGVtZDE2MF9ibG9ja194ODYgcmlwZW1kMTYwX2Jsb2NrX2FzbV9ob3N0X29yZGVyCi0KLWV4dGVybiAiQyIgewotdm9pZCByaXBlbWQxNjBfYmxvY2tfeDg2KFJJUEVNRDE2MF9DVFggKmN0eCwgdW5zaWduZWQgY2hhciAqYnVmZmVyLGludCBudW0pOwotfQotCi12b2lkIG1haW4oaW50IGFyZ2MsY2hhciAqYXJndltdKQotCXsKLQl1bnNpZ25lZCBjaGFyIGJ1ZmZlcls2NCoyNTZdOwotCVJJUEVNRDE2MF9DVFggY3R4OwotCXVuc2lnbmVkIGxvbmcgczEsczIsZTEsZTI7Ci0JdW5zaWduZWQgY2hhciBrWzE2XTsKLQl1bnNpZ25lZCBsb25nIGRhdGFbMl07Ci0JdW5zaWduZWQgY2hhciBpdls4XTsKLQlpbnQgaSxudW09MCxudW1tOwotCWludCBqPTA7Ci0KLQlpZiAoYXJnYyA+PSAyKQotCQludW09YXRvaShhcmd2WzFdKTsKLQotCWlmIChudW0gPT0gMCkgbnVtPTE2OwotCWlmIChudW0gPiAyNTApIG51bT0xNjsKLQludW1tPW51bSsyOwotI2lmIDAKLQludW0qPTY0OwotCW51bW0qPTY0OwotI2VuZGlmCi0KLQlmb3IgKGo9MDsgajw2OyBqKyspCi0JCXsKLQkJZm9yIChpPTA7IGk8MTA7IGkrKykgLyoqLwotCQkJewotCQkJcmlwZW1kMTYwX2Jsb2NrX3g4NigmY3R4LGJ1ZmZlcixudW1tKTsKLQkJCUdldFRTQyhzMSk7Ci0JCQlyaXBlbWQxNjBfYmxvY2tfeDg2KCZjdHgsYnVmZmVyLG51bW0pOwotCQkJR2V0VFNDKGUxKTsKLQkJCUdldFRTQyhzMik7Ci0JCQlyaXBlbWQxNjBfYmxvY2tfeDg2KCZjdHgsYnVmZmVyLG51bSk7Ci0JCQlHZXRUU0MoZTIpOwotCQkJcmlwZW1kMTYwX2Jsb2NrX3g4NigmY3R4LGJ1ZmZlcixudW0pOwotCQkJfQotCQlwcmludGYoInJpcGVtZDE2MCAoJWQgYnl0ZXMpICVkICVkICglLjJmKVxuIixudW0qNjQsCi0JCQllMS1zMSxlMi1zMiwoZG91YmxlKSgoZTEtczEpLShlMi1zMikpLzIpOwotCQl9Ci0JfQotCmRpZmYgLS1naXQgYS9jcnlwdG8vcmlwZW1kL2FzbS9ybWQtNTg2LnBsIGIvY3J5cHRvL3JpcGVtZC9hc20vcm1kLTU4Ni5wbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZThiMmJjMi4uMDAwMDAwMAotLS0gYS9jcnlwdG8vcmlwZW1kL2FzbS9ybWQtNTg2LnBsCisrKyAvZGV2L251bGwKQEAgLTEsNTkxICswLDAgQEAKLSMhL3Vzci9sb2NhbC9iaW4vcGVybAotCi0jIE5vcm1hbCBpcyB0aGUKLSMgcmlwZW1kMTYwX2Jsb2NrX2FzbV9kYXRhX29yZGVyKFJJUEVNRDE2MF9DVFggKmMsIFVMT05HICpYLGludCBibG9ja3MpOwotCi0kbm9ybWFsPTA7Ci0KLSQwID1+IG0vKC4qW1wvXFxdKVteXC9cXF0rJC87ICRkaXI9JDE7Ci1wdXNoKEBJTkMsIiR7ZGlyfSIsIiR7ZGlyfS4uLy4uL3Blcmxhc20iKTsKLXJlcXVpcmUgIng4NmFzbS5wbCI7Ci0KLSZhc21faW5pdCgkQVJHVlswXSwkMCk7Ci0KLSRBPSJlY3giOwotJEI9ImVzaSI7Ci0kQz0iZWRpIjsKLSREPSJlYngiOwotJEU9ImVicCI7Ci0kdG1wMT0iZWF4IjsKLSR0bXAyPSJlZHgiOwotCi0kS0wxPTB4NUE4Mjc5OTk7Ci0kS0wyPTB4NkVEOUVCQTE7Ci0kS0wzPTB4OEYxQkJDREM7Ci0kS0w0PTB4QTk1M0ZENEU7Ci0kS1IwPTB4NTBBMjhCRTY7Ci0kS1IxPTB4NUM0REQxMjQ7IAotJEtSMj0weDZENzAzRUYzOwotJEtSMz0weDdBNkQ3NkU5OwotCi0KLUB3bD0oCSAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LDEwLDExLDEyLDEzLDE0LDE1LAotCSA3LCA0LDEzLCAxLDEwLCA2LDE1LCAzLDEyLCAwLCA5LCA1LCAyLDE0LDExLCA4LAotCSAzLDEwLDE0LCA0LCA5LDE1LCA4LCAxLCAyLCA3LCAwLCA2LDEzLDExLCA1LDEyLAotCSAxLCA5LDExLDEwLCAwLCA4LDEyLCA0LDEzLCAzLCA3LDE1LDE0LCA1LCA2LCAyLAotCSA0LCAwLCA1LCA5LCA3LDEyLCAyLDEwLDE0LCAxLCAzLCA4LDExLCA2LDE1LDEzLAotCSApOwotCi1Ad3I9KAkgNSwxNCwgNywgMCwgOSwgMiwxMSwgNCwxMywgNiwxNSwgOCwgMSwxMCwgMywxMiwKLQkgNiwxMSwgMywgNywgMCwxMywgNSwxMCwxNCwxNSwgOCwxMiwgNCwgOSwgMSwgMiwKLQkxNSwgNSwgMSwgMywgNywxNCwgNiwgOSwxMSwgOCwxMiwgMiwxMCwgMCwgNCwxMywKLQkgOCwgNiwgNCwgMSwgMywxMSwxNSwgMCwgNSwxMiwgMiwxMywgOSwgNywxMCwxNCwKLQkxMiwxNSwxMCwgNCwgMSwgNSwgOCwgNywgNiwgMiwxMywxNCwgMCwgMywgOSwxMSwKLQkpOwotCi1Ac2w9KAkxMSwxNCwxNSwxMiwgNSwgOCwgNywgOSwxMSwxMywxNCwxNSwgNiwgNywgOSwgOCwKLQkgNywgNiwgOCwxMywxMSwgOSwgNywxNSwgNywxMiwxNSwgOSwxMSwgNywxMywxMiwKLQkxMSwxMywgNiwgNywxNCwgOSwxMywxNSwxNCwgOCwxMywgNiwgNSwxMiwgNywgNSwKLQkxMSwxMiwxNCwxNSwxNCwxNSwgOSwgOCwgOSwxNCwgNSwgNiwgOCwgNiwgNSwxMiwKLQkgOSwxNSwgNSwxMSwgNiwgOCwxMywxMiwgNSwxMiwxMywxNCwxMSwgOCwgNSwgNiwKLQkgKTsKLQotQHNyPSgJIDgsIDksIDksMTEsMTMsMTUsMTUsIDUsIDcsIDcsIDgsMTEsMTQsMTQsMTIsIDYsCi0JIDksMTMsMTUsIDcsMTIsIDgsIDksMTEsIDcsIDcsMTIsIDcsIDYsMTUsMTMsMTEsCi0JIDksIDcsMTUsMTEsIDgsIDYsIDYsMTQsMTIsMTMsIDUsMTQsMTMsMTMsIDcsIDUsCi0JMTUsIDUsIDgsMTEsMTQsMTQsIDYsMTQsIDYsIDksMTIsIDksMTIsIDUsMTUsIDgsCi0JIDgsIDUsMTIsIDksMTIsIDUsMTQsIDYsIDgsMTMsIDYsIDUsMTUsMTMsMTEsMTEsCi0gCSk7Ci0KLSZyaXBlbWQxNjBfYmxvY2soInJpcGVtZDE2MF9ibG9ja19hc21fZGF0YV9vcmRlciIpOwotJmFzbV9maW5pc2goKTsKLQotc3ViIFh2Ci0JewotCWxvY2FsKCRuKT1AXzsKLQlyZXR1cm4oJnN3dG1wKCRuKSk7Ci0JIyB0bXAgb24gc3RhY2sKLQl9Ci0KLXN1YiBOcAotCXsKLQlsb2NhbCgkcCk9QF87Ci0JbG9jYWwoJW4pPSgkQSwkRSwkQiwkQSwkQywkQiwkRCwkQywkRSwkRCk7Ci0JcmV0dXJuKCRueyRwfSk7Ci0JfQotCi1zdWIgUklQMQotCXsKLQlsb2NhbCgkYSwkYiwkYywkZCwkZSwkcG9zLCRzLCRvLCRwb3MyKT1AXzsKLQotCSZjb21tZW50KCRwKyspOwotCWlmICgkcCAmIDEpCi0JCXsKLQkgIyZtb3YoJHRtcDEsCSRjKSBpZiAkbyA9PSAtMTsKLQkmeG9yKCR0bXAxLAkkZCkgaWYgJG8gPT0gLTE7Ci0JICZtb3YoJHRtcDIsCSZYdigkcG9zKSk7Ci0JJnhvcigkdG1wMSwJJGIpOwotCSAmYWRkKCRhLAkkdG1wMik7Ci0JJnJvdGwoJGMsCTEwKTsKLQkmYWRkKCRhLAkkdG1wMSk7Ci0JICZtb3YoJHRtcDEsCSZOcCgkYykpOwkjIE5FWFQKLQkgIyBYWFgKLQkmcm90bCgkYSwJJHMpOwotCSZhZGQoJGEsCSRlKTsKLQkJfQotCWVsc2UKLQkJewotCSAmeG9yKCR0bXAxLAkkZCk7Ci0JJm1vdigkdG1wMiwJJlh2KCRwb3MpKTsKLQkgJnhvcigkdG1wMSwJJGIpOwotCSZhZGQoJGEsCSR0bXAxKTsKLQkgJm1vdigkdG1wMSwJJk5wKCRjKSkgaWYgJG8gPD0gMDsKLQkgJm1vdigkdG1wMSwJLTEpIGlmICRvID09IDE7Ci0JICMgWFhYIGlmICRvID09IDI7Ci0JJnJvdGwoJGMsCTEwKTsKLQkmYWRkKCRhLAkkdG1wMik7Ci0JICZ4b3IoJHRtcDEsCSZOcCgkZCkpIGlmICRvIDw9IDA7Ci0JICZtb3YoJHRtcDIsCSZYdigkcG9zMikpIGlmICRvID09IDE7Ci0JICZtb3YoJHRtcDIsCSZ3cGFyYW0oMCkpIGlmICRvID09IDI7Ci0JJnJvdGwoJGEsCSRzKTsKLQkmYWRkKCRhLAkkZSk7Ci0JCX0KLQl9Ci0KLXN1YiBSSVAyCi0JewotCWxvY2FsKCRhLCRiLCRjLCRkLCRlLCRwb3MsJHBvczIsJHMsJEssJG8pPUBfOwotCi0jIFhYWFhYWAotCSZjb21tZW50KCRwKyspOwotCWlmICgkcCAmIDEpCi0JCXsKLSMJICZtb3YoJHRtcDIsCSZYdigkcG9zKSkgaWYgJG8gPCAtMTsKLSMJJm1vdigkdG1wMSwJLTEpIGlmICRvIDwgLTE7Ci0KLQkgJmFkZCgkYSwJJHRtcDIpOwotCSZtb3YoJHRtcDIsCSRjKTsKLQkgJnN1YigkdG1wMSwJJGIpOwotCSZhbmQoJHRtcDIsCSRiKTsKLQkgJmFuZCgkdG1wMSwJJGQpOwotCSZvcigkdG1wMiwJJHRtcDEpOwotCSAmbW92KCR0bXAxLAkmWHYoJHBvczIpKSBpZiAkbyA8PSAwOyAjIFhYWFhYWFhYWFhYWFhYCi0JICMgWFhYCi0JJnJvdGwoJGMsCTEwKTsKLQkmbGVhKCRhLAkmRFdQKCRLLCRhLCR0bXAyLDEpKTsKLQkgJm1vdigkdG1wMiwJLTEpIGlmICRvIDw9IDA7Ci0JICMgWFhYCi0JJnJvdGwoJGEsCSRzKTsKLQkmYWRkKCRhLAkkZSk7Ci0JCX0KLQllbHNlCi0JCXsKLQkgIyBYWFgKLQkgJmFkZCgkYSwJJHRtcDEpOwotCSZtb3YoJHRtcDEsCSRjKTsKLQkgJnN1YigkdG1wMiwJJGIpOwotCSZhbmQoJHRtcDEsCSRiKTsKLQkgJmFuZCgkdG1wMiwJJGQpOwotCWlmICgkbyAhPSAyKQotCQl7Ci0JJm9yKCR0bXAxLAkkdG1wMik7Ci0JICZtb3YoJHRtcDIsCSZYdigkcG9zMikpIGlmICRvIDw9IDA7Ci0JICZtb3YoJHRtcDIsCS0xKSBpZiAkbyA9PSAxOwotCSZyb3RsKCRjLAkxMCk7Ci0JJmxlYSgkYSwJJkRXUCgkSywkYSwkdG1wMSwxKSk7Ci0JICZtb3YoJHRtcDEsCS0xKSBpZiAkbyA8PSAwOwotCSAmc3ViKCR0bXAyLAkmTnAoJGMpKSBpZiAkbyA9PSAxOwotCQl9IGVsc2UgewotCSZvcigkdG1wMiwJJHRtcDEpOwotCSAmbW92KCR0bXAxLAkmTnAoJGMpKTsKLQkmcm90bCgkYywJMTApOwotCSZsZWEoJGEsCSZEV1AoJEssJGEsJHRtcDIsMSkpOwotCSAmeG9yKCR0bXAxLAkmTnAoJGQpKTsKLQkJfQotCSZyb3RsKCRhLAkkcyk7Ci0JJmFkZCgkYSwJJGUpOwotCQl9Ci0JfQotCi1zdWIgUklQMwotCXsKLQlsb2NhbCgkYSwkYiwkYywkZCwkZSwkcG9zLCRzLCRLLCRvLCRwb3MyKT1AXzsKLQotCSZjb21tZW50KCRwKyspOwotCWlmICgkcCAmIDEpCi0JCXsKLSMJICZtb3YoJHRtcDIsCS0xKSBpZiAkbyA8IC0xOwotIwkmc3ViKCR0bXAyLAkkYykgaWYgJG8gPCAtMTsKLQkgJm1vdigkdG1wMSwJJlh2KCRwb3MpKTsKLQkmb3IoJHRtcDIsCSRiKTsKLQkgJmFkZCgkYSwJJHRtcDEpOwotCSZ4b3IoJHRtcDIsCSRkKTsKLQkgJm1vdigkdG1wMSwJLTEpIGlmICRvIDw9IDA7CQkjIE5FWFQKLQkgIyBYWFgKLQkmcm90bCgkYywJMTApOwotCSZsZWEoJGEsCSZEV1AoJEssJGEsJHRtcDIsMSkpOwotCSAmc3ViKCR0bXAxLAkmTnAoJGMpKSBpZiAkbyA8PSAwOwkjIE5FWFQKLQkgIyBYWFgKLQkmcm90bCgkYSwJJHMpOwotCSZhZGQoJGEsCSRlKTsKLQkJfQotCWVsc2UKLQkJewotCSAmbW92KCR0bXAyLAkmWHYoJHBvcykpOwotCSZvcigkdG1wMSwJJGIpOwotCSAmYWRkKCRhLAkkdG1wMik7Ci0JJnhvcigkdG1wMSwJJGQpOwotCSAmbW92KCR0bXAyLAktMSkgaWYgJG8gPD0gMDsJCSMgTkVYVAotCSAmbW92KCR0bXAyLAktMSkgaWYgJG8gPT0gMTsKLQkgJm1vdigkdG1wMiwJJlh2KCRwb3MyKSkgaWYgJG8gPT0gMjsKLQkmcm90bCgkYywJMTApOwotCSZsZWEoJGEsCSZEV1AoJEssJGEsJHRtcDEsMSkpOwotCSAmc3ViKCR0bXAyLAkmTnAoJGMpKSBpZiAkbyA8PSAwOwkjIE5FWFQKLQkgJm1vdigkdG1wMSwJJk5wKCRkKSkgaWYgJG8gPT0gMTsKLQkgJm1vdigkdG1wMSwJLTEpIGlmICRvID09IDI7Ci0JJnJvdGwoJGEsCSRzKTsKLQkmYWRkKCRhLAkkZSk7Ci0JCX0KLQl9Ci0KLXN1YiBSSVA0Ci0JewotCWxvY2FsKCRhLCRiLCRjLCRkLCRlLCRwb3MsJHMsJEssJG8pPUBfOwotCi0JJmNvbW1lbnQoJHArKyk7Ci0JaWYgKCRwICYgMSkKLQkJewotIwkgJm1vdigkdG1wMiwJLTEpIGlmICRvID09IC0yOwotIwkmbW92KCR0bXAxLAkkZCkgaWYgJG8gPT0gLTI7Ci0JICZzdWIoJHRtcDIsCSRkKTsKLQkmYW5kKCR0bXAxLAkkYik7Ci0JICZhbmQoJHRtcDIsCSRjKTsKLQkmb3IoJHRtcDIsCSR0bXAxKTsKLQkgJm1vdigkdG1wMSwJJlh2KCRwb3MpKTsKLQkmcm90bCgkYywJMTApOwotCSZsZWEoJGEsCSZEV1AoJEssJGEsJHRtcDIpKTsKLQkgJm1vdigkdG1wMiwJLTEpIHVubGVzcyAkbyA+IDA7CSMgTkVYVAotCSAjIFhYWAotCSZhZGQoJGEsCSR0bXAxKTsKLQkgJm1vdigkdG1wMSwJJk5wKCRkKSkgdW5sZXNzICRvID4gMDsgIyBORVhUCi0JICMgWFhYCi0JJnJvdGwoJGEsCSRzKTsKLQkmYWRkKCRhLAkkZSk7Ci0JCX0KLQllbHNlCi0JCXsKLQkgJnN1YigkdG1wMiwJJGQpOwotCSZhbmQoJHRtcDEsCSRiKTsKLQkgJmFuZCgkdG1wMiwJJGMpOwotCSZvcigkdG1wMiwJJHRtcDEpOwotCSAmbW92KCR0bXAxLAkmWHYoJHBvcykpOwotCSZyb3RsKCRjLAkxMCk7Ci0JJmxlYSgkYSwJJkRXUCgkSywkYSwkdG1wMikpOwotCSAmbW92KCR0bXAyLAktMSkgaWYgJG8gPT0gMDsJIyBORVhUCi0JICZtb3YoJHRtcDIsCS0xKSBpZiAkbyA9PSAxOwotCSAmbW92KCR0bXAyLAktMSkgaWYgJG8gPT0gMjsKLQkgIyBYWFgKLQkmYWRkKCRhLAkkdG1wMSk7Ci0JICZtb3YoJHRtcDEsCSZOcCgkZCkpIGlmICRvID09IDA7CSMgTkVYVAotCSAmc3ViKCR0bXAyLAkmTnAoJGQpKSBpZiAkbyA9PSAxOwotCSAmc3ViKCR0bXAyLAkmTnAoJGMpKSBpZiAkbyA9PSAyOwotCSAjIFhYWAotCSZyb3RsKCRhLAkkcyk7Ci0JJmFkZCgkYSwJJGUpOwotCQl9Ci0JfQotCi1zdWIgUklQNQotCXsKLQlsb2NhbCgkYSwkYiwkYywkZCwkZSwkcG9zLCRzLCRLLCRvKT1AXzsKLQotCSZjb21tZW50KCRwKyspOwotCWlmICgkcCAmIDEpCi0JCXsKLQkgJm1vdigkdG1wMiwJLTEpIGlmICRvID09IC0yOwotCSZzdWIoJHRtcDIsCSRkKSBpZiAkbyA9PSAtMjsKLQkgJm1vdigkdG1wMSwJJlh2KCRwb3MpKTsKLQkmb3IoJHRtcDIsCSRjKTsKLQkgJmFkZCgkYSwJJHRtcDEpOwotCSZ4b3IoJHRtcDIsCSRiKTsKLQkgJm1vdigkdG1wMSwJLTEpIGlmICRvIDw9IDA7Ci0JICMgWFhYCi0JJnJvdGwoJGMsCTEwKTsKLQkmbGVhKCRhLAkmRFdQKCRLLCRhLCR0bXAyLDEpKTsKLQkgJnN1YigkdG1wMSwJJk5wKCRkKSkgaWYgJG8gPD0gMDsKLQkgIyBYWFgKLQkmcm90bCgkYSwJJHMpOwotCSZhZGQoJGEsCSRlKTsKLQkJfQotCWVsc2UKLQkJewotCSAmbW92KCR0bXAyLAkmWHYoJHBvcykpOwotCSZvcigkdG1wMSwJJGMpOwotCSAmYWRkKCRhLAkkdG1wMik7Ci0JJnhvcigkdG1wMSwJJGIpOwotCSAmbW92KCR0bXAyLAktMSkgaWYgJG8gPD0gMDsKLQkgJm1vdigkdG1wMiwJJndwYXJhbSgwKSkgaWYgJG8gPT0gMTsJIyBNaWRkbGUgY29kZQotCSAmbW92KCR0bXAyLAktMSkgaWYgJG8gPT0gMjsKLQkmcm90bCgkYywJMTApOwotCSZsZWEoJGEsCSZEV1AoJEssJGEsJHRtcDEsMSkpOwotCSAmc3ViKCR0bXAyLAkmTnAoJGQpKSBpZiAkbyA8PSAwOwotCSAmbW92KCZzd3RtcCgxNiksCSRBKSBpZiAkbyA9PSAxOwotCSAmbW92KCR0bXAxLAkmTnAoJGQpKSBpZiAkbyA9PSAyOwotCSZyb3RsKCRhLAkkcyk7Ci0JJmFkZCgkYSwJJGUpOwotCQl9Ci0JfQotCi1zdWIgcmlwZW1kMTYwX2Jsb2NrCi0JewotCWxvY2FsKCRuYW1lKT1AXzsKLQotCSZmdW5jdGlvbl9iZWdpbl9CKCRuYW1lLCIiLDMpOwotCi0JIyBwYXJhbWV0ZXIgMSBpcyB0aGUgUklQRU1EMTYwX0NUWCBzdHJ1Y3R1cmUuCi0JIyBBCTAKLQkjIEIJNAotCSMgQwk4Ci0JIyBEIAkxMgotCSMgRSAJMTYKLQotCSZtb3YoJHRtcDIsCSZ3cGFyYW0oMCkpOwotCSAmbW92KCR0bXAxLAkmd3BhcmFtKDEpKTsKLQkmcHVzaCgiZXNpIik7Ci0JICZtb3YoJEEsCSZEV1AoIDAsJHRtcDIsIiIsMCkpOwotCSZwdXNoKCJlZGkiKTsKLQkgJm1vdigkQiwJJkRXUCggNCwkdG1wMiwiIiwwKSk7Ci0JJnB1c2goImVicCIpOwotCSAmbW92KCRDLAkmRFdQKCA4LCR0bXAyLCIiLDApKTsKLQkmcHVzaCgiZWJ4Iik7Ci0JICZzdGFja19wdXNoKDE2KzUrNik7Ci0JCQkgICMgU3BlY2lhbCBjb21tZW50IGFib3V0IHRoZSBmaWd1cmUgb2YgNi4KLQkJCSAgIyBJZGVhIGlzIHRvIHBhZCB0aGUgY3VycmVudCBmcmFtZSBzbwotCQkJICAjIHRoYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2sgZ2V0cyBmYWlybHkKLQkJCSAgIyBhbGlnbmVkLiBXZWxsLCBhcyB5b3UgcmVhbGl6ZSBpdCB3b3VsZAotCQkJICAjIGFsd2F5cyBkZXBlbmQgb24gaG93IHRoZSBmcmFtZSBiZWxvdyBpcwotCQkJICAjIGFsaWduZWQuIFRoZSBnb29kIG5ld3MgYXJlIHRoYXQgZ2NjLTIuOTUKLQkJCSAgIyBhbmQgbGF0ZXIgZG9lcyBrZWVwIGZpcnN0IGFyZ3VtZW50IGF0Ci0JCQkgICMgbGVhc3QgZG91YmxlLXdpc2UgYWxpZ25lZC4KLQkJCSAgIwkJCTxhcHByb0BmeS5jaGFsbWVycy5zZT4KLQotCSZzZXRfbGFiZWwoInN0YXJ0IikgdW5sZXNzICRub3JtYWw7Ci0JJmNvbW1lbnQoIiIpOwotCi0JIyAmbW92KCR0bXAxLAkmd3BhcmFtKDEpKTsgIyBEb25lIGF0IGVuZCBvZiBsb29wCi0JIyAmbW92KCR0bXAyLAkmd3BhcmFtKDApKTsgIyBEb25lIGF0IGVuZCBvZiBsb29wCi0KLQlmb3IgKCR6PTA7ICR6PDE2OyAkeis9MikKLQkJewotCQkmbW92KCRELAkJJkRXUCggJHoqNCwkdG1wMSwiIiwwKSk7Ci0JCSAmbW92KCRFLAkJJkRXUCggKCR6KzEpKjQsJHRtcDEsIiIsMCkpOwotCQkmbW92KCZzd3RtcCgkeiksCSREKTsKLQkJICZtb3YoJnN3dG1wKCR6KzEpLAkkRSk7Ci0JCX0KLQkmbW92KCR0bXAxLAkkQyk7Ci0JICZtb3YoJEQsCSZEV1AoMTIsJHRtcDIsIiIsMCkpOwotCSZtb3YoJEUsCSZEV1AoMTYsJHRtcDIsIiIsMCkpOwotCi0JJlJJUDEoJEEsJEIsJEMsJEQsJEUsJHdsWyAwXSwkc2xbIDBdLC0xKTsKLQkmUklQMSgkRSwkQSwkQiwkQywkRCwkd2xbIDFdLCRzbFsgMV0sMCk7Ci0JJlJJUDEoJEQsJEUsJEEsJEIsJEMsJHdsWyAyXSwkc2xbIDJdLDApOwotCSZSSVAxKCRDLCRELCRFLCRBLCRCLCR3bFsgM10sJHNsWyAzXSwwKTsKLQkmUklQMSgkQiwkQywkRCwkRSwkQSwkd2xbIDRdLCRzbFsgNF0sMCk7Ci0JJlJJUDEoJEEsJEIsJEMsJEQsJEUsJHdsWyA1XSwkc2xbIDVdLDApOwotCSZSSVAxKCRFLCRBLCRCLCRDLCRELCR3bFsgNl0sJHNsWyA2XSwwKTsKLQkmUklQMSgkRCwkRSwkQSwkQiwkQywkd2xbIDddLCRzbFsgN10sMCk7Ci0JJlJJUDEoJEMsJEQsJEUsJEEsJEIsJHdsWyA4XSwkc2xbIDhdLDApOwotCSZSSVAxKCRCLCRDLCRELCRFLCRBLCR3bFsgOV0sJHNsWyA5XSwwKTsKLQkmUklQMSgkQSwkQiwkQywkRCwkRSwkd2xbMTBdLCRzbFsxMF0sMCk7Ci0JJlJJUDEoJEUsJEEsJEIsJEMsJEQsJHdsWzExXSwkc2xbMTFdLDApOwotCSZSSVAxKCRELCRFLCRBLCRCLCRDLCR3bFsxMl0sJHNsWzEyXSwwKTsKLQkmUklQMSgkQywkRCwkRSwkQSwkQiwkd2xbMTNdLCRzbFsxM10sMCk7Ci0JJlJJUDEoJEIsJEMsJEQsJEUsJEEsJHdsWzE0XSwkc2xbMTRdLDApOwotCSZSSVAxKCRBLCRCLCRDLCRELCRFLCR3bFsxNV0sJHNsWzE1XSwxLCR3bFsxNl0pOwotCi0JJlJJUDIoJEUsJEEsJEIsJEMsJEQsJHdsWzE2XSwkd2xbMTddLCRzbFsxNl0sJEtMMSwtMSk7Ci0JJlJJUDIoJEQsJEUsJEEsJEIsJEMsJHdsWzE3XSwkd2xbMThdLCRzbFsxN10sJEtMMSwwKTsKLQkmUklQMigkQywkRCwkRSwkQSwkQiwkd2xbMThdLCR3bFsxOV0sJHNsWzE4XSwkS0wxLDApOwotCSZSSVAyKCRCLCRDLCRELCRFLCRBLCR3bFsxOV0sJHdsWzIwXSwkc2xbMTldLCRLTDEsMCk7Ci0JJlJJUDIoJEEsJEIsJEMsJEQsJEUsJHdsWzIwXSwkd2xbMjFdLCRzbFsyMF0sJEtMMSwwKTsKLQkmUklQMigkRSwkQSwkQiwkQywkRCwkd2xbMjFdLCR3bFsyMl0sJHNsWzIxXSwkS0wxLDApOwotCSZSSVAyKCRELCRFLCRBLCRCLCRDLCR3bFsyMl0sJHdsWzIzXSwkc2xbMjJdLCRLTDEsMCk7Ci0JJlJJUDIoJEMsJEQsJEUsJEEsJEIsJHdsWzIzXSwkd2xbMjRdLCRzbFsyM10sJEtMMSwwKTsKLQkmUklQMigkQiwkQywkRCwkRSwkQSwkd2xbMjRdLCR3bFsyNV0sJHNsWzI0XSwkS0wxLDApOwotCSZSSVAyKCRBLCRCLCRDLCRELCRFLCR3bFsyNV0sJHdsWzI2XSwkc2xbMjVdLCRLTDEsMCk7Ci0JJlJJUDIoJEUsJEEsJEIsJEMsJEQsJHdsWzI2XSwkd2xbMjddLCRzbFsyNl0sJEtMMSwwKTsKLQkmUklQMigkRCwkRSwkQSwkQiwkQywkd2xbMjddLCR3bFsyOF0sJHNsWzI3XSwkS0wxLDApOwotCSZSSVAyKCRDLCRELCRFLCRBLCRCLCR3bFsyOF0sJHdsWzI5XSwkc2xbMjhdLCRLTDEsMCk7Ci0JJlJJUDIoJEIsJEMsJEQsJEUsJEEsJHdsWzI5XSwkd2xbMzBdLCRzbFsyOV0sJEtMMSwwKTsKLQkmUklQMigkQSwkQiwkQywkRCwkRSwkd2xbMzBdLCR3bFszMV0sJHNsWzMwXSwkS0wxLDApOwotCSZSSVAyKCRFLCRBLCRCLCRDLCRELCR3bFszMV0sJHdsWzMyXSwkc2xbMzFdLCRLTDEsMSk7Ci0KLQkmUklQMygkRCwkRSwkQSwkQiwkQywkd2xbMzJdLCRzbFszMl0sJEtMMiwtMSk7Ci0JJlJJUDMoJEMsJEQsJEUsJEEsJEIsJHdsWzMzXSwkc2xbMzNdLCRLTDIsMCk7Ci0JJlJJUDMoJEIsJEMsJEQsJEUsJEEsJHdsWzM0XSwkc2xbMzRdLCRLTDIsMCk7Ci0JJlJJUDMoJEEsJEIsJEMsJEQsJEUsJHdsWzM1XSwkc2xbMzVdLCRLTDIsMCk7Ci0JJlJJUDMoJEUsJEEsJEIsJEMsJEQsJHdsWzM2XSwkc2xbMzZdLCRLTDIsMCk7Ci0JJlJJUDMoJEQsJEUsJEEsJEIsJEMsJHdsWzM3XSwkc2xbMzddLCRLTDIsMCk7Ci0JJlJJUDMoJEMsJEQsJEUsJEEsJEIsJHdsWzM4XSwkc2xbMzhdLCRLTDIsMCk7Ci0JJlJJUDMoJEIsJEMsJEQsJEUsJEEsJHdsWzM5XSwkc2xbMzldLCRLTDIsMCk7Ci0JJlJJUDMoJEEsJEIsJEMsJEQsJEUsJHdsWzQwXSwkc2xbNDBdLCRLTDIsMCk7Ci0JJlJJUDMoJEUsJEEsJEIsJEMsJEQsJHdsWzQxXSwkc2xbNDFdLCRLTDIsMCk7Ci0JJlJJUDMoJEQsJEUsJEEsJEIsJEMsJHdsWzQyXSwkc2xbNDJdLCRLTDIsMCk7Ci0JJlJJUDMoJEMsJEQsJEUsJEEsJEIsJHdsWzQzXSwkc2xbNDNdLCRLTDIsMCk7Ci0JJlJJUDMoJEIsJEMsJEQsJEUsJEEsJHdsWzQ0XSwkc2xbNDRdLCRLTDIsMCk7Ci0JJlJJUDMoJEEsJEIsJEMsJEQsJEUsJHdsWzQ1XSwkc2xbNDVdLCRLTDIsMCk7Ci0JJlJJUDMoJEUsJEEsJEIsJEMsJEQsJHdsWzQ2XSwkc2xbNDZdLCRLTDIsMCk7Ci0JJlJJUDMoJEQsJEUsJEEsJEIsJEMsJHdsWzQ3XSwkc2xbNDddLCRLTDIsMSk7Ci0KLQkmUklQNCgkQywkRCwkRSwkQSwkQiwkd2xbNDhdLCRzbFs0OF0sJEtMMywtMSk7Ci0JJlJJUDQoJEIsJEMsJEQsJEUsJEEsJHdsWzQ5XSwkc2xbNDldLCRLTDMsMCk7Ci0JJlJJUDQoJEEsJEIsJEMsJEQsJEUsJHdsWzUwXSwkc2xbNTBdLCRLTDMsMCk7Ci0JJlJJUDQoJEUsJEEsJEIsJEMsJEQsJHdsWzUxXSwkc2xbNTFdLCRLTDMsMCk7Ci0JJlJJUDQoJEQsJEUsJEEsJEIsJEMsJHdsWzUyXSwkc2xbNTJdLCRLTDMsMCk7Ci0JJlJJUDQoJEMsJEQsJEUsJEEsJEIsJHdsWzUzXSwkc2xbNTNdLCRLTDMsMCk7Ci0JJlJJUDQoJEIsJEMsJEQsJEUsJEEsJHdsWzU0XSwkc2xbNTRdLCRLTDMsMCk7Ci0JJlJJUDQoJEEsJEIsJEMsJEQsJEUsJHdsWzU1XSwkc2xbNTVdLCRLTDMsMCk7Ci0JJlJJUDQoJEUsJEEsJEIsJEMsJEQsJHdsWzU2XSwkc2xbNTZdLCRLTDMsMCk7Ci0JJlJJUDQoJEQsJEUsJEEsJEIsJEMsJHdsWzU3XSwkc2xbNTddLCRLTDMsMCk7Ci0JJlJJUDQoJEMsJEQsJEUsJEEsJEIsJHdsWzU4XSwkc2xbNThdLCRLTDMsMCk7Ci0JJlJJUDQoJEIsJEMsJEQsJEUsJEEsJHdsWzU5XSwkc2xbNTldLCRLTDMsMCk7Ci0JJlJJUDQoJEEsJEIsJEMsJEQsJEUsJHdsWzYwXSwkc2xbNjBdLCRLTDMsMCk7Ci0JJlJJUDQoJEUsJEEsJEIsJEMsJEQsJHdsWzYxXSwkc2xbNjFdLCRLTDMsMCk7Ci0JJlJJUDQoJEQsJEUsJEEsJEIsJEMsJHdsWzYyXSwkc2xbNjJdLCRLTDMsMCk7Ci0JJlJJUDQoJEMsJEQsJEUsJEEsJEIsJHdsWzYzXSwkc2xbNjNdLCRLTDMsMSk7Ci0KLQkmUklQNSgkQiwkQywkRCwkRSwkQSwkd2xbNjRdLCRzbFs2NF0sJEtMNCwtMSk7Ci0JJlJJUDUoJEEsJEIsJEMsJEQsJEUsJHdsWzY1XSwkc2xbNjVdLCRLTDQsMCk7Ci0JJlJJUDUoJEUsJEEsJEIsJEMsJEQsJHdsWzY2XSwkc2xbNjZdLCRLTDQsMCk7Ci0JJlJJUDUoJEQsJEUsJEEsJEIsJEMsJHdsWzY3XSwkc2xbNjddLCRLTDQsMCk7Ci0JJlJJUDUoJEMsJEQsJEUsJEEsJEIsJHdsWzY4XSwkc2xbNjhdLCRLTDQsMCk7Ci0JJlJJUDUoJEIsJEMsJEQsJEUsJEEsJHdsWzY5XSwkc2xbNjldLCRLTDQsMCk7Ci0JJlJJUDUoJEEsJEIsJEMsJEQsJEUsJHdsWzcwXSwkc2xbNzBdLCRLTDQsMCk7Ci0JJlJJUDUoJEUsJEEsJEIsJEMsJEQsJHdsWzcxXSwkc2xbNzFdLCRLTDQsMCk7Ci0JJlJJUDUoJEQsJEUsJEEsJEIsJEMsJHdsWzcyXSwkc2xbNzJdLCRLTDQsMCk7Ci0JJlJJUDUoJEMsJEQsJEUsJEEsJEIsJHdsWzczXSwkc2xbNzNdLCRLTDQsMCk7Ci0JJlJJUDUoJEIsJEMsJEQsJEUsJEEsJHdsWzc0XSwkc2xbNzRdLCRLTDQsMCk7Ci0JJlJJUDUoJEEsJEIsJEMsJEQsJEUsJHdsWzc1XSwkc2xbNzVdLCRLTDQsMCk7Ci0JJlJJUDUoJEUsJEEsJEIsJEMsJEQsJHdsWzc2XSwkc2xbNzZdLCRLTDQsMCk7Ci0JJlJJUDUoJEQsJEUsJEEsJEIsJEMsJHdsWzc3XSwkc2xbNzddLCRLTDQsMCk7Ci0JJlJJUDUoJEMsJEQsJEUsJEEsJEIsJHdsWzc4XSwkc2xbNzhdLCRLTDQsMCk7Ci0JJlJJUDUoJEIsJEMsJEQsJEUsJEEsJHdsWzc5XSwkc2xbNzldLCRLTDQsMSk7Ci0KLQkjICZtb3YoJHRtcDIsCSZ3cGFyYW0oMCkpOyAjIG1vdmVkIGludG8gbGFzdCBSSVA1Ci0JIyAmbW92KCZzd3RtcCgxNiksCSRBKTsKLQkgJm1vdigkQSwJJkRXUCggMCwkdG1wMiwiIiwwKSk7Ci0JJm1vdigmc3d0bXAoMTYrMSksCSRCKTsKLQkgJm1vdigmc3d0bXAoMTYrMiksCSRDKTsKLQkmbW92KCRCLAkmRFdQKCA0LCR0bXAyLCIiLDApKTsKLQkgJm1vdigmc3d0bXAoMTYrMyksCSREKTsKLQkmbW92KCRDLAkmRFdQKCA4LCR0bXAyLCIiLDApKTsKLQkgJm1vdigmc3d0bXAoMTYrNCksCSRFKTsKLQkmbW92KCRELAkmRFdQKDEyLCR0bXAyLCIiLDApKTsKLQkgJm1vdigkRSwJJkRXUCgxNiwkdG1wMiwiIiwwKSk7Ci0KLQkmUklQNSgkQSwkQiwkQywkRCwkRSwkd3JbIDBdLCRzclsgMF0sJEtSMCwtMik7Ci0JJlJJUDUoJEUsJEEsJEIsJEMsJEQsJHdyWyAxXSwkc3JbIDFdLCRLUjAsMCk7Ci0JJlJJUDUoJEQsJEUsJEEsJEIsJEMsJHdyWyAyXSwkc3JbIDJdLCRLUjAsMCk7Ci0JJlJJUDUoJEMsJEQsJEUsJEEsJEIsJHdyWyAzXSwkc3JbIDNdLCRLUjAsMCk7Ci0JJlJJUDUoJEIsJEMsJEQsJEUsJEEsJHdyWyA0XSwkc3JbIDRdLCRLUjAsMCk7Ci0JJlJJUDUoJEEsJEIsJEMsJEQsJEUsJHdyWyA1XSwkc3JbIDVdLCRLUjAsMCk7Ci0JJlJJUDUoJEUsJEEsJEIsJEMsJEQsJHdyWyA2XSwkc3JbIDZdLCRLUjAsMCk7Ci0JJlJJUDUoJEQsJEUsJEEsJEIsJEMsJHdyWyA3XSwkc3JbIDddLCRLUjAsMCk7Ci0JJlJJUDUoJEMsJEQsJEUsJEEsJEIsJHdyWyA4XSwkc3JbIDhdLCRLUjAsMCk7Ci0JJlJJUDUoJEIsJEMsJEQsJEUsJEEsJHdyWyA5XSwkc3JbIDldLCRLUjAsMCk7Ci0JJlJJUDUoJEEsJEIsJEMsJEQsJEUsJHdyWzEwXSwkc3JbMTBdLCRLUjAsMCk7Ci0JJlJJUDUoJEUsJEEsJEIsJEMsJEQsJHdyWzExXSwkc3JbMTFdLCRLUjAsMCk7Ci0JJlJJUDUoJEQsJEUsJEEsJEIsJEMsJHdyWzEyXSwkc3JbMTJdLCRLUjAsMCk7Ci0JJlJJUDUoJEMsJEQsJEUsJEEsJEIsJHdyWzEzXSwkc3JbMTNdLCRLUjAsMCk7Ci0JJlJJUDUoJEIsJEMsJEQsJEUsJEEsJHdyWzE0XSwkc3JbMTRdLCRLUjAsMCk7Ci0JJlJJUDUoJEEsJEIsJEMsJEQsJEUsJHdyWzE1XSwkc3JbMTVdLCRLUjAsMik7Ci0KLQkmUklQNCgkRSwkQSwkQiwkQywkRCwkd3JbMTZdLCRzclsxNl0sJEtSMSwtMik7Ci0JJlJJUDQoJEQsJEUsJEEsJEIsJEMsJHdyWzE3XSwkc3JbMTddLCRLUjEsMCk7Ci0JJlJJUDQoJEMsJEQsJEUsJEEsJEIsJHdyWzE4XSwkc3JbMThdLCRLUjEsMCk7Ci0JJlJJUDQoJEIsJEMsJEQsJEUsJEEsJHdyWzE5XSwkc3JbMTldLCRLUjEsMCk7Ci0JJlJJUDQoJEEsJEIsJEMsJEQsJEUsJHdyWzIwXSwkc3JbMjBdLCRLUjEsMCk7Ci0JJlJJUDQoJEUsJEEsJEIsJEMsJEQsJHdyWzIxXSwkc3JbMjFdLCRLUjEsMCk7Ci0JJlJJUDQoJEQsJEUsJEEsJEIsJEMsJHdyWzIyXSwkc3JbMjJdLCRLUjEsMCk7Ci0JJlJJUDQoJEMsJEQsJEUsJEEsJEIsJHdyWzIzXSwkc3JbMjNdLCRLUjEsMCk7Ci0JJlJJUDQoJEIsJEMsJEQsJEUsJEEsJHdyWzI0XSwkc3JbMjRdLCRLUjEsMCk7Ci0JJlJJUDQoJEEsJEIsJEMsJEQsJEUsJHdyWzI1XSwkc3JbMjVdLCRLUjEsMCk7Ci0JJlJJUDQoJEUsJEEsJEIsJEMsJEQsJHdyWzI2XSwkc3JbMjZdLCRLUjEsMCk7Ci0JJlJJUDQoJEQsJEUsJEEsJEIsJEMsJHdyWzI3XSwkc3JbMjddLCRLUjEsMCk7Ci0JJlJJUDQoJEMsJEQsJEUsJEEsJEIsJHdyWzI4XSwkc3JbMjhdLCRLUjEsMCk7Ci0JJlJJUDQoJEIsJEMsJEQsJEUsJEEsJHdyWzI5XSwkc3JbMjldLCRLUjEsMCk7Ci0JJlJJUDQoJEEsJEIsJEMsJEQsJEUsJHdyWzMwXSwkc3JbMzBdLCRLUjEsMCk7Ci0JJlJJUDQoJEUsJEEsJEIsJEMsJEQsJHdyWzMxXSwkc3JbMzFdLCRLUjEsMik7Ci0KLQkmUklQMygkRCwkRSwkQSwkQiwkQywkd3JbMzJdLCRzclszMl0sJEtSMiwtMik7Ci0JJlJJUDMoJEMsJEQsJEUsJEEsJEIsJHdyWzMzXSwkc3JbMzNdLCRLUjIsMCk7Ci0JJlJJUDMoJEIsJEMsJEQsJEUsJEEsJHdyWzM0XSwkc3JbMzRdLCRLUjIsMCk7Ci0JJlJJUDMoJEEsJEIsJEMsJEQsJEUsJHdyWzM1XSwkc3JbMzVdLCRLUjIsMCk7Ci0JJlJJUDMoJEUsJEEsJEIsJEMsJEQsJHdyWzM2XSwkc3JbMzZdLCRLUjIsMCk7Ci0JJlJJUDMoJEQsJEUsJEEsJEIsJEMsJHdyWzM3XSwkc3JbMzddLCRLUjIsMCk7Ci0JJlJJUDMoJEMsJEQsJEUsJEEsJEIsJHdyWzM4XSwkc3JbMzhdLCRLUjIsMCk7Ci0JJlJJUDMoJEIsJEMsJEQsJEUsJEEsJHdyWzM5XSwkc3JbMzldLCRLUjIsMCk7Ci0JJlJJUDMoJEEsJEIsJEMsJEQsJEUsJHdyWzQwXSwkc3JbNDBdLCRLUjIsMCk7Ci0JJlJJUDMoJEUsJEEsJEIsJEMsJEQsJHdyWzQxXSwkc3JbNDFdLCRLUjIsMCk7Ci0JJlJJUDMoJEQsJEUsJEEsJEIsJEMsJHdyWzQyXSwkc3JbNDJdLCRLUjIsMCk7Ci0JJlJJUDMoJEMsJEQsJEUsJEEsJEIsJHdyWzQzXSwkc3JbNDNdLCRLUjIsMCk7Ci0JJlJJUDMoJEIsJEMsJEQsJEUsJEEsJHdyWzQ0XSwkc3JbNDRdLCRLUjIsMCk7Ci0JJlJJUDMoJEEsJEIsJEMsJEQsJEUsJHdyWzQ1XSwkc3JbNDVdLCRLUjIsMCk7Ci0JJlJJUDMoJEUsJEEsJEIsJEMsJEQsJHdyWzQ2XSwkc3JbNDZdLCRLUjIsMCk7Ci0JJlJJUDMoJEQsJEUsJEEsJEIsJEMsJHdyWzQ3XSwkc3JbNDddLCRLUjIsMiwkd3JbNDhdKTsKLQotCSZSSVAyKCRDLCRELCRFLCRBLCRCLCR3cls0OF0sJHdyWzQ5XSwkc3JbNDhdLCRLUjMsLTIpOwotCSZSSVAyKCRCLCRDLCRELCRFLCRBLCR3cls0OV0sJHdyWzUwXSwkc3JbNDldLCRLUjMsMCk7Ci0JJlJJUDIoJEEsJEIsJEMsJEQsJEUsJHdyWzUwXSwkd3JbNTFdLCRzcls1MF0sJEtSMywwKTsKLQkmUklQMigkRSwkQSwkQiwkQywkRCwkd3JbNTFdLCR3cls1Ml0sJHNyWzUxXSwkS1IzLDApOwotCSZSSVAyKCRELCRFLCRBLCRCLCRDLCR3cls1Ml0sJHdyWzUzXSwkc3JbNTJdLCRLUjMsMCk7Ci0JJlJJUDIoJEMsJEQsJEUsJEEsJEIsJHdyWzUzXSwkd3JbNTRdLCRzcls1M10sJEtSMywwKTsKLQkmUklQMigkQiwkQywkRCwkRSwkQSwkd3JbNTRdLCR3cls1NV0sJHNyWzU0XSwkS1IzLDApOwotCSZSSVAyKCRBLCRCLCRDLCRELCRFLCR3cls1NV0sJHdyWzU2XSwkc3JbNTVdLCRLUjMsMCk7Ci0JJlJJUDIoJEUsJEEsJEIsJEMsJEQsJHdyWzU2XSwkd3JbNTddLCRzcls1Nl0sJEtSMywwKTsKLQkmUklQMigkRCwkRSwkQSwkQiwkQywkd3JbNTddLCR3cls1OF0sJHNyWzU3XSwkS1IzLDApOwotCSZSSVAyKCRDLCRELCRFLCRBLCRCLCR3cls1OF0sJHdyWzU5XSwkc3JbNThdLCRLUjMsMCk7Ci0JJlJJUDIoJEIsJEMsJEQsJEUsJEEsJHdyWzU5XSwkd3JbNjBdLCRzcls1OV0sJEtSMywwKTsKLQkmUklQMigkQSwkQiwkQywkRCwkRSwkd3JbNjBdLCR3cls2MV0sJHNyWzYwXSwkS1IzLDApOwotCSZSSVAyKCRFLCRBLCRCLCRDLCRELCR3cls2MV0sJHdyWzYyXSwkc3JbNjFdLCRLUjMsMCk7Ci0JJlJJUDIoJEQsJEUsJEEsJEIsJEMsJHdyWzYyXSwkd3JbNjNdLCRzcls2Ml0sJEtSMywwKTsKLQkmUklQMigkQywkRCwkRSwkQSwkQiwkd3JbNjNdLCR3cls2NF0sJHNyWzYzXSwkS1IzLDIpOwotCi0JJlJJUDEoJEIsJEMsJEQsJEUsJEEsJHdyWzY0XSwkc3JbNjRdLC0yKTsKLQkmUklQMSgkQSwkQiwkQywkRCwkRSwkd3JbNjVdLCRzcls2NV0sMCk7Ci0JJlJJUDEoJEUsJEEsJEIsJEMsJEQsJHdyWzY2XSwkc3JbNjZdLDApOwotCSZSSVAxKCRELCRFLCRBLCRCLCRDLCR3cls2N10sJHNyWzY3XSwwKTsKLQkmUklQMSgkQywkRCwkRSwkQSwkQiwkd3JbNjhdLCRzcls2OF0sMCk7Ci0JJlJJUDEoJEIsJEMsJEQsJEUsJEEsJHdyWzY5XSwkc3JbNjldLDApOwotCSZSSVAxKCRBLCRCLCRDLCRELCRFLCR3cls3MF0sJHNyWzcwXSwwKTsKLQkmUklQMSgkRSwkQSwkQiwkQywkRCwkd3JbNzFdLCRzcls3MV0sMCk7Ci0JJlJJUDEoJEQsJEUsJEEsJEIsJEMsJHdyWzcyXSwkc3JbNzJdLDApOwotCSZSSVAxKCRDLCRELCRFLCRBLCRCLCR3cls3M10sJHNyWzczXSwwKTsKLQkmUklQMSgkQiwkQywkRCwkRSwkQSwkd3JbNzRdLCRzcls3NF0sMCk7Ci0JJlJJUDEoJEEsJEIsJEMsJEQsJEUsJHdyWzc1XSwkc3JbNzVdLDApOwotCSZSSVAxKCRFLCRBLCRCLCRDLCRELCR3cls3Nl0sJHNyWzc2XSwwKTsKLQkmUklQMSgkRCwkRSwkQSwkQiwkQywkd3JbNzddLCRzcls3N10sMCk7Ci0JJlJJUDEoJEMsJEQsJEUsJEEsJEIsJHdyWzc4XSwkc3JbNzhdLDApOwotCSZSSVAxKCRCLCRDLCRELCRFLCRBLCR3cls3OV0sJHNyWzc5XSwyKTsKLQotCSMgJm1vdigkdG1wMiwJJndwYXJhbSgwKSk7ICMgTW92ZWQgaW50byBsYXN0IHJvdW5kCi0KLQkgJm1vdigkdG1wMSwJJkRXUCggNCwkdG1wMiwiIiwwKSk7CSMgY3R4LT5CCi0gCSZhZGQoJEQsCSR0bXAxKTsJCi0JICZtb3YoJHRtcDEsCSZzd3RtcCgxNisyKSk7CQkjICRjCi0JJmFkZCgkRCwJJHRtcDEpOwotCi0JICZtb3YoJHRtcDEsCSZEV1AoIDgsJHRtcDIsIiIsMCkpOwkjIGN0eC0+QwotCSZhZGQoJEUsCSR0bXAxKTsJCi0JICZtb3YoJHRtcDEsCSZzd3RtcCgxNiszKSk7CQkjICRkCi0JJmFkZCgkRSwJJHRtcDEpOwotCi0JICZtb3YoJHRtcDEsCSZEV1AoMTIsJHRtcDIsIiIsMCkpOwkjIGN0eC0+RAotCSZhZGQoJEEsCSR0bXAxKTsJCi0JICZtb3YoJHRtcDEsCSZzd3RtcCgxNis0KSk7CQkjICRlCi0JJmFkZCgkQSwJJHRtcDEpOwotCi0KLQkgJm1vdigkdG1wMSwJJkRXUCgxNiwkdG1wMiwiIiwwKSk7CSMgY3R4LT5FCi0JJmFkZCgkQiwJJHRtcDEpOwkKLQkgJm1vdigkdG1wMSwJJnN3dG1wKDE2KzApKTsJCSMgJGEKLQkmYWRkKCRCLAkkdG1wMSk7Ci0KLQkgJm1vdigkdG1wMSwJJkRXUCggMCwkdG1wMiwiIiwwKSk7CSMgY3R4LT5BCi0JJmFkZCgkQywJJHRtcDEpOwkKLQkgJm1vdigkdG1wMSwJJnN3dG1wKDE2KzEpKTsJCSMgJGIKLQkmYWRkKCRDLAkkdG1wMSk7Ci0KLQkgJm1vdigkdG1wMSwJJndwYXJhbSgyKSk7Ci0KLQkmbW92KCZEV1AoIDAsJHRtcDIsIiIsMCksCSREKTsKLQkgJm1vdigmRFdQKCA0LCR0bXAyLCIiLDApLAkkRSk7Ci0JJm1vdigmRFdQKCA4LCR0bXAyLCIiLDApLAkkQSk7Ci0JICZzdWIoJHRtcDEsMSk7Ci0JJm1vdigmRFdQKDEyLCR0bXAyLCIiLDApLAkkQik7Ci0JICZtb3YoJkRXUCgxNiwkdG1wMiwiIiwwKSwJJEMpOwotCi0JJmpsZSgmbGFiZWwoImdldF9vdXQiKSk7Ci0KLQkmbW92KCZ3cGFyYW0oMiksJHRtcDEpOwotCSAmbW92KCRDLAkkQSk7Ci0JJm1vdigkdG1wMSwJJndwYXJhbSgxKSk7Ci0JICZtb3YoJEEsCSREKTsKLQkmYWRkKCR0bXAxLAk2NCk7Ci0JICZtb3YoJEIsCSRFKTsKLQkmbW92KCZ3cGFyYW0oMSksJHRtcDEpOwotCi0JJmptcCgmbGFiZWwoInN0YXJ0IikpOwotCi0JJnNldF9sYWJlbCgiZ2V0X291dCIpOwotCi0JJnN0YWNrX3BvcCgxNis1KzYpOwotCi0JJnBvcCgiZWJ4Iik7Ci0JJnBvcCgiZWJwIik7Ci0JJnBvcCgiZWRpIik7Ci0JJnBvcCgiZXNpIik7Ci0JJnJldCgpOwotCSZmdW5jdGlvbl9lbmRfQigkbmFtZSk7Ci0JfQotCmRpZmYgLS1naXQgYS9jcnlwdG8vcmlwZW1kL3JpcGVtZC5oIGIvY3J5cHRvL3JpcGVtZC9yaXBlbWQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTg5YmQ4Yy4uMDAwMDAwMAotLS0gYS9jcnlwdG8vcmlwZW1kL3JpcGVtZC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTA3ICswLDAgQEAKLS8qIGNyeXB0by9yaXBlbWQvcmlwZW1kLmggKi8KLS8qIENvcHlyaWdodCAoQykgMTk5NS0xOTk4IEVyaWMgWW91bmcgKGVheUBjcnlwdHNvZnQuY29tKQotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIHBhY2thZ2UgaXMgYW4gU1NMIGltcGxlbWVudGF0aW9uIHdyaXR0ZW4KLSAqIGJ5IEVyaWMgWW91bmcgKGVheUBjcnlwdHNvZnQuY29tKS4KLSAqIFRoZSBpbXBsZW1lbnRhdGlvbiB3YXMgd3JpdHRlbiBzbyBhcyB0byBjb25mb3JtIHdpdGggTmV0c2NhcGVzIFNTTC4KLSAqIAotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgZm9yIGNvbW1lcmNpYWwgYW5kIG5vbi1jb21tZXJjaWFsIHVzZSBhcyBsb25nIGFzCi0gKiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIGFoZWFyZWQgdG8uICBUaGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFwcGx5IHRvIGFsbCBjb2RlIGZvdW5kIGluIHRoaXMgZGlzdHJpYnV0aW9uLCBiZSBpdCB0aGUgUkM0LCBSU0EsCi0gKiBsaGFzaCwgREVTLCBldGMuLCBjb2RlOyBub3QganVzdCB0aGUgU1NMIGNvZGUuICBUaGUgU1NMIGRvY3VtZW50YXRpb24KLSAqIGluY2x1ZGVkIHdpdGggdGhpcyBkaXN0cmlidXRpb24gaXMgY292ZXJlZCBieSB0aGUgc2FtZSBjb3B5cmlnaHQgdGVybXMKLSAqIGV4Y2VwdCB0aGF0IHRoZSBob2xkZXIgaXMgVGltIEh1ZHNvbiAodGpoQGNyeXB0c29mdC5jb20pLgotICogCi0gKiBDb3B5cmlnaHQgcmVtYWlucyBFcmljIFlvdW5nJ3MsIGFuZCBhcyBzdWNoIGFueSBDb3B5cmlnaHQgbm90aWNlcyBpbgotICogdGhlIGNvZGUgYXJlIG5vdCB0byBiZSByZW1vdmVkLgotICogSWYgdGhpcyBwYWNrYWdlIGlzIHVzZWQgaW4gYSBwcm9kdWN0LCBFcmljIFlvdW5nIHNob3VsZCBiZSBnaXZlbiBhdHRyaWJ1dGlvbgotICogYXMgdGhlIGF1dGhvciBvZiB0aGUgcGFydHMgb2YgdGhlIGxpYnJhcnkgdXNlZC4KLSAqIFRoaXMgY2FuIGJlIGluIHRoZSBmb3JtIG9mIGEgdGV4dHVhbCBtZXNzYWdlIGF0IHByb2dyYW0gc3RhcnR1cCBvcgotICogaW4gZG9jdW1lbnRhdGlvbiAob25saW5lIG9yIHRleHR1YWwpIHByb3ZpZGVkIHdpdGggdGhlIHBhY2thZ2UuCi0gKiAKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzIHNvZnR3YXJlCi0gKiAgICBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnZW1lbnQ6Ci0gKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIGNyeXB0b2dyYXBoaWMgc29mdHdhcmUgd3JpdHRlbiBieQotICogICAgIEVyaWMgWW91bmcgKGVheUBjcnlwdHNvZnQuY29tKSIKLSAqICAgIFRoZSB3b3JkICdjcnlwdG9ncmFwaGljJyBjYW4gYmUgbGVmdCBvdXQgaWYgdGhlIHJvdWluZXMgZnJvbSB0aGUgbGlicmFyeQotICogICAgYmVpbmcgdXNlZCBhcmUgbm90IGNyeXB0b2dyYXBoaWMgcmVsYXRlZCA6LSkuCi0gKiA0LiBJZiB5b3UgaW5jbHVkZSBhbnkgV2luZG93cyBzcGVjaWZpYyBjb2RlIChvciBhIGRlcml2YXRpdmUgdGhlcmVvZikgZnJvbSAKLSAqICAgIHRoZSBhcHBzIGRpcmVjdG9yeSAoYXBwbGljYXRpb24gY29kZSkgeW91IG11c3QgaW5jbHVkZSBhbiBhY2tub3dsZWRnZW1lbnQ6Ci0gKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIHdyaXR0ZW4gYnkgVGltIEh1ZHNvbiAodGpoQGNyeXB0c29mdC5jb20pIgotICogCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEVSSUMgWU9VTkcgYGBBUyBJUycnIEFORAotICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLSAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwotICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0gKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQotICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotICogU1VDSCBEQU1BR0UuCi0gKiAKLSAqIFRoZSBsaWNlbmNlIGFuZCBkaXN0cmlidXRpb24gdGVybXMgZm9yIGFueSBwdWJsaWNhbGx5IGF2YWlsYWJsZSB2ZXJzaW9uIG9yCi0gKiBkZXJpdmF0aXZlIG9mIHRoaXMgY29kZSBjYW5ub3QgYmUgY2hhbmdlZC4gIGkuZS4gdGhpcyBjb2RlIGNhbm5vdCBzaW1wbHkgYmUKLSAqIGNvcGllZCBhbmQgcHV0IHVuZGVyIGFub3RoZXIgZGlzdHJpYnV0aW9uIGxpY2VuY2UKLSAqIFtpbmNsdWRpbmcgdGhlIEdOVSBQdWJsaWMgTGljZW5jZS5dCi0gKi8KLQotI2lmbmRlZiBIRUFERVJfUklQRU1EX0gKLSNkZWZpbmUgSEVBREVSX1JJUEVNRF9ICi0KLSNpbmNsdWRlIDxvcGVuc3NsL2Vfb3MyLmg+Ci0jaW5jbHVkZSA8c3RkZGVmLmg+Ci0KLSNpZmRlZiAgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLSNpZmRlZiBPUEVOU1NMX05PX1JJUEVNRAotI2Vycm9yIFJJUEVNRCBpcyBkaXNhYmxlZC4KLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX0xQMzJfXykKLSNkZWZpbmUgUklQRU1EMTYwX0xPTkcgdW5zaWduZWQgbG9uZwotI2VsaWYgZGVmaW5lZChPUEVOU1NMX1NZU19DUkFZKSB8fCBkZWZpbmVkKF9fSUxQNjRfXykKLSNkZWZpbmUgUklQRU1EMTYwX0xPTkcgdW5zaWduZWQgbG9uZwotI2RlZmluZSBSSVBFTUQxNjBfTE9OR19MT0cyIDMKLSNlbHNlCi0jZGVmaW5lIFJJUEVNRDE2MF9MT05HIHVuc2lnbmVkIGludAotI2VuZGlmCi0KLSNkZWZpbmUgUklQRU1EMTYwX0NCTE9DSwk2NAotI2RlZmluZSBSSVBFTUQxNjBfTEJMT0NLCShSSVBFTUQxNjBfQ0JMT0NLLzQpCi0jZGVmaW5lIFJJUEVNRDE2MF9ESUdFU1RfTEVOR1RICTIwCi0KLXR5cGVkZWYgc3RydWN0IFJJUEVNRDE2MHN0YXRlX3N0Ci0JewotCVJJUEVNRDE2MF9MT05HIEEsQixDLEQsRTsKLQlSSVBFTUQxNjBfTE9ORyBObCxOaDsKLQlSSVBFTUQxNjBfTE9ORyBkYXRhW1JJUEVNRDE2MF9MQkxPQ0tdOwotCXVuc2lnbmVkIGludCAgIG51bTsKLQl9IFJJUEVNRDE2MF9DVFg7Ci0KLSNpZmRlZiBPUEVOU1NMX0ZJUFMKLWludCBwcml2YXRlX1JJUEVNRDE2MF9Jbml0KFJJUEVNRDE2MF9DVFggKmMpOwotI2VuZGlmCi1pbnQgUklQRU1EMTYwX0luaXQoUklQRU1EMTYwX0NUWCAqYyk7Ci1pbnQgUklQRU1EMTYwX1VwZGF0ZShSSVBFTUQxNjBfQ1RYICpjLCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3QgbGVuKTsKLWludCBSSVBFTUQxNjBfRmluYWwodW5zaWduZWQgY2hhciAqbWQsIFJJUEVNRDE2MF9DVFggKmMpOwotdW5zaWduZWQgY2hhciAqUklQRU1EMTYwKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmQsIHNpemVfdCBuLAotCXVuc2lnbmVkIGNoYXIgKm1kKTsKLXZvaWQgUklQRU1EMTYwX1RyYW5zZm9ybShSSVBFTUQxNjBfQ1RYICpjLCBjb25zdCB1bnNpZ25lZCBjaGFyICpiKTsKLSNpZmRlZiAgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2NyeXB0by9yaXBlbWQvcm1kMTYwLmMgYi9jcnlwdG8vcmlwZW1kL3JtZDE2MC5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMGVjNTc0Li4wMDAwMDAwCi0tLSBhL2NyeXB0by9yaXBlbWQvcm1kMTYwLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMjcgKzAsMCBAQAotLyogY3J5cHRvL3JpcGVtZC9ybWQxNjAuYyAqLwotLyogQ29weXJpZ2h0IChDKSAxOTk1LTE5OTggRXJpYyBZb3VuZyAoZWF5QGNyeXB0c29mdC5jb20pCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgcGFja2FnZSBpcyBhbiBTU0wgaW1wbGVtZW50YXRpb24gd3JpdHRlbgotICogYnkgRXJpYyBZb3VuZyAoZWF5QGNyeXB0c29mdC5jb20pLgotICogVGhlIGltcGxlbWVudGF0aW9uIHdhcyB3cml0dGVuIHNvIGFzIHRvIGNvbmZvcm0gd2l0aCBOZXRzY2FwZXMgU1NMLgotICogCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBmb3IgY29tbWVyY2lhbCBhbmQgbm9uLWNvbW1lcmNpYWwgdXNlIGFzIGxvbmcgYXMKLSAqIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgYWhlYXJlZCB0by4gIFRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXBwbHkgdG8gYWxsIGNvZGUgZm91bmQgaW4gdGhpcyBkaXN0cmlidXRpb24sIGJlIGl0IHRoZSBSQzQsIFJTQSwKLSAqIGxoYXNoLCBERVMsIGV0Yy4sIGNvZGU7IG5vdCBqdXN0IHRoZSBTU0wgY29kZS4gIFRoZSBTU0wgZG9jdW1lbnRhdGlvbgotICogaW5jbHVkZWQgd2l0aCB0aGlzIGRpc3RyaWJ1dGlvbiBpcyBjb3ZlcmVkIGJ5IHRoZSBzYW1lIGNvcHlyaWdodCB0ZXJtcwotICogZXhjZXB0IHRoYXQgdGhlIGhvbGRlciBpcyBUaW0gSHVkc29uICh0amhAY3J5cHRzb2Z0LmNvbSkuCi0gKiAKLSAqIENvcHlyaWdodCByZW1haW5zIEVyaWMgWW91bmcncywgYW5kIGFzIHN1Y2ggYW55IENvcHlyaWdodCBub3RpY2VzIGluCi0gKiB0aGUgY29kZSBhcmUgbm90IHRvIGJlIHJlbW92ZWQuCi0gKiBJZiB0aGlzIHBhY2thZ2UgaXMgdXNlZCBpbiBhIHByb2R1Y3QsIEVyaWMgWW91bmcgc2hvdWxkIGJlIGdpdmVuIGF0dHJpYnV0aW9uCi0gKiBhcyB0aGUgYXV0aG9yIG9mIHRoZSBwYXJ0cyBvZiB0aGUgbGlicmFyeSB1c2VkLgotICogVGhpcyBjYW4gYmUgaW4gdGhlIGZvcm0gb2YgYSB0ZXh0dWFsIG1lc3NhZ2UgYXQgcHJvZ3JhbSBzdGFydHVwIG9yCi0gKiBpbiBkb2N1bWVudGF0aW9uIChvbmxpbmUgb3IgdGV4dHVhbCkgcHJvdmlkZWQgd2l0aCB0aGUgcGFja2FnZS4KLSAqIAotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMgc29mdHdhcmUKLSAqICAgIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdlbWVudDoKLSAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgY3J5cHRvZ3JhcGhpYyBzb2Z0d2FyZSB3cml0dGVuIGJ5Ci0gKiAgICAgRXJpYyBZb3VuZyAoZWF5QGNyeXB0c29mdC5jb20pIgotICogICAgVGhlIHdvcmQgJ2NyeXB0b2dyYXBoaWMnIGNhbiBiZSBsZWZ0IG91dCBpZiB0aGUgcm91aW5lcyBmcm9tIHRoZSBsaWJyYXJ5Ci0gKiAgICBiZWluZyB1c2VkIGFyZSBub3QgY3J5cHRvZ3JhcGhpYyByZWxhdGVkIDotKS4KLSAqIDQuIElmIHlvdSBpbmNsdWRlIGFueSBXaW5kb3dzIHNwZWNpZmljIGNvZGUgKG9yIGEgZGVyaXZhdGl2ZSB0aGVyZW9mKSBmcm9tIAotICogICAgdGhlIGFwcHMgZGlyZWN0b3J5IChhcHBsaWNhdGlvbiBjb2RlKSB5b3UgbXVzdCBpbmNsdWRlIGFuIGFja25vd2xlZGdlbWVudDoKLSAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgd3JpdHRlbiBieSBUaW0gSHVkc29uICh0amhAY3J5cHRzb2Z0LmNvbSkiCi0gKiAKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRVJJQyBZT1VORyBgYEFTIElTJycgQU5ECi0gKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0gKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQotICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCi0gKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0gKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0gKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0gKiBTVUNIIERBTUFHRS4KLSAqIAotICogVGhlIGxpY2VuY2UgYW5kIGRpc3RyaWJ1dGlvbiB0ZXJtcyBmb3IgYW55IHB1YmxpY2FsbHkgYXZhaWxhYmxlIHZlcnNpb24gb3IKLSAqIGRlcml2YXRpdmUgb2YgdGhpcyBjb2RlIGNhbm5vdCBiZSBjaGFuZ2VkLiAgaS5lLiB0aGlzIGNvZGUgY2Fubm90IHNpbXBseSBiZQotICogY29waWVkIGFuZCBwdXQgdW5kZXIgYW5vdGhlciBkaXN0cmlidXRpb24gbGljZW5jZQotICogW2luY2x1ZGluZyB0aGUgR05VIFB1YmxpYyBMaWNlbmNlLl0KLSAqLwotCi0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxvcGVuc3NsL3JpcGVtZC5oPgotCi0jZGVmaW5lIEJVRlNJWkUJMTAyNCoxNgotCi12b2lkIGRvX2ZwKEZJTEUgKmYpOwotdm9pZCBwdCh1bnNpZ25lZCBjaGFyICptZCk7Ci0jaWYgIWRlZmluZWQoX09TRF9QT1NJWCkgJiYgIWRlZmluZWQoX19ESkdQUF9fKQotaW50IHJlYWQoaW50LCB2b2lkICosIHVuc2lnbmVkIGludCk7Ci0jZW5kaWYKLQotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotCXsKLQlpbnQgaSxlcnI9MDsKLQlGSUxFICpJTjsKLQotCWlmIChhcmdjID09IDEpCi0JCXsKLQkJZG9fZnAoc3RkaW4pOwotCQl9Ci0JZWxzZQotCQl7Ci0JCWZvciAoaT0xOyBpPGFyZ2M7IGkrKykKLQkJCXsKLQkJCUlOPWZvcGVuKGFyZ3ZbaV0sInIiKTsKLQkJCWlmIChJTiA9PSBOVUxMKQotCQkJCXsKLQkJCQlwZXJyb3IoYXJndltpXSk7Ci0JCQkJZXJyKys7Ci0JCQkJY29udGludWU7Ci0JCQkJfQotCQkJcHJpbnRmKCJSSVBFTUQxNjAoJXMpPSAiLGFyZ3ZbaV0pOwotCQkJZG9fZnAoSU4pOwotCQkJZmNsb3NlKElOKTsKLQkJCX0KLQkJfQotCWV4aXQoZXJyKTsKLQl9Ci0KLXZvaWQgZG9fZnAoRklMRSAqZikKLQl7Ci0JUklQRU1EMTYwX0NUWCBjOwotCXVuc2lnbmVkIGNoYXIgbWRbUklQRU1EMTYwX0RJR0VTVF9MRU5HVEhdOwotCWludCBmZDsKLQlpbnQgaTsKLQlzdGF0aWMgdW5zaWduZWQgY2hhciBidWZbQlVGU0laRV07Ci0KLQlmZD1maWxlbm8oZik7Ci0JUklQRU1EMTYwX0luaXQoJmMpOwotCWZvciAoOzspCi0JCXsKLQkJaT1yZWFkKGZkLGJ1ZixCVUZTSVpFKTsKLQkJaWYgKGkgPD0gMCkgYnJlYWs7Ci0JCVJJUEVNRDE2MF9VcGRhdGUoJmMsYnVmLCh1bnNpZ25lZCBsb25nKWkpOwotCQl9Ci0JUklQRU1EMTYwX0ZpbmFsKCYobWRbMF0pLCZjKTsKLQlwdChtZCk7Ci0JfQotCi12b2lkIHB0KHVuc2lnbmVkIGNoYXIgKm1kKQotCXsKLQlpbnQgaTsKLQotCWZvciAoaT0wOyBpPFJJUEVNRDE2MF9ESUdFU1RfTEVOR1RIOyBpKyspCi0JCXByaW50ZigiJTAyeCIsbWRbaV0pOwotCXByaW50ZigiXG4iKTsKLQl9Ci0KZGlmZiAtLWdpdCBhL2NyeXB0by9yaXBlbWQvcm1kX2Rnc3QuYyBiL2NyeXB0by9yaXBlbWQvcm1kX2Rnc3QuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDhlNzJkYS4uMDAwMDAwMAotLS0gYS9jcnlwdG8vcmlwZW1kL3JtZF9kZ3N0LmMKKysrIC9kZXYvbnVsbApAQCAtMSwyOTIgKzAsMCBAQAotLyogY3J5cHRvL3JpcGVtZC9ybWRfZGdzdC5jICovCi0vKiBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5OCBFcmljIFlvdW5nIChlYXlAY3J5cHRzb2Z0LmNvbSkKLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBwYWNrYWdlIGlzIGFuIFNTTCBpbXBsZW1lbnRhdGlvbiB3cml0dGVuCi0gKiBieSBFcmljIFlvdW5nIChlYXlAY3J5cHRzb2Z0LmNvbSkuCi0gKiBUaGUgaW1wbGVtZW50YXRpb24gd2FzIHdyaXR0ZW4gc28gYXMgdG8gY29uZm9ybSB3aXRoIE5ldHNjYXBlcyBTU0wuCi0gKiAKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIGZvciBjb21tZXJjaWFsIGFuZCBub24tY29tbWVyY2lhbCB1c2UgYXMgbG9uZyBhcwotICogdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBhaGVhcmVkIHRvLiAgVGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcHBseSB0byBhbGwgY29kZSBmb3VuZCBpbiB0aGlzIGRpc3RyaWJ1dGlvbiwgYmUgaXQgdGhlIFJDNCwgUlNBLAotICogbGhhc2gsIERFUywgZXRjLiwgY29kZTsgbm90IGp1c3QgdGhlIFNTTCBjb2RlLiAgVGhlIFNTTCBkb2N1bWVudGF0aW9uCi0gKiBpbmNsdWRlZCB3aXRoIHRoaXMgZGlzdHJpYnV0aW9uIGlzIGNvdmVyZWQgYnkgdGhlIHNhbWUgY29weXJpZ2h0IHRlcm1zCi0gKiBleGNlcHQgdGhhdCB0aGUgaG9sZGVyIGlzIFRpbSBIdWRzb24gKHRqaEBjcnlwdHNvZnQuY29tKS4KLSAqIAotICogQ29weXJpZ2h0IHJlbWFpbnMgRXJpYyBZb3VuZydzLCBhbmQgYXMgc3VjaCBhbnkgQ29weXJpZ2h0IG5vdGljZXMgaW4KLSAqIHRoZSBjb2RlIGFyZSBub3QgdG8gYmUgcmVtb3ZlZC4KLSAqIElmIHRoaXMgcGFja2FnZSBpcyB1c2VkIGluIGEgcHJvZHVjdCwgRXJpYyBZb3VuZyBzaG91bGQgYmUgZ2l2ZW4gYXR0cmlidXRpb24KLSAqIGFzIHRoZSBhdXRob3Igb2YgdGhlIHBhcnRzIG9mIHRoZSBsaWJyYXJ5IHVzZWQuCi0gKiBUaGlzIGNhbiBiZSBpbiB0aGUgZm9ybSBvZiBhIHRleHR1YWwgbWVzc2FnZSBhdCBwcm9ncmFtIHN0YXJ0dXAgb3IKLSAqIGluIGRvY3VtZW50YXRpb24gKG9ubGluZSBvciB0ZXh0dWFsKSBwcm92aWRlZCB3aXRoIHRoZSBwYWNrYWdlLgotICogCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcyBzb2Z0d2FyZQotICogICAgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ2VtZW50OgotICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBjcnlwdG9ncmFwaGljIHNvZnR3YXJlIHdyaXR0ZW4gYnkKLSAqICAgICBFcmljIFlvdW5nIChlYXlAY3J5cHRzb2Z0LmNvbSkiCi0gKiAgICBUaGUgd29yZCAnY3J5cHRvZ3JhcGhpYycgY2FuIGJlIGxlZnQgb3V0IGlmIHRoZSByb3VpbmVzIGZyb20gdGhlIGxpYnJhcnkKLSAqICAgIGJlaW5nIHVzZWQgYXJlIG5vdCBjcnlwdG9ncmFwaGljIHJlbGF0ZWQgOi0pLgotICogNC4gSWYgeW91IGluY2x1ZGUgYW55IFdpbmRvd3Mgc3BlY2lmaWMgY29kZSAob3IgYSBkZXJpdmF0aXZlIHRoZXJlb2YpIGZyb20gCi0gKiAgICB0aGUgYXBwcyBkaXJlY3RvcnkgKGFwcGxpY2F0aW9uIGNvZGUpIHlvdSBtdXN0IGluY2x1ZGUgYW4gYWNrbm93bGVkZ2VtZW50OgotICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSB3cml0dGVuIGJ5IFRpbSBIdWRzb24gKHRqaEBjcnlwdHNvZnQuY29tKSIKLSAqIAotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBFUklDIFlPVU5HIGBgQVMgSVMnJyBBTkQKLSAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLSAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0gKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKLSAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKLSAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLSAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSAqIFNVQ0ggREFNQUdFLgotICogCi0gKiBUaGUgbGljZW5jZSBhbmQgZGlzdHJpYnV0aW9uIHRlcm1zIGZvciBhbnkgcHVibGljYWxseSBhdmFpbGFibGUgdmVyc2lvbiBvcgotICogZGVyaXZhdGl2ZSBvZiB0aGlzIGNvZGUgY2Fubm90IGJlIGNoYW5nZWQuICBpLmUuIHRoaXMgY29kZSBjYW5ub3Qgc2ltcGx5IGJlCi0gKiBjb3BpZWQgYW5kIHB1dCB1bmRlciBhbm90aGVyIGRpc3RyaWJ1dGlvbiBsaWNlbmNlCi0gKiBbaW5jbHVkaW5nIHRoZSBHTlUgUHVibGljIExpY2VuY2UuXQotICovCi0KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgInJtZF9sb2NsLmgiCi0jaW5jbHVkZSA8b3BlbnNzbC9vcGVuc3Nsdi5oPgotI2luY2x1ZGUgPG9wZW5zc2wvY3J5cHRvLmg+Ci0KLWNvbnN0IGNoYXIgUk1EMTYwX3ZlcnNpb25bXT0iUklQRS1NRDE2MCIgT1BFTlNTTF9WRVJTSU9OX1BURVhUOwotCi0jICBpZmRlZiBSTUQxNjBfQVNNCi0gICAgIHZvaWQgcmlwZW1kMTYwX2Jsb2NrX3g4NihSSVBFTUQxNjBfQ1RYICpjLCB1bnNpZ25lZCBsb25nICpwLHNpemVfdCBudW0pOwotIyAgICBkZWZpbmUgcmlwZW1kMTYwX2Jsb2NrIHJpcGVtZDE2MF9ibG9ja194ODYKLSMgIGVsc2UKLSAgICAgdm9pZCByaXBlbWQxNjBfYmxvY2soUklQRU1EMTYwX0NUWCAqYywgdW5zaWduZWQgbG9uZyAqcCxzaXplX3QgbnVtKTsKLSMgIGVuZGlmCi0KLWZpcHNfbWRfaW5pdChSSVBFTUQxNjApCi0JewotCW1lbXNldCAoYywwLHNpemVvZigqYykpOwotCWMtPkE9UklQRU1EMTYwX0E7Ci0JYy0+Qj1SSVBFTUQxNjBfQjsKLQljLT5DPVJJUEVNRDE2MF9DOwotCWMtPkQ9UklQRU1EMTYwX0Q7Ci0JYy0+RT1SSVBFTUQxNjBfRTsKLQlyZXR1cm4gMTsKLQl9Ci0KLSNpZm5kZWYgcmlwZW1kMTYwX2Jsb2NrX2RhdGFfb3JkZXIKLSNpZmRlZiBYCi0jdW5kZWYgWAotI2VuZGlmCi12b2lkIHJpcGVtZDE2MF9ibG9ja19kYXRhX29yZGVyIChSSVBFTUQxNjBfQ1RYICpjdHgsIGNvbnN0IHZvaWQgKnAsIHNpemVfdCBudW0pCi0JewotCWNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGE9cDsKLQlyZWdpc3RlciB1bnNpZ25lZCBNRDMyX1JFR19UIEEsQixDLEQsRTsKLQl1bnNpZ25lZCBNRDMyX1JFR19UIGEsYixjLGQsZSxsOwotI2lmbmRlZiBNRDMyX1hBUlJBWQotCS8qIFNlZSBjb21tZW50IGluIGNyeXB0by9zaGEvc2hhX2xvY2wuaCBmb3IgZGV0YWlscy4gKi8KLQl1bnNpZ25lZCBNRDMyX1JFR19UCVhYMCwgWFgxLCBYWDIsIFhYMywgWFg0LCBYWDUsIFhYNiwgWFg3LAotCQkJCVhYOCwgWFg5LFhYMTAsWFgxMSxYWDEyLFhYMTMsWFgxNCxYWDE1OwotIyBkZWZpbmUgWChpKQlYWCMjaQotI2Vsc2UKLQlSSVBFTUQxNjBfTE9ORwlYWFsxNl07Ci0jIGRlZmluZSBYKGkpCVhYW2ldCi0jZW5kaWYKLQotCWZvciAoO251bS0tOykKLQkJewotCi0JQT1jdHgtPkE7IEI9Y3R4LT5COyBDPWN0eC0+QzsgRD1jdHgtPkQ7IEU9Y3R4LT5FOwotCi0JKHZvaWQpSE9TVF9jMmwoZGF0YSxsKTsgWCggMCk9bDsodm9pZClIT1NUX2MybChkYXRhLGwpOyBYKCAxKT1sOwotCVJJUDEoQSxCLEMsRCxFLFdMMDAsU0wwMCk7CSh2b2lkKUhPU1RfYzJsKGRhdGEsbCk7IFgoIDIpPWw7Ci0JUklQMShFLEEsQixDLEQsV0wwMSxTTDAxKTsJKHZvaWQpSE9TVF9jMmwoZGF0YSxsKTsgWCggMyk9bDsKLQlSSVAxKEQsRSxBLEIsQyxXTDAyLFNMMDIpOwkodm9pZClIT1NUX2MybChkYXRhLGwpOyBYKCA0KT1sOwotCVJJUDEoQyxELEUsQSxCLFdMMDMsU0wwMyk7CSh2b2lkKUhPU1RfYzJsKGRhdGEsbCk7IFgoIDUpPWw7Ci0JUklQMShCLEMsRCxFLEEsV0wwNCxTTDA0KTsJKHZvaWQpSE9TVF9jMmwoZGF0YSxsKTsgWCggNik9bDsKLQlSSVAxKEEsQixDLEQsRSxXTDA1LFNMMDUpOwkodm9pZClIT1NUX2MybChkYXRhLGwpOyBYKCA3KT1sOwotCVJJUDEoRSxBLEIsQyxELFdMMDYsU0wwNik7CSh2b2lkKUhPU1RfYzJsKGRhdGEsbCk7IFgoIDgpPWw7Ci0JUklQMShELEUsQSxCLEMsV0wwNyxTTDA3KTsJKHZvaWQpSE9TVF9jMmwoZGF0YSxsKTsgWCggOSk9bDsKLQlSSVAxKEMsRCxFLEEsQixXTDA4LFNMMDgpOwkodm9pZClIT1NUX2MybChkYXRhLGwpOyBYKDEwKT1sOwotCVJJUDEoQixDLEQsRSxBLFdMMDksU0wwOSk7CSh2b2lkKUhPU1RfYzJsKGRhdGEsbCk7IFgoMTEpPWw7Ci0JUklQMShBLEIsQyxELEUsV0wxMCxTTDEwKTsJKHZvaWQpSE9TVF9jMmwoZGF0YSxsKTsgWCgxMik9bDsKLQlSSVAxKEUsQSxCLEMsRCxXTDExLFNMMTEpOwkodm9pZClIT1NUX2MybChkYXRhLGwpOyBYKDEzKT1sOwotCVJJUDEoRCxFLEEsQixDLFdMMTIsU0wxMik7CSh2b2lkKUhPU1RfYzJsKGRhdGEsbCk7IFgoMTQpPWw7Ci0JUklQMShDLEQsRSxBLEIsV0wxMyxTTDEzKTsJKHZvaWQpSE9TVF9jMmwoZGF0YSxsKTsgWCgxNSk9bDsKLQlSSVAxKEIsQyxELEUsQSxXTDE0LFNMMTQpOwotCVJJUDEoQSxCLEMsRCxFLFdMMTUsU0wxNSk7Ci0KLQlSSVAyKEUsQSxCLEMsRCxXTDE2LFNMMTYsS0wxKTsKLQlSSVAyKEQsRSxBLEIsQyxXTDE3LFNMMTcsS0wxKTsKLQlSSVAyKEMsRCxFLEEsQixXTDE4LFNMMTgsS0wxKTsKLQlSSVAyKEIsQyxELEUsQSxXTDE5LFNMMTksS0wxKTsKLQlSSVAyKEEsQixDLEQsRSxXTDIwLFNMMjAsS0wxKTsKLQlSSVAyKEUsQSxCLEMsRCxXTDIxLFNMMjEsS0wxKTsKLQlSSVAyKEQsRSxBLEIsQyxXTDIyLFNMMjIsS0wxKTsKLQlSSVAyKEMsRCxFLEEsQixXTDIzLFNMMjMsS0wxKTsKLQlSSVAyKEIsQyxELEUsQSxXTDI0LFNMMjQsS0wxKTsKLQlSSVAyKEEsQixDLEQsRSxXTDI1LFNMMjUsS0wxKTsKLQlSSVAyKEUsQSxCLEMsRCxXTDI2LFNMMjYsS0wxKTsKLQlSSVAyKEQsRSxBLEIsQyxXTDI3LFNMMjcsS0wxKTsKLQlSSVAyKEMsRCxFLEEsQixXTDI4LFNMMjgsS0wxKTsKLQlSSVAyKEIsQyxELEUsQSxXTDI5LFNMMjksS0wxKTsKLQlSSVAyKEEsQixDLEQsRSxXTDMwLFNMMzAsS0wxKTsKLQlSSVAyKEUsQSxCLEMsRCxXTDMxLFNMMzEsS0wxKTsKLQotCVJJUDMoRCxFLEEsQixDLFdMMzIsU0wzMixLTDIpOwotCVJJUDMoQyxELEUsQSxCLFdMMzMsU0wzMyxLTDIpOwotCVJJUDMoQixDLEQsRSxBLFdMMzQsU0wzNCxLTDIpOwotCVJJUDMoQSxCLEMsRCxFLFdMMzUsU0wzNSxLTDIpOwotCVJJUDMoRSxBLEIsQyxELFdMMzYsU0wzNixLTDIpOwotCVJJUDMoRCxFLEEsQixDLFdMMzcsU0wzNyxLTDIpOwotCVJJUDMoQyxELEUsQSxCLFdMMzgsU0wzOCxLTDIpOwotCVJJUDMoQixDLEQsRSxBLFdMMzksU0wzOSxLTDIpOwotCVJJUDMoQSxCLEMsRCxFLFdMNDAsU0w0MCxLTDIpOwotCVJJUDMoRSxBLEIsQyxELFdMNDEsU0w0MSxLTDIpOwotCVJJUDMoRCxFLEEsQixDLFdMNDIsU0w0MixLTDIpOwotCVJJUDMoQyxELEUsQSxCLFdMNDMsU0w0MyxLTDIpOwotCVJJUDMoQixDLEQsRSxBLFdMNDQsU0w0NCxLTDIpOwotCVJJUDMoQSxCLEMsRCxFLFdMNDUsU0w0NSxLTDIpOwotCVJJUDMoRSxBLEIsQyxELFdMNDYsU0w0NixLTDIpOwotCVJJUDMoRCxFLEEsQixDLFdMNDcsU0w0NyxLTDIpOwotCi0JUklQNChDLEQsRSxBLEIsV0w0OCxTTDQ4LEtMMyk7Ci0JUklQNChCLEMsRCxFLEEsV0w0OSxTTDQ5LEtMMyk7Ci0JUklQNChBLEIsQyxELEUsV0w1MCxTTDUwLEtMMyk7Ci0JUklQNChFLEEsQixDLEQsV0w1MSxTTDUxLEtMMyk7Ci0JUklQNChELEUsQSxCLEMsV0w1MixTTDUyLEtMMyk7Ci0JUklQNChDLEQsRSxBLEIsV0w1MyxTTDUzLEtMMyk7Ci0JUklQNChCLEMsRCxFLEEsV0w1NCxTTDU0LEtMMyk7Ci0JUklQNChBLEIsQyxELEUsV0w1NSxTTDU1LEtMMyk7Ci0JUklQNChFLEEsQixDLEQsV0w1NixTTDU2LEtMMyk7Ci0JUklQNChELEUsQSxCLEMsV0w1NyxTTDU3LEtMMyk7Ci0JUklQNChDLEQsRSxBLEIsV0w1OCxTTDU4LEtMMyk7Ci0JUklQNChCLEMsRCxFLEEsV0w1OSxTTDU5LEtMMyk7Ci0JUklQNChBLEIsQyxELEUsV0w2MCxTTDYwLEtMMyk7Ci0JUklQNChFLEEsQixDLEQsV0w2MSxTTDYxLEtMMyk7Ci0JUklQNChELEUsQSxCLEMsV0w2MixTTDYyLEtMMyk7Ci0JUklQNChDLEQsRSxBLEIsV0w2MyxTTDYzLEtMMyk7Ci0KLQlSSVA1KEIsQyxELEUsQSxXTDY0LFNMNjQsS0w0KTsKLQlSSVA1KEEsQixDLEQsRSxXTDY1LFNMNjUsS0w0KTsKLQlSSVA1KEUsQSxCLEMsRCxXTDY2LFNMNjYsS0w0KTsKLQlSSVA1KEQsRSxBLEIsQyxXTDY3LFNMNjcsS0w0KTsKLQlSSVA1KEMsRCxFLEEsQixXTDY4LFNMNjgsS0w0KTsKLQlSSVA1KEIsQyxELEUsQSxXTDY5LFNMNjksS0w0KTsKLQlSSVA1KEEsQixDLEQsRSxXTDcwLFNMNzAsS0w0KTsKLQlSSVA1KEUsQSxCLEMsRCxXTDcxLFNMNzEsS0w0KTsKLQlSSVA1KEQsRSxBLEIsQyxXTDcyLFNMNzIsS0w0KTsKLQlSSVA1KEMsRCxFLEEsQixXTDczLFNMNzMsS0w0KTsKLQlSSVA1KEIsQyxELEUsQSxXTDc0LFNMNzQsS0w0KTsKLQlSSVA1KEEsQixDLEQsRSxXTDc1LFNMNzUsS0w0KTsKLQlSSVA1KEUsQSxCLEMsRCxXTDc2LFNMNzYsS0w0KTsKLQlSSVA1KEQsRSxBLEIsQyxXTDc3LFNMNzcsS0w0KTsKLQlSSVA1KEMsRCxFLEEsQixXTDc4LFNMNzgsS0w0KTsKLQlSSVA1KEIsQyxELEUsQSxXTDc5LFNMNzksS0w0KTsKLQotCWE9QTsgYj1COyBjPUM7IGQ9RDsgZT1FOwotCS8qIERvIG90aGVyIGhhbGYgKi8KLQlBPWN0eC0+QTsgQj1jdHgtPkI7IEM9Y3R4LT5DOyBEPWN0eC0+RDsgRT1jdHgtPkU7Ci0KLQlSSVA1KEEsQixDLEQsRSxXUjAwLFNSMDAsS1IwKTsKLQlSSVA1KEUsQSxCLEMsRCxXUjAxLFNSMDEsS1IwKTsKLQlSSVA1KEQsRSxBLEIsQyxXUjAyLFNSMDIsS1IwKTsKLQlSSVA1KEMsRCxFLEEsQixXUjAzLFNSMDMsS1IwKTsKLQlSSVA1KEIsQyxELEUsQSxXUjA0LFNSMDQsS1IwKTsKLQlSSVA1KEEsQixDLEQsRSxXUjA1LFNSMDUsS1IwKTsKLQlSSVA1KEUsQSxCLEMsRCxXUjA2LFNSMDYsS1IwKTsKLQlSSVA1KEQsRSxBLEIsQyxXUjA3LFNSMDcsS1IwKTsKLQlSSVA1KEMsRCxFLEEsQixXUjA4LFNSMDgsS1IwKTsKLQlSSVA1KEIsQyxELEUsQSxXUjA5LFNSMDksS1IwKTsKLQlSSVA1KEEsQixDLEQsRSxXUjEwLFNSMTAsS1IwKTsKLQlSSVA1KEUsQSxCLEMsRCxXUjExLFNSMTEsS1IwKTsKLQlSSVA1KEQsRSxBLEIsQyxXUjEyLFNSMTIsS1IwKTsKLQlSSVA1KEMsRCxFLEEsQixXUjEzLFNSMTMsS1IwKTsKLQlSSVA1KEIsQyxELEUsQSxXUjE0LFNSMTQsS1IwKTsKLQlSSVA1KEEsQixDLEQsRSxXUjE1LFNSMTUsS1IwKTsKLQotCVJJUDQoRSxBLEIsQyxELFdSMTYsU1IxNixLUjEpOwotCVJJUDQoRCxFLEEsQixDLFdSMTcsU1IxNyxLUjEpOwotCVJJUDQoQyxELEUsQSxCLFdSMTgsU1IxOCxLUjEpOwotCVJJUDQoQixDLEQsRSxBLFdSMTksU1IxOSxLUjEpOwotCVJJUDQoQSxCLEMsRCxFLFdSMjAsU1IyMCxLUjEpOwotCVJJUDQoRSxBLEIsQyxELFdSMjEsU1IyMSxLUjEpOwotCVJJUDQoRCxFLEEsQixDLFdSMjIsU1IyMixLUjEpOwotCVJJUDQoQyxELEUsQSxCLFdSMjMsU1IyMyxLUjEpOwotCVJJUDQoQixDLEQsRSxBLFdSMjQsU1IyNCxLUjEpOwotCVJJUDQoQSxCLEMsRCxFLFdSMjUsU1IyNSxLUjEpOwotCVJJUDQoRSxBLEIsQyxELFdSMjYsU1IyNixLUjEpOwotCVJJUDQoRCxFLEEsQixDLFdSMjcsU1IyNyxLUjEpOwotCVJJUDQoQyxELEUsQSxCLFdSMjgsU1IyOCxLUjEpOwotCVJJUDQoQixDLEQsRSxBLFdSMjksU1IyOSxLUjEpOwotCVJJUDQoQSxCLEMsRCxFLFdSMzAsU1IzMCxLUjEpOwotCVJJUDQoRSxBLEIsQyxELFdSMzEsU1IzMSxLUjEpOwotCi0JUklQMyhELEUsQSxCLEMsV1IzMixTUjMyLEtSMik7Ci0JUklQMyhDLEQsRSxBLEIsV1IzMyxTUjMzLEtSMik7Ci0JUklQMyhCLEMsRCxFLEEsV1IzNCxTUjM0LEtSMik7Ci0JUklQMyhBLEIsQyxELEUsV1IzNSxTUjM1LEtSMik7Ci0JUklQMyhFLEEsQixDLEQsV1IzNixTUjM2LEtSMik7Ci0JUklQMyhELEUsQSxCLEMsV1IzNyxTUjM3LEtSMik7Ci0JUklQMyhDLEQsRSxBLEIsV1IzOCxTUjM4LEtSMik7Ci0JUklQMyhCLEMsRCxFLEEsV1IzOSxTUjM5LEtSMik7Ci0JUklQMyhBLEIsQyxELEUsV1I0MCxTUjQwLEtSMik7Ci0JUklQMyhFLEEsQixDLEQsV1I0MSxTUjQxLEtSMik7Ci0JUklQMyhELEUsQSxCLEMsV1I0MixTUjQyLEtSMik7Ci0JUklQMyhDLEQsRSxBLEIsV1I0MyxTUjQzLEtSMik7Ci0JUklQMyhCLEMsRCxFLEEsV1I0NCxTUjQ0LEtSMik7Ci0JUklQMyhBLEIsQyxELEUsV1I0NSxTUjQ1LEtSMik7Ci0JUklQMyhFLEEsQixDLEQsV1I0NixTUjQ2LEtSMik7Ci0JUklQMyhELEUsQSxCLEMsV1I0NyxTUjQ3LEtSMik7Ci0KLQlSSVAyKEMsRCxFLEEsQixXUjQ4LFNSNDgsS1IzKTsKLQlSSVAyKEIsQyxELEUsQSxXUjQ5LFNSNDksS1IzKTsKLQlSSVAyKEEsQixDLEQsRSxXUjUwLFNSNTAsS1IzKTsKLQlSSVAyKEUsQSxCLEMsRCxXUjUxLFNSNTEsS1IzKTsKLQlSSVAyKEQsRSxBLEIsQyxXUjUyLFNSNTIsS1IzKTsKLQlSSVAyKEMsRCxFLEEsQixXUjUzLFNSNTMsS1IzKTsKLQlSSVAyKEIsQyxELEUsQSxXUjU0LFNSNTQsS1IzKTsKLQlSSVAyKEEsQixDLEQsRSxXUjU1LFNSNTUsS1IzKTsKLQlSSVAyKEUsQSxCLEMsRCxXUjU2LFNSNTYsS1IzKTsKLQlSSVAyKEQsRSxBLEIsQyxXUjU3LFNSNTcsS1IzKTsKLQlSSVAyKEMsRCxFLEEsQixXUjU4LFNSNTgsS1IzKTsKLQlSSVAyKEIsQyxELEUsQSxXUjU5LFNSNTksS1IzKTsKLQlSSVAyKEEsQixDLEQsRSxXUjYwLFNSNjAsS1IzKTsKLQlSSVAyKEUsQSxCLEMsRCxXUjYxLFNSNjEsS1IzKTsKLQlSSVAyKEQsRSxBLEIsQyxXUjYyLFNSNjIsS1IzKTsKLQlSSVAyKEMsRCxFLEEsQixXUjYzLFNSNjMsS1IzKTsKLQotCVJJUDEoQixDLEQsRSxBLFdSNjQsU1I2NCk7Ci0JUklQMShBLEIsQyxELEUsV1I2NSxTUjY1KTsKLQlSSVAxKEUsQSxCLEMsRCxXUjY2LFNSNjYpOwotCVJJUDEoRCxFLEEsQixDLFdSNjcsU1I2Nyk7Ci0JUklQMShDLEQsRSxBLEIsV1I2OCxTUjY4KTsKLQlSSVAxKEIsQyxELEUsQSxXUjY5LFNSNjkpOwotCVJJUDEoQSxCLEMsRCxFLFdSNzAsU1I3MCk7Ci0JUklQMShFLEEsQixDLEQsV1I3MSxTUjcxKTsKLQlSSVAxKEQsRSxBLEIsQyxXUjcyLFNSNzIpOwotCVJJUDEoQyxELEUsQSxCLFdSNzMsU1I3Myk7Ci0JUklQMShCLEMsRCxFLEEsV1I3NCxTUjc0KTsKLQlSSVAxKEEsQixDLEQsRSxXUjc1LFNSNzUpOwotCVJJUDEoRSxBLEIsQyxELFdSNzYsU1I3Nik7Ci0JUklQMShELEUsQSxCLEMsV1I3NyxTUjc3KTsKLQlSSVAxKEMsRCxFLEEsQixXUjc4LFNSNzgpOwotCVJJUDEoQixDLEQsRSxBLFdSNzksU1I3OSk7Ci0KLQlEICAgICA9Y3R4LT5CK2MrRDsKLQljdHgtPkI9Y3R4LT5DK2QrRTsKLQljdHgtPkM9Y3R4LT5EK2UrQTsKLQljdHgtPkQ9Y3R4LT5FK2ErQjsKLQljdHgtPkU9Y3R4LT5BK2IrQzsKLQljdHgtPkE9RDsKLQotCQl9Ci0JfQotI2VuZGlmCmRpZmYgLS1naXQgYS9jcnlwdG8vcmlwZW1kL3JtZF9sb2NsLmggYi9jcnlwdG8vcmlwZW1kL3JtZF9sb2NsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiZDg5NTcuLjAwMDAwMDAKLS0tIGEvY3J5cHRvL3JpcGVtZC9ybWRfbG9jbC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTUwICswLDAgQEAKLS8qIGNyeXB0by9yaXBlbWQvcm1kX2xvY2wuaCAqLwotLyogQ29weXJpZ2h0IChDKSAxOTk1LTE5OTggRXJpYyBZb3VuZyAoZWF5QGNyeXB0c29mdC5jb20pCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgcGFja2FnZSBpcyBhbiBTU0wgaW1wbGVtZW50YXRpb24gd3JpdHRlbgotICogYnkgRXJpYyBZb3VuZyAoZWF5QGNyeXB0c29mdC5jb20pLgotICogVGhlIGltcGxlbWVudGF0aW9uIHdhcyB3cml0dGVuIHNvIGFzIHRvIGNvbmZvcm0gd2l0aCBOZXRzY2FwZXMgU1NMLgotICogCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBmb3IgY29tbWVyY2lhbCBhbmQgbm9uLWNvbW1lcmNpYWwgdXNlIGFzIGxvbmcgYXMKLSAqIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgYWhlYXJlZCB0by4gIFRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXBwbHkgdG8gYWxsIGNvZGUgZm91bmQgaW4gdGhpcyBkaXN0cmlidXRpb24sIGJlIGl0IHRoZSBSQzQsIFJTQSwKLSAqIGxoYXNoLCBERVMsIGV0Yy4sIGNvZGU7IG5vdCBqdXN0IHRoZSBTU0wgY29kZS4gIFRoZSBTU0wgZG9jdW1lbnRhdGlvbgotICogaW5jbHVkZWQgd2l0aCB0aGlzIGRpc3RyaWJ1dGlvbiBpcyBjb3ZlcmVkIGJ5IHRoZSBzYW1lIGNvcHlyaWdodCB0ZXJtcwotICogZXhjZXB0IHRoYXQgdGhlIGhvbGRlciBpcyBUaW0gSHVkc29uICh0amhAY3J5cHRzb2Z0LmNvbSkuCi0gKiAKLSAqIENvcHlyaWdodCByZW1haW5zIEVyaWMgWW91bmcncywgYW5kIGFzIHN1Y2ggYW55IENvcHlyaWdodCBub3RpY2VzIGluCi0gKiB0aGUgY29kZSBhcmUgbm90IHRvIGJlIHJlbW92ZWQuCi0gKiBJZiB0aGlzIHBhY2thZ2UgaXMgdXNlZCBpbiBhIHByb2R1Y3QsIEVyaWMgWW91bmcgc2hvdWxkIGJlIGdpdmVuIGF0dHJpYnV0aW9uCi0gKiBhcyB0aGUgYXV0aG9yIG9mIHRoZSBwYXJ0cyBvZiB0aGUgbGlicmFyeSB1c2VkLgotICogVGhpcyBjYW4gYmUgaW4gdGhlIGZvcm0gb2YgYSB0ZXh0dWFsIG1lc3NhZ2UgYXQgcHJvZ3JhbSBzdGFydHVwIG9yCi0gKiBpbiBkb2N1bWVudGF0aW9uIChvbmxpbmUgb3IgdGV4dHVhbCkgcHJvdmlkZWQgd2l0aCB0aGUgcGFja2FnZS4KLSAqIAotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMgc29mdHdhcmUKLSAqICAgIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdlbWVudDoKLSAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgY3J5cHRvZ3JhcGhpYyBzb2Z0d2FyZSB3cml0dGVuIGJ5Ci0gKiAgICAgRXJpYyBZb3VuZyAoZWF5QGNyeXB0c29mdC5jb20pIgotICogICAgVGhlIHdvcmQgJ2NyeXB0b2dyYXBoaWMnIGNhbiBiZSBsZWZ0IG91dCBpZiB0aGUgcm91aW5lcyBmcm9tIHRoZSBsaWJyYXJ5Ci0gKiAgICBiZWluZyB1c2VkIGFyZSBub3QgY3J5cHRvZ3JhcGhpYyByZWxhdGVkIDotKS4KLSAqIDQuIElmIHlvdSBpbmNsdWRlIGFueSBXaW5kb3dzIHNwZWNpZmljIGNvZGUgKG9yIGEgZGVyaXZhdGl2ZSB0aGVyZW9mKSBmcm9tIAotICogICAgdGhlIGFwcHMgZGlyZWN0b3J5IChhcHBsaWNhdGlvbiBjb2RlKSB5b3UgbXVzdCBpbmNsdWRlIGFuIGFja25vd2xlZGdlbWVudDoKLSAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgd3JpdHRlbiBieSBUaW0gSHVkc29uICh0amhAY3J5cHRzb2Z0LmNvbSkiCi0gKiAKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRVJJQyBZT1VORyBgYEFTIElTJycgQU5ECi0gKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0gKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQotICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCi0gKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0gKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0gKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0gKiBTVUNIIERBTUFHRS4KLSAqIAotICogVGhlIGxpY2VuY2UgYW5kIGRpc3RyaWJ1dGlvbiB0ZXJtcyBmb3IgYW55IHB1YmxpY2FsbHkgYXZhaWxhYmxlIHZlcnNpb24gb3IKLSAqIGRlcml2YXRpdmUgb2YgdGhpcyBjb2RlIGNhbm5vdCBiZSBjaGFuZ2VkLiAgaS5lLiB0aGlzIGNvZGUgY2Fubm90IHNpbXBseSBiZQotICogY29waWVkIGFuZCBwdXQgdW5kZXIgYW5vdGhlciBkaXN0cmlidXRpb24gbGljZW5jZQotICogW2luY2x1ZGluZyB0aGUgR05VIFB1YmxpYyBMaWNlbmNlLl0KLSAqLwotCi0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSA8b3BlbnNzbC9vcGVuc3NsY29uZi5oPgotI2luY2x1ZGUgPG9wZW5zc2wvcmlwZW1kLmg+Ci0KLSNpZm5kZWYgUklQRU1EMTYwX0xPTkdfTE9HMgotI2RlZmluZSBSSVBFTUQxNjBfTE9OR19MT0cyIDIgLyogZGVmYXVsdCB0byAzMiBiaXRzICovCi0jZW5kaWYKLQotLyoKLSAqIERPIEVYQU1JTkUgQ09NTUVOVFMgSU4gY3J5cHRvL21kNS9tZDVfbG9jbC5oICYgY3J5cHRvL21kNS9tZDVfZGdzdC5jCi0gKiBGT1IgRVhQTEFOQVRJT05TIE9OIEZPTExPV0lORyAiQ09ERS4iCi0gKgkJCQkJPGFwcHJvQGZ5LmNoYWxtZXJzLnNlPgotICovCi0jaWZkZWYgUk1EMTYwX0FTTQotIyBpZiBkZWZpbmVkKF9faTM4NikgfHwgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfTV9JWDg2KSB8fCBkZWZpbmVkKF9fSU5URUxfXykKLSMgIGRlZmluZSByaXBlbWQxNjBfYmxvY2tfZGF0YV9vcmRlciByaXBlbWQxNjBfYmxvY2tfYXNtX2RhdGFfb3JkZXIKLSMgZW5kaWYKLSNlbmRpZgotCi12b2lkIHJpcGVtZDE2MF9ibG9ja19kYXRhX29yZGVyIChSSVBFTUQxNjBfQ1RYICpjLCBjb25zdCB2b2lkICpwLHNpemVfdCBudW0pOwotCi0jZGVmaW5lIERBVEFfT1JERVJfSVNfTElUVExFX0VORElBTgotCi0jZGVmaW5lIEhBU0hfTE9ORyAgICAgICAgICAgICAgIFJJUEVNRDE2MF9MT05HCi0jZGVmaW5lIEhBU0hfQ1RYICAgICAgICAgICAgICAgIFJJUEVNRDE2MF9DVFgKLSNkZWZpbmUgSEFTSF9DQkxPQ0sgICAgICAgICAgICAgUklQRU1EMTYwX0NCTE9DSwotI2RlZmluZSBIQVNIX1VQREFURSAgICAgICAgICAgICBSSVBFTUQxNjBfVXBkYXRlCi0jZGVmaW5lIEhBU0hfVFJBTlNGT1JNICAgICAgICAgIFJJUEVNRDE2MF9UcmFuc2Zvcm0KLSNkZWZpbmUgSEFTSF9GSU5BTCAgICAgICAgICAgICAgUklQRU1EMTYwX0ZpbmFsCi0jZGVmaW5lCUhBU0hfTUFLRV9TVFJJTkcoYyxzKQlkbyB7CVwKLQl1bnNpZ25lZCBsb25nIGxsOwkJXAotCWxsPShjKS0+QTsgKHZvaWQpSE9TVF9sMmMobGwsKHMpKTsJXAotCWxsPShjKS0+QjsgKHZvaWQpSE9TVF9sMmMobGwsKHMpKTsJXAotCWxsPShjKS0+QzsgKHZvaWQpSE9TVF9sMmMobGwsKHMpKTsJXAotCWxsPShjKS0+RDsgKHZvaWQpSE9TVF9sMmMobGwsKHMpKTsJXAotCWxsPShjKS0+RTsgKHZvaWQpSE9TVF9sMmMobGwsKHMpKTsJXAotCX0gd2hpbGUgKDApCi0jZGVmaW5lIEhBU0hfQkxPQ0tfREFUQV9PUkRFUiAgIHJpcGVtZDE2MF9ibG9ja19kYXRhX29yZGVyCi0KLSNpbmNsdWRlICJtZDMyX2NvbW1vbi5oIgotCi0jaWYgMAotI2RlZmluZSBGMSh4LHkseikJICgoeCleKHkpXih6KSkKLSNkZWZpbmUgRjIoeCx5LHopCSgoKHgpJih5KSl8KCh+eCkmeikpCi0jZGVmaW5lIEYzKHgseSx6KQkoKCh4KXwofnkpKV4oeikpCi0jZGVmaW5lIEY0KHgseSx6KQkoKCh4KSYoeikpfCgoeSkmKH4oeikpKSkKLSNkZWZpbmUgRjUoeCx5LHopCSAoKHgpXigoeSl8KH4oeikpKSkKLSNlbHNlCi0vKgotICogVHJhbnNmb3JtZWQgRjIgYW5kIEY0IGFyZSBjb3VydGVzeSBvZiBXZWkgRGFpIDx3ZWlkYWlAZXNraW1vLmNvbT4KLSAqLwotI2RlZmluZSBGMSh4LHkseikJKCh4KSBeICh5KSBeICh6KSkKLSNkZWZpbmUgRjIoeCx5LHopCSgoKCh5KSBeICh6KSkgJiAoeCkpIF4gKHopKQotI2RlZmluZSBGMyh4LHkseikJKCgofih5KSkgfCAoeCkpIF4gKHopKQotI2RlZmluZSBGNCh4LHkseikJKCgoKHgpIF4gKHkpKSAmICh6KSkgXiAoeSkpCi0jZGVmaW5lIEY1KHgseSx6KQkoKCh+KHopKSB8ICh5KSkgXiAoeCkpCi0jZW5kaWYKLQotI2RlZmluZSBSSVBFTUQxNjBfQQkweDY3NDUyMzAxTAotI2RlZmluZSBSSVBFTUQxNjBfQgkweEVGQ0RBQjg5TAotI2RlZmluZSBSSVBFTUQxNjBfQwkweDk4QkFEQ0ZFTAotI2RlZmluZSBSSVBFTUQxNjBfRAkweDEwMzI1NDc2TAotI2RlZmluZSBSSVBFTUQxNjBfRQkweEMzRDJFMUYwTAotCi0jaW5jbHVkZSAicm1kY29uc3QuaCIKLQotI2RlZmluZSBSSVAxKGEsYixjLGQsZSx3LHMpIHsgXAotCWErPUYxKGIsYyxkKStYKHcpOyBcCi0gICAgICAgIGE9Uk9UQVRFKGEscykrZTsgXAotICAgICAgICBjPVJPVEFURShjLDEwKTsgfQotCi0jZGVmaW5lIFJJUDIoYSxiLGMsZCxlLHcscyxLKSB7IFwKLQlhKz1GMihiLGMsZCkrWCh3KStLOyBcCi0gICAgICAgIGE9Uk9UQVRFKGEscykrZTsgXAotICAgICAgICBjPVJPVEFURShjLDEwKTsgfQotCi0jZGVmaW5lIFJJUDMoYSxiLGMsZCxlLHcscyxLKSB7IFwKLQlhKz1GMyhiLGMsZCkrWCh3KStLOyBcCi0gICAgICAgIGE9Uk9UQVRFKGEscykrZTsgXAotICAgICAgICBjPVJPVEFURShjLDEwKTsgfQotCi0jZGVmaW5lIFJJUDQoYSxiLGMsZCxlLHcscyxLKSB7IFwKLQlhKz1GNChiLGMsZCkrWCh3KStLOyBcCi0gICAgICAgIGE9Uk9UQVRFKGEscykrZTsgXAotICAgICAgICBjPVJPVEFURShjLDEwKTsgfQotCi0jZGVmaW5lIFJJUDUoYSxiLGMsZCxlLHcscyxLKSB7IFwKLQlhKz1GNShiLGMsZCkrWCh3KStLOyBcCi0gICAgICAgIGE9Uk9UQVRFKGEscykrZTsgXAotICAgICAgICBjPVJPVEFURShjLDEwKTsgfQotCmRpZmYgLS1naXQgYS9jcnlwdG8vcmlwZW1kL3JtZF9vbmUuYyBiL2NyeXB0by9yaXBlbWQvcm1kX29uZS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZWZiMTM3Li4wMDAwMDAwCi0tLSBhL2NyeXB0by9yaXBlbWQvcm1kX29uZS5jCisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotLyogY3J5cHRvL3JpcGVtZC9ybWRfb25lLmMgKi8KLS8qIENvcHlyaWdodCAoQykgMTk5NS0xOTk4IEVyaWMgWW91bmcgKGVheUBjcnlwdHNvZnQuY29tKQotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIHBhY2thZ2UgaXMgYW4gU1NMIGltcGxlbWVudGF0aW9uIHdyaXR0ZW4KLSAqIGJ5IEVyaWMgWW91bmcgKGVheUBjcnlwdHNvZnQuY29tKS4KLSAqIFRoZSBpbXBsZW1lbnRhdGlvbiB3YXMgd3JpdHRlbiBzbyBhcyB0byBjb25mb3JtIHdpdGggTmV0c2NhcGVzIFNTTC4KLSAqIAotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgZm9yIGNvbW1lcmNpYWwgYW5kIG5vbi1jb21tZXJjaWFsIHVzZSBhcyBsb25nIGFzCi0gKiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIGFoZWFyZWQgdG8uICBUaGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFwcGx5IHRvIGFsbCBjb2RlIGZvdW5kIGluIHRoaXMgZGlzdHJpYnV0aW9uLCBiZSBpdCB0aGUgUkM0LCBSU0EsCi0gKiBsaGFzaCwgREVTLCBldGMuLCBjb2RlOyBub3QganVzdCB0aGUgU1NMIGNvZGUuICBUaGUgU1NMIGRvY3VtZW50YXRpb24KLSAqIGluY2x1ZGVkIHdpdGggdGhpcyBkaXN0cmlidXRpb24gaXMgY292ZXJlZCBieSB0aGUgc2FtZSBjb3B5cmlnaHQgdGVybXMKLSAqIGV4Y2VwdCB0aGF0IHRoZSBob2xkZXIgaXMgVGltIEh1ZHNvbiAodGpoQGNyeXB0c29mdC5jb20pLgotICogCi0gKiBDb3B5cmlnaHQgcmVtYWlucyBFcmljIFlvdW5nJ3MsIGFuZCBhcyBzdWNoIGFueSBDb3B5cmlnaHQgbm90aWNlcyBpbgotICogdGhlIGNvZGUgYXJlIG5vdCB0byBiZSByZW1vdmVkLgotICogSWYgdGhpcyBwYWNrYWdlIGlzIHVzZWQgaW4gYSBwcm9kdWN0LCBFcmljIFlvdW5nIHNob3VsZCBiZSBnaXZlbiBhdHRyaWJ1dGlvbgotICogYXMgdGhlIGF1dGhvciBvZiB0aGUgcGFydHMgb2YgdGhlIGxpYnJhcnkgdXNlZC4KLSAqIFRoaXMgY2FuIGJlIGluIHRoZSBmb3JtIG9mIGEgdGV4dHVhbCBtZXNzYWdlIGF0IHByb2dyYW0gc3RhcnR1cCBvcgotICogaW4gZG9jdW1lbnRhdGlvbiAob25saW5lIG9yIHRleHR1YWwpIHByb3ZpZGVkIHdpdGggdGhlIHBhY2thZ2UuCi0gKiAKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzIHNvZnR3YXJlCi0gKiAgICBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnZW1lbnQ6Ci0gKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIGNyeXB0b2dyYXBoaWMgc29mdHdhcmUgd3JpdHRlbiBieQotICogICAgIEVyaWMgWW91bmcgKGVheUBjcnlwdHNvZnQuY29tKSIKLSAqICAgIFRoZSB3b3JkICdjcnlwdG9ncmFwaGljJyBjYW4gYmUgbGVmdCBvdXQgaWYgdGhlIHJvdWluZXMgZnJvbSB0aGUgbGlicmFyeQotICogICAgYmVpbmcgdXNlZCBhcmUgbm90IGNyeXB0b2dyYXBoaWMgcmVsYXRlZCA6LSkuCi0gKiA0LiBJZiB5b3UgaW5jbHVkZSBhbnkgV2luZG93cyBzcGVjaWZpYyBjb2RlIChvciBhIGRlcml2YXRpdmUgdGhlcmVvZikgZnJvbSAKLSAqICAgIHRoZSBhcHBzIGRpcmVjdG9yeSAoYXBwbGljYXRpb24gY29kZSkgeW91IG11c3QgaW5jbHVkZSBhbiBhY2tub3dsZWRnZW1lbnQ6Ci0gKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIHdyaXR0ZW4gYnkgVGltIEh1ZHNvbiAodGpoQGNyeXB0c29mdC5jb20pIgotICogCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEVSSUMgWU9VTkcgYGBBUyBJUycnIEFORAotICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLSAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwotICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0gKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQotICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotICogU1VDSCBEQU1BR0UuCi0gKiAKLSAqIFRoZSBsaWNlbmNlIGFuZCBkaXN0cmlidXRpb24gdGVybXMgZm9yIGFueSBwdWJsaWNhbGx5IGF2YWlsYWJsZSB2ZXJzaW9uIG9yCi0gKiBkZXJpdmF0aXZlIG9mIHRoaXMgY29kZSBjYW5ub3QgYmUgY2hhbmdlZC4gIGkuZS4gdGhpcyBjb2RlIGNhbm5vdCBzaW1wbHkgYmUKLSAqIGNvcGllZCBhbmQgcHV0IHVuZGVyIGFub3RoZXIgZGlzdHJpYnV0aW9uIGxpY2VuY2UKLSAqIFtpbmNsdWRpbmcgdGhlIEdOVSBQdWJsaWMgTGljZW5jZS5dCi0gKi8KLQotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSA8b3BlbnNzbC9yaXBlbWQuaD4KLSNpbmNsdWRlIDxvcGVuc3NsL2NyeXB0by5oPgotCi11bnNpZ25lZCBjaGFyICpSSVBFTUQxNjAoY29uc3QgdW5zaWduZWQgY2hhciAqZCwgc2l6ZV90IG4sCi0JICAgICB1bnNpZ25lZCBjaGFyICptZCkKLQl7Ci0JUklQRU1EMTYwX0NUWCBjOwotCXN0YXRpYyB1bnNpZ25lZCBjaGFyIG1bUklQRU1EMTYwX0RJR0VTVF9MRU5HVEhdOwotCi0JaWYgKG1kID09IE5VTEwpIG1kPW07Ci0JaWYgKCFSSVBFTUQxNjBfSW5pdCgmYykpCi0JCXJldHVybiBOVUxMOwotCVJJUEVNRDE2MF9VcGRhdGUoJmMsZCxuKTsKLQlSSVBFTUQxNjBfRmluYWwobWQsJmMpOwotCU9QRU5TU0xfY2xlYW5zZSgmYyxzaXplb2YoYykpOyAvKiBzZWN1cml0eSBjb25zaWRlcmF0aW9uICovCi0JcmV0dXJuKG1kKTsKLQl9Ci0KZGlmZiAtLWdpdCBhL2NyeXB0by9yaXBlbWQvcm1kY29uc3QuaCBiL2NyeXB0by9yaXBlbWQvcm1kY29uc3QuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTljNDhkZS4uMDAwMDAwMAotLS0gYS9jcnlwdG8vcmlwZW1kL3JtZGNvbnN0LmgKKysrIC9kZXYvbnVsbApAQCAtMSwzOTkgKzAsMCBAQAotLyogY3J5cHRvL3JpcGVtZC9ybWRjb25zdC5oICovCi0vKiBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5OCBFcmljIFlvdW5nIChlYXlAY3J5cHRzb2Z0LmNvbSkKLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBwYWNrYWdlIGlzIGFuIFNTTCBpbXBsZW1lbnRhdGlvbiB3cml0dGVuCi0gKiBieSBFcmljIFlvdW5nIChlYXlAY3J5cHRzb2Z0LmNvbSkuCi0gKiBUaGUgaW1wbGVtZW50YXRpb24gd2FzIHdyaXR0ZW4gc28gYXMgdG8gY29uZm9ybSB3aXRoIE5ldHNjYXBlcyBTU0wuCi0gKiAKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIGZvciBjb21tZXJjaWFsIGFuZCBub24tY29tbWVyY2lhbCB1c2UgYXMgbG9uZyBhcwotICogdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBhaGVhcmVkIHRvLiAgVGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcHBseSB0byBhbGwgY29kZSBmb3VuZCBpbiB0aGlzIGRpc3RyaWJ1dGlvbiwgYmUgaXQgdGhlIFJDNCwgUlNBLAotICogbGhhc2gsIERFUywgZXRjLiwgY29kZTsgbm90IGp1c3QgdGhlIFNTTCBjb2RlLiAgVGhlIFNTTCBkb2N1bWVudGF0aW9uCi0gKiBpbmNsdWRlZCB3aXRoIHRoaXMgZGlzdHJpYnV0aW9uIGlzIGNvdmVyZWQgYnkgdGhlIHNhbWUgY29weXJpZ2h0IHRlcm1zCi0gKiBleGNlcHQgdGhhdCB0aGUgaG9sZGVyIGlzIFRpbSBIdWRzb24gKHRqaEBjcnlwdHNvZnQuY29tKS4KLSAqIAotICogQ29weXJpZ2h0IHJlbWFpbnMgRXJpYyBZb3VuZydzLCBhbmQgYXMgc3VjaCBhbnkgQ29weXJpZ2h0IG5vdGljZXMgaW4KLSAqIHRoZSBjb2RlIGFyZSBub3QgdG8gYmUgcmVtb3ZlZC4KLSAqIElmIHRoaXMgcGFja2FnZSBpcyB1c2VkIGluIGEgcHJvZHVjdCwgRXJpYyBZb3VuZyBzaG91bGQgYmUgZ2l2ZW4gYXR0cmlidXRpb24KLSAqIGFzIHRoZSBhdXRob3Igb2YgdGhlIHBhcnRzIG9mIHRoZSBsaWJyYXJ5IHVzZWQuCi0gKiBUaGlzIGNhbiBiZSBpbiB0aGUgZm9ybSBvZiBhIHRleHR1YWwgbWVzc2FnZSBhdCBwcm9ncmFtIHN0YXJ0dXAgb3IKLSAqIGluIGRvY3VtZW50YXRpb24gKG9ubGluZSBvciB0ZXh0dWFsKSBwcm92aWRlZCB3aXRoIHRoZSBwYWNrYWdlLgotICogCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcyBzb2Z0d2FyZQotICogICAgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ2VtZW50OgotICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBjcnlwdG9ncmFwaGljIHNvZnR3YXJlIHdyaXR0ZW4gYnkKLSAqICAgICBFcmljIFlvdW5nIChlYXlAY3J5cHRzb2Z0LmNvbSkiCi0gKiAgICBUaGUgd29yZCAnY3J5cHRvZ3JhcGhpYycgY2FuIGJlIGxlZnQgb3V0IGlmIHRoZSByb3VpbmVzIGZyb20gdGhlIGxpYnJhcnkKLSAqICAgIGJlaW5nIHVzZWQgYXJlIG5vdCBjcnlwdG9ncmFwaGljIHJlbGF0ZWQgOi0pLgotICogNC4gSWYgeW91IGluY2x1ZGUgYW55IFdpbmRvd3Mgc3BlY2lmaWMgY29kZSAob3IgYSBkZXJpdmF0aXZlIHRoZXJlb2YpIGZyb20gCi0gKiAgICB0aGUgYXBwcyBkaXJlY3RvcnkgKGFwcGxpY2F0aW9uIGNvZGUpIHlvdSBtdXN0IGluY2x1ZGUgYW4gYWNrbm93bGVkZ2VtZW50OgotICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSB3cml0dGVuIGJ5IFRpbSBIdWRzb24gKHRqaEBjcnlwdHNvZnQuY29tKSIKLSAqIAotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBFUklDIFlPVU5HIGBgQVMgSVMnJyBBTkQKLSAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLSAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0gKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKLSAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKLSAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLSAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSAqIFNVQ0ggREFNQUdFLgotICogCi0gKiBUaGUgbGljZW5jZSBhbmQgZGlzdHJpYnV0aW9uIHRlcm1zIGZvciBhbnkgcHVibGljYWxseSBhdmFpbGFibGUgdmVyc2lvbiBvcgotICogZGVyaXZhdGl2ZSBvZiB0aGlzIGNvZGUgY2Fubm90IGJlIGNoYW5nZWQuICBpLmUuIHRoaXMgY29kZSBjYW5ub3Qgc2ltcGx5IGJlCi0gKiBjb3BpZWQgYW5kIHB1dCB1bmRlciBhbm90aGVyIGRpc3RyaWJ1dGlvbiBsaWNlbmNlCi0gKiBbaW5jbHVkaW5nIHRoZSBHTlUgUHVibGljIExpY2VuY2UuXQotICovCi0jZGVmaW5lIEtMMCAweDAwMDAwMDAwTAotI2RlZmluZSBLTDEgMHg1QTgyNzk5OUwKLSNkZWZpbmUgS0wyIDB4NkVEOUVCQTFMCi0jZGVmaW5lIEtMMyAweDhGMUJCQ0RDTAotI2RlZmluZSBLTDQgMHhBOTUzRkQ0RUwKLQotI2RlZmluZSBLUjAgMHg1MEEyOEJFNkwKLSNkZWZpbmUgS1IxIDB4NUM0REQxMjRMCi0jZGVmaW5lIEtSMiAweDZENzAzRUYzTAotI2RlZmluZSBLUjMgMHg3QTZENzZFOUwKLSNkZWZpbmUgS1I0IDB4MDAwMDAwMDBMCi0KLSNkZWZpbmUgV0wwMCAgMAotI2RlZmluZSBTTDAwIDExCi0jZGVmaW5lIFdMMDEgIDEKLSNkZWZpbmUgU0wwMSAxNAotI2RlZmluZSBXTDAyICAyCi0jZGVmaW5lIFNMMDIgMTUKLSNkZWZpbmUgV0wwMyAgMwotI2RlZmluZSBTTDAzIDEyCi0jZGVmaW5lIFdMMDQgIDQKLSNkZWZpbmUgU0wwNCAgNQotI2RlZmluZSBXTDA1ICA1Ci0jZGVmaW5lIFNMMDUgIDgKLSNkZWZpbmUgV0wwNiAgNgotI2RlZmluZSBTTDA2ICA3Ci0jZGVmaW5lIFdMMDcgIDcKLSNkZWZpbmUgU0wwNyAgOQotI2RlZmluZSBXTDA4ICA4Ci0jZGVmaW5lIFNMMDggMTEKLSNkZWZpbmUgV0wwOSAgOQotI2RlZmluZSBTTDA5IDEzCi0jZGVmaW5lIFdMMTAgMTAKLSNkZWZpbmUgU0wxMCAxNAotI2RlZmluZSBXTDExIDExCi0jZGVmaW5lIFNMMTEgMTUKLSNkZWZpbmUgV0wxMiAxMgotI2RlZmluZSBTTDEyICA2Ci0jZGVmaW5lIFdMMTMgMTMKLSNkZWZpbmUgU0wxMyAgNwotI2RlZmluZSBXTDE0IDE0Ci0jZGVmaW5lIFNMMTQgIDkKLSNkZWZpbmUgV0wxNSAxNQotI2RlZmluZSBTTDE1ICA4Ci0KLSNkZWZpbmUgV0wxNiAgNwotI2RlZmluZSBTTDE2ICA3Ci0jZGVmaW5lIFdMMTcgIDQKLSNkZWZpbmUgU0wxNyAgNgotI2RlZmluZSBXTDE4IDEzCi0jZGVmaW5lIFNMMTggIDgKLSNkZWZpbmUgV0wxOSAgMQotI2RlZmluZSBTTDE5IDEzCi0jZGVmaW5lIFdMMjAgMTAKLSNkZWZpbmUgU0wyMCAxMQotI2RlZmluZSBXTDIxICA2Ci0jZGVmaW5lIFNMMjEgIDkKLSNkZWZpbmUgV0wyMiAxNQotI2RlZmluZSBTTDIyICA3Ci0jZGVmaW5lIFdMMjMgIDMKLSNkZWZpbmUgU0wyMyAxNQotI2RlZmluZSBXTDI0IDEyCi0jZGVmaW5lIFNMMjQgIDcKLSNkZWZpbmUgV0wyNSAgMAotI2RlZmluZSBTTDI1IDEyCi0jZGVmaW5lIFdMMjYgIDkKLSNkZWZpbmUgU0wyNiAxNQotI2RlZmluZSBXTDI3ICA1Ci0jZGVmaW5lIFNMMjcgIDkKLSNkZWZpbmUgV0wyOCAgMgotI2RlZmluZSBTTDI4IDExCi0jZGVmaW5lIFdMMjkgMTQKLSNkZWZpbmUgU0wyOSAgNwotI2RlZmluZSBXTDMwIDExCi0jZGVmaW5lIFNMMzAgMTMKLSNkZWZpbmUgV0wzMSAgOAotI2RlZmluZSBTTDMxIDEyCi0KLSNkZWZpbmUgV0wzMiAgMwotI2RlZmluZSBTTDMyIDExCi0jZGVmaW5lIFdMMzMgMTAKLSNkZWZpbmUgU0wzMyAxMwotI2RlZmluZSBXTDM0IDE0Ci0jZGVmaW5lIFNMMzQgIDYKLSNkZWZpbmUgV0wzNSAgNAotI2RlZmluZSBTTDM1ICA3Ci0jZGVmaW5lIFdMMzYgIDkKLSNkZWZpbmUgU0wzNiAxNAotI2RlZmluZSBXTDM3IDE1Ci0jZGVmaW5lIFNMMzcgIDkKLSNkZWZpbmUgV0wzOCAgOAotI2RlZmluZSBTTDM4IDEzCi0jZGVmaW5lIFdMMzkgIDEKLSNkZWZpbmUgU0wzOSAxNQotI2RlZmluZSBXTDQwICAyCi0jZGVmaW5lIFNMNDAgMTQKLSNkZWZpbmUgV0w0MSAgNwotI2RlZmluZSBTTDQxICA4Ci0jZGVmaW5lIFdMNDIgIDAKLSNkZWZpbmUgU0w0MiAxMwotI2RlZmluZSBXTDQzICA2Ci0jZGVmaW5lIFNMNDMgIDYKLSNkZWZpbmUgV0w0NCAxMwotI2RlZmluZSBTTDQ0ICA1Ci0jZGVmaW5lIFdMNDUgMTEKLSNkZWZpbmUgU0w0NSAxMgotI2RlZmluZSBXTDQ2ICA1Ci0jZGVmaW5lIFNMNDYgIDcKLSNkZWZpbmUgV0w0NyAxMgotI2RlZmluZSBTTDQ3ICA1Ci0KLSNkZWZpbmUgV0w0OCAgMQotI2RlZmluZSBTTDQ4IDExCi0jZGVmaW5lIFdMNDkgIDkKLSNkZWZpbmUgU0w0OSAxMgotI2RlZmluZSBXTDUwIDExCi0jZGVmaW5lIFNMNTAgMTQKLSNkZWZpbmUgV0w1MSAxMAotI2RlZmluZSBTTDUxIDE1Ci0jZGVmaW5lIFdMNTIgIDAKLSNkZWZpbmUgU0w1MiAxNAotI2RlZmluZSBXTDUzICA4Ci0jZGVmaW5lIFNMNTMgMTUKLSNkZWZpbmUgV0w1NCAxMgotI2RlZmluZSBTTDU0ICA5Ci0jZGVmaW5lIFdMNTUgIDQKLSNkZWZpbmUgU0w1NSAgOAotI2RlZmluZSBXTDU2IDEzCi0jZGVmaW5lIFNMNTYgIDkKLSNkZWZpbmUgV0w1NyAgMwotI2RlZmluZSBTTDU3IDE0Ci0jZGVmaW5lIFdMNTggIDcKLSNkZWZpbmUgU0w1OCAgNQotI2RlZmluZSBXTDU5IDE1Ci0jZGVmaW5lIFNMNTkgIDYKLSNkZWZpbmUgV0w2MCAxNAotI2RlZmluZSBTTDYwICA4Ci0jZGVmaW5lIFdMNjEgIDUKLSNkZWZpbmUgU0w2MSAgNgotI2RlZmluZSBXTDYyICA2Ci0jZGVmaW5lIFNMNjIgIDUKLSNkZWZpbmUgV0w2MyAgMgotI2RlZmluZSBTTDYzIDEyCi0KLSNkZWZpbmUgV0w2NCAgNAotI2RlZmluZSBTTDY0ICA5Ci0jZGVmaW5lIFdMNjUgIDAKLSNkZWZpbmUgU0w2NSAxNQotI2RlZmluZSBXTDY2ICA1Ci0jZGVmaW5lIFNMNjYgIDUKLSNkZWZpbmUgV0w2NyAgOQotI2RlZmluZSBTTDY3IDExCi0jZGVmaW5lIFdMNjggIDcKLSNkZWZpbmUgU0w2OCAgNgotI2RlZmluZSBXTDY5IDEyCi0jZGVmaW5lIFNMNjkgIDgKLSNkZWZpbmUgV0w3MCAgMgotI2RlZmluZSBTTDcwIDEzCi0jZGVmaW5lIFdMNzEgMTAKLSNkZWZpbmUgU0w3MSAxMgotI2RlZmluZSBXTDcyIDE0Ci0jZGVmaW5lIFNMNzIgIDUKLSNkZWZpbmUgV0w3MyAgMQotI2RlZmluZSBTTDczIDEyCi0jZGVmaW5lIFdMNzQgIDMKLSNkZWZpbmUgU0w3NCAxMwotI2RlZmluZSBXTDc1ICA4Ci0jZGVmaW5lIFNMNzUgMTQKLSNkZWZpbmUgV0w3NiAxMQotI2RlZmluZSBTTDc2IDExCi0jZGVmaW5lIFdMNzcgIDYKLSNkZWZpbmUgU0w3NyAgOAotI2RlZmluZSBXTDc4IDE1Ci0jZGVmaW5lIFNMNzggIDUKLSNkZWZpbmUgV0w3OSAxMwotI2RlZmluZSBTTDc5ICA2Ci0KLSNkZWZpbmUgV1IwMCAgNQotI2RlZmluZSBTUjAwICA4Ci0jZGVmaW5lIFdSMDEgMTQKLSNkZWZpbmUgU1IwMSAgOQotI2RlZmluZSBXUjAyICA3Ci0jZGVmaW5lIFNSMDIgIDkKLSNkZWZpbmUgV1IwMyAgMAotI2RlZmluZSBTUjAzIDExCi0jZGVmaW5lIFdSMDQgIDkKLSNkZWZpbmUgU1IwNCAxMwotI2RlZmluZSBXUjA1ICAyCi0jZGVmaW5lIFNSMDUgMTUKLSNkZWZpbmUgV1IwNiAxMQotI2RlZmluZSBTUjA2IDE1Ci0jZGVmaW5lIFdSMDcgIDQKLSNkZWZpbmUgU1IwNyAgNQotI2RlZmluZSBXUjA4IDEzCi0jZGVmaW5lIFNSMDggIDcKLSNkZWZpbmUgV1IwOSAgNgotI2RlZmluZSBTUjA5ICA3Ci0jZGVmaW5lIFdSMTAgMTUKLSNkZWZpbmUgU1IxMCAgOAotI2RlZmluZSBXUjExICA4Ci0jZGVmaW5lIFNSMTEgMTEKLSNkZWZpbmUgV1IxMiAgMQotI2RlZmluZSBTUjEyIDE0Ci0jZGVmaW5lIFdSMTMgMTAKLSNkZWZpbmUgU1IxMyAxNAotI2RlZmluZSBXUjE0ICAzCi0jZGVmaW5lIFNSMTQgMTIKLSNkZWZpbmUgV1IxNSAxMgotI2RlZmluZSBTUjE1ICA2Ci0KLSNkZWZpbmUgV1IxNiAgNgotI2RlZmluZSBTUjE2ICA5Ci0jZGVmaW5lIFdSMTcgMTEKLSNkZWZpbmUgU1IxNyAxMwotI2RlZmluZSBXUjE4ICAzCi0jZGVmaW5lIFNSMTggMTUKLSNkZWZpbmUgV1IxOSAgNwotI2RlZmluZSBTUjE5ICA3Ci0jZGVmaW5lIFdSMjAgIDAKLSNkZWZpbmUgU1IyMCAxMgotI2RlZmluZSBXUjIxIDEzCi0jZGVmaW5lIFNSMjEgIDgKLSNkZWZpbmUgV1IyMiAgNQotI2RlZmluZSBTUjIyICA5Ci0jZGVmaW5lIFdSMjMgMTAKLSNkZWZpbmUgU1IyMyAxMQotI2RlZmluZSBXUjI0IDE0Ci0jZGVmaW5lIFNSMjQgIDcKLSNkZWZpbmUgV1IyNSAxNQotI2RlZmluZSBTUjI1ICA3Ci0jZGVmaW5lIFdSMjYgIDgKLSNkZWZpbmUgU1IyNiAxMgotI2RlZmluZSBXUjI3IDEyCi0jZGVmaW5lIFNSMjcgIDcKLSNkZWZpbmUgV1IyOCAgNAotI2RlZmluZSBTUjI4ICA2Ci0jZGVmaW5lIFdSMjkgIDkKLSNkZWZpbmUgU1IyOSAxNQotI2RlZmluZSBXUjMwICAxCi0jZGVmaW5lIFNSMzAgMTMKLSNkZWZpbmUgV1IzMSAgMgotI2RlZmluZSBTUjMxIDExCi0KLSNkZWZpbmUgV1IzMiAxNQotI2RlZmluZSBTUjMyICA5Ci0jZGVmaW5lIFdSMzMgIDUKLSNkZWZpbmUgU1IzMyAgNwotI2RlZmluZSBXUjM0ICAxCi0jZGVmaW5lIFNSMzQgMTUKLSNkZWZpbmUgV1IzNSAgMwotI2RlZmluZSBTUjM1IDExCi0jZGVmaW5lIFdSMzYgIDcKLSNkZWZpbmUgU1IzNiAgOAotI2RlZmluZSBXUjM3IDE0Ci0jZGVmaW5lIFNSMzcgIDYKLSNkZWZpbmUgV1IzOCAgNgotI2RlZmluZSBTUjM4ICA2Ci0jZGVmaW5lIFdSMzkgIDkKLSNkZWZpbmUgU1IzOSAxNAotI2RlZmluZSBXUjQwIDExCi0jZGVmaW5lIFNSNDAgMTIKLSNkZWZpbmUgV1I0MSAgOAotI2RlZmluZSBTUjQxIDEzCi0jZGVmaW5lIFdSNDIgMTIKLSNkZWZpbmUgU1I0MiAgNQotI2RlZmluZSBXUjQzICAyCi0jZGVmaW5lIFNSNDMgMTQKLSNkZWZpbmUgV1I0NCAxMAotI2RlZmluZSBTUjQ0IDEzCi0jZGVmaW5lIFdSNDUgIDAKLSNkZWZpbmUgU1I0NSAxMwotI2RlZmluZSBXUjQ2ICA0Ci0jZGVmaW5lIFNSNDYgIDcKLSNkZWZpbmUgV1I0NyAxMwotI2RlZmluZSBTUjQ3ICA1Ci0KLSNkZWZpbmUgV1I0OCAgOAotI2RlZmluZSBTUjQ4IDE1Ci0jZGVmaW5lIFdSNDkgIDYKLSNkZWZpbmUgU1I0OSAgNQotI2RlZmluZSBXUjUwICA0Ci0jZGVmaW5lIFNSNTAgIDgKLSNkZWZpbmUgV1I1MSAgMQotI2RlZmluZSBTUjUxIDExCi0jZGVmaW5lIFdSNTIgIDMKLSNkZWZpbmUgU1I1MiAxNAotI2RlZmluZSBXUjUzIDExCi0jZGVmaW5lIFNSNTMgMTQKLSNkZWZpbmUgV1I1NCAxNQotI2RlZmluZSBTUjU0ICA2Ci0jZGVmaW5lIFdSNTUgIDAKLSNkZWZpbmUgU1I1NSAxNAotI2RlZmluZSBXUjU2ICA1Ci0jZGVmaW5lIFNSNTYgIDYKLSNkZWZpbmUgV1I1NyAxMgotI2RlZmluZSBTUjU3ICA5Ci0jZGVmaW5lIFdSNTggIDIKLSNkZWZpbmUgU1I1OCAxMgotI2RlZmluZSBXUjU5IDEzCi0jZGVmaW5lIFNSNTkgIDkKLSNkZWZpbmUgV1I2MCAgOQotI2RlZmluZSBTUjYwIDEyCi0jZGVmaW5lIFdSNjEgIDcKLSNkZWZpbmUgU1I2MSAgNQotI2RlZmluZSBXUjYyIDEwCi0jZGVmaW5lIFNSNjIgMTUKLSNkZWZpbmUgV1I2MyAxNAotI2RlZmluZSBTUjYzICA4Ci0KLSNkZWZpbmUgV1I2NCAxMgotI2RlZmluZSBTUjY0ICA4Ci0jZGVmaW5lIFdSNjUgMTUKLSNkZWZpbmUgU1I2NSAgNQotI2RlZmluZSBXUjY2IDEwCi0jZGVmaW5lIFNSNjYgMTIKLSNkZWZpbmUgV1I2NyAgNAotI2RlZmluZSBTUjY3ICA5Ci0jZGVmaW5lIFdSNjggIDEKLSNkZWZpbmUgU1I2OCAxMgotI2RlZmluZSBXUjY5ICA1Ci0jZGVmaW5lIFNSNjkgIDUKLSNkZWZpbmUgV1I3MCAgOAotI2RlZmluZSBTUjcwIDE0Ci0jZGVmaW5lIFdSNzEgIDcKLSNkZWZpbmUgU1I3MSAgNgotI2RlZmluZSBXUjcyICA2Ci0jZGVmaW5lIFNSNzIgIDgKLSNkZWZpbmUgV1I3MyAgMgotI2RlZmluZSBTUjczIDEzCi0jZGVmaW5lIFdSNzQgMTMKLSNkZWZpbmUgU1I3NCAgNgotI2RlZmluZSBXUjc1IDE0Ci0jZGVmaW5lIFNSNzUgIDUKLSNkZWZpbmUgV1I3NiAgMAotI2RlZmluZSBTUjc2IDE1Ci0jZGVmaW5lIFdSNzcgIDMKLSNkZWZpbmUgU1I3NyAxMwotI2RlZmluZSBXUjc4ICA5Ci0jZGVmaW5lIFNSNzggMTEKLSNkZWZpbmUgV1I3OSAxMQotI2RlZmluZSBTUjc5IDExCi0KZGlmZiAtLWdpdCBhL2NyeXB0by9yaXBlbWQvcm1kdGVzdC5jIGIvY3J5cHRvL3JpcGVtZC9ybWR0ZXN0LmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiMzRlMGUuLjAwMDAwMDAKLS0tIGEvY3J5cHRvL3JpcGVtZC9ybWR0ZXN0LmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNDUgKzAsMCBAQAotLyogY3J5cHRvL3JpcGVtZC9ybWR0ZXN0LmMgKi8KLS8qIENvcHlyaWdodCAoQykgMTk5NS0xOTk4IEVyaWMgWW91bmcgKGVheUBjcnlwdHNvZnQuY29tKQotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIHBhY2thZ2UgaXMgYW4gU1NMIGltcGxlbWVudGF0aW9uIHdyaXR0ZW4KLSAqIGJ5IEVyaWMgWW91bmcgKGVheUBjcnlwdHNvZnQuY29tKS4KLSAqIFRoZSBpbXBsZW1lbnRhdGlvbiB3YXMgd3JpdHRlbiBzbyBhcyB0byBjb25mb3JtIHdpdGggTmV0c2NhcGVzIFNTTC4KLSAqIAotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgZm9yIGNvbW1lcmNpYWwgYW5kIG5vbi1jb21tZXJjaWFsIHVzZSBhcyBsb25nIGFzCi0gKiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIGFoZWFyZWQgdG8uICBUaGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFwcGx5IHRvIGFsbCBjb2RlIGZvdW5kIGluIHRoaXMgZGlzdHJpYnV0aW9uLCBiZSBpdCB0aGUgUkM0LCBSU0EsCi0gKiBsaGFzaCwgREVTLCBldGMuLCBjb2RlOyBub3QganVzdCB0aGUgU1NMIGNvZGUuICBUaGUgU1NMIGRvY3VtZW50YXRpb24KLSAqIGluY2x1ZGVkIHdpdGggdGhpcyBkaXN0cmlidXRpb24gaXMgY292ZXJlZCBieSB0aGUgc2FtZSBjb3B5cmlnaHQgdGVybXMKLSAqIGV4Y2VwdCB0aGF0IHRoZSBob2xkZXIgaXMgVGltIEh1ZHNvbiAodGpoQGNyeXB0c29mdC5jb20pLgotICogCi0gKiBDb3B5cmlnaHQgcmVtYWlucyBFcmljIFlvdW5nJ3MsIGFuZCBhcyBzdWNoIGFueSBDb3B5cmlnaHQgbm90aWNlcyBpbgotICogdGhlIGNvZGUgYXJlIG5vdCB0byBiZSByZW1vdmVkLgotICogSWYgdGhpcyBwYWNrYWdlIGlzIHVzZWQgaW4gYSBwcm9kdWN0LCBFcmljIFlvdW5nIHNob3VsZCBiZSBnaXZlbiBhdHRyaWJ1dGlvbgotICogYXMgdGhlIGF1dGhvciBvZiB0aGUgcGFydHMgb2YgdGhlIGxpYnJhcnkgdXNlZC4KLSAqIFRoaXMgY2FuIGJlIGluIHRoZSBmb3JtIG9mIGEgdGV4dHVhbCBtZXNzYWdlIGF0IHByb2dyYW0gc3RhcnR1cCBvcgotICogaW4gZG9jdW1lbnRhdGlvbiAob25saW5lIG9yIHRleHR1YWwpIHByb3ZpZGVkIHdpdGggdGhlIHBhY2thZ2UuCi0gKiAKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzIHNvZnR3YXJlCi0gKiAgICBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnZW1lbnQ6Ci0gKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIGNyeXB0b2dyYXBoaWMgc29mdHdhcmUgd3JpdHRlbiBieQotICogICAgIEVyaWMgWW91bmcgKGVheUBjcnlwdHNvZnQuY29tKSIKLSAqICAgIFRoZSB3b3JkICdjcnlwdG9ncmFwaGljJyBjYW4gYmUgbGVmdCBvdXQgaWYgdGhlIHJvdWluZXMgZnJvbSB0aGUgbGlicmFyeQotICogICAgYmVpbmcgdXNlZCBhcmUgbm90IGNyeXB0b2dyYXBoaWMgcmVsYXRlZCA6LSkuCi0gKiA0LiBJZiB5b3UgaW5jbHVkZSBhbnkgV2luZG93cyBzcGVjaWZpYyBjb2RlIChvciBhIGRlcml2YXRpdmUgdGhlcmVvZikgZnJvbSAKLSAqICAgIHRoZSBhcHBzIGRpcmVjdG9yeSAoYXBwbGljYXRpb24gY29kZSkgeW91IG11c3QgaW5jbHVkZSBhbiBhY2tub3dsZWRnZW1lbnQ6Ci0gKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIHdyaXR0ZW4gYnkgVGltIEh1ZHNvbiAodGpoQGNyeXB0c29mdC5jb20pIgotICogCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEVSSUMgWU9VTkcgYGBBUyBJUycnIEFORAotICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLSAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwotICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0gKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQotICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotICogU1VDSCBEQU1BR0UuCi0gKiAKLSAqIFRoZSBsaWNlbmNlIGFuZCBkaXN0cmlidXRpb24gdGVybXMgZm9yIGFueSBwdWJsaWNhbGx5IGF2YWlsYWJsZSB2ZXJzaW9uIG9yCi0gKiBkZXJpdmF0aXZlIG9mIHRoaXMgY29kZSBjYW5ub3QgYmUgY2hhbmdlZC4gIGkuZS4gdGhpcyBjb2RlIGNhbm5vdCBzaW1wbHkgYmUKLSAqIGNvcGllZCBhbmQgcHV0IHVuZGVyIGFub3RoZXIgZGlzdHJpYnV0aW9uIGxpY2VuY2UKLSAqIFtpbmNsdWRpbmcgdGhlIEdOVSBQdWJsaWMgTGljZW5jZS5dCi0gKi8KLQotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci0KLSNpbmNsdWRlICIuLi9lX29zLmgiCi0KLSNpZmRlZiBPUEVOU1NMX05PX1JJUEVNRAotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLXsKLSAgICBwcmludGYoIk5vIHJpcGVtZCBzdXBwb3J0XG4iKTsKLSAgICByZXR1cm4oMCk7Ci19Ci0jZWxzZQotI2luY2x1ZGUgPG9wZW5zc2wvcmlwZW1kLmg+Ci0jaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD4KLQotI2lmZGVmIENIQVJTRVRfRUJDRElDCi0jaW5jbHVkZSA8b3BlbnNzbC9lYmNkaWMuaD4KLSNlbmRpZgotCi1zdGF0aWMgY2hhciAqdGVzdFtdPXsKLQkiIiwKLQkiYSIsCi0JImFiYyIsCi0JIm1lc3NhZ2UgZGlnZXN0IiwKLQkiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiLAotCSJhYmNkYmNkZWNkZWZkZWZnZWZnaGZnaGlnaGlqaGlqa2lqa2xqa2xta2xtbmxtbm9tbm9wbm9wcSIsCi0JIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5IiwKLQkiMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAiLAotCU5VTEwsCi0JfTsKLQotc3RhdGljIGNoYXIgKnJldFtdPXsKLQkiOWMxMTg1YTVjNWU5ZmM1NDYxMjgwODk3N2VlOGY1NDhiMjI1OGQzMSIsCi0JIjBiZGM5ZDJkMjU2YjNlZTlkYWFlMzQ3YmU2ZjRkYzgzNWE0NjdmZmUiLAotCSI4ZWIyMDhmN2UwNWQ5ODdhOWIwNDRhOGU5OGM2YjA4N2YxNWEwYmZjIiwKLQkiNWQwNjg5ZWY0OWQyZmFlNTcyYjg4MWIxMjNhODVmZmEyMTU5NWYzNiIsCi0JImY3MWMyNzEwOWM2OTJjMWI1NmJiZGNlYjViOWQyODY1YjM3MDhkYmMiLAotCSIxMmEwNTMzODRhOWMwYzg4ZTQwNWEwNmMyN2RjZjQ5YWRhNjJlYjJiIiwKLQkiYjBlMjBiNmUzMTE2NjQwMjg2ZWQzYTg3YTU3MTMwNzliMjFmNTE4OSIsCi0JIjliNzUyZTQ1NTczZDRiMzlmNGRiZDMzMjNjYWI4MmJmNjMzMjZiZmIiLAotCX07Ci0KLXN0YXRpYyBjaGFyICpwdCh1bnNpZ25lZCBjaGFyICptZCk7Ci1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQotCXsKLQlpbnQgaSxlcnI9MDsKLQljaGFyICoqUCwqKlI7Ci0JY2hhciAqcDsKLQl1bnNpZ25lZCBjaGFyIG1kW1JJUEVNRDE2MF9ESUdFU1RfTEVOR1RIXTsKLQotCVA9dGVzdDsKLQlSPXJldDsKLQlpPTE7Ci0Jd2hpbGUgKCpQICE9IE5VTEwpCi0JCXsKLSNpZmRlZiBDSEFSU0VUX0VCQ0RJQwotCQllYmNkaWMyYXNjaWkoKGNoYXIgKikqUCwgKGNoYXIgKikqUCwgc3RybGVuKChjaGFyICopKlApKTsKLSNlbmRpZgotCQlFVlBfRGlnZXN0KCYoUFswXVswXSksc3RybGVuKChjaGFyICopKlApLG1kLE5VTEwsRVZQX3JpcGVtZDE2MCgpLCBOVUxMKTsKLQkJcD1wdChtZCk7Ci0JCWlmIChzdHJjbXAocCwoY2hhciAqKSpSKSAhPSAwKQotCQkJewotCQkJcHJpbnRmKCJlcnJvciBjYWxjdWxhdGluZyBSSVBFTUQxNjAgb24gJyVzJ1xuIiwqUCk7Ci0JCQlwcmludGYoImdvdCAlcyBpbnN0ZWFkIG9mICVzXG4iLHAsKlIpOwotCQkJZXJyKys7Ci0JCQl9Ci0JCWVsc2UKLQkJCXByaW50ZigidGVzdCAlZCBva1xuIixpKTsKLQkJaSsrOwotCQlSKys7Ci0JCVArKzsKLQkJfQotCUVYSVQoZXJyKTsKLQlyZXR1cm4oMCk7Ci0JfQotCi1zdGF0aWMgY2hhciAqcHQodW5zaWduZWQgY2hhciAqbWQpCi0JewotCWludCBpOwotCXN0YXRpYyBjaGFyIGJ1Zls4MF07Ci0KLQlmb3IgKGk9MDsgaTxSSVBFTUQxNjBfRElHRVNUX0xFTkdUSDsgaSsrKQotCQlzcHJpbnRmKCYoYnVmW2kqMl0pLCIlMDJ4IixtZFtpXSk7Ci0JcmV0dXJuKGJ1Zik7Ci0JfQotI2VuZGlmCmRpZmYgLS1naXQgYS9jcnlwdG8vcnNhL3JzYV9hbWV0aC5jIGIvY3J5cHRvL3JzYS9yc2FfYW1ldGguYwppbmRleCA1YTIwNjJmLi40YzhlY2Q5IDEwMDY0NAotLS0gYS9jcnlwdG8vcnNhL3JzYV9hbWV0aC5jCisrKyBiL2NyeXB0by9yc2EvcnNhX2FtZXRoLmMKQEAgLTM1OCw3ICszNTgsNyBAQAogCQlpZiAoaTJhX0FTTjFfSU5URUdFUihicCwgcHNzLT5zYWx0TGVuZ3RoKSA8PSAwKQogCQkJZ290byBlcnI7CiAJCX0KLQllbHNlIGlmIChCSU9fcHV0cyhicCwgIjB4MTQgKGRlZmF1bHQpIikgPD0gMCkKKwllbHNlIGlmIChCSU9fcHV0cyhicCwgIjE0IChkZWZhdWx0KSIpIDw9IDApCiAJCWdvdG8gZXJyOwogCUJJT19wdXRzKGJwLCAiXG4iKTsKIApkaWZmIC0tZ2l0IGEvY3J5cHRvL3NoYS9hc20vc2hhMS01ODYuUyBiL2NyeXB0by9zaGEvYXNtL3NoYTEtNTg2LlMKaW5kZXggZTc3ZjY1NC4uNDdiZWYyYSAxMDA2NDQKLS0tIGEvY3J5cHRvL3NoYS9hc20vc2hhMS01ODYuUworKysgYi9jcnlwdG8vc2hhL2FzbS9zaGExLTU4Ni5TCkBAIC05LDYgKzksMjEgQEAKIAlwdXNobAklZWJ4CiAJcHVzaGwJJWVzaQogCXB1c2hsCSVlZGkKKwljYWxsCS5MMDAwcGljX3BvaW50CisuTDAwMHBpY19wb2ludDoKKwlwb3BsCSVlYnAKKwlsZWFsCV9HTE9CQUxfT0ZGU0VUX1RBQkxFXytbLi0uTDAwMHBpY19wb2ludF0oJWVicCksJWVzaQorCW1vdmwJT1BFTlNTTF9pYTMyY2FwX1BAR09UKCVlc2kpLCVlc2kKKwlsZWFsCS5MS19YWF9YWC0uTDAwMHBpY19wb2ludCglZWJwKSwlZWJwCisJbW92bAkoJWVzaSksJWVheAorCW1vdmwJNCglZXNpKSwlZWR4CisJdGVzdGwJJDUxMiwlZWR4CisJanoJLkwwMDF4ODYKKwl0ZXN0bAkkMTY3NzcyMTYsJWVheAorCWp6CS5MMDAxeDg2CisJam1wCS5Mc3NzZTNfc2hvcnRjdXQKKy5hbGlnbgkxNgorLkwwMDF4ODY6CiAJbW92bAkyMCglZXNwKSwlZWJwCiAJbW92bAkyNCglZXNwKSwlZXNpCiAJbW92bAkyOCglZXNwKSwlZWF4CkBAIC0xNyw5ICszMiw5IEBACiAJYWRkbAklZXNpLCVlYXgKIAltb3ZsCSVlYXgsMTA0KCVlc3ApCiAJbW92bAkxNiglZWJwKSwlZWRpCi0Jam1wCS5MMDAwbG9vcAorCWptcAkuTDAwMmxvb3AKIC5hbGlnbgkxNgotLkwwMDBsb29wOgorLkwwMDJsb29wOgogCW1vdmwJKCVlc2kpLCVlYXgKIAltb3ZsCTQoJWVzaSksJWVieAogCW1vdmwJOCglZXNpKSwlZWN4CkBAIC0xMzY2LDcgKzEzODEsNyBAQAogCW1vdmwJJWVieCwxMiglZWJwKQogCW1vdmwJJWVkeCwlZXNpCiAJbW92bAklZWN4LDE2KCVlYnApCi0JamIJLkwwMDBsb29wCisJamIJLkwwMDJsb29wCiAJYWRkbAkkNzYsJWVzcAogCXBvcGwJJWVkaQogCXBvcGwJJWVzaQpAQCAtMTM3NCw3ICsxMzg5LDEyNTEgQEAKIAlwb3BsCSVlYnAKIAlyZXQKIC5zaXplCXNoYTFfYmxvY2tfZGF0YV9vcmRlciwuLS5MX3NoYTFfYmxvY2tfZGF0YV9vcmRlcl9iZWdpbgorLnR5cGUJX3NoYTFfYmxvY2tfZGF0YV9vcmRlcl9zc3NlMyxAZnVuY3Rpb24KKy5hbGlnbgkxNgorX3NoYTFfYmxvY2tfZGF0YV9vcmRlcl9zc3NlMzoKKwlwdXNobAklZWJwCisJcHVzaGwJJWVieAorCXB1c2hsCSVlc2kKKwlwdXNobAklZWRpCisJY2FsbAkuTDAwM3BpY19wb2ludAorLkwwMDNwaWNfcG9pbnQ6CisJcG9wbAklZWJwCisJbGVhbAkuTEtfWFhfWFgtLkwwMDNwaWNfcG9pbnQoJWVicCksJWVicAorLkxzc3NlM19zaG9ydGN1dDoKKwltb3ZkcWEJKCVlYnApLCV4bW03CisJbW92ZHFhCTE2KCVlYnApLCV4bW0wCisJbW92ZHFhCTMyKCVlYnApLCV4bW0xCisJbW92ZHFhCTQ4KCVlYnApLCV4bW0yCisJbW92ZHFhCTY0KCVlYnApLCV4bW02CisJbW92bAkyMCglZXNwKSwlZWRpCisJbW92bAkyNCglZXNwKSwlZWJwCisJbW92bAkyOCglZXNwKSwlZWR4CisJbW92bAklZXNwLCVlc2kKKwlzdWJsCSQyMDgsJWVzcAorCWFuZGwJJC02NCwlZXNwCisJbW92ZHFhCSV4bW0wLDExMiglZXNwKQorCW1vdmRxYQkleG1tMSwxMjgoJWVzcCkKKwltb3ZkcWEJJXhtbTIsMTQ0KCVlc3ApCisJc2hsbAkkNiwlZWR4CisJbW92ZHFhCSV4bW03LDE2MCglZXNwKQorCWFkZGwJJWVicCwlZWR4CisJbW92ZHFhCSV4bW02LDE3NiglZXNwKQorCWFkZGwJJDY0LCVlYnAKKwltb3ZsCSVlZGksMTkyKCVlc3ApCisJbW92bAklZWJwLDE5NiglZXNwKQorCW1vdmwJJWVkeCwyMDAoJWVzcCkKKwltb3ZsCSVlc2ksMjA0KCVlc3ApCisJbW92bAkoJWVkaSksJWVheAorCW1vdmwJNCglZWRpKSwlZWJ4CisJbW92bAk4KCVlZGkpLCVlY3gKKwltb3ZsCTEyKCVlZGkpLCVlZHgKKwltb3ZsCTE2KCVlZGkpLCVlZGkKKwltb3ZsCSVlYngsJWVzaQorCW1vdmRxdQktNjQoJWVicCksJXhtbTAKKwltb3ZkcXUJLTQ4KCVlYnApLCV4bW0xCisJbW92ZHF1CS0zMiglZWJwKSwleG1tMgorCW1vdmRxdQktMTYoJWVicCksJXhtbTMKKy5ieXRlCTEwMiwxNSw1NiwwLDE5OAorLmJ5dGUJMTAyLDE1LDU2LDAsMjA2CisuYnl0ZQkxMDIsMTUsNTYsMCwyMTQKKwltb3ZkcWEJJXhtbTcsOTYoJWVzcCkKKy5ieXRlCTEwMiwxNSw1NiwwLDIyMgorCXBhZGRkCSV4bW03LCV4bW0wCisJcGFkZGQJJXhtbTcsJXhtbTEKKwlwYWRkZAkleG1tNywleG1tMgorCW1vdmRxYQkleG1tMCwoJWVzcCkKKwlwc3ViZAkleG1tNywleG1tMAorCW1vdmRxYQkleG1tMSwxNiglZXNwKQorCXBzdWJkCSV4bW03LCV4bW0xCisJbW92ZHFhCSV4bW0yLDMyKCVlc3ApCisJcHN1YmQJJXhtbTcsJXhtbTIKKwltb3ZkcWEJJXhtbTEsJXhtbTQKKwlqbXAJLkwwMDRsb29wCisuYWxpZ24JMTYKKy5MMDA0bG9vcDoKKwlhZGRsCSglZXNwKSwlZWRpCisJeG9ybAklZWR4LCVlY3gKKy5ieXRlCTEwMiwxNSw1OCwxNSwyMjQsOAorCW1vdmRxYQkleG1tMywleG1tNgorCW1vdmwJJWVheCwlZWJwCisJcm9sbAkkNSwlZWF4CisJcGFkZGQJJXhtbTMsJXhtbTcKKwltb3ZkcWEJJXhtbTAsNjQoJWVzcCkKKwlhbmRsCSVlY3gsJWVzaQorCXhvcmwJJWVkeCwlZWN4CisJcHNybGRxCSQ0LCV4bW02CisJeG9ybAklZWR4LCVlc2kKKwlhZGRsCSVlYXgsJWVkaQorCXB4b3IJJXhtbTAsJXhtbTQKKwlyb3JsCSQyLCVlYngKKwlhZGRsCSVlc2ksJWVkaQorCXB4b3IJJXhtbTIsJXhtbTYKKwlhZGRsCTQoJWVzcCksJWVkeAorCXhvcmwJJWVjeCwlZWJ4CisJbW92bAklZWRpLCVlc2kKKwlyb2xsCSQ1LCVlZGkKKwlweG9yCSV4bW02LCV4bW00CisJYW5kbAklZWJ4LCVlYnAKKwl4b3JsCSVlY3gsJWVieAorCW1vdmRxYQkleG1tNyw0OCglZXNwKQorCXhvcmwJJWVjeCwlZWJwCisJYWRkbAklZWRpLCVlZHgKKwltb3ZkcWEJJXhtbTQsJXhtbTAKKwltb3ZkcWEJJXhtbTQsJXhtbTYKKwlyb3JsCSQ3LCVlYXgKKwlhZGRsCSVlYnAsJWVkeAorCWFkZGwJOCglZXNwKSwlZWN4CisJeG9ybAklZWJ4LCVlYXgKKwlwc2xsZHEJJDEyLCV4bW0wCisJcGFkZGQJJXhtbTQsJXhtbTQKKwltb3ZsCSVlZHgsJWVicAorCXJvbGwJJDUsJWVkeAorCWFuZGwJJWVheCwlZXNpCisJeG9ybAklZWJ4LCVlYXgKKwlwc3JsZAkkMzEsJXhtbTYKKwl4b3JsCSVlYngsJWVzaQorCWFkZGwJJWVkeCwlZWN4CisJbW92ZHFhCSV4bW0wLCV4bW03CisJcm9ybAkkNywlZWRpCisJYWRkbAklZXNpLCVlY3gKKwlwc3JsZAkkMzAsJXhtbTAKKwlwb3IJJXhtbTYsJXhtbTQKKwlhZGRsCTEyKCVlc3ApLCVlYngKKwl4b3JsCSVlYXgsJWVkaQorCW1vdmwJJWVjeCwlZXNpCisJcm9sbAkkNSwlZWN4CisJcHNsbGQJJDIsJXhtbTcKKwlweG9yCSV4bW0wLCV4bW00CisJYW5kbAklZWRpLCVlYnAKKwl4b3JsCSVlYXgsJWVkaQorCW1vdmRxYQk5NiglZXNwKSwleG1tMAorCXhvcmwJJWVheCwlZWJwCisJYWRkbAklZWN4LCVlYngKKwlweG9yCSV4bW03LCV4bW00CisJbW92ZHFhCSV4bW0yLCV4bW01CisJcm9ybAkkNywlZWR4CisJYWRkbAklZWJwLCVlYngKKwlhZGRsCTE2KCVlc3ApLCVlYXgKKwl4b3JsCSVlZGksJWVkeAorLmJ5dGUJMTAyLDE1LDU4LDE1LDIzMyw4CisJbW92ZHFhCSV4bW00LCV4bW03CisJbW92bAklZWJ4LCVlYnAKKwlyb2xsCSQ1LCVlYngKKwlwYWRkZAkleG1tNCwleG1tMAorCW1vdmRxYQkleG1tMSw4MCglZXNwKQorCWFuZGwJJWVkeCwlZXNpCisJeG9ybAklZWRpLCVlZHgKKwlwc3JsZHEJJDQsJXhtbTcKKwl4b3JsCSVlZGksJWVzaQorCWFkZGwJJWVieCwlZWF4CisJcHhvcgkleG1tMSwleG1tNQorCXJvcmwJJDcsJWVjeAorCWFkZGwJJWVzaSwlZWF4CisJcHhvcgkleG1tMywleG1tNworCWFkZGwJMjAoJWVzcCksJWVkaQorCXhvcmwJJWVkeCwlZWN4CisJbW92bAklZWF4LCVlc2kKKwlyb2xsCSQ1LCVlYXgKKwlweG9yCSV4bW03LCV4bW01CisJYW5kbAklZWN4LCVlYnAKKwl4b3JsCSVlZHgsJWVjeAorCW1vdmRxYQkleG1tMCwoJWVzcCkKKwl4b3JsCSVlZHgsJWVicAorCWFkZGwJJWVheCwlZWRpCisJbW92ZHFhCSV4bW01LCV4bW0xCisJbW92ZHFhCSV4bW01LCV4bW03CisJcm9ybAkkNywlZWJ4CisJYWRkbAklZWJwLCVlZGkKKwlhZGRsCTI0KCVlc3ApLCVlZHgKKwl4b3JsCSVlY3gsJWVieAorCXBzbGxkcQkkMTIsJXhtbTEKKwlwYWRkZAkleG1tNSwleG1tNQorCW1vdmwJJWVkaSwlZWJwCisJcm9sbAkkNSwlZWRpCisJYW5kbAklZWJ4LCVlc2kKKwl4b3JsCSVlY3gsJWVieAorCXBzcmxkCSQzMSwleG1tNworCXhvcmwJJWVjeCwlZXNpCisJYWRkbAklZWRpLCVlZHgKKwltb3ZkcWEJJXhtbTEsJXhtbTAKKwlyb3JsCSQ3LCVlYXgKKwlhZGRsCSVlc2ksJWVkeAorCXBzcmxkCSQzMCwleG1tMQorCXBvcgkleG1tNywleG1tNQorCWFkZGwJMjgoJWVzcCksJWVjeAorCXhvcmwJJWVieCwlZWF4CisJbW92bAklZWR4LCVlc2kKKwlyb2xsCSQ1LCVlZHgKKwlwc2xsZAkkMiwleG1tMAorCXB4b3IJJXhtbTEsJXhtbTUKKwlhbmRsCSVlYXgsJWVicAorCXhvcmwJJWVieCwlZWF4CisJbW92ZHFhCTExMiglZXNwKSwleG1tMQorCXhvcmwJJWVieCwlZWJwCisJYWRkbAklZWR4LCVlY3gKKwlweG9yCSV4bW0wLCV4bW01CisJbW92ZHFhCSV4bW0zLCV4bW02CisJcm9ybAkkNywlZWRpCisJYWRkbAklZWJwLCVlY3gKKwlhZGRsCTMyKCVlc3ApLCVlYngKKwl4b3JsCSVlYXgsJWVkaQorLmJ5dGUJMTAyLDE1LDU4LDE1LDI0Miw4CisJbW92ZHFhCSV4bW01LCV4bW0wCisJbW92bAklZWN4LCVlYnAKKwlyb2xsCSQ1LCVlY3gKKwlwYWRkZAkleG1tNSwleG1tMQorCW1vdmRxYQkleG1tMiw5NiglZXNwKQorCWFuZGwJJWVkaSwlZXNpCisJeG9ybAklZWF4LCVlZGkKKwlwc3JsZHEJJDQsJXhtbTAKKwl4b3JsCSVlYXgsJWVzaQorCWFkZGwJJWVjeCwlZWJ4CisJcHhvcgkleG1tMiwleG1tNgorCXJvcmwJJDcsJWVkeAorCWFkZGwJJWVzaSwlZWJ4CisJcHhvcgkleG1tNCwleG1tMAorCWFkZGwJMzYoJWVzcCksJWVheAorCXhvcmwJJWVkaSwlZWR4CisJbW92bAklZWJ4LCVlc2kKKwlyb2xsCSQ1LCVlYngKKwlweG9yCSV4bW0wLCV4bW02CisJYW5kbAklZWR4LCVlYnAKKwl4b3JsCSVlZGksJWVkeAorCW1vdmRxYQkleG1tMSwxNiglZXNwKQorCXhvcmwJJWVkaSwlZWJwCisJYWRkbAklZWJ4LCVlYXgKKwltb3ZkcWEJJXhtbTYsJXhtbTIKKwltb3ZkcWEJJXhtbTYsJXhtbTAKKwlyb3JsCSQ3LCVlY3gKKwlhZGRsCSVlYnAsJWVheAorCWFkZGwJNDAoJWVzcCksJWVkaQorCXhvcmwJJWVkeCwlZWN4CisJcHNsbGRxCSQxMiwleG1tMgorCXBhZGRkCSV4bW02LCV4bW02CisJbW92bAklZWF4LCVlYnAKKwlyb2xsCSQ1LCVlYXgKKwlhbmRsCSVlY3gsJWVzaQorCXhvcmwJJWVkeCwlZWN4CisJcHNybGQJJDMxLCV4bW0wCisJeG9ybAklZWR4LCVlc2kKKwlhZGRsCSVlYXgsJWVkaQorCW1vdmRxYQkleG1tMiwleG1tMQorCXJvcmwJJDcsJWVieAorCWFkZGwJJWVzaSwlZWRpCisJcHNybGQJJDMwLCV4bW0yCisJcG9yCSV4bW0wLCV4bW02CisJYWRkbAk0NCglZXNwKSwlZWR4CisJeG9ybAklZWN4LCVlYngKKwltb3ZkcWEJNjQoJWVzcCksJXhtbTAKKwltb3ZsCSVlZGksJWVzaQorCXJvbGwJJDUsJWVkaQorCXBzbGxkCSQyLCV4bW0xCisJcHhvcgkleG1tMiwleG1tNgorCWFuZGwJJWVieCwlZWJwCisJeG9ybAklZWN4LCVlYngKKwltb3ZkcWEJMTEyKCVlc3ApLCV4bW0yCisJeG9ybAklZWN4LCVlYnAKKwlhZGRsCSVlZGksJWVkeAorCXB4b3IJJXhtbTEsJXhtbTYKKwltb3ZkcWEJJXhtbTQsJXhtbTcKKwlyb3JsCSQ3LCVlYXgKKwlhZGRsCSVlYnAsJWVkeAorCWFkZGwJNDgoJWVzcCksJWVjeAorCXhvcmwJJWVieCwlZWF4CisuYnl0ZQkxMDIsMTUsNTgsMTUsMjUxLDgKKwltb3ZkcWEJJXhtbTYsJXhtbTEKKwltb3ZsCSVlZHgsJWVicAorCXJvbGwJJDUsJWVkeAorCXBhZGRkCSV4bW02LCV4bW0yCisJbW92ZHFhCSV4bW0zLDY0KCVlc3ApCisJYW5kbAklZWF4LCVlc2kKKwl4b3JsCSVlYngsJWVheAorCXBzcmxkcQkkNCwleG1tMQorCXhvcmwJJWVieCwlZXNpCisJYWRkbAklZWR4LCVlY3gKKwlweG9yCSV4bW0zLCV4bW03CisJcm9ybAkkNywlZWRpCisJYWRkbAklZXNpLCVlY3gKKwlweG9yCSV4bW01LCV4bW0xCisJYWRkbAk1MiglZXNwKSwlZWJ4CisJeG9ybAklZWF4LCVlZGkKKwltb3ZsCSVlY3gsJWVzaQorCXJvbGwJJDUsJWVjeAorCXB4b3IJJXhtbTEsJXhtbTcKKwlhbmRsCSVlZGksJWVicAorCXhvcmwJJWVheCwlZWRpCisJbW92ZHFhCSV4bW0yLDMyKCVlc3ApCisJeG9ybAklZWF4LCVlYnAKKwlhZGRsCSVlY3gsJWVieAorCW1vdmRxYQkleG1tNywleG1tMworCW1vdmRxYQkleG1tNywleG1tMQorCXJvcmwJJDcsJWVkeAorCWFkZGwJJWVicCwlZWJ4CisJYWRkbAk1NiglZXNwKSwlZWF4CisJeG9ybAklZWRpLCVlZHgKKwlwc2xsZHEJJDEyLCV4bW0zCisJcGFkZGQJJXhtbTcsJXhtbTcKKwltb3ZsCSVlYngsJWVicAorCXJvbGwJJDUsJWVieAorCWFuZGwJJWVkeCwlZXNpCisJeG9ybAklZWRpLCVlZHgKKwlwc3JsZAkkMzEsJXhtbTEKKwl4b3JsCSVlZGksJWVzaQorCWFkZGwJJWVieCwlZWF4CisJbW92ZHFhCSV4bW0zLCV4bW0yCisJcm9ybAkkNywlZWN4CisJYWRkbAklZXNpLCVlYXgKKwlwc3JsZAkkMzAsJXhtbTMKKwlwb3IJJXhtbTEsJXhtbTcKKwlhZGRsCTYwKCVlc3ApLCVlZGkKKwl4b3JsCSVlZHgsJWVjeAorCW1vdmRxYQk4MCglZXNwKSwleG1tMQorCW1vdmwJJWVheCwlZXNpCisJcm9sbAkkNSwlZWF4CisJcHNsbGQJJDIsJXhtbTIKKwlweG9yCSV4bW0zLCV4bW03CisJYW5kbAklZWN4LCVlYnAKKwl4b3JsCSVlZHgsJWVjeAorCW1vdmRxYQkxMTIoJWVzcCksJXhtbTMKKwl4b3JsCSVlZHgsJWVicAorCWFkZGwJJWVheCwlZWRpCisJcHhvcgkleG1tMiwleG1tNworCXJvcmwJJDcsJWVieAorCWFkZGwJJWVicCwlZWRpCisJbW92ZHFhCSV4bW03LCV4bW0yCisJYWRkbAkoJWVzcCksJWVkeAorCXB4b3IJJXhtbTQsJXhtbTAKKy5ieXRlCTEwMiwxNSw1OCwxNSwyMTQsOAorCXhvcmwJJWVjeCwlZWJ4CisJbW92bAklZWRpLCVlYnAKKwlyb2xsCSQ1LCVlZGkKKwlweG9yCSV4bW0xLCV4bW0wCisJbW92ZHFhCSV4bW00LDgwKCVlc3ApCisJYW5kbAklZWJ4LCVlc2kKKwl4b3JsCSVlY3gsJWVieAorCW1vdmRxYQkleG1tMywleG1tNAorCXBhZGRkCSV4bW03LCV4bW0zCisJeG9ybAklZWN4LCVlc2kKKwlhZGRsCSVlZGksJWVkeAorCXB4b3IJJXhtbTIsJXhtbTAKKwlyb3JsCSQ3LCVlYXgKKwlhZGRsCSVlc2ksJWVkeAorCWFkZGwJNCglZXNwKSwlZWN4CisJeG9ybAklZWJ4LCVlYXgKKwltb3ZkcWEJJXhtbTAsJXhtbTIKKwltb3ZkcWEJJXhtbTMsNDgoJWVzcCkKKwltb3ZsCSVlZHgsJWVzaQorCXJvbGwJJDUsJWVkeAorCWFuZGwJJWVheCwlZWJwCisJeG9ybAklZWJ4LCVlYXgKKwlwc2xsZAkkMiwleG1tMAorCXhvcmwJJWVieCwlZWJwCisJYWRkbAklZWR4LCVlY3gKKwlwc3JsZAkkMzAsJXhtbTIKKwlyb3JsCSQ3LCVlZGkKKwlhZGRsCSVlYnAsJWVjeAorCWFkZGwJOCglZXNwKSwlZWJ4CisJeG9ybAklZWF4LCVlZGkKKwltb3ZsCSVlY3gsJWVicAorCXJvbGwJJDUsJWVjeAorCXBvcgkleG1tMiwleG1tMAorCWFuZGwJJWVkaSwlZXNpCisJeG9ybAklZWF4LCVlZGkKKwltb3ZkcWEJOTYoJWVzcCksJXhtbTIKKwl4b3JsCSVlYXgsJWVzaQorCWFkZGwJJWVjeCwlZWJ4CisJcm9ybAkkNywlZWR4CisJYWRkbAklZXNpLCVlYngKKwlhZGRsCTEyKCVlc3ApLCVlYXgKKwltb3ZkcWEJJXhtbTAsJXhtbTMKKwl4b3JsCSVlZGksJWVkeAorCW1vdmwJJWVieCwlZXNpCisJcm9sbAkkNSwlZWJ4CisJYW5kbAklZWR4LCVlYnAKKwl4b3JsCSVlZGksJWVkeAorCXhvcmwJJWVkaSwlZWJwCisJYWRkbAklZWJ4LCVlYXgKKwlyb3JsCSQ3LCVlY3gKKwlhZGRsCSVlYnAsJWVheAorCWFkZGwJMTYoJWVzcCksJWVkaQorCXB4b3IJJXhtbTUsJXhtbTEKKy5ieXRlCTEwMiwxNSw1OCwxNSwyMjMsOAorCXhvcmwJJWVkeCwlZXNpCisJbW92bAklZWF4LCVlYnAKKwlyb2xsCSQ1LCVlYXgKKwlweG9yCSV4bW0yLCV4bW0xCisJbW92ZHFhCSV4bW01LDk2KCVlc3ApCisJeG9ybAklZWN4LCVlc2kKKwlhZGRsCSVlYXgsJWVkaQorCW1vdmRxYQkleG1tNCwleG1tNQorCXBhZGRkCSV4bW0wLCV4bW00CisJcm9ybAkkNywlZWJ4CisJYWRkbAklZXNpLCVlZGkKKwlweG9yCSV4bW0zLCV4bW0xCisJYWRkbAkyMCglZXNwKSwlZWR4CisJeG9ybAklZWN4LCVlYnAKKwltb3ZsCSVlZGksJWVzaQorCXJvbGwJJDUsJWVkaQorCW1vdmRxYQkleG1tMSwleG1tMworCW1vdmRxYQkleG1tNCwoJWVzcCkKKwl4b3JsCSVlYngsJWVicAorCWFkZGwJJWVkaSwlZWR4CisJcm9ybAkkNywlZWF4CisJYWRkbAklZWJwLCVlZHgKKwlwc2xsZAkkMiwleG1tMQorCWFkZGwJMjQoJWVzcCksJWVjeAorCXhvcmwJJWVieCwlZXNpCisJcHNybGQJJDMwLCV4bW0zCisJbW92bAklZWR4LCVlYnAKKwlyb2xsCSQ1LCVlZHgKKwl4b3JsCSVlYXgsJWVzaQorCWFkZGwJJWVkeCwlZWN4CisJcm9ybAkkNywlZWRpCisJYWRkbAklZXNpLCVlY3gKKwlwb3IJJXhtbTMsJXhtbTEKKwlhZGRsCTI4KCVlc3ApLCVlYngKKwl4b3JsCSVlYXgsJWVicAorCW1vdmRxYQk2NCglZXNwKSwleG1tMworCW1vdmwJJWVjeCwlZXNpCisJcm9sbAkkNSwlZWN4CisJeG9ybAklZWRpLCVlYnAKKwlhZGRsCSVlY3gsJWVieAorCXJvcmwJJDcsJWVkeAorCW1vdmRxYQkleG1tMSwleG1tNAorCWFkZGwJJWVicCwlZWJ4CisJYWRkbAkzMiglZXNwKSwlZWF4CisJcHhvcgkleG1tNiwleG1tMgorLmJ5dGUJMTAyLDE1LDU4LDE1LDIyNCw4CisJeG9ybAklZWRpLCVlc2kKKwltb3ZsCSVlYngsJWVicAorCXJvbGwJJDUsJWVieAorCXB4b3IJJXhtbTMsJXhtbTIKKwltb3ZkcWEJJXhtbTYsNjQoJWVzcCkKKwl4b3JsCSVlZHgsJWVzaQorCWFkZGwJJWVieCwlZWF4CisJbW92ZHFhCTEyOCglZXNwKSwleG1tNgorCXBhZGRkCSV4bW0xLCV4bW01CisJcm9ybAkkNywlZWN4CisJYWRkbAklZXNpLCVlYXgKKwlweG9yCSV4bW00LCV4bW0yCisJYWRkbAkzNiglZXNwKSwlZWRpCisJeG9ybAklZWR4LCVlYnAKKwltb3ZsCSVlYXgsJWVzaQorCXJvbGwJJDUsJWVheAorCW1vdmRxYQkleG1tMiwleG1tNAorCW1vdmRxYQkleG1tNSwxNiglZXNwKQorCXhvcmwJJWVjeCwlZWJwCisJYWRkbAklZWF4LCVlZGkKKwlyb3JsCSQ3LCVlYngKKwlhZGRsCSVlYnAsJWVkaQorCXBzbGxkCSQyLCV4bW0yCisJYWRkbAk0MCglZXNwKSwlZWR4CisJeG9ybAklZWN4LCVlc2kKKwlwc3JsZAkkMzAsJXhtbTQKKwltb3ZsCSVlZGksJWVicAorCXJvbGwJJDUsJWVkaQorCXhvcmwJJWVieCwlZXNpCisJYWRkbAklZWRpLCVlZHgKKwlyb3JsCSQ3LCVlYXgKKwlhZGRsCSVlc2ksJWVkeAorCXBvcgkleG1tNCwleG1tMgorCWFkZGwJNDQoJWVzcCksJWVjeAorCXhvcmwJJWVieCwlZWJwCisJbW92ZHFhCTgwKCVlc3ApLCV4bW00CisJbW92bAklZWR4LCVlc2kKKwlyb2xsCSQ1LCVlZHgKKwl4b3JsCSVlYXgsJWVicAorCWFkZGwJJWVkeCwlZWN4CisJcm9ybAkkNywlZWRpCisJbW92ZHFhCSV4bW0yLCV4bW01CisJYWRkbAklZWJwLCVlY3gKKwlhZGRsCTQ4KCVlc3ApLCVlYngKKwlweG9yCSV4bW03LCV4bW0zCisuYnl0ZQkxMDIsMTUsNTgsMTUsMjMzLDgKKwl4b3JsCSVlYXgsJWVzaQorCW1vdmwJJWVjeCwlZWJwCisJcm9sbAkkNSwlZWN4CisJcHhvcgkleG1tNCwleG1tMworCW1vdmRxYQkleG1tNyw4MCglZXNwKQorCXhvcmwJJWVkaSwlZXNpCisJYWRkbAklZWN4LCVlYngKKwltb3ZkcWEJJXhtbTYsJXhtbTcKKwlwYWRkZAkleG1tMiwleG1tNgorCXJvcmwJJDcsJWVkeAorCWFkZGwJJWVzaSwlZWJ4CisJcHhvcgkleG1tNSwleG1tMworCWFkZGwJNTIoJWVzcCksJWVheAorCXhvcmwJJWVkaSwlZWJwCisJbW92bAklZWJ4LCVlc2kKKwlyb2xsCSQ1LCVlYngKKwltb3ZkcWEJJXhtbTMsJXhtbTUKKwltb3ZkcWEJJXhtbTYsMzIoJWVzcCkKKwl4b3JsCSVlZHgsJWVicAorCWFkZGwJJWVieCwlZWF4CisJcm9ybAkkNywlZWN4CisJYWRkbAklZWJwLCVlYXgKKwlwc2xsZAkkMiwleG1tMworCWFkZGwJNTYoJWVzcCksJWVkaQorCXhvcmwJJWVkeCwlZXNpCisJcHNybGQJJDMwLCV4bW01CisJbW92bAklZWF4LCVlYnAKKwlyb2xsCSQ1LCVlYXgKKwl4b3JsCSVlY3gsJWVzaQorCWFkZGwJJWVheCwlZWRpCisJcm9ybAkkNywlZWJ4CisJYWRkbAklZXNpLCVlZGkKKwlwb3IJJXhtbTUsJXhtbTMKKwlhZGRsCTYwKCVlc3ApLCVlZHgKKwl4b3JsCSVlY3gsJWVicAorCW1vdmRxYQk5NiglZXNwKSwleG1tNQorCW1vdmwJJWVkaSwlZXNpCisJcm9sbAkkNSwlZWRpCisJeG9ybAklZWJ4LCVlYnAKKwlhZGRsCSVlZGksJWVkeAorCXJvcmwJJDcsJWVheAorCW1vdmRxYQkleG1tMywleG1tNgorCWFkZGwJJWVicCwlZWR4CisJYWRkbAkoJWVzcCksJWVjeAorCXB4b3IJJXhtbTAsJXhtbTQKKy5ieXRlCTEwMiwxNSw1OCwxNSwyNDIsOAorCXhvcmwJJWVieCwlZXNpCisJbW92bAklZWR4LCVlYnAKKwlyb2xsCSQ1LCVlZHgKKwlweG9yCSV4bW01LCV4bW00CisJbW92ZHFhCSV4bW0wLDk2KCVlc3ApCisJeG9ybAklZWF4LCVlc2kKKwlhZGRsCSVlZHgsJWVjeAorCW1vdmRxYQkleG1tNywleG1tMAorCXBhZGRkCSV4bW0zLCV4bW03CisJcm9ybAkkNywlZWRpCisJYWRkbAklZXNpLCVlY3gKKwlweG9yCSV4bW02LCV4bW00CisJYWRkbAk0KCVlc3ApLCVlYngKKwl4b3JsCSVlYXgsJWVicAorCW1vdmwJJWVjeCwlZXNpCisJcm9sbAkkNSwlZWN4CisJbW92ZHFhCSV4bW00LCV4bW02CisJbW92ZHFhCSV4bW03LDQ4KCVlc3ApCisJeG9ybAklZWRpLCVlYnAKKwlhZGRsCSVlY3gsJWVieAorCXJvcmwJJDcsJWVkeAorCWFkZGwJJWVicCwlZWJ4CisJcHNsbGQJJDIsJXhtbTQKKwlhZGRsCTgoJWVzcCksJWVheAorCXhvcmwJJWVkaSwlZXNpCisJcHNybGQJJDMwLCV4bW02CisJbW92bAklZWJ4LCVlYnAKKwlyb2xsCSQ1LCVlYngKKwl4b3JsCSVlZHgsJWVzaQorCWFkZGwJJWVieCwlZWF4CisJcm9ybAkkNywlZWN4CisJYWRkbAklZXNpLCVlYXgKKwlwb3IJJXhtbTYsJXhtbTQKKwlhZGRsCTEyKCVlc3ApLCVlZGkKKwl4b3JsCSVlZHgsJWVicAorCW1vdmRxYQk2NCglZXNwKSwleG1tNgorCW1vdmwJJWVheCwlZXNpCisJcm9sbAkkNSwlZWF4CisJeG9ybAklZWN4LCVlYnAKKwlhZGRsCSVlYXgsJWVkaQorCXJvcmwJJDcsJWVieAorCW1vdmRxYQkleG1tNCwleG1tNworCWFkZGwJJWVicCwlZWRpCisJYWRkbAkxNiglZXNwKSwlZWR4CisJcHhvcgkleG1tMSwleG1tNQorLmJ5dGUJMTAyLDE1LDU4LDE1LDI1MSw4CisJeG9ybAklZWN4LCVlc2kKKwltb3ZsCSVlZGksJWVicAorCXJvbGwJJDUsJWVkaQorCXB4b3IJJXhtbTYsJXhtbTUKKwltb3ZkcWEJJXhtbTEsNjQoJWVzcCkKKwl4b3JsCSVlYngsJWVzaQorCWFkZGwJJWVkaSwlZWR4CisJbW92ZHFhCSV4bW0wLCV4bW0xCisJcGFkZGQJJXhtbTQsJXhtbTAKKwlyb3JsCSQ3LCVlYXgKKwlhZGRsCSVlc2ksJWVkeAorCXB4b3IJJXhtbTcsJXhtbTUKKwlhZGRsCTIwKCVlc3ApLCVlY3gKKwl4b3JsCSVlYngsJWVicAorCW1vdmwJJWVkeCwlZXNpCisJcm9sbAkkNSwlZWR4CisJbW92ZHFhCSV4bW01LCV4bW03CisJbW92ZHFhCSV4bW0wLCglZXNwKQorCXhvcmwJJWVheCwlZWJwCisJYWRkbAklZWR4LCVlY3gKKwlyb3JsCSQ3LCVlZGkKKwlhZGRsCSVlYnAsJWVjeAorCXBzbGxkCSQyLCV4bW01CisJYWRkbAkyNCglZXNwKSwlZWJ4CisJeG9ybAklZWF4LCVlc2kKKwlwc3JsZAkkMzAsJXhtbTcKKwltb3ZsCSVlY3gsJWVicAorCXJvbGwJJDUsJWVjeAorCXhvcmwJJWVkaSwlZXNpCisJYWRkbAklZWN4LCVlYngKKwlyb3JsCSQ3LCVlZHgKKwlhZGRsCSVlc2ksJWVieAorCXBvcgkleG1tNywleG1tNQorCWFkZGwJMjgoJWVzcCksJWVheAorCXhvcmwJJWVkaSwlZWJwCisJbW92ZHFhCTgwKCVlc3ApLCV4bW03CisJbW92bAklZWJ4LCVlc2kKKwlyb2xsCSQ1LCVlYngKKwl4b3JsCSVlZHgsJWVicAorCWFkZGwJJWVieCwlZWF4CisJcm9ybAkkNywlZWN4CisJbW92ZHFhCSV4bW01LCV4bW0wCisJYWRkbAklZWJwLCVlYXgKKwltb3ZsCSVlY3gsJWVicAorCXB4b3IJJXhtbTIsJXhtbTYKKy5ieXRlCTEwMiwxNSw1OCwxNSwxOTYsOAorCXhvcmwJJWVkeCwlZWN4CisJYWRkbAkzMiglZXNwKSwlZWRpCisJYW5kbAklZWR4LCVlYnAKKwlweG9yCSV4bW03LCV4bW02CisJbW92ZHFhCSV4bW0yLDgwKCVlc3ApCisJYW5kbAklZWN4LCVlc2kKKwlyb3JsCSQ3LCVlYngKKwltb3ZkcWEJJXhtbTEsJXhtbTIKKwlwYWRkZAkleG1tNSwleG1tMQorCWFkZGwJJWVicCwlZWRpCisJbW92bAklZWF4LCVlYnAKKwlweG9yCSV4bW0wLCV4bW02CisJcm9sbAkkNSwlZWF4CisJYWRkbAklZXNpLCVlZGkKKwl4b3JsCSVlZHgsJWVjeAorCWFkZGwJJWVheCwlZWRpCisJbW92ZHFhCSV4bW02LCV4bW0wCisJbW92ZHFhCSV4bW0xLDE2KCVlc3ApCisJbW92bAklZWJ4LCVlc2kKKwl4b3JsCSVlY3gsJWVieAorCWFkZGwJMzYoJWVzcCksJWVkeAorCWFuZGwJJWVjeCwlZXNpCisJcHNsbGQJJDIsJXhtbTYKKwlhbmRsCSVlYngsJWVicAorCXJvcmwJJDcsJWVheAorCXBzcmxkCSQzMCwleG1tMAorCWFkZGwJJWVzaSwlZWR4CisJbW92bAklZWRpLCVlc2kKKwlyb2xsCSQ1LCVlZGkKKwlhZGRsCSVlYnAsJWVkeAorCXhvcmwJJWVjeCwlZWJ4CisJYWRkbAklZWRpLCVlZHgKKwlwb3IJJXhtbTAsJXhtbTYKKwltb3ZsCSVlYXgsJWVicAorCXhvcmwJJWVieCwlZWF4CisJbW92ZHFhCTk2KCVlc3ApLCV4bW0wCisJYWRkbAk0MCglZXNwKSwlZWN4CisJYW5kbAklZWJ4LCVlYnAKKwlhbmRsCSVlYXgsJWVzaQorCXJvcmwJJDcsJWVkaQorCWFkZGwJJWVicCwlZWN4CisJbW92ZHFhCSV4bW02LCV4bW0xCisJbW92bAklZWR4LCVlYnAKKwlyb2xsCSQ1LCVlZHgKKwlhZGRsCSVlc2ksJWVjeAorCXhvcmwJJWVieCwlZWF4CisJYWRkbAklZWR4LCVlY3gKKwltb3ZsCSVlZGksJWVzaQorCXhvcmwJJWVheCwlZWRpCisJYWRkbAk0NCglZXNwKSwlZWJ4CisJYW5kbAklZWF4LCVlc2kKKwlhbmRsCSVlZGksJWVicAorCXJvcmwJJDcsJWVkeAorCWFkZGwJJWVzaSwlZWJ4CisJbW92bAklZWN4LCVlc2kKKwlyb2xsCSQ1LCVlY3gKKwlhZGRsCSVlYnAsJWVieAorCXhvcmwJJWVheCwlZWRpCisJYWRkbAklZWN4LCVlYngKKwltb3ZsCSVlZHgsJWVicAorCXB4b3IJJXhtbTMsJXhtbTcKKy5ieXRlCTEwMiwxNSw1OCwxNSwyMDUsOAorCXhvcmwJJWVkaSwlZWR4CisJYWRkbAk0OCglZXNwKSwlZWF4CisJYW5kbAklZWRpLCVlYnAKKwlweG9yCSV4bW0wLCV4bW03CisJbW92ZHFhCSV4bW0zLDk2KCVlc3ApCisJYW5kbAklZWR4LCVlc2kKKwlyb3JsCSQ3LCVlY3gKKwltb3ZkcWEJMTQ0KCVlc3ApLCV4bW0zCisJcGFkZGQJJXhtbTYsJXhtbTIKKwlhZGRsCSVlYnAsJWVheAorCW1vdmwJJWVieCwlZWJwCisJcHhvcgkleG1tMSwleG1tNworCXJvbGwJJDUsJWVieAorCWFkZGwJJWVzaSwlZWF4CisJeG9ybAklZWRpLCVlZHgKKwlhZGRsCSVlYngsJWVheAorCW1vdmRxYQkleG1tNywleG1tMQorCW1vdmRxYQkleG1tMiwzMiglZXNwKQorCW1vdmwJJWVjeCwlZXNpCisJeG9ybAklZWR4LCVlY3gKKwlhZGRsCTUyKCVlc3ApLCVlZGkKKwlhbmRsCSVlZHgsJWVzaQorCXBzbGxkCSQyLCV4bW03CisJYW5kbAklZWN4LCVlYnAKKwlyb3JsCSQ3LCVlYngKKwlwc3JsZAkkMzAsJXhtbTEKKwlhZGRsCSVlc2ksJWVkaQorCW1vdmwJJWVheCwlZXNpCisJcm9sbAkkNSwlZWF4CisJYWRkbAklZWJwLCVlZGkKKwl4b3JsCSVlZHgsJWVjeAorCWFkZGwJJWVheCwlZWRpCisJcG9yCSV4bW0xLCV4bW03CisJbW92bAklZWJ4LCVlYnAKKwl4b3JsCSVlY3gsJWVieAorCW1vdmRxYQk2NCglZXNwKSwleG1tMQorCWFkZGwJNTYoJWVzcCksJWVkeAorCWFuZGwJJWVjeCwlZWJwCisJYW5kbAklZWJ4LCVlc2kKKwlyb3JsCSQ3LCVlYXgKKwlhZGRsCSVlYnAsJWVkeAorCW1vdmRxYQkleG1tNywleG1tMgorCW1vdmwJJWVkaSwlZWJwCisJcm9sbAkkNSwlZWRpCisJYWRkbAklZXNpLCVlZHgKKwl4b3JsCSVlY3gsJWVieAorCWFkZGwJJWVkaSwlZWR4CisJbW92bAklZWF4LCVlc2kKKwl4b3JsCSVlYngsJWVheAorCWFkZGwJNjAoJWVzcCksJWVjeAorCWFuZGwJJWVieCwlZXNpCisJYW5kbAklZWF4LCVlYnAKKwlyb3JsCSQ3LCVlZGkKKwlhZGRsCSVlc2ksJWVjeAorCW1vdmwJJWVkeCwlZXNpCisJcm9sbAkkNSwlZWR4CisJYWRkbAklZWJwLCVlY3gKKwl4b3JsCSVlYngsJWVheAorCWFkZGwJJWVkeCwlZWN4CisJbW92bAklZWRpLCVlYnAKKwlweG9yCSV4bW00LCV4bW0wCisuYnl0ZQkxMDIsMTUsNTgsMTUsMjE0LDgKKwl4b3JsCSVlYXgsJWVkaQorCWFkZGwJKCVlc3ApLCVlYngKKwlhbmRsCSVlYXgsJWVicAorCXB4b3IJJXhtbTEsJXhtbTAKKwltb3ZkcWEJJXhtbTQsNjQoJWVzcCkKKwlhbmRsCSVlZGksJWVzaQorCXJvcmwJJDcsJWVkeAorCW1vdmRxYQkleG1tMywleG1tNAorCXBhZGRkCSV4bW03LCV4bW0zCisJYWRkbAklZWJwLCVlYngKKwltb3ZsCSVlY3gsJWVicAorCXB4b3IJJXhtbTIsJXhtbTAKKwlyb2xsCSQ1LCVlY3gKKwlhZGRsCSVlc2ksJWVieAorCXhvcmwJJWVheCwlZWRpCisJYWRkbAklZWN4LCVlYngKKwltb3ZkcWEJJXhtbTAsJXhtbTIKKwltb3ZkcWEJJXhtbTMsNDgoJWVzcCkKKwltb3ZsCSVlZHgsJWVzaQorCXhvcmwJJWVkaSwlZWR4CisJYWRkbAk0KCVlc3ApLCVlYXgKKwlhbmRsCSVlZGksJWVzaQorCXBzbGxkCSQyLCV4bW0wCisJYW5kbAklZWR4LCVlYnAKKwlyb3JsCSQ3LCVlY3gKKwlwc3JsZAkkMzAsJXhtbTIKKwlhZGRsCSVlc2ksJWVheAorCW1vdmwJJWVieCwlZXNpCisJcm9sbAkkNSwlZWJ4CisJYWRkbAklZWJwLCVlYXgKKwl4b3JsCSVlZGksJWVkeAorCWFkZGwJJWVieCwlZWF4CisJcG9yCSV4bW0yLCV4bW0wCisJbW92bAklZWN4LCVlYnAKKwl4b3JsCSVlZHgsJWVjeAorCW1vdmRxYQk4MCglZXNwKSwleG1tMgorCWFkZGwJOCglZXNwKSwlZWRpCisJYW5kbAklZWR4LCVlYnAKKwlhbmRsCSVlY3gsJWVzaQorCXJvcmwJJDcsJWVieAorCWFkZGwJJWVicCwlZWRpCisJbW92ZHFhCSV4bW0wLCV4bW0zCisJbW92bAklZWF4LCVlYnAKKwlyb2xsCSQ1LCVlYXgKKwlhZGRsCSVlc2ksJWVkaQorCXhvcmwJJWVkeCwlZWN4CisJYWRkbAklZWF4LCVlZGkKKwltb3ZsCSVlYngsJWVzaQorCXhvcmwJJWVjeCwlZWJ4CisJYWRkbAkxMiglZXNwKSwlZWR4CisJYW5kbAklZWN4LCVlc2kKKwlhbmRsCSVlYngsJWVicAorCXJvcmwJJDcsJWVheAorCWFkZGwJJWVzaSwlZWR4CisJbW92bAklZWRpLCVlc2kKKwlyb2xsCSQ1LCVlZGkKKwlhZGRsCSVlYnAsJWVkeAorCXhvcmwJJWVjeCwlZWJ4CisJYWRkbAklZWRpLCVlZHgKKwltb3ZsCSVlYXgsJWVicAorCXB4b3IJJXhtbTUsJXhtbTEKKy5ieXRlCTEwMiwxNSw1OCwxNSwyMjMsOAorCXhvcmwJJWVieCwlZWF4CisJYWRkbAkxNiglZXNwKSwlZWN4CisJYW5kbAklZWJ4LCVlYnAKKwlweG9yCSV4bW0yLCV4bW0xCisJbW92ZHFhCSV4bW01LDgwKCVlc3ApCisJYW5kbAklZWF4LCVlc2kKKwlyb3JsCSQ3LCVlZGkKKwltb3ZkcWEJJXhtbTQsJXhtbTUKKwlwYWRkZAkleG1tMCwleG1tNAorCWFkZGwJJWVicCwlZWN4CisJbW92bAklZWR4LCVlYnAKKwlweG9yCSV4bW0zLCV4bW0xCisJcm9sbAkkNSwlZWR4CisJYWRkbAklZXNpLCVlY3gKKwl4b3JsCSVlYngsJWVheAorCWFkZGwJJWVkeCwlZWN4CisJbW92ZHFhCSV4bW0xLCV4bW0zCisJbW92ZHFhCSV4bW00LCglZXNwKQorCW1vdmwJJWVkaSwlZXNpCisJeG9ybAklZWF4LCVlZGkKKwlhZGRsCTIwKCVlc3ApLCVlYngKKwlhbmRsCSVlYXgsJWVzaQorCXBzbGxkCSQyLCV4bW0xCisJYW5kbAklZWRpLCVlYnAKKwlyb3JsCSQ3LCVlZHgKKwlwc3JsZAkkMzAsJXhtbTMKKwlhZGRsCSVlc2ksJWVieAorCW1vdmwJJWVjeCwlZXNpCisJcm9sbAkkNSwlZWN4CisJYWRkbAklZWJwLCVlYngKKwl4b3JsCSVlYXgsJWVkaQorCWFkZGwJJWVjeCwlZWJ4CisJcG9yCSV4bW0zLCV4bW0xCisJbW92bAklZWR4LCVlYnAKKwl4b3JsCSVlZGksJWVkeAorCW1vdmRxYQk5NiglZXNwKSwleG1tMworCWFkZGwJMjQoJWVzcCksJWVheAorCWFuZGwJJWVkaSwlZWJwCisJYW5kbAklZWR4LCVlc2kKKwlyb3JsCSQ3LCVlY3gKKwlhZGRsCSVlYnAsJWVheAorCW1vdmRxYQkleG1tMSwleG1tNAorCW1vdmwJJWVieCwlZWJwCisJcm9sbAkkNSwlZWJ4CisJYWRkbAklZXNpLCVlYXgKKwl4b3JsCSVlZGksJWVkeAorCWFkZGwJJWVieCwlZWF4CisJbW92bAklZWN4LCVlc2kKKwl4b3JsCSVlZHgsJWVjeAorCWFkZGwJMjgoJWVzcCksJWVkaQorCWFuZGwJJWVkeCwlZXNpCisJYW5kbAklZWN4LCVlYnAKKwlyb3JsCSQ3LCVlYngKKwlhZGRsCSVlc2ksJWVkaQorCW1vdmwJJWVheCwlZXNpCisJcm9sbAkkNSwlZWF4CisJYWRkbAklZWJwLCVlZGkKKwl4b3JsCSVlZHgsJWVjeAorCWFkZGwJJWVheCwlZWRpCisJbW92bAklZWJ4LCVlYnAKKwlweG9yCSV4bW02LCV4bW0yCisuYnl0ZQkxMDIsMTUsNTgsMTUsMjI0LDgKKwl4b3JsCSVlY3gsJWVieAorCWFkZGwJMzIoJWVzcCksJWVkeAorCWFuZGwJJWVjeCwlZWJwCisJcHhvcgkleG1tMywleG1tMgorCW1vdmRxYQkleG1tNiw5NiglZXNwKQorCWFuZGwJJWVieCwlZXNpCisJcm9ybAkkNywlZWF4CisJbW92ZHFhCSV4bW01LCV4bW02CisJcGFkZGQJJXhtbTEsJXhtbTUKKwlhZGRsCSVlYnAsJWVkeAorCW1vdmwJJWVkaSwlZWJwCisJcHhvcgkleG1tNCwleG1tMgorCXJvbGwJJDUsJWVkaQorCWFkZGwJJWVzaSwlZWR4CisJeG9ybAklZWN4LCVlYngKKwlhZGRsCSVlZGksJWVkeAorCW1vdmRxYQkleG1tMiwleG1tNAorCW1vdmRxYQkleG1tNSwxNiglZXNwKQorCW1vdmwJJWVheCwlZXNpCisJeG9ybAklZWJ4LCVlYXgKKwlhZGRsCTM2KCVlc3ApLCVlY3gKKwlhbmRsCSVlYngsJWVzaQorCXBzbGxkCSQyLCV4bW0yCisJYW5kbAklZWF4LCVlYnAKKwlyb3JsCSQ3LCVlZGkKKwlwc3JsZAkkMzAsJXhtbTQKKwlhZGRsCSVlc2ksJWVjeAorCW1vdmwJJWVkeCwlZXNpCisJcm9sbAkkNSwlZWR4CisJYWRkbAklZWJwLCVlY3gKKwl4b3JsCSVlYngsJWVheAorCWFkZGwJJWVkeCwlZWN4CisJcG9yCSV4bW00LCV4bW0yCisJbW92bAklZWRpLCVlYnAKKwl4b3JsCSVlYXgsJWVkaQorCW1vdmRxYQk2NCglZXNwKSwleG1tNAorCWFkZGwJNDAoJWVzcCksJWVieAorCWFuZGwJJWVheCwlZWJwCisJYW5kbAklZWRpLCVlc2kKKwlyb3JsCSQ3LCVlZHgKKwlhZGRsCSVlYnAsJWVieAorCW1vdmRxYQkleG1tMiwleG1tNQorCW1vdmwJJWVjeCwlZWJwCisJcm9sbAkkNSwlZWN4CisJYWRkbAklZXNpLCVlYngKKwl4b3JsCSVlYXgsJWVkaQorCWFkZGwJJWVjeCwlZWJ4CisJbW92bAklZWR4LCVlc2kKKwl4b3JsCSVlZGksJWVkeAorCWFkZGwJNDQoJWVzcCksJWVheAorCWFuZGwJJWVkaSwlZXNpCisJYW5kbAklZWR4LCVlYnAKKwlyb3JsCSQ3LCVlY3gKKwlhZGRsCSVlc2ksJWVheAorCW1vdmwJJWVieCwlZXNpCisJcm9sbAkkNSwlZWJ4CisJYWRkbAklZWJwLCVlYXgKKwl4b3JsCSVlZGksJWVkeAorCWFkZGwJJWVieCwlZWF4CisJYWRkbAk0OCglZXNwKSwlZWRpCisJcHhvcgkleG1tNywleG1tMworLmJ5dGUJMTAyLDE1LDU4LDE1LDIzMyw4CisJeG9ybAklZWR4LCVlc2kKKwltb3ZsCSVlYXgsJWVicAorCXJvbGwJJDUsJWVheAorCXB4b3IJJXhtbTQsJXhtbTMKKwltb3ZkcWEJJXhtbTcsNjQoJWVzcCkKKwl4b3JsCSVlY3gsJWVzaQorCWFkZGwJJWVheCwlZWRpCisJbW92ZHFhCSV4bW02LCV4bW03CisJcGFkZGQJJXhtbTIsJXhtbTYKKwlyb3JsCSQ3LCVlYngKKwlhZGRsCSVlc2ksJWVkaQorCXB4b3IJJXhtbTUsJXhtbTMKKwlhZGRsCTUyKCVlc3ApLCVlZHgKKwl4b3JsCSVlY3gsJWVicAorCW1vdmwJJWVkaSwlZXNpCisJcm9sbAkkNSwlZWRpCisJbW92ZHFhCSV4bW0zLCV4bW01CisJbW92ZHFhCSV4bW02LDMyKCVlc3ApCisJeG9ybAklZWJ4LCVlYnAKKwlhZGRsCSVlZGksJWVkeAorCXJvcmwJJDcsJWVheAorCWFkZGwJJWVicCwlZWR4CisJcHNsbGQJJDIsJXhtbTMKKwlhZGRsCTU2KCVlc3ApLCVlY3gKKwl4b3JsCSVlYngsJWVzaQorCXBzcmxkCSQzMCwleG1tNQorCW1vdmwJJWVkeCwlZWJwCisJcm9sbAkkNSwlZWR4CisJeG9ybAklZWF4LCVlc2kKKwlhZGRsCSVlZHgsJWVjeAorCXJvcmwJJDcsJWVkaQorCWFkZGwJJWVzaSwlZWN4CisJcG9yCSV4bW01LCV4bW0zCisJYWRkbAk2MCglZXNwKSwlZWJ4CisJeG9ybAklZWF4LCVlYnAKKwltb3ZsCSVlY3gsJWVzaQorCXJvbGwJJDUsJWVjeAorCXhvcmwJJWVkaSwlZWJwCisJYWRkbAklZWN4LCVlYngKKwlyb3JsCSQ3LCVlZHgKKwlhZGRsCSVlYnAsJWVieAorCWFkZGwJKCVlc3ApLCVlYXgKKwlwYWRkZAkleG1tMywleG1tNworCXhvcmwJJWVkaSwlZXNpCisJbW92bAklZWJ4LCVlYnAKKwlyb2xsCSQ1LCVlYngKKwl4b3JsCSVlZHgsJWVzaQorCW1vdmRxYQkleG1tNyw0OCglZXNwKQorCWFkZGwJJWVieCwlZWF4CisJcm9ybAkkNywlZWN4CisJYWRkbAklZXNpLCVlYXgKKwlhZGRsCTQoJWVzcCksJWVkaQorCXhvcmwJJWVkeCwlZWJwCisJbW92bAklZWF4LCVlc2kKKwlyb2xsCSQ1LCVlYXgKKwl4b3JsCSVlY3gsJWVicAorCWFkZGwJJWVheCwlZWRpCisJcm9ybAkkNywlZWJ4CisJYWRkbAklZWJwLCVlZGkKKwlhZGRsCTgoJWVzcCksJWVkeAorCXhvcmwJJWVjeCwlZXNpCisJbW92bAklZWRpLCVlYnAKKwlyb2xsCSQ1LCVlZGkKKwl4b3JsCSVlYngsJWVzaQorCWFkZGwJJWVkaSwlZWR4CisJcm9ybAkkNywlZWF4CisJYWRkbAklZXNpLCVlZHgKKwlhZGRsCTEyKCVlc3ApLCVlY3gKKwl4b3JsCSVlYngsJWVicAorCW1vdmwJJWVkeCwlZXNpCisJcm9sbAkkNSwlZWR4CisJeG9ybAklZWF4LCVlYnAKKwlhZGRsCSVlZHgsJWVjeAorCXJvcmwJJDcsJWVkaQorCWFkZGwJJWVicCwlZWN4CisJbW92bAkxOTYoJWVzcCksJWVicAorCWNtcGwJMjAwKCVlc3ApLCVlYnAKKwlqZQkuTDAwNWRvbmUKKwltb3ZkcWEJMTYwKCVlc3ApLCV4bW03CisJbW92ZHFhCTE3NiglZXNwKSwleG1tNgorCW1vdmRxdQkoJWVicCksJXhtbTAKKwltb3ZkcXUJMTYoJWVicCksJXhtbTEKKwltb3ZkcXUJMzIoJWVicCksJXhtbTIKKwltb3ZkcXUJNDgoJWVicCksJXhtbTMKKwlhZGRsCSQ2NCwlZWJwCisuYnl0ZQkxMDIsMTUsNTYsMCwxOTgKKwltb3ZsCSVlYnAsMTk2KCVlc3ApCisJbW92ZHFhCSV4bW03LDk2KCVlc3ApCisJYWRkbAkxNiglZXNwKSwlZWJ4CisJeG9ybAklZWF4LCVlc2kKKy5ieXRlCTEwMiwxNSw1NiwwLDIwNgorCW1vdmwJJWVjeCwlZWJwCisJcm9sbAkkNSwlZWN4CisJcGFkZGQJJXhtbTcsJXhtbTAKKwl4b3JsCSVlZGksJWVzaQorCWFkZGwJJWVjeCwlZWJ4CisJcm9ybAkkNywlZWR4CisJYWRkbAklZXNpLCVlYngKKwltb3ZkcWEJJXhtbTAsKCVlc3ApCisJYWRkbAkyMCglZXNwKSwlZWF4CisJeG9ybAklZWRpLCVlYnAKKwlwc3ViZAkleG1tNywleG1tMAorCW1vdmwJJWVieCwlZXNpCisJcm9sbAkkNSwlZWJ4CisJeG9ybAklZWR4LCVlYnAKKwlhZGRsCSVlYngsJWVheAorCXJvcmwJJDcsJWVjeAorCWFkZGwJJWVicCwlZWF4CisJYWRkbAkyNCglZXNwKSwlZWRpCisJeG9ybAklZWR4LCVlc2kKKwltb3ZsCSVlYXgsJWVicAorCXJvbGwJJDUsJWVheAorCXhvcmwJJWVjeCwlZXNpCisJYWRkbAklZWF4LCVlZGkKKwlyb3JsCSQ3LCVlYngKKwlhZGRsCSVlc2ksJWVkaQorCWFkZGwJMjgoJWVzcCksJWVkeAorCXhvcmwJJWVjeCwlZWJwCisJbW92bAklZWRpLCVlc2kKKwlyb2xsCSQ1LCVlZGkKKwl4b3JsCSVlYngsJWVicAorCWFkZGwJJWVkaSwlZWR4CisJcm9ybAkkNywlZWF4CisJYWRkbAklZWJwLCVlZHgKKwlhZGRsCTMyKCVlc3ApLCVlY3gKKwl4b3JsCSVlYngsJWVzaQorLmJ5dGUJMTAyLDE1LDU2LDAsMjE0CisJbW92bAklZWR4LCVlYnAKKwlyb2xsCSQ1LCVlZHgKKwlwYWRkZAkleG1tNywleG1tMQorCXhvcmwJJWVheCwlZXNpCisJYWRkbAklZWR4LCVlY3gKKwlyb3JsCSQ3LCVlZGkKKwlhZGRsCSVlc2ksJWVjeAorCW1vdmRxYQkleG1tMSwxNiglZXNwKQorCWFkZGwJMzYoJWVzcCksJWVieAorCXhvcmwJJWVheCwlZWJwCisJcHN1YmQJJXhtbTcsJXhtbTEKKwltb3ZsCSVlY3gsJWVzaQorCXJvbGwJJDUsJWVjeAorCXhvcmwJJWVkaSwlZWJwCisJYWRkbAklZWN4LCVlYngKKwlyb3JsCSQ3LCVlZHgKKwlhZGRsCSVlYnAsJWVieAorCWFkZGwJNDAoJWVzcCksJWVheAorCXhvcmwJJWVkaSwlZXNpCisJbW92bAklZWJ4LCVlYnAKKwlyb2xsCSQ1LCVlYngKKwl4b3JsCSVlZHgsJWVzaQorCWFkZGwJJWVieCwlZWF4CisJcm9ybAkkNywlZWN4CisJYWRkbAklZXNpLCVlYXgKKwlhZGRsCTQ0KCVlc3ApLCVlZGkKKwl4b3JsCSVlZHgsJWVicAorCW1vdmwJJWVheCwlZXNpCisJcm9sbAkkNSwlZWF4CisJeG9ybAklZWN4LCVlYnAKKwlhZGRsCSVlYXgsJWVkaQorCXJvcmwJJDcsJWVieAorCWFkZGwJJWVicCwlZWRpCisJYWRkbAk0OCglZXNwKSwlZWR4CisJeG9ybAklZWN4LCVlc2kKKy5ieXRlCTEwMiwxNSw1NiwwLDIyMgorCW1vdmwJJWVkaSwlZWJwCisJcm9sbAkkNSwlZWRpCisJcGFkZGQJJXhtbTcsJXhtbTIKKwl4b3JsCSVlYngsJWVzaQorCWFkZGwJJWVkaSwlZWR4CisJcm9ybAkkNywlZWF4CisJYWRkbAklZXNpLCVlZHgKKwltb3ZkcWEJJXhtbTIsMzIoJWVzcCkKKwlhZGRsCTUyKCVlc3ApLCVlY3gKKwl4b3JsCSVlYngsJWVicAorCXBzdWJkCSV4bW03LCV4bW0yCisJbW92bAklZWR4LCVlc2kKKwlyb2xsCSQ1LCVlZHgKKwl4b3JsCSVlYXgsJWVicAorCWFkZGwJJWVkeCwlZWN4CisJcm9ybAkkNywlZWRpCisJYWRkbAklZWJwLCVlY3gKKwlhZGRsCTU2KCVlc3ApLCVlYngKKwl4b3JsCSVlYXgsJWVzaQorCW1vdmwJJWVjeCwlZWJwCisJcm9sbAkkNSwlZWN4CisJeG9ybAklZWRpLCVlc2kKKwlhZGRsCSVlY3gsJWVieAorCXJvcmwJJDcsJWVkeAorCWFkZGwJJWVzaSwlZWJ4CisJYWRkbAk2MCglZXNwKSwlZWF4CisJeG9ybAklZWRpLCVlYnAKKwltb3ZsCSVlYngsJWVzaQorCXJvbGwJJDUsJWVieAorCXhvcmwJJWVkeCwlZWJwCisJYWRkbAklZWJ4LCVlYXgKKwlyb3JsCSQ3LCVlY3gKKwlhZGRsCSVlYnAsJWVheAorCW1vdmwJMTkyKCVlc3ApLCVlYnAKKwlhZGRsCSglZWJwKSwlZWF4CisJYWRkbAk0KCVlYnApLCVlc2kKKwlhZGRsCTgoJWVicCksJWVjeAorCW1vdmwJJWVheCwoJWVicCkKKwlhZGRsCTEyKCVlYnApLCVlZHgKKwltb3ZsCSVlc2ksNCglZWJwKQorCWFkZGwJMTYoJWVicCksJWVkaQorCW1vdmwJJWVjeCw4KCVlYnApCisJbW92bAklZXNpLCVlYngKKwltb3ZsCSVlZHgsMTIoJWVicCkKKwltb3ZsCSVlZGksMTYoJWVicCkKKwltb3ZkcWEJJXhtbTEsJXhtbTQKKwlqbXAJLkwwMDRsb29wCisuYWxpZ24JMTYKKy5MMDA1ZG9uZToKKwlhZGRsCTE2KCVlc3ApLCVlYngKKwl4b3JsCSVlYXgsJWVzaQorCW1vdmwJJWVjeCwlZWJwCisJcm9sbAkkNSwlZWN4CisJeG9ybAklZWRpLCVlc2kKKwlhZGRsCSVlY3gsJWVieAorCXJvcmwJJDcsJWVkeAorCWFkZGwJJWVzaSwlZWJ4CisJYWRkbAkyMCglZXNwKSwlZWF4CisJeG9ybAklZWRpLCVlYnAKKwltb3ZsCSVlYngsJWVzaQorCXJvbGwJJDUsJWVieAorCXhvcmwJJWVkeCwlZWJwCisJYWRkbAklZWJ4LCVlYXgKKwlyb3JsCSQ3LCVlY3gKKwlhZGRsCSVlYnAsJWVheAorCWFkZGwJMjQoJWVzcCksJWVkaQorCXhvcmwJJWVkeCwlZXNpCisJbW92bAklZWF4LCVlYnAKKwlyb2xsCSQ1LCVlYXgKKwl4b3JsCSVlY3gsJWVzaQorCWFkZGwJJWVheCwlZWRpCisJcm9ybAkkNywlZWJ4CisJYWRkbAklZXNpLCVlZGkKKwlhZGRsCTI4KCVlc3ApLCVlZHgKKwl4b3JsCSVlY3gsJWVicAorCW1vdmwJJWVkaSwlZXNpCisJcm9sbAkkNSwlZWRpCisJeG9ybAklZWJ4LCVlYnAKKwlhZGRsCSVlZGksJWVkeAorCXJvcmwJJDcsJWVheAorCWFkZGwJJWVicCwlZWR4CisJYWRkbAkzMiglZXNwKSwlZWN4CisJeG9ybAklZWJ4LCVlc2kKKwltb3ZsCSVlZHgsJWVicAorCXJvbGwJJDUsJWVkeAorCXhvcmwJJWVheCwlZXNpCisJYWRkbAklZWR4LCVlY3gKKwlyb3JsCSQ3LCVlZGkKKwlhZGRsCSVlc2ksJWVjeAorCWFkZGwJMzYoJWVzcCksJWVieAorCXhvcmwJJWVheCwlZWJwCisJbW92bAklZWN4LCVlc2kKKwlyb2xsCSQ1LCVlY3gKKwl4b3JsCSVlZGksJWVicAorCWFkZGwJJWVjeCwlZWJ4CisJcm9ybAkkNywlZWR4CisJYWRkbAklZWJwLCVlYngKKwlhZGRsCTQwKCVlc3ApLCVlYXgKKwl4b3JsCSVlZGksJWVzaQorCW1vdmwJJWVieCwlZWJwCisJcm9sbAkkNSwlZWJ4CisJeG9ybAklZWR4LCVlc2kKKwlhZGRsCSVlYngsJWVheAorCXJvcmwJJDcsJWVjeAorCWFkZGwJJWVzaSwlZWF4CisJYWRkbAk0NCglZXNwKSwlZWRpCisJeG9ybAklZWR4LCVlYnAKKwltb3ZsCSVlYXgsJWVzaQorCXJvbGwJJDUsJWVheAorCXhvcmwJJWVjeCwlZWJwCisJYWRkbAklZWF4LCVlZGkKKwlyb3JsCSQ3LCVlYngKKwlhZGRsCSVlYnAsJWVkaQorCWFkZGwJNDgoJWVzcCksJWVkeAorCXhvcmwJJWVjeCwlZXNpCisJbW92bAklZWRpLCVlYnAKKwlyb2xsCSQ1LCVlZGkKKwl4b3JsCSVlYngsJWVzaQorCWFkZGwJJWVkaSwlZWR4CisJcm9ybAkkNywlZWF4CisJYWRkbAklZXNpLCVlZHgKKwlhZGRsCTUyKCVlc3ApLCVlY3gKKwl4b3JsCSVlYngsJWVicAorCW1vdmwJJWVkeCwlZXNpCisJcm9sbAkkNSwlZWR4CisJeG9ybAklZWF4LCVlYnAKKwlhZGRsCSVlZHgsJWVjeAorCXJvcmwJJDcsJWVkaQorCWFkZGwJJWVicCwlZWN4CisJYWRkbAk1NiglZXNwKSwlZWJ4CisJeG9ybAklZWF4LCVlc2kKKwltb3ZsCSVlY3gsJWVicAorCXJvbGwJJDUsJWVjeAorCXhvcmwJJWVkaSwlZXNpCisJYWRkbAklZWN4LCVlYngKKwlyb3JsCSQ3LCVlZHgKKwlhZGRsCSVlc2ksJWVieAorCWFkZGwJNjAoJWVzcCksJWVheAorCXhvcmwJJWVkaSwlZWJwCisJbW92bAklZWJ4LCVlc2kKKwlyb2xsCSQ1LCVlYngKKwl4b3JsCSVlZHgsJWVicAorCWFkZGwJJWVieCwlZWF4CisJcm9ybAkkNywlZWN4CisJYWRkbAklZWJwLCVlYXgKKwltb3ZsCTE5MiglZXNwKSwlZWJwCisJYWRkbAkoJWVicCksJWVheAorCW1vdmwJMjA0KCVlc3ApLCVlc3AKKwlhZGRsCTQoJWVicCksJWVzaQorCWFkZGwJOCglZWJwKSwlZWN4CisJbW92bAklZWF4LCglZWJwKQorCWFkZGwJMTIoJWVicCksJWVkeAorCW1vdmwJJWVzaSw0KCVlYnApCisJYWRkbAkxNiglZWJwKSwlZWRpCisJbW92bAklZWN4LDgoJWVicCkKKwltb3ZsCSVlZHgsMTIoJWVicCkKKwltb3ZsCSVlZGksMTYoJWVicCkKKwlwb3BsCSVlZGkKKwlwb3BsCSVlc2kKKwlwb3BsCSVlYngKKwlwb3BsCSVlYnAKKwlyZXQKKy5zaXplCV9zaGExX2Jsb2NrX2RhdGFfb3JkZXJfc3NzZTMsLi1fc2hhMV9ibG9ja19kYXRhX29yZGVyX3Nzc2UzCisuYWxpZ24JNjQKKy5MS19YWF9YWDoKKy5sb25nCTE1MTg1MDAyNDksMTUxODUwMDI0OSwxNTE4NTAwMjQ5LDE1MTg1MDAyNDkKKy5sb25nCTE4NTk3NzUzOTMsMTg1OTc3NTM5MywxODU5Nzc1MzkzLDE4NTk3NzUzOTMKKy5sb25nCTI0MDA5NTk3MDgsMjQwMDk1OTcwOCwyNDAwOTU5NzA4LDI0MDA5NTk3MDgKKy5sb25nCTMzOTU0Njk3ODIsMzM5NTQ2OTc4MiwzMzk1NDY5NzgyLDMzOTU0Njk3ODIKKy5sb25nCTY2MDUxLDY3NDM4MDg3LDEzNDgxMDEyMywyMDIxODIxNTkKIC5ieXRlCTgzLDcyLDY1LDQ5LDMyLDk4LDEwOCwxMTEsOTksMTA3LDMyLDExNiwxMTQsOTcsMTEwLDExNQogLmJ5dGUJMTAyLDExMSwxMTQsMTA5LDMyLDEwMiwxMTEsMTE0LDMyLDEyMCw1Niw1NCw0NCwzMiw2Nyw4MgogLmJ5dGUJODksODAsODQsNzksNzEsNjUsNzcsODMsMzIsOTgsMTIxLDMyLDYwLDk3LDExMiwxMTIKIC5ieXRlCTExNCwxMTEsNjQsMTExLDExMiwxMDEsMTEwLDExNSwxMTUsMTA4LDQ2LDExMSwxMTQsMTAzLDYyLDAKKy5jb21tCU9QRU5TU0xfaWEzMmNhcF9QLDgsNApkaWZmIC0tZ2l0IGEvY3J5cHRvL3NoYS9hc20vc2hhMS1hcm12NC1sYXJnZS5TIGIvY3J5cHRvL3NoYS9hc20vc2hhMS1hcm12NC1sYXJnZS5TCmluZGV4IDYzOWFlNzguLmExNTYyODggMTAwNjQ0Ci0tLSBhL2NyeXB0by9zaGEvYXNtL3NoYTEtYXJtdjQtbGFyZ2UuUworKysgYi9jcnlwdG8vc2hhL2FzbS9zaGExLWFybXY0LWxhcmdlLlMKQEAgLTEsMTIgKzEsMjIgQEAKICNpbmNsdWRlICJhcm1fYXJjaC5oIgogCiAudGV4dAorLmNvZGUJMzIKIAogLmdsb2JhbAlzaGExX2Jsb2NrX2RhdGFfb3JkZXIKIC50eXBlCXNoYTFfYmxvY2tfZGF0YV9vcmRlciwlZnVuY3Rpb24KIAotLmFsaWduCTIKKy5hbGlnbgk1CiBzaGExX2Jsb2NrX2RhdGFfb3JkZXI6CisjaWYgX19BUk1fQVJDSF9fPj03CisJc3ViCXIzLHBjLCM4CQlAIHNoYTFfYmxvY2tfZGF0YV9vcmRlcgorCWxkcglyMTIsLkxPUEVOU1NMX2FybWNhcAorCWxkcglyMTIsW3IzLHIxMl0JCUAgT1BFTlNTTF9hcm1jYXBfUAorCXRzdAlyMTIsI0FSTVY4X1NIQTEKKwlibmUJLkxBUk12OAorCXRzdAlyMTIsI0FSTVY3X05FT04KKwlibmUJLkxORU9OCisjZW5kaWYKIAlzdG1kYglzcCEse3I0LXIxMixscn0KIAlhZGQJcjIscjEscjIsbHNsIzYJQCByMiB0byBwb2ludCBhdCB0aGUgZW5kIG9mIHIxCiAJbGRtaWEJcjAse3IzLHI0LHI1LHI2LHI3fQpAQCAtNDQyLDExICs0NTIsOTk5IEBACiAJbW92ZXEJcGMsbHIJCQlAIGJlIGJpbmFyeSBjb21wYXRpYmxlIHdpdGggVjQsIHlldAogCS53b3JkCTB4ZTEyZmZmMWUJCQlAIGludGVyb3BlcmFibGUgd2l0aCBUaHVtYiBJU0E6LSkKICNlbmRpZgotLmFsaWduCTIKKy5zaXplCXNoYTFfYmxvY2tfZGF0YV9vcmRlciwuLXNoYTFfYmxvY2tfZGF0YV9vcmRlcgorCisuYWxpZ24JNQogLkxLXzAwXzE5Ogkud29yZAkweDVhODI3OTk5CiAuTEtfMjBfMzk6CS53b3JkCTB4NmVkOWViYTEKIC5MS180MF81OToJLndvcmQJMHg4ZjFiYmNkYwogLkxLXzYwXzc5Ogkud29yZAkweGNhNjJjMWQ2Ci0uc2l6ZQlzaGExX2Jsb2NrX2RhdGFfb3JkZXIsLi1zaGExX2Jsb2NrX2RhdGFfb3JkZXIKLS5hc2NpegkiU0hBMSBibG9jayB0cmFuc2Zvcm0gZm9yIEFSTXY0LCBDUllQVE9HQU1TIGJ5IDxhcHByb0BvcGVuc3NsLm9yZz4iCi0uYWxpZ24JMgorLkxPUEVOU1NMX2FybWNhcDoKKy53b3JkCU9QRU5TU0xfYXJtY2FwX1Atc2hhMV9ibG9ja19kYXRhX29yZGVyCisuYXNjaXoJIlNIQTEgYmxvY2sgdHJhbnNmb3JtIGZvciBBUk12NC9ORU9OL0FSTXY4LCBDUllQVE9HQU1TIGJ5IDxhcHByb0BvcGVuc3NsLm9yZz4iCisuYWxpZ24JNQorI2lmIF9fQVJNX0FSQ0hfXz49NworLmZwdQluZW9uCisKKy50eXBlCXNoYTFfYmxvY2tfZGF0YV9vcmRlcl9uZW9uLCVmdW5jdGlvbgorLmFsaWduCTQKK3NoYTFfYmxvY2tfZGF0YV9vcmRlcl9uZW9uOgorLkxORU9OOgorCXN0bWRiCXNwISx7cjQtcjEyLGxyfQorCWFkZAlyMixyMSxyMixsc2wjNglAIHIyIHRvIHBvaW50IGF0IHRoZSBlbmQgb2YgcjEKKwlAIGRtYgkJCQlAIGVycmF0YSAjNDUxMDM0IG9uIGVhcmx5IENvcnRleCBBOAorCUAgdnN0bWRiCXNwISx7ZDgtZDE1fQlAIEFCSSBzcGVjaWZpY2F0aW9uIHNheXMgc28KKwltb3YJcjE0LHNwCisJc3ViCXNwLHNwLCM2NAkJQCBhbGxvY2EKKwlhZHIJcjgsLkxLXzAwXzE5CisJYmljCXNwLHNwLCMxNQkJQCBhbGlnbiBmb3IgMTI4LWJpdCBzdG9yZXMKKworCWxkbWlhCXIwLHtyMyxyNCxyNSxyNixyN30JQCBsb2FkIGNvbnRleHQKKwltb3YJcjEyLHNwCisKKwl2bGQxLjgJCXtxMC1xMX0sW3IxXSEJQCBoYW5kbGVzIHVuYWxpZ25lZAorCXZlb3IJCXExNSxxMTUscTE1CisJdmxkMS44CQl7cTItcTN9LFtyMV0hCisJdmxkMS4zMgkJe2QyOFtdLGQyOVtdfSxbcjgsOjMyXSEJQCBsb2FkIEtfMDBfMTkKKwl2cmV2MzIuOAlxMCxxMAkJQCB5ZXMsIGV2ZW4gb24KKwl2cmV2MzIuOAlxMSxxMQkJQCBiaWctZW5kaWFuLi4uCisJdnJldjMyLjgJcTIscTIKKwl2YWRkLmkzMglxOCxxMCxxMTQKKwl2cmV2MzIuOAlxMyxxMworCXZhZGQuaTMyCXE5LHExLHExNAorCXZzdDEuMzIJCXtxOH0sW3IxMiw6MTI4XSEKKwl2YWRkLmkzMglxMTAscTIscTE0CisJdnN0MS4zMgkJe3E5fSxbcjEyLDoxMjhdIQorCXZzdDEuMzIJCXtxMTB9LFtyMTIsOjEyOF0hCisJbGRyCQlyOSxbc3BdCQkJQCBiaWcgUkFXIHN0YWxsCisKKy5Mb29wX25lb246CisJdmV4dC44CXE4LHEwLHExLCM4CisJYmljCXIxMCxyNixyNAorCWFkZAlyNyxyNyxyOQorCWFuZAlyMTEscjUscjQKKwl2YWRkLmkzMglxMTMscTMscTE0CisJbGRyCXI5LFtzcCwjNF0KKwlhZGQJcjcscjcscjMscm9yIzI3CisJdmV4dC44CXExMixxMyxxMTUsIzQKKwllb3IJcjExLHIxMSxyMTAKKwltb3YJcjQscjQscm9yIzIKKwlhZGQJcjcscjcscjExCisJdmVvcglxOCxxOCxxMAorCWJpYwlyMTAscjUscjMKKwlhZGQJcjYscjYscjkKKwl2ZW9yCXExMixxMTIscTIKKwlhbmQJcjExLHI0LHIzCisJbGRyCXI5LFtzcCwjOF0KKwl2ZW9yCXExMixxMTIscTgKKwlhZGQJcjYscjYscjcscm9yIzI3CisJZW9yCXIxMSxyMTEscjEwCisJdnN0MS4zMgl7cTEzfSxbcjEyLDoxMjhdIQorCXN1YglyMTIscjEyLCM2NAorCW1vdglyMyxyMyxyb3IjMgorCWFkZAlyNixyNixyMTEKKwl2ZXh0LjgJcTEzLHExNSxxMTIsIzQKKwliaWMJcjEwLHI0LHI3CisJYWRkCXI1LHI1LHI5CisJdmFkZC5pMzIJcTgscTEyLHExMgorCWFuZAlyMTEscjMscjcKKwlsZHIJcjksW3NwLCMxMl0KKwl2c3JpLjMyCXE4LHExMiwjMzEKKwlhZGQJcjUscjUscjYscm9yIzI3CisJZW9yCXIxMSxyMTEscjEwCisJbW92CXI3LHI3LHJvciMyCisJdnNoci51MzIJcTEyLHExMywjMzAKKwlhZGQJcjUscjUscjExCisJYmljCXIxMCxyMyxyNgorCXZzaGwudTMyCXExMyxxMTMsIzIKKwlhZGQJcjQscjQscjkKKwlhbmQJcjExLHI3LHI2CisJdmVvcglxOCxxOCxxMTIKKwlsZHIJcjksW3NwLCMxNl0KKwlhZGQJcjQscjQscjUscm9yIzI3CisJdmVvcglxOCxxOCxxMTMKKwllb3IJcjExLHIxMSxyMTAKKwltb3YJcjYscjYscm9yIzIKKwlhZGQJcjQscjQscjExCisJdmV4dC44CXE5LHExLHEyLCM4CisJYmljCXIxMCxyNyxyNQorCWFkZAlyMyxyMyxyOQorCWFuZAlyMTEscjYscjUKKwl2YWRkLmkzMglxMTMscTgscTE0CisJbGRyCXI5LFtzcCwjMjBdCisJdmxkMS4zMgl7ZDI4W10sZDI5W119LFtyOCw6MzJdIQorCWFkZAlyMyxyMyxyNCxyb3IjMjcKKwl2ZXh0LjgJcTEyLHE4LHExNSwjNAorCWVvcglyMTEscjExLHIxMAorCW1vdglyNSxyNSxyb3IjMgorCWFkZAlyMyxyMyxyMTEKKwl2ZW9yCXE5LHE5LHExCisJYmljCXIxMCxyNixyNAorCWFkZAlyNyxyNyxyOQorCXZlb3IJcTEyLHExMixxMworCWFuZAlyMTEscjUscjQKKwlsZHIJcjksW3NwLCMyNF0KKwl2ZW9yCXExMixxMTIscTkKKwlhZGQJcjcscjcscjMscm9yIzI3CisJZW9yCXIxMSxyMTEscjEwCisJdnN0MS4zMgl7cTEzfSxbcjEyLDoxMjhdIQorCW1vdglyNCxyNCxyb3IjMgorCWFkZAlyNyxyNyxyMTEKKwl2ZXh0LjgJcTEzLHExNSxxMTIsIzQKKwliaWMJcjEwLHI1LHIzCisJYWRkCXI2LHI2LHI5CisJdmFkZC5pMzIJcTkscTEyLHExMgorCWFuZAlyMTEscjQscjMKKwlsZHIJcjksW3NwLCMyOF0KKwl2c3JpLjMyCXE5LHExMiwjMzEKKwlhZGQJcjYscjYscjcscm9yIzI3CisJZW9yCXIxMSxyMTEscjEwCisJbW92CXIzLHIzLHJvciMyCisJdnNoci51MzIJcTEyLHExMywjMzAKKwlhZGQJcjYscjYscjExCisJYmljCXIxMCxyNCxyNworCXZzaGwudTMyCXExMyxxMTMsIzIKKwlhZGQJcjUscjUscjkKKwlhbmQJcjExLHIzLHI3CisJdmVvcglxOSxxOSxxMTIKKwlsZHIJcjksW3NwLCMzMl0KKwlhZGQJcjUscjUscjYscm9yIzI3CisJdmVvcglxOSxxOSxxMTMKKwllb3IJcjExLHIxMSxyMTAKKwltb3YJcjcscjcscm9yIzIKKwlhZGQJcjUscjUscjExCisJdmV4dC44CXExMCxxMixxMywjOAorCWJpYwlyMTAscjMscjYKKwlhZGQJcjQscjQscjkKKwlhbmQJcjExLHI3LHI2CisJdmFkZC5pMzIJcTEzLHE5LHExNAorCWxkcglyOSxbc3AsIzM2XQorCWFkZAlyNCxyNCxyNSxyb3IjMjcKKwl2ZXh0LjgJcTEyLHE5LHExNSwjNAorCWVvcglyMTEscjExLHIxMAorCW1vdglyNixyNixyb3IjMgorCWFkZAlyNCxyNCxyMTEKKwl2ZW9yCXExMCxxMTAscTIKKwliaWMJcjEwLHI3LHI1CisJYWRkCXIzLHIzLHI5CisJdmVvcglxMTIscTEyLHE4CisJYW5kCXIxMSxyNixyNQorCWxkcglyOSxbc3AsIzQwXQorCXZlb3IJcTEyLHExMixxMTAKKwlhZGQJcjMscjMscjQscm9yIzI3CisJZW9yCXIxMSxyMTEscjEwCisJdnN0MS4zMgl7cTEzfSxbcjEyLDoxMjhdIQorCW1vdglyNSxyNSxyb3IjMgorCWFkZAlyMyxyMyxyMTEKKwl2ZXh0LjgJcTEzLHExNSxxMTIsIzQKKwliaWMJcjEwLHI2LHI0CisJYWRkCXI3LHI3LHI5CisJdmFkZC5pMzIJcTEwLHExMixxMTIKKwlhbmQJcjExLHI1LHI0CisJbGRyCXI5LFtzcCwjNDRdCisJdnNyaS4zMglxMTAscTEyLCMzMQorCWFkZAlyNyxyNyxyMyxyb3IjMjcKKwllb3IJcjExLHIxMSxyMTAKKwltb3YJcjQscjQscm9yIzIKKwl2c2hyLnUzMglxMTIscTEzLCMzMAorCWFkZAlyNyxyNyxyMTEKKwliaWMJcjEwLHI1LHIzCisJdnNobC51MzIJcTEzLHExMywjMgorCWFkZAlyNixyNixyOQorCWFuZAlyMTEscjQscjMKKwl2ZW9yCXExMCxxMTAscTEyCisJbGRyCXI5LFtzcCwjNDhdCisJYWRkCXI2LHI2LHI3LHJvciMyNworCXZlb3IJcTEwLHExMCxxMTMKKwllb3IJcjExLHIxMSxyMTAKKwltb3YJcjMscjMscm9yIzIKKwlhZGQJcjYscjYscjExCisJdmV4dC44CXExMSxxMyxxOCwjOAorCWJpYwlyMTAscjQscjcKKwlhZGQJcjUscjUscjkKKwlhbmQJcjExLHIzLHI3CisJdmFkZC5pMzIJcTEzLHExMCxxMTQKKwlsZHIJcjksW3NwLCM1Ml0KKwlhZGQJcjUscjUscjYscm9yIzI3CisJdmV4dC44CXExMixxMTAscTE1LCM0CisJZW9yCXIxMSxyMTEscjEwCisJbW92CXI3LHI3LHJvciMyCisJYWRkCXI1LHI1LHIxMQorCXZlb3IJcTExLHExMSxxMworCWJpYwlyMTAscjMscjYKKwlhZGQJcjQscjQscjkKKwl2ZW9yCXExMixxMTIscTkKKwlhbmQJcjExLHI3LHI2CisJbGRyCXI5LFtzcCwjNTZdCisJdmVvcglxMTIscTEyLHExMQorCWFkZAlyNCxyNCxyNSxyb3IjMjcKKwllb3IJcjExLHIxMSxyMTAKKwl2c3QxLjMyCXtxMTN9LFtyMTIsOjEyOF0hCisJbW92CXI2LHI2LHJvciMyCisJYWRkCXI0LHI0LHIxMQorCXZleHQuOAlxMTMscTE1LHExMiwjNAorCWJpYwlyMTAscjcscjUKKwlhZGQJcjMscjMscjkKKwl2YWRkLmkzMglxMTEscTEyLHExMgorCWFuZAlyMTEscjYscjUKKwlsZHIJcjksW3NwLCM2MF0KKwl2c3JpLjMyCXExMSxxMTIsIzMxCisJYWRkCXIzLHIzLHI0LHJvciMyNworCWVvcglyMTEscjExLHIxMAorCW1vdglyNSxyNSxyb3IjMgorCXZzaHIudTMyCXExMixxMTMsIzMwCisJYWRkCXIzLHIzLHIxMQorCWJpYwlyMTAscjYscjQKKwl2c2hsLnUzMglxMTMscTEzLCMyCisJYWRkCXI3LHI3LHI5CisJYW5kCXIxMSxyNSxyNAorCXZlb3IJcTExLHExMSxxMTIKKwlsZHIJcjksW3NwLCMwXQorCWFkZAlyNyxyNyxyMyxyb3IjMjcKKwl2ZW9yCXExMSxxMTEscTEzCisJZW9yCXIxMSxyMTEscjEwCisJbW92CXI0LHI0LHJvciMyCisJYWRkCXI3LHI3LHIxMQorCXZleHQuOAlxMTIscTEwLHExMSwjOAorCWJpYwlyMTAscjUscjMKKwlhZGQJcjYscjYscjkKKwlhbmQJcjExLHI0LHIzCisJdmVvcglxMCxxMCxxOAorCWxkcglyOSxbc3AsIzRdCisJYWRkCXI2LHI2LHI3LHJvciMyNworCXZlb3IJcTAscTAscTEKKwllb3IJcjExLHIxMSxyMTAKKwltb3YJcjMscjMscm9yIzIKKwl2YWRkLmkzMglxMTMscTExLHExNAorCWFkZAlyNixyNixyMTEKKwliaWMJcjEwLHI0LHI3CisJdmVvcglxMTIscTEyLHEwCisJYWRkCXI1LHI1LHI5CisJYW5kCXIxMSxyMyxyNworCXZzaHIudTMyCXEwLHExMiwjMzAKKwlsZHIJcjksW3NwLCM4XQorCWFkZAlyNSxyNSxyNixyb3IjMjcKKwl2c3QxLjMyCXtxMTN9LFtyMTIsOjEyOF0hCisJc3ViCXIxMixyMTIsIzY0CisJZW9yCXIxMSxyMTEscjEwCisJbW92CXI3LHI3LHJvciMyCisJdnNsaS4zMglxMCxxMTIsIzIKKwlhZGQJcjUscjUscjExCisJYmljCXIxMCxyMyxyNgorCWFkZAlyNCxyNCxyOQorCWFuZAlyMTEscjcscjYKKwlsZHIJcjksW3NwLCMxMl0KKwlhZGQJcjQscjQscjUscm9yIzI3CisJZW9yCXIxMSxyMTEscjEwCisJbW92CXI2LHI2LHJvciMyCisJYWRkCXI0LHI0LHIxMQorCWJpYwlyMTAscjcscjUKKwlhZGQJcjMscjMscjkKKwlhbmQJcjExLHI2LHI1CisJbGRyCXI5LFtzcCwjMTZdCisJYWRkCXIzLHIzLHI0LHJvciMyNworCWVvcglyMTEscjExLHIxMAorCW1vdglyNSxyNSxyb3IjMgorCWFkZAlyMyxyMyxyMTEKKwl2ZXh0LjgJcTEyLHExMSxxMCwjOAorCWVvcglyMTAscjQscjYKKwlhZGQJcjcscjcscjkKKwlsZHIJcjksW3NwLCMyMF0KKwl2ZW9yCXExLHExLHE5CisJZW9yCXIxMSxyMTAscjUKKwlhZGQJcjcscjcscjMscm9yIzI3CisJdmVvcglxMSxxMSxxMgorCW1vdglyNCxyNCxyb3IjMgorCWFkZAlyNyxyNyxyMTEKKwl2YWRkLmkzMglxMTMscTAscTE0CisJZW9yCXIxMCxyMyxyNQorCWFkZAlyNixyNixyOQorCXZlb3IJcTEyLHExMixxMQorCWxkcglyOSxbc3AsIzI0XQorCWVvcglyMTEscjEwLHI0CisJdnNoci51MzIJcTEscTEyLCMzMAorCWFkZAlyNixyNixyNyxyb3IjMjcKKwltb3YJcjMscjMscm9yIzIKKwl2c3QxLjMyCXtxMTN9LFtyMTIsOjEyOF0hCisJYWRkCXI2LHI2LHIxMQorCWVvcglyMTAscjcscjQKKwl2c2xpLjMyCXExLHExMiwjMgorCWFkZAlyNSxyNSxyOQorCWxkcglyOSxbc3AsIzI4XQorCWVvcglyMTEscjEwLHIzCisJYWRkCXI1LHI1LHI2LHJvciMyNworCW1vdglyNyxyNyxyb3IjMgorCWFkZAlyNSxyNSxyMTEKKwllb3IJcjEwLHI2LHIzCisJYWRkCXI0LHI0LHI5CisJbGRyCXI5LFtzcCwjMzJdCisJZW9yCXIxMSxyMTAscjcKKwlhZGQJcjQscjQscjUscm9yIzI3CisJbW92CXI2LHI2LHJvciMyCisJYWRkCXI0LHI0LHIxMQorCXZleHQuOAlxMTIscTAscTEsIzgKKwllb3IJcjEwLHI1LHI3CisJYWRkCXIzLHIzLHI5CisJbGRyCXI5LFtzcCwjMzZdCisJdmVvcglxMixxMixxMTAKKwllb3IJcjExLHIxMCxyNgorCWFkZAlyMyxyMyxyNCxyb3IjMjcKKwl2ZW9yCXEyLHEyLHEzCisJbW92CXI1LHI1LHJvciMyCisJYWRkCXIzLHIzLHIxMQorCXZhZGQuaTMyCXExMyxxMSxxMTQKKwllb3IJcjEwLHI0LHI2CisJdmxkMS4zMgl7ZDI4W10sZDI5W119LFtyOCw6MzJdIQorCWFkZAlyNyxyNyxyOQorCXZlb3IJcTEyLHExMixxMgorCWxkcglyOSxbc3AsIzQwXQorCWVvcglyMTEscjEwLHI1CisJdnNoci51MzIJcTIscTEyLCMzMAorCWFkZAlyNyxyNyxyMyxyb3IjMjcKKwltb3YJcjQscjQscm9yIzIKKwl2c3QxLjMyCXtxMTN9LFtyMTIsOjEyOF0hCisJYWRkCXI3LHI3LHIxMQorCWVvcglyMTAscjMscjUKKwl2c2xpLjMyCXEyLHExMiwjMgorCWFkZAlyNixyNixyOQorCWxkcglyOSxbc3AsIzQ0XQorCWVvcglyMTEscjEwLHI0CisJYWRkCXI2LHI2LHI3LHJvciMyNworCW1vdglyMyxyMyxyb3IjMgorCWFkZAlyNixyNixyMTEKKwllb3IJcjEwLHI3LHI0CisJYWRkCXI1LHI1LHI5CisJbGRyCXI5LFtzcCwjNDhdCisJZW9yCXIxMSxyMTAscjMKKwlhZGQJcjUscjUscjYscm9yIzI3CisJbW92CXI3LHI3LHJvciMyCisJYWRkCXI1LHI1LHIxMQorCXZleHQuOAlxMTIscTEscTIsIzgKKwllb3IJcjEwLHI2LHIzCisJYWRkCXI0LHI0LHI5CisJbGRyCXI5LFtzcCwjNTJdCisJdmVvcglxMyxxMyxxMTEKKwllb3IJcjExLHIxMCxyNworCWFkZAlyNCxyNCxyNSxyb3IjMjcKKwl2ZW9yCXEzLHEzLHE4CisJbW92CXI2LHI2LHJvciMyCisJYWRkCXI0LHI0LHIxMQorCXZhZGQuaTMyCXExMyxxMixxMTQKKwllb3IJcjEwLHI1LHI3CisJYWRkCXIzLHIzLHI5CisJdmVvcglxMTIscTEyLHEzCisJbGRyCXI5LFtzcCwjNTZdCisJZW9yCXIxMSxyMTAscjYKKwl2c2hyLnUzMglxMyxxMTIsIzMwCisJYWRkCXIzLHIzLHI0LHJvciMyNworCW1vdglyNSxyNSxyb3IjMgorCXZzdDEuMzIJe3ExM30sW3IxMiw6MTI4XSEKKwlhZGQJcjMscjMscjExCisJZW9yCXIxMCxyNCxyNgorCXZzbGkuMzIJcTMscTEyLCMyCisJYWRkCXI3LHI3LHI5CisJbGRyCXI5LFtzcCwjNjBdCisJZW9yCXIxMSxyMTAscjUKKwlhZGQJcjcscjcscjMscm9yIzI3CisJbW92CXI0LHI0LHJvciMyCisJYWRkCXI3LHI3LHIxMQorCWVvcglyMTAscjMscjUKKwlhZGQJcjYscjYscjkKKwlsZHIJcjksW3NwLCMwXQorCWVvcglyMTEscjEwLHI0CisJYWRkCXI2LHI2LHI3LHJvciMyNworCW1vdglyMyxyMyxyb3IjMgorCWFkZAlyNixyNixyMTEKKwl2ZXh0LjgJcTEyLHEyLHEzLCM4CisJZW9yCXIxMCxyNyxyNAorCWFkZAlyNSxyNSxyOQorCWxkcglyOSxbc3AsIzRdCisJdmVvcglxOCxxOCxxMAorCWVvcglyMTEscjEwLHIzCisJYWRkCXI1LHI1LHI2LHJvciMyNworCXZlb3IJcTgscTgscTkKKwltb3YJcjcscjcscm9yIzIKKwlhZGQJcjUscjUscjExCisJdmFkZC5pMzIJcTEzLHEzLHExNAorCWVvcglyMTAscjYscjMKKwlhZGQJcjQscjQscjkKKwl2ZW9yCXExMixxMTIscTgKKwlsZHIJcjksW3NwLCM4XQorCWVvcglyMTEscjEwLHI3CisJdnNoci51MzIJcTgscTEyLCMzMAorCWFkZAlyNCxyNCxyNSxyb3IjMjcKKwltb3YJcjYscjYscm9yIzIKKwl2c3QxLjMyCXtxMTN9LFtyMTIsOjEyOF0hCisJc3ViCXIxMixyMTIsIzY0CisJYWRkCXI0LHI0LHIxMQorCWVvcglyMTAscjUscjcKKwl2c2xpLjMyCXE4LHExMiwjMgorCWFkZAlyMyxyMyxyOQorCWxkcglyOSxbc3AsIzEyXQorCWVvcglyMTEscjEwLHI2CisJYWRkCXIzLHIzLHI0LHJvciMyNworCW1vdglyNSxyNSxyb3IjMgorCWFkZAlyMyxyMyxyMTEKKwllb3IJcjEwLHI0LHI2CisJYWRkCXI3LHI3LHI5CisJbGRyCXI5LFtzcCwjMTZdCisJZW9yCXIxMSxyMTAscjUKKwlhZGQJcjcscjcscjMscm9yIzI3CisJbW92CXI0LHI0LHJvciMyCisJYWRkCXI3LHI3LHIxMQorCXZleHQuOAlxMTIscTMscTgsIzgKKwllb3IJcjEwLHIzLHI1CisJYWRkCXI2LHI2LHI5CisJbGRyCXI5LFtzcCwjMjBdCisJdmVvcglxOSxxOSxxMQorCWVvcglyMTEscjEwLHI0CisJYWRkCXI2LHI2LHI3LHJvciMyNworCXZlb3IJcTkscTkscTEwCisJbW92CXIzLHIzLHJvciMyCisJYWRkCXI2LHI2LHIxMQorCXZhZGQuaTMyCXExMyxxOCxxMTQKKwllb3IJcjEwLHI3LHI0CisJYWRkCXI1LHI1LHI5CisJdmVvcglxMTIscTEyLHE5CisJbGRyCXI5LFtzcCwjMjRdCisJZW9yCXIxMSxyMTAscjMKKwl2c2hyLnUzMglxOSxxMTIsIzMwCisJYWRkCXI1LHI1LHI2LHJvciMyNworCW1vdglyNyxyNyxyb3IjMgorCXZzdDEuMzIJe3ExM30sW3IxMiw6MTI4XSEKKwlhZGQJcjUscjUscjExCisJZW9yCXIxMCxyNixyMworCXZzbGkuMzIJcTkscTEyLCMyCisJYWRkCXI0LHI0LHI5CisJbGRyCXI5LFtzcCwjMjhdCisJZW9yCXIxMSxyMTAscjcKKwlhZGQJcjQscjQscjUscm9yIzI3CisJbW92CXI2LHI2LHJvciMyCisJYWRkCXI0LHI0LHIxMQorCWVvcglyMTAscjUscjcKKwlhZGQJcjMscjMscjkKKwlsZHIJcjksW3NwLCMzMl0KKwllb3IJcjExLHIxMCxyNgorCWFkZAlyMyxyMyxyNCxyb3IjMjcKKwltb3YJcjUscjUscm9yIzIKKwlhZGQJcjMscjMscjExCisJdmV4dC44CXExMixxOCxxOSwjOAorCWFkZAlyNyxyNyxyOQorCWFuZAlyMTAscjUscjYKKwlsZHIJcjksW3NwLCMzNl0KKwl2ZW9yCXExMCxxMTAscTIKKwlhZGQJcjcscjcscjMscm9yIzI3CisJZW9yCXIxMSxyNSxyNgorCXZlb3IJcTEwLHExMCxxMTEKKwlhZGQJcjcscjcscjEwCisJYW5kCXIxMSxyMTEscjQKKwl2YWRkLmkzMglxMTMscTkscTE0CisJbW92CXI0LHI0LHJvciMyCisJYWRkCXI3LHI3LHIxMQorCXZlb3IJcTEyLHExMixxMTAKKwlhZGQJcjYscjYscjkKKwlhbmQJcjEwLHI0LHI1CisJdnNoci51MzIJcTEwLHExMiwjMzAKKwlsZHIJcjksW3NwLCM0MF0KKwlhZGQJcjYscjYscjcscm9yIzI3CisJdnN0MS4zMgl7cTEzfSxbcjEyLDoxMjhdIQorCWVvcglyMTEscjQscjUKKwlhZGQJcjYscjYscjEwCisJdnNsaS4zMglxMTAscTEyLCMyCisJYW5kCXIxMSxyMTEscjMKKwltb3YJcjMscjMscm9yIzIKKwlhZGQJcjYscjYscjExCisJYWRkCXI1LHI1LHI5CisJYW5kCXIxMCxyMyxyNAorCWxkcglyOSxbc3AsIzQ0XQorCWFkZAlyNSxyNSxyNixyb3IjMjcKKwllb3IJcjExLHIzLHI0CisJYWRkCXI1LHI1LHIxMAorCWFuZAlyMTEscjExLHI3CisJbW92CXI3LHI3LHJvciMyCisJYWRkCXI1LHI1LHIxMQorCWFkZAlyNCxyNCxyOQorCWFuZAlyMTAscjcscjMKKwlsZHIJcjksW3NwLCM0OF0KKwlhZGQJcjQscjQscjUscm9yIzI3CisJZW9yCXIxMSxyNyxyMworCWFkZAlyNCxyNCxyMTAKKwlhbmQJcjExLHIxMSxyNgorCW1vdglyNixyNixyb3IjMgorCWFkZAlyNCxyNCxyMTEKKwl2ZXh0LjgJcTEyLHE5LHExMCwjOAorCWFkZAlyMyxyMyxyOQorCWFuZAlyMTAscjYscjcKKwlsZHIJcjksW3NwLCM1Ml0KKwl2ZW9yCXExMSxxMTEscTMKKwlhZGQJcjMscjMscjQscm9yIzI3CisJZW9yCXIxMSxyNixyNworCXZlb3IJcTExLHExMSxxMAorCWFkZAlyMyxyMyxyMTAKKwlhbmQJcjExLHIxMSxyNQorCXZhZGQuaTMyCXExMyxxMTAscTE0CisJbW92CXI1LHI1LHJvciMyCisJdmxkMS4zMgl7ZDI4W10sZDI5W119LFtyOCw6MzJdIQorCWFkZAlyMyxyMyxyMTEKKwl2ZW9yCXExMixxMTIscTExCisJYWRkCXI3LHI3LHI5CisJYW5kCXIxMCxyNSxyNgorCXZzaHIudTMyCXExMSxxMTIsIzMwCisJbGRyCXI5LFtzcCwjNTZdCisJYWRkCXI3LHI3LHIzLHJvciMyNworCXZzdDEuMzIJe3ExM30sW3IxMiw6MTI4XSEKKwllb3IJcjExLHI1LHI2CisJYWRkCXI3LHI3LHIxMAorCXZzbGkuMzIJcTExLHExMiwjMgorCWFuZAlyMTEscjExLHI0CisJbW92CXI0LHI0LHJvciMyCisJYWRkCXI3LHI3LHIxMQorCWFkZAlyNixyNixyOQorCWFuZAlyMTAscjQscjUKKwlsZHIJcjksW3NwLCM2MF0KKwlhZGQJcjYscjYscjcscm9yIzI3CisJZW9yCXIxMSxyNCxyNQorCWFkZAlyNixyNixyMTAKKwlhbmQJcjExLHIxMSxyMworCW1vdglyMyxyMyxyb3IjMgorCWFkZAlyNixyNixyMTEKKwlhZGQJcjUscjUscjkKKwlhbmQJcjEwLHIzLHI0CisJbGRyCXI5LFtzcCwjMF0KKwlhZGQJcjUscjUscjYscm9yIzI3CisJZW9yCXIxMSxyMyxyNAorCWFkZAlyNSxyNSxyMTAKKwlhbmQJcjExLHIxMSxyNworCW1vdglyNyxyNyxyb3IjMgorCWFkZAlyNSxyNSxyMTEKKwl2ZXh0LjgJcTEyLHExMCxxMTEsIzgKKwlhZGQJcjQscjQscjkKKwlhbmQJcjEwLHI3LHIzCisJbGRyCXI5LFtzcCwjNF0KKwl2ZW9yCXEwLHEwLHE4CisJYWRkCXI0LHI0LHI1LHJvciMyNworCWVvcglyMTEscjcscjMKKwl2ZW9yCXEwLHEwLHExCisJYWRkCXI0LHI0LHIxMAorCWFuZAlyMTEscjExLHI2CisJdmFkZC5pMzIJcTEzLHExMSxxMTQKKwltb3YJcjYscjYscm9yIzIKKwlhZGQJcjQscjQscjExCisJdmVvcglxMTIscTEyLHEwCisJYWRkCXIzLHIzLHI5CisJYW5kCXIxMCxyNixyNworCXZzaHIudTMyCXEwLHExMiwjMzAKKwlsZHIJcjksW3NwLCM4XQorCWFkZAlyMyxyMyxyNCxyb3IjMjcKKwl2c3QxLjMyCXtxMTN9LFtyMTIsOjEyOF0hCisJc3ViCXIxMixyMTIsIzY0CisJZW9yCXIxMSxyNixyNworCWFkZAlyMyxyMyxyMTAKKwl2c2xpLjMyCXEwLHExMiwjMgorCWFuZAlyMTEscjExLHI1CisJbW92CXI1LHI1LHJvciMyCisJYWRkCXIzLHIzLHIxMQorCWFkZAlyNyxyNyxyOQorCWFuZAlyMTAscjUscjYKKwlsZHIJcjksW3NwLCMxMl0KKwlhZGQJcjcscjcscjMscm9yIzI3CisJZW9yCXIxMSxyNSxyNgorCWFkZAlyNyxyNyxyMTAKKwlhbmQJcjExLHIxMSxyNAorCW1vdglyNCxyNCxyb3IjMgorCWFkZAlyNyxyNyxyMTEKKwlhZGQJcjYscjYscjkKKwlhbmQJcjEwLHI0LHI1CisJbGRyCXI5LFtzcCwjMTZdCisJYWRkCXI2LHI2LHI3LHJvciMyNworCWVvcglyMTEscjQscjUKKwlhZGQJcjYscjYscjEwCisJYW5kCXIxMSxyMTEscjMKKwltb3YJcjMscjMscm9yIzIKKwlhZGQJcjYscjYscjExCisJdmV4dC44CXExMixxMTEscTAsIzgKKwlhZGQJcjUscjUscjkKKwlhbmQJcjEwLHIzLHI0CisJbGRyCXI5LFtzcCwjMjBdCisJdmVvcglxMSxxMSxxOQorCWFkZAlyNSxyNSxyNixyb3IjMjcKKwllb3IJcjExLHIzLHI0CisJdmVvcglxMSxxMSxxMgorCWFkZAlyNSxyNSxyMTAKKwlhbmQJcjExLHIxMSxyNworCXZhZGQuaTMyCXExMyxxMCxxMTQKKwltb3YJcjcscjcscm9yIzIKKwlhZGQJcjUscjUscjExCisJdmVvcglxMTIscTEyLHExCisJYWRkCXI0LHI0LHI5CisJYW5kCXIxMCxyNyxyMworCXZzaHIudTMyCXExLHExMiwjMzAKKwlsZHIJcjksW3NwLCMyNF0KKwlhZGQJcjQscjQscjUscm9yIzI3CisJdnN0MS4zMgl7cTEzfSxbcjEyLDoxMjhdIQorCWVvcglyMTEscjcscjMKKwlhZGQJcjQscjQscjEwCisJdnNsaS4zMglxMSxxMTIsIzIKKwlhbmQJcjExLHIxMSxyNgorCW1vdglyNixyNixyb3IjMgorCWFkZAlyNCxyNCxyMTEKKwlhZGQJcjMscjMscjkKKwlhbmQJcjEwLHI2LHI3CisJbGRyCXI5LFtzcCwjMjhdCisJYWRkCXIzLHIzLHI0LHJvciMyNworCWVvcglyMTEscjYscjcKKwlhZGQJcjMscjMscjEwCisJYW5kCXIxMSxyMTEscjUKKwltb3YJcjUscjUscm9yIzIKKwlhZGQJcjMscjMscjExCisJYWRkCXI3LHI3LHI5CisJYW5kCXIxMCxyNSxyNgorCWxkcglyOSxbc3AsIzMyXQorCWFkZAlyNyxyNyxyMyxyb3IjMjcKKwllb3IJcjExLHI1LHI2CisJYWRkCXI3LHI3LHIxMAorCWFuZAlyMTEscjExLHI0CisJbW92CXI0LHI0LHJvciMyCisJYWRkCXI3LHI3LHIxMQorCXZleHQuOAlxMTIscTAscTEsIzgKKwlhZGQJcjYscjYscjkKKwlhbmQJcjEwLHI0LHI1CisJbGRyCXI5LFtzcCwjMzZdCisJdmVvcglxMixxMixxMTAKKwlhZGQJcjYscjYscjcscm9yIzI3CisJZW9yCXIxMSxyNCxyNQorCXZlb3IJcTIscTIscTMKKwlhZGQJcjYscjYscjEwCisJYW5kCXIxMSxyMTEscjMKKwl2YWRkLmkzMglxMTMscTEscTE0CisJbW92CXIzLHIzLHJvciMyCisJYWRkCXI2LHI2LHIxMQorCXZlb3IJcTEyLHExMixxMgorCWFkZAlyNSxyNSxyOQorCWFuZAlyMTAscjMscjQKKwl2c2hyLnUzMglxMixxMTIsIzMwCisJbGRyCXI5LFtzcCwjNDBdCisJYWRkCXI1LHI1LHI2LHJvciMyNworCXZzdDEuMzIJe3ExM30sW3IxMiw6MTI4XSEKKwllb3IJcjExLHIzLHI0CisJYWRkCXI1LHI1LHIxMAorCXZzbGkuMzIJcTIscTEyLCMyCisJYW5kCXIxMSxyMTEscjcKKwltb3YJcjcscjcscm9yIzIKKwlhZGQJcjUscjUscjExCisJYWRkCXI0LHI0LHI5CisJYW5kCXIxMCxyNyxyMworCWxkcglyOSxbc3AsIzQ0XQorCWFkZAlyNCxyNCxyNSxyb3IjMjcKKwllb3IJcjExLHI3LHIzCisJYWRkCXI0LHI0LHIxMAorCWFuZAlyMTEscjExLHI2CisJbW92CXI2LHI2LHJvciMyCisJYWRkCXI0LHI0LHIxMQorCWFkZAlyMyxyMyxyOQorCWFuZAlyMTAscjYscjcKKwlsZHIJcjksW3NwLCM0OF0KKwlhZGQJcjMscjMscjQscm9yIzI3CisJZW9yCXIxMSxyNixyNworCWFkZAlyMyxyMyxyMTAKKwlhbmQJcjExLHIxMSxyNQorCW1vdglyNSxyNSxyb3IjMgorCWFkZAlyMyxyMyxyMTEKKwl2ZXh0LjgJcTEyLHExLHEyLCM4CisJZW9yCXIxMCxyNCxyNgorCWFkZAlyNyxyNyxyOQorCWxkcglyOSxbc3AsIzUyXQorCXZlb3IJcTMscTMscTExCisJZW9yCXIxMSxyMTAscjUKKwlhZGQJcjcscjcscjMscm9yIzI3CisJdmVvcglxMyxxMyxxOAorCW1vdglyNCxyNCxyb3IjMgorCWFkZAlyNyxyNyxyMTEKKwl2YWRkLmkzMglxMTMscTIscTE0CisJZW9yCXIxMCxyMyxyNQorCWFkZAlyNixyNixyOQorCXZlb3IJcTEyLHExMixxMworCWxkcglyOSxbc3AsIzU2XQorCWVvcglyMTEscjEwLHI0CisJdnNoci51MzIJcTMscTEyLCMzMAorCWFkZAlyNixyNixyNyxyb3IjMjcKKwltb3YJcjMscjMscm9yIzIKKwl2c3QxLjMyCXtxMTN9LFtyMTIsOjEyOF0hCisJYWRkCXI2LHI2LHIxMQorCWVvcglyMTAscjcscjQKKwl2c2xpLjMyCXEzLHExMiwjMgorCWFkZAlyNSxyNSxyOQorCWxkcglyOSxbc3AsIzYwXQorCWVvcglyMTEscjEwLHIzCisJYWRkCXI1LHI1LHI2LHJvciMyNworCW1vdglyNyxyNyxyb3IjMgorCWFkZAlyNSxyNSxyMTEKKwllb3IJcjEwLHI2LHIzCisJYWRkCXI0LHI0LHI5CisJbGRyCXI5LFtzcCwjMF0KKwllb3IJcjExLHIxMCxyNworCWFkZAlyNCxyNCxyNSxyb3IjMjcKKwltb3YJcjYscjYscm9yIzIKKwlhZGQJcjQscjQscjExCisJdmFkZC5pMzIJcTEzLHEzLHExNAorCWVvcglyMTAscjUscjcKKwlhZGQJcjMscjMscjkKKwl2c3QxLjMyCXtxMTN9LFtyMTIsOjEyOF0hCisJc3ViCXIxMixyMTIsIzY0CisJdGVxCXIxLHIyCisJc3ViCXI4LHI4LCMxNgorCXN1YmVxCXIxLHIxLCM2NAorCXZsZDEuOAl7cTAtcTF9LFtyMV0hCisJbGRyCXI5LFtzcCwjNF0KKwllb3IJcjExLHIxMCxyNgorCXZsZDEuOAl7cTItcTN9LFtyMV0hCisJYWRkCXIzLHIzLHI0LHJvciMyNworCW1vdglyNSxyNSxyb3IjMgorCXZsZDEuMzIJe2QyOFtdLGQyOVtdfSxbcjgsOjMyXSEKKwlhZGQJcjMscjMscjExCisJZW9yCXIxMCxyNCxyNgorCXZyZXYzMi44CXEwLHEwCisJYWRkCXI3LHI3LHI5CisJbGRyCXI5LFtzcCwjOF0KKwllb3IJcjExLHIxMCxyNQorCWFkZAlyNyxyNyxyMyxyb3IjMjcKKwltb3YJcjQscjQscm9yIzIKKwlhZGQJcjcscjcscjExCisJZW9yCXIxMCxyMyxyNQorCWFkZAlyNixyNixyOQorCWxkcglyOSxbc3AsIzEyXQorCWVvcglyMTEscjEwLHI0CisJYWRkCXI2LHI2LHI3LHJvciMyNworCW1vdglyMyxyMyxyb3IjMgorCWFkZAlyNixyNixyMTEKKwllb3IJcjEwLHI3LHI0CisJYWRkCXI1LHI1LHI5CisJbGRyCXI5LFtzcCwjMTZdCisJZW9yCXIxMSxyMTAscjMKKwlhZGQJcjUscjUscjYscm9yIzI3CisJbW92CXI3LHI3LHJvciMyCisJYWRkCXI1LHI1LHIxMQorCXZyZXYzMi44CXExLHExCisJZW9yCXIxMCxyNixyMworCWFkZAlyNCxyNCxyOQorCXZhZGQuaTMyCXE4LHEwLHExNAorCWxkcglyOSxbc3AsIzIwXQorCWVvcglyMTEscjEwLHI3CisJdnN0MS4zMgl7cTh9LFtyMTIsOjEyOF0hCisJYWRkCXI0LHI0LHI1LHJvciMyNworCW1vdglyNixyNixyb3IjMgorCWFkZAlyNCxyNCxyMTEKKwllb3IJcjEwLHI1LHI3CisJYWRkCXIzLHIzLHI5CisJbGRyCXI5LFtzcCwjMjRdCisJZW9yCXIxMSxyMTAscjYKKwlhZGQJcjMscjMscjQscm9yIzI3CisJbW92CXI1LHI1LHJvciMyCisJYWRkCXIzLHIzLHIxMQorCWVvcglyMTAscjQscjYKKwlhZGQJcjcscjcscjkKKwlsZHIJcjksW3NwLCMyOF0KKwllb3IJcjExLHIxMCxyNQorCWFkZAlyNyxyNyxyMyxyb3IjMjcKKwltb3YJcjQscjQscm9yIzIKKwlhZGQJcjcscjcscjExCisJZW9yCXIxMCxyMyxyNQorCWFkZAlyNixyNixyOQorCWxkcglyOSxbc3AsIzMyXQorCWVvcglyMTEscjEwLHI0CisJYWRkCXI2LHI2LHI3LHJvciMyNworCW1vdglyMyxyMyxyb3IjMgorCWFkZAlyNixyNixyMTEKKwl2cmV2MzIuOAlxMixxMgorCWVvcglyMTAscjcscjQKKwlhZGQJcjUscjUscjkKKwl2YWRkLmkzMglxOSxxMSxxMTQKKwlsZHIJcjksW3NwLCMzNl0KKwllb3IJcjExLHIxMCxyMworCXZzdDEuMzIJe3E5fSxbcjEyLDoxMjhdIQorCWFkZAlyNSxyNSxyNixyb3IjMjcKKwltb3YJcjcscjcscm9yIzIKKwlhZGQJcjUscjUscjExCisJZW9yCXIxMCxyNixyMworCWFkZAlyNCxyNCxyOQorCWxkcglyOSxbc3AsIzQwXQorCWVvcglyMTEscjEwLHI3CisJYWRkCXI0LHI0LHI1LHJvciMyNworCW1vdglyNixyNixyb3IjMgorCWFkZAlyNCxyNCxyMTEKKwllb3IJcjEwLHI1LHI3CisJYWRkCXIzLHIzLHI5CisJbGRyCXI5LFtzcCwjNDRdCisJZW9yCXIxMSxyMTAscjYKKwlhZGQJcjMscjMscjQscm9yIzI3CisJbW92CXI1LHI1LHJvciMyCisJYWRkCXIzLHIzLHIxMQorCWVvcglyMTAscjQscjYKKwlhZGQJcjcscjcscjkKKwlsZHIJcjksW3NwLCM0OF0KKwllb3IJcjExLHIxMCxyNQorCWFkZAlyNyxyNyxyMyxyb3IjMjcKKwltb3YJcjQscjQscm9yIzIKKwlhZGQJcjcscjcscjExCisJdnJldjMyLjgJcTMscTMKKwllb3IJcjEwLHIzLHI1CisJYWRkCXI2LHI2LHI5CisJdmFkZC5pMzIJcTEwLHEyLHExNAorCWxkcglyOSxbc3AsIzUyXQorCWVvcglyMTEscjEwLHI0CisJdnN0MS4zMgl7cTEwfSxbcjEyLDoxMjhdIQorCWFkZAlyNixyNixyNyxyb3IjMjcKKwltb3YJcjMscjMscm9yIzIKKwlhZGQJcjYscjYscjExCisJZW9yCXIxMCxyNyxyNAorCWFkZAlyNSxyNSxyOQorCWxkcglyOSxbc3AsIzU2XQorCWVvcglyMTEscjEwLHIzCisJYWRkCXI1LHI1LHI2LHJvciMyNworCW1vdglyNyxyNyxyb3IjMgorCWFkZAlyNSxyNSxyMTEKKwllb3IJcjEwLHI2LHIzCisJYWRkCXI0LHI0LHI5CisJbGRyCXI5LFtzcCwjNjBdCisJZW9yCXIxMSxyMTAscjcKKwlhZGQJcjQscjQscjUscm9yIzI3CisJbW92CXI2LHI2LHJvciMyCisJYWRkCXI0LHI0LHIxMQorCWVvcglyMTAscjUscjcKKwlhZGQJcjMscjMscjkKKwllb3IJcjExLHIxMCxyNgorCWFkZAlyMyxyMyxyNCxyb3IjMjcKKwltb3YJcjUscjUscm9yIzIKKwlhZGQJcjMscjMscjExCisJbGRtaWEJcjAse3I5LHIxMCxyMTEscjEyfQlAIGFjY3VtdWxhdGUgY29udGV4dAorCWFkZAlyMyxyMyxyOQorCWxkcglyOSxbcjAsIzE2XQorCWFkZAlyNCxyNCxyMTAKKwlhZGQJcjUscjUscjExCisJYWRkCXI2LHI2LHIxMgorCW1vdmVxCXNwLHIxNAorCWFkZAlyNyxyNyxyOQorCWxkcm5lCXI5LFtzcF0KKwlzdG1pYQlyMCx7cjMscjQscjUscjYscjd9CisJYWRkbmUJcjEyLHNwLCMzKjE2CisJYm5lCS5Mb29wX25lb24KKworCUAgdmxkbWlhCXNwISx7ZDgtZDE1fQorCWxkbWlhCXNwISx7cjQtcjEyLHBjfQorLnNpemUJc2hhMV9ibG9ja19kYXRhX29yZGVyX25lb24sLi1zaGExX2Jsb2NrX2RhdGFfb3JkZXJfbmVvbgorI2VuZGlmCisjaWYgX19BUk1fQVJDSF9fPj03CisudHlwZQlzaGExX2Jsb2NrX2RhdGFfb3JkZXJfYXJtdjgsJWZ1bmN0aW9uCisuYWxpZ24JNQorc2hhMV9ibG9ja19kYXRhX29yZGVyX2FybXY4OgorLkxBUk12ODoKKwl2c3RtZGIJc3AhLHtkOC1kMTV9CQlAIEFCSSBzcGVjaWZpY2F0aW9uIHNheXMgc28KKworCXZlb3IJcTEscTEscTEKKwlhZHIJcjMsLkxLXzAwXzE5CisJdmxkMS4zMgl7cTB9LFtyMF0hCisJdmxkMS4zMgl7ZDJbMF19LFtyMF0KKwlzdWIJcjAscjAsIzE2CisJdmxkMS4zMgl7ZDE2W10sZDE3W119LFtyMyw6MzJdIQorCXZsZDEuMzIJe2QxOFtdLGQxOVtdfSxbcjMsOjMyXSEKKwl2bGQxLjMyCXtkMjBbXSxkMjFbXX0sW3IzLDozMl0hCisJdmxkMS4zMgl7ZDIyW10sZDIzW119LFtyMyw6MzJdCisKKy5Mb29wX3Y4OgorCXZsZDEuOAkJe3E0LXE1fSxbcjFdIQorCXZsZDEuOAkJe3E2LXE3fSxbcjFdIQorCXZyZXYzMi44CXE0LHE0CisJdnJldjMyLjgJcTUscTUKKworCXZhZGQuaTMyCXExMixxOCxxNAorCXZyZXYzMi44CXE2LHE2CisJdm1vdgkJcTE0LHEwCUAgb2ZmbG9hZAorCXN1YnMJCXIyLHIyLCMxCisKKwl2YWRkLmkzMglxMTMscTgscTUKKwl2cmV2MzIuOAlxNyxxNworCS5ieXRlCTB4YzAsMHg2MiwweGI5LDB4ZjMJQCBzaGExaCBxMyxxMAkJQCAwCisJLmJ5dGUJMHg2OCwweDBjLDB4MDIsMHhmMglAIHNoYTFjIHEwLHExLHExMgorCXZhZGQuaTMyCXExMixxOCxxNgorCS5ieXRlCTB4NGMsMHg4YywweDNhLDB4ZjIJQCBzaGExc3UwIHE0LHE1LHE2CisJLmJ5dGUJMHhjMCwweDQyLDB4YjksMHhmMwlAIHNoYTFoIHEyLHEwCQlAIDEKKwkuYnl0ZQkweDZhLDB4MGMsMHgwNiwweGYyCUAgc2hhMWMgcTAscTMscTEzCisJdmFkZC5pMzIJcTEzLHE4LHE3CisJLmJ5dGUJMHg4ZSwweDgzLDB4YmEsMHhmMwlAIHNoYTFzdTEgcTQscTcKKwkuYnl0ZQkweDRlLDB4YWMsMHgzYywweGYyCUAgc2hhMXN1MCBxNSxxNixxNworCS5ieXRlCTB4YzAsMHg2MiwweGI5LDB4ZjMJQCBzaGExaCBxMyxxMAkJQCAyCisJLmJ5dGUJMHg2OCwweDBjLDB4MDQsMHhmMglAIHNoYTFjIHEwLHEyLHExMgorCXZhZGQuaTMyCXExMixxOCxxNAorCS5ieXRlCTB4ODgsMHhhMywweGJhLDB4ZjMJQCBzaGExc3UxIHE1LHE0CisJLmJ5dGUJMHg0OCwweGNjLDB4M2UsMHhmMglAIHNoYTFzdTAgcTYscTcscTQKKwkuYnl0ZQkweGMwLDB4NDIsMHhiOSwweGYzCUAgc2hhMWggcTIscTAJCUAgMworCS5ieXRlCTB4NmEsMHgwYywweDA2LDB4ZjIJQCBzaGExYyBxMCxxMyxxMTMKKwl2YWRkLmkzMglxMTMscTkscTUKKwkuYnl0ZQkweDhhLDB4YzMsMHhiYSwweGYzCUAgc2hhMXN1MSBxNixxNQorCS5ieXRlCTB4NGEsMHhlYywweDM4LDB4ZjIJQCBzaGExc3UwIHE3LHE0LHE1CisJLmJ5dGUJMHhjMCwweDYyLDB4YjksMHhmMwlAIHNoYTFoIHEzLHEwCQlAIDQKKwkuYnl0ZQkweDY4LDB4MGMsMHgwNCwweGYyCUAgc2hhMWMgcTAscTIscTEyCisJdmFkZC5pMzIJcTEyLHE5LHE2CisJLmJ5dGUJMHg4YywweGUzLDB4YmEsMHhmMwlAIHNoYTFzdTEgcTcscTYKKwkuYnl0ZQkweDRjLDB4OGMsMHgzYSwweGYyCUAgc2hhMXN1MCBxNCxxNSxxNgorCS5ieXRlCTB4YzAsMHg0MiwweGI5LDB4ZjMJQCBzaGExaCBxMixxMAkJQCA1CisJLmJ5dGUJMHg2YSwweDBjLDB4MTYsMHhmMglAIHNoYTFwIHEwLHEzLHExMworCXZhZGQuaTMyCXExMyxxOSxxNworCS5ieXRlCTB4OGUsMHg4MywweGJhLDB4ZjMJQCBzaGExc3UxIHE0LHE3CisJLmJ5dGUJMHg0ZSwweGFjLDB4M2MsMHhmMglAIHNoYTFzdTAgcTUscTYscTcKKwkuYnl0ZQkweGMwLDB4NjIsMHhiOSwweGYzCUAgc2hhMWggcTMscTAJCUAgNgorCS5ieXRlCTB4NjgsMHgwYywweDE0LDB4ZjIJQCBzaGExcCBxMCxxMixxMTIKKwl2YWRkLmkzMglxMTIscTkscTQKKwkuYnl0ZQkweDg4LDB4YTMsMHhiYSwweGYzCUAgc2hhMXN1MSBxNSxxNAorCS5ieXRlCTB4NDgsMHhjYywweDNlLDB4ZjIJQCBzaGExc3UwIHE2LHE3LHE0CisJLmJ5dGUJMHhjMCwweDQyLDB4YjksMHhmMwlAIHNoYTFoIHEyLHEwCQlAIDcKKwkuYnl0ZQkweDZhLDB4MGMsMHgxNiwweGYyCUAgc2hhMXAgcTAscTMscTEzCisJdmFkZC5pMzIJcTEzLHE5LHE1CisJLmJ5dGUJMHg4YSwweGMzLDB4YmEsMHhmMwlAIHNoYTFzdTEgcTYscTUKKwkuYnl0ZQkweDRhLDB4ZWMsMHgzOCwweGYyCUAgc2hhMXN1MCBxNyxxNCxxNQorCS5ieXRlCTB4YzAsMHg2MiwweGI5LDB4ZjMJQCBzaGExaCBxMyxxMAkJQCA4CisJLmJ5dGUJMHg2OCwweDBjLDB4MTQsMHhmMglAIHNoYTFwIHEwLHEyLHExMgorCXZhZGQuaTMyCXExMixxMTAscTYKKwkuYnl0ZQkweDhjLDB4ZTMsMHhiYSwweGYzCUAgc2hhMXN1MSBxNyxxNgorCS5ieXRlCTB4NGMsMHg4YywweDNhLDB4ZjIJQCBzaGExc3UwIHE0LHE1LHE2CisJLmJ5dGUJMHhjMCwweDQyLDB4YjksMHhmMwlAIHNoYTFoIHEyLHEwCQlAIDkKKwkuYnl0ZQkweDZhLDB4MGMsMHgxNiwweGYyCUAgc2hhMXAgcTAscTMscTEzCisJdmFkZC5pMzIJcTEzLHExMCxxNworCS5ieXRlCTB4OGUsMHg4MywweGJhLDB4ZjMJQCBzaGExc3UxIHE0LHE3CisJLmJ5dGUJMHg0ZSwweGFjLDB4M2MsMHhmMglAIHNoYTFzdTAgcTUscTYscTcKKwkuYnl0ZQkweGMwLDB4NjIsMHhiOSwweGYzCUAgc2hhMWggcTMscTAJCUAgMTAKKwkuYnl0ZQkweDY4LDB4MGMsMHgyNCwweGYyCUAgc2hhMW0gcTAscTIscTEyCisJdmFkZC5pMzIJcTEyLHExMCxxNAorCS5ieXRlCTB4ODgsMHhhMywweGJhLDB4ZjMJQCBzaGExc3UxIHE1LHE0CisJLmJ5dGUJMHg0OCwweGNjLDB4M2UsMHhmMglAIHNoYTFzdTAgcTYscTcscTQKKwkuYnl0ZQkweGMwLDB4NDIsMHhiOSwweGYzCUAgc2hhMWggcTIscTAJCUAgMTEKKwkuYnl0ZQkweDZhLDB4MGMsMHgyNiwweGYyCUAgc2hhMW0gcTAscTMscTEzCisJdmFkZC5pMzIJcTEzLHExMCxxNQorCS5ieXRlCTB4OGEsMHhjMywweGJhLDB4ZjMJQCBzaGExc3UxIHE2LHE1CisJLmJ5dGUJMHg0YSwweGVjLDB4MzgsMHhmMglAIHNoYTFzdTAgcTcscTQscTUKKwkuYnl0ZQkweGMwLDB4NjIsMHhiOSwweGYzCUAgc2hhMWggcTMscTAJCUAgMTIKKwkuYnl0ZQkweDY4LDB4MGMsMHgyNCwweGYyCUAgc2hhMW0gcTAscTIscTEyCisJdmFkZC5pMzIJcTEyLHExMCxxNgorCS5ieXRlCTB4OGMsMHhlMywweGJhLDB4ZjMJQCBzaGExc3UxIHE3LHE2CisJLmJ5dGUJMHg0YywweDhjLDB4M2EsMHhmMglAIHNoYTFzdTAgcTQscTUscTYKKwkuYnl0ZQkweGMwLDB4NDIsMHhiOSwweGYzCUAgc2hhMWggcTIscTAJCUAgMTMKKwkuYnl0ZQkweDZhLDB4MGMsMHgyNiwweGYyCUAgc2hhMW0gcTAscTMscTEzCisJdmFkZC5pMzIJcTEzLHExMSxxNworCS5ieXRlCTB4OGUsMHg4MywweGJhLDB4ZjMJQCBzaGExc3UxIHE0LHE3CisJLmJ5dGUJMHg0ZSwweGFjLDB4M2MsMHhmMglAIHNoYTFzdTAgcTUscTYscTcKKwkuYnl0ZQkweGMwLDB4NjIsMHhiOSwweGYzCUAgc2hhMWggcTMscTAJCUAgMTQKKwkuYnl0ZQkweDY4LDB4MGMsMHgyNCwweGYyCUAgc2hhMW0gcTAscTIscTEyCisJdmFkZC5pMzIJcTEyLHExMSxxNAorCS5ieXRlCTB4ODgsMHhhMywweGJhLDB4ZjMJQCBzaGExc3UxIHE1LHE0CisJLmJ5dGUJMHg0OCwweGNjLDB4M2UsMHhmMglAIHNoYTFzdTAgcTYscTcscTQKKwkuYnl0ZQkweGMwLDB4NDIsMHhiOSwweGYzCUAgc2hhMWggcTIscTAJCUAgMTUKKwkuYnl0ZQkweDZhLDB4MGMsMHgxNiwweGYyCUAgc2hhMXAgcTAscTMscTEzCisJdmFkZC5pMzIJcTEzLHExMSxxNQorCS5ieXRlCTB4OGEsMHhjMywweGJhLDB4ZjMJQCBzaGExc3UxIHE2LHE1CisJLmJ5dGUJMHg0YSwweGVjLDB4MzgsMHhmMglAIHNoYTFzdTAgcTcscTQscTUKKwkuYnl0ZQkweGMwLDB4NjIsMHhiOSwweGYzCUAgc2hhMWggcTMscTAJCUAgMTYKKwkuYnl0ZQkweDY4LDB4MGMsMHgxNCwweGYyCUAgc2hhMXAgcTAscTIscTEyCisJdmFkZC5pMzIJcTEyLHExMSxxNgorCS5ieXRlCTB4OGMsMHhlMywweGJhLDB4ZjMJQCBzaGExc3UxIHE3LHE2CisJLmJ5dGUJMHhjMCwweDQyLDB4YjksMHhmMwlAIHNoYTFoIHEyLHEwCQlAIDE3CisJLmJ5dGUJMHg2YSwweDBjLDB4MTYsMHhmMglAIHNoYTFwIHEwLHEzLHExMworCXZhZGQuaTMyCXExMyxxMTEscTcKKworCS5ieXRlCTB4YzAsMHg2MiwweGI5LDB4ZjMJQCBzaGExaCBxMyxxMAkJQCAxOAorCS5ieXRlCTB4NjgsMHgwYywweDE0LDB4ZjIJQCBzaGExcCBxMCxxMixxMTIKKworCS5ieXRlCTB4YzAsMHg0MiwweGI5LDB4ZjMJQCBzaGExaCBxMixxMAkJQCAxOQorCS5ieXRlCTB4NmEsMHgwYywweDE2LDB4ZjIJQCBzaGExcCBxMCxxMyxxMTMKKworCXZhZGQuaTMyCXExLHExLHEyCisJdmFkZC5pMzIJcTAscTAscTE0CisJYm5lCQkuTG9vcF92OAorCisJdnN0MS4zMgkJe3EwfSxbcjBdIQorCXZzdDEuMzIJCXtkMlswXX0sW3IwXQorCisJdmxkbWlhCXNwISx7ZDgtZDE1fQorCWJ4CWxyCQkJCQlAIGJ4IGxyCisuc2l6ZQlzaGExX2Jsb2NrX2RhdGFfb3JkZXJfYXJtdjgsLi1zaGExX2Jsb2NrX2RhdGFfb3JkZXJfYXJtdjgKKyNlbmRpZgorLmNvbW0JT1BFTlNTTF9hcm1jYXBfUCw0LDQKZGlmZiAtLWdpdCBhL2NyeXB0by9zaGEvYXNtL3NoYTEtYXJtdjQtbGFyZ2UucGwgYi9jcnlwdG8vc2hhL2FzbS9zaGExLWFybXY0LWxhcmdlLnBsCmluZGV4IDMzZGEzZTAuLjUwYmQwN2IgMTAwNjQ0Ci0tLSBhL2NyeXB0by9zaGEvYXNtL3NoYTEtYXJtdjQtbGFyZ2UucGwKKysrIGIvY3J5cHRvL3NoYS9hc20vc2hhMS1hcm12NC1sYXJnZS5wbApAQCAtMSw3ICsxLDcgQEAKICMhL3Vzci9iaW4vZW52IHBlcmwKIAogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotIyBXcml0dGVuIGJ5IEFuZHkgUG9seWFrb3YgPGFwcHJvQGZ5LmNoYWxtZXJzLnNlPiBmb3IgdGhlIE9wZW5TU0wKKyMgV3JpdHRlbiBieSBBbmR5IFBvbHlha292IDxhcHByb0BvcGVuc3NsLm9yZz4gZm9yIHRoZSBPcGVuU1NMCiAjIHByb2plY3QuIFRoZSBtb2R1bGUgaXMsIGhvd2V2ZXIsIGR1YWwgbGljZW5zZWQgdW5kZXIgT3BlblNTTCBhbmQKICMgQ1JZUFRPR0FNUyBsaWNlbnNlcyBkZXBlbmRpbmcgb24gd2hlcmUgeW91IG9idGFpbiBpdC4gRm9yIGZ1cnRoZXIKICMgZGV0YWlscyBzZWUgaHR0cDovL3d3dy5vcGVuc3NsLm9yZy9+YXBwcm8vY3J5cHRvZ2Ftcy8uCkBAIC01Miw2ICs1MiwyMCBAQAogIyBQcm9maWxlci1hc3Npc3RlZCBhbmQgcGxhdGZvcm0tc3BlY2lmaWMgb3B0aW1pemF0aW9uIHJlc3VsdGVkIGluIDEwJQogIyBpbXByb3ZlbWVudCBvbiBDb3J0ZXggQTggY29yZSBhbmQgMTIuMiBjeWNsZXMgcGVyIGJ5dGUuCiAKKyMgU2VwdGVtYmVyIDIwMTMuCisjCisjIEFkZCBORU9OIGltcGxlbWVudGF0aW9uIChzZWUgc2hhMS01ODYucGwgZm9yIGJhY2tncm91bmQgaW5mbykuIE9uCisjIENvcnRleCBBOCBpdCB3YXMgbWVhc3VyZWQgdG8gcHJvY2VzcyBvbmUgYnl0ZSBpbiA2LjcgY3ljbGVzIG9yID44MCUKKyMgZmFzdGVyIHRoYW4gaW50ZWdlci1vbmx5IGNvZGUuIEJlY2F1c2UgW2Z1bGx5IHVucm9sbGVkXSBORU9OIGNvZGUKKyMgaXMgfjIuNXggbGFyZ2VyIGFuZCB0aGVyZSBhcmUgc29tZSByZWR1bmRhbnQgaW5zdHJ1Y3Rpb25zIGV4ZWN1dGVkCisjIHdoZW4gcHJvY2Vzc2luZyBsYXN0IGJsb2NrLCBpbXByb3ZlbWVudCBpcyBub3QgYXMgYmlnIGZvciBzbWFsbGVzdAorIyBibG9ja3MsIG9ubHkgfjMwJS4gU25hcGRyYWdvbiBTNCBpcyBhIHRhZCBmYXN0ZXIsIDYuNCBjeWNsZXMgcGVyCisjIGJ5dGUsIHdoaWNoIGlzIGFsc28gPjgwJSBmYXN0ZXIgdGhhbiBpbnRlZ2VyLW9ubHkgY29kZS4KKworIyBNYXkgMjAxNC4KKyMKKyMgQWRkIEFSTXY4IGNvZGUgcGF0aCBwZXJmb3JtaW5nIGF0IDIuMzUgY3BiIG9uIEFwcGxlIEE3LgorCiB3aGlsZSAoKCRvdXRwdXQ9c2hpZnQpICYmICgkb3V0cHV0IX4vXlx3W1x3XC1dKlwuXHcrJC8pKSB7fQogb3BlbiBTVERPVVQsIj4kb3V0cHV0IjsKIApAQCAtMTUzLDEyICsxNjcsMjIgQEAKICNpbmNsdWRlICJhcm1fYXJjaC5oIgogCiAudGV4dAorLmNvZGUJMzIKIAogLmdsb2JhbAlzaGExX2Jsb2NrX2RhdGFfb3JkZXIKIC50eXBlCXNoYTFfYmxvY2tfZGF0YV9vcmRlciwlZnVuY3Rpb24KIAotLmFsaWduCTIKKy5hbGlnbgk1CiBzaGExX2Jsb2NrX2RhdGFfb3JkZXI6CisjaWYgX19BUk1fQVJDSF9fPj03CisJc3ViCXIzLHBjLCM4CQlAIHNoYTFfYmxvY2tfZGF0YV9vcmRlcgorCWxkcglyMTIsLkxPUEVOU1NMX2FybWNhcAorCWxkcglyMTIsW3IzLHIxMl0JCUAgT1BFTlNTTF9hcm1jYXBfUAorCXRzdAlyMTIsI0FSTVY4X1NIQTEKKwlibmUJLkxBUk12OAorCXRzdAlyMTIsI0FSTVY3X05FT04KKwlibmUJLkxORU9OCisjZW5kaWYKIAlzdG1kYglzcCEse3I0LXIxMixscn0KIAlhZGQJJGxlbiwkaW5wLCRsZW4sbHNsIzYJQCAkbGVuIHRvIHBvaW50IGF0IHRoZSBlbmQgb2YgJGlucAogCWxkbWlhCSRjdHgseyRhLCRiLCRjLCRkLCRlfQpAQCAtMjMzLDE2ICsyNTcsNDIyIEBACiAJbW92ZXEJcGMsbHIJCQlAIGJlIGJpbmFyeSBjb21wYXRpYmxlIHdpdGggVjQsIHlldAogCWJ4CWxyCQkJQCBpbnRlcm9wZXJhYmxlIHdpdGggVGh1bWIgSVNBOi0pCiAjZW5kaWYKLS5hbGlnbgkyCisuc2l6ZQlzaGExX2Jsb2NrX2RhdGFfb3JkZXIsLi1zaGExX2Jsb2NrX2RhdGFfb3JkZXIKKworLmFsaWduCTUKIC5MS18wMF8xOToJLndvcmQJMHg1YTgyNzk5OQogLkxLXzIwXzM5Ogkud29yZAkweDZlZDllYmExCiAuTEtfNDBfNTk6CS53b3JkCTB4OGYxYmJjZGMKIC5MS182MF83OToJLndvcmQJMHhjYTYyYzFkNgotLnNpemUJc2hhMV9ibG9ja19kYXRhX29yZGVyLC4tc2hhMV9ibG9ja19kYXRhX29yZGVyCi0uYXNjaXoJIlNIQTEgYmxvY2sgdHJhbnNmb3JtIGZvciBBUk12NCwgQ1JZUFRPR0FNUyBieSA8YXBwcm9cQG9wZW5zc2wub3JnPiIKLS5hbGlnbgkyCisuTE9QRU5TU0xfYXJtY2FwOgorLndvcmQJT1BFTlNTTF9hcm1jYXBfUC1zaGExX2Jsb2NrX2RhdGFfb3JkZXIKKy5hc2NpegkiU0hBMSBibG9jayB0cmFuc2Zvcm0gZm9yIEFSTXY0L05FT04vQVJNdjgsIENSWVBUT0dBTVMgYnkgPGFwcHJvXEBvcGVuc3NsLm9yZz4iCisuYWxpZ24JNQorX19fCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgTkVPTiBzdHVmZgorIwore3t7CitteSBAVj0oJGEsJGIsJGMsJGQsJGUpOworbXkgKCRLX1hYX1hYLCRLaSwkdDAsJHQxLCRYZmVyLCRzYXZlZF9zcCk9bWFwKCJyJF8iLCg4Li4xMiwxNCkpOworbXkgJFhpPTQ7CitteSBAWD1tYXAoInEkXyIsKDguLjExLDAuLjMpKTsKK215IEBUeD0oInExMiIsInExMyIpOworbXkgKCRLLCR6ZXJvKT0oInExNCIsInExNSIpOworbXkgJGo9MDsKKworc3ViIEFVVE9MT0FEKCkgICAgICAgICAgIyB0aHVuayBbc2ltcGxpZmllZF0geDg2LXN0eWxlIHBlcmxhc20KK3sgbXkgJG9wY29kZSA9ICRBVVRPTE9BRDsgJG9wY29kZSA9fiBzLy4qOjovLzsgJG9wY29kZSA9fiBzL18vXC4vOworICBteSAkYXJnID0gcG9wOworICAgICRhcmcgPSAiIyRhcmciIGlmICgkYXJnKjEgZXEgJGFyZyk7CisgICAgJGNvZGUgLj0gIlx0JG9wY29kZVx0Ii5qb2luKCcsJyxAXywkYXJnKS4iXG4iOworfQorCitzdWIgYm9keV8wMF8xOSAoKSB7CisJKAorCScoJGEsJGIsJGMsJGQsJGUpPUBWOycuCQkjICckY29kZS49IkAgJGpcbiI7Jy4KKwknJmJpYwkoJHQwLCRkLCRiKScsCisJJyZhZGQJKCRlLCRlLCRLaSknLAkJIyBlKz1YW2ldK0sKKwknJmFuZAkoJHQxLCRjLCRiKScsCisJJyZsZHIJKCRLaSxzcHJpbnRmICJbc3AsIyVkXSIsNCooKCRqKzEpJjE1KSknLAorCScmYWRkCSgkZSwkZSwkYSwicm9yIzI3IiknLAkjIGUrPVJPUihBLDI3KQorCScmZW9yCSgkdDEsJHQxLCR0MCknLAkJIyBGXzAwXzE5CisJJyZtb3YJKCRiLCRiLCJyb3IjMiIpJywJIyBiPVJPUihiLDIpCisJJyZhZGQJKCRlLCRlLCR0MSk7Jy4JCSMgZSs9Rl8wMF8xOQorCSckaisrOwl1bnNoaWZ0KEBWLHBvcChAVikpOycKKwkpCit9CitzdWIgYm9keV8yMF8zOSAoKSB7CisJKAorCScoJGEsJGIsJGMsJGQsJGUpPUBWOycuCQkjICckY29kZS49IkAgJGpcbiI7Jy4KKwknJmVvcgkoJHQwLCRiLCRkKScsCisJJyZhZGQJKCRlLCRlLCRLaSknLAkJIyBlKz1YW2ldK0sKKwknJmxkcgkoJEtpLHNwcmludGYgIltzcCwjJWRdIiw0KigoJGorMSkmMTUpKSBpZiAoJGo8NzkpJywKKwknJmVvcgkoJHQxLCR0MCwkYyknLAkJIyBGXzIwXzM5CisJJyZhZGQJKCRlLCRlLCRhLCJyb3IjMjciKScsCSMgZSs9Uk9SKEEsMjcpCisJJyZtb3YJKCRiLCRiLCJyb3IjMiIpJywJIyBiPVJPUihiLDIpCisJJyZhZGQJKCRlLCRlLCR0MSk7Jy4JCSMgZSs9Rl8yMF8zOQorCSckaisrOwl1bnNoaWZ0KEBWLHBvcChAVikpOycKKwkpCit9CitzdWIgYm9keV80MF81OSAoKSB7CisJKAorCScoJGEsJGIsJGMsJGQsJGUpPUBWOycuCQkjICckY29kZS49IkAgJGpcbiI7Jy4KKwknJmFkZAkoJGUsJGUsJEtpKScsCQkjIGUrPVhbaV0rSworCScmYW5kCSgkdDAsJGMsJGQpJywKKwknJmxkcgkoJEtpLHNwcmludGYgIltzcCwjJWRdIiw0KigoJGorMSkmMTUpKScsCisJJyZhZGQJKCRlLCRlLCRhLCJyb3IjMjciKScsCSMgZSs9Uk9SKEEsMjcpCisJJyZlb3IJKCR0MSwkYywkZCknLAorCScmYWRkCSgkZSwkZSwkdDApJywKKwknJmFuZAkoJHQxLCR0MSwkYiknLAorCScmbW92CSgkYiwkYiwicm9yIzIiKScsCSMgYj1ST1IoYiwyKQorCScmYWRkCSgkZSwkZSwkdDEpOycuCQkjIGUrPUZfNDBfNTkKKwknJGorKzsJdW5zaGlmdChAVixwb3AoQFYpKTsnCisJKQorfQorCitzdWIgWHVwZGF0ZV8xNl8zMSAoKQoreyB1c2UgaW50ZWdlcjsKKyAgbXkgJGJvZHkgPSBzaGlmdDsKKyAgbXkgQGluc25zID0gKCYkYm9keSwmJGJvZHksJiRib2R5LCYkYm9keSk7CisgIG15ICgkYSwkYiwkYywkZCwkZSk7CisKKwkmdmV4dF84CQkoQFhbMF0sQFhbLTQmN10sQFhbLTMmN10sOCk7CSMgY29tcG9zZSAiWFstMTRdIiBpbiAiWFswXSIKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgICZ2YWRkX2kzMgkoQFR4WzFdLEBYWy0xJjddLCRLKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgICZ2bGQxXzMyCSgieyRLXFtdfSIsIlskS19YWF9YWCw6MzJdISIpCWlmICgkWGklNT09MCk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJJnZleHRfOAkJKEBUeFswXSxAWFstMSY3XSwkemVybyw0KTsJIyAiWFstM10iLCAzIHdvcmRzCisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJJnZlb3IJCShAWFswXSxAWFswXSxAWFstNCY3XSk7CQkjICJYWzBdIl49IlhbLTE2XSIKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkmdmVvcgkJKEBUeFswXSxAVHhbMF0sQFhbLTImN10pOwkjICJYWy0zXSJeIlhbLThdIgorCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSZ2ZW9yCQkoQFR4WzBdLEBUeFswXSxAWFswXSk7CQkjICJYWzBdIl49IlhbLTNdIl4iWFstOF0KKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgICZ2c3QxXzMyCSgie0BUeFsxXX0iLCJbJFhmZXIsOjEyOF0hIik7CSMgWFtdK0sgeGZlcgorCSAgJnN1YgkJKCRYZmVyLCRYZmVyLDY0KQkJaWYgKCRYaSU0PT0wKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkmdmV4dF84CQkoQFR4WzFdLCR6ZXJvLEBUeFswXSw0KTsJIyAiWFswXSI8PDk2LCBleHRyYWN0IG9uZSBkd29yZAorCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSZ2YWRkX2kzMgkoQFhbMF0sQFR4WzBdLEBUeFswXSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJJnZzcmlfMzIJKEBYWzBdLEBUeFswXSwzMSk7CQkjICJYWzBdIjw8PD0xCisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJJnZzaHJfdTMyCShAVHhbMF0sQFR4WzFdLDMwKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkmdnNobF91MzIJKEBUeFsxXSxAVHhbMV0sMik7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJJnZlb3IJCShAWFswXSxAWFswXSxAVHhbMF0pOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSZ2ZW9yCQkoQFhbMF0sQFhbMF0sQFR4WzFdKTsJCSMgIlhbMF0iXj0oIlhbMF0iPj45Nik8PDwyCisKKwlmb3JlYWNoIChAaW5zbnMpIHsgZXZhbDsgfQkjIHJlbWFpbmluZyBpbnN0cnVjdGlvbnMgW2lmIGFueV0KKworICAkWGkrKzsJcHVzaChAWCxzaGlmdChAWCkpOwkjICJyb3RhdGUiIFhbXQorfQorCitzdWIgWHVwZGF0ZV8zMl83OSAoKQoreyB1c2UgaW50ZWdlcjsKKyAgbXkgJGJvZHkgPSBzaGlmdDsKKyAgbXkgQGluc25zID0gKCYkYm9keSwmJGJvZHksJiRib2R5LCYkYm9keSk7CisgIG15ICgkYSwkYiwkYywkZCwkZSk7CisKKwkmdmV4dF84CQkoQFR4WzBdLEBYWy0yJjddLEBYWy0xJjddLDgpOwkjIGNvbXBvc2UgIlhbLTZdIgorCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSZ2ZW9yCQkoQFhbMF0sQFhbMF0sQFhbLTQmN10pOwkJIyAiWFswXSI9IlhbLTMyXSJeIlhbLTE2XSIKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkmdmVvcgkJKEBYWzBdLEBYWzBdLEBYWy03JjddKTsJCSMgIlhbMF0iXj0iWFstMjhdIgorCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSAgJnZhZGRfaTMyCShAVHhbMV0sQFhbLTEmN10sJEspOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSAgJnZsZDFfMzIJKCJ7JEtcW119IiwiWyRLX1hYX1hYLDozMl0hIikJaWYgKCRYaSU1PT0wKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkmdmVvcgkJKEBUeFswXSxAVHhbMF0sQFhbMF0pOwkJIyAiWFstNl0iXj0iWFswXSIKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkmdnNocl91MzIJKEBYWzBdLEBUeFswXSwzMCk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJICAmdnN0MV8zMgkoIntAVHhbMV19IiwiWyRYZmVyLDoxMjhdISIpOwkjIFhbXStLIHhmZXIKKwkgICZzdWIJCSgkWGZlciwkWGZlciw2NCkJCWlmICgkWGklND09MCk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJJnZzbGlfMzIJKEBYWzBdLEBUeFswXSwyKTsJCSMgIlhbMF0iPSJYWy02XSI8PDwyCisKKwlmb3JlYWNoIChAaW5zbnMpIHsgZXZhbDsgfQkjIHJlbWFpbmluZyBpbnN0cnVjdGlvbnMgW2lmIGFueV0KKworICAkWGkrKzsJcHVzaChAWCxzaGlmdChAWCkpOwkjICJyb3RhdGUiIFhbXQorfQorCitzdWIgWHVwbGFzdF84MCAoKQoreyB1c2UgaW50ZWdlcjsKKyAgbXkgJGJvZHkgPSBzaGlmdDsKKyAgbXkgQGluc25zID0gKCYkYm9keSwmJGJvZHksJiRib2R5LCYkYm9keSk7CisgIG15ICgkYSwkYiwkYywkZCwkZSk7CisKKwkmdmFkZF9pMzIJKEBUeFsxXSxAWFstMSY3XSwkSyk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJJnZzdDFfMzIJKCJ7QFR4WzFdfSIsIlskWGZlciw6MTI4XSEiKTsKKwkmc3ViCQkoJFhmZXIsJFhmZXIsNjQpOworCisJJnRlcQkJKCRpbnAsJGxlbik7CisJJnN1YgkJKCRLX1hYX1hYLCRLX1hYX1hYLDE2KTsJIyByZXdpbmQgJEtfWFhfWFgKKwkmc3ViZXEJCSgkaW5wLCRpbnAsNjQpOwkJIyByZWxvYWQgbGFzdCBibG9jayB0byBhdm9pZCBTRUdWCisJJnZsZDFfOAkJKCJ7QFhbLTQmN10tQFhbLTMmN119IiwiWyRpbnBdISIpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSZ2bGQxXzgJCSgie0BYWy0yJjddLUBYWy0xJjddfSIsIlskaW5wXSEiKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkmdmxkMV8zMgkoInskS1xbXX0iLCJbJEtfWFhfWFgsOjMyXSEiKTsJIyBsb2FkIEtfMDBfMTkKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkmdnJldjMyXzgJKEBYWy00JjddLEBYWy00JjddKTsKKworCWZvcmVhY2ggKEBpbnNucykgeyBldmFsOyB9CQkjIHJlbWFpbmluZyBpbnN0cnVjdGlvbnMKKworICAgJFhpPTA7Cit9CisKK3N1YiBYbG9vcCgpCit7IHVzZSBpbnRlZ2VyOworICBteSAkYm9keSA9IHNoaWZ0OworICBteSBAaW5zbnMgPSAoJiRib2R5LCYkYm9keSwmJGJvZHksJiRib2R5KTsKKyAgbXkgKCRhLCRiLCRjLCRkLCRlKTsKKworCSZ2cmV2MzJfOAkoQFhbKCRYaS0zKSY3XSxAWFsoJFhpLTMpJjddKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkmdmFkZF9pMzIJKEBYWyRYaSY3XSxAWFsoJFhpLTQpJjddLCRLKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkmdnN0MV8zMgkoIntAWFskWGkmN119IiwiWyRYZmVyLDoxMjhdISIpOyMgWFtdK0sgeGZlciB0byBJQUxVCisKKwlmb3JlYWNoIChAaW5zbnMpIHsgZXZhbDsgfQorCisgICRYaSsrOworfQorCiskY29kZS49PDxfX187CisjaWYgX19BUk1fQVJDSF9fPj03CisuZnB1CW5lb24KKworLnR5cGUJc2hhMV9ibG9ja19kYXRhX29yZGVyX25lb24sJWZ1bmN0aW9uCisuYWxpZ24JNAorc2hhMV9ibG9ja19kYXRhX29yZGVyX25lb246CisuTE5FT046CisJc3RtZGIJc3AhLHtyNC1yMTIsbHJ9CisJYWRkCSRsZW4sJGlucCwkbGVuLGxzbCM2CUAgJGxlbiB0byBwb2ludCBhdCB0aGUgZW5kIG9mICRpbnAKKwlAIGRtYgkJCQlAIGVycmF0YSAjNDUxMDM0IG9uIGVhcmx5IENvcnRleCBBOAorCUAgdnN0bWRiCXNwISx7ZDgtZDE1fQlAIEFCSSBzcGVjaWZpY2F0aW9uIHNheXMgc28KKwltb3YJJHNhdmVkX3NwLHNwCisJc3ViCXNwLHNwLCM2NAkJQCBhbGxvY2EKKwlhZHIJJEtfWFhfWFgsLkxLXzAwXzE5CisJYmljCXNwLHNwLCMxNQkJQCBhbGlnbiBmb3IgMTI4LWJpdCBzdG9yZXMKKworCWxkbWlhCSRjdHgseyRhLCRiLCRjLCRkLCRlfQlAIGxvYWQgY29udGV4dAorCW1vdgkkWGZlcixzcAorCisJdmxkMS44CQl7QFhbLTQmN10tQFhbLTMmN119LFskaW5wXSEJQCBoYW5kbGVzIHVuYWxpZ25lZAorCXZlb3IJCSR6ZXJvLCR6ZXJvLCR6ZXJvCisJdmxkMS44CQl7QFhbLTImN10tQFhbLTEmN119LFskaW5wXSEKKwl2bGQxLjMyCQl7JHtLfVxbXX0sWyRLX1hYX1hYLDozMl0hCUAgbG9hZCBLXzAwXzE5CisJdnJldjMyLjgJQFhbLTQmN10sQFhbLTQmN10JCUAgeWVzLCBldmVuIG9uCisJdnJldjMyLjgJQFhbLTMmN10sQFhbLTMmN10JCUAgYmlnLWVuZGlhbi4uLgorCXZyZXYzMi44CUBYWy0yJjddLEBYWy0yJjddCisJdmFkZC5pMzIJQFhbMF0sQFhbLTQmN10sJEsKKwl2cmV2MzIuOAlAWFstMSY3XSxAWFstMSY3XQorCXZhZGQuaTMyCUBYWzFdLEBYWy0zJjddLCRLCisJdnN0MS4zMgkJe0BYWzBdfSxbJFhmZXIsOjEyOF0hCisJdmFkZC5pMzIJQFhbMl0sQFhbLTImN10sJEsKKwl2c3QxLjMyCQl7QFhbMV19LFskWGZlciw6MTI4XSEKKwl2c3QxLjMyCQl7QFhbMl19LFskWGZlciw6MTI4XSEKKwlsZHIJCSRLaSxbc3BdCQkJQCBiaWcgUkFXIHN0YWxsCisKKy5Mb29wX25lb246CitfX18KKwkmWHVwZGF0ZV8xNl8zMShcJmJvZHlfMDBfMTkpOworCSZYdXBkYXRlXzE2XzMxKFwmYm9keV8wMF8xOSk7CisJJlh1cGRhdGVfMTZfMzEoXCZib2R5XzAwXzE5KTsKKwkmWHVwZGF0ZV8xNl8zMShcJmJvZHlfMDBfMTkpOworCSZYdXBkYXRlXzMyXzc5KFwmYm9keV8wMF8xOSk7CisJJlh1cGRhdGVfMzJfNzkoXCZib2R5XzIwXzM5KTsKKwkmWHVwZGF0ZV8zMl83OShcJmJvZHlfMjBfMzkpOworCSZYdXBkYXRlXzMyXzc5KFwmYm9keV8yMF8zOSk7CisJJlh1cGRhdGVfMzJfNzkoXCZib2R5XzIwXzM5KTsKKwkmWHVwZGF0ZV8zMl83OShcJmJvZHlfMjBfMzkpOworCSZYdXBkYXRlXzMyXzc5KFwmYm9keV80MF81OSk7CisJJlh1cGRhdGVfMzJfNzkoXCZib2R5XzQwXzU5KTsKKwkmWHVwZGF0ZV8zMl83OShcJmJvZHlfNDBfNTkpOworCSZYdXBkYXRlXzMyXzc5KFwmYm9keV80MF81OSk7CisJJlh1cGRhdGVfMzJfNzkoXCZib2R5XzQwXzU5KTsKKwkmWHVwZGF0ZV8zMl83OShcJmJvZHlfMjBfMzkpOworCSZYdXBsYXN0XzgwKFwmYm9keV8yMF8zOSk7CisJJlhsb29wKFwmYm9keV8yMF8zOSk7CisJJlhsb29wKFwmYm9keV8yMF8zOSk7CisJJlhsb29wKFwmYm9keV8yMF8zOSk7CiskY29kZS49PDxfX187CisJbGRtaWEJJGN0eCx7JEtpLCR0MCwkdDEsJFhmZXJ9CUAgYWNjdW11bGF0ZSBjb250ZXh0CisJYWRkCSRhLCRhLCRLaQorCWxkcgkkS2ksWyRjdHgsIzE2XQorCWFkZAkkYiwkYiwkdDAKKwlhZGQJJGMsJGMsJHQxCisJYWRkCSRkLCRkLCRYZmVyCisJbW92ZXEJc3AsJHNhdmVkX3NwCisJYWRkCSRlLCRlLCRLaQorCWxkcm5lCSRLaSxbc3BdCisJc3RtaWEJJGN0eCx7JGEsJGIsJGMsJGQsJGV9CisJYWRkbmUJJFhmZXIsc3AsIzMqMTYKKwlibmUJLkxvb3BfbmVvbgorCisJQCB2bGRtaWEJc3AhLHtkOC1kMTV9CisJbGRtaWEJc3AhLHtyNC1yMTIscGN9Cisuc2l6ZQlzaGExX2Jsb2NrX2RhdGFfb3JkZXJfbmVvbiwuLXNoYTFfYmxvY2tfZGF0YV9vcmRlcl9uZW9uCisjZW5kaWYKK19fXworfX19CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgQVJNdjggc3R1ZmYKKyMKK3t7eworbXkgKCRBQkNELCRFLCRFMCwkRTEpPW1hcCgicSRfIiwoMC4uMykpOworbXkgQE1TRz1tYXAoInEkXyIsKDQuLjcpKTsKK215IEBLeHg9bWFwKCJxJF8iLCg4Li4xMSkpOworbXkgKCRXMCwkVzEsJEFCQ0RfU0FWRSk9bWFwKCJxJF8iLCgxMi4uMTQpKTsKKworJGNvZGUuPTw8X19fOworI2lmIF9fQVJNX0FSQ0hfXz49NworLnR5cGUJc2hhMV9ibG9ja19kYXRhX29yZGVyX2FybXY4LCVmdW5jdGlvbgorLmFsaWduCTUKK3NoYTFfYmxvY2tfZGF0YV9vcmRlcl9hcm12ODoKKy5MQVJNdjg6CisJdnN0bWRiCXNwISx7ZDgtZDE1fQkJQCBBQkkgc3BlY2lmaWNhdGlvbiBzYXlzIHNvCisKKwl2ZW9yCSRFLCRFLCRFCisJYWRyCXIzLC5MS18wMF8xOQorCXZsZDEuMzIJeyRBQkNEfSxbJGN0eF0hCisJdmxkMS4zMgl7JEVcWzBdfSxbJGN0eF0KKwlzdWIJJGN0eCwkY3R4LCMxNgorCXZsZDEuMzIJe0BLeHhbMF1cW119LFtyMyw6MzJdIQorCXZsZDEuMzIJe0BLeHhbMV1cW119LFtyMyw6MzJdIQorCXZsZDEuMzIJe0BLeHhbMl1cW119LFtyMyw6MzJdIQorCXZsZDEuMzIJe0BLeHhbM11cW119LFtyMyw6MzJdCisKKy5Mb29wX3Y4OgorCXZsZDEuOAkJe0BNU0dbMF0tQE1TR1sxXX0sWyRpbnBdIQorCXZsZDEuOAkJe0BNU0dbMl0tQE1TR1szXX0sWyRpbnBdIQorCXZyZXYzMi44CUBNU0dbMF0sQE1TR1swXQorCXZyZXYzMi44CUBNU0dbMV0sQE1TR1sxXQorCisJdmFkZC5pMzIJJFcwLEBLeHhbMF0sQE1TR1swXQorCXZyZXYzMi44CUBNU0dbMl0sQE1TR1syXQorCXZtb3YJCSRBQkNEX1NBVkUsJEFCQ0QJQCBvZmZsb2FkCisJc3VicwkJJGxlbiwkbGVuLCMxCisKKwl2YWRkLmkzMgkkVzEsQEt4eFswXSxATVNHWzFdCisJdnJldjMyLjgJQE1TR1szXSxATVNHWzNdCisJc2hhMWgJCSRFMSwkQUJDRAkJQCAwCisJc2hhMWMJCSRBQkNELCRFLCRXMAorCXZhZGQuaTMyCSRXMCxAS3h4WyRqXSxATVNHWzJdCisJc2hhMXN1MAkJQE1TR1swXSxATVNHWzFdLEBNU0dbMl0KK19fXworZm9yICgkaj0wLCRpPTE7JGk8MjAtMzskaSsrKSB7CitteSAkZj0oImMiLCJwIiwibSIsInAiKVskaS81XTsKKyRjb2RlLj08PF9fXzsKKwlzaGExaAkJJEUwLCRBQkNECQlAICRpCisJc2hhMSRmCQkkQUJDRCwkRTEsJFcxCisJdmFkZC5pMzIJJFcxLEBLeHhbJGpdLEBNU0dbM10KKwlzaGExc3UxCQlATVNHWzBdLEBNU0dbM10KK19fXworJGNvZGUuPTw8X19fIGlmICgkaTwyMC00KTsKKwlzaGExc3UwCQlATVNHWzFdLEBNU0dbMl0sQE1TR1szXQorX19fCisJKCRFMCwkRTEpPSgkRTEsJEUwKTsJKCRXMCwkVzEpPSgkVzEsJFcwKTsKKwlwdXNoKEBNU0csc2hpZnQoQE1TRykpOwkkaisrIGlmICgoKCRpKzMpJTUpPT0wKTsKK30KKyRjb2RlLj08PF9fXzsKKwlzaGExaAkJJEUwLCRBQkNECQlAICRpCisJc2hhMXAJCSRBQkNELCRFMSwkVzEKKwl2YWRkLmkzMgkkVzEsQEt4eFskal0sQE1TR1szXQorCisJc2hhMWgJCSRFMSwkQUJDRAkJQCAxOAorCXNoYTFwCQkkQUJDRCwkRTAsJFcwCisKKwlzaGExaAkJJEUwLCRBQkNECQlAIDE5CisJc2hhMXAJCSRBQkNELCRFMSwkVzEKKworCXZhZGQuaTMyCSRFLCRFLCRFMAorCXZhZGQuaTMyCSRBQkNELCRBQkNELCRBQkNEX1NBVkUKKwlibmUJCS5Mb29wX3Y4CisKKwl2c3QxLjMyCQl7JEFCQ0R9LFskY3R4XSEKKwl2c3QxLjMyCQl7JEVcWzBdfSxbJGN0eF0KKworCXZsZG1pYQlzcCEse2Q4LWQxNX0KKwlyZXQJCQkJCUAgYnggbHIKKy5zaXplCXNoYTFfYmxvY2tfZGF0YV9vcmRlcl9hcm12OCwuLXNoYTFfYmxvY2tfZGF0YV9vcmRlcl9hcm12OAorI2VuZGlmCitfX18KK319fQorJGNvZGUuPTw8X19fOworLmNvbW0JT1BFTlNTTF9hcm1jYXBfUCw0LDQKIF9fXwogCi0kY29kZSA9fiBzL1xiYnhccytsclxiLy53b3JkXHQweGUxMmZmZjFlL2dtOwkjIG1ha2UgaXQgcG9zc2libGUgdG8gY29tcGlsZSB3aXRoIC1tYXJjaD1hcm12NAotcHJpbnQgJGNvZGU7Cit7ICAgbXkgICVvcGNvZGUgPSAoCisJInNoYTFjIgkJPT4gMHhmMjAwMGM0MCwJInNoYTFwIgkJPT4gMHhmMjEwMGM0MCwKKwkic2hhMW0iCQk9PiAweGYyMjAwYzQwLAkic2hhMXN1MCIJPT4gMHhmMjMwMGM0MCwKKwkic2hhMWgiCQk9PiAweGYzYjkwMmMwLAkic2hhMXN1MSIJPT4gMHhmM2JhMDM4MAkpOworCisgICAgc3ViIHVuc2hhMSB7CisJbXkgKCRtbmVtb25pYywkYXJnKT1AXzsKKworCWlmICgkYXJnID1+IG0vcShbMC05XSspKD86LFxzKnEoWzAtOV0rKSk/LFxzKnEoWzAtOV0rKS9vKSB7CisJICAgIG15ICR3b3JkID0gJG9wY29kZXskbW5lbW9uaWN9fCgoJDEmNyk8PDEzKXwoKCQxJjgpPDwxOSkKKwkJCQkJIHwoKCQyJjcpPDwxNyl8KCgkMiY4KTw8NCkKKwkJCQkJIHwoKCQzJjcpPDwxKSB8KCgkMyY4KTw8Mik7CisJICAgICMgc2luY2UgQVJNdjcgaW5zdHJ1Y3Rpb25zIGFyZSBhbHdheXMgZW5jb2RlZCBsaXR0bGUtZW5kaWFuLgorCSAgICAjIGNvcnJlY3Qgc29sdXRpb24gaXMgdG8gdXNlIC5pbnN0IGRpcmVjdGl2ZSwgYnV0IG9sZGVyCisJICAgICMgYXNzZW1ibGVycyBkb24ndCBpbXBsZW1lbnQgaXQ6LSgKKwkgICAgc3ByaW50ZiAiLmJ5dGVcdDB4JTAyeCwweCUwMngsMHglMDJ4LDB4JTAyeFx0QCAlcyAlcyIsCisJCQkkd29yZCYweGZmLCgkd29yZD4+OCkmMHhmZiwKKwkJCSgkd29yZD4+MTYpJjB4ZmYsKCR3b3JkPj4yNCkmMHhmZiwKKwkJCSRtbmVtb25pYywkYXJnOworCX0KKyAgICB9Cit9CisKK2ZvcmVhY2ggKHNwbGl0KCQvLCRjb2RlKSkgeworCXMve3EoWzAtOV0rKVxbXF19L3NwcmludGYgIntkJWRbXSxkJWRbXX0iLDIqJDEsMiokMSsxL2VvCW9yCisJcy97cShbMC05XSspXFswXF19L3NwcmludGYgIntkJWRbMF19IiwyKiQxL2VvOworCisJcy9cYihzaGExXHcrKVxzKyhxLiopL3Vuc2hhMSgkMSwkMikvZ2VvOworCisJcy9cYnJldFxiL2J4CWxyL28JCW9yCisJcy9cYmJ4XHMrbHJcYi8ud29yZFx0MHhlMTJmZmYxZS9vOwkjIG1ha2UgaXQgcG9zc2libGUgdG8gY29tcGlsZSB3aXRoIC1tYXJjaD1hcm12NAorCisJcHJpbnQgJF8sJC87Cit9CisKIGNsb3NlIFNURE9VVDsgIyBlbmZvcmNlIGZsdXNoCmRpZmYgLS1naXQgYS9jcnlwdG8vc2hhL2FzbS9zaGExLWFybXY4LlMgYi9jcnlwdG8vc2hhL2FzbS9zaGExLWFybXY4LlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjlkMTI2MgotLS0gL2Rldi9udWxsCisrKyBiL2NyeXB0by9zaGEvYXNtL3NoYTEtYXJtdjguUwpAQCAtMCwwICsxLDEyMTEgQEAKKyNpbmNsdWRlICJhcm1fYXJjaC5oIgorCisudGV4dAorCisuZ2xvYmwJc2hhMV9ibG9ja19kYXRhX29yZGVyCisudHlwZQlzaGExX2Jsb2NrX2RhdGFfb3JkZXIsJWZ1bmN0aW9uCisuYWxpZ24JNgorc2hhMV9ibG9ja19kYXRhX29yZGVyOgorCWxkcgl4MTYsLkxPUEVOU1NMX2FybWNhcF9QCisJYWRyCXgxNywuTE9QRU5TU0xfYXJtY2FwX1AKKwlhZGQJeDE2LHgxNix4MTcKKwlsZHIJdzE2LFt4MTZdCisJdHN0CXcxNiwjQVJNVjhfU0hBMQorCWIubmUJLkx2OF9lbnRyeQorCisJc3RwCXgyOSx4MzAsW3NwLCMtOTZdIQorCWFkZAl4Mjksc3AsIzAKKwlzdHAJeDE5LHgyMCxbc3AsIzE2XQorCXN0cAl4MjEseDIyLFtzcCwjMzJdCisJc3RwCXgyMyx4MjQsW3NwLCM0OF0KKwlzdHAJeDI1LHgyNixbc3AsIzY0XQorCXN0cAl4MjcseDI4LFtzcCwjODBdCisKKwlsZHAJdzIwLHcyMSxbeDBdCisJbGRwCXcyMix3MjMsW3gwLCM4XQorCWxkcgl3MjQsW3gwLCMxNl0KKworLkxvb3A6CisJbGRyCXgzLFt4MV0sIzY0CisJbW92egl3MjgsIzB4Nzk5OQorCXN1Ygl4Mix4MiwjMQorCW1vdmsJdzI4LCMweDVhODIsbHNsIzE2CisjaWZkZWYJX19BUk1FQl9fCisJcm9yCXgzLHgzLCMzMgorI2Vsc2UKKwlyZXYzMgl4Myx4MworI2VuZGlmCisJYWRkCXcyNCx3MjQsdzI4CQkvLyB3YXJtIGl0IHVwCisJYWRkCXcyNCx3MjQsdzMKKwlsc3IJeDQseDMsIzMyCisJbGRyCXg1LFt4MSwjLTU2XQorCWJpYwl3MjUsdzIzLHcyMQorCWFuZAl3MjYsdzIyLHcyMQorCXJvcgl3MjcsdzIwLCMyNworCWFkZAl3MjMsdzIzLHcyOAkJLy8gZnV0dXJlIGUrPUsKKwlvcnIJdzI1LHcyNSx3MjYKKwlhZGQJdzI0LHcyNCx3MjcJCS8vIGUrPXJvdChhLDUpCisJcm9yCXcyMSx3MjEsIzIKKwlhZGQJdzIzLHcyMyx3NAkvLyBmdXR1cmUgZSs9WFtpXQorCWFkZAl3MjQsdzI0LHcyNQkJLy8gZSs9RihiLGMsZCkKKyNpZmRlZglfX0FSTUVCX18KKwlyb3IJeDUseDUsIzMyCisjZWxzZQorCXJldjMyCXg1LHg1CisjZW5kaWYKKwliaWMJdzI1LHcyMix3MjAKKwlhbmQJdzI2LHcyMSx3MjAKKwlyb3IJdzI3LHcyNCwjMjcKKwlhZGQJdzIyLHcyMix3MjgJCS8vIGZ1dHVyZSBlKz1LCisJb3JyCXcyNSx3MjUsdzI2CisJYWRkCXcyMyx3MjMsdzI3CQkvLyBlKz1yb3QoYSw1KQorCXJvcgl3MjAsdzIwLCMyCisJYWRkCXcyMix3MjIsdzUJLy8gZnV0dXJlIGUrPVhbaV0KKwlhZGQJdzIzLHcyMyx3MjUJCS8vIGUrPUYoYixjLGQpCisJbHNyCXg2LHg1LCMzMgorCWxkcgl4NyxbeDEsIy00OF0KKwliaWMJdzI1LHcyMSx3MjQKKwlhbmQJdzI2LHcyMCx3MjQKKwlyb3IJdzI3LHcyMywjMjcKKwlhZGQJdzIxLHcyMSx3MjgJCS8vIGZ1dHVyZSBlKz1LCisJb3JyCXcyNSx3MjUsdzI2CisJYWRkCXcyMix3MjIsdzI3CQkvLyBlKz1yb3QoYSw1KQorCXJvcgl3MjQsdzI0LCMyCisJYWRkCXcyMSx3MjEsdzYJLy8gZnV0dXJlIGUrPVhbaV0KKwlhZGQJdzIyLHcyMix3MjUJCS8vIGUrPUYoYixjLGQpCisjaWZkZWYJX19BUk1FQl9fCisJcm9yCXg3LHg3LCMzMgorI2Vsc2UKKwlyZXYzMgl4Nyx4NworI2VuZGlmCisJYmljCXcyNSx3MjAsdzIzCisJYW5kCXcyNix3MjQsdzIzCisJcm9yCXcyNyx3MjIsIzI3CisJYWRkCXcyMCx3MjAsdzI4CQkvLyBmdXR1cmUgZSs9SworCW9ycgl3MjUsdzI1LHcyNgorCWFkZAl3MjEsdzIxLHcyNwkJLy8gZSs9cm90KGEsNSkKKwlyb3IJdzIzLHcyMywjMgorCWFkZAl3MjAsdzIwLHc3CS8vIGZ1dHVyZSBlKz1YW2ldCisJYWRkCXcyMSx3MjEsdzI1CQkvLyBlKz1GKGIsYyxkKQorCWxzcgl4OCx4NywjMzIKKwlsZHIJeDksW3gxLCMtNDBdCisJYmljCXcyNSx3MjQsdzIyCisJYW5kCXcyNix3MjMsdzIyCisJcm9yCXcyNyx3MjEsIzI3CisJYWRkCXcyNCx3MjQsdzI4CQkvLyBmdXR1cmUgZSs9SworCW9ycgl3MjUsdzI1LHcyNgorCWFkZAl3MjAsdzIwLHcyNwkJLy8gZSs9cm90KGEsNSkKKwlyb3IJdzIyLHcyMiwjMgorCWFkZAl3MjQsdzI0LHc4CS8vIGZ1dHVyZSBlKz1YW2ldCisJYWRkCXcyMCx3MjAsdzI1CQkvLyBlKz1GKGIsYyxkKQorI2lmZGVmCV9fQVJNRUJfXworCXJvcgl4OSx4OSwjMzIKKyNlbHNlCisJcmV2MzIJeDkseDkKKyNlbmRpZgorCWJpYwl3MjUsdzIzLHcyMQorCWFuZAl3MjYsdzIyLHcyMQorCXJvcgl3MjcsdzIwLCMyNworCWFkZAl3MjMsdzIzLHcyOAkJLy8gZnV0dXJlIGUrPUsKKwlvcnIJdzI1LHcyNSx3MjYKKwlhZGQJdzI0LHcyNCx3MjcJCS8vIGUrPXJvdChhLDUpCisJcm9yCXcyMSx3MjEsIzIKKwlhZGQJdzIzLHcyMyx3OQkvLyBmdXR1cmUgZSs9WFtpXQorCWFkZAl3MjQsdzI0LHcyNQkJLy8gZSs9RihiLGMsZCkKKwlsc3IJeDEwLHg5LCMzMgorCWxkcgl4MTEsW3gxLCMtMzJdCisJYmljCXcyNSx3MjIsdzIwCisJYW5kCXcyNix3MjEsdzIwCisJcm9yCXcyNyx3MjQsIzI3CisJYWRkCXcyMix3MjIsdzI4CQkvLyBmdXR1cmUgZSs9SworCW9ycgl3MjUsdzI1LHcyNgorCWFkZAl3MjMsdzIzLHcyNwkJLy8gZSs9cm90KGEsNSkKKwlyb3IJdzIwLHcyMCwjMgorCWFkZAl3MjIsdzIyLHcxMAkvLyBmdXR1cmUgZSs9WFtpXQorCWFkZAl3MjMsdzIzLHcyNQkJLy8gZSs9RihiLGMsZCkKKyNpZmRlZglfX0FSTUVCX18KKwlyb3IJeDExLHgxMSwjMzIKKyNlbHNlCisJcmV2MzIJeDExLHgxMQorI2VuZGlmCisJYmljCXcyNSx3MjEsdzI0CisJYW5kCXcyNix3MjAsdzI0CisJcm9yCXcyNyx3MjMsIzI3CisJYWRkCXcyMSx3MjEsdzI4CQkvLyBmdXR1cmUgZSs9SworCW9ycgl3MjUsdzI1LHcyNgorCWFkZAl3MjIsdzIyLHcyNwkJLy8gZSs9cm90KGEsNSkKKwlyb3IJdzI0LHcyNCwjMgorCWFkZAl3MjEsdzIxLHcxMQkvLyBmdXR1cmUgZSs9WFtpXQorCWFkZAl3MjIsdzIyLHcyNQkJLy8gZSs9RihiLGMsZCkKKwlsc3IJeDEyLHgxMSwjMzIKKwlsZHIJeDEzLFt4MSwjLTI0XQorCWJpYwl3MjUsdzIwLHcyMworCWFuZAl3MjYsdzI0LHcyMworCXJvcgl3MjcsdzIyLCMyNworCWFkZAl3MjAsdzIwLHcyOAkJLy8gZnV0dXJlIGUrPUsKKwlvcnIJdzI1LHcyNSx3MjYKKwlhZGQJdzIxLHcyMSx3MjcJCS8vIGUrPXJvdChhLDUpCisJcm9yCXcyMyx3MjMsIzIKKwlhZGQJdzIwLHcyMCx3MTIJLy8gZnV0dXJlIGUrPVhbaV0KKwlhZGQJdzIxLHcyMSx3MjUJCS8vIGUrPUYoYixjLGQpCisjaWZkZWYJX19BUk1FQl9fCisJcm9yCXgxMyx4MTMsIzMyCisjZWxzZQorCXJldjMyCXgxMyx4MTMKKyNlbmRpZgorCWJpYwl3MjUsdzI0LHcyMgorCWFuZAl3MjYsdzIzLHcyMgorCXJvcgl3MjcsdzIxLCMyNworCWFkZAl3MjQsdzI0LHcyOAkJLy8gZnV0dXJlIGUrPUsKKwlvcnIJdzI1LHcyNSx3MjYKKwlhZGQJdzIwLHcyMCx3MjcJCS8vIGUrPXJvdChhLDUpCisJcm9yCXcyMix3MjIsIzIKKwlhZGQJdzI0LHcyNCx3MTMJLy8gZnV0dXJlIGUrPVhbaV0KKwlhZGQJdzIwLHcyMCx3MjUJCS8vIGUrPUYoYixjLGQpCisJbHNyCXgxNCx4MTMsIzMyCisJbGRyCXgxNSxbeDEsIy0xNl0KKwliaWMJdzI1LHcyMyx3MjEKKwlhbmQJdzI2LHcyMix3MjEKKwlyb3IJdzI3LHcyMCwjMjcKKwlhZGQJdzIzLHcyMyx3MjgJCS8vIGZ1dHVyZSBlKz1LCisJb3JyCXcyNSx3MjUsdzI2CisJYWRkCXcyNCx3MjQsdzI3CQkvLyBlKz1yb3QoYSw1KQorCXJvcgl3MjEsdzIxLCMyCisJYWRkCXcyMyx3MjMsdzE0CS8vIGZ1dHVyZSBlKz1YW2ldCisJYWRkCXcyNCx3MjQsdzI1CQkvLyBlKz1GKGIsYyxkKQorI2lmZGVmCV9fQVJNRUJfXworCXJvcgl4MTUseDE1LCMzMgorI2Vsc2UKKwlyZXYzMgl4MTUseDE1CisjZW5kaWYKKwliaWMJdzI1LHcyMix3MjAKKwlhbmQJdzI2LHcyMSx3MjAKKwlyb3IJdzI3LHcyNCwjMjcKKwlhZGQJdzIyLHcyMix3MjgJCS8vIGZ1dHVyZSBlKz1LCisJb3JyCXcyNSx3MjUsdzI2CisJYWRkCXcyMyx3MjMsdzI3CQkvLyBlKz1yb3QoYSw1KQorCXJvcgl3MjAsdzIwLCMyCisJYWRkCXcyMix3MjIsdzE1CS8vIGZ1dHVyZSBlKz1YW2ldCisJYWRkCXcyMyx3MjMsdzI1CQkvLyBlKz1GKGIsYyxkKQorCWxzcgl4MTYseDE1LCMzMgorCWxkcgl4MTcsW3gxLCMtOF0KKwliaWMJdzI1LHcyMSx3MjQKKwlhbmQJdzI2LHcyMCx3MjQKKwlyb3IJdzI3LHcyMywjMjcKKwlhZGQJdzIxLHcyMSx3MjgJCS8vIGZ1dHVyZSBlKz1LCisJb3JyCXcyNSx3MjUsdzI2CisJYWRkCXcyMix3MjIsdzI3CQkvLyBlKz1yb3QoYSw1KQorCXJvcgl3MjQsdzI0LCMyCisJYWRkCXcyMSx3MjEsdzE2CS8vIGZ1dHVyZSBlKz1YW2ldCisJYWRkCXcyMix3MjIsdzI1CQkvLyBlKz1GKGIsYyxkKQorI2lmZGVmCV9fQVJNRUJfXworCXJvcgl4MTcseDE3LCMzMgorI2Vsc2UKKwlyZXYzMgl4MTcseDE3CisjZW5kaWYKKwliaWMJdzI1LHcyMCx3MjMKKwlhbmQJdzI2LHcyNCx3MjMKKwlyb3IJdzI3LHcyMiwjMjcKKwlhZGQJdzIwLHcyMCx3MjgJCS8vIGZ1dHVyZSBlKz1LCisJb3JyCXcyNSx3MjUsdzI2CisJYWRkCXcyMSx3MjEsdzI3CQkvLyBlKz1yb3QoYSw1KQorCXJvcgl3MjMsdzIzLCMyCisJYWRkCXcyMCx3MjAsdzE3CS8vIGZ1dHVyZSBlKz1YW2ldCisJYWRkCXcyMSx3MjEsdzI1CQkvLyBlKz1GKGIsYyxkKQorCWxzcgl4MTkseDE3LCMzMgorCSBlb3IJdzMsdzMsdzUKKwliaWMJdzI1LHcyNCx3MjIKKwlhbmQJdzI2LHcyMyx3MjIKKwlyb3IJdzI3LHcyMSwjMjcKKwkgZW9yCXczLHczLHcxMQorCWFkZAl3MjQsdzI0LHcyOAkJLy8gZnV0dXJlIGUrPUsKKwlvcnIJdzI1LHcyNSx3MjYKKwlhZGQJdzIwLHcyMCx3MjcJCS8vIGUrPXJvdChhLDUpCisJIGVvcgl3Myx3Myx3MTYKKwlyb3IJdzIyLHcyMiwjMgorCWFkZAl3MjQsdzI0LHcxOQkvLyBmdXR1cmUgZSs9WFtpXQorCWFkZAl3MjAsdzIwLHcyNQkJLy8gZSs9RihiLGMsZCkKKwkgcm9yCXczLHczLCMzMQorCSBlb3IJdzQsdzQsdzYKKwliaWMJdzI1LHcyMyx3MjEKKwlhbmQJdzI2LHcyMix3MjEKKwlyb3IJdzI3LHcyMCwjMjcKKwkgZW9yCXc0LHc0LHcxMgorCWFkZAl3MjMsdzIzLHcyOAkJLy8gZnV0dXJlIGUrPUsKKwlvcnIJdzI1LHcyNSx3MjYKKwlhZGQJdzI0LHcyNCx3MjcJCS8vIGUrPXJvdChhLDUpCisJIGVvcgl3NCx3NCx3MTcKKwlyb3IJdzIxLHcyMSwjMgorCWFkZAl3MjMsdzIzLHczCS8vIGZ1dHVyZSBlKz1YW2ldCisJYWRkCXcyNCx3MjQsdzI1CQkvLyBlKz1GKGIsYyxkKQorCSByb3IJdzQsdzQsIzMxCisJIGVvcgl3NSx3NSx3NworCWJpYwl3MjUsdzIyLHcyMAorCWFuZAl3MjYsdzIxLHcyMAorCXJvcgl3MjcsdzI0LCMyNworCSBlb3IJdzUsdzUsdzEzCisJYWRkCXcyMix3MjIsdzI4CQkvLyBmdXR1cmUgZSs9SworCW9ycgl3MjUsdzI1LHcyNgorCWFkZAl3MjMsdzIzLHcyNwkJLy8gZSs9cm90KGEsNSkKKwkgZW9yCXc1LHc1LHcxOQorCXJvcgl3MjAsdzIwLCMyCisJYWRkCXcyMix3MjIsdzQJLy8gZnV0dXJlIGUrPVhbaV0KKwlhZGQJdzIzLHcyMyx3MjUJCS8vIGUrPUYoYixjLGQpCisJIHJvcgl3NSx3NSwjMzEKKwkgZW9yCXc2LHc2LHc4CisJYmljCXcyNSx3MjEsdzI0CisJYW5kCXcyNix3MjAsdzI0CisJcm9yCXcyNyx3MjMsIzI3CisJIGVvcgl3Nix3Nix3MTQKKwlhZGQJdzIxLHcyMSx3MjgJCS8vIGZ1dHVyZSBlKz1LCisJb3JyCXcyNSx3MjUsdzI2CisJYWRkCXcyMix3MjIsdzI3CQkvLyBlKz1yb3QoYSw1KQorCSBlb3IJdzYsdzYsdzMKKwlyb3IJdzI0LHcyNCwjMgorCWFkZAl3MjEsdzIxLHc1CS8vIGZ1dHVyZSBlKz1YW2ldCisJYWRkCXcyMix3MjIsdzI1CQkvLyBlKz1GKGIsYyxkKQorCSByb3IJdzYsdzYsIzMxCisJIGVvcgl3Nyx3Nyx3OQorCWJpYwl3MjUsdzIwLHcyMworCWFuZAl3MjYsdzI0LHcyMworCXJvcgl3MjcsdzIyLCMyNworCSBlb3IJdzcsdzcsdzE1CisJYWRkCXcyMCx3MjAsdzI4CQkvLyBmdXR1cmUgZSs9SworCW9ycgl3MjUsdzI1LHcyNgorCWFkZAl3MjEsdzIxLHcyNwkJLy8gZSs9cm90KGEsNSkKKwkgZW9yCXc3LHc3LHc0CisJcm9yCXcyMyx3MjMsIzIKKwlhZGQJdzIwLHcyMCx3NgkvLyBmdXR1cmUgZSs9WFtpXQorCWFkZAl3MjEsdzIxLHcyNQkJLy8gZSs9RihiLGMsZCkKKwkgcm9yCXc3LHc3LCMzMQorCW1vdnoJdzI4LCMweGViYTEKKwltb3ZrCXcyOCwjMHg2ZWQ5LGxzbCMxNgorCSBlb3IJdzgsdzgsdzEwCisJYmljCXcyNSx3MjQsdzIyCisJYW5kCXcyNix3MjMsdzIyCisJcm9yCXcyNyx3MjEsIzI3CisJIGVvcgl3OCx3OCx3MTYKKwlhZGQJdzI0LHcyNCx3MjgJCS8vIGZ1dHVyZSBlKz1LCisJb3JyCXcyNSx3MjUsdzI2CisJYWRkCXcyMCx3MjAsdzI3CQkvLyBlKz1yb3QoYSw1KQorCSBlb3IJdzgsdzgsdzUKKwlyb3IJdzIyLHcyMiwjMgorCWFkZAl3MjQsdzI0LHc3CS8vIGZ1dHVyZSBlKz1YW2ldCisJYWRkCXcyMCx3MjAsdzI1CQkvLyBlKz1GKGIsYyxkKQorCSByb3IJdzgsdzgsIzMxCisJIGVvcgl3OSx3OSx3MTEKKwllb3IJdzI1LHcyMyx3MjEKKwlyb3IJdzI3LHcyMCwjMjcKKwlhZGQJdzIzLHcyMyx3MjgJCS8vIGZ1dHVyZSBlKz1LCisJIGVvcgl3OSx3OSx3MTcKKwllb3IJdzI1LHcyNSx3MjIKKwlhZGQJdzI0LHcyNCx3MjcJCS8vIGUrPXJvdChhLDUpCisJcm9yCXcyMSx3MjEsIzIKKwkgZW9yCXc5LHc5LHc2CisJYWRkCXcyMyx3MjMsdzgJLy8gZnV0dXJlIGUrPVhbaV0KKwlhZGQJdzI0LHcyNCx3MjUJCS8vIGUrPUYoYixjLGQpCisJIHJvcgl3OSx3OSwjMzEKKwkgZW9yCXcxMCx3MTAsdzEyCisJZW9yCXcyNSx3MjIsdzIwCisJcm9yCXcyNyx3MjQsIzI3CisJYWRkCXcyMix3MjIsdzI4CQkvLyBmdXR1cmUgZSs9SworCSBlb3IJdzEwLHcxMCx3MTkKKwllb3IJdzI1LHcyNSx3MjEKKwlhZGQJdzIzLHcyMyx3MjcJCS8vIGUrPXJvdChhLDUpCisJcm9yCXcyMCx3MjAsIzIKKwkgZW9yCXcxMCx3MTAsdzcKKwlhZGQJdzIyLHcyMix3OQkvLyBmdXR1cmUgZSs9WFtpXQorCWFkZAl3MjMsdzIzLHcyNQkJLy8gZSs9RihiLGMsZCkKKwkgcm9yCXcxMCx3MTAsIzMxCisJIGVvcgl3MTEsdzExLHcxMworCWVvcgl3MjUsdzIxLHcyNAorCXJvcgl3MjcsdzIzLCMyNworCWFkZAl3MjEsdzIxLHcyOAkJLy8gZnV0dXJlIGUrPUsKKwkgZW9yCXcxMSx3MTEsdzMKKwllb3IJdzI1LHcyNSx3MjAKKwlhZGQJdzIyLHcyMix3MjcJCS8vIGUrPXJvdChhLDUpCisJcm9yCXcyNCx3MjQsIzIKKwkgZW9yCXcxMSx3MTEsdzgKKwlhZGQJdzIxLHcyMSx3MTAJLy8gZnV0dXJlIGUrPVhbaV0KKwlhZGQJdzIyLHcyMix3MjUJCS8vIGUrPUYoYixjLGQpCisJIHJvcgl3MTEsdzExLCMzMQorCSBlb3IJdzEyLHcxMix3MTQKKwllb3IJdzI1LHcyMCx3MjMKKwlyb3IJdzI3LHcyMiwjMjcKKwlhZGQJdzIwLHcyMCx3MjgJCS8vIGZ1dHVyZSBlKz1LCisJIGVvcgl3MTIsdzEyLHc0CisJZW9yCXcyNSx3MjUsdzI0CisJYWRkCXcyMSx3MjEsdzI3CQkvLyBlKz1yb3QoYSw1KQorCXJvcgl3MjMsdzIzLCMyCisJIGVvcgl3MTIsdzEyLHc5CisJYWRkCXcyMCx3MjAsdzExCS8vIGZ1dHVyZSBlKz1YW2ldCisJYWRkCXcyMSx3MjEsdzI1CQkvLyBlKz1GKGIsYyxkKQorCSByb3IJdzEyLHcxMiwjMzEKKwkgZW9yCXcxMyx3MTMsdzE1CisJZW9yCXcyNSx3MjQsdzIyCisJcm9yCXcyNyx3MjEsIzI3CisJYWRkCXcyNCx3MjQsdzI4CQkvLyBmdXR1cmUgZSs9SworCSBlb3IJdzEzLHcxMyx3NQorCWVvcgl3MjUsdzI1LHcyMworCWFkZAl3MjAsdzIwLHcyNwkJLy8gZSs9cm90KGEsNSkKKwlyb3IJdzIyLHcyMiwjMgorCSBlb3IJdzEzLHcxMyx3MTAKKwlhZGQJdzI0LHcyNCx3MTIJLy8gZnV0dXJlIGUrPVhbaV0KKwlhZGQJdzIwLHcyMCx3MjUJCS8vIGUrPUYoYixjLGQpCisJIHJvcgl3MTMsdzEzLCMzMQorCSBlb3IJdzE0LHcxNCx3MTYKKwllb3IJdzI1LHcyMyx3MjEKKwlyb3IJdzI3LHcyMCwjMjcKKwlhZGQJdzIzLHcyMyx3MjgJCS8vIGZ1dHVyZSBlKz1LCisJIGVvcgl3MTQsdzE0LHc2CisJZW9yCXcyNSx3MjUsdzIyCisJYWRkCXcyNCx3MjQsdzI3CQkvLyBlKz1yb3QoYSw1KQorCXJvcgl3MjEsdzIxLCMyCisJIGVvcgl3MTQsdzE0LHcxMQorCWFkZAl3MjMsdzIzLHcxMwkvLyBmdXR1cmUgZSs9WFtpXQorCWFkZAl3MjQsdzI0LHcyNQkJLy8gZSs9RihiLGMsZCkKKwkgcm9yCXcxNCx3MTQsIzMxCisJIGVvcgl3MTUsdzE1LHcxNworCWVvcgl3MjUsdzIyLHcyMAorCXJvcgl3MjcsdzI0LCMyNworCWFkZAl3MjIsdzIyLHcyOAkJLy8gZnV0dXJlIGUrPUsKKwkgZW9yCXcxNSx3MTUsdzcKKwllb3IJdzI1LHcyNSx3MjEKKwlhZGQJdzIzLHcyMyx3MjcJCS8vIGUrPXJvdChhLDUpCisJcm9yCXcyMCx3MjAsIzIKKwkgZW9yCXcxNSx3MTUsdzEyCisJYWRkCXcyMix3MjIsdzE0CS8vIGZ1dHVyZSBlKz1YW2ldCisJYWRkCXcyMyx3MjMsdzI1CQkvLyBlKz1GKGIsYyxkKQorCSByb3IJdzE1LHcxNSwjMzEKKwkgZW9yCXcxNix3MTYsdzE5CisJZW9yCXcyNSx3MjEsdzI0CisJcm9yCXcyNyx3MjMsIzI3CisJYWRkCXcyMSx3MjEsdzI4CQkvLyBmdXR1cmUgZSs9SworCSBlb3IJdzE2LHcxNix3OAorCWVvcgl3MjUsdzI1LHcyMAorCWFkZAl3MjIsdzIyLHcyNwkJLy8gZSs9cm90KGEsNSkKKwlyb3IJdzI0LHcyNCwjMgorCSBlb3IJdzE2LHcxNix3MTMKKwlhZGQJdzIxLHcyMSx3MTUJLy8gZnV0dXJlIGUrPVhbaV0KKwlhZGQJdzIyLHcyMix3MjUJCS8vIGUrPUYoYixjLGQpCisJIHJvcgl3MTYsdzE2LCMzMQorCSBlb3IJdzE3LHcxNyx3MworCWVvcgl3MjUsdzIwLHcyMworCXJvcgl3MjcsdzIyLCMyNworCWFkZAl3MjAsdzIwLHcyOAkJLy8gZnV0dXJlIGUrPUsKKwkgZW9yCXcxNyx3MTcsdzkKKwllb3IJdzI1LHcyNSx3MjQKKwlhZGQJdzIxLHcyMSx3MjcJCS8vIGUrPXJvdChhLDUpCisJcm9yCXcyMyx3MjMsIzIKKwkgZW9yCXcxNyx3MTcsdzE0CisJYWRkCXcyMCx3MjAsdzE2CS8vIGZ1dHVyZSBlKz1YW2ldCisJYWRkCXcyMSx3MjEsdzI1CQkvLyBlKz1GKGIsYyxkKQorCSByb3IJdzE3LHcxNywjMzEKKwkgZW9yCXcxOSx3MTksdzQKKwllb3IJdzI1LHcyNCx3MjIKKwlyb3IJdzI3LHcyMSwjMjcKKwlhZGQJdzI0LHcyNCx3MjgJCS8vIGZ1dHVyZSBlKz1LCisJIGVvcgl3MTksdzE5LHcxMAorCWVvcgl3MjUsdzI1LHcyMworCWFkZAl3MjAsdzIwLHcyNwkJLy8gZSs9cm90KGEsNSkKKwlyb3IJdzIyLHcyMiwjMgorCSBlb3IJdzE5LHcxOSx3MTUKKwlhZGQJdzI0LHcyNCx3MTcJLy8gZnV0dXJlIGUrPVhbaV0KKwlhZGQJdzIwLHcyMCx3MjUJCS8vIGUrPUYoYixjLGQpCisJIHJvcgl3MTksdzE5LCMzMQorCSBlb3IJdzMsdzMsdzUKKwllb3IJdzI1LHcyMyx3MjEKKwlyb3IJdzI3LHcyMCwjMjcKKwlhZGQJdzIzLHcyMyx3MjgJCS8vIGZ1dHVyZSBlKz1LCisJIGVvcgl3Myx3Myx3MTEKKwllb3IJdzI1LHcyNSx3MjIKKwlhZGQJdzI0LHcyNCx3MjcJCS8vIGUrPXJvdChhLDUpCisJcm9yCXcyMSx3MjEsIzIKKwkgZW9yCXczLHczLHcxNgorCWFkZAl3MjMsdzIzLHcxOQkvLyBmdXR1cmUgZSs9WFtpXQorCWFkZAl3MjQsdzI0LHcyNQkJLy8gZSs9RihiLGMsZCkKKwkgcm9yCXczLHczLCMzMQorCSBlb3IJdzQsdzQsdzYKKwllb3IJdzI1LHcyMix3MjAKKwlyb3IJdzI3LHcyNCwjMjcKKwlhZGQJdzIyLHcyMix3MjgJCS8vIGZ1dHVyZSBlKz1LCisJIGVvcgl3NCx3NCx3MTIKKwllb3IJdzI1LHcyNSx3MjEKKwlhZGQJdzIzLHcyMyx3MjcJCS8vIGUrPXJvdChhLDUpCisJcm9yCXcyMCx3MjAsIzIKKwkgZW9yCXc0LHc0LHcxNworCWFkZAl3MjIsdzIyLHczCS8vIGZ1dHVyZSBlKz1YW2ldCisJYWRkCXcyMyx3MjMsdzI1CQkvLyBlKz1GKGIsYyxkKQorCSByb3IJdzQsdzQsIzMxCisJIGVvcgl3NSx3NSx3NworCWVvcgl3MjUsdzIxLHcyNAorCXJvcgl3MjcsdzIzLCMyNworCWFkZAl3MjEsdzIxLHcyOAkJLy8gZnV0dXJlIGUrPUsKKwkgZW9yCXc1LHc1LHcxMworCWVvcgl3MjUsdzI1LHcyMAorCWFkZAl3MjIsdzIyLHcyNwkJLy8gZSs9cm90KGEsNSkKKwlyb3IJdzI0LHcyNCwjMgorCSBlb3IJdzUsdzUsdzE5CisJYWRkCXcyMSx3MjEsdzQJLy8gZnV0dXJlIGUrPVhbaV0KKwlhZGQJdzIyLHcyMix3MjUJCS8vIGUrPUYoYixjLGQpCisJIHJvcgl3NSx3NSwjMzEKKwkgZW9yCXc2LHc2LHc4CisJZW9yCXcyNSx3MjAsdzIzCisJcm9yCXcyNyx3MjIsIzI3CisJYWRkCXcyMCx3MjAsdzI4CQkvLyBmdXR1cmUgZSs9SworCSBlb3IJdzYsdzYsdzE0CisJZW9yCXcyNSx3MjUsdzI0CisJYWRkCXcyMSx3MjEsdzI3CQkvLyBlKz1yb3QoYSw1KQorCXJvcgl3MjMsdzIzLCMyCisJIGVvcgl3Nix3Nix3MworCWFkZAl3MjAsdzIwLHc1CS8vIGZ1dHVyZSBlKz1YW2ldCisJYWRkCXcyMSx3MjEsdzI1CQkvLyBlKz1GKGIsYyxkKQorCSByb3IJdzYsdzYsIzMxCisJIGVvcgl3Nyx3Nyx3OQorCWVvcgl3MjUsdzI0LHcyMgorCXJvcgl3MjcsdzIxLCMyNworCWFkZAl3MjQsdzI0LHcyOAkJLy8gZnV0dXJlIGUrPUsKKwkgZW9yCXc3LHc3LHcxNQorCWVvcgl3MjUsdzI1LHcyMworCWFkZAl3MjAsdzIwLHcyNwkJLy8gZSs9cm90KGEsNSkKKwlyb3IJdzIyLHcyMiwjMgorCSBlb3IJdzcsdzcsdzQKKwlhZGQJdzI0LHcyNCx3NgkvLyBmdXR1cmUgZSs9WFtpXQorCWFkZAl3MjAsdzIwLHcyNQkJLy8gZSs9RihiLGMsZCkKKwkgcm9yCXc3LHc3LCMzMQorCSBlb3IJdzgsdzgsdzEwCisJZW9yCXcyNSx3MjMsdzIxCisJcm9yCXcyNyx3MjAsIzI3CisJYWRkCXcyMyx3MjMsdzI4CQkvLyBmdXR1cmUgZSs9SworCSBlb3IJdzgsdzgsdzE2CisJZW9yCXcyNSx3MjUsdzIyCisJYWRkCXcyNCx3MjQsdzI3CQkvLyBlKz1yb3QoYSw1KQorCXJvcgl3MjEsdzIxLCMyCisJIGVvcgl3OCx3OCx3NQorCWFkZAl3MjMsdzIzLHc3CS8vIGZ1dHVyZSBlKz1YW2ldCisJYWRkCXcyNCx3MjQsdzI1CQkvLyBlKz1GKGIsYyxkKQorCSByb3IJdzgsdzgsIzMxCisJIGVvcgl3OSx3OSx3MTEKKwllb3IJdzI1LHcyMix3MjAKKwlyb3IJdzI3LHcyNCwjMjcKKwlhZGQJdzIyLHcyMix3MjgJCS8vIGZ1dHVyZSBlKz1LCisJIGVvcgl3OSx3OSx3MTcKKwllb3IJdzI1LHcyNSx3MjEKKwlhZGQJdzIzLHcyMyx3MjcJCS8vIGUrPXJvdChhLDUpCisJcm9yCXcyMCx3MjAsIzIKKwkgZW9yCXc5LHc5LHc2CisJYWRkCXcyMix3MjIsdzgJLy8gZnV0dXJlIGUrPVhbaV0KKwlhZGQJdzIzLHcyMyx3MjUJCS8vIGUrPUYoYixjLGQpCisJIHJvcgl3OSx3OSwjMzEKKwkgZW9yCXcxMCx3MTAsdzEyCisJZW9yCXcyNSx3MjEsdzI0CisJcm9yCXcyNyx3MjMsIzI3CisJYWRkCXcyMSx3MjEsdzI4CQkvLyBmdXR1cmUgZSs9SworCSBlb3IJdzEwLHcxMCx3MTkKKwllb3IJdzI1LHcyNSx3MjAKKwlhZGQJdzIyLHcyMix3MjcJCS8vIGUrPXJvdChhLDUpCisJcm9yCXcyNCx3MjQsIzIKKwkgZW9yCXcxMCx3MTAsdzcKKwlhZGQJdzIxLHcyMSx3OQkvLyBmdXR1cmUgZSs9WFtpXQorCWFkZAl3MjIsdzIyLHcyNQkJLy8gZSs9RihiLGMsZCkKKwkgcm9yCXcxMCx3MTAsIzMxCisJIGVvcgl3MTEsdzExLHcxMworCWVvcgl3MjUsdzIwLHcyMworCXJvcgl3MjcsdzIyLCMyNworCWFkZAl3MjAsdzIwLHcyOAkJLy8gZnV0dXJlIGUrPUsKKwkgZW9yCXcxMSx3MTEsdzMKKwllb3IJdzI1LHcyNSx3MjQKKwlhZGQJdzIxLHcyMSx3MjcJCS8vIGUrPXJvdChhLDUpCisJcm9yCXcyMyx3MjMsIzIKKwkgZW9yCXcxMSx3MTEsdzgKKwlhZGQJdzIwLHcyMCx3MTAJLy8gZnV0dXJlIGUrPVhbaV0KKwlhZGQJdzIxLHcyMSx3MjUJCS8vIGUrPUYoYixjLGQpCisJIHJvcgl3MTEsdzExLCMzMQorCW1vdnoJdzI4LCMweGJjZGMKKwltb3ZrCXcyOCwjMHg4ZjFiLGxzbCMxNgorCSBlb3IJdzEyLHcxMix3MTQKKwllb3IJdzI1LHcyNCx3MjIKKwlyb3IJdzI3LHcyMSwjMjcKKwlhZGQJdzI0LHcyNCx3MjgJCS8vIGZ1dHVyZSBlKz1LCisJIGVvcgl3MTIsdzEyLHc0CisJZW9yCXcyNSx3MjUsdzIzCisJYWRkCXcyMCx3MjAsdzI3CQkvLyBlKz1yb3QoYSw1KQorCXJvcgl3MjIsdzIyLCMyCisJIGVvcgl3MTIsdzEyLHc5CisJYWRkCXcyNCx3MjQsdzExCS8vIGZ1dHVyZSBlKz1YW2ldCisJYWRkCXcyMCx3MjAsdzI1CQkvLyBlKz1GKGIsYyxkKQorCSByb3IJdzEyLHcxMiwjMzEKKwlvcnIJdzI1LHcyMSx3MjIKKwlhbmQJdzI2LHcyMSx3MjIKKwkgZW9yCXcxMyx3MTMsdzE1CisJcm9yCXcyNyx3MjAsIzI3CisJYW5kCXcyNSx3MjUsdzIzCisJYWRkCXcyMyx3MjMsdzI4CQkvLyBmdXR1cmUgZSs9SworCSBlb3IJdzEzLHcxMyx3NQorCWFkZAl3MjQsdzI0LHcyNwkJLy8gZSs9cm90KGEsNSkKKwlvcnIJdzI1LHcyNSx3MjYKKwlyb3IJdzIxLHcyMSwjMgorCSBlb3IJdzEzLHcxMyx3MTAKKwlhZGQJdzIzLHcyMyx3MTIJLy8gZnV0dXJlIGUrPVhbaV0KKwlhZGQJdzI0LHcyNCx3MjUJCS8vIGUrPUYoYixjLGQpCisJIHJvcgl3MTMsdzEzLCMzMQorCW9ycgl3MjUsdzIwLHcyMQorCWFuZAl3MjYsdzIwLHcyMQorCSBlb3IJdzE0LHcxNCx3MTYKKwlyb3IJdzI3LHcyNCwjMjcKKwlhbmQJdzI1LHcyNSx3MjIKKwlhZGQJdzIyLHcyMix3MjgJCS8vIGZ1dHVyZSBlKz1LCisJIGVvcgl3MTQsdzE0LHc2CisJYWRkCXcyMyx3MjMsdzI3CQkvLyBlKz1yb3QoYSw1KQorCW9ycgl3MjUsdzI1LHcyNgorCXJvcgl3MjAsdzIwLCMyCisJIGVvcgl3MTQsdzE0LHcxMQorCWFkZAl3MjIsdzIyLHcxMwkvLyBmdXR1cmUgZSs9WFtpXQorCWFkZAl3MjMsdzIzLHcyNQkJLy8gZSs9RihiLGMsZCkKKwkgcm9yCXcxNCx3MTQsIzMxCisJb3JyCXcyNSx3MjQsdzIwCisJYW5kCXcyNix3MjQsdzIwCisJIGVvcgl3MTUsdzE1LHcxNworCXJvcgl3MjcsdzIzLCMyNworCWFuZAl3MjUsdzI1LHcyMQorCWFkZAl3MjEsdzIxLHcyOAkJLy8gZnV0dXJlIGUrPUsKKwkgZW9yCXcxNSx3MTUsdzcKKwlhZGQJdzIyLHcyMix3MjcJCS8vIGUrPXJvdChhLDUpCisJb3JyCXcyNSx3MjUsdzI2CisJcm9yCXcyNCx3MjQsIzIKKwkgZW9yCXcxNSx3MTUsdzEyCisJYWRkCXcyMSx3MjEsdzE0CS8vIGZ1dHVyZSBlKz1YW2ldCisJYWRkCXcyMix3MjIsdzI1CQkvLyBlKz1GKGIsYyxkKQorCSByb3IJdzE1LHcxNSwjMzEKKwlvcnIJdzI1LHcyMyx3MjQKKwlhbmQJdzI2LHcyMyx3MjQKKwkgZW9yCXcxNix3MTYsdzE5CisJcm9yCXcyNyx3MjIsIzI3CisJYW5kCXcyNSx3MjUsdzIwCisJYWRkCXcyMCx3MjAsdzI4CQkvLyBmdXR1cmUgZSs9SworCSBlb3IJdzE2LHcxNix3OAorCWFkZAl3MjEsdzIxLHcyNwkJLy8gZSs9cm90KGEsNSkKKwlvcnIJdzI1LHcyNSx3MjYKKwlyb3IJdzIzLHcyMywjMgorCSBlb3IJdzE2LHcxNix3MTMKKwlhZGQJdzIwLHcyMCx3MTUJLy8gZnV0dXJlIGUrPVhbaV0KKwlhZGQJdzIxLHcyMSx3MjUJCS8vIGUrPUYoYixjLGQpCisJIHJvcgl3MTYsdzE2LCMzMQorCW9ycgl3MjUsdzIyLHcyMworCWFuZAl3MjYsdzIyLHcyMworCSBlb3IJdzE3LHcxNyx3MworCXJvcgl3MjcsdzIxLCMyNworCWFuZAl3MjUsdzI1LHcyNAorCWFkZAl3MjQsdzI0LHcyOAkJLy8gZnV0dXJlIGUrPUsKKwkgZW9yCXcxNyx3MTcsdzkKKwlhZGQJdzIwLHcyMCx3MjcJCS8vIGUrPXJvdChhLDUpCisJb3JyCXcyNSx3MjUsdzI2CisJcm9yCXcyMix3MjIsIzIKKwkgZW9yCXcxNyx3MTcsdzE0CisJYWRkCXcyNCx3MjQsdzE2CS8vIGZ1dHVyZSBlKz1YW2ldCisJYWRkCXcyMCx3MjAsdzI1CQkvLyBlKz1GKGIsYyxkKQorCSByb3IJdzE3LHcxNywjMzEKKwlvcnIJdzI1LHcyMSx3MjIKKwlhbmQJdzI2LHcyMSx3MjIKKwkgZW9yCXcxOSx3MTksdzQKKwlyb3IJdzI3LHcyMCwjMjcKKwlhbmQJdzI1LHcyNSx3MjMKKwlhZGQJdzIzLHcyMyx3MjgJCS8vIGZ1dHVyZSBlKz1LCisJIGVvcgl3MTksdzE5LHcxMAorCWFkZAl3MjQsdzI0LHcyNwkJLy8gZSs9cm90KGEsNSkKKwlvcnIJdzI1LHcyNSx3MjYKKwlyb3IJdzIxLHcyMSwjMgorCSBlb3IJdzE5LHcxOSx3MTUKKwlhZGQJdzIzLHcyMyx3MTcJLy8gZnV0dXJlIGUrPVhbaV0KKwlhZGQJdzI0LHcyNCx3MjUJCS8vIGUrPUYoYixjLGQpCisJIHJvcgl3MTksdzE5LCMzMQorCW9ycgl3MjUsdzIwLHcyMQorCWFuZAl3MjYsdzIwLHcyMQorCSBlb3IJdzMsdzMsdzUKKwlyb3IJdzI3LHcyNCwjMjcKKwlhbmQJdzI1LHcyNSx3MjIKKwlhZGQJdzIyLHcyMix3MjgJCS8vIGZ1dHVyZSBlKz1LCisJIGVvcgl3Myx3Myx3MTEKKwlhZGQJdzIzLHcyMyx3MjcJCS8vIGUrPXJvdChhLDUpCisJb3JyCXcyNSx3MjUsdzI2CisJcm9yCXcyMCx3MjAsIzIKKwkgZW9yCXczLHczLHcxNgorCWFkZAl3MjIsdzIyLHcxOQkvLyBmdXR1cmUgZSs9WFtpXQorCWFkZAl3MjMsdzIzLHcyNQkJLy8gZSs9RihiLGMsZCkKKwkgcm9yCXczLHczLCMzMQorCW9ycgl3MjUsdzI0LHcyMAorCWFuZAl3MjYsdzI0LHcyMAorCSBlb3IJdzQsdzQsdzYKKwlyb3IJdzI3LHcyMywjMjcKKwlhbmQJdzI1LHcyNSx3MjEKKwlhZGQJdzIxLHcyMSx3MjgJCS8vIGZ1dHVyZSBlKz1LCisJIGVvcgl3NCx3NCx3MTIKKwlhZGQJdzIyLHcyMix3MjcJCS8vIGUrPXJvdChhLDUpCisJb3JyCXcyNSx3MjUsdzI2CisJcm9yCXcyNCx3MjQsIzIKKwkgZW9yCXc0LHc0LHcxNworCWFkZAl3MjEsdzIxLHczCS8vIGZ1dHVyZSBlKz1YW2ldCisJYWRkCXcyMix3MjIsdzI1CQkvLyBlKz1GKGIsYyxkKQorCSByb3IJdzQsdzQsIzMxCisJb3JyCXcyNSx3MjMsdzI0CisJYW5kCXcyNix3MjMsdzI0CisJIGVvcgl3NSx3NSx3NworCXJvcgl3MjcsdzIyLCMyNworCWFuZAl3MjUsdzI1LHcyMAorCWFkZAl3MjAsdzIwLHcyOAkJLy8gZnV0dXJlIGUrPUsKKwkgZW9yCXc1LHc1LHcxMworCWFkZAl3MjEsdzIxLHcyNwkJLy8gZSs9cm90KGEsNSkKKwlvcnIJdzI1LHcyNSx3MjYKKwlyb3IJdzIzLHcyMywjMgorCSBlb3IJdzUsdzUsdzE5CisJYWRkCXcyMCx3MjAsdzQJLy8gZnV0dXJlIGUrPVhbaV0KKwlhZGQJdzIxLHcyMSx3MjUJCS8vIGUrPUYoYixjLGQpCisJIHJvcgl3NSx3NSwjMzEKKwlvcnIJdzI1LHcyMix3MjMKKwlhbmQJdzI2LHcyMix3MjMKKwkgZW9yCXc2LHc2LHc4CisJcm9yCXcyNyx3MjEsIzI3CisJYW5kCXcyNSx3MjUsdzI0CisJYWRkCXcyNCx3MjQsdzI4CQkvLyBmdXR1cmUgZSs9SworCSBlb3IJdzYsdzYsdzE0CisJYWRkCXcyMCx3MjAsdzI3CQkvLyBlKz1yb3QoYSw1KQorCW9ycgl3MjUsdzI1LHcyNgorCXJvcgl3MjIsdzIyLCMyCisJIGVvcgl3Nix3Nix3MworCWFkZAl3MjQsdzI0LHc1CS8vIGZ1dHVyZSBlKz1YW2ldCisJYWRkCXcyMCx3MjAsdzI1CQkvLyBlKz1GKGIsYyxkKQorCSByb3IJdzYsdzYsIzMxCisJb3JyCXcyNSx3MjEsdzIyCisJYW5kCXcyNix3MjEsdzIyCisJIGVvcgl3Nyx3Nyx3OQorCXJvcgl3MjcsdzIwLCMyNworCWFuZAl3MjUsdzI1LHcyMworCWFkZAl3MjMsdzIzLHcyOAkJLy8gZnV0dXJlIGUrPUsKKwkgZW9yCXc3LHc3LHcxNQorCWFkZAl3MjQsdzI0LHcyNwkJLy8gZSs9cm90KGEsNSkKKwlvcnIJdzI1LHcyNSx3MjYKKwlyb3IJdzIxLHcyMSwjMgorCSBlb3IJdzcsdzcsdzQKKwlhZGQJdzIzLHcyMyx3NgkvLyBmdXR1cmUgZSs9WFtpXQorCWFkZAl3MjQsdzI0LHcyNQkJLy8gZSs9RihiLGMsZCkKKwkgcm9yCXc3LHc3LCMzMQorCW9ycgl3MjUsdzIwLHcyMQorCWFuZAl3MjYsdzIwLHcyMQorCSBlb3IJdzgsdzgsdzEwCisJcm9yCXcyNyx3MjQsIzI3CisJYW5kCXcyNSx3MjUsdzIyCisJYWRkCXcyMix3MjIsdzI4CQkvLyBmdXR1cmUgZSs9SworCSBlb3IJdzgsdzgsdzE2CisJYWRkCXcyMyx3MjMsdzI3CQkvLyBlKz1yb3QoYSw1KQorCW9ycgl3MjUsdzI1LHcyNgorCXJvcgl3MjAsdzIwLCMyCisJIGVvcgl3OCx3OCx3NQorCWFkZAl3MjIsdzIyLHc3CS8vIGZ1dHVyZSBlKz1YW2ldCisJYWRkCXcyMyx3MjMsdzI1CQkvLyBlKz1GKGIsYyxkKQorCSByb3IJdzgsdzgsIzMxCisJb3JyCXcyNSx3MjQsdzIwCisJYW5kCXcyNix3MjQsdzIwCisJIGVvcgl3OSx3OSx3MTEKKwlyb3IJdzI3LHcyMywjMjcKKwlhbmQJdzI1LHcyNSx3MjEKKwlhZGQJdzIxLHcyMSx3MjgJCS8vIGZ1dHVyZSBlKz1LCisJIGVvcgl3OSx3OSx3MTcKKwlhZGQJdzIyLHcyMix3MjcJCS8vIGUrPXJvdChhLDUpCisJb3JyCXcyNSx3MjUsdzI2CisJcm9yCXcyNCx3MjQsIzIKKwkgZW9yCXc5LHc5LHc2CisJYWRkCXcyMSx3MjEsdzgJLy8gZnV0dXJlIGUrPVhbaV0KKwlhZGQJdzIyLHcyMix3MjUJCS8vIGUrPUYoYixjLGQpCisJIHJvcgl3OSx3OSwjMzEKKwlvcnIJdzI1LHcyMyx3MjQKKwlhbmQJdzI2LHcyMyx3MjQKKwkgZW9yCXcxMCx3MTAsdzEyCisJcm9yCXcyNyx3MjIsIzI3CisJYW5kCXcyNSx3MjUsdzIwCisJYWRkCXcyMCx3MjAsdzI4CQkvLyBmdXR1cmUgZSs9SworCSBlb3IJdzEwLHcxMCx3MTkKKwlhZGQJdzIxLHcyMSx3MjcJCS8vIGUrPXJvdChhLDUpCisJb3JyCXcyNSx3MjUsdzI2CisJcm9yCXcyMyx3MjMsIzIKKwkgZW9yCXcxMCx3MTAsdzcKKwlhZGQJdzIwLHcyMCx3OQkvLyBmdXR1cmUgZSs9WFtpXQorCWFkZAl3MjEsdzIxLHcyNQkJLy8gZSs9RihiLGMsZCkKKwkgcm9yCXcxMCx3MTAsIzMxCisJb3JyCXcyNSx3MjIsdzIzCisJYW5kCXcyNix3MjIsdzIzCisJIGVvcgl3MTEsdzExLHcxMworCXJvcgl3MjcsdzIxLCMyNworCWFuZAl3MjUsdzI1LHcyNAorCWFkZAl3MjQsdzI0LHcyOAkJLy8gZnV0dXJlIGUrPUsKKwkgZW9yCXcxMSx3MTEsdzMKKwlhZGQJdzIwLHcyMCx3MjcJCS8vIGUrPXJvdChhLDUpCisJb3JyCXcyNSx3MjUsdzI2CisJcm9yCXcyMix3MjIsIzIKKwkgZW9yCXcxMSx3MTEsdzgKKwlhZGQJdzI0LHcyNCx3MTAJLy8gZnV0dXJlIGUrPVhbaV0KKwlhZGQJdzIwLHcyMCx3MjUJCS8vIGUrPUYoYixjLGQpCisJIHJvcgl3MTEsdzExLCMzMQorCW9ycgl3MjUsdzIxLHcyMgorCWFuZAl3MjYsdzIxLHcyMgorCSBlb3IJdzEyLHcxMix3MTQKKwlyb3IJdzI3LHcyMCwjMjcKKwlhbmQJdzI1LHcyNSx3MjMKKwlhZGQJdzIzLHcyMyx3MjgJCS8vIGZ1dHVyZSBlKz1LCisJIGVvcgl3MTIsdzEyLHc0CisJYWRkCXcyNCx3MjQsdzI3CQkvLyBlKz1yb3QoYSw1KQorCW9ycgl3MjUsdzI1LHcyNgorCXJvcgl3MjEsdzIxLCMyCisJIGVvcgl3MTIsdzEyLHc5CisJYWRkCXcyMyx3MjMsdzExCS8vIGZ1dHVyZSBlKz1YW2ldCisJYWRkCXcyNCx3MjQsdzI1CQkvLyBlKz1GKGIsYyxkKQorCSByb3IJdzEyLHcxMiwjMzEKKwlvcnIJdzI1LHcyMCx3MjEKKwlhbmQJdzI2LHcyMCx3MjEKKwkgZW9yCXcxMyx3MTMsdzE1CisJcm9yCXcyNyx3MjQsIzI3CisJYW5kCXcyNSx3MjUsdzIyCisJYWRkCXcyMix3MjIsdzI4CQkvLyBmdXR1cmUgZSs9SworCSBlb3IJdzEzLHcxMyx3NQorCWFkZAl3MjMsdzIzLHcyNwkJLy8gZSs9cm90KGEsNSkKKwlvcnIJdzI1LHcyNSx3MjYKKwlyb3IJdzIwLHcyMCwjMgorCSBlb3IJdzEzLHcxMyx3MTAKKwlhZGQJdzIyLHcyMix3MTIJLy8gZnV0dXJlIGUrPVhbaV0KKwlhZGQJdzIzLHcyMyx3MjUJCS8vIGUrPUYoYixjLGQpCisJIHJvcgl3MTMsdzEzLCMzMQorCW9ycgl3MjUsdzI0LHcyMAorCWFuZAl3MjYsdzI0LHcyMAorCSBlb3IJdzE0LHcxNCx3MTYKKwlyb3IJdzI3LHcyMywjMjcKKwlhbmQJdzI1LHcyNSx3MjEKKwlhZGQJdzIxLHcyMSx3MjgJCS8vIGZ1dHVyZSBlKz1LCisJIGVvcgl3MTQsdzE0LHc2CisJYWRkCXcyMix3MjIsdzI3CQkvLyBlKz1yb3QoYSw1KQorCW9ycgl3MjUsdzI1LHcyNgorCXJvcgl3MjQsdzI0LCMyCisJIGVvcgl3MTQsdzE0LHcxMQorCWFkZAl3MjEsdzIxLHcxMwkvLyBmdXR1cmUgZSs9WFtpXQorCWFkZAl3MjIsdzIyLHcyNQkJLy8gZSs9RihiLGMsZCkKKwkgcm9yCXcxNCx3MTQsIzMxCisJb3JyCXcyNSx3MjMsdzI0CisJYW5kCXcyNix3MjMsdzI0CisJIGVvcgl3MTUsdzE1LHcxNworCXJvcgl3MjcsdzIyLCMyNworCWFuZAl3MjUsdzI1LHcyMAorCWFkZAl3MjAsdzIwLHcyOAkJLy8gZnV0dXJlIGUrPUsKKwkgZW9yCXcxNSx3MTUsdzcKKwlhZGQJdzIxLHcyMSx3MjcJCS8vIGUrPXJvdChhLDUpCisJb3JyCXcyNSx3MjUsdzI2CisJcm9yCXcyMyx3MjMsIzIKKwkgZW9yCXcxNSx3MTUsdzEyCisJYWRkCXcyMCx3MjAsdzE0CS8vIGZ1dHVyZSBlKz1YW2ldCisJYWRkCXcyMSx3MjEsdzI1CQkvLyBlKz1GKGIsYyxkKQorCSByb3IJdzE1LHcxNSwjMzEKKwltb3Z6CXcyOCwjMHhjMWQ2CisJbW92awl3MjgsIzB4Y2E2Mixsc2wjMTYKKwlvcnIJdzI1LHcyMix3MjMKKwlhbmQJdzI2LHcyMix3MjMKKwkgZW9yCXcxNix3MTYsdzE5CisJcm9yCXcyNyx3MjEsIzI3CisJYW5kCXcyNSx3MjUsdzI0CisJYWRkCXcyNCx3MjQsdzI4CQkvLyBmdXR1cmUgZSs9SworCSBlb3IJdzE2LHcxNix3OAorCWFkZAl3MjAsdzIwLHcyNwkJLy8gZSs9cm90KGEsNSkKKwlvcnIJdzI1LHcyNSx3MjYKKwlyb3IJdzIyLHcyMiwjMgorCSBlb3IJdzE2LHcxNix3MTMKKwlhZGQJdzI0LHcyNCx3MTUJLy8gZnV0dXJlIGUrPVhbaV0KKwlhZGQJdzIwLHcyMCx3MjUJCS8vIGUrPUYoYixjLGQpCisJIHJvcgl3MTYsdzE2LCMzMQorCSBlb3IJdzE3LHcxNyx3MworCWVvcgl3MjUsdzIzLHcyMQorCXJvcgl3MjcsdzIwLCMyNworCWFkZAl3MjMsdzIzLHcyOAkJLy8gZnV0dXJlIGUrPUsKKwkgZW9yCXcxNyx3MTcsdzkKKwllb3IJdzI1LHcyNSx3MjIKKwlhZGQJdzI0LHcyNCx3MjcJCS8vIGUrPXJvdChhLDUpCisJcm9yCXcyMSx3MjEsIzIKKwkgZW9yCXcxNyx3MTcsdzE0CisJYWRkCXcyMyx3MjMsdzE2CS8vIGZ1dHVyZSBlKz1YW2ldCisJYWRkCXcyNCx3MjQsdzI1CQkvLyBlKz1GKGIsYyxkKQorCSByb3IJdzE3LHcxNywjMzEKKwkgZW9yCXcxOSx3MTksdzQKKwllb3IJdzI1LHcyMix3MjAKKwlyb3IJdzI3LHcyNCwjMjcKKwlhZGQJdzIyLHcyMix3MjgJCS8vIGZ1dHVyZSBlKz1LCisJIGVvcgl3MTksdzE5LHcxMAorCWVvcgl3MjUsdzI1LHcyMQorCWFkZAl3MjMsdzIzLHcyNwkJLy8gZSs9cm90KGEsNSkKKwlyb3IJdzIwLHcyMCwjMgorCSBlb3IJdzE5LHcxOSx3MTUKKwlhZGQJdzIyLHcyMix3MTcJLy8gZnV0dXJlIGUrPVhbaV0KKwlhZGQJdzIzLHcyMyx3MjUJCS8vIGUrPUYoYixjLGQpCisJIHJvcgl3MTksdzE5LCMzMQorCSBlb3IJdzMsdzMsdzUKKwllb3IJdzI1LHcyMSx3MjQKKwlyb3IJdzI3LHcyMywjMjcKKwlhZGQJdzIxLHcyMSx3MjgJCS8vIGZ1dHVyZSBlKz1LCisJIGVvcgl3Myx3Myx3MTEKKwllb3IJdzI1LHcyNSx3MjAKKwlhZGQJdzIyLHcyMix3MjcJCS8vIGUrPXJvdChhLDUpCisJcm9yCXcyNCx3MjQsIzIKKwkgZW9yCXczLHczLHcxNgorCWFkZAl3MjEsdzIxLHcxOQkvLyBmdXR1cmUgZSs9WFtpXQorCWFkZAl3MjIsdzIyLHcyNQkJLy8gZSs9RihiLGMsZCkKKwkgcm9yCXczLHczLCMzMQorCSBlb3IJdzQsdzQsdzYKKwllb3IJdzI1LHcyMCx3MjMKKwlyb3IJdzI3LHcyMiwjMjcKKwlhZGQJdzIwLHcyMCx3MjgJCS8vIGZ1dHVyZSBlKz1LCisJIGVvcgl3NCx3NCx3MTIKKwllb3IJdzI1LHcyNSx3MjQKKwlhZGQJdzIxLHcyMSx3MjcJCS8vIGUrPXJvdChhLDUpCisJcm9yCXcyMyx3MjMsIzIKKwkgZW9yCXc0LHc0LHcxNworCWFkZAl3MjAsdzIwLHczCS8vIGZ1dHVyZSBlKz1YW2ldCisJYWRkCXcyMSx3MjEsdzI1CQkvLyBlKz1GKGIsYyxkKQorCSByb3IJdzQsdzQsIzMxCisJIGVvcgl3NSx3NSx3NworCWVvcgl3MjUsdzI0LHcyMgorCXJvcgl3MjcsdzIxLCMyNworCWFkZAl3MjQsdzI0LHcyOAkJLy8gZnV0dXJlIGUrPUsKKwkgZW9yCXc1LHc1LHcxMworCWVvcgl3MjUsdzI1LHcyMworCWFkZAl3MjAsdzIwLHcyNwkJLy8gZSs9cm90KGEsNSkKKwlyb3IJdzIyLHcyMiwjMgorCSBlb3IJdzUsdzUsdzE5CisJYWRkCXcyNCx3MjQsdzQJLy8gZnV0dXJlIGUrPVhbaV0KKwlhZGQJdzIwLHcyMCx3MjUJCS8vIGUrPUYoYixjLGQpCisJIHJvcgl3NSx3NSwjMzEKKwkgZW9yCXc2LHc2LHc4CisJZW9yCXcyNSx3MjMsdzIxCisJcm9yCXcyNyx3MjAsIzI3CisJYWRkCXcyMyx3MjMsdzI4CQkvLyBmdXR1cmUgZSs9SworCSBlb3IJdzYsdzYsdzE0CisJZW9yCXcyNSx3MjUsdzIyCisJYWRkCXcyNCx3MjQsdzI3CQkvLyBlKz1yb3QoYSw1KQorCXJvcgl3MjEsdzIxLCMyCisJIGVvcgl3Nix3Nix3MworCWFkZAl3MjMsdzIzLHc1CS8vIGZ1dHVyZSBlKz1YW2ldCisJYWRkCXcyNCx3MjQsdzI1CQkvLyBlKz1GKGIsYyxkKQorCSByb3IJdzYsdzYsIzMxCisJIGVvcgl3Nyx3Nyx3OQorCWVvcgl3MjUsdzIyLHcyMAorCXJvcgl3MjcsdzI0LCMyNworCWFkZAl3MjIsdzIyLHcyOAkJLy8gZnV0dXJlIGUrPUsKKwkgZW9yCXc3LHc3LHcxNQorCWVvcgl3MjUsdzI1LHcyMQorCWFkZAl3MjMsdzIzLHcyNwkJLy8gZSs9cm90KGEsNSkKKwlyb3IJdzIwLHcyMCwjMgorCSBlb3IJdzcsdzcsdzQKKwlhZGQJdzIyLHcyMix3NgkvLyBmdXR1cmUgZSs9WFtpXQorCWFkZAl3MjMsdzIzLHcyNQkJLy8gZSs9RihiLGMsZCkKKwkgcm9yCXc3LHc3LCMzMQorCSBlb3IJdzgsdzgsdzEwCisJZW9yCXcyNSx3MjEsdzI0CisJcm9yCXcyNyx3MjMsIzI3CisJYWRkCXcyMSx3MjEsdzI4CQkvLyBmdXR1cmUgZSs9SworCSBlb3IJdzgsdzgsdzE2CisJZW9yCXcyNSx3MjUsdzIwCisJYWRkCXcyMix3MjIsdzI3CQkvLyBlKz1yb3QoYSw1KQorCXJvcgl3MjQsdzI0LCMyCisJIGVvcgl3OCx3OCx3NQorCWFkZAl3MjEsdzIxLHc3CS8vIGZ1dHVyZSBlKz1YW2ldCisJYWRkCXcyMix3MjIsdzI1CQkvLyBlKz1GKGIsYyxkKQorCSByb3IJdzgsdzgsIzMxCisJIGVvcgl3OSx3OSx3MTEKKwllb3IJdzI1LHcyMCx3MjMKKwlyb3IJdzI3LHcyMiwjMjcKKwlhZGQJdzIwLHcyMCx3MjgJCS8vIGZ1dHVyZSBlKz1LCisJIGVvcgl3OSx3OSx3MTcKKwllb3IJdzI1LHcyNSx3MjQKKwlhZGQJdzIxLHcyMSx3MjcJCS8vIGUrPXJvdChhLDUpCisJcm9yCXcyMyx3MjMsIzIKKwkgZW9yCXc5LHc5LHc2CisJYWRkCXcyMCx3MjAsdzgJLy8gZnV0dXJlIGUrPVhbaV0KKwlhZGQJdzIxLHcyMSx3MjUJCS8vIGUrPUYoYixjLGQpCisJIHJvcgl3OSx3OSwjMzEKKwkgZW9yCXcxMCx3MTAsdzEyCisJZW9yCXcyNSx3MjQsdzIyCisJcm9yCXcyNyx3MjEsIzI3CisJYWRkCXcyNCx3MjQsdzI4CQkvLyBmdXR1cmUgZSs9SworCSBlb3IJdzEwLHcxMCx3MTkKKwllb3IJdzI1LHcyNSx3MjMKKwlhZGQJdzIwLHcyMCx3MjcJCS8vIGUrPXJvdChhLDUpCisJcm9yCXcyMix3MjIsIzIKKwkgZW9yCXcxMCx3MTAsdzcKKwlhZGQJdzI0LHcyNCx3OQkvLyBmdXR1cmUgZSs9WFtpXQorCWFkZAl3MjAsdzIwLHcyNQkJLy8gZSs9RihiLGMsZCkKKwkgcm9yCXcxMCx3MTAsIzMxCisJIGVvcgl3MTEsdzExLHcxMworCWVvcgl3MjUsdzIzLHcyMQorCXJvcgl3MjcsdzIwLCMyNworCWFkZAl3MjMsdzIzLHcyOAkJLy8gZnV0dXJlIGUrPUsKKwkgZW9yCXcxMSx3MTEsdzMKKwllb3IJdzI1LHcyNSx3MjIKKwlhZGQJdzI0LHcyNCx3MjcJCS8vIGUrPXJvdChhLDUpCisJcm9yCXcyMSx3MjEsIzIKKwkgZW9yCXcxMSx3MTEsdzgKKwlhZGQJdzIzLHcyMyx3MTAJLy8gZnV0dXJlIGUrPVhbaV0KKwlhZGQJdzI0LHcyNCx3MjUJCS8vIGUrPUYoYixjLGQpCisJIHJvcgl3MTEsdzExLCMzMQorCSBlb3IJdzEyLHcxMix3MTQKKwllb3IJdzI1LHcyMix3MjAKKwlyb3IJdzI3LHcyNCwjMjcKKwlhZGQJdzIyLHcyMix3MjgJCS8vIGZ1dHVyZSBlKz1LCisJIGVvcgl3MTIsdzEyLHc0CisJZW9yCXcyNSx3MjUsdzIxCisJYWRkCXcyMyx3MjMsdzI3CQkvLyBlKz1yb3QoYSw1KQorCXJvcgl3MjAsdzIwLCMyCisJIGVvcgl3MTIsdzEyLHc5CisJYWRkCXcyMix3MjIsdzExCS8vIGZ1dHVyZSBlKz1YW2ldCisJYWRkCXcyMyx3MjMsdzI1CQkvLyBlKz1GKGIsYyxkKQorCSByb3IJdzEyLHcxMiwjMzEKKwkgZW9yCXcxMyx3MTMsdzE1CisJZW9yCXcyNSx3MjEsdzI0CisJcm9yCXcyNyx3MjMsIzI3CisJYWRkCXcyMSx3MjEsdzI4CQkvLyBmdXR1cmUgZSs9SworCSBlb3IJdzEzLHcxMyx3NQorCWVvcgl3MjUsdzI1LHcyMAorCWFkZAl3MjIsdzIyLHcyNwkJLy8gZSs9cm90KGEsNSkKKwlyb3IJdzI0LHcyNCwjMgorCSBlb3IJdzEzLHcxMyx3MTAKKwlhZGQJdzIxLHcyMSx3MTIJLy8gZnV0dXJlIGUrPVhbaV0KKwlhZGQJdzIyLHcyMix3MjUJCS8vIGUrPUYoYixjLGQpCisJIHJvcgl3MTMsdzEzLCMzMQorCSBlb3IJdzE0LHcxNCx3MTYKKwllb3IJdzI1LHcyMCx3MjMKKwlyb3IJdzI3LHcyMiwjMjcKKwlhZGQJdzIwLHcyMCx3MjgJCS8vIGZ1dHVyZSBlKz1LCisJIGVvcgl3MTQsdzE0LHc2CisJZW9yCXcyNSx3MjUsdzI0CisJYWRkCXcyMSx3MjEsdzI3CQkvLyBlKz1yb3QoYSw1KQorCXJvcgl3MjMsdzIzLCMyCisJIGVvcgl3MTQsdzE0LHcxMQorCWFkZAl3MjAsdzIwLHcxMwkvLyBmdXR1cmUgZSs9WFtpXQorCWFkZAl3MjEsdzIxLHcyNQkJLy8gZSs9RihiLGMsZCkKKwkgcm9yCXcxNCx3MTQsIzMxCisJIGVvcgl3MTUsdzE1LHcxNworCWVvcgl3MjUsdzI0LHcyMgorCXJvcgl3MjcsdzIxLCMyNworCWFkZAl3MjQsdzI0LHcyOAkJLy8gZnV0dXJlIGUrPUsKKwkgZW9yCXcxNSx3MTUsdzcKKwllb3IJdzI1LHcyNSx3MjMKKwlhZGQJdzIwLHcyMCx3MjcJCS8vIGUrPXJvdChhLDUpCisJcm9yCXcyMix3MjIsIzIKKwkgZW9yCXcxNSx3MTUsdzEyCisJYWRkCXcyNCx3MjQsdzE0CS8vIGZ1dHVyZSBlKz1YW2ldCisJYWRkCXcyMCx3MjAsdzI1CQkvLyBlKz1GKGIsYyxkKQorCSByb3IJdzE1LHcxNSwjMzEKKwkgZW9yCXcxNix3MTYsdzE5CisJZW9yCXcyNSx3MjMsdzIxCisJcm9yCXcyNyx3MjAsIzI3CisJYWRkCXcyMyx3MjMsdzI4CQkvLyBmdXR1cmUgZSs9SworCSBlb3IJdzE2LHcxNix3OAorCWVvcgl3MjUsdzI1LHcyMgorCWFkZAl3MjQsdzI0LHcyNwkJLy8gZSs9cm90KGEsNSkKKwlyb3IJdzIxLHcyMSwjMgorCSBlb3IJdzE2LHcxNix3MTMKKwlhZGQJdzIzLHcyMyx3MTUJLy8gZnV0dXJlIGUrPVhbaV0KKwlhZGQJdzI0LHcyNCx3MjUJCS8vIGUrPUYoYixjLGQpCisJIHJvcgl3MTYsdzE2LCMzMQorCSBlb3IJdzE3LHcxNyx3MworCWVvcgl3MjUsdzIyLHcyMAorCXJvcgl3MjcsdzI0LCMyNworCWFkZAl3MjIsdzIyLHcyOAkJLy8gZnV0dXJlIGUrPUsKKwkgZW9yCXcxNyx3MTcsdzkKKwllb3IJdzI1LHcyNSx3MjEKKwlhZGQJdzIzLHcyMyx3MjcJCS8vIGUrPXJvdChhLDUpCisJcm9yCXcyMCx3MjAsIzIKKwkgZW9yCXcxNyx3MTcsdzE0CisJYWRkCXcyMix3MjIsdzE2CS8vIGZ1dHVyZSBlKz1YW2ldCisJYWRkCXcyMyx3MjMsdzI1CQkvLyBlKz1GKGIsYyxkKQorCSByb3IJdzE3LHcxNywjMzEKKwkgZW9yCXcxOSx3MTksdzQKKwllb3IJdzI1LHcyMSx3MjQKKwlyb3IJdzI3LHcyMywjMjcKKwlhZGQJdzIxLHcyMSx3MjgJCS8vIGZ1dHVyZSBlKz1LCisJIGVvcgl3MTksdzE5LHcxMAorCWVvcgl3MjUsdzI1LHcyMAorCWFkZAl3MjIsdzIyLHcyNwkJLy8gZSs9cm90KGEsNSkKKwlyb3IJdzI0LHcyNCwjMgorCSBlb3IJdzE5LHcxOSx3MTUKKwlhZGQJdzIxLHcyMSx3MTcJLy8gZnV0dXJlIGUrPVhbaV0KKwlhZGQJdzIyLHcyMix3MjUJCS8vIGUrPUYoYixjLGQpCisJIHJvcgl3MTksdzE5LCMzMQorCWxkcAl3NCx3NSxbeDBdCisJZW9yCXcyNSx3MjAsdzIzCisJcm9yCXcyNyx3MjIsIzI3CisJYWRkCXcyMCx3MjAsdzI4CQkvLyBmdXR1cmUgZSs9SworCWVvcgl3MjUsdzI1LHcyNAorCWFkZAl3MjEsdzIxLHcyNwkJLy8gZSs9cm90KGEsNSkKKwlyb3IJdzIzLHcyMywjMgorCWFkZAl3MjAsdzIwLHcxOQkvLyBmdXR1cmUgZSs9WFtpXQorCWFkZAl3MjEsdzIxLHcyNQkJLy8gZSs9RihiLGMsZCkKKwlsZHAJdzYsdzcsW3gwLCM4XQorCWVvcgl3MjUsdzI0LHcyMgorCXJvcgl3MjcsdzIxLCMyNworCWVvcgl3MjUsdzI1LHcyMworCWFkZAl3MjAsdzIwLHcyNwkJLy8gZSs9cm90KGEsNSkKKwlyb3IJdzIyLHcyMiwjMgorCWxkcgl3OCxbeDAsIzE2XQorCWFkZAl3MjAsdzIwLHcyNQkJLy8gZSs9RihiLGMsZCkKKwlhZGQJdzIxLHcyMSx3NQorCWFkZAl3MjIsdzIyLHc2CisJYWRkCXcyMCx3MjAsdzQKKwlhZGQJdzIzLHcyMyx3NworCWFkZAl3MjQsdzI0LHc4CisJc3RwCXcyMCx3MjEsW3gwXQorCXN0cAl3MjIsdzIzLFt4MCwjOF0KKwlzdHIJdzI0LFt4MCwjMTZdCisJY2Juegl4MiwuTG9vcAorCisJbGRwCXgxOSx4MjAsW3NwLCMxNl0KKwlsZHAJeDIxLHgyMixbc3AsIzMyXQorCWxkcAl4MjMseDI0LFtzcCwjNDhdCisJbGRwCXgyNSx4MjYsW3NwLCM2NF0KKwlsZHAJeDI3LHgyOCxbc3AsIzgwXQorCWxkcgl4MjksW3NwXSwjOTYKKwlyZXQKKy5zaXplCXNoYTFfYmxvY2tfZGF0YV9vcmRlciwuLXNoYTFfYmxvY2tfZGF0YV9vcmRlcgorLnR5cGUJc2hhMV9ibG9ja19hcm12OCwlZnVuY3Rpb24KKy5hbGlnbgk2CitzaGExX2Jsb2NrX2FybXY4OgorLkx2OF9lbnRyeToKKwlzdHAJeDI5LHgzMCxbc3AsIy0xNl0hCisJYWRkCXgyOSxzcCwjMAorCisJYWRyCXg0LC5MY29uc3QKKwllb3IJdjEuMTZiLHYxLjE2Yix2MS4xNmIKKwlsZDEJe3YwLjRzfSxbeDBdLCMxNgorCWxkMQl7djEuc31bMF0sW3gwXQorCXN1Ygl4MCx4MCwjMTYKKwlsZDEJe3YxNi40cy12MTkuNHN9LFt4NF0KKworLkxvb3BfaHc6CisJbGQxCXt2NC4xNmItdjcuMTZifSxbeDFdLCM2NAorCXN1Ygl4Mix4MiwjMQorCXJldjMyCXY0LjE2Yix2NC4xNmIKKwlyZXYzMgl2NS4xNmIsdjUuMTZiCisKKwlhZGQJdjIwLjRzLHYxNi40cyx2NC40cworCXJldjMyCXY2LjE2Yix2Ni4xNmIKKwlvcnIJdjIyLjE2Yix2MC4xNmIsdjAuMTZiCS8vIG9mZmxvYWQKKworCWFkZAl2MjEuNHMsdjE2LjRzLHY1LjRzCisJcmV2MzIJdjcuMTZiLHY3LjE2YgorCS5pbnN0CTB4NWUyODA4MDMJLy9zaGExaCB2My4xNmIsdjAuMTZiCisJLmluc3QJMHg1ZTE0MDAyMAkvL3NoYTFjIHYwLjE2Yix2MS4xNmIsdjIwLjRzCQkvLyAwCisJYWRkCXYyMC40cyx2MTYuNHMsdjYuNHMKKwkuaW5zdAkweDVlMDYzMGE0CS8vc2hhMXN1MCB2NC4xNmIsdjUuMTZiLHY2LjE2YgorCS5pbnN0CTB4NWUyODA4MDIJLy9zaGExaCB2Mi4xNmIsdjAuMTZiCQkvLyAxCisJLmluc3QJMHg1ZTE1MDA2MAkvL3NoYTFjIHYwLjE2Yix2My4xNmIsdjIxLjRzCisJYWRkCXYyMS40cyx2MTYuNHMsdjcuNHMKKwkuaW5zdAkweDVlMjgxOGU0CS8vc2hhMXN1MSB2NC4xNmIsdjcuMTZiCisJLmluc3QJMHg1ZTA3MzBjNQkvL3NoYTFzdTAgdjUuMTZiLHY2LjE2Yix2Ny4xNmIKKwkuaW5zdAkweDVlMjgwODAzCS8vc2hhMWggdjMuMTZiLHYwLjE2YgkJLy8gMgorCS5pbnN0CTB4NWUxNDAwNDAJLy9zaGExYyB2MC4xNmIsdjIuMTZiLHYyMC40cworCWFkZAl2MjAuNHMsdjE2LjRzLHY0LjRzCisJLmluc3QJMHg1ZTI4MTg4NQkvL3NoYTFzdTEgdjUuMTZiLHY0LjE2YgorCS5pbnN0CTB4NWUwNDMwZTYJLy9zaGExc3UwIHY2LjE2Yix2Ny4xNmIsdjQuMTZiCisJLmluc3QJMHg1ZTI4MDgwMgkvL3NoYTFoIHYyLjE2Yix2MC4xNmIJCS8vIDMKKwkuaW5zdAkweDVlMTUwMDYwCS8vc2hhMWMgdjAuMTZiLHYzLjE2Yix2MjEuNHMKKwlhZGQJdjIxLjRzLHYxNy40cyx2NS40cworCS5pbnN0CTB4NWUyODE4YTYJLy9zaGExc3UxIHY2LjE2Yix2NS4xNmIKKwkuaW5zdAkweDVlMDUzMDg3CS8vc2hhMXN1MCB2Ny4xNmIsdjQuMTZiLHY1LjE2YgorCS5pbnN0CTB4NWUyODA4MDMJLy9zaGExaCB2My4xNmIsdjAuMTZiCQkvLyA0CisJLmluc3QJMHg1ZTE0MDA0MAkvL3NoYTFjIHYwLjE2Yix2Mi4xNmIsdjIwLjRzCisJYWRkCXYyMC40cyx2MTcuNHMsdjYuNHMKKwkuaW5zdAkweDVlMjgxOGM3CS8vc2hhMXN1MSB2Ny4xNmIsdjYuMTZiCisJLmluc3QJMHg1ZTA2MzBhNAkvL3NoYTFzdTAgdjQuMTZiLHY1LjE2Yix2Ni4xNmIKKwkuaW5zdAkweDVlMjgwODAyCS8vc2hhMWggdjIuMTZiLHYwLjE2YgkJLy8gNQorCS5pbnN0CTB4NWUxNTEwNjAJLy9zaGExcCB2MC4xNmIsdjMuMTZiLHYyMS40cworCWFkZAl2MjEuNHMsdjE3LjRzLHY3LjRzCisJLmluc3QJMHg1ZTI4MThlNAkvL3NoYTFzdTEgdjQuMTZiLHY3LjE2YgorCS5pbnN0CTB4NWUwNzMwYzUJLy9zaGExc3UwIHY1LjE2Yix2Ni4xNmIsdjcuMTZiCisJLmluc3QJMHg1ZTI4MDgwMwkvL3NoYTFoIHYzLjE2Yix2MC4xNmIJCS8vIDYKKwkuaW5zdAkweDVlMTQxMDQwCS8vc2hhMXAgdjAuMTZiLHYyLjE2Yix2MjAuNHMKKwlhZGQJdjIwLjRzLHYxNy40cyx2NC40cworCS5pbnN0CTB4NWUyODE4ODUJLy9zaGExc3UxIHY1LjE2Yix2NC4xNmIKKwkuaW5zdAkweDVlMDQzMGU2CS8vc2hhMXN1MCB2Ni4xNmIsdjcuMTZiLHY0LjE2YgorCS5pbnN0CTB4NWUyODA4MDIJLy9zaGExaCB2Mi4xNmIsdjAuMTZiCQkvLyA3CisJLmluc3QJMHg1ZTE1MTA2MAkvL3NoYTFwIHYwLjE2Yix2My4xNmIsdjIxLjRzCisJYWRkCXYyMS40cyx2MTcuNHMsdjUuNHMKKwkuaW5zdAkweDVlMjgxOGE2CS8vc2hhMXN1MSB2Ni4xNmIsdjUuMTZiCisJLmluc3QJMHg1ZTA1MzA4NwkvL3NoYTFzdTAgdjcuMTZiLHY0LjE2Yix2NS4xNmIKKwkuaW5zdAkweDVlMjgwODAzCS8vc2hhMWggdjMuMTZiLHYwLjE2YgkJLy8gOAorCS5pbnN0CTB4NWUxNDEwNDAJLy9zaGExcCB2MC4xNmIsdjIuMTZiLHYyMC40cworCWFkZAl2MjAuNHMsdjE4LjRzLHY2LjRzCisJLmluc3QJMHg1ZTI4MThjNwkvL3NoYTFzdTEgdjcuMTZiLHY2LjE2YgorCS5pbnN0CTB4NWUwNjMwYTQJLy9zaGExc3UwIHY0LjE2Yix2NS4xNmIsdjYuMTZiCisJLmluc3QJMHg1ZTI4MDgwMgkvL3NoYTFoIHYyLjE2Yix2MC4xNmIJCS8vIDkKKwkuaW5zdAkweDVlMTUxMDYwCS8vc2hhMXAgdjAuMTZiLHYzLjE2Yix2MjEuNHMKKwlhZGQJdjIxLjRzLHYxOC40cyx2Ny40cworCS5pbnN0CTB4NWUyODE4ZTQJLy9zaGExc3UxIHY0LjE2Yix2Ny4xNmIKKwkuaW5zdAkweDVlMDczMGM1CS8vc2hhMXN1MCB2NS4xNmIsdjYuMTZiLHY3LjE2YgorCS5pbnN0CTB4NWUyODA4MDMJLy9zaGExaCB2My4xNmIsdjAuMTZiCQkvLyAxMAorCS5pbnN0CTB4NWUxNDIwNDAJLy9zaGExbSB2MC4xNmIsdjIuMTZiLHYyMC40cworCWFkZAl2MjAuNHMsdjE4LjRzLHY0LjRzCisJLmluc3QJMHg1ZTI4MTg4NQkvL3NoYTFzdTEgdjUuMTZiLHY0LjE2YgorCS5pbnN0CTB4NWUwNDMwZTYJLy9zaGExc3UwIHY2LjE2Yix2Ny4xNmIsdjQuMTZiCisJLmluc3QJMHg1ZTI4MDgwMgkvL3NoYTFoIHYyLjE2Yix2MC4xNmIJCS8vIDExCisJLmluc3QJMHg1ZTE1MjA2MAkvL3NoYTFtIHYwLjE2Yix2My4xNmIsdjIxLjRzCisJYWRkCXYyMS40cyx2MTguNHMsdjUuNHMKKwkuaW5zdAkweDVlMjgxOGE2CS8vc2hhMXN1MSB2Ni4xNmIsdjUuMTZiCisJLmluc3QJMHg1ZTA1MzA4NwkvL3NoYTFzdTAgdjcuMTZiLHY0LjE2Yix2NS4xNmIKKwkuaW5zdAkweDVlMjgwODAzCS8vc2hhMWggdjMuMTZiLHYwLjE2YgkJLy8gMTIKKwkuaW5zdAkweDVlMTQyMDQwCS8vc2hhMW0gdjAuMTZiLHYyLjE2Yix2MjAuNHMKKwlhZGQJdjIwLjRzLHYxOC40cyx2Ni40cworCS5pbnN0CTB4NWUyODE4YzcJLy9zaGExc3UxIHY3LjE2Yix2Ni4xNmIKKwkuaW5zdAkweDVlMDYzMGE0CS8vc2hhMXN1MCB2NC4xNmIsdjUuMTZiLHY2LjE2YgorCS5pbnN0CTB4NWUyODA4MDIJLy9zaGExaCB2Mi4xNmIsdjAuMTZiCQkvLyAxMworCS5pbnN0CTB4NWUxNTIwNjAJLy9zaGExbSB2MC4xNmIsdjMuMTZiLHYyMS40cworCWFkZAl2MjEuNHMsdjE5LjRzLHY3LjRzCisJLmluc3QJMHg1ZTI4MThlNAkvL3NoYTFzdTEgdjQuMTZiLHY3LjE2YgorCS5pbnN0CTB4NWUwNzMwYzUJLy9zaGExc3UwIHY1LjE2Yix2Ni4xNmIsdjcuMTZiCisJLmluc3QJMHg1ZTI4MDgwMwkvL3NoYTFoIHYzLjE2Yix2MC4xNmIJCS8vIDE0CisJLmluc3QJMHg1ZTE0MjA0MAkvL3NoYTFtIHYwLjE2Yix2Mi4xNmIsdjIwLjRzCisJYWRkCXYyMC40cyx2MTkuNHMsdjQuNHMKKwkuaW5zdAkweDVlMjgxODg1CS8vc2hhMXN1MSB2NS4xNmIsdjQuMTZiCisJLmluc3QJMHg1ZTA0MzBlNgkvL3NoYTFzdTAgdjYuMTZiLHY3LjE2Yix2NC4xNmIKKwkuaW5zdAkweDVlMjgwODAyCS8vc2hhMWggdjIuMTZiLHYwLjE2YgkJLy8gMTUKKwkuaW5zdAkweDVlMTUxMDYwCS8vc2hhMXAgdjAuMTZiLHYzLjE2Yix2MjEuNHMKKwlhZGQJdjIxLjRzLHYxOS40cyx2NS40cworCS5pbnN0CTB4NWUyODE4YTYJLy9zaGExc3UxIHY2LjE2Yix2NS4xNmIKKwkuaW5zdAkweDVlMDUzMDg3CS8vc2hhMXN1MCB2Ny4xNmIsdjQuMTZiLHY1LjE2YgorCS5pbnN0CTB4NWUyODA4MDMJLy9zaGExaCB2My4xNmIsdjAuMTZiCQkvLyAxNgorCS5pbnN0CTB4NWUxNDEwNDAJLy9zaGExcCB2MC4xNmIsdjIuMTZiLHYyMC40cworCWFkZAl2MjAuNHMsdjE5LjRzLHY2LjRzCisJLmluc3QJMHg1ZTI4MThjNwkvL3NoYTFzdTEgdjcuMTZiLHY2LjE2YgorCS5pbnN0CTB4NWUyODA4MDIJLy9zaGExaCB2Mi4xNmIsdjAuMTZiCQkvLyAxNworCS5pbnN0CTB4NWUxNTEwNjAJLy9zaGExcCB2MC4xNmIsdjMuMTZiLHYyMS40cworCWFkZAl2MjEuNHMsdjE5LjRzLHY3LjRzCisKKwkuaW5zdAkweDVlMjgwODAzCS8vc2hhMWggdjMuMTZiLHYwLjE2YgkJLy8gMTgKKwkuaW5zdAkweDVlMTQxMDQwCS8vc2hhMXAgdjAuMTZiLHYyLjE2Yix2MjAuNHMKKworCS5pbnN0CTB4NWUyODA4MDIJLy9zaGExaCB2Mi4xNmIsdjAuMTZiCQkvLyAxOQorCS5pbnN0CTB4NWUxNTEwNjAJLy9zaGExcCB2MC4xNmIsdjMuMTZiLHYyMS40cworCisJYWRkCXYxLjRzLHYxLjRzLHYyLjRzCisJYWRkCXYwLjRzLHYwLjRzLHYyMi40cworCisJY2Juegl4MiwuTG9vcF9odworCisJc3QxCXt2MC40c30sW3gwXSwjMTYKKwlzdDEJe3YxLnN9WzBdLFt4MF0KKworCWxkcgl4MjksW3NwXSwjMTYKKwlyZXQKKy5zaXplCXNoYTFfYmxvY2tfYXJtdjgsLi1zaGExX2Jsb2NrX2FybXY4CisuYWxpZ24JNgorLkxjb25zdDoKKy5sb25nCTB4NWE4Mjc5OTksMHg1YTgyNzk5OSwweDVhODI3OTk5LDB4NWE4Mjc5OTkJLy9LXzAwXzE5CisubG9uZwkweDZlZDllYmExLDB4NmVkOWViYTEsMHg2ZWQ5ZWJhMSwweDZlZDllYmExCS8vS18yMF8zOQorLmxvbmcJMHg4ZjFiYmNkYywweDhmMWJiY2RjLDB4OGYxYmJjZGMsMHg4ZjFiYmNkYwkvL0tfNDBfNTkKKy5sb25nCTB4Y2E2MmMxZDYsMHhjYTYyYzFkNiwweGNhNjJjMWQ2LDB4Y2E2MmMxZDYJLy9LXzYwXzc5CisuTE9QRU5TU0xfYXJtY2FwX1A6CisucXVhZAlPUEVOU1NMX2FybWNhcF9QLS4KKy5hc2NpegkiU0hBMSBibG9jayB0cmFuc2Zvcm0gZm9yIEFSTXY4LCBDUllQVE9HQU1TIGJ5IDxhcHByb0BvcGVuc3NsLm9yZz4iCisuYWxpZ24JMgorLmNvbW0JT1BFTlNTTF9hcm1jYXBfUCw0LDQKZGlmZiAtLWdpdCBhL2NyeXB0by9zaGEvYXNtL3NoYTEtYXJtdjgucGwgYi9jcnlwdG8vc2hhL2FzbS9zaGExLWFybXY4LnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxZjU1MmIKLS0tIC9kZXYvbnVsbAorKysgYi9jcnlwdG8vc2hhL2FzbS9zaGExLWFybXY4LnBsCkBAIC0wLDAgKzEsMzMzIEBACisjIS91c3IvYmluL2VudiBwZXJsCisjCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIFdyaXR0ZW4gYnkgQW5keSBQb2x5YWtvdiA8YXBwcm9Ab3BlbnNzbC5vcmc+IGZvciB0aGUgT3BlblNTTAorIyBwcm9qZWN0LiBUaGUgbW9kdWxlIGlzLCBob3dldmVyLCBkdWFsIGxpY2Vuc2VkIHVuZGVyIE9wZW5TU0wgYW5kCisjIENSWVBUT0dBTVMgbGljZW5zZXMgZGVwZW5kaW5nIG9uIHdoZXJlIHlvdSBvYnRhaW4gaXQuIEZvciBmdXJ0aGVyCisjIGRldGFpbHMgc2VlIGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvfmFwcHJvL2NyeXB0b2dhbXMvLgorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIworIyBTSEExIGZvciBBUk12OC4KKyMKKyMgUGVyZm9ybWFuY2UgaW4gY3ljbGVzIHBlciBwcm9jZXNzZWQgYnl0ZSBhbmQgaW1wcm92ZW1lbnQgY29lZmZpY2llbnQKKyMgb3ZlciBjb2RlIGdlbmVyYXRlZCB3aXRoICJkZWZhdWx0IiBjb21waWxlcjoKKyMKKyMJCWhhcmR3YXJlLWFzc2lzdGVkCXNvZnR3YXJlKCopCisjIEFwcGxlIEE3CTIuMzEJCQk0LjEzICgrMTQlKQorIyBDb3J0ZXgtQTV4CW4vYQkJCW4vYQorIworIyAoKikJU29mdHdhcmUgcmVzdWx0cyBhcmUgcHJlc2VudGVkIG1vc3RseSBmb3IgcmVmZXJlbmNlIHB1cnBvc2VzLgorCiskZmxhdm91ciA9IHNoaWZ0Oworb3BlbiBTVERPVVQsIj4iLnNoaWZ0OworCisoJGN0eCwkaW5wLCRudW0pPSgieDAiLCJ4MSIsIngyIik7CitAWHc9bWFwKCJ3JF8iLCgzLi4xNywxOSkpOworQFh4PW1hcCgieCRfIiwoMy4uMTcsMTkpKTsKK0BWPSgkQSwkQiwkQywkRCwkRSk9bWFwKCJ3JF8iLCgyMC4uMjQpKTsKKygkdDAsJHQxLCR0MiwkSyk9bWFwKCJ3JF8iLCgyNS4uMjgpKTsKKworCitzdWIgQk9EWV8wMF8xOSB7CitteSAoJGksJGEsJGIsJGMsJGQsJGUpPUBfOworbXkgJGo9KCRpKzIpJjE1OworCiskY29kZS49PDxfX18gaWYgKCRpPDE1ICYmICEoJGkmMSkpOworCWxzcglAWHhbJGkrMV0sQFh4WyRpXSwjMzIKK19fXworJGNvZGUuPTw8X19fIGlmICgkaTwxNCAmJiAhKCRpJjEpKTsKKwlsZHIJQFh4WyRpKzJdLFskaW5wLCNgKCRpKzIpKjQtNjRgXQorX19fCiskY29kZS49PDxfX18gaWYgKCRpPDE0ICYmICgkaSYxKSk7CisjaWZkZWYJX19BUk1FQl9fCisJcm9yCUBYeFskaSsxXSxAWHhbJGkrMV0sIzMyCisjZWxzZQorCXJldjMyCUBYeFskaSsxXSxAWHhbJGkrMV0KKyNlbmRpZgorX19fCiskY29kZS49PDxfX18gaWYgKCRpPDE0KTsKKwliaWMJJHQwLCRkLCRiCisJYW5kCSR0MSwkYywkYgorCXJvcgkkdDIsJGEsIzI3CisJYWRkCSRkLCRkLCRLCQkvLyBmdXR1cmUgZSs9SworCW9ycgkkdDAsJHQwLCR0MQorCWFkZAkkZSwkZSwkdDIJCS8vIGUrPXJvdChhLDUpCisJcm9yCSRiLCRiLCMyCisJYWRkCSRkLCRkLEBYd1soJGkrMSkmMTVdCS8vIGZ1dHVyZSBlKz1YW2ldCisJYWRkCSRlLCRlLCR0MAkJLy8gZSs9RihiLGMsZCkKK19fXworJGNvZGUuPTw8X19fIGlmICgkaT09MTkpOworCW1vdnoJJEssIzB4ZWJhMQorCW1vdmsJJEssIzB4NmVkOSxsc2wjMTYKK19fXworJGNvZGUuPTw8X19fIGlmICgkaT49MTQpOworCSBlb3IJQFh3WyRqXSxAWHdbJGpdLEBYd1soJGorMikmMTVdCisJYmljCSR0MCwkZCwkYgorCWFuZAkkdDEsJGMsJGIKKwlyb3IJJHQyLCRhLCMyNworCSBlb3IJQFh3WyRqXSxAWHdbJGpdLEBYd1soJGorOCkmMTVdCisJYWRkCSRkLCRkLCRLCQkvLyBmdXR1cmUgZSs9SworCW9ycgkkdDAsJHQwLCR0MQorCWFkZAkkZSwkZSwkdDIJCS8vIGUrPXJvdChhLDUpCisJIGVvcglAWHdbJGpdLEBYd1skal0sQFh3WygkaisxMykmMTVdCisJcm9yCSRiLCRiLCMyCisJYWRkCSRkLCRkLEBYd1soJGkrMSkmMTVdCS8vIGZ1dHVyZSBlKz1YW2ldCisJYWRkCSRlLCRlLCR0MAkJLy8gZSs9RihiLGMsZCkKKwkgcm9yCUBYd1skal0sQFh3WyRqXSwjMzEKK19fXworfQorCitzdWIgQk9EWV80MF81OSB7CitteSAoJGksJGEsJGIsJGMsJGQsJGUpPUBfOworbXkgJGo9KCRpKzIpJjE1OworCiskY29kZS49PDxfX18gaWYgKCRpPT01OSk7CisJbW92egkkSywjMHhjMWQ2CisJbW92awkkSywjMHhjYTYyLGxzbCMxNgorX19fCiskY29kZS49PDxfX187CisJb3JyCSR0MCwkYiwkYworCWFuZAkkdDEsJGIsJGMKKwkgZW9yCUBYd1skal0sQFh3WyRqXSxAWHdbKCRqKzIpJjE1XQorCXJvcgkkdDIsJGEsIzI3CisJYW5kCSR0MCwkdDAsJGQKKwlhZGQJJGQsJGQsJEsJCS8vIGZ1dHVyZSBlKz1LCisJIGVvcglAWHdbJGpdLEBYd1skal0sQFh3Wygkais4KSYxNV0KKwlhZGQJJGUsJGUsJHQyCQkvLyBlKz1yb3QoYSw1KQorCW9ycgkkdDAsJHQwLCR0MQorCXJvcgkkYiwkYiwjMgorCSBlb3IJQFh3WyRqXSxAWHdbJGpdLEBYd1soJGorMTMpJjE1XQorCWFkZAkkZCwkZCxAWHdbKCRpKzEpJjE1XQkvLyBmdXR1cmUgZSs9WFtpXQorCWFkZAkkZSwkZSwkdDAJCS8vIGUrPUYoYixjLGQpCisJIHJvcglAWHdbJGpdLEBYd1skal0sIzMxCitfX18KK30KKworc3ViIEJPRFlfMjBfMzkgeworbXkgKCRpLCRhLCRiLCRjLCRkLCRlKT1AXzsKK215ICRqPSgkaSsyKSYxNTsKKworJGNvZGUuPTw8X19fIGlmICgkaT09MzkpOworCW1vdnoJJEssIzB4YmNkYworCW1vdmsJJEssIzB4OGYxYixsc2wjMTYKK19fXworJGNvZGUuPTw8X19fIGlmICgkaTw3OCk7CisJIGVvcglAWHdbJGpdLEBYd1skal0sQFh3WygkaisyKSYxNV0KKwllb3IJJHQwLCRkLCRiCisJcm9yCSR0MiwkYSwjMjcKKwlhZGQJJGQsJGQsJEsJCS8vIGZ1dHVyZSBlKz1LCisJIGVvcglAWHdbJGpdLEBYd1skal0sQFh3Wygkais4KSYxNV0KKwllb3IJJHQwLCR0MCwkYworCWFkZAkkZSwkZSwkdDIJCS8vIGUrPXJvdChhLDUpCisJcm9yCSRiLCRiLCMyCisJIGVvcglAWHdbJGpdLEBYd1skal0sQFh3WygkaisxMykmMTVdCisJYWRkCSRkLCRkLEBYd1soJGkrMSkmMTVdCS8vIGZ1dHVyZSBlKz1YW2ldCisJYWRkCSRlLCRlLCR0MAkJLy8gZSs9RihiLGMsZCkKKwkgcm9yCUBYd1skal0sQFh3WyRqXSwjMzEKK19fXworJGNvZGUuPTw8X19fIGlmICgkaT09NzgpOworCWxkcAlAWHdbMV0sQFh3WzJdLFskY3R4XQorCWVvcgkkdDAsJGQsJGIKKwlyb3IJJHQyLCRhLCMyNworCWFkZAkkZCwkZCwkSwkJLy8gZnV0dXJlIGUrPUsKKwllb3IJJHQwLCR0MCwkYworCWFkZAkkZSwkZSwkdDIJCS8vIGUrPXJvdChhLDUpCisJcm9yCSRiLCRiLCMyCisJYWRkCSRkLCRkLEBYd1soJGkrMSkmMTVdCS8vIGZ1dHVyZSBlKz1YW2ldCisJYWRkCSRlLCRlLCR0MAkJLy8gZSs9RihiLGMsZCkKK19fXworJGNvZGUuPTw8X19fIGlmICgkaT09NzkpOworCWxkcAlAWHdbM10sQFh3WzRdLFskY3R4LCM4XQorCWVvcgkkdDAsJGQsJGIKKwlyb3IJJHQyLCRhLCMyNworCWVvcgkkdDAsJHQwLCRjCisJYWRkCSRlLCRlLCR0MgkJLy8gZSs9cm90KGEsNSkKKwlyb3IJJGIsJGIsIzIKKwlsZHIJQFh3WzVdLFskY3R4LCMxNl0KKwlhZGQJJGUsJGUsJHQwCQkvLyBlKz1GKGIsYyxkKQorX19fCit9CisKKyRjb2RlLj08PF9fXzsKKyNpbmNsdWRlICJhcm1fYXJjaC5oIgorCisudGV4dAorCisuZ2xvYmwJc2hhMV9ibG9ja19kYXRhX29yZGVyCisudHlwZQlzaGExX2Jsb2NrX2RhdGFfb3JkZXIsJWZ1bmN0aW9uCisuYWxpZ24JNgorc2hhMV9ibG9ja19kYXRhX29yZGVyOgorCWxkcgl4MTYsLkxPUEVOU1NMX2FybWNhcF9QCisJYWRyCXgxNywuTE9QRU5TU0xfYXJtY2FwX1AKKwlhZGQJeDE2LHgxNix4MTcKKwlsZHIJdzE2LFt4MTZdCisJdHN0CXcxNiwjQVJNVjhfU0hBMQorCWIubmUJLkx2OF9lbnRyeQorCisJc3RwCXgyOSx4MzAsW3NwLCMtOTZdIQorCWFkZAl4Mjksc3AsIzAKKwlzdHAJeDE5LHgyMCxbc3AsIzE2XQorCXN0cAl4MjEseDIyLFtzcCwjMzJdCisJc3RwCXgyMyx4MjQsW3NwLCM0OF0KKwlzdHAJeDI1LHgyNixbc3AsIzY0XQorCXN0cAl4MjcseDI4LFtzcCwjODBdCisKKwlsZHAJJEEsJEIsWyRjdHhdCisJbGRwCSRDLCRELFskY3R4LCM4XQorCWxkcgkkRSxbJGN0eCwjMTZdCisKKy5Mb29wOgorCWxkcglAWHhbMF0sWyRpbnBdLCM2NAorCW1vdnoJJEssIzB4Nzk5OQorCXN1YgkkbnVtLCRudW0sIzEKKwltb3ZrCSRLLCMweDVhODIsbHNsIzE2CisjaWZkZWYJX19BUk1FQl9fCisJcm9yCSRYeFswXSxAWHhbMF0sIzMyCisjZWxzZQorCXJldjMyCUBYeFswXSxAWHhbMF0KKyNlbmRpZgorCWFkZAkkRSwkRSwkSwkJLy8gd2FybSBpdCB1cAorCWFkZAkkRSwkRSxAWHdbMF0KK19fXworZm9yKCRpPTA7JGk8MjA7JGkrKykJeyAmQk9EWV8wMF8xOSgkaSxAVik7IHVuc2hpZnQoQFYscG9wKEBWKSk7IH0KK2Zvcig7JGk8NDA7JGkrKykJeyAmQk9EWV8yMF8zOSgkaSxAVik7IHVuc2hpZnQoQFYscG9wKEBWKSk7IH0KK2Zvcig7JGk8NjA7JGkrKykJeyAmQk9EWV80MF81OSgkaSxAVik7IHVuc2hpZnQoQFYscG9wKEBWKSk7IH0KK2Zvcig7JGk8ODA7JGkrKykJeyAmQk9EWV8yMF8zOSgkaSxAVik7IHVuc2hpZnQoQFYscG9wKEBWKSk7IH0KKyRjb2RlLj08PF9fXzsKKwlhZGQJJEIsJEIsQFh3WzJdCisJYWRkCSRDLCRDLEBYd1szXQorCWFkZAkkQSwkQSxAWHdbMV0KKwlhZGQJJEQsJEQsQFh3WzRdCisJYWRkCSRFLCRFLEBYd1s1XQorCXN0cAkkQSwkQixbJGN0eF0KKwlzdHAJJEMsJEQsWyRjdHgsIzhdCisJc3RyCSRFLFskY3R4LCMxNl0KKwljYm56CSRudW0sLkxvb3AKKworCWxkcAl4MTkseDIwLFtzcCwjMTZdCisJbGRwCXgyMSx4MjIsW3NwLCMzMl0KKwlsZHAJeDIzLHgyNCxbc3AsIzQ4XQorCWxkcAl4MjUseDI2LFtzcCwjNjRdCisJbGRwCXgyNyx4MjgsW3NwLCM4MF0KKwlsZHIJeDI5LFtzcF0sIzk2CisJcmV0Cisuc2l6ZQlzaGExX2Jsb2NrX2RhdGFfb3JkZXIsLi1zaGExX2Jsb2NrX2RhdGFfb3JkZXIKK19fXwore3t7CitteSAoJEFCQ0QsJEUsJEUwLCRFMSk9bWFwKCJ2JF8uMTZiIiwoMC4uMykpOworbXkgQE1TRz1tYXAoInYkXy4xNmIiLCg0Li43KSk7CitteSBAS3h4PW1hcCgidiRfLjRzIiwoMTYuLjE5KSk7CitteSAoJFcwLCRXMSk9KCJ2MjAuNHMiLCJ2MjEuNHMiKTsKK215ICRBQkNEX1NBVkU9InYyMi4xNmIiOworCiskY29kZS49PDxfX187CisudHlwZQlzaGExX2Jsb2NrX2FybXY4LCVmdW5jdGlvbgorLmFsaWduCTYKK3NoYTFfYmxvY2tfYXJtdjg6CisuTHY4X2VudHJ5OgorCXN0cAl4MjkseDMwLFtzcCwjLTE2XSEKKwlhZGQJeDI5LHNwLCMwCisKKwlhZHIJeDQsLkxjb25zdAorCWVvcgkkRSwkRSwkRQorCWxkMS4zMgl7JEFCQ0R9LFskY3R4XSwjMTYKKwlsZDEuMzIJeyRFfVswXSxbJGN0eF0KKwlzdWIJJGN0eCwkY3R4LCMxNgorCWxkMS4zMgl7QEt4eFswXS1AS3h4WzNdfSxbeDRdCisKKy5Mb29wX2h3OgorCWxkMQl7QE1TR1swXS1ATVNHWzNdfSxbJGlucF0sIzY0CisJc3ViCSRudW0sJG51bSwjMQorCXJldjMyCUBNU0dbMF0sQE1TR1swXQorCXJldjMyCUBNU0dbMV0sQE1TR1sxXQorCisJYWRkLmkzMgkkVzAsQEt4eFswXSxATVNHWzBdCisJcmV2MzIJQE1TR1syXSxATVNHWzJdCisJb3JyCSRBQkNEX1NBVkUsJEFCQ0QsJEFCQ0QJLy8gb2ZmbG9hZAorCisJYWRkLmkzMgkkVzEsQEt4eFswXSxATVNHWzFdCisJcmV2MzIJQE1TR1szXSxATVNHWzNdCisJc2hhMWgJJEUxLCRBQkNECisJc2hhMWMJJEFCQ0QsJEUsJFcwCQkvLyAwCisJYWRkLmkzMgkkVzAsQEt4eFskal0sQE1TR1syXQorCXNoYTFzdTAJQE1TR1swXSxATVNHWzFdLEBNU0dbMl0KK19fXworZm9yICgkaj0wLCRpPTE7JGk8MjAtMzskaSsrKSB7CitteSAkZj0oImMiLCJwIiwibSIsInAiKVskaS81XTsKKyRjb2RlLj08PF9fXzsKKwlzaGExaAkkRTAsJEFCQ0QJCS8vICRpCisJc2hhMSRmCSRBQkNELCRFMSwkVzEKKwlhZGQuaTMyCSRXMSxAS3h4WyRqXSxATVNHWzNdCisJc2hhMXN1MQlATVNHWzBdLEBNU0dbM10KK19fXworJGNvZGUuPTw8X19fIGlmICgkaTwyMC00KTsKKwlzaGExc3UwCUBNU0dbMV0sQE1TR1syXSxATVNHWzNdCitfX18KKwkoJEUwLCRFMSk9KCRFMSwkRTApOwkJKCRXMCwkVzEpPSgkVzEsJFcwKTsKKwlwdXNoKEBNU0csc2hpZnQoQE1TRykpOwkJJGorKyBpZiAoKCgkaSszKSU1KT09MCk7Cit9CiskY29kZS49PDxfX187CisJc2hhMWgJJEUwLCRBQkNECQkvLyAkaQorCXNoYTFwCSRBQkNELCRFMSwkVzEKKwlhZGQuaTMyCSRXMSxAS3h4WyRqXSxATVNHWzNdCisKKwlzaGExaAkkRTEsJEFCQ0QJCS8vIDE4CisJc2hhMXAJJEFCQ0QsJEUwLCRXMAorCisJc2hhMWgJJEUwLCRBQkNECQkvLyAxOQorCXNoYTFwCSRBQkNELCRFMSwkVzEKKworCWFkZC5pMzIJJEUsJEUsJEUwCisJYWRkLmkzMgkkQUJDRCwkQUJDRCwkQUJDRF9TQVZFCisKKwljYm56CSRudW0sLkxvb3BfaHcKKworCXN0MS4zMgl7JEFCQ0R9LFskY3R4XSwjMTYKKwlzdDEuMzIJeyRFfVswXSxbJGN0eF0KKworCWxkcgl4MjksW3NwXSwjMTYKKwlyZXQKKy5zaXplCXNoYTFfYmxvY2tfYXJtdjgsLi1zaGExX2Jsb2NrX2FybXY4CisuYWxpZ24JNgorLkxjb25zdDoKKy5sb25nCTB4NWE4Mjc5OTksMHg1YTgyNzk5OSwweDVhODI3OTk5LDB4NWE4Mjc5OTkJLy9LXzAwXzE5CisubG9uZwkweDZlZDllYmExLDB4NmVkOWViYTEsMHg2ZWQ5ZWJhMSwweDZlZDllYmExCS8vS18yMF8zOQorLmxvbmcJMHg4ZjFiYmNkYywweDhmMWJiY2RjLDB4OGYxYmJjZGMsMHg4ZjFiYmNkYwkvL0tfNDBfNTkKKy5sb25nCTB4Y2E2MmMxZDYsMHhjYTYyYzFkNiwweGNhNjJjMWQ2LDB4Y2E2MmMxZDYJLy9LXzYwXzc5CisuTE9QRU5TU0xfYXJtY2FwX1A6CisucXVhZAlPUEVOU1NMX2FybWNhcF9QLS4KKy5hc2NpegkiU0hBMSBibG9jayB0cmFuc2Zvcm0gZm9yIEFSTXY4LCBDUllQVE9HQU1TIGJ5IDxhcHByb1xAb3BlbnNzbC5vcmc+IgorLmFsaWduCTIKKy5jb21tCU9QRU5TU0xfYXJtY2FwX1AsNCw0CitfX18KK319fQorCit7ICAgbXkJJW9wY29kZSA9ICgKKwkic2hhMWMiCQk9PiAweDVlMDAwMDAwLAkic2hhMXAiCQk9PiAweDVlMDAxMDAwLAorCSJzaGExbSIJCT0+IDB4NWUwMDIwMDAsCSJzaGExc3UwIgk9PiAweDVlMDAzMDAwLAorCSJzaGExaCIJCT0+IDB4NWUyODA4MDAsCSJzaGExc3UxIgk9PiAweDVlMjgxODAwCSk7CisKKyAgICBzdWIgdW5zaGExIHsKKwlteSAoJG1uZW1vbmljLCRhcmcpPUBfOworCisJJGFyZyA9fiBtL1txdl0oWzAtOV0rKVteLF0qLFxzKltxdl0oWzAtOV0rKVteLF0qKD86LFxzKltxdl0oWzAtOV0rKSk/L28KKwkmJgorCXNwcmludGYgIi5pbnN0XHQweCUwOHhcdC8vJXMgJXMiLAorCQkJJG9wY29kZXskbW5lbW9uaWN9fCQxfCgkMjw8NSl8KCQzPDwxNiksCisJCQkkbW5lbW9uaWMsJGFyZzsKKyAgICB9Cit9CisKK2ZvcmVhY2goc3BsaXQoIlxuIiwkY29kZSkpIHsKKworCXMvXGAoW15cYF0qKVxgL2V2YWwoJDEpL2dlbzsKKworCXMvXGIoc2hhMVx3KylccysoW3F2XS4qKS91bnNoYTEoJDEsJDIpL2dlbzsKKworCXMvXC5cdz8zMlxiLy9vCQlhbmQgcy9cLjE2Yi9cLjRzL2dvOworCW0vKGxkfHN0KTFbXlxbXStcWzBcXS9vCWFuZCBzL1wuNHMvXC5zL2dvOworCisJcHJpbnQgJF8sIlxuIjsKK30KKworY2xvc2UgU1RET1VUOwpkaWZmIC0tZ2l0IGEvY3J5cHRvL3NoYS9hc20vc2hhMjU2LWFybXY0LlMgYi9jcnlwdG8vc2hhL2FzbS9zaGEyNTYtYXJtdjQuUwppbmRleCA5YzIwYTYzLi44NTNkN2RhIDEwMDY0NAotLS0gYS9jcnlwdG8vc2hhL2FzbS9zaGEyNTYtYXJtdjQuUworKysgYi9jcnlwdG8vc2hhL2FzbS9zaGEyNTYtYXJtdjQuUwpAQCAtMjMsMTQ2MyArMjMsMTcyMSBAQAogLndvcmQJMHg3NDhmODJlZSwweDc4YTU2MzZmLDB4ODRjODc4MTQsMHg4Y2M3MDIwOAogLndvcmQJMHg5MGJlZmZmYSwweGE0NTA2Y2ViLDB4YmVmOWEzZjcsMHhjNjcxNzhmMgogLnNpemUJSzI1NiwuLUsyNTYKKy53b3JkCTAJCQkJQCB0ZXJtaW5hdG9yCisuTE9QRU5TU0xfYXJtY2FwOgorLndvcmQJT1BFTlNTTF9hcm1jYXBfUC1zaGEyNTZfYmxvY2tfZGF0YV9vcmRlcgorLmFsaWduCTUKIAogLmdsb2JhbAlzaGEyNTZfYmxvY2tfZGF0YV9vcmRlcgogLnR5cGUJc2hhMjU2X2Jsb2NrX2RhdGFfb3JkZXIsJWZ1bmN0aW9uCiBzaGEyNTZfYmxvY2tfZGF0YV9vcmRlcjoKIAlzdWIJcjMscGMsIzgJCUAgc2hhMjU2X2Jsb2NrX2RhdGFfb3JkZXIKIAlhZGQJcjIscjEscjIsbHNsIzYJQCBsZW4gdG8gcG9pbnQgYXQgdGhlIGVuZCBvZiBpbnAKKyNpZiBfX0FSTV9BUkNIX18+PTcKKwlsZHIJcjEyLC5MT1BFTlNTTF9hcm1jYXAKKwlsZHIJcjEyLFtyMyxyMTJdCQlAIE9QRU5TU0xfYXJtY2FwX1AKKwl0c3QJcjEyLCNBUk1WOF9TSEEyNTYKKwlibmUJLkxBUk12OAorCXRzdAlyMTIsI0FSTVY3X05FT04KKwlibmUJLkxORU9OCisjZW5kaWYKIAlzdG1kYglzcCEse3IwLHIxLHIyLHI0LXIxMSxscn0KIAlsZG1pYQlyMCx7cjQscjUscjYscjcscjgscjkscjEwLHIxMX0KLQlzdWIJcjE0LHIzLCMyNTYJCUAgSzI1NgorCXN1YglyMTQscjMsIzI1NiszMglAIEsyNTYKIAlzdWIJc3Asc3AsIzE2KjQJCUAgYWxsb2NhKFhbMTZdKQogLkxvb3A6CisjIGlmIF9fQVJNX0FSQ0hfXz49NworCWxkcglyMixbcjFdLCM0CisjIGVsc2UKKwlsZHJiCXIyLFtyMSwjM10KKyMgZW5kaWYKKwllb3IJcjMscjUscjYJCUAgbWFnaWMKKwllb3IJcjEyLHIxMixyMTIKICNpZiBfX0FSTV9BUkNIX18+PTcKLQlsZHIJcjMsW3IxXSwjNAorCUAgbGRyCXIyLFtyMV0sIzQJCQlAIDAKKyMgaWYgMD09MTUKKwlzdHIJcjEsW3NwLCMxNyo0XQkJCUAgbWFrZSByb29tIGZvciByMQorIyBlbmRpZgorCWVvcglyMCxyOCxyOCxyb3IjNQorCWFkZAlyNCxyNCxyMTIJCQlAIGgrPU1haihhLGIsYykgZnJvbSB0aGUgcGFzdAorCWVvcglyMCxyMCxyOCxyb3IjMTkJQCBTaWdtYTEoZSkKKwlyZXYJcjIscjIKICNlbHNlCi0JbGRyYglyMyxbcjEsIzNdCQkJQCAwCisJQCBsZHJiCXIyLFtyMSwjM10JCQlAIDAKKwlhZGQJcjQscjQscjEyCQkJQCBoKz1NYWooYSxiLGMpIGZyb20gdGhlIHBhc3QKIAlsZHJiCXIxMixbcjEsIzJdCi0JbGRyYglyMixbcjEsIzFdCi0JbGRyYglyMCxbcjFdLCM0Ci0Jb3JyCXIzLHIzLHIxMixsc2wjOAotCW9ycglyMyxyMyxyMixsc2wjMTYKLQlvcnIJcjMscjMscjAsbHNsIzI0CisJbGRyYglyMCxbcjEsIzFdCisJb3JyCXIyLHIyLHIxMixsc2wjOAorCWxkcmIJcjEyLFtyMV0sIzQKKwlvcnIJcjIscjIscjAsbHNsIzE2CisjIGlmIDA9PTE1CisJc3RyCXIxLFtzcCwjMTcqNF0JCQlAIG1ha2Ugcm9vbSBmb3IgcjEKKyMgZW5kaWYKKwllb3IJcjAscjgscjgscm9yIzUKKwlvcnIJcjIscjIscjEyLGxzbCMyNAorCWVvcglyMCxyMCxyOCxyb3IjMTkJQCBTaWdtYTEoZSkKICNlbmRpZgotCW1vdglyMCxyOCxyb3IjNgogCWxkcglyMTIsW3IxNF0sIzQJCQlAICpLMjU2KysKLQllb3IJcjAscjAscjgscm9yIzExCisJYWRkCXIxMSxyMTEscjIJCQlAIGgrPVhbaV0KKwlzdHIJcjIsW3NwLCMwKjRdCiAJZW9yCXIyLHI5LHIxMAotI2lmIDA+PTE2Ci0JYWRkCXIzLHIzLHIxCQkJQCBmcm9tIEJPRFlfMTZfeHgKLSNlbGlmIF9fQVJNX0FSQ0hfXz49NyAmJiBkZWZpbmVkKF9fQVJNRUxfXykKLQlyZXYJcjMscjMKLSNlbmRpZgotI2lmIDA9PTE1Ci0Jc3RyCXIxLFtzcCwjMTcqNF0JCQlAIGxlYXZlIHJvb20gZm9yIHIxCi0jZW5kaWYKLQllb3IJcjAscjAscjgscm9yIzI1CUAgU2lnbWExKGUpCisJYWRkCXIxMSxyMTEscjAscm9yIzYJQCBoKz1TaWdtYTEoZSkKIAlhbmQJcjIscjIscjgKLQlzdHIJcjMsW3NwLCMwKjRdCi0JYWRkCXIzLHIzLHIwCisJYWRkCXIxMSxyMTEscjEyCQkJQCBoKz1LMjU2W2ldCiAJZW9yCXIyLHIyLHIxMAkJCUAgQ2goZSxmLGcpCi0JYWRkCXIzLHIzLHIxMQotCW1vdglyMTEscjQscm9yIzIKLQlhZGQJcjMscjMscjIKLQllb3IJcjExLHIxMSxyNCxyb3IjMTMKLQlhZGQJcjMscjMscjEyCi0JZW9yCXIxMSxyMTEscjQscm9yIzIyCQlAIFNpZ21hMChhKQotI2lmIDA+PTE1Ci0JbGRyCXIxLFtzcCwjMio0XQkJQCBmcm9tIEJPRFlfMTZfeHgKLSNlbmRpZgotCW9ycglyMCxyNCxyNQotCWFuZAlyMixyNCxyNQotCWFuZAlyMCxyMCxyNgotCWFkZAlyMTEscjExLHIzCi0Jb3JyCXIwLHIwLHIyCQkJQCBNYWooYSxiLGMpCi0JYWRkCXI3LHI3LHIzCi0JYWRkCXIxMSxyMTEscjAKLSNpZiBfX0FSTV9BUkNIX18+PTcKLQlsZHIJcjMsW3IxXSwjNAotI2Vsc2UKLQlsZHJiCXIzLFtyMSwjM10JCQlAIDEKLQlsZHJiCXIxMixbcjEsIzJdCi0JbGRyYglyMixbcjEsIzFdCi0JbGRyYglyMCxbcjFdLCM0Ci0Jb3JyCXIzLHIzLHIxMixsc2wjOAotCW9ycglyMyxyMyxyMixsc2wjMTYKLQlvcnIJcjMscjMscjAsbHNsIzI0Ci0jZW5kaWYKLQltb3YJcjAscjcscm9yIzYKLQlsZHIJcjEyLFtyMTRdLCM0CQkJQCAqSzI1NisrCi0JZW9yCXIwLHIwLHI3LHJvciMxMQotCWVvcglyMixyOCxyOQotI2lmIDE+PTE2Ci0JYWRkCXIzLHIzLHIxCQkJQCBmcm9tIEJPRFlfMTZfeHgKLSNlbGlmIF9fQVJNX0FSQ0hfXz49NyAmJiBkZWZpbmVkKF9fQVJNRUxfXykKLQlyZXYJcjMscjMKLSNlbmRpZgotI2lmIDE9PTE1Ci0Jc3RyCXIxLFtzcCwjMTcqNF0JCQlAIGxlYXZlIHJvb20gZm9yIHIxCi0jZW5kaWYKLQllb3IJcjAscjAscjcscm9yIzI1CUAgU2lnbWExKGUpCi0JYW5kCXIyLHIyLHI3Ci0Jc3RyCXIzLFtzcCwjMSo0XQotCWFkZAlyMyxyMyxyMAotCWVvcglyMixyMixyOQkJCUAgQ2goZSxmLGcpCi0JYWRkCXIzLHIzLHIxMAotCW1vdglyMTAscjExLHJvciMyCi0JYWRkCXIzLHIzLHIyCi0JZW9yCXIxMCxyMTAscjExLHJvciMxMwotCWFkZAlyMyxyMyxyMTIKLQllb3IJcjEwLHIxMCxyMTEscm9yIzIyCQlAIFNpZ21hMChhKQotI2lmIDE+PTE1Ci0JbGRyCXIxLFtzcCwjMyo0XQkJQCBmcm9tIEJPRFlfMTZfeHgKLSNlbmRpZgotCW9ycglyMCxyMTEscjQKLQlhbmQJcjIscjExLHI0Ci0JYW5kCXIwLHIwLHI1Ci0JYWRkCXIxMCxyMTAscjMKLQlvcnIJcjAscjAscjIJCQlAIE1haihhLGIsYykKLQlhZGQJcjYscjYscjMKLQlhZGQJcjEwLHIxMCxyMAotI2lmIF9fQVJNX0FSQ0hfXz49NwotCWxkcglyMyxbcjFdLCM0Ci0jZWxzZQotCWxkcmIJcjMsW3IxLCMzXQkJCUAgMgotCWxkcmIJcjEyLFtyMSwjMl0KLQlsZHJiCXIyLFtyMSwjMV0KLQlsZHJiCXIwLFtyMV0sIzQKLQlvcnIJcjMscjMscjEyLGxzbCM4Ci0Jb3JyCXIzLHIzLHIyLGxzbCMxNgotCW9ycglyMyxyMyxyMCxsc2wjMjQKLSNlbmRpZgotCW1vdglyMCxyNixyb3IjNgotCWxkcglyMTIsW3IxNF0sIzQJCQlAICpLMjU2KysKLQllb3IJcjAscjAscjYscm9yIzExCi0JZW9yCXIyLHI3LHI4Ci0jaWYgMj49MTYKLQlhZGQJcjMscjMscjEJCQlAIGZyb20gQk9EWV8xNl94eAotI2VsaWYgX19BUk1fQVJDSF9fPj03ICYmIGRlZmluZWQoX19BUk1FTF9fKQotCXJldglyMyxyMwotI2VuZGlmCi0jaWYgMj09MTUKLQlzdHIJcjEsW3NwLCMxNyo0XQkJCUAgbGVhdmUgcm9vbSBmb3IgcjEKLSNlbmRpZgotCWVvcglyMCxyMCxyNixyb3IjMjUJQCBTaWdtYTEoZSkKLQlhbmQJcjIscjIscjYKLQlzdHIJcjMsW3NwLCMyKjRdCi0JYWRkCXIzLHIzLHIwCi0JZW9yCXIyLHIyLHI4CQkJQCBDaChlLGYsZykKLQlhZGQJcjMscjMscjkKLQltb3YJcjkscjEwLHJvciMyCi0JYWRkCXIzLHIzLHIyCi0JZW9yCXI5LHI5LHIxMCxyb3IjMTMKLQlhZGQJcjMscjMscjEyCi0JZW9yCXI5LHI5LHIxMCxyb3IjMjIJCUAgU2lnbWEwKGEpCi0jaWYgMj49MTUKLQlsZHIJcjEsW3NwLCM0KjRdCQlAIGZyb20gQk9EWV8xNl94eAotI2VuZGlmCi0Jb3JyCXIwLHIxMCxyMTEKLQlhbmQJcjIscjEwLHIxMQotCWFuZAlyMCxyMCxyNAotCWFkZAlyOSxyOSxyMwotCW9ycglyMCxyMCxyMgkJCUAgTWFqKGEsYixjKQotCWFkZAlyNSxyNSxyMwotCWFkZAlyOSxyOSxyMAotI2lmIF9fQVJNX0FSQ0hfXz49NwotCWxkcglyMyxbcjFdLCM0Ci0jZWxzZQotCWxkcmIJcjMsW3IxLCMzXQkJCUAgMwotCWxkcmIJcjEyLFtyMSwjMl0KLQlsZHJiCXIyLFtyMSwjMV0KLQlsZHJiCXIwLFtyMV0sIzQKLQlvcnIJcjMscjMscjEyLGxzbCM4Ci0Jb3JyCXIzLHIzLHIyLGxzbCMxNgotCW9ycglyMyxyMyxyMCxsc2wjMjQKLSNlbmRpZgotCW1vdglyMCxyNSxyb3IjNgotCWxkcglyMTIsW3IxNF0sIzQJCQlAICpLMjU2KysKLQllb3IJcjAscjAscjUscm9yIzExCi0JZW9yCXIyLHI2LHI3Ci0jaWYgMz49MTYKLQlhZGQJcjMscjMscjEJCQlAIGZyb20gQk9EWV8xNl94eAotI2VsaWYgX19BUk1fQVJDSF9fPj03ICYmIGRlZmluZWQoX19BUk1FTF9fKQotCXJldglyMyxyMwotI2VuZGlmCi0jaWYgMz09MTUKLQlzdHIJcjEsW3NwLCMxNyo0XQkJCUAgbGVhdmUgcm9vbSBmb3IgcjEKLSNlbmRpZgotCWVvcglyMCxyMCxyNSxyb3IjMjUJQCBTaWdtYTEoZSkKLQlhbmQJcjIscjIscjUKLQlzdHIJcjMsW3NwLCMzKjRdCi0JYWRkCXIzLHIzLHIwCi0JZW9yCXIyLHIyLHI3CQkJQCBDaChlLGYsZykKLQlhZGQJcjMscjMscjgKLQltb3YJcjgscjkscm9yIzIKLQlhZGQJcjMscjMscjIKLQllb3IJcjgscjgscjkscm9yIzEzCi0JYWRkCXIzLHIzLHIxMgotCWVvcglyOCxyOCxyOSxyb3IjMjIJCUAgU2lnbWEwKGEpCi0jaWYgMz49MTUKLQlsZHIJcjEsW3NwLCM1KjRdCQlAIGZyb20gQk9EWV8xNl94eAotI2VuZGlmCi0Jb3JyCXIwLHI5LHIxMAotCWFuZAlyMixyOSxyMTAKLQlhbmQJcjAscjAscjExCi0JYWRkCXI4LHI4LHIzCi0Jb3JyCXIwLHIwLHIyCQkJQCBNYWooYSxiLGMpCi0JYWRkCXI0LHI0LHIzCi0JYWRkCXI4LHI4LHIwCi0jaWYgX19BUk1fQVJDSF9fPj03Ci0JbGRyCXIzLFtyMV0sIzQKLSNlbHNlCi0JbGRyYglyMyxbcjEsIzNdCQkJQCA0Ci0JbGRyYglyMTIsW3IxLCMyXQotCWxkcmIJcjIsW3IxLCMxXQotCWxkcmIJcjAsW3IxXSwjNAotCW9ycglyMyxyMyxyMTIsbHNsIzgKLQlvcnIJcjMscjMscjIsbHNsIzE2Ci0Jb3JyCXIzLHIzLHIwLGxzbCMyNAotI2VuZGlmCi0JbW92CXIwLHI0LHJvciM2Ci0JbGRyCXIxMixbcjE0XSwjNAkJCUAgKksyNTYrKwotCWVvcglyMCxyMCxyNCxyb3IjMTEKLQllb3IJcjIscjUscjYKLSNpZiA0Pj0xNgotCWFkZAlyMyxyMyxyMQkJCUAgZnJvbSBCT0RZXzE2X3h4Ci0jZWxpZiBfX0FSTV9BUkNIX18+PTcgJiYgZGVmaW5lZChfX0FSTUVMX18pCi0JcmV2CXIzLHIzCi0jZW5kaWYKLSNpZiA0PT0xNQotCXN0cglyMSxbc3AsIzE3KjRdCQkJQCBsZWF2ZSByb29tIGZvciByMQotI2VuZGlmCi0JZW9yCXIwLHIwLHI0LHJvciMyNQlAIFNpZ21hMShlKQotCWFuZAlyMixyMixyNAotCXN0cglyMyxbc3AsIzQqNF0KLQlhZGQJcjMscjMscjAKLQllb3IJcjIscjIscjYJCQlAIENoKGUsZixnKQotCWFkZAlyMyxyMyxyNwotCW1vdglyNyxyOCxyb3IjMgotCWFkZAlyMyxyMyxyMgotCWVvcglyNyxyNyxyOCxyb3IjMTMKLQlhZGQJcjMscjMscjEyCi0JZW9yCXI3LHI3LHI4LHJvciMyMgkJQCBTaWdtYTAoYSkKLSNpZiA0Pj0xNQotCWxkcglyMSxbc3AsIzYqNF0JCUAgZnJvbSBCT0RZXzE2X3h4Ci0jZW5kaWYKLQlvcnIJcjAscjgscjkKLQlhbmQJcjIscjgscjkKLQlhbmQJcjAscjAscjEwCi0JYWRkCXI3LHI3LHIzCi0Jb3JyCXIwLHIwLHIyCQkJQCBNYWooYSxiLGMpCi0JYWRkCXIxMSxyMTEscjMKLQlhZGQJcjcscjcscjAKLSNpZiBfX0FSTV9BUkNIX18+PTcKLQlsZHIJcjMsW3IxXSwjNAotI2Vsc2UKLQlsZHJiCXIzLFtyMSwjM10JCQlAIDUKLQlsZHJiCXIxMixbcjEsIzJdCi0JbGRyYglyMixbcjEsIzFdCi0JbGRyYglyMCxbcjFdLCM0Ci0Jb3JyCXIzLHIzLHIxMixsc2wjOAotCW9ycglyMyxyMyxyMixsc2wjMTYKLQlvcnIJcjMscjMscjAsbHNsIzI0Ci0jZW5kaWYKLQltb3YJcjAscjExLHJvciM2Ci0JbGRyCXIxMixbcjE0XSwjNAkJCUAgKksyNTYrKwotCWVvcglyMCxyMCxyMTEscm9yIzExCi0JZW9yCXIyLHI0LHI1Ci0jaWYgNT49MTYKLQlhZGQJcjMscjMscjEJCQlAIGZyb20gQk9EWV8xNl94eAotI2VsaWYgX19BUk1fQVJDSF9fPj03ICYmIGRlZmluZWQoX19BUk1FTF9fKQotCXJldglyMyxyMwotI2VuZGlmCi0jaWYgNT09MTUKLQlzdHIJcjEsW3NwLCMxNyo0XQkJCUAgbGVhdmUgcm9vbSBmb3IgcjEKLSNlbmRpZgotCWVvcglyMCxyMCxyMTEscm9yIzI1CUAgU2lnbWExKGUpCi0JYW5kCXIyLHIyLHIxMQotCXN0cglyMyxbc3AsIzUqNF0KLQlhZGQJcjMscjMscjAKLQllb3IJcjIscjIscjUJCQlAIENoKGUsZixnKQotCWFkZAlyMyxyMyxyNgotCW1vdglyNixyNyxyb3IjMgotCWFkZAlyMyxyMyxyMgotCWVvcglyNixyNixyNyxyb3IjMTMKLQlhZGQJcjMscjMscjEyCi0JZW9yCXI2LHI2LHI3LHJvciMyMgkJQCBTaWdtYTAoYSkKLSNpZiA1Pj0xNQotCWxkcglyMSxbc3AsIzcqNF0JCUAgZnJvbSBCT0RZXzE2X3h4Ci0jZW5kaWYKLQlvcnIJcjAscjcscjgKLQlhbmQJcjIscjcscjgKLQlhbmQJcjAscjAscjkKLQlhZGQJcjYscjYscjMKLQlvcnIJcjAscjAscjIJCQlAIE1haihhLGIsYykKLQlhZGQJcjEwLHIxMCxyMwotCWFkZAlyNixyNixyMAotI2lmIF9fQVJNX0FSQ0hfXz49NwotCWxkcglyMyxbcjFdLCM0Ci0jZWxzZQotCWxkcmIJcjMsW3IxLCMzXQkJCUAgNgotCWxkcmIJcjEyLFtyMSwjMl0KLQlsZHJiCXIyLFtyMSwjMV0KLQlsZHJiCXIwLFtyMV0sIzQKLQlvcnIJcjMscjMscjEyLGxzbCM4Ci0Jb3JyCXIzLHIzLHIyLGxzbCMxNgotCW9ycglyMyxyMyxyMCxsc2wjMjQKLSNlbmRpZgotCW1vdglyMCxyMTAscm9yIzYKLQlsZHIJcjEyLFtyMTRdLCM0CQkJQCAqSzI1NisrCi0JZW9yCXIwLHIwLHIxMCxyb3IjMTEKLQllb3IJcjIscjExLHI0Ci0jaWYgNj49MTYKLQlhZGQJcjMscjMscjEJCQlAIGZyb20gQk9EWV8xNl94eAotI2VsaWYgX19BUk1fQVJDSF9fPj03ICYmIGRlZmluZWQoX19BUk1FTF9fKQotCXJldglyMyxyMwotI2VuZGlmCi0jaWYgNj09MTUKLQlzdHIJcjEsW3NwLCMxNyo0XQkJCUAgbGVhdmUgcm9vbSBmb3IgcjEKLSNlbmRpZgotCWVvcglyMCxyMCxyMTAscm9yIzI1CUAgU2lnbWExKGUpCi0JYW5kCXIyLHIyLHIxMAotCXN0cglyMyxbc3AsIzYqNF0KLQlhZGQJcjMscjMscjAKLQllb3IJcjIscjIscjQJCQlAIENoKGUsZixnKQotCWFkZAlyMyxyMyxyNQotCW1vdglyNSxyNixyb3IjMgotCWFkZAlyMyxyMyxyMgotCWVvcglyNSxyNSxyNixyb3IjMTMKLQlhZGQJcjMscjMscjEyCi0JZW9yCXI1LHI1LHI2LHJvciMyMgkJQCBTaWdtYTAoYSkKLSNpZiA2Pj0xNQotCWxkcglyMSxbc3AsIzgqNF0JCUAgZnJvbSBCT0RZXzE2X3h4Ci0jZW5kaWYKLQlvcnIJcjAscjYscjcKLQlhbmQJcjIscjYscjcKLQlhbmQJcjAscjAscjgKLQlhZGQJcjUscjUscjMKLQlvcnIJcjAscjAscjIJCQlAIE1haihhLGIsYykKLQlhZGQJcjkscjkscjMKLQlhZGQJcjUscjUscjAKLSNpZiBfX0FSTV9BUkNIX18+PTcKLQlsZHIJcjMsW3IxXSwjNAotI2Vsc2UKLQlsZHJiCXIzLFtyMSwjM10JCQlAIDcKLQlsZHJiCXIxMixbcjEsIzJdCi0JbGRyYglyMixbcjEsIzFdCi0JbGRyYglyMCxbcjFdLCM0Ci0Jb3JyCXIzLHIzLHIxMixsc2wjOAotCW9ycglyMyxyMyxyMixsc2wjMTYKLQlvcnIJcjMscjMscjAsbHNsIzI0Ci0jZW5kaWYKLQltb3YJcjAscjkscm9yIzYKLQlsZHIJcjEyLFtyMTRdLCM0CQkJQCAqSzI1NisrCi0JZW9yCXIwLHIwLHI5LHJvciMxMQotCWVvcglyMixyMTAscjExCi0jaWYgNz49MTYKLQlhZGQJcjMscjMscjEJCQlAIGZyb20gQk9EWV8xNl94eAotI2VsaWYgX19BUk1fQVJDSF9fPj03ICYmIGRlZmluZWQoX19BUk1FTF9fKQotCXJldglyMyxyMwotI2VuZGlmCi0jaWYgNz09MTUKLQlzdHIJcjEsW3NwLCMxNyo0XQkJCUAgbGVhdmUgcm9vbSBmb3IgcjEKLSNlbmRpZgotCWVvcglyMCxyMCxyOSxyb3IjMjUJQCBTaWdtYTEoZSkKLQlhbmQJcjIscjIscjkKLQlzdHIJcjMsW3NwLCM3KjRdCi0JYWRkCXIzLHIzLHIwCi0JZW9yCXIyLHIyLHIxMQkJCUAgQ2goZSxmLGcpCi0JYWRkCXIzLHIzLHI0Ci0JbW92CXI0LHI1LHJvciMyCi0JYWRkCXIzLHIzLHIyCi0JZW9yCXI0LHI0LHI1LHJvciMxMwotCWFkZAlyMyxyMyxyMTIKLQllb3IJcjQscjQscjUscm9yIzIyCQlAIFNpZ21hMChhKQotI2lmIDc+PTE1Ci0JbGRyCXIxLFtzcCwjOSo0XQkJQCBmcm9tIEJPRFlfMTZfeHgKLSNlbmRpZgotCW9ycglyMCxyNSxyNgotCWFuZAlyMixyNSxyNgotCWFuZAlyMCxyMCxyNwotCWFkZAlyNCxyNCxyMwotCW9ycglyMCxyMCxyMgkJCUAgTWFqKGEsYixjKQotCWFkZAlyOCxyOCxyMwotCWFkZAlyNCxyNCxyMAotI2lmIF9fQVJNX0FSQ0hfXz49NwotCWxkcglyMyxbcjFdLCM0Ci0jZWxzZQotCWxkcmIJcjMsW3IxLCMzXQkJCUAgOAotCWxkcmIJcjEyLFtyMSwjMl0KLQlsZHJiCXIyLFtyMSwjMV0KLQlsZHJiCXIwLFtyMV0sIzQKLQlvcnIJcjMscjMscjEyLGxzbCM4Ci0Jb3JyCXIzLHIzLHIyLGxzbCMxNgotCW9ycglyMyxyMyxyMCxsc2wjMjQKLSNlbmRpZgotCW1vdglyMCxyOCxyb3IjNgotCWxkcglyMTIsW3IxNF0sIzQJCQlAICpLMjU2KysKLQllb3IJcjAscjAscjgscm9yIzExCi0JZW9yCXIyLHI5LHIxMAotI2lmIDg+PTE2Ci0JYWRkCXIzLHIzLHIxCQkJQCBmcm9tIEJPRFlfMTZfeHgKLSNlbGlmIF9fQVJNX0FSQ0hfXz49NyAmJiBkZWZpbmVkKF9fQVJNRUxfXykKLQlyZXYJcjMscjMKLSNlbmRpZgotI2lmIDg9PTE1Ci0Jc3RyCXIxLFtzcCwjMTcqNF0JCQlAIGxlYXZlIHJvb20gZm9yIHIxCi0jZW5kaWYKLQllb3IJcjAscjAscjgscm9yIzI1CUAgU2lnbWExKGUpCi0JYW5kCXIyLHIyLHI4Ci0Jc3RyCXIzLFtzcCwjOCo0XQotCWFkZAlyMyxyMyxyMAotCWVvcglyMixyMixyMTAJCQlAIENoKGUsZixnKQotCWFkZAlyMyxyMyxyMTEKLQltb3YJcjExLHI0LHJvciMyCi0JYWRkCXIzLHIzLHIyCi0JZW9yCXIxMSxyMTEscjQscm9yIzEzCi0JYWRkCXIzLHIzLHIxMgotCWVvcglyMTEscjExLHI0LHJvciMyMgkJQCBTaWdtYTAoYSkKLSNpZiA4Pj0xNQotCWxkcglyMSxbc3AsIzEwKjRdCQlAIGZyb20gQk9EWV8xNl94eAotI2VuZGlmCi0Jb3JyCXIwLHI0LHI1Ci0JYW5kCXIyLHI0LHI1Ci0JYW5kCXIwLHIwLHI2Ci0JYWRkCXIxMSxyMTEscjMKLQlvcnIJcjAscjAscjIJCQlAIE1haihhLGIsYykKLQlhZGQJcjcscjcscjMKLQlhZGQJcjExLHIxMSxyMAotI2lmIF9fQVJNX0FSQ0hfXz49NwotCWxkcglyMyxbcjFdLCM0Ci0jZWxzZQotCWxkcmIJcjMsW3IxLCMzXQkJCUAgOQotCWxkcmIJcjEyLFtyMSwjMl0KLQlsZHJiCXIyLFtyMSwjMV0KLQlsZHJiCXIwLFtyMV0sIzQKLQlvcnIJcjMscjMscjEyLGxzbCM4Ci0Jb3JyCXIzLHIzLHIyLGxzbCMxNgotCW9ycglyMyxyMyxyMCxsc2wjMjQKLSNlbmRpZgotCW1vdglyMCxyNyxyb3IjNgotCWxkcglyMTIsW3IxNF0sIzQJCQlAICpLMjU2KysKLQllb3IJcjAscjAscjcscm9yIzExCi0JZW9yCXIyLHI4LHI5Ci0jaWYgOT49MTYKLQlhZGQJcjMscjMscjEJCQlAIGZyb20gQk9EWV8xNl94eAotI2VsaWYgX19BUk1fQVJDSF9fPj03ICYmIGRlZmluZWQoX19BUk1FTF9fKQotCXJldglyMyxyMwotI2VuZGlmCi0jaWYgOT09MTUKLQlzdHIJcjEsW3NwLCMxNyo0XQkJCUAgbGVhdmUgcm9vbSBmb3IgcjEKLSNlbmRpZgotCWVvcglyMCxyMCxyNyxyb3IjMjUJQCBTaWdtYTEoZSkKLQlhbmQJcjIscjIscjcKLQlzdHIJcjMsW3NwLCM5KjRdCi0JYWRkCXIzLHIzLHIwCi0JZW9yCXIyLHIyLHI5CQkJQCBDaChlLGYsZykKLQlhZGQJcjMscjMscjEwCi0JbW92CXIxMCxyMTEscm9yIzIKLQlhZGQJcjMscjMscjIKLQllb3IJcjEwLHIxMCxyMTEscm9yIzEzCi0JYWRkCXIzLHIzLHIxMgotCWVvcglyMTAscjEwLHIxMSxyb3IjMjIJCUAgU2lnbWEwKGEpCi0jaWYgOT49MTUKLQlsZHIJcjEsW3NwLCMxMSo0XQkJQCBmcm9tIEJPRFlfMTZfeHgKLSNlbmRpZgotCW9ycglyMCxyMTEscjQKLQlhbmQJcjIscjExLHI0Ci0JYW5kCXIwLHIwLHI1Ci0JYWRkCXIxMCxyMTAscjMKLQlvcnIJcjAscjAscjIJCQlAIE1haihhLGIsYykKLQlhZGQJcjYscjYscjMKLQlhZGQJcjEwLHIxMCxyMAotI2lmIF9fQVJNX0FSQ0hfXz49NwotCWxkcglyMyxbcjFdLCM0Ci0jZWxzZQotCWxkcmIJcjMsW3IxLCMzXQkJCUAgMTAKLQlsZHJiCXIxMixbcjEsIzJdCi0JbGRyYglyMixbcjEsIzFdCi0JbGRyYglyMCxbcjFdLCM0Ci0Jb3JyCXIzLHIzLHIxMixsc2wjOAotCW9ycglyMyxyMyxyMixsc2wjMTYKLQlvcnIJcjMscjMscjAsbHNsIzI0Ci0jZW5kaWYKLQltb3YJcjAscjYscm9yIzYKLQlsZHIJcjEyLFtyMTRdLCM0CQkJQCAqSzI1NisrCi0JZW9yCXIwLHIwLHI2LHJvciMxMQotCWVvcglyMixyNyxyOAotI2lmIDEwPj0xNgotCWFkZAlyMyxyMyxyMQkJCUAgZnJvbSBCT0RZXzE2X3h4Ci0jZWxpZiBfX0FSTV9BUkNIX18+PTcgJiYgZGVmaW5lZChfX0FSTUVMX18pCi0JcmV2CXIzLHIzCi0jZW5kaWYKLSNpZiAxMD09MTUKLQlzdHIJcjEsW3NwLCMxNyo0XQkJCUAgbGVhdmUgcm9vbSBmb3IgcjEKLSNlbmRpZgotCWVvcglyMCxyMCxyNixyb3IjMjUJQCBTaWdtYTEoZSkKLQlhbmQJcjIscjIscjYKLQlzdHIJcjMsW3NwLCMxMCo0XQotCWFkZAlyMyxyMyxyMAotCWVvcglyMixyMixyOAkJCUAgQ2goZSxmLGcpCi0JYWRkCXIzLHIzLHI5Ci0JbW92CXI5LHIxMCxyb3IjMgotCWFkZAlyMyxyMyxyMgotCWVvcglyOSxyOSxyMTAscm9yIzEzCi0JYWRkCXIzLHIzLHIxMgotCWVvcglyOSxyOSxyMTAscm9yIzIyCQlAIFNpZ21hMChhKQotI2lmIDEwPj0xNQotCWxkcglyMSxbc3AsIzEyKjRdCQlAIGZyb20gQk9EWV8xNl94eAotI2VuZGlmCi0Jb3JyCXIwLHIxMCxyMTEKLQlhbmQJcjIscjEwLHIxMQotCWFuZAlyMCxyMCxyNAotCWFkZAlyOSxyOSxyMwotCW9ycglyMCxyMCxyMgkJCUAgTWFqKGEsYixjKQotCWFkZAlyNSxyNSxyMwotCWFkZAlyOSxyOSxyMAotI2lmIF9fQVJNX0FSQ0hfXz49NwotCWxkcglyMyxbcjFdLCM0Ci0jZWxzZQotCWxkcmIJcjMsW3IxLCMzXQkJCUAgMTEKLQlsZHJiCXIxMixbcjEsIzJdCi0JbGRyYglyMixbcjEsIzFdCi0JbGRyYglyMCxbcjFdLCM0Ci0Jb3JyCXIzLHIzLHIxMixsc2wjOAotCW9ycglyMyxyMyxyMixsc2wjMTYKLQlvcnIJcjMscjMscjAsbHNsIzI0Ci0jZW5kaWYKLQltb3YJcjAscjUscm9yIzYKLQlsZHIJcjEyLFtyMTRdLCM0CQkJQCAqSzI1NisrCi0JZW9yCXIwLHIwLHI1LHJvciMxMQotCWVvcglyMixyNixyNwotI2lmIDExPj0xNgotCWFkZAlyMyxyMyxyMQkJCUAgZnJvbSBCT0RZXzE2X3h4Ci0jZWxpZiBfX0FSTV9BUkNIX18+PTcgJiYgZGVmaW5lZChfX0FSTUVMX18pCi0JcmV2CXIzLHIzCi0jZW5kaWYKLSNpZiAxMT09MTUKLQlzdHIJcjEsW3NwLCMxNyo0XQkJCUAgbGVhdmUgcm9vbSBmb3IgcjEKLSNlbmRpZgotCWVvcglyMCxyMCxyNSxyb3IjMjUJQCBTaWdtYTEoZSkKLQlhbmQJcjIscjIscjUKLQlzdHIJcjMsW3NwLCMxMSo0XQotCWFkZAlyMyxyMyxyMAotCWVvcglyMixyMixyNwkJCUAgQ2goZSxmLGcpCi0JYWRkCXIzLHIzLHI4Ci0JbW92CXI4LHI5LHJvciMyCi0JYWRkCXIzLHIzLHIyCi0JZW9yCXI4LHI4LHI5LHJvciMxMwotCWFkZAlyMyxyMyxyMTIKLQllb3IJcjgscjgscjkscm9yIzIyCQlAIFNpZ21hMChhKQotI2lmIDExPj0xNQotCWxkcglyMSxbc3AsIzEzKjRdCQlAIGZyb20gQk9EWV8xNl94eAotI2VuZGlmCi0Jb3JyCXIwLHI5LHIxMAotCWFuZAlyMixyOSxyMTAKLQlhbmQJcjAscjAscjExCi0JYWRkCXI4LHI4LHIzCi0Jb3JyCXIwLHIwLHIyCQkJQCBNYWooYSxiLGMpCi0JYWRkCXI0LHI0LHIzCi0JYWRkCXI4LHI4LHIwCi0jaWYgX19BUk1fQVJDSF9fPj03Ci0JbGRyCXIzLFtyMV0sIzQKLSNlbHNlCi0JbGRyYglyMyxbcjEsIzNdCQkJQCAxMgotCWxkcmIJcjEyLFtyMSwjMl0KLQlsZHJiCXIyLFtyMSwjMV0KLQlsZHJiCXIwLFtyMV0sIzQKLQlvcnIJcjMscjMscjEyLGxzbCM4Ci0Jb3JyCXIzLHIzLHIyLGxzbCMxNgotCW9ycglyMyxyMyxyMCxsc2wjMjQKLSNlbmRpZgotCW1vdglyMCxyNCxyb3IjNgotCWxkcglyMTIsW3IxNF0sIzQJCQlAICpLMjU2KysKLQllb3IJcjAscjAscjQscm9yIzExCi0JZW9yCXIyLHI1LHI2Ci0jaWYgMTI+PTE2Ci0JYWRkCXIzLHIzLHIxCQkJQCBmcm9tIEJPRFlfMTZfeHgKLSNlbGlmIF9fQVJNX0FSQ0hfXz49NyAmJiBkZWZpbmVkKF9fQVJNRUxfXykKLQlyZXYJcjMscjMKLSNlbmRpZgotI2lmIDEyPT0xNQotCXN0cglyMSxbc3AsIzE3KjRdCQkJQCBsZWF2ZSByb29tIGZvciByMQotI2VuZGlmCi0JZW9yCXIwLHIwLHI0LHJvciMyNQlAIFNpZ21hMShlKQotCWFuZAlyMixyMixyNAotCXN0cglyMyxbc3AsIzEyKjRdCi0JYWRkCXIzLHIzLHIwCi0JZW9yCXIyLHIyLHI2CQkJQCBDaChlLGYsZykKLQlhZGQJcjMscjMscjcKLQltb3YJcjcscjgscm9yIzIKLQlhZGQJcjMscjMscjIKLQllb3IJcjcscjcscjgscm9yIzEzCi0JYWRkCXIzLHIzLHIxMgotCWVvcglyNyxyNyxyOCxyb3IjMjIJCUAgU2lnbWEwKGEpCi0jaWYgMTI+PTE1Ci0JbGRyCXIxLFtzcCwjMTQqNF0JCUAgZnJvbSBCT0RZXzE2X3h4Ci0jZW5kaWYKLQlvcnIJcjAscjgscjkKLQlhbmQJcjIscjgscjkKLQlhbmQJcjAscjAscjEwCi0JYWRkCXI3LHI3LHIzCi0Jb3JyCXIwLHIwLHIyCQkJQCBNYWooYSxiLGMpCi0JYWRkCXIxMSxyMTEscjMKLQlhZGQJcjcscjcscjAKLSNpZiBfX0FSTV9BUkNIX18+PTcKLQlsZHIJcjMsW3IxXSwjNAotI2Vsc2UKLQlsZHJiCXIzLFtyMSwjM10JCQlAIDEzCi0JbGRyYglyMTIsW3IxLCMyXQotCWxkcmIJcjIsW3IxLCMxXQotCWxkcmIJcjAsW3IxXSwjNAotCW9ycglyMyxyMyxyMTIsbHNsIzgKLQlvcnIJcjMscjMscjIsbHNsIzE2Ci0Jb3JyCXIzLHIzLHIwLGxzbCMyNAotI2VuZGlmCi0JbW92CXIwLHIxMSxyb3IjNgotCWxkcglyMTIsW3IxNF0sIzQJCQlAICpLMjU2KysKLQllb3IJcjAscjAscjExLHJvciMxMQotCWVvcglyMixyNCxyNQotI2lmIDEzPj0xNgotCWFkZAlyMyxyMyxyMQkJCUAgZnJvbSBCT0RZXzE2X3h4Ci0jZWxpZiBfX0FSTV9BUkNIX18+PTcgJiYgZGVmaW5lZChfX0FSTUVMX18pCi0JcmV2CXIzLHIzCi0jZW5kaWYKLSNpZiAxMz09MTUKLQlzdHIJcjEsW3NwLCMxNyo0XQkJCUAgbGVhdmUgcm9vbSBmb3IgcjEKLSNlbmRpZgotCWVvcglyMCxyMCxyMTEscm9yIzI1CUAgU2lnbWExKGUpCi0JYW5kCXIyLHIyLHIxMQotCXN0cglyMyxbc3AsIzEzKjRdCi0JYWRkCXIzLHIzLHIwCi0JZW9yCXIyLHIyLHI1CQkJQCBDaChlLGYsZykKLQlhZGQJcjMscjMscjYKLQltb3YJcjYscjcscm9yIzIKLQlhZGQJcjMscjMscjIKLQllb3IJcjYscjYscjcscm9yIzEzCi0JYWRkCXIzLHIzLHIxMgotCWVvcglyNixyNixyNyxyb3IjMjIJCUAgU2lnbWEwKGEpCi0jaWYgMTM+PTE1Ci0JbGRyCXIxLFtzcCwjMTUqNF0JCUAgZnJvbSBCT0RZXzE2X3h4Ci0jZW5kaWYKLQlvcnIJcjAscjcscjgKLQlhbmQJcjIscjcscjgKLQlhbmQJcjAscjAscjkKLQlhZGQJcjYscjYscjMKLQlvcnIJcjAscjAscjIJCQlAIE1haihhLGIsYykKLQlhZGQJcjEwLHIxMCxyMwotCWFkZAlyNixyNixyMAotI2lmIF9fQVJNX0FSQ0hfXz49NwotCWxkcglyMyxbcjFdLCM0Ci0jZWxzZQotCWxkcmIJcjMsW3IxLCMzXQkJCUAgMTQKLQlsZHJiCXIxMixbcjEsIzJdCi0JbGRyYglyMixbcjEsIzFdCi0JbGRyYglyMCxbcjFdLCM0Ci0Jb3JyCXIzLHIzLHIxMixsc2wjOAotCW9ycglyMyxyMyxyMixsc2wjMTYKLQlvcnIJcjMscjMscjAsbHNsIzI0Ci0jZW5kaWYKLQltb3YJcjAscjEwLHJvciM2Ci0JbGRyCXIxMixbcjE0XSwjNAkJCUAgKksyNTYrKwotCWVvcglyMCxyMCxyMTAscm9yIzExCi0JZW9yCXIyLHIxMSxyNAotI2lmIDE0Pj0xNgotCWFkZAlyMyxyMyxyMQkJCUAgZnJvbSBCT0RZXzE2X3h4Ci0jZWxpZiBfX0FSTV9BUkNIX18+PTcgJiYgZGVmaW5lZChfX0FSTUVMX18pCi0JcmV2CXIzLHIzCi0jZW5kaWYKLSNpZiAxND09MTUKLQlzdHIJcjEsW3NwLCMxNyo0XQkJCUAgbGVhdmUgcm9vbSBmb3IgcjEKLSNlbmRpZgotCWVvcglyMCxyMCxyMTAscm9yIzI1CUAgU2lnbWExKGUpCi0JYW5kCXIyLHIyLHIxMAotCXN0cglyMyxbc3AsIzE0KjRdCi0JYWRkCXIzLHIzLHIwCi0JZW9yCXIyLHIyLHI0CQkJQCBDaChlLGYsZykKLQlhZGQJcjMscjMscjUKLQltb3YJcjUscjYscm9yIzIKLQlhZGQJcjMscjMscjIKLQllb3IJcjUscjUscjYscm9yIzEzCi0JYWRkCXIzLHIzLHIxMgotCWVvcglyNSxyNSxyNixyb3IjMjIJCUAgU2lnbWEwKGEpCi0jaWYgMTQ+PTE1Ci0JbGRyCXIxLFtzcCwjMCo0XQkJQCBmcm9tIEJPRFlfMTZfeHgKLSNlbmRpZgotCW9ycglyMCxyNixyNwotCWFuZAlyMixyNixyNwotCWFuZAlyMCxyMCxyOAotCWFkZAlyNSxyNSxyMwotCW9ycglyMCxyMCxyMgkJCUAgTWFqKGEsYixjKQotCWFkZAlyOSxyOSxyMwotCWFkZAlyNSxyNSxyMAotI2lmIF9fQVJNX0FSQ0hfXz49NwotCWxkcglyMyxbcjFdLCM0Ci0jZWxzZQotCWxkcmIJcjMsW3IxLCMzXQkJCUAgMTUKLQlsZHJiCXIxMixbcjEsIzJdCi0JbGRyYglyMixbcjEsIzFdCi0JbGRyYglyMCxbcjFdLCM0Ci0Jb3JyCXIzLHIzLHIxMixsc2wjOAotCW9ycglyMyxyMyxyMixsc2wjMTYKLQlvcnIJcjMscjMscjAsbHNsIzI0Ci0jZW5kaWYKLQltb3YJcjAscjkscm9yIzYKLQlsZHIJcjEyLFtyMTRdLCM0CQkJQCAqSzI1NisrCi0JZW9yCXIwLHIwLHI5LHJvciMxMQotCWVvcglyMixyMTAscjExCi0jaWYgMTU+PTE2Ci0JYWRkCXIzLHIzLHIxCQkJQCBmcm9tIEJPRFlfMTZfeHgKLSNlbGlmIF9fQVJNX0FSQ0hfXz49NyAmJiBkZWZpbmVkKF9fQVJNRUxfXykKLQlyZXYJcjMscjMKLSNlbmRpZgotI2lmIDE1PT0xNQotCXN0cglyMSxbc3AsIzE3KjRdCQkJQCBsZWF2ZSByb29tIGZvciByMQotI2VuZGlmCi0JZW9yCXIwLHIwLHI5LHJvciMyNQlAIFNpZ21hMShlKQotCWFuZAlyMixyMixyOQotCXN0cglyMyxbc3AsIzE1KjRdCi0JYWRkCXIzLHIzLHIwCi0JZW9yCXIyLHIyLHIxMQkJCUAgQ2goZSxmLGcpCi0JYWRkCXIzLHIzLHI0Ci0JbW92CXI0LHI1LHJvciMyCi0JYWRkCXIzLHIzLHIyCi0JZW9yCXI0LHI0LHI1LHJvciMxMwotCWFkZAlyMyxyMyxyMTIKLQllb3IJcjQscjQscjUscm9yIzIyCQlAIFNpZ21hMChhKQotI2lmIDE1Pj0xNQotCWxkcglyMSxbc3AsIzEqNF0JCUAgZnJvbSBCT0RZXzE2X3h4Ci0jZW5kaWYKLQlvcnIJcjAscjUscjYKLQlhbmQJcjIscjUscjYKLQlhbmQJcjAscjAscjcKLQlhZGQJcjQscjQscjMKLQlvcnIJcjAscjAscjIJCQlAIE1haihhLGIsYykKLQlhZGQJcjgscjgscjMKLQlhZGQJcjQscjQscjAKLS5Mcm91bmRzXzE2X3h4OgotCUAgbGRyCXIxLFtzcCwjMSo0XQkJQCAxNgotCWxkcglyMTIsW3NwLCMxNCo0XQotCW1vdglyMCxyMSxyb3IjNwotCWxkcglyMyxbc3AsIzAqNF0KLQllb3IJcjAscjAscjEscm9yIzE4Ci0JbGRyCXIyLFtzcCwjOSo0XQotCWVvcglyMCxyMCxyMSxsc3IjMwlAIHNpZ21hMChYW2krMV0pCi0JbW92CXIxLHIxMixyb3IjMTcKLQlhZGQJcjMscjMscjAKLQllb3IJcjEscjEscjEyLHJvciMxOQotCWFkZAlyMyxyMyxyMgotCWVvcglyMSxyMSxyMTIsbHNyIzEwCUAgc2lnbWExKFhbaSsxNF0pCi0JQCBhZGQJcjMscjMscjEKLQltb3YJcjAscjgscm9yIzYKLQlsZHIJcjEyLFtyMTRdLCM0CQkJQCAqSzI1NisrCi0JZW9yCXIwLHIwLHI4LHJvciMxMQotCWVvcglyMixyOSxyMTAKLSNpZiAxNj49MTYKLQlhZGQJcjMscjMscjEJCQlAIGZyb20gQk9EWV8xNl94eAotI2VsaWYgX19BUk1fQVJDSF9fPj03ICYmIGRlZmluZWQoX19BUk1FTF9fKQotCXJldglyMyxyMwotI2VuZGlmCi0jaWYgMTY9PTE1Ci0Jc3RyCXIxLFtzcCwjMTcqNF0JCQlAIGxlYXZlIHJvb20gZm9yIHIxCi0jZW5kaWYKLQllb3IJcjAscjAscjgscm9yIzI1CUAgU2lnbWExKGUpCi0JYW5kCXIyLHIyLHI4Ci0Jc3RyCXIzLFtzcCwjMCo0XQotCWFkZAlyMyxyMyxyMAotCWVvcglyMixyMixyMTAJCQlAIENoKGUsZixnKQotCWFkZAlyMyxyMyxyMTEKLQltb3YJcjExLHI0LHJvciMyCi0JYWRkCXIzLHIzLHIyCi0JZW9yCXIxMSxyMTEscjQscm9yIzEzCi0JYWRkCXIzLHIzLHIxMgotCWVvcglyMTEscjExLHI0LHJvciMyMgkJQCBTaWdtYTAoYSkKLSNpZiAxNj49MTUKLQlsZHIJcjEsW3NwLCMyKjRdCQlAIGZyb20gQk9EWV8xNl94eAotI2VuZGlmCi0Jb3JyCXIwLHI0LHI1Ci0JYW5kCXIyLHI0LHI1Ci0JYW5kCXIwLHIwLHI2Ci0JYWRkCXIxMSxyMTEscjMKLQlvcnIJcjAscjAscjIJCQlAIE1haihhLGIsYykKLQlhZGQJcjcscjcscjMKLQlhZGQJcjExLHIxMSxyMAotCUAgbGRyCXIxLFtzcCwjMio0XQkJQCAxNwotCWxkcglyMTIsW3NwLCMxNSo0XQotCW1vdglyMCxyMSxyb3IjNwotCWxkcglyMyxbc3AsIzEqNF0KLQllb3IJcjAscjAscjEscm9yIzE4Ci0JbGRyCXIyLFtzcCwjMTAqNF0KLQllb3IJcjAscjAscjEsbHNyIzMJQCBzaWdtYTAoWFtpKzFdKQotCW1vdglyMSxyMTIscm9yIzE3Ci0JYWRkCXIzLHIzLHIwCi0JZW9yCXIxLHIxLHIxMixyb3IjMTkKLQlhZGQJcjMscjMscjIKLQllb3IJcjEscjEscjEyLGxzciMxMAlAIHNpZ21hMShYW2krMTRdKQotCUAgYWRkCXIzLHIzLHIxCi0JbW92CXIwLHI3LHJvciM2Ci0JbGRyCXIxMixbcjE0XSwjNAkJCUAgKksyNTYrKwotCWVvcglyMCxyMCxyNyxyb3IjMTEKLQllb3IJcjIscjgscjkKLSNpZiAxNz49MTYKLQlhZGQJcjMscjMscjEJCQlAIGZyb20gQk9EWV8xNl94eAotI2VsaWYgX19BUk1fQVJDSF9fPj03ICYmIGRlZmluZWQoX19BUk1FTF9fKQotCXJldglyMyxyMwotI2VuZGlmCi0jaWYgMTc9PTE1Ci0Jc3RyCXIxLFtzcCwjMTcqNF0JCQlAIGxlYXZlIHJvb20gZm9yIHIxCi0jZW5kaWYKLQllb3IJcjAscjAscjcscm9yIzI1CUAgU2lnbWExKGUpCi0JYW5kCXIyLHIyLHI3Ci0Jc3RyCXIzLFtzcCwjMSo0XQotCWFkZAlyMyxyMyxyMAotCWVvcglyMixyMixyOQkJCUAgQ2goZSxmLGcpCi0JYWRkCXIzLHIzLHIxMAotCW1vdglyMTAscjExLHJvciMyCi0JYWRkCXIzLHIzLHIyCi0JZW9yCXIxMCxyMTAscjExLHJvciMxMwotCWFkZAlyMyxyMyxyMTIKLQllb3IJcjEwLHIxMCxyMTEscm9yIzIyCQlAIFNpZ21hMChhKQotI2lmIDE3Pj0xNQotCWxkcglyMSxbc3AsIzMqNF0JCUAgZnJvbSBCT0RZXzE2X3h4Ci0jZW5kaWYKLQlvcnIJcjAscjExLHI0Ci0JYW5kCXIyLHIxMSxyNAotCWFuZAlyMCxyMCxyNQotCWFkZAlyMTAscjEwLHIzCi0Jb3JyCXIwLHIwLHIyCQkJQCBNYWooYSxiLGMpCi0JYWRkCXI2LHI2LHIzCi0JYWRkCXIxMCxyMTAscjAKLQlAIGxkcglyMSxbc3AsIzMqNF0JCUAgMTgKLQlsZHIJcjEyLFtzcCwjMCo0XQotCW1vdglyMCxyMSxyb3IjNwotCWxkcglyMyxbc3AsIzIqNF0KLQllb3IJcjAscjAscjEscm9yIzE4Ci0JbGRyCXIyLFtzcCwjMTEqNF0KLQllb3IJcjAscjAscjEsbHNyIzMJQCBzaWdtYTAoWFtpKzFdKQotCW1vdglyMSxyMTIscm9yIzE3Ci0JYWRkCXIzLHIzLHIwCi0JZW9yCXIxLHIxLHIxMixyb3IjMTkKLQlhZGQJcjMscjMscjIKLQllb3IJcjEscjEscjEyLGxzciMxMAlAIHNpZ21hMShYW2krMTRdKQotCUAgYWRkCXIzLHIzLHIxCi0JbW92CXIwLHI2LHJvciM2Ci0JbGRyCXIxMixbcjE0XSwjNAkJCUAgKksyNTYrKwotCWVvcglyMCxyMCxyNixyb3IjMTEKLQllb3IJcjIscjcscjgKLSNpZiAxOD49MTYKLQlhZGQJcjMscjMscjEJCQlAIGZyb20gQk9EWV8xNl94eAotI2VsaWYgX19BUk1fQVJDSF9fPj03ICYmIGRlZmluZWQoX19BUk1FTF9fKQotCXJldglyMyxyMwotI2VuZGlmCi0jaWYgMTg9PTE1Ci0Jc3RyCXIxLFtzcCwjMTcqNF0JCQlAIGxlYXZlIHJvb20gZm9yIHIxCi0jZW5kaWYKLQllb3IJcjAscjAscjYscm9yIzI1CUAgU2lnbWExKGUpCi0JYW5kCXIyLHIyLHI2Ci0Jc3RyCXIzLFtzcCwjMio0XQotCWFkZAlyMyxyMyxyMAotCWVvcglyMixyMixyOAkJCUAgQ2goZSxmLGcpCi0JYWRkCXIzLHIzLHI5Ci0JbW92CXI5LHIxMCxyb3IjMgotCWFkZAlyMyxyMyxyMgotCWVvcglyOSxyOSxyMTAscm9yIzEzCi0JYWRkCXIzLHIzLHIxMgotCWVvcglyOSxyOSxyMTAscm9yIzIyCQlAIFNpZ21hMChhKQotI2lmIDE4Pj0xNQotCWxkcglyMSxbc3AsIzQqNF0JCUAgZnJvbSBCT0RZXzE2X3h4Ci0jZW5kaWYKLQlvcnIJcjAscjEwLHIxMQotCWFuZAlyMixyMTAscjExCi0JYW5kCXIwLHIwLHI0Ci0JYWRkCXI5LHI5LHIzCi0Jb3JyCXIwLHIwLHIyCQkJQCBNYWooYSxiLGMpCi0JYWRkCXI1LHI1LHIzCi0JYWRkCXI5LHI5LHIwCi0JQCBsZHIJcjEsW3NwLCM0KjRdCQlAIDE5Ci0JbGRyCXIxMixbc3AsIzEqNF0KLQltb3YJcjAscjEscm9yIzcKLQlsZHIJcjMsW3NwLCMzKjRdCi0JZW9yCXIwLHIwLHIxLHJvciMxOAotCWxkcglyMixbc3AsIzEyKjRdCi0JZW9yCXIwLHIwLHIxLGxzciMzCUAgc2lnbWEwKFhbaSsxXSkKLQltb3YJcjEscjEyLHJvciMxNwotCWFkZAlyMyxyMyxyMAotCWVvcglyMSxyMSxyMTIscm9yIzE5Ci0JYWRkCXIzLHIzLHIyCi0JZW9yCXIxLHIxLHIxMixsc3IjMTAJQCBzaWdtYTEoWFtpKzE0XSkKLQlAIGFkZAlyMyxyMyxyMQotCW1vdglyMCxyNSxyb3IjNgotCWxkcglyMTIsW3IxNF0sIzQJCQlAICpLMjU2KysKLQllb3IJcjAscjAscjUscm9yIzExCi0JZW9yCXIyLHI2LHI3Ci0jaWYgMTk+PTE2Ci0JYWRkCXIzLHIzLHIxCQkJQCBmcm9tIEJPRFlfMTZfeHgKLSNlbGlmIF9fQVJNX0FSQ0hfXz49NyAmJiBkZWZpbmVkKF9fQVJNRUxfXykKLQlyZXYJcjMscjMKLSNlbmRpZgotI2lmIDE5PT0xNQotCXN0cglyMSxbc3AsIzE3KjRdCQkJQCBsZWF2ZSByb29tIGZvciByMQotI2VuZGlmCi0JZW9yCXIwLHIwLHI1LHJvciMyNQlAIFNpZ21hMShlKQotCWFuZAlyMixyMixyNQotCXN0cglyMyxbc3AsIzMqNF0KLQlhZGQJcjMscjMscjAKLQllb3IJcjIscjIscjcJCQlAIENoKGUsZixnKQotCWFkZAlyMyxyMyxyOAotCW1vdglyOCxyOSxyb3IjMgotCWFkZAlyMyxyMyxyMgotCWVvcglyOCxyOCxyOSxyb3IjMTMKLQlhZGQJcjMscjMscjEyCi0JZW9yCXI4LHI4LHI5LHJvciMyMgkJQCBTaWdtYTAoYSkKLSNpZiAxOT49MTUKLQlsZHIJcjEsW3NwLCM1KjRdCQlAIGZyb20gQk9EWV8xNl94eAotI2VuZGlmCi0Jb3JyCXIwLHI5LHIxMAotCWFuZAlyMixyOSxyMTAKLQlhbmQJcjAscjAscjExCi0JYWRkCXI4LHI4LHIzCi0Jb3JyCXIwLHIwLHIyCQkJQCBNYWooYSxiLGMpCi0JYWRkCXI0LHI0LHIzCi0JYWRkCXI4LHI4LHIwCi0JQCBsZHIJcjEsW3NwLCM1KjRdCQlAIDIwCi0JbGRyCXIxMixbc3AsIzIqNF0KLQltb3YJcjAscjEscm9yIzcKLQlsZHIJcjMsW3NwLCM0KjRdCi0JZW9yCXIwLHIwLHIxLHJvciMxOAotCWxkcglyMixbc3AsIzEzKjRdCi0JZW9yCXIwLHIwLHIxLGxzciMzCUAgc2lnbWEwKFhbaSsxXSkKLQltb3YJcjEscjEyLHJvciMxNwotCWFkZAlyMyxyMyxyMAotCWVvcglyMSxyMSxyMTIscm9yIzE5Ci0JYWRkCXIzLHIzLHIyCi0JZW9yCXIxLHIxLHIxMixsc3IjMTAJQCBzaWdtYTEoWFtpKzE0XSkKLQlAIGFkZAlyMyxyMyxyMQotCW1vdglyMCxyNCxyb3IjNgotCWxkcglyMTIsW3IxNF0sIzQJCQlAICpLMjU2KysKLQllb3IJcjAscjAscjQscm9yIzExCi0JZW9yCXIyLHI1LHI2Ci0jaWYgMjA+PTE2Ci0JYWRkCXIzLHIzLHIxCQkJQCBmcm9tIEJPRFlfMTZfeHgKLSNlbGlmIF9fQVJNX0FSQ0hfXz49NyAmJiBkZWZpbmVkKF9fQVJNRUxfXykKLQlyZXYJcjMscjMKLSNlbmRpZgotI2lmIDIwPT0xNQotCXN0cglyMSxbc3AsIzE3KjRdCQkJQCBsZWF2ZSByb29tIGZvciByMQotI2VuZGlmCi0JZW9yCXIwLHIwLHI0LHJvciMyNQlAIFNpZ21hMShlKQotCWFuZAlyMixyMixyNAotCXN0cglyMyxbc3AsIzQqNF0KLQlhZGQJcjMscjMscjAKLQllb3IJcjIscjIscjYJCQlAIENoKGUsZixnKQotCWFkZAlyMyxyMyxyNwotCW1vdglyNyxyOCxyb3IjMgotCWFkZAlyMyxyMyxyMgotCWVvcglyNyxyNyxyOCxyb3IjMTMKLQlhZGQJcjMscjMscjEyCi0JZW9yCXI3LHI3LHI4LHJvciMyMgkJQCBTaWdtYTAoYSkKLSNpZiAyMD49MTUKLQlsZHIJcjEsW3NwLCM2KjRdCQlAIGZyb20gQk9EWV8xNl94eAotI2VuZGlmCi0Jb3JyCXIwLHI4LHI5Ci0JYW5kCXIyLHI4LHI5Ci0JYW5kCXIwLHIwLHIxMAotCWFkZAlyNyxyNyxyMwotCW9ycglyMCxyMCxyMgkJCUAgTWFqKGEsYixjKQotCWFkZAlyMTEscjExLHIzCi0JYWRkCXI3LHI3LHIwCi0JQCBsZHIJcjEsW3NwLCM2KjRdCQlAIDIxCi0JbGRyCXIxMixbc3AsIzMqNF0KLQltb3YJcjAscjEscm9yIzcKLQlsZHIJcjMsW3NwLCM1KjRdCi0JZW9yCXIwLHIwLHIxLHJvciMxOAotCWxkcglyMixbc3AsIzE0KjRdCi0JZW9yCXIwLHIwLHIxLGxzciMzCUAgc2lnbWEwKFhbaSsxXSkKLQltb3YJcjEscjEyLHJvciMxNwotCWFkZAlyMyxyMyxyMAotCWVvcglyMSxyMSxyMTIscm9yIzE5Ci0JYWRkCXIzLHIzLHIyCi0JZW9yCXIxLHIxLHIxMixsc3IjMTAJQCBzaWdtYTEoWFtpKzE0XSkKLQlAIGFkZAlyMyxyMyxyMQotCW1vdglyMCxyMTEscm9yIzYKLQlsZHIJcjEyLFtyMTRdLCM0CQkJQCAqSzI1NisrCi0JZW9yCXIwLHIwLHIxMSxyb3IjMTEKLQllb3IJcjIscjQscjUKLSNpZiAyMT49MTYKLQlhZGQJcjMscjMscjEJCQlAIGZyb20gQk9EWV8xNl94eAotI2VsaWYgX19BUk1fQVJDSF9fPj03ICYmIGRlZmluZWQoX19BUk1FTF9fKQotCXJldglyMyxyMwotI2VuZGlmCi0jaWYgMjE9PTE1Ci0Jc3RyCXIxLFtzcCwjMTcqNF0JCQlAIGxlYXZlIHJvb20gZm9yIHIxCi0jZW5kaWYKLQllb3IJcjAscjAscjExLHJvciMyNQlAIFNpZ21hMShlKQotCWFuZAlyMixyMixyMTEKLQlzdHIJcjMsW3NwLCM1KjRdCi0JYWRkCXIzLHIzLHIwCi0JZW9yCXIyLHIyLHI1CQkJQCBDaChlLGYsZykKLQlhZGQJcjMscjMscjYKLQltb3YJcjYscjcscm9yIzIKLQlhZGQJcjMscjMscjIKLQllb3IJcjYscjYscjcscm9yIzEzCi0JYWRkCXIzLHIzLHIxMgotCWVvcglyNixyNixyNyxyb3IjMjIJCUAgU2lnbWEwKGEpCi0jaWYgMjE+PTE1Ci0JbGRyCXIxLFtzcCwjNyo0XQkJQCBmcm9tIEJPRFlfMTZfeHgKLSNlbmRpZgotCW9ycglyMCxyNyxyOAotCWFuZAlyMixyNyxyOAotCWFuZAlyMCxyMCxyOQotCWFkZAlyNixyNixyMwotCW9ycglyMCxyMCxyMgkJCUAgTWFqKGEsYixjKQotCWFkZAlyMTAscjEwLHIzCi0JYWRkCXI2LHI2LHIwCi0JQCBsZHIJcjEsW3NwLCM3KjRdCQlAIDIyCi0JbGRyCXIxMixbc3AsIzQqNF0KLQltb3YJcjAscjEscm9yIzcKLQlsZHIJcjMsW3NwLCM2KjRdCi0JZW9yCXIwLHIwLHIxLHJvciMxOAotCWxkcglyMixbc3AsIzE1KjRdCi0JZW9yCXIwLHIwLHIxLGxzciMzCUAgc2lnbWEwKFhbaSsxXSkKLQltb3YJcjEscjEyLHJvciMxNwotCWFkZAlyMyxyMyxyMAotCWVvcglyMSxyMSxyMTIscm9yIzE5Ci0JYWRkCXIzLHIzLHIyCi0JZW9yCXIxLHIxLHIxMixsc3IjMTAJQCBzaWdtYTEoWFtpKzE0XSkKLQlAIGFkZAlyMyxyMyxyMQotCW1vdglyMCxyMTAscm9yIzYKLQlsZHIJcjEyLFtyMTRdLCM0CQkJQCAqSzI1NisrCi0JZW9yCXIwLHIwLHIxMCxyb3IjMTEKLQllb3IJcjIscjExLHI0Ci0jaWYgMjI+PTE2Ci0JYWRkCXIzLHIzLHIxCQkJQCBmcm9tIEJPRFlfMTZfeHgKLSNlbGlmIF9fQVJNX0FSQ0hfXz49NyAmJiBkZWZpbmVkKF9fQVJNRUxfXykKLQlyZXYJcjMscjMKLSNlbmRpZgotI2lmIDIyPT0xNQotCXN0cglyMSxbc3AsIzE3KjRdCQkJQCBsZWF2ZSByb29tIGZvciByMQotI2VuZGlmCi0JZW9yCXIwLHIwLHIxMCxyb3IjMjUJQCBTaWdtYTEoZSkKLQlhbmQJcjIscjIscjEwCi0Jc3RyCXIzLFtzcCwjNio0XQotCWFkZAlyMyxyMyxyMAotCWVvcglyMixyMixyNAkJCUAgQ2goZSxmLGcpCi0JYWRkCXIzLHIzLHI1Ci0JbW92CXI1LHI2LHJvciMyCi0JYWRkCXIzLHIzLHIyCi0JZW9yCXI1LHI1LHI2LHJvciMxMwotCWFkZAlyMyxyMyxyMTIKLQllb3IJcjUscjUscjYscm9yIzIyCQlAIFNpZ21hMChhKQotI2lmIDIyPj0xNQotCWxkcglyMSxbc3AsIzgqNF0JCUAgZnJvbSBCT0RZXzE2X3h4Ci0jZW5kaWYKLQlvcnIJcjAscjYscjcKLQlhbmQJcjIscjYscjcKLQlhbmQJcjAscjAscjgKLQlhZGQJcjUscjUscjMKLQlvcnIJcjAscjAscjIJCQlAIE1haihhLGIsYykKLQlhZGQJcjkscjkscjMKLQlhZGQJcjUscjUscjAKLQlAIGxkcglyMSxbc3AsIzgqNF0JCUAgMjMKLQlsZHIJcjEyLFtzcCwjNSo0XQotCW1vdglyMCxyMSxyb3IjNwotCWxkcglyMyxbc3AsIzcqNF0KLQllb3IJcjAscjAscjEscm9yIzE4Ci0JbGRyCXIyLFtzcCwjMCo0XQotCWVvcglyMCxyMCxyMSxsc3IjMwlAIHNpZ21hMChYW2krMV0pCi0JbW92CXIxLHIxMixyb3IjMTcKLQlhZGQJcjMscjMscjAKLQllb3IJcjEscjEscjEyLHJvciMxOQotCWFkZAlyMyxyMyxyMgotCWVvcglyMSxyMSxyMTIsbHNyIzEwCUAgc2lnbWExKFhbaSsxNF0pCi0JQCBhZGQJcjMscjMscjEKLQltb3YJcjAscjkscm9yIzYKLQlsZHIJcjEyLFtyMTRdLCM0CQkJQCAqSzI1NisrCi0JZW9yCXIwLHIwLHI5LHJvciMxMQotCWVvcglyMixyMTAscjExCi0jaWYgMjM+PTE2Ci0JYWRkCXIzLHIzLHIxCQkJQCBmcm9tIEJPRFlfMTZfeHgKLSNlbGlmIF9fQVJNX0FSQ0hfXz49NyAmJiBkZWZpbmVkKF9fQVJNRUxfXykKLQlyZXYJcjMscjMKLSNlbmRpZgotI2lmIDIzPT0xNQotCXN0cglyMSxbc3AsIzE3KjRdCQkJQCBsZWF2ZSByb29tIGZvciByMQotI2VuZGlmCi0JZW9yCXIwLHIwLHI5LHJvciMyNQlAIFNpZ21hMShlKQotCWFuZAlyMixyMixyOQotCXN0cglyMyxbc3AsIzcqNF0KLQlhZGQJcjMscjMscjAKLQllb3IJcjIscjIscjExCQkJQCBDaChlLGYsZykKLQlhZGQJcjMscjMscjQKLQltb3YJcjQscjUscm9yIzIKLQlhZGQJcjMscjMscjIKLQllb3IJcjQscjQscjUscm9yIzEzCi0JYWRkCXIzLHIzLHIxMgotCWVvcglyNCxyNCxyNSxyb3IjMjIJCUAgU2lnbWEwKGEpCi0jaWYgMjM+PTE1Ci0JbGRyCXIxLFtzcCwjOSo0XQkJQCBmcm9tIEJPRFlfMTZfeHgKLSNlbmRpZgotCW9ycglyMCxyNSxyNgotCWFuZAlyMixyNSxyNgotCWFuZAlyMCxyMCxyNwotCWFkZAlyNCxyNCxyMwotCW9ycglyMCxyMCxyMgkJCUAgTWFqKGEsYixjKQotCWFkZAlyOCxyOCxyMwotCWFkZAlyNCxyNCxyMAotCUAgbGRyCXIxLFtzcCwjOSo0XQkJQCAyNAotCWxkcglyMTIsW3NwLCM2KjRdCi0JbW92CXIwLHIxLHJvciM3Ci0JbGRyCXIzLFtzcCwjOCo0XQotCWVvcglyMCxyMCxyMSxyb3IjMTgKLQlsZHIJcjIsW3NwLCMxKjRdCi0JZW9yCXIwLHIwLHIxLGxzciMzCUAgc2lnbWEwKFhbaSsxXSkKLQltb3YJcjEscjEyLHJvciMxNwotCWFkZAlyMyxyMyxyMAotCWVvcglyMSxyMSxyMTIscm9yIzE5Ci0JYWRkCXIzLHIzLHIyCi0JZW9yCXIxLHIxLHIxMixsc3IjMTAJQCBzaWdtYTEoWFtpKzE0XSkKLQlAIGFkZAlyMyxyMyxyMQotCW1vdglyMCxyOCxyb3IjNgotCWxkcglyMTIsW3IxNF0sIzQJCQlAICpLMjU2KysKLQllb3IJcjAscjAscjgscm9yIzExCi0JZW9yCXIyLHI5LHIxMAotI2lmIDI0Pj0xNgotCWFkZAlyMyxyMyxyMQkJCUAgZnJvbSBCT0RZXzE2X3h4Ci0jZWxpZiBfX0FSTV9BUkNIX18+PTcgJiYgZGVmaW5lZChfX0FSTUVMX18pCi0JcmV2CXIzLHIzCi0jZW5kaWYKLSNpZiAyND09MTUKLQlzdHIJcjEsW3NwLCMxNyo0XQkJCUAgbGVhdmUgcm9vbSBmb3IgcjEKLSNlbmRpZgotCWVvcglyMCxyMCxyOCxyb3IjMjUJQCBTaWdtYTEoZSkKLQlhbmQJcjIscjIscjgKLQlzdHIJcjMsW3NwLCM4KjRdCi0JYWRkCXIzLHIzLHIwCi0JZW9yCXIyLHIyLHIxMAkJCUAgQ2goZSxmLGcpCi0JYWRkCXIzLHIzLHIxMQotCW1vdglyMTEscjQscm9yIzIKLQlhZGQJcjMscjMscjIKLQllb3IJcjExLHIxMSxyNCxyb3IjMTMKLQlhZGQJcjMscjMscjEyCi0JZW9yCXIxMSxyMTEscjQscm9yIzIyCQlAIFNpZ21hMChhKQotI2lmIDI0Pj0xNQotCWxkcglyMSxbc3AsIzEwKjRdCQlAIGZyb20gQk9EWV8xNl94eAotI2VuZGlmCi0Jb3JyCXIwLHI0LHI1Ci0JYW5kCXIyLHI0LHI1Ci0JYW5kCXIwLHIwLHI2Ci0JYWRkCXIxMSxyMTEscjMKLQlvcnIJcjAscjAscjIJCQlAIE1haihhLGIsYykKLQlhZGQJcjcscjcscjMKLQlhZGQJcjExLHIxMSxyMAotCUAgbGRyCXIxLFtzcCwjMTAqNF0JCUAgMjUKLQlsZHIJcjEyLFtzcCwjNyo0XQotCW1vdglyMCxyMSxyb3IjNwotCWxkcglyMyxbc3AsIzkqNF0KLQllb3IJcjAscjAscjEscm9yIzE4Ci0JbGRyCXIyLFtzcCwjMio0XQotCWVvcglyMCxyMCxyMSxsc3IjMwlAIHNpZ21hMChYW2krMV0pCi0JbW92CXIxLHIxMixyb3IjMTcKLQlhZGQJcjMscjMscjAKLQllb3IJcjEscjEscjEyLHJvciMxOQotCWFkZAlyMyxyMyxyMgotCWVvcglyMSxyMSxyMTIsbHNyIzEwCUAgc2lnbWExKFhbaSsxNF0pCi0JQCBhZGQJcjMscjMscjEKLQltb3YJcjAscjcscm9yIzYKLQlsZHIJcjEyLFtyMTRdLCM0CQkJQCAqSzI1NisrCi0JZW9yCXIwLHIwLHI3LHJvciMxMQotCWVvcglyMixyOCxyOQotI2lmIDI1Pj0xNgotCWFkZAlyMyxyMyxyMQkJCUAgZnJvbSBCT0RZXzE2X3h4Ci0jZWxpZiBfX0FSTV9BUkNIX18+PTcgJiYgZGVmaW5lZChfX0FSTUVMX18pCi0JcmV2CXIzLHIzCi0jZW5kaWYKLSNpZiAyNT09MTUKLQlzdHIJcjEsW3NwLCMxNyo0XQkJCUAgbGVhdmUgcm9vbSBmb3IgcjEKLSNlbmRpZgotCWVvcglyMCxyMCxyNyxyb3IjMjUJQCBTaWdtYTEoZSkKLQlhbmQJcjIscjIscjcKLQlzdHIJcjMsW3NwLCM5KjRdCi0JYWRkCXIzLHIzLHIwCi0JZW9yCXIyLHIyLHI5CQkJQCBDaChlLGYsZykKLQlhZGQJcjMscjMscjEwCi0JbW92CXIxMCxyMTEscm9yIzIKLQlhZGQJcjMscjMscjIKLQllb3IJcjEwLHIxMCxyMTEscm9yIzEzCi0JYWRkCXIzLHIzLHIxMgotCWVvcglyMTAscjEwLHIxMSxyb3IjMjIJCUAgU2lnbWEwKGEpCi0jaWYgMjU+PTE1Ci0JbGRyCXIxLFtzcCwjMTEqNF0JCUAgZnJvbSBCT0RZXzE2X3h4Ci0jZW5kaWYKLQlvcnIJcjAscjExLHI0Ci0JYW5kCXIyLHIxMSxyNAotCWFuZAlyMCxyMCxyNQotCWFkZAlyMTAscjEwLHIzCi0Jb3JyCXIwLHIwLHIyCQkJQCBNYWooYSxiLGMpCi0JYWRkCXI2LHI2LHIzCi0JYWRkCXIxMCxyMTAscjAKLQlAIGxkcglyMSxbc3AsIzExKjRdCQlAIDI2Ci0JbGRyCXIxMixbc3AsIzgqNF0KLQltb3YJcjAscjEscm9yIzcKLQlsZHIJcjMsW3NwLCMxMCo0XQotCWVvcglyMCxyMCxyMSxyb3IjMTgKLQlsZHIJcjIsW3NwLCMzKjRdCi0JZW9yCXIwLHIwLHIxLGxzciMzCUAgc2lnbWEwKFhbaSsxXSkKLQltb3YJcjEscjEyLHJvciMxNwotCWFkZAlyMyxyMyxyMAotCWVvcglyMSxyMSxyMTIscm9yIzE5Ci0JYWRkCXIzLHIzLHIyCi0JZW9yCXIxLHIxLHIxMixsc3IjMTAJQCBzaWdtYTEoWFtpKzE0XSkKLQlAIGFkZAlyMyxyMyxyMQotCW1vdglyMCxyNixyb3IjNgotCWxkcglyMTIsW3IxNF0sIzQJCQlAICpLMjU2KysKLQllb3IJcjAscjAscjYscm9yIzExCi0JZW9yCXIyLHI3LHI4Ci0jaWYgMjY+PTE2Ci0JYWRkCXIzLHIzLHIxCQkJQCBmcm9tIEJPRFlfMTZfeHgKLSNlbGlmIF9fQVJNX0FSQ0hfXz49NyAmJiBkZWZpbmVkKF9fQVJNRUxfXykKLQlyZXYJcjMscjMKLSNlbmRpZgotI2lmIDI2PT0xNQotCXN0cglyMSxbc3AsIzE3KjRdCQkJQCBsZWF2ZSByb29tIGZvciByMQotI2VuZGlmCi0JZW9yCXIwLHIwLHI2LHJvciMyNQlAIFNpZ21hMShlKQotCWFuZAlyMixyMixyNgotCXN0cglyMyxbc3AsIzEwKjRdCi0JYWRkCXIzLHIzLHIwCi0JZW9yCXIyLHIyLHI4CQkJQCBDaChlLGYsZykKLQlhZGQJcjMscjMscjkKLQltb3YJcjkscjEwLHJvciMyCi0JYWRkCXIzLHIzLHIyCi0JZW9yCXI5LHI5LHIxMCxyb3IjMTMKLQlhZGQJcjMscjMscjEyCi0JZW9yCXI5LHI5LHIxMCxyb3IjMjIJCUAgU2lnbWEwKGEpCi0jaWYgMjY+PTE1Ci0JbGRyCXIxLFtzcCwjMTIqNF0JCUAgZnJvbSBCT0RZXzE2X3h4Ci0jZW5kaWYKLQlvcnIJcjAscjEwLHIxMQotCWFuZAlyMixyMTAscjExCi0JYW5kCXIwLHIwLHI0Ci0JYWRkCXI5LHI5LHIzCi0Jb3JyCXIwLHIwLHIyCQkJQCBNYWooYSxiLGMpCi0JYWRkCXI1LHI1LHIzCi0JYWRkCXI5LHI5LHIwCi0JQCBsZHIJcjEsW3NwLCMxMio0XQkJQCAyNwotCWxkcglyMTIsW3NwLCM5KjRdCi0JbW92CXIwLHIxLHJvciM3Ci0JbGRyCXIzLFtzcCwjMTEqNF0KLQllb3IJcjAscjAscjEscm9yIzE4Ci0JbGRyCXIyLFtzcCwjNCo0XQotCWVvcglyMCxyMCxyMSxsc3IjMwlAIHNpZ21hMChYW2krMV0pCi0JbW92CXIxLHIxMixyb3IjMTcKLQlhZGQJcjMscjMscjAKLQllb3IJcjEscjEscjEyLHJvciMxOQotCWFkZAlyMyxyMyxyMgotCWVvcglyMSxyMSxyMTIsbHNyIzEwCUAgc2lnbWExKFhbaSsxNF0pCi0JQCBhZGQJcjMscjMscjEKLQltb3YJcjAscjUscm9yIzYKLQlsZHIJcjEyLFtyMTRdLCM0CQkJQCAqSzI1NisrCi0JZW9yCXIwLHIwLHI1LHJvciMxMQotCWVvcglyMixyNixyNwotI2lmIDI3Pj0xNgotCWFkZAlyMyxyMyxyMQkJCUAgZnJvbSBCT0RZXzE2X3h4Ci0jZWxpZiBfX0FSTV9BUkNIX18+PTcgJiYgZGVmaW5lZChfX0FSTUVMX18pCi0JcmV2CXIzLHIzCi0jZW5kaWYKLSNpZiAyNz09MTUKLQlzdHIJcjEsW3NwLCMxNyo0XQkJCUAgbGVhdmUgcm9vbSBmb3IgcjEKLSNlbmRpZgotCWVvcglyMCxyMCxyNSxyb3IjMjUJQCBTaWdtYTEoZSkKLQlhbmQJcjIscjIscjUKLQlzdHIJcjMsW3NwLCMxMSo0XQotCWFkZAlyMyxyMyxyMAotCWVvcglyMixyMixyNwkJCUAgQ2goZSxmLGcpCi0JYWRkCXIzLHIzLHI4Ci0JbW92CXI4LHI5LHJvciMyCi0JYWRkCXIzLHIzLHIyCi0JZW9yCXI4LHI4LHI5LHJvciMxMwotCWFkZAlyMyxyMyxyMTIKLQllb3IJcjgscjgscjkscm9yIzIyCQlAIFNpZ21hMChhKQotI2lmIDI3Pj0xNQotCWxkcglyMSxbc3AsIzEzKjRdCQlAIGZyb20gQk9EWV8xNl94eAotI2VuZGlmCi0Jb3JyCXIwLHI5LHIxMAotCWFuZAlyMixyOSxyMTAKLQlhbmQJcjAscjAscjExCi0JYWRkCXI4LHI4LHIzCi0Jb3JyCXIwLHIwLHIyCQkJQCBNYWooYSxiLGMpCi0JYWRkCXI0LHI0LHIzCi0JYWRkCXI4LHI4LHIwCi0JQCBsZHIJcjEsW3NwLCMxMyo0XQkJQCAyOAotCWxkcglyMTIsW3NwLCMxMCo0XQotCW1vdglyMCxyMSxyb3IjNwotCWxkcglyMyxbc3AsIzEyKjRdCi0JZW9yCXIwLHIwLHIxLHJvciMxOAotCWxkcglyMixbc3AsIzUqNF0KLQllb3IJcjAscjAscjEsbHNyIzMJQCBzaWdtYTAoWFtpKzFdKQotCW1vdglyMSxyMTIscm9yIzE3Ci0JYWRkCXIzLHIzLHIwCi0JZW9yCXIxLHIxLHIxMixyb3IjMTkKLQlhZGQJcjMscjMscjIKLQllb3IJcjEscjEscjEyLGxzciMxMAlAIHNpZ21hMShYW2krMTRdKQotCUAgYWRkCXIzLHIzLHIxCi0JbW92CXIwLHI0LHJvciM2Ci0JbGRyCXIxMixbcjE0XSwjNAkJCUAgKksyNTYrKwotCWVvcglyMCxyMCxyNCxyb3IjMTEKLQllb3IJcjIscjUscjYKLSNpZiAyOD49MTYKLQlhZGQJcjMscjMscjEJCQlAIGZyb20gQk9EWV8xNl94eAotI2VsaWYgX19BUk1fQVJDSF9fPj03ICYmIGRlZmluZWQoX19BUk1FTF9fKQotCXJldglyMyxyMwotI2VuZGlmCi0jaWYgMjg9PTE1Ci0Jc3RyCXIxLFtzcCwjMTcqNF0JCQlAIGxlYXZlIHJvb20gZm9yIHIxCi0jZW5kaWYKLQllb3IJcjAscjAscjQscm9yIzI1CUAgU2lnbWExKGUpCi0JYW5kCXIyLHIyLHI0Ci0Jc3RyCXIzLFtzcCwjMTIqNF0KLQlhZGQJcjMscjMscjAKLQllb3IJcjIscjIscjYJCQlAIENoKGUsZixnKQotCWFkZAlyMyxyMyxyNwotCW1vdglyNyxyOCxyb3IjMgotCWFkZAlyMyxyMyxyMgotCWVvcglyNyxyNyxyOCxyb3IjMTMKLQlhZGQJcjMscjMscjEyCi0JZW9yCXI3LHI3LHI4LHJvciMyMgkJQCBTaWdtYTAoYSkKLSNpZiAyOD49MTUKLQlsZHIJcjEsW3NwLCMxNCo0XQkJQCBmcm9tIEJPRFlfMTZfeHgKLSNlbmRpZgotCW9ycglyMCxyOCxyOQotCWFuZAlyMixyOCxyOQotCWFuZAlyMCxyMCxyMTAKLQlhZGQJcjcscjcscjMKLQlvcnIJcjAscjAscjIJCQlAIE1haihhLGIsYykKLQlhZGQJcjExLHIxMSxyMwotCWFkZAlyNyxyNyxyMAotCUAgbGRyCXIxLFtzcCwjMTQqNF0JCUAgMjkKLQlsZHIJcjEyLFtzcCwjMTEqNF0KLQltb3YJcjAscjEscm9yIzcKLQlsZHIJcjMsW3NwLCMxMyo0XQotCWVvcglyMCxyMCxyMSxyb3IjMTgKLQlsZHIJcjIsW3NwLCM2KjRdCi0JZW9yCXIwLHIwLHIxLGxzciMzCUAgc2lnbWEwKFhbaSsxXSkKLQltb3YJcjEscjEyLHJvciMxNwotCWFkZAlyMyxyMyxyMAotCWVvcglyMSxyMSxyMTIscm9yIzE5Ci0JYWRkCXIzLHIzLHIyCi0JZW9yCXIxLHIxLHIxMixsc3IjMTAJQCBzaWdtYTEoWFtpKzE0XSkKLQlAIGFkZAlyMyxyMyxyMQotCW1vdglyMCxyMTEscm9yIzYKLQlsZHIJcjEyLFtyMTRdLCM0CQkJQCAqSzI1NisrCi0JZW9yCXIwLHIwLHIxMSxyb3IjMTEKLQllb3IJcjIscjQscjUKLSNpZiAyOT49MTYKLQlhZGQJcjMscjMscjEJCQlAIGZyb20gQk9EWV8xNl94eAotI2VsaWYgX19BUk1fQVJDSF9fPj03ICYmIGRlZmluZWQoX19BUk1FTF9fKQotCXJldglyMyxyMwotI2VuZGlmCi0jaWYgMjk9PTE1Ci0Jc3RyCXIxLFtzcCwjMTcqNF0JCQlAIGxlYXZlIHJvb20gZm9yIHIxCi0jZW5kaWYKLQllb3IJcjAscjAscjExLHJvciMyNQlAIFNpZ21hMShlKQotCWFuZAlyMixyMixyMTEKLQlzdHIJcjMsW3NwLCMxMyo0XQotCWFkZAlyMyxyMyxyMAotCWVvcglyMixyMixyNQkJCUAgQ2goZSxmLGcpCi0JYWRkCXIzLHIzLHI2Ci0JbW92CXI2LHI3LHJvciMyCi0JYWRkCXIzLHIzLHIyCi0JZW9yCXI2LHI2LHI3LHJvciMxMwotCWFkZAlyMyxyMyxyMTIKLQllb3IJcjYscjYscjcscm9yIzIyCQlAIFNpZ21hMChhKQotI2lmIDI5Pj0xNQotCWxkcglyMSxbc3AsIzE1KjRdCQlAIGZyb20gQk9EWV8xNl94eAotI2VuZGlmCi0Jb3JyCXIwLHI3LHI4Ci0JYW5kCXIyLHI3LHI4Ci0JYW5kCXIwLHIwLHI5Ci0JYWRkCXI2LHI2LHIzCi0Jb3JyCXIwLHIwLHIyCQkJQCBNYWooYSxiLGMpCi0JYWRkCXIxMCxyMTAscjMKLQlhZGQJcjYscjYscjAKLQlAIGxkcglyMSxbc3AsIzE1KjRdCQlAIDMwCi0JbGRyCXIxMixbc3AsIzEyKjRdCi0JbW92CXIwLHIxLHJvciM3Ci0JbGRyCXIzLFtzcCwjMTQqNF0KLQllb3IJcjAscjAscjEscm9yIzE4Ci0JbGRyCXIyLFtzcCwjNyo0XQotCWVvcglyMCxyMCxyMSxsc3IjMwlAIHNpZ21hMChYW2krMV0pCi0JbW92CXIxLHIxMixyb3IjMTcKLQlhZGQJcjMscjMscjAKLQllb3IJcjEscjEscjEyLHJvciMxOQotCWFkZAlyMyxyMyxyMgotCWVvcglyMSxyMSxyMTIsbHNyIzEwCUAgc2lnbWExKFhbaSsxNF0pCi0JQCBhZGQJcjMscjMscjEKLQltb3YJcjAscjEwLHJvciM2Ci0JbGRyCXIxMixbcjE0XSwjNAkJCUAgKksyNTYrKwotCWVvcglyMCxyMCxyMTAscm9yIzExCi0JZW9yCXIyLHIxMSxyNAotI2lmIDMwPj0xNgotCWFkZAlyMyxyMyxyMQkJCUAgZnJvbSBCT0RZXzE2X3h4Ci0jZWxpZiBfX0FSTV9BUkNIX18+PTcgJiYgZGVmaW5lZChfX0FSTUVMX18pCi0JcmV2CXIzLHIzCi0jZW5kaWYKLSNpZiAzMD09MTUKLQlzdHIJcjEsW3NwLCMxNyo0XQkJCUAgbGVhdmUgcm9vbSBmb3IgcjEKLSNlbmRpZgotCWVvcglyMCxyMCxyMTAscm9yIzI1CUAgU2lnbWExKGUpCi0JYW5kCXIyLHIyLHIxMAotCXN0cglyMyxbc3AsIzE0KjRdCi0JYWRkCXIzLHIzLHIwCi0JZW9yCXIyLHIyLHI0CQkJQCBDaChlLGYsZykKLQlhZGQJcjMscjMscjUKLQltb3YJcjUscjYscm9yIzIKLQlhZGQJcjMscjMscjIKLQllb3IJcjUscjUscjYscm9yIzEzCi0JYWRkCXIzLHIzLHIxMgotCWVvcglyNSxyNSxyNixyb3IjMjIJCUAgU2lnbWEwKGEpCi0jaWYgMzA+PTE1Ci0JbGRyCXIxLFtzcCwjMCo0XQkJQCBmcm9tIEJPRFlfMTZfeHgKLSNlbmRpZgotCW9ycglyMCxyNixyNwotCWFuZAlyMixyNixyNwotCWFuZAlyMCxyMCxyOAotCWFkZAlyNSxyNSxyMwotCW9ycglyMCxyMCxyMgkJCUAgTWFqKGEsYixjKQotCWFkZAlyOSxyOSxyMwotCWFkZAlyNSxyNSxyMAotCUAgbGRyCXIxLFtzcCwjMCo0XQkJQCAzMQotCWxkcglyMTIsW3NwLCMxMyo0XQotCW1vdglyMCxyMSxyb3IjNwotCWxkcglyMyxbc3AsIzE1KjRdCi0JZW9yCXIwLHIwLHIxLHJvciMxOAotCWxkcglyMixbc3AsIzgqNF0KLQllb3IJcjAscjAscjEsbHNyIzMJQCBzaWdtYTAoWFtpKzFdKQotCW1vdglyMSxyMTIscm9yIzE3Ci0JYWRkCXIzLHIzLHIwCi0JZW9yCXIxLHIxLHIxMixyb3IjMTkKLQlhZGQJcjMscjMscjIKLQllb3IJcjEscjEscjEyLGxzciMxMAlAIHNpZ21hMShYW2krMTRdKQotCUAgYWRkCXIzLHIzLHIxCi0JbW92CXIwLHI5LHJvciM2Ci0JbGRyCXIxMixbcjE0XSwjNAkJCUAgKksyNTYrKwotCWVvcglyMCxyMCxyOSxyb3IjMTEKLQllb3IJcjIscjEwLHIxMQotI2lmIDMxPj0xNgotCWFkZAlyMyxyMyxyMQkJCUAgZnJvbSBCT0RZXzE2X3h4Ci0jZWxpZiBfX0FSTV9BUkNIX18+PTcgJiYgZGVmaW5lZChfX0FSTUVMX18pCi0JcmV2CXIzLHIzCi0jZW5kaWYKLSNpZiAzMT09MTUKLQlzdHIJcjEsW3NwLCMxNyo0XQkJCUAgbGVhdmUgcm9vbSBmb3IgcjEKLSNlbmRpZgotCWVvcglyMCxyMCxyOSxyb3IjMjUJQCBTaWdtYTEoZSkKLQlhbmQJcjIscjIscjkKLQlzdHIJcjMsW3NwLCMxNSo0XQotCWFkZAlyMyxyMyxyMAotCWVvcglyMixyMixyMTEJCQlAIENoKGUsZixnKQotCWFkZAlyMyxyMyxyNAotCW1vdglyNCxyNSxyb3IjMgotCWFkZAlyMyxyMyxyMgotCWVvcglyNCxyNCxyNSxyb3IjMTMKLQlhZGQJcjMscjMscjEyCi0JZW9yCXI0LHI0LHI1LHJvciMyMgkJQCBTaWdtYTAoYSkKLSNpZiAzMT49MTUKLQlsZHIJcjEsW3NwLCMxKjRdCQlAIGZyb20gQk9EWV8xNl94eAotI2VuZGlmCi0Jb3JyCXIwLHI1LHI2Ci0JYW5kCXIyLHI1LHI2Ci0JYW5kCXIwLHIwLHI3Ci0JYWRkCXI0LHI0LHIzCi0Jb3JyCXIwLHIwLHIyCQkJQCBNYWooYSxiLGMpCi0JYWRkCXI4LHI4LHIzCi0JYWRkCXI0LHI0LHIwCisJZW9yCXIwLHI0LHI0LHJvciMxMQorCWFkZAlyMTEscjExLHIyCQkJQCBoKz1DaChlLGYsZykKKyNpZiAwPT0zMQogCWFuZAlyMTIscjEyLCMweGZmCi0JY21wCXIxMiwjMHhmMgorCWNtcAlyMTIsIzB4ZjIJCQlAIGRvbmU/CisjZW5kaWYKKyNpZiAwPDE1CisjIGlmIF9fQVJNX0FSQ0hfXz49NworCWxkcglyMixbcjFdLCM0CQkJQCBwcmVmZXRjaAorIyBlbHNlCisJbGRyYglyMixbcjEsIzNdCisjIGVuZGlmCisJZW9yCXIxMixyNCxyNQkJCUAgYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorI2Vsc2UKKwlsZHIJcjIsW3NwLCMyKjRdCQlAIGZyb20gZnV0dXJlIEJPRFlfMTZfeHgKKwllb3IJcjEyLHI0LHI1CQkJQCBhXmIsIGJeYyBpbiBuZXh0IHJvdW5kCisJbGRyCXIxLFtzcCwjMTUqNF0JQCBmcm9tIGZ1dHVyZSBCT0RZXzE2X3h4CisjZW5kaWYKKwllb3IJcjAscjAscjQscm9yIzIwCUAgU2lnbWEwKGEpCisJYW5kCXIzLHIzLHIxMgkJCUAgKGJeYykmPShhXmIpCisJYWRkCXI3LHI3LHIxMQkJCUAgZCs9aAorCWVvcglyMyxyMyxyNQkJCUAgTWFqKGEsYixjKQorCWFkZAlyMTEscjExLHIwLHJvciMyCUAgaCs9U2lnbWEwKGEpCisJQCBhZGQJcjExLHIxMSxyMwkJCUAgaCs9TWFqKGEsYixjKQorI2lmIF9fQVJNX0FSQ0hfXz49NworCUAgbGRyCXIyLFtyMV0sIzQJCQlAIDEKKyMgaWYgMT09MTUKKwlzdHIJcjEsW3NwLCMxNyo0XQkJCUAgbWFrZSByb29tIGZvciByMQorIyBlbmRpZgorCWVvcglyMCxyNyxyNyxyb3IjNQorCWFkZAlyMTEscjExLHIzCQkJQCBoKz1NYWooYSxiLGMpIGZyb20gdGhlIHBhc3QKKwllb3IJcjAscjAscjcscm9yIzE5CUAgU2lnbWExKGUpCisJcmV2CXIyLHIyCisjZWxzZQorCUAgbGRyYglyMixbcjEsIzNdCQkJQCAxCisJYWRkCXIxMSxyMTEscjMJCQlAIGgrPU1haihhLGIsYykgZnJvbSB0aGUgcGFzdAorCWxkcmIJcjMsW3IxLCMyXQorCWxkcmIJcjAsW3IxLCMxXQorCW9ycglyMixyMixyMyxsc2wjOAorCWxkcmIJcjMsW3IxXSwjNAorCW9ycglyMixyMixyMCxsc2wjMTYKKyMgaWYgMT09MTUKKwlzdHIJcjEsW3NwLCMxNyo0XQkJCUAgbWFrZSByb29tIGZvciByMQorIyBlbmRpZgorCWVvcglyMCxyNyxyNyxyb3IjNQorCW9ycglyMixyMixyMyxsc2wjMjQKKwllb3IJcjAscjAscjcscm9yIzE5CUAgU2lnbWExKGUpCisjZW5kaWYKKwlsZHIJcjMsW3IxNF0sIzQJCQlAICpLMjU2KysKKwlhZGQJcjEwLHIxMCxyMgkJCUAgaCs9WFtpXQorCXN0cglyMixbc3AsIzEqNF0KKwllb3IJcjIscjgscjkKKwlhZGQJcjEwLHIxMCxyMCxyb3IjNglAIGgrPVNpZ21hMShlKQorCWFuZAlyMixyMixyNworCWFkZAlyMTAscjEwLHIzCQkJQCBoKz1LMjU2W2ldCisJZW9yCXIyLHIyLHI5CQkJQCBDaChlLGYsZykKKwllb3IJcjAscjExLHIxMSxyb3IjMTEKKwlhZGQJcjEwLHIxMCxyMgkJCUAgaCs9Q2goZSxmLGcpCisjaWYgMT09MzEKKwlhbmQJcjMscjMsIzB4ZmYKKwljbXAJcjMsIzB4ZjIJCQlAIGRvbmU/CisjZW5kaWYKKyNpZiAxPDE1CisjIGlmIF9fQVJNX0FSQ0hfXz49NworCWxkcglyMixbcjFdLCM0CQkJQCBwcmVmZXRjaAorIyBlbHNlCisJbGRyYglyMixbcjEsIzNdCisjIGVuZGlmCisJZW9yCXIzLHIxMSxyNAkJCUAgYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorI2Vsc2UKKwlsZHIJcjIsW3NwLCMzKjRdCQlAIGZyb20gZnV0dXJlIEJPRFlfMTZfeHgKKwllb3IJcjMscjExLHI0CQkJQCBhXmIsIGJeYyBpbiBuZXh0IHJvdW5kCisJbGRyCXIxLFtzcCwjMCo0XQlAIGZyb20gZnV0dXJlIEJPRFlfMTZfeHgKKyNlbmRpZgorCWVvcglyMCxyMCxyMTEscm9yIzIwCUAgU2lnbWEwKGEpCisJYW5kCXIxMixyMTIscjMJCQlAIChiXmMpJj0oYV5iKQorCWFkZAlyNixyNixyMTAJCQlAIGQrPWgKKwllb3IJcjEyLHIxMixyNAkJCUAgTWFqKGEsYixjKQorCWFkZAlyMTAscjEwLHIwLHJvciMyCUAgaCs9U2lnbWEwKGEpCisJQCBhZGQJcjEwLHIxMCxyMTIJCQlAIGgrPU1haihhLGIsYykKKyNpZiBfX0FSTV9BUkNIX18+PTcKKwlAIGxkcglyMixbcjFdLCM0CQkJQCAyCisjIGlmIDI9PTE1CisJc3RyCXIxLFtzcCwjMTcqNF0JCQlAIG1ha2Ugcm9vbSBmb3IgcjEKKyMgZW5kaWYKKwllb3IJcjAscjYscjYscm9yIzUKKwlhZGQJcjEwLHIxMCxyMTIJCQlAIGgrPU1haihhLGIsYykgZnJvbSB0aGUgcGFzdAorCWVvcglyMCxyMCxyNixyb3IjMTkJQCBTaWdtYTEoZSkKKwlyZXYJcjIscjIKKyNlbHNlCisJQCBsZHJiCXIyLFtyMSwjM10JCQlAIDIKKwlhZGQJcjEwLHIxMCxyMTIJCQlAIGgrPU1haihhLGIsYykgZnJvbSB0aGUgcGFzdAorCWxkcmIJcjEyLFtyMSwjMl0KKwlsZHJiCXIwLFtyMSwjMV0KKwlvcnIJcjIscjIscjEyLGxzbCM4CisJbGRyYglyMTIsW3IxXSwjNAorCW9ycglyMixyMixyMCxsc2wjMTYKKyMgaWYgMj09MTUKKwlzdHIJcjEsW3NwLCMxNyo0XQkJCUAgbWFrZSByb29tIGZvciByMQorIyBlbmRpZgorCWVvcglyMCxyNixyNixyb3IjNQorCW9ycglyMixyMixyMTIsbHNsIzI0CisJZW9yCXIwLHIwLHI2LHJvciMxOQlAIFNpZ21hMShlKQorI2VuZGlmCisJbGRyCXIxMixbcjE0XSwjNAkJCUAgKksyNTYrKworCWFkZAlyOSxyOSxyMgkJCUAgaCs9WFtpXQorCXN0cglyMixbc3AsIzIqNF0KKwllb3IJcjIscjcscjgKKwlhZGQJcjkscjkscjAscm9yIzYJQCBoKz1TaWdtYTEoZSkKKwlhbmQJcjIscjIscjYKKwlhZGQJcjkscjkscjEyCQkJQCBoKz1LMjU2W2ldCisJZW9yCXIyLHIyLHI4CQkJQCBDaChlLGYsZykKKwllb3IJcjAscjEwLHIxMCxyb3IjMTEKKwlhZGQJcjkscjkscjIJCQlAIGgrPUNoKGUsZixnKQorI2lmIDI9PTMxCisJYW5kCXIxMixyMTIsIzB4ZmYKKwljbXAJcjEyLCMweGYyCQkJQCBkb25lPworI2VuZGlmCisjaWYgMjwxNQorIyBpZiBfX0FSTV9BUkNIX18+PTcKKwlsZHIJcjIsW3IxXSwjNAkJCUAgcHJlZmV0Y2gKKyMgZWxzZQorCWxkcmIJcjIsW3IxLCMzXQorIyBlbmRpZgorCWVvcglyMTIscjEwLHIxMQkJCUAgYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorI2Vsc2UKKwlsZHIJcjIsW3NwLCM0KjRdCQlAIGZyb20gZnV0dXJlIEJPRFlfMTZfeHgKKwllb3IJcjEyLHIxMCxyMTEJCQlAIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKwlsZHIJcjEsW3NwLCMxKjRdCUAgZnJvbSBmdXR1cmUgQk9EWV8xNl94eAorI2VuZGlmCisJZW9yCXIwLHIwLHIxMCxyb3IjMjAJQCBTaWdtYTAoYSkKKwlhbmQJcjMscjMscjEyCQkJQCAoYl5jKSY9KGFeYikKKwlhZGQJcjUscjUscjkJCQlAIGQrPWgKKwllb3IJcjMscjMscjExCQkJQCBNYWooYSxiLGMpCisJYWRkCXI5LHI5LHIwLHJvciMyCUAgaCs9U2lnbWEwKGEpCisJQCBhZGQJcjkscjkscjMJCQlAIGgrPU1haihhLGIsYykKKyNpZiBfX0FSTV9BUkNIX18+PTcKKwlAIGxkcglyMixbcjFdLCM0CQkJQCAzCisjIGlmIDM9PTE1CisJc3RyCXIxLFtzcCwjMTcqNF0JCQlAIG1ha2Ugcm9vbSBmb3IgcjEKKyMgZW5kaWYKKwllb3IJcjAscjUscjUscm9yIzUKKwlhZGQJcjkscjkscjMJCQlAIGgrPU1haihhLGIsYykgZnJvbSB0aGUgcGFzdAorCWVvcglyMCxyMCxyNSxyb3IjMTkJQCBTaWdtYTEoZSkKKwlyZXYJcjIscjIKKyNlbHNlCisJQCBsZHJiCXIyLFtyMSwjM10JCQlAIDMKKwlhZGQJcjkscjkscjMJCQlAIGgrPU1haihhLGIsYykgZnJvbSB0aGUgcGFzdAorCWxkcmIJcjMsW3IxLCMyXQorCWxkcmIJcjAsW3IxLCMxXQorCW9ycglyMixyMixyMyxsc2wjOAorCWxkcmIJcjMsW3IxXSwjNAorCW9ycglyMixyMixyMCxsc2wjMTYKKyMgaWYgMz09MTUKKwlzdHIJcjEsW3NwLCMxNyo0XQkJCUAgbWFrZSByb29tIGZvciByMQorIyBlbmRpZgorCWVvcglyMCxyNSxyNSxyb3IjNQorCW9ycglyMixyMixyMyxsc2wjMjQKKwllb3IJcjAscjAscjUscm9yIzE5CUAgU2lnbWExKGUpCisjZW5kaWYKKwlsZHIJcjMsW3IxNF0sIzQJCQlAICpLMjU2KysKKwlhZGQJcjgscjgscjIJCQlAIGgrPVhbaV0KKwlzdHIJcjIsW3NwLCMzKjRdCisJZW9yCXIyLHI2LHI3CisJYWRkCXI4LHI4LHIwLHJvciM2CUAgaCs9U2lnbWExKGUpCisJYW5kCXIyLHIyLHI1CisJYWRkCXI4LHI4LHIzCQkJQCBoKz1LMjU2W2ldCisJZW9yCXIyLHIyLHI3CQkJQCBDaChlLGYsZykKKwllb3IJcjAscjkscjkscm9yIzExCisJYWRkCXI4LHI4LHIyCQkJQCBoKz1DaChlLGYsZykKKyNpZiAzPT0zMQorCWFuZAlyMyxyMywjMHhmZgorCWNtcAlyMywjMHhmMgkJCUAgZG9uZT8KKyNlbmRpZgorI2lmIDM8MTUKKyMgaWYgX19BUk1fQVJDSF9fPj03CisJbGRyCXIyLFtyMV0sIzQJCQlAIHByZWZldGNoCisjIGVsc2UKKwlsZHJiCXIyLFtyMSwjM10KKyMgZW5kaWYKKwllb3IJcjMscjkscjEwCQkJQCBhXmIsIGJeYyBpbiBuZXh0IHJvdW5kCisjZWxzZQorCWxkcglyMixbc3AsIzUqNF0JCUAgZnJvbSBmdXR1cmUgQk9EWV8xNl94eAorCWVvcglyMyxyOSxyMTAJCQlAIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKwlsZHIJcjEsW3NwLCMyKjRdCUAgZnJvbSBmdXR1cmUgQk9EWV8xNl94eAorI2VuZGlmCisJZW9yCXIwLHIwLHI5LHJvciMyMAlAIFNpZ21hMChhKQorCWFuZAlyMTIscjEyLHIzCQkJQCAoYl5jKSY9KGFeYikKKwlhZGQJcjQscjQscjgJCQlAIGQrPWgKKwllb3IJcjEyLHIxMixyMTAJCQlAIE1haihhLGIsYykKKwlhZGQJcjgscjgscjAscm9yIzIJQCBoKz1TaWdtYTAoYSkKKwlAIGFkZAlyOCxyOCxyMTIJCQlAIGgrPU1haihhLGIsYykKKyNpZiBfX0FSTV9BUkNIX18+PTcKKwlAIGxkcglyMixbcjFdLCM0CQkJQCA0CisjIGlmIDQ9PTE1CisJc3RyCXIxLFtzcCwjMTcqNF0JCQlAIG1ha2Ugcm9vbSBmb3IgcjEKKyMgZW5kaWYKKwllb3IJcjAscjQscjQscm9yIzUKKwlhZGQJcjgscjgscjEyCQkJQCBoKz1NYWooYSxiLGMpIGZyb20gdGhlIHBhc3QKKwllb3IJcjAscjAscjQscm9yIzE5CUAgU2lnbWExKGUpCisJcmV2CXIyLHIyCisjZWxzZQorCUAgbGRyYglyMixbcjEsIzNdCQkJQCA0CisJYWRkCXI4LHI4LHIxMgkJCUAgaCs9TWFqKGEsYixjKSBmcm9tIHRoZSBwYXN0CisJbGRyYglyMTIsW3IxLCMyXQorCWxkcmIJcjAsW3IxLCMxXQorCW9ycglyMixyMixyMTIsbHNsIzgKKwlsZHJiCXIxMixbcjFdLCM0CisJb3JyCXIyLHIyLHIwLGxzbCMxNgorIyBpZiA0PT0xNQorCXN0cglyMSxbc3AsIzE3KjRdCQkJQCBtYWtlIHJvb20gZm9yIHIxCisjIGVuZGlmCisJZW9yCXIwLHI0LHI0LHJvciM1CisJb3JyCXIyLHIyLHIxMixsc2wjMjQKKwllb3IJcjAscjAscjQscm9yIzE5CUAgU2lnbWExKGUpCisjZW5kaWYKKwlsZHIJcjEyLFtyMTRdLCM0CQkJQCAqSzI1NisrCisJYWRkCXI3LHI3LHIyCQkJQCBoKz1YW2ldCisJc3RyCXIyLFtzcCwjNCo0XQorCWVvcglyMixyNSxyNgorCWFkZAlyNyxyNyxyMCxyb3IjNglAIGgrPVNpZ21hMShlKQorCWFuZAlyMixyMixyNAorCWFkZAlyNyxyNyxyMTIJCQlAIGgrPUsyNTZbaV0KKwllb3IJcjIscjIscjYJCQlAIENoKGUsZixnKQorCWVvcglyMCxyOCxyOCxyb3IjMTEKKwlhZGQJcjcscjcscjIJCQlAIGgrPUNoKGUsZixnKQorI2lmIDQ9PTMxCisJYW5kCXIxMixyMTIsIzB4ZmYKKwljbXAJcjEyLCMweGYyCQkJQCBkb25lPworI2VuZGlmCisjaWYgNDwxNQorIyBpZiBfX0FSTV9BUkNIX18+PTcKKwlsZHIJcjIsW3IxXSwjNAkJCUAgcHJlZmV0Y2gKKyMgZWxzZQorCWxkcmIJcjIsW3IxLCMzXQorIyBlbmRpZgorCWVvcglyMTIscjgscjkJCQlAIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKyNlbHNlCisJbGRyCXIyLFtzcCwjNio0XQkJQCBmcm9tIGZ1dHVyZSBCT0RZXzE2X3h4CisJZW9yCXIxMixyOCxyOQkJCUAgYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorCWxkcglyMSxbc3AsIzMqNF0JQCBmcm9tIGZ1dHVyZSBCT0RZXzE2X3h4CisjZW5kaWYKKwllb3IJcjAscjAscjgscm9yIzIwCUAgU2lnbWEwKGEpCisJYW5kCXIzLHIzLHIxMgkJCUAgKGJeYykmPShhXmIpCisJYWRkCXIxMSxyMTEscjcJCQlAIGQrPWgKKwllb3IJcjMscjMscjkJCQlAIE1haihhLGIsYykKKwlhZGQJcjcscjcscjAscm9yIzIJQCBoKz1TaWdtYTAoYSkKKwlAIGFkZAlyNyxyNyxyMwkJCUAgaCs9TWFqKGEsYixjKQorI2lmIF9fQVJNX0FSQ0hfXz49NworCUAgbGRyCXIyLFtyMV0sIzQJCQlAIDUKKyMgaWYgNT09MTUKKwlzdHIJcjEsW3NwLCMxNyo0XQkJCUAgbWFrZSByb29tIGZvciByMQorIyBlbmRpZgorCWVvcglyMCxyMTEscjExLHJvciM1CisJYWRkCXI3LHI3LHIzCQkJQCBoKz1NYWooYSxiLGMpIGZyb20gdGhlIHBhc3QKKwllb3IJcjAscjAscjExLHJvciMxOQlAIFNpZ21hMShlKQorCXJldglyMixyMgorI2Vsc2UKKwlAIGxkcmIJcjIsW3IxLCMzXQkJCUAgNQorCWFkZAlyNyxyNyxyMwkJCUAgaCs9TWFqKGEsYixjKSBmcm9tIHRoZSBwYXN0CisJbGRyYglyMyxbcjEsIzJdCisJbGRyYglyMCxbcjEsIzFdCisJb3JyCXIyLHIyLHIzLGxzbCM4CisJbGRyYglyMyxbcjFdLCM0CisJb3JyCXIyLHIyLHIwLGxzbCMxNgorIyBpZiA1PT0xNQorCXN0cglyMSxbc3AsIzE3KjRdCQkJQCBtYWtlIHJvb20gZm9yIHIxCisjIGVuZGlmCisJZW9yCXIwLHIxMSxyMTEscm9yIzUKKwlvcnIJcjIscjIscjMsbHNsIzI0CisJZW9yCXIwLHIwLHIxMSxyb3IjMTkJQCBTaWdtYTEoZSkKKyNlbmRpZgorCWxkcglyMyxbcjE0XSwjNAkJCUAgKksyNTYrKworCWFkZAlyNixyNixyMgkJCUAgaCs9WFtpXQorCXN0cglyMixbc3AsIzUqNF0KKwllb3IJcjIscjQscjUKKwlhZGQJcjYscjYscjAscm9yIzYJQCBoKz1TaWdtYTEoZSkKKwlhbmQJcjIscjIscjExCisJYWRkCXI2LHI2LHIzCQkJQCBoKz1LMjU2W2ldCisJZW9yCXIyLHIyLHI1CQkJQCBDaChlLGYsZykKKwllb3IJcjAscjcscjcscm9yIzExCisJYWRkCXI2LHI2LHIyCQkJQCBoKz1DaChlLGYsZykKKyNpZiA1PT0zMQorCWFuZAlyMyxyMywjMHhmZgorCWNtcAlyMywjMHhmMgkJCUAgZG9uZT8KKyNlbmRpZgorI2lmIDU8MTUKKyMgaWYgX19BUk1fQVJDSF9fPj03CisJbGRyCXIyLFtyMV0sIzQJCQlAIHByZWZldGNoCisjIGVsc2UKKwlsZHJiCXIyLFtyMSwjM10KKyMgZW5kaWYKKwllb3IJcjMscjcscjgJCQlAIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKyNlbHNlCisJbGRyCXIyLFtzcCwjNyo0XQkJQCBmcm9tIGZ1dHVyZSBCT0RZXzE2X3h4CisJZW9yCXIzLHI3LHI4CQkJQCBhXmIsIGJeYyBpbiBuZXh0IHJvdW5kCisJbGRyCXIxLFtzcCwjNCo0XQlAIGZyb20gZnV0dXJlIEJPRFlfMTZfeHgKKyNlbmRpZgorCWVvcglyMCxyMCxyNyxyb3IjMjAJQCBTaWdtYTAoYSkKKwlhbmQJcjEyLHIxMixyMwkJCUAgKGJeYykmPShhXmIpCisJYWRkCXIxMCxyMTAscjYJCQlAIGQrPWgKKwllb3IJcjEyLHIxMixyOAkJCUAgTWFqKGEsYixjKQorCWFkZAlyNixyNixyMCxyb3IjMglAIGgrPVNpZ21hMChhKQorCUAgYWRkCXI2LHI2LHIxMgkJCUAgaCs9TWFqKGEsYixjKQorI2lmIF9fQVJNX0FSQ0hfXz49NworCUAgbGRyCXIyLFtyMV0sIzQJCQlAIDYKKyMgaWYgNj09MTUKKwlzdHIJcjEsW3NwLCMxNyo0XQkJCUAgbWFrZSByb29tIGZvciByMQorIyBlbmRpZgorCWVvcglyMCxyMTAscjEwLHJvciM1CisJYWRkCXI2LHI2LHIxMgkJCUAgaCs9TWFqKGEsYixjKSBmcm9tIHRoZSBwYXN0CisJZW9yCXIwLHIwLHIxMCxyb3IjMTkJQCBTaWdtYTEoZSkKKwlyZXYJcjIscjIKKyNlbHNlCisJQCBsZHJiCXIyLFtyMSwjM10JCQlAIDYKKwlhZGQJcjYscjYscjEyCQkJQCBoKz1NYWooYSxiLGMpIGZyb20gdGhlIHBhc3QKKwlsZHJiCXIxMixbcjEsIzJdCisJbGRyYglyMCxbcjEsIzFdCisJb3JyCXIyLHIyLHIxMixsc2wjOAorCWxkcmIJcjEyLFtyMV0sIzQKKwlvcnIJcjIscjIscjAsbHNsIzE2CisjIGlmIDY9PTE1CisJc3RyCXIxLFtzcCwjMTcqNF0JCQlAIG1ha2Ugcm9vbSBmb3IgcjEKKyMgZW5kaWYKKwllb3IJcjAscjEwLHIxMCxyb3IjNQorCW9ycglyMixyMixyMTIsbHNsIzI0CisJZW9yCXIwLHIwLHIxMCxyb3IjMTkJQCBTaWdtYTEoZSkKKyNlbmRpZgorCWxkcglyMTIsW3IxNF0sIzQJCQlAICpLMjU2KysKKwlhZGQJcjUscjUscjIJCQlAIGgrPVhbaV0KKwlzdHIJcjIsW3NwLCM2KjRdCisJZW9yCXIyLHIxMSxyNAorCWFkZAlyNSxyNSxyMCxyb3IjNglAIGgrPVNpZ21hMShlKQorCWFuZAlyMixyMixyMTAKKwlhZGQJcjUscjUscjEyCQkJQCBoKz1LMjU2W2ldCisJZW9yCXIyLHIyLHI0CQkJQCBDaChlLGYsZykKKwllb3IJcjAscjYscjYscm9yIzExCisJYWRkCXI1LHI1LHIyCQkJQCBoKz1DaChlLGYsZykKKyNpZiA2PT0zMQorCWFuZAlyMTIscjEyLCMweGZmCisJY21wCXIxMiwjMHhmMgkJCUAgZG9uZT8KKyNlbmRpZgorI2lmIDY8MTUKKyMgaWYgX19BUk1fQVJDSF9fPj03CisJbGRyCXIyLFtyMV0sIzQJCQlAIHByZWZldGNoCisjIGVsc2UKKwlsZHJiCXIyLFtyMSwjM10KKyMgZW5kaWYKKwllb3IJcjEyLHI2LHI3CQkJQCBhXmIsIGJeYyBpbiBuZXh0IHJvdW5kCisjZWxzZQorCWxkcglyMixbc3AsIzgqNF0JCUAgZnJvbSBmdXR1cmUgQk9EWV8xNl94eAorCWVvcglyMTIscjYscjcJCQlAIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKwlsZHIJcjEsW3NwLCM1KjRdCUAgZnJvbSBmdXR1cmUgQk9EWV8xNl94eAorI2VuZGlmCisJZW9yCXIwLHIwLHI2LHJvciMyMAlAIFNpZ21hMChhKQorCWFuZAlyMyxyMyxyMTIJCQlAIChiXmMpJj0oYV5iKQorCWFkZAlyOSxyOSxyNQkJCUAgZCs9aAorCWVvcglyMyxyMyxyNwkJCUAgTWFqKGEsYixjKQorCWFkZAlyNSxyNSxyMCxyb3IjMglAIGgrPVNpZ21hMChhKQorCUAgYWRkCXI1LHI1LHIzCQkJQCBoKz1NYWooYSxiLGMpCisjaWYgX19BUk1fQVJDSF9fPj03CisJQCBsZHIJcjIsW3IxXSwjNAkJCUAgNworIyBpZiA3PT0xNQorCXN0cglyMSxbc3AsIzE3KjRdCQkJQCBtYWtlIHJvb20gZm9yIHIxCisjIGVuZGlmCisJZW9yCXIwLHI5LHI5LHJvciM1CisJYWRkCXI1LHI1LHIzCQkJQCBoKz1NYWooYSxiLGMpIGZyb20gdGhlIHBhc3QKKwllb3IJcjAscjAscjkscm9yIzE5CUAgU2lnbWExKGUpCisJcmV2CXIyLHIyCisjZWxzZQorCUAgbGRyYglyMixbcjEsIzNdCQkJQCA3CisJYWRkCXI1LHI1LHIzCQkJQCBoKz1NYWooYSxiLGMpIGZyb20gdGhlIHBhc3QKKwlsZHJiCXIzLFtyMSwjMl0KKwlsZHJiCXIwLFtyMSwjMV0KKwlvcnIJcjIscjIscjMsbHNsIzgKKwlsZHJiCXIzLFtyMV0sIzQKKwlvcnIJcjIscjIscjAsbHNsIzE2CisjIGlmIDc9PTE1CisJc3RyCXIxLFtzcCwjMTcqNF0JCQlAIG1ha2Ugcm9vbSBmb3IgcjEKKyMgZW5kaWYKKwllb3IJcjAscjkscjkscm9yIzUKKwlvcnIJcjIscjIscjMsbHNsIzI0CisJZW9yCXIwLHIwLHI5LHJvciMxOQlAIFNpZ21hMShlKQorI2VuZGlmCisJbGRyCXIzLFtyMTRdLCM0CQkJQCAqSzI1NisrCisJYWRkCXI0LHI0LHIyCQkJQCBoKz1YW2ldCisJc3RyCXIyLFtzcCwjNyo0XQorCWVvcglyMixyMTAscjExCisJYWRkCXI0LHI0LHIwLHJvciM2CUAgaCs9U2lnbWExKGUpCisJYW5kCXIyLHIyLHI5CisJYWRkCXI0LHI0LHIzCQkJQCBoKz1LMjU2W2ldCisJZW9yCXIyLHIyLHIxMQkJCUAgQ2goZSxmLGcpCisJZW9yCXIwLHI1LHI1LHJvciMxMQorCWFkZAlyNCxyNCxyMgkJCUAgaCs9Q2goZSxmLGcpCisjaWYgNz09MzEKKwlhbmQJcjMscjMsIzB4ZmYKKwljbXAJcjMsIzB4ZjIJCQlAIGRvbmU/CisjZW5kaWYKKyNpZiA3PDE1CisjIGlmIF9fQVJNX0FSQ0hfXz49NworCWxkcglyMixbcjFdLCM0CQkJQCBwcmVmZXRjaAorIyBlbHNlCisJbGRyYglyMixbcjEsIzNdCisjIGVuZGlmCisJZW9yCXIzLHI1LHI2CQkJQCBhXmIsIGJeYyBpbiBuZXh0IHJvdW5kCisjZWxzZQorCWxkcglyMixbc3AsIzkqNF0JCUAgZnJvbSBmdXR1cmUgQk9EWV8xNl94eAorCWVvcglyMyxyNSxyNgkJCUAgYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorCWxkcglyMSxbc3AsIzYqNF0JQCBmcm9tIGZ1dHVyZSBCT0RZXzE2X3h4CisjZW5kaWYKKwllb3IJcjAscjAscjUscm9yIzIwCUAgU2lnbWEwKGEpCisJYW5kCXIxMixyMTIscjMJCQlAIChiXmMpJj0oYV5iKQorCWFkZAlyOCxyOCxyNAkJCUAgZCs9aAorCWVvcglyMTIscjEyLHI2CQkJQCBNYWooYSxiLGMpCisJYWRkCXI0LHI0LHIwLHJvciMyCUAgaCs9U2lnbWEwKGEpCisJQCBhZGQJcjQscjQscjEyCQkJQCBoKz1NYWooYSxiLGMpCisjaWYgX19BUk1fQVJDSF9fPj03CisJQCBsZHIJcjIsW3IxXSwjNAkJCUAgOAorIyBpZiA4PT0xNQorCXN0cglyMSxbc3AsIzE3KjRdCQkJQCBtYWtlIHJvb20gZm9yIHIxCisjIGVuZGlmCisJZW9yCXIwLHI4LHI4LHJvciM1CisJYWRkCXI0LHI0LHIxMgkJCUAgaCs9TWFqKGEsYixjKSBmcm9tIHRoZSBwYXN0CisJZW9yCXIwLHIwLHI4LHJvciMxOQlAIFNpZ21hMShlKQorCXJldglyMixyMgorI2Vsc2UKKwlAIGxkcmIJcjIsW3IxLCMzXQkJCUAgOAorCWFkZAlyNCxyNCxyMTIJCQlAIGgrPU1haihhLGIsYykgZnJvbSB0aGUgcGFzdAorCWxkcmIJcjEyLFtyMSwjMl0KKwlsZHJiCXIwLFtyMSwjMV0KKwlvcnIJcjIscjIscjEyLGxzbCM4CisJbGRyYglyMTIsW3IxXSwjNAorCW9ycglyMixyMixyMCxsc2wjMTYKKyMgaWYgOD09MTUKKwlzdHIJcjEsW3NwLCMxNyo0XQkJCUAgbWFrZSByb29tIGZvciByMQorIyBlbmRpZgorCWVvcglyMCxyOCxyOCxyb3IjNQorCW9ycglyMixyMixyMTIsbHNsIzI0CisJZW9yCXIwLHIwLHI4LHJvciMxOQlAIFNpZ21hMShlKQorI2VuZGlmCisJbGRyCXIxMixbcjE0XSwjNAkJCUAgKksyNTYrKworCWFkZAlyMTEscjExLHIyCQkJQCBoKz1YW2ldCisJc3RyCXIyLFtzcCwjOCo0XQorCWVvcglyMixyOSxyMTAKKwlhZGQJcjExLHIxMSxyMCxyb3IjNglAIGgrPVNpZ21hMShlKQorCWFuZAlyMixyMixyOAorCWFkZAlyMTEscjExLHIxMgkJCUAgaCs9SzI1NltpXQorCWVvcglyMixyMixyMTAJCQlAIENoKGUsZixnKQorCWVvcglyMCxyNCxyNCxyb3IjMTEKKwlhZGQJcjExLHIxMSxyMgkJCUAgaCs9Q2goZSxmLGcpCisjaWYgOD09MzEKKwlhbmQJcjEyLHIxMiwjMHhmZgorCWNtcAlyMTIsIzB4ZjIJCQlAIGRvbmU/CisjZW5kaWYKKyNpZiA4PDE1CisjIGlmIF9fQVJNX0FSQ0hfXz49NworCWxkcglyMixbcjFdLCM0CQkJQCBwcmVmZXRjaAorIyBlbHNlCisJbGRyYglyMixbcjEsIzNdCisjIGVuZGlmCisJZW9yCXIxMixyNCxyNQkJCUAgYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorI2Vsc2UKKwlsZHIJcjIsW3NwLCMxMCo0XQkJQCBmcm9tIGZ1dHVyZSBCT0RZXzE2X3h4CisJZW9yCXIxMixyNCxyNQkJCUAgYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorCWxkcglyMSxbc3AsIzcqNF0JQCBmcm9tIGZ1dHVyZSBCT0RZXzE2X3h4CisjZW5kaWYKKwllb3IJcjAscjAscjQscm9yIzIwCUAgU2lnbWEwKGEpCisJYW5kCXIzLHIzLHIxMgkJCUAgKGJeYykmPShhXmIpCisJYWRkCXI3LHI3LHIxMQkJCUAgZCs9aAorCWVvcglyMyxyMyxyNQkJCUAgTWFqKGEsYixjKQorCWFkZAlyMTEscjExLHIwLHJvciMyCUAgaCs9U2lnbWEwKGEpCisJQCBhZGQJcjExLHIxMSxyMwkJCUAgaCs9TWFqKGEsYixjKQorI2lmIF9fQVJNX0FSQ0hfXz49NworCUAgbGRyCXIyLFtyMV0sIzQJCQlAIDkKKyMgaWYgOT09MTUKKwlzdHIJcjEsW3NwLCMxNyo0XQkJCUAgbWFrZSByb29tIGZvciByMQorIyBlbmRpZgorCWVvcglyMCxyNyxyNyxyb3IjNQorCWFkZAlyMTEscjExLHIzCQkJQCBoKz1NYWooYSxiLGMpIGZyb20gdGhlIHBhc3QKKwllb3IJcjAscjAscjcscm9yIzE5CUAgU2lnbWExKGUpCisJcmV2CXIyLHIyCisjZWxzZQorCUAgbGRyYglyMixbcjEsIzNdCQkJQCA5CisJYWRkCXIxMSxyMTEscjMJCQlAIGgrPU1haihhLGIsYykgZnJvbSB0aGUgcGFzdAorCWxkcmIJcjMsW3IxLCMyXQorCWxkcmIJcjAsW3IxLCMxXQorCW9ycglyMixyMixyMyxsc2wjOAorCWxkcmIJcjMsW3IxXSwjNAorCW9ycglyMixyMixyMCxsc2wjMTYKKyMgaWYgOT09MTUKKwlzdHIJcjEsW3NwLCMxNyo0XQkJCUAgbWFrZSByb29tIGZvciByMQorIyBlbmRpZgorCWVvcglyMCxyNyxyNyxyb3IjNQorCW9ycglyMixyMixyMyxsc2wjMjQKKwllb3IJcjAscjAscjcscm9yIzE5CUAgU2lnbWExKGUpCisjZW5kaWYKKwlsZHIJcjMsW3IxNF0sIzQJCQlAICpLMjU2KysKKwlhZGQJcjEwLHIxMCxyMgkJCUAgaCs9WFtpXQorCXN0cglyMixbc3AsIzkqNF0KKwllb3IJcjIscjgscjkKKwlhZGQJcjEwLHIxMCxyMCxyb3IjNglAIGgrPVNpZ21hMShlKQorCWFuZAlyMixyMixyNworCWFkZAlyMTAscjEwLHIzCQkJQCBoKz1LMjU2W2ldCisJZW9yCXIyLHIyLHI5CQkJQCBDaChlLGYsZykKKwllb3IJcjAscjExLHIxMSxyb3IjMTEKKwlhZGQJcjEwLHIxMCxyMgkJCUAgaCs9Q2goZSxmLGcpCisjaWYgOT09MzEKKwlhbmQJcjMscjMsIzB4ZmYKKwljbXAJcjMsIzB4ZjIJCQlAIGRvbmU/CisjZW5kaWYKKyNpZiA5PDE1CisjIGlmIF9fQVJNX0FSQ0hfXz49NworCWxkcglyMixbcjFdLCM0CQkJQCBwcmVmZXRjaAorIyBlbHNlCisJbGRyYglyMixbcjEsIzNdCisjIGVuZGlmCisJZW9yCXIzLHIxMSxyNAkJCUAgYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorI2Vsc2UKKwlsZHIJcjIsW3NwLCMxMSo0XQkJQCBmcm9tIGZ1dHVyZSBCT0RZXzE2X3h4CisJZW9yCXIzLHIxMSxyNAkJCUAgYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorCWxkcglyMSxbc3AsIzgqNF0JQCBmcm9tIGZ1dHVyZSBCT0RZXzE2X3h4CisjZW5kaWYKKwllb3IJcjAscjAscjExLHJvciMyMAlAIFNpZ21hMChhKQorCWFuZAlyMTIscjEyLHIzCQkJQCAoYl5jKSY9KGFeYikKKwlhZGQJcjYscjYscjEwCQkJQCBkKz1oCisJZW9yCXIxMixyMTIscjQJCQlAIE1haihhLGIsYykKKwlhZGQJcjEwLHIxMCxyMCxyb3IjMglAIGgrPVNpZ21hMChhKQorCUAgYWRkCXIxMCxyMTAscjEyCQkJQCBoKz1NYWooYSxiLGMpCisjaWYgX19BUk1fQVJDSF9fPj03CisJQCBsZHIJcjIsW3IxXSwjNAkJCUAgMTAKKyMgaWYgMTA9PTE1CisJc3RyCXIxLFtzcCwjMTcqNF0JCQlAIG1ha2Ugcm9vbSBmb3IgcjEKKyMgZW5kaWYKKwllb3IJcjAscjYscjYscm9yIzUKKwlhZGQJcjEwLHIxMCxyMTIJCQlAIGgrPU1haihhLGIsYykgZnJvbSB0aGUgcGFzdAorCWVvcglyMCxyMCxyNixyb3IjMTkJQCBTaWdtYTEoZSkKKwlyZXYJcjIscjIKKyNlbHNlCisJQCBsZHJiCXIyLFtyMSwjM10JCQlAIDEwCisJYWRkCXIxMCxyMTAscjEyCQkJQCBoKz1NYWooYSxiLGMpIGZyb20gdGhlIHBhc3QKKwlsZHJiCXIxMixbcjEsIzJdCisJbGRyYglyMCxbcjEsIzFdCisJb3JyCXIyLHIyLHIxMixsc2wjOAorCWxkcmIJcjEyLFtyMV0sIzQKKwlvcnIJcjIscjIscjAsbHNsIzE2CisjIGlmIDEwPT0xNQorCXN0cglyMSxbc3AsIzE3KjRdCQkJQCBtYWtlIHJvb20gZm9yIHIxCisjIGVuZGlmCisJZW9yCXIwLHI2LHI2LHJvciM1CisJb3JyCXIyLHIyLHIxMixsc2wjMjQKKwllb3IJcjAscjAscjYscm9yIzE5CUAgU2lnbWExKGUpCisjZW5kaWYKKwlsZHIJcjEyLFtyMTRdLCM0CQkJQCAqSzI1NisrCisJYWRkCXI5LHI5LHIyCQkJQCBoKz1YW2ldCisJc3RyCXIyLFtzcCwjMTAqNF0KKwllb3IJcjIscjcscjgKKwlhZGQJcjkscjkscjAscm9yIzYJQCBoKz1TaWdtYTEoZSkKKwlhbmQJcjIscjIscjYKKwlhZGQJcjkscjkscjEyCQkJQCBoKz1LMjU2W2ldCisJZW9yCXIyLHIyLHI4CQkJQCBDaChlLGYsZykKKwllb3IJcjAscjEwLHIxMCxyb3IjMTEKKwlhZGQJcjkscjkscjIJCQlAIGgrPUNoKGUsZixnKQorI2lmIDEwPT0zMQorCWFuZAlyMTIscjEyLCMweGZmCisJY21wCXIxMiwjMHhmMgkJCUAgZG9uZT8KKyNlbmRpZgorI2lmIDEwPDE1CisjIGlmIF9fQVJNX0FSQ0hfXz49NworCWxkcglyMixbcjFdLCM0CQkJQCBwcmVmZXRjaAorIyBlbHNlCisJbGRyYglyMixbcjEsIzNdCisjIGVuZGlmCisJZW9yCXIxMixyMTAscjExCQkJQCBhXmIsIGJeYyBpbiBuZXh0IHJvdW5kCisjZWxzZQorCWxkcglyMixbc3AsIzEyKjRdCQlAIGZyb20gZnV0dXJlIEJPRFlfMTZfeHgKKwllb3IJcjEyLHIxMCxyMTEJCQlAIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKwlsZHIJcjEsW3NwLCM5KjRdCUAgZnJvbSBmdXR1cmUgQk9EWV8xNl94eAorI2VuZGlmCisJZW9yCXIwLHIwLHIxMCxyb3IjMjAJQCBTaWdtYTAoYSkKKwlhbmQJcjMscjMscjEyCQkJQCAoYl5jKSY9KGFeYikKKwlhZGQJcjUscjUscjkJCQlAIGQrPWgKKwllb3IJcjMscjMscjExCQkJQCBNYWooYSxiLGMpCisJYWRkCXI5LHI5LHIwLHJvciMyCUAgaCs9U2lnbWEwKGEpCisJQCBhZGQJcjkscjkscjMJCQlAIGgrPU1haihhLGIsYykKKyNpZiBfX0FSTV9BUkNIX18+PTcKKwlAIGxkcglyMixbcjFdLCM0CQkJQCAxMQorIyBpZiAxMT09MTUKKwlzdHIJcjEsW3NwLCMxNyo0XQkJCUAgbWFrZSByb29tIGZvciByMQorIyBlbmRpZgorCWVvcglyMCxyNSxyNSxyb3IjNQorCWFkZAlyOSxyOSxyMwkJCUAgaCs9TWFqKGEsYixjKSBmcm9tIHRoZSBwYXN0CisJZW9yCXIwLHIwLHI1LHJvciMxOQlAIFNpZ21hMShlKQorCXJldglyMixyMgorI2Vsc2UKKwlAIGxkcmIJcjIsW3IxLCMzXQkJCUAgMTEKKwlhZGQJcjkscjkscjMJCQlAIGgrPU1haihhLGIsYykgZnJvbSB0aGUgcGFzdAorCWxkcmIJcjMsW3IxLCMyXQorCWxkcmIJcjAsW3IxLCMxXQorCW9ycglyMixyMixyMyxsc2wjOAorCWxkcmIJcjMsW3IxXSwjNAorCW9ycglyMixyMixyMCxsc2wjMTYKKyMgaWYgMTE9PTE1CisJc3RyCXIxLFtzcCwjMTcqNF0JCQlAIG1ha2Ugcm9vbSBmb3IgcjEKKyMgZW5kaWYKKwllb3IJcjAscjUscjUscm9yIzUKKwlvcnIJcjIscjIscjMsbHNsIzI0CisJZW9yCXIwLHIwLHI1LHJvciMxOQlAIFNpZ21hMShlKQorI2VuZGlmCisJbGRyCXIzLFtyMTRdLCM0CQkJQCAqSzI1NisrCisJYWRkCXI4LHI4LHIyCQkJQCBoKz1YW2ldCisJc3RyCXIyLFtzcCwjMTEqNF0KKwllb3IJcjIscjYscjcKKwlhZGQJcjgscjgscjAscm9yIzYJQCBoKz1TaWdtYTEoZSkKKwlhbmQJcjIscjIscjUKKwlhZGQJcjgscjgscjMJCQlAIGgrPUsyNTZbaV0KKwllb3IJcjIscjIscjcJCQlAIENoKGUsZixnKQorCWVvcglyMCxyOSxyOSxyb3IjMTEKKwlhZGQJcjgscjgscjIJCQlAIGgrPUNoKGUsZixnKQorI2lmIDExPT0zMQorCWFuZAlyMyxyMywjMHhmZgorCWNtcAlyMywjMHhmMgkJCUAgZG9uZT8KKyNlbmRpZgorI2lmIDExPDE1CisjIGlmIF9fQVJNX0FSQ0hfXz49NworCWxkcglyMixbcjFdLCM0CQkJQCBwcmVmZXRjaAorIyBlbHNlCisJbGRyYglyMixbcjEsIzNdCisjIGVuZGlmCisJZW9yCXIzLHI5LHIxMAkJCUAgYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorI2Vsc2UKKwlsZHIJcjIsW3NwLCMxMyo0XQkJQCBmcm9tIGZ1dHVyZSBCT0RZXzE2X3h4CisJZW9yCXIzLHI5LHIxMAkJCUAgYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorCWxkcglyMSxbc3AsIzEwKjRdCUAgZnJvbSBmdXR1cmUgQk9EWV8xNl94eAorI2VuZGlmCisJZW9yCXIwLHIwLHI5LHJvciMyMAlAIFNpZ21hMChhKQorCWFuZAlyMTIscjEyLHIzCQkJQCAoYl5jKSY9KGFeYikKKwlhZGQJcjQscjQscjgJCQlAIGQrPWgKKwllb3IJcjEyLHIxMixyMTAJCQlAIE1haihhLGIsYykKKwlhZGQJcjgscjgscjAscm9yIzIJQCBoKz1TaWdtYTAoYSkKKwlAIGFkZAlyOCxyOCxyMTIJCQlAIGgrPU1haihhLGIsYykKKyNpZiBfX0FSTV9BUkNIX18+PTcKKwlAIGxkcglyMixbcjFdLCM0CQkJQCAxMgorIyBpZiAxMj09MTUKKwlzdHIJcjEsW3NwLCMxNyo0XQkJCUAgbWFrZSByb29tIGZvciByMQorIyBlbmRpZgorCWVvcglyMCxyNCxyNCxyb3IjNQorCWFkZAlyOCxyOCxyMTIJCQlAIGgrPU1haihhLGIsYykgZnJvbSB0aGUgcGFzdAorCWVvcglyMCxyMCxyNCxyb3IjMTkJQCBTaWdtYTEoZSkKKwlyZXYJcjIscjIKKyNlbHNlCisJQCBsZHJiCXIyLFtyMSwjM10JCQlAIDEyCisJYWRkCXI4LHI4LHIxMgkJCUAgaCs9TWFqKGEsYixjKSBmcm9tIHRoZSBwYXN0CisJbGRyYglyMTIsW3IxLCMyXQorCWxkcmIJcjAsW3IxLCMxXQorCW9ycglyMixyMixyMTIsbHNsIzgKKwlsZHJiCXIxMixbcjFdLCM0CisJb3JyCXIyLHIyLHIwLGxzbCMxNgorIyBpZiAxMj09MTUKKwlzdHIJcjEsW3NwLCMxNyo0XQkJCUAgbWFrZSByb29tIGZvciByMQorIyBlbmRpZgorCWVvcglyMCxyNCxyNCxyb3IjNQorCW9ycglyMixyMixyMTIsbHNsIzI0CisJZW9yCXIwLHIwLHI0LHJvciMxOQlAIFNpZ21hMShlKQorI2VuZGlmCisJbGRyCXIxMixbcjE0XSwjNAkJCUAgKksyNTYrKworCWFkZAlyNyxyNyxyMgkJCUAgaCs9WFtpXQorCXN0cglyMixbc3AsIzEyKjRdCisJZW9yCXIyLHI1LHI2CisJYWRkCXI3LHI3LHIwLHJvciM2CUAgaCs9U2lnbWExKGUpCisJYW5kCXIyLHIyLHI0CisJYWRkCXI3LHI3LHIxMgkJCUAgaCs9SzI1NltpXQorCWVvcglyMixyMixyNgkJCUAgQ2goZSxmLGcpCisJZW9yCXIwLHI4LHI4LHJvciMxMQorCWFkZAlyNyxyNyxyMgkJCUAgaCs9Q2goZSxmLGcpCisjaWYgMTI9PTMxCisJYW5kCXIxMixyMTIsIzB4ZmYKKwljbXAJcjEyLCMweGYyCQkJQCBkb25lPworI2VuZGlmCisjaWYgMTI8MTUKKyMgaWYgX19BUk1fQVJDSF9fPj03CisJbGRyCXIyLFtyMV0sIzQJCQlAIHByZWZldGNoCisjIGVsc2UKKwlsZHJiCXIyLFtyMSwjM10KKyMgZW5kaWYKKwllb3IJcjEyLHI4LHI5CQkJQCBhXmIsIGJeYyBpbiBuZXh0IHJvdW5kCisjZWxzZQorCWxkcglyMixbc3AsIzE0KjRdCQlAIGZyb20gZnV0dXJlIEJPRFlfMTZfeHgKKwllb3IJcjEyLHI4LHI5CQkJQCBhXmIsIGJeYyBpbiBuZXh0IHJvdW5kCisJbGRyCXIxLFtzcCwjMTEqNF0JQCBmcm9tIGZ1dHVyZSBCT0RZXzE2X3h4CisjZW5kaWYKKwllb3IJcjAscjAscjgscm9yIzIwCUAgU2lnbWEwKGEpCisJYW5kCXIzLHIzLHIxMgkJCUAgKGJeYykmPShhXmIpCisJYWRkCXIxMSxyMTEscjcJCQlAIGQrPWgKKwllb3IJcjMscjMscjkJCQlAIE1haihhLGIsYykKKwlhZGQJcjcscjcscjAscm9yIzIJQCBoKz1TaWdtYTAoYSkKKwlAIGFkZAlyNyxyNyxyMwkJCUAgaCs9TWFqKGEsYixjKQorI2lmIF9fQVJNX0FSQ0hfXz49NworCUAgbGRyCXIyLFtyMV0sIzQJCQlAIDEzCisjIGlmIDEzPT0xNQorCXN0cglyMSxbc3AsIzE3KjRdCQkJQCBtYWtlIHJvb20gZm9yIHIxCisjIGVuZGlmCisJZW9yCXIwLHIxMSxyMTEscm9yIzUKKwlhZGQJcjcscjcscjMJCQlAIGgrPU1haihhLGIsYykgZnJvbSB0aGUgcGFzdAorCWVvcglyMCxyMCxyMTEscm9yIzE5CUAgU2lnbWExKGUpCisJcmV2CXIyLHIyCisjZWxzZQorCUAgbGRyYglyMixbcjEsIzNdCQkJQCAxMworCWFkZAlyNyxyNyxyMwkJCUAgaCs9TWFqKGEsYixjKSBmcm9tIHRoZSBwYXN0CisJbGRyYglyMyxbcjEsIzJdCisJbGRyYglyMCxbcjEsIzFdCisJb3JyCXIyLHIyLHIzLGxzbCM4CisJbGRyYglyMyxbcjFdLCM0CisJb3JyCXIyLHIyLHIwLGxzbCMxNgorIyBpZiAxMz09MTUKKwlzdHIJcjEsW3NwLCMxNyo0XQkJCUAgbWFrZSByb29tIGZvciByMQorIyBlbmRpZgorCWVvcglyMCxyMTEscjExLHJvciM1CisJb3JyCXIyLHIyLHIzLGxzbCMyNAorCWVvcglyMCxyMCxyMTEscm9yIzE5CUAgU2lnbWExKGUpCisjZW5kaWYKKwlsZHIJcjMsW3IxNF0sIzQJCQlAICpLMjU2KysKKwlhZGQJcjYscjYscjIJCQlAIGgrPVhbaV0KKwlzdHIJcjIsW3NwLCMxMyo0XQorCWVvcglyMixyNCxyNQorCWFkZAlyNixyNixyMCxyb3IjNglAIGgrPVNpZ21hMShlKQorCWFuZAlyMixyMixyMTEKKwlhZGQJcjYscjYscjMJCQlAIGgrPUsyNTZbaV0KKwllb3IJcjIscjIscjUJCQlAIENoKGUsZixnKQorCWVvcglyMCxyNyxyNyxyb3IjMTEKKwlhZGQJcjYscjYscjIJCQlAIGgrPUNoKGUsZixnKQorI2lmIDEzPT0zMQorCWFuZAlyMyxyMywjMHhmZgorCWNtcAlyMywjMHhmMgkJCUAgZG9uZT8KKyNlbmRpZgorI2lmIDEzPDE1CisjIGlmIF9fQVJNX0FSQ0hfXz49NworCWxkcglyMixbcjFdLCM0CQkJQCBwcmVmZXRjaAorIyBlbHNlCisJbGRyYglyMixbcjEsIzNdCisjIGVuZGlmCisJZW9yCXIzLHI3LHI4CQkJQCBhXmIsIGJeYyBpbiBuZXh0IHJvdW5kCisjZWxzZQorCWxkcglyMixbc3AsIzE1KjRdCQlAIGZyb20gZnV0dXJlIEJPRFlfMTZfeHgKKwllb3IJcjMscjcscjgJCQlAIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKwlsZHIJcjEsW3NwLCMxMio0XQlAIGZyb20gZnV0dXJlIEJPRFlfMTZfeHgKKyNlbmRpZgorCWVvcglyMCxyMCxyNyxyb3IjMjAJQCBTaWdtYTAoYSkKKwlhbmQJcjEyLHIxMixyMwkJCUAgKGJeYykmPShhXmIpCisJYWRkCXIxMCxyMTAscjYJCQlAIGQrPWgKKwllb3IJcjEyLHIxMixyOAkJCUAgTWFqKGEsYixjKQorCWFkZAlyNixyNixyMCxyb3IjMglAIGgrPVNpZ21hMChhKQorCUAgYWRkCXI2LHI2LHIxMgkJCUAgaCs9TWFqKGEsYixjKQorI2lmIF9fQVJNX0FSQ0hfXz49NworCUAgbGRyCXIyLFtyMV0sIzQJCQlAIDE0CisjIGlmIDE0PT0xNQorCXN0cglyMSxbc3AsIzE3KjRdCQkJQCBtYWtlIHJvb20gZm9yIHIxCisjIGVuZGlmCisJZW9yCXIwLHIxMCxyMTAscm9yIzUKKwlhZGQJcjYscjYscjEyCQkJQCBoKz1NYWooYSxiLGMpIGZyb20gdGhlIHBhc3QKKwllb3IJcjAscjAscjEwLHJvciMxOQlAIFNpZ21hMShlKQorCXJldglyMixyMgorI2Vsc2UKKwlAIGxkcmIJcjIsW3IxLCMzXQkJCUAgMTQKKwlhZGQJcjYscjYscjEyCQkJQCBoKz1NYWooYSxiLGMpIGZyb20gdGhlIHBhc3QKKwlsZHJiCXIxMixbcjEsIzJdCisJbGRyYglyMCxbcjEsIzFdCisJb3JyCXIyLHIyLHIxMixsc2wjOAorCWxkcmIJcjEyLFtyMV0sIzQKKwlvcnIJcjIscjIscjAsbHNsIzE2CisjIGlmIDE0PT0xNQorCXN0cglyMSxbc3AsIzE3KjRdCQkJQCBtYWtlIHJvb20gZm9yIHIxCisjIGVuZGlmCisJZW9yCXIwLHIxMCxyMTAscm9yIzUKKwlvcnIJcjIscjIscjEyLGxzbCMyNAorCWVvcglyMCxyMCxyMTAscm9yIzE5CUAgU2lnbWExKGUpCisjZW5kaWYKKwlsZHIJcjEyLFtyMTRdLCM0CQkJQCAqSzI1NisrCisJYWRkCXI1LHI1LHIyCQkJQCBoKz1YW2ldCisJc3RyCXIyLFtzcCwjMTQqNF0KKwllb3IJcjIscjExLHI0CisJYWRkCXI1LHI1LHIwLHJvciM2CUAgaCs9U2lnbWExKGUpCisJYW5kCXIyLHIyLHIxMAorCWFkZAlyNSxyNSxyMTIJCQlAIGgrPUsyNTZbaV0KKwllb3IJcjIscjIscjQJCQlAIENoKGUsZixnKQorCWVvcglyMCxyNixyNixyb3IjMTEKKwlhZGQJcjUscjUscjIJCQlAIGgrPUNoKGUsZixnKQorI2lmIDE0PT0zMQorCWFuZAlyMTIscjEyLCMweGZmCisJY21wCXIxMiwjMHhmMgkJCUAgZG9uZT8KKyNlbmRpZgorI2lmIDE0PDE1CisjIGlmIF9fQVJNX0FSQ0hfXz49NworCWxkcglyMixbcjFdLCM0CQkJQCBwcmVmZXRjaAorIyBlbHNlCisJbGRyYglyMixbcjEsIzNdCisjIGVuZGlmCisJZW9yCXIxMixyNixyNwkJCUAgYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorI2Vsc2UKKwlsZHIJcjIsW3NwLCMwKjRdCQlAIGZyb20gZnV0dXJlIEJPRFlfMTZfeHgKKwllb3IJcjEyLHI2LHI3CQkJQCBhXmIsIGJeYyBpbiBuZXh0IHJvdW5kCisJbGRyCXIxLFtzcCwjMTMqNF0JQCBmcm9tIGZ1dHVyZSBCT0RZXzE2X3h4CisjZW5kaWYKKwllb3IJcjAscjAscjYscm9yIzIwCUAgU2lnbWEwKGEpCisJYW5kCXIzLHIzLHIxMgkJCUAgKGJeYykmPShhXmIpCisJYWRkCXI5LHI5LHI1CQkJQCBkKz1oCisJZW9yCXIzLHIzLHI3CQkJQCBNYWooYSxiLGMpCisJYWRkCXI1LHI1LHIwLHJvciMyCUAgaCs9U2lnbWEwKGEpCisJQCBhZGQJcjUscjUscjMJCQlAIGgrPU1haihhLGIsYykKKyNpZiBfX0FSTV9BUkNIX18+PTcKKwlAIGxkcglyMixbcjFdLCM0CQkJQCAxNQorIyBpZiAxNT09MTUKKwlzdHIJcjEsW3NwLCMxNyo0XQkJCUAgbWFrZSByb29tIGZvciByMQorIyBlbmRpZgorCWVvcglyMCxyOSxyOSxyb3IjNQorCWFkZAlyNSxyNSxyMwkJCUAgaCs9TWFqKGEsYixjKSBmcm9tIHRoZSBwYXN0CisJZW9yCXIwLHIwLHI5LHJvciMxOQlAIFNpZ21hMShlKQorCXJldglyMixyMgorI2Vsc2UKKwlAIGxkcmIJcjIsW3IxLCMzXQkJCUAgMTUKKwlhZGQJcjUscjUscjMJCQlAIGgrPU1haihhLGIsYykgZnJvbSB0aGUgcGFzdAorCWxkcmIJcjMsW3IxLCMyXQorCWxkcmIJcjAsW3IxLCMxXQorCW9ycglyMixyMixyMyxsc2wjOAorCWxkcmIJcjMsW3IxXSwjNAorCW9ycglyMixyMixyMCxsc2wjMTYKKyMgaWYgMTU9PTE1CisJc3RyCXIxLFtzcCwjMTcqNF0JCQlAIG1ha2Ugcm9vbSBmb3IgcjEKKyMgZW5kaWYKKwllb3IJcjAscjkscjkscm9yIzUKKwlvcnIJcjIscjIscjMsbHNsIzI0CisJZW9yCXIwLHIwLHI5LHJvciMxOQlAIFNpZ21hMShlKQorI2VuZGlmCisJbGRyCXIzLFtyMTRdLCM0CQkJQCAqSzI1NisrCisJYWRkCXI0LHI0LHIyCQkJQCBoKz1YW2ldCisJc3RyCXIyLFtzcCwjMTUqNF0KKwllb3IJcjIscjEwLHIxMQorCWFkZAlyNCxyNCxyMCxyb3IjNglAIGgrPVNpZ21hMShlKQorCWFuZAlyMixyMixyOQorCWFkZAlyNCxyNCxyMwkJCUAgaCs9SzI1NltpXQorCWVvcglyMixyMixyMTEJCQlAIENoKGUsZixnKQorCWVvcglyMCxyNSxyNSxyb3IjMTEKKwlhZGQJcjQscjQscjIJCQlAIGgrPUNoKGUsZixnKQorI2lmIDE1PT0zMQorCWFuZAlyMyxyMywjMHhmZgorCWNtcAlyMywjMHhmMgkJCUAgZG9uZT8KKyNlbmRpZgorI2lmIDE1PDE1CisjIGlmIF9fQVJNX0FSQ0hfXz49NworCWxkcglyMixbcjFdLCM0CQkJQCBwcmVmZXRjaAorIyBlbHNlCisJbGRyYglyMixbcjEsIzNdCisjIGVuZGlmCisJZW9yCXIzLHI1LHI2CQkJQCBhXmIsIGJeYyBpbiBuZXh0IHJvdW5kCisjZWxzZQorCWxkcglyMixbc3AsIzEqNF0JCUAgZnJvbSBmdXR1cmUgQk9EWV8xNl94eAorCWVvcglyMyxyNSxyNgkJCUAgYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorCWxkcglyMSxbc3AsIzE0KjRdCUAgZnJvbSBmdXR1cmUgQk9EWV8xNl94eAorI2VuZGlmCisJZW9yCXIwLHIwLHI1LHJvciMyMAlAIFNpZ21hMChhKQorCWFuZAlyMTIscjEyLHIzCQkJQCAoYl5jKSY9KGFeYikKKwlhZGQJcjgscjgscjQJCQlAIGQrPWgKKwllb3IJcjEyLHIxMixyNgkJCUAgTWFqKGEsYixjKQorCWFkZAlyNCxyNCxyMCxyb3IjMglAIGgrPVNpZ21hMChhKQorCUAgYWRkCXI0LHI0LHIxMgkJCUAgaCs9TWFqKGEsYixjKQorLkxyb3VuZHNfMTZfeHg6CisJQCBsZHIJcjIsW3NwLCMxKjRdCQlAIDE2CisJQCBsZHIJcjEsW3NwLCMxNCo0XQorCW1vdglyMCxyMixyb3IjNworCWFkZAlyNCxyNCxyMTIJCQlAIGgrPU1haihhLGIsYykgZnJvbSB0aGUgcGFzdAorCW1vdglyMTIscjEscm9yIzE3CisJZW9yCXIwLHIwLHIyLHJvciMxOAorCWVvcglyMTIscjEyLHIxLHJvciMxOQorCWVvcglyMCxyMCxyMixsc3IjMwlAIHNpZ21hMChYW2krMV0pCisJbGRyCXIyLFtzcCwjMCo0XQorCWVvcglyMTIscjEyLHIxLGxzciMxMAlAIHNpZ21hMShYW2krMTRdKQorCWxkcglyMSxbc3AsIzkqNF0KKworCWFkZAlyMTIscjEyLHIwCisJZW9yCXIwLHI4LHI4LHJvciM1CUAgZnJvbSBCT0RZXzAwXzE1CisJYWRkCXIyLHIyLHIxMgorCWVvcglyMCxyMCxyOCxyb3IjMTkJQCBTaWdtYTEoZSkKKwlhZGQJcjIscjIscjEJCQlAIFhbaV0KKwlsZHIJcjEyLFtyMTRdLCM0CQkJQCAqSzI1NisrCisJYWRkCXIxMSxyMTEscjIJCQlAIGgrPVhbaV0KKwlzdHIJcjIsW3NwLCMwKjRdCisJZW9yCXIyLHI5LHIxMAorCWFkZAlyMTEscjExLHIwLHJvciM2CUAgaCs9U2lnbWExKGUpCisJYW5kCXIyLHIyLHI4CisJYWRkCXIxMSxyMTEscjEyCQkJQCBoKz1LMjU2W2ldCisJZW9yCXIyLHIyLHIxMAkJCUAgQ2goZSxmLGcpCisJZW9yCXIwLHI0LHI0LHJvciMxMQorCWFkZAlyMTEscjExLHIyCQkJQCBoKz1DaChlLGYsZykKKyNpZiAxNj09MzEKKwlhbmQJcjEyLHIxMiwjMHhmZgorCWNtcAlyMTIsIzB4ZjIJCQlAIGRvbmU/CisjZW5kaWYKKyNpZiAxNjwxNQorIyBpZiBfX0FSTV9BUkNIX18+PTcKKwlsZHIJcjIsW3IxXSwjNAkJCUAgcHJlZmV0Y2gKKyMgZWxzZQorCWxkcmIJcjIsW3IxLCMzXQorIyBlbmRpZgorCWVvcglyMTIscjQscjUJCQlAIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKyNlbHNlCisJbGRyCXIyLFtzcCwjMio0XQkJQCBmcm9tIGZ1dHVyZSBCT0RZXzE2X3h4CisJZW9yCXIxMixyNCxyNQkJCUAgYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorCWxkcglyMSxbc3AsIzE1KjRdCUAgZnJvbSBmdXR1cmUgQk9EWV8xNl94eAorI2VuZGlmCisJZW9yCXIwLHIwLHI0LHJvciMyMAlAIFNpZ21hMChhKQorCWFuZAlyMyxyMyxyMTIJCQlAIChiXmMpJj0oYV5iKQorCWFkZAlyNyxyNyxyMTEJCQlAIGQrPWgKKwllb3IJcjMscjMscjUJCQlAIE1haihhLGIsYykKKwlhZGQJcjExLHIxMSxyMCxyb3IjMglAIGgrPVNpZ21hMChhKQorCUAgYWRkCXIxMSxyMTEscjMJCQlAIGgrPU1haihhLGIsYykKKwlAIGxkcglyMixbc3AsIzIqNF0JCUAgMTcKKwlAIGxkcglyMSxbc3AsIzE1KjRdCisJbW92CXIwLHIyLHJvciM3CisJYWRkCXIxMSxyMTEscjMJCQlAIGgrPU1haihhLGIsYykgZnJvbSB0aGUgcGFzdAorCW1vdglyMyxyMSxyb3IjMTcKKwllb3IJcjAscjAscjIscm9yIzE4CisJZW9yCXIzLHIzLHIxLHJvciMxOQorCWVvcglyMCxyMCxyMixsc3IjMwlAIHNpZ21hMChYW2krMV0pCisJbGRyCXIyLFtzcCwjMSo0XQorCWVvcglyMyxyMyxyMSxsc3IjMTAJQCBzaWdtYTEoWFtpKzE0XSkKKwlsZHIJcjEsW3NwLCMxMCo0XQorCisJYWRkCXIzLHIzLHIwCisJZW9yCXIwLHI3LHI3LHJvciM1CUAgZnJvbSBCT0RZXzAwXzE1CisJYWRkCXIyLHIyLHIzCisJZW9yCXIwLHIwLHI3LHJvciMxOQlAIFNpZ21hMShlKQorCWFkZAlyMixyMixyMQkJCUAgWFtpXQorCWxkcglyMyxbcjE0XSwjNAkJCUAgKksyNTYrKworCWFkZAlyMTAscjEwLHIyCQkJQCBoKz1YW2ldCisJc3RyCXIyLFtzcCwjMSo0XQorCWVvcglyMixyOCxyOQorCWFkZAlyMTAscjEwLHIwLHJvciM2CUAgaCs9U2lnbWExKGUpCisJYW5kCXIyLHIyLHI3CisJYWRkCXIxMCxyMTAscjMJCQlAIGgrPUsyNTZbaV0KKwllb3IJcjIscjIscjkJCQlAIENoKGUsZixnKQorCWVvcglyMCxyMTEscjExLHJvciMxMQorCWFkZAlyMTAscjEwLHIyCQkJQCBoKz1DaChlLGYsZykKKyNpZiAxNz09MzEKKwlhbmQJcjMscjMsIzB4ZmYKKwljbXAJcjMsIzB4ZjIJCQlAIGRvbmU/CisjZW5kaWYKKyNpZiAxNzwxNQorIyBpZiBfX0FSTV9BUkNIX18+PTcKKwlsZHIJcjIsW3IxXSwjNAkJCUAgcHJlZmV0Y2gKKyMgZWxzZQorCWxkcmIJcjIsW3IxLCMzXQorIyBlbmRpZgorCWVvcglyMyxyMTEscjQJCQlAIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKyNlbHNlCisJbGRyCXIyLFtzcCwjMyo0XQkJQCBmcm9tIGZ1dHVyZSBCT0RZXzE2X3h4CisJZW9yCXIzLHIxMSxyNAkJCUAgYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorCWxkcglyMSxbc3AsIzAqNF0JQCBmcm9tIGZ1dHVyZSBCT0RZXzE2X3h4CisjZW5kaWYKKwllb3IJcjAscjAscjExLHJvciMyMAlAIFNpZ21hMChhKQorCWFuZAlyMTIscjEyLHIzCQkJQCAoYl5jKSY9KGFeYikKKwlhZGQJcjYscjYscjEwCQkJQCBkKz1oCisJZW9yCXIxMixyMTIscjQJCQlAIE1haihhLGIsYykKKwlhZGQJcjEwLHIxMCxyMCxyb3IjMglAIGgrPVNpZ21hMChhKQorCUAgYWRkCXIxMCxyMTAscjEyCQkJQCBoKz1NYWooYSxiLGMpCisJQCBsZHIJcjIsW3NwLCMzKjRdCQlAIDE4CisJQCBsZHIJcjEsW3NwLCMwKjRdCisJbW92CXIwLHIyLHJvciM3CisJYWRkCXIxMCxyMTAscjEyCQkJQCBoKz1NYWooYSxiLGMpIGZyb20gdGhlIHBhc3QKKwltb3YJcjEyLHIxLHJvciMxNworCWVvcglyMCxyMCxyMixyb3IjMTgKKwllb3IJcjEyLHIxMixyMSxyb3IjMTkKKwllb3IJcjAscjAscjIsbHNyIzMJQCBzaWdtYTAoWFtpKzFdKQorCWxkcglyMixbc3AsIzIqNF0KKwllb3IJcjEyLHIxMixyMSxsc3IjMTAJQCBzaWdtYTEoWFtpKzE0XSkKKwlsZHIJcjEsW3NwLCMxMSo0XQorCisJYWRkCXIxMixyMTIscjAKKwllb3IJcjAscjYscjYscm9yIzUJQCBmcm9tIEJPRFlfMDBfMTUKKwlhZGQJcjIscjIscjEyCisJZW9yCXIwLHIwLHI2LHJvciMxOQlAIFNpZ21hMShlKQorCWFkZAlyMixyMixyMQkJCUAgWFtpXQorCWxkcglyMTIsW3IxNF0sIzQJCQlAICpLMjU2KysKKwlhZGQJcjkscjkscjIJCQlAIGgrPVhbaV0KKwlzdHIJcjIsW3NwLCMyKjRdCisJZW9yCXIyLHI3LHI4CisJYWRkCXI5LHI5LHIwLHJvciM2CUAgaCs9U2lnbWExKGUpCisJYW5kCXIyLHIyLHI2CisJYWRkCXI5LHI5LHIxMgkJCUAgaCs9SzI1NltpXQorCWVvcglyMixyMixyOAkJCUAgQ2goZSxmLGcpCisJZW9yCXIwLHIxMCxyMTAscm9yIzExCisJYWRkCXI5LHI5LHIyCQkJQCBoKz1DaChlLGYsZykKKyNpZiAxOD09MzEKKwlhbmQJcjEyLHIxMiwjMHhmZgorCWNtcAlyMTIsIzB4ZjIJCQlAIGRvbmU/CisjZW5kaWYKKyNpZiAxODwxNQorIyBpZiBfX0FSTV9BUkNIX18+PTcKKwlsZHIJcjIsW3IxXSwjNAkJCUAgcHJlZmV0Y2gKKyMgZWxzZQorCWxkcmIJcjIsW3IxLCMzXQorIyBlbmRpZgorCWVvcglyMTIscjEwLHIxMQkJCUAgYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorI2Vsc2UKKwlsZHIJcjIsW3NwLCM0KjRdCQlAIGZyb20gZnV0dXJlIEJPRFlfMTZfeHgKKwllb3IJcjEyLHIxMCxyMTEJCQlAIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKwlsZHIJcjEsW3NwLCMxKjRdCUAgZnJvbSBmdXR1cmUgQk9EWV8xNl94eAorI2VuZGlmCisJZW9yCXIwLHIwLHIxMCxyb3IjMjAJQCBTaWdtYTAoYSkKKwlhbmQJcjMscjMscjEyCQkJQCAoYl5jKSY9KGFeYikKKwlhZGQJcjUscjUscjkJCQlAIGQrPWgKKwllb3IJcjMscjMscjExCQkJQCBNYWooYSxiLGMpCisJYWRkCXI5LHI5LHIwLHJvciMyCUAgaCs9U2lnbWEwKGEpCisJQCBhZGQJcjkscjkscjMJCQlAIGgrPU1haihhLGIsYykKKwlAIGxkcglyMixbc3AsIzQqNF0JCUAgMTkKKwlAIGxkcglyMSxbc3AsIzEqNF0KKwltb3YJcjAscjIscm9yIzcKKwlhZGQJcjkscjkscjMJCQlAIGgrPU1haihhLGIsYykgZnJvbSB0aGUgcGFzdAorCW1vdglyMyxyMSxyb3IjMTcKKwllb3IJcjAscjAscjIscm9yIzE4CisJZW9yCXIzLHIzLHIxLHJvciMxOQorCWVvcglyMCxyMCxyMixsc3IjMwlAIHNpZ21hMChYW2krMV0pCisJbGRyCXIyLFtzcCwjMyo0XQorCWVvcglyMyxyMyxyMSxsc3IjMTAJQCBzaWdtYTEoWFtpKzE0XSkKKwlsZHIJcjEsW3NwLCMxMio0XQorCisJYWRkCXIzLHIzLHIwCisJZW9yCXIwLHI1LHI1LHJvciM1CUAgZnJvbSBCT0RZXzAwXzE1CisJYWRkCXIyLHIyLHIzCisJZW9yCXIwLHIwLHI1LHJvciMxOQlAIFNpZ21hMShlKQorCWFkZAlyMixyMixyMQkJCUAgWFtpXQorCWxkcglyMyxbcjE0XSwjNAkJCUAgKksyNTYrKworCWFkZAlyOCxyOCxyMgkJCUAgaCs9WFtpXQorCXN0cglyMixbc3AsIzMqNF0KKwllb3IJcjIscjYscjcKKwlhZGQJcjgscjgscjAscm9yIzYJQCBoKz1TaWdtYTEoZSkKKwlhbmQJcjIscjIscjUKKwlhZGQJcjgscjgscjMJCQlAIGgrPUsyNTZbaV0KKwllb3IJcjIscjIscjcJCQlAIENoKGUsZixnKQorCWVvcglyMCxyOSxyOSxyb3IjMTEKKwlhZGQJcjgscjgscjIJCQlAIGgrPUNoKGUsZixnKQorI2lmIDE5PT0zMQorCWFuZAlyMyxyMywjMHhmZgorCWNtcAlyMywjMHhmMgkJCUAgZG9uZT8KKyNlbmRpZgorI2lmIDE5PDE1CisjIGlmIF9fQVJNX0FSQ0hfXz49NworCWxkcglyMixbcjFdLCM0CQkJQCBwcmVmZXRjaAorIyBlbHNlCisJbGRyYglyMixbcjEsIzNdCisjIGVuZGlmCisJZW9yCXIzLHI5LHIxMAkJCUAgYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorI2Vsc2UKKwlsZHIJcjIsW3NwLCM1KjRdCQlAIGZyb20gZnV0dXJlIEJPRFlfMTZfeHgKKwllb3IJcjMscjkscjEwCQkJQCBhXmIsIGJeYyBpbiBuZXh0IHJvdW5kCisJbGRyCXIxLFtzcCwjMio0XQlAIGZyb20gZnV0dXJlIEJPRFlfMTZfeHgKKyNlbmRpZgorCWVvcglyMCxyMCxyOSxyb3IjMjAJQCBTaWdtYTAoYSkKKwlhbmQJcjEyLHIxMixyMwkJCUAgKGJeYykmPShhXmIpCisJYWRkCXI0LHI0LHI4CQkJQCBkKz1oCisJZW9yCXIxMixyMTIscjEwCQkJQCBNYWooYSxiLGMpCisJYWRkCXI4LHI4LHIwLHJvciMyCUAgaCs9U2lnbWEwKGEpCisJQCBhZGQJcjgscjgscjEyCQkJQCBoKz1NYWooYSxiLGMpCisJQCBsZHIJcjIsW3NwLCM1KjRdCQlAIDIwCisJQCBsZHIJcjEsW3NwLCMyKjRdCisJbW92CXIwLHIyLHJvciM3CisJYWRkCXI4LHI4LHIxMgkJCUAgaCs9TWFqKGEsYixjKSBmcm9tIHRoZSBwYXN0CisJbW92CXIxMixyMSxyb3IjMTcKKwllb3IJcjAscjAscjIscm9yIzE4CisJZW9yCXIxMixyMTIscjEscm9yIzE5CisJZW9yCXIwLHIwLHIyLGxzciMzCUAgc2lnbWEwKFhbaSsxXSkKKwlsZHIJcjIsW3NwLCM0KjRdCisJZW9yCXIxMixyMTIscjEsbHNyIzEwCUAgc2lnbWExKFhbaSsxNF0pCisJbGRyCXIxLFtzcCwjMTMqNF0KKworCWFkZAlyMTIscjEyLHIwCisJZW9yCXIwLHI0LHI0LHJvciM1CUAgZnJvbSBCT0RZXzAwXzE1CisJYWRkCXIyLHIyLHIxMgorCWVvcglyMCxyMCxyNCxyb3IjMTkJQCBTaWdtYTEoZSkKKwlhZGQJcjIscjIscjEJCQlAIFhbaV0KKwlsZHIJcjEyLFtyMTRdLCM0CQkJQCAqSzI1NisrCisJYWRkCXI3LHI3LHIyCQkJQCBoKz1YW2ldCisJc3RyCXIyLFtzcCwjNCo0XQorCWVvcglyMixyNSxyNgorCWFkZAlyNyxyNyxyMCxyb3IjNglAIGgrPVNpZ21hMShlKQorCWFuZAlyMixyMixyNAorCWFkZAlyNyxyNyxyMTIJCQlAIGgrPUsyNTZbaV0KKwllb3IJcjIscjIscjYJCQlAIENoKGUsZixnKQorCWVvcglyMCxyOCxyOCxyb3IjMTEKKwlhZGQJcjcscjcscjIJCQlAIGgrPUNoKGUsZixnKQorI2lmIDIwPT0zMQorCWFuZAlyMTIscjEyLCMweGZmCisJY21wCXIxMiwjMHhmMgkJCUAgZG9uZT8KKyNlbmRpZgorI2lmIDIwPDE1CisjIGlmIF9fQVJNX0FSQ0hfXz49NworCWxkcglyMixbcjFdLCM0CQkJQCBwcmVmZXRjaAorIyBlbHNlCisJbGRyYglyMixbcjEsIzNdCisjIGVuZGlmCisJZW9yCXIxMixyOCxyOQkJCUAgYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorI2Vsc2UKKwlsZHIJcjIsW3NwLCM2KjRdCQlAIGZyb20gZnV0dXJlIEJPRFlfMTZfeHgKKwllb3IJcjEyLHI4LHI5CQkJQCBhXmIsIGJeYyBpbiBuZXh0IHJvdW5kCisJbGRyCXIxLFtzcCwjMyo0XQlAIGZyb20gZnV0dXJlIEJPRFlfMTZfeHgKKyNlbmRpZgorCWVvcglyMCxyMCxyOCxyb3IjMjAJQCBTaWdtYTAoYSkKKwlhbmQJcjMscjMscjEyCQkJQCAoYl5jKSY9KGFeYikKKwlhZGQJcjExLHIxMSxyNwkJCUAgZCs9aAorCWVvcglyMyxyMyxyOQkJCUAgTWFqKGEsYixjKQorCWFkZAlyNyxyNyxyMCxyb3IjMglAIGgrPVNpZ21hMChhKQorCUAgYWRkCXI3LHI3LHIzCQkJQCBoKz1NYWooYSxiLGMpCisJQCBsZHIJcjIsW3NwLCM2KjRdCQlAIDIxCisJQCBsZHIJcjEsW3NwLCMzKjRdCisJbW92CXIwLHIyLHJvciM3CisJYWRkCXI3LHI3LHIzCQkJQCBoKz1NYWooYSxiLGMpIGZyb20gdGhlIHBhc3QKKwltb3YJcjMscjEscm9yIzE3CisJZW9yCXIwLHIwLHIyLHJvciMxOAorCWVvcglyMyxyMyxyMSxyb3IjMTkKKwllb3IJcjAscjAscjIsbHNyIzMJQCBzaWdtYTAoWFtpKzFdKQorCWxkcglyMixbc3AsIzUqNF0KKwllb3IJcjMscjMscjEsbHNyIzEwCUAgc2lnbWExKFhbaSsxNF0pCisJbGRyCXIxLFtzcCwjMTQqNF0KKworCWFkZAlyMyxyMyxyMAorCWVvcglyMCxyMTEscjExLHJvciM1CUAgZnJvbSBCT0RZXzAwXzE1CisJYWRkCXIyLHIyLHIzCisJZW9yCXIwLHIwLHIxMSxyb3IjMTkJQCBTaWdtYTEoZSkKKwlhZGQJcjIscjIscjEJCQlAIFhbaV0KKwlsZHIJcjMsW3IxNF0sIzQJCQlAICpLMjU2KysKKwlhZGQJcjYscjYscjIJCQlAIGgrPVhbaV0KKwlzdHIJcjIsW3NwLCM1KjRdCisJZW9yCXIyLHI0LHI1CisJYWRkCXI2LHI2LHIwLHJvciM2CUAgaCs9U2lnbWExKGUpCisJYW5kCXIyLHIyLHIxMQorCWFkZAlyNixyNixyMwkJCUAgaCs9SzI1NltpXQorCWVvcglyMixyMixyNQkJCUAgQ2goZSxmLGcpCisJZW9yCXIwLHI3LHI3LHJvciMxMQorCWFkZAlyNixyNixyMgkJCUAgaCs9Q2goZSxmLGcpCisjaWYgMjE9PTMxCisJYW5kCXIzLHIzLCMweGZmCisJY21wCXIzLCMweGYyCQkJQCBkb25lPworI2VuZGlmCisjaWYgMjE8MTUKKyMgaWYgX19BUk1fQVJDSF9fPj03CisJbGRyCXIyLFtyMV0sIzQJCQlAIHByZWZldGNoCisjIGVsc2UKKwlsZHJiCXIyLFtyMSwjM10KKyMgZW5kaWYKKwllb3IJcjMscjcscjgJCQlAIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKyNlbHNlCisJbGRyCXIyLFtzcCwjNyo0XQkJQCBmcm9tIGZ1dHVyZSBCT0RZXzE2X3h4CisJZW9yCXIzLHI3LHI4CQkJQCBhXmIsIGJeYyBpbiBuZXh0IHJvdW5kCisJbGRyCXIxLFtzcCwjNCo0XQlAIGZyb20gZnV0dXJlIEJPRFlfMTZfeHgKKyNlbmRpZgorCWVvcglyMCxyMCxyNyxyb3IjMjAJQCBTaWdtYTAoYSkKKwlhbmQJcjEyLHIxMixyMwkJCUAgKGJeYykmPShhXmIpCisJYWRkCXIxMCxyMTAscjYJCQlAIGQrPWgKKwllb3IJcjEyLHIxMixyOAkJCUAgTWFqKGEsYixjKQorCWFkZAlyNixyNixyMCxyb3IjMglAIGgrPVNpZ21hMChhKQorCUAgYWRkCXI2LHI2LHIxMgkJCUAgaCs9TWFqKGEsYixjKQorCUAgbGRyCXIyLFtzcCwjNyo0XQkJQCAyMgorCUAgbGRyCXIxLFtzcCwjNCo0XQorCW1vdglyMCxyMixyb3IjNworCWFkZAlyNixyNixyMTIJCQlAIGgrPU1haihhLGIsYykgZnJvbSB0aGUgcGFzdAorCW1vdglyMTIscjEscm9yIzE3CisJZW9yCXIwLHIwLHIyLHJvciMxOAorCWVvcglyMTIscjEyLHIxLHJvciMxOQorCWVvcglyMCxyMCxyMixsc3IjMwlAIHNpZ21hMChYW2krMV0pCisJbGRyCXIyLFtzcCwjNio0XQorCWVvcglyMTIscjEyLHIxLGxzciMxMAlAIHNpZ21hMShYW2krMTRdKQorCWxkcglyMSxbc3AsIzE1KjRdCisKKwlhZGQJcjEyLHIxMixyMAorCWVvcglyMCxyMTAscjEwLHJvciM1CUAgZnJvbSBCT0RZXzAwXzE1CisJYWRkCXIyLHIyLHIxMgorCWVvcglyMCxyMCxyMTAscm9yIzE5CUAgU2lnbWExKGUpCisJYWRkCXIyLHIyLHIxCQkJQCBYW2ldCisJbGRyCXIxMixbcjE0XSwjNAkJCUAgKksyNTYrKworCWFkZAlyNSxyNSxyMgkJCUAgaCs9WFtpXQorCXN0cglyMixbc3AsIzYqNF0KKwllb3IJcjIscjExLHI0CisJYWRkCXI1LHI1LHIwLHJvciM2CUAgaCs9U2lnbWExKGUpCisJYW5kCXIyLHIyLHIxMAorCWFkZAlyNSxyNSxyMTIJCQlAIGgrPUsyNTZbaV0KKwllb3IJcjIscjIscjQJCQlAIENoKGUsZixnKQorCWVvcglyMCxyNixyNixyb3IjMTEKKwlhZGQJcjUscjUscjIJCQlAIGgrPUNoKGUsZixnKQorI2lmIDIyPT0zMQorCWFuZAlyMTIscjEyLCMweGZmCisJY21wCXIxMiwjMHhmMgkJCUAgZG9uZT8KKyNlbmRpZgorI2lmIDIyPDE1CisjIGlmIF9fQVJNX0FSQ0hfXz49NworCWxkcglyMixbcjFdLCM0CQkJQCBwcmVmZXRjaAorIyBlbHNlCisJbGRyYglyMixbcjEsIzNdCisjIGVuZGlmCisJZW9yCXIxMixyNixyNwkJCUAgYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorI2Vsc2UKKwlsZHIJcjIsW3NwLCM4KjRdCQlAIGZyb20gZnV0dXJlIEJPRFlfMTZfeHgKKwllb3IJcjEyLHI2LHI3CQkJQCBhXmIsIGJeYyBpbiBuZXh0IHJvdW5kCisJbGRyCXIxLFtzcCwjNSo0XQlAIGZyb20gZnV0dXJlIEJPRFlfMTZfeHgKKyNlbmRpZgorCWVvcglyMCxyMCxyNixyb3IjMjAJQCBTaWdtYTAoYSkKKwlhbmQJcjMscjMscjEyCQkJQCAoYl5jKSY9KGFeYikKKwlhZGQJcjkscjkscjUJCQlAIGQrPWgKKwllb3IJcjMscjMscjcJCQlAIE1haihhLGIsYykKKwlhZGQJcjUscjUscjAscm9yIzIJQCBoKz1TaWdtYTAoYSkKKwlAIGFkZAlyNSxyNSxyMwkJCUAgaCs9TWFqKGEsYixjKQorCUAgbGRyCXIyLFtzcCwjOCo0XQkJQCAyMworCUAgbGRyCXIxLFtzcCwjNSo0XQorCW1vdglyMCxyMixyb3IjNworCWFkZAlyNSxyNSxyMwkJCUAgaCs9TWFqKGEsYixjKSBmcm9tIHRoZSBwYXN0CisJbW92CXIzLHIxLHJvciMxNworCWVvcglyMCxyMCxyMixyb3IjMTgKKwllb3IJcjMscjMscjEscm9yIzE5CisJZW9yCXIwLHIwLHIyLGxzciMzCUAgc2lnbWEwKFhbaSsxXSkKKwlsZHIJcjIsW3NwLCM3KjRdCisJZW9yCXIzLHIzLHIxLGxzciMxMAlAIHNpZ21hMShYW2krMTRdKQorCWxkcglyMSxbc3AsIzAqNF0KKworCWFkZAlyMyxyMyxyMAorCWVvcglyMCxyOSxyOSxyb3IjNQlAIGZyb20gQk9EWV8wMF8xNQorCWFkZAlyMixyMixyMworCWVvcglyMCxyMCxyOSxyb3IjMTkJQCBTaWdtYTEoZSkKKwlhZGQJcjIscjIscjEJCQlAIFhbaV0KKwlsZHIJcjMsW3IxNF0sIzQJCQlAICpLMjU2KysKKwlhZGQJcjQscjQscjIJCQlAIGgrPVhbaV0KKwlzdHIJcjIsW3NwLCM3KjRdCisJZW9yCXIyLHIxMCxyMTEKKwlhZGQJcjQscjQscjAscm9yIzYJQCBoKz1TaWdtYTEoZSkKKwlhbmQJcjIscjIscjkKKwlhZGQJcjQscjQscjMJCQlAIGgrPUsyNTZbaV0KKwllb3IJcjIscjIscjExCQkJQCBDaChlLGYsZykKKwllb3IJcjAscjUscjUscm9yIzExCisJYWRkCXI0LHI0LHIyCQkJQCBoKz1DaChlLGYsZykKKyNpZiAyMz09MzEKKwlhbmQJcjMscjMsIzB4ZmYKKwljbXAJcjMsIzB4ZjIJCQlAIGRvbmU/CisjZW5kaWYKKyNpZiAyMzwxNQorIyBpZiBfX0FSTV9BUkNIX18+PTcKKwlsZHIJcjIsW3IxXSwjNAkJCUAgcHJlZmV0Y2gKKyMgZWxzZQorCWxkcmIJcjIsW3IxLCMzXQorIyBlbmRpZgorCWVvcglyMyxyNSxyNgkJCUAgYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorI2Vsc2UKKwlsZHIJcjIsW3NwLCM5KjRdCQlAIGZyb20gZnV0dXJlIEJPRFlfMTZfeHgKKwllb3IJcjMscjUscjYJCQlAIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKwlsZHIJcjEsW3NwLCM2KjRdCUAgZnJvbSBmdXR1cmUgQk9EWV8xNl94eAorI2VuZGlmCisJZW9yCXIwLHIwLHI1LHJvciMyMAlAIFNpZ21hMChhKQorCWFuZAlyMTIscjEyLHIzCQkJQCAoYl5jKSY9KGFeYikKKwlhZGQJcjgscjgscjQJCQlAIGQrPWgKKwllb3IJcjEyLHIxMixyNgkJCUAgTWFqKGEsYixjKQorCWFkZAlyNCxyNCxyMCxyb3IjMglAIGgrPVNpZ21hMChhKQorCUAgYWRkCXI0LHI0LHIxMgkJCUAgaCs9TWFqKGEsYixjKQorCUAgbGRyCXIyLFtzcCwjOSo0XQkJQCAyNAorCUAgbGRyCXIxLFtzcCwjNio0XQorCW1vdglyMCxyMixyb3IjNworCWFkZAlyNCxyNCxyMTIJCQlAIGgrPU1haihhLGIsYykgZnJvbSB0aGUgcGFzdAorCW1vdglyMTIscjEscm9yIzE3CisJZW9yCXIwLHIwLHIyLHJvciMxOAorCWVvcglyMTIscjEyLHIxLHJvciMxOQorCWVvcglyMCxyMCxyMixsc3IjMwlAIHNpZ21hMChYW2krMV0pCisJbGRyCXIyLFtzcCwjOCo0XQorCWVvcglyMTIscjEyLHIxLGxzciMxMAlAIHNpZ21hMShYW2krMTRdKQorCWxkcglyMSxbc3AsIzEqNF0KKworCWFkZAlyMTIscjEyLHIwCisJZW9yCXIwLHI4LHI4LHJvciM1CUAgZnJvbSBCT0RZXzAwXzE1CisJYWRkCXIyLHIyLHIxMgorCWVvcglyMCxyMCxyOCxyb3IjMTkJQCBTaWdtYTEoZSkKKwlhZGQJcjIscjIscjEJCQlAIFhbaV0KKwlsZHIJcjEyLFtyMTRdLCM0CQkJQCAqSzI1NisrCisJYWRkCXIxMSxyMTEscjIJCQlAIGgrPVhbaV0KKwlzdHIJcjIsW3NwLCM4KjRdCisJZW9yCXIyLHI5LHIxMAorCWFkZAlyMTEscjExLHIwLHJvciM2CUAgaCs9U2lnbWExKGUpCisJYW5kCXIyLHIyLHI4CisJYWRkCXIxMSxyMTEscjEyCQkJQCBoKz1LMjU2W2ldCisJZW9yCXIyLHIyLHIxMAkJCUAgQ2goZSxmLGcpCisJZW9yCXIwLHI0LHI0LHJvciMxMQorCWFkZAlyMTEscjExLHIyCQkJQCBoKz1DaChlLGYsZykKKyNpZiAyND09MzEKKwlhbmQJcjEyLHIxMiwjMHhmZgorCWNtcAlyMTIsIzB4ZjIJCQlAIGRvbmU/CisjZW5kaWYKKyNpZiAyNDwxNQorIyBpZiBfX0FSTV9BUkNIX18+PTcKKwlsZHIJcjIsW3IxXSwjNAkJCUAgcHJlZmV0Y2gKKyMgZWxzZQorCWxkcmIJcjIsW3IxLCMzXQorIyBlbmRpZgorCWVvcglyMTIscjQscjUJCQlAIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKyNlbHNlCisJbGRyCXIyLFtzcCwjMTAqNF0JCUAgZnJvbSBmdXR1cmUgQk9EWV8xNl94eAorCWVvcglyMTIscjQscjUJCQlAIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKwlsZHIJcjEsW3NwLCM3KjRdCUAgZnJvbSBmdXR1cmUgQk9EWV8xNl94eAorI2VuZGlmCisJZW9yCXIwLHIwLHI0LHJvciMyMAlAIFNpZ21hMChhKQorCWFuZAlyMyxyMyxyMTIJCQlAIChiXmMpJj0oYV5iKQorCWFkZAlyNyxyNyxyMTEJCQlAIGQrPWgKKwllb3IJcjMscjMscjUJCQlAIE1haihhLGIsYykKKwlhZGQJcjExLHIxMSxyMCxyb3IjMglAIGgrPVNpZ21hMChhKQorCUAgYWRkCXIxMSxyMTEscjMJCQlAIGgrPU1haihhLGIsYykKKwlAIGxkcglyMixbc3AsIzEwKjRdCQlAIDI1CisJQCBsZHIJcjEsW3NwLCM3KjRdCisJbW92CXIwLHIyLHJvciM3CisJYWRkCXIxMSxyMTEscjMJCQlAIGgrPU1haihhLGIsYykgZnJvbSB0aGUgcGFzdAorCW1vdglyMyxyMSxyb3IjMTcKKwllb3IJcjAscjAscjIscm9yIzE4CisJZW9yCXIzLHIzLHIxLHJvciMxOQorCWVvcglyMCxyMCxyMixsc3IjMwlAIHNpZ21hMChYW2krMV0pCisJbGRyCXIyLFtzcCwjOSo0XQorCWVvcglyMyxyMyxyMSxsc3IjMTAJQCBzaWdtYTEoWFtpKzE0XSkKKwlsZHIJcjEsW3NwLCMyKjRdCisKKwlhZGQJcjMscjMscjAKKwllb3IJcjAscjcscjcscm9yIzUJQCBmcm9tIEJPRFlfMDBfMTUKKwlhZGQJcjIscjIscjMKKwllb3IJcjAscjAscjcscm9yIzE5CUAgU2lnbWExKGUpCisJYWRkCXIyLHIyLHIxCQkJQCBYW2ldCisJbGRyCXIzLFtyMTRdLCM0CQkJQCAqSzI1NisrCisJYWRkCXIxMCxyMTAscjIJCQlAIGgrPVhbaV0KKwlzdHIJcjIsW3NwLCM5KjRdCisJZW9yCXIyLHI4LHI5CisJYWRkCXIxMCxyMTAscjAscm9yIzYJQCBoKz1TaWdtYTEoZSkKKwlhbmQJcjIscjIscjcKKwlhZGQJcjEwLHIxMCxyMwkJCUAgaCs9SzI1NltpXQorCWVvcglyMixyMixyOQkJCUAgQ2goZSxmLGcpCisJZW9yCXIwLHIxMSxyMTEscm9yIzExCisJYWRkCXIxMCxyMTAscjIJCQlAIGgrPUNoKGUsZixnKQorI2lmIDI1PT0zMQorCWFuZAlyMyxyMywjMHhmZgorCWNtcAlyMywjMHhmMgkJCUAgZG9uZT8KKyNlbmRpZgorI2lmIDI1PDE1CisjIGlmIF9fQVJNX0FSQ0hfXz49NworCWxkcglyMixbcjFdLCM0CQkJQCBwcmVmZXRjaAorIyBlbHNlCisJbGRyYglyMixbcjEsIzNdCisjIGVuZGlmCisJZW9yCXIzLHIxMSxyNAkJCUAgYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorI2Vsc2UKKwlsZHIJcjIsW3NwLCMxMSo0XQkJQCBmcm9tIGZ1dHVyZSBCT0RZXzE2X3h4CisJZW9yCXIzLHIxMSxyNAkJCUAgYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorCWxkcglyMSxbc3AsIzgqNF0JQCBmcm9tIGZ1dHVyZSBCT0RZXzE2X3h4CisjZW5kaWYKKwllb3IJcjAscjAscjExLHJvciMyMAlAIFNpZ21hMChhKQorCWFuZAlyMTIscjEyLHIzCQkJQCAoYl5jKSY9KGFeYikKKwlhZGQJcjYscjYscjEwCQkJQCBkKz1oCisJZW9yCXIxMixyMTIscjQJCQlAIE1haihhLGIsYykKKwlhZGQJcjEwLHIxMCxyMCxyb3IjMglAIGgrPVNpZ21hMChhKQorCUAgYWRkCXIxMCxyMTAscjEyCQkJQCBoKz1NYWooYSxiLGMpCisJQCBsZHIJcjIsW3NwLCMxMSo0XQkJQCAyNgorCUAgbGRyCXIxLFtzcCwjOCo0XQorCW1vdglyMCxyMixyb3IjNworCWFkZAlyMTAscjEwLHIxMgkJCUAgaCs9TWFqKGEsYixjKSBmcm9tIHRoZSBwYXN0CisJbW92CXIxMixyMSxyb3IjMTcKKwllb3IJcjAscjAscjIscm9yIzE4CisJZW9yCXIxMixyMTIscjEscm9yIzE5CisJZW9yCXIwLHIwLHIyLGxzciMzCUAgc2lnbWEwKFhbaSsxXSkKKwlsZHIJcjIsW3NwLCMxMCo0XQorCWVvcglyMTIscjEyLHIxLGxzciMxMAlAIHNpZ21hMShYW2krMTRdKQorCWxkcglyMSxbc3AsIzMqNF0KKworCWFkZAlyMTIscjEyLHIwCisJZW9yCXIwLHI2LHI2LHJvciM1CUAgZnJvbSBCT0RZXzAwXzE1CisJYWRkCXIyLHIyLHIxMgorCWVvcglyMCxyMCxyNixyb3IjMTkJQCBTaWdtYTEoZSkKKwlhZGQJcjIscjIscjEJCQlAIFhbaV0KKwlsZHIJcjEyLFtyMTRdLCM0CQkJQCAqSzI1NisrCisJYWRkCXI5LHI5LHIyCQkJQCBoKz1YW2ldCisJc3RyCXIyLFtzcCwjMTAqNF0KKwllb3IJcjIscjcscjgKKwlhZGQJcjkscjkscjAscm9yIzYJQCBoKz1TaWdtYTEoZSkKKwlhbmQJcjIscjIscjYKKwlhZGQJcjkscjkscjEyCQkJQCBoKz1LMjU2W2ldCisJZW9yCXIyLHIyLHI4CQkJQCBDaChlLGYsZykKKwllb3IJcjAscjEwLHIxMCxyb3IjMTEKKwlhZGQJcjkscjkscjIJCQlAIGgrPUNoKGUsZixnKQorI2lmIDI2PT0zMQorCWFuZAlyMTIscjEyLCMweGZmCisJY21wCXIxMiwjMHhmMgkJCUAgZG9uZT8KKyNlbmRpZgorI2lmIDI2PDE1CisjIGlmIF9fQVJNX0FSQ0hfXz49NworCWxkcglyMixbcjFdLCM0CQkJQCBwcmVmZXRjaAorIyBlbHNlCisJbGRyYglyMixbcjEsIzNdCisjIGVuZGlmCisJZW9yCXIxMixyMTAscjExCQkJQCBhXmIsIGJeYyBpbiBuZXh0IHJvdW5kCisjZWxzZQorCWxkcglyMixbc3AsIzEyKjRdCQlAIGZyb20gZnV0dXJlIEJPRFlfMTZfeHgKKwllb3IJcjEyLHIxMCxyMTEJCQlAIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKwlsZHIJcjEsW3NwLCM5KjRdCUAgZnJvbSBmdXR1cmUgQk9EWV8xNl94eAorI2VuZGlmCisJZW9yCXIwLHIwLHIxMCxyb3IjMjAJQCBTaWdtYTAoYSkKKwlhbmQJcjMscjMscjEyCQkJQCAoYl5jKSY9KGFeYikKKwlhZGQJcjUscjUscjkJCQlAIGQrPWgKKwllb3IJcjMscjMscjExCQkJQCBNYWooYSxiLGMpCisJYWRkCXI5LHI5LHIwLHJvciMyCUAgaCs9U2lnbWEwKGEpCisJQCBhZGQJcjkscjkscjMJCQlAIGgrPU1haihhLGIsYykKKwlAIGxkcglyMixbc3AsIzEyKjRdCQlAIDI3CisJQCBsZHIJcjEsW3NwLCM5KjRdCisJbW92CXIwLHIyLHJvciM3CisJYWRkCXI5LHI5LHIzCQkJQCBoKz1NYWooYSxiLGMpIGZyb20gdGhlIHBhc3QKKwltb3YJcjMscjEscm9yIzE3CisJZW9yCXIwLHIwLHIyLHJvciMxOAorCWVvcglyMyxyMyxyMSxyb3IjMTkKKwllb3IJcjAscjAscjIsbHNyIzMJQCBzaWdtYTAoWFtpKzFdKQorCWxkcglyMixbc3AsIzExKjRdCisJZW9yCXIzLHIzLHIxLGxzciMxMAlAIHNpZ21hMShYW2krMTRdKQorCWxkcglyMSxbc3AsIzQqNF0KKworCWFkZAlyMyxyMyxyMAorCWVvcglyMCxyNSxyNSxyb3IjNQlAIGZyb20gQk9EWV8wMF8xNQorCWFkZAlyMixyMixyMworCWVvcglyMCxyMCxyNSxyb3IjMTkJQCBTaWdtYTEoZSkKKwlhZGQJcjIscjIscjEJCQlAIFhbaV0KKwlsZHIJcjMsW3IxNF0sIzQJCQlAICpLMjU2KysKKwlhZGQJcjgscjgscjIJCQlAIGgrPVhbaV0KKwlzdHIJcjIsW3NwLCMxMSo0XQorCWVvcglyMixyNixyNworCWFkZAlyOCxyOCxyMCxyb3IjNglAIGgrPVNpZ21hMShlKQorCWFuZAlyMixyMixyNQorCWFkZAlyOCxyOCxyMwkJCUAgaCs9SzI1NltpXQorCWVvcglyMixyMixyNwkJCUAgQ2goZSxmLGcpCisJZW9yCXIwLHI5LHI5LHJvciMxMQorCWFkZAlyOCxyOCxyMgkJCUAgaCs9Q2goZSxmLGcpCisjaWYgMjc9PTMxCisJYW5kCXIzLHIzLCMweGZmCisJY21wCXIzLCMweGYyCQkJQCBkb25lPworI2VuZGlmCisjaWYgMjc8MTUKKyMgaWYgX19BUk1fQVJDSF9fPj03CisJbGRyCXIyLFtyMV0sIzQJCQlAIHByZWZldGNoCisjIGVsc2UKKwlsZHJiCXIyLFtyMSwjM10KKyMgZW5kaWYKKwllb3IJcjMscjkscjEwCQkJQCBhXmIsIGJeYyBpbiBuZXh0IHJvdW5kCisjZWxzZQorCWxkcglyMixbc3AsIzEzKjRdCQlAIGZyb20gZnV0dXJlIEJPRFlfMTZfeHgKKwllb3IJcjMscjkscjEwCQkJQCBhXmIsIGJeYyBpbiBuZXh0IHJvdW5kCisJbGRyCXIxLFtzcCwjMTAqNF0JQCBmcm9tIGZ1dHVyZSBCT0RZXzE2X3h4CisjZW5kaWYKKwllb3IJcjAscjAscjkscm9yIzIwCUAgU2lnbWEwKGEpCisJYW5kCXIxMixyMTIscjMJCQlAIChiXmMpJj0oYV5iKQorCWFkZAlyNCxyNCxyOAkJCUAgZCs9aAorCWVvcglyMTIscjEyLHIxMAkJCUAgTWFqKGEsYixjKQorCWFkZAlyOCxyOCxyMCxyb3IjMglAIGgrPVNpZ21hMChhKQorCUAgYWRkCXI4LHI4LHIxMgkJCUAgaCs9TWFqKGEsYixjKQorCUAgbGRyCXIyLFtzcCwjMTMqNF0JCUAgMjgKKwlAIGxkcglyMSxbc3AsIzEwKjRdCisJbW92CXIwLHIyLHJvciM3CisJYWRkCXI4LHI4LHIxMgkJCUAgaCs9TWFqKGEsYixjKSBmcm9tIHRoZSBwYXN0CisJbW92CXIxMixyMSxyb3IjMTcKKwllb3IJcjAscjAscjIscm9yIzE4CisJZW9yCXIxMixyMTIscjEscm9yIzE5CisJZW9yCXIwLHIwLHIyLGxzciMzCUAgc2lnbWEwKFhbaSsxXSkKKwlsZHIJcjIsW3NwLCMxMio0XQorCWVvcglyMTIscjEyLHIxLGxzciMxMAlAIHNpZ21hMShYW2krMTRdKQorCWxkcglyMSxbc3AsIzUqNF0KKworCWFkZAlyMTIscjEyLHIwCisJZW9yCXIwLHI0LHI0LHJvciM1CUAgZnJvbSBCT0RZXzAwXzE1CisJYWRkCXIyLHIyLHIxMgorCWVvcglyMCxyMCxyNCxyb3IjMTkJQCBTaWdtYTEoZSkKKwlhZGQJcjIscjIscjEJCQlAIFhbaV0KKwlsZHIJcjEyLFtyMTRdLCM0CQkJQCAqSzI1NisrCisJYWRkCXI3LHI3LHIyCQkJQCBoKz1YW2ldCisJc3RyCXIyLFtzcCwjMTIqNF0KKwllb3IJcjIscjUscjYKKwlhZGQJcjcscjcscjAscm9yIzYJQCBoKz1TaWdtYTEoZSkKKwlhbmQJcjIscjIscjQKKwlhZGQJcjcscjcscjEyCQkJQCBoKz1LMjU2W2ldCisJZW9yCXIyLHIyLHI2CQkJQCBDaChlLGYsZykKKwllb3IJcjAscjgscjgscm9yIzExCisJYWRkCXI3LHI3LHIyCQkJQCBoKz1DaChlLGYsZykKKyNpZiAyOD09MzEKKwlhbmQJcjEyLHIxMiwjMHhmZgorCWNtcAlyMTIsIzB4ZjIJCQlAIGRvbmU/CisjZW5kaWYKKyNpZiAyODwxNQorIyBpZiBfX0FSTV9BUkNIX18+PTcKKwlsZHIJcjIsW3IxXSwjNAkJCUAgcHJlZmV0Y2gKKyMgZWxzZQorCWxkcmIJcjIsW3IxLCMzXQorIyBlbmRpZgorCWVvcglyMTIscjgscjkJCQlAIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKyNlbHNlCisJbGRyCXIyLFtzcCwjMTQqNF0JCUAgZnJvbSBmdXR1cmUgQk9EWV8xNl94eAorCWVvcglyMTIscjgscjkJCQlAIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKwlsZHIJcjEsW3NwLCMxMSo0XQlAIGZyb20gZnV0dXJlIEJPRFlfMTZfeHgKKyNlbmRpZgorCWVvcglyMCxyMCxyOCxyb3IjMjAJQCBTaWdtYTAoYSkKKwlhbmQJcjMscjMscjEyCQkJQCAoYl5jKSY9KGFeYikKKwlhZGQJcjExLHIxMSxyNwkJCUAgZCs9aAorCWVvcglyMyxyMyxyOQkJCUAgTWFqKGEsYixjKQorCWFkZAlyNyxyNyxyMCxyb3IjMglAIGgrPVNpZ21hMChhKQorCUAgYWRkCXI3LHI3LHIzCQkJQCBoKz1NYWooYSxiLGMpCisJQCBsZHIJcjIsW3NwLCMxNCo0XQkJQCAyOQorCUAgbGRyCXIxLFtzcCwjMTEqNF0KKwltb3YJcjAscjIscm9yIzcKKwlhZGQJcjcscjcscjMJCQlAIGgrPU1haihhLGIsYykgZnJvbSB0aGUgcGFzdAorCW1vdglyMyxyMSxyb3IjMTcKKwllb3IJcjAscjAscjIscm9yIzE4CisJZW9yCXIzLHIzLHIxLHJvciMxOQorCWVvcglyMCxyMCxyMixsc3IjMwlAIHNpZ21hMChYW2krMV0pCisJbGRyCXIyLFtzcCwjMTMqNF0KKwllb3IJcjMscjMscjEsbHNyIzEwCUAgc2lnbWExKFhbaSsxNF0pCisJbGRyCXIxLFtzcCwjNio0XQorCisJYWRkCXIzLHIzLHIwCisJZW9yCXIwLHIxMSxyMTEscm9yIzUJQCBmcm9tIEJPRFlfMDBfMTUKKwlhZGQJcjIscjIscjMKKwllb3IJcjAscjAscjExLHJvciMxOQlAIFNpZ21hMShlKQorCWFkZAlyMixyMixyMQkJCUAgWFtpXQorCWxkcglyMyxbcjE0XSwjNAkJCUAgKksyNTYrKworCWFkZAlyNixyNixyMgkJCUAgaCs9WFtpXQorCXN0cglyMixbc3AsIzEzKjRdCisJZW9yCXIyLHI0LHI1CisJYWRkCXI2LHI2LHIwLHJvciM2CUAgaCs9U2lnbWExKGUpCisJYW5kCXIyLHIyLHIxMQorCWFkZAlyNixyNixyMwkJCUAgaCs9SzI1NltpXQorCWVvcglyMixyMixyNQkJCUAgQ2goZSxmLGcpCisJZW9yCXIwLHI3LHI3LHJvciMxMQorCWFkZAlyNixyNixyMgkJCUAgaCs9Q2goZSxmLGcpCisjaWYgMjk9PTMxCisJYW5kCXIzLHIzLCMweGZmCisJY21wCXIzLCMweGYyCQkJQCBkb25lPworI2VuZGlmCisjaWYgMjk8MTUKKyMgaWYgX19BUk1fQVJDSF9fPj03CisJbGRyCXIyLFtyMV0sIzQJCQlAIHByZWZldGNoCisjIGVsc2UKKwlsZHJiCXIyLFtyMSwjM10KKyMgZW5kaWYKKwllb3IJcjMscjcscjgJCQlAIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKyNlbHNlCisJbGRyCXIyLFtzcCwjMTUqNF0JCUAgZnJvbSBmdXR1cmUgQk9EWV8xNl94eAorCWVvcglyMyxyNyxyOAkJCUAgYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorCWxkcglyMSxbc3AsIzEyKjRdCUAgZnJvbSBmdXR1cmUgQk9EWV8xNl94eAorI2VuZGlmCisJZW9yCXIwLHIwLHI3LHJvciMyMAlAIFNpZ21hMChhKQorCWFuZAlyMTIscjEyLHIzCQkJQCAoYl5jKSY9KGFeYikKKwlhZGQJcjEwLHIxMCxyNgkJCUAgZCs9aAorCWVvcglyMTIscjEyLHI4CQkJQCBNYWooYSxiLGMpCisJYWRkCXI2LHI2LHIwLHJvciMyCUAgaCs9U2lnbWEwKGEpCisJQCBhZGQJcjYscjYscjEyCQkJQCBoKz1NYWooYSxiLGMpCisJQCBsZHIJcjIsW3NwLCMxNSo0XQkJQCAzMAorCUAgbGRyCXIxLFtzcCwjMTIqNF0KKwltb3YJcjAscjIscm9yIzcKKwlhZGQJcjYscjYscjEyCQkJQCBoKz1NYWooYSxiLGMpIGZyb20gdGhlIHBhc3QKKwltb3YJcjEyLHIxLHJvciMxNworCWVvcglyMCxyMCxyMixyb3IjMTgKKwllb3IJcjEyLHIxMixyMSxyb3IjMTkKKwllb3IJcjAscjAscjIsbHNyIzMJQCBzaWdtYTAoWFtpKzFdKQorCWxkcglyMixbc3AsIzE0KjRdCisJZW9yCXIxMixyMTIscjEsbHNyIzEwCUAgc2lnbWExKFhbaSsxNF0pCisJbGRyCXIxLFtzcCwjNyo0XQorCisJYWRkCXIxMixyMTIscjAKKwllb3IJcjAscjEwLHIxMCxyb3IjNQlAIGZyb20gQk9EWV8wMF8xNQorCWFkZAlyMixyMixyMTIKKwllb3IJcjAscjAscjEwLHJvciMxOQlAIFNpZ21hMShlKQorCWFkZAlyMixyMixyMQkJCUAgWFtpXQorCWxkcglyMTIsW3IxNF0sIzQJCQlAICpLMjU2KysKKwlhZGQJcjUscjUscjIJCQlAIGgrPVhbaV0KKwlzdHIJcjIsW3NwLCMxNCo0XQorCWVvcglyMixyMTEscjQKKwlhZGQJcjUscjUscjAscm9yIzYJQCBoKz1TaWdtYTEoZSkKKwlhbmQJcjIscjIscjEwCisJYWRkCXI1LHI1LHIxMgkJCUAgaCs9SzI1NltpXQorCWVvcglyMixyMixyNAkJCUAgQ2goZSxmLGcpCisJZW9yCXIwLHI2LHI2LHJvciMxMQorCWFkZAlyNSxyNSxyMgkJCUAgaCs9Q2goZSxmLGcpCisjaWYgMzA9PTMxCisJYW5kCXIxMixyMTIsIzB4ZmYKKwljbXAJcjEyLCMweGYyCQkJQCBkb25lPworI2VuZGlmCisjaWYgMzA8MTUKKyMgaWYgX19BUk1fQVJDSF9fPj03CisJbGRyCXIyLFtyMV0sIzQJCQlAIHByZWZldGNoCisjIGVsc2UKKwlsZHJiCXIyLFtyMSwjM10KKyMgZW5kaWYKKwllb3IJcjEyLHI2LHI3CQkJQCBhXmIsIGJeYyBpbiBuZXh0IHJvdW5kCisjZWxzZQorCWxkcglyMixbc3AsIzAqNF0JCUAgZnJvbSBmdXR1cmUgQk9EWV8xNl94eAorCWVvcglyMTIscjYscjcJCQlAIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKwlsZHIJcjEsW3NwLCMxMyo0XQlAIGZyb20gZnV0dXJlIEJPRFlfMTZfeHgKKyNlbmRpZgorCWVvcglyMCxyMCxyNixyb3IjMjAJQCBTaWdtYTAoYSkKKwlhbmQJcjMscjMscjEyCQkJQCAoYl5jKSY9KGFeYikKKwlhZGQJcjkscjkscjUJCQlAIGQrPWgKKwllb3IJcjMscjMscjcJCQlAIE1haihhLGIsYykKKwlhZGQJcjUscjUscjAscm9yIzIJQCBoKz1TaWdtYTAoYSkKKwlAIGFkZAlyNSxyNSxyMwkJCUAgaCs9TWFqKGEsYixjKQorCUAgbGRyCXIyLFtzcCwjMCo0XQkJQCAzMQorCUAgbGRyCXIxLFtzcCwjMTMqNF0KKwltb3YJcjAscjIscm9yIzcKKwlhZGQJcjUscjUscjMJCQlAIGgrPU1haihhLGIsYykgZnJvbSB0aGUgcGFzdAorCW1vdglyMyxyMSxyb3IjMTcKKwllb3IJcjAscjAscjIscm9yIzE4CisJZW9yCXIzLHIzLHIxLHJvciMxOQorCWVvcglyMCxyMCxyMixsc3IjMwlAIHNpZ21hMChYW2krMV0pCisJbGRyCXIyLFtzcCwjMTUqNF0KKwllb3IJcjMscjMscjEsbHNyIzEwCUAgc2lnbWExKFhbaSsxNF0pCisJbGRyCXIxLFtzcCwjOCo0XQorCisJYWRkCXIzLHIzLHIwCisJZW9yCXIwLHI5LHI5LHJvciM1CUAgZnJvbSBCT0RZXzAwXzE1CisJYWRkCXIyLHIyLHIzCisJZW9yCXIwLHIwLHI5LHJvciMxOQlAIFNpZ21hMShlKQorCWFkZAlyMixyMixyMQkJCUAgWFtpXQorCWxkcglyMyxbcjE0XSwjNAkJCUAgKksyNTYrKworCWFkZAlyNCxyNCxyMgkJCUAgaCs9WFtpXQorCXN0cglyMixbc3AsIzE1KjRdCisJZW9yCXIyLHIxMCxyMTEKKwlhZGQJcjQscjQscjAscm9yIzYJQCBoKz1TaWdtYTEoZSkKKwlhbmQJcjIscjIscjkKKwlhZGQJcjQscjQscjMJCQlAIGgrPUsyNTZbaV0KKwllb3IJcjIscjIscjExCQkJQCBDaChlLGYsZykKKwllb3IJcjAscjUscjUscm9yIzExCisJYWRkCXI0LHI0LHIyCQkJQCBoKz1DaChlLGYsZykKKyNpZiAzMT09MzEKKwlhbmQJcjMscjMsIzB4ZmYKKwljbXAJcjMsIzB4ZjIJCQlAIGRvbmU/CisjZW5kaWYKKyNpZiAzMTwxNQorIyBpZiBfX0FSTV9BUkNIX18+PTcKKwlsZHIJcjIsW3IxXSwjNAkJCUAgcHJlZmV0Y2gKKyMgZWxzZQorCWxkcmIJcjIsW3IxLCMzXQorIyBlbmRpZgorCWVvcglyMyxyNSxyNgkJCUAgYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorI2Vsc2UKKwlsZHIJcjIsW3NwLCMxKjRdCQlAIGZyb20gZnV0dXJlIEJPRFlfMTZfeHgKKwllb3IJcjMscjUscjYJCQlAIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKwlsZHIJcjEsW3NwLCMxNCo0XQlAIGZyb20gZnV0dXJlIEJPRFlfMTZfeHgKKyNlbmRpZgorCWVvcglyMCxyMCxyNSxyb3IjMjAJQCBTaWdtYTAoYSkKKwlhbmQJcjEyLHIxMixyMwkJCUAgKGJeYykmPShhXmIpCisJYWRkCXI4LHI4LHI0CQkJQCBkKz1oCisJZW9yCXIxMixyMTIscjYJCQlAIE1haihhLGIsYykKKwlhZGQJcjQscjQscjAscm9yIzIJQCBoKz1TaWdtYTAoYSkKKwlAIGFkZAlyNCxyNCxyMTIJCQlAIGgrPU1haihhLGIsYykKKwlsZHJlcQlyMyxbc3AsIzE2KjRdCQlAIHB1bGwgY3R4CiAJYm5lCS5Mcm91bmRzXzE2X3h4CiAKLQlsZHIJcjMsW3NwLCMxNio0XQkJQCBwdWxsIGN0eAorCWFkZAlyNCxyNCxyMTIJCUAgaCs9TWFqKGEsYixjKSBmcm9tIHRoZSBwYXN0CiAJbGRyCXIwLFtyMywjMF0KIAlsZHIJcjIsW3IzLCM0XQogCWxkcglyMTIsW3IzLCM4XQpAQCAtMTUxMiw2ICsxNzcwLDkyMSBAQAogCW1vdmVxCXBjLGxyCQkJQCBiZSBiaW5hcnkgY29tcGF0aWJsZSB3aXRoIFY0LCB5ZXQKIAkud29yZAkweGUxMmZmZjFlCQkJQCBpbnRlcm9wZXJhYmxlIHdpdGggVGh1bWIgSVNBOi0pCiAjZW5kaWYKLS5zaXplICAgc2hhMjU2X2Jsb2NrX2RhdGFfb3JkZXIsLi1zaGEyNTZfYmxvY2tfZGF0YV9vcmRlcgotLmFzY2l6ICAiU0hBMjU2IGJsb2NrIHRyYW5zZm9ybSBmb3IgQVJNdjQsIENSWVBUT0dBTVMgYnkgPGFwcHJvQG9wZW5zc2wub3JnPiIKKy5zaXplCXNoYTI1Nl9ibG9ja19kYXRhX29yZGVyLC4tc2hhMjU2X2Jsb2NrX2RhdGFfb3JkZXIKKyNpZiBfX0FSTV9BUkNIX18+PTcKKy5mcHUJbmVvbgorCisudHlwZQlzaGEyNTZfYmxvY2tfZGF0YV9vcmRlcl9uZW9uLCVmdW5jdGlvbgorLmFsaWduCTQKK3NoYTI1Nl9ibG9ja19kYXRhX29yZGVyX25lb246CisuTE5FT046CisJc3RtZGIJc3AhLHtyNC1yMTIsbHJ9CisKKwltb3YJcjEyLHNwCisJc3ViCXNwLHNwLCMxNio0KzE2CQlAIGFsbG9jYQorCXN1YglyMTQscjMsIzI1NiszMglAIEsyNTYKKwliaWMJc3Asc3AsIzE1CQlAIGFsaWduIGZvciAxMjgtYml0IHN0b3JlcworCisJdmxkMS44CQl7cTB9LFtyMV0hCisJdmxkMS44CQl7cTF9LFtyMV0hCisJdmxkMS44CQl7cTJ9LFtyMV0hCisJdmxkMS44CQl7cTN9LFtyMV0hCisJdmxkMS4zMgkJe3E4fSxbcjE0LDoxMjhdIQorCXZsZDEuMzIJCXtxOX0sW3IxNCw6MTI4XSEKKwl2bGQxLjMyCQl7cTEwfSxbcjE0LDoxMjhdIQorCXZsZDEuMzIJCXtxMTF9LFtyMTQsOjEyOF0hCisJdnJldjMyLjgJcTAscTAJCUAgeWVzLCBldmVuIG9uCisJc3RyCQlyMCxbc3AsIzY0XQorCXZyZXYzMi44CXExLHExCQlAIGJpZy1lbmRpYW4KKwlzdHIJCXIxLFtzcCwjNjhdCisJbW92CQlyMSxzcAorCXZyZXYzMi44CXEyLHEyCisJc3RyCQlyMixbc3AsIzcyXQorCXZyZXYzMi44CXEzLHEzCisJc3RyCQlyMTIsW3NwLCM3Nl0JCUAgc2F2ZSBvcmlnaW5hbCBzcAorCXZhZGQuaTMyCXE4LHE4LHEwCisJdmFkZC5pMzIJcTkscTkscTEKKwl2c3QxLjMyCQl7cTh9LFtyMSw6MTI4XSEKKwl2YWRkLmkzMglxMTAscTEwLHEyCisJdnN0MS4zMgkJe3E5fSxbcjEsOjEyOF0hCisJdmFkZC5pMzIJcTExLHExMSxxMworCXZzdDEuMzIJCXtxMTB9LFtyMSw6MTI4XSEKKwl2c3QxLjMyCQl7cTExfSxbcjEsOjEyOF0hCisKKwlsZG1pYQkJcjAse3I0LXIxMX0KKwlzdWIJCXIxLHIxLCM2NAorCWxkcgkJcjIsW3NwLCMwXQorCWVvcgkJcjEyLHIxMixyMTIKKwllb3IJCXIzLHI1LHI2CisJYgkJLkxfMDBfNDgKKworLmFsaWduCTQKKy5MXzAwXzQ4OgorCXZleHQuOAlxOCxxMCxxMSwjNAorCWFkZAlyMTEscjExLHIyCisJZW9yCXIyLHI5LHIxMAorCWVvcglyMCxyOCxyOCxyb3IjNQorCXZleHQuOAlxOSxxMixxMywjNAorCWFkZAlyNCxyNCxyMTIKKwlhbmQJcjIscjIscjgKKwllb3IJcjEyLHIwLHI4LHJvciMxOQorCXZzaHIudTMyCXExMCxxOCwjNworCWVvcglyMCxyNCxyNCxyb3IjMTEKKwllb3IJcjIscjIscjEwCisJdmFkZC5pMzIJcTAscTAscTkKKwlhZGQJcjExLHIxMSxyMTIscm9yIzYKKwllb3IJcjEyLHI0LHI1CisJdnNoci51MzIJcTkscTgsIzMKKwllb3IJcjAscjAscjQscm9yIzIwCisJYWRkCXIxMSxyMTEscjIKKwl2c2xpLjMyCXExMCxxOCwjMjUKKwlsZHIJcjIsW3NwLCM0XQorCWFuZAlyMyxyMyxyMTIKKwl2c2hyLnUzMglxMTEscTgsIzE4CisJYWRkCXI3LHI3LHIxMQorCWFkZAlyMTEscjExLHIwLHJvciMyCisJZW9yCXIzLHIzLHI1CisJdmVvcglxOSxxOSxxMTAKKwlhZGQJcjEwLHIxMCxyMgorCXZzbGkuMzIJcTExLHE4LCMxNAorCWVvcglyMixyOCxyOQorCWVvcglyMCxyNyxyNyxyb3IjNQorCXZzaHIudTMyCWQyNCxkNywjMTcKKwlhZGQJcjExLHIxMSxyMworCWFuZAlyMixyMixyNworCXZlb3IJcTkscTkscTExCisJZW9yCXIzLHIwLHI3LHJvciMxOQorCWVvcglyMCxyMTEscjExLHJvciMxMQorCXZzbGkuMzIJZDI0LGQ3LCMxNQorCWVvcglyMixyMixyOQorCWFkZAlyMTAscjEwLHIzLHJvciM2CisJdnNoci51MzIJZDI1LGQ3LCMxMAorCWVvcglyMyxyMTEscjQKKwllb3IJcjAscjAscjExLHJvciMyMAorCXZhZGQuaTMyCXEwLHEwLHE5CisJYWRkCXIxMCxyMTAscjIKKwlsZHIJcjIsW3NwLCM4XQorCXZlb3IJZDI1LGQyNSxkMjQKKwlhbmQJcjEyLHIxMixyMworCWFkZAlyNixyNixyMTAKKwl2c2hyLnUzMglkMjQsZDcsIzE5CisJYWRkCXIxMCxyMTAscjAscm9yIzIKKwllb3IJcjEyLHIxMixyNAorCXZzbGkuMzIJZDI0LGQ3LCMxMworCWFkZAlyOSxyOSxyMgorCWVvcglyMixyNyxyOAorCXZlb3IJZDI1LGQyNSxkMjQKKwllb3IJcjAscjYscjYscm9yIzUKKwlhZGQJcjEwLHIxMCxyMTIKKwl2YWRkLmkzMglkMCxkMCxkMjUKKwlhbmQJcjIscjIscjYKKwllb3IJcjEyLHIwLHI2LHJvciMxOQorCXZzaHIudTMyCWQyNCxkMCwjMTcKKwllb3IJcjAscjEwLHIxMCxyb3IjMTEKKwllb3IJcjIscjIscjgKKwl2c2xpLjMyCWQyNCxkMCwjMTUKKwlhZGQJcjkscjkscjEyLHJvciM2CisJZW9yCXIxMixyMTAscjExCisJdnNoci51MzIJZDI1LGQwLCMxMAorCWVvcglyMCxyMCxyMTAscm9yIzIwCisJYWRkCXI5LHI5LHIyCisJdmVvcglkMjUsZDI1LGQyNAorCWxkcglyMixbc3AsIzEyXQorCWFuZAlyMyxyMyxyMTIKKwl2c2hyLnUzMglkMjQsZDAsIzE5CisJYWRkCXI1LHI1LHI5CisJYWRkCXI5LHI5LHIwLHJvciMyCisJZW9yCXIzLHIzLHIxMQorCXZsZDEuMzIJe3E4fSxbcjE0LDoxMjhdIQorCWFkZAlyOCxyOCxyMgorCXZzbGkuMzIJZDI0LGQwLCMxMworCWVvcglyMixyNixyNworCWVvcglyMCxyNSxyNSxyb3IjNQorCXZlb3IJZDI1LGQyNSxkMjQKKwlhZGQJcjkscjkscjMKKwlhbmQJcjIscjIscjUKKwl2YWRkLmkzMglkMSxkMSxkMjUKKwllb3IJcjMscjAscjUscm9yIzE5CisJZW9yCXIwLHI5LHI5LHJvciMxMQorCXZhZGQuaTMyCXE4LHE4LHEwCisJZW9yCXIyLHIyLHI3CisJYWRkCXI4LHI4LHIzLHJvciM2CisJZW9yCXIzLHI5LHIxMAorCWVvcglyMCxyMCxyOSxyb3IjMjAKKwlhZGQJcjgscjgscjIKKwlsZHIJcjIsW3NwLCMxNl0KKwlhbmQJcjEyLHIxMixyMworCWFkZAlyNCxyNCxyOAorCXZzdDEuMzIJe3E4fSxbcjEsOjEyOF0hCisJYWRkCXI4LHI4LHIwLHJvciMyCisJZW9yCXIxMixyMTIscjEwCisJdmV4dC44CXE4LHExLHEyLCM0CisJYWRkCXI3LHI3LHIyCisJZW9yCXIyLHI1LHI2CisJZW9yCXIwLHI0LHI0LHJvciM1CisJdmV4dC44CXE5LHEzLHEwLCM0CisJYWRkCXI4LHI4LHIxMgorCWFuZAlyMixyMixyNAorCWVvcglyMTIscjAscjQscm9yIzE5CisJdnNoci51MzIJcTEwLHE4LCM3CisJZW9yCXIwLHI4LHI4LHJvciMxMQorCWVvcglyMixyMixyNgorCXZhZGQuaTMyCXExLHExLHE5CisJYWRkCXI3LHI3LHIxMixyb3IjNgorCWVvcglyMTIscjgscjkKKwl2c2hyLnUzMglxOSxxOCwjMworCWVvcglyMCxyMCxyOCxyb3IjMjAKKwlhZGQJcjcscjcscjIKKwl2c2xpLjMyCXExMCxxOCwjMjUKKwlsZHIJcjIsW3NwLCMyMF0KKwlhbmQJcjMscjMscjEyCisJdnNoci51MzIJcTExLHE4LCMxOAorCWFkZAlyMTEscjExLHI3CisJYWRkCXI3LHI3LHIwLHJvciMyCisJZW9yCXIzLHIzLHI5CisJdmVvcglxOSxxOSxxMTAKKwlhZGQJcjYscjYscjIKKwl2c2xpLjMyCXExMSxxOCwjMTQKKwllb3IJcjIscjQscjUKKwllb3IJcjAscjExLHIxMSxyb3IjNQorCXZzaHIudTMyCWQyNCxkMSwjMTcKKwlhZGQJcjcscjcscjMKKwlhbmQJcjIscjIscjExCisJdmVvcglxOSxxOSxxMTEKKwllb3IJcjMscjAscjExLHJvciMxOQorCWVvcglyMCxyNyxyNyxyb3IjMTEKKwl2c2xpLjMyCWQyNCxkMSwjMTUKKwllb3IJcjIscjIscjUKKwlhZGQJcjYscjYscjMscm9yIzYKKwl2c2hyLnUzMglkMjUsZDEsIzEwCisJZW9yCXIzLHI3LHI4CisJZW9yCXIwLHIwLHI3LHJvciMyMAorCXZhZGQuaTMyCXExLHExLHE5CisJYWRkCXI2LHI2LHIyCisJbGRyCXIyLFtzcCwjMjRdCisJdmVvcglkMjUsZDI1LGQyNAorCWFuZAlyMTIscjEyLHIzCisJYWRkCXIxMCxyMTAscjYKKwl2c2hyLnUzMglkMjQsZDEsIzE5CisJYWRkCXI2LHI2LHIwLHJvciMyCisJZW9yCXIxMixyMTIscjgKKwl2c2xpLjMyCWQyNCxkMSwjMTMKKwlhZGQJcjUscjUscjIKKwllb3IJcjIscjExLHI0CisJdmVvcglkMjUsZDI1LGQyNAorCWVvcglyMCxyMTAscjEwLHJvciM1CisJYWRkCXI2LHI2LHIxMgorCXZhZGQuaTMyCWQyLGQyLGQyNQorCWFuZAlyMixyMixyMTAKKwllb3IJcjEyLHIwLHIxMCxyb3IjMTkKKwl2c2hyLnUzMglkMjQsZDIsIzE3CisJZW9yCXIwLHI2LHI2LHJvciMxMQorCWVvcglyMixyMixyNAorCXZzbGkuMzIJZDI0LGQyLCMxNQorCWFkZAlyNSxyNSxyMTIscm9yIzYKKwllb3IJcjEyLHI2LHI3CisJdnNoci51MzIJZDI1LGQyLCMxMAorCWVvcglyMCxyMCxyNixyb3IjMjAKKwlhZGQJcjUscjUscjIKKwl2ZW9yCWQyNSxkMjUsZDI0CisJbGRyCXIyLFtzcCwjMjhdCisJYW5kCXIzLHIzLHIxMgorCXZzaHIudTMyCWQyNCxkMiwjMTkKKwlhZGQJcjkscjkscjUKKwlhZGQJcjUscjUscjAscm9yIzIKKwllb3IJcjMscjMscjcKKwl2bGQxLjMyCXtxOH0sW3IxNCw6MTI4XSEKKwlhZGQJcjQscjQscjIKKwl2c2xpLjMyCWQyNCxkMiwjMTMKKwllb3IJcjIscjEwLHIxMQorCWVvcglyMCxyOSxyOSxyb3IjNQorCXZlb3IJZDI1LGQyNSxkMjQKKwlhZGQJcjUscjUscjMKKwlhbmQJcjIscjIscjkKKwl2YWRkLmkzMglkMyxkMyxkMjUKKwllb3IJcjMscjAscjkscm9yIzE5CisJZW9yCXIwLHI1LHI1LHJvciMxMQorCXZhZGQuaTMyCXE4LHE4LHExCisJZW9yCXIyLHIyLHIxMQorCWFkZAlyNCxyNCxyMyxyb3IjNgorCWVvcglyMyxyNSxyNgorCWVvcglyMCxyMCxyNSxyb3IjMjAKKwlhZGQJcjQscjQscjIKKwlsZHIJcjIsW3NwLCMzMl0KKwlhbmQJcjEyLHIxMixyMworCWFkZAlyOCxyOCxyNAorCXZzdDEuMzIJe3E4fSxbcjEsOjEyOF0hCisJYWRkCXI0LHI0LHIwLHJvciMyCisJZW9yCXIxMixyMTIscjYKKwl2ZXh0LjgJcTgscTIscTMsIzQKKwlhZGQJcjExLHIxMSxyMgorCWVvcglyMixyOSxyMTAKKwllb3IJcjAscjgscjgscm9yIzUKKwl2ZXh0LjgJcTkscTAscTEsIzQKKwlhZGQJcjQscjQscjEyCisJYW5kCXIyLHIyLHI4CisJZW9yCXIxMixyMCxyOCxyb3IjMTkKKwl2c2hyLnUzMglxMTAscTgsIzcKKwllb3IJcjAscjQscjQscm9yIzExCisJZW9yCXIyLHIyLHIxMAorCXZhZGQuaTMyCXEyLHEyLHE5CisJYWRkCXIxMSxyMTEscjEyLHJvciM2CisJZW9yCXIxMixyNCxyNQorCXZzaHIudTMyCXE5LHE4LCMzCisJZW9yCXIwLHIwLHI0LHJvciMyMAorCWFkZAlyMTEscjExLHIyCisJdnNsaS4zMglxMTAscTgsIzI1CisJbGRyCXIyLFtzcCwjMzZdCisJYW5kCXIzLHIzLHIxMgorCXZzaHIudTMyCXExMSxxOCwjMTgKKwlhZGQJcjcscjcscjExCisJYWRkCXIxMSxyMTEscjAscm9yIzIKKwllb3IJcjMscjMscjUKKwl2ZW9yCXE5LHE5LHExMAorCWFkZAlyMTAscjEwLHIyCisJdnNsaS4zMglxMTEscTgsIzE0CisJZW9yCXIyLHI4LHI5CisJZW9yCXIwLHI3LHI3LHJvciM1CisJdnNoci51MzIJZDI0LGQzLCMxNworCWFkZAlyMTEscjExLHIzCisJYW5kCXIyLHIyLHI3CisJdmVvcglxOSxxOSxxMTEKKwllb3IJcjMscjAscjcscm9yIzE5CisJZW9yCXIwLHIxMSxyMTEscm9yIzExCisJdnNsaS4zMglkMjQsZDMsIzE1CisJZW9yCXIyLHIyLHI5CisJYWRkCXIxMCxyMTAscjMscm9yIzYKKwl2c2hyLnUzMglkMjUsZDMsIzEwCisJZW9yCXIzLHIxMSxyNAorCWVvcglyMCxyMCxyMTEscm9yIzIwCisJdmFkZC5pMzIJcTIscTIscTkKKwlhZGQJcjEwLHIxMCxyMgorCWxkcglyMixbc3AsIzQwXQorCXZlb3IJZDI1LGQyNSxkMjQKKwlhbmQJcjEyLHIxMixyMworCWFkZAlyNixyNixyMTAKKwl2c2hyLnUzMglkMjQsZDMsIzE5CisJYWRkCXIxMCxyMTAscjAscm9yIzIKKwllb3IJcjEyLHIxMixyNAorCXZzbGkuMzIJZDI0LGQzLCMxMworCWFkZAlyOSxyOSxyMgorCWVvcglyMixyNyxyOAorCXZlb3IJZDI1LGQyNSxkMjQKKwllb3IJcjAscjYscjYscm9yIzUKKwlhZGQJcjEwLHIxMCxyMTIKKwl2YWRkLmkzMglkNCxkNCxkMjUKKwlhbmQJcjIscjIscjYKKwllb3IJcjEyLHIwLHI2LHJvciMxOQorCXZzaHIudTMyCWQyNCxkNCwjMTcKKwllb3IJcjAscjEwLHIxMCxyb3IjMTEKKwllb3IJcjIscjIscjgKKwl2c2xpLjMyCWQyNCxkNCwjMTUKKwlhZGQJcjkscjkscjEyLHJvciM2CisJZW9yCXIxMixyMTAscjExCisJdnNoci51MzIJZDI1LGQ0LCMxMAorCWVvcglyMCxyMCxyMTAscm9yIzIwCisJYWRkCXI5LHI5LHIyCisJdmVvcglkMjUsZDI1LGQyNAorCWxkcglyMixbc3AsIzQ0XQorCWFuZAlyMyxyMyxyMTIKKwl2c2hyLnUzMglkMjQsZDQsIzE5CisJYWRkCXI1LHI1LHI5CisJYWRkCXI5LHI5LHIwLHJvciMyCisJZW9yCXIzLHIzLHIxMQorCXZsZDEuMzIJe3E4fSxbcjE0LDoxMjhdIQorCWFkZAlyOCxyOCxyMgorCXZzbGkuMzIJZDI0LGQ0LCMxMworCWVvcglyMixyNixyNworCWVvcglyMCxyNSxyNSxyb3IjNQorCXZlb3IJZDI1LGQyNSxkMjQKKwlhZGQJcjkscjkscjMKKwlhbmQJcjIscjIscjUKKwl2YWRkLmkzMglkNSxkNSxkMjUKKwllb3IJcjMscjAscjUscm9yIzE5CisJZW9yCXIwLHI5LHI5LHJvciMxMQorCXZhZGQuaTMyCXE4LHE4LHEyCisJZW9yCXIyLHIyLHI3CisJYWRkCXI4LHI4LHIzLHJvciM2CisJZW9yCXIzLHI5LHIxMAorCWVvcglyMCxyMCxyOSxyb3IjMjAKKwlhZGQJcjgscjgscjIKKwlsZHIJcjIsW3NwLCM0OF0KKwlhbmQJcjEyLHIxMixyMworCWFkZAlyNCxyNCxyOAorCXZzdDEuMzIJe3E4fSxbcjEsOjEyOF0hCisJYWRkCXI4LHI4LHIwLHJvciMyCisJZW9yCXIxMixyMTIscjEwCisJdmV4dC44CXE4LHEzLHEwLCM0CisJYWRkCXI3LHI3LHIyCisJZW9yCXIyLHI1LHI2CisJZW9yCXIwLHI0LHI0LHJvciM1CisJdmV4dC44CXE5LHExLHEyLCM0CisJYWRkCXI4LHI4LHIxMgorCWFuZAlyMixyMixyNAorCWVvcglyMTIscjAscjQscm9yIzE5CisJdnNoci51MzIJcTEwLHE4LCM3CisJZW9yCXIwLHI4LHI4LHJvciMxMQorCWVvcglyMixyMixyNgorCXZhZGQuaTMyCXEzLHEzLHE5CisJYWRkCXI3LHI3LHIxMixyb3IjNgorCWVvcglyMTIscjgscjkKKwl2c2hyLnUzMglxOSxxOCwjMworCWVvcglyMCxyMCxyOCxyb3IjMjAKKwlhZGQJcjcscjcscjIKKwl2c2xpLjMyCXExMCxxOCwjMjUKKwlsZHIJcjIsW3NwLCM1Ml0KKwlhbmQJcjMscjMscjEyCisJdnNoci51MzIJcTExLHE4LCMxOAorCWFkZAlyMTEscjExLHI3CisJYWRkCXI3LHI3LHIwLHJvciMyCisJZW9yCXIzLHIzLHI5CisJdmVvcglxOSxxOSxxMTAKKwlhZGQJcjYscjYscjIKKwl2c2xpLjMyCXExMSxxOCwjMTQKKwllb3IJcjIscjQscjUKKwllb3IJcjAscjExLHIxMSxyb3IjNQorCXZzaHIudTMyCWQyNCxkNSwjMTcKKwlhZGQJcjcscjcscjMKKwlhbmQJcjIscjIscjExCisJdmVvcglxOSxxOSxxMTEKKwllb3IJcjMscjAscjExLHJvciMxOQorCWVvcglyMCxyNyxyNyxyb3IjMTEKKwl2c2xpLjMyCWQyNCxkNSwjMTUKKwllb3IJcjIscjIscjUKKwlhZGQJcjYscjYscjMscm9yIzYKKwl2c2hyLnUzMglkMjUsZDUsIzEwCisJZW9yCXIzLHI3LHI4CisJZW9yCXIwLHIwLHI3LHJvciMyMAorCXZhZGQuaTMyCXEzLHEzLHE5CisJYWRkCXI2LHI2LHIyCisJbGRyCXIyLFtzcCwjNTZdCisJdmVvcglkMjUsZDI1LGQyNAorCWFuZAlyMTIscjEyLHIzCisJYWRkCXIxMCxyMTAscjYKKwl2c2hyLnUzMglkMjQsZDUsIzE5CisJYWRkCXI2LHI2LHIwLHJvciMyCisJZW9yCXIxMixyMTIscjgKKwl2c2xpLjMyCWQyNCxkNSwjMTMKKwlhZGQJcjUscjUscjIKKwllb3IJcjIscjExLHI0CisJdmVvcglkMjUsZDI1LGQyNAorCWVvcglyMCxyMTAscjEwLHJvciM1CisJYWRkCXI2LHI2LHIxMgorCXZhZGQuaTMyCWQ2LGQ2LGQyNQorCWFuZAlyMixyMixyMTAKKwllb3IJcjEyLHIwLHIxMCxyb3IjMTkKKwl2c2hyLnUzMglkMjQsZDYsIzE3CisJZW9yCXIwLHI2LHI2LHJvciMxMQorCWVvcglyMixyMixyNAorCXZzbGkuMzIJZDI0LGQ2LCMxNQorCWFkZAlyNSxyNSxyMTIscm9yIzYKKwllb3IJcjEyLHI2LHI3CisJdnNoci51MzIJZDI1LGQ2LCMxMAorCWVvcglyMCxyMCxyNixyb3IjMjAKKwlhZGQJcjUscjUscjIKKwl2ZW9yCWQyNSxkMjUsZDI0CisJbGRyCXIyLFtzcCwjNjBdCisJYW5kCXIzLHIzLHIxMgorCXZzaHIudTMyCWQyNCxkNiwjMTkKKwlhZGQJcjkscjkscjUKKwlhZGQJcjUscjUscjAscm9yIzIKKwllb3IJcjMscjMscjcKKwl2bGQxLjMyCXtxOH0sW3IxNCw6MTI4XSEKKwlhZGQJcjQscjQscjIKKwl2c2xpLjMyCWQyNCxkNiwjMTMKKwllb3IJcjIscjEwLHIxMQorCWVvcglyMCxyOSxyOSxyb3IjNQorCXZlb3IJZDI1LGQyNSxkMjQKKwlhZGQJcjUscjUscjMKKwlhbmQJcjIscjIscjkKKwl2YWRkLmkzMglkNyxkNyxkMjUKKwllb3IJcjMscjAscjkscm9yIzE5CisJZW9yCXIwLHI1LHI1LHJvciMxMQorCXZhZGQuaTMyCXE4LHE4LHEzCisJZW9yCXIyLHIyLHIxMQorCWFkZAlyNCxyNCxyMyxyb3IjNgorCWVvcglyMyxyNSxyNgorCWVvcglyMCxyMCxyNSxyb3IjMjAKKwlhZGQJcjQscjQscjIKKwlsZHIJcjIsW3IxNF0KKwlhbmQJcjEyLHIxMixyMworCWFkZAlyOCxyOCxyNAorCXZzdDEuMzIJe3E4fSxbcjEsOjEyOF0hCisJYWRkCXI0LHI0LHIwLHJvciMyCisJZW9yCXIxMixyMTIscjYKKwl0ZXEJcjIsIzAJCQkJQCBjaGVjayBmb3IgSzI1NiB0ZXJtaW5hdG9yCisJbGRyCXIyLFtzcCwjMF0KKwlzdWIJcjEscjEsIzY0CisJYm5lCS5MXzAwXzQ4CisKKwlsZHIJCXIxLFtzcCwjNjhdCisJbGRyCQlyMCxbc3AsIzcyXQorCXN1YgkJcjE0LHIxNCwjMjU2CUAgcmV3aW5kIHIxNAorCXRlcQkJcjEscjAKKwlzdWJlcQkJcjEscjEsIzY0CQlAIGF2b2lkIFNFR1YKKwl2bGQxLjgJCXtxMH0sW3IxXSEJCUAgbG9hZCBuZXh0IGlucHV0IGJsb2NrCisJdmxkMS44CQl7cTF9LFtyMV0hCisJdmxkMS44CQl7cTJ9LFtyMV0hCisJdmxkMS44CQl7cTN9LFtyMV0hCisJc3RybmUJCXIxLFtzcCwjNjhdCisJbW92CQlyMSxzcAorCWFkZAlyMTEscjExLHIyCisJZW9yCXIyLHI5LHIxMAorCWVvcglyMCxyOCxyOCxyb3IjNQorCWFkZAlyNCxyNCxyMTIKKwl2bGQxLjMyCXtxOH0sW3IxNCw6MTI4XSEKKwlhbmQJcjIscjIscjgKKwllb3IJcjEyLHIwLHI4LHJvciMxOQorCWVvcglyMCxyNCxyNCxyb3IjMTEKKwllb3IJcjIscjIscjEwCisJdnJldjMyLjgJcTAscTAKKwlhZGQJcjExLHIxMSxyMTIscm9yIzYKKwllb3IJcjEyLHI0LHI1CisJZW9yCXIwLHIwLHI0LHJvciMyMAorCWFkZAlyMTEscjExLHIyCisJdmFkZC5pMzIJcTgscTgscTAKKwlsZHIJcjIsW3NwLCM0XQorCWFuZAlyMyxyMyxyMTIKKwlhZGQJcjcscjcscjExCisJYWRkCXIxMSxyMTEscjAscm9yIzIKKwllb3IJcjMscjMscjUKKwlhZGQJcjEwLHIxMCxyMgorCWVvcglyMixyOCxyOQorCWVvcglyMCxyNyxyNyxyb3IjNQorCWFkZAlyMTEscjExLHIzCisJYW5kCXIyLHIyLHI3CisJZW9yCXIzLHIwLHI3LHJvciMxOQorCWVvcglyMCxyMTEscjExLHJvciMxMQorCWVvcglyMixyMixyOQorCWFkZAlyMTAscjEwLHIzLHJvciM2CisJZW9yCXIzLHIxMSxyNAorCWVvcglyMCxyMCxyMTEscm9yIzIwCisJYWRkCXIxMCxyMTAscjIKKwlsZHIJcjIsW3NwLCM4XQorCWFuZAlyMTIscjEyLHIzCisJYWRkCXI2LHI2LHIxMAorCWFkZAlyMTAscjEwLHIwLHJvciMyCisJZW9yCXIxMixyMTIscjQKKwlhZGQJcjkscjkscjIKKwllb3IJcjIscjcscjgKKwllb3IJcjAscjYscjYscm9yIzUKKwlhZGQJcjEwLHIxMCxyMTIKKwlhbmQJcjIscjIscjYKKwllb3IJcjEyLHIwLHI2LHJvciMxOQorCWVvcglyMCxyMTAscjEwLHJvciMxMQorCWVvcglyMixyMixyOAorCWFkZAlyOSxyOSxyMTIscm9yIzYKKwllb3IJcjEyLHIxMCxyMTEKKwllb3IJcjAscjAscjEwLHJvciMyMAorCWFkZAlyOSxyOSxyMgorCWxkcglyMixbc3AsIzEyXQorCWFuZAlyMyxyMyxyMTIKKwlhZGQJcjUscjUscjkKKwlhZGQJcjkscjkscjAscm9yIzIKKwllb3IJcjMscjMscjExCisJYWRkCXI4LHI4LHIyCisJZW9yCXIyLHI2LHI3CisJZW9yCXIwLHI1LHI1LHJvciM1CisJYWRkCXI5LHI5LHIzCisJYW5kCXIyLHIyLHI1CisJZW9yCXIzLHIwLHI1LHJvciMxOQorCWVvcglyMCxyOSxyOSxyb3IjMTEKKwllb3IJcjIscjIscjcKKwlhZGQJcjgscjgscjMscm9yIzYKKwllb3IJcjMscjkscjEwCisJZW9yCXIwLHIwLHI5LHJvciMyMAorCWFkZAlyOCxyOCxyMgorCWxkcglyMixbc3AsIzE2XQorCWFuZAlyMTIscjEyLHIzCisJYWRkCXI0LHI0LHI4CisJYWRkCXI4LHI4LHIwLHJvciMyCisJZW9yCXIxMixyMTIscjEwCisJdnN0MS4zMgl7cTh9LFtyMSw6MTI4XSEKKwlhZGQJcjcscjcscjIKKwllb3IJcjIscjUscjYKKwllb3IJcjAscjQscjQscm9yIzUKKwlhZGQJcjgscjgscjEyCisJdmxkMS4zMgl7cTh9LFtyMTQsOjEyOF0hCisJYW5kCXIyLHIyLHI0CisJZW9yCXIxMixyMCxyNCxyb3IjMTkKKwllb3IJcjAscjgscjgscm9yIzExCisJZW9yCXIyLHIyLHI2CisJdnJldjMyLjgJcTEscTEKKwlhZGQJcjcscjcscjEyLHJvciM2CisJZW9yCXIxMixyOCxyOQorCWVvcglyMCxyMCxyOCxyb3IjMjAKKwlhZGQJcjcscjcscjIKKwl2YWRkLmkzMglxOCxxOCxxMQorCWxkcglyMixbc3AsIzIwXQorCWFuZAlyMyxyMyxyMTIKKwlhZGQJcjExLHIxMSxyNworCWFkZAlyNyxyNyxyMCxyb3IjMgorCWVvcglyMyxyMyxyOQorCWFkZAlyNixyNixyMgorCWVvcglyMixyNCxyNQorCWVvcglyMCxyMTEscjExLHJvciM1CisJYWRkCXI3LHI3LHIzCisJYW5kCXIyLHIyLHIxMQorCWVvcglyMyxyMCxyMTEscm9yIzE5CisJZW9yCXIwLHI3LHI3LHJvciMxMQorCWVvcglyMixyMixyNQorCWFkZAlyNixyNixyMyxyb3IjNgorCWVvcglyMyxyNyxyOAorCWVvcglyMCxyMCxyNyxyb3IjMjAKKwlhZGQJcjYscjYscjIKKwlsZHIJcjIsW3NwLCMyNF0KKwlhbmQJcjEyLHIxMixyMworCWFkZAlyMTAscjEwLHI2CisJYWRkCXI2LHI2LHIwLHJvciMyCisJZW9yCXIxMixyMTIscjgKKwlhZGQJcjUscjUscjIKKwllb3IJcjIscjExLHI0CisJZW9yCXIwLHIxMCxyMTAscm9yIzUKKwlhZGQJcjYscjYscjEyCisJYW5kCXIyLHIyLHIxMAorCWVvcglyMTIscjAscjEwLHJvciMxOQorCWVvcglyMCxyNixyNixyb3IjMTEKKwllb3IJcjIscjIscjQKKwlhZGQJcjUscjUscjEyLHJvciM2CisJZW9yCXIxMixyNixyNworCWVvcglyMCxyMCxyNixyb3IjMjAKKwlhZGQJcjUscjUscjIKKwlsZHIJcjIsW3NwLCMyOF0KKwlhbmQJcjMscjMscjEyCisJYWRkCXI5LHI5LHI1CisJYWRkCXI1LHI1LHIwLHJvciMyCisJZW9yCXIzLHIzLHI3CisJYWRkCXI0LHI0LHIyCisJZW9yCXIyLHIxMCxyMTEKKwllb3IJcjAscjkscjkscm9yIzUKKwlhZGQJcjUscjUscjMKKwlhbmQJcjIscjIscjkKKwllb3IJcjMscjAscjkscm9yIzE5CisJZW9yCXIwLHI1LHI1LHJvciMxMQorCWVvcglyMixyMixyMTEKKwlhZGQJcjQscjQscjMscm9yIzYKKwllb3IJcjMscjUscjYKKwllb3IJcjAscjAscjUscm9yIzIwCisJYWRkCXI0LHI0LHIyCisJbGRyCXIyLFtzcCwjMzJdCisJYW5kCXIxMixyMTIscjMKKwlhZGQJcjgscjgscjQKKwlhZGQJcjQscjQscjAscm9yIzIKKwllb3IJcjEyLHIxMixyNgorCXZzdDEuMzIJe3E4fSxbcjEsOjEyOF0hCisJYWRkCXIxMSxyMTEscjIKKwllb3IJcjIscjkscjEwCisJZW9yCXIwLHI4LHI4LHJvciM1CisJYWRkCXI0LHI0LHIxMgorCXZsZDEuMzIJe3E4fSxbcjE0LDoxMjhdIQorCWFuZAlyMixyMixyOAorCWVvcglyMTIscjAscjgscm9yIzE5CisJZW9yCXIwLHI0LHI0LHJvciMxMQorCWVvcglyMixyMixyMTAKKwl2cmV2MzIuOAlxMixxMgorCWFkZAlyMTEscjExLHIxMixyb3IjNgorCWVvcglyMTIscjQscjUKKwllb3IJcjAscjAscjQscm9yIzIwCisJYWRkCXIxMSxyMTEscjIKKwl2YWRkLmkzMglxOCxxOCxxMgorCWxkcglyMixbc3AsIzM2XQorCWFuZAlyMyxyMyxyMTIKKwlhZGQJcjcscjcscjExCisJYWRkCXIxMSxyMTEscjAscm9yIzIKKwllb3IJcjMscjMscjUKKwlhZGQJcjEwLHIxMCxyMgorCWVvcglyMixyOCxyOQorCWVvcglyMCxyNyxyNyxyb3IjNQorCWFkZAlyMTEscjExLHIzCisJYW5kCXIyLHIyLHI3CisJZW9yCXIzLHIwLHI3LHJvciMxOQorCWVvcglyMCxyMTEscjExLHJvciMxMQorCWVvcglyMixyMixyOQorCWFkZAlyMTAscjEwLHIzLHJvciM2CisJZW9yCXIzLHIxMSxyNAorCWVvcglyMCxyMCxyMTEscm9yIzIwCisJYWRkCXIxMCxyMTAscjIKKwlsZHIJcjIsW3NwLCM0MF0KKwlhbmQJcjEyLHIxMixyMworCWFkZAlyNixyNixyMTAKKwlhZGQJcjEwLHIxMCxyMCxyb3IjMgorCWVvcglyMTIscjEyLHI0CisJYWRkCXI5LHI5LHIyCisJZW9yCXIyLHI3LHI4CisJZW9yCXIwLHI2LHI2LHJvciM1CisJYWRkCXIxMCxyMTAscjEyCisJYW5kCXIyLHIyLHI2CisJZW9yCXIxMixyMCxyNixyb3IjMTkKKwllb3IJcjAscjEwLHIxMCxyb3IjMTEKKwllb3IJcjIscjIscjgKKwlhZGQJcjkscjkscjEyLHJvciM2CisJZW9yCXIxMixyMTAscjExCisJZW9yCXIwLHIwLHIxMCxyb3IjMjAKKwlhZGQJcjkscjkscjIKKwlsZHIJcjIsW3NwLCM0NF0KKwlhbmQJcjMscjMscjEyCisJYWRkCXI1LHI1LHI5CisJYWRkCXI5LHI5LHIwLHJvciMyCisJZW9yCXIzLHIzLHIxMQorCWFkZAlyOCxyOCxyMgorCWVvcglyMixyNixyNworCWVvcglyMCxyNSxyNSxyb3IjNQorCWFkZAlyOSxyOSxyMworCWFuZAlyMixyMixyNQorCWVvcglyMyxyMCxyNSxyb3IjMTkKKwllb3IJcjAscjkscjkscm9yIzExCisJZW9yCXIyLHIyLHI3CisJYWRkCXI4LHI4LHIzLHJvciM2CisJZW9yCXIzLHI5LHIxMAorCWVvcglyMCxyMCxyOSxyb3IjMjAKKwlhZGQJcjgscjgscjIKKwlsZHIJcjIsW3NwLCM0OF0KKwlhbmQJcjEyLHIxMixyMworCWFkZAlyNCxyNCxyOAorCWFkZAlyOCxyOCxyMCxyb3IjMgorCWVvcglyMTIscjEyLHIxMAorCXZzdDEuMzIJe3E4fSxbcjEsOjEyOF0hCisJYWRkCXI3LHI3LHIyCisJZW9yCXIyLHI1LHI2CisJZW9yCXIwLHI0LHI0LHJvciM1CisJYWRkCXI4LHI4LHIxMgorCXZsZDEuMzIJe3E4fSxbcjE0LDoxMjhdIQorCWFuZAlyMixyMixyNAorCWVvcglyMTIscjAscjQscm9yIzE5CisJZW9yCXIwLHI4LHI4LHJvciMxMQorCWVvcglyMixyMixyNgorCXZyZXYzMi44CXEzLHEzCisJYWRkCXI3LHI3LHIxMixyb3IjNgorCWVvcglyMTIscjgscjkKKwllb3IJcjAscjAscjgscm9yIzIwCisJYWRkCXI3LHI3LHIyCisJdmFkZC5pMzIJcTgscTgscTMKKwlsZHIJcjIsW3NwLCM1Ml0KKwlhbmQJcjMscjMscjEyCisJYWRkCXIxMSxyMTEscjcKKwlhZGQJcjcscjcscjAscm9yIzIKKwllb3IJcjMscjMscjkKKwlhZGQJcjYscjYscjIKKwllb3IJcjIscjQscjUKKwllb3IJcjAscjExLHIxMSxyb3IjNQorCWFkZAlyNyxyNyxyMworCWFuZAlyMixyMixyMTEKKwllb3IJcjMscjAscjExLHJvciMxOQorCWVvcglyMCxyNyxyNyxyb3IjMTEKKwllb3IJcjIscjIscjUKKwlhZGQJcjYscjYscjMscm9yIzYKKwllb3IJcjMscjcscjgKKwllb3IJcjAscjAscjcscm9yIzIwCisJYWRkCXI2LHI2LHIyCisJbGRyCXIyLFtzcCwjNTZdCisJYW5kCXIxMixyMTIscjMKKwlhZGQJcjEwLHIxMCxyNgorCWFkZAlyNixyNixyMCxyb3IjMgorCWVvcglyMTIscjEyLHI4CisJYWRkCXI1LHI1LHIyCisJZW9yCXIyLHIxMSxyNAorCWVvcglyMCxyMTAscjEwLHJvciM1CisJYWRkCXI2LHI2LHIxMgorCWFuZAlyMixyMixyMTAKKwllb3IJcjEyLHIwLHIxMCxyb3IjMTkKKwllb3IJcjAscjYscjYscm9yIzExCisJZW9yCXIyLHIyLHI0CisJYWRkCXI1LHI1LHIxMixyb3IjNgorCWVvcglyMTIscjYscjcKKwllb3IJcjAscjAscjYscm9yIzIwCisJYWRkCXI1LHI1LHIyCisJbGRyCXIyLFtzcCwjNjBdCisJYW5kCXIzLHIzLHIxMgorCWFkZAlyOSxyOSxyNQorCWFkZAlyNSxyNSxyMCxyb3IjMgorCWVvcglyMyxyMyxyNworCWFkZAlyNCxyNCxyMgorCWVvcglyMixyMTAscjExCisJZW9yCXIwLHI5LHI5LHJvciM1CisJYWRkCXI1LHI1LHIzCisJYW5kCXIyLHIyLHI5CisJZW9yCXIzLHIwLHI5LHJvciMxOQorCWVvcglyMCxyNSxyNSxyb3IjMTEKKwllb3IJcjIscjIscjExCisJYWRkCXI0LHI0LHIzLHJvciM2CisJZW9yCXIzLHI1LHI2CisJZW9yCXIwLHIwLHI1LHJvciMyMAorCWFkZAlyNCxyNCxyMgorCWxkcglyMixbc3AsIzY0XQorCWFuZAlyMTIscjEyLHIzCisJYWRkCXI4LHI4LHI0CisJYWRkCXI0LHI0LHIwLHJvciMyCisJZW9yCXIxMixyMTIscjYKKwl2c3QxLjMyCXtxOH0sW3IxLDoxMjhdIQorCWxkcglyMCxbcjIsIzBdCisJYWRkCXI0LHI0LHIxMgkJCUAgaCs9TWFqKGEsYixjKSBmcm9tIHRoZSBwYXN0CisJbGRyCXIxMixbcjIsIzRdCisJbGRyCXIzLFtyMiwjOF0KKwlsZHIJcjEsW3IyLCMxMl0KKwlhZGQJcjQscjQscjAJCQlAIGFjY3VtdWxhdGUKKwlsZHIJcjAsW3IyLCMxNl0KKwlhZGQJcjUscjUscjEyCisJbGRyCXIxMixbcjIsIzIwXQorCWFkZAlyNixyNixyMworCWxkcglyMyxbcjIsIzI0XQorCWFkZAlyNyxyNyxyMQorCWxkcglyMSxbcjIsIzI4XQorCWFkZAlyOCxyOCxyMAorCXN0cglyNCxbcjJdLCM0CisJYWRkCXI5LHI5LHIxMgorCXN0cglyNSxbcjJdLCM0CisJYWRkCXIxMCxyMTAscjMKKwlzdHIJcjYsW3IyXSwjNAorCWFkZAlyMTEscjExLHIxCisJc3RyCXI3LFtyMl0sIzQKKwlzdG1pYQlyMix7cjgtcjExfQorCisJbW92bmUJcjEsc3AKKwlsZHJuZQlyMixbc3AsIzBdCisJZW9ybmUJcjEyLHIxMixyMTIKKwlsZHJlcQlzcCxbc3AsIzc2XQkJCUAgcmVzdG9yZSBvcmlnaW5hbCBzcAorCWVvcm5lCXIzLHI1LHI2CisJYm5lCS5MXzAwXzQ4CisKKwlsZG1pYQlzcCEse3I0LXIxMixwY30KKy5zaXplCXNoYTI1Nl9ibG9ja19kYXRhX29yZGVyX25lb24sLi1zaGEyNTZfYmxvY2tfZGF0YV9vcmRlcl9uZW9uCisjZW5kaWYKKyNpZiBfX0FSTV9BUkNIX18+PTcKKy50eXBlCXNoYTI1Nl9ibG9ja19kYXRhX29yZGVyX2FybXY4LCVmdW5jdGlvbgorLmFsaWduCTUKK3NoYTI1Nl9ibG9ja19kYXRhX29yZGVyX2FybXY4OgorLkxBUk12ODoKKwl2bGQxLjMyCXtxMCxxMX0sW3IwXQorCXN1YglyMyxyMywjc2hhMjU2X2Jsb2NrX2RhdGFfb3JkZXItSzI1NgorCisuTG9vcF92ODoKKwl2bGQxLjgJCXtxOC1xOX0sW3IxXSEKKwl2bGQxLjgJCXtxMTAtcTExfSxbcjFdIQorCXZsZDEuMzIJCXtxMTJ9LFtyM10hCisJdnJldjMyLjgJcTgscTgKKwl2cmV2MzIuOAlxOSxxOQorCXZyZXYzMi44CXExMCxxMTAKKwl2cmV2MzIuOAlxMTEscTExCisJdm1vdgkJcTE0LHEwCUAgb2ZmbG9hZAorCXZtb3YJCXExNSxxMQorCXRlcQkJcjEscjIKKwl2bGQxLjMyCQl7cTEzfSxbcjNdIQorCXZhZGQuaTMyCXExMixxMTIscTgKKwkuYnl0ZQkweGUyLDB4MDMsMHhmYSwweGYzCUAgc2hhMjU2c3UwIHE4LHE5CisJdm1vdgkJcTIscTAKKwkuYnl0ZQkweDY4LDB4MGMsMHgwMiwweGYzCUAgc2hhMjU2aCBxMCxxMSxxMTIKKwkuYnl0ZQkweDY4LDB4MmMsMHgxNCwweGYzCUAgc2hhMjU2aDIgcTEscTIscTEyCisJLmJ5dGUJMHhlNiwweDBjLDB4NjQsMHhmMwlAIHNoYTI1NnN1MSBxOCxxMTAscTExCisJdmxkMS4zMgkJe3ExMn0sW3IzXSEKKwl2YWRkLmkzMglxMTMscTEzLHE5CisJLmJ5dGUJMHhlNCwweDIzLDB4ZmEsMHhmMwlAIHNoYTI1NnN1MCBxOSxxMTAKKwl2bW92CQlxMixxMAorCS5ieXRlCTB4NmEsMHgwYywweDAyLDB4ZjMJQCBzaGEyNTZoIHEwLHExLHExMworCS5ieXRlCTB4NmEsMHgyYywweDE0LDB4ZjMJQCBzaGEyNTZoMiBxMSxxMixxMTMKKwkuYnl0ZQkweGUwLDB4MmMsMHg2NiwweGYzCUAgc2hhMjU2c3UxIHE5LHExMSxxOAorCXZsZDEuMzIJCXtxMTN9LFtyM10hCisJdmFkZC5pMzIJcTEyLHExMixxMTAKKwkuYnl0ZQkweGU2LDB4NDMsMHhmYSwweGYzCUAgc2hhMjU2c3UwIHExMCxxMTEKKwl2bW92CQlxMixxMAorCS5ieXRlCTB4NjgsMHgwYywweDAyLDB4ZjMJQCBzaGEyNTZoIHEwLHExLHExMgorCS5ieXRlCTB4NjgsMHgyYywweDE0LDB4ZjMJQCBzaGEyNTZoMiBxMSxxMixxMTIKKwkuYnl0ZQkweGUyLDB4NGMsMHg2MCwweGYzCUAgc2hhMjU2c3UxIHExMCxxOCxxOQorCXZsZDEuMzIJCXtxMTJ9LFtyM10hCisJdmFkZC5pMzIJcTEzLHExMyxxMTEKKwkuYnl0ZQkweGUwLDB4NjMsMHhmYSwweGYzCUAgc2hhMjU2c3UwIHExMSxxOAorCXZtb3YJCXEyLHEwCisJLmJ5dGUJMHg2YSwweDBjLDB4MDIsMHhmMwlAIHNoYTI1NmggcTAscTEscTEzCisJLmJ5dGUJMHg2YSwweDJjLDB4MTQsMHhmMwlAIHNoYTI1NmgyIHExLHEyLHExMworCS5ieXRlCTB4ZTQsMHg2YywweDYyLDB4ZjMJQCBzaGEyNTZzdTEgcTExLHE5LHExMAorCXZsZDEuMzIJCXtxMTN9LFtyM10hCisJdmFkZC5pMzIJcTEyLHExMixxOAorCS5ieXRlCTB4ZTIsMHgwMywweGZhLDB4ZjMJQCBzaGEyNTZzdTAgcTgscTkKKwl2bW92CQlxMixxMAorCS5ieXRlCTB4NjgsMHgwYywweDAyLDB4ZjMJQCBzaGEyNTZoIHEwLHExLHExMgorCS5ieXRlCTB4NjgsMHgyYywweDE0LDB4ZjMJQCBzaGEyNTZoMiBxMSxxMixxMTIKKwkuYnl0ZQkweGU2LDB4MGMsMHg2NCwweGYzCUAgc2hhMjU2c3UxIHE4LHExMCxxMTEKKwl2bGQxLjMyCQl7cTEyfSxbcjNdIQorCXZhZGQuaTMyCXExMyxxMTMscTkKKwkuYnl0ZQkweGU0LDB4MjMsMHhmYSwweGYzCUAgc2hhMjU2c3UwIHE5LHExMAorCXZtb3YJCXEyLHEwCisJLmJ5dGUJMHg2YSwweDBjLDB4MDIsMHhmMwlAIHNoYTI1NmggcTAscTEscTEzCisJLmJ5dGUJMHg2YSwweDJjLDB4MTQsMHhmMwlAIHNoYTI1NmgyIHExLHEyLHExMworCS5ieXRlCTB4ZTAsMHgyYywweDY2LDB4ZjMJQCBzaGEyNTZzdTEgcTkscTExLHE4CisJdmxkMS4zMgkJe3ExM30sW3IzXSEKKwl2YWRkLmkzMglxMTIscTEyLHExMAorCS5ieXRlCTB4ZTYsMHg0MywweGZhLDB4ZjMJQCBzaGEyNTZzdTAgcTEwLHExMQorCXZtb3YJCXEyLHEwCisJLmJ5dGUJMHg2OCwweDBjLDB4MDIsMHhmMwlAIHNoYTI1NmggcTAscTEscTEyCisJLmJ5dGUJMHg2OCwweDJjLDB4MTQsMHhmMwlAIHNoYTI1NmgyIHExLHEyLHExMgorCS5ieXRlCTB4ZTIsMHg0YywweDYwLDB4ZjMJQCBzaGEyNTZzdTEgcTEwLHE4LHE5CisJdmxkMS4zMgkJe3ExMn0sW3IzXSEKKwl2YWRkLmkzMglxMTMscTEzLHExMQorCS5ieXRlCTB4ZTAsMHg2MywweGZhLDB4ZjMJQCBzaGEyNTZzdTAgcTExLHE4CisJdm1vdgkJcTIscTAKKwkuYnl0ZQkweDZhLDB4MGMsMHgwMiwweGYzCUAgc2hhMjU2aCBxMCxxMSxxMTMKKwkuYnl0ZQkweDZhLDB4MmMsMHgxNCwweGYzCUAgc2hhMjU2aDIgcTEscTIscTEzCisJLmJ5dGUJMHhlNCwweDZjLDB4NjIsMHhmMwlAIHNoYTI1NnN1MSBxMTEscTkscTEwCisJdmxkMS4zMgkJe3ExM30sW3IzXSEKKwl2YWRkLmkzMglxMTIscTEyLHE4CisJLmJ5dGUJMHhlMiwweDAzLDB4ZmEsMHhmMwlAIHNoYTI1NnN1MCBxOCxxOQorCXZtb3YJCXEyLHEwCisJLmJ5dGUJMHg2OCwweDBjLDB4MDIsMHhmMwlAIHNoYTI1NmggcTAscTEscTEyCisJLmJ5dGUJMHg2OCwweDJjLDB4MTQsMHhmMwlAIHNoYTI1NmgyIHExLHEyLHExMgorCS5ieXRlCTB4ZTYsMHgwYywweDY0LDB4ZjMJQCBzaGEyNTZzdTEgcTgscTEwLHExMQorCXZsZDEuMzIJCXtxMTJ9LFtyM10hCisJdmFkZC5pMzIJcTEzLHExMyxxOQorCS5ieXRlCTB4ZTQsMHgyMywweGZhLDB4ZjMJQCBzaGEyNTZzdTAgcTkscTEwCisJdm1vdgkJcTIscTAKKwkuYnl0ZQkweDZhLDB4MGMsMHgwMiwweGYzCUAgc2hhMjU2aCBxMCxxMSxxMTMKKwkuYnl0ZQkweDZhLDB4MmMsMHgxNCwweGYzCUAgc2hhMjU2aDIgcTEscTIscTEzCisJLmJ5dGUJMHhlMCwweDJjLDB4NjYsMHhmMwlAIHNoYTI1NnN1MSBxOSxxMTEscTgKKwl2bGQxLjMyCQl7cTEzfSxbcjNdIQorCXZhZGQuaTMyCXExMixxMTIscTEwCisJLmJ5dGUJMHhlNiwweDQzLDB4ZmEsMHhmMwlAIHNoYTI1NnN1MCBxMTAscTExCisJdm1vdgkJcTIscTAKKwkuYnl0ZQkweDY4LDB4MGMsMHgwMiwweGYzCUAgc2hhMjU2aCBxMCxxMSxxMTIKKwkuYnl0ZQkweDY4LDB4MmMsMHgxNCwweGYzCUAgc2hhMjU2aDIgcTEscTIscTEyCisJLmJ5dGUJMHhlMiwweDRjLDB4NjAsMHhmMwlAIHNoYTI1NnN1MSBxMTAscTgscTkKKwl2bGQxLjMyCQl7cTEyfSxbcjNdIQorCXZhZGQuaTMyCXExMyxxMTMscTExCisJLmJ5dGUJMHhlMCwweDYzLDB4ZmEsMHhmMwlAIHNoYTI1NnN1MCBxMTEscTgKKwl2bW92CQlxMixxMAorCS5ieXRlCTB4NmEsMHgwYywweDAyLDB4ZjMJQCBzaGEyNTZoIHEwLHExLHExMworCS5ieXRlCTB4NmEsMHgyYywweDE0LDB4ZjMJQCBzaGEyNTZoMiBxMSxxMixxMTMKKwkuYnl0ZQkweGU0LDB4NmMsMHg2MiwweGYzCUAgc2hhMjU2c3UxIHExMSxxOSxxMTAKKwl2bGQxLjMyCQl7cTEzfSxbcjNdIQorCXZhZGQuaTMyCXExMixxMTIscTgKKwl2bW92CQlxMixxMAorCS5ieXRlCTB4NjgsMHgwYywweDAyLDB4ZjMJQCBzaGEyNTZoIHEwLHExLHExMgorCS5ieXRlCTB4NjgsMHgyYywweDE0LDB4ZjMJQCBzaGEyNTZoMiBxMSxxMixxMTIKKworCXZsZDEuMzIJCXtxMTJ9LFtyM10hCisJdmFkZC5pMzIJcTEzLHExMyxxOQorCXZtb3YJCXEyLHEwCisJLmJ5dGUJMHg2YSwweDBjLDB4MDIsMHhmMwlAIHNoYTI1NmggcTAscTEscTEzCisJLmJ5dGUJMHg2YSwweDJjLDB4MTQsMHhmMwlAIHNoYTI1NmgyIHExLHEyLHExMworCisJdmxkMS4zMgkJe3ExM30sW3IzXQorCXZhZGQuaTMyCXExMixxMTIscTEwCisJc3ViCQlyMyxyMywjMjU2LTE2CUAgcmV3aW5kCisJdm1vdgkJcTIscTAKKwkuYnl0ZQkweDY4LDB4MGMsMHgwMiwweGYzCUAgc2hhMjU2aCBxMCxxMSxxMTIKKwkuYnl0ZQkweDY4LDB4MmMsMHgxNCwweGYzCUAgc2hhMjU2aDIgcTEscTIscTEyCisKKwl2YWRkLmkzMglxMTMscTEzLHExMQorCXZtb3YJCXEyLHEwCisJLmJ5dGUJMHg2YSwweDBjLDB4MDIsMHhmMwlAIHNoYTI1NmggcTAscTEscTEzCisJLmJ5dGUJMHg2YSwweDJjLDB4MTQsMHhmMwlAIHNoYTI1NmgyIHExLHEyLHExMworCisJdmFkZC5pMzIJcTAscTAscTE0CisJdmFkZC5pMzIJcTEscTEscTE1CisJYm5lCQkuTG9vcF92OAorCisJdnN0MS4zMgkJe3EwLHExfSxbcjBdCisKKwlieAlscgkJQCBieCBscgorLnNpemUJc2hhMjU2X2Jsb2NrX2RhdGFfb3JkZXJfYXJtdjgsLi1zaGEyNTZfYmxvY2tfZGF0YV9vcmRlcl9hcm12OAorI2VuZGlmCisuYXNjaXogICJTSEEyNTYgYmxvY2sgdHJhbnNmb3JtIGZvciBBUk12NC9ORU9OL0FSTXY4LCBDUllQVE9HQU1TIGJ5IDxhcHByb0BvcGVuc3NsLm9yZz4iCiAuYWxpZ24JMgorLmNvbW0gICBPUEVOU1NMX2FybWNhcF9QLDQsNApkaWZmIC0tZ2l0IGEvY3J5cHRvL3NoYS9hc20vc2hhMjU2LWFybXY0LnBsIGIvY3J5cHRvL3NoYS9hc20vc2hhMjU2LWFybXY0LnBsCmluZGV4IDljODRlOGQuLjUwNWNhOGYgMTAwNjQ0Ci0tLSBhL2NyeXB0by9zaGEvYXNtL3NoYTI1Ni1hcm12NC5wbAorKysgYi9jcnlwdG8vc2hhL2FzbS9zaGEyNTYtYXJtdjQucGwKQEAgLTEsNyArMSw3IEBACiAjIS91c3IvYmluL2VudiBwZXJsCiAKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSMgV3JpdHRlbiBieSBBbmR5IFBvbHlha292IDxhcHByb0BmeS5jaGFsbWVycy5zZT4gZm9yIHRoZSBPcGVuU1NMCisjIFdyaXR0ZW4gYnkgQW5keSBQb2x5YWtvdiA8YXBwcm9Ab3BlbnNzbC5vcmc+IGZvciB0aGUgT3BlblNTTAogIyBwcm9qZWN0LiBUaGUgbW9kdWxlIGlzLCBob3dldmVyLCBkdWFsIGxpY2Vuc2VkIHVuZGVyIE9wZW5TU0wgYW5kCiAjIENSWVBUT0dBTVMgbGljZW5zZXMgZGVwZW5kaW5nIG9uIHdoZXJlIHlvdSBvYnRhaW4gaXQuIEZvciBmdXJ0aGVyCiAjIGRldGFpbHMgc2VlIGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvfmFwcHJvL2NyeXB0b2dhbXMvLgpAQCAtMjEsMTUgKzIxLDI3IEBACiAjIEZlYnJ1YXJ5IDIwMTEuCiAjCiAjIFByb2ZpbGVyLWFzc2lzdGVkIGFuZCBwbGF0Zm9ybS1zcGVjaWZpYyBvcHRpbWl6YXRpb24gcmVzdWx0ZWQgaW4gMTYlCi0jIGltcHJvdmVtZW50IG9uIENvcnRleCBBOCBjb3JlIGFuZCB+MTcgY3ljbGVzIHBlciBwcm9jZXNzZWQgYnl0ZS4KKyMgaW1wcm92ZW1lbnQgb24gQ29ydGV4IEE4IGNvcmUgYW5kIH4xNS40IGN5Y2xlcyBwZXIgcHJvY2Vzc2VkIGJ5dGUuCisKKyMgU2VwdGVtYmVyIDIwMTMuCisjCisjIEFkZCBORU9OIGltcGxlbWVudGF0aW9uLiBPbiBDb3J0ZXggQTggaXQgd2FzIG1lYXN1cmVkIHRvIHByb2Nlc3Mgb25lCisjIGJ5dGUgaW4gMTIuNSBjeWNsZXMgb3IgMjMlIGZhc3RlciB0aGFuIGludGVnZXItb25seSBjb2RlLiBTbmFwZHJhZ29uCisjIFM0IGRvZXMgaXQgaW4gMTIuNSBjeWNsZXMgdG9vLCBidXQgaXQncyA1MCUgZmFzdGVyIHRoYW4gaW50ZWdlci1vbmx5CisjIGNvZGUgKG1lYW5pbmcgdGhhdCBsYXR0ZXIgcGVyZm9ybXMgc3ViLW9wdGltYWxseSwgbm90aGluZyB3YXMgZG9uZQorIyBhYm91dCBpdCkuCisKKyMgTWF5IDIwMTQuCisjCisjIEFkZCBBUk12OCBjb2RlIHBhdGggcGVyZm9ybWluZyBhdCAyLjAgY3BiIG9uIEFwcGxlIEE3LgogCiB3aGlsZSAoKCRvdXRwdXQ9c2hpZnQpICYmICgkb3V0cHV0IX4vXlx3W1x3XC1dKlwuXHcrJC8pKSB7fQogb3BlbiBTVERPVVQsIj4kb3V0cHV0IjsKIAogJGN0eD0icjAiOwkkdDA9InIwIjsKLSRpbnA9InIxIjsJJHQzPSJyMSI7CiskaW5wPSJyMSI7CSR0ND0icjEiOwogJGxlbj0icjIiOwkkdDE9InIyIjsKLSRUMT0icjMiOworJFQxPSJyMyI7CSR0Mz0icjMiOwogJEE9InI0IjsKICRCPSJyNSI7CiAkQz0icjYiOwpAQCAtNTIsNzEgKzY0LDg4IEBACiAKICRjb2RlLj08PF9fXyBpZiAoJGk8MTYpOwogI2lmIF9fQVJNX0FSQ0hfXz49NwotCWxkcgkkVDEsWyRpbnBdLCM0CisJQCBsZHIJJHQxLFskaW5wXSwjNAkJCUAgJGkKKyMgaWYgJGk9PTE1CisJc3RyCSRpbnAsW3NwLCMxNyo0XQkJCUAgbWFrZSByb29tIGZvciAkdDQKKyMgZW5kaWYKKwllb3IJJHQwLCRlLCRlLHJvciNgJFNpZ21hMVsxXS0kU2lnbWExWzBdYAorCWFkZAkkYSwkYSwkdDIJCQlAIGgrPU1haihhLGIsYykgZnJvbSB0aGUgcGFzdAorCWVvcgkkdDAsJHQwLCRlLHJvciNgJFNpZ21hMVsyXS0kU2lnbWExWzBdYAlAIFNpZ21hMShlKQorCXJldgkkdDEsJHQxCiAjZWxzZQotCWxkcmIJJFQxLFskaW5wLCMzXQkJCUAgJGkKKwlAIGxkcmIJJHQxLFskaW5wLCMzXQkJCUAgJGkKKwlhZGQJJGEsJGEsJHQyCQkJQCBoKz1NYWooYSxiLGMpIGZyb20gdGhlIHBhc3QKIAlsZHJiCSR0MixbJGlucCwjMl0KLQlsZHJiCSR0MSxbJGlucCwjMV0KLQlsZHJiCSR0MCxbJGlucF0sIzQKLQlvcnIJJFQxLCRUMSwkdDIsbHNsIzgKLQlvcnIJJFQxLCRUMSwkdDEsbHNsIzE2Ci0Jb3JyCSRUMSwkVDEsJHQwLGxzbCMyNAorCWxkcmIJJHQwLFskaW5wLCMxXQorCW9ycgkkdDEsJHQxLCR0Mixsc2wjOAorCWxkcmIJJHQyLFskaW5wXSwjNAorCW9ycgkkdDEsJHQxLCR0MCxsc2wjMTYKKyMgaWYgJGk9PTE1CisJc3RyCSRpbnAsW3NwLCMxNyo0XQkJCUAgbWFrZSByb29tIGZvciAkdDQKKyMgZW5kaWYKKwllb3IJJHQwLCRlLCRlLHJvciNgJFNpZ21hMVsxXS0kU2lnbWExWzBdYAorCW9ycgkkdDEsJHQxLCR0Mixsc2wjMjQKKwllb3IJJHQwLCR0MCwkZSxyb3IjYCRTaWdtYTFbMl0tJFNpZ21hMVswXWAJQCBTaWdtYTEoZSkKICNlbmRpZgogX19fCiAkY29kZS49PDxfX187Ci0JbW92CSR0MCwkZSxyb3IjJFNpZ21hMVswXQogCWxkcgkkdDIsWyRLdGJsXSwjNAkJCUAgKksyNTYrKwotCWVvcgkkdDAsJHQwLCRlLHJvciMkU2lnbWExWzFdCisJYWRkCSRoLCRoLCR0MQkJCUAgaCs9WFtpXQorCXN0cgkkdDEsW3NwLCNgJGklMTZgKjRdCiAJZW9yCSR0MSwkZiwkZwotI2lmICRpPj0xNgotCWFkZAkkVDEsJFQxLCR0MwkJCUAgZnJvbSBCT0RZXzE2X3h4Ci0jZWxpZiBfX0FSTV9BUkNIX18+PTcgJiYgZGVmaW5lZChfX0FSTUVMX18pCi0JcmV2CSRUMSwkVDEKLSNlbmRpZgotI2lmICRpPT0xNQotCXN0cgkkaW5wLFtzcCwjMTcqNF0JCQlAIGxlYXZlIHJvb20gZm9yICR0MwotI2VuZGlmCi0JZW9yCSR0MCwkdDAsJGUscm9yIyRTaWdtYTFbMl0JQCBTaWdtYTEoZSkKKwlhZGQJJGgsJGgsJHQwLHJvciMkU2lnbWExWzBdCUAgaCs9U2lnbWExKGUpCiAJYW5kCSR0MSwkdDEsJGUKLQlzdHIJJFQxLFtzcCwjYCRpJTE2YCo0XQotCWFkZAkkVDEsJFQxLCR0MAorCWFkZAkkaCwkaCwkdDIJCQlAIGgrPUsyNTZbaV0KIAllb3IJJHQxLCR0MSwkZwkJCUAgQ2goZSxmLGcpCi0JYWRkCSRUMSwkVDEsJGgKLQltb3YJJGgsJGEscm9yIyRTaWdtYTBbMF0KLQlhZGQJJFQxLCRUMSwkdDEKLQllb3IJJGgsJGgsJGEscm9yIyRTaWdtYTBbMV0KLQlhZGQJJFQxLCRUMSwkdDIKLQllb3IJJGgsJGgsJGEscm9yIyRTaWdtYTBbMl0JCUAgU2lnbWEwKGEpCi0jaWYgJGk+PTE1Ci0JbGRyCSR0Myxbc3AsI2AoJGkrMiklMTZgKjRdCQlAIGZyb20gQk9EWV8xNl94eAorCWVvcgkkdDAsJGEsJGEscm9yI2AkU2lnbWEwWzFdLSRTaWdtYTBbMF1gCisJYWRkCSRoLCRoLCR0MQkJCUAgaCs9Q2goZSxmLGcpCisjaWYgJGk9PTMxCisJYW5kCSR0MiwkdDIsIzB4ZmYKKwljbXAJJHQyLCMweGYyCQkJQCBkb25lPwogI2VuZGlmCi0Jb3JyCSR0MCwkYSwkYgotCWFuZAkkdDEsJGEsJGIKLQlhbmQJJHQwLCR0MCwkYwotCWFkZAkkaCwkaCwkVDEKLQlvcnIJJHQwLCR0MCwkdDEJCQlAIE1haihhLGIsYykKLQlhZGQJJGQsJGQsJFQxCi0JYWRkCSRoLCRoLCR0MAorI2lmICRpPDE1CisjIGlmIF9fQVJNX0FSQ0hfXz49NworCWxkcgkkdDEsWyRpbnBdLCM0CQkJQCBwcmVmZXRjaAorIyBlbHNlCisJbGRyYgkkdDEsWyRpbnAsIzNdCisjIGVuZGlmCisJZW9yCSR0MiwkYSwkYgkJCUAgYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorI2Vsc2UKKwlsZHIJJHQxLFtzcCwjYCgkaSsyKSUxNmAqNF0JCUAgZnJvbSBmdXR1cmUgQk9EWV8xNl94eAorCWVvcgkkdDIsJGEsJGIJCQlAIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKwlsZHIJJHQ0LFtzcCwjYCgkaSsxNSklMTZgKjRdCUAgZnJvbSBmdXR1cmUgQk9EWV8xNl94eAorI2VuZGlmCisJZW9yCSR0MCwkdDAsJGEscm9yI2AkU2lnbWEwWzJdLSRTaWdtYTBbMF1gCUAgU2lnbWEwKGEpCisJYW5kCSR0MywkdDMsJHQyCQkJQCAoYl5jKSY9KGFeYikKKwlhZGQJJGQsJGQsJGgJCQlAIGQrPWgKKwllb3IJJHQzLCR0MywkYgkJCUAgTWFqKGEsYixjKQorCWFkZAkkaCwkaCwkdDAscm9yIyRTaWdtYTBbMF0JQCBoKz1TaWdtYTAoYSkKKwlAIGFkZAkkaCwkaCwkdDMJCQlAIGgrPU1haihhLGIsYykKIF9fXworCSgkdDIsJHQzKT0oJHQzLCR0Mik7CiB9CiAKIHN1YiBCT0RZXzE2X1hYIHsKIG15ICgkaSwkYSwkYiwkYywkZCwkZSwkZiwkZywkaCkgPSBAXzsKIAogJGNvZGUuPTw8X19fOwotCUAgbGRyCSR0Myxbc3AsI2AoJGkrMSklMTZgKjRdCQlAICRpCi0JbGRyCSR0Mixbc3AsI2AoJGkrMTQpJTE2YCo0XQotCW1vdgkkdDAsJHQzLHJvciMkc2lnbWEwWzBdCi0JbGRyCSRUMSxbc3AsI2AoJGkrMCklMTZgKjRdCi0JZW9yCSR0MCwkdDAsJHQzLHJvciMkc2lnbWEwWzFdCi0JbGRyCSR0MSxbc3AsI2AoJGkrOSklMTZgKjRdCi0JZW9yCSR0MCwkdDAsJHQzLGxzciMkc2lnbWEwWzJdCUAgc2lnbWEwKFhbaSsxXSkKLQltb3YJJHQzLCR0Mixyb3IjJHNpZ21hMVswXQotCWFkZAkkVDEsJFQxLCR0MAotCWVvcgkkdDMsJHQzLCR0Mixyb3IjJHNpZ21hMVsxXQotCWFkZAkkVDEsJFQxLCR0MQotCWVvcgkkdDMsJHQzLCR0Mixsc3IjJHNpZ21hMVsyXQlAIHNpZ21hMShYW2krMTRdKQotCUAgYWRkCSRUMSwkVDEsJHQzCisJQCBsZHIJJHQxLFtzcCwjYCgkaSsxKSUxNmAqNF0JCUAgJGkKKwlAIGxkcgkkdDQsW3NwLCNgKCRpKzE0KSUxNmAqNF0KKwltb3YJJHQwLCR0MSxyb3IjJHNpZ21hMFswXQorCWFkZAkkYSwkYSwkdDIJCQlAIGgrPU1haihhLGIsYykgZnJvbSB0aGUgcGFzdAorCW1vdgkkdDIsJHQ0LHJvciMkc2lnbWExWzBdCisJZW9yCSR0MCwkdDAsJHQxLHJvciMkc2lnbWEwWzFdCisJZW9yCSR0MiwkdDIsJHQ0LHJvciMkc2lnbWExWzFdCisJZW9yCSR0MCwkdDAsJHQxLGxzciMkc2lnbWEwWzJdCUAgc2lnbWEwKFhbaSsxXSkKKwlsZHIJJHQxLFtzcCwjYCgkaSswKSUxNmAqNF0KKwllb3IJJHQyLCR0MiwkdDQsbHNyIyRzaWdtYTFbMl0JQCBzaWdtYTEoWFtpKzE0XSkKKwlsZHIJJHQ0LFtzcCwjYCgkaSs5KSUxNmAqNF0KKworCWFkZAkkdDIsJHQyLCR0MAorCWVvcgkkdDAsJGUsJGUscm9yI2AkU2lnbWExWzFdLSRTaWdtYTFbMF1gCUAgZnJvbSBCT0RZXzAwXzE1CisJYWRkCSR0MSwkdDEsJHQyCisJZW9yCSR0MCwkdDAsJGUscm9yI2AkU2lnbWExWzJdLSRTaWdtYTFbMF1gCUAgU2lnbWExKGUpCisJYWRkCSR0MSwkdDEsJHQ0CQkJQCBYW2ldCiBfX18KIAkmQk9EWV8wMF8xNShAXyk7CiB9CkBAIC0xNDcsNDYgKzE3Niw2NCBAQAogLndvcmQJMHg3NDhmODJlZSwweDc4YTU2MzZmLDB4ODRjODc4MTQsMHg4Y2M3MDIwOAogLndvcmQJMHg5MGJlZmZmYSwweGE0NTA2Y2ViLDB4YmVmOWEzZjcsMHhjNjcxNzhmMgogLnNpemUJSzI1NiwuLUsyNTYKKy53b3JkCTAJCQkJQCB0ZXJtaW5hdG9yCisuTE9QRU5TU0xfYXJtY2FwOgorLndvcmQJT1BFTlNTTF9hcm1jYXBfUC1zaGEyNTZfYmxvY2tfZGF0YV9vcmRlcgorLmFsaWduCTUKIAogLmdsb2JhbAlzaGEyNTZfYmxvY2tfZGF0YV9vcmRlcgogLnR5cGUJc2hhMjU2X2Jsb2NrX2RhdGFfb3JkZXIsJWZ1bmN0aW9uCiBzaGEyNTZfYmxvY2tfZGF0YV9vcmRlcjoKIAlzdWIJcjMscGMsIzgJCUAgc2hhMjU2X2Jsb2NrX2RhdGFfb3JkZXIKIAlhZGQJJGxlbiwkaW5wLCRsZW4sbHNsIzYJQCBsZW4gdG8gcG9pbnQgYXQgdGhlIGVuZCBvZiBpbnAKKyNpZiBfX0FSTV9BUkNIX18+PTcKKwlsZHIJcjEyLC5MT1BFTlNTTF9hcm1jYXAKKwlsZHIJcjEyLFtyMyxyMTJdCQlAIE9QRU5TU0xfYXJtY2FwX1AKKwl0c3QJcjEyLCNBUk1WOF9TSEEyNTYKKwlibmUJLkxBUk12OAorCXRzdAlyMTIsI0FSTVY3X05FT04KKwlibmUJLkxORU9OCisjZW5kaWYKIAlzdG1kYglzcCEseyRjdHgsJGlucCwkbGVuLHI0LXIxMSxscn0KIAlsZG1pYQkkY3R4LHskQSwkQiwkQywkRCwkRSwkRiwkRywkSH0KLQlzdWIJJEt0YmwscjMsIzI1NgkJQCBLMjU2CisJc3ViCSRLdGJsLHIzLCMyNTYrMzIJQCBLMjU2CiAJc3ViCXNwLHNwLCMxNio0CQlAIGFsbG9jYShYWzE2XSkKIC5Mb29wOgorIyBpZiBfX0FSTV9BUkNIX18+PTcKKwlsZHIJJHQxLFskaW5wXSwjNAorIyBlbHNlCisJbGRyYgkkdDEsWyRpbnAsIzNdCisjIGVuZGlmCisJZW9yCSR0MywkQiwkQwkJQCBtYWdpYworCWVvcgkkdDIsJHQyLCR0MgogX19fCiBmb3IoJGk9MDskaTwxNjskaSsrKQl7ICZCT0RZXzAwXzE1KCRpLEBWKTsgdW5zaGlmdChAVixwb3AoQFYpKTsgfQogJGNvZGUuPSIuTHJvdW5kc18xNl94eDpcbiI7CiBmb3IgKDskaTwzMjskaSsrKQl7ICZCT0RZXzE2X1hYKCRpLEBWKTsgdW5zaGlmdChAVixwb3AoQFYpKTsgfQogJGNvZGUuPTw8X19fOwotCWFuZAkkdDIsJHQyLCMweGZmCi0JY21wCSR0MiwjMHhmMgorCWxkcmVxCSR0Myxbc3AsIzE2KjRdCQlAIHB1bGwgY3R4CiAJYm5lCS5Mcm91bmRzXzE2X3h4CiAKLQlsZHIJJFQxLFtzcCwjMTYqNF0JCUAgcHVsbCBjdHgKLQlsZHIJJHQwLFskVDEsIzBdCi0JbGRyCSR0MSxbJFQxLCM0XQotCWxkcgkkdDIsWyRUMSwjOF0KKwlhZGQJJEEsJEEsJHQyCQlAIGgrPU1haihhLGIsYykgZnJvbSB0aGUgcGFzdAorCWxkcgkkdDAsWyR0MywjMF0KKwlsZHIJJHQxLFskdDMsIzRdCisJbGRyCSR0MixbJHQzLCM4XQogCWFkZAkkQSwkQSwkdDAKLQlsZHIJJHQwLFskVDEsIzEyXQorCWxkcgkkdDAsWyR0MywjMTJdCiAJYWRkCSRCLCRCLCR0MQotCWxkcgkkdDEsWyRUMSwjMTZdCisJbGRyCSR0MSxbJHQzLCMxNl0KIAlhZGQJJEMsJEMsJHQyCi0JbGRyCSR0MixbJFQxLCMyMF0KKwlsZHIJJHQyLFskdDMsIzIwXQogCWFkZAkkRCwkRCwkdDAKLQlsZHIJJHQwLFskVDEsIzI0XQorCWxkcgkkdDAsWyR0MywjMjRdCiAJYWRkCSRFLCRFLCR0MQotCWxkcgkkdDEsWyRUMSwjMjhdCisJbGRyCSR0MSxbJHQzLCMyOF0KIAlhZGQJJEYsJEYsJHQyCiAJbGRyCSRpbnAsW3NwLCMxNyo0XQkJQCBwdWxsIGlucAogCWxkcgkkdDIsW3NwLCMxOCo0XQkJQCBwdWxsIGlucCtsZW4KIAlhZGQJJEcsJEcsJHQwCiAJYWRkCSRILCRILCR0MQotCXN0bWlhCSRUMSx7JEEsJEIsJEMsJEQsJEUsJEYsJEcsJEh9CisJc3RtaWEJJHQzLHskQSwkQiwkQywkRCwkRSwkRiwkRywkSH0KIAljbXAJJGlucCwkdDIKIAlzdWIJJEt0YmwsJEt0YmwsIzI1NglAIHJld2luZCBLdGJsCiAJYm5lCS5Mb29wCkBAIC0yMDAsMTIgKzI0Nyw0MTAgQEAKIAltb3ZlcQlwYyxscgkJCUAgYmUgYmluYXJ5IGNvbXBhdGlibGUgd2l0aCBWNCwgeWV0CiAJYngJbHIJCQlAIGludGVyb3BlcmFibGUgd2l0aCBUaHVtYiBJU0E6LSkKICNlbmRpZgotLnNpemUgICBzaGEyNTZfYmxvY2tfZGF0YV9vcmRlciwuLXNoYTI1Nl9ibG9ja19kYXRhX29yZGVyCi0uYXNjaXogICJTSEEyNTYgYmxvY2sgdHJhbnNmb3JtIGZvciBBUk12NCwgQ1JZUFRPR0FNUyBieSA8YXBwcm9cQG9wZW5zc2wub3JnPiIKKy5zaXplCXNoYTI1Nl9ibG9ja19kYXRhX29yZGVyLC4tc2hhMjU2X2Jsb2NrX2RhdGFfb3JkZXIKK19fXworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBORU9OIHN0dWZmCisjCit7e3sKK215IEBYPW1hcCgicSRfIiwoMC4uMykpOworbXkgKCRUMCwkVDEsJFQyLCRUMywkVDQsJFQ1KT0oInE4IiwicTkiLCJxMTAiLCJxMTEiLCJkMjQiLCJkMjUiKTsKK215ICRYZmVyPSR0NDsKK215ICRqPTA7CisKK3N1YiBEbG8oKSAgIHsgc2hpZnQ9fm18cShbMV0/WzAtOV0pfD8iZCIuKCQxKjIpOiIiOyAgICAgfQorc3ViIERoaSgpICAgeyBzaGlmdD1+bXxxKFsxXT9bMC05XSl8PyJkIi4oJDEqMisxKToiIjsgICB9CisKK3N1YiBBVVRPTE9BRCgpICAgICAgICAgICMgdGh1bmsgW3NpbXBsaWZpZWRdIHg4Ni1zdHlsZSBwZXJsYXNtCit7IG15ICRvcGNvZGUgPSAkQVVUT0xPQUQ7ICRvcGNvZGUgPX4gcy8uKjo6Ly87ICRvcGNvZGUgPX4gcy9fL1wuLzsKKyAgbXkgJGFyZyA9IHBvcDsKKyAgICAkYXJnID0gIiMkYXJnIiBpZiAoJGFyZyoxIGVxICRhcmcpOworICAgICRjb2RlIC49ICJcdCRvcGNvZGVcdCIuam9pbignLCcsQF8sJGFyZykuIlxuIjsKK30KKworc3ViIFh1cGRhdGUoKQoreyB1c2UgaW50ZWdlcjsKKyAgbXkgJGJvZHkgPSBzaGlmdDsKKyAgbXkgQGluc25zID0gKCYkYm9keSwmJGJvZHksJiRib2R5LCYkYm9keSk7CisgIG15ICgkYSwkYiwkYywkZCwkZSwkZiwkZywkaCk7CisKKwkmdmV4dF84CQkoJFQwLEBYWzBdLEBYWzFdLDQpOwkjIFhbMS4uNF0KKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkmdmV4dF84CQkoJFQxLEBYWzJdLEBYWzNdLDQpOwkjIFhbOS4uMTJdCisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJJnZzaHJfdTMyCSgkVDIsJFQwLCRzaWdtYTBbMF0pOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSZ2YWRkX2kzMgkoQFhbMF0sQFhbMF0sJFQxKTsJIyBYWzAuLjNdICs9IFhbOS4uMTJdCisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJJnZzaHJfdTMyCSgkVDEsJFQwLCRzaWdtYTBbMl0pOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSZ2c2xpXzMyCSgkVDIsJFQwLDMyLSRzaWdtYTBbMF0pOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSZ2c2hyX3UzMgkoJFQzLCRUMCwkc2lnbWEwWzFdKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkmdmVvcgkJKCRUMSwkVDEsJFQyKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkmdnNsaV8zMgkoJFQzLCRUMCwzMi0kc2lnbWEwWzFdKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgICZ2c2hyX3UzMgkoJFQ0LCZEaGkoQFhbM10pLCRzaWdtYTFbMF0pOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSZ2ZW9yCQkoJFQxLCRUMSwkVDMpOwkJIyBzaWdtYTAoWFsxLi40XSkKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgICZ2c2xpXzMyCSgkVDQsJkRoaShAWFszXSksMzItJHNpZ21hMVswXSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJICAmdnNocl91MzIJKCRUNSwmRGhpKEBYWzNdKSwkc2lnbWExWzJdKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkmdmFkZF9pMzIJKEBYWzBdLEBYWzBdLCRUMSk7CSMgWFswLi4zXSArPSBzaWdtYTAoWFsxLi40XSkKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgICZ2ZW9yCQkoJFQ1LCRUNSwkVDQpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSAgJnZzaHJfdTMyCSgkVDQsJkRoaShAWFszXSksJHNpZ21hMVsxXSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJICAmdnNsaV8zMgkoJFQ0LCZEaGkoQFhbM10pLDMyLSRzaWdtYTFbMV0pOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSAgJnZlb3IJCSgkVDUsJFQ1LCRUNCk7CQkjIHNpZ21hMShYWzE0Li4xNV0pCisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJJnZhZGRfaTMyCSgmRGxvKEBYWzBdKSwmRGxvKEBYWzBdKSwkVDUpOyMgWFswLi4xXSArPSBzaWdtYTEoWFsxNC4uMTVdKQorCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSAgJnZzaHJfdTMyCSgkVDQsJkRsbyhAWFswXSksJHNpZ21hMVswXSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJICAmdnNsaV8zMgkoJFQ0LCZEbG8oQFhbMF0pLDMyLSRzaWdtYTFbMF0pOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSAgJnZzaHJfdTMyCSgkVDUsJkRsbyhAWFswXSksJHNpZ21hMVsyXSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJICAmdmVvcgkJKCRUNSwkVDUsJFQ0KTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgICZ2c2hyX3UzMgkoJFQ0LCZEbG8oQFhbMF0pLCRzaWdtYTFbMV0pOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSZ2bGQxXzMyCSgieyRUMH0iLCJbJEt0YmwsOjEyOF0hIik7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJICAmdnNsaV8zMgkoJFQ0LCZEbG8oQFhbMF0pLDMyLSRzaWdtYTFbMV0pOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSAgJnZlb3IJCSgkVDUsJFQ1LCRUNCk7CQkjIHNpZ21hMShYWzE2Li4xN10pCisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJJnZhZGRfaTMyCSgmRGhpKEBYWzBdKSwmRGhpKEBYWzBdKSwkVDUpOyMgWFsyLi4zXSArPSBzaWdtYTEoWFsxNi4uMTddKQorCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSZ2YWRkX2kzMgkoJFQwLCRUMCxAWFswXSk7CisJIHdoaWxlKCQjaW5zbnM+PTIpIHsgZXZhbChzaGlmdChAaW5zbnMpKTsgfQorCSZ2c3QxXzMyCSgieyRUMH0iLCJbJFhmZXIsOjEyOF0hIik7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisKKwlwdXNoKEBYLHNoaWZ0KEBYKSk7CQkjICJyb3RhdGUiIFhbXQorfQorCitzdWIgWHByZWxvYWQoKQoreyB1c2UgaW50ZWdlcjsKKyAgbXkgJGJvZHkgPSBzaGlmdDsKKyAgbXkgQGluc25zID0gKCYkYm9keSwmJGJvZHksJiRib2R5LCYkYm9keSk7CisgIG15ICgkYSwkYiwkYywkZCwkZSwkZiwkZywkaCk7CisKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkmdmxkMV8zMgkoInskVDB9IiwiWyRLdGJsLDoxMjhdISIpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSZ2cmV2MzJfOAkoQFhbMF0sQFhbMF0pOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSZ2YWRkX2kzMgkoJFQwLCRUMCxAWFswXSk7CisJIGZvcmVhY2ggKEBpbnNucykgeyBldmFsOyB9CSMgcmVtYWluaW5nIGluc3RydWN0aW9ucworCSZ2c3QxXzMyCSgieyRUMH0iLCJbJFhmZXIsOjEyOF0hIik7CisKKwlwdXNoKEBYLHNoaWZ0KEBYKSk7CQkjICJyb3RhdGUiIFhbXQorfQorCitzdWIgYm9keV8wMF8xNSAoKSB7CisJKAorCScoJGEsJGIsJGMsJGQsJGUsJGYsJGcsJGgpPUBWOycuCisJJyZhZGQJKCRoLCRoLCR0MSknLAkJCSMgaCs9WFtpXStLW2ldCisJJyZlb3IJKCR0MSwkZiwkZyknLAorCScmZW9yCSgkdDAsJGUsJGUsInJvciMiLigkU2lnbWExWzFdLSRTaWdtYTFbMF0pKScsCisJJyZhZGQJKCRhLCRhLCR0MiknLAkJCSMgaCs9TWFqKGEsYixjKSBmcm9tIHRoZSBwYXN0CisJJyZhbmQJKCR0MSwkdDEsJGUpJywKKwknJmVvcgkoJHQyLCR0MCwkZSwicm9yIyIuKCRTaWdtYTFbMl0tJFNpZ21hMVswXSkpJywJIyBTaWdtYTEoZSkKKwknJmVvcgkoJHQwLCRhLCRhLCJyb3IjIi4oJFNpZ21hMFsxXS0kU2lnbWEwWzBdKSknLAorCScmZW9yCSgkdDEsJHQxLCRnKScsCQkJIyBDaChlLGYsZykKKwknJmFkZAkoJGgsJGgsJHQyLCJyb3IjJFNpZ21hMVswXSIpJywJIyBoKz1TaWdtYTEoZSkKKwknJmVvcgkoJHQyLCRhLCRiKScsCQkJIyBhXmIsIGJeYyBpbiBuZXh0IHJvdW5kCisJJyZlb3IJKCR0MCwkdDAsJGEsInJvciMiLigkU2lnbWEwWzJdLSRTaWdtYTBbMF0pKScsCSMgU2lnbWEwKGEpCisJJyZhZGQJKCRoLCRoLCR0MSknLAkJCSMgaCs9Q2goZSxmLGcpCisJJyZsZHIJKCR0MSxzcHJpbnRmICJbc3AsIyVkXSIsNCooKCRqKzEpJjE1KSkJaWYgKCgkaiYxNSkhPTE1KTsnLgorCScmbGRyCSgkdDEsIlskS3RibF0iKQkJCQlpZiAoJGo9PTE1KTsnLgorCScmbGRyCSgkdDEsIltzcCwjNjRdIikJCQlpZiAoJGo9PTMxKScsCisJJyZhbmQJKCR0MywkdDMsJHQyKScsCQkJIyAoYl5jKSY9KGFeYikKKwknJmFkZAkoJGQsJGQsJGgpJywJCQkjIGQrPWgKKwknJmFkZAkoJGgsJGgsJHQwLCJyb3IjJFNpZ21hMFswXSIpOycuCSMgaCs9U2lnbWEwKGEpCisJJyZlb3IJKCR0MywkdDMsJGIpJywJCQkjIE1haihhLGIsYykKKwknJGorKzsJdW5zaGlmdChAVixwb3AoQFYpKTsgKCR0MiwkdDMpPSgkdDMsJHQyKTsnCisJKQorfQorCiskY29kZS49PDxfX187CisjaWYgX19BUk1fQVJDSF9fPj03CisuZnB1CW5lb24KKworLnR5cGUJc2hhMjU2X2Jsb2NrX2RhdGFfb3JkZXJfbmVvbiwlZnVuY3Rpb24KKy5hbGlnbgk0CitzaGEyNTZfYmxvY2tfZGF0YV9vcmRlcl9uZW9uOgorLkxORU9OOgorCXN0bWRiCXNwISx7cjQtcjEyLGxyfQorCisJbW92CSR0MixzcAorCXN1YglzcCxzcCwjMTYqNCsxNgkJQCBhbGxvY2EKKwlzdWIJJEt0YmwscjMsIzI1NiszMglAIEsyNTYKKwliaWMJc3Asc3AsIzE1CQlAIGFsaWduIGZvciAxMjgtYml0IHN0b3JlcworCisJdmxkMS44CQl7QFhbMF19LFskaW5wXSEKKwl2bGQxLjgJCXtAWFsxXX0sWyRpbnBdIQorCXZsZDEuOAkJe0BYWzJdfSxbJGlucF0hCisJdmxkMS44CQl7QFhbM119LFskaW5wXSEKKwl2bGQxLjMyCQl7JFQwfSxbJEt0YmwsOjEyOF0hCisJdmxkMS4zMgkJeyRUMX0sWyRLdGJsLDoxMjhdIQorCXZsZDEuMzIJCXskVDJ9LFskS3RibCw6MTI4XSEKKwl2bGQxLjMyCQl7JFQzfSxbJEt0YmwsOjEyOF0hCisJdnJldjMyLjgJQFhbMF0sQFhbMF0JCUAgeWVzLCBldmVuIG9uCisJc3RyCQkkY3R4LFtzcCwjNjRdCisJdnJldjMyLjgJQFhbMV0sQFhbMV0JCUAgYmlnLWVuZGlhbgorCXN0cgkJJGlucCxbc3AsIzY4XQorCW1vdgkJJFhmZXIsc3AKKwl2cmV2MzIuOAlAWFsyXSxAWFsyXQorCXN0cgkJJGxlbixbc3AsIzcyXQorCXZyZXYzMi44CUBYWzNdLEBYWzNdCisJc3RyCQkkdDIsW3NwLCM3Nl0JCUAgc2F2ZSBvcmlnaW5hbCBzcAorCXZhZGQuaTMyCSRUMCwkVDAsQFhbMF0KKwl2YWRkLmkzMgkkVDEsJFQxLEBYWzFdCisJdnN0MS4zMgkJeyRUMH0sWyRYZmVyLDoxMjhdIQorCXZhZGQuaTMyCSRUMiwkVDIsQFhbMl0KKwl2c3QxLjMyCQl7JFQxfSxbJFhmZXIsOjEyOF0hCisJdmFkZC5pMzIJJFQzLCRUMyxAWFszXQorCXZzdDEuMzIJCXskVDJ9LFskWGZlciw6MTI4XSEKKwl2c3QxLjMyCQl7JFQzfSxbJFhmZXIsOjEyOF0hCisKKwlsZG1pYQkJJGN0eCx7JEEtJEh9CisJc3ViCQkkWGZlciwkWGZlciwjNjQKKwlsZHIJCSR0MSxbc3AsIzBdCisJZW9yCQkkdDIsJHQyLCR0MgorCWVvcgkJJHQzLCRCLCRDCisJYgkJLkxfMDBfNDgKKworLmFsaWduCTQKKy5MXzAwXzQ4OgorX19fCisJJlh1cGRhdGUoXCZib2R5XzAwXzE1KTsKKwkmWHVwZGF0ZShcJmJvZHlfMDBfMTUpOworCSZYdXBkYXRlKFwmYm9keV8wMF8xNSk7CisJJlh1cGRhdGUoXCZib2R5XzAwXzE1KTsKKyRjb2RlLj08PF9fXzsKKwl0ZXEJJHQxLCMwCQkJCUAgY2hlY2sgZm9yIEsyNTYgdGVybWluYXRvcgorCWxkcgkkdDEsW3NwLCMwXQorCXN1YgkkWGZlciwkWGZlciwjNjQKKwlibmUJLkxfMDBfNDgKKworCWxkcgkJJGlucCxbc3AsIzY4XQorCWxkcgkJJHQwLFtzcCwjNzJdCisJc3ViCQkkS3RibCwkS3RibCwjMjU2CUAgcmV3aW5kICRLdGJsCisJdGVxCQkkaW5wLCR0MAorCXN1YmVxCQkkaW5wLCRpbnAsIzY0CQlAIGF2b2lkIFNFR1YKKwl2bGQxLjgJCXtAWFswXX0sWyRpbnBdIQkJQCBsb2FkIG5leHQgaW5wdXQgYmxvY2sKKwl2bGQxLjgJCXtAWFsxXX0sWyRpbnBdIQorCXZsZDEuOAkJe0BYWzJdfSxbJGlucF0hCisJdmxkMS44CQl7QFhbM119LFskaW5wXSEKKwlzdHJuZQkJJGlucCxbc3AsIzY4XQorCW1vdgkJJFhmZXIsc3AKK19fXworCSZYcHJlbG9hZChcJmJvZHlfMDBfMTUpOworCSZYcHJlbG9hZChcJmJvZHlfMDBfMTUpOworCSZYcHJlbG9hZChcJmJvZHlfMDBfMTUpOworCSZYcHJlbG9hZChcJmJvZHlfMDBfMTUpOworJGNvZGUuPTw8X19fOworCWxkcgkkdDAsWyR0MSwjMF0KKwlhZGQJJEEsJEEsJHQyCQkJQCBoKz1NYWooYSxiLGMpIGZyb20gdGhlIHBhc3QKKwlsZHIJJHQyLFskdDEsIzRdCisJbGRyCSR0MyxbJHQxLCM4XQorCWxkcgkkdDQsWyR0MSwjMTJdCisJYWRkCSRBLCRBLCR0MAkJCUAgYWNjdW11bGF0ZQorCWxkcgkkdDAsWyR0MSwjMTZdCisJYWRkCSRCLCRCLCR0MgorCWxkcgkkdDIsWyR0MSwjMjBdCisJYWRkCSRDLCRDLCR0MworCWxkcgkkdDMsWyR0MSwjMjRdCisJYWRkCSRELCRELCR0NAorCWxkcgkkdDQsWyR0MSwjMjhdCisJYWRkCSRFLCRFLCR0MAorCXN0cgkkQSxbJHQxXSwjNAorCWFkZAkkRiwkRiwkdDIKKwlzdHIJJEIsWyR0MV0sIzQKKwlhZGQJJEcsJEcsJHQzCisJc3RyCSRDLFskdDFdLCM0CisJYWRkCSRILCRILCR0NAorCXN0cgkkRCxbJHQxXSwjNAorCXN0bWlhCSR0MSx7JEUtJEh9CisKKwltb3ZuZQkkWGZlcixzcAorCWxkcm5lCSR0MSxbc3AsIzBdCisJZW9ybmUJJHQyLCR0MiwkdDIKKwlsZHJlcQlzcCxbc3AsIzc2XQkJCUAgcmVzdG9yZSBvcmlnaW5hbCBzcAorCWVvcm5lCSR0MywkQiwkQworCWJuZQkuTF8wMF80OAorCisJbGRtaWEJc3AhLHtyNC1yMTIscGN9Cisuc2l6ZQlzaGEyNTZfYmxvY2tfZGF0YV9vcmRlcl9uZW9uLC4tc2hhMjU2X2Jsb2NrX2RhdGFfb3JkZXJfbmVvbgorI2VuZGlmCitfX18KK319fQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBBUk12OCBzdHVmZgorIwore3t7CitteSAoJEFCQ0QsJEVGR0gsJGFiY2QpPW1hcCgicSRfIiwoMC4uMikpOworbXkgQE1TRz1tYXAoInEkXyIsKDguLjExKSk7CitteSAoJFcwLCRXMSwkQUJDRF9TQVZFLCRFRkdIX1NBVkUpPW1hcCgicSRfIiwoMTIuLjE1KSk7CitteSAkS3RibD0icjMiOworCiskY29kZS49PDxfX187CisjaWYgX19BUk1fQVJDSF9fPj03CisudHlwZQlzaGEyNTZfYmxvY2tfZGF0YV9vcmRlcl9hcm12OCwlZnVuY3Rpb24KKy5hbGlnbgk1CitzaGEyNTZfYmxvY2tfZGF0YV9vcmRlcl9hcm12ODoKKy5MQVJNdjg6CisJdmxkMS4zMgl7JEFCQ0QsJEVGR0h9LFskY3R4XQorCXN1YgkkS3RibCxyMywjc2hhMjU2X2Jsb2NrX2RhdGFfb3JkZXItSzI1NgorCisuTG9vcF92ODoKKwl2bGQxLjgJCXtATVNHWzBdLUBNU0dbMV19LFskaW5wXSEKKwl2bGQxLjgJCXtATVNHWzJdLUBNU0dbM119LFskaW5wXSEKKwl2bGQxLjMyCQl7JFcwfSxbJEt0YmxdIQorCXZyZXYzMi44CUBNU0dbMF0sQE1TR1swXQorCXZyZXYzMi44CUBNU0dbMV0sQE1TR1sxXQorCXZyZXYzMi44CUBNU0dbMl0sQE1TR1syXQorCXZyZXYzMi44CUBNU0dbM10sQE1TR1szXQorCXZtb3YJCSRBQkNEX1NBVkUsJEFCQ0QJQCBvZmZsb2FkCisJdm1vdgkJJEVGR0hfU0FWRSwkRUZHSAorCXRlcQkJJGlucCwkbGVuCitfX18KK2ZvcigkaT0wOyRpPDEyOyRpKyspIHsKKyRjb2RlLj08PF9fXzsKKwl2bGQxLjMyCQl7JFcxfSxbJEt0YmxdIQorCXZhZGQuaTMyCSRXMCwkVzAsQE1TR1swXQorCXNoYTI1NnN1MAlATVNHWzBdLEBNU0dbMV0KKwl2bW92CQkkYWJjZCwkQUJDRAorCXNoYTI1NmgJCSRBQkNELCRFRkdILCRXMAorCXNoYTI1NmgyCSRFRkdILCRhYmNkLCRXMAorCXNoYTI1NnN1MQlATVNHWzBdLEBNU0dbMl0sQE1TR1szXQorX19fCisJKCRXMCwkVzEpPSgkVzEsJFcwKTsJcHVzaChATVNHLHNoaWZ0KEBNU0cpKTsKK30KKyRjb2RlLj08PF9fXzsKKwl2bGQxLjMyCQl7JFcxfSxbJEt0YmxdIQorCXZhZGQuaTMyCSRXMCwkVzAsQE1TR1swXQorCXZtb3YJCSRhYmNkLCRBQkNECisJc2hhMjU2aAkJJEFCQ0QsJEVGR0gsJFcwCisJc2hhMjU2aDIJJEVGR0gsJGFiY2QsJFcwCisKKwl2bGQxLjMyCQl7JFcwfSxbJEt0YmxdIQorCXZhZGQuaTMyCSRXMSwkVzEsQE1TR1sxXQorCXZtb3YJCSRhYmNkLCRBQkNECisJc2hhMjU2aAkJJEFCQ0QsJEVGR0gsJFcxCisJc2hhMjU2aDIJJEVGR0gsJGFiY2QsJFcxCisKKwl2bGQxLjMyCQl7JFcxfSxbJEt0YmxdCisJdmFkZC5pMzIJJFcwLCRXMCxATVNHWzJdCisJc3ViCQkkS3RibCwkS3RibCwjMjU2LTE2CUAgcmV3aW5kCisJdm1vdgkJJGFiY2QsJEFCQ0QKKwlzaGEyNTZoCQkkQUJDRCwkRUZHSCwkVzAKKwlzaGEyNTZoMgkkRUZHSCwkYWJjZCwkVzAKKworCXZhZGQuaTMyCSRXMSwkVzEsQE1TR1szXQorCXZtb3YJCSRhYmNkLCRBQkNECisJc2hhMjU2aAkJJEFCQ0QsJEVGR0gsJFcxCisJc2hhMjU2aDIJJEVGR0gsJGFiY2QsJFcxCisKKwl2YWRkLmkzMgkkQUJDRCwkQUJDRCwkQUJDRF9TQVZFCisJdmFkZC5pMzIJJEVGR0gsJEVGR0gsJEVGR0hfU0FWRQorCWJuZQkJLkxvb3BfdjgKKworCXZzdDEuMzIJCXskQUJDRCwkRUZHSH0sWyRjdHhdCisKKwlyZXQJCUAgYnggbHIKKy5zaXplCXNoYTI1Nl9ibG9ja19kYXRhX29yZGVyX2FybXY4LC4tc2hhMjU2X2Jsb2NrX2RhdGFfb3JkZXJfYXJtdjgKKyNlbmRpZgorX19fCit9fX0KKyRjb2RlLj08PF9fXzsKKy5hc2NpeiAgIlNIQTI1NiBibG9jayB0cmFuc2Zvcm0gZm9yIEFSTXY0L05FT04vQVJNdjgsIENSWVBUT0dBTVMgYnkgPGFwcHJvXEBvcGVuc3NsLm9yZz4iCiAuYWxpZ24JMgorLmNvbW0gICBPUEVOU1NMX2FybWNhcF9QLDQsNAogX19fCiAKLSRjb2RlID1+IHMvXGAoW15cYF0qKVxgL2V2YWwgJDEvZ2VtOwotJGNvZGUgPX4gcy9cYmJ4XHMrbHJcYi8ud29yZFx0MHhlMTJmZmYxZS9nbTsJIyBtYWtlIGl0IHBvc3NpYmxlIHRvIGNvbXBpbGUgd2l0aCAtbWFyY2g9YXJtdjQKLXByaW50ICRjb2RlOworeyAgIG15ICAlb3Bjb2RlID0gKAorCSJzaGEyNTZoIgk9PiAweGYzMDAwYzQwLAkic2hhMjU2aDIiCT0+IDB4ZjMxMDBjNDAsCisJInNoYTI1NnN1MCIJPT4gMHhmM2JhMDNjMCwJInNoYTI1NnN1MSIJPT4gMHhmMzIwMGM0MAkpOworCisgICAgc3ViIHVuc2hhMjU2IHsKKwlteSAoJG1uZW1vbmljLCRhcmcpPUBfOworCisJaWYgKCRhcmcgPX4gbS9xKFswLTldKykoPzosXHMqcShbMC05XSspKT8sXHMqcShbMC05XSspL28pIHsKKwkgICAgbXkgJHdvcmQgPSAkb3Bjb2RleyRtbmVtb25pY318KCgkMSY3KTw8MTMpfCgoJDEmOCk8PDE5KQorCQkJCQkgfCgoJDImNyk8PDE3KXwoKCQyJjgpPDw0KQorCQkJCQkgfCgoJDMmNyk8PDEpIHwoKCQzJjgpPDwyKTsKKwkgICAgIyBzaW5jZSBBUk12NyBpbnN0cnVjdGlvbnMgYXJlIGFsd2F5cyBlbmNvZGVkIGxpdHRsZS1lbmRpYW4uCisJICAgICMgY29ycmVjdCBzb2x1dGlvbiBpcyB0byB1c2UgLmluc3QgZGlyZWN0aXZlLCBidXQgb2xkZXIKKwkgICAgIyBhc3NlbWJsZXJzIGRvbid0IGltcGxlbWVudCBpdDotKAorCSAgICBzcHJpbnRmICIuYnl0ZVx0MHglMDJ4LDB4JTAyeCwweCUwMngsMHglMDJ4XHRAICVzICVzIiwKKwkJCSR3b3JkJjB4ZmYsKCR3b3JkPj44KSYweGZmLAorCQkJKCR3b3JkPj4xNikmMHhmZiwoJHdvcmQ+PjI0KSYweGZmLAorCQkJJG1uZW1vbmljLCRhcmc7CisJfQorICAgIH0KK30KKworZm9yZWFjaCAoc3BsaXQoJC8sJGNvZGUpKSB7CisKKwlzL1xgKFteXGBdKilcYC9ldmFsICQxL2dlbzsKKworCXMvXGIoc2hhMjU2XHcrKVxzKyhxLiopL3Vuc2hhMjU2KCQxLCQyKS9nZW87CisKKwlzL1xicmV0XGIvYngJbHIvZ28JCW9yCisJcy9cYmJ4XHMrbHJcYi8ud29yZFx0MHhlMTJmZmYxZS9nbzsJIyBtYWtlIGl0IHBvc3NpYmxlIHRvIGNvbXBpbGUgd2l0aCAtbWFyY2g9YXJtdjQKKworCXByaW50ICRfLCJcbiI7Cit9CisKIGNsb3NlIFNURE9VVDsgIyBlbmZvcmNlIGZsdXNoCmRpZmYgLS1naXQgYS9jcnlwdG8vc2hhL2FzbS9zaGEyNTYtYXJtdjguUyBiL2NyeXB0by9zaGEvYXNtL3NoYTI1Ni1hcm12OC5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkNDNiMWYKLS0tIC9kZXYvbnVsbAorKysgYi9jcnlwdG8vc2hhL2FzbS9zaGEyNTYtYXJtdjguUwpAQCAtMCwwICsxLDExNDEgQEAKKyNpbmNsdWRlICJhcm1fYXJjaC5oIgorCisudGV4dAorCisuZ2xvYmwJc2hhMjU2X2Jsb2NrX2RhdGFfb3JkZXIKKy50eXBlCXNoYTI1Nl9ibG9ja19kYXRhX29yZGVyLCVmdW5jdGlvbgorLmFsaWduCTYKK3NoYTI1Nl9ibG9ja19kYXRhX29yZGVyOgorCWxkcgl4MTYsLkxPUEVOU1NMX2FybWNhcF9QCisJYWRyCXgxNywuTE9QRU5TU0xfYXJtY2FwX1AKKwlhZGQJeDE2LHgxNix4MTcKKwlsZHIJdzE2LFt4MTZdCisJdHN0CXcxNiwjQVJNVjhfU0hBMjU2CisJYi5uZQkuTHY4X2VudHJ5CisJc3RwCXgyOSx4MzAsW3NwLCMtMTI4XSEKKwlhZGQJeDI5LHNwLCMwCisKKwlzdHAJeDE5LHgyMCxbc3AsIzE2XQorCXN0cAl4MjEseDIyLFtzcCwjMzJdCisJc3RwCXgyMyx4MjQsW3NwLCM0OF0KKwlzdHAJeDI1LHgyNixbc3AsIzY0XQorCXN0cAl4MjcseDI4LFtzcCwjODBdCisJc3ViCXNwLHNwLCM0KjQKKworCWxkcAl3MjAsdzIxLFt4MF0JCQkJLy8gbG9hZCBjb250ZXh0CisJbGRwCXcyMix3MjMsW3gwLCMyKjRdCisJbGRwCXcyNCx3MjUsW3gwLCM0KjRdCisJYWRkCXgyLHgxLHgyLGxzbCM2CS8vIGVuZCBvZiBpbnB1dAorCWxkcAl3MjYsdzI3LFt4MCwjNio0XQorCWFkcgl4MzAsSzI1NgorCXN0cAl4MCx4MixbeDI5LCM5Nl0KKworLkxvb3A6CisJbGRwCXczLHc0LFt4MV0sIzIqNAorCWxkcgl3MTksW3gzMF0sIzQJCQkvLyAqSysrCisJZW9yCXcyOCx3MjEsdzIyCQkJCS8vIG1hZ2ljIHNlZWQKKwlzdHIJeDEsW3gyOSwjMTEyXQorI2lmbmRlZglfX0FSTUVCX18KKwlyZXYJdzMsdzMJCQkvLyAwCisjZW5kaWYKKwlyb3IJdzE2LHcyNCwjNgorCWFkZAl3MjcsdzI3LHcxOQkJCS8vIGgrPUtbaV0KKwllb3IJdzYsdzI0LHcyNCxyb3IjMTQKKwlhbmQJdzE3LHcyNSx3MjQKKwliaWMJdzE5LHcyNix3MjQKKwlhZGQJdzI3LHcyNyx3MwkJCS8vIGgrPVhbaV0KKwlvcnIJdzE3LHcxNyx3MTkJCQkvLyBDaChlLGYsZykKKwllb3IJdzE5LHcyMCx3MjEJCQkvLyBhXmIsIGJeYyBpbiBuZXh0IHJvdW5kCisJZW9yCXcxNix3MTYsdzYscm9yIzExCS8vIFNpZ21hMShlKQorCXJvcgl3Nix3MjAsIzIKKwlhZGQJdzI3LHcyNyx3MTcJCQkvLyBoKz1DaChlLGYsZykKKwllb3IJdzE3LHcyMCx3MjAscm9yIzkKKwlhZGQJdzI3LHcyNyx3MTYJCQkvLyBoKz1TaWdtYTEoZSkKKwlhbmQJdzI4LHcyOCx3MTkJCQkvLyAoYl5jKSY9KGFeYikKKwlhZGQJdzIzLHcyMyx3MjcJCQkvLyBkKz1oCisJZW9yCXcyOCx3MjgsdzIxCQkJLy8gTWFqKGEsYixjKQorCWVvcgl3MTcsdzYsdzE3LHJvciMxMwkvLyBTaWdtYTAoYSkKKwlhZGQJdzI3LHcyNyx3MjgJCQkvLyBoKz1NYWooYSxiLGMpCisJbGRyCXcyOCxbeDMwXSwjNAkJLy8gKksrKywgdzE5IGluIG5leHQgcm91bmQKKwkvL2FkZAl3MjcsdzI3LHcxNwkJCS8vIGgrPVNpZ21hMChhKQorI2lmbmRlZglfX0FSTUVCX18KKwlyZXYJdzQsdzQJCQkvLyAxCisjZW5kaWYKKwlsZHAJdzUsdzYsW3gxXSwjMio0CisJYWRkCXcyNyx3MjcsdzE3CQkJLy8gaCs9U2lnbWEwKGEpCisJcm9yCXcxNix3MjMsIzYKKwlhZGQJdzI2LHcyNix3MjgJCQkvLyBoKz1LW2ldCisJZW9yCXc3LHcyMyx3MjMscm9yIzE0CisJYW5kCXcxNyx3MjQsdzIzCisJYmljCXcyOCx3MjUsdzIzCisJYWRkCXcyNix3MjYsdzQJCQkvLyBoKz1YW2ldCisJb3JyCXcxNyx3MTcsdzI4CQkJLy8gQ2goZSxmLGcpCisJZW9yCXcyOCx3MjcsdzIwCQkJLy8gYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorCWVvcgl3MTYsdzE2LHc3LHJvciMxMQkvLyBTaWdtYTEoZSkKKwlyb3IJdzcsdzI3LCMyCisJYWRkCXcyNix3MjYsdzE3CQkJLy8gaCs9Q2goZSxmLGcpCisJZW9yCXcxNyx3MjcsdzI3LHJvciM5CisJYWRkCXcyNix3MjYsdzE2CQkJLy8gaCs9U2lnbWExKGUpCisJYW5kCXcxOSx3MTksdzI4CQkJLy8gKGJeYykmPShhXmIpCisJYWRkCXcyMix3MjIsdzI2CQkJLy8gZCs9aAorCWVvcgl3MTksdzE5LHcyMAkJCS8vIE1haihhLGIsYykKKwllb3IJdzE3LHc3LHcxNyxyb3IjMTMJLy8gU2lnbWEwKGEpCisJYWRkCXcyNix3MjYsdzE5CQkJLy8gaCs9TWFqKGEsYixjKQorCWxkcgl3MTksW3gzMF0sIzQJCS8vICpLKyssIHcyOCBpbiBuZXh0IHJvdW5kCisJLy9hZGQJdzI2LHcyNix3MTcJCQkvLyBoKz1TaWdtYTAoYSkKKyNpZm5kZWYJX19BUk1FQl9fCisJcmV2CXc1LHc1CQkJLy8gMgorI2VuZGlmCisJYWRkCXcyNix3MjYsdzE3CQkJLy8gaCs9U2lnbWEwKGEpCisJcm9yCXcxNix3MjIsIzYKKwlhZGQJdzI1LHcyNSx3MTkJCQkvLyBoKz1LW2ldCisJZW9yCXc4LHcyMix3MjIscm9yIzE0CisJYW5kCXcxNyx3MjMsdzIyCisJYmljCXcxOSx3MjQsdzIyCisJYWRkCXcyNSx3MjUsdzUJCQkvLyBoKz1YW2ldCisJb3JyCXcxNyx3MTcsdzE5CQkJLy8gQ2goZSxmLGcpCisJZW9yCXcxOSx3MjYsdzI3CQkJLy8gYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorCWVvcgl3MTYsdzE2LHc4LHJvciMxMQkvLyBTaWdtYTEoZSkKKwlyb3IJdzgsdzI2LCMyCisJYWRkCXcyNSx3MjUsdzE3CQkJLy8gaCs9Q2goZSxmLGcpCisJZW9yCXcxNyx3MjYsdzI2LHJvciM5CisJYWRkCXcyNSx3MjUsdzE2CQkJLy8gaCs9U2lnbWExKGUpCisJYW5kCXcyOCx3MjgsdzE5CQkJLy8gKGJeYykmPShhXmIpCisJYWRkCXcyMSx3MjEsdzI1CQkJLy8gZCs9aAorCWVvcgl3MjgsdzI4LHcyNwkJCS8vIE1haihhLGIsYykKKwllb3IJdzE3LHc4LHcxNyxyb3IjMTMJLy8gU2lnbWEwKGEpCisJYWRkCXcyNSx3MjUsdzI4CQkJLy8gaCs9TWFqKGEsYixjKQorCWxkcgl3MjgsW3gzMF0sIzQJCS8vICpLKyssIHcxOSBpbiBuZXh0IHJvdW5kCisJLy9hZGQJdzI1LHcyNSx3MTcJCQkvLyBoKz1TaWdtYTAoYSkKKyNpZm5kZWYJX19BUk1FQl9fCisJcmV2CXc2LHc2CQkJLy8gMworI2VuZGlmCisJbGRwCXc3LHc4LFt4MV0sIzIqNAorCWFkZAl3MjUsdzI1LHcxNwkJCS8vIGgrPVNpZ21hMChhKQorCXJvcgl3MTYsdzIxLCM2CisJYWRkCXcyNCx3MjQsdzI4CQkJLy8gaCs9S1tpXQorCWVvcgl3OSx3MjEsdzIxLHJvciMxNAorCWFuZAl3MTcsdzIyLHcyMQorCWJpYwl3MjgsdzIzLHcyMQorCWFkZAl3MjQsdzI0LHc2CQkJLy8gaCs9WFtpXQorCW9ycgl3MTcsdzE3LHcyOAkJCS8vIENoKGUsZixnKQorCWVvcgl3MjgsdzI1LHcyNgkJCS8vIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKwllb3IJdzE2LHcxNix3OSxyb3IjMTEJLy8gU2lnbWExKGUpCisJcm9yCXc5LHcyNSwjMgorCWFkZAl3MjQsdzI0LHcxNwkJCS8vIGgrPUNoKGUsZixnKQorCWVvcgl3MTcsdzI1LHcyNSxyb3IjOQorCWFkZAl3MjQsdzI0LHcxNgkJCS8vIGgrPVNpZ21hMShlKQorCWFuZAl3MTksdzE5LHcyOAkJCS8vIChiXmMpJj0oYV5iKQorCWFkZAl3MjAsdzIwLHcyNAkJCS8vIGQrPWgKKwllb3IJdzE5LHcxOSx3MjYJCQkvLyBNYWooYSxiLGMpCisJZW9yCXcxNyx3OSx3MTcscm9yIzEzCS8vIFNpZ21hMChhKQorCWFkZAl3MjQsdzI0LHcxOQkJCS8vIGgrPU1haihhLGIsYykKKwlsZHIJdzE5LFt4MzBdLCM0CQkvLyAqSysrLCB3MjggaW4gbmV4dCByb3VuZAorCS8vYWRkCXcyNCx3MjQsdzE3CQkJLy8gaCs9U2lnbWEwKGEpCisjaWZuZGVmCV9fQVJNRUJfXworCXJldgl3Nyx3NwkJCS8vIDQKKyNlbmRpZgorCWFkZAl3MjQsdzI0LHcxNwkJCS8vIGgrPVNpZ21hMChhKQorCXJvcgl3MTYsdzIwLCM2CisJYWRkCXcyMyx3MjMsdzE5CQkJLy8gaCs9S1tpXQorCWVvcgl3MTAsdzIwLHcyMCxyb3IjMTQKKwlhbmQJdzE3LHcyMSx3MjAKKwliaWMJdzE5LHcyMix3MjAKKwlhZGQJdzIzLHcyMyx3NwkJCS8vIGgrPVhbaV0KKwlvcnIJdzE3LHcxNyx3MTkJCQkvLyBDaChlLGYsZykKKwllb3IJdzE5LHcyNCx3MjUJCQkvLyBhXmIsIGJeYyBpbiBuZXh0IHJvdW5kCisJZW9yCXcxNix3MTYsdzEwLHJvciMxMQkvLyBTaWdtYTEoZSkKKwlyb3IJdzEwLHcyNCwjMgorCWFkZAl3MjMsdzIzLHcxNwkJCS8vIGgrPUNoKGUsZixnKQorCWVvcgl3MTcsdzI0LHcyNCxyb3IjOQorCWFkZAl3MjMsdzIzLHcxNgkJCS8vIGgrPVNpZ21hMShlKQorCWFuZAl3MjgsdzI4LHcxOQkJCS8vIChiXmMpJj0oYV5iKQorCWFkZAl3MjcsdzI3LHcyMwkJCS8vIGQrPWgKKwllb3IJdzI4LHcyOCx3MjUJCQkvLyBNYWooYSxiLGMpCisJZW9yCXcxNyx3MTAsdzE3LHJvciMxMwkvLyBTaWdtYTAoYSkKKwlhZGQJdzIzLHcyMyx3MjgJCQkvLyBoKz1NYWooYSxiLGMpCisJbGRyCXcyOCxbeDMwXSwjNAkJLy8gKksrKywgdzE5IGluIG5leHQgcm91bmQKKwkvL2FkZAl3MjMsdzIzLHcxNwkJCS8vIGgrPVNpZ21hMChhKQorI2lmbmRlZglfX0FSTUVCX18KKwlyZXYJdzgsdzgJCQkvLyA1CisjZW5kaWYKKwlsZHAJdzksdzEwLFt4MV0sIzIqNAorCWFkZAl3MjMsdzIzLHcxNwkJCS8vIGgrPVNpZ21hMChhKQorCXJvcgl3MTYsdzI3LCM2CisJYWRkCXcyMix3MjIsdzI4CQkJLy8gaCs9S1tpXQorCWVvcgl3MTEsdzI3LHcyNyxyb3IjMTQKKwlhbmQJdzE3LHcyMCx3MjcKKwliaWMJdzI4LHcyMSx3MjcKKwlhZGQJdzIyLHcyMix3OAkJCS8vIGgrPVhbaV0KKwlvcnIJdzE3LHcxNyx3MjgJCQkvLyBDaChlLGYsZykKKwllb3IJdzI4LHcyMyx3MjQJCQkvLyBhXmIsIGJeYyBpbiBuZXh0IHJvdW5kCisJZW9yCXcxNix3MTYsdzExLHJvciMxMQkvLyBTaWdtYTEoZSkKKwlyb3IJdzExLHcyMywjMgorCWFkZAl3MjIsdzIyLHcxNwkJCS8vIGgrPUNoKGUsZixnKQorCWVvcgl3MTcsdzIzLHcyMyxyb3IjOQorCWFkZAl3MjIsdzIyLHcxNgkJCS8vIGgrPVNpZ21hMShlKQorCWFuZAl3MTksdzE5LHcyOAkJCS8vIChiXmMpJj0oYV5iKQorCWFkZAl3MjYsdzI2LHcyMgkJCS8vIGQrPWgKKwllb3IJdzE5LHcxOSx3MjQJCQkvLyBNYWooYSxiLGMpCisJZW9yCXcxNyx3MTEsdzE3LHJvciMxMwkvLyBTaWdtYTAoYSkKKwlhZGQJdzIyLHcyMix3MTkJCQkvLyBoKz1NYWooYSxiLGMpCisJbGRyCXcxOSxbeDMwXSwjNAkJLy8gKksrKywgdzI4IGluIG5leHQgcm91bmQKKwkvL2FkZAl3MjIsdzIyLHcxNwkJCS8vIGgrPVNpZ21hMChhKQorI2lmbmRlZglfX0FSTUVCX18KKwlyZXYJdzksdzkJCQkvLyA2CisjZW5kaWYKKwlhZGQJdzIyLHcyMix3MTcJCQkvLyBoKz1TaWdtYTAoYSkKKwlyb3IJdzE2LHcyNiwjNgorCWFkZAl3MjEsdzIxLHcxOQkJCS8vIGgrPUtbaV0KKwllb3IJdzEyLHcyNix3MjYscm9yIzE0CisJYW5kCXcxNyx3MjcsdzI2CisJYmljCXcxOSx3MjAsdzI2CisJYWRkCXcyMSx3MjEsdzkJCQkvLyBoKz1YW2ldCisJb3JyCXcxNyx3MTcsdzE5CQkJLy8gQ2goZSxmLGcpCisJZW9yCXcxOSx3MjIsdzIzCQkJLy8gYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorCWVvcgl3MTYsdzE2LHcxMixyb3IjMTEJLy8gU2lnbWExKGUpCisJcm9yCXcxMix3MjIsIzIKKwlhZGQJdzIxLHcyMSx3MTcJCQkvLyBoKz1DaChlLGYsZykKKwllb3IJdzE3LHcyMix3MjIscm9yIzkKKwlhZGQJdzIxLHcyMSx3MTYJCQkvLyBoKz1TaWdtYTEoZSkKKwlhbmQJdzI4LHcyOCx3MTkJCQkvLyAoYl5jKSY9KGFeYikKKwlhZGQJdzI1LHcyNSx3MjEJCQkvLyBkKz1oCisJZW9yCXcyOCx3MjgsdzIzCQkJLy8gTWFqKGEsYixjKQorCWVvcgl3MTcsdzEyLHcxNyxyb3IjMTMJLy8gU2lnbWEwKGEpCisJYWRkCXcyMSx3MjEsdzI4CQkJLy8gaCs9TWFqKGEsYixjKQorCWxkcgl3MjgsW3gzMF0sIzQJCS8vICpLKyssIHcxOSBpbiBuZXh0IHJvdW5kCisJLy9hZGQJdzIxLHcyMSx3MTcJCQkvLyBoKz1TaWdtYTAoYSkKKyNpZm5kZWYJX19BUk1FQl9fCisJcmV2CXcxMCx3MTAJCQkvLyA3CisjZW5kaWYKKwlsZHAJdzExLHcxMixbeDFdLCMyKjQKKwlhZGQJdzIxLHcyMSx3MTcJCQkvLyBoKz1TaWdtYTAoYSkKKwlyb3IJdzE2LHcyNSwjNgorCWFkZAl3MjAsdzIwLHcyOAkJCS8vIGgrPUtbaV0KKwllb3IJdzEzLHcyNSx3MjUscm9yIzE0CisJYW5kCXcxNyx3MjYsdzI1CisJYmljCXcyOCx3MjcsdzI1CisJYWRkCXcyMCx3MjAsdzEwCQkJLy8gaCs9WFtpXQorCW9ycgl3MTcsdzE3LHcyOAkJCS8vIENoKGUsZixnKQorCWVvcgl3MjgsdzIxLHcyMgkJCS8vIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKwllb3IJdzE2LHcxNix3MTMscm9yIzExCS8vIFNpZ21hMShlKQorCXJvcgl3MTMsdzIxLCMyCisJYWRkCXcyMCx3MjAsdzE3CQkJLy8gaCs9Q2goZSxmLGcpCisJZW9yCXcxNyx3MjEsdzIxLHJvciM5CisJYWRkCXcyMCx3MjAsdzE2CQkJLy8gaCs9U2lnbWExKGUpCisJYW5kCXcxOSx3MTksdzI4CQkJLy8gKGJeYykmPShhXmIpCisJYWRkCXcyNCx3MjQsdzIwCQkJLy8gZCs9aAorCWVvcgl3MTksdzE5LHcyMgkJCS8vIE1haihhLGIsYykKKwllb3IJdzE3LHcxMyx3MTcscm9yIzEzCS8vIFNpZ21hMChhKQorCWFkZAl3MjAsdzIwLHcxOQkJCS8vIGgrPU1haihhLGIsYykKKwlsZHIJdzE5LFt4MzBdLCM0CQkvLyAqSysrLCB3MjggaW4gbmV4dCByb3VuZAorCS8vYWRkCXcyMCx3MjAsdzE3CQkJLy8gaCs9U2lnbWEwKGEpCisjaWZuZGVmCV9fQVJNRUJfXworCXJldgl3MTEsdzExCQkJLy8gOAorI2VuZGlmCisJYWRkCXcyMCx3MjAsdzE3CQkJLy8gaCs9U2lnbWEwKGEpCisJcm9yCXcxNix3MjQsIzYKKwlhZGQJdzI3LHcyNyx3MTkJCQkvLyBoKz1LW2ldCisJZW9yCXcxNCx3MjQsdzI0LHJvciMxNAorCWFuZAl3MTcsdzI1LHcyNAorCWJpYwl3MTksdzI2LHcyNAorCWFkZAl3MjcsdzI3LHcxMQkJCS8vIGgrPVhbaV0KKwlvcnIJdzE3LHcxNyx3MTkJCQkvLyBDaChlLGYsZykKKwllb3IJdzE5LHcyMCx3MjEJCQkvLyBhXmIsIGJeYyBpbiBuZXh0IHJvdW5kCisJZW9yCXcxNix3MTYsdzE0LHJvciMxMQkvLyBTaWdtYTEoZSkKKwlyb3IJdzE0LHcyMCwjMgorCWFkZAl3MjcsdzI3LHcxNwkJCS8vIGgrPUNoKGUsZixnKQorCWVvcgl3MTcsdzIwLHcyMCxyb3IjOQorCWFkZAl3MjcsdzI3LHcxNgkJCS8vIGgrPVNpZ21hMShlKQorCWFuZAl3MjgsdzI4LHcxOQkJCS8vIChiXmMpJj0oYV5iKQorCWFkZAl3MjMsdzIzLHcyNwkJCS8vIGQrPWgKKwllb3IJdzI4LHcyOCx3MjEJCQkvLyBNYWooYSxiLGMpCisJZW9yCXcxNyx3MTQsdzE3LHJvciMxMwkvLyBTaWdtYTAoYSkKKwlhZGQJdzI3LHcyNyx3MjgJCQkvLyBoKz1NYWooYSxiLGMpCisJbGRyCXcyOCxbeDMwXSwjNAkJLy8gKksrKywgdzE5IGluIG5leHQgcm91bmQKKwkvL2FkZAl3MjcsdzI3LHcxNwkJCS8vIGgrPVNpZ21hMChhKQorI2lmbmRlZglfX0FSTUVCX18KKwlyZXYJdzEyLHcxMgkJCS8vIDkKKyNlbmRpZgorCWxkcAl3MTMsdzE0LFt4MV0sIzIqNAorCWFkZAl3MjcsdzI3LHcxNwkJCS8vIGgrPVNpZ21hMChhKQorCXJvcgl3MTYsdzIzLCM2CisJYWRkCXcyNix3MjYsdzI4CQkJLy8gaCs9S1tpXQorCWVvcgl3MTUsdzIzLHcyMyxyb3IjMTQKKwlhbmQJdzE3LHcyNCx3MjMKKwliaWMJdzI4LHcyNSx3MjMKKwlhZGQJdzI2LHcyNix3MTIJCQkvLyBoKz1YW2ldCisJb3JyCXcxNyx3MTcsdzI4CQkJLy8gQ2goZSxmLGcpCisJZW9yCXcyOCx3MjcsdzIwCQkJLy8gYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorCWVvcgl3MTYsdzE2LHcxNSxyb3IjMTEJLy8gU2lnbWExKGUpCisJcm9yCXcxNSx3MjcsIzIKKwlhZGQJdzI2LHcyNix3MTcJCQkvLyBoKz1DaChlLGYsZykKKwllb3IJdzE3LHcyNyx3Mjcscm9yIzkKKwlhZGQJdzI2LHcyNix3MTYJCQkvLyBoKz1TaWdtYTEoZSkKKwlhbmQJdzE5LHcxOSx3MjgJCQkvLyAoYl5jKSY9KGFeYikKKwlhZGQJdzIyLHcyMix3MjYJCQkvLyBkKz1oCisJZW9yCXcxOSx3MTksdzIwCQkJLy8gTWFqKGEsYixjKQorCWVvcgl3MTcsdzE1LHcxNyxyb3IjMTMJLy8gU2lnbWEwKGEpCisJYWRkCXcyNix3MjYsdzE5CQkJLy8gaCs9TWFqKGEsYixjKQorCWxkcgl3MTksW3gzMF0sIzQJCS8vICpLKyssIHcyOCBpbiBuZXh0IHJvdW5kCisJLy9hZGQJdzI2LHcyNix3MTcJCQkvLyBoKz1TaWdtYTAoYSkKKyNpZm5kZWYJX19BUk1FQl9fCisJcmV2CXcxMyx3MTMJCQkvLyAxMAorI2VuZGlmCisJYWRkCXcyNix3MjYsdzE3CQkJLy8gaCs9U2lnbWEwKGEpCisJcm9yCXcxNix3MjIsIzYKKwlhZGQJdzI1LHcyNSx3MTkJCQkvLyBoKz1LW2ldCisJZW9yCXcwLHcyMix3MjIscm9yIzE0CisJYW5kCXcxNyx3MjMsdzIyCisJYmljCXcxOSx3MjQsdzIyCisJYWRkCXcyNSx3MjUsdzEzCQkJLy8gaCs9WFtpXQorCW9ycgl3MTcsdzE3LHcxOQkJCS8vIENoKGUsZixnKQorCWVvcgl3MTksdzI2LHcyNwkJCS8vIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKwllb3IJdzE2LHcxNix3MCxyb3IjMTEJLy8gU2lnbWExKGUpCisJcm9yCXcwLHcyNiwjMgorCWFkZAl3MjUsdzI1LHcxNwkJCS8vIGgrPUNoKGUsZixnKQorCWVvcgl3MTcsdzI2LHcyNixyb3IjOQorCWFkZAl3MjUsdzI1LHcxNgkJCS8vIGgrPVNpZ21hMShlKQorCWFuZAl3MjgsdzI4LHcxOQkJCS8vIChiXmMpJj0oYV5iKQorCWFkZAl3MjEsdzIxLHcyNQkJCS8vIGQrPWgKKwllb3IJdzI4LHcyOCx3MjcJCQkvLyBNYWooYSxiLGMpCisJZW9yCXcxNyx3MCx3MTcscm9yIzEzCS8vIFNpZ21hMChhKQorCWFkZAl3MjUsdzI1LHcyOAkJCS8vIGgrPU1haihhLGIsYykKKwlsZHIJdzI4LFt4MzBdLCM0CQkvLyAqSysrLCB3MTkgaW4gbmV4dCByb3VuZAorCS8vYWRkCXcyNSx3MjUsdzE3CQkJLy8gaCs9U2lnbWEwKGEpCisjaWZuZGVmCV9fQVJNRUJfXworCXJldgl3MTQsdzE0CQkJLy8gMTEKKyNlbmRpZgorCWxkcAl3MTUsdzAsW3gxXSwjMio0CisJYWRkCXcyNSx3MjUsdzE3CQkJLy8gaCs9U2lnbWEwKGEpCisJc3RyCXc2LFtzcCwjMTJdCisJcm9yCXcxNix3MjEsIzYKKwlhZGQJdzI0LHcyNCx3MjgJCQkvLyBoKz1LW2ldCisJZW9yCXc2LHcyMSx3MjEscm9yIzE0CisJYW5kCXcxNyx3MjIsdzIxCisJYmljCXcyOCx3MjMsdzIxCisJYWRkCXcyNCx3MjQsdzE0CQkJLy8gaCs9WFtpXQorCW9ycgl3MTcsdzE3LHcyOAkJCS8vIENoKGUsZixnKQorCWVvcgl3MjgsdzI1LHcyNgkJCS8vIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKwllb3IJdzE2LHcxNix3Nixyb3IjMTEJLy8gU2lnbWExKGUpCisJcm9yCXc2LHcyNSwjMgorCWFkZAl3MjQsdzI0LHcxNwkJCS8vIGgrPUNoKGUsZixnKQorCWVvcgl3MTcsdzI1LHcyNSxyb3IjOQorCWFkZAl3MjQsdzI0LHcxNgkJCS8vIGgrPVNpZ21hMShlKQorCWFuZAl3MTksdzE5LHcyOAkJCS8vIChiXmMpJj0oYV5iKQorCWFkZAl3MjAsdzIwLHcyNAkJCS8vIGQrPWgKKwllb3IJdzE5LHcxOSx3MjYJCQkvLyBNYWooYSxiLGMpCisJZW9yCXcxNyx3Nix3MTcscm9yIzEzCS8vIFNpZ21hMChhKQorCWFkZAl3MjQsdzI0LHcxOQkJCS8vIGgrPU1haihhLGIsYykKKwlsZHIJdzE5LFt4MzBdLCM0CQkvLyAqSysrLCB3MjggaW4gbmV4dCByb3VuZAorCS8vYWRkCXcyNCx3MjQsdzE3CQkJLy8gaCs9U2lnbWEwKGEpCisjaWZuZGVmCV9fQVJNRUJfXworCXJldgl3MTUsdzE1CQkJLy8gMTIKKyNlbmRpZgorCWFkZAl3MjQsdzI0LHcxNwkJCS8vIGgrPVNpZ21hMChhKQorCXN0cgl3Nyxbc3AsIzBdCisJcm9yCXcxNix3MjAsIzYKKwlhZGQJdzIzLHcyMyx3MTkJCQkvLyBoKz1LW2ldCisJZW9yCXc3LHcyMCx3MjAscm9yIzE0CisJYW5kCXcxNyx3MjEsdzIwCisJYmljCXcxOSx3MjIsdzIwCisJYWRkCXcyMyx3MjMsdzE1CQkJLy8gaCs9WFtpXQorCW9ycgl3MTcsdzE3LHcxOQkJCS8vIENoKGUsZixnKQorCWVvcgl3MTksdzI0LHcyNQkJCS8vIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKwllb3IJdzE2LHcxNix3Nyxyb3IjMTEJLy8gU2lnbWExKGUpCisJcm9yCXc3LHcyNCwjMgorCWFkZAl3MjMsdzIzLHcxNwkJCS8vIGgrPUNoKGUsZixnKQorCWVvcgl3MTcsdzI0LHcyNCxyb3IjOQorCWFkZAl3MjMsdzIzLHcxNgkJCS8vIGgrPVNpZ21hMShlKQorCWFuZAl3MjgsdzI4LHcxOQkJCS8vIChiXmMpJj0oYV5iKQorCWFkZAl3MjcsdzI3LHcyMwkJCS8vIGQrPWgKKwllb3IJdzI4LHcyOCx3MjUJCQkvLyBNYWooYSxiLGMpCisJZW9yCXcxNyx3Nyx3MTcscm9yIzEzCS8vIFNpZ21hMChhKQorCWFkZAl3MjMsdzIzLHcyOAkJCS8vIGgrPU1haihhLGIsYykKKwlsZHIJdzI4LFt4MzBdLCM0CQkvLyAqSysrLCB3MTkgaW4gbmV4dCByb3VuZAorCS8vYWRkCXcyMyx3MjMsdzE3CQkJLy8gaCs9U2lnbWEwKGEpCisjaWZuZGVmCV9fQVJNRUJfXworCXJldgl3MCx3MAkJCS8vIDEzCisjZW5kaWYKKwlsZHAJdzEsdzIsW3gxXQorCWFkZAl3MjMsdzIzLHcxNwkJCS8vIGgrPVNpZ21hMChhKQorCXN0cgl3OCxbc3AsIzRdCisJcm9yCXcxNix3MjcsIzYKKwlhZGQJdzIyLHcyMix3MjgJCQkvLyBoKz1LW2ldCisJZW9yCXc4LHcyNyx3Mjcscm9yIzE0CisJYW5kCXcxNyx3MjAsdzI3CisJYmljCXcyOCx3MjEsdzI3CisJYWRkCXcyMix3MjIsdzAJCQkvLyBoKz1YW2ldCisJb3JyCXcxNyx3MTcsdzI4CQkJLy8gQ2goZSxmLGcpCisJZW9yCXcyOCx3MjMsdzI0CQkJLy8gYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorCWVvcgl3MTYsdzE2LHc4LHJvciMxMQkvLyBTaWdtYTEoZSkKKwlyb3IJdzgsdzIzLCMyCisJYWRkCXcyMix3MjIsdzE3CQkJLy8gaCs9Q2goZSxmLGcpCisJZW9yCXcxNyx3MjMsdzIzLHJvciM5CisJYWRkCXcyMix3MjIsdzE2CQkJLy8gaCs9U2lnbWExKGUpCisJYW5kCXcxOSx3MTksdzI4CQkJLy8gKGJeYykmPShhXmIpCisJYWRkCXcyNix3MjYsdzIyCQkJLy8gZCs9aAorCWVvcgl3MTksdzE5LHcyNAkJCS8vIE1haihhLGIsYykKKwllb3IJdzE3LHc4LHcxNyxyb3IjMTMJLy8gU2lnbWEwKGEpCisJYWRkCXcyMix3MjIsdzE5CQkJLy8gaCs9TWFqKGEsYixjKQorCWxkcgl3MTksW3gzMF0sIzQJCS8vICpLKyssIHcyOCBpbiBuZXh0IHJvdW5kCisJLy9hZGQJdzIyLHcyMix3MTcJCQkvLyBoKz1TaWdtYTAoYSkKKyNpZm5kZWYJX19BUk1FQl9fCisJcmV2CXcxLHcxCQkJLy8gMTQKKyNlbmRpZgorCWxkcgl3Nixbc3AsIzEyXQorCWFkZAl3MjIsdzIyLHcxNwkJCS8vIGgrPVNpZ21hMChhKQorCXN0cgl3OSxbc3AsIzhdCisJcm9yCXcxNix3MjYsIzYKKwlhZGQJdzIxLHcyMSx3MTkJCQkvLyBoKz1LW2ldCisJZW9yCXc5LHcyNix3MjYscm9yIzE0CisJYW5kCXcxNyx3MjcsdzI2CisJYmljCXcxOSx3MjAsdzI2CisJYWRkCXcyMSx3MjEsdzEJCQkvLyBoKz1YW2ldCisJb3JyCXcxNyx3MTcsdzE5CQkJLy8gQ2goZSxmLGcpCisJZW9yCXcxOSx3MjIsdzIzCQkJLy8gYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorCWVvcgl3MTYsdzE2LHc5LHJvciMxMQkvLyBTaWdtYTEoZSkKKwlyb3IJdzksdzIyLCMyCisJYWRkCXcyMSx3MjEsdzE3CQkJLy8gaCs9Q2goZSxmLGcpCisJZW9yCXcxNyx3MjIsdzIyLHJvciM5CisJYWRkCXcyMSx3MjEsdzE2CQkJLy8gaCs9U2lnbWExKGUpCisJYW5kCXcyOCx3MjgsdzE5CQkJLy8gKGJeYykmPShhXmIpCisJYWRkCXcyNSx3MjUsdzIxCQkJLy8gZCs9aAorCWVvcgl3MjgsdzI4LHcyMwkJCS8vIE1haihhLGIsYykKKwllb3IJdzE3LHc5LHcxNyxyb3IjMTMJLy8gU2lnbWEwKGEpCisJYWRkCXcyMSx3MjEsdzI4CQkJLy8gaCs9TWFqKGEsYixjKQorCWxkcgl3MjgsW3gzMF0sIzQJCS8vICpLKyssIHcxOSBpbiBuZXh0IHJvdW5kCisJLy9hZGQJdzIxLHcyMSx3MTcJCQkvLyBoKz1TaWdtYTAoYSkKKyNpZm5kZWYJX19BUk1FQl9fCisJcmV2CXcyLHcyCQkJLy8gMTUKKyNlbmRpZgorCWxkcgl3Nyxbc3AsIzBdCisJYWRkCXcyMSx3MjEsdzE3CQkJLy8gaCs9U2lnbWEwKGEpCisJc3RyCXcxMCxbc3AsIzEyXQorCXJvcgl3MTYsdzI1LCM2CisJYWRkCXcyMCx3MjAsdzI4CQkJLy8gaCs9S1tpXQorCXJvcgl3OSx3NCwjNworCWFuZAl3MTcsdzI2LHcyNQorCXJvcgl3OCx3MSwjMTcKKwliaWMJdzI4LHcyNyx3MjUKKwlyb3IJdzEwLHcyMSwjMgorCWFkZAl3MjAsdzIwLHcyCQkJLy8gaCs9WFtpXQorCWVvcgl3MTYsdzE2LHcyNSxyb3IjMTEKKwllb3IJdzksdzksdzQscm9yIzE4CisJb3JyCXcxNyx3MTcsdzI4CQkJLy8gQ2goZSxmLGcpCisJZW9yCXcyOCx3MjEsdzIyCQkJLy8gYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorCWVvcgl3MTYsdzE2LHcyNSxyb3IjMjUJLy8gU2lnbWExKGUpCisJZW9yCXcxMCx3MTAsdzIxLHJvciMxMworCWFkZAl3MjAsdzIwLHcxNwkJCS8vIGgrPUNoKGUsZixnKQorCWFuZAl3MTksdzE5LHcyOAkJCS8vIChiXmMpJj0oYV5iKQorCWVvcgl3OCx3OCx3MSxyb3IjMTkKKwllb3IJdzksdzksdzQsbHNyIzMJLy8gc2lnbWEwKFhbaSsxXSkKKwlhZGQJdzIwLHcyMCx3MTYJCQkvLyBoKz1TaWdtYTEoZSkKKwllb3IJdzE5LHcxOSx3MjIJCQkvLyBNYWooYSxiLGMpCisJZW9yCXcxNyx3MTAsdzIxLHJvciMyMgkvLyBTaWdtYTAoYSkKKwllb3IJdzgsdzgsdzEsbHNyIzEwCS8vIHNpZ21hMShYW2krMTRdKQorCWFkZAl3Myx3Myx3MTIKKwlhZGQJdzI0LHcyNCx3MjAJCQkvLyBkKz1oCisJYWRkCXcyMCx3MjAsdzE5CQkJLy8gaCs9TWFqKGEsYixjKQorCWxkcgl3MTksW3gzMF0sIzQJCS8vICpLKyssIHcyOCBpbiBuZXh0IHJvdW5kCisJYWRkCXczLHczLHc5CisJYWRkCXcyMCx3MjAsdzE3CQkJLy8gaCs9U2lnbWEwKGEpCisJYWRkCXczLHczLHc4CisuTG9vcF8xNl94eDoKKwlsZHIJdzgsW3NwLCM0XQorCXN0cgl3MTEsW3NwLCMwXQorCXJvcgl3MTYsdzI0LCM2CisJYWRkCXcyNyx3MjcsdzE5CQkJLy8gaCs9S1tpXQorCXJvcgl3MTAsdzUsIzcKKwlhbmQJdzE3LHcyNSx3MjQKKwlyb3IJdzksdzIsIzE3CisJYmljCXcxOSx3MjYsdzI0CisJcm9yCXcxMSx3MjAsIzIKKwlhZGQJdzI3LHcyNyx3MwkJCS8vIGgrPVhbaV0KKwllb3IJdzE2LHcxNix3MjQscm9yIzExCisJZW9yCXcxMCx3MTAsdzUscm9yIzE4CisJb3JyCXcxNyx3MTcsdzE5CQkJLy8gQ2goZSxmLGcpCisJZW9yCXcxOSx3MjAsdzIxCQkJLy8gYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorCWVvcgl3MTYsdzE2LHcyNCxyb3IjMjUJLy8gU2lnbWExKGUpCisJZW9yCXcxMSx3MTEsdzIwLHJvciMxMworCWFkZAl3MjcsdzI3LHcxNwkJCS8vIGgrPUNoKGUsZixnKQorCWFuZAl3MjgsdzI4LHcxOQkJCS8vIChiXmMpJj0oYV5iKQorCWVvcgl3OSx3OSx3Mixyb3IjMTkKKwllb3IJdzEwLHcxMCx3NSxsc3IjMwkvLyBzaWdtYTAoWFtpKzFdKQorCWFkZAl3MjcsdzI3LHcxNgkJCS8vIGgrPVNpZ21hMShlKQorCWVvcgl3MjgsdzI4LHcyMQkJCS8vIE1haihhLGIsYykKKwllb3IJdzE3LHcxMSx3MjAscm9yIzIyCS8vIFNpZ21hMChhKQorCWVvcgl3OSx3OSx3Mixsc3IjMTAJLy8gc2lnbWExKFhbaSsxNF0pCisJYWRkCXc0LHc0LHcxMworCWFkZAl3MjMsdzIzLHcyNwkJCS8vIGQrPWgKKwlhZGQJdzI3LHcyNyx3MjgJCQkvLyBoKz1NYWooYSxiLGMpCisJbGRyCXcyOCxbeDMwXSwjNAkJLy8gKksrKywgdzE5IGluIG5leHQgcm91bmQKKwlhZGQJdzQsdzQsdzEwCisJYWRkCXcyNyx3MjcsdzE3CQkJLy8gaCs9U2lnbWEwKGEpCisJYWRkCXc0LHc0LHc5CisJbGRyCXc5LFtzcCwjOF0KKwlzdHIJdzEyLFtzcCwjNF0KKwlyb3IJdzE2LHcyMywjNgorCWFkZAl3MjYsdzI2LHcyOAkJCS8vIGgrPUtbaV0KKwlyb3IJdzExLHc2LCM3CisJYW5kCXcxNyx3MjQsdzIzCisJcm9yCXcxMCx3MywjMTcKKwliaWMJdzI4LHcyNSx3MjMKKwlyb3IJdzEyLHcyNywjMgorCWFkZAl3MjYsdzI2LHc0CQkJLy8gaCs9WFtpXQorCWVvcgl3MTYsdzE2LHcyMyxyb3IjMTEKKwllb3IJdzExLHcxMSx3Nixyb3IjMTgKKwlvcnIJdzE3LHcxNyx3MjgJCQkvLyBDaChlLGYsZykKKwllb3IJdzI4LHcyNyx3MjAJCQkvLyBhXmIsIGJeYyBpbiBuZXh0IHJvdW5kCisJZW9yCXcxNix3MTYsdzIzLHJvciMyNQkvLyBTaWdtYTEoZSkKKwllb3IJdzEyLHcxMix3Mjcscm9yIzEzCisJYWRkCXcyNix3MjYsdzE3CQkJLy8gaCs9Q2goZSxmLGcpCisJYW5kCXcxOSx3MTksdzI4CQkJLy8gKGJeYykmPShhXmIpCisJZW9yCXcxMCx3MTAsdzMscm9yIzE5CisJZW9yCXcxMSx3MTEsdzYsbHNyIzMJLy8gc2lnbWEwKFhbaSsxXSkKKwlhZGQJdzI2LHcyNix3MTYJCQkvLyBoKz1TaWdtYTEoZSkKKwllb3IJdzE5LHcxOSx3MjAJCQkvLyBNYWooYSxiLGMpCisJZW9yCXcxNyx3MTIsdzI3LHJvciMyMgkvLyBTaWdtYTAoYSkKKwllb3IJdzEwLHcxMCx3Myxsc3IjMTAJLy8gc2lnbWExKFhbaSsxNF0pCisJYWRkCXc1LHc1LHcxNAorCWFkZAl3MjIsdzIyLHcyNgkJCS8vIGQrPWgKKwlhZGQJdzI2LHcyNix3MTkJCQkvLyBoKz1NYWooYSxiLGMpCisJbGRyCXcxOSxbeDMwXSwjNAkJLy8gKksrKywgdzI4IGluIG5leHQgcm91bmQKKwlhZGQJdzUsdzUsdzExCisJYWRkCXcyNix3MjYsdzE3CQkJLy8gaCs9U2lnbWEwKGEpCisJYWRkCXc1LHc1LHcxMAorCWxkcgl3MTAsW3NwLCMxMl0KKwlzdHIJdzEzLFtzcCwjOF0KKwlyb3IJdzE2LHcyMiwjNgorCWFkZAl3MjUsdzI1LHcxOQkJCS8vIGgrPUtbaV0KKwlyb3IJdzEyLHc3LCM3CisJYW5kCXcxNyx3MjMsdzIyCisJcm9yCXcxMSx3NCwjMTcKKwliaWMJdzE5LHcyNCx3MjIKKwlyb3IJdzEzLHcyNiwjMgorCWFkZAl3MjUsdzI1LHc1CQkJLy8gaCs9WFtpXQorCWVvcgl3MTYsdzE2LHcyMixyb3IjMTEKKwllb3IJdzEyLHcxMix3Nyxyb3IjMTgKKwlvcnIJdzE3LHcxNyx3MTkJCQkvLyBDaChlLGYsZykKKwllb3IJdzE5LHcyNix3MjcJCQkvLyBhXmIsIGJeYyBpbiBuZXh0IHJvdW5kCisJZW9yCXcxNix3MTYsdzIyLHJvciMyNQkvLyBTaWdtYTEoZSkKKwllb3IJdzEzLHcxMyx3MjYscm9yIzEzCisJYWRkCXcyNSx3MjUsdzE3CQkJLy8gaCs9Q2goZSxmLGcpCisJYW5kCXcyOCx3MjgsdzE5CQkJLy8gKGJeYykmPShhXmIpCisJZW9yCXcxMSx3MTEsdzQscm9yIzE5CisJZW9yCXcxMix3MTIsdzcsbHNyIzMJLy8gc2lnbWEwKFhbaSsxXSkKKwlhZGQJdzI1LHcyNSx3MTYJCQkvLyBoKz1TaWdtYTEoZSkKKwllb3IJdzI4LHcyOCx3MjcJCQkvLyBNYWooYSxiLGMpCisJZW9yCXcxNyx3MTMsdzI2LHJvciMyMgkvLyBTaWdtYTAoYSkKKwllb3IJdzExLHcxMSx3NCxsc3IjMTAJLy8gc2lnbWExKFhbaSsxNF0pCisJYWRkCXc2LHc2LHcxNQorCWFkZAl3MjEsdzIxLHcyNQkJCS8vIGQrPWgKKwlhZGQJdzI1LHcyNSx3MjgJCQkvLyBoKz1NYWooYSxiLGMpCisJbGRyCXcyOCxbeDMwXSwjNAkJLy8gKksrKywgdzE5IGluIG5leHQgcm91bmQKKwlhZGQJdzYsdzYsdzEyCisJYWRkCXcyNSx3MjUsdzE3CQkJLy8gaCs9U2lnbWEwKGEpCisJYWRkCXc2LHc2LHcxMQorCWxkcgl3MTEsW3NwLCMwXQorCXN0cgl3MTQsW3NwLCMxMl0KKwlyb3IJdzE2LHcyMSwjNgorCWFkZAl3MjQsdzI0LHcyOAkJCS8vIGgrPUtbaV0KKwlyb3IJdzEzLHc4LCM3CisJYW5kCXcxNyx3MjIsdzIxCisJcm9yCXcxMix3NSwjMTcKKwliaWMJdzI4LHcyMyx3MjEKKwlyb3IJdzE0LHcyNSwjMgorCWFkZAl3MjQsdzI0LHc2CQkJLy8gaCs9WFtpXQorCWVvcgl3MTYsdzE2LHcyMSxyb3IjMTEKKwllb3IJdzEzLHcxMyx3OCxyb3IjMTgKKwlvcnIJdzE3LHcxNyx3MjgJCQkvLyBDaChlLGYsZykKKwllb3IJdzI4LHcyNSx3MjYJCQkvLyBhXmIsIGJeYyBpbiBuZXh0IHJvdW5kCisJZW9yCXcxNix3MTYsdzIxLHJvciMyNQkvLyBTaWdtYTEoZSkKKwllb3IJdzE0LHcxNCx3MjUscm9yIzEzCisJYWRkCXcyNCx3MjQsdzE3CQkJLy8gaCs9Q2goZSxmLGcpCisJYW5kCXcxOSx3MTksdzI4CQkJLy8gKGJeYykmPShhXmIpCisJZW9yCXcxMix3MTIsdzUscm9yIzE5CisJZW9yCXcxMyx3MTMsdzgsbHNyIzMJLy8gc2lnbWEwKFhbaSsxXSkKKwlhZGQJdzI0LHcyNCx3MTYJCQkvLyBoKz1TaWdtYTEoZSkKKwllb3IJdzE5LHcxOSx3MjYJCQkvLyBNYWooYSxiLGMpCisJZW9yCXcxNyx3MTQsdzI1LHJvciMyMgkvLyBTaWdtYTAoYSkKKwllb3IJdzEyLHcxMix3NSxsc3IjMTAJLy8gc2lnbWExKFhbaSsxNF0pCisJYWRkCXc3LHc3LHcwCisJYWRkCXcyMCx3MjAsdzI0CQkJLy8gZCs9aAorCWFkZAl3MjQsdzI0LHcxOQkJCS8vIGgrPU1haihhLGIsYykKKwlsZHIJdzE5LFt4MzBdLCM0CQkvLyAqSysrLCB3MjggaW4gbmV4dCByb3VuZAorCWFkZAl3Nyx3Nyx3MTMKKwlhZGQJdzI0LHcyNCx3MTcJCQkvLyBoKz1TaWdtYTAoYSkKKwlhZGQJdzcsdzcsdzEyCisJbGRyCXcxMixbc3AsIzRdCisJc3RyCXcxNSxbc3AsIzBdCisJcm9yCXcxNix3MjAsIzYKKwlhZGQJdzIzLHcyMyx3MTkJCQkvLyBoKz1LW2ldCisJcm9yCXcxNCx3OSwjNworCWFuZAl3MTcsdzIxLHcyMAorCXJvcgl3MTMsdzYsIzE3CisJYmljCXcxOSx3MjIsdzIwCisJcm9yCXcxNSx3MjQsIzIKKwlhZGQJdzIzLHcyMyx3NwkJCS8vIGgrPVhbaV0KKwllb3IJdzE2LHcxNix3MjAscm9yIzExCisJZW9yCXcxNCx3MTQsdzkscm9yIzE4CisJb3JyCXcxNyx3MTcsdzE5CQkJLy8gQ2goZSxmLGcpCisJZW9yCXcxOSx3MjQsdzI1CQkJLy8gYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorCWVvcgl3MTYsdzE2LHcyMCxyb3IjMjUJLy8gU2lnbWExKGUpCisJZW9yCXcxNSx3MTUsdzI0LHJvciMxMworCWFkZAl3MjMsdzIzLHcxNwkJCS8vIGgrPUNoKGUsZixnKQorCWFuZAl3MjgsdzI4LHcxOQkJCS8vIChiXmMpJj0oYV5iKQorCWVvcgl3MTMsdzEzLHc2LHJvciMxOQorCWVvcgl3MTQsdzE0LHc5LGxzciMzCS8vIHNpZ21hMChYW2krMV0pCisJYWRkCXcyMyx3MjMsdzE2CQkJLy8gaCs9U2lnbWExKGUpCisJZW9yCXcyOCx3MjgsdzI1CQkJLy8gTWFqKGEsYixjKQorCWVvcgl3MTcsdzE1LHcyNCxyb3IjMjIJLy8gU2lnbWEwKGEpCisJZW9yCXcxMyx3MTMsdzYsbHNyIzEwCS8vIHNpZ21hMShYW2krMTRdKQorCWFkZAl3OCx3OCx3MQorCWFkZAl3MjcsdzI3LHcyMwkJCS8vIGQrPWgKKwlhZGQJdzIzLHcyMyx3MjgJCQkvLyBoKz1NYWooYSxiLGMpCisJbGRyCXcyOCxbeDMwXSwjNAkJLy8gKksrKywgdzE5IGluIG5leHQgcm91bmQKKwlhZGQJdzgsdzgsdzE0CisJYWRkCXcyMyx3MjMsdzE3CQkJLy8gaCs9U2lnbWEwKGEpCisJYWRkCXc4LHc4LHcxMworCWxkcgl3MTMsW3NwLCM4XQorCXN0cgl3MCxbc3AsIzRdCisJcm9yCXcxNix3MjcsIzYKKwlhZGQJdzIyLHcyMix3MjgJCQkvLyBoKz1LW2ldCisJcm9yCXcxNSx3MTAsIzcKKwlhbmQJdzE3LHcyMCx3MjcKKwlyb3IJdzE0LHc3LCMxNworCWJpYwl3MjgsdzIxLHcyNworCXJvcgl3MCx3MjMsIzIKKwlhZGQJdzIyLHcyMix3OAkJCS8vIGgrPVhbaV0KKwllb3IJdzE2LHcxNix3Mjcscm9yIzExCisJZW9yCXcxNSx3MTUsdzEwLHJvciMxOAorCW9ycgl3MTcsdzE3LHcyOAkJCS8vIENoKGUsZixnKQorCWVvcgl3MjgsdzIzLHcyNAkJCS8vIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKwllb3IJdzE2LHcxNix3Mjcscm9yIzI1CS8vIFNpZ21hMShlKQorCWVvcgl3MCx3MCx3MjMscm9yIzEzCisJYWRkCXcyMix3MjIsdzE3CQkJLy8gaCs9Q2goZSxmLGcpCisJYW5kCXcxOSx3MTksdzI4CQkJLy8gKGJeYykmPShhXmIpCisJZW9yCXcxNCx3MTQsdzcscm9yIzE5CisJZW9yCXcxNSx3MTUsdzEwLGxzciMzCS8vIHNpZ21hMChYW2krMV0pCisJYWRkCXcyMix3MjIsdzE2CQkJLy8gaCs9U2lnbWExKGUpCisJZW9yCXcxOSx3MTksdzI0CQkJLy8gTWFqKGEsYixjKQorCWVvcgl3MTcsdzAsdzIzLHJvciMyMgkvLyBTaWdtYTAoYSkKKwllb3IJdzE0LHcxNCx3Nyxsc3IjMTAJLy8gc2lnbWExKFhbaSsxNF0pCisJYWRkCXc5LHc5LHcyCisJYWRkCXcyNix3MjYsdzIyCQkJLy8gZCs9aAorCWFkZAl3MjIsdzIyLHcxOQkJCS8vIGgrPU1haihhLGIsYykKKwlsZHIJdzE5LFt4MzBdLCM0CQkvLyAqSysrLCB3MjggaW4gbmV4dCByb3VuZAorCWFkZAl3OSx3OSx3MTUKKwlhZGQJdzIyLHcyMix3MTcJCQkvLyBoKz1TaWdtYTAoYSkKKwlhZGQJdzksdzksdzE0CisJbGRyCXcxNCxbc3AsIzEyXQorCXN0cgl3MSxbc3AsIzhdCisJcm9yCXcxNix3MjYsIzYKKwlhZGQJdzIxLHcyMSx3MTkJCQkvLyBoKz1LW2ldCisJcm9yCXcwLHcxMSwjNworCWFuZAl3MTcsdzI3LHcyNgorCXJvcgl3MTUsdzgsIzE3CisJYmljCXcxOSx3MjAsdzI2CisJcm9yCXcxLHcyMiwjMgorCWFkZAl3MjEsdzIxLHc5CQkJLy8gaCs9WFtpXQorCWVvcgl3MTYsdzE2LHcyNixyb3IjMTEKKwllb3IJdzAsdzAsdzExLHJvciMxOAorCW9ycgl3MTcsdzE3LHcxOQkJCS8vIENoKGUsZixnKQorCWVvcgl3MTksdzIyLHcyMwkJCS8vIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKwllb3IJdzE2LHcxNix3MjYscm9yIzI1CS8vIFNpZ21hMShlKQorCWVvcgl3MSx3MSx3MjIscm9yIzEzCisJYWRkCXcyMSx3MjEsdzE3CQkJLy8gaCs9Q2goZSxmLGcpCisJYW5kCXcyOCx3MjgsdzE5CQkJLy8gKGJeYykmPShhXmIpCisJZW9yCXcxNSx3MTUsdzgscm9yIzE5CisJZW9yCXcwLHcwLHcxMSxsc3IjMwkvLyBzaWdtYTAoWFtpKzFdKQorCWFkZAl3MjEsdzIxLHcxNgkJCS8vIGgrPVNpZ21hMShlKQorCWVvcgl3MjgsdzI4LHcyMwkJCS8vIE1haihhLGIsYykKKwllb3IJdzE3LHcxLHcyMixyb3IjMjIJLy8gU2lnbWEwKGEpCisJZW9yCXcxNSx3MTUsdzgsbHNyIzEwCS8vIHNpZ21hMShYW2krMTRdKQorCWFkZAl3MTAsdzEwLHczCisJYWRkCXcyNSx3MjUsdzIxCQkJLy8gZCs9aAorCWFkZAl3MjEsdzIxLHcyOAkJCS8vIGgrPU1haihhLGIsYykKKwlsZHIJdzI4LFt4MzBdLCM0CQkvLyAqSysrLCB3MTkgaW4gbmV4dCByb3VuZAorCWFkZAl3MTAsdzEwLHcwCisJYWRkCXcyMSx3MjEsdzE3CQkJLy8gaCs9U2lnbWEwKGEpCisJYWRkCXcxMCx3MTAsdzE1CisJbGRyCXcxNSxbc3AsIzBdCisJc3RyCXcyLFtzcCwjMTJdCisJcm9yCXcxNix3MjUsIzYKKwlhZGQJdzIwLHcyMCx3MjgJCQkvLyBoKz1LW2ldCisJcm9yCXcxLHcxMiwjNworCWFuZAl3MTcsdzI2LHcyNQorCXJvcgl3MCx3OSwjMTcKKwliaWMJdzI4LHcyNyx3MjUKKwlyb3IJdzIsdzIxLCMyCisJYWRkCXcyMCx3MjAsdzEwCQkJLy8gaCs9WFtpXQorCWVvcgl3MTYsdzE2LHcyNSxyb3IjMTEKKwllb3IJdzEsdzEsdzEyLHJvciMxOAorCW9ycgl3MTcsdzE3LHcyOAkJCS8vIENoKGUsZixnKQorCWVvcgl3MjgsdzIxLHcyMgkJCS8vIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKwllb3IJdzE2LHcxNix3MjUscm9yIzI1CS8vIFNpZ21hMShlKQorCWVvcgl3Mix3Mix3MjEscm9yIzEzCisJYWRkCXcyMCx3MjAsdzE3CQkJLy8gaCs9Q2goZSxmLGcpCisJYW5kCXcxOSx3MTksdzI4CQkJLy8gKGJeYykmPShhXmIpCisJZW9yCXcwLHcwLHc5LHJvciMxOQorCWVvcgl3MSx3MSx3MTIsbHNyIzMJLy8gc2lnbWEwKFhbaSsxXSkKKwlhZGQJdzIwLHcyMCx3MTYJCQkvLyBoKz1TaWdtYTEoZSkKKwllb3IJdzE5LHcxOSx3MjIJCQkvLyBNYWooYSxiLGMpCisJZW9yCXcxNyx3Mix3MjEscm9yIzIyCS8vIFNpZ21hMChhKQorCWVvcgl3MCx3MCx3OSxsc3IjMTAJLy8gc2lnbWExKFhbaSsxNF0pCisJYWRkCXcxMSx3MTEsdzQKKwlhZGQJdzI0LHcyNCx3MjAJCQkvLyBkKz1oCisJYWRkCXcyMCx3MjAsdzE5CQkJLy8gaCs9TWFqKGEsYixjKQorCWxkcgl3MTksW3gzMF0sIzQJCS8vICpLKyssIHcyOCBpbiBuZXh0IHJvdW5kCisJYWRkCXcxMSx3MTEsdzEKKwlhZGQJdzIwLHcyMCx3MTcJCQkvLyBoKz1TaWdtYTAoYSkKKwlhZGQJdzExLHcxMSx3MAorCWxkcgl3MCxbc3AsIzRdCisJc3RyCXczLFtzcCwjMF0KKwlyb3IJdzE2LHcyNCwjNgorCWFkZAl3MjcsdzI3LHcxOQkJCS8vIGgrPUtbaV0KKwlyb3IJdzIsdzEzLCM3CisJYW5kCXcxNyx3MjUsdzI0CisJcm9yCXcxLHcxMCwjMTcKKwliaWMJdzE5LHcyNix3MjQKKwlyb3IJdzMsdzIwLCMyCisJYWRkCXcyNyx3MjcsdzExCQkJLy8gaCs9WFtpXQorCWVvcgl3MTYsdzE2LHcyNCxyb3IjMTEKKwllb3IJdzIsdzIsdzEzLHJvciMxOAorCW9ycgl3MTcsdzE3LHcxOQkJCS8vIENoKGUsZixnKQorCWVvcgl3MTksdzIwLHcyMQkJCS8vIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKwllb3IJdzE2LHcxNix3MjQscm9yIzI1CS8vIFNpZ21hMShlKQorCWVvcgl3Myx3Myx3MjAscm9yIzEzCisJYWRkCXcyNyx3MjcsdzE3CQkJLy8gaCs9Q2goZSxmLGcpCisJYW5kCXcyOCx3MjgsdzE5CQkJLy8gKGJeYykmPShhXmIpCisJZW9yCXcxLHcxLHcxMCxyb3IjMTkKKwllb3IJdzIsdzIsdzEzLGxzciMzCS8vIHNpZ21hMChYW2krMV0pCisJYWRkCXcyNyx3MjcsdzE2CQkJLy8gaCs9U2lnbWExKGUpCisJZW9yCXcyOCx3MjgsdzIxCQkJLy8gTWFqKGEsYixjKQorCWVvcgl3MTcsdzMsdzIwLHJvciMyMgkvLyBTaWdtYTAoYSkKKwllb3IJdzEsdzEsdzEwLGxzciMxMAkvLyBzaWdtYTEoWFtpKzE0XSkKKwlhZGQJdzEyLHcxMix3NQorCWFkZAl3MjMsdzIzLHcyNwkJCS8vIGQrPWgKKwlhZGQJdzI3LHcyNyx3MjgJCQkvLyBoKz1NYWooYSxiLGMpCisJbGRyCXcyOCxbeDMwXSwjNAkJLy8gKksrKywgdzE5IGluIG5leHQgcm91bmQKKwlhZGQJdzEyLHcxMix3MgorCWFkZAl3MjcsdzI3LHcxNwkJCS8vIGgrPVNpZ21hMChhKQorCWFkZAl3MTIsdzEyLHcxCisJbGRyCXcxLFtzcCwjOF0KKwlzdHIJdzQsW3NwLCM0XQorCXJvcgl3MTYsdzIzLCM2CisJYWRkCXcyNix3MjYsdzI4CQkJLy8gaCs9S1tpXQorCXJvcgl3Myx3MTQsIzcKKwlhbmQJdzE3LHcyNCx3MjMKKwlyb3IJdzIsdzExLCMxNworCWJpYwl3MjgsdzI1LHcyMworCXJvcgl3NCx3MjcsIzIKKwlhZGQJdzI2LHcyNix3MTIJCQkvLyBoKz1YW2ldCisJZW9yCXcxNix3MTYsdzIzLHJvciMxMQorCWVvcgl3Myx3Myx3MTQscm9yIzE4CisJb3JyCXcxNyx3MTcsdzI4CQkJLy8gQ2goZSxmLGcpCisJZW9yCXcyOCx3MjcsdzIwCQkJLy8gYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorCWVvcgl3MTYsdzE2LHcyMyxyb3IjMjUJLy8gU2lnbWExKGUpCisJZW9yCXc0LHc0LHcyNyxyb3IjMTMKKwlhZGQJdzI2LHcyNix3MTcJCQkvLyBoKz1DaChlLGYsZykKKwlhbmQJdzE5LHcxOSx3MjgJCQkvLyAoYl5jKSY9KGFeYikKKwllb3IJdzIsdzIsdzExLHJvciMxOQorCWVvcgl3Myx3Myx3MTQsbHNyIzMJLy8gc2lnbWEwKFhbaSsxXSkKKwlhZGQJdzI2LHcyNix3MTYJCQkvLyBoKz1TaWdtYTEoZSkKKwllb3IJdzE5LHcxOSx3MjAJCQkvLyBNYWooYSxiLGMpCisJZW9yCXcxNyx3NCx3Mjcscm9yIzIyCS8vIFNpZ21hMChhKQorCWVvcgl3Mix3Mix3MTEsbHNyIzEwCS8vIHNpZ21hMShYW2krMTRdKQorCWFkZAl3MTMsdzEzLHc2CisJYWRkCXcyMix3MjIsdzI2CQkJLy8gZCs9aAorCWFkZAl3MjYsdzI2LHcxOQkJCS8vIGgrPU1haihhLGIsYykKKwlsZHIJdzE5LFt4MzBdLCM0CQkvLyAqSysrLCB3MjggaW4gbmV4dCByb3VuZAorCWFkZAl3MTMsdzEzLHczCisJYWRkCXcyNix3MjYsdzE3CQkJLy8gaCs9U2lnbWEwKGEpCisJYWRkCXcxMyx3MTMsdzIKKwlsZHIJdzIsW3NwLCMxMl0KKwlzdHIJdzUsW3NwLCM4XQorCXJvcgl3MTYsdzIyLCM2CisJYWRkCXcyNSx3MjUsdzE5CQkJLy8gaCs9S1tpXQorCXJvcgl3NCx3MTUsIzcKKwlhbmQJdzE3LHcyMyx3MjIKKwlyb3IJdzMsdzEyLCMxNworCWJpYwl3MTksdzI0LHcyMgorCXJvcgl3NSx3MjYsIzIKKwlhZGQJdzI1LHcyNSx3MTMJCQkvLyBoKz1YW2ldCisJZW9yCXcxNix3MTYsdzIyLHJvciMxMQorCWVvcgl3NCx3NCx3MTUscm9yIzE4CisJb3JyCXcxNyx3MTcsdzE5CQkJLy8gQ2goZSxmLGcpCisJZW9yCXcxOSx3MjYsdzI3CQkJLy8gYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorCWVvcgl3MTYsdzE2LHcyMixyb3IjMjUJLy8gU2lnbWExKGUpCisJZW9yCXc1LHc1LHcyNixyb3IjMTMKKwlhZGQJdzI1LHcyNSx3MTcJCQkvLyBoKz1DaChlLGYsZykKKwlhbmQJdzI4LHcyOCx3MTkJCQkvLyAoYl5jKSY9KGFeYikKKwllb3IJdzMsdzMsdzEyLHJvciMxOQorCWVvcgl3NCx3NCx3MTUsbHNyIzMJLy8gc2lnbWEwKFhbaSsxXSkKKwlhZGQJdzI1LHcyNSx3MTYJCQkvLyBoKz1TaWdtYTEoZSkKKwllb3IJdzI4LHcyOCx3MjcJCQkvLyBNYWooYSxiLGMpCisJZW9yCXcxNyx3NSx3MjYscm9yIzIyCS8vIFNpZ21hMChhKQorCWVvcgl3Myx3Myx3MTIsbHNyIzEwCS8vIHNpZ21hMShYW2krMTRdKQorCWFkZAl3MTQsdzE0LHc3CisJYWRkCXcyMSx3MjEsdzI1CQkJLy8gZCs9aAorCWFkZAl3MjUsdzI1LHcyOAkJCS8vIGgrPU1haihhLGIsYykKKwlsZHIJdzI4LFt4MzBdLCM0CQkvLyAqSysrLCB3MTkgaW4gbmV4dCByb3VuZAorCWFkZAl3MTQsdzE0LHc0CisJYWRkCXcyNSx3MjUsdzE3CQkJLy8gaCs9U2lnbWEwKGEpCisJYWRkCXcxNCx3MTQsdzMKKwlsZHIJdzMsW3NwLCMwXQorCXN0cgl3Nixbc3AsIzEyXQorCXJvcgl3MTYsdzIxLCM2CisJYWRkCXcyNCx3MjQsdzI4CQkJLy8gaCs9S1tpXQorCXJvcgl3NSx3MCwjNworCWFuZAl3MTcsdzIyLHcyMQorCXJvcgl3NCx3MTMsIzE3CisJYmljCXcyOCx3MjMsdzIxCisJcm9yCXc2LHcyNSwjMgorCWFkZAl3MjQsdzI0LHcxNAkJCS8vIGgrPVhbaV0KKwllb3IJdzE2LHcxNix3MjEscm9yIzExCisJZW9yCXc1LHc1LHcwLHJvciMxOAorCW9ycgl3MTcsdzE3LHcyOAkJCS8vIENoKGUsZixnKQorCWVvcgl3MjgsdzI1LHcyNgkJCS8vIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKwllb3IJdzE2LHcxNix3MjEscm9yIzI1CS8vIFNpZ21hMShlKQorCWVvcgl3Nix3Nix3MjUscm9yIzEzCisJYWRkCXcyNCx3MjQsdzE3CQkJLy8gaCs9Q2goZSxmLGcpCisJYW5kCXcxOSx3MTksdzI4CQkJLy8gKGJeYykmPShhXmIpCisJZW9yCXc0LHc0LHcxMyxyb3IjMTkKKwllb3IJdzUsdzUsdzAsbHNyIzMJLy8gc2lnbWEwKFhbaSsxXSkKKwlhZGQJdzI0LHcyNCx3MTYJCQkvLyBoKz1TaWdtYTEoZSkKKwllb3IJdzE5LHcxOSx3MjYJCQkvLyBNYWooYSxiLGMpCisJZW9yCXcxNyx3Nix3MjUscm9yIzIyCS8vIFNpZ21hMChhKQorCWVvcgl3NCx3NCx3MTMsbHNyIzEwCS8vIHNpZ21hMShYW2krMTRdKQorCWFkZAl3MTUsdzE1LHc4CisJYWRkCXcyMCx3MjAsdzI0CQkJLy8gZCs9aAorCWFkZAl3MjQsdzI0LHcxOQkJCS8vIGgrPU1haihhLGIsYykKKwlsZHIJdzE5LFt4MzBdLCM0CQkvLyAqSysrLCB3MjggaW4gbmV4dCByb3VuZAorCWFkZAl3MTUsdzE1LHc1CisJYWRkCXcyNCx3MjQsdzE3CQkJLy8gaCs9U2lnbWEwKGEpCisJYWRkCXcxNSx3MTUsdzQKKwlsZHIJdzQsW3NwLCM0XQorCXN0cgl3Nyxbc3AsIzBdCisJcm9yCXcxNix3MjAsIzYKKwlhZGQJdzIzLHcyMyx3MTkJCQkvLyBoKz1LW2ldCisJcm9yCXc2LHcxLCM3CisJYW5kCXcxNyx3MjEsdzIwCisJcm9yCXc1LHcxNCwjMTcKKwliaWMJdzE5LHcyMix3MjAKKwlyb3IJdzcsdzI0LCMyCisJYWRkCXcyMyx3MjMsdzE1CQkJLy8gaCs9WFtpXQorCWVvcgl3MTYsdzE2LHcyMCxyb3IjMTEKKwllb3IJdzYsdzYsdzEscm9yIzE4CisJb3JyCXcxNyx3MTcsdzE5CQkJLy8gQ2goZSxmLGcpCisJZW9yCXcxOSx3MjQsdzI1CQkJLy8gYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorCWVvcgl3MTYsdzE2LHcyMCxyb3IjMjUJLy8gU2lnbWExKGUpCisJZW9yCXc3LHc3LHcyNCxyb3IjMTMKKwlhZGQJdzIzLHcyMyx3MTcJCQkvLyBoKz1DaChlLGYsZykKKwlhbmQJdzI4LHcyOCx3MTkJCQkvLyAoYl5jKSY9KGFeYikKKwllb3IJdzUsdzUsdzE0LHJvciMxOQorCWVvcgl3Nix3Nix3MSxsc3IjMwkvLyBzaWdtYTAoWFtpKzFdKQorCWFkZAl3MjMsdzIzLHcxNgkJCS8vIGgrPVNpZ21hMShlKQorCWVvcgl3MjgsdzI4LHcyNQkJCS8vIE1haihhLGIsYykKKwllb3IJdzE3LHc3LHcyNCxyb3IjMjIJLy8gU2lnbWEwKGEpCisJZW9yCXc1LHc1LHcxNCxsc3IjMTAJLy8gc2lnbWExKFhbaSsxNF0pCisJYWRkCXcwLHcwLHc5CisJYWRkCXcyNyx3MjcsdzIzCQkJLy8gZCs9aAorCWFkZAl3MjMsdzIzLHcyOAkJCS8vIGgrPU1haihhLGIsYykKKwlsZHIJdzI4LFt4MzBdLCM0CQkvLyAqSysrLCB3MTkgaW4gbmV4dCByb3VuZAorCWFkZAl3MCx3MCx3NgorCWFkZAl3MjMsdzIzLHcxNwkJCS8vIGgrPVNpZ21hMChhKQorCWFkZAl3MCx3MCx3NQorCWxkcgl3NSxbc3AsIzhdCisJc3RyCXc4LFtzcCwjNF0KKwlyb3IJdzE2LHcyNywjNgorCWFkZAl3MjIsdzIyLHcyOAkJCS8vIGgrPUtbaV0KKwlyb3IJdzcsdzIsIzcKKwlhbmQJdzE3LHcyMCx3MjcKKwlyb3IJdzYsdzE1LCMxNworCWJpYwl3MjgsdzIxLHcyNworCXJvcgl3OCx3MjMsIzIKKwlhZGQJdzIyLHcyMix3MAkJCS8vIGgrPVhbaV0KKwllb3IJdzE2LHcxNix3Mjcscm9yIzExCisJZW9yCXc3LHc3LHcyLHJvciMxOAorCW9ycgl3MTcsdzE3LHcyOAkJCS8vIENoKGUsZixnKQorCWVvcgl3MjgsdzIzLHcyNAkJCS8vIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKwllb3IJdzE2LHcxNix3Mjcscm9yIzI1CS8vIFNpZ21hMShlKQorCWVvcgl3OCx3OCx3MjMscm9yIzEzCisJYWRkCXcyMix3MjIsdzE3CQkJLy8gaCs9Q2goZSxmLGcpCisJYW5kCXcxOSx3MTksdzI4CQkJLy8gKGJeYykmPShhXmIpCisJZW9yCXc2LHc2LHcxNSxyb3IjMTkKKwllb3IJdzcsdzcsdzIsbHNyIzMJLy8gc2lnbWEwKFhbaSsxXSkKKwlhZGQJdzIyLHcyMix3MTYJCQkvLyBoKz1TaWdtYTEoZSkKKwllb3IJdzE5LHcxOSx3MjQJCQkvLyBNYWooYSxiLGMpCisJZW9yCXcxNyx3OCx3MjMscm9yIzIyCS8vIFNpZ21hMChhKQorCWVvcgl3Nix3Nix3MTUsbHNyIzEwCS8vIHNpZ21hMShYW2krMTRdKQorCWFkZAl3MSx3MSx3MTAKKwlhZGQJdzI2LHcyNix3MjIJCQkvLyBkKz1oCisJYWRkCXcyMix3MjIsdzE5CQkJLy8gaCs9TWFqKGEsYixjKQorCWxkcgl3MTksW3gzMF0sIzQJCS8vICpLKyssIHcyOCBpbiBuZXh0IHJvdW5kCisJYWRkCXcxLHcxLHc3CisJYWRkCXcyMix3MjIsdzE3CQkJLy8gaCs9U2lnbWEwKGEpCisJYWRkCXcxLHcxLHc2CisJbGRyCXc2LFtzcCwjMTJdCisJc3RyCXc5LFtzcCwjOF0KKwlyb3IJdzE2LHcyNiwjNgorCWFkZAl3MjEsdzIxLHcxOQkJCS8vIGgrPUtbaV0KKwlyb3IJdzgsdzMsIzcKKwlhbmQJdzE3LHcyNyx3MjYKKwlyb3IJdzcsdzAsIzE3CisJYmljCXcxOSx3MjAsdzI2CisJcm9yCXc5LHcyMiwjMgorCWFkZAl3MjEsdzIxLHcxCQkJLy8gaCs9WFtpXQorCWVvcgl3MTYsdzE2LHcyNixyb3IjMTEKKwllb3IJdzgsdzgsdzMscm9yIzE4CisJb3JyCXcxNyx3MTcsdzE5CQkJLy8gQ2goZSxmLGcpCisJZW9yCXcxOSx3MjIsdzIzCQkJLy8gYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorCWVvcgl3MTYsdzE2LHcyNixyb3IjMjUJLy8gU2lnbWExKGUpCisJZW9yCXc5LHc5LHcyMixyb3IjMTMKKwlhZGQJdzIxLHcyMSx3MTcJCQkvLyBoKz1DaChlLGYsZykKKwlhbmQJdzI4LHcyOCx3MTkJCQkvLyAoYl5jKSY9KGFeYikKKwllb3IJdzcsdzcsdzAscm9yIzE5CisJZW9yCXc4LHc4LHczLGxzciMzCS8vIHNpZ21hMChYW2krMV0pCisJYWRkCXcyMSx3MjEsdzE2CQkJLy8gaCs9U2lnbWExKGUpCisJZW9yCXcyOCx3MjgsdzIzCQkJLy8gTWFqKGEsYixjKQorCWVvcgl3MTcsdzksdzIyLHJvciMyMgkvLyBTaWdtYTAoYSkKKwllb3IJdzcsdzcsdzAsbHNyIzEwCS8vIHNpZ21hMShYW2krMTRdKQorCWFkZAl3Mix3Mix3MTEKKwlhZGQJdzI1LHcyNSx3MjEJCQkvLyBkKz1oCisJYWRkCXcyMSx3MjEsdzI4CQkJLy8gaCs9TWFqKGEsYixjKQorCWxkcgl3MjgsW3gzMF0sIzQJCS8vICpLKyssIHcxOSBpbiBuZXh0IHJvdW5kCisJYWRkCXcyLHcyLHc4CisJYWRkCXcyMSx3MjEsdzE3CQkJLy8gaCs9U2lnbWEwKGEpCisJYWRkCXcyLHcyLHc3CisJbGRyCXc3LFtzcCwjMF0KKwlzdHIJdzEwLFtzcCwjMTJdCisJcm9yCXcxNix3MjUsIzYKKwlhZGQJdzIwLHcyMCx3MjgJCQkvLyBoKz1LW2ldCisJcm9yCXc5LHc0LCM3CisJYW5kCXcxNyx3MjYsdzI1CisJcm9yCXc4LHcxLCMxNworCWJpYwl3MjgsdzI3LHcyNQorCXJvcgl3MTAsdzIxLCMyCisJYWRkCXcyMCx3MjAsdzIJCQkvLyBoKz1YW2ldCisJZW9yCXcxNix3MTYsdzI1LHJvciMxMQorCWVvcgl3OSx3OSx3NCxyb3IjMTgKKwlvcnIJdzE3LHcxNyx3MjgJCQkvLyBDaChlLGYsZykKKwllb3IJdzI4LHcyMSx3MjIJCQkvLyBhXmIsIGJeYyBpbiBuZXh0IHJvdW5kCisJZW9yCXcxNix3MTYsdzI1LHJvciMyNQkvLyBTaWdtYTEoZSkKKwllb3IJdzEwLHcxMCx3MjEscm9yIzEzCisJYWRkCXcyMCx3MjAsdzE3CQkJLy8gaCs9Q2goZSxmLGcpCisJYW5kCXcxOSx3MTksdzI4CQkJLy8gKGJeYykmPShhXmIpCisJZW9yCXc4LHc4LHcxLHJvciMxOQorCWVvcgl3OSx3OSx3NCxsc3IjMwkvLyBzaWdtYTAoWFtpKzFdKQorCWFkZAl3MjAsdzIwLHcxNgkJCS8vIGgrPVNpZ21hMShlKQorCWVvcgl3MTksdzE5LHcyMgkJCS8vIE1haihhLGIsYykKKwllb3IJdzE3LHcxMCx3MjEscm9yIzIyCS8vIFNpZ21hMChhKQorCWVvcgl3OCx3OCx3MSxsc3IjMTAJLy8gc2lnbWExKFhbaSsxNF0pCisJYWRkCXczLHczLHcxMgorCWFkZAl3MjQsdzI0LHcyMAkJCS8vIGQrPWgKKwlhZGQJdzIwLHcyMCx3MTkJCQkvLyBoKz1NYWooYSxiLGMpCisJbGRyCXcxOSxbeDMwXSwjNAkJLy8gKksrKywgdzI4IGluIG5leHQgcm91bmQKKwlhZGQJdzMsdzMsdzkKKwlhZGQJdzIwLHcyMCx3MTcJCQkvLyBoKz1TaWdtYTAoYSkKKwlhZGQJdzMsdzMsdzgKKwljYm56CXcxOSwuTG9vcF8xNl94eAorCisJbGRwCXgwLHgyLFt4MjksIzk2XQorCWxkcgl4MSxbeDI5LCMxMTJdCisJc3ViCXgzMCx4MzAsIzI2MAkJLy8gcmV3aW5kCisKKwlsZHAJdzMsdzQsW3gwXQorCWxkcAl3NSx3NixbeDAsIzIqNF0KKwlhZGQJeDEseDEsIzE0KjQJCQkvLyBhZHZhbmNlIGlucHV0IHBvaW50ZXIKKwlsZHAJdzcsdzgsW3gwLCM0KjRdCisJYWRkCXcyMCx3MjAsdzMKKwlsZHAJdzksdzEwLFt4MCwjNio0XQorCWFkZAl3MjEsdzIxLHc0CisJYWRkCXcyMix3MjIsdzUKKwlhZGQJdzIzLHcyMyx3NgorCXN0cAl3MjAsdzIxLFt4MF0KKwlhZGQJdzI0LHcyNCx3NworCWFkZAl3MjUsdzI1LHc4CisJc3RwCXcyMix3MjMsW3gwLCMyKjRdCisJYWRkCXcyNix3MjYsdzkKKwlhZGQJdzI3LHcyNyx3MTAKKwljbXAJeDEseDIKKwlzdHAJdzI0LHcyNSxbeDAsIzQqNF0KKwlzdHAJdzI2LHcyNyxbeDAsIzYqNF0KKwliLm5lCS5Mb29wCisKKwlsZHAJeDE5LHgyMCxbeDI5LCMxNl0KKwlhZGQJc3Asc3AsIzQqNAorCWxkcAl4MjEseDIyLFt4MjksIzMyXQorCWxkcAl4MjMseDI0LFt4MjksIzQ4XQorCWxkcAl4MjUseDI2LFt4MjksIzY0XQorCWxkcAl4MjcseDI4LFt4MjksIzgwXQorCWxkcAl4MjkseDMwLFtzcF0sIzEyOAorCXJldAorLnNpemUJc2hhMjU2X2Jsb2NrX2RhdGFfb3JkZXIsLi1zaGEyNTZfYmxvY2tfZGF0YV9vcmRlcgorCisuYWxpZ24JNgorLnR5cGUJSzI1Niwlb2JqZWN0CitLMjU2OgorCS5sb25nCTB4NDI4YTJmOTgsMHg3MTM3NDQ5MSwweGI1YzBmYmNmLDB4ZTliNWRiYTUKKwkubG9uZwkweDM5NTZjMjViLDB4NTlmMTExZjEsMHg5MjNmODJhNCwweGFiMWM1ZWQ1CisJLmxvbmcJMHhkODA3YWE5OCwweDEyODM1YjAxLDB4MjQzMTg1YmUsMHg1NTBjN2RjMworCS5sb25nCTB4NzJiZTVkNzQsMHg4MGRlYjFmZSwweDliZGMwNmE3LDB4YzE5YmYxNzQKKwkubG9uZwkweGU0OWI2OWMxLDB4ZWZiZTQ3ODYsMHgwZmMxOWRjNiwweDI0MGNhMWNjCisJLmxvbmcJMHgyZGU5MmM2ZiwweDRhNzQ4NGFhLDB4NWNiMGE5ZGMsMHg3NmY5ODhkYQorCS5sb25nCTB4OTgzZTUxNTIsMHhhODMxYzY2ZCwweGIwMDMyN2M4LDB4YmY1OTdmYzcKKwkubG9uZwkweGM2ZTAwYmYzLDB4ZDVhNzkxNDcsMHgwNmNhNjM1MSwweDE0MjkyOTY3CisJLmxvbmcJMHgyN2I3MGE4NSwweDJlMWIyMTM4LDB4NGQyYzZkZmMsMHg1MzM4MGQxMworCS5sb25nCTB4NjUwYTczNTQsMHg3NjZhMGFiYiwweDgxYzJjOTJlLDB4OTI3MjJjODUKKwkubG9uZwkweGEyYmZlOGExLDB4YTgxYTY2NGIsMHhjMjRiOGI3MCwweGM3NmM1MWEzCisJLmxvbmcJMHhkMTkyZTgxOSwweGQ2OTkwNjI0LDB4ZjQwZTM1ODUsMHgxMDZhYTA3MAorCS5sb25nCTB4MTlhNGMxMTYsMHgxZTM3NmMwOCwweDI3NDg3NzRjLDB4MzRiMGJjYjUKKwkubG9uZwkweDM5MWMwY2IzLDB4NGVkOGFhNGEsMHg1YjljY2E0ZiwweDY4MmU2ZmYzCisJLmxvbmcJMHg3NDhmODJlZSwweDc4YTU2MzZmLDB4ODRjODc4MTQsMHg4Y2M3MDIwOAorCS5sb25nCTB4OTBiZWZmZmEsMHhhNDUwNmNlYiwweGJlZjlhM2Y3LDB4YzY3MTc4ZjIKKwkubG9uZwkwCS8vdGVybWluYXRvcgorLnNpemUJSzI1NiwuLUsyNTYKKy5hbGlnbgkzCisuTE9QRU5TU0xfYXJtY2FwX1A6CisJLnF1YWQJT1BFTlNTTF9hcm1jYXBfUC0uCisuYXNjaXoJIlNIQTI1NiBibG9jayB0cmFuc2Zvcm0gZm9yIEFSTXY4LCBDUllQVE9HQU1TIGJ5IDxhcHByb0BvcGVuc3NsLm9yZz4iCisuYWxpZ24JMgorLnR5cGUJc2hhMjU2X2Jsb2NrX2FybXY4LCVmdW5jdGlvbgorLmFsaWduCTYKK3NoYTI1Nl9ibG9ja19hcm12ODoKKy5MdjhfZW50cnk6CisJc3RwCQl4MjkseDMwLFtzcCwjLTE2XSEKKwlhZGQJCXgyOSxzcCwjMAorCisJbGQxCQl7djAuNHMsdjEuNHN9LFt4MF0KKwlhZHIJCXgzLEsyNTYKKworLkxvb3BfaHc6CisJbGQxCQl7djQuMTZiLXY3LjE2Yn0sW3gxXSwjNjQKKwlzdWIJCXgyLHgyLCMxCisJbGQxCQl7djE2LjRzfSxbeDNdLCMxNgorCXJldjMyCQl2NC4xNmIsdjQuMTZiCisJcmV2MzIJCXY1LjE2Yix2NS4xNmIKKwlyZXYzMgkJdjYuMTZiLHY2LjE2YgorCXJldjMyCQl2Ny4xNmIsdjcuMTZiCisJb3JyCQl2MTguMTZiLHYwLjE2Yix2MC4xNmIJCS8vIG9mZmxvYWQKKwlvcnIJCXYxOS4xNmIsdjEuMTZiLHYxLjE2YgorCWxkMQkJe3YxNy40c30sW3gzXSwjMTYKKwlhZGQJCXYxNi40cyx2MTYuNHMsdjQuNHMKKwkuaW5zdAkweDVlMjgyOGE0CS8vc2hhMjU2c3UwIHY0LjE2Yix2NS4xNmIKKwlvcnIJCXYyLjE2Yix2MC4xNmIsdjAuMTZiCisJLmluc3QJMHg1ZTEwNDAyMAkvL3NoYTI1NmggdjAuMTZiLHYxLjE2Yix2MTYuNHMKKwkuaW5zdAkweDVlMTA1MDQxCS8vc2hhMjU2aDIgdjEuMTZiLHYyLjE2Yix2MTYuNHMKKwkuaW5zdAkweDVlMDc2MGM0CS8vc2hhMjU2c3UxIHY0LjE2Yix2Ni4xNmIsdjcuMTZiCisJbGQxCQl7djE2LjRzfSxbeDNdLCMxNgorCWFkZAkJdjE3LjRzLHYxNy40cyx2NS40cworCS5pbnN0CTB4NWUyODI4YzUJLy9zaGEyNTZzdTAgdjUuMTZiLHY2LjE2YgorCW9ycgkJdjIuMTZiLHYwLjE2Yix2MC4xNmIKKwkuaW5zdAkweDVlMTE0MDIwCS8vc2hhMjU2aCB2MC4xNmIsdjEuMTZiLHYxNy40cworCS5pbnN0CTB4NWUxMTUwNDEJLy9zaGEyNTZoMiB2MS4xNmIsdjIuMTZiLHYxNy40cworCS5pbnN0CTB4NWUwNDYwZTUJLy9zaGEyNTZzdTEgdjUuMTZiLHY3LjE2Yix2NC4xNmIKKwlsZDEJCXt2MTcuNHN9LFt4M10sIzE2CisJYWRkCQl2MTYuNHMsdjE2LjRzLHY2LjRzCisJLmluc3QJMHg1ZTI4MjhlNgkvL3NoYTI1NnN1MCB2Ni4xNmIsdjcuMTZiCisJb3JyCQl2Mi4xNmIsdjAuMTZiLHYwLjE2YgorCS5pbnN0CTB4NWUxMDQwMjAJLy9zaGEyNTZoIHYwLjE2Yix2MS4xNmIsdjE2LjRzCisJLmluc3QJMHg1ZTEwNTA0MQkvL3NoYTI1NmgyIHYxLjE2Yix2Mi4xNmIsdjE2LjRzCisJLmluc3QJMHg1ZTA1NjA4NgkvL3NoYTI1NnN1MSB2Ni4xNmIsdjQuMTZiLHY1LjE2YgorCWxkMQkJe3YxNi40c30sW3gzXSwjMTYKKwlhZGQJCXYxNy40cyx2MTcuNHMsdjcuNHMKKwkuaW5zdAkweDVlMjgyODg3CS8vc2hhMjU2c3UwIHY3LjE2Yix2NC4xNmIKKwlvcnIJCXYyLjE2Yix2MC4xNmIsdjAuMTZiCisJLmluc3QJMHg1ZTExNDAyMAkvL3NoYTI1NmggdjAuMTZiLHYxLjE2Yix2MTcuNHMKKwkuaW5zdAkweDVlMTE1MDQxCS8vc2hhMjU2aDIgdjEuMTZiLHYyLjE2Yix2MTcuNHMKKwkuaW5zdAkweDVlMDY2MGE3CS8vc2hhMjU2c3UxIHY3LjE2Yix2NS4xNmIsdjYuMTZiCisJbGQxCQl7djE3LjRzfSxbeDNdLCMxNgorCWFkZAkJdjE2LjRzLHYxNi40cyx2NC40cworCS5pbnN0CTB4NWUyODI4YTQJLy9zaGEyNTZzdTAgdjQuMTZiLHY1LjE2YgorCW9ycgkJdjIuMTZiLHYwLjE2Yix2MC4xNmIKKwkuaW5zdAkweDVlMTA0MDIwCS8vc2hhMjU2aCB2MC4xNmIsdjEuMTZiLHYxNi40cworCS5pbnN0CTB4NWUxMDUwNDEJLy9zaGEyNTZoMiB2MS4xNmIsdjIuMTZiLHYxNi40cworCS5pbnN0CTB4NWUwNzYwYzQJLy9zaGEyNTZzdTEgdjQuMTZiLHY2LjE2Yix2Ny4xNmIKKwlsZDEJCXt2MTYuNHN9LFt4M10sIzE2CisJYWRkCQl2MTcuNHMsdjE3LjRzLHY1LjRzCisJLmluc3QJMHg1ZTI4MjhjNQkvL3NoYTI1NnN1MCB2NS4xNmIsdjYuMTZiCisJb3JyCQl2Mi4xNmIsdjAuMTZiLHYwLjE2YgorCS5pbnN0CTB4NWUxMTQwMjAJLy9zaGEyNTZoIHYwLjE2Yix2MS4xNmIsdjE3LjRzCisJLmluc3QJMHg1ZTExNTA0MQkvL3NoYTI1NmgyIHYxLjE2Yix2Mi4xNmIsdjE3LjRzCisJLmluc3QJMHg1ZTA0NjBlNQkvL3NoYTI1NnN1MSB2NS4xNmIsdjcuMTZiLHY0LjE2YgorCWxkMQkJe3YxNy40c30sW3gzXSwjMTYKKwlhZGQJCXYxNi40cyx2MTYuNHMsdjYuNHMKKwkuaW5zdAkweDVlMjgyOGU2CS8vc2hhMjU2c3UwIHY2LjE2Yix2Ny4xNmIKKwlvcnIJCXYyLjE2Yix2MC4xNmIsdjAuMTZiCisJLmluc3QJMHg1ZTEwNDAyMAkvL3NoYTI1NmggdjAuMTZiLHYxLjE2Yix2MTYuNHMKKwkuaW5zdAkweDVlMTA1MDQxCS8vc2hhMjU2aDIgdjEuMTZiLHYyLjE2Yix2MTYuNHMKKwkuaW5zdAkweDVlMDU2MDg2CS8vc2hhMjU2c3UxIHY2LjE2Yix2NC4xNmIsdjUuMTZiCisJbGQxCQl7djE2LjRzfSxbeDNdLCMxNgorCWFkZAkJdjE3LjRzLHYxNy40cyx2Ny40cworCS5pbnN0CTB4NWUyODI4ODcJLy9zaGEyNTZzdTAgdjcuMTZiLHY0LjE2YgorCW9ycgkJdjIuMTZiLHYwLjE2Yix2MC4xNmIKKwkuaW5zdAkweDVlMTE0MDIwCS8vc2hhMjU2aCB2MC4xNmIsdjEuMTZiLHYxNy40cworCS5pbnN0CTB4NWUxMTUwNDEJLy9zaGEyNTZoMiB2MS4xNmIsdjIuMTZiLHYxNy40cworCS5pbnN0CTB4NWUwNjYwYTcJLy9zaGEyNTZzdTEgdjcuMTZiLHY1LjE2Yix2Ni4xNmIKKwlsZDEJCXt2MTcuNHN9LFt4M10sIzE2CisJYWRkCQl2MTYuNHMsdjE2LjRzLHY0LjRzCisJLmluc3QJMHg1ZTI4MjhhNAkvL3NoYTI1NnN1MCB2NC4xNmIsdjUuMTZiCisJb3JyCQl2Mi4xNmIsdjAuMTZiLHYwLjE2YgorCS5pbnN0CTB4NWUxMDQwMjAJLy9zaGEyNTZoIHYwLjE2Yix2MS4xNmIsdjE2LjRzCisJLmluc3QJMHg1ZTEwNTA0MQkvL3NoYTI1NmgyIHYxLjE2Yix2Mi4xNmIsdjE2LjRzCisJLmluc3QJMHg1ZTA3NjBjNAkvL3NoYTI1NnN1MSB2NC4xNmIsdjYuMTZiLHY3LjE2YgorCWxkMQkJe3YxNi40c30sW3gzXSwjMTYKKwlhZGQJCXYxNy40cyx2MTcuNHMsdjUuNHMKKwkuaW5zdAkweDVlMjgyOGM1CS8vc2hhMjU2c3UwIHY1LjE2Yix2Ni4xNmIKKwlvcnIJCXYyLjE2Yix2MC4xNmIsdjAuMTZiCisJLmluc3QJMHg1ZTExNDAyMAkvL3NoYTI1NmggdjAuMTZiLHYxLjE2Yix2MTcuNHMKKwkuaW5zdAkweDVlMTE1MDQxCS8vc2hhMjU2aDIgdjEuMTZiLHYyLjE2Yix2MTcuNHMKKwkuaW5zdAkweDVlMDQ2MGU1CS8vc2hhMjU2c3UxIHY1LjE2Yix2Ny4xNmIsdjQuMTZiCisJbGQxCQl7djE3LjRzfSxbeDNdLCMxNgorCWFkZAkJdjE2LjRzLHYxNi40cyx2Ni40cworCS5pbnN0CTB4NWUyODI4ZTYJLy9zaGEyNTZzdTAgdjYuMTZiLHY3LjE2YgorCW9ycgkJdjIuMTZiLHYwLjE2Yix2MC4xNmIKKwkuaW5zdAkweDVlMTA0MDIwCS8vc2hhMjU2aCB2MC4xNmIsdjEuMTZiLHYxNi40cworCS5pbnN0CTB4NWUxMDUwNDEJLy9zaGEyNTZoMiB2MS4xNmIsdjIuMTZiLHYxNi40cworCS5pbnN0CTB4NWUwNTYwODYJLy9zaGEyNTZzdTEgdjYuMTZiLHY0LjE2Yix2NS4xNmIKKwlsZDEJCXt2MTYuNHN9LFt4M10sIzE2CisJYWRkCQl2MTcuNHMsdjE3LjRzLHY3LjRzCisJLmluc3QJMHg1ZTI4Mjg4NwkvL3NoYTI1NnN1MCB2Ny4xNmIsdjQuMTZiCisJb3JyCQl2Mi4xNmIsdjAuMTZiLHYwLjE2YgorCS5pbnN0CTB4NWUxMTQwMjAJLy9zaGEyNTZoIHYwLjE2Yix2MS4xNmIsdjE3LjRzCisJLmluc3QJMHg1ZTExNTA0MQkvL3NoYTI1NmgyIHYxLjE2Yix2Mi4xNmIsdjE3LjRzCisJLmluc3QJMHg1ZTA2NjBhNwkvL3NoYTI1NnN1MSB2Ny4xNmIsdjUuMTZiLHY2LjE2YgorCWxkMQkJe3YxNy40c30sW3gzXSwjMTYKKwlhZGQJCXYxNi40cyx2MTYuNHMsdjQuNHMKKwlvcnIJCXYyLjE2Yix2MC4xNmIsdjAuMTZiCisJLmluc3QJMHg1ZTEwNDAyMAkvL3NoYTI1NmggdjAuMTZiLHYxLjE2Yix2MTYuNHMKKwkuaW5zdAkweDVlMTA1MDQxCS8vc2hhMjU2aDIgdjEuMTZiLHYyLjE2Yix2MTYuNHMKKworCWxkMQkJe3YxNi40c30sW3gzXSwjMTYKKwlhZGQJCXYxNy40cyx2MTcuNHMsdjUuNHMKKwlvcnIJCXYyLjE2Yix2MC4xNmIsdjAuMTZiCisJLmluc3QJMHg1ZTExNDAyMAkvL3NoYTI1NmggdjAuMTZiLHYxLjE2Yix2MTcuNHMKKwkuaW5zdAkweDVlMTE1MDQxCS8vc2hhMjU2aDIgdjEuMTZiLHYyLjE2Yix2MTcuNHMKKworCWxkMQkJe3YxNy40c30sW3gzXQorCWFkZAkJdjE2LjRzLHYxNi40cyx2Ni40cworCXN1YgkJeDMseDMsIzY0KjQtMTYJLy8gcmV3aW5kCisJb3JyCQl2Mi4xNmIsdjAuMTZiLHYwLjE2YgorCS5pbnN0CTB4NWUxMDQwMjAJLy9zaGEyNTZoIHYwLjE2Yix2MS4xNmIsdjE2LjRzCisJLmluc3QJMHg1ZTEwNTA0MQkvL3NoYTI1NmgyIHYxLjE2Yix2Mi4xNmIsdjE2LjRzCisKKwlhZGQJCXYxNy40cyx2MTcuNHMsdjcuNHMKKwlvcnIJCXYyLjE2Yix2MC4xNmIsdjAuMTZiCisJLmluc3QJMHg1ZTExNDAyMAkvL3NoYTI1NmggdjAuMTZiLHYxLjE2Yix2MTcuNHMKKwkuaW5zdAkweDVlMTE1MDQxCS8vc2hhMjU2aDIgdjEuMTZiLHYyLjE2Yix2MTcuNHMKKworCWFkZAkJdjAuNHMsdjAuNHMsdjE4LjRzCisJYWRkCQl2MS40cyx2MS40cyx2MTkuNHMKKworCWNibnoJCXgyLC5Mb29wX2h3CisKKwlzdDEJCXt2MC40cyx2MS40c30sW3gwXQorCisJbGRyCQl4MjksW3NwXSwjMTYKKwlyZXQKKy5zaXplCXNoYTI1Nl9ibG9ja19hcm12OCwuLXNoYTI1Nl9ibG9ja19hcm12OAorLmNvbW0JT1BFTlNTTF9hcm1jYXBfUCw0LDQKZGlmZiAtLWdpdCBhL2NyeXB0by9zaGEvYXNtL3NoYTUxMi01ODYuUyBiL2NyeXB0by9zaGEvYXNtL3NoYTUxMi01ODYuUwppbmRleCA0YjgwNmYzLi44MmM3NmM0IDEwMDY0NAotLS0gYS9jcnlwdG8vc2hhL2FzbS9zaGE1MTItNTg2LlMKKysrIGIvY3J5cHRvL3NoYS9hc20vc2hhNTEyLTU4Ni5TCkBAIC0yNSw2ICsyNSwyNzggQEAKIAltb3ZsCSVlZGksNCglZXNwKQogCW1vdmwJJWVheCw4KCVlc3ApCiAJbW92bAklZWJ4LDEyKCVlc3ApCisJbGVhbAlfR0xPQkFMX09GRlNFVF9UQUJMRV8rWy4tLkwwMDFLNTEyXSglZWJwKSwlZWR4CisJbW92bAlPUEVOU1NMX2lhMzJjYXBfUEBHT1QoJWVkeCksJWVkeAorCWJ0bAkkMjYsKCVlZHgpCisJam5jCS5MMDAybG9vcF94ODYKKwltb3ZxCSglZXNpKSwlbW0wCisJbW92cQk4KCVlc2kpLCVtbTEKKwltb3ZxCTE2KCVlc2kpLCVtbTIKKwltb3ZxCTI0KCVlc2kpLCVtbTMKKwltb3ZxCTMyKCVlc2kpLCVtbTQKKwltb3ZxCTQwKCVlc2kpLCVtbTUKKwltb3ZxCTQ4KCVlc2kpLCVtbTYKKwltb3ZxCTU2KCVlc2kpLCVtbTcKKwlzdWJsCSQ4MCwlZXNwCisuYWxpZ24JMTYKKy5MMDAzbG9vcF9zc2UyOgorCW1vdnEJJW1tMSw4KCVlc3ApCisJbW92cQklbW0yLDE2KCVlc3ApCisJbW92cQklbW0zLDI0KCVlc3ApCisJbW92cQklbW01LDQwKCVlc3ApCisJbW92cQklbW02LDQ4KCVlc3ApCisJbW92cQklbW03LDU2KCVlc3ApCisJbW92bAkoJWVkaSksJWVjeAorCW1vdmwJNCglZWRpKSwlZWR4CisJYWRkbAkkOCwlZWRpCisJYnN3YXAJJWVjeAorCWJzd2FwCSVlZHgKKwltb3ZsCSVlY3gsNzYoJWVzcCkKKwltb3ZsCSVlZHgsNzIoJWVzcCkKKy5hbGlnbgkxNgorLkwwMDQwMF8xNF9zc2UyOgorCW1vdmwJKCVlZGkpLCVlYXgKKwltb3ZsCTQoJWVkaSksJWVieAorCWFkZGwJJDgsJWVkaQorCWJzd2FwCSVlYXgKKwlic3dhcAklZWJ4CisJbW92bAklZWF4LDY4KCVlc3ApCisJbW92bAklZWJ4LDY0KCVlc3ApCisJbW92cQk0MCglZXNwKSwlbW01CisJbW92cQk0OCglZXNwKSwlbW02CisJbW92cQk1NiglZXNwKSwlbW03CisJbW92cQklbW00LCVtbTEKKwltb3ZxCSVtbTQsJW1tMgorCXBzcmxxCSQxNCwlbW0xCisJbW92cQklbW00LDMyKCVlc3ApCisJcHNsbHEJJDIzLCVtbTIKKwltb3ZxCSVtbTEsJW1tMworCXBzcmxxCSQ0LCVtbTEKKwlweG9yCSVtbTIsJW1tMworCXBzbGxxCSQyMywlbW0yCisJcHhvcgklbW0xLCVtbTMKKwlwc3JscQkkMjMsJW1tMQorCXB4b3IJJW1tMiwlbW0zCisJcHNsbHEJJDQsJW1tMgorCXB4b3IJJW1tMSwlbW0zCisJcGFkZHEJKCVlYnApLCVtbTcKKwlweG9yCSVtbTIsJW1tMworCXB4b3IJJW1tNiwlbW01CisJbW92cQk4KCVlc3ApLCVtbTEKKwlwYW5kCSVtbTQsJW1tNQorCW1vdnEJMTYoJWVzcCksJW1tMgorCXB4b3IJJW1tNiwlbW01CisJbW92cQkyNCglZXNwKSwlbW00CisJcGFkZHEJJW1tNSwlbW0zCisJbW92cQklbW0wLCglZXNwKQorCXBhZGRxCSVtbTcsJW1tMworCW1vdnEJJW1tMCwlbW01CisJbW92cQklbW0wLCVtbTYKKwlwYWRkcQk3MiglZXNwKSwlbW0zCisJcHNybHEJJDI4LCVtbTUKKwlwYWRkcQklbW0zLCVtbTQKKwlwc2xscQkkMjUsJW1tNgorCW1vdnEJJW1tNSwlbW03CisJcHNybHEJJDYsJW1tNQorCXB4b3IJJW1tNiwlbW03CisJcHNsbHEJJDUsJW1tNgorCXB4b3IJJW1tNSwlbW03CisJcHNybHEJJDUsJW1tNQorCXB4b3IJJW1tNiwlbW03CisJcHNsbHEJJDYsJW1tNgorCXB4b3IJJW1tNSwlbW03CisJc3VibAkkOCwlZXNwCisJcHhvcgklbW02LCVtbTcKKwltb3ZxCSVtbTAsJW1tNQorCXBvcgklbW0yLCVtbTAKKwlwYW5kCSVtbTIsJW1tNQorCXBhbmQJJW1tMSwlbW0wCisJcG9yCSVtbTAsJW1tNQorCXBhZGRxCSVtbTUsJW1tNworCW1vdnEJJW1tMywlbW0wCisJbW92YgkoJWVicCksJWRsCisJcGFkZHEJJW1tNywlbW0wCisJYWRkbAkkOCwlZWJwCisJY21wYgkkNTMsJWRsCisJam5lCS5MMDA0MDBfMTRfc3NlMgorCW1vdnEJNDAoJWVzcCksJW1tNQorCW1vdnEJNDgoJWVzcCksJW1tNgorCW1vdnEJNTYoJWVzcCksJW1tNworCW1vdnEJJW1tNCwlbW0xCisJbW92cQklbW00LCVtbTIKKwlwc3JscQkkMTQsJW1tMQorCW1vdnEJJW1tNCwzMiglZXNwKQorCXBzbGxxCSQyMywlbW0yCisJbW92cQklbW0xLCVtbTMKKwlwc3JscQkkNCwlbW0xCisJcHhvcgklbW0yLCVtbTMKKwlwc2xscQkkMjMsJW1tMgorCXB4b3IJJW1tMSwlbW0zCisJcHNybHEJJDIzLCVtbTEKKwlweG9yCSVtbTIsJW1tMworCXBzbGxxCSQ0LCVtbTIKKwlweG9yCSVtbTEsJW1tMworCXBhZGRxCSglZWJwKSwlbW03CisJcHhvcgklbW0yLCVtbTMKKwlweG9yCSVtbTYsJW1tNQorCW1vdnEJOCglZXNwKSwlbW0xCisJcGFuZAklbW00LCVtbTUKKwltb3ZxCTE2KCVlc3ApLCVtbTIKKwlweG9yCSVtbTYsJW1tNQorCW1vdnEJMjQoJWVzcCksJW1tNAorCXBhZGRxCSVtbTUsJW1tMworCW1vdnEJJW1tMCwoJWVzcCkKKwlwYWRkcQklbW03LCVtbTMKKwltb3ZxCSVtbTAsJW1tNQorCW1vdnEJJW1tMCwlbW02CisJcGFkZHEJNzIoJWVzcCksJW1tMworCXBzcmxxCSQyOCwlbW01CisJcGFkZHEJJW1tMywlbW00CisJcHNsbHEJJDI1LCVtbTYKKwltb3ZxCSVtbTUsJW1tNworCXBzcmxxCSQ2LCVtbTUKKwlweG9yCSVtbTYsJW1tNworCXBzbGxxCSQ1LCVtbTYKKwlweG9yCSVtbTUsJW1tNworCXBzcmxxCSQ1LCVtbTUKKwlweG9yCSVtbTYsJW1tNworCXBzbGxxCSQ2LCVtbTYKKwlweG9yCSVtbTUsJW1tNworCXN1YmwJJDgsJWVzcAorCXB4b3IJJW1tNiwlbW03CisJbW92cQklbW0wLCVtbTUKKwlwb3IJJW1tMiwlbW0wCisJbW92cQk4OCglZXNwKSwlbW02CisJcGFuZAklbW0yLCVtbTUKKwlwYW5kCSVtbTEsJW1tMAorCW1vdnEJMTkyKCVlc3ApLCVtbTIKKwlwb3IJJW1tMCwlbW01CisJcGFkZHEJJW1tNSwlbW03CisJbW92cQklbW0zLCVtbTAKKwltb3ZiCSglZWJwKSwlZGwKKwlwYWRkcQklbW03LCVtbTAKKwlhZGRsCSQ4LCVlYnAKKy5hbGlnbgkxNgorLkwwMDUxNl83OV9zc2UyOgorCW1vdnEJJW1tMiwlbW0xCisJcHNybHEJJDEsJW1tMgorCW1vdnEJJW1tNiwlbW03CisJcHNybHEJJDYsJW1tNgorCW1vdnEJJW1tMiwlbW0zCisJcHNybHEJJDYsJW1tMgorCW1vdnEJJW1tNiwlbW01CisJcHNybHEJJDEzLCVtbTYKKwlweG9yCSVtbTIsJW1tMworCXBzcmxxCSQxLCVtbTIKKwlweG9yCSVtbTYsJW1tNQorCXBzcmxxCSQ0MiwlbW02CisJcHhvcgklbW0yLCVtbTMKKwltb3ZxCTIwMCglZXNwKSwlbW0yCisJcHNsbHEJJDU2LCVtbTEKKwlweG9yCSVtbTYsJW1tNQorCXBzbGxxCSQzLCVtbTcKKwlweG9yCSVtbTEsJW1tMworCXBhZGRxCTEyOCglZXNwKSwlbW0yCisJcHNsbHEJJDcsJW1tMQorCXB4b3IJJW1tNywlbW01CisJcHNsbHEJJDQyLCVtbTcKKwlweG9yCSVtbTEsJW1tMworCXB4b3IJJW1tNywlbW01CisJcGFkZHEJJW1tNSwlbW0zCisJcGFkZHEJJW1tMiwlbW0zCisJbW92cQklbW0zLDcyKCVlc3ApCisJbW92cQk0MCglZXNwKSwlbW01CisJbW92cQk0OCglZXNwKSwlbW02CisJbW92cQk1NiglZXNwKSwlbW03CisJbW92cQklbW00LCVtbTEKKwltb3ZxCSVtbTQsJW1tMgorCXBzcmxxCSQxNCwlbW0xCisJbW92cQklbW00LDMyKCVlc3ApCisJcHNsbHEJJDIzLCVtbTIKKwltb3ZxCSVtbTEsJW1tMworCXBzcmxxCSQ0LCVtbTEKKwlweG9yCSVtbTIsJW1tMworCXBzbGxxCSQyMywlbW0yCisJcHhvcgklbW0xLCVtbTMKKwlwc3JscQkkMjMsJW1tMQorCXB4b3IJJW1tMiwlbW0zCisJcHNsbHEJJDQsJW1tMgorCXB4b3IJJW1tMSwlbW0zCisJcGFkZHEJKCVlYnApLCVtbTcKKwlweG9yCSVtbTIsJW1tMworCXB4b3IJJW1tNiwlbW01CisJbW92cQk4KCVlc3ApLCVtbTEKKwlwYW5kCSVtbTQsJW1tNQorCW1vdnEJMTYoJWVzcCksJW1tMgorCXB4b3IJJW1tNiwlbW01CisJbW92cQkyNCglZXNwKSwlbW00CisJcGFkZHEJJW1tNSwlbW0zCisJbW92cQklbW0wLCglZXNwKQorCXBhZGRxCSVtbTcsJW1tMworCW1vdnEJJW1tMCwlbW01CisJbW92cQklbW0wLCVtbTYKKwlwYWRkcQk3MiglZXNwKSwlbW0zCisJcHNybHEJJDI4LCVtbTUKKwlwYWRkcQklbW0zLCVtbTQKKwlwc2xscQkkMjUsJW1tNgorCW1vdnEJJW1tNSwlbW03CisJcHNybHEJJDYsJW1tNQorCXB4b3IJJW1tNiwlbW03CisJcHNsbHEJJDUsJW1tNgorCXB4b3IJJW1tNSwlbW03CisJcHNybHEJJDUsJW1tNQorCXB4b3IJJW1tNiwlbW03CisJcHNsbHEJJDYsJW1tNgorCXB4b3IJJW1tNSwlbW03CisJc3VibAkkOCwlZXNwCisJcHhvcgklbW02LCVtbTcKKwltb3ZxCSVtbTAsJW1tNQorCXBvcgklbW0yLCVtbTAKKwltb3ZxCTg4KCVlc3ApLCVtbTYKKwlwYW5kCSVtbTIsJW1tNQorCXBhbmQJJW1tMSwlbW0wCisJbW92cQkxOTIoJWVzcCksJW1tMgorCXBvcgklbW0wLCVtbTUKKwlwYWRkcQklbW01LCVtbTcKKwltb3ZxCSVtbTMsJW1tMAorCW1vdmIJKCVlYnApLCVkbAorCXBhZGRxCSVtbTcsJW1tMAorCWFkZGwJJDgsJWVicAorCWNtcGIJJDIzLCVkbAorCWpuZQkuTDAwNTE2Xzc5X3NzZTIKKwltb3ZxCTgoJWVzcCksJW1tMQorCW1vdnEJMTYoJWVzcCksJW1tMgorCW1vdnEJMjQoJWVzcCksJW1tMworCW1vdnEJNDAoJWVzcCksJW1tNQorCW1vdnEJNDgoJWVzcCksJW1tNgorCW1vdnEJNTYoJWVzcCksJW1tNworCXBhZGRxCSglZXNpKSwlbW0wCisJcGFkZHEJOCglZXNpKSwlbW0xCisJcGFkZHEJMTYoJWVzaSksJW1tMgorCXBhZGRxCTI0KCVlc2kpLCVtbTMKKwlwYWRkcQkzMiglZXNpKSwlbW00CisJcGFkZHEJNDAoJWVzaSksJW1tNQorCXBhZGRxCTQ4KCVlc2kpLCVtbTYKKwlwYWRkcQk1NiglZXNpKSwlbW03CisJbW92cQklbW0wLCglZXNpKQorCW1vdnEJJW1tMSw4KCVlc2kpCisJbW92cQklbW0yLDE2KCVlc2kpCisJbW92cQklbW0zLDI0KCVlc2kpCisJbW92cQklbW00LDMyKCVlc2kpCisJbW92cQklbW01LDQwKCVlc2kpCisJbW92cQklbW02LDQ4KCVlc2kpCisJbW92cQklbW03LDU2KCVlc2kpCisJYWRkbAkkNjQwLCVlc3AKKwlzdWJsCSQ2NDAsJWVicAorCWNtcGwJODgoJWVzcCksJWVkaQorCWpiCS5MMDAzbG9vcF9zc2UyCisJZW1tcworCW1vdmwJOTIoJWVzcCksJWVzcAorCXBvcGwJJWVkaQorCXBvcGwJJWVzaQorCXBvcGwJJWVieAorCXBvcGwJJWVicAorCXJldAogLmFsaWduCTE2CiAuTDAwMmxvb3BfeDg2OgogCW1vdmwJKCVlZGkpLCVlYXgKQEAgLTEzMCw3ICs0MDIsNyBAQAogCW1vdmwJJDE2LCVlY3gKIC5sb25nCTI3ODQyMjkwMDEKIC5hbGlnbgkxNgotLkwwMDMwMF8xNV94ODY6CisuTDAwNjAwXzE1X3g4NjoKIAltb3ZsCTQwKCVlc3ApLCVlY3gKIAltb3ZsCTQ0KCVlc3ApLCVlZHgKIAltb3ZsCSVlY3gsJWVzaQpAQCAtMjM3LDkgKzUwOSw5IEBACiAJc3VibAkkOCwlZXNwCiAJbGVhbAk4KCVlYnApLCVlYnAKIAljbXBiCSQxNDgsJWRsCi0Jam5lCS5MMDAzMDBfMTVfeDg2CisJam5lCS5MMDA2MDBfMTVfeDg2CiAuYWxpZ24JMTYKLS5MMDA0MTZfNzlfeDg2OgorLkwwMDcxNl83OV94ODY6CiAJbW92bAkzMTIoJWVzcCksJWVjeAogCW1vdmwJMzE2KCVlc3ApLCVlZHgKIAltb3ZsCSVlY3gsJWVzaQpAQCAtNDEyLDcgKzY4NCw3IEBACiAJc3VibAkkOCwlZXNwCiAJbGVhbAk4KCVlYnApLCVlYnAKIAljbXBiCSQyMywlZGwKLQlqbmUJLkwwMDQxNl83OV94ODYKKwlqbmUJLkwwMDcxNl83OV94ODYKIAltb3ZsCTg0MCglZXNwKSwlZXNpCiAJbW92bAk4NDQoJWVzcCksJWVkaQogCW1vdmwJKCVlc2kpLCVlYXgKQEAgLTU2MSwzICs4MzMsNCBAQAogLmJ5dGUJNjcsODIsODksODAsODQsNzksNzEsNjUsNzcsODMsMzIsOTgsMTIxLDMyLDYwLDk3CiAuYnl0ZQkxMTIsMTEyLDExNCwxMTEsNjQsMTExLDExMiwxMDEsMTEwLDExNSwxMTUsMTA4LDQ2LDExMSwxMTQsMTAzCiAuYnl0ZQk2MiwwCisuY29tbQlPUEVOU1NMX2lhMzJjYXBfUCw4LDQKZGlmZiAtLWdpdCBhL2NyeXB0by9zaGEvYXNtL3NoYTUxMi1hcm12NC5TIGIvY3J5cHRvL3NoYS9hc20vc2hhNTEyLWFybXY0LlMKaW5kZXggNTczMDE5Mi4uZmQ0NjI3NyAxMDA2NDQKLS0tIGEvY3J5cHRvL3NoYS9hc20vc2hhNTEyLWFybXY0LlMKKysrIGIvY3J5cHRvL3NoYS9hc20vc2hhNTEyLWFybXY0LlMKQEAgLTE3NzUsNyArMTc3NSw3IEBACiAJYm5lCQkuTG9vcF9uZW9uCiAKIAl2bGRtaWEJc3AhLHtkOC1kMTV9CQlAIGVwaWxvZ3VlCi0JLndvcmQJMHhlMTJmZmYxZQorCWJ4CWxyCQkJCUAgLndvcmQJMHhlMTJmZmYxZQogI2VuZGlmCiAuc2l6ZQlzaGE1MTJfYmxvY2tfZGF0YV9vcmRlciwuLXNoYTUxMl9ibG9ja19kYXRhX29yZGVyCiAuYXNjaXoJIlNIQTUxMiBibG9jayB0cmFuc2Zvcm0gZm9yIEFSTXY0L05FT04sIENSWVBUT0dBTVMgYnkgPGFwcHJvQG9wZW5zc2wub3JnPiIKZGlmZiAtLWdpdCBhL2NyeXB0by9zaGEvYXNtL3NoYTUxMi1hcm12NC5wbCBiL2NyeXB0by9zaGEvYXNtL3NoYTUxMi1hcm12NC5wbAppbmRleCA3ZmFmMzdiLi43MWFhOTM1IDEwMDY0NAotLS0gYS9jcnlwdG8vc2hhL2FzbS9zaGE1MTItYXJtdjQucGwKKysrIGIvY3J5cHRvL3NoYS9hc20vc2hhNTEyLWFybXY0LnBsCkBAIC01NjUsNyArNTY1LDcgQEAKIAlibmUJCS5Mb29wX25lb24KIAogCXZsZG1pYQlzcCEse2Q4LWQxNX0JCUAgZXBpbG9ndWUKLQlieAlscgorCXJldAkJCQlAIGJ4IGxyCiAjZW5kaWYKIF9fXwogfQpAQCAtNTc4LDUgKzU3OCw2IEBACiAKICRjb2RlID1+IHMvXGAoW15cYF0qKVxgL2V2YWwgJDEvZ2VtOwogJGNvZGUgPX4gcy9cYmJ4XHMrbHJcYi8ud29yZFx0MHhlMTJmZmYxZS9nbTsJIyBtYWtlIGl0IHBvc3NpYmxlIHRvIGNvbXBpbGUgd2l0aCAtbWFyY2g9YXJtdjQKKyRjb2RlID1+IHMvXGJyZXRcYi9ieAlsci9nbTsKIHByaW50ICRjb2RlOwogY2xvc2UgU1RET1VUOyAjIGVuZm9yY2UgZmx1c2gKZGlmZiAtLWdpdCBhL2NyeXB0by9zaGEvYXNtL3NoYTUxMi1hcm12OC5TIGIvY3J5cHRvL3NoYS9hc20vc2hhNTEyLWFybXY4LlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmIwZDE5NAotLS0gL2Rldi9udWxsCisrKyBiL2NyeXB0by9zaGEvYXNtL3NoYTUxMi1hcm12OC5TCkBAIC0wLDAgKzEsMTAyMSBAQAorI2luY2x1ZGUgImFybV9hcmNoLmgiCisKKy50ZXh0CisKKy5nbG9ibAlzaGE1MTJfYmxvY2tfZGF0YV9vcmRlcgorLnR5cGUJc2hhNTEyX2Jsb2NrX2RhdGFfb3JkZXIsJWZ1bmN0aW9uCisuYWxpZ24JNgorc2hhNTEyX2Jsb2NrX2RhdGFfb3JkZXI6CisJc3RwCXgyOSx4MzAsW3NwLCMtMTI4XSEKKwlhZGQJeDI5LHNwLCMwCisKKwlzdHAJeDE5LHgyMCxbc3AsIzE2XQorCXN0cAl4MjEseDIyLFtzcCwjMzJdCisJc3RwCXgyMyx4MjQsW3NwLCM0OF0KKwlzdHAJeDI1LHgyNixbc3AsIzY0XQorCXN0cAl4MjcseDI4LFtzcCwjODBdCisJc3ViCXNwLHNwLCM0KjgKKworCWxkcAl4MjAseDIxLFt4MF0JCQkJLy8gbG9hZCBjb250ZXh0CisJbGRwCXgyMix4MjMsW3gwLCMyKjhdCisJbGRwCXgyNCx4MjUsW3gwLCM0KjhdCisJYWRkCXgyLHgxLHgyLGxzbCM3CS8vIGVuZCBvZiBpbnB1dAorCWxkcAl4MjYseDI3LFt4MCwjNio4XQorCWFkcgl4MzAsSzUxMgorCXN0cAl4MCx4MixbeDI5LCM5Nl0KKworLkxvb3A6CisJbGRwCXgzLHg0LFt4MV0sIzIqOAorCWxkcgl4MTksW3gzMF0sIzgJCQkvLyAqSysrCisJZW9yCXgyOCx4MjEseDIyCQkJCS8vIG1hZ2ljIHNlZWQKKwlzdHIJeDEsW3gyOSwjMTEyXQorI2lmbmRlZglfX0FSTUVCX18KKwlyZXYJeDMseDMJCQkvLyAwCisjZW5kaWYKKwlyb3IJeDE2LHgyNCwjMTQKKwlhZGQJeDI3LHgyNyx4MTkJCQkvLyBoKz1LW2ldCisJZW9yCXg2LHgyNCx4MjQscm9yIzIzCisJYW5kCXgxNyx4MjUseDI0CisJYmljCXgxOSx4MjYseDI0CisJYWRkCXgyNyx4MjcseDMJCQkvLyBoKz1YW2ldCisJb3JyCXgxNyx4MTcseDE5CQkJLy8gQ2goZSxmLGcpCisJZW9yCXgxOSx4MjAseDIxCQkJLy8gYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorCWVvcgl4MTYseDE2LHg2LHJvciMxOAkvLyBTaWdtYTEoZSkKKwlyb3IJeDYseDIwLCMyOAorCWFkZAl4MjcseDI3LHgxNwkJCS8vIGgrPUNoKGUsZixnKQorCWVvcgl4MTcseDIwLHgyMCxyb3IjNQorCWFkZAl4MjcseDI3LHgxNgkJCS8vIGgrPVNpZ21hMShlKQorCWFuZAl4MjgseDI4LHgxOQkJCS8vIChiXmMpJj0oYV5iKQorCWFkZAl4MjMseDIzLHgyNwkJCS8vIGQrPWgKKwllb3IJeDI4LHgyOCx4MjEJCQkvLyBNYWooYSxiLGMpCisJZW9yCXgxNyx4Nix4MTcscm9yIzM0CS8vIFNpZ21hMChhKQorCWFkZAl4MjcseDI3LHgyOAkJCS8vIGgrPU1haihhLGIsYykKKwlsZHIJeDI4LFt4MzBdLCM4CQkvLyAqSysrLCB4MTkgaW4gbmV4dCByb3VuZAorCS8vYWRkCXgyNyx4MjcseDE3CQkJLy8gaCs9U2lnbWEwKGEpCisjaWZuZGVmCV9fQVJNRUJfXworCXJldgl4NCx4NAkJCS8vIDEKKyNlbmRpZgorCWxkcAl4NSx4NixbeDFdLCMyKjgKKwlhZGQJeDI3LHgyNyx4MTcJCQkvLyBoKz1TaWdtYTAoYSkKKwlyb3IJeDE2LHgyMywjMTQKKwlhZGQJeDI2LHgyNix4MjgJCQkvLyBoKz1LW2ldCisJZW9yCXg3LHgyMyx4MjMscm9yIzIzCisJYW5kCXgxNyx4MjQseDIzCisJYmljCXgyOCx4MjUseDIzCisJYWRkCXgyNix4MjYseDQJCQkvLyBoKz1YW2ldCisJb3JyCXgxNyx4MTcseDI4CQkJLy8gQ2goZSxmLGcpCisJZW9yCXgyOCx4MjcseDIwCQkJLy8gYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorCWVvcgl4MTYseDE2LHg3LHJvciMxOAkvLyBTaWdtYTEoZSkKKwlyb3IJeDcseDI3LCMyOAorCWFkZAl4MjYseDI2LHgxNwkJCS8vIGgrPUNoKGUsZixnKQorCWVvcgl4MTcseDI3LHgyNyxyb3IjNQorCWFkZAl4MjYseDI2LHgxNgkJCS8vIGgrPVNpZ21hMShlKQorCWFuZAl4MTkseDE5LHgyOAkJCS8vIChiXmMpJj0oYV5iKQorCWFkZAl4MjIseDIyLHgyNgkJCS8vIGQrPWgKKwllb3IJeDE5LHgxOSx4MjAJCQkvLyBNYWooYSxiLGMpCisJZW9yCXgxNyx4Nyx4MTcscm9yIzM0CS8vIFNpZ21hMChhKQorCWFkZAl4MjYseDI2LHgxOQkJCS8vIGgrPU1haihhLGIsYykKKwlsZHIJeDE5LFt4MzBdLCM4CQkvLyAqSysrLCB4MjggaW4gbmV4dCByb3VuZAorCS8vYWRkCXgyNix4MjYseDE3CQkJLy8gaCs9U2lnbWEwKGEpCisjaWZuZGVmCV9fQVJNRUJfXworCXJldgl4NSx4NQkJCS8vIDIKKyNlbmRpZgorCWFkZAl4MjYseDI2LHgxNwkJCS8vIGgrPVNpZ21hMChhKQorCXJvcgl4MTYseDIyLCMxNAorCWFkZAl4MjUseDI1LHgxOQkJCS8vIGgrPUtbaV0KKwllb3IJeDgseDIyLHgyMixyb3IjMjMKKwlhbmQJeDE3LHgyMyx4MjIKKwliaWMJeDE5LHgyNCx4MjIKKwlhZGQJeDI1LHgyNSx4NQkJCS8vIGgrPVhbaV0KKwlvcnIJeDE3LHgxNyx4MTkJCQkvLyBDaChlLGYsZykKKwllb3IJeDE5LHgyNix4MjcJCQkvLyBhXmIsIGJeYyBpbiBuZXh0IHJvdW5kCisJZW9yCXgxNix4MTYseDgscm9yIzE4CS8vIFNpZ21hMShlKQorCXJvcgl4OCx4MjYsIzI4CisJYWRkCXgyNSx4MjUseDE3CQkJLy8gaCs9Q2goZSxmLGcpCisJZW9yCXgxNyx4MjYseDI2LHJvciM1CisJYWRkCXgyNSx4MjUseDE2CQkJLy8gaCs9U2lnbWExKGUpCisJYW5kCXgyOCx4MjgseDE5CQkJLy8gKGJeYykmPShhXmIpCisJYWRkCXgyMSx4MjEseDI1CQkJLy8gZCs9aAorCWVvcgl4MjgseDI4LHgyNwkJCS8vIE1haihhLGIsYykKKwllb3IJeDE3LHg4LHgxNyxyb3IjMzQJLy8gU2lnbWEwKGEpCisJYWRkCXgyNSx4MjUseDI4CQkJLy8gaCs9TWFqKGEsYixjKQorCWxkcgl4MjgsW3gzMF0sIzgJCS8vICpLKyssIHgxOSBpbiBuZXh0IHJvdW5kCisJLy9hZGQJeDI1LHgyNSx4MTcJCQkvLyBoKz1TaWdtYTAoYSkKKyNpZm5kZWYJX19BUk1FQl9fCisJcmV2CXg2LHg2CQkJLy8gMworI2VuZGlmCisJbGRwCXg3LHg4LFt4MV0sIzIqOAorCWFkZAl4MjUseDI1LHgxNwkJCS8vIGgrPVNpZ21hMChhKQorCXJvcgl4MTYseDIxLCMxNAorCWFkZAl4MjQseDI0LHgyOAkJCS8vIGgrPUtbaV0KKwllb3IJeDkseDIxLHgyMSxyb3IjMjMKKwlhbmQJeDE3LHgyMix4MjEKKwliaWMJeDI4LHgyMyx4MjEKKwlhZGQJeDI0LHgyNCx4NgkJCS8vIGgrPVhbaV0KKwlvcnIJeDE3LHgxNyx4MjgJCQkvLyBDaChlLGYsZykKKwllb3IJeDI4LHgyNSx4MjYJCQkvLyBhXmIsIGJeYyBpbiBuZXh0IHJvdW5kCisJZW9yCXgxNix4MTYseDkscm9yIzE4CS8vIFNpZ21hMShlKQorCXJvcgl4OSx4MjUsIzI4CisJYWRkCXgyNCx4MjQseDE3CQkJLy8gaCs9Q2goZSxmLGcpCisJZW9yCXgxNyx4MjUseDI1LHJvciM1CisJYWRkCXgyNCx4MjQseDE2CQkJLy8gaCs9U2lnbWExKGUpCisJYW5kCXgxOSx4MTkseDI4CQkJLy8gKGJeYykmPShhXmIpCisJYWRkCXgyMCx4MjAseDI0CQkJLy8gZCs9aAorCWVvcgl4MTkseDE5LHgyNgkJCS8vIE1haihhLGIsYykKKwllb3IJeDE3LHg5LHgxNyxyb3IjMzQJLy8gU2lnbWEwKGEpCisJYWRkCXgyNCx4MjQseDE5CQkJLy8gaCs9TWFqKGEsYixjKQorCWxkcgl4MTksW3gzMF0sIzgJCS8vICpLKyssIHgyOCBpbiBuZXh0IHJvdW5kCisJLy9hZGQJeDI0LHgyNCx4MTcJCQkvLyBoKz1TaWdtYTAoYSkKKyNpZm5kZWYJX19BUk1FQl9fCisJcmV2CXg3LHg3CQkJLy8gNAorI2VuZGlmCisJYWRkCXgyNCx4MjQseDE3CQkJLy8gaCs9U2lnbWEwKGEpCisJcm9yCXgxNix4MjAsIzE0CisJYWRkCXgyMyx4MjMseDE5CQkJLy8gaCs9S1tpXQorCWVvcgl4MTAseDIwLHgyMCxyb3IjMjMKKwlhbmQJeDE3LHgyMSx4MjAKKwliaWMJeDE5LHgyMix4MjAKKwlhZGQJeDIzLHgyMyx4NwkJCS8vIGgrPVhbaV0KKwlvcnIJeDE3LHgxNyx4MTkJCQkvLyBDaChlLGYsZykKKwllb3IJeDE5LHgyNCx4MjUJCQkvLyBhXmIsIGJeYyBpbiBuZXh0IHJvdW5kCisJZW9yCXgxNix4MTYseDEwLHJvciMxOAkvLyBTaWdtYTEoZSkKKwlyb3IJeDEwLHgyNCwjMjgKKwlhZGQJeDIzLHgyMyx4MTcJCQkvLyBoKz1DaChlLGYsZykKKwllb3IJeDE3LHgyNCx4MjQscm9yIzUKKwlhZGQJeDIzLHgyMyx4MTYJCQkvLyBoKz1TaWdtYTEoZSkKKwlhbmQJeDI4LHgyOCx4MTkJCQkvLyAoYl5jKSY9KGFeYikKKwlhZGQJeDI3LHgyNyx4MjMJCQkvLyBkKz1oCisJZW9yCXgyOCx4MjgseDI1CQkJLy8gTWFqKGEsYixjKQorCWVvcgl4MTcseDEwLHgxNyxyb3IjMzQJLy8gU2lnbWEwKGEpCisJYWRkCXgyMyx4MjMseDI4CQkJLy8gaCs9TWFqKGEsYixjKQorCWxkcgl4MjgsW3gzMF0sIzgJCS8vICpLKyssIHgxOSBpbiBuZXh0IHJvdW5kCisJLy9hZGQJeDIzLHgyMyx4MTcJCQkvLyBoKz1TaWdtYTAoYSkKKyNpZm5kZWYJX19BUk1FQl9fCisJcmV2CXg4LHg4CQkJLy8gNQorI2VuZGlmCisJbGRwCXg5LHgxMCxbeDFdLCMyKjgKKwlhZGQJeDIzLHgyMyx4MTcJCQkvLyBoKz1TaWdtYTAoYSkKKwlyb3IJeDE2LHgyNywjMTQKKwlhZGQJeDIyLHgyMix4MjgJCQkvLyBoKz1LW2ldCisJZW9yCXgxMSx4MjcseDI3LHJvciMyMworCWFuZAl4MTcseDIwLHgyNworCWJpYwl4MjgseDIxLHgyNworCWFkZAl4MjIseDIyLHg4CQkJLy8gaCs9WFtpXQorCW9ycgl4MTcseDE3LHgyOAkJCS8vIENoKGUsZixnKQorCWVvcgl4MjgseDIzLHgyNAkJCS8vIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKwllb3IJeDE2LHgxNix4MTEscm9yIzE4CS8vIFNpZ21hMShlKQorCXJvcgl4MTEseDIzLCMyOAorCWFkZAl4MjIseDIyLHgxNwkJCS8vIGgrPUNoKGUsZixnKQorCWVvcgl4MTcseDIzLHgyMyxyb3IjNQorCWFkZAl4MjIseDIyLHgxNgkJCS8vIGgrPVNpZ21hMShlKQorCWFuZAl4MTkseDE5LHgyOAkJCS8vIChiXmMpJj0oYV5iKQorCWFkZAl4MjYseDI2LHgyMgkJCS8vIGQrPWgKKwllb3IJeDE5LHgxOSx4MjQJCQkvLyBNYWooYSxiLGMpCisJZW9yCXgxNyx4MTEseDE3LHJvciMzNAkvLyBTaWdtYTAoYSkKKwlhZGQJeDIyLHgyMix4MTkJCQkvLyBoKz1NYWooYSxiLGMpCisJbGRyCXgxOSxbeDMwXSwjOAkJLy8gKksrKywgeDI4IGluIG5leHQgcm91bmQKKwkvL2FkZAl4MjIseDIyLHgxNwkJCS8vIGgrPVNpZ21hMChhKQorI2lmbmRlZglfX0FSTUVCX18KKwlyZXYJeDkseDkJCQkvLyA2CisjZW5kaWYKKwlhZGQJeDIyLHgyMix4MTcJCQkvLyBoKz1TaWdtYTAoYSkKKwlyb3IJeDE2LHgyNiwjMTQKKwlhZGQJeDIxLHgyMSx4MTkJCQkvLyBoKz1LW2ldCisJZW9yCXgxMix4MjYseDI2LHJvciMyMworCWFuZAl4MTcseDI3LHgyNgorCWJpYwl4MTkseDIwLHgyNgorCWFkZAl4MjEseDIxLHg5CQkJLy8gaCs9WFtpXQorCW9ycgl4MTcseDE3LHgxOQkJCS8vIENoKGUsZixnKQorCWVvcgl4MTkseDIyLHgyMwkJCS8vIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKwllb3IJeDE2LHgxNix4MTIscm9yIzE4CS8vIFNpZ21hMShlKQorCXJvcgl4MTIseDIyLCMyOAorCWFkZAl4MjEseDIxLHgxNwkJCS8vIGgrPUNoKGUsZixnKQorCWVvcgl4MTcseDIyLHgyMixyb3IjNQorCWFkZAl4MjEseDIxLHgxNgkJCS8vIGgrPVNpZ21hMShlKQorCWFuZAl4MjgseDI4LHgxOQkJCS8vIChiXmMpJj0oYV5iKQorCWFkZAl4MjUseDI1LHgyMQkJCS8vIGQrPWgKKwllb3IJeDI4LHgyOCx4MjMJCQkvLyBNYWooYSxiLGMpCisJZW9yCXgxNyx4MTIseDE3LHJvciMzNAkvLyBTaWdtYTAoYSkKKwlhZGQJeDIxLHgyMSx4MjgJCQkvLyBoKz1NYWooYSxiLGMpCisJbGRyCXgyOCxbeDMwXSwjOAkJLy8gKksrKywgeDE5IGluIG5leHQgcm91bmQKKwkvL2FkZAl4MjEseDIxLHgxNwkJCS8vIGgrPVNpZ21hMChhKQorI2lmbmRlZglfX0FSTUVCX18KKwlyZXYJeDEwLHgxMAkJCS8vIDcKKyNlbmRpZgorCWxkcAl4MTEseDEyLFt4MV0sIzIqOAorCWFkZAl4MjEseDIxLHgxNwkJCS8vIGgrPVNpZ21hMChhKQorCXJvcgl4MTYseDI1LCMxNAorCWFkZAl4MjAseDIwLHgyOAkJCS8vIGgrPUtbaV0KKwllb3IJeDEzLHgyNSx4MjUscm9yIzIzCisJYW5kCXgxNyx4MjYseDI1CisJYmljCXgyOCx4MjcseDI1CisJYWRkCXgyMCx4MjAseDEwCQkJLy8gaCs9WFtpXQorCW9ycgl4MTcseDE3LHgyOAkJCS8vIENoKGUsZixnKQorCWVvcgl4MjgseDIxLHgyMgkJCS8vIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKwllb3IJeDE2LHgxNix4MTMscm9yIzE4CS8vIFNpZ21hMShlKQorCXJvcgl4MTMseDIxLCMyOAorCWFkZAl4MjAseDIwLHgxNwkJCS8vIGgrPUNoKGUsZixnKQorCWVvcgl4MTcseDIxLHgyMSxyb3IjNQorCWFkZAl4MjAseDIwLHgxNgkJCS8vIGgrPVNpZ21hMShlKQorCWFuZAl4MTkseDE5LHgyOAkJCS8vIChiXmMpJj0oYV5iKQorCWFkZAl4MjQseDI0LHgyMAkJCS8vIGQrPWgKKwllb3IJeDE5LHgxOSx4MjIJCQkvLyBNYWooYSxiLGMpCisJZW9yCXgxNyx4MTMseDE3LHJvciMzNAkvLyBTaWdtYTAoYSkKKwlhZGQJeDIwLHgyMCx4MTkJCQkvLyBoKz1NYWooYSxiLGMpCisJbGRyCXgxOSxbeDMwXSwjOAkJLy8gKksrKywgeDI4IGluIG5leHQgcm91bmQKKwkvL2FkZAl4MjAseDIwLHgxNwkJCS8vIGgrPVNpZ21hMChhKQorI2lmbmRlZglfX0FSTUVCX18KKwlyZXYJeDExLHgxMQkJCS8vIDgKKyNlbmRpZgorCWFkZAl4MjAseDIwLHgxNwkJCS8vIGgrPVNpZ21hMChhKQorCXJvcgl4MTYseDI0LCMxNAorCWFkZAl4MjcseDI3LHgxOQkJCS8vIGgrPUtbaV0KKwllb3IJeDE0LHgyNCx4MjQscm9yIzIzCisJYW5kCXgxNyx4MjUseDI0CisJYmljCXgxOSx4MjYseDI0CisJYWRkCXgyNyx4MjcseDExCQkJLy8gaCs9WFtpXQorCW9ycgl4MTcseDE3LHgxOQkJCS8vIENoKGUsZixnKQorCWVvcgl4MTkseDIwLHgyMQkJCS8vIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKwllb3IJeDE2LHgxNix4MTQscm9yIzE4CS8vIFNpZ21hMShlKQorCXJvcgl4MTQseDIwLCMyOAorCWFkZAl4MjcseDI3LHgxNwkJCS8vIGgrPUNoKGUsZixnKQorCWVvcgl4MTcseDIwLHgyMCxyb3IjNQorCWFkZAl4MjcseDI3LHgxNgkJCS8vIGgrPVNpZ21hMShlKQorCWFuZAl4MjgseDI4LHgxOQkJCS8vIChiXmMpJj0oYV5iKQorCWFkZAl4MjMseDIzLHgyNwkJCS8vIGQrPWgKKwllb3IJeDI4LHgyOCx4MjEJCQkvLyBNYWooYSxiLGMpCisJZW9yCXgxNyx4MTQseDE3LHJvciMzNAkvLyBTaWdtYTAoYSkKKwlhZGQJeDI3LHgyNyx4MjgJCQkvLyBoKz1NYWooYSxiLGMpCisJbGRyCXgyOCxbeDMwXSwjOAkJLy8gKksrKywgeDE5IGluIG5leHQgcm91bmQKKwkvL2FkZAl4MjcseDI3LHgxNwkJCS8vIGgrPVNpZ21hMChhKQorI2lmbmRlZglfX0FSTUVCX18KKwlyZXYJeDEyLHgxMgkJCS8vIDkKKyNlbmRpZgorCWxkcAl4MTMseDE0LFt4MV0sIzIqOAorCWFkZAl4MjcseDI3LHgxNwkJCS8vIGgrPVNpZ21hMChhKQorCXJvcgl4MTYseDIzLCMxNAorCWFkZAl4MjYseDI2LHgyOAkJCS8vIGgrPUtbaV0KKwllb3IJeDE1LHgyMyx4MjMscm9yIzIzCisJYW5kCXgxNyx4MjQseDIzCisJYmljCXgyOCx4MjUseDIzCisJYWRkCXgyNix4MjYseDEyCQkJLy8gaCs9WFtpXQorCW9ycgl4MTcseDE3LHgyOAkJCS8vIENoKGUsZixnKQorCWVvcgl4MjgseDI3LHgyMAkJCS8vIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKwllb3IJeDE2LHgxNix4MTUscm9yIzE4CS8vIFNpZ21hMShlKQorCXJvcgl4MTUseDI3LCMyOAorCWFkZAl4MjYseDI2LHgxNwkJCS8vIGgrPUNoKGUsZixnKQorCWVvcgl4MTcseDI3LHgyNyxyb3IjNQorCWFkZAl4MjYseDI2LHgxNgkJCS8vIGgrPVNpZ21hMShlKQorCWFuZAl4MTkseDE5LHgyOAkJCS8vIChiXmMpJj0oYV5iKQorCWFkZAl4MjIseDIyLHgyNgkJCS8vIGQrPWgKKwllb3IJeDE5LHgxOSx4MjAJCQkvLyBNYWooYSxiLGMpCisJZW9yCXgxNyx4MTUseDE3LHJvciMzNAkvLyBTaWdtYTAoYSkKKwlhZGQJeDI2LHgyNix4MTkJCQkvLyBoKz1NYWooYSxiLGMpCisJbGRyCXgxOSxbeDMwXSwjOAkJLy8gKksrKywgeDI4IGluIG5leHQgcm91bmQKKwkvL2FkZAl4MjYseDI2LHgxNwkJCS8vIGgrPVNpZ21hMChhKQorI2lmbmRlZglfX0FSTUVCX18KKwlyZXYJeDEzLHgxMwkJCS8vIDEwCisjZW5kaWYKKwlhZGQJeDI2LHgyNix4MTcJCQkvLyBoKz1TaWdtYTAoYSkKKwlyb3IJeDE2LHgyMiwjMTQKKwlhZGQJeDI1LHgyNSx4MTkJCQkvLyBoKz1LW2ldCisJZW9yCXgwLHgyMix4MjIscm9yIzIzCisJYW5kCXgxNyx4MjMseDIyCisJYmljCXgxOSx4MjQseDIyCisJYWRkCXgyNSx4MjUseDEzCQkJLy8gaCs9WFtpXQorCW9ycgl4MTcseDE3LHgxOQkJCS8vIENoKGUsZixnKQorCWVvcgl4MTkseDI2LHgyNwkJCS8vIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKwllb3IJeDE2LHgxNix4MCxyb3IjMTgJLy8gU2lnbWExKGUpCisJcm9yCXgwLHgyNiwjMjgKKwlhZGQJeDI1LHgyNSx4MTcJCQkvLyBoKz1DaChlLGYsZykKKwllb3IJeDE3LHgyNix4MjYscm9yIzUKKwlhZGQJeDI1LHgyNSx4MTYJCQkvLyBoKz1TaWdtYTEoZSkKKwlhbmQJeDI4LHgyOCx4MTkJCQkvLyAoYl5jKSY9KGFeYikKKwlhZGQJeDIxLHgyMSx4MjUJCQkvLyBkKz1oCisJZW9yCXgyOCx4MjgseDI3CQkJLy8gTWFqKGEsYixjKQorCWVvcgl4MTcseDAseDE3LHJvciMzNAkvLyBTaWdtYTAoYSkKKwlhZGQJeDI1LHgyNSx4MjgJCQkvLyBoKz1NYWooYSxiLGMpCisJbGRyCXgyOCxbeDMwXSwjOAkJLy8gKksrKywgeDE5IGluIG5leHQgcm91bmQKKwkvL2FkZAl4MjUseDI1LHgxNwkJCS8vIGgrPVNpZ21hMChhKQorI2lmbmRlZglfX0FSTUVCX18KKwlyZXYJeDE0LHgxNAkJCS8vIDExCisjZW5kaWYKKwlsZHAJeDE1LHgwLFt4MV0sIzIqOAorCWFkZAl4MjUseDI1LHgxNwkJCS8vIGgrPVNpZ21hMChhKQorCXN0cgl4Nixbc3AsIzI0XQorCXJvcgl4MTYseDIxLCMxNAorCWFkZAl4MjQseDI0LHgyOAkJCS8vIGgrPUtbaV0KKwllb3IJeDYseDIxLHgyMSxyb3IjMjMKKwlhbmQJeDE3LHgyMix4MjEKKwliaWMJeDI4LHgyMyx4MjEKKwlhZGQJeDI0LHgyNCx4MTQJCQkvLyBoKz1YW2ldCisJb3JyCXgxNyx4MTcseDI4CQkJLy8gQ2goZSxmLGcpCisJZW9yCXgyOCx4MjUseDI2CQkJLy8gYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorCWVvcgl4MTYseDE2LHg2LHJvciMxOAkvLyBTaWdtYTEoZSkKKwlyb3IJeDYseDI1LCMyOAorCWFkZAl4MjQseDI0LHgxNwkJCS8vIGgrPUNoKGUsZixnKQorCWVvcgl4MTcseDI1LHgyNSxyb3IjNQorCWFkZAl4MjQseDI0LHgxNgkJCS8vIGgrPVNpZ21hMShlKQorCWFuZAl4MTkseDE5LHgyOAkJCS8vIChiXmMpJj0oYV5iKQorCWFkZAl4MjAseDIwLHgyNAkJCS8vIGQrPWgKKwllb3IJeDE5LHgxOSx4MjYJCQkvLyBNYWooYSxiLGMpCisJZW9yCXgxNyx4Nix4MTcscm9yIzM0CS8vIFNpZ21hMChhKQorCWFkZAl4MjQseDI0LHgxOQkJCS8vIGgrPU1haihhLGIsYykKKwlsZHIJeDE5LFt4MzBdLCM4CQkvLyAqSysrLCB4MjggaW4gbmV4dCByb3VuZAorCS8vYWRkCXgyNCx4MjQseDE3CQkJLy8gaCs9U2lnbWEwKGEpCisjaWZuZGVmCV9fQVJNRUJfXworCXJldgl4MTUseDE1CQkJLy8gMTIKKyNlbmRpZgorCWFkZAl4MjQseDI0LHgxNwkJCS8vIGgrPVNpZ21hMChhKQorCXN0cgl4Nyxbc3AsIzBdCisJcm9yCXgxNix4MjAsIzE0CisJYWRkCXgyMyx4MjMseDE5CQkJLy8gaCs9S1tpXQorCWVvcgl4Nyx4MjAseDIwLHJvciMyMworCWFuZAl4MTcseDIxLHgyMAorCWJpYwl4MTkseDIyLHgyMAorCWFkZAl4MjMseDIzLHgxNQkJCS8vIGgrPVhbaV0KKwlvcnIJeDE3LHgxNyx4MTkJCQkvLyBDaChlLGYsZykKKwllb3IJeDE5LHgyNCx4MjUJCQkvLyBhXmIsIGJeYyBpbiBuZXh0IHJvdW5kCisJZW9yCXgxNix4MTYseDcscm9yIzE4CS8vIFNpZ21hMShlKQorCXJvcgl4Nyx4MjQsIzI4CisJYWRkCXgyMyx4MjMseDE3CQkJLy8gaCs9Q2goZSxmLGcpCisJZW9yCXgxNyx4MjQseDI0LHJvciM1CisJYWRkCXgyMyx4MjMseDE2CQkJLy8gaCs9U2lnbWExKGUpCisJYW5kCXgyOCx4MjgseDE5CQkJLy8gKGJeYykmPShhXmIpCisJYWRkCXgyNyx4MjcseDIzCQkJLy8gZCs9aAorCWVvcgl4MjgseDI4LHgyNQkJCS8vIE1haihhLGIsYykKKwllb3IJeDE3LHg3LHgxNyxyb3IjMzQJLy8gU2lnbWEwKGEpCisJYWRkCXgyMyx4MjMseDI4CQkJLy8gaCs9TWFqKGEsYixjKQorCWxkcgl4MjgsW3gzMF0sIzgJCS8vICpLKyssIHgxOSBpbiBuZXh0IHJvdW5kCisJLy9hZGQJeDIzLHgyMyx4MTcJCQkvLyBoKz1TaWdtYTAoYSkKKyNpZm5kZWYJX19BUk1FQl9fCisJcmV2CXgwLHgwCQkJLy8gMTMKKyNlbmRpZgorCWxkcAl4MSx4MixbeDFdCisJYWRkCXgyMyx4MjMseDE3CQkJLy8gaCs9U2lnbWEwKGEpCisJc3RyCXg4LFtzcCwjOF0KKwlyb3IJeDE2LHgyNywjMTQKKwlhZGQJeDIyLHgyMix4MjgJCQkvLyBoKz1LW2ldCisJZW9yCXg4LHgyNyx4Mjcscm9yIzIzCisJYW5kCXgxNyx4MjAseDI3CisJYmljCXgyOCx4MjEseDI3CisJYWRkCXgyMix4MjIseDAJCQkvLyBoKz1YW2ldCisJb3JyCXgxNyx4MTcseDI4CQkJLy8gQ2goZSxmLGcpCisJZW9yCXgyOCx4MjMseDI0CQkJLy8gYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorCWVvcgl4MTYseDE2LHg4LHJvciMxOAkvLyBTaWdtYTEoZSkKKwlyb3IJeDgseDIzLCMyOAorCWFkZAl4MjIseDIyLHgxNwkJCS8vIGgrPUNoKGUsZixnKQorCWVvcgl4MTcseDIzLHgyMyxyb3IjNQorCWFkZAl4MjIseDIyLHgxNgkJCS8vIGgrPVNpZ21hMShlKQorCWFuZAl4MTkseDE5LHgyOAkJCS8vIChiXmMpJj0oYV5iKQorCWFkZAl4MjYseDI2LHgyMgkJCS8vIGQrPWgKKwllb3IJeDE5LHgxOSx4MjQJCQkvLyBNYWooYSxiLGMpCisJZW9yCXgxNyx4OCx4MTcscm9yIzM0CS8vIFNpZ21hMChhKQorCWFkZAl4MjIseDIyLHgxOQkJCS8vIGgrPU1haihhLGIsYykKKwlsZHIJeDE5LFt4MzBdLCM4CQkvLyAqSysrLCB4MjggaW4gbmV4dCByb3VuZAorCS8vYWRkCXgyMix4MjIseDE3CQkJLy8gaCs9U2lnbWEwKGEpCisjaWZuZGVmCV9fQVJNRUJfXworCXJldgl4MSx4MQkJCS8vIDE0CisjZW5kaWYKKwlsZHIJeDYsW3NwLCMyNF0KKwlhZGQJeDIyLHgyMix4MTcJCQkvLyBoKz1TaWdtYTAoYSkKKwlzdHIJeDksW3NwLCMxNl0KKwlyb3IJeDE2LHgyNiwjMTQKKwlhZGQJeDIxLHgyMSx4MTkJCQkvLyBoKz1LW2ldCisJZW9yCXg5LHgyNix4MjYscm9yIzIzCisJYW5kCXgxNyx4MjcseDI2CisJYmljCXgxOSx4MjAseDI2CisJYWRkCXgyMSx4MjEseDEJCQkvLyBoKz1YW2ldCisJb3JyCXgxNyx4MTcseDE5CQkJLy8gQ2goZSxmLGcpCisJZW9yCXgxOSx4MjIseDIzCQkJLy8gYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorCWVvcgl4MTYseDE2LHg5LHJvciMxOAkvLyBTaWdtYTEoZSkKKwlyb3IJeDkseDIyLCMyOAorCWFkZAl4MjEseDIxLHgxNwkJCS8vIGgrPUNoKGUsZixnKQorCWVvcgl4MTcseDIyLHgyMixyb3IjNQorCWFkZAl4MjEseDIxLHgxNgkJCS8vIGgrPVNpZ21hMShlKQorCWFuZAl4MjgseDI4LHgxOQkJCS8vIChiXmMpJj0oYV5iKQorCWFkZAl4MjUseDI1LHgyMQkJCS8vIGQrPWgKKwllb3IJeDI4LHgyOCx4MjMJCQkvLyBNYWooYSxiLGMpCisJZW9yCXgxNyx4OSx4MTcscm9yIzM0CS8vIFNpZ21hMChhKQorCWFkZAl4MjEseDIxLHgyOAkJCS8vIGgrPU1haihhLGIsYykKKwlsZHIJeDI4LFt4MzBdLCM4CQkvLyAqSysrLCB4MTkgaW4gbmV4dCByb3VuZAorCS8vYWRkCXgyMSx4MjEseDE3CQkJLy8gaCs9U2lnbWEwKGEpCisjaWZuZGVmCV9fQVJNRUJfXworCXJldgl4Mix4MgkJCS8vIDE1CisjZW5kaWYKKwlsZHIJeDcsW3NwLCMwXQorCWFkZAl4MjEseDIxLHgxNwkJCS8vIGgrPVNpZ21hMChhKQorCXN0cgl4MTAsW3NwLCMyNF0KKwlyb3IJeDE2LHgyNSwjMTQKKwlhZGQJeDIwLHgyMCx4MjgJCQkvLyBoKz1LW2ldCisJcm9yCXg5LHg0LCMxCisJYW5kCXgxNyx4MjYseDI1CisJcm9yCXg4LHgxLCMxOQorCWJpYwl4MjgseDI3LHgyNQorCXJvcgl4MTAseDIxLCMyOAorCWFkZAl4MjAseDIwLHgyCQkJLy8gaCs9WFtpXQorCWVvcgl4MTYseDE2LHgyNSxyb3IjMTgKKwllb3IJeDkseDkseDQscm9yIzgKKwlvcnIJeDE3LHgxNyx4MjgJCQkvLyBDaChlLGYsZykKKwllb3IJeDI4LHgyMSx4MjIJCQkvLyBhXmIsIGJeYyBpbiBuZXh0IHJvdW5kCisJZW9yCXgxNix4MTYseDI1LHJvciM0MQkvLyBTaWdtYTEoZSkKKwllb3IJeDEwLHgxMCx4MjEscm9yIzM0CisJYWRkCXgyMCx4MjAseDE3CQkJLy8gaCs9Q2goZSxmLGcpCisJYW5kCXgxOSx4MTkseDI4CQkJLy8gKGJeYykmPShhXmIpCisJZW9yCXg4LHg4LHgxLHJvciM2MQorCWVvcgl4OSx4OSx4NCxsc3IjNwkvLyBzaWdtYTAoWFtpKzFdKQorCWFkZAl4MjAseDIwLHgxNgkJCS8vIGgrPVNpZ21hMShlKQorCWVvcgl4MTkseDE5LHgyMgkJCS8vIE1haihhLGIsYykKKwllb3IJeDE3LHgxMCx4MjEscm9yIzM5CS8vIFNpZ21hMChhKQorCWVvcgl4OCx4OCx4MSxsc3IjNgkvLyBzaWdtYTEoWFtpKzE0XSkKKwlhZGQJeDMseDMseDEyCisJYWRkCXgyNCx4MjQseDIwCQkJLy8gZCs9aAorCWFkZAl4MjAseDIwLHgxOQkJCS8vIGgrPU1haihhLGIsYykKKwlsZHIJeDE5LFt4MzBdLCM4CQkvLyAqSysrLCB4MjggaW4gbmV4dCByb3VuZAorCWFkZAl4Myx4Myx4OQorCWFkZAl4MjAseDIwLHgxNwkJCS8vIGgrPVNpZ21hMChhKQorCWFkZAl4Myx4Myx4OAorLkxvb3BfMTZfeHg6CisJbGRyCXg4LFtzcCwjOF0KKwlzdHIJeDExLFtzcCwjMF0KKwlyb3IJeDE2LHgyNCwjMTQKKwlhZGQJeDI3LHgyNyx4MTkJCQkvLyBoKz1LW2ldCisJcm9yCXgxMCx4NSwjMQorCWFuZAl4MTcseDI1LHgyNAorCXJvcgl4OSx4MiwjMTkKKwliaWMJeDE5LHgyNix4MjQKKwlyb3IJeDExLHgyMCwjMjgKKwlhZGQJeDI3LHgyNyx4MwkJCS8vIGgrPVhbaV0KKwllb3IJeDE2LHgxNix4MjQscm9yIzE4CisJZW9yCXgxMCx4MTAseDUscm9yIzgKKwlvcnIJeDE3LHgxNyx4MTkJCQkvLyBDaChlLGYsZykKKwllb3IJeDE5LHgyMCx4MjEJCQkvLyBhXmIsIGJeYyBpbiBuZXh0IHJvdW5kCisJZW9yCXgxNix4MTYseDI0LHJvciM0MQkvLyBTaWdtYTEoZSkKKwllb3IJeDExLHgxMSx4MjAscm9yIzM0CisJYWRkCXgyNyx4MjcseDE3CQkJLy8gaCs9Q2goZSxmLGcpCisJYW5kCXgyOCx4MjgseDE5CQkJLy8gKGJeYykmPShhXmIpCisJZW9yCXg5LHg5LHgyLHJvciM2MQorCWVvcgl4MTAseDEwLHg1LGxzciM3CS8vIHNpZ21hMChYW2krMV0pCisJYWRkCXgyNyx4MjcseDE2CQkJLy8gaCs9U2lnbWExKGUpCisJZW9yCXgyOCx4MjgseDIxCQkJLy8gTWFqKGEsYixjKQorCWVvcgl4MTcseDExLHgyMCxyb3IjMzkJLy8gU2lnbWEwKGEpCisJZW9yCXg5LHg5LHgyLGxzciM2CS8vIHNpZ21hMShYW2krMTRdKQorCWFkZAl4NCx4NCx4MTMKKwlhZGQJeDIzLHgyMyx4MjcJCQkvLyBkKz1oCisJYWRkCXgyNyx4MjcseDI4CQkJLy8gaCs9TWFqKGEsYixjKQorCWxkcgl4MjgsW3gzMF0sIzgJCS8vICpLKyssIHgxOSBpbiBuZXh0IHJvdW5kCisJYWRkCXg0LHg0LHgxMAorCWFkZAl4MjcseDI3LHgxNwkJCS8vIGgrPVNpZ21hMChhKQorCWFkZAl4NCx4NCx4OQorCWxkcgl4OSxbc3AsIzE2XQorCXN0cgl4MTIsW3NwLCM4XQorCXJvcgl4MTYseDIzLCMxNAorCWFkZAl4MjYseDI2LHgyOAkJCS8vIGgrPUtbaV0KKwlyb3IJeDExLHg2LCMxCisJYW5kCXgxNyx4MjQseDIzCisJcm9yCXgxMCx4MywjMTkKKwliaWMJeDI4LHgyNSx4MjMKKwlyb3IJeDEyLHgyNywjMjgKKwlhZGQJeDI2LHgyNix4NAkJCS8vIGgrPVhbaV0KKwllb3IJeDE2LHgxNix4MjMscm9yIzE4CisJZW9yCXgxMSx4MTEseDYscm9yIzgKKwlvcnIJeDE3LHgxNyx4MjgJCQkvLyBDaChlLGYsZykKKwllb3IJeDI4LHgyNyx4MjAJCQkvLyBhXmIsIGJeYyBpbiBuZXh0IHJvdW5kCisJZW9yCXgxNix4MTYseDIzLHJvciM0MQkvLyBTaWdtYTEoZSkKKwllb3IJeDEyLHgxMix4Mjcscm9yIzM0CisJYWRkCXgyNix4MjYseDE3CQkJLy8gaCs9Q2goZSxmLGcpCisJYW5kCXgxOSx4MTkseDI4CQkJLy8gKGJeYykmPShhXmIpCisJZW9yCXgxMCx4MTAseDMscm9yIzYxCisJZW9yCXgxMSx4MTEseDYsbHNyIzcJLy8gc2lnbWEwKFhbaSsxXSkKKwlhZGQJeDI2LHgyNix4MTYJCQkvLyBoKz1TaWdtYTEoZSkKKwllb3IJeDE5LHgxOSx4MjAJCQkvLyBNYWooYSxiLGMpCisJZW9yCXgxNyx4MTIseDI3LHJvciMzOQkvLyBTaWdtYTAoYSkKKwllb3IJeDEwLHgxMCx4Myxsc3IjNgkvLyBzaWdtYTEoWFtpKzE0XSkKKwlhZGQJeDUseDUseDE0CisJYWRkCXgyMix4MjIseDI2CQkJLy8gZCs9aAorCWFkZAl4MjYseDI2LHgxOQkJCS8vIGgrPU1haihhLGIsYykKKwlsZHIJeDE5LFt4MzBdLCM4CQkvLyAqSysrLCB4MjggaW4gbmV4dCByb3VuZAorCWFkZAl4NSx4NSx4MTEKKwlhZGQJeDI2LHgyNix4MTcJCQkvLyBoKz1TaWdtYTAoYSkKKwlhZGQJeDUseDUseDEwCisJbGRyCXgxMCxbc3AsIzI0XQorCXN0cgl4MTMsW3NwLCMxNl0KKwlyb3IJeDE2LHgyMiwjMTQKKwlhZGQJeDI1LHgyNSx4MTkJCQkvLyBoKz1LW2ldCisJcm9yCXgxMix4NywjMQorCWFuZAl4MTcseDIzLHgyMgorCXJvcgl4MTEseDQsIzE5CisJYmljCXgxOSx4MjQseDIyCisJcm9yCXgxMyx4MjYsIzI4CisJYWRkCXgyNSx4MjUseDUJCQkvLyBoKz1YW2ldCisJZW9yCXgxNix4MTYseDIyLHJvciMxOAorCWVvcgl4MTIseDEyLHg3LHJvciM4CisJb3JyCXgxNyx4MTcseDE5CQkJLy8gQ2goZSxmLGcpCisJZW9yCXgxOSx4MjYseDI3CQkJLy8gYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorCWVvcgl4MTYseDE2LHgyMixyb3IjNDEJLy8gU2lnbWExKGUpCisJZW9yCXgxMyx4MTMseDI2LHJvciMzNAorCWFkZAl4MjUseDI1LHgxNwkJCS8vIGgrPUNoKGUsZixnKQorCWFuZAl4MjgseDI4LHgxOQkJCS8vIChiXmMpJj0oYV5iKQorCWVvcgl4MTEseDExLHg0LHJvciM2MQorCWVvcgl4MTIseDEyLHg3LGxzciM3CS8vIHNpZ21hMChYW2krMV0pCisJYWRkCXgyNSx4MjUseDE2CQkJLy8gaCs9U2lnbWExKGUpCisJZW9yCXgyOCx4MjgseDI3CQkJLy8gTWFqKGEsYixjKQorCWVvcgl4MTcseDEzLHgyNixyb3IjMzkJLy8gU2lnbWEwKGEpCisJZW9yCXgxMSx4MTEseDQsbHNyIzYJLy8gc2lnbWExKFhbaSsxNF0pCisJYWRkCXg2LHg2LHgxNQorCWFkZAl4MjEseDIxLHgyNQkJCS8vIGQrPWgKKwlhZGQJeDI1LHgyNSx4MjgJCQkvLyBoKz1NYWooYSxiLGMpCisJbGRyCXgyOCxbeDMwXSwjOAkJLy8gKksrKywgeDE5IGluIG5leHQgcm91bmQKKwlhZGQJeDYseDYseDEyCisJYWRkCXgyNSx4MjUseDE3CQkJLy8gaCs9U2lnbWEwKGEpCisJYWRkCXg2LHg2LHgxMQorCWxkcgl4MTEsW3NwLCMwXQorCXN0cgl4MTQsW3NwLCMyNF0KKwlyb3IJeDE2LHgyMSwjMTQKKwlhZGQJeDI0LHgyNCx4MjgJCQkvLyBoKz1LW2ldCisJcm9yCXgxMyx4OCwjMQorCWFuZAl4MTcseDIyLHgyMQorCXJvcgl4MTIseDUsIzE5CisJYmljCXgyOCx4MjMseDIxCisJcm9yCXgxNCx4MjUsIzI4CisJYWRkCXgyNCx4MjQseDYJCQkvLyBoKz1YW2ldCisJZW9yCXgxNix4MTYseDIxLHJvciMxOAorCWVvcgl4MTMseDEzLHg4LHJvciM4CisJb3JyCXgxNyx4MTcseDI4CQkJLy8gQ2goZSxmLGcpCisJZW9yCXgyOCx4MjUseDI2CQkJLy8gYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorCWVvcgl4MTYseDE2LHgyMSxyb3IjNDEJLy8gU2lnbWExKGUpCisJZW9yCXgxNCx4MTQseDI1LHJvciMzNAorCWFkZAl4MjQseDI0LHgxNwkJCS8vIGgrPUNoKGUsZixnKQorCWFuZAl4MTkseDE5LHgyOAkJCS8vIChiXmMpJj0oYV5iKQorCWVvcgl4MTIseDEyLHg1LHJvciM2MQorCWVvcgl4MTMseDEzLHg4LGxzciM3CS8vIHNpZ21hMChYW2krMV0pCisJYWRkCXgyNCx4MjQseDE2CQkJLy8gaCs9U2lnbWExKGUpCisJZW9yCXgxOSx4MTkseDI2CQkJLy8gTWFqKGEsYixjKQorCWVvcgl4MTcseDE0LHgyNSxyb3IjMzkJLy8gU2lnbWEwKGEpCisJZW9yCXgxMix4MTIseDUsbHNyIzYJLy8gc2lnbWExKFhbaSsxNF0pCisJYWRkCXg3LHg3LHgwCisJYWRkCXgyMCx4MjAseDI0CQkJLy8gZCs9aAorCWFkZAl4MjQseDI0LHgxOQkJCS8vIGgrPU1haihhLGIsYykKKwlsZHIJeDE5LFt4MzBdLCM4CQkvLyAqSysrLCB4MjggaW4gbmV4dCByb3VuZAorCWFkZAl4Nyx4Nyx4MTMKKwlhZGQJeDI0LHgyNCx4MTcJCQkvLyBoKz1TaWdtYTAoYSkKKwlhZGQJeDcseDcseDEyCisJbGRyCXgxMixbc3AsIzhdCisJc3RyCXgxNSxbc3AsIzBdCisJcm9yCXgxNix4MjAsIzE0CisJYWRkCXgyMyx4MjMseDE5CQkJLy8gaCs9S1tpXQorCXJvcgl4MTQseDksIzEKKwlhbmQJeDE3LHgyMSx4MjAKKwlyb3IJeDEzLHg2LCMxOQorCWJpYwl4MTkseDIyLHgyMAorCXJvcgl4MTUseDI0LCMyOAorCWFkZAl4MjMseDIzLHg3CQkJLy8gaCs9WFtpXQorCWVvcgl4MTYseDE2LHgyMCxyb3IjMTgKKwllb3IJeDE0LHgxNCx4OSxyb3IjOAorCW9ycgl4MTcseDE3LHgxOQkJCS8vIENoKGUsZixnKQorCWVvcgl4MTkseDI0LHgyNQkJCS8vIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKwllb3IJeDE2LHgxNix4MjAscm9yIzQxCS8vIFNpZ21hMShlKQorCWVvcgl4MTUseDE1LHgyNCxyb3IjMzQKKwlhZGQJeDIzLHgyMyx4MTcJCQkvLyBoKz1DaChlLGYsZykKKwlhbmQJeDI4LHgyOCx4MTkJCQkvLyAoYl5jKSY9KGFeYikKKwllb3IJeDEzLHgxMyx4Nixyb3IjNjEKKwllb3IJeDE0LHgxNCx4OSxsc3IjNwkvLyBzaWdtYTAoWFtpKzFdKQorCWFkZAl4MjMseDIzLHgxNgkJCS8vIGgrPVNpZ21hMShlKQorCWVvcgl4MjgseDI4LHgyNQkJCS8vIE1haihhLGIsYykKKwllb3IJeDE3LHgxNSx4MjQscm9yIzM5CS8vIFNpZ21hMChhKQorCWVvcgl4MTMseDEzLHg2LGxzciM2CS8vIHNpZ21hMShYW2krMTRdKQorCWFkZAl4OCx4OCx4MQorCWFkZAl4MjcseDI3LHgyMwkJCS8vIGQrPWgKKwlhZGQJeDIzLHgyMyx4MjgJCQkvLyBoKz1NYWooYSxiLGMpCisJbGRyCXgyOCxbeDMwXSwjOAkJLy8gKksrKywgeDE5IGluIG5leHQgcm91bmQKKwlhZGQJeDgseDgseDE0CisJYWRkCXgyMyx4MjMseDE3CQkJLy8gaCs9U2lnbWEwKGEpCisJYWRkCXg4LHg4LHgxMworCWxkcgl4MTMsW3NwLCMxNl0KKwlzdHIJeDAsW3NwLCM4XQorCXJvcgl4MTYseDI3LCMxNAorCWFkZAl4MjIseDIyLHgyOAkJCS8vIGgrPUtbaV0KKwlyb3IJeDE1LHgxMCwjMQorCWFuZAl4MTcseDIwLHgyNworCXJvcgl4MTQseDcsIzE5CisJYmljCXgyOCx4MjEseDI3CisJcm9yCXgwLHgyMywjMjgKKwlhZGQJeDIyLHgyMix4OAkJCS8vIGgrPVhbaV0KKwllb3IJeDE2LHgxNix4Mjcscm9yIzE4CisJZW9yCXgxNSx4MTUseDEwLHJvciM4CisJb3JyCXgxNyx4MTcseDI4CQkJLy8gQ2goZSxmLGcpCisJZW9yCXgyOCx4MjMseDI0CQkJLy8gYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorCWVvcgl4MTYseDE2LHgyNyxyb3IjNDEJLy8gU2lnbWExKGUpCisJZW9yCXgwLHgwLHgyMyxyb3IjMzQKKwlhZGQJeDIyLHgyMix4MTcJCQkvLyBoKz1DaChlLGYsZykKKwlhbmQJeDE5LHgxOSx4MjgJCQkvLyAoYl5jKSY9KGFeYikKKwllb3IJeDE0LHgxNCx4Nyxyb3IjNjEKKwllb3IJeDE1LHgxNSx4MTAsbHNyIzcJLy8gc2lnbWEwKFhbaSsxXSkKKwlhZGQJeDIyLHgyMix4MTYJCQkvLyBoKz1TaWdtYTEoZSkKKwllb3IJeDE5LHgxOSx4MjQJCQkvLyBNYWooYSxiLGMpCisJZW9yCXgxNyx4MCx4MjMscm9yIzM5CS8vIFNpZ21hMChhKQorCWVvcgl4MTQseDE0LHg3LGxzciM2CS8vIHNpZ21hMShYW2krMTRdKQorCWFkZAl4OSx4OSx4MgorCWFkZAl4MjYseDI2LHgyMgkJCS8vIGQrPWgKKwlhZGQJeDIyLHgyMix4MTkJCQkvLyBoKz1NYWooYSxiLGMpCisJbGRyCXgxOSxbeDMwXSwjOAkJLy8gKksrKywgeDI4IGluIG5leHQgcm91bmQKKwlhZGQJeDkseDkseDE1CisJYWRkCXgyMix4MjIseDE3CQkJLy8gaCs9U2lnbWEwKGEpCisJYWRkCXg5LHg5LHgxNAorCWxkcgl4MTQsW3NwLCMyNF0KKwlzdHIJeDEsW3NwLCMxNl0KKwlyb3IJeDE2LHgyNiwjMTQKKwlhZGQJeDIxLHgyMSx4MTkJCQkvLyBoKz1LW2ldCisJcm9yCXgwLHgxMSwjMQorCWFuZAl4MTcseDI3LHgyNgorCXJvcgl4MTUseDgsIzE5CisJYmljCXgxOSx4MjAseDI2CisJcm9yCXgxLHgyMiwjMjgKKwlhZGQJeDIxLHgyMSx4OQkJCS8vIGgrPVhbaV0KKwllb3IJeDE2LHgxNix4MjYscm9yIzE4CisJZW9yCXgwLHgwLHgxMSxyb3IjOAorCW9ycgl4MTcseDE3LHgxOQkJCS8vIENoKGUsZixnKQorCWVvcgl4MTkseDIyLHgyMwkJCS8vIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKwllb3IJeDE2LHgxNix4MjYscm9yIzQxCS8vIFNpZ21hMShlKQorCWVvcgl4MSx4MSx4MjIscm9yIzM0CisJYWRkCXgyMSx4MjEseDE3CQkJLy8gaCs9Q2goZSxmLGcpCisJYW5kCXgyOCx4MjgseDE5CQkJLy8gKGJeYykmPShhXmIpCisJZW9yCXgxNSx4MTUseDgscm9yIzYxCisJZW9yCXgwLHgwLHgxMSxsc3IjNwkvLyBzaWdtYTAoWFtpKzFdKQorCWFkZAl4MjEseDIxLHgxNgkJCS8vIGgrPVNpZ21hMShlKQorCWVvcgl4MjgseDI4LHgyMwkJCS8vIE1haihhLGIsYykKKwllb3IJeDE3LHgxLHgyMixyb3IjMzkJLy8gU2lnbWEwKGEpCisJZW9yCXgxNSx4MTUseDgsbHNyIzYJLy8gc2lnbWExKFhbaSsxNF0pCisJYWRkCXgxMCx4MTAseDMKKwlhZGQJeDI1LHgyNSx4MjEJCQkvLyBkKz1oCisJYWRkCXgyMSx4MjEseDI4CQkJLy8gaCs9TWFqKGEsYixjKQorCWxkcgl4MjgsW3gzMF0sIzgJCS8vICpLKyssIHgxOSBpbiBuZXh0IHJvdW5kCisJYWRkCXgxMCx4MTAseDAKKwlhZGQJeDIxLHgyMSx4MTcJCQkvLyBoKz1TaWdtYTAoYSkKKwlhZGQJeDEwLHgxMCx4MTUKKwlsZHIJeDE1LFtzcCwjMF0KKwlzdHIJeDIsW3NwLCMyNF0KKwlyb3IJeDE2LHgyNSwjMTQKKwlhZGQJeDIwLHgyMCx4MjgJCQkvLyBoKz1LW2ldCisJcm9yCXgxLHgxMiwjMQorCWFuZAl4MTcseDI2LHgyNQorCXJvcgl4MCx4OSwjMTkKKwliaWMJeDI4LHgyNyx4MjUKKwlyb3IJeDIseDIxLCMyOAorCWFkZAl4MjAseDIwLHgxMAkJCS8vIGgrPVhbaV0KKwllb3IJeDE2LHgxNix4MjUscm9yIzE4CisJZW9yCXgxLHgxLHgxMixyb3IjOAorCW9ycgl4MTcseDE3LHgyOAkJCS8vIENoKGUsZixnKQorCWVvcgl4MjgseDIxLHgyMgkJCS8vIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKwllb3IJeDE2LHgxNix4MjUscm9yIzQxCS8vIFNpZ21hMShlKQorCWVvcgl4Mix4Mix4MjEscm9yIzM0CisJYWRkCXgyMCx4MjAseDE3CQkJLy8gaCs9Q2goZSxmLGcpCisJYW5kCXgxOSx4MTkseDI4CQkJLy8gKGJeYykmPShhXmIpCisJZW9yCXgwLHgwLHg5LHJvciM2MQorCWVvcgl4MSx4MSx4MTIsbHNyIzcJLy8gc2lnbWEwKFhbaSsxXSkKKwlhZGQJeDIwLHgyMCx4MTYJCQkvLyBoKz1TaWdtYTEoZSkKKwllb3IJeDE5LHgxOSx4MjIJCQkvLyBNYWooYSxiLGMpCisJZW9yCXgxNyx4Mix4MjEscm9yIzM5CS8vIFNpZ21hMChhKQorCWVvcgl4MCx4MCx4OSxsc3IjNgkvLyBzaWdtYTEoWFtpKzE0XSkKKwlhZGQJeDExLHgxMSx4NAorCWFkZAl4MjQseDI0LHgyMAkJCS8vIGQrPWgKKwlhZGQJeDIwLHgyMCx4MTkJCQkvLyBoKz1NYWooYSxiLGMpCisJbGRyCXgxOSxbeDMwXSwjOAkJLy8gKksrKywgeDI4IGluIG5leHQgcm91bmQKKwlhZGQJeDExLHgxMSx4MQorCWFkZAl4MjAseDIwLHgxNwkJCS8vIGgrPVNpZ21hMChhKQorCWFkZAl4MTEseDExLHgwCisJbGRyCXgwLFtzcCwjOF0KKwlzdHIJeDMsW3NwLCMwXQorCXJvcgl4MTYseDI0LCMxNAorCWFkZAl4MjcseDI3LHgxOQkJCS8vIGgrPUtbaV0KKwlyb3IJeDIseDEzLCMxCisJYW5kCXgxNyx4MjUseDI0CisJcm9yCXgxLHgxMCwjMTkKKwliaWMJeDE5LHgyNix4MjQKKwlyb3IJeDMseDIwLCMyOAorCWFkZAl4MjcseDI3LHgxMQkJCS8vIGgrPVhbaV0KKwllb3IJeDE2LHgxNix4MjQscm9yIzE4CisJZW9yCXgyLHgyLHgxMyxyb3IjOAorCW9ycgl4MTcseDE3LHgxOQkJCS8vIENoKGUsZixnKQorCWVvcgl4MTkseDIwLHgyMQkJCS8vIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKwllb3IJeDE2LHgxNix4MjQscm9yIzQxCS8vIFNpZ21hMShlKQorCWVvcgl4Myx4Myx4MjAscm9yIzM0CisJYWRkCXgyNyx4MjcseDE3CQkJLy8gaCs9Q2goZSxmLGcpCisJYW5kCXgyOCx4MjgseDE5CQkJLy8gKGJeYykmPShhXmIpCisJZW9yCXgxLHgxLHgxMCxyb3IjNjEKKwllb3IJeDIseDIseDEzLGxzciM3CS8vIHNpZ21hMChYW2krMV0pCisJYWRkCXgyNyx4MjcseDE2CQkJLy8gaCs9U2lnbWExKGUpCisJZW9yCXgyOCx4MjgseDIxCQkJLy8gTWFqKGEsYixjKQorCWVvcgl4MTcseDMseDIwLHJvciMzOQkvLyBTaWdtYTAoYSkKKwllb3IJeDEseDEseDEwLGxzciM2CS8vIHNpZ21hMShYW2krMTRdKQorCWFkZAl4MTIseDEyLHg1CisJYWRkCXgyMyx4MjMseDI3CQkJLy8gZCs9aAorCWFkZAl4MjcseDI3LHgyOAkJCS8vIGgrPU1haihhLGIsYykKKwlsZHIJeDI4LFt4MzBdLCM4CQkvLyAqSysrLCB4MTkgaW4gbmV4dCByb3VuZAorCWFkZAl4MTIseDEyLHgyCisJYWRkCXgyNyx4MjcseDE3CQkJLy8gaCs9U2lnbWEwKGEpCisJYWRkCXgxMix4MTIseDEKKwlsZHIJeDEsW3NwLCMxNl0KKwlzdHIJeDQsW3NwLCM4XQorCXJvcgl4MTYseDIzLCMxNAorCWFkZAl4MjYseDI2LHgyOAkJCS8vIGgrPUtbaV0KKwlyb3IJeDMseDE0LCMxCisJYW5kCXgxNyx4MjQseDIzCisJcm9yCXgyLHgxMSwjMTkKKwliaWMJeDI4LHgyNSx4MjMKKwlyb3IJeDQseDI3LCMyOAorCWFkZAl4MjYseDI2LHgxMgkJCS8vIGgrPVhbaV0KKwllb3IJeDE2LHgxNix4MjMscm9yIzE4CisJZW9yCXgzLHgzLHgxNCxyb3IjOAorCW9ycgl4MTcseDE3LHgyOAkJCS8vIENoKGUsZixnKQorCWVvcgl4MjgseDI3LHgyMAkJCS8vIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKwllb3IJeDE2LHgxNix4MjMscm9yIzQxCS8vIFNpZ21hMShlKQorCWVvcgl4NCx4NCx4Mjcscm9yIzM0CisJYWRkCXgyNix4MjYseDE3CQkJLy8gaCs9Q2goZSxmLGcpCisJYW5kCXgxOSx4MTkseDI4CQkJLy8gKGJeYykmPShhXmIpCisJZW9yCXgyLHgyLHgxMSxyb3IjNjEKKwllb3IJeDMseDMseDE0LGxzciM3CS8vIHNpZ21hMChYW2krMV0pCisJYWRkCXgyNix4MjYseDE2CQkJLy8gaCs9U2lnbWExKGUpCisJZW9yCXgxOSx4MTkseDIwCQkJLy8gTWFqKGEsYixjKQorCWVvcgl4MTcseDQseDI3LHJvciMzOQkvLyBTaWdtYTAoYSkKKwllb3IJeDIseDIseDExLGxzciM2CS8vIHNpZ21hMShYW2krMTRdKQorCWFkZAl4MTMseDEzLHg2CisJYWRkCXgyMix4MjIseDI2CQkJLy8gZCs9aAorCWFkZAl4MjYseDI2LHgxOQkJCS8vIGgrPU1haihhLGIsYykKKwlsZHIJeDE5LFt4MzBdLCM4CQkvLyAqSysrLCB4MjggaW4gbmV4dCByb3VuZAorCWFkZAl4MTMseDEzLHgzCisJYWRkCXgyNix4MjYseDE3CQkJLy8gaCs9U2lnbWEwKGEpCisJYWRkCXgxMyx4MTMseDIKKwlsZHIJeDIsW3NwLCMyNF0KKwlzdHIJeDUsW3NwLCMxNl0KKwlyb3IJeDE2LHgyMiwjMTQKKwlhZGQJeDI1LHgyNSx4MTkJCQkvLyBoKz1LW2ldCisJcm9yCXg0LHgxNSwjMQorCWFuZAl4MTcseDIzLHgyMgorCXJvcgl4Myx4MTIsIzE5CisJYmljCXgxOSx4MjQseDIyCisJcm9yCXg1LHgyNiwjMjgKKwlhZGQJeDI1LHgyNSx4MTMJCQkvLyBoKz1YW2ldCisJZW9yCXgxNix4MTYseDIyLHJvciMxOAorCWVvcgl4NCx4NCx4MTUscm9yIzgKKwlvcnIJeDE3LHgxNyx4MTkJCQkvLyBDaChlLGYsZykKKwllb3IJeDE5LHgyNix4MjcJCQkvLyBhXmIsIGJeYyBpbiBuZXh0IHJvdW5kCisJZW9yCXgxNix4MTYseDIyLHJvciM0MQkvLyBTaWdtYTEoZSkKKwllb3IJeDUseDUseDI2LHJvciMzNAorCWFkZAl4MjUseDI1LHgxNwkJCS8vIGgrPUNoKGUsZixnKQorCWFuZAl4MjgseDI4LHgxOQkJCS8vIChiXmMpJj0oYV5iKQorCWVvcgl4Myx4Myx4MTIscm9yIzYxCisJZW9yCXg0LHg0LHgxNSxsc3IjNwkvLyBzaWdtYTAoWFtpKzFdKQorCWFkZAl4MjUseDI1LHgxNgkJCS8vIGgrPVNpZ21hMShlKQorCWVvcgl4MjgseDI4LHgyNwkJCS8vIE1haihhLGIsYykKKwllb3IJeDE3LHg1LHgyNixyb3IjMzkJLy8gU2lnbWEwKGEpCisJZW9yCXgzLHgzLHgxMixsc3IjNgkvLyBzaWdtYTEoWFtpKzE0XSkKKwlhZGQJeDE0LHgxNCx4NworCWFkZAl4MjEseDIxLHgyNQkJCS8vIGQrPWgKKwlhZGQJeDI1LHgyNSx4MjgJCQkvLyBoKz1NYWooYSxiLGMpCisJbGRyCXgyOCxbeDMwXSwjOAkJLy8gKksrKywgeDE5IGluIG5leHQgcm91bmQKKwlhZGQJeDE0LHgxNCx4NAorCWFkZAl4MjUseDI1LHgxNwkJCS8vIGgrPVNpZ21hMChhKQorCWFkZAl4MTQseDE0LHgzCisJbGRyCXgzLFtzcCwjMF0KKwlzdHIJeDYsW3NwLCMyNF0KKwlyb3IJeDE2LHgyMSwjMTQKKwlhZGQJeDI0LHgyNCx4MjgJCQkvLyBoKz1LW2ldCisJcm9yCXg1LHgwLCMxCisJYW5kCXgxNyx4MjIseDIxCisJcm9yCXg0LHgxMywjMTkKKwliaWMJeDI4LHgyMyx4MjEKKwlyb3IJeDYseDI1LCMyOAorCWFkZAl4MjQseDI0LHgxNAkJCS8vIGgrPVhbaV0KKwllb3IJeDE2LHgxNix4MjEscm9yIzE4CisJZW9yCXg1LHg1LHgwLHJvciM4CisJb3JyCXgxNyx4MTcseDI4CQkJLy8gQ2goZSxmLGcpCisJZW9yCXgyOCx4MjUseDI2CQkJLy8gYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorCWVvcgl4MTYseDE2LHgyMSxyb3IjNDEJLy8gU2lnbWExKGUpCisJZW9yCXg2LHg2LHgyNSxyb3IjMzQKKwlhZGQJeDI0LHgyNCx4MTcJCQkvLyBoKz1DaChlLGYsZykKKwlhbmQJeDE5LHgxOSx4MjgJCQkvLyAoYl5jKSY9KGFeYikKKwllb3IJeDQseDQseDEzLHJvciM2MQorCWVvcgl4NSx4NSx4MCxsc3IjNwkvLyBzaWdtYTAoWFtpKzFdKQorCWFkZAl4MjQseDI0LHgxNgkJCS8vIGgrPVNpZ21hMShlKQorCWVvcgl4MTkseDE5LHgyNgkJCS8vIE1haihhLGIsYykKKwllb3IJeDE3LHg2LHgyNSxyb3IjMzkJLy8gU2lnbWEwKGEpCisJZW9yCXg0LHg0LHgxMyxsc3IjNgkvLyBzaWdtYTEoWFtpKzE0XSkKKwlhZGQJeDE1LHgxNSx4OAorCWFkZAl4MjAseDIwLHgyNAkJCS8vIGQrPWgKKwlhZGQJeDI0LHgyNCx4MTkJCQkvLyBoKz1NYWooYSxiLGMpCisJbGRyCXgxOSxbeDMwXSwjOAkJLy8gKksrKywgeDI4IGluIG5leHQgcm91bmQKKwlhZGQJeDE1LHgxNSx4NQorCWFkZAl4MjQseDI0LHgxNwkJCS8vIGgrPVNpZ21hMChhKQorCWFkZAl4MTUseDE1LHg0CisJbGRyCXg0LFtzcCwjOF0KKwlzdHIJeDcsW3NwLCMwXQorCXJvcgl4MTYseDIwLCMxNAorCWFkZAl4MjMseDIzLHgxOQkJCS8vIGgrPUtbaV0KKwlyb3IJeDYseDEsIzEKKwlhbmQJeDE3LHgyMSx4MjAKKwlyb3IJeDUseDE0LCMxOQorCWJpYwl4MTkseDIyLHgyMAorCXJvcgl4Nyx4MjQsIzI4CisJYWRkCXgyMyx4MjMseDE1CQkJLy8gaCs9WFtpXQorCWVvcgl4MTYseDE2LHgyMCxyb3IjMTgKKwllb3IJeDYseDYseDEscm9yIzgKKwlvcnIJeDE3LHgxNyx4MTkJCQkvLyBDaChlLGYsZykKKwllb3IJeDE5LHgyNCx4MjUJCQkvLyBhXmIsIGJeYyBpbiBuZXh0IHJvdW5kCisJZW9yCXgxNix4MTYseDIwLHJvciM0MQkvLyBTaWdtYTEoZSkKKwllb3IJeDcseDcseDI0LHJvciMzNAorCWFkZAl4MjMseDIzLHgxNwkJCS8vIGgrPUNoKGUsZixnKQorCWFuZAl4MjgseDI4LHgxOQkJCS8vIChiXmMpJj0oYV5iKQorCWVvcgl4NSx4NSx4MTQscm9yIzYxCisJZW9yCXg2LHg2LHgxLGxzciM3CS8vIHNpZ21hMChYW2krMV0pCisJYWRkCXgyMyx4MjMseDE2CQkJLy8gaCs9U2lnbWExKGUpCisJZW9yCXgyOCx4MjgseDI1CQkJLy8gTWFqKGEsYixjKQorCWVvcgl4MTcseDcseDI0LHJvciMzOQkvLyBTaWdtYTAoYSkKKwllb3IJeDUseDUseDE0LGxzciM2CS8vIHNpZ21hMShYW2krMTRdKQorCWFkZAl4MCx4MCx4OQorCWFkZAl4MjcseDI3LHgyMwkJCS8vIGQrPWgKKwlhZGQJeDIzLHgyMyx4MjgJCQkvLyBoKz1NYWooYSxiLGMpCisJbGRyCXgyOCxbeDMwXSwjOAkJLy8gKksrKywgeDE5IGluIG5leHQgcm91bmQKKwlhZGQJeDAseDAseDYKKwlhZGQJeDIzLHgyMyx4MTcJCQkvLyBoKz1TaWdtYTAoYSkKKwlhZGQJeDAseDAseDUKKwlsZHIJeDUsW3NwLCMxNl0KKwlzdHIJeDgsW3NwLCM4XQorCXJvcgl4MTYseDI3LCMxNAorCWFkZAl4MjIseDIyLHgyOAkJCS8vIGgrPUtbaV0KKwlyb3IJeDcseDIsIzEKKwlhbmQJeDE3LHgyMCx4MjcKKwlyb3IJeDYseDE1LCMxOQorCWJpYwl4MjgseDIxLHgyNworCXJvcgl4OCx4MjMsIzI4CisJYWRkCXgyMix4MjIseDAJCQkvLyBoKz1YW2ldCisJZW9yCXgxNix4MTYseDI3LHJvciMxOAorCWVvcgl4Nyx4Nyx4Mixyb3IjOAorCW9ycgl4MTcseDE3LHgyOAkJCS8vIENoKGUsZixnKQorCWVvcgl4MjgseDIzLHgyNAkJCS8vIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKwllb3IJeDE2LHgxNix4Mjcscm9yIzQxCS8vIFNpZ21hMShlKQorCWVvcgl4OCx4OCx4MjMscm9yIzM0CisJYWRkCXgyMix4MjIseDE3CQkJLy8gaCs9Q2goZSxmLGcpCisJYW5kCXgxOSx4MTkseDI4CQkJLy8gKGJeYykmPShhXmIpCisJZW9yCXg2LHg2LHgxNSxyb3IjNjEKKwllb3IJeDcseDcseDIsbHNyIzcJLy8gc2lnbWEwKFhbaSsxXSkKKwlhZGQJeDIyLHgyMix4MTYJCQkvLyBoKz1TaWdtYTEoZSkKKwllb3IJeDE5LHgxOSx4MjQJCQkvLyBNYWooYSxiLGMpCisJZW9yCXgxNyx4OCx4MjMscm9yIzM5CS8vIFNpZ21hMChhKQorCWVvcgl4Nix4Nix4MTUsbHNyIzYJLy8gc2lnbWExKFhbaSsxNF0pCisJYWRkCXgxLHgxLHgxMAorCWFkZAl4MjYseDI2LHgyMgkJCS8vIGQrPWgKKwlhZGQJeDIyLHgyMix4MTkJCQkvLyBoKz1NYWooYSxiLGMpCisJbGRyCXgxOSxbeDMwXSwjOAkJLy8gKksrKywgeDI4IGluIG5leHQgcm91bmQKKwlhZGQJeDEseDEseDcKKwlhZGQJeDIyLHgyMix4MTcJCQkvLyBoKz1TaWdtYTAoYSkKKwlhZGQJeDEseDEseDYKKwlsZHIJeDYsW3NwLCMyNF0KKwlzdHIJeDksW3NwLCMxNl0KKwlyb3IJeDE2LHgyNiwjMTQKKwlhZGQJeDIxLHgyMSx4MTkJCQkvLyBoKz1LW2ldCisJcm9yCXg4LHgzLCMxCisJYW5kCXgxNyx4MjcseDI2CisJcm9yCXg3LHgwLCMxOQorCWJpYwl4MTkseDIwLHgyNgorCXJvcgl4OSx4MjIsIzI4CisJYWRkCXgyMSx4MjEseDEJCQkvLyBoKz1YW2ldCisJZW9yCXgxNix4MTYseDI2LHJvciMxOAorCWVvcgl4OCx4OCx4Myxyb3IjOAorCW9ycgl4MTcseDE3LHgxOQkJCS8vIENoKGUsZixnKQorCWVvcgl4MTkseDIyLHgyMwkJCS8vIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKwllb3IJeDE2LHgxNix4MjYscm9yIzQxCS8vIFNpZ21hMShlKQorCWVvcgl4OSx4OSx4MjIscm9yIzM0CisJYWRkCXgyMSx4MjEseDE3CQkJLy8gaCs9Q2goZSxmLGcpCisJYW5kCXgyOCx4MjgseDE5CQkJLy8gKGJeYykmPShhXmIpCisJZW9yCXg3LHg3LHgwLHJvciM2MQorCWVvcgl4OCx4OCx4Myxsc3IjNwkvLyBzaWdtYTAoWFtpKzFdKQorCWFkZAl4MjEseDIxLHgxNgkJCS8vIGgrPVNpZ21hMShlKQorCWVvcgl4MjgseDI4LHgyMwkJCS8vIE1haihhLGIsYykKKwllb3IJeDE3LHg5LHgyMixyb3IjMzkJLy8gU2lnbWEwKGEpCisJZW9yCXg3LHg3LHgwLGxzciM2CS8vIHNpZ21hMShYW2krMTRdKQorCWFkZAl4Mix4Mix4MTEKKwlhZGQJeDI1LHgyNSx4MjEJCQkvLyBkKz1oCisJYWRkCXgyMSx4MjEseDI4CQkJLy8gaCs9TWFqKGEsYixjKQorCWxkcgl4MjgsW3gzMF0sIzgJCS8vICpLKyssIHgxOSBpbiBuZXh0IHJvdW5kCisJYWRkCXgyLHgyLHg4CisJYWRkCXgyMSx4MjEseDE3CQkJLy8gaCs9U2lnbWEwKGEpCisJYWRkCXgyLHgyLHg3CisJbGRyCXg3LFtzcCwjMF0KKwlzdHIJeDEwLFtzcCwjMjRdCisJcm9yCXgxNix4MjUsIzE0CisJYWRkCXgyMCx4MjAseDI4CQkJLy8gaCs9S1tpXQorCXJvcgl4OSx4NCwjMQorCWFuZAl4MTcseDI2LHgyNQorCXJvcgl4OCx4MSwjMTkKKwliaWMJeDI4LHgyNyx4MjUKKwlyb3IJeDEwLHgyMSwjMjgKKwlhZGQJeDIwLHgyMCx4MgkJCS8vIGgrPVhbaV0KKwllb3IJeDE2LHgxNix4MjUscm9yIzE4CisJZW9yCXg5LHg5LHg0LHJvciM4CisJb3JyCXgxNyx4MTcseDI4CQkJLy8gQ2goZSxmLGcpCisJZW9yCXgyOCx4MjEseDIyCQkJLy8gYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorCWVvcgl4MTYseDE2LHgyNSxyb3IjNDEJLy8gU2lnbWExKGUpCisJZW9yCXgxMCx4MTAseDIxLHJvciMzNAorCWFkZAl4MjAseDIwLHgxNwkJCS8vIGgrPUNoKGUsZixnKQorCWFuZAl4MTkseDE5LHgyOAkJCS8vIChiXmMpJj0oYV5iKQorCWVvcgl4OCx4OCx4MSxyb3IjNjEKKwllb3IJeDkseDkseDQsbHNyIzcJLy8gc2lnbWEwKFhbaSsxXSkKKwlhZGQJeDIwLHgyMCx4MTYJCQkvLyBoKz1TaWdtYTEoZSkKKwllb3IJeDE5LHgxOSx4MjIJCQkvLyBNYWooYSxiLGMpCisJZW9yCXgxNyx4MTAseDIxLHJvciMzOQkvLyBTaWdtYTAoYSkKKwllb3IJeDgseDgseDEsbHNyIzYJLy8gc2lnbWExKFhbaSsxNF0pCisJYWRkCXgzLHgzLHgxMgorCWFkZAl4MjQseDI0LHgyMAkJCS8vIGQrPWgKKwlhZGQJeDIwLHgyMCx4MTkJCQkvLyBoKz1NYWooYSxiLGMpCisJbGRyCXgxOSxbeDMwXSwjOAkJLy8gKksrKywgeDI4IGluIG5leHQgcm91bmQKKwlhZGQJeDMseDMseDkKKwlhZGQJeDIwLHgyMCx4MTcJCQkvLyBoKz1TaWdtYTAoYSkKKwlhZGQJeDMseDMseDgKKwljYm56CXgxOSwuTG9vcF8xNl94eAorCisJbGRwCXgwLHgyLFt4MjksIzk2XQorCWxkcgl4MSxbeDI5LCMxMTJdCisJc3ViCXgzMCx4MzAsIzY0OAkJLy8gcmV3aW5kCisKKwlsZHAJeDMseDQsW3gwXQorCWxkcAl4NSx4NixbeDAsIzIqOF0KKwlhZGQJeDEseDEsIzE0KjgJCQkvLyBhZHZhbmNlIGlucHV0IHBvaW50ZXIKKwlsZHAJeDcseDgsW3gwLCM0KjhdCisJYWRkCXgyMCx4MjAseDMKKwlsZHAJeDkseDEwLFt4MCwjNio4XQorCWFkZAl4MjEseDIxLHg0CisJYWRkCXgyMix4MjIseDUKKwlhZGQJeDIzLHgyMyx4NgorCXN0cAl4MjAseDIxLFt4MF0KKwlhZGQJeDI0LHgyNCx4NworCWFkZAl4MjUseDI1LHg4CisJc3RwCXgyMix4MjMsW3gwLCMyKjhdCisJYWRkCXgyNix4MjYseDkKKwlhZGQJeDI3LHgyNyx4MTAKKwljbXAJeDEseDIKKwlzdHAJeDI0LHgyNSxbeDAsIzQqOF0KKwlzdHAJeDI2LHgyNyxbeDAsIzYqOF0KKwliLm5lCS5Mb29wCisKKwlsZHAJeDE5LHgyMCxbeDI5LCMxNl0KKwlhZGQJc3Asc3AsIzQqOAorCWxkcAl4MjEseDIyLFt4MjksIzMyXQorCWxkcAl4MjMseDI0LFt4MjksIzQ4XQorCWxkcAl4MjUseDI2LFt4MjksIzY0XQorCWxkcAl4MjcseDI4LFt4MjksIzgwXQorCWxkcAl4MjkseDMwLFtzcF0sIzEyOAorCXJldAorLnNpemUJc2hhNTEyX2Jsb2NrX2RhdGFfb3JkZXIsLi1zaGE1MTJfYmxvY2tfZGF0YV9vcmRlcgorCisuYWxpZ24JNgorLnR5cGUJSzUxMiwlb2JqZWN0CitLNTEyOgorCS5xdWFkCTB4NDI4YTJmOThkNzI4YWUyMiwweDcxMzc0NDkxMjNlZjY1Y2QKKwkucXVhZAkweGI1YzBmYmNmZWM0ZDNiMmYsMHhlOWI1ZGJhNTgxODlkYmJjCisJLnF1YWQJMHgzOTU2YzI1YmYzNDhiNTM4LDB4NTlmMTExZjFiNjA1ZDAxOQorCS5xdWFkCTB4OTIzZjgyYTRhZjE5NGY5YiwweGFiMWM1ZWQ1ZGE2ZDgxMTgKKwkucXVhZAkweGQ4MDdhYTk4YTMwMzAyNDIsMHgxMjgzNWIwMTQ1NzA2ZmJlCisJLnF1YWQJMHgyNDMxODViZTRlZTRiMjhjLDB4NTUwYzdkYzNkNWZmYjRlMgorCS5xdWFkCTB4NzJiZTVkNzRmMjdiODk2ZiwweDgwZGViMWZlM2IxNjk2YjEKKwkucXVhZAkweDliZGMwNmE3MjVjNzEyMzUsMHhjMTliZjE3NGNmNjkyNjk0CisJLnF1YWQJMHhlNDliNjljMTllZjE0YWQyLDB4ZWZiZTQ3ODYzODRmMjVlMworCS5xdWFkCTB4MGZjMTlkYzY4YjhjZDViNSwweDI0MGNhMWNjNzdhYzljNjUKKwkucXVhZAkweDJkZTkyYzZmNTkyYjAyNzUsMHg0YTc0ODRhYTZlYTZlNDgzCisJLnF1YWQJMHg1Y2IwYTlkY2JkNDFmYmQ0LDB4NzZmOTg4ZGE4MzExNTNiNQorCS5xdWFkCTB4OTgzZTUxNTJlZTY2ZGZhYiwweGE4MzFjNjZkMmRiNDMyMTAKKwkucXVhZAkweGIwMDMyN2M4OThmYjIxM2YsMHhiZjU5N2ZjN2JlZWYwZWU0CisJLnF1YWQJMHhjNmUwMGJmMzNkYTg4ZmMyLDB4ZDVhNzkxNDc5MzBhYTcyNQorCS5xdWFkCTB4MDZjYTYzNTFlMDAzODI2ZiwweDE0MjkyOTY3MGEwZTZlNzAKKwkucXVhZAkweDI3YjcwYTg1NDZkMjJmZmMsMHgyZTFiMjEzODVjMjZjOTI2CisJLnF1YWQJMHg0ZDJjNmRmYzVhYzQyYWVkLDB4NTMzODBkMTM5ZDk1YjNkZgorCS5xdWFkCTB4NjUwYTczNTQ4YmFmNjNkZSwweDc2NmEwYWJiM2M3N2IyYTgKKwkucXVhZAkweDgxYzJjOTJlNDdlZGFlZTYsMHg5MjcyMmM4NTE0ODIzNTNiCisJLnF1YWQJMHhhMmJmZThhMTRjZjEwMzY0LDB4YTgxYTY2NGJiYzQyMzAwMQorCS5xdWFkCTB4YzI0YjhiNzBkMGY4OTc5MSwweGM3NmM1MWEzMDY1NGJlMzAKKwkucXVhZAkweGQxOTJlODE5ZDZlZjUyMTgsMHhkNjk5MDYyNDU1NjVhOTEwCisJLnF1YWQJMHhmNDBlMzU4NTU3NzEyMDJhLDB4MTA2YWEwNzAzMmJiZDFiOAorCS5xdWFkCTB4MTlhNGMxMTZiOGQyZDBjOCwweDFlMzc2YzA4NTE0MWFiNTMKKwkucXVhZAkweDI3NDg3NzRjZGY4ZWViOTksMHgzNGIwYmNiNWUxOWI0OGE4CisJLnF1YWQJMHgzOTFjMGNiM2M1Yzk1YTYzLDB4NGVkOGFhNGFlMzQxOGFjYgorCS5xdWFkCTB4NWI5Y2NhNGY3NzYzZTM3MywweDY4MmU2ZmYzZDZiMmI4YTMKKwkucXVhZAkweDc0OGY4MmVlNWRlZmIyZmMsMHg3OGE1NjM2ZjQzMTcyZjYwCisJLnF1YWQJMHg4NGM4NzgxNGExZjBhYjcyLDB4OGNjNzAyMDgxYTY0MzllYworCS5xdWFkCTB4OTBiZWZmZmEyMzYzMWUyOCwweGE0NTA2Y2ViZGU4MmJkZTkKKwkucXVhZAkweGJlZjlhM2Y3YjJjNjc5MTUsMHhjNjcxNzhmMmUzNzI1MzJiCisJLnF1YWQJMHhjYTI3M2VjZWVhMjY2MTljLDB4ZDE4NmI4YzcyMWMwYzIwNworCS5xdWFkCTB4ZWFkYTdkZDZjZGUwZWIxZSwweGY1N2Q0ZjdmZWU2ZWQxNzgKKwkucXVhZAkweDA2ZjA2N2FhNzIxNzZmYmEsMHgwYTYzN2RjNWEyYzg5OGE2CisJLnF1YWQJMHgxMTNmOTgwNGJlZjkwZGFlLDB4MWI3MTBiMzUxMzFjNDcxYgorCS5xdWFkCTB4MjhkYjc3ZjUyMzA0N2Q4NCwweDMyY2FhYjdiNDBjNzI0OTMKKwkucXVhZAkweDNjOWViZTBhMTVjOWJlYmMsMHg0MzFkNjdjNDljMTAwZDRjCisJLnF1YWQJMHg0Y2M1ZDRiZWNiM2U0MmI2LDB4NTk3ZjI5OWNmYzY1N2UyYQorCS5xdWFkCTB4NWZjYjZmYWIzYWQ2ZmFlYywweDZjNDQxOThjNGE0NzU4MTcKKwkucXVhZAkwCS8vIHRlcm1pbmF0b3IKKy5zaXplCUs1MTIsLi1LNTEyCisuYWxpZ24JMworLkxPUEVOU1NMX2FybWNhcF9QOgorCS5xdWFkCU9QRU5TU0xfYXJtY2FwX1AtLgorLmFzY2l6CSJTSEE1MTIgYmxvY2sgdHJhbnNmb3JtIGZvciBBUk12OCwgQ1JZUFRPR0FNUyBieSA8YXBwcm9Ab3BlbnNzbC5vcmc+IgorLmFsaWduCTIKKy5jb21tCU9QRU5TU0xfYXJtY2FwX1AsNCw0CmRpZmYgLS1naXQgYS9jcnlwdG8vc2hhL2FzbS9zaGE1MTItYXJtdjgucGwgYi9jcnlwdG8vc2hhL2FzbS9zaGE1MTItYXJtdjgucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjkzNWVkNgotLS0gL2Rldi9udWxsCisrKyBiL2NyeXB0by9zaGEvYXNtL3NoYTUxMi1hcm12OC5wbApAQCAtMCwwICsxLDQxNCBAQAorIyEvdXNyL2Jpbi9lbnYgcGVybAorIworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBXcml0dGVuIGJ5IEFuZHkgUG9seWFrb3YgPGFwcHJvQG9wZW5zc2wub3JnPiBmb3IgdGhlIE9wZW5TU0wKKyMgcHJvamVjdC4gVGhlIG1vZHVsZSBpcywgaG93ZXZlciwgZHVhbCBsaWNlbnNlZCB1bmRlciBPcGVuU1NMIGFuZAorIyBDUllQVE9HQU1TIGxpY2Vuc2VzIGRlcGVuZGluZyBvbiB3aGVyZSB5b3Ugb2J0YWluIGl0LiBGb3IgZnVydGhlcgorIyBkZXRhaWxzIHNlZSBodHRwOi8vd3d3Lm9wZW5zc2wub3JnL35hcHByby9jcnlwdG9nYW1zLy4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMKKyMgU0hBMjU2LzUxMiBmb3IgQVJNdjguCisjCisjIFBlcmZvcm1hbmNlIGluIGN5Y2xlcyBwZXIgcHJvY2Vzc2VkIGJ5dGUgYW5kIGltcHJvdmVtZW50IGNvZWZmaWNpZW50CisjIG92ZXIgY29kZSBnZW5lcmF0ZWQgd2l0aCAiZGVmYXVsdCIgY29tcGlsZXI6CisjCisjCQlTSEEyNTYtaHcJU0hBMjU2KCopCVNIQTUxMgorIyBBcHBsZSBBNwkxLjk3CQkxMC41ICgrMzMlKQk2LjczICgtMSUoKiopKQorIyBDb3J0ZXgtQTV4CW4vYQkJbi9hCQluL2EKKyMgCisjICgqKQlTb2Z0d2FyZSBTSEEyNTYgcmVzdWx0cyBhcmUgb2YgbGVzc2VyIHJlbGV2YW5jZSwgcHJlc2VudGVkCisjCW1vc3RseSBmb3IgaW5mb3JtYXRpb25hbCBwdXJwb3Nlcy4KKyMgKCoqKQlUaGUgcmVzdWx0IGlzIGEgdHJhZGUtb2ZmOiBpdCdzIHBvc3NpYmxlIHRvIGltcHJvdmUgaXQgYnkKKyMJMTAlLCBidXQgYXQgdGhlIGNvc3Qgb2YgMjAlIGxvc3Mgb24gQ29ydGV4LUE1eC4KKworJGZsYXZvdXI9c2hpZnQ7Ciskb3V0cHV0PXNoaWZ0Oworb3BlbiBTVERPVVQsIj4kb3V0cHV0IjsKKworaWYgKCRvdXRwdXQgPX4gLzUxMi8pIHsKKwkkQklUUz01MTI7CisJJFNaPTg7CisJQFNpZ21hMD0oMjgsMzQsMzkpOworCUBTaWdtYTE9KDE0LDE4LDQxKTsKKwlAc2lnbWEwPSgxLCAgOCwgNyk7CisJQHNpZ21hMT0oMTksNjEsIDYpOworCSRyb3VuZHM9ODA7CisJJHJlZ190PSJ4IjsKK30gZWxzZSB7CisJJEJJVFM9MjU2OworCSRTWj00OworCUBTaWdtYTA9KCAyLDEzLDIyKTsKKwlAU2lnbWExPSggNiwxMSwyNSk7CisJQHNpZ21hMD0oIDcsMTgsIDMpOworCUBzaWdtYTE9KDE3LDE5LDEwKTsKKwkkcm91bmRzPTY0OworCSRyZWdfdD0idyI7Cit9CisKKyRmdW5jPSJzaGEke0JJVFN9X2Jsb2NrX2RhdGFfb3JkZXIiOworCisoJGN0eCwkaW5wLCRudW0sJEt0YmwpPW1hcCgieCRfIiwoMC4uMiwzMCkpOworCitAWD1tYXAoIiRyZWdfdCRfIiwoMy4uMTUsMC4uMikpOworQFY9KCRBLCRCLCRDLCRELCRFLCRGLCRHLCRIKT1tYXAoIiRyZWdfdCRfIiwoMjAuLjI3KSk7CisoJHQwLCR0MSwkdDIsJHQzKT1tYXAoIiRyZWdfdCRfIiwoMTYsMTcsMTksMjgpKTsKKworc3ViIEJPRFlfMDBfeHggeworbXkgKCRpLCRhLCRiLCRjLCRkLCRlLCRmLCRnLCRoKT1AXzsKK215ICRqPSgkaSsxKSYxNTsKK215ICgkVDAsJFQxLCRUMik9KEBYWygkaS04KSYxNV0sQFhbKCRpLTkpJjE1XSxAWFsoJGktMTApJjE1XSk7CisgICAkVDA9QFhbJGkrM10gaWYgKCRpPDExKTsKKworJGNvZGUuPTw8X19fCWlmICgkaTwxNik7CisjaWZuZGVmCV9fQVJNRUJfXworCXJldglAWFskaV0sQFhbJGldCQkJLy8gJGkKKyNlbmRpZgorX19fCiskY29kZS49PDxfX18JaWYgKCRpPDEzICYmICgkaSYxKSk7CisJbGRwCUBYWyRpKzFdLEBYWyRpKzJdLFskaW5wXSwjMiokU1oKK19fXworJGNvZGUuPTw8X19fCWlmICgkaT09MTMpOworCWxkcAlAWFsxNF0sQFhbMTVdLFskaW5wXQorX19fCiskY29kZS49PDxfX18JaWYgKCRpPj0xNCk7CisJbGRyCUBYWygkaS0xMSkmMTVdLFtzcCwjYCRTWiooKCRpLTExKSU0KWBdCitfX18KKyRjb2RlLj08PF9fXwlpZiAoJGk+MCAmJiAkaTwxNik7CisJYWRkCSRhLCRhLCR0MQkJCS8vIGgrPVNpZ21hMChhKQorX19fCiskY29kZS49PDxfX18JaWYgKCRpPj0xMSk7CisJc3RyCUBYWygkaS04KSYxNV0sW3NwLCNgJFNaKigoJGktOCklNClgXQorX19fCisjIFdoaWxlIEFSTXY4IHNwZWNpZmllcyBtZXJnZWQgcm90YXRlLW4tbG9naWNhbCBvcGVyYXRpb24gc3VjaCBhcworIyAnZW9yIHgseSx6LHJvciNuJywgaXQgd2FzIGZvdW5kIHRvIG5lZ2F0aXZlbHkgYWZmZWN0IHBlcmZvcm1hbmNlCisjIG9uIEFwcGxlIEE3LiBUaGUgcmVhc29uIHNlZW1zIHRvIGJlIHRoYXQgaXQgcmVxdWlyZXMgZXZlbiAneScgdG8KKyMgYmUgYXZhaWxhYmxlIGVhcmxpZXIuIFRoaXMgbWVhbnMgdGhhdCBzdWNoIG1lcmdlZCBpbnN0cnVjdGlvbiBpcworIyBub3QgbmVjZXNzYXJpbHkgYmVzdCBjaG9pY2Ugb24gY3JpdGljYWwgcGF0aC4uLiBPbiB0aGUgb3RoZXIgaGFuZAorIyBDb3J0ZXgtQTV4IGhhbmRsZXMgbWVyZ2VkIGluc3RydWN0aW9ucyBtdWNoIGJldHRlciB0aGFuIGRpc2pvaW50CisjIHJvdGF0ZSBhbmQgbG9naWNhbC4uLiBTZWUgKCoqKSBmb290bm90ZSBhYm92ZS4KKyRjb2RlLj08PF9fXwlpZiAoJGk8MTUpOworCXJvcgkkdDAsJGUsIyRTaWdtYTFbMF0KKwlhZGQJJGgsJGgsJHQyCQkJLy8gaCs9S1tpXQorCWVvcgkkVDAsJGUsJGUscm9yI2AkU2lnbWExWzJdLSRTaWdtYTFbMV1gCisJYW5kCSR0MSwkZiwkZQorCWJpYwkkdDIsJGcsJGUKKwlhZGQJJGgsJGgsQFhbJGkmMTVdCQkJLy8gaCs9WFtpXQorCW9ycgkkdDEsJHQxLCR0MgkJCS8vIENoKGUsZixnKQorCWVvcgkkdDIsJGEsJGIJCQkvLyBhXmIsIGJeYyBpbiBuZXh0IHJvdW5kCisJZW9yCSR0MCwkdDAsJFQwLHJvciMkU2lnbWExWzFdCS8vIFNpZ21hMShlKQorCXJvcgkkVDAsJGEsIyRTaWdtYTBbMF0KKwlhZGQJJGgsJGgsJHQxCQkJLy8gaCs9Q2goZSxmLGcpCisJZW9yCSR0MSwkYSwkYSxyb3IjYCRTaWdtYTBbMl0tJFNpZ21hMFsxXWAKKwlhZGQJJGgsJGgsJHQwCQkJLy8gaCs9U2lnbWExKGUpCisJYW5kCSR0MywkdDMsJHQyCQkJLy8gKGJeYykmPShhXmIpCisJYWRkCSRkLCRkLCRoCQkJLy8gZCs9aAorCWVvcgkkdDMsJHQzLCRiCQkJLy8gTWFqKGEsYixjKQorCWVvcgkkdDEsJFQwLCR0MSxyb3IjJFNpZ21hMFsxXQkvLyBTaWdtYTAoYSkKKwlhZGQJJGgsJGgsJHQzCQkJLy8gaCs9TWFqKGEsYixjKQorCWxkcgkkdDMsWyRLdGJsXSwjJFNaCQkvLyAqSysrLCAkdDIgaW4gbmV4dCByb3VuZAorCS8vYWRkCSRoLCRoLCR0MQkJCS8vIGgrPVNpZ21hMChhKQorX19fCiskY29kZS49PDxfX18JaWYgKCRpPj0xNSk7CisJcm9yCSR0MCwkZSwjJFNpZ21hMVswXQorCWFkZAkkaCwkaCwkdDIJCQkvLyBoKz1LW2ldCisJcm9yCSRUMSxAWFsoJGorMSkmMTVdLCMkc2lnbWEwWzBdCisJYW5kCSR0MSwkZiwkZQorCXJvcgkkVDIsQFhbKCRqKzE0KSYxNV0sIyRzaWdtYTFbMF0KKwliaWMJJHQyLCRnLCRlCisJcm9yCSRUMCwkYSwjJFNpZ21hMFswXQorCWFkZAkkaCwkaCxAWFskaSYxNV0JCQkvLyBoKz1YW2ldCisJZW9yCSR0MCwkdDAsJGUscm9yIyRTaWdtYTFbMV0KKwllb3IJJFQxLCRUMSxAWFsoJGorMSkmMTVdLHJvciMkc2lnbWEwWzFdCisJb3JyCSR0MSwkdDEsJHQyCQkJLy8gQ2goZSxmLGcpCisJZW9yCSR0MiwkYSwkYgkJCS8vIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKwllb3IJJHQwLCR0MCwkZSxyb3IjJFNpZ21hMVsyXQkvLyBTaWdtYTEoZSkKKwllb3IJJFQwLCRUMCwkYSxyb3IjJFNpZ21hMFsxXQorCWFkZAkkaCwkaCwkdDEJCQkvLyBoKz1DaChlLGYsZykKKwlhbmQJJHQzLCR0MywkdDIJCQkvLyAoYl5jKSY9KGFeYikKKwllb3IJJFQyLCRUMixAWFsoJGorMTQpJjE1XSxyb3IjJHNpZ21hMVsxXQorCWVvcgkkVDEsJFQxLEBYWygkaisxKSYxNV0sbHNyIyRzaWdtYTBbMl0JLy8gc2lnbWEwKFhbaSsxXSkKKwlhZGQJJGgsJGgsJHQwCQkJLy8gaCs9U2lnbWExKGUpCisJZW9yCSR0MywkdDMsJGIJCQkvLyBNYWooYSxiLGMpCisJZW9yCSR0MSwkVDAsJGEscm9yIyRTaWdtYTBbMl0JLy8gU2lnbWEwKGEpCisJZW9yCSRUMiwkVDIsQFhbKCRqKzE0KSYxNV0sbHNyIyRzaWdtYTFbMl0JLy8gc2lnbWExKFhbaSsxNF0pCisJYWRkCUBYWyRqXSxAWFskal0sQFhbKCRqKzkpJjE1XQorCWFkZAkkZCwkZCwkaAkJCS8vIGQrPWgKKwlhZGQJJGgsJGgsJHQzCQkJLy8gaCs9TWFqKGEsYixjKQorCWxkcgkkdDMsWyRLdGJsXSwjJFNaCQkvLyAqSysrLCAkdDIgaW4gbmV4dCByb3VuZAorCWFkZAlAWFskal0sQFhbJGpdLCRUMQorCWFkZAkkaCwkaCwkdDEJCQkvLyBoKz1TaWdtYTAoYSkKKwlhZGQJQFhbJGpdLEBYWyRqXSwkVDIKK19fXworCSgkdDIsJHQzKT0oJHQzLCR0Mik7Cit9CisKKyRjb2RlLj08PF9fXzsKKyNpbmNsdWRlICJhcm1fYXJjaC5oIgorCisudGV4dAorCisuZ2xvYmwJJGZ1bmMKKy50eXBlCSRmdW5jLCVmdW5jdGlvbgorLmFsaWduCTYKKyRmdW5jOgorX19fCiskY29kZS49PDxfX18JaWYgKCRTWj09NCk7CisJbGRyCXgxNiwuTE9QRU5TU0xfYXJtY2FwX1AKKwlhZHIJeDE3LC5MT1BFTlNTTF9hcm1jYXBfUAorCWFkZAl4MTYseDE2LHgxNworCWxkcgl3MTYsW3gxNl0KKwl0c3QJdzE2LCNBUk1WOF9TSEEyNTYKKwliLm5lCS5MdjhfZW50cnkKK19fXworJGNvZGUuPTw8X19fOworCXN0cAl4MjkseDMwLFtzcCwjLTEyOF0hCisJYWRkCXgyOSxzcCwjMAorCisJc3RwCXgxOSx4MjAsW3NwLCMxNl0KKwlzdHAJeDIxLHgyMixbc3AsIzMyXQorCXN0cAl4MjMseDI0LFtzcCwjNDhdCisJc3RwCXgyNSx4MjYsW3NwLCM2NF0KKwlzdHAJeDI3LHgyOCxbc3AsIzgwXQorCXN1YglzcCxzcCwjNCokU1oKKworCWxkcAkkQSwkQixbJGN0eF0JCQkJLy8gbG9hZCBjb250ZXh0CisJbGRwCSRDLCRELFskY3R4LCMyKiRTWl0KKwlsZHAJJEUsJEYsWyRjdHgsIzQqJFNaXQorCWFkZAkkbnVtLCRpbnAsJG51bSxsc2wjYGxvZygxNiokU1opL2xvZygyKWAJLy8gZW5kIG9mIGlucHV0CisJbGRwCSRHLCRILFskY3R4LCM2KiRTWl0KKwlhZHIJJEt0YmwsSyRCSVRTCisJc3RwCSRjdHgsJG51bSxbeDI5LCM5Nl0KKworLkxvb3A6CisJbGRwCUBYWzBdLEBYWzFdLFskaW5wXSwjMiokU1oKKwlsZHIJJHQyLFskS3RibF0sIyRTWgkJCS8vICpLKysKKwllb3IJJHQzLCRCLCRDCQkJCS8vIG1hZ2ljIHNlZWQKKwlzdHIJJGlucCxbeDI5LCMxMTJdCitfX18KK2ZvciAoJGk9MDskaTwxNjskaSsrKQl7ICZCT0RZXzAwX3h4KCRpLEBWKTsgdW5zaGlmdChAVixwb3AoQFYpKTsgfQorJGNvZGUuPSIuTG9vcF8xNl94eDpcbiI7Citmb3IgKDskaTwzMjskaSsrKQl7ICZCT0RZXzAwX3h4KCRpLEBWKTsgdW5zaGlmdChAVixwb3AoQFYpKTsgfQorJGNvZGUuPTw8X19fOworCWNibnoJJHQyLC5Mb29wXzE2X3h4CisKKwlsZHAJJGN0eCwkbnVtLFt4MjksIzk2XQorCWxkcgkkaW5wLFt4MjksIzExMl0KKwlzdWIJJEt0YmwsJEt0YmwsI2AkU1oqKCRyb3VuZHMrMSlgCQkvLyByZXdpbmQKKworCWxkcAlAWFswXSxAWFsxXSxbJGN0eF0KKwlsZHAJQFhbMl0sQFhbM10sWyRjdHgsIzIqJFNaXQorCWFkZAkkaW5wLCRpbnAsIzE0KiRTWgkJCS8vIGFkdmFuY2UgaW5wdXQgcG9pbnRlcgorCWxkcAlAWFs0XSxAWFs1XSxbJGN0eCwjNCokU1pdCisJYWRkCSRBLCRBLEBYWzBdCisJbGRwCUBYWzZdLEBYWzddLFskY3R4LCM2KiRTWl0KKwlhZGQJJEIsJEIsQFhbMV0KKwlhZGQJJEMsJEMsQFhbMl0KKwlhZGQJJEQsJEQsQFhbM10KKwlzdHAJJEEsJEIsWyRjdHhdCisJYWRkCSRFLCRFLEBYWzRdCisJYWRkCSRGLCRGLEBYWzVdCisJc3RwCSRDLCRELFskY3R4LCMyKiRTWl0KKwlhZGQJJEcsJEcsQFhbNl0KKwlhZGQJJEgsJEgsQFhbN10KKwljbXAJJGlucCwkbnVtCisJc3RwCSRFLCRGLFskY3R4LCM0KiRTWl0KKwlzdHAJJEcsJEgsWyRjdHgsIzYqJFNaXQorCWIubmUJLkxvb3AKKworCWxkcAl4MTkseDIwLFt4MjksIzE2XQorCWFkZAlzcCxzcCwjNCokU1oKKwlsZHAJeDIxLHgyMixbeDI5LCMzMl0KKwlsZHAJeDIzLHgyNCxbeDI5LCM0OF0KKwlsZHAJeDI1LHgyNixbeDI5LCM2NF0KKwlsZHAJeDI3LHgyOCxbeDI5LCM4MF0KKwlsZHAJeDI5LHgzMCxbc3BdLCMxMjgKKwlyZXQKKy5zaXplCSRmdW5jLC4tJGZ1bmMKKworLmFsaWduCTYKKy50eXBlCUskQklUUywlb2JqZWN0CitLJEJJVFM6CitfX18KKyRjb2RlLj08PF9fXyBpZiAoJFNaPT04KTsKKwkucXVhZAkweDQyOGEyZjk4ZDcyOGFlMjIsMHg3MTM3NDQ5MTIzZWY2NWNkCisJLnF1YWQJMHhiNWMwZmJjZmVjNGQzYjJmLDB4ZTliNWRiYTU4MTg5ZGJiYworCS5xdWFkCTB4Mzk1NmMyNWJmMzQ4YjUzOCwweDU5ZjExMWYxYjYwNWQwMTkKKwkucXVhZAkweDkyM2Y4MmE0YWYxOTRmOWIsMHhhYjFjNWVkNWRhNmQ4MTE4CisJLnF1YWQJMHhkODA3YWE5OGEzMDMwMjQyLDB4MTI4MzViMDE0NTcwNmZiZQorCS5xdWFkCTB4MjQzMTg1YmU0ZWU0YjI4YywweDU1MGM3ZGMzZDVmZmI0ZTIKKwkucXVhZAkweDcyYmU1ZDc0ZjI3Yjg5NmYsMHg4MGRlYjFmZTNiMTY5NmIxCisJLnF1YWQJMHg5YmRjMDZhNzI1YzcxMjM1LDB4YzE5YmYxNzRjZjY5MjY5NAorCS5xdWFkCTB4ZTQ5YjY5YzE5ZWYxNGFkMiwweGVmYmU0Nzg2Mzg0ZjI1ZTMKKwkucXVhZAkweDBmYzE5ZGM2OGI4Y2Q1YjUsMHgyNDBjYTFjYzc3YWM5YzY1CisJLnF1YWQJMHgyZGU5MmM2ZjU5MmIwMjc1LDB4NGE3NDg0YWE2ZWE2ZTQ4MworCS5xdWFkCTB4NWNiMGE5ZGNiZDQxZmJkNCwweDc2Zjk4OGRhODMxMTUzYjUKKwkucXVhZAkweDk4M2U1MTUyZWU2NmRmYWIsMHhhODMxYzY2ZDJkYjQzMjEwCisJLnF1YWQJMHhiMDAzMjdjODk4ZmIyMTNmLDB4YmY1OTdmYzdiZWVmMGVlNAorCS5xdWFkCTB4YzZlMDBiZjMzZGE4OGZjMiwweGQ1YTc5MTQ3OTMwYWE3MjUKKwkucXVhZAkweDA2Y2E2MzUxZTAwMzgyNmYsMHgxNDI5Mjk2NzBhMGU2ZTcwCisJLnF1YWQJMHgyN2I3MGE4NTQ2ZDIyZmZjLDB4MmUxYjIxMzg1YzI2YzkyNgorCS5xdWFkCTB4NGQyYzZkZmM1YWM0MmFlZCwweDUzMzgwZDEzOWQ5NWIzZGYKKwkucXVhZAkweDY1MGE3MzU0OGJhZjYzZGUsMHg3NjZhMGFiYjNjNzdiMmE4CisJLnF1YWQJMHg4MWMyYzkyZTQ3ZWRhZWU2LDB4OTI3MjJjODUxNDgyMzUzYgorCS5xdWFkCTB4YTJiZmU4YTE0Y2YxMDM2NCwweGE4MWE2NjRiYmM0MjMwMDEKKwkucXVhZAkweGMyNGI4YjcwZDBmODk3OTEsMHhjNzZjNTFhMzA2NTRiZTMwCisJLnF1YWQJMHhkMTkyZTgxOWQ2ZWY1MjE4LDB4ZDY5OTA2MjQ1NTY1YTkxMAorCS5xdWFkCTB4ZjQwZTM1ODU1NzcxMjAyYSwweDEwNmFhMDcwMzJiYmQxYjgKKwkucXVhZAkweDE5YTRjMTE2YjhkMmQwYzgsMHgxZTM3NmMwODUxNDFhYjUzCisJLnF1YWQJMHgyNzQ4Nzc0Y2RmOGVlYjk5LDB4MzRiMGJjYjVlMTliNDhhOAorCS5xdWFkCTB4MzkxYzBjYjNjNWM5NWE2MywweDRlZDhhYTRhZTM0MThhY2IKKwkucXVhZAkweDViOWNjYTRmNzc2M2UzNzMsMHg2ODJlNmZmM2Q2YjJiOGEzCisJLnF1YWQJMHg3NDhmODJlZTVkZWZiMmZjLDB4NzhhNTYzNmY0MzE3MmY2MAorCS5xdWFkCTB4ODRjODc4MTRhMWYwYWI3MiwweDhjYzcwMjA4MWE2NDM5ZWMKKwkucXVhZAkweDkwYmVmZmZhMjM2MzFlMjgsMHhhNDUwNmNlYmRlODJiZGU5CisJLnF1YWQJMHhiZWY5YTNmN2IyYzY3OTE1LDB4YzY3MTc4ZjJlMzcyNTMyYgorCS5xdWFkCTB4Y2EyNzNlY2VlYTI2NjE5YywweGQxODZiOGM3MjFjMGMyMDcKKwkucXVhZAkweGVhZGE3ZGQ2Y2RlMGViMWUsMHhmNTdkNGY3ZmVlNmVkMTc4CisJLnF1YWQJMHgwNmYwNjdhYTcyMTc2ZmJhLDB4MGE2MzdkYzVhMmM4OThhNgorCS5xdWFkCTB4MTEzZjk4MDRiZWY5MGRhZSwweDFiNzEwYjM1MTMxYzQ3MWIKKwkucXVhZAkweDI4ZGI3N2Y1MjMwNDdkODQsMHgzMmNhYWI3YjQwYzcyNDkzCisJLnF1YWQJMHgzYzllYmUwYTE1YzliZWJjLDB4NDMxZDY3YzQ5YzEwMGQ0YworCS5xdWFkCTB4NGNjNWQ0YmVjYjNlNDJiNiwweDU5N2YyOTljZmM2NTdlMmEKKwkucXVhZAkweDVmY2I2ZmFiM2FkNmZhZWMsMHg2YzQ0MTk4YzRhNDc1ODE3CisJLnF1YWQJMAkvLyB0ZXJtaW5hdG9yCitfX18KKyRjb2RlLj08PF9fXyBpZiAoJFNaPT00KTsKKwkubG9uZwkweDQyOGEyZjk4LDB4NzEzNzQ0OTEsMHhiNWMwZmJjZiwweGU5YjVkYmE1CisJLmxvbmcJMHgzOTU2YzI1YiwweDU5ZjExMWYxLDB4OTIzZjgyYTQsMHhhYjFjNWVkNQorCS5sb25nCTB4ZDgwN2FhOTgsMHgxMjgzNWIwMSwweDI0MzE4NWJlLDB4NTUwYzdkYzMKKwkubG9uZwkweDcyYmU1ZDc0LDB4ODBkZWIxZmUsMHg5YmRjMDZhNywweGMxOWJmMTc0CisJLmxvbmcJMHhlNDliNjljMSwweGVmYmU0Nzg2LDB4MGZjMTlkYzYsMHgyNDBjYTFjYworCS5sb25nCTB4MmRlOTJjNmYsMHg0YTc0ODRhYSwweDVjYjBhOWRjLDB4NzZmOTg4ZGEKKwkubG9uZwkweDk4M2U1MTUyLDB4YTgzMWM2NmQsMHhiMDAzMjdjOCwweGJmNTk3ZmM3CisJLmxvbmcJMHhjNmUwMGJmMywweGQ1YTc5MTQ3LDB4MDZjYTYzNTEsMHgxNDI5Mjk2NworCS5sb25nCTB4MjdiNzBhODUsMHgyZTFiMjEzOCwweDRkMmM2ZGZjLDB4NTMzODBkMTMKKwkubG9uZwkweDY1MGE3MzU0LDB4NzY2YTBhYmIsMHg4MWMyYzkyZSwweDkyNzIyYzg1CisJLmxvbmcJMHhhMmJmZThhMSwweGE4MWE2NjRiLDB4YzI0YjhiNzAsMHhjNzZjNTFhMworCS5sb25nCTB4ZDE5MmU4MTksMHhkNjk5MDYyNCwweGY0MGUzNTg1LDB4MTA2YWEwNzAKKwkubG9uZwkweDE5YTRjMTE2LDB4MWUzNzZjMDgsMHgyNzQ4Nzc0YywweDM0YjBiY2I1CisJLmxvbmcJMHgzOTFjMGNiMywweDRlZDhhYTRhLDB4NWI5Y2NhNGYsMHg2ODJlNmZmMworCS5sb25nCTB4NzQ4ZjgyZWUsMHg3OGE1NjM2ZiwweDg0Yzg3ODE0LDB4OGNjNzAyMDgKKwkubG9uZwkweDkwYmVmZmZhLDB4YTQ1MDZjZWIsMHhiZWY5YTNmNywweGM2NzE3OGYyCisJLmxvbmcJMAkvL3Rlcm1pbmF0b3IKK19fXworJGNvZGUuPTw8X19fOworLnNpemUJSyRCSVRTLC4tSyRCSVRTCisuYWxpZ24JMworLkxPUEVOU1NMX2FybWNhcF9QOgorCS5xdWFkCU9QRU5TU0xfYXJtY2FwX1AtLgorLmFzY2l6CSJTSEEkQklUUyBibG9jayB0cmFuc2Zvcm0gZm9yIEFSTXY4LCBDUllQVE9HQU1TIGJ5IDxhcHByb1xAb3BlbnNzbC5vcmc+IgorLmFsaWduCTIKK19fXworCitpZiAoJFNaPT00KSB7CitteSAkS3RibD0ieDMiOworCitteSAoJEFCQ0QsJEVGR0gsJGFiY2QpPW1hcCgidiRfLjE2YiIsKDAuLjIpKTsKK215IEBNU0c9bWFwKCJ2JF8uMTZiIiwoNC4uNykpOworbXkgKCRXMCwkVzEpPSgidjE2LjRzIiwidjE3LjRzIik7CitteSAoJEFCQ0RfU0FWRSwkRUZHSF9TQVZFKT0oInYxOC4xNmIiLCJ2MTkuMTZiIik7CisKKyRjb2RlLj08PF9fXzsKKy50eXBlCXNoYTI1Nl9ibG9ja19hcm12OCwlZnVuY3Rpb24KKy5hbGlnbgk2CitzaGEyNTZfYmxvY2tfYXJtdjg6CisuTHY4X2VudHJ5OgorCXN0cAkJeDI5LHgzMCxbc3AsIy0xNl0hCisJYWRkCQl4Mjksc3AsIzAKKworCWxkMS4zMgkJeyRBQkNELCRFRkdIfSxbJGN0eF0KKwlhZHIJCSRLdGJsLEsyNTYKKworLkxvb3BfaHc6CisJbGQxCQl7QE1TR1swXS1ATVNHWzNdfSxbJGlucF0sIzY0CisJc3ViCQkkbnVtLCRudW0sIzEKKwlsZDEuMzIJCXskVzB9LFskS3RibF0sIzE2CisJcmV2MzIJCUBNU0dbMF0sQE1TR1swXQorCXJldjMyCQlATVNHWzFdLEBNU0dbMV0KKwlyZXYzMgkJQE1TR1syXSxATVNHWzJdCisJcmV2MzIJCUBNU0dbM10sQE1TR1szXQorCW9ycgkJJEFCQ0RfU0FWRSwkQUJDRCwkQUJDRAkJLy8gb2ZmbG9hZAorCW9ycgkJJEVGR0hfU0FWRSwkRUZHSCwkRUZHSAorX19fCitmb3IoJGk9MDskaTwxMjskaSsrKSB7CiskY29kZS49PDxfX187CisJbGQxLjMyCQl7JFcxfSxbJEt0YmxdLCMxNgorCWFkZC5pMzIJCSRXMCwkVzAsQE1TR1swXQorCXNoYTI1NnN1MAlATVNHWzBdLEBNU0dbMV0KKwlvcnIJCSRhYmNkLCRBQkNELCRBQkNECisJc2hhMjU2aAkJJEFCQ0QsJEVGR0gsJFcwCisJc2hhMjU2aDIJJEVGR0gsJGFiY2QsJFcwCisJc2hhMjU2c3UxCUBNU0dbMF0sQE1TR1syXSxATVNHWzNdCitfX18KKwkoJFcwLCRXMSk9KCRXMSwkVzApOwlwdXNoKEBNU0csc2hpZnQoQE1TRykpOworfQorJGNvZGUuPTw8X19fOworCWxkMS4zMgkJeyRXMX0sWyRLdGJsXSwjMTYKKwlhZGQuaTMyCQkkVzAsJFcwLEBNU0dbMF0KKwlvcnIJCSRhYmNkLCRBQkNELCRBQkNECisJc2hhMjU2aAkJJEFCQ0QsJEVGR0gsJFcwCisJc2hhMjU2aDIJJEVGR0gsJGFiY2QsJFcwCisKKwlsZDEuMzIJCXskVzB9LFskS3RibF0sIzE2CisJYWRkLmkzMgkJJFcxLCRXMSxATVNHWzFdCisJb3JyCQkkYWJjZCwkQUJDRCwkQUJDRAorCXNoYTI1NmgJCSRBQkNELCRFRkdILCRXMQorCXNoYTI1NmgyCSRFRkdILCRhYmNkLCRXMQorCisJbGQxLjMyCQl7JFcxfSxbJEt0YmxdCisJYWRkLmkzMgkJJFcwLCRXMCxATVNHWzJdCisJc3ViCQkkS3RibCwkS3RibCwjJHJvdW5kcyokU1otMTYJLy8gcmV3aW5kCisJb3JyCQkkYWJjZCwkQUJDRCwkQUJDRAorCXNoYTI1NmgJCSRBQkNELCRFRkdILCRXMAorCXNoYTI1NmgyCSRFRkdILCRhYmNkLCRXMAorCisJYWRkLmkzMgkJJFcxLCRXMSxATVNHWzNdCisJb3JyCQkkYWJjZCwkQUJDRCwkQUJDRAorCXNoYTI1NmgJCSRBQkNELCRFRkdILCRXMQorCXNoYTI1NmgyCSRFRkdILCRhYmNkLCRXMQorCisJYWRkLmkzMgkJJEFCQ0QsJEFCQ0QsJEFCQ0RfU0FWRQorCWFkZC5pMzIJCSRFRkdILCRFRkdILCRFRkdIX1NBVkUKKworCWNibnoJCSRudW0sLkxvb3BfaHcKKworCXN0MS4zMgkJeyRBQkNELCRFRkdIfSxbJGN0eF0KKworCWxkcgkJeDI5LFtzcF0sIzE2CisJcmV0Cisuc2l6ZQlzaGEyNTZfYmxvY2tfYXJtdjgsLi1zaGEyNTZfYmxvY2tfYXJtdjgKK19fXworfQorCiskY29kZS49PDxfX187CisuY29tbQlPUEVOU1NMX2FybWNhcF9QLDQsNAorX19fCisKK3sgICBteSAgJW9wY29kZSA9ICgKKwkic2hhMjU2aCIJPT4gMHg1ZTAwNDAwMCwJInNoYTI1NmgyIgk9PiAweDVlMDA1MDAwLAorCSJzaGEyNTZzdTAiCT0+IDB4NWUyODI4MDAsCSJzaGEyNTZzdTEiCT0+IDB4NWUwMDYwMDAJKTsKKworICAgIHN1YiB1bnNoYTI1NiB7CisJbXkgKCRtbmVtb25pYywkYXJnKT1AXzsKKworCSRhcmcgPX4gbS9bcXZdKFswLTldKylbXixdKixccypbcXZdKFswLTldKylbXixdKig/OixccypbcXZdKFswLTldKykpPy9vCisJJiYKKwlzcHJpbnRmICIuaW5zdFx0MHglMDh4XHQvLyVzICVzIiwKKwkJCSRvcGNvZGV7JG1uZW1vbmljfXwkMXwoJDI8PDUpfCgkMzw8MTYpLAorCQkJJG1uZW1vbmljLCRhcmc7CisgICAgfQorfQorCitmb3JlYWNoKHNwbGl0KCJcbiIsJGNvZGUpKSB7CisKKwlzL1xgKFteXGBdKilcYC9ldmFsKCQxKS9nZW87CisKKwlzL1xiKHNoYTI1Nlx3KylccysoW3F2XS4qKS91bnNoYTI1NigkMSwkMikvZ2VvOworCisJcy9cLlx3PzMyXGIvL28JCWFuZCBzL1wuMTZiL1wuNHMvZ287CisJbS8obGR8c3QpMVteXFtdK1xbMFxdL28JYW5kIHMvXC40cy9cLnMvZ287CisKKwlwcmludCAkXywiXG4iOworfQorCitjbG9zZSBTVERPVVQ7CmRpZmYgLS1naXQgYS9jcnlwdG8vc3JwL3NycF92ZnkuYyBiL2NyeXB0by9zcnAvc3JwX3ZmeS5jCmluZGV4IDRhM2QxM2UuLmZkY2ExOWYgMTAwNjQ0Ci0tLSBhL2NyeXB0by9zcnAvc3JwX3ZmeS5jCisrKyBiL2NyeXB0by9zcnAvc3JwX3ZmeS5jCkBAIC05Myw2ICs5Myw5IEBACiAJCWVsc2UgYVtpXSA9IGxvYyAtIGI2NHRhYmxlOwogCQkrK2k7CiAJCX0KKwkvKiBpZiBub3RoaW5nIHZhbGlkIHRvIHByb2Nlc3Mgd2UgaGF2ZSBhIHplcm8gbGVuZ3RoIHJlc3BvbnNlICovCisJaWYgKGkgPT0gMCkKKwkJcmV0dXJuIDA7CiAJc2l6ZSA9IGk7CiAJaSA9IHNpemUgLSAxOwogCWogPSBzaXplOwpkaWZmIC0tZ2l0IGEvY3J5cHRvL3N5bWhhY2tzLmggYi9jcnlwdG8vc3ltaGFja3MuaAppbmRleCAwN2E0MTJmLi5iZDJmMDAwIDEwMDY0NAotLS0gYS9jcnlwdG8vc3ltaGFja3MuaAorKysgYi9jcnlwdG8vc3ltaGFja3MuaApAQCAtMjA0LDYgKzIwNCwxMiBAQAogI2RlZmluZSBTU0xfQ1RYX3NldF9uZXh0X3Byb3Rvc19hZHZlcnRpc2VkX2NiCVNTTF9DVFhfc2V0X25leHRfcHJvdG9zX2Fkdl9jYgogI3VuZGVmIFNTTF9DVFhfc2V0X25leHRfcHJvdG9fc2VsZWN0X2NiCiAjZGVmaW5lIFNTTF9DVFhfc2V0X25leHRfcHJvdG9fc2VsZWN0X2NiCVNTTF9DVFhfc2V0X25leHRfcHJvdG9fc2VsX2NiCisjdW5kZWYgc3NsM19jYmNfcmVjb3JkX2RpZ2VzdF9zdXBwb3J0ZWQKKyNkZWZpbmUgc3NsM19jYmNfcmVjb3JkX2RpZ2VzdF9zdXBwb3J0ZWQgICAgICAgIHNzbDNfY2JjX3JlY29yZF9kaWdlc3Rfc3VwcG9ydAorI3VuZGVmIHNzbF9jaGVja19jbGllbnRoZWxsb190bHNleHRfbGF0ZQorI2RlZmluZSBzc2xfY2hlY2tfY2xpZW50aGVsbG9fdGxzZXh0X2xhdGUgICAgICAgc3NsX2NoZWNrX2NsaWhlbGxvX3Rsc2V4dF9sYXRlCisjdW5kZWYgc3NsX2NoZWNrX2NsaWVudGhlbGxvX3Rsc2V4dF9lYXJseQorI2RlZmluZSBzc2xfY2hlY2tfY2xpZW50aGVsbG9fdGxzZXh0X2Vhcmx5ICAgICAgc3NsX2NoZWNrX2NsaWhlbGxvX3Rsc2V4dF9lYXJseQogCiAvKiBIYWNrIHNvbWUgbG9uZyBFTkdJTkUgbmFtZXMgKi8KICN1bmRlZiBFTkdJTkVfZ2V0X2RlZmF1bHRfQk5fbW9kX2V4cF9jcnQKZGlmZiAtLWdpdCBhL2NyeXB0by94NTA5L2J5X2Rpci5jIGIvY3J5cHRvL3g1MDkvYnlfZGlyLmMKaW5kZXggMjdjYTUxNS4uYzY2MDJkYSAxMDA2NDQKLS0tIGEvY3J5cHRvL3g1MDkvYnlfZGlyLmMKKysrIGIvY3J5cHRvL3g1MDkvYnlfZGlyLmMKQEAgLTIxOCw3ICsyMTgsNyBAQAogCiAJcz1kaXI7CiAJcD1zOwotCWZvciAoOztwKyspCisJZG8KIAkJewogCQlpZiAoKCpwID09IExJU1RfU0VQQVJBVE9SX0NIQVIpIHx8ICgqcCA9PSAnXDAnKSkKIAkJCXsKQEAgLTI2NCw5ICsyNjQsNyBAQAogCQkJCXJldHVybiAwOwogCQkJCX0KIAkJCX0KLQkJaWYgKCpwID09ICdcMCcpCi0JCQlicmVhazsKLQkJfQorCQl9IHdoaWxlICgqcCsrICE9ICdcMCcpOwogCXJldHVybiAxOwogCX0KIApkaWZmIC0tZ2l0IGEvY3J5cHRvL3g1MDkveDUwOV92ZnkuYyBiL2NyeXB0by94NTA5L3g1MDlfdmZ5LmMKaW5kZXggNTE5NWZmZS4uOTIwMDY2YSAxMDA2NDQKLS0tIGEvY3J5cHRvL3g1MDkveDUwOV92ZnkuYworKysgYi9jcnlwdG8veDUwOS94NTA5X3ZmeS5jCkBAIC0xNDYyLDEwICsxNDYyLDkgQEAKIAkgKiBhIGNlcnRpZmljYXRlIHdhcyByZXZva2VkLiBUaGlzIGhhcyBzaW5jZSBiZWVuIGNoYW5nZWQgc2luY2UgCiAJICogY3JpdGljYWwgZXh0ZW5zaW9uIGNhbiBjaGFuZ2UgdGhlIG1lYW5pbmcgb2YgQ1JMIGVudHJpZXMuCiAJICovCi0JaWYgKGNybC0+ZmxhZ3MgJiBFWEZMQUdfQ1JJVElDQUwpCisJaWYgKCEoY3R4LT5wYXJhbS0+ZmxhZ3MgJiBYNTA5X1ZfRkxBR19JR05PUkVfQ1JJVElDQUwpCisJCSYmIChjcmwtPmZsYWdzICYgRVhGTEFHX0NSSVRJQ0FMKSkKIAkJewotCQlpZiAoY3R4LT5wYXJhbS0+ZmxhZ3MgJiBYNTA5X1ZfRkxBR19JR05PUkVfQ1JJVElDQUwpCi0JCQlyZXR1cm4gMTsKIAkJY3R4LT5lcnJvciA9IFg1MDlfVl9FUlJfVU5IQU5ETEVEX0NSSVRJQ0FMX0NSTF9FWFRFTlNJT047CiAJCW9rID0gY3R4LT52ZXJpZnlfY2IoMCwgY3R4KTsKIAkJaWYoIW9rKQpkaWZmIC0tZ2l0IGEvY3J5cHRvL3g1MDl2My92M19wdXJwLmMgYi9jcnlwdG8veDUwOXYzL3YzX3B1cnAuYwppbmRleCBhZDY4ODY1Li5mNTliZmMxIDEwMDY0NAotLS0gYS9jcnlwdG8veDUwOXYzL3YzX3B1cnAuYworKysgYi9jcnlwdG8veDUwOXYzL3YzX3B1cnAuYwpAQCAtMzg5LDggKzM4OSw4IEBACiAJLyogSGFuZGxlIHByb3h5IGNlcnRpZmljYXRlcyAqLwogCWlmKChwY2k9WDUwOV9nZXRfZXh0X2QyaSh4LCBOSURfcHJveHlDZXJ0SW5mbywgTlVMTCwgTlVMTCkpKSB7CiAJCWlmICh4LT5leF9mbGFncyAmIEVYRkxBR19DQQotCQkgICAgfHwgWDUwOV9nZXRfZXh0X2J5X05JRCh4LCBOSURfc3ViamVjdF9hbHRfbmFtZSwgMCkgPj0gMAotCQkgICAgfHwgWDUwOV9nZXRfZXh0X2J5X05JRCh4LCBOSURfaXNzdWVyX2FsdF9uYW1lLCAwKSA+PSAwKSB7CisJCSAgICB8fCBYNTA5X2dldF9leHRfYnlfTklEKHgsIE5JRF9zdWJqZWN0X2FsdF9uYW1lLCAtMSkgPj0gMAorCQkgICAgfHwgWDUwOV9nZXRfZXh0X2J5X05JRCh4LCBOSURfaXNzdWVyX2FsdF9uYW1lLCAtMSkgPj0gMCkgewogCQkJeC0+ZXhfZmxhZ3MgfD0gRVhGTEFHX0lOVkFMSUQ7CiAJCX0KIAkJaWYgKHBjaS0+cGNQYXRoTGVuZ3RoQ29uc3RyYWludCkgewpAQCAtNjcwLDcgKzY3MCw3IEBACiAJCXJldHVybiAwOwogCiAJLyogRXh0ZW5kZWQgS2V5IFVzYWdlIE1VU1QgYmUgY3JpdGljYWwgKi8KLQlpX2V4dCA9IFg1MDlfZ2V0X2V4dF9ieV9OSUQoKFg1MDkgKikgeCwgTklEX2V4dF9rZXlfdXNhZ2UsIDApOworCWlfZXh0ID0gWDUwOV9nZXRfZXh0X2J5X05JRCgoWDUwOSAqKSB4LCBOSURfZXh0X2tleV91c2FnZSwgLTEpOwogCWlmIChpX2V4dCA+PSAwKQogCQl7CiAJCVg1MDlfRVhURU5TSU9OICpleHQgPSBYNTA5X2dldF9leHQoKFg1MDkgKikgeCwgaV9leHQpOwpkaWZmIC0tZ2l0IGEvY3J5cHRvL3g4NmNwdWlkLlMgYi9jcnlwdG8veDg2Y3B1aWQuUwppbmRleCA3M2I1ZDk4Li4xMGJlMjIxIDEwMDY0NAotLS0gYS9jcnlwdG8veDg2Y3B1aWQuUworKysgYi9jcnlwdG8veDg2Y3B1aWQuUwpAQCAtMjI2LDYgKzIyNiwxOCBAQAogCW1vdmwJKCVlY3gpLCVlY3gKIAlidGwJJDEsKCVlY3gpCiAJam5jCS5MMDE1bm9feDg3CisJYW5kbAkkODM4ODYwODAsJWVjeAorCWNtcGwJJDgzODg2MDgwLCVlY3gKKwlqbmUJLkwwMTZub19zc2UyCisJcHhvcgkleG1tMCwleG1tMAorCXB4b3IJJXhtbTEsJXhtbTEKKwlweG9yCSV4bW0yLCV4bW0yCisJcHhvcgkleG1tMywleG1tMworCXB4b3IJJXhtbTQsJXhtbTQKKwlweG9yCSV4bW01LCV4bW01CisJcHhvcgkleG1tNiwleG1tNgorCXB4b3IJJXhtbTcsJXhtbTcKKy5MMDE2bm9fc3NlMjoKIC5sb25nCTQwMDcyNTk4NjUsNDAwNzI1OTg2NSw0MDA3MjU5ODY1LDQwMDcyNTk4NjUsMjQzMDg1MTk5NQogLkwwMTVub194ODc6CiAJbGVhbAk0KCVlc3ApLCVlYXgKQEAgLTI0MSwxMSArMjUzLDExIEBACiAJcHVzaGwJJWVieAogCW5vcAogCW1vdmwJKCVlZHgpLCVlYXgKLS5MMDE2c3BpbjoKKy5MMDE3c3BpbjoKIAlsZWFsCSglZWF4LCVlY3gsMSksJWVieAogCW5vcAogLmxvbmcJNDQ3ODExNTY4Ci0Jam5lCS5MMDE2c3BpbgorCWpuZQkuTDAxN3NwaW4KIAltb3ZsCSVlYngsJWVheAogCXBvcGwJJWVieAogCXJldApAQCAtMjg2LDMyICsyOTgsMzIgQEAKIAltb3ZsCTgoJWVzcCksJWVjeAogCXhvcmwJJWVheCwlZWF4CiAJY21wbAkkNywlZWN4Ci0JamFlCS5MMDE3bG90CisJamFlCS5MMDE4bG90CiAJY21wbAkkMCwlZWN4Ci0JamUJLkwwMThyZXQKLS5MMDE5bGl0dGxlOgorCWplCS5MMDE5cmV0CisuTDAyMGxpdHRsZToKIAltb3ZiCSVhbCwoJWVkeCkKIAlzdWJsCSQxLCVlY3gKIAlsZWFsCTEoJWVkeCksJWVkeAotCWpuegkuTDAxOWxpdHRsZQotLkwwMThyZXQ6CisJam56CS5MMDIwbGl0dGxlCisuTDAxOXJldDoKIAlyZXQKIC5hbGlnbgkxNgotLkwwMTdsb3Q6CisuTDAxOGxvdDoKIAl0ZXN0bAkkMywlZWR4Ci0JanoJLkwwMjBhbGlnbmVkCisJanoJLkwwMjFhbGlnbmVkCiAJbW92YgklYWwsKCVlZHgpCiAJbGVhbAktMSglZWN4KSwlZWN4CiAJbGVhbAkxKCVlZHgpLCVlZHgKLQlqbXAJLkwwMTdsb3QKLS5MMDIwYWxpZ25lZDoKKwlqbXAJLkwwMThsb3QKKy5MMDIxYWxpZ25lZDoKIAltb3ZsCSVlYXgsKCVlZHgpCiAJbGVhbAktNCglZWN4KSwlZWN4CiAJdGVzdGwJJC00LCVlY3gKIAlsZWFsCTQoJWVkeCksJWVkeAotCWpuegkuTDAyMGFsaWduZWQKKwlqbnoJLkwwMjFhbGlnbmVkCiAJY21wbAkkMCwlZWN4Ci0Jam5lCS5MMDE5bGl0dGxlCisJam5lCS5MMDIwbGl0dGxlCiAJcmV0CiAuc2l6ZQlPUEVOU1NMX2NsZWFuc2UsLi0uTF9PUEVOU1NMX2NsZWFuc2VfYmVnaW4KIC5nbG9ibAlPUEVOU1NMX2lhMzJfcmRyYW5kCkBAIC0zMjAsMTUgKzMzMiwxNyBAQAogT1BFTlNTTF9pYTMyX3JkcmFuZDoKIC5MX09QRU5TU0xfaWEzMl9yZHJhbmRfYmVnaW46CiAJbW92bAkkOCwlZWN4Ci0uTDAyMWxvb3A6CisuTDAyMmxvb3A6CiAuYnl0ZQkxNSwxOTksMjQwCi0JamMJLkwwMjJicmVhawotCWxvb3AJLkwwMjFsb29wCi0uTDAyMmJyZWFrOgorCWpjCS5MMDIzYnJlYWsKKwlsb29wCS5MMDIybG9vcAorLkwwMjNicmVhazoKIAljbXBsCSQwLCVlYXgKIAljbW92ZWwJJWVjeCwlZWF4CiAJcmV0CiAuc2l6ZQlPUEVOU1NMX2lhMzJfcmRyYW5kLC4tLkxfT1BFTlNTTF9pYTMyX3JkcmFuZF9iZWdpbgorLmhpZGRlbglPUEVOU1NMX2NwdWlkX3NldHVwCisuaGlkZGVuCU9QRU5TU0xfaWEzMmNhcF9QCiAuY29tbQlPUEVOU1NMX2lhMzJjYXBfUCw4LDQKIC5zZWN0aW9uCS5pbml0CiAJY2FsbAlPUEVOU1NMX2NwdWlkX3NldHVwCmRpZmYgLS1naXQgYS9jcnlwdG8veDg2Y3B1aWQucGwgYi9jcnlwdG8veDg2Y3B1aWQucGwKaW5kZXggYjI3MGI0NC4uMDIxMmE1YiAxMDA2NDQKLS0tIGEvY3J5cHRvL3g4NmNwdWlkLnBsCisrKyBiL2NyeXB0by94ODZjcHVpZC5wbApAQCAtMzU1LDQgKzM1NSw3IEBACiAKICZpbml0c2VnKCJPUEVOU1NMX2NwdWlkX3NldHVwIik7CiAKKyZoaWRkZW4oIk9QRU5TU0xfY3B1aWRfc2V0dXAiKTsKKyZoaWRkZW4oIk9QRU5TU0xfaWEzMmNhcF9QIik7CisKICZhc21fZmluaXNoKCk7CmRpZmYgLS1naXQgYS9lX29zLmggYi9lX29zLmgKaW5kZXggNzljMTM5Mi4uNmEwYWFkMSAxMDA2NDQKLS0tIGEvZV9vcy5oCisrKyBiL2Vfb3MuaApAQCAtMzY4LDYgKzM2OCwxMyBAQAogIyAgICBkZWZpbmUgREVGQVVMVF9IT01FICAiQzoiCiAjICBlbmRpZgogCisvKiBBdm9pZCBXaW5kb3dzIDggU0RLIEdldFZlcnNpb24gZGVwcmVjYXRlZCBwcm9ibGVtcyAqLworI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVSPj0xODAwCisjICBkZWZpbmUgY2hlY2tfd2lubnQoKSAoMSkKKyNlbHNlCisjICBkZWZpbmUgY2hlY2tfd2lubnQoKSAoR2V0VmVyc2lvbigpIDwgMHg4MDAwMDAwMCkKKyNlbmRpZiAKKwogI2Vsc2UgLyogVGhlIG5vbi1taWNyb3NvZnQgd29ybGQgKi8KIAogIyAgaWZkZWYgT1BFTlNTTF9TWVNfVk1TCmRpZmYgLS1naXQgYS9pbXBvcnRfb3BlbnNzbC5zaCBiL2ltcG9ydF9vcGVuc3NsLnNoCmluZGV4IDcyN2RkMDUuLmYxNjU5NmIgMTAwNzU1Ci0tLSBhL2ltcG9ydF9vcGVuc3NsLnNoCisrKyBiL2ltcG9ydF9vcGVuc3NsLnNoCkBAIC0zMyw2ICszMyw3IEBACiAjIEVuc3VyZSBjb25zaXN0ZW50IHNvcnRpbmcgb3JkZXIgLyB0b29sIG91dHB1dC4KIGV4cG9ydCBMQU5HPUMKIGV4cG9ydCBMQ19BTEw9QworUEVSTF9FWEU9InBlcmwgLUMwIgogCiBmdW5jdGlvbiBkaWUoKSB7CiAgIGRlY2xhcmUgLXIgbWVzc2FnZT0kMQpAQCAtMTI3LDcgKzEyOCwxNiBAQAogZnVuY3Rpb24gZ2VuX2FzbV9hcm0gKCkgewogICBsb2NhbCBPVVQKICAgT1VUPSQoZGVmYXVsdF9hc21fZmlsZSAiJEAiKQotICBwZXJsICIkMSIgPiAiJE9VVCIKKyAgJFBFUkxfRVhFICIkMSIgdm9pZCAiJE9VVCIgPiAiJE9VVCIKK30KKworIyBHZW5lcmF0ZSBhbiBBUk12OCA2NC1iaXQgYXNzZW1ibHkgZmlsZS4KKyMgJDE6IGdlbmVyYXRvciAocGVybCBzY3JpcHQpCisjICQyOiBbb3B0aW9uYWxdIG91dHB1dCBmaWxlIG5hbWUKK2Z1bmN0aW9uIGdlbl9hc21fYXJtNjQgKCkgeworICBsb2NhbCBPVVQKKyAgT1VUPSQoZGVmYXVsdF9hc21fZmlsZSAiJEAiKQorICAkUEVSTF9FWEUgIiQxIiBsaW51eDY0ICIkT1VUIiA+ICIkT1VUIgogfQogCiBmdW5jdGlvbiBnZW5fYXNtX21pcHMgKCkgewpAQCAtMTM2LDE5ICsxNDYsMTkgQEAKICAgIyBUaGUgcGVybCBzY3JpcHRzIGV4cGVjdCB0byBydW4gdGhlIHRhcmdldCBjb21waWxlciBhcyAkQ0MgdG8gZGV0ZXJtaW5lCiAgICMgdGhlIGVuZGlhbmVzcyBvZiB0aGUgdGFyZ2V0LiBTZXR0aW5nIENDIHRvIHRydWUgaXMgYSBoYWNrIHRoYXQgZm9yY2VzIHRoZSBzY3JpcHRzCiAgICMgdG8gZ2VuZXJhdGUgbGl0dGxlIGVuZGlhbiBvdXRwdXQKLSAgQ0M9dHJ1ZSBwZXJsICIkMSIgbzMyID4gIiRPVVQiCisgIENDPXRydWUgJFBFUkxfRVhFICIkMSIgbzMyID4gIiRPVVQiCiB9CiAKIGZ1bmN0aW9uIGdlbl9hc21feDg2ICgpIHsKICAgbG9jYWwgT1VUCiAgIE9VVD0kKGRlZmF1bHRfYXNtX2ZpbGUgIiRAIikKLSAgcGVybCAiJDEiIGVsZiAtZlBJQyA+ICIkT1VUIgorICAkUEVSTF9FWEUgIiQxIiBlbGYgLWZQSUMgJChwcmludF92YWx1ZXNfd2l0aF9wcmVmaXggLUQgJE9QRU5TU0xfQ1JZUFRPX0RFRklORVNfeDg2KSA+ICIkT1VUIgogfQogCiBmdW5jdGlvbiBnZW5fYXNtX3g4Nl82NCAoKSB7CiAgIGxvY2FsIE9VVAogICBPVVQ9JChkZWZhdWx0X2FzbV9maWxlICIkQCIpCi0gIHBlcmwgIiQxIiBlbGYgIiRPVVQiID4gIiRPVVQiCisgICRQRVJMX0VYRSAiJDEiIGVsZiAiJE9VVCIgPiAiJE9VVCIKIH0KIAogCkBAIC0xNzYsMzggKzE4NiwxMTAgQEAKICAgZWNobyAiIyIKIH0KIAotIyBSdW4gQ29uZmlndXJlIGFuZCBnZW5lcmF0ZSBtYWtlZmlsZQotIyAkMTogbWFrZWZpbGUKLSMgJDI6IDMyIGZvciAzMi1iaXQgYXJjaCwgNjQgZm9yIDY0LWJpdCBhcmNoCi1mdW5jdGlvbiBnZW5lcmF0ZV9idWlsZF9jb25maWdfbWsoKSB7Ci0gIGNobW9kICt4IC4vQ29uZmlndXJlCi0gIGlmIFsgJDIgLWVxICIzMiIgXSA7IHRoZW4KLSAgICAuL0NvbmZpZ3VyZSAkQ09ORklHVVJFX0FSR1MgJENPTkZJR1VSRV9BUkdTXzMyCi0gIGVsaWYgWyAkMiAtZXEgIjY0IiBdIDsgdGhlbgotICAgIC4vQ29uZmlndXJlICRDT05GSUdVUkVfQVJHUyAkQ09ORklHVVJFX0FSR1NfNjQKLSAgZWxzZQotICAgIGRpZSAiVW5zdXBwb3J0ZWQgJDItYml0IGFyY2giCitmdW5jdGlvbiBydW5fdmVyYm9zZSgpIHsKKyAgZWNobyBSdW5uaW5nOiAkQAorICAkQAorfQorCitmdW5jdGlvbiBzY2FuX29wZW5zc2xjb25mX2Zvcl9mbGFncygpIHsKKyAgZm9yIGZsYWcgaW4gIiRAIjsgZG8KKyAgICBhd2sgIi9eI2RlZmluZSAke2ZsYWd9JC8geyBwcmludCBcJDIgfSIgY3J5cHRvL29wZW5zc2xjb25mLmgKKyAgZG9uZQorfQorCitDUllQVE9fQ09ORl9GTEFHUz0oCitPUEVOU1NMX0NQVUlEX09CSgorREVTX0xPTkcKK0RFU19QVFIKK0RFU19SSVNDMQorREVTX1JJU0MyCitERVNfVU5ST0xMCitSQzRfSU5UCitSQzRfQ0hVTksKK1JDNF9JTkRFWAorKQorCitmdW5jdGlvbiBjaGVja19hc21fZmxhZ3MoKSB7CisgIGxvY2FsIGFyY2g9IiQxIgorICBsb2NhbCB0YXJnZXQ9IiQyIgorICBsb2NhbCB1bnNvcnRlZF9mbGFncworICBsb2NhbCBleHBlY3RlZF9mbGFncworICBsb2NhbCBhY3R1YWxfZmxhZ3MKKyAgbG9jYWwgZGVmaW5lcz0iT1BFTlNTTF9DUllQVE9fREVGSU5FU18kYXJjaCIKKworICBQRVJMPS91c3IvYmluL3BlcmwgcnVuX3ZlcmJvc2UgLi9Db25maWd1cmUgJENPTkZJR1VSRV9BUkdTICR0YXJnZXQKKworICB1bnNvcnRlZF9mbGFncz0iJChhd2sgJy9eQ0ZMQUc9LyB7IHN1YigvXkNGTEFHPSAuKi1XYWxsIC8sICIiKTsgZ3N1YigvLUQvLCAiIik7IHByaW50OyB9JyBNYWtlZmlsZSkiCisgIHVuc29ydGVkX2ZsYWdzPSIkdW5zb3J0ZWRfZmxhZ3MgJChzY2FuX29wZW5zc2xjb25mX2Zvcl9mbGFncyAiJHtDUllQVE9fQ09ORl9GTEFHU1tAXX0iKSIKKworICBleHBlY3RlZF9mbGFncz0iJChlY2hvICR1bnNvcnRlZF9mbGFncyB8IHRyICcgJyAnXG4nIHwgc29ydCB8IHRyICdcbicgJyAnKSIKKyAgYWN0dWFsX2ZsYWdzPSIkKGVjaG8gJHshZGVmaW5lc30gfCB0ciAnICcgJ1xuJyB8IHNvcnQgfCB0ciAnXG4nICcgJykiCisKKyAgaWYgW1sgJGFjdHVhbF9mbGFncyAhPSAkZXhwZWN0ZWRfZmxhZ3MgXV07IHRoZW4KKyAgICBlY2hvICR7ZGVmaW5lc30gaXMgd3JvbmchCisgICAgZWNobyAiICAgICRhY3R1YWxfZmxhZ3MiCisgICAgZWNobyBQbGVhc2UgdXBkYXRlIHRvOgorICAgIGVjaG8gIiAgICAkZXhwZWN0ZWRfZmxhZ3MiCisgICAgZXhpdCAxCiAgIGZpCit9CisKKyMgUnVuIENvbmZpZ3VyZSBhbmQgZ2VuZXJhdGUgaGVhZGVycworIyAkMTogMzIgZm9yIDMyLWJpdCBhcmNoLCA2NCBmb3IgNjQtYml0IGFyY2gsIHRydXN0eSBmb3IgVHJ1c3R5CisjICQyOiAxIGlmIGJ1aWxkaW5nIGZvciBzdGF0aWMgdmVyc2lvbgorIyBPdXQ6IHJldHVybnMgdGhlIGNmbGFncyBhbmQgZGVwZmxhZ3MgaW4gdmFyaWFibGUgJGZsYWdzCitmdW5jdGlvbiBnZW5lcmF0ZV9idWlsZF9jb25maWdfaGVhZGVycygpIHsKKyAgY2htb2QgK3ggLi9Db25maWd1cmUKKyAgbG9jYWwgY29uZmlndXJlX2FyZ3NfYml0cz1DT05GSUdVUkVfQVJHU18kMQorICBsb2NhbCBjb25maWd1cmVfYXJnc19zdGF0PScnCisgIGxvY2FsIG91dG5hbWU9JDEKKyAgaWYgW1sgJDIgPT0gMSBdXSA7IHRoZW4KKyAgICAgIGNvbmZpZ3VyZV9hcmdzX3N0YXQ9Q09ORklHVVJFX0FSR1NfU1RBVElDCisgICAgICBvdXRuYW1lPSJzdGF0aWMtJDEiCisgIGZpCisKKyAgaWYgW1sgJDEgPT0gdHJ1c3R5IF1dIDsgdGhlbgorICAgIFBFUkw9L3Vzci9iaW4vcGVybCBydW5fdmVyYm9zZSAuL0NvbmZpZ3VyZSAkQ09ORklHVVJFX0FSR1NfVFJVU1RZCisgIGVsc2UKKyAgICBQRVJMPS91c3IvYmluL3BlcmwgcnVuX3ZlcmJvc2UgLi9Db25maWd1cmUgJENPTkZJR1VSRV9BUkdTICR7IWNvbmZpZ3VyZV9hcmdzX2JpdHN9ICR7IWNvbmZpZ3VyZV9hcmdzX3N0YXR9CisgIGZpCisKICAgcm0gLWYgYXBwcy9DQS5wbC5iYWsgY3J5cHRvL29wZW5zc2xjb25mLmguYmFrCi0gIG12IC1mIGNyeXB0by9vcGVuc3NsY29uZi5oIGNyeXB0by9vcGVuc3NsY29uZi0kMi5oCi0gIGNwIC1mIGNyeXB0by9vcGVuc3NsY29uZi0kMi5oIGluY2x1ZGUvb3BlbnNzbC9vcGVuc3NsY29uZi0kMi5oCisgIG12IC1mIGNyeXB0by9vcGVuc3NsY29uZi5oIGNyeXB0by9vcGVuc3NsY29uZi0kb3V0bmFtZS5oCisgIGNwIC1mIGNyeXB0by9vcGVuc3NsY29uZi0kb3V0bmFtZS5oIGluY2x1ZGUvb3BlbnNzbC9vcGVuc3NsY29uZi0kb3V0bmFtZS5oCiAKLSAgZGVjbGFyZSAtciB0bXBmaWxlPSQobWt0ZW1wKQotICAoZ3JlcCAtZSAtRCBNYWtlZmlsZSB8IGdyZXAgLXYgQ09ORklHVVJFX0FSR1M9IHwgZ3JlcCAtdiBPUFRJT05TPSB8IGdyZXAgLXYgLWUgLURPUEVOU1NMX05PX0RFUFJFQ0FURUQpID4gJHRtcGZpbGUKLQorICBsb2NhbCB0bXBmaWxlPSQobWt0ZW1wIHRtcC5YWFhYWFhYWFhYKQorICAoZ3JlcCAtZSAtRCBNYWtlZmlsZSB8IGdyZXAgLXYgQ09ORklHVVJFX0FSR1M9IHwgZ3JlcCAtdiBPUFRJT05TPSB8IFwKKyAgICAgIGdyZXAgLXYgLWUgLURPUEVOU1NMX05PX0RFUFJFQ0FURUQpID4gJHRtcGZpbGUKICAgZGVjbGFyZSAtciBjZmxhZ3M9JChmaWx0ZXJfYnlfZWdyZXAgIl4tRCIgJChncmVwIC1lICJeQ0ZMQUc9IiAkdG1wZmlsZSkpCiAgIGRlY2xhcmUgLXIgZGVwZmxhZ3M9JChmaWx0ZXJfYnlfZWdyZXAgIl4tRCIgJChncmVwIC1lICJeREVQRkxBRz0iICR0bXBmaWxlKSkKICAgcm0gLWYgJHRtcGZpbGUKIAotICBlY2hvICJHZW5lcmF0aW5nICQoYmFzZW5hbWUgJDEpIgotICAoCi0gICAgcHJpbnRfYXV0b2dlbmVyYXRlZF9oZWFkZXIKKyAgZmxhZ3M9IiRjZmxhZ3MgJGRlcGZsYWdzIgorfQogCi0gICAgZWNobyAib3BlbnNzbF9jZmxhZ3MgOj0gXFwiCi0gICAgZm9yIGNmbGFnIGluICRjZmxhZ3MgJGRlcGZsYWdzOyBkbwotICAgICAgZWNobyAiICAkY2ZsYWcgXFwiCi0gICAgZG9uZQotICApID4gJDEKKyMgUnVuIENvbmZpZ3VyZSBhbmQgZ2VuZXJhdGUgbWFrZWZpbGVzCitmdW5jdGlvbiBnZW5lcmF0ZV9idWlsZF9jb25maWdfbWsoKSB7CisgIGNobW9kICt4IC4vQ29uZmlndXJlCisgIGZvciBiaXRzIGluIDMyIDY0IHRydXN0eTsgZG8KKyAgICAjIEhlYWRlciBmbGFncyBhcmUgb3V0cHV0IGluICRmbGFncywgZmlyc3Qgc3RhdGljLCB0aGVuIGR5bmFtaWMKKyAgICBnZW5lcmF0ZV9idWlsZF9jb25maWdfaGVhZGVycyAkYml0cyAxCisgICAgbG9jYWwgZmxhZ3Nfc3RhdGljPSRmbGFncworICAgIGdlbmVyYXRlX2J1aWxkX2NvbmZpZ19oZWFkZXJzICRiaXRzCisKKyAgICBlY2hvICJHZW5lcmF0aW5nIGJ1aWxkLWNvbmZpZy0kYml0cy5tayIKKyAgICAoCisgICAgICBwcmludF9hdXRvZ2VuZXJhdGVkX2hlYWRlcgorCisgICAgICBlY2hvICJvcGVuc3NsX2NmbGFnc18kYml0cyA6PSBcXCIKKyAgICAgIGZvciBmbGFnIGluICRmbGFncyA7IGRvIGVjaG8gIiAgJGZsYWcgXFwiIDsgZG9uZQorICAgICAgZWNobyAiIgorCisgICAgICBlY2hvICJvcGVuc3NsX2NmbGFnc19zdGF0aWNfJGJpdHMgOj0gXFwiCisgICAgICBmb3IgZmxhZyBpbiAkZmxhZ3Nfc3RhdGljOyBkbyBlY2hvICIgICRmbGFnIFxcIiA7IGRvbmUKKyAgICAgIGVjaG8gIiIKKyAgICApID4gLi4vYnVpbGQtY29uZmlnLSRiaXRzLm1rCisgIGRvbmUKIH0KIAogIyBHZW5lcmF0ZSBjcnlwdG8vb3BlbnNzbGNvbmYuaCBmaWxlIGluY2x1ZGluZyBhcmNoLXNwZWNpZmljIGZpbGVzCkBAIC0yMTUsMTIgKzI5NywyOCBAQAogICBlY2hvICJHZW5lcmF0aW5nIG9wZW5zc2xjb25mLmgiCiAgICgKICAgZWNobyAiLy8gQXV0by1nZW5lcmF0ZWQgLSBETyBOT1QgRURJVCEiCisgIGVjaG8gIiNpZm5kZWYgT1BFTlNTTF9TWVNfVFJVU1RZIgogICBlY2hvICIjaWYgZGVmaW5lZChfX0xQNjRfXykiCiAgIGVjaG8gIiNpbmNsdWRlIFwib3BlbnNzbGNvbmYtNjQuaFwiIgogICBlY2hvICIjZWxzZSIKICAgZWNobyAiI2luY2x1ZGUgXCJvcGVuc3NsY29uZi0zMi5oXCIiCiAgIGVjaG8gIiNlbmRpZiIKKyAgZWNobyAiI2Vsc2UiCisgIGVjaG8gIiNpbmNsdWRlIFwib3BlbnNzbGNvbmYtdHJ1c3R5LmhcIiIKKyAgZWNobyAiI2VuZGlmIgogICApID4gY3J5cHRvL29wZW5zc2xjb25mLmgKKyAgIyBHZW5lcmF0ZSBhIGNvbXBhdGlibGUgdmVyc2lvbiBmb3IgdGhlIHN0YXRpYyBsaWJyYXJ5IGJ1aWxkcworICBlY2hvICJHZW5lcmF0aW5nIG9wZW5zc2xjb25mLXN0YXRpYy5oIgorICAoCisgIGVjaG8gIi8vIEF1dG8tZ2VuZXJhdGVkIC0gRE8gTk9UIEVESVQhIgorICBlY2hvICIjaWYgZGVmaW5lZChfX0xQNjRfXykiCisgIGVjaG8gIiNpbmNsdWRlIFwib3BlbnNzbGNvbmYtc3RhdGljLTY0LmhcIiIKKyAgZWNobyAiI2Vsc2UiCisgIGVjaG8gIiNpbmNsdWRlIFwib3BlbnNzbGNvbmYtc3RhdGljLTMyLmhcIiIKKyAgZWNobyAiI2VuZGlmIgorICApID4gY3J5cHRvL29wZW5zc2xjb25mLXN0YXRpYy5oCisgICMgbW92ZSBpdCB0byBvdXRwdXQgaW5jbHVkZSBmaWxlcyBhcyB3ZWxsCisgIGNwIC1mIGNyeXB0by9vcGVuc3NsY29uZi1zdGF0aWMuaCBpbmNsdWRlL29wZW5zc2wvb3BlbnNzbGNvbmYtc3RhdGljLmgKIH0KIAogIyBSZXR1cm4gdGhlIHZhbHVlIG9mIGEgY29tcHV0ZWQgdmFyaWFibGUgbmFtZS4KQEAgLTI0MywyNiArMzQxLDQ4IEBACiAgIHVuaXFfc29ydCAkKHZhcl92YWx1ZSAkMSkKIH0KIAorIyBQcmludCB0aGUgdmFsdWVzIGluIGEgbGlzdCB3aXRoIGEgcHJlZml4CisjICQxOiBwcmVmaXggdG8gdXNlCisjICQyKzogdmFsdWVzIG9mIGxpc3QKK3ByaW50X3ZhbHVlc193aXRoX3ByZWZpeCgpIHsKKyAgZGVjbGFyZSAtciBwcmVmaXg9JDEKKyAgc2hpZnQKKyAgZm9yIHNyYzsgZG8KKyAgICBlY2hvIC1uICIgJHByZWZpeCRzcmMgIgorICBkb25lCit9CisKICMgUHJpbnQgdGhlIGRlZmluaXRpb24gb2YgYSBnaXZlbiB2YXJpYWJsZSBpbiBhIEdOVSBNYWtlIGJ1aWxkIGZpbGUuCiAjICQxOiBWYXJpYWJsZSBuYW1lIChlLmcuIGNvbW1vbl9zcmNfZmlsZXMpCi0jICQyKzogVmFyaWFibGUgdmFsdWUgKGUuZy4gbGlzdCBvZiBzb3VyY2VzKQotcHJpbnRfdmFyZGVmX2luX21rKCkgeworIyAkMjogcHJlZml4IGZvciBlYWNoIHZhcmlhYmxlIGNvbnRlbnRzCisjICQzKzogVmFyaWFibGUgdmFsdWUgKGUuZy4gbGlzdCBvZiBzb3VyY2VzKQorcHJpbnRfdmFyZGVmX3dpdGhfcHJlZml4X2luX21rKCkgewogICBkZWNsYXJlIC1yIHZhcm5hbWU9JDEKKyAgZGVjbGFyZSAtciBwcmVmaXg9JDIKKyAgc2hpZnQKICAgc2hpZnQKICAgaWYgWyAteiAiJDEiIF07IHRoZW4KICAgICBlY2hvICIkdmFybmFtZSA6PSIKICAgZWxzZQogICAgIGVjaG8gIiR2YXJuYW1lIDo9IFxcIgogICAgIGZvciBzcmM7IGRvCi0gICAgICBlY2hvICIgICRzcmMgXFwiCisgICAgICBlY2hvICIgICRwcmVmaXgkc3JjIFxcIgogICAgIGRvbmUKICAgZmkKICAgZWNobyAiIgogfQorIyBQcmludCB0aGUgZGVmaW5pdGlvbiBvZiBhIGdpdmVuIHZhcmlhYmxlIGluIGEgR05VIE1ha2UgYnVpbGQgZmlsZS4KKyMgJDE6IFZhcmlhYmxlIG5hbWUgKGUuZy4gY29tbW9uX3NyY19maWxlcykKKyMgJDIrOiBWYXJpYWJsZSB2YWx1ZSAoZS5nLiBsaXN0IG9mIHNvdXJjZXMpCitwcmludF92YXJkZWZfaW5fbWsoKSB7CisgIGRlY2xhcmUgLXIgdmFybmFtZT0kMQorICBzaGlmdAorICBwcmludF92YXJkZWZfd2l0aF9wcmVmaXhfaW5fbWsgJHZhcm5hbWUgIiIgJEAKK30KIAogIyBTYW1lIGFzIHByaW50X3ZhcmRlZl9pbl9taywgYnV0IHByaW50IGEgQ0ZMQUdTIGRlZmluaXRpb24gZnJvbQogIyBhIGxpc3Qgb2YgY29tcGlsZXIgZGVmaW5lcy4KLSMgJDE6IFZhcmlhYmxlIG5hbWUgKGUuZy4gY29tbW9uX2NfZmxhZ3MpCisjICQxOiBWYXJpYWJsZSBuYW1lIChlLmcuIGNvbW1vbl9jZmxhZ3MpCiAjICQyOiBMaXN0IG9mIGRlZmluZXMgKGUuZy4gT1BFTlNTTF9OT19DQU1FTExJQSAuLi4pCiBwcmludF9kZWZpbmVzX2luX21rKCkgewogICBkZWNsYXJlIC1yIHZhcm5hbWU9JDEKQEAgLTI4NSw2ICs0MDUsNyBAQAogIwogIyAkMTogVGFyZ2V0IGZpbGUgbmFtZS4gIChlLmcuIENyeXB0by1jb25maWcubWspCiAjICQyOiBWYXJpYWJsZSBwcmVmaXguICAgKGUuZy4gQ1JZUFRPKQorIyAkMzogImhvc3QiIG9yICJ0YXJnZXQiCiBmdW5jdGlvbiBnZW5lcmF0ZV9jb25maWdfbWsoKSB7CiAgIGRlY2xhcmUgLXIgb3V0cHV0PSIkMSIKICAgZGVjbGFyZSAtciBwcmVmaXg9IiQyIgpAQCAtMjk0LDQyICs0MTUsMzIgQEAKICAgKAogICAgIHByaW50X2F1dG9nZW5lcmF0ZWRfaGVhZGVyCiAgICAgZWNobyBcCi0iIyBCZWZvcmUgaW5jbHVkaW5nIHRoaXMgZmlsZSwgdGhlIGxvY2FsIEFuZHJvaWQubWsgbXVzdCBkZWZpbmUgdGhlIGZvbGxvd2luZwotIyB2YXJpYWJsZXM6CisiIyBUaGlzIHNjcmlwdCB3aWxsIGFwcGVuZCB0byB0aGUgZm9sbG93aW5nIHZhcmlhYmxlczoKICMKLSMgICAgbG9jYWxfY19mbGFncwotIyAgICBsb2NhbF9jX2luY2x1ZGVzCi0jICAgIGxvY2FsX2FkZGl0aW9uYWxfZGVwZW5kZW5jaWVzCi0jCi0jIFRoaXMgc2NyaXB0IHdpbGwgZGVmaW5lIHRoZSBmb2xsb3dpbmcgdmFyaWFibGVzOgotIwotIyAgICB0YXJnZXRfY19mbGFncwotIyAgICB0YXJnZXRfY19pbmNsdWRlcwotIyAgICB0YXJnZXRfc3JjX2ZpbGVzCi0jCi0jICAgIGhvc3RfY19mbGFncwotIyAgICBob3N0X2NfaW5jbHVkZXMKLSMgICAgaG9zdF9zcmNfZmlsZXMKLSMKKyMgICAgTE9DQUxfQ0ZMQUdTCisjICAgIExPQ0FMX0NfSU5DTFVERVMKKyMgICAgTE9DQUxfU1JDX0ZJTEVTX1wkKFRBUkdFVF9BUkNIKQorIyAgICBMT0NBTF9TUkNfRklMRVNfXCQoVEFSR0VUXzJORF9BUkNIKQorIyAgICBMT0NBTF9DRkxBR1NfXCQoVEFSR0VUX0FSQ0gpCisjICAgIExPQ0FMX0NGTEFHU19cJChUQVJHRVRfMk5EX0FSQ0gpCisjICAgIExPQ0FMX0FERElUSU9OQUxfREVQRU5ERU5DSUVTCiAKLSMgRW5zdXJlIHRoZXNlIGFyZSBlbXB0eS4KLXVua25vd25fYXJjaF9jX2ZsYWdzIDo9Ci11bmtub3duX2FyY2hfc3JjX2ZpbGVzIDo9Ci11bmtub3duX2FyY2hfZXhjbHVkZV9maWxlcyA6PQogCitMT0NBTF9BRERJVElPTkFMX0RFUEVOREVOQ0lFUyArPSBcJChMT0NBTF9QQVRIKS8kKGJhc2VuYW1lICRvdXRwdXQpCiAiCisKICAgICBjb21tb25fZGVmaW5lcz0kKHZhcl9zb3J0ZWRfdmFsdWUgT1BFTlNTTF8ke3ByZWZpeH1fREVGSU5FUykKLSAgICBwcmludF9kZWZpbmVzX2luX21rIGNvbW1vbl9jX2ZsYWdzICRjb21tb25fZGVmaW5lcworICAgIHByaW50X2RlZmluZXNfaW5fbWsgY29tbW9uX2NmbGFncyAkY29tbW9uX2RlZmluZXMKIAogICAgIGNvbW1vbl9zb3VyY2VzPSQodmFyX3NvcnRlZF92YWx1ZSBPUEVOU1NMXyR7cHJlZml4fV9TT1VSQ0VTKQogICAgIHByaW50X3ZhcmRlZl9pbl9tayBjb21tb25fc3JjX2ZpbGVzICRjb21tb25fc291cmNlcwogCiAgICAgY29tbW9uX2luY2x1ZGVzPSQodmFyX3NvcnRlZF92YWx1ZSBPUEVOU1NMXyR7cHJlZml4fV9JTkNMVURFUykKLSAgICBwcmludF92YXJkZWZfaW5fbWsgY29tbW9uX2NfaW5jbHVkZXMgJGNvbW1vbl9pbmNsdWRlcworICAgIHByaW50X3ZhcmRlZl93aXRoX3ByZWZpeF9pbl9tayBjb21tb25fY19pbmNsdWRlcyBleHRlcm5hbC9vcGVuc3NsLyAkY29tbW9uX2luY2x1ZGVzCiAKICAgICBmb3IgYXJjaCBpbiAkYWxsX2FyY2hzOyBkbwogICAgICAgYXJjaF9kZWZpbmVzPSQodmFyX3NvcnRlZF92YWx1ZSBPUEVOU1NMXyR7cHJlZml4fV9ERUZJTkVTXyR7YXJjaH0pCi0gICAgICBwcmludF9kZWZpbmVzX2luX21rICR7YXJjaH1fY19mbGFncyAkYXJjaF9kZWZpbmVzCisgICAgICBwcmludF9kZWZpbmVzX2luX21rICR7YXJjaH1fY2ZsYWdzICRhcmNoX2RlZmluZXMKIAogICAgICAgYXJjaF9zb3VyY2VzPSQodmFyX3NvcnRlZF92YWx1ZSBPUEVOU1NMXyR7cHJlZml4fV9TT1VSQ0VTXyR7YXJjaH0pCiAgICAgICBwcmludF92YXJkZWZfaW5fbWsgJHthcmNofV9zcmNfZmlsZXMgJGFyY2hfc291cmNlcwpAQCAtMzM5LDQ0ICs0NTAsNDggQEAKIAogICAgIGRvbmUKIAotICAgIGVjaG8gIlwKLXRhcmdldF9hcmNoIDo9IFwkKFRBUkdFVF9BUkNIKQotaWZlcSAoXCQodGFyZ2V0X2FyY2gpLVwkKFRBUkdFVF9IQVNfQklHRU5ESUFOKSxtaXBzLXRydWUpCi10YXJnZXRfYXJjaCA6PSB1bmtub3duX2FyY2gKLWVuZGlmCisgICAgaWYgWyAkMyA9PSAidGFyZ2V0IiBdOyB0aGVuCisgICAgICBlY2hvICIKK0xPQ0FMX0NGTEFHUyArPSBcJChjb21tb25fY2ZsYWdzKQorTE9DQUxfQ19JTkNMVURFUyArPSBcJChjb21tb25fY19pbmNsdWRlcykiCisgICAgICBmb3IgYXJjaCBpbiAkYWxsX2FyY2hzOyBkbworICAgICAgICBlY2hvICIKK0xPQ0FMX1NSQ19GSUxFU18ke2FyY2h9ICs9IFwkKGZpbHRlci1vdXQgXCQoJHthcmNofV9leGNsdWRlX2ZpbGVzKSxcJChjb21tb25fc3JjX2ZpbGVzKSBcJCgke2FyY2h9X3NyY19maWxlcykpCitMT0NBTF9DRkxBR1NfJHthcmNofSArPSBcJCgke2FyY2h9X2NmbGFncykiCisgICAgICBkb25lCisgICAgZWxzZQorICAgICAgZWNobyAiCitMT0NBTF9DRkxBR1MgKz0gXCQoY29tbW9uX2NmbGFncykKK0xPQ0FMX0NfSU5DTFVERVMgKz0gXCQoY29tbW9uX2NfaW5jbHVkZXMpIFwkKGxvY2FsX2NfaW5jbHVkZXMpCiAKLXRhcmdldF9jX2ZsYWdzICAgIDo9IFwkKGNvbW1vbl9jX2ZsYWdzKSBcJChcJCh0YXJnZXRfYXJjaClfY19mbGFncykgXCQobG9jYWxfY19mbGFncykKLXRhcmdldF9jX2luY2x1ZGVzIDo9IFwkKGFkZHByZWZpeCBleHRlcm5hbC9vcGVuc3NsLyxcJChjb21tb25fY19pbmNsdWRlcykpIFwkKGxvY2FsX2NfaW5jbHVkZXMpCi10YXJnZXRfc3JjX2ZpbGVzICA6PSBcJChjb21tb25fc3JjX2ZpbGVzKSBcJChcJCh0YXJnZXRfYXJjaClfc3JjX2ZpbGVzKQotdGFyZ2V0X3NyY19maWxlcyAgOj0gXCQoZmlsdGVyLW91dCBcJChcJCh0YXJnZXRfYXJjaClfZXhjbHVkZV9maWxlcyksIFwkKHRhcmdldF9zcmNfZmlsZXMpKQotCi1pZmVxIChcJChIT1NUX09TKS1cJChIT1NUX0FSQ0gpLGxpbnV4LXg4NikKLWhvc3RfYXJjaCA6PSB4ODYKK2lmZXEgKFwkKEhPU1RfT1MpLGxpbnV4KQorTE9DQUxfQ0ZMQUdTX3g4NiArPSBcJCh4ODZfY2ZsYWdzKQorTE9DQUxfU1JDX0ZJTEVTX3g4NiArPSBcJChmaWx0ZXItb3V0IFwkKHg4Nl9leGNsdWRlX2ZpbGVzKSwgXCQoY29tbW9uX3NyY19maWxlcykgXCQoeDg2X3NyY19maWxlcykpCitMT0NBTF9DRkxBR1NfeDg2XzY0ICs9IFwkKHg4Nl82NF9jZmxhZ3MpCitMT0NBTF9TUkNfRklMRVNfeDg2XzY0ICs9IFwkKGZpbHRlci1vdXQgXCQoeDg2XzY0X2V4Y2x1ZGVfZmlsZXMpLCBcJChjb21tb25fc3JjX2ZpbGVzKSBcJCh4ODZfNjRfc3JjX2ZpbGVzKSkKIGVsc2UKLWhvc3RfYXJjaCA6PSB1bmtub3duX2FyY2gKLWVuZGlmCi0KLWhvc3RfY19mbGFncyAgICA6PSBcJChjb21tb25fY19mbGFncykgXCQoXCQoaG9zdF9hcmNoKV9jX2ZsYWdzKSBcJChsb2NhbF9jX2ZsYWdzKQotaG9zdF9jX2luY2x1ZGVzIDo9IFwkKGFkZHByZWZpeCBleHRlcm5hbC9vcGVuc3NsLyxcJChjb21tb25fY19pbmNsdWRlcykpIFwkKGxvY2FsX2NfaW5jbHVkZXMpCi1ob3N0X3NyY19maWxlcyAgOj0gXCQoY29tbW9uX3NyY19maWxlcykgXCQoXCQoaG9zdF9hcmNoKV9zcmNfZmlsZXMpCi1ob3N0X3NyY19maWxlcyAgOj0gXCQoZmlsdGVyLW91dCBcJChcJChob3N0X2FyY2gpX2V4Y2x1ZGVfZmlsZXMpLCBcJChob3N0X3NyY19maWxlcykpCi0KLWxvY2FsX2FkZGl0aW9uYWxfZGVwZW5kZW5jaWVzICs9IFwkKExPQ0FMX1BBVEgpLyQoYmFzZW5hbWUgJG91dHB1dCkKLSIKLQorXCQod2FybmluZyBVbmtub3duIGhvc3QgT1MgXCQoSE9TVF9PUykpCitMT0NBTF9TUkNfRklMRVMgKz0gXCQoY29tbW9uX3NyY19maWxlcykKK2VuZGlmIgorICAgIGZpCiAgICkgPiAiJG91dHB1dCIKIH0KIAogZnVuY3Rpb24gaW1wb3J0KCkgewogICBkZWNsYXJlIC1yIE9QRU5TU0xfU09VUkNFPSQxCi0KICAgdW50YXIgJE9QRU5TU0xfU09VUkNFIHJlYWRvbmx5CiAgIGFwcGx5cGF0Y2hlcyAkT1BFTlNTTF9ESVIKKyAgY29udmVydF9pc284ODU5X3RvX3V0ZjggJE9QRU5TU0xfRElSCiAKICAgY2QgJE9QRU5TU0xfRElSCiAKLSAgZ2VuZXJhdGVfYnVpbGRfY29uZmlnX21rIC4uL2J1aWxkLWNvbmZpZy0zMi5tayAzMgotICBnZW5lcmF0ZV9idWlsZF9jb25maWdfbWsgLi4vYnVpbGQtY29uZmlnLTY0Lm1rIDY0CisgICMgQ2hlY2sgdGhlIEFTTSBmbGFncyBmb3IgZWFjaCBhcmNoCisgIGNoZWNrX2FzbV9mbGFncyBhcm0gbGludXgtYXJtdjQKKyAgY2hlY2tfYXNtX2ZsYWdzIGFybTY0IGxpbnV4LWFhcmNoNjQKKyAgY2hlY2tfYXNtX2ZsYWdzIHg4NiBsaW51eC1lbGYKKyAgY2hlY2tfYXNtX2ZsYWdzIHg4Nl82NCBsaW51eC14ODZfNjQKKworICBnZW5lcmF0ZV9idWlsZF9jb25maWdfbWsKICAgZ2VuZXJhdGVfb3BlbnNzbGNvbmZfaAogCiAgIGNwIC1mIExJQ0VOU0UgLi4vTk9USUNFCkBAIC0zOTMsMTMgKzUwOCwyMyBAQAogCiAgICMgR2VuZXJhdGUgYXJtIGFzbQogICBnZW5fYXNtX2FybSBjcnlwdG8vYWVzL2FzbS9hZXMtYXJtdjQucGwKKyAgZ2VuX2FzbV9hcm0gY3J5cHRvL2Flcy9hc20vYWVzdjgtYXJteC5wbAorICBnZW5fYXNtX2FybSBjcnlwdG8vYWVzL2FzbS9ic2Flcy1hcm12Ny5wbAogICBnZW5fYXNtX2FybSBjcnlwdG8vYm4vYXNtL2FybXY0LWdmMm0ucGwKICAgZ2VuX2FzbV9hcm0gY3J5cHRvL2JuL2FzbS9hcm12NC1tb250LnBsCiAgIGdlbl9hc21fYXJtIGNyeXB0by9tb2Rlcy9hc20vZ2hhc2gtYXJtdjQucGwKKyAgZ2VuX2FzbV9hcm0gY3J5cHRvL21vZGVzL2FzbS9naGFzaHY4LWFybXgucGwKICAgZ2VuX2FzbV9hcm0gY3J5cHRvL3NoYS9hc20vc2hhMS1hcm12NC1sYXJnZS5wbAogICBnZW5fYXNtX2FybSBjcnlwdG8vc2hhL2FzbS9zaGEyNTYtYXJtdjQucGwKICAgZ2VuX2FzbV9hcm0gY3J5cHRvL3NoYS9hc20vc2hhNTEyLWFybXY0LnBsCiAKKyAgIyBHZW5lcmF0ZSBhcm12OCBhc20KKyAgZ2VuX2FzbV9hcm02NCBjcnlwdG8vYWVzL2FzbS9hZXN2OC1hcm14LnBsIGNyeXB0by9hZXMvYXNtL2Flc3Y4LWFybXgtNjQuUworICBnZW5fYXNtX2FybTY0IGNyeXB0by9tb2Rlcy9hc20vZ2hhc2h2OC1hcm14LnBsIGNyeXB0by9tb2Rlcy9hc20vZ2hhc2h2OC1hcm14LTY0LlMKKyAgZ2VuX2FzbV9hcm02NCBjcnlwdG8vc2hhL2FzbS9zaGExLWFybXY4LnBsCisgIGdlbl9hc21fYXJtNjQgY3J5cHRvL3NoYS9hc20vc2hhNTEyLWFybXY4LnBsIGNyeXB0by9zaGEvYXNtL3NoYTI1Ni1hcm12OC5TCisgIGdlbl9hc21fYXJtNjQgY3J5cHRvL3NoYS9hc20vc2hhNTEyLWFybXY4LnBsCisKICAgIyBHZW5lcmF0ZSBtaXBzIGFzbQogICBnZW5fYXNtX21pcHMgY3J5cHRvL2Flcy9hc20vYWVzLW1pcHMucGwKICAgZ2VuX2FzbV9taXBzIGNyeXB0by9ibi9hc20vbWlwcy5wbCBjcnlwdG8vYm4vYXNtL2JuLW1pcHMuUwpAQCAtNDYyLDkgKzU4NywxMyBAQAogCiAgIGNkIC4uCiAKLSAgZ2VuZXJhdGVfY29uZmlnX21rIENyeXB0by1jb25maWcubWsgQ1JZUFRPCi0gIGdlbmVyYXRlX2NvbmZpZ19tayBTc2wtY29uZmlnLm1rIFNTTAotICBnZW5lcmF0ZV9jb25maWdfbWsgQXBwcy1jb25maWcubWsgQVBQUworICBnZW5lcmF0ZV9jb25maWdfbWsgQ3J5cHRvLWNvbmZpZy10YXJnZXQubWsgQ1JZUFRPIHRhcmdldAorICBnZW5lcmF0ZV9jb25maWdfbWsgQ3J5cHRvLWNvbmZpZy1ob3N0Lm1rIENSWVBUTyBob3N0CisgIGdlbmVyYXRlX2NvbmZpZ19tayBDcnlwdG8tY29uZmlnLXRydXN0eS5tayBDUllQVE9fVFJVU1RZIHRhcmdldAorICBnZW5lcmF0ZV9jb25maWdfbWsgU3NsLWNvbmZpZy10YXJnZXQubWsgU1NMIHRhcmdldAorICBnZW5lcmF0ZV9jb25maWdfbWsgU3NsLWNvbmZpZy1ob3N0Lm1rIFNTTCBob3N0CisgIGdlbmVyYXRlX2NvbmZpZ19tayBBcHBzLWNvbmZpZy10YXJnZXQubWsgQVBQUyB0YXJnZXQKKyAgZ2VuZXJhdGVfY29uZmlnX21rIEFwcHMtY29uZmlnLWhvc3QubWsgQVBQUyBob3N0CiAKICAgIyBQcnVuZSB1bm5lY2Vzc2FyeSBzb3VyY2VzCiAgIHBydW5lCkBAIC01MDcsNyArNjM2LDcgQEAKICMgJDE6IERpcmVjdG9yeS4KICMgT3V0OiBsaXN0IG9mIGZpbGVzIGluICQxIHRoYXQgYXJlIGVuY29kZWQgYXMgSVNPLTg4NTkuCiBmdW5jdGlvbiBmaW5kX2lzbzg4NTlfZmlsZXMoKSB7Ci0gIGZpbmQgJDEgLXR5cGUgZiAtcHJpbnQwIHwgeGFyZ3MgLTAgZmlsZSB8IGZncmVwICJJU08tODg1OSIgfCBjdXQgLWQ6IC1mMQorICBmaW5kICQxIC10eXBlIGYgLXByaW50MCB8IHhhcmdzIC0wIGZpbGUgLS1taW1lLWVuY29kaW5nIHwgZ3JlcCAtaSAiaXNvLTg4NTkiIHwgY3V0IC1kOiAtZjEKIH0KIAogIyBDb252ZXJ0IGFsbCBJU08tODg1OSBmaWxlcyBpbiBhIGdpdmVuIHN1YmRpcmVjdG9yeSB0byBVVEYtOApAQCAtNTMwLDggKzY1OSw3IEBACiAKICAgIyBQcm9jZXNzIG5ldyBzb3VyY2UKICAgdGFyIC16eGYgJE9QRU5TU0xfU09VUkNFCi0gIGNvbnZlcnRfaXNvODg1OV90b191dGY4ICRPUEVOU1NMX0RJUgotICBjcCAtcmZQICRPUEVOU1NMX0RJUiAkT1BFTlNTTF9ESVJfT1JJRworICBjcCAtUmZQICRPUEVOU1NMX0RJUiAkT1BFTlNTTF9ESVJfT1JJRwogICBpZiBbICEgLXogJHJlYWRvbmx5IF07IHRoZW4KICAgICBmaW5kICRPUEVOU1NMX0RJUl9PUklHIC10eXBlIGYgLXByaW50MCB8IHhhcmdzIC0wIGNobW9kIGEtdwogICBmaQpAQCAtNTU1LDEyICs2ODMsMTMgQEAKICAgY2QgJGRpcgogCiAgICMgQXBwbHkgYXBwcm9wcmlhdGUgcGF0Y2hlcwotICBmb3IgaSBpbiAkT1BFTlNTTF9QQVRDSEVTOyBkbwotICAgIGlmIFsgISAiJHNraXBfcGF0Y2giID0gInBhdGNoZXMvJGkiIF07IHRoZW4KKyAgcGF0Y2hlcz0oLi4vcGF0Y2hlcy9bMC05XVswLTldWzAtOV1bMC05XS0qLnBhdGNoKQorICBmb3IgaSBpbiAiJHtwYXRjaGVzW0BdfSI7IGRvCisgICAgaWYgW1sgJHNraXBfcGF0Y2ggIT0gJHtpIyMqL30gXV07IHRoZW4KICAgICAgIGVjaG8gIkFwcGx5aW5nIHBhdGNoICRpIgotICAgICAgcGF0Y2ggLXAxIC0tbWVyZ2UgPCAuLi9wYXRjaGVzLyRpIHx8IGRpZSAiQ291bGQgbm90IGFwcGx5IHBhdGNoZXMvJGkuIEZpeCBzb3VyY2UgYW5kIHJ1bjogJDAgcmVnZW5lcmF0ZSBwYXRjaGVzLyRpIgorICAgICAgcGF0Y2ggLXAxIDwgJGkgfHwgZGllICJDb3VsZCBub3QgYXBwbHkgJGkuIEZpeCBzb3VyY2UgYW5kIHJ1bjogJDAgcmVnZW5lcmF0ZSBwYXRjaGVzLyR7aSMjKi99IgogICAgIGVsc2UKLSAgICAgIGVjaG8gIlNraXBpbmcgcGF0Y2ggJGkiCisgICAgICBlY2hvICJTa2lwaW5nIHBhdGNoICR7aSMjKi99IgogICAgIGZpCiAKICAgZG9uZQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9vcGVuc3NsL2Jpby5oIGIvaW5jbHVkZS9vcGVuc3NsL2Jpby5oCmluZGV4IDA1Njk5YWIuLmQwNWZhMjIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvb3BlbnNzbC9iaW8uaAorKysgYi9pbmNsdWRlL29wZW5zc2wvYmlvLmgKQEAgLTI2Niw2ICsyNjYsOSBAQAogI2RlZmluZSBCSU9fUlJfQ09OTkVDVAkJCTB4MDIKIC8qIFJldHVybmVkIGZyb20gdGhlIGFjY2VwdCBCSU8gd2hlbiBhbiBhY2NlcHQgd291bGQgaGF2ZSBibG9ja2VkICovCiAjZGVmaW5lIEJJT19SUl9BQ0NFUFQJCQkweDAzCisvKiBSZXR1cm5lZCBmcm9tIHRoZSBTU0wgYmlvIHdoZW4gdGhlIGNoYW5uZWwgaWQgcmV0cmlldmFsIGNvZGUgY2Fubm90IGZpbmQgdGhlCisgKiBwcml2YXRlIGtleS4gKi8KKyNkZWZpbmUgQklPX1JSX1NTTF9DSEFOTkVMX0lEX0xPT0tVUAkweDA0CiAKIC8qIFRoZXNlIGFyZSBwYXNzZWQgYnkgdGhlIEJJTyBjYWxsYmFjayAqLwogI2RlZmluZSBCSU9fQ0JfRlJFRQkweDAxCmRpZmYgLS1naXQgYS9pbmNsdWRlL29wZW5zc2wvYm4uaCBiL2luY2x1ZGUvb3BlbnNzbC9ibi5oCmluZGV4IGYzNDI0OGUuLmU3NzZjMDcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvb3BlbnNzbC9ibi5oCisrKyBiL2luY2x1ZGUvb3BlbnNzbC9ibi5oCkBAIC01MzgsNiArNTM4LDggQEAKIEJJR05VTSAqQk5fbW9kX3NxcnQoQklHTlVNICpyZXQsCiAJY29uc3QgQklHTlVNICphLCBjb25zdCBCSUdOVU0gKm4sQk5fQ1RYICpjdHgpOwogCit2b2lkCUJOX2NvbnN0dGltZV9zd2FwKEJOX1VMT05HIHN3YXAsIEJJR05VTSAqYSwgQklHTlVNICpiLCBpbnQgbndvcmRzKTsKKwogLyogRGVwcmVjYXRlZCB2ZXJzaW9ucyAqLwogI2lmbmRlZiBPUEVOU1NMX05PX0RFUFJFQ0FURUQKIEJJR05VTSAqQk5fZ2VuZXJhdGVfcHJpbWUoQklHTlVNICpyZXQsaW50IGJpdHMsaW50IHNhZmUsCkBAIC02OTIsNiArNjk0LDEwIEBACiBjb25zdCBCSUdOVU0gKkJOX2dldDBfbmlzdF9wcmltZV8zODQodm9pZCk7CiBjb25zdCBCSUdOVU0gKkJOX2dldDBfbmlzdF9wcmltZV81MjEodm9pZCk7CiAKK2ludCBCTl9nZW5lcmF0ZV9kc2Ffbm9uY2UoQklHTlVNICpvdXQsIGNvbnN0IEJJR05VTSAqcmFuZ2UsIGNvbnN0IEJJR05VTSAqcHJpdiwKKwkJCSAgY29uc3QgdW5zaWduZWQgY2hhciAqbWVzc2FnZSwgc2l6ZV90IG1lc3NhZ2VfbGVuLAorCQkJICBCTl9DVFggKmN0eCk7CisKIC8qIGxpYnJhcnkgaW50ZXJuYWwgZnVuY3Rpb25zICovCiAKICNkZWZpbmUgYm5fZXhwYW5kKGEsYml0cykgKCgoKCgoYml0cytCTl9CSVRTMi0xKSkvQk5fQklUUzIpKSA8PSAoYSktPmRtYXgpP1wKQEAgLTc3NCwxMSArNzgwLDIwIEBACiAKICNkZWZpbmUgYm5fZml4X3RvcChhKQkJYm5fY2hlY2tfdG9wKGEpCiAKKyNkZWZpbmUgYm5fY2hlY2tfc2l6ZShibiwgYml0cykgYm5fd2NoZWNrX3NpemUoYm4sICgoYml0cytCTl9CSVRTMi0xKSkvQk5fQklUUzIpCisjZGVmaW5lIGJuX3djaGVja19zaXplKGJuLCB3b3JkcykgXAorCWRvIHsgXAorCQljb25zdCBCSUdOVU0gKl9ibnVtMiA9IChibik7IFwKKwkJYXNzZXJ0KHdvcmRzIDw9IChfYm51bTIpLT5kbWF4ICYmIHdvcmRzID49IChfYm51bTIpLT50b3ApOyBcCisJfSB3aGlsZSgwKQorCiAjZWxzZSAvKiAhQk5fREVCVUcgKi8KIAogI2RlZmluZSBibl9wb2xsdXRlKGEpCiAjZGVmaW5lIGJuX2NoZWNrX3RvcChhKQogI2RlZmluZSBibl9maXhfdG9wKGEpCQlibl9jb3JyZWN0X3RvcChhKQorI2RlZmluZSBibl9jaGVja19zaXplKGJuLCBiaXRzKQorI2RlZmluZSBibl93Y2hlY2tfc2l6ZShibiwgd29yZHMpCiAKICNlbmRpZgogCkBAIC04NDIsNiArODU3LDcgQEAKICNkZWZpbmUgQk5fRl9CTl9FWFAJCQkJCSAxMjMKICNkZWZpbmUgQk5fRl9CTl9FWFBBTkQyCQkJCQkgMTA4CiAjZGVmaW5lIEJOX0ZfQk5fRVhQQU5EX0lOVEVSTkFMCQkJCSAxMjAKKyNkZWZpbmUgQk5fRl9CTl9HRU5FUkFURV9EU0FfTk9OQ0UJCQkgMTQwCiAjZGVmaW5lIEJOX0ZfQk5fR0YyTV9NT0QJCQkJIDEzMQogI2RlZmluZSBCTl9GX0JOX0dGMk1fTU9EX0VYUAkJCQkgMTMyCiAjZGVmaW5lIEJOX0ZfQk5fR0YyTV9NT0RfTVVMCQkJCSAxMzMKQEAgLTg4MSw2ICs4OTcsNyBAQAogI2RlZmluZSBCTl9SX05PVF9JTklUSUFMSVpFRAkJCQkgMTA3CiAjZGVmaW5lIEJOX1JfTk9fSU5WRVJTRQkJCQkJIDEwOAogI2RlZmluZSBCTl9SX05PX1NPTFVUSU9OCQkJCSAxMTYKKyNkZWZpbmUgQk5fUl9QUklWQVRFX0tFWV9UT09fTEFSR0UJCQkgMTE3CiAjZGVmaW5lIEJOX1JfUF9JU19OT1RfUFJJTUUJCQkJIDExMgogI2RlZmluZSBCTl9SX1RPT19NQU5ZX0lURVJBVElPTlMJCQkgMTEzCiAjZGVmaW5lIEJOX1JfVE9PX01BTllfVEVNUE9SQVJZX1ZBUklBQkxFUwkJIDEwOQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9vcGVuc3NsL2RzYS5oIGIvaW5jbHVkZS9vcGVuc3NsL2RzYS5oCmluZGV4IGE2ZjZkMGIuLjc1MzFjNjUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvb3BlbnNzbC9kc2EuaAorKysgYi9pbmNsdWRlL29wZW5zc2wvZHNhLmgKQEAgLTk2LDYgKzk2LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBmYXN0ZXIgdmFyaWFibGUgc2xpZGluZyB3aW5kb3cgbWV0aG9kIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBiZSB1c2VkIGZvciBhbGwgZXhwb25lbnRzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIERTQV9GTEFHX05PTkNFX0ZST01fSEFTSAkweDA0IC8qIENhdXNlcyB0aGUgRFNBIG5vbmNlIHRvIGJlIGNhbGN1bGF0ZWQKKwkJCQkJCWZyb20gU0hBNTEyKHByaXZhdGVfa2V5ICsgSChtZXNzYWdlKSArCisJCQkJCQlyYW5kb20pLiBUaGlzIHN0cmVuZ3RoZW5zIERTQSBhZ2FpbnN0IGEKKwkJCQkJCXdlYWsgUFJORy4gKi8KIAogLyogSWYgdGhpcyBmbGFnIGlzIHNldCB0aGUgRFNBIG1ldGhvZCBpcyBGSVBTIGNvbXBsaWFudCBhbmQgY2FuIGJlIHVzZWQKICAqIGluIEZJUFMgbW9kZS4gVGhpcyBpcyBzZXQgaW4gdGhlIHZhbGlkYXRlZCBtb2R1bGUgbWV0aG9kLiBJZiBhbgpAQCAtMTMwLDggKzEzNCw5IEBACiAJewogCWNvbnN0IGNoYXIgKm5hbWU7CiAJRFNBX1NJRyAqICgqZHNhX2RvX3NpZ24pKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRnc3QsIGludCBkbGVuLCBEU0EgKmRzYSk7Ci0JaW50ICgqZHNhX3NpZ25fc2V0dXApKERTQSAqZHNhLCBCTl9DVFggKmN0eF9pbiwgQklHTlVNICoqa2ludnAsCi0JCQkJCQkJCUJJR05VTSAqKnJwKTsKKwlpbnQgKCpkc2Ffc2lnbl9zZXR1cCkoRFNBICpkc2EsIEJOX0NUWCAqY3R4X2luLAorCQkJICAgICAgQklHTlVNICoqa2ludnAsIEJJR05VTSAqKnJwLAorCQkJICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqZGdzdCwgaW50IGRsZW4pOwogCWludCAoKmRzYV9kb192ZXJpZnkpKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRnc3QsIGludCBkZ3N0X2xlbiwKIAkJCSAgICAgRFNBX1NJRyAqc2lnLCBEU0EgKmRzYSk7CiAJaW50ICgqZHNhX21vZF9leHApKERTQSAqZHNhLCBCSUdOVU0gKnJyLCBCSUdOVU0gKmExLCBCSUdOVU0gKnAxLApAQCAtMzE3LDYgKzMyMiw3IEBACiAjZGVmaW5lIERTQV9SX01JU1NJTkdfUEFSQU1FVEVSUwkJCSAxMDEKICNkZWZpbmUgRFNBX1JfTU9EVUxVU19UT09fTEFSR0UJCQkJIDEwMwogI2RlZmluZSBEU0FfUl9ORUVEX05FV19TRVRVUF9WQUxVRVMJCQkgMTEwCisjZGVmaW5lIERTQV9SX05PTkNFX0NBTk5PVF9CRV9QUkVDT01QVVRFRAkJIDExMgogI2RlZmluZSBEU0FfUl9OT05fRklQU19EU0FfTUVUSE9ECQkJIDExMQogI2RlZmluZSBEU0FfUl9OT19QQVJBTUVURVJTX1NFVAkJCQkgMTA3CiAjZGVmaW5lIERTQV9SX1BBUkFNRVRFUl9FTkNPRElOR19FUlJPUgkJCSAxMDUKZGlmZiAtLWdpdCBhL2luY2x1ZGUvb3BlbnNzbC9lYy5oIGIvaW5jbHVkZS9vcGVuc3NsL2VjLmgKaW5kZXggZGZlODcxMC4uZDAwOGEwZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9vcGVuc3NsL2VjLmgKKysrIGIvaW5jbHVkZS9vcGVuc3NsL2VjLmgKQEAgLTgxOSw2ICs4MTksMTcgQEAKIC8qIHdyYXBwZXIgZnVuY3Rpb25zIGZvciB0aGUgdW5kZXJseWluZyBFQ19HUk9VUCBvYmplY3QgKi8KIHZvaWQgRUNfS0VZX3NldF9hc24xX2ZsYWcoRUNfS0VZICplY2tleSwgaW50IGFzbjFfZmxhZyk7CiAKKy8qKiBTZXRzIHdoZXRoZXIgRUNEU0Egb3BlcmF0aW9ucyB3aXRoIHRoZSBnaXZlbiBrZXkgd2lsbCBjYWxjdWxhdGUgdGhlaXIgaworICogdmFsdWUgZnJvbSBTSEE1MTIocHJpdmF0ZV9rZXkgKyBtZXNzYWdlICsgcmFuZG9tKSBpbiBvcmRlciB0byBwcm90ZWN0CisgKiBhZ2FpbnN0IGEgd2VhayBQUk5HLgorICogXHBhcmFtICBvbiAgV2hldGhlciB0byBjYWxjdWxhdGUgayBmcm9tIGEgaGFzaCBvciBub3QKKyAqLwordm9pZCBFQ19LRVlfc2V0X25vbmNlX2Zyb21faGFzaChFQ19LRVkgKmtleSwgaW50IG9uKTsKKworLyoqIFJldHVybnMgdGhlIHZhbHVlIG9mIG5vbmNlX2Zyb21faGFzaAorICovCitpbnQgRUNfS0VZX2dldF9ub25jZV9mcm9tX2hhc2goY29uc3QgRUNfS0VZICprZXkpOworCiAvKiogQ3JlYXRlcyBhIHRhYmxlIG9mIHByZS1jb21wdXRlZCBtdWx0aXBsZXMgb2YgdGhlIGdlbmVyYXRvciB0byAKICAqICBhY2NlbGVyYXRlIGZ1cnRoZXIgRUNfS0VZIG9wZXJhdGlvbnMuCiAgKiAgXHBhcmFtICBrZXkgIEVDX0tFWSBvYmplY3QKZGlmZiAtLWdpdCBhL2luY2x1ZGUvb3BlbnNzbC9lY2RzYS5oIGIvaW5jbHVkZS9vcGVuc3NsL2VjZHNhLmgKaW5kZXggN2ZiNTI1NC4uZGM2YTM2YiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9vcGVuc3NsL2VjZHNhLmgKKysrIGIvaW5jbHVkZS9vcGVuc3NsL2VjZHNhLmgKQEAgLTI1MCw2ICsyNTAsNyBAQAogI2RlZmluZSBFQ0RTQV9SX0VSUl9FQ19MSUIJCQkJIDEwMgogI2RlZmluZSBFQ0RTQV9SX01JU1NJTkdfUEFSQU1FVEVSUwkJCSAxMDMKICNkZWZpbmUgRUNEU0FfUl9ORUVEX05FV19TRVRVUF9WQUxVRVMJCQkgMTA2CisjZGVmaW5lIEVDRFNBX1JfTk9OQ0VfQ0FOTk9UX0JFX1BSRUNPTVBVVEVECQkgMTA4CiAjZGVmaW5lIEVDRFNBX1JfTk9OX0ZJUFNfTUVUSE9ECQkJCSAxMDcKICNkZWZpbmUgRUNEU0FfUl9SQU5ET01fTlVNQkVSX0dFTkVSQVRJT05fRkFJTEVECQkgMTA0CiAjZGVmaW5lIEVDRFNBX1JfU0lHTkFUVVJFX01BTExPQ19GQUlMRUQJCQkgMTA1CmRpZmYgLS1naXQgYS9pbmNsdWRlL29wZW5zc2wva3NzbC5oIGIvaW5jbHVkZS9vcGVuc3NsL2tzc2wuaAppbmRleCA4MjQyZmQ1Li5lNGRmODQzIDEwMDY0NAotLS0gYS9pbmNsdWRlL29wZW5zc2wva3NzbC5oCisrKyBiL2luY2x1ZGUvb3BlbnNzbC9rc3NsLmgKQEAgLTcwLDYgKzcwLDE1IEBACiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxjdHlwZS5oPgogI2luY2x1ZGUgPGtyYjUuaD4KKyNpZmRlZiBPUEVOU1NMX1NZU19XSU4zMgorLyogVGhlc2UgY2FuIHNvbWV0aW1lcyBnZXQgcmVkZWZpbmVkIGluZGlyZWN0bHkgYnkga3JiNSBoZWFkZXIgZmlsZXMKKyAqIGFmdGVyIHRoZXkgZ2V0IHVuZGVmZWQgaW4gb3NzbF90eXAuaAorICovCisjdW5kZWYgWDUwOV9OQU1FCisjdW5kZWYgWDUwOV9FWFRFTlNJT05TCisjdW5kZWYgT0NTUF9SRVFVRVNUCisjdW5kZWYgT0NTUF9SRVNQT05TRQorI2VuZGlmCiAKICNpZmRlZiAgX19jcGx1c3BsdXMKIGV4dGVybiAiQyIgewpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9vcGVuc3NsL29jc3AuaCBiL2luY2x1ZGUvb3BlbnNzbC9vY3NwLmgKaW5kZXggMzFlNDU3NC4uZjE0ZTlmNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9vcGVuc3NsL29jc3AuaAorKysgYi9pbmNsdWRlL29wZW5zc2wvb2NzcC5oCkBAIC05MCw2ICs5MCwxMyBAQAogI2RlZmluZSBPQ1NQX1JFU1BJRF9LRVkJCQkweDQwMAogI2RlZmluZSBPQ1NQX05PVElNRQkJCTB4ODAwCiAKKyNpZmRlZiBPUEVOU1NMX1NZU19XSU4zMgorICAvKiBVbmRlciBXaW4zMiB0aGVzZSBhcmUgZGVmaW5lZCBpbiB3aW5jcnlwdC5oICovCisjdW5kZWYgT0NTUF9SRVFVRVNUCisjdW5kZWYgWDUwOV9OQU1FCisjdW5kZWYgT0NTUF9SRVNQT05TRQorI2VuZGlmCisKIC8qICAgQ2VydElEIDo6PSBTRVFVRU5DRSB7CiAgKiAgICAgICBoYXNoQWxnb3JpdGhtICAgICAgICAgICAgQWxnb3JpdGhtSWRlbnRpZmllciwKICAqICAgICAgIGlzc3Vlck5hbWVIYXNoICAgICBPQ1RFVCBTVFJJTkcsIC0tIEhhc2ggb2YgSXNzdWVyJ3MgRE4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3NsY29uZi0zMi5oIGIvaW5jbHVkZS9vcGVuc3NsL29wZW5zc2xjb25mLTMyLmgKaW5kZXggZDY2MjU0OC4uY2FmNmYxYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9vcGVuc3NsL29wZW5zc2xjb25mLTMyLmgKKysrIGIvaW5jbHVkZS9vcGVuc3NsL29wZW5zc2xjb25mLTMyLmgKQEAgLTUzLDYgKzUzLDkgQEAKICNpZm5kZWYgT1BFTlNTTF9OT19SRkMzNzc5CiAjIGRlZmluZSBPUEVOU1NMX05PX1JGQzM3NzkKICNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1JJUEVNRAorIyBkZWZpbmUgT1BFTlNTTF9OT19SSVBFTUQKKyNlbmRpZgogI2lmbmRlZiBPUEVOU1NMX05PX1JTQVgKICMgZGVmaW5lIE9QRU5TU0xfTk9fUlNBWAogI2VuZGlmCkBAIC0xMzcsNiArMTQwLDkgQEAKICMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1JGQzM3NzkpICYmICFkZWZpbmVkKE5PX1JGQzM3NzkpCiAjICBkZWZpbmUgTk9fUkZDMzc3OQogIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fUklQRU1EKSAmJiAhZGVmaW5lZChOT19SSVBFTUQpCisjICBkZWZpbmUgTk9fUklQRU1ECisjIGVuZGlmCiAjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19SU0FYKSAmJiAhZGVmaW5lZChOT19SU0FYKQogIyAgZGVmaW5lIE5PX1JTQVgKICMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3NsY29uZi02NC5oIGIvaW5jbHVkZS9vcGVuc3NsL29wZW5zc2xjb25mLTY0LmgKaW5kZXggNzBjNWEyYy4uODhmYjA0MSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9vcGVuc3NsL29wZW5zc2xjb25mLTY0LmgKKysrIGIvaW5jbHVkZS9vcGVuc3NsL29wZW5zc2xjb25mLTY0LmgKQEAgLTUzLDYgKzUzLDkgQEAKICNpZm5kZWYgT1BFTlNTTF9OT19SRkMzNzc5CiAjIGRlZmluZSBPUEVOU1NMX05PX1JGQzM3NzkKICNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1JJUEVNRAorIyBkZWZpbmUgT1BFTlNTTF9OT19SSVBFTUQKKyNlbmRpZgogI2lmbmRlZiBPUEVOU1NMX05PX1JTQVgKICMgZGVmaW5lIE9QRU5TU0xfTk9fUlNBWAogI2VuZGlmCkBAIC0xMzcsNiArMTQwLDkgQEAKICMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1JGQzM3NzkpICYmICFkZWZpbmVkKE5PX1JGQzM3NzkpCiAjICBkZWZpbmUgTk9fUkZDMzc3OQogIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fUklQRU1EKSAmJiAhZGVmaW5lZChOT19SSVBFTUQpCisjICBkZWZpbmUgTk9fUklQRU1ECisjIGVuZGlmCiAjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19SU0FYKSAmJiAhZGVmaW5lZChOT19SU0FYKQogIyAgZGVmaW5lIE5PX1JTQVgKICMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3NsY29uZi1zdGF0aWMtMzIuaCBiL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3NsY29uZi1zdGF0aWMtMzIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYWY2ZjFiCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9vcGVuc3NsL29wZW5zc2xjb25mLXN0YXRpYy0zMi5oCkBAIC0wLDAgKzEsMzIyIEBACisvKiBvcGVuc3NsY29uZi5oICovCisvKiBXQVJOSU5HOiBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBmcm9tIG9wZW5zc2xjb25mLmguaW4gYnkgQ29uZmlndXJlLiAqLworCisvKiBPcGVuU1NMIHdhcyBjb25maWd1cmVkIHdpdGggdGhlIGZvbGxvd2luZyBvcHRpb25zOiAqLworI2lmbmRlZiBPUEVOU1NMX0RPSU5HX01BS0VERVBFTkQKKworCisjaWZuZGVmIE9QRU5TU0xfTk9fQ0FNRUxMSUEKKyMgZGVmaW5lIE9QRU5TU0xfTk9fQ0FNRUxMSUEKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX0NBUElFTkcKKyMgZGVmaW5lIE9QRU5TU0xfTk9fQ0FQSUVORworI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fQ0FTVAorIyBkZWZpbmUgT1BFTlNTTF9OT19DQVNUCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19EVExTMQorIyBkZWZpbmUgT1BFTlNTTF9OT19EVExTMQorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fRUNfTklTVFBfNjRfR0NDXzEyOAorIyBkZWZpbmUgT1BFTlNTTF9OT19FQ19OSVNUUF82NF9HQ0NfMTI4CisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19HTVAKKyMgZGVmaW5lIE9QRU5TU0xfTk9fR01QCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19HT1NUCisjIGRlZmluZSBPUEVOU1NMX05PX0dPU1QKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX0hFQVJUQkVBVFMKKyMgZGVmaW5lIE9QRU5TU0xfTk9fSEVBUlRCRUFUUworI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fSURFQQorIyBkZWZpbmUgT1BFTlNTTF9OT19JREVBCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19KUEFLRQorIyBkZWZpbmUgT1BFTlNTTF9OT19KUEFLRQorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fS1JCNQorIyBkZWZpbmUgT1BFTlNTTF9OT19LUkI1CisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19NRDIKKyMgZGVmaW5lIE9QRU5TU0xfTk9fTUQyCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19NREMyCisjIGRlZmluZSBPUEVOU1NMX05PX01EQzIKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1JDNQorIyBkZWZpbmUgT1BFTlNTTF9OT19SQzUKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1JEUkFORAorIyBkZWZpbmUgT1BFTlNTTF9OT19SRFJBTkQKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1JGQzM3NzkKKyMgZGVmaW5lIE9QRU5TU0xfTk9fUkZDMzc3OQorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fUklQRU1ECisjIGRlZmluZSBPUEVOU1NMX05PX1JJUEVNRAorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fUlNBWAorIyBkZWZpbmUgT1BFTlNTTF9OT19SU0FYCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19TQ1RQCisjIGRlZmluZSBPUEVOU1NMX05PX1NDVFAKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1NFRUQKKyMgZGVmaW5lIE9QRU5TU0xfTk9fU0VFRAorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fU0hBMAorIyBkZWZpbmUgT1BFTlNTTF9OT19TSEEwCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19TVEFUSUNfRU5HSU5FCisjIGRlZmluZSBPUEVOU1NMX05PX1NUQVRJQ19FTkdJTkUKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1NUT1JFCisjIGRlZmluZSBPUEVOU1NMX05PX1NUT1JFCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19XSElSTFBPT0wKKyMgZGVmaW5lIE9QRU5TU0xfTk9fV0hJUkxQT09MCisjZW5kaWYKKworI2VuZGlmIC8qIE9QRU5TU0xfRE9JTkdfTUFLRURFUEVORCAqLworCisjaWZuZGVmIE9QRU5TU0xfVEhSRUFEUworIyBkZWZpbmUgT1BFTlNTTF9USFJFQURTCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19EWU5BTUlDX0VOR0lORQorIyBkZWZpbmUgT1BFTlNTTF9OT19EWU5BTUlDX0VOR0lORQorI2VuZGlmCisKKy8qIFRoZSBPUEVOU1NMX05PXyogbWFjcm9zIGFyZSBhbHNvIGRlZmluZWQgYXMgTk9fKiBpZiB0aGUgYXBwbGljYXRpb24KKyAgIGFza3MgZm9yIGl0LiAgVGhpcyBpcyBhIHRyYW5zaWVudCBmZWF0dXJlIHRoYXQgaXMgcHJvdmlkZWQgZm9yIHRob3NlCisgICB3aG8gaGF2ZW4ndCBoYWQgdGhlIHRpbWUgdG8gZG8gdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgaW4gdGhlaXIKKyAgIGFwcGxpY2F0aW9ucy4gICovCisjaWZkZWYgT1BFTlNTTF9BTEdPUklUSE1fREVGSU5FUworIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fQ0FNRUxMSUEpICYmICFkZWZpbmVkKE5PX0NBTUVMTElBKQorIyAgZGVmaW5lIE5PX0NBTUVMTElBCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19DQVBJRU5HKSAmJiAhZGVmaW5lZChOT19DQVBJRU5HKQorIyAgZGVmaW5lIE5PX0NBUElFTkcKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX0NBU1QpICYmICFkZWZpbmVkKE5PX0NBU1QpCisjICBkZWZpbmUgTk9fQ0FTVAorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fRFRMUzEpICYmICFkZWZpbmVkKE5PX0RUTFMxKQorIyAgZGVmaW5lIE5PX0RUTFMxCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19FQ19OSVNUUF82NF9HQ0NfMTI4KSAmJiAhZGVmaW5lZChOT19FQ19OSVNUUF82NF9HQ0NfMTI4KQorIyAgZGVmaW5lIE5PX0VDX05JU1RQXzY0X0dDQ18xMjgKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX0dNUCkgJiYgIWRlZmluZWQoTk9fR01QKQorIyAgZGVmaW5lIE5PX0dNUAorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fR09TVCkgJiYgIWRlZmluZWQoTk9fR09TVCkKKyMgIGRlZmluZSBOT19HT1NUCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19IRUFSVEJFQVRTKSAmJiAhZGVmaW5lZChOT19IRUFSVEJFQVRTKQorIyAgZGVmaW5lIE5PX0hFQVJUQkVBVFMKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX0lERUEpICYmICFkZWZpbmVkKE5PX0lERUEpCisjICBkZWZpbmUgTk9fSURFQQorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fSlBBS0UpICYmICFkZWZpbmVkKE5PX0pQQUtFKQorIyAgZGVmaW5lIE5PX0pQQUtFCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19LUkI1KSAmJiAhZGVmaW5lZChOT19LUkI1KQorIyAgZGVmaW5lIE5PX0tSQjUKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX01EMikgJiYgIWRlZmluZWQoTk9fTUQyKQorIyAgZGVmaW5lIE5PX01EMgorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fTURDMikgJiYgIWRlZmluZWQoTk9fTURDMikKKyMgIGRlZmluZSBOT19NREMyCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19SQzUpICYmICFkZWZpbmVkKE5PX1JDNSkKKyMgIGRlZmluZSBOT19SQzUKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1JEUkFORCkgJiYgIWRlZmluZWQoTk9fUkRSQU5EKQorIyAgZGVmaW5lIE5PX1JEUkFORAorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fUkZDMzc3OSkgJiYgIWRlZmluZWQoTk9fUkZDMzc3OSkKKyMgIGRlZmluZSBOT19SRkMzNzc5CisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19SSVBFTUQpICYmICFkZWZpbmVkKE5PX1JJUEVNRCkKKyMgIGRlZmluZSBOT19SSVBFTUQKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1JTQVgpICYmICFkZWZpbmVkKE5PX1JTQVgpCisjICBkZWZpbmUgTk9fUlNBWAorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fU0NUUCkgJiYgIWRlZmluZWQoTk9fU0NUUCkKKyMgIGRlZmluZSBOT19TQ1RQCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19TRUVEKSAmJiAhZGVmaW5lZChOT19TRUVEKQorIyAgZGVmaW5lIE5PX1NFRUQKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1NIQTApICYmICFkZWZpbmVkKE5PX1NIQTApCisjICBkZWZpbmUgTk9fU0hBMAorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fU1RBVElDX0VOR0lORSkgJiYgIWRlZmluZWQoTk9fU1RBVElDX0VOR0lORSkKKyMgIGRlZmluZSBOT19TVEFUSUNfRU5HSU5FCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19TVE9SRSkgJiYgIWRlZmluZWQoTk9fU1RPUkUpCisjICBkZWZpbmUgTk9fU1RPUkUKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1dISVJMUE9PTCkgJiYgIWRlZmluZWQoTk9fV0hJUkxQT09MKQorIyAgZGVmaW5lIE5PX1dISVJMUE9PTAorIyBlbmRpZgorI2VuZGlmCisKKy8qIGNyeXB0by9vcGVuc3NsY29uZi5oLmluICovCisKKy8qIEdlbmVyYXRlIDgwMzg2IGNvZGU/ICovCisjdW5kZWYgSTM4Nl9PTkxZCisKKyNpZiAhKGRlZmluZWQoVk1TKSB8fCBkZWZpbmVkKF9fVk1TKSkgLyogVk1TIHVzZXMgbG9naWNhbCBuYW1lcyBpbnN0ZWFkICovCisjaWYgZGVmaW5lZChIRUFERVJfQ1JZUFRMSUJfSCkgJiYgIWRlZmluZWQoT1BFTlNTTERJUikKKyNkZWZpbmUgRU5HSU5FU0RJUiAiL3Vzci9sb2NhbC9zc2wvbGliL2VuZ2luZXMiCisjZGVmaW5lIE9QRU5TU0xESVIgIi91c3IvbG9jYWwvc3NsIgorI2VuZGlmCisjZW5kaWYKKworI3VuZGVmIE9QRU5TU0xfVU5JU1RECisjZGVmaW5lIE9QRU5TU0xfVU5JU1REIDx1bmlzdGQuaD4KKworI3VuZGVmIE9QRU5TU0xfRVhQT1JUX1ZBUl9BU19GVU5DVElPTgorCisjaWYgZGVmaW5lZChIRUFERVJfSURFQV9IKSAmJiAhZGVmaW5lZChJREVBX0lOVCkKKyNkZWZpbmUgSURFQV9JTlQgdW5zaWduZWQgaW50CisjZW5kaWYKKworI2lmIGRlZmluZWQoSEVBREVSX01EMl9IKSAmJiAhZGVmaW5lZChNRDJfSU5UKQorI2RlZmluZSBNRDJfSU5UIHVuc2lnbmVkIGludAorI2VuZGlmCisKKyNpZiBkZWZpbmVkKEhFQURFUl9SQzJfSCkgJiYgIWRlZmluZWQoUkMyX0lOVCkKKy8qIEkgbmVlZCB0byBwdXQgaW4gYSBtb2QgZm9yIHRoZSBhbHBoYSAtIGVheSAqLworI2RlZmluZSBSQzJfSU5UIHVuc2lnbmVkIGludAorI2VuZGlmCisKKyNpZiBkZWZpbmVkKEhFQURFUl9SQzRfSCkKKyNpZiAhZGVmaW5lZChSQzRfSU5UKQorLyogdXNpbmcgaW50IHR5cGVzIG1ha2UgdGhlIHN0cnVjdHVyZSBsYXJnZXIgYnV0IG1ha2UgdGhlIGNvZGUgZmFzdGVyCisgKiBvbiBtb3N0IGJveGVzIEkgaGF2ZSB0ZXN0ZWQgLSB1cCB0byAlMjAgZmFzdGVyLiAqLworLyoKKyAqIEkgZG9uJ3Qga25vdyB3aGF0IGRvZXMgIm1vc3QiIG1lYW4sIGJ1dCBkZWNsYXJpbmcgImludCIgaXMgYSBtdXN0IG9uOgorICogLSBJbnRlbCBQNiBiZWNhdXNlIHBhcnRpYWwgcmVnaXN0ZXIgc3RhbGxzIGFyZSB2ZXJ5IGV4cGVuc2l2ZTsKKyAqIC0gZWxkZXIgQWxwaGEgYmVjYXVzZSBpdCBsYWNrcyBieXRlIGxvYWQvc3RvcmUgaW5zdHJ1Y3Rpb25zOworICovCisjZGVmaW5lIFJDNF9JTlQgdW5zaWduZWQgY2hhcgorI2VuZGlmCisjaWYgIWRlZmluZWQoUkM0X0NIVU5LKQorLyoKKyAqIFRoaXMgZW5hYmxlcyBjb2RlIGhhbmRsaW5nIGRhdGEgYWxpZ25lZCBhdCBuYXR1cmFsIENQVSB3b3JkCisgKiBib3VuZGFyeS4gU2VlIGNyeXB0by9yYzQvcmM0X2VuYy5jIGZvciBmdXJ0aGVyIGRldGFpbHMuCisgKi8KKyNkZWZpbmUgUkM0X0NIVU5LIHVuc2lnbmVkIGxvbmcKKyNlbmRpZgorI2VuZGlmCisKKyNpZiAoZGVmaW5lZChIRUFERVJfTkVXX0RFU19IKSB8fCBkZWZpbmVkKEhFQURFUl9ERVNfSCkpICYmICFkZWZpbmVkKERFU19MT05HKQorLyogSWYgdGhpcyBpcyBzZXQgdG8gJ3Vuc2lnbmVkIGludCcgb24gYSBERUMgQWxwaGEsIHRoaXMgZ2l2ZXMgYWJvdXQgYQorICogJTIwIHNwZWVkIHVwIChsb25ncyBhcmUgOCBieXRlcywgaW50J3MgYXJlIDQpLiAqLworI2lmbmRlZiBERVNfTE9ORworI2RlZmluZSBERVNfTE9ORyB1bnNpZ25lZCBpbnQKKyNlbmRpZgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKEhFQURFUl9CTl9IKSAmJiAhZGVmaW5lZChDT05GSUdfSEVBREVSX0JOX0gpCisjZGVmaW5lIENPTkZJR19IRUFERVJfQk5fSAorI2RlZmluZSBCTl9MTE9ORworCisvKiBTaG91bGQgd2UgZGVmaW5lIEJOX0RJVjJXIGhlcmU/ICovCisKKy8qIE9ubHkgb25lIGZvciB0aGUgZm9sbG93aW5nIHNob3VsZCBiZSBkZWZpbmVkICovCisjdW5kZWYgU0lYVFlfRk9VUl9CSVRfTE9ORworI3VuZGVmIFNJWFRZX0ZPVVJfQklUCisjZGVmaW5lIFRISVJUWV9UV09fQklUCisjZW5kaWYKKworI2lmIGRlZmluZWQoSEVBREVSX1JDNF9MT0NMX0gpICYmICFkZWZpbmVkKENPTkZJR19IRUFERVJfUkM0X0xPQ0xfSCkKKyNkZWZpbmUgQ09ORklHX0hFQURFUl9SQzRfTE9DTF9ICisvKiBpZiB0aGlzIGlzIGRlZmluZWQgZGF0YVtpXSBpcyB1c2VkIGluc3RlYWQgb2YgKmRhdGEsIHRoaXMgaXMgYSAlMjAKKyAqIHNwZWVkdXAgb24geDg2ICovCisjdW5kZWYgUkM0X0lOREVYCisjZW5kaWYKKworI2lmIGRlZmluZWQoSEVBREVSX0JGX0xPQ0xfSCkgJiYgIWRlZmluZWQoQ09ORklHX0hFQURFUl9CRl9MT0NMX0gpCisjZGVmaW5lIENPTkZJR19IRUFERVJfQkZfTE9DTF9ICisjZGVmaW5lIEJGX1BUUgorI2VuZGlmIC8qIEhFQURFUl9CRl9MT0NMX0ggKi8KKworI2lmIGRlZmluZWQoSEVBREVSX0RFU19MT0NMX0gpICYmICFkZWZpbmVkKENPTkZJR19IRUFERVJfREVTX0xPQ0xfSCkKKyNkZWZpbmUgQ09ORklHX0hFQURFUl9ERVNfTE9DTF9ICisjaWZuZGVmIERFU19ERUZBVUxUX09QVElPTlMKKy8qIHRoZSBmb2xsb3dpbmcgaXMgdHdlYWtlZCBmcm9tIGEgY29uZmlnIHNjcmlwdCwgdGhhdCBpcyB3aHkgaXQgaXMgYQorICogcHJvdGVjdGVkIHVuZGVmL2RlZmluZSAqLworI2lmbmRlZiBERVNfUFRSCisjdW5kZWYgREVTX1BUUgorI2VuZGlmCisKKy8qIFRoaXMgaGVscHMgQyBjb21waWxlciBnZW5lcmF0ZSB0aGUgY29ycmVjdCBjb2RlIGZvciBtdWx0aXBsZSBmdW5jdGlvbmFsCisgKiB1bml0cy4gIEl0IHJlZHVjZXMgcmVnaXN0ZXIgZGVwZW5kYW5jaWVzIGF0IHRoZSBleHBlbnNlIG9mIDIgbW9yZQorICogcmVnaXN0ZXJzICovCisjaWZuZGVmIERFU19SSVNDMQorI3VuZGVmIERFU19SSVNDMQorI2VuZGlmCisKKyNpZm5kZWYgREVTX1JJU0MyCisjdW5kZWYgREVTX1JJU0MyCisjZW5kaWYKKworI2lmIGRlZmluZWQoREVTX1JJU0MxKSAmJiBkZWZpbmVkKERFU19SSVNDMikKK1lPVSBTSE9VTEQgTk9UIEhBVkUgQk9USCBERVNfUklTQzEgQU5EIERFU19SSVNDMiBERUZJTkVEISEhISEKKyNlbmRpZgorCisvKiBVbnJvbGwgdGhlIGlubmVyIGxvb3AsIHRoaXMgc29tZXRpbWVzIGhlbHBzLCBzb21ldGltZXMgaGluZGVycy4KKyAqIFZlcnkgbXVjeSBDUFUgZGVwZW5kYW50ICovCisjaWZuZGVmIERFU19VTlJPTEwKKyNkZWZpbmUgREVTX1VOUk9MTAorI2VuZGlmCisKKy8qIFRoZXNlIGRlZmF1bHQgdmFsdWVzIHdlcmUgc3VwcGxpZWQgYnkKKyAqIFBldGVyIEd1dG1hbiA8cGd1dDAwMUBjcy5hdWNrbGFuZC5hYy5uej4KKyAqIFRoZXkgYXJlIG9ubHkgdXNlZCBpZiBub3RoaW5nIGVsc2UgaGFzIGJlZW4gZGVmaW5lZCAqLworI2lmICFkZWZpbmVkKERFU19QVFIpICYmICFkZWZpbmVkKERFU19SSVNDMSkgJiYgIWRlZmluZWQoREVTX1JJU0MyKSAmJiAhZGVmaW5lZChERVNfVU5ST0xMKQorLyogU3BlY2lhbCBkZWZpbmVzIHdoaWNoIGNoYW5nZSB0aGUgd2F5IHRoZSBjb2RlIGlzIGJ1aWx0IGRlcGVuZGluZyBvbiB0aGUKKyAgIENQVSBhbmQgT1MuICBGb3IgU0dJIG1hY2hpbmVzIHlvdSBjYW4gdXNlIF9NSVBTX1NaTE9ORyAoMzIgb3IgNjQpIHRvIGZpbmQKKyAgIGV2ZW4gbmV3ZXIgTUlQUyBDUFUncywgYnV0IGF0IHRoZSBtb21lbnQgb25lIHNpemUgZml0cyBhbGwgZm9yCisgICBvcHRpbWl6YXRpb24gb3B0aW9ucy4gIE9sZGVyIFNwYXJjJ3Mgd29yayBiZXR0ZXIgd2l0aCBvbmx5IFVOUk9MTCwgYnV0CisgICB0aGVyZSdzIG5vIHdheSB0byB0ZWxsIGF0IGNvbXBpbGUgdGltZSB3aGF0IGl0IGlzIHlvdSdyZSBydW5uaW5nIG9uICovCisgCisjaWYgZGVmaW5lZCggc3VuICkJCS8qIE5ld2VyIFNwYXJjJ3MgKi8KKyMgIGRlZmluZSBERVNfUFRSCisjICBkZWZpbmUgREVTX1JJU0MxCisjICBkZWZpbmUgREVTX1VOUk9MTAorI2VsaWYgZGVmaW5lZCggX191bHRyaXggKQkvKiBPbGRlciBNSVBTICovCisjICBkZWZpbmUgREVTX1BUUgorIyAgZGVmaW5lIERFU19SSVNDMgorIyAgZGVmaW5lIERFU19VTlJPTEwKKyNlbGlmIGRlZmluZWQoIF9fb3NmMV9fICkJLyogQWxwaGEgKi8KKyMgIGRlZmluZSBERVNfUFRSCisjICBkZWZpbmUgREVTX1JJU0MyCisjZWxpZiBkZWZpbmVkICggX0FJWCApCQkvKiBSUzYwMDAgKi8KKyAgLyogVW5rbm93biAqLworI2VsaWYgZGVmaW5lZCggX19ocHV4ICkJCS8qIEhQLVBBICovCisgIC8qIFVua25vd24gKi8KKyNlbGlmIGRlZmluZWQoIF9fYXV4ICkJCS8qIDY4SyAqLworICAvKiBVbmtub3duICovCisjZWxpZiBkZWZpbmVkKCBfX2RndXggKQkJLyogODhLIChidXQgUDYgaW4gbGF0ZXN0IGJveGVzKSAqLworIyAgZGVmaW5lIERFU19VTlJPTEwKKyNlbGlmIGRlZmluZWQoIF9fc2dpICkJCS8qIE5ld2VyIE1JUFMgKi8KKyMgIGRlZmluZSBERVNfUFRSCisjICBkZWZpbmUgREVTX1JJU0MyCisjICBkZWZpbmUgREVTX1VOUk9MTAorI2VsaWYgZGVmaW5lZChpMzg2KSB8fCBkZWZpbmVkKF9faTM4Nl9fKQkvKiB4ODYgYm94ZXMsIHNob3VsZCBiZSBnY2MgKi8KKyMgIGRlZmluZSBERVNfUFRSCisjICBkZWZpbmUgREVTX1JJU0MxCisjICBkZWZpbmUgREVTX1VOUk9MTAorI2VuZGlmIC8qIFN5c3RlbXMtc3BlY2lmaWMgc3BlZWQgZGVmaW5lcyAqLworI2VuZGlmCisKKyNlbmRpZiAvKiBERVNfREVGQVVMVF9PUFRJT05TICovCisjZW5kaWYgLyogSEVBREVSX0RFU19MT0NMX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3NsY29uZi1zdGF0aWMtNjQuaCBiL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3NsY29uZi1zdGF0aWMtNjQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OGZiMDQxCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9vcGVuc3NsL29wZW5zc2xjb25mLXN0YXRpYy02NC5oCkBAIC0wLDAgKzEsMzIyIEBACisvKiBvcGVuc3NsY29uZi5oICovCisvKiBXQVJOSU5HOiBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBmcm9tIG9wZW5zc2xjb25mLmguaW4gYnkgQ29uZmlndXJlLiAqLworCisvKiBPcGVuU1NMIHdhcyBjb25maWd1cmVkIHdpdGggdGhlIGZvbGxvd2luZyBvcHRpb25zOiAqLworI2lmbmRlZiBPUEVOU1NMX0RPSU5HX01BS0VERVBFTkQKKworCisjaWZuZGVmIE9QRU5TU0xfTk9fQ0FNRUxMSUEKKyMgZGVmaW5lIE9QRU5TU0xfTk9fQ0FNRUxMSUEKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX0NBUElFTkcKKyMgZGVmaW5lIE9QRU5TU0xfTk9fQ0FQSUVORworI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fQ0FTVAorIyBkZWZpbmUgT1BFTlNTTF9OT19DQVNUCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19EVExTMQorIyBkZWZpbmUgT1BFTlNTTF9OT19EVExTMQorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fRUNfTklTVFBfNjRfR0NDXzEyOAorIyBkZWZpbmUgT1BFTlNTTF9OT19FQ19OSVNUUF82NF9HQ0NfMTI4CisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19HTVAKKyMgZGVmaW5lIE9QRU5TU0xfTk9fR01QCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19HT1NUCisjIGRlZmluZSBPUEVOU1NMX05PX0dPU1QKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX0hFQVJUQkVBVFMKKyMgZGVmaW5lIE9QRU5TU0xfTk9fSEVBUlRCRUFUUworI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fSURFQQorIyBkZWZpbmUgT1BFTlNTTF9OT19JREVBCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19KUEFLRQorIyBkZWZpbmUgT1BFTlNTTF9OT19KUEFLRQorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fS1JCNQorIyBkZWZpbmUgT1BFTlNTTF9OT19LUkI1CisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19NRDIKKyMgZGVmaW5lIE9QRU5TU0xfTk9fTUQyCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19NREMyCisjIGRlZmluZSBPUEVOU1NMX05PX01EQzIKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1JDNQorIyBkZWZpbmUgT1BFTlNTTF9OT19SQzUKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1JEUkFORAorIyBkZWZpbmUgT1BFTlNTTF9OT19SRFJBTkQKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1JGQzM3NzkKKyMgZGVmaW5lIE9QRU5TU0xfTk9fUkZDMzc3OQorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fUklQRU1ECisjIGRlZmluZSBPUEVOU1NMX05PX1JJUEVNRAorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fUlNBWAorIyBkZWZpbmUgT1BFTlNTTF9OT19SU0FYCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19TQ1RQCisjIGRlZmluZSBPUEVOU1NMX05PX1NDVFAKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1NFRUQKKyMgZGVmaW5lIE9QRU5TU0xfTk9fU0VFRAorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fU0hBMAorIyBkZWZpbmUgT1BFTlNTTF9OT19TSEEwCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19TVEFUSUNfRU5HSU5FCisjIGRlZmluZSBPUEVOU1NMX05PX1NUQVRJQ19FTkdJTkUKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1NUT1JFCisjIGRlZmluZSBPUEVOU1NMX05PX1NUT1JFCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19XSElSTFBPT0wKKyMgZGVmaW5lIE9QRU5TU0xfTk9fV0hJUkxQT09MCisjZW5kaWYKKworI2VuZGlmIC8qIE9QRU5TU0xfRE9JTkdfTUFLRURFUEVORCAqLworCisjaWZuZGVmIE9QRU5TU0xfVEhSRUFEUworIyBkZWZpbmUgT1BFTlNTTF9USFJFQURTCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19EWU5BTUlDX0VOR0lORQorIyBkZWZpbmUgT1BFTlNTTF9OT19EWU5BTUlDX0VOR0lORQorI2VuZGlmCisKKy8qIFRoZSBPUEVOU1NMX05PXyogbWFjcm9zIGFyZSBhbHNvIGRlZmluZWQgYXMgTk9fKiBpZiB0aGUgYXBwbGljYXRpb24KKyAgIGFza3MgZm9yIGl0LiAgVGhpcyBpcyBhIHRyYW5zaWVudCBmZWF0dXJlIHRoYXQgaXMgcHJvdmlkZWQgZm9yIHRob3NlCisgICB3aG8gaGF2ZW4ndCBoYWQgdGhlIHRpbWUgdG8gZG8gdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgaW4gdGhlaXIKKyAgIGFwcGxpY2F0aW9ucy4gICovCisjaWZkZWYgT1BFTlNTTF9BTEdPUklUSE1fREVGSU5FUworIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fQ0FNRUxMSUEpICYmICFkZWZpbmVkKE5PX0NBTUVMTElBKQorIyAgZGVmaW5lIE5PX0NBTUVMTElBCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19DQVBJRU5HKSAmJiAhZGVmaW5lZChOT19DQVBJRU5HKQorIyAgZGVmaW5lIE5PX0NBUElFTkcKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX0NBU1QpICYmICFkZWZpbmVkKE5PX0NBU1QpCisjICBkZWZpbmUgTk9fQ0FTVAorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fRFRMUzEpICYmICFkZWZpbmVkKE5PX0RUTFMxKQorIyAgZGVmaW5lIE5PX0RUTFMxCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19FQ19OSVNUUF82NF9HQ0NfMTI4KSAmJiAhZGVmaW5lZChOT19FQ19OSVNUUF82NF9HQ0NfMTI4KQorIyAgZGVmaW5lIE5PX0VDX05JU1RQXzY0X0dDQ18xMjgKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX0dNUCkgJiYgIWRlZmluZWQoTk9fR01QKQorIyAgZGVmaW5lIE5PX0dNUAorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fR09TVCkgJiYgIWRlZmluZWQoTk9fR09TVCkKKyMgIGRlZmluZSBOT19HT1NUCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19IRUFSVEJFQVRTKSAmJiAhZGVmaW5lZChOT19IRUFSVEJFQVRTKQorIyAgZGVmaW5lIE5PX0hFQVJUQkVBVFMKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX0lERUEpICYmICFkZWZpbmVkKE5PX0lERUEpCisjICBkZWZpbmUgTk9fSURFQQorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fSlBBS0UpICYmICFkZWZpbmVkKE5PX0pQQUtFKQorIyAgZGVmaW5lIE5PX0pQQUtFCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19LUkI1KSAmJiAhZGVmaW5lZChOT19LUkI1KQorIyAgZGVmaW5lIE5PX0tSQjUKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX01EMikgJiYgIWRlZmluZWQoTk9fTUQyKQorIyAgZGVmaW5lIE5PX01EMgorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fTURDMikgJiYgIWRlZmluZWQoTk9fTURDMikKKyMgIGRlZmluZSBOT19NREMyCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19SQzUpICYmICFkZWZpbmVkKE5PX1JDNSkKKyMgIGRlZmluZSBOT19SQzUKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1JEUkFORCkgJiYgIWRlZmluZWQoTk9fUkRSQU5EKQorIyAgZGVmaW5lIE5PX1JEUkFORAorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fUkZDMzc3OSkgJiYgIWRlZmluZWQoTk9fUkZDMzc3OSkKKyMgIGRlZmluZSBOT19SRkMzNzc5CisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19SSVBFTUQpICYmICFkZWZpbmVkKE5PX1JJUEVNRCkKKyMgIGRlZmluZSBOT19SSVBFTUQKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1JTQVgpICYmICFkZWZpbmVkKE5PX1JTQVgpCisjICBkZWZpbmUgTk9fUlNBWAorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fU0NUUCkgJiYgIWRlZmluZWQoTk9fU0NUUCkKKyMgIGRlZmluZSBOT19TQ1RQCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19TRUVEKSAmJiAhZGVmaW5lZChOT19TRUVEKQorIyAgZGVmaW5lIE5PX1NFRUQKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1NIQTApICYmICFkZWZpbmVkKE5PX1NIQTApCisjICBkZWZpbmUgTk9fU0hBMAorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fU1RBVElDX0VOR0lORSkgJiYgIWRlZmluZWQoTk9fU1RBVElDX0VOR0lORSkKKyMgIGRlZmluZSBOT19TVEFUSUNfRU5HSU5FCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19TVE9SRSkgJiYgIWRlZmluZWQoTk9fU1RPUkUpCisjICBkZWZpbmUgTk9fU1RPUkUKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1dISVJMUE9PTCkgJiYgIWRlZmluZWQoTk9fV0hJUkxQT09MKQorIyAgZGVmaW5lIE5PX1dISVJMUE9PTAorIyBlbmRpZgorI2VuZGlmCisKKy8qIGNyeXB0by9vcGVuc3NsY29uZi5oLmluICovCisKKy8qIEdlbmVyYXRlIDgwMzg2IGNvZGU/ICovCisjdW5kZWYgSTM4Nl9PTkxZCisKKyNpZiAhKGRlZmluZWQoVk1TKSB8fCBkZWZpbmVkKF9fVk1TKSkgLyogVk1TIHVzZXMgbG9naWNhbCBuYW1lcyBpbnN0ZWFkICovCisjaWYgZGVmaW5lZChIRUFERVJfQ1JZUFRMSUJfSCkgJiYgIWRlZmluZWQoT1BFTlNTTERJUikKKyNkZWZpbmUgRU5HSU5FU0RJUiAiL3Vzci9sb2NhbC9zc2wvbGliL2VuZ2luZXMiCisjZGVmaW5lIE9QRU5TU0xESVIgIi91c3IvbG9jYWwvc3NsIgorI2VuZGlmCisjZW5kaWYKKworI3VuZGVmIE9QRU5TU0xfVU5JU1RECisjZGVmaW5lIE9QRU5TU0xfVU5JU1REIDx1bmlzdGQuaD4KKworI3VuZGVmIE9QRU5TU0xfRVhQT1JUX1ZBUl9BU19GVU5DVElPTgorCisjaWYgZGVmaW5lZChIRUFERVJfSURFQV9IKSAmJiAhZGVmaW5lZChJREVBX0lOVCkKKyNkZWZpbmUgSURFQV9JTlQgdW5zaWduZWQgaW50CisjZW5kaWYKKworI2lmIGRlZmluZWQoSEVBREVSX01EMl9IKSAmJiAhZGVmaW5lZChNRDJfSU5UKQorI2RlZmluZSBNRDJfSU5UIHVuc2lnbmVkIGludAorI2VuZGlmCisKKyNpZiBkZWZpbmVkKEhFQURFUl9SQzJfSCkgJiYgIWRlZmluZWQoUkMyX0lOVCkKKy8qIEkgbmVlZCB0byBwdXQgaW4gYSBtb2QgZm9yIHRoZSBhbHBoYSAtIGVheSAqLworI2RlZmluZSBSQzJfSU5UIHVuc2lnbmVkIGludAorI2VuZGlmCisKKyNpZiBkZWZpbmVkKEhFQURFUl9SQzRfSCkKKyNpZiAhZGVmaW5lZChSQzRfSU5UKQorLyogdXNpbmcgaW50IHR5cGVzIG1ha2UgdGhlIHN0cnVjdHVyZSBsYXJnZXIgYnV0IG1ha2UgdGhlIGNvZGUgZmFzdGVyCisgKiBvbiBtb3N0IGJveGVzIEkgaGF2ZSB0ZXN0ZWQgLSB1cCB0byAlMjAgZmFzdGVyLiAqLworLyoKKyAqIEkgZG9uJ3Qga25vdyB3aGF0IGRvZXMgIm1vc3QiIG1lYW4sIGJ1dCBkZWNsYXJpbmcgImludCIgaXMgYSBtdXN0IG9uOgorICogLSBJbnRlbCBQNiBiZWNhdXNlIHBhcnRpYWwgcmVnaXN0ZXIgc3RhbGxzIGFyZSB2ZXJ5IGV4cGVuc2l2ZTsKKyAqIC0gZWxkZXIgQWxwaGEgYmVjYXVzZSBpdCBsYWNrcyBieXRlIGxvYWQvc3RvcmUgaW5zdHJ1Y3Rpb25zOworICovCisjZGVmaW5lIFJDNF9JTlQgdW5zaWduZWQgY2hhcgorI2VuZGlmCisjaWYgIWRlZmluZWQoUkM0X0NIVU5LKQorLyoKKyAqIFRoaXMgZW5hYmxlcyBjb2RlIGhhbmRsaW5nIGRhdGEgYWxpZ25lZCBhdCBuYXR1cmFsIENQVSB3b3JkCisgKiBib3VuZGFyeS4gU2VlIGNyeXB0by9yYzQvcmM0X2VuYy5jIGZvciBmdXJ0aGVyIGRldGFpbHMuCisgKi8KKyNkZWZpbmUgUkM0X0NIVU5LIHVuc2lnbmVkIGxvbmcKKyNlbmRpZgorI2VuZGlmCisKKyNpZiAoZGVmaW5lZChIRUFERVJfTkVXX0RFU19IKSB8fCBkZWZpbmVkKEhFQURFUl9ERVNfSCkpICYmICFkZWZpbmVkKERFU19MT05HKQorLyogSWYgdGhpcyBpcyBzZXQgdG8gJ3Vuc2lnbmVkIGludCcgb24gYSBERUMgQWxwaGEsIHRoaXMgZ2l2ZXMgYWJvdXQgYQorICogJTIwIHNwZWVkIHVwIChsb25ncyBhcmUgOCBieXRlcywgaW50J3MgYXJlIDQpLiAqLworI2lmbmRlZiBERVNfTE9ORworI2RlZmluZSBERVNfTE9ORyB1bnNpZ25lZCBpbnQKKyNlbmRpZgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKEhFQURFUl9CTl9IKSAmJiAhZGVmaW5lZChDT05GSUdfSEVBREVSX0JOX0gpCisjZGVmaW5lIENPTkZJR19IRUFERVJfQk5fSAorI3VuZGVmIEJOX0xMT05HCisKKy8qIFNob3VsZCB3ZSBkZWZpbmUgQk5fRElWMlcgaGVyZT8gKi8KKworLyogT25seSBvbmUgZm9yIHRoZSBmb2xsb3dpbmcgc2hvdWxkIGJlIGRlZmluZWQgKi8KKyNkZWZpbmUgU0lYVFlfRk9VUl9CSVRfTE9ORworI3VuZGVmIFNJWFRZX0ZPVVJfQklUCisjdW5kZWYgVEhJUlRZX1RXT19CSVQKKyNlbmRpZgorCisjaWYgZGVmaW5lZChIRUFERVJfUkM0X0xPQ0xfSCkgJiYgIWRlZmluZWQoQ09ORklHX0hFQURFUl9SQzRfTE9DTF9IKQorI2RlZmluZSBDT05GSUdfSEVBREVSX1JDNF9MT0NMX0gKKy8qIGlmIHRoaXMgaXMgZGVmaW5lZCBkYXRhW2ldIGlzIHVzZWQgaW5zdGVhZCBvZiAqZGF0YSwgdGhpcyBpcyBhICUyMAorICogc3BlZWR1cCBvbiB4ODYgKi8KKyN1bmRlZiBSQzRfSU5ERVgKKyNlbmRpZgorCisjaWYgZGVmaW5lZChIRUFERVJfQkZfTE9DTF9IKSAmJiAhZGVmaW5lZChDT05GSUdfSEVBREVSX0JGX0xPQ0xfSCkKKyNkZWZpbmUgQ09ORklHX0hFQURFUl9CRl9MT0NMX0gKKyNkZWZpbmUgQkZfUFRSCisjZW5kaWYgLyogSEVBREVSX0JGX0xPQ0xfSCAqLworCisjaWYgZGVmaW5lZChIRUFERVJfREVTX0xPQ0xfSCkgJiYgIWRlZmluZWQoQ09ORklHX0hFQURFUl9ERVNfTE9DTF9IKQorI2RlZmluZSBDT05GSUdfSEVBREVSX0RFU19MT0NMX0gKKyNpZm5kZWYgREVTX0RFRkFVTFRfT1BUSU9OUworLyogdGhlIGZvbGxvd2luZyBpcyB0d2Vha2VkIGZyb20gYSBjb25maWcgc2NyaXB0LCB0aGF0IGlzIHdoeSBpdCBpcyBhCisgKiBwcm90ZWN0ZWQgdW5kZWYvZGVmaW5lICovCisjaWZuZGVmIERFU19QVFIKKyN1bmRlZiBERVNfUFRSCisjZW5kaWYKKworLyogVGhpcyBoZWxwcyBDIGNvbXBpbGVyIGdlbmVyYXRlIHRoZSBjb3JyZWN0IGNvZGUgZm9yIG11bHRpcGxlIGZ1bmN0aW9uYWwKKyAqIHVuaXRzLiAgSXQgcmVkdWNlcyByZWdpc3RlciBkZXBlbmRhbmNpZXMgYXQgdGhlIGV4cGVuc2Ugb2YgMiBtb3JlCisgKiByZWdpc3RlcnMgKi8KKyNpZm5kZWYgREVTX1JJU0MxCisjdW5kZWYgREVTX1JJU0MxCisjZW5kaWYKKworI2lmbmRlZiBERVNfUklTQzIKKyN1bmRlZiBERVNfUklTQzIKKyNlbmRpZgorCisjaWYgZGVmaW5lZChERVNfUklTQzEpICYmIGRlZmluZWQoREVTX1JJU0MyKQorWU9VIFNIT1VMRCBOT1QgSEFWRSBCT1RIIERFU19SSVNDMSBBTkQgREVTX1JJU0MyIERFRklORUQhISEhIQorI2VuZGlmCisKKy8qIFVucm9sbCB0aGUgaW5uZXIgbG9vcCwgdGhpcyBzb21ldGltZXMgaGVscHMsIHNvbWV0aW1lcyBoaW5kZXJzLgorICogVmVyeSBtdWN5IENQVSBkZXBlbmRhbnQgKi8KKyNpZm5kZWYgREVTX1VOUk9MTAorI2RlZmluZSBERVNfVU5ST0xMCisjZW5kaWYKKworLyogVGhlc2UgZGVmYXVsdCB2YWx1ZXMgd2VyZSBzdXBwbGllZCBieQorICogUGV0ZXIgR3V0bWFuIDxwZ3V0MDAxQGNzLmF1Y2tsYW5kLmFjLm56PgorICogVGhleSBhcmUgb25seSB1c2VkIGlmIG5vdGhpbmcgZWxzZSBoYXMgYmVlbiBkZWZpbmVkICovCisjaWYgIWRlZmluZWQoREVTX1BUUikgJiYgIWRlZmluZWQoREVTX1JJU0MxKSAmJiAhZGVmaW5lZChERVNfUklTQzIpICYmICFkZWZpbmVkKERFU19VTlJPTEwpCisvKiBTcGVjaWFsIGRlZmluZXMgd2hpY2ggY2hhbmdlIHRoZSB3YXkgdGhlIGNvZGUgaXMgYnVpbHQgZGVwZW5kaW5nIG9uIHRoZQorICAgQ1BVIGFuZCBPUy4gIEZvciBTR0kgbWFjaGluZXMgeW91IGNhbiB1c2UgX01JUFNfU1pMT05HICgzMiBvciA2NCkgdG8gZmluZAorICAgZXZlbiBuZXdlciBNSVBTIENQVSdzLCBidXQgYXQgdGhlIG1vbWVudCBvbmUgc2l6ZSBmaXRzIGFsbCBmb3IKKyAgIG9wdGltaXphdGlvbiBvcHRpb25zLiAgT2xkZXIgU3BhcmMncyB3b3JrIGJldHRlciB3aXRoIG9ubHkgVU5ST0xMLCBidXQKKyAgIHRoZXJlJ3Mgbm8gd2F5IHRvIHRlbGwgYXQgY29tcGlsZSB0aW1lIHdoYXQgaXQgaXMgeW91J3JlIHJ1bm5pbmcgb24gKi8KKyAKKyNpZiBkZWZpbmVkKCBzdW4gKQkJLyogTmV3ZXIgU3BhcmMncyAqLworIyAgZGVmaW5lIERFU19QVFIKKyMgIGRlZmluZSBERVNfUklTQzEKKyMgIGRlZmluZSBERVNfVU5ST0xMCisjZWxpZiBkZWZpbmVkKCBfX3VsdHJpeCApCS8qIE9sZGVyIE1JUFMgKi8KKyMgIGRlZmluZSBERVNfUFRSCisjICBkZWZpbmUgREVTX1JJU0MyCisjICBkZWZpbmUgREVTX1VOUk9MTAorI2VsaWYgZGVmaW5lZCggX19vc2YxX18gKQkvKiBBbHBoYSAqLworIyAgZGVmaW5lIERFU19QVFIKKyMgIGRlZmluZSBERVNfUklTQzIKKyNlbGlmIGRlZmluZWQgKCBfQUlYICkJCS8qIFJTNjAwMCAqLworICAvKiBVbmtub3duICovCisjZWxpZiBkZWZpbmVkKCBfX2hwdXggKQkJLyogSFAtUEEgKi8KKyAgLyogVW5rbm93biAqLworI2VsaWYgZGVmaW5lZCggX19hdXggKQkJLyogNjhLICovCisgIC8qIFVua25vd24gKi8KKyNlbGlmIGRlZmluZWQoIF9fZGd1eCApCQkvKiA4OEsgKGJ1dCBQNiBpbiBsYXRlc3QgYm94ZXMpICovCisjICBkZWZpbmUgREVTX1VOUk9MTAorI2VsaWYgZGVmaW5lZCggX19zZ2kgKQkJLyogTmV3ZXIgTUlQUyAqLworIyAgZGVmaW5lIERFU19QVFIKKyMgIGRlZmluZSBERVNfUklTQzIKKyMgIGRlZmluZSBERVNfVU5ST0xMCisjZWxpZiBkZWZpbmVkKGkzODYpIHx8IGRlZmluZWQoX19pMzg2X18pCS8qIHg4NiBib3hlcywgc2hvdWxkIGJlIGdjYyAqLworIyAgZGVmaW5lIERFU19QVFIKKyMgIGRlZmluZSBERVNfUklTQzEKKyMgIGRlZmluZSBERVNfVU5ST0xMCisjZW5kaWYgLyogU3lzdGVtcy1zcGVjaWZpYyBzcGVlZCBkZWZpbmVzICovCisjZW5kaWYKKworI2VuZGlmIC8qIERFU19ERUZBVUxUX09QVElPTlMgKi8KKyNlbmRpZiAvKiBIRUFERVJfREVTX0xPQ0xfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9vcGVuc3NsL29wZW5zc2xjb25mLXN0YXRpYy10cnVzdHkuaCBiL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3NsY29uZi1zdGF0aWMtdHJ1c3R5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDZmOWY5OAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3NsY29uZi1zdGF0aWMtdHJ1c3R5LmgKQEAgLTAsMCArMSw0NDggQEAKKy8qIG9wZW5zc2xjb25mLmggKi8KKy8qIFdBUk5JTkc6IEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGZyb20gb3BlbnNzbGNvbmYuaC5pbiBieSBDb25maWd1cmUuICovCisKKy8qIE9wZW5TU0wgd2FzIGNvbmZpZ3VyZWQgd2l0aCB0aGUgZm9sbG93aW5nIG9wdGlvbnM6ICovCisjaWZuZGVmIE9QRU5TU0xfRE9JTkdfTUFLRURFUEVORAorCisKKyNpZm5kZWYgT1BFTlNTTF9OT19DQU1FTExJQQorIyBkZWZpbmUgT1BFTlNTTF9OT19DQU1FTExJQQorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fQ0FQSUVORworIyBkZWZpbmUgT1BFTlNTTF9OT19DQVBJRU5HCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19DQVNUCisjIGRlZmluZSBPUEVOU1NMX05PX0NBU1QKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX0NNUworIyBkZWZpbmUgT1BFTlNTTF9OT19DTVMKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX0NPTVAKKyMgZGVmaW5lIE9QRU5TU0xfTk9fQ09NUAorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fQ09ORgorIyBkZWZpbmUgT1BFTlNTTF9OT19DT05GCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19ERVMKKyMgZGVmaW5lIE9QRU5TU0xfTk9fREVTCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19EVExTMQorIyBkZWZpbmUgT1BFTlNTTF9OT19EVExTMQorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fRUNfTklTVFBfNjRfR0NDXzEyOAorIyBkZWZpbmUgT1BFTlNTTF9OT19FQ19OSVNUUF82NF9HQ0NfMTI4CisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19HTVAKKyMgZGVmaW5lIE9QRU5TU0xfTk9fR01QCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19HT1NUCisjIGRlZmluZSBPUEVOU1NMX05PX0dPU1QKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX0hFQVJUQkVBVFMKKyMgZGVmaW5lIE9QRU5TU0xfTk9fSEVBUlRCRUFUUworI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fSURFQQorIyBkZWZpbmUgT1BFTlNTTF9OT19JREVBCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19KUEFLRQorIyBkZWZpbmUgT1BFTlNTTF9OT19KUEFLRQorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fS1JCNQorIyBkZWZpbmUgT1BFTlNTTF9OT19LUkI1CisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19MT0NLSU5HCisjIGRlZmluZSBPUEVOU1NMX05PX0xPQ0tJTkcKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX01EMgorIyBkZWZpbmUgT1BFTlNTTF9OT19NRDIKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX01ENAorIyBkZWZpbmUgT1BFTlNTTF9OT19NRDQKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX01ENQorIyBkZWZpbmUgT1BFTlNTTF9OT19NRDUKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX01EQzIKKyMgZGVmaW5lIE9QRU5TU0xfTk9fTURDMgorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fT0NTUAorIyBkZWZpbmUgT1BFTlNTTF9OT19PQ1NQCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19QRU0KKyMgZGVmaW5lIE9QRU5TU0xfTk9fUEVNCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19QS0NTMTIKKyMgZGVmaW5lIE9QRU5TU0xfTk9fUEtDUzEyCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19QUVVFVUUKKyMgZGVmaW5lIE9QRU5TU0xfTk9fUFFVRVVFCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19SQzIKKyMgZGVmaW5lIE9QRU5TU0xfTk9fUkMyCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19SQzQKKyMgZGVmaW5lIE9QRU5TU0xfTk9fUkM0CisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19SQzUKKyMgZGVmaW5lIE9QRU5TU0xfTk9fUkM1CisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19SRFJBTkQKKyMgZGVmaW5lIE9QRU5TU0xfTk9fUkRSQU5ECisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19SRkMzNzc5CisjIGRlZmluZSBPUEVOU1NMX05PX1JGQzM3NzkKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1JJUEVNRAorIyBkZWZpbmUgT1BFTlNTTF9OT19SSVBFTUQKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1JTQVgKKyMgZGVmaW5lIE9QRU5TU0xfTk9fUlNBWAorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fU0NUUAorIyBkZWZpbmUgT1BFTlNTTF9OT19TQ1RQCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19TRUVECisjIGRlZmluZSBPUEVOU1NMX05PX1NFRUQKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1NIQTAKKyMgZGVmaW5lIE9QRU5TU0xfTk9fU0hBMAorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fU1JQCisjIGRlZmluZSBPUEVOU1NMX05PX1NSUAorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fU1NMMgorIyBkZWZpbmUgT1BFTlNTTF9OT19TU0wyCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19TU0wzCisjIGRlZmluZSBPUEVOU1NMX05PX1NTTDMKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1NUQVRJQ19FTkdJTkUKKyMgZGVmaW5lIE9QRU5TU0xfTk9fU1RBVElDX0VOR0lORQorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fU1RPUkUKKyMgZGVmaW5lIE9QRU5TU0xfTk9fU1RPUkUKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1RMUzEKKyMgZGVmaW5lIE9QRU5TU0xfTk9fVExTMQorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fVExTRVhUCisjIGRlZmluZSBPUEVOU1NMX05PX1RMU0VYVAorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fVFMKKyMgZGVmaW5lIE9QRU5TU0xfTk9fVFMKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1RYVF9EQgorIyBkZWZpbmUgT1BFTlNTTF9OT19UWFRfREIKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1VJCisjIGRlZmluZSBPUEVOU1NMX05PX1VJCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19XSElSTFBPT0wKKyMgZGVmaW5lIE9QRU5TU0xfTk9fV0hJUkxQT09MCisjZW5kaWYKKworI2VuZGlmIC8qIE9QRU5TU0xfRE9JTkdfTUFLRURFUEVORCAqLworCisjaWZuZGVmIE9QRU5TU0xfTk9fRVJSCisjIGRlZmluZSBPUEVOU1NMX05PX0VSUgorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fRFlOQU1JQ19FTkdJTkUKKyMgZGVmaW5lIE9QRU5TU0xfTk9fRFlOQU1JQ19FTkdJTkUKKyNlbmRpZgorCisvKiBUaGUgT1BFTlNTTF9OT18qIG1hY3JvcyBhcmUgYWxzbyBkZWZpbmVkIGFzIE5PXyogaWYgdGhlIGFwcGxpY2F0aW9uCisgICBhc2tzIGZvciBpdC4gIFRoaXMgaXMgYSB0cmFuc2llbnQgZmVhdHVyZSB0aGF0IGlzIHByb3ZpZGVkIGZvciB0aG9zZQorICAgd2hvIGhhdmVuJ3QgaGFkIHRoZSB0aW1lIHRvIGRvIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGluIHRoZWlyCisgICBhcHBsaWNhdGlvbnMuICAqLworI2lmZGVmIE9QRU5TU0xfQUxHT1JJVEhNX0RFRklORVMKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX0NBTUVMTElBKSAmJiAhZGVmaW5lZChOT19DQU1FTExJQSkKKyMgIGRlZmluZSBOT19DQU1FTExJQQorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fQ0FQSUVORykgJiYgIWRlZmluZWQoTk9fQ0FQSUVORykKKyMgIGRlZmluZSBOT19DQVBJRU5HCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19DQVNUKSAmJiAhZGVmaW5lZChOT19DQVNUKQorIyAgZGVmaW5lIE5PX0NBU1QKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX0NNUykgJiYgIWRlZmluZWQoTk9fQ01TKQorIyAgZGVmaW5lIE5PX0NNUworIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fQ09NUCkgJiYgIWRlZmluZWQoTk9fQ09NUCkKKyMgIGRlZmluZSBOT19DT01QCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19DT05GKSAmJiAhZGVmaW5lZChOT19DT05GKQorIyAgZGVmaW5lIE5PX0NPTkYKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX0RFUykgJiYgIWRlZmluZWQoTk9fREVTKQorIyAgZGVmaW5lIE5PX0RFUworIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fRFRMUzEpICYmICFkZWZpbmVkKE5PX0RUTFMxKQorIyAgZGVmaW5lIE5PX0RUTFMxCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19FQ19OSVNUUF82NF9HQ0NfMTI4KSAmJiAhZGVmaW5lZChOT19FQ19OSVNUUF82NF9HQ0NfMTI4KQorIyAgZGVmaW5lIE5PX0VDX05JU1RQXzY0X0dDQ18xMjgKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX0dNUCkgJiYgIWRlZmluZWQoTk9fR01QKQorIyAgZGVmaW5lIE5PX0dNUAorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fR09TVCkgJiYgIWRlZmluZWQoTk9fR09TVCkKKyMgIGRlZmluZSBOT19HT1NUCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19IRUFSVEJFQVRTKSAmJiAhZGVmaW5lZChOT19IRUFSVEJFQVRTKQorIyAgZGVmaW5lIE5PX0hFQVJUQkVBVFMKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX0lERUEpICYmICFkZWZpbmVkKE5PX0lERUEpCisjICBkZWZpbmUgTk9fSURFQQorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fSlBBS0UpICYmICFkZWZpbmVkKE5PX0pQQUtFKQorIyAgZGVmaW5lIE5PX0pQQUtFCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19LUkI1KSAmJiAhZGVmaW5lZChOT19LUkI1KQorIyAgZGVmaW5lIE5PX0tSQjUKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX0xPQ0tJTkcpICYmICFkZWZpbmVkKE5PX0xPQ0tJTkcpCisjICBkZWZpbmUgTk9fTE9DS0lORworIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fTUQyKSAmJiAhZGVmaW5lZChOT19NRDIpCisjICBkZWZpbmUgTk9fTUQyCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19NRDQpICYmICFkZWZpbmVkKE5PX01ENCkKKyMgIGRlZmluZSBOT19NRDQKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX01ENSkgJiYgIWRlZmluZWQoTk9fTUQ1KQorIyAgZGVmaW5lIE5PX01ENQorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fTURDMikgJiYgIWRlZmluZWQoTk9fTURDMikKKyMgIGRlZmluZSBOT19NREMyCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19PQ1NQKSAmJiAhZGVmaW5lZChOT19PQ1NQKQorIyAgZGVmaW5lIE5PX09DU1AKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1BFTSkgJiYgIWRlZmluZWQoTk9fUEVNKQorIyAgZGVmaW5lIE5PX1BFTQorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fUEtDUzEyKSAmJiAhZGVmaW5lZChOT19QS0NTMTIpCisjICBkZWZpbmUgTk9fUEtDUzEyCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19QUVVFVUUpICYmICFkZWZpbmVkKE5PX1BRVUVVRSkKKyMgIGRlZmluZSBOT19QUVVFVUUKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1JDMikgJiYgIWRlZmluZWQoTk9fUkMyKQorIyAgZGVmaW5lIE5PX1JDMgorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fUkM0KSAmJiAhZGVmaW5lZChOT19SQzQpCisjICBkZWZpbmUgTk9fUkM0CisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19SQzUpICYmICFkZWZpbmVkKE5PX1JDNSkKKyMgIGRlZmluZSBOT19SQzUKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1JEUkFORCkgJiYgIWRlZmluZWQoTk9fUkRSQU5EKQorIyAgZGVmaW5lIE5PX1JEUkFORAorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fUkZDMzc3OSkgJiYgIWRlZmluZWQoTk9fUkZDMzc3OSkKKyMgIGRlZmluZSBOT19SRkMzNzc5CisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19SSVBFTUQpICYmICFkZWZpbmVkKE5PX1JJUEVNRCkKKyMgIGRlZmluZSBOT19SSVBFTUQKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1JTQVgpICYmICFkZWZpbmVkKE5PX1JTQVgpCisjICBkZWZpbmUgTk9fUlNBWAorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fU0NUUCkgJiYgIWRlZmluZWQoTk9fU0NUUCkKKyMgIGRlZmluZSBOT19TQ1RQCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19TRUVEKSAmJiAhZGVmaW5lZChOT19TRUVEKQorIyAgZGVmaW5lIE5PX1NFRUQKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1NIQTApICYmICFkZWZpbmVkKE5PX1NIQTApCisjICBkZWZpbmUgTk9fU0hBMAorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fU1JQKSAmJiAhZGVmaW5lZChOT19TUlApCisjICBkZWZpbmUgTk9fU1JQCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19TU0wyKSAmJiAhZGVmaW5lZChOT19TU0wyKQorIyAgZGVmaW5lIE5PX1NTTDIKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1NTTDMpICYmICFkZWZpbmVkKE5PX1NTTDMpCisjICBkZWZpbmUgTk9fU1NMMworIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fU1RBVElDX0VOR0lORSkgJiYgIWRlZmluZWQoTk9fU1RBVElDX0VOR0lORSkKKyMgIGRlZmluZSBOT19TVEFUSUNfRU5HSU5FCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19TVE9SRSkgJiYgIWRlZmluZWQoTk9fU1RPUkUpCisjICBkZWZpbmUgTk9fU1RPUkUKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1RMUzEpICYmICFkZWZpbmVkKE5PX1RMUzEpCisjICBkZWZpbmUgTk9fVExTMQorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fVExTRVhUKSAmJiAhZGVmaW5lZChOT19UTFNFWFQpCisjICBkZWZpbmUgTk9fVExTRVhUCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19UUykgJiYgIWRlZmluZWQoTk9fVFMpCisjICBkZWZpbmUgTk9fVFMKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1RYVF9EQikgJiYgIWRlZmluZWQoTk9fVFhUX0RCKQorIyAgZGVmaW5lIE5PX1RYVF9EQgorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fVUkpICYmICFkZWZpbmVkKE5PX1VJKQorIyAgZGVmaW5lIE5PX1VJCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19XSElSTFBPT0wpICYmICFkZWZpbmVkKE5PX1dISVJMUE9PTCkKKyMgIGRlZmluZSBOT19XSElSTFBPT0wKKyMgZW5kaWYKKyNlbmRpZgorCisvKiBjcnlwdG8vb3BlbnNzbGNvbmYuaC5pbiAqLworCisvKiBHZW5lcmF0ZSA4MDM4NiBjb2RlPyAqLworI3VuZGVmIEkzODZfT05MWQorCisjaWYgIShkZWZpbmVkKFZNUykgfHwgZGVmaW5lZChfX1ZNUykpIC8qIFZNUyB1c2VzIGxvZ2ljYWwgbmFtZXMgaW5zdGVhZCAqLworI2lmIGRlZmluZWQoSEVBREVSX0NSWVBUTElCX0gpICYmICFkZWZpbmVkKE9QRU5TU0xESVIpCisjZGVmaW5lIEVOR0lORVNESVIgIi91c3IvbG9jYWwvc3NsL2xpYi9lbmdpbmVzIgorI2RlZmluZSBPUEVOU1NMRElSICIvdXNyL2xvY2FsL3NzbCIKKyNlbmRpZgorI2VuZGlmCisKKyN1bmRlZiBPUEVOU1NMX1VOSVNURAorI2RlZmluZSBPUEVOU1NMX1VOSVNURCA8dHJ1c3R5X3N0ZC5oPgorCisjdW5kZWYgT1BFTlNTTF9FWFBPUlRfVkFSX0FTX0ZVTkNUSU9OCisKKyNpZiBkZWZpbmVkKEhFQURFUl9JREVBX0gpICYmICFkZWZpbmVkKElERUFfSU5UKQorI2RlZmluZSBJREVBX0lOVCB1bnNpZ25lZCBpbnQKKyNlbmRpZgorCisjaWYgZGVmaW5lZChIRUFERVJfTUQyX0gpICYmICFkZWZpbmVkKE1EMl9JTlQpCisjZGVmaW5lIE1EMl9JTlQgdW5zaWduZWQgaW50CisjZW5kaWYKKworI2lmIGRlZmluZWQoSEVBREVSX1JDMl9IKSAmJiAhZGVmaW5lZChSQzJfSU5UKQorLyogSSBuZWVkIHRvIHB1dCBpbiBhIG1vZCBmb3IgdGhlIGFscGhhIC0gZWF5ICovCisjZGVmaW5lIFJDMl9JTlQgdW5zaWduZWQgaW50CisjZW5kaWYKKworI2lmIGRlZmluZWQoSEVBREVSX1JDNF9IKQorI2lmICFkZWZpbmVkKFJDNF9JTlQpCisvKiB1c2luZyBpbnQgdHlwZXMgbWFrZSB0aGUgc3RydWN0dXJlIGxhcmdlciBidXQgbWFrZSB0aGUgY29kZSBmYXN0ZXIKKyAqIG9uIG1vc3QgYm94ZXMgSSBoYXZlIHRlc3RlZCAtIHVwIHRvICUyMCBmYXN0ZXIuICovCisvKgorICogSSBkb24ndCBrbm93IHdoYXQgZG9lcyAibW9zdCIgbWVhbiwgYnV0IGRlY2xhcmluZyAiaW50IiBpcyBhIG11c3Qgb246CisgKiAtIEludGVsIFA2IGJlY2F1c2UgcGFydGlhbCByZWdpc3RlciBzdGFsbHMgYXJlIHZlcnkgZXhwZW5zaXZlOworICogLSBlbGRlciBBbHBoYSBiZWNhdXNlIGl0IGxhY2tzIGJ5dGUgbG9hZC9zdG9yZSBpbnN0cnVjdGlvbnM7CisgKi8KKyNkZWZpbmUgUkM0X0lOVCB1bnNpZ25lZCBpbnQKKyNlbmRpZgorI2lmICFkZWZpbmVkKFJDNF9DSFVOSykKKy8qCisgKiBUaGlzIGVuYWJsZXMgY29kZSBoYW5kbGluZyBkYXRhIGFsaWduZWQgYXQgbmF0dXJhbCBDUFUgd29yZAorICogYm91bmRhcnkuIFNlZSBjcnlwdG8vcmM0L3JjNF9lbmMuYyBmb3IgZnVydGhlciBkZXRhaWxzLgorICovCisjdW5kZWYgUkM0X0NIVU5LCisjZW5kaWYKKyNlbmRpZgorCisjaWYgKGRlZmluZWQoSEVBREVSX05FV19ERVNfSCkgfHwgZGVmaW5lZChIRUFERVJfREVTX0gpKSAmJiAhZGVmaW5lZChERVNfTE9ORykKKy8qIElmIHRoaXMgaXMgc2V0IHRvICd1bnNpZ25lZCBpbnQnIG9uIGEgREVDIEFscGhhLCB0aGlzIGdpdmVzIGFib3V0IGEKKyAqICUyMCBzcGVlZCB1cCAobG9uZ3MgYXJlIDggYnl0ZXMsIGludCdzIGFyZSA0KS4gKi8KKyNpZm5kZWYgREVTX0xPTkcKKyNkZWZpbmUgREVTX0xPTkcgdW5zaWduZWQgbG9uZworI2VuZGlmCisjZW5kaWYKKworI2lmIGRlZmluZWQoSEVBREVSX0JOX0gpICYmICFkZWZpbmVkKENPTkZJR19IRUFERVJfQk5fSCkKKyNkZWZpbmUgQ09ORklHX0hFQURFUl9CTl9ICisjdW5kZWYgQk5fTExPTkcKKworLyogU2hvdWxkIHdlIGRlZmluZSBCTl9ESVYyVyBoZXJlPyAqLworCisvKiBPbmx5IG9uZSBmb3IgdGhlIGZvbGxvd2luZyBzaG91bGQgYmUgZGVmaW5lZCAqLworI3VuZGVmIFNJWFRZX0ZPVVJfQklUX0xPTkcKKyN1bmRlZiBTSVhUWV9GT1VSX0JJVAorI2RlZmluZSBUSElSVFlfVFdPX0JJVAorI2VuZGlmCisKKyNpZiBkZWZpbmVkKEhFQURFUl9SQzRfTE9DTF9IKSAmJiAhZGVmaW5lZChDT05GSUdfSEVBREVSX1JDNF9MT0NMX0gpCisjZGVmaW5lIENPTkZJR19IRUFERVJfUkM0X0xPQ0xfSAorLyogaWYgdGhpcyBpcyBkZWZpbmVkIGRhdGFbaV0gaXMgdXNlZCBpbnN0ZWFkIG9mICpkYXRhLCB0aGlzIGlzIGEgJTIwCisgKiBzcGVlZHVwIG9uIHg4NiAqLworI3VuZGVmIFJDNF9JTkRFWAorI2VuZGlmCisKKyNpZiBkZWZpbmVkKEhFQURFUl9CRl9MT0NMX0gpICYmICFkZWZpbmVkKENPTkZJR19IRUFERVJfQkZfTE9DTF9IKQorI2RlZmluZSBDT05GSUdfSEVBREVSX0JGX0xPQ0xfSAorI3VuZGVmIEJGX1BUUgorI2VuZGlmIC8qIEhFQURFUl9CRl9MT0NMX0ggKi8KKworI2lmIGRlZmluZWQoSEVBREVSX0RFU19MT0NMX0gpICYmICFkZWZpbmVkKENPTkZJR19IRUFERVJfREVTX0xPQ0xfSCkKKyNkZWZpbmUgQ09ORklHX0hFQURFUl9ERVNfTE9DTF9ICisjaWZuZGVmIERFU19ERUZBVUxUX09QVElPTlMKKy8qIHRoZSBmb2xsb3dpbmcgaXMgdHdlYWtlZCBmcm9tIGEgY29uZmlnIHNjcmlwdCwgdGhhdCBpcyB3aHkgaXQgaXMgYQorICogcHJvdGVjdGVkIHVuZGVmL2RlZmluZSAqLworI2lmbmRlZiBERVNfUFRSCisjdW5kZWYgREVTX1BUUgorI2VuZGlmCisKKy8qIFRoaXMgaGVscHMgQyBjb21waWxlciBnZW5lcmF0ZSB0aGUgY29ycmVjdCBjb2RlIGZvciBtdWx0aXBsZSBmdW5jdGlvbmFsCisgKiB1bml0cy4gIEl0IHJlZHVjZXMgcmVnaXN0ZXIgZGVwZW5kYW5jaWVzIGF0IHRoZSBleHBlbnNlIG9mIDIgbW9yZQorICogcmVnaXN0ZXJzICovCisjaWZuZGVmIERFU19SSVNDMQorI3VuZGVmIERFU19SSVNDMQorI2VuZGlmCisKKyNpZm5kZWYgREVTX1JJU0MyCisjdW5kZWYgREVTX1JJU0MyCisjZW5kaWYKKworI2lmIGRlZmluZWQoREVTX1JJU0MxKSAmJiBkZWZpbmVkKERFU19SSVNDMikKK1lPVSBTSE9VTEQgTk9UIEhBVkUgQk9USCBERVNfUklTQzEgQU5EIERFU19SSVNDMiBERUZJTkVEISEhISEKKyNlbmRpZgorCisvKiBVbnJvbGwgdGhlIGlubmVyIGxvb3AsIHRoaXMgc29tZXRpbWVzIGhlbHBzLCBzb21ldGltZXMgaGluZGVycy4KKyAqIFZlcnkgbXVjeSBDUFUgZGVwZW5kYW50ICovCisjaWZuZGVmIERFU19VTlJPTEwKKyN1bmRlZiBERVNfVU5ST0xMCisjZW5kaWYKKworLyogVGhlc2UgZGVmYXVsdCB2YWx1ZXMgd2VyZSBzdXBwbGllZCBieQorICogUGV0ZXIgR3V0bWFuIDxwZ3V0MDAxQGNzLmF1Y2tsYW5kLmFjLm56PgorICogVGhleSBhcmUgb25seSB1c2VkIGlmIG5vdGhpbmcgZWxzZSBoYXMgYmVlbiBkZWZpbmVkICovCisjaWYgIWRlZmluZWQoREVTX1BUUikgJiYgIWRlZmluZWQoREVTX1JJU0MxKSAmJiAhZGVmaW5lZChERVNfUklTQzIpICYmICFkZWZpbmVkKERFU19VTlJPTEwpCisvKiBTcGVjaWFsIGRlZmluZXMgd2hpY2ggY2hhbmdlIHRoZSB3YXkgdGhlIGNvZGUgaXMgYnVpbHQgZGVwZW5kaW5nIG9uIHRoZQorICAgQ1BVIGFuZCBPUy4gIEZvciBTR0kgbWFjaGluZXMgeW91IGNhbiB1c2UgX01JUFNfU1pMT05HICgzMiBvciA2NCkgdG8gZmluZAorICAgZXZlbiBuZXdlciBNSVBTIENQVSdzLCBidXQgYXQgdGhlIG1vbWVudCBvbmUgc2l6ZSBmaXRzIGFsbCBmb3IKKyAgIG9wdGltaXphdGlvbiBvcHRpb25zLiAgT2xkZXIgU3BhcmMncyB3b3JrIGJldHRlciB3aXRoIG9ubHkgVU5ST0xMLCBidXQKKyAgIHRoZXJlJ3Mgbm8gd2F5IHRvIHRlbGwgYXQgY29tcGlsZSB0aW1lIHdoYXQgaXQgaXMgeW91J3JlIHJ1bm5pbmcgb24gKi8KKyAKKyNpZiBkZWZpbmVkKCBzdW4gKQkJLyogTmV3ZXIgU3BhcmMncyAqLworIyAgZGVmaW5lIERFU19QVFIKKyMgIGRlZmluZSBERVNfUklTQzEKKyMgIGRlZmluZSBERVNfVU5ST0xMCisjZWxpZiBkZWZpbmVkKCBfX3VsdHJpeCApCS8qIE9sZGVyIE1JUFMgKi8KKyMgIGRlZmluZSBERVNfUFRSCisjICBkZWZpbmUgREVTX1JJU0MyCisjICBkZWZpbmUgREVTX1VOUk9MTAorI2VsaWYgZGVmaW5lZCggX19vc2YxX18gKQkvKiBBbHBoYSAqLworIyAgZGVmaW5lIERFU19QVFIKKyMgIGRlZmluZSBERVNfUklTQzIKKyNlbGlmIGRlZmluZWQgKCBfQUlYICkJCS8qIFJTNjAwMCAqLworICAvKiBVbmtub3duICovCisjZWxpZiBkZWZpbmVkKCBfX2hwdXggKQkJLyogSFAtUEEgKi8KKyAgLyogVW5rbm93biAqLworI2VsaWYgZGVmaW5lZCggX19hdXggKQkJLyogNjhLICovCisgIC8qIFVua25vd24gKi8KKyNlbGlmIGRlZmluZWQoIF9fZGd1eCApCQkvKiA4OEsgKGJ1dCBQNiBpbiBsYXRlc3QgYm94ZXMpICovCisjICBkZWZpbmUgREVTX1VOUk9MTAorI2VsaWYgZGVmaW5lZCggX19zZ2kgKQkJLyogTmV3ZXIgTUlQUyAqLworIyAgZGVmaW5lIERFU19QVFIKKyMgIGRlZmluZSBERVNfUklTQzIKKyMgIGRlZmluZSBERVNfVU5ST0xMCisjZWxpZiBkZWZpbmVkKGkzODYpIHx8IGRlZmluZWQoX19pMzg2X18pCS8qIHg4NiBib3hlcywgc2hvdWxkIGJlIGdjYyAqLworIyAgZGVmaW5lIERFU19QVFIKKyMgIGRlZmluZSBERVNfUklTQzEKKyMgIGRlZmluZSBERVNfVU5ST0xMCisjZW5kaWYgLyogU3lzdGVtcy1zcGVjaWZpYyBzcGVlZCBkZWZpbmVzICovCisjZW5kaWYKKworI2VuZGlmIC8qIERFU19ERUZBVUxUX09QVElPTlMgKi8KKyNlbmRpZiAvKiBIRUFERVJfREVTX0xPQ0xfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9vcGVuc3NsL29wZW5zc2xjb25mLXN0YXRpYy5oIGIvaW5jbHVkZS9vcGVuc3NsL29wZW5zc2xjb25mLXN0YXRpYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2M2E2ZTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbGNvbmYtc3RhdGljLmgKQEAgLTAsMCArMSw2IEBACisvLyBBdXRvLWdlbmVyYXRlZCAtIERPIE5PVCBFRElUIQorI2lmIGRlZmluZWQoX19MUDY0X18pCisjaW5jbHVkZSAib3BlbnNzbGNvbmYtc3RhdGljLTY0LmgiCisjZWxzZQorI2luY2x1ZGUgIm9wZW5zc2xjb25mLXN0YXRpYy0zMi5oIgorI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbGNvbmYtdHJ1c3R5LmggYi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbGNvbmYtdHJ1c3R5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDZmOWY5OAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3NsY29uZi10cnVzdHkuaApAQCAtMCwwICsxLDQ0OCBAQAorLyogb3BlbnNzbGNvbmYuaCAqLworLyogV0FSTklORzogR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgZnJvbSBvcGVuc3NsY29uZi5oLmluIGJ5IENvbmZpZ3VyZS4gKi8KKworLyogT3BlblNTTCB3YXMgY29uZmlndXJlZCB3aXRoIHRoZSBmb2xsb3dpbmcgb3B0aW9uczogKi8KKyNpZm5kZWYgT1BFTlNTTF9ET0lOR19NQUtFREVQRU5ECisKKworI2lmbmRlZiBPUEVOU1NMX05PX0NBTUVMTElBCisjIGRlZmluZSBPUEVOU1NMX05PX0NBTUVMTElBCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19DQVBJRU5HCisjIGRlZmluZSBPUEVOU1NMX05PX0NBUElFTkcKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX0NBU1QKKyMgZGVmaW5lIE9QRU5TU0xfTk9fQ0FTVAorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fQ01TCisjIGRlZmluZSBPUEVOU1NMX05PX0NNUworI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fQ09NUAorIyBkZWZpbmUgT1BFTlNTTF9OT19DT01QCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19DT05GCisjIGRlZmluZSBPUEVOU1NMX05PX0NPTkYKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX0RFUworIyBkZWZpbmUgT1BFTlNTTF9OT19ERVMKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX0RUTFMxCisjIGRlZmluZSBPUEVOU1NMX05PX0RUTFMxCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19FQ19OSVNUUF82NF9HQ0NfMTI4CisjIGRlZmluZSBPUEVOU1NMX05PX0VDX05JU1RQXzY0X0dDQ18xMjgKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX0dNUAorIyBkZWZpbmUgT1BFTlNTTF9OT19HTVAKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX0dPU1QKKyMgZGVmaW5lIE9QRU5TU0xfTk9fR09TVAorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fSEVBUlRCRUFUUworIyBkZWZpbmUgT1BFTlNTTF9OT19IRUFSVEJFQVRTCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19JREVBCisjIGRlZmluZSBPUEVOU1NMX05PX0lERUEKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX0pQQUtFCisjIGRlZmluZSBPUEVOU1NMX05PX0pQQUtFCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19LUkI1CisjIGRlZmluZSBPUEVOU1NMX05PX0tSQjUKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX0xPQ0tJTkcKKyMgZGVmaW5lIE9QRU5TU0xfTk9fTE9DS0lORworI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fTUQyCisjIGRlZmluZSBPUEVOU1NMX05PX01EMgorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fTUQ0CisjIGRlZmluZSBPUEVOU1NMX05PX01ENAorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fTUQ1CisjIGRlZmluZSBPUEVOU1NMX05PX01ENQorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fTURDMgorIyBkZWZpbmUgT1BFTlNTTF9OT19NREMyCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19PQ1NQCisjIGRlZmluZSBPUEVOU1NMX05PX09DU1AKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1BFTQorIyBkZWZpbmUgT1BFTlNTTF9OT19QRU0KKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1BLQ1MxMgorIyBkZWZpbmUgT1BFTlNTTF9OT19QS0NTMTIKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1BRVUVVRQorIyBkZWZpbmUgT1BFTlNTTF9OT19QUVVFVUUKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1JDMgorIyBkZWZpbmUgT1BFTlNTTF9OT19SQzIKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1JDNAorIyBkZWZpbmUgT1BFTlNTTF9OT19SQzQKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1JDNQorIyBkZWZpbmUgT1BFTlNTTF9OT19SQzUKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1JEUkFORAorIyBkZWZpbmUgT1BFTlNTTF9OT19SRFJBTkQKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1JGQzM3NzkKKyMgZGVmaW5lIE9QRU5TU0xfTk9fUkZDMzc3OQorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fUklQRU1ECisjIGRlZmluZSBPUEVOU1NMX05PX1JJUEVNRAorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fUlNBWAorIyBkZWZpbmUgT1BFTlNTTF9OT19SU0FYCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19TQ1RQCisjIGRlZmluZSBPUEVOU1NMX05PX1NDVFAKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1NFRUQKKyMgZGVmaW5lIE9QRU5TU0xfTk9fU0VFRAorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fU0hBMAorIyBkZWZpbmUgT1BFTlNTTF9OT19TSEEwCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19TUlAKKyMgZGVmaW5lIE9QRU5TU0xfTk9fU1JQCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19TU0wyCisjIGRlZmluZSBPUEVOU1NMX05PX1NTTDIKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1NTTDMKKyMgZGVmaW5lIE9QRU5TU0xfTk9fU1NMMworI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fU1RBVElDX0VOR0lORQorIyBkZWZpbmUgT1BFTlNTTF9OT19TVEFUSUNfRU5HSU5FCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19TVE9SRQorIyBkZWZpbmUgT1BFTlNTTF9OT19TVE9SRQorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fVExTMQorIyBkZWZpbmUgT1BFTlNTTF9OT19UTFMxCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19UTFNFWFQKKyMgZGVmaW5lIE9QRU5TU0xfTk9fVExTRVhUCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19UUworIyBkZWZpbmUgT1BFTlNTTF9OT19UUworI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fVFhUX0RCCisjIGRlZmluZSBPUEVOU1NMX05PX1RYVF9EQgorI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fVUkKKyMgZGVmaW5lIE9QRU5TU0xfTk9fVUkKKyNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1dISVJMUE9PTAorIyBkZWZpbmUgT1BFTlNTTF9OT19XSElSTFBPT0wKKyNlbmRpZgorCisjZW5kaWYgLyogT1BFTlNTTF9ET0lOR19NQUtFREVQRU5EICovCisKKyNpZm5kZWYgT1BFTlNTTF9OT19FUlIKKyMgZGVmaW5lIE9QRU5TU0xfTk9fRVJSCisjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19EWU5BTUlDX0VOR0lORQorIyBkZWZpbmUgT1BFTlNTTF9OT19EWU5BTUlDX0VOR0lORQorI2VuZGlmCisKKy8qIFRoZSBPUEVOU1NMX05PXyogbWFjcm9zIGFyZSBhbHNvIGRlZmluZWQgYXMgTk9fKiBpZiB0aGUgYXBwbGljYXRpb24KKyAgIGFza3MgZm9yIGl0LiAgVGhpcyBpcyBhIHRyYW5zaWVudCBmZWF0dXJlIHRoYXQgaXMgcHJvdmlkZWQgZm9yIHRob3NlCisgICB3aG8gaGF2ZW4ndCBoYWQgdGhlIHRpbWUgdG8gZG8gdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgaW4gdGhlaXIKKyAgIGFwcGxpY2F0aW9ucy4gICovCisjaWZkZWYgT1BFTlNTTF9BTEdPUklUSE1fREVGSU5FUworIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fQ0FNRUxMSUEpICYmICFkZWZpbmVkKE5PX0NBTUVMTElBKQorIyAgZGVmaW5lIE5PX0NBTUVMTElBCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19DQVBJRU5HKSAmJiAhZGVmaW5lZChOT19DQVBJRU5HKQorIyAgZGVmaW5lIE5PX0NBUElFTkcKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX0NBU1QpICYmICFkZWZpbmVkKE5PX0NBU1QpCisjICBkZWZpbmUgTk9fQ0FTVAorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fQ01TKSAmJiAhZGVmaW5lZChOT19DTVMpCisjICBkZWZpbmUgTk9fQ01TCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19DT01QKSAmJiAhZGVmaW5lZChOT19DT01QKQorIyAgZGVmaW5lIE5PX0NPTVAKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX0NPTkYpICYmICFkZWZpbmVkKE5PX0NPTkYpCisjICBkZWZpbmUgTk9fQ09ORgorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fREVTKSAmJiAhZGVmaW5lZChOT19ERVMpCisjICBkZWZpbmUgTk9fREVTCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19EVExTMSkgJiYgIWRlZmluZWQoTk9fRFRMUzEpCisjICBkZWZpbmUgTk9fRFRMUzEKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX0VDX05JU1RQXzY0X0dDQ18xMjgpICYmICFkZWZpbmVkKE5PX0VDX05JU1RQXzY0X0dDQ18xMjgpCisjICBkZWZpbmUgTk9fRUNfTklTVFBfNjRfR0NDXzEyOAorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fR01QKSAmJiAhZGVmaW5lZChOT19HTVApCisjICBkZWZpbmUgTk9fR01QCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19HT1NUKSAmJiAhZGVmaW5lZChOT19HT1NUKQorIyAgZGVmaW5lIE5PX0dPU1QKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX0hFQVJUQkVBVFMpICYmICFkZWZpbmVkKE5PX0hFQVJUQkVBVFMpCisjICBkZWZpbmUgTk9fSEVBUlRCRUFUUworIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fSURFQSkgJiYgIWRlZmluZWQoTk9fSURFQSkKKyMgIGRlZmluZSBOT19JREVBCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19KUEFLRSkgJiYgIWRlZmluZWQoTk9fSlBBS0UpCisjICBkZWZpbmUgTk9fSlBBS0UKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX0tSQjUpICYmICFkZWZpbmVkKE5PX0tSQjUpCisjICBkZWZpbmUgTk9fS1JCNQorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fTE9DS0lORykgJiYgIWRlZmluZWQoTk9fTE9DS0lORykKKyMgIGRlZmluZSBOT19MT0NLSU5HCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19NRDIpICYmICFkZWZpbmVkKE5PX01EMikKKyMgIGRlZmluZSBOT19NRDIKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX01ENCkgJiYgIWRlZmluZWQoTk9fTUQ0KQorIyAgZGVmaW5lIE5PX01ENAorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fTUQ1KSAmJiAhZGVmaW5lZChOT19NRDUpCisjICBkZWZpbmUgTk9fTUQ1CisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19NREMyKSAmJiAhZGVmaW5lZChOT19NREMyKQorIyAgZGVmaW5lIE5PX01EQzIKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX09DU1ApICYmICFkZWZpbmVkKE5PX09DU1ApCisjICBkZWZpbmUgTk9fT0NTUAorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fUEVNKSAmJiAhZGVmaW5lZChOT19QRU0pCisjICBkZWZpbmUgTk9fUEVNCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19QS0NTMTIpICYmICFkZWZpbmVkKE5PX1BLQ1MxMikKKyMgIGRlZmluZSBOT19QS0NTMTIKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1BRVUVVRSkgJiYgIWRlZmluZWQoTk9fUFFVRVVFKQorIyAgZGVmaW5lIE5PX1BRVUVVRQorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fUkMyKSAmJiAhZGVmaW5lZChOT19SQzIpCisjICBkZWZpbmUgTk9fUkMyCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19SQzQpICYmICFkZWZpbmVkKE5PX1JDNCkKKyMgIGRlZmluZSBOT19SQzQKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1JDNSkgJiYgIWRlZmluZWQoTk9fUkM1KQorIyAgZGVmaW5lIE5PX1JDNQorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fUkRSQU5EKSAmJiAhZGVmaW5lZChOT19SRFJBTkQpCisjICBkZWZpbmUgTk9fUkRSQU5ECisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19SRkMzNzc5KSAmJiAhZGVmaW5lZChOT19SRkMzNzc5KQorIyAgZGVmaW5lIE5PX1JGQzM3NzkKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1JJUEVNRCkgJiYgIWRlZmluZWQoTk9fUklQRU1EKQorIyAgZGVmaW5lIE5PX1JJUEVNRAorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fUlNBWCkgJiYgIWRlZmluZWQoTk9fUlNBWCkKKyMgIGRlZmluZSBOT19SU0FYCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19TQ1RQKSAmJiAhZGVmaW5lZChOT19TQ1RQKQorIyAgZGVmaW5lIE5PX1NDVFAKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1NFRUQpICYmICFkZWZpbmVkKE5PX1NFRUQpCisjICBkZWZpbmUgTk9fU0VFRAorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fU0hBMCkgJiYgIWRlZmluZWQoTk9fU0hBMCkKKyMgIGRlZmluZSBOT19TSEEwCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19TUlApICYmICFkZWZpbmVkKE5PX1NSUCkKKyMgIGRlZmluZSBOT19TUlAKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1NTTDIpICYmICFkZWZpbmVkKE5PX1NTTDIpCisjICBkZWZpbmUgTk9fU1NMMgorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fU1NMMykgJiYgIWRlZmluZWQoTk9fU1NMMykKKyMgIGRlZmluZSBOT19TU0wzCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19TVEFUSUNfRU5HSU5FKSAmJiAhZGVmaW5lZChOT19TVEFUSUNfRU5HSU5FKQorIyAgZGVmaW5lIE5PX1NUQVRJQ19FTkdJTkUKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1NUT1JFKSAmJiAhZGVmaW5lZChOT19TVE9SRSkKKyMgIGRlZmluZSBOT19TVE9SRQorIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fVExTMSkgJiYgIWRlZmluZWQoTk9fVExTMSkKKyMgIGRlZmluZSBOT19UTFMxCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19UTFNFWFQpICYmICFkZWZpbmVkKE5PX1RMU0VYVCkKKyMgIGRlZmluZSBOT19UTFNFWFQKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1RTKSAmJiAhZGVmaW5lZChOT19UUykKKyMgIGRlZmluZSBOT19UUworIyBlbmRpZgorIyBpZiBkZWZpbmVkKE9QRU5TU0xfTk9fVFhUX0RCKSAmJiAhZGVmaW5lZChOT19UWFRfREIpCisjICBkZWZpbmUgTk9fVFhUX0RCCisjIGVuZGlmCisjIGlmIGRlZmluZWQoT1BFTlNTTF9OT19VSSkgJiYgIWRlZmluZWQoTk9fVUkpCisjICBkZWZpbmUgTk9fVUkKKyMgZW5kaWYKKyMgaWYgZGVmaW5lZChPUEVOU1NMX05PX1dISVJMUE9PTCkgJiYgIWRlZmluZWQoTk9fV0hJUkxQT09MKQorIyAgZGVmaW5lIE5PX1dISVJMUE9PTAorIyBlbmRpZgorI2VuZGlmCisKKy8qIGNyeXB0by9vcGVuc3NsY29uZi5oLmluICovCisKKy8qIEdlbmVyYXRlIDgwMzg2IGNvZGU/ICovCisjdW5kZWYgSTM4Nl9PTkxZCisKKyNpZiAhKGRlZmluZWQoVk1TKSB8fCBkZWZpbmVkKF9fVk1TKSkgLyogVk1TIHVzZXMgbG9naWNhbCBuYW1lcyBpbnN0ZWFkICovCisjaWYgZGVmaW5lZChIRUFERVJfQ1JZUFRMSUJfSCkgJiYgIWRlZmluZWQoT1BFTlNTTERJUikKKyNkZWZpbmUgRU5HSU5FU0RJUiAiL3Vzci9sb2NhbC9zc2wvbGliL2VuZ2luZXMiCisjZGVmaW5lIE9QRU5TU0xESVIgIi91c3IvbG9jYWwvc3NsIgorI2VuZGlmCisjZW5kaWYKKworI3VuZGVmIE9QRU5TU0xfVU5JU1RECisjZGVmaW5lIE9QRU5TU0xfVU5JU1REIDx0cnVzdHlfc3RkLmg+CisKKyN1bmRlZiBPUEVOU1NMX0VYUE9SVF9WQVJfQVNfRlVOQ1RJT04KKworI2lmIGRlZmluZWQoSEVBREVSX0lERUFfSCkgJiYgIWRlZmluZWQoSURFQV9JTlQpCisjZGVmaW5lIElERUFfSU5UIHVuc2lnbmVkIGludAorI2VuZGlmCisKKyNpZiBkZWZpbmVkKEhFQURFUl9NRDJfSCkgJiYgIWRlZmluZWQoTUQyX0lOVCkKKyNkZWZpbmUgTUQyX0lOVCB1bnNpZ25lZCBpbnQKKyNlbmRpZgorCisjaWYgZGVmaW5lZChIRUFERVJfUkMyX0gpICYmICFkZWZpbmVkKFJDMl9JTlQpCisvKiBJIG5lZWQgdG8gcHV0IGluIGEgbW9kIGZvciB0aGUgYWxwaGEgLSBlYXkgKi8KKyNkZWZpbmUgUkMyX0lOVCB1bnNpZ25lZCBpbnQKKyNlbmRpZgorCisjaWYgZGVmaW5lZChIRUFERVJfUkM0X0gpCisjaWYgIWRlZmluZWQoUkM0X0lOVCkKKy8qIHVzaW5nIGludCB0eXBlcyBtYWtlIHRoZSBzdHJ1Y3R1cmUgbGFyZ2VyIGJ1dCBtYWtlIHRoZSBjb2RlIGZhc3RlcgorICogb24gbW9zdCBib3hlcyBJIGhhdmUgdGVzdGVkIC0gdXAgdG8gJTIwIGZhc3Rlci4gKi8KKy8qCisgKiBJIGRvbid0IGtub3cgd2hhdCBkb2VzICJtb3N0IiBtZWFuLCBidXQgZGVjbGFyaW5nICJpbnQiIGlzIGEgbXVzdCBvbjoKKyAqIC0gSW50ZWwgUDYgYmVjYXVzZSBwYXJ0aWFsIHJlZ2lzdGVyIHN0YWxscyBhcmUgdmVyeSBleHBlbnNpdmU7CisgKiAtIGVsZGVyIEFscGhhIGJlY2F1c2UgaXQgbGFja3MgYnl0ZSBsb2FkL3N0b3JlIGluc3RydWN0aW9uczsKKyAqLworI2RlZmluZSBSQzRfSU5UIHVuc2lnbmVkIGludAorI2VuZGlmCisjaWYgIWRlZmluZWQoUkM0X0NIVU5LKQorLyoKKyAqIFRoaXMgZW5hYmxlcyBjb2RlIGhhbmRsaW5nIGRhdGEgYWxpZ25lZCBhdCBuYXR1cmFsIENQVSB3b3JkCisgKiBib3VuZGFyeS4gU2VlIGNyeXB0by9yYzQvcmM0X2VuYy5jIGZvciBmdXJ0aGVyIGRldGFpbHMuCisgKi8KKyN1bmRlZiBSQzRfQ0hVTksKKyNlbmRpZgorI2VuZGlmCisKKyNpZiAoZGVmaW5lZChIRUFERVJfTkVXX0RFU19IKSB8fCBkZWZpbmVkKEhFQURFUl9ERVNfSCkpICYmICFkZWZpbmVkKERFU19MT05HKQorLyogSWYgdGhpcyBpcyBzZXQgdG8gJ3Vuc2lnbmVkIGludCcgb24gYSBERUMgQWxwaGEsIHRoaXMgZ2l2ZXMgYWJvdXQgYQorICogJTIwIHNwZWVkIHVwIChsb25ncyBhcmUgOCBieXRlcywgaW50J3MgYXJlIDQpLiAqLworI2lmbmRlZiBERVNfTE9ORworI2RlZmluZSBERVNfTE9ORyB1bnNpZ25lZCBsb25nCisjZW5kaWYKKyNlbmRpZgorCisjaWYgZGVmaW5lZChIRUFERVJfQk5fSCkgJiYgIWRlZmluZWQoQ09ORklHX0hFQURFUl9CTl9IKQorI2RlZmluZSBDT05GSUdfSEVBREVSX0JOX0gKKyN1bmRlZiBCTl9MTE9ORworCisvKiBTaG91bGQgd2UgZGVmaW5lIEJOX0RJVjJXIGhlcmU/ICovCisKKy8qIE9ubHkgb25lIGZvciB0aGUgZm9sbG93aW5nIHNob3VsZCBiZSBkZWZpbmVkICovCisjdW5kZWYgU0lYVFlfRk9VUl9CSVRfTE9ORworI3VuZGVmIFNJWFRZX0ZPVVJfQklUCisjZGVmaW5lIFRISVJUWV9UV09fQklUCisjZW5kaWYKKworI2lmIGRlZmluZWQoSEVBREVSX1JDNF9MT0NMX0gpICYmICFkZWZpbmVkKENPTkZJR19IRUFERVJfUkM0X0xPQ0xfSCkKKyNkZWZpbmUgQ09ORklHX0hFQURFUl9SQzRfTE9DTF9ICisvKiBpZiB0aGlzIGlzIGRlZmluZWQgZGF0YVtpXSBpcyB1c2VkIGluc3RlYWQgb2YgKmRhdGEsIHRoaXMgaXMgYSAlMjAKKyAqIHNwZWVkdXAgb24geDg2ICovCisjdW5kZWYgUkM0X0lOREVYCisjZW5kaWYKKworI2lmIGRlZmluZWQoSEVBREVSX0JGX0xPQ0xfSCkgJiYgIWRlZmluZWQoQ09ORklHX0hFQURFUl9CRl9MT0NMX0gpCisjZGVmaW5lIENPTkZJR19IRUFERVJfQkZfTE9DTF9ICisjdW5kZWYgQkZfUFRSCisjZW5kaWYgLyogSEVBREVSX0JGX0xPQ0xfSCAqLworCisjaWYgZGVmaW5lZChIRUFERVJfREVTX0xPQ0xfSCkgJiYgIWRlZmluZWQoQ09ORklHX0hFQURFUl9ERVNfTE9DTF9IKQorI2RlZmluZSBDT05GSUdfSEVBREVSX0RFU19MT0NMX0gKKyNpZm5kZWYgREVTX0RFRkFVTFRfT1BUSU9OUworLyogdGhlIGZvbGxvd2luZyBpcyB0d2Vha2VkIGZyb20gYSBjb25maWcgc2NyaXB0LCB0aGF0IGlzIHdoeSBpdCBpcyBhCisgKiBwcm90ZWN0ZWQgdW5kZWYvZGVmaW5lICovCisjaWZuZGVmIERFU19QVFIKKyN1bmRlZiBERVNfUFRSCisjZW5kaWYKKworLyogVGhpcyBoZWxwcyBDIGNvbXBpbGVyIGdlbmVyYXRlIHRoZSBjb3JyZWN0IGNvZGUgZm9yIG11bHRpcGxlIGZ1bmN0aW9uYWwKKyAqIHVuaXRzLiAgSXQgcmVkdWNlcyByZWdpc3RlciBkZXBlbmRhbmNpZXMgYXQgdGhlIGV4cGVuc2Ugb2YgMiBtb3JlCisgKiByZWdpc3RlcnMgKi8KKyNpZm5kZWYgREVTX1JJU0MxCisjdW5kZWYgREVTX1JJU0MxCisjZW5kaWYKKworI2lmbmRlZiBERVNfUklTQzIKKyN1bmRlZiBERVNfUklTQzIKKyNlbmRpZgorCisjaWYgZGVmaW5lZChERVNfUklTQzEpICYmIGRlZmluZWQoREVTX1JJU0MyKQorWU9VIFNIT1VMRCBOT1QgSEFWRSBCT1RIIERFU19SSVNDMSBBTkQgREVTX1JJU0MyIERFRklORUQhISEhIQorI2VuZGlmCisKKy8qIFVucm9sbCB0aGUgaW5uZXIgbG9vcCwgdGhpcyBzb21ldGltZXMgaGVscHMsIHNvbWV0aW1lcyBoaW5kZXJzLgorICogVmVyeSBtdWN5IENQVSBkZXBlbmRhbnQgKi8KKyNpZm5kZWYgREVTX1VOUk9MTAorI3VuZGVmIERFU19VTlJPTEwKKyNlbmRpZgorCisvKiBUaGVzZSBkZWZhdWx0IHZhbHVlcyB3ZXJlIHN1cHBsaWVkIGJ5CisgKiBQZXRlciBHdXRtYW4gPHBndXQwMDFAY3MuYXVja2xhbmQuYWMubno+CisgKiBUaGV5IGFyZSBvbmx5IHVzZWQgaWYgbm90aGluZyBlbHNlIGhhcyBiZWVuIGRlZmluZWQgKi8KKyNpZiAhZGVmaW5lZChERVNfUFRSKSAmJiAhZGVmaW5lZChERVNfUklTQzEpICYmICFkZWZpbmVkKERFU19SSVNDMikgJiYgIWRlZmluZWQoREVTX1VOUk9MTCkKKy8qIFNwZWNpYWwgZGVmaW5lcyB3aGljaCBjaGFuZ2UgdGhlIHdheSB0aGUgY29kZSBpcyBidWlsdCBkZXBlbmRpbmcgb24gdGhlCisgICBDUFUgYW5kIE9TLiAgRm9yIFNHSSBtYWNoaW5lcyB5b3UgY2FuIHVzZSBfTUlQU19TWkxPTkcgKDMyIG9yIDY0KSB0byBmaW5kCisgICBldmVuIG5ld2VyIE1JUFMgQ1BVJ3MsIGJ1dCBhdCB0aGUgbW9tZW50IG9uZSBzaXplIGZpdHMgYWxsIGZvcgorICAgb3B0aW1pemF0aW9uIG9wdGlvbnMuICBPbGRlciBTcGFyYydzIHdvcmsgYmV0dGVyIHdpdGggb25seSBVTlJPTEwsIGJ1dAorICAgdGhlcmUncyBubyB3YXkgdG8gdGVsbCBhdCBjb21waWxlIHRpbWUgd2hhdCBpdCBpcyB5b3UncmUgcnVubmluZyBvbiAqLworIAorI2lmIGRlZmluZWQoIHN1biApCQkvKiBOZXdlciBTcGFyYydzICovCisjICBkZWZpbmUgREVTX1BUUgorIyAgZGVmaW5lIERFU19SSVNDMQorIyAgZGVmaW5lIERFU19VTlJPTEwKKyNlbGlmIGRlZmluZWQoIF9fdWx0cml4ICkJLyogT2xkZXIgTUlQUyAqLworIyAgZGVmaW5lIERFU19QVFIKKyMgIGRlZmluZSBERVNfUklTQzIKKyMgIGRlZmluZSBERVNfVU5ST0xMCisjZWxpZiBkZWZpbmVkKCBfX29zZjFfXyApCS8qIEFscGhhICovCisjICBkZWZpbmUgREVTX1BUUgorIyAgZGVmaW5lIERFU19SSVNDMgorI2VsaWYgZGVmaW5lZCAoIF9BSVggKQkJLyogUlM2MDAwICovCisgIC8qIFVua25vd24gKi8KKyNlbGlmIGRlZmluZWQoIF9faHB1eCApCQkvKiBIUC1QQSAqLworICAvKiBVbmtub3duICovCisjZWxpZiBkZWZpbmVkKCBfX2F1eCApCQkvKiA2OEsgKi8KKyAgLyogVW5rbm93biAqLworI2VsaWYgZGVmaW5lZCggX19kZ3V4ICkJCS8qIDg4SyAoYnV0IFA2IGluIGxhdGVzdCBib3hlcykgKi8KKyMgIGRlZmluZSBERVNfVU5ST0xMCisjZWxpZiBkZWZpbmVkKCBfX3NnaSApCQkvKiBOZXdlciBNSVBTICovCisjICBkZWZpbmUgREVTX1BUUgorIyAgZGVmaW5lIERFU19SSVNDMgorIyAgZGVmaW5lIERFU19VTlJPTEwKKyNlbGlmIGRlZmluZWQoaTM4NikgfHwgZGVmaW5lZChfX2kzODZfXykJLyogeDg2IGJveGVzLCBzaG91bGQgYmUgZ2NjICovCisjICBkZWZpbmUgREVTX1BUUgorIyAgZGVmaW5lIERFU19SSVNDMQorIyAgZGVmaW5lIERFU19VTlJPTEwKKyNlbmRpZiAvKiBTeXN0ZW1zLXNwZWNpZmljIHNwZWVkIGRlZmluZXMgKi8KKyNlbmRpZgorCisjZW5kaWYgLyogREVTX0RFRkFVTFRfT1BUSU9OUyAqLworI2VuZGlmIC8qIEhFQURFUl9ERVNfTE9DTF9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbGNvbmYuaCBiL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3NsY29uZi5oCmluZGV4IGQwMDU5MGIuLjk0MjEyYTAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3NsY29uZi5oCisrKyBiL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3NsY29uZi5oCkBAIC0xLDYgKzEsMTAgQEAKIC8vIEF1dG8tZ2VuZXJhdGVkIC0gRE8gTk9UIEVESVQhCisjaWZuZGVmIE9QRU5TU0xfU1lTX1RSVVNUWQogI2lmIGRlZmluZWQoX19MUDY0X18pCiAjaW5jbHVkZSAib3BlbnNzbGNvbmYtNjQuaCIKICNlbHNlCiAjaW5jbHVkZSAib3BlbnNzbGNvbmYtMzIuaCIKICNlbmRpZgorI2Vsc2UKKyNpbmNsdWRlICJvcGVuc3NsY29uZi10cnVzdHkuaCIKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9vcGVuc3NsL29wZW5zc2x2LmggYi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbHYuaAppbmRleCBiMjdhNWJiLi5jM2I2YWNlIDEwMDY0NAotLS0gYS9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbHYuaAorKysgYi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbHYuaApAQCAtMjUsMTEgKzI1LDExIEBACiAgKiAoUHJpb3IgdG8gMC45LjVhIGJldGExLCBhIGRpZmZlcmVudCBzY2hlbWUgd2FzIHVzZWQ6IE1NTk5GRlJCQiBmb3IKICAqICBtYWpvciBtaW5vciBmaXggZmluYWwgcGF0Y2gvYmV0YSkKICAqLwotI2RlZmluZSBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSCTB4MTAwMDEwNmZMCisjZGVmaW5lIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIJMHgxMDAwMTA4ZkwKICNpZmRlZiBPUEVOU1NMX0ZJUFMKLSNkZWZpbmUgT1BFTlNTTF9WRVJTSU9OX1RFWFQJIk9wZW5TU0wgMS4wLjFmLWZpcHMgNiBKYW4gMjAxNCIKKyNkZWZpbmUgT1BFTlNTTF9WRVJTSU9OX1RFWFQJIk9wZW5TU0wgMS4wLjFoLWZpcHMgNSBKdW4gMjAxNCIKICNlbHNlCi0jZGVmaW5lIE9QRU5TU0xfVkVSU0lPTl9URVhUCSJPcGVuU1NMIDEuMC4xZiA2IEphbiAyMDE0IgorI2RlZmluZSBPUEVOU1NMX1ZFUlNJT05fVEVYVAkiT3BlblNTTCAxLjAuMWggNSBKdW4gMjAxNCIKICNlbmRpZgogI2RlZmluZSBPUEVOU1NMX1ZFUlNJT05fUFRFWFQJIiBwYXJ0IG9mICIgT1BFTlNTTF9WRVJTSU9OX1RFWFQKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9vcGVuc3NsL3BrY3M3LmggYi9pbmNsdWRlL29wZW5zc2wvcGtjczcuaAppbmRleCBlNGQ0NDMxLi4wNGY2MDM3IDEwMDY0NAotLS0gYS9pbmNsdWRlL29wZW5zc2wvcGtjczcuaAorKysgYi9pbmNsdWRlL29wZW5zc2wvcGtjczcuaApAQCAtNDUzLDYgKzQ1Myw3IEBACiAjZGVmaW5lIFBLQ1M3X1JfRVJST1JfU0VUVElOR19DSVBIRVIJCQkgMTIxCiAjZGVmaW5lIFBLQ1M3X1JfSU5WQUxJRF9NSU1FX1RZUEUJCQkgMTMxCiAjZGVmaW5lIFBLQ1M3X1JfSU5WQUxJRF9OVUxMX1BPSU5URVIJCQkgMTQzCisjZGVmaW5lIFBLQ1M3X1JfSU5WQUxJRF9TSUdORURfREFUQV9UWVBFCQkgMTU1CiAjZGVmaW5lIFBLQ1M3X1JfTUlNRV9OT19DT05URU5UX1RZUEUJCQkgMTMyCiAjZGVmaW5lIFBLQ1M3X1JfTUlNRV9QQVJTRV9FUlJPUgkJCSAxMzMKICNkZWZpbmUgUEtDUzdfUl9NSU1FX1NJR19QQVJTRV9FUlJPUgkJCSAxMzQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvb3BlbnNzbC9zc2wuaCBiL2luY2x1ZGUvb3BlbnNzbC9zc2wuaAppbmRleCBlMmU5N2YxLi5hODlhYjIzIDEwMDY0NAotLS0gYS9pbmNsdWRlL29wZW5zc2wvc3NsLmgKKysrIGIvaW5jbHVkZS9vcGVuc3NsL3NzbC5oCkBAIC01NDQsNiArNTQ0LDEzIEBACiAjaWZuZGVmIE9QRU5TU0xfTk9fU1JQCiAJY2hhciAqc3JwX3VzZXJuYW1lOwogI2VuZGlmCisKKwkvKiBvcmlnaW5hbF9oYW5kc2hha2VfaGFzaCBjb250YWlucyB0aGUgaGFuZHNoYWtlIGhhc2ggKGVpdGhlcgorCSAqIFNIQS0xK01ENSBvciBTSEEtMiwgZGVwZW5kaW5nIG9uIFRMUyB2ZXJzaW9uKSBmb3IgdGhlIG9yaWdpbmFsLCBmdWxsCisJICogaGFuZHNoYWtlIHRoYXQgY3JlYXRlZCBhIHNlc3Npb24uIFRoaXMgaXMgdXNlZCBieSBDaGFubmVsIElEcyBkdXJpbmcKKwkgKiByZXN1bXB0aW9uLiAqLworCXVuc2lnbmVkIGNoYXIgb3JpZ2luYWxfaGFuZHNoYWtlX2hhc2hbRVZQX01BWF9NRF9TSVpFXTsKKwl1bnNpZ25lZCBpbnQgb3JpZ2luYWxfaGFuZHNoYWtlX2hhc2hfbGVuOwogCX07CiAKICNlbmRpZgpAQCAtNTUzLDcgKzU2MCw3IEBACiAvKiBBbGxvdyBpbml0aWFsIGNvbm5lY3Rpb24gdG8gc2VydmVycyB0aGF0IGRvbid0IHN1cHBvcnQgUkkgKi8KICNkZWZpbmUgU1NMX09QX0xFR0FDWV9TRVJWRVJfQ09OTkVDVAkJCTB4MDAwMDAwMDRMCiAjZGVmaW5lIFNTTF9PUF9ORVRTQ0FQRV9SRVVTRV9DSVBIRVJfQ0hBTkdFX0JVRwkJMHgwMDAwMDAwOEwKLSNkZWZpbmUgU1NMX09QX1NTTFJFRjJfUkVVU0VfQ0VSVF9UWVBFX0JVRwkJMHgwMDAwMDAxMEwKKyNkZWZpbmUgU1NMX09QX1RMU0VYVF9QQURESU5HCQkJCTB4MDAwMDAwMTBMCiAjZGVmaW5lIFNTTF9PUF9NSUNST1NPRlRfQklHX1NTTFYzX0JVRkZFUgkJMHgwMDAwMDAyMEwKICNkZWZpbmUgU1NMX09QX1NBRkFSSV9FQ0RIRV9FQ0RTQV9CVUcJCQkweDAwMDAwMDQwTAogI2RlZmluZSBTU0xfT1BfU1NMRUFZXzA4MF9DTElFTlRfREhfQlVHCQkJMHgwMDAwMDA4MEwKQEAgLTU2Miw2ICs1NjksOCBAQAogCiAvKiBIYXNuJ3QgZG9uZSBhbnl0aGluZyBzaW5jZSBPcGVuU1NMIDAuOS43aCwgcmV0YWluZWQgZm9yIGNvbXBhdGliaWxpdHkgKi8KICNkZWZpbmUgU1NMX09QX01TSUVfU1NMVjJfUlNBX1BBRERJTkcJCQkweDAKKy8qIFJlZmVycyB0byBhbmNpZW50IFNTTFJFRiBhbmQgU1NMdjIsIHJldGFpbmVkIGZvciBjb21wYXRpYmlsaXR5ICovCisjZGVmaW5lIFNTTF9PUF9TU0xSRUYyX1JFVVNFX0NFUlRfVFlQRV9CVUcJCTB4MAogCiAvKiBTU0xfT1BfRE9OVF9JTlNFUlRfRU1QVFlfRlJBR01FTlRTIGlzIHZlc3RpZ2lhbC4gUHJldmlvdXNseSBpdCBkaXNhYmxlZCB0aGUKICAqIGluc2VydGlvbiBvZiBlbXB0eSByZWNvcmRzIGluIENCQyBtb2RlLCBidXQgdGhlIGVtcHR5IHJlY29yZHMgd2VyZSBjb21tb25seQpAQCAtNjQ4LDE2ICs2NTcsMTkgQEAKICAqIFRMUyBvbmx5LikgICJSZWxlYXNlZCIgYnVmZmVycyBhcmUgcHV0IG9udG8gYSBmcmVlLWxpc3QgaW4gdGhlIGNvbnRleHQKICAqIG9yIGp1c3QgZnJlZWQgKGRlcGVuZGluZyBvbiB0aGUgY29udGV4dCdzIHNldHRpbmcgZm9yIGZyZWVsaXN0X21heF9sZW4pLiAqLwogI2RlZmluZSBTU0xfTU9ERV9SRUxFQVNFX0JVRkZFUlMgMHgwMDAwMDAxMEwKKwogLyogU2VuZCB0aGUgY3VycmVudCB0aW1lIGluIHRoZSBSYW5kb20gZmllbGRzIG9mIHRoZSBDbGllbnRIZWxsbyBhbmQKICAqIFNlcnZlckhlbGxvIHJlY29yZHMgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBoeXBvdGhldGljYWwgaW1wbGVtZW50YXRpb25zCiAgKiB0aGF0IHJlcXVpcmUgaXQuCiAgKi8KICNkZWZpbmUgU1NMX01PREVfU0VORF9DTElFTlRIRUxMT19USU1FIDB4MDAwMDAwMjBMCiAjZGVmaW5lIFNTTF9NT0RFX1NFTkRfU0VSVkVSSEVMTE9fVElNRSAweDAwMDAwMDQwTAorCiAvKiBXaGVuIHNldCwgY2xpZW50cyBtYXkgc2VuZCBhcHBsaWNhdGlvbiBkYXRhIGJlZm9yZSByZWNlaXB0IG9mIENDUwogICogYW5kIEZpbmlzaGVkLiAgVGhpcyBtb2RlIGVuYWJsZXMgZnVsbC1oYW5kc2hha2VzIHRvICdjb21wbGV0ZScgaW4KICAqIG9uZSBSVFQuICovCiAjZGVmaW5lIFNTTF9NT0RFX0hBTkRTSEFLRV9DVVRUSFJPVUdIIDB4MDAwMDAwODBMCisKIC8qIFdoZW4gc2V0LCBUTFMgMS4wIGFuZCBTU0x2MywgbXVsdGktYnl0ZSwgQ0JDIHJlY29yZHMgd2lsbCBiZSBzcGxpdCBpbiB0d286CiAgKiB0aGUgZmlyc3QgcmVjb3JkIHdpbGwgY29udGFpbiBhIHNpbmdsZSBieXRlIGFuZCB0aGUgc2Vjb25kIHdpbGwgY29udGFpbiB0aGUKICAqIHJlc3Qgb2YgdGhlIGJ5dGVzLiBUaGlzIGVmZmVjdGl2ZWx5IHJhbmRvbWlzZXMgdGhlIElWIGFuZCBwcmV2ZW50cyBCRUFTVApAQCAtODcxLDYgKzg4Myw5IEBACiAJLyogZ2V0IGNsaWVudCBjZXJ0IGNhbGxiYWNrICovCiAJaW50ICgqY2xpZW50X2NlcnRfY2IpKFNTTCAqc3NsLCBYNTA5ICoqeDUwOSwgRVZQX1BLRVkgKipwa2V5KTsKIAorCS8qIGdldCBjaGFubmVsIGlkIGNhbGxiYWNrICovCisJdm9pZCAoKmNoYW5uZWxfaWRfY2IpKFNTTCAqc3NsLCBFVlBfUEtFWSAqKnBrZXkpOworCiAgICAgLyogY29va2llIGdlbmVyYXRlIGNhbGxiYWNrICovCiAgICAgaW50ICgqYXBwX2dlbl9jb29raWVfY2IpKFNTTCAqc3NsLCB1bnNpZ25lZCBjaGFyICpjb29raWUsIAogICAgICAgICB1bnNpZ25lZCBpbnQgKmNvb2tpZV9sZW4pOwpAQCAtOTMzLDcgKzk0OCw3IEBACiAJICovCiAJdW5zaWduZWQgaW50IG1heF9zZW5kX2ZyYWdtZW50OwogCi0jaWZuZGVmIE9QRU5TU0xfRU5HSU5FCisjaWZuZGVmIE9QRU5TU0xfTk9fRU5HSU5FCiAJLyogRW5naW5lIHRvIHBhc3MgcmVxdWVzdHMgZm9yIGNsaWVudCBjZXJ0cyB0bwogCSAqLwogCUVOR0lORSAqY2xpZW50X2NlcnRfZW5naW5lOwpAQCAtMTAzMyw2ICsxMDQ4LDEwIEBACiAJLyogSWYgdHJ1ZSwgYSBjbGllbnQgd2lsbCBhZHZlcnRpc2UgdGhlIENoYW5uZWwgSUQgZXh0ZW5zaW9uIGFuZCBhCiAJICogc2VydmVyIHdpbGwgZWNobyBpdC4gKi8KIAljaGFyIHRsc2V4dF9jaGFubmVsX2lkX2VuYWJsZWQ7CisJLyogdGxzZXh0X2NoYW5uZWxfaWRfZW5hYmxlZF9uZXcgaXMgYSBoYWNrIHRvIHN1cHBvcnQgYm90aCBvbGQgYW5kIG5ldworCSAqIENoYW5uZWxJRCBzaWduYXR1cmVzLiBJdCBpbmRpY2F0ZXMgdGhhdCBhIGNsaWVudCBzaG91bGQgYWR2ZXJ0aXNlIHRoZQorCSAqIG5ldyBDaGFubmVsSUQgZXh0ZW5zaW9uIG51bWJlci4gKi8KKwljaGFyIHRsc2V4dF9jaGFubmVsX2lkX2VuYWJsZWRfbmV3OwogCS8qIFRoZSBjbGllbnQncyBDaGFubmVsIElEIHByaXZhdGUga2V5LiAqLwogCUVWUF9QS0VZICp0bHNleHRfY2hhbm5lbF9pZF9wcml2YXRlOwogI2VuZGlmCkBAIC0xMDkxLDYgKzExMTAsOCBAQAogdm9pZCAoKlNTTF9DVFhfZ2V0X2luZm9fY2FsbGJhY2soU1NMX0NUWCAqY3R4KSkoY29uc3QgU1NMICpzc2wsaW50IHR5cGUsaW50IHZhbCk7CiB2b2lkIFNTTF9DVFhfc2V0X2NsaWVudF9jZXJ0X2NiKFNTTF9DVFggKmN0eCwgaW50ICgqY2xpZW50X2NlcnRfY2IpKFNTTCAqc3NsLCBYNTA5ICoqeDUwOSwgRVZQX1BLRVkgKipwa2V5KSk7CiBpbnQgKCpTU0xfQ1RYX2dldF9jbGllbnRfY2VydF9jYihTU0xfQ1RYICpjdHgpKShTU0wgKnNzbCwgWDUwOSAqKng1MDksIEVWUF9QS0VZICoqcGtleSk7Cit2b2lkIFNTTF9DVFhfc2V0X2NoYW5uZWxfaWRfY2IoU1NMX0NUWCAqY3R4LCB2b2lkICgqY2hhbm5lbF9pZF9jYikoU1NMICpzc2wsIEVWUF9QS0VZICoqcGtleSkpOwordm9pZCAoKlNTTF9DVFhfZ2V0X2NoYW5uZWxfaWRfY2IoU1NMX0NUWCAqY3R4KSkoU1NMICpzc2wsIEVWUF9QS0VZICoqcGtleSk7CiAjaWZuZGVmIE9QRU5TU0xfTk9fRU5HSU5FCiBpbnQgU1NMX0NUWF9zZXRfY2xpZW50X2NlcnRfZW5naW5lKFNTTF9DVFggKmN0eCwgRU5HSU5FICplKTsKICNlbmRpZgpAQCAtMTE2NywxMiArMTE4OCwxNCBAQAogI2RlZmluZSBTU0xfV1JJVElORwkyCiAjZGVmaW5lIFNTTF9SRUFESU5HCTMKICNkZWZpbmUgU1NMX1g1MDlfTE9PS1VQCTQKKyNkZWZpbmUgU1NMX0NIQU5ORUxfSURfTE9PS1VQCTUKIAogLyogVGhlc2Ugd2lsbCBvbmx5IGJlIHVzZWQgd2hlbiBkb2luZyBub24tYmxvY2tpbmcgSU8gKi8KICNkZWZpbmUgU1NMX3dhbnRfbm90aGluZyhzKQkoU1NMX3dhbnQocykgPT0gU1NMX05PVEhJTkcpCiAjZGVmaW5lIFNTTF93YW50X3JlYWQocykJKFNTTF93YW50KHMpID09IFNTTF9SRUFESU5HKQogI2RlZmluZSBTU0xfd2FudF93cml0ZShzKQkoU1NMX3dhbnQocykgPT0gU1NMX1dSSVRJTkcpCiAjZGVmaW5lIFNTTF93YW50X3g1MDlfbG9va3VwKHMpCShTU0xfd2FudChzKSA9PSBTU0xfWDUwOV9MT09LVVApCisjZGVmaW5lIFNTTF93YW50X2NoYW5uZWxfaWRfbG9va3VwKHMpCShTU0xfd2FudChzKSA9PSBTU0xfQ0hBTk5FTF9JRF9MT09LVVApCiAKICNkZWZpbmUgU1NMX01BQ19GTEFHX1JFQURfTUFDX1NUUkVBTSAxCiAjZGVmaW5lIFNTTF9NQUNfRkxBR19XUklURV9NQUNfU1RSRUFNIDIKQEAgLTEzMjAsNiArMTM0MywxMCBAQAogI2VuZGlmCS8qIE9QRU5TU0xfTk9fS1JCNSAqLwogCiAjaWZuZGVmIE9QRU5TU0xfTk9fUFNLCisJLyogUFNLIGlkZW50aXR5IGhpbnQgaXMgc3RvcmVkIGhlcmUgb25seSB0byBlbmFibGUgc2V0dGluZyBhIGhpbnQgb24gYW4gU1NMIG9iamVjdCBiZWZvcmUgYW4KKwkgKiBTU0xfU0VTU0lPTiBpcyBhc3NvY2lhdGVkIHdpdGggaXQuIE9uY2UgYW4gU1NMX1NFU1NJT04gaXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgU1NMIG9iamVjdCwKKwkgKiB0aGUgcHNrX2lkZW50aXR5X2hpbnQgZnJvbSB0aGUgc2Vzc2lvbiB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdGhpcyBvbmUuICovCisJY2hhciAqcHNrX2lkZW50aXR5X2hpbnQ7CiAJdW5zaWduZWQgaW50ICgqcHNrX2NsaWVudF9jYWxsYmFjaykoU1NMICpzc2wsIGNvbnN0IGNoYXIgKmhpbnQsIGNoYXIgKmlkZW50aXR5LAogCQl1bnNpZ25lZCBpbnQgbWF4X2lkZW50aXR5X2xlbiwgdW5zaWduZWQgY2hhciAqcHNrLAogCQl1bnNpZ25lZCBpbnQgbWF4X3Bza19sZW4pOwpAQCAtMTYwNCw2ICsxNjMxLDcgQEAKICNkZWZpbmUgU1NMX0VSUk9SX1pFUk9fUkVUVVJOCQk2CiAjZGVmaW5lIFNTTF9FUlJPUl9XQU5UX0NPTk5FQ1QJCTcKICNkZWZpbmUgU1NMX0VSUk9SX1dBTlRfQUNDRVBUCQk4CisjZGVmaW5lIFNTTF9FUlJPUl9XQU5UX0NIQU5ORUxfSURfTE9PS1VQCTkKIAogI2RlZmluZSBTU0xfQ1RSTF9ORUVEX1RNUF9SU0EJCQkxCiAjZGVmaW5lIFNTTF9DVFJMX1NFVF9UTVBfUlNBCQkJMgpAQCAtMTc0MywxMCArMTc3MSwxMSBAQAogI2RlZmluZSBTU0xfc2V0X3RtcF9lY2RoKHNzbCxlY2RoKSBcCiAJU1NMX2N0cmwoc3NsLFNTTF9DVFJMX1NFVF9UTVBfRUNESCwwLChjaGFyICopZWNkaCkKIAotLyogU1NMX2VuYWJsZV90bHNfY2hhbm5lbF9pZCBjb25maWd1cmVzIGEgVExTIHNlcnZlciB0byBhY2NlcHQgVExTIGNsaWVudAotICogSURzIGZyb20gY2xpZW50cy4gUmV0dXJucyAxIG9uIHN1Y2Nlc3MuICovCi0jZGVmaW5lIFNTTF9lbmFibGVfdGxzX2NoYW5uZWxfaWQoY3R4KSBcCi0JU1NMX2N0cmwoY3R4LFNTTF9DVFJMX0NIQU5ORUxfSUQsMCxOVUxMKQorLyogU1NMX2VuYWJsZV90bHNfY2hhbm5lbF9pZCBlaXRoZXIgY29uZmlndXJlcyBhIFRMUyBzZXJ2ZXIgdG8gYWNjZXB0IFRMUyBjbGllbnQKKyAqIElEcyBmcm9tIGNsaWVudHMsIG9yIGNvbmZpZ3VyZSBhIGNsaWVudCB0byBzZW5kIFRMUyBjbGllbnQgSURzIHRvIHNlcnZlci4KKyAqIFJldHVybnMgMSBvbiBzdWNjZXNzLiAqLworI2RlZmluZSBTU0xfZW5hYmxlX3Rsc19jaGFubmVsX2lkKHMpIFwKKwlTU0xfY3RybChzLFNTTF9DVFJMX0NIQU5ORUxfSUQsMCxOVUxMKQogLyogU1NMX3NldDFfdGxzX2NoYW5uZWxfaWQgY29uZmlndXJlcyBhIFRMUyBjbGllbnQgdG8gc2VuZCBhIFRMUyBDaGFubmVsIElEIHRvCiAgKiBjb21wYXRpYmxlIHNlcnZlcnMuIHByaXZhdGVfa2V5IG11c3QgYmUgYSBQLTI1NiBFVlBfUEtFWSouIFJldHVybnMgMSBvbgogICogc3VjY2Vzcy4gKi8KQEAgLTE3OTYsNyArMTgyNSw3IEBACiBjaGFyICoJU1NMX0NJUEhFUl9nZXRfdmVyc2lvbihjb25zdCBTU0xfQ0lQSEVSICpjKTsKIGNvbnN0IGNoYXIgKglTU0xfQ0lQSEVSX2dldF9uYW1lKGNvbnN0IFNTTF9DSVBIRVIgKmMpOwogdW5zaWduZWQgbG9uZyAJU1NMX0NJUEhFUl9nZXRfaWQoY29uc3QgU1NMX0NJUEhFUiAqYyk7Ci1jb25zdCBjaGFyKiBTU0xfQ0lQSEVSX2F1dGhlbnRpY2F0aW9uX21ldGhvZChjb25zdCBTU0xfQ0lQSEVSKiBjaXBoZXIpOworY29uc3QgY2hhciAqCVNTTF9DSVBIRVJfYXV0aGVudGljYXRpb25fbWV0aG9kKGNvbnN0IFNTTF9DSVBIRVIqIGNpcGhlcik7CiAKIGludAlTU0xfZ2V0X2ZkKGNvbnN0IFNTTCAqcyk7CiBpbnQJU1NMX2dldF9yZmQoY29uc3QgU1NMICpzKTsKQEAgLTI3MTMsNyArMjc0Miw2IEBACiAjZGVmaW5lIFNTTF9SX1dST05HX1ZFUlNJT05fTlVNQkVSCQkJIDI2NwogI2RlZmluZSBTU0xfUl9YNTA5X0xJQgkJCQkJIDI2OAogI2RlZmluZSBTU0xfUl9YNTA5X1ZFUklGSUNBVElPTl9TRVRVUF9QUk9CTEVNUwkJIDI2OQotI2RlZmluZSBTU0xfUl9VTkVYUEVDVEVEX0NDUwkJCQkgMzg4CiAKICNpZmRlZiAgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvb3BlbnNzbC9zc2wzLmggYi9pbmNsdWRlL29wZW5zc2wvc3NsMy5oCmluZGV4IDFhYTQwMjMuLmNiYTk0MzQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvb3BlbnNzbC9zc2wzLmgKKysrIGIvaW5jbHVkZS9vcGVuc3NsL3NzbDMuaApAQCAtMzkzLDkgKzM5Myw2IEBACiAjZGVmaW5lIFRMUzFfRkxBR1NfVExTX1BBRERJTkdfQlVHCQkweDAwMDgKICNkZWZpbmUgVExTMV9GTEFHU19TS0lQX0NFUlRfVkVSSUZZCQkweDAwMTAKICNkZWZpbmUgVExTMV9GTEFHU19LRUVQX0hBTkRTSEFLRQkJMHgwMDIwCi0vKiBTU0wzX0ZMQUdTX0NDU19PSyBpbmRpY2F0ZXMgdGhhdCBhIENoYW5nZUNpcGhlclNwZWMgcmVjb3JkIGlzIGFjY2VwdGFibGUgYXQKLSAqIHRoaXMgcG9pbnQgaW4gdGhlIGhhbmRzaGFrZS4gSWYgdGhpcyBmbGFnIGlzIG5vdCBzZXQgdGhlbiByZWNlaXZlZCBDQ1MKLSAqIHJlY29yZHMgd2lsbCBjYXVzZSBhIGZhdGFsIGVycm9yIGZvciB0aGUgY29ubmVjdGlvbi4gKi8KICNkZWZpbmUgU1NMM19GTEFHU19DQ1NfT0sJCQkweDAwODAKICAKIC8qIFNTTDNfRkxBR1NfU0dDX1JFU1RBUlRfRE9ORSBpcyBzZXQgd2hlbiB3ZQpAQCAtNTYzLDYgKzU2MCwxMSBAQAogCSAqIGZvciBDaGFubmVsIElEcyBhbmQgdGhhdCB0bHNleHRfY2hhbm5lbF9pZCB3aWxsIGJlIHZhbGlkIGFmdGVyIHRoZQogCSAqIGhhbmRzaGFrZS4gKi8KIAljaGFyIHRsc2V4dF9jaGFubmVsX2lkX3ZhbGlkOworCS8qIHRsc2V4dF9jaGFubmVsX2lkX25ldyBtZWFucyB0aGF0IHRoZSB1cGRhdGVkIENoYW5uZWwgSUQgZXh0ZW5zaW9uCisJICogd2FzIG5lZ290aWF0ZWQuIFRoaXMgaXMgYSB0ZW1wb3JhcnkgaGFjayBpbiB0aGUgY29kZSB0byBzdXBwb3J0IGJvdGgKKwkgKiBmb3JtcyBvZiBDaGFubmVsIElEIGV4dGVuc2lvbiB3aGlsZSB3ZSB0cmFuc2l0aW9uIHRvIHRoZSBuZXcgZm9ybWF0LAorCSAqIHdoaWNoIGZpeGVkIGEgc2VjdXJpdHkgaXNzdWUuICovCisJY2hhciB0bHNleHRfY2hhbm5lbF9pZF9uZXc7CiAJLyogRm9yIGEgc2VydmVyOgogCSAqICAgICBJZiB8dGxzZXh0X2NoYW5uZWxfaWRfdmFsaWR8IGlzIHRydWUsIHRoZW4gdGhpcyBjb250YWlucyB0aGUKIAkgKiAgICAgdmVyaWZpZWQgQ2hhbm5lbCBJRCBmcm9tIHRoZSBjbGllbnQ6IGEgUDI1NiBwb2ludCwgKHgseSksIHdoZXJlCkBAIC02ODMsMTEgKzY4NSwxMSBAQAogI2RlZmluZSBTU0wzX1NUX1NSX0NFUlRfVlJGWV9CCQkoMHgxQTF8U1NMX1NUX0FDQ0VQVCkKICNkZWZpbmUgU1NMM19TVF9TUl9DSEFOR0VfQQkJKDB4MUIwfFNTTF9TVF9BQ0NFUFQpCiAjZGVmaW5lIFNTTDNfU1RfU1JfQ0hBTkdFX0IJCSgweDFCMXxTU0xfU1RfQUNDRVBUKQotI2RlZmluZSBTU0wzX1NUX1NSX1BPU1RfQ0xJRU5UX0NFUlQJKDB4MUJGfFNTTF9TVF9BQ0NFUFQpCiAjaWZuZGVmIE9QRU5TU0xfTk9fTkVYVFBST1RPTkVHCiAjZGVmaW5lIFNTTDNfU1RfU1JfTkVYVF9QUk9UT19BCQkoMHgyMTB8U1NMX1NUX0FDQ0VQVCkKICNkZWZpbmUgU1NMM19TVF9TUl9ORVhUX1BST1RPX0IJCSgweDIxMXxTU0xfU1RfQUNDRVBUKQogI2VuZGlmCisjZGVmaW5lIFNTTDNfU1RfU1JfUE9TVF9DTElFTlRfQ0VSVAkoMHgxQkZ8U1NMX1NUX0FDQ0VQVCkKICNkZWZpbmUgU1NMM19TVF9TUl9DSEFOTkVMX0lEX0EJCSgweDIyMHxTU0xfU1RfQUNDRVBUKQogI2RlZmluZSBTU0wzX1NUX1NSX0NIQU5ORUxfSURfQgkJKDB4MjIxfFNTTF9TVF9BQ0NFUFQpCiAjZGVmaW5lIFNTTDNfU1RfU1JfRklOSVNIRURfQQkJKDB4MUMwfFNTTF9TVF9BQ0NFUFQpCmRpZmYgLS1naXQgYS9pbmNsdWRlL29wZW5zc2wvc3ltaGFja3MuaCBiL2luY2x1ZGUvb3BlbnNzbC9zeW1oYWNrcy5oCmluZGV4IDA3YTQxMmYuLmJkMmYwMDAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvb3BlbnNzbC9zeW1oYWNrcy5oCisrKyBiL2luY2x1ZGUvb3BlbnNzbC9zeW1oYWNrcy5oCkBAIC0yMDQsNiArMjA0LDEyIEBACiAjZGVmaW5lIFNTTF9DVFhfc2V0X25leHRfcHJvdG9zX2FkdmVydGlzZWRfY2IJU1NMX0NUWF9zZXRfbmV4dF9wcm90b3NfYWR2X2NiCiAjdW5kZWYgU1NMX0NUWF9zZXRfbmV4dF9wcm90b19zZWxlY3RfY2IKICNkZWZpbmUgU1NMX0NUWF9zZXRfbmV4dF9wcm90b19zZWxlY3RfY2IJU1NMX0NUWF9zZXRfbmV4dF9wcm90b19zZWxfY2IKKyN1bmRlZiBzc2wzX2NiY19yZWNvcmRfZGlnZXN0X3N1cHBvcnRlZAorI2RlZmluZSBzc2wzX2NiY19yZWNvcmRfZGlnZXN0X3N1cHBvcnRlZCAgICAgICAgc3NsM19jYmNfcmVjb3JkX2RpZ2VzdF9zdXBwb3J0CisjdW5kZWYgc3NsX2NoZWNrX2NsaWVudGhlbGxvX3Rsc2V4dF9sYXRlCisjZGVmaW5lIHNzbF9jaGVja19jbGllbnRoZWxsb190bHNleHRfbGF0ZSAgICAgICBzc2xfY2hlY2tfY2xpaGVsbG9fdGxzZXh0X2xhdGUKKyN1bmRlZiBzc2xfY2hlY2tfY2xpZW50aGVsbG9fdGxzZXh0X2Vhcmx5CisjZGVmaW5lIHNzbF9jaGVja19jbGllbnRoZWxsb190bHNleHRfZWFybHkgICAgICBzc2xfY2hlY2tfY2xpaGVsbG9fdGxzZXh0X2Vhcmx5CiAKIC8qIEhhY2sgc29tZSBsb25nIEVOR0lORSBuYW1lcyAqLwogI3VuZGVmIEVOR0lORV9nZXRfZGVmYXVsdF9CTl9tb2RfZXhwX2NydApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9vcGVuc3NsL3RsczEuaCBiL2luY2x1ZGUvb3BlbnNzbC90bHMxLmgKaW5kZXggODY1MDdkNy4uZGMzNmY3OSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9vcGVuc3NsL3RsczEuaAorKysgYi9pbmNsdWRlL29wZW5zc2wvdGxzMS5oCkBAIC0yMzMsNiArMjMzLDEyIEBACiAvKiBFeHRlbnNpb25UeXBlIHZhbHVlIGZyb20gUkZDNTYyMCAqLwogI2RlZmluZSBUTFNFWFRfVFlQRV9oZWFydGJlYXQJMTUKIAorLyogRXh0ZW5zaW9uVHlwZSB2YWx1ZSBmb3IgVExTIHBhZGRpbmcgZXh0ZW5zaW9uLgorICogaHR0cDovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy90bHMtZXh0ZW5zaW9udHlwZS12YWx1ZXMvdGxzLWV4dGVuc2lvbnR5cGUtdmFsdWVzLnhodG1sCisgKiBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1hZ2wtdGxzLXBhZGRpbmctMDMKKyAqLworI2RlZmluZSBUTFNFWFRfVFlQRV9wYWRkaW5nCTIxCisKIC8qIEV4dGVuc2lvblR5cGUgdmFsdWUgZnJvbSBkcmFmdC1pZXRmLXRscy1hcHBsYXllcnByb3RvbmVnLTAwICovCiAjZGVmaW5lIFRMU0VYVF9UWVBFX2FwcGxpY2F0aW9uX2xheWVyX3Byb3RvY29sX25lZ290aWF0aW9uIDE2CiAKQEAgLTI1NiwxMCArMjYyLDcgQEAKIAogLyogVGhpcyBpcyBub3QgYW4gSUFOQSBkZWZpbmVkIGV4dGVuc2lvbiBudW1iZXIgKi8KICNkZWZpbmUgVExTRVhUX1RZUEVfY2hhbm5lbF9pZAkJCTMwMDMxCi0KLS8qIFNlZSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtYWdsLXRscy1wYWRkaW5nLTAyCi0gKiBOdW1iZXIgbm90IHlldCBJQU5BIGFzc2lnbmVkLiAqLwotI2RlZmluZSBUTFNFWFRfVFlQRV9wYWRkaW5nCQkJMzU2NTUKKyNkZWZpbmUgVExTRVhUX1RZUEVfY2hhbm5lbF9pZF9uZXcJCTMwMDMyCiAKIC8qIE5hbWVUeXBlIHZhbHVlIGZyb20gUkZDIDM1NDYgKi8KICNkZWZpbmUgVExTRVhUX05BTUVUWVBFX2hvc3RfbmFtZSAwCkBAIC01MzIsNiArNTM1LDEyIEBACiAjZGVmaW5lIFRMUzFfQ0tfRUNESF9SU0FfV0lUSF9BRVNfMTI4X0dDTV9TSEEyNTYgICAgICAgIDB4MDMwMEMwMzEKICNkZWZpbmUgVExTMV9DS19FQ0RIX1JTQV9XSVRIX0FFU18yNTZfR0NNX1NIQTM4NCAgICAgICAgMHgwMzAwQzAzMgogCisvKiBFQ0RIRSBQU0sgY2lwaGVyc3VpdGVzIGZyb20gUkZDNTQ4OQorICogU0hBLTIgY2lwaGVyIHN1aXRlcyBhcmUgb21pdHRlZCBiZWNhdXNlIHRoZXkgY2Fubm90IGJlIHVzZWQgc2FmZWx5IHdpdGgKKyAqIFNTTHYzLiAqLworI2RlZmluZSBUTFMxX0NLX0VDREhFX1BTS19XSVRIX0FFU18xMjhfQ0JDX1NIQSAgICAgICAgICAweDAzMDBDMDM1CisjZGVmaW5lIFRMUzFfQ0tfRUNESEVfUFNLX1dJVEhfQUVTXzI1Nl9DQkNfU0hBICAgICAgICAgIDB4MDMwMEMwMzYKKwogLyogWFhYCiAgKiBJbmNvbnNpc3RlbmN5IGFsZXJ0OgogICogVGhlIE9wZW5TU0wgbmFtZXMgb2YgY2lwaGVycyB3aXRoIGVwaGVtZXJhbCBESCBoZXJlIGluY2x1ZGUgdGhlIHN0cmluZwpAQCAtNjgzLDYgKzY5MiwxMCBAQAogI2RlZmluZSBUTFMxX1RYVF9FQ0RIX1JTQV9XSVRIX0FFU18xMjhfR0NNX1NIQTI1NiAgICAgICAiRUNESC1SU0EtQUVTMTI4LUdDTS1TSEEyNTYiCiAjZGVmaW5lIFRMUzFfVFhUX0VDREhfUlNBX1dJVEhfQUVTXzI1Nl9HQ01fU0hBMzg0ICAgICAgICJFQ0RILVJTQS1BRVMyNTYtR0NNLVNIQTM4NCIKIAorLyogRUNESEUgUFNLIGNpcGhlcnN1aXRlcyBmcm9tIFJGQzU0ODkgKi8KKyNkZWZpbmUgVExTMV9UWFRfRUNESEVfUFNLX1dJVEhfQUVTXzEyOF9DQkNfU0hBICAgICAgICAgIkVDREhFLVBTSy1BRVMxMjgtQ0JDLVNIQSIKKyNkZWZpbmUgVExTMV9UWFRfRUNESEVfUFNLX1dJVEhfQUVTXzI1Nl9DQkNfU0hBICAgICAgICAgIkVDREhFLVBTSy1BRVMyNTYtQ0JDLVNIQSIKKwogI2RlZmluZSBUTFNfQ1RfUlNBX1NJR04JCQkxCiAjZGVmaW5lIFRMU19DVF9EU1NfU0lHTgkJCTIKICNkZWZpbmUgVExTX0NUX1JTQV9GSVhFRF9ESAkJMwpkaWZmIC0tZ2l0IGEvb3BlbnNzbC5jb25maWcgYi9vcGVuc3NsLmNvbmZpZwppbmRleCBlM2M2OTBkLi44Njc3MTFmIDEwMDY0NAotLS0gYS9vcGVuc3NsLmNvbmZpZworKysgYi9vcGVuc3NsLmNvbmZpZwpAQCAtMTMsNiArMTMsNyBAQAogbm8tbWRjMiBcCiBuby1yYzUgXAogbm8tcmRyYW5kIFwKK25vLXJpcGVtZCBcCiBuby1yZmMzNzc5IFwKIG5vLXJzYXggXAogbm8tc2N0cCBcCkBAIC0yMCw2ICsyMSw3IEBACiBuby1zaGEwIFwKIG5vLXN0YXRpY19lbmdpbmUgXAogbm8td2hpcmxwb29sIFwKK25vLXpsaWIgXAogIgogCiAjIGNvbmZpZ3VyZSBhcmd1bWVudHMgc3BlY2lmaWMgZm9yIDMyLWJpdCBhcmNoCkBAIC0zMiw2ICszNCwxMSBAQAogbGludXgtZ2VuZXJpYzY0IFwKICIKIAorIyBjb25maWd1cmUgYXJndW1lbnRzIHNwZWNpZmljIGZvciBzdGF0aWMgYnVpbGQKK0NPTkZJR1VSRV9BUkdTX1NUQVRJQz0iXAorbm8tZHNvIFwKKyIKKwogIyB1bm5lZWRlZCBkaXJlY3RvcmllcwogVU5ORUVERURfU09VUkNFUz0iXAogTWFjT1MgXApAQCAtNDcsNiArNTQsNyBAQAogY3J5cHRvL2lkZWEgXAogY3J5cHRvL21kMiBcCiBjcnlwdG8vcmM1IFwKK2NyeXB0by9yaXBlbWQgXAogY3J5cHRvL3NlZWQgXAogY3J5cHRvL3docmxwb29sIFwKIGRlbW9zIFwKQEAgLTg4LDcgKzk2LDYgQEAKIFJFQURNRS5FTkdJTkUgXAogYXBwcy9DQS5jb20gXAogYXBwcy9NYWtlZmlsZSBcCi1hcHBzL01ha2VmaWxlLnNhdmUgXAogYXBwcy9pbnN0YWxsLWFwcHMuY29tIFwKIGFwcHMvbWFrZWFwcHMuY29tIFwKIGFwcHMvb3BlbnNzbC12bXMuY25mIFwKQEAgLTk4LDE1ICsxMDUsMTAgQEAKIGNvbmZpZyBcCiBjcnlwdG8vTFBkaXJfdm1zLmMgXAogY3J5cHRvL01ha2VmaWxlIFwKLWNyeXB0by9NYWtlZmlsZS5zYXZlIFwKIGNyeXB0by9hZXMvTWFrZWZpbGUgXAotY3J5cHRvL2Flcy9NYWtlZmlsZS5zYXZlIFwKLWNyeXB0by9hcm1jYXAuYyBcCiBjcnlwdG8vYXNuMS9NYWtlZmlsZSBcCi1jcnlwdG8vYXNuMS9NYWtlZmlsZS5zYXZlIFwKIGNyeXB0by9iZi9JTlNUQUxMIFwKIGNyeXB0by9iZi9NYWtlZmlsZSBcCi1jcnlwdG8vYmYvTWFrZWZpbGUuc2F2ZSBcCiBjcnlwdG8vYmYvUkVBRE1FIFwKIGNyeXB0by9iZi9WRVJTSU9OIFwKIGNyeXB0by9iZi9hc20vcmVhZG1lIFwKQEAgLTExNiwxMTcgKzExOCw3NyBAQAogY3J5cHRvL2JmL2Jmc3BlZWQuYyBcCiBjcnlwdG8vYmYvYmZ0ZXN0LmMgXAogY3J5cHRvL2Jpby9NYWtlZmlsZSBcCi1jcnlwdG8vYmlvL01ha2VmaWxlLnNhdmUgXAogY3J5cHRvL2Jpby9ic3NfcnRjcC5jIFwKIGNyeXB0by9ibi9NYWtlZmlsZSBcCi1jcnlwdG8vYm4vTWFrZWZpbGUuc2F2ZSBcCiBjcnlwdG8vYm4vYXNtL3Ztcy5tYXIgXAogY3J5cHRvL2JuL2JuX3g5MzFwLmMgXAogY3J5cHRvL2JuL3Ztcy1oZWxwZXIuYyBcCiBjcnlwdG8vYnVmZmVyL01ha2VmaWxlIFwKLWNyeXB0by9idWZmZXIvTWFrZWZpbGUuc2F2ZSBcCiBjcnlwdG8vY21hYy9NYWtlZmlsZSBcCi1jcnlwdG8vY21hYy9NYWtlZmlsZS5zYXZlIFwKIGNyeXB0by9jbXMvTWFrZWZpbGUgXAotY3J5cHRvL2Ntcy9NYWtlZmlsZS5zYXZlIFwKIGNyeXB0by9jb21wL01ha2VmaWxlIFwKLWNyeXB0by9jb21wL01ha2VmaWxlLnNhdmUgXAogY3J5cHRvL2NvbmYvTWFrZWZpbGUgXAotY3J5cHRvL2NvbmYvTWFrZWZpbGUuc2F2ZSBcCiBjcnlwdG8vY3J5cHRvLWxpYi5jb20gXAogY3J5cHRvL2Rlcy9NYWtlZmlsZSBcCi1jcnlwdG8vZGVzL01ha2VmaWxlLnNhdmUgXAogY3J5cHRvL2Rlcy9kZXMtbGliLmNvbSBcCiBjcnlwdG8vZGgvTWFrZWZpbGUgXAotY3J5cHRvL2RoL01ha2VmaWxlLnNhdmUgXAogY3J5cHRvL2RoL2RoX3Bybi5jIFwKIGNyeXB0by9kc2EvTWFrZWZpbGUgXAotY3J5cHRvL2RzYS9NYWtlZmlsZS5zYXZlIFwKIGNyeXB0by9kc28vTWFrZWZpbGUgXAotY3J5cHRvL2Rzby9NYWtlZmlsZS5zYXZlIFwKIGNyeXB0by9kc28vZHNvX2Jlb3MuYyBcCiBjcnlwdG8vZHNvL2Rzb192bXMuYyBcCiBjcnlwdG8vZHNvL2Rzb193aW4zMi5jIFwKIGNyeXB0by9lYy9NYWtlZmlsZSBcCi1jcnlwdG8vZWMvTWFrZWZpbGUuc2F2ZSBcCiBjcnlwdG8vZWMvZWNwX25pc3RwMjI0LmMgXAogY3J5cHRvL2VjL2VjcF9uaXN0cDI1Ni5jIFwKIGNyeXB0by9lYy9lY3BfbmlzdHA1MjEuYyBcCiBjcnlwdG8vZWMvZWNwX25pc3RwdXRpbC5jIFwKIGNyeXB0by9lY2RoL01ha2VmaWxlIFwKLWNyeXB0by9lY2RoL01ha2VmaWxlLnNhdmUgXAogY3J5cHRvL2VjZHNhL01ha2VmaWxlIFwKLWNyeXB0by9lY2RzYS9NYWtlZmlsZS5zYXZlIFwKIGNyeXB0by9lbmdpbmUvTWFrZWZpbGUgXAotY3J5cHRvL2VuZ2luZS9NYWtlZmlsZS5zYXZlIFwKIGNyeXB0by9lbmdpbmUvZW5nX3JkcmFuZC5jIFwKIGNyeXB0by9lbmdpbmUvZW5nX3JzYXguYyBcCiBjcnlwdG8vZXJyL01ha2VmaWxlIFwKLWNyeXB0by9lcnIvTWFrZWZpbGUuc2F2ZSBcCiBjcnlwdG8vZXZwL01ha2VmaWxlIFwKLWNyeXB0by9ldnAvTWFrZWZpbGUuc2F2ZSBcCiBjcnlwdG8vZXZwL2V2cF9maXBzLmMgXAogY3J5cHRvL2V2cC9tX21kMi5jIFwKIGNyeXB0by9ldnAvbV9zaGEuYyBcCiBjcnlwdG8vZmlwc19lcnIuaCBcCiBjcnlwdG8vZmlwc19lcnMuYyBcCiBjcnlwdG8vaG1hYy9NYWtlZmlsZSBcCi1jcnlwdG8vaG1hYy9NYWtlZmlsZS5zYXZlIFwKIGNyeXB0by9pbnN0YWxsLWNyeXB0by5jb20gXAogY3J5cHRvL2pwYWtlL01ha2VmaWxlIFwKIGNyeXB0by9rcmI1L01ha2VmaWxlIFwKLWNyeXB0by9rcmI1L01ha2VmaWxlLnNhdmUgXAogY3J5cHRvL2xoYXNoL01ha2VmaWxlIFwKLWNyeXB0by9saGFzaC9NYWtlZmlsZS5zYXZlIFwKIGNyeXB0by9tZDQvTWFrZWZpbGUgXAotY3J5cHRvL21kNC9NYWtlZmlsZS5zYXZlIFwKIGNyeXB0by9tZDUvTWFrZWZpbGUgXAotY3J5cHRvL21kNS9NYWtlZmlsZS5zYXZlIFwKIGNyeXB0by9tZGMyL01ha2VmaWxlIFwKLWNyeXB0by9tZGMyL01ha2VmaWxlLnNhdmUgXAogY3J5cHRvL21vZGVzL01ha2VmaWxlIFwKLWNyeXB0by9tb2Rlcy9NYWtlZmlsZS5zYXZlIFwKIGNyeXB0by9tb2Rlcy9jdHMxMjguYyBcCiBjcnlwdG8vbW9kZXMvbW9kZXMuaCBcCiBjcnlwdG8vb19maXBzLmMgXAogY3J5cHRvL29iamVjdHMvTWFrZWZpbGUgXAotY3J5cHRvL29iamVjdHMvTWFrZWZpbGUuc2F2ZSBcCiBjcnlwdG8vb2NzcC9NYWtlZmlsZSBcCi1jcnlwdG8vb2NzcC9NYWtlZmlsZS5zYXZlIFwKIGNyeXB0by9wZW0vTWFrZWZpbGUgXAotY3J5cHRvL3BlbS9NYWtlZmlsZS5zYXZlIFwKIGNyeXB0by9wa2NzMTIvTWFrZWZpbGUgXAotY3J5cHRvL3BrY3MxMi9NYWtlZmlsZS5zYXZlIFwKIGNyeXB0by9wa2NzNy9NYWtlZmlsZSBcCi1jcnlwdG8vcGtjczcvTWFrZWZpbGUuc2F2ZSBcCiBjcnlwdG8vcGtjczcvYmlvX3BrNy5jIFwKIGNyeXB0by9wcGNjYXAuYyBcCiBjcnlwdG8vcHF1ZXVlL01ha2VmaWxlIFwKLWNyeXB0by9wcXVldWUvTWFrZWZpbGUuc2F2ZSBcCiBjcnlwdG8vcmFuZC9NYWtlZmlsZSBcCi1jcnlwdG8vcmFuZC9NYWtlZmlsZS5zYXZlIFwKIGNyeXB0by9yYW5kL3JhbmRfdm1zLmMgXAogY3J5cHRvL3JjMi9NYWtlZmlsZSBcCi1jcnlwdG8vcmMyL01ha2VmaWxlLnNhdmUgXAogY3J5cHRvL3JjNC9NYWtlZmlsZSBcCi1jcnlwdG8vcmM0L01ha2VmaWxlLnNhdmUgXAotY3J5cHRvL3JpcGVtZC9NYWtlZmlsZSBcCi1jcnlwdG8vcmlwZW1kL01ha2VmaWxlLnNhdmUgXAogY3J5cHRvL3JzYS9NYWtlZmlsZSBcCi1jcnlwdG8vcnNhL01ha2VmaWxlLnNhdmUgXAogY3J5cHRvL3NoYS9NYWtlZmlsZSBcCi1jcnlwdG8vc2hhL01ha2VmaWxlLnNhdmUgXAogY3J5cHRvL3NoYS9zaGFfb25lLmMgXAogY3J5cHRvL3NycC9NYWtlZmlsZSBcCi1jcnlwdG8vc3JwL01ha2VmaWxlLnNhdmUgXAogY3J5cHRvL3NycC9zcnB0ZXN0LmMgXAogY3J5cHRvL3N0YWNrL01ha2VmaWxlIFwKLWNyeXB0by9zdGFjay9NYWtlZmlsZS5zYXZlIFwKIGNyeXB0by9zdG9yZS9NYWtlZmlsZSBcCiBjcnlwdG8vdGhyZWFkcy9wdGhyZWFkcy12bXMuY29tIFwKIGNyeXB0by90aHJlYWRzL3dpbjMyLmJhdCBcCiBjcnlwdG8vdHMvTWFrZWZpbGUgXAotY3J5cHRvL3RzL01ha2VmaWxlLnNhdmUgXAogY3J5cHRvL3RzL3RzLmggXAogY3J5cHRvL3RzL3RzX2FzbjEuYyBcCiBjcnlwdG8vdHMvdHNfY29uZi5jIFwKQEAgLTIzOSwxNCArMjAxLDEwIEBACiBjcnlwdG8vdHMvdHNfcnNwX3ZlcmlmeS5jIFwKIGNyeXB0by90cy90c192ZXJpZnlfY3R4LmMgXAogY3J5cHRvL3R4dF9kYi9NYWtlZmlsZSBcCi1jcnlwdG8vdHh0X2RiL01ha2VmaWxlLnNhdmUgXAogY3J5cHRvL3VpL01ha2VmaWxlIFwKLWNyeXB0by91aS9NYWtlZmlsZS5zYXZlIFwKIGNyeXB0by92bXNfcm1zLmgKIGNyeXB0by94NTA5L01ha2VmaWxlIFwKLWNyeXB0by94NTA5L01ha2VmaWxlLnNhdmUgXAogY3J5cHRvL3g1MDl2My9NYWtlZmlsZSBcCi1jcnlwdG8veDUwOXYzL01ha2VmaWxlLnNhdmUgXAogaW5jbHVkZS9vcGVuc3NsL2NhbWVsbGlhLmggXAogaW5jbHVkZS9vcGVuc3NsL2Nhc3QuaCBcCiBpbmNsdWRlL29wZW5zc2wvaWRlYS5oIFwKQEAgLTI1OCwxMSArMjE2LDExIEBACiBvcGVuc3NsLmRveHkgXAogb3BlbnNzbC5zcGVjIFwKIHNzbC9NYWtlZmlsZSBcCi1zc2wvTWFrZWZpbGUuc2F2ZSBcCitzc2wvaGVhcnRiZWF0X3Rlc3QuYyBcCiBzc2wvaW5zdGFsbC1zc2wuY29tIFwKIHNzbC9zc2wtbGliLmNvbSBcCiBzc2wvc3NsX3Rhc2suYyBcCi0iIAorIgogCiBORUVERURfU09VUkNFUz0iXAogYXBwcyBcCkBAIC0yODAsMTcgKzIzOCwyNCBAQAogIgogCiBPUEVOU1NMX0NSWVBUT19ERUZJTkVTX2FybT0iXAorQUVTX0FTTSBcCitCU0FFU19BU00gXAorREVTX1VOUk9MTCBcCitHSEFTSF9BU00gXAogT1BFTlNTTF9CTl9BU01fR0YybSBcCiBPUEVOU1NMX0JOX0FTTV9NT05UIFwKLUdIQVNIX0FTTSBcCi1BRVNfQVNNIFwKK09QRU5TU0xfQ1BVSURfT0JKIFwKIFNIQTFfQVNNIFwKIFNIQTI1Nl9BU00gXAogU0hBNTEyX0FTTSBcCiAiCiAKIE9QRU5TU0xfQ1JZUFRPX0RFRklORVNfYXJtNjQ9IlwKLU9QRU5TU0xfTk9fQVNNIFwKK0RFU19VTlJPTEwgXAorT1BFTlNTTF9DUFVJRF9PQkogXAorU0hBMV9BU00gXAorU0hBMjU2X0FTTSBcCitTSEE1MTJfQVNNIFwKICIKIAogT1BFTlNTTF9DUllQVE9fREVGSU5FU19taXBzPSJcCkBAIC0zMDEsMzQgKzI2Niw0MCBAQAogIgogCiBPUEVOU1NMX0NSWVBUT19ERUZJTkVTX3g4Nj0iXAorQUVTX0FTTSBcCitERVNfUFRSIFwKK0RFU19SSVNDMSBcCitERVNfVU5ST0xMIFwKK0dIQVNIX0FTTSBcCitNRDVfQVNNIFwKIE9QRU5TU0xfQk5fQVNNX0dGMm0gXAogT1BFTlNTTF9CTl9BU01fTU9OVCBcCiBPUEVOU1NMX0JOX0FTTV9QQVJUX1dPUkRTIFwKLUFFU19BU00gXAotR0hBU0hfQVNNIFwKK09QRU5TU0xfQ1BVSURfT0JKIFwKK09QRU5TU0xfSUEzMl9TU0UyIFwKK1JDNF9JTkRFWCBcCitSTUQxNjBfQVNNIFwKIFNIQTFfQVNNIFwKIFNIQTI1Nl9BU00gXAogU0hBNTEyX0FTTSBcCi1NRDVfQVNNIFwKLURFU19QVFIgXAotREVTX1JJU0MxIFwKLURFU19VTlJPTEwgXAotT1BFTlNTTF9DUFVJRF9PQkogXAorVlBBRVNfQVNNIFwKICIKIAogT1BFTlNTTF9DUllQVE9fREVGSU5FU194ODZfNjQ9IlwKK0FFU19BU00gXAorQlNBRVNfQVNNIFwKK0RFU19VTlJPTEwgXAorR0hBU0hfQVNNIFwKK01ENV9BU00gXAogT1BFTlNTTF9CTl9BU01fR0YybSBcCiBPUEVOU1NMX0JOX0FTTV9NT05UIFwKLUFFU19BU00gXAotR0hBU0hfQVNNIFwKK09QRU5TU0xfQk5fQVNNX01PTlQ1IFwKK09QRU5TU0xfQ1BVSURfT0JKIFwKK09QRU5TU0xfSUEzMl9TU0UyIFwKIFNIQTFfQVNNIFwKIFNIQTI1Nl9BU00gXAogU0hBNTEyX0FTTSBcCi1NRDVfQVNNIFwKLURFU19QVFIgXAotREVTX1JJU0MxIFwKLURFU19VTlJPTEwgXAotT1BFTlNTTF9DUFVJRF9PQkogXAorVlBBRVNfQVNNIFwKICIKIAogT1BFTlNTTF9DUllQVE9fSU5DTFVERVM9IlwKQEAgLTY2NCw3ICs2MzUsNiBAQAogY3J5cHRvL2V2cC9tX21kNS5jIFwKIGNyeXB0by9ldnAvbV9tZGMyLmMgXAogY3J5cHRvL2V2cC9tX251bGwuYyBcCi1jcnlwdG8vZXZwL21fcmlwZW1kLmMgXAogY3J5cHRvL2V2cC9tX3NoYTEuYyBcCiBjcnlwdG8vZXZwL21fc2lndmVyLmMgXAogY3J5cHRvL2V2cC9tX3dwLmMgXApAQCAtNzYzLDggKzczMyw2IEBACiBjcnlwdG8vcmM0L3JjNF9lbmMuYyBcCiBjcnlwdG8vcmM0L3JjNF9za2V5LmMgXAogY3J5cHRvL3JjNC9yYzRfdXRsLmMgXAotY3J5cHRvL3JpcGVtZC9ybWRfZGdzdC5jIFwKLWNyeXB0by9yaXBlbWQvcm1kX29uZS5jIFwKIGNyeXB0by9yc2EvcnNhX2FtZXRoLmMgXAogY3J5cHRvL3JzYS9yc2FfYXNuMS5jIFwKIGNyeXB0by9yc2EvcnNhX2Noay5jIFwKQEAgLTg2MSw5ICs4MjksMTQgQEAKIAogT1BFTlNTTF9DUllQVE9fU09VUkNFU19hcm09IlwKIGNyeXB0by9hZXMvYXNtL2Flcy1hcm12NC5TIFwKK2NyeXB0by9hZXMvYXNtL2Flc3Y4LWFybXguUyBcCitjcnlwdG8vYWVzL2FzbS9ic2Flcy1hcm12Ny5TIFwKK2NyeXB0by9hcm1jYXAuYyBcCitjcnlwdG8vYXJtdjRjcHVpZC5TIFwKIGNyeXB0by9ibi9hc20vYXJtdjQtZ2YybS5TIFwKIGNyeXB0by9ibi9hc20vYXJtdjQtbW9udC5TIFwKIGNyeXB0by9tb2Rlcy9hc20vZ2hhc2gtYXJtdjQuUyBcCitjcnlwdG8vbW9kZXMvYXNtL2doYXNodjgtYXJteC5TIFwKIGNyeXB0by9zaGEvYXNtL3NoYTEtYXJtdjQtbGFyZ2UuUyBcCiBjcnlwdG8vc2hhL2FzbS9zaGEyNTYtYXJtdjQuUyBcCiBjcnlwdG8vc2hhL2FzbS9zaGE1MTItYXJtdjQuUyBcCkBAIC04NzEsOSArODQ0LDE3IEBACiAKIE9QRU5TU0xfQ1JZUFRPX1NPVVJDRVNfRVhDTFVERVNfYXJtPSJcCiBjcnlwdG8vYWVzL2Flc19jb3JlLmMgXAorY3J5cHRvL21lbV9jbHIuYyBcCiAiCiAKIE9QRU5TU0xfQ1JZUFRPX1NPVVJDRVNfYXJtNjQ9IlwKK2NyeXB0by9hcm1jYXAuYyBcCitjcnlwdG8vYXJtNjRjcHVpZC5TIFwKK2NyeXB0by9hZXMvYXNtL2Flc3Y4LWFybXgtNjQuUyBcCitjcnlwdG8vbW9kZXMvYXNtL2doYXNodjgtYXJteC02NC5TIFwKK2NyeXB0by9zaGEvYXNtL3NoYTEtYXJtdjguUyBcCitjcnlwdG8vc2hhL2FzbS9zaGEyNTYtYXJtdjguUyBcCitjcnlwdG8vc2hhL2FzbS9zaGE1MTItYXJtdjguUyBcCiAiCiAKIE9QRU5TU0xfQ1JZUFRPX1NPVVJDRVNfRVhDTFVERVNfYXJtNjQ9IlwKQEAgLTEwNjYsMTcgKzEwNDcsNCBAQAogYXBwcy94NTA5LmMgXAogIgogCi1PUEVOU1NMX1BBVENIRVM9IlwKLXByb2dzLnBhdGNoIFwKLWhhbmRzaGFrZV9jdXR0aHJvdWdoLnBhdGNoIFwKLWpzc2UucGF0Y2ggXAotY2hhbm5lbGlkLnBhdGNoIFwKLWVuZ19keW5fZGlycy5wYXRjaCBcCi1maXhfY2xhbmdfYnVpbGQucGF0Y2ggXAotdGxzMTJfZGlnZXN0cy5wYXRjaCBcCi1hbHBuLnBhdGNoIFwKLWNiY19yZWNvcmRfc3BsaXR0aW5nLnBhdGNoIFwKLXBhZGRpbmdleHQucGF0Y2ggXAotZWFybHlfY2NzLnBhdGNoIFwKLTAwMTgtdGxzX2ZhbGxiYWNrX3Njc3YucGF0Y2ggXAotIgorc291cmNlIC4vb3BlbnNzbC50cnVzdHkuY29uZmlnCmRpZmYgLS1naXQgYS9vcGVuc3NsLnRydXN0eS5jb25maWcgYi9vcGVuc3NsLnRydXN0eS5jb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTcxMGFkMAotLS0gL2Rldi9udWxsCisrKyBiL29wZW5zc2wudHJ1c3R5LmNvbmZpZwpAQCAtMCwwICsxLDI3OCBAQAorQ09ORklHVVJFX0FSR1NfVFJVU1RZPSJcCistRExfRU5ESUFOIFwKK2xpbnV4LWdlbmVyaWMzMjo6Ojx0cnVzdHlfc3RkLmg+IFwKK25vLWNhbWVsbGlhIFwKK25vLWNhcGllbmcgXAorbm8tY2FzdCBcCituby1jbXMgXAorbm8tY29tcCBcCituby1jb25mIFwKK25vLWRlcyBcCituby1kc28gXAorbm8tZHRsczEgXAorbm8tZXJyIFwKK25vLWdvc3QgXAorbm8tZ21wIFwKK25vLWhlYXJ0YmVhdHMgXAorbm8taWRlYSBcCituby1qcGFrZSBcCituby1rcmI1IFwKK25vLWxvY2tpbmcgXAorbm8tbWQyIFwKK25vLW1kNCBcCituby1tZDUgXAorbm8tbWRjMiBcCituby1vY3NwIFwKK25vLXBlbSBcCituby1wa2NzMTIgXAorbm8tcHF1ZXVlIFwKK25vLXJjMiBcCituby1yYzQgXAorbm8tcmM1IFwKK25vLXJjNSBcCituby1yZHJhbmQgXAorbm8tcmZjMzc3OSBcCituby1yaXBlbWQgXAorbm8tcnNheCBcCituby1zY3RwIFwKK25vLXNlZWQgXAorbm8tc2hhMCBcCituby1zcnAgXAorbm8tc3NsIFwKK25vLXN0YXRpY19lbmdpbmUgXAorbm8tc3RvcmUgXAorbm8tdGhyZWFkcyBcCituby10cyBcCituby10eHRfZGIgXAorbm8tdWkgXAorbm8td2hpcmxwb29sIFwKKyIKKworIyBUcnVzdHktc3BlY2lmaWMgY29tcGlsZXIgZGVmaW5lcyBmb3IgY3J5cHRvLyBsaWJyYXJ5LgorIworT1BFTlNTTF9DUllQVE9fVFJVU1RZX0RFRklORVM9IlwKK0dFVFBJRF9JU19NRUFOSU5HTEVTUyBcCitOT19XSU5ET1dTX0JSQUlOREVBVEggXAorIgorCitPUEVOU1NMX0NSWVBUT19UUlVTVFlfREVGSU5FU19hcm09IlwKK09QRU5TU0xfQk5fQVNNX0dGMm0gXAorT1BFTlNTTF9CTl9BU01fTU9OVCBcCitHSEFTSF9BU00gXAorQUVTX0FTTSBcCitTSEExX0FTTSBcCitTSEEyNTZfQVNNIFwKK1NIQTUxMl9BU00gXAorIgorCitPUEVOU1NMX0NSWVBUT19UUlVTVFlfREVGSU5FU19taXBzPSIiCisKK09QRU5TU0xfQ1JZUFRPX1RSVVNUWV9ERUZJTkVTX3g4Nj0iIgorCitPUEVOU1NMX0NSWVBUT19UUlVTVFlfREVGSU5FU194ODZfNjQ9IiIKKworT1BFTlNTTF9DUllQVE9fVFJVU1RZX0lOQ0xVREVTPSJcCisuIFwKK2luY2x1ZGUgXAorY3J5cHRvIFwKK2NyeXB0by9hc24xIFwKK2NyeXB0by9ldnAgXAorY3J5cHRvL21vZGVzIFwKK2luY2x1ZGUgXAoraW5jbHVkZS9vcGVuc3NsIFwKKyIKKworT1BFTlNTTF9DUllQVE9fVFJVU1RZX1NPVVJDRVM9IlwKK2NyeXB0by9hZXMvYWVzX2NiYy5jIFwKK2NyeXB0by9hZXMvYWVzX21pc2MuYyBcCitjcnlwdG8vYXNuMS9hX2JpdHN0ci5jIFwKK2NyeXB0by9hc24xL2FfZDJpX2ZwLmMgXAorY3J5cHRvL2FzbjEvYV9pbnQuYyBcCitjcnlwdG8vYXNuMS9hbWV0aF9saWIuYyBcCitjcnlwdG8vYXNuMS9hX29iamVjdC5jIFwKK2NyeXB0by9hc24xL2Ffb2N0ZXQuYyBcCitjcnlwdG8vYXNuMS9hc24xX2xpYi5jIFwKK2NyeXB0by9hc24xL2Fzbl9wYWNrLmMgXAorY3J5cHRvL2FzbjEvYV90eXBlLmMgXAorY3J5cHRvL2FzbjEvZDJpX3ByLmMgXAorY3J5cHRvL2FzbjEvZl9pbnQuYyBcCitjcnlwdG8vYXNuMS9pMmRfcHIuYyBcCitjcnlwdG8vYXNuMS9wOF9wa2V5LmMgXAorY3J5cHRvL2FzbjEvdGFzbl9kZWMuYyBcCitjcnlwdG8vYXNuMS90YXNuX2VuYy5jIFwKK2NyeXB0by9hc24xL3Rhc25fZnJlLmMgXAorY3J5cHRvL2FzbjEvdGFzbl9uZXcuYyBcCitjcnlwdG8vYXNuMS90YXNuX3R5cC5jIFwKK2NyeXB0by9hc24xL3Rhc25fdXRsLmMgXAorY3J5cHRvL2FzbjEvdF9wa2V5LmMgXAorY3J5cHRvL2FzbjEvdF94NTA5LmMgXAorY3J5cHRvL2FzbjEveF9hbGdvci5jIFwKK2NyeXB0by9hc24xL3hfYXR0cmliLmMgXAorY3J5cHRvL2FzbjEveF9iaWdudW0uYyBcCitjcnlwdG8vYXNuMS94X2xvbmcuYyBcCitjcnlwdG8vYXNuMS94X3B1YmtleS5jIFwKK2NyeXB0by9hc24xL3hfc2lnLmMgXAorY3J5cHRvL2Jpby9iaW9fbGliLmMgXAorY3J5cHRvL2Jpby9iX3ByaW50LmMgXAorY3J5cHRvL2Jpby9ic3NfbWVtLmMgXAorY3J5cHRvL2JuL2JuX2FkZC5jIFwKK2NyeXB0by9ibi9ibl9hc20uYyBcCitjcnlwdG8vYm4vYm5fYmxpbmQuYyBcCitjcnlwdG8vYm4vYm5fY3R4LmMgXAorY3J5cHRvL2JuL2JuX2Rpdi5jIFwKK2NyeXB0by9ibi9ibl9leHAyLmMgXAorY3J5cHRvL2JuL2JuX2V4cC5jIFwKK2NyeXB0by9ibi9ibl9nY2QuYyBcCitjcnlwdG8vYm4vYm5fZ2YybS5jIFwKK2NyeXB0by9ibi9ibl9rcm9uLmMgXAorY3J5cHRvL2JuL2JuX2xpYi5jIFwKK2NyeXB0by9ibi9ibl9tb2QuYyBcCitjcnlwdG8vYm4vYm5fbW9udC5jIFwKK2NyeXB0by9ibi9ibl9tdWwuYyBcCitjcnlwdG8vYm4vYm5fbmlzdC5jIFwKK2NyeXB0by9ibi9ibl9wcmltZS5jIFwKK2NyeXB0by9ibi9ibl9wcmludC5jIFwKK2NyeXB0by9ibi9ibl9yYW5kLmMgXAorY3J5cHRvL2JuL2JuX3JlY3AuYyBcCitjcnlwdG8vYm4vYm5fc2hpZnQuYyBcCitjcnlwdG8vYm4vYm5fc3FyLmMgXAorY3J5cHRvL2JuL2JuX3NxcnQuYyBcCitjcnlwdG8vYm4vYm5fd29yZC5jIFwKK2NyeXB0by9idWZmZXIvYnVmZmVyLmMgXAorY3J5cHRvL2J1ZmZlci9idWZfc3RyLmMgXAorY3J5cHRvL2NtYWMvY21hYy5jIFwKK2NyeXB0by9jbWFjL2NtX2FtZXRoLmMgXAorY3J5cHRvL2NtYWMvY21fcG1ldGguYyBcCitDcnlwdG8tY29uZmlnLm1rIFwKK2NyeXB0by9jcnlwdGxpYi5jIFwKK2NyeXB0by9kaC9kaF9hbWV0aC5jIFwKK2NyeXB0by9kaC9kaF9hc24xLmMgXAorY3J5cHRvL2RoL2RoX2NoZWNrLmMgXAorY3J5cHRvL2RoL2RoX2dlbi5jIFwKK2NyeXB0by9kaC9kaF9rZXkuYyBcCitjcnlwdG8vZGgvZGhfbGliLmMgXAorY3J5cHRvL2RoL2RoX3BtZXRoLmMgXAorY3J5cHRvL2RzYS9kc2FfYW1ldGguYyBcCitjcnlwdG8vZHNhL2RzYV9hc24xLmMgXAorY3J5cHRvL2RzYS9kc2FfZ2VuLmMgXAorY3J5cHRvL2RzYS9kc2Ffa2V5LmMgXAorY3J5cHRvL2RzYS9kc2FfbGliLmMgXAorY3J5cHRvL2RzYS9kc2Ffb3NzbC5jIFwKK2NyeXB0by9kc2EvZHNhX3BtZXRoLmMgXAorY3J5cHRvL2RzYS9kc2Ffc2lnbi5jIFwKK2NyeXB0by9kc2EvZHNhX3ZyZi5jIFwKK2NyeXB0by9lY2RoL2VjaF9rZXkuYyBcCitjcnlwdG8vZWNkaC9lY2hfbGliLmMgXAorY3J5cHRvL2VjZGgvZWNoX29zc2wuYyBcCitjcnlwdG8vZWNkc2EvZWNzX2FzbjEuYyBcCitjcnlwdG8vZWNkc2EvZWNzX2xpYi5jIFwKK2NyeXB0by9lY2RzYS9lY3Nfb3NzbC5jIFwKK2NyeXB0by9lY2RzYS9lY3Nfc2lnbi5jIFwKK2NyeXB0by9lY2RzYS9lY3NfdnJmLmMgXAorY3J5cHRvL2VjL2VjMl9tdWx0LmMgXAorY3J5cHRvL2VjL2VjMl9vY3QuYyBcCitjcnlwdG8vZWMvZWMyX3NtcGwuYyBcCitjcnlwdG8vZWMvZWNfYW1ldGguYyBcCitjcnlwdG8vZWMvZWNfYXNuMS5jIFwKK2NyeXB0by9lYy9lY19jdXJ2ZS5jIFwKK2NyeXB0by9lYy9lY19jdnQuYyBcCitjcnlwdG8vZWMvZWNfa2V5LmMgXAorY3J5cHRvL2VjL2Vja19wcm4uYyBcCitjcnlwdG8vZWMvZWNfbGliLmMgXAorY3J5cHRvL2VjL2VjX211bHQuYyBcCitjcnlwdG8vZWMvZWNfb2N0LmMgXAorY3J5cHRvL2VjL2VjX3BtZXRoLmMgXAorY3J5cHRvL2VjL2VjcF9tb250LmMgXAorY3J5cHRvL2VjL2VjcF9uaXN0LmMgXAorY3J5cHRvL2VjL2VjcF9vY3QuYyBcCitjcnlwdG8vZWMvZWNfcHJpbnQuYyBcCitjcnlwdG8vZWMvZWNwX3NtcGwuYyBcCitjcnlwdG8vZW5naW5lL2VuZ19pbml0LmMgXAorY3J5cHRvL2VuZ2luZS9lbmdfbGliLmMgXAorY3J5cHRvL2VuZ2luZS9lbmdfdGFibGUuYyBcCitjcnlwdG8vZW5naW5lL3RiX2Fzbm10aC5jIFwKK2NyeXB0by9lbmdpbmUvdGJfY2lwaGVyLmMgXAorY3J5cHRvL2VuZ2luZS90Yl9kaC5jIFwKK2NyeXB0by9lbmdpbmUvdGJfZGlnZXN0LmMgXAorY3J5cHRvL2VuZ2luZS90Yl9kc2EuYyBcCitjcnlwdG8vZW5naW5lL3RiX2VjZGguYyBcCitjcnlwdG8vZW5naW5lL3RiX2VjZHNhLmMgXAorY3J5cHRvL2VuZ2luZS90Yl9wa21ldGguYyBcCitjcnlwdG8vZW5naW5lL3RiX3JhbmQuYyBcCitjcnlwdG8vZW5naW5lL3RiX3JzYS5jIFwKK2NyeXB0by9lcnIvZXJyLmMgXAorY3J5cHRvL2V2cC9kaWdlc3QuYyBcCitjcnlwdG8vZXZwL2VfYWVzLmMgXAorY3J5cHRvL2V2cC9ldnBfZW5jLmMgXAorY3J5cHRvL2V2cC9ldnBfbGliLmMgXAorY3J5cHRvL2V2cC9ldnBfcGtleS5jIFwKK2NyeXB0by9ldnAvbV9zaGExLmMgXAorY3J5cHRvL2V2cC9tX3NpZ3Zlci5jIFwKK2NyeXB0by9ldnAvbmFtZXMuYyBcCitjcnlwdG8vZXZwL3BfbGliLmMgXAorY3J5cHRvL2V2cC9wbWV0aF9mbi5jIFwKK2NyeXB0by9ldnAvcG1ldGhfZ24uYyBcCitjcnlwdG8vZXZwL3BtZXRoX2xpYi5jIFwKK2NyeXB0by9leF9kYXRhLmMgXAorY3J5cHRvL2htYWMvaG1hYy5jIFwKK2NyeXB0by9obWFjL2htX2FtZXRoLmMgXAorY3J5cHRvL2htYWMvaG1fcG1ldGguYyBcCitjcnlwdG8vbGhhc2gvbGhhc2guYyBcCitjcnlwdG8vbWVtLmMgXAorY3J5cHRvL21lbV9jbHIuYyBcCitjcnlwdG8vbWVtX2RiZy5jIFwKK2NyeXB0by9tb2Rlcy9jYmMxMjguYyBcCitjcnlwdG8vbW9kZXMvY3RyMTI4LmMgXAorY3J5cHRvL29iamVjdHMvb2JqX2RhdC5jIFwKK2NyeXB0by9vYmplY3RzL29ial94cmVmLmMgXAorY3J5cHRvL29iamVjdHMvb19uYW1lcy5jIFwKK2NyeXB0by9wa2NzNy9wazdfbGliLmMgXAorY3J5cHRvL3JhbmQvbWRfcmFuZC5jIFwKK2NyeXB0by9yYW5kL3JhbmRfbGliLmMgXAorY3J5cHRvL3JzYS9yc2FfYW1ldGguYyBcCitjcnlwdG8vcnNhL3JzYV9hc24xLmMgXAorY3J5cHRvL3JzYS9yc2FfY2hrLmMgXAorY3J5cHRvL3JzYS9yc2FfY3JwdC5jIFwKK2NyeXB0by9yc2EvcnNhX2VheS5jIFwKK2NyeXB0by9yc2EvcnNhX2dlbi5jIFwKK2NyeXB0by9yc2EvcnNhX2xpYi5jIFwKK2NyeXB0by9yc2EvcnNhX25vbmUuYyBcCitjcnlwdG8vcnNhL3JzYV9vYWVwLmMgXAorY3J5cHRvL3JzYS9yc2FfcGsxLmMgXAorY3J5cHRvL3JzYS9yc2FfcG1ldGguYyBcCitjcnlwdG8vcnNhL3JzYV9wc3MuYyBcCitjcnlwdG8vcnNhL3JzYV9zYW9zLmMgXAorY3J5cHRvL3JzYS9yc2Ffc2lnbi5jIFwKK2NyeXB0by9yc2EvcnNhX3NzbC5jIFwKK2NyeXB0by9yc2EvcnNhX3g5MzEuYyBcCitjcnlwdG8vc2hhL3NoYTFfb25lLmMgXAorY3J5cHRvL3NoYS9zaGExZGdzdC5jIFwKK2NyeXB0by9zaGEvc2hhMjU2LmMgXAorY3J5cHRvL3NoYS9zaGE1MTIuYyBcCitjcnlwdG8vc3RhY2svc3RhY2suYyBcCitjcnlwdG8veDUwOXYzL3YzX3V0bC5jIFwKK2NyeXB0by94NTA5L3hfYWxsLmMgXAorIgorCitPUEVOU1NMX0NSWVBUT19UUlVTVFlfU09VUkNFU19hcm09IlwKK2NyeXB0by9hZXMvYXNtL2Flcy1hcm12NC5TIFwKK2NyeXB0by9zaGEvYXNtL3NoYTEtYXJtdjQtbGFyZ2UuUyBcCitjcnlwdG8vc2hhL2FzbS9zaGEyNTYtYXJtdjQuUyBcCitjcnlwdG8vc2hhL2FzbS9zaGE1MTItYXJtdjQuUyBcCitjcnlwdG8vYm4vYXNtL2FybXY0LWdmMm0uUyBcCitjcnlwdG8vYm4vYXNtL2FybXY0LW1vbnQuUyBcCisiCisKK09QRU5TU0xfQ1JZUFRPX1RSVVNUWV9TT1VSQ0VTX0VYQ0xVREVTX2FybT0iIgorCitPUEVOU1NMX0NSWVBUT19UUlVTVFlfU09VUkNFU19taXBzPSIiCisKK09QRU5TU0xfQ1JZUFRPX1RSVVNUWV9TT1VSQ0VTX0VYQ0xVREVTX21pcHM9IiIKKworT1BFTlNTTF9DUllQVE9fVFJVU1RZX1NPVVJDRVNfeDg2PSIiCisKK09QRU5TU0xfQ1JZUFRPX1RSVVNUWV9TT1VSQ0VTX0VYQ0xVREVTX3g4Nj0iIgorCitPUEVOU1NMX0NSWVBUT19UUlVTVFlfU09VUkNFU194ODZfNjQ9IiIKKworT1BFTlNTTF9DUllQVE9fVFJVU1RZX1NPVVJDRVNfRVhDTFVERVNfeDg2XzY0PSIiCmRpZmYgLS1naXQgYS9vcGVuc3NsLnZlcnNpb24gYi9vcGVuc3NsLnZlcnNpb24KaW5kZXggODdmNDlhZC4uYWIyZTYyYiAxMDA2NDQKLS0tIGEvb3BlbnNzbC52ZXJzaW9uCisrKyBiL29wZW5zc2wudmVyc2lvbgpAQCAtMSArMSBAQAotT1BFTlNTTF9WRVJTSU9OPTEuMC4xZgorT1BFTlNTTF9WRVJTSU9OPTEuMC4xaApkaWZmIC0tZ2l0IGEvcGF0Y2hlcy9wcm9ncy5wYXRjaCBiL3BhdGNoZXMvMDAwMS1wcm9ncy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcGF0Y2hlcy9wcm9ncy5wYXRjaApyZW5hbWUgdG8gcGF0Y2hlcy8wMDAxLXByb2dzLnBhdGNoCmRpZmYgLS1naXQgYS9wYXRjaGVzL2hhbmRzaGFrZV9jdXR0aHJvdWdoLnBhdGNoIGIvcGF0Y2hlcy8wMDAyLWhhbmRzaGFrZV9jdXR0aHJvdWdoLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggNzglCnJlbmFtZSBmcm9tIHBhdGNoZXMvaGFuZHNoYWtlX2N1dHRocm91Z2gucGF0Y2gKcmVuYW1lIHRvIHBhdGNoZXMvMDAwMi1oYW5kc2hha2VfY3V0dGhyb3VnaC5wYXRjaAppbmRleCBmMDVhMTBmLi5mNjhmZDZmIDEwMDY0NAotLS0gYS9wYXRjaGVzL2hhbmRzaGFrZV9jdXR0aHJvdWdoLnBhdGNoCisrKyBiL3BhdGNoZXMvMDAwMi1oYW5kc2hha2VfY3V0dGhyb3VnaC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gZDBlNzM1ZDAxMjcxMDU1ZjA5YmM0YTFiZTAzNDI1M2U2ZTNjMmRlZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNGM2NTQ1MjNjNzAzNjQ1ZjhiNTE3Mzg5YjZkYTUzN2M1YTllNTE2OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFkYW0gTGFuZ2xleSA8YWdsQGNocm9taXVtLm9yZz4KIERhdGU6IFRodSwgMjQgSmFuIDIwMTMgMTY6MjI6MDcgLTA1MDAKIFN1YmplY3Q6IFtQQVRDSF0gaGFuZHNoYWtlX2N1dHRocm91Z2gKQEAgLTksMTQgKzksMTUgQEAKIHBlcmZvcm1pbmcgZnVsbC1oYW5kc2hha2VzLgogLS0tCiAgYXBwcy9zX2NsaWVudC5jIHwgMTMgKysrKysrKysrKysrKwotIHNzbC9zM19jbG50LmMgICB8IDUzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tCisgc3NsL3MzX2NsbnQuYyAgIHwgNTQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tCiAgc3NsL3MzX2xpYi5jICAgIHwgMTUgKysrKysrKysrKysrKystCi0gc3NsL3NzbC5oICAgICAgIHwgIDggKysrKysrKy0KKyBzc2wvc3NsLmggICAgICAgfCAxMCArKysrKysrKystCiAgc3NsL3NzbDMuaCAgICAgIHwgIDEgKwotIHNzbC9zc2xfbGliLmMgICB8IDEzICsrKysrKysrKysrKysKKyBzc2wvc3NsX2xpYi5jICAgfCA0MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBzc2wvc3NsX2xvY2wuaCAgfCAgMiArKwogIHNzbC9zc2x0ZXN0LmMgICB8IDEyICsrKysrKysrKysrKwogIHRlc3QvdGVzdHNzbCAgICB8ICAzICsrKwotIDggZmlsZXMgY2hhbmdlZCwgMTEwIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCisgOSBmaWxlcyBjaGFuZ2VkLCAxNDQgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2FwcHMvc19jbGllbnQuYyBiL2FwcHMvc19jbGllbnQuYwogaW5kZXggM2JhNjYwNS4uNzkxZTI3NyAxMDA2NDQKQEAgLTY0LDM1ICs2NSwyMyBAQAogIAlpZiAoY2lwaGVyICE9IE5VTEwpCiAgCQlpZighU1NMX0NUWF9zZXRfY2lwaGVyX2xpc3QoY3R4LGNpcGhlcikpIHsKIGRpZmYgLS1naXQgYS9zc2wvczNfY2xudC5jIGIvc3NsL3MzX2NsbnQuYwotaW5kZXggMzQ0ZTJlYi4uYzNiZjE4YSAxMDA2NDQKK2luZGV4IGE2YjNjMDEuLjNkM2ZkNjQgMTAwNjQ0CiAtLS0gYS9zc2wvczNfY2xudC5jCiArKysgYi9zc2wvczNfY2xudC5jCi1AQCAtMjE1LDYgKzIxNSwyNCBAQCBpbnQgc3NsM19jb25uZWN0KFNTTCAqcykKK0BAIC0yMTUsNiArMjE1LDEyIEBAIGludCBzc2wzX2Nvbm5lY3QoU1NMICpzKQogIAkJfQogICNlbmRpZgogIAotKy8vIEJFR0lOIGFuZHJvaWQtYWRkZWQKLSsjaWYgMAotKy8qIFNlbmQgYXBwIGRhdGEgaW4gc2VwYXJhdGUgcGFja2V0LCBvdGhlcndpc2UsIHNvbWUgcGFydGljdWxhciBzaXRlCi0rICogKG9ubHkgb25lIHNpdGUgc28gZmFyKSBjbG9zZXMgdGhlIHNvY2tldC4gaHR0cDovL2IvMjUxMTA3MwotKyAqIE5vdGU6IHRoZXJlIGlzIGEgdmVyeSBzbWFsbCBjaGFuY2UgdGhhdCB0d28gVENQIHBhY2tldHMKLSsgKiBjb3VsZCBiZSBhcnJpdmluZyBhdCBzZXJ2ZXIgY29tYmluZWQgaW50byBhIHNpbmdsZSBUQ1AgcGFja2V0LAotKyAqIHRoZW4gdHJpZ2dlciB0aGF0IHNpdGUgdG8gYnJlYWsuIFdlIGhhdmVuJ3QgZW5jb3VudGVyIHRoYXQgdGhvdWdoLgotKyAqLwotKy8vIEVORCBhbmRyb2lkLWFkZGVkCiArCWlmIChTU0xfZ2V0X21vZGUocykgJiBTU0xfTU9ERV9IQU5EU0hBS0VfQ1VUVEhST1VHSCkKICsJCXsKICsJCS8qIFNlbmQgYXBwIGRhdGEgYWxvbmcgd2l0aCBDQ1MvRmluaXNoZWQgKi8KICsJCXMtPnMzLT5mbGFncyB8PSBTU0wzX0ZMQUdTX0RFTEFZX0NMSUVOVF9GSU5JU0hFRDsKICsJCX0KICsKLSsvLyBCRUdJTiBhbmRyb2lkLWFkZGVkCi0rI2VuZGlmCi0rLy8gRU5EIGFuZHJvaWQtYWRkZWQKICAJZm9yICg7OykKICAJCXsKICAJCXN0YXRlPXMtPnN0YXRlOwotQEAgLTUyNiwxNCArNTMyLDMxIEBAIGludCBzc2wzX2Nvbm5lY3QoU1NMICpzKQorQEAgLTUyNiwxNCArNTMyLDMyIEBAIGludCBzc2wzX2Nvbm5lY3QoU1NMICpzKQogIAkJCQl9CiAgCQkJZWxzZQogIAkJCQl7CkBAIC0xMDAsNyArODksOCBAQAogLQkJCQkvKiBBbGxvdyBOZXdTZXNzaW9uVGlja2V0IGlmIHRpY2tldCBleHBlY3RlZCAqLwogLQkJCQlpZiAocy0+dGxzZXh0X3RpY2tldF9leHBlY3RlZCkKIC0JCQkJCXMtPnMzLT50bXAubmV4dF9zdGF0ZT1TU0wzX1NUX0NSX1NFU1NJT05fVElDS0VUX0E7Ci0rCQkJCWlmICgoU1NMX2dldF9tb2RlKHMpICYgU1NMX01PREVfSEFORFNIQUtFX0NVVFRIUk9VR0gpICYmIFNTTF9nZXRfY2lwaGVyX2JpdHMocywgTlVMTCkgPj0gMTI4CisrCQkJCWlmICgoU1NMX2dldF9tb2RlKHMpICYgU1NMX01PREVfSEFORFNIQUtFX0NVVFRIUk9VR0gpCisrCQkJCSAgICAmJiBzc2wzX2Nhbl9jdXR0aHJvdWdoKHMpCiArCQkJCSAgICAmJiBzLT5zMy0+cHJldmlvdXNfc2VydmVyX2ZpbmlzaGVkX2xlbiA9PSAwIC8qIG5vIGN1dHRocm91Z2ggb24gcmVuZWdvdGlhdGlvbiAod291bGQgY29tcGxpY2F0ZSB0aGUgc3RhdGUgbWFjaGluZSkgKi8KICsJCQkJICAgKQogKwkJCQkJewpAQCAtMTMwLDcgKzEyMCw3IEBACiAgCQkJCX0KICAJCQlzLT5pbml0X251bT0wOwogIAkJCWJyZWFrOwotQEAgLTU4MSw2ICs2MDQsMjQgQEAgaW50IHNzbDNfY29ubmVjdChTU0wgKnMpCitAQCAtNTgxLDYgKzYwNSwyNCBAQCBpbnQgc3NsM19jb25uZWN0KFNTTCAqcykKICAJCQlzLT5zdGF0ZT1zLT5zMy0+dG1wLm5leHRfc3RhdGU7CiAgCQkJYnJlYWs7CiAgCkBAIC0xNTYsMTAgKzE0NiwxMCBAQAogIAkJCS8qIGNsZWFuIGEgZmV3IHRoaW5ncyB1cCAqLwogIAkJCXNzbDNfY2xlYW51cF9rZXlfYmxvY2socyk7CiBkaWZmIC0tZ2l0IGEvc3NsL3MzX2xpYi5jIGIvc3NsL3MzX2xpYi5jCi1pbmRleCBlN2M1ZGNiLi4wZDc3YzQwIDEwMDY0NAoraW5kZXggYzRlZjI3My4uMTg2NWM3MCAxMDA2NDQKIC0tLSBhL3NzbC9zM19saWIuYwogKysrIGIvc3NsL3MzX2xpYi5jCi1AQCAtNDE5OSw5ICs0MTk5LDIyIEBAIGludCBzc2wzX3dyaXRlKFNTTCAqcywgY29uc3Qgdm9pZCAqYnVmLCBpbnQgbGVuKQorQEAgLTQyMTEsOSArNDIxMSwyMiBAQCBpbnQgc3NsM193cml0ZShTU0wgKnMsIGNvbnN0IHZvaWQgKmJ1ZiwgaW50IGxlbikKICAKICBzdGF0aWMgaW50IHNzbDNfcmVhZF9pbnRlcm5hbChTU0wgKnMsIHZvaWQgKmJ1ZiwgaW50IGxlbiwgaW50IHBlZWspCiAgCXsKQEAgLTE4NCwyMSArMTc0LDMwIEBACiAgCXMtPnMzLT5pbl9yZWFkX2FwcF9kYXRhPTE7CiAgCXJldD1zLT5tZXRob2QtPnNzbF9yZWFkX2J5dGVzKHMsU1NMM19SVF9BUFBMSUNBVElPTl9EQVRBLGJ1ZixsZW4scGVlayk7CiBkaWZmIC0tZ2l0IGEvc3NsL3NzbC5oIGIvc3NsL3NzbC5oCi1pbmRleCBmOWM5MDQ5Li5mMmFmOThjIDEwMDY0NAoraW5kZXggMWYyNTVjMy4uM2UzMWZiNSAxMDA2NDQKIC0tLSBhL3NzbC9zc2wuaAogKysrIGIvc3NsL3NzbC5oCi1AQCAtNjQ5LDYgKzY0OSwxMCBAQCBzdHJ1Y3Qgc3NsX3Nlc3Npb25fc3QKLSAgKi8KK0BAIC02NDQsNiArNjQ0LDcgQEAgc3RydWN0IHNzbF9zZXNzaW9uX3N0CisgICogVExTIG9ubHkuKSAgIlJlbGVhc2VkIiBidWZmZXJzIGFyZSBwdXQgb250byBhIGZyZWUtbGlzdCBpbiB0aGUgY29udGV4dAorICAqIG9yIGp1c3QgZnJlZWQgKGRlcGVuZGluZyBvbiB0aGUgY29udGV4dCdzIHNldHRpbmcgZm9yIGZyZWVsaXN0X21heF9sZW4pLiAqLworICNkZWZpbmUgU1NMX01PREVfUkVMRUFTRV9CVUZGRVJTIDB4MDAwMDAwMTBMCisrCisgLyogU2VuZCB0aGUgY3VycmVudCB0aW1lIGluIHRoZSBSYW5kb20gZmllbGRzIG9mIHRoZSBDbGllbnRIZWxsbyBhbmQKKyAgKiBTZXJ2ZXJIZWxsbyByZWNvcmRzIGZvciBjb21wYXRpYmlsaXR5IHdpdGggaHlwb3RoZXRpY2FsIGltcGxlbWVudGF0aW9ucworICAqIHRoYXQgcmVxdWlyZSBpdC4KK0BAIC02NTEsNiArNjUyLDExIEBAIHN0cnVjdCBzc2xfc2Vzc2lvbl9zdAogICNkZWZpbmUgU1NMX01PREVfU0VORF9DTElFTlRIRUxMT19USU1FIDB4MDAwMDAwMjBMCiAgI2RlZmluZSBTU0xfTU9ERV9TRU5EX1NFUlZFUkhFTExPX1RJTUUgMHgwMDAwMDA0MEwKKyAKICsvKiBXaGVuIHNldCwgY2xpZW50cyBtYXkgc2VuZCBhcHBsaWNhdGlvbiBkYXRhIGJlZm9yZSByZWNlaXB0IG9mIENDUwogKyAqIGFuZCBGaW5pc2hlZC4gIFRoaXMgbW9kZSBlbmFibGVzIGZ1bGwtaGFuZHNoYWtlcyB0byAnY29tcGxldGUnIGluCiArICogb25lIFJUVC4gKi8KICsjZGVmaW5lIFNTTF9NT0RFX0hBTkRTSEFLRV9DVVRUSFJPVUdIIDB4MDAwMDAwODBMCi0gCisrCiAgLyogTm90ZTogU1NMW19DVFhdX3NldF97b3B0aW9ucyxtb2RlfSB1c2UgfD0gb3Agb24gdGhlIHByZXZpb3VzIHZhbHVlLAogICAqIHRoZXkgY2Fubm90IGJlIHVzZWQgdG8gY2xlYXIgYml0cy4gKi8KLUBAIC0xNDE1LDEwICsxNDE5LDEyIEBAIGV4dGVybiAiQyIgeworIAorQEAgLTE0MjQsMTAgKzE0MzAsMTIgQEAgZXh0ZXJuICJDIiB7CiAgLyogSXMgdGhlIFNTTF9jb25uZWN0aW9uIGVzdGFibGlzaGVkPyAqLwogICNkZWZpbmUgU1NMX2dldF9zdGF0ZShhKQkJU1NMX3N0YXRlKGEpCiAgI2RlZmluZSBTU0xfaXNfaW5pdF9maW5pc2hlZChhKQkJKFNTTF9zdGF0ZShhKSA9PSBTU0xfU1RfT0spCkBAIC0yMTMsMTAgKzIxMiwxMCBAQAogIC8qIFRoZSBmb2xsb3dpbmcgMiBzdGF0ZXMgYXJlIGtlcHQgaW4gc3NsLT5yc3RhdGUgd2hlbiByZWFkcyBmYWlsLAogICAqIHlvdSBzaG91bGQgbm90IG5lZWQgdGhlc2UgKi8KIGRpZmYgLS1naXQgYS9zc2wvc3NsMy5oIGIvc3NsL3NzbDMuaAotaW5kZXggMjQ3ZTg4Yy4uYmQwZDc2NCAxMDA2NDQKK2luZGV4IGNiOGIyNDkuLjlhNjFiNzEgMTAwNjQ0CiAtLS0gYS9zc2wvc3NsMy5oCiArKysgYi9zc2wvc3NsMy5oCi1AQCAtNTQ3LDYgKzU0Nyw3IEBAIHR5cGVkZWYgc3RydWN0IHNzbDNfc3RhdGVfc3QKK0BAIC01NTYsNiArNTU2LDcgQEAgdHlwZWRlZiBzdHJ1Y3Qgc3NsM19zdGF0ZV9zdAogIC8qY2xpZW50ICovCiAgLyogZXh0cmEgc3RhdGUgKi8KICAjZGVmaW5lIFNTTDNfU1RfQ1dfRkxVU0gJCSgweDEwMHxTU0xfU1RfQ09OTkVDVCkKQEAgLTIyNSwxMCArMjI0LDEwIEBACiAgI2RlZmluZSBEVExTMV9TQ1RQX1NUX0NXX1dSSVRFX1NPQ0sJCQkoMHgzMTB8U1NMX1NUX0NPTk5FQ1QpCiAgI2RlZmluZSBEVExTMV9TQ1RQX1NUX0NSX1JFQURfU09DSwkJCSgweDMyMHxTU0xfU1RfQ09OTkVDVCkKIGRpZmYgLS1naXQgYS9zc2wvc3NsX2xpYi5jIGIvc3NsL3NzbF9saWIuYwotaW5kZXggMTRkMTQzZC4uYTU2ZTZlZiAxMDA2NDQKK2luZGV4IDZkYmMzYzEuLjc4OTI5MjggMTAwNjQ0CiAtLS0gYS9zc2wvc3NsX2xpYi5jCiArKysgYi9zc2wvc3NsX2xpYi5jCi1AQCAtMzIyNSw2ICszMjI1LDE5IEBAIHZvaWQgU1NMX3NldF9tc2dfY2FsbGJhY2soU1NMICpzc2wsIHZvaWQgKCpjYikoaW50IHdyaXRlX3AsIGludCB2ZXJzaW9uLCBpbnQgY29uCitAQCAtMzIyNSw2ICszMjI1LDQ4IEBAIHZvaWQgU1NMX3NldF9tc2dfY2FsbGJhY2soU1NMICpzc2wsIHZvaWQgKCpjYikoaW50IHdyaXRlX3AsIGludCB2ZXJzaW9uLCBpbnQgY29uCiAgCVNTTF9jYWxsYmFja19jdHJsKHNzbCwgU1NMX0NUUkxfU0VUX01TR19DQUxMQkFDSywgKHZvaWQgKCopKHZvaWQpKWNiKTsKICAJfQogIApAQCAtMjM5LDE3ICsyMzgsNTkgQEAKICsJCXMtPnZlcnNpb24gPj0gU1NMM19WRVJTSU9OICYmCiArCQlzLT5zMy0+aW5fcmVhZF9hcHBfZGF0YSA9PSAwICYmICAgLyogY3V0dGhyb3VnaCBvbmx5IGFwcGxpZXMgdG8gd3JpdGUoKSAqLwogKwkJKFNTTF9nZXRfbW9kZSgoU1NMKilzKSAmIFNTTF9NT0RFX0hBTkRTSEFLRV9DVVRUSFJPVUdIKSAmJiAgLyogY3V0dGhyb3VnaCBlbmFibGVkICovCi0rCQlTU0xfZ2V0X2NpcGhlcl9iaXRzKHMsIE5VTEwpID49IDEyOCAmJiAgICAgICAgICAgICAgICAgICAgICAvKiBzdHJvbmcgY2lwaGVyIGNob29zZW4gKi8KKysJCXNzbDNfY2FuX2N1dHRocm91Z2gocykgJiYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGN1dHRocm91Z2ggYWxsb3dlZCAqLwogKwkJcy0+czMtPnByZXZpb3VzX3NlcnZlcl9maW5pc2hlZF9sZW4gPT0gMCAmJiAgICAgICAgICAgICAgICAgLyogbm90IGEgcmVuZWdvdGlhdGlvbiBoYW5kc2hha2UgKi8KICsJCShzLT5zdGF0ZSA9PSBTU0wzX1NUX0NSX1NFU1NJT05fVElDS0VUX0EgfHwgICAgICAgICAgICAgICAgIC8qIHJlYWR5IHRvIHdyaXRlIGFwcC1kYXRhKi8KICsJCQlzLT5zdGF0ZSA9PSBTU0wzX1NUX0NSX0ZJTklTSEVEX0EpKTsKICsJfQogKworK2ludCBzc2wzX2Nhbl9jdXR0aHJvdWdoKGNvbnN0IFNTTCAqcykKKysJeworKwljb25zdCBTU0xfQ0lQSEVSICpjOworKworKwkvKiByZXF1aXJlIGEgc3Ryb25nIGVub3VnaCBjaXBoZXIgKi8KKysJaWYgKFNTTF9nZXRfY2lwaGVyX2JpdHMocywgTlVMTCkgPCAxMjgpCisrCQlyZXR1cm4gMDsKKysKKysJLyogcmVxdWlyZSBBTFBOIG9yIE5QTiBleHRlbnNpb24gKi8KKysJaWYgKCFzLT5zMy0+YWxwbl9zZWxlY3RlZAorKyNpZm5kZWYgT1BFTlNTTF9OT19ORVhUUFJPVE9ORUcKKysJCSYmICFzLT5zMy0+bmV4dF9wcm90b19uZWdfc2VlbgorKyNlbmRpZgorKwkpCisrCQl7CisrCQlyZXR1cm4gMDsKKysJCX0KKysKKysJLyogcmVxdWlyZSBhIGZvcndhcmQtc2VjcmV0IGNpcGhlciAqLworKwljID0gU1NMX2dldF9jdXJyZW50X2NpcGhlcihzKTsKKysJaWYgKCFjIHx8IChjLT5hbGdvcml0aG1fbWtleSAhPSBTU0xfa0VESCAmJgorKwkJCWMtPmFsZ29yaXRobV9ta2V5ICE9IFNTTF9rRUVDREgpKQorKwkJeworKwkJcmV0dXJuIDA7CisrCQl9CisrCisrCXJldHVybiAxOworKwl9CisrCiAgLyogQWxsb2NhdGVzIG5ldyBFVlBfTURfQ1RYIGFuZCBzZXRzIHBvaW50ZXIgdG8gaXQgaW50byBnaXZlbiBwb2ludGVyCiAgICogdmFpcmFibGUsIGZyZWVpbmcgIEVWUF9NRF9DVFggcHJldmlvdXNseSBzdG9yZWQgaW4gdGhhdCB2YXJpYWJsZSwgaWYKICAgKiBhbnkuIElmIEVWUF9NRCBwb2ludGVyIGlzIHBhc3NlZCwgaW5pdGlhbGl6ZXMgY3R4IHdpdGggdGhpcyBtZAorZGlmZiAtLWdpdCBhL3NzbC9zc2xfbG9jbC5oIGIvc3NsL3NzbF9sb2NsLmgKK2luZGV4IGU0ODU5MDcuLjNiMWQ2NDQgMTAwNjQ0CistLS0gYS9zc2wvc3NsX2xvY2wuaAorKysrIGIvc3NsL3NzbF9sb2NsLmgKK0BAIC0xMTI2LDYgKzExMjYsOCBAQCBpbnQgdGxzMTJfZ2V0X3NpZ2lkKGNvbnN0IEVWUF9QS0VZICpwayk7CisgY29uc3QgRVZQX01EICp0bHMxMl9nZXRfaGFzaCh1bnNpZ25lZCBjaGFyIGhhc2hfYWxnKTsKKyAKKyAjZW5kaWYKKysKKytpbnQgc3NsM19jYW5fY3V0dGhyb3VnaChjb25zdCBTU0wgKnMpOworIEVWUF9NRF9DVFgqIHNzbF9yZXBsYWNlX2hhc2goRVZQX01EX0NUWCAqKmhhc2gsY29uc3QgRVZQX01EICptZCkgOworIHZvaWQgc3NsX2NsZWFyX2hhc2hfY3R4KEVWUF9NRF9DVFggKipoYXNoKTsKKyBpbnQgc3NsX2FkZF9zZXJ2ZXJoZWxsb19yZW5lZ290aWF0ZV9leHQoU1NMICpzLCB1bnNpZ25lZCBjaGFyICpwLCBpbnQgKmxlbiwKIGRpZmYgLS1naXQgYS9zc2wvc3NsdGVzdC5jIGIvc3NsL3NzbHRlc3QuYwotaW5kZXggMzE2YmJiMC4uOTExNjliYiAxMDA2NDQKK2luZGV4IDRmODBiZTguLjI4ZmEyMjMgMTAwNjQ0CiAtLS0gYS9zc2wvc3NsdGVzdC5jCiArKysgYi9zc2wvc3NsdGVzdC5jCiBAQCAtMzY5LDYgKzM2OSw3IEBAIHN0YXRpYyB2b2lkIHN2X3VzYWdlKHZvaWQpCkBAIC0yNzksNyArMzIwLDcgQEAKICAJCWVsc2UKICAJCQl7CiAgCQkJZnByaW50ZihzdGRlcnIsInVua25vd24gb3B0aW9uICVzXG4iLCphcmd2KTsKLUBAIC05MDAsNiArOTA2LDEyIEBAIGJhZDoKK0BAIC05MDYsNiArOTEyLDEyIEBAIGJhZDoKICAJCVNTTF9DVFhfc2V0X2NpcGhlcl9saXN0KGNfY3R4LGNpcGhlcik7CiAgCQlTU0xfQ1RYX3NldF9jaXBoZXJfbGlzdChzX2N0eCxjaXBoZXIpOwogIAkJfQpAQCAtMzA3LDUgKzM0OCw1IEBACiAgJHNzbHRlc3QgLWJpb19wYWlyIC1zc2wyICRleHRyYSB8fCBleGl0IDEKICAKIC0tIAotMS44LjIuMQorMS45LjEuNDIzLmc0NTk2ZTNhCiAKZGlmZiAtLWdpdCBhL3BhdGNoZXMvanNzZS5wYXRjaCBiL3BhdGNoZXMvMDAwMy1qc3NlLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggOTclCnJlbmFtZSBmcm9tIHBhdGNoZXMvanNzZS5wYXRjaApyZW5hbWUgdG8gcGF0Y2hlcy8wMDAzLWpzc2UucGF0Y2gKaW5kZXggNzk1YTJiYi4uYTI0YzkyMiAxMDA2NDQKLS0tIGEvcGF0Y2hlcy9qc3NlLnBhdGNoCisrKyBiL3BhdGNoZXMvMDAwMy1qc3NlLnBhdGNoCkBAIC0xMCw2ICsxMCwxNCBAQAogIAkvKiBEZWZhdWx0IGdlbmVyYXRlIHNlc3Npb24gSUQgY2FsbGJhY2suICovCiAgCUdFTl9TRVNTSU9OX0NCIGdlbmVyYXRlX3Nlc3Npb25faWQ7CiAgCitAQCAtMTU0NSw2ICsxNTQ4LDcgQEAKKyBjaGFyICoJU1NMX0NJUEhFUl9nZXRfdmVyc2lvbihjb25zdCBTU0xfQ0lQSEVSICpjKTsKKyBjb25zdCBjaGFyICoJU1NMX0NJUEhFUl9nZXRfbmFtZShjb25zdCBTU0xfQ0lQSEVSICpjKTsKKyB1bnNpZ25lZCBsb25nIAlTU0xfQ0lQSEVSX2dldF9pZChjb25zdCBTU0xfQ0lQSEVSICpjKTsKKytjb25zdCBjaGFyICoJU1NMX0NJUEhFUl9hdXRoZW50aWNhdGlvbl9tZXRob2QoY29uc3QgU1NMX0NJUEhFUiogY2lwaGVyKTsKKyAKKyBpbnQJU1NMX2dldF9mZChjb25zdCBTU0wgKnMpOworIGludAlTU0xfZ2V0X3JmZChjb25zdCBTU0wgKnMpOwogQEAgLTE1NTQsNiArMTU1OCw3IEBAIGNvbnN0IGNoYXIgICogU1NMX2dldF9jaXBoZXJfbGlzdChjb25zdCAKICBjaGFyICoJU1NMX2dldF9zaGFyZWRfY2lwaGVycyhjb25zdCBTU0wgKnMsIGNoYXIgKmJ1ZiwgaW50IGxlbik7CiAgaW50CVNTTF9nZXRfcmVhZF9haGVhZChjb25zdCBTU0wgKiBzKTsKZGlmZiAtLWdpdCBhL3BhdGNoZXMvMDAwNC1jaGFubmVsaWQucGF0Y2ggYi9wYXRjaGVzLzAwMDQtY2hhbm5lbGlkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiOWVjOGEKLS0tIC9kZXYvbnVsbAorKysgYi9wYXRjaGVzLzAwMDQtY2hhbm5lbGlkLnBhdGNoCkBAIC0wLDAgKzEsMTQ2MiBAQAorZGlmZiAtLWdpdCBhL2NyeXB0by9iaW8vYmlvLmggYi9jcnlwdG8vYmlvL2Jpby5oCitpbmRleCAwNTY5OWFiLi5kMDVmYTIyIDEwMDY0NAorLS0tIGEvY3J5cHRvL2Jpby9iaW8uaAorKysrIGIvY3J5cHRvL2Jpby9iaW8uaAorQEAgLTI2Niw2ICsyNjYsOSBAQCB2b2lkIEJJT19jbGVhcl9mbGFncyhCSU8gKmIsIGludCBmbGFncyk7CisgI2RlZmluZSBCSU9fUlJfQ09OTkVDVAkJCTB4MDIKKyAvKiBSZXR1cm5lZCBmcm9tIHRoZSBhY2NlcHQgQklPIHdoZW4gYW4gYWNjZXB0IHdvdWxkIGhhdmUgYmxvY2tlZCAqLworICNkZWZpbmUgQklPX1JSX0FDQ0VQVAkJCTB4MDMKKysvKiBSZXR1cm5lZCBmcm9tIHRoZSBTU0wgYmlvIHdoZW4gdGhlIGNoYW5uZWwgaWQgcmV0cmlldmFsIGNvZGUgY2Fubm90IGZpbmQgdGhlCisrICogcHJpdmF0ZSBrZXkuICovCisrI2RlZmluZSBCSU9fUlJfU1NMX0NIQU5ORUxfSURfTE9PS1VQCTB4MDQKKyAKKyAvKiBUaGVzZSBhcmUgcGFzc2VkIGJ5IHRoZSBCSU8gY2FsbGJhY2sgKi8KKyAjZGVmaW5lIEJJT19DQl9GUkVFCTB4MDEKK2RpZmYgLS1naXQgYS9jcnlwdG8vZXZwL2V2cC5oIGIvY3J5cHRvL2V2cC9ldnAuaAoraW5kZXggZWE0YmVkOS4uNWYxOGQ0YiAxMDA2NDQKKy0tLSBhL2NyeXB0by9ldnAvZXZwLmgKKysrKyBiL2NyeXB0by9ldnAvZXZwLmgKK0BAIC05MjEsNiArOTIxLDcgQEAgc3RydWN0IGVjX2tleV9zdCAqRVZQX1BLRVlfZ2V0MV9FQ19LRVkoRVZQX1BLRVkgKnBrZXkpOworICNlbmRpZgorIAorIEVWUF9QS0VZICoJRVZQX1BLRVlfbmV3KHZvaWQpOworK0VWUF9QS0VZICoJRVZQX1BLRVlfZHVwKEVWUF9QS0VZICpwa2V5KTsKKyB2b2lkCQlFVlBfUEtFWV9mcmVlKEVWUF9QS0VZICpwa2V5KTsKKyAKKyBFVlBfUEtFWSAqCWQyaV9QdWJsaWNLZXkoaW50IHR5cGUsRVZQX1BLRVkgKiphLCBjb25zdCB1bnNpZ25lZCBjaGFyICoqcHAsCitkaWZmIC0tZ2l0IGEvY3J5cHRvL2V2cC9wX2xpYi5jIGIvY3J5cHRvL2V2cC9wX2xpYi5jCitpbmRleCBhMGUxNGEzLi42NWE0NDQwIDEwMDY0NAorLS0tIGEvY3J5cHRvL2V2cC9wX2xpYi5jCisrKysgYi9jcnlwdG8vZXZwL3BfbGliLmMKK0BAIC0yMDAsNiArMjAwLDEyIEBAIEVWUF9QS0VZICpFVlBfUEtFWV9uZXcodm9pZCkKKyAJcmV0dXJuKHJldCk7CisgCX0KKyAKKytFVlBfUEtFWSAqRVZQX1BLRVlfZHVwKEVWUF9QS0VZICpwa2V5KQorKwl7CisrCUNSWVBUT19hZGQoJnBrZXktPnJlZmVyZW5jZXMsMSxDUllQVE9fTE9DS19FVlBfUEtFWSk7CisrCXJldHVybiBwa2V5OworKwl9CisrCisgLyogU2V0dXAgYSBwdWJsaWMga2V5IEFTTjEgbWV0aG9kIGFuZCBFTkdJTkUgZnJvbSBhIE5JRCBvciBhIHN0cmluZy4KKyAgKiBJZiBwa2V5IGlzIE5VTEwganVzdCByZXR1cm4gMSBvciAwIGlmIHRoZSBhbGdvcml0aG0gZXhpc3RzLgorICAqLworZGlmZiAtLWdpdCBhL3NzbC9iaW9fc3NsLmMgYi9zc2wvYmlvX3NzbC5jCitpbmRleCBlOTU1MmNhLi4wNmExM2RlIDEwMDY0NAorLS0tIGEvc3NsL2Jpb19zc2wuYworKysrIGIvc3NsL2Jpb19zc2wuYworQEAgLTIwNiw2ICsyMDYsMTAgQEAgc3RhdGljIGludCBzc2xfcmVhZChCSU8gKmIsIGNoYXIgKm91dCwgaW50IG91dGwpCisgCQlCSU9fc2V0X3JldHJ5X3NwZWNpYWwoYik7CisgCQlyZXRyeV9yZWFzb249QklPX1JSX1NTTF9YNTA5X0xPT0tVUDsKKyAJCWJyZWFrOworKwljYXNlIFNTTF9FUlJPUl9XQU5UX0NIQU5ORUxfSURfTE9PS1VQOgorKwkJQklPX3NldF9yZXRyeV9zcGVjaWFsKGIpOworKwkJcmV0cnlfcmVhc29uPUJJT19SUl9TU0xfQ0hBTk5FTF9JRF9MT09LVVA7CisrCQlicmVhazsKKyAJY2FzZSBTU0xfRVJST1JfV0FOVF9BQ0NFUFQ6CisgCQlCSU9fc2V0X3JldHJ5X3NwZWNpYWwoYik7CisgCQlyZXRyeV9yZWFzb249QklPX1JSX0FDQ0VQVDsKK0BAIC0yODAsNiArMjg0LDEwIEBAIHN0YXRpYyBpbnQgc3NsX3dyaXRlKEJJTyAqYiwgY29uc3QgY2hhciAqb3V0LCBpbnQgb3V0bCkKKyAJCUJJT19zZXRfcmV0cnlfc3BlY2lhbChiKTsKKyAJCXJldHJ5X3JlYXNvbj1CSU9fUlJfU1NMX1g1MDlfTE9PS1VQOworIAkJYnJlYWs7CisrCWNhc2UgU1NMX0VSUk9SX1dBTlRfQ0hBTk5FTF9JRF9MT09LVVA6CisrCQlCSU9fc2V0X3JldHJ5X3NwZWNpYWwoYik7CisrCQlyZXRyeV9yZWFzb249QklPX1JSX1NTTF9DSEFOTkVMX0lEX0xPT0tVUDsKKysJCWJyZWFrOworIAljYXNlIFNTTF9FUlJPUl9XQU5UX0NPTk5FQ1Q6CisgCQlCSU9fc2V0X3JldHJ5X3NwZWNpYWwoYik7CisgCQlyZXRyeV9yZWFzb249QklPX1JSX0NPTk5FQ1Q7CitkaWZmIC0tZ2l0IGEvc3NsL3MzX2JvdGguYyBiL3NzbC9zM19ib3RoLmMKK2luZGV4IDUzYjkzOTAuLmMwZGFjNzAgMTAwNjQ0CistLS0gYS9zc2wvczNfYm90aC5jCisrKysgYi9zc2wvczNfYm90aC5jCitAQCAtNTU0LDcgKzU1NCw4IEBAIGxvbmcgc3NsM19nZXRfbWVzc2FnZShTU0wgKnMsIGludCBzdDEsIGludCBzdG4sIGludCBtdCwgbG9uZyBtYXgsIGludCAqb2spCisgI2VuZGlmCisgCisgCS8qIEZlZWQgdGhpcyBtZXNzYWdlIGludG8gTUFDIGNvbXB1dGF0aW9uLiAqLworLQlzc2wzX2ZpbmlzaF9tYWMocywgKHVuc2lnbmVkIGNoYXIgKilzLT5pbml0X2J1Zi0+ZGF0YSwgcy0+aW5pdF9udW0gKyA0KTsKKysJaWYgKCooKHVuc2lnbmVkIGNoYXIqKSBzLT5pbml0X2J1Zi0+ZGF0YSkgIT0gU1NMM19NVF9FTkNSWVBURURfRVhURU5TSU9OUykKKysJCXNzbDNfZmluaXNoX21hYyhzLCAodW5zaWduZWQgY2hhciAqKXMtPmluaXRfYnVmLT5kYXRhLCBzLT5pbml0X251bSArIDQpOworIAlpZiAocy0+bXNnX2NhbGxiYWNrKQorIAkJcy0+bXNnX2NhbGxiYWNrKDAsIHMtPnZlcnNpb24sIFNTTDNfUlRfSEFORFNIQUtFLCBzLT5pbml0X2J1Zi0+ZGF0YSwgKHNpemVfdClzLT5pbml0X251bSArIDQsIHMsIHMtPm1zZ19jYWxsYmFja19hcmcpOworIAkqb2s9MTsKK2RpZmYgLS1naXQgYS9zc2wvczNfY2xudC5jIGIvc3NsL3MzX2NsbnQuYworaW5kZXggM2QzZmQ2NC4uN2UwYzRkNSAxMDA2NDQKKy0tLSBhL3NzbC9zM19jbG50LmMKKysrKyBiL3NzbC9zM19jbG50LmMKK0BAIC00NjUsMTMgKzQ2NSwxNCBAQCBpbnQgc3NsM19jb25uZWN0KFNTTCAqcykKKyAJCQkJU1NMM19TVF9DV19DSEFOR0VfQSxTU0wzX1NUX0NXX0NIQU5HRV9CKTsKKyAJCQlpZiAocmV0IDw9IDApIGdvdG8gZW5kOworIAorLSNpZiBkZWZpbmVkKE9QRU5TU0xfTk9fVExTRVhUKSB8fCBkZWZpbmVkKE9QRU5TU0xfTk9fTkVYVFBST1RPTkVHKQorIAkJCXMtPnN0YXRlPVNTTDNfU1RfQ1dfRklOSVNIRURfQTsKKy0jZWxzZQorKyNpZiAhZGVmaW5lZChPUEVOU1NMX05PX1RMU0VYVCkKKysJCQlpZiAocy0+czMtPnRsc2V4dF9jaGFubmVsX2lkX3ZhbGlkKQorKwkJCQlzLT5zdGF0ZT1TU0wzX1NUX0NXX0NIQU5ORUxfSURfQTsKKysjIGlmICFkZWZpbmVkKE9QRU5TU0xfTk9fTkVYVFBST1RPTkVHKQorIAkJCWlmIChzLT5zMy0+bmV4dF9wcm90b19uZWdfc2VlbikKKyAJCQkJcy0+c3RhdGU9U1NMM19TVF9DV19ORVhUX1BST1RPX0E7CistCQkJZWxzZQorLQkJCQlzLT5zdGF0ZT1TU0wzX1NUX0NXX0ZJTklTSEVEX0E7CisrIyBlbmRpZgorICNlbmRpZgorIAkJCXMtPmluaXRfbnVtPTA7CisgCitAQCAtNTA1LDYgKzUwNiwxOCBAQCBpbnQgc3NsM19jb25uZWN0KFNTTCAqcykKKyAJCWNhc2UgU1NMM19TVF9DV19ORVhUX1BST1RPX0I6CisgCQkJcmV0PXNzbDNfc2VuZF9uZXh0X3Byb3RvKHMpOworIAkJCWlmIChyZXQgPD0gMCkgZ290byBlbmQ7CisrCQkJaWYgKHMtPnMzLT50bHNleHRfY2hhbm5lbF9pZF92YWxpZCkKKysJCQkJcy0+c3RhdGU9U1NMM19TVF9DV19DSEFOTkVMX0lEX0E7CisrCQkJZWxzZQorKwkJCQlzLT5zdGF0ZT1TU0wzX1NUX0NXX0ZJTklTSEVEX0E7CisrCQkJYnJlYWs7CisrI2VuZGlmCisrCisrI2lmICFkZWZpbmVkKE9QRU5TU0xfTk9fVExTRVhUKQorKwkJY2FzZSBTU0wzX1NUX0NXX0NIQU5ORUxfSURfQToKKysJCWNhc2UgU1NMM19TVF9DV19DSEFOTkVMX0lEX0I6CisrCQkJcmV0PXNzbDNfc2VuZF9jaGFubmVsX2lkKHMpOworKwkJCWlmIChyZXQgPD0gMCkgZ290byBlbmQ7CisgCQkJcy0+c3RhdGU9U1NMM19TVF9DV19GSU5JU0hFRF9BOworIAkJCWJyZWFrOworICNlbmRpZgorQEAgLTUzMiw2ICs1NDUsMTggQEAgaW50IHNzbDNfY29ubmVjdChTU0wgKnMpCisgCQkJCX0KKyAJCQllbHNlCisgCQkJCXsKKysJCQkJLyogVGhpcyBpcyBhIG5vbi1yZXN1bXB0aW9uIGhhbmRzaGFrZS4gSWYgaXQKKysJCQkJICogaW52b2x2ZXMgQ2hhbm5lbElELCB0aGVuIHJlY29yZCB0aGUKKysJCQkJICogaGFuZHNoYWtlIGhhc2hlcyBhdCB0aGlzIHBvaW50IGluIHRoZQorKwkJCQkgKiBzZXNzaW9uIHNvIHRoYXQgYW55IHJlc3VtcHRpb24gb2YgdGhpcworKwkJCQkgKiBzZXNzaW9uIHdpdGggQ2hhbm5lbElEIGNhbiBzaWduIHRob3NlCisrCQkJCSAqIGhhc2hlcy4gKi8KKysJCQkJaWYgKHMtPnMzLT50bHNleHRfY2hhbm5lbF9pZF9uZXcpCisrCQkJCQl7CisrCQkJCQlyZXQgPSB0bHMxX3JlY29yZF9oYW5kc2hha2VfaGFzaGVzX2Zvcl9jaGFubmVsX2lkKHMpOworKwkJCQkJaWYgKHJldCA8PSAwKQorKwkJCQkJCWdvdG8gZW5kOworKwkJCQkJfQorIAkJCQlpZiAoKFNTTF9nZXRfbW9kZShzKSAmIFNTTF9NT0RFX0hBTkRTSEFLRV9DVVRUSFJPVUdIKQorIAkJCQkgICAgJiYgc3NsM19jYW5fY3V0dGhyb3VnaChzKQorIAkJCQkgICAgJiYgcy0+czMtPnByZXZpb3VzX3NlcnZlcl9maW5pc2hlZF9sZW4gPT0gMCAvKiBubyBjdXR0aHJvdWdoIG9uIHJlbmVnb3RpYXRpb24gKHdvdWxkIGNvbXBsaWNhdGUgdGhlIHN0YXRlIG1hY2hpbmUpICovCitAQCAtMzMzOCw3ICszMzYzLDggQEAgZXJyOgorIAlyZXR1cm4oMCk7CisgCX0KKyAKKy0jaWYgIWRlZmluZWQoT1BFTlNTTF9OT19UTFNFWFQpICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fTkVYVFBST1RPTkVHKQorKyNpZiAhZGVmaW5lZChPUEVOU1NMX05PX1RMU0VYVCkKKysjIGlmICFkZWZpbmVkKE9QRU5TU0xfTk9fTkVYVFBST1RPTkVHKQorIGludCBzc2wzX3NlbmRfbmV4dF9wcm90byhTU0wgKnMpCisgCXsKKyAJdW5zaWduZWQgaW50IGxlbiwgcGFkZGluZ19sZW47CitAQCAtMzM2Miw3ICszMzg4LDEzNSBAQCBpbnQgc3NsM19zZW5kX25leHRfcHJvdG8oU1NMICpzKQorIAorIAlyZXR1cm4gc3NsM19kb193cml0ZShzLCBTU0wzX1JUX0hBTkRTSEFLRSk7CisgfQorLSNlbmRpZiAgLyogIU9QRU5TU0xfTk9fVExTRVhUICYmICFPUEVOU1NMX05PX05FWFRQUk9UT05FRyAqLworKyMgZW5kaWYgIC8qICFPUEVOU1NMX05PX05FWFRQUk9UT05FRyAqLworKworK2ludCBzc2wzX3NlbmRfY2hhbm5lbF9pZChTU0wgKnMpCisrCXsKKysJdW5zaWduZWQgY2hhciAqZDsKKysJaW50IHJldCA9IC0xLCBwdWJsaWNfa2V5X2xlbjsKKysJRVZQX01EX0NUWCBtZF9jdHg7CisrCXNpemVfdCBzaWdfbGVuOworKwlFQ0RTQV9TSUcgKnNpZyA9IE5VTEw7CisrCXVuc2lnbmVkIGNoYXIgKnB1YmxpY19rZXkgPSBOVUxMLCAqZGVycCwgKmRlcl9zaWcgPSBOVUxMOworKworKwlpZiAocy0+c3RhdGUgIT0gU1NMM19TVF9DV19DSEFOTkVMX0lEX0EpCisrCQlyZXR1cm4gc3NsM19kb193cml0ZShzLCBTU0wzX1JUX0hBTkRTSEFLRSk7CisrCisrCWlmICghcy0+dGxzZXh0X2NoYW5uZWxfaWRfcHJpdmF0ZSAmJiBzLT5jdHgtPmNoYW5uZWxfaWRfY2IpCisrCQl7CisrCQlFVlBfUEtFWSAqa2V5ID0gTlVMTDsKKysJCXMtPmN0eC0+Y2hhbm5lbF9pZF9jYihzLCAma2V5KTsKKysJCWlmIChrZXkgIT0gTlVMTCkKKysJCQl7CisrCQkJcy0+dGxzZXh0X2NoYW5uZWxfaWRfcHJpdmF0ZSA9IGtleTsKKysJCQl9CisrCQl9CisrCWlmICghcy0+dGxzZXh0X2NoYW5uZWxfaWRfcHJpdmF0ZSkKKysJCXsKKysJCXMtPnJ3c3RhdGU9U1NMX0NIQU5ORUxfSURfTE9PS1VQOworKwkJcmV0dXJuICgtMSk7CisrCQl9CisrCXMtPnJ3c3RhdGU9U1NMX05PVEhJTkc7CisrCisrCWQgPSAodW5zaWduZWQgY2hhciAqKXMtPmluaXRfYnVmLT5kYXRhOworKwkqKGQrKyk9U1NMM19NVF9FTkNSWVBURURfRVhURU5TSU9OUzsKKysJbDJuMygyICsgMiArIFRMU0VYVF9DSEFOTkVMX0lEX1NJWkUsIGQpOworKwlpZiAocy0+czMtPnRsc2V4dF9jaGFubmVsX2lkX25ldykKKysJCXMybihUTFNFWFRfVFlQRV9jaGFubmVsX2lkX25ldywgZCk7CisrCWVsc2UKKysJCXMybihUTFNFWFRfVFlQRV9jaGFubmVsX2lkLCBkKTsKKysJczJuKFRMU0VYVF9DSEFOTkVMX0lEX1NJWkUsIGQpOworKworKwlFVlBfTURfQ1RYX2luaXQoJm1kX2N0eCk7CisrCisrCXB1YmxpY19rZXlfbGVuID0gaTJkX1B1YmxpY0tleShzLT50bHNleHRfY2hhbm5lbF9pZF9wcml2YXRlLCBOVUxMKTsKKysJaWYgKHB1YmxpY19rZXlfbGVuIDw9IDApCisrCQl7CisrCQlTU0xlcnIoU1NMX0ZfU1NMM19TRU5EX0NIQU5ORUxfSUQsU1NMX1JfQ0FOTk9UX1NFUklBTElaRV9QVUJMSUNfS0VZKTsKKysJCWdvdG8gZXJyOworKwkJfQorKwkvKiBpMmRfUHVibGljS2V5IHdpbGwgcHJvZHVjZSBhbiBBTlNJIFg5LjYyIHB1YmxpYyBrZXkgd2hpY2gsIGZvciBhCisrCSAqIFAtMjU2IGtleSwgaXMgMHgwNCAobWVhbmluZyB1bmNvbXByZXNzZWQpIGZvbGxvd2VkIGJ5IHRoZSB4IGFuZCB5CisrCSAqIGZpZWxkIGVsZW1lbnRzIGFzIDMyLWJ5dGUsIGJpZy1lbmRpYW4gbnVtYmVycy4gKi8KKysJaWYgKHB1YmxpY19rZXlfbGVuICE9IDY1KQorKwkJeworKwkJU1NMZXJyKFNTTF9GX1NTTDNfU0VORF9DSEFOTkVMX0lELFNTTF9SX0NIQU5ORUxfSURfTk9UX1AyNTYpOworKwkJZ290byBlcnI7CisrCQl9CisrCXB1YmxpY19rZXkgPSBPUEVOU1NMX21hbGxvYyhwdWJsaWNfa2V5X2xlbik7CisrCWlmICghcHVibGljX2tleSkKKysJCXsKKysJCVNTTGVycihTU0xfRl9TU0wzX1NFTkRfQ0hBTk5FTF9JRCxFUlJfUl9NQUxMT0NfRkFJTFVSRSk7CisrCQlnb3RvIGVycjsKKysJCX0KKysKKysJZGVycCA9IHB1YmxpY19rZXk7CisrCWkyZF9QdWJsaWNLZXkocy0+dGxzZXh0X2NoYW5uZWxfaWRfcHJpdmF0ZSwgJmRlcnApOworKworKwlpZiAoRVZQX0RpZ2VzdFNpZ25Jbml0KCZtZF9jdHgsIE5VTEwsIEVWUF9zaGEyNTYoKSwgTlVMTCwKKysJCQkgICAgICAgcy0+dGxzZXh0X2NoYW5uZWxfaWRfcHJpdmF0ZSkgIT0gMSkKKysJCXsKKysJCVNTTGVycihTU0xfRl9TU0wzX1NFTkRfQ0hBTk5FTF9JRCxTU0xfUl9FVlBfRElHRVNUU0lHTklOSVRfRkFJTEVEKTsKKysJCWdvdG8gZXJyOworKwkJfQorKworKwlpZiAoIXRsczFfY2hhbm5lbF9pZF9oYXNoKCZtZF9jdHgsIHMpKQorKwkJZ290byBlcnI7CisrCisrCWlmICghRVZQX0RpZ2VzdFNpZ25GaW5hbCgmbWRfY3R4LCBOVUxMLCAmc2lnX2xlbikpCisrCQl7CisrCQlTU0xlcnIoU1NMX0ZfU1NMM19TRU5EX0NIQU5ORUxfSUQsU1NMX1JfRVZQX0RJR0VTVFNJR05GSU5BTF9GQUlMRUQpOworKwkJZ290byBlcnI7CisrCQl9CisrCisrCWRlcl9zaWcgPSBPUEVOU1NMX21hbGxvYyhzaWdfbGVuKTsKKysJaWYgKCFkZXJfc2lnKQorKwkJeworKwkJU1NMZXJyKFNTTF9GX1NTTDNfU0VORF9DSEFOTkVMX0lELEVSUl9SX01BTExPQ19GQUlMVVJFKTsKKysJCWdvdG8gZXJyOworKwkJfQorKworKwlpZiAoIUVWUF9EaWdlc3RTaWduRmluYWwoJm1kX2N0eCwgZGVyX3NpZywgJnNpZ19sZW4pKQorKwkJeworKwkJU1NMZXJyKFNTTF9GX1NTTDNfU0VORF9DSEFOTkVMX0lELFNTTF9SX0VWUF9ESUdFU1RTSUdORklOQUxfRkFJTEVEKTsKKysJCWdvdG8gZXJyOworKwkJfQorKworKwlkZXJwID0gZGVyX3NpZzsKKysJc2lnID0gZDJpX0VDRFNBX1NJRyhOVUxMLCAoY29uc3QgdW5zaWduZWQgY2hhcioqKSAmZGVycCwgc2lnX2xlbik7CisrCWlmIChzaWcgPT0gTlVMTCkKKysJCXsKKysJCVNTTGVycihTU0xfRl9TU0wzX1NFTkRfQ0hBTk5FTF9JRCxTU0xfUl9EMklfRUNEU0FfU0lHKTsKKysJCWdvdG8gZXJyOworKwkJfQorKworKwkvKiBUaGUgZmlyc3QgYnl0ZSBvZiBwdWJsaWNfa2V5IHdpbGwgYmUgMHg0LCBkZW5vdGluZyBhbiB1bmNvbXByZXNzZWQga2V5LiAqLworKwltZW1jcHkoZCwgcHVibGljX2tleSArIDEsIDY0KTsKKysJZCArPSA2NDsKKysJbWVtc2V0KGQsIDAsIDIgKiAzMik7CisrCUJOX2JuMmJpbihzaWctPnIsIGQgKyAzMiAtIEJOX251bV9ieXRlcyhzaWctPnIpKTsKKysJZCArPSAzMjsKKysJQk5fYm4yYmluKHNpZy0+cywgZCArIDMyIC0gQk5fbnVtX2J5dGVzKHNpZy0+cykpOworKwlkICs9IDMyOworKworKwlzLT5zdGF0ZSA9IFNTTDNfU1RfQ1dfQ0hBTk5FTF9JRF9COworKwlzLT5pbml0X251bSA9IDQgKyAyICsgMiArIFRMU0VYVF9DSEFOTkVMX0lEX1NJWkU7CisrCXMtPmluaXRfb2ZmID0gMDsKKysKKysJcmV0ID0gc3NsM19kb193cml0ZShzLCBTU0wzX1JUX0hBTkRTSEFLRSk7CisrCisrZXJyOgorKwlFVlBfTURfQ1RYX2NsZWFudXAoJm1kX2N0eCk7CisrCWlmIChwdWJsaWNfa2V5KQorKwkJT1BFTlNTTF9mcmVlKHB1YmxpY19rZXkpOworKwlpZiAoZGVyX3NpZykKKysJCU9QRU5TU0xfZnJlZShkZXJfc2lnKTsKKysJaWYgKHNpZykKKysJCUVDRFNBX1NJR19mcmVlKHNpZyk7CisrCisrCXJldHVybiByZXQ7CisrCX0KKysjZW5kaWYgIC8qICFPUEVOU1NMX05PX1RMU0VYVCAqLworIAorIC8qIENoZWNrIHRvIHNlZSBpZiBoYW5kc2hha2UgaXMgZnVsbCBvciByZXN1bWVkLiBVc3VhbGx5IHRoaXMgaXMganVzdCBhCisgICogY2FzZSBvZiBjaGVja2luZyB0byBzZWUgaWYgYSBjYWNoZSBoaXQgaGFzIG9jY3VycmVkLiBJbiB0aGUgY2FzZSBvZgorZGlmZiAtLWdpdCBhL3NzbC9zM19saWIuYyBiL3NzbC9zM19saWIuYworaW5kZXggMTg2NWM3MC4uZjgwMTkyMyAxMDA2NDQKKy0tLSBhL3NzbC9zM19saWIuYworKysrIGIvc3NsL3MzX2xpYi5jCitAQCAtMjk1MSw2ICsyOTUxLDExIEBAIGludCBzc2wzX25ldyhTU0wgKnMpCisgI2lmbmRlZiBPUEVOU1NMX05PX1NSUAorIAlTU0xfU1JQX0NUWF9pbml0KHMpOworICNlbmRpZgorKyNpZiAhZGVmaW5lZChPUEVOU1NMX05PX1RMU0VYVCkKKysJcy0+dGxzZXh0X2NoYW5uZWxfaWRfZW5hYmxlZCA9IHMtPmN0eC0+dGxzZXh0X2NoYW5uZWxfaWRfZW5hYmxlZDsKKysJaWYgKHMtPmN0eC0+dGxzZXh0X2NoYW5uZWxfaWRfcHJpdmF0ZSkKKysJCXMtPnRsc2V4dF9jaGFubmVsX2lkX3ByaXZhdGUgPSBFVlBfUEtFWV9kdXAocy0+Y3R4LT50bHNleHRfY2hhbm5lbF9pZF9wcml2YXRlKTsKKysjZW5kaWYKKyAJcy0+bWV0aG9kLT5zc2xfY2xlYXIocyk7CisgCXJldHVybigxKTsKKyBlcnI6CitAQCAtMzA3OSw2ICszMDg0LDEwIEBAIHZvaWQgc3NsM19jbGVhcihTU0wgKnMpCisgCQlzLT5uZXh0X3Byb3RvX25lZ290aWF0ZWRfbGVuID0gMDsKKyAJCX0KKyAjZW5kaWYKKysKKysjaWYgIWRlZmluZWQoT1BFTlNTTF9OT19UTFNFWFQpCisrCXMtPnMzLT50bHNleHRfY2hhbm5lbF9pZF92YWxpZCA9IDA7CisrI2VuZGlmCisgCX0KKyAKKyAjaWZuZGVmIE9QRU5TU0xfTk9fU1JQCitAQCAtMzM1Myw2ICszMzYyLDMzIEBAIGxvbmcgc3NsM19jdHJsKFNTTCAqcywgaW50IGNtZCwgbG9uZyBsYXJnLCB2b2lkICpwYXJnKQorIAkJcmV0ID0gMTsKKyAJCWJyZWFrOworICNlbmRpZgorKwljYXNlIFNTTF9DVFJMX0NIQU5ORUxfSUQ6CisrCQlzLT50bHNleHRfY2hhbm5lbF9pZF9lbmFibGVkID0gMTsKKysJCXJldCA9IDE7CisrCQlicmVhazsKKysKKysJY2FzZSBTU0xfQ1RSTF9TRVRfQ0hBTk5FTF9JRDoKKysJCWlmIChzLT5zZXJ2ZXIpCisrCQkJYnJlYWs7CisrCQlzLT50bHNleHRfY2hhbm5lbF9pZF9lbmFibGVkID0gMTsKKysJCWlmIChFVlBfUEtFWV9iaXRzKHBhcmcpICE9IDI1NikKKysJCQl7CisrCQkJU1NMZXJyKFNTTF9GX1NTTDNfQ1RSTCxTU0xfUl9DSEFOTkVMX0lEX05PVF9QMjU2KTsKKysJCQlicmVhazsKKysJCQl9CisrCQlpZiAocy0+dGxzZXh0X2NoYW5uZWxfaWRfcHJpdmF0ZSkKKysJCQlFVlBfUEtFWV9mcmVlKHMtPnRsc2V4dF9jaGFubmVsX2lkX3ByaXZhdGUpOworKwkJcy0+dGxzZXh0X2NoYW5uZWxfaWRfcHJpdmF0ZSA9IEVWUF9QS0VZX2R1cCgoRVZQX1BLRVkqKSBwYXJnKTsKKysJCXJldCA9IDE7CisrCQlicmVhazsKKysKKysJY2FzZSBTU0xfQ1RSTF9HRVRfQ0hBTk5FTF9JRDoKKysJCWlmICghcy0+c2VydmVyKQorKwkJCWJyZWFrOworKwkJaWYgKCFzLT5zMy0+dGxzZXh0X2NoYW5uZWxfaWRfdmFsaWQpCisrCQkJYnJlYWs7CisrCQltZW1jcHkocGFyZywgcy0+czMtPnRsc2V4dF9jaGFubmVsX2lkLCBsYXJnIDwgNjQgPyBsYXJnIDogNjQpOworKwkJcmV0dXJuIDY0OworIAorICNlbmRpZiAvKiAhT1BFTlNTTF9OT19UTFNFWFQgKi8KKyAJZGVmYXVsdDoKK0BAIC0zNTc0LDYgKzM2MTAsMTIgQEAgbG9uZyBzc2wzX2N0eF9jdHJsKFNTTF9DVFggKmN0eCwgaW50IGNtZCwgbG9uZyBsYXJnLCB2b2lkICpwYXJnKQorIAkJCX0KKyAJCXJldHVybiAxOworIAkJfQorKwljYXNlIFNTTF9DVFJMX0NIQU5ORUxfSUQ6CisrCQkvKiBtdXN0IGJlIGNhbGxlZCBvbiBhIHNlcnZlciAqLworKwkJaWYgKGN0eC0+bWV0aG9kLT5zc2xfYWNjZXB0ID09IHNzbF91bmRlZmluZWRfZnVuY3Rpb24pCisrCQkJcmV0dXJuIDA7CisrCQljdHgtPnRsc2V4dF9jaGFubmVsX2lkX2VuYWJsZWQ9MTsKKysJCXJldHVybiAxOworIAorICNpZmRlZiBUTFNFWFRfVFlQRV9vcGFxdWVfcHJmX2lucHV0CisgCWNhc2UgU1NMX0NUUkxfU0VUX1RMU0VYVF9PUEFRVUVfUFJGX0lOUFVUX0NCX0FSRzoKK0BAIC0zNjQyLDYgKzM2ODQsMTggQEAgbG9uZyBzc2wzX2N0eF9jdHJsKFNTTF9DVFggKmN0eCwgaW50IGNtZCwgbG9uZyBsYXJnLCB2b2lkICpwYXJnKQorIAkJCX0KKyAJCWJyZWFrOworIAorKwljYXNlIFNTTF9DVFJMX1NFVF9DSEFOTkVMX0lEOgorKwkJY3R4LT50bHNleHRfY2hhbm5lbF9pZF9lbmFibGVkID0gMTsKKysJCWlmIChFVlBfUEtFWV9iaXRzKHBhcmcpICE9IDI1NikKKysJCQl7CisrCQkJU1NMZXJyKFNTTF9GX1NTTDNfQ1RYX0NUUkwsU1NMX1JfQ0hBTk5FTF9JRF9OT1RfUDI1Nik7CisrCQkJYnJlYWs7CisrCQkJfQorKwkJaWYgKGN0eC0+dGxzZXh0X2NoYW5uZWxfaWRfcHJpdmF0ZSkKKysJCQlFVlBfUEtFWV9mcmVlKGN0eC0+dGxzZXh0X2NoYW5uZWxfaWRfcHJpdmF0ZSk7CisrCQljdHgtPnRsc2V4dF9jaGFubmVsX2lkX3ByaXZhdGUgPSBFVlBfUEtFWV9kdXAoKEVWUF9QS0VZKikgcGFyZyk7CisrCQlicmVhazsKKysKKyAJZGVmYXVsdDoKKyAJCXJldHVybigwKTsKKyAJCX0KK2RpZmYgLS1naXQgYS9zc2wvczNfc3J2ci5jIGIvc3NsL3MzX3NydnIuYworaW5kZXggMzIzYjI2MC4uNjgyNGVmNiAxMDA2NDQKKy0tLSBhL3NzbC9zM19zcnZyLmMKKysrKyBiL3NzbC9zM19zcnZyLmMKK0BAIC0xNTcsOCArMTU3LDExIEBACisgI2luY2x1ZGUgPG9wZW5zc2wvYnVmZmVyLmg+CisgI2luY2x1ZGUgPG9wZW5zc2wvcmFuZC5oPgorICNpbmNsdWRlIDxvcGVuc3NsL29iamVjdHMuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9lYy5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2VjZHNhLmg+CisgI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+CisgI2luY2x1ZGUgPG9wZW5zc2wvaG1hYy5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL3NoYS5oPgorICNpbmNsdWRlIDxvcGVuc3NsL3g1MDkuaD4KKyAjaWZuZGVmIE9QRU5TU0xfTk9fREgKKyAjaW5jbHVkZSA8b3BlbnNzbC9kaC5oPgorQEAgLTYxNSwxNSArNjE4LDggQEAgaW50IHNzbDNfYWNjZXB0KFNTTCAqcykKKyAJCQkJICogdGhlIGNsaWVudCB1c2VzIGl0cyBrZXkgZnJvbSB0aGUgY2VydGlmaWNhdGUKKyAJCQkJICogZm9yIGtleSBleGNoYW5nZS4KKyAJCQkJICovCistI2lmIGRlZmluZWQoT1BFTlNTTF9OT19UTFNFWFQpIHx8IGRlZmluZWQoT1BFTlNTTF9OT19ORVhUUFJPVE9ORUcpCistCQkJCXMtPnN0YXRlPVNTTDNfU1RfU1JfRklOSVNIRURfQTsKKy0jZWxzZQorLQkJCQlpZiAocy0+czMtPm5leHRfcHJvdG9fbmVnX3NlZW4pCistCQkJCQlzLT5zdGF0ZT1TU0wzX1NUX1NSX05FWFRfUFJPVE9fQTsKKy0JCQkJZWxzZQorLQkJCQkJcy0+c3RhdGU9U1NMM19TVF9TUl9GSU5JU0hFRF9BOworLSNlbmRpZgorIAkJCQlzLT5pbml0X251bSA9IDA7CisrCQkJCXMtPnN0YXRlPVNTTDNfU1RfU1JfUE9TVF9DTElFTlRfQ0VSVDsKKyAJCQkJfQorIAkJCWVsc2UgaWYgKFRMUzFfZ2V0X3ZlcnNpb24ocykgPj0gVExTMV8yX1ZFUlNJT04pCisgCQkJCXsKK0BAIC02ODMsMTYgKzY3OSwyOCBAQCBpbnQgc3NsM19hY2NlcHQoU1NMICpzKQorIAkJCXJldD1zc2wzX2dldF9jZXJ0X3ZlcmlmeShzKTsKKyAJCQlpZiAocmV0IDw9IDApIGdvdG8gZW5kOworIAorLSNpZiBkZWZpbmVkKE9QRU5TU0xfTk9fVExTRVhUKSB8fCBkZWZpbmVkKE9QRU5TU0xfTk9fTkVYVFBST1RPTkVHKQorLQkJCXMtPnN0YXRlPVNTTDNfU1RfU1JfRklOSVNIRURfQTsKKy0jZWxzZQorLQkJCWlmIChzLT5zMy0+bmV4dF9wcm90b19uZWdfc2VlbikKKysJCQlzLT5zdGF0ZT1TU0wzX1NUX1NSX1BPU1RfQ0xJRU5UX0NFUlQ7CisrCQkJcy0+aW5pdF9udW09MDsKKysJCQlicmVhazsKKysKKysJCWNhc2UgU1NMM19TVF9TUl9QT1NUX0NMSUVOVF9DRVJUOiB7CisrCQkJY2hhciBuZXh0X3Byb3RvX25lZyA9IDA7CisrCQkJY2hhciBjaGFubmVsX2lkID0gMDsKKysjaWYgIWRlZmluZWQoT1BFTlNTTF9OT19UTFNFWFQpCisrIyBpZiAhZGVmaW5lZChPUEVOU1NMX05PX05FWFRQUk9UT05FRykKKysJCQluZXh0X3Byb3RvX25lZyA9IHMtPnMzLT5uZXh0X3Byb3RvX25lZ19zZWVuOworKyMgZW5kaWYKKysJCQljaGFubmVsX2lkID0gcy0+czMtPnRsc2V4dF9jaGFubmVsX2lkX3ZhbGlkOworKyNlbmRpZgorKworKwkJCWlmIChuZXh0X3Byb3RvX25lZykKKyAJCQkJcy0+c3RhdGU9U1NMM19TVF9TUl9ORVhUX1BST1RPX0E7CisrCQkJZWxzZSBpZiAoY2hhbm5lbF9pZCkKKysJCQkJcy0+c3RhdGU9U1NMM19TVF9TUl9DSEFOTkVMX0lEX0E7CisgCQkJZWxzZQorIAkJCQlzLT5zdGF0ZT1TU0wzX1NUX1NSX0ZJTklTSEVEX0E7CistI2VuZGlmCistCQkJcy0+aW5pdF9udW09MDsKKyAJCQlicmVhazsKKysJCX0KKyAKKyAjaWYgIWRlZmluZWQoT1BFTlNTTF9OT19UTFNFWFQpICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fTkVYVFBST1RPTkVHKQorIAkJY2FzZSBTU0wzX1NUX1NSX05FWFRfUFJPVE9fQToKK0BAIC03MDAsNiArNzA4LDE5IEBAIGludCBzc2wzX2FjY2VwdChTU0wgKnMpCisgCQkJcmV0PXNzbDNfZ2V0X25leHRfcHJvdG8ocyk7CisgCQkJaWYgKHJldCA8PSAwKSBnb3RvIGVuZDsKKyAJCQlzLT5pbml0X251bSA9IDA7CisrCQkJaWYgKHMtPnMzLT50bHNleHRfY2hhbm5lbF9pZF92YWxpZCkKKysJCQkJcy0+c3RhdGU9U1NMM19TVF9TUl9DSEFOTkVMX0lEX0E7CisrCQkJZWxzZQorKwkJCQlzLT5zdGF0ZT1TU0wzX1NUX1NSX0ZJTklTSEVEX0E7CisrCQkJYnJlYWs7CisrI2VuZGlmCisrCisrI2lmICFkZWZpbmVkKE9QRU5TU0xfTk9fVExTRVhUKQorKwkJY2FzZSBTU0wzX1NUX1NSX0NIQU5ORUxfSURfQToKKysJCWNhc2UgU1NMM19TVF9TUl9DSEFOTkVMX0lEX0I6CisrCQkJcmV0PXNzbDNfZ2V0X2NoYW5uZWxfaWQocyk7CisrCQkJaWYgKHJldCA8PSAwKSBnb3RvIGVuZDsKKysJCQlzLT5pbml0X251bSA9IDA7CisgCQkJcy0+c3RhdGU9U1NMM19TVF9TUl9GSU5JU0hFRF9BOworIAkJCWJyZWFrOworICNlbmRpZgorQEAgLTcxNyw2ICs3MzgsMTUgQEAgaW50IHNzbDNfYWNjZXB0KFNTTCAqcykKKyAjZW5kaWYKKyAJCQllbHNlCisgCQkJCXMtPnN0YXRlPVNTTDNfU1RfU1dfQ0hBTkdFX0E7CisrCQkJLyogSWYgdGhpcyBpcyBhIGZ1bGwgaGFuZHNoYWtlIHdpdGggQ2hhbm5lbElEIHRoZW4KKysJCQkgKiByZWNvcmQgdGhlIGhhc2hzaGFrZSBoYXNoZXMgaW4gfHMtPnNlc3Npb258IGluIGNhc2UKKysJCQkgKiB3ZSBuZWVkIHRoZW0gdG8gdmVyaWZ5IGEgQ2hhbm5lbElEIHNpZ25hdHVyZSBvbiBhCisrCQkJICogcmVzdW1wdGlvbiBvZiB0aGlzIHNlc3Npb24gaW4gdGhlIGZ1dHVyZS4gKi8KKysJCQlpZiAoIXMtPmhpdCAmJiBzLT5zMy0+dGxzZXh0X2NoYW5uZWxfaWRfbmV3KQorKwkJCQl7CisrCQkJCXJldCA9IHRsczFfcmVjb3JkX2hhbmRzaGFrZV9oYXNoZXNfZm9yX2NoYW5uZWxfaWQocyk7CisrCQkJCWlmIChyZXQgPD0gMCkgZ290byBlbmQ7CisrCQkJCX0KKyAJCQlzLT5pbml0X251bT0wOworIAkJCWJyZWFrOworIAorQEAgLTc3MSwxOSArODAxLDcgQEAgaW50IHNzbDNfYWNjZXB0KFNTTCAqcykKKyAJCQlpZiAocmV0IDw9IDApIGdvdG8gZW5kOworIAkJCXMtPnN0YXRlPVNTTDNfU1RfU1dfRkxVU0g7CisgCQkJaWYgKHMtPmhpdCkKKy0JCQkJeworLSNpZiBkZWZpbmVkKE9QRU5TU0xfTk9fVExTRVhUKSB8fCBkZWZpbmVkKE9QRU5TU0xfTk9fTkVYVFBST1RPTkVHKQorLQkJCQlzLT5zMy0+dG1wLm5leHRfc3RhdGU9U1NMM19TVF9TUl9GSU5JU0hFRF9BOworLSNlbHNlCistCQkJCWlmIChzLT5zMy0+bmV4dF9wcm90b19uZWdfc2VlbikKKy0JCQkJCXsKKy0JCQkJCXMtPnMzLT5mbGFncyB8PSBTU0wzX0ZMQUdTX0NDU19PSzsKKy0JCQkJCXMtPnMzLT50bXAubmV4dF9zdGF0ZT1TU0wzX1NUX1NSX05FWFRfUFJPVE9fQTsKKy0JCQkJCX0KKy0JCQkJZWxzZQorLQkJCQkJcy0+czMtPnRtcC5uZXh0X3N0YXRlPVNTTDNfU1RfU1JfRklOSVNIRURfQTsKKy0jZW5kaWYKKy0JCQkJfQorKwkJCQlzLT5zMy0+dG1wLm5leHRfc3RhdGU9U1NMM19TVF9TUl9QT1NUX0NMSUVOVF9DRVJUOworIAkJCWVsc2UKKyAJCQkJcy0+czMtPnRtcC5uZXh0X3N0YXRlPVNTTF9TVF9PSzsKKyAJCQlzLT5pbml0X251bT0wOworQEAgLTE0NjYsNiArMTQ4NywyMiBAQCBpbnQgc3NsM19zZW5kX3NlcnZlcl9oZWxsbyhTU0wgKnMpCisgCisgCWlmIChzLT5zdGF0ZSA9PSBTU0wzX1NUX1NXX1NSVlJfSEVMTE9fQSkKKyAJCXsKKysJCS8qIFdlIG9ubHkgYWNjZXB0IENoYW5uZWxJRHMgb24gY29ubmVjdGlvbnMgd2l0aCBFQ0RIRSBpbiBvcmRlcgorKwkJICogdG8gYXZvaWQgYSBrbm93biBhdHRhY2sgd2hpbGUgd2UgZml4IENoYW5uZWxJRCBpdHNlbGYuICovCisrCQlpZiAocy0+czMgJiYKKysJCSAgICBzLT5zMy0+dGxzZXh0X2NoYW5uZWxfaWRfdmFsaWQgJiYKKysJCSAgICAocy0+czMtPnRtcC5uZXdfY2lwaGVyLT5hbGdvcml0aG1fbWtleSAmIFNTTF9rRUVDREgpID09IDApCisrCQkJcy0+czMtPnRsc2V4dF9jaGFubmVsX2lkX3ZhbGlkID0gMDsKKysKKysJCS8qIElmIHRoaXMgaXMgYSByZXN1bXB0aW9uIGFuZCB0aGUgb3JpZ2luYWwgaGFuZHNoYWtlIGRpZG4ndAorKwkJICogc3VwcG9ydCBDaGFubmVsSUQgdGhlbiB3ZSBkaWRuJ3QgcmVjb3JkIHRoZSBvcmlnaW5hbAorKwkJICogaGFuZHNoYWtlIGhhc2hlcyBpbiB0aGUgc2Vzc2lvbiBhbmQgc28gY2Fubm90IHJlc3VtZSB3aXRoCisrCQkgKiBDaGFubmVsSURzLiAqLworKwkJaWYgKHMtPmhpdCAmJgorKwkJICAgIHMtPnMzLT50bHNleHRfY2hhbm5lbF9pZF9uZXcgJiYKKysJCSAgICBzLT5zZXNzaW9uLT5vcmlnaW5hbF9oYW5kc2hha2VfaGFzaF9sZW4gPT0gMCkKKysJCQlzLT5zMy0+dGxzZXh0X2NoYW5uZWxfaWRfdmFsaWQgPSAwOworKworIAkJYnVmPSh1bnNpZ25lZCBjaGFyICopcy0+aW5pdF9idWYtPmRhdGE7CisgI2lmZGVmIE9QRU5TU0xfTk9fVExTRVhUCisgCQlwPXMtPnMzLT5zZXJ2ZXJfcmFuZG9tOworQEAgLTM2MzIsNCArMzY2OSwxNDUgQEAgaW50IHNzbDNfZ2V0X25leHRfcHJvdG8oU1NMICpzKQorIAlyZXR1cm4gMTsKKyAJfQorICMgZW5kaWYKKysKKysvKiBzc2wzX2dldF9jaGFubmVsX2lkIHJlYWRzIGFuZCB2ZXJpZmllcyBhIENsaWVudElEIGhhbmRzaGFrZSBtZXNzYWdlLiAqLworK2ludCBzc2wzX2dldF9jaGFubmVsX2lkKFNTTCAqcykKKysJeworKwlpbnQgcmV0ID0gLTEsIG9rOworKwlsb25nIG47CisrCWNvbnN0IHVuc2lnbmVkIGNoYXIgKnA7CisrCXVuc2lnbmVkIHNob3J0IGV4dGVuc2lvbl90eXBlLCBleHRlbnNpb25fbGVuOworKwlFQ19HUk9VUCogcDI1NiA9IE5VTEw7CisrCUVDX0tFWSoga2V5ID0gTlVMTDsKKysJRUNfUE9JTlQqIHBvaW50ID0gTlVMTDsKKysJRUNEU0FfU0lHIHNpZzsKKysJQklHTlVNIHgsIHk7CisrCXVuc2lnbmVkIHNob3J0IGV4cGVjdGVkX2V4dGVuc2lvbl90eXBlOworKworKwlpZiAocy0+c3RhdGUgPT0gU1NMM19TVF9TUl9DSEFOTkVMX0lEX0EgJiYgcy0+aW5pdF9udW0gPT0gMCkKKysJCXsKKysJCS8qIFRoZSBmaXJzdCB0aW1lIHRoYXQgd2UncmUgY2FsbGVkIHdlIHRha2UgdGhlIGN1cnJlbnQKKysJCSAqIGhhbmRzaGFrZSBoYXNoIGFuZCBzdG9yZSBpdC4gKi8KKysJCUVWUF9NRF9DVFggbWRfY3R4OworKwkJdW5zaWduZWQgaW50IGxlbjsKKysKKysJCUVWUF9NRF9DVFhfaW5pdCgmbWRfY3R4KTsKKysJCUVWUF9EaWdlc3RJbml0X2V4KCZtZF9jdHgsIEVWUF9zaGEyNTYoKSwgTlVMTCk7CisrCQlpZiAoIXRsczFfY2hhbm5lbF9pZF9oYXNoKCZtZF9jdHgsIHMpKQorKwkJCXJldHVybiAtMTsKKysJCWxlbiA9IHNpemVvZihzLT5zMy0+dGxzZXh0X2NoYW5uZWxfaWQpOworKwkJRVZQX0RpZ2VzdEZpbmFsKCZtZF9jdHgsIHMtPnMzLT50bHNleHRfY2hhbm5lbF9pZCwgJmxlbik7CisrCQlFVlBfTURfQ1RYX2NsZWFudXAoJm1kX2N0eCk7CisrCQl9CisrCisrCW4gPSBzLT5tZXRob2QtPnNzbF9nZXRfbWVzc2FnZShzLAorKwkJU1NMM19TVF9TUl9DSEFOTkVMX0lEX0EsCisrCQlTU0wzX1NUX1NSX0NIQU5ORUxfSURfQiwKKysJCVNTTDNfTVRfRU5DUllQVEVEX0VYVEVOU0lPTlMsCisrCQkyICsgMiArIFRMU0VYVF9DSEFOTkVMX0lEX1NJWkUsCisrCQkmb2spOworKworKwlpZiAoIW9rKQorKwkJcmV0dXJuKChpbnQpbik7CisrCisrCXNzbDNfZmluaXNoX21hYyhzLCAodW5zaWduZWQgY2hhciopcy0+aW5pdF9idWYtPmRhdGEsIHMtPmluaXRfbnVtICsgNCk7CisrCisrCS8qIHMtPnN0YXRlIGRvZXNuJ3QgcmVmbGVjdCB3aGV0aGVyIENoYW5nZUNpcGhlclNwZWMgaGFzIGJlZW4gcmVjZWl2ZWQKKysJICogaW4gdGhpcyBoYW5kc2hha2UsIGJ1dCBzLT5zMy0+Y2hhbmdlX2NpcGhlcl9zcGVjIGRvZXMgKHdpbGwgYmUgcmVzZXQKKysJICogYnkgc3NsM19nZXRfZmluaXNoZWQpLiAqLworKwlpZiAoIXMtPnMzLT5jaGFuZ2VfY2lwaGVyX3NwZWMpCisrCQl7CisrCQlTU0xlcnIoU1NMX0ZfU1NMM19HRVRfQ0hBTk5FTF9JRCxTU0xfUl9HT1RfQ0hBTk5FTF9JRF9CRUZPUkVfQV9DQ1MpOworKwkJcmV0dXJuIC0xOworKwkJfQorKworKwlpZiAobiAhPSAyICsgMiArIFRMU0VYVF9DSEFOTkVMX0lEX1NJWkUpCisrCQl7CisrCQlTU0xlcnIoU1NMX0ZfU1NMM19HRVRfQ0hBTk5FTF9JRCxTU0xfUl9JTlZBTElEX01FU1NBR0UpOworKwkJcmV0dXJuIC0xOworKwkJfQorKworKwlwID0gKHVuc2lnbmVkIGNoYXIgKilzLT5pbml0X21zZzsKKysKKysJLyogVGhlIHBheWxvYWQgbG9va3MgbGlrZToKKysJICogICB1aW50MTYgZXh0ZW5zaW9uX3R5cGUKKysJICogICB1aW50MTYgZXh0ZW5zaW9uX2xlbjsKKysJICogICB1aW50OCB4WzMyXTsKKysJICogICB1aW50OCB5WzMyXTsKKysJICogICB1aW50OCByWzMyXTsKKysJICogICB1aW50OCBzWzMyXTsKKysJICovCisrCW4ycyhwLCBleHRlbnNpb25fdHlwZSk7CisrCW4ycyhwLCBleHRlbnNpb25fbGVuKTsKKysKKysJZXhwZWN0ZWRfZXh0ZW5zaW9uX3R5cGUgPSBUTFNFWFRfVFlQRV9jaGFubmVsX2lkOworKwlpZiAocy0+czMtPnRsc2V4dF9jaGFubmVsX2lkX25ldykKKysJCWV4cGVjdGVkX2V4dGVuc2lvbl90eXBlID0gVExTRVhUX1RZUEVfY2hhbm5lbF9pZF9uZXc7CisrCisrCWlmIChleHRlbnNpb25fdHlwZSAhPSBleHBlY3RlZF9leHRlbnNpb25fdHlwZSB8fAorKwkgICAgZXh0ZW5zaW9uX2xlbiAhPSBUTFNFWFRfQ0hBTk5FTF9JRF9TSVpFKQorKwkJeworKwkJU1NMZXJyKFNTTF9GX1NTTDNfR0VUX0NIQU5ORUxfSUQsU1NMX1JfSU5WQUxJRF9NRVNTQUdFKTsKKysJCXJldHVybiAtMTsKKysJCX0KKysKKysJcDI1NiA9IEVDX0dST1VQX25ld19ieV9jdXJ2ZV9uYW1lKE5JRF9YOV82Ml9wcmltZTI1NnYxKTsKKysJaWYgKCFwMjU2KQorKwkJeworKwkJU1NMZXJyKFNTTF9GX1NTTDNfR0VUX0NIQU5ORUxfSUQsU1NMX1JfTk9fUDI1Nl9TVVBQT1JUKTsKKysJCXJldHVybiAtMTsKKysJCX0KKysKKysJQk5faW5pdCgmeCk7CisrCUJOX2luaXQoJnkpOworKwlzaWcuciA9IEJOX25ldygpOworKwlzaWcucyA9IEJOX25ldygpOworKworKwlpZiAoQk5fYmluMmJuKHAgKyAgMCwgMzIsICZ4KSA9PSBOVUxMIHx8CisrCSAgICBCTl9iaW4yYm4ocCArIDMyLCAzMiwgJnkpID09IE5VTEwgfHwKKysJICAgIEJOX2JpbjJibihwICsgNjQsIDMyLCBzaWcucikgPT0gTlVMTCB8fAorKwkgICAgQk5fYmluMmJuKHAgKyA5NiwgMzIsIHNpZy5zKSA9PSBOVUxMKQorKwkJZ290byBlcnI7CisrCisrCXBvaW50ID0gRUNfUE9JTlRfbmV3KHAyNTYpOworKwlpZiAoIXBvaW50IHx8CisrCSAgICAhRUNfUE9JTlRfc2V0X2FmZmluZV9jb29yZGluYXRlc19HRnAocDI1NiwgcG9pbnQsICZ4LCAmeSwgTlVMTCkpCisrCQlnb3RvIGVycjsKKysKKysJa2V5ID0gRUNfS0VZX25ldygpOworKwlpZiAoIWtleSB8fAorKwkgICAgIUVDX0tFWV9zZXRfZ3JvdXAoa2V5LCBwMjU2KSB8fAorKwkgICAgIUVDX0tFWV9zZXRfcHVibGljX2tleShrZXksIHBvaW50KSkKKysJCWdvdG8gZXJyOworKworKwkvKiBXZSBzdG9yZWQgdGhlIGhhbmRzaGFrZSBoYXNoIGluIHx0bHNleHRfY2hhbm5lbF9pZHwgdGhlIGZpcnN0IHRpbWUKKysJICogdGhhdCB3ZSB3ZXJlIGNhbGxlZC4gKi8KKysJc3dpdGNoIChFQ0RTQV9kb192ZXJpZnkocy0+czMtPnRsc2V4dF9jaGFubmVsX2lkLCBTSEEyNTZfRElHRVNUX0xFTkdUSCwgJnNpZywga2V5KSkgeworKwljYXNlIDE6CisrCQlicmVhazsKKysJY2FzZSAwOgorKwkJU1NMZXJyKFNTTF9GX1NTTDNfR0VUX0NIQU5ORUxfSUQsU1NMX1JfQ0hBTk5FTF9JRF9TSUdOQVRVUkVfSU5WQUxJRCk7CisrCQlzLT5zMy0+dGxzZXh0X2NoYW5uZWxfaWRfdmFsaWQgPSAwOworKwkJZ290byBlcnI7CisrCWRlZmF1bHQ6CisrCQlzLT5zMy0+dGxzZXh0X2NoYW5uZWxfaWRfdmFsaWQgPSAwOworKwkJZ290byBlcnI7CisrCX0KKysKKysJbWVtY3B5KHMtPnMzLT50bHNleHRfY2hhbm5lbF9pZCwgcCwgNjQpOworKwlyZXQgPSAxOworKworK2VycjoKKysJQk5fZnJlZSgmeCk7CisrCUJOX2ZyZWUoJnkpOworKwlCTl9mcmVlKHNpZy5yKTsKKysJQk5fZnJlZShzaWcucyk7CisrCWlmIChrZXkpCisrCQlFQ19LRVlfZnJlZShrZXkpOworKwlpZiAocG9pbnQpCisrCQlFQ19QT0lOVF9mcmVlKHBvaW50KTsKKysJaWYgKHAyNTYpCisrCQlFQ19HUk9VUF9mcmVlKHAyNTYpOworKwlyZXR1cm4gcmV0OworKwl9CisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvc3NsL3NzbC5oIGIvc3NsL3NzbC5oCitpbmRleCA5NDRhZWE2Li5lNTBiOGYwIDEwMDY0NAorLS0tIGEvc3NsL3NzbC5oCisrKysgYi9zc2wvc3NsLmgKK0BAIC01NDcsNiArNTQ3LDEzIEBAIHN0cnVjdCBzc2xfc2Vzc2lvbl9zdAorICNpZm5kZWYgT1BFTlNTTF9OT19TUlAKKyAJY2hhciAqc3JwX3VzZXJuYW1lOworICNlbmRpZgorKworKwkvKiBvcmlnaW5hbF9oYW5kc2hha2VfaGFzaCBjb250YWlucyB0aGUgaGFuZHNoYWtlIGhhc2ggKGVpdGhlcgorKwkgKiBTSEEtMStNRDUgb3IgU0hBLTIsIGRlcGVuZGluZyBvbiBUTFMgdmVyc2lvbikgZm9yIHRoZSBvcmlnaW5hbCwgZnVsbAorKwkgKiBoYW5kc2hha2UgdGhhdCBjcmVhdGVkIGEgc2Vzc2lvbi4gVGhpcyBpcyB1c2VkIGJ5IENoYW5uZWwgSURzIGR1cmluZworKwkgKiByZXN1bXB0aW9uLiAqLworKwl1bnNpZ25lZCBjaGFyIG9yaWdpbmFsX2hhbmRzaGFrZV9oYXNoW0VWUF9NQVhfTURfU0laRV07CisrCXVuc2lnbmVkIGludCBvcmlnaW5hbF9oYW5kc2hha2VfaGFzaF9sZW47CisgCX07CisgCisgI2VuZGlmCitAQCAtODYyLDYgKzg2OSw5IEBAIHN0cnVjdCBzc2xfY3R4X3N0CisgCS8qIGdldCBjbGllbnQgY2VydCBjYWxsYmFjayAqLworIAlpbnQgKCpjbGllbnRfY2VydF9jYikoU1NMICpzc2wsIFg1MDkgKip4NTA5LCBFVlBfUEtFWSAqKnBrZXkpOworIAorKwkvKiBnZXQgY2hhbm5lbCBpZCBjYWxsYmFjayAqLworKwl2b2lkICgqY2hhbm5lbF9pZF9jYikoU1NMICpzc2wsIEVWUF9QS0VZICoqcGtleSk7CisrCisgICAgIC8qIGNvb2tpZSBnZW5lcmF0ZSBjYWxsYmFjayAqLworICAgICBpbnQgKCphcHBfZ2VuX2Nvb2tpZV9jYikoU1NMICpzc2wsIHVuc2lnbmVkIGNoYXIgKmNvb2tpZSwgCisgICAgICAgICB1bnNpZ25lZCBpbnQgKmNvb2tpZV9sZW4pOworQEAgLTk5OSw2ICsxMDA5LDE2IEBAIHN0cnVjdCBzc2xfY3R4X3N0CisgIyBlbmRpZgorICAgICAgICAgLyogU1JUUCBwcm9maWxlcyB3ZSBhcmUgd2lsbGluZyB0byBkbyBmcm9tIFJGQyA1NzY0ICovCisgICAgICAgICBTVEFDS19PRihTUlRQX1BST1RFQ1RJT05fUFJPRklMRSkgKnNydHBfcHJvZmlsZXM7ICAKKysKKysJLyogSWYgdHJ1ZSwgYSBjbGllbnQgd2lsbCBhZHZlcnRpc2UgdGhlIENoYW5uZWwgSUQgZXh0ZW5zaW9uIGFuZCBhCisrCSAqIHNlcnZlciB3aWxsIGVjaG8gaXQuICovCisrCWNoYXIgdGxzZXh0X2NoYW5uZWxfaWRfZW5hYmxlZDsKKysJLyogdGxzZXh0X2NoYW5uZWxfaWRfZW5hYmxlZF9uZXcgaXMgYSBoYWNrIHRvIHN1cHBvcnQgYm90aCBvbGQgYW5kIG5ldworKwkgKiBDaGFubmVsSUQgc2lnbmF0dXJlcy4gSXQgaW5kaWNhdGVzIHRoYXQgYSBjbGllbnQgc2hvdWxkIGFkdmVydGlzZSB0aGUKKysJICogbmV3IENoYW5uZWxJRCBleHRlbnNpb24gbnVtYmVyLiAqLworKwljaGFyIHRsc2V4dF9jaGFubmVsX2lkX2VuYWJsZWRfbmV3OworKwkvKiBUaGUgY2xpZW50J3MgQ2hhbm5lbCBJRCBwcml2YXRlIGtleS4gKi8KKysJRVZQX1BLRVkgKnRsc2V4dF9jaGFubmVsX2lkX3ByaXZhdGU7CisgI2VuZGlmCisgCX07CisgCitAQCAtMTA0MCw2ICsxMDYwLDEwIEBAIExIQVNIX09GKFNTTF9TRVNTSU9OKSAqU1NMX0NUWF9zZXNzaW9ucyhTU0xfQ1RYICpjdHgpOworIAlTU0xfQ1RYX2N0cmwoY3R4LFNTTF9DVFJMX1NFU1NfVElNRU9VVFMsMCxOVUxMKQorICNkZWZpbmUgU1NMX0NUWF9zZXNzX2NhY2hlX2Z1bGwoY3R4KSBcCisgCVNTTF9DVFhfY3RybChjdHgsU1NMX0NUUkxfU0VTU19DQUNIRV9GVUxMLDAsTlVMTCkKKysvKiBTU0xfQ1RYX2VuYWJsZV90bHNfY2hhbm5lbF9pZCBjb25maWd1cmVzIGEgVExTIHNlcnZlciB0byBhY2NlcHQgVExTIGNsaWVudAorKyAqIElEcyBmcm9tIGNsaWVudHMuIFJldHVybnMgMSBvbiBzdWNjZXNzLiAqLworKyNkZWZpbmUgU1NMX0NUWF9lbmFibGVfdGxzX2NoYW5uZWxfaWQoY3R4KSBcCisrCVNTTF9DVFhfY3RybChjdHgsU1NMX0NUUkxfQ0hBTk5FTF9JRCwwLE5VTEwpCisgCisgdm9pZCBTU0xfQ1RYX3Nlc3Nfc2V0X25ld19jYihTU0xfQ1RYICpjdHgsIGludCAoKm5ld19zZXNzaW9uX2NiKShzdHJ1Y3Qgc3NsX3N0ICpzc2wsU1NMX1NFU1NJT04gKnNlc3MpKTsKKyBpbnQgKCpTU0xfQ1RYX3Nlc3NfZ2V0X25ld19jYihTU0xfQ1RYICpjdHgpKShzdHJ1Y3Qgc3NsX3N0ICpzc2wsIFNTTF9TRVNTSU9OICpzZXNzKTsKK0BAIC0xMDU2LDYgKzEwODAsOCBAQCB2b2lkIFNTTF9DVFhfc2V0X2luZm9fY2FsbGJhY2soU1NMX0NUWCAqY3R4LCB2b2lkICgqY2IpKGNvbnN0IFNTTCAqc3NsLGludCB0eXBlLAorIHZvaWQgKCpTU0xfQ1RYX2dldF9pbmZvX2NhbGxiYWNrKFNTTF9DVFggKmN0eCkpKGNvbnN0IFNTTCAqc3NsLGludCB0eXBlLGludCB2YWwpOworIHZvaWQgU1NMX0NUWF9zZXRfY2xpZW50X2NlcnRfY2IoU1NMX0NUWCAqY3R4LCBpbnQgKCpjbGllbnRfY2VydF9jYikoU1NMICpzc2wsIFg1MDkgKip4NTA5LCBFVlBfUEtFWSAqKnBrZXkpKTsKKyBpbnQgKCpTU0xfQ1RYX2dldF9jbGllbnRfY2VydF9jYihTU0xfQ1RYICpjdHgpKShTU0wgKnNzbCwgWDUwOSAqKng1MDksIEVWUF9QS0VZICoqcGtleSk7Cisrdm9pZCBTU0xfQ1RYX3NldF9jaGFubmVsX2lkX2NiKFNTTF9DVFggKmN0eCwgdm9pZCAoKmNoYW5uZWxfaWRfY2IpKFNTTCAqc3NsLCBFVlBfUEtFWSAqKnBrZXkpKTsKKyt2b2lkICgqU1NMX0NUWF9nZXRfY2hhbm5lbF9pZF9jYihTU0xfQ1RYICpjdHgpKShTU0wgKnNzbCwgRVZQX1BLRVkgKipwa2V5KTsKKyAjaWZuZGVmIE9QRU5TU0xfTk9fRU5HSU5FCisgaW50IFNTTF9DVFhfc2V0X2NsaWVudF9jZXJ0X2VuZ2luZShTU0xfQ1RYICpjdHgsIEVOR0lORSAqZSk7CisgI2VuZGlmCitAQCAtMTExNyw1ICsxMTQzLDYgQEAgY29uc3QgY2hhciAqU1NMX2dldF9wc2tfaWRlbnRpdHkoY29uc3QgU1NMICpzKTsKKyAjZGVmaW5lIFNTTF9XUklUSU5HCTIKKyAjZGVmaW5lIFNTTF9SRUFESU5HCTMKKyAjZGVmaW5lIFNTTF9YNTA5X0xPT0tVUAk0CisrI2RlZmluZSBTU0xfQ0hBTk5FTF9JRF9MT09LVVAJNQorIAorIC8qIFRoZXNlIHdpbGwgb25seSBiZSB1c2VkIHdoZW4gZG9pbmcgbm9uLWJsb2NraW5nIElPICovCitAQCAtMTEyNCw1ICsxMTUxLDYgQEAgY29uc3QgY2hhciAqU1NMX2dldF9wc2tfaWRlbnRpdHkoY29uc3QgU1NMICpzKTsKKyAjZGVmaW5lIFNTTF93YW50X3JlYWQocykJKFNTTF93YW50KHMpID09IFNTTF9SRUFESU5HKQorICNkZWZpbmUgU1NMX3dhbnRfd3JpdGUocykJKFNTTF93YW50KHMpID09IFNTTF9XUklUSU5HKQorICNkZWZpbmUgU1NMX3dhbnRfeDUwOV9sb29rdXAocykJKFNTTF93YW50KHMpID09IFNTTF9YNTA5X0xPT0tVUCkKKysjZGVmaW5lIFNTTF93YW50X2NoYW5uZWxfaWRfbG9va3VwKHMpCShTU0xfd2FudChzKSA9PSBTU0xfQ0hBTk5FTF9JRF9MT09LVVApCisgCisgI2RlZmluZSBTU0xfTUFDX0ZMQUdfUkVBRF9NQUNfU1RSRUFNIDEKK0BAIC0xMzczLDYgKzE0MDEsMTMgQEAgc3RydWN0IHNzbF9zdAorIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworIAl1bnNpZ25lZCBpbnQgdGxzZXh0X2hiX3BlbmRpbmc7IC8qIEluZGljYXRlcyBpZiBhIEhlYXJ0YmVhdFJlcXVlc3QgaXMgaW4gZmxpZ2h0ICovCisgCXVuc2lnbmVkIGludCB0bHNleHRfaGJfc2VxOyAgICAgLyogSGVhcnRiZWF0UmVxdWVzdCBzZXF1ZW5jZSBudW1iZXIgKi8KKysKKysJLyogQ29waWVkIGZyb20gdGhlIFNTTF9DVFguIEZvciBhIHNlcnZlciwgbWVhbnMgdGhhdCB3ZSdsbCBhY2NlcHQKKysJICogQ2hhbm5lbCBJRHMgZnJvbSBjbGllbnRzLiBGb3IgYSBjbGllbnQsIG1lYW5zIHRoYXQgd2UnbGwgYWR2ZXJ0aXNlCisrCSAqIHN1cHBvcnQuICovCisrCWNoYXIgdGxzZXh0X2NoYW5uZWxfaWRfZW5hYmxlZDsKKysJLyogVGhlIGNsaWVudCdzIENoYW5uZWwgSUQgcHJpdmF0ZSBrZXkuICovCisrCUVWUF9QS0VZICp0bHNleHRfY2hhbm5lbF9pZF9wcml2YXRlOworICNlbHNlCisgI2RlZmluZSBzZXNzaW9uX2N0eCBjdHgKKyAjZW5kaWYgLyogT1BFTlNTTF9OT19UTFNFWFQgKi8KK0BAIC0xNTQzLDUgKzE1NzgsNiBAQCBERUNMQVJFX1BFTV9ydyhTU0xfU0VTU0lPTiwgU1NMX1NFU1NJT04pCisgI2RlZmluZSBTU0xfRVJST1JfWkVST19SRVRVUk4JCTYKKyAjZGVmaW5lIFNTTF9FUlJPUl9XQU5UX0NPTk5FQ1QJCTcKKyAjZGVmaW5lIFNTTF9FUlJPUl9XQU5UX0FDQ0VQVAkJOAorKyNkZWZpbmUgU1NMX0VSUk9SX1dBTlRfQ0hBTk5FTF9JRF9MT09LVVAJOQorIAorICNkZWZpbmUgU1NMX0NUUkxfTkVFRF9UTVBfUlNBCQkJMQorQEAgLTE2MzEsNiArMTY2Nyw5IEBAIERFQ0xBUkVfUEVNX3J3KFNTTF9TRVNTSU9OLCBTU0xfU0VTU0lPTikKKyAjZGVmaW5lIFNTTF9DVFJMX0dFVF9UTFNfRVhUX0hFQVJUQkVBVF9QRU5ESU5HCQk4NgorICNkZWZpbmUgU1NMX0NUUkxfU0VUX1RMU19FWFRfSEVBUlRCRUFUX05PX1JFUVVFU1RTCTg3CisgI2VuZGlmCisrI2RlZmluZSBTU0xfQ1RSTF9DSEFOTkVMX0lECQkJODgKKysjZGVmaW5lIFNTTF9DVFJMX0dFVF9DSEFOTkVMX0lECQkJODkKKysjZGVmaW5lIFNTTF9DVFJMX1NFVF9DSEFOTkVMX0lECQkJOTAKKyAjZW5kaWYKKyAKKyAjZGVmaW5lIERUTFNfQ1RSTF9HRVRfVElNRU9VVAkJNzMKK0BAIC0xNjc4LDYgKzE3MTcsMjYgQEAgREVDTEFSRV9QRU1fcncoU1NMX1NFU1NJT04sIFNTTF9TRVNTSU9OKQorICNkZWZpbmUgU1NMX3NldF90bXBfZWNkaChzc2wsZWNkaCkgXAorIAlTU0xfY3RybChzc2wsU1NMX0NUUkxfU0VUX1RNUF9FQ0RILDAsKGNoYXIgKillY2RoKQorIAorKy8qIFNTTF9lbmFibGVfdGxzX2NoYW5uZWxfaWQgZWl0aGVyIGNvbmZpZ3VyZXMgYSBUTFMgc2VydmVyIHRvIGFjY2VwdCBUTFMgY2xpZW50CisrICogSURzIGZyb20gY2xpZW50cywgb3IgY29uZmlndXJlIGEgY2xpZW50IHRvIHNlbmQgVExTIGNsaWVudCBJRHMgdG8gc2VydmVyLgorKyAqIFJldHVybnMgMSBvbiBzdWNjZXNzLiAqLworKyNkZWZpbmUgU1NMX2VuYWJsZV90bHNfY2hhbm5lbF9pZChzKSBcCisrCVNTTF9jdHJsKHMsU1NMX0NUUkxfQ0hBTk5FTF9JRCwwLE5VTEwpCisrLyogU1NMX3NldDFfdGxzX2NoYW5uZWxfaWQgY29uZmlndXJlcyBhIFRMUyBjbGllbnQgdG8gc2VuZCBhIFRMUyBDaGFubmVsIElEIHRvCisrICogY29tcGF0aWJsZSBzZXJ2ZXJzLiBwcml2YXRlX2tleSBtdXN0IGJlIGEgUC0yNTYgRVZQX1BLRVkqLiBSZXR1cm5zIDEgb24KKysgKiBzdWNjZXNzLiAqLworKyNkZWZpbmUgU1NMX3NldDFfdGxzX2NoYW5uZWxfaWQocywgcHJpdmF0ZV9rZXkpIFwKKysJU1NMX2N0cmwocyxTU0xfQ1RSTF9TRVRfQ0hBTk5FTF9JRCwwLCh2b2lkKilwcml2YXRlX2tleSkKKysjZGVmaW5lIFNTTF9DVFhfc2V0MV90bHNfY2hhbm5lbF9pZChjdHgsIHByaXZhdGVfa2V5KSBcCisrCVNTTF9DVFhfY3RybChjdHgsU1NMX0NUUkxfU0VUX0NIQU5ORUxfSUQsMCwodm9pZCopcHJpdmF0ZV9rZXkpCisrLyogU1NMX2dldF90bHNfY2hhbm5lbF9pZCBnZXRzIHRoZSBjbGllbnQncyBUTFMgQ2hhbm5lbCBJRCBmcm9tIGEgc2VydmVyIFNTTCoKKysgKiBhbmQgY29waWVzIHVwIHRvIHRoZSBmaXJzdCB8Y2hhbm5lbF9pZF9sZW58IGJ5dGVzIGludG8gfGNoYW5uZWxfaWR8LiBUaGUKKysgKiBDaGFubmVsIElEIGNvbnNpc3RzIG9mIHRoZSBjbGllbnQncyBQLTI1NiBwdWJsaWMga2V5IGFzIGFuICh4LHkpIHBhaXIgd2hlcmUKKysgKiBlYWNoIGlzIGEgMzItYnl0ZSwgYmlnLWVuZGlhbiBmaWVsZCBlbGVtZW50LiBSZXR1cm5zIDAgaWYgdGhlIGNsaWVudCBkaWRuJ3QKKysgKiBvZmZlciBhIENoYW5uZWwgSUQgYW5kIHRoZSBsZW5ndGggb2YgdGhlIGNvbXBsZXRlIENoYW5uZWwgSUQgb3RoZXJ3aXNlLiAqLworKyNkZWZpbmUgU1NMX2dldF90bHNfY2hhbm5lbF9pZChjdHgsIGNoYW5uZWxfaWQsIGNoYW5uZWxfaWRfbGVuKSBcCisrCVNTTF9jdHJsKGN0eCxTU0xfQ1RSTF9HRVRfQ0hBTk5FTF9JRCxjaGFubmVsX2lkX2xlbiwodm9pZCopY2hhbm5lbF9pZCkKKysKKyAjZGVmaW5lIFNTTF9DVFhfYWRkX2V4dHJhX2NoYWluX2NlcnQoY3R4LHg1MDkpIFwKKyAJU1NMX0NUWF9jdHJsKGN0eCxTU0xfQ1RSTF9FWFRSQV9DSEFJTl9DRVJULDAsKGNoYXIgKil4NTA5KQorICNkZWZpbmUgU1NMX0NUWF9nZXRfZXh0cmFfY2hhaW5fY2VydHMoY3R4LHB4NTA5KSBcCitAQCAtMjE3Niw2ICsyMjM1LDcgQEAgdm9pZCBFUlJfbG9hZF9TU0xfc3RyaW5ncyh2b2lkKTsKKyAjZGVmaW5lIFNTTF9GX1NTTDNfR0VUX0NFUlRJRklDQVRFX1JFUVVFU1QJCSAxMzUKKyAjZGVmaW5lIFNTTF9GX1NTTDNfR0VUX0NFUlRfU1RBVFVTCQkJIDI4OQorICNkZWZpbmUgU1NMX0ZfU1NMM19HRVRfQ0VSVF9WRVJJRlkJCQkgMTM2CisrI2RlZmluZSBTU0xfRl9TU0wzX0dFVF9DSEFOTkVMX0lECQkJIDMxNworICNkZWZpbmUgU1NMX0ZfU1NMM19HRVRfQ0xJRU5UX0NFUlRJRklDQVRFCQkgMTM3CisgI2RlZmluZSBTU0xfRl9TU0wzX0dFVF9DTElFTlRfSEVMTE8JCQkgMTM4CisgI2RlZmluZSBTU0xfRl9TU0wzX0dFVF9DTElFTlRfS0VZX0VYQ0hBTkdFCQkgMTM5CitAQCAtMjE5NSw2ICsyMjU1LDcgQEAgdm9pZCBFUlJfbG9hZF9TU0xfc3RyaW5ncyh2b2lkKTsKKyAjZGVmaW5lIFNTTF9GX1NTTDNfUkVBRF9CWVRFUwkJCQkgMTQ4CisgI2RlZmluZSBTU0xfRl9TU0wzX1JFQURfTgkJCQkgMTQ5CisgI2RlZmluZSBTU0xfRl9TU0wzX1NFTkRfQ0VSVElGSUNBVEVfUkVRVUVTVAkJIDE1MAorKyNkZWZpbmUgU1NMX0ZfU1NMM19TRU5EX0NIQU5ORUxfSUQJCQkgMzE4CisgI2RlZmluZSBTU0xfRl9TU0wzX1NFTkRfQ0xJRU5UX0NFUlRJRklDQVRFCQkgMTUxCisgI2RlZmluZSBTU0xfRl9TU0wzX1NFTkRfQ0xJRU5UX0tFWV9FWENIQU5HRQkJIDE1MgorICNkZWZpbmUgU1NMX0ZfU1NMM19TRU5EX0NMSUVOVF9WRVJJRlkJCQkgMTUzCitAQCAtMjM2MSwxMiArMjQyMiwxNSBAQCB2b2lkIEVSUl9sb2FkX1NTTF9zdHJpbmdzKHZvaWQpOworICNkZWZpbmUgU1NMX1JfQklPX05PVF9TRVQJCQkJIDEyOAorICNkZWZpbmUgU1NMX1JfQkxPQ0tfQ0lQSEVSX1BBRF9JU19XUk9ORwkJCSAxMjkKKyAjZGVmaW5lIFNTTF9SX0JOX0xJQgkJCQkJIDEzMAorKyNkZWZpbmUgU1NMX1JfQ0FOTk9UX1NFUklBTElaRV9QVUJMSUNfS0VZCQkgMzc2CisgI2RlZmluZSBTU0xfUl9DQV9ETl9MRU5HVEhfTUlTTUFUQ0gJCQkgMTMxCisgI2RlZmluZSBTU0xfUl9DQV9ETl9UT09fTE9ORwkJCQkgMTMyCisgI2RlZmluZSBTU0xfUl9DQ1NfUkVDRUlWRURfRUFSTFkJCQkgMTMzCisgI2RlZmluZSBTU0xfUl9DRVJUSUZJQ0FURV9WRVJJRllfRkFJTEVECQkJIDEzNAorICNkZWZpbmUgU1NMX1JfQ0VSVF9MRU5HVEhfTUlTTUFUQ0gJCQkgMTM1CisgI2RlZmluZSBTU0xfUl9DSEFMTEVOR0VfSVNfRElGRkVSRU5UCQkJIDEzNgorKyNkZWZpbmUgU1NMX1JfQ0hBTk5FTF9JRF9OT1RfUDI1NgkJCSAzNzUKKysjZGVmaW5lIFNTTF9SX0NIQU5ORUxfSURfU0lHTkFUVVJFX0lOVkFMSUQJCSAzNzEKKyAjZGVmaW5lIFNTTF9SX0NJUEhFUl9DT0RFX1dST05HX0xFTkdUSAkJCSAxMzcKKyAjZGVmaW5lIFNTTF9SX0NJUEhFUl9PUl9IQVNIX1VOQVZBSUxBQkxFCQkgMTM4CisgI2RlZmluZSBTU0xfUl9DSVBIRVJfVEFCTEVfU1JDX0VSUk9SCQkJIDEzOQorQEAgLTIzNzksNiArMjQ0Myw3IEBAIHZvaWQgRVJSX2xvYWRfU1NMX3N0cmluZ3Modm9pZCk7CisgI2RlZmluZSBTU0xfUl9DT05ORUNUSU9OX0lEX0lTX0RJRkZFUkVOVAkJIDE0MworICNkZWZpbmUgU1NMX1JfQ09OTkVDVElPTl9UWVBFX05PVF9TRVQJCQkgMTQ0CisgI2RlZmluZSBTU0xfUl9DT09LSUVfTUlTTUFUQ0gJCQkJIDMwOAorKyNkZWZpbmUgU1NMX1JfRDJJX0VDRFNBX1NJRwkJCQkgMzc5CisgI2RlZmluZSBTU0xfUl9EQVRBX0JFVFdFRU5fQ0NTX0FORF9GSU5JU0hFRAkJIDE0NQorICNkZWZpbmUgU1NMX1JfREFUQV9MRU5HVEhfVE9PX0xPTkcJCQkgMTQ2CisgI2RlZmluZSBTU0xfUl9ERUNSWVBUSU9OX0ZBSUxFRAkJCQkgMTQ3CitAQCAtMjM5Niw5ICsyNDYxLDEyIEBAIHZvaWQgRVJSX2xvYWRfU1NMX3N0cmluZ3Modm9pZCk7CisgI2RlZmluZSBTU0xfUl9FTkNSWVBURURfTEVOR1RIX1RPT19MT05HCQkJIDE1MAorICNkZWZpbmUgU1NMX1JfRVJST1JfR0VORVJBVElOR19UTVBfUlNBX0tFWQkJIDI4MgorICNkZWZpbmUgU1NMX1JfRVJST1JfSU5fUkVDRUlWRURfQ0lQSEVSX0xJU1QJCSAxNTEKKysjZGVmaW5lIFNTTF9SX0VWUF9ESUdFU1RTSUdORklOQUxfRkFJTEVECQkgMzc3CisrI2RlZmluZSBTU0xfUl9FVlBfRElHRVNUU0lHTklOSVRfRkFJTEVECQkJIDM3OAorICNkZWZpbmUgU1NMX1JfRVhDRVNTSVZFX01FU1NBR0VfU0laRQkJCSAxNTIKKyAjZGVmaW5lIFNTTF9SX0VYVFJBX0RBVEFfSU5fTUVTU0FHRQkJCSAxNTMKKyAjZGVmaW5lIFNTTF9SX0dPVF9BX0ZJTl9CRUZPUkVfQV9DQ1MJCQkgMTU0CisrI2RlZmluZSBTU0xfUl9HT1RfQ0hBTk5FTF9JRF9CRUZPUkVfQV9DQ1MJCSAzNzIKKyAjZGVmaW5lIFNTTF9SX0dPVF9ORVhUX1BST1RPX0JFRk9SRV9BX0NDUwkJIDM1NQorICNkZWZpbmUgU1NMX1JfR09UX05FWFRfUFJPVE9fV0lUSE9VVF9FWFRFTlNJT04JCSAzNTYKKyAjZGVmaW5lIFNTTF9SX0hUVFBTX1BST1hZX1JFUVVFU1QJCQkgMTU1CitAQCAtMjQwOCw2ICsyNDc2LDcgQEAgdm9pZCBFUlJfbG9hZF9TU0xfc3RyaW5ncyh2b2lkKTsKKyAjZGVmaW5lIFNTTF9SX0lOVkFMSURfQ0hBTExFTkdFX0xFTkdUSAkJCSAxNTgKKyAjZGVmaW5lIFNTTF9SX0lOVkFMSURfQ09NTUFORAkJCQkgMjgwCisgI2RlZmluZSBTU0xfUl9JTlZBTElEX0NPTVBSRVNTSU9OX0FMR09SSVRITQkJIDM0MQorKyNkZWZpbmUgU1NMX1JfSU5WQUxJRF9NRVNTQUdFCQkJCSAzNzQKKyAjZGVmaW5lIFNTTF9SX0lOVkFMSURfUFVSUE9TRQkJCQkgMjc4CisgI2RlZmluZSBTU0xfUl9JTlZBTElEX1NSUF9VU0VSTkFNRQkJCSAzNTcKKyAjZGVmaW5lIFNTTF9SX0lOVkFMSURfU1RBVFVTX1JFU1BPTlNFCQkJIDMyOAorQEAgLTI0NjIsNiArMjUzMSw3IEBAIHZvaWQgRVJSX2xvYWRfU1NMX3N0cmluZ3Modm9pZCk7CisgI2RlZmluZSBTU0xfUl9OT19DT01QUkVTU0lPTl9TUEVDSUZJRUQJCQkgMTg3CisgI2RlZmluZSBTU0xfUl9OT19HT1NUX0NFUlRJRklDQVRFX1NFTlRfQllfUEVFUgkJIDMzMAorICNkZWZpbmUgU1NMX1JfTk9fTUVUSE9EX1NQRUNJRklFRAkJCSAxODgKKysjZGVmaW5lIFNTTF9SX05PX1AyNTZfU1VQUE9SVAkJCQkgMzczCisgI2RlZmluZSBTU0xfUl9OT19QUklWQVRFS0VZCQkJCSAxODkKKyAjZGVmaW5lIFNTTF9SX05PX1BSSVZBVEVfS0VZX0FTU0lHTkVECQkJIDE5MAorICNkZWZpbmUgU1NMX1JfTk9fUFJPVE9DT0xTX0FWQUlMQUJMRQkJCSAxOTEKK2RpZmYgLS1naXQgYS9zc2wvc3NsMy5oIGIvc3NsL3NzbDMuaAoraW5kZXggY2Y4MWRlMC4uODUwMjYyOCAxMDA2NDQKKy0tLSBhL3NzbC9zc2wzLmgKKysrKyBiL3NzbC9zc2wzLmgKK0BAIC01NDgsNiArNTQ4LDIyIEBAIHR5cGVkZWYgc3RydWN0IHNzbDNfc3RhdGVfc3QKKyAJY2hhciBpc19wcm9iYWJseV9zYWZhcmk7CisgI2VuZGlmIC8qICFPUEVOU1NMX05PX0VDICovCisgI2VuZGlmIC8qICFPUEVOU1NMX05PX1RMU0VYVCAqLworKworKwkvKiBJbiBhIGNsaWVudCwgdGhpcyBtZWFucyB0aGF0IHRoZSBzZXJ2ZXIgc3VwcG9ydGVkIENoYW5uZWwgSUQgYW5kIHRoYXQKKysJICogYSBDaGFubmVsIElEIHdhcyBzZW50LiBJbiBhIHNlcnZlciBpdCBtZWFucyB0aGF0IHdlIGVjaG9lZCBzdXBwb3J0CisrCSAqIGZvciBDaGFubmVsIElEcyBhbmQgdGhhdCB0bHNleHRfY2hhbm5lbF9pZCB3aWxsIGJlIHZhbGlkIGFmdGVyIHRoZQorKwkgKiBoYW5kc2hha2UuICovCisrCWNoYXIgdGxzZXh0X2NoYW5uZWxfaWRfdmFsaWQ7CisrCS8qIHRsc2V4dF9jaGFubmVsX2lkX25ldyBtZWFucyB0aGF0IHRoZSB1cGRhdGVkIENoYW5uZWwgSUQgZXh0ZW5zaW9uCisrCSAqIHdhcyBuZWdvdGlhdGVkLiBUaGlzIGlzIGEgdGVtcG9yYXJ5IGhhY2sgaW4gdGhlIGNvZGUgdG8gc3VwcG9ydCBib3RoCisrCSAqIGZvcm1zIG9mIENoYW5uZWwgSUQgZXh0ZW5zaW9uIHdoaWxlIHdlIHRyYW5zaXRpb24gdG8gdGhlIG5ldyBmb3JtYXQsCisrCSAqIHdoaWNoIGZpeGVkIGEgc2VjdXJpdHkgaXNzdWUuICovCisrCWNoYXIgdGxzZXh0X2NoYW5uZWxfaWRfbmV3OworKwkvKiBGb3IgYSBzZXJ2ZXI6CisrCSAqICAgICBJZiB8dGxzZXh0X2NoYW5uZWxfaWRfdmFsaWR8IGlzIHRydWUsIHRoZW4gdGhpcyBjb250YWlucyB0aGUKKysJICogICAgIHZlcmlmaWVkIENoYW5uZWwgSUQgZnJvbSB0aGUgY2xpZW50OiBhIFAyNTYgcG9pbnQsICh4LHkpLCB3aGVyZQorKwkgKiAgICAgZWFjaCBhcmUgYmlnLWVuZGlhbiB2YWx1ZXMuICovCisrCXVuc2lnbmVkIGNoYXIgdGxzZXh0X2NoYW5uZWxfaWRbNjRdOworIAl9IFNTTDNfU1RBVEU7CisgCisgI2VuZGlmCitAQCAtNTkyLDYgKzYwOCw4IEBAIHR5cGVkZWYgc3RydWN0IHNzbDNfc3RhdGVfc3QKKyAjZGVmaW5lIFNTTDNfU1RfQ1dfTkVYVF9QUk9UT19BCQkoMHgyMDB8U1NMX1NUX0NPTk5FQ1QpCisgI2RlZmluZSBTU0wzX1NUX0NXX05FWFRfUFJPVE9fQgkJKDB4MjAxfFNTTF9TVF9DT05ORUNUKQorICNlbmRpZgorKyNkZWZpbmUgU1NMM19TVF9DV19DSEFOTkVMX0lEX0EJCSgweDIxMHxTU0xfU1RfQ09OTkVDVCkKKysjZGVmaW5lIFNTTDNfU1RfQ1dfQ0hBTk5FTF9JRF9CCQkoMHgyMTF8U1NMX1NUX0NPTk5FQ1QpCisgI2RlZmluZSBTU0wzX1NUX0NXX0ZJTklTSEVEX0EJCSgweDFCMHxTU0xfU1RfQ09OTkVDVCkKKyAjZGVmaW5lIFNTTDNfU1RfQ1dfRklOSVNIRURfQgkJKDB4MUIxfFNTTF9TVF9DT05ORUNUKQorIC8qIHJlYWQgZnJvbSBzZXJ2ZXIgKi8KK0BAIC02NDYsNiArNjY0LDkgQEAgdHlwZWRlZiBzdHJ1Y3Qgc3NsM19zdGF0ZV9zdAorICNkZWZpbmUgU1NMM19TVF9TUl9ORVhUX1BST1RPX0EJCSgweDIxMHxTU0xfU1RfQUNDRVBUKQorICNkZWZpbmUgU1NMM19TVF9TUl9ORVhUX1BST1RPX0IJCSgweDIxMXxTU0xfU1RfQUNDRVBUKQorICNlbmRpZgorKyNkZWZpbmUgU1NMM19TVF9TUl9QT1NUX0NMSUVOVF9DRVJUCSgweDFCRnxTU0xfU1RfQUNDRVBUKQorKyNkZWZpbmUgU1NMM19TVF9TUl9DSEFOTkVMX0lEX0EJCSgweDIyMHxTU0xfU1RfQUNDRVBUKQorKyNkZWZpbmUgU1NMM19TVF9TUl9DSEFOTkVMX0lEX0IJCSgweDIyMXxTU0xfU1RfQUNDRVBUKQorICNkZWZpbmUgU1NMM19TVF9TUl9GSU5JU0hFRF9BCQkoMHgxQzB8U1NMX1NUX0FDQ0VQVCkKKyAjZGVmaW5lIFNTTDNfU1RfU1JfRklOSVNIRURfQgkJKDB4MUMxfFNTTF9TVF9BQ0NFUFQpCisgLyogd3JpdGUgdG8gY2xpZW50ICovCitAQCAtNjczLDYgKzY5NCw3IEBAIHR5cGVkZWYgc3RydWN0IHNzbDNfc3RhdGVfc3QKKyAjaWZuZGVmIE9QRU5TU0xfTk9fTkVYVFBST1RPTkVHCisgI2RlZmluZSBTU0wzX01UX05FWFRfUFJPVE8JCQk2NworICNlbmRpZgorKyNkZWZpbmUgU1NMM19NVF9FTkNSWVBURURfRVhURU5TSU9OUwkJMjAzCisgI2RlZmluZSBEVExTMV9NVF9IRUxMT19WRVJJRllfUkVRVUVTVCAgICAzCisgCisgCitkaWZmIC0tZ2l0IGEvc3NsL3NzbF9hc24xLmMgYi9zc2wvc3NsX2FzbjEuYworaW5kZXggOGJkYTAxMS4uZTU3OWU3YyAxMDA2NDQKKy0tLSBhL3NzbC9zc2xfYXNuMS5jCisrKysgYi9zc2wvc3NsX2FzbjEuYworQEAgLTExOCwxMSArMTE4LDEyIEBAIHR5cGVkZWYgc3RydWN0IHNzbF9zZXNzaW9uX2FzbjFfc3QKKyAJQVNOMV9PQ1RFVF9TVFJJTkcgc3JwX3VzZXJuYW1lOworICNlbmRpZiAvKiBPUEVOU1NMX05PX1NSUCAqLworKwlBU04xX09DVEVUX1NUUklORyBvcmlnaW5hbF9oYW5kc2hha2VfaGFzaDsKKyAJfSBTU0xfU0VTU0lPTl9BU04xOworIAorIGludCBpMmRfU1NMX1NFU1NJT04oU1NMX1NFU1NJT04gKmluLCB1bnNpZ25lZCBjaGFyICoqcHApCisgCXsKKyAjZGVmaW5lIExTSVpFMiAoc2l6ZW9mKGxvbmcpKjIpCistCWludCB2MT0wLHYyPTAsdjM9MCx2ND0wLHY1PTAsdjc9MCx2OD0wOworKwlpbnQgdjE9MCx2Mj0wLHYzPTAsdjQ9MCx2NT0wLHY3PTAsdjg9MCx2MTQ9MDsKKyAJdW5zaWduZWQgY2hhciBidWZbNF0saWJ1ZjFbTFNJWkUyXSxpYnVmMltMU0laRTJdOworIAl1bnNpZ25lZCBjaGFyIGlidWYzW0xTSVpFMl0saWJ1ZjRbTFNJWkUyXSxpYnVmNVtMU0laRTJdOworICNpZm5kZWYgT1BFTlNTTF9OT19UTFNFWFQKK0BAIC0yODAsNCArMjgxLDExIEBAIGludCBpMmRfU1NMX1NFU1NJT04oU1NMX1NFU1NJT04gKmluLCB1bnNpZ25lZCBjaGFyICoqcHApCisgCQl9CisrCisrCWlmIChpbi0+b3JpZ2luYWxfaGFuZHNoYWtlX2hhc2hfbGVuID4gMCkKKysJCXsKKysJCWEub3JpZ2luYWxfaGFuZHNoYWtlX2hhc2gubGVuZ3RoID0gaW4tPm9yaWdpbmFsX2hhbmRzaGFrZV9oYXNoX2xlbjsKKysJCWEub3JpZ2luYWxfaGFuZHNoYWtlX2hhc2gudHlwZSA9IFZfQVNOMV9PQ1RFVF9TVFJJTkc7CisrCQlhLm9yaWdpbmFsX2hhbmRzaGFrZV9oYXNoLmRhdGEgPSBpbi0+b3JpZ2luYWxfaGFuZHNoYWtlX2hhc2g7CisrCQl9CisgI2VuZGlmIC8qIE9QRU5TU0xfTk9fUFNLICovCisgI2lmbmRlZiBPUEVOU1NMX05PX1NSUAorIAlpZiAoaW4tPnNycF91c2VybmFtZSkKK0BAIC0zMzUsNCArMzQzLDYgQEAgaW50IGkyZF9TU0xfU0VTU0lPTihTU0xfU0VTU0lPTiAqaW4sIHVuc2lnbmVkIGNoYXIgKipwcCkKKyAjZW5kaWYgLyogT1BFTlNTTF9OT19TUlAgKi8KKysJaWYgKGluLT5vcmlnaW5hbF9oYW5kc2hha2VfaGFzaF9sZW4gPiAwKQorKwkJTV9BU04xX0kyRF9sZW5fRVhQX29wdCgmKGEub3JpZ2luYWxfaGFuZHNoYWtlX2hhc2gpLGkyZF9BU04xX09DVEVUX1NUUklORywxNCx2MTQpOworIAorIAlNX0FTTjFfSTJEX3NlcV90b3RhbCgpOworIAorQEAgLTM4NSw0ICszOTUsNiBAQCBpbnQgaTJkX1NTTF9TRVNTSU9OKFNTTF9TRVNTSU9OICppbiwgdW5zaWduZWQgY2hhciAqKnBwKQorICNlbmRpZiAvKiBPUEVOU1NMX05PX1NSUCAqLworKwlpZiAoaW4tPm9yaWdpbmFsX2hhbmRzaGFrZV9oYXNoX2xlbiA+IDApCisrCQlNX0FTTjFfSTJEX3B1dF9FWFBfb3B0KCYoYS5vcmlnaW5hbF9oYW5kc2hha2VfaGFzaCksaTJkX0FTTjFfT0NURVRfU1RSSU5HLDE0LHYxNCk7CisgCU1fQVNOMV9JMkRfZmluaXNoKCk7CisgCX0KKyAKK0BAIC02NjEsNSArNjczLDE2IEBAIFNTTF9TRVNTSU9OICpkMmlfU1NMX1NFU1NJT04oU1NMX1NFU1NJT04gKiphLCBjb25zdCB1bnNpZ25lZCBjaGFyICoqcHAsCisgCQlvcy5kYXRhID0gTlVMTDsKKyAJCX0KKyAKKysJb3MubGVuZ3RoPTA7CisrCW9zLmRhdGE9TlVMTDsKKysJTV9BU04xX0QySV9nZXRfRVhQX29wdChvc3AsZDJpX0FTTjFfT0NURVRfU1RSSU5HLDE0KTsKKysJaWYgKG9zLmRhdGEgJiYgb3MubGVuZ3RoIDwgKGludClzaXplb2YocmV0LT5vcmlnaW5hbF9oYW5kc2hha2VfaGFzaCkpCisrCQl7CisrCQltZW1jcHkocmV0LT5vcmlnaW5hbF9oYW5kc2hha2VfaGFzaCwgb3MuZGF0YSwgb3MubGVuZ3RoKTsKKysJCXJldC0+b3JpZ2luYWxfaGFuZHNoYWtlX2hhc2hfbGVuID0gb3MubGVuZ3RoOworKwkJT1BFTlNTTF9mcmVlKG9zLmRhdGEpOworKwkJb3MuZGF0YSA9IE5VTEw7CisrCQl9CisrCisgCU1fQVNOMV9EMklfRmluaXNoKGEsU1NMX1NFU1NJT05fZnJlZSxTU0xfRl9EMklfU1NMX1NFU1NJT04pOworIAl9CitkaWZmIC0tZ2l0IGEvc3NsL3NzbF9lcnIuYyBiL3NzbC9zc2xfZXJyLmMKK2luZGV4IDM3MGZiNTcuLmIzZWVlNGQgMTAwNjQ0CistLS0gYS9zc2wvc3NsX2Vyci5jCisrKysgYi9zc2wvc3NsX2Vyci5jCitAQCAtMTUxLDYgKzE1MSw3IEBAIHN0YXRpYyBFUlJfU1RSSU5HX0RBVEEgU1NMX3N0cl9mdW5jdHNbXT0KKyB7RVJSX0ZVTkMoU1NMX0ZfU1NMM19HRVRfQ0VSVElGSUNBVEVfUkVRVUVTVCksCSJTU0wzX0dFVF9DRVJUSUZJQ0FURV9SRVFVRVNUIn0sCisge0VSUl9GVU5DKFNTTF9GX1NTTDNfR0VUX0NFUlRfU1RBVFVTKSwJIlNTTDNfR0VUX0NFUlRfU1RBVFVTIn0sCisge0VSUl9GVU5DKFNTTF9GX1NTTDNfR0VUX0NFUlRfVkVSSUZZKSwJIlNTTDNfR0VUX0NFUlRfVkVSSUZZIn0sCisre0VSUl9GVU5DKFNTTF9GX1NTTDNfR0VUX0NIQU5ORUxfSUQpLAkiU1NMM19HRVRfQ0hBTk5FTF9JRCJ9LAorIHtFUlJfRlVOQyhTU0xfRl9TU0wzX0dFVF9DTElFTlRfQ0VSVElGSUNBVEUpLAkiU1NMM19HRVRfQ0xJRU5UX0NFUlRJRklDQVRFIn0sCisge0VSUl9GVU5DKFNTTF9GX1NTTDNfR0VUX0NMSUVOVF9IRUxMTyksCSJTU0wzX0dFVF9DTElFTlRfSEVMTE8ifSwKKyB7RVJSX0ZVTkMoU1NMX0ZfU1NMM19HRVRfQ0xJRU5UX0tFWV9FWENIQU5HRSksCSJTU0wzX0dFVF9DTElFTlRfS0VZX0VYQ0hBTkdFIn0sCitAQCAtMTcwLDYgKzE3MSw3IEBAIHN0YXRpYyBFUlJfU1RSSU5HX0RBVEEgU1NMX3N0cl9mdW5jdHNbXT0KKyB7RVJSX0ZVTkMoU1NMX0ZfU1NMM19SRUFEX0JZVEVTKSwJIlNTTDNfUkVBRF9CWVRFUyJ9LAorIHtFUlJfRlVOQyhTU0xfRl9TU0wzX1JFQURfTiksCSJTU0wzX1JFQURfTiJ9LAorIHtFUlJfRlVOQyhTU0xfRl9TU0wzX1NFTkRfQ0VSVElGSUNBVEVfUkVRVUVTVCksCSJTU0wzX1NFTkRfQ0VSVElGSUNBVEVfUkVRVUVTVCJ9LAorK3tFUlJfRlVOQyhTU0xfRl9TU0wzX1NFTkRfQ0hBTk5FTF9JRCksCSJTU0wzX1NFTkRfQ0hBTk5FTF9JRCJ9LAorIHtFUlJfRlVOQyhTU0xfRl9TU0wzX1NFTkRfQ0xJRU5UX0NFUlRJRklDQVRFKSwJIlNTTDNfU0VORF9DTElFTlRfQ0VSVElGSUNBVEUifSwKKyB7RVJSX0ZVTkMoU1NMX0ZfU1NMM19TRU5EX0NMSUVOVF9LRVlfRVhDSEFOR0UpLAkiU1NMM19TRU5EX0NMSUVOVF9LRVlfRVhDSEFOR0UifSwKKyB7RVJSX0ZVTkMoU1NMX0ZfU1NMM19TRU5EX0NMSUVOVF9WRVJJRlkpLAkiU1NMM19TRU5EX0NMSUVOVF9WRVJJRlkifSwKK0BAIC0zMzksMTIgKzM0MSwxNSBAQCBzdGF0aWMgRVJSX1NUUklOR19EQVRBIFNTTF9zdHJfcmVhc29uc1tdPQorIHtFUlJfUkVBU09OKFNTTF9SX0JJT19OT1RfU0VUKSAgICAgICAgICAgLCJiaW8gbm90IHNldCJ9LAorIHtFUlJfUkVBU09OKFNTTF9SX0JMT0NLX0NJUEhFUl9QQURfSVNfV1JPTkcpLCJibG9jayBjaXBoZXIgcGFkIGlzIHdyb25nIn0sCisge0VSUl9SRUFTT04oU1NMX1JfQk5fTElCKSAgICAgICAgICAgICAgICAsImJuIGxpYiJ9LAorK3tFUlJfUkVBU09OKFNTTF9SX0NBTk5PVF9TRVJJQUxJWkVfUFVCTElDX0tFWSksImNhbm5vdCBzZXJpYWxpemUgcHVibGljIGtleSJ9LAorIHtFUlJfUkVBU09OKFNTTF9SX0NBX0ROX0xFTkdUSF9NSVNNQVRDSCkgLCJjYSBkbiBsZW5ndGggbWlzbWF0Y2gifSwKKyB7RVJSX1JFQVNPTihTU0xfUl9DQV9ETl9UT09fTE9ORykgICAgICAgICwiY2EgZG4gdG9vIGxvbmcifSwKKyB7RVJSX1JFQVNPTihTU0xfUl9DQ1NfUkVDRUlWRURfRUFSTFkpICAgICwiY2NzIHJlY2VpdmVkIGVhcmx5In0sCisge0VSUl9SRUFTT04oU1NMX1JfQ0VSVElGSUNBVEVfVkVSSUZZX0ZBSUxFRCksImNlcnRpZmljYXRlIHZlcmlmeSBmYWlsZWQifSwKKyB7RVJSX1JFQVNPTihTU0xfUl9DRVJUX0xFTkdUSF9NSVNNQVRDSCkgICwiY2VydCBsZW5ndGggbWlzbWF0Y2gifSwKKyB7RVJSX1JFQVNPTihTU0xfUl9DSEFMTEVOR0VfSVNfRElGRkVSRU5UKSwiY2hhbGxlbmdlIGlzIGRpZmZlcmVudCJ9LAorK3tFUlJfUkVBU09OKFNTTF9SX0NIQU5ORUxfSURfTk9UX1AyNTYpICAgLCJjaGFubmVsIGlkIG5vdCBwMjU2In0sCisre0VSUl9SRUFTT04oU1NMX1JfQ0hBTk5FTF9JRF9TSUdOQVRVUkVfSU5WQUxJRCksIkNoYW5uZWwgSUQgc2lnbmF0dXJlIGludmFsaWQifSwKKyB7RVJSX1JFQVNPTihTU0xfUl9DSVBIRVJfQ09ERV9XUk9OR19MRU5HVEgpLCJjaXBoZXIgY29kZSB3cm9uZyBsZW5ndGgifSwKKyB7RVJSX1JFQVNPTihTU0xfUl9DSVBIRVJfT1JfSEFTSF9VTkFWQUlMQUJMRSksImNpcGhlciBvciBoYXNoIHVuYXZhaWxhYmxlIn0sCisge0VSUl9SRUFTT04oU1NMX1JfQ0lQSEVSX1RBQkxFX1NSQ19FUlJPUiksImNpcGhlciB0YWJsZSBzcmMgZXJyb3IifSwKK0BAIC0zNTcsNiArMzYyLDcgQEAgc3RhdGljIEVSUl9TVFJJTkdfREFUQSBTU0xfc3RyX3JlYXNvbnNbXT0KKyB7RVJSX1JFQVNPTihTU0xfUl9DT05ORUNUSU9OX0lEX0lTX0RJRkZFUkVOVCksImNvbm5lY3Rpb24gaWQgaXMgZGlmZmVyZW50In0sCisge0VSUl9SRUFTT04oU1NMX1JfQ09OTkVDVElPTl9UWVBFX05PVF9TRVQpLCJjb25uZWN0aW9uIHR5cGUgbm90IHNldCJ9LAorIHtFUlJfUkVBU09OKFNTTF9SX0NPT0tJRV9NSVNNQVRDSCkgICAgICAgLCJjb29raWUgbWlzbWF0Y2gifSwKKyt7RVJSX1JFQVNPTihTU0xfUl9EMklfRUNEU0FfU0lHKSAgICAgICAgICwiZDJpIGVjZHNhIHNpZyJ9LAorIHtFUlJfUkVBU09OKFNTTF9SX0RBVEFfQkVUV0VFTl9DQ1NfQU5EX0ZJTklTSEVEKSwiZGF0YSBiZXR3ZWVuIGNjcyBhbmQgZmluaXNoZWQifSwKKyB7RVJSX1JFQVNPTihTU0xfUl9EQVRBX0xFTkdUSF9UT09fTE9ORykgICwiZGF0YSBsZW5ndGggdG9vIGxvbmcifSwKKyB7RVJSX1JFQVNPTihTU0xfUl9ERUNSWVBUSU9OX0ZBSUxFRCkgICAgICwiZGVjcnlwdGlvbiBmYWlsZWQifSwKK0BAIC0zNzQsOSArMzgwLDEyIEBAIHN0YXRpYyBFUlJfU1RSSU5HX0RBVEEgU1NMX3N0cl9yZWFzb25zW109Cisge0VSUl9SRUFTT04oU1NMX1JfRU5DUllQVEVEX0xFTkdUSF9UT09fTE9ORyksImVuY3J5cHRlZCBsZW5ndGggdG9vIGxvbmcifSwKKyB7RVJSX1JFQVNPTihTU0xfUl9FUlJPUl9HRU5FUkFUSU5HX1RNUF9SU0FfS0VZKSwiZXJyb3IgZ2VuZXJhdGluZyB0bXAgcnNhIGtleSJ9LAorIHtFUlJfUkVBU09OKFNTTF9SX0VSUk9SX0lOX1JFQ0VJVkVEX0NJUEhFUl9MSVNUKSwiZXJyb3IgaW4gcmVjZWl2ZWQgY2lwaGVyIGxpc3QifSwKKyt7RVJSX1JFQVNPTihTU0xfUl9FVlBfRElHRVNUU0lHTkZJTkFMX0ZBSUxFRCksImV2cCBkaWdlc3RzaWduZmluYWwgZmFpbGVkIn0sCisre0VSUl9SRUFTT04oU1NMX1JfRVZQX0RJR0VTVFNJR05JTklUX0ZBSUxFRCksImV2cCBkaWdlc3RzaWduaW5pdCBmYWlsZWQifSwKKyB7RVJSX1JFQVNPTihTU0xfUl9FWENFU1NJVkVfTUVTU0FHRV9TSVpFKSwiZXhjZXNzaXZlIG1lc3NhZ2Ugc2l6ZSJ9LAorIHtFUlJfUkVBU09OKFNTTF9SX0VYVFJBX0RBVEFfSU5fTUVTU0FHRSkgLCJleHRyYSBkYXRhIGluIG1lc3NhZ2UifSwKKyB7RVJSX1JFQVNPTihTU0xfUl9HT1RfQV9GSU5fQkVGT1JFX0FfQ0NTKSwiZ290IGEgZmluIGJlZm9yZSBhIGNjcyJ9LAorK3tFUlJfUkVBU09OKFNTTF9SX0dPVF9DSEFOTkVMX0lEX0JFRk9SRV9BX0NDUyksImdvdCBDaGFubmVsIElEIGJlZm9yZSBhIGNjcyJ9LAorIHtFUlJfUkVBU09OKFNTTF9SX0dPVF9ORVhUX1BST1RPX0JFRk9SRV9BX0NDUyksImdvdCBuZXh0IHByb3RvIGJlZm9yZSBhIGNjcyJ9LAorIHtFUlJfUkVBU09OKFNTTF9SX0dPVF9ORVhUX1BST1RPX1dJVEhPVVRfRVhURU5TSU9OKSwiZ290IG5leHQgcHJvdG8gd2l0aG91dCBzZWVpbmcgZXh0ZW5zaW9uIn0sCisge0VSUl9SRUFTT04oU1NMX1JfSFRUUFNfUFJPWFlfUkVRVUVTVCkgICAsImh0dHBzIHByb3h5IHJlcXVlc3QifSwKK0BAIC0zODYsNiArMzk1LDcgQEAgc3RhdGljIEVSUl9TVFJJTkdfREFUQSBTU0xfc3RyX3JlYXNvbnNbXT0KKyB7RVJSX1JFQVNPTihTU0xfUl9JTlZBTElEX0NIQUxMRU5HRV9MRU5HVEgpLCJpbnZhbGlkIGNoYWxsZW5nZSBsZW5ndGgifSwKKyB7RVJSX1JFQVNPTihTU0xfUl9JTlZBTElEX0NPTU1BTkQpICAgICAgICwiaW52YWxpZCBjb21tYW5kIn0sCisge0VSUl9SRUFTT04oU1NMX1JfSU5WQUxJRF9DT01QUkVTU0lPTl9BTEdPUklUSE0pLCJpbnZhbGlkIGNvbXByZXNzaW9uIGFsZ29yaXRobSJ9LAorK3tFUlJfUkVBU09OKFNTTF9SX0lOVkFMSURfTUVTU0FHRSkgICAgICAgLCJpbnZhbGlkIG1lc3NhZ2UifSwKKyB7RVJSX1JFQVNPTihTU0xfUl9JTlZBTElEX1BVUlBPU0UpICAgICAgICwiaW52YWxpZCBwdXJwb3NlIn0sCisge0VSUl9SRUFTT04oU1NMX1JfSU5WQUxJRF9TUlBfVVNFUk5BTUUpICAsImludmFsaWQgc3JwIHVzZXJuYW1lIn0sCisge0VSUl9SRUFTT04oU1NMX1JfSU5WQUxJRF9TVEFUVVNfUkVTUE9OU0UpLCJpbnZhbGlkIHN0YXR1cyByZXNwb25zZSJ9LAorQEAgLTQ0MCw2ICs0NTAsNyBAQCBzdGF0aWMgRVJSX1NUUklOR19EQVRBIFNTTF9zdHJfcmVhc29uc1tdPQorIHtFUlJfUkVBU09OKFNTTF9SX05PX0NPTVBSRVNTSU9OX1NQRUNJRklFRCksIm5vIGNvbXByZXNzaW9uIHNwZWNpZmllZCJ9LAorIHtFUlJfUkVBU09OKFNTTF9SX05PX0dPU1RfQ0VSVElGSUNBVEVfU0VOVF9CWV9QRUVSKSwiUGVlciBoYXZlbid0IHNlbnQgR09TVCBjZXJ0aWZpY2F0ZSwgcmVxdWlyZWQgZm9yIHNlbGVjdGVkIGNpcGhlcnN1aXRlIn0sCisge0VSUl9SRUFTT04oU1NMX1JfTk9fTUVUSE9EX1NQRUNJRklFRCkgICAsIm5vIG1ldGhvZCBzcGVjaWZpZWQifSwKKyt7RVJSX1JFQVNPTihTU0xfUl9OT19QMjU2X1NVUFBPUlQpICAgICAgICwibm8gcDI1NiBzdXBwb3J0In0sCisge0VSUl9SRUFTT04oU1NMX1JfTk9fUFJJVkFURUtFWSkgICAgICAgICAsIm5vIHByaXZhdGVrZXkifSwKKyB7RVJSX1JFQVNPTihTU0xfUl9OT19QUklWQVRFX0tFWV9BU1NJR05FRCksIm5vIHByaXZhdGUga2V5IGFzc2lnbmVkIn0sCisge0VSUl9SRUFTT04oU1NMX1JfTk9fUFJPVE9DT0xTX0FWQUlMQUJMRSksIm5vIHByb3RvY29scyBhdmFpbGFibGUifSwKK2RpZmYgLS1naXQgYS9zc2wvc3NsX2xpYi5jIGIvc3NsL3NzbF9saWIuYworaW5kZXggMTIzZjkyNS4uNjkzODI2NyAxMDA2NDQKKy0tLSBhL3NzbC9zc2xfbGliLmMKKysrKyBiL3NzbC9zc2xfbGliLmMKK0BAIC01NjIsNiArNTYyLDggQEAgdm9pZCBTU0xfZnJlZShTU0wgKnMpCisgCQlza19PQ1NQX1JFU1BJRF9wb3BfZnJlZShzLT50bHNleHRfb2NzcF9pZHMsIE9DU1BfUkVTUElEX2ZyZWUpOworIAlpZiAocy0+dGxzZXh0X29jc3BfcmVzcCkKKyAJCU9QRU5TU0xfZnJlZShzLT50bHNleHRfb2NzcF9yZXNwKTsKKysJaWYgKHMtPnRsc2V4dF9jaGFubmVsX2lkX3ByaXZhdGUpCisrCQlFVlBfUEtFWV9mcmVlKHMtPnRsc2V4dF9jaGFubmVsX2lkX3ByaXZhdGUpOworICNlbmRpZgorIAorIAlpZiAocy0+Y2xpZW50X0NBICE9IE5VTEwpCitAQCAtMTk1Miw2ICsxOTU0LDExIEBAIHZvaWQgU1NMX0NUWF9mcmVlKFNTTF9DVFggKmEpCisgCQlzc2xfYnVmX2ZyZWVsaXN0X2ZyZWUoYS0+cmJ1Zl9mcmVlbGlzdCk7CisgI2VuZGlmCisgCisrI2lmbmRlZiBPUEVOU1NMX05PX1RMU0VYVAorKwlpZiAoYS0+dGxzZXh0X2NoYW5uZWxfaWRfcHJpdmF0ZSkKKysJCUVWUF9QS0VZX2ZyZWUoYS0+dGxzZXh0X2NoYW5uZWxfaWRfcHJpdmF0ZSk7CisrI2VuZGlmCisrCisgCU9QRU5TU0xfZnJlZShhKTsKKyAJfQorIAorQEAgLTI1MDQsNiArMjUxMSwxMCBAQCBpbnQgU1NMX2dldF9lcnJvcihjb25zdCBTU0wgKnMsaW50IGkpCisgCQl7CisgCQlyZXR1cm4oU1NMX0VSUk9SX1dBTlRfWDUwOV9MT09LVVApOworIAkJfQorKwlpZiAoKGkgPCAwKSAmJiBTU0xfd2FudF9jaGFubmVsX2lkX2xvb2t1cChzKSkKKysJCXsKKysJCXJldHVybihTU0xfRVJST1JfV0FOVF9DSEFOTkVMX0lEX0xPT0tVUCk7CisrCQl9CisgCisgCWlmIChpID09IDApCisgCQl7CitkaWZmIC0tZ2l0IGEvc3NsL3NzbF9sb2NsLmggYi9zc2wvc3NsX2xvY2wuaAoraW5kZXggZmNjNmQ4MC4uM2NlM2Q2MCAxMDA2NDQKKy0tLSBhL3NzbC9zc2xfbG9jbC5oCisrKysgYi9zc2wvc3NsX2xvY2wuaAorQEAgLTM3OCw2ICszNzgsNyBAQAorICAqIChjdXJyZW50bHkgdGhpcyBhbHNvIGdvZXMgaW50byBhbGdvcml0aG0yKSAqLworICNkZWZpbmUgVExTMV9TVFJFQU1fTUFDIDB4MDQKKyAKKysjZGVmaW5lIFRMU0VYVF9DSEFOTkVMX0lEX1NJWkUgMTI4CisgCisgCisgLyoKK0BAIC0xMDA4LDYgKzEwMDksNyBAQCBpbnQgc3NsM19jaGVja19jZXJ0X2FuZF9hbGdvcml0aG0oU1NMICpzKTsKKyBpbnQgc3NsM19jaGVja19maW5pc2hlZChTU0wgKnMpOworICMgaWZuZGVmIE9QRU5TU0xfTk9fTkVYVFBST1RPTkVHCisgaW50IHNzbDNfc2VuZF9uZXh0X3Byb3RvKFNTTCAqcyk7CisraW50IHNzbDNfc2VuZF9jaGFubmVsX2lkKFNTTCAqcyk7CisgIyBlbmRpZgorICNlbmRpZgorIAorQEAgLTEwMzAsNiArMTAzMiw3IEBAIGludCBzc2wzX2dldF9jZXJ0X3ZlcmlmeShTU0wgKnMpOworICNpZm5kZWYgT1BFTlNTTF9OT19ORVhUUFJPVE9ORUcKKyBpbnQgc3NsM19nZXRfbmV4dF9wcm90byhTU0wgKnMpOworICNlbmRpZgorK2ludCBzc2wzX2dldF9jaGFubmVsX2lkKFNTTCAqcyk7CisgCisgaW50IGR0bHMxX3NlbmRfaGVsbG9fcmVxdWVzdChTU0wgKnMpOworIGludCBkdGxzMV9zZW5kX3NlcnZlcl9oZWxsbyhTU0wgKnMpOworQEAgLTEwNzIsNiArMTA3NSw3IEBAIHZvaWQgc3NsX2ZyZWVfd2Jpb19idWZmZXIoU1NMICpzKTsKKyBpbnQgdGxzMV9jaGFuZ2VfY2lwaGVyX3N0YXRlKFNTTCAqcywgaW50IHdoaWNoKTsKKyBpbnQgdGxzMV9zZXR1cF9rZXlfYmxvY2soU1NMICpzKTsKKyBpbnQgdGxzMV9lbmMoU1NMICpzLCBpbnQgc25kKTsKKytpbnQgdGxzMV9oYW5kc2hha2VfZGlnZXN0KFNTTCAqcywgdW5zaWduZWQgY2hhciAqb3V0LCBzaXplX3Qgb3V0X2xlbik7CisgaW50IHRsczFfZmluYWxfZmluaXNoX21hYyhTU0wgKnMsCisgCWNvbnN0IGNoYXIgKnN0ciwgaW50IHNsZW4sIHVuc2lnbmVkIGNoYXIgKnApOworIGludCB0bHMxX2NlcnRfdmVyaWZ5X21hYyhTU0wgKnMsIGludCBtZF9uaWQsIHVuc2lnbmVkIGNoYXIgKnApOworQEAgLTExMjcsNiArMTEzMSw4IEBAIGludCB0bHMxMl9nZXRfc2lnYW5kaGFzaCh1bnNpZ25lZCBjaGFyICpwLCBjb25zdCBFVlBfUEtFWSAqcGssCisgaW50IHRsczEyX2dldF9zaWdpZChjb25zdCBFVlBfUEtFWSAqcGspOworIGNvbnN0IEVWUF9NRCAqdGxzMTJfZ2V0X2hhc2godW5zaWduZWQgY2hhciBoYXNoX2FsZyk7CisgCisraW50IHRsczFfY2hhbm5lbF9pZF9oYXNoKEVWUF9NRF9DVFggKmN0eCwgU1NMICpzKTsKKytpbnQgdGxzMV9yZWNvcmRfaGFuZHNoYWtlX2hhc2hlc19mb3JfY2hhbm5lbF9pZChTU0wgKnMpOworICNlbmRpZgorIAorIGludCBzc2wzX2Nhbl9jdXR0aHJvdWdoKGNvbnN0IFNTTCAqcyk7CitkaWZmIC0tZ2l0IGEvc3NsL3NzbF9zZXNzLmMgYi9zc2wvc3NsX3Nlc3MuYworaW5kZXggMmEzNzhjMy4uZGQzYjRhNiAxMDA2NDQKKy0tLSBhL3NzbC9zc2xfc2Vzcy5jCisrKysgYi9zc2wvc3NsX3Nlc3MuYworQEAgLTExNTEsNiArMTE1MSwxNyBAQCBpbnQgKCpTU0xfQ1RYX2dldF9jbGllbnRfY2VydF9jYihTU0xfQ1RYICpjdHgpKShTU0wgKiBzc2wsIFg1MDkgKiogeDUwOSAsIEVWUF9QSworIAlyZXR1cm4gY3R4LT5jbGllbnRfY2VydF9jYjsKKyAJfQorIAorK3ZvaWQgU1NMX0NUWF9zZXRfY2hhbm5lbF9pZF9jYihTU0xfQ1RYICpjdHgsCisrCXZvaWQgKCpjYikoU1NMICpzc2wsIEVWUF9QS0VZICoqcGtleSkpCisrCXsKKysJY3R4LT5jaGFubmVsX2lkX2NiPWNiOworKwl9CisrCisrdm9pZCAoKlNTTF9DVFhfZ2V0X2NoYW5uZWxfaWRfY2IoU1NMX0NUWCAqY3R4KSkoU1NMICogc3NsLCBFVlBfUEtFWSAqKnBrZXkpCisrCXsKKysJcmV0dXJuIGN0eC0+Y2hhbm5lbF9pZF9jYjsKKysJfQorKworICNpZm5kZWYgT1BFTlNTTF9OT19FTkdJTkUKKyBpbnQgU1NMX0NUWF9zZXRfY2xpZW50X2NlcnRfZW5naW5lKFNTTF9DVFggKmN0eCwgRU5HSU5FICplKQorIAl7CitkaWZmIC0tZ2l0IGEvc3NsL3QxX2VuYy5jIGIvc3NsL3QxX2VuYy5jCitpbmRleCAwYzRjZGRlLi5mMzk2Njc0IDEwMDY0NAorLS0tIGEvc3NsL3QxX2VuYy5jCisrKysgYi9zc2wvdDFfZW5jLmMKK0BAIC04OTUsNTQgKzg5NSw3OSBAQCBpbnQgdGxzMV9jZXJ0X3ZlcmlmeV9tYWMoU1NMICpzLCBpbnQgbWRfbmlkLCB1bnNpZ25lZCBjaGFyICpvdXQpCisgCXJldHVybigoaW50KXJldCk7CisgCX0KKyAKKysvKiB0bHMxX2hhbmRzaGFrZV9kaWdlc3QgY2FsY3VsYXRlcyB0aGUgY3VycmVudCBoYW5kc2hha2UgaGFzaCBhbmQgd3JpdGVzIGl0IHRvCisrICogfG91dHwsIHdoaWNoIGhhcyBzcGFjZSBmb3IgfG91dF9sZW58IGJ5dGVzLiBJdCByZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMKKysgKiB3cml0dGVuIG9yIC0xIGluIHRoZSBldmVudCBvZiBhbiBlcnJvci4gVGhpcyBmdW5jdGlvbiB3b3JrcyBvbiBhIGNvcHkgb2YgdGhlCisrICogdW5kZXJseWluZyBkaWdlc3RzIHNvIGNhbiBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgYW5kIHByaW9yIHRvIHRoZSBmaW5hbAorKyAqIHVwZGF0ZSBldGMuICovCisraW50IHRsczFfaGFuZHNoYWtlX2RpZ2VzdChTU0wgKnMsIHVuc2lnbmVkIGNoYXIgKm91dCwgc2l6ZV90IG91dF9sZW4pCisrCXsKKysJY29uc3QgRVZQX01EICptZDsKKysJRVZQX01EX0NUWCBjdHg7CisrCWludCBpLCBlcnIgPSAwLCBsZW4gPSAwOworKwlsb25nIG1hc2s7CisrCisrCUVWUF9NRF9DVFhfaW5pdCgmY3R4KTsKKysKKysJZm9yIChpID0gMDsgc3NsX2dldF9oYW5kc2hha2VfZGlnZXN0KGksICZtYXNrLCAmbWQpOyBpKyspCisrCQl7CisrCQlpbnQgaGFzaF9zaXplOworKwkJdW5zaWduZWQgaW50IGRpZ2VzdF9sZW47CisrCQlFVlBfTURfQ1RYICpoZGdzdCA9IHMtPnMzLT5oYW5kc2hha2VfZGdzdFtpXTsKKysKKysJCWlmICgobWFzayAmIHNzbF9nZXRfYWxnb3JpdGhtMihzKSkgPT0gMCkKKysJCQljb250aW51ZTsKKysKKysJCWhhc2hfc2l6ZSA9IEVWUF9NRF9zaXplKG1kKTsKKysJCWlmICghaGRnc3QgfHwgaGFzaF9zaXplIDwgMCB8fCAoc2l6ZV90KWhhc2hfc2l6ZSA+IG91dF9sZW4pCisrCQkJeworKwkJCWVyciA9IDE7CisrCQkJYnJlYWs7CisrCQkJfQorKworKwkJaWYgKCFFVlBfTURfQ1RYX2NvcHlfZXgoJmN0eCwgaGRnc3QpIHx8CisrCQkgICAgIUVWUF9EaWdlc3RGaW5hbF9leCgmY3R4LCBvdXQsICZkaWdlc3RfbGVuKSB8fAorKwkJICAgIGRpZ2VzdF9sZW4gIT0gKHVuc2lnbmVkIGludCloYXNoX3NpemUpIC8qIGludGVybmFsIGVycm9yICovCisrCQkJeworKwkJCWVyciA9IDE7CisrCQkJYnJlYWs7CisrCQkJfQorKwkJb3V0ICs9IGRpZ2VzdF9sZW47CisrCQlvdXRfbGVuIC09IGRpZ2VzdF9sZW47CisrCQlsZW4gKz0gZGlnZXN0X2xlbjsKKysJCX0KKysKKysJRVZQX01EX0NUWF9jbGVhbnVwKCZjdHgpOworKworKwlpZiAoZXJyICE9IDApCisrCQlyZXR1cm4gLTE7CisrCXJldHVybiBsZW47CisrCX0KKysKKyBpbnQgdGxzMV9maW5hbF9maW5pc2hfbWFjKFNTTCAqcywKKyAJICAgICBjb25zdCBjaGFyICpzdHIsIGludCBzbGVuLCB1bnNpZ25lZCBjaGFyICpvdXQpCisgCXsKKy0JdW5zaWduZWQgaW50IGk7CistCUVWUF9NRF9DVFggY3R4OworIAl1bnNpZ25lZCBjaGFyIGJ1ZlsyKkVWUF9NQVhfTURfU0laRV07CistCXVuc2lnbmVkIGNoYXIgKnEsYnVmMlsxMl07CistCWludCBpZHg7CistCWxvbmcgbWFzazsKKysJdW5zaWduZWQgY2hhciBidWYyWzEyXTsKKyAJaW50IGVycj0wOworLQljb25zdCBFVlBfTUQgKm1kOyAKKysJaW50IGRpZ2VzdHNfbGVuOworIAorLQlxPWJ1ZjsKKy0KKy0JaWYgKHMtPnMzLT5oYW5kc2hha2VfYnVmZmVyKSAKKysJaWYgKHMtPnMzLT5oYW5kc2hha2VfYnVmZmVyKQorIAkJaWYgKCFzc2wzX2RpZ2VzdF9jYWNoZWRfcmVjb3JkcyhzKSkKKyAJCQlyZXR1cm4gMDsKKyAKKy0JRVZQX01EX0NUWF9pbml0KCZjdHgpOworLQorLQlmb3IgKGlkeD0wO3NzbF9nZXRfaGFuZHNoYWtlX2RpZ2VzdChpZHgsJm1hc2ssJm1kKTtpZHgrKykKKysJZGlnZXN0c19sZW4gPSB0bHMxX2hhbmRzaGFrZV9kaWdlc3QocywgYnVmLCBzaXplb2YoYnVmKSk7CisrCWlmIChkaWdlc3RzX2xlbiA8IDApCisgCQl7CistCQlpZiAobWFzayAmIHNzbF9nZXRfYWxnb3JpdGhtMihzKSkKKy0JCQl7CistCQkJaW50IGhhc2hzaXplID0gRVZQX01EX3NpemUobWQpOworLQkJCUVWUF9NRF9DVFggKmhkZ3N0ID0gcy0+czMtPmhhbmRzaGFrZV9kZ3N0W2lkeF07CistCQkJaWYgKCFoZGdzdCB8fCBoYXNoc2l6ZSA8IDAgfHwgaGFzaHNpemUgPiAoaW50KShzaXplb2YgYnVmIC0gKHNpemVfdCkocS1idWYpKSkKKy0JCQkJeworLQkJCQkvKiBpbnRlcm5hbCBlcnJvcjogJ2J1ZicgaXMgdG9vIHNtYWxsIGZvciB0aGlzIGNpcGVyc3VpdGUhICovCistCQkJCWVyciA9IDE7CistCQkJCX0KKy0JCQllbHNlCistCQkJCXsKKy0JCQkJaWYgKCFFVlBfTURfQ1RYX2NvcHlfZXgoJmN0eCwgaGRnc3QpIHx8CistCQkJCQkhRVZQX0RpZ2VzdEZpbmFsX2V4KCZjdHgscSwmaSkgfHwKKy0JCQkJCShpICE9ICh1bnNpZ25lZCBpbnQpaGFzaHNpemUpKQorLQkJCQkJZXJyID0gMTsKKy0JCQkJcSs9aGFzaHNpemU7CistCQkJCX0KKy0JCQl9CisrCQllcnIgPSAxOworKwkJZGlnZXN0c19sZW4gPSAwOworIAkJfQorLQkJCisrCisgCWlmICghdGxzMV9QUkYoc3NsX2dldF9hbGdvcml0aG0yKHMpLAorLQkJCXN0cixzbGVuLCBidWYsKGludCkocS1idWYpLCBOVUxMLDAsIE5VTEwsMCwgTlVMTCwwLAorKwkJCXN0cixzbGVuLCBidWYsIGRpZ2VzdHNfbGVuLCBOVUxMLDAsIE5VTEwsMCwgTlVMTCwwLAorIAkJCXMtPnNlc3Npb24tPm1hc3Rlcl9rZXkscy0+c2Vzc2lvbi0+bWFzdGVyX2tleV9sZW5ndGgsCisgCQkJb3V0LGJ1ZjIsc2l6ZW9mIGJ1ZjIpKQorIAkJZXJyID0gMTsKKy0JRVZQX01EX0NUWF9jbGVhbnVwKCZjdHgpOworIAorIAlpZiAoZXJyKQorIAkJcmV0dXJuIDA7CitkaWZmIC0tZ2l0IGEvc3NsL3QxX2xpYi5jIGIvc3NsL3QxX2xpYi5jCitpbmRleCBiZGRmZmQ5Li4xYTU2YTk3IDEwMDY0NAorLS0tIGEvc3NsL3QxX2xpYi5jCisrKysgYi9zc2wvdDFfbGliLmMKK0BAIC02NDEsNiArNjQxLDE5IEBAIHVuc2lnbmVkIGNoYXIgKnNzbF9hZGRfY2xpZW50aGVsbG9fdGxzZXh0KFNTTCAqcywgdW5zaWduZWQgY2hhciAqcCwgdW5zaWduZWQgY2hhCisgCQl9CisgI2VuZGlmCisgCisrCWlmIChzLT50bHNleHRfY2hhbm5lbF9pZF9lbmFibGVkKQorKwkJeworKwkJLyogVGhlIGNsaWVudCBhZHZlcnRpc2VzIGFuIGVtdHB5IGV4dGVuc2lvbiB0byBpbmRpY2F0ZSBpdHMKKysJCSAqIHN1cHBvcnQgZm9yIENoYW5uZWwgSUQuICovCisrCQlpZiAobGltaXQgLSByZXQgLSA0IDwgMCkKKysJCQlyZXR1cm4gTlVMTDsKKysJCWlmIChzLT5jdHgtPnRsc2V4dF9jaGFubmVsX2lkX2VuYWJsZWRfbmV3KQorKwkJCXMybihUTFNFWFRfVFlQRV9jaGFubmVsX2lkX25ldyxyZXQpOworKwkJZWxzZQorKwkJCXMybihUTFNFWFRfVFlQRV9jaGFubmVsX2lkLHJldCk7CisrCQlzMm4oMCxyZXQpOworKwkJfQorKworICNpZm5kZWYgT1BFTlNTTF9OT19TUlRQCisgICAgICAgICBpZihTU0xfZ2V0X3NydHBfcHJvZmlsZXMocykpCisgICAgICAgICAgICAgICAgIHsKK0BAIC04ODEsNiArODk0LDE5IEBAIHVuc2lnbmVkIGNoYXIgKnNzbF9hZGRfc2VydmVyaGVsbG9fdGxzZXh0KFNTTCAqcywgdW5zaWduZWQgY2hhciAqcCwgdW5zaWduZWQgY2hhCisgCQl9CisgI2VuZGlmCisgCisrCS8qIElmIHRoZSBjbGllbnQgYWR2ZXJ0aXNlZCBzdXBwb3J0IGZvciBDaGFubmVsIElELCBhbmQgd2UgaGF2ZSBpdAorKwkgKiBlbmFibGVkLCB0aGVuIHdlIHdhbnQgdG8gZWNobyBpdCBiYWNrLiAqLworKwlpZiAocy0+czMtPnRsc2V4dF9jaGFubmVsX2lkX3ZhbGlkKQorKwkJeworKwkJaWYgKGxpbWl0IC0gcmV0IC0gNCA8IDApCisrCQkJcmV0dXJuIE5VTEw7CisrCQlpZiAocy0+czMtPnRsc2V4dF9jaGFubmVsX2lkX25ldykKKysJCQlzMm4oVExTRVhUX1RZUEVfY2hhbm5lbF9pZF9uZXcscmV0KTsKKysJCWVsc2UKKysJCQlzMm4oVExTRVhUX1RZUEVfY2hhbm5lbF9pZCxyZXQpOworKwkJczJuKDAscmV0KTsKKysJCX0KKysKKyAJaWYgKChleHRkYXRhbGVuID0gcmV0LXAtMik9PSAwKSAKKyAJCXJldHVybiBwOworIAorQEAgLTE0NDIsNiArMTQ2OCwxNiBAQCBpbnQgc3NsX3BhcnNlX2NsaWVudGhlbGxvX3Rsc2V4dChTU0wgKnMsIHVuc2lnbmVkIGNoYXIgKipwLCB1bnNpZ25lZCBjaGFyICpkLCBpbgorIAkJCX0KKyAjZW5kaWYKKyAKKysJCWVsc2UgaWYgKHR5cGUgPT0gVExTRVhUX1RZUEVfY2hhbm5lbF9pZCAmJiBzLT50bHNleHRfY2hhbm5lbF9pZF9lbmFibGVkKQorKwkJCXMtPnMzLT50bHNleHRfY2hhbm5lbF9pZF92YWxpZCA9IDE7CisrCisrCQllbHNlIGlmICh0eXBlID09IFRMU0VYVF9UWVBFX2NoYW5uZWxfaWRfbmV3ICYmCisrCQkJIHMtPnRsc2V4dF9jaGFubmVsX2lkX2VuYWJsZWQpCisrCQkJeworKwkJCXMtPnMzLT50bHNleHRfY2hhbm5lbF9pZF92YWxpZCA9IDE7CisrCQkJcy0+czMtPnRsc2V4dF9jaGFubmVsX2lkX25ldyA9IDE7CisrCQkJfQorKworIAkJLyogc2Vzc2lvbiB0aWNrZXQgcHJvY2Vzc2VkIGVhcmxpZXIgKi8KKyAjaWZuZGVmIE9QRU5TU0xfTk9fU1JUUAorIAkJZWxzZSBpZiAodHlwZSA9PSBUTFNFWFRfVFlQRV91c2Vfc3J0cCkKK0BAIC0xNjcyLDYgKzE3MDgsMTUgQEAgaW50IHNzbF9wYXJzZV9zZXJ2ZXJoZWxsb190bHNleHQoU1NMICpzLCB1bnNpZ25lZCBjaGFyICoqcCwgdW5zaWduZWQgY2hhciAqZCwgaW4KKyAJCQlzLT5zMy0+bmV4dF9wcm90b19uZWdfc2VlbiA9IDE7CisgCQkJfQorICNlbmRpZgorKwkJZWxzZSBpZiAodHlwZSA9PSBUTFNFWFRfVFlQRV9jaGFubmVsX2lkKQorKwkJCXMtPnMzLT50bHNleHRfY2hhbm5lbF9pZF92YWxpZCA9IDE7CisrCisrCQllbHNlIGlmICh0eXBlID09IFRMU0VYVF9UWVBFX2NoYW5uZWxfaWRfbmV3KQorKwkJCXsKKysJCQlzLT5zMy0+dGxzZXh0X2NoYW5uZWxfaWRfdmFsaWQgPSAxOworKwkJCXMtPnMzLT50bHNleHRfY2hhbm5lbF9pZF9uZXcgPSAxOworKwkJCX0KKysKKyAJCWVsc2UgaWYgKHR5cGUgPT0gVExTRVhUX1RZUEVfcmVuZWdvdGlhdGUpCisgCQkJeworIAkJCWlmKCFzc2xfcGFyc2Vfc2VydmVyaGVsbG9fcmVuZWdvdGlhdGVfZXh0KHMsIGRhdGEsIHNpemUsIGFsKSkKK0BAIC0yNzI3LDMgKzI3NzIsNzQgQEAgdGxzMV9oZWFydGJlYXQoU1NMICpzKQorIAlyZXR1cm4gcmV0OworIAl9CisgI2VuZGlmCisrCisrI2lmICFkZWZpbmVkKE9QRU5TU0xfTk9fVExTRVhUKQorKy8qIHRsczFfY2hhbm5lbF9pZF9oYXNoIGNhbGN1bGF0ZXMgdGhlIHNpZ25lZCBkYXRhIGZvciBhIENoYW5uZWwgSUQgb24gdGhlIGdpdmVuCisrICogU1NMIGNvbm5lY3Rpb24gYW5kIHdyaXRlcyBpdCB0byB8bWR8LgorKyAqLworK2ludAorK3RsczFfY2hhbm5lbF9pZF9oYXNoKEVWUF9NRF9DVFggKm1kLCBTU0wgKnMpCisrCXsKKysJRVZQX01EX0NUWCBjdHg7CisrCXVuc2lnbmVkIGNoYXIgdGVtcF9kaWdlc3RbRVZQX01BWF9NRF9TSVpFXTsKKysJdW5zaWduZWQgdGVtcF9kaWdlc3RfbGVuOworKwlpbnQgaTsKKysJc3RhdGljIGNvbnN0IGNoYXIga0NsaWVudElETWFnaWNbXSA9ICJUTFMgQ2hhbm5lbCBJRCBzaWduYXR1cmUiOworKworKwlpZiAocy0+czMtPmhhbmRzaGFrZV9idWZmZXIpCisrCQlpZiAoIXNzbDNfZGlnZXN0X2NhY2hlZF9yZWNvcmRzKHMpKQorKwkJCXJldHVybiAwOworKworKwlFVlBfRGlnZXN0VXBkYXRlKG1kLCBrQ2xpZW50SURNYWdpYywgc2l6ZW9mKGtDbGllbnRJRE1hZ2ljKSk7CisrCisrCWlmIChzLT5oaXQgJiYgcy0+czMtPnRsc2V4dF9jaGFubmVsX2lkX25ldykKKysJCXsKKysJCXN0YXRpYyBjb25zdCBjaGFyIGtSZXN1bXB0aW9uTWFnaWNbXSA9ICJSZXN1bXB0aW9uIjsKKysJCUVWUF9EaWdlc3RVcGRhdGUobWQsIGtSZXN1bXB0aW9uTWFnaWMsCisrCQkJCSBzaXplb2Yoa1Jlc3VtcHRpb25NYWdpYykpOworKwkJaWYgKHMtPnNlc3Npb24tPm9yaWdpbmFsX2hhbmRzaGFrZV9oYXNoX2xlbiA9PSAwKQorKwkJCXJldHVybiAwOworKwkJRVZQX0RpZ2VzdFVwZGF0ZShtZCwgcy0+c2Vzc2lvbi0+b3JpZ2luYWxfaGFuZHNoYWtlX2hhc2gsCisrCQkJCSBzLT5zZXNzaW9uLT5vcmlnaW5hbF9oYW5kc2hha2VfaGFzaF9sZW4pOworKwkJfQorKworKwlFVlBfTURfQ1RYX2luaXQoJmN0eCk7CisrCWZvciAoaSA9IDA7IGkgPCBTU0xfTUFYX0RJR0VTVDsgaSsrKQorKwkJeworKwkJaWYgKHMtPnMzLT5oYW5kc2hha2VfZGdzdFtpXSA9PSBOVUxMKQorKwkJCWNvbnRpbnVlOworKwkJRVZQX01EX0NUWF9jb3B5X2V4KCZjdHgsIHMtPnMzLT5oYW5kc2hha2VfZGdzdFtpXSk7CisrCQlFVlBfRGlnZXN0RmluYWxfZXgoJmN0eCwgdGVtcF9kaWdlc3QsICZ0ZW1wX2RpZ2VzdF9sZW4pOworKwkJRVZQX0RpZ2VzdFVwZGF0ZShtZCwgdGVtcF9kaWdlc3QsIHRlbXBfZGlnZXN0X2xlbik7CisrCQl9CisrCUVWUF9NRF9DVFhfY2xlYW51cCgmY3R4KTsKKysKKysJcmV0dXJuIDE7CisrCX0KKysjZW5kaWYKKysKKysvKiB0bHMxX3JlY29yZF9oYW5kc2hha2VfaGFzaGVzX2Zvcl9jaGFubmVsX2lkIHJlY29yZHMgdGhlIGN1cnJlbnQgaGFuZHNoYWtlCisrICogaGFzaGVzIGluIHxzLT5zZXNzaW9ufCBzbyB0aGF0IENoYW5uZWwgSUQgcmVzdW1wdGlvbnMgY2FuIHNpZ24gdGhhdCBkYXRhLiAqLworK2ludCB0bHMxX3JlY29yZF9oYW5kc2hha2VfaGFzaGVzX2Zvcl9jaGFubmVsX2lkKFNTTCAqcykKKysJeworKwlpbnQgZGlnZXN0X2xlbjsKKysJLyogVGhpcyBmdW5jdGlvbiBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkIGZvciBhIHJlc3VtZWQgc2Vzc2lvbiBiZWNhdXNlCisrCSAqIHRoZSBoYW5kc2hha2UgaGFzaGVzIHRoYXQgd2Ugd2lzaCB0byByZWNvcmQgYXJlIGZvciB0aGUgb3JpZ2luYWwsCisrCSAqIGZ1bGwgaGFuZHNoYWtlLiAqLworKwlpZiAocy0+aGl0KQorKwkJcmV0dXJuIC0xOworKwkvKiBJdCBvbmx5IG1ha2VzIHNlbnNlIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiBpZiBDaGFubmVsIElEcyBoYXZlIGJlZW4KKysJICogbmVnb3RpYXRlZC4gKi8KKysJaWYgKCFzLT5zMy0+dGxzZXh0X2NoYW5uZWxfaWRfbmV3KQorKwkJcmV0dXJuIC0xOworKworKwlkaWdlc3RfbGVuID0gdGxzMV9oYW5kc2hha2VfZGlnZXN0KAorKwkJcywgcy0+c2Vzc2lvbi0+b3JpZ2luYWxfaGFuZHNoYWtlX2hhc2gsCisrCQlzaXplb2Yocy0+c2Vzc2lvbi0+b3JpZ2luYWxfaGFuZHNoYWtlX2hhc2gpKTsKKysJaWYgKGRpZ2VzdF9sZW4gPCAwKQorKwkJcmV0dXJuIC0xOworKworKwlzLT5zZXNzaW9uLT5vcmlnaW5hbF9oYW5kc2hha2VfaGFzaF9sZW4gPSBkaWdlc3RfbGVuOworKworKwlyZXR1cm4gMTsKKysJfQorZGlmZiAtLWdpdCBhL3NzbC90bHMxLmggYi9zc2wvdGxzMS5oCitpbmRleCBjOTkyMDkxLi4xMmYyZjIxIDEwMDY0NAorLS0tIGEvc3NsL3RsczEuaAorKysrIGIvc3NsL3RsczEuaAorQEAgLTI1NCw2ICsyNTQsMTAgQEAgZXh0ZXJuICJDIiB7CisgI2RlZmluZSBUTFNFWFRfVFlQRV9uZXh0X3Byb3RvX25lZwkJMTMxNzIKKyAjZW5kaWYKKyAKKysvKiBUaGlzIGlzIG5vdCBhbiBJQU5BIGRlZmluZWQgZXh0ZW5zaW9uIG51bWJlciAqLworKyNkZWZpbmUgVExTRVhUX1RZUEVfY2hhbm5lbF9pZAkJCTMwMDMxCisrI2RlZmluZSBUTFNFWFRfVFlQRV9jaGFubmVsX2lkX25ldwkJMzAwMzIKKysKKyAvKiBOYW1lVHlwZSB2YWx1ZSBmcm9tIFJGQyAzNTQ2ICovCisgI2RlZmluZSBUTFNFWFRfTkFNRVRZUEVfaG9zdF9uYW1lIDAKKyAvKiBzdGF0dXMgcmVxdWVzdCB2YWx1ZSBmcm9tIFJGQyAzNTQ2ICovCistLSAKKzEuOS4xLjQyMy5nNDU5NmUzYQorCmRpZmYgLS1naXQgYS9wYXRjaGVzL2VuZ19keW5fZGlycy5wYXRjaCBiL3BhdGNoZXMvMDAwNS1lbmdfZHluX2RpcnMucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBhdGNoZXMvZW5nX2R5bl9kaXJzLnBhdGNoCnJlbmFtZSB0byBwYXRjaGVzLzAwMDUtZW5nX2R5bl9kaXJzLnBhdGNoCmRpZmYgLS1naXQgYS9wYXRjaGVzL2ZpeF9jbGFuZ19idWlsZC5wYXRjaCBiL3BhdGNoZXMvMDAwNi1maXhfY2xhbmdfYnVpbGQucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBhdGNoZXMvZml4X2NsYW5nX2J1aWxkLnBhdGNoCnJlbmFtZSB0byBwYXRjaGVzLzAwMDYtZml4X2NsYW5nX2J1aWxkLnBhdGNoCmRpZmYgLS1naXQgYS9wYXRjaGVzL3RsczEyX2RpZ2VzdHMucGF0Y2ggYi9wYXRjaGVzLzAwMDctdGxzMTJfZGlnZXN0cy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcGF0Y2hlcy90bHMxMl9kaWdlc3RzLnBhdGNoCnJlbmFtZSB0byBwYXRjaGVzLzAwMDctdGxzMTJfZGlnZXN0cy5wYXRjaApkaWZmIC0tZ2l0IGEvcGF0Y2hlcy9hbHBuLnBhdGNoIGIvcGF0Y2hlcy8wMDA4LWFscG4ucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBhdGNoZXMvYWxwbi5wYXRjaApyZW5hbWUgdG8gcGF0Y2hlcy8wMDA4LWFscG4ucGF0Y2gKZGlmZiAtLWdpdCBhL3BhdGNoZXMvY2JjX3JlY29yZF9zcGxpdHRpbmcucGF0Y2ggYi9wYXRjaGVzLzAwMDktY2JjX3JlY29yZF9zcGxpdHRpbmcucGF0Y2gKc2ltaWxhcml0eSBpbmRleCA4OSUKcmVuYW1lIGZyb20gcGF0Y2hlcy9jYmNfcmVjb3JkX3NwbGl0dGluZy5wYXRjaApyZW5hbWUgdG8gcGF0Y2hlcy8wMDA5LWNiY19yZWNvcmRfc3BsaXR0aW5nLnBhdGNoCmluZGV4IDM3ZTU4YTEuLjU0MzA0MDIgMTAwNjQ0Ci0tLSBhL3BhdGNoZXMvY2JjX3JlY29yZF9zcGxpdHRpbmcucGF0Y2gKKysrIGIvcGF0Y2hlcy8wMDA5LWNiY19yZWNvcmRfc3BsaXR0aW5nLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA2ZDY1ZmMyZDJiZDZkNmY0YTVkZTM2NGZmMmNmN2VjMmRhOGY1MDM3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBlNjEwMmQyYWM4NGE1NWU0YTUwZDllZGZjMzZlYzg5NGM2MTc0ZmI3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWRhbSBMYW5nbGV5IDxhZ2xAY2hyb21pdW0ub3JnPgogRGF0ZTogVGh1LCAzMSBPY3QgMjAxMyAxMzoyMjo1NCAtMDQwMAogCkBAIC0xNiwxMiArMTYsMTIgQEAKICBhcHBzL3NfY2xpZW50LmMgfCAgMTYgKysrKystLS0KICBzc2wvZDFfcGt0LmMgICAgfCAgNTAgKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIHNzbC9zM19lbmMuYyAgICB8ICAxNyArKysrLS0tLS0KLSBzc2wvczNfcGt0LmMgICAgfCAxMTIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBzc2wvc3NsLmggICAgICAgfCAgMTkgKysrKysrKy0tLQorIHNzbC9zM19wa3QuYyAgICB8IDExMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHNzbC9zc2wuaCAgICAgICB8ICAyMCArKysrKysrLS0tCiAgc3NsL3NzbDMuaCAgICAgIHwgICA0ICstCiAgc3NsL3NzbF9sb2NsLmggIHwgICAyIC0KICBzc2wvdDFfZW5jLmMgICAgfCAgMTAgKystLS0KLSA4IGZpbGVzIGNoYW5nZWQsIDEwOSBpbnNlcnRpb25zKCspLCAxMjEgZGVsZXRpb25zKC0pCisgOCBmaWxlcyBjaGFuZ2VkLCAxMTAgaW5zZXJ0aW9ucygrKSwgMTIyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvYXBwcy9zX2NsaWVudC5jIGIvYXBwcy9zX2NsaWVudC5jCiBpbmRleCBjYjFlZmNkLi4wYzcwNTgwIDEwMDY0NApAQCAtODMsNyArODMsNyBAQAogIAlpZiAoc3RhdGUpIFNTTF9DVFhfc2V0X2luZm9fY2FsbGJhY2soY3R4LGFwcHNfc3NsX2luZm9fY2FsbGJhY2spOwogIAlpZiAoY2lwaGVyICE9IE5VTEwpCiBkaWZmIC0tZ2l0IGEvc3NsL2QxX3BrdC5jIGIvc3NsL2QxX3BrdC5jCi1pbmRleCAwYmY4N2JlLi5jYjBmOGYwIDEwMDY0NAoraW5kZXggNDM4YzA5MS4uMzYzZmM4YyAxMDA2NDQKIC0tLSBhL3NzbC9kMV9wa3QuYwogKysrIGIvc3NsL2QxX3BrdC5jCiBAQCAtMTc5LDYgKzE3OSw4IEBAIHN0YXRpYyBpbnQgZHRsczFfcmVjb3JkX25lZWRzX2J1ZmZlcmluZyhTU0wgKnMsIFNTTDNfUkVDT1JEICpyciwKQEAgLTk1LDcgKzk1LDcgQEAKICAKICAvKiBjb3B5IGJ1ZmZlcmVkIHJlY29yZCBpbnRvIFNTTCBzdHJ1Y3R1cmUgKi8KICBzdGF0aWMgaW50Ci1AQCAtMTQ1NiwxMSArMTQ1OCwxMiBAQCBpbnQgZHRsczFfd3JpdGVfYnl0ZXMoU1NMICpzLCBpbnQgdHlwZSwgY29uc3Qgdm9pZCAqYnVmLCBpbnQgbGVuKQorQEAgLTE0NjQsMTEgKzE0NjYsMTIgQEAgaW50IGR0bHMxX3dyaXRlX2J5dGVzKFNTTCAqcywgaW50IHR5cGUsIGNvbnN0IHZvaWQgKmJ1ZiwgaW50IGxlbikKICAKICAJT1BFTlNTTF9hc3NlcnQobGVuIDw9IFNTTDNfUlRfTUFYX1BMQUlOX0xFTkdUSCk7CiAgCXMtPnJ3c3RhdGU9U1NMX05PVEhJTkc7CkBAIC0xMTAsNyArMTEwLDcgQEAKICAJewogIAl1bnNpZ25lZCBjaGFyICpwLCpwc2VxOwogIAlpbnQgaSxtYWNfc2l6ZSxjbGVhcj0wOwotQEAgLTE0ODcsNyArMTQ5MCw3IEBAIGludCBkb19kdGxzMV93cml0ZShTU0wgKnMsIGludCB0eXBlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpidWYsIHVuc2lnbmVkIGludCBsZW4sCitAQCAtMTQ5NSw3ICsxNDk4LDcgQEAgaW50IGRvX2R0bHMxX3dyaXRlKFNTTCAqcywgaW50IHR5cGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZiwgdW5zaWduZWQgaW50IGxlbiwKICAJCS8qIGlmIGl0IHdlbnQsIGZhbGwgdGhyb3VnaCBhbmQgc2VuZCBtb3JlIHN0dWZmICovCiAgCQl9CiAgCkBAIC0xMTksNyArMTE5LDcgQEAKICAJCXJldHVybiAwOwogIAogIAl3cj0gJihzLT5zMy0+d3JlYyk7Ci1AQCAtMTUwOCwzNyArMTUxMSw2IEBAIGludCBkb19kdGxzMV93cml0ZShTU0wgKnMsIGludCB0eXBlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpidWYsIHVuc2lnbmVkIGludCBsZW4sCitAQCAtMTUxNiwzNyArMTUxOSw2IEBAIGludCBkb19kdGxzMV93cml0ZShTU0wgKnMsIGludCB0eXBlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpidWYsIHVuc2lnbmVkIGludCBsZW4sCiAgCQkJZ290byBlcnI7CiAgCQl9CiAgCkBAIC0xNTcsNyArMTU3LDcgQEAKICAJcCA9IHdiLT5idWYgKyBwcmVmaXhfbGVuOwogIAogIAkvKiB3cml0ZSB0aGUgaGVhZGVyICovCi1AQCAtMTY0NCwxNCArMTYxNiw2IEBAIGludCBkb19kdGxzMV93cml0ZShTU0wgKnMsIGludCB0eXBlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpidWYsIHVuc2lnbmVkIGludCBsZW4sCitAQCAtMTY1MiwxNCArMTYyNCw2IEBAIGludCBkb19kdGxzMV93cml0ZShTU0wgKnMsIGludCB0eXBlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpidWYsIHVuc2lnbmVkIGludCBsZW4sCiAgCiAgCXNzbDNfcmVjb3JkX3NlcXVlbmNlX3VwZGF0ZSgmKHMtPnMzLT53cml0ZV9zZXF1ZW5jZVswXSkpOwogIApAQCAtMTcyLDcgKzE3Miw3IEBACiAgCS8qIG5vdyBsZXQncyBzZXQgdXAgd2IgKi8KICAJd2ItPmxlZnQgPSBwcmVmaXhfbGVuICsgd3ItPmxlbmd0aDsKICAJd2ItPm9mZnNldCA9IDA7Ci1AQCAtMTc0OCw3ICsxNzEyLDcgQEAgaW50IGR0bHMxX2Rpc3BhdGNoX2FsZXJ0KFNTTCAqcykKK0BAIC0xNzU2LDcgKzE3MjAsNyBAQCBpbnQgZHRsczFfZGlzcGF0Y2hfYWxlcnQoU1NMICpzKQogIAkJfQogICNlbmRpZgogIApAQCAtMjIyLDEwICsyMjIsMTAgQEAKICAJU1NMZXJyKFNTTF9GX1NTTDNfU0VUVVBfS0VZX0JMT0NLLEVSUl9SX01BTExPQ19GQUlMVVJFKTsKICAJcmV0dXJuKDApOwogZGlmZiAtLWdpdCBhL3NzbC9zM19wa3QuYyBiL3NzbC9zM19wa3QuYwotaW5kZXggMDRiNDc0ZC4uZDY5MDQ5MyAxMDA2NDQKK2luZGV4IDcwNmVmMWYuLjk1N2Q3YzYgMTAwNjQ0CiAtLS0gYS9zc2wvczNfcGt0LmMKICsrKyBiL3NzbC9zM19wa3QuYwotQEAgLTExOCw3ICsxMTgsNyBAQAorQEAgLTExOSw3ICsxMTksNyBAQAogICNpbmNsdWRlIDxvcGVuc3NsL3JhbmQuaD4KICAKICBzdGF0aWMgaW50IGRvX3NzbDNfd3JpdGUoU1NMICpzLCBpbnQgdHlwZSwgY29uc3QgdW5zaWduZWQgY2hhciAqYnVmLApAQCAtMjM0LDcgKzIzNCw3IEBACiAgc3RhdGljIGludCBzc2wzX2dldF9yZWNvcmQoU1NMICpzKTsKICAKICBpbnQgc3NsM19yZWFkX24oU1NMICpzLCBpbnQgbiwgaW50IG1heCwgaW50IGV4dGVuZCkKLUBAIC02MTgsMTIgKzYxOCwzNCBAQCBpbnQgc3NsM193cml0ZV9ieXRlcyhTU0wgKnMsIGludCB0eXBlLCBjb25zdCB2b2lkICpidWZfLCBpbnQgbGVuKQorQEAgLTYzNiwxNSArNjM2LDM2IEBAIGludCBzc2wzX3dyaXRlX2J5dGVzKFNTTCAqcywgaW50IHR5cGUsIGNvbnN0IHZvaWQgKmJ1Zl8sIGludCBsZW4pCiAgCW49KGxlbi10b3QpOwogIAlmb3IgKDs7KQogIAkJewpAQCAtMjUzLDkgKzI1Myw2IEBACiArCQkgICAgIXMtPnMzLT5yZWNvcmRfc3BsaXRfZG9uZSkKICsJCQl7CiArCQkJZnJhZ21lbnQgPSAxOwotKwkJCS8qIFRoZSBmaXJzdCBieXRlIHdpbGwgYmUgaW4gaXRzIG93biByZWNvcmQsIHNvIHdlCi0rCQkJICogY2FuIHdyaXRlIGFuIGV4dHJhIGJ5dGUuICovCi0rCQkJbWF4Kys7CiArCQkJLyogcmVjb3JkX3NwbGl0X2RvbmUgcmVjb3JkcyB0aGF0IHRoZSBzcGxpdHRpbmcgaGFzCiArCQkJICogYmVlbiBkb25lIGluIGNhc2Ugd2UgaGl0IGFuIFNTTF9XQU5UX1dSSVRFIGNvbmRpdGlvbi4KICsJCQkgKiBJbiB0aGF0IGNhc2UsIHdlIGRvbid0IG5lZWQgdG8gZG8gdGhlIHNwbGl0IGFnYWluLiAqLwpAQCAtMjcyLDcgKzI2OSwxMiBAQAogIAkJaWYgKGkgPD0gMCkKICAJCQl7CiAgCQkJcy0+czMtPndudW09dG90OwotQEAgLTYzNCwxMCArNjU2LDEwIEBAIGludCBzc2wzX3dyaXRlX2J5dGVzKFNTTCAqcywgaW50IHR5cGUsIGNvbnN0IHZvaWQgKmJ1Zl8sIGludCBsZW4pCisrCQkJLyogVHJ5IHRvIHdyaXRlIHRoZSBmcmFnbWVudCBuZXh0IHRpbWUuICovCisrCQkJcy0+czMtPnJlY29yZF9zcGxpdF9kb25lID0gMDsKKyAJCQlyZXR1cm4gaTsKKyAJCQl9CisgCitAQCAtNjUyLDEwICs2NzMsMTAgQEAgaW50IHNzbDNfd3JpdGVfYnl0ZXMoU1NMICpzLCBpbnQgdHlwZSwgY29uc3Qgdm9pZCAqYnVmXywgaW50IGxlbikKICAJCQkodHlwZSA9PSBTU0wzX1JUX0FQUExJQ0FUSU9OX0RBVEEgJiYKICAJCQkgKHMtPm1vZGUgJiBTU0xfTU9ERV9FTkFCTEVfUEFSVElBTF9XUklURSkpKQogIAkJCXsKQEAgLTI4Nyw3ICsyODksNyBAQAogIAkJCXJldHVybiB0b3QraTsKICAJCQl9CiAgCi1AQCAtNjQ2LDExICs2NjgsMTYgQEAgaW50IHNzbDNfd3JpdGVfYnl0ZXMoU1NMICpzLCBpbnQgdHlwZSwgY29uc3Qgdm9pZCAqYnVmXywgaW50IGxlbikKK0BAIC02NjQsMTEgKzY4NSwxNiBAQCBpbnQgc3NsM193cml0ZV9ieXRlcyhTU0wgKnMsIGludCB0eXBlLCBjb25zdCB2b2lkICpidWZfLCBpbnQgbGVuKQogIAkJfQogIAl9CiAgCkBAIC0zMDYsMTYgKzMwOCwyMSBAQAogIAlpbnQgcHJlZml4X2xlbj0wOwogIAlpbnQgZWl2bGVuOwogIAlsb25nIGFsaWduPTA7Ci1AQCAtNjc2LDcgKzcwMyw3IEBAIHN0YXRpYyBpbnQgZG9fc3NsM193cml0ZShTU0wgKnMsIGludCB0eXBlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpidWYsCitAQCAtNjkxLDExICs3MTcsMTEgQEAgc3RhdGljIGludCBkb19zc2wzX3dyaXRlKFNTTCAqcywgaW50IHR5cGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZiwKICAJCS8qIGlmIGl0IHdlbnQsIGZhbGwgdGhyb3VnaCBhbmQgc2VuZCBtb3JlIHN0dWZmICovCiAgCQl9CiAgCistIAlpZiAod2ItPmJ1ZiA9PSBOVUxMKQorKwlpZiAod2ItPmJ1ZiA9PSBOVUxMKQorIAkJaWYgKCFzc2wzX3NldHVwX3dyaXRlX2J1ZmZlcihzKSkKKyAJCQlyZXR1cm4gLTE7CisgCiAtCWlmIChsZW4gPT0gMCAmJiAhY3JlYXRlX2VtcHR5X2ZyYWdtZW50KQogKwlpZiAobGVuID09IDApCiAgCQlyZXR1cm4gMDsKICAKICAJd3I9ICYocy0+czMtPndyZWMpOwotQEAgLTY4NiwxMSArNzEzLDYgQEAgc3RhdGljIGludCBkb19zc2wzX3dyaXRlKFNTTCAqcywgaW50IHR5cGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZiwKK0BAIC03MDUsMTEgKzczMSw2IEBAIHN0YXRpYyBpbnQgZG9fc3NsM193cml0ZShTU0wgKnMsIGludCB0eXBlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpidWYsCiAgCQkocy0+ZW5jX3dyaXRlX2N0eCA9PSBOVUxMKSB8fAogIAkJKEVWUF9NRF9DVFhfbWQocy0+d3JpdGVfaGFzaCkgPT0gTlVMTCkpCiAgCQl7CkBAIC0zMjcsNyArMzM0LDcgQEAKICAJCW1hY19zaXplPTA7CiAgCQl9CiAgCWVsc2UKLUBAIC03MDAsNDIgKzcyMiwzMyBAQCBzdGF0aWMgaW50IGRvX3NzbDNfd3JpdGUoU1NMICpzLCBpbnQgdHlwZSwgY29uc3QgdW5zaWduZWQgY2hhciAqYnVmLAorQEAgLTcxOSw0MiArNzQwLDMzIEBAIHN0YXRpYyBpbnQgZG9fc3NsM193cml0ZShTU0wgKnMsIGludCB0eXBlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpidWYsCiAgCQkJZ290byBlcnI7CiAgCQl9CiAgCkBAIC0zODcsNyArMzk0LDcgQEAKICAJCWFsaWduID0gKC1hbGlnbikmKFNTTDNfQUxJR05fUEFZTE9BRC0xKTsKICAjZW5kaWYKICAJCXAgPSB3Yi0+YnVmICsgYWxpZ247Ci1AQCAtNzcyLDcgKzc4NSw3IEBAIHN0YXRpYyBpbnQgZG9fc3NsM193cml0ZShTU0wgKnMsIGludCB0eXBlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpidWYsCitAQCAtNzkxLDcgKzgwMyw3IEBAIHN0YXRpYyBpbnQgZG9fc3NsM193cml0ZShTU0wgKnMsIGludCB0eXBlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpidWYsCiAgCQkqKHArKyk9cy0+dmVyc2lvbiYweGZmOwogIAogIAkvKiBmaWVsZCB3aGVyZSB3ZSBhcmUgdG8gd3JpdGUgb3V0IHBhY2tldCBsZW5ndGggKi8KQEAgLTM5Niw3ICs0MDMsNyBAQAogIAlwKz0yOwogIAkvKiBFeHBsaWNpdCBJViBsZW5ndGgsIGJsb2NrIGNpcGhlcnMgYW5kIFRMUyB2ZXJzaW9uIDEuMSBvciBsYXRlciAqLwogIAlpZiAocy0+ZW5jX3dyaXRlX2N0eCAmJiBzLT52ZXJzaW9uID49IFRMUzFfMV9WRVJTSU9OKQotQEAgLTgwMCw4ICs4MTMsOCBAQCBzdGF0aWMgaW50IGRvX3NzbDNfd3JpdGUoU1NMICpzLCBpbnQgdHlwZSwgY29uc3QgdW5zaWduZWQgY2hhciAqYnVmLAorQEAgLTgxOSw4ICs4MzEsOCBAQCBzdGF0aWMgaW50IGRvX3NzbDNfd3JpdGUoU1NMICpzLCBpbnQgdHlwZSwgY29uc3QgdW5zaWduZWQgY2hhciAqYnVmLAogIAogIAkvKiBsZXRzIHNldHVwIHRoZSByZWNvcmQgc3R1ZmYuICovCiAgCXdyLT5kYXRhPXAgKyBlaXZsZW47CkBAIC00MDcsNyArNDE0LDcgQEAKICAKICAJLyogd2Ugbm93ICdyZWFkJyBmcm9tIHdyLT5pbnB1dCwgd3ItPmxlbmd0aCBieXRlcyBpbnRvCiAgCSAqIHdyLT5kYXRhICovCi1AQCAtODU0LDExICs4NjcsMTAgQEAgc3RhdGljIGludCBkb19zc2wzX3dyaXRlKFNTTCAqcywgaW50IHR5cGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZiwKK0BAIC04NzMsMTEgKzg4NSwxMCBAQCBzdGF0aWMgaW50IGRvX3NzbDNfd3JpdGUoU1NMICpzLCBpbnQgdHlwZSwgY29uc3QgdW5zaWduZWQgY2hhciAqYnVmLAogIAl3ci0+dHlwZT10eXBlOyAvKiBub3QgbmVlZGVkIGJ1dCBoZWxwcyBmb3IgZGVidWdnaW5nICovCiAgCXdyLT5sZW5ndGgrPVNTTDNfUlRfSEVBREVSX0xFTkdUSDsKICAKQEAgLTQyMiw3ICs0MjksNyBAQAogIAkJcmV0dXJuIHdyLT5sZW5ndGg7CiAgCQl9CiAgCi1AQCAtMTUxNCw3ICsxNTI2LDcgQEAgaW50IHNzbDNfZGlzcGF0Y2hfYWxlcnQoU1NMICpzKQorQEAgLTE1NDgsNyArMTU1OSw3IEBAIGludCBzc2wzX2Rpc3BhdGNoX2FsZXJ0KFNTTCAqcykKICAJdm9pZCAoKmNiKShjb25zdCBTU0wgKnNzbCxpbnQgdHlwZSxpbnQgdmFsKT1OVUxMOwogIAogIAlzLT5zMy0+YWxlcnRfZGlzcGF0Y2g9MDsKQEAgLTQzMiwxMiArNDM5LDEyIEBACiAgCQl7CiAgCQlzLT5zMy0+YWxlcnRfZGlzcGF0Y2g9MTsKIGRpZmYgLS1naXQgYS9zc2wvc3NsLmggYi9zc2wvc3NsLmgKLWluZGV4IGIyODliYzIuLjg1NjQ0ODQgMTAwNjQ0CitpbmRleCBlZjg1NDI4Li5jZTY1NjY0IDEwMDY0NAogLS0tIGEvc3NsL3NzbC5oCiArKysgYi9zc2wvc3NsLmgKLUBAIC01ODAsMTEgKzU4MCwxNSBAQCBzdHJ1Y3Qgc3NsX3Nlc3Npb25fc3QKLSAjZGVmaW5lIFNTTF9PUF9UTFNfRDVfQlVHCQkJCTB4MDAwMDAxMDBMCi0gI2RlZmluZSBTU0xfT1BfVExTX0JMT0NLX1BBRERJTkdfQlVHCQkJMHgwMDAwMDIwMEwKK0BAIC01NzgsMTEgKzU3OCwxNSBAQCBzdHJ1Y3Qgc3NsX3Nlc3Npb25fc3QKKyAvKiBSZWZlcnMgdG8gYW5jaWVudCBTU0xSRUYgYW5kIFNTTHYyLCByZXRhaW5lZCBmb3IgY29tcGF0aWJpbGl0eSAqLworICNkZWZpbmUgU1NMX09QX1NTTFJFRjJfUkVVU0VfQ0VSVF9UWVBFX0JVRwkJMHgwCiAgCiAtLyogRGlzYWJsZSBTU0wgMy4wL1RMUyAxLjAgQ0JDIHZ1bG5lcmFiaWxpdHkgd29ya2Fyb3VuZCB0aGF0IHdhcyBhZGRlZAogLSAqIGluIE9wZW5TU0wgMC45LjZkLiAgVXN1YWxseSAoZGVwZW5kaW5nIG9uIHRoZSBhcHBsaWNhdGlvbiBwcm90b2NvbCkKQEAgLTQ1NiwyMyArNDYzLDI0IEBACiAgI2RlZmluZSBTU0xfT1BfRE9OVF9JTlNFUlRfRU1QVFlfRlJBR01FTlRTICAgICAgICAgICAgICAweDAwMDAwODAwTCAvKiBhZGRlZCBpbiAwLjkuNmUgKi8KICAKICAvKiBTU0xfT1BfQUxMOiB2YXJpb3VzIGJ1ZyB3b3JrYXJvdW5kcyB0aGF0IHNob3VsZCBiZSByYXRoZXIgaGFybWxlc3MuCi1AQCAtNjY4LDYgKzY3MiwxMSBAQCBzdHJ1Y3Qgc3NsX3Nlc3Npb25fc3QKLSAgKiBhbmQgRmluaXNoZWQuICBUaGlzIG1vZGUgZW5hYmxlcyBmdWxsLWhhbmRzaGFrZXMgdG8gJ2NvbXBsZXRlJyBpbgorQEAgLTY3NSw2ICs2NzksMTIgQEAgc3RydWN0IHNzbF9zZXNzaW9uX3N0CiAgICogb25lIFJUVC4gKi8KICAjZGVmaW5lIFNTTF9NT0RFX0hBTkRTSEFLRV9DVVRUSFJPVUdIIDB4MDAwMDAwODBMCisgCiArLyogV2hlbiBzZXQsIFRMUyAxLjAgYW5kIFNTTHYzLCBtdWx0aS1ieXRlLCBDQkMgcmVjb3JkcyB3aWxsIGJlIHNwbGl0IGluIHR3bzoKICsgKiB0aGUgZmlyc3QgcmVjb3JkIHdpbGwgY29udGFpbiBhIHNpbmdsZSBieXRlIGFuZCB0aGUgc2Vjb25kIHdpbGwgY29udGFpbiB0aGUKICsgKiByZXN0IG9mIHRoZSBieXRlcy4gVGhpcyBlZmZlY3RpdmVseSByYW5kb21pc2VzIHRoZSBJViBhbmQgcHJldmVudHMgQkVBU1QKICsgKiBhdHRhY2tzLiAqLwogKyNkZWZpbmUgU1NMX01PREVfQ0JDX1JFQ09SRF9TUExJVFRJTkcgMHgwMDAwMDEwMEwKLSAKKysKICAvKiBOb3RlOiBTU0xbX0NUWF1fc2V0X3tvcHRpb25zLG1vZGV9IHVzZSB8PSBvcCBvbiB0aGUgcHJldmlvdXMgdmFsdWUsCiAgICogdGhleSBjYW5ub3QgYmUgdXNlZCB0byBjbGVhciBiaXRzLiAqLworIAogZGlmZiAtLWdpdCBhL3NzbC9zc2wzLmggYi9zc2wvc3NsMy5oCi1pbmRleCA2YTVjZGJlLi42NWY1OGE3IDEwMDY0NAoraW5kZXggMTZjMzg5ZC4uOGUzZTQ0OSAxMDA2NDQKIC0tLSBhL3NzbC9zc2wzLmgKICsrKyBiL3NzbC9zc2wzLmgKLUBAIC00MTgsOCArNDE4LDggQEAgdHlwZWRlZiBzdHJ1Y3Qgc3NsM19zdGF0ZV9zdAorQEAgLTQxOSw4ICs0MTksOCBAQCB0eXBlZGVmIHN0cnVjdCBzc2wzX3N0YXRlX3N0CiAgCXVuc2lnbmVkIGNoYXIgY2xpZW50X3JhbmRvbVtTU0wzX1JBTkRPTV9TSVpFXTsKICAKICAJLyogZmxhZ3MgZm9yIGNvdW50ZXJtZWFzdXJlIGFnYWluc3Qga25vd24tSVYgd2Vha25lc3MgKi8KQEAgLTQ4NCwxMCArNDkyLDEwIEBACiAgCS8qIFRoZSB2YWx1ZSBvZiAnZXh0cmEnIHdoZW4gdGhlIGJ1ZmZlcnMgd2VyZSBpbml0aWFsaXplZCAqLwogIAlpbnQgaW5pdF9leHRyYTsKIGRpZmYgLS1naXQgYS9zc2wvc3NsX2xvY2wuaCBiL3NzbC9zc2xfbG9jbC5oCi1pbmRleCBiODNkOGNkLi5kYWMzM2UyIDEwMDY0NAoraW5kZXggMTBiYWFlZS4uNmQ0YmMxNCAxMDA2NDQKIC0tLSBhL3NzbC9zc2xfbG9jbC5oCiArKysgYi9zc2wvc3NsX2xvY2wuaAotQEAgLTEwOTEsOCArMTA5MSw2IEBAIGludCBkdGxzMV9zaHV0ZG93bihTU0wgKnMpOworQEAgLTEwOTMsOCArMTA5Myw2IEBAIGludCBkdGxzMV9zaHV0ZG93bihTU0wgKnMpOwogIAogIGxvbmcgZHRsczFfZ2V0X21lc3NhZ2UoU1NMICpzLCBpbnQgc3QxLCBpbnQgc3RuLCBpbnQgbXQsIGxvbmcgbWF4LCBpbnQgKm9rKTsKICBpbnQgZHRsczFfZ2V0X3JlY29yZChTU0wgKnMpOwpAQCAtNDk3LDEwICs1MDUsMTAgQEAKICBpbnQgZHRsczFfZW5jKFNTTCAqcywgaW50IHNuZCk7CiAgCiBkaWZmIC0tZ2l0IGEvc3NsL3QxX2VuYy5jIGIvc3NsL3QxX2VuYy5jCi1pbmRleCAxNTgwMGFmLi5iMjY4NmY0IDEwMDY0NAoraW5kZXggOTk2M2E4MC4uNGNhMTU0OSAxMDA2NDQKIC0tLSBhL3NzbC90MV9lbmMuYwogKysrIGIvc3NsL3QxX2VuYy5jCi1AQCAtNzYyLDIyICs3NjIsMjIgQEAgcHJpbnRmKCJcbmtleSBibG9ja1xuIik7CitAQCAtNzc0LDIyICs3NzQsMjIgQEAgcHJpbnRmKCJcbmtleSBibG9ja1xuIik7CiAgeyBpbnQgejsgZm9yICh6PTA7IHo8bnVtOyB6KyspIHByaW50ZigiJTAyWCVjIixwMVt6XSwoKHorMSklMTYpPycgJzonXG4nKTsgfQogICNlbmRpZgogIApAQCAtNTI5LDUgKzUzNyw1IEBACiAgCQkJfQogIAkJfQogLS0gCi0xLjguNC4xCisyLjAuMC41MjYuZzUzMTgzMzYKIApkaWZmIC0tZ2l0IGEvcGF0Y2hlcy8wMDEwLWRzYV9ub25jZS5wYXRjaCBiL3BhdGNoZXMvMDAxMC1kc2Ffbm9uY2UucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY4ODgxYwotLS0gL2Rldi9udWxsCisrKyBiL3BhdGNoZXMvMDAxMC1kc2Ffbm9uY2UucGF0Y2gKQEAgLTAsMCArMSw1MDIgQEAKK0Zyb20gOWJlMjk4NGJmYmZmOWE4M2U3YjM4ZjQ3YWM4N2M2NzdlOWE5YTBiOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFkYW0gTGFuZ2xleSA8YWdsQGNocm9taXVtLm9yZz4KK0RhdGU6IFRodSwgMjQgSmFuIDIwMTMgMTY6Mjc6MjggLTA1MDAKK1N1YmplY3Q6IGRzYV9ub25jZQorCitBZGRzIHRoZSBvcHRpb24gdG8gY2FsY3VsYXRlIChFQylEU0Egbm9uY2VzIGJ5IGhhc2hpbmcgdGhlIG1lc3NhZ2UgYW5kCitwcml2YXRlIGtleSBhbG9uZyB3aXRoIGVudHJvcHkuCistLS0KKyBjcnlwdG8vYm4vYm4uaCAgICAgICAgICB8ICA2ICsrKysrCisgY3J5cHRvL2JuL2JuX2Vyci5jICAgICAgfCAgMiArKworIGNyeXB0by9ibi9ibl9yYW5kLmMgICAgIHwgNzAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIGNyeXB0by9kc2EvZHNhLmggICAgICAgIHwgMTAgKysrKystLQorIGNyeXB0by9kc2EvZHNhX2Vyci5jICAgIHwgIDEgKworIGNyeXB0by9kc2EvZHNhX29zc2wuYyAgIHwgMjggKysrKysrKysrKysrKysrKy0tLS0KKyBjcnlwdG8vZHNhL2RzYV9zaWduLmMgICB8ICA5ICsrKysrKy0KKyBjcnlwdG8vZWMvZWMuaCAgICAgICAgICB8IDExICsrKysrKysrCisgY3J5cHRvL2VjL2VjX2tleS5jICAgICAgfCAxMiArKysrKysrKysKKyBjcnlwdG8vZWMvZWNfbGNsLmggICAgICB8ICAxICsKKyBjcnlwdG8vZWNkc2EvZWNkc2EuaCAgICB8ICAxICsKKyBjcnlwdG8vZWNkc2EvZWNzX2Vyci5jICB8ICAxICsKKyBjcnlwdG8vZWNkc2EvZWNzX2xvY2wuaCB8ICA1ICsrLS0KKyBjcnlwdG8vZWNkc2EvZWNzX29zc2wuYyB8IDM4ICsrKysrKysrKysrKysrKysrKysrLS0tLS0tLQorIGNyeXB0by9lY2RzYS9lY3Nfc2lnbi5jIHwgMTAgKysrKysrLQorIDE1IGZpbGVzIGNoYW5nZWQsIDE4NSBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NyeXB0by9ibi9ibi5oIGIvY3J5cHRvL2JuL2JuLmgKK2luZGV4IGYzNDI0OGUuLjkyODFjZTUgMTAwNjQ0CistLS0gYS9jcnlwdG8vYm4vYm4uaAorKysrIGIvY3J5cHRvL2JuL2JuLmgKK0BAIC02OTIsNiArNjkyLDEwIEBAIGNvbnN0IEJJR05VTSAqQk5fZ2V0MF9uaXN0X3ByaW1lXzI1Nih2b2lkKTsKKyBjb25zdCBCSUdOVU0gKkJOX2dldDBfbmlzdF9wcmltZV8zODQodm9pZCk7CisgY29uc3QgQklHTlVNICpCTl9nZXQwX25pc3RfcHJpbWVfNTIxKHZvaWQpOworIAorK2ludCBCTl9nZW5lcmF0ZV9kc2Ffbm9uY2UoQklHTlVNICpvdXQsIGNvbnN0IEJJR05VTSAqcmFuZ2UsIGNvbnN0IEJJR05VTSAqcHJpdiwKKysJCQkgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKm1lc3NhZ2UsIHNpemVfdCBtZXNzYWdlX2xlbiwKKysJCQkgIEJOX0NUWCAqY3R4KTsKKysKKyAvKiBsaWJyYXJ5IGludGVybmFsIGZ1bmN0aW9ucyAqLworIAorICNkZWZpbmUgYm5fZXhwYW5kKGEsYml0cykgKCgoKCgoYml0cytCTl9CSVRTMi0xKSkvQk5fQklUUzIpKSA8PSAoYSktPmRtYXgpP1wKK0BAIC04NDIsNiArODQ2LDcgQEAgdm9pZCBFUlJfbG9hZF9CTl9zdHJpbmdzKHZvaWQpOworICNkZWZpbmUgQk5fRl9CTl9FWFAJCQkJCSAxMjMKKyAjZGVmaW5lIEJOX0ZfQk5fRVhQQU5EMgkJCQkJIDEwOAorICNkZWZpbmUgQk5fRl9CTl9FWFBBTkRfSU5URVJOQUwJCQkJIDEyMAorKyNkZWZpbmUgQk5fRl9CTl9HRU5FUkFURV9EU0FfTk9OQ0UJCQkgMTQwCisgI2RlZmluZSBCTl9GX0JOX0dGMk1fTU9ECQkJCSAxMzEKKyAjZGVmaW5lIEJOX0ZfQk5fR0YyTV9NT0RfRVhQCQkJCSAxMzIKKyAjZGVmaW5lIEJOX0ZfQk5fR0YyTV9NT0RfTVVMCQkJCSAxMzMKK0BAIC04ODEsNiArODg2LDcgQEAgdm9pZCBFUlJfbG9hZF9CTl9zdHJpbmdzKHZvaWQpOworICNkZWZpbmUgQk5fUl9OT1RfSU5JVElBTElaRUQJCQkJIDEwNworICNkZWZpbmUgQk5fUl9OT19JTlZFUlNFCQkJCQkgMTA4CisgI2RlZmluZSBCTl9SX05PX1NPTFVUSU9OCQkJCSAxMTYKKysjZGVmaW5lIEJOX1JfUFJJVkFURV9LRVlfVE9PX0xBUkdFCQkJIDExNworICNkZWZpbmUgQk5fUl9QX0lTX05PVF9QUklNRQkJCQkgMTEyCisgI2RlZmluZSBCTl9SX1RPT19NQU5ZX0lURVJBVElPTlMJCQkgMTEzCisgI2RlZmluZSBCTl9SX1RPT19NQU5ZX1RFTVBPUkFSWV9WQVJJQUJMRVMJCSAxMDkKK2RpZmYgLS1naXQgYS9jcnlwdG8vYm4vYm5fZXJyLmMgYi9jcnlwdG8vYm4vYm5fZXJyLmMKK2luZGV4IGNmZTJlYjkuLmY3MjJiNTIgMTAwNjQ0CistLS0gYS9jcnlwdG8vYm4vYm5fZXJyLmMKKysrKyBiL2NyeXB0by9ibi9ibl9lcnIuYworQEAgLTg3LDYgKzg3LDcgQEAgc3RhdGljIEVSUl9TVFJJTkdfREFUQSBCTl9zdHJfZnVuY3RzW109Cisge0VSUl9GVU5DKEJOX0ZfQk5fRVhQKSwJIkJOX2V4cCJ9LAorIHtFUlJfRlVOQyhCTl9GX0JOX0VYUEFORDIpLAkiYm5fZXhwYW5kMiJ9LAorIHtFUlJfRlVOQyhCTl9GX0JOX0VYUEFORF9JTlRFUk5BTCksCSJCTl9FWFBBTkRfSU5URVJOQUwifSwKKyt7RVJSX0ZVTkMoQk5fRl9CTl9HRU5FUkFURV9EU0FfTk9OQ0UpLAkiQk5fZ2VuZXJhdGVfZHNhX25vbmNlIn0sCisge0VSUl9GVU5DKEJOX0ZfQk5fR0YyTV9NT0QpLAkiQk5fR0YybV9tb2QifSwKKyB7RVJSX0ZVTkMoQk5fRl9CTl9HRjJNX01PRF9FWFApLAkiQk5fR0YybV9tb2RfZXhwIn0sCisge0VSUl9GVU5DKEJOX0ZfQk5fR0YyTV9NT0RfTVVMKSwJIkJOX0dGMm1fbW9kX211bCJ9LAorQEAgLTEyOSw2ICsxMzAsNyBAQCBzdGF0aWMgRVJSX1NUUklOR19EQVRBIEJOX3N0cl9yZWFzb25zW109Cisge0VSUl9SRUFTT04oQk5fUl9OT1RfSU5JVElBTElaRUQpICAgICAgICAsIm5vdCBpbml0aWFsaXplZCJ9LAorIHtFUlJfUkVBU09OKEJOX1JfTk9fSU5WRVJTRSkgICAgICAgICAgICAgLCJubyBpbnZlcnNlIn0sCisge0VSUl9SRUFTT04oQk5fUl9OT19TT0xVVElPTikgICAgICAgICAgICAsIm5vIHNvbHV0aW9uIn0sCisre0VSUl9SRUFTT04oQk5fUl9QUklWQVRFX0tFWV9UT09fTEFSR0UpICAsInByaXZhdGUga2V5IHRvbyBsYXJnZSJ9LAorIHtFUlJfUkVBU09OKEJOX1JfUF9JU19OT1RfUFJJTUUpICAgICAgICAgLCJwIGlzIG5vdCBwcmltZSJ9LAorIHtFUlJfUkVBU09OKEJOX1JfVE9PX01BTllfSVRFUkFUSU9OUykgICAgLCJ0b28gbWFueSBpdGVyYXRpb25zIn0sCisge0VSUl9SRUFTT04oQk5fUl9UT09fTUFOWV9URU1QT1JBUllfVkFSSUFCTEVTKSwidG9vIG1hbnkgdGVtcG9yYXJ5IHZhcmlhYmxlcyJ9LAorZGlmZiAtLWdpdCBhL2NyeXB0by9ibi9ibl9yYW5kLmMgYi9jcnlwdG8vYm4vYm5fcmFuZC5jCitpbmRleCBiMzc2YzI4Li41NTY3NmYwIDEwMDY0NAorLS0tIGEvY3J5cHRvL2JuL2JuX3JhbmQuYworKysrIGIvY3J5cHRvL2JuL2JuX3JhbmQuYworQEAgLTExNCw2ICsxMTQsNyBAQAorICNpbmNsdWRlICJjcnlwdGxpYi5oIgorICNpbmNsdWRlICJibl9sY2wuaCIKKyAjaW5jbHVkZSA8b3BlbnNzbC9yYW5kLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvc2hhLmg+CisgCisgc3RhdGljIGludCBibnJhbmQoaW50IHBzZXVkb3JhbmQsIEJJR05VTSAqcm5kLCBpbnQgYml0cywgaW50IHRvcCwgaW50IGJvdHRvbSkKKyAJeworQEAgLTMwMywzICszMDQsNzIgQEAgaW50CUJOX3BzZXVkb19yYW5kX3JhbmdlKEJJR05VTSAqciwgY29uc3QgQklHTlVNICpyYW5nZSkKKyAJeworIAlyZXR1cm4gYm5fcmFuZF9yYW5nZSgxLCByLCByYW5nZSk7CisgCX0KKysKKysjaWZuZGVmIE9QRU5TU0xfTk9fU0hBNTEyCisrLyogQk5fZ2VuZXJhdGVfZHNhX25vbmNlIGdlbmVyYXRlcyBhIHJhbmRvbSBudW1iZXIgMCA8PSBvdXQgPCByYW5nZS4gVW5saWtlCisrICogQk5fcmFuZF9yYW5nZSwgaXQgYWxzbyBpbmNsdWRlcyB0aGUgY29udGVudHMgb2YgfHByaXZ8IGFuZCB8bWVzc2FnZXwgaW4gdGhlCisrICogZ2VuZXJhdGlvbiBzbyB0aGF0IGFuIFJORyBmYWlsdXJlIGlzbid0IGZhdGFsIGFzIGxvbmcgYXMgfHByaXZ8IHJlbWFpbnMKKysgKiBzZWNyZXQuIFRoaXMgaXMgaW50ZW5kZWQgZm9yIHVzZSBpbiBEU0EgYW5kIEVDRFNBIHdoZXJlIGFuIFJORyB3ZWFrbmVzcworKyAqIGxlYWRzIGRpcmVjdGx5IHRvIHByaXZhdGUga2V5IGV4cG9zdXJlIHVubGVzcyB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQuICovCisraW50IEJOX2dlbmVyYXRlX2RzYV9ub25jZShCSUdOVU0gKm91dCwgY29uc3QgQklHTlVNICpyYW5nZSwgY29uc3QgQklHTlVNKiBwcml2LAorKwkJCSAgY29uc3QgdW5zaWduZWQgY2hhciAqbWVzc2FnZSwgc2l6ZV90IG1lc3NhZ2VfbGVuLAorKwkJCSAgQk5fQ1RYICpjdHgpCisrCXsKKysJU0hBNTEyX0NUWCBzaGE7CisrCS8qIFdlIHVzZSA1MTIgYml0cyBvZiByYW5kb20gZGF0YSBwZXIgaXRlcmF0aW9uIHRvCisrCSAqIGVuc3VyZSB0aGF0IHdlIGhhdmUgYXQgbGVhc3QgfHJhbmdlfCBiaXRzIG9mIHJhbmRvbW5lc3MuICovCisrCXVuc2lnbmVkIGNoYXIgcmFuZG9tX2J5dGVzWzY0XTsKKysJdW5zaWduZWQgY2hhciBkaWdlc3RbU0hBNTEyX0RJR0VTVF9MRU5HVEhdOworKwl1bnNpZ25lZCBkb25lLCB0b2RvOworKwkvKiBXZSBnZW5lcmF0ZSB8cmFuZ2V8KzggYnl0ZXMgb2YgcmFuZG9tIG91dHB1dC4gKi8KKysJY29uc3QgdW5zaWduZWQgbnVtX2tfYnl0ZXMgPSBCTl9udW1fYnl0ZXMocmFuZ2UpICsgODsKKysJdW5zaWduZWQgY2hhciBwcml2YXRlX2J5dGVzWzk2XTsKKysJdW5zaWduZWQgY2hhciAqa19ieXRlczsKKysJaW50IHJldCA9IDA7CisrCisrCWtfYnl0ZXMgPSBPUEVOU1NMX21hbGxvYyhudW1fa19ieXRlcyk7CisrCWlmICgha19ieXRlcykKKysJCWdvdG8gZXJyOworKworKwkvKiBXZSBjb3B5IHxwcml2fCBpbnRvIGEgbG9jYWwgYnVmZmVyIHRvIGF2b2lkIGV4cG9zaW5nIGl0cyBsZW5ndGguICovCisrCXRvZG8gPSBzaXplb2YocHJpdi0+ZFswXSkqcHJpdi0+dG9wOworKwlpZiAodG9kbyA+IHNpemVvZihwcml2YXRlX2J5dGVzKSkKKysJCXsKKysJCS8qIE5vIHJlYXNvbmFibGUgRFNBIG9yIEVDRFNBIGtleSBzaG91bGQgaGF2ZSBhIHByaXZhdGUga2V5CisrCQkgKiB0aGlzIGxhcmdlIGFuZCB3ZSBkb24ndCBoYW5kbGUgdGhpcyBjYXNlIGluIG9yZGVyIHRvIGF2b2lkCisrCQkgKiBsZWFraW5nIHRoZSBsZW5ndGggb2YgdGhlIHByaXZhdGUga2V5LiAqLworKwkJQk5lcnIoQk5fRl9CTl9HRU5FUkFURV9EU0FfTk9OQ0UsIEJOX1JfUFJJVkFURV9LRVlfVE9PX0xBUkdFKTsKKysJCWdvdG8gZXJyOworKwkJfQorKwltZW1jcHkocHJpdmF0ZV9ieXRlcywgcHJpdi0+ZCwgdG9kbyk7CisrCW1lbXNldChwcml2YXRlX2J5dGVzICsgdG9kbywgMCwgc2l6ZW9mKHByaXZhdGVfYnl0ZXMpIC0gdG9kbyk7CisrCisrCWZvciAoZG9uZSA9IDA7IGRvbmUgPCBudW1fa19ieXRlczspIHsKKysJCWlmIChSQU5EX2J5dGVzKHJhbmRvbV9ieXRlcywgc2l6ZW9mKHJhbmRvbV9ieXRlcykpICE9IDEpCisrCQkJZ290byBlcnI7CisrCQlTSEE1MTJfSW5pdCgmc2hhKTsKKysJCVNIQTUxMl9VcGRhdGUoJnNoYSwgJmRvbmUsIHNpemVvZihkb25lKSk7CisrCQlTSEE1MTJfVXBkYXRlKCZzaGEsIHByaXZhdGVfYnl0ZXMsIHNpemVvZihwcml2YXRlX2J5dGVzKSk7CisrCQlTSEE1MTJfVXBkYXRlKCZzaGEsIG1lc3NhZ2UsIG1lc3NhZ2VfbGVuKTsKKysJCVNIQTUxMl9VcGRhdGUoJnNoYSwgcmFuZG9tX2J5dGVzLCBzaXplb2YocmFuZG9tX2J5dGVzKSk7CisrCQlTSEE1MTJfRmluYWwoZGlnZXN0LCAmc2hhKTsKKysKKysJCXRvZG8gPSBudW1fa19ieXRlcyAtIGRvbmU7CisrCQlpZiAodG9kbyA+IFNIQTUxMl9ESUdFU1RfTEVOR1RIKQorKwkJCXRvZG8gPSBTSEE1MTJfRElHRVNUX0xFTkdUSDsKKysJCW1lbWNweShrX2J5dGVzICsgZG9uZSwgZGlnZXN0LCB0b2RvKTsKKysJCWRvbmUgKz0gdG9kbzsKKysJfQorKworKwlpZiAoIUJOX2JpbjJibihrX2J5dGVzLCBudW1fa19ieXRlcywgb3V0KSkKKysJCWdvdG8gZXJyOworKwlpZiAoQk5fbW9kKG91dCwgb3V0LCByYW5nZSwgY3R4KSAhPSAxKQorKwkJZ290byBlcnI7CisrCXJldCA9IDE7CisrCisrZXJyOgorKwlpZiAoa19ieXRlcykKKysJCU9QRU5TU0xfZnJlZShrX2J5dGVzKTsKKysJcmV0dXJuIHJldDsKKysJfQorKyNlbmRpZiAgLyogT1BFTlNTTF9OT19TSEE1MTIgKi8KK2RpZmYgLS1naXQgYS9jcnlwdG8vZHNhL2RzYS5oIGIvY3J5cHRvL2RzYS9kc2EuaAoraW5kZXggYjQ0OGQyYS4uNzFlZjU3MiAxMDA2NDQKKy0tLSBhL2NyeXB0by9kc2EvZHNhLmgKKysrKyBiL2NyeXB0by9kc2EvZHNhLmgKK0BAIC05Niw2ICs5NiwxMCBAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGZhc3RlciB2YXJpYWJsZSBzbGlkaW5nIHdpbmRvdyBtZXRob2QgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBiZSB1c2VkIGZvciBhbGwgZXhwb25lbnRzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworKyNkZWZpbmUgRFNBX0ZMQUdfTk9OQ0VfRlJPTV9IQVNICTB4MDQgLyogQ2F1c2VzIHRoZSBEU0Egbm9uY2UgdG8gYmUgY2FsY3VsYXRlZAorKwkJCQkJCWZyb20gU0hBNTEyKHByaXZhdGVfa2V5ICsgSChtZXNzYWdlKSArCisrCQkJCQkJcmFuZG9tKS4gVGhpcyBzdHJlbmd0aGVucyBEU0EgYWdhaW5zdCBhCisrCQkJCQkJd2VhayBQUk5HLiAqLworIAorIAorIC8qIElmIHRoaXMgZmxhZyBpcyBzZXQgdGhlIERTQSBtZXRob2QgaXMgRklQUyBjb21wbGlhbnQgYW5kIGNhbiBiZSB1c2VkCitAQCAtMTMxLDggKzEzNSw5IEBAIHN0cnVjdCBkc2FfbWV0aG9kCisgCXsKKyAJY29uc3QgY2hhciAqbmFtZTsKKyAJRFNBX1NJRyAqICgqZHNhX2RvX3NpZ24pKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRnc3QsIGludCBkbGVuLCBEU0EgKmRzYSk7CistCWludCAoKmRzYV9zaWduX3NldHVwKShEU0EgKmRzYSwgQk5fQ1RYICpjdHhfaW4sIEJJR05VTSAqKmtpbnZwLAorLQkJCQkJCQkJQklHTlVNICoqcnApOworKwlpbnQgKCpkc2Ffc2lnbl9zZXR1cCkoRFNBICpkc2EsIEJOX0NUWCAqY3R4X2luLAorKwkJCSAgICAgIEJJR05VTSAqKmtpbnZwLCBCSUdOVU0gKipycCwKKysJCQkgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpkZ3N0LCBpbnQgZGxlbik7CisgCWludCAoKmRzYV9kb192ZXJpZnkpKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRnc3QsIGludCBkZ3N0X2xlbiwKKyAJCQkgICAgIERTQV9TSUcgKnNpZywgRFNBICpkc2EpOworIAlpbnQgKCpkc2FfbW9kX2V4cCkoRFNBICpkc2EsIEJJR05VTSAqcnIsIEJJR05VTSAqYTEsIEJJR05VTSAqcDEsCitAQCAtMzI1LDYgKzMzMCw3IEBAIHZvaWQgRVJSX2xvYWRfRFNBX3N0cmluZ3Modm9pZCk7CisgI2RlZmluZSBEU0FfUl9NSVNTSU5HX1BBUkFNRVRFUlMJCQkgMTAxCisgI2RlZmluZSBEU0FfUl9NT0RVTFVTX1RPT19MQVJHRQkJCQkgMTAzCisgI2RlZmluZSBEU0FfUl9ORUVEX05FV19TRVRVUF9WQUxVRVMJCQkgMTEwCisrI2RlZmluZSBEU0FfUl9OT05DRV9DQU5OT1RfQkVfUFJFQ09NUFVURUQJCSAxMTIKKyAjZGVmaW5lIERTQV9SX05PTl9GSVBTX0RTQV9NRVRIT0QJCQkgMTExCisgI2RlZmluZSBEU0FfUl9OT19QQVJBTUVURVJTX1NFVAkJCQkgMTA3CisgI2RlZmluZSBEU0FfUl9QQVJBTUVURVJfRU5DT0RJTkdfRVJST1IJCQkgMTA1CitkaWZmIC0tZ2l0IGEvY3J5cHRvL2RzYS9kc2FfZXJyLmMgYi9jcnlwdG8vZHNhL2RzYV9lcnIuYworaW5kZXggMDA1NDViNy4uZTYxNzFjYyAxMDA2NDQKKy0tLSBhL2NyeXB0by9kc2EvZHNhX2Vyci5jCisrKysgYi9jcnlwdG8vZHNhL2RzYV9lcnIuYworQEAgLTEwOSw2ICsxMDksNyBAQCBzdGF0aWMgRVJSX1NUUklOR19EQVRBIERTQV9zdHJfcmVhc29uc1tdPQorIHtFUlJfUkVBU09OKERTQV9SX01JU1NJTkdfUEFSQU1FVEVSUykgICAgLCJtaXNzaW5nIHBhcmFtZXRlcnMifSwKKyB7RVJSX1JFQVNPTihEU0FfUl9NT0RVTFVTX1RPT19MQVJHRSkgICAgICwibW9kdWx1cyB0b28gbGFyZ2UifSwKKyB7RVJSX1JFQVNPTihEU0FfUl9ORUVEX05FV19TRVRVUF9WQUxVRVMpICwibmVlZCBuZXcgc2V0dXAgdmFsdWVzIn0sCisre0VSUl9SRUFTT04oRFNBX1JfTk9OQ0VfQ0FOTk9UX0JFX1BSRUNPTVBVVEVEKSwibm9uY2UgY2Fubm90IGJlIHByZWNvbXB1dGVkIn0sCisge0VSUl9SRUFTT04oRFNBX1JfTk9OX0ZJUFNfRFNBX01FVEhPRCkgICAsIm5vbiBmaXBzIGRzYSBtZXRob2QifSwKKyB7RVJSX1JFQVNPTihEU0FfUl9OT19QQVJBTUVURVJTX1NFVCkgICAgICwibm8gcGFyYW1ldGVycyBzZXQifSwKKyB7RVJSX1JFQVNPTihEU0FfUl9QQVJBTUVURVJfRU5DT0RJTkdfRVJST1IpLCJwYXJhbWV0ZXIgZW5jb2RpbmcgZXJyb3IifSwKK2RpZmYgLS1naXQgYS9jcnlwdG8vZHNhL2RzYV9vc3NsLmMgYi9jcnlwdG8vZHNhL2RzYV9vc3NsLmMKK2luZGV4IGE4NjVhOGMuLjE1ZjhkYTIgMTAwNjQ0CistLS0gYS9jcnlwdG8vZHNhL2RzYV9vc3NsLmMKKysrKyBiL2NyeXB0by9kc2EvZHNhX29zc2wuYworQEAgLTY3LDcgKzY3LDkgQEAKKyAjaW5jbHVkZSA8b3BlbnNzbC9hc24xLmg+CisgCisgc3RhdGljIERTQV9TSUcgKmRzYV9kb19zaWduKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRnc3QsIGludCBkbGVuLCBEU0EgKmRzYSk7Cistc3RhdGljIGludCBkc2Ffc2lnbl9zZXR1cChEU0EgKmRzYSwgQk5fQ1RYICpjdHhfaW4sIEJJR05VTSAqKmtpbnZwLCBCSUdOVU0gKipycCk7Cisrc3RhdGljIGludCBkc2Ffc2lnbl9zZXR1cChEU0EgKmRzYSwgQk5fQ1RYICpjdHhfaW4sCisrCQkJICBCSUdOVU0gKipraW52cCwgQklHTlVNICoqcnAsCisrCQkJICBjb25zdCB1bnNpZ25lZCBjaGFyICpkZ3N0LCBpbnQgZGxlbik7Cisgc3RhdGljIGludCBkc2FfZG9fdmVyaWZ5KGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRnc3QsIGludCBkZ3N0X2xlbiwgRFNBX1NJRyAqc2lnLAorIAkJCSBEU0EgKmRzYSk7Cisgc3RhdGljIGludCBkc2FfaW5pdChEU0EgKmRzYSk7CitAQCAtMTY3LDcgKzE2OSw4IEBAIHN0YXRpYyBEU0FfU0lHICpkc2FfZG9fc2lnbihjb25zdCB1bnNpZ25lZCBjaGFyICpkZ3N0LCBpbnQgZGxlbiwgRFNBICpkc2EpCisgcmVkbzoKKyAJaWYgKChkc2EtPmtpbnYgPT0gTlVMTCkgfHwgKGRzYS0+ciA9PSBOVUxMKSkKKyAJCXsKKy0JCWlmICghRFNBX3NpZ25fc2V0dXAoZHNhLGN0eCwma2ludiwmcikpIGdvdG8gZXJyOworKwkJaWYgKCFkc2EtPm1ldGgtPmRzYV9zaWduX3NldHVwKGRzYSxjdHgsJmtpbnYsJnIsZGdzdCxkbGVuKSkKKysJCQlnb3RvIGVycjsKKyAJCX0KKyAJZWxzZQorIAkJeworQEAgLTIyNiw3ICsyMjksOSBAQCBlcnI6CisgCXJldHVybihyZXQpOworIAl9CisgCistc3RhdGljIGludCBkc2Ffc2lnbl9zZXR1cChEU0EgKmRzYSwgQk5fQ1RYICpjdHhfaW4sIEJJR05VTSAqKmtpbnZwLCBCSUdOVU0gKipycCkKKytzdGF0aWMgaW50IGRzYV9zaWduX3NldHVwKERTQSAqZHNhLCBCTl9DVFggKmN0eF9pbiwKKysJCQkgIEJJR05VTSAqKmtpbnZwLCBCSUdOVU0gKipycCwKKysJCQkgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRnc3QsIGludCBkbGVuKQorIAl7CisgCUJOX0NUWCAqY3R4OworIAlCSUdOVU0gayxrcSwqSywqa2ludj1OVUxMLCpyPU5VTEw7CitAQCAtMjUyLDggKzI1NywyMSBAQCBzdGF0aWMgaW50IGRzYV9zaWduX3NldHVwKERTQSAqZHNhLCBCTl9DVFggKmN0eF9pbiwgQklHTlVNICoqa2ludnAsIEJJR05VTSAqKnJwKQorIAorIAkvKiBHZXQgcmFuZG9tIGsgKi8KKyAJZG8KKy0JCWlmICghQk5fcmFuZF9yYW5nZSgmaywgZHNhLT5xKSkgZ290byBlcnI7CistCXdoaWxlIChCTl9pc196ZXJvKCZrKSk7CisrCQl7CisrI2lmbmRlZiBPUEVOU1NMX05PX1NIQTUxMgorKwkJaWYgKGRzYS0+ZmxhZ3MgJiBEU0FfRkxBR19OT05DRV9GUk9NX0hBU0gpCisrCQkJeworKwkJCS8qIElmIERTQV9GTEFHX05PTkNFX0ZST01fSEFTSCBpcyBzZXQgdGhlbiB3ZSBjYWxjdWxhdGUgayBmcm9tCisrCQkJICogU0hBNTEyKHByaXZhdGVfa2V5ICsgSChtZXNzYWdlKSArIHJhbmRvbSkuIFRoaXMgcHJvdGVjdHMgdGhlCisrCQkJICogcHJpdmF0ZSBrZXkgZnJvbSBhIHdlYWsgUFJORy4gKi8KKysJCQlpZiAoIUJOX2dlbmVyYXRlX2RzYV9ub25jZSgmaywgZHNhLT5xLCBkc2EtPnByaXZfa2V5LCBkZ3N0LAorKwkJCQkJCSAgIGRsZW4sIGN0eCkpCisrCQkJCWdvdG8gZXJyOworKwkJCX0KKysJCWVsc2UKKysjZW5kaWYKKysJCQlpZiAoIUJOX3JhbmRfcmFuZ2UoJmssIGRzYS0+cSkpIGdvdG8gZXJyOworKwkJfSB3aGlsZSAoQk5faXNfemVybygmaykpOworIAlpZiAoKGRzYS0+ZmxhZ3MgJiBEU0FfRkxBR19OT19FWFBfQ09OU1RUSU1FKSA9PSAwKQorIAkJeworIAkJQk5fc2V0X2ZsYWdzKCZrLCBCTl9GTEdfQ09OU1RUSU1FKTsKK2RpZmYgLS1naXQgYS9jcnlwdG8vZHNhL2RzYV9zaWduLmMgYi9jcnlwdG8vZHNhL2RzYV9zaWduLmMKK2luZGV4IGMzY2MzNjQuLjhhY2UzMDAgMTAwNjQ0CistLS0gYS9jcnlwdG8vZHNhL2RzYV9zaWduLmMKKysrKyBiL2NyeXB0by9kc2EvZHNhX3NpZ24uYworQEAgLTg2LDcgKzg2LDE0IEBAIGludCBEU0Ffc2lnbl9zZXR1cChEU0EgKmRzYSwgQk5fQ1RYICpjdHhfaW4sIEJJR05VTSAqKmtpbnZwLCBCSUdOVU0gKipycCkKKyAJCXJldHVybiAwOworIAkJfQorICNlbmRpZgorLQlyZXR1cm4gZHNhLT5tZXRoLT5kc2Ffc2lnbl9zZXR1cChkc2EsIGN0eF9pbiwga2ludnAsIHJwKTsKKysJaWYgKGRzYS0+ZmxhZ3MgJiBEU0FfRkxBR19OT05DRV9GUk9NX0hBU0gpCisrCQl7CisrCQkvKiBZb3UgY2Fubm90IHByZWNvbXB1dGUgdGhlIERTQSBub25jZSBpZiBpdCBpcyByZXF1aXJlZCB0bworKwkJICogZGVwZW5kIG9uIHRoZSBtZXNzYWdlLiAqLworKwkJRFNBZXJyKERTQV9GX0RTQV9TSUdOX1NFVFVQLCBEU0FfUl9OT05DRV9DQU5OT1RfQkVfUFJFQ09NUFVURUQpOworKwkJcmV0dXJuIDA7CisrCQl9CisrCXJldHVybiBkc2EtPm1ldGgtPmRzYV9zaWduX3NldHVwKGRzYSwgY3R4X2luLCBraW52cCwgcnAsIE5VTEwsIDApOworIAl9CisgCisgRFNBX1NJRyAqRFNBX1NJR19uZXcodm9pZCkKK2RpZmYgLS1naXQgYS9jcnlwdG8vZWMvZWMuaCBiL2NyeXB0by9lYy9lYy5oCitpbmRleCBkZmU4NzEwLi5kMDA4YTBkIDEwMDY0NAorLS0tIGEvY3J5cHRvL2VjL2VjLmgKKysrKyBiL2NyeXB0by9lYy9lYy5oCitAQCAtODE5LDYgKzgxOSwxNyBAQCB2b2lkICpFQ19LRVlfaW5zZXJ0X2tleV9tZXRob2RfZGF0YShFQ19LRVkgKmtleSwgdm9pZCAqZGF0YSwKKyAvKiB3cmFwcGVyIGZ1bmN0aW9ucyBmb3IgdGhlIHVuZGVybHlpbmcgRUNfR1JPVVAgb2JqZWN0ICovCisgdm9pZCBFQ19LRVlfc2V0X2FzbjFfZmxhZyhFQ19LRVkgKmVja2V5LCBpbnQgYXNuMV9mbGFnKTsKKyAKKysvKiogU2V0cyB3aGV0aGVyIEVDRFNBIG9wZXJhdGlvbnMgd2l0aCB0aGUgZ2l2ZW4ga2V5IHdpbGwgY2FsY3VsYXRlIHRoZWlyIGsKKysgKiB2YWx1ZSBmcm9tIFNIQTUxMihwcml2YXRlX2tleSArIG1lc3NhZ2UgKyByYW5kb20pIGluIG9yZGVyIHRvIHByb3RlY3QKKysgKiBhZ2FpbnN0IGEgd2VhayBQUk5HLgorKyAqIFxwYXJhbSAgb24gIFdoZXRoZXIgdG8gY2FsY3VsYXRlIGsgZnJvbSBhIGhhc2ggb3Igbm90CisrICovCisrdm9pZCBFQ19LRVlfc2V0X25vbmNlX2Zyb21faGFzaChFQ19LRVkgKmtleSwgaW50IG9uKTsKKysKKysvKiogUmV0dXJucyB0aGUgdmFsdWUgb2Ygbm9uY2VfZnJvbV9oYXNoCisrICovCisraW50IEVDX0tFWV9nZXRfbm9uY2VfZnJvbV9oYXNoKGNvbnN0IEVDX0tFWSAqa2V5KTsKKysKKyAvKiogQ3JlYXRlcyBhIHRhYmxlIG9mIHByZS1jb21wdXRlZCBtdWx0aXBsZXMgb2YgdGhlIGdlbmVyYXRvciB0byAKKyAgKiAgYWNjZWxlcmF0ZSBmdXJ0aGVyIEVDX0tFWSBvcGVyYXRpb25zLgorICAqICBccGFyYW0gIGtleSAgRUNfS0VZIG9iamVjdAorZGlmZiAtLWdpdCBhL2NyeXB0by9lYy9lY19rZXkuYyBiL2NyeXB0by9lYy9lY19rZXkuYworaW5kZXggN2ZhMjQ3NS4uNzNkZDdiOSAxMDA2NDQKKy0tLSBhL2NyeXB0by9lYy9lY19rZXkuYworKysrIGIvY3J5cHRvL2VjL2VjX2tleS5jCitAQCAtODUsNiArODUsNyBAQCBFQ19LRVkgKkVDX0tFWV9uZXcodm9pZCkKKyAJcmV0LT5wdWJfa2V5ID0gTlVMTDsKKyAJcmV0LT5wcml2X2tleT0gTlVMTDsKKyAJcmV0LT5lbmNfZmxhZz0gMDsgCisrCXJldC0+bm9uY2VfZnJvbV9oYXNoX2ZsYWcgPSAwOworIAlyZXQtPmNvbnZfZm9ybSA9IFBPSU5UX0NPTlZFUlNJT05fVU5DT01QUkVTU0VEOworIAlyZXQtPnJlZmVyZW5jZXM9IDE7CisgCXJldC0+bWV0aG9kX2RhdGEgPSBOVUxMOworQEAgLTE5OCw2ICsxOTksNyBAQCBFQ19LRVkgKkVDX0tFWV9jb3B5KEVDX0tFWSAqZGVzdCwgY29uc3QgRUNfS0VZICpzcmMpCisgCisgCS8qIGNvcHkgdGhlIHJlc3QgKi8KKyAJZGVzdC0+ZW5jX2ZsYWcgID0gc3JjLT5lbmNfZmxhZzsKKysJZGVzdC0+bm9uY2VfZnJvbV9oYXNoX2ZsYWcgPSBzcmMtPm5vbmNlX2Zyb21faGFzaF9mbGFnOworIAlkZXN0LT5jb252X2Zvcm0gPSBzcmMtPmNvbnZfZm9ybTsKKyAJZGVzdC0+dmVyc2lvbiAgID0gc3JjLT52ZXJzaW9uOworIAlkZXN0LT5mbGFncyA9IHNyYy0+ZmxhZ3M7CitAQCAtNTA1LDYgKzUwNywxNiBAQCB2b2lkIEVDX0tFWV9zZXRfZW5jX2ZsYWdzKEVDX0tFWSAqa2V5LCB1bnNpZ25lZCBpbnQgZmxhZ3MpCisgCWtleS0+ZW5jX2ZsYWcgPSBmbGFnczsKKyAJfQorIAorK2ludCBFQ19LRVlfZ2V0X25vbmNlX2Zyb21faGFzaChjb25zdCBFQ19LRVkgKmtleSkKKysJeworKwlyZXR1cm4ga2V5LT5ub25jZV9mcm9tX2hhc2hfZmxhZzsKKysJfQorKworK3ZvaWQgRUNfS0VZX3NldF9ub25jZV9mcm9tX2hhc2goRUNfS0VZICprZXksIGludCBvbikKKysJeworKwlrZXktPm5vbmNlX2Zyb21faGFzaF9mbGFnID0gb24gIT0gMDsKKysJfQorKworIHBvaW50X2NvbnZlcnNpb25fZm9ybV90IEVDX0tFWV9nZXRfY29udl9mb3JtKGNvbnN0IEVDX0tFWSAqa2V5KQorIAl7CisgCXJldHVybiBrZXktPmNvbnZfZm9ybTsKK2RpZmYgLS1naXQgYS9jcnlwdG8vZWMvZWNfbGNsLmggYi9jcnlwdG8vZWMvZWNfbGNsLmgKK2luZGV4IGRhNzk2N2QuLjZmNzE0YzcgMTAwNjQ0CistLS0gYS9jcnlwdG8vZWMvZWNfbGNsLmgKKysrKyBiL2NyeXB0by9lYy9lY19sY2wuaAorQEAgLTI0Niw2ICsyNDYsNyBAQCBzdHJ1Y3QgZWNfa2V5X3N0IHsKKyAJQklHTlVNCSAqcHJpdl9rZXk7CisgCisgCXVuc2lnbmVkIGludCBlbmNfZmxhZzsKKysJY2hhciBub25jZV9mcm9tX2hhc2hfZmxhZzsKKyAJcG9pbnRfY29udmVyc2lvbl9mb3JtX3QgY29udl9mb3JtOworIAorIAlpbnQgCXJlZmVyZW5jZXM7CitkaWZmIC0tZ2l0IGEvY3J5cHRvL2VjZHNhL2VjZHNhLmggYi9jcnlwdG8vZWNkc2EvZWNkc2EuaAoraW5kZXggN2ZiNTI1NC4uZGM2YTM2YiAxMDA2NDQKKy0tLSBhL2NyeXB0by9lY2RzYS9lY2RzYS5oCisrKysgYi9jcnlwdG8vZWNkc2EvZWNkc2EuaAorQEAgLTI1MCw2ICsyNTAsNyBAQCB2b2lkIEVSUl9sb2FkX0VDRFNBX3N0cmluZ3Modm9pZCk7CisgI2RlZmluZSBFQ0RTQV9SX0VSUl9FQ19MSUIJCQkJIDEwMgorICNkZWZpbmUgRUNEU0FfUl9NSVNTSU5HX1BBUkFNRVRFUlMJCQkgMTAzCisgI2RlZmluZSBFQ0RTQV9SX05FRURfTkVXX1NFVFVQX1ZBTFVFUwkJCSAxMDYKKysjZGVmaW5lIEVDRFNBX1JfTk9OQ0VfQ0FOTk9UX0JFX1BSRUNPTVBVVEVECQkgMTA4CisgI2RlZmluZSBFQ0RTQV9SX05PTl9GSVBTX01FVEhPRAkJCQkgMTA3CisgI2RlZmluZSBFQ0RTQV9SX1JBTkRPTV9OVU1CRVJfR0VORVJBVElPTl9GQUlMRUQJCSAxMDQKKyAjZGVmaW5lIEVDRFNBX1JfU0lHTkFUVVJFX01BTExPQ19GQUlMRUQJCQkgMTA1CitkaWZmIC0tZ2l0IGEvY3J5cHRvL2VjZHNhL2Vjc19lcnIuYyBiL2NyeXB0by9lY2RzYS9lY3NfZXJyLmMKK2luZGV4IDgxNTQyZTYuLjc0MDZjNmQgMTAwNjQ0CistLS0gYS9jcnlwdG8vZWNkc2EvZWNzX2Vyci5jCisrKysgYi9jcnlwdG8vZWNkc2EvZWNzX2Vyci5jCitAQCAtODUsNiArODUsNyBAQCBzdGF0aWMgRVJSX1NUUklOR19EQVRBIEVDRFNBX3N0cl9yZWFzb25zW109Cisge0VSUl9SRUFTT04oRUNEU0FfUl9FUlJfRUNfTElCKSAgICAgICAgICAsImVyciBlYyBsaWIifSwKKyB7RVJSX1JFQVNPTihFQ0RTQV9SX01JU1NJTkdfUEFSQU1FVEVSUykgICwibWlzc2luZyBwYXJhbWV0ZXJzIn0sCisge0VSUl9SRUFTT04oRUNEU0FfUl9ORUVEX05FV19TRVRVUF9WQUxVRVMpLCJuZWVkIG5ldyBzZXR1cCB2YWx1ZXMifSwKKyt7RVJSX1JFQVNPTihFQ0RTQV9SX05PTkNFX0NBTk5PVF9CRV9QUkVDT01QVVRFRCksIm5vbmNlIGNhbm5vdCBiZSBwcmVjb21wdXRlZCJ9LAorIHtFUlJfUkVBU09OKEVDRFNBX1JfTk9OX0ZJUFNfTUVUSE9EKSAgICAgLCJub24gZmlwcyBtZXRob2QifSwKKyB7RVJSX1JFQVNPTihFQ0RTQV9SX1JBTkRPTV9OVU1CRVJfR0VORVJBVElPTl9GQUlMRUQpLCJyYW5kb20gbnVtYmVyIGdlbmVyYXRpb24gZmFpbGVkIn0sCisge0VSUl9SRUFTT04oRUNEU0FfUl9TSUdOQVRVUkVfTUFMTE9DX0ZBSUxFRCksInNpZ25hdHVyZSBtYWxsb2MgZmFpbGVkIn0sCitkaWZmIC0tZ2l0IGEvY3J5cHRvL2VjZHNhL2Vjc19sb2NsLmggYi9jcnlwdG8vZWNkc2EvZWNzX2xvY2wuaAoraW5kZXggY2IzYmUxMy4uNDZmN2FkOSAxMDA2NDQKKy0tLSBhL2NyeXB0by9lY2RzYS9lY3NfbG9jbC5oCisrKysgYi9jcnlwdG8vZWNkc2EvZWNzX2xvY2wuaAorQEAgLTcwLDggKzcwLDkgQEAgc3RydWN0IGVjZHNhX21ldGhvZAorIAljb25zdCBjaGFyICpuYW1lOworIAlFQ0RTQV9TSUcgKigqZWNkc2FfZG9fc2lnbikoY29uc3QgdW5zaWduZWQgY2hhciAqZGdzdCwgaW50IGRnc3RfbGVuLCAKKyAJCQljb25zdCBCSUdOVU0gKmludiwgY29uc3QgQklHTlVNICpycCwgRUNfS0VZICplY2tleSk7CistCWludCAoKmVjZHNhX3NpZ25fc2V0dXApKEVDX0tFWSAqZWNrZXksIEJOX0NUWCAqY3R4LCBCSUdOVU0gKipraW52LCAKKy0JCQlCSUdOVU0gKipyKTsKKysJaW50ICgqZWNkc2Ffc2lnbl9zZXR1cCkoRUNfS0VZICplY2tleSwgQk5fQ1RYICpjdHgsCisrCQkJCUJJR05VTSAqKmtpbnYsIEJJR05VTSAqKnIsCisrCQkJCWNvbnN0IHVuc2lnbmVkIGNoYXIgKmRnc3QsIGludCBkbGVuKTsKKyAJaW50ICgqZWNkc2FfZG9fdmVyaWZ5KShjb25zdCB1bnNpZ25lZCBjaGFyICpkZ3N0LCBpbnQgZGdzdF9sZW4sIAorIAkJCWNvbnN0IEVDRFNBX1NJRyAqc2lnLCBFQ19LRVkgKmVja2V5KTsKKyAjaWYgMAorZGlmZiAtLWdpdCBhL2NyeXB0by9lY2RzYS9lY3Nfb3NzbC5jIGIvY3J5cHRvL2VjZHNhL2Vjc19vc3NsLmMKK2luZGV4IDc3MjU5MzUuLjMyNWFjYTggMTAwNjQ0CistLS0gYS9jcnlwdG8vZWNkc2EvZWNzX29zc2wuYworKysrIGIvY3J5cHRvL2VjZHNhL2Vjc19vc3NsLmMKK0BAIC02MCwxMSArNjAsMTMgQEAKKyAjaW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4KKyAjaW5jbHVkZSA8b3BlbnNzbC9vYmpfbWFjLmg+CisgI2luY2x1ZGUgPG9wZW5zc2wvYm4uaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9yYW5kLmg+CisgCisgc3RhdGljIEVDRFNBX1NJRyAqZWNkc2FfZG9fc2lnbihjb25zdCB1bnNpZ25lZCBjaGFyICpkZ3N0LCBpbnQgZGxlbiwgCisgCQljb25zdCBCSUdOVU0gKiwgY29uc3QgQklHTlVNICosIEVDX0tFWSAqZWNrZXkpOworLXN0YXRpYyBpbnQgZWNkc2Ffc2lnbl9zZXR1cChFQ19LRVkgKmVja2V5LCBCTl9DVFggKmN0eF9pbiwgQklHTlVNICoqa2ludnAsIAorLQkJQklHTlVNICoqcnApOworK3N0YXRpYyBpbnQgZWNkc2Ffc2lnbl9zZXR1cChFQ19LRVkgKmVja2V5LCBCTl9DVFggKmN0eF9pbiwKKysJCQkgICAgQklHTlVNICoqa2ludnAsIEJJR05VTSAqKnJwLAorKwkJCSAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpkZ3N0LCBpbnQgZGxlbik7Cisgc3RhdGljIGludCBlY2RzYV9kb192ZXJpZnkoY29uc3QgdW5zaWduZWQgY2hhciAqZGdzdCwgaW50IGRnc3RfbGVuLCAKKyAJCWNvbnN0IEVDRFNBX1NJRyAqc2lnLCBFQ19LRVkgKmVja2V5KTsKKyAKK0BAIC04Niw4ICs4OCw5IEBAIGNvbnN0IEVDRFNBX01FVEhPRCAqRUNEU0FfT3BlblNTTCh2b2lkKQorIAlyZXR1cm4gJm9wZW5zc2xfZWNkc2FfbWV0aDsKKyB9CisgCistc3RhdGljIGludCBlY2RzYV9zaWduX3NldHVwKEVDX0tFWSAqZWNrZXksIEJOX0NUWCAqY3R4X2luLCBCSUdOVU0gKipraW52cCwKKy0JCUJJR05VTSAqKnJwKQorK3N0YXRpYyBpbnQgZWNkc2Ffc2lnbl9zZXR1cChFQ19LRVkgKmVja2V5LCBCTl9DVFggKmN0eF9pbiwKKysJCQkgICAgQklHTlVNICoqa2ludnAsIEJJR05VTSAqKnJwLAorKwkJCSAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpkZ3N0LCBpbnQgZGxlbikKKyB7CisgCUJOX0NUWCAgICpjdHggPSBOVUxMOworIAlCSUdOVU0JICprID0gTlVMTCwgKnIgPSBOVUxMLCAqb3JkZXIgPSBOVUxMLCAqWCA9IE5VTEw7CitAQCAtMTM2LDExICsxMzksMjggQEAgc3RhdGljIGludCBlY2RzYV9zaWduX3NldHVwKEVDX0tFWSAqZWNrZXksIEJOX0NUWCAqY3R4X2luLCBCSUdOVU0gKipraW52cCwKKyAJeworIAkJLyogZ2V0IHJhbmRvbSBrICovCQorIAkJZG8KKy0JCQlpZiAoIUJOX3JhbmRfcmFuZ2Uoaywgb3JkZXIpKQorKyNpZm5kZWYgT1BFTlNTTF9OT19TSEE1MTIKKysJCQlpZiAoRUNfS0VZX2dldF9ub25jZV9mcm9tX2hhc2goZWNrZXkpKQorIAkJCXsKKy0JCQkJRUNEU0FlcnIoRUNEU0FfRl9FQ0RTQV9TSUdOX1NFVFVQLAorLQkJCQkgRUNEU0FfUl9SQU5ET01fTlVNQkVSX0dFTkVSQVRJT05fRkFJTEVEKTsJCistCQkJCWdvdG8gZXJyOworKwkJCQlpZiAoIUJOX2dlbmVyYXRlX2RzYV9ub25jZSgKKysJCQkJCWssIG9yZGVyLAorKwkJCQkJRUNfS0VZX2dldDBfcHJpdmF0ZV9rZXkoZWNrZXkpLAorKwkJCQkJZGdzdCwgZGxlbiwgY3R4KSkKKysJCQkJCXsKKysJCQkJCUVDRFNBZXJyKEVDRFNBX0ZfRUNEU0FfU0lHTl9TRVRVUCwKKysJCQkJCQkgRUNEU0FfUl9SQU5ET01fTlVNQkVSX0dFTkVSQVRJT05fRkFJTEVEKTsKKysJCQkJCWdvdG8gZXJyOworKwkJCQkJfQorKwkJCX0KKysJCQllbHNlCisrI2VuZGlmCisrCQkJeworKwkJCQlpZiAoIUJOX3JhbmRfcmFuZ2Uoaywgb3JkZXIpKQorKwkJCQl7CisrCQkJCQlFQ0RTQWVycihFQ0RTQV9GX0VDRFNBX1NJR05fU0VUVVAsCisrCQkJCQkgRUNEU0FfUl9SQU5ET01fTlVNQkVSX0dFTkVSQVRJT05fRkFJTEVEKTsKKysJCQkJCWdvdG8gZXJyOworKwkJCQl9CisgCQkJfQorIAkJd2hpbGUgKEJOX2lzX3plcm8oaykpOworIAorQEAgLTI4Miw3ICszMDIsNyBAQCBzdGF0aWMgRUNEU0FfU0lHICplY2RzYV9kb19zaWduKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRnc3QsIGludCBkZ3N0X2xlbiwKKyAJeworIAkJaWYgKGluX2tpbnYgPT0gTlVMTCB8fCBpbl9yID09IE5VTEwpCisgCQl7CistCQkJaWYgKCFFQ0RTQV9zaWduX3NldHVwKGVja2V5LCBjdHgsICZraW52LCAmcmV0LT5yKSkKKysJCQlpZiAoIWVjZHNhLT5tZXRoLT5lY2RzYV9zaWduX3NldHVwKGVja2V5LCBjdHgsICZraW52LCAmcmV0LT5yLCBkZ3N0LCBkZ3N0X2xlbikpCisgCQkJeworIAkJCQlFQ0RTQWVycihFQ0RTQV9GX0VDRFNBX0RPX1NJR04sRVJSX1JfRUNEU0FfTElCKTsKKyAJCQkJZ290byBlcnI7CitkaWZmIC0tZ2l0IGEvY3J5cHRvL2VjZHNhL2Vjc19zaWduLmMgYi9jcnlwdG8vZWNkc2EvZWNzX3NpZ24uYworaW5kZXggMzUzZDVhZi4uZWE3OWEyNCAxMDA2NDQKKy0tLSBhL2NyeXB0by9lY2RzYS9lY3Nfc2lnbi5jCisrKysgYi9jcnlwdG8vZWNkc2EvZWNzX3NpZ24uYworQEAgLTU4LDYgKzU4LDcgQEAKKyAjaW5jbHVkZSA8b3BlbnNzbC9lbmdpbmUuaD4KKyAjZW5kaWYKKyAjaW5jbHVkZSA8b3BlbnNzbC9yYW5kLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+CisgCisgRUNEU0FfU0lHICpFQ0RTQV9kb19zaWduKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRnc3QsIGludCBkbGVuLCBFQ19LRVkgKmVja2V5KQorIHsKK0BAIC0xMDIsNSArMTAzLDEyIEBAIGludCBFQ0RTQV9zaWduX3NldHVwKEVDX0tFWSAqZWNrZXksIEJOX0NUWCAqY3R4X2luLCBCSUdOVU0gKipraW52cCwKKyAJRUNEU0FfREFUQSAqZWNkc2EgPSBlY2RzYV9jaGVjayhlY2tleSk7CisgCWlmIChlY2RzYSA9PSBOVUxMKQorIAkJcmV0dXJuIDA7CistCXJldHVybiBlY2RzYS0+bWV0aC0+ZWNkc2Ffc2lnbl9zZXR1cChlY2tleSwgY3R4X2luLCBraW52cCwgcnApOyAKKysJaWYgKEVDX0tFWV9nZXRfbm9uY2VfZnJvbV9oYXNoKGVja2V5KSkKKysJCXsKKysJCS8qIFlvdSBjYW5ub3QgcHJlY29tcHV0ZSB0aGUgRUNEU0Egbm9uY2UgaWYgaXQgaXMgcmVxdWlyZWQgdG8KKysJCSAqIGRlcGVuZCBvbiB0aGUgbWVzc2FnZS4gKi8KKysJCUVDRFNBZXJyKEVDRFNBX0ZfRUNEU0FfU0lHTl9TRVRVUCwgRUNEU0FfUl9OT05DRV9DQU5OT1RfQkVfUFJFQ09NUFVURUQpOworKwkJcmV0dXJuIDA7CisrCQl9CisrCXJldHVybiBlY2RzYS0+bWV0aC0+ZWNkc2Ffc2lnbl9zZXR1cChlY2tleSwgY3R4X2luLCBraW52cCwgcnAsIE5VTEwsIDApOworIH0KKy0tIAorMS44LjUuMQorCmRpZmYgLS1naXQgYS9wYXRjaGVzLzAwMTEtZWNkaGVfcHNrLnBhdGNoIGIvcGF0Y2hlcy8wMDExLWVjZGhlX3Bzay5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMmQzZDhiCi0tLSAvZGV2L251bGwKKysrIGIvcGF0Y2hlcy8wMDExLWVjZGhlX3Bzay5wYXRjaApAQCAtMCwwICsxLDE0MDUgQEAKK0Zyb20gMWQ0M2I4OTJkMjc5MTU4NDNlNTcxNGQ5NmRlMjY5NjcyYjViMzVkYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFkYW0gTGFuZ2xleSA8YWdsQGNocm9taXVtLm9yZz4KK0RhdGU6IFRodSwgMTQgTm92IDIwMTMgMTY6MTI6MDEgLTA1MDAKK1N1YmplY3Q6IEltcGxlbWVudCBFQ0RIRS1QU0stV0lUSC1BRVMuCisKK0FkZCBzdXBwb3J0IGZvciBUTFMtRUNESEUtUFNLIGNpcGhlciBzdWl0ZXM6CisqIFRMUy1FQ0RIRS1QU0stV0lUSC1BRVMtMTI4LUNCQy1TSEEyNTYsIGFuZAorKiBUTFMtRUNESEUtUFNLLVdJVEgtQUVTLTI1Ni1DQkMtU0hBMzg0LgorLS0tCisgc3NsL3MzX2NsbnQuYyB8IDM2MCArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQorIHNzbC9zM19lbmMuYyAgfCAgIDIgKy0KKyBzc2wvczNfbGliLmMgIHwgIDM4ICsrKysrLQorIHNzbC9zM19zcnZyLmMgfCA1NDEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHNzbC9zc2xfbGliLmMgfCAgIDIgKy0KKyBzc2wvdGxzMS5oICAgIHwgICA4ICsKKyA2IGZpbGVzIGNoYW5nZWQsIDU1NSBpbnNlcnRpb25zKCspLCAzOTYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zc2wvczNfY2xudC5jIGIvc3NsL3MzX2NsbnQuYworaW5kZXggOGYzNzQwZi4uMzY3MmNjZSAxMDA2NDQKKy0tLSBhL3NzbC9zM19jbG50LmMKKysrKyBiL3NzbC9zM19jbG50LmMKK0BAIC0zMzMsOSArMzMzLDEwIEBAIGludCBzc2wzX2Nvbm5lY3QoU1NMICpzKQorIAkJCQl9CisgI2VuZGlmCisgCQkJLyogQ2hlY2sgaWYgaXQgaXMgYW5vbiBESC9FQ0RIICovCistCQkJLyogb3IgUFNLICovCisrCQkJLyogb3Igbm9uLVJTQSBQU0sgKi8KKyAJCQlpZiAoIShzLT5zMy0+dG1wLm5ld19jaXBoZXItPmFsZ29yaXRobV9hdXRoICYgU1NMX2FOVUxMKSAmJgorLQkJCSAgICAhKHMtPnMzLT50bXAubmV3X2NpcGhlci0+YWxnb3JpdGhtX21rZXkgJiBTU0xfa1BTSykpCisrCQkJICAgICEoKHMtPnMzLT50bXAubmV3X2NpcGhlci0+YWxnb3JpdGhtX2F1dGggJiBTU0xfYVBTSykgJiYKKysJCQkgICAgICAhKHMtPnMzLT50bXAubmV3X2NpcGhlci0+YWxnb3JpdGhtX21rZXkgJiBTU0xfa1JTQSkpKQorIAkJCQl7CisgCQkJCXJldD1zc2wzX2dldF9zZXJ2ZXJfY2VydGlmaWNhdGUocyk7CisgCQkJCWlmIChyZXQgPD0gMCkgZ290byBlbmQ7CitAQCAtMTM2OCw3ICsxMzY5LDcgQEAgaW50IHNzbDNfZ2V0X2tleV9leGNoYW5nZShTU0wgKnMpCisgCQkgICBvbWl0dGVkIGlmIG5vIGlkZW50aXR5IGhpbnQgaXMgc2VudC4gU2V0CisgCQkgICBzZXNzaW9uLT5zZXNzX2NlcnQgYW55d2F5IHRvIGF2b2lkIHByb2JsZW1zCisgCQkgICBsYXRlci4qLworLQkJaWYgKHMtPnMzLT50bXAubmV3X2NpcGhlci0+YWxnb3JpdGhtX21rZXkgJiBTU0xfa1BTSykKKysJCWlmIChzLT5zMy0+dG1wLm5ld19jaXBoZXItPmFsZ29yaXRobV9hdXRoICYgU1NMX2FQU0spCisgCQkJeworIAkJCXMtPnNlc3Npb24tPnNlc3NfY2VydD1zc2xfc2Vzc19jZXJ0X25ldygpOworIAkJCWlmIChzLT5jdHgtPnBza19pZGVudGl0eV9oaW50KQorQEAgLTE0MTYsNTIgKzE0MTcsNTYgQEAgaW50IHNzbDNfZ2V0X2tleV9leGNoYW5nZShTU0wgKnMpCisgCUVWUF9NRF9DVFhfaW5pdCgmbWRfY3R4KTsKKyAKKyAjaWZuZGVmIE9QRU5TU0xfTk9fUFNLCistCWlmIChhbGdfayAmIFNTTF9rUFNLKQorKwlpZiAoYWxnX2EgJiBTU0xfYVBTSykKKyAJCXsKKyAJCWNoYXIgdG1wX2lkX2hpbnRbUFNLX01BWF9JREVOVElUWV9MRU4rMV07CisgCisgCQlhbD1TU0xfQURfSEFORFNIQUtFX0ZBSUxVUkU7CisgCQluMnMocCxpKTsKKyAJCXBhcmFtX2xlbj1pKzI7CistCQkvKiBTdG9yZSBQU0sgaWRlbnRpdHkgaGludCBmb3IgbGF0ZXIgdXNlLCBoaW50IGlzIHVzZWQKKy0JCSAqIGluIHNzbDNfc2VuZF9jbGllbnRfa2V5X2V4Y2hhbmdlLiAgQXNzdW1lIHRoYXQgdGhlCistCQkgKiBtYXhpbXVtIGxlbmd0aCBvZiBhIFBTSyBpZGVudGl0eSBoaW50IGNhbiBiZSBhcworLQkJICogbG9uZyBhcyB0aGUgbWF4aW11bSBsZW5ndGggb2YgYSBQU0sgaWRlbnRpdHkuICovCistCQlpZiAoaSA+IFBTS19NQVhfSURFTlRJVFlfTEVOKQorLQkJCXsKKy0JCQlTU0xlcnIoU1NMX0ZfU1NMM19HRVRfS0VZX0VYQ0hBTkdFLAorLQkJCQlTU0xfUl9EQVRBX0xFTkdUSF9UT09fTE9ORyk7CistCQkJZ290byBmX2VycjsKKy0JCQl9CistCQlpZiAocGFyYW1fbGVuID4gbikKKysJCXMtPmN0eC0+cHNrX2lkZW50aXR5X2hpbnQgPSBOVUxMOworKwkJaWYgKGkgIT0gMCkKKyAJCQl7CistCQkJYWw9U1NMX0FEX0RFQ09ERV9FUlJPUjsKKy0JCQlTU0xlcnIoU1NMX0ZfU1NMM19HRVRfS0VZX0VYQ0hBTkdFLAorLQkJCQlTU0xfUl9CQURfUFNLX0lERU5USVRZX0hJTlRfTEVOR1RIKTsKKy0JCQlnb3RvIGZfZXJyOworKwkJCS8qIFN0b3JlIFBTSyBpZGVudGl0eSBoaW50IGZvciBsYXRlciB1c2UsIGhpbnQgaXMgdXNlZAorKwkJCSAqIGluIHNzbDNfc2VuZF9jbGllbnRfa2V5X2V4Y2hhbmdlLiAgQXNzdW1lIHRoYXQgdGhlCisrCQkJICogbWF4aW11bSBsZW5ndGggb2YgYSBQU0sgaWRlbnRpdHkgaGludCBjYW4gYmUgYXMKKysJCQkgKiBsb25nIGFzIHRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhIFBTSyBpZGVudGl0eS4gKi8KKysJCQlpZiAoaSA+IFBTS19NQVhfSURFTlRJVFlfTEVOKQorKwkJCQl7CisrCQkJCVNTTGVycihTU0xfRl9TU0wzX0dFVF9LRVlfRVhDSEFOR0UsCisrCQkJCQlTU0xfUl9EQVRBX0xFTkdUSF9UT09fTE9ORyk7CisrCQkJCWdvdG8gZl9lcnI7CisrCQkJCX0KKysJCQlpZiAocGFyYW1fbGVuID4gbikKKysJCQkJeworKwkJCQlhbD1TU0xfQURfREVDT0RFX0VSUk9SOworKwkJCQlTU0xlcnIoU1NMX0ZfU1NMM19HRVRfS0VZX0VYQ0hBTkdFLAorKwkJCQkJU1NMX1JfQkFEX1BTS19JREVOVElUWV9ISU5UX0xFTkdUSCk7CisrCQkJCWdvdG8gZl9lcnI7CisrCQkJCX0KKysJCQkvKiBJZiByZWNlaXZlZCBQU0sgaWRlbnRpdHkgaGludCBjb250YWlucyBOVUxMCisrCQkJICogY2hhcmFjdGVycywgdGhlIGhpbnQgaXMgdHJ1bmNhdGVkIGZyb20gdGhlIGZpcnN0CisrCQkJICogTlVMTC4gcCBtYXkgbm90IGJlIGVuZGluZyB3aXRoIE5VTEwsIHNvIGNyZWF0ZSBhCisrCQkJICogTlVMTC10ZXJtaW5hdGVkIHN0cmluZy4gKi8KKysJCQltZW1jcHkodG1wX2lkX2hpbnQsIHAsIGkpOworKwkJCW1lbXNldCh0bXBfaWRfaGludCtpLCAwLCBQU0tfTUFYX0lERU5USVRZX0xFTisxLWkpOworKwkJCWlmIChzLT5jdHgtPnBza19pZGVudGl0eV9oaW50ICE9IE5VTEwpCisrCQkJCU9QRU5TU0xfZnJlZShzLT5jdHgtPnBza19pZGVudGl0eV9oaW50KTsKKysJCQlzLT5jdHgtPnBza19pZGVudGl0eV9oaW50ID0gQlVGX3N0cmR1cCh0bXBfaWRfaGludCk7CisrCQkJaWYgKHMtPmN0eC0+cHNrX2lkZW50aXR5X2hpbnQgPT0gTlVMTCkKKysJCQkJeworKwkJCQlTU0xlcnIoU1NMX0ZfU1NMM19HRVRfS0VZX0VYQ0hBTkdFLCBFUlJfUl9NQUxMT0NfRkFJTFVSRSk7CisrCQkJCWdvdG8gZl9lcnI7CisrCQkJCX0KKyAJCQl9CistCQkvKiBJZiByZWNlaXZlZCBQU0sgaWRlbnRpdHkgaGludCBjb250YWlucyBOVUxMCistCQkgKiBjaGFyYWN0ZXJzLCB0aGUgaGludCBpcyB0cnVuY2F0ZWQgZnJvbSB0aGUgZmlyc3QKKy0JCSAqIE5VTEwuIHAgbWF5IG5vdCBiZSBlbmRpbmcgd2l0aCBOVUxMLCBzbyBjcmVhdGUgYQorLQkJICogTlVMTC10ZXJtaW5hdGVkIHN0cmluZy4gKi8KKy0JCW1lbWNweSh0bXBfaWRfaGludCwgcCwgaSk7CistCQltZW1zZXQodG1wX2lkX2hpbnQraSwgMCwgUFNLX01BWF9JREVOVElUWV9MRU4rMS1pKTsKKy0JCWlmIChzLT5jdHgtPnBza19pZGVudGl0eV9oaW50ICE9IE5VTEwpCistCQkJT1BFTlNTTF9mcmVlKHMtPmN0eC0+cHNrX2lkZW50aXR5X2hpbnQpOworLQkJcy0+Y3R4LT5wc2tfaWRlbnRpdHlfaGludCA9IEJVRl9zdHJkdXAodG1wX2lkX2hpbnQpOworLQkJaWYgKHMtPmN0eC0+cHNrX2lkZW50aXR5X2hpbnQgPT0gTlVMTCkKKy0JCQl7CistCQkJU1NMZXJyKFNTTF9GX1NTTDNfR0VUX0tFWV9FWENIQU5HRSwgRVJSX1JfTUFMTE9DX0ZBSUxVUkUpOworLQkJCWdvdG8gZl9lcnI7CistCQkJfQkgICAKKy0KKyAJCXArPWk7CisgCQluLT1wYXJhbV9sZW47CisgCQl9CistCWVsc2UKKyAjZW5kaWYgLyogIU9QRU5TU0xfTk9fUFNLICovCisrCisrCWlmICgwKSB7fQorICNpZm5kZWYgT1BFTlNTTF9OT19TUlAKKy0JaWYgKGFsZ19rICYgU1NMX2tTUlApCisrCWVsc2UgaWYgKGFsZ19rICYgU1NMX2tTUlApCisgCQl7CisgCQluMnMocCxpKTsKKyAJCXBhcmFtX2xlbj1pKzI7CitAQCAtMTUzOCwxMCArMTU0Myw5IEBAIGludCBzc2wzX2dldF9rZXlfZXhjaGFuZ2UoU1NMICpzKQorIAkJCXBrZXk9WDUwOV9nZXRfcHVia2V5KHMtPnNlc3Npb24tPnNlc3NfY2VydC0+cGVlcl9wa2V5c1tTU0xfUEtFWV9EU0FfU0lHTl0ueDUwOSk7CisgI2VuZGlmCisgCQl9CistCWVsc2UKKyAjZW5kaWYgLyogIU9QRU5TU0xfTk9fU1JQICovCisgI2lmbmRlZiBPUEVOU1NMX05PX1JTQQorLQlpZiAoYWxnX2sgJiBTU0xfa1JTQSkKKysJZWxzZSBpZiAoYWxnX2sgJiBTU0xfa1JTQSkKKyAJCXsKKyAJCWlmICgocnNhPVJTQV9uZXcoKSkgPT0gTlVMTCkKKyAJCQl7CitAQCAtMTU5MCw5ICsxNTk0LDYgQEAgaW50IHNzbDNfZ2V0X2tleV9leGNoYW5nZShTU0wgKnMpCisgCQlzLT5zZXNzaW9uLT5zZXNzX2NlcnQtPnBlZXJfcnNhX3RtcD1yc2E7CisgCQlyc2E9TlVMTDsKKyAJCX0KKy0jZWxzZSAvKiBPUEVOU1NMX05PX1JTQSAqLworLQlpZiAoMCkKKy0JCTsKKyAjZW5kaWYKKyAjaWZuZGVmIE9QRU5TU0xfTk9fREgKKyAJZWxzZSBpZiAoYWxnX2sgJiBTU0xfa0VESCkKK0BAIC0xNzczLDE0ICsxNzc0LDE0IEBAIGludCBzc2wzX2dldF9rZXlfZXhjaGFuZ2UoU1NMICpzKQorIAkJRUNfUE9JTlRfZnJlZShzcnZyX2VjcG9pbnQpOworIAkJc3J2cl9lY3BvaW50ID0gTlVMTDsKKyAJCX0KKy0JZWxzZSBpZiAoYWxnX2spCisrI2VuZGlmIC8qICFPUEVOU1NMX05PX0VDREggKi8KKysKKysJZWxzZSBpZiAoIShhbGdfayAmIFNTTF9rUFNLKSkKKyAJCXsKKyAJCWFsPVNTTF9BRF9VTkVYUEVDVEVEX01FU1NBR0U7CisgCQlTU0xlcnIoU1NMX0ZfU1NMM19HRVRfS0VZX0VYQ0hBTkdFLFNTTF9SX1VORVhQRUNURURfTUVTU0FHRSk7CisgCQlnb3RvIGZfZXJyOworIAkJfQorLSNlbmRpZiAvKiAhT1BFTlNTTF9OT19FQ0RIICovCistCisgCisgCS8qIHAgcG9pbnRzIHRvIHRoZSBuZXh0IGJ5dGUsIHRoZXJlIGFyZSAnbicgYnl0ZXMgbGVmdCAqLworIAorQEAgLTE4ODUsOCArMTg4Niw5IEBAIGZwcmludGYoc3RkZXJyLCAiVVNJTkcgVExTdjEuMiBIQVNIICVzXG4iLCBFVlBfTURfbmFtZShtZCkpOworIAkJfQorIAllbHNlCisgCQl7CistCQlpZiAoIShhbGdfYSAmIFNTTF9hTlVMTCkgJiYgIShhbGdfayAmIFNTTF9rUFNLKSkKKy0JCQkvKiBhTlVMTCBvciBrUFNLIGRvIG5vdCBuZWVkIHB1YmxpYyBrZXlzICovCisrCQlpZiAoIShhbGdfYSAmIFNTTF9hTlVMTCkgJiYKKysJCQkvKiBBbW9uZyBQU0sgY2lwaGVycyBvbmx5IFJTQV9QU0sgbmVlZHMgYSBwdWJsaWMga2V5ICovCisrCQkJISgoYWxnX2EgJiBTU0xfYVBTSykgJiYgIShhbGdfayAmIFNTTF9rUlNBKSkpCisgCQkJeworIAkJCVNTTGVycihTU0xfRl9TU0wzX0dFVF9LRVlfRVhDSEFOR0UsRVJSX1JfSU5URVJOQUxfRVJST1IpOworIAkJCWdvdG8gZXJyOworQEAgLTIyODYsOCArMjI4OCw5IEBAIGludCBzc2wzX2dldF9zZXJ2ZXJfZG9uZShTU0wgKnMpCisgaW50IHNzbDNfc2VuZF9jbGllbnRfa2V5X2V4Y2hhbmdlKFNTTCAqcykKKyAJeworIAl1bnNpZ25lZCBjaGFyICpwLCpkOworLQlpbnQgbjsKKysJaW50IG4gPSAwOworIAl1bnNpZ25lZCBsb25nIGFsZ19rOworKwl1bnNpZ25lZCBsb25nIGFsZ19hOworICNpZm5kZWYgT1BFTlNTTF9OT19SU0EKKyAJdW5zaWduZWQgY2hhciAqcTsKKyAJRVZQX1BLRVkgKnBrZXk9TlVMTDsKK0BAIC0yMzAyLDcgKzIzMDUsMTEgQEAgaW50IHNzbDNfc2VuZF9jbGllbnRfa2V5X2V4Y2hhbmdlKFNTTCAqcykKKyAJdW5zaWduZWQgY2hhciAqZW5jb2RlZFBvaW50ID0gTlVMTDsKKyAJaW50IGVuY29kZWRfcHRfbGVuID0gMDsKKyAJQk5fQ1RYICogYm5fY3R4ID0gTlVMTDsKKy0jZW5kaWYKKysjaWZuZGVmIE9QRU5TU0xfTk9fUFNLCisrCXVuc2lnbmVkIGludCBwc2tfbGVuID0gMDsKKysJdW5zaWduZWQgY2hhciBwc2tbUFNLX01BWF9QU0tfTEVOXTsKKysjZW5kaWYgLyogT1BFTlNTTF9OT19QU0sgKi8KKysjZW5kaWYgLyogT1BFTlNTTF9OT19FQ0RIICovCisgCisgCWlmIChzLT5zdGF0ZSA9PSBTU0wzX1NUX0NXX0tFWV9FWENIX0EpCisgCQl7CitAQCAtMjMxMCw3ICsyMzE3LDk2IEBAIGludCBzc2wzX3NlbmRfY2xpZW50X2tleV9leGNoYW5nZShTU0wgKnMpCisgCQlwPSAmKGRbNF0pOworIAorIAkJYWxnX2s9cy0+czMtPnRtcC5uZXdfY2lwaGVyLT5hbGdvcml0aG1fbWtleTsKKysJCWFsZ19hPXMtPnMzLT50bXAubmV3X2NpcGhlci0+YWxnb3JpdGhtX2F1dGg7CisrCisrI2lmbmRlZiBPUEVOU1NMX05PX1BTSworKwkJaWYgKGFsZ19hICYgU1NMX2FQU0spCisrCQkJeworKwkJCWNoYXIgaWRlbnRpdHlbUFNLX01BWF9JREVOVElUWV9MRU5dOworKwkJCXVuc2lnbmVkIGNoYXIgKnQgPSBOVUxMOworKwkJCXVuc2lnbmVkIGNoYXIgcHJlX21zW1BTS19NQVhfUFNLX0xFTioyKzRdOworKwkJCXVuc2lnbmVkIGludCBwcmVfbXNfbGVuID0gMDsKKysJCQlpbnQgcHNrX2VyciA9IDE7CisrCisrCQkJbiA9IDA7CisrCQkJaWYgKHMtPnBza19jbGllbnRfY2FsbGJhY2sgPT0gTlVMTCkKKysJCQkJeworKwkJCQlTU0xlcnIoU1NMX0ZfU1NMM19TRU5EX0NMSUVOVF9LRVlfRVhDSEFOR0UsCisrCQkJCQlTU0xfUl9QU0tfTk9fQ0xJRU5UX0NCKTsKKysJCQkJZ290byBlcnI7CisrCQkJCX0KKyAKKysJCQlwc2tfbGVuID0gcy0+cHNrX2NsaWVudF9jYWxsYmFjayhzLCBzLT5jdHgtPnBza19pZGVudGl0eV9oaW50LAorKwkJCQlpZGVudGl0eSwgUFNLX01BWF9JREVOVElUWV9MRU4sIHBzaywgc2l6ZW9mKHBzaykpOworKwkJCWlmIChwc2tfbGVuID4gUFNLX01BWF9QU0tfTEVOKQorKwkJCQl7CisrCQkJCVNTTGVycihTU0xfRl9TU0wzX1NFTkRfQ0xJRU5UX0tFWV9FWENIQU5HRSwKKysJCQkJCUVSUl9SX0lOVEVSTkFMX0VSUk9SKTsKKysJCQkJZ290byBwc2tfZXJyOworKwkJCQl9CisrCQkJZWxzZSBpZiAocHNrX2xlbiA9PSAwKQorKwkJCQl7CisrCQkJCVNTTGVycihTU0xfRl9TU0wzX1NFTkRfQ0xJRU5UX0tFWV9FWENIQU5HRSwKKysJCQkJCVNTTF9SX1BTS19JREVOVElUWV9OT1RfRk9VTkQpOworKwkJCQlnb3RvIHBza19lcnI7CisrCQkJCX0KKysKKysJCQlpZiAoIShhbGdfayAmIFNTTF9rRUVDREgpKQorKwkJCQl7CisrCQkJCS8qIENyZWF0ZSB0aGUgc2hhcmVkIHNlY3JldCBub3cgaWYgd2UncmUgbm90IHVzaW5nIEVDREhFLVBTSy4qLworKwkJCQlwcmVfbXNfbGVuID0gMitwc2tfbGVuKzIrcHNrX2xlbjsKKysJCQkJdCA9IHByZV9tczsKKysJCQkJczJuKHBza19sZW4sIHQpOworKwkJCQltZW1zZXQodCwgMCwgcHNrX2xlbik7CisrCQkJCXQrPXBza19sZW47CisrCQkJCXMybihwc2tfbGVuLCB0KTsKKysJCQkJbWVtY3B5KHQsIHBzaywgcHNrX2xlbik7CisrCisrCQkJCXMtPnNlc3Npb24tPm1hc3Rlcl9rZXlfbGVuZ3RoID0KKysJCQkJCXMtPm1ldGhvZC0+c3NsM19lbmMtPmdlbmVyYXRlX21hc3Rlcl9zZWNyZXQocywKKysJCQkJCQlzLT5zZXNzaW9uLT5tYXN0ZXJfa2V5LAorKwkJCQkJCXByZV9tcywgcHJlX21zX2xlbik7CisrCQkJCW4gPSBzdHJsZW4oaWRlbnRpdHkpOworKwkJCQlzMm4obiwgcCk7CisrCQkJCW1lbWNweShwLCBpZGVudGl0eSwgbik7CisrCQkJCW4gKz0gMjsKKysJCQkJfQorKworKwkJCWlmIChzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHlfaGludCAhPSBOVUxMKQorKwkJCQlPUEVOU1NMX2ZyZWUocy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5X2hpbnQpOworKwkJCXMtPnNlc3Npb24tPnBza19pZGVudGl0eV9oaW50ID0gTlVMTDsKKysJCQlpZiAocy0+Y3R4LT5wc2tfaWRlbnRpdHlfaGludCkKKysJCQkJeworKwkJCQlzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHlfaGludCA9IEJVRl9zdHJkdXAocy0+Y3R4LT5wc2tfaWRlbnRpdHlfaGludCk7CisrCQkJCWlmIChzLT5jdHgtPnBza19pZGVudGl0eV9oaW50ICE9IE5VTEwgJiYKKysJCQkJCXMtPnNlc3Npb24tPnBza19pZGVudGl0eV9oaW50ID09IE5VTEwpCisrCQkJCQl7CisrCQkJCQlTU0xlcnIoU1NMX0ZfU1NMM19TRU5EX0NMSUVOVF9LRVlfRVhDSEFOR0UsCisrCQkJCQkJRVJSX1JfTUFMTE9DX0ZBSUxVUkUpOworKwkJCQkJZ290byBwc2tfZXJyOworKwkJCQkJfQorKwkJCQl9CisrCisrCQkJaWYgKHMtPnNlc3Npb24tPnBza19pZGVudGl0eSAhPSBOVUxMKQorKwkJCQlPUEVOU1NMX2ZyZWUocy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5KTsKKysJCQlzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHkgPSBCVUZfc3RyZHVwKGlkZW50aXR5KTsKKysJCQlpZiAocy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5ID09IE5VTEwpCisrCQkJCXsKKysJCQkJU1NMZXJyKFNTTF9GX1NTTDNfU0VORF9DTElFTlRfS0VZX0VYQ0hBTkdFLAorKwkJCQkJRVJSX1JfTUFMTE9DX0ZBSUxVUkUpOworKwkJCQlnb3RvIHBza19lcnI7CisrCQkJCX0KKysJCQlwc2tfZXJyID0gMDsKKysJCXBza19lcnI6CisrCQkJT1BFTlNTTF9jbGVhbnNlKGlkZW50aXR5LCBQU0tfTUFYX0lERU5USVRZX0xFTik7CisrCQkJT1BFTlNTTF9jbGVhbnNlKHByZV9tcywgc2l6ZW9mKHByZV9tcykpOworKwkJCWlmIChwc2tfZXJyICE9IDApCisrCQkJCXsKKysJCQkJc3NsM19zZW5kX2FsZXJ0KHMsIFNTTDNfQUxfRkFUQUwsIFNTTF9BRF9IQU5EU0hBS0VfRkFJTFVSRSk7CisrCQkJCWdvdG8gZXJyOworKwkJCQl9CisrCQkJfQorKyNlbmRpZgorIAkJLyogRm9vbCBlbWFjcyBpbmRlbnRhdGlvbiAqLworIAkJaWYgKDApIHt9CisgI2lmbmRlZiBPUEVOU1NMX05PX1JTQQorQEAgLTI1NzEsMTQgKzI2NjcsMTkgQEAgaW50IHNzbDNfc2VuZF9jbGllbnRfa2V5X2V4Y2hhbmdlKFNTTCAqcykKKyAJCQkvKiBwZXJoYXBzIGNsZWFuIHRoaW5ncyB1cCBhIGJpdCBFQVkgRUFZIEVBWSBFQVkqLworIAkJCX0KKyAjZW5kaWYKKy0KKy0jaWZuZGVmIE9QRU5TU0xfTk9fRUNESCAKKysjaWZuZGVmIE9QRU5TU0xfTk9fRUNESAorIAkJZWxzZSBpZiAoYWxnX2sgJiAoU1NMX2tFRUNESHxTU0xfa0VDREhyfFNTTF9rRUNESGUpKQorIAkJCXsKKyAJCQljb25zdCBFQ19HUk9VUCAqc3J2cl9ncm91cCA9IE5VTEw7CisgCQkJRUNfS0VZICp0a2V5OworIAkJCWludCBlY2RoX2NsbnRfY2VydCA9IDA7CisgCQkJaW50IGZpZWxkX3NpemUgPSAwOworKyNpZm5kZWYgT1BFTlNTTF9OT19QU0sKKysJCQl1bnNpZ25lZCBjaGFyICpwcmVfbXM7CisrCQkJdW5zaWduZWQgY2hhciAqdDsKKysJCQl1bnNpZ25lZCBpbnQgcHJlX21zX2xlbjsKKysJCQl1bnNpZ25lZCBpbnQgaTsKKysjZW5kaWYKKyAKKyAJCQlpZiAocy0+c2Vzc2lvbi0+c2Vzc19jZXJ0ID09IE5VTEwpIAorIAkJCQl7CitAQCAtMjcwNiwxNSArMjgwNyw0MSBAQCBpbnQgc3NsM19zZW5kX2NsaWVudF9rZXlfZXhjaGFuZ2UoU1NMICpzKQorIAkJCQlnb3RvIGVycjsKKyAJCQkJfQorIAorLQkJCS8qIGdlbmVyYXRlIG1hc3RlciBrZXkgZnJvbSB0aGUgcmVzdWx0ICovCistCQkJcy0+c2Vzc2lvbi0+bWFzdGVyX2tleV9sZW5ndGggPSBzLT5tZXRob2QtPnNzbDNfZW5jIFwKKy0JCQkgICAgLT4gZ2VuZXJhdGVfbWFzdGVyX3NlY3JldChzLCAKKy0JCQkJcy0+c2Vzc2lvbi0+bWFzdGVyX2tleSwKKy0JCQkJcCwgbik7CistCisrI2lmbmRlZiBPUEVOU1NMX05PX1BTSworKwkJCS8qIEVDREhFIFBTSyBjaXBoZXJzdWl0ZXMgZnJvbSBSRkMgNTQ4OSAqLworKwkJCWlmICgoYWxnX2EgJiBTU0xfYVBTSykgJiYgcHNrX2xlbiAhPSAwKQorKwkJCQl7CisrCQkJCXByZV9tc19sZW4gPSAyK3Bza19sZW4rMituOworKwkJCQlwcmVfbXMgPSBPUEVOU1NMX21hbGxvYyhwcmVfbXNfbGVuKTsKKysJCQkJaWYgKHByZV9tcyA9PSBOVUxMKQorKwkJCQkJeworKwkJCQkJU1NMZXJyKFNTTF9GX1NTTDNfU0VORF9DTElFTlRfS0VZX0VYQ0hBTkdFLAorKwkJCSAgICAJCUVSUl9SX01BTExPQ19GQUlMVVJFKTsKKysJCQkJCWdvdG8gZXJyOworKwkJCQkJfQorKwkJCQltZW1zZXQocHJlX21zLCAwLCBwcmVfbXNfbGVuKTsKKysJCQkJdCA9IHByZV9tczsKKysJCQkJczJuKHBza19sZW4sIHQpOworKwkJCQltZW1jcHkodCwgcHNrLCBwc2tfbGVuKTsKKysJCQkJdCArPSBwc2tfbGVuOworKwkJCQlzMm4obiwgdCk7CisrCQkJCW1lbWNweSh0LCBwLCBuKTsKKysJCQkJcy0+c2Vzc2lvbi0+bWFzdGVyX2tleV9sZW5ndGggPSBzLT5tZXRob2QtPnNzbDNfZW5jIFwKKysJCQkJCS0+IGdlbmVyYXRlX21hc3Rlcl9zZWNyZXQocywKKysJCQkJCQlzLT5zZXNzaW9uLT5tYXN0ZXJfa2V5LCBwcmVfbXMsIHByZV9tc19sZW4pOworKwkJCQlPUEVOU1NMX2NsZWFuc2UocHJlX21zLCBwcmVfbXNfbGVuKTsKKysJCQkJT1BFTlNTTF9mcmVlKHByZV9tcyk7CisrCQkJCX0KKysjZW5kaWYgLyogT1BFTlNTTF9OT19QU0sgKi8KKysJCQlpZiAoIShhbGdfYSAmIFNTTF9hUFNLKSkKKysJCQkJeworKwkJCQkvKiBnZW5lcmF0ZSBtYXN0ZXIga2V5IGZyb20gdGhlIHJlc3VsdCAqLworKwkJCQlzLT5zZXNzaW9uLT5tYXN0ZXJfa2V5X2xlbmd0aCA9IHMtPm1ldGhvZC0+c3NsM19lbmMgXAorKwkJCQkJLT4gZ2VuZXJhdGVfbWFzdGVyX3NlY3JldChzLAorKwkJCQkJCXMtPnNlc3Npb24tPm1hc3Rlcl9rZXksIHAsIG4pOworKwkJCQl9CisgCQkJbWVtc2V0KHAsIDAsIG4pOyAvKiBjbGVhbiB1cCAqLworLQorLQkJCWlmIChlY2RoX2NsbnRfY2VydCkgCisrCQkJaWYgKGVjZGhfY2xudF9jZXJ0KQorIAkJCQl7CisgCQkJCS8qIFNlbmQgZW1wdHkgY2xpZW50IGtleSBleGNoIG1lc3NhZ2UgKi8KKyAJCQkJbiA9IDA7CitAQCAtMjc0MiwyOSArMjg2OSw0MiBAQCBpbnQgc3NsM19zZW5kX2NsaWVudF9rZXlfZXhjaGFuZ2UoU1NMICpzKQorIAkJCQkJfQorIAorIAkJCQkvKiBFbmNvZGUgdGhlIHB1YmxpYyBrZXkgKi8KKy0JCQkJbiA9IEVDX1BPSU5UX3BvaW50Mm9jdChzcnZyX2dyb3VwLCAKKy0JCQkJICAgIEVDX0tFWV9nZXQwX3B1YmxpY19rZXkoY2xudF9lY2RoKSwgCistCQkJCSAgICBQT0lOVF9DT05WRVJTSU9OX1VOQ09NUFJFU1NFRCwgCisrCQkJCWVuY29kZWRfcHRfbGVuID0gRUNfUE9JTlRfcG9pbnQyb2N0KHNydnJfZ3JvdXAsCisrCQkJCSAgICBFQ19LRVlfZ2V0MF9wdWJsaWNfa2V5KGNsbnRfZWNkaCksCisrCQkJCSAgICBQT0lOVF9DT05WRVJTSU9OX1VOQ09NUFJFU1NFRCwKKyAJCQkJICAgIGVuY29kZWRQb2ludCwgZW5jb2RlZF9wdF9sZW4sIGJuX2N0eCk7CisrCQkJCQorKwkJCQluID0gMDsKKysjaWZuZGVmIE9QRU5TU0xfTk9fUFNLCisrCQkJCWlmICgoYWxnX2EgJiBTU0xfYVBTSykgJiYgcHNrX2xlbiAhPSAwKQorKwkJCQkJeworKwkJCQkJaSA9IHN0cmxlbihzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHkpOworKwkJCQkJczJuKGksIHApOworKwkJCQkJbWVtY3B5KHAsIHMtPnNlc3Npb24tPnBza19pZGVudGl0eSwgaSk7CisrCQkJCQlwICs9IGk7CisrCQkJCQluID0gaSArIDI7CisrCQkJCQl9CisrI2VuZGlmCisgCistCQkJCSpwID0gbjsgLyogbGVuZ3RoIG9mIGVuY29kZWQgcG9pbnQgKi8KKysJCQkJKnAgPSBlbmNvZGVkX3B0X2xlbjsgLyogbGVuZ3RoIG9mIGVuY29kZWQgcG9pbnQgKi8KKyAJCQkJLyogRW5jb2RlZCBwb2ludCB3aWxsIGJlIGNvcGllZCBoZXJlICovCistCQkJCXAgKz0gMTsgCisrCQkJCXAgKz0gMTsKKysJCQkJbiArPSAxOworIAkJCQkvKiBjb3B5IHRoZSBwb2ludCAqLworLQkJCQltZW1jcHkoKHVuc2lnbmVkIGNoYXIgKilwLCBlbmNvZGVkUG9pbnQsIG4pOworKwkJCQltZW1jcHkoKHVuc2lnbmVkIGNoYXIgKilwLCBlbmNvZGVkUG9pbnQsIGVuY29kZWRfcHRfbGVuKTsKKyAJCQkJLyogaW5jcmVtZW50IG4gdG8gYWNjb3VudCBmb3IgbGVuZ3RoIGZpZWxkICovCistCQkJCW4gKz0gMTsgCisrCQkJCW4gKz0gZW5jb2RlZF9wdF9sZW47CisgCQkJCX0KKyAKKyAJCQkvKiBGcmVlIGFsbG9jYXRlZCBtZW1vcnkgKi8KKyAJCQlCTl9DVFhfZnJlZShibl9jdHgpOworIAkJCWlmIChlbmNvZGVkUG9pbnQgIT0gTlVMTCkgT1BFTlNTTF9mcmVlKGVuY29kZWRQb2ludCk7CistCQkJaWYgKGNsbnRfZWNkaCAhPSBOVUxMKSAKKysJCQlpZiAoY2xudF9lY2RoICE9IE5VTEwpCisgCQkJCSBFQ19LRVlfZnJlZShjbG50X2VjZGgpOworIAkJCUVWUF9QS0VZX2ZyZWUoc3J2cl9wdWJfcGtleSk7CisgCQkJfQorICNlbmRpZiAvKiAhT1BFTlNTTF9OT19FQ0RIICovCistCQllbHNlIGlmIChhbGdfayAmIFNTTF9rR09TVCkgCisrCQllbHNlIGlmIChhbGdfayAmIFNTTF9rR09TVCkKKyAJCQl7CisgCQkJLyogR09TVCBrZXkgZXhjaGFuZ2UgbWVzc2FnZSBjcmVhdGlvbiAqLworIAkJCUVWUF9QS0VZX0NUWCAqcGtleV9jdHg7CitAQCAtMjg4Nyw4OSArMzAyNyw3IEBAIGludCBzc2wzX3NlbmRfY2xpZW50X2tleV9leGNoYW5nZShTU0wgKnMpCisgCQkJCX0KKyAJCQl9CisgI2VuZGlmCistI2lmbmRlZiBPUEVOU1NMX05PX1BTSworLQkJZWxzZSBpZiAoYWxnX2sgJiBTU0xfa1BTSykKKy0JCQl7CistCQkJY2hhciBpZGVudGl0eVtQU0tfTUFYX0lERU5USVRZX0xFTl07CistCQkJdW5zaWduZWQgY2hhciAqdCA9IE5VTEw7CistCQkJdW5zaWduZWQgY2hhciBwc2tfb3JfcHJlX21zW1BTS19NQVhfUFNLX0xFTioyKzRdOworLQkJCXVuc2lnbmVkIGludCBwcmVfbXNfbGVuID0gMCwgcHNrX2xlbiA9IDA7CistCQkJaW50IHBza19lcnIgPSAxOworLQorLQkJCW4gPSAwOworLQkJCWlmIChzLT5wc2tfY2xpZW50X2NhbGxiYWNrID09IE5VTEwpCistCQkJCXsKKy0JCQkJU1NMZXJyKFNTTF9GX1NTTDNfU0VORF9DTElFTlRfS0VZX0VYQ0hBTkdFLAorLQkJCQkJU1NMX1JfUFNLX05PX0NMSUVOVF9DQik7CistCQkJCWdvdG8gZXJyOworLQkJCQl9CistCistCQkJcHNrX2xlbiA9IHMtPnBza19jbGllbnRfY2FsbGJhY2socywgcy0+Y3R4LT5wc2tfaWRlbnRpdHlfaGludCwKKy0JCQkJaWRlbnRpdHksIFBTS19NQVhfSURFTlRJVFlfTEVOLAorLQkJCQlwc2tfb3JfcHJlX21zLCBzaXplb2YocHNrX29yX3ByZV9tcykpOworLQkJCWlmIChwc2tfbGVuID4gUFNLX01BWF9QU0tfTEVOKQorLQkJCQl7CistCQkJCVNTTGVycihTU0xfRl9TU0wzX1NFTkRfQ0xJRU5UX0tFWV9FWENIQU5HRSwKKy0JCQkJCUVSUl9SX0lOVEVSTkFMX0VSUk9SKTsKKy0JCQkJZ290byBwc2tfZXJyOworLQkJCQl9CistCQkJZWxzZSBpZiAocHNrX2xlbiA9PSAwKQorLQkJCQl7CistCQkJCVNTTGVycihTU0xfRl9TU0wzX1NFTkRfQ0xJRU5UX0tFWV9FWENIQU5HRSwKKy0JCQkJCVNTTF9SX1BTS19JREVOVElUWV9OT1RfRk9VTkQpOworLQkJCQlnb3RvIHBza19lcnI7CistCQkJCX0KKy0KKy0JCQkvKiBjcmVhdGUgUFNLIHByZV9tYXN0ZXJfc2VjcmV0ICovCistCQkJcHJlX21zX2xlbiA9IDIrcHNrX2xlbisyK3Bza19sZW47CistCQkJdCA9IHBza19vcl9wcmVfbXM7CistCQkJbWVtbW92ZShwc2tfb3JfcHJlX21zK3Bza19sZW4rNCwgcHNrX29yX3ByZV9tcywgcHNrX2xlbik7CistCQkJczJuKHBza19sZW4sIHQpOworLQkJCW1lbXNldCh0LCAwLCBwc2tfbGVuKTsKKy0JCQl0Kz1wc2tfbGVuOworLQkJCXMybihwc2tfbGVuLCB0KTsKKy0KKy0JCQlpZiAocy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5X2hpbnQgIT0gTlVMTCkKKy0JCQkJT1BFTlNTTF9mcmVlKHMtPnNlc3Npb24tPnBza19pZGVudGl0eV9oaW50KTsKKy0JCQlzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHlfaGludCA9IEJVRl9zdHJkdXAocy0+Y3R4LT5wc2tfaWRlbnRpdHlfaGludCk7CistCQkJaWYgKHMtPmN0eC0+cHNrX2lkZW50aXR5X2hpbnQgIT0gTlVMTCAmJgorLQkJCQlzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHlfaGludCA9PSBOVUxMKQorLQkJCQl7CistCQkJCVNTTGVycihTU0xfRl9TU0wzX1NFTkRfQ0xJRU5UX0tFWV9FWENIQU5HRSwKKy0JCQkJCUVSUl9SX01BTExPQ19GQUlMVVJFKTsKKy0JCQkJZ290byBwc2tfZXJyOworLQkJCQl9CistCistCQkJaWYgKHMtPnNlc3Npb24tPnBza19pZGVudGl0eSAhPSBOVUxMKQorLQkJCQlPUEVOU1NMX2ZyZWUocy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5KTsKKy0JCQlzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHkgPSBCVUZfc3RyZHVwKGlkZW50aXR5KTsKKy0JCQlpZiAocy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5ID09IE5VTEwpCistCQkJCXsKKy0JCQkJU1NMZXJyKFNTTF9GX1NTTDNfU0VORF9DTElFTlRfS0VZX0VYQ0hBTkdFLAorLQkJCQkJRVJSX1JfTUFMTE9DX0ZBSUxVUkUpOworLQkJCQlnb3RvIHBza19lcnI7CistCQkJCX0KKy0KKy0JCQlzLT5zZXNzaW9uLT5tYXN0ZXJfa2V5X2xlbmd0aCA9CistCQkJCXMtPm1ldGhvZC0+c3NsM19lbmMtPmdlbmVyYXRlX21hc3Rlcl9zZWNyZXQocywKKy0JCQkJCXMtPnNlc3Npb24tPm1hc3Rlcl9rZXksCistCQkJCQlwc2tfb3JfcHJlX21zLCBwcmVfbXNfbGVuKTsgCistCQkJbiA9IHN0cmxlbihpZGVudGl0eSk7CistCQkJczJuKG4sIHApOworLQkJCW1lbWNweShwLCBpZGVudGl0eSwgbik7CistCQkJbis9MjsKKy0JCQlwc2tfZXJyID0gMDsKKy0JCXBza19lcnI6CistCQkJT1BFTlNTTF9jbGVhbnNlKGlkZW50aXR5LCBQU0tfTUFYX0lERU5USVRZX0xFTik7CistCQkJT1BFTlNTTF9jbGVhbnNlKHBza19vcl9wcmVfbXMsIHNpemVvZihwc2tfb3JfcHJlX21zKSk7CistCQkJaWYgKHBza19lcnIgIT0gMCkKKy0JCQkJeworLQkJCQlzc2wzX3NlbmRfYWxlcnQocywgU1NMM19BTF9GQVRBTCwgU1NMX0FEX0hBTkRTSEFLRV9GQUlMVVJFKTsKKy0JCQkJZ290byBlcnI7CistCQkJCX0KKy0JCQl9CistI2VuZGlmCistCQllbHNlCisrCQllbHNlIGlmICghKGFsZ19rICYgU1NMX2tQU0spIHx8ICgoYWxnX2sgJiBTU0xfa1BTSykgJiYgIShhbGdfYSAmIFNTTF9hUFNLKSkpCisgCQkJeworIAkJCXNzbDNfc2VuZF9hbGVydChzLCBTU0wzX0FMX0ZBVEFMLAorIAkJCSAgICBTU0xfQURfSEFORFNIQUtFX0ZBSUxVUkUpOworQEAgLTMyNzQsNyArMzMzMiw3IEBAIGludCBzc2wzX2NoZWNrX2NlcnRfYW5kX2FsZ29yaXRobShTU0wgKnMpCisgCWFsZ19hPXMtPnMzLT50bXAubmV3X2NpcGhlci0+YWxnb3JpdGhtX2F1dGg7CisgCisgCS8qIHdlIGRvbid0IGhhdmUgYSBjZXJ0aWZpY2F0ZSAqLworLQlpZiAoKGFsZ19hICYgKFNTTF9hREh8U1NMX2FOVUxMfFNTTF9hS1JCNSkpIHx8IChhbGdfayAmIFNTTF9rUFNLKSkKKysJaWYgKChhbGdfYSAmIChTU0xfYURIfFNTTF9hTlVMTHxTU0xfYUtSQjUpKSB8fCAoKGFsZ19hICYgU1NMX2FQU0spICYmICEoYWxnX2sgJiBTU0xfa1JTQSkpKQorIAkJcmV0dXJuKDEpOworIAorIAlzYz1zLT5zZXNzaW9uLT5zZXNzX2NlcnQ7CitkaWZmIC0tZ2l0IGEvc3NsL3MzX2VuYy5jIGIvc3NsL3MzX2VuYy5jCitpbmRleCA2MzU4ZTFiLi4wZGFjN2U3IDEwMDY0NAorLS0tIGEvc3NsL3MzX2VuYy5jCisrKysgYi9zc2wvczNfZW5jLmMKK0BAIC03MzQsNyArNzM0LDcgQEAgaW50IG5fc3NsM19tYWMoU1NMICpzc2wsIHVuc2lnbmVkIGNoYXIgKm1kLCBpbnQgc2VuZCkKKyAJCX0KKyAKKyAJdD1FVlBfTURfQ1RYX3NpemUoaGFzaCk7CistCWlmICh0IDwgMCkKKysJaWYgKHQgPCAwIHx8IHQgPiAyMCkKKyAJCXJldHVybiAtMTsKKyAJbWRfc2l6ZT10OworIAlucGFkPSg0OC9tZF9zaXplKSptZF9zaXplOworZGlmZiAtLWdpdCBhL3NzbC9zM19saWIuYyBiL3NzbC9zM19saWIuYworaW5kZXggMWQ4N2FjNS4uNzcyNDRkMyAxMDA2NDQKKy0tLSBhL3NzbC9zM19saWIuYworKysrIGIvc3NsL3MzX2xpYi5jCitAQCAtMjgyNyw2ICsyODI3LDQyIEBAIE9QRU5TU0xfR0xPQkFMIFNTTF9DSVBIRVIgc3NsM19jaXBoZXJzW109eworIAkyNTYsCisgCX0sCisgCisrI2lmbmRlZiBPUEVOU1NMX05PX1BTSworKyAgICAvKiBFQ0RIIFBTSyBjaXBoZXJzdWl0ZXMgZnJvbSBSRkMgNTQ4OSAqLworKworKwkvKiBDaXBoZXIgQzAzNyAqLworKwl7CisrCTEsCisrCVRMUzFfVFhUX0VDREhFX1BTS19XSVRIX0FFU18xMjhfQ0JDX1NIQTI1NiwKKysJVExTMV9DS19FQ0RIRV9QU0tfV0lUSF9BRVNfMTI4X0NCQ19TSEEyNTYsCisrCVNTTF9rRUVDREgsCisrCVNTTF9hUFNLLAorKwlTU0xfQUVTMTI4LAorKwlTU0xfU0hBMjU2LAorKwlTU0xfVExTVjEsCisrCVNTTF9OT1RfRVhQfFNTTF9ISUdILAorKwlTU0xfSEFORFNIQUtFX01BQ19ERUZBVUxUfFRMUzFfUFJGX1NIQTI1NiwKKysJMTI4LAorKwkxMjgsCisrCX0sCisrCisrCS8qIENpcGhlciBDMDM4ICovCisrCXsKKysJMSwKKysJVExTMV9UWFRfRUNESEVfUFNLX1dJVEhfQUVTXzI1Nl9DQkNfU0hBMzg0LAorKwlUTFMxX0NLX0VDREhFX1BTS19XSVRIX0FFU18yNTZfQ0JDX1NIQTM4NCwKKysJU1NMX2tFRUNESCwKKysJU1NMX2FQU0ssCisrCVNTTF9BRVMyNTYsCisrCVNTTF9TSEEzODQsCisrCVNTTF9UTFNWMSwKKysJU1NMX05PVF9FWFB8U1NMX0hJR0gsCisrCVNTTF9IQU5EU0hBS0VfTUFDX0RFRkFVTFR8VExTMV9QUkZfU0hBMzg0LAorKwkyNTYsCisrCTI1NiwKKysJfSwKKysjZW5kaWYgLyogT1BFTlNTTF9OT19QU0sgKi8KKysKKyAjZW5kaWYgLyogT1BFTlNTTF9OT19FQ0RIICovCisgCisgCitAQCAtMzk3OSw3ICszOTk5LDcgQEAgU1NMX0NJUEhFUiAqc3NsM19jaG9vc2VfY2lwaGVyKFNTTCAqcywgU1RBQ0tfT0YoU1NMX0NJUEhFUikgKmNsbnQsCisgI2VuZGlmIC8qIE9QRU5TU0xfTk9fS1JCNSAqLworICNpZm5kZWYgT1BFTlNTTF9OT19QU0sKKyAJCS8qIHdpdGggUFNLIHRoZXJlIG11c3QgYmUgc2VydmVyIGNhbGxiYWNrIHNldCAqLworLQkJaWYgKChhbGdfayAmIFNTTF9rUFNLKSAmJiBzLT5wc2tfc2VydmVyX2NhbGxiYWNrID09IE5VTEwpCisrCQlpZiAoKGFsZ19hICYgU1NMX2FQU0spICYmIHMtPnBza19zZXJ2ZXJfY2FsbGJhY2sgPT0gTlVMTCkKKyAJCQljb250aW51ZTsKKyAjZW5kaWYgLyogT1BFTlNTTF9OT19QU0sgKi8KKyAKK2RpZmYgLS1naXQgYS9zc2wvczNfc3J2ci5jIGIvc3NsL3MzX3NydnIuYworaW5kZXggOTMzNWVkYS4uZmU3MDEyNCAxMDA2NDQKKy0tLSBhL3NzbC9zM19zcnZyLmMKKysrKyBiL3NzbC9zM19zcnZyLmMKK0BAIC0yMTcsNiArMjE3LDcgQEAgaW50IHNzbDNfYWNjZXB0KFNTTCAqcykKKyAJeworIAlCVUZfTUVNICpidWY7CisgCXVuc2lnbmVkIGxvbmcgYWxnX2ssVGltZT0odW5zaWduZWQgbG9uZyl0aW1lKE5VTEwpOworKwl1bnNpZ25lZCBsb25nIGFsZ19hOworIAl2b2lkICgqY2IpKGNvbnN0IFNTTCAqc3NsLGludCB0eXBlLGludCB2YWwpPU5VTEw7CisgCWludCByZXQ9IC0xOworIAlpbnQgbmV3X3N0YXRlLHN0YXRlLHNraXA9MDsKK0BAIC00MTgsOSArNDE5LDExIEBAIGludCBzc2wzX2FjY2VwdChTU0wgKnMpCisgCQljYXNlIFNTTDNfU1RfU1dfQ0VSVF9BOgorIAkJY2FzZSBTU0wzX1NUX1NXX0NFUlRfQjoKKyAJCQkvKiBDaGVjayBpZiBpdCBpcyBhbm9uIERIIG9yIGFub24gRUNESCwgKi8KKy0JCQkvKiBub3JtYWwgUFNLIG9yIEtSQjUgb3IgU1JQICovCisrCQkJLyogbm9uLVJTQSBQU0sgb3IgS1JCNSBvciBTUlAgKi8KKyAJCQlpZiAoIShzLT5zMy0+dG1wLm5ld19jaXBoZXItPmFsZ29yaXRobV9hdXRoICYgU1NMX2FOVUxMKQorLQkJCQkmJiAhKHMtPnMzLT50bXAubmV3X2NpcGhlci0+YWxnb3JpdGhtX21rZXkgJiBTU0xfa1BTSykKKysJCQkJLyogQW1vbmcgUFNLIGNpcGhlcnN1aXRlcyBvbmx5IFJTQV9QU0sgdXNlcyBzZXJ2ZXIgY2VydGlmaWNhdGUgKi8KKysJCQkJJiYgIShzLT5zMy0+dG1wLm5ld19jaXBoZXItPmFsZ29yaXRobV9hdXRoICYgU1NMX2FQU0sgJiYKKysJCQkJCSAhKHMtPnMzLT50bXAubmV3X2NpcGhlci0+YWxnb3JpdGhtX21rZXkgJiBTU0xfa1JTQSkpCisgCQkJCSYmICEocy0+czMtPnRtcC5uZXdfY2lwaGVyLT5hbGdvcml0aG1fYXV0aCAmIFNTTF9hS1JCNSkpCisgCQkJCXsKKyAJCQkJcmV0PXNzbDNfc2VuZF9zZXJ2ZXJfY2VydGlmaWNhdGUocyk7CitAQCAtNDQ5LDYgKzQ1Miw3IEBAIGludCBzc2wzX2FjY2VwdChTU0wgKnMpCisgCQljYXNlIFNTTDNfU1RfU1dfS0VZX0VYQ0hfQToKKyAJCWNhc2UgU1NMM19TVF9TV19LRVlfRVhDSF9COgorIAkJCWFsZ19rID0gcy0+czMtPnRtcC5uZXdfY2lwaGVyLT5hbGdvcml0aG1fbWtleTsKKysJCQlhbGdfYSA9IHMtPnMzLT50bXAubmV3X2NpcGhlci0+YWxnb3JpdGhtX2F1dGg7CisgCisgCQkJLyogY2xlYXIgdGhpcywgaXQgbWF5IGdldCByZXNldCBieQorIAkJCSAqIHNlbmRfc2VydmVyX2tleV9leGNoYW5nZSAqLworQEAgLTQ3OCwxMCArNDgyLDEyIEBAIGludCBzc2wzX2FjY2VwdChTU0wgKnMpCisgCQkJICogcHVibGljIGtleSBmb3Iga2V5IGV4Y2hhbmdlLgorIAkJCSAqLworIAkJCWlmIChzLT5zMy0+dG1wLnVzZV9yc2FfdG1wCistCQkJLyogUFNLOiBzZW5kIFNlcnZlcktleUV4Y2hhbmdlIGlmIFBTSyBpZGVudGl0eQorLQkJCSAqIGhpbnQgaWYgcHJvdmlkZWQgKi8KKysJCQkvKiBQU0s6IHNlbmQgU2VydmVyS2V5RXhjaGFuZ2UgaWYgZWl0aGVyOgorKwkJCSAqICAgLSBQU0sgaWRlbnRpdHkgaGludCBpcyBwcm92aWRlZCwgb3IKKysJCQkgKiAgIC0gdGhlIGtleSBleGNoYW5nZSBpcyBrRUVDREguCisrCQkJICovCisgI2lmbmRlZiBPUEVOU1NMX05PX1BTSworLQkJCSAgICB8fCAoKGFsZ19rICYgU1NMX2tQU0spICYmIHMtPmN0eC0+cHNrX2lkZW50aXR5X2hpbnQpCisrCQkJICAgIHx8ICgoYWxnX2EgJiBTU0xfYVBTSykgJiYgKChhbGdfayAmIFNTTF9rRUVDREgpIHx8IHMtPmN0eC0+cHNrX2lkZW50aXR5X2hpbnQpKQorICNlbmRpZgorICNpZm5kZWYgT1BFTlNTTF9OT19TUlAKKyAJCQkgICAgLyogU1JQOiBzZW5kIFNlcnZlcktleUV4Y2hhbmdlICovCitAQCAtMTY1OCw3ICsxNjY0LDggQEAgaW50IHNzbDNfc2VuZF9zZXJ2ZXJfa2V5X2V4Y2hhbmdlKFNTTCAqcykKKyAJY29uc3QgRVZQX01EICptZCA9IE5VTEw7CisgCXVuc2lnbmVkIGNoYXIgKnAsKmQ7CisgCWludCBhbCxpOworLQl1bnNpZ25lZCBsb25nIHR5cGU7CisrCXVuc2lnbmVkIGxvbmcgYWxnX2s7CisrCXVuc2lnbmVkIGxvbmcgYWxnX2E7CisgCWludCBuOworIAlDRVJUICpjZXJ0OworIAlCSUdOVU0gKnJbNF07CitAQCAtMTY2OSwxNSArMTY3NiwyNSBAQCBpbnQgc3NsM19zZW5kX3NlcnZlcl9rZXlfZXhjaGFuZ2UoU1NMICpzKQorIAlFVlBfTURfQ1RYX2luaXQoJm1kX2N0eCk7CisgCWlmIChzLT5zdGF0ZSA9PSBTU0wzX1NUX1NXX0tFWV9FWENIX0EpCisgCQl7CistCQl0eXBlPXMtPnMzLT50bXAubmV3X2NpcGhlci0+YWxnb3JpdGhtX21rZXk7CisrCQlhbGdfaz1zLT5zMy0+dG1wLm5ld19jaXBoZXItPmFsZ29yaXRobV9ta2V5OworKwkJYWxnX2E9cy0+czMtPnRtcC5uZXdfY2lwaGVyLT5hbGdvcml0aG1fYXV0aDsKKyAJCWNlcnQ9cy0+Y2VydDsKKyAKKyAJCWJ1Zj1zLT5pbml0X2J1ZjsKKyAKKyAJCXJbMF09clsxXT1yWzJdPXJbM109TlVMTDsKKyAJCW49MDsKKysjaWZuZGVmIE9QRU5TU0xfTk9fUFNLCisrCQlpZiAoYWxnX2EgJiBTU0xfYVBTSykKKysJCQl7CisrCQkJLyogc2l6ZSBmb3IgUFNLIGlkZW50aXR5IGhpbnQgKi8KKysJCQluKz0yOworKwkJCWlmIChzLT5jdHgtPnBza19pZGVudGl0eV9oaW50KQorKwkJCQluKz1zdHJsZW4ocy0+Y3R4LT5wc2tfaWRlbnRpdHlfaGludCk7CisrCQkJfQorKyNlbmRpZiAvKiAhT1BFTlNTTF9OT19QU0sgKi8KKyAjaWZuZGVmIE9QRU5TU0xfTk9fUlNBCistCQlpZiAodHlwZSAmIFNTTF9rUlNBKQorKwkJaWYgKGFsZ19rICYgU1NMX2tSU0EpCisgCQkJeworIAkJCXJzYT1jZXJ0LT5yc2FfdG1wOworIAkJCWlmICgocnNhID09IE5VTEwpICYmIChzLT5jZXJ0LT5yc2FfdG1wX2NiICE9IE5VTEwpKQorQEAgLTE3MDQsMTAgKzE3MjEsOSBAQCBpbnQgc3NsM19zZW5kX3NlcnZlcl9rZXlfZXhjaGFuZ2UoU1NMICpzKQorIAkJCXJbMV09cnNhLT5lOworIAkJCXMtPnMzLT50bXAudXNlX3JzYV90bXA9MTsKKyAJCQl9CistCQllbHNlCisgI2VuZGlmCisgI2lmbmRlZiBPUEVOU1NMX05PX0RICistCQkJaWYgKHR5cGUgJiBTU0xfa0VESCkKKysJCWVsc2UgaWYgKGFsZ19rICYgU1NMX2tFREgpCisgCQkJeworIAkJCWRocD1jZXJ0LT5kaF90bXA7CisgCQkJaWYgKChkaHAgPT0gTlVMTCkgJiYgKHMtPmNlcnQtPmRoX3RtcF9jYiAhPSBOVUxMKSkKK0BAIC0xNzYwLDEwICsxNzc2LDkgQEAgaW50IHNzbDNfc2VuZF9zZXJ2ZXJfa2V5X2V4Y2hhbmdlKFNTTCAqcykKKyAJCQlyWzFdPWRoLT5nOworIAkJCXJbMl09ZGgtPnB1Yl9rZXk7CisgCQkJfQorLQkJZWxzZSAKKyAjZW5kaWYKKyAjaWZuZGVmIE9QRU5TU0xfTk9fRUNESAorLQkJCWlmICh0eXBlICYgU1NMX2tFRUNESCkKKysJCWVsc2UgaWYgKGFsZ19rICYgU1NMX2tFRUNESCkKKyAJCQl7CisgCQkJY29uc3QgRUNfR1JPVVAgKmdyb3VwOworIAorQEAgLTE4NzYsNyArMTg5MSw3IEBAIGludCBzc2wzX3NlbmRfc2VydmVyX2tleV9leGNoYW5nZShTU0wgKnMpCisgCQkJICogdG8gZW5jb2RlIHRoZSBlbnRpcmUgU2VydmVyRUNESFBhcmFtcworIAkJCSAqIHN0cnVjdHVyZS4gCisgCQkJICovCistCQkJbiA9IDQgKyBlbmNvZGVkbGVuOworKwkJCW4gKz0gNCArIGVuY29kZWRsZW47CisgCisgCQkJLyogV2UnbGwgZ2VuZXJhdGUgdGhlIHNlcnZlcktleUV4Y2hhbmdlIG1lc3NhZ2UKKyAJCQkgKiBleHBsaWNpdGx5IHNvIHdlIGNhbiBzZXQgdGhlc2UgdG8gTlVMTHMKK0BAIC0xODg2LDE4ICsxOTAxLDkgQEAgaW50IHNzbDNfc2VuZF9zZXJ2ZXJfa2V5X2V4Y2hhbmdlKFNTTCAqcykKKyAJCQlyWzJdPU5VTEw7CisgCQkJclszXT1OVUxMOworIAkJCX0KKy0JCWVsc2UgCisgI2VuZGlmIC8qICFPUEVOU1NMX05PX0VDREggKi8KKy0jaWZuZGVmIE9QRU5TU0xfTk9fUFNLCistCQkJaWYgKHR5cGUgJiBTU0xfa1BTSykKKy0JCQkJeworLQkJCQkvKiByZXNlcnZlIHNpemUgZm9yIHJlY29yZCBsZW5ndGggYW5kIFBTSyBpZGVudGl0eSBoaW50Ki8KKy0JCQkJbis9MitzdHJsZW4ocy0+Y3R4LT5wc2tfaWRlbnRpdHlfaGludCk7CistCQkJCX0KKy0JCQllbHNlCistI2VuZGlmIC8qICFPUEVOU1NMX05PX1BTSyAqLworICNpZm5kZWYgT1BFTlNTTF9OT19TUlAKKy0JCWlmICh0eXBlICYgU1NMX2tTUlApCisrCQllbHNlIGlmIChhbGdfayAmIFNTTF9rU1JQKQorIAkJCXsKKyAJCQlpZiAoKHMtPnNycF9jdHguTiA9PSBOVUxMKSB8fAorIAkJCQkocy0+c3JwX2N0eC5nID09IE5VTEwpIHx8CitAQCAtMTkxMiw4ICsxOTE4LDggQEAgaW50IHNzbDNfc2VuZF9zZXJ2ZXJfa2V5X2V4Y2hhbmdlKFNTTCAqcykKKyAJCQlyWzJdPXMtPnNycF9jdHguczsKKyAJCQlyWzNdPXMtPnNycF9jdHguQjsKKyAJCQl9CistCQllbHNlIAorICNlbmRpZgorKwkJZWxzZSBpZiAoIShhbGdfayAmIFNTTF9rUFNLKSkKKyAJCQl7CisgCQkJYWw9U1NMX0FEX0hBTkRTSEFLRV9GQUlMVVJFOworIAkJCVNTTGVycihTU0xfRl9TU0wzX1NFTkRfU0VSVkVSX0tFWV9FWENIQU5HRSxTU0xfUl9VTktOT1dOX0tFWV9FWENIQU5HRV9UWVBFKTsKK0BAIC0xOTIzLDE1ICsxOTI5LDE2IEBAIGludCBzc2wzX3NlbmRfc2VydmVyX2tleV9leGNoYW5nZShTU0wgKnMpCisgCQkJeworIAkJCW5yW2ldPUJOX251bV9ieXRlcyhyW2ldKTsKKyAjaWZuZGVmIE9QRU5TU0xfTk9fU1JQCistCQkJaWYgKChpID09IDIpICYmICh0eXBlICYgU1NMX2tTUlApKQorKwkJCWlmICgoaSA9PSAyKSAmJiAoYWxnX2sgJiBTU0xfa1NSUCkpCisgCQkJCW4rPTErbnJbaV07CisgCQkJZWxzZQorICNlbmRpZgorIAkJCW4rPTIrbnJbaV07CisgCQkJfQorIAorLQkJaWYgKCEocy0+czMtPnRtcC5uZXdfY2lwaGVyLT5hbGdvcml0aG1fYXV0aCAmIFNTTF9hTlVMTCkKKy0JCQkmJiAhKHMtPnMzLT50bXAubmV3X2NpcGhlci0+YWxnb3JpdGhtX21rZXkgJiBTU0xfa1BTSykpCisrCQlpZiAoIShhbGdfYSAmIFNTTF9hTlVMTCkKKysJCQkvKiBBbW9uZyBQU0sgY2lwaGVyc3VpdGVzIG9ubHkgUlNBIHVzZXMgYSBjZXJ0aWZpY2F0ZSAqLworKwkJCSYmICEoKGFsZ19hICYgU1NMX2FQU0spICYmICEoYWxnX2sgJiBTU0xfa1JTQSkpKQorIAkJCXsKKyAJCQlpZiAoKHBrZXk9c3NsX2dldF9zaWduX3BrZXkocyxzLT5zMy0+dG1wLm5ld19jaXBoZXIsJm1kKSkKKyAJCQkJPT0gTlVMTCkKK0BAIC0xOTU4LDcgKzE5NjUsNyBAQCBpbnQgc3NsM19zZW5kX3NlcnZlcl9rZXlfZXhjaGFuZ2UoU1NMICpzKQorIAkJZm9yIChpPTA7IGkgPCA0ICYmIHJbaV0gIT0gTlVMTDsgaSsrKQorIAkJCXsKKyAjaWZuZGVmIE9QRU5TU0xfTk9fU1JQCistCQkJaWYgKChpID09IDIpICYmICh0eXBlICYgU1NMX2tTUlApKQorKwkJCWlmICgoaSA9PSAyKSAmJiAoYWxnX2sgJiBTU0xfa1NSUCkpCisgCQkJCXsKKyAJCQkJKnAgPSBucltpXTsKKyAJCQkJcCsrOworQEAgLTE5NzAsOCArMTk3NywzMiBAQCBpbnQgc3NsM19zZW5kX3NlcnZlcl9rZXlfZXhjaGFuZ2UoU1NMICpzKQorIAkJCXArPW5yW2ldOworIAkJCX0KKyAKKysvKiBOb3RlOiBFQ0RIRSBQU0sgY2lwaGVyc3VpdGVzIHVzZSBTU0xfa0VFQ0RIIGFuZCBTU0xfYVBTSy4KKysgKiBXaGVuIG9uZSBvZiB0aGVtIGlzIHVzZWQsIHRoZSBzZXJ2ZXIga2V5IGV4Y2hhbmdlIHJlY29yZCBuZWVkcyB0byBoYXZlIGJvdGgKKysgKiB0aGUgcHNrX2lkZW50aXR5X2hpbnQgYW5kIHRoZSBTZXJ2ZXJFQ0RIUGFyYW1zLiAqLworKyNpZm5kZWYgT1BFTlNTTF9OT19QU0sKKysJCWlmIChhbGdfYSAmIFNTTF9hUFNLKQorKwkJCXsKKysJCQlpZiAocy0+Y3R4LT5wc2tfaWRlbnRpdHlfaGludCkKKysJCQkJeworKwkJCQkvKiBjb3B5IFBTSyBpZGVudGl0eSBoaW50ICovCisrCQkJCXMybihzdHJsZW4ocy0+Y3R4LT5wc2tfaWRlbnRpdHlfaGludCksIHApOworKwkJCQlzdHJuY3B5KChjaGFyICopcCwgcy0+Y3R4LT5wc2tfaWRlbnRpdHlfaGludCwgc3RybGVuKHMtPmN0eC0+cHNrX2lkZW50aXR5X2hpbnQpKTsKKysJCQkJcCs9c3RybGVuKHMtPmN0eC0+cHNrX2lkZW50aXR5X2hpbnQpOworKwkJCQl9CisrCQkJZWxzZQorKwkJCQl7CisrCQkJCS8qIE5vIGlkZW50aXR5IGhpbnQgaXMgcHJvdmlkZWQuICovCisrCQkJCSpwID0gMDsKKysJCQkJcCArPSAxOworKwkJCQkqcCA9IDA7CisrCQkJCXAgKz0gMTsKKysJCQkJfQorKwkJCX0KKysjZW5kaWYgLyogT1BFTlNTTF9OT19QU0sgKi8KKysKKyAjaWZuZGVmIE9QRU5TU0xfTk9fRUNESAorLQkJaWYgKHR5cGUgJiBTU0xfa0VFQ0RIKSAKKysJCWlmIChhbGdfayAmIFNTTF9rRUVDREgpCisgCQkJeworIAkJCS8qIFhYWDogRm9yIG5vdywgd2Ugb25seSBzdXBwb3J0IG5hbWVkIChub3QgZ2VuZXJpYykgY3VydmVzLgorIAkJCSAqIEluIHRoaXMgc2l0dWF0aW9uLCB0aGUgc2VydmVyS2V5RXhjaGFuZ2UgbWVzc2FnZSBoYXM6CitAQCAtMTk5NCwxNyArMjAyNSw3IEBAIGludCBzc2wzX3NlbmRfc2VydmVyX2tleV9leGNoYW5nZShTU0wgKnMpCisgCQkJZW5jb2RlZFBvaW50ID0gTlVMTDsKKyAJCQlwICs9IGVuY29kZWRsZW47CisgCQkJfQorLSNlbmRpZgorLQorLSNpZm5kZWYgT1BFTlNTTF9OT19QU0sKKy0JCWlmICh0eXBlICYgU1NMX2tQU0spCistCQkJeworLQkJCS8qIGNvcHkgUFNLIGlkZW50aXR5IGhpbnQgKi8KKy0JCQlzMm4oc3RybGVuKHMtPmN0eC0+cHNrX2lkZW50aXR5X2hpbnQpLCBwKTsgCistCQkJc3RybmNweSgoY2hhciAqKXAsIHMtPmN0eC0+cHNrX2lkZW50aXR5X2hpbnQsIHN0cmxlbihzLT5jdHgtPnBza19pZGVudGl0eV9oaW50KSk7CistCQkJcCs9c3RybGVuKHMtPmN0eC0+cHNrX2lkZW50aXR5X2hpbnQpOworLQkJCX0KKy0jZW5kaWYKKysjZW5kaWYgLyogT1BFTlNTTF9OT19FQ0RIICovCisgCisgCQkvKiBub3QgYW5vbnltb3VzICovCisgCQlpZiAocGtleSAhPSBOVUxMKQorQEAgLTIwNDEsNyArMjA2Miw3IEBAIGludCBzc2wzX3NlbmRfc2VydmVyX2tleV9leGNoYW5nZShTU0wgKnMpCisgCQkJCW4rPXUrMjsKKyAJCQkJfQorIAkJCWVsc2UKKy0jZW5kaWYKKysjZW5kaWYgLyogT1BFTlNTTF9OT19SU0EgKi8KKyAJCQlpZiAobWQpCisgCQkJCXsKKyAJCQkJLyogRm9yIFRMUzEuMiBhbmQgbGF0ZXIgc2VuZCBzaWduYXR1cmUKK0BAIC0yMjE1LDYgKzIyMzYsNyBAQCBpbnQgc3NsM19nZXRfY2xpZW50X2tleV9leGNoYW5nZShTU0wgKnMpCisgCWludCBpLGFsLG9rOworIAlsb25nIG47CisgCXVuc2lnbmVkIGxvbmcgYWxnX2s7CisrCXVuc2lnbmVkIGxvbmcgYWxnX2E7CisgCXVuc2lnbmVkIGNoYXIgKnA7CisgI2lmbmRlZiBPUEVOU1NMX05PX1JTQQorIAlSU0EgKnJzYT1OVUxMOworQEAgLTIyMzIsNyArMjI1NCwxMSBAQCBpbnQgc3NsM19nZXRfY2xpZW50X2tleV9leGNoYW5nZShTU0wgKnMpCisgCUVDX0tFWSAqc3J2cl9lY2RoID0gTlVMTDsKKyAJRVZQX1BLRVkgKmNsbnRfcHViX3BrZXkgPSBOVUxMOworIAlFQ19QT0lOVCAqY2xudF9lY3BvaW50ID0gTlVMTDsKKy0JQk5fQ1RYICpibl9jdHggPSBOVUxMOyAKKysJQk5fQ1RYICpibl9jdHggPSBOVUxMOworKyNpZm5kZWYgT1BFTlNTTF9OT19QU0sKKysJdW5zaWduZWQgaW50IHBza19sZW4gPSAwOworKwl1bnNpZ25lZCBjaGFyIHBza1tQU0tfTUFYX1BTS19MRU5dOworKyNlbmRpZiAvKiBPUEVOU1NMX05PX1BTSyAqLworICNlbmRpZgorIAorIAluPXMtPm1ldGhvZC0+c3NsX2dldF9tZXNzYWdlKHMsCitAQCAtMjI0Niw3ICsyMjcyLDEwNiBAQCBpbnQgc3NsM19nZXRfY2xpZW50X2tleV9leGNoYW5nZShTU0wgKnMpCisgCXA9KHVuc2lnbmVkIGNoYXIgKilzLT5pbml0X21zZzsKKyAKKyAJYWxnX2s9cy0+czMtPnRtcC5uZXdfY2lwaGVyLT5hbGdvcml0aG1fbWtleTsKKysJYWxnX2E9cy0+czMtPnRtcC5uZXdfY2lwaGVyLT5hbGdvcml0aG1fYXV0aDsKKysKKysjaWZuZGVmIE9QRU5TU0xfTk9fUFNLCisrCWlmIChhbGdfYSAmIFNTTF9hUFNLKQorKwkJeworKwkJdW5zaWduZWQgY2hhciAqdCA9IE5VTEw7CisrCQl1bnNpZ25lZCBjaGFyIHByZV9tc1tQU0tfTUFYX1BTS19MRU4qMis0XTsKKysJCXVuc2lnbmVkIGludCBwcmVfbXNfbGVuID0gMDsKKysJCWludCBwc2tfZXJyID0gMTsKKysJCWNoYXIgdG1wX2lkW1BTS19NQVhfSURFTlRJVFlfTEVOKzFdOworKworKwkJYWw9U1NMX0FEX0hBTkRTSEFLRV9GQUlMVVJFOworKworKwkJbjJzKHAsIGkpOworKwkJaWYgKG4gIT0gaSsyICYmICEoYWxnX2sgJiBTU0xfa0VFQ0RIKSkKKysJCQl7CisrCQkJU1NMZXJyKFNTTF9GX1NTTDNfR0VUX0NMSUVOVF9LRVlfRVhDSEFOR0UsCisrCQkJCVNTTF9SX0xFTkdUSF9NSVNNQVRDSCk7CisrCQkJZ290byBwc2tfZXJyOworKwkJCX0KKysJCWlmIChpID4gUFNLX01BWF9JREVOVElUWV9MRU4pCisrCQkJeworKwkJCVNTTGVycihTU0xfRl9TU0wzX0dFVF9DTElFTlRfS0VZX0VYQ0hBTkdFLAorKwkJCQlTU0xfUl9EQVRBX0xFTkdUSF9UT09fTE9ORyk7CisrCQkJZ290byBwc2tfZXJyOworKwkJCX0KKysJCWlmIChzLT5wc2tfc2VydmVyX2NhbGxiYWNrID09IE5VTEwpCisrCQkJeworKwkJCVNTTGVycihTU0xfRl9TU0wzX0dFVF9DTElFTlRfS0VZX0VYQ0hBTkdFLAorKwkJCSAgICAgICBTU0xfUl9QU0tfTk9fU0VSVkVSX0NCKTsKKysJCQlnb3RvIHBza19lcnI7CisrCQkJfQorKworKwkJLyogQ3JlYXRlIGd1YXJhbnRlZWQgTlVMLXRlcm1pbmF0ZWQgaWRlbnRpdHkKKysJCSAqIHN0cmluZyBmb3IgdGhlIGNhbGxiYWNrICovCisrCQltZW1jcHkodG1wX2lkLCBwLCBpKTsKKysJCW1lbXNldCh0bXBfaWQraSwgMCwgUFNLX01BWF9JREVOVElUWV9MRU4rMS1pKTsKKysJCXBza19sZW4gPSBzLT5wc2tfc2VydmVyX2NhbGxiYWNrKHMsIHRtcF9pZCwgcHNrLCBzaXplb2YocHNrKSk7CisgCisrCQlpZiAocHNrX2xlbiA+IFBTS19NQVhfUFNLX0xFTikKKysJCQl7CisrCQkJU1NMZXJyKFNTTF9GX1NTTDNfR0VUX0NMSUVOVF9LRVlfRVhDSEFOR0UsCisrCQkJCUVSUl9SX0lOVEVSTkFMX0VSUk9SKTsKKysJCQlnb3RvIHBza19lcnI7CisrCQkJfQorKwkJZWxzZSBpZiAocHNrX2xlbiA9PSAwKQorKwkJCXsKKysJCQkvKiBQU0sgcmVsYXRlZCB0byB0aGUgZ2l2ZW4gaWRlbnRpdHkgbm90IGZvdW5kICovCisrCQkJU1NMZXJyKFNTTF9GX1NTTDNfR0VUX0NMSUVOVF9LRVlfRVhDSEFOR0UsCisrCQkJICAgICAgIFNTTF9SX1BTS19JREVOVElUWV9OT1RfRk9VTkQpOworKwkJCWFsPVNTTF9BRF9VTktOT1dOX1BTS19JREVOVElUWTsKKysJCQlnb3RvIHBza19lcnI7CisrCQkJfQorKwkJaWYgKCEoYWxnX2sgJiBTU0xfa0VFQ0RIKSkKKysJCQl7CisrCQkJLyogQ3JlYXRlIHRoZSBzaGFyZWQgc2VjcmV0IG5vdyBpZiB3ZSdyZSBub3QgdXNpbmcgRUNESEUtUFNLLiovCisrCQkJcHJlX21zX2xlbj0yK3Bza19sZW4rMitwc2tfbGVuOworKwkJCXQgPSBwcmVfbXM7CisrCQkJczJuKHBza19sZW4sIHQpOworKwkJCW1lbXNldCh0LCAwLCBwc2tfbGVuKTsKKysJCQl0Kz1wc2tfbGVuOworKwkJCXMybihwc2tfbGVuLCB0KTsKKysJCQltZW1jcHkodCwgcHNrLCBwc2tfbGVuKTsKKysKKysJCQlzLT5zZXNzaW9uLT5tYXN0ZXJfa2V5X2xlbmd0aD0KKysJCQkJcy0+bWV0aG9kLT5zc2wzX2VuYy0+Z2VuZXJhdGVfbWFzdGVyX3NlY3JldChzLAorKwkJCQkJcy0+c2Vzc2lvbi0+bWFzdGVyX2tleSwgcHJlX21zLCBwcmVfbXNfbGVuKTsKKysJCQl9CisrCQlpZiAocy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5ICE9IE5VTEwpCisrCQkJT1BFTlNTTF9mcmVlKHMtPnNlc3Npb24tPnBza19pZGVudGl0eSk7CisrCQlzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHkgPSBCVUZfc3RyZHVwKHRtcF9pZCk7CisrCQlPUEVOU1NMX2NsZWFuc2UodG1wX2lkLCBQU0tfTUFYX0lERU5USVRZX0xFTisxKTsKKysJCWlmIChzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHkgPT0gTlVMTCkKKysJCQl7CisrCQkJU1NMZXJyKFNTTF9GX1NTTDNfR0VUX0NMSUVOVF9LRVlfRVhDSEFOR0UsCisrCQkJCUVSUl9SX01BTExPQ19GQUlMVVJFKTsKKysJCQlnb3RvIHBza19lcnI7CisrCQkJfQorKworKwkJaWYgKHMtPnNlc3Npb24tPnBza19pZGVudGl0eV9oaW50ICE9IE5VTEwpCisrCQkJT1BFTlNTTF9mcmVlKHMtPnNlc3Npb24tPnBza19pZGVudGl0eV9oaW50KTsKKysJCXMtPnNlc3Npb24tPnBza19pZGVudGl0eV9oaW50ID0gQlVGX3N0cmR1cChzLT5jdHgtPnBza19pZGVudGl0eV9oaW50KTsKKysJCWlmIChzLT5jdHgtPnBza19pZGVudGl0eV9oaW50ICE9IE5VTEwgJiYKKysJCQlzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHlfaGludCA9PSBOVUxMKQorKwkJCXsKKysJCQlTU0xlcnIoU1NMX0ZfU1NMM19HRVRfQ0xJRU5UX0tFWV9FWENIQU5HRSwKKysJCQkJRVJSX1JfTUFMTE9DX0ZBSUxVUkUpOworKwkJCWdvdG8gcHNrX2VycjsKKysJCQl9CisrCisrCQlwICs9IGk7CisrCQluIC09IChpICsgMik7CisrCQlwc2tfZXJyID0gMDsKKysJcHNrX2VycjoKKysJCU9QRU5TU0xfY2xlYW5zZShwcmVfbXMsIHNpemVvZihwcmVfbXMpKTsKKysJCWlmIChwc2tfZXJyICE9IDApCisrCQkJZ290byBmX2VycjsKKysJCX0KKysjZW5kaWYgLyogT1BFTlNTTF9OT19QU0sgKi8KKysJaWYgKDApIHt9CisgI2lmbmRlZiBPUEVOU1NMX05PX1JTQQorIAlpZiAoYWxnX2sgJiBTU0xfa1JTQSkKKyAJCXsKK0BAIC0yNDEwLDEwICsyNTM1LDkgQEAgaW50IHNzbDNfZ2V0X2NsaWVudF9rZXlfZXhjaGFuZ2UoU1NMICpzKQorIAkJCQlwLHNpemVvZihyYW5kX3ByZW1hc3Rlcl9zZWNyZXQpKTsKKyAJCU9QRU5TU0xfY2xlYW5zZShwLHNpemVvZihyYW5kX3ByZW1hc3Rlcl9zZWNyZXQpKTsKKyAJCX0KKy0JZWxzZQorICNlbmRpZgorICNpZm5kZWYgT1BFTlNTTF9OT19ESAorLQkJaWYgKGFsZ19rICYgKFNTTF9rRURIfFNTTF9rREhyfFNTTF9rREhkKSkKKysJZWxzZSBpZiAoYWxnX2sgJiAoU1NMX2tFREh8U1NMX2tESHJ8U1NMX2tESGQpKQorIAkJeworIAkJbjJzKHAsaSk7CisgCQlpZiAobiAhPSBpKzIpCitAQCAtMjQ3NCwxMCArMjU5OCw5IEBAIGludCBzc2wzX2dldF9jbGllbnRfa2V5X2V4Y2hhbmdlKFNTTCAqcykKKyAJCQkJcy0+c2Vzc2lvbi0+bWFzdGVyX2tleSxwLGkpOworIAkJT1BFTlNTTF9jbGVhbnNlKHAsaSk7CisgCQl9CistCWVsc2UKKyAjZW5kaWYKKyAjaWZuZGVmIE9QRU5TU0xfTk9fS1JCNQorLQlpZiAoYWxnX2sgJiBTU0xfa0tSQjUpCisrCWVsc2UgaWYgKGFsZ19rICYgU1NMX2tLUkI1KQorIAkJeworIAkJa3JiNV9lcnJvcl9jb2RlCQlrcmI1cmM7CisgCQlrcmI1X2RhdGEJCWVuY190aWNrZXQ7CitAQCAtMjY2NiwxNyArMjc4OSwyMCBAQCBpbnQgc3NsM19nZXRfY2xpZW50X2tleV9leGNoYW5nZShTU0wgKnMpCisgCQkqKiAgaWYgKHMtPmtzc2xfY3R4KSAgcy0+a3NzbF9jdHggPSBOVUxMOworIAkJKi8KKyAJCX0KKy0JZWxzZQorICNlbmRpZgkvKiBPUEVOU1NMX05PX0tSQjUgKi8KKy0KKyAjaWZuZGVmIE9QRU5TU0xfTk9fRUNESAorLQkJaWYgKGFsZ19rICYgKFNTTF9rRUVDREh8U1NMX2tFQ0RIcnxTU0xfa0VDREhlKSkKKysJZWxzZSBpZiAoYWxnX2sgJiAoU1NMX2tFRUNESHxTU0xfa0VDREhyfFNTTF9rRUNESGUpKQorIAkJeworIAkJaW50IHJldCA9IDE7CisgCQlpbnQgZmllbGRfc2l6ZSA9IDA7CisgCQljb25zdCBFQ19LRVkgICAqdGtleTsKKyAJCWNvbnN0IEVDX0dST1VQICpncm91cDsKKyAJCWNvbnN0IEJJR05VTSAqcHJpdl9rZXk7CisrI2lmbmRlZiBPUEVOU1NMX05PX1BTSworKwkJdW5zaWduZWQgY2hhciAqcHJlX21zOworKwkJdW5zaWduZWQgaW50IHByZV9tc19sZW47CisrCQl1bnNpZ25lZCBjaGFyICp0OworKyNlbmRpZiAvKiBPUEVOU1NMX05PX1BTSyAqLworIAorIAkJLyogaW5pdGlhbGl6ZSBzdHJ1Y3R1cmVzIGZvciBzZXJ2ZXIncyBFQ0RIIGtleSBwYWlyICovCisgCQlpZiAoKHNydnJfZWNkaCA9IEVDX0tFWV9uZXcoKSkgPT0gTlVMTCkgCitAQCAtMjc3Miw3ICsyODk4LDcgQEAgaW50IHNzbDNfZ2V0X2NsaWVudF9rZXlfZXhjaGFuZ2UoU1NMICpzKQorIAkJCQl9CisgCisgCQkJLyogR2V0IGVuY29kZWQgcG9pbnQgbGVuZ3RoICovCistCQkJaSA9ICpwOyAKKysJCQlpID0gKnA7CisgCQkJcCArPSAxOworIAkJCWlmIChuICE9IDEgKyBpKQorIAkJCQl7CitAQCAtMjgxNCwyMTQgKzI5NDAsMTQ1IEBAIGludCBzc2wzX2dldF9jbGllbnRfa2V5X2V4Y2hhbmdlKFNTTCAqcykKKyAJCUVDX0tFWV9mcmVlKHNydnJfZWNkaCk7CisgCQlCTl9DVFhfZnJlZShibl9jdHgpOworIAkJRUNfS0VZX2ZyZWUocy0+czMtPnRtcC5lY2RoKTsKKy0JCXMtPnMzLT50bXAuZWNkaCA9IE5VTEw7IAorKwkJcy0+czMtPnRtcC5lY2RoID0gTlVMTDsKKyAKKy0JCS8qIENvbXB1dGUgdGhlIG1hc3RlciBzZWNyZXQgKi8KKy0JCXMtPnNlc3Npb24tPm1hc3Rlcl9rZXlfbGVuZ3RoID0gcy0+bWV0aG9kLT5zc2wzX2VuYy0+IFwKKy0JCSAgICBnZW5lcmF0ZV9tYXN0ZXJfc2VjcmV0KHMsIHMtPnNlc3Npb24tPm1hc3Rlcl9rZXksIHAsIGkpOworLQkJCistCQlPUEVOU1NMX2NsZWFuc2UocCwgaSk7CistCQlyZXR1cm4gKHJldCk7CistCQl9CistCWVsc2UKKy0jZW5kaWYKKyAjaWZuZGVmIE9QRU5TU0xfTk9fUFNLCistCQlpZiAoYWxnX2sgJiBTU0xfa1BTSykKKysJCS8qIEVDREhFIFBTSyBjaXBoZXJzdWl0ZXMgZnJvbSBSRkMgNTQ4OSAqLworKwkgICAgaWYgKChhbGdfYSAmIFNTTF9hUFNLKSAmJiBwc2tfbGVuICE9IDApCisgCQkJeworLQkJCXVuc2lnbmVkIGNoYXIgKnQgPSBOVUxMOworLQkJCXVuc2lnbmVkIGNoYXIgcHNrX29yX3ByZV9tc1tQU0tfTUFYX1BTS19MRU4qMis0XTsKKy0JCQl1bnNpZ25lZCBpbnQgcHJlX21zX2xlbiA9IDAsIHBza19sZW4gPSAwOworLQkJCWludCBwc2tfZXJyID0gMTsKKy0JCQljaGFyIHRtcF9pZFtQU0tfTUFYX0lERU5USVRZX0xFTisxXTsKKy0KKy0JCQlhbD1TU0xfQURfSEFORFNIQUtFX0ZBSUxVUkU7CistCistCQkJbjJzKHAsaSk7CistCQkJaWYgKG4gIT0gaSsyKQorLQkJCQl7CistCQkJCVNTTGVycihTU0xfRl9TU0wzX0dFVF9DTElFTlRfS0VZX0VYQ0hBTkdFLAorLQkJCQkJU1NMX1JfTEVOR1RIX01JU01BVENIKTsKKy0JCQkJZ290byBwc2tfZXJyOworLQkJCQl9CistCQkJaWYgKGkgPiBQU0tfTUFYX0lERU5USVRZX0xFTikKKy0JCQkJeworLQkJCQlTU0xlcnIoU1NMX0ZfU1NMM19HRVRfQ0xJRU5UX0tFWV9FWENIQU5HRSwKKy0JCQkJCVNTTF9SX0RBVEFfTEVOR1RIX1RPT19MT05HKTsKKy0JCQkJZ290byBwc2tfZXJyOworLQkJCQl9CistCQkJaWYgKHMtPnBza19zZXJ2ZXJfY2FsbGJhY2sgPT0gTlVMTCkKKy0JCQkJeworLQkJCQlTU0xlcnIoU1NMX0ZfU1NMM19HRVRfQ0xJRU5UX0tFWV9FWENIQU5HRSwKKy0JCQkJICAgICAgIFNTTF9SX1BTS19OT19TRVJWRVJfQ0IpOworLQkJCQlnb3RvIHBza19lcnI7CistCQkJCX0KKy0KKy0JCQkvKiBDcmVhdGUgZ3VhcmFudGVlZCBOVUxMLXRlcm1pbmF0ZWQgaWRlbnRpdHkKKy0JCQkgKiBzdHJpbmcgZm9yIHRoZSBjYWxsYmFjayAqLworLQkJCW1lbWNweSh0bXBfaWQsIHAsIGkpOworLQkJCW1lbXNldCh0bXBfaWQraSwgMCwgUFNLX01BWF9JREVOVElUWV9MRU4rMS1pKTsKKy0JCQlwc2tfbGVuID0gcy0+cHNrX3NlcnZlcl9jYWxsYmFjayhzLCB0bXBfaWQsCistCQkJCXBza19vcl9wcmVfbXMsIHNpemVvZihwc2tfb3JfcHJlX21zKSk7CistCQkJT1BFTlNTTF9jbGVhbnNlKHRtcF9pZCwgUFNLX01BWF9JREVOVElUWV9MRU4rMSk7CistCistCQkJaWYgKHBza19sZW4gPiBQU0tfTUFYX1BTS19MRU4pCistCQkJCXsKKy0JCQkJU1NMZXJyKFNTTF9GX1NTTDNfR0VUX0NMSUVOVF9LRVlfRVhDSEFOR0UsCistCQkJCQlFUlJfUl9JTlRFUk5BTF9FUlJPUik7CistCQkJCWdvdG8gcHNrX2VycjsKKy0JCQkJfQorLQkJCWVsc2UgaWYgKHBza19sZW4gPT0gMCkKKy0JCQkJeworLQkJCQkvKiBQU0sgcmVsYXRlZCB0byB0aGUgZ2l2ZW4gaWRlbnRpdHkgbm90IGZvdW5kICovCistCQkJCVNTTGVycihTU0xfRl9TU0wzX0dFVF9DTElFTlRfS0VZX0VYQ0hBTkdFLAorLQkJCQkgICAgICAgU1NMX1JfUFNLX0lERU5USVRZX05PVF9GT1VORCk7CistCQkJCWFsPVNTTF9BRF9VTktOT1dOX1BTS19JREVOVElUWTsKKy0JCQkJZ290byBwc2tfZXJyOworLQkJCQl9CistCistCQkJLyogY3JlYXRlIFBTSyBwcmVfbWFzdGVyX3NlY3JldCAqLworLQkJCXByZV9tc19sZW49Mitwc2tfbGVuKzIrcHNrX2xlbjsKKy0JCQl0ID0gcHNrX29yX3ByZV9tczsKKy0JCQltZW1tb3ZlKHBza19vcl9wcmVfbXMrcHNrX2xlbis0LCBwc2tfb3JfcHJlX21zLCBwc2tfbGVuKTsKKy0JCQlzMm4ocHNrX2xlbiwgdCk7CistCQkJbWVtc2V0KHQsIDAsIHBza19sZW4pOworLQkJCXQrPXBza19sZW47CistCQkJczJuKHBza19sZW4sIHQpOworLQorLQkJCWlmIChzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHkgIT0gTlVMTCkKKy0JCQkJT1BFTlNTTF9mcmVlKHMtPnNlc3Npb24tPnBza19pZGVudGl0eSk7CistCQkJcy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5ID0gQlVGX3N0cmR1cCgoY2hhciAqKXApOworLQkJCWlmIChzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHkgPT0gTlVMTCkKKy0JCQkJeworLQkJCQlTU0xlcnIoU1NMX0ZfU1NMM19HRVRfQ0xJRU5UX0tFWV9FWENIQU5HRSwKKy0JCQkJCUVSUl9SX01BTExPQ19GQUlMVVJFKTsKKy0JCQkJZ290byBwc2tfZXJyOworLQkJCQl9CistCistCQkJaWYgKHMtPnNlc3Npb24tPnBza19pZGVudGl0eV9oaW50ICE9IE5VTEwpCistCQkJCU9QRU5TU0xfZnJlZShzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHlfaGludCk7CistCQkJcy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5X2hpbnQgPSBCVUZfc3RyZHVwKHMtPmN0eC0+cHNrX2lkZW50aXR5X2hpbnQpOworLQkJCWlmIChzLT5jdHgtPnBza19pZGVudGl0eV9oaW50ICE9IE5VTEwgJiYKKy0JCQkJcy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5X2hpbnQgPT0gTlVMTCkKKysJCQlwcmVfbXNfbGVuID0gMitwc2tfbGVuKzIraTsKKysJCQlwcmVfbXMgPSBPUEVOU1NMX21hbGxvYyhwcmVfbXNfbGVuKTsKKysJCQlpZiAocHJlX21zID09IE5VTEwpCisgCQkJCXsKKyAJCQkJU1NMZXJyKFNTTF9GX1NTTDNfR0VUX0NMSUVOVF9LRVlfRVhDSEFOR0UsCisgCQkJCQlFUlJfUl9NQUxMT0NfRkFJTFVSRSk7CistCQkJCWdvdG8gcHNrX2VycjsKKysJCQkJZ290byBlcnI7CisgCQkJCX0KKy0KKy0JCQlzLT5zZXNzaW9uLT5tYXN0ZXJfa2V5X2xlbmd0aD0KKy0JCQkJcy0+bWV0aG9kLT5zc2wzX2VuYy0+Z2VuZXJhdGVfbWFzdGVyX3NlY3JldChzLAorLQkJCQkJcy0+c2Vzc2lvbi0+bWFzdGVyX2tleSwgcHNrX29yX3ByZV9tcywgcHJlX21zX2xlbik7CistCQkJcHNrX2VyciA9IDA7CistCQlwc2tfZXJyOgorLQkJCU9QRU5TU0xfY2xlYW5zZShwc2tfb3JfcHJlX21zLCBzaXplb2YocHNrX29yX3ByZV9tcykpOworLQkJCWlmIChwc2tfZXJyICE9IDApCistCQkJCWdvdG8gZl9lcnI7CisrCQkJbWVtc2V0KHByZV9tcywgMCwgcHJlX21zX2xlbik7CisrCQkJdCA9IHByZV9tczsKKysJCQlzMm4ocHNrX2xlbiwgdCk7CisrCQkJbWVtY3B5KHQsIHBzaywgcHNrX2xlbik7CisrCQkJdCArPSBwc2tfbGVuOworKwkJCXMybihpLCB0KTsKKysJCQltZW1jcHkodCwgcCwgaSk7CisrCQkJcy0+c2Vzc2lvbi0+bWFzdGVyX2tleV9sZW5ndGggPSBzLT5tZXRob2QtPnNzbDNfZW5jIFwKKysJCQkJLT4gZ2VuZXJhdGVfbWFzdGVyX3NlY3JldChzLAorKwkJCQkJcy0+c2Vzc2lvbi0+bWFzdGVyX2tleSwgcHJlX21zLCBwcmVfbXNfbGVuKTsKKysJCQlPUEVOU1NMX2NsZWFuc2UocHJlX21zLCBwcmVfbXNfbGVuKTsKKysJCQlPUEVOU1NMX2ZyZWUocHJlX21zKTsKKyAJCQl9CistCQllbHNlCistI2VuZGlmCistI2lmbmRlZiBPUEVOU1NMX05PX1NSUAorLQkJaWYgKGFsZ19rICYgU1NMX2tTUlApCisrI2VuZGlmIC8qIE9QRU5TU0xfTk9fUFNLICovCisrCQlpZiAoIShhbGdfYSAmIFNTTF9hUFNLKSkKKyAJCQl7CistCQkJaW50IHBhcmFtX2xlbjsKKy0KKy0JCQluMnMocCxpKTsKKy0JCQlwYXJhbV9sZW49aSsyOworLQkJCWlmIChwYXJhbV9sZW4gPiBuKQorLQkJCQl7CistCQkJCWFsPVNTTF9BRF9ERUNPREVfRVJST1I7CistCQkJCVNTTGVycihTU0xfRl9TU0wzX0dFVF9DTElFTlRfS0VZX0VYQ0hBTkdFLFNTTF9SX0JBRF9TUlBfQV9MRU5HVEgpOworLQkJCQlnb3RvIGZfZXJyOworLQkJCQl9CistCQkJaWYgKCEocy0+c3JwX2N0eC5BPUJOX2JpbjJibihwLGksTlVMTCkpKQorLQkJCQl7CistCQkJCVNTTGVycihTU0xfRl9TU0wzX0dFVF9DTElFTlRfS0VZX0VYQ0hBTkdFLEVSUl9SX0JOX0xJQik7CistCQkJCWdvdG8gZXJyOworLQkJCQl9CistCQkJaWYgKHMtPnNlc3Npb24tPnNycF91c2VybmFtZSAhPSBOVUxMKQorLQkJCQlPUEVOU1NMX2ZyZWUocy0+c2Vzc2lvbi0+c3JwX3VzZXJuYW1lKTsKKy0JCQlzLT5zZXNzaW9uLT5zcnBfdXNlcm5hbWUgPSBCVUZfc3RyZHVwKHMtPnNycF9jdHgubG9naW4pOworLQkJCWlmIChzLT5zZXNzaW9uLT5zcnBfdXNlcm5hbWUgPT0gTlVMTCkKKy0JCQkJeworLQkJCQlTU0xlcnIoU1NMX0ZfU1NMM19HRVRfQ0xJRU5UX0tFWV9FWENIQU5HRSwKKy0JCQkJCUVSUl9SX01BTExPQ19GQUlMVVJFKTsKKy0JCQkJZ290byBlcnI7CistCQkJCX0KKysJCQkvKiBDb21wdXRlIHRoZSBtYXN0ZXIgc2VjcmV0ICovCisrCQkJcy0+c2Vzc2lvbi0+bWFzdGVyX2tleV9sZW5ndGggPSBzLT5tZXRob2QtPnNzbDNfZW5jIFwKKysJCQkJLT4gZ2VuZXJhdGVfbWFzdGVyX3NlY3JldChzLAorKwkJCQkJcy0+c2Vzc2lvbi0+bWFzdGVyX2tleSwgcCwgaSk7CisrCQkJfQorIAorLQkJCWlmICgocy0+c2Vzc2lvbi0+bWFzdGVyX2tleV9sZW5ndGggPSBTUlBfZ2VuZXJhdGVfc2VydmVyX21hc3Rlcl9zZWNyZXQocyxzLT5zZXNzaW9uLT5tYXN0ZXJfa2V5KSk8MCkKKy0JCQkJeworLQkJCQlTU0xlcnIoU1NMX0ZfU1NMM19HRVRfQ0xJRU5UX0tFWV9FWENIQU5HRSxFUlJfUl9JTlRFUk5BTF9FUlJPUik7CistCQkJCWdvdG8gZXJyOworLQkJCQl9CisrCQlPUEVOU1NMX2NsZWFuc2UocCwgaSk7CisrCQl9CisrI2VuZGlmCisrI2lmbmRlZiBPUEVOU1NMX05PX1NSUAorKwllbHNlIGlmIChhbGdfayAmIFNTTF9rU1JQKQorKwkJeworKwkJaW50IHBhcmFtX2xlbjsKKyAKKy0JCQlwKz1pOworKwkJbjJzKHAsaSk7CisrCQlwYXJhbV9sZW49aSsyOworKwkJaWYgKHBhcmFtX2xlbiA+IG4pCisrCQkJeworKwkJCWFsPVNTTF9BRF9ERUNPREVfRVJST1I7CisrCQkJU1NMZXJyKFNTTF9GX1NTTDNfR0VUX0NMSUVOVF9LRVlfRVhDSEFOR0UsU1NMX1JfQkFEX1NSUF9BX0xFTkdUSCk7CisrCQkJZ290byBmX2VycjsKKysJCQl9CisrCQlpZiAoIShzLT5zcnBfY3R4LkE9Qk5fYmluMmJuKHAsaSxOVUxMKSkpCisrCQkJeworKwkJCVNTTGVycihTU0xfRl9TU0wzX0dFVF9DTElFTlRfS0VZX0VYQ0hBTkdFLEVSUl9SX0JOX0xJQik7CisrCQkJZ290byBlcnI7CisrCQkJfQorKwkJaWYgKHMtPnNlc3Npb24tPnNycF91c2VybmFtZSAhPSBOVUxMKQorKwkJCU9QRU5TU0xfZnJlZShzLT5zZXNzaW9uLT5zcnBfdXNlcm5hbWUpOworKwkJcy0+c2Vzc2lvbi0+c3JwX3VzZXJuYW1lID0gQlVGX3N0cmR1cChzLT5zcnBfY3R4LmxvZ2luKTsKKysJCWlmIChzLT5zZXNzaW9uLT5zcnBfdXNlcm5hbWUgPT0gTlVMTCkKKysJCQl7CisrCQkJU1NMZXJyKFNTTF9GX1NTTDNfR0VUX0NMSUVOVF9LRVlfRVhDSEFOR0UsCisrCQkJCUVSUl9SX01BTExPQ19GQUlMVVJFKTsKKysJCQlnb3RvIGVycjsKKyAJCQl9CistCQllbHNlCistI2VuZGlmCS8qIE9QRU5TU0xfTk9fU1JQICovCistCQlpZiAoYWxnX2sgJiBTU0xfa0dPU1QpIAorLQkJCXsKKy0JCQlpbnQgcmV0ID0gMDsKKy0JCQlFVlBfUEtFWV9DVFggKnBrZXlfY3R4OworLQkJCUVWUF9QS0VZICpjbGllbnRfcHViX3BrZXkgPSBOVUxMLCAqcGsgPSBOVUxMOworLQkJCXVuc2lnbmVkIGNoYXIgcHJlbWFzdGVyX3NlY3JldFszMl0sICpzdGFydDsKKy0JCQlzaXplX3Qgb3V0bGVuPTMyLCBpbmxlbjsKKy0JCQl1bnNpZ25lZCBsb25nIGFsZ19hOworLQkJCWludCBUdGFnLCBUY2xhc3M7CistCQkJbG9uZyBUbGVuOworLQorLQkJCS8qIEdldCBvdXIgY2VydGlmaWNhdGUgcHJpdmF0ZSBrZXkqLworLQkJCWFsZ19hID0gcy0+czMtPnRtcC5uZXdfY2lwaGVyLT5hbGdvcml0aG1fYXV0aDsKKy0JCQlpZiAoYWxnX2EgJiBTU0xfYUdPU1Q5NCkKKy0JCQkJcGsgPSBzLT5jZXJ0LT5wa2V5c1tTU0xfUEtFWV9HT1NUOTRdLnByaXZhdGVrZXk7CistCQkJZWxzZSBpZiAoYWxnX2EgJiBTU0xfYUdPU1QwMSkKKy0JCQkJcGsgPSBzLT5jZXJ0LT5wa2V5c1tTU0xfUEtFWV9HT1NUMDFdLnByaXZhdGVrZXk7CisgCistCQkJcGtleV9jdHggPSBFVlBfUEtFWV9DVFhfbmV3KHBrLE5VTEwpOworLQkJCUVWUF9QS0VZX2RlY3J5cHRfaW5pdChwa2V5X2N0eCk7CistCQkJLyogSWYgY2xpZW50IGNlcnRpZmljYXRlIGlzIHByZXNlbnQgYW5kIGlzIG9mIHRoZSBzYW1lIHR5cGUsIG1heWJlCistCQkJICogdXNlIGl0IGZvciBrZXkgZXhjaGFuZ2UuICBEb24ndCBtaW5kIGVycm9ycyBmcm9tCistCQkJICogRVZQX1BLRVlfZGVyaXZlX3NldF9wZWVyLCBiZWNhdXNlIGl0IGlzIGNvbXBsZXRlbHkgdmFsaWQgdG8gdXNlCistCQkJICogYSBjbGllbnQgY2VydGlmaWNhdGUgZm9yIGF1dGhvcml6YXRpb24gb25seS4gKi8KKy0JCQljbGllbnRfcHViX3BrZXkgPSBYNTA5X2dldF9wdWJrZXkocy0+c2Vzc2lvbi0+cGVlcik7CistCQkJaWYgKGNsaWVudF9wdWJfcGtleSkKKy0JCQkJeworLQkJCQlpZiAoRVZQX1BLRVlfZGVyaXZlX3NldF9wZWVyKHBrZXlfY3R4LCBjbGllbnRfcHViX3BrZXkpIDw9IDApCistCQkJCQlFUlJfY2xlYXJfZXJyb3IoKTsKKy0JCQkJfQorLQkJCS8qIERlY3J5cHQgc2Vzc2lvbiBrZXkgKi8KKy0JCQlpZiAoQVNOMV9nZXRfb2JqZWN0KChjb25zdCB1bnNpZ25lZCBjaGFyICoqKSZwLCAmVGxlbiwgJlR0YWcsICZUY2xhc3MsIG4pICE9IFZfQVNOMV9DT05TVFJVQ1RFRCB8fCAKKy0JCQkJVHRhZyAhPSBWX0FTTjFfU0VRVUVOQ0UgfHwKKy0JCQkgCVRjbGFzcyAhPSBWX0FTTjFfVU5JVkVSU0FMKSAKKy0JCQkJeworLQkJCQlTU0xlcnIoU1NMX0ZfU1NMM19HRVRfQ0xJRU5UX0tFWV9FWENIQU5HRSxTU0xfUl9ERUNSWVBUSU9OX0ZBSUxFRCk7CistCQkJCWdvdG8gZ2VycjsKKy0JCQkJfQorLQkJCXN0YXJ0ID0gcDsKKy0JCQlpbmxlbiA9IFRsZW47CistCQkJaWYgKEVWUF9QS0VZX2RlY3J5cHQocGtleV9jdHgscHJlbWFzdGVyX3NlY3JldCwmb3V0bGVuLHN0YXJ0LGlubGVuKSA8PTApIAorKwkJaWYgKChzLT5zZXNzaW9uLT5tYXN0ZXJfa2V5X2xlbmd0aCA9IFNSUF9nZW5lcmF0ZV9zZXJ2ZXJfbWFzdGVyX3NlY3JldChzLHMtPnNlc3Npb24tPm1hc3Rlcl9rZXkpKTwwKQorKwkJCXsKKysJCQlTU0xlcnIoU1NMX0ZfU1NMM19HRVRfQ0xJRU5UX0tFWV9FWENIQU5HRSxFUlJfUl9JTlRFUk5BTF9FUlJPUik7CisrCQkJZ290byBlcnI7CisrCQkJfQorIAorLQkJCQl7CistCQkJCVNTTGVycihTU0xfRl9TU0wzX0dFVF9DTElFTlRfS0VZX0VYQ0hBTkdFLFNTTF9SX0RFQ1JZUFRJT05fRkFJTEVEKTsKKy0JCQkJZ290byBnZXJyOworLQkJCQl9CistCQkJLyogR2VuZXJhdGUgbWFzdGVyIHNlY3JldCAqLworLQkJCXMtPnNlc3Npb24tPm1hc3Rlcl9rZXlfbGVuZ3RoPQorLQkJCQlzLT5tZXRob2QtPnNzbDNfZW5jLT5nZW5lcmF0ZV9tYXN0ZXJfc2VjcmV0KHMsCistCQkJCQlzLT5zZXNzaW9uLT5tYXN0ZXJfa2V5LHByZW1hc3Rlcl9zZWNyZXQsMzIpOworLQkJCS8qIENoZWNrIGlmIHB1YmtleSBmcm9tIGNsaWVudCBjZXJ0aWZpY2F0ZSB3YXMgdXNlZCAqLworLQkJCWlmIChFVlBfUEtFWV9DVFhfY3RybChwa2V5X2N0eCwgLTEsIC0xLCBFVlBfUEtFWV9DVFJMX1BFRVJfS0VZLCAyLCBOVUxMKSA+IDApCistCQkJCXJldCA9IDI7CistCQkJZWxzZQorLQkJCQlyZXQgPSAxOworLQkJZ2VycjoKKy0JCQlFVlBfUEtFWV9mcmVlKGNsaWVudF9wdWJfcGtleSk7CistCQkJRVZQX1BLRVlfQ1RYX2ZyZWUocGtleV9jdHgpOworLQkJCWlmIChyZXQpCistCQkJCXJldHVybiByZXQ7CistCQkJZWxzZQorLQkJCQlnb3RvIGVycjsKKysJCXArPWk7CisrCQl9CisrI2VuZGlmCS8qIE9QRU5TU0xfTk9fU1JQICovCisrCWVsc2UgaWYgKGFsZ19rICYgU1NMX2tHT1NUKSAKKysJCXsKKysJCWludCByZXQgPSAwOworKwkJRVZQX1BLRVlfQ1RYICpwa2V5X2N0eDsKKysJCUVWUF9QS0VZICpjbGllbnRfcHViX3BrZXkgPSBOVUxMLCAqcGsgPSBOVUxMOworKwkJdW5zaWduZWQgY2hhciBwcmVtYXN0ZXJfc2VjcmV0WzMyXSwgKnN0YXJ0OworKwkJc2l6ZV90IG91dGxlbj0zMiwgaW5sZW47CisrCQl1bnNpZ25lZCBsb25nIGFsZ19hOworKwkJaW50IFR0YWcsIFRjbGFzczsKKysJCWxvbmcgVGxlbjsKKysKKysJCS8qIEdldCBvdXIgY2VydGlmaWNhdGUgcHJpdmF0ZSBrZXkqLworKwkJYWxnX2EgPSBzLT5zMy0+dG1wLm5ld19jaXBoZXItPmFsZ29yaXRobV9hdXRoOworKwkJaWYgKGFsZ19hICYgU1NMX2FHT1NUOTQpCisrCQkJcGsgPSBzLT5jZXJ0LT5wa2V5c1tTU0xfUEtFWV9HT1NUOTRdLnByaXZhdGVrZXk7CisrCQllbHNlIGlmIChhbGdfYSAmIFNTTF9hR09TVDAxKQorKwkJCXBrID0gcy0+Y2VydC0+cGtleXNbU1NMX1BLRVlfR09TVDAxXS5wcml2YXRla2V5OworKworKwkJcGtleV9jdHggPSBFVlBfUEtFWV9DVFhfbmV3KHBrLE5VTEwpOworKwkJRVZQX1BLRVlfZGVjcnlwdF9pbml0KHBrZXlfY3R4KTsKKysJCS8qIElmIGNsaWVudCBjZXJ0aWZpY2F0ZSBpcyBwcmVzZW50IGFuZCBpcyBvZiB0aGUgc2FtZSB0eXBlLCBtYXliZQorKwkJICogdXNlIGl0IGZvciBrZXkgZXhjaGFuZ2UuICBEb24ndCBtaW5kIGVycm9ycyBmcm9tCisrCQkgKiBFVlBfUEtFWV9kZXJpdmVfc2V0X3BlZXIsIGJlY2F1c2UgaXQgaXMgY29tcGxldGVseSB2YWxpZCB0byB1c2UKKysJCSAqIGEgY2xpZW50IGNlcnRpZmljYXRlIGZvciBhdXRob3JpemF0aW9uIG9ubHkuICovCisrCQljbGllbnRfcHViX3BrZXkgPSBYNTA5X2dldF9wdWJrZXkocy0+c2Vzc2lvbi0+cGVlcik7CisrCQlpZiAoY2xpZW50X3B1Yl9wa2V5KQorKwkJCXsKKysJCQlpZiAoRVZQX1BLRVlfZGVyaXZlX3NldF9wZWVyKHBrZXlfY3R4LCBjbGllbnRfcHViX3BrZXkpIDw9IDApCisrCQkJCUVSUl9jbGVhcl9lcnJvcigpOworKwkJCX0KKysJCS8qIERlY3J5cHQgc2Vzc2lvbiBrZXkgKi8KKysJCWlmIChBU04xX2dldF9vYmplY3QoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKiopJnAsICZUbGVuLCAmVHRhZywgJlRjbGFzcywgbikgIT0gVl9BU04xX0NPTlNUUlVDVEVEIHx8CisrCQkJVHRhZyAhPSBWX0FTTjFfU0VRVUVOQ0UgfHwKKysJCQlUY2xhc3MgIT0gVl9BU04xX1VOSVZFUlNBTCkKKysJCQl7CisrCQkJU1NMZXJyKFNTTF9GX1NTTDNfR0VUX0NMSUVOVF9LRVlfRVhDSEFOR0UsU1NMX1JfREVDUllQVElPTl9GQUlMRUQpOworKwkJCWdvdG8gZ2VycjsKKysJCQl9CisrCQlzdGFydCA9IHA7CisrCQlpbmxlbiA9IFRsZW47CisrCQlpZiAoRVZQX1BLRVlfZGVjcnlwdChwa2V5X2N0eCxwcmVtYXN0ZXJfc2VjcmV0LCZvdXRsZW4sc3RhcnQsaW5sZW4pIDw9MCkgCisrCQkJeworKwkJCVNTTGVycihTU0xfRl9TU0wzX0dFVF9DTElFTlRfS0VZX0VYQ0hBTkdFLFNTTF9SX0RFQ1JZUFRJT05fRkFJTEVEKTsKKysJCQlnb3RvIGdlcnI7CisgCQkJfQorKwkJLyogR2VuZXJhdGUgbWFzdGVyIHNlY3JldCAqLworKwkJcy0+c2Vzc2lvbi0+bWFzdGVyX2tleV9sZW5ndGg9CisrCQkJcy0+bWV0aG9kLT5zc2wzX2VuYy0+Z2VuZXJhdGVfbWFzdGVyX3NlY3JldChzLAorKwkJCQlzLT5zZXNzaW9uLT5tYXN0ZXJfa2V5LHByZW1hc3Rlcl9zZWNyZXQsMzIpOworKwkJLyogQ2hlY2sgaWYgcHVia2V5IGZyb20gY2xpZW50IGNlcnRpZmljYXRlIHdhcyB1c2VkICovCisrCQlpZiAoRVZQX1BLRVlfQ1RYX2N0cmwocGtleV9jdHgsIC0xLCAtMSwgRVZQX1BLRVlfQ1RSTF9QRUVSX0tFWSwgMiwgTlVMTCkgPiAwKQorKwkJCXJldCA9IDI7CisrCQllbHNlCisrCQkJcmV0ID0gMTsKKysJZ2VycjoKKysJCUVWUF9QS0VZX2ZyZWUoY2xpZW50X3B1Yl9wa2V5KTsKKysJCUVWUF9QS0VZX0NUWF9mcmVlKHBrZXlfY3R4KTsKKysJCWlmIChyZXQpCisrCQkJcmV0dXJuIHJldDsKKyAJCWVsc2UKKysJCQlnb3RvIGVycjsKKysJCX0KKysJZWxzZSBpZiAoIShhbGdfayAmIFNTTF9rUFNLKSkKKyAJCXsKKyAJCWFsPVNTTF9BRF9IQU5EU0hBS0VfRkFJTFVSRTsKKyAJCVNTTGVycihTU0xfRl9TU0wzX0dFVF9DTElFTlRfS0VZX0VYQ0hBTkdFLAorZGlmZiAtLWdpdCBhL3NzbC9zc2xfbGliLmMgYi9zc2wvc3NsX2xpYi5jCitpbmRleCAwZmRhNGNhLi42YzU3ZDJhIDEwMDY0NAorLS0tIGEvc3NsL3NzbF9saWIuYworKysrIGIvc3NsL3NzbF9saWIuYworQEAgLTE0MjQsNyArMTQyNCw3IEBAIGludCBzc2xfY2lwaGVyX2xpc3RfdG9fYnl0ZXMoU1NMICpzLFNUQUNLX09GKFNTTF9DSVBIRVIpICpzayx1bnNpZ25lZCBjaGFyICpwLAorICNlbmRpZiAvKiBPUEVOU1NMX05PX0tSQjUgKi8KKyAjaWZuZGVmIE9QRU5TU0xfTk9fUFNLCisgCQkvKiB3aXRoIFBTSyB0aGVyZSBtdXN0IGJlIGNsaWVudCBjYWxsYmFjayBzZXQgKi8KKy0JCWlmICgoKGMtPmFsZ29yaXRobV9ta2V5ICYgU1NMX2tQU0spIHx8IChjLT5hbGdvcml0aG1fYXV0aCAmIFNTTF9hUFNLKSkgJiYKKysJCWlmICgoYy0+YWxnb3JpdGhtX2F1dGggJiBTU0xfYVBTSykgJiYKKyAJCSAgICBzLT5wc2tfY2xpZW50X2NhbGxiYWNrID09IE5VTEwpCisgCQkJY29udGludWU7CisgI2VuZGlmIC8qIE9QRU5TU0xfTk9fUFNLICovCitkaWZmIC0tZ2l0IGEvc3NsL3RsczEuaCBiL3NzbC90bHMxLmgKK2luZGV4IDllMDM1ZmIuLjNlNmI3YzcgMTAwNjQ0CistLS0gYS9zc2wvdGxzMS5oCisrKysgYi9zc2wvdGxzMS5oCitAQCAtNTM2LDYgKzUzNiwxMCBAQCBTU0xfQ1RYX2NhbGxiYWNrX2N0cmwoc3NsLFNTTF9DVFJMX1NFVF9UTFNFWFRfVElDS0VUX0tFWV9DQiwodm9pZCAoKikodm9pZCkpY2IpCisgI2RlZmluZSBUTFMxX0NLX0VDREhFX0VDRFNBX0NIQUNIQTIwX1BPTFkxMzA1CQkweDAzMDBDQzE0CisgI2RlZmluZSBUTFMxX0NLX0RIRV9SU0FfQ0hBQ0hBMjBfUE9MWTEzMDUJCTB4MDMwMENDMTUKKyAKKysvKiBFQ0RIRSBQU0sgY2lwaGVyc3VpdGVzIGZyb20gUkZDIDU0ODkgKi8KKysjZGVmaW5lIFRMUzFfQ0tfRUNESEVfUFNLX1dJVEhfQUVTXzEyOF9DQkNfU0hBMjU2ICAgIDB4MDMwMEMwMzcKKysjZGVmaW5lIFRMUzFfQ0tfRUNESEVfUFNLX1dJVEhfQUVTXzI1Nl9DQkNfU0hBMzg0ICAgIDB4MDMwMEMwMzgKKysKKyAvKiBYWFgKKyAgKiBJbmNvbnNpc3RlbmN5IGFsZXJ0OgorICAqIFRoZSBPcGVuU1NMIG5hbWVzIG9mIGNpcGhlcnMgd2l0aCBlcGhlbWVyYWwgREggaGVyZSBpbmNsdWRlIHRoZSBzdHJpbmcKK0BAIC02OTEsNiArNjk4LDEwIEBAIFNTTF9DVFhfY2FsbGJhY2tfY3RybChzc2wsU1NMX0NUUkxfU0VUX1RMU0VYVF9USUNLRVRfS0VZX0NCLCh2b2lkICgqKSh2b2lkKSljYikKKyAjZGVmaW5lIFRMUzFfVFhUX0VDREhFX0VDRFNBX1dJVEhfQ0hBQ0hBMjBfUE9MWTEzMDUJIkVDREhFLUVDRFNBLUNIQUNIQTIwLVBPTFkxMzA1IgorICNkZWZpbmUgVExTMV9UWFRfREhFX1JTQV9XSVRIX0NIQUNIQTIwX1BPTFkxMzA1CQkiREhFLVJTQS1DSEFDSEEyMC1QT0xZMTMwNSIKKyAKKysvKiBFQ0RIRSBQU0sgY2lwaGVyc3VpdGVzIGZyb20gUkZDIDU0ODkgKi8KKysjZGVmaW5lIFRMUzFfVFhUX0VDREhFX1BTS19XSVRIX0FFU18xMjhfQ0JDX1NIQTI1NiAgIkVDREhFLVBTSy1XSVRILUFFUy0xMjgtQ0JDLVNIQTI1NiIKKysjZGVmaW5lIFRMUzFfVFhUX0VDREhFX1BTS19XSVRIX0FFU18yNTZfQ0JDX1NIQTM4NCAgIkVDREhFLVBTSy1XSVRILUFFUy0yNTYtQ0JDLVNIQTM4NCIKKysKKyAjZGVmaW5lIFRMU19DVF9SU0FfU0lHTgkJCTEKKyAjZGVmaW5lIFRMU19DVF9EU1NfU0lHTgkJCTIKKyAjZGVmaW5lIFRMU19DVF9SU0FfRklYRURfREgJCTMKKzIuMC4wLjUyNi5nNTMxODMzNgorCmRpZmYgLS1naXQgYS9wYXRjaGVzLzAwMTItd2luY3J5cHQucGF0Y2ggYi9wYXRjaGVzLzAwMTItd2luY3J5cHQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmUyODkwMQotLS0gL2Rldi9udWxsCisrKyBiL3BhdGNoZXMvMDAxMi13aW5jcnlwdC5wYXRjaApAQCAtMCwwICsxLDM0IEBACitGcm9tIGU3ZDkzMTExOWI4MWQ1MTRkOGYwNjQ1YjU0NTNlYzE2YzQ0MWIzZGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyZXcgSHNpZWggPGFuZHJld2hzaWVoQGdvb2dsZS5jb20+CitEYXRlOiBXZWQsIDcgTWF5IDIwMTQgMjA6MDE6MjggKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gVW5kZWYgT0NTUF9SRVFVRVNULCBYNTA5X05BTUUgYW5kIE9DU1BfUkVTUE9OU0UKKworcHJlYnVpbHRzL2djYy9saW51eC14ODYvaG9zdC94ODZfNjQtdzY0LW1pbmd3MzItNC44L21pbmd3L2luY2x1ZGUvd2luY3J5cHQuaAorZGVmaW5lIGFsbCBhcyBjb25zdGFudHMsIGJ1dCBvY3NwLmggdXNlIHRoZW0gYXMgdHlwZS9mdW5jdGlvbiBuYW1lcworCitDaGFuZ2UtSWQ6IEk1ODBiNTVhMzY1NzVjMWIxOWRmNmU3ZjNhZGFmOTBlN2MzNDVlNDZmCistLS0KKyBjcnlwdG8vb2NzcC9vY3NwLmggICAgIHwgNyArKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvY3J5cHRvL29jc3Avb2NzcC5oIGIvY3J5cHRvL29jc3Avb2NzcC5oCitpbmRleCAzMWU0NTc0Li5mMTRlOWY3IDEwMDY0NAorLS0tIGEvY3J5cHRvL29jc3Avb2NzcC5oCisrKysgYi9jcnlwdG8vb2NzcC9vY3NwLmgKK0BAIC05MCw2ICs5MCwxMyBAQCBleHRlcm4gIkMiIHsKKyAjZGVmaW5lIE9DU1BfUkVTUElEX0tFWQkJCTB4NDAwCisgI2RlZmluZSBPQ1NQX05PVElNRQkJCTB4ODAwCisgCisrI2lmZGVmIE9QRU5TU0xfU1lTX1dJTjMyCisrICAvKiBVbmRlciBXaW4zMiB0aGVzZSBhcmUgZGVmaW5lZCBpbiB3aW5jcnlwdC5oICovCisrI3VuZGVmIE9DU1BfUkVRVUVTVAorKyN1bmRlZiBYNTA5X05BTUUKKysjdW5kZWYgT0NTUF9SRVNQT05TRQorKyNlbmRpZgorKworIC8qICAgQ2VydElEIDo6PSBTRVFVRU5DRSB7CisgICogICAgICAgaGFzaEFsZ29yaXRobSAgICAgICAgICAgIEFsZ29yaXRobUlkZW50aWZpZXIsCisgICogICAgICAgaXNzdWVyTmFtZUhhc2ggICAgIE9DVEVUIFNUUklORywgLS0gSGFzaCBvZiBJc3N1ZXIncyBETgorLS0gCisxLjkuMS40MjMuZzQ1OTZlM2EKKwpkaWZmIC0tZ2l0IGEvcGF0Y2hlcy8wMDEzLXRsc19wc2tfaGludC5wYXRjaCBiL3BhdGNoZXMvMDAxMy10bHNfcHNrX2hpbnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc0NmI3OAotLS0gL2Rldi9udWxsCisrKyBiL3BhdGNoZXMvMDAxMy10bHNfcHNrX2hpbnQucGF0Y2gKQEAgLTAsMCArMSw0MTcgQEAKK0Zyb20gOWMxNDc1MmY4ODcyNDAxZGU0MTNmYjQ2YTk2MTQ2YjBkNmJmOTI2ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXggS2x5dWJpbiA8a2x5dWJpbkBnb29nbGUuY29tPgorRGF0ZTogVHVlLCA4IEFwciAyMDE0IDE2OjAyOjI0IC0wNzAwCitTdWJqZWN0OiB0bHNfcHNrX2hpbnQKKworRml4IFRMUy1QU0sgaWRlbnRpdHkgaGludCBpbXBsZW1lbnRhdGlvbiBpc3N1ZXMuCisKK1BTSyBpZGVudGl0eSBoaW50IGNhbiBiZSBzdG9yZWQgaW4gU1NMX0NUWCBhbmQgaW4gU1NML1NTTF9TRVNTSU9OLAorc2ltaWxhciB0byBvdGhlciBUTFMgcGFyYW1ldGVycywgd2l0aCB0aGUgdmFsdWUgaW4gU1NML1NTTF9TRVNTSU9OCit0YWtpbmcgcHJlY2VkZW5jZSBvdmVyIHRoZSBvbmUgaW4gU1NMX0NUWC4gVGhlIHZhbHVlIGluIFNTTF9DVFggaXMKK3NoYXJlZCAodXNlZCBhcyB0aGUgZGVmYXVsdCkgYmV0d2VlbiBhbGwgU1NMIGluc3RhbmNlcyBhc3NvY2lhdGVkCit3aXRoIHRoYXQgU1NMX0NUWCwgd2hlcmVhcyB0aGUgdmFsdWUgaW4gU1NML1NTTF9TRVNTSU9OIGlzIGNvbmZpbmVkCit0byB0aGF0IHBhcnRpY3VsYXIgVExTL1NTTCBjb25uZWN0aW9uL3Nlc3Npb24uCisKK1RoZSBleGlzdGluZyBpbXBsZW1lbnRhdGlvbiBvZiBUTFMtUFNLIGRvZXMgbm90IGNvcnJlY3RseSBkaXN0aW5ndWlzaAorYmV0d2VlbiBQU0sgaWRlbnRpdHkgaGludCBpbiBTU0xfQ1RYIGFuZCBpbiBTU0wvU1NMX1NFU1NJT04uIFRoaXMKK2NoYW5nZSBmaXhlcyB0aGVzZSBpc3N1ZXM6CisxLiBTU0xfdXNlX3Bza19pZGVudGl0eV9oaW50IGRvZXMgbm90aGluZyBhbmQgcmV0dXJucyAic3VjY2VzcyIgd2hlbgorICAgdGhlIFNTTCBvYmplY3QgZG9lcyBub3QgaGF2ZSBhbiBhc3NvY2lhdGVkIFNTTF9TRVNTSU9OLgorMi4gT24gdGhlIGNsaWVudCwgdGhlIGhpbnQgaW4gU1NMX0NUWCAod2hpY2ggaXMgc2hhcmVkIGJldHdlZW4KKyAgIG11bHRpcGxlIFNTTCBpbnN0YW5jZXMpIGlzIG92ZXJ3cml0dGVuIHdpdGggdGhlIGhpbnQgcmVjZWl2ZWQgZnJvbQorICAgc2VydmVyIG9yIHJlc2V0IHRvIE5VTEwgaWYgbm8gaGludCB3YXMgcmVjZWl2ZWQuCiszLiBPbiB0aGUgY2xpZW50LCBwc2tfY2xpZW50X2NhbGxiYWNrIGlzIGludm9rZWQgd2l0aCB0aGUgaGludCBmcm9tCisgICBTU0xfQ1RYIHJhdGhlciB0aGFuIGZyb20gY3VycmVudCBTU0wvU1NMX1NFU1NJT04gKGkuZS4sIHRoZSBvbmUKKyAgIHJlY2VpdmVkIGZyb20gdGhlIHNlcnZlcikuIElzc3VlICMyIGFib3ZlIG1hc2tzIHRoaXMgaXNzdWUuCis0LiBPbiB0aGUgc2VydmVyLCB0aGUgaGludCBpbiBTU0wvU1NMX1NFU1NJT04gaXMgaWdub3JlZCBhbmQgdGhlIGhpbnQKKyAgIGZyb20gU1NMX0NUWCBpcyBzZW50IHRvIHRoZSBjbGllbnQuCis1LiBPbiB0aGUgc2VydmVyLCB0aGUgaGludCBpbiBTU0wvU1NMX1NFU1NJT04gaXMgcmVzZXQgdG8gdGhlIG9uZSBpbgorICAgU1NMX0NUWCBhZnRlciB0aGUgQ2xpZW50S2V5RXhjaGFuZ2UgbWVzc2FnZSBzdGVwLgorCitUaGlzIGNoYW5nZSBmaXhlcyB0aGUgaXNzdWVzIGJ5OgorKiBBZGRpbmcgc3RvcmFnZSBmb3IgdGhlIGhpbnQgaW4gdGhlIFNTTCBvYmplY3QuIFRoZSBpZGVhIGJlaW5nIHRoYXQKKyAgdGhlIGhpbnQgaW4gdGhlIGFzc29jaWF0ZWQgU1NMX1NFU1NJT04gdGFrZXMgcHJlY2VkZW5jZS4KKyogUmVhZGluZyB0aGUgaGludCBkdXJpbmcgdGhlIGhhbmRzaGFrZSBvbmx5IGZyb20gdGhlIGFzc29jaWF0ZWQKKyAgU1NMX1NFU1NJT04gb2JqZWN0LgorKiBJbml0aWFsaXppbmcgdGhlIGhpbnQgaW4gU1NMIG9iamVjdCB3aXRoIHRoZSBvbmUgZnJvbSB0aGUgU1NMX0NUWAorICBvYmplY3QuCisqIEluaXRpYWxpemluZyB0aGUgaGludCBpbiBTU0xfU0VTU0lPTiBvYmplY3Qgd2l0aCB0aGUgb25lIGZyb20gdGhlCisgIFNTTCBvYmplY3QuCisqIE1ha2luZyBTU0xfdXNlX3Bza19pZGVudGl0eV9oaW50IGFuZCBTU0xfZ2V0X3Bza19pZGVudGl0eV9oaW50CisgIHNldC9nZXQgdGhlIGhpbnQgdG8vZnJvbSBTU0xfU0VTU0lPTiBhc3NvY2lhdGVkIHdpdGggdGhlIHByb3ZpZGVkCisgIFNTTCBvYmplY3QsIG9yLCBpZiBubyBTU0xfU0VTU0lPTiBpcyBhdmFpbGFibGUsIHNldC9nZXQgdGhlIGhpbnQKKyAgdG8vZnJvbSB0aGUgcHJvdmlkZWQgU1NMIG9iamVjdC4KKyogUmVtb3ZpbmcgY29kZSB3aGljaCByZXNldHMgdGhlIGhpbnQgZHVyaW5nIGhhbmRzaGFrZS4KKy0tLQorIHNzbC9kMV9jbG50LmMgIHwgMTMgKy0tLS0tLS0tLS0tLQorIHNzbC9kMV9zcnZyLmMgIHwgMTAgKysrKystLS0tLQorIHNzbC9zM19jbG50LmMgIHwgMzcgKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHNzbC9zM19zcnZyLmMgIHwgNDQgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBzc2wvc3NsLmggICAgICB8ICA0ICsrKysKKyBzc2wvc3NsX2xpYi5jICB8IDU2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCisgc3NsL3NzbF9zZXNzLmMgfCAxMiArKysrKysrKysrKysKKyA3IGZpbGVzIGNoYW5nZWQsIDk2IGluc2VydGlvbnMoKyksIDgwIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3NsL2QxX2NsbnQuYyBiL3NzbC9kMV9jbG50LmMKK2luZGV4IGY4NTc5NDYuLmIwMTcxMzkgMTAwNjQ0CistLS0gYS9zc2wvZDFfY2xudC5jCisrKysgYi9zc2wvZDFfY2xudC5jCitAQCAtMTQzNCw3ICsxNDM0LDcgQEAgaW50IGR0bHMxX3NlbmRfY2xpZW50X2tleV9leGNoYW5nZShTU0wgKnMpCisgCQkJCWdvdG8gZXJyOworIAkJCQl9CisgCistCQkJcHNrX2xlbiA9IHMtPnBza19jbGllbnRfY2FsbGJhY2socywgcy0+Y3R4LT5wc2tfaWRlbnRpdHlfaGludCwKKysJCQlwc2tfbGVuID0gcy0+cHNrX2NsaWVudF9jYWxsYmFjayhzLCBzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHlfaGludCwKKyAJCQkJaWRlbnRpdHksIFBTS19NQVhfSURFTlRJVFlfTEVOLAorIAkJCQlwc2tfb3JfcHJlX21zLCBzaXplb2YocHNrX29yX3ByZV9tcykpOworIAkJCWlmIChwc2tfbGVuID4gUFNLX01BWF9QU0tfTEVOKQorQEAgLTE0NTksMTcgKzE0NTksNiBAQCBpbnQgZHRsczFfc2VuZF9jbGllbnRfa2V5X2V4Y2hhbmdlKFNTTCAqcykKKyAJCQl0Kz1wc2tfbGVuOworIAkJCXMybihwc2tfbGVuLCB0KTsKKyAKKy0JCQlpZiAocy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5X2hpbnQgIT0gTlVMTCkKKy0JCQkJT1BFTlNTTF9mcmVlKHMtPnNlc3Npb24tPnBza19pZGVudGl0eV9oaW50KTsKKy0JCQlzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHlfaGludCA9IEJVRl9zdHJkdXAocy0+Y3R4LT5wc2tfaWRlbnRpdHlfaGludCk7CistCQkJaWYgKHMtPmN0eC0+cHNrX2lkZW50aXR5X2hpbnQgIT0gTlVMTCAmJgorLQkJCQlzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHlfaGludCA9PSBOVUxMKQorLQkJCQl7CistCQkJCVNTTGVycihTU0xfRl9EVExTMV9TRU5EX0NMSUVOVF9LRVlfRVhDSEFOR0UsCistCQkJCQlFUlJfUl9NQUxMT0NfRkFJTFVSRSk7CistCQkJCWdvdG8gcHNrX2VycjsKKy0JCQkJfQorLQorIAkJCWlmIChzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHkgIT0gTlVMTCkKKyAJCQkJT1BFTlNTTF9mcmVlKHMtPnNlc3Npb24tPnBza19pZGVudGl0eSk7CisgCQkJcy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5ID0gQlVGX3N0cmR1cChpZGVudGl0eSk7CitkaWZmIC0tZ2l0IGEvc3NsL2QxX3NydnIuYyBiL3NzbC9kMV9zcnZyLmMKK2luZGV4IDEzODRhYjAuLmMxODFkYjYgMTAwNjQ0CistLS0gYS9zc2wvZDFfc3J2ci5jCisrKysgYi9zc2wvZDFfc3J2ci5jCitAQCAtNDcxLDcgKzQ3MSw3IEBAIGludCBkdGxzMV9hY2NlcHQoU1NMICpzKQorIAkJCS8qIFBTSzogc2VuZCBTZXJ2ZXJLZXlFeGNoYW5nZSBpZiBQU0sgaWRlbnRpdHkKKyAJCQkgKiBoaW50IGlmIHByb3ZpZGVkICovCisgI2lmbmRlZiBPUEVOU1NMX05PX1BTSworLQkJCSAgICB8fCAoKGFsZ19rICYgU1NMX2tQU0spICYmIHMtPmN0eC0+cHNrX2lkZW50aXR5X2hpbnQpCisrCQkJICAgIHx8ICgoYWxnX2sgJiBTU0xfa1BTSykgJiYgcy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5X2hpbnQpCisgI2VuZGlmCisgCQkJICAgIHx8IChhbGdfayAmIChTU0xfa0VESHxTU0xfa0RIcnxTU0xfa0RIZCkpCisgCQkJICAgIHx8IChhbGdfayAmIFNTTF9rRUVDREgpCitAQCAtMTI4OCw3ICsxMjg4LDcgQEAgaW50IGR0bHMxX3NlbmRfc2VydmVyX2tleV9leGNoYW5nZShTU0wgKnMpCisgCQkJaWYgKHR5cGUgJiBTU0xfa1BTSykKKyAJCQkJeworIAkJCQkvKiByZXNlcnZlIHNpemUgZm9yIHJlY29yZCBsZW5ndGggYW5kIFBTSyBpZGVudGl0eSBoaW50Ki8KKy0JCQkJbis9MitzdHJsZW4ocy0+Y3R4LT5wc2tfaWRlbnRpdHlfaGludCk7CisrCQkJCW4rPTIrc3RybGVuKHMtPnNlc3Npb24tPnBza19pZGVudGl0eV9oaW50KTsKKyAJCQkJfQorIAkJCWVsc2UKKyAjZW5kaWYgLyogIU9QRU5TU0xfTk9fUFNLICovCitAQCAtMTM2NSw5ICsxMzY1LDkgQEAgaW50IGR0bHMxX3NlbmRfc2VydmVyX2tleV9leGNoYW5nZShTU0wgKnMpCisgCQlpZiAodHlwZSAmIFNTTF9rUFNLKQorIAkJCXsKKyAJCQkvKiBjb3B5IFBTSyBpZGVudGl0eSBoaW50ICovCistCQkJczJuKHN0cmxlbihzLT5jdHgtPnBza19pZGVudGl0eV9oaW50KSwgcCk7IAorLQkJCXN0cm5jcHkoKGNoYXIgKilwLCBzLT5jdHgtPnBza19pZGVudGl0eV9oaW50LCBzdHJsZW4ocy0+Y3R4LT5wc2tfaWRlbnRpdHlfaGludCkpOworLQkJCXArPXN0cmxlbihzLT5jdHgtPnBza19pZGVudGl0eV9oaW50KTsKKysJCQlzMm4oc3RybGVuKHMtPnNlc3Npb24tPnBza19pZGVudGl0eV9oaW50KSwgcCk7CisrCQkJc3RybmNweSgoY2hhciAqKXAsIHMtPnNlc3Npb24tPnBza19pZGVudGl0eV9oaW50LCBzdHJsZW4ocy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5X2hpbnQpKTsKKysJCQlwKz1zdHJsZW4ocy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5X2hpbnQpOworIAkJCX0KKyAjZW5kaWYKKyAKK2RpZmYgLS1naXQgYS9zc2wvczNfY2xudC5jIGIvc3NsL3MzX2NsbnQuYworaW5kZXggMTJjM2ZlOC4uMTczNjdhMiAxMDA2NDQKKy0tLSBhL3NzbC9zM19jbG50LmMKKysrKyBiL3NzbC9zM19jbG50LmMKK0BAIC0xMzc0LDkgKzEzNzQsMTEgQEAgaW50IHNzbDNfZ2V0X2tleV9leGNoYW5nZShTU0wgKnMpCisgCQlpZiAocy0+czMtPnRtcC5uZXdfY2lwaGVyLT5hbGdvcml0aG1fYXV0aCAmIFNTTF9hUFNLKQorIAkJCXsKKyAJCQlzLT5zZXNzaW9uLT5zZXNzX2NlcnQ9c3NsX3Nlc3NfY2VydF9uZXcoKTsKKy0JCQlpZiAocy0+Y3R4LT5wc2tfaWRlbnRpdHlfaGludCkKKy0JCQkJT1BFTlNTTF9mcmVlKHMtPmN0eC0+cHNrX2lkZW50aXR5X2hpbnQpOworLQkJCXMtPmN0eC0+cHNrX2lkZW50aXR5X2hpbnQgPSBOVUxMOworKwkJCWlmIChzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHlfaGludCkKKysJCQkJeworKwkJCQlPUEVOU1NMX2ZyZWUocy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5X2hpbnQpOworKwkJCQlzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHlfaGludCA9IE5VTEw7CisrCQkJCX0KKyAJCQl9CisgI2VuZGlmCisgCQlzLT5zMy0+dG1wLnJldXNlX21lc3NhZ2U9MTsKK0BAIC0xNDI2LDcgKzE0MjgsMTEgQEAgaW50IHNzbDNfZ2V0X2tleV9leGNoYW5nZShTU0wgKnMpCisgCQlhbD1TU0xfQURfSEFORFNIQUtFX0ZBSUxVUkU7CisgCQluMnMocCxpKTsKKyAJCXBhcmFtX2xlbj1pKzI7CistCQlzLT5jdHgtPnBza19pZGVudGl0eV9oaW50ID0gTlVMTDsKKysJCWlmIChzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHlfaGludCkKKysJCQl7CisrCQkJT1BFTlNTTF9mcmVlKHMtPnNlc3Npb24tPnBza19pZGVudGl0eV9oaW50KTsKKysJCQlzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHlfaGludCA9IE5VTEw7CisrCQkJfQorIAkJaWYgKGkgIT0gMCkKKyAJCQl7CisgCQkJLyogU3RvcmUgUFNLIGlkZW50aXR5IGhpbnQgZm9yIGxhdGVyIHVzZSwgaGludCBpcyB1c2VkCitAQCAtMTQ1MiwxMCArMTQ1OCw4IEBAIGludCBzc2wzX2dldF9rZXlfZXhjaGFuZ2UoU1NMICpzKQorIAkJCSAqIE5VTEwtdGVybWluYXRlZCBzdHJpbmcuICovCisgCQkJbWVtY3B5KHRtcF9pZF9oaW50LCBwLCBpKTsKKyAJCQltZW1zZXQodG1wX2lkX2hpbnQraSwgMCwgUFNLX01BWF9JREVOVElUWV9MRU4rMS1pKTsKKy0JCQlpZiAocy0+Y3R4LT5wc2tfaWRlbnRpdHlfaGludCAhPSBOVUxMKQorLQkJCQlPUEVOU1NMX2ZyZWUocy0+Y3R4LT5wc2tfaWRlbnRpdHlfaGludCk7CistCQkJcy0+Y3R4LT5wc2tfaWRlbnRpdHlfaGludCA9IEJVRl9zdHJkdXAodG1wX2lkX2hpbnQpOworLQkJCWlmIChzLT5jdHgtPnBza19pZGVudGl0eV9oaW50ID09IE5VTEwpCisrCQkJcy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5X2hpbnQgPSBCVUZfc3RyZHVwKHRtcF9pZF9oaW50KTsKKysJCQlpZiAocy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5X2hpbnQgPT0gTlVMTCkKKyAJCQkJeworIAkJCQlTU0xlcnIoU1NMX0ZfU1NMM19HRVRfS0VZX0VYQ0hBTkdFLCBFUlJfUl9NQUxMT0NfRkFJTFVSRSk7CisgCQkJCWdvdG8gZl9lcnI7CitAQCAtMjMzOCw3ICsyMzQyLDcgQEAgaW50IHNzbDNfc2VuZF9jbGllbnRfa2V5X2V4Y2hhbmdlKFNTTCAqcykKKyAJCQkJZ290byBlcnI7CisgCQkJCX0KKyAKKy0JCQlwc2tfbGVuID0gcy0+cHNrX2NsaWVudF9jYWxsYmFjayhzLCBzLT5jdHgtPnBza19pZGVudGl0eV9oaW50LAorKwkJCXBza19sZW4gPSBzLT5wc2tfY2xpZW50X2NhbGxiYWNrKHMsIHMtPnNlc3Npb24tPnBza19pZGVudGl0eV9oaW50LAorIAkJCQlpZGVudGl0eSwgUFNLX01BWF9JREVOVElUWV9MRU4sIHBzaywgc2l6ZW9mKHBzaykpOworIAkJCWlmIChwc2tfbGVuID4gUFNLX01BWF9QU0tfTEVOKQorIAkJCQl7CitAQCAtMjM3NCwyMSArMjM3OCw2IEBAIGludCBzc2wzX3NlbmRfY2xpZW50X2tleV9leGNoYW5nZShTU0wgKnMpCisgCQkJCW4gKz0gMjsKKyAJCQkJfQorIAorLQkJCWlmIChzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHlfaGludCAhPSBOVUxMKQorLQkJCQlPUEVOU1NMX2ZyZWUocy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5X2hpbnQpOworLQkJCXMtPnNlc3Npb24tPnBza19pZGVudGl0eV9oaW50ID0gTlVMTDsKKy0JCQlpZiAocy0+Y3R4LT5wc2tfaWRlbnRpdHlfaGludCkKKy0JCQkJeworLQkJCQlzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHlfaGludCA9IEJVRl9zdHJkdXAocy0+Y3R4LT5wc2tfaWRlbnRpdHlfaGludCk7CistCQkJCWlmIChzLT5jdHgtPnBza19pZGVudGl0eV9oaW50ICE9IE5VTEwgJiYKKy0JCQkJCXMtPnNlc3Npb24tPnBza19pZGVudGl0eV9oaW50ID09IE5VTEwpCistCQkJCQl7CistCQkJCQlTU0xlcnIoU1NMX0ZfU1NMM19TRU5EX0NMSUVOVF9LRVlfRVhDSEFOR0UsCistCQkJCQkJRVJSX1JfTUFMTE9DX0ZBSUxVUkUpOworLQkJCQkJZ290byBwc2tfZXJyOworLQkJCQkJfQorLQkJCQl9CistCisgCQkJaWYgKHMtPnNlc3Npb24tPnBza19pZGVudGl0eSAhPSBOVUxMKQorIAkJCQlPUEVOU1NMX2ZyZWUocy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5KTsKKyAJCQlzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHkgPSBCVUZfc3RyZHVwKGlkZW50aXR5KTsKK2RpZmYgLS1naXQgYS9zc2wvczNfc3J2ci5jIGIvc3NsL3MzX3NydnIuYworaW5kZXggZDZmMWEzNS4uYzM2MDMzNyAxMDA2NDQKKy0tLSBhL3NzbC9zM19zcnZyLmMKKysrKyBiL3NzbC9zM19zcnZyLmMKK0BAIC00OTIsNyArNDkyLDcgQEAgaW50IHNzbDNfYWNjZXB0KFNTTCAqcykKKyAJCQkgKiAgIC0gdGhlIGtleSBleGNoYW5nZSBpcyBrRUVDREguCisgCQkJICovCisgI2lmbmRlZiBPUEVOU1NMX05PX1BTSworLQkJCSAgICB8fCAoKGFsZ19hICYgU1NMX2FQU0spICYmICgoYWxnX2sgJiBTU0xfa0VFQ0RIKSB8fCBzLT5jdHgtPnBza19pZGVudGl0eV9oaW50KSkKKysJCQkgICAgfHwgKChhbGdfYSAmIFNTTF9hUFNLKSAmJiAoKGFsZ19rICYgU1NMX2tFRUNESCkgfHwgcy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5X2hpbnQpKQorICNlbmRpZgorICNpZm5kZWYgT1BFTlNTTF9OT19TUlAKKyAJCQkgICAgLyogU1JQOiBzZW5kIFNlcnZlcktleUV4Y2hhbmdlICovCitAQCAtMTcwMiw2ICsxNzAyLDEwIEBAIGludCBzc2wzX3NlbmRfc2VydmVyX2tleV9leGNoYW5nZShTU0wgKnMpCisgCWludCBjdXJ2ZV9pZCA9IDA7CisgCUJOX0NUWCAqYm5fY3R4ID0gTlVMTDsgCisgI2VuZGlmCisrI2lmbmRlZiBPUEVOU1NMX05PX1BTSworKwljb25zdCBjaGFyKiBwc2tfaWRlbnRpdHlfaGludDsKKysJc2l6ZV90IHBza19pZGVudGl0eV9oaW50X2xlbjsKKysjZW5kaWYKKyAJRVZQX1BLRVkgKnBrZXk7CisgCWNvbnN0IEVWUF9NRCAqbWQgPSBOVUxMOworIAl1bnNpZ25lZCBjaGFyICpwLCpkOworQEAgLTE3MzAsOSArMTczNCwxMiBAQCBpbnQgc3NsM19zZW5kX3NlcnZlcl9rZXlfZXhjaGFuZ2UoU1NMICpzKQorIAkJaWYgKGFsZ19hICYgU1NMX2FQU0spCisgCQkJeworIAkJCS8qIHNpemUgZm9yIFBTSyBpZGVudGl0eSBoaW50ICovCistCQkJbis9MjsKKy0JCQlpZiAocy0+Y3R4LT5wc2tfaWRlbnRpdHlfaGludCkKKy0JCQkJbis9c3RybGVuKHMtPmN0eC0+cHNrX2lkZW50aXR5X2hpbnQpOworKwkJCXBza19pZGVudGl0eV9oaW50ID0gcy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5X2hpbnQ7CisrCQkJaWYgKHBza19pZGVudGl0eV9oaW50KQorKwkJCQlwc2tfaWRlbnRpdHlfaGludF9sZW4gPSBzdHJsZW4ocHNrX2lkZW50aXR5X2hpbnQpOworKwkJCWVsc2UKKysJCQkJcHNrX2lkZW50aXR5X2hpbnRfbGVuID0gMDsKKysJCQluKz0yK3Bza19pZGVudGl0eV9oaW50X2xlbjsKKyAJCQl9CisgI2VuZGlmIC8qICFPUEVOU1NMX05PX1BTSyAqLworICNpZm5kZWYgT1BFTlNTTF9OT19SU0EKK0BAIC0yMDI1LDIwICsyMDMyLDEyIEBAIGludCBzc2wzX3NlbmRfc2VydmVyX2tleV9leGNoYW5nZShTU0wgKnMpCisgI2lmbmRlZiBPUEVOU1NMX05PX1BTSworIAkJaWYgKGFsZ19hICYgU1NMX2FQU0spCisgCQkJeworLQkJCWlmIChzLT5jdHgtPnBza19pZGVudGl0eV9oaW50KQorLQkJCQl7CistCQkJCS8qIGNvcHkgUFNLIGlkZW50aXR5IGhpbnQgKi8KKy0JCQkJczJuKHN0cmxlbihzLT5jdHgtPnBza19pZGVudGl0eV9oaW50KSwgcCk7CistCQkJCXN0cm5jcHkoKGNoYXIgKilwLCBzLT5jdHgtPnBza19pZGVudGl0eV9oaW50LCBzdHJsZW4ocy0+Y3R4LT5wc2tfaWRlbnRpdHlfaGludCkpOworLQkJCQlwKz1zdHJsZW4ocy0+Y3R4LT5wc2tfaWRlbnRpdHlfaGludCk7CistCQkJCX0KKy0JCQllbHNlCisrCQkJLyogY29weSBQU0sgaWRlbnRpdHkgaGludCAoaWYgcHJvdmlkZWQpICovCisrCQkJczJuKHBza19pZGVudGl0eV9oaW50X2xlbiwgcCk7CisrCQkJaWYgKHBza19pZGVudGl0eV9oaW50X2xlbiA+IDApCisgCQkJCXsKKy0JCQkJLyogTm8gaWRlbnRpdHkgaGludCBpcyBwcm92aWRlZC4gKi8KKy0JCQkJKnAgPSAwOworLQkJCQlwICs9IDE7CistCQkJCSpwID0gMDsKKy0JCQkJcCArPSAxOworKwkJCQltZW1jcHkocCwgcHNrX2lkZW50aXR5X2hpbnQsIHBza19pZGVudGl0eV9oaW50X2xlbik7CisrCQkJCXArPXBza19pZGVudGl0eV9oaW50X2xlbjsKKyAJCQkJfQorIAkJCX0KKyAjZW5kaWYgLyogT1BFTlNTTF9OT19QU0sgKi8KK0BAIC0yMzkzLDE3ICsyMzkyLDYgQEAgaW50IHNzbDNfZ2V0X2NsaWVudF9rZXlfZXhjaGFuZ2UoU1NMICpzKQorIAkJCWdvdG8gcHNrX2VycjsKKyAJCQl9CisgCistCQlpZiAocy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5X2hpbnQgIT0gTlVMTCkKKy0JCQlPUEVOU1NMX2ZyZWUocy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5X2hpbnQpOworLQkJcy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5X2hpbnQgPSBCVUZfc3RyZHVwKHMtPmN0eC0+cHNrX2lkZW50aXR5X2hpbnQpOworLQkJaWYgKHMtPmN0eC0+cHNrX2lkZW50aXR5X2hpbnQgIT0gTlVMTCAmJgorLQkJCXMtPnNlc3Npb24tPnBza19pZGVudGl0eV9oaW50ID09IE5VTEwpCistCQkJeworLQkJCVNTTGVycihTU0xfRl9TU0wzX0dFVF9DTElFTlRfS0VZX0VYQ0hBTkdFLAorLQkJCQlFUlJfUl9NQUxMT0NfRkFJTFVSRSk7CistCQkJZ290byBwc2tfZXJyOworLQkJCX0KKy0KKyAJCXAgKz0gaTsKKyAJCW4gLT0gKGkgKyAyKTsKKyAJCXBza19lcnIgPSAwOworZGlmZiAtLWdpdCBhL3NzbC9zc2wuaCBiL3NzbC9zc2wuaAoraW5kZXggYTdlMTQ1NS4uZjA0NGNkMSAxMDA2NDQKKy0tLSBhL3NzbC9zc2wuaAorKysrIGIvc3NsL3NzbC5oCitAQCAtMTQ0MSw2ICsxNDQxLDEwIEBAIHN0cnVjdCBzc2xfc3QKKyAjZW5kaWYJLyogT1BFTlNTTF9OT19LUkI1ICovCisgCisgI2lmbmRlZiBPUEVOU1NMX05PX1BTSworKwkvKiBQU0sgaWRlbnRpdHkgaGludCBpcyBzdG9yZWQgaGVyZSBvbmx5IHRvIGVuYWJsZSBzZXR0aW5nIGEgaGludCBvbiBhbiBTU0wgb2JqZWN0IGJlZm9yZSBhbgorKwkgKiBTU0xfU0VTU0lPTiBpcyBhc3NvY2lhdGVkIHdpdGggaXQuIE9uY2UgYW4gU1NMX1NFU1NJT04gaXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgU1NMIG9iamVjdCwKKysJICogdGhlIHBza19pZGVudGl0eV9oaW50IGZyb20gdGhlIHNlc3Npb24gdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHRoaXMgb25lLiAqLworKwljaGFyICpwc2tfaWRlbnRpdHlfaGludDsKKyAJdW5zaWduZWQgaW50ICgqcHNrX2NsaWVudF9jYWxsYmFjaykoU1NMICpzc2wsIGNvbnN0IGNoYXIgKmhpbnQsIGNoYXIgKmlkZW50aXR5LAorIAkJdW5zaWduZWQgaW50IG1heF9pZGVudGl0eV9sZW4sIHVuc2lnbmVkIGNoYXIgKnBzaywKKyAJCXVuc2lnbmVkIGludCBtYXhfcHNrX2xlbik7CitkaWZmIC0tZ2l0IGEvc3NsL3NzbF9saWIuYyBiL3NzbC9zc2xfbGliLmMKK2luZGV4IDNlNDljYWIuLmNmMjQyOTIgMTAwNjQ0CistLS0gYS9zc2wvc3NsX2xpYi5jCisrKysgYi9zc2wvc3NsX2xpYi5jCitAQCAtMzg4LDYgKzM4OCwxMyBAQCBTU0wgKlNTTF9uZXcoU1NMX0NUWCAqY3R4KQorIAlDUllQVE9fbmV3X2V4X2RhdGEoQ1JZUFRPX0VYX0lOREVYX1NTTCwgcywgJnMtPmV4X2RhdGEpOworIAorICNpZm5kZWYgT1BFTlNTTF9OT19QU0sKKysJcy0+cHNrX2lkZW50aXR5X2hpbnQgPSBOVUxMOworKwlpZiAoY3R4LT5wc2tfaWRlbnRpdHlfaGludCkKKysJCXsKKysJCXMtPnBza19pZGVudGl0eV9oaW50ID0gQlVGX3N0cmR1cChjdHgtPnBza19pZGVudGl0eV9oaW50KTsKKysJCWlmIChzLT5wc2tfaWRlbnRpdHlfaGludCA9PSBOVUxMKQorKwkJCWdvdG8gZXJyOworKwkJfQorIAlzLT5wc2tfY2xpZW50X2NhbGxiYWNrPWN0eC0+cHNrX2NsaWVudF9jYWxsYmFjazsKKyAJcy0+cHNrX3NlcnZlcl9jYWxsYmFjaz1jdHgtPnBza19zZXJ2ZXJfY2FsbGJhY2s7CisgI2VuZGlmCitAQCAtNjQ4LDYgKzY1NSwxMSBAQCB2b2lkIFNTTF9mcmVlKFNTTCAqcykKKyAJCU9QRU5TU0xfZnJlZShzLT5hbHBuX2NsaWVudF9wcm90b19saXN0KTsKKyAjZW5kaWYKKyAKKysjaWZuZGVmIE9QRU5TU0xfTk9fUFNLCisrCWlmIChzLT5wc2tfaWRlbnRpdHlfaGludCkKKysJCU9QRU5TU0xfZnJlZShzLT5wc2tfaWRlbnRpdHlfaGludCk7CisrI2VuZGlmCisrCisgCWlmIChzLT5jbGllbnRfQ0EgIT0gTlVMTCkKKyAJCXNrX1g1MDlfTkFNRV9wb3BfZnJlZShzLT5jbGllbnRfQ0EsWDUwOV9OQU1FX2ZyZWUpOworIAorQEAgLTMzNjEsMzIgKzMzNzMsNTQgQEAgaW50IFNTTF91c2VfcHNrX2lkZW50aXR5X2hpbnQoU1NMICpzLCBjb25zdCBjaGFyICppZGVudGl0eV9oaW50KQorIAlpZiAocyA9PSBOVUxMKQorIAkJcmV0dXJuIDA7CisgCistCWlmIChzLT5zZXNzaW9uID09IE5VTEwpCistCQlyZXR1cm4gMTsgLyogc2Vzc2lvbiBub3QgY3JlYXRlZCB5ZXQsIGlnbm9yZWQgKi8KKy0KKyAJaWYgKGlkZW50aXR5X2hpbnQgIT0gTlVMTCAmJiBzdHJsZW4oaWRlbnRpdHlfaGludCkgPiBQU0tfTUFYX0lERU5USVRZX0xFTikKKyAJCXsKKyAJCVNTTGVycihTU0xfRl9TU0xfVVNFX1BTS19JREVOVElUWV9ISU5ULCBTU0xfUl9EQVRBX0xFTkdUSF9UT09fTE9ORyk7CisgCQlyZXR1cm4gMDsKKyAJCX0KKy0JaWYgKHMtPnNlc3Npb24tPnBza19pZGVudGl0eV9oaW50ICE9IE5VTEwpCisrCisrCS8qIENsZWFyIGhpbnQgaW4gU1NMIGFuZCBhc3NvY2lhdGVkIFNTTF9TRVNTSU9OIChpZiBhbnkpLiAqLworKwlpZiAocy0+cHNrX2lkZW50aXR5X2hpbnQgIT0gTlVMTCkKKysJCXsKKysJCU9QRU5TU0xfZnJlZShzLT5wc2tfaWRlbnRpdHlfaGludCk7CisrCQlzLT5wc2tfaWRlbnRpdHlfaGludCA9IE5VTEw7CisrCQl9CisrCWlmIChzLT5zZXNzaW9uICE9IE5VTEwgJiYgcy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5X2hpbnQgIT0gTlVMTCkKKysJCXsKKyAJCU9QRU5TU0xfZnJlZShzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHlfaGludCk7CisrCQlzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHlfaGludCA9IE5VTEw7CisrCQl9CisrCisgCWlmIChpZGVudGl0eV9oaW50ICE9IE5VTEwpCisgCQl7CistCQlzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHlfaGludCA9IEJVRl9zdHJkdXAoaWRlbnRpdHlfaGludCk7CistCQlpZiAocy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5X2hpbnQgPT0gTlVMTCkKKy0JCQlyZXR1cm4gMDsKKysJCS8qIFRoZSBoaW50IGlzIHN0b3JlZCBpbiBTU0wgYW5kIFNTTF9TRVNTSU9OIHdpdGggdGhlIG9uZSBpbgorKwkJICogU1NMX1NFU1NJT04gdGFraW5nIHByZWNlZGVuY2UuIFRodXMsIGlmIFNTTF9TRVNTSU9OIGlzIGF2YWlhYmxlLAorKwkJICogd2Ugc3RvcmUgdGhlIGhpbnQgdGhlcmUsIG90aGVyd2lzZSB3ZSBzdG9yZSBpdCBpbiBTU0wuICovCisrCQlpZiAocy0+c2Vzc2lvbiAhPSBOVUxMKQorKwkJCXsKKysJCQlzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHlfaGludCA9IEJVRl9zdHJkdXAoaWRlbnRpdHlfaGludCk7CisrCQkJaWYgKHMtPnNlc3Npb24tPnBza19pZGVudGl0eV9oaW50ID09IE5VTEwpCisrCQkJCXJldHVybiAwOworKwkJCX0KKysJCWVsc2UKKysJCQl7CisrCQkJcy0+cHNrX2lkZW50aXR5X2hpbnQgPSBCVUZfc3RyZHVwKGlkZW50aXR5X2hpbnQpOworKwkJCWlmIChzLT5wc2tfaWRlbnRpdHlfaGludCA9PSBOVUxMKQorKwkJCQlyZXR1cm4gMDsKKysJCQl9CisgCQl9CistCWVsc2UKKy0JCXMtPnNlc3Npb24tPnBza19pZGVudGl0eV9oaW50ID0gTlVMTDsKKyAJcmV0dXJuIDE7CisgCX0KKyAKKyBjb25zdCBjaGFyICpTU0xfZ2V0X3Bza19pZGVudGl0eV9oaW50KGNvbnN0IFNTTCAqcykKKyAJeworLQlpZiAocyA9PSBOVUxMIHx8IHMtPnNlc3Npb24gPT0gTlVMTCkKKysJaWYgKHMgPT0gTlVMTCkKKyAJCXJldHVybiBOVUxMOworLQlyZXR1cm4ocy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5X2hpbnQpOworKwkvKiBUaGUgaGludCBpcyBzdG9yZWQgaW4gU1NMIGFuZCBTU0xfU0VTU0lPTiB3aXRoIHRoZSBvbmUgaW4gU1NMX1NFU1NJT04KKysJICogdGFraW5nIHByZWNlZGVuY2UuICovCisrCWlmIChzLT5zZXNzaW9uICE9IE5VTEwpCisrCQlyZXR1cm4ocy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5X2hpbnQpOworKwlyZXR1cm4ocy0+cHNrX2lkZW50aXR5X2hpbnQpOworIAl9CisgCisgY29uc3QgY2hhciAqU1NMX2dldF9wc2tfaWRlbnRpdHkoY29uc3QgU1NMICpzKQorZGlmZiAtLWdpdCBhL3NzbC9zc2xfc2Vzcy5jIGIvc3NsL3NzbF9zZXNzLmMKK2luZGV4IDQ0MjY4ZTcuLmNkZDE5OGMgMTAwNjQ0CistLS0gYS9zc2wvc3NsX3Nlc3MuYworKysrIGIvc3NsL3NzbF9zZXNzLmMKK0BAIC00MzcsNiArNDM3LDE4IEBAIGludCBzc2xfZ2V0X25ld19zZXNzaW9uKFNTTCAqcywgaW50IHNlc3Npb24pCisgCQkJfQorICNlbmRpZgorICNlbmRpZgorKyNpZm5kZWYgT1BFTlNTTF9OT19QU0sKKysJCWlmIChzLT5wc2tfaWRlbnRpdHlfaGludCkKKysJCQl7CisrCQkJc3MtPnBza19pZGVudGl0eV9oaW50ID0gQlVGX3N0cmR1cChzLT5wc2tfaWRlbnRpdHlfaGludCk7CisrCQkJaWYgKHNzLT5wc2tfaWRlbnRpdHlfaGludCA9PSBOVUxMKQorKwkJCQl7CisrCQkJCVNTTGVycihTU0xfRl9TU0xfR0VUX05FV19TRVNTSU9OLCBFUlJfUl9NQUxMT0NfRkFJTFVSRSk7CisrCQkJCVNTTF9TRVNTSU9OX2ZyZWUoc3MpOworKwkJCQlyZXR1cm4gMDsKKysJCQkJfQorKwkJCX0KKysjZW5kaWYKKyAJCX0KKyAJZWxzZQorIAkJeworLS0gCisyLjAuMC41MjYuZzUzMTgzMzYKKwpkaWZmIC0tZ2l0IGEvcGF0Y2hlcy8wMDE0LWFybV9hc20ucGF0Y2ggYi9wYXRjaGVzLzAwMTQtYXJtX2FzbS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTdkZjYyCi0tLSAvZGV2L251bGwKKysrIGIvcGF0Y2hlcy8wMDE0LWFybV9hc20ucGF0Y2gKQEAgLTAsMCArMSw3ODM0IEBACitkaWZmIC0tZ2l0IGEvQ29uZmlndXJlIGIvQ29uZmlndXJlCitpbmRleCBkZTc4NDY5Li4yNjc0M2JiIDEwMDc1NQorLS0tIGEvQ29uZmlndXJlCisrKysgYi9Db25maWd1cmUKK0BAIC0xMzYsNyArMTM2LDggQEAgbXkgJGFscGhhX2FzbT0iYWxwaGFjcHVpZC5vOmJuX2FzbS5vIGFscGhhLW1vbnQubzo6Ojo6c2hhMS1hbHBoYS5vOjo6Ojo6OmdoYXNoLWEKKyBteSAkbWlwczMyX2FzbT0iOmJuLW1pcHMubzo6YWVzX2NiYy5vIGFlcy1taXBzLm86OjpzaGExLW1pcHMubyBzaGEyNTYtbWlwcy5vOjo6Ojo6OjoiOworIG15ICRtaXBzNjRfYXNtPSI6Ym4tbWlwcy5vIG1pcHMtbW9udC5vOjphZXNfY2JjLm8gYWVzLW1pcHMubzo6OnNoYTEtbWlwcy5vIHNoYTI1Ni1taXBzLm8gc2hhNTEyLW1pcHMubzo6Ojo6Ojo6IjsKKyBteSAkczM5MHhfYXNtPSJzMzkweGNhcC5vIHMzOTB4Y3B1aWQubzpibi1zMzkweC5vIHMzOTB4LW1vbnQubyBzMzkweC1nZjJtLm86OmFlcy1zMzkweC5vIGFlcy1jdHIubyBhZXMteHRzLm86OjpzaGExLXMzOTB4Lm8gc2hhMjU2LXMzOTB4Lm8gc2hhNTEyLXMzOTB4Lm86OnJjNC1zMzkweC5vOjo6OjpnaGFzaC1zMzkweC5vOiI7CistbXkgJGFybXY0X2FzbT0iYXJtY2FwLm8gYXJtdjRjcHVpZC5vOmJuX2FzbS5vIGFybXY0LW1vbnQubyBhcm12NC1nZjJtLm86OmFlc19jYmMubyBhZXMtYXJtdjQubzo6OnNoYTEtYXJtdjQtbGFyZ2UubyBzaGEyNTYtYXJtdjQubyBzaGE1MTItYXJtdjQubzo6Ojo6OjpnaGFzaC1hcm12NC5vOjp2b2lkIjsKKytteSAkYXJtdjRfYXNtPSJhcm1jYXAubyBhcm12NGNwdWlkLm86Ym5fYXNtLm8gYXJtdjQtbW9udC5vIGFybXY0LWdmMm0ubzo6YWVzX2NiYy5vIGFlcy1hcm12NC5vIGJzYWVzLWFybXY3Lm8gYWVzdjgtYXJteC5vOjo6c2hhMS1hcm12NC1sYXJnZS5vIHNoYTI1Ni1hcm12NC5vIHNoYTUxMi1hcm12NC5vOjo6Ojo6OmdoYXNoLWFybXY0Lm8gZ2hhc2h2OC1hcm14Lm86OnZvaWQiOworK215ICRhYXJjaDY0X2FzbT0iYXJtY2FwLm8gYXJtNjRjcHVpZC5vIG1lbV9jbHIubzo6OmFlc19jb3JlLm8gYWVzX2NiYy5vIGFlc3Y4LWFybXgubzo6OnNoYTEtYXJtdjgubyBzaGEyNTYtYXJtdjgubyBzaGE1MTItYXJtdjgubzo6Ojo6OjpnaGFzaHY4LWFybXgubzoiOworIG15ICRwYXJpc2MxMV9hc209InBhcmlzY2lkLm86Ym5fYXNtLm8gcGFyaXNjLW1vbnQubzo6YWVzX2NvcmUubyBhZXNfY2JjLm8gYWVzLXBhcmlzYy5vOjo6c2hhMS1wYXJpc2MubyBzaGEyNTYtcGFyaXNjLm8gc2hhNTEyLXBhcmlzYy5vOjpyYzQtcGFyaXNjLm86Ojo6OmdoYXNoLXBhcmlzYy5vOjozMiI7CisgbXkgJHBhcmlzYzIwX2FzbT0icGFyaXNjaWQubzpwYS1yaXNjMlcubyBwYXJpc2MtbW9udC5vOjphZXNfY29yZS5vIGFlc19jYmMubyBhZXMtcGFyaXNjLm86OjpzaGExLXBhcmlzYy5vIHNoYTI1Ni1wYXJpc2MubyBzaGE1MTItcGFyaXNjLm86OnJjNC1wYXJpc2Mubzo6Ojo6Z2hhc2gtcGFyaXNjLm86OjY0IjsKKyBteSAkcHBjMzJfYXNtPSJwcGNjcHVpZC5vIHBwY2NhcC5vOmJuLXBwYy5vIHBwYy1tb250Lm8gcHBjNjQtbW9udC5vOjphZXNfY29yZS5vIGFlc19jYmMubyBhZXMtcHBjLm86OjpzaGExLXBwYy5vIHNoYTI1Ni1wcGMubzo6Ojo6Ojo6IjsKK0BAIC0zNTAsNiArMzUxLDcgQEAgbXkgJXRhYmxlPSgKKyAjIEl0J3MgYmVsaWV2ZWQgdGhhdCBtYWpvcml0eSBvZiBBUk0gdG9vbGNoYWlucyBwcmVkZWZpbmUgYXBwcm9wcmlhdGUgLW1hcmNoLgorICMgSWYgeW91IGNvbXBpbGVyIGRvZXMgbm90LCBkbyBjb21wbGVtZW50IGNvbmZpZyBjb21tYW5kIGxpbmUgd2l0aCBvbmUhCisgImxpbnV4LWFybXY0IiwJImdjYzotRFRFUk1JTyAtTzMgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke2FybXY0X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImxpbnV4LWFhcmNoNjQiLCJnY2M6LURURVJNSU8gLU8zIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke2FhcmNoNjRfYXNtfTpsaW51eDY0OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorICMjIyMgSUEtMzIgdGFyZ2V0cy4uLgorICJsaW51eC1pYTMyLWljYyIsCSJpY2M6LURMX0VORElBTiAtRFRFUk1JTyAtTzIgLW5vX2NwcHJ0OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2VsZl9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotS1BJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorICJsaW51eC1lbGYiLAkiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU8gLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2VsZl9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorQEAgLTE1MDMsNyArMTUwNSw3IEBAIGlmICgkcm1kMTYwX29iaiA9fiAvXC5vJC8pCisgCX0KKyBpZiAoJGFlc19vYmogPX4gL1wubyQvKQorIAl7CistCSRjZmxhZ3MuPSIgLURBRVNfQVNNIjsKKysJJGNmbGFncy49IiAtREFFU19BU00iIGlmICgkYWVzX29iaiA9fiBtL1xiYWVzXC0vKTs7CisgCSMgYWVzLWN0ci5vIGlzIG5vdCBhIHJlYWwgZmlsZSwgb25seSBpbmRpY2F0aW9uIHRoYXQgYXNzZW1ibGVyCisgCSMgbW9kdWxlIGltcGxlbWVudHMgQUVTX2N0cjMyX2VuY3J5cHQuLi4KKyAJJGNmbGFncy49IiAtREFFU19DVFJfQVNNIiBpZiAoJGFlc19vYmogPX4gcy9ccyphZXNcLWN0clwuby8vKTsKK0BAIC0xNTI1LDcgKzE1MjcsNyBAQCBlbHNlCXsKKyAJJHdwX29iaj0id3BfYmxvY2subyI7CisgCX0KKyAkY21sbF9vYmo9JGNtbGxfZW5jCXVubGVzcyAoJGNtbGxfb2JqID1+IC8ubyQvKTsKKy1pZiAoJG1vZGVzX29iaiA9fiAvZ2hhc2gvKQorK2lmICgkbW9kZXNfb2JqID1+IC9naGFzaFwtLykKKyAJeworIAkkY2ZsYWdzLj0iIC1ER0hBU0hfQVNNIjsKKyAJfQorZGlmZiAtLWdpdCBhL2NvbmZpZyBiL2NvbmZpZworaW5kZXggNDFmYTJhNi4uZGZmN2RmNyAxMDA3NTUKKy0tLSBhL2NvbmZpZworKysrIGIvY29uZmlnCitAQCAtNjQ0LDYgKzY0NCw3IEBAIGNhc2UgIiRHVUVTU09TIiBpbgorICAgYXJtdlsxLTNdKi0qLWxpbnV4MikgT1VUPSJsaW51eC1nZW5lcmljMzIiIDs7CisgICBhcm12WzctOV0qLSotbGludXgyKSBPVVQ9ImxpbnV4LWFybXY0Ijsgb3B0aW9ucz0iJG9wdGlvbnMgLW1hcmNoPWFybXY3LWEiIDs7CisgICBhcm0qLSotbGludXgyKSBPVVQ9ImxpbnV4LWFybXY0IiA7OworKyAgYWFyY2g2NC0qLWxpbnV4MikgT1VUPSJsaW51eC1hYXJjaDY0IiA7OworICAgc2gqYi0qLWxpbnV4MikgT1VUPSJsaW51eC1nZW5lcmljMzIiOyBvcHRpb25zPSIkb3B0aW9ucyAtREJfRU5ESUFOIiA7OworICAgc2gqLSotbGludXgyKSAgT1VUPSJsaW51eC1nZW5lcmljMzIiOyBvcHRpb25zPSIkb3B0aW9ucyAtRExfRU5ESUFOIiA7OworICAgbTY4ayotKi1saW51eDIpIE9VVD0ibGludXgtZ2VuZXJpYzMyIjsgb3B0aW9ucz0iJG9wdGlvbnMgLURCX0VORElBTiIgOzsKK2RpZmYgLS1naXQgYS9jcnlwdG8vYWVzL01ha2VmaWxlIGIvY3J5cHRvL2Flcy9NYWtlZmlsZQoraW5kZXggNDVlZGUwYS4uOTE4MWExYSAxMDA2NDQKKy0tLSBhL2NyeXB0by9hZXMvTWFrZWZpbGUKKysrKyBiL2NyeXB0by9hZXMvTWFrZWZpbGUKK0BAIC03OCw5ICs3OCwxNSBAQCBhZXMtcGFyaXNjLnM6CWFzbS9hZXMtcGFyaXNjLnBsCisgYWVzLW1pcHMuUzoJYXNtL2Flcy1taXBzLnBsCisgCSQoUEVSTCkgYXNtL2Flcy1taXBzLnBsICQoUEVSTEFTTV9TQ0hFTUUpICRACisgCisrYWVzdjgtYXJteC5TOglhc20vYWVzdjgtYXJteC5wbAorKwkkKFBFUkwpIGFzbS9hZXN2OC1hcm14LnBsICQoUEVSTEFTTV9TQ0hFTUUpICRACisrYWVzdjgtYXJteC5vOglhZXN2OC1hcm14LlMKKysKKyAjIEdOVSBtYWtlICJjYXRjaCBhbGwiCisgYWVzLSUuUzoJYXNtL2Flcy0lLnBsOwkkKFBFUkwpICQ8ICQoUEVSTEFTTV9TQ0hFTUUpID4gJEAKKyBhZXMtYXJtdjQubzoJYWVzLWFybXY0LlMKKytic2Flcy0lLlM6CWFzbS9ic2Flcy0lLnBsOwkkKFBFUkwpICQ8ICQoUEVSTEFTTV9TQ0hFTUUpICRACisrYnNhZXMtYXJtdjcubzoJYnNhZXMtYXJtdjcuUworIAorIGZpbGVzOgorIAkkKFBFUkwpICQoVE9QKS91dGlsL2ZpbGVzLnBsIE1ha2VmaWxlID4+ICQoVE9QKS9NSU5GTworZGlmZiAtLWdpdCBhL2NyeXB0by9hZXMvYXNtL2Flcy1hcm12NC5wbCBiL2NyeXB0by9hZXMvYXNtL2Flcy1hcm12NC5wbAoraW5kZXggODZiODZjNC4uNGY4OTE3MCAxMDA2NDQKKy0tLSBhL2NyeXB0by9hZXMvYXNtL2Flcy1hcm12NC5wbAorKysrIGIvY3J5cHRvL2Flcy9hc20vYWVzLWFybXY0LnBsCitAQCAtMSw3ICsxLDcgQEAKKyAjIS91c3IvYmluL2VudiBwZXJsCisgCisgIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLSMgV3JpdHRlbiBieSBBbmR5IFBvbHlha292IDxhcHByb0BmeS5jaGFsbWVycy5zZT4gZm9yIHRoZSBPcGVuU1NMCisrIyBXcml0dGVuIGJ5IEFuZHkgUG9seWFrb3YgPGFwcHJvQG9wZW5zc2wub3JnPiBmb3IgdGhlIE9wZW5TU0wKKyAjIHByb2plY3QuIFRoZSBtb2R1bGUgaXMsIGhvd2V2ZXIsIGR1YWwgbGljZW5zZWQgdW5kZXIgT3BlblNTTCBhbmQKKyAjIENSWVBUT0dBTVMgbGljZW5zZXMgZGVwZW5kaW5nIG9uIHdoZXJlIHlvdSBvYnRhaW4gaXQuIEZvciBmdXJ0aGVyCisgIyBkZXRhaWxzIHNlZSBodHRwOi8vd3d3Lm9wZW5zc2wub3JnL35hcHByby9jcnlwdG9nYW1zLy4KK0BAIC01MSw5ICs1MSwyMyBAQCAka2V5PSJyMTEiOworICRyb3VuZHM9InIxMiI7CisgCisgJGNvZGU9PDxfX187CistI2luY2x1ZGUgImFybV9hcmNoLmgiCisrI2lmbmRlZiBfX0tFUk5FTF9fCisrIyBpbmNsdWRlICJhcm1fYXJjaC5oIgorKyNlbHNlCisrIyBkZWZpbmUgX19BUk1fQVJDSF9fIF9fTElOVVhfQVJNX0FSQ0hfXworKyNlbmRpZgorKworIC50ZXh0CisrI2lmIF9fQVJNX0FSQ0hfXzw3CisrLmNvZGUJMzIKKysjZWxzZQorKy5zeW50YXgJdW5pZmllZAorKyMgaWZkZWYgX190aHVtYjJfXworKy50aHVtYgorKyMgZWxzZQorIC5jb2RlCTMyCisrIyBlbmRpZgorKyNlbmRpZgorIAorIC50eXBlCUFFU19UZSwlb2JqZWN0CisgLmFsaWduCTUKK0BAIC0xNjcsNyArMTgxLDExIEBAIEFFU19UZToKKyAudHlwZSAgIEFFU19lbmNyeXB0LCVmdW5jdGlvbgorIC5hbGlnbgk1CisgQUVTX2VuY3J5cHQ6CisrI2lmIF9fQVJNX0FSQ0hfXzw3CisgCXN1YglyMyxwYywjOAkJQCBBRVNfZW5jcnlwdAorKyNlbHNlCisrCWFkcglyMyxBRVNfZW5jcnlwdAorKyNlbmRpZgorIAlzdG1kYiAgIHNwISx7cjEscjQtcjEyLGxyfQorIAltb3YJJHJvdW5kcyxyMAkJQCBpbnAKKyAJbW92CSRrZXkscjIKK0BAIC00MDksMTEgKzQyNywyMSBAQCBfYXJtdjRfQUVTX2VuY3J5cHQ6CisgLmFsaWduCTUKKyBwcml2YXRlX0FFU19zZXRfZW5jcnlwdF9rZXk6CisgX2FybXY0X0FFU19zZXRfZW5jcnlwdF9rZXk6CisrI2lmIF9fQVJNX0FSQ0hfXzw3CisgCXN1YglyMyxwYywjOAkJQCBBRVNfc2V0X2VuY3J5cHRfa2V5CisrI2Vsc2UKKysJYWRyCXIzLHByaXZhdGVfQUVTX3NldF9lbmNyeXB0X2tleQorKyNlbmRpZgorIAl0ZXEJcjAsIzAKKysjaWYgX19BUk1fQVJDSF9fPj03CisrCWl0dAllcQkJCUAgVGh1bWIyIHRoaW5nLCBzYW5pdHkgY2hlY2sgaW4gQVJNCisrI2VuZGlmCisgCW1vdmVxCXIwLCMtMQorIAliZXEJLkxhYnJ0CisgCXRlcQlyMiwjMAorKyNpZiBfX0FSTV9BUkNIX18+PTcKKysJaXR0CWVxCQkJQCBUaHVtYjIgdGhpbmcsIHNhbml0eSBjaGVjayBpbiBBUk0KKysjZW5kaWYKKyAJbW92ZXEJcjAsIy0xCisgCWJlcQkuTGFicnQKKyAKK0BAIC00MjIsNiArNDUwLDkgQEAgX2FybXY0X0FFU19zZXRfZW5jcnlwdF9rZXk6CisgCXRlcQlyMSwjMTkyCisgCWJlcQkuTG9rCisgCXRlcQlyMSwjMjU2CisrI2lmIF9fQVJNX0FSQ0hfXz49NworKwlpdHQJbmUJCQlAIFRodW1iMiB0aGluZywgc2FuaXR5IGNoZWNrIGluIEFSTQorKyNlbmRpZgorIAltb3ZuZQlyMCwjLTEKKyAJYm5lCS5MYWJydAorIAorQEAgLTU3Niw2ICs2MDcsOSBAQCBfYXJtdjRfQUVTX3NldF9lbmNyeXB0X2tleToKKyAJc3RyCSRzMixbJGtleSwjLTE2XQorIAlzdWJzCSRyb3VuZHMsJHJvdW5kcywjMQorIAlzdHIJJHMzLFska2V5LCMtMTJdCisrI2lmIF9fQVJNX0FSQ0hfXz49NworKwlpdHQJZXEJCQkJQCBUaHVtYjIgdGhpbmcsIHNhbml0eSBjaGVjayBpbiBBUk0KKysjZW5kaWYKKyAJc3ViZXEJcjIsJGtleSwjMjE2CisgCWJlcQkuTGRvbmUKKyAKK0BAIC02NDUsNiArNjc5LDkgQEAgX2FybXY0X0FFU19zZXRfZW5jcnlwdF9rZXk6CisgCXN0cgkkczIsWyRrZXksIy0yNF0KKyAJc3Vicwkkcm91bmRzLCRyb3VuZHMsIzEKKyAJc3RyCSRzMyxbJGtleSwjLTIwXQorKyNpZiBfX0FSTV9BUkNIX18+PTcKKysJaXR0CWVxCQkJCUAgVGh1bWIyIHRoaW5nLCBzYW5pdHkgY2hlY2sgaW4gQVJNCisrI2VuZGlmCisgCXN1YmVxCXIyLCRrZXksIzI1NgorIAliZXEJLkxkb25lCisgCitAQCAtNjc0LDExICs3MTEsMTcgQEAgX2FybXY0X0FFU19zZXRfZW5jcnlwdF9rZXk6CisgCXN0cgkkaTMsWyRrZXksIy00XQorIAliCS5MMjU2X2xvb3AKKyAKKysuYWxpZ24JMgorIC5MZG9uZToJbW92CXIwLCMwCisgCWxkbWlhICAgc3AhLHtyNC1yMTIsbHJ9CistLkxhYnJ0Ogl0c3QJbHIsIzEKKysuTGFicnQ6CisrI2lmIF9fQVJNX0FSQ0hfXz49NQorKwlyZXQJCQkJQCBieCBscgorKyNlbHNlCisrCXRzdAlsciwjMQorIAltb3ZlcQlwYyxscgkJCUAgYmUgYmluYXJ5IGNvbXBhdGlibGUgd2l0aCBWNCwgeWV0CisgCWJ4CWxyCQkJQCBpbnRlcm9wZXJhYmxlIHdpdGggVGh1bWIgSVNBOi0pCisrI2VuZGlmCisgLnNpemUJcHJpdmF0ZV9BRVNfc2V0X2VuY3J5cHRfa2V5LC4tcHJpdmF0ZV9BRVNfc2V0X2VuY3J5cHRfa2V5CisgCisgLmdsb2JhbCBwcml2YXRlX0FFU19zZXRfZGVjcnlwdF9rZXkKK0BAIC02ODgsMzQgKzczMSw1NyBAQCBwcml2YXRlX0FFU19zZXRfZGVjcnlwdF9rZXk6CisgCXN0cglscixbc3AsIy00XSEgICAgICAgICAgICBAIHB1c2ggbHIKKyAJYmwJX2FybXY0X0FFU19zZXRfZW5jcnlwdF9rZXkKKyAJdGVxCXIwLCMwCistCWxkcm5lCWxyLFtzcF0sIzQgICAgICAgICAgICAgIEAgcG9wIGxyCisrCWxkcglscixbc3BdLCM0ICAgICAgICAgICAgICBAIHBvcCBscgorIAlibmUJLkxhYnJ0CisgCistCXN0bWRiICAgc3AhLHtyNC1yMTJ9CisrCW1vdglyMCxyMgkJCUAgQUVTX3NldF9lbmNyeXB0X2tleSBwcmVzZXJ2ZXMgcjIsCisrCW1vdglyMSxyMgkJCUAgd2hpY2ggaXMgQUVTX0tFWSAqa2V5CisrCWIJX2FybXY0X0FFU19zZXRfZW5jMmRlY19rZXkKKysuc2l6ZQlwcml2YXRlX0FFU19zZXRfZGVjcnlwdF9rZXksLi1wcml2YXRlX0FFU19zZXRfZGVjcnlwdF9rZXkKKyAKKy0JbGRyCSRyb3VuZHMsW3IyLCMyNDBdCUAgQUVTX3NldF9lbmNyeXB0X2tleSBwcmVzZXJ2ZXMgcjIsCistCW1vdgkka2V5LHIyCQkJQCB3aGljaCBpcyBBRVNfS0VZICprZXkKKy0JbW92CSRpMSxyMgorLQlhZGQJJGkyLHIyLCRyb3VuZHMsbHNsIzQKKytAIHZvaWQgQUVTX3NldF9lbmMyZGVjX2tleShjb25zdCBBRVNfS0VZICppbnAsQUVTX0tFWSAqb3V0KQorKy5nbG9iYWwJQUVTX3NldF9lbmMyZGVjX2tleQorKy50eXBlCUFFU19zZXRfZW5jMmRlY19rZXksJWZ1bmN0aW9uCisrLmFsaWduCTUKKytBRVNfc2V0X2VuYzJkZWNfa2V5OgorK19hcm12NF9BRVNfc2V0X2VuYzJkZWNfa2V5OgorKwlzdG1kYiAgIHNwISx7cjQtcjEyLGxyfQorKworKwlsZHIJJHJvdW5kcyxbcjAsIzI0MF0KKysJbW92CSRpMSxyMAkJCUAgaW5wdXQKKysJYWRkCSRpMixyMCwkcm91bmRzLGxzbCM0CisrCW1vdgkka2V5LHIxCQkJQCBvdXB1dAorKwlhZGQJJHRibCxyMSwkcm91bmRzLGxzbCM0CisrCXN0cgkkcm91bmRzLFtyMSwjMjQwXQorKworKy5MaW52OglsZHIJJHMwLFskaTFdLCMxNgorKwlsZHIJJHMxLFskaTEsIy0xMl0KKysJbGRyCSRzMixbJGkxLCMtOF0KKysJbGRyCSRzMyxbJGkxLCMtNF0KKysJbGRyCSR0MSxbJGkyXSwjLTE2CisrCWxkcgkkdDIsWyRpMiwjMTYrNF0KKysJbGRyCSR0MyxbJGkyLCMxNis4XQorKwlsZHIJJGkzLFskaTIsIzE2KzEyXQorKwlzdHIJJHMwLFskdGJsXSwjLTE2CisrCXN0cgkkczEsWyR0YmwsIzE2KzRdCisrCXN0cgkkczIsWyR0YmwsIzE2KzhdCisrCXN0cgkkczMsWyR0YmwsIzE2KzEyXQorKwlzdHIJJHQxLFska2V5XSwjMTYKKysJc3RyCSR0MixbJGtleSwjLTEyXQorKwlzdHIJJHQzLFska2V5LCMtOF0KKysJc3RyCSRpMyxbJGtleSwjLTRdCisrCXRlcQkkaTEsJGkyCisrCWJuZQkuTGludgorIAorLS5MaW52OglsZHIJJHMwLFskaTFdCisrCWxkcgkkczAsWyRpMV0KKyAJbGRyCSRzMSxbJGkxLCM0XQorIAlsZHIJJHMyLFskaTEsIzhdCisgCWxkcgkkczMsWyRpMSwjMTJdCistCWxkcgkkdDEsWyRpMl0KKy0JbGRyCSR0MixbJGkyLCM0XQorLQlsZHIJJHQzLFskaTIsIzhdCistCWxkcgkkaTMsWyRpMiwjMTJdCistCXN0cgkkczAsWyRpMl0sIy0xNgorLQlzdHIJJHMxLFskaTIsIzE2KzRdCistCXN0cgkkczIsWyRpMiwjMTYrOF0KKy0Jc3RyCSRzMyxbJGkyLCMxNisxMl0KKy0Jc3RyCSR0MSxbJGkxXSwjMTYKKy0Jc3RyCSR0MixbJGkxLCMtMTJdCistCXN0cgkkdDMsWyRpMSwjLThdCistCXN0cgkkaTMsWyRpMSwjLTRdCistCXRlcQkkaTEsJGkyCistCWJuZQkuTGludgorKwlzdHIJJHMwLFska2V5XQorKwlzdHIJJHMxLFska2V5LCM0XQorKwlzdHIJJHMyLFska2V5LCM4XQorKwlzdHIJJHMzLFska2V5LCMxMl0KKysJc3ViCSRrZXksJGtleSwkcm91bmRzLGxzbCMzCisgX19fCisgJG1hc2s4MD0kaTE7CisgJG1hc2sxYj0kaTI7CitAQCAtNzczLDcgKzgzOSw3IEBAICRjb2RlLj08PF9fXzsKKyAJbW92ZXEJcGMsbHIJCQlAIGJlIGJpbmFyeSBjb21wYXRpYmxlIHdpdGggVjQsIHlldAorIAlieAlscgkJCUAgaW50ZXJvcGVyYWJsZSB3aXRoIFRodW1iIElTQTotKQorICNlbmRpZgorLS5zaXplCXByaXZhdGVfQUVTX3NldF9kZWNyeXB0X2tleSwuLXByaXZhdGVfQUVTX3NldF9kZWNyeXB0X2tleQorKy5zaXplCUFFU19zZXRfZW5jMmRlY19rZXksLi1BRVNfc2V0X2VuYzJkZWNfa2V5CisgCisgLnR5cGUJQUVTX1RkLCVvYmplY3QKKyAuYWxpZ24JNQorQEAgLTg4Myw3ICs5NDksMTEgQEAgQUVTX1RkOgorIC50eXBlICAgQUVTX2RlY3J5cHQsJWZ1bmN0aW9uCisgLmFsaWduCTUKKyBBRVNfZGVjcnlwdDoKKysjaWYgX19BUk1fQVJDSF9fPDcKKyAJc3ViCXIzLHBjLCM4CQlAIEFFU19kZWNyeXB0CisrI2Vsc2UKKysJYWRyCXIzLEFFU19kZWNyeXB0CisrI2VuZGlmCisgCXN0bWRiICAgc3AhLHtyMSxyNC1yMTIsbHJ9CisgCW1vdgkkcm91bmRzLHIwCQlAIGlucAorIAltb3YJJGtleSxyMgorQEAgLTEwODAsOCArMTE1MCw5IEBAIF9hcm12NF9BRVNfZGVjcnlwdDoKKyAJbGRyYgkkdDMsWyR0YmwsJGkzXQkJQCBUZDRbczA+PjBdCisgCWFuZAkkaTMsbHIsJHMxLGxzciM4CisgCisrCWFkZAkkczEsJHRibCwkczEsbHNyIzI0CisgCWxkcmIJJGkxLFskdGJsLCRpMV0JCUAgVGQ0W3MxPj4wXQorLQlsZHJiCSRzMSxbJHRibCwkczEsbHNyIzI0XQlAIFRkNFtzMT4+MjRdCisrCWxkcmIJJHMxLFskczFdCQlAIFRkNFtzMT4+MjRdCisgCWxkcmIJJGkyLFskdGJsLCRpMl0JCUAgVGQ0W3MxPj4xNl0KKyAJZW9yCSRzMCwkaTEsJHMwLGxzbCMyNAorIAlsZHJiCSRpMyxbJHRibCwkaTNdCQlAIFRkNFtzMT4+OF0KK0BAIC0xMDk0LDcgKzExNjUsOCBAQCBfYXJtdjRfQUVTX2RlY3J5cHQ6CisgCWxkcmIJJGkyLFskdGJsLCRpMl0JCUAgVGQ0W3MyPj4wXQorIAlhbmQJJGkzLGxyLCRzMixsc3IjMTYKKyAKKy0JbGRyYgkkczIsWyR0YmwsJHMyLGxzciMyNF0JQCBUZDRbczI+PjI0XQorKwlhZGQJJHMyLCR0YmwsJHMyLGxzciMyNAorKwlsZHJiCSRzMixbJHMyXQkJQCBUZDRbczI+PjI0XQorIAllb3IJJHMwLCRzMCwkaTEsbHNsIzgKKyAJbGRyYgkkaTMsWyR0YmwsJGkzXQkJQCBUZDRbczI+PjE2XQorIAllb3IJJHMxLCRpMiwkczEsbHNsIzE2CitAQCAtMTEwNiw4ICsxMTc4LDkgQEAgX2FybXY0X0FFU19kZWNyeXB0OgorIAlsZHJiCSRpMixbJHRibCwkaTJdCQlAIFRkNFtzMz4+OF0KKyAJYW5kCSRpMyxsciwkczMJCUAgaTIKKyAKKysJYWRkCSRzMywkdGJsLCRzMyxsc3IjMjQKKyAJbGRyYgkkaTMsWyR0YmwsJGkzXQkJQCBUZDRbczM+PjBdCistCWxkcmIJJHMzLFskdGJsLCRzMyxsc3IjMjRdCUAgVGQ0W3MzPj4yNF0KKysJbGRyYgkkczMsWyRzM10JCUAgVGQ0W3MzPj4yNF0KKyAJZW9yCSRzMCwkczAsJGkxLGxzbCMxNgorIAlsZHIJJGkxLFska2V5LCMwXQorIAllb3IJJHMxLCRzMSwkaTIsbHNsIzgKK0BAIC0xMTMwLDUgKzEyMDMsMTUgQEAgX2FybXY0X0FFU19kZWNyeXB0OgorIF9fXworIAorICRjb2RlID1+IHMvXGJieFxzK2xyXGIvLndvcmRcdDB4ZTEyZmZmMWUvZ207CSMgbWFrZSBpdCBwb3NzaWJsZSB0byBjb21waWxlIHdpdGggLW1hcmNoPWFybXY0CisrJGNvZGUgPX4gcy9cYnJldFxiL2J4XHRsci9nbTsKKysKKytvcGVuIFNFTEYsJDA7Cisrd2hpbGUoPFNFTEY+KSB7CisrCW5leHQgaWYgKC9eIyEvKTsKKysJbGFzdCBpZiAoIXMvXiMvQC8gYW5kICEvXiQvKTsKKysJcHJpbnQ7CisrfQorK2Nsb3NlIFNFTEY7CisrCisgcHJpbnQgJGNvZGU7CisgY2xvc2UgU1RET1VUOwkjIGVuZm9yY2UgZmx1c2gKK2RpZmYgLS1naXQgYS9jcnlwdG8vYWVzL2FzbS9hZXN2OC1hcm14LnBsIGIvY3J5cHRvL2Flcy9hc20vYWVzdjgtYXJteC5wbAorbmV3IGZpbGUgbW9kZSAxMDA3NTUKK2luZGV4IDAwMDAwMDAuLjQxNWRjMDQKKy0tLSAvZGV2L251bGwKKysrKyBiL2NyeXB0by9hZXMvYXNtL2Flc3Y4LWFybXgucGwKK0BAIC0wLDAgKzEsOTgwIEBACisrIyEvdXNyL2Jpbi9lbnYgcGVybAorKyMKKysjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisrIyBXcml0dGVuIGJ5IEFuZHkgUG9seWFrb3YgPGFwcHJvQG9wZW5zc2wub3JnPiBmb3IgdGhlIE9wZW5TU0wKKysjIHByb2plY3QuIFRoZSBtb2R1bGUgaXMsIGhvd2V2ZXIsIGR1YWwgbGljZW5zZWQgdW5kZXIgT3BlblNTTCBhbmQKKysjIENSWVBUT0dBTVMgbGljZW5zZXMgZGVwZW5kaW5nIG9uIHdoZXJlIHlvdSBvYnRhaW4gaXQuIEZvciBmdXJ0aGVyCisrIyBkZXRhaWxzIHNlZSBodHRwOi8vd3d3Lm9wZW5zc2wub3JnL35hcHByby9jcnlwdG9nYW1zLy4KKysjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisrIworKyMgVGhpcyBtb2R1bGUgaW1wbGVtZW50cyBzdXBwb3J0IGZvciBBUk12OCBBRVMgaW5zdHJ1Y3Rpb25zLiBUaGUKKysjIG1vZHVsZSBpcyBlbmRpYW4tYWdub3N0aWMgaW4gc2Vuc2UgdGhhdCBpdCBzdXBwb3J0cyBib3RoIGJpZy0gYW5kCisrIyBsaXR0bGUtZW5kaWFuIGNhc2VzLiBBcyBkb2VzIGl0IHN1cHBvcnQgYm90aCAzMi0gYW5kIDY0LWJpdCBtb2RlcworKyMgb2Ygb3BlcmF0aW9uLiBMYXR0ZXIgaXMgYWNoaWV2ZWQgYnkgbGltaXRpbmcgYW1vdW50IG9mIHV0aWxpemVkCisrIyByZWdpc3RlcnMgdG8gMTYsIHdoaWNoIGltcGxpZXMgYWRkaXRpb25hbCBpbnN0cnVjdGlvbnMuIFRoaXMgaGFzCisrIyBubyBlZmZlY3Qgb24gbWlnaHR5IEFwcGxlIEE3LCBhcyByZXN1bHRzIGFyZSBsaXRlcmFsbHkgZXF1YWwgdG8KKysjIHRoZSB0aGVvcmV0aWNhbCBlc3RpbWF0ZXMgYmFzZWQgb24gaW5zdHJ1Y3Rpb24gbGF0ZW5jaWVzIGFuZCBpc3N1ZQorKyMgcmF0ZS4gSXQgcmVtYWlucyB0byBiZSBzZWVuIGhvdyBkb2VzIGl0IGFmZmVjdCBvdGhlciBwbGF0Zm9ybXMuLi4KKysjCisrIyBQZXJmb3JtYW5jZSBpbiBjeWNsZXMgcGVyIGJ5dGUgcHJvY2Vzc2VkIHdpdGggMTI4LWJpdCBrZXk6CisrIworKyMJCUNCQyBlbmMJCUNCQyBkZWMJCUNUUgorKyMgQXBwbGUgQTcJMi4zOQkJMS4yMAkJMS4yMAorKyMgQ29ydGV4LUE1eAluL2EJCW4vYQkJbi9hCisrCisrJGZsYXZvdXIgPSBzaGlmdDsKKytvcGVuIFNURE9VVCwiPiIuc2hpZnQ7CisrCisrJHByZWZpeD0iYWVzX3Y4IjsKKysKKyskY29kZT08PF9fXzsKKysjaW5jbHVkZSAiYXJtX2FyY2guaCIKKysKKysjaWYgX19BUk1fQVJDSF9fPj03CisrLnRleHQKKytfX18KKyskY29kZS49Ii5hcmNoCWFybXY4LWErY3J5cHRvXG4iCWlmICgkZmxhdm91ciA9fiAvNjQvKTsKKyskY29kZS49Ii5mcHUJbmVvblxuLmNvZGUJMzJcbiIJaWYgKCRmbGF2b3VyICF+IC82NC8pOworKworKyMgQXNzZW1ibGVyIG1uZW1vbmljcyBhcmUgYW4gZWNsZWN0aWMgbWl4IG9mIDMyLSBhbmQgNjQtYml0IHN5bnRheCwKKysjIE5FT04gaXMgbW9zdGx5IDMyLWJpdCBtbmVtb25pY3MsIGludGVnZXIgLSBtb3N0bHkgNjQuIEdvYWwgaXMgdG8KKysjIG1haW50YWluIGJvdGggMzItIGFuZCA2NC1iaXQgY29kZXMgd2l0aGluIHNpbmdsZSBtb2R1bGUgYW5kCisrIyB0cmFuc2xpdGVyYXRlIGNvbW1vbiBjb2RlIHRvIGVpdGhlciBmbGF2b3VyIHdpdGggcmVnZXggdm9kb28uCisrIworK3t7eworK215ICgkaW5wLCRiaXRzLCRvdXQsJHB0ciwkcm91bmRzKT0oIngwIiwidzEiLCJ4MiIsIngzIiwidzEyIik7CisrbXkgKCR6ZXJvLCRyY29uLCRtYXNrLCRpbjAsJGluMSwkdG1wLCRrZXkpPQorKwkkZmxhdm91cj1+LzY0Lz8gbWFwKCJxJF8iLCgwLi42KSkgOiBtYXAoInEkXyIsKDAuLjMsOC4uMTApKTsKKysKKysKKyskY29kZS49PDxfX187CisrLmFsaWduCTUKKytyY29uOgorKy5sb25nCTB4MDEsMHgwMSwweDAxLDB4MDEKKysubG9uZwkweDBjMGYwZTBkLDB4MGMwZjBlMGQsMHgwYzBmMGUwZCwweDBjMGYwZTBkCS8vIHJvdGF0ZS1uLXNwbGF0CisrLmxvbmcJMHgxYiwweDFiLDB4MWIsMHgxYgorKworKy5nbG9ibAkke3ByZWZpeH1fc2V0X2VuY3J5cHRfa2V5CisrLnR5cGUJJHtwcmVmaXh9X3NldF9lbmNyeXB0X2tleSwlZnVuY3Rpb24KKysuYWxpZ24JNQorKyR7cHJlZml4fV9zZXRfZW5jcnlwdF9rZXk6CisrLkxlbmNfa2V5OgorK19fXworKyRjb2RlLj08PF9fXwlpZiAoJGZsYXZvdXIgPX4gLzY0Lyk7CisrCXN0cAl4MjkseDMwLFtzcCwjLTE2XSEKKysJYWRkCXgyOSxzcCwjMAorK19fXworKyRjb2RlLj08PF9fXzsKKysJYWRyCSRwdHIscmNvbgorKwljbXAJJGJpdHMsIzE5MgorKworKwl2ZW9yCSR6ZXJvLCR6ZXJvLCR6ZXJvCisrCXZsZDEuOAl7JGluMH0sWyRpbnBdLCMxNgorKwltb3YJJGJpdHMsIzgJCS8vIHJldXNlICRiaXRzCisrCXZsZDEuMzIJeyRyY29uLCRtYXNrfSxbJHB0cl0sIzMyCisrCisrCWIubHQJLkxvb3AxMjgKKysJYi5lcQkuTDE5MgorKwliCS5MMjU2CisrCisrLmFsaWduCTQKKysuTG9vcDEyODoKKysJdnRibC44CSRrZXkseyRpbjB9LCRtYXNrCisrCXZleHQuOAkkdG1wLCR6ZXJvLCRpbjAsIzEyCisrCXZzdDEuMzIJeyRpbjB9LFskb3V0XSwjMTYKKysJYWVzZQkka2V5LCR6ZXJvCisrCXN1YnMJJGJpdHMsJGJpdHMsIzEKKysKKysJdmVvcgkkaW4wLCRpbjAsJHRtcAorKwl2ZXh0LjgJJHRtcCwkemVybywkdG1wLCMxMgorKwl2ZW9yCSRpbjAsJGluMCwkdG1wCisrCXZleHQuOAkkdG1wLCR6ZXJvLCR0bXAsIzEyCisrCSB2ZW9yCSRrZXksJGtleSwkcmNvbgorKwl2ZW9yCSRpbjAsJGluMCwkdG1wCisrCXZzaGwudTgJJHJjb24sJHJjb24sIzEKKysJdmVvcgkkaW4wLCRpbjAsJGtleQorKwliLm5lCS5Mb29wMTI4CisrCisrCXZsZDEuMzIJeyRyY29ufSxbJHB0cl0KKysKKysJdnRibC44CSRrZXkseyRpbjB9LCRtYXNrCisrCXZleHQuOAkkdG1wLCR6ZXJvLCRpbjAsIzEyCisrCXZzdDEuMzIJeyRpbjB9LFskb3V0XSwjMTYKKysJYWVzZQkka2V5LCR6ZXJvCisrCisrCXZlb3IJJGluMCwkaW4wLCR0bXAKKysJdmV4dC44CSR0bXAsJHplcm8sJHRtcCwjMTIKKysJdmVvcgkkaW4wLCRpbjAsJHRtcAorKwl2ZXh0LjgJJHRtcCwkemVybywkdG1wLCMxMgorKwkgdmVvcgkka2V5LCRrZXksJHJjb24KKysJdmVvcgkkaW4wLCRpbjAsJHRtcAorKwl2c2hsLnU4CSRyY29uLCRyY29uLCMxCisrCXZlb3IJJGluMCwkaW4wLCRrZXkKKysKKysJdnRibC44CSRrZXkseyRpbjB9LCRtYXNrCisrCXZleHQuOAkkdG1wLCR6ZXJvLCRpbjAsIzEyCisrCXZzdDEuMzIJeyRpbjB9LFskb3V0XSwjMTYKKysJYWVzZQkka2V5LCR6ZXJvCisrCisrCXZlb3IJJGluMCwkaW4wLCR0bXAKKysJdmV4dC44CSR0bXAsJHplcm8sJHRtcCwjMTIKKysJdmVvcgkkaW4wLCRpbjAsJHRtcAorKwl2ZXh0LjgJJHRtcCwkemVybywkdG1wLCMxMgorKwkgdmVvcgkka2V5LCRrZXksJHJjb24KKysJdmVvcgkkaW4wLCRpbjAsJHRtcAorKwl2ZW9yCSRpbjAsJGluMCwka2V5CisrCXZzdDEuMzIJeyRpbjB9LFskb3V0XQorKwlhZGQJJG91dCwkb3V0LCMweDUwCisrCisrCW1vdgkkcm91bmRzLCMxMAorKwliCS5MZG9uZQorKworKy5hbGlnbgk0CisrLkwxOTI6CisrCXZsZDEuOAl7JGluMX0sWyRpbnBdLCM4CisrCXZtb3YuaTgJJGtleSwjOAkJCS8vIGJvcnJvdyAka2V5CisrCXZzdDEuMzIJeyRpbjB9LFskb3V0XSwjMTYKKysJdnN1Yi5pOAkkbWFzaywkbWFzaywka2V5CS8vIGFkanVzdCB0aGUgbWFzaworKworKy5Mb29wMTkyOgorKwl2dGJsLjgJJGtleSx7JGluMX0sJG1hc2sKKysJdmV4dC44CSR0bXAsJHplcm8sJGluMCwjMTIKKysJdnN0MS4zMgl7JGluMX0sWyRvdXRdLCM4CisrCWFlc2UJJGtleSwkemVybworKwlzdWJzCSRiaXRzLCRiaXRzLCMxCisrCisrCXZlb3IJJGluMCwkaW4wLCR0bXAKKysJdmV4dC44CSR0bXAsJHplcm8sJHRtcCwjMTIKKysJdmVvcgkkaW4wLCRpbjAsJHRtcAorKwl2ZXh0LjgJJHRtcCwkemVybywkdG1wLCMxMgorKwl2ZW9yCSRpbjAsJGluMCwkdG1wCisrCisrCXZkdXAuMzIJJHRtcCwke2luMH1bM10KKysJdmVvcgkkdG1wLCR0bXAsJGluMQorKwkgdmVvcgkka2V5LCRrZXksJHJjb24KKysJdmV4dC44CSRpbjEsJHplcm8sJGluMSwjMTIKKysJdnNobC51OAkkcmNvbiwkcmNvbiwjMQorKwl2ZW9yCSRpbjEsJGluMSwkdG1wCisrCXZlb3IJJGluMCwkaW4wLCRrZXkKKysJdmVvcgkkaW4xLCRpbjEsJGtleQorKwl2c3QxLjMyCXskaW4wfSxbJG91dF0sIzE2CisrCWIubmUJLkxvb3AxOTIKKysKKysJbW92CSRyb3VuZHMsIzEyCisrCWFkZAkkb3V0LCRvdXQsIzB4MjAKKysJYgkuTGRvbmUKKysKKysuYWxpZ24JNAorKy5MMjU2OgorKwl2bGQxLjgJeyRpbjF9LFskaW5wXQorKwltb3YJJGJpdHMsIzcKKysJbW92CSRyb3VuZHMsIzE0CisrCXZzdDEuMzIJeyRpbjB9LFskb3V0XSwjMTYKKysKKysuTG9vcDI1NjoKKysJdnRibC44CSRrZXkseyRpbjF9LCRtYXNrCisrCXZleHQuOAkkdG1wLCR6ZXJvLCRpbjAsIzEyCisrCXZzdDEuMzIJeyRpbjF9LFskb3V0XSwjMTYKKysJYWVzZQkka2V5LCR6ZXJvCisrCXN1YnMJJGJpdHMsJGJpdHMsIzEKKysKKysJdmVvcgkkaW4wLCRpbjAsJHRtcAorKwl2ZXh0LjgJJHRtcCwkemVybywkdG1wLCMxMgorKwl2ZW9yCSRpbjAsJGluMCwkdG1wCisrCXZleHQuOAkkdG1wLCR6ZXJvLCR0bXAsIzEyCisrCSB2ZW9yCSRrZXksJGtleSwkcmNvbgorKwl2ZW9yCSRpbjAsJGluMCwkdG1wCisrCXZzaGwudTgJJHJjb24sJHJjb24sIzEKKysJdmVvcgkkaW4wLCRpbjAsJGtleQorKwl2c3QxLjMyCXskaW4wfSxbJG91dF0sIzE2CisrCWIuZXEJLkxkb25lCisrCisrCXZkdXAuMzIJJGtleSwke2luMH1bM10JCS8vIGp1c3Qgc3BsYXQKKysJdmV4dC44CSR0bXAsJHplcm8sJGluMSwjMTIKKysJYWVzZQkka2V5LCR6ZXJvCisrCisrCXZlb3IJJGluMSwkaW4xLCR0bXAKKysJdmV4dC44CSR0bXAsJHplcm8sJHRtcCwjMTIKKysJdmVvcgkkaW4xLCRpbjEsJHRtcAorKwl2ZXh0LjgJJHRtcCwkemVybywkdG1wLCMxMgorKwl2ZW9yCSRpbjEsJGluMSwkdG1wCisrCisrCXZlb3IJJGluMSwkaW4xLCRrZXkKKysJYgkuTG9vcDI1NgorKworKy5MZG9uZToKKysJc3RyCSRyb3VuZHMsWyRvdXRdCisrCisrCWVvcgl4MCx4MCx4MAkJLy8gcmV0dXJuIHZhbHVlCisrCWAibGRyCXgyOSxbc3BdLCMxNiIJCWlmICgkZmxhdm91ciA9fiAvNjQvKWAKKysJcmV0CisrLnNpemUJJHtwcmVmaXh9X3NldF9lbmNyeXB0X2tleSwuLSR7cHJlZml4fV9zZXRfZW5jcnlwdF9rZXkKKysKKysuZ2xvYmwJJHtwcmVmaXh9X3NldF9kZWNyeXB0X2tleQorKy50eXBlCSR7cHJlZml4fV9zZXRfZGVjcnlwdF9rZXksJWZ1bmN0aW9uCisrLmFsaWduCTUKKyske3ByZWZpeH1fc2V0X2RlY3J5cHRfa2V5OgorK19fXworKyRjb2RlLj08PF9fXwlpZiAoJGZsYXZvdXIgPX4gLzY0Lyk7CisrCXN0cAl4MjkseDMwLFtzcCwjLTE2XSEKKysJYWRkCXgyOSxzcCwjMAorK19fXworKyRjb2RlLj08PF9fXwlpZiAoJGZsYXZvdXIgIX4gLzY0Lyk7CisrCXN0bWRiCXNwISx7cjQsbHJ9CisrX19fCisrJGNvZGUuPTw8X19fOworKwlibAkuTGVuY19rZXkKKysKKysJc3ViCSRvdXQsJG91dCwjMjQwCQkvLyByZXN0b3JlIG9yaWdpbmFsICRvdXQKKysJbW92CXg0LCMtMTYKKysJYWRkCSRpbnAsJG91dCx4MTIsbHNsIzQJLy8gZW5kIG9mIGtleSBzY2hlZHVsZQorKworKwl2bGQxLjMyCXt2MC4xNmJ9LFskb3V0XQorKwl2bGQxLjMyCXt2MS4xNmJ9LFskaW5wXQorKwl2c3QxLjMyCXt2MC4xNmJ9LFskaW5wXSx4NAorKwl2c3QxLjMyCXt2MS4xNmJ9LFskb3V0XSwjMTYKKysKKysuTG9vcF9pbWM6CisrCXZsZDEuMzIJe3YwLjE2Yn0sWyRvdXRdCisrCXZsZDEuMzIJe3YxLjE2Yn0sWyRpbnBdCisrCWFlc2ltYwl2MC4xNmIsdjAuMTZiCisrCWFlc2ltYwl2MS4xNmIsdjEuMTZiCisrCXZzdDEuMzIJe3YwLjE2Yn0sWyRpbnBdLHg0CisrCXZzdDEuMzIJe3YxLjE2Yn0sWyRvdXRdLCMxNgorKwljbXAJJGlucCwkb3V0CisrCWIuaGkJLkxvb3BfaW1jCisrCisrCXZsZDEuMzIJe3YwLjE2Yn0sWyRvdXRdCisrCWFlc2ltYwl2MC4xNmIsdjAuMTZiCisrCXZzdDEuMzIJe3YwLjE2Yn0sWyRpbnBdCisrCisrCWVvcgl4MCx4MCx4MAkJLy8gcmV0dXJuIHZhbHVlCisrX19fCisrJGNvZGUuPTw8X19fCWlmICgkZmxhdm91ciAhfiAvNjQvKTsKKysJbGRtaWEJc3AhLHtyNCxwY30KKytfX18KKyskY29kZS49PDxfX18JaWYgKCRmbGF2b3VyID1+IC82NC8pOworKwlsZHAJeDI5LHgzMCxbc3BdLCMxNgorKwlyZXQKKytfX18KKyskY29kZS49PDxfX187CisrLnNpemUJJHtwcmVmaXh9X3NldF9kZWNyeXB0X2tleSwuLSR7cHJlZml4fV9zZXRfZGVjcnlwdF9rZXkKKytfX18KKyt9fX0KKyt7e3sKKytzdWIgZ2VuX2Jsb2NrICgpIHsKKytteSAkZGlyID0gc2hpZnQ7CisrbXkgKCRlLCRtYykgPSAkZGlyIGVxICJlbiIgPyAoImUiLCJtYyIpIDogKCJkIiwiaW1jIik7CisrbXkgKCRpbnAsJG91dCwka2V5KT1tYXAoIngkXyIsKDAuLjIpKTsKKytteSAkcm91bmRzPSJ3MyI7CisrbXkgKCRybmRrZXkwLCRybmRrZXkxLCRpbm91dCk9bWFwKCJxJF8iLCgwLi4zKSk7CisrCisrJGNvZGUuPTw8X19fOworKy5nbG9ibAkke3ByZWZpeH1fJHtkaXJ9Y3J5cHQKKysudHlwZQkke3ByZWZpeH1fJHtkaXJ9Y3J5cHQsJWZ1bmN0aW9uCisrLmFsaWduCTUKKyske3ByZWZpeH1fJHtkaXJ9Y3J5cHQ6CisrCWxkcgkkcm91bmRzLFska2V5LCMyNDBdCisrCXZsZDEuMzIJeyRybmRrZXkwfSxbJGtleV0sIzE2CisrCXZsZDEuOAl7JGlub3V0fSxbJGlucF0KKysJc3ViCSRyb3VuZHMsJHJvdW5kcywjMgorKwl2bGQxLjMyCXskcm5ka2V5MX0sWyRrZXldLCMxNgorKworKy5Mb29wXyR7ZGlyfWM6CisrCWFlcyRlCSRpbm91dCwkcm5ka2V5MAorKwl2bGQxLjMyCXskcm5ka2V5MH0sWyRrZXldLCMxNgorKwlhZXMkbWMJJGlub3V0LCRpbm91dAorKwlzdWJzCSRyb3VuZHMsJHJvdW5kcywjMgorKwlhZXMkZQkkaW5vdXQsJHJuZGtleTEKKysJdmxkMS4zMgl7JHJuZGtleTF9LFska2V5XSwjMTYKKysJYWVzJG1jCSRpbm91dCwkaW5vdXQKKysJYi5ndAkuTG9vcF8ke2Rpcn1jCisrCisrCWFlcyRlCSRpbm91dCwkcm5ka2V5MAorKwl2bGQxLjMyCXskcm5ka2V5MH0sWyRrZXldCisrCWFlcyRtYwkkaW5vdXQsJGlub3V0CisrCWFlcyRlCSRpbm91dCwkcm5ka2V5MQorKwl2ZW9yCSRpbm91dCwkaW5vdXQsJHJuZGtleTAKKysKKysJdnN0MS44CXskaW5vdXR9LFskb3V0XQorKwlyZXQKKysuc2l6ZQkke3ByZWZpeH1fJHtkaXJ9Y3J5cHQsLi0ke3ByZWZpeH1fJHtkaXJ9Y3J5cHQKKytfX18KKyt9CisrJmdlbl9ibG9jaygiZW4iKTsKKysmZ2VuX2Jsb2NrKCJkZSIpOworK319fQorK3t7eworK215ICgkaW5wLCRvdXQsJGxlbiwka2V5LCRpdnApPW1hcCgieCRfIiwoMC4uNCkpOyBteSAkZW5jPSJ3NSI7CisrbXkgKCRyb3VuZHMsJGNudCwka2V5Xywkc3RlcCwkc3RlcDEpPSgkZW5jLCJ3NiIsIng3IiwieDgiLCJ4MTIiKTsKKytteSAoJGRhdDAsJGRhdDEsJGluMCwkaW4xLCR0bXAwLCR0bXAxLCRpdmVjLCRybmRsYXN0KT1tYXAoInEkXyIsKDAuLjcpKTsKKysKKytteSAoJGRhdCwkdG1wLCRybmR6ZXJvX25fbGFzdCk9KCRkYXQwLCR0bXAwLCR0bXAxKTsKKysKKysjIyMgcTgtcTE1CXByZWxvYWRlZCBrZXkgc2NoZWR1bGUKKysKKyskY29kZS49PDxfX187CisrLmdsb2JsCSR7cHJlZml4fV9jYmNfZW5jcnlwdAorKy50eXBlCSR7cHJlZml4fV9jYmNfZW5jcnlwdCwlZnVuY3Rpb24KKysuYWxpZ24JNQorKyR7cHJlZml4fV9jYmNfZW5jcnlwdDoKKytfX18KKyskY29kZS49PDxfX18JaWYgKCRmbGF2b3VyID1+IC82NC8pOworKwlzdHAJeDI5LHgzMCxbc3AsIy0xNl0hCisrCWFkZAl4Mjksc3AsIzAKKytfX18KKyskY29kZS49PDxfX18JaWYgKCRmbGF2b3VyICF+IC82NC8pOworKwltb3YJaXAsc3AKKysJc3RtZGIJc3AhLHtyNC1yOCxscn0KKysJdnN0bWRiCXNwISx7ZDgtZDE1fSAgICAgICAgICAgIEAgQUJJIHNwZWNpZmljYXRpb24gc2F5cyBzbworKwlsZG1pYQlpcCx7cjQtcjV9CQlAIGxvYWQgcmVtYWluaW5nIGFyZ3MKKytfX18KKyskY29kZS49PDxfX187CisrCXN1YnMJJGxlbiwkbGVuLCMxNgorKwltb3YJJHN0ZXAsIzE2CisrCWIubG8JLkxjYmNfYWJvcnQKKysJY2Nscgkkc3RlcCxlcQorKworKwljbXAJJGVuYywjMAkJCS8vIGVuLSBvciBkZWNyeXB0aW5nPworKwlsZHIJJHJvdW5kcyxbJGtleSwjMjQwXQorKwlhbmQJJGxlbiwkbGVuLCMtMTYKKysJdmxkMS44CXskaXZlY30sWyRpdnBdCisrCXZsZDEuOAl7JGRhdH0sWyRpbnBdLCRzdGVwCisrCisrCXZsZDEuMzIJe3E4LXE5fSxbJGtleV0JCS8vIGxvYWQga2V5IHNjaGVkdWxlLi4uCisrCXN1Ygkkcm91bmRzLCRyb3VuZHMsIzYKKysJYWRkCSRrZXlfLCRrZXkseDUsbHNsIzQJLy8gcG9pbnRlciB0byBsYXN0IDcgcm91bmQga2V5cworKwlzdWIJJHJvdW5kcywkcm91bmRzLCMyCisrCXZsZDEuMzIJe3ExMC1xMTF9LFska2V5X10sIzMyCisrCXZsZDEuMzIJe3ExMi1xMTN9LFska2V5X10sIzMyCisrCXZsZDEuMzIJe3ExNC1xMTV9LFska2V5X10sIzMyCisrCXZsZDEuMzIJeyRybmRsYXN0fSxbJGtleV9dCisrCisrCWFkZAkka2V5Xywka2V5LCMzMgorKwltb3YJJGNudCwkcm91bmRzCisrCWIuZXEJLkxjYmNfZGVjCisrCisrCWNtcAkkcm91bmRzLCMyCisrCXZlb3IJJGRhdCwkZGF0LCRpdmVjCisrCXZlb3IJJHJuZHplcm9fbl9sYXN0LHE4LCRybmRsYXN0CisrCWIuZXEJLkxjYmNfZW5jMTI4CisrCisrLkxvb3BfY2JjX2VuYzoKKysJYWVzZQkkZGF0LHE4CisrCXZsZDEuMzIJe3E4fSxbJGtleV9dLCMxNgorKwlhZXNtYwkkZGF0LCRkYXQKKysJc3VicwkkY250LCRjbnQsIzIKKysJYWVzZQkkZGF0LHE5CisrCXZsZDEuMzIJe3E5fSxbJGtleV9dLCMxNgorKwlhZXNtYwkkZGF0LCRkYXQKKysJYi5ndAkuTG9vcF9jYmNfZW5jCisrCisrCWFlc2UJJGRhdCxxOAorKwlhZXNtYwkkZGF0LCRkYXQKKysJIHN1YnMJJGxlbiwkbGVuLCMxNgorKwlhZXNlCSRkYXQscTkKKysJYWVzbWMJJGRhdCwkZGF0CisrCSBjY2xyCSRzdGVwLGVxCisrCWFlc2UJJGRhdCxxMTAKKysJYWVzbWMJJGRhdCwkZGF0CisrCSBhZGQJJGtleV8sJGtleSwjMTYKKysJYWVzZQkkZGF0LHExMQorKwlhZXNtYwkkZGF0LCRkYXQKKysJIHZsZDEuOAl7cTh9LFskaW5wXSwkc3RlcAorKwlhZXNlCSRkYXQscTEyCisrCWFlc21jCSRkYXQsJGRhdAorKwkgdmVvcglxOCxxOCwkcm5kemVyb19uX2xhc3QKKysJYWVzZQkkZGF0LHExMworKwlhZXNtYwkkZGF0LCRkYXQKKysJIHZsZDEuMzIge3E5fSxbJGtleV9dLCMxNgkvLyByZS1wcmUtbG9hZCBybmRrZXlbMV0KKysJYWVzZQkkZGF0LHExNAorKwlhZXNtYwkkZGF0LCRkYXQKKysJYWVzZQkkZGF0LHExNQorKworKwkgbW92CSRjbnQsJHJvdW5kcworKwl2ZW9yCSRpdmVjLCRkYXQsJHJuZGxhc3QKKysJdnN0MS44CXskaXZlY30sWyRvdXRdLCMxNgorKwliLmhzCS5Mb29wX2NiY19lbmMKKysKKysJYgkuTGNiY19kb25lCisrCisrLmFsaWduCTUKKysuTGNiY19lbmMxMjg6CisrCXZsZDEuMzIJeyRpbjAtJGluMX0sWyRrZXlfXQorKwlhZXNlCSRkYXQscTgKKysJYWVzbWMJJGRhdCwkZGF0CisrCWIJLkxlbnRlcl9jYmNfZW5jMTI4CisrLkxvb3BfY2JjX2VuYzEyODoKKysJYWVzZQkkZGF0LHE4CisrCWFlc21jCSRkYXQsJGRhdAorKwkgdnN0MS44CXskaXZlY30sWyRvdXRdLCMxNgorKy5MZW50ZXJfY2JjX2VuYzEyODoKKysJYWVzZQkkZGF0LHE5CisrCWFlc21jCSRkYXQsJGRhdAorKwkgc3VicwkkbGVuLCRsZW4sIzE2CisrCWFlc2UJJGRhdCwkaW4wCisrCWFlc21jCSRkYXQsJGRhdAorKwkgY2Nscgkkc3RlcCxlcQorKwlhZXNlCSRkYXQsJGluMQorKwlhZXNtYwkkZGF0LCRkYXQKKysJYWVzZQkkZGF0LHExMAorKwlhZXNtYwkkZGF0LCRkYXQKKysJYWVzZQkkZGF0LHExMQorKwlhZXNtYwkkZGF0LCRkYXQKKysJIHZsZDEuOAl7cTh9LFskaW5wXSwkc3RlcAorKwlhZXNlCSRkYXQscTEyCisrCWFlc21jCSRkYXQsJGRhdAorKwlhZXNlCSRkYXQscTEzCisrCWFlc21jCSRkYXQsJGRhdAorKwlhZXNlCSRkYXQscTE0CisrCWFlc21jCSRkYXQsJGRhdAorKwkgdmVvcglxOCxxOCwkcm5kemVyb19uX2xhc3QKKysJYWVzZQkkZGF0LHExNQorKwl2ZW9yCSRpdmVjLCRkYXQsJHJuZGxhc3QKKysJYi5ocwkuTG9vcF9jYmNfZW5jMTI4CisrCisrCXZzdDEuOAl7JGl2ZWN9LFskb3V0XSwjMTYKKysJYgkuTGNiY19kb25lCisrCisrLmFsaWduCTUKKysuTGNiY19kZWMxMjg6CisrCXZsZDEuMzIJeyR0bXAwLSR0bXAxfSxbJGtleV9dCisrCXZlb3IJJGl2ZWMsJGl2ZWMsJHJuZGxhc3QKKysJdmVvcgkkaW4wLCRkYXQwLCRybmRsYXN0CisrCW1vdgkkc3RlcDEsJHN0ZXAKKysKKysuTG9vcDJ4X2NiY19kZWMxMjg6CisrCWFlc2QJJGRhdDAscTgKKysJYWVzZAkkZGF0MSxxOAorKwlhZXNpbWMJJGRhdDAsJGRhdDAKKysJYWVzaW1jCSRkYXQxLCRkYXQxCisrCSBzdWJzCSRsZW4sJGxlbiwjMzIKKysJYWVzZAkkZGF0MCxxOQorKwlhZXNkCSRkYXQxLHE5CisrCWFlc2ltYwkkZGF0MCwkZGF0MAorKwlhZXNpbWMJJGRhdDEsJGRhdDEKKysJIGNjbHIJJHN0ZXAsbG8KKysJYWVzZAkkZGF0MCwkdG1wMAorKwlhZXNkCSRkYXQxLCR0bXAwCisrCWFlc2ltYwkkZGF0MCwkZGF0MAorKwlhZXNpbWMJJGRhdDEsJGRhdDEKKysJIGNjbHIJJHN0ZXAxLGxzCisrCWFlc2QJJGRhdDAsJHRtcDEKKysJYWVzZAkkZGF0MSwkdG1wMQorKwlhZXNpbWMJJGRhdDAsJGRhdDAKKysJYWVzaW1jCSRkYXQxLCRkYXQxCisrCWFlc2QJJGRhdDAscTEwCisrCWFlc2QJJGRhdDEscTEwCisrCWFlc2ltYwkkZGF0MCwkZGF0MAorKwlhZXNpbWMJJGRhdDEsJGRhdDEKKysJYWVzZAkkZGF0MCxxMTEKKysJYWVzZAkkZGF0MSxxMTEKKysJYWVzaW1jCSRkYXQwLCRkYXQwCisrCWFlc2ltYwkkZGF0MSwkZGF0MQorKwlhZXNkCSRkYXQwLHExMgorKwlhZXNkCSRkYXQxLHExMgorKwlhZXNpbWMJJGRhdDAsJGRhdDAKKysJYWVzaW1jCSRkYXQxLCRkYXQxCisrCWFlc2QJJGRhdDAscTEzCisrCWFlc2QJJGRhdDEscTEzCisrCWFlc2ltYwkkZGF0MCwkZGF0MAorKwlhZXNpbWMJJGRhdDEsJGRhdDEKKysJYWVzZAkkZGF0MCxxMTQKKysJYWVzZAkkZGF0MSxxMTQKKysJYWVzaW1jCSRkYXQwLCRkYXQwCisrCWFlc2ltYwkkZGF0MSwkZGF0MQorKwlhZXNkCSRkYXQwLHExNQorKwlhZXNkCSRkYXQxLHExNQorKworKwl2ZW9yCSRpdmVjLCRpdmVjLCRkYXQwCisrCXZsZDEuOAl7JGRhdDB9LFskaW5wXSwkc3RlcAorKwl2ZW9yCSRpbjAsJGluMCwkZGF0MQorKwl2bGQxLjgJeyRkYXQxfSxbJGlucF0sJHN0ZXAxCisrCXZzdDEuOAl7JGl2ZWN9LFskb3V0XSwjMTYKKysJdmVvcgkkaXZlYywkaW4xLCRybmRsYXN0CisrCXZzdDEuOAl7JGluMH0sWyRvdXRdLCMxNgorKwl2ZW9yCSRpbjAsJGRhdDAsJHJuZGxhc3QKKysJdm9ycgkkaW4xLCRkYXQxLCRkYXQxCisrCWIuaHMJLkxvb3AyeF9jYmNfZGVjMTI4CisrCisrCWFkZHMJJGxlbiwkbGVuLCMzMgorKwl2ZW9yCSRpdmVjLCRpdmVjLCRybmRsYXN0CisrCWIuZXEJLkxjYmNfZG9uZQorKwl2ZW9yCSRpbjAsJGluMCwkcm5kbGFzdAorKwliCS5MY2JjX2RlY190YWlsCisrCisrLmFsaWduCTUKKysuTGNiY19kZWM6CisrCXN1YnMJJGxlbiwkbGVuLCMxNgorKwl2b3JyCSRpbjAsJGRhdCwkZGF0CisrCWIubG8JLkxjYmNfZGVjX3RhaWwKKysKKysJY2Nscgkkc3RlcCxlcQorKwljbXAJJHJvdW5kcywjMgorKwl2bGQxLjgJeyRkYXQxfSxbJGlucF0sJHN0ZXAKKysJdm9ycgkkaW4xLCRkYXQxLCRkYXQxCisrCWIuZXEJLkxjYmNfZGVjMTI4CisrCisrLkxvb3AyeF9jYmNfZGVjOgorKwlhZXNkCSRkYXQwLHE4CisrCWFlc2QJJGRhdDEscTgKKysJdmxkMS4zMgl7cTh9LFska2V5X10sIzE2CisrCWFlc2ltYwkkZGF0MCwkZGF0MAorKwlhZXNpbWMJJGRhdDEsJGRhdDEKKysJc3VicwkkY250LCRjbnQsIzIKKysJYWVzZAkkZGF0MCxxOQorKwlhZXNkCSRkYXQxLHE5CisrCXZsZDEuMzIJe3E5fSxbJGtleV9dLCMxNgorKwlhZXNpbWMJJGRhdDAsJGRhdDAKKysJYWVzaW1jCSRkYXQxLCRkYXQxCisrCWIuZ3QJLkxvb3AyeF9jYmNfZGVjCisrCisrCWFlc2QJJGRhdDAscTgKKysJYWVzZAkkZGF0MSxxOAorKwlhZXNpbWMJJGRhdDAsJGRhdDAKKysJYWVzaW1jCSRkYXQxLCRkYXQxCisrCSB2ZW9yCSR0bXAwLCRpdmVjLCRybmRsYXN0CisrCSB2ZW9yCSR0bXAxLCRpbjAsJHJuZGxhc3QKKysJYWVzZAkkZGF0MCxxOQorKwlhZXNkCSRkYXQxLHE5CisrCWFlc2ltYwkkZGF0MCwkZGF0MAorKwlhZXNpbWMJJGRhdDEsJGRhdDEKKysJIHZvcnIJJGl2ZWMsJGluMSwkaW4xCisrCSBzdWJzCSRsZW4sJGxlbiwjMzIKKysJYWVzZAkkZGF0MCxxMTAKKysJYWVzZAkkZGF0MSxxMTAKKysJYWVzaW1jCSRkYXQwLCRkYXQwCisrCSBjY2xyCSRzdGVwLGxvCisrCWFlc2ltYwkkZGF0MSwkZGF0MQorKwkgbW92CSRrZXlfLCRrZXkKKysJYWVzZAkkZGF0MCxxMTEKKysJYWVzZAkkZGF0MSxxMTEKKysJYWVzaW1jCSRkYXQwLCRkYXQwCisrCSB2bGQxLjgJeyRpbjB9LFskaW5wXSwkc3RlcAorKwlhZXNpbWMJJGRhdDEsJGRhdDEKKysJIGNjbHIJJHN0ZXAsbHMKKysJYWVzZAkkZGF0MCxxMTIKKysJYWVzZAkkZGF0MSxxMTIKKysJYWVzaW1jCSRkYXQwLCRkYXQwCisrCWFlc2ltYwkkZGF0MSwkZGF0MQorKwkgdmxkMS44CXskaW4xfSxbJGlucF0sJHN0ZXAKKysJYWVzZAkkZGF0MCxxMTMKKysJYWVzZAkkZGF0MSxxMTMKKysJYWVzaW1jCSRkYXQwLCRkYXQwCisrCWFlc2ltYwkkZGF0MSwkZGF0MQorKwkgdmxkMS4zMiB7cTh9LFska2V5X10sIzE2CS8vIHJlLXByZS1sb2FkIHJuZGtleVswXQorKwlhZXNkCSRkYXQwLHExNAorKwlhZXNkCSRkYXQxLHExNAorKwlhZXNpbWMJJGRhdDAsJGRhdDAKKysJYWVzaW1jCSRkYXQxLCRkYXQxCisrCSB2bGQxLjMyIHtxOX0sWyRrZXlfXSwjMTYJLy8gcmUtcHJlLWxvYWQgcm5ka2V5WzFdCisrCWFlc2QJJGRhdDAscTE1CisrCWFlc2QJJGRhdDEscTE1CisrCisrCSBtb3YJJGNudCwkcm91bmRzCisrCXZlb3IJJHRtcDAsJHRtcDAsJGRhdDAKKysJdmVvcgkkdG1wMSwkdG1wMSwkZGF0MQorKwkgdm9ycgkkZGF0MCwkaW4wLCRpbjAKKysJdnN0MS44CXskdG1wMH0sWyRvdXRdLCMxNgorKwkgdm9ycgkkZGF0MSwkaW4xLCRpbjEKKysJdnN0MS44CXskdG1wMX0sWyRvdXRdLCMxNgorKwliLmhzCS5Mb29wMnhfY2JjX2RlYworKworKwlhZGRzCSRsZW4sJGxlbiwjMzIKKysJYi5lcQkuTGNiY19kb25lCisrCisrLkxjYmNfZGVjX3RhaWw6CisrCWFlc2QJJGRhdCxxOAorKwl2bGQxLjMyCXtxOH0sWyRrZXlfXSwjMTYKKysJYWVzaW1jCSRkYXQsJGRhdAorKwlzdWJzCSRjbnQsJGNudCwjMgorKwlhZXNkCSRkYXQscTkKKysJdmxkMS4zMgl7cTl9LFska2V5X10sIzE2CisrCWFlc2ltYwkkZGF0LCRkYXQKKysJYi5ndAkuTGNiY19kZWNfdGFpbAorKworKwlhZXNkCSRkYXQscTgKKysJYWVzaW1jCSRkYXQsJGRhdAorKwlhZXNkCSRkYXQscTkKKysJYWVzaW1jCSRkYXQsJGRhdAorKwkgdmVvcgkkdG1wLCRpdmVjLCRybmRsYXN0CisrCWFlc2QJJGRhdCxxMTAKKysJYWVzaW1jCSRkYXQsJGRhdAorKwkgdm9ycgkkaXZlYywkaW4wLCRpbjAKKysJYWVzZAkkZGF0LHExMQorKwlhZXNpbWMJJGRhdCwkZGF0CisrCWFlc2QJJGRhdCxxMTIKKysJYWVzaW1jCSRkYXQsJGRhdAorKwlhZXNkCSRkYXQscTEzCisrCWFlc2ltYwkkZGF0LCRkYXQKKysJYWVzZAkkZGF0LHExNAorKwlhZXNpbWMJJGRhdCwkZGF0CisrCWFlc2QJJGRhdCxxMTUKKysKKysJdmVvcgkkdG1wLCR0bXAsJGRhdAorKwl2c3QxLjgJeyR0bXB9LFskb3V0XSwjMTYKKysKKysuTGNiY19kb25lOgorKwl2c3QxLjgJeyRpdmVjfSxbJGl2cF0KKysuTGNiY19hYm9ydDoKKytfX18KKyskY29kZS49PDxfX18JaWYgKCRmbGF2b3VyICF+IC82NC8pOworKwl2bGRtaWEJc3AhLHtkOC1kMTV9CisrCWxkbWlhCXNwISx7cjQtcjgscGN9CisrX19fCisrJGNvZGUuPTw8X19fCWlmICgkZmxhdm91ciA9fiAvNjQvKTsKKysJbGRyCXgyOSxbc3BdLCMxNgorKwlyZXQKKytfX18KKyskY29kZS49PDxfX187CisrLnNpemUJJHtwcmVmaXh9X2NiY19lbmNyeXB0LC4tJHtwcmVmaXh9X2NiY19lbmNyeXB0CisrX19fCisrfX19Cisre3t7CisrbXkgKCRpbnAsJG91dCwkbGVuLCRrZXksJGl2cCk9bWFwKCJ4JF8iLCgwLi40KSk7CisrbXkgKCRyb3VuZHMsJGNudCwka2V5XywkY3RyLCR0Y3RyLCR0Y3RyMSk9KCJ3NSIsInc2IiwieDciLCJ3OCIsInc5IiwidzEwIik7CisrbXkgKCRkYXQwLCRkYXQxLCRpbjAsJGluMSwkdG1wMCwkdG1wMSwkaXZlYywkcm5kbGFzdCk9bWFwKCJxJF8iLCgwLi43KSk7CisrCisrbXkgKCRkYXQsJHRtcCk9KCRkYXQwLCR0bXAwKTsKKysKKysjIyMgcTgtcTE1CXByZWxvYWRlZCBrZXkgc2NoZWR1bGUKKysKKyskY29kZS49PDxfX187CisrLmdsb2JsCSR7cHJlZml4fV9jdHIzMl9lbmNyeXB0X2Jsb2NrcworKy50eXBlCSR7cHJlZml4fV9jdHIzMl9lbmNyeXB0X2Jsb2NrcywlZnVuY3Rpb24KKysuYWxpZ24JNQorKyR7cHJlZml4fV9jdHIzMl9lbmNyeXB0X2Jsb2NrczoKKytfX18KKyskY29kZS49PDxfX18JaWYgKCRmbGF2b3VyID1+IC82NC8pOworKwlzdHAJCXgyOSx4MzAsW3NwLCMtMTZdIQorKwlhZGQJCXgyOSxzcCwjMAorK19fXworKyRjb2RlLj08PF9fXwlpZiAoJGZsYXZvdXIgIX4gLzY0Lyk7CisrCW1vdgkJaXAsc3AKKysJc3RtZGIJCXNwISx7cjQtcjEwLGxyfQorKwl2c3RtZGIJCXNwISx7ZDgtZDE1fSAgICAgICAgICAgIEAgQUJJIHNwZWNpZmljYXRpb24gc2F5cyBzbworKwlsZHIJCXI0LCBbaXBdCQlAIGxvYWQgcmVtYWluaW5nIGFyZworK19fXworKyRjb2RlLj08PF9fXzsKKysJbGRyCQkkcm91bmRzLFska2V5LCMyNDBdCisrCisrCWxkcgkJJGN0ciwgWyRpdnAsICMxMl0KKysJdmxkMS4zMgkJeyRkYXQwfSxbJGl2cF0KKysKKysJdmxkMS4zMgkJe3E4LXE5fSxbJGtleV0JCS8vIGxvYWQga2V5IHNjaGVkdWxlLi4uCisrCXN1YgkJJHJvdW5kcywkcm91bmRzLCM2CisrCWFkZAkJJGtleV8sJGtleSx4NSxsc2wjNAkvLyBwb2ludGVyIHRvIGxhc3QgNyByb3VuZCBrZXlzCisrCXN1YgkJJHJvdW5kcywkcm91bmRzLCMyCisrCXZsZDEuMzIJCXtxMTAtcTExfSxbJGtleV9dLCMzMgorKwl2bGQxLjMyCQl7cTEyLXExM30sWyRrZXlfXSwjMzIKKysJdmxkMS4zMgkJe3ExNC1xMTV9LFska2V5X10sIzMyCisrCXZsZDEuMzIJCXskcm5kbGFzdH0sWyRrZXlfXQorKworKwlhZGQJCSRrZXlfLCRrZXksIzMyCisrCW1vdgkJJGNudCwkcm91bmRzCisrCisrCXN1YnMJCSRsZW4sJGxlbiwjMgorKwliLmxvCQkuTGN0cjMyX3RhaWwKKysKKysjaWZuZGVmIF9fQVJNRUJfXworKwlyZXYJCSRjdHIsICRjdHIKKysjZW5kaWYKKysJdm9ycgkJJGRhdDEsJGRhdDAsJGRhdDAKKysJYWRkCQkkY3RyLCAkY3RyLCAjMQorKwl2b3JyCQkkaXZlYywkZGF0MCwkZGF0MAorKwlyZXYJCSR0Y3RyMSwgJGN0cgorKwljbXAJCSRyb3VuZHMsIzIKKysJdm1vdi4zMgkJJHtkYXQxfVszXSwkdGN0cjEKKysJYi5lcQkJLkxjdHIzMl8xMjgKKysKKysuTG9vcDJ4X2N0cjMyOgorKwlhZXNlCQkkZGF0MCxxOAorKwlhZXNlCQkkZGF0MSxxOAorKwl2bGQxLjMyCQl7cTh9LFska2V5X10sIzE2CisrCWFlc21jCQkkZGF0MCwkZGF0MAorKwlhZXNtYwkJJGRhdDEsJGRhdDEKKysJc3VicwkJJGNudCwkY250LCMyCisrCWFlc2UJCSRkYXQwLHE5CisrCWFlc2UJCSRkYXQxLHE5CisrCXZsZDEuMzIJCXtxOX0sWyRrZXlfXSwjMTYKKysJYWVzbWMJCSRkYXQwLCRkYXQwCisrCWFlc21jCQkkZGF0MSwkZGF0MQorKwliLmd0CQkuTG9vcDJ4X2N0cjMyCisrCisrCWFlc2UJCSRkYXQwLHE4CisrCWFlc2UJCSRkYXQxLHE4CisrCWFlc21jCQkkdG1wMCwkZGF0MAorKwkgdm9ycgkJJGRhdDAsJGl2ZWMsJGl2ZWMKKysJYWVzbWMJCSR0bXAxLCRkYXQxCisrCSB2b3JyCQkkZGF0MSwkaXZlYywkaXZlYworKwlhZXNlCQkkdG1wMCxxOQorKwlhZXNlCQkkdG1wMSxxOQorKwkgdmxkMS44CQl7JGluMH0sWyRpbnBdLCMxNgorKwlhZXNtYwkJJHRtcDAsJHRtcDAKKysJIHZsZDEuOAkJeyRpbjF9LFskaW5wXSwjMTYKKysJYWVzbWMJCSR0bXAxLCR0bXAxCisrCSBhZGQJCSRjdHIsJGN0ciwjMQorKwlhZXNlCQkkdG1wMCxxMTAKKysJYWVzZQkJJHRtcDEscTEwCisrCSByZXYJCSR0Y3RyLCRjdHIKKysJYWVzbWMJCSR0bXAwLCR0bXAwCisrCWFlc21jCQkkdG1wMSwkdG1wMQorKwkgYWRkCQkkY3RyLCRjdHIsIzEKKysJYWVzZQkJJHRtcDAscTExCisrCWFlc2UJCSR0bXAxLHExMQorKwkgdmVvcgkJJGluMCwkaW4wLCRybmRsYXN0CisrCSByZXYJCSR0Y3RyMSwkY3RyCisrCWFlc21jCQkkdG1wMCwkdG1wMAorKwlhZXNtYwkJJHRtcDEsJHRtcDEKKysJIHZlb3IJCSRpbjEsJGluMSwkcm5kbGFzdAorKwkgbW92CQkka2V5Xywka2V5CisrCWFlc2UJCSR0bXAwLHExMgorKwlhZXNlCQkkdG1wMSxxMTIKKysJIHN1YnMJCSRsZW4sJGxlbiwjMgorKwlhZXNtYwkJJHRtcDAsJHRtcDAKKysJYWVzbWMJCSR0bXAxLCR0bXAxCisrCSB2bGQxLjMyCSB7cTgtcTl9LFska2V5X10sIzMyCS8vIHJlLXByZS1sb2FkIHJuZGtleVswLTFdCisrCWFlc2UJCSR0bXAwLHExMworKwlhZXNlCQkkdG1wMSxxMTMKKysJYWVzbWMJCSR0bXAwLCR0bXAwCisrCWFlc21jCQkkdG1wMSwkdG1wMQorKwlhZXNlCQkkdG1wMCxxMTQKKysJYWVzZQkJJHRtcDEscTE0CisrCSB2bW92LjMyCSR7ZGF0MH1bM10sICR0Y3RyCisrCWFlc21jCQkkdG1wMCwkdG1wMAorKwkgdm1vdi4zMgkke2RhdDF9WzNdLCAkdGN0cjEKKysJYWVzbWMJCSR0bXAxLCR0bXAxCisrCWFlc2UJCSR0bXAwLHExNQorKwlhZXNlCQkkdG1wMSxxMTUKKysKKysJIG1vdgkJJGNudCwkcm91bmRzCisrCXZlb3IJCSRpbjAsJGluMCwkdG1wMAorKwl2ZW9yCQkkaW4xLCRpbjEsJHRtcDEKKysJdnN0MS44CQl7JGluMH0sWyRvdXRdLCMxNgorKwl2c3QxLjgJCXskaW4xfSxbJG91dF0sIzE2CisrCWIuaHMJCS5Mb29wMnhfY3RyMzIKKysKKysJYWRkcwkJJGxlbiwkbGVuLCMyCisrCWIuZXEJCS5MY3RyMzJfZG9uZQorKwliCQkuTGN0cjMyX3RhaWwKKysKKysuTGN0cjMyXzEyODoKKysJdmxkMS4zMgkJeyR0bXAwLSR0bXAxfSxbJGtleV9dCisrCisrLkxvb3AyeF9jdHIzMl8xMjg6CisrCWFlc2UJCSRkYXQwLHE4CisrCWFlc2UJCSRkYXQxLHE4CisrCWFlc21jCQkkZGF0MCwkZGF0MAorKwkgdmxkMS44CQl7JGluMH0sWyRpbnBdLCMxNgorKwlhZXNtYwkJJGRhdDEsJGRhdDEKKysJIHZsZDEuOAkJeyRpbjF9LFskaW5wXSwjMTYKKysJYWVzZQkJJGRhdDAscTkKKysJYWVzZQkJJGRhdDEscTkKKysJIGFkZAkJJGN0ciwkY3RyLCMxCisrCWFlc21jCQkkZGF0MCwkZGF0MAorKwlhZXNtYwkJJGRhdDEsJGRhdDEKKysJIHJldgkJJHRjdHIsJGN0cgorKwlhZXNlCQkkZGF0MCwkdG1wMAorKwlhZXNlCQkkZGF0MSwkdG1wMAorKwkgYWRkCQkkY3RyLCRjdHIsIzEKKysJYWVzbWMJCSRkYXQwLCRkYXQwCisrCWFlc21jCQkkZGF0MSwkZGF0MQorKwkgcmV2CQkkdGN0cjEsJGN0cgorKwlhZXNlCQkkZGF0MCwkdG1wMQorKwlhZXNlCQkkZGF0MSwkdG1wMQorKwkgc3VicwkJJGxlbiwkbGVuLCMyCisrCWFlc21jCQkkZGF0MCwkZGF0MAorKwlhZXNtYwkJJGRhdDEsJGRhdDEKKysJYWVzZQkJJGRhdDAscTEwCisrCWFlc2UJCSRkYXQxLHExMAorKwlhZXNtYwkJJGRhdDAsJGRhdDAKKysJYWVzbWMJCSRkYXQxLCRkYXQxCisrCWFlc2UJCSRkYXQwLHExMQorKwlhZXNlCQkkZGF0MSxxMTEKKysJYWVzbWMJCSRkYXQwLCRkYXQwCisrCWFlc21jCQkkZGF0MSwkZGF0MQorKwlhZXNlCQkkZGF0MCxxMTIKKysJYWVzZQkJJGRhdDEscTEyCisrCWFlc21jCQkkZGF0MCwkZGF0MAorKwlhZXNtYwkJJGRhdDEsJGRhdDEKKysJYWVzZQkJJGRhdDAscTEzCisrCWFlc2UJCSRkYXQxLHExMworKwlhZXNtYwkJJGRhdDAsJGRhdDAKKysJYWVzbWMJCSRkYXQxLCRkYXQxCisrCWFlc2UJCSRkYXQwLHExNAorKwlhZXNlCQkkZGF0MSxxMTQKKysJYWVzbWMJCSRkYXQwLCRkYXQwCisrCWFlc21jCQkkZGF0MSwkZGF0MQorKwkgdmVvcgkJJGluMCwkaW4wLCRybmRsYXN0CisrCWFlc2UJCSRkYXQwLHExNQorKwkgdmVvcgkJJGluMSwkaW4xLCRybmRsYXN0CisrCWFlc2UJCSRkYXQxLHExNQorKworKwl2ZW9yCQkkaW4wLCRpbjAsJGRhdDAKKysJdm9ycgkJJGRhdDAsJGl2ZWMsJGl2ZWMKKysJdmVvcgkJJGluMSwkaW4xLCRkYXQxCisrCXZvcnIJCSRkYXQxLCRpdmVjLCRpdmVjCisrCXZzdDEuOAkJeyRpbjB9LFskb3V0XSwjMTYKKysJdm1vdi4zMgkJJHtkYXQwfVszXSwgJHRjdHIKKysJdnN0MS44CQl7JGluMX0sWyRvdXRdLCMxNgorKwl2bW92LjMyCQkke2RhdDF9WzNdLCAkdGN0cjEKKysJYi5ocwkJLkxvb3AyeF9jdHIzMl8xMjgKKysKKysJYWRkcwkJJGxlbiwkbGVuLCMyCisrCWIuZXEJCS5MY3RyMzJfZG9uZQorKworKy5MY3RyMzJfdGFpbDoKKysJYWVzZQkJJGRhdCxxOAorKwl2bGQxLjMyCQl7cTh9LFska2V5X10sIzE2CisrCWFlc21jCQkkZGF0LCRkYXQKKysJc3VicwkJJGNudCwkY250LCMyCisrCWFlc2UJCSRkYXQscTkKKysJdmxkMS4zMgkJe3E5fSxbJGtleV9dLCMxNgorKwlhZXNtYwkJJGRhdCwkZGF0CisrCWIuZ3QJCS5MY3RyMzJfdGFpbAorKworKwlhZXNlCQkkZGF0LHE4CisrCWFlc21jCQkkZGF0LCRkYXQKKysJYWVzZQkJJGRhdCxxOQorKwlhZXNtYwkJJGRhdCwkZGF0CisrCSB2bGQxLjgJCXskaW4wfSxbJGlucF0KKysJYWVzZQkJJGRhdCxxMTAKKysJYWVzbWMJCSRkYXQsJGRhdAorKwlhZXNlCQkkZGF0LHExMQorKwlhZXNtYwkJJGRhdCwkZGF0CisrCWFlc2UJCSRkYXQscTEyCisrCWFlc21jCQkkZGF0LCRkYXQKKysJYWVzZQkJJGRhdCxxMTMKKysJYWVzbWMJCSRkYXQsJGRhdAorKwlhZXNlCQkkZGF0LHExNAorKwlhZXNtYwkJJGRhdCwkZGF0CisrCSB2ZW9yCQkkaW4wLCRpbjAsJHJuZGxhc3QKKysJYWVzZQkJJGRhdCxxMTUKKysKKysJdmVvcgkJJGluMCwkaW4wLCRkYXQKKysJdnN0MS44CQl7JGluMH0sWyRvdXRdCisrCisrLkxjdHIzMl9kb25lOgorK19fXworKyRjb2RlLj08PF9fXwlpZiAoJGZsYXZvdXIgIX4gLzY0Lyk7CisrCXZsZG1pYQkJc3AhLHtkOC1kMTV9CisrCWxkbWlhCQlzcCEse3I0LXIxMCxwY30KKytfX18KKyskY29kZS49PDxfX18JaWYgKCRmbGF2b3VyID1+IC82NC8pOworKwlsZHIJCXgyOSxbc3BdLCMxNgorKwlyZXQKKytfX18KKyskY29kZS49PDxfX187CisrLnNpemUJJHtwcmVmaXh9X2N0cjMyX2VuY3J5cHRfYmxvY2tzLC4tJHtwcmVmaXh9X2N0cjMyX2VuY3J5cHRfYmxvY2tzCisrX19fCisrfX19CisrJGNvZGUuPTw8X19fOworKyNlbmRpZgorK19fXworKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKytpZiAoJGZsYXZvdXIgPX4gLzY0LykgewkJCSMjIyMjIyMjIDY0LWJpdCBjb2RlCisrICAgIG15ICVvcGNvZGUgPSAoCisrCSJhZXNkIgk9PgkweDRlMjg1ODAwLAkiYWVzZSIJPT4JMHg0ZTI4NDgwMCwKKysJImFlc2ltYyI9PgkweDRlMjg3ODAwLAkiYWVzbWMiCT0+CTB4NGUyODY4MDAJKTsKKysKKysgICAgbG9jYWwgKnVuYWVzID0gc3ViIHsKKysJbXkgKCRtbmVtb25pYywkYXJnKT1AXzsKKysKKysJJGFyZyA9fiBtL1txdl0oWzAtOV0rKVteLF0qLFxzKltxdl0oWzAtOV0rKS9vCSYmCisrCXNwcmludGYgIi5pbnN0XHQweCUwOHhcdC8vJXMgJXMiLAorKwkJCSRvcGNvZGV7JG1uZW1vbmljfXwkMXwoJDI8PDUpLAorKwkJCSRtbmVtb25pYywkYXJnOworKyAgICB9OworKworKyAgICBmb3JlYWNoKHNwbGl0KCJcbiIsJGNvZGUpKSB7CisrICAgICAgICBzL1xgKFteXGBdKilcYC9ldmFsKCQxKS9nZW87CisrCisrCXMvXGJxKFswLTldKylcYi8idiIuKCQxPDg/JDE6JDErOCkuIi4xNmIiL2dlbzsJIyBvbGQtPm5ldyByZWdpc3RlcnMKKysgICAgICAgIHMvQFxzL1wvXC8vbzsJCQkjIG9sZC0+bmV3IHN0eWxlIGNvbW1lbnRhcnkKKysKKysJI3MvW3ZdPyhhZXNcdyspXHMrKFtxdl0uKikvdW5hZXMoJDEsJDIpL2dlbwlvcgorKwlzL2NjbHJccysoW3d4XSkoW14sXSspLFxzKihbYS16XSspL2NzZWwJJDEkMiwkMXpyLCQxJDIsJDMvbwlvcgorKyAgICAgICAgcy92bW92XC5pOC9tb3ZpL28Jb3IJIyBmaXggdXAgbGVnYWN5IG1uZW1vbmljcworKyAgICAgICAgcy92ZXh0XC44L2V4dC9vCQlvcgorKyAgICAgICAgcy92cmV2MzJcLjgvcmV2MzIvbwlvcgorKyAgICAgICAgcy92dHN0XC44L2NtdHN0L28Jb3IKKysgICAgICAgIHMvdnNoci91c2hyL28JCW9yCisrICAgICAgICBzL14oXHMrKXYvJDEvbwkJb3IJIyBzdHJpcCBvZmYgdiBwcmVmaXgKKysJcy9cYmJ4XHMrbHJcYi9yZXQvbzsKKysKKysJIyBmaXggdXAgcmVtYWluaWcgbGVnYWN5IHN1ZmZpeGVzCisrCXMvXC5bdWldPzgvL287CisrCW0vXF0sIzgvbyBhbmQgcy9cLjE2Yi9cLjhiL2dvOworKyAgICAgICAgcy9cLlt1aV0/MzIvL28gYW5kIHMvXC4xNmIvXC40cy9nbzsKKysgICAgICAgIHMvXC5bdWldPzY0Ly9vIGFuZCBzL1wuMTZiL1wuMmQvZ287CisrCXMvXC5bNDJdKFtzZF0pXFsoWzAtM10pXF0vXC4kMVxbJDJcXS9vOworKworKyAgICAgICAgcHJpbnQgJF8sIlxuIjsKKysgICAgfQorK30gZWxzZSB7CQkJCSMjIyMjIyMjIDMyLWJpdCBjb2RlCisrICAgIG15ICVvcGNvZGUgPSAoCisrCSJhZXNkIgk9PgkweGYzYjAwMzQwLAkiYWVzZSIJPT4JMHhmM2IwMDMwMCwKKysJImFlc2ltYyI9PgkweGYzYjAwM2MwLAkiYWVzbWMiCT0+CTB4ZjNiMDAzODAJKTsKKysKKysgICAgbG9jYWwgKnVuYWVzID0gc3ViIHsKKysJbXkgKCRtbmVtb25pYywkYXJnKT1AXzsKKysKKysJaWYgKCRhcmcgPX4gbS9bcXZdKFswLTldKylbXixdKixccypbcXZdKFswLTldKykvbykgeworKwkgICAgbXkgJHdvcmQgPSAkb3Bjb2RleyRtbmVtb25pY318KCgkMSY3KTw8MTMpfCgoJDEmOCk8PDE5KQorKwkJCQkJIHwoKCQyJjcpPDwxKSB8KCgkMiY4KTw8Mik7CisrCSAgICAjIHNpbmNlIEFSTXY3IGluc3RydWN0aW9ucyBhcmUgYWx3YXlzIGVuY29kZWQgbGl0dGxlLWVuZGlhbi4KKysJICAgICMgY29ycmVjdCBzb2x1dGlvbiBpcyB0byB1c2UgLmluc3QgZGlyZWN0aXZlLCBidXQgb2xkZXIKKysJICAgICMgYXNzZW1ibGVycyBkb24ndCBpbXBsZW1lbnQgaXQ6LSgKKysJICAgIHNwcmludGYgIi5ieXRlXHQweCUwMngsMHglMDJ4LDB4JTAyeCwweCUwMnhcdEAgJXMgJXMiLAorKwkJCSR3b3JkJjB4ZmYsKCR3b3JkPj44KSYweGZmLAorKwkJCSgkd29yZD4+MTYpJjB4ZmYsKCR3b3JkPj4yNCkmMHhmZiwKKysJCQkkbW5lbW9uaWMsJGFyZzsKKysJfQorKyAgICB9OworKworKyAgICBzdWIgdW52dGJsIHsKKysJbXkgJGFyZz1zaGlmdDsKKysKKysJJGFyZyA9fiBtL3EoWzAtOV0rKSxccypce3EoWzAtOV0rKVx9LFxzKnEoWzAtOV0rKS9vICYmCisrCXNwcmludGYJInZ0YmwuOAlkJWQse3ElZH0sZCVkXG5cdCIuCisrCQkidnRibC44CWQlZCx7cSVkfSxkJWQiLCAyKiQxLCQyLDIqJDMsIDIqJDErMSwkMiwyKiQzKzE7CQorKyAgICB9CisrCisrICAgIHN1YiB1bnZkdXAzMiB7CisrCW15ICRhcmc9c2hpZnQ7CisrCisrCSRhcmcgPX4gbS9xKFswLTldKyksXHMqcShbMC05XSspXFsoWzAtM10pXF0vbyAmJgorKwlzcHJpbnRmCSJ2ZHVwLjMyCXElZCxkJWRbJWRdIiwkMSwyKiQyKygkMz4+MSksJDMmMTsJCisrICAgIH0KKysKKysgICAgc3ViIHVudm1vdjMyIHsKKysJbXkgJGFyZz1zaGlmdDsKKysKKysJJGFyZyA9fiBtL3EoWzAtOV0rKVxbKFswLTNdKVxdLCguKikvbyAmJgorKwlzcHJpbnRmCSJ2bW92LjMyCWQlZFslZF0sJXMiLDIqJDErKCQyPj4xKSwkMiYxLCQzOwkKKysgICAgfQorKworKyAgICBmb3JlYWNoKHNwbGl0KCJcbiIsJGNvZGUpKSB7CisrICAgICAgICBzL1xgKFteXGBdKilcYC9ldmFsKCQxKS9nZW87CisrCisrCXMvXGJbd3hdKFswLTldKylcYi9yJDEvZ287CQkjIG5ldy0+b2xkIHJlZ2lzdGVycworKwlzL1xidihbMC05XSlcLlsxMjQ2OF0rW2JzZF1cYi9xJDEvZ287CSMgbmV3LT5vbGQgcmVnaXN0ZXJzCisrICAgICAgICBzL1wvXC9ccz8vQCAvbzsJCQkJIyBuZXctPm9sZCBzdHlsZSBjb21tZW50YXJ5CisrCisrCSMgZml4IHVwIHJlbWFpbmlnIG5ldy1zdHlsZSBzdWZmaXhlcworKwlzL1x7cShbMC05XSspXH0sXHMqXFsoLispXF0sIzgvc3ByaW50ZiAie2QlZH0sWyQyXSEiLDIqJDEvZW8Jb3IKKysJcy9cXSwjWzAtOV0rL10hL287CisrCisrCXMvW3ZdPyhhZXNcdyspXHMrKFtxdl0uKikvdW5hZXMoJDEsJDIpL2dlbwlvcgorKwlzL2NjbHJccysoW14sXSspLFxzKihbYS16XSspL21vdiQyCSQxLCMwL28Jb3IKKysJcy92dGJsXC44XHMrKC4qKS91bnZ0YmwoJDEpL2dlbwkJCW9yCisrCXMvdmR1cFwuMzJccysoLiopL3VudmR1cDMyKCQxKS9nZW8JCW9yCisrCXMvdm1vdlwuMzJccysoLiopL3Vudm1vdjMyKCQxKS9nZW8JCW9yCisrCXMvXihccyspYlwuLyQxYi9vCQkJCW9yCisrCXMvXihccyspcmV0LyQxYnhcdGxyL287CisrCisrICAgICAgICBwcmludCAkXywiXG4iOworKyAgICB9CisrfQorKworK2Nsb3NlIFNURE9VVDsKK2RpZmYgLS1naXQgYS9jcnlwdG8vYWVzL2FzbS9ic2Flcy1hcm12Ny5wbCBiL2NyeXB0by9hZXMvYXNtL2JzYWVzLWFybXY3LnBsCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZjNkOTZkOQorLS0tIC9kZXYvbnVsbAorKysrIGIvY3J5cHRvL2Flcy9hc20vYnNhZXMtYXJtdjcucGwKK0BAIC0wLDAgKzEsMjQ2NyBAQAorKyMhL3Vzci9iaW4vZW52IHBlcmwKKysKKysjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisrIyBXcml0dGVuIGJ5IEFuZHkgUG9seWFrb3YgPGFwcHJvQG9wZW5zc2wub3JnPiBmb3IgdGhlIE9wZW5TU0wKKysjIHByb2plY3QuIFRoZSBtb2R1bGUgaXMsIGhvd2V2ZXIsIGR1YWwgbGljZW5zZWQgdW5kZXIgT3BlblNTTCBhbmQKKysjIENSWVBUT0dBTVMgbGljZW5zZXMgZGVwZW5kaW5nIG9uIHdoZXJlIHlvdSBvYnRhaW4gaXQuIEZvciBmdXJ0aGVyCisrIyBkZXRhaWxzIHNlZSBodHRwOi8vd3d3Lm9wZW5zc2wub3JnL35hcHByby9jcnlwdG9nYW1zLy4KKysjCisrIyBTcGVjaWZpYyBtb2RlcyBhbmQgYWRhcHRhdGlvbiBmb3IgTGludXgga2VybmVsIGJ5IEFyZCBCaWVzaGV1dmVsCisrIyA8YXJkLmJpZXNoZXV2ZWxAbGluYXJvLm9yZz4uIFBlcm1pc3Npb24gdG8gdXNlIHVuZGVyIEdQTCB0ZXJtcyBpcworKyMgZ3JhbnRlZC4KKysjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisrCisrIyBCaXQtc2xpY2VkIEFFUyBmb3IgQVJNIE5FT04KKysjCisrIyBGZWJydWFyeSAyMDEyLgorKyMKKysjIFRoaXMgaW1wbGVtZW50YXRpb24gaXMgZGlyZWN0IGFkYXB0YXRpb24gb2YgYnNhZXMteDg2XzY0IG1vZHVsZSBmb3IKKysjIEFSTSBORU9OLiBFeGNlcHQgdGhhdCB0aGlzIG1vZHVsZSBpcyBlbmRpYW4tbmV1dHJhbCBbaW4gc2Vuc2UgdGhhdAorKyMgaXQgY2FuIGJlIGNvbXBpbGVkIGZvciBlaXRoZXIgZW5kaWFubmVzc10gYnkgY291cnRlc3kgb2YgdmxkMS44J3MKKysjIG5ldXRyYWxpdHkuIEluaXRpYWwgdmVyc2lvbiBkb2Vzbid0IGltcGxlbWVudCBpbnRlcmZhY2UgdG8gT3BlblNTTCwKKysjIG9ubHkgbG93LWxldmVsIHByaW1pdGl2ZXMgYW5kIHVuc3VwcG9ydGVkIGVudHJ5IHBvaW50cywganVzdCBlbm91Z2gKKysjIHRvIGNvbGxlY3QgcGVyZm9ybWFuY2UgcmVzdWx0cywgd2hpY2ggZm9yIENvcnRleC1BOCBjb3JlIGFyZToKKysjCisrIyBlbmNyeXB0CTE5LjUgY3ljbGVzIHBlciBieXRlIHByb2Nlc3NlZCB3aXRoIDEyOC1iaXQga2V5CisrIyBkZWNyeXB0CTIyLjEgY3ljbGVzIHBlciBieXRlIHByb2Nlc3NlZCB3aXRoIDEyOC1iaXQga2V5CisrIyBrZXkgY29udi4JNDQwICBjeWNsZXMgcGVyIDEyOC1iaXQga2V5LzAuMTggb2YgOHggYmxvY2sKKysjCisrIyBTbmFwZHJhZ29uIFM0IGVuY3J5cHRzIGJ5dGUgaW4gMTcuNiBjeWNsZXMgYW5kIGRlY3J5cHRzIGluIDE5LjcsCisrIyB3aGljaCBpcyBbbXVjaF0gd29yc2UgdGhhbiBhbnRpY2lwYXRlZCAoZm9yIGZ1cnRoZXIgZGV0YWlscyBzZWUKKysjIGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvfmFwcHJvL1NuYXBkcmFnb24tUzQuaHRtbCkuCisrIworKyMgQ29ydGV4LUExNSBtYW5hZ2VzIGluIDE0LjIvMTYuMSBjeWNsZXMgW3doZW4gaW50ZWdlci1vbmx5IGNvZGUKKysjIG1hbmFnZXMgaW4gMjAuMCBjeWNsZXNdLgorKyMKKysjIFdoZW4gY29tcGFyaW5nIHRvIHg4Nl82NCByZXN1bHRzIGtlZXAgaW4gbWluZCB0aGF0IE5FT04gdW5pdCBpcworKyMgW21vc3RseV0gc2luZ2xlLWlzc3VlIGFuZCB0aHVzIGNhbid0IFtmdWxseV0gYmVuZWZpdCBmcm9tCisrIyBpbnN0cnVjdGlvbi1sZXZlbCBwYXJhbGxlbGlzbS4gQW5kIHdoZW4gY29tcGFyaW5nIHRvIGFlcy1hcm12NAorKyMgcmVzdWx0cyBrZWVwIGluIG1pbmQga2V5IHNjaGVkdWxlIGNvbnZlcnNpb24gb3ZlcmhlYWQgKHNlZQorKyMgYnNhZXMteDg2XzY0LnBsIGZvciBmdXJ0aGVyIGRldGFpbHMpLi4uCisrIworKyMJCQkJCQk8YXBwcm9Ab3BlbnNzbC5vcmc+CisrCisrIyBBcHJpbC1BdWd1c3QgMjAxMworKyMKKysjIEFkZCBDQkMsIENUUiBhbmQgWFRTIHN1YnJvdXRpbmVzLCBhZGFwdCBmb3Iga2VybmVsIHVzZS4KKysjCisrIwkJCQkJPGFyZC5iaWVzaGV1dmVsQGxpbmFyby5vcmc+CisrCisrd2hpbGUgKCgkb3V0cHV0PXNoaWZ0KSAmJiAoJG91dHB1dCF+L15cd1tcd1wtXSpcLlx3KyQvKSkge30KKytvcGVuIFNURE9VVCwiPiRvdXRwdXQiOworKworK215ICgkaW5wLCRvdXQsJGxlbiwka2V5KT0oInIwIiwicjEiLCJyMiIsInIzIik7CisrbXkgQFhNTT1tYXAoInEkXyIsKDAuLjE1KSk7CisrCisreworK215ICgka2V5LCRyb3VuZHMsJGNvbnN0KT0oInI0IiwicjUiLCJyNiIpOworKworK3N1YiBEbG8oKSAgIHsgc2hpZnQ9fm18cShbMV0/WzAtOV0pfD8iZCIuKCQxKjIpOiIiOyAgICAgfQorK3N1YiBEaGkoKSAgIHsgc2hpZnQ9fm18cShbMV0/WzAtOV0pfD8iZCIuKCQxKjIrMSk6IiI7ICAgfQorKworK3N1YiBTYm94IHsKKysjIGlucHV0IGluICBsc2IgPiBbYjAsIGIxLCBiMiwgYjMsIGI0LCBiNSwgYjYsIGI3XSA8IG1zYgorKyMgb3V0cHV0IGluIGxzYiA+IFtiMCwgYjEsIGI0LCBiNiwgYjMsIGI3LCBiMiwgYjVdIDwgbXNiCisrbXkgQGI9QF9bMC4uN107CisrbXkgQHQ9QF9bOC4uMTFdOworK215IEBzPUBfWzEyLi4xNV07CisrCSZJbkJhc2lzQ2hhbmdlCShAYik7CisrCSZJbnZfR0YyNTYJKEBiWzYsNSwwLDMsNywxLDQsMl0sQHQsQHMpOworKwkmT3V0QmFzaXNDaGFuZ2UJKEBiWzcsMSw0LDIsNiw1LDAsM10pOworK30KKysKKytzdWIgSW5CYXNpc0NoYW5nZSB7CisrIyBpbnB1dCBpbiAgbHNiID4gW2IwLCBiMSwgYjIsIGIzLCBiNCwgYjUsIGI2LCBiN10gPCBtc2IKKysjIG91dHB1dCBpbiBsc2IgPiBbYjYsIGI1LCBiMCwgYjMsIGI3LCBiMSwgYjQsIGIyXSA8IG1zYiAKKytteSBAYj1AX1swLi43XTsKKyskY29kZS49PDxfX187CisrCXZlb3IJQGJbMl0sIEBiWzJdLCBAYlsxXQorKwl2ZW9yCUBiWzVdLCBAYls1XSwgQGJbNl0KKysJdmVvcglAYlszXSwgQGJbM10sIEBiWzBdCisrCXZlb3IJQGJbNl0sIEBiWzZdLCBAYlsyXQorKwl2ZW9yCUBiWzVdLCBAYls1XSwgQGJbMF0KKysKKysJdmVvcglAYls2XSwgQGJbNl0sIEBiWzNdCisrCXZlb3IJQGJbM10sIEBiWzNdLCBAYls3XQorKwl2ZW9yCUBiWzddLCBAYls3XSwgQGJbNV0KKysJdmVvcglAYlszXSwgQGJbM10sIEBiWzRdCisrCXZlb3IJQGJbNF0sIEBiWzRdLCBAYls1XQorKworKwl2ZW9yCUBiWzJdLCBAYlsyXSwgQGJbN10KKysJdmVvcglAYlszXSwgQGJbM10sIEBiWzFdCisrCXZlb3IJQGJbMV0sIEBiWzFdLCBAYls1XQorK19fXworK30KKysKKytzdWIgT3V0QmFzaXNDaGFuZ2UgeworKyMgaW5wdXQgaW4gIGxzYiA+IFtiMCwgYjEsIGIyLCBiMywgYjQsIGI1LCBiNiwgYjddIDwgbXNiCisrIyBvdXRwdXQgaW4gbHNiID4gW2I2LCBiMSwgYjIsIGI0LCBiNywgYjAsIGIzLCBiNV0gPCBtc2IKKytteSBAYj1AX1swLi43XTsKKyskY29kZS49PDxfX187CisrCXZlb3IJQGJbMF0sIEBiWzBdLCBAYls2XQorKwl2ZW9yCUBiWzFdLCBAYlsxXSwgQGJbNF0KKysJdmVvcglAYls0XSwgQGJbNF0sIEBiWzZdCisrCXZlb3IJQGJbMl0sIEBiWzJdLCBAYlswXQorKwl2ZW9yCUBiWzZdLCBAYls2XSwgQGJbMV0KKysKKysJdmVvcglAYlsxXSwgQGJbMV0sIEBiWzVdCisrCXZlb3IJQGJbNV0sIEBiWzVdLCBAYlszXQorKwl2ZW9yCUBiWzNdLCBAYlszXSwgQGJbN10KKysJdmVvcglAYls3XSwgQGJbN10sIEBiWzVdCisrCXZlb3IJQGJbMl0sIEBiWzJdLCBAYls1XQorKworKwl2ZW9yCUBiWzRdLCBAYls0XSwgQGJbN10KKytfX18KKyt9CisrCisrc3ViIEludlNib3ggeworKyMgaW5wdXQgaW4gbHNiIAk+IFtiMCwgYjEsIGIyLCBiMywgYjQsIGI1LCBiNiwgYjddIDwgbXNiCisrIyBvdXRwdXQgaW4gbHNiCT4gW2IwLCBiMSwgYjYsIGI0LCBiMiwgYjcsIGIzLCBiNV0gPCBtc2IKKytteSBAYj1AX1swLi43XTsKKytteSBAdD1AX1s4Li4xMV07CisrbXkgQHM9QF9bMTIuLjE1XTsKKysJJkludkluQmFzaXNDaGFuZ2UJKEBiKTsKKysJJkludl9HRjI1NgkJKEBiWzUsMSwyLDYsMyw3LDAsNF0sQHQsQHMpOworKwkmSW52T3V0QmFzaXNDaGFuZ2UJKEBiWzMsNywwLDQsNSwxLDIsNl0pOworK30KKysKKytzdWIgSW52SW5CYXNpc0NoYW5nZSB7CQkjIE91dEJhc2lzQ2hhbmdlIGluIHJldmVyc2UgKHdpdGggdHdpc3QpCisrbXkgQGI9QF9bNSwxLDIsNiwzLDcsMCw0XTsKKyskY29kZS49PDxfX18KKysJIHZlb3IJQGJbMV0sIEBiWzFdLCBAYls3XQorKwl2ZW9yCUBiWzRdLCBAYls0XSwgQGJbN10KKysKKysJdmVvcglAYls3XSwgQGJbN10sIEBiWzVdCisrCSB2ZW9yCUBiWzFdLCBAYlsxXSwgQGJbM10KKysJdmVvcglAYlsyXSwgQGJbMl0sIEBiWzVdCisrCXZlb3IJQGJbM10sIEBiWzNdLCBAYls3XQorKworKwl2ZW9yCUBiWzZdLCBAYls2XSwgQGJbMV0KKysJdmVvcglAYlsyXSwgQGJbMl0sIEBiWzBdCisrCSB2ZW9yCUBiWzVdLCBAYls1XSwgQGJbM10KKysJdmVvcglAYls0XSwgQGJbNF0sIEBiWzZdCisrCXZlb3IJQGJbMF0sIEBiWzBdLCBAYls2XQorKwl2ZW9yCUBiWzFdLCBAYlsxXSwgQGJbNF0KKytfX18KKyt9CisrCisrc3ViIEludk91dEJhc2lzQ2hhbmdlIHsJCSMgSW5CYXNpc0NoYW5nZSBpbiByZXZlcnNlCisrbXkgQGI9QF9bMiw1LDcsMyw2LDEsMCw0XTsKKyskY29kZS49PDxfX187CisrCXZlb3IJQGJbMV0sIEBiWzFdLCBAYls1XQorKwl2ZW9yCUBiWzJdLCBAYlsyXSwgQGJbN10KKysKKysJdmVvcglAYlszXSwgQGJbM10sIEBiWzFdCisrCXZlb3IJQGJbNF0sIEBiWzRdLCBAYls1XQorKwl2ZW9yCUBiWzddLCBAYls3XSwgQGJbNV0KKysJdmVvcglAYlszXSwgQGJbM10sIEBiWzRdCisrCSB2ZW9yIAlAYls1XSwgQGJbNV0sIEBiWzBdCisrCXZlb3IJQGJbM10sIEBiWzNdLCBAYls3XQorKwkgdmVvcglAYls2XSwgQGJbNl0sIEBiWzJdCisrCSB2ZW9yCUBiWzJdLCBAYlsyXSwgQGJbMV0KKysJdmVvcglAYls2XSwgQGJbNl0sIEBiWzNdCisrCisrCXZlb3IJQGJbM10sIEBiWzNdLCBAYlswXQorKwl2ZW9yCUBiWzVdLCBAYls1XSwgQGJbNl0KKytfX18KKyt9CisrCisrc3ViIE11bF9HRjQgeworKyM7KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKyM7KiBNdWxfR0Y0OiBJbnB1dCB4MC14MSx5MC15MSBPdXRwdXQgeDAteDEgVGVtcCB0MCAoOCkgKgorKyM7KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorK215ICgkeDAsJHgxLCR5MCwkeTEsJHQwLCR0MSk9QF87CisrJGNvZGUuPTw8X19fOworKwl2ZW9yIAkkdDAsICR5MCwgJHkxCisrCXZhbmQJJHQwLCAkdDAsICR4MAorKwl2ZW9yCSR4MCwgJHgwLCAkeDEKKysJdmFuZAkkdDEsICR4MSwgJHkwCisrCXZhbmQJJHgwLCAkeDAsICR5MQorKwl2ZW9yCSR4MSwgJHQxLCAkdDAKKysJdmVvcgkkeDAsICR4MCwgJHQxCisrX19fCisrfQorKworK3N1YiBNdWxfR0Y0X04gewkJCQkjIG5vdCB1c2VkLCBzZWUgbmV4dCBzdWJyb3V0aW5lCisrIyBtdWx0aXBseSBhbmQgc2NhbGUgYnkgTgorK215ICgkeDAsJHgxLCR5MCwkeTEsJHQwKT1AXzsKKyskY29kZS49PDxfX187CisrCXZlb3IJJHQwLCAkeTAsICR5MQorKwl2YW5kCSR0MCwgJHQwLCAkeDAKKysJdmVvcgkkeDAsICR4MCwgJHgxCisrCXZhbmQJJHgxLCAkeDEsICR5MAorKwl2YW5kCSR4MCwgJHgwLCAkeTEKKysJdmVvcgkkeDEsICR4MSwgJHgwCisrCXZlb3IJJHgwLCAkeDAsICR0MAorK19fXworK30KKysKKytzdWIgTXVsX0dGNF9OX0dGNCB7CisrIyBpbnRlcmxlYXZlZCBNdWxfR0Y0X04gYW5kIE11bF9HRjQKKytteSAoJHgwLCR4MSwkeTAsJHkxLCR0MCwKKysgICAgJHgyLCR4MywkeTIsJHkzLCR0MSk9QF87CisrJGNvZGUuPTw8X19fOworKwl2ZW9yCSR0MCwgJHkwLCAkeTEKKysJIHZlb3IgCSR0MSwgJHkyLCAkeTMKKysJdmFuZAkkdDAsICR0MCwgJHgwCisrCSB2YW5kCSR0MSwgJHQxLCAkeDIKKysJdmVvcgkkeDAsICR4MCwgJHgxCisrCSB2ZW9yCSR4MiwgJHgyLCAkeDMKKysJdmFuZAkkeDEsICR4MSwgJHkwCisrCSB2YW5kCSR4MywgJHgzLCAkeTIKKysJdmFuZAkkeDAsICR4MCwgJHkxCisrCSB2YW5kCSR4MiwgJHgyLCAkeTMKKysJdmVvcgkkeDEsICR4MSwgJHgwCisrCSB2ZW9yCSR4MiwgJHgyLCAkeDMKKysJdmVvcgkkeDAsICR4MCwgJHQwCisrCSB2ZW9yCSR4MywgJHgzLCAkdDEKKytfX18KKyt9Cisrc3ViIE11bF9HRjE2XzIgeworK215IEB4PUBfWzAuLjddOworK215IEB5PUBfWzguLjExXTsKKytteSBAdD1AX1sxMi4uMTVdOworKyRjb2RlLj08PF9fXzsKKysJdmVvcglAdFswXSwgQHhbMF0sIEB4WzJdCisrCXZlb3IJQHRbMV0sIEB4WzFdLCBAeFszXQorK19fXworKwkmTXVsX0dGNCAgCShAeFswXSwgQHhbMV0sIEB5WzBdLCBAeVsxXSwgQHRbMi4uM10pOworKyRjb2RlLj08PF9fXzsKKysJdmVvcglAeVswXSwgQHlbMF0sIEB5WzJdCisrCXZlb3IJQHlbMV0sIEB5WzFdLCBAeVszXQorK19fXworKwlNdWxfR0Y0X05fR0Y0CShAdFswXSwgQHRbMV0sIEB5WzBdLCBAeVsxXSwgQHRbM10sCisrCQkJIEB4WzJdLCBAeFszXSwgQHlbMl0sIEB5WzNdLCBAdFsyXSk7CisrJGNvZGUuPTw8X19fOworKwl2ZW9yCUB4WzBdLCBAeFswXSwgQHRbMF0KKysJdmVvcglAeFsyXSwgQHhbMl0sIEB0WzBdCisrCXZlb3IJQHhbMV0sIEB4WzFdLCBAdFsxXQorKwl2ZW9yCUB4WzNdLCBAeFszXSwgQHRbMV0KKysKKysJdmVvcglAdFswXSwgQHhbNF0sIEB4WzZdCisrCXZlb3IJQHRbMV0sIEB4WzVdLCBAeFs3XQorK19fXworKwkmTXVsX0dGNF9OX0dGNAkoQHRbMF0sIEB0WzFdLCBAeVswXSwgQHlbMV0sIEB0WzNdLAorKwkJCSBAeFs2XSwgQHhbN10sIEB5WzJdLCBAeVszXSwgQHRbMl0pOworKyRjb2RlLj08PF9fXzsKKysJdmVvcglAeVswXSwgQHlbMF0sIEB5WzJdCisrCXZlb3IJQHlbMV0sIEB5WzFdLCBAeVszXQorK19fXworKwkmTXVsX0dGNCAgCShAeFs0XSwgQHhbNV0sIEB5WzBdLCBAeVsxXSwgQHRbMi4uM10pOworKyRjb2RlLj08PF9fXzsKKysJdmVvcglAeFs0XSwgQHhbNF0sIEB0WzBdCisrCXZlb3IJQHhbNl0sIEB4WzZdLCBAdFswXQorKwl2ZW9yCUB4WzVdLCBAeFs1XSwgQHRbMV0KKysJdmVvcglAeFs3XSwgQHhbN10sIEB0WzFdCisrX19fCisrfQorK3N1YiBJbnZfR0YyNTYgeworKyM7KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKysjOyogSW52X0dGMjU2OiBJbnB1dCB4MC14NyBPdXRwdXQgeDAteDcgVGVtcCB0MC10MyxzMC1zMyAoMTQ0KSAgICAgICAqCisrIzsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorK215IEB4PUBfWzAuLjddOworK215IEB0PUBfWzguLjExXTsKKytteSBAcz1AX1sxMi4uMTVdOworKyMgZGlyZWN0IG9wdGltaXphdGlvbnMgZnJvbSBoYXJkd2FyZQorKyRjb2RlLj08PF9fXzsKKysJdmVvcglAdFszXSwgQHhbNF0sIEB4WzZdCisrCXZlb3IJQHRbMl0sIEB4WzVdLCBAeFs3XQorKwl2ZW9yCUB0WzFdLCBAeFsxXSwgQHhbM10KKysJdmVvcglAc1sxXSwgQHhbN10sIEB4WzZdCisrCSB2bW92CUB0WzBdLCBAdFsyXQorKwl2ZW9yCUBzWzBdLCBAeFswXSwgQHhbMl0KKysKKysJdm9ycglAdFsyXSwgQHRbMl0sIEB0WzFdCisrCXZlb3IJQHNbM10sIEB0WzNdLCBAdFswXQorKwl2YW5kCUBzWzJdLCBAdFszXSwgQHNbMF0KKysJdm9ycglAdFszXSwgQHRbM10sIEBzWzBdCisrCXZlb3IJQHNbMF0sIEBzWzBdLCBAdFsxXQorKwl2YW5kCUB0WzBdLCBAdFswXSwgQHRbMV0KKysJdmVvcglAdFsxXSwgQHhbM10sIEB4WzJdCisrCXZhbmQJQHNbM10sIEBzWzNdLCBAc1swXQorKwl2YW5kCUBzWzFdLCBAc1sxXSwgQHRbMV0KKysJdmVvcglAdFsxXSwgQHhbNF0sIEB4WzVdCisrCXZlb3IJQHNbMF0sIEB4WzFdLCBAeFswXQorKwl2ZW9yCUB0WzNdLCBAdFszXSwgQHNbMV0KKysJdmVvcglAdFsyXSwgQHRbMl0sIEBzWzFdCisrCXZhbmQJQHNbMV0sIEB0WzFdLCBAc1swXQorKwl2b3JyCUB0WzFdLCBAdFsxXSwgQHNbMF0KKysJdmVvcglAdFszXSwgQHRbM10sIEBzWzNdCisrCXZlb3IJQHRbMF0sIEB0WzBdLCBAc1sxXQorKwl2ZW9yCUB0WzJdLCBAdFsyXSwgQHNbMl0KKysJdmVvcglAdFsxXSwgQHRbMV0sIEBzWzNdCisrCXZlb3IJQHRbMF0sIEB0WzBdLCBAc1syXQorKwl2YW5kCUBzWzBdLCBAeFs3XSwgQHhbM10KKysJdmVvcglAdFsxXSwgQHRbMV0sIEBzWzJdCisrCXZhbmQJQHNbMV0sIEB4WzZdLCBAeFsyXQorKwl2YW5kCUBzWzJdLCBAeFs1XSwgQHhbMV0KKysJdm9ycglAc1szXSwgQHhbNF0sIEB4WzBdCisrCXZlb3IJQHRbM10sIEB0WzNdLCBAc1swXQorKwl2ZW9yCUB0WzFdLCBAdFsxXSwgQHNbMl0KKysJdmVvcglAdFswXSwgQHRbMF0sIEBzWzNdCisrCXZlb3IJQHRbMl0sIEB0WzJdLCBAc1sxXQorKworKwlAIEludl9HRjE2IFx0MCwgXHQxLCBcdDIsIFx0MywgXHMwLCBcczEsIFxzMiwgXHMzCisrCisrCUAgbmV3IHNtYWxsZXIgaW52ZXJzaW9uCisrCisrCXZhbmQJQHNbMl0sIEB0WzNdLCBAdFsxXQorKwl2bW92CUBzWzBdLCBAdFswXQorKworKwl2ZW9yCUBzWzFdLCBAdFsyXSwgQHNbMl0KKysJdmVvcglAc1szXSwgQHRbMF0sIEBzWzJdCisrCXZlb3IJQHNbMl0sIEB0WzBdLCBAc1syXQlAIEBzWzJdPUBzWzNdCisrCisrCXZic2wJQHNbMV0sIEB0WzFdLCBAdFswXQorKwl2YnNsCUBzWzNdLCBAdFszXSwgQHRbMl0KKysJdmVvcglAdFszXSwgQHRbM10sIEB0WzJdCisrCisrCXZic2wJQHNbMF0sIEBzWzFdLCBAc1syXQorKwl2YnNsCUB0WzBdLCBAc1syXSwgQHNbMV0KKysKKysJdmFuZAlAc1syXSwgQHNbMF0sIEBzWzNdCisrCXZlb3IJQHRbMV0sIEB0WzFdLCBAdFswXQorKworKwl2ZW9yCUBzWzJdLCBAc1syXSwgQHRbM10KKytfX18KKysjIG91dHB1dCBpbiBzMywgczIsIHMxLCB0MQorKworKyMgTXVsX0dGMTZfMiBceDAsIFx4MSwgXHgyLCBceDMsIFx4NCwgXHg1LCBceDYsIFx4NywgXHQyLCBcdDMsIFx0MCwgXHQxLCBcczAsIFxzMSwgXHMyLCBcczMKKysKKysjIE11bF9HRjE2XzIgXHgwLCBceDEsIFx4MiwgXHgzLCBceDQsIFx4NSwgXHg2LCBceDcsIFxzMywgXHMyLCBcczEsIFx0MSwgXHMwLCBcdDAsIFx0MiwgXHQzCisrCSZNdWxfR0YxNl8yKEB4LEBzWzMsMiwxXSxAdFsxXSxAc1swXSxAdFswLDIsM10pOworKworKyMjIyBvdXRwdXQgbXNiID4gW3gzLHgyLHgxLHgwLHg3LHg2LHg1LHg0XSA8IGxzYgorK30KKysKKysjIEFFUyBsaW5lYXIgY29tcG9uZW50cworKworK3N1YiBTaGlmdFJvd3MgeworK215IEB4PUBfWzAuLjddOworK215IEB0PUBfWzguLjExXTsKKytteSAkbWFzaz1wb3A7CisrJGNvZGUuPTw8X19fOworKwl2bGRtaWEJJGtleSEsIHtAdFswXS1AdFszXX0KKysJdmVvcglAdFswXSwgQHRbMF0sIEB4WzBdCisrCXZlb3IJQHRbMV0sIEB0WzFdLCBAeFsxXQorKwl2dGJsLjgJYCZEbG8oQHhbMF0pYCwge0B0WzBdfSwgYCZEbG8oJG1hc2spYAorKwl2dGJsLjgJYCZEaGkoQHhbMF0pYCwge0B0WzBdfSwgYCZEaGkoJG1hc2spYAorKwl2bGRtaWEJJGtleSEsIHtAdFswXX0KKysJdmVvcglAdFsyXSwgQHRbMl0sIEB4WzJdCisrCXZ0YmwuOAlgJkRsbyhAeFsxXSlgLCB7QHRbMV19LCBgJkRsbygkbWFzaylgCisrCXZ0YmwuOAlgJkRoaShAeFsxXSlgLCB7QHRbMV19LCBgJkRoaSgkbWFzaylgCisrCXZsZG1pYQkka2V5ISwge0B0WzFdfQorKwl2ZW9yCUB0WzNdLCBAdFszXSwgQHhbM10KKysJdnRibC44CWAmRGxvKEB4WzJdKWAsIHtAdFsyXX0sIGAmRGxvKCRtYXNrKWAKKysJdnRibC44CWAmRGhpKEB4WzJdKWAsIHtAdFsyXX0sIGAmRGhpKCRtYXNrKWAKKysJdmxkbWlhCSRrZXkhLCB7QHRbMl19CisrCXZ0YmwuOAlgJkRsbyhAeFszXSlgLCB7QHRbM119LCBgJkRsbygkbWFzaylgCisrCXZ0YmwuOAlgJkRoaShAeFszXSlgLCB7QHRbM119LCBgJkRoaSgkbWFzaylgCisrCXZsZG1pYQkka2V5ISwge0B0WzNdfQorKwl2ZW9yCUB0WzBdLCBAdFswXSwgQHhbNF0KKysJdmVvcglAdFsxXSwgQHRbMV0sIEB4WzVdCisrCXZ0YmwuOAlgJkRsbyhAeFs0XSlgLCB7QHRbMF19LCBgJkRsbygkbWFzaylgCisrCXZ0YmwuOAlgJkRoaShAeFs0XSlgLCB7QHRbMF19LCBgJkRoaSgkbWFzaylgCisrCXZlb3IJQHRbMl0sIEB0WzJdLCBAeFs2XQorKwl2dGJsLjgJYCZEbG8oQHhbNV0pYCwge0B0WzFdfSwgYCZEbG8oJG1hc2spYAorKwl2dGJsLjgJYCZEaGkoQHhbNV0pYCwge0B0WzFdfSwgYCZEaGkoJG1hc2spYAorKwl2ZW9yCUB0WzNdLCBAdFszXSwgQHhbN10KKysJdnRibC44CWAmRGxvKEB4WzZdKWAsIHtAdFsyXX0sIGAmRGxvKCRtYXNrKWAKKysJdnRibC44CWAmRGhpKEB4WzZdKWAsIHtAdFsyXX0sIGAmRGhpKCRtYXNrKWAKKysJdnRibC44CWAmRGxvKEB4WzddKWAsIHtAdFszXX0sIGAmRGxvKCRtYXNrKWAKKysJdnRibC44CWAmRGhpKEB4WzddKWAsIHtAdFszXX0sIGAmRGhpKCRtYXNrKWAKKytfX18KKyt9CisrCisrc3ViIE1peENvbHVtbnMgeworKyMgbW9kaWZpZWQgdG8gZW1pdCBvdXRwdXQgaW4gb3JkZXIgc3VpdGFibGUgZm9yIGZlZWRpbmcgYmFjayB0byBhZXNlbmNbbGFzdF0KKytteSBAeD1AX1swLi43XTsKKytteSBAdD1AX1s4Li4xNV07CisrbXkgJGludj1AX1sxNl07CSMgb3B0aW9uYWwKKyskY29kZS49PDxfX187CisrCXZleHQuOAlAdFswXSwgQHhbMF0sIEB4WzBdLCAjMTIJQCB4MCA8PDwgMzIKKysJdmV4dC44CUB0WzFdLCBAeFsxXSwgQHhbMV0sICMxMgorKwkgdmVvcglAeFswXSwgQHhbMF0sIEB0WzBdCQlAIHgwIF4gKHgwIDw8PCAzMikKKysJdmV4dC44CUB0WzJdLCBAeFsyXSwgQHhbMl0sICMxMgorKwkgdmVvcglAeFsxXSwgQHhbMV0sIEB0WzFdCisrCXZleHQuOAlAdFszXSwgQHhbM10sIEB4WzNdLCAjMTIKKysJIHZlb3IJQHhbMl0sIEB4WzJdLCBAdFsyXQorKwl2ZXh0LjgJQHRbNF0sIEB4WzRdLCBAeFs0XSwgIzEyCisrCSB2ZW9yCUB4WzNdLCBAeFszXSwgQHRbM10KKysJdmV4dC44CUB0WzVdLCBAeFs1XSwgQHhbNV0sICMxMgorKwkgdmVvcglAeFs0XSwgQHhbNF0sIEB0WzRdCisrCXZleHQuOAlAdFs2XSwgQHhbNl0sIEB4WzZdLCAjMTIKKysJIHZlb3IJQHhbNV0sIEB4WzVdLCBAdFs1XQorKwl2ZXh0LjgJQHRbN10sIEB4WzddLCBAeFs3XSwgIzEyCisrCSB2ZW9yCUB4WzZdLCBAeFs2XSwgQHRbNl0KKysKKysJdmVvcglAdFsxXSwgQHRbMV0sIEB4WzBdCisrCSB2ZW9yCUB4WzddLCBAeFs3XSwgQHRbN10KKysJIHZleHQuOAlAeFswXSwgQHhbMF0sIEB4WzBdLCAjOAkJQCAoeDAgXiAoeDAgPDw8IDMyKSkgPDw8IDY0KQorKwl2ZW9yCUB0WzJdLCBAdFsyXSwgQHhbMV0KKysJdmVvcglAdFswXSwgQHRbMF0sIEB4WzddCisrCXZlb3IJQHRbMV0sIEB0WzFdLCBAeFs3XQorKwkgdmV4dC44CUB4WzFdLCBAeFsxXSwgQHhbMV0sICM4CisrCXZlb3IJQHRbNV0sIEB0WzVdLCBAeFs0XQorKwkgdmVvcglAeFswXSwgQHhbMF0sIEB0WzBdCisrCXZlb3IJQHRbNl0sIEB0WzZdLCBAeFs1XQorKwkgdmVvcglAeFsxXSwgQHhbMV0sIEB0WzFdCisrCSB2ZXh0LjgJQHRbMF0sIEB4WzRdLCBAeFs0XSwgIzgKKysJdmVvcglAdFs0XSwgQHRbNF0sIEB4WzNdCisrCSB2ZXh0LjgJQHRbMV0sIEB4WzVdLCBAeFs1XSwgIzgKKysJdmVvcglAdFs3XSwgQHRbN10sIEB4WzZdCisrCSB2ZXh0LjgJQHhbNF0sIEB4WzNdLCBAeFszXSwgIzgKKysJdmVvcglAdFszXSwgQHRbM10sIEB4WzJdCisrCSB2ZXh0LjgJQHhbNV0sIEB4WzddLCBAeFs3XSwgIzgKKysJdmVvcglAdFs0XSwgQHRbNF0sIEB4WzddCisrCSB2ZXh0LjgJQHhbM10sIEB4WzZdLCBAeFs2XSwgIzgKKysJdmVvcglAdFszXSwgQHRbM10sIEB4WzddCisrCSB2ZXh0LjgJQHhbNl0sIEB4WzJdLCBAeFsyXSwgIzgKKysJdmVvcglAeFs3XSwgQHRbMV0sIEB0WzVdCisrX19fCisrJGNvZGUuPTw8X19fIGlmICghJGludik7CisrCXZlb3IJQHhbMl0sIEB0WzBdLCBAdFs0XQorKwl2ZW9yCUB4WzRdLCBAeFs0XSwgQHRbM10KKysJdmVvcglAeFs1XSwgQHhbNV0sIEB0WzddCisrCXZlb3IJQHhbM10sIEB4WzNdLCBAdFs2XQorKwkgQCB2bW92CUB4WzJdLCBAdFswXQorKwl2ZW9yCUB4WzZdLCBAeFs2XSwgQHRbMl0KKysJIEAgdm1vdglAeFs3XSwgQHRbMV0KKytfX18KKyskY29kZS49PDxfX18gaWYgKCRpbnYpOworKwl2ZW9yCUB0WzNdLCBAdFszXSwgQHhbNF0KKysJdmVvcglAeFs1XSwgQHhbNV0sIEB0WzddCisrCXZlb3IJQHhbMl0sIEB4WzNdLCBAdFs2XQorKwl2ZW9yCUB4WzNdLCBAdFswXSwgQHRbNF0KKysJdmVvcglAeFs0XSwgQHhbNl0sIEB0WzJdCisrCXZtb3YJQHhbNl0sIEB0WzNdCisrCSBAIHZtb3YJQHhbN10sIEB0WzFdCisrX19fCisrfQorKworK3N1YiBJbnZNaXhDb2x1bW5zX29yaWcgeworK215IEB4PUBfWzAuLjddOworK215IEB0PUBfWzguLjE1XTsKKysKKyskY29kZS49PDxfX187CisrCUAgbXVsdGlwbGljYXRpb24gYnkgMHgwZQorKwl2ZXh0LjgJQHRbN10sIEB4WzddLCBAeFs3XSwgIzEyCisrCXZtb3YJQHRbMl0sIEB4WzJdCisrCXZlb3IJQHhbMl0sIEB4WzJdLCBAeFs1XQkJQCAyIDUKKysJdmVvcglAeFs3XSwgQHhbN10sIEB4WzVdCQlAIDcgNQorKwl2ZXh0LjgJQHRbMF0sIEB4WzBdLCBAeFswXSwgIzEyCisrCXZtb3YJQHRbNV0sIEB4WzVdCisrCXZlb3IJQHhbNV0sIEB4WzVdLCBAeFswXQkJQCA1IDAJCVsxXQorKwl2ZW9yCUB4WzBdLCBAeFswXSwgQHhbMV0JCUAgMCAxCisrCXZleHQuOAlAdFsxXSwgQHhbMV0sIEB4WzFdLCAjMTIKKysJdmVvcglAeFsxXSwgQHhbMV0sIEB4WzJdCQlAIDEgMjUKKysJdmVvcglAeFswXSwgQHhbMF0sIEB4WzZdCQlAIDAxIDYJCVsyXQorKwl2ZXh0LjgJQHRbM10sIEB4WzNdLCBAeFszXSwgIzEyCisrCXZlb3IJQHhbMV0sIEB4WzFdLCBAeFszXQkJQCAxMjUgMwkJWzRdCisrCXZlb3IJQHhbMl0sIEB4WzJdLCBAeFswXQkJQCAyNSAwMTYJWzNdCisrCXZlb3IJQHhbM10sIEB4WzNdLCBAeFs3XQkJQCAzIDc1CisrCXZlb3IJQHhbN10sIEB4WzddLCBAeFs2XQkJQCA3NSA2CQlbMF0KKysJdmV4dC44CUB0WzZdLCBAeFs2XSwgQHhbNl0sICMxMgorKwl2bW92CUB0WzRdLCBAeFs0XQorKwl2ZW9yCUB4WzZdLCBAeFs2XSwgQHhbNF0JCUAgNiA0CisrCXZlb3IJQHhbNF0sIEB4WzRdLCBAeFszXQkJQCA0IDM3NQkJWzZdCisrCXZlb3IJQHhbM10sIEB4WzNdLCBAeFs3XQkJQCAzNzUgNzU2PTM2CisrCXZlb3IJQHhbNl0sIEB4WzZdLCBAdFs1XQkJQCA2NCA1CQlbN10KKysJdmVvcglAeFszXSwgQHhbM10sIEB0WzJdCQlAIDM2IDIKKysJdmV4dC44CUB0WzVdLCBAdFs1XSwgQHRbNV0sICMxMgorKwl2ZW9yCUB4WzNdLCBAeFszXSwgQHRbNF0JCUAgMzYyIDQJCVs1XQorK19fXworKwkJCQkJbXkgQHkgPSBAeFs3LDUsMCwyLDEsMyw0LDZdOworKyRjb2RlLj08PF9fXzsKKysJQCBtdWx0aXBsaWNhdGlvbiBieSAweDBiCisrCXZlb3IJQHlbMV0sIEB5WzFdLCBAeVswXQorKwl2ZW9yCUB5WzBdLCBAeVswXSwgQHRbMF0KKysJdmV4dC44CUB0WzJdLCBAdFsyXSwgQHRbMl0sICMxMgorKwl2ZW9yCUB5WzFdLCBAeVsxXSwgQHRbMV0KKysJdmVvcglAeVswXSwgQHlbMF0sIEB0WzVdCisrCXZleHQuOAlAdFs0XSwgQHRbNF0sIEB0WzRdLCAjMTIKKysJdmVvcglAeVsxXSwgQHlbMV0sIEB0WzZdCisrCXZlb3IJQHlbMF0sIEB5WzBdLCBAdFs3XQorKwl2ZW9yCUB0WzddLCBAdFs3XSwgQHRbNl0JCUAgY2xvYmJlciB0WzddCisrCisrCXZlb3IJQHlbM10sIEB5WzNdLCBAdFswXQorKwkgdmVvcglAeVsxXSwgQHlbMV0sIEB5WzBdCisrCXZleHQuOAlAdFswXSwgQHRbMF0sIEB0WzBdLCAjMTIKKysJdmVvcglAeVsyXSwgQHlbMl0sIEB0WzFdCisrCXZlb3IJQHlbNF0sIEB5WzRdLCBAdFsxXQorKwl2ZXh0LjgJQHRbMV0sIEB0WzFdLCBAdFsxXSwgIzEyCisrCXZlb3IJQHlbMl0sIEB5WzJdLCBAdFsyXQorKwl2ZW9yCUB5WzNdLCBAeVszXSwgQHRbMl0KKysJdmVvcglAeVs1XSwgQHlbNV0sIEB0WzJdCisrCXZlb3IJQHlbMl0sIEB5WzJdLCBAdFs3XQorKwl2ZXh0LjgJQHRbMl0sIEB0WzJdLCBAdFsyXSwgIzEyCisrCXZlb3IJQHlbM10sIEB5WzNdLCBAdFszXQorKwl2ZW9yCUB5WzZdLCBAeVs2XSwgQHRbM10KKysJdmVvcglAeVs0XSwgQHlbNF0sIEB0WzNdCisrCXZlb3IJQHlbN10sIEB5WzddLCBAdFs0XQorKwl2ZXh0LjgJQHRbM10sIEB0WzNdLCBAdFszXSwgIzEyCisrCXZlb3IJQHlbNV0sIEB5WzVdLCBAdFs0XQorKwl2ZW9yCUB5WzddLCBAeVs3XSwgQHRbN10KKysJdmVvcglAdFs3XSwgQHRbN10sIEB0WzVdCQlAIGNsb2JiZXIgdFs3XSBldmVuIG1vcmUKKysJdmVvcglAeVszXSwgQHlbM10sIEB0WzVdCisrCXZlb3IJQHlbNF0sIEB5WzRdLCBAdFs0XQorKworKwl2ZW9yCUB5WzVdLCBAeVs1XSwgQHRbN10KKysJdmV4dC44CUB0WzRdLCBAdFs0XSwgQHRbNF0sICMxMgorKwl2ZW9yCUB5WzZdLCBAeVs2XSwgQHRbN10KKysJdmVvcglAeVs0XSwgQHlbNF0sIEB0WzddCisrCisrCXZlb3IJQHRbN10sIEB0WzddLCBAdFs1XQorKwl2ZXh0LjgJQHRbNV0sIEB0WzVdLCBAdFs1XSwgIzEyCisrCisrCUAgbXVsdGlwbGljYXRpb24gYnkgMHgwZAorKwl2ZW9yCUB5WzRdLCBAeVs0XSwgQHlbN10KKysJIHZlb3IJQHRbN10sIEB0WzddLCBAdFs2XQkJQCByZXN0b3JlIHRbN10KKysJdmVvcglAeVs3XSwgQHlbN10sIEB0WzRdCisrCXZleHQuOAlAdFs2XSwgQHRbNl0sIEB0WzZdLCAjMTIKKysJdmVvcglAeVsyXSwgQHlbMl0sIEB0WzBdCisrCXZlb3IJQHlbN10sIEB5WzddLCBAdFs1XQorKwl2ZXh0LjgJQHRbN10sIEB0WzddLCBAdFs3XSwgIzEyCisrCXZlb3IJQHlbMl0sIEB5WzJdLCBAdFsyXQorKworKwl2ZW9yCUB5WzNdLCBAeVszXSwgQHlbMV0KKysJdmVvcglAeVsxXSwgQHlbMV0sIEB0WzFdCisrCXZlb3IJQHlbMF0sIEB5WzBdLCBAdFswXQorKwl2ZW9yCUB5WzNdLCBAeVszXSwgQHRbMF0KKysJdmVvcglAeVsxXSwgQHlbMV0sIEB0WzVdCisrCXZlb3IJQHlbMF0sIEB5WzBdLCBAdFs1XQorKwl2ZXh0LjgJQHRbMF0sIEB0WzBdLCBAdFswXSwgIzEyCisrCXZlb3IJQHlbMV0sIEB5WzFdLCBAdFs3XQorKwl2ZW9yCUB5WzBdLCBAeVswXSwgQHRbNl0KKysJdmVvcglAeVszXSwgQHlbM10sIEB5WzFdCisrCXZlb3IJQHlbNF0sIEB5WzRdLCBAdFsxXQorKwl2ZXh0LjgJQHRbMV0sIEB0WzFdLCBAdFsxXSwgIzEyCisrCisrCXZlb3IJQHlbN10sIEB5WzddLCBAdFs3XQorKwl2ZW9yCUB5WzRdLCBAeVs0XSwgQHRbMl0KKysJdmVvcglAeVs1XSwgQHlbNV0sIEB0WzJdCisrCXZlb3IJQHlbMl0sIEB5WzJdLCBAdFs2XQorKwl2ZW9yCUB0WzZdLCBAdFs2XSwgQHRbM10JCUAgY2xvYmJlciB0WzZdCisrCXZleHQuOAlAdFsyXSwgQHRbMl0sIEB0WzJdLCAjMTIKKysJdmVvcglAeVs0XSwgQHlbNF0sIEB5WzddCisrCXZlb3IJQHlbM10sIEB5WzNdLCBAdFs2XQorKworKwl2ZW9yCUB5WzZdLCBAeVs2XSwgQHRbNl0KKysJdmVvcglAeVs1XSwgQHlbNV0sIEB0WzVdCisrCXZleHQuOAlAdFs1XSwgQHRbNV0sIEB0WzVdLCAjMTIKKysJdmVvcglAeVs2XSwgQHlbNl0sIEB0WzRdCisrCXZleHQuOAlAdFs0XSwgQHRbNF0sIEB0WzRdLCAjMTIKKysJdmVvcglAeVs1XSwgQHlbNV0sIEB0WzZdCisrCXZlb3IJQHlbNl0sIEB5WzZdLCBAdFs3XQorKwl2ZXh0LjgJQHRbN10sIEB0WzddLCBAdFs3XSwgIzEyCisrCXZlb3IJQHRbNl0sIEB0WzZdLCBAdFszXQkJQCByZXN0b3JlIHRbNl0KKysJdmV4dC44CUB0WzNdLCBAdFszXSwgQHRbM10sICMxMgorKworKwlAIG11bHRpcGxpY2F0aW9uIGJ5IDB4MDkKKysJdmVvcglAeVs0XSwgQHlbNF0sIEB5WzFdCisrCXZlb3IJQHRbMV0sIEB0WzFdLCBAeVsxXQkJQCB0WzFdPXlbMV0KKysJdmVvcglAdFswXSwgQHRbMF0sIEB0WzVdCQlAIGNsb2JiZXIgdFswXQorKwl2ZXh0LjgJQHRbNl0sIEB0WzZdLCBAdFs2XSwgIzEyCisrCXZlb3IJQHRbMV0sIEB0WzFdLCBAdFs1XQorKwl2ZW9yCUB5WzNdLCBAeVszXSwgQHRbMF0KKysJdmVvcglAdFswXSwgQHRbMF0sIEB5WzBdCQlAIHRbMF09eVswXQorKwl2ZW9yCUB0WzFdLCBAdFsxXSwgQHRbNl0KKysJdmVvcglAdFs2XSwgQHRbNl0sIEB0WzddCQlAIGNsb2JiZXIgdFs2XQorKwl2ZW9yCUB5WzRdLCBAeVs0XSwgQHRbMV0KKysJdmVvcglAeVs3XSwgQHlbN10sIEB0WzRdCisrCXZlb3IJQHlbNl0sIEB5WzZdLCBAdFszXQorKwl2ZW9yCUB5WzVdLCBAeVs1XSwgQHRbMl0KKysJdmVvcglAdFs0XSwgQHRbNF0sIEB5WzRdCQlAIHRbNF09eVs0XQorKwl2ZW9yCUB0WzNdLCBAdFszXSwgQHlbM10JCUAgdFszXT15WzNdCisrCXZlb3IJQHRbNV0sIEB0WzVdLCBAeVs1XQkJQCB0WzVdPXlbNV0KKysJdmVvcglAdFsyXSwgQHRbMl0sIEB5WzJdCQlAIHRbMl09eVsyXQorKwl2ZW9yCUB0WzNdLCBAdFszXSwgQHRbN10KKysJdmVvcglAWE1NWzVdLCBAdFs1XSwgQHRbNl0KKysJdmVvcglAWE1NWzZdLCBAdFs2XSwgQHlbNl0JCUAgdFs2XT15WzZdCisrCXZlb3IJQFhNTVsyXSwgQHRbMl0sIEB0WzZdCisrCXZlb3IJQFhNTVs3XSwgQHRbN10sIEB5WzddCQlAIHRbN109eVs3XQorKworKwl2bW92CUBYTU1bMF0sIEB0WzBdCisrCXZtb3YJQFhNTVsxXSwgQHRbMV0KKysJQCB2bW92CUBYTU1bMl0sIEB0WzJdCisrCXZtb3YJQFhNTVszXSwgQHRbM10KKysJdm1vdglAWE1NWzRdLCBAdFs0XQorKwlAIHZtb3YJQFhNTVs1XSwgQHRbNV0KKysJQCB2bW92CUBYTU1bNl0sIEB0WzZdCisrCUAgdm1vdglAWE1NWzddLCBAdFs3XQorK19fXworK30KKysKKytzdWIgSW52TWl4Q29sdW1ucyB7CisrbXkgQHg9QF9bMC4uN107CisrbXkgQHQ9QF9bOC4uMTVdOworKworKyMgVGhhbmtzIHRvIEp1c3NpIEtpdmlsaW5uYSBmb3IgcHJvdmlkaW5nIHBvaW50ZXIgdG8KKysjCisrIyB8IDBlIDBiIDBkIDA5IHwgICB8IDAyIDAzIDAxIDAxIHwgICB8IDA1IDAwIDA0IDAwIHwKKysjIHwgMDkgMGUgMGIgMGQgfCA9IHwgMDEgMDIgMDMgMDEgfCB4IHwgMDAgMDUgMDAgMDQgfAorKyMgfCAwZCAwOSAwZSAwYiB8ICAgfCAwMSAwMSAwMiAwMyB8ICAgfCAwNCAwMCAwNSAwMCB8CisrIyB8IDBiIDBkIDA5IDBlIHwgICB8IDAzIDAxIDAxIDAyIHwgICB8IDAwIDA0IDAwIDA1IHwKKysKKyskY29kZS49PDxfX187CisrCUAgbXVsdGlwbGljYXRpb24gYnkgMHgwNS0weDAwLTB4MDQtMHgwMAorKwl2ZXh0LjgJQHRbMF0sIEB4WzBdLCBAeFswXSwgIzgKKysJdmV4dC44CUB0WzZdLCBAeFs2XSwgQHhbNl0sICM4CisrCXZleHQuOAlAdFs3XSwgQHhbN10sIEB4WzddLCAjOAorKwl2ZW9yCUB0WzBdLCBAdFswXSwgQHhbMF0KKysJdmV4dC44CUB0WzFdLCBAeFsxXSwgQHhbMV0sICM4CisrCXZlb3IJQHRbNl0sIEB0WzZdLCBAeFs2XQorKwl2ZXh0LjgJQHRbMl0sIEB4WzJdLCBAeFsyXSwgIzgKKysJdmVvcglAdFs3XSwgQHRbN10sIEB4WzddCisrCXZleHQuOAlAdFszXSwgQHhbM10sIEB4WzNdLCAjOAorKwl2ZW9yCUB0WzFdLCBAdFsxXSwgQHhbMV0KKysJdmV4dC44CUB0WzRdLCBAeFs0XSwgQHhbNF0sICM4CisrCXZlb3IJQHRbMl0sIEB0WzJdLCBAeFsyXQorKwl2ZXh0LjgJQHRbNV0sIEB4WzVdLCBAeFs1XSwgIzgKKysJdmVvcglAdFszXSwgQHRbM10sIEB4WzNdCisrCXZlb3IJQHRbNF0sIEB0WzRdLCBAeFs0XQorKwl2ZW9yCUB0WzVdLCBAdFs1XSwgQHhbNV0KKysKKysJIHZlb3IJQHhbMF0sIEB4WzBdLCBAdFs2XQorKwkgdmVvcglAeFsxXSwgQHhbMV0sIEB0WzZdCisrCSB2ZW9yCUB4WzJdLCBAeFsyXSwgQHRbMF0KKysJIHZlb3IJQHhbNF0sIEB4WzRdLCBAdFsyXQorKwkgdmVvcglAeFszXSwgQHhbM10sIEB0WzFdCisrCSB2ZW9yCUB4WzFdLCBAeFsxXSwgQHRbN10KKysJIHZlb3IJQHhbMl0sIEB4WzJdLCBAdFs3XQorKwkgdmVvcglAeFs0XSwgQHhbNF0sIEB0WzZdCisrCSB2ZW9yCUB4WzVdLCBAeFs1XSwgQHRbM10KKysJIHZlb3IJQHhbM10sIEB4WzNdLCBAdFs2XQorKwkgdmVvcglAeFs2XSwgQHhbNl0sIEB0WzRdCisrCSB2ZW9yCUB4WzRdLCBAeFs0XSwgQHRbN10KKysJIHZlb3IJQHhbNV0sIEB4WzVdLCBAdFs3XQorKwkgdmVvcglAeFs3XSwgQHhbN10sIEB0WzVdCisrX19fCisrCSZNaXhDb2x1bW5zCShAeCxAdCwxKTsJIyBmbGlwcGVkIDI8LT4zIGFuZCA0PC0+NgorK30KKysKKytzdWIgc3dhcG1vdmUgeworK215ICgkYSwkYiwkbiwkbWFzaywkdCk9QF87CisrJGNvZGUuPTw8X19fOworKwl2c2hyLnU2NAkkdCwgJGIsICMkbgorKwl2ZW9yCQkkdCwgJHQsICRhCisrCXZhbmQJCSR0LCAkdCwgJG1hc2sKKysJdmVvcgkJJGEsICRhLCAkdAorKwl2c2hsLnU2NAkkdCwgJHQsICMkbgorKwl2ZW9yCQkkYiwgJGIsICR0CisrX19fCisrfQorK3N1YiBzd2FwbW92ZTJ4IHsKKytteSAoJGEwLCRiMCwkYTEsJGIxLCRuLCRtYXNrLCR0MCwkdDEpPUBfOworKyRjb2RlLj08PF9fXzsKKysJdnNoci51NjQJJHQwLCAkYjAsICMkbgorKwkgdnNoci51NjQJJHQxLCAkYjEsICMkbgorKwl2ZW9yCQkkdDAsICR0MCwgJGEwCisrCSB2ZW9yCQkkdDEsICR0MSwgJGExCisrCXZhbmQJCSR0MCwgJHQwLCAkbWFzaworKwkgdmFuZAkJJHQxLCAkdDEsICRtYXNrCisrCXZlb3IJCSRhMCwgJGEwLCAkdDAKKysJdnNobC51NjQJJHQwLCAkdDAsICMkbgorKwkgdmVvcgkJJGExLCAkYTEsICR0MQorKwkgdnNobC51NjQJJHQxLCAkdDEsICMkbgorKwl2ZW9yCQkkYjAsICRiMCwgJHQwCisrCSB2ZW9yCQkkYjEsICRiMSwgJHQxCisrX19fCisrfQorKworK3N1YiBiaXRzbGljZSB7CisrbXkgQHg9cmV2ZXJzZShAX1swLi43XSk7CisrbXkgKCR0MCwkdDEsJHQyLCR0Myk9QF9bOC4uMTFdOworKyRjb2RlLj08PF9fXzsKKysJdm1vdi5pOAkkdDAsIzB4NTUJCQlAIGNvbXBvc2UgLkxCUzAKKysJdm1vdi5pOAkkdDEsIzB4MzMJCQlAIGNvbXBvc2UgLkxCUzEKKytfX18KKysJJnN3YXBtb3ZlMngoQHhbMCwxLDIsM10sMSwkdDAsJHQyLCR0Myk7CisrCSZzd2FwbW92ZTJ4KEB4WzQsNSw2LDddLDEsJHQwLCR0MiwkdDMpOworKyRjb2RlLj08PF9fXzsKKysJdm1vdi5pOAkkdDAsIzB4MGYJCQlAIGNvbXBvc2UgLkxCUzIKKytfX18KKysJJnN3YXBtb3ZlMngoQHhbMCwyLDEsM10sMiwkdDEsJHQyLCR0Myk7CisrCSZzd2FwbW92ZTJ4KEB4WzQsNiw1LDddLDIsJHQxLCR0MiwkdDMpOworKworKwkmc3dhcG1vdmUyeChAeFswLDQsMSw1XSw0LCR0MCwkdDIsJHQzKTsKKysJJnN3YXBtb3ZlMngoQHhbMiw2LDMsN10sNCwkdDAsJHQyLCR0Myk7CisrfQorKworKyRjb2RlLj08PF9fXzsKKysjaWZuZGVmIF9fS0VSTkVMX18KKysjIGluY2x1ZGUgImFybV9hcmNoLmgiCisrCisrIyBkZWZpbmUgVkZQX0FCSV9QVVNICXZzdG1kYglzcCEse2Q4LWQxNX0KKysjIGRlZmluZSBWRlBfQUJJX1BPUAl2bGRtaWEJc3AhLHtkOC1kMTV9CisrIyBkZWZpbmUgVkZQX0FCSV9GUkFNRQkweDQwCisrI2Vsc2UKKysjIGRlZmluZSBWRlBfQUJJX1BVU0gKKysjIGRlZmluZSBWRlBfQUJJX1BPUAorKyMgZGVmaW5lIFZGUF9BQklfRlJBTUUJMAorKyMgZGVmaW5lIEJTQUVTX0FTTV9FWFRFTkRFRF9LRVkKKysjIGRlZmluZSBYVFNfQ0hBSU5fVFdFQUsKKysjIGRlZmluZSBfX0FSTV9BUkNIX18gX19MSU5VWF9BUk1fQVJDSF9fCisrI2VuZGlmCisrCisrI2lmZGVmIF9fdGh1bWJfXworKyMgZGVmaW5lIGFkcmwgYWRyCisrI2VuZGlmCisrCisrI2lmIF9fQVJNX0FSQ0hfXz49NworKy50ZXh0CisrLnN5bnRheAl1bmlmaWVkIAlAIEFSTXY3LWNhcGFibGUgYXNzZW1ibGVyIGlzIGV4cGVjdGVkIHRvIGhhbmRsZSB0aGlzCisrI2lmZGVmIF9fdGh1bWIyX18KKysudGh1bWIKKysjZWxzZQorKy5jb2RlICAgMzIKKysjZW5kaWYKKysKKysuZnB1CW5lb24KKysKKysudHlwZQlfYnNhZXNfZGVjcnlwdDgsJWZ1bmN0aW9uCisrLmFsaWduCTQKKytfYnNhZXNfZGVjcnlwdDg6CisrCWFkcgkkY29uc3QsX2JzYWVzX2RlY3J5cHQ4CisrCXZsZG1pYQkka2V5ISwge0BYTU1bOV19CQlAIHJvdW5kIDAga2V5CisrCWFkZAkkY29uc3QsJGNvbnN0LCMuTE0wSVNSLV9ic2Flc19kZWNyeXB0OAorKworKwl2bGRtaWEJJGNvbnN0ISwge0BYTU1bOF19CQlAIC5MTTBJU1IKKysJdmVvcglAWE1NWzEwXSwgQFhNTVswXSwgQFhNTVs5XQlAIHhvciB3aXRoIHJvdW5kMCBrZXkKKysJdmVvcglAWE1NWzExXSwgQFhNTVsxXSwgQFhNTVs5XQorKwkgdnRibC44CWAmRGxvKEBYTU1bMF0pYCwge0BYTU1bMTBdfSwgYCZEbG8oQFhNTVs4XSlgCisrCSB2dGJsLjgJYCZEaGkoQFhNTVswXSlgLCB7QFhNTVsxMF19LCBgJkRoaShAWE1NWzhdKWAKKysJdmVvcglAWE1NWzEyXSwgQFhNTVsyXSwgQFhNTVs5XQorKwkgdnRibC44CWAmRGxvKEBYTU1bMV0pYCwge0BYTU1bMTFdfSwgYCZEbG8oQFhNTVs4XSlgCisrCSB2dGJsLjgJYCZEaGkoQFhNTVsxXSlgLCB7QFhNTVsxMV19LCBgJkRoaShAWE1NWzhdKWAKKysJdmVvcglAWE1NWzEzXSwgQFhNTVszXSwgQFhNTVs5XQorKwkgdnRibC44CWAmRGxvKEBYTU1bMl0pYCwge0BYTU1bMTJdfSwgYCZEbG8oQFhNTVs4XSlgCisrCSB2dGJsLjgJYCZEaGkoQFhNTVsyXSlgLCB7QFhNTVsxMl19LCBgJkRoaShAWE1NWzhdKWAKKysJdmVvcglAWE1NWzE0XSwgQFhNTVs0XSwgQFhNTVs5XQorKwkgdnRibC44CWAmRGxvKEBYTU1bM10pYCwge0BYTU1bMTNdfSwgYCZEbG8oQFhNTVs4XSlgCisrCSB2dGJsLjgJYCZEaGkoQFhNTVszXSlgLCB7QFhNTVsxM119LCBgJkRoaShAWE1NWzhdKWAKKysJdmVvcglAWE1NWzE1XSwgQFhNTVs1XSwgQFhNTVs5XQorKwkgdnRibC44CWAmRGxvKEBYTU1bNF0pYCwge0BYTU1bMTRdfSwgYCZEbG8oQFhNTVs4XSlgCisrCSB2dGJsLjgJYCZEaGkoQFhNTVs0XSlgLCB7QFhNTVsxNF19LCBgJkRoaShAWE1NWzhdKWAKKysJdmVvcglAWE1NWzEwXSwgQFhNTVs2XSwgQFhNTVs5XQorKwkgdnRibC44CWAmRGxvKEBYTU1bNV0pYCwge0BYTU1bMTVdfSwgYCZEbG8oQFhNTVs4XSlgCisrCSB2dGJsLjgJYCZEaGkoQFhNTVs1XSlgLCB7QFhNTVsxNV19LCBgJkRoaShAWE1NWzhdKWAKKysJdmVvcglAWE1NWzExXSwgQFhNTVs3XSwgQFhNTVs5XQorKwkgdnRibC44CWAmRGxvKEBYTU1bNl0pYCwge0BYTU1bMTBdfSwgYCZEbG8oQFhNTVs4XSlgCisrCSB2dGJsLjgJYCZEaGkoQFhNTVs2XSlgLCB7QFhNTVsxMF19LCBgJkRoaShAWE1NWzhdKWAKKysJIHZ0YmwuOAlgJkRsbyhAWE1NWzddKWAsIHtAWE1NWzExXX0sIGAmRGxvKEBYTU1bOF0pYAorKwkgdnRibC44CWAmRGhpKEBYTU1bN10pYCwge0BYTU1bMTFdfSwgYCZEaGkoQFhNTVs4XSlgCisrX19fCisrCSZiaXRzbGljZQkoQFhNTVswLi43LCA4Li4xMV0pOworKyRjb2RlLj08PF9fXzsKKysJc3ViCSRyb3VuZHMsJHJvdW5kcywjMQorKwliCS5MZGVjX3Nib3gKKysuYWxpZ24JNAorKy5MZGVjX2xvb3A6CisrX19fCisrCSZTaGlmdFJvd3MJKEBYTU1bMC4uNywgOC4uMTJdKTsKKyskY29kZS49Ii5MZGVjX3Nib3g6XG4iOworKwkmSW52U2JveAkoQFhNTVswLi43LCA4Li4xNV0pOworKyRjb2RlLj08PF9fXzsKKysJc3Vicwkkcm91bmRzLCRyb3VuZHMsIzEKKysJYmNjCS5MZGVjX2RvbmUKKytfX18KKysJJkludk1peENvbHVtbnMJKEBYTU1bMCwxLDYsNCwyLDcsMyw1LCA4Li4xNV0pOworKyRjb2RlLj08PF9fXzsKKysJdmxkbWlhCSRjb25zdCwge0BYTU1bMTJdfQkJQCAuTElTUgorKwlpdGUJZXEJCQkJQCBUaHVtYjIgdGhpbmcsIHNhbml0eSBjaGVjayBpbiBBUk0KKysJYWRkZXEJJGNvbnN0LCRjb25zdCwjMHgxMAorKwlibmUJLkxkZWNfbG9vcAorKwl2bGRtaWEJJGNvbnN0LCB7QFhNTVsxMl19CQlAIC5MSVNSTTAKKysJYgkuTGRlY19sb29wCisrLmFsaWduCTQKKysuTGRlY19kb25lOgorK19fXworKwkmYml0c2xpY2UJKEBYTU1bMCwxLDYsNCwyLDcsMyw1LCA4Li4xMV0pOworKyRjb2RlLj08PF9fXzsKKysJdmxkbWlhCSRrZXksIHtAWE1NWzhdfQkJCUAgbGFzdCByb3VuZCBrZXkKKysJdmVvcglAWE1NWzZdLCBAWE1NWzZdLCBAWE1NWzhdCisrCXZlb3IJQFhNTVs0XSwgQFhNTVs0XSwgQFhNTVs4XQorKwl2ZW9yCUBYTU1bMl0sIEBYTU1bMl0sIEBYTU1bOF0KKysJdmVvcglAWE1NWzddLCBAWE1NWzddLCBAWE1NWzhdCisrCXZlb3IJQFhNTVszXSwgQFhNTVszXSwgQFhNTVs4XQorKwl2ZW9yCUBYTU1bNV0sIEBYTU1bNV0sIEBYTU1bOF0KKysJdmVvcglAWE1NWzBdLCBAWE1NWzBdLCBAWE1NWzhdCisrCXZlb3IJQFhNTVsxXSwgQFhNTVsxXSwgQFhNTVs4XQorKwlieAlscgorKy5zaXplCV9ic2Flc19kZWNyeXB0OCwuLV9ic2Flc19kZWNyeXB0OAorKworKy50eXBlCV9ic2Flc19jb25zdCwlb2JqZWN0CisrLmFsaWduCTYKKytfYnNhZXNfY29uc3Q6CisrLkxNMElTUjoJQCBJbnZTaGlmdFJvd3MgY29uc3RhbnRzCisrCS5xdWFkCTB4MGEwZTAyMDYwNzBiMGYwMywgMHgwMDA0MDgwYzBkMDEwNTA5CisrLkxJU1I6CisrCS5xdWFkCTB4MDUwNDA3MDYwMjAxMDAwMywgMHgwZjBlMGQwYzA4MGIwYTA5CisrLkxJU1JNMDoKKysJLnF1YWQJMHgwMTA0MGIwZTAyMDUwODBmLCAweDAzMDYwOTBjMDAwNzBhMGQKKysuTE0wU1I6CQlAIFNoaWZ0Um93cyBjb25zdGFudHMKKysJLnF1YWQJMHgwYTBlMDIwNjBmMDMwNzBiLCAweDAwMDQwODBjMDUwOTBkMDEKKysuTFNSOgorKwkucXVhZAkweDA1MDQwNzA2MDAwMzAyMDEsIDB4MGYwZTBkMGMwYTA5MDgwYgorKy5MU1JNMDoKKysJLnF1YWQJMHgwMzA0MDkwZTAwMDUwYTBmLCAweDAxMDYwYjBjMDIwNzA4MGQKKysuTE0wOgorKwkucXVhZAkweDAyMDYwYTBlMDMwNzBiMGYsIDB4MDAwNDA4MGMwMTA1MDkwZAorKy5MUkVWTTBTUjoKKysJLnF1YWQJMHgwOTBkMDEwNTBjMDAwNDA4LCAweDAzMDcwYjBmMDYwYTBlMDIKKysuYXNjaXoJIkJpdC1zbGljZWQgQUVTIGZvciBORU9OLCBDUllQVE9HQU1TIGJ5IDxhcHByb1xAb3BlbnNzbC5vcmc+IgorKy5hbGlnbgk2CisrLnNpemUJX2JzYWVzX2NvbnN0LC4tX2JzYWVzX2NvbnN0CisrCisrLnR5cGUJX2JzYWVzX2VuY3J5cHQ4LCVmdW5jdGlvbgorKy5hbGlnbgk0CisrX2JzYWVzX2VuY3J5cHQ4OgorKwlhZHIJJGNvbnN0LF9ic2Flc19lbmNyeXB0OAorKwl2bGRtaWEJJGtleSEsIHtAWE1NWzldfQkJQCByb3VuZCAwIGtleQorKwlzdWIJJGNvbnN0LCRjb25zdCwjX2JzYWVzX2VuY3J5cHQ4LS5MTTBTUgorKworKwl2bGRtaWEJJGNvbnN0ISwge0BYTU1bOF19CQlAIC5MTTBTUgorK19ic2Flc19lbmNyeXB0OF9hbHQ6CisrCXZlb3IJQFhNTVsxMF0sIEBYTU1bMF0sIEBYTU1bOV0JQCB4b3Igd2l0aCByb3VuZDAga2V5CisrCXZlb3IJQFhNTVsxMV0sIEBYTU1bMV0sIEBYTU1bOV0KKysJIHZ0YmwuOAlgJkRsbyhAWE1NWzBdKWAsIHtAWE1NWzEwXX0sIGAmRGxvKEBYTU1bOF0pYAorKwkgdnRibC44CWAmRGhpKEBYTU1bMF0pYCwge0BYTU1bMTBdfSwgYCZEaGkoQFhNTVs4XSlgCisrCXZlb3IJQFhNTVsxMl0sIEBYTU1bMl0sIEBYTU1bOV0KKysJIHZ0YmwuOAlgJkRsbyhAWE1NWzFdKWAsIHtAWE1NWzExXX0sIGAmRGxvKEBYTU1bOF0pYAorKwkgdnRibC44CWAmRGhpKEBYTU1bMV0pYCwge0BYTU1bMTFdfSwgYCZEaGkoQFhNTVs4XSlgCisrCXZlb3IJQFhNTVsxM10sIEBYTU1bM10sIEBYTU1bOV0KKysJIHZ0YmwuOAlgJkRsbyhAWE1NWzJdKWAsIHtAWE1NWzEyXX0sIGAmRGxvKEBYTU1bOF0pYAorKwkgdnRibC44CWAmRGhpKEBYTU1bMl0pYCwge0BYTU1bMTJdfSwgYCZEaGkoQFhNTVs4XSlgCisrCXZlb3IJQFhNTVsxNF0sIEBYTU1bNF0sIEBYTU1bOV0KKysJIHZ0YmwuOAlgJkRsbyhAWE1NWzNdKWAsIHtAWE1NWzEzXX0sIGAmRGxvKEBYTU1bOF0pYAorKwkgdnRibC44CWAmRGhpKEBYTU1bM10pYCwge0BYTU1bMTNdfSwgYCZEaGkoQFhNTVs4XSlgCisrCXZlb3IJQFhNTVsxNV0sIEBYTU1bNV0sIEBYTU1bOV0KKysJIHZ0YmwuOAlgJkRsbyhAWE1NWzRdKWAsIHtAWE1NWzE0XX0sIGAmRGxvKEBYTU1bOF0pYAorKwkgdnRibC44CWAmRGhpKEBYTU1bNF0pYCwge0BYTU1bMTRdfSwgYCZEaGkoQFhNTVs4XSlgCisrCXZlb3IJQFhNTVsxMF0sIEBYTU1bNl0sIEBYTU1bOV0KKysJIHZ0YmwuOAlgJkRsbyhAWE1NWzVdKWAsIHtAWE1NWzE1XX0sIGAmRGxvKEBYTU1bOF0pYAorKwkgdnRibC44CWAmRGhpKEBYTU1bNV0pYCwge0BYTU1bMTVdfSwgYCZEaGkoQFhNTVs4XSlgCisrCXZlb3IJQFhNTVsxMV0sIEBYTU1bN10sIEBYTU1bOV0KKysJIHZ0YmwuOAlgJkRsbyhAWE1NWzZdKWAsIHtAWE1NWzEwXX0sIGAmRGxvKEBYTU1bOF0pYAorKwkgdnRibC44CWAmRGhpKEBYTU1bNl0pYCwge0BYTU1bMTBdfSwgYCZEaGkoQFhNTVs4XSlgCisrCSB2dGJsLjgJYCZEbG8oQFhNTVs3XSlgLCB7QFhNTVsxMV19LCBgJkRsbyhAWE1NWzhdKWAKKysJIHZ0YmwuOAlgJkRoaShAWE1NWzddKWAsIHtAWE1NWzExXX0sIGAmRGhpKEBYTU1bOF0pYAorK19ic2Flc19lbmNyeXB0OF9iaXRzbGljZToKKytfX18KKysJJmJpdHNsaWNlCShAWE1NWzAuLjcsIDguLjExXSk7CisrJGNvZGUuPTw8X19fOworKwlzdWIJJHJvdW5kcywkcm91bmRzLCMxCisrCWIJLkxlbmNfc2JveAorKy5hbGlnbgk0CisrLkxlbmNfbG9vcDoKKytfX18KKysJJlNoaWZ0Um93cwkoQFhNTVswLi43LCA4Li4xMl0pOworKyRjb2RlLj0iLkxlbmNfc2JveDpcbiI7CisrCSZTYm94CQkoQFhNTVswLi43LCA4Li4xNV0pOworKyRjb2RlLj08PF9fXzsKKysJc3Vicwkkcm91bmRzLCRyb3VuZHMsIzEKKysJYmNjCS5MZW5jX2RvbmUKKytfX18KKysJJk1peENvbHVtbnMJKEBYTU1bMCwxLDQsNiwzLDcsMiw1LCA4Li4xNV0pOworKyRjb2RlLj08PF9fXzsKKysJdmxkbWlhCSRjb25zdCwge0BYTU1bMTJdfQkJQCAuTFNSCisrCWl0ZQllcQkJCQlAIFRodW1iMiB0aGluZywgc2FtaXR5IGNoZWNrIGluIEFSTQorKwlhZGRlcQkkY29uc3QsJGNvbnN0LCMweDEwCisrCWJuZQkuTGVuY19sb29wCisrCXZsZG1pYQkkY29uc3QsIHtAWE1NWzEyXX0JCUAgLkxTUk0wCisrCWIJLkxlbmNfbG9vcAorKy5hbGlnbgk0CisrLkxlbmNfZG9uZToKKytfX18KKysJIyBvdXRwdXQgaW4gbHNiID4gW3QwLCB0MSwgdDQsIHQ2LCB0MywgdDcsIHQyLCB0NV0gPCBtc2IKKysJJmJpdHNsaWNlCShAWE1NWzAsMSw0LDYsMyw3LDIsNSwgOC4uMTFdKTsKKyskY29kZS49PDxfX187CisrCXZsZG1pYQkka2V5LCB7QFhNTVs4XX0JCQlAIGxhc3Qgcm91bmQga2V5CisrCXZlb3IJQFhNTVs0XSwgQFhNTVs0XSwgQFhNTVs4XQorKwl2ZW9yCUBYTU1bNl0sIEBYTU1bNl0sIEBYTU1bOF0KKysJdmVvcglAWE1NWzNdLCBAWE1NWzNdLCBAWE1NWzhdCisrCXZlb3IJQFhNTVs3XSwgQFhNTVs3XSwgQFhNTVs4XQorKwl2ZW9yCUBYTU1bMl0sIEBYTU1bMl0sIEBYTU1bOF0KKysJdmVvcglAWE1NWzVdLCBAWE1NWzVdLCBAWE1NWzhdCisrCXZlb3IJQFhNTVswXSwgQFhNTVswXSwgQFhNTVs4XQorKwl2ZW9yCUBYTU1bMV0sIEBYTU1bMV0sIEBYTU1bOF0KKysJYngJbHIKKysuc2l6ZQlfYnNhZXNfZW5jcnlwdDgsLi1fYnNhZXNfZW5jcnlwdDgKKytfX18KKyt9CisreworK215ICgkb3V0LCRpbnAsJHJvdW5kcywkY29uc3QpPSgicjEyIiwicjQiLCJyNSIsInI2Iik7CisrCisrc3ViIGJpdHNsaWNlX2tleSB7CisrbXkgQHg9cmV2ZXJzZShAX1swLi43XSk7CisrbXkgKCRiczAsJGJzMSwkYnMyLCR0MiwkdDMpPUBfWzguLjEyXTsKKysKKysJJnN3YXBtb3ZlCShAeFswLDFdLDEsJGJzMCwkdDIsJHQzKTsKKyskY29kZS49PDxfX187CisrCUAgJnN3YXBtb3ZlKEB4WzIsM10sMSwkdDAsJHQyLCR0Myk7CisrCXZtb3YJQHhbMl0sIEB4WzBdCisrCXZtb3YJQHhbM10sIEB4WzFdCisrX19fCisrCSMmc3dhcG1vdmUyeChAeFs0LDUsNiw3XSwxLCR0MCwkdDIsJHQzKTsKKysKKysJJnN3YXBtb3ZlMngJKEB4WzAsMiwxLDNdLDIsJGJzMSwkdDIsJHQzKTsKKyskY29kZS49PDxfX187CisrCUAgJnN3YXBtb3ZlMngoQHhbNCw2LDUsN10sMiwkdDEsJHQyLCR0Myk7CisrCXZtb3YJQHhbNF0sIEB4WzBdCisrCXZtb3YJQHhbNl0sIEB4WzJdCisrCXZtb3YJQHhbNV0sIEB4WzFdCisrCXZtb3YJQHhbN10sIEB4WzNdCisrX19fCisrCSZzd2FwbW92ZTJ4CShAeFswLDQsMSw1XSw0LCRiczIsJHQyLCR0Myk7CisrCSZzd2FwbW92ZTJ4CShAeFsyLDYsMyw3XSw0LCRiczIsJHQyLCR0Myk7CisrfQorKworKyRjb2RlLj08PF9fXzsKKysudHlwZQlfYnNhZXNfa2V5X2NvbnZlcnQsJWZ1bmN0aW9uCisrLmFsaWduCTQKKytfYnNhZXNfa2V5X2NvbnZlcnQ6CisrCWFkcgkkY29uc3QsX2JzYWVzX2tleV9jb252ZXJ0CisrCXZsZDEuOAl7QFhNTVs3XX0sICBbJGlucF0hCQlAIGxvYWQgcm91bmQgMCBrZXkKKysJc3ViCSRjb25zdCwkY29uc3QsI19ic2Flc19rZXlfY29udmVydC0uTE0wCisrCXZsZDEuOAl7QFhNTVsxNV19LCBbJGlucF0hCQlAIGxvYWQgcm91bmQgMSBrZXkKKysKKysJdm1vdi5pOAlAWE1NWzhdLCAgIzB4MDEJCQlAIGJpdCBtYXNrcworKwl2bW92Lmk4CUBYTU1bOV0sICAjMHgwMgorKwl2bW92Lmk4CUBYTU1bMTBdLCAjMHgwNAorKwl2bW92Lmk4CUBYTU1bMTFdLCAjMHgwOAorKwl2bW92Lmk4CUBYTU1bMTJdLCAjMHgxMAorKwl2bW92Lmk4CUBYTU1bMTNdLCAjMHgyMAorKwl2bGRtaWEJJGNvbnN0LCB7QFhNTVsxNF19CQlAIC5MTTAKKysKKysjaWZkZWYgX19BUk1FTF9fCisrCXZyZXYzMi44CUBYTU1bN10sICBAWE1NWzddCisrCXZyZXYzMi44CUBYTU1bMTVdLCBAWE1NWzE1XQorKyNlbmRpZgorKwlzdWIJJHJvdW5kcywkcm91bmRzLCMxCisrCXZzdG1pYQkkb3V0ISwge0BYTU1bN119CQlAIHNhdmUgcm91bmQgMCBrZXkKKysJYgkuTGtleV9sb29wCisrCisrLmFsaWduCTQKKysuTGtleV9sb29wOgorKwl2dGJsLjgJYCZEbG8oQFhNTVs3XSlgLHtAWE1NWzE1XX0sYCZEbG8oQFhNTVsxNF0pYAorKwl2dGJsLjgJYCZEaGkoQFhNTVs3XSlgLHtAWE1NWzE1XX0sYCZEaGkoQFhNTVsxNF0pYAorKwl2bW92Lmk4CUBYTU1bNl0sICAjMHg0MAorKwl2bW92Lmk4CUBYTU1bMTVdLCAjMHg4MAorKworKwl2dHN0LjgJQFhNTVswXSwgQFhNTVs3XSwgQFhNTVs4XQorKwl2dHN0LjgJQFhNTVsxXSwgQFhNTVs3XSwgQFhNTVs5XQorKwl2dHN0LjgJQFhNTVsyXSwgQFhNTVs3XSwgQFhNTVsxMF0KKysJdnRzdC44CUBYTU1bM10sIEBYTU1bN10sIEBYTU1bMTFdCisrCXZ0c3QuOAlAWE1NWzRdLCBAWE1NWzddLCBAWE1NWzEyXQorKwl2dHN0LjgJQFhNTVs1XSwgQFhNTVs3XSwgQFhNTVsxM10KKysJdnRzdC44CUBYTU1bNl0sIEBYTU1bN10sIEBYTU1bNl0KKysJdnRzdC44CUBYTU1bN10sIEBYTU1bN10sIEBYTU1bMTVdCisrCXZsZDEuOAl7QFhNTVsxNV19LCBbJGlucF0hCQlAIGxvYWQgbmV4dCByb3VuZCBrZXkKKysJdm12bglAWE1NWzBdLCBAWE1NWzBdCQlAICJwbm90IgorKwl2bXZuCUBYTU1bMV0sIEBYTU1bMV0KKysJdm12bglAWE1NWzVdLCBAWE1NWzVdCisrCXZtdm4JQFhNTVs2XSwgQFhNTVs2XQorKyNpZmRlZiBfX0FSTUVMX18KKysJdnJldjMyLjgJQFhNTVsxNV0sIEBYTU1bMTVdCisrI2VuZGlmCisrCXN1YnMJJHJvdW5kcywkcm91bmRzLCMxCisrCXZzdG1pYQkkb3V0ISx7QFhNTVswXS1AWE1NWzddfQkJQCB3cml0ZSBiaXQtc2xpY2VkIHJvdW5kIGtleQorKwlibmUJLkxrZXlfbG9vcAorKworKwl2bW92Lmk4CUBYTU1bN10sIzB4NjMJCQlAIGNvbXBvc2UgLkw2MworKwlAIGRvbid0IHNhdmUgbGFzdCByb3VuZCBrZXkKKysJYngJbHIKKysuc2l6ZQlfYnNhZXNfa2V5X2NvbnZlcnQsLi1fYnNhZXNfa2V5X2NvbnZlcnQKKytfX18KKyt9CisrCisraWYgKDApIHsJCSMgZm9sbG93aW5nIGZvdXIgZnVuY3Rpb25zIGFyZSB1bnN1cHBvcnRlZCBpbnRlcmZhY2UKKysJCQkjIHVzZWQgZm9yIGJlbmNobWFya2luZy4uLgorKyRjb2RlLj08PF9fXzsKKysuZ2xvYmwJYnNhZXNfZW5jX2tleV9jb252ZXJ0CisrLnR5cGUJYnNhZXNfZW5jX2tleV9jb252ZXJ0LCVmdW5jdGlvbgorKy5hbGlnbgk0CisrYnNhZXNfZW5jX2tleV9jb252ZXJ0OgorKwlzdG1kYglzcCEse3I0LXI2LGxyfQorKwl2c3RtZGIJc3AhLHtkOC1kMTV9CQlAIEFCSSBzcGVjaWZpY2F0aW9uIHNheXMgc28KKysKKysJbGRyCXI1LFskaW5wLCMyNDBdCQkJQCBwYXNzIHJvdW5kcworKwltb3YJcjQsJGlucAkJCQlAIHBhc3Mga2V5CisrCW1vdglyMTIsJG91dAkJCUAgcGFzcyBrZXkgc2NoZWR1bGUKKysJYmwJX2JzYWVzX2tleV9jb252ZXJ0CisrCXZlb3IJQFhNTVs3XSxAWE1NWzddLEBYTU1bMTVdCUAgZml4IHVwIGxhc3Qgcm91bmQga2V5CisrCXZzdG1pYQlyMTIsIHtAWE1NWzddfQkJCUAgc2F2ZSBsYXN0IHJvdW5kIGtleQorKworKwl2bGRtaWEJc3AhLHtkOC1kMTV9CisrCWxkbWlhCXNwISx7cjQtcjYscGN9CisrLnNpemUJYnNhZXNfZW5jX2tleV9jb252ZXJ0LC4tYnNhZXNfZW5jX2tleV9jb252ZXJ0CisrCisrLmdsb2JsCWJzYWVzX2VuY3J5cHRfMTI4CisrLnR5cGUJYnNhZXNfZW5jcnlwdF8xMjgsJWZ1bmN0aW9uCisrLmFsaWduCTQKKytic2Flc19lbmNyeXB0XzEyODoKKysJc3RtZGIJc3AhLHtyNC1yNixscn0KKysJdnN0bWRiCXNwISx7ZDgtZDE1fQkJQCBBQkkgc3BlY2lmaWNhdGlvbiBzYXlzIHNvCisrLkxlbmMxMjhfbG9vcDoKKysJdmxkMS44CXtAWE1NWzBdLUBYTU1bMV19LCBbJGlucF0hCUAgbG9hZCBpbnB1dAorKwl2bGQxLjgJe0BYTU1bMl0tQFhNTVszXX0sIFskaW5wXSEKKysJbW92CXI0LCRrZXkJCQkJQCBwYXNzIHRoZSBrZXkKKysJdmxkMS44CXtAWE1NWzRdLUBYTU1bNV19LCBbJGlucF0hCisrCW1vdglyNSwjMTAJCQkJQCBwYXNzIHJvdW5kcworKwl2bGQxLjgJe0BYTU1bNl0tQFhNTVs3XX0sIFskaW5wXSEKKysKKysJYmwJX2JzYWVzX2VuY3J5cHQ4CisrCisrCXZzdDEuOAl7QFhNTVswXS1AWE1NWzFdfSwgWyRvdXRdIQlAIHdyaXRlIG91dHB1dAorKwl2c3QxLjgJe0BYTU1bNF19LCBbJG91dF0hCisrCXZzdDEuOAl7QFhNTVs2XX0sIFskb3V0XSEKKysJdnN0MS44CXtAWE1NWzNdfSwgWyRvdXRdIQorKwl2c3QxLjgJe0BYTU1bN119LCBbJG91dF0hCisrCXZzdDEuOAl7QFhNTVsyXX0sIFskb3V0XSEKKysJc3VicwkkbGVuLCRsZW4sIzB4ODAKKysJdnN0MS44CXtAWE1NWzVdfSwgWyRvdXRdIQorKwliaGkJLkxlbmMxMjhfbG9vcAorKworKwl2bGRtaWEJc3AhLHtkOC1kMTV9CisrCWxkbWlhCXNwISx7cjQtcjYscGN9CisrLnNpemUJYnNhZXNfZW5jcnlwdF8xMjgsLi1ic2Flc19lbmNyeXB0XzEyOAorKworKy5nbG9ibAlic2Flc19kZWNfa2V5X2NvbnZlcnQKKysudHlwZQlic2Flc19kZWNfa2V5X2NvbnZlcnQsJWZ1bmN0aW9uCisrLmFsaWduCTQKKytic2Flc19kZWNfa2V5X2NvbnZlcnQ6CisrCXN0bWRiCXNwISx7cjQtcjYsbHJ9CisrCXZzdG1kYglzcCEse2Q4LWQxNX0JCUAgQUJJIHNwZWNpZmljYXRpb24gc2F5cyBzbworKworKwlsZHIJcjUsWyRpbnAsIzI0MF0JCQlAIHBhc3Mgcm91bmRzCisrCW1vdglyNCwkaW5wCQkJCUAgcGFzcyBrZXkKKysJbW92CXIxMiwkb3V0CQkJQCBwYXNzIGtleSBzY2hlZHVsZQorKwlibAlfYnNhZXNfa2V5X2NvbnZlcnQKKysJdmxkbWlhCSRvdXQsIHtAWE1NWzZdfQorKwl2c3RtaWEJcjEyLCAge0BYTU1bMTVdfQkJQCBzYXZlIGxhc3Qgcm91bmQga2V5CisrCXZlb3IJQFhNTVs3XSwgQFhNTVs3XSwgQFhNTVs2XQlAIGZpeCB1cCByb3VuZCAwIGtleQorKwl2c3RtaWEJJG91dCwge0BYTU1bN119CisrCisrCXZsZG1pYQlzcCEse2Q4LWQxNX0KKysJbGRtaWEJc3AhLHtyNC1yNixwY30KKysuc2l6ZQlic2Flc19kZWNfa2V5X2NvbnZlcnQsLi1ic2Flc19kZWNfa2V5X2NvbnZlcnQKKysKKysuZ2xvYmwJYnNhZXNfZGVjcnlwdF8xMjgKKysudHlwZQlic2Flc19kZWNyeXB0XzEyOCwlZnVuY3Rpb24KKysuYWxpZ24JNAorK2JzYWVzX2RlY3J5cHRfMTI4OgorKwlzdG1kYglzcCEse3I0LXI2LGxyfQorKwl2c3RtZGIJc3AhLHtkOC1kMTV9CQlAIEFCSSBzcGVjaWZpY2F0aW9uIHNheXMgc28KKysuTGRlYzEyOF9sb29wOgorKwl2bGQxLjgJe0BYTU1bMF0tQFhNTVsxXX0sIFskaW5wXSEJQCBsb2FkIGlucHV0CisrCXZsZDEuOAl7QFhNTVsyXS1AWE1NWzNdfSwgWyRpbnBdIQorKwltb3YJcjQsJGtleQkJCQlAIHBhc3MgdGhlIGtleQorKwl2bGQxLjgJe0BYTU1bNF0tQFhNTVs1XX0sIFskaW5wXSEKKysJbW92CXI1LCMxMAkJCQlAIHBhc3Mgcm91bmRzCisrCXZsZDEuOAl7QFhNTVs2XS1AWE1NWzddfSwgWyRpbnBdIQorKworKwlibAlfYnNhZXNfZGVjcnlwdDgKKysKKysJdnN0MS44CXtAWE1NWzBdLUBYTU1bMV19LCBbJG91dF0hCUAgd3JpdGUgb3V0cHV0CisrCXZzdDEuOAl7QFhNTVs2XX0sIFskb3V0XSEKKysJdnN0MS44CXtAWE1NWzRdfSwgWyRvdXRdIQorKwl2c3QxLjgJe0BYTU1bMl19LCBbJG91dF0hCisrCXZzdDEuOAl7QFhNTVs3XX0sIFskb3V0XSEKKysJdnN0MS44CXtAWE1NWzNdfSwgWyRvdXRdIQorKwlzdWJzCSRsZW4sJGxlbiwjMHg4MAorKwl2c3QxLjgJe0BYTU1bNV19LCBbJG91dF0hCisrCWJoaQkuTGRlYzEyOF9sb29wCisrCisrCXZsZG1pYQlzcCEse2Q4LWQxNX0KKysJbGRtaWEJc3AhLHtyNC1yNixwY30KKysuc2l6ZQlic2Flc19kZWNyeXB0XzEyOCwuLWJzYWVzX2RlY3J5cHRfMTI4CisrX19fCisrfQorK3sKKytteSAoJGlucCwkb3V0LCRsZW4sJGtleSwgJGl2cCwkZnAsJHJvdW5kcyk9bWFwKCJyJF8iLCgwLi4zLDguLjEwKSk7CisrbXkgKCRrZXlzY2hlZCk9KCJzcCIpOworKworKyRjb2RlLj08PF9fXzsKKysuZXh0ZXJuIEFFU19jYmNfZW5jcnlwdAorKy5leHRlcm4gQUVTX2RlY3J5cHQKKysKKysuZ2xvYmFsCWJzYWVzX2NiY19lbmNyeXB0CisrLnR5cGUJYnNhZXNfY2JjX2VuY3J5cHQsJWZ1bmN0aW9uCisrLmFsaWduCTUKKytic2Flc19jYmNfZW5jcnlwdDoKKysjaWZuZGVmCV9fS0VSTkVMX18KKysJY21wCSRsZW4sICMxMjgKKysjaWZuZGVmCV9fdGh1bWJfXworKwlibG8JQUVTX2NiY19lbmNyeXB0CisrI2Vsc2UKKysJYmhzCTFmCisrCWIJQUVTX2NiY19lbmNyeXB0CisrMToKKysjZW5kaWYKKysjZW5kaWYKKysKKysJQCBpdCBpcyB1cCB0byB0aGUgY2FsbGVyIHRvIG1ha2Ugc3VyZSB3ZSBhcmUgY2FsbGVkIHdpdGggZW5jID09IDAKKysKKysJbW92CWlwLCBzcAorKwlzdG1kYglzcCEsIHtyNC1yMTAsIGxyfQorKwlWRlBfQUJJX1BVU0gKKysJbGRyCSRpdnAsIFtpcF0JCQlAIElWIGlzIDFzdCBhcmcgb24gdGhlIHN0YWNrCisrCW1vdgkkbGVuLCAkbGVuLCBsc3IjNAkJQCBsZW4gaW4gMTYgYnl0ZSBibG9ja3MKKysJc3ViCXNwLCAjMHgxMAkJCUAgc2NyYXRjaCBzcGFjZSB0byBjYXJyeSBvdmVyIHRoZSBJVgorKwltb3YJJGZwLCBzcAkJCQlAIHNhdmUgc3AKKysKKysJbGRyCSRyb3VuZHMsIFska2V5LCAjMjQwXQkJQCBnZXQgIyBvZiByb3VuZHMKKysjaWZuZGVmCUJTQUVTX0FTTV9FWFRFTkRFRF9LRVkKKysJQCBhbGxvY2F0ZSB0aGUga2V5IHNjaGVkdWxlIG9uIHRoZSBzdGFjaworKwlzdWIJcjEyLCBzcCwgJHJvdW5kcywgbHNsIzcJCUAgMTI4IGJ5dGVzIHBlciBpbm5lciByb3VuZCBrZXkKKysJYWRkCXIxMiwgI2AxMjgtMzJgCQkJQCBzaWZ6ZSBvZiBiaXQtc2xpY2VzIGtleSBzY2hlZHVsZQorKworKwlAIHBvcHVsYXRlIHRoZSBrZXkgc2NoZWR1bGUKKysJbW92CXI0LCAka2V5CQkJQCBwYXNzIGtleQorKwltb3YJcjUsICRyb3VuZHMJCQlAIHBhc3MgIyBvZiByb3VuZHMKKysJbW92CXNwLCByMTIJCQkJQCBzcCBpcyAka2V5c2NoZWQKKysJYmwJX2JzYWVzX2tleV9jb252ZXJ0CisrCXZsZG1pYQkka2V5c2NoZWQsIHtAWE1NWzZdfQorKwl2c3RtaWEJcjEyLCAge0BYTU1bMTVdfQkJQCBzYXZlIGxhc3Qgcm91bmQga2V5CisrCXZlb3IJQFhNTVs3XSwgQFhNTVs3XSwgQFhNTVs2XQlAIGZpeCB1cCByb3VuZCAwIGtleQorKwl2c3RtaWEJJGtleXNjaGVkLCB7QFhNTVs3XX0KKysjZWxzZQorKwlsZHIJcjEyLCBbJGtleSwgIzI0NF0KKysJZW9ycwlyMTIsICMxCisrCWJlcQkwZgorKworKwlAIHBvcHVsYXRlIHRoZSBrZXkgc2NoZWR1bGUKKysJc3RyCXIxMiwgWyRrZXksICMyNDRdCisrCW1vdglyNCwgJGtleQkJCUAgcGFzcyBrZXkKKysJbW92CXI1LCAkcm91bmRzCQkJQCBwYXNzICMgb2Ygcm91bmRzCisrCWFkZAlyMTIsICRrZXksICMyNDgJCQlAIHBhc3Mga2V5IHNjaGVkdWxlCisrCWJsCV9ic2Flc19rZXlfY29udmVydAorKwlhZGQJcjQsICRrZXksICMyNDgKKysJdmxkbWlhCXI0LCB7QFhNTVs2XX0KKysJdnN0bWlhCXIxMiwge0BYTU1bMTVdfQkJCUAgc2F2ZSBsYXN0IHJvdW5kIGtleQorKwl2ZW9yCUBYTU1bN10sIEBYTU1bN10sIEBYTU1bNl0JQCBmaXggdXAgcm91bmQgMCBrZXkKKysJdnN0bWlhCXI0LCB7QFhNTVs3XX0KKysKKysuYWxpZ24JMgorKzA6CisrI2VuZGlmCisrCisrCXZsZDEuOAl7QFhNTVsxNV19LCBbJGl2cF0JCUAgbG9hZCBJVgorKwliCS5MY2JjX2RlY19sb29wCisrCisrLmFsaWduCTQKKysuTGNiY19kZWNfbG9vcDoKKysJc3VicwkkbGVuLCAkbGVuLCAjMHg4CisrCWJtaQkuTGNiY19kZWNfbG9vcF9maW5pc2gKKysKKysJdmxkMS44CXtAWE1NWzBdLUBYTU1bMV19LCBbJGlucF0hCUAgbG9hZCBpbnB1dAorKwl2bGQxLjgJe0BYTU1bMl0tQFhNTVszXX0sIFskaW5wXSEKKysjaWZuZGVmCUJTQUVTX0FTTV9FWFRFTkRFRF9LRVkKKysJbW92CXI0LCAka2V5c2NoZWQJCQlAIHBhc3MgdGhlIGtleQorKyNlbHNlCisrCWFkZAlyNCwgJGtleSwgIzI0OAorKyNlbmRpZgorKwl2bGQxLjgJe0BYTU1bNF0tQFhNTVs1XX0sIFskaW5wXSEKKysJbW92CXI1LCAkcm91bmRzCisrCXZsZDEuOAl7QFhNTVs2XS1AWE1NWzddfSwgWyRpbnBdCisrCXN1YgkkaW5wLCAkaW5wLCAjMHg2MAorKwl2c3RtaWEJJGZwLCB7QFhNTVsxNV19CQkJQCBwdXQgYXNpZGUgSVYKKysKKysJYmwJX2JzYWVzX2RlY3J5cHQ4CisrCisrCXZsZG1pYQkkZnAsIHtAWE1NWzE0XX0JCQlAIHJlbG9hZCBJVgorKwl2bGQxLjgJe0BYTU1bOF0tQFhNTVs5XX0sIFskaW5wXSEJQCByZWxvYWQgaW5wdXQKKysJdmVvcglAWE1NWzBdLCBAWE1NWzBdLCBAWE1NWzE0XQlAIF49IElWCisrCXZsZDEuOAl7QFhNTVsxMF0tQFhNTVsxMV19LCBbJGlucF0hCisrCXZlb3IJQFhNTVsxXSwgQFhNTVsxXSwgQFhNTVs4XQorKwl2ZW9yCUBYTU1bNl0sIEBYTU1bNl0sIEBYTU1bOV0KKysJdmxkMS44CXtAWE1NWzEyXS1AWE1NWzEzXX0sIFskaW5wXSEKKysJdmVvcglAWE1NWzRdLCBAWE1NWzRdLCBAWE1NWzEwXQorKwl2ZW9yCUBYTU1bMl0sIEBYTU1bMl0sIEBYTU1bMTFdCisrCXZsZDEuOAl7QFhNTVsxNF0tQFhNTVsxNV19LCBbJGlucF0hCisrCXZlb3IJQFhNTVs3XSwgQFhNTVs3XSwgQFhNTVsxMl0KKysJdnN0MS44CXtAWE1NWzBdLUBYTU1bMV19LCBbJG91dF0hCUAgd3JpdGUgb3V0cHV0CisrCXZlb3IJQFhNTVszXSwgQFhNTVszXSwgQFhNTVsxM10KKysJdnN0MS44CXtAWE1NWzZdfSwgWyRvdXRdIQorKwl2ZW9yCUBYTU1bNV0sIEBYTU1bNV0sIEBYTU1bMTRdCisrCXZzdDEuOAl7QFhNTVs0XX0sIFskb3V0XSEKKysJdnN0MS44CXtAWE1NWzJdfSwgWyRvdXRdIQorKwl2c3QxLjgJe0BYTU1bN119LCBbJG91dF0hCisrCXZzdDEuOAl7QFhNTVszXX0sIFskb3V0XSEKKysJdnN0MS44CXtAWE1NWzVdfSwgWyRvdXRdIQorKworKwliCS5MY2JjX2RlY19sb29wCisrCisrLkxjYmNfZGVjX2xvb3BfZmluaXNoOgorKwlhZGRzCSRsZW4sICRsZW4sICM4CisrCWJlcQkuTGNiY19kZWNfZG9uZQorKworKwl2bGQxLjgJe0BYTU1bMF19LCBbJGlucF0hCQlAIGxvYWQgaW5wdXQKKysJY21wCSRsZW4sICMyCisrCWJsbwkuTGNiY19kZWNfb25lCisrCXZsZDEuOAl7QFhNTVsxXX0sIFskaW5wXSEKKysjaWZuZGVmCUJTQUVTX0FTTV9FWFRFTkRFRF9LRVkKKysJbW92CXI0LCAka2V5c2NoZWQJCQlAIHBhc3MgdGhlIGtleQorKyNlbHNlCisrCWFkZAlyNCwgJGtleSwgIzI0OAorKyNlbmRpZgorKwltb3YJcjUsICRyb3VuZHMKKysJdnN0bWlhCSRmcCwge0BYTU1bMTVdfQkJCUAgcHV0IGFzaWRlIElWCisrCWJlcQkuTGNiY19kZWNfdHdvCisrCXZsZDEuOAl7QFhNTVsyXX0sIFskaW5wXSEKKysJY21wCSRsZW4sICM0CisrCWJsbwkuTGNiY19kZWNfdGhyZWUKKysJdmxkMS44CXtAWE1NWzNdfSwgWyRpbnBdIQorKwliZXEJLkxjYmNfZGVjX2ZvdXIKKysJdmxkMS44CXtAWE1NWzRdfSwgWyRpbnBdIQorKwljbXAJJGxlbiwgIzYKKysJYmxvCS5MY2JjX2RlY19maXZlCisrCXZsZDEuOAl7QFhNTVs1XX0sIFskaW5wXSEKKysJYmVxCS5MY2JjX2RlY19zaXgKKysJdmxkMS44CXtAWE1NWzZdfSwgWyRpbnBdIQorKwlzdWIJJGlucCwgJGlucCwgIzB4NzAKKysKKysJYmwJX2JzYWVzX2RlY3J5cHQ4CisrCisrCXZsZG1pYQkkZnAsIHtAWE1NWzE0XX0JCQlAIHJlbG9hZCBJVgorKwl2bGQxLjgJe0BYTU1bOF0tQFhNTVs5XX0sIFskaW5wXSEJQCByZWxvYWQgaW5wdXQKKysJdmVvcglAWE1NWzBdLCBAWE1NWzBdLCBAWE1NWzE0XQlAIF49IElWCisrCXZsZDEuOAl7QFhNTVsxMF0tQFhNTVsxMV19LCBbJGlucF0hCisrCXZlb3IJQFhNTVsxXSwgQFhNTVsxXSwgQFhNTVs4XQorKwl2ZW9yCUBYTU1bNl0sIEBYTU1bNl0sIEBYTU1bOV0KKysJdmxkMS44CXtAWE1NWzEyXS1AWE1NWzEzXX0sIFskaW5wXSEKKysJdmVvcglAWE1NWzRdLCBAWE1NWzRdLCBAWE1NWzEwXQorKwl2ZW9yCUBYTU1bMl0sIEBYTU1bMl0sIEBYTU1bMTFdCisrCXZsZDEuOAl7QFhNTVsxNV19LCBbJGlucF0hCisrCXZlb3IJQFhNTVs3XSwgQFhNTVs3XSwgQFhNTVsxMl0KKysJdnN0MS44CXtAWE1NWzBdLUBYTU1bMV19LCBbJG91dF0hCUAgd3JpdGUgb3V0cHV0CisrCXZlb3IJQFhNTVszXSwgQFhNTVszXSwgQFhNTVsxM10KKysJdnN0MS44CXtAWE1NWzZdfSwgWyRvdXRdIQorKwl2c3QxLjgJe0BYTU1bNF19LCBbJG91dF0hCisrCXZzdDEuOAl7QFhNTVsyXX0sIFskb3V0XSEKKysJdnN0MS44CXtAWE1NWzddfSwgWyRvdXRdIQorKwl2c3QxLjgJe0BYTU1bM119LCBbJG91dF0hCisrCWIJLkxjYmNfZGVjX2RvbmUKKysuYWxpZ24JNAorKy5MY2JjX2RlY19zaXg6CisrCXN1YgkkaW5wLCAkaW5wLCAjMHg2MAorKwlibAlfYnNhZXNfZGVjcnlwdDgKKysJdmxkbWlhCSRmcCx7QFhNTVsxNF19CQkJQCByZWxvYWQgSVYKKysJdmxkMS44CXtAWE1NWzhdLUBYTU1bOV19LCBbJGlucF0hCUAgcmVsb2FkIGlucHV0CisrCXZlb3IJQFhNTVswXSwgQFhNTVswXSwgQFhNTVsxNF0JQCBePSBJVgorKwl2bGQxLjgJe0BYTU1bMTBdLUBYTU1bMTFdfSwgWyRpbnBdIQorKwl2ZW9yCUBYTU1bMV0sIEBYTU1bMV0sIEBYTU1bOF0KKysJdmVvcglAWE1NWzZdLCBAWE1NWzZdLCBAWE1NWzldCisrCXZsZDEuOAl7QFhNTVsxMl19LCBbJGlucF0hCisrCXZlb3IJQFhNTVs0XSwgQFhNTVs0XSwgQFhNTVsxMF0KKysJdmVvcglAWE1NWzJdLCBAWE1NWzJdLCBAWE1NWzExXQorKwl2bGQxLjgJe0BYTU1bMTVdfSwgWyRpbnBdIQorKwl2ZW9yCUBYTU1bN10sIEBYTU1bN10sIEBYTU1bMTJdCisrCXZzdDEuOAl7QFhNTVswXS1AWE1NWzFdfSwgWyRvdXRdIQlAIHdyaXRlIG91dHB1dAorKwl2c3QxLjgJe0BYTU1bNl19LCBbJG91dF0hCisrCXZzdDEuOAl7QFhNTVs0XX0sIFskb3V0XSEKKysJdnN0MS44CXtAWE1NWzJdfSwgWyRvdXRdIQorKwl2c3QxLjgJe0BYTU1bN119LCBbJG91dF0hCisrCWIJLkxjYmNfZGVjX2RvbmUKKysuYWxpZ24JNAorKy5MY2JjX2RlY19maXZlOgorKwlzdWIJJGlucCwgJGlucCwgIzB4NTAKKysJYmwJX2JzYWVzX2RlY3J5cHQ4CisrCXZsZG1pYQkkZnAsIHtAWE1NWzE0XX0JCQlAIHJlbG9hZCBJVgorKwl2bGQxLjgJe0BYTU1bOF0tQFhNTVs5XX0sIFskaW5wXSEJQCByZWxvYWQgaW5wdXQKKysJdmVvcglAWE1NWzBdLCBAWE1NWzBdLCBAWE1NWzE0XQlAIF49IElWCisrCXZsZDEuOAl7QFhNTVsxMF0tQFhNTVsxMV19LCBbJGlucF0hCisrCXZlb3IJQFhNTVsxXSwgQFhNTVsxXSwgQFhNTVs4XQorKwl2ZW9yCUBYTU1bNl0sIEBYTU1bNl0sIEBYTU1bOV0KKysJdmxkMS44CXtAWE1NWzE1XX0sIFskaW5wXSEKKysJdmVvcglAWE1NWzRdLCBAWE1NWzRdLCBAWE1NWzEwXQorKwl2c3QxLjgJe0BYTU1bMF0tQFhNTVsxXX0sIFskb3V0XSEJQCB3cml0ZSBvdXRwdXQKKysJdmVvcglAWE1NWzJdLCBAWE1NWzJdLCBAWE1NWzExXQorKwl2c3QxLjgJe0BYTU1bNl19LCBbJG91dF0hCisrCXZzdDEuOAl7QFhNTVs0XX0sIFskb3V0XSEKKysJdnN0MS44CXtAWE1NWzJdfSwgWyRvdXRdIQorKwliCS5MY2JjX2RlY19kb25lCisrLmFsaWduCTQKKysuTGNiY19kZWNfZm91cjoKKysJc3ViCSRpbnAsICRpbnAsICMweDQwCisrCWJsCV9ic2Flc19kZWNyeXB0OAorKwl2bGRtaWEJJGZwLCB7QFhNTVsxNF19CQkJQCByZWxvYWQgSVYKKysJdmxkMS44CXtAWE1NWzhdLUBYTU1bOV19LCBbJGlucF0hCUAgcmVsb2FkIGlucHV0CisrCXZlb3IJQFhNTVswXSwgQFhNTVswXSwgQFhNTVsxNF0JQCBePSBJVgorKwl2bGQxLjgJe0BYTU1bMTBdfSwgWyRpbnBdIQorKwl2ZW9yCUBYTU1bMV0sIEBYTU1bMV0sIEBYTU1bOF0KKysJdmVvcglAWE1NWzZdLCBAWE1NWzZdLCBAWE1NWzldCisrCXZsZDEuOAl7QFhNTVsxNV19LCBbJGlucF0hCisrCXZlb3IJQFhNTVs0XSwgQFhNTVs0XSwgQFhNTVsxMF0KKysJdnN0MS44CXtAWE1NWzBdLUBYTU1bMV19LCBbJG91dF0hCUAgd3JpdGUgb3V0cHV0CisrCXZzdDEuOAl7QFhNTVs2XX0sIFskb3V0XSEKKysJdnN0MS44CXtAWE1NWzRdfSwgWyRvdXRdIQorKwliCS5MY2JjX2RlY19kb25lCisrLmFsaWduCTQKKysuTGNiY19kZWNfdGhyZWU6CisrCXN1YgkkaW5wLCAkaW5wLCAjMHgzMAorKwlibAlfYnNhZXNfZGVjcnlwdDgKKysJdmxkbWlhCSRmcCwge0BYTU1bMTRdfQkJCUAgcmVsb2FkIElWCisrCXZsZDEuOAl7QFhNTVs4XS1AWE1NWzldfSwgWyRpbnBdIQlAIHJlbG9hZCBpbnB1dAorKwl2ZW9yCUBYTU1bMF0sIEBYTU1bMF0sIEBYTU1bMTRdCUAgXj0gSVYKKysJdmxkMS44CXtAWE1NWzE1XX0sIFskaW5wXSEKKysJdmVvcglAWE1NWzFdLCBAWE1NWzFdLCBAWE1NWzhdCisrCXZlb3IJQFhNTVs2XSwgQFhNTVs2XSwgQFhNTVs5XQorKwl2c3QxLjgJe0BYTU1bMF0tQFhNTVsxXX0sIFskb3V0XSEJQCB3cml0ZSBvdXRwdXQKKysJdnN0MS44CXtAWE1NWzZdfSwgWyRvdXRdIQorKwliCS5MY2JjX2RlY19kb25lCisrLmFsaWduCTQKKysuTGNiY19kZWNfdHdvOgorKwlzdWIJJGlucCwgJGlucCwgIzB4MjAKKysJYmwJX2JzYWVzX2RlY3J5cHQ4CisrCXZsZG1pYQkkZnAsIHtAWE1NWzE0XX0JCQlAIHJlbG9hZCBJVgorKwl2bGQxLjgJe0BYTU1bOF19LCBbJGlucF0hCQlAIHJlbG9hZCBpbnB1dAorKwl2ZW9yCUBYTU1bMF0sIEBYTU1bMF0sIEBYTU1bMTRdCUAgXj0gSVYKKysJdmxkMS44CXtAWE1NWzE1XX0sIFskaW5wXSEJCUAgcmVsb2FkIGlucHV0CisrCXZlb3IJQFhNTVsxXSwgQFhNTVsxXSwgQFhNTVs4XQorKwl2c3QxLjgJe0BYTU1bMF0tQFhNTVsxXX0sIFskb3V0XSEJQCB3cml0ZSBvdXRwdXQKKysJYgkuTGNiY19kZWNfZG9uZQorKy5hbGlnbgk0CisrLkxjYmNfZGVjX29uZToKKysJc3ViCSRpbnAsICRpbnAsICMweDEwCisrCW1vdgkkcm91bmRzLCAkb3V0CQkJQCBzYXZlIG9yaWdpbmFsIG91dCBwb2ludGVyCisrCW1vdgkkb3V0LCAkZnAJCQlAIHVzZSB0aGUgaXYgc2NyYXRjaCBzcGFjZSBhcyBvdXQgYnVmZmVyCisrCW1vdglyMiwgJGtleQorKwl2bW92CUBYTU1bNF0sQFhNTVsxNV0JCUAganVzdCBpbiBjYXNlIGVuc3VyZSB0aGF0IElWCisrCXZtb3YJQFhNTVs1XSxAWE1NWzBdCQkJQCBhbmQgaW5wdXQgYXJlIHByZXNlcnZlZAorKwlibAlBRVNfZGVjcnlwdAorKwl2bGQxLjgJe0BYTU1bMF19LCBbJGZwLDo2NF0JCUAgbG9hZCByZXN1bHQKKysJdmVvcglAWE1NWzBdLCBAWE1NWzBdLCBAWE1NWzRdCUAgXj0gSVYKKysJdm1vdglAWE1NWzE1XSwgQFhNTVs1XQkJQCBAWE1NWzVdIGhvbGRzIGlucHV0CisrCXZzdDEuOAl7QFhNTVswXX0sIFskcm91bmRzXQkJQCB3cml0ZSBvdXRwdXQKKysKKysuTGNiY19kZWNfZG9uZToKKysjaWZuZGVmCUJTQUVTX0FTTV9FWFRFTkRFRF9LRVkKKysJdm1vdi5pMzIJcTAsICMwCisrCXZtb3YuaTMyCXExLCAjMAorKy5MY2JjX2RlY19iemVybzoJCQkJQCB3aXBlIGtleSBzY2hlZHVsZSBbaWYgYW55XQorKwl2c3RtaWEJCSRrZXlzY2hlZCEsIHtxMC1xMX0KKysJY21wCQkka2V5c2NoZWQsICRmcAorKwlibmUJCS5MY2JjX2RlY19iemVybworKyNlbmRpZgorKworKwltb3YJc3AsICRmcAorKwlhZGQJc3AsICMweDEwCQkJQCBhZGQgc3AsJGZwLCMweDEwIGlzIG5vIGdvb2QgZm9yIHRodW1iCisrCXZzdDEuOAl7QFhNTVsxNV19LCBbJGl2cF0JCUAgcmV0dXJuIElWCisrCVZGUF9BQklfUE9QCisrCWxkbWlhCXNwISwge3I0LXIxMCwgcGN9CisrLnNpemUJYnNhZXNfY2JjX2VuY3J5cHQsLi1ic2Flc19jYmNfZW5jcnlwdAorK19fXworK30KKyt7CisrbXkgKCRpbnAsJG91dCwkbGVuLCRrZXksICRjdHIsJGZwLCRyb3VuZHMpPShtYXAoInIkXyIsKDAuLjMsOC4uMTApKSk7CisrbXkgJGNvbnN0ID0gInI2IjsJIyBzaGFyZWQgd2l0aCBfYnNhZXNfZW5jcnlwdDhfYWx0CisrbXkgJGtleXNjaGVkID0gInNwIjsKKysKKyskY29kZS49PDxfX187CisrLmV4dGVybglBRVNfZW5jcnlwdAorKy5nbG9iYWwJYnNhZXNfY3RyMzJfZW5jcnlwdF9ibG9ja3MKKysudHlwZQlic2Flc19jdHIzMl9lbmNyeXB0X2Jsb2NrcywlZnVuY3Rpb24KKysuYWxpZ24JNQorK2JzYWVzX2N0cjMyX2VuY3J5cHRfYmxvY2tzOgorKwljbXAJJGxlbiwgIzgJCQlAIHVzZSBwbGFpbiBBRVMgZm9yCisrCWJsbwkuTGN0cl9lbmNfc2hvcnQJCQlAIHNtYWxsIHNpemVzCisrCisrCW1vdglpcCwgc3AKKysJc3RtZGIJc3AhLCB7cjQtcjEwLCBscn0KKysJVkZQX0FCSV9QVVNICisrCWxkcgkkY3RyLCBbaXBdCQkJQCBjdHIgaXMgMXN0IGFyZyBvbiB0aGUgc3RhY2sKKysJc3ViCXNwLCBzcCwgIzB4MTAJCQlAIHNjcmF0Y2ggc3BhY2UgdG8gY2Fycnkgb3ZlciB0aGUgY3RyCisrCW1vdgkkZnAsIHNwCQkJCUAgc2F2ZSBzcAorKworKwlsZHIJJHJvdW5kcywgWyRrZXksICMyNDBdCQlAIGdldCAjIG9mIHJvdW5kcworKyNpZm5kZWYJQlNBRVNfQVNNX0VYVEVOREVEX0tFWQorKwlAIGFsbG9jYXRlIHRoZSBrZXkgc2NoZWR1bGUgb24gdGhlIHN0YWNrCisrCXN1YglyMTIsIHNwLCAkcm91bmRzLCBsc2wjNwkJQCAxMjggYnl0ZXMgcGVyIGlubmVyIHJvdW5kIGtleQorKwlhZGQJcjEyLCAjYDEyOC0zMmAJCQlAIHNpemUgb2YgYml0LXNsaWNlZCBrZXkgc2NoZWR1bGUKKysKKysJQCBwb3B1bGF0ZSB0aGUga2V5IHNjaGVkdWxlCisrCW1vdglyNCwgJGtleQkJCUAgcGFzcyBrZXkKKysJbW92CXI1LCAkcm91bmRzCQkJQCBwYXNzICMgb2Ygcm91bmRzCisrCW1vdglzcCwgcjEyCQkJCUAgc3AgaXMgJGtleXNjaGVkCisrCWJsCV9ic2Flc19rZXlfY29udmVydAorKwl2ZW9yCUBYTU1bN10sQFhNTVs3XSxAWE1NWzE1XQlAIGZpeCB1cCBsYXN0IHJvdW5kIGtleQorKwl2c3RtaWEJcjEyLCB7QFhNTVs3XX0JCQlAIHNhdmUgbGFzdCByb3VuZCBrZXkKKysKKysJdmxkMS44CXtAWE1NWzBdfSwgWyRjdHJdCQlAIGxvYWQgY291bnRlcgorKwlhZGQJJGN0ciwgJGNvbnN0LCAjLkxSRVZNMFNSLS5MTTAJQCBib3Jyb3cgJGN0cgorKwl2bGRtaWEJJGtleXNjaGVkLCB7QFhNTVs0XX0JCUAgbG9hZCByb3VuZDAga2V5CisrI2Vsc2UKKysJbGRyCXIxMiwgWyRrZXksICMyNDRdCisrCWVvcnMJcjEyLCAjMQorKwliZXEJMGYKKysKKysJQCBwb3B1bGF0ZSB0aGUga2V5IHNjaGVkdWxlCisrCXN0cglyMTIsIFska2V5LCAjMjQ0XQorKwltb3YJcjQsICRrZXkJCQlAIHBhc3Mga2V5CisrCW1vdglyNSwgJHJvdW5kcwkJCUAgcGFzcyAjIG9mIHJvdW5kcworKwlhZGQJcjEyLCAka2V5LCAjMjQ4CQkJQCBwYXNzIGtleSBzY2hlZHVsZQorKwlibAlfYnNhZXNfa2V5X2NvbnZlcnQKKysJdmVvcglAWE1NWzddLEBYTU1bN10sQFhNTVsxNV0JQCBmaXggdXAgbGFzdCByb3VuZCBrZXkKKysJdnN0bWlhCXIxMiwge0BYTU1bN119CQkJQCBzYXZlIGxhc3Qgcm91bmQga2V5CisrCisrLmFsaWduCTIKKyswOglhZGQJcjEyLCAka2V5LCAjMjQ4CisrCXZsZDEuOAl7QFhNTVswXX0sIFskY3RyXQkJQCBsb2FkIGNvdW50ZXIKKysJYWRybAkkY3RyLCAuTFJFVk0wU1IJCQlAIGJvcnJvdyAkY3RyCisrCXZsZG1pYQlyMTIsIHtAWE1NWzRdfQkJCUAgbG9hZCByb3VuZDAga2V5CisrCXN1YglzcCwgIzB4MTAJCQlAIHBsYWNlIGZvciBhZGp1c3RlZCByb3VuZDAga2V5CisrI2VuZGlmCisrCisrCXZtb3YuaTMyCUBYTU1bOF0sIzEJCUAgY29tcG9zZSAxPDw5NgorKwl2ZW9yCQlAWE1NWzldLEBYTU1bOV0sQFhNTVs5XQorKwl2cmV2MzIuOAlAWE1NWzBdLEBYTU1bMF0KKysJdmV4dC44CQlAWE1NWzhdLEBYTU1bOV0sQFhNTVs4XSwjNAorKwl2cmV2MzIuOAlAWE1NWzRdLEBYTU1bNF0KKysJdmFkZC51MzIJQFhNTVs5XSxAWE1NWzhdLEBYTU1bOF0JQCBjb21wb3NlIDI8PDk2CisrCXZzdG1pYQkka2V5c2NoZWQsIHtAWE1NWzRdfQkJQCBzYXZlIGFkanVzdGVkIHJvdW5kMCBrZXkKKysJYgkuTGN0cl9lbmNfbG9vcAorKworKy5hbGlnbgk0CisrLkxjdHJfZW5jX2xvb3A6CisrCXZhZGQudTMyCUBYTU1bMTBdLCBAWE1NWzhdLCBAWE1NWzldCUAgY29tcG9zZSAzPDw5NgorKwl2YWRkLnUzMglAWE1NWzFdLCBAWE1NWzBdLCBAWE1NWzhdCUAgKzEKKysJdmFkZC51MzIJQFhNTVsyXSwgQFhNTVswXSwgQFhNTVs5XQlAICsyCisrCXZhZGQudTMyCUBYTU1bM10sIEBYTU1bMF0sIEBYTU1bMTBdCUAgKzMKKysJdmFkZC51MzIJQFhNTVs0XSwgQFhNTVsxXSwgQFhNTVsxMF0KKysJdmFkZC51MzIJQFhNTVs1XSwgQFhNTVsyXSwgQFhNTVsxMF0KKysJdmFkZC51MzIJQFhNTVs2XSwgQFhNTVszXSwgQFhNTVsxMF0KKysJdmFkZC51MzIJQFhNTVs3XSwgQFhNTVs0XSwgQFhNTVsxMF0KKysJdmFkZC51MzIJQFhNTVsxMF0sIEBYTU1bNV0sIEBYTU1bMTBdCUAgbmV4dCBjb3VudGVyCisrCisrCUAgQm9ycm93IHByb2xvZ3VlIGZyb20gX2JzYWVzX2VuY3J5cHQ4IHRvIHVzZSB0aGUgb3Bwb3J0dW5pdHkKKysJQCB0byBmbGlwIGJ5dGUgb3JkZXIgaW4gMzItYml0IGNvdW50ZXIKKysKKysJdmxkbWlhCQkka2V5c2NoZWQsIHtAWE1NWzldfQkJQCBsb2FkIHJvdW5kMCBrZXkKKysjaWZuZGVmCUJTQUVTX0FTTV9FWFRFTkRFRF9LRVkKKysJYWRkCQlyNCwgJGtleXNjaGVkLCAjMHgxMAkJQCBwYXNzIG5leHQgcm91bmQga2V5CisrI2Vsc2UKKysJYWRkCQlyNCwgJGtleSwgI2AyNDgrMTZgCisrI2VuZGlmCisrCXZsZG1pYQkJJGN0ciwge0BYTU1bOF19CQkJQCAuTFJFVk0wU1IKKysJbW92CQlyNSwgJHJvdW5kcwkJCUAgcGFzcyByb3VuZHMKKysJdnN0bWlhCQkkZnAsIHtAWE1NWzEwXX0JCQlAIHNhdmUgbmV4dCBjb3VudGVyCisrCXN1YgkJJGNvbnN0LCAkY3RyLCAjLkxSRVZNMFNSLS5MU1IJQCBwYXNzIGNvbnN0YW50cworKworKwlibAkJX2JzYWVzX2VuY3J5cHQ4X2FsdAorKworKwlzdWJzCQkkbGVuLCAkbGVuLCAjOAorKwlibG8JCS5MY3RyX2VuY19sb29wX2RvbmUKKysKKysJdmxkMS44CQl7QFhNTVs4XS1AWE1NWzldfSwgWyRpbnBdIQlAIGxvYWQgaW5wdXQKKysJdmxkMS44CQl7QFhNTVsxMF0tQFhNTVsxMV19LCBbJGlucF0hCisrCXZlb3IJCUBYTU1bMF0sIEBYTU1bOF0KKysJdmVvcgkJQFhNTVsxXSwgQFhNTVs5XQorKwl2bGQxLjgJCXtAWE1NWzEyXS1AWE1NWzEzXX0sIFskaW5wXSEKKysJdmVvcgkJQFhNTVs0XSwgQFhNTVsxMF0KKysJdmVvcgkJQFhNTVs2XSwgQFhNTVsxMV0KKysJdmxkMS44CQl7QFhNTVsxNF0tQFhNTVsxNV19LCBbJGlucF0hCisrCXZlb3IJCUBYTU1bM10sIEBYTU1bMTJdCisrCXZzdDEuOAkJe0BYTU1bMF0tQFhNTVsxXX0sIFskb3V0XSEJQCB3cml0ZSBvdXRwdXQKKysJdmVvcgkJQFhNTVs3XSwgQFhNTVsxM10KKysJdmVvcgkJQFhNTVsyXSwgQFhNTVsxNF0KKysJdnN0MS44CQl7QFhNTVs0XX0sIFskb3V0XSEKKysJdmVvcgkJQFhNTVs1XSwgQFhNTVsxNV0KKysJdnN0MS44CQl7QFhNTVs2XX0sIFskb3V0XSEKKysJdm1vdi5pMzIJQFhNTVs4XSwgIzEJCQlAIGNvbXBvc2UgMTw8OTYKKysJdnN0MS44CQl7QFhNTVszXX0sIFskb3V0XSEKKysJdmVvcgkJQFhNTVs5XSwgQFhNTVs5XSwgQFhNTVs5XQorKwl2c3QxLjgJCXtAWE1NWzddfSwgWyRvdXRdIQorKwl2ZXh0LjgJCUBYTU1bOF0sIEBYTU1bOV0sIEBYTU1bOF0sICM0CisrCXZzdDEuOAkJe0BYTU1bMl19LCBbJG91dF0hCisrCXZhZGQudTMyCUBYTU1bOV0sQFhNTVs4XSxAWE1NWzhdCQlAIGNvbXBvc2UgMjw8OTYKKysJdnN0MS44CQl7QFhNTVs1XX0sIFskb3V0XSEKKysJdmxkbWlhCQkkZnAsIHtAWE1NWzBdfQkJCUAgbG9hZCBjb3VudGVyCisrCisrCWJuZQkJLkxjdHJfZW5jX2xvb3AKKysJYgkJLkxjdHJfZW5jX2RvbmUKKysKKysuYWxpZ24JNAorKy5MY3RyX2VuY19sb29wX2RvbmU6CisrCWFkZAkJJGxlbiwgJGxlbiwgIzgKKysJdmxkMS44CQl7QFhNTVs4XX0sIFskaW5wXSEJQCBsb2FkIGlucHV0CisrCXZlb3IJCUBYTU1bMF0sIEBYTU1bOF0KKysJdnN0MS44CQl7QFhNTVswXX0sIFskb3V0XSEJQCB3cml0ZSBvdXRwdXQKKysJY21wCQkkbGVuLCAjMgorKwlibG8JCS5MY3RyX2VuY19kb25lCisrCXZsZDEuOAkJe0BYTU1bOV19LCBbJGlucF0hCisrCXZlb3IJCUBYTU1bMV0sIEBYTU1bOV0KKysJdnN0MS44CQl7QFhNTVsxXX0sIFskb3V0XSEKKysJYmVxCQkuTGN0cl9lbmNfZG9uZQorKwl2bGQxLjgJCXtAWE1NWzEwXX0sIFskaW5wXSEKKysJdmVvcgkJQFhNTVs0XSwgQFhNTVsxMF0KKysJdnN0MS44CQl7QFhNTVs0XX0sIFskb3V0XSEKKysJY21wCQkkbGVuLCAjNAorKwlibG8JCS5MY3RyX2VuY19kb25lCisrCXZsZDEuOAkJe0BYTU1bMTFdfSwgWyRpbnBdIQorKwl2ZW9yCQlAWE1NWzZdLCBAWE1NWzExXQorKwl2c3QxLjgJCXtAWE1NWzZdfSwgWyRvdXRdIQorKwliZXEJCS5MY3RyX2VuY19kb25lCisrCXZsZDEuOAkJe0BYTU1bMTJdfSwgWyRpbnBdIQorKwl2ZW9yCQlAWE1NWzNdLCBAWE1NWzEyXQorKwl2c3QxLjgJCXtAWE1NWzNdfSwgWyRvdXRdIQorKwljbXAJCSRsZW4sICM2CisrCWJsbwkJLkxjdHJfZW5jX2RvbmUKKysJdmxkMS44CQl7QFhNTVsxM119LCBbJGlucF0hCisrCXZlb3IJCUBYTU1bN10sIEBYTU1bMTNdCisrCXZzdDEuOAkJe0BYTU1bN119LCBbJG91dF0hCisrCWJlcQkJLkxjdHJfZW5jX2RvbmUKKysJdmxkMS44CQl7QFhNTVsxNF19LCBbJGlucF0KKysJdmVvcgkJQFhNTVsyXSwgQFhNTVsxNF0KKysJdnN0MS44CQl7QFhNTVsyXX0sIFskb3V0XSEKKysKKysuTGN0cl9lbmNfZG9uZToKKysJdm1vdi5pMzIJcTAsICMwCisrCXZtb3YuaTMyCXExLCAjMAorKyNpZm5kZWYJQlNBRVNfQVNNX0VYVEVOREVEX0tFWQorKy5MY3RyX2VuY19iemVybzoJCQlAIHdpcGUga2V5IHNjaGVkdWxlIFtpZiBhbnldCisrCXZzdG1pYQkJJGtleXNjaGVkISwge3EwLXExfQorKwljbXAJCSRrZXlzY2hlZCwgJGZwCisrCWJuZQkJLkxjdHJfZW5jX2J6ZXJvCisrI2Vsc2UKKysJdnN0bWlhCQkka2V5c2NoZWQsIHtxMC1xMX0KKysjZW5kaWYKKysKKysJbW92CXNwLCAkZnAKKysJYWRkCXNwLCAjMHgxMAkJQCBhZGQgc3AsJGZwLCMweDEwIGlzIG5vIGdvb2QgZm9yIHRodW1iCisrCVZGUF9BQklfUE9QCisrCWxkbWlhCXNwISwge3I0LXIxMCwgcGN9CUAgcmV0dXJuCisrCisrLmFsaWduCTQKKysuTGN0cl9lbmNfc2hvcnQ6CisrCWxkcglpcCwgW3NwXQkJQCBjdHIgcG9pbnRlciBpcyBwYXNzZWQgb24gc3RhY2sKKysJc3RtZGIJc3AhLCB7cjQtcjgsIGxyfQorKworKwltb3YJcjQsICRpbnAJCUAgY29weSBhcmd1bWVudHMKKysJbW92CXI1LCAkb3V0CisrCW1vdglyNiwgJGxlbgorKwltb3YJcjcsICRrZXkKKysJbGRyCXI4LCBbaXAsICMxMl0JCUAgbG9hZCBjb3VudGVyIExTVworKwl2bGQxLjgJe0BYTU1bMV19LCBbaXBdCQlAIGxvYWQgd2hvbGUgY291bnRlciB2YWx1ZQorKyNpZmRlZiBfX0FSTUVMX18KKysJcmV2CXI4LCByOAorKyNlbmRpZgorKwlzdWIJc3AsIHNwLCAjMHgxMAorKwl2c3QxLjgJe0BYTU1bMV19LCBbc3AsOjY0XQlAIGNvcHkgY291bnRlciB2YWx1ZQorKwlzdWIJc3AsIHNwLCAjMHgxMAorKworKy5MY3RyX2VuY19zaG9ydF9sb29wOgorKwlhZGQJcjAsIHNwLCAjMHgxMAkJQCBpbnB1dCBjb3VudGVyIHZhbHVlCisrCW1vdglyMSwgc3AJCQlAIG91dHB1dCBvbiB0aGUgc3RhY2sKKysJbW92CXIyLCByNwkJCUAga2V5CisrCisrCWJsCUFFU19lbmNyeXB0CisrCisrCXZsZDEuOAl7QFhNTVswXX0sIFtyNF0hCUAgbG9hZCBpbnB1dAorKwl2bGQxLjgJe0BYTU1bMV19LCBbc3AsOjY0XQlAIGxvYWQgZW5jcnlwdGVkIGNvdW50ZXIKKysJYWRkCXI4LCByOCwgIzEKKysjaWZkZWYgX19BUk1FTF9fCisrCXJldglyMCwgcjgKKysJc3RyCXIwLCBbc3AsICMweDFjXQkJQCBuZXh0IGNvdW50ZXIgdmFsdWUKKysjZWxzZQorKwlzdHIJcjgsIFtzcCwgIzB4MWNdCQlAIG5leHQgY291bnRlciB2YWx1ZQorKyNlbmRpZgorKwl2ZW9yCUBYTU1bMF0sQFhNTVswXSxAWE1NWzFdCisrCXZzdDEuOAl7QFhNTVswXX0sIFtyNV0hCUAgc3RvcmUgb3V0cHV0CisrCXN1YnMJcjYsIHI2LCAjMQorKwlibmUJLkxjdHJfZW5jX3Nob3J0X2xvb3AKKysKKysJdm1vdi5pMzIJcTAsICMwCisrCXZtb3YuaTMyCXExLCAjMAorKwl2c3RtaWEJCXNwISwge3EwLXExfQorKworKwlsZG1pYQlzcCEsIHtyNC1yOCwgcGN9CisrLnNpemUJYnNhZXNfY3RyMzJfZW5jcnlwdF9ibG9ja3MsLi1ic2Flc19jdHIzMl9lbmNyeXB0X2Jsb2NrcworK19fXworK30KKyt7CisrIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworKyMgdm9pZCBic2Flc194dHNfW2VufGRlXWNyeXB0KGNvbnN0IGNoYXIgKmlucCxjaGFyICpvdXQsc2l6ZV90IGxlbiwKKysjCWNvbnN0IEFFU19LRVkgKmtleTEsIGNvbnN0IEFFU19LRVkgKmtleTIsCisrIwljb25zdCB1bnNpZ25lZCBjaGFyIGl2WzE2XSk7CisrIworK215ICgkaW5wLCRvdXQsJGxlbiwka2V5LCRyb3VuZHMsJG1hZ2ljLCRmcCk9KG1hcCgiciRfIiwoNy4uMTAsMS4uMykpKTsKKytteSAkY29uc3Q9InI2IjsJCSMgcmV0dXJuZWQgYnkgX2JzYWVzX2tleV9jb252ZXJ0CisrbXkgJHR3bWFzaz1AWE1NWzVdOworK215IEBUPUBYTU1bNi4uN107CisrCisrJGNvZGUuPTw8X19fOworKy5nbG9ibAlic2Flc194dHNfZW5jcnlwdAorKy50eXBlCWJzYWVzX3h0c19lbmNyeXB0LCVmdW5jdGlvbgorKy5hbGlnbgk0CisrYnNhZXNfeHRzX2VuY3J5cHQ6CisrCW1vdglpcCwgc3AKKysJc3RtZGIJc3AhLCB7cjQtcjEwLCBscn0JCUAgMHgyMAorKwlWRlBfQUJJX1BVU0gKKysJbW92CXI2LCBzcAkJCQlAIGZ1dHVyZSAkZnAKKysKKysJbW92CSRpbnAsIHIwCisrCW1vdgkkb3V0LCByMQorKwltb3YJJGxlbiwgcjIKKysJbW92CSRrZXksIHIzCisrCisrCXN1YglyMCwgc3AsICMweDEwCQkJQCAweDEwCisrCWJpYwlyMCwgIzB4ZgkJCUAgYWxpZ24gYXQgMTYgYnl0ZXMKKysJbW92CXNwLCByMAorKworKyNpZmRlZglYVFNfQ0hBSU5fVFdFQUsKKysJbGRyCXIwLCBbaXBdCQkJQCBwb2ludGVyIHRvIGlucHV0IHR3ZWFrCisrI2Vsc2UKKysJQCBnZW5lcmF0ZSBpbml0aWFsIHR3ZWFrCisrCWxkcglyMCwgW2lwLCAjNF0JCQlAIGl2W10KKysJbW92CXIxLCBzcAorKwlsZHIJcjIsIFtpcCwgIzBdCQkJQCBrZXkyCisrCWJsCUFFU19lbmNyeXB0CisrCW1vdglyMCxzcAkJCQlAIHBvaW50ZXIgdG8gaW5pdGlhbCB0d2VhaworKyNlbmRpZgorKworKwlsZHIJJHJvdW5kcywgWyRrZXksICMyNDBdCQlAIGdldCAjIG9mIHJvdW5kcworKwltb3YJJGZwLCByNgorKyNpZm5kZWYJQlNBRVNfQVNNX0VYVEVOREVEX0tFWQorKwlAIGFsbG9jYXRlIHRoZSBrZXkgc2NoZWR1bGUgb24gdGhlIHN0YWNrCisrCXN1YglyMTIsIHNwLCAkcm91bmRzLCBsc2wjNwkJQCAxMjggYnl0ZXMgcGVyIGlubmVyIHJvdW5kIGtleQorKwlAIGFkZAlyMTIsICNgMTI4LTMyYAkJCUAgc2l6ZSBvZiBiaXQtc2xpY2VkIGtleSBzY2hlZHVsZQorKwlzdWIJcjEyLCAjYDMyKzE2YAkJCUAgcGxhY2UgZm9yIHR3ZWFrWzldCisrCisrCUAgcG9wdWxhdGUgdGhlIGtleSBzY2hlZHVsZQorKwltb3YJcjQsICRrZXkJCQlAIHBhc3Mga2V5CisrCW1vdglyNSwgJHJvdW5kcwkJCUAgcGFzcyAjIG9mIHJvdW5kcworKwltb3YJc3AsIHIxMgorKwlhZGQJcjEyLCAjMHg5MAkJCUAgcGFzcyBrZXkgc2NoZWR1bGUKKysJYmwJX2JzYWVzX2tleV9jb252ZXJ0CisrCXZlb3IJQFhNTVs3XSwgQFhNTVs3XSwgQFhNTVsxNV0JQCBmaXggdXAgbGFzdCByb3VuZCBrZXkKKysJdnN0bWlhCXIxMiwge0BYTU1bN119CQkJQCBzYXZlIGxhc3Qgcm91bmQga2V5CisrI2Vsc2UKKysJbGRyCXIxMiwgWyRrZXksICMyNDRdCisrCWVvcnMJcjEyLCAjMQorKwliZXEJMGYKKysKKysJc3RyCXIxMiwgWyRrZXksICMyNDRdCisrCW1vdglyNCwgJGtleQkJCUAgcGFzcyBrZXkKKysJbW92CXI1LCAkcm91bmRzCQkJQCBwYXNzICMgb2Ygcm91bmRzCisrCWFkZAlyMTIsICRrZXksICMyNDgJCQlAIHBhc3Mga2V5IHNjaGVkdWxlCisrCWJsCV9ic2Flc19rZXlfY29udmVydAorKwl2ZW9yCUBYTU1bN10sIEBYTU1bN10sIEBYTU1bMTVdCUAgZml4IHVwIGxhc3Qgcm91bmQga2V5CisrCXZzdG1pYQlyMTIsIHtAWE1NWzddfQorKworKy5hbGlnbgkyCisrMDoJc3ViCXNwLCAjMHg5MAkJCUAgcGxhY2UgZm9yIHR3ZWFrWzldCisrI2VuZGlmCisrCisrCXZsZDEuOAl7QFhNTVs4XX0sIFtyMF0JCQlAIGluaXRpYWwgdHdlYWsKKysJYWRyCSRtYWdpYywgLkx4dHNfbWFnaWMKKysKKysJc3VicwkkbGVuLCAjMHg4MAorKwlibG8JLkx4dHNfZW5jX3Nob3J0CisrCWIJLkx4dHNfZW5jX2xvb3AKKysKKysuYWxpZ24JNAorKy5MeHRzX2VuY19sb29wOgorKwl2bGRtaWEJCSRtYWdpYywgeyR0d21hc2t9CUAgbG9hZCBYVFMgbWFnaWMKKysJdnNoci5zNjQJQFRbMF0sIEBYTU1bOF0sICM2MworKwltb3YJCXIwLCBzcAorKwl2YW5kCQlAVFswXSwgQFRbMF0sICR0d21hc2sKKytfX18KKytmb3IoJGk9OTskaTwxNjskaSsrKSB7CisrJGNvZGUuPTw8X19fOworKwl2YWRkLnU2NAlAWE1NWyRpXSwgQFhNTVskaS0xXSwgQFhNTVskaS0xXQorKwl2c3QxLjY0CQl7QFhNTVskaS0xXX0sIFtyMCw6MTI4XSEKKysJdnN3cAkJYCZEaGkoIkBUWzBdIilgLGAmRGxvKCJAVFswXSIpYAorKwl2c2hyLnM2NAlAVFsxXSwgQFhNTVskaV0sICM2MworKwl2ZW9yCQlAWE1NWyRpXSwgQFhNTVskaV0sIEBUWzBdCisrCXZhbmQJCUBUWzFdLCBAVFsxXSwgJHR3bWFzaworK19fXworKwlAVD1yZXZlcnNlKEBUKTsKKysKKyskY29kZS49PDxfX18gaWYgKCRpPj0xMCk7CisrCXZsZDEuOAkJe0BYTU1bJGktMTBdfSwgWyRpbnBdIQorK19fXworKyRjb2RlLj08PF9fXyBpZiAoJGk+PTExKTsKKysJdmVvcgkJQFhNTVskaS0xMV0sIEBYTU1bJGktMTFdLCBAWE1NWyRpLTNdCisrX19fCisrfQorKyRjb2RlLj08PF9fXzsKKysJdmFkZC51NjQJQFhNTVs4XSwgQFhNTVsxNV0sIEBYTU1bMTVdCisrCXZzdDEuNjQJCXtAWE1NWzE1XX0sIFtyMCw6MTI4XSEKKysJdnN3cAkJYCZEaGkoIkBUWzBdIilgLGAmRGxvKCJAVFswXSIpYAorKwl2ZW9yCQlAWE1NWzhdLCBAWE1NWzhdLCBAVFswXQorKwl2c3QxLjY0CQl7QFhNTVs4XX0sIFtyMCw6MTI4XQkJQCBuZXh0IHJvdW5kIHR3ZWFrCisrCisrCXZsZDEuOAkJe0BYTU1bNl0tQFhNTVs3XX0sIFskaW5wXSEKKysJdmVvcgkJQFhNTVs1XSwgQFhNTVs1XSwgQFhNTVsxM10KKysjaWZuZGVmCUJTQUVTX0FTTV9FWFRFTkRFRF9LRVkKKysJYWRkCQlyNCwgc3AsICMweDkwCQkJQCBwYXNzIGtleSBzY2hlZHVsZQorKyNlbHNlCisrCWFkZAkJcjQsICRrZXksICMyNDgJCQlAIHBhc3Mga2V5IHNjaGVkdWxlCisrI2VuZGlmCisrCXZlb3IJCUBYTU1bNl0sIEBYTU1bNl0sIEBYTU1bMTRdCisrCW1vdgkJcjUsICRyb3VuZHMJCQlAIHBhc3Mgcm91bmRzCisrCXZlb3IJCUBYTU1bN10sIEBYTU1bN10sIEBYTU1bMTVdCisrCW1vdgkJcjAsIHNwCisrCisrCWJsCQlfYnNhZXNfZW5jcnlwdDgKKysKKysJdmxkMS42NAkJe0BYTU1bIDhdLUBYTU1bIDldfSwgW3IwLDoxMjhdIQorKwl2bGQxLjY0CQl7QFhNTVsxMF0tQFhNTVsxMV19LCBbcjAsOjEyOF0hCisrCXZlb3IJCUBYTU1bMF0sIEBYTU1bMF0sIEBYTU1bIDhdCisrCXZsZDEuNjQJCXtAWE1NWzEyXS1AWE1NWzEzXX0sIFtyMCw6MTI4XSEKKysJdmVvcgkJQFhNTVsxXSwgQFhNTVsxXSwgQFhNTVsgOV0KKysJdmVvcgkJQFhNTVs4XSwgQFhNTVs0XSwgQFhNTVsxMF0KKysJdnN0MS44CQl7QFhNTVswXS1AWE1NWzFdfSwgWyRvdXRdIQorKwl2ZW9yCQlAWE1NWzldLCBAWE1NWzZdLCBAWE1NWzExXQorKwl2bGQxLjY0CQl7QFhNTVsxNF0tQFhNTVsxNV19LCBbcjAsOjEyOF0hCisrCXZlb3IJCUBYTU1bMTBdLCBAWE1NWzNdLCBAWE1NWzEyXQorKwl2c3QxLjgJCXtAWE1NWzhdLUBYTU1bOV19LCBbJG91dF0hCisrCXZlb3IJCUBYTU1bMTFdLCBAWE1NWzddLCBAWE1NWzEzXQorKwl2ZW9yCQlAWE1NWzEyXSwgQFhNTVsyXSwgQFhNTVsxNF0KKysJdnN0MS44CQl7QFhNTVsxMF0tQFhNTVsxMV19LCBbJG91dF0hCisrCXZlb3IJCUBYTU1bMTNdLCBAWE1NWzVdLCBAWE1NWzE1XQorKwl2c3QxLjgJCXtAWE1NWzEyXS1AWE1NWzEzXX0sIFskb3V0XSEKKysKKysJdmxkMS42NAkJe0BYTU1bOF19LCBbcjAsOjEyOF0JCUAgbmV4dCByb3VuZCB0d2VhaworKworKwlzdWJzCQkkbGVuLCAjMHg4MAorKwlicGwJCS5MeHRzX2VuY19sb29wCisrCisrLkx4dHNfZW5jX3Nob3J0OgorKwlhZGRzCQkkbGVuLCAjMHg3MAorKwlibWkJCS5MeHRzX2VuY19kb25lCisrCisrCXZsZG1pYQkJJG1hZ2ljLCB7JHR3bWFza30JQCBsb2FkIFhUUyBtYWdpYworKwl2c2hyLnM2NAlAVFswXSwgQFhNTVs4XSwgIzYzCisrCW1vdgkJcjAsIHNwCisrCXZhbmQJCUBUWzBdLCBAVFswXSwgJHR3bWFzaworK19fXworK2ZvcigkaT05OyRpPDE2OyRpKyspIHsKKyskY29kZS49PDxfX187CisrCXZhZGQudTY0CUBYTU1bJGldLCBAWE1NWyRpLTFdLCBAWE1NWyRpLTFdCisrCXZzdDEuNjQJCXtAWE1NWyRpLTFdfSwgW3IwLDoxMjhdIQorKwl2c3dwCQlgJkRoaSgiQFRbMF0iKWAsYCZEbG8oIkBUWzBdIilgCisrCXZzaHIuczY0CUBUWzFdLCBAWE1NWyRpXSwgIzYzCisrCXZlb3IJCUBYTU1bJGldLCBAWE1NWyRpXSwgQFRbMF0KKysJdmFuZAkJQFRbMV0sIEBUWzFdLCAkdHdtYXNrCisrX19fCisrCUBUPXJldmVyc2UoQFQpOworKworKyRjb2RlLj08PF9fXyBpZiAoJGk+PTEwKTsKKysJdmxkMS44CQl7QFhNTVskaS0xMF19LCBbJGlucF0hCisrCXN1YnMJCSRsZW4sICMweDEwCisrCWJtaQkJLkx4dHNfZW5jX2AkaS05YAorK19fXworKyRjb2RlLj08PF9fXyBpZiAoJGk+PTExKTsKKysJdmVvcgkJQFhNTVskaS0xMV0sIEBYTU1bJGktMTFdLCBAWE1NWyRpLTNdCisrX19fCisrfQorKyRjb2RlLj08PF9fXzsKKysJc3ViCQkkbGVuLCAjMHgxMAorKwl2c3QxLjY0CQl7QFhNTVsxNV19LCBbcjAsOjEyOF0JCUAgbmV4dCByb3VuZCB0d2VhaworKworKwl2bGQxLjgJCXtAWE1NWzZdfSwgWyRpbnBdIQorKwl2ZW9yCQlAWE1NWzVdLCBAWE1NWzVdLCBAWE1NWzEzXQorKyNpZm5kZWYJQlNBRVNfQVNNX0VYVEVOREVEX0tFWQorKwlhZGQJCXI0LCBzcCwgIzB4OTAJCQlAIHBhc3Mga2V5IHNjaGVkdWxlCisrI2Vsc2UKKysJYWRkCQlyNCwgJGtleSwgIzI0OAkJCUAgcGFzcyBrZXkgc2NoZWR1bGUKKysjZW5kaWYKKysJdmVvcgkJQFhNTVs2XSwgQFhNTVs2XSwgQFhNTVsxNF0KKysJbW92CQlyNSwgJHJvdW5kcwkJCUAgcGFzcyByb3VuZHMKKysJbW92CQlyMCwgc3AKKysKKysJYmwJCV9ic2Flc19lbmNyeXB0OAorKworKwl2bGQxLjY0CQl7QFhNTVsgOF0tQFhNTVsgOV19LCBbcjAsOjEyOF0hCisrCXZsZDEuNjQJCXtAWE1NWzEwXS1AWE1NWzExXX0sIFtyMCw6MTI4XSEKKysJdmVvcgkJQFhNTVswXSwgQFhNTVswXSwgQFhNTVsgOF0KKysJdmxkMS42NAkJe0BYTU1bMTJdLUBYTU1bMTNdfSwgW3IwLDoxMjhdIQorKwl2ZW9yCQlAWE1NWzFdLCBAWE1NWzFdLCBAWE1NWyA5XQorKwl2ZW9yCQlAWE1NWzhdLCBAWE1NWzRdLCBAWE1NWzEwXQorKwl2c3QxLjgJCXtAWE1NWzBdLUBYTU1bMV19LCBbJG91dF0hCisrCXZlb3IJCUBYTU1bOV0sIEBYTU1bNl0sIEBYTU1bMTFdCisrCXZsZDEuNjQJCXtAWE1NWzE0XX0sIFtyMCw6MTI4XSEKKysJdmVvcgkJQFhNTVsxMF0sIEBYTU1bM10sIEBYTU1bMTJdCisrCXZzdDEuOAkJe0BYTU1bOF0tQFhNTVs5XX0sIFskb3V0XSEKKysJdmVvcgkJQFhNTVsxMV0sIEBYTU1bN10sIEBYTU1bMTNdCisrCXZlb3IJCUBYTU1bMTJdLCBAWE1NWzJdLCBAWE1NWzE0XQorKwl2c3QxLjgJCXtAWE1NWzEwXS1AWE1NWzExXX0sIFskb3V0XSEKKysJdnN0MS44CQl7QFhNTVsxMl19LCBbJG91dF0hCisrCisrCXZsZDEuNjQJCXtAWE1NWzhdfSwgW3IwLDoxMjhdCQlAIG5leHQgcm91bmQgdHdlYWsKKysJYgkJLkx4dHNfZW5jX2RvbmUKKysuYWxpZ24JNAorKy5MeHRzX2VuY182OgorKwl2c3QxLjY0CQl7QFhNTVsxNF19LCBbcjAsOjEyOF0JCUAgbmV4dCByb3VuZCB0d2VhaworKworKwl2ZW9yCQlAWE1NWzRdLCBAWE1NWzRdLCBAWE1NWzEyXQorKyNpZm5kZWYJQlNBRVNfQVNNX0VYVEVOREVEX0tFWQorKwlhZGQJCXI0LCBzcCwgIzB4OTAJCQlAIHBhc3Mga2V5IHNjaGVkdWxlCisrI2Vsc2UKKysJYWRkCQlyNCwgJGtleSwgIzI0OAkJCUAgcGFzcyBrZXkgc2NoZWR1bGUKKysjZW5kaWYKKysJdmVvcgkJQFhNTVs1XSwgQFhNTVs1XSwgQFhNTVsxM10KKysJbW92CQlyNSwgJHJvdW5kcwkJCUAgcGFzcyByb3VuZHMKKysJbW92CQlyMCwgc3AKKysKKysJYmwJCV9ic2Flc19lbmNyeXB0OAorKworKwl2bGQxLjY0CQl7QFhNTVsgOF0tQFhNTVsgOV19LCBbcjAsOjEyOF0hCisrCXZsZDEuNjQJCXtAWE1NWzEwXS1AWE1NWzExXX0sIFtyMCw6MTI4XSEKKysJdmVvcgkJQFhNTVswXSwgQFhNTVswXSwgQFhNTVsgOF0KKysJdmxkMS42NAkJe0BYTU1bMTJdLUBYTU1bMTNdfSwgW3IwLDoxMjhdIQorKwl2ZW9yCQlAWE1NWzFdLCBAWE1NWzFdLCBAWE1NWyA5XQorKwl2ZW9yCQlAWE1NWzhdLCBAWE1NWzRdLCBAWE1NWzEwXQorKwl2c3QxLjgJCXtAWE1NWzBdLUBYTU1bMV19LCBbJG91dF0hCisrCXZlb3IJCUBYTU1bOV0sIEBYTU1bNl0sIEBYTU1bMTFdCisrCXZlb3IJCUBYTU1bMTBdLCBAWE1NWzNdLCBAWE1NWzEyXQorKwl2c3QxLjgJCXtAWE1NWzhdLUBYTU1bOV19LCBbJG91dF0hCisrCXZlb3IJCUBYTU1bMTFdLCBAWE1NWzddLCBAWE1NWzEzXQorKwl2c3QxLjgJCXtAWE1NWzEwXS1AWE1NWzExXX0sIFskb3V0XSEKKysKKysJdmxkMS42NAkJe0BYTU1bOF19LCBbcjAsOjEyOF0JCUAgbmV4dCByb3VuZCB0d2VhaworKwliCQkuTHh0c19lbmNfZG9uZQorKworK0AgcHV0IHRoaXMgaW4gcmFuZ2UgZm9yIGJvdGggQVJNIGFuZCBUaHVtYiBtb2RlIGFkciBpbnN0cnVjdGlvbnMKKysuYWxpZ24JNQorKy5MeHRzX21hZ2ljOgorKwkucXVhZAkxLCAweDg3CisrCisrLmFsaWduCTUKKysuTHh0c19lbmNfNToKKysJdnN0MS42NAkJe0BYTU1bMTNdfSwgW3IwLDoxMjhdCQlAIG5leHQgcm91bmQgdHdlYWsKKysKKysJdmVvcgkJQFhNTVszXSwgQFhNTVszXSwgQFhNTVsxMV0KKysjaWZuZGVmCUJTQUVTX0FTTV9FWFRFTkRFRF9LRVkKKysJYWRkCQlyNCwgc3AsICMweDkwCQkJQCBwYXNzIGtleSBzY2hlZHVsZQorKyNlbHNlCisrCWFkZAkJcjQsICRrZXksICMyNDgJCQlAIHBhc3Mga2V5IHNjaGVkdWxlCisrI2VuZGlmCisrCXZlb3IJCUBYTU1bNF0sIEBYTU1bNF0sIEBYTU1bMTJdCisrCW1vdgkJcjUsICRyb3VuZHMJCQlAIHBhc3Mgcm91bmRzCisrCW1vdgkJcjAsIHNwCisrCisrCWJsCQlfYnNhZXNfZW5jcnlwdDgKKysKKysJdmxkMS42NAkJe0BYTU1bIDhdLUBYTU1bIDldfSwgW3IwLDoxMjhdIQorKwl2bGQxLjY0CQl7QFhNTVsxMF0tQFhNTVsxMV19LCBbcjAsOjEyOF0hCisrCXZlb3IJCUBYTU1bMF0sIEBYTU1bMF0sIEBYTU1bIDhdCisrCXZsZDEuNjQJCXtAWE1NWzEyXX0sIFtyMCw6MTI4XSEKKysJdmVvcgkJQFhNTVsxXSwgQFhNTVsxXSwgQFhNTVsgOV0KKysJdmVvcgkJQFhNTVs4XSwgQFhNTVs0XSwgQFhNTVsxMF0KKysJdnN0MS44CQl7QFhNTVswXS1AWE1NWzFdfSwgWyRvdXRdIQorKwl2ZW9yCQlAWE1NWzldLCBAWE1NWzZdLCBAWE1NWzExXQorKwl2ZW9yCQlAWE1NWzEwXSwgQFhNTVszXSwgQFhNTVsxMl0KKysJdnN0MS44CQl7QFhNTVs4XS1AWE1NWzldfSwgWyRvdXRdIQorKwl2c3QxLjgJCXtAWE1NWzEwXX0sIFskb3V0XSEKKysKKysJdmxkMS42NAkJe0BYTU1bOF19LCBbcjAsOjEyOF0JCUAgbmV4dCByb3VuZCB0d2VhaworKwliCQkuTHh0c19lbmNfZG9uZQorKy5hbGlnbgk0CisrLkx4dHNfZW5jXzQ6CisrCXZzdDEuNjQJCXtAWE1NWzEyXX0sIFtyMCw6MTI4XQkJQCBuZXh0IHJvdW5kIHR3ZWFrCisrCisrCXZlb3IJCUBYTU1bMl0sIEBYTU1bMl0sIEBYTU1bMTBdCisrI2lmbmRlZglCU0FFU19BU01fRVhURU5ERURfS0VZCisrCWFkZAkJcjQsIHNwLCAjMHg5MAkJCUAgcGFzcyBrZXkgc2NoZWR1bGUKKysjZWxzZQorKwlhZGQJCXI0LCAka2V5LCAjMjQ4CQkJQCBwYXNzIGtleSBzY2hlZHVsZQorKyNlbmRpZgorKwl2ZW9yCQlAWE1NWzNdLCBAWE1NWzNdLCBAWE1NWzExXQorKwltb3YJCXI1LCAkcm91bmRzCQkJQCBwYXNzIHJvdW5kcworKwltb3YJCXIwLCBzcAorKworKwlibAkJX2JzYWVzX2VuY3J5cHQ4CisrCisrCXZsZDEuNjQJCXtAWE1NWyA4XS1AWE1NWyA5XX0sIFtyMCw6MTI4XSEKKysJdmxkMS42NAkJe0BYTU1bMTBdLUBYTU1bMTFdfSwgW3IwLDoxMjhdIQorKwl2ZW9yCQlAWE1NWzBdLCBAWE1NWzBdLCBAWE1NWyA4XQorKwl2ZW9yCQlAWE1NWzFdLCBAWE1NWzFdLCBAWE1NWyA5XQorKwl2ZW9yCQlAWE1NWzhdLCBAWE1NWzRdLCBAWE1NWzEwXQorKwl2c3QxLjgJCXtAWE1NWzBdLUBYTU1bMV19LCBbJG91dF0hCisrCXZlb3IJCUBYTU1bOV0sIEBYTU1bNl0sIEBYTU1bMTFdCisrCXZzdDEuOAkJe0BYTU1bOF0tQFhNTVs5XX0sIFskb3V0XSEKKysKKysJdmxkMS42NAkJe0BYTU1bOF19LCBbcjAsOjEyOF0JCUAgbmV4dCByb3VuZCB0d2VhaworKwliCQkuTHh0c19lbmNfZG9uZQorKy5hbGlnbgk0CisrLkx4dHNfZW5jXzM6CisrCXZzdDEuNjQJCXtAWE1NWzExXX0sIFtyMCw6MTI4XQkJQCBuZXh0IHJvdW5kIHR3ZWFrCisrCisrCXZlb3IJCUBYTU1bMV0sIEBYTU1bMV0sIEBYTU1bOV0KKysjaWZuZGVmCUJTQUVTX0FTTV9FWFRFTkRFRF9LRVkKKysJYWRkCQlyNCwgc3AsICMweDkwCQkJQCBwYXNzIGtleSBzY2hlZHVsZQorKyNlbHNlCisrCWFkZAkJcjQsICRrZXksICMyNDgJCQlAIHBhc3Mga2V5IHNjaGVkdWxlCisrI2VuZGlmCisrCXZlb3IJCUBYTU1bMl0sIEBYTU1bMl0sIEBYTU1bMTBdCisrCW1vdgkJcjUsICRyb3VuZHMJCQlAIHBhc3Mgcm91bmRzCisrCW1vdgkJcjAsIHNwCisrCisrCWJsCQlfYnNhZXNfZW5jcnlwdDgKKysKKysJdmxkMS42NAkJe0BYTU1bOF0tQFhNTVs5XX0sIFtyMCw6MTI4XSEKKysJdmxkMS42NAkJe0BYTU1bMTBdfSwgW3IwLDoxMjhdIQorKwl2ZW9yCQlAWE1NWzBdLCBAWE1NWzBdLCBAWE1NWyA4XQorKwl2ZW9yCQlAWE1NWzFdLCBAWE1NWzFdLCBAWE1NWyA5XQorKwl2ZW9yCQlAWE1NWzhdLCBAWE1NWzRdLCBAWE1NWzEwXQorKwl2c3QxLjgJCXtAWE1NWzBdLUBYTU1bMV19LCBbJG91dF0hCisrCXZzdDEuOAkJe0BYTU1bOF19LCBbJG91dF0hCisrCisrCXZsZDEuNjQJCXtAWE1NWzhdfSwgW3IwLDoxMjhdCQlAIG5leHQgcm91bmQgdHdlYWsKKysJYgkJLkx4dHNfZW5jX2RvbmUKKysuYWxpZ24JNAorKy5MeHRzX2VuY18yOgorKwl2c3QxLjY0CQl7QFhNTVsxMF19LCBbcjAsOjEyOF0JCUAgbmV4dCByb3VuZCB0d2VhaworKworKwl2ZW9yCQlAWE1NWzBdLCBAWE1NWzBdLCBAWE1NWzhdCisrI2lmbmRlZglCU0FFU19BU01fRVhURU5ERURfS0VZCisrCWFkZAkJcjQsIHNwLCAjMHg5MAkJCUAgcGFzcyBrZXkgc2NoZWR1bGUKKysjZWxzZQorKwlhZGQJCXI0LCAka2V5LCAjMjQ4CQkJQCBwYXNzIGtleSBzY2hlZHVsZQorKyNlbmRpZgorKwl2ZW9yCQlAWE1NWzFdLCBAWE1NWzFdLCBAWE1NWzldCisrCW1vdgkJcjUsICRyb3VuZHMJCQlAIHBhc3Mgcm91bmRzCisrCW1vdgkJcjAsIHNwCisrCisrCWJsCQlfYnNhZXNfZW5jcnlwdDgKKysKKysJdmxkMS42NAkJe0BYTU1bOF0tQFhNTVs5XX0sIFtyMCw6MTI4XSEKKysJdmVvcgkJQFhNTVswXSwgQFhNTVswXSwgQFhNTVsgOF0KKysJdmVvcgkJQFhNTVsxXSwgQFhNTVsxXSwgQFhNTVsgOV0KKysJdnN0MS44CQl7QFhNTVswXS1AWE1NWzFdfSwgWyRvdXRdIQorKworKwl2bGQxLjY0CQl7QFhNTVs4XX0sIFtyMCw6MTI4XQkJQCBuZXh0IHJvdW5kIHR3ZWFrCisrCWIJCS5MeHRzX2VuY19kb25lCisrLmFsaWduCTQKKysuTHh0c19lbmNfMToKKysJbW92CQlyMCwgc3AKKysJdmVvcgkJQFhNTVswXSwgQFhNTVs4XQorKwltb3YJCXIxLCBzcAorKwl2c3QxLjgJCXtAWE1NWzBdfSwgW3NwLDoxMjhdCisrCW1vdgkJcjIsICRrZXkKKysJbW92CQlyNCwgJGZwCQkJCUAgcHJlc2VydmUgZnAKKysKKysJYmwJCUFFU19lbmNyeXB0CisrCisrCXZsZDEuOAkJe0BYTU1bMF19LCBbc3AsOjEyOF0KKysJdmVvcgkJQFhNTVswXSwgQFhNTVswXSwgQFhNTVs4XQorKwl2c3QxLjgJCXtAWE1NWzBdfSwgWyRvdXRdIQorKwltb3YJCSRmcCwgcjQKKysKKysJdm1vdgkJQFhNTVs4XSwgQFhNTVs5XQkJQCBuZXh0IHJvdW5kIHR3ZWFrCisrCisrLkx4dHNfZW5jX2RvbmU6CisrI2lmbmRlZglYVFNfQ0hBSU5fVFdFQUsKKysJYWRkcwkJJGxlbiwgIzB4MTAKKysJYmVxCQkuTHh0c19lbmNfcmV0CisrCXN1YgkJcjYsICRvdXQsICMweDEwCisrCisrLkx4dHNfZW5jX3N0ZWFsOgorKwlsZHJiCQlyMCwgWyRpbnBdLCAjMQorKwlsZHJiCQlyMSwgWyRvdXQsICMtMHgxMF0KKysJc3RyYgkJcjAsIFskb3V0LCAjLTB4MTBdCisrCXN0cmIJCXIxLCBbJG91dF0sICMxCisrCisrCXN1YnMJCSRsZW4sICMxCisrCWJoaQkJLkx4dHNfZW5jX3N0ZWFsCisrCisrCXZsZDEuOAkJe0BYTU1bMF19LCBbcjZdCisrCW1vdgkJcjAsIHNwCisrCXZlb3IJCUBYTU1bMF0sIEBYTU1bMF0sIEBYTU1bOF0KKysJbW92CQlyMSwgc3AKKysJdnN0MS44CQl7QFhNTVswXX0sIFtzcCw6MTI4XQorKwltb3YJCXIyLCAka2V5CisrCW1vdgkJcjQsICRmcAkJCUAgcHJlc2VydmUgZnAKKysKKysJYmwJCUFFU19lbmNyeXB0CisrCisrCXZsZDEuOAkJe0BYTU1bMF19LCBbc3AsOjEyOF0KKysJdmVvcgkJQFhNTVswXSwgQFhNTVswXSwgQFhNTVs4XQorKwl2c3QxLjgJCXtAWE1NWzBdfSwgW3I2XQorKwltb3YJCSRmcCwgcjQKKysjZW5kaWYKKysKKysuTHh0c19lbmNfcmV0OgorKwliaWMJCXIwLCAkZnAsICMweGYKKysJdm1vdi5pMzIJcTAsICMwCisrCXZtb3YuaTMyCXExLCAjMAorKyNpZmRlZglYVFNfQ0hBSU5fVFdFQUsKKysJbGRyCQlyMSwgWyRmcCwgIzB4MjArVkZQX0FCSV9GUkFNRV0JQCBjaGFpbiB0d2VhaworKyNlbmRpZgorKy5MeHRzX2VuY19iemVybzoJCQkJQCB3aXBlIGtleSBzY2hlZHVsZSBbaWYgYW55XQorKwl2c3RtaWEJCXNwISwge3EwLXExfQorKwljbXAJCXNwLCByMAorKwlibmUJCS5MeHRzX2VuY19iemVybworKworKwltb3YJCXNwLCAkZnAKKysjaWZkZWYJWFRTX0NIQUlOX1RXRUFLCisrCXZzdDEuOAkJe0BYTU1bOF19LCBbcjFdCisrI2VuZGlmCisrCVZGUF9BQklfUE9QCisrCWxkbWlhCQlzcCEsIHtyNC1yMTAsIHBjfQlAIHJldHVybgorKworKy5zaXplCWJzYWVzX3h0c19lbmNyeXB0LC4tYnNhZXNfeHRzX2VuY3J5cHQKKysKKysuZ2xvYmwJYnNhZXNfeHRzX2RlY3J5cHQKKysudHlwZQlic2Flc194dHNfZGVjcnlwdCwlZnVuY3Rpb24KKysuYWxpZ24JNAorK2JzYWVzX3h0c19kZWNyeXB0OgorKwltb3YJaXAsIHNwCisrCXN0bWRiCXNwISwge3I0LXIxMCwgbHJ9CQlAIDB4MjAKKysJVkZQX0FCSV9QVVNICisrCW1vdglyNiwgc3AJCQkJQCBmdXR1cmUgJGZwCisrCisrCW1vdgkkaW5wLCByMAorKwltb3YJJG91dCwgcjEKKysJbW92CSRsZW4sIHIyCisrCW1vdgkka2V5LCByMworKworKwlzdWIJcjAsIHNwLCAjMHgxMAkJCUAgMHgxMAorKwliaWMJcjAsICMweGYJCQlAIGFsaWduIGF0IDE2IGJ5dGVzCisrCW1vdglzcCwgcjAKKysKKysjaWZkZWYJWFRTX0NIQUlOX1RXRUFLCisrCWxkcglyMCwgW2lwXQkJCUAgcG9pbnRlciB0byBpbnB1dCB0d2VhaworKyNlbHNlCisrCUAgZ2VuZXJhdGUgaW5pdGlhbCB0d2VhaworKwlsZHIJcjAsIFtpcCwgIzRdCQkJQCBpdltdCisrCW1vdglyMSwgc3AKKysJbGRyCXIyLCBbaXAsICMwXQkJCUAga2V5MgorKwlibAlBRVNfZW5jcnlwdAorKwltb3YJcjAsIHNwCQkJCUAgcG9pbnRlciB0byBpbml0aWFsIHR3ZWFrCisrI2VuZGlmCisrCisrCWxkcgkkcm91bmRzLCBbJGtleSwgIzI0MF0JCUAgZ2V0ICMgb2Ygcm91bmRzCisrCW1vdgkkZnAsIHI2CisrI2lmbmRlZglCU0FFU19BU01fRVhURU5ERURfS0VZCisrCUAgYWxsb2NhdGUgdGhlIGtleSBzY2hlZHVsZSBvbiB0aGUgc3RhY2sKKysJc3ViCXIxMiwgc3AsICRyb3VuZHMsIGxzbCM3CQlAIDEyOCBieXRlcyBwZXIgaW5uZXIgcm91bmQga2V5CisrCUAgYWRkCXIxMiwgI2AxMjgtMzJgCQkJQCBzaXplIG9mIGJpdC1zbGljZWQga2V5IHNjaGVkdWxlCisrCXN1YglyMTIsICNgMzIrMTZgCQkJQCBwbGFjZSBmb3IgdHdlYWtbOV0KKysKKysJQCBwb3B1bGF0ZSB0aGUga2V5IHNjaGVkdWxlCisrCW1vdglyNCwgJGtleQkJCUAgcGFzcyBrZXkKKysJbW92CXI1LCAkcm91bmRzCQkJQCBwYXNzICMgb2Ygcm91bmRzCisrCW1vdglzcCwgcjEyCisrCWFkZAlyMTIsICMweDkwCQkJQCBwYXNzIGtleSBzY2hlZHVsZQorKwlibAlfYnNhZXNfa2V5X2NvbnZlcnQKKysJYWRkCXI0LCBzcCwgIzB4OTAKKysJdmxkbWlhCXI0LCB7QFhNTVs2XX0KKysJdnN0bWlhCXIxMiwgIHtAWE1NWzE1XX0JCUAgc2F2ZSBsYXN0IHJvdW5kIGtleQorKwl2ZW9yCUBYTU1bN10sIEBYTU1bN10sIEBYTU1bNl0JQCBmaXggdXAgcm91bmQgMCBrZXkKKysJdnN0bWlhCXI0LCB7QFhNTVs3XX0KKysjZWxzZQorKwlsZHIJcjEyLCBbJGtleSwgIzI0NF0KKysJZW9ycwlyMTIsICMxCisrCWJlcQkwZgorKworKwlzdHIJcjEyLCBbJGtleSwgIzI0NF0KKysJbW92CXI0LCAka2V5CQkJQCBwYXNzIGtleQorKwltb3YJcjUsICRyb3VuZHMJCQlAIHBhc3MgIyBvZiByb3VuZHMKKysJYWRkCXIxMiwgJGtleSwgIzI0OAkJCUAgcGFzcyBrZXkgc2NoZWR1bGUKKysJYmwJX2JzYWVzX2tleV9jb252ZXJ0CisrCWFkZAlyNCwgJGtleSwgIzI0OAorKwl2bGRtaWEJcjQsIHtAWE1NWzZdfQorKwl2c3RtaWEJcjEyLCAge0BYTU1bMTVdfQkJQCBzYXZlIGxhc3Qgcm91bmQga2V5CisrCXZlb3IJQFhNTVs3XSwgQFhNTVs3XSwgQFhNTVs2XQlAIGZpeCB1cCByb3VuZCAwIGtleQorKwl2c3RtaWEJcjQsIHtAWE1NWzddfQorKworKy5hbGlnbgkyCisrMDoJc3ViCXNwLCAjMHg5MAkJCUAgcGxhY2UgZm9yIHR3ZWFrWzldCisrI2VuZGlmCisrCXZsZDEuOAl7QFhNTVs4XX0sIFtyMF0JCQlAIGluaXRpYWwgdHdlYWsKKysJYWRyCSRtYWdpYywgLkx4dHNfbWFnaWMKKysKKysJdHN0CSRsZW4sICMweGYJCQlAIGlmIG5vdCBtdWx0aXBsZSBvZiAxNgorKwlpdAluZQkJCQlAIFRodW1iMiB0aGluZywgc2FuaXR5IGNoZWNrIGluIEFSTQorKwlzdWJuZQkkbGVuLCAjMHgxMAkJCUAgc3VidHJhY3QgYW5vdGhlciAxNiBieXRlcworKwlzdWJzCSRsZW4sICMweDgwCisrCisrCWJsbwkuTHh0c19kZWNfc2hvcnQKKysJYgkuTHh0c19kZWNfbG9vcAorKworKy5hbGlnbgk0CisrLkx4dHNfZGVjX2xvb3A6CisrCXZsZG1pYQkJJG1hZ2ljLCB7JHR3bWFza30JQCBsb2FkIFhUUyBtYWdpYworKwl2c2hyLnM2NAlAVFswXSwgQFhNTVs4XSwgIzYzCisrCW1vdgkJcjAsIHNwCisrCXZhbmQJCUBUWzBdLCBAVFswXSwgJHR3bWFzaworK19fXworK2ZvcigkaT05OyRpPDE2OyRpKyspIHsKKyskY29kZS49PDxfX187CisrCXZhZGQudTY0CUBYTU1bJGldLCBAWE1NWyRpLTFdLCBAWE1NWyRpLTFdCisrCXZzdDEuNjQJCXtAWE1NWyRpLTFdfSwgW3IwLDoxMjhdIQorKwl2c3dwCQlgJkRoaSgiQFRbMF0iKWAsYCZEbG8oIkBUWzBdIilgCisrCXZzaHIuczY0CUBUWzFdLCBAWE1NWyRpXSwgIzYzCisrCXZlb3IJCUBYTU1bJGldLCBAWE1NWyRpXSwgQFRbMF0KKysJdmFuZAkJQFRbMV0sIEBUWzFdLCAkdHdtYXNrCisrX19fCisrCUBUPXJldmVyc2UoQFQpOworKworKyRjb2RlLj08PF9fXyBpZiAoJGk+PTEwKTsKKysJdmxkMS44CQl7QFhNTVskaS0xMF19LCBbJGlucF0hCisrX19fCisrJGNvZGUuPTw8X19fIGlmICgkaT49MTEpOworKwl2ZW9yCQlAWE1NWyRpLTExXSwgQFhNTVskaS0xMV0sIEBYTU1bJGktM10KKytfX18KKyt9CisrJGNvZGUuPTw8X19fOworKwl2YWRkLnU2NAlAWE1NWzhdLCBAWE1NWzE1XSwgQFhNTVsxNV0KKysJdnN0MS42NAkJe0BYTU1bMTVdfSwgW3IwLDoxMjhdIQorKwl2c3dwCQlgJkRoaSgiQFRbMF0iKWAsYCZEbG8oIkBUWzBdIilgCisrCXZlb3IJCUBYTU1bOF0sIEBYTU1bOF0sIEBUWzBdCisrCXZzdDEuNjQJCXtAWE1NWzhdfSwgW3IwLDoxMjhdCQlAIG5leHQgcm91bmQgdHdlYWsKKysKKysJdmxkMS44CQl7QFhNTVs2XS1AWE1NWzddfSwgWyRpbnBdIQorKwl2ZW9yCQlAWE1NWzVdLCBAWE1NWzVdLCBAWE1NWzEzXQorKyNpZm5kZWYJQlNBRVNfQVNNX0VYVEVOREVEX0tFWQorKwlhZGQJCXI0LCBzcCwgIzB4OTAJCQlAIHBhc3Mga2V5IHNjaGVkdWxlCisrI2Vsc2UKKysJYWRkCQlyNCwgJGtleSwgIzI0OAkJCUAgcGFzcyBrZXkgc2NoZWR1bGUKKysjZW5kaWYKKysJdmVvcgkJQFhNTVs2XSwgQFhNTVs2XSwgQFhNTVsxNF0KKysJbW92CQlyNSwgJHJvdW5kcwkJCUAgcGFzcyByb3VuZHMKKysJdmVvcgkJQFhNTVs3XSwgQFhNTVs3XSwgQFhNTVsxNV0KKysJbW92CQlyMCwgc3AKKysKKysJYmwJCV9ic2Flc19kZWNyeXB0OAorKworKwl2bGQxLjY0CQl7QFhNTVsgOF0tQFhNTVsgOV19LCBbcjAsOjEyOF0hCisrCXZsZDEuNjQJCXtAWE1NWzEwXS1AWE1NWzExXX0sIFtyMCw6MTI4XSEKKysJdmVvcgkJQFhNTVswXSwgQFhNTVswXSwgQFhNTVsgOF0KKysJdmxkMS42NAkJe0BYTU1bMTJdLUBYTU1bMTNdfSwgW3IwLDoxMjhdIQorKwl2ZW9yCQlAWE1NWzFdLCBAWE1NWzFdLCBAWE1NWyA5XQorKwl2ZW9yCQlAWE1NWzhdLCBAWE1NWzZdLCBAWE1NWzEwXQorKwl2c3QxLjgJCXtAWE1NWzBdLUBYTU1bMV19LCBbJG91dF0hCisrCXZlb3IJCUBYTU1bOV0sIEBYTU1bNF0sIEBYTU1bMTFdCisrCXZsZDEuNjQJCXtAWE1NWzE0XS1AWE1NWzE1XX0sIFtyMCw6MTI4XSEKKysJdmVvcgkJQFhNTVsxMF0sIEBYTU1bMl0sIEBYTU1bMTJdCisrCXZzdDEuOAkJe0BYTU1bOF0tQFhNTVs5XX0sIFskb3V0XSEKKysJdmVvcgkJQFhNTVsxMV0sIEBYTU1bN10sIEBYTU1bMTNdCisrCXZlb3IJCUBYTU1bMTJdLCBAWE1NWzNdLCBAWE1NWzE0XQorKwl2c3QxLjgJCXtAWE1NWzEwXS1AWE1NWzExXX0sIFskb3V0XSEKKysJdmVvcgkJQFhNTVsxM10sIEBYTU1bNV0sIEBYTU1bMTVdCisrCXZzdDEuOAkJe0BYTU1bMTJdLUBYTU1bMTNdfSwgWyRvdXRdIQorKworKwl2bGQxLjY0CQl7QFhNTVs4XX0sIFtyMCw6MTI4XQkJQCBuZXh0IHJvdW5kIHR3ZWFrCisrCisrCXN1YnMJCSRsZW4sICMweDgwCisrCWJwbAkJLkx4dHNfZGVjX2xvb3AKKysKKysuTHh0c19kZWNfc2hvcnQ6CisrCWFkZHMJCSRsZW4sICMweDcwCisrCWJtaQkJLkx4dHNfZGVjX2RvbmUKKysKKysJdmxkbWlhCQkkbWFnaWMsIHskdHdtYXNrfQlAIGxvYWQgWFRTIG1hZ2ljCisrCXZzaHIuczY0CUBUWzBdLCBAWE1NWzhdLCAjNjMKKysJbW92CQlyMCwgc3AKKysJdmFuZAkJQFRbMF0sIEBUWzBdLCAkdHdtYXNrCisrX19fCisrZm9yKCRpPTk7JGk8MTY7JGkrKykgeworKyRjb2RlLj08PF9fXzsKKysJdmFkZC51NjQJQFhNTVskaV0sIEBYTU1bJGktMV0sIEBYTU1bJGktMV0KKysJdnN0MS42NAkJe0BYTU1bJGktMV19LCBbcjAsOjEyOF0hCisrCXZzd3AJCWAmRGhpKCJAVFswXSIpYCxgJkRsbygiQFRbMF0iKWAKKysJdnNoci5zNjQJQFRbMV0sIEBYTU1bJGldLCAjNjMKKysJdmVvcgkJQFhNTVskaV0sIEBYTU1bJGldLCBAVFswXQorKwl2YW5kCQlAVFsxXSwgQFRbMV0sICR0d21hc2sKKytfX18KKysJQFQ9cmV2ZXJzZShAVCk7CisrCisrJGNvZGUuPTw8X19fIGlmICgkaT49MTApOworKwl2bGQxLjgJCXtAWE1NWyRpLTEwXX0sIFskaW5wXSEKKysJc3VicwkJJGxlbiwgIzB4MTAKKysJYm1pCQkuTHh0c19kZWNfYCRpLTlgCisrX19fCisrJGNvZGUuPTw8X19fIGlmICgkaT49MTEpOworKwl2ZW9yCQlAWE1NWyRpLTExXSwgQFhNTVskaS0xMV0sIEBYTU1bJGktM10KKytfX18KKyt9CisrJGNvZGUuPTw8X19fOworKwlzdWIJCSRsZW4sICMweDEwCisrCXZzdDEuNjQJCXtAWE1NWzE1XX0sIFtyMCw6MTI4XQkJQCBuZXh0IHJvdW5kIHR3ZWFrCisrCisrCXZsZDEuOAkJe0BYTU1bNl19LCBbJGlucF0hCisrCXZlb3IJCUBYTU1bNV0sIEBYTU1bNV0sIEBYTU1bMTNdCisrI2lmbmRlZglCU0FFU19BU01fRVhURU5ERURfS0VZCisrCWFkZAkJcjQsIHNwLCAjMHg5MAkJCUAgcGFzcyBrZXkgc2NoZWR1bGUKKysjZWxzZQorKwlhZGQJCXI0LCAka2V5LCAjMjQ4CQkJQCBwYXNzIGtleSBzY2hlZHVsZQorKyNlbmRpZgorKwl2ZW9yCQlAWE1NWzZdLCBAWE1NWzZdLCBAWE1NWzE0XQorKwltb3YJCXI1LCAkcm91bmRzCQkJQCBwYXNzIHJvdW5kcworKwltb3YJCXIwLCBzcAorKworKwlibAkJX2JzYWVzX2RlY3J5cHQ4CisrCisrCXZsZDEuNjQJCXtAWE1NWyA4XS1AWE1NWyA5XX0sIFtyMCw6MTI4XSEKKysJdmxkMS42NAkJe0BYTU1bMTBdLUBYTU1bMTFdfSwgW3IwLDoxMjhdIQorKwl2ZW9yCQlAWE1NWzBdLCBAWE1NWzBdLCBAWE1NWyA4XQorKwl2bGQxLjY0CQl7QFhNTVsxMl0tQFhNTVsxM119LCBbcjAsOjEyOF0hCisrCXZlb3IJCUBYTU1bMV0sIEBYTU1bMV0sIEBYTU1bIDldCisrCXZlb3IJCUBYTU1bOF0sIEBYTU1bNl0sIEBYTU1bMTBdCisrCXZzdDEuOAkJe0BYTU1bMF0tQFhNTVsxXX0sIFskb3V0XSEKKysJdmVvcgkJQFhNTVs5XSwgQFhNTVs0XSwgQFhNTVsxMV0KKysJdmxkMS42NAkJe0BYTU1bMTRdfSwgW3IwLDoxMjhdIQorKwl2ZW9yCQlAWE1NWzEwXSwgQFhNTVsyXSwgQFhNTVsxMl0KKysJdnN0MS44CQl7QFhNTVs4XS1AWE1NWzldfSwgWyRvdXRdIQorKwl2ZW9yCQlAWE1NWzExXSwgQFhNTVs3XSwgQFhNTVsxM10KKysJdmVvcgkJQFhNTVsxMl0sIEBYTU1bM10sIEBYTU1bMTRdCisrCXZzdDEuOAkJe0BYTU1bMTBdLUBYTU1bMTFdfSwgWyRvdXRdIQorKwl2c3QxLjgJCXtAWE1NWzEyXX0sIFskb3V0XSEKKysKKysJdmxkMS42NAkJe0BYTU1bOF19LCBbcjAsOjEyOF0JCUAgbmV4dCByb3VuZCB0d2VhaworKwliCQkuTHh0c19kZWNfZG9uZQorKy5hbGlnbgk0CisrLkx4dHNfZGVjXzY6CisrCXZzdDEuNjQJCXtAWE1NWzE0XX0sIFtyMCw6MTI4XQkJQCBuZXh0IHJvdW5kIHR3ZWFrCisrCisrCXZlb3IJCUBYTU1bNF0sIEBYTU1bNF0sIEBYTU1bMTJdCisrI2lmbmRlZglCU0FFU19BU01fRVhURU5ERURfS0VZCisrCWFkZAkJcjQsIHNwLCAjMHg5MAkJCUAgcGFzcyBrZXkgc2NoZWR1bGUKKysjZWxzZQorKwlhZGQJCXI0LCAka2V5LCAjMjQ4CQkJQCBwYXNzIGtleSBzY2hlZHVsZQorKyNlbmRpZgorKwl2ZW9yCQlAWE1NWzVdLCBAWE1NWzVdLCBAWE1NWzEzXQorKwltb3YJCXI1LCAkcm91bmRzCQkJQCBwYXNzIHJvdW5kcworKwltb3YJCXIwLCBzcAorKworKwlibAkJX2JzYWVzX2RlY3J5cHQ4CisrCisrCXZsZDEuNjQJCXtAWE1NWyA4XS1AWE1NWyA5XX0sIFtyMCw6MTI4XSEKKysJdmxkMS42NAkJe0BYTU1bMTBdLUBYTU1bMTFdfSwgW3IwLDoxMjhdIQorKwl2ZW9yCQlAWE1NWzBdLCBAWE1NWzBdLCBAWE1NWyA4XQorKwl2bGQxLjY0CQl7QFhNTVsxMl0tQFhNTVsxM119LCBbcjAsOjEyOF0hCisrCXZlb3IJCUBYTU1bMV0sIEBYTU1bMV0sIEBYTU1bIDldCisrCXZlb3IJCUBYTU1bOF0sIEBYTU1bNl0sIEBYTU1bMTBdCisrCXZzdDEuOAkJe0BYTU1bMF0tQFhNTVsxXX0sIFskb3V0XSEKKysJdmVvcgkJQFhNTVs5XSwgQFhNTVs0XSwgQFhNTVsxMV0KKysJdmVvcgkJQFhNTVsxMF0sIEBYTU1bMl0sIEBYTU1bMTJdCisrCXZzdDEuOAkJe0BYTU1bOF0tQFhNTVs5XX0sIFskb3V0XSEKKysJdmVvcgkJQFhNTVsxMV0sIEBYTU1bN10sIEBYTU1bMTNdCisrCXZzdDEuOAkJe0BYTU1bMTBdLUBYTU1bMTFdfSwgWyRvdXRdIQorKworKwl2bGQxLjY0CQl7QFhNTVs4XX0sIFtyMCw6MTI4XQkJQCBuZXh0IHJvdW5kIHR3ZWFrCisrCWIJCS5MeHRzX2RlY19kb25lCisrLmFsaWduCTQKKysuTHh0c19kZWNfNToKKysJdnN0MS42NAkJe0BYTU1bMTNdfSwgW3IwLDoxMjhdCQlAIG5leHQgcm91bmQgdHdlYWsKKysKKysJdmVvcgkJQFhNTVszXSwgQFhNTVszXSwgQFhNTVsxMV0KKysjaWZuZGVmCUJTQUVTX0FTTV9FWFRFTkRFRF9LRVkKKysJYWRkCQlyNCwgc3AsICMweDkwCQkJQCBwYXNzIGtleSBzY2hlZHVsZQorKyNlbHNlCisrCWFkZAkJcjQsICRrZXksICMyNDgJCQlAIHBhc3Mga2V5IHNjaGVkdWxlCisrI2VuZGlmCisrCXZlb3IJCUBYTU1bNF0sIEBYTU1bNF0sIEBYTU1bMTJdCisrCW1vdgkJcjUsICRyb3VuZHMJCQlAIHBhc3Mgcm91bmRzCisrCW1vdgkJcjAsIHNwCisrCisrCWJsCQlfYnNhZXNfZGVjcnlwdDgKKysKKysJdmxkMS42NAkJe0BYTU1bIDhdLUBYTU1bIDldfSwgW3IwLDoxMjhdIQorKwl2bGQxLjY0CQl7QFhNTVsxMF0tQFhNTVsxMV19LCBbcjAsOjEyOF0hCisrCXZlb3IJCUBYTU1bMF0sIEBYTU1bMF0sIEBYTU1bIDhdCisrCXZsZDEuNjQJCXtAWE1NWzEyXX0sIFtyMCw6MTI4XSEKKysJdmVvcgkJQFhNTVsxXSwgQFhNTVsxXSwgQFhNTVsgOV0KKysJdmVvcgkJQFhNTVs4XSwgQFhNTVs2XSwgQFhNTVsxMF0KKysJdnN0MS44CQl7QFhNTVswXS1AWE1NWzFdfSwgWyRvdXRdIQorKwl2ZW9yCQlAWE1NWzldLCBAWE1NWzRdLCBAWE1NWzExXQorKwl2ZW9yCQlAWE1NWzEwXSwgQFhNTVsyXSwgQFhNTVsxMl0KKysJdnN0MS44CQl7QFhNTVs4XS1AWE1NWzldfSwgWyRvdXRdIQorKwl2c3QxLjgJCXtAWE1NWzEwXX0sIFskb3V0XSEKKysKKysJdmxkMS42NAkJe0BYTU1bOF19LCBbcjAsOjEyOF0JCUAgbmV4dCByb3VuZCB0d2VhaworKwliCQkuTHh0c19kZWNfZG9uZQorKy5hbGlnbgk0CisrLkx4dHNfZGVjXzQ6CisrCXZzdDEuNjQJCXtAWE1NWzEyXX0sIFtyMCw6MTI4XQkJQCBuZXh0IHJvdW5kIHR3ZWFrCisrCisrCXZlb3IJCUBYTU1bMl0sIEBYTU1bMl0sIEBYTU1bMTBdCisrI2lmbmRlZglCU0FFU19BU01fRVhURU5ERURfS0VZCisrCWFkZAkJcjQsIHNwLCAjMHg5MAkJCUAgcGFzcyBrZXkgc2NoZWR1bGUKKysjZWxzZQorKwlhZGQJCXI0LCAka2V5LCAjMjQ4CQkJQCBwYXNzIGtleSBzY2hlZHVsZQorKyNlbmRpZgorKwl2ZW9yCQlAWE1NWzNdLCBAWE1NWzNdLCBAWE1NWzExXQorKwltb3YJCXI1LCAkcm91bmRzCQkJQCBwYXNzIHJvdW5kcworKwltb3YJCXIwLCBzcAorKworKwlibAkJX2JzYWVzX2RlY3J5cHQ4CisrCisrCXZsZDEuNjQJCXtAWE1NWyA4XS1AWE1NWyA5XX0sIFtyMCw6MTI4XSEKKysJdmxkMS42NAkJe0BYTU1bMTBdLUBYTU1bMTFdfSwgW3IwLDoxMjhdIQorKwl2ZW9yCQlAWE1NWzBdLCBAWE1NWzBdLCBAWE1NWyA4XQorKwl2ZW9yCQlAWE1NWzFdLCBAWE1NWzFdLCBAWE1NWyA5XQorKwl2ZW9yCQlAWE1NWzhdLCBAWE1NWzZdLCBAWE1NWzEwXQorKwl2c3QxLjgJCXtAWE1NWzBdLUBYTU1bMV19LCBbJG91dF0hCisrCXZlb3IJCUBYTU1bOV0sIEBYTU1bNF0sIEBYTU1bMTFdCisrCXZzdDEuOAkJe0BYTU1bOF0tQFhNTVs5XX0sIFskb3V0XSEKKysKKysJdmxkMS42NAkJe0BYTU1bOF19LCBbcjAsOjEyOF0JCUAgbmV4dCByb3VuZCB0d2VhaworKwliCQkuTHh0c19kZWNfZG9uZQorKy5hbGlnbgk0CisrLkx4dHNfZGVjXzM6CisrCXZzdDEuNjQJCXtAWE1NWzExXX0sIFtyMCw6MTI4XQkJQCBuZXh0IHJvdW5kIHR3ZWFrCisrCisrCXZlb3IJCUBYTU1bMV0sIEBYTU1bMV0sIEBYTU1bOV0KKysjaWZuZGVmCUJTQUVTX0FTTV9FWFRFTkRFRF9LRVkKKysJYWRkCQlyNCwgc3AsICMweDkwCQkJQCBwYXNzIGtleSBzY2hlZHVsZQorKyNlbHNlCisrCWFkZAkJcjQsICRrZXksICMyNDgJCQlAIHBhc3Mga2V5IHNjaGVkdWxlCisrI2VuZGlmCisrCXZlb3IJCUBYTU1bMl0sIEBYTU1bMl0sIEBYTU1bMTBdCisrCW1vdgkJcjUsICRyb3VuZHMJCQlAIHBhc3Mgcm91bmRzCisrCW1vdgkJcjAsIHNwCisrCisrCWJsCQlfYnNhZXNfZGVjcnlwdDgKKysKKysJdmxkMS42NAkJe0BYTU1bOF0tQFhNTVs5XX0sIFtyMCw6MTI4XSEKKysJdmxkMS42NAkJe0BYTU1bMTBdfSwgW3IwLDoxMjhdIQorKwl2ZW9yCQlAWE1NWzBdLCBAWE1NWzBdLCBAWE1NWyA4XQorKwl2ZW9yCQlAWE1NWzFdLCBAWE1NWzFdLCBAWE1NWyA5XQorKwl2ZW9yCQlAWE1NWzhdLCBAWE1NWzZdLCBAWE1NWzEwXQorKwl2c3QxLjgJCXtAWE1NWzBdLUBYTU1bMV19LCBbJG91dF0hCisrCXZzdDEuOAkJe0BYTU1bOF19LCBbJG91dF0hCisrCisrCXZsZDEuNjQJCXtAWE1NWzhdfSwgW3IwLDoxMjhdCQlAIG5leHQgcm91bmQgdHdlYWsKKysJYgkJLkx4dHNfZGVjX2RvbmUKKysuYWxpZ24JNAorKy5MeHRzX2RlY18yOgorKwl2c3QxLjY0CQl7QFhNTVsxMF19LCBbcjAsOjEyOF0JCUAgbmV4dCByb3VuZCB0d2VhaworKworKwl2ZW9yCQlAWE1NWzBdLCBAWE1NWzBdLCBAWE1NWzhdCisrI2lmbmRlZglCU0FFU19BU01fRVhURU5ERURfS0VZCisrCWFkZAkJcjQsIHNwLCAjMHg5MAkJCUAgcGFzcyBrZXkgc2NoZWR1bGUKKysjZWxzZQorKwlhZGQJCXI0LCAka2V5LCAjMjQ4CQkJQCBwYXNzIGtleSBzY2hlZHVsZQorKyNlbmRpZgorKwl2ZW9yCQlAWE1NWzFdLCBAWE1NWzFdLCBAWE1NWzldCisrCW1vdgkJcjUsICRyb3VuZHMJCQlAIHBhc3Mgcm91bmRzCisrCW1vdgkJcjAsIHNwCisrCisrCWJsCQlfYnNhZXNfZGVjcnlwdDgKKysKKysJdmxkMS42NAkJe0BYTU1bOF0tQFhNTVs5XX0sIFtyMCw6MTI4XSEKKysJdmVvcgkJQFhNTVswXSwgQFhNTVswXSwgQFhNTVsgOF0KKysJdmVvcgkJQFhNTVsxXSwgQFhNTVsxXSwgQFhNTVsgOV0KKysJdnN0MS44CQl7QFhNTVswXS1AWE1NWzFdfSwgWyRvdXRdIQorKworKwl2bGQxLjY0CQl7QFhNTVs4XX0sIFtyMCw6MTI4XQkJQCBuZXh0IHJvdW5kIHR3ZWFrCisrCWIJCS5MeHRzX2RlY19kb25lCisrLmFsaWduCTQKKysuTHh0c19kZWNfMToKKysJbW92CQlyMCwgc3AKKysJdmVvcgkJQFhNTVswXSwgQFhNTVs4XQorKwltb3YJCXIxLCBzcAorKwl2c3QxLjgJCXtAWE1NWzBdfSwgW3NwLDoxMjhdCisrCW1vdgkJcjIsICRrZXkKKysJbW92CQlyNCwgJGZwCQkJCUAgcHJlc2VydmUgZnAKKysJbW92CQlyNSwgJG1hZ2ljCQkJQCBwcmVzZXJ2ZSBtYWdpYworKworKwlibAkJQUVTX2RlY3J5cHQKKysKKysJdmxkMS44CQl7QFhNTVswXX0sIFtzcCw6MTI4XQorKwl2ZW9yCQlAWE1NWzBdLCBAWE1NWzBdLCBAWE1NWzhdCisrCXZzdDEuOAkJe0BYTU1bMF19LCBbJG91dF0hCisrCW1vdgkJJGZwLCByNAorKwltb3YJCSRtYWdpYywgcjUKKysKKysJdm1vdgkJQFhNTVs4XSwgQFhNTVs5XQkJQCBuZXh0IHJvdW5kIHR3ZWFrCisrCisrLkx4dHNfZGVjX2RvbmU6CisrI2lmbmRlZglYVFNfQ0hBSU5fVFdFQUsKKysJYWRkcwkJJGxlbiwgIzB4MTAKKysJYmVxCQkuTHh0c19kZWNfcmV0CisrCisrCUAgY2FsY3VsYXRlIG9uZSByb3VuZCBvZiBleHRyYSB0d2VhayBmb3IgdGhlIHN0b2xlbiBjaXBoZXJ0ZXh0CisrCXZsZG1pYQkJJG1hZ2ljLCB7JHR3bWFza30KKysJdnNoci5zNjQJQFhNTVs2XSwgQFhNTVs4XSwgIzYzCisrCXZhbmQJCUBYTU1bNl0sIEBYTU1bNl0sICR0d21hc2sKKysJdmFkZC51NjQJQFhNTVs5XSwgQFhNTVs4XSwgQFhNTVs4XQorKwl2c3dwCQlgJkRoaSgiQFhNTVs2XSIpYCxgJkRsbygiQFhNTVs2XSIpYAorKwl2ZW9yCQlAWE1NWzldLCBAWE1NWzldLCBAWE1NWzZdCisrCisrCUAgcGVyZm9ybSB0aGUgZmluYWwgZGVjcnlwdGlvbiB3aXRoIHRoZSBsYXN0IHR3ZWFrIHZhbHVlCisrCXZsZDEuOAkJe0BYTU1bMF19LCBbJGlucF0hCisrCW1vdgkJcjAsIHNwCisrCXZlb3IJCUBYTU1bMF0sIEBYTU1bMF0sIEBYTU1bOV0KKysJbW92CQlyMSwgc3AKKysJdnN0MS44CQl7QFhNTVswXX0sIFtzcCw6MTI4XQorKwltb3YJCXIyLCAka2V5CisrCW1vdgkJcjQsICRmcAkJCUAgcHJlc2VydmUgZnAKKysKKysJYmwJCUFFU19kZWNyeXB0CisrCisrCXZsZDEuOAkJe0BYTU1bMF19LCBbc3AsOjEyOF0KKysJdmVvcgkJQFhNTVswXSwgQFhNTVswXSwgQFhNTVs5XQorKwl2c3QxLjgJCXtAWE1NWzBdfSwgWyRvdXRdCisrCisrCW1vdgkJcjYsICRvdXQKKysuTHh0c19kZWNfc3RlYWw6CisrCWxkcmIJCXIxLCBbJG91dF0KKysJbGRyYgkJcjAsIFskaW5wXSwgIzEKKysJc3RyYgkJcjEsIFskb3V0LCAjMHgxMF0KKysJc3RyYgkJcjAsIFskb3V0XSwgIzEKKysKKysJc3VicwkJJGxlbiwgIzEKKysJYmhpCQkuTHh0c19kZWNfc3RlYWwKKysKKysJdmxkMS44CQl7QFhNTVswXX0sIFtyNl0KKysJbW92CQlyMCwgc3AKKysJdmVvcgkJQFhNTVswXSwgQFhNTVs4XQorKwltb3YJCXIxLCBzcAorKwl2c3QxLjgJCXtAWE1NWzBdfSwgW3NwLDoxMjhdCisrCW1vdgkJcjIsICRrZXkKKysKKysJYmwJCUFFU19kZWNyeXB0CisrCisrCXZsZDEuOAkJe0BYTU1bMF19LCBbc3AsOjEyOF0KKysJdmVvcgkJQFhNTVswXSwgQFhNTVswXSwgQFhNTVs4XQorKwl2c3QxLjgJCXtAWE1NWzBdfSwgW3I2XQorKwltb3YJCSRmcCwgcjQKKysjZW5kaWYKKysKKysuTHh0c19kZWNfcmV0OgorKwliaWMJCXIwLCAkZnAsICMweGYKKysJdm1vdi5pMzIJcTAsICMwCisrCXZtb3YuaTMyCXExLCAjMAorKyNpZmRlZglYVFNfQ0hBSU5fVFdFQUsKKysJbGRyCQlyMSwgWyRmcCwgIzB4MjArVkZQX0FCSV9GUkFNRV0JQCBjaGFpbiB0d2VhaworKyNlbmRpZgorKy5MeHRzX2RlY19iemVybzoJCQkJQCB3aXBlIGtleSBzY2hlZHVsZSBbaWYgYW55XQorKwl2c3RtaWEJCXNwISwge3EwLXExfQorKwljbXAJCXNwLCByMAorKwlibmUJCS5MeHRzX2RlY19iemVybworKworKwltb3YJCXNwLCAkZnAKKysjaWZkZWYJWFRTX0NIQUlOX1RXRUFLCisrCXZzdDEuOAkJe0BYTU1bOF19LCBbcjFdCisrI2VuZGlmCisrCVZGUF9BQklfUE9QCisrCWxkbWlhCQlzcCEsIHtyNC1yMTAsIHBjfQlAIHJldHVybgorKworKy5zaXplCWJzYWVzX3h0c19kZWNyeXB0LC4tYnNhZXNfeHRzX2RlY3J5cHQKKytfX18KKyt9CisrJGNvZGUuPTw8X19fOworKyNlbmRpZgorK19fXworKworKyRjb2RlID1+IHMvXGAoW15cYF0qKVxgL2V2YWwoJDEpL2dlbTsKKysKKytvcGVuIFNFTEYsJDA7Cisrd2hpbGUoPFNFTEY+KSB7CisrCW5leHQgaWYgKC9eIyEvKTsKKysgICAgICAgIGxhc3QgaWYgKCFzL14jL0AvIGFuZCAhL14kLyk7CisrICAgICAgICBwcmludDsKKyt9CisrY2xvc2UgU0VMRjsKKysKKytwcmludCAkY29kZTsKKysKKytjbG9zZSBTVERPVVQ7CitkaWZmIC0tZ2l0IGEvY3J5cHRvL2FybTY0Y3B1aWQuUyBiL2NyeXB0by9hcm02NGNwdWlkLlMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi40Nzc4YWMxCistLS0gL2Rldi9udWxsCisrKysgYi9jcnlwdG8vYXJtNjRjcHVpZC5TCitAQCAtMCwwICsxLDQ2IEBACisrI2luY2x1ZGUgImFybV9hcmNoLmgiCisrCisrLnRleHQKKysuYXJjaAlhcm12OC1hK2NyeXB0bworKworKy5hbGlnbgk1CisrLmdsb2JhbAlfYXJtdjdfbmVvbl9wcm9iZQorKy50eXBlCV9hcm12N19uZW9uX3Byb2JlLCVmdW5jdGlvbgorK19hcm12N19uZW9uX3Byb2JlOgorKwlvcnIJdjE1LjE2YiwgdjE1LjE2YiwgdjE1LjE2YgorKwlyZXQKKysuc2l6ZQlfYXJtdjdfbmVvbl9wcm9iZSwuLV9hcm12N19uZW9uX3Byb2JlCisrCisrLmdsb2JhbAlfYXJtdjdfdGljaworKy50eXBlCV9hcm12N190aWNrLCVmdW5jdGlvbgorK19hcm12N190aWNrOgorKwltcnMJeDAsIENOVFZDVF9FTDAKKysJcmV0CisrLnNpemUJX2FybXY3X3RpY2ssLi1fYXJtdjdfdGljaworKworKy5nbG9iYWwJX2FybXY4X2Flc19wcm9iZQorKy50eXBlCV9hcm12OF9hZXNfcHJvYmUsJWZ1bmN0aW9uCisrX2FybXY4X2Flc19wcm9iZToKKysJYWVzZQl2MC4xNmIsIHYwLjE2YgorKwlyZXQKKysuc2l6ZQlfYXJtdjhfYWVzX3Byb2JlLC4tX2FybXY4X2Flc19wcm9iZQorKworKy5nbG9iYWwJX2FybXY4X3NoYTFfcHJvYmUKKysudHlwZQlfYXJtdjhfc2hhMV9wcm9iZSwlZnVuY3Rpb24KKytfYXJtdjhfc2hhMV9wcm9iZToKKysJc2hhMWgJczAsIHMwCisrCXJldAorKy5zaXplCV9hcm12OF9zaGExX3Byb2JlLC4tX2FybXY4X3NoYTFfcHJvYmUKKysKKysuZ2xvYmFsCV9hcm12OF9zaGEyNTZfcHJvYmUKKysudHlwZQlfYXJtdjhfc2hhMjU2X3Byb2JlLCVmdW5jdGlvbgorK19hcm12OF9zaGEyNTZfcHJvYmU6CisrCXNoYTI1NnN1MAl2MC40cywgdjAuNHMKKysJcmV0CisrLnNpemUJX2FybXY4X3NoYTI1Nl9wcm9iZSwuLV9hcm12OF9zaGEyNTZfcHJvYmUKKysuZ2xvYmFsCV9hcm12OF9wbXVsbF9wcm9iZQorKy50eXBlCV9hcm12OF9wbXVsbF9wcm9iZSwlZnVuY3Rpb24KKytfYXJtdjhfcG11bGxfcHJvYmU6CisrCXBtdWxsCXYwLjFxLCB2MC4xZCwgdjAuMWQKKysJcmV0CisrLnNpemUJX2FybXY4X3BtdWxsX3Byb2JlLC4tX2FybXY4X3BtdWxsX3Byb2JlCitkaWZmIC0tZ2l0IGEvY3J5cHRvL2FybV9hcmNoLmggYi9jcnlwdG8vYXJtX2FyY2guaAoraW5kZXggNWE4MzEwNy4uNmZhODcyNCAxMDA2NDQKKy0tLSBhL2NyeXB0by9hcm1fYXJjaC5oCisrKysgYi9jcnlwdG8vYXJtX2FyY2guaAorQEAgLTEwLDEzICsxMCwyNCBAQAorICMgICBkZWZpbmUgX19BUk1FTF9fCisgIyAgZW5kaWYKKyAjIGVsaWYgZGVmaW5lZChfX0dOVUNfXykKKysjICBpZglkZWZpbmVkKF9fYWFyY2g2NF9fKQorKyMgICBkZWZpbmUgX19BUk1fQVJDSF9fIDgKKysjICAgaWYgX19CWVRFX09SREVSX189PV9fT1JERVJfQklHX0VORElBTl9fCisrIyAgICBkZWZpbmUgX19BUk1FQl9fCisrIyAgIGVsc2UKKysjICAgIGRlZmluZSBfX0FSTUVMX18KKysjICAgZW5kaWYKKyAgIC8qCisgICAgKiBXaHkgZG9lc24ndCBnY2MgZGVmaW5lIF9fQVJNX0FSQ0hfXz8gSW5zdGVhZCBpdCBkZWZpbmVzCisgICAgKiBidW5jaCBvZiBiZWxvdyBtYWNyb3MuIFNlZSBhbGxfYXJjaGl0ZWN0aXJlc1tdIHRhYmxlIGluCisgICAgKiBnY2MvY29uZmlnL2FybS9hcm0uYy4gT24gYSBzaWRlIG5vdGUgaXQgZGVmaW5lcworICAgICogX19BUk1FTF9fL19fQVJNRUJfXyBmb3IgbGl0dGxlLS9iaWctZW5kaWFuLgorICAgICovCistIyAgaWYJZGVmaW5lZChfX0FSTV9BUkNIXzdfXykJfHwgZGVmaW5lZChfX0FSTV9BUkNIXzdBX18pCXx8IFwKKysjICBlbGlmIGRlZmluZWQoX19BUk1fQVJDSCkKKysjICAgZGVmaW5lIF9fQVJNX0FSQ0hfXyBfX0FSTV9BUkNICisrIyAgZWxpZglkZWZpbmVkKF9fQVJNX0FSQ0hfOEFfXykKKysjICAgZGVmaW5lIF9fQVJNX0FSQ0hfXyA4CisrIyAgZWxpZglkZWZpbmVkKF9fQVJNX0FSQ0hfN19fKQl8fCBkZWZpbmVkKF9fQVJNX0FSQ0hfN0FfXykJfHwgXAorIAlkZWZpbmVkKF9fQVJNX0FSQ0hfN1JfXyl8fCBkZWZpbmVkKF9fQVJNX0FSQ0hfN01fXykJfHwgXAorIAlkZWZpbmVkKF9fQVJNX0FSQ0hfN0VNX18pCisgIyAgIGRlZmluZSBfX0FSTV9BUkNIX18gNworQEAgLTQzLDkgKzU0LDEzIEBACisgCisgI2lmICFfX0FTU0VNQkxFUl9fCisgZXh0ZXJuIHVuc2lnbmVkIGludCBPUEVOU1NMX2FybWNhcF9QOworKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAjZGVmaW5lIEFSTVY3X05FT04gICAgICAoMTw8MCkKKyAjZGVmaW5lIEFSTVY3X1RJQ0sgICAgICAoMTw8MSkKKy0jZW5kaWYKKysjZGVmaW5lIEFSTVY4X0FFUyAgICAgICAoMTw8MikKKysjZGVmaW5lIEFSTVY4X1NIQTEgICAgICAoMTw8MykKKysjZGVmaW5lIEFSTVY4X1NIQTI1NiAgICAoMTw8NCkKKysjZGVmaW5lIEFSTVY4X1BNVUxMICAgICAoMTw8NSkKKyAKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9jcnlwdG8vYXJtY2FwLmMgYi9jcnlwdG8vYXJtY2FwLmMKK2luZGV4IDlhYmFmMzkuLjdlNDZkMDcgMTAwNjQ0CistLS0gYS9jcnlwdG8vYXJtY2FwLmMKKysrKyBiL2NyeXB0by9hcm1jYXAuYworQEAgLTE5LDkgKzE5LDEzIEBAIHN0YXRpYyB2b2lkIGlsbF9oYW5kbGVyIChpbnQgc2lnKSB7IHNpZ2xvbmdqbXAoaWxsX2ptcCxzaWcpOyB9CisgICogQVJNIGNvbXBpbGVycyBzdXBwb3J0IGlubGluZSBhc3NlbWJsZXIuLi4KKyAgKi8KKyB2b2lkIF9hcm12N19uZW9uX3Byb2JlKHZvaWQpOworLXVuc2lnbmVkIGludCBfYXJtdjdfdGljayh2b2lkKTsKKyt2b2lkIF9hcm12OF9hZXNfcHJvYmUodm9pZCk7Cisrdm9pZCBfYXJtdjhfc2hhMV9wcm9iZSh2b2lkKTsKKyt2b2lkIF9hcm12OF9zaGEyNTZfcHJvYmUodm9pZCk7Cisrdm9pZCBfYXJtdjhfcG11bGxfcHJvYmUodm9pZCk7CisrdW5zaWduZWQgbG9uZyBfYXJtdjdfdGljayh2b2lkKTsKKyAKKy11bnNpZ25lZCBpbnQgT1BFTlNTTF9yZHRzYyh2b2lkKQorK3Vuc2lnbmVkIGxvbmcgT1BFTlNTTF9yZHRzYyh2b2lkKQorIAl7CisgCWlmIChPUEVOU1NMX2FybWNhcF9QICYgQVJNVjdfVElDSykKKyAJCXJldHVybiBfYXJtdjdfdGljaygpOworQEAgLTI5LDkgKzMzLDQxIEBAIHVuc2lnbmVkIGludCBPUEVOU1NMX3JkdHNjKHZvaWQpCisgCQlyZXR1cm4gMDsKKyAJfQorIAorKy8qCisrICogVXNlIGEgd2VhayByZWZlcmVuY2UgdG8gZ2V0YXV4dmFsKCkgc28gd2UgY2FuIHVzZSBpdCBpZiBpdCBpcyBhdmFpbGFibGUgYnV0CisrICogZG9uJ3QgYnJlYWsgdGhlIGJ1aWxkIGlmIGl0IGlzIG5vdC4KKysgKi8KKyAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18+PTIKKyB2b2lkIE9QRU5TU0xfY3B1aWRfc2V0dXAodm9pZCkgX19hdHRyaWJ1dGVfXygoY29uc3RydWN0b3IpKTsKKytleHRlcm4gdW5zaWduZWQgbG9uZyBnZXRhdXh2YWwodW5zaWduZWQgbG9uZyB0eXBlKSBfX2F0dHJpYnV0ZV9fKCh3ZWFrKSk7CisrI2Vsc2UKKytzdGF0aWMgdW5zaWduZWQgbG9uZyAoKmdldGF1eHZhbCkodW5zaWduZWQgbG9uZykgPSBOVUxMOworICNlbmRpZgorKworKy8qCisrICogQVJNIHB1dHMgdGhlIHRoZSBmZWF0dXJlIGJpdHMgZm9yIENyeXB0byBFeHRlbnNpb25zIGluIEFUX0hXQ0FQMiwgd2hlcmVhcworKyAqIEFBcmNoNjQgdXNlZCBBVF9IV0NBUC4KKysgKi8KKysjaWYgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkIChfX2FybSkKKysjIGRlZmluZSBIV0NBUAkJCTE2CS8qIEFUX0hXQ0FQICovCisrIyBkZWZpbmUgSFdDQVBfTkVPTgkJKDEgPDwgMTIpCisrCisrIyBkZWZpbmUgSFdDQVBfQ0UJCTI2CS8qIEFUX0hXQ0FQMiAqLworKyMgZGVmaW5lIEhXQ0FQX0NFX0FFUwkJKDEgPDwgMCkKKysjIGRlZmluZSBIV0NBUF9DRV9QTVVMTAkJKDEgPDwgMSkKKysjIGRlZmluZSBIV0NBUF9DRV9TSEExCQkoMSA8PCAyKQorKyMgZGVmaW5lIEhXQ0FQX0NFX1NIQTI1NgkoMSA8PCAzKQorKyNlbGlmIGRlZmluZWQoX19hYXJjaDY0X18pCisrIyBkZWZpbmUgSFdDQVAJCQkxNgkvKiBBVF9IV0NBUCAqLworKyMgZGVmaW5lIEhXQ0FQX05FT04JCSgxIDw8IDEpCisrCisrIyBkZWZpbmUgSFdDQVBfQ0UJCUhXQ0FQCisrIyBkZWZpbmUgSFdDQVBfQ0VfQUVTCQkoMSA8PCAzKQorKyMgZGVmaW5lIEhXQ0FQX0NFX1BNVUxMCQkoMSA8PCA0KQorKyMgZGVmaW5lIEhXQ0FQX0NFX1NIQTEJCSgxIDw8IDUpCisrIyBkZWZpbmUgSFdDQVBfQ0VfU0hBMjU2CSgxIDw8IDYpCisrI2VuZGlmCisrCisgdm9pZCBPUEVOU1NMX2NwdWlkX3NldHVwKHZvaWQpCisgCXsKKyAJY2hhciAqZTsKK0BAIC00NCw3ICs4MCw3IEBAIHZvaWQgT1BFTlNTTF9jcHVpZF9zZXR1cCh2b2lkKQorICAKKyAJaWYgKChlPWdldGVudigiT1BFTlNTTF9hcm1jYXAiKSkpCisgCQl7CistCQlPUEVOU1NMX2FybWNhcF9QPXN0cnRvdWwoZSxOVUxMLDApOworKwkJT1BFTlNTTF9hcm1jYXBfUD0odW5zaWduZWQgaW50KXN0cnRvdWwoZSxOVUxMLDApOworIAkJcmV0dXJuOworIAkJfQorIAorQEAgLTY0LDEwICsxMDAsNTEgQEAgdm9pZCBPUEVOU1NMX2NwdWlkX3NldHVwKHZvaWQpCisgCXNpZ3Byb2NtYXNrKFNJR19TRVRNQVNLLCZpbGxfYWN0LnNhX21hc2ssJm9zZXQpOworIAlzaWdhY3Rpb24oU0lHSUxMLCZpbGxfYWN0LCZpbGxfb2FjdCk7CisgCistCWlmIChzaWdzZXRqbXAoaWxsX2ptcCwxKSA9PSAwKQorKwlpZiAoZ2V0YXV4dmFsICE9IE5VTEwpCisrCQl7CisrCQlpZiAoZ2V0YXV4dmFsKEhXQ0FQKSAmIEhXQ0FQX05FT04pCisrCQkJeworKwkJCXVuc2lnbmVkIGxvbmcgaHdjYXAgPSBnZXRhdXh2YWwoSFdDQVBfQ0UpOworKworKwkJCU9QRU5TU0xfYXJtY2FwX1AgfD0gQVJNVjdfTkVPTjsKKysKKysJCQlpZiAoaHdjYXAgJiBIV0NBUF9DRV9BRVMpCisrCQkJCU9QRU5TU0xfYXJtY2FwX1AgfD0gQVJNVjhfQUVTOworKworKwkJCWlmIChod2NhcCAmIEhXQ0FQX0NFX1BNVUxMKQorKwkJCQlPUEVOU1NMX2FybWNhcF9QIHw9IEFSTVY4X1BNVUxMOworKworKwkJCWlmIChod2NhcCAmIEhXQ0FQX0NFX1NIQTEpCisrCQkJCU9QRU5TU0xfYXJtY2FwX1AgfD0gQVJNVjhfU0hBMTsKKysKKysJCQlpZiAoaHdjYXAgJiBIV0NBUF9DRV9TSEEyNTYpCisrCQkJCU9QRU5TU0xfYXJtY2FwX1AgfD0gQVJNVjhfU0hBMjU2OworKwkJCX0KKysJCX0KKysJZWxzZSBpZiAoc2lnc2V0am1wKGlsbF9qbXAsMSkgPT0gMCkKKyAJCXsKKyAJCV9hcm12N19uZW9uX3Byb2JlKCk7CisgCQlPUEVOU1NMX2FybWNhcF9QIHw9IEFSTVY3X05FT047CisrCQlpZiAoc2lnc2V0am1wKGlsbF9qbXAsMSkgPT0gMCkKKysJCQl7CisrCQkJX2FybXY4X3BtdWxsX3Byb2JlKCk7CisrCQkJT1BFTlNTTF9hcm1jYXBfUCB8PSBBUk1WOF9QTVVMTHxBUk1WOF9BRVM7CisrCQkJfQorKwkJZWxzZSBpZiAoc2lnc2V0am1wKGlsbF9qbXAsMSkgPT0gMCkKKysJCQl7CisrCQkJX2FybXY4X2Flc19wcm9iZSgpOworKwkJCU9QRU5TU0xfYXJtY2FwX1AgfD0gQVJNVjhfQUVTOworKwkJCX0KKysJCWlmIChzaWdzZXRqbXAoaWxsX2ptcCwxKSA9PSAwKQorKwkJCXsKKysJCQlfYXJtdjhfc2hhMV9wcm9iZSgpOworKwkJCU9QRU5TU0xfYXJtY2FwX1AgfD0gQVJNVjhfU0hBMTsKKysJCQl9CisrCQlpZiAoc2lnc2V0am1wKGlsbF9qbXAsMSkgPT0gMCkKKysJCQl7CisrCQkJX2FybXY4X3NoYTI1Nl9wcm9iZSgpOworKwkJCU9QRU5TU0xfYXJtY2FwX1AgfD0gQVJNVjhfU0hBMjU2OworKwkJCX0KKyAJCX0KKyAJaWYgKHNpZ3NldGptcChpbGxfam1wLDEpID09IDApCisgCQl7CitkaWZmIC0tZ2l0IGEvY3J5cHRvL2FybXY0Y3B1aWQuUyBiL2NyeXB0by9hcm12NGNwdWlkLlMKK2luZGV4IDJkNjE4ZGUuLmFkZDExZDQgMTAwNjQ0CistLS0gYS9jcnlwdG8vYXJtdjRjcHVpZC5TCisrKysgYi9jcnlwdG8vYXJtdjRjcHVpZC5TCitAQCAtNywxNyArNyw0OSBAQAorIC5nbG9iYWwJX2FybXY3X25lb25fcHJvYmUKKyAudHlwZQlfYXJtdjdfbmVvbl9wcm9iZSwlZnVuY3Rpb24KKyBfYXJtdjdfbmVvbl9wcm9iZToKKy0JLndvcmQJMHhmMjZlZTFmZQlAIHZvcnIJcTE1LHExNSxxMTUKKy0JLndvcmQJMHhlMTJmZmYxZQlAIGJ4CWxyCisrCS5ieXRlCTB4ZjAsMHgwMSwweDYwLDB4ZjIJQCB2b3JyCXE4LHE4LHE4CisrCS5ieXRlCTB4MWUsMHhmZiwweDJmLDB4ZTEJQCBieAlscgorIC5zaXplCV9hcm12N19uZW9uX3Byb2JlLC4tX2FybXY3X25lb25fcHJvYmUKKyAKKyAuZ2xvYmFsCV9hcm12N190aWNrCisgLnR5cGUJX2FybXY3X3RpY2ssJWZ1bmN0aW9uCisgX2FybXY3X3RpY2s6CistCW1yYwlwMTUsMCxyMCxjOSxjMTMsMAorLQkud29yZAkweGUxMmZmZjFlCUAgYngJbHIKKysJbXJyYwlwMTUsMSxyMCxyMSxjMTQJCUAgQ05UVkNUCisrI2lmIF9fQVJNX0FSQ0hfXz49NQorKwlieAlscgorKyNlbHNlCisrCS53b3JkCTB4ZTEyZmZmMWUJCUAgYngJbHIKKysjZW5kaWYKKyAuc2l6ZQlfYXJtdjdfdGljaywuLV9hcm12N190aWNrCisgCisrLmdsb2JhbAlfYXJtdjhfYWVzX3Byb2JlCisrLnR5cGUJX2FybXY4X2Flc19wcm9iZSwlZnVuY3Rpb24KKytfYXJtdjhfYWVzX3Byb2JlOgorKwkuYnl0ZQkweDAwLDB4MDMsMHhiMCwweGYzCUAgYWVzZS44CXEwLHEwCisrCS5ieXRlCTB4MWUsMHhmZiwweDJmLDB4ZTEJQCBieAlscgorKy5zaXplCV9hcm12OF9hZXNfcHJvYmUsLi1fYXJtdjhfYWVzX3Byb2JlCisrCisrLmdsb2JhbAlfYXJtdjhfc2hhMV9wcm9iZQorKy50eXBlCV9hcm12OF9zaGExX3Byb2JlLCVmdW5jdGlvbgorK19hcm12OF9zaGExX3Byb2JlOgorKwkuYnl0ZQkweDQwLDB4MGMsMHgwMCwweGYyCUAgc2hhMWMuMzIJcTAscTAscTAKKysJLmJ5dGUJMHgxZSwweGZmLDB4MmYsMHhlMQlAIGJ4CWxyCisrLnNpemUJX2FybXY4X3NoYTFfcHJvYmUsLi1fYXJtdjhfc2hhMV9wcm9iZQorKworKy5nbG9iYWwJX2FybXY4X3NoYTI1Nl9wcm9iZQorKy50eXBlCV9hcm12OF9zaGEyNTZfcHJvYmUsJWZ1bmN0aW9uCisrX2FybXY4X3NoYTI1Nl9wcm9iZToKKysJLmJ5dGUJMHg0MCwweDBjLDB4MDAsMHhmMwlAIHNoYTI1NmguMzIJcTAscTAscTAKKysJLmJ5dGUJMHgxZSwweGZmLDB4MmYsMHhlMQlAIGJ4IGxyCisrLnNpemUJX2FybXY4X3NoYTI1Nl9wcm9iZSwuLV9hcm12OF9zaGEyNTZfcHJvYmUKKysuZ2xvYmFsCV9hcm12OF9wbXVsbF9wcm9iZQorKy50eXBlCV9hcm12OF9wbXVsbF9wcm9iZSwlZnVuY3Rpb24KKytfYXJtdjhfcG11bGxfcHJvYmU6CisrCS5ieXRlCTB4MDAsMHgwZSwweGEwLDB4ZjIJQCB2bXVsbC5wNjQJcTAsZDAsZDAKKysJLmJ5dGUJMHgxZSwweGZmLDB4MmYsMHhlMQlAIGJ4CWxyCisrLnNpemUJX2FybXY4X3BtdWxsX3Byb2JlLC4tX2FybXY4X3BtdWxsX3Byb2JlCisrCisrLmFsaWduCTUKKyAuZ2xvYmFsCU9QRU5TU0xfYXRvbWljX2FkZAorIC50eXBlCU9QRU5TU0xfYXRvbWljX2FkZCwlZnVuY3Rpb24KKyBPUEVOU1NMX2F0b21pY19hZGQ6CitAQCAtMjgsNyArNjAsNyBAQCBPUEVOU1NMX2F0b21pY19hZGQ6CisgCWNtcAlyMiwjMAorIAlibmUJLkxhZGQKKyAJbW92CXIwLHIzCistCS53b3JkCTB4ZTEyZmZmMWUJQCBieAlscgorKwlieAlscgorICNlbHNlCisgCXN0bWRiCXNwISx7cjQtcjYsbHJ9CisgCWxkcglyMiwuTHNwaW5sb2NrCitAQCAtODEsOSArMTEzLDEzIEBAIE9QRU5TU0xfY2xlYW5zZToKKyAJYWRkcwlyMSxyMSwjNAorIAlibmUJLkxpdHRsZQorIC5MY2xlYW5zZV9kb25lOgorKyNpZiBfX0FSTV9BUkNIX18+PTUKKysJYngJbHIKKysjZWxzZQorIAl0c3QJbHIsIzEKKyAJbW92ZXEJcGMsbHIKKyAJLndvcmQJMHhlMTJmZmYxZQlAIGJ4CWxyCisrI2VuZGlmCisgLnNpemUJT1BFTlNTTF9jbGVhbnNlLC4tT1BFTlNTTF9jbGVhbnNlCisgCisgLmdsb2JhbAlPUEVOU1NMX3dpcGVfY3B1CitAQCAtOTcsNDEgKzEzMyw1MyBAQCBPUEVOU1NMX3dpcGVfY3B1OgorIAllb3IJaXAsaXAsaXAKKyAJdHN0CXIwLCMxCisgCWJlcQkuTHdpcGVfZG9uZQorLQkud29yZAkweGYzMDAwMTUwCUAgdmVvciAgICBxMCwgcTAsIHEwCistCS53b3JkCTB4ZjMwMjIxNTIJQCB2ZW9yICAgIHExLCBxMSwgcTEKKy0JLndvcmQJMHhmMzA0NDE1NAlAIHZlb3IgICAgcTIsIHEyLCBxMgorLQkud29yZAkweGYzMDY2MTU2CUAgdmVvciAgICBxMywgcTMsIHEzCistCS53b3JkCTB4ZjM0MDAxZjAJQCB2ZW9yICAgIHE4LCBxOCwgcTgKKy0JLndvcmQJMHhmMzQyMjFmMglAIHZlb3IgICAgcTksIHE5LCBxOQorLQkud29yZAkweGYzNDQ0MWY0CUAgdmVvciAgICBxMTAsIHExMCwgcTEwCistCS53b3JkCTB4ZjM0NjYxZjYJQCB2ZW9yICAgIHExMSwgcTExLCBxMTEKKy0JLndvcmQJMHhmMzQ4ODFmOAlAIHZlb3IgICAgcTEyLCBxMTIsIHExMgorLQkud29yZAkweGYzNGFhMWZhCUAgdmVvciAgICBxMTMsIHExMywgcTEzCistCS53b3JkCTB4ZjM0Y2MxZmMJQCB2ZW9yICAgIHExNCwgcTE0LCBxMTQKKy0JLndvcmQJMHhmMzRlZTFmZQlAIHZlb3IgICAgcTE1LCBxMTUsIHExNQorKwkuYnl0ZQkweDUwLDB4MDEsMHgwMCwweGYzCUAgdmVvcglxMCwgcTAsIHEwCisrCS5ieXRlCTB4NTIsMHgyMSwweDAyLDB4ZjMJQCB2ZW9yCXExLCBxMSwgcTEKKysJLmJ5dGUJMHg1NCwweDQxLDB4MDQsMHhmMwlAIHZlb3IJcTIsIHEyLCBxMgorKwkuYnl0ZQkweDU2LDB4NjEsMHgwNiwweGYzCUAgdmVvcglxMywgcTMsIHEzCisrCS5ieXRlCTB4ZjAsMHgwMSwweDQwLDB4ZjMJQCB2ZW9yCXE4LCBxOCwgcTgKKysJLmJ5dGUJMHhmMiwweDIxLDB4NDIsMHhmMwlAIHZlb3IJcTksIHE5LCBxOQorKwkuYnl0ZQkweGY0LDB4NDEsMHg0NCwweGYzCUAgdmVvcglxMTAsIHExMCwgcTEwCisrCS5ieXRlCTB4ZjYsMHg2MSwweDQ2LDB4ZjMJQCB2ZW9yCXExMSwgcTExLCBxMTEKKysJLmJ5dGUJMHhmOCwweDgxLDB4NDgsMHhmMwlAIHZlb3IJcTEyLCBxMTIsIHExMgorKwkuYnl0ZQkweGZhLDB4YTEsMHg0YSwweGYzCUAgdmVvcglxMTMsIHExMywgcTEzCisrCS5ieXRlCTB4ZmMsMHhjMSwweDRjLDB4ZjMJQCB2ZW9yCXExNCwgcTE0LCBxMTQKKysJLmJ5dGUJMHhmZSwweGUxLDB4NGUsMHhmMwlAIHZlb3IJcTE0LCBxMTQsIHExNAorIC5Md2lwZV9kb25lOgorIAltb3YJcjAsc3AKKysjaWYgX19BUk1fQVJDSF9fPj01CisrCWJ4CWxyCisrI2Vsc2UKKyAJdHN0CWxyLCMxCisgCW1vdmVxCXBjLGxyCisgCS53b3JkCTB4ZTEyZmZmMWUJQCBieAlscgorKyNlbmRpZgorIC5zaXplCU9QRU5TU0xfd2lwZV9jcHUsLi1PUEVOU1NMX3dpcGVfY3B1CisgCisgLmdsb2JhbAlPUEVOU1NMX2luc3RydW1lbnRfYnVzCisgLnR5cGUJT1BFTlNTTF9pbnN0cnVtZW50X2J1cywlZnVuY3Rpb24KKyBPUEVOU1NMX2luc3RydW1lbnRfYnVzOgorIAllb3IJcjAscjAscjAKKysjaWYgX19BUk1fQVJDSF9fPj01CisrCWJ4CWxyCisrI2Vsc2UKKyAJdHN0CWxyLCMxCisgCW1vdmVxCXBjLGxyCisgCS53b3JkCTB4ZTEyZmZmMWUJQCBieAlscgorKyNlbmRpZgorIC5zaXplCU9QRU5TU0xfaW5zdHJ1bWVudF9idXMsLi1PUEVOU1NMX2luc3RydW1lbnRfYnVzCisgCisgLmdsb2JhbAlPUEVOU1NMX2luc3RydW1lbnRfYnVzMgorIC50eXBlCU9QRU5TU0xfaW5zdHJ1bWVudF9idXMyLCVmdW5jdGlvbgorIE9QRU5TU0xfaW5zdHJ1bWVudF9idXMyOgorIAllb3IJcjAscjAscjAKKysjaWYgX19BUk1fQVJDSF9fPj01CisrCWJ4CWxyCisrI2Vsc2UKKyAJdHN0CWxyLCMxCisgCW1vdmVxCXBjLGxyCisgCS53b3JkCTB4ZTEyZmZmMWUJQCBieAlscgorKyNlbmRpZgorIC5zaXplCU9QRU5TU0xfaW5zdHJ1bWVudF9idXMyLC4tT1BFTlNTTF9pbnN0cnVtZW50X2J1czIKKyAKKyAuYWxpZ24JNQorZGlmZiAtLWdpdCBhL2NyeXB0by9ibi9NYWtlZmlsZSBiL2NyeXB0by9ibi9NYWtlZmlsZQoraW5kZXggNmRkMTM2Yi4uZWZmYzQwOSAxMDA2NDQKKy0tLSBhL2NyeXB0by9ibi9NYWtlZmlsZQorKysrIGIvY3J5cHRvL2JuL01ha2VmaWxlCitAQCAtMTMwLDkgKzEzMCwxMCBAQCBhbHBoYS1tb250LnM6CWFzbS9hbHBoYS1tb250LnBsCisgCSQoQ0MpIC1FICQkcHJlcHJvYyA+ICRAICYmIHJtICQkcHJlcHJvYykKKyAKKyAjIEdOVSBtYWtlICJjYXRjaCBhbGwiCistJS1tb250LnM6CWFzbS8lLW1vbnQucGw7CSQoUEVSTCkgJDwgJChQRVJMQVNNX1NDSEVNRSkgJEAKKyslLW1vbnQuUzoJYXNtLyUtbW9udC5wbDsJJChQRVJMKSAkPCAkKFBFUkxBU01fU0NIRU1FKSAkQAorICUtZ2YybS5TOglhc20vJS1nZjJtLnBsOwkkKFBFUkwpICQ8ICQoUEVSTEFTTV9TQ0hFTUUpICRACisgCisrYXJtdjQtbW9udC5vOglhcm12NC1tb250LlMKKyBhcm12NC1nZjJtLm86CWFybXY0LWdmMm0uUworIAorIGZpbGVzOgorZGlmZiAtLWdpdCBhL2NyeXB0by9ibi9hc20vYXJtdjQtZ2YybS5wbCBiL2NyeXB0by9ibi9hc20vYXJtdjQtZ2YybS5wbAoraW5kZXggYzUyZTBiNy4uYjc4MWFmYiAxMDA2NDQKKy0tLSBhL2NyeXB0by9ibi9hc20vYXJtdjQtZ2YybS5wbAorKysrIGIvY3J5cHRvL2JuL2FzbS9hcm12NC1nZjJtLnBsCitAQCAtMjAsMTQgKzIwLDIxIEBACisgIyBsZW5ndGgsIG1vcmUgZm9yIGxvbmdlciBrZXlzLiBFdmVuIHRob3VnaCBORU9OIDF4MSBtdWx0aXBsaWNhdGlvbgorICMgcnVucyBpbiBldmVuIGxlc3MgY3ljbGVzLCB+MzAsIGltcHJvdmVtZW50IGlzIG1lYXN1cmFibGUgb25seSBvbgorICMgbG9uZ2VyIGtleXMuIE9uZSBoYXMgdG8gb3B0aW1pemUgY29kZSBlbHNld2hlcmUgdG8gZ2V0IE5FT04gZ2xvdy4uLgorKyMKKysjIEFwcmlsIDIwMTQKKysjCisrIyBEb3VibGUgYm5fR0YybV9tdWxfMngyIHBlcmZvcm1hbmNlIGJ5IHVzaW5nIGFsZ29yaXRobSBmcm9tIHBhcGVyCisrIyByZWZlcnJlZCBiZWxvdywgd2hpY2ggaW1wcm92ZXMgRUNESCBhbmQgRUNEU0EgdmVyaWZ5IGJlbmNobWFya3MKKysjIGJ5IDE4LTQwJS4KKysjCisrIyBD4m1hcmEsIEQuOyBHb3V26mEsIEMuIFAuIEwuOyBM83BleiwgSi4gJiBEYWhhYiwgUi46IEZhc3QgU29mdHdhcmUKKysjIFBvbHlub21pYWwgTXVsdGlwbGljYXRpb24gb24gQVJNIFByb2Nlc3NvcnMgdXNpbmcgdGhlIE5FT04gRW5naW5lLgorKyMgCisrIyBodHRwOi8vY29ucmFkb3BsZy5jcnlwdG9sYW5kLm5ldC9maWxlcy8yMDEwLzEyL21vY3J5c2VuMTMucGRmCisgCisgd2hpbGUgKCgkb3V0cHV0PXNoaWZ0KSAmJiAoJG91dHB1dCF+L15cd1tcd1wtXSpcLlx3KyQvKSkge30KKyBvcGVuIFNURE9VVCwiPiRvdXRwdXQiOworIAorLXN1YiBEbG8oKSAgIHsgc2hpZnQ9fm18cShbMV0/WzAtOV0pfD8iZCIuKCQxKjIpOiIiOyAgICAgfQorLXN1YiBEaGkoKSAgIHsgc2hpZnQ9fm18cShbMV0/WzAtOV0pfD8iZCIuKCQxKjIrMSk6IiI7ICAgfQorLXN1YiBRKCkgICAgIHsgc2hpZnQ9fm18ZChbMS0zXT9bMDI0NjhdKXw/InEiLigkMS8yKToiIjsgfQorLQorICRjb2RlPTw8X19fOworICNpbmNsdWRlICJhcm1fYXJjaC5oIgorIAorQEAgLTM2LDMxICs0Myw2IEBAICRjb2RlPTw8X19fOworIAorICNpZiBfX0FSTV9BUkNIX18+PTcKKyAuZnB1CW5lb24KKy0KKy0udHlwZQltdWxfMXgxX25lb24sJWZ1bmN0aW9uCistLmFsaWduCTUKKy1tdWxfMXgxX25lb246CistCXZzaGwudTY0CWAmRGxvKCJxMSIpYCxkMTYsIzgJQCBxMS1xMyBhcmUgc2xpZGVkICRhCistCXZtdWxsLnA4CWAmUSgiZDAiKWAsZDE2LGQxNwlAIGG3YmIKKy0JdnNobC51NjQJYCZEbG8oInEyIilgLGQxNiwjMTYKKy0Jdm11bGwucDgJcTEsYCZEbG8oInExIilgLGQxNwlAIGE8PDi3YmIKKy0JdnNobC51NjQJYCZEbG8oInEzIilgLGQxNiwjMjQKKy0Jdm11bGwucDgJcTIsYCZEbG8oInEyIilgLGQxNwlAIGE8PDE2t2JiCistCXZzaHIudTY0CWAmRGxvKCJxMSIpYCwjOAorLQl2bXVsbC5wOAlxMyxgJkRsbygicTMiKWAsZDE3CUAgYTw8MjS3YmIKKy0JdnNobC51NjQJYCZEaGkoInExIilgLCMyNAorLQl2ZW9yCQlkMCxgJkRsbygicTEiKWAKKy0JdnNoci51NjQJYCZEbG8oInEyIilgLCMxNgorLQl2ZW9yCQlkMCxgJkRoaSgicTEiKWAKKy0JdnNobC51NjQJYCZEaGkoInEyIilgLCMxNgorLQl2ZW9yCQlkMCxgJkRsbygicTIiKWAKKy0JdnNoci51NjQJYCZEbG8oInEzIilgLCMyNAorLQl2ZW9yCQlkMCxgJkRoaSgicTIiKWAKKy0JdnNobC51NjQJYCZEaGkoInEzIilgLCM4CistCXZlb3IJCWQwLGAmRGxvKCJxMyIpYAorLQl2ZW9yCQlkMCxgJkRoaSgicTMiKWAKKy0JYngJbHIKKy0uc2l6ZQltdWxfMXgxX25lb24sLi1tdWxfMXgxX25lb24KKyAjZW5kaWYKKyBfX18KKyAjIyMjIyMjIyMjIyMjIyMjCitAQCAtMTU5LDggKzE0MSw5IEBAIF9fXworICMgdm9pZAlibl9HRjJtX211bF8yeDIoQk5fVUxPTkcgKnIsCisgIwlCTl9VTE9ORyBhMSxCTl9VTE9ORyBhMCwKKyAjCUJOX1VMT05HIGIxLEJOX1VMT05HIGIwKTsJIyByWzMuLjBdPWExYTC3YjFiMAorLQorLSgkQTEsJEIxLCRBMCwkQjAsJEExQjEsJEEwQjApPW1hcCgiZCRfIiwoMTguLjIzKSk7CisreworK215ICgkciwkdDAsJHQxLCR0MiwkdDMpPW1hcCgicSRfIiwoMC4uMyw4Li4xMikpOworK215ICgkYSwkYiwkazQ4LCRrMzIsJGsxNik9bWFwKCJkJF8iLCgyNi4uMzEpKTsKKyAKKyAkY29kZS49PDxfX187CisgLmdsb2JhbAlibl9HRjJtX211bF8yeDIKK0BAIC0xNzMsNDQgKzE1Niw1OCBAQCBibl9HRjJtX211bF8yeDI6CisgCXRzdAlyMTIsIzEKKyAJYmVxCS5MaWFsdQorIAorLQl2ZW9yCSRBMSwkQTEKKy0Jdm1vdi4zMgkkQjEscjMscjMJCUAgdHdvIGNvcGllcyBvZiBiMQorLQl2bW92LjMyCSR7QTF9WzBdLHIxCQlAIGExCistCistCXZlb3IJJEEwLCRBMAorLQl2bGQxLjMyCSR7QjB9W10sW3NwLDozMl0JQCB0d28gY29waWVzIG9mIGIwCistCXZtb3YuMzIJJHtBMH1bMF0scjIJCUAgYTAKKy0JbW92CXIxMixscgorLQorLQl2bW92CWQxNiwkQTEKKy0Jdm1vdglkMTcsJEIxCistCWJsCW11bF8xeDFfbmVvbgkJQCBhMbdiMQorLQl2bW92CSRBMUIxLGQwCistCistCXZtb3YJZDE2LCRBMAorLQl2bW92CWQxNywkQjAKKy0JYmwJbXVsXzF4MV9uZW9uCQlAIGEwt2IwCistCXZtb3YJJEEwQjAsZDAKKy0KKy0JdmVvcglkMTYsJEEwLCRBMQorLQl2ZW9yCWQxNywkQjAsJEIxCistCXZlb3IJJEEwLCRBMEIwLCRBMUIxCistCWJsCW11bF8xeDFfbmVvbgkJQCAoYTArYTEptyhiMCtiMSkKKy0KKy0JdmVvcglkMCwkQTAJCQlAIChhMCthMSm3KGIwK2IxKS1hMLdiMC1hMbdiMQorLQl2c2hsLnU2NCBkMSxkMCwjMzIKKy0JdnNoci51NjQgZDAsZDAsIzMyCistCXZlb3IJJEEwQjAsZDEKKy0JdmVvcgkkQTFCMSxkMAorLQl2c3QxLjMyCXske0EwQjB9WzBdfSxbcjAsOjMyXSEKKy0JdnN0MS4zMgl7JHtBMEIwfVsxXX0sW3IwLDozMl0hCistCXZzdDEuMzIJeyR7QTFCMX1bMF19LFtyMCw6MzJdIQorLQl2c3QxLjMyCXske0ExQjF9WzFdfSxbcjAsOjMyXQorLQlieAlyMTIKKysJbGRyCQlyMTIsIFtzcF0JCUAgNXRoIGFyZ3VtZW50CisrCXZtb3YuMzIJCSRhLCByMiwgcjEKKysJdm1vdi4zMgkJJGIsIHIxMiwgcjMKKysJdm1vdi5pNjQJJGs0OCwgIzB4MDAwMGZmZmZmZmZmZmZmZgorKwl2bW92Lmk2NAkkazMyLCAjMHgwMDAwMDAwMGZmZmZmZmZmCisrCXZtb3YuaTY0CSRrMTYsICMweDAwMDAwMDAwMDAwMGZmZmYKKysKKysJdmV4dC44CQkkdDAjbG8sICRhLCAkYSwgIzEJQCBBMQorKwl2bXVsbC5wOAkkdDAsICR0MCNsbywgJGIJCUAgRiA9IEExKkIKKysJdmV4dC44CQkkciNsbywgJGIsICRiLCAjMQlAIEIxCisrCXZtdWxsLnA4CSRyLCAkYSwgJHIjbG8JCUAgRSA9IEEqQjEKKysJdmV4dC44CQkkdDEjbG8sICRhLCAkYSwgIzIJQCBBMgorKwl2bXVsbC5wOAkkdDEsICR0MSNsbywgJGIJCUAgSCA9IEEyKkIKKysJdmV4dC44CQkkdDMjbG8sICRiLCAkYiwgIzIJQCBCMgorKwl2bXVsbC5wOAkkdDMsICRhLCAkdDMjbG8JCUAgRyA9IEEqQjIKKysJdmV4dC44CQkkdDIjbG8sICRhLCAkYSwgIzMJQCBBMworKwl2ZW9yCQkkdDAsICR0MCwgJHIJCUAgTCA9IEUgKyBGCisrCXZtdWxsLnA4CSR0MiwgJHQyI2xvLCAkYgkJQCBKID0gQTMqQgorKwl2ZXh0LjgJCSRyI2xvLCAkYiwgJGIsICMzCUAgQjMKKysJdmVvcgkJJHQxLCAkdDEsICR0MwkJQCBNID0gRyArIEgKKysJdm11bGwucDgJJHIsICRhLCAkciNsbwkJQCBJID0gQSpCMworKwl2ZW9yCQkkdDAjbG8sICR0MCNsbywgJHQwI2hpCUAgdDAgPSAoTCkgKFAwICsgUDEpIDw8IDgKKysJdmFuZAkJJHQwI2hpLCAkdDAjaGksICRrNDgKKysJdmV4dC44CQkkdDMjbG8sICRiLCAkYiwgIzQJQCBCNAorKwl2ZW9yCQkkdDEjbG8sICR0MSNsbywgJHQxI2hpCUAgdDEgPSAoTSkgKFAyICsgUDMpIDw8IDE2CisrCXZhbmQJCSR0MSNoaSwgJHQxI2hpLCAkazMyCisrCXZtdWxsLnA4CSR0MywgJGEsICR0MyNsbwkJQCBLID0gQSpCNAorKwl2ZW9yCQkkdDIsICR0MiwgJHIJCUAgTiA9IEkgKyBKCisrCXZlb3IJCSR0MCNsbywgJHQwI2xvLCAkdDAjaGkKKysJdmVvcgkJJHQxI2xvLCAkdDEjbG8sICR0MSNoaQorKwl2ZW9yCQkkdDIjbG8sICR0MiNsbywgJHQyI2hpCUAgdDIgPSAoTikgKFA0ICsgUDUpIDw8IDI0CisrCXZhbmQJCSR0MiNoaSwgJHQyI2hpLCAkazE2CisrCXZleHQuOAkJJHQwLCAkdDAsICR0MCwgIzE1CisrCXZlb3IJCSR0MyNsbywgJHQzI2xvLCAkdDMjaGkJQCB0MyA9IChLKSAoUDYgKyBQNykgPDwgMzIKKysJdm1vdi5pNjQJJHQzI2hpLCAjMAorKwl2ZXh0LjgJCSR0MSwgJHQxLCAkdDEsICMxNAorKwl2ZW9yCQkkdDIjbG8sICR0MiNsbywgJHQyI2hpCisrCXZtdWxsLnA4CSRyLCAkYSwgJGIJCUAgRCA9IEEqQgorKwl2ZXh0LjgJCSR0MywgJHQzLCAkdDMsICMxMgorKwl2ZXh0LjgJCSR0MiwgJHQyLCAkdDIsICMxMworKwl2ZW9yCQkkdDAsICR0MCwgJHQxCisrCXZlb3IJCSR0MiwgJHQyLCAkdDMKKysJdmVvcgkJJHIsICRyLCAkdDAKKysJdmVvcgkJJHIsICRyLCAkdDIKKysKKysJdnN0MS4zMgkJeyRyfSwgW3IwXQorKwlyZXQJCUAgYnggbHIKKyAuYWxpZ24JNAorIC5MaWFsdToKKyAjZW5kaWYKKyBfX18KKyt9CisgJHJldD0icjEwIjsJIyByZWFzc2lnbmVkIDFzdCBhcmd1bWVudAorICRjb2RlLj08PF9fXzsKKyAJc3RtZGIJc3AhLHtyNC1yMTAsbHJ9CitAQCAtMjcyLDcgKzI2OSwxMyBAQCAkY29kZS49PDxfX187CisgLmNvbW0JT1BFTlNTTF9hcm1jYXBfUCw0LDQKKyBfX18KKyAKKy0kY29kZSA9fiBzL1xgKFteXGBdKilcYC9ldmFsICQxL2dlbTsKKy0kY29kZSA9fiBzL1xiYnhccytsclxiLy53b3JkXHQweGUxMmZmZjFlL2dtOyAgICAjIG1ha2UgaXQgcG9zc2libGUgdG8gY29tcGlsZSB3aXRoIC1tYXJjaD1hcm12NAorLXByaW50ICRjb2RlOworK2ZvcmVhY2ggKHNwbGl0KCJcbiIsJGNvZGUpKSB7CisrCXMvXGAoW15cYF0qKVxgL2V2YWwgJDEvZ2VvOworKworKwlzL1xicShbMC05XSspIyhsb3xoaSkvc3ByaW50ZiAiZCVkIiwyKiQxKygkMiBlcSAiaGkiKS9nZW8Jb3IKKysJcy9cYnJldFxiL2J4CWxyL2dvCQlvcgorKwlzL1xiYnhccytsclxiLy53b3JkXHQweGUxMmZmZjFlL2dvOyAgICAjIG1ha2UgaXQgcG9zc2libGUgdG8gY29tcGlsZSB3aXRoIC1tYXJjaD1hcm12NAorKworKwlwcmludCAkXywiXG4iOworK30KKyBjbG9zZSBTVERPVVQ7ICAgIyBlbmZvcmNlIGZsdXNoCitkaWZmIC0tZ2l0IGEvY3J5cHRvL2JuL2FzbS9hcm12NC1tb250LnBsIGIvY3J5cHRvL2JuL2FzbS9hcm12NC1tb250LnBsCitpbmRleCBmNzhhOGI1Li43MmJhZDhlIDEwMDY0NAorLS0tIGEvY3J5cHRvL2JuL2FzbS9hcm12NC1tb250LnBsCisrKysgYi9jcnlwdG8vYm4vYXNtL2FybXY0LW1vbnQucGwKK0BAIC0xLDcgKzEsNyBAQAorICMhL3Vzci9iaW4vZW52IHBlcmwKKyAKKyAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistIyBXcml0dGVuIGJ5IEFuZHkgUG9seWFrb3YgPGFwcHJvQGZ5LmNoYWxtZXJzLnNlPiBmb3IgdGhlIE9wZW5TU0wKKysjIFdyaXR0ZW4gYnkgQW5keSBQb2x5YWtvdiA8YXBwcm9Ab3BlbnNzbC5vcmc+IGZvciB0aGUgT3BlblNTTAorICMgcHJvamVjdC4gVGhlIG1vZHVsZSBpcywgaG93ZXZlciwgZHVhbCBsaWNlbnNlZCB1bmRlciBPcGVuU1NMIGFuZAorICMgQ1JZUFRPR0FNUyBsaWNlbnNlcyBkZXBlbmRpbmcgb24gd2hlcmUgeW91IG9idGFpbiBpdC4gRm9yIGZ1cnRoZXIKKyAjIGRldGFpbHMgc2VlIGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvfmFwcHJvL2NyeXB0b2dhbXMvLgorQEAgLTIzLDYgKzIzLDIxIEBACisgIyB0aGFuIDEvMktCLiBXaW5kb3dzIENFIHBvcnQgd291bGQgYmUgdHJpdmlhbCwgYXMgaXQncyBleGNsdXNpdmVseQorICMgYWJvdXQgZGVjb3JhdGlvbnMsIEFCSSBhbmQgaW5zdHJ1Y3Rpb24gc3ludGF4IGFyZSBpZGVudGljYWwuCisgCisrIyBOb3ZlbWJlciAyMDEzCisrIworKyMgQWRkIE5FT04gY29kZSBwYXRoLCB3aGljaCBoYW5kbGVzIGxlbmd0aHMgZGl2aXNpYmxlIGJ5IDguIFJTQS9EU0EKKysjIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50IG9uIENvcnRleC1BOCBpcyB+NDUtMTAwJSBkZXBlbmRpbmcgb24ga2V5CisrIyBsZW5ndGgsIG1vcmUgZm9yIGxvbmdlciBrZXlzLiBPbiBDb3J0ZXgtQTE1IHRoZSBzcGFuIGlzIH4xMC0xMDUlLgorKyMgT24gU25hcGRyYWdvbiBTNCBpbXByb3ZlbWVudCB3YXMgbWVhc3VyZWQgdG8gdmFyeSBmcm9tIH43MCUgdG8KKysjIGluY3JlZGlibGUgfjM4MCUsIHllcywgNC44eCBmYXN0ZXIsIGZvciBSU0E0MDk2IHNpZ24uIEJ1dCB0aGlzIGlzCisrIyByYXRoZXIgYmVjYXVzZSBvcmlnaW5hbCBpbnRlZ2VyLW9ubHkgY29kZSBzZWVtcyB0byBwZXJmb3JtCisrIyBzdWJvcHRpbWFsbHkgb24gUzQuIFNpdHVhdGlvbiBvbiBDb3J0ZXgtQTkgaXMgdW5mb3J0dW5hdGVseQorKyMgZGlmZmVyZW50LiBJdCdzIGJlaW5nIGxvb2tlZCBpbnRvLCBidXQgdGhlIHRyb3VibGUgaXMgdGhhdAorKyMgcGVyZm9ybWFuY2UgZm9yIHZlY3RvcnMgbG9uZ2VyIHRoYW4gMjU2IGJpdHMgaXMgYWN0dWFsbHkgY291cGxlCisrIyBvZiBwZXJjZW50IHdvcnNlIHRoYW4gZm9yIGludGVnZXItb25seSBjb2RlLiBUaGUgY29kZSBpcyBjaG9zZW4KKysjIGZvciBleGVjdXRpb24gb24gYWxsIE5FT04tY2FwYWJsZSBwcm9jZXNzb3JzLCBiZWNhdXNlIGdhaW4gb24KKysjIG90aGVycyBvdXR3ZWlnaHMgdGhlIG1hcmdpbmFsIGxvc3Mgb24gQ29ydGV4LUE5LgorKworIHdoaWxlICgoJG91dHB1dD1zaGlmdCkgJiYgKCRvdXRwdXQhfi9eXHdbXHdcLV0qXC5cdyskLykpIHt9Cisgb3BlbiBTVERPVVQsIj4kb3V0cHV0IjsKKyAKK0BAIC01MiwxNiArNjcsNDAgQEAgJF9uMD0iJG51bSwjMTQqNCI7CisgJF9udW09IiRudW0sIzE1KjQiOwkkX2JwZW5kPSRfbnVtOworIAorICRjb2RlPTw8X19fOworKyNpbmNsdWRlICJhcm1fYXJjaC5oIgorKworIC50ZXh0CisrLmNvZGUJMzIKKysKKysjaWYgX19BUk1fQVJDSF9fPj03CisrLmFsaWduCTUKKysuTE9QRU5TU0xfYXJtY2FwOgorKy53b3JkCU9QRU5TU0xfYXJtY2FwX1AtYm5fbXVsX21vbnQKKysjZW5kaWYKKyAKKyAuZ2xvYmFsCWJuX211bF9tb250CisgLnR5cGUJYm5fbXVsX21vbnQsJWZ1bmN0aW9uCisgCistLmFsaWduCTIKKysuYWxpZ24JNQorIGJuX211bF9tb250OgorKwlsZHIJaXAsW3NwLCM0XQkJQCBsb2FkIG51bQorIAlzdG1kYglzcCEse3IwLHIyfQkJQCBzcCBwb2ludHMgYXQgYXJndW1lbnQgYmxvY2sKKy0JbGRyCSRudW0sW3NwLCMzKjRdCQlAIGxvYWQgbnVtCistCWNtcAkkbnVtLCMyCisrI2lmIF9fQVJNX0FSQ0hfXz49NworKwl0c3QJaXAsIzcKKysJYm5lCS5MaWFsdQorKwlhZHIJcjAsYm5fbXVsX21vbnQKKysJbGRyCXIyLC5MT1BFTlNTTF9hcm1jYXAKKysJbGRyCXIwLFtyMCxyMl0KKysJdHN0CXIwLCMxCQkJQCBORU9OIGF2YWlsYWJsZT8KKysJbGRtaWEJc3AsIHtyMCxyMn0KKysJYmVxCS5MaWFsdQorKwlhZGQJc3Asc3AsIzgKKysJYglibl9tdWw4eF9tb250X25lb24KKysuYWxpZ24JNAorKy5MaWFsdToKKysjZW5kaWYKKysJY21wCWlwLCMyCisrCW1vdgkkbnVtLGlwCQkJQCBsb2FkIG51bQorIAltb3ZsdAlyMCwjMAorIAlhZGRsdAlzcCxzcCwjMio0CisgCWJsdAkuTGFicnQKK0BAIC0xOTEsMTQgKzIzMCw0NDYgQEAgYm5fbXVsX21vbnQ6CisgCWxkbWlhCXNwISx7cjQtcjEyLGxyfQkJQCByZXN0b3JlIHJlZ2lzdGVycworIAlhZGQJc3Asc3AsIzIqNAkJQCBza2lwIG92ZXIge3IwLHIyfQorIAltb3YJcjAsIzEKKy0uTGFicnQ6CXRzdAlsciwjMQorKy5MYWJydDoKKysjaWYgX19BUk1fQVJDSF9fPj01CisrCXJldAkJCQlAIGJ4IGxyCisrI2Vsc2UKKysJdHN0CWxyLCMxCisgCW1vdmVxCXBjLGxyCQkJQCBiZSBiaW5hcnkgY29tcGF0aWJsZSB3aXRoIFY0LCB5ZXQKKyAJYngJbHIJCQlAIGludGVyb3BlcmFibGUgd2l0aCBUaHVtYiBJU0E6LSkKKysjZW5kaWYKKyAuc2l6ZQlibl9tdWxfbW9udCwuLWJuX211bF9tb250CistLmFzY2l6CSJNb250Z29tZXJ5IG11bHRpcGxpY2F0aW9uIGZvciBBUk12NCwgQ1JZUFRPR0FNUyBieSA8YXBwcm9cQG9wZW5zc2wub3JnPiIKKytfX18KKyt7Cisrc3ViIERsbygpICAgeyBzaGlmdD1+bXxxKFsxXT9bMC05XSl8PyJkIi4oJDEqMik6IiI7ICAgICB9Cisrc3ViIERoaSgpICAgeyBzaGlmdD1+bXxxKFsxXT9bMC05XSl8PyJkIi4oJDEqMisxKToiIjsgICB9CisrCisrbXkgKCRBMCwkQTEsJEEyLCRBMyk9bWFwKCJkJF8iLCgwLi4zKSk7CisrbXkgKCROMCwkTjEsJE4yLCROMyk9bWFwKCJkJF8iLCg0Li43KSk7CisrbXkgKCRaLCRUZW1wKT0oInE0IiwicTUiKTsKKytteSAoJEEweEIsJEExeEIsJEEyeEIsJEEzeEIsJEE0eEIsJEE1eEIsJEE2eEIsJEE3eEIpPW1hcCgicSRfIiwoNi4uMTMpKTsKKytteSAoJEJpLCROaSwkTTApPW1hcCgiZCRfIiwoMjguLjMxKSk7CisrbXkgJHplcm89JkRsbygkWik7CisrbXkgJHRlbXA9JkRsbygkVGVtcCk7CisrCisrbXkgKCRycHRyLCRhcHRyLCRicHRyLCRucHRyLCRuMCwkbnVtKT1tYXAoInIkXyIsKDAuLjUpKTsKKytteSAoJHRpbnB0ciwkdG91dHB0ciwkaW5uZXIsJG91dGVyKT1tYXAoInIkXyIsKDYuLjkpKTsKKysKKyskY29kZS49PDxfX187CisrI2lmIF9fQVJNX0FSQ0hfXz49NworKy5mcHUJbmVvbgorKworKy50eXBlCWJuX211bDh4X21vbnRfbmVvbiwlZnVuY3Rpb24KKysuYWxpZ24JNQorK2JuX211bDh4X21vbnRfbmVvbjoKKysJbW92CWlwLHNwCisrCXN0bWRiCXNwISx7cjQtcjExfQorKwl2c3RtZGIJc3AhLHtkOC1kMTV9CQlAIEFCSSBzcGVjaWZpY2F0aW9uIHNheXMgc28KKysJbGRtaWEJaXAse3I0LXI1fQkJQCBsb2FkIHJlc3Qgb2YgcGFyYW1ldGVyIGJsb2NrCisrCisrCXN1YgkJJHRvdXRwdHIsc3AsIzE2CisrCXZsZDEuMzIJCXske0JpfVswXX0sIFskYnB0ciw6MzJdIQorKwlzdWIJCSR0b3V0cHRyLCR0b3V0cHRyLCRudW0sbHNsIzQKKysJdmxkMS4zMgkJeyRBMC0kQTN9LCAgWyRhcHRyXSEJCUAgY2FuJ3Qgc3BlY2lmeSA6MzIgOi0oCisrCWFuZAkJJHRvdXRwdHIsJHRvdXRwdHIsIy02NAorKwl2bGQxLjMyCQl7JHtNMH1bMF19LCBbJG4wLDozMl0KKysJbW92CQlzcCwkdG91dHB0cgkJCUAgYWxsb2NhCisrCXZlb3IJCSR6ZXJvLCR6ZXJvLCR6ZXJvCisrCXN1YnMJCSRpbm5lciwkbnVtLCM4CisrCXZ6aXAuMTYJCSRCaSwkemVybworKworKwl2bXVsbC51MzIJJEEweEIsJEJpLCR7QTB9WzBdCisrCXZtdWxsLnUzMgkkQTF4QiwkQmksJHtBMH1bMV0KKysJdm11bGwudTMyCSRBMnhCLCRCaSwke0ExfVswXQorKwl2c2hsLmk2NAkkdGVtcCxgJkRoaSgiJEEweEIiKWAsIzE2CisrCXZtdWxsLnUzMgkkQTN4QiwkQmksJHtBMX1bMV0KKysKKysJdmFkZC51NjQJJHRlbXAsJHRlbXAsYCZEbG8oIiRBMHhCIilgCisrCXZlb3IJCSR6ZXJvLCR6ZXJvLCR6ZXJvCisrCXZtdWwudTMyCSROaSwkdGVtcCwkTTAKKysKKysJdm11bGwudTMyCSRBNHhCLCRCaSwke0EyfVswXQorKwkgdmxkMS4zMgl7JE4wLSROM30sIFskbnB0cl0hCisrCXZtdWxsLnUzMgkkQTV4QiwkQmksJHtBMn1bMV0KKysJdm11bGwudTMyCSRBNnhCLCRCaSwke0EzfVswXQorKwl2emlwLjE2CQkkTmksJHplcm8KKysJdm11bGwudTMyCSRBN3hCLCRCaSwke0EzfVsxXQorKworKwlibmUJLkxORU9OXzFzdAorKworKwlAIHNwZWNpYWwgY2FzZSBmb3IgbnVtPTgsIGV2ZXJ5dGhpbmcgaXMgaW4gcmVnaXN0ZXIgYmFuay4uLgorKworKwl2bWxhbC51MzIJJEEweEIsJE5pLCR7TjB9WzBdCisrCXN1YgkJJG91dGVyLCRudW0sIzEKKysJdm1sYWwudTMyCSRBMXhCLCROaSwke04wfVsxXQorKwl2bWxhbC51MzIJJEEyeEIsJE5pLCR7TjF9WzBdCisrCXZtbGFsLnUzMgkkQTN4QiwkTmksJHtOMX1bMV0KKysKKysJdm1sYWwudTMyCSRBNHhCLCROaSwke04yfVswXQorKwl2bW92CQkkVGVtcCwkQTB4QgorKwl2bWxhbC51MzIJJEE1eEIsJE5pLCR7TjJ9WzFdCisrCXZtb3YJCSRBMHhCLCRBMXhCCisrCXZtbGFsLnUzMgkkQTZ4QiwkTmksJHtOM31bMF0KKysJdm1vdgkJJEExeEIsJEEyeEIKKysJdm1sYWwudTMyCSRBN3hCLCROaSwke04zfVsxXQorKwl2bW92CQkkQTJ4QiwkQTN4QgorKwl2bW92CQkkQTN4QiwkQTR4QgorKwl2c2hyLnU2NAkkdGVtcCwkdGVtcCwjMTYKKysJdm1vdgkJJEE0eEIsJEE1eEIKKysJdm1vdgkJJEE1eEIsJEE2eEIKKysJdmFkZC51NjQJJHRlbXAsJHRlbXAsYCZEaGkoIiRUZW1wIilgCisrCXZtb3YJCSRBNnhCLCRBN3hCCisrCXZlb3IJCSRBN3hCLCRBN3hCCisrCXZzaHIudTY0CSR0ZW1wLCR0ZW1wLCMxNgorKworKwliCS5MTkVPTl9vdXRlcjgKKysKKysuYWxpZ24JNAorKy5MTkVPTl9vdXRlcjg6CisrCXZsZDEuMzIJCXske0JpfVswXX0sIFskYnB0ciw6MzJdIQorKwl2ZW9yCQkkemVybywkemVybywkemVybworKwl2emlwLjE2CQkkQmksJHplcm8KKysJdmFkZC51NjQJYCZEbG8oIiRBMHhCIilgLGAmRGxvKCIkQTB4QiIpYCwkdGVtcAorKworKwl2bWxhbC51MzIJJEEweEIsJEJpLCR7QTB9WzBdCisrCXZtbGFsLnUzMgkkQTF4QiwkQmksJHtBMH1bMV0KKysJdm1sYWwudTMyCSRBMnhCLCRCaSwke0ExfVswXQorKwl2c2hsLmk2NAkkdGVtcCxgJkRoaSgiJEEweEIiKWAsIzE2CisrCXZtbGFsLnUzMgkkQTN4QiwkQmksJHtBMX1bMV0KKysKKysJdmFkZC51NjQJJHRlbXAsJHRlbXAsYCZEbG8oIiRBMHhCIilgCisrCXZlb3IJCSR6ZXJvLCR6ZXJvLCR6ZXJvCisrCXN1YnMJCSRvdXRlciwkb3V0ZXIsIzEKKysJdm11bC51MzIJJE5pLCR0ZW1wLCRNMAorKworKwl2bWxhbC51MzIJJEE0eEIsJEJpLCR7QTJ9WzBdCisrCXZtbGFsLnUzMgkkQTV4QiwkQmksJHtBMn1bMV0KKysJdm1sYWwudTMyCSRBNnhCLCRCaSwke0EzfVswXQorKwl2emlwLjE2CQkkTmksJHplcm8KKysJdm1sYWwudTMyCSRBN3hCLCRCaSwke0EzfVsxXQorKworKwl2bWxhbC51MzIJJEEweEIsJE5pLCR7TjB9WzBdCisrCXZtbGFsLnUzMgkkQTF4QiwkTmksJHtOMH1bMV0KKysJdm1sYWwudTMyCSRBMnhCLCROaSwke04xfVswXQorKwl2bWxhbC51MzIJJEEzeEIsJE5pLCR7TjF9WzFdCisrCisrCXZtbGFsLnUzMgkkQTR4QiwkTmksJHtOMn1bMF0KKysJdm1vdgkJJFRlbXAsJEEweEIKKysJdm1sYWwudTMyCSRBNXhCLCROaSwke04yfVsxXQorKwl2bW92CQkkQTB4QiwkQTF4QgorKwl2bWxhbC51MzIJJEE2eEIsJE5pLCR7TjN9WzBdCisrCXZtb3YJCSRBMXhCLCRBMnhCCisrCXZtbGFsLnUzMgkkQTd4QiwkTmksJHtOM31bMV0KKysJdm1vdgkJJEEyeEIsJEEzeEIKKysJdm1vdgkJJEEzeEIsJEE0eEIKKysJdnNoci51NjQJJHRlbXAsJHRlbXAsIzE2CisrCXZtb3YJCSRBNHhCLCRBNXhCCisrCXZtb3YJCSRBNXhCLCRBNnhCCisrCXZhZGQudTY0CSR0ZW1wLCR0ZW1wLGAmRGhpKCIkVGVtcCIpYAorKwl2bW92CQkkQTZ4QiwkQTd4QgorKwl2ZW9yCQkkQTd4QiwkQTd4QgorKwl2c2hyLnU2NAkkdGVtcCwkdGVtcCwjMTYKKysKKysJYm5lCS5MTkVPTl9vdXRlcjgKKysKKysJdmFkZC51NjQJYCZEbG8oIiRBMHhCIilgLGAmRGxvKCIkQTB4QiIpYCwkdGVtcAorKwltb3YJCSR0b3V0cHRyLHNwCisrCXZzaHIudTY0CSR0ZW1wLGAmRGxvKCIkQTB4QiIpYCwjMTYKKysJbW92CQkkaW5uZXIsJG51bQorKwl2YWRkLnU2NAlgJkRoaSgiJEEweEIiKWAsYCZEaGkoIiRBMHhCIilgLCR0ZW1wCisrCWFkZAkJJHRpbnB0cixzcCwjMTYKKysJdnNoci51NjQJJHRlbXAsYCZEaGkoIiRBMHhCIilgLCMxNgorKwl2emlwLjE2CQlgJkRsbygiJEEweEIiKWAsYCZEaGkoIiRBMHhCIilgCisrCisrCWIJLkxORU9OX3RhaWwyCisrCisrLmFsaWduCTQKKysuTE5FT05fMXN0OgorKwl2bWxhbC51MzIJJEEweEIsJE5pLCR7TjB9WzBdCisrCSB2bGQxLjMyCXskQTAtJEEzfSwgWyRhcHRyXSEKKysJdm1sYWwudTMyCSRBMXhCLCROaSwke04wfVsxXQorKwlzdWJzCQkkaW5uZXIsJGlubmVyLCM4CisrCXZtbGFsLnUzMgkkQTJ4QiwkTmksJHtOMX1bMF0KKysJdm1sYWwudTMyCSRBM3hCLCROaSwke04xfVsxXQorKworKwl2bWxhbC51MzIJJEE0eEIsJE5pLCR7TjJ9WzBdCisrCSB2bGQxLjMyCXskTjAtJE4xfSwgWyRucHRyXSEKKysJdm1sYWwudTMyCSRBNXhCLCROaSwke04yfVsxXQorKwkgdnN0MS42NAl7JEEweEItJEExeEJ9LCBbJHRvdXRwdHIsOjI1Nl0hCisrCXZtbGFsLnUzMgkkQTZ4QiwkTmksJHtOM31bMF0KKysJdm1sYWwudTMyCSRBN3hCLCROaSwke04zfVsxXQorKwkgdnN0MS42NAl7JEEyeEItJEEzeEJ9LCBbJHRvdXRwdHIsOjI1Nl0hCisrCisrCXZtdWxsLnUzMgkkQTB4QiwkQmksJHtBMH1bMF0KKysJIHZsZDEuMzIJeyROMi0kTjN9LCBbJG5wdHJdIQorKwl2bXVsbC51MzIJJEExeEIsJEJpLCR7QTB9WzFdCisrCSB2c3QxLjY0CXskQTR4Qi0kQTV4Qn0sIFskdG91dHB0ciw6MjU2XSEKKysJdm11bGwudTMyCSRBMnhCLCRCaSwke0ExfVswXQorKwl2bXVsbC51MzIJJEEzeEIsJEJpLCR7QTF9WzFdCisrCSB2c3QxLjY0CXskQTZ4Qi0kQTd4Qn0sIFskdG91dHB0ciw6MjU2XSEKKysKKysJdm11bGwudTMyCSRBNHhCLCRCaSwke0EyfVswXQorKwl2bXVsbC51MzIJJEE1eEIsJEJpLCR7QTJ9WzFdCisrCXZtdWxsLnUzMgkkQTZ4QiwkQmksJHtBM31bMF0KKysJdm11bGwudTMyCSRBN3hCLCRCaSwke0EzfVsxXQorKworKwlibmUJLkxORU9OXzFzdAorKworKwl2bWxhbC51MzIJJEEweEIsJE5pLCR7TjB9WzBdCisrCWFkZAkJJHRpbnB0cixzcCwjMTYKKysJdm1sYWwudTMyCSRBMXhCLCROaSwke04wfVsxXQorKwlzdWIJCSRhcHRyLCRhcHRyLCRudW0sbHNsIzIJCUAgcmV3aW5kICRhcHRyCisrCXZtbGFsLnUzMgkkQTJ4QiwkTmksJHtOMX1bMF0KKysJIHZsZDEuNjQJeyRUZW1wfSwgW3NwLDoxMjhdCisrCXZtbGFsLnUzMgkkQTN4QiwkTmksJHtOMX1bMV0KKysJc3ViCQkkb3V0ZXIsJG51bSwjMQorKworKwl2bWxhbC51MzIJJEE0eEIsJE5pLCR7TjJ9WzBdCisrCXZzdDEuNjQJCXskQTB4Qi0kQTF4Qn0sIFskdG91dHB0ciw6MjU2XSEKKysJdm1sYWwudTMyCSRBNXhCLCROaSwke04yfVsxXQorKwl2c2hyLnU2NAkkdGVtcCwkdGVtcCwjMTYKKysJIHZsZDEuNjQJeyRBMHhCfSwgICAgICAgWyR0aW5wdHIsIDoxMjhdIQorKwl2bWxhbC51MzIJJEE2eEIsJE5pLCR7TjN9WzBdCisrCXZzdDEuNjQJCXskQTJ4Qi0kQTN4Qn0sIFskdG91dHB0ciw6MjU2XSEKKysJdm1sYWwudTMyCSRBN3hCLCROaSwke04zfVsxXQorKworKwl2c3QxLjY0CQl7JEE0eEItJEE1eEJ9LCBbJHRvdXRwdHIsOjI1Nl0hCisrCXZhZGQudTY0CSR0ZW1wLCR0ZW1wLGAmRGhpKCIkVGVtcCIpYAorKwl2ZW9yCQkkWiwkWiwkWgorKwl2c3QxLjY0CQl7JEE2eEItJEE3eEJ9LCBbJHRvdXRwdHIsOjI1Nl0hCisrCSB2bGQxLjY0CXskQTF4Qi0kQTJ4Qn0sIFskdGlucHRyLCA6MjU2XSEKKysJdnN0MS42NAkJeyRafSwgICAgICAgICAgWyR0b3V0cHRyLDoxMjhdCisrCXZzaHIudTY0CSR0ZW1wLCR0ZW1wLCMxNgorKworKwliCQkuTE5FT05fb3V0ZXIKKysKKysuYWxpZ24JNAorKy5MTkVPTl9vdXRlcjoKKysJdmxkMS4zMgkJeyR7Qml9WzBdfSwgWyRicHRyLDozMl0hCisrCXN1YgkJJG5wdHIsJG5wdHIsJG51bSxsc2wjMgkJQCByZXdpbmQgJG5wdHIKKysJdmxkMS4zMgkJeyRBMC0kQTN9LCAgWyRhcHRyXSEKKysJdmVvcgkJJHplcm8sJHplcm8sJHplcm8KKysJbW92CQkkdG91dHB0cixzcAorKwl2emlwLjE2CQkkQmksJHplcm8KKysJc3ViCQkkaW5uZXIsJG51bSwjOAorKwl2YWRkLnU2NAlgJkRsbygiJEEweEIiKWAsYCZEbG8oIiRBMHhCIilgLCR0ZW1wCisrCisrCXZtbGFsLnUzMgkkQTB4QiwkQmksJHtBMH1bMF0KKysJIHZsZDEuNjQJeyRBM3hCLSRBNHhCfSxbJHRpbnB0ciw6MjU2XSEKKysJdm1sYWwudTMyCSRBMXhCLCRCaSwke0EwfVsxXQorKwl2bWxhbC51MzIJJEEyeEIsJEJpLCR7QTF9WzBdCisrCSB2bGQxLjY0CXskQTV4Qi0kQTZ4Qn0sWyR0aW5wdHIsOjI1Nl0hCisrCXZtbGFsLnUzMgkkQTN4QiwkQmksJHtBMX1bMV0KKysKKysJdnNobC5pNjQJJHRlbXAsYCZEaGkoIiRBMHhCIilgLCMxNgorKwl2ZW9yCQkkemVybywkemVybywkemVybworKwl2YWRkLnU2NAkkdGVtcCwkdGVtcCxgJkRsbygiJEEweEIiKWAKKysJIHZsZDEuNjQJeyRBN3hCfSxbJHRpbnB0ciw6MTI4XSEKKysJdm11bC51MzIJJE5pLCR0ZW1wLCRNMAorKworKwl2bWxhbC51MzIJJEE0eEIsJEJpLCR7QTJ9WzBdCisrCSB2bGQxLjMyCXskTjAtJE4zfSwgWyRucHRyXSEKKysJdm1sYWwudTMyCSRBNXhCLCRCaSwke0EyfVsxXQorKwl2bWxhbC51MzIJJEE2eEIsJEJpLCR7QTN9WzBdCisrCXZ6aXAuMTYJCSROaSwkemVybworKwl2bWxhbC51MzIJJEE3eEIsJEJpLCR7QTN9WzFdCisrCisrLkxORU9OX2lubmVyOgorKwl2bWxhbC51MzIJJEEweEIsJE5pLCR7TjB9WzBdCisrCSB2bGQxLjMyCXskQTAtJEEzfSwgWyRhcHRyXSEKKysJdm1sYWwudTMyCSRBMXhCLCROaSwke04wfVsxXQorKwkgc3VicwkJJGlubmVyLCRpbm5lciwjOAorKwl2bWxhbC51MzIJJEEyeEIsJE5pLCR7TjF9WzBdCisrCXZtbGFsLnUzMgkkQTN4QiwkTmksJHtOMX1bMV0KKysJdnN0MS42NAkJeyRBMHhCLSRBMXhCfSwgWyR0b3V0cHRyLDoyNTZdIQorKworKwl2bWxhbC51MzIJJEE0eEIsJE5pLCR7TjJ9WzBdCisrCSB2bGQxLjY0CXskQTB4Qn0sICAgICAgIFskdGlucHRyLCA6MTI4XSEKKysJdm1sYWwudTMyCSRBNXhCLCROaSwke04yfVsxXQorKwl2c3QxLjY0CQl7JEEyeEItJEEzeEJ9LCBbJHRvdXRwdHIsOjI1Nl0hCisrCXZtbGFsLnUzMgkkQTZ4QiwkTmksJHtOM31bMF0KKysJIHZsZDEuNjQJeyRBMXhCLSRBMnhCfSwgWyR0aW5wdHIsIDoyNTZdIQorKwl2bWxhbC51MzIJJEE3eEIsJE5pLCR7TjN9WzFdCisrCXZzdDEuNjQJCXskQTR4Qi0kQTV4Qn0sIFskdG91dHB0ciw6MjU2XSEKKysKKysJdm1sYWwudTMyCSRBMHhCLCRCaSwke0EwfVswXQorKwkgdmxkMS42NAl7JEEzeEItJEE0eEJ9LCBbJHRpbnB0ciwgOjI1Nl0hCisrCXZtbGFsLnUzMgkkQTF4QiwkQmksJHtBMH1bMV0KKysJdnN0MS42NAkJeyRBNnhCLSRBN3hCfSwgWyR0b3V0cHRyLDoyNTZdIQorKwl2bWxhbC51MzIJJEEyeEIsJEJpLCR7QTF9WzBdCisrCSB2bGQxLjY0CXskQTV4Qi0kQTZ4Qn0sIFskdGlucHRyLCA6MjU2XSEKKysJdm1sYWwudTMyCSRBM3hCLCRCaSwke0ExfVsxXQorKwkgdmxkMS4zMgl7JE4wLSROM30sIFskbnB0cl0hCisrCisrCXZtbGFsLnUzMgkkQTR4QiwkQmksJHtBMn1bMF0KKysJIHZsZDEuNjQJeyRBN3hCfSwgICAgICAgWyR0aW5wdHIsIDoxMjhdIQorKwl2bWxhbC51MzIJJEE1eEIsJEJpLCR7QTJ9WzFdCisrCXZtbGFsLnUzMgkkQTZ4QiwkQmksJHtBM31bMF0KKysJdm1sYWwudTMyCSRBN3hCLCRCaSwke0EzfVsxXQorKworKwlibmUJLkxORU9OX2lubmVyCisrCisrCXZtbGFsLnUzMgkkQTB4QiwkTmksJHtOMH1bMF0KKysJYWRkCQkkdGlucHRyLHNwLCMxNgorKwl2bWxhbC51MzIJJEExeEIsJE5pLCR7TjB9WzFdCisrCXN1YgkJJGFwdHIsJGFwdHIsJG51bSxsc2wjMgkJQCByZXdpbmQgJGFwdHIKKysJdm1sYWwudTMyCSRBMnhCLCROaSwke04xfVswXQorKwkgdmxkMS42NAl7JFRlbXB9LCBbc3AsOjEyOF0KKysJdm1sYWwudTMyCSRBM3hCLCROaSwke04xfVsxXQorKwlzdWJzCQkkb3V0ZXIsJG91dGVyLCMxCisrCisrCXZtbGFsLnUzMgkkQTR4QiwkTmksJHtOMn1bMF0KKysJdnN0MS42NAkJeyRBMHhCLSRBMXhCfSwgWyR0b3V0cHRyLDoyNTZdIQorKwl2bWxhbC51MzIJJEE1eEIsJE5pLCR7TjJ9WzFdCisrCSB2bGQxLjY0CXskQTB4Qn0sICAgICAgIFskdGlucHRyLCA6MTI4XSEKKysJdnNoci51NjQJJHRlbXAsJHRlbXAsIzE2CisrCXZzdDEuNjQJCXskQTJ4Qi0kQTN4Qn0sIFskdG91dHB0ciw6MjU2XSEKKysJdm1sYWwudTMyCSRBNnhCLCROaSwke04zfVswXQorKwkgdmxkMS42NAl7JEExeEItJEEyeEJ9LCBbJHRpbnB0ciwgOjI1Nl0hCisrCXZtbGFsLnUzMgkkQTd4QiwkTmksJHtOM31bMV0KKysKKysJdnN0MS42NAkJeyRBNHhCLSRBNXhCfSwgWyR0b3V0cHRyLDoyNTZdIQorKwl2YWRkLnU2NAkkdGVtcCwkdGVtcCxgJkRoaSgiJFRlbXAiKWAKKysJdnN0MS42NAkJeyRBNnhCLSRBN3hCfSwgWyR0b3V0cHRyLDoyNTZdIQorKwl2c2hyLnU2NAkkdGVtcCwkdGVtcCwjMTYKKysKKysJYm5lCS5MTkVPTl9vdXRlcgorKworKwltb3YJCSR0b3V0cHRyLHNwCisrCW1vdgkJJGlubmVyLCRudW0KKysKKysuTE5FT05fdGFpbDoKKysJdmFkZC51NjQJYCZEbG8oIiRBMHhCIilgLGAmRGxvKCIkQTB4QiIpYCwkdGVtcAorKwl2bGQxLjY0CQl7JEEzeEItJEE0eEJ9LCBbJHRpbnB0ciwgOjI1Nl0hCisrCXZzaHIudTY0CSR0ZW1wLGAmRGxvKCIkQTB4QiIpYCwjMTYKKysJdmFkZC51NjQJYCZEaGkoIiRBMHhCIilgLGAmRGhpKCIkQTB4QiIpYCwkdGVtcAorKwl2bGQxLjY0CQl7JEE1eEItJEE2eEJ9LCBbJHRpbnB0ciwgOjI1Nl0hCisrCXZzaHIudTY0CSR0ZW1wLGAmRGhpKCIkQTB4QiIpYCwjMTYKKysJdmxkMS42NAkJeyRBN3hCfSwgICAgICAgWyR0aW5wdHIsIDoxMjhdIQorKwl2emlwLjE2CQlgJkRsbygiJEEweEIiKWAsYCZEaGkoIiRBMHhCIilgCisrCisrLkxORU9OX3RhaWwyOgorKwl2YWRkLnU2NAlgJkRsbygiJEExeEIiKWAsYCZEbG8oIiRBMXhCIilgLCR0ZW1wCisrCXZzdDEuMzIJCXtgJkRsbygiJEEweEIiKWBbMF19LCBbJHRvdXRwdHIsIDozMl0hCisrCXZzaHIudTY0CSR0ZW1wLGAmRGxvKCIkQTF4QiIpYCwjMTYKKysJdmFkZC51NjQJYCZEaGkoIiRBMXhCIilgLGAmRGhpKCIkQTF4QiIpYCwkdGVtcAorKwl2c2hyLnU2NAkkdGVtcCxgJkRoaSgiJEExeEIiKWAsIzE2CisrCXZ6aXAuMTYJCWAmRGxvKCIkQTF4QiIpYCxgJkRoaSgiJEExeEIiKWAKKysKKysJdmFkZC51NjQJYCZEbG8oIiRBMnhCIilgLGAmRGxvKCIkQTJ4QiIpYCwkdGVtcAorKwl2c3QxLjMyCQl7YCZEbG8oIiRBMXhCIilgWzBdfSwgWyR0b3V0cHRyLCA6MzJdIQorKwl2c2hyLnU2NAkkdGVtcCxgJkRsbygiJEEyeEIiKWAsIzE2CisrCXZhZGQudTY0CWAmRGhpKCIkQTJ4QiIpYCxgJkRoaSgiJEEyeEIiKWAsJHRlbXAKKysJdnNoci51NjQJJHRlbXAsYCZEaGkoIiRBMnhCIilgLCMxNgorKwl2emlwLjE2CQlgJkRsbygiJEEyeEIiKWAsYCZEaGkoIiRBMnhCIilgCisrCisrCXZhZGQudTY0CWAmRGxvKCIkQTN4QiIpYCxgJkRsbygiJEEzeEIiKWAsJHRlbXAKKysJdnN0MS4zMgkJe2AmRGxvKCIkQTJ4QiIpYFswXX0sIFskdG91dHB0ciwgOjMyXSEKKysJdnNoci51NjQJJHRlbXAsYCZEbG8oIiRBM3hCIilgLCMxNgorKwl2YWRkLnU2NAlgJkRoaSgiJEEzeEIiKWAsYCZEaGkoIiRBM3hCIilgLCR0ZW1wCisrCXZzaHIudTY0CSR0ZW1wLGAmRGhpKCIkQTN4QiIpYCwjMTYKKysJdnppcC4xNgkJYCZEbG8oIiRBM3hCIilgLGAmRGhpKCIkQTN4QiIpYAorKworKwl2YWRkLnU2NAlgJkRsbygiJEE0eEIiKWAsYCZEbG8oIiRBNHhCIilgLCR0ZW1wCisrCXZzdDEuMzIJCXtgJkRsbygiJEEzeEIiKWBbMF19LCBbJHRvdXRwdHIsIDozMl0hCisrCXZzaHIudTY0CSR0ZW1wLGAmRGxvKCIkQTR4QiIpYCwjMTYKKysJdmFkZC51NjQJYCZEaGkoIiRBNHhCIilgLGAmRGhpKCIkQTR4QiIpYCwkdGVtcAorKwl2c2hyLnU2NAkkdGVtcCxgJkRoaSgiJEE0eEIiKWAsIzE2CisrCXZ6aXAuMTYJCWAmRGxvKCIkQTR4QiIpYCxgJkRoaSgiJEE0eEIiKWAKKysKKysJdmFkZC51NjQJYCZEbG8oIiRBNXhCIilgLGAmRGxvKCIkQTV4QiIpYCwkdGVtcAorKwl2c3QxLjMyCQl7YCZEbG8oIiRBNHhCIilgWzBdfSwgWyR0b3V0cHRyLCA6MzJdIQorKwl2c2hyLnU2NAkkdGVtcCxgJkRsbygiJEE1eEIiKWAsIzE2CisrCXZhZGQudTY0CWAmRGhpKCIkQTV4QiIpYCxgJkRoaSgiJEE1eEIiKWAsJHRlbXAKKysJdnNoci51NjQJJHRlbXAsYCZEaGkoIiRBNXhCIilgLCMxNgorKwl2emlwLjE2CQlgJkRsbygiJEE1eEIiKWAsYCZEaGkoIiRBNXhCIilgCisrCisrCXZhZGQudTY0CWAmRGxvKCIkQTZ4QiIpYCxgJkRsbygiJEE2eEIiKWAsJHRlbXAKKysJdnN0MS4zMgkJe2AmRGxvKCIkQTV4QiIpYFswXX0sIFskdG91dHB0ciwgOjMyXSEKKysJdnNoci51NjQJJHRlbXAsYCZEbG8oIiRBNnhCIilgLCMxNgorKwl2YWRkLnU2NAlgJkRoaSgiJEE2eEIiKWAsYCZEaGkoIiRBNnhCIilgLCR0ZW1wCisrCXZsZDEuNjQJCXskQTB4Qn0sIFskdGlucHRyLCA6MTI4XSEKKysJdnNoci51NjQJJHRlbXAsYCZEaGkoIiRBNnhCIilgLCMxNgorKwl2emlwLjE2CQlgJkRsbygiJEE2eEIiKWAsYCZEaGkoIiRBNnhCIilgCisrCisrCXZhZGQudTY0CWAmRGxvKCIkQTd4QiIpYCxgJkRsbygiJEE3eEIiKWAsJHRlbXAKKysJdnN0MS4zMgkJe2AmRGxvKCIkQTZ4QiIpYFswXX0sIFskdG91dHB0ciwgOjMyXSEKKysJdnNoci51NjQJJHRlbXAsYCZEbG8oIiRBN3hCIilgLCMxNgorKwl2YWRkLnU2NAlgJkRoaSgiJEE3eEIiKWAsYCZEaGkoIiRBN3hCIilgLCR0ZW1wCisrCXZsZDEuNjQJCXskQTF4Qi0kQTJ4Qn0sCVskdGlucHRyLCA6MjU2XSEKKysJdnNoci51NjQJJHRlbXAsYCZEaGkoIiRBN3hCIilgLCMxNgorKwl2emlwLjE2CQlgJkRsbygiJEE3eEIiKWAsYCZEaGkoIiRBN3hCIilgCisrCXN1YnMJCSRpbm5lciwkaW5uZXIsIzgKKysJdnN0MS4zMgkJe2AmRGxvKCIkQTd4QiIpYFswXX0sIFskdG91dHB0ciwgOjMyXSEKKysKKysJYm5lCS5MTkVPTl90YWlsCisrCisrCXZzdDEuMzIJeyR7dGVtcH1bMF19LCBbJHRvdXRwdHIsIDozMl0JCUAgdG9wLW1vc3QgYml0CisrCXN1YgkkbnB0ciwkbnB0ciwkbnVtLGxzbCMyCQkJQCByZXdpbmQgJG5wdHIKKysJc3VicwkkYXB0cixzcCwjMAkJCQlAIGNsZWFyIGNhcnJ5IGZsYWcKKysJYWRkCSRicHRyLHNwLCRudW0sbHNsIzIKKysKKysuTE5FT05fc3ViOgorKwlsZG1pYQkkYXB0ciEsIHtyNC1yN30KKysJbGRtaWEJJG5wdHIhLCB7cjgtcjExfQorKwlzYmNzCXI4LCByNCxyOAorKwlzYmNzCXI5LCByNSxyOQorKwlzYmNzCXIxMCxyNixyMTAKKysJc2JjcwlyMTEscjcscjExCisrCXRlcQkkYXB0ciwkYnB0cgkJCQlAIHByZXNlcnZlcyBjYXJyeQorKwlzdG1pYQkkcnB0ciEsIHtyOC1yMTF9CisrCWJuZQkuTE5FT05fc3ViCisrCisrCWxkcglyMTAsIFskYXB0cl0JCQkJQCBsb2FkIHRvcC1tb3N0IGJpdAorKwl2ZW9yCXEwLHEwLHEwCisrCXN1YglyMTEsJGJwdHIsc3AJCQkJQCB0aGlzIGlzIG51bSo0CisrCXZlb3IJcTEscTEscTEKKysJbW92CSRhcHRyLHNwCisrCXN1YgkkcnB0ciwkcnB0cixyMTEJCQkJQCByZXdpbmQgJHJwdHIKKysJbW92CSRucHRyLCRicHRyCQkJCUAgc2Vjb25kIDMvNHRoIG9mIGZyYW1lCisrCXNiY3MJcjEwLHIxMCwjMAkJCQlAIHJlc3VsdCBpcyBjYXJyeSBmbGFnCisrCisrLkxORU9OX2NvcHlfbl96YXA6CisrCWxkbWlhCSRhcHRyISwge3I0LXI3fQorKwlsZG1pYQkkcnB0ciwgIHtyOC1yMTF9CisrCW1vdmNjCXI4LCByNAorKwl2c3QxLjY0CXtxMC1xMX0sIFskbnB0ciw6MjU2XSEJCQlAIHdpcGUKKysJbW92Y2MJcjksIHI1CisrCW1vdmNjCXIxMCxyNgorKwl2c3QxLjY0CXtxMC1xMX0sIFskbnB0ciw6MjU2XSEJCQlAIHdpcGUKKysJbW92Y2MJcjExLHI3CisrCWxkbWlhCSRhcHRyLCB7cjQtcjd9CisrCXN0bWlhCSRycHRyISwge3I4LXIxMX0KKysJc3ViCSRhcHRyLCRhcHRyLCMxNgorKwlsZG1pYQkkcnB0ciwge3I4LXIxMX0KKysJbW92Y2MJcjgsIHI0CisrCXZzdDEuNjQJe3EwLXExfSwgWyRhcHRyLDoyNTZdIQkJCUAgd2lwZQorKwltb3ZjYwlyOSwgcjUKKysJbW92Y2MJcjEwLHI2CisrCXZzdDEuNjQJe3EwLXExfSwgWyRucHRyLDoyNTZdIQkJCUAgd2lwZQorKwltb3ZjYwlyMTEscjcKKysJdGVxCSRhcHRyLCRicHRyCQkJCUAgcHJlc2VydmVzIGNhcnJ5CisrCXN0bWlhCSRycHRyISwge3I4LXIxMX0KKysJYm5lCS5MTkVPTl9jb3B5X25femFwCisrCisrCXN1YglzcCxpcCwjOTYKKysgICAgICAgIHZsZG1pYSAgc3AhLHtkOC1kMTV9CisrICAgICAgICBsZG1pYSAgIHNwISx7cjQtcjExfQorKwlyZXQJCQkJCQlAIGJ4IGxyCisrLnNpemUJYm5fbXVsOHhfbW9udF9uZW9uLC4tYm5fbXVsOHhfbW9udF9uZW9uCisrI2VuZGlmCisrX19fCisrfQorKyRjb2RlLj08PF9fXzsKKysuYXNjaXoJIk1vbnRnb21lcnkgbXVsdGlwbGljYXRpb24gZm9yIEFSTXY0L05FT04sIENSWVBUT0dBTVMgYnkgPGFwcHJvXEBvcGVuc3NsLm9yZz4iCisgLmFsaWduCTIKKysjaWYgX19BUk1fQVJDSF9fPj03CisrLmNvbW0JT1BFTlNTTF9hcm1jYXBfUCw0LDQKKysjZW5kaWYKKyBfX18KKyAKKyskY29kZSA9fiBzL1xgKFteXGBdKilcYC9ldmFsICQxL2dlbTsKKyAkY29kZSA9fiBzL1xiYnhccytsclxiLy53b3JkXHQweGUxMmZmZjFlL2dtOwkjIG1ha2UgaXQgcG9zc2libGUgdG8gY29tcGlsZSB3aXRoIC1tYXJjaD1hcm12NAorKyRjb2RlID1+IHMvXGJyZXRcYi9ieAlsci9nbTsKKyBwcmludCAkY29kZTsKKyBjbG9zZSBTVERPVVQ7CitkaWZmIC0tZ2l0IGEvY3J5cHRvL2V2cC9lX2Flcy5jIGIvY3J5cHRvL2V2cC9lX2Flcy5jCitpbmRleCBjNzg2OWI2Li5hZDBmN2E0IDEwMDY0NAorLS0tIGEvY3J5cHRvL2V2cC9lX2Flcy5jCisrKysgYi9jcnlwdG8vZXZwL2VfYWVzLmMKK0BAIC02Miw3ICs2Miw3IEBACisgCisgdHlwZWRlZiBzdHJ1Y3QKKyAJeworLQlBRVNfS0VZIGtzOworKwl1bmlvbiB7IGRvdWJsZSBhbGlnbjsgQUVTX0tFWSBrczsgfSBrczsKKyAJYmxvY2sxMjhfZiBibG9jazsKKyAJdW5pb24geworIAkJY2JjMTI4X2YgY2JjOworQEAgLTcyLDcgKzcyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QKKyAKKyB0eXBlZGVmIHN0cnVjdAorIAl7CistCUFFU19LRVkga3M7CQkvKiBBRVMga2V5IHNjaGVkdWxlIHRvIHVzZSAqLworKwl1bmlvbiB7IGRvdWJsZSBhbGlnbjsgQUVTX0tFWSBrczsgfSBrczsJLyogQUVTIGtleSBzY2hlZHVsZSB0byB1c2UgKi8KKyAJaW50IGtleV9zZXQ7CQkvKiBTZXQgaWYga2V5IGluaXRpYWxpc2VkICovCisgCWludCBpdl9zZXQ7CQkvKiBTZXQgaWYgYW4gaXYgaXMgc2V0ICovCisgCUdDTTEyOF9DT05URVhUIGdjbTsKK0BAIC04Niw3ICs4Niw3IEBAIHR5cGVkZWYgc3RydWN0CisgCisgdHlwZWRlZiBzdHJ1Y3QKKyAJeworLQlBRVNfS0VZIGtzMSwga3MyOwkvKiBBRVMga2V5IHNjaGVkdWxlcyB0byB1c2UgKi8KKysJdW5pb24geyBkb3VibGUgYWxpZ247IEFFU19LRVkga3M7IH0ga3MxLCBrczI7CS8qIEFFUyBrZXkgc2NoZWR1bGVzIHRvIHVzZSAqLworIAlYVFMxMjhfQ09OVEVYVCB4dHM7CisgCXZvaWQgICAgICgqc3RyZWFtKShjb25zdCB1bnNpZ25lZCBjaGFyICppbiwKKyAJCQl1bnNpZ25lZCBjaGFyICpvdXQsIHNpemVfdCBsZW5ndGgsCitAQCAtOTYsNyArOTYsNyBAQCB0eXBlZGVmIHN0cnVjdAorIAorIHR5cGVkZWYgc3RydWN0CisgCXsKKy0JQUVTX0tFWSBrczsJCS8qIEFFUyBrZXkgc2NoZWR1bGUgdG8gdXNlICovCisrCXVuaW9uIHsgZG91YmxlIGFsaWduOyBBRVNfS0VZIGtzOyB9IGtzOwkvKiBBRVMga2V5IHNjaGVkdWxlIHRvIHVzZSAqLworIAlpbnQga2V5X3NldDsJCS8qIFNldCBpZiBrZXkgaW5pdGlhbGlzZWQgKi8KKyAJaW50IGl2X3NldDsJCS8qIFNldCBpZiBhbiBpdiBpcyBzZXQgKi8KKyAJaW50IHRhZ19zZXQ7CQkvKiBTZXQgaWYgdGFnIGlzIHZhbGlkICovCitAQCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQgQUVTX3h0c19kZWNyeXB0KGNvbnN0IGNoYXIgKmlucCxjaGFyICpvdXQsc2l6ZV90IGxlbiwKKyAJZGVmaW5lZChfTV9BTUQ2NCkJfHwgZGVmaW5lZChfTV9YNjQpCXx8IFwKKyAJZGVmaW5lZChfX0lOVEVMX18pCQkJCSkKKyAKKy1leHRlcm4gdW5zaWduZWQgaW50IE9QRU5TU0xfaWEzMmNhcF9QWzJdOworK2V4dGVybiB1bnNpZ25lZCBpbnQgT1BFTlNTTF9pYTMyY2FwX1BbXTsKKyAKKyAjaWZkZWYgVlBBRVNfQVNNCisgI2RlZmluZSBWUEFFU19DQVBBQkxFCShPUEVOU1NMX2lhMzJjYXBfUFsxXSYoMTw8KDQxLTMyKSkpCitAQCAtMzEwLDcgKzMxMCw3IEBAIHN0YXRpYyBpbnQgYWVzbmlfZ2NtX2luaXRfa2V5KEVWUF9DSVBIRVJfQ1RYICpjdHgsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmtleSwKKyAJCXJldHVybiAxOworIAlpZiAoa2V5KQorIAkJeworLQkJYWVzbmlfc2V0X2VuY3J5cHRfa2V5KGtleSwgY3R4LT5rZXlfbGVuICogOCwgJmdjdHgtPmtzKTsKKysJCWFlc25pX3NldF9lbmNyeXB0X2tleShrZXksIGN0eC0+a2V5X2xlbiAqIDgsICZnY3R4LT5rcy5rcyk7CisgCQlDUllQVE9fZ2NtMTI4X2luaXQoJmdjdHgtPmdjbSwgJmdjdHgtPmtzLAorIAkJCQkoYmxvY2sxMjhfZilhZXNuaV9lbmNyeXB0KTsKKyAJCWdjdHgtPmN0ciA9IChjdHIxMjhfZilhZXNuaV9jdHIzMl9lbmNyeXB0X2Jsb2NrczsKK0BAIC0zNTUsMTkgKzM1NSwxOSBAQCBzdGF0aWMgaW50IGFlc25pX3h0c19pbml0X2tleShFVlBfQ0lQSEVSX0NUWCAqY3R4LCBjb25zdCB1bnNpZ25lZCBjaGFyICprZXksCisgCQkvKiBrZXlfbGVuIGlzIHR3byBBRVMga2V5cyAqLworIAkJaWYgKGVuYykKKyAJCQl7CistCQkJYWVzbmlfc2V0X2VuY3J5cHRfa2V5KGtleSwgY3R4LT5rZXlfbGVuICogNCwgJnhjdHgtPmtzMSk7CisrCQkJYWVzbmlfc2V0X2VuY3J5cHRfa2V5KGtleSwgY3R4LT5rZXlfbGVuICogNCwgJnhjdHgtPmtzMS5rcyk7CisgCQkJeGN0eC0+eHRzLmJsb2NrMSA9IChibG9jazEyOF9mKWFlc25pX2VuY3J5cHQ7CisgCQkJeGN0eC0+c3RyZWFtID0gYWVzbmlfeHRzX2VuY3J5cHQ7CisgCQkJfQorIAkJZWxzZQorIAkJCXsKKy0JCQlhZXNuaV9zZXRfZGVjcnlwdF9rZXkoa2V5LCBjdHgtPmtleV9sZW4gKiA0LCAmeGN0eC0+a3MxKTsKKysJCQlhZXNuaV9zZXRfZGVjcnlwdF9rZXkoa2V5LCBjdHgtPmtleV9sZW4gKiA0LCAmeGN0eC0+a3MxLmtzKTsKKyAJCQl4Y3R4LT54dHMuYmxvY2sxID0gKGJsb2NrMTI4X2YpYWVzbmlfZGVjcnlwdDsKKyAJCQl4Y3R4LT5zdHJlYW0gPSBhZXNuaV94dHNfZGVjcnlwdDsKKyAJCQl9CisgCisgCQlhZXNuaV9zZXRfZW5jcnlwdF9rZXkoa2V5ICsgY3R4LT5rZXlfbGVuLzIsCistCQkJCQkJY3R4LT5rZXlfbGVuICogNCwgJnhjdHgtPmtzMik7CisrCQkJCQkJY3R4LT5rZXlfbGVuICogNCwgJnhjdHgtPmtzMi5rcyk7CisgCQl4Y3R4LT54dHMuYmxvY2syID0gKGJsb2NrMTI4X2YpYWVzbmlfZW5jcnlwdDsKKyAKKyAJCXhjdHgtPnh0cy5rZXkxID0gJnhjdHgtPmtzMTsKK0BAIC0zOTQsNyArMzk0LDcgQEAgc3RhdGljIGludCBhZXNuaV9jY21faW5pdF9rZXkoRVZQX0NJUEhFUl9DVFggKmN0eCwgY29uc3QgdW5zaWduZWQgY2hhciAqa2V5LAorIAkJcmV0dXJuIDE7CisgCWlmIChrZXkpCisgCQl7CistCQlhZXNuaV9zZXRfZW5jcnlwdF9rZXkoa2V5LCBjdHgtPmtleV9sZW4gKiA4LCAmY2N0eC0+a3MpOworKwkJYWVzbmlfc2V0X2VuY3J5cHRfa2V5KGtleSwgY3R4LT5rZXlfbGVuICogOCwgJmNjdHgtPmtzLmtzKTsKKyAJCUNSWVBUT19jY20xMjhfaW5pdCgmY2N0eC0+Y2NtLCBjY3R4LT5NLCBjY3R4LT5MLAorIAkJCQkJJmNjdHgtPmtzLCAoYmxvY2sxMjhfZilhZXNuaV9lbmNyeXB0KTsKKyAJCWNjdHgtPnN0ciA9IGVuYz8oY2NtMTI4X2YpYWVzbmlfY2NtNjRfZW5jcnlwdF9ibG9ja3MgOgorQEAgLTQ4NCw2ICs0ODQsMzggQEAgY29uc3QgRVZQX0NJUEhFUiAqRVZQX2Flc18jI2tleWxlbiMjXyMjbW9kZSh2b2lkKSBcCisgeyByZXR1cm4gJmFlc18jI2tleWxlbiMjXyMjbW9kZTsgfQorICNlbmRpZgorIAorKyNpZiBkZWZpbmVkKE9QRU5TU0xfQ1BVSURfT0JKKSAmJiAoZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fYXJtKSB8fCBkZWZpbmVkKF9fYWFyY2g2NF9fKSkKKysjaW5jbHVkZSAiYXJtX2FyY2guaCIKKysjaWYgX19BUk1fQVJDSF9fPj03CisrIyBpZiBkZWZpbmVkKEJTQUVTX0FTTSkKKysjICBkZWZpbmUgQlNBRVNfQ0FQQUJMRQkoT1BFTlNTTF9hcm1jYXBfUCAmIEFSTVY3X05FT04pCisrIyBlbmRpZgorKyMgZGVmaW5lIEhXQUVTX0NBUEFCTEUgKE9QRU5TU0xfYXJtY2FwX1AgJiBBUk1WOF9BRVMpCisrIyBkZWZpbmUgSFdBRVNfc2V0X2VuY3J5cHRfa2V5IGFlc192OF9zZXRfZW5jcnlwdF9rZXkKKysjIGRlZmluZSBIV0FFU19zZXRfZGVjcnlwdF9rZXkgYWVzX3Y4X3NldF9kZWNyeXB0X2tleQorKyMgZGVmaW5lIEhXQUVTX2VuY3J5cHQgYWVzX3Y4X2VuY3J5cHQKKysjIGRlZmluZSBIV0FFU19kZWNyeXB0IGFlc192OF9kZWNyeXB0CisrIyBkZWZpbmUgSFdBRVNfY2JjX2VuY3J5cHQgYWVzX3Y4X2NiY19lbmNyeXB0CisrIyBkZWZpbmUgSFdBRVNfY3RyMzJfZW5jcnlwdF9ibG9ja3MgYWVzX3Y4X2N0cjMyX2VuY3J5cHRfYmxvY2tzCisrI2VuZGlmCisrI2VuZGlmCisrCisrI2lmIGRlZmluZWQoSFdBRVNfQ0FQQUJMRSkKKytpbnQgSFdBRVNfc2V0X2VuY3J5cHRfa2V5KGNvbnN0IHVuc2lnbmVkIGNoYXIgKnVzZXJLZXksIGNvbnN0IGludCBiaXRzLAorKwlBRVNfS0VZICprZXkpOworK2ludCBIV0FFU19zZXRfZGVjcnlwdF9rZXkoY29uc3QgdW5zaWduZWQgY2hhciAqdXNlcktleSwgY29uc3QgaW50IGJpdHMsCisrCUFFU19LRVkgKmtleSk7Cisrdm9pZCBIV0FFU19lbmNyeXB0KGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluLCB1bnNpZ25lZCBjaGFyICpvdXQsCisrCWNvbnN0IEFFU19LRVkgKmtleSk7Cisrdm9pZCBIV0FFU19kZWNyeXB0KGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluLCB1bnNpZ25lZCBjaGFyICpvdXQsCisrCWNvbnN0IEFFU19LRVkgKmtleSk7Cisrdm9pZCBIV0FFU19jYmNfZW5jcnlwdChjb25zdCB1bnNpZ25lZCBjaGFyICppbiwgdW5zaWduZWQgY2hhciAqb3V0LAorKwlzaXplX3QgbGVuZ3RoLCBjb25zdCBBRVNfS0VZICprZXksCisrCXVuc2lnbmVkIGNoYXIgKml2ZWMsIGNvbnN0IGludCBlbmMpOworK3ZvaWQgSFdBRVNfY3RyMzJfZW5jcnlwdF9ibG9ja3MoY29uc3QgdW5zaWduZWQgY2hhciAqaW4sIHVuc2lnbmVkIGNoYXIgKm91dCwKKysJc2l6ZV90IGxlbiwgY29uc3QgQUVTX0tFWSAqa2V5LCBjb25zdCB1bnNpZ25lZCBjaGFyIGl2ZWNbMTZdKTsKKysjZW5kaWYKKysKKyAjZGVmaW5lIEJMT0NLX0NJUEhFUl9nZW5lcmljX3BhY2sobmlkLGtleWxlbixmbGFncykJCVwKKyAJQkxPQ0tfQ0lQSEVSX2dlbmVyaWMobmlkLGtleWxlbiwxNiwxNixjYmMsY2JjLENCQyxmbGFnc3xFVlBfQ0lQSF9GTEFHX0RFRkFVTFRfQVNOMSkJXAorIAlCTE9DS19DSVBIRVJfZ2VuZXJpYyhuaWQsa2V5bGVuLDE2LDAsZWNiLGVjYixFQ0IsZmxhZ3N8RVZQX0NJUEhfRkxBR19ERUZBVUxUX0FTTjEpCVwKK0BAIC01MDIsMTAgKzUzNCwyMyBAQCBzdGF0aWMgaW50IGFlc19pbml0X2tleShFVlBfQ0lQSEVSX0NUWCAqY3R4LCBjb25zdCB1bnNpZ25lZCBjaGFyICprZXksCisgCW1vZGUgPSBjdHgtPmNpcGhlci0+ZmxhZ3MgJiBFVlBfQ0lQSF9NT0RFOworIAlpZiAoKG1vZGUgPT0gRVZQX0NJUEhfRUNCX01PREUgfHwgbW9kZSA9PSBFVlBfQ0lQSF9DQkNfTU9ERSkKKyAJICAgICYmICFlbmMpCisrI2lmZGVmIEhXQUVTX0NBUEFCTEUKKysJICAgIGlmIChIV0FFU19DQVBBQkxFKQorKwkJeworKwkJcmV0ID0gSFdBRVNfc2V0X2RlY3J5cHRfa2V5KGtleSxjdHgtPmtleV9sZW4qOCwmZGF0LT5rcy5rcyk7CisrCQlkYXQtPmJsb2NrICAgICAgPSAoYmxvY2sxMjhfZilIV0FFU19kZWNyeXB0OworKwkJZGF0LT5zdHJlYW0uY2JjID0gTlVMTDsKKysjaWZkZWYgSFdBRVNfY2JjX2VuY3J5cHQKKysJCWlmIChtb2RlPT1FVlBfQ0lQSF9DQkNfTU9ERSkKKysJCSAgICBkYXQtPnN0cmVhbS5jYmMgPSAoY2JjMTI4X2YpSFdBRVNfY2JjX2VuY3J5cHQ7CisrI2VuZGlmCisrCQl9CisrCSAgICBlbHNlCisrI2VuZGlmCisgI2lmZGVmIEJTQUVTX0NBUEFCTEUKKyAJICAgIGlmIChCU0FFU19DQVBBQkxFICYmIG1vZGU9PUVWUF9DSVBIX0NCQ19NT0RFKQorIAkJeworLQkJcmV0ID0gQUVTX3NldF9kZWNyeXB0X2tleShrZXksY3R4LT5rZXlfbGVuKjgsJmRhdC0+a3MpOworKwkJcmV0ID0gQUVTX3NldF9kZWNyeXB0X2tleShrZXksY3R4LT5rZXlfbGVuKjgsJmRhdC0+a3Mua3MpOworIAkJZGF0LT5ibG9jawk9IChibG9jazEyOF9mKUFFU19kZWNyeXB0OworIAkJZGF0LT5zdHJlYW0uY2JjCT0gKGNiYzEyOF9mKWJzYWVzX2NiY19lbmNyeXB0OworIAkJfQorQEAgLTUxNCw3ICs1NTksNyBAQCBzdGF0aWMgaW50IGFlc19pbml0X2tleShFVlBfQ0lQSEVSX0NUWCAqY3R4LCBjb25zdCB1bnNpZ25lZCBjaGFyICprZXksCisgI2lmZGVmIFZQQUVTX0NBUEFCTEUKKyAJICAgIGlmIChWUEFFU19DQVBBQkxFKQorIAkJeworLQkJcmV0ID0gdnBhZXNfc2V0X2RlY3J5cHRfa2V5KGtleSxjdHgtPmtleV9sZW4qOCwmZGF0LT5rcyk7CisrCQlyZXQgPSB2cGFlc19zZXRfZGVjcnlwdF9rZXkoa2V5LGN0eC0+a2V5X2xlbio4LCZkYXQtPmtzLmtzKTsKKyAJCWRhdC0+YmxvY2sJPSAoYmxvY2sxMjhfZil2cGFlc19kZWNyeXB0OworIAkJZGF0LT5zdHJlYW0uY2JjCT0gbW9kZT09RVZQX0NJUEhfQ0JDX01PREUgPworIAkJCQkJKGNiYzEyOF9mKXZwYWVzX2NiY19lbmNyeXB0IDoKK0BAIC01MjMsMTcgKzU2OCwzNyBAQCBzdGF0aWMgaW50IGFlc19pbml0X2tleShFVlBfQ0lQSEVSX0NUWCAqY3R4LCBjb25zdCB1bnNpZ25lZCBjaGFyICprZXksCisgCSAgICBlbHNlCisgI2VuZGlmCisgCQl7CistCQlyZXQgPSBBRVNfc2V0X2RlY3J5cHRfa2V5KGtleSxjdHgtPmtleV9sZW4qOCwmZGF0LT5rcyk7CisrCQlyZXQgPSBBRVNfc2V0X2RlY3J5cHRfa2V5KGtleSxjdHgtPmtleV9sZW4qOCwmZGF0LT5rcy5rcyk7CisgCQlkYXQtPmJsb2NrCT0gKGJsb2NrMTI4X2YpQUVTX2RlY3J5cHQ7CisgCQlkYXQtPnN0cmVhbS5jYmMJPSBtb2RlPT1FVlBfQ0lQSF9DQkNfTU9ERSA/CisgCQkJCQkoY2JjMTI4X2YpQUVTX2NiY19lbmNyeXB0IDoKKyAJCQkJCU5VTEw7CisgCQl9CisgCWVsc2UKKysjaWZkZWYgSFdBRVNfQ0FQQUJMRQorKwkgICAgaWYgKEhXQUVTX0NBUEFCTEUpCisrCQl7CisrCQlyZXQgPSBIV0FFU19zZXRfZW5jcnlwdF9rZXkoa2V5LGN0eC0+a2V5X2xlbio4LCZkYXQtPmtzLmtzKTsKKysJCWRhdC0+YmxvY2sgICAgICA9IChibG9jazEyOF9mKUhXQUVTX2VuY3J5cHQ7CisrCQlkYXQtPnN0cmVhbS5jYmMgPSBOVUxMOworKyNpZmRlZiBIV0FFU19jYmNfZW5jcnlwdAorKwkJaWYgKG1vZGU9PUVWUF9DSVBIX0NCQ19NT0RFKQorKwkJICAgIGRhdC0+c3RyZWFtLmNiYyA9IChjYmMxMjhfZilIV0FFU19jYmNfZW5jcnlwdDsKKysJCWVsc2UKKysjZW5kaWYKKysjaWZkZWYgSFdBRVNfY3RyMzJfZW5jcnlwdF9ibG9ja3MKKysJCWlmIChtb2RlPT1FVlBfQ0lQSF9DVFJfTU9ERSkKKysJCSAgICBkYXQtPnN0cmVhbS5jdHIgPSAoY3RyMTI4X2YpSFdBRVNfY3RyMzJfZW5jcnlwdF9ibG9ja3M7CisrCQllbHNlCisrI2VuZGlmCisrCQkodm9pZCkwOwkvKiB0ZXJtaW5hdGUgcG90ZW50aWFsbHkgb3BlbiAnZWxzZScgKi8KKysJCX0KKysJICAgIGVsc2UKKysjZW5kaWYKKyAjaWZkZWYgQlNBRVNfQ0FQQUJMRQorIAkgICAgaWYgKEJTQUVTX0NBUEFCTEUgJiYgbW9kZT09RVZQX0NJUEhfQ1RSX01PREUpCisgCQl7CistCQlyZXQgPSBBRVNfc2V0X2VuY3J5cHRfa2V5KGtleSxjdHgtPmtleV9sZW4qOCwmZGF0LT5rcyk7CisrCQlyZXQgPSBBRVNfc2V0X2VuY3J5cHRfa2V5KGtleSxjdHgtPmtleV9sZW4qOCwmZGF0LT5rcy5rcyk7CisgCQlkYXQtPmJsb2NrCT0gKGJsb2NrMTI4X2YpQUVTX2VuY3J5cHQ7CisgCQlkYXQtPnN0cmVhbS5jdHIJPSAoY3RyMTI4X2YpYnNhZXNfY3RyMzJfZW5jcnlwdF9ibG9ja3M7CisgCQl9CitAQCAtNTQyLDcgKzYwNyw3IEBAIHN0YXRpYyBpbnQgYWVzX2luaXRfa2V5KEVWUF9DSVBIRVJfQ1RYICpjdHgsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmtleSwKKyAjaWZkZWYgVlBBRVNfQ0FQQUJMRQorIAkgICAgaWYgKFZQQUVTX0NBUEFCTEUpCisgCQl7CistCQlyZXQgPSB2cGFlc19zZXRfZW5jcnlwdF9rZXkoa2V5LGN0eC0+a2V5X2xlbio4LCZkYXQtPmtzKTsKKysJCXJldCA9IHZwYWVzX3NldF9lbmNyeXB0X2tleShrZXksY3R4LT5rZXlfbGVuKjgsJmRhdC0+a3Mua3MpOworIAkJZGF0LT5ibG9jawk9IChibG9jazEyOF9mKXZwYWVzX2VuY3J5cHQ7CisgCQlkYXQtPnN0cmVhbS5jYmMJPSBtb2RlPT1FVlBfQ0lQSF9DQkNfTU9ERSA/CisgCQkJCQkoY2JjMTI4X2YpdnBhZXNfY2JjX2VuY3J5cHQgOgorQEAgLTU1MSw3ICs2MTYsNyBAQCBzdGF0aWMgaW50IGFlc19pbml0X2tleShFVlBfQ0lQSEVSX0NUWCAqY3R4LCBjb25zdCB1bnNpZ25lZCBjaGFyICprZXksCisgCSAgICBlbHNlCisgI2VuZGlmCisgCQl7CistCQlyZXQgPSBBRVNfc2V0X2VuY3J5cHRfa2V5KGtleSxjdHgtPmtleV9sZW4qOCwmZGF0LT5rcyk7CisrCQlyZXQgPSBBRVNfc2V0X2VuY3J5cHRfa2V5KGtleSxjdHgtPmtleV9sZW4qOCwmZGF0LT5rcy5rcyk7CisgCQlkYXQtPmJsb2NrCT0gKGJsb2NrMTI4X2YpQUVTX2VuY3J5cHQ7CisgCQlkYXQtPnN0cmVhbS5jYmMJPSBtb2RlPT1FVlBfQ0lQSF9DQkNfTU9ERSA/CisgCQkJCQkoY2JjMTI4X2YpQUVTX2NiY19lbmNyeXB0IDoKK0BAIC04MjIsMTAgKzg4NywyNSBAQCBzdGF0aWMgaW50IGFlc19nY21faW5pdF9rZXkoRVZQX0NJUEhFUl9DVFggKmN0eCwgY29uc3QgdW5zaWduZWQgY2hhciAqa2V5LAorIAkJcmV0dXJuIDE7CisgCWlmIChrZXkpCisgCQl7IGRvIHsKKysjaWZkZWYgSFdBRVNfQ0FQQUJMRQorKwkJaWYgKEhXQUVTX0NBUEFCTEUpCisrCQkJeworKwkJCUhXQUVTX3NldF9lbmNyeXB0X2tleShrZXksY3R4LT5rZXlfbGVuKjgsJmdjdHgtPmtzLmtzKTsKKysJCQlDUllQVE9fZ2NtMTI4X2luaXQoJmdjdHgtPmdjbSwmZ2N0eC0+a3MsCisrCQkJCQkoYmxvY2sxMjhfZilIV0FFU19lbmNyeXB0KTsKKysjaWZkZWYgSFdBRVNfY3RyMzJfZW5jcnlwdF9ibG9ja3MKKysJCQlnY3R4LT5jdHIgPSAoY3RyMTI4X2YpSFdBRVNfY3RyMzJfZW5jcnlwdF9ibG9ja3M7CisrI2Vsc2UKKysJCQlnY3R4LT5jdHIgPSBOVUxMOworKyNlbmRpZgorKwkJCWJyZWFrOworKwkJCX0KKysJCWVsc2UKKysjZW5kaWYKKyAjaWZkZWYgQlNBRVNfQ0FQQUJMRQorIAkJaWYgKEJTQUVTX0NBUEFCTEUpCisgCQkJeworLQkJCUFFU19zZXRfZW5jcnlwdF9rZXkoa2V5LGN0eC0+a2V5X2xlbio4LCZnY3R4LT5rcyk7CisrCQkJQUVTX3NldF9lbmNyeXB0X2tleShrZXksY3R4LT5rZXlfbGVuKjgsJmdjdHgtPmtzLmtzKTsKKyAJCQlDUllQVE9fZ2NtMTI4X2luaXQoJmdjdHgtPmdjbSwmZ2N0eC0+a3MsCisgCQkJCQkoYmxvY2sxMjhfZilBRVNfZW5jcnlwdCk7CisgCQkJZ2N0eC0+Y3RyID0gKGN0cjEyOF9mKWJzYWVzX2N0cjMyX2VuY3J5cHRfYmxvY2tzOworQEAgLTgzNiw3ICs5MTYsNyBAQCBzdGF0aWMgaW50IGFlc19nY21faW5pdF9rZXkoRVZQX0NJUEhFUl9DVFggKmN0eCwgY29uc3QgdW5zaWduZWQgY2hhciAqa2V5LAorICNpZmRlZiBWUEFFU19DQVBBQkxFCisgCQlpZiAoVlBBRVNfQ0FQQUJMRSkKKyAJCQl7CistCQkJdnBhZXNfc2V0X2VuY3J5cHRfa2V5KGtleSxjdHgtPmtleV9sZW4qOCwmZ2N0eC0+a3MpOworKwkJCXZwYWVzX3NldF9lbmNyeXB0X2tleShrZXksY3R4LT5rZXlfbGVuKjgsJmdjdHgtPmtzLmtzKTsKKyAJCQlDUllQVE9fZ2NtMTI4X2luaXQoJmdjdHgtPmdjbSwmZ2N0eC0+a3MsCisgCQkJCQkoYmxvY2sxMjhfZil2cGFlc19lbmNyeXB0KTsKKyAJCQlnY3R4LT5jdHIgPSBOVUxMOworQEAgLTg0Niw3ICs5MjYsNyBAQCBzdGF0aWMgaW50IGFlc19nY21faW5pdF9rZXkoRVZQX0NJUEhFUl9DVFggKmN0eCwgY29uc3QgdW5zaWduZWQgY2hhciAqa2V5LAorICNlbmRpZgorIAkJKHZvaWQpMDsJLyogdGVybWluYXRlIHBvdGVudGlhbGx5IG9wZW4gJ2Vsc2UnICovCisgCistCQlBRVNfc2V0X2VuY3J5cHRfa2V5KGtleSwgY3R4LT5rZXlfbGVuICogOCwgJmdjdHgtPmtzKTsKKysJCUFFU19zZXRfZW5jcnlwdF9rZXkoa2V5LCBjdHgtPmtleV9sZW4gKiA4LCAmZ2N0eC0+a3Mua3MpOworIAkJQ1JZUFRPX2djbTEyOF9pbml0KCZnY3R4LT5nY20sICZnY3R4LT5rcywgKGJsb2NrMTI4X2YpQUVTX2VuY3J5cHQpOworICNpZmRlZiBBRVNfQ1RSX0FTTQorIAkJZ2N0eC0+Y3RyID0gKGN0cjEyOF9mKUFFU19jdHIzMl9lbmNyeXB0OworQEAgLTEwNjcsNiArMTE0NywyOSBAQCBzdGF0aWMgaW50IGFlc194dHNfaW5pdF9rZXkoRVZQX0NJUEhFUl9DVFggKmN0eCwgY29uc3QgdW5zaWduZWQgY2hhciAqa2V5LAorIAkJeGN0eC0+c3RyZWFtID0gTlVMTDsKKyAjZW5kaWYKKyAJCS8qIGtleV9sZW4gaXMgdHdvIEFFUyBrZXlzICovCisrI2lmZGVmIEhXQUVTX0NBUEFCTEUKKysJCWlmIChIV0FFU19DQVBBQkxFKQorKwkJCXsKKysJCQlpZiAoZW5jKQorKwkJCSAgICB7CisrCQkJICAgIEhXQUVTX3NldF9lbmNyeXB0X2tleShrZXksIGN0eC0+a2V5X2xlbiAqIDQsICZ4Y3R4LT5rczEua3MpOworKwkJCSAgICB4Y3R4LT54dHMuYmxvY2sxID0gKGJsb2NrMTI4X2YpSFdBRVNfZW5jcnlwdDsKKysJCQkgICAgfQorKwkJCWVsc2UKKysJCQkgICAgeworKwkJCSAgICBIV0FFU19zZXRfZGVjcnlwdF9rZXkoa2V5LCBjdHgtPmtleV9sZW4gKiA0LCAmeGN0eC0+a3MxLmtzKTsKKysJCQkgICAgeGN0eC0+eHRzLmJsb2NrMSA9IChibG9jazEyOF9mKUhXQUVTX2RlY3J5cHQ7CisrCQkJICAgIH0KKysKKysJCQlIV0FFU19zZXRfZW5jcnlwdF9rZXkoa2V5ICsgY3R4LT5rZXlfbGVuLzIsCisrCQkJCQkJICAgIGN0eC0+a2V5X2xlbiAqIDQsICZ4Y3R4LT5rczIua3MpOworKwkJCXhjdHgtPnh0cy5ibG9jazIgPSAoYmxvY2sxMjhfZilIV0FFU19lbmNyeXB0OworKworKwkJCXhjdHgtPnh0cy5rZXkxID0gJnhjdHgtPmtzMTsKKysJCQlicmVhazsKKysJCQl9CisrCQllbHNlCisrI2VuZGlmCisgI2lmZGVmIEJTQUVTX0NBUEFCTEUKKyAJCWlmIChCU0FFU19DQVBBQkxFKQorIAkJCXhjdHgtPnN0cmVhbSA9IGVuYyA/IGJzYWVzX3h0c19lbmNyeXB0IDogYnNhZXNfeHRzX2RlY3J5cHQ7CitAQCAtMTA3NywxNyArMTE4MCwxNyBAQCBzdGF0aWMgaW50IGFlc194dHNfaW5pdF9rZXkoRVZQX0NJUEhFUl9DVFggKmN0eCwgY29uc3QgdW5zaWduZWQgY2hhciAqa2V5LAorIAkJICAgIHsKKyAJCSAgICBpZiAoZW5jKQorIAkJCXsKKy0JCQl2cGFlc19zZXRfZW5jcnlwdF9rZXkoa2V5LCBjdHgtPmtleV9sZW4gKiA0LCAmeGN0eC0+a3MxKTsKKysJCQl2cGFlc19zZXRfZW5jcnlwdF9rZXkoa2V5LCBjdHgtPmtleV9sZW4gKiA0LCAmeGN0eC0+a3MxLmtzKTsKKyAJCQl4Y3R4LT54dHMuYmxvY2sxID0gKGJsb2NrMTI4X2YpdnBhZXNfZW5jcnlwdDsKKyAJCQl9CisgCQkgICAgZWxzZQorIAkJCXsKKy0JCQl2cGFlc19zZXRfZGVjcnlwdF9rZXkoa2V5LCBjdHgtPmtleV9sZW4gKiA0LCAmeGN0eC0+a3MxKTsKKysJCQl2cGFlc19zZXRfZGVjcnlwdF9rZXkoa2V5LCBjdHgtPmtleV9sZW4gKiA0LCAmeGN0eC0+a3MxLmtzKTsKKyAJCQl4Y3R4LT54dHMuYmxvY2sxID0gKGJsb2NrMTI4X2YpdnBhZXNfZGVjcnlwdDsKKyAJCQl9CisgCisgCQkgICAgdnBhZXNfc2V0X2VuY3J5cHRfa2V5KGtleSArIGN0eC0+a2V5X2xlbi8yLAorLQkJCQkJCWN0eC0+a2V5X2xlbiAqIDQsICZ4Y3R4LT5rczIpOworKwkJCQkJCWN0eC0+a2V5X2xlbiAqIDQsICZ4Y3R4LT5rczIua3MpOworIAkJICAgIHhjdHgtPnh0cy5ibG9jazIgPSAoYmxvY2sxMjhfZil2cGFlc19lbmNyeXB0OworIAorIAkJICAgIHhjdHgtPnh0cy5rZXkxID0gJnhjdHgtPmtzMTsKK0BAIC0xMDk5LDE3ICsxMjAyLDE3IEBAIHN0YXRpYyBpbnQgYWVzX3h0c19pbml0X2tleShFVlBfQ0lQSEVSX0NUWCAqY3R4LCBjb25zdCB1bnNpZ25lZCBjaGFyICprZXksCisgCisgCQlpZiAoZW5jKQorIAkJCXsKKy0JCQlBRVNfc2V0X2VuY3J5cHRfa2V5KGtleSwgY3R4LT5rZXlfbGVuICogNCwgJnhjdHgtPmtzMSk7CisrCQkJQUVTX3NldF9lbmNyeXB0X2tleShrZXksIGN0eC0+a2V5X2xlbiAqIDQsICZ4Y3R4LT5rczEua3MpOworIAkJCXhjdHgtPnh0cy5ibG9jazEgPSAoYmxvY2sxMjhfZilBRVNfZW5jcnlwdDsKKyAJCQl9CisgCQllbHNlCisgCQkJeworLQkJCUFFU19zZXRfZGVjcnlwdF9rZXkoa2V5LCBjdHgtPmtleV9sZW4gKiA0LCAmeGN0eC0+a3MxKTsKKysJCQlBRVNfc2V0X2RlY3J5cHRfa2V5KGtleSwgY3R4LT5rZXlfbGVuICogNCwgJnhjdHgtPmtzMS5rcyk7CisgCQkJeGN0eC0+eHRzLmJsb2NrMSA9IChibG9jazEyOF9mKUFFU19kZWNyeXB0OworIAkJCX0KKyAKKyAJCUFFU19zZXRfZW5jcnlwdF9rZXkoa2V5ICsgY3R4LT5rZXlfbGVuLzIsCistCQkJCQkJY3R4LT5rZXlfbGVuICogNCwgJnhjdHgtPmtzMik7CisrCQkJCQkJY3R4LT5rZXlfbGVuICogNCwgJnhjdHgtPmtzMi5rcyk7CisgCQl4Y3R4LT54dHMuYmxvY2syID0gKGJsb2NrMTI4X2YpQUVTX2VuY3J5cHQ7CisgCisgCQl4Y3R4LT54dHMua2V5MSA9ICZ4Y3R4LT5rczE7CitAQCAtMTIxNywxMCArMTMyMCwyMyBAQCBzdGF0aWMgaW50IGFlc19jY21faW5pdF9rZXkoRVZQX0NJUEhFUl9DVFggKmN0eCwgY29uc3QgdW5zaWduZWQgY2hhciAqa2V5LAorIAkJcmV0dXJuIDE7CisgCWlmIChrZXkpIGRvCisgCQl7CisrI2lmZGVmIEhXQUVTX0NBUEFCTEUKKysJCWlmIChIV0FFU19DQVBBQkxFKQorKwkJCXsKKysJCQlIV0FFU19zZXRfZW5jcnlwdF9rZXkoa2V5LGN0eC0+a2V5X2xlbio4LCZjY3R4LT5rcy5rcyk7CisrCisrCQkJQ1JZUFRPX2NjbTEyOF9pbml0KCZjY3R4LT5jY20sIGNjdHgtPk0sIGNjdHgtPkwsCisrCQkJCQkmY2N0eC0+a3MsIChibG9jazEyOF9mKUhXQUVTX2VuY3J5cHQpOworKwkJCWNjdHgtPnN0ciA9IE5VTEw7CisrCQkJY2N0eC0+a2V5X3NldCA9IDE7CisrCQkJYnJlYWs7CisrCQkJfQorKwkJZWxzZQorKyNlbmRpZgorICNpZmRlZiBWUEFFU19DQVBBQkxFCisgCQlpZiAoVlBBRVNfQ0FQQUJMRSkKKyAJCQl7CistCQkJdnBhZXNfc2V0X2VuY3J5cHRfa2V5KGtleSwgY3R4LT5rZXlfbGVuKjgsICZjY3R4LT5rcyk7CisrCQkJdnBhZXNfc2V0X2VuY3J5cHRfa2V5KGtleSwgY3R4LT5rZXlfbGVuKjgsICZjY3R4LT5rcy5rcyk7CisgCQkJQ1JZUFRPX2NjbTEyOF9pbml0KCZjY3R4LT5jY20sIGNjdHgtPk0sIGNjdHgtPkwsCisgCQkJCQkmY2N0eC0+a3MsIChibG9jazEyOF9mKXZwYWVzX2VuY3J5cHQpOworIAkJCWNjdHgtPnN0ciA9IE5VTEw7CitAQCAtMTIyOCw3ICsxMzQ0LDcgQEAgc3RhdGljIGludCBhZXNfY2NtX2luaXRfa2V5KEVWUF9DSVBIRVJfQ1RYICpjdHgsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmtleSwKKyAJCQlicmVhazsKKyAJCQl9CisgI2VuZGlmCistCQlBRVNfc2V0X2VuY3J5cHRfa2V5KGtleSwgY3R4LT5rZXlfbGVuICogOCwgJmNjdHgtPmtzKTsKKysJCUFFU19zZXRfZW5jcnlwdF9rZXkoa2V5LCBjdHgtPmtleV9sZW4gKiA4LCAmY2N0eC0+a3Mua3MpOworIAkJQ1JZUFRPX2NjbTEyOF9pbml0KCZjY3R4LT5jY20sIGNjdHgtPk0sIGNjdHgtPkwsCisgCQkJCQkmY2N0eC0+a3MsIChibG9jazEyOF9mKUFFU19lbmNyeXB0KTsKKyAJCWNjdHgtPnN0ciA9IE5VTEw7CitkaWZmIC0tZ2l0IGEvY3J5cHRvL21vZGVzL01ha2VmaWxlIGIvY3J5cHRvL21vZGVzL01ha2VmaWxlCitpbmRleCAzZDhiYWZkLi45YmNmYTBlIDEwMDY0NAorLS0tIGEvY3J5cHRvL21vZGVzL01ha2VmaWxlCisrKysgYi9jcnlwdG8vbW9kZXMvTWFrZWZpbGUKK0BAIC01NiwxNCArNTYsMTYgQEAgZ2hhc2gtYWxwaGEuczoJYXNtL2doYXNoLWFscGhhLnBsCisgCShwcmVwcm9jPS90bXAvJCQkJC4kQDsgdHJhcCAicm0gJCRwcmVwcm9jIiBJTlQ7IFwKKyAJJChQRVJMKSBhc20vZ2hhc2gtYWxwaGEucGwgPiAkJHByZXByb2MgJiYgXAorIAkkKENDKSAtRSAkJHByZXByb2MgPiAkQCAmJiBybSAkJHByZXByb2MpCistCisgZ2hhc2gtcGFyaXNjLnM6CWFzbS9naGFzaC1wYXJpc2MucGwKKyAJJChQRVJMKSBhc20vZ2hhc2gtcGFyaXNjLnBsICQoUEVSTEFTTV9TQ0hFTUUpICRACisrZ2hhc2h2OC1hcm14LlM6CWFzbS9naGFzaHY4LWFybXgucGwKKysJJChQRVJMKSBhc20vZ2hhc2h2OC1hcm14LnBsICQoUEVSTEFTTV9TQ0hFTUUpICRACisgCisgIyBHTlUgbWFrZSAiY2F0Y2ggYWxsIgorIGdoYXNoLSUuUzoJYXNtL2doYXNoLSUucGw7CSQoUEVSTCkgJDwgJChQRVJMQVNNX1NDSEVNRSkgJEAKKyAKKyBnaGFzaC1hcm12NC5vOglnaGFzaC1hcm12NC5TCisrZ2hhc2h2OC1hcm14Lm86CWdoYXNodjgtYXJteC5TCisgCisgZmlsZXM6CisgCSQoUEVSTCkgJChUT1ApL3V0aWwvZmlsZXMucGwgTWFrZWZpbGUgPj4gJChUT1ApL01JTkZPCitkaWZmIC0tZ2l0IGEvY3J5cHRvL21vZGVzL2FzbS9naGFzaC1hcm12NC5wbCBiL2NyeXB0by9tb2Rlcy9hc20vZ2hhc2gtYXJtdjQucGwKK2luZGV4IGQ5MTU4NmUuLjAwMjNiZjkgMTAwNjQ0CistLS0gYS9jcnlwdG8vbW9kZXMvYXNtL2doYXNoLWFybXY0LnBsCisrKysgYi9jcnlwdG8vbW9kZXMvYXNtL2doYXNoLWFybXY0LnBsCitAQCAtMzUsNiArMzUsMjAgQEAKKyAjIEFkZCBORU9OIGltcGxlbWVudGF0aW9uIGZlYXR1cmluZyBwb2x5bm9taWFsIG11bHRpcGxpY2F0aW9uLCBpLmUuIG5vCisgIyBsb29rdXAgdGFibGVzIGludm9sdmVkLiBPbiBDb3J0ZXggQTggaXQgd2FzIG1lYXN1cmVkIHRvIHByb2Nlc3Mgb25lCisgIyBieXRlIGluIDE1IGN5Y2xlcyBvciA1NSUgZmFzdGVyIHRoYW4gaW50ZWdlci1vbmx5IGNvZGUuCisrIworKyMgQXByaWwgMjAxNAorKyMKKysjIFN3aXRjaCB0byBtdWx0aXBsaWNhdGlvbiBhbGdvcml0aG0gc3VnZ2VzdGVkIGluIHBhcGVyIHJlZmVycmVkCisrIyBiZWxvdyBhbmQgY29tYmluZSBpdCB3aXRoIHJlZHVjdGlvbiBhbGdvcml0aG0gZnJvbSB4ODYgbW9kdWxlLgorKyMgUGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQgb3ZlciBwcmV2aW91cyB2ZXJzaW9uIHZhcmllcyBmcm9tIDY1JSBvbgorKyMgU25hcGRyYWdvbiBTNCB0byAxMTAlIG9uIENvcnRleCBBOS4gSW4gYWJzb2x1dGUgdGVybXMgQ29ydGV4IEE4CisrIyBwcm9jZXNzZXMgb25lIGJ5dGUgaW4gOC40NSBjeWNsZXMsIEE5IC0gaW4gMTAuMiwgU25hcGRyYWdvbiBTNCAtCisrIyBpbiA5LjMzLgorKyMKKysjIEPibWFyYSwgRC47IEdvdXbqYSwgQy4gUC4gTC47IEzzcGV6LCBKLiAmIERhaGFiLCBSLjogRmFzdCBTb2Z0d2FyZQorKyMgUG9seW5vbWlhbCBNdWx0aXBsaWNhdGlvbiBvbiBBUk0gUHJvY2Vzc29ycyB1c2luZyB0aGUgTkVPTiBFbmdpbmUuCisrIyAKKysjIGh0dHA6Ly9jb25yYWRvcGxnLmNyeXB0b2xhbmQubmV0L2ZpbGVzLzIwMTAvMTIvbW9jcnlzZW4xMy5wZGYKKyAKKyAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgIyBOb3RlIGFib3V0ICI1MjhCIiB2YXJpYW50LiBJbiBBUk0gY2FzZSBpdCBtYWtlcyBsZXNzZXIgc2Vuc2UgdG8KK0BAIC0zMDMsMTE3ICszMTcsMTYwIEBAICRjb2RlLj08PF9fXzsKKyAuc2l6ZQlnY21fZ211bHRfNGJpdCwuLWdjbV9nbXVsdF80Yml0CisgX19fCisgeworLW15ICRjbnQ9JEh0Ymw7CSMgJEh0YmwgaXMgdXNlZCBvbmNlIGluIHRoZSB2ZXJ5IGJlZ2lubmluZworLQorLW15ICgkSGhpLCAkSGxvLCAkWm8sICRULCAkeGksICRtb2QpID0gbWFwKCJkJF8iLCgwLi43KSk7CistbXkgKCRRaGksICRRbG8sICRaLCAgJFIsICR6ZXJvLCAkUXBvc3QsICRJTikgPSBtYXAoInEkXyIsKDguLjE1KSk7CistCistIyBaOlpvIGtlZXBzIDEyOC1iaXQgcmVzdWx0IHNoaWZ0ZWQgYnkgMSB0byB0aGUgcmlnaHQsIHdpdGggYm90dG9tIGJpdAorLSMgaW4gWm8uIE9yIHNob3VsZCBJIHNheSAidG9wIGJpdCIsIGJlY2F1c2UgR0hBU0ggaXMgc3BlY2lmaWVkIGluCistIyByZXZlcnNlIGJpdCBvcmRlcj8gT3RoZXJ3aXNlIHN0cmFpZ2h0Zm9yd2FyZCAxMjgtYnQgSCBieSBvbmUgaW5wdXQKKy0jIGJ5dGUgbXVsdGlwbGljYXRpb24gYW5kIG1vZHVsby1yZWR1Y3Rpb24sIHRpbWVzIDE2LgorK215ICgkWGwsJFhtLCRYaCwkSU4pPW1hcCgicSRfIiwoMC4uMykpOworK215ICgkdDAsJHQxLCR0MiwkdDMpPW1hcCgicSRfIiwoOC4uMTIpKTsKKytteSAoJEhsbywkSGhpLCRIaGwsJGs0OCwkazMyLCRrMTYpPW1hcCgiZCRfIiwoMjYuLjMxKSk7CisgCistc3ViIERsbygpICAgeyBzaGlmdD1+bXxxKFsxXT9bMC05XSl8PyJkIi4oJDEqMik6IiI7ICAgICB9Cistc3ViIERoaSgpICAgeyBzaGlmdD1+bXxxKFsxXT9bMC05XSl8PyJkIi4oJDEqMisxKToiIjsgICB9Cistc3ViIFEoKSAgICAgeyBzaGlmdD1+bXxkKFsxLTNdP1swMjQ2OF0pfD8icSIuKCQxLzIpOiIiOyB9Cisrc3ViIGNsbXVsNjR4NjQgeworK215ICgkciwkYSwkYik9QF87CisrJGNvZGUuPTw8X19fOworKwl2ZXh0LjgJCSR0MCNsbywgJGEsICRhLCAjMQlAIEExCisrCXZtdWxsLnA4CSR0MCwgJHQwI2xvLCAkYgkJQCBGID0gQTEqQgorKwl2ZXh0LjgJCSRyI2xvLCAkYiwgJGIsICMxCUAgQjEKKysJdm11bGwucDgJJHIsICRhLCAkciNsbwkJQCBFID0gQSpCMQorKwl2ZXh0LjgJCSR0MSNsbywgJGEsICRhLCAjMglAIEEyCisrCXZtdWxsLnA4CSR0MSwgJHQxI2xvLCAkYgkJQCBIID0gQTIqQgorKwl2ZXh0LjgJCSR0MyNsbywgJGIsICRiLCAjMglAIEIyCisrCXZtdWxsLnA4CSR0MywgJGEsICR0MyNsbwkJQCBHID0gQSpCMgorKwl2ZXh0LjgJCSR0MiNsbywgJGEsICRhLCAjMwlAIEEzCisrCXZlb3IJCSR0MCwgJHQwLCAkcgkJQCBMID0gRSArIEYKKysJdm11bGwucDgJJHQyLCAkdDIjbG8sICRiCQlAIEogPSBBMypCCisrCXZleHQuOAkJJHIjbG8sICRiLCAkYiwgIzMJQCBCMworKwl2ZW9yCQkkdDEsICR0MSwgJHQzCQlAIE0gPSBHICsgSAorKwl2bXVsbC5wOAkkciwgJGEsICRyI2xvCQlAIEkgPSBBKkIzCisrCXZlb3IJCSR0MCNsbywgJHQwI2xvLCAkdDAjaGkJQCB0MCA9IChMKSAoUDAgKyBQMSkgPDwgOAorKwl2YW5kCQkkdDAjaGksICR0MCNoaSwgJGs0OAorKwl2ZXh0LjgJCSR0MyNsbywgJGIsICRiLCAjNAlAIEI0CisrCXZlb3IJCSR0MSNsbywgJHQxI2xvLCAkdDEjaGkJQCB0MSA9IChNKSAoUDIgKyBQMykgPDwgMTYKKysJdmFuZAkJJHQxI2hpLCAkdDEjaGksICRrMzIKKysJdm11bGwucDgJJHQzLCAkYSwgJHQzI2xvCQlAIEsgPSBBKkI0CisrCXZlb3IJCSR0MiwgJHQyLCAkcgkJQCBOID0gSSArIEoKKysJdmVvcgkJJHQwI2xvLCAkdDAjbG8sICR0MCNoaQorKwl2ZW9yCQkkdDEjbG8sICR0MSNsbywgJHQxI2hpCisrCXZlb3IJCSR0MiNsbywgJHQyI2xvLCAkdDIjaGkJQCB0MiA9IChOKSAoUDQgKyBQNSkgPDwgMjQKKysJdmFuZAkJJHQyI2hpLCAkdDIjaGksICRrMTYKKysJdmV4dC44CQkkdDAsICR0MCwgJHQwLCAjMTUKKysJdmVvcgkJJHQzI2xvLCAkdDMjbG8sICR0MyNoaQlAIHQzID0gKEspIChQNiArIFA3KSA8PCAzMgorKwl2bW92Lmk2NAkkdDMjaGksICMwCisrCXZleHQuOAkJJHQxLCAkdDEsICR0MSwgIzE0CisrCXZlb3IJCSR0MiNsbywgJHQyI2xvLCAkdDIjaGkKKysJdm11bGwucDgJJHIsICRhLCAkYgkJQCBEID0gQSpCCisrCXZleHQuOAkJJHQzLCAkdDMsICR0MywgIzEyCisrCXZleHQuOAkJJHQyLCAkdDIsICR0MiwgIzEzCisrCXZlb3IJCSR0MCwgJHQwLCAkdDEKKysJdmVvcgkJJHQyLCAkdDIsICR0MworKwl2ZW9yCQkkciwgJHIsICR0MAorKwl2ZW9yCQkkciwgJHIsICR0MgorK19fXworK30KKyAKKyAkY29kZS49PDxfX187CisgI2lmIF9fQVJNX0FSQ0hfXz49NworIC5mcHUJbmVvbgorIAorKy5nbG9iYWwJZ2NtX2luaXRfbmVvbgorKy50eXBlCWdjbV9pbml0X25lb24sJWZ1bmN0aW9uCisrLmFsaWduCTQKKytnY21faW5pdF9uZW9uOgorKwl2bGQxLjY0CQkkSU4jaGksW3IxLDo2NF0hCUAgbG9hZCBICisrCXZtb3YuaTgJCSR0MCwjMHhlMQorKwl2bGQxLjY0CQkkSU4jbG8sW3IxLDo2NF0KKysJdnNobC5pNjQJJHQwI2hpLCM1NworKwl2c2hyLnU2NAkkdDAjbG8sIzYzCQlAIHQwPTB4YzIuLi4uMDEKKysJdmR1cC44CQkkdDEsJElOI2hpWzddCisrCXZzaHIudTY0CSRIbG8sJElOI2xvLCM2MworKwl2c2hyLnM4CQkkdDEsIzcJCQlAIGJyb2FkY2FzdCBjYXJyeSBiaXQKKysJdnNobC5pNjQJJElOLCRJTiwjMQorKwl2YW5kCQkkdDAsJHQwLCR0MQorKwl2b3JyCQkkSU4jaGksJEhsbwkJQCBIPDw8PTEKKysJdmVvcgkJJElOLCRJTiwkdDAJCUAgdHdpc3RlZCBICisrCXZzdG1pYQkJcjAseyRJTn0KKysKKysJcmV0CQkJCQlAIGJ4IGxyCisrLnNpemUJZ2NtX2luaXRfbmVvbiwuLWdjbV9pbml0X25lb24KKysKKyAuZ2xvYmFsCWdjbV9nbXVsdF9uZW9uCisgLnR5cGUJZ2NtX2dtdWx0X25lb24sJWZ1bmN0aW9uCisgLmFsaWduCTQKKyBnY21fZ211bHRfbmVvbjoKKy0Jc3ViCQkkSHRibCwjMTYJCUAgcG9pbnQgYXQgSCBpbiBHQ00xMjhfQ1RYCistCXZsZDEuNjQJCWAmRGhpKCIkSU4iKWAsWyRYaSw6NjRdIUAgbG9hZCBYaQorLQl2bW92LmkzMgkkbW9kLCMweGUxCQlAIG91ciBpcnJlZHVjaWJsZSBwb2x5bm9taWFsCistCXZsZDEuNjQJCWAmRGxvKCIkSU4iKWAsWyRYaSw6NjRdIQorLQl2c2hyLnU2NAkkbW9kLCMzMgorLQl2bGRtaWEJCSRIdGJsLHskSGhpLSRIbG99CUAgbG9hZCBICistCXZlb3IJCSR6ZXJvLCR6ZXJvCisrCXZsZDEuNjQJCSRJTiNoaSxbJFhpLDo2NF0hCUAgbG9hZCBYaQorKwl2bGQxLjY0CQkkSU4jbG8sWyRYaSw6NjRdIQorKwl2bW92Lmk2NAkkazQ4LCMweDAwMDBmZmZmZmZmZmZmZmYKKysJdmxkbWlhCQkkSHRibCx7JEhsby0kSGhpfQlAIGxvYWQgdHdpc3RlZCBICisrCXZtb3YuaTY0CSRrMzIsIzB4MDAwMDAwMDBmZmZmZmZmZgorICNpZmRlZiBfX0FSTUVMX18KKyAJdnJldjY0LjgJJElOLCRJTgorICNlbmRpZgorLQl2ZW9yCQkkUXBvc3QsJFFwb3N0CistCXZlb3IJCSRSLCRSCistCW1vdgkJJGNudCwjMTYKKy0JdmVvcgkJJFosJFoKKysJdm1vdi5pNjQJJGsxNiwjMHgwMDAwMDAwMDAwMDBmZmZmCisrCXZlb3IJCSRIaGwsJEhsbywkSGhpCQlAIEthcmF0c3ViYSBwcmUtcHJvY2Vzc2luZworIAltb3YJCSRsZW4sIzE2CistCXZlb3IJCSRabywkWm8KKy0JdmR1cC44CQkkeGksYCZEbG8oIiRJTiIpYFswXQlAIGJyb2FkY2FzdCBsb3dlc3QgYnl0ZQorLQliCQkuTGlubmVyX25lb24KKysJYgkJLkxnbXVsdF9uZW9uCisgLnNpemUJZ2NtX2dtdWx0X25lb24sLi1nY21fZ211bHRfbmVvbgorIAorIC5nbG9iYWwJZ2NtX2doYXNoX25lb24KKyAudHlwZQlnY21fZ2hhc2hfbmVvbiwlZnVuY3Rpb24KKyAuYWxpZ24JNAorIGdjbV9naGFzaF9uZW9uOgorLQl2bGQxLjY0CQlgJkRoaSgiJFoiKWAsWyRYaSw6NjRdIQlAIGxvYWQgWGkKKy0Jdm1vdi5pMzIJJG1vZCwjMHhlMQkJQCBvdXIgaXJyZWR1Y2libGUgcG9seW5vbWlhbAorLQl2bGQxLjY0CQlgJkRsbygiJFoiKWAsWyRYaSw6NjRdIQorLQl2c2hyLnU2NAkkbW9kLCMzMgorLQl2bGRtaWEJCSRYaSx7JEhoaS0kSGxvfQkJQCBsb2FkIEgKKy0JdmVvcgkJJHplcm8sJHplcm8KKy0Jbm9wCisrCXZsZDEuNjQJCSRYbCNoaSxbJFhpLDo2NF0hCUAgbG9hZCBYaQorKwl2bGQxLjY0CQkkWGwjbG8sWyRYaSw6NjRdIQorKwl2bW92Lmk2NAkkazQ4LCMweDAwMDBmZmZmZmZmZmZmZmYKKysJdmxkbWlhCQkkSHRibCx7JEhsby0kSGhpfQlAIGxvYWQgdHdpc3RlZCBICisrCXZtb3YuaTY0CSRrMzIsIzB4MDAwMDAwMDBmZmZmZmZmZgorICNpZmRlZiBfX0FSTUVMX18KKy0JdnJldjY0LjgJJFosJFoKKysJdnJldjY0LjgJJFhsLCRYbAorICNlbmRpZgorLS5Mb3V0ZXJfbmVvbjoKKy0JdmxkMS42NAkJYCZEaGkoJElOKWAsWyRpbnBdIQlAIGxvYWQgaW5wCistCXZlb3IJCSRRcG9zdCwkUXBvc3QKKy0JdmxkMS42NAkJYCZEbG8oJElOKWAsWyRpbnBdIQorLQl2ZW9yCQkkUiwkUgorLQltb3YJCSRjbnQsIzE2CisrCXZtb3YuaTY0CSRrMTYsIzB4MDAwMDAwMDAwMDAwZmZmZgorKwl2ZW9yCQkkSGhsLCRIbG8sJEhoaQkJQCBLYXJhdHN1YmEgcHJlLXByb2Nlc3NpbmcKKysKKysuTG9vcF9uZW9uOgorKwl2bGQxLjY0CQkkSU4jaGksWyRpbnBdIQkJQCBsb2FkIGlucAorKwl2bGQxLjY0CQkkSU4jbG8sWyRpbnBdIQorICNpZmRlZiBfX0FSTUVMX18KKyAJdnJldjY0LjgJJElOLCRJTgorICNlbmRpZgorLQl2ZW9yCQkkWm8sJFpvCistCXZlb3IJCSRJTiwkWgkJCUAgaW5wXj1YaQorLQl2ZW9yCQkkWiwkWgorLQl2ZHVwLjgJCSR4aSxgJkRsbygiJElOIilgWzBdCUAgYnJvYWRjYXN0IGxvd2VzdCBieXRlCistLkxpbm5lcl9uZW9uOgorLQlzdWJzCQkkY250LCRjbnQsIzEKKy0Jdm11bGwucDgJJFFsbywkSGxvLCR4aQkJQCBILmxvt1hpW2ldCistCXZtdWxsLnA4CSRRaGksJEhoaSwkeGkJCUAgSC5oabdYaVtpXQorLQl2ZXh0LjgJCSRJTiwkemVybywjMQkJQCBJTj4+PTgKKy0KKy0JdmVvcgkJJFosJFFwb3N0CQlAIG1vZHVsby1zY2hlZHVsZWQgcGFydAorLQl2c2hsLmk2NAlgJkRsbygiJFIiKWAsIzQ4CistCXZkdXAuOAkJJHhpLGAmRGxvKCIkSU4iKWBbMF0JQCBicm9hZGNhc3QgbG93ZXN0IGJ5dGUKKy0JdmVvcgkJJFQsYCZEbG8oIiRRbG8iKWAsYCZEbG8oIiRaIilgCistCistCXZlb3IJCWAmRGhpKCIkWiIpYCxgJkRsbygiJFIiKWAKKy0JdnV6cC44CQkkUWxvLCRRaGkKKy0JdnNsaS44CQkkWm8sJFQsIzEJCUAgY29tcG9zZSB0aGUgImNhcnJ5IiBieXRlCistCXZleHQuOAkJJFosJHplcm8sIzEJCUAgWj4+PTgKKy0KKy0Jdm11bGwucDgJJFIsJFpvLCRtb2QJCUAgImNhcnJ5IrcweGUxCistCXZzaHIudTgJCSRabywkVCwjNwkJQCBzYXZlIFoncyBib3R0b20gYml0CistCXZleHQuOAkJJFFwb3N0LCRRbG8sJHplcm8sIzEJQCBRbG8+Pj04CistCXZlb3IJCSRaLCRRaGkKKy0JYm5lCQkuTGlubmVyX25lb24KKy0KKy0JdmVvcgkJJFosJFFwb3N0CQlAIG1vZHVsby1zY2hlZHVsZWQgYXJ0ZWZhY3QKKy0JdnNobC5pNjQJYCZEbG8oIiRSIilgLCM0OAorLQl2ZW9yCQlgJkRoaSgiJFoiKWAsYCZEbG8oIiRSIilgCistCistCUAgZmluYWxpemF0aW9uLCBub3JtYWxpemUgWjpabworLQl2YW5kCQkkWm8sJG1vZAkJQCBzdWZmaWNlcyB0byBtYXNrIHRoZSBiaXQKKy0JdnNoci51NjQJYCZEaGkoJlEoIiRabyIpKWAsYCZEbG8oIiRaIilgLCM2MworLQl2c2hsLmk2NAkkWiwjMQorKwl2ZW9yCQkkSU4sJFhsCQkJQCBpbnBePVhpCisrLkxnbXVsdF9uZW9uOgorK19fXworKwkmY2xtdWw2NHg2NAkoJFhsLCRIbG8sIiRJTiNsbyIpOwkjIEgubG+3WGkubG8KKyskY29kZS49PDxfX187CisrCXZlb3IJCSRJTiNsbywkSU4jbG8sJElOI2hpCUAgS2FyYXRzdWJhIHByZS1wcm9jZXNzaW5nCisrX19fCisrCSZjbG11bDY0eDY0CSgkWG0sJEhobCwiJElOI2xvIik7CSMgKEgubG8rSC5oaSm3KFhpLmxvK1hpLmhpKQorKwkmY2xtdWw2NHg2NAkoJFhoLCRIaGksIiRJTiNoaSIpOwkjIEguaGm3WGkuaGkKKyskY29kZS49PDxfX187CisrCXZlb3IJCSRYbSwkWG0sJFhsCQlAIEthcmF0c3ViYSBwb3N0LXByb2Nlc3NpbmcKKysJdmVvcgkJJFhtLCRYbSwkWGgKKysJdmVvcgkJJFhsI2hpLCRYbCNoaSwkWG0jbG8KKysJdmVvcgkJJFhoI2xvLCRYaCNsbywkWG0jaGkJQCBYaHxYbCAtIDI1Ni1iaXQgcmVzdWx0CisrCisrCUAgZXF1aXZhbGVudCBvZiByZWR1Y3Rpb25fYXZ4IGZyb20gZ2hhc2gteDg2XzY0LnBsCisrCXZzaGwuaTY0CSR0MSwkWGwsIzU3CQlAIDFzdCBwaGFzZQorKwl2c2hsLmk2NAkkdDIsJFhsLCM2MgorKwl2ZW9yCQkkdDIsJHQyLCR0MQkJQAorKwl2c2hsLmk2NAkkdDEsJFhsLCM2MworKwl2ZW9yCQkkdDIsICR0MiwgJHQxCQlACisrIAl2ZW9yCQkkWGwjaGksJFhsI2hpLCR0MiNsbwlACisrCXZlb3IJCSRYaCNsbywkWGgjbG8sJHQyI2hpCisrCisrCXZzaHIudTY0CSR0MiwkWGwsIzEJCUAgMm5kIHBoYXNlCisrCXZlb3IJCSRYaCwkWGgsJFhsCisrCXZlb3IJCSRYbCwkWGwsJHQyCQlACisrCXZzaHIudTY0CSR0MiwkdDIsIzYKKysJdnNoci51NjQJJFhsLCRYbCwjMQkJQAorKwl2ZW9yCQkkWGwsJFhsLCRYaAkJQAorKwl2ZW9yCQkkWGwsJFhsLCR0MgkJQAorKworIAlzdWJzCQkkbGVuLCMxNgorLQl2b3JyCQkkWixgJlEoIiRabyIpYAkJQCBaPVo6Wm88PDEKKy0JYm5lCQkuTG91dGVyX25lb24KKysJYm5lCQkuTG9vcF9uZW9uCisgCisgI2lmZGVmIF9fQVJNRUxfXworLQl2cmV2NjQuOAkkWiwkWgorKwl2cmV2NjQuOAkkWGwsJFhsCisgI2VuZGlmCisgCXN1YgkJJFhpLCMxNgkKKy0JdnN0MS42NAkJYCZEaGkoIiRaIilgLFskWGksOjY0XSEJQCB3cml0ZSBvdXQgWGkKKy0JdnN0MS42NAkJYCZEbG8oIiRaIilgLFskWGksOjY0XQorKwl2c3QxLjY0CQkkWGwjaGksWyRYaSw6NjRdIQlAIHdyaXRlIG91dCBYaQorKwl2c3QxLjY0CQkkWGwjbG8sWyRYaSw6NjRdCisgCistCWJ4CWxyCisrCXJldAkJCQkJQCBieCBscgorIC5zaXplCWdjbV9naGFzaF9uZW9uLC4tZ2NtX2doYXNoX25lb24KKyAjZW5kaWYKKyBfX18KK0BAIC00MjMsNyArNDgwLDEzIEBAICRjb2RlLj08PF9fXzsKKyAuYWxpZ24gIDIKKyBfX18KKyAKKy0kY29kZSA9fiBzL1xgKFteXGBdKilcYC9ldmFsICQxL2dlbTsKKy0kY29kZSA9fiBzL1xiYnhccytsclxiLy53b3JkXHQweGUxMmZmZjFlL2dtOwkjIG1ha2UgaXQgcG9zc2libGUgdG8gY29tcGlsZSB3aXRoIC1tYXJjaD1hcm12NAorLXByaW50ICRjb2RlOworK2ZvcmVhY2ggKHNwbGl0KCJcbiIsJGNvZGUpKSB7CisrCXMvXGAoW15cYF0qKVxgL2V2YWwgJDEvZ2VvOworKworKwlzL1xicShbMC05XSspIyhsb3xoaSkvc3ByaW50ZiAiZCVkIiwyKiQxKygkMiBlcSAiaGkiKS9nZW8Jb3IKKysJcy9cYnJldFxiL2J4CWxyL2dvCQlvcgorKwlzL1xiYnhccytsclxiLy53b3JkXHQweGUxMmZmZjFlL2dvOyAgICAjIG1ha2UgaXQgcG9zc2libGUgdG8gY29tcGlsZSB3aXRoIC1tYXJjaD1hcm12NAorKworKwlwcmludCAkXywiXG4iOworK30KKyBjbG9zZSBTVERPVVQ7ICMgZW5mb3JjZSBmbHVzaAorZGlmZiAtLWdpdCBhL2NyeXB0by9tb2Rlcy9hc20vZ2hhc2h2OC1hcm14LnBsIGIvY3J5cHRvL21vZGVzL2FzbS9naGFzaHY4LWFybXgucGwKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5iMjRmM2Q3CistLS0gL2Rldi9udWxsCisrKysgYi9jcnlwdG8vbW9kZXMvYXNtL2doYXNodjgtYXJteC5wbAorQEAgLTAsMCArMSwyNDAgQEAKKysjIS91c3IvYmluL2VudiBwZXJsCisrIworKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKysjIFdyaXR0ZW4gYnkgQW5keSBQb2x5YWtvdiA8YXBwcm9Ab3BlbnNzbC5vcmc+IGZvciB0aGUgT3BlblNTTAorKyMgcHJvamVjdC4gVGhlIG1vZHVsZSBpcywgaG93ZXZlciwgZHVhbCBsaWNlbnNlZCB1bmRlciBPcGVuU1NMIGFuZAorKyMgQ1JZUFRPR0FNUyBsaWNlbnNlcyBkZXBlbmRpbmcgb24gd2hlcmUgeW91IG9idGFpbiBpdC4gRm9yIGZ1cnRoZXIKKysjIGRldGFpbHMgc2VlIGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvfmFwcHJvL2NyeXB0b2dhbXMvLgorKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKysjCisrIyBHSEFTSCBmb3IgQVJNdjggQ3J5cHRvIEV4dGVuc2lvbiwgNjQtYml0IHBvbHlub21pYWwgbXVsdGlwbGljYXRpb24uCisrIworKyMgSnVuZSAyMDE0CisrIworKyMgSW5pdGlhbCB2ZXJzaW9uIHdhcyBkZXZlbG9wZWQgaW4gdGlnaHQgY29vcGVyYXRpb24gd2l0aCBBcmQKKysjIEJpZXNoZXV2ZWwgPGFyZC5iaWVzaGV1dmVsQGxpbmFyby5vcmc+IGZyb20gYml0cy1uLXBpZWNlcyBmcm9tCisrIyBvdGhlciBhc3NlbWJseSBtb2R1bGVzLiBKdXN0IGxpa2UgYWVzdjgtYXJteC5wbCB0aGlzIG1vZHVsZQorKyMgc3VwcG9ydHMgYm90aCBBQXJjaDMyIGFuZCBBQXJjaDY0IGV4ZWN1dGlvbiBtb2Rlcy4KKysjCisrIyBDdXJyZW50IHBlcmZvcm1hbmNlIGluIGN5Y2xlcyBwZXIgcHJvY2Vzc2VkIGJ5dGU6CisrIworKyMJCVBNVUxMWzJdCTMyLWJpdCBORU9OKCopCisrIyBBcHBsZSBBNwkxLjc2CQk1LjYyCisrIyBDb3J0ZXgtQTV4CW4vYQkJbi9hCisrIworKyMgKCopCXByZXNlbnRlZCBmb3IgcmVmZXJlbmNlL2NvbXBhcmlzb24gcHVycG9zZXM7CisrCisrJGZsYXZvdXIgPSBzaGlmdDsKKytvcGVuIFNURE9VVCwiPiIuc2hpZnQ7CisrCisrJFhpPSJ4MCI7CSMgYXJndW1lbnQgYmxvY2sKKyskSHRibD0ieDEiOworKyRpbnA9IngyIjsKKyskbGVuPSJ4MyI7CisrCisrJGluYz0ieDEyIjsKKysKKyt7CisrbXkgKCRYbCwkWG0sJFhoLCRJTik9bWFwKCJxJF8iLCgwLi4zKSk7CisrbXkgKCR0MCwkdDEsJHQyLCR0MywkSCwkSGhsKT1tYXAoInEkXyIsKDguLjE0KSk7CisrCisrJGNvZGU9PDxfX187CisrI2luY2x1ZGUgImFybV9hcmNoLmgiCisrCisrLnRleHQKKytfX18KKyskY29kZS49Ii5hcmNoCWFybXY4LWErY3J5cHRvXG4iCWlmICgkZmxhdm91ciA9fiAvNjQvKTsKKyskY29kZS49Ii5mcHUJbmVvblxuLmNvZGUJMzJcbiIJaWYgKCRmbGF2b3VyICF+IC82NC8pOworKworKyRjb2RlLj08PF9fXzsKKysuZ2xvYmFsCWdjbV9pbml0X3Y4CisrLnR5cGUJZ2NtX2luaXRfdjgsJWZ1bmN0aW9uCisrLmFsaWduCTQKKytnY21faW5pdF92ODoKKysJdmxkMS42NAkJeyR0MX0sW3gxXQkJQCBsb2FkIEgKKysJdm1vdi5pOAkJJHQwLCMweGUxCisrCXZleHQuOAkJJElOLCR0MSwkdDEsIzgKKysJdnNobC5pNjQJJHQwLCR0MCwjNTcKKysJdnNoci51NjQJJHQyLCR0MCwjNjMKKysJdmV4dC44CQkkdDAsJHQyLCR0MCwjOAkJQCB0MD0weGMyLi4uLjAxCisrCXZkdXAuMzIJCSR0MSwke3QxfVsxXQorKwl2c2hyLnU2NAkkdDMsJElOLCM2MworKwl2c2hyLnMzMgkkdDEsJHQxLCMzMQkJQCBicm9hZGNhc3QgY2FycnkgYml0CisrCXZhbmQJCSR0MywkdDMsJHQwCisrCXZzaGwuaTY0CSRJTiwkSU4sIzEKKysJdmV4dC44CQkkdDMsJHQzLCR0MywjOAorKwl2YW5kCQkkdDAsJHQwLCR0MQorKwl2b3JyCQkkSU4sJElOLCR0MwkJQCBIPDw8PTEKKysJdmVvcgkJJElOLCRJTiwkdDAJCUAgdHdpc3RlZCBICisrCXZzdDEuNjQJCXskSU59LFt4MF0KKysKKysJcmV0CisrLnNpemUJZ2NtX2luaXRfdjgsLi1nY21faW5pdF92OAorKworKy5nbG9iYWwJZ2NtX2dtdWx0X3Y4CisrLnR5cGUJZ2NtX2dtdWx0X3Y4LCVmdW5jdGlvbgorKy5hbGlnbgk0CisrZ2NtX2dtdWx0X3Y4OgorKwl2bGQxLjY0CQl7JHQxfSxbJFhpXQkJQCBsb2FkIFhpCisrCXZtb3YuaTgJCSR0MywjMHhlMQorKwl2bGQxLjY0CQl7JEh9LFskSHRibF0JCUAgbG9hZCB0d2lzdGVkIEgKKysJdnNobC51NjQJJHQzLCR0MywjNTcKKysjaWZuZGVmIF9fQVJNRUJfXworKwl2cmV2NjQuOAkkdDEsJHQxCisrI2VuZGlmCisrCXZleHQuOAkJJEhobCwkSCwkSCwjOAorKwltb3YJCSRsZW4sIzAKKysJdmV4dC44CQkkSU4sJHQxLCR0MSwjOAorKwltb3YJCSRpbmMsIzAKKysJdmVvcgkJJEhobCwkSGhsLCRICQlAIEthcmF0c3ViYSBwcmUtcHJvY2Vzc2luZworKwltb3YJCSRpbnAsJFhpCisrCWIJCS5MZ211bHRfdjgKKysuc2l6ZQlnY21fZ211bHRfdjgsLi1nY21fZ211bHRfdjgKKysKKysuZ2xvYmFsCWdjbV9naGFzaF92OAorKy50eXBlCWdjbV9naGFzaF92OCwlZnVuY3Rpb24KKysuYWxpZ24JNAorK2djbV9naGFzaF92ODoKKysJdmxkMS42NAkJeyRYbH0sWyRYaV0JCUAgbG9hZCBbcm90YXRlZF0gWGkKKysJc3VicwkJJGxlbiwkbGVuLCMxNgorKwl2bW92Lmk4CQkkdDMsIzB4ZTEKKysJbW92CQkkaW5jLCMxNgorKwl2bGQxLjY0CQl7JEh9LFskSHRibF0JCUAgbG9hZCB0d2lzdGVkIEgKKysJY2NscgkJJGluYyxlcQorKwl2ZXh0LjgJCSRYbCwkWGwsJFhsLCM4CisrCXZzaGwudTY0CSR0MywkdDMsIzU3CisrCXZsZDEuNjQJCXskdDF9LFskaW5wXSwkaW5jCUAgbG9hZCBbcm90YXRlZF0gaW5wCisrCXZleHQuOAkJJEhobCwkSCwkSCwjOAorKyNpZm5kZWYgX19BUk1FQl9fCisrCXZyZXY2NC44CSRYbCwkWGwKKysJdnJldjY0LjgJJHQxLCR0MQorKyNlbmRpZgorKwl2ZW9yCQkkSGhsLCRIaGwsJEgJCUAgS2FyYXRzdWJhIHByZS1wcm9jZXNzaW5nCisrCXZleHQuOAkJJElOLCR0MSwkdDEsIzgKKysJYgkJLkxvb3BfdjgKKysKKysuYWxpZ24JNAorKy5Mb29wX3Y4OgorKwl2ZXh0LjgJCSR0MiwkWGwsJFhsLCM4CisrCXZlb3IJCSRJTiwkSU4sJFhsCQlAIGlucF49WGkKKysJdmVvcgkJJHQxLCR0MSwkdDIJCUAgJHQxIGlzIHJvdGF0ZWQgaW5wXlhpCisrCisrLkxnbXVsdF92ODoKKysJdnBtdWxsLnA2NAkkWGwsJEgsJElOCQlAIEgubG+3WGkubG8KKysJdmVvcgkJJHQxLCR0MSwkSU4JCUAgS2FyYXRzdWJhIHByZS1wcm9jZXNzaW5nCisrCXZwbXVsbDIucDY0CSRYaCwkSCwkSU4JCUAgSC5oabdYaS5oaQorKwlzdWJzCQkkbGVuLCRsZW4sIzE2CisrCXZwbXVsbC5wNjQJJFhtLCRIaGwsJHQxCQlAIChILmxvK0guaGkptyhYaS5sbytYaS5oaSkKKysJY2NscgkJJGluYyxlcQorKworKwl2ZXh0LjgJCSR0MSwkWGwsJFhoLCM4CQlAIEthcmF0c3ViYSBwb3N0LXByb2Nlc3NpbmcKKysJdmVvcgkJJHQyLCRYbCwkWGgKKysJdmVvcgkJJFhtLCRYbSwkdDEKKysJIHZsZDEuNjQJeyR0MX0sWyRpbnBdLCRpbmMJQCBsb2FkIFtyb3RhdGVkXSBpbnAKKysJdmVvcgkJJFhtLCRYbSwkdDIKKysJdnBtdWxsLnA2NAkkdDIsJFhsLCR0MwkJQCAxc3QgcGhhc2UKKysKKysJdm1vdgkJJFhoI2xvLCRYbSNoaQkJQCBYaHxYbSAtIDI1Ni1iaXQgcmVzdWx0CisrCXZtb3YJCSRYbSNoaSwkWGwjbG8JCUAgWG0gaXMgcm90YXRlZCBYbAorKyNpZm5kZWYgX19BUk1FQl9fCisrCSB2cmV2NjQuOAkkdDEsJHQxCisrI2VuZGlmCisrCXZlb3IJCSRYbCwkWG0sJHQyCisrCSB2ZXh0LjgJCSRJTiwkdDEsJHQxLCM4CisrCisrCXZleHQuOAkJJHQyLCRYbCwkWGwsIzgJCUAgMm5kIHBoYXNlCisrCXZwbXVsbC5wNjQJJFhsLCRYbCwkdDMKKysJdmVvcgkJJHQyLCR0MiwkWGgKKysJdmVvcgkJJFhsLCRYbCwkdDIKKysJYi5ocwkJLkxvb3BfdjgKKysKKysjaWZuZGVmIF9fQVJNRUJfXworKwl2cmV2NjQuOAkkWGwsJFhsCisrI2VuZGlmCisrCXZleHQuOAkJJFhsLCRYbCwkWGwsIzgKKysJdnN0MS42NAkJeyRYbH0sWyRYaV0JCUAgd3JpdGUgb3V0IFhpCisrCisrCXJldAorKy5zaXplCWdjbV9naGFzaF92OCwuLWdjbV9naGFzaF92OAorK19fXworK30KKyskY29kZS49PDxfX187CisrLmFzY2l6ICAiR0hBU0ggZm9yIEFSTXY4LCBDUllQVE9HQU1TIGJ5IDxhcHByb1xAb3BlbnNzbC5vcmc+IgorKy5hbGlnbiAgMgorK19fXworKworK2lmICgkZmxhdm91ciA9fiAvNjQvKSB7CQkJIyMjIyMjIyMgNjQtYml0IGNvZGUKKysgICAgc3ViIHVudm1vdiB7CisrCW15ICRhcmc9c2hpZnQ7CisrCisrCSRhcmcgPX4gbS9xKFswLTldKykjKGxvfGhpKSxccypxKFswLTldKykjKGxvfGhpKS9vICYmCisrCXNwcmludGYJImlucwl2JWQuZFslZF0sdiVkLmRbJWRdIiwkMSwoJDIgZXEgImxvIik/MDoxLCQzLCgkNCBlcSAibG8iKT8wOjE7CisrICAgIH0KKysgICAgZm9yZWFjaChzcGxpdCgiXG4iLCRjb2RlKSkgeworKwlzL2NjbHJccysoW3d4XSkoW14sXSspLFxzKihbYS16XSspL2NzZWwJJDEkMiwkMXpyLCQxJDIsJDMvbwlvcgorKwlzL3Ztb3ZcLmk4L21vdmkvbwkJb3IJIyBmaXggdXAgbGVnYWN5IG1uZW1vbmljcworKwlzL3Ztb3ZccysoLiopL3Vudm1vdigkMSkvZ2VvCW9yCisrCXMvdmV4dFwuOC9leHQvbwkJCW9yCisrCXMvdnNoclwucy9zc2hyXC5zL28JCW9yCisrCXMvdnNoci91c2hyL28JCQlvcgorKwlzL14oXHMrKXYvJDEvbwkJCW9yCSMgc3RyaXAgb2ZmIHYgcHJlZml4CisrCXMvXGJieFxzK2xyXGIvcmV0L287CisrCisrCXMvXGJxKFswLTldKylcYi8idiIuKCQxPDg/JDE6JDErOCkuIi4xNmIiL2dlbzsJIyBvbGQtPm5ldyByZWdpc3RlcnMKKysJcy9AXHMvXC9cLy9vOwkJCQkjIG9sZC0+bmV3IHN0eWxlIGNvbW1lbnRhcnkKKysKKysJIyBmaXggdXAgcmVtYWluaWcgbGVnYWN5IHN1ZmZpeGVzCisrCXMvXC5bdWldPzgoXHMpLyQxL287CisrCXMvXC5bdWlzXT8zMi8vbyBhbmQgcy9cLjE2Yi9cLjRzL2dvOworKwltL1wucDY0L28gYW5kIHMvXC4xNmIvXC4xcS9vOwkJIyAxc3QgcG11bGwgYXJndW1lbnQKKysJbS9sXC5wNjQvbyBhbmQgcy9cLjE2Yi9cLjFkL2dvOwkJIyAybmQgYW5kIDNyZCBwbXVsbCBhcmd1bWVudHMKKysJcy9cLlt1aXNwXT82NC8vbyBhbmQgcy9cLjE2Yi9cLjJkL2dvOworKwlzL1wuWzQyXShbc2RdKVxbKFswLTNdKVxdL1wuJDFcWyQyXF0vbzsKKysKKysJcHJpbnQgJF8sIlxuIjsKKysgICAgfQorK30gZWxzZSB7CQkJCSMjIyMjIyMjIDMyLWJpdCBjb2RlCisrICAgIHN1YiB1bnZkdXAzMiB7CisrCW15ICRhcmc9c2hpZnQ7CisrCisrCSRhcmcgPX4gbS9xKFswLTldKyksXHMqcShbMC05XSspXFsoWzAtM10pXF0vbyAmJgorKwlzcHJpbnRmCSJ2ZHVwLjMyCXElZCxkJWRbJWRdIiwkMSwyKiQyKygkMz4+MSksJDMmMTsKKysgICAgfQorKyAgICBzdWIgdW52cG11bGxwNjQgeworKwlteSAoJG1uZW1vbmljLCRhcmcpPUBfOworKworKwlpZiAoJGFyZyA9fiBtL3EoWzAtOV0rKSxccypxKFswLTldKyksXHMqcShbMC05XSspL28pIHsKKysJICAgIG15ICR3b3JkID0gMHhmMmEwMGUwMHwoKCQxJjcpPDwxMyl8KCgkMSY4KTw8MTkpCisrCQkJCSB8KCgkMiY3KTw8MTcpfCgoJDImOCk8PDQpCisrCQkJCSB8KCgkMyY3KTw8MSkgfCgoJDMmOCk8PDIpOworKwkgICAgJHdvcmQgfD0gMHgwMDAxMDAwMQkgaWYgKCRtbmVtb25pYyA9fiAiMiIpOworKwkgICAgIyBzaW5jZSBBUk12NyBpbnN0cnVjdGlvbnMgYXJlIGFsd2F5cyBlbmNvZGVkIGxpdHRsZS1lbmRpYW4uCisrCSAgICAjIGNvcnJlY3Qgc29sdXRpb24gaXMgdG8gdXNlIC5pbnN0IGRpcmVjdGl2ZSwgYnV0IG9sZGVyCisrCSAgICAjIGFzc2VtYmxlcnMgZG9uJ3QgaW1wbGVtZW50IGl0Oi0oCisrCSAgICBzcHJpbnRmICIuYnl0ZVx0MHglMDJ4LDB4JTAyeCwweCUwMngsMHglMDJ4XHRAICVzICVzIiwKKysJCQkkd29yZCYweGZmLCgkd29yZD4+OCkmMHhmZiwKKysJCQkoJHdvcmQ+PjE2KSYweGZmLCgkd29yZD4+MjQpJjB4ZmYsCisrCQkJJG1uZW1vbmljLCRhcmc7CisrCX0KKysgICAgfQorKworKyAgICBmb3JlYWNoKHNwbGl0KCJcbiIsJGNvZGUpKSB7CisrCXMvXGJbd3hdKFswLTldKylcYi9yJDEvZ287CQkjIG5ldy0+b2xkIHJlZ2lzdGVycworKwlzL1xidihbMC05XSlcLlsxMjQ2OF0rW2JzZF1cYi9xJDEvZ287CSMgbmV3LT5vbGQgcmVnaXN0ZXJzCisrICAgICAgICBzL1wvXC9ccz8vQCAvbzsJCQkJIyBuZXctPm9sZCBzdHlsZSBjb21tZW50YXJ5CisrCisrCSMgZml4IHVwIHJlbWFpbmlnIG5ldy1zdHlsZSBzdWZmaXhlcworKwlzL1xdLCNbMC05XSsvXSEvbzsKKysKKysJcy9jY2xyXHMrKFteLF0rKSxccyooW2Etel0rKS9tb3YkMgkkMSwjMC9vCQkJb3IKKysJcy92ZHVwXC4zMlxzKyguKikvdW52ZHVwMzIoJDEpL2dlbwkJCQlvcgorKwlzL3Y/KHBtdWxsMj8pXC5wNjRccysoLiopL3VudnBtdWxscDY0KCQxLCQyKS9nZW8JCW9yCisrCXMvXGJxKFswLTldKykjKGxvfGhpKS9zcHJpbnRmICJkJWQiLDIqJDErKCQyIGVxICJoaSIpL2dlbwlvcgorKwlzL14oXHMrKWJcLi8kMWIvbwkJCQkJCW9yCisrCXMvXihccyspcmV0LyQxYnhcdGxyL287CisrCisrICAgICAgICBwcmludCAkXywiXG4iOworKyAgICB9CisrfQorKworK2Nsb3NlIFNURE9VVDsgIyBlbmZvcmNlIGZsdXNoCitkaWZmIC0tZ2l0IGEvY3J5cHRvL21vZGVzL2djbTEyOC5jIGIvY3J5cHRvL21vZGVzL2djbTEyOC5jCitpbmRleCBlMWRjMmIwLi43OWViYjY2IDEwMDY0NAorLS0tIGEvY3J5cHRvL21vZGVzL2djbTEyOC5jCisrKysgYi9jcnlwdG8vbW9kZXMvZ2NtMTI4LmMKK0BAIC02NDIsNyArNjQyLDcgQEAgc3RhdGljIHZvaWQgZ2NtX2dtdWx0XzFiaXQodTY0IFhpWzJdLGNvbnN0IHU2NCBIWzJdKQorIAorICNlbmRpZgorIAorLSNpZglUQUJMRV9CSVRTPT00ICYmIGRlZmluZWQoR0hBU0hfQVNNKQorKyNpZglUQUJMRV9CSVRTPT00ICYmIChkZWZpbmVkKEdIQVNIX0FTTSkgfHwgZGVmaW5lZChPUEVOU1NMX0NQVUlEX09CSikpCisgIyBpZgkhZGVmaW5lZChJMzg2X09OTFkpICYmIFwKKyAJKGRlZmluZWQoX19pMzg2KQl8fCBkZWZpbmVkKF9faTM4Nl9fKQl8fCBcCisgCSBkZWZpbmVkKF9feDg2XzY0KQl8fCBkZWZpbmVkKF9feDg2XzY0X18pCXx8IFwKK0BAIC02NjMsMTMgKzY2MywyMSBAQCB2b2lkIGdjbV9naGFzaF80Yml0X21teCh1NjQgWGlbMl0sY29uc3QgdTEyOCBIdGFibGVbMTZdLGNvbnN0IHU4ICppbnAsc2l6ZV90IGxlbgorIHZvaWQgZ2NtX2dtdWx0XzRiaXRfeDg2KHU2NCBYaVsyXSxjb25zdCB1MTI4IEh0YWJsZVsxNl0pOworIHZvaWQgZ2NtX2doYXNoXzRiaXRfeDg2KHU2NCBYaVsyXSxjb25zdCB1MTI4IEh0YWJsZVsxNl0sY29uc3QgdTggKmlucCxzaXplX3QgbGVuKTsKKyAjICBlbmRpZgorLSMgZWxpZiBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19hcm0pCisrIyBlbGlmIGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX2FybSkgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykKKyAjICBpbmNsdWRlICJhcm1fYXJjaC5oIgorICMgIGlmIF9fQVJNX0FSQ0hfXz49NworICMgICBkZWZpbmUgR0hBU0hfQVNNX0FSTQorICMgICBkZWZpbmUgR0NNX0ZVTkNSRUZfNEJJVAorKyMgICBkZWZpbmUgUE1VTExfQ0FQQUJMRQkoT1BFTlNTTF9hcm1jYXBfUCAmIEFSTVY4X1BNVUxMKQorKyMgICBpZiBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19hcm0pCisrIyAgICBkZWZpbmUgTkVPTl9DQVBBQkxFCShPUEVOU1NMX2FybWNhcF9QICYgQVJNVjdfTkVPTikKKysjICAgZW5kaWYKKyt2b2lkIGdjbV9pbml0X25lb24odTEyOCBIdGFibGVbMTZdLGNvbnN0IHU2NCBYaVsyXSk7Cisgdm9pZCBnY21fZ211bHRfbmVvbih1NjQgWGlbMl0sY29uc3QgdTEyOCBIdGFibGVbMTZdKTsKKyB2b2lkIGdjbV9naGFzaF9uZW9uKHU2NCBYaVsyXSxjb25zdCB1MTI4IEh0YWJsZVsxNl0sY29uc3QgdTggKmlucCxzaXplX3QgbGVuKTsKKyt2b2lkIGdjbV9pbml0X3Y4KHUxMjggSHRhYmxlWzE2XSxjb25zdCB1NjQgWGlbMl0pOworK3ZvaWQgZ2NtX2dtdWx0X3Y4KHU2NCBYaVsyXSxjb25zdCB1MTI4IEh0YWJsZVsxNl0pOworK3ZvaWQgZ2NtX2doYXNoX3Y4KHU2NCBYaVsyXSxjb25zdCB1MTI4IEh0YWJsZVsxNl0sY29uc3QgdTggKmlucCxzaXplX3QgbGVuKTsKKyAjICBlbmRpZgorICMgZW5kaWYKKyAjZW5kaWYKK0BAIC03MzksMTAgKzc0NywyMSBAQCB2b2lkIENSWVBUT19nY20xMjhfaW5pdChHQ00xMjhfQ09OVEVYVCAqY3R4LHZvaWQgKmtleSxibG9jazEyOF9mIGJsb2NrKQorIAljdHgtPmdoYXNoID0gZ2NtX2doYXNoXzRiaXQ7CisgIyAgZW5kaWYKKyAjIGVsaWYJZGVmaW5lZChHSEFTSF9BU01fQVJNKQorLQlpZiAoT1BFTlNTTF9hcm1jYXBfUCAmIEFSTVY3X05FT04pIHsKKysjICBpZmRlZiBQTVVMTF9DQVBBQkxFCisrCWlmIChQTVVMTF9DQVBBQkxFKSB7CisrCQlnY21faW5pdF92OChjdHgtPkh0YWJsZSxjdHgtPkgudSk7CisrCQljdHgtPmdtdWx0ID0gZ2NtX2dtdWx0X3Y4OworKwkJY3R4LT5naGFzaCA9IGdjbV9naGFzaF92ODsKKysJfSBlbHNlCisrIyAgZW5kaWYKKysjICBpZmRlZiBORU9OX0NBUEFCTEUKKysJaWYgKE5FT05fQ0FQQUJMRSkgeworKwkJZ2NtX2luaXRfbmVvbihjdHgtPkh0YWJsZSxjdHgtPkgudSk7CisgCQljdHgtPmdtdWx0ID0gZ2NtX2dtdWx0X25lb247CisgCQljdHgtPmdoYXNoID0gZ2NtX2doYXNoX25lb247CistCX0gZWxzZSB7CisrCX0gZWxzZQorKyMgIGVuZGlmCisrCXsKKyAJCWdjbV9pbml0XzRiaXQoY3R4LT5IdGFibGUsY3R4LT5ILnUpOworIAkJY3R4LT5nbXVsdCA9IGdjbV9nbXVsdF80Yml0OworIAkJY3R4LT5naGFzaCA9IGdjbV9naGFzaF80Yml0OworZGlmZiAtLWdpdCBhL2NyeXB0by9zaGEvTWFrZWZpbGUgYi9jcnlwdG8vc2hhL01ha2VmaWxlCitpbmRleCAyZWIyYjdhLi42ZWYwMjdkIDEwMDY0NAorLS0tIGEvY3J5cHRvL3NoYS9NYWtlZmlsZQorKysrIGIvY3J5cHRvL3NoYS9NYWtlZmlsZQorQEAgLTkyLDYgKzkyLDkgQEAgc2hhNTEyLSUuUzoJYXNtL3NoYTUxMi0lLnBsOwkkKFBFUkwpICQ8ICQoUEVSTEFTTV9TQ0hFTUUpICRACisgc2hhMS1hcm12NC1sYXJnZS5vOglzaGExLWFybXY0LWxhcmdlLlMKKyBzaGEyNTYtYXJtdjQubzoJCXNoYTI1Ni1hcm12NC5TCisgc2hhNTEyLWFybXY0Lm86CQlzaGE1MTItYXJtdjQuUworK3NoYTEtYXJtdjgubzoJCXNoYTEtYXJtdjguUworK3NoYTI1Ni1hcm12OC5vOgkJc2hhMjU2LWFybXY4LlMKKytzaGE1MTItYXJtdjgubzoJCXNoYTUxMi1hcm12OC5TCisgCisgZmlsZXM6CisgCSQoUEVSTCkgJChUT1ApL3V0aWwvZmlsZXMucGwgTWFrZWZpbGUgPj4gJChUT1ApL01JTkZPCitkaWZmIC0tZ2l0IGEvY3J5cHRvL3NoYS9hc20vc2hhMS1hcm12NC1sYXJnZS5wbCBiL2NyeXB0by9zaGEvYXNtL3NoYTEtYXJtdjQtbGFyZ2UucGwKK2luZGV4IDMzZGEzZTAuLjUwYmQwN2IgMTAwNjQ0CistLS0gYS9jcnlwdG8vc2hhL2FzbS9zaGExLWFybXY0LWxhcmdlLnBsCisrKysgYi9jcnlwdG8vc2hhL2FzbS9zaGExLWFybXY0LWxhcmdlLnBsCitAQCAtMSw3ICsxLDcgQEAKKyAjIS91c3IvYmluL2VudiBwZXJsCisgCisgIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLSMgV3JpdHRlbiBieSBBbmR5IFBvbHlha292IDxhcHByb0BmeS5jaGFsbWVycy5zZT4gZm9yIHRoZSBPcGVuU1NMCisrIyBXcml0dGVuIGJ5IEFuZHkgUG9seWFrb3YgPGFwcHJvQG9wZW5zc2wub3JnPiBmb3IgdGhlIE9wZW5TU0wKKyAjIHByb2plY3QuIFRoZSBtb2R1bGUgaXMsIGhvd2V2ZXIsIGR1YWwgbGljZW5zZWQgdW5kZXIgT3BlblNTTCBhbmQKKyAjIENSWVBUT0dBTVMgbGljZW5zZXMgZGVwZW5kaW5nIG9uIHdoZXJlIHlvdSBvYnRhaW4gaXQuIEZvciBmdXJ0aGVyCisgIyBkZXRhaWxzIHNlZSBodHRwOi8vd3d3Lm9wZW5zc2wub3JnL35hcHByby9jcnlwdG9nYW1zLy4KK0BAIC01Miw2ICs1MiwyMCBAQAorICMgUHJvZmlsZXItYXNzaXN0ZWQgYW5kIHBsYXRmb3JtLXNwZWNpZmljIG9wdGltaXphdGlvbiByZXN1bHRlZCBpbiAxMCUKKyAjIGltcHJvdmVtZW50IG9uIENvcnRleCBBOCBjb3JlIGFuZCAxMi4yIGN5Y2xlcyBwZXIgYnl0ZS4KKyAKKysjIFNlcHRlbWJlciAyMDEzLgorKyMKKysjIEFkZCBORU9OIGltcGxlbWVudGF0aW9uIChzZWUgc2hhMS01ODYucGwgZm9yIGJhY2tncm91bmQgaW5mbykuIE9uCisrIyBDb3J0ZXggQTggaXQgd2FzIG1lYXN1cmVkIHRvIHByb2Nlc3Mgb25lIGJ5dGUgaW4gNi43IGN5Y2xlcyBvciA+ODAlCisrIyBmYXN0ZXIgdGhhbiBpbnRlZ2VyLW9ubHkgY29kZS4gQmVjYXVzZSBbZnVsbHkgdW5yb2xsZWRdIE5FT04gY29kZQorKyMgaXMgfjIuNXggbGFyZ2VyIGFuZCB0aGVyZSBhcmUgc29tZSByZWR1bmRhbnQgaW5zdHJ1Y3Rpb25zIGV4ZWN1dGVkCisrIyB3aGVuIHByb2Nlc3NpbmcgbGFzdCBibG9jaywgaW1wcm92ZW1lbnQgaXMgbm90IGFzIGJpZyBmb3Igc21hbGxlc3QKKysjIGJsb2Nrcywgb25seSB+MzAlLiBTbmFwZHJhZ29uIFM0IGlzIGEgdGFkIGZhc3RlciwgNi40IGN5Y2xlcyBwZXIKKysjIGJ5dGUsIHdoaWNoIGlzIGFsc28gPjgwJSBmYXN0ZXIgdGhhbiBpbnRlZ2VyLW9ubHkgY29kZS4KKysKKysjIE1heSAyMDE0LgorKyMKKysjIEFkZCBBUk12OCBjb2RlIHBhdGggcGVyZm9ybWluZyBhdCAyLjM1IGNwYiBvbiBBcHBsZSBBNy4KKysKKyB3aGlsZSAoKCRvdXRwdXQ9c2hpZnQpICYmICgkb3V0cHV0IX4vXlx3W1x3XC1dKlwuXHcrJC8pKSB7fQorIG9wZW4gU1RET1VULCI+JG91dHB1dCI7CisgCitAQCAtMTUzLDEyICsxNjcsMjIgQEAgJGNvZGU9PDxfX187CisgI2luY2x1ZGUgImFybV9hcmNoLmgiCisgCisgLnRleHQKKysuY29kZQkzMgorIAorIC5nbG9iYWwJc2hhMV9ibG9ja19kYXRhX29yZGVyCisgLnR5cGUJc2hhMV9ibG9ja19kYXRhX29yZGVyLCVmdW5jdGlvbgorIAorLS5hbGlnbgkyCisrLmFsaWduCTUKKyBzaGExX2Jsb2NrX2RhdGFfb3JkZXI6CisrI2lmIF9fQVJNX0FSQ0hfXz49NworKwlzdWIJcjMscGMsIzgJCUAgc2hhMV9ibG9ja19kYXRhX29yZGVyCisrCWxkcglyMTIsLkxPUEVOU1NMX2FybWNhcAorKwlsZHIJcjEyLFtyMyxyMTJdCQlAIE9QRU5TU0xfYXJtY2FwX1AKKysJdHN0CXIxMiwjQVJNVjhfU0hBMQorKwlibmUJLkxBUk12OAorKwl0c3QJcjEyLCNBUk1WN19ORU9OCisrCWJuZQkuTE5FT04KKysjZW5kaWYKKyAJc3RtZGIJc3AhLHtyNC1yMTIsbHJ9CisgCWFkZAkkbGVuLCRpbnAsJGxlbixsc2wjNglAICRsZW4gdG8gcG9pbnQgYXQgdGhlIGVuZCBvZiAkaW5wCisgCWxkbWlhCSRjdHgseyRhLCRiLCRjLCRkLCRlfQorQEAgLTIzMywxNiArMjU3LDQyMiBAQCAkY29kZS49PDxfX187CisgCW1vdmVxCXBjLGxyCQkJQCBiZSBiaW5hcnkgY29tcGF0aWJsZSB3aXRoIFY0LCB5ZXQKKyAJYngJbHIJCQlAIGludGVyb3BlcmFibGUgd2l0aCBUaHVtYiBJU0E6LSkKKyAjZW5kaWYKKy0uYWxpZ24JMgorKy5zaXplCXNoYTFfYmxvY2tfZGF0YV9vcmRlciwuLXNoYTFfYmxvY2tfZGF0YV9vcmRlcgorKworKy5hbGlnbgk1CisgLkxLXzAwXzE5Ogkud29yZAkweDVhODI3OTk5CisgLkxLXzIwXzM5Ogkud29yZAkweDZlZDllYmExCisgLkxLXzQwXzU5Ogkud29yZAkweDhmMWJiY2RjCisgLkxLXzYwXzc5Ogkud29yZAkweGNhNjJjMWQ2CistLnNpemUJc2hhMV9ibG9ja19kYXRhX29yZGVyLC4tc2hhMV9ibG9ja19kYXRhX29yZGVyCistLmFzY2l6CSJTSEExIGJsb2NrIHRyYW5zZm9ybSBmb3IgQVJNdjQsIENSWVBUT0dBTVMgYnkgPGFwcHJvXEBvcGVuc3NsLm9yZz4iCistLmFsaWduCTIKKysuTE9QRU5TU0xfYXJtY2FwOgorKy53b3JkCU9QRU5TU0xfYXJtY2FwX1Atc2hhMV9ibG9ja19kYXRhX29yZGVyCisrLmFzY2l6CSJTSEExIGJsb2NrIHRyYW5zZm9ybSBmb3IgQVJNdjQvTkVPTi9BUk12OCwgQ1JZUFRPR0FNUyBieSA8YXBwcm9cQG9wZW5zc2wub3JnPiIKKysuYWxpZ24JNQorK19fXworKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworKyMgTkVPTiBzdHVmZgorKyMKKyt7e3sKKytteSBAVj0oJGEsJGIsJGMsJGQsJGUpOworK215ICgkS19YWF9YWCwkS2ksJHQwLCR0MSwkWGZlciwkc2F2ZWRfc3ApPW1hcCgiciRfIiwoOC4uMTIsMTQpKTsKKytteSAkWGk9NDsKKytteSBAWD1tYXAoInEkXyIsKDguLjExLDAuLjMpKTsKKytteSBAVHg9KCJxMTIiLCJxMTMiKTsKKytteSAoJEssJHplcm8pPSgicTE0IiwicTE1Iik7CisrbXkgJGo9MDsKKysKKytzdWIgQVVUT0xPQUQoKSAgICAgICAgICAjIHRodW5rIFtzaW1wbGlmaWVkXSB4ODYtc3R5bGUgcGVybGFzbQorK3sgbXkgJG9wY29kZSA9ICRBVVRPTE9BRDsgJG9wY29kZSA9fiBzLy4qOjovLzsgJG9wY29kZSA9fiBzL18vXC4vOworKyAgbXkgJGFyZyA9IHBvcDsKKysgICAgJGFyZyA9ICIjJGFyZyIgaWYgKCRhcmcqMSBlcSAkYXJnKTsKKysgICAgJGNvZGUgLj0gIlx0JG9wY29kZVx0Ii5qb2luKCcsJyxAXywkYXJnKS4iXG4iOworK30KKysKKytzdWIgYm9keV8wMF8xOSAoKSB7CisrCSgKKysJJygkYSwkYiwkYywkZCwkZSk9QFY7Jy4JCSMgJyRjb2RlLj0iQCAkalxuIjsnLgorKwknJmJpYwkoJHQwLCRkLCRiKScsCisrCScmYWRkCSgkZSwkZSwkS2kpJywJCSMgZSs9WFtpXStLCisrCScmYW5kCSgkdDEsJGMsJGIpJywKKysJJyZsZHIJKCRLaSxzcHJpbnRmICJbc3AsIyVkXSIsNCooKCRqKzEpJjE1KSknLAorKwknJmFkZAkoJGUsJGUsJGEsInJvciMyNyIpJywJIyBlKz1ST1IoQSwyNykKKysJJyZlb3IJKCR0MSwkdDEsJHQwKScsCQkjIEZfMDBfMTkKKysJJyZtb3YJKCRiLCRiLCJyb3IjMiIpJywJIyBiPVJPUihiLDIpCisrCScmYWRkCSgkZSwkZSwkdDEpOycuCQkjIGUrPUZfMDBfMTkKKysJJyRqKys7CXVuc2hpZnQoQFYscG9wKEBWKSk7JworKwkpCisrfQorK3N1YiBib2R5XzIwXzM5ICgpIHsKKysJKAorKwknKCRhLCRiLCRjLCRkLCRlKT1AVjsnLgkJIyAnJGNvZGUuPSJAICRqXG4iOycuCisrCScmZW9yCSgkdDAsJGIsJGQpJywKKysJJyZhZGQJKCRlLCRlLCRLaSknLAkJIyBlKz1YW2ldK0sKKysJJyZsZHIJKCRLaSxzcHJpbnRmICJbc3AsIyVkXSIsNCooKCRqKzEpJjE1KSkgaWYgKCRqPDc5KScsCisrCScmZW9yCSgkdDEsJHQwLCRjKScsCQkjIEZfMjBfMzkKKysJJyZhZGQJKCRlLCRlLCRhLCJyb3IjMjciKScsCSMgZSs9Uk9SKEEsMjcpCisrCScmbW92CSgkYiwkYiwicm9yIzIiKScsCSMgYj1ST1IoYiwyKQorKwknJmFkZAkoJGUsJGUsJHQxKTsnLgkJIyBlKz1GXzIwXzM5CisrCSckaisrOwl1bnNoaWZ0KEBWLHBvcChAVikpOycKKysJKQorK30KKytzdWIgYm9keV80MF81OSAoKSB7CisrCSgKKysJJygkYSwkYiwkYywkZCwkZSk9QFY7Jy4JCSMgJyRjb2RlLj0iQCAkalxuIjsnLgorKwknJmFkZAkoJGUsJGUsJEtpKScsCQkjIGUrPVhbaV0rSworKwknJmFuZAkoJHQwLCRjLCRkKScsCisrCScmbGRyCSgkS2ksc3ByaW50ZiAiW3NwLCMlZF0iLDQqKCgkaisxKSYxNSkpJywKKysJJyZhZGQJKCRlLCRlLCRhLCJyb3IjMjciKScsCSMgZSs9Uk9SKEEsMjcpCisrCScmZW9yCSgkdDEsJGMsJGQpJywKKysJJyZhZGQJKCRlLCRlLCR0MCknLAorKwknJmFuZAkoJHQxLCR0MSwkYiknLAorKwknJm1vdgkoJGIsJGIsInJvciMyIiknLAkjIGI9Uk9SKGIsMikKKysJJyZhZGQJKCRlLCRlLCR0MSk7Jy4JCSMgZSs9Rl80MF81OQorKwknJGorKzsJdW5zaGlmdChAVixwb3AoQFYpKTsnCisrCSkKKyt9CisrCisrc3ViIFh1cGRhdGVfMTZfMzEgKCkKKyt7IHVzZSBpbnRlZ2VyOworKyAgbXkgJGJvZHkgPSBzaGlmdDsKKysgIG15IEBpbnNucyA9ICgmJGJvZHksJiRib2R5LCYkYm9keSwmJGJvZHkpOworKyAgbXkgKCRhLCRiLCRjLCRkLCRlKTsKKysKKysJJnZleHRfOAkJKEBYWzBdLEBYWy00JjddLEBYWy0zJjddLDgpOwkjIGNvbXBvc2UgIlhbLTE0XSIgaW4gIlhbMF0iCisrCSBldmFsKHNoaWZ0KEBpbnNucykpOworKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKysJIGV2YWwoc2hpZnQoQGluc25zKSk7CisrCSAgJnZhZGRfaTMyCShAVHhbMV0sQFhbLTEmN10sJEspOworKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKysJICAmdmxkMV8zMgkoInskS1xbXX0iLCJbJEtfWFhfWFgsOjMyXSEiKQlpZiAoJFhpJTU9PTApOworKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKysJJnZleHRfOAkJKEBUeFswXSxAWFstMSY3XSwkemVybyw0KTsJIyAiWFstM10iLCAzIHdvcmRzCisrCSBldmFsKHNoaWZ0KEBpbnNucykpOworKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKysJIGV2YWwoc2hpZnQoQGluc25zKSk7CisrCSZ2ZW9yCQkoQFhbMF0sQFhbMF0sQFhbLTQmN10pOwkJIyAiWFswXSJePSJYWy0xNl0iCisrCSBldmFsKHNoaWZ0KEBpbnNucykpOworKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKysJJnZlb3IJCShAVHhbMF0sQFR4WzBdLEBYWy0yJjddKTsJIyAiWFstM10iXiJYWy04XSIKKysJIGV2YWwoc2hpZnQoQGluc25zKSk7CisrCSBldmFsKHNoaWZ0KEBpbnNucykpOworKwkmdmVvcgkJKEBUeFswXSxAVHhbMF0sQFhbMF0pOwkJIyAiWFswXSJePSJYWy0zXSJeIlhbLThdCisrCSBldmFsKHNoaWZ0KEBpbnNucykpOworKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKysJICAmdnN0MV8zMgkoIntAVHhbMV19IiwiWyRYZmVyLDoxMjhdISIpOwkjIFhbXStLIHhmZXIKKysJICAmc3ViCQkoJFhmZXIsJFhmZXIsNjQpCQlpZiAoJFhpJTQ9PTApOworKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKysJIGV2YWwoc2hpZnQoQGluc25zKSk7CisrCSZ2ZXh0XzgJCShAVHhbMV0sJHplcm8sQFR4WzBdLDQpOwkjICJYWzBdIjw8OTYsIGV4dHJhY3Qgb25lIGR3b3JkCisrCSBldmFsKHNoaWZ0KEBpbnNucykpOworKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKysJJnZhZGRfaTMyCShAWFswXSxAVHhbMF0sQFR4WzBdKTsKKysJIGV2YWwoc2hpZnQoQGluc25zKSk7CisrCSBldmFsKHNoaWZ0KEBpbnNucykpOworKwkmdnNyaV8zMgkoQFhbMF0sQFR4WzBdLDMxKTsJCSMgIlhbMF0iPDw8PTEKKysJIGV2YWwoc2hpZnQoQGluc25zKSk7CisrCSBldmFsKHNoaWZ0KEBpbnNucykpOworKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKysJJnZzaHJfdTMyCShAVHhbMF0sQFR4WzFdLDMwKTsKKysJIGV2YWwoc2hpZnQoQGluc25zKSk7CisrCSBldmFsKHNoaWZ0KEBpbnNucykpOworKwkmdnNobF91MzIJKEBUeFsxXSxAVHhbMV0sMik7CisrCSBldmFsKHNoaWZ0KEBpbnNucykpOworKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKysJJnZlb3IJCShAWFswXSxAWFswXSxAVHhbMF0pOworKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKysJIGV2YWwoc2hpZnQoQGluc25zKSk7CisrCSZ2ZW9yCQkoQFhbMF0sQFhbMF0sQFR4WzFdKTsJCSMgIlhbMF0iXj0oIlhbMF0iPj45Nik8PDwyCisrCisrCWZvcmVhY2ggKEBpbnNucykgeyBldmFsOyB9CSMgcmVtYWluaW5nIGluc3RydWN0aW9ucyBbaWYgYW55XQorKworKyAgJFhpKys7CXB1c2goQFgsc2hpZnQoQFgpKTsJIyAicm90YXRlIiBYW10KKyt9CisrCisrc3ViIFh1cGRhdGVfMzJfNzkgKCkKKyt7IHVzZSBpbnRlZ2VyOworKyAgbXkgJGJvZHkgPSBzaGlmdDsKKysgIG15IEBpbnNucyA9ICgmJGJvZHksJiRib2R5LCYkYm9keSwmJGJvZHkpOworKyAgbXkgKCRhLCRiLCRjLCRkLCRlKTsKKysKKysJJnZleHRfOAkJKEBUeFswXSxAWFstMiY3XSxAWFstMSY3XSw4KTsJIyBjb21wb3NlICJYWy02XSIKKysJIGV2YWwoc2hpZnQoQGluc25zKSk7CisrCSBldmFsKHNoaWZ0KEBpbnNucykpOworKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKysJJnZlb3IJCShAWFswXSxAWFswXSxAWFstNCY3XSk7CQkjICJYWzBdIj0iWFstMzJdIl4iWFstMTZdIgorKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKysJIGV2YWwoc2hpZnQoQGluc25zKSk7CisrCSZ2ZW9yCQkoQFhbMF0sQFhbMF0sQFhbLTcmN10pOwkJIyAiWFswXSJePSJYWy0yOF0iCisrCSBldmFsKHNoaWZ0KEBpbnNucykpOworKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKysJICAmdmFkZF9pMzIJKEBUeFsxXSxAWFstMSY3XSwkSyk7CisrCSBldmFsKHNoaWZ0KEBpbnNucykpOworKwkgICZ2bGQxXzMyCSgieyRLXFtdfSIsIlskS19YWF9YWCw6MzJdISIpCWlmICgkWGklNT09MCk7CisrCSBldmFsKHNoaWZ0KEBpbnNucykpOworKwkmdmVvcgkJKEBUeFswXSxAVHhbMF0sQFhbMF0pOwkJIyAiWFstNl0iXj0iWFswXSIKKysJIGV2YWwoc2hpZnQoQGluc25zKSk7CisrCSBldmFsKHNoaWZ0KEBpbnNucykpOworKwkmdnNocl91MzIJKEBYWzBdLEBUeFswXSwzMCk7CisrCSBldmFsKHNoaWZ0KEBpbnNucykpOworKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKysJICAmdnN0MV8zMgkoIntAVHhbMV19IiwiWyRYZmVyLDoxMjhdISIpOwkjIFhbXStLIHhmZXIKKysJICAmc3ViCQkoJFhmZXIsJFhmZXIsNjQpCQlpZiAoJFhpJTQ9PTApOworKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKysJIGV2YWwoc2hpZnQoQGluc25zKSk7CisrCSZ2c2xpXzMyCShAWFswXSxAVHhbMF0sMik7CQkjICJYWzBdIj0iWFstNl0iPDw8MgorKworKwlmb3JlYWNoIChAaW5zbnMpIHsgZXZhbDsgfQkjIHJlbWFpbmluZyBpbnN0cnVjdGlvbnMgW2lmIGFueV0KKysKKysgICRYaSsrOwlwdXNoKEBYLHNoaWZ0KEBYKSk7CSMgInJvdGF0ZSIgWFtdCisrfQorKworK3N1YiBYdXBsYXN0XzgwICgpCisreyB1c2UgaW50ZWdlcjsKKysgIG15ICRib2R5ID0gc2hpZnQ7CisrICBteSBAaW5zbnMgPSAoJiRib2R5LCYkYm9keSwmJGJvZHksJiRib2R5KTsKKysgIG15ICgkYSwkYiwkYywkZCwkZSk7CisrCisrCSZ2YWRkX2kzMgkoQFR4WzFdLEBYWy0xJjddLCRLKTsKKysJIGV2YWwoc2hpZnQoQGluc25zKSk7CisrCSBldmFsKHNoaWZ0KEBpbnNucykpOworKwkmdnN0MV8zMgkoIntAVHhbMV19IiwiWyRYZmVyLDoxMjhdISIpOworKwkmc3ViCQkoJFhmZXIsJFhmZXIsNjQpOworKworKwkmdGVxCQkoJGlucCwkbGVuKTsKKysJJnN1YgkJKCRLX1hYX1hYLCRLX1hYX1hYLDE2KTsJIyByZXdpbmQgJEtfWFhfWFgKKysJJnN1YmVxCQkoJGlucCwkaW5wLDY0KTsJCSMgcmVsb2FkIGxhc3QgYmxvY2sgdG8gYXZvaWQgU0VHVgorKwkmdmxkMV84CQkoIntAWFstNCY3XS1AWFstMyY3XX0iLCJbJGlucF0hIik7CisrCSBldmFsKHNoaWZ0KEBpbnNucykpOworKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKysJJnZsZDFfOAkJKCJ7QFhbLTImN10tQFhbLTEmN119IiwiWyRpbnBdISIpOworKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKysJIGV2YWwoc2hpZnQoQGluc25zKSk7CisrCSZ2bGQxXzMyCSgieyRLXFtdfSIsIlskS19YWF9YWCw6MzJdISIpOwkjIGxvYWQgS18wMF8xOQorKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKysJIGV2YWwoc2hpZnQoQGluc25zKSk7CisrCSZ2cmV2MzJfOAkoQFhbLTQmN10sQFhbLTQmN10pOworKworKwlmb3JlYWNoIChAaW5zbnMpIHsgZXZhbDsgfQkJIyByZW1haW5pbmcgaW5zdHJ1Y3Rpb25zCisrCisrICAgJFhpPTA7CisrfQorKworK3N1YiBYbG9vcCgpCisreyB1c2UgaW50ZWdlcjsKKysgIG15ICRib2R5ID0gc2hpZnQ7CisrICBteSBAaW5zbnMgPSAoJiRib2R5LCYkYm9keSwmJGJvZHksJiRib2R5KTsKKysgIG15ICgkYSwkYiwkYywkZCwkZSk7CisrCisrCSZ2cmV2MzJfOAkoQFhbKCRYaS0zKSY3XSxAWFsoJFhpLTMpJjddKTsKKysJIGV2YWwoc2hpZnQoQGluc25zKSk7CisrCSBldmFsKHNoaWZ0KEBpbnNucykpOworKwkmdmFkZF9pMzIJKEBYWyRYaSY3XSxAWFsoJFhpLTQpJjddLCRLKTsKKysJIGV2YWwoc2hpZnQoQGluc25zKSk7CisrCSBldmFsKHNoaWZ0KEBpbnNucykpOworKwkmdnN0MV8zMgkoIntAWFskWGkmN119IiwiWyRYZmVyLDoxMjhdISIpOyMgWFtdK0sgeGZlciB0byBJQUxVCisrCisrCWZvcmVhY2ggKEBpbnNucykgeyBldmFsOyB9CisrCisrICAkWGkrKzsKKyt9CisrCisrJGNvZGUuPTw8X19fOworKyNpZiBfX0FSTV9BUkNIX18+PTcKKysuZnB1CW5lb24KKysKKysudHlwZQlzaGExX2Jsb2NrX2RhdGFfb3JkZXJfbmVvbiwlZnVuY3Rpb24KKysuYWxpZ24JNAorK3NoYTFfYmxvY2tfZGF0YV9vcmRlcl9uZW9uOgorKy5MTkVPTjoKKysJc3RtZGIJc3AhLHtyNC1yMTIsbHJ9CisrCWFkZAkkbGVuLCRpbnAsJGxlbixsc2wjNglAICRsZW4gdG8gcG9pbnQgYXQgdGhlIGVuZCBvZiAkaW5wCisrCUAgZG1iCQkJCUAgZXJyYXRhICM0NTEwMzQgb24gZWFybHkgQ29ydGV4IEE4CisrCUAgdnN0bWRiCXNwISx7ZDgtZDE1fQlAIEFCSSBzcGVjaWZpY2F0aW9uIHNheXMgc28KKysJbW92CSRzYXZlZF9zcCxzcAorKwlzdWIJc3Asc3AsIzY0CQlAIGFsbG9jYQorKwlhZHIJJEtfWFhfWFgsLkxLXzAwXzE5CisrCWJpYwlzcCxzcCwjMTUJCUAgYWxpZ24gZm9yIDEyOC1iaXQgc3RvcmVzCisrCisrCWxkbWlhCSRjdHgseyRhLCRiLCRjLCRkLCRlfQlAIGxvYWQgY29udGV4dAorKwltb3YJJFhmZXIsc3AKKysKKysJdmxkMS44CQl7QFhbLTQmN10tQFhbLTMmN119LFskaW5wXSEJQCBoYW5kbGVzIHVuYWxpZ25lZAorKwl2ZW9yCQkkemVybywkemVybywkemVybworKwl2bGQxLjgJCXtAWFstMiY3XS1AWFstMSY3XX0sWyRpbnBdIQorKwl2bGQxLjMyCQl7JHtLfVxbXX0sWyRLX1hYX1hYLDozMl0hCUAgbG9hZCBLXzAwXzE5CisrCXZyZXYzMi44CUBYWy00JjddLEBYWy00JjddCQlAIHllcywgZXZlbiBvbgorKwl2cmV2MzIuOAlAWFstMyY3XSxAWFstMyY3XQkJQCBiaWctZW5kaWFuLi4uCisrCXZyZXYzMi44CUBYWy0yJjddLEBYWy0yJjddCisrCXZhZGQuaTMyCUBYWzBdLEBYWy00JjddLCRLCisrCXZyZXYzMi44CUBYWy0xJjddLEBYWy0xJjddCisrCXZhZGQuaTMyCUBYWzFdLEBYWy0zJjddLCRLCisrCXZzdDEuMzIJCXtAWFswXX0sWyRYZmVyLDoxMjhdIQorKwl2YWRkLmkzMglAWFsyXSxAWFstMiY3XSwkSworKwl2c3QxLjMyCQl7QFhbMV19LFskWGZlciw6MTI4XSEKKysJdnN0MS4zMgkJe0BYWzJdfSxbJFhmZXIsOjEyOF0hCisrCWxkcgkJJEtpLFtzcF0JCQlAIGJpZyBSQVcgc3RhbGwKKysKKysuTG9vcF9uZW9uOgorK19fXworKwkmWHVwZGF0ZV8xNl8zMShcJmJvZHlfMDBfMTkpOworKwkmWHVwZGF0ZV8xNl8zMShcJmJvZHlfMDBfMTkpOworKwkmWHVwZGF0ZV8xNl8zMShcJmJvZHlfMDBfMTkpOworKwkmWHVwZGF0ZV8xNl8zMShcJmJvZHlfMDBfMTkpOworKwkmWHVwZGF0ZV8zMl83OShcJmJvZHlfMDBfMTkpOworKwkmWHVwZGF0ZV8zMl83OShcJmJvZHlfMjBfMzkpOworKwkmWHVwZGF0ZV8zMl83OShcJmJvZHlfMjBfMzkpOworKwkmWHVwZGF0ZV8zMl83OShcJmJvZHlfMjBfMzkpOworKwkmWHVwZGF0ZV8zMl83OShcJmJvZHlfMjBfMzkpOworKwkmWHVwZGF0ZV8zMl83OShcJmJvZHlfMjBfMzkpOworKwkmWHVwZGF0ZV8zMl83OShcJmJvZHlfNDBfNTkpOworKwkmWHVwZGF0ZV8zMl83OShcJmJvZHlfNDBfNTkpOworKwkmWHVwZGF0ZV8zMl83OShcJmJvZHlfNDBfNTkpOworKwkmWHVwZGF0ZV8zMl83OShcJmJvZHlfNDBfNTkpOworKwkmWHVwZGF0ZV8zMl83OShcJmJvZHlfNDBfNTkpOworKwkmWHVwZGF0ZV8zMl83OShcJmJvZHlfMjBfMzkpOworKwkmWHVwbGFzdF84MChcJmJvZHlfMjBfMzkpOworKwkmWGxvb3AoXCZib2R5XzIwXzM5KTsKKysJJlhsb29wKFwmYm9keV8yMF8zOSk7CisrCSZYbG9vcChcJmJvZHlfMjBfMzkpOworKyRjb2RlLj08PF9fXzsKKysJbGRtaWEJJGN0eCx7JEtpLCR0MCwkdDEsJFhmZXJ9CUAgYWNjdW11bGF0ZSBjb250ZXh0CisrCWFkZAkkYSwkYSwkS2kKKysJbGRyCSRLaSxbJGN0eCwjMTZdCisrCWFkZAkkYiwkYiwkdDAKKysJYWRkCSRjLCRjLCR0MQorKwlhZGQJJGQsJGQsJFhmZXIKKysJbW92ZXEJc3AsJHNhdmVkX3NwCisrCWFkZAkkZSwkZSwkS2kKKysJbGRybmUJJEtpLFtzcF0KKysJc3RtaWEJJGN0eCx7JGEsJGIsJGMsJGQsJGV9CisrCWFkZG5lCSRYZmVyLHNwLCMzKjE2CisrCWJuZQkuTG9vcF9uZW9uCisrCisrCUAgdmxkbWlhCXNwISx7ZDgtZDE1fQorKwlsZG1pYQlzcCEse3I0LXIxMixwY30KKysuc2l6ZQlzaGExX2Jsb2NrX2RhdGFfb3JkZXJfbmVvbiwuLXNoYTFfYmxvY2tfZGF0YV9vcmRlcl9uZW9uCisrI2VuZGlmCisrX19fCisrfX19CisrIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisrIyBBUk12OCBzdHVmZgorKyMKKyt7e3sKKytteSAoJEFCQ0QsJEUsJEUwLCRFMSk9bWFwKCJxJF8iLCgwLi4zKSk7CisrbXkgQE1TRz1tYXAoInEkXyIsKDQuLjcpKTsKKytteSBAS3h4PW1hcCgicSRfIiwoOC4uMTEpKTsKKytteSAoJFcwLCRXMSwkQUJDRF9TQVZFKT1tYXAoInEkXyIsKDEyLi4xNCkpOworKworKyRjb2RlLj08PF9fXzsKKysjaWYgX19BUk1fQVJDSF9fPj03CisrLnR5cGUJc2hhMV9ibG9ja19kYXRhX29yZGVyX2FybXY4LCVmdW5jdGlvbgorKy5hbGlnbgk1Cisrc2hhMV9ibG9ja19kYXRhX29yZGVyX2FybXY4OgorKy5MQVJNdjg6CisrCXZzdG1kYglzcCEse2Q4LWQxNX0JCUAgQUJJIHNwZWNpZmljYXRpb24gc2F5cyBzbworKworKwl2ZW9yCSRFLCRFLCRFCisrCWFkcglyMywuTEtfMDBfMTkKKysJdmxkMS4zMgl7JEFCQ0R9LFskY3R4XSEKKysJdmxkMS4zMgl7JEVcWzBdfSxbJGN0eF0KKysJc3ViCSRjdHgsJGN0eCwjMTYKKysJdmxkMS4zMgl7QEt4eFswXVxbXX0sW3IzLDozMl0hCisrCXZsZDEuMzIJe0BLeHhbMV1cW119LFtyMyw6MzJdIQorKwl2bGQxLjMyCXtAS3h4WzJdXFtdfSxbcjMsOjMyXSEKKysJdmxkMS4zMgl7QEt4eFszXVxbXX0sW3IzLDozMl0KKysKKysuTG9vcF92ODoKKysJdmxkMS44CQl7QE1TR1swXS1ATVNHWzFdfSxbJGlucF0hCisrCXZsZDEuOAkJe0BNU0dbMl0tQE1TR1szXX0sWyRpbnBdIQorKwl2cmV2MzIuOAlATVNHWzBdLEBNU0dbMF0KKysJdnJldjMyLjgJQE1TR1sxXSxATVNHWzFdCisrCisrCXZhZGQuaTMyCSRXMCxAS3h4WzBdLEBNU0dbMF0KKysJdnJldjMyLjgJQE1TR1syXSxATVNHWzJdCisrCXZtb3YJCSRBQkNEX1NBVkUsJEFCQ0QJQCBvZmZsb2FkCisrCXN1YnMJCSRsZW4sJGxlbiwjMQorKworKwl2YWRkLmkzMgkkVzEsQEt4eFswXSxATVNHWzFdCisrCXZyZXYzMi44CUBNU0dbM10sQE1TR1szXQorKwlzaGExaAkJJEUxLCRBQkNECQlAIDAKKysJc2hhMWMJCSRBQkNELCRFLCRXMAorKwl2YWRkLmkzMgkkVzAsQEt4eFskal0sQE1TR1syXQorKwlzaGExc3UwCQlATVNHWzBdLEBNU0dbMV0sQE1TR1syXQorK19fXworK2ZvciAoJGo9MCwkaT0xOyRpPDIwLTM7JGkrKykgeworK215ICRmPSgiYyIsInAiLCJtIiwicCIpWyRpLzVdOworKyRjb2RlLj08PF9fXzsKKysJc2hhMWgJCSRFMCwkQUJDRAkJQCAkaQorKwlzaGExJGYJCSRBQkNELCRFMSwkVzEKKysJdmFkZC5pMzIJJFcxLEBLeHhbJGpdLEBNU0dbM10KKysJc2hhMXN1MQkJQE1TR1swXSxATVNHWzNdCisrX19fCisrJGNvZGUuPTw8X19fIGlmICgkaTwyMC00KTsKKysJc2hhMXN1MAkJQE1TR1sxXSxATVNHWzJdLEBNU0dbM10KKyBfX18KKysJKCRFMCwkRTEpPSgkRTEsJEUwKTsJKCRXMCwkVzEpPSgkVzEsJFcwKTsKKysJcHVzaChATVNHLHNoaWZ0KEBNU0cpKTsJJGorKyBpZiAoKCgkaSszKSU1KT09MCk7CisrfQorKyRjb2RlLj08PF9fXzsKKysJc2hhMWgJCSRFMCwkQUJDRAkJQCAkaQorKwlzaGExcAkJJEFCQ0QsJEUxLCRXMQorKwl2YWRkLmkzMgkkVzEsQEt4eFskal0sQE1TR1szXQorKworKwlzaGExaAkJJEUxLCRBQkNECQlAIDE4CisrCXNoYTFwCQkkQUJDRCwkRTAsJFcwCisrCisrCXNoYTFoCQkkRTAsJEFCQ0QJCUAgMTkKKysJc2hhMXAJCSRBQkNELCRFMSwkVzEKKysKKysJdmFkZC5pMzIJJEUsJEUsJEUwCisrCXZhZGQuaTMyCSRBQkNELCRBQkNELCRBQkNEX1NBVkUKKysJYm5lCQkuTG9vcF92OAorKworKwl2c3QxLjMyCQl7JEFCQ0R9LFskY3R4XSEKKysJdnN0MS4zMgkJeyRFXFswXX0sWyRjdHhdCisrCisrCXZsZG1pYQlzcCEse2Q4LWQxNX0KKysJcmV0CQkJCQlAIGJ4IGxyCisrLnNpemUJc2hhMV9ibG9ja19kYXRhX29yZGVyX2FybXY4LC4tc2hhMV9ibG9ja19kYXRhX29yZGVyX2FybXY4CisrI2VuZGlmCisrX19fCisrfX19CisrJGNvZGUuPTw8X19fOworKy5jb21tCU9QRU5TU0xfYXJtY2FwX1AsNCw0CisrX19fCisrCisreyAgIG15ICAlb3Bjb2RlID0gKAorKwkic2hhMWMiCQk9PiAweGYyMDAwYzQwLAkic2hhMXAiCQk9PiAweGYyMTAwYzQwLAorKwkic2hhMW0iCQk9PiAweGYyMjAwYzQwLAkic2hhMXN1MCIJPT4gMHhmMjMwMGM0MCwKKysJInNoYTFoIgkJPT4gMHhmM2I5MDJjMCwJInNoYTFzdTEiCT0+IDB4ZjNiYTAzODAJKTsKKysKKysgICAgc3ViIHVuc2hhMSB7CisrCW15ICgkbW5lbW9uaWMsJGFyZyk9QF87CisrCisrCWlmICgkYXJnID1+IG0vcShbMC05XSspKD86LFxzKnEoWzAtOV0rKSk/LFxzKnEoWzAtOV0rKS9vKSB7CisrCSAgICBteSAkd29yZCA9ICRvcGNvZGV7JG1uZW1vbmljfXwoKCQxJjcpPDwxMyl8KCgkMSY4KTw8MTkpCisrCQkJCQkgfCgoJDImNyk8PDE3KXwoKCQyJjgpPDw0KQorKwkJCQkJIHwoKCQzJjcpPDwxKSB8KCgkMyY4KTw8Mik7CisrCSAgICAjIHNpbmNlIEFSTXY3IGluc3RydWN0aW9ucyBhcmUgYWx3YXlzIGVuY29kZWQgbGl0dGxlLWVuZGlhbi4KKysJICAgICMgY29ycmVjdCBzb2x1dGlvbiBpcyB0byB1c2UgLmluc3QgZGlyZWN0aXZlLCBidXQgb2xkZXIKKysJICAgICMgYXNzZW1ibGVycyBkb24ndCBpbXBsZW1lbnQgaXQ6LSgKKysJICAgIHNwcmludGYgIi5ieXRlXHQweCUwMngsMHglMDJ4LDB4JTAyeCwweCUwMnhcdEAgJXMgJXMiLAorKwkJCSR3b3JkJjB4ZmYsKCR3b3JkPj44KSYweGZmLAorKwkJCSgkd29yZD4+MTYpJjB4ZmYsKCR3b3JkPj4yNCkmMHhmZiwKKysJCQkkbW5lbW9uaWMsJGFyZzsKKysJfQorKyAgICB9CisrfQorKworK2ZvcmVhY2ggKHNwbGl0KCQvLCRjb2RlKSkgeworKwlzL3txKFswLTldKylcW1xdfS9zcHJpbnRmICJ7ZCVkW10sZCVkW119IiwyKiQxLDIqJDErMS9lbwlvcgorKwlzL3txKFswLTldKylcWzBcXX0vc3ByaW50ZiAie2QlZFswXX0iLDIqJDEvZW87CisrCisrCXMvXGIoc2hhMVx3KylccysocS4qKS91bnNoYTEoJDEsJDIpL2dlbzsKKysKKysJcy9cYnJldFxiL2J4CWxyL28JCW9yCisrCXMvXGJieFxzK2xyXGIvLndvcmRcdDB4ZTEyZmZmMWUvbzsJIyBtYWtlIGl0IHBvc3NpYmxlIHRvIGNvbXBpbGUgd2l0aCAtbWFyY2g9YXJtdjQKKysKKysJcHJpbnQgJF8sJC87CisrfQorIAorLSRjb2RlID1+IHMvXGJieFxzK2xyXGIvLndvcmRcdDB4ZTEyZmZmMWUvZ207CSMgbWFrZSBpdCBwb3NzaWJsZSB0byBjb21waWxlIHdpdGggLW1hcmNoPWFybXY0CistcHJpbnQgJGNvZGU7CisgY2xvc2UgU1RET1VUOyAjIGVuZm9yY2UgZmx1c2gKK2RpZmYgLS1naXQgYS9jcnlwdG8vc2hhL2FzbS9zaGExLWFybXY4LnBsIGIvY3J5cHRvL3NoYS9hc20vc2hhMS1hcm12OC5wbAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmMxZjU1MmIKKy0tLSAvZGV2L251bGwKKysrKyBiL2NyeXB0by9zaGEvYXNtL3NoYTEtYXJtdjgucGwKK0BAIC0wLDAgKzEsMzMzIEBACisrIyEvdXNyL2Jpbi9lbnYgcGVybAorKyMKKysjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisrIyBXcml0dGVuIGJ5IEFuZHkgUG9seWFrb3YgPGFwcHJvQG9wZW5zc2wub3JnPiBmb3IgdGhlIE9wZW5TU0wKKysjIHByb2plY3QuIFRoZSBtb2R1bGUgaXMsIGhvd2V2ZXIsIGR1YWwgbGljZW5zZWQgdW5kZXIgT3BlblNTTCBhbmQKKysjIENSWVBUT0dBTVMgbGljZW5zZXMgZGVwZW5kaW5nIG9uIHdoZXJlIHlvdSBvYnRhaW4gaXQuIEZvciBmdXJ0aGVyCisrIyBkZXRhaWxzIHNlZSBodHRwOi8vd3d3Lm9wZW5zc2wub3JnL35hcHByby9jcnlwdG9nYW1zLy4KKysjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisrIworKyMgU0hBMSBmb3IgQVJNdjguCisrIworKyMgUGVyZm9ybWFuY2UgaW4gY3ljbGVzIHBlciBwcm9jZXNzZWQgYnl0ZSBhbmQgaW1wcm92ZW1lbnQgY29lZmZpY2llbnQKKysjIG92ZXIgY29kZSBnZW5lcmF0ZWQgd2l0aCAiZGVmYXVsdCIgY29tcGlsZXI6CisrIworKyMJCWhhcmR3YXJlLWFzc2lzdGVkCXNvZnR3YXJlKCopCisrIyBBcHBsZSBBNwkyLjMxCQkJNC4xMyAoKzE0JSkKKysjIENvcnRleC1BNXgJbi9hCQkJbi9hCisrIworKyMgKCopCVNvZnR3YXJlIHJlc3VsdHMgYXJlIHByZXNlbnRlZCBtb3N0bHkgZm9yIHJlZmVyZW5jZSBwdXJwb3Nlcy4KKysKKyskZmxhdm91ciA9IHNoaWZ0OworK29wZW4gU1RET1VULCI+Ii5zaGlmdDsKKysKKysoJGN0eCwkaW5wLCRudW0pPSgieDAiLCJ4MSIsIngyIik7CisrQFh3PW1hcCgidyRfIiwoMy4uMTcsMTkpKTsKKytAWHg9bWFwKCJ4JF8iLCgzLi4xNywxOSkpOworK0BWPSgkQSwkQiwkQywkRCwkRSk9bWFwKCJ3JF8iLCgyMC4uMjQpKTsKKysoJHQwLCR0MSwkdDIsJEspPW1hcCgidyRfIiwoMjUuLjI4KSk7CisrCisrCisrc3ViIEJPRFlfMDBfMTkgeworK215ICgkaSwkYSwkYiwkYywkZCwkZSk9QF87CisrbXkgJGo9KCRpKzIpJjE1OworKworKyRjb2RlLj08PF9fXyBpZiAoJGk8MTUgJiYgISgkaSYxKSk7CisrCWxzcglAWHhbJGkrMV0sQFh4WyRpXSwjMzIKKytfX18KKyskY29kZS49PDxfX18gaWYgKCRpPDE0ICYmICEoJGkmMSkpOworKwlsZHIJQFh4WyRpKzJdLFskaW5wLCNgKCRpKzIpKjQtNjRgXQorK19fXworKyRjb2RlLj08PF9fXyBpZiAoJGk8MTQgJiYgKCRpJjEpKTsKKysjaWZkZWYJX19BUk1FQl9fCisrCXJvcglAWHhbJGkrMV0sQFh4WyRpKzFdLCMzMgorKyNlbHNlCisrCXJldjMyCUBYeFskaSsxXSxAWHhbJGkrMV0KKysjZW5kaWYKKytfX18KKyskY29kZS49PDxfX18gaWYgKCRpPDE0KTsKKysJYmljCSR0MCwkZCwkYgorKwlhbmQJJHQxLCRjLCRiCisrCXJvcgkkdDIsJGEsIzI3CisrCWFkZAkkZCwkZCwkSwkJLy8gZnV0dXJlIGUrPUsKKysJb3JyCSR0MCwkdDAsJHQxCisrCWFkZAkkZSwkZSwkdDIJCS8vIGUrPXJvdChhLDUpCisrCXJvcgkkYiwkYiwjMgorKwlhZGQJJGQsJGQsQFh3WygkaSsxKSYxNV0JLy8gZnV0dXJlIGUrPVhbaV0KKysJYWRkCSRlLCRlLCR0MAkJLy8gZSs9RihiLGMsZCkKKytfX18KKyskY29kZS49PDxfX18gaWYgKCRpPT0xOSk7CisrCW1vdnoJJEssIzB4ZWJhMQorKwltb3ZrCSRLLCMweDZlZDksbHNsIzE2CisrX19fCisrJGNvZGUuPTw8X19fIGlmICgkaT49MTQpOworKwkgZW9yCUBYd1skal0sQFh3WyRqXSxAWHdbKCRqKzIpJjE1XQorKwliaWMJJHQwLCRkLCRiCisrCWFuZAkkdDEsJGMsJGIKKysJcm9yCSR0MiwkYSwjMjcKKysJIGVvcglAWHdbJGpdLEBYd1skal0sQFh3Wygkais4KSYxNV0KKysJYWRkCSRkLCRkLCRLCQkvLyBmdXR1cmUgZSs9SworKwlvcnIJJHQwLCR0MCwkdDEKKysJYWRkCSRlLCRlLCR0MgkJLy8gZSs9cm90KGEsNSkKKysJIGVvcglAWHdbJGpdLEBYd1skal0sQFh3WygkaisxMykmMTVdCisrCXJvcgkkYiwkYiwjMgorKwlhZGQJJGQsJGQsQFh3WygkaSsxKSYxNV0JLy8gZnV0dXJlIGUrPVhbaV0KKysJYWRkCSRlLCRlLCR0MAkJLy8gZSs9RihiLGMsZCkKKysJIHJvcglAWHdbJGpdLEBYd1skal0sIzMxCisrX19fCisrfQorKworK3N1YiBCT0RZXzQwXzU5IHsKKytteSAoJGksJGEsJGIsJGMsJGQsJGUpPUBfOworK215ICRqPSgkaSsyKSYxNTsKKysKKyskY29kZS49PDxfX18gaWYgKCRpPT01OSk7CisrCW1vdnoJJEssIzB4YzFkNgorKwltb3ZrCSRLLCMweGNhNjIsbHNsIzE2CisrX19fCisrJGNvZGUuPTw8X19fOworKwlvcnIJJHQwLCRiLCRjCisrCWFuZAkkdDEsJGIsJGMKKysJIGVvcglAWHdbJGpdLEBYd1skal0sQFh3WygkaisyKSYxNV0KKysJcm9yCSR0MiwkYSwjMjcKKysJYW5kCSR0MCwkdDAsJGQKKysJYWRkCSRkLCRkLCRLCQkvLyBmdXR1cmUgZSs9SworKwkgZW9yCUBYd1skal0sQFh3WyRqXSxAWHdbKCRqKzgpJjE1XQorKwlhZGQJJGUsJGUsJHQyCQkvLyBlKz1yb3QoYSw1KQorKwlvcnIJJHQwLCR0MCwkdDEKKysJcm9yCSRiLCRiLCMyCisrCSBlb3IJQFh3WyRqXSxAWHdbJGpdLEBYd1soJGorMTMpJjE1XQorKwlhZGQJJGQsJGQsQFh3WygkaSsxKSYxNV0JLy8gZnV0dXJlIGUrPVhbaV0KKysJYWRkCSRlLCRlLCR0MAkJLy8gZSs9RihiLGMsZCkKKysJIHJvcglAWHdbJGpdLEBYd1skal0sIzMxCisrX19fCisrfQorKworK3N1YiBCT0RZXzIwXzM5IHsKKytteSAoJGksJGEsJGIsJGMsJGQsJGUpPUBfOworK215ICRqPSgkaSsyKSYxNTsKKysKKyskY29kZS49PDxfX18gaWYgKCRpPT0zOSk7CisrCW1vdnoJJEssIzB4YmNkYworKwltb3ZrCSRLLCMweDhmMWIsbHNsIzE2CisrX19fCisrJGNvZGUuPTw8X19fIGlmICgkaTw3OCk7CisrCSBlb3IJQFh3WyRqXSxAWHdbJGpdLEBYd1soJGorMikmMTVdCisrCWVvcgkkdDAsJGQsJGIKKysJcm9yCSR0MiwkYSwjMjcKKysJYWRkCSRkLCRkLCRLCQkvLyBmdXR1cmUgZSs9SworKwkgZW9yCUBYd1skal0sQFh3WyRqXSxAWHdbKCRqKzgpJjE1XQorKwllb3IJJHQwLCR0MCwkYworKwlhZGQJJGUsJGUsJHQyCQkvLyBlKz1yb3QoYSw1KQorKwlyb3IJJGIsJGIsIzIKKysJIGVvcglAWHdbJGpdLEBYd1skal0sQFh3WygkaisxMykmMTVdCisrCWFkZAkkZCwkZCxAWHdbKCRpKzEpJjE1XQkvLyBmdXR1cmUgZSs9WFtpXQorKwlhZGQJJGUsJGUsJHQwCQkvLyBlKz1GKGIsYyxkKQorKwkgcm9yCUBYd1skal0sQFh3WyRqXSwjMzEKKytfX18KKyskY29kZS49PDxfX18gaWYgKCRpPT03OCk7CisrCWxkcAlAWHdbMV0sQFh3WzJdLFskY3R4XQorKwllb3IJJHQwLCRkLCRiCisrCXJvcgkkdDIsJGEsIzI3CisrCWFkZAkkZCwkZCwkSwkJLy8gZnV0dXJlIGUrPUsKKysJZW9yCSR0MCwkdDAsJGMKKysJYWRkCSRlLCRlLCR0MgkJLy8gZSs9cm90KGEsNSkKKysJcm9yCSRiLCRiLCMyCisrCWFkZAkkZCwkZCxAWHdbKCRpKzEpJjE1XQkvLyBmdXR1cmUgZSs9WFtpXQorKwlhZGQJJGUsJGUsJHQwCQkvLyBlKz1GKGIsYyxkKQorK19fXworKyRjb2RlLj08PF9fXyBpZiAoJGk9PTc5KTsKKysJbGRwCUBYd1szXSxAWHdbNF0sWyRjdHgsIzhdCisrCWVvcgkkdDAsJGQsJGIKKysJcm9yCSR0MiwkYSwjMjcKKysJZW9yCSR0MCwkdDAsJGMKKysJYWRkCSRlLCRlLCR0MgkJLy8gZSs9cm90KGEsNSkKKysJcm9yCSRiLCRiLCMyCisrCWxkcglAWHdbNV0sWyRjdHgsIzE2XQorKwlhZGQJJGUsJGUsJHQwCQkvLyBlKz1GKGIsYyxkKQorK19fXworK30KKysKKyskY29kZS49PDxfX187CisrI2luY2x1ZGUgImFybV9hcmNoLmgiCisrCisrLnRleHQKKysKKysuZ2xvYmwJc2hhMV9ibG9ja19kYXRhX29yZGVyCisrLnR5cGUJc2hhMV9ibG9ja19kYXRhX29yZGVyLCVmdW5jdGlvbgorKy5hbGlnbgk2Cisrc2hhMV9ibG9ja19kYXRhX29yZGVyOgorKwlsZHIJeDE2LC5MT1BFTlNTTF9hcm1jYXBfUAorKwlhZHIJeDE3LC5MT1BFTlNTTF9hcm1jYXBfUAorKwlhZGQJeDE2LHgxNix4MTcKKysJbGRyCXcxNixbeDE2XQorKwl0c3QJdzE2LCNBUk1WOF9TSEExCisrCWIubmUJLkx2OF9lbnRyeQorKworKwlzdHAJeDI5LHgzMCxbc3AsIy05Nl0hCisrCWFkZAl4Mjksc3AsIzAKKysJc3RwCXgxOSx4MjAsW3NwLCMxNl0KKysJc3RwCXgyMSx4MjIsW3NwLCMzMl0KKysJc3RwCXgyMyx4MjQsW3NwLCM0OF0KKysJc3RwCXgyNSx4MjYsW3NwLCM2NF0KKysJc3RwCXgyNyx4MjgsW3NwLCM4MF0KKysKKysJbGRwCSRBLCRCLFskY3R4XQorKwlsZHAJJEMsJEQsWyRjdHgsIzhdCisrCWxkcgkkRSxbJGN0eCwjMTZdCisrCisrLkxvb3A6CisrCWxkcglAWHhbMF0sWyRpbnBdLCM2NAorKwltb3Z6CSRLLCMweDc5OTkKKysJc3ViCSRudW0sJG51bSwjMQorKwltb3ZrCSRLLCMweDVhODIsbHNsIzE2CisrI2lmZGVmCV9fQVJNRUJfXworKwlyb3IJJFh4WzBdLEBYeFswXSwjMzIKKysjZWxzZQorKwlyZXYzMglAWHhbMF0sQFh4WzBdCisrI2VuZGlmCisrCWFkZAkkRSwkRSwkSwkJLy8gd2FybSBpdCB1cAorKwlhZGQJJEUsJEUsQFh3WzBdCisrX19fCisrZm9yKCRpPTA7JGk8MjA7JGkrKykJeyAmQk9EWV8wMF8xOSgkaSxAVik7IHVuc2hpZnQoQFYscG9wKEBWKSk7IH0KKytmb3IoOyRpPDQwOyRpKyspCXsgJkJPRFlfMjBfMzkoJGksQFYpOyB1bnNoaWZ0KEBWLHBvcChAVikpOyB9CisrZm9yKDskaTw2MDskaSsrKQl7ICZCT0RZXzQwXzU5KCRpLEBWKTsgdW5zaGlmdChAVixwb3AoQFYpKTsgfQorK2Zvcig7JGk8ODA7JGkrKykJeyAmQk9EWV8yMF8zOSgkaSxAVik7IHVuc2hpZnQoQFYscG9wKEBWKSk7IH0KKyskY29kZS49PDxfX187CisrCWFkZAkkQiwkQixAWHdbMl0KKysJYWRkCSRDLCRDLEBYd1szXQorKwlhZGQJJEEsJEEsQFh3WzFdCisrCWFkZAkkRCwkRCxAWHdbNF0KKysJYWRkCSRFLCRFLEBYd1s1XQorKwlzdHAJJEEsJEIsWyRjdHhdCisrCXN0cAkkQywkRCxbJGN0eCwjOF0KKysJc3RyCSRFLFskY3R4LCMxNl0KKysJY2JuegkkbnVtLC5Mb29wCisrCisrCWxkcAl4MTkseDIwLFtzcCwjMTZdCisrCWxkcAl4MjEseDIyLFtzcCwjMzJdCisrCWxkcAl4MjMseDI0LFtzcCwjNDhdCisrCWxkcAl4MjUseDI2LFtzcCwjNjRdCisrCWxkcAl4MjcseDI4LFtzcCwjODBdCisrCWxkcgl4MjksW3NwXSwjOTYKKysJcmV0CisrLnNpemUJc2hhMV9ibG9ja19kYXRhX29yZGVyLC4tc2hhMV9ibG9ja19kYXRhX29yZGVyCisrX19fCisre3t7CisrbXkgKCRBQkNELCRFLCRFMCwkRTEpPW1hcCgidiRfLjE2YiIsKDAuLjMpKTsKKytteSBATVNHPW1hcCgidiRfLjE2YiIsKDQuLjcpKTsKKytteSBAS3h4PW1hcCgidiRfLjRzIiwoMTYuLjE5KSk7CisrbXkgKCRXMCwkVzEpPSgidjIwLjRzIiwidjIxLjRzIik7CisrbXkgJEFCQ0RfU0FWRT0idjIyLjE2YiI7CisrCisrJGNvZGUuPTw8X19fOworKy50eXBlCXNoYTFfYmxvY2tfYXJtdjgsJWZ1bmN0aW9uCisrLmFsaWduCTYKKytzaGExX2Jsb2NrX2FybXY4OgorKy5MdjhfZW50cnk6CisrCXN0cAl4MjkseDMwLFtzcCwjLTE2XSEKKysJYWRkCXgyOSxzcCwjMAorKworKwlhZHIJeDQsLkxjb25zdAorKwllb3IJJEUsJEUsJEUKKysJbGQxLjMyCXskQUJDRH0sWyRjdHhdLCMxNgorKwlsZDEuMzIJeyRFfVswXSxbJGN0eF0KKysJc3ViCSRjdHgsJGN0eCwjMTYKKysJbGQxLjMyCXtAS3h4WzBdLUBLeHhbM119LFt4NF0KKysKKysuTG9vcF9odzoKKysJbGQxCXtATVNHWzBdLUBNU0dbM119LFskaW5wXSwjNjQKKysJc3ViCSRudW0sJG51bSwjMQorKwlyZXYzMglATVNHWzBdLEBNU0dbMF0KKysJcmV2MzIJQE1TR1sxXSxATVNHWzFdCisrCisrCWFkZC5pMzIJJFcwLEBLeHhbMF0sQE1TR1swXQorKwlyZXYzMglATVNHWzJdLEBNU0dbMl0KKysJb3JyCSRBQkNEX1NBVkUsJEFCQ0QsJEFCQ0QJLy8gb2ZmbG9hZAorKworKwlhZGQuaTMyCSRXMSxAS3h4WzBdLEBNU0dbMV0KKysJcmV2MzIJQE1TR1szXSxATVNHWzNdCisrCXNoYTFoCSRFMSwkQUJDRAorKwlzaGExYwkkQUJDRCwkRSwkVzAJCS8vIDAKKysJYWRkLmkzMgkkVzAsQEt4eFskal0sQE1TR1syXQorKwlzaGExc3UwCUBNU0dbMF0sQE1TR1sxXSxATVNHWzJdCisrX19fCisrZm9yICgkaj0wLCRpPTE7JGk8MjAtMzskaSsrKSB7CisrbXkgJGY9KCJjIiwicCIsIm0iLCJwIilbJGkvNV07CisrJGNvZGUuPTw8X19fOworKwlzaGExaAkkRTAsJEFCQ0QJCS8vICRpCisrCXNoYTEkZgkkQUJDRCwkRTEsJFcxCisrCWFkZC5pMzIJJFcxLEBLeHhbJGpdLEBNU0dbM10KKysJc2hhMXN1MQlATVNHWzBdLEBNU0dbM10KKytfX18KKyskY29kZS49PDxfX18gaWYgKCRpPDIwLTQpOworKwlzaGExc3UwCUBNU0dbMV0sQE1TR1syXSxATVNHWzNdCisrX19fCisrCSgkRTAsJEUxKT0oJEUxLCRFMCk7CQkoJFcwLCRXMSk9KCRXMSwkVzApOworKwlwdXNoKEBNU0csc2hpZnQoQE1TRykpOwkJJGorKyBpZiAoKCgkaSszKSU1KT09MCk7CisrfQorKyRjb2RlLj08PF9fXzsKKysJc2hhMWgJJEUwLCRBQkNECQkvLyAkaQorKwlzaGExcAkkQUJDRCwkRTEsJFcxCisrCWFkZC5pMzIJJFcxLEBLeHhbJGpdLEBNU0dbM10KKysKKysJc2hhMWgJJEUxLCRBQkNECQkvLyAxOAorKwlzaGExcAkkQUJDRCwkRTAsJFcwCisrCisrCXNoYTFoCSRFMCwkQUJDRAkJLy8gMTkKKysJc2hhMXAJJEFCQ0QsJEUxLCRXMQorKworKwlhZGQuaTMyCSRFLCRFLCRFMAorKwlhZGQuaTMyCSRBQkNELCRBQkNELCRBQkNEX1NBVkUKKysKKysJY2JuegkkbnVtLC5Mb29wX2h3CisrCisrCXN0MS4zMgl7JEFCQ0R9LFskY3R4XSwjMTYKKysJc3QxLjMyCXskRX1bMF0sWyRjdHhdCisrCisrCWxkcgl4MjksW3NwXSwjMTYKKysJcmV0CisrLnNpemUJc2hhMV9ibG9ja19hcm12OCwuLXNoYTFfYmxvY2tfYXJtdjgKKysuYWxpZ24JNgorKy5MY29uc3Q6CisrLmxvbmcJMHg1YTgyNzk5OSwweDVhODI3OTk5LDB4NWE4Mjc5OTksMHg1YTgyNzk5OQkvL0tfMDBfMTkKKysubG9uZwkweDZlZDllYmExLDB4NmVkOWViYTEsMHg2ZWQ5ZWJhMSwweDZlZDllYmExCS8vS18yMF8zOQorKy5sb25nCTB4OGYxYmJjZGMsMHg4ZjFiYmNkYywweDhmMWJiY2RjLDB4OGYxYmJjZGMJLy9LXzQwXzU5CisrLmxvbmcJMHhjYTYyYzFkNiwweGNhNjJjMWQ2LDB4Y2E2MmMxZDYsMHhjYTYyYzFkNgkvL0tfNjBfNzkKKysuTE9QRU5TU0xfYXJtY2FwX1A6CisrLnF1YWQJT1BFTlNTTF9hcm1jYXBfUC0uCisrLmFzY2l6CSJTSEExIGJsb2NrIHRyYW5zZm9ybSBmb3IgQVJNdjgsIENSWVBUT0dBTVMgYnkgPGFwcHJvXEBvcGVuc3NsLm9yZz4iCisrLmFsaWduCTIKKysuY29tbQlPUEVOU1NMX2FybWNhcF9QLDQsNAorK19fXworK319fQorKworK3sgICBteQklb3Bjb2RlID0gKAorKwkic2hhMWMiCQk9PiAweDVlMDAwMDAwLAkic2hhMXAiCQk9PiAweDVlMDAxMDAwLAorKwkic2hhMW0iCQk9PiAweDVlMDAyMDAwLAkic2hhMXN1MCIJPT4gMHg1ZTAwMzAwMCwKKysJInNoYTFoIgkJPT4gMHg1ZTI4MDgwMCwJInNoYTFzdTEiCT0+IDB4NWUyODE4MDAJKTsKKysKKysgICAgc3ViIHVuc2hhMSB7CisrCW15ICgkbW5lbW9uaWMsJGFyZyk9QF87CisrCisrCSRhcmcgPX4gbS9bcXZdKFswLTldKylbXixdKixccypbcXZdKFswLTldKylbXixdKig/OixccypbcXZdKFswLTldKykpPy9vCisrCSYmCisrCXNwcmludGYgIi5pbnN0XHQweCUwOHhcdC8vJXMgJXMiLAorKwkJCSRvcGNvZGV7JG1uZW1vbmljfXwkMXwoJDI8PDUpfCgkMzw8MTYpLAorKwkJCSRtbmVtb25pYywkYXJnOworKyAgICB9CisrfQorKworK2ZvcmVhY2goc3BsaXQoIlxuIiwkY29kZSkpIHsKKysKKysJcy9cYChbXlxgXSopXGAvZXZhbCgkMSkvZ2VvOworKworKwlzL1xiKHNoYTFcdyspXHMrKFtxdl0uKikvdW5zaGExKCQxLCQyKS9nZW87CisrCisrCXMvXC5cdz8zMlxiLy9vCQlhbmQgcy9cLjE2Yi9cLjRzL2dvOworKwltLyhsZHxzdCkxW15cW10rXFswXF0vbwlhbmQgcy9cLjRzL1wucy9nbzsKKysKKysJcHJpbnQgJF8sIlxuIjsKKyt9CisrCisrY2xvc2UgU1RET1VUOworZGlmZiAtLWdpdCBhL2NyeXB0by9zaGEvYXNtL3NoYTI1Ni1hcm12NC5wbCBiL2NyeXB0by9zaGEvYXNtL3NoYTI1Ni1hcm12NC5wbAoraW5kZXggOWM4NGU4ZC4uNTA1Y2E4ZiAxMDA2NDQKKy0tLSBhL2NyeXB0by9zaGEvYXNtL3NoYTI1Ni1hcm12NC5wbAorKysrIGIvY3J5cHRvL3NoYS9hc20vc2hhMjU2LWFybXY0LnBsCitAQCAtMSw3ICsxLDcgQEAKKyAjIS91c3IvYmluL2VudiBwZXJsCisgCisgIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLSMgV3JpdHRlbiBieSBBbmR5IFBvbHlha292IDxhcHByb0BmeS5jaGFsbWVycy5zZT4gZm9yIHRoZSBPcGVuU1NMCisrIyBXcml0dGVuIGJ5IEFuZHkgUG9seWFrb3YgPGFwcHJvQG9wZW5zc2wub3JnPiBmb3IgdGhlIE9wZW5TU0wKKyAjIHByb2plY3QuIFRoZSBtb2R1bGUgaXMsIGhvd2V2ZXIsIGR1YWwgbGljZW5zZWQgdW5kZXIgT3BlblNTTCBhbmQKKyAjIENSWVBUT0dBTVMgbGljZW5zZXMgZGVwZW5kaW5nIG9uIHdoZXJlIHlvdSBvYnRhaW4gaXQuIEZvciBmdXJ0aGVyCisgIyBkZXRhaWxzIHNlZSBodHRwOi8vd3d3Lm9wZW5zc2wub3JnL35hcHByby9jcnlwdG9nYW1zLy4KK0BAIC0yMSwxNSArMjEsMjcgQEAKKyAjIEZlYnJ1YXJ5IDIwMTEuCisgIworICMgUHJvZmlsZXItYXNzaXN0ZWQgYW5kIHBsYXRmb3JtLXNwZWNpZmljIG9wdGltaXphdGlvbiByZXN1bHRlZCBpbiAxNiUKKy0jIGltcHJvdmVtZW50IG9uIENvcnRleCBBOCBjb3JlIGFuZCB+MTcgY3ljbGVzIHBlciBwcm9jZXNzZWQgYnl0ZS4KKysjIGltcHJvdmVtZW50IG9uIENvcnRleCBBOCBjb3JlIGFuZCB+MTUuNCBjeWNsZXMgcGVyIHByb2Nlc3NlZCBieXRlLgorKworKyMgU2VwdGVtYmVyIDIwMTMuCisrIworKyMgQWRkIE5FT04gaW1wbGVtZW50YXRpb24uIE9uIENvcnRleCBBOCBpdCB3YXMgbWVhc3VyZWQgdG8gcHJvY2VzcyBvbmUKKysjIGJ5dGUgaW4gMTIuNSBjeWNsZXMgb3IgMjMlIGZhc3RlciB0aGFuIGludGVnZXItb25seSBjb2RlLiBTbmFwZHJhZ29uCisrIyBTNCBkb2VzIGl0IGluIDEyLjUgY3ljbGVzIHRvbywgYnV0IGl0J3MgNTAlIGZhc3RlciB0aGFuIGludGVnZXItb25seQorKyMgY29kZSAobWVhbmluZyB0aGF0IGxhdHRlciBwZXJmb3JtcyBzdWItb3B0aW1hbGx5LCBub3RoaW5nIHdhcyBkb25lCisrIyBhYm91dCBpdCkuCisrCisrIyBNYXkgMjAxNC4KKysjCisrIyBBZGQgQVJNdjggY29kZSBwYXRoIHBlcmZvcm1pbmcgYXQgMi4wIGNwYiBvbiBBcHBsZSBBNy4KKyAKKyB3aGlsZSAoKCRvdXRwdXQ9c2hpZnQpICYmICgkb3V0cHV0IX4vXlx3W1x3XC1dKlwuXHcrJC8pKSB7fQorIG9wZW4gU1RET1VULCI+JG91dHB1dCI7CisgCisgJGN0eD0icjAiOwkkdDA9InIwIjsKKy0kaW5wPSJyMSI7CSR0Mz0icjEiOworKyRpbnA9InIxIjsJJHQ0PSJyMSI7CisgJGxlbj0icjIiOwkkdDE9InIyIjsKKy0kVDE9InIzIjsKKyskVDE9InIzIjsJJHQzPSJyMyI7CisgJEE9InI0IjsKKyAkQj0icjUiOworICRDPSJyNiI7CitAQCAtNTIsNzEgKzY0LDg4IEBAIG15ICgkaSwkYSwkYiwkYywkZCwkZSwkZiwkZywkaCkgPSBAXzsKKyAKKyAkY29kZS49PDxfX18gaWYgKCRpPDE2KTsKKyAjaWYgX19BUk1fQVJDSF9fPj03CistCWxkcgkkVDEsWyRpbnBdLCM0CisrCUAgbGRyCSR0MSxbJGlucF0sIzQJCQlAICRpCisrIyBpZiAkaT09MTUKKysJc3RyCSRpbnAsW3NwLCMxNyo0XQkJCUAgbWFrZSByb29tIGZvciAkdDQKKysjIGVuZGlmCisrCWVvcgkkdDAsJGUsJGUscm9yI2AkU2lnbWExWzFdLSRTaWdtYTFbMF1gCisrCWFkZAkkYSwkYSwkdDIJCQlAIGgrPU1haihhLGIsYykgZnJvbSB0aGUgcGFzdAorKwllb3IJJHQwLCR0MCwkZSxyb3IjYCRTaWdtYTFbMl0tJFNpZ21hMVswXWAJQCBTaWdtYTEoZSkKKysJcmV2CSR0MSwkdDEKKyAjZWxzZQorLQlsZHJiCSRUMSxbJGlucCwjM10JCQlAICRpCisrCUAgbGRyYgkkdDEsWyRpbnAsIzNdCQkJQCAkaQorKwlhZGQJJGEsJGEsJHQyCQkJQCBoKz1NYWooYSxiLGMpIGZyb20gdGhlIHBhc3QKKyAJbGRyYgkkdDIsWyRpbnAsIzJdCistCWxkcmIJJHQxLFskaW5wLCMxXQorLQlsZHJiCSR0MCxbJGlucF0sIzQKKy0Jb3JyCSRUMSwkVDEsJHQyLGxzbCM4CistCW9ycgkkVDEsJFQxLCR0MSxsc2wjMTYKKy0Jb3JyCSRUMSwkVDEsJHQwLGxzbCMyNAorKwlsZHJiCSR0MCxbJGlucCwjMV0KKysJb3JyCSR0MSwkdDEsJHQyLGxzbCM4CisrCWxkcmIJJHQyLFskaW5wXSwjNAorKwlvcnIJJHQxLCR0MSwkdDAsbHNsIzE2CisrIyBpZiAkaT09MTUKKysJc3RyCSRpbnAsW3NwLCMxNyo0XQkJCUAgbWFrZSByb29tIGZvciAkdDQKKysjIGVuZGlmCisrCWVvcgkkdDAsJGUsJGUscm9yI2AkU2lnbWExWzFdLSRTaWdtYTFbMF1gCisrCW9ycgkkdDEsJHQxLCR0Mixsc2wjMjQKKysJZW9yCSR0MCwkdDAsJGUscm9yI2AkU2lnbWExWzJdLSRTaWdtYTFbMF1gCUAgU2lnbWExKGUpCisgI2VuZGlmCisgX19fCisgJGNvZGUuPTw8X19fOworLQltb3YJJHQwLCRlLHJvciMkU2lnbWExWzBdCisgCWxkcgkkdDIsWyRLdGJsXSwjNAkJCUAgKksyNTYrKworLQllb3IJJHQwLCR0MCwkZSxyb3IjJFNpZ21hMVsxXQorKwlhZGQJJGgsJGgsJHQxCQkJQCBoKz1YW2ldCisrCXN0cgkkdDEsW3NwLCNgJGklMTZgKjRdCisgCWVvcgkkdDEsJGYsJGcKKy0jaWYgJGk+PTE2CistCWFkZAkkVDEsJFQxLCR0MwkJCUAgZnJvbSBCT0RZXzE2X3h4CistI2VsaWYgX19BUk1fQVJDSF9fPj03ICYmIGRlZmluZWQoX19BUk1FTF9fKQorLQlyZXYJJFQxLCRUMQorLSNlbmRpZgorLSNpZiAkaT09MTUKKy0Jc3RyCSRpbnAsW3NwLCMxNyo0XQkJCUAgbGVhdmUgcm9vbSBmb3IgJHQzCistI2VuZGlmCistCWVvcgkkdDAsJHQwLCRlLHJvciMkU2lnbWExWzJdCUAgU2lnbWExKGUpCisrCWFkZAkkaCwkaCwkdDAscm9yIyRTaWdtYTFbMF0JQCBoKz1TaWdtYTEoZSkKKyAJYW5kCSR0MSwkdDEsJGUKKy0Jc3RyCSRUMSxbc3AsI2AkaSUxNmAqNF0KKy0JYWRkCSRUMSwkVDEsJHQwCisrCWFkZAkkaCwkaCwkdDIJCQlAIGgrPUsyNTZbaV0KKyAJZW9yCSR0MSwkdDEsJGcJCQlAIENoKGUsZixnKQorLQlhZGQJJFQxLCRUMSwkaAorLQltb3YJJGgsJGEscm9yIyRTaWdtYTBbMF0KKy0JYWRkCSRUMSwkVDEsJHQxCistCWVvcgkkaCwkaCwkYSxyb3IjJFNpZ21hMFsxXQorLQlhZGQJJFQxLCRUMSwkdDIKKy0JZW9yCSRoLCRoLCRhLHJvciMkU2lnbWEwWzJdCQlAIFNpZ21hMChhKQorLSNpZiAkaT49MTUKKy0JbGRyCSR0Myxbc3AsI2AoJGkrMiklMTZgKjRdCQlAIGZyb20gQk9EWV8xNl94eAorKwllb3IJJHQwLCRhLCRhLHJvciNgJFNpZ21hMFsxXS0kU2lnbWEwWzBdYAorKwlhZGQJJGgsJGgsJHQxCQkJQCBoKz1DaChlLGYsZykKKysjaWYgJGk9PTMxCisrCWFuZAkkdDIsJHQyLCMweGZmCisrCWNtcAkkdDIsIzB4ZjIJCQlAIGRvbmU/CisgI2VuZGlmCistCW9ycgkkdDAsJGEsJGIKKy0JYW5kCSR0MSwkYSwkYgorLQlhbmQJJHQwLCR0MCwkYworLQlhZGQJJGgsJGgsJFQxCistCW9ycgkkdDAsJHQwLCR0MQkJCUAgTWFqKGEsYixjKQorLQlhZGQJJGQsJGQsJFQxCistCWFkZAkkaCwkaCwkdDAKKysjaWYgJGk8MTUKKysjIGlmIF9fQVJNX0FSQ0hfXz49NworKwlsZHIJJHQxLFskaW5wXSwjNAkJCUAgcHJlZmV0Y2gKKysjIGVsc2UKKysJbGRyYgkkdDEsWyRpbnAsIzNdCisrIyBlbmRpZgorKwllb3IJJHQyLCRhLCRiCQkJQCBhXmIsIGJeYyBpbiBuZXh0IHJvdW5kCisrI2Vsc2UKKysJbGRyCSR0MSxbc3AsI2AoJGkrMiklMTZgKjRdCQlAIGZyb20gZnV0dXJlIEJPRFlfMTZfeHgKKysJZW9yCSR0MiwkYSwkYgkJCUAgYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorKwlsZHIJJHQ0LFtzcCwjYCgkaSsxNSklMTZgKjRdCUAgZnJvbSBmdXR1cmUgQk9EWV8xNl94eAorKyNlbmRpZgorKwllb3IJJHQwLCR0MCwkYSxyb3IjYCRTaWdtYTBbMl0tJFNpZ21hMFswXWAJQCBTaWdtYTAoYSkKKysJYW5kCSR0MywkdDMsJHQyCQkJQCAoYl5jKSY9KGFeYikKKysJYWRkCSRkLCRkLCRoCQkJQCBkKz1oCisrCWVvcgkkdDMsJHQzLCRiCQkJQCBNYWooYSxiLGMpCisrCWFkZAkkaCwkaCwkdDAscm9yIyRTaWdtYTBbMF0JQCBoKz1TaWdtYTAoYSkKKysJQCBhZGQJJGgsJGgsJHQzCQkJQCBoKz1NYWooYSxiLGMpCisgX19fCisrCSgkdDIsJHQzKT0oJHQzLCR0Mik7CisgfQorIAorIHN1YiBCT0RZXzE2X1hYIHsKKyBteSAoJGksJGEsJGIsJGMsJGQsJGUsJGYsJGcsJGgpID0gQF87CisgCisgJGNvZGUuPTw8X19fOworLQlAIGxkcgkkdDMsW3NwLCNgKCRpKzEpJTE2YCo0XQkJQCAkaQorLQlsZHIJJHQyLFtzcCwjYCgkaSsxNCklMTZgKjRdCistCW1vdgkkdDAsJHQzLHJvciMkc2lnbWEwWzBdCistCWxkcgkkVDEsW3NwLCNgKCRpKzApJTE2YCo0XQorLQllb3IJJHQwLCR0MCwkdDMscm9yIyRzaWdtYTBbMV0KKy0JbGRyCSR0MSxbc3AsI2AoJGkrOSklMTZgKjRdCistCWVvcgkkdDAsJHQwLCR0Myxsc3IjJHNpZ21hMFsyXQlAIHNpZ21hMChYW2krMV0pCistCW1vdgkkdDMsJHQyLHJvciMkc2lnbWExWzBdCistCWFkZAkkVDEsJFQxLCR0MAorLQllb3IJJHQzLCR0MywkdDIscm9yIyRzaWdtYTFbMV0KKy0JYWRkCSRUMSwkVDEsJHQxCistCWVvcgkkdDMsJHQzLCR0Mixsc3IjJHNpZ21hMVsyXQlAIHNpZ21hMShYW2krMTRdKQorLQlAIGFkZAkkVDEsJFQxLCR0MworKwlAIGxkcgkkdDEsW3NwLCNgKCRpKzEpJTE2YCo0XQkJQCAkaQorKwlAIGxkcgkkdDQsW3NwLCNgKCRpKzE0KSUxNmAqNF0KKysJbW92CSR0MCwkdDEscm9yIyRzaWdtYTBbMF0KKysJYWRkCSRhLCRhLCR0MgkJCUAgaCs9TWFqKGEsYixjKSBmcm9tIHRoZSBwYXN0CisrCW1vdgkkdDIsJHQ0LHJvciMkc2lnbWExWzBdCisrCWVvcgkkdDAsJHQwLCR0MSxyb3IjJHNpZ21hMFsxXQorKwllb3IJJHQyLCR0MiwkdDQscm9yIyRzaWdtYTFbMV0KKysJZW9yCSR0MCwkdDAsJHQxLGxzciMkc2lnbWEwWzJdCUAgc2lnbWEwKFhbaSsxXSkKKysJbGRyCSR0MSxbc3AsI2AoJGkrMCklMTZgKjRdCisrCWVvcgkkdDIsJHQyLCR0NCxsc3IjJHNpZ21hMVsyXQlAIHNpZ21hMShYW2krMTRdKQorKwlsZHIJJHQ0LFtzcCwjYCgkaSs5KSUxNmAqNF0KKysKKysJYWRkCSR0MiwkdDIsJHQwCisrCWVvcgkkdDAsJGUsJGUscm9yI2AkU2lnbWExWzFdLSRTaWdtYTFbMF1gCUAgZnJvbSBCT0RZXzAwXzE1CisrCWFkZAkkdDEsJHQxLCR0MgorKwllb3IJJHQwLCR0MCwkZSxyb3IjYCRTaWdtYTFbMl0tJFNpZ21hMVswXWAJQCBTaWdtYTEoZSkKKysJYWRkCSR0MSwkdDEsJHQ0CQkJQCBYW2ldCisgX19fCisgCSZCT0RZXzAwXzE1KEBfKTsKKyB9CitAQCAtMTQ3LDQ2ICsxNzYsNjQgQEAgSzI1NjoKKyAud29yZAkweDc0OGY4MmVlLDB4NzhhNTYzNmYsMHg4NGM4NzgxNCwweDhjYzcwMjA4CisgLndvcmQJMHg5MGJlZmZmYSwweGE0NTA2Y2ViLDB4YmVmOWEzZjcsMHhjNjcxNzhmMgorIC5zaXplCUsyNTYsLi1LMjU2CisrLndvcmQJMAkJCQlAIHRlcm1pbmF0b3IKKysuTE9QRU5TU0xfYXJtY2FwOgorKy53b3JkCU9QRU5TU0xfYXJtY2FwX1Atc2hhMjU2X2Jsb2NrX2RhdGFfb3JkZXIKKysuYWxpZ24JNQorIAorIC5nbG9iYWwJc2hhMjU2X2Jsb2NrX2RhdGFfb3JkZXIKKyAudHlwZQlzaGEyNTZfYmxvY2tfZGF0YV9vcmRlciwlZnVuY3Rpb24KKyBzaGEyNTZfYmxvY2tfZGF0YV9vcmRlcjoKKyAJc3ViCXIzLHBjLCM4CQlAIHNoYTI1Nl9ibG9ja19kYXRhX29yZGVyCisgCWFkZAkkbGVuLCRpbnAsJGxlbixsc2wjNglAIGxlbiB0byBwb2ludCBhdCB0aGUgZW5kIG9mIGlucAorKyNpZiBfX0FSTV9BUkNIX18+PTcKKysJbGRyCXIxMiwuTE9QRU5TU0xfYXJtY2FwCisrCWxkcglyMTIsW3IzLHIxMl0JCUAgT1BFTlNTTF9hcm1jYXBfUAorKwl0c3QJcjEyLCNBUk1WOF9TSEEyNTYKKysJYm5lCS5MQVJNdjgKKysJdHN0CXIxMiwjQVJNVjdfTkVPTgorKwlibmUJLkxORU9OCisrI2VuZGlmCisgCXN0bWRiCXNwISx7JGN0eCwkaW5wLCRsZW4scjQtcjExLGxyfQorIAlsZG1pYQkkY3R4LHskQSwkQiwkQywkRCwkRSwkRiwkRywkSH0KKy0Jc3ViCSRLdGJsLHIzLCMyNTYJCUAgSzI1NgorKwlzdWIJJEt0YmwscjMsIzI1NiszMglAIEsyNTYKKyAJc3ViCXNwLHNwLCMxNio0CQlAIGFsbG9jYShYWzE2XSkKKyAuTG9vcDoKKysjIGlmIF9fQVJNX0FSQ0hfXz49NworKwlsZHIJJHQxLFskaW5wXSwjNAorKyMgZWxzZQorKwlsZHJiCSR0MSxbJGlucCwjM10KKysjIGVuZGlmCisrCWVvcgkkdDMsJEIsJEMJCUAgbWFnaWMKKysJZW9yCSR0MiwkdDIsJHQyCisgX19fCisgZm9yKCRpPTA7JGk8MTY7JGkrKykJeyAmQk9EWV8wMF8xNSgkaSxAVik7IHVuc2hpZnQoQFYscG9wKEBWKSk7IH0KKyAkY29kZS49Ii5Mcm91bmRzXzE2X3h4OlxuIjsKKyBmb3IgKDskaTwzMjskaSsrKQl7ICZCT0RZXzE2X1hYKCRpLEBWKTsgdW5zaGlmdChAVixwb3AoQFYpKTsgfQorICRjb2RlLj08PF9fXzsKKy0JYW5kCSR0MiwkdDIsIzB4ZmYKKy0JY21wCSR0MiwjMHhmMgorKwlsZHJlcQkkdDMsW3NwLCMxNio0XQkJQCBwdWxsIGN0eAorIAlibmUJLkxyb3VuZHNfMTZfeHgKKyAKKy0JbGRyCSRUMSxbc3AsIzE2KjRdCQlAIHB1bGwgY3R4CistCWxkcgkkdDAsWyRUMSwjMF0KKy0JbGRyCSR0MSxbJFQxLCM0XQorLQlsZHIJJHQyLFskVDEsIzhdCisrCWFkZAkkQSwkQSwkdDIJCUAgaCs9TWFqKGEsYixjKSBmcm9tIHRoZSBwYXN0CisrCWxkcgkkdDAsWyR0MywjMF0KKysJbGRyCSR0MSxbJHQzLCM0XQorKwlsZHIJJHQyLFskdDMsIzhdCisgCWFkZAkkQSwkQSwkdDAKKy0JbGRyCSR0MCxbJFQxLCMxMl0KKysJbGRyCSR0MCxbJHQzLCMxMl0KKyAJYWRkCSRCLCRCLCR0MQorLQlsZHIJJHQxLFskVDEsIzE2XQorKwlsZHIJJHQxLFskdDMsIzE2XQorIAlhZGQJJEMsJEMsJHQyCistCWxkcgkkdDIsWyRUMSwjMjBdCisrCWxkcgkkdDIsWyR0MywjMjBdCisgCWFkZAkkRCwkRCwkdDAKKy0JbGRyCSR0MCxbJFQxLCMyNF0KKysJbGRyCSR0MCxbJHQzLCMyNF0KKyAJYWRkCSRFLCRFLCR0MQorLQlsZHIJJHQxLFskVDEsIzI4XQorKwlsZHIJJHQxLFskdDMsIzI4XQorIAlhZGQJJEYsJEYsJHQyCisgCWxkcgkkaW5wLFtzcCwjMTcqNF0JCUAgcHVsbCBpbnAKKyAJbGRyCSR0Mixbc3AsIzE4KjRdCQlAIHB1bGwgaW5wK2xlbgorIAlhZGQJJEcsJEcsJHQwCisgCWFkZAkkSCwkSCwkdDEKKy0Jc3RtaWEJJFQxLHskQSwkQiwkQywkRCwkRSwkRiwkRywkSH0KKysJc3RtaWEJJHQzLHskQSwkQiwkQywkRCwkRSwkRiwkRywkSH0KKyAJY21wCSRpbnAsJHQyCisgCXN1YgkkS3RibCwkS3RibCwjMjU2CUAgcmV3aW5kIEt0YmwKKyAJYm5lCS5Mb29wCitAQCAtMjAwLDEyICsyNDcsNDEwIEBAICRjb2RlLj08PF9fXzsKKyAJbW92ZXEJcGMsbHIJCQlAIGJlIGJpbmFyeSBjb21wYXRpYmxlIHdpdGggVjQsIHlldAorIAlieAlscgkJCUAgaW50ZXJvcGVyYWJsZSB3aXRoIFRodW1iIElTQTotKQorICNlbmRpZgorLS5zaXplICAgc2hhMjU2X2Jsb2NrX2RhdGFfb3JkZXIsLi1zaGEyNTZfYmxvY2tfZGF0YV9vcmRlcgorLS5hc2NpeiAgIlNIQTI1NiBibG9jayB0cmFuc2Zvcm0gZm9yIEFSTXY0LCBDUllQVE9HQU1TIGJ5IDxhcHByb1xAb3BlbnNzbC5vcmc+IgorKy5zaXplCXNoYTI1Nl9ibG9ja19kYXRhX29yZGVyLC4tc2hhMjU2X2Jsb2NrX2RhdGFfb3JkZXIKKytfX18KKysjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisrIyBORU9OIHN0dWZmCisrIworK3t7eworK215IEBYPW1hcCgicSRfIiwoMC4uMykpOworK215ICgkVDAsJFQxLCRUMiwkVDMsJFQ0LCRUNSk9KCJxOCIsInE5IiwicTEwIiwicTExIiwiZDI0IiwiZDI1Iik7CisrbXkgJFhmZXI9JHQ0OworK215ICRqPTA7CisrCisrc3ViIERsbygpICAgeyBzaGlmdD1+bXxxKFsxXT9bMC05XSl8PyJkIi4oJDEqMik6IiI7ICAgICB9Cisrc3ViIERoaSgpICAgeyBzaGlmdD1+bXxxKFsxXT9bMC05XSl8PyJkIi4oJDEqMisxKToiIjsgICB9CisrCisrc3ViIEFVVE9MT0FEKCkgICAgICAgICAgIyB0aHVuayBbc2ltcGxpZmllZF0geDg2LXN0eWxlIHBlcmxhc20KKyt7IG15ICRvcGNvZGUgPSAkQVVUT0xPQUQ7ICRvcGNvZGUgPX4gcy8uKjo6Ly87ICRvcGNvZGUgPX4gcy9fL1wuLzsKKysgIG15ICRhcmcgPSBwb3A7CisrICAgICRhcmcgPSAiIyRhcmciIGlmICgkYXJnKjEgZXEgJGFyZyk7CisrICAgICRjb2RlIC49ICJcdCRvcGNvZGVcdCIuam9pbignLCcsQF8sJGFyZykuIlxuIjsKKyt9CisrCisrc3ViIFh1cGRhdGUoKQorK3sgdXNlIGludGVnZXI7CisrICBteSAkYm9keSA9IHNoaWZ0OworKyAgbXkgQGluc25zID0gKCYkYm9keSwmJGJvZHksJiRib2R5LCYkYm9keSk7CisrICBteSAoJGEsJGIsJGMsJGQsJGUsJGYsJGcsJGgpOworKworKwkmdmV4dF84CQkoJFQwLEBYWzBdLEBYWzFdLDQpOwkjIFhbMS4uNF0KKysJIGV2YWwoc2hpZnQoQGluc25zKSk7CisrCSBldmFsKHNoaWZ0KEBpbnNucykpOworKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKysJJnZleHRfOAkJKCRUMSxAWFsyXSxAWFszXSw0KTsJIyBYWzkuLjEyXQorKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKysJIGV2YWwoc2hpZnQoQGluc25zKSk7CisrCSBldmFsKHNoaWZ0KEBpbnNucykpOworKwkmdnNocl91MzIJKCRUMiwkVDAsJHNpZ21hMFswXSk7CisrCSBldmFsKHNoaWZ0KEBpbnNucykpOworKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKysJJnZhZGRfaTMyCShAWFswXSxAWFswXSwkVDEpOwkjIFhbMC4uM10gKz0gWFs5Li4xMl0KKysJIGV2YWwoc2hpZnQoQGluc25zKSk7CisrCSBldmFsKHNoaWZ0KEBpbnNucykpOworKwkmdnNocl91MzIJKCRUMSwkVDAsJHNpZ21hMFsyXSk7CisrCSBldmFsKHNoaWZ0KEBpbnNucykpOworKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKysJJnZzbGlfMzIJKCRUMiwkVDAsMzItJHNpZ21hMFswXSk7CisrCSBldmFsKHNoaWZ0KEBpbnNucykpOworKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKysJJnZzaHJfdTMyCSgkVDMsJFQwLCRzaWdtYTBbMV0pOworKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKysJIGV2YWwoc2hpZnQoQGluc25zKSk7CisrCSZ2ZW9yCQkoJFQxLCRUMSwkVDIpOworKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKysJIGV2YWwoc2hpZnQoQGluc25zKSk7CisrCSZ2c2xpXzMyCSgkVDMsJFQwLDMyLSRzaWdtYTBbMV0pOworKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKysJIGV2YWwoc2hpZnQoQGluc25zKSk7CisrCSAgJnZzaHJfdTMyCSgkVDQsJkRoaShAWFszXSksJHNpZ21hMVswXSk7CisrCSBldmFsKHNoaWZ0KEBpbnNucykpOworKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKysJJnZlb3IJCSgkVDEsJFQxLCRUMyk7CQkjIHNpZ21hMChYWzEuLjRdKQorKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKysJIGV2YWwoc2hpZnQoQGluc25zKSk7CisrCSAgJnZzbGlfMzIJKCRUNCwmRGhpKEBYWzNdKSwzMi0kc2lnbWExWzBdKTsKKysJIGV2YWwoc2hpZnQoQGluc25zKSk7CisrCSBldmFsKHNoaWZ0KEBpbnNucykpOworKwkgICZ2c2hyX3UzMgkoJFQ1LCZEaGkoQFhbM10pLCRzaWdtYTFbMl0pOworKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKysJIGV2YWwoc2hpZnQoQGluc25zKSk7CisrCSZ2YWRkX2kzMgkoQFhbMF0sQFhbMF0sJFQxKTsJIyBYWzAuLjNdICs9IHNpZ21hMChYWzEuLjRdKQorKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKysJIGV2YWwoc2hpZnQoQGluc25zKSk7CisrCSAgJnZlb3IJCSgkVDUsJFQ1LCRUNCk7CisrCSBldmFsKHNoaWZ0KEBpbnNucykpOworKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKysJICAmdnNocl91MzIJKCRUNCwmRGhpKEBYWzNdKSwkc2lnbWExWzFdKTsKKysJIGV2YWwoc2hpZnQoQGluc25zKSk7CisrCSBldmFsKHNoaWZ0KEBpbnNucykpOworKwkgICZ2c2xpXzMyCSgkVDQsJkRoaShAWFszXSksMzItJHNpZ21hMVsxXSk7CisrCSBldmFsKHNoaWZ0KEBpbnNucykpOworKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKysJICAmdmVvcgkJKCRUNSwkVDUsJFQ0KTsJCSMgc2lnbWExKFhbMTQuLjE1XSkKKysJIGV2YWwoc2hpZnQoQGluc25zKSk7CisrCSBldmFsKHNoaWZ0KEBpbnNucykpOworKwkmdmFkZF9pMzIJKCZEbG8oQFhbMF0pLCZEbG8oQFhbMF0pLCRUNSk7IyBYWzAuLjFdICs9IHNpZ21hMShYWzE0Li4xNV0pCisrCSBldmFsKHNoaWZ0KEBpbnNucykpOworKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKysJICAmdnNocl91MzIJKCRUNCwmRGxvKEBYWzBdKSwkc2lnbWExWzBdKTsKKysJIGV2YWwoc2hpZnQoQGluc25zKSk7CisrCSBldmFsKHNoaWZ0KEBpbnNucykpOworKwkgICZ2c2xpXzMyCSgkVDQsJkRsbyhAWFswXSksMzItJHNpZ21hMVswXSk7CisrCSBldmFsKHNoaWZ0KEBpbnNucykpOworKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKysJICAmdnNocl91MzIJKCRUNSwmRGxvKEBYWzBdKSwkc2lnbWExWzJdKTsKKysJIGV2YWwoc2hpZnQoQGluc25zKSk7CisrCSBldmFsKHNoaWZ0KEBpbnNucykpOworKwkgICZ2ZW9yCQkoJFQ1LCRUNSwkVDQpOworKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKysJIGV2YWwoc2hpZnQoQGluc25zKSk7CisrCSAgJnZzaHJfdTMyCSgkVDQsJkRsbyhAWFswXSksJHNpZ21hMVsxXSk7CisrCSBldmFsKHNoaWZ0KEBpbnNucykpOworKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKysJJnZsZDFfMzIJKCJ7JFQwfSIsIlskS3RibCw6MTI4XSEiKTsKKysJIGV2YWwoc2hpZnQoQGluc25zKSk7CisrCSBldmFsKHNoaWZ0KEBpbnNucykpOworKwkgICZ2c2xpXzMyCSgkVDQsJkRsbyhAWFswXSksMzItJHNpZ21hMVsxXSk7CisrCSBldmFsKHNoaWZ0KEBpbnNucykpOworKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKysJICAmdmVvcgkJKCRUNSwkVDUsJFQ0KTsJCSMgc2lnbWExKFhbMTYuLjE3XSkKKysJIGV2YWwoc2hpZnQoQGluc25zKSk7CisrCSBldmFsKHNoaWZ0KEBpbnNucykpOworKwkmdmFkZF9pMzIJKCZEaGkoQFhbMF0pLCZEaGkoQFhbMF0pLCRUNSk7IyBYWzIuLjNdICs9IHNpZ21hMShYWzE2Li4xN10pCisrCSBldmFsKHNoaWZ0KEBpbnNucykpOworKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKysJJnZhZGRfaTMyCSgkVDAsJFQwLEBYWzBdKTsKKysJIHdoaWxlKCQjaW5zbnM+PTIpIHsgZXZhbChzaGlmdChAaW5zbnMpKTsgfQorKwkmdnN0MV8zMgkoInskVDB9IiwiWyRYZmVyLDoxMjhdISIpOworKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKysJIGV2YWwoc2hpZnQoQGluc25zKSk7CisrCisrCXB1c2goQFgsc2hpZnQoQFgpKTsJCSMgInJvdGF0ZSIgWFtdCisrfQorKworK3N1YiBYcHJlbG9hZCgpCisreyB1c2UgaW50ZWdlcjsKKysgIG15ICRib2R5ID0gc2hpZnQ7CisrICBteSBAaW5zbnMgPSAoJiRib2R5LCYkYm9keSwmJGJvZHksJiRib2R5KTsKKysgIG15ICgkYSwkYiwkYywkZCwkZSwkZiwkZywkaCk7CisrCisrCSBldmFsKHNoaWZ0KEBpbnNucykpOworKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKysJIGV2YWwoc2hpZnQoQGluc25zKSk7CisrCSBldmFsKHNoaWZ0KEBpbnNucykpOworKwkmdmxkMV8zMgkoInskVDB9IiwiWyRLdGJsLDoxMjhdISIpOworKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKysJIGV2YWwoc2hpZnQoQGluc25zKSk7CisrCSBldmFsKHNoaWZ0KEBpbnNucykpOworKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKysJJnZyZXYzMl84CShAWFswXSxAWFswXSk7CisrCSBldmFsKHNoaWZ0KEBpbnNucykpOworKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKysJIGV2YWwoc2hpZnQoQGluc25zKSk7CisrCSBldmFsKHNoaWZ0KEBpbnNucykpOworKwkmdmFkZF9pMzIJKCRUMCwkVDAsQFhbMF0pOworKwkgZm9yZWFjaCAoQGluc25zKSB7IGV2YWw7IH0JIyByZW1haW5pbmcgaW5zdHJ1Y3Rpb25zCisrCSZ2c3QxXzMyCSgieyRUMH0iLCJbJFhmZXIsOjEyOF0hIik7CisrCisrCXB1c2goQFgsc2hpZnQoQFgpKTsJCSMgInJvdGF0ZSIgWFtdCisrfQorKworK3N1YiBib2R5XzAwXzE1ICgpIHsKKysJKAorKwknKCRhLCRiLCRjLCRkLCRlLCRmLCRnLCRoKT1AVjsnLgorKwknJmFkZAkoJGgsJGgsJHQxKScsCQkJIyBoKz1YW2ldK0tbaV0KKysJJyZlb3IJKCR0MSwkZiwkZyknLAorKwknJmVvcgkoJHQwLCRlLCRlLCJyb3IjIi4oJFNpZ21hMVsxXS0kU2lnbWExWzBdKSknLAorKwknJmFkZAkoJGEsJGEsJHQyKScsCQkJIyBoKz1NYWooYSxiLGMpIGZyb20gdGhlIHBhc3QKKysJJyZhbmQJKCR0MSwkdDEsJGUpJywKKysJJyZlb3IJKCR0MiwkdDAsJGUsInJvciMiLigkU2lnbWExWzJdLSRTaWdtYTFbMF0pKScsCSMgU2lnbWExKGUpCisrCScmZW9yCSgkdDAsJGEsJGEsInJvciMiLigkU2lnbWEwWzFdLSRTaWdtYTBbMF0pKScsCisrCScmZW9yCSgkdDEsJHQxLCRnKScsCQkJIyBDaChlLGYsZykKKysJJyZhZGQJKCRoLCRoLCR0Miwicm9yIyRTaWdtYTFbMF0iKScsCSMgaCs9U2lnbWExKGUpCisrCScmZW9yCSgkdDIsJGEsJGIpJywJCQkjIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKysJJyZlb3IJKCR0MCwkdDAsJGEsInJvciMiLigkU2lnbWEwWzJdLSRTaWdtYTBbMF0pKScsCSMgU2lnbWEwKGEpCisrCScmYWRkCSgkaCwkaCwkdDEpJywJCQkjIGgrPUNoKGUsZixnKQorKwknJmxkcgkoJHQxLHNwcmludGYgIltzcCwjJWRdIiw0KigoJGorMSkmMTUpKQlpZiAoKCRqJjE1KSE9MTUpOycuCisrCScmbGRyCSgkdDEsIlskS3RibF0iKQkJCQlpZiAoJGo9PTE1KTsnLgorKwknJmxkcgkoJHQxLCJbc3AsIzY0XSIpCQkJaWYgKCRqPT0zMSknLAorKwknJmFuZAkoJHQzLCR0MywkdDIpJywJCQkjIChiXmMpJj0oYV5iKQorKwknJmFkZAkoJGQsJGQsJGgpJywJCQkjIGQrPWgKKysJJyZhZGQJKCRoLCRoLCR0MCwicm9yIyRTaWdtYTBbMF0iKTsnLgkjIGgrPVNpZ21hMChhKQorKwknJmVvcgkoJHQzLCR0MywkYiknLAkJCSMgTWFqKGEsYixjKQorKwknJGorKzsJdW5zaGlmdChAVixwb3AoQFYpKTsgKCR0MiwkdDMpPSgkdDMsJHQyKTsnCisrCSkKKyt9CisrCisrJGNvZGUuPTw8X19fOworKyNpZiBfX0FSTV9BUkNIX18+PTcKKysuZnB1CW5lb24KKysKKysudHlwZQlzaGEyNTZfYmxvY2tfZGF0YV9vcmRlcl9uZW9uLCVmdW5jdGlvbgorKy5hbGlnbgk0Cisrc2hhMjU2X2Jsb2NrX2RhdGFfb3JkZXJfbmVvbjoKKysuTE5FT046CisrCXN0bWRiCXNwISx7cjQtcjEyLGxyfQorKworKwltb3YJJHQyLHNwCisrCXN1YglzcCxzcCwjMTYqNCsxNgkJQCBhbGxvY2EKKysJc3ViCSRLdGJsLHIzLCMyNTYrMzIJQCBLMjU2CisrCWJpYwlzcCxzcCwjMTUJCUAgYWxpZ24gZm9yIDEyOC1iaXQgc3RvcmVzCisrCisrCXZsZDEuOAkJe0BYWzBdfSxbJGlucF0hCisrCXZsZDEuOAkJe0BYWzFdfSxbJGlucF0hCisrCXZsZDEuOAkJe0BYWzJdfSxbJGlucF0hCisrCXZsZDEuOAkJe0BYWzNdfSxbJGlucF0hCisrCXZsZDEuMzIJCXskVDB9LFskS3RibCw6MTI4XSEKKysJdmxkMS4zMgkJeyRUMX0sWyRLdGJsLDoxMjhdIQorKwl2bGQxLjMyCQl7JFQyfSxbJEt0YmwsOjEyOF0hCisrCXZsZDEuMzIJCXskVDN9LFskS3RibCw6MTI4XSEKKysJdnJldjMyLjgJQFhbMF0sQFhbMF0JCUAgeWVzLCBldmVuIG9uCisrCXN0cgkJJGN0eCxbc3AsIzY0XQorKwl2cmV2MzIuOAlAWFsxXSxAWFsxXQkJQCBiaWctZW5kaWFuCisrCXN0cgkJJGlucCxbc3AsIzY4XQorKwltb3YJCSRYZmVyLHNwCisrCXZyZXYzMi44CUBYWzJdLEBYWzJdCisrCXN0cgkJJGxlbixbc3AsIzcyXQorKwl2cmV2MzIuOAlAWFszXSxAWFszXQorKwlzdHIJCSR0Mixbc3AsIzc2XQkJQCBzYXZlIG9yaWdpbmFsIHNwCisrCXZhZGQuaTMyCSRUMCwkVDAsQFhbMF0KKysJdmFkZC5pMzIJJFQxLCRUMSxAWFsxXQorKwl2c3QxLjMyCQl7JFQwfSxbJFhmZXIsOjEyOF0hCisrCXZhZGQuaTMyCSRUMiwkVDIsQFhbMl0KKysJdnN0MS4zMgkJeyRUMX0sWyRYZmVyLDoxMjhdIQorKwl2YWRkLmkzMgkkVDMsJFQzLEBYWzNdCisrCXZzdDEuMzIJCXskVDJ9LFskWGZlciw6MTI4XSEKKysJdnN0MS4zMgkJeyRUM30sWyRYZmVyLDoxMjhdIQorKworKwlsZG1pYQkJJGN0eCx7JEEtJEh9CisrCXN1YgkJJFhmZXIsJFhmZXIsIzY0CisrCWxkcgkJJHQxLFtzcCwjMF0KKysJZW9yCQkkdDIsJHQyLCR0MgorKwllb3IJCSR0MywkQiwkQworKwliCQkuTF8wMF80OAorKworKy5hbGlnbgk0CisrLkxfMDBfNDg6CisrX19fCisrCSZYdXBkYXRlKFwmYm9keV8wMF8xNSk7CisrCSZYdXBkYXRlKFwmYm9keV8wMF8xNSk7CisrCSZYdXBkYXRlKFwmYm9keV8wMF8xNSk7CisrCSZYdXBkYXRlKFwmYm9keV8wMF8xNSk7CisrJGNvZGUuPTw8X19fOworKwl0ZXEJJHQxLCMwCQkJCUAgY2hlY2sgZm9yIEsyNTYgdGVybWluYXRvcgorKwlsZHIJJHQxLFtzcCwjMF0KKysJc3ViCSRYZmVyLCRYZmVyLCM2NAorKwlibmUJLkxfMDBfNDgKKysKKysJbGRyCQkkaW5wLFtzcCwjNjhdCisrCWxkcgkJJHQwLFtzcCwjNzJdCisrCXN1YgkJJEt0YmwsJEt0YmwsIzI1NglAIHJld2luZCAkS3RibAorKwl0ZXEJCSRpbnAsJHQwCisrCXN1YmVxCQkkaW5wLCRpbnAsIzY0CQlAIGF2b2lkIFNFR1YKKysJdmxkMS44CQl7QFhbMF19LFskaW5wXSEJCUAgbG9hZCBuZXh0IGlucHV0IGJsb2NrCisrCXZsZDEuOAkJe0BYWzFdfSxbJGlucF0hCisrCXZsZDEuOAkJe0BYWzJdfSxbJGlucF0hCisrCXZsZDEuOAkJe0BYWzNdfSxbJGlucF0hCisrCXN0cm5lCQkkaW5wLFtzcCwjNjhdCisrCW1vdgkJJFhmZXIsc3AKKytfX18KKysJJlhwcmVsb2FkKFwmYm9keV8wMF8xNSk7CisrCSZYcHJlbG9hZChcJmJvZHlfMDBfMTUpOworKwkmWHByZWxvYWQoXCZib2R5XzAwXzE1KTsKKysJJlhwcmVsb2FkKFwmYm9keV8wMF8xNSk7CisrJGNvZGUuPTw8X19fOworKwlsZHIJJHQwLFskdDEsIzBdCisrCWFkZAkkQSwkQSwkdDIJCQlAIGgrPU1haihhLGIsYykgZnJvbSB0aGUgcGFzdAorKwlsZHIJJHQyLFskdDEsIzRdCisrCWxkcgkkdDMsWyR0MSwjOF0KKysJbGRyCSR0NCxbJHQxLCMxMl0KKysJYWRkCSRBLCRBLCR0MAkJCUAgYWNjdW11bGF0ZQorKwlsZHIJJHQwLFskdDEsIzE2XQorKwlhZGQJJEIsJEIsJHQyCisrCWxkcgkkdDIsWyR0MSwjMjBdCisrCWFkZAkkQywkQywkdDMKKysJbGRyCSR0MyxbJHQxLCMyNF0KKysJYWRkCSRELCRELCR0NAorKwlsZHIJJHQ0LFskdDEsIzI4XQorKwlhZGQJJEUsJEUsJHQwCisrCXN0cgkkQSxbJHQxXSwjNAorKwlhZGQJJEYsJEYsJHQyCisrCXN0cgkkQixbJHQxXSwjNAorKwlhZGQJJEcsJEcsJHQzCisrCXN0cgkkQyxbJHQxXSwjNAorKwlhZGQJJEgsJEgsJHQ0CisrCXN0cgkkRCxbJHQxXSwjNAorKwlzdG1pYQkkdDEseyRFLSRIfQorKworKwltb3ZuZQkkWGZlcixzcAorKwlsZHJuZQkkdDEsW3NwLCMwXQorKwllb3JuZQkkdDIsJHQyLCR0MgorKwlsZHJlcQlzcCxbc3AsIzc2XQkJCUAgcmVzdG9yZSBvcmlnaW5hbCBzcAorKwllb3JuZQkkdDMsJEIsJEMKKysJYm5lCS5MXzAwXzQ4CisrCisrCWxkbWlhCXNwISx7cjQtcjEyLHBjfQorKy5zaXplCXNoYTI1Nl9ibG9ja19kYXRhX29yZGVyX25lb24sLi1zaGEyNTZfYmxvY2tfZGF0YV9vcmRlcl9uZW9uCisrI2VuZGlmCisrX19fCisrfX19CisrIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworKyMgQVJNdjggc3R1ZmYKKysjCisre3t7CisrbXkgKCRBQkNELCRFRkdILCRhYmNkKT1tYXAoInEkXyIsKDAuLjIpKTsKKytteSBATVNHPW1hcCgicSRfIiwoOC4uMTEpKTsKKytteSAoJFcwLCRXMSwkQUJDRF9TQVZFLCRFRkdIX1NBVkUpPW1hcCgicSRfIiwoMTIuLjE1KSk7CisrbXkgJEt0Ymw9InIzIjsKKysKKyskY29kZS49PDxfX187CisrI2lmIF9fQVJNX0FSQ0hfXz49NworKy50eXBlCXNoYTI1Nl9ibG9ja19kYXRhX29yZGVyX2FybXY4LCVmdW5jdGlvbgorKy5hbGlnbgk1Cisrc2hhMjU2X2Jsb2NrX2RhdGFfb3JkZXJfYXJtdjg6CisrLkxBUk12ODoKKysJdmxkMS4zMgl7JEFCQ0QsJEVGR0h9LFskY3R4XQorKwlzdWIJJEt0YmwscjMsI3NoYTI1Nl9ibG9ja19kYXRhX29yZGVyLUsyNTYKKysKKysuTG9vcF92ODoKKysJdmxkMS44CQl7QE1TR1swXS1ATVNHWzFdfSxbJGlucF0hCisrCXZsZDEuOAkJe0BNU0dbMl0tQE1TR1szXX0sWyRpbnBdIQorKwl2bGQxLjMyCQl7JFcwfSxbJEt0YmxdIQorKwl2cmV2MzIuOAlATVNHWzBdLEBNU0dbMF0KKysJdnJldjMyLjgJQE1TR1sxXSxATVNHWzFdCisrCXZyZXYzMi44CUBNU0dbMl0sQE1TR1syXQorKwl2cmV2MzIuOAlATVNHWzNdLEBNU0dbM10KKysJdm1vdgkJJEFCQ0RfU0FWRSwkQUJDRAlAIG9mZmxvYWQKKysJdm1vdgkJJEVGR0hfU0FWRSwkRUZHSAorKwl0ZXEJCSRpbnAsJGxlbgorK19fXworK2ZvcigkaT0wOyRpPDEyOyRpKyspIHsKKyskY29kZS49PDxfX187CisrCXZsZDEuMzIJCXskVzF9LFskS3RibF0hCisrCXZhZGQuaTMyCSRXMCwkVzAsQE1TR1swXQorKwlzaGEyNTZzdTAJQE1TR1swXSxATVNHWzFdCisrCXZtb3YJCSRhYmNkLCRBQkNECisrCXNoYTI1NmgJCSRBQkNELCRFRkdILCRXMAorKwlzaGEyNTZoMgkkRUZHSCwkYWJjZCwkVzAKKysJc2hhMjU2c3UxCUBNU0dbMF0sQE1TR1syXSxATVNHWzNdCisrX19fCisrCSgkVzAsJFcxKT0oJFcxLCRXMCk7CXB1c2goQE1TRyxzaGlmdChATVNHKSk7CisrfQorKyRjb2RlLj08PF9fXzsKKysJdmxkMS4zMgkJeyRXMX0sWyRLdGJsXSEKKysJdmFkZC5pMzIJJFcwLCRXMCxATVNHWzBdCisrCXZtb3YJCSRhYmNkLCRBQkNECisrCXNoYTI1NmgJCSRBQkNELCRFRkdILCRXMAorKwlzaGEyNTZoMgkkRUZHSCwkYWJjZCwkVzAKKysKKysJdmxkMS4zMgkJeyRXMH0sWyRLdGJsXSEKKysJdmFkZC5pMzIJJFcxLCRXMSxATVNHWzFdCisrCXZtb3YJCSRhYmNkLCRBQkNECisrCXNoYTI1NmgJCSRBQkNELCRFRkdILCRXMQorKwlzaGEyNTZoMgkkRUZHSCwkYWJjZCwkVzEKKysKKysJdmxkMS4zMgkJeyRXMX0sWyRLdGJsXQorKwl2YWRkLmkzMgkkVzAsJFcwLEBNU0dbMl0KKysJc3ViCQkkS3RibCwkS3RibCwjMjU2LTE2CUAgcmV3aW5kCisrCXZtb3YJCSRhYmNkLCRBQkNECisrCXNoYTI1NmgJCSRBQkNELCRFRkdILCRXMAorKwlzaGEyNTZoMgkkRUZHSCwkYWJjZCwkVzAKKysKKysJdmFkZC5pMzIJJFcxLCRXMSxATVNHWzNdCisrCXZtb3YJCSRhYmNkLCRBQkNECisrCXNoYTI1NmgJCSRBQkNELCRFRkdILCRXMQorKwlzaGEyNTZoMgkkRUZHSCwkYWJjZCwkVzEKKysKKysJdmFkZC5pMzIJJEFCQ0QsJEFCQ0QsJEFCQ0RfU0FWRQorKwl2YWRkLmkzMgkkRUZHSCwkRUZHSCwkRUZHSF9TQVZFCisrCWJuZQkJLkxvb3BfdjgKKysKKysJdnN0MS4zMgkJeyRBQkNELCRFRkdIfSxbJGN0eF0KKysKKysJcmV0CQlAIGJ4IGxyCisrLnNpemUJc2hhMjU2X2Jsb2NrX2RhdGFfb3JkZXJfYXJtdjgsLi1zaGEyNTZfYmxvY2tfZGF0YV9vcmRlcl9hcm12OAorKyNlbmRpZgorK19fXworK319fQorKyRjb2RlLj08PF9fXzsKKysuYXNjaXogICJTSEEyNTYgYmxvY2sgdHJhbnNmb3JtIGZvciBBUk12NC9ORU9OL0FSTXY4LCBDUllQVE9HQU1TIGJ5IDxhcHByb1xAb3BlbnNzbC5vcmc+IgorIC5hbGlnbgkyCisrLmNvbW0gICBPUEVOU1NMX2FybWNhcF9QLDQsNAorIF9fXworIAorLSRjb2RlID1+IHMvXGAoW15cYF0qKVxgL2V2YWwgJDEvZ2VtOworLSRjb2RlID1+IHMvXGJieFxzK2xyXGIvLndvcmRcdDB4ZTEyZmZmMWUvZ207CSMgbWFrZSBpdCBwb3NzaWJsZSB0byBjb21waWxlIHdpdGggLW1hcmNoPWFybXY0CistcHJpbnQgJGNvZGU7CisreyAgIG15ICAlb3Bjb2RlID0gKAorKwkic2hhMjU2aCIJPT4gMHhmMzAwMGM0MCwJInNoYTI1NmgyIgk9PiAweGYzMTAwYzQwLAorKwkic2hhMjU2c3UwIgk9PiAweGYzYmEwM2MwLAkic2hhMjU2c3UxIgk9PiAweGYzMjAwYzQwCSk7CisrCisrICAgIHN1YiB1bnNoYTI1NiB7CisrCW15ICgkbW5lbW9uaWMsJGFyZyk9QF87CisrCisrCWlmICgkYXJnID1+IG0vcShbMC05XSspKD86LFxzKnEoWzAtOV0rKSk/LFxzKnEoWzAtOV0rKS9vKSB7CisrCSAgICBteSAkd29yZCA9ICRvcGNvZGV7JG1uZW1vbmljfXwoKCQxJjcpPDwxMyl8KCgkMSY4KTw8MTkpCisrCQkJCQkgfCgoJDImNyk8PDE3KXwoKCQyJjgpPDw0KQorKwkJCQkJIHwoKCQzJjcpPDwxKSB8KCgkMyY4KTw8Mik7CisrCSAgICAjIHNpbmNlIEFSTXY3IGluc3RydWN0aW9ucyBhcmUgYWx3YXlzIGVuY29kZWQgbGl0dGxlLWVuZGlhbi4KKysJICAgICMgY29ycmVjdCBzb2x1dGlvbiBpcyB0byB1c2UgLmluc3QgZGlyZWN0aXZlLCBidXQgb2xkZXIKKysJICAgICMgYXNzZW1ibGVycyBkb24ndCBpbXBsZW1lbnQgaXQ6LSgKKysJICAgIHNwcmludGYgIi5ieXRlXHQweCUwMngsMHglMDJ4LDB4JTAyeCwweCUwMnhcdEAgJXMgJXMiLAorKwkJCSR3b3JkJjB4ZmYsKCR3b3JkPj44KSYweGZmLAorKwkJCSgkd29yZD4+MTYpJjB4ZmYsKCR3b3JkPj4yNCkmMHhmZiwKKysJCQkkbW5lbW9uaWMsJGFyZzsKKysJfQorKyAgICB9CisrfQorKworK2ZvcmVhY2ggKHNwbGl0KCQvLCRjb2RlKSkgeworKworKwlzL1xgKFteXGBdKilcYC9ldmFsICQxL2dlbzsKKysKKysJcy9cYihzaGEyNTZcdyspXHMrKHEuKikvdW5zaGEyNTYoJDEsJDIpL2dlbzsKKysKKysJcy9cYnJldFxiL2J4CWxyL2dvCQlvcgorKwlzL1xiYnhccytsclxiLy53b3JkXHQweGUxMmZmZjFlL2dvOwkjIG1ha2UgaXQgcG9zc2libGUgdG8gY29tcGlsZSB3aXRoIC1tYXJjaD1hcm12NAorKworKwlwcmludCAkXywiXG4iOworK30KKysKKyBjbG9zZSBTVERPVVQ7ICMgZW5mb3JjZSBmbHVzaAorZGlmZiAtLWdpdCBhL2NyeXB0by9zaGEvYXNtL3NoYTUxMi1hcm12NC5wbCBiL2NyeXB0by9zaGEvYXNtL3NoYTUxMi1hcm12NC5wbAoraW5kZXggN2ZhZjM3Yi4uNzFhYTkzNSAxMDA2NDQKKy0tLSBhL2NyeXB0by9zaGEvYXNtL3NoYTUxMi1hcm12NC5wbAorKysrIGIvY3J5cHRvL3NoYS9hc20vc2hhNTEyLWFybXY0LnBsCitAQCAtNTY1LDcgKzU2NSw3IEBAICRjb2RlLj08PF9fXzsKKyAJYm5lCQkuTG9vcF9uZW9uCisgCisgCXZsZG1pYQlzcCEse2Q4LWQxNX0JCUAgZXBpbG9ndWUKKy0JYngJbHIKKysJcmV0CQkJCUAgYnggbHIKKyAjZW5kaWYKKyBfX18KKyB9CitAQCAtNTc4LDUgKzU3OCw2IEBAIF9fXworIAorICRjb2RlID1+IHMvXGAoW15cYF0qKVxgL2V2YWwgJDEvZ2VtOworICRjb2RlID1+IHMvXGJieFxzK2xyXGIvLndvcmRcdDB4ZTEyZmZmMWUvZ207CSMgbWFrZSBpdCBwb3NzaWJsZSB0byBjb21waWxlIHdpdGggLW1hcmNoPWFybXY0CisrJGNvZGUgPX4gcy9cYnJldFxiL2J4CWxyL2dtOworIHByaW50ICRjb2RlOworIGNsb3NlIFNURE9VVDsgIyBlbmZvcmNlIGZsdXNoCitkaWZmIC0tZ2l0IGEvY3J5cHRvL3NoYS9hc20vc2hhNTEyLWFybXY4LnBsIGIvY3J5cHRvL3NoYS9hc20vc2hhNTEyLWFybXY4LnBsCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uNjkzNWVkNgorLS0tIC9kZXYvbnVsbAorKysrIGIvY3J5cHRvL3NoYS9hc20vc2hhNTEyLWFybXY4LnBsCitAQCAtMCwwICsxLDQxNCBAQAorKyMhL3Vzci9iaW4vZW52IHBlcmwKKysjCisrIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKyMgV3JpdHRlbiBieSBBbmR5IFBvbHlha292IDxhcHByb0BvcGVuc3NsLm9yZz4gZm9yIHRoZSBPcGVuU1NMCisrIyBwcm9qZWN0LiBUaGUgbW9kdWxlIGlzLCBob3dldmVyLCBkdWFsIGxpY2Vuc2VkIHVuZGVyIE9wZW5TU0wgYW5kCisrIyBDUllQVE9HQU1TIGxpY2Vuc2VzIGRlcGVuZGluZyBvbiB3aGVyZSB5b3Ugb2J0YWluIGl0LiBGb3IgZnVydGhlcgorKyMgZGV0YWlscyBzZWUgaHR0cDovL3d3dy5vcGVuc3NsLm9yZy9+YXBwcm8vY3J5cHRvZ2Ftcy8uCisrIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKyMKKysjIFNIQTI1Ni81MTIgZm9yIEFSTXY4LgorKyMKKysjIFBlcmZvcm1hbmNlIGluIGN5Y2xlcyBwZXIgcHJvY2Vzc2VkIGJ5dGUgYW5kIGltcHJvdmVtZW50IGNvZWZmaWNpZW50CisrIyBvdmVyIGNvZGUgZ2VuZXJhdGVkIHdpdGggImRlZmF1bHQiIGNvbXBpbGVyOgorKyMKKysjCQlTSEEyNTYtaHcJU0hBMjU2KCopCVNIQTUxMgorKyMgQXBwbGUgQTcJMS45NwkJMTAuNSAoKzMzJSkJNi43MyAoLTElKCoqKSkKKysjIENvcnRleC1BNXgJbi9hCQluL2EJCW4vYQorKyMgCisrIyAoKikJU29mdHdhcmUgU0hBMjU2IHJlc3VsdHMgYXJlIG9mIGxlc3NlciByZWxldmFuY2UsIHByZXNlbnRlZAorKyMJbW9zdGx5IGZvciBpbmZvcm1hdGlvbmFsIHB1cnBvc2VzLgorKyMgKCoqKQlUaGUgcmVzdWx0IGlzIGEgdHJhZGUtb2ZmOiBpdCdzIHBvc3NpYmxlIHRvIGltcHJvdmUgaXQgYnkKKysjCTEwJSwgYnV0IGF0IHRoZSBjb3N0IG9mIDIwJSBsb3NzIG9uIENvcnRleC1BNXguCisrCisrJGZsYXZvdXI9c2hpZnQ7CisrJG91dHB1dD1zaGlmdDsKKytvcGVuIFNURE9VVCwiPiRvdXRwdXQiOworKworK2lmICgkb3V0cHV0ID1+IC81MTIvKSB7CisrCSRCSVRTPTUxMjsKKysJJFNaPTg7CisrCUBTaWdtYTA9KDI4LDM0LDM5KTsKKysJQFNpZ21hMT0oMTQsMTgsNDEpOworKwlAc2lnbWEwPSgxLCAgOCwgNyk7CisrCUBzaWdtYTE9KDE5LDYxLCA2KTsKKysJJHJvdW5kcz04MDsKKysJJHJlZ190PSJ4IjsKKyt9IGVsc2UgeworKwkkQklUUz0yNTY7CisrCSRTWj00OworKwlAU2lnbWEwPSggMiwxMywyMik7CisrCUBTaWdtYTE9KCA2LDExLDI1KTsKKysJQHNpZ21hMD0oIDcsMTgsIDMpOworKwlAc2lnbWExPSgxNywxOSwxMCk7CisrCSRyb3VuZHM9NjQ7CisrCSRyZWdfdD0idyI7CisrfQorKworKyRmdW5jPSJzaGEke0JJVFN9X2Jsb2NrX2RhdGFfb3JkZXIiOworKworKygkY3R4LCRpbnAsJG51bSwkS3RibCk9bWFwKCJ4JF8iLCgwLi4yLDMwKSk7CisrCisrQFg9bWFwKCIkcmVnX3QkXyIsKDMuLjE1LDAuLjIpKTsKKytAVj0oJEEsJEIsJEMsJEQsJEUsJEYsJEcsJEgpPW1hcCgiJHJlZ190JF8iLCgyMC4uMjcpKTsKKysoJHQwLCR0MSwkdDIsJHQzKT1tYXAoIiRyZWdfdCRfIiwoMTYsMTcsMTksMjgpKTsKKysKKytzdWIgQk9EWV8wMF94eCB7CisrbXkgKCRpLCRhLCRiLCRjLCRkLCRlLCRmLCRnLCRoKT1AXzsKKytteSAkaj0oJGkrMSkmMTU7CisrbXkgKCRUMCwkVDEsJFQyKT0oQFhbKCRpLTgpJjE1XSxAWFsoJGktOSkmMTVdLEBYWygkaS0xMCkmMTVdKTsKKysgICAkVDA9QFhbJGkrM10gaWYgKCRpPDExKTsKKysKKyskY29kZS49PDxfX18JaWYgKCRpPDE2KTsKKysjaWZuZGVmCV9fQVJNRUJfXworKwlyZXYJQFhbJGldLEBYWyRpXQkJCS8vICRpCisrI2VuZGlmCisrX19fCisrJGNvZGUuPTw8X19fCWlmICgkaTwxMyAmJiAoJGkmMSkpOworKwlsZHAJQFhbJGkrMV0sQFhbJGkrMl0sWyRpbnBdLCMyKiRTWgorK19fXworKyRjb2RlLj08PF9fXwlpZiAoJGk9PTEzKTsKKysJbGRwCUBYWzE0XSxAWFsxNV0sWyRpbnBdCisrX19fCisrJGNvZGUuPTw8X19fCWlmICgkaT49MTQpOworKwlsZHIJQFhbKCRpLTExKSYxNV0sW3NwLCNgJFNaKigoJGktMTEpJTQpYF0KKytfX18KKyskY29kZS49PDxfX18JaWYgKCRpPjAgJiYgJGk8MTYpOworKwlhZGQJJGEsJGEsJHQxCQkJLy8gaCs9U2lnbWEwKGEpCisrX19fCisrJGNvZGUuPTw8X19fCWlmICgkaT49MTEpOworKwlzdHIJQFhbKCRpLTgpJjE1XSxbc3AsI2AkU1oqKCgkaS04KSU0KWBdCisrX19fCisrIyBXaGlsZSBBUk12OCBzcGVjaWZpZXMgbWVyZ2VkIHJvdGF0ZS1uLWxvZ2ljYWwgb3BlcmF0aW9uIHN1Y2ggYXMKKysjICdlb3IgeCx5LHoscm9yI24nLCBpdCB3YXMgZm91bmQgdG8gbmVnYXRpdmVseSBhZmZlY3QgcGVyZm9ybWFuY2UKKysjIG9uIEFwcGxlIEE3LiBUaGUgcmVhc29uIHNlZW1zIHRvIGJlIHRoYXQgaXQgcmVxdWlyZXMgZXZlbiAneScgdG8KKysjIGJlIGF2YWlsYWJsZSBlYXJsaWVyLiBUaGlzIG1lYW5zIHRoYXQgc3VjaCBtZXJnZWQgaW5zdHJ1Y3Rpb24gaXMKKysjIG5vdCBuZWNlc3NhcmlseSBiZXN0IGNob2ljZSBvbiBjcml0aWNhbCBwYXRoLi4uIE9uIHRoZSBvdGhlciBoYW5kCisrIyBDb3J0ZXgtQTV4IGhhbmRsZXMgbWVyZ2VkIGluc3RydWN0aW9ucyBtdWNoIGJldHRlciB0aGFuIGRpc2pvaW50CisrIyByb3RhdGUgYW5kIGxvZ2ljYWwuLi4gU2VlICgqKikgZm9vdG5vdGUgYWJvdmUuCisrJGNvZGUuPTw8X19fCWlmICgkaTwxNSk7CisrCXJvcgkkdDAsJGUsIyRTaWdtYTFbMF0KKysJYWRkCSRoLCRoLCR0MgkJCS8vIGgrPUtbaV0KKysJZW9yCSRUMCwkZSwkZSxyb3IjYCRTaWdtYTFbMl0tJFNpZ21hMVsxXWAKKysJYW5kCSR0MSwkZiwkZQorKwliaWMJJHQyLCRnLCRlCisrCWFkZAkkaCwkaCxAWFskaSYxNV0JCQkvLyBoKz1YW2ldCisrCW9ycgkkdDEsJHQxLCR0MgkJCS8vIENoKGUsZixnKQorKwllb3IJJHQyLCRhLCRiCQkJLy8gYV5iLCBiXmMgaW4gbmV4dCByb3VuZAorKwllb3IJJHQwLCR0MCwkVDAscm9yIyRTaWdtYTFbMV0JLy8gU2lnbWExKGUpCisrCXJvcgkkVDAsJGEsIyRTaWdtYTBbMF0KKysJYWRkCSRoLCRoLCR0MQkJCS8vIGgrPUNoKGUsZixnKQorKwllb3IJJHQxLCRhLCRhLHJvciNgJFNpZ21hMFsyXS0kU2lnbWEwWzFdYAorKwlhZGQJJGgsJGgsJHQwCQkJLy8gaCs9U2lnbWExKGUpCisrCWFuZAkkdDMsJHQzLCR0MgkJCS8vIChiXmMpJj0oYV5iKQorKwlhZGQJJGQsJGQsJGgJCQkvLyBkKz1oCisrCWVvcgkkdDMsJHQzLCRiCQkJLy8gTWFqKGEsYixjKQorKwllb3IJJHQxLCRUMCwkdDEscm9yIyRTaWdtYTBbMV0JLy8gU2lnbWEwKGEpCisrCWFkZAkkaCwkaCwkdDMJCQkvLyBoKz1NYWooYSxiLGMpCisrCWxkcgkkdDMsWyRLdGJsXSwjJFNaCQkvLyAqSysrLCAkdDIgaW4gbmV4dCByb3VuZAorKwkvL2FkZAkkaCwkaCwkdDEJCQkvLyBoKz1TaWdtYTAoYSkKKytfX18KKyskY29kZS49PDxfX18JaWYgKCRpPj0xNSk7CisrCXJvcgkkdDAsJGUsIyRTaWdtYTFbMF0KKysJYWRkCSRoLCRoLCR0MgkJCS8vIGgrPUtbaV0KKysJcm9yCSRUMSxAWFsoJGorMSkmMTVdLCMkc2lnbWEwWzBdCisrCWFuZAkkdDEsJGYsJGUKKysJcm9yCSRUMixAWFsoJGorMTQpJjE1XSwjJHNpZ21hMVswXQorKwliaWMJJHQyLCRnLCRlCisrCXJvcgkkVDAsJGEsIyRTaWdtYTBbMF0KKysJYWRkCSRoLCRoLEBYWyRpJjE1XQkJCS8vIGgrPVhbaV0KKysJZW9yCSR0MCwkdDAsJGUscm9yIyRTaWdtYTFbMV0KKysJZW9yCSRUMSwkVDEsQFhbKCRqKzEpJjE1XSxyb3IjJHNpZ21hMFsxXQorKwlvcnIJJHQxLCR0MSwkdDIJCQkvLyBDaChlLGYsZykKKysJZW9yCSR0MiwkYSwkYgkJCS8vIGFeYiwgYl5jIGluIG5leHQgcm91bmQKKysJZW9yCSR0MCwkdDAsJGUscm9yIyRTaWdtYTFbMl0JLy8gU2lnbWExKGUpCisrCWVvcgkkVDAsJFQwLCRhLHJvciMkU2lnbWEwWzFdCisrCWFkZAkkaCwkaCwkdDEJCQkvLyBoKz1DaChlLGYsZykKKysJYW5kCSR0MywkdDMsJHQyCQkJLy8gKGJeYykmPShhXmIpCisrCWVvcgkkVDIsJFQyLEBYWygkaisxNCkmMTVdLHJvciMkc2lnbWExWzFdCisrCWVvcgkkVDEsJFQxLEBYWygkaisxKSYxNV0sbHNyIyRzaWdtYTBbMl0JLy8gc2lnbWEwKFhbaSsxXSkKKysJYWRkCSRoLCRoLCR0MAkJCS8vIGgrPVNpZ21hMShlKQorKwllb3IJJHQzLCR0MywkYgkJCS8vIE1haihhLGIsYykKKysJZW9yCSR0MSwkVDAsJGEscm9yIyRTaWdtYTBbMl0JLy8gU2lnbWEwKGEpCisrCWVvcgkkVDIsJFQyLEBYWygkaisxNCkmMTVdLGxzciMkc2lnbWExWzJdCS8vIHNpZ21hMShYW2krMTRdKQorKwlhZGQJQFhbJGpdLEBYWyRqXSxAWFsoJGorOSkmMTVdCisrCWFkZAkkZCwkZCwkaAkJCS8vIGQrPWgKKysJYWRkCSRoLCRoLCR0MwkJCS8vIGgrPU1haihhLGIsYykKKysJbGRyCSR0MyxbJEt0YmxdLCMkU1oJCS8vICpLKyssICR0MiBpbiBuZXh0IHJvdW5kCisrCWFkZAlAWFskal0sQFhbJGpdLCRUMQorKwlhZGQJJGgsJGgsJHQxCQkJLy8gaCs9U2lnbWEwKGEpCisrCWFkZAlAWFskal0sQFhbJGpdLCRUMgorK19fXworKwkoJHQyLCR0Myk9KCR0MywkdDIpOworK30KKysKKyskY29kZS49PDxfX187CisrI2luY2x1ZGUgImFybV9hcmNoLmgiCisrCisrLnRleHQKKysKKysuZ2xvYmwJJGZ1bmMKKysudHlwZQkkZnVuYywlZnVuY3Rpb24KKysuYWxpZ24JNgorKyRmdW5jOgorK19fXworKyRjb2RlLj08PF9fXwlpZiAoJFNaPT00KTsKKysJbGRyCXgxNiwuTE9QRU5TU0xfYXJtY2FwX1AKKysJYWRyCXgxNywuTE9QRU5TU0xfYXJtY2FwX1AKKysJYWRkCXgxNix4MTYseDE3CisrCWxkcgl3MTYsW3gxNl0KKysJdHN0CXcxNiwjQVJNVjhfU0hBMjU2CisrCWIubmUJLkx2OF9lbnRyeQorK19fXworKyRjb2RlLj08PF9fXzsKKysJc3RwCXgyOSx4MzAsW3NwLCMtMTI4XSEKKysJYWRkCXgyOSxzcCwjMAorKworKwlzdHAJeDE5LHgyMCxbc3AsIzE2XQorKwlzdHAJeDIxLHgyMixbc3AsIzMyXQorKwlzdHAJeDIzLHgyNCxbc3AsIzQ4XQorKwlzdHAJeDI1LHgyNixbc3AsIzY0XQorKwlzdHAJeDI3LHgyOCxbc3AsIzgwXQorKwlzdWIJc3Asc3AsIzQqJFNaCisrCisrCWxkcAkkQSwkQixbJGN0eF0JCQkJLy8gbG9hZCBjb250ZXh0CisrCWxkcAkkQywkRCxbJGN0eCwjMiokU1pdCisrCWxkcAkkRSwkRixbJGN0eCwjNCokU1pdCisrCWFkZAkkbnVtLCRpbnAsJG51bSxsc2wjYGxvZygxNiokU1opL2xvZygyKWAJLy8gZW5kIG9mIGlucHV0CisrCWxkcAkkRywkSCxbJGN0eCwjNiokU1pdCisrCWFkcgkkS3RibCxLJEJJVFMKKysJc3RwCSRjdHgsJG51bSxbeDI5LCM5Nl0KKysKKysuTG9vcDoKKysJbGRwCUBYWzBdLEBYWzFdLFskaW5wXSwjMiokU1oKKysJbGRyCSR0MixbJEt0YmxdLCMkU1oJCQkvLyAqSysrCisrCWVvcgkkdDMsJEIsJEMJCQkJLy8gbWFnaWMgc2VlZAorKwlzdHIJJGlucCxbeDI5LCMxMTJdCisrX19fCisrZm9yICgkaT0wOyRpPDE2OyRpKyspCXsgJkJPRFlfMDBfeHgoJGksQFYpOyB1bnNoaWZ0KEBWLHBvcChAVikpOyB9CisrJGNvZGUuPSIuTG9vcF8xNl94eDpcbiI7CisrZm9yICg7JGk8MzI7JGkrKykJeyAmQk9EWV8wMF94eCgkaSxAVik7IHVuc2hpZnQoQFYscG9wKEBWKSk7IH0KKyskY29kZS49PDxfX187CisrCWNibnoJJHQyLC5Mb29wXzE2X3h4CisrCisrCWxkcAkkY3R4LCRudW0sW3gyOSwjOTZdCisrCWxkcgkkaW5wLFt4MjksIzExMl0KKysJc3ViCSRLdGJsLCRLdGJsLCNgJFNaKigkcm91bmRzKzEpYAkJLy8gcmV3aW5kCisrCisrCWxkcAlAWFswXSxAWFsxXSxbJGN0eF0KKysJbGRwCUBYWzJdLEBYWzNdLFskY3R4LCMyKiRTWl0KKysJYWRkCSRpbnAsJGlucCwjMTQqJFNaCQkJLy8gYWR2YW5jZSBpbnB1dCBwb2ludGVyCisrCWxkcAlAWFs0XSxAWFs1XSxbJGN0eCwjNCokU1pdCisrCWFkZAkkQSwkQSxAWFswXQorKwlsZHAJQFhbNl0sQFhbN10sWyRjdHgsIzYqJFNaXQorKwlhZGQJJEIsJEIsQFhbMV0KKysJYWRkCSRDLCRDLEBYWzJdCisrCWFkZAkkRCwkRCxAWFszXQorKwlzdHAJJEEsJEIsWyRjdHhdCisrCWFkZAkkRSwkRSxAWFs0XQorKwlhZGQJJEYsJEYsQFhbNV0KKysJc3RwCSRDLCRELFskY3R4LCMyKiRTWl0KKysJYWRkCSRHLCRHLEBYWzZdCisrCWFkZAkkSCwkSCxAWFs3XQorKwljbXAJJGlucCwkbnVtCisrCXN0cAkkRSwkRixbJGN0eCwjNCokU1pdCisrCXN0cAkkRywkSCxbJGN0eCwjNiokU1pdCisrCWIubmUJLkxvb3AKKysKKysJbGRwCXgxOSx4MjAsW3gyOSwjMTZdCisrCWFkZAlzcCxzcCwjNCokU1oKKysJbGRwCXgyMSx4MjIsW3gyOSwjMzJdCisrCWxkcAl4MjMseDI0LFt4MjksIzQ4XQorKwlsZHAJeDI1LHgyNixbeDI5LCM2NF0KKysJbGRwCXgyNyx4MjgsW3gyOSwjODBdCisrCWxkcAl4MjkseDMwLFtzcF0sIzEyOAorKwlyZXQKKysuc2l6ZQkkZnVuYywuLSRmdW5jCisrCisrLmFsaWduCTYKKysudHlwZQlLJEJJVFMsJW9iamVjdAorK0skQklUUzoKKytfX18KKyskY29kZS49PDxfX18gaWYgKCRTWj09OCk7CisrCS5xdWFkCTB4NDI4YTJmOThkNzI4YWUyMiwweDcxMzc0NDkxMjNlZjY1Y2QKKysJLnF1YWQJMHhiNWMwZmJjZmVjNGQzYjJmLDB4ZTliNWRiYTU4MTg5ZGJiYworKwkucXVhZAkweDM5NTZjMjViZjM0OGI1MzgsMHg1OWYxMTFmMWI2MDVkMDE5CisrCS5xdWFkCTB4OTIzZjgyYTRhZjE5NGY5YiwweGFiMWM1ZWQ1ZGE2ZDgxMTgKKysJLnF1YWQJMHhkODA3YWE5OGEzMDMwMjQyLDB4MTI4MzViMDE0NTcwNmZiZQorKwkucXVhZAkweDI0MzE4NWJlNGVlNGIyOGMsMHg1NTBjN2RjM2Q1ZmZiNGUyCisrCS5xdWFkCTB4NzJiZTVkNzRmMjdiODk2ZiwweDgwZGViMWZlM2IxNjk2YjEKKysJLnF1YWQJMHg5YmRjMDZhNzI1YzcxMjM1LDB4YzE5YmYxNzRjZjY5MjY5NAorKwkucXVhZAkweGU0OWI2OWMxOWVmMTRhZDIsMHhlZmJlNDc4NjM4NGYyNWUzCisrCS5xdWFkCTB4MGZjMTlkYzY4YjhjZDViNSwweDI0MGNhMWNjNzdhYzljNjUKKysJLnF1YWQJMHgyZGU5MmM2ZjU5MmIwMjc1LDB4NGE3NDg0YWE2ZWE2ZTQ4MworKwkucXVhZAkweDVjYjBhOWRjYmQ0MWZiZDQsMHg3NmY5ODhkYTgzMTE1M2I1CisrCS5xdWFkCTB4OTgzZTUxNTJlZTY2ZGZhYiwweGE4MzFjNjZkMmRiNDMyMTAKKysJLnF1YWQJMHhiMDAzMjdjODk4ZmIyMTNmLDB4YmY1OTdmYzdiZWVmMGVlNAorKwkucXVhZAkweGM2ZTAwYmYzM2RhODhmYzIsMHhkNWE3OTE0NzkzMGFhNzI1CisrCS5xdWFkCTB4MDZjYTYzNTFlMDAzODI2ZiwweDE0MjkyOTY3MGEwZTZlNzAKKysJLnF1YWQJMHgyN2I3MGE4NTQ2ZDIyZmZjLDB4MmUxYjIxMzg1YzI2YzkyNgorKwkucXVhZAkweDRkMmM2ZGZjNWFjNDJhZWQsMHg1MzM4MGQxMzlkOTViM2RmCisrCS5xdWFkCTB4NjUwYTczNTQ4YmFmNjNkZSwweDc2NmEwYWJiM2M3N2IyYTgKKysJLnF1YWQJMHg4MWMyYzkyZTQ3ZWRhZWU2LDB4OTI3MjJjODUxNDgyMzUzYgorKwkucXVhZAkweGEyYmZlOGExNGNmMTAzNjQsMHhhODFhNjY0YmJjNDIzMDAxCisrCS5xdWFkCTB4YzI0YjhiNzBkMGY4OTc5MSwweGM3NmM1MWEzMDY1NGJlMzAKKysJLnF1YWQJMHhkMTkyZTgxOWQ2ZWY1MjE4LDB4ZDY5OTA2MjQ1NTY1YTkxMAorKwkucXVhZAkweGY0MGUzNTg1NTc3MTIwMmEsMHgxMDZhYTA3MDMyYmJkMWI4CisrCS5xdWFkCTB4MTlhNGMxMTZiOGQyZDBjOCwweDFlMzc2YzA4NTE0MWFiNTMKKysJLnF1YWQJMHgyNzQ4Nzc0Y2RmOGVlYjk5LDB4MzRiMGJjYjVlMTliNDhhOAorKwkucXVhZAkweDM5MWMwY2IzYzVjOTVhNjMsMHg0ZWQ4YWE0YWUzNDE4YWNiCisrCS5xdWFkCTB4NWI5Y2NhNGY3NzYzZTM3MywweDY4MmU2ZmYzZDZiMmI4YTMKKysJLnF1YWQJMHg3NDhmODJlZTVkZWZiMmZjLDB4NzhhNTYzNmY0MzE3MmY2MAorKwkucXVhZAkweDg0Yzg3ODE0YTFmMGFiNzIsMHg4Y2M3MDIwODFhNjQzOWVjCisrCS5xdWFkCTB4OTBiZWZmZmEyMzYzMWUyOCwweGE0NTA2Y2ViZGU4MmJkZTkKKysJLnF1YWQJMHhiZWY5YTNmN2IyYzY3OTE1LDB4YzY3MTc4ZjJlMzcyNTMyYgorKwkucXVhZAkweGNhMjczZWNlZWEyNjYxOWMsMHhkMTg2YjhjNzIxYzBjMjA3CisrCS5xdWFkCTB4ZWFkYTdkZDZjZGUwZWIxZSwweGY1N2Q0ZjdmZWU2ZWQxNzgKKysJLnF1YWQJMHgwNmYwNjdhYTcyMTc2ZmJhLDB4MGE2MzdkYzVhMmM4OThhNgorKwkucXVhZAkweDExM2Y5ODA0YmVmOTBkYWUsMHgxYjcxMGIzNTEzMWM0NzFiCisrCS5xdWFkCTB4MjhkYjc3ZjUyMzA0N2Q4NCwweDMyY2FhYjdiNDBjNzI0OTMKKysJLnF1YWQJMHgzYzllYmUwYTE1YzliZWJjLDB4NDMxZDY3YzQ5YzEwMGQ0YworKwkucXVhZAkweDRjYzVkNGJlY2IzZTQyYjYsMHg1OTdmMjk5Y2ZjNjU3ZTJhCisrCS5xdWFkCTB4NWZjYjZmYWIzYWQ2ZmFlYywweDZjNDQxOThjNGE0NzU4MTcKKysJLnF1YWQJMAkvLyB0ZXJtaW5hdG9yCisrX19fCisrJGNvZGUuPTw8X19fIGlmICgkU1o9PTQpOworKwkubG9uZwkweDQyOGEyZjk4LDB4NzEzNzQ0OTEsMHhiNWMwZmJjZiwweGU5YjVkYmE1CisrCS5sb25nCTB4Mzk1NmMyNWIsMHg1OWYxMTFmMSwweDkyM2Y4MmE0LDB4YWIxYzVlZDUKKysJLmxvbmcJMHhkODA3YWE5OCwweDEyODM1YjAxLDB4MjQzMTg1YmUsMHg1NTBjN2RjMworKwkubG9uZwkweDcyYmU1ZDc0LDB4ODBkZWIxZmUsMHg5YmRjMDZhNywweGMxOWJmMTc0CisrCS5sb25nCTB4ZTQ5YjY5YzEsMHhlZmJlNDc4NiwweDBmYzE5ZGM2LDB4MjQwY2ExY2MKKysJLmxvbmcJMHgyZGU5MmM2ZiwweDRhNzQ4NGFhLDB4NWNiMGE5ZGMsMHg3NmY5ODhkYQorKwkubG9uZwkweDk4M2U1MTUyLDB4YTgzMWM2NmQsMHhiMDAzMjdjOCwweGJmNTk3ZmM3CisrCS5sb25nCTB4YzZlMDBiZjMsMHhkNWE3OTE0NywweDA2Y2E2MzUxLDB4MTQyOTI5NjcKKysJLmxvbmcJMHgyN2I3MGE4NSwweDJlMWIyMTM4LDB4NGQyYzZkZmMsMHg1MzM4MGQxMworKwkubG9uZwkweDY1MGE3MzU0LDB4NzY2YTBhYmIsMHg4MWMyYzkyZSwweDkyNzIyYzg1CisrCS5sb25nCTB4YTJiZmU4YTEsMHhhODFhNjY0YiwweGMyNGI4YjcwLDB4Yzc2YzUxYTMKKysJLmxvbmcJMHhkMTkyZTgxOSwweGQ2OTkwNjI0LDB4ZjQwZTM1ODUsMHgxMDZhYTA3MAorKwkubG9uZwkweDE5YTRjMTE2LDB4MWUzNzZjMDgsMHgyNzQ4Nzc0YywweDM0YjBiY2I1CisrCS5sb25nCTB4MzkxYzBjYjMsMHg0ZWQ4YWE0YSwweDViOWNjYTRmLDB4NjgyZTZmZjMKKysJLmxvbmcJMHg3NDhmODJlZSwweDc4YTU2MzZmLDB4ODRjODc4MTQsMHg4Y2M3MDIwOAorKwkubG9uZwkweDkwYmVmZmZhLDB4YTQ1MDZjZWIsMHhiZWY5YTNmNywweGM2NzE3OGYyCisrCS5sb25nCTAJLy90ZXJtaW5hdG9yCisrX19fCisrJGNvZGUuPTw8X19fOworKy5zaXplCUskQklUUywuLUskQklUUworKy5hbGlnbgkzCisrLkxPUEVOU1NMX2FybWNhcF9QOgorKwkucXVhZAlPUEVOU1NMX2FybWNhcF9QLS4KKysuYXNjaXoJIlNIQSRCSVRTIGJsb2NrIHRyYW5zZm9ybSBmb3IgQVJNdjgsIENSWVBUT0dBTVMgYnkgPGFwcHJvXEBvcGVuc3NsLm9yZz4iCisrLmFsaWduCTIKKytfX18KKysKKytpZiAoJFNaPT00KSB7CisrbXkgJEt0Ymw9IngzIjsKKysKKytteSAoJEFCQ0QsJEVGR0gsJGFiY2QpPW1hcCgidiRfLjE2YiIsKDAuLjIpKTsKKytteSBATVNHPW1hcCgidiRfLjE2YiIsKDQuLjcpKTsKKytteSAoJFcwLCRXMSk9KCJ2MTYuNHMiLCJ2MTcuNHMiKTsKKytteSAoJEFCQ0RfU0FWRSwkRUZHSF9TQVZFKT0oInYxOC4xNmIiLCJ2MTkuMTZiIik7CisrCisrJGNvZGUuPTw8X19fOworKy50eXBlCXNoYTI1Nl9ibG9ja19hcm12OCwlZnVuY3Rpb24KKysuYWxpZ24JNgorK3NoYTI1Nl9ibG9ja19hcm12ODoKKysuTHY4X2VudHJ5OgorKwlzdHAJCXgyOSx4MzAsW3NwLCMtMTZdIQorKwlhZGQJCXgyOSxzcCwjMAorKworKwlsZDEuMzIJCXskQUJDRCwkRUZHSH0sWyRjdHhdCisrCWFkcgkJJEt0YmwsSzI1NgorKworKy5Mb29wX2h3OgorKwlsZDEJCXtATVNHWzBdLUBNU0dbM119LFskaW5wXSwjNjQKKysJc3ViCQkkbnVtLCRudW0sIzEKKysJbGQxLjMyCQl7JFcwfSxbJEt0YmxdLCMxNgorKwlyZXYzMgkJQE1TR1swXSxATVNHWzBdCisrCXJldjMyCQlATVNHWzFdLEBNU0dbMV0KKysJcmV2MzIJCUBNU0dbMl0sQE1TR1syXQorKwlyZXYzMgkJQE1TR1szXSxATVNHWzNdCisrCW9ycgkJJEFCQ0RfU0FWRSwkQUJDRCwkQUJDRAkJLy8gb2ZmbG9hZAorKwlvcnIJCSRFRkdIX1NBVkUsJEVGR0gsJEVGR0gKKytfX18KKytmb3IoJGk9MDskaTwxMjskaSsrKSB7CisrJGNvZGUuPTw8X19fOworKwlsZDEuMzIJCXskVzF9LFskS3RibF0sIzE2CisrCWFkZC5pMzIJCSRXMCwkVzAsQE1TR1swXQorKwlzaGEyNTZzdTAJQE1TR1swXSxATVNHWzFdCisrCW9ycgkJJGFiY2QsJEFCQ0QsJEFCQ0QKKysJc2hhMjU2aAkJJEFCQ0QsJEVGR0gsJFcwCisrCXNoYTI1NmgyCSRFRkdILCRhYmNkLCRXMAorKwlzaGEyNTZzdTEJQE1TR1swXSxATVNHWzJdLEBNU0dbM10KKytfX18KKysJKCRXMCwkVzEpPSgkVzEsJFcwKTsJcHVzaChATVNHLHNoaWZ0KEBNU0cpKTsKKyt9CisrJGNvZGUuPTw8X19fOworKwlsZDEuMzIJCXskVzF9LFskS3RibF0sIzE2CisrCWFkZC5pMzIJCSRXMCwkVzAsQE1TR1swXQorKwlvcnIJCSRhYmNkLCRBQkNELCRBQkNECisrCXNoYTI1NmgJCSRBQkNELCRFRkdILCRXMAorKwlzaGEyNTZoMgkkRUZHSCwkYWJjZCwkVzAKKysKKysJbGQxLjMyCQl7JFcwfSxbJEt0YmxdLCMxNgorKwlhZGQuaTMyCQkkVzEsJFcxLEBNU0dbMV0KKysJb3JyCQkkYWJjZCwkQUJDRCwkQUJDRAorKwlzaGEyNTZoCQkkQUJDRCwkRUZHSCwkVzEKKysJc2hhMjU2aDIJJEVGR0gsJGFiY2QsJFcxCisrCisrCWxkMS4zMgkJeyRXMX0sWyRLdGJsXQorKwlhZGQuaTMyCQkkVzAsJFcwLEBNU0dbMl0KKysJc3ViCQkkS3RibCwkS3RibCwjJHJvdW5kcyokU1otMTYJLy8gcmV3aW5kCisrCW9ycgkJJGFiY2QsJEFCQ0QsJEFCQ0QKKysJc2hhMjU2aAkJJEFCQ0QsJEVGR0gsJFcwCisrCXNoYTI1NmgyCSRFRkdILCRhYmNkLCRXMAorKworKwlhZGQuaTMyCQkkVzEsJFcxLEBNU0dbM10KKysJb3JyCQkkYWJjZCwkQUJDRCwkQUJDRAorKwlzaGEyNTZoCQkkQUJDRCwkRUZHSCwkVzEKKysJc2hhMjU2aDIJJEVGR0gsJGFiY2QsJFcxCisrCisrCWFkZC5pMzIJCSRBQkNELCRBQkNELCRBQkNEX1NBVkUKKysJYWRkLmkzMgkJJEVGR0gsJEVGR0gsJEVGR0hfU0FWRQorKworKwljYm56CQkkbnVtLC5Mb29wX2h3CisrCisrCXN0MS4zMgkJeyRBQkNELCRFRkdIfSxbJGN0eF0KKysKKysJbGRyCQl4MjksW3NwXSwjMTYKKysJcmV0CisrLnNpemUJc2hhMjU2X2Jsb2NrX2FybXY4LC4tc2hhMjU2X2Jsb2NrX2FybXY4CisrX19fCisrfQorKworKyRjb2RlLj08PF9fXzsKKysuY29tbQlPUEVOU1NMX2FybWNhcF9QLDQsNAorK19fXworKworK3sgICBteSAgJW9wY29kZSA9ICgKKysJInNoYTI1NmgiCT0+IDB4NWUwMDQwMDAsCSJzaGEyNTZoMiIJPT4gMHg1ZTAwNTAwMCwKKysJInNoYTI1NnN1MCIJPT4gMHg1ZTI4MjgwMCwJInNoYTI1NnN1MSIJPT4gMHg1ZTAwNjAwMAkpOworKworKyAgICBzdWIgdW5zaGEyNTYgeworKwlteSAoJG1uZW1vbmljLCRhcmcpPUBfOworKworKwkkYXJnID1+IG0vW3F2XShbMC05XSspW14sXSosXHMqW3F2XShbMC05XSspW14sXSooPzosXHMqW3F2XShbMC05XSspKT8vbworKwkmJgorKwlzcHJpbnRmICIuaW5zdFx0MHglMDh4XHQvLyVzICVzIiwKKysJCQkkb3Bjb2RleyRtbmVtb25pY318JDF8KCQyPDw1KXwoJDM8PDE2KSwKKysJCQkkbW5lbW9uaWMsJGFyZzsKKysgICAgfQorK30KKysKKytmb3JlYWNoKHNwbGl0KCJcbiIsJGNvZGUpKSB7CisrCisrCXMvXGAoW15cYF0qKVxgL2V2YWwoJDEpL2dlbzsKKysKKysJcy9cYihzaGEyNTZcdyspXHMrKFtxdl0uKikvdW5zaGEyNTYoJDEsJDIpL2dlbzsKKysKKysJcy9cLlx3PzMyXGIvL28JCWFuZCBzL1wuMTZiL1wuNHMvZ287CisrCW0vKGxkfHN0KTFbXlxbXStcWzBcXS9vCWFuZCBzL1wuNHMvXC5zL2dvOworKworKwlwcmludCAkXywiXG4iOworK30KKysKKytjbG9zZSBTVERPVVQ7CmRpZmYgLS1naXQgYS9wYXRjaGVzLzAwMTUtcHNrX2NsaWVudF9jYWxsYmFja18xMjhfYnl0ZV9pZF9idWcucGF0Y2ggYi9wYXRjaGVzLzAwMTUtcHNrX2NsaWVudF9jYWxsYmFja18xMjhfYnl0ZV9pZF9idWcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2IwNmU3MQotLS0gL2Rldi9udWxsCisrKyBiL3BhdGNoZXMvMDAxNS1wc2tfY2xpZW50X2NhbGxiYWNrXzEyOF9ieXRlX2lkX2J1Zy5wYXRjaApAQCAtMCwwICsxLDgxIEBACitGcm9tIGM4YjFmN2VjNTY3MDRjMTExNjc5NWFlYzljYTYxZGI2NTRiNDMzYmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4IEtseXViaW4gPGtseXViaW5AZ29vZ2xlLmNvbT4KK0RhdGU6IE1vbiwgMTkgTWF5IDIwMTQgMTE6Mjc6MzMgLTA3MDAKK1N1YmplY3Q6IHBza19jbGllbnRfY2FsbGJhY2ssIDEyOC1ieXRlIGlkIGJ1Zy4KKworRml4IGEgYnVnIGluIGhhbmRsaW5nIG9mIDEyOCBieXRlIGxvbmcgUFNLIGlkZW50aXR5IGluCitwc2tfY2xpZW50X2NhbGxiYWNrLgorCitPcGVuU1NMIHN1cHBvcnRzIFBTSyBpZGVudGl0aWVzIG9mIHVwIHRvIChhbmQgaW5jbHVkaW5nKSAxMjggYnl0ZXMgaW4KK2xlbmd0aC4gUFNLIGlkZW50aXR5IGlzIG9idGFpbmVkIHZpYSB0aGUgcHNrX2NsaWVudF9jYWxsYmFjaywKK2ltcGxlbWVudG9ycyBvZiB3aGljaCBhcmUgZXhwZWN0ZWQgdG8gcHJvdmlkZSBhIE5VTEwtdGVybWluYXRlZAoraWRlbnRpdHkuIEhvd2V2ZXIsIHRoZSBjYWxsYmFjayBpcyBpbnZva2VkIHdpdGggb25seSAxMjggYnl0ZXMgb2YKK3N0b3JhZ2UgdGh1cyBtYWtpbmcgaXQgaW1wb3NzaWJsZSB0byByZXR1cm4gYSAxMjggYnl0ZSBsb25nIGlkZW50aXR5IGFuZAordGhlIHJlcXVpcmVkIGFkZGl0aW9uYWwgTlVMTCBieXRlLgorCitUaGlzIENMIGZpeGVzIHRoZSBpc3N1ZSBieSBwYXNzaW5nIGluIGEgMTI5IGJ5dGUgbG9uZyBidWZmZXIgaW50byB0aGUKK3Bza19jbGllbnRfY2FsbGJhY2suIEFzIGEgc2FmZXR5IHByZWNhdXRpb24sIHRoaXMgQ0wgYWxzbyB6ZXJvZXMgb3V0IHRoZQorYnVmZmVyIGJlZm9yZSBwYXNzaW5nIGl0IGludG8gdGhlIGNhbGxiYWNrLCB1c2VzIHN0cm5sZW4gZm9yIG9idGFpbmluZwordGhlIGxlbmd0aCBvZiB0aGUgaWRlbnRpdHkgcmV0dXJuZWQgYnkgdGhlIGNhbGxiYWNrLCBhbmQgYWJvcnRzIHRoZQoraGFuZHNoYWtlIGlmIHRoZSBpZGVudGl0eSAod2l0aG91dCB0aGUgTlVMTCB0ZXJtaW5hdG9yKSBpcyBsb25nZXIgdGhhbgorMTI4IGJ5dGVzLgorLS0tCisgc3NsL3MzX2NsbnQuYyB8IDIwICsrKysrKysrKysrKysrLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zc2wvczNfY2xudC5jIGIvc3NsL3MzX2NsbnQuYworaW5kZXggMDNiOTZlOC4uMGUyMmFmYyAxMDA2NDQKKy0tLSBhL3NzbC9zM19jbG50LmMKKysrKyBiL3NzbC9zM19jbG50LmMKK0BAIC0yMzI4LDcgKzIzMjgsOCBAQCBpbnQgc3NsM19zZW5kX2NsaWVudF9rZXlfZXhjaGFuZ2UoU1NMICpzKQorICNpZm5kZWYgT1BFTlNTTF9OT19QU0sKKyAJCWlmIChhbGdfYSAmIFNTTF9hUFNLKQorIAkJCXsKKy0JCQljaGFyIGlkZW50aXR5W1BTS19NQVhfSURFTlRJVFlfTEVOXTsKKysJCQljaGFyIGlkZW50aXR5W1BTS19NQVhfSURFTlRJVFlfTEVOICsgMV07CisrCQkJc2l6ZV90IGlkZW50aXR5X2xlbjsKKyAJCQl1bnNpZ25lZCBjaGFyICp0ID0gTlVMTDsKKyAJCQl1bnNpZ25lZCBjaGFyIHByZV9tc1tQU0tfTUFYX1BTS19MRU4qMis0XTsKKyAJCQl1bnNpZ25lZCBpbnQgcHJlX21zX2xlbiA9IDA7CitAQCAtMjM0Miw4ICsyMzQzLDkgQEAgaW50IHNzbDNfc2VuZF9jbGllbnRfa2V5X2V4Y2hhbmdlKFNTTCAqcykKKyAJCQkJZ290byBlcnI7CisgCQkJCX0KKyAKKysJCQltZW1zZXQoaWRlbnRpdHksIDAsIHNpemVvZihpZGVudGl0eSkpOworIAkJCXBza19sZW4gPSBzLT5wc2tfY2xpZW50X2NhbGxiYWNrKHMsIHMtPnNlc3Npb24tPnBza19pZGVudGl0eV9oaW50LAorLQkJCQlpZGVudGl0eSwgUFNLX01BWF9JREVOVElUWV9MRU4sIHBzaywgc2l6ZW9mKHBzaykpOworKwkJCQlpZGVudGl0eSwgc2l6ZW9mKGlkZW50aXR5KSwgcHNrLCBzaXplb2YocHNrKSk7CisgCQkJaWYgKHBza19sZW4gPiBQU0tfTUFYX1BTS19MRU4pCisgCQkJCXsKKyAJCQkJU1NMZXJyKFNTTF9GX1NTTDNfU0VORF9DTElFTlRfS0VZX0VYQ0hBTkdFLAorQEAgLTIzNTYsNiArMjM1OCwxMyBAQCBpbnQgc3NsM19zZW5kX2NsaWVudF9rZXlfZXhjaGFuZ2UoU1NMICpzKQorIAkJCQkJU1NMX1JfUFNLX0lERU5USVRZX05PVF9GT1VORCk7CisgCQkJCWdvdG8gcHNrX2VycjsKKyAJCQkJfQorKwkJCWlkZW50aXR5X2xlbiA9IHN0cm5sZW4oaWRlbnRpdHksIHNpemVvZihpZGVudGl0eSkpOworKwkJCWlmIChpZGVudGl0eV9sZW4gPiBQU0tfTUFYX0lERU5USVRZX0xFTikKKysJCQkJeworKwkJCQlTU0xlcnIoU1NMX0ZfU1NMM19TRU5EX0NMSUVOVF9LRVlfRVhDSEFOR0UsCisrCQkJCQlFUlJfUl9JTlRFUk5BTF9FUlJPUik7CisrCQkJCWdvdG8gcHNrX2VycjsKKysJCQkJfQorIAorIAkJCWlmICghKGFsZ19rICYgU1NMX2tFRUNESCkpCisgCQkJCXsKK0BAIC0yMzcyLDEwICsyMzgxLDkgQEAgaW50IHNzbDNfc2VuZF9jbGllbnRfa2V5X2V4Y2hhbmdlKFNTTCAqcykKKyAJCQkJCXMtPm1ldGhvZC0+c3NsM19lbmMtPmdlbmVyYXRlX21hc3Rlcl9zZWNyZXQocywKKyAJCQkJCQlzLT5zZXNzaW9uLT5tYXN0ZXJfa2V5LAorIAkJCQkJCXByZV9tcywgcHJlX21zX2xlbik7CistCQkJCW4gPSBzdHJsZW4oaWRlbnRpdHkpOworLQkJCQlzMm4obiwgcCk7CistCQkJCW1lbWNweShwLCBpZGVudGl0eSwgbik7CistCQkJCW4gKz0gMjsKKysJCQkJczJuKGlkZW50aXR5X2xlbiwgcCk7CisrCQkJCW1lbWNweShwLCBpZGVudGl0eSwgaWRlbnRpdHlfbGVuKTsKKysJCQkJbiA9IDIgKyBpZGVudGl0eV9sZW47CisgCQkJCX0KKyAKKyAJCQlpZiAocy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5ICE9IE5VTEwpCistLSAKKzIuMC4wLjUyNi5nNTMxODMzNgorCmRpZmYgLS1naXQgYS9wYXRjaGVzLzAwMTYtZWNkaGVfcHNrX3BhcnQyLnBhdGNoIGIvcGF0Y2hlcy8wMDE2LWVjZGhlX3Bza19wYXJ0Mi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODdlMDBhCi0tLSAvZGV2L251bGwKKysrIGIvcGF0Y2hlcy8wMDE2LWVjZGhlX3Bza19wYXJ0Mi5wYXRjaApAQCAtMCwwICsxLDEwMCBAQAorRnJvbSBjZjM4OWUxNmQ4ZGM0OWU5N2MwYjEzZWEzYTFjMzczYzZmNmY5NGJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWRhbSBMYW5nbGV5IDxhZ2xAY2hyb21pdW0ub3JnPgorRGF0ZTogV2VkLCA0IEp1biAyMDE0IDEwOjU5OjMyIC0wNzAwCitTdWJqZWN0OiBFQ0RIRS1QU0tfQUVTLUNCQy1TSEFfY2lwaGVyX3N1aXRlcworCitBZGQgRUNESEUtUFNLIEFFUy1DQkMtU0hBIGNpcGhlciBzdWl0ZXMgZnJvbSBSRkMgNTQ4OS4KK1JlbW92ZSBFQ0RIRS1QU0sgQUVTLUNCQy1TSEEyIGNpcGhlciBzdWl0ZXMgZnJvbSBSRkMgNTQ4OSBiZWNhdXNlCit0aGV5IGNhbm5vdCBiZSB1c2VkIHdpdGggU1NMdjMgYW5kIHRoZXJlJ3Mgbm8gd2F5IHRvIGV4cHJlc3MgdGhhdCBpbgorT3BlblNTTCdzIGNvbmZpZ3VyYXRpb24uCistLS0KKyBzc2wvczNfbGliLmMgfCAyNSArKysrKysrKysrKystLS0tLS0tLS0tLS0tCisgc3NsL3RsczEuaCAgIHwgMTQgKysrKysrKystLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3NsL3MzX2xpYi5jIGIvc3NsL3MzX2xpYi5jCitpbmRleCBmODRkYTdmLi5lMDE2ZmM4IDEwMDY0NAorLS0tIGEvc3NsL3MzX2xpYi5jCisrKysgYi9zc2wvczNfbGliLmMKK0BAIC0yODI4LDM1ICsyODI4LDM0IEBAIE9QRU5TU0xfR0xPQkFMIFNTTF9DSVBIRVIgc3NsM19jaXBoZXJzW109eworIAorICNpZm5kZWYgT1BFTlNTTF9OT19QU0sKKyAgICAgLyogRUNESCBQU0sgY2lwaGVyc3VpdGVzIGZyb20gUkZDIDU0ODkgKi8KKy0KKy0JLyogQ2lwaGVyIEMwMzcgKi8KKysJLyogQ2lwaGVyIEMwMzUgKi8KKyAJeworIAkxLAorLQlUTFMxX1RYVF9FQ0RIRV9QU0tfV0lUSF9BRVNfMTI4X0NCQ19TSEEyNTYsCistCVRMUzFfQ0tfRUNESEVfUFNLX1dJVEhfQUVTXzEyOF9DQkNfU0hBMjU2LAorKwlUTFMxX1RYVF9FQ0RIRV9QU0tfV0lUSF9BRVNfMTI4X0NCQ19TSEEsCisrCVRMUzFfQ0tfRUNESEVfUFNLX1dJVEhfQUVTXzEyOF9DQkNfU0hBLAorIAlTU0xfa0VFQ0RILAorIAlTU0xfYVBTSywKKyAJU1NMX0FFUzEyOCwKKy0JU1NMX1NIQTI1NiwKKysJU1NMX1NIQTEsCisgCVNTTF9UTFNWMSwKKy0JU1NMX05PVF9FWFB8U1NMX0hJR0gsCistCVNTTF9IQU5EU0hBS0VfTUFDX0RFRkFVTFR8VExTMV9QUkZfU0hBMjU2LAorKwlTU0xfTk9UX0VYUHxTU0xfSElHSHxTU0xfRklQUywKKysJU1NMX0hBTkRTSEFLRV9NQUNfREVGQVVMVHxUTFMxX1BSRiwKKyAJMTI4LAorIAkxMjgsCisgCX0sCisgCistCS8qIENpcGhlciBDMDM4ICovCisrCS8qIENpcGhlciBDMDM2ICovCisgCXsKKyAJMSwKKy0JVExTMV9UWFRfRUNESEVfUFNLX1dJVEhfQUVTXzI1Nl9DQkNfU0hBMzg0LAorLQlUTFMxX0NLX0VDREhFX1BTS19XSVRIX0FFU18yNTZfQ0JDX1NIQTM4NCwKKysJVExTMV9UWFRfRUNESEVfUFNLX1dJVEhfQUVTXzI1Nl9DQkNfU0hBLAorKwlUTFMxX0NLX0VDREhFX1BTS19XSVRIX0FFU18yNTZfQ0JDX1NIQSwKKyAJU1NMX2tFRUNESCwKKyAJU1NMX2FQU0ssCisgCVNTTF9BRVMyNTYsCistCVNTTF9TSEEzODQsCisrCVNTTF9TSEExLAorIAlTU0xfVExTVjEsCistCVNTTF9OT1RfRVhQfFNTTF9ISUdILAorLQlTU0xfSEFORFNIQUtFX01BQ19ERUZBVUxUfFRMUzFfUFJGX1NIQTM4NCwKKysJU1NMX05PVF9FWFB8U1NMX0hJR0h8U1NMX0ZJUFMsCisrCVNTTF9IQU5EU0hBS0VfTUFDX0RFRkFVTFR8VExTMV9QUkYsCisgCTI1NiwKKyAJMjU2LAorIAl9LAorZGlmZiAtLWdpdCBhL3NzbC90bHMxLmggYi9zc2wvdGxzMS5oCitpbmRleCBlYzg5NDhkLi41MWQwNzNkIDEwMDY0NAorLS0tIGEvc3NsL3RsczEuaAorKysrIGIvc3NsL3RsczEuaAorQEAgLTUzMSw5ICs1MzEsMTEgQEAgU1NMX0NUWF9jYWxsYmFja19jdHJsKHNzbCxTU0xfQ1RSTF9TRVRfVExTRVhUX1RJQ0tFVF9LRVlfQ0IsKHZvaWQgKCopKHZvaWQpKWNiKQorICNkZWZpbmUgVExTMV9DS19FQ0RIX1JTQV9XSVRIX0FFU18xMjhfR0NNX1NIQTI1NiAgICAgICAgMHgwMzAwQzAzMQorICNkZWZpbmUgVExTMV9DS19FQ0RIX1JTQV9XSVRIX0FFU18yNTZfR0NNX1NIQTM4NCAgICAgICAgMHgwMzAwQzAzMgorIAorLS8qIEVDREhFIFBTSyBjaXBoZXJzdWl0ZXMgZnJvbSBSRkMgNTQ4OSAqLworLSNkZWZpbmUgVExTMV9DS19FQ0RIRV9QU0tfV0lUSF9BRVNfMTI4X0NCQ19TSEEyNTYgICAgMHgwMzAwQzAzNworLSNkZWZpbmUgVExTMV9DS19FQ0RIRV9QU0tfV0lUSF9BRVNfMjU2X0NCQ19TSEEzODQgICAgMHgwMzAwQzAzOAorKy8qIEVDREhFIFBTSyBjaXBoZXJzdWl0ZXMgZnJvbSBSRkM1NDg5CisrICogU0hBLTIgY2lwaGVyIHN1aXRlcyBhcmUgb21pdHRlZCBiZWNhdXNlIHRoZXkgY2Fubm90IGJlIHVzZWQgc2FmZWx5IHdpdGgKKysgKiBTU0x2My4gKi8KKysjZGVmaW5lIFRMUzFfQ0tfRUNESEVfUFNLX1dJVEhfQUVTXzEyOF9DQkNfU0hBICAgICAgICAgIDB4MDMwMEMwMzUKKysjZGVmaW5lIFRMUzFfQ0tfRUNESEVfUFNLX1dJVEhfQUVTXzI1Nl9DQkNfU0hBICAgICAgICAgIDB4MDMwMEMwMzYKKyAKKyAvKiBYWFgKKyAgKiBJbmNvbnNpc3RlbmN5IGFsZXJ0OgorQEAgLTY4Niw5ICs2ODgsOSBAQCBTU0xfQ1RYX2NhbGxiYWNrX2N0cmwoc3NsLFNTTF9DVFJMX1NFVF9UTFNFWFRfVElDS0VUX0tFWV9DQiwodm9pZCAoKikodm9pZCkpY2IpCisgI2RlZmluZSBUTFMxX1RYVF9FQ0RIX1JTQV9XSVRIX0FFU18xMjhfR0NNX1NIQTI1NiAgICAgICAiRUNESC1SU0EtQUVTMTI4LUdDTS1TSEEyNTYiCisgI2RlZmluZSBUTFMxX1RYVF9FQ0RIX1JTQV9XSVRIX0FFU18yNTZfR0NNX1NIQTM4NCAgICAgICAiRUNESC1SU0EtQUVTMjU2LUdDTS1TSEEzODQiCisgCistLyogRUNESEUgUFNLIGNpcGhlcnN1aXRlcyBmcm9tIFJGQyA1NDg5ICovCistI2RlZmluZSBUTFMxX1RYVF9FQ0RIRV9QU0tfV0lUSF9BRVNfMTI4X0NCQ19TSEEyNTYgICJFQ0RIRS1QU0stV0lUSC1BRVMtMTI4LUNCQy1TSEEyNTYiCistI2RlZmluZSBUTFMxX1RYVF9FQ0RIRV9QU0tfV0lUSF9BRVNfMjU2X0NCQ19TSEEzODQgICJFQ0RIRS1QU0stV0lUSC1BRVMtMjU2LUNCQy1TSEEzODQiCisrLyogRUNESEUgUFNLIGNpcGhlcnN1aXRlcyBmcm9tIFJGQzU0ODkgKi8KKysjZGVmaW5lIFRMUzFfVFhUX0VDREhFX1BTS19XSVRIX0FFU18xMjhfQ0JDX1NIQSAgICAgICAgICJFQ0RIRS1QU0stQUVTMTI4LUNCQy1TSEEiCisrI2RlZmluZSBUTFMxX1RYVF9FQ0RIRV9QU0tfV0lUSF9BRVNfMjU2X0NCQ19TSEEgICAgICAgICAiRUNESEUtUFNLLUFFUzI1Ni1DQkMtU0hBIgorIAorICNkZWZpbmUgVExTX0NUX1JTQV9TSUdOCQkJMQorICNkZWZpbmUgVExTX0NUX0RTU19TSUdOCQkJMgorLS0gCisyLjAuMC41MjYuZzUzMTgzMzYKZGlmZiAtLWdpdCBhL3BhdGNoZXMvMDAxNy14ODZfdGV4dHJlbC5wYXRjaCBiL3BhdGNoZXMvMDAxNy14ODZfdGV4dHJlbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMjkzMWE4Ci0tLSAvZGV2L251bGwKKysrIGIvcGF0Y2hlcy8wMDE3LXg4Nl90ZXh0cmVsLnBhdGNoCkBAIC0wLDAgKzEsNDggQEAKK0Zyb20gNjIwNjY4MmEzNTc2MGViNmRkYjI1MTcyZGYyYWU5ZjAzZDEyZTU5NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZHkgUG9seWFrb3YgPGFwcHJvQG9wZW5zc2wub3JnPgorRGF0ZTogV2VkLCAyOSBBdWcgMjAxMiAxNDoxOTo1OSArMDAwMAorU3ViamVjdDogW1BBVENIXSB4ODZjcHVpZC5wbDogaGlkZSBzeW1ib2xzIFtiYWNrcG9ydCBmcm9tIHg4Nl82NF0uCisKKy0tLQorIGNyeXB0by9wZXJsYXNtL3g4NmFzbS5wbCB8IDIgKysKKyBjcnlwdG8vcGVybGFzbS94ODZnYXMucGwgfCAyICsrCisgY3J5cHRvL3g4NmNwdWlkLnBsICAgICAgIHwgMyArKysKKyAzIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvY3J5cHRvL3Blcmxhc20veDg2YXNtLnBsIGIvY3J5cHRvL3Blcmxhc20veDg2YXNtLnBsCitpbmRleCBlYjU0M2RiLi4zZjE5MGFlIDEwMDY0NAorLS0tIGEvY3J5cHRvL3Blcmxhc20veDg2YXNtLnBsCisrKysgYi9jcnlwdG8vcGVybGFzbS94ODZhc20ucGwKK0BAIC0yNTcsNCArMjU3LDYgQEAgc3ViIDo6YXNtX2luaXQKKyAgICAgJmZpbGUoJGZpbGVuYW1lKTsKKyB9CisgCisrc3ViIDo6aGlkZGVuIHt9CisrCisgMTsKK2RpZmYgLS1naXQgYS9jcnlwdG8vcGVybGFzbS94ODZnYXMucGwgYi9jcnlwdG8vcGVybGFzbS94ODZnYXMucGwKK2luZGV4IDU5NzJkMDYuLmUwMmVlODQgMTAwNjQ0CistLS0gYS9jcnlwdG8vcGVybGFzbS94ODZnYXMucGwKKysrKyBiL2NyeXB0by9wZXJsYXNtL3g4Nmdhcy5wbAorQEAgLTI1MSw0ICsyNTEsNiBAQCBzdWIgOjppbml0c2VnCisgc3ViIDo6ZGF0YXNlZworIHsgICBwdXNoKEBvdXQsIi5kYXRhXG4iKTsgICB9CisgCisrKjo6aGlkZGVuID0gc3ViIHsgcHVzaChAb3V0LCIuaGlkZGVuXHQkbm1kZWNvciRfWzBdXG4iKTsgfSBpZiAoJDo6ZWxmKTsKKysKKyAxOworZGlmZiAtLWdpdCBhL2NyeXB0by94ODZjcHVpZC5wbCBiL2NyeXB0by94ODZjcHVpZC5wbAoraW5kZXggODA4MDQ5YS4uNTk3YjdhNSAxMDA2NDQKKy0tLSBhL2NyeXB0by94ODZjcHVpZC5wbAorKysrIGIvY3J5cHRvL3g4NmNwdWlkLnBsCitAQCAtNDU1LDQgKzQ1NSw3IEBACisgCisgJmluaXRzZWcoIk9QRU5TU0xfY3B1aWRfc2V0dXAiKTsKKyAKKysmaGlkZGVuKCJPUEVOU1NMX2NwdWlkX3NldHVwIik7CisrJmhpZGRlbigiT1BFTlNTTF9pYTMyY2FwX1AiKTsKKysKKyAmYXNtX2ZpbmlzaCgpOworLS0gCisxLjkuMworCmRpZmYgLS1naXQgYS9wYXRjaGVzL1JFQURNRSBiL3BhdGNoZXMvUkVBRE1FCmluZGV4IGMzNTU0ODIuLjUzNDQ0NzAgMTAwNjQ0Ci0tLSBhL3BhdGNoZXMvUkVBRE1FCisrKyBiL3BhdGNoZXMvUkVBRE1FCkBAIC00MywxMCArNDMsMzggQEAKIEJFQVNUIGF0dGFjayBjbGllbnQtc2lkZSBtaXRpZ2F0aW9uLiBSZW1vdmVzIDAvbiByZWNvcmQgc3BsaXR0aW5nLCBhZGRzIDEvbi0xCiByZWNvcmQgc3BsaXR0aW5nLiBSZWNvcmQgc3BsaXR0aW5nIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuCiAKLXBhZGRpbmdleHQucGF0Y2gKK2RzYV9ub25jZS5wYXRjaAogCi1DbGllbnRIZWxsbyBwYWRkaW5nIGV4dGVuc2lvbiB3aGljaCBpcyBhZGRlZCwgd2hlbiBuZWVkZWQsIHRvIHdvcmsgYXJvdW5kIGJ1Z3MKLWluIEY1IHRlcm1pbmF0b3JzLgorQWRkcyBhbiBvcHRpb24gdG8gbWl4IGluIGhhc2ggb2YgbWVzc2FnZSBhbmQgcHJpdmF0ZSBrZXkgaW50byAoRUMpRFNBIG5vbmNlcyB0bworbWFrZSAoRUMpRFNBIG1vcmUgcmVzaWxpZW50IHRvIHdlYWtuZXNzZXMgaW4gUk5HcyB1c2VkIGZvciBub25jZXMuIFRoZSBmZWF0dXJlCitpcyBkaXNhYmxlZCBieSBkZWZhdWx0LgorCitlY2RoZV9wc2sucGF0Y2gKKworQWRkcyBzdXBwb3J0IGZvciBFQ0RIRSBQcmUtU2hhcmVkIEtleSAoUFNLKSBUTFMgY2lwaGVyIHN1aXRlcy4KKworZWNkaGVfcHNrX3BhcnQyLnBhdGNoCisKK1JlbW92ZXMgRUNIREUtUFNLIGNpcGhlciBzdWl0ZXMgd2l0aCBTSEEtMiBiZWNhdXNlIHRoZXkgY2Fubm90IGJlIHVzZWQgd2l0aAorU1NMdjMgKGFuZCB0aGVyZSdzIG5vIHdheSB0byBleHByZXNzIHRoYXQgaW4gT3BlblNTTCdzIGNvbmZpZ3VyYXRpb24pLiBBZGRzCitTSEEtMSBiYXNlZCBFQ0RIRS1QU0sgQUVTLUNCQyBjaXBoZXIgc3VpdGVzIGluc3RlYWQuCisKK2FybV9hc20ucGF0Y2gKKworQWRkcyBuZXdlciBBUk0gYXNzZW1ibHkgcGFjayB3aXRoIEJTQUVTIGZvciBBUk12NyBhbmQgYWNjZWxlcmF0aW9uIGZvciBBUk12OAorQmFzZWQgb24gYnJhbmNoIGF2YWlsYWJsZSBhdDoKK2h0dHBzOi8vZ2l0LmxpbmFyby5vcmcvcGVvcGxlL2FyZC5iaWVzaGV1dmVsL29wZW5zc2wuZ2l0L3Nob3J0bG9nL3JlZnMvaGVhZHMvb3BlbnNzbC0xLjAuMWYtd2l0aC1hcm0tcGF0Y2hlcworYzdiNTgyZWYyM2ViNmY0Mzg2NjY0ZTg0MWU2ZTQwNmQ5ODRjMzhkM14uLmNiOGIxYWIwM2U1YzE3OWE3MTlhZmU4M2YwM2ZlY2IxYzJjNzg3MzAKKwordGxzX3Bza19oaW50LnBhdGNoCisKK0ZpeGVzIGlzc3VlcyB3aXRoIFRMUy1QU0sgaWRlbnRpdHkgaGludCBpbXBsZW1lbnRhdGlvbiB3aGVyZQorcGVyLWNvbm5lY3Rpb24vc2Vzc2lvbiBhbmQgcGVyLWNvbnRleHQgaGludHMgd2VyZSBiZWluZyBtaXhlZCB1cC4KKworcHNrX2NsaWVudF9jYWxsYmFja18xMjhfYnl0ZV9pZF9idWcucGF0Y2gKKworRml4ZXMgdGhlIGlzc3VlIHdoZXJlIGl0IHdhcyBpbXBvc3NpYmxlIHRvIHJldHVybiBhIDEyOCBieXRlIGxvbmcgUFNLIGlkZW50aXR5CisodGhlIG1heGltdW0gc3VwcG9ydGVkIGxlbmd0aCkgZnJvbSBwc2tfY2xpZW50X2NhbGxiYWNrLgogCiB0bHNfZmFsbGJhY2tfc2Nzdi5wYXRjaAogCmRpZmYgLS1naXQgYS9wYXRjaGVzL2NoYW5uZWxpZC5wYXRjaCBiL3BhdGNoZXMvY2hhbm5lbGlkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZWIwMjVhLi4wMDAwMDAwCi0tLSBhL3BhdGNoZXMvY2hhbm5lbGlkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTgzICswLDAgQEAKLS0tLSBvcGVuc3NsLTEuMC4xZS5vcmlnL2NyeXB0by9ldnAvZXZwLmgJMjAxMy0wMy0wNSAxODo0OTozMy4xODMyOTY3NDMgKzAwMDAKLSsrKyBvcGVuc3NsLTEuMC4xZS9jcnlwdG8vZXZwL2V2cC5oCTIwMTMtMDMtMDUgMTg6NDk6MzMuMzczMjk4Nzk4ICswMDAwCi1AQCAtOTIxLDYgKzkyMSw3IEBAIHN0cnVjdCBlY19rZXlfc3QgKkVWUF9QS0VZX2dldDFfRUNfS0VZKEUKLSAjZW5kaWYKLSAKLSBFVlBfUEtFWSAqCUVWUF9QS0VZX25ldyh2b2lkKTsKLStFVlBfUEtFWSAqCUVWUF9QS0VZX2R1cChFVlBfUEtFWSAqcGtleSk7Ci0gdm9pZAkJRVZQX1BLRVlfZnJlZShFVlBfUEtFWSAqcGtleSk7Ci0gCi0gRVZQX1BLRVkgKglkMmlfUHVibGljS2V5KGludCB0eXBlLEVWUF9QS0VZICoqYSwgY29uc3QgdW5zaWduZWQgY2hhciAqKnBwLAotLS0tIG9wZW5zc2wtMS4wLjFlLm9yaWcvY3J5cHRvL2V2cC9wX2xpYi5jCTIwMTMtMDMtMDUgMTg6NDk6MzMuMTgzMjk2NzQzICswMDAwCi0rKysgb3BlbnNzbC0xLjAuMWUvY3J5cHRvL2V2cC9wX2xpYi5jCTIwMTMtMDMtMDUgMTg6NDk6MzMuMzczMjk4Nzk4ICswMDAwCi1AQCAtMjAwLDYgKzIwMCwxMiBAQCBFVlBfUEtFWSAqRVZQX1BLRVlfbmV3KHZvaWQpCi0gCXJldHVybihyZXQpOwotIAl9Ci0gCi0rRVZQX1BLRVkgKkVWUF9QS0VZX2R1cChFVlBfUEtFWSAqcGtleSkKLSsJewotKwlDUllQVE9fYWRkKCZwa2V5LT5yZWZlcmVuY2VzLCAxLCBDUllQVE9fTE9DS19FVlBfUEtFWSk7Ci0rCXJldHVybiBwa2V5OwotKwl9Ci0rCi0gLyogU2V0dXAgYSBwdWJsaWMga2V5IEFTTjEgbWV0aG9kIGFuZCBFTkdJTkUgZnJvbSBhIE5JRCBvciBhIHN0cmluZy4KLSAgKiBJZiBwa2V5IGlzIE5VTEwganVzdCByZXR1cm4gMSBvciAwIGlmIHRoZSBhbGdvcml0aG0gZXhpc3RzLgotICAqLwotLS0tIG9wZW5zc2wtMS4wLjFlLm9yaWcvc3NsL3MzX2JvdGguYwkyMDEzLTAzLTA1IDE4OjQ5OjMzLjIzMzI5NzI4MiArMDAwMAotKysrIG9wZW5zc2wtMS4wLjFlL3NzbC9zM19ib3RoLmMJMjAxMy0wMy0wNSAxODo0OTozMy40MTMyOTkyMzEgKzAwMDAKLUBAIC01NTUsNyArNTU1LDggQEAgbG9uZyBzc2wzX2dldF9tZXNzYWdlKFNTTCAqcywgaW50IHN0MSwgaQotICNlbmRpZgotIAotIAkvKiBGZWVkIHRoaXMgbWVzc2FnZSBpbnRvIE1BQyBjb21wdXRhdGlvbi4gKi8KLS0Jc3NsM19maW5pc2hfbWFjKHMsICh1bnNpZ25lZCBjaGFyICopcy0+aW5pdF9idWYtPmRhdGEsIHMtPmluaXRfbnVtICsgNCk7Ci0rCWlmICgqKHVuc2lnbmVkIGNoYXIqKXMtPmluaXRfYnVmLT5kYXRhICE9IFNTTDNfTVRfRU5DUllQVEVEX0VYVEVOU0lPTlMpCi0rCQlzc2wzX2ZpbmlzaF9tYWMocywgKHVuc2lnbmVkIGNoYXIgKilzLT5pbml0X2J1Zi0+ZGF0YSwgcy0+aW5pdF9udW0gKyA0KTsKLSAJaWYgKHMtPm1zZ19jYWxsYmFjaykKLSAJCXMtPm1zZ19jYWxsYmFjaygwLCBzLT52ZXJzaW9uLCBTU0wzX1JUX0hBTkRTSEFLRSwgcy0+aW5pdF9idWYtPmRhdGEsIChzaXplX3Qpcy0+aW5pdF9udW0gKyA0LCBzLCBzLT5tc2dfY2FsbGJhY2tfYXJnKTsKLSAJKm9rPTE7Ci0tLS0gb3BlbnNzbC0xLjAuMWUub3JpZy9zc2wvczNfY2xudC5jCTIwMTMtMDMtMDUgMTg6NDk6MzMuMjMzMjk3MjgyICswMDAwCi0rKysgb3BlbnNzbC0xLjAuMWUvc3NsL3MzX2NsbnQuYwkyMDEzLTAzLTA1IDE4OjQ5OjMzLjQxMzI5OTIzMSArMDAwMAotQEAgLTQ3NywxMyArNDc3LDE0IEBAIGludCBzc2wzX2Nvbm5lY3QoU1NMICpzKQotIAkJCQlTU0wzX1NUX0NXX0NIQU5HRV9BLFNTTDNfU1RfQ1dfQ0hBTkdFX0IpOwotIAkJCWlmIChyZXQgPD0gMCkgZ290byBlbmQ7Ci0gCi0tI2lmIGRlZmluZWQoT1BFTlNTTF9OT19UTFNFWFQpIHx8IGRlZmluZWQoT1BFTlNTTF9OT19ORVhUUFJPVE9ORUcpCi0gCQkJcy0+c3RhdGU9U1NMM19TVF9DV19GSU5JU0hFRF9BOwotLSNlbHNlCi0rI2lmICFkZWZpbmVkKE9QRU5TU0xfTk9fVExTRVhUKQotKwkJCWlmIChzLT5zMy0+dGxzZXh0X2NoYW5uZWxfaWRfdmFsaWQpCi0rCQkJCXMtPnN0YXRlPVNTTDNfU1RfQ1dfQ0hBTk5FTF9JRF9BOwotKyMgaWYgIWRlZmluZWQoT1BFTlNTTF9OT19ORVhUUFJPVE9ORUcpCi0gCQkJaWYgKHMtPnMzLT5uZXh0X3Byb3RvX25lZ19zZWVuKQotIAkJCQlzLT5zdGF0ZT1TU0wzX1NUX0NXX05FWFRfUFJPVE9fQTsKLS0JCQllbHNlCi0tCQkJCXMtPnN0YXRlPVNTTDNfU1RfQ1dfRklOSVNIRURfQTsKLSsjIGVuZGlmCi0gI2VuZGlmCi0gCQkJcy0+aW5pdF9udW09MDsKLSAKLUBAIC01MTcsNiArNTE4LDE4IEBAIGludCBzc2wzX2Nvbm5lY3QoU1NMICpzKQotIAkJY2FzZSBTU0wzX1NUX0NXX05FWFRfUFJPVE9fQjoKLSAJCQlyZXQ9c3NsM19zZW5kX25leHRfcHJvdG8ocyk7Ci0gCQkJaWYgKHJldCA8PSAwKSBnb3RvIGVuZDsKLSsJCQlpZiAocy0+czMtPnRsc2V4dF9jaGFubmVsX2lkX3ZhbGlkKQotKwkJCQlzLT5zdGF0ZT1TU0wzX1NUX0NXX0NIQU5ORUxfSURfQTsKLSsJCQllbHNlCi0rCQkJCXMtPnN0YXRlPVNTTDNfU1RfQ1dfRklOSVNIRURfQTsKLSsJCQlicmVhazsKLSsjZW5kaWYKLSsKLSsjaWYgIWRlZmluZWQoT1BFTlNTTF9OT19UTFNFWFQpCi0rCQljYXNlIFNTTDNfU1RfQ1dfQ0hBTk5FTF9JRF9BOgotKwkJY2FzZSBTU0wzX1NUX0NXX0NIQU5ORUxfSURfQjoKLSsJCQlyZXQ9c3NsM19zZW5kX2NoYW5uZWxfaWQocyk7Ci0rCQkJaWYgKHJldCA8PSAwKSBnb3RvIGVuZDsKLSAJCQlzLT5zdGF0ZT1TU0wzX1NUX0NXX0ZJTklTSEVEX0E7Ci0gCQkJYnJlYWs7Ci0gI2VuZGlmCi1AQCAtMzM2Miw3ICszMzc1LDggQEAgZXJyOgotIAlyZXR1cm4oMCk7Ci0gCX0KLSAKLS0jaWYgIWRlZmluZWQoT1BFTlNTTF9OT19UTFNFWFQpICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fTkVYVFBST1RPTkVHKQotKyNpZiAhZGVmaW5lZChPUEVOU1NMX05PX1RMU0VYVCkKLSsjIGlmICFkZWZpbmVkKE9QRU5TU0xfTk9fTkVYVFBST1RPTkVHKQotIGludCBzc2wzX3NlbmRfbmV4dF9wcm90byhTU0wgKnMpCi0gCXsKLSAJdW5zaWduZWQgaW50IGxlbiwgcGFkZGluZ19sZW47Ci1AQCAtMzM4Niw3ICszNDAwLDExNiBAQCBpbnQgc3NsM19zZW5kX25leHRfcHJvdG8oU1NMICpzKQotIAotIAlyZXR1cm4gc3NsM19kb193cml0ZShzLCBTU0wzX1JUX0hBTkRTSEFLRSk7Ci0gfQotLSNlbmRpZiAgLyogIU9QRU5TU0xfTk9fVExTRVhUICYmICFPUEVOU1NMX05PX05FWFRQUk9UT05FRyAqLwotKyMgZW5kaWYgIC8qICFPUEVOU1NMX05PX05FWFRQUk9UT05FRyAqLwotKwotK2ludCBzc2wzX3NlbmRfY2hhbm5lbF9pZChTU0wgKnMpCi0rCXsKLSsJdW5zaWduZWQgY2hhciAqZDsKLSsJaW50IHJldCA9IC0xLCBwdWJsaWNfa2V5X2xlbjsKLSsJRVZQX01EX0NUWCBtZF9jdHg7Ci0rCXNpemVfdCBzaWdfbGVuOwotKwlFQ0RTQV9TSUcgKnNpZyA9IE5VTEw7Ci0rCXVuc2lnbmVkIGNoYXIgKnB1YmxpY19rZXkgPSBOVUxMLCAqZGVycCwgKmRlcl9zaWcgPSBOVUxMOwotKwotKwlpZiAocy0+c3RhdGUgIT0gU1NMM19TVF9DV19DSEFOTkVMX0lEX0EpCi0rCQlyZXR1cm4gc3NsM19kb193cml0ZShzLCBTU0wzX1JUX0hBTkRTSEFLRSk7Ci0rCi0rCWQgPSAodW5zaWduZWQgY2hhciAqKXMtPmluaXRfYnVmLT5kYXRhOwotKwkqKGQrKyk9U1NMM19NVF9FTkNSWVBURURfRVhURU5TSU9OUzsKLSsJbDJuMygyICsgMiArIFRMU0VYVF9DSEFOTkVMX0lEX1NJWkUsIGQpOwotKwlzMm4oVExTRVhUX1RZUEVfY2hhbm5lbF9pZCwgZCk7Ci0rCXMybihUTFNFWFRfQ0hBTk5FTF9JRF9TSVpFLCBkKTsKLSsKLSsJRVZQX01EX0NUWF9pbml0KCZtZF9jdHgpOwotKwotKwlwdWJsaWNfa2V5X2xlbiA9IGkyZF9QdWJsaWNLZXkocy0+dGxzZXh0X2NoYW5uZWxfaWRfcHJpdmF0ZSwgTlVMTCk7Ci0rCWlmIChwdWJsaWNfa2V5X2xlbiA8PSAwKQotKwkJewotKwkJU1NMZXJyKFNTTF9GX1NTTDNfU0VORF9DSEFOTkVMX0lELFNTTF9SX0NBTk5PVF9TRVJJQUxJWkVfUFVCTElDX0tFWSk7Ci0rCQlnb3RvIGVycjsKLSsJCX0KLSsJLy8gaTJkX1B1YmxpY0tleSB3aWxsIHByb2R1Y2UgYW4gQU5TSSBYOS42MiBwdWJsaWMga2V5IHdoaWNoLCBmb3IgYQotKwkvLyBQLTI1NiBrZXksIGlzIDB4MDQgKG1lYW5pbmcgdW5jb21wcmVzc2VkKSBmb2xsb3dlZCBieSB0aGUgeCBhbmQgeQotKwkvLyBmaWVsZCBlbGVtZW50cyBhcyAzMi1ieXRlLCBiaWctZW5kaWFuIG51bWJlcnMuCi0rCWlmIChwdWJsaWNfa2V5X2xlbiAhPSA2NSkKLSsJCXsKLSsJCVNTTGVycihTU0xfRl9TU0wzX1NFTkRfQ0hBTk5FTF9JRCxTU0xfUl9DSEFOTkVMX0lEX05PVF9QMjU2KTsKLSsJCWdvdG8gZXJyOwotKwkJfQotKwlwdWJsaWNfa2V5ID0gT1BFTlNTTF9tYWxsb2MocHVibGljX2tleV9sZW4pOwotKwlpZiAoIXB1YmxpY19rZXkpCi0rCQl7Ci0rCQlTU0xlcnIoU1NMX0ZfU1NMM19TRU5EX0NIQU5ORUxfSUQsRVJSX1JfTUFMTE9DX0ZBSUxVUkUpOwotKwkJZ290byBlcnI7Ci0rCQl9Ci0rCi0rCWRlcnAgPSBwdWJsaWNfa2V5OwotKwlpMmRfUHVibGljS2V5KHMtPnRsc2V4dF9jaGFubmVsX2lkX3ByaXZhdGUsICZkZXJwKTsKLSsKLSsJaWYgKEVWUF9EaWdlc3RTaWduSW5pdCgmbWRfY3R4LCBOVUxMLCBFVlBfc2hhMjU2KCksIE5VTEwsCi0rCQkJICAgICAgIHMtPnRsc2V4dF9jaGFubmVsX2lkX3ByaXZhdGUpICE9IDEpCi0rCQl7Ci0rCQlTU0xlcnIoU1NMX0ZfU1NMM19TRU5EX0NIQU5ORUxfSUQsU1NMX1JfRVZQX0RJR0VTVFNJR05JTklUX0ZBSUxFRCk7Ci0rCQlnb3RvIGVycjsKLSsJCX0KLSsKLSsJaWYgKCF0bHMxX2NoYW5uZWxfaWRfaGFzaCgmbWRfY3R4LCBzKSkKLSsJCWdvdG8gZXJyOwotKwotKwlpZiAoIUVWUF9EaWdlc3RTaWduRmluYWwoJm1kX2N0eCwgTlVMTCwgJnNpZ19sZW4pKQotKwkJewotKwkJU1NMZXJyKFNTTF9GX1NTTDNfU0VORF9DSEFOTkVMX0lELFNTTF9SX0VWUF9ESUdFU1RTSUdORklOQUxfRkFJTEVEKTsKLSsJCWdvdG8gZXJyOwotKwkJfQotKwotKwlkZXJfc2lnID0gT1BFTlNTTF9tYWxsb2Moc2lnX2xlbik7Ci0rCWlmICghZGVyX3NpZykKLSsJCXsKLSsJCVNTTGVycihTU0xfRl9TU0wzX1NFTkRfQ0hBTk5FTF9JRCxFUlJfUl9NQUxMT0NfRkFJTFVSRSk7Ci0rCQlnb3RvIGVycjsKLSsJCX0KLSsKLSsJaWYgKCFFVlBfRGlnZXN0U2lnbkZpbmFsKCZtZF9jdHgsIGRlcl9zaWcsICZzaWdfbGVuKSkKLSsJCXsKLSsJCVNTTGVycihTU0xfRl9TU0wzX1NFTkRfQ0hBTk5FTF9JRCxTU0xfUl9FVlBfRElHRVNUU0lHTkZJTkFMX0ZBSUxFRCk7Ci0rCQlnb3RvIGVycjsKLSsJCX0KLSsKLSsJZGVycCA9IGRlcl9zaWc7Ci0rCXNpZyA9IGQyaV9FQ0RTQV9TSUcoTlVMTCwgKGNvbnN0IHVuc2lnbmVkIGNoYXIqKikmZGVycCwgc2lnX2xlbik7Ci0rCWlmIChzaWcgPT0gTlVMTCkKLSsJCXsKLSsJCVNTTGVycihTU0xfRl9TU0wzX1NFTkRfQ0hBTk5FTF9JRCxTU0xfUl9EMklfRUNEU0FfU0lHKTsKLSsJCWdvdG8gZXJyOwotKwkJfQotKwotKwkvLyBUaGUgZmlyc3QgYnl0ZSBvZiBwdWJsaWNfa2V5IHdpbGwgYmUgMHg0LCBkZW5vdGluZyBhbiB1bmNvbXByZXNzZWQga2V5LgotKwltZW1jcHkoZCwgcHVibGljX2tleSArIDEsIDY0KTsKLSsJZCArPSA2NDsKLSsJbWVtc2V0KGQsIDAsIDIgKiAzMik7Ci0rCUJOX2JuMmJpbihzaWctPnIsIGQgKyAzMiAtIEJOX251bV9ieXRlcyhzaWctPnIpKTsKLSsJZCArPSAzMjsKLSsJQk5fYm4yYmluKHNpZy0+cywgZCArIDMyIC0gQk5fbnVtX2J5dGVzKHNpZy0+cykpOwotKwlkICs9IDMyOwotKwotKwlzLT5zdGF0ZSA9IFNTTDNfU1RfQ1dfQ0hBTk5FTF9JRF9COwotKwlzLT5pbml0X251bSA9IDQgKyAyICsgMiArIFRMU0VYVF9DSEFOTkVMX0lEX1NJWkU7Ci0rCXMtPmluaXRfb2ZmID0gMDsKLSsKLSsJcmV0ID0gc3NsM19kb193cml0ZShzLCBTU0wzX1JUX0hBTkRTSEFLRSk7Ci0rCi0rZXJyOgotKwlFVlBfTURfQ1RYX2NsZWFudXAoJm1kX2N0eCk7Ci0rCWlmIChwdWJsaWNfa2V5KQotKwkJT1BFTlNTTF9mcmVlKHB1YmxpY19rZXkpOwotKwlpZiAoZGVyX3NpZykKLSsJCU9QRU5TU0xfZnJlZShkZXJfc2lnKTsKLSsJaWYgKHNpZykKLSsJCUVDRFNBX1NJR19mcmVlKHNpZyk7Ci0rCi0rCXJldHVybiByZXQ7Ci0rCX0KLSsjZW5kaWYgIC8qICFPUEVOU1NMX05PX1RMU0VYVCAqLwotIAotIC8qIENoZWNrIHRvIHNlZSBpZiBoYW5kc2hha2UgaXMgZnVsbCBvciByZXN1bWVkLiBVc3VhbGx5IHRoaXMgaXMganVzdCBhCi0gICogY2FzZSBvZiBjaGVja2luZyB0byBzZWUgaWYgYSBjYWNoZSBoaXQgaGFzIG9jY3VycmVkLiBJbiB0aGUgY2FzZSBvZgotLS0tIG9wZW5zc2wtMS4wLjFlLm9yaWcvc3NsL3MzX2xpYi5jCTIwMTMtMDMtMDUgMTg6NDk6MzMuMjIzMjk3MTczICswMDAwCi0rKysgb3BlbnNzbC0xLjAuMWUvc3NsL3MzX2xpYi5jCTIwMTMtMDMtMDUgMTg6NDk6MzMuNDEzMjk5MjMxICswMDAwCi1AQCAtMjk1MSw2ICsyOTUxLDExIEBAIGludCBzc2wzX25ldyhTU0wgKnMpCi0gI2lmbmRlZiBPUEVOU1NMX05PX1NSUAotIAlTU0xfU1JQX0NUWF9pbml0KHMpOwotICNlbmRpZgotKyNpZiAhZGVmaW5lZChPUEVOU1NMX05PX1RMU0VYVCkKLSsJcy0+dGxzZXh0X2NoYW5uZWxfaWRfZW5hYmxlZCA9IHMtPmN0eC0+dGxzZXh0X2NoYW5uZWxfaWRfZW5hYmxlZDsKLSsJaWYgKHMtPmN0eC0+dGxzZXh0X2NoYW5uZWxfaWRfcHJpdmF0ZSkKLSsJCXMtPnRsc2V4dF9jaGFubmVsX2lkX3ByaXZhdGUgPSBFVlBfUEtFWV9kdXAocy0+Y3R4LT50bHNleHRfY2hhbm5lbF9pZF9wcml2YXRlKTsKLSsjZW5kaWYKLSAJcy0+bWV0aG9kLT5zc2xfY2xlYXIocyk7Ci0gCXJldHVybigxKTsKLSBlcnI6Ci1AQCAtMzA3NCw2ICszMDc5LDEwIEBAIHZvaWQgc3NsM19jbGVhcihTU0wgKnMpCi0gCQlzLT5uZXh0X3Byb3RvX25lZ290aWF0ZWRfbGVuID0gMDsKLSAJCX0KLSAjZW5kaWYKLSsKLSsjaWYgIWRlZmluZWQoT1BFTlNTTF9OT19UTFNFWFQpCi0rCXMtPnMzLT50bHNleHRfY2hhbm5lbF9pZF92YWxpZCA9IDA7Ci0rI2VuZGlmCi0gCX0KLSAKLSAjaWZuZGVmIE9QRU5TU0xfTk9fU1JQCi1AQCAtMzM0OCw2ICszMzU3LDM1IEBAIGxvbmcgc3NsM19jdHJsKFNTTCAqcywgaW50IGNtZCwgbG9uZyBsYXIKLSAJCXJldCA9IDE7Ci0gCQlicmVhazsKLSAjZW5kaWYKLSsJY2FzZSBTU0xfQ1RSTF9DSEFOTkVMX0lEOgotKwkJaWYgKCFzLT5zZXJ2ZXIpCi0rCQkJYnJlYWs7Ci0rCQlzLT50bHNleHRfY2hhbm5lbF9pZF9lbmFibGVkID0gMTsKLSsJCXJldCA9IDE7Ci0rCQlicmVhazsKLSsKLSsJY2FzZSBTU0xfQ1RSTF9TRVRfQ0hBTk5FTF9JRDoKLSsJCWlmIChzLT5zZXJ2ZXIpCi0rCQkJYnJlYWs7Ci0rCQlzLT50bHNleHRfY2hhbm5lbF9pZF9lbmFibGVkID0gMTsKLSsJCWlmIChFVlBfUEtFWV9iaXRzKHBhcmcpICE9IDI1NikKLSsJCQl7Ci0rCQkJU1NMZXJyKFNTTF9GX1NTTDNfQ1RSTCxTU0xfUl9DSEFOTkVMX0lEX05PVF9QMjU2KTsKLSsJCQlicmVhazsKLSsJCQl9Ci0rCQlpZiAocy0+dGxzZXh0X2NoYW5uZWxfaWRfcHJpdmF0ZSkKLSsJCQlFVlBfUEtFWV9mcmVlKHMtPnRsc2V4dF9jaGFubmVsX2lkX3ByaXZhdGUpOwotKwkJcy0+dGxzZXh0X2NoYW5uZWxfaWRfcHJpdmF0ZSA9IChFVlBfUEtFWSopIHBhcmc7Ci0rCQlyZXQgPSAxOwotKwkJYnJlYWs7Ci0rCi0rCWNhc2UgU1NMX0NUUkxfR0VUX0NIQU5ORUxfSUQ6Ci0rCQlpZiAoIXMtPnNlcnZlcikKLSsJCQlicmVhazsKLSsJCWlmICghcy0+czMtPnRsc2V4dF9jaGFubmVsX2lkX3ZhbGlkKQotKwkJCWJyZWFrOwotKwkJbWVtY3B5KHBhcmcsIHMtPnMzLT50bHNleHRfY2hhbm5lbF9pZCwgbGFyZyA8IDY0ID8gbGFyZyA6IDY0KTsKLSsJCXJldHVybiA2NDsKLSAKLSAjZW5kaWYgLyogIU9QRU5TU0xfTk9fVExTRVhUICovCi0gCWRlZmF1bHQ6Ci1AQCAtMzU2OSw2ICszNjA3LDEyIEBAIGxvbmcgc3NsM19jdHhfY3RybChTU0xfQ1RYICpjdHgsIGludCBjbWQKLSAJCQl9Ci0gCQlyZXR1cm4gMTsKLSAJCX0KLSsJY2FzZSBTU0xfQ1RSTF9DSEFOTkVMX0lEOgotKwkJLyogbXVzdCBiZSBjYWxsZWQgb24gYSBzZXJ2ZXIgKi8KLSsJCWlmIChjdHgtPm1ldGhvZC0+c3NsX2FjY2VwdCA9PSBzc2xfdW5kZWZpbmVkX2Z1bmN0aW9uKQotKwkJCXJldHVybiAwOwotKwkJY3R4LT50bHNleHRfY2hhbm5lbF9pZF9lbmFibGVkPTE7Ci0rCQlyZXR1cm4gMTsKLSAKLSAjaWZkZWYgVExTRVhUX1RZUEVfb3BhcXVlX3ByZl9pbnB1dAotIAljYXNlIFNTTF9DVFJMX1NFVF9UTFNFWFRfT1BBUVVFX1BSRl9JTlBVVF9DQl9BUkc6Ci1AQCAtMzYzNyw2ICszNjgxLDE4IEBAIGxvbmcgc3NsM19jdHhfY3RybChTU0xfQ1RYICpjdHgsIGludCBjbWQKLSAJCQl9Ci0gCQlicmVhazsKLSAKLSsJY2FzZSBTU0xfQ1RSTF9TRVRfQ0hBTk5FTF9JRDoKLSsJCWN0eC0+dGxzZXh0X2NoYW5uZWxfaWRfZW5hYmxlZCA9IDE7Ci0rCQlpZiAoRVZQX1BLRVlfYml0cyhwYXJnKSAhPSAyNTYpCi0rCQkJewotKwkJCVNTTGVycihTU0xfRl9TU0wzX0NUWF9DVFJMLFNTTF9SX0NIQU5ORUxfSURfTk9UX1AyNTYpOwotKwkJCWJyZWFrOwotKwkJCX0KLSsJCWlmIChjdHgtPnRsc2V4dF9jaGFubmVsX2lkX3ByaXZhdGUpCi0rCQkJRVZQX1BLRVlfZnJlZShjdHgtPnRsc2V4dF9jaGFubmVsX2lkX3ByaXZhdGUpOwotKwkJY3R4LT50bHNleHRfY2hhbm5lbF9pZF9wcml2YXRlID0gKEVWUF9QS0VZKikgcGFyZzsKLSsJCWJyZWFrOwotKwotIAlkZWZhdWx0OgotIAkJcmV0dXJuKDApOwotIAkJfQotLS0tIG9wZW5zc2wtMS4wLjFlLm9yaWcvc3NsL3MzX3NydnIuYwkyMDEzLTAzLTA1IDE4OjQ5OjMzLjIzMzI5NzI4MiArMDAwMAotKysrIG9wZW5zc2wtMS4wLjFlL3NzbC9zM19zcnZyLmMJMjAxMy0wMy0wNSAxODo0OTozMy40MTMyOTkyMzEgKzAwMDAKLUBAIC0xNTcsOCArMTU3LDExIEBACi0gI2luY2x1ZGUgPG9wZW5zc2wvYnVmZmVyLmg+Ci0gI2luY2x1ZGUgPG9wZW5zc2wvcmFuZC5oPgotICNpbmNsdWRlIDxvcGVuc3NsL29iamVjdHMuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9lYy5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2VjZHNhLmg+Ci0gI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+Ci0gI2luY2x1ZGUgPG9wZW5zc2wvaG1hYy5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL3NoYS5oPgotICNpbmNsdWRlIDxvcGVuc3NsL3g1MDkuaD4KLSAjaWZuZGVmIE9QRU5TU0xfTk9fREgKLSAjaW5jbHVkZSA8b3BlbnNzbC9kaC5oPgotQEAgLTYwOSwxNSArNjEyLDggQEAgaW50IHNzbDNfYWNjZXB0KFNTTCAqcykKLSAJCQkJICogdGhlIGNsaWVudCB1c2VzIGl0cyBrZXkgZnJvbSB0aGUgY2VydGlmaWNhdGUKLSAJCQkJICogZm9yIGtleSBleGNoYW5nZS4KLSAJCQkJICovCi0tI2lmIGRlZmluZWQoT1BFTlNTTF9OT19UTFNFWFQpIHx8IGRlZmluZWQoT1BFTlNTTF9OT19ORVhUUFJPVE9ORUcpCi0tCQkJCXMtPnN0YXRlPVNTTDNfU1RfU1JfRklOSVNIRURfQTsKLS0jZWxzZQotLQkJCQlpZiAocy0+czMtPm5leHRfcHJvdG9fbmVnX3NlZW4pCi0tCQkJCQlzLT5zdGF0ZT1TU0wzX1NUX1NSX05FWFRfUFJPVE9fQTsKLS0JCQkJZWxzZQotLQkJCQkJcy0+c3RhdGU9U1NMM19TVF9TUl9GSU5JU0hFRF9BOwotLSNlbmRpZgotIAkJCQlzLT5pbml0X251bSA9IDA7Ci0rCQkJCXMtPnN0YXRlPVNTTDNfU1RfU1JfUE9TVF9DTElFTlRfQ0VSVDsKLSAJCQkJfQotIAkJCWVsc2UgaWYgKFRMUzFfZ2V0X3ZlcnNpb24ocykgPj0gVExTMV8yX1ZFUlNJT04pCi0gCQkJCXsKLUBAIC02NzcsMTYgKzY3MywyOCBAQCBpbnQgc3NsM19hY2NlcHQoU1NMICpzKQotIAkJCXJldD1zc2wzX2dldF9jZXJ0X3ZlcmlmeShzKTsKLSAJCQlpZiAocmV0IDw9IDApIGdvdG8gZW5kOwotIAotLSNpZiBkZWZpbmVkKE9QRU5TU0xfTk9fVExTRVhUKSB8fCBkZWZpbmVkKE9QRU5TU0xfTk9fTkVYVFBST1RPTkVHKQotLQkJCXMtPnN0YXRlPVNTTDNfU1RfU1JfRklOSVNIRURfQTsKLS0jZWxzZQotLQkJCWlmIChzLT5zMy0+bmV4dF9wcm90b19uZWdfc2VlbikKLSsJCQlzLT5zdGF0ZT1TU0wzX1NUX1NSX1BPU1RfQ0xJRU5UX0NFUlQ7Ci0rCQkJcy0+aW5pdF9udW09MDsKLSsJCQlicmVhazsKLSsKLSsJCWNhc2UgU1NMM19TVF9TUl9QT1NUX0NMSUVOVF9DRVJUOiB7Ci0rCQkJY2hhciBuZXh0X3Byb3RvX25lZyA9IDA7Ci0rCQkJY2hhciBjaGFubmVsX2lkID0gMDsKLSsjaWYgIWRlZmluZWQoT1BFTlNTTF9OT19UTFNFWFQpCi0rIyBpZiAhZGVmaW5lZChPUEVOU1NMX05PX05FWFRQUk9UT05FRykKLSsJCQluZXh0X3Byb3RvX25lZyA9IHMtPnMzLT5uZXh0X3Byb3RvX25lZ19zZWVuOwotKyMgZW5kaWYKLSsJCQljaGFubmVsX2lkID0gcy0+czMtPnRsc2V4dF9jaGFubmVsX2lkX3ZhbGlkOwotKyNlbmRpZgotKwotKwkJCWlmIChuZXh0X3Byb3RvX25lZykKLSAJCQkJcy0+c3RhdGU9U1NMM19TVF9TUl9ORVhUX1BST1RPX0E7Ci0rCQkJZWxzZSBpZiAoY2hhbm5lbF9pZCkKLSsJCQkJcy0+c3RhdGU9U1NMM19TVF9TUl9DSEFOTkVMX0lEX0E7Ci0gCQkJZWxzZQotIAkJCQlzLT5zdGF0ZT1TU0wzX1NUX1NSX0ZJTklTSEVEX0E7Ci0tI2VuZGlmCi0tCQkJcy0+aW5pdF9udW09MDsKLSAJCQlicmVhazsKLSsJCX0KLSAKLSAjaWYgIWRlZmluZWQoT1BFTlNTTF9OT19UTFNFWFQpICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fTkVYVFBST1RPTkVHKQotIAkJY2FzZSBTU0wzX1NUX1NSX05FWFRfUFJPVE9fQToKLUBAIC02OTQsNiArNzAyLDE5IEBAIGludCBzc2wzX2FjY2VwdChTU0wgKnMpCi0gCQkJcmV0PXNzbDNfZ2V0X25leHRfcHJvdG8ocyk7Ci0gCQkJaWYgKHJldCA8PSAwKSBnb3RvIGVuZDsKLSAJCQlzLT5pbml0X251bSA9IDA7Ci0rCQkJaWYgKHMtPnMzLT50bHNleHRfY2hhbm5lbF9pZF92YWxpZCkKLSsJCQkJcy0+c3RhdGU9U1NMM19TVF9TUl9DSEFOTkVMX0lEX0E7Ci0rCQkJZWxzZQotKwkJCQlzLT5zdGF0ZT1TU0wzX1NUX1NSX0ZJTklTSEVEX0E7Ci0rCQkJYnJlYWs7Ci0rI2VuZGlmCi0rCi0rI2lmICFkZWZpbmVkKE9QRU5TU0xfTk9fVExTRVhUKQotKwkJY2FzZSBTU0wzX1NUX1NSX0NIQU5ORUxfSURfQToKLSsJCWNhc2UgU1NMM19TVF9TUl9DSEFOTkVMX0lEX0I6Ci0rCQkJcmV0PXNzbDNfZ2V0X2NoYW5uZWxfaWQocyk7Ci0rCQkJaWYgKHJldCA8PSAwKSBnb3RvIGVuZDsKLSsJCQlzLT5pbml0X251bSA9IDA7Ci0gCQkJcy0+c3RhdGU9U1NMM19TVF9TUl9GSU5JU0hFRF9BOwotIAkJCWJyZWFrOwotICNlbmRpZgotQEAgLTc2NSwxNiArNzg2LDcgQEAgaW50IHNzbDNfYWNjZXB0KFNTTCAqcykKLSAJCQlpZiAocmV0IDw9IDApIGdvdG8gZW5kOwotIAkJCXMtPnN0YXRlPVNTTDNfU1RfU1dfRkxVU0g7Ci0gCQkJaWYgKHMtPmhpdCkKLS0JCQkJewotLSNpZiBkZWZpbmVkKE9QRU5TU0xfTk9fVExTRVhUKSB8fCBkZWZpbmVkKE9QRU5TU0xfTk9fTkVYVFBST1RPTkVHKQotLQkJCQlzLT5zMy0+dG1wLm5leHRfc3RhdGU9U1NMM19TVF9TUl9GSU5JU0hFRF9BOwotLSNlbHNlCi0tCQkJCWlmIChzLT5zMy0+bmV4dF9wcm90b19uZWdfc2VlbikKLS0JCQkJCXMtPnMzLT50bXAubmV4dF9zdGF0ZT1TU0wzX1NUX1NSX05FWFRfUFJPVE9fQTsKLS0JCQkJZWxzZQotLQkJCQkJcy0+czMtPnRtcC5uZXh0X3N0YXRlPVNTTDNfU1RfU1JfRklOSVNIRURfQTsKLS0jZW5kaWYKLS0JCQkJfQotKwkJCQlzLT5zMy0+dG1wLm5leHRfc3RhdGU9U1NMM19TVF9TUl9QT1NUX0NMSUVOVF9DRVJUOwotIAkJCWVsc2UKLSAJCQkJcy0+czMtPnRtcC5uZXh0X3N0YXRlPVNTTF9TVF9PSzsKLSAJCQlzLT5pbml0X251bT0wOwotQEAgLTM2MTAsNCArMzYyMiwxNDAgQEAgaW50IHNzbDNfZ2V0X25leHRfcHJvdG8oU1NMICpzKQotIAlyZXR1cm4gMTsKLSAJfQotICMgZW5kaWYKLSsKLSsvKiBzc2wzX2dldF9jaGFubmVsX2lkIHJlYWRzIGFuZCB2ZXJpZmllcyBhIENsaWVudElEIGhhbmRzaGFrZSBtZXNzYWdlLiAqLwotK2ludCBzc2wzX2dldF9jaGFubmVsX2lkKFNTTCAqcykKLSsJewotKwlpbnQgcmV0ID0gLTEsIG9rOwotKwlsb25nIG47Ci0rCWNvbnN0IHVuc2lnbmVkIGNoYXIgKnA7Ci0rCXVuc2lnbmVkIHNob3J0IGV4dGVuc2lvbl90eXBlLCBleHRlbnNpb25fbGVuOwotKwlFQ19HUk9VUCogcDI1NiA9IE5VTEw7Ci0rCUVDX0tFWSoga2V5ID0gTlVMTDsKLSsJRUNfUE9JTlQqIHBvaW50ID0gTlVMTDsKLSsJRUNEU0FfU0lHIHNpZzsKLSsJQklHTlVNIHgsIHk7Ci0rCi0rCWlmIChzLT5zdGF0ZSA9PSBTU0wzX1NUX1NSX0NIQU5ORUxfSURfQSAmJiBzLT5pbml0X251bSA9PSAwKQotKwkJewotKwkJLyogVGhlIGZpcnN0IHRpbWUgdGhhdCB3ZSdyZSBjYWxsZWQgd2UgdGFrZSB0aGUgY3VycmVudAotKwkJICogaGFuZHNoYWtlIGhhc2ggYW5kIHN0b3JlIGl0LiAqLwotKwkJRVZQX01EX0NUWCBtZF9jdHg7Ci0rCQl1bnNpZ25lZCBpbnQgbGVuOwotKwotKwkJRVZQX01EX0NUWF9pbml0KCZtZF9jdHgpOwotKwkJRVZQX0RpZ2VzdEluaXRfZXgoJm1kX2N0eCwgRVZQX3NoYTI1NigpLCBOVUxMKTsKLSsJCWlmICghdGxzMV9jaGFubmVsX2lkX2hhc2goJm1kX2N0eCwgcykpCi0rCQkJcmV0dXJuIC0xOwotKwkJbGVuID0gc2l6ZW9mKHMtPnMzLT50bHNleHRfY2hhbm5lbF9pZCk7Ci0rCQlFVlBfRGlnZXN0RmluYWwoJm1kX2N0eCwgcy0+czMtPnRsc2V4dF9jaGFubmVsX2lkLCAmbGVuKTsKLSsJCUVWUF9NRF9DVFhfY2xlYW51cCgmbWRfY3R4KTsKLSsJCX0KLSsKLSsJbiA9IHMtPm1ldGhvZC0+c3NsX2dldF9tZXNzYWdlKHMsCi0rCQlTU0wzX1NUX1NSX0NIQU5ORUxfSURfQSwKLSsJCVNTTDNfU1RfU1JfQ0hBTk5FTF9JRF9CLAotKwkJU1NMM19NVF9FTkNSWVBURURfRVhURU5TSU9OUywKLSsJCTIgKyAyICsgVExTRVhUX0NIQU5ORUxfSURfU0laRSwKLSsJCSZvayk7Ci0rCi0rCWlmICghb2spCi0rCQlyZXR1cm4oKGludCluKTsKLSsKLSsJc3NsM19maW5pc2hfbWFjKHMsICh1bnNpZ25lZCBjaGFyKilzLT5pbml0X2J1Zi0+ZGF0YSwgcy0+aW5pdF9udW0gKyA0KTsKLSsKLSsJLyogcy0+c3RhdGUgZG9lc24ndCByZWZsZWN0IHdoZXRoZXIgQ2hhbmdlQ2lwaGVyU3BlYyBoYXMgYmVlbiByZWNlaXZlZAotKwkgKiBpbiB0aGlzIGhhbmRzaGFrZSwgYnV0IHMtPnMzLT5jaGFuZ2VfY2lwaGVyX3NwZWMgZG9lcyAod2lsbCBiZSByZXNldAotKwkgKiBieSBzc2wzX2dldF9maW5pc2hlZCkuICovCi0rCWlmICghcy0+czMtPmNoYW5nZV9jaXBoZXJfc3BlYykKLSsJCXsKLSsJCVNTTGVycihTU0xfRl9TU0wzX0dFVF9DSEFOTkVMX0lELFNTTF9SX0dPVF9DSEFOTkVMX0lEX0JFRk9SRV9BX0NDUyk7Ci0rCQlyZXR1cm4gLTE7Ci0rCQl9Ci0rCi0rCWlmIChuICE9IDIgKyAyICsgVExTRVhUX0NIQU5ORUxfSURfU0laRSkKLSsJCXsKLSsJCVNTTGVycihTU0xfRl9TU0wzX0dFVF9DSEFOTkVMX0lELFNTTF9SX0lOVkFMSURfTUVTU0FHRSk7Ci0rCQlyZXR1cm4gLTE7Ci0rCQl9Ci0rCi0rCXAgPSAodW5zaWduZWQgY2hhciAqKXMtPmluaXRfbXNnOwotKwotKwkvKiBUaGUgcGF5bG9hZCBsb29rcyBsaWtlOgotKwkgKiAgIHVpbnQxNiBleHRlbnNpb25fdHlwZQotKwkgKiAgIHVpbnQxNiBleHRlbnNpb25fbGVuOwotKwkgKiAgIHVpbnQ4IHhbMzJdOwotKwkgKiAgIHVpbnQ4IHlbMzJdOwotKwkgKiAgIHVpbnQ4IHJbMzJdOwotKwkgKiAgIHVpbnQ4IHNbMzJdOwotKwkgKi8KLSsJbjJzKHAsIGV4dGVuc2lvbl90eXBlKTsKLSsJbjJzKHAsIGV4dGVuc2lvbl9sZW4pOwotKwotKwlpZiAoZXh0ZW5zaW9uX3R5cGUgIT0gVExTRVhUX1RZUEVfY2hhbm5lbF9pZCB8fAotKwkgICAgZXh0ZW5zaW9uX2xlbiAhPSBUTFNFWFRfQ0hBTk5FTF9JRF9TSVpFKQotKwkJewotKwkJU1NMZXJyKFNTTF9GX1NTTDNfR0VUX0NIQU5ORUxfSUQsU1NMX1JfSU5WQUxJRF9NRVNTQUdFKTsKLSsJCXJldHVybiAtMTsKLSsJCX0KLSsKLSsJcDI1NiA9IEVDX0dST1VQX25ld19ieV9jdXJ2ZV9uYW1lKE5JRF9YOV82Ml9wcmltZTI1NnYxKTsKLSsJaWYgKCFwMjU2KQotKwkJewotKwkJU1NMZXJyKFNTTF9GX1NTTDNfR0VUX0NIQU5ORUxfSUQsU1NMX1JfTk9fUDI1Nl9TVVBQT1JUKTsKLSsJCXJldHVybiAtMTsKLSsJCX0KLSsKLSsJQk5faW5pdCgmeCk7Ci0rCUJOX2luaXQoJnkpOwotKwlzaWcuciA9IEJOX25ldygpOwotKwlzaWcucyA9IEJOX25ldygpOwotKwotKwlpZiAoQk5fYmluMmJuKHAgKyAgMCwgMzIsICZ4KSA9PSBOVUxMIHx8Ci0rCSAgICBCTl9iaW4yYm4ocCArIDMyLCAzMiwgJnkpID09IE5VTEwgfHwKLSsJICAgIEJOX2JpbjJibihwICsgNjQsIDMyLCBzaWcucikgPT0gTlVMTCB8fAotKwkgICAgQk5fYmluMmJuKHAgKyA5NiwgMzIsIHNpZy5zKSA9PSBOVUxMKQotKwkJZ290byBlcnI7Ci0rCi0rCXBvaW50ID0gRUNfUE9JTlRfbmV3KHAyNTYpOwotKwlpZiAoIXBvaW50IHx8Ci0rCSAgICAhRUNfUE9JTlRfc2V0X2FmZmluZV9jb29yZGluYXRlc19HRnAocDI1NiwgcG9pbnQsICZ4LCAmeSwgTlVMTCkpCi0rCQlnb3RvIGVycjsKLSsKLSsJa2V5ID0gRUNfS0VZX25ldygpOwotKwlpZiAoIWtleSB8fAotKwkgICAgIUVDX0tFWV9zZXRfZ3JvdXAoa2V5LCBwMjU2KSB8fAotKwkgICAgIUVDX0tFWV9zZXRfcHVibGljX2tleShrZXksIHBvaW50KSkKLSsJCWdvdG8gZXJyOwotKwotKwkvKiBXZSBzdG9yZWQgdGhlIGhhbmRzaGFrZSBoYXNoIGluIHx0bHNleHRfY2hhbm5lbF9pZHwgdGhlIGZpcnN0IHRpbWUKLSsJICogdGhhdCB3ZSB3ZXJlIGNhbGxlZC4gKi8KLSsJc3dpdGNoIChFQ0RTQV9kb192ZXJpZnkocy0+czMtPnRsc2V4dF9jaGFubmVsX2lkLCBTSEEyNTZfRElHRVNUX0xFTkdUSCwgJnNpZywga2V5KSkgewotKwljYXNlIDE6Ci0rCQlicmVhazsKLSsJY2FzZSAwOgotKwkJU1NMZXJyKFNTTF9GX1NTTDNfR0VUX0NIQU5ORUxfSUQsU1NMX1JfQ0hBTk5FTF9JRF9TSUdOQVRVUkVfSU5WQUxJRCk7Ci0rCQlzLT5zMy0+dGxzZXh0X2NoYW5uZWxfaWRfdmFsaWQgPSAwOwotKwkJZ290byBlcnI7Ci0rCWRlZmF1bHQ6Ci0rCQlzLT5zMy0+dGxzZXh0X2NoYW5uZWxfaWRfdmFsaWQgPSAwOwotKwkJZ290byBlcnI7Ci0rCX0KLSsKLSsJbWVtY3B5KHMtPnMzLT50bHNleHRfY2hhbm5lbF9pZCwgcCwgNjQpOwotKwlyZXQgPSAxOwotKwotK2VycjoKLSsJQk5fZnJlZSgmeCk7Ci0rCUJOX2ZyZWUoJnkpOwotKwlCTl9mcmVlKHNpZy5yKTsKLSsJQk5fZnJlZShzaWcucyk7Ci0rCWlmIChrZXkpCi0rCQlFQ19LRVlfZnJlZShrZXkpOwotKwlpZiAocG9pbnQpCi0rCQlFQ19QT0lOVF9mcmVlKHBvaW50KTsKLSsJaWYgKHAyNTYpCi0rCQlFQ19HUk9VUF9mcmVlKHAyNTYpOwotKwlyZXR1cm4gcmV0OwotKwl9Ci0gI2VuZGlmCi0tLS0gb3BlbnNzbC0xLjAuMWUub3JpZy9zc2wvc3NsLmgJMjAxMy0wMy0wNSAxODo0OTozMy4yMzMyOTcyODIgKzAwMDAKLSsrKyBvcGVuc3NsLTEuMC4xZS9zc2wvc3NsLmgJMjAxMy0wMy0wNSAxODo0OTozMy40MTMyOTkyMzEgKzAwMDAKLUBAIC05ODEsNiArOTgxLDEyIEBAIHN0cnVjdCBzc2xfY3R4X3N0Ci0gIyBlbmRpZgotICAgICAgICAgLyogU1JUUCBwcm9maWxlcyB3ZSBhcmUgd2lsbGluZyB0byBkbyBmcm9tIFJGQyA1NzY0ICovCi0gICAgICAgICBTVEFDS19PRihTUlRQX1BST1RFQ1RJT05fUFJPRklMRSkgKnNydHBfcHJvZmlsZXM7ICAKLSsKLSsJLyogSWYgdHJ1ZSwgYSBjbGllbnQgd2lsbCBhZHZlcnRpc2UgdGhlIENoYW5uZWwgSUQgZXh0ZW5zaW9uIGFuZCBhCi0rCSAqIHNlcnZlciB3aWxsIGVjaG8gaXQuICovCi0rCWNoYXIgdGxzZXh0X2NoYW5uZWxfaWRfZW5hYmxlZDsKLSsJLyogVGhlIGNsaWVudCdzIENoYW5uZWwgSUQgcHJpdmF0ZSBrZXkuICovCi0rCUVWUF9QS0VZICp0bHNleHRfY2hhbm5lbF9pZF9wcml2YXRlOwotICNlbmRpZgotIAl9OwotIAotQEAgLTEwMjIsNiArMTAyOCwxMCBAQCBMSEFTSF9PRihTU0xfU0VTU0lPTikgKlNTTF9DVFhfc2Vzc2lvbnMoCi0gCVNTTF9DVFhfY3RybChjdHgsU1NMX0NUUkxfU0VTU19USU1FT1VUUywwLE5VTEwpCi0gI2RlZmluZSBTU0xfQ1RYX3Nlc3NfY2FjaGVfZnVsbChjdHgpIFwKLSAJU1NMX0NUWF9jdHJsKGN0eCxTU0xfQ1RSTF9TRVNTX0NBQ0hFX0ZVTEwsMCxOVUxMKQotKy8qIFNTTF9DVFhfZW5hYmxlX3Rsc19jaGFubmVsX2lkIGNvbmZpZ3VyZXMgYSBUTFMgc2VydmVyIHRvIGFjY2VwdCBUTFMgY2xpZW50Ci0rICogSURzIGZyb20gY2xpZW50cy4gUmV0dXJucyAxIG9uIHN1Y2Nlc3MuICovCi0rI2RlZmluZSBTU0xfQ1RYX2VuYWJsZV90bHNfY2hhbm5lbF9pZChjdHgpIFwKLSsJU1NMX0NUWF9jdHJsKGN0eCxTU0xfQ1RSTF9DSEFOTkVMX0lELDAsTlVMTCkKLSAKLSB2b2lkIFNTTF9DVFhfc2Vzc19zZXRfbmV3X2NiKFNTTF9DVFggKmN0eCwgaW50ICgqbmV3X3Nlc3Npb25fY2IpKHN0cnVjdCBzc2xfc3QgKnNzbCxTU0xfU0VTU0lPTiAqc2VzcykpOwotIGludCAoKlNTTF9DVFhfc2Vzc19nZXRfbmV3X2NiKFNTTF9DVFggKmN0eCkpKHN0cnVjdCBzc2xfc3QgKnNzbCwgU1NMX1NFU1NJT04gKnNlc3MpOwotQEAgLTEzNDgsNiArMTM1OCwxMyBAQCBzdHJ1Y3Qgc3NsX3N0Ci0gCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0gCXVuc2lnbmVkIGludCB0bHNleHRfaGJfcGVuZGluZzsgLyogSW5kaWNhdGVzIGlmIGEgSGVhcnRiZWF0UmVxdWVzdCBpcyBpbiBmbGlnaHQgKi8KLSAJdW5zaWduZWQgaW50IHRsc2V4dF9oYl9zZXE7ICAgICAvKiBIZWFydGJlYXRSZXF1ZXN0IHNlcXVlbmNlIG51bWJlciAqLwotKwotKwkvKiBDb3BpZWQgZnJvbSB0aGUgU1NMX0NUWC4gRm9yIGEgc2VydmVyLCBtZWFucyB0aGF0IHdlJ2xsIGFjY2VwdAotKwkgKiBDaGFubmVsIElEcyBmcm9tIGNsaWVudHMuIEZvciBhIGNsaWVudCwgbWVhbnMgdGhhdCB3ZSdsbCBhZHZlcnRpc2UKLSsJICogc3VwcG9ydC4gKi8KLSsJY2hhciB0bHNleHRfY2hhbm5lbF9pZF9lbmFibGVkOwotKwkvKiBUaGUgY2xpZW50J3MgQ2hhbm5lbCBJRCBwcml2YXRlIGtleS4gKi8KLSsJRVZQX1BLRVkgKnRsc2V4dF9jaGFubmVsX2lkX3ByaXZhdGU7Ci0gI2Vsc2UKLSAjZGVmaW5lIHNlc3Npb25fY3R4IGN0eAotICNlbmRpZiAvKiBPUEVOU1NMX05PX1RMU0VYVCAqLwotQEAgLTE2MDUsNiArMTYyMiw5IEBAIERFQ0xBUkVfUEVNX3J3KFNTTF9TRVNTSU9OLCBTU0xfU0VTU0lPTikKLSAjZGVmaW5lIFNTTF9DVFJMX0dFVF9UTFNfRVhUX0hFQVJUQkVBVF9QRU5ESU5HCQk4NgotICNkZWZpbmUgU1NMX0NUUkxfU0VUX1RMU19FWFRfSEVBUlRCRUFUX05PX1JFUVVFU1RTCTg3Ci0gI2VuZGlmCi0rI2RlZmluZSBTU0xfQ1RSTF9DSEFOTkVMX0lECQkJODgKLSsjZGVmaW5lIFNTTF9DVFJMX0dFVF9DSEFOTkVMX0lECQkJODkKLSsjZGVmaW5lIFNTTF9DVFJMX1NFVF9DSEFOTkVMX0lECQkJOTAKLSAjZW5kaWYKLSAKLSAjZGVmaW5lIERUTFNfQ1RSTF9HRVRfVElNRU9VVAkJNzMKLUBAIC0xNjUyLDYgKzE2NzIsMjUgQEAgREVDTEFSRV9QRU1fcncoU1NMX1NFU1NJT04sIFNTTF9TRVNTSU9OKQotICNkZWZpbmUgU1NMX3NldF90bXBfZWNkaChzc2wsZWNkaCkgXAotIAlTU0xfY3RybChzc2wsU1NMX0NUUkxfU0VUX1RNUF9FQ0RILDAsKGNoYXIgKillY2RoKQotIAotKy8qIFNTTF9lbmFibGVfdGxzX2NoYW5uZWxfaWQgY29uZmlndXJlcyBhIFRMUyBzZXJ2ZXIgdG8gYWNjZXB0IFRMUyBjbGllbnQKLSsgKiBJRHMgZnJvbSBjbGllbnRzLiBSZXR1cm5zIDEgb24gc3VjY2Vzcy4gKi8KLSsjZGVmaW5lIFNTTF9lbmFibGVfdGxzX2NoYW5uZWxfaWQoY3R4KSBcCi0rCVNTTF9jdHJsKGN0eCxTU0xfQ1RSTF9DSEFOTkVMX0lELDAsTlVMTCkKLSsvKiBTU0xfc2V0MV90bHNfY2hhbm5lbF9pZCBjb25maWd1cmVzIGEgVExTIGNsaWVudCB0byBzZW5kIGEgVExTIENoYW5uZWwgSUQgdG8KLSsgKiBjb21wYXRpYmxlIHNlcnZlcnMuIHByaXZhdGVfa2V5IG11c3QgYmUgYSBQLTI1NiBFVlBfUEtFWSouIFJldHVybnMgMSBvbgotKyAqIHN1Y2Nlc3MuICovCi0rI2RlZmluZSBTU0xfc2V0MV90bHNfY2hhbm5lbF9pZChzLCBwcml2YXRlX2tleSkgXAotKwlTU0xfY3RybChzLFNTTF9DVFJMX1NFVF9DSEFOTkVMX0lELDAsKHZvaWQqKXByaXZhdGVfa2V5KQotKyNkZWZpbmUgU1NMX0NUWF9zZXQxX3Rsc19jaGFubmVsX2lkKGN0eCwgcHJpdmF0ZV9rZXkpIFwKLSsJU1NMX0NUWF9jdHJsKGN0eCxTU0xfQ1RSTF9TRVRfQ0hBTk5FTF9JRCwwLCh2b2lkKilwcml2YXRlX2tleSkKLSsvKiBTU0xfZ2V0X3Rsc19jaGFubmVsX2lkIGdldHMgdGhlIGNsaWVudCdzIFRMUyBDaGFubmVsIElEIGZyb20gYSBzZXJ2ZXIgU1NMKgotKyAqIGFuZCBjb3BpZXMgdXAgdG8gdGhlIGZpcnN0IHxjaGFubmVsX2lkX2xlbnwgYnl0ZXMgaW50byB8Y2hhbm5lbF9pZHwuIFRoZQotKyAqIENoYW5uZWwgSUQgY29uc2lzdHMgb2YgdGhlIGNsaWVudCdzIFAtMjU2IHB1YmxpYyBrZXkgYXMgYW4gKHgseSkgcGFpciB3aGVyZQotKyAqIGVhY2ggaXMgYSAzMi1ieXRlLCBiaWctZW5kaWFuIGZpZWxkIGVsZW1lbnQuIFJldHVybnMgMCBpZiB0aGUgY2xpZW50IGRpZG4ndAotKyAqIG9mZmVyIGEgQ2hhbm5lbCBJRCBhbmQgdGhlIGxlbmd0aCBvZiB0aGUgY29tcGxldGUgQ2hhbm5lbCBJRCBvdGhlcndpc2UuICovCi0rI2RlZmluZSBTU0xfZ2V0X3Rsc19jaGFubmVsX2lkKGN0eCwgY2hhbm5lbF9pZCwgY2hhbm5lbF9pZF9sZW4pIFwKLSsJU1NMX2N0cmwoY3R4LFNTTF9DVFJMX0dFVF9DSEFOTkVMX0lELGNoYW5uZWxfaWRfbGVuLCh2b2lkKiljaGFubmVsX2lkKQotKwotICNkZWZpbmUgU1NMX0NUWF9hZGRfZXh0cmFfY2hhaW5fY2VydChjdHgseDUwOSkgXAotIAlTU0xfQ1RYX2N0cmwoY3R4LFNTTF9DVFJMX0VYVFJBX0NIQUlOX0NFUlQsMCwoY2hhciAqKXg1MDkpCi0gI2RlZmluZSBTU0xfQ1RYX2dldF9leHRyYV9jaGFpbl9jZXJ0cyhjdHgscHg1MDkpIFwKLUBAIC0xNjg2LDYgKzE3MjUsNyBAQCBpbnQJU1NMX0NJUEhFUl9nZXRfYml0cyhjb25zdCBTU0xfQ0lQSEVSCi0gY2hhciAqCVNTTF9DSVBIRVJfZ2V0X3ZlcnNpb24oY29uc3QgU1NMX0NJUEhFUiAqYyk7Ci0gY29uc3QgY2hhciAqCVNTTF9DSVBIRVJfZ2V0X25hbWUoY29uc3QgU1NMX0NJUEhFUiAqYyk7Ci0gdW5zaWduZWQgbG9uZyAJU1NMX0NJUEhFUl9nZXRfaWQoY29uc3QgU1NMX0NJUEhFUiAqYyk7Ci0rY29uc3QgY2hhciogU1NMX0NJUEhFUl9hdXRoZW50aWNhdGlvbl9tZXRob2QoY29uc3QgU1NMX0NJUEhFUiogY2lwaGVyKTsKLSAKLSBpbnQJU1NMX2dldF9mZChjb25zdCBTU0wgKnMpOwotIGludAlTU0xfZ2V0X3JmZChjb25zdCBTU0wgKnMpOwotQEAgLTIxNDksNiArMjE4OSw3IEBAIHZvaWQgRVJSX2xvYWRfU1NMX3N0cmluZ3Modm9pZCk7Ci0gI2RlZmluZSBTU0xfRl9TU0wzX0dFVF9DRVJUSUZJQ0FURV9SRVFVRVNUCQkgMTM1Ci0gI2RlZmluZSBTU0xfRl9TU0wzX0dFVF9DRVJUX1NUQVRVUwkJCSAyODkKLSAjZGVmaW5lIFNTTF9GX1NTTDNfR0VUX0NFUlRfVkVSSUZZCQkJIDEzNgotKyNkZWZpbmUgU1NMX0ZfU1NMM19HRVRfQ0hBTk5FTF9JRAkJCSAzMTcKLSAjZGVmaW5lIFNTTF9GX1NTTDNfR0VUX0NMSUVOVF9DRVJUSUZJQ0FURQkJIDEzNwotICNkZWZpbmUgU1NMX0ZfU1NMM19HRVRfQ0xJRU5UX0hFTExPCQkJIDEzOAotICNkZWZpbmUgU1NMX0ZfU1NMM19HRVRfQ0xJRU5UX0tFWV9FWENIQU5HRQkJIDEzOQotQEAgLTIxNjgsNiArMjIwOSw3IEBAIHZvaWQgRVJSX2xvYWRfU1NMX3N0cmluZ3Modm9pZCk7Ci0gI2RlZmluZSBTU0xfRl9TU0wzX1JFQURfQllURVMJCQkJIDE0OAotICNkZWZpbmUgU1NMX0ZfU1NMM19SRUFEX04JCQkJIDE0OQotICNkZWZpbmUgU1NMX0ZfU1NMM19TRU5EX0NFUlRJRklDQVRFX1JFUVVFU1QJCSAxNTAKLSsjZGVmaW5lIFNTTF9GX1NTTDNfU0VORF9DSEFOTkVMX0lECQkJIDMxOAotICNkZWZpbmUgU1NMX0ZfU1NMM19TRU5EX0NMSUVOVF9DRVJUSUZJQ0FURQkJIDE1MQotICNkZWZpbmUgU1NMX0ZfU1NMM19TRU5EX0NMSUVOVF9LRVlfRVhDSEFOR0UJCSAxNTIKLSAjZGVmaW5lIFNTTF9GX1NTTDNfU0VORF9DTElFTlRfVkVSSUZZCQkJIDE1MwotQEAgLTIzMzUsMTIgKzIzNzcsMTUgQEAgdm9pZCBFUlJfbG9hZF9TU0xfc3RyaW5ncyh2b2lkKTsKLSAjZGVmaW5lIFNTTF9SX0JJT19OT1RfU0VUCQkJCSAxMjgKLSAjZGVmaW5lIFNTTF9SX0JMT0NLX0NJUEhFUl9QQURfSVNfV1JPTkcJCQkgMTI5Ci0gI2RlZmluZSBTU0xfUl9CTl9MSUIJCQkJCSAxMzAKLSsjZGVmaW5lIFNTTF9SX0NBTk5PVF9TRVJJQUxJWkVfUFVCTElDX0tFWQkJIDM3NgotICNkZWZpbmUgU1NMX1JfQ0FfRE5fTEVOR1RIX01JU01BVENICQkJIDEzMQotICNkZWZpbmUgU1NMX1JfQ0FfRE5fVE9PX0xPTkcJCQkJIDEzMgotICNkZWZpbmUgU1NMX1JfQ0NTX1JFQ0VJVkVEX0VBUkxZCQkJIDEzMwotICNkZWZpbmUgU1NMX1JfQ0VSVElGSUNBVEVfVkVSSUZZX0ZBSUxFRAkJCSAxMzQKLSAjZGVmaW5lIFNTTF9SX0NFUlRfTEVOR1RIX01JU01BVENICQkJIDEzNQotICNkZWZpbmUgU1NMX1JfQ0hBTExFTkdFX0lTX0RJRkZFUkVOVAkJCSAxMzYKLSsjZGVmaW5lIFNTTF9SX0NIQU5ORUxfSURfTk9UX1AyNTYJCQkgMzc1Ci0rI2RlZmluZSBTU0xfUl9DSEFOTkVMX0lEX1NJR05BVFVSRV9JTlZBTElECQkgMzcxCi0gI2RlZmluZSBTU0xfUl9DSVBIRVJfQ09ERV9XUk9OR19MRU5HVEgJCQkgMTM3Ci0gI2RlZmluZSBTU0xfUl9DSVBIRVJfT1JfSEFTSF9VTkFWQUlMQUJMRQkJIDEzOAotICNkZWZpbmUgU1NMX1JfQ0lQSEVSX1RBQkxFX1NSQ19FUlJPUgkJCSAxMzkKLUBAIC0yMzUzLDYgKzIzOTgsNyBAQCB2b2lkIEVSUl9sb2FkX1NTTF9zdHJpbmdzKHZvaWQpOwotICNkZWZpbmUgU1NMX1JfQ09OTkVDVElPTl9JRF9JU19ESUZGRVJFTlQJCSAxNDMKLSAjZGVmaW5lIFNTTF9SX0NPTk5FQ1RJT05fVFlQRV9OT1RfU0VUCQkJIDE0NAotICNkZWZpbmUgU1NMX1JfQ09PS0lFX01JU01BVENICQkJCSAzMDgKLSsjZGVmaW5lIFNTTF9SX0QySV9FQ0RTQV9TSUcJCQkJIDM3OQotICNkZWZpbmUgU1NMX1JfREFUQV9CRVRXRUVOX0NDU19BTkRfRklOSVNIRUQJCSAxNDUKLSAjZGVmaW5lIFNTTF9SX0RBVEFfTEVOR1RIX1RPT19MT05HCQkJIDE0NgotICNkZWZpbmUgU1NMX1JfREVDUllQVElPTl9GQUlMRUQJCQkJIDE0NwotQEAgLTIzNzAsOSArMjQxNiwxMiBAQCB2b2lkIEVSUl9sb2FkX1NTTF9zdHJpbmdzKHZvaWQpOwotICNkZWZpbmUgU1NMX1JfRU5DUllQVEVEX0xFTkdUSF9UT09fTE9ORwkJCSAxNTAKLSAjZGVmaW5lIFNTTF9SX0VSUk9SX0dFTkVSQVRJTkdfVE1QX1JTQV9LRVkJCSAyODIKLSAjZGVmaW5lIFNTTF9SX0VSUk9SX0lOX1JFQ0VJVkVEX0NJUEhFUl9MSVNUCQkgMTUxCi0rI2RlZmluZSBTU0xfUl9FVlBfRElHRVNUU0lHTkZJTkFMX0ZBSUxFRAkJIDM3NwotKyNkZWZpbmUgU1NMX1JfRVZQX0RJR0VTVFNJR05JTklUX0ZBSUxFRAkJCSAzNzgKLSAjZGVmaW5lIFNTTF9SX0VYQ0VTU0lWRV9NRVNTQUdFX1NJWkUJCQkgMTUyCi0gI2RlZmluZSBTU0xfUl9FWFRSQV9EQVRBX0lOX01FU1NBR0UJCQkgMTUzCi0gI2RlZmluZSBTU0xfUl9HT1RfQV9GSU5fQkVGT1JFX0FfQ0NTCQkJIDE1NAotKyNkZWZpbmUgU1NMX1JfR09UX0NIQU5ORUxfSURfQkVGT1JFX0FfQ0NTCQkgMzcyCi0gI2RlZmluZSBTU0xfUl9HT1RfTkVYVF9QUk9UT19CRUZPUkVfQV9DQ1MJCSAzNTUKLSAjZGVmaW5lIFNTTF9SX0dPVF9ORVhUX1BST1RPX1dJVEhPVVRfRVhURU5TSU9OCQkgMzU2Ci0gI2RlZmluZSBTU0xfUl9IVFRQU19QUk9YWV9SRVFVRVNUCQkJIDE1NQotQEAgLTIzODIsNiArMjQzMSw3IEBAIHZvaWQgRVJSX2xvYWRfU1NMX3N0cmluZ3Modm9pZCk7Ci0gI2RlZmluZSBTU0xfUl9JTlZBTElEX0NIQUxMRU5HRV9MRU5HVEgJCQkgMTU4Ci0gI2RlZmluZSBTU0xfUl9JTlZBTElEX0NPTU1BTkQJCQkJIDI4MAotICNkZWZpbmUgU1NMX1JfSU5WQUxJRF9DT01QUkVTU0lPTl9BTEdPUklUSE0JCSAzNDEKLSsjZGVmaW5lIFNTTF9SX0lOVkFMSURfTUVTU0FHRQkJCQkgMzc0Ci0gI2RlZmluZSBTU0xfUl9JTlZBTElEX1BVUlBPU0UJCQkJIDI3OAotICNkZWZpbmUgU1NMX1JfSU5WQUxJRF9TUlBfVVNFUk5BTUUJCQkgMzU3Ci0gI2RlZmluZSBTU0xfUl9JTlZBTElEX1NUQVRVU19SRVNQT05TRQkJCSAzMjgKLUBAIC0yNDM2LDYgKzI0ODYsNyBAQCB2b2lkIEVSUl9sb2FkX1NTTF9zdHJpbmdzKHZvaWQpOwotICNkZWZpbmUgU1NMX1JfTk9fQ09NUFJFU1NJT05fU1BFQ0lGSUVECQkJIDE4NwotICNkZWZpbmUgU1NMX1JfTk9fR09TVF9DRVJUSUZJQ0FURV9TRU5UX0JZX1BFRVIJCSAzMzAKLSAjZGVmaW5lIFNTTF9SX05PX01FVEhPRF9TUEVDSUZJRUQJCQkgMTg4Ci0rI2RlZmluZSBTU0xfUl9OT19QMjU2X1NVUFBPUlQJCQkJIDM3MwotICNkZWZpbmUgU1NMX1JfTk9fUFJJVkFURUtFWQkJCQkgMTg5Ci0gI2RlZmluZSBTU0xfUl9OT19QUklWQVRFX0tFWV9BU1NJR05FRAkJCSAxOTAKLSAjZGVmaW5lIFNTTF9SX05PX1BST1RPQ09MU19BVkFJTEFCTEUJCQkgMTkxCi0tLS0gb3BlbnNzbC0xLjAuMWUub3JpZy9zc2wvc3NsMy5oCTIwMTMtMDMtMDUgMTg6NDk6MzMuMjIzMjk3MTczICswMDAwCi0rKysgb3BlbnNzbC0xLjAuMWUvc3NsL3NzbDMuaAkyMDEzLTAzLTA1IDE4OjQ5OjMzLjQxMzI5OTIzMSArMDAwMAotQEAgLTUzOSw2ICs1MzksMTcgQEAgdHlwZWRlZiBzdHJ1Y3Qgc3NsM19zdGF0ZV9zdAotCSBjaGFyIGlzX3Byb2JhYmx5X3NhZmFyaTsKLSAjZW5kaWYgLyogIU9QRU5TU0xfTk9fRUMgKi8KLSAjZW5kaWYgLyogIU9QRU5TU0xfTk9fVExTRVhUICovCi0rCi0rCS8qIEluIGEgY2xpZW50LCB0aGlzIG1lYW5zIHRoYXQgdGhlIHNlcnZlciBzdXBwb3J0ZWQgQ2hhbm5lbCBJRCBhbmQgdGhhdAotKwkgKiBhIENoYW5uZWwgSUQgd2FzIHNlbnQuIEluIGEgc2VydmVyIGl0IG1lYW5zIHRoYXQgd2UgZWNob2VkIHN1cHBvcnQKLSsJICogZm9yIENoYW5uZWwgSURzIGFuZCB0aGF0IHRsc2V4dF9jaGFubmVsX2lkIHdpbGwgYmUgdmFsaWQgYWZ0ZXIgdGhlCi0rCSAqIGhhbmRzaGFrZS4gKi8KLSsJY2hhciB0bHNleHRfY2hhbm5lbF9pZF92YWxpZDsKLSsJLyogRm9yIGEgc2VydmVyOgotKwkgKiAgICAgSWYgfHRsc2V4dF9jaGFubmVsX2lkX3ZhbGlkfCBpcyB0cnVlLCB0aGVuIHRoaXMgY29udGFpbnMgdGhlCi0rCSAqICAgICB2ZXJpZmllZCBDaGFubmVsIElEIGZyb20gdGhlIGNsaWVudDogYSBQMjU2IHBvaW50LCAoeCx5KSwgd2hlcmUKLSsJICogICAgIGVhY2ggYXJlIGJpZy1lbmRpYW4gdmFsdWVzLiAqLwotKwl1bnNpZ25lZCBjaGFyIHRsc2V4dF9jaGFubmVsX2lkWzY0XTsKLSAJfSBTU0wzX1NUQVRFOwotIAotICNlbmRpZgotQEAgLTU4Myw2ICs1OTQsOCBAQCB0eXBlZGVmIHN0cnVjdCBzc2wzX3N0YXRlX3N0Ci0gI2RlZmluZSBTU0wzX1NUX0NXX05FWFRfUFJPVE9fQQkJKDB4MjAwfFNTTF9TVF9DT05ORUNUKQotICNkZWZpbmUgU1NMM19TVF9DV19ORVhUX1BST1RPX0IJCSgweDIwMXxTU0xfU1RfQ09OTkVDVCkKLSAjZW5kaWYKLSsjZGVmaW5lIFNTTDNfU1RfQ1dfQ0hBTk5FTF9JRF9BCQkoMHgyMTB8U1NMX1NUX0NPTk5FQ1QpCi0rI2RlZmluZSBTU0wzX1NUX0NXX0NIQU5ORUxfSURfQgkJKDB4MjExfFNTTF9TVF9DT05ORUNUKQotICNkZWZpbmUgU1NMM19TVF9DV19GSU5JU0hFRF9BCQkoMHgxQjB8U1NMX1NUX0NPTk5FQ1QpCi0gI2RlZmluZSBTU0wzX1NUX0NXX0ZJTklTSEVEX0IJCSgweDFCMXxTU0xfU1RfQ09OTkVDVCkKLSAvKiByZWFkIGZyb20gc2VydmVyICovCi1AQCAtNjMyLDEwICs2NDUsMTMgQEAgdHlwZWRlZiBzdHJ1Y3Qgc3NsM19zdGF0ZV9zdAotICNkZWZpbmUgU1NMM19TVF9TUl9DRVJUX1ZSRllfQgkJKDB4MUExfFNTTF9TVF9BQ0NFUFQpCi0gI2RlZmluZSBTU0wzX1NUX1NSX0NIQU5HRV9BCQkoMHgxQjB8U1NMX1NUX0FDQ0VQVCkKLSAjZGVmaW5lIFNTTDNfU1RfU1JfQ0hBTkdFX0IJCSgweDFCMXxTU0xfU1RfQUNDRVBUKQotKyNkZWZpbmUgU1NMM19TVF9TUl9QT1NUX0NMSUVOVF9DRVJUCSgweDFCRnxTU0xfU1RfQUNDRVBUKQotICNpZm5kZWYgT1BFTlNTTF9OT19ORVhUUFJPVE9ORUcKLSAjZGVmaW5lIFNTTDNfU1RfU1JfTkVYVF9QUk9UT19BCQkoMHgyMTB8U1NMX1NUX0FDQ0VQVCkKLSAjZGVmaW5lIFNTTDNfU1RfU1JfTkVYVF9QUk9UT19CCQkoMHgyMTF8U1NMX1NUX0FDQ0VQVCkKLSAjZW5kaWYKLSsjZGVmaW5lIFNTTDNfU1RfU1JfQ0hBTk5FTF9JRF9BCQkoMHgyMjB8U1NMX1NUX0FDQ0VQVCkKLSsjZGVmaW5lIFNTTDNfU1RfU1JfQ0hBTk5FTF9JRF9CCQkoMHgyMjF8U1NMX1NUX0FDQ0VQVCkKLSAjZGVmaW5lIFNTTDNfU1RfU1JfRklOSVNIRURfQQkJKDB4MUMwfFNTTF9TVF9BQ0NFUFQpCi0gI2RlZmluZSBTU0wzX1NUX1NSX0ZJTklTSEVEX0IJCSgweDFDMXxTU0xfU1RfQUNDRVBUKQotIC8qIHdyaXRlIHRvIGNsaWVudCAqLwotQEAgLTY2Myw2ICs2NzksNyBAQCB0eXBlZGVmIHN0cnVjdCBzc2wzX3N0YXRlX3N0Ci0gI2lmbmRlZiBPUEVOU1NMX05PX05FWFRQUk9UT05FRwotICNkZWZpbmUgU1NMM19NVF9ORVhUX1BST1RPCQkJNjcKLSAjZW5kaWYKLSsjZGVmaW5lIFNTTDNfTVRfRU5DUllQVEVEX0VYVEVOU0lPTlMJCTIwMwotICNkZWZpbmUgRFRMUzFfTVRfSEVMTE9fVkVSSUZZX1JFUVVFU1QgICAgMwotIAotIAotLS0tIG9wZW5zc2wtMS4wLjFlLm9yaWcvc3NsL3NzbF9lcnIuYwkyMDEzLTAzLTA1IDE4OjQ5OjMzLjI0MzI5NzM5MiArMDAwMAotKysrIG9wZW5zc2wtMS4wLjFlL3NzbC9zc2xfZXJyLmMJMjAxMy0wMy0wNSAxODo0OTozMy40MTMyOTkyMzEgKzAwMDAKLUBAIC0xNTEsNiArMTUxLDcgQEAgc3RhdGljIEVSUl9TVFJJTkdfREFUQSBTU0xfc3RyX2Z1bmN0c1tdPQotIHtFUlJfRlVOQyhTU0xfRl9TU0wzX0dFVF9DRVJUSUZJQ0FURV9SRVFVRVNUKSwJIlNTTDNfR0VUX0NFUlRJRklDQVRFX1JFUVVFU1QifSwKLSB7RVJSX0ZVTkMoU1NMX0ZfU1NMM19HRVRfQ0VSVF9TVEFUVVMpLAkiU1NMM19HRVRfQ0VSVF9TVEFUVVMifSwKLSB7RVJSX0ZVTkMoU1NMX0ZfU1NMM19HRVRfQ0VSVF9WRVJJRlkpLAkiU1NMM19HRVRfQ0VSVF9WRVJJRlkifSwKLSt7RVJSX0ZVTkMoU1NMX0ZfU1NMM19HRVRfQ0hBTk5FTF9JRCksCSJTU0wzX0dFVF9DSEFOTkVMX0lEIn0sCi0ge0VSUl9GVU5DKFNTTF9GX1NTTDNfR0VUX0NMSUVOVF9DRVJUSUZJQ0FURSksCSJTU0wzX0dFVF9DTElFTlRfQ0VSVElGSUNBVEUifSwKLSB7RVJSX0ZVTkMoU1NMX0ZfU1NMM19HRVRfQ0xJRU5UX0hFTExPKSwJIlNTTDNfR0VUX0NMSUVOVF9IRUxMTyJ9LAotIHtFUlJfRlVOQyhTU0xfRl9TU0wzX0dFVF9DTElFTlRfS0VZX0VYQ0hBTkdFKSwJIlNTTDNfR0VUX0NMSUVOVF9LRVlfRVhDSEFOR0UifSwKLUBAIC0xNzAsNiArMTcxLDcgQEAgc3RhdGljIEVSUl9TVFJJTkdfREFUQSBTU0xfc3RyX2Z1bmN0c1tdPQotIHtFUlJfRlVOQyhTU0xfRl9TU0wzX1JFQURfQllURVMpLAkiU1NMM19SRUFEX0JZVEVTIn0sCi0ge0VSUl9GVU5DKFNTTF9GX1NTTDNfUkVBRF9OKSwJIlNTTDNfUkVBRF9OIn0sCi0ge0VSUl9GVU5DKFNTTF9GX1NTTDNfU0VORF9DRVJUSUZJQ0FURV9SRVFVRVNUKSwJIlNTTDNfU0VORF9DRVJUSUZJQ0FURV9SRVFVRVNUIn0sCi0re0VSUl9GVU5DKFNTTF9GX1NTTDNfU0VORF9DSEFOTkVMX0lEKSwJIlNTTDNfU0VORF9DSEFOTkVMX0lEIn0sCi0ge0VSUl9GVU5DKFNTTF9GX1NTTDNfU0VORF9DTElFTlRfQ0VSVElGSUNBVEUpLAkiU1NMM19TRU5EX0NMSUVOVF9DRVJUSUZJQ0FURSJ9LAotIHtFUlJfRlVOQyhTU0xfRl9TU0wzX1NFTkRfQ0xJRU5UX0tFWV9FWENIQU5HRSksCSJTU0wzX1NFTkRfQ0xJRU5UX0tFWV9FWENIQU5HRSJ9LAotIHtFUlJfRlVOQyhTU0xfRl9TU0wzX1NFTkRfQ0xJRU5UX1ZFUklGWSksCSJTU0wzX1NFTkRfQ0xJRU5UX1ZFUklGWSJ9LAotQEAgLTMzOSwxMiArMzQxLDE1IEBAIHN0YXRpYyBFUlJfU1RSSU5HX0RBVEEgU1NMX3N0cl9yZWFzb25zW10KLSB7RVJSX1JFQVNPTihTU0xfUl9CSU9fTk9UX1NFVCkgICAgICAgICAgICwiYmlvIG5vdCBzZXQifSwKLSB7RVJSX1JFQVNPTihTU0xfUl9CTE9DS19DSVBIRVJfUEFEX0lTX1dST05HKSwiYmxvY2sgY2lwaGVyIHBhZCBpcyB3cm9uZyJ9LAotIHtFUlJfUkVBU09OKFNTTF9SX0JOX0xJQikgICAgICAgICAgICAgICAgLCJibiBsaWIifSwKLSt7RVJSX1JFQVNPTihTU0xfUl9DQU5OT1RfU0VSSUFMSVpFX1BVQkxJQ19LRVkpLCJjYW5ub3Qgc2VyaWFsaXplIHB1YmxpYyBrZXkifSwKLSB7RVJSX1JFQVNPTihTU0xfUl9DQV9ETl9MRU5HVEhfTUlTTUFUQ0gpICwiY2EgZG4gbGVuZ3RoIG1pc21hdGNoIn0sCi0ge0VSUl9SRUFTT04oU1NMX1JfQ0FfRE5fVE9PX0xPTkcpICAgICAgICAsImNhIGRuIHRvbyBsb25nIn0sCi0ge0VSUl9SRUFTT04oU1NMX1JfQ0NTX1JFQ0VJVkVEX0VBUkxZKSAgICAsImNjcyByZWNlaXZlZCBlYXJseSJ9LAotIHtFUlJfUkVBU09OKFNTTF9SX0NFUlRJRklDQVRFX1ZFUklGWV9GQUlMRUQpLCJjZXJ0aWZpY2F0ZSB2ZXJpZnkgZmFpbGVkIn0sCi0ge0VSUl9SRUFTT04oU1NMX1JfQ0VSVF9MRU5HVEhfTUlTTUFUQ0gpICAsImNlcnQgbGVuZ3RoIG1pc21hdGNoIn0sCi0ge0VSUl9SRUFTT04oU1NMX1JfQ0hBTExFTkdFX0lTX0RJRkZFUkVOVCksImNoYWxsZW5nZSBpcyBkaWZmZXJlbnQifSwKLSt7RVJSX1JFQVNPTihTU0xfUl9DSEFOTkVMX0lEX05PVF9QMjU2KSAgICwiY2hhbm5lbCBpZCBub3QgcDI1NiJ9LAotK3tFUlJfUkVBU09OKFNTTF9SX0NIQU5ORUxfSURfU0lHTkFUVVJFX0lOVkFMSUQpLCJDaGFubmVsIElEIHNpZ25hdHVyZSBpbnZhbGlkIn0sCi0ge0VSUl9SRUFTT04oU1NMX1JfQ0lQSEVSX0NPREVfV1JPTkdfTEVOR1RIKSwiY2lwaGVyIGNvZGUgd3JvbmcgbGVuZ3RoIn0sCi0ge0VSUl9SRUFTT04oU1NMX1JfQ0lQSEVSX09SX0hBU0hfVU5BVkFJTEFCTEUpLCJjaXBoZXIgb3IgaGFzaCB1bmF2YWlsYWJsZSJ9LAotIHtFUlJfUkVBU09OKFNTTF9SX0NJUEhFUl9UQUJMRV9TUkNfRVJST1IpLCJjaXBoZXIgdGFibGUgc3JjIGVycm9yIn0sCi1AQCAtMzU3LDYgKzM2Miw3IEBAIHN0YXRpYyBFUlJfU1RSSU5HX0RBVEEgU1NMX3N0cl9yZWFzb25zW10KLSB7RVJSX1JFQVNPTihTU0xfUl9DT05ORUNUSU9OX0lEX0lTX0RJRkZFUkVOVCksImNvbm5lY3Rpb24gaWQgaXMgZGlmZmVyZW50In0sCi0ge0VSUl9SRUFTT04oU1NMX1JfQ09OTkVDVElPTl9UWVBFX05PVF9TRVQpLCJjb25uZWN0aW9uIHR5cGUgbm90IHNldCJ9LAotIHtFUlJfUkVBU09OKFNTTF9SX0NPT0tJRV9NSVNNQVRDSCkgICAgICAgLCJjb29raWUgbWlzbWF0Y2gifSwKLSt7RVJSX1JFQVNPTihTU0xfUl9EMklfRUNEU0FfU0lHKSAgICAgICAgICwiZDJpIGVjZHNhIHNpZyJ9LAotIHtFUlJfUkVBU09OKFNTTF9SX0RBVEFfQkVUV0VFTl9DQ1NfQU5EX0ZJTklTSEVEKSwiZGF0YSBiZXR3ZWVuIGNjcyBhbmQgZmluaXNoZWQifSwKLSB7RVJSX1JFQVNPTihTU0xfUl9EQVRBX0xFTkdUSF9UT09fTE9ORykgICwiZGF0YSBsZW5ndGggdG9vIGxvbmcifSwKLSB7RVJSX1JFQVNPTihTU0xfUl9ERUNSWVBUSU9OX0ZBSUxFRCkgICAgICwiZGVjcnlwdGlvbiBmYWlsZWQifSwKLUBAIC0zNzQsOSArMzgwLDEyIEBAIHN0YXRpYyBFUlJfU1RSSU5HX0RBVEEgU1NMX3N0cl9yZWFzb25zW10KLSB7RVJSX1JFQVNPTihTU0xfUl9FTkNSWVBURURfTEVOR1RIX1RPT19MT05HKSwiZW5jcnlwdGVkIGxlbmd0aCB0b28gbG9uZyJ9LAotIHtFUlJfUkVBU09OKFNTTF9SX0VSUk9SX0dFTkVSQVRJTkdfVE1QX1JTQV9LRVkpLCJlcnJvciBnZW5lcmF0aW5nIHRtcCByc2Ega2V5In0sCi0ge0VSUl9SRUFTT04oU1NMX1JfRVJST1JfSU5fUkVDRUlWRURfQ0lQSEVSX0xJU1QpLCJlcnJvciBpbiByZWNlaXZlZCBjaXBoZXIgbGlzdCJ9LAotK3tFUlJfUkVBU09OKFNTTF9SX0VWUF9ESUdFU1RTSUdORklOQUxfRkFJTEVEKSwiZXZwIGRpZ2VzdHNpZ25maW5hbCBmYWlsZWQifSwKLSt7RVJSX1JFQVNPTihTU0xfUl9FVlBfRElHRVNUU0lHTklOSVRfRkFJTEVEKSwiZXZwIGRpZ2VzdHNpZ25pbml0IGZhaWxlZCJ9LAotIHtFUlJfUkVBU09OKFNTTF9SX0VYQ0VTU0lWRV9NRVNTQUdFX1NJWkUpLCJleGNlc3NpdmUgbWVzc2FnZSBzaXplIn0sCi0ge0VSUl9SRUFTT04oU1NMX1JfRVhUUkFfREFUQV9JTl9NRVNTQUdFKSAsImV4dHJhIGRhdGEgaW4gbWVzc2FnZSJ9LAotIHtFUlJfUkVBU09OKFNTTF9SX0dPVF9BX0ZJTl9CRUZPUkVfQV9DQ1MpLCJnb3QgYSBmaW4gYmVmb3JlIGEgY2NzIn0sCi0re0VSUl9SRUFTT04oU1NMX1JfR09UX0NIQU5ORUxfSURfQkVGT1JFX0FfQ0NTKSwiZ290IENoYW5uZWwgSUQgYmVmb3JlIGEgY2NzIn0sCi0ge0VSUl9SRUFTT04oU1NMX1JfR09UX05FWFRfUFJPVE9fQkVGT1JFX0FfQ0NTKSwiZ290IG5leHQgcHJvdG8gYmVmb3JlIGEgY2NzIn0sCi0ge0VSUl9SRUFTT04oU1NMX1JfR09UX05FWFRfUFJPVE9fV0lUSE9VVF9FWFRFTlNJT04pLCJnb3QgbmV4dCBwcm90byB3aXRob3V0IHNlZWluZyBleHRlbnNpb24ifSwKLSB7RVJSX1JFQVNPTihTU0xfUl9IVFRQU19QUk9YWV9SRVFVRVNUKSAgICwiaHR0cHMgcHJveHkgcmVxdWVzdCJ9LAotQEAgLTM4Niw2ICszOTUsNyBAQCBzdGF0aWMgRVJSX1NUUklOR19EQVRBIFNTTF9zdHJfcmVhc29uc1tdCi0ge0VSUl9SRUFTT04oU1NMX1JfSU5WQUxJRF9DSEFMTEVOR0VfTEVOR1RIKSwiaW52YWxpZCBjaGFsbGVuZ2UgbGVuZ3RoIn0sCi0ge0VSUl9SRUFTT04oU1NMX1JfSU5WQUxJRF9DT01NQU5EKSAgICAgICAsImludmFsaWQgY29tbWFuZCJ9LAotIHtFUlJfUkVBU09OKFNTTF9SX0lOVkFMSURfQ09NUFJFU1NJT05fQUxHT1JJVEhNKSwiaW52YWxpZCBjb21wcmVzc2lvbiBhbGdvcml0aG0ifSwKLSt7RVJSX1JFQVNPTihTU0xfUl9JTlZBTElEX01FU1NBR0UpICAgICAgICwiaW52YWxpZCBtZXNzYWdlIn0sCi0ge0VSUl9SRUFTT04oU1NMX1JfSU5WQUxJRF9QVVJQT1NFKSAgICAgICAsImludmFsaWQgcHVycG9zZSJ9LAotIHtFUlJfUkVBU09OKFNTTF9SX0lOVkFMSURfU1JQX1VTRVJOQU1FKSAgLCJpbnZhbGlkIHNycCB1c2VybmFtZSJ9LAotIHtFUlJfUkVBU09OKFNTTF9SX0lOVkFMSURfU1RBVFVTX1JFU1BPTlNFKSwiaW52YWxpZCBzdGF0dXMgcmVzcG9uc2UifSwKLUBAIC00NDAsNiArNDUwLDcgQEAgc3RhdGljIEVSUl9TVFJJTkdfREFUQSBTU0xfc3RyX3JlYXNvbnNbXQotIHtFUlJfUkVBU09OKFNTTF9SX05PX0NPTVBSRVNTSU9OX1NQRUNJRklFRCksIm5vIGNvbXByZXNzaW9uIHNwZWNpZmllZCJ9LAotIHtFUlJfUkVBU09OKFNTTF9SX05PX0dPU1RfQ0VSVElGSUNBVEVfU0VOVF9CWV9QRUVSKSwiUGVlciBoYXZlbid0IHNlbnQgR09TVCBjZXJ0aWZpY2F0ZSwgcmVxdWlyZWQgZm9yIHNlbGVjdGVkIGNpcGhlcnN1aXRlIn0sCi0ge0VSUl9SRUFTT04oU1NMX1JfTk9fTUVUSE9EX1NQRUNJRklFRCkgICAsIm5vIG1ldGhvZCBzcGVjaWZpZWQifSwKLSt7RVJSX1JFQVNPTihTU0xfUl9OT19QMjU2X1NVUFBPUlQpICAgICAgICwibm8gcDI1NiBzdXBwb3J0In0sCi0ge0VSUl9SRUFTT04oU1NMX1JfTk9fUFJJVkFURUtFWSkgICAgICAgICAsIm5vIHByaXZhdGVrZXkifSwKLSB7RVJSX1JFQVNPTihTU0xfUl9OT19QUklWQVRFX0tFWV9BU1NJR05FRCksIm5vIHByaXZhdGUga2V5IGFzc2lnbmVkIn0sCi0ge0VSUl9SRUFTT04oU1NMX1JfTk9fUFJPVE9DT0xTX0FWQUlMQUJMRSksIm5vIHByb3RvY29scyBhdmFpbGFibGUifSwKLS0tLSBvcGVuc3NsLTEuMC4xZS5vcmlnL3NzbC9zc2xfbGliLmMJMjAxMy0wMy0wNSAxODo0OTozMy4yNDMyOTczOTIgKzAwMDAKLSsrKyBvcGVuc3NsLTEuMC4xZS9zc2wvc3NsX2xpYi5jCTIwMTMtMDMtMDUgMTg6NDk6MzMuNDEzMjk5MjMxICswMDAwCi1AQCAtNTc5LDYgKzU3OSw4IEBAIHZvaWQgU1NMX2ZyZWUoU1NMICpzKQotIAkJc2tfT0NTUF9SRVNQSURfcG9wX2ZyZWUocy0+dGxzZXh0X29jc3BfaWRzLCBPQ1NQX1JFU1BJRF9mcmVlKTsKLSAJaWYgKHMtPnRsc2V4dF9vY3NwX3Jlc3ApCi0gCQlPUEVOU1NMX2ZyZWUocy0+dGxzZXh0X29jc3BfcmVzcCk7Ci0rCWlmIChzLT50bHNleHRfY2hhbm5lbF9pZF9wcml2YXRlKQotKwkJRVZQX1BLRVlfZnJlZShzLT50bHNleHRfY2hhbm5lbF9pZF9wcml2YXRlKTsKLSAjZW5kaWYKLSAKLSAJaWYgKHMtPmNsaWVudF9DQSAhPSBOVUxMKQotQEAgLTIwMDUsNiArMjAwNywxMSBAQCB2b2lkIFNTTF9DVFhfZnJlZShTU0xfQ1RYICphKQotIAkJc3NsX2J1Zl9mcmVlbGlzdF9mcmVlKGEtPnJidWZfZnJlZWxpc3QpOwotICNlbmRpZgotIAotKyNpZm5kZWYgT1BFTlNTTF9OT19UTFNFWFQKLSsJaWYgKGEtPnRsc2V4dF9jaGFubmVsX2lkX3ByaXZhdGUpCi0rCQlFVlBfUEtFWV9mcmVlKGEtPnRsc2V4dF9jaGFubmVsX2lkX3ByaXZhdGUpOwotKyNlbmRpZgotKwotIAlPUEVOU1NMX2ZyZWUoYSk7Ci0gCX0KLSAKLS0tLSBvcGVuc3NsLTEuMC4xZS5vcmlnL3NzbC9zc2xfbG9jbC5oCTIwMTMtMDMtMDUgMTg6NDk6MzMuMjQzMjk3MzkyICswMDAwCi0rKysgb3BlbnNzbC0xLjAuMWUvc3NsL3NzbF9sb2NsLmgJMjAxMy0wMy0wNSAxODo0OTozMy40MTMyOTkyMzEgKzAwMDAKLUBAIC0zNzgsNiArMzc4LDcgQEAKLSAgKiAoY3VycmVudGx5IHRoaXMgYWxzbyBnb2VzIGludG8gYWxnb3JpdGhtMikgKi8KLSAjZGVmaW5lIFRMUzFfU1RSRUFNX01BQyAweDA0Ci0gCi0rI2RlZmluZSBUTFNFWFRfQ0hBTk5FTF9JRF9TSVpFIDEyOAotIAotIAotIC8qCi1AQCAtMTAwNCw2ICsxMDA1LDcgQEAgaW50IHNzbDNfY2hlY2tfY2VydF9hbmRfYWxnb3JpdGhtKFNTTCAqcwotIGludCBzc2wzX2NoZWNrX2ZpbmlzaGVkKFNTTCAqcyk7Ci0gIyBpZm5kZWYgT1BFTlNTTF9OT19ORVhUUFJPVE9ORUcKLSBpbnQgc3NsM19zZW5kX25leHRfcHJvdG8oU1NMICpzKTsKLStpbnQgc3NsM19zZW5kX2NoYW5uZWxfaWQoU1NMICpzKTsKLSAjIGVuZGlmCi0gI2VuZGlmCi0gCi1AQCAtMTAyNiw2ICsxMDI4LDcgQEAgaW50IHNzbDNfZ2V0X2NlcnRfdmVyaWZ5KFNTTCAqcyk7Ci0gI2lmbmRlZiBPUEVOU1NMX05PX05FWFRQUk9UT05FRwotIGludCBzc2wzX2dldF9uZXh0X3Byb3RvKFNTTCAqcyk7Ci0gI2VuZGlmCi0raW50IHNzbDNfZ2V0X2NoYW5uZWxfaWQoU1NMICpzKTsKLSAKLSBpbnQgZHRsczFfc2VuZF9oZWxsb19yZXF1ZXN0KFNTTCAqcyk7Ci0gaW50IGR0bHMxX3NlbmRfc2VydmVyX2hlbGxvKFNTTCAqcyk7Ci1AQCAtMTEyMyw3ICsxMTI2LDkgQEAgaW50IHRsczEyX2dldF9zaWdhbmRoYXNoKHVuc2lnbmVkIGNoYXIgKgotIGludCB0bHMxMl9nZXRfc2lnaWQoY29uc3QgRVZQX1BLRVkgKnBrKTsKLSBjb25zdCBFVlBfTUQgKnRsczEyX2dldF9oYXNoKHVuc2lnbmVkIGNoYXIgaGFzaF9hbGcpOwotIAotK2ludCB0bHMxX2NoYW5uZWxfaWRfaGFzaChFVlBfTURfQ1RYICpjdHgsIFNTTCAqcyk7Ci0gI2VuZGlmCi0rCi0gRVZQX01EX0NUWCogc3NsX3JlcGxhY2VfaGFzaChFVlBfTURfQ1RYICoqaGFzaCxjb25zdCBFVlBfTUQgKm1kKSA7Ci0gdm9pZCBzc2xfY2xlYXJfaGFzaF9jdHgoRVZQX01EX0NUWCAqKmhhc2gpOwotIGludCBzc2xfYWRkX3NlcnZlcmhlbGxvX3JlbmVnb3RpYXRlX2V4dChTU0wgKnMsIHVuc2lnbmVkIGNoYXIgKnAsIGludCAqbGVuLAotLS0tIG9wZW5zc2wtMS4wLjFlLm9yaWcvc3NsL3QxX2xpYi5jCTIwMTMtMDMtMDUgMTg6NDk6MzMuMTczMjk2NjMzICswMDAwCi0rKysgb3BlbnNzbC0xLjAuMWUvc3NsL3QxX2xpYi5jCTIwMTMtMDMtMDUgMTg6NDk6MzMuNDEzMjk5MjMxICswMDAwCi1AQCAtNjQ5LDYgKzY0OSwxNiBAQCB1bnNpZ25lZCBjaGFyICpzc2xfYWRkX2NsaWVudGhlbGxvX3Rsc2V4Ci0gCQl9Ci0gI2VuZGlmCi0gCi0rCWlmIChzLT50bHNleHRfY2hhbm5lbF9pZF9lbmFibGVkKQotKwkJewotKwkJLyogVGhlIGNsaWVudCBhZHZlcnRpc2VzIGFuIGVtdHB5IGV4dGVuc2lvbiB0byBpbmRpY2F0ZSBpdHMKLSsJCSAqIHN1cHBvcnQgZm9yIENoYW5uZWwgSUQuICovCi0rCQlpZiAobGltaXQgLSByZXQgLSA0IDwgMCkKLSsJCQlyZXR1cm4gTlVMTDsKLSsJCXMybihUTFNFWFRfVFlQRV9jaGFubmVsX2lkLHJldCk7Ci0rCQlzMm4oMCxyZXQpOwotKwkJfQotKwotICNpZm5kZWYgT1BFTlNTTF9OT19TUlRQCi0gICAgICAgICBpZihTU0xfZ2V0X3NydHBfcHJvZmlsZXMocykpCi0gICAgICAgICAgICAgICAgIHsKLUBAIC04NTksNiArODY5LDE2IEBAIHVuc2lnbmVkIGNoYXIgKnNzbF9hZGRfc2VydmVyaGVsbG9fdGxzZXgKLSAJCX0KLSAjZW5kaWYKLSAKLSsJLyogSWYgdGhlIGNsaWVudCBhZHZlcnRpc2VkIHN1cHBvcnQgZm9yIENoYW5uZWwgSUQsIGFuZCB3ZSBoYXZlIGl0Ci0rCSAqIGVuYWJsZWQsIHRoZW4gd2Ugd2FudCB0byBlY2hvIGl0IGJhY2suICovCi0rCWlmIChzLT5zMy0+dGxzZXh0X2NoYW5uZWxfaWRfdmFsaWQpCi0rCQl7Ci0rCQlpZiAobGltaXQgLSByZXQgLSA0IDwgMCkKLSsJCQlyZXR1cm4gTlVMTDsKLSsJCXMybihUTFNFWFRfVFlQRV9jaGFubmVsX2lkLHJldCk7Ci0rCQlzMm4oMCxyZXQpOwotKwkJfQotKwotIAlpZiAoKGV4dGRhdGFsZW4gPSByZXQtcC0yKT09IDApIAotIAkJcmV0dXJuIHA7Ci0gCi1AQCAtMTMzMiw2ICsxMzUyLDkgQEAgaW50IHNzbF9wYXJzZV9jbGllbnRoZWxsb190bHNleHQoU1NMICpzLAotIAkJCX0KLSAjZW5kaWYKLSAKLSsJCWVsc2UgaWYgKHR5cGUgPT0gVExTRVhUX1RZUEVfY2hhbm5lbF9pZCAmJiBzLT50bHNleHRfY2hhbm5lbF9pZF9lbmFibGVkKQotKwkJCXMtPnMzLT50bHNleHRfY2hhbm5lbF9pZF92YWxpZCA9IDE7Ci0rCi0gCQkvKiBzZXNzaW9uIHRpY2tldCBwcm9jZXNzZWQgZWFybGllciAqLwotICNpZm5kZWYgT1BFTlNTTF9OT19TUlRQCi0gCQllbHNlIGlmICh0eXBlID09IFRMU0VYVF9UWVBFX3VzZV9zcnRwKQotQEAgLTE1NjIsNiArMTU4NSw5IEBAIGludCBzc2xfcGFyc2Vfc2VydmVyaGVsbG9fdGxzZXh0KFNTTCAqcywKLSAJCQlzLT5zMy0+bmV4dF9wcm90b19uZWdfc2VlbiA9IDE7Ci0gCQkJfQotICNlbmRpZgotKwkJZWxzZSBpZiAodHlwZSA9PSBUTFNFWFRfVFlQRV9jaGFubmVsX2lkKQotKwkJCXMtPnMzLT50bHNleHRfY2hhbm5lbF9pZF92YWxpZCA9IDE7Ci0rCi0gCQllbHNlIGlmICh0eXBlID09IFRMU0VYVF9UWVBFX3JlbmVnb3RpYXRlKQotIAkJCXsKLSAJCQlpZighc3NsX3BhcnNlX3NlcnZlcmhlbGxvX3JlbmVnb3RpYXRlX2V4dChzLCBkYXRhLCBzaXplLCBhbCkpCi1AQCAtMjYyMSwzICsyNjQ3LDM3IEBAIHRsczFfaGVhcnRiZWF0KFNTTCAqcykKLSAJcmV0dXJuIHJldDsKLSAJfQotICNlbmRpZgotKwotKyNpZiAhZGVmaW5lZChPUEVOU1NMX05PX1RMU0VYVCkKLSsvKiB0bHMxX2NoYW5uZWxfaWRfaGFzaCBjYWxjdWxhdGVzIHRoZSBzaWduZWQgZGF0YSBmb3IgYSBDaGFubmVsIElEIG9uIHRoZSBnaXZlbgotKyAqIFNTTCBjb25uZWN0aW9uIGFuZCB3cml0ZXMgaXQgdG8gfG1kfC4KLSsgKi8KLStpbnQKLSt0bHMxX2NoYW5uZWxfaWRfaGFzaChFVlBfTURfQ1RYICptZCwgU1NMICpzKQotKwl7Ci0rCUVWUF9NRF9DVFggY3R4OwotKwl1bnNpZ25lZCBjaGFyIHRlbXBfZGlnZXN0W0VWUF9NQVhfTURfU0laRV07Ci0rCXVuc2lnbmVkIHRlbXBfZGlnZXN0X2xlbjsKLSsJaW50IGk7Ci0rCXN0YXRpYyBjb25zdCBjaGFyIGtDbGllbnRJRE1hZ2ljW10gPSAiVExTIENoYW5uZWwgSUQgc2lnbmF0dXJlIjsKLSsKLSsJaWYgKHMtPnMzLT5oYW5kc2hha2VfYnVmZmVyKQotKwkJaWYgKCFzc2wzX2RpZ2VzdF9jYWNoZWRfcmVjb3JkcyhzKSkKLSsJCQlyZXR1cm4gMDsKLSsKLSsJRVZQX0RpZ2VzdFVwZGF0ZShtZCwga0NsaWVudElETWFnaWMsIHNpemVvZihrQ2xpZW50SURNYWdpYykpOwotKwotKwlFVlBfTURfQ1RYX2luaXQoJmN0eCk7Ci0rCWZvciAoaSA9IDA7IGkgPCBTU0xfTUFYX0RJR0VTVDsgaSsrKQotKwkJewotKwkJaWYgKHMtPnMzLT5oYW5kc2hha2VfZGdzdFtpXSA9PSBOVUxMKQotKwkJCWNvbnRpbnVlOwotKwkJRVZQX01EX0NUWF9jb3B5X2V4KCZjdHgsIHMtPnMzLT5oYW5kc2hha2VfZGdzdFtpXSk7Ci0rCQlFVlBfRGlnZXN0RmluYWxfZXgoJmN0eCwgdGVtcF9kaWdlc3QsICZ0ZW1wX2RpZ2VzdF9sZW4pOwotKwkJRVZQX0RpZ2VzdFVwZGF0ZShtZCwgdGVtcF9kaWdlc3QsIHRlbXBfZGlnZXN0X2xlbik7Ci0rCQl9Ci0rCUVWUF9NRF9DVFhfY2xlYW51cCgmY3R4KTsKLSsKLSsJcmV0dXJuIDE7Ci0rCX0KLSsjZW5kaWYKLS0tLSBvcGVuc3NsLTEuMC4xZS5vcmlnL3NzbC90bHMxLmgJMjAxMy0wMy0wNSAxODo0OTozMy4xNzMyOTY2MzMgKzAwMDAKLSsrKyBvcGVuc3NsLTEuMC4xZS9zc2wvdGxzMS5oCTIwMTMtMDMtMDUgMTg6NDk6MzMuNDEzMjk5MjMxICswMDAwCi1AQCAtMjQ4LDYgKzI0OCw5IEBAIGV4dGVybiAiQyIgewotICNkZWZpbmUgVExTRVhUX1RZUEVfbmV4dF9wcm90b19uZWcJCTEzMTcyCi0gI2VuZGlmCi0gCi0rLyogVGhpcyBpcyBub3QgYW4gSUFOQSBkZWZpbmVkIGV4dGVuc2lvbiBudW1iZXIgKi8KLSsjZGVmaW5lIFRMU0VYVF9UWVBFX2NoYW5uZWxfaWQJCQkzMDAzMQotKwotIC8qIE5hbWVUeXBlIHZhbHVlIGZyb20gUkZDIDM1NDYgKi8KLSAjZGVmaW5lIFRMU0VYVF9OQU1FVFlQRV9ob3N0X25hbWUgMAotIC8qIHN0YXR1cyByZXF1ZXN0IHZhbHVlIGZyb20gUkZDIDM1NDYgKi8KZGlmZiAtLWdpdCBhL3BhdGNoZXMvZWFybHlfY2NzLnBhdGNoIGIvcGF0Y2hlcy9lYXJseV9jY3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0YzMxZTYuLjAwMDAwMDAKLS0tIGEvcGF0Y2hlcy9lYXJseV9jY3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotLS0tIG9wZW5zc2wtMS4wLjFlLm9yaWcvc3NsL3MzX2NsbnQuYwotKysrIG9wZW5zc2wtMS4wLjFlL3NzbC9zM19jbG50LmMKLUBAIC02MDYsNyArNjA2LDcgQEAgaW50IHNzbDNfY29ubmVjdChTU0wgKnMpCi0gCi0gCQljYXNlIFNTTDNfU1RfQ1JfRklOSVNIRURfQToKLSAJCWNhc2UgU1NMM19TVF9DUl9GSU5JU0hFRF9COgotLQotKwkJCXMtPnMzLT5mbGFncyB8PSBTU0wzX0ZMQUdTX0NDU19PSzsKLSAJCQlyZXQ9c3NsM19nZXRfZmluaXNoZWQocyxTU0wzX1NUX0NSX0ZJTklTSEVEX0EsCi0gCQkJCVNTTDNfU1RfQ1JfRklOSVNIRURfQik7Ci0gCQkJaWYgKHJldCA8PSAwKSBnb3RvIGVuZDsKLUBAIC05MTUsNiArOTE2LDcgQEAKLSAJCVNTTGVycihTU0xfRl9TU0wzX0dFVF9TRVJWRVJfSEVMTE8sU1NMX1JfQVRURU1QVF9UT19SRVVTRV9TRVNTSU9OX0lOX0RJRkZFUkVOVF9DT05URVhUKTsKLSAJCWdvdG8gZl9lcnI7Ci0gCQl9Ci0rCSAgICBzLT5zMy0+ZmxhZ3MgfD0gU1NMM19GTEFHU19DQ1NfT0s7Ci0gCSAgICBzLT5oaXQ9MTsKLSAJICAgIH0KLSAJZWxzZQkvKiBhIG1pc3Mgb3IgY3JhcCBmcm9tIHRoZSBvdGhlciBlbmQgKi8KLS0tLSBvcGVuc3NsLTEuMC4xZS5vcmlnL3NzbC9zM19wa3QuYwotKysrIG9wZW5zc2wtMS4wLjFlL3NzbC9zM19wa3QuYwotQEAgLTEyOTcsNiArMTI5NywxMyBAQCBzdGFydDoKLSAJCQlnb3RvIGZfZXJyOwotIAkJCX0KLSAKLSsJCWlmICghKHMtPnMzLT5mbGFncyAmIFNTTDNfRkxBR1NfQ0NTX09LKSkKLSsJCQl7Ci0rCQkJYWw9U1NMX0FEX1VORVhQRUNURURfTUVTU0FHRTsKLSsJCQlTU0xlcnIoU1NMX0ZfU1NMM19SRUFEX0JZVEVTLFNTTF9SX1VORVhQRUNURURfQ0NTKTsKLSsJCQlnb3RvIGZfZXJyOwotKwkJCX0KLSsKLSAJCXJyLT5sZW5ndGg9MDsKLSAKLSAJCWlmIChzLT5tc2dfY2FsbGJhY2spCi1AQCAtMTQzMSw3ICsxNDM4LDEyIEBAIGludCBzc2wzX2RvX2NoYW5nZV9jaXBoZXJfc3BlYyhTU0wgKnMpCi0gCi0gCWlmIChzLT5zMy0+dG1wLmtleV9ibG9jayA9PSBOVUxMKQotIAkJewotLQkJaWYgKHMtPnNlc3Npb24gPT0gTlVMTCkgCi0rCQlpZiAocy0+c2Vzc2lvbi0+bWFzdGVyX2tleV9sZW5ndGggPT0gMCkKLSsJCQl7Ci0rCQkJU1NMZXJyKFNTTF9GX1NTTDNfRE9fQ0hBTkdFX0NJUEhFUl9TUEVDLFNTTF9SX1VORVhQRUNURURfQ0NTKTsKLSsJCQlyZXR1cm4gKDApOwotKwkJCX0KLSsJCWlmIChzLT5zZXNzaW9uID09IE5VTEwpCi0gCQkJewotIAkJCS8qIG1pZ2h0IGhhcHBlbiBpZiBkdGxzMV9yZWFkX2J5dGVzKCkgY2FsbHMgdGhpcyAqLwotIAkJCVNTTGVycihTU0xfRl9TU0wzX0RPX0NIQU5HRV9DSVBIRVJfU1BFQyxTU0xfUl9DQ1NfUkVDRUlWRURfRUFSTFkpOwotLS0tIG9wZW5zc2wtMS4wLjFlLm9yaWcvc3NsL3MzX3NydnIuYwotKysrIG9wZW5zc2wtMS4wLjFlL3NzbC9zM19zcnZyLmMKLUBAIC02NzAsNiArNjcwLDcgQEAgaW50IHNzbDNfYWNjZXB0KFNTTCAqcykKLSAJCWNhc2UgU1NMM19TVF9TUl9DRVJUX1ZSRllfQjoKLSAKLSAJCQkvKiB3ZSBzaG91bGQgZGVjaWRlIGlmIHdlIGV4cGVjdGVkIHRoaXMgb25lICovCi0rCQkJcy0+czMtPmZsYWdzIHw9IFNTTDNfRkxBR1NfQ0NTX09LOwotIAkJCXJldD1zc2wzX2dldF9jZXJ0X3ZlcmlmeShzKTsKLSAJCQlpZiAocmV0IDw9IDApIGdvdG8gZW5kOwotIAotQEAgLTY4Nyw2ICs2ODgsNyBAQCBpbnQgc3NsM19hY2NlcHQoU1NMICpzKQotIAkJCWNoYW5uZWxfaWQgPSBzLT5zMy0+dGxzZXh0X2NoYW5uZWxfaWRfdmFsaWQ7Ci0gI2VuZGlmCi0gCi0rCQkJcy0+czMtPmZsYWdzIHw9IFNTTDNfRkxBR1NfQ0NTX09LOwotIAkJCWlmIChuZXh0X3Byb3RvX25lZykKLSAJCQkJcy0+c3RhdGU9U1NMM19TVF9TUl9ORVhUX1BST1RPX0E7Ci0gCQkJZWxzZSBpZiAoY2hhbm5lbF9pZCkKLS0tLSBvcGVuc3NsLTEuMC4xZS5vcmlnL3NzbC9zc2wuaAotKysrIG9wZW5zc2wtMS4wLjFlL3NzbC9zc2wuaAotQEAgLTI2NDAsNiArMjY0MCw3IEBAIHZvaWQgRVJSX2xvYWRfU1NMX3N0cmluZ3Modm9pZCk7Ci0gI2RlZmluZSBTU0xfUl9XUk9OR19WRVJTSU9OX05VTUJFUgkJCSAyNjcKLSAjZGVmaW5lIFNTTF9SX1g1MDlfTElCCQkJCQkgMjY4Ci0gI2RlZmluZSBTU0xfUl9YNTA5X1ZFUklGSUNBVElPTl9TRVRVUF9QUk9CTEVNUwkJIDI2OQotKyNkZWZpbmUgU1NMX1JfVU5FWFBFQ1RFRF9DQ1MJCQkJIDM4OAotIAotICNpZmRlZiAgX19jcGx1c3BsdXMKLSB9Ci0tLS0gb3BlbnNzbC0xLjAuMWUub3JpZy9zc2wvc3NsMy5oCi0rKysgb3BlbnNzbC0xLjAuMWUvc3NsL3NzbDMuaAotQEAgLTM4OCw2ICszODgsMTAgQEAgdHlwZWRlZiBzdHJ1Y3Qgc3NsM19idWZmZXJfc3QKLSAjZGVmaW5lIFRMUzFfRkxBR1NfVExTX1BBRERJTkdfQlVHCQkweDAwMDgKLSAjZGVmaW5lIFRMUzFfRkxBR1NfU0tJUF9DRVJUX1ZFUklGWQkJMHgwMDEwCi0gI2RlZmluZSBUTFMxX0ZMQUdTX0tFRVBfSEFORFNIQUtFCQkweDAwMjAKLSsvKiBTU0wzX0ZMQUdTX0NDU19PSyBpbmRpY2F0ZXMgdGhhdCBhIENoYW5nZUNpcGhlclNwZWMgcmVjb3JkIGlzIGFjY2VwdGFibGUgYXQKLSsgKiB0aGlzIHBvaW50IGluIHRoZSBoYW5kc2hha2UuIElmIHRoaXMgZmxhZyBpcyBub3Qgc2V0IHRoZW4gcmVjZWl2ZWQgQ0NTCi0rICogcmVjb3JkcyB3aWxsIGNhdXNlIGEgZmF0YWwgZXJyb3IgZm9yIHRoZSBjb25uZWN0aW9uLiAqLwotKyNkZWZpbmUgU1NMM19GTEFHU19DQ1NfT0sJCQkweDAwODAKLSAgCi0gLyogU1NMM19GTEFHU19TR0NfUkVTVEFSVF9ET05FIGlzIHNldCB3aGVuIHdlCi0gICogcmVzdGFydCBhIGhhbmRzaGFrZSBiZWNhdXNlIG9mIE1TIFNHQyBhbmQgc28gcHJldmVudHMgdXMKLS0tLSBvcGVuc3NsLTEuMC4xZS5vcmlnL3NzbC9zc2xfZXJyLmMKLSsrKyBvcGVuc3NsLTEuMC4xZS9zc2wvc3NsX2Vyci5jCi1AQCAtNjA0LDYgKzYwNCw3IEBAIHN0YXRpYyBFUlJfU1RSSU5HX0RBVEEgU1NMX3N0cl9yZWFzb25zW10KLSB7RVJSX1JFQVNPTihTU0xfUl9XUk9OR19WRVJTSU9OX05VTUJFUikgICwid3JvbmcgdmVyc2lvbiBudW1iZXIifSwKLSB7RVJSX1JFQVNPTihTU0xfUl9YNTA5X0xJQikgICAgICAgICAgICAgICwieDUwOSBsaWIifSwKLSB7RVJSX1JFQVNPTihTU0xfUl9YNTA5X1ZFUklGSUNBVElPTl9TRVRVUF9QUk9CTEVNUyksIng1MDkgdmVyaWZpY2F0aW9uIHNldHVwIHByb2JsZW1zIn0sCi0re0VSUl9SRUFTT04oU1NMX1JfVU5FWFBFQ1RFRF9DQ1MpLCJ1bmV4cGVjdGVkIENDUyJ9LAotIHswLE5VTEx9Ci0gCX07Ci0gCmRpZmYgLS1naXQgYS9wYXRjaGVzL3BhZGRpbmdleHQucGF0Y2ggYi9wYXRjaGVzL3BhZGRpbmdleHQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3NTE0YmMuLjAwMDAwMDAKLS0tIGEvcGF0Y2hlcy9wYWRkaW5nZXh0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotRnJvbSA5MzM2ZWQ2MWMyNjI1NWYzMWZhYzI1NjNkMDkxMWZjMjlkMjE0M2ZkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWRhbSBMYW5nbGV5IDxhZ2xAY2hyb21pdW0ub3JnPgotRGF0ZTogV2VkLCAxMSBEZWMgMjAxMyAxNjoyNToxNyAtMDUwMAotU3ViamVjdDogQWRkIHBhZGRpbmcgZXh0ZW5zaW9uLgotCi1UaGlzIGNoYW5nZSBhZGRzIGEgcGFkZGluZyBleHRlbnNpb24sIHdoZW4gbmVlZGVkLCBpbiBvcmRlciB0byB3b3JrCi1hcm91bmQgYnVncyBpbiBGNSB0ZXJtaW5hdG9ycy4KLS0tLQotIHNzbC9zMjNfY2xudC5jIHwgIDUgKysrKy0KLSBzc2wvczNfY2xudC5jICB8ICA0ICsrKy0KLSBzc2wvdDFfbGliLmMgICB8IDI1ICsrKysrKysrKysrKysrKysrKysrKysrKysKLSBzc2wvdGxzMS5oICAgICB8ICA0ICsrKysKLSA0IGZpbGVzIGNoYW5nZWQsIDM2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zc2wvczIzX2NsbnQuYyBiL3NzbC9zMjNfY2xudC5jCi1pbmRleCA4NDY3MGI2Li44MTRhNGM2IDEwMDY0NAotLS0tIGEvc3NsL3MyM19jbG50LmMKLSsrKyBiL3NzbC9zMjNfY2xudC5jCi1AQCAtNDg3LDcgKzQ4NywxMCBAQCBzdGF0aWMgaW50IHNzbDIzX2NsaWVudF9oZWxsbyhTU0wgKnMpCi0gCQkJewotIAkJCS8qIGNyZWF0ZSBDbGllbnQgSGVsbG8gaW4gU1NMIDMuMC9UTFMgMS4wIGZvcm1hdCAqLwotIAotLQkJCS8qIGRvIHRoZSByZWNvcmQgaGVhZGVyICg1IGJ5dGVzKSBhbmQgaGFuZHNoYWtlIG1lc3NhZ2UgaGVhZGVyICg0IGJ5dGVzKSBsYXN0ICovCi0rCQkJLyogZG8gdGhlIHJlY29yZCBoZWFkZXIgKDUgYnl0ZXMpIGFuZCBoYW5kc2hha2UgbWVzc2FnZQotKwkJCSAqIGhlYWRlciAoNCBieXRlcykgbGFzdC4gTm90ZTogdGhlIGNvZGUgdG8gYWRkIHRoZQotKwkJCSAqIHBhZGRpbmcgZXh0ZW5zaW9uIGluIHQxX2xpYi5jIGRlcGVuZHMgb24gdGhlIHNpemUgb2YKLSsJCQkgKiB0aGlzIHByZWZpeC4gKi8KLSAJCQlkID0gcCA9ICYoYnVmWzldKTsKLSAJCQkKLSAJCQkqKHArKykgPSB2ZXJzaW9uX21ham9yOwotZGlmZiAtLWdpdCBhL3NzbC9zM19jbG50LmMgYi9zc2wvczNfY2xudC5jCi1pbmRleCA2N2VkZWFhLi5mMzdlOTA3IDEwMDY0NAotLS0tIGEvc3NsL3MzX2NsbnQuYwotKysrIGIvc3NsL3MzX2NsbnQuYwotQEAgLTc1MSw3ICs3NTEsOSBAQCBpbnQgc3NsM19jbGllbnRfaGVsbG8oU1NMICpzKQotIAkJaWYgKHNzbF9maWxsX2hlbGxvX3JhbmRvbShzLCAwLCBwLCBTU0wzX1JBTkRPTV9TSVpFKSA8PSAwKQotIAkJCWdvdG8gZXJyOwotIAotLQkJLyogRG8gdGhlIG1lc3NhZ2UgdHlwZSBhbmQgbGVuZ3RoIGxhc3QgKi8KLSsJCS8qIERvIHRoZSBtZXNzYWdlIHR5cGUgYW5kIGxlbmd0aCBsYXN0LgotKwkJICogTm90ZTogdGhlIGNvZGUgdG8gYWRkIHRoZSBwYWRkaW5nIGV4dGVuc2lvbiBpbiB0MV9saWIuYwotKwkJICogZGVwZW5kcyBvbiB0aGUgc2l6ZSBvZiB0aGlzIHByZWZpeC4gKi8KLSAJCWQ9cD0gJihidWZbNF0pOwotIAotIAkJLyogdmVyc2lvbiBpbmRpY2F0ZXMgdGhlIG5lZ290aWF0ZWQgdmVyc2lvbjogZm9yIGV4YW1wbGUgZnJvbQotZGlmZiAtLWdpdCBhL3NzbC90MV9saWIuYyBiL3NzbC90MV9saWIuYwotaW5kZXggMzU3ZGI2ZS4uYTQ5OTM2NyAxMDA2NDQKLS0tLSBhL3NzbC90MV9saWIuYwotKysrIGIvc3NsL3QxX2xpYi5jCi1AQCAtNjg3LDYgKzY4NywzMSBAQCB1bnNpZ25lZCBjaGFyICpzc2xfYWRkX2NsaWVudGhlbGxvX3Rsc2V4dChTU0wgKnMsIHVuc2lnbmVkIGNoYXIgKnAsIHVuc2lnbmVkIGNoYQotICAgICAgICAgICAgICAgICB9Ci0gI2VuZGlmCi0gCi0rCS8qIEFkZCBwYWRkaW5nIHRvIHdvcmthcm91bmQgYnVncyBpbiBGNSB0ZXJtaW5hdG9ycy4KLSsJICogU2VlIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1hZ2wtdGxzLXBhZGRpbmctMDIgKi8KLSsJewotKwlpbnQgaGxlbiA9IHJldCAtICh1bnNpZ25lZCBjaGFyICopcy0+aW5pdF9idWYtPmRhdGE7Ci0rCS8qIFRoZSBjb2RlIGluIHMyM19jbG50LmMgdG8gYnVpbGQgQ2xpZW50SGVsbG8gbWVzc2FnZXMgaW5jbHVkZXMgdGhlCi0rCSAqIDUtYnl0ZSByZWNvcmQgaGVhZGVyIGluIHRoZSBidWZmZXIsIHdoaWxlIHRoZSBjb2RlIGluIHMzX2NsbnQuYyBkb2VzCi0rCSAqIG5vdC4gKi8KLSsJaWYgKHMtPnN0YXRlID09IFNTTDIzX1NUX0NXX0NMTlRfSEVMTE9fQSkKLSsJCWhsZW4gLT0gNTsKLSsJaWYgKGhsZW4gPiAweGZmICYmIGhsZW4gPCAweDIwMCkKLSsJCXsKLSsJCWhsZW4gPSAweDIwMCAtIGhsZW47Ci0rCQlpZiAoaGxlbiA+PSA0KQotKwkJCWhsZW4gLT0gNDsKLSsJCWVsc2UKLSsJCQlobGVuID0gMDsKLSsKLSsJCXMybihUTFNFWFRfVFlQRV9wYWRkaW5nLCByZXQpOwotKwkJczJuKGhsZW4sIHJldCk7Ci0rCQltZW1zZXQocmV0LCAwLCBobGVuKTsKLSsJCXJldCArPSBobGVuOwotKwkJfQotKwl9Ci0rCi0rCi0gCWlmICgoZXh0ZGF0YWxlbiA9IHJldC1wLTIpPT0gMCkgCi0gCQlyZXR1cm4gcDsKLSAKLWRpZmYgLS1naXQgYS9zc2wvdGxzMS5oIGIvc3NsL3RsczEuaAotaW5kZXggZWNmNWRhNy4uZGY4ZjQ4MiAxMDA2NDQKLS0tLSBhL3NzbC90bHMxLmgKLSsrKyBiL3NzbC90bHMxLmgKLUBAIC0yNTUsNiArMjU1LDEwIEBAIGV4dGVybiAiQyIgewotICNkZWZpbmUgVExTRVhUX1RZUEVfY2hhbm5lbF9pZAkJCTMwMDMxCi0gI2RlZmluZSBUTFNFWFRfVFlQRV9jaGFubmVsX2lkX25ldwkJMzAwMzIKLSAKLSsvKiBTZWUgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWFnbC10bHMtcGFkZGluZy0wMgotKyAqIE51bWJlciBub3QgeWV0IElBTkEgYXNzaWduZWQuICovCi0rI2RlZmluZSBUTFNFWFRfVFlQRV9wYWRkaW5nCQkJMzU2NTUKLSsKLSAvKiBOYW1lVHlwZSB2YWx1ZSBmcm9tIFJGQyAzNTQ2ICovCi0gI2RlZmluZSBUTFNFWFRfTkFNRVRZUEVfaG9zdF9uYW1lIDAKLSAvKiBzdGF0dXMgcmVxdWVzdCB2YWx1ZSBmcm9tIFJGQyAzNTQ2ICovCi0tLSAKLTEuOC41LjEKLQpkaWZmIC0tZ2l0IGEvcnVsZXMubWsgYi9ydWxlcy5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNTJkYmJiCi0tLSAvZGV2L251bGwKKysrIGIvcnVsZXMubWsKQEAgLTAsMCArMSw0MCBAQAorTE9DQUxfRElSIDo9ICQoR0VUX0xPQ0FMX0RJUikKKworTU9EVUxFIDo9ICQoTE9DQUxfRElSKQorCitUQVJHRVRfQVJDSCA6PSAkKEFSQ0gpCitUQVJHRVRfMk5EX0FSQ0ggOj0gJChBUkNIKQorCisjIFJlc2V0IGxvY2FsIHZhcmlhYmxlcworTE9DQUxfQ0ZMQUdTIDo9CitMT0NBTF9DX0lOQ0xVREVTIDo9CitMT0NBTF9TUkNfRklMRVNfJChUQVJHRVRfQVJDSCkgOj0KK0xPQ0FMX1NSQ19GSUxFU18kKFRBUkdFVF8yTkRfQVJDSCkgOj0KK0xPQ0FMX0NGTEFHU18kKFRBUkdFVF9BUkNIKSA6PQorTE9DQUxfQ0ZMQUdTXyQoVEFSR0VUXzJORF9BUkNIKSA6PQorTE9DQUxfQURESVRJT05BTF9ERVBFTkRFTkNJRVMgOj0KKworIyBnZXQgb3BlbnNzbF9jZmxhZ3MKK01PRFVMRV9TUkNERVBTICs9ICQoTE9DQUxfRElSKS9idWlsZC1jb25maWctdHJ1c3R5Lm1rCitpbmNsdWRlICQoTE9DQUxfRElSKS9idWlsZC1jb25maWctdHJ1c3R5Lm1rCisKKyMgZ2V0IHRhcmdldF9jX2ZsYWdzLCB0YXJnZXRfY19pbmNsdWRlcywgdGFyZ2V0X3NyY19maWxlcworTU9EVUxFX1NSQ0RFUFMgKz0gJChMT0NBTF9ESVIpL0NyeXB0by1jb25maWctdHJ1c3R5Lm1rCitpbmNsdWRlICQoTE9DQUxfRElSKS9DcnlwdG8tY29uZmlnLXRydXN0eS5taworCitNT0RVTEVfU1JDUyArPSAkKGFkZHByZWZpeCAkKExPQ0FMX0RJUikvLCQoTE9DQUxfU1JDX0ZJTEVTXyQoQVJDSCkpKQorCitNT0RVTEVfQ0ZMQUdTICs9ICQoTE9DQUxfQ0ZMQUdTKQorTU9EVUxFX0NGTEFHUyArPSAtV25vLWVycm9yPWltcGxpY2l0LWZ1bmN0aW9uLWRlY2xhcmF0aW9uCisKKyMgR2xvYmFsIGZvciBvdGhlciBtb2R1bGVzIHdoaWNoIGluY2x1ZGUgb3BlbnNzbCBoZWFkZXJzCitHTE9CQUxfREVGSU5FUyArPSBPUEVOU1NMX1NZU19UUlVTVFkKKworTE9DQUxfQ19JTkNMVURFUyA6PSAkKHBhdHN1YnN0IGV4dGVybmFsL29wZW5zc2wvJSwlLCQoTE9DQUxfQ19JTkNMVURFUykpCitHTE9CQUxfSU5DTFVERVMgKz0gJChhZGRwcmVmaXggJChMT0NBTF9ESVIpLywkKExPQ0FMX0NfSU5DTFVERVMpKQorCitNT0RVTEVfREVQUyA6PSBcCisJbGliL29wZW5zc2wtc3R1YnMgXAorCWxpYi9saWJjLXRydXN0eQorCitpbmNsdWRlIG1ha2UvbW9kdWxlLm1rCmRpZmYgLS1naXQgYS9zc2wvYmlvX3NzbC5jIGIvc3NsL2Jpb19zc2wuYwppbmRleCBlOTU1MmNhLi4wNmExM2RlIDEwMDY0NAotLS0gYS9zc2wvYmlvX3NzbC5jCisrKyBiL3NzbC9iaW9fc3NsLmMKQEAgLTIwNiw2ICsyMDYsMTAgQEAKIAkJQklPX3NldF9yZXRyeV9zcGVjaWFsKGIpOwogCQlyZXRyeV9yZWFzb249QklPX1JSX1NTTF9YNTA5X0xPT0tVUDsKIAkJYnJlYWs7CisJY2FzZSBTU0xfRVJST1JfV0FOVF9DSEFOTkVMX0lEX0xPT0tVUDoKKwkJQklPX3NldF9yZXRyeV9zcGVjaWFsKGIpOworCQlyZXRyeV9yZWFzb249QklPX1JSX1NTTF9DSEFOTkVMX0lEX0xPT0tVUDsKKwkJYnJlYWs7CiAJY2FzZSBTU0xfRVJST1JfV0FOVF9BQ0NFUFQ6CiAJCUJJT19zZXRfcmV0cnlfc3BlY2lhbChiKTsKIAkJcmV0cnlfcmVhc29uPUJJT19SUl9BQ0NFUFQ7CkBAIC0yODAsNiArMjg0LDEwIEBACiAJCUJJT19zZXRfcmV0cnlfc3BlY2lhbChiKTsKIAkJcmV0cnlfcmVhc29uPUJJT19SUl9TU0xfWDUwOV9MT09LVVA7CiAJCWJyZWFrOworCWNhc2UgU1NMX0VSUk9SX1dBTlRfQ0hBTk5FTF9JRF9MT09LVVA6CisJCUJJT19zZXRfcmV0cnlfc3BlY2lhbChiKTsKKwkJcmV0cnlfcmVhc29uPUJJT19SUl9TU0xfQ0hBTk5FTF9JRF9MT09LVVA7CisJCWJyZWFrOwogCWNhc2UgU1NMX0VSUk9SX1dBTlRfQ09OTkVDVDoKIAkJQklPX3NldF9yZXRyeV9zcGVjaWFsKGIpOwogCQlyZXRyeV9yZWFzb249QklPX1JSX0NPTk5FQ1Q7CmRpZmYgLS1naXQgYS9zc2wvZDFfYm90aC5jIGIvc3NsL2QxX2JvdGguYwppbmRleCA3YTU1OTZhLi4wNGFhMjMxIDEwMDY0NAotLS0gYS9zc2wvZDFfYm90aC5jCisrKyBiL3NzbC9kMV9ib3RoLmMKQEAgLTYyNyw3ICs2MjcsMTYgQEAKIAkJZnJhZy0+bXNnX2hlYWRlci5mcmFnX29mZiA9IDA7CiAJCX0KIAllbHNlCisJCXsKIAkJZnJhZyA9IChobV9mcmFnbWVudCopIGl0ZW0tPmRhdGE7CisJCWlmIChmcmFnLT5tc2dfaGVhZGVyLm1zZ19sZW4gIT0gbXNnX2hkci0+bXNnX2xlbikKKwkJCXsKKwkJCWl0ZW0gPSBOVUxMOworCQkJZnJhZyA9IE5VTEw7CisJCQlnb3RvIGVycjsKKwkJCX0KKwkJfQorCiAKIAkvKiBJZiBtZXNzYWdlIGlzIGFscmVhZHkgcmVhc3NlbWJsZWQsIHRoaXMgbXVzdCBiZSBhCiAJICogcmV0cmFuc21pdCBhbmQgY2FuIGJlIGRyb3BwZWQuCkBAIC02NzQsOCArNjgzLDggQEAKIAkJaXRlbSA9IHBpdGVtX25ldyhzZXE2NGJlLCBmcmFnKTsKIAkJaWYgKGl0ZW0gPT0gTlVMTCkKIAkJCXsKLQkJCWdvdG8gZXJyOwogCQkJaSA9IC0xOworCQkJZ290byBlcnI7CiAJCQl9CiAKIAkJcHF1ZXVlX2luc2VydChzLT5kMS0+YnVmZmVyZWRfbWVzc2FnZXMsIGl0ZW0pOwpAQCAtNzg0LDYgKzc5Myw3IEBACiAJaW50IGksYWw7CiAJc3RydWN0IGhtX2hlYWRlcl9zdCBtc2dfaGRyOwogCisJcmVkbzoKIAkvKiBzZWUgaWYgd2UgaGF2ZSB0aGUgcmVxdWlyZWQgZnJhZ21lbnQgYWxyZWFkeSAqLwogCWlmICgoZnJhZ19sZW4gPSBkdGxzMV9yZXRyaWV2ZV9idWZmZXJlZF9mcmFnbWVudChzLG1heCxvaykpIHx8ICpvaykKIAkJewpAQCAtODQyLDggKzg1Miw3IEBACiAJCQkJCXMtPm1zZ19jYWxsYmFja19hcmcpOwogCQkJCiAJCQlzLT5pbml0X251bSA9IDA7Ci0JCQlyZXR1cm4gZHRsczFfZ2V0X21lc3NhZ2VfZnJhZ21lbnQocywgc3QxLCBzdG4sCi0JCQkJbWF4LCBvayk7CisJCQlnb3RvIHJlZG87CiAJCQl9CiAJCWVsc2UgLyogSW5jb3JyZWN0bHkgZm9ybWF0ZWQgSGVsbG8gcmVxdWVzdCAqLwogCQkJewpAQCAtMTQ1OSwyNiArMTQ2OCwzNiBAQAogCXVuc2lnbmVkIGludCBwYXlsb2FkOwogCXVuc2lnbmVkIGludCBwYWRkaW5nID0gMTY7IC8qIFVzZSBtaW5pbXVtIHBhZGRpbmcgKi8KIAotCS8qIFJlYWQgdHlwZSBhbmQgcGF5bG9hZCBsZW5ndGggZmlyc3QgKi8KLQloYnR5cGUgPSAqcCsrOwotCW4ycyhwLCBwYXlsb2FkKTsKLQlwbCA9IHA7Ci0KIAlpZiAocy0+bXNnX2NhbGxiYWNrKQogCQlzLT5tc2dfY2FsbGJhY2soMCwgcy0+dmVyc2lvbiwgVExTMV9SVF9IRUFSVEJFQVQsCiAJCQkmcy0+czMtPnJyZWMuZGF0YVswXSwgcy0+czMtPnJyZWMubGVuZ3RoLAogCQkJcywgcy0+bXNnX2NhbGxiYWNrX2FyZyk7CiAKKwkvKiBSZWFkIHR5cGUgYW5kIHBheWxvYWQgbGVuZ3RoIGZpcnN0ICovCisJaWYgKDEgKyAyICsgMTYgPiBzLT5zMy0+cnJlYy5sZW5ndGgpCisJCXJldHVybiAwOyAvKiBzaWxlbnRseSBkaXNjYXJkICovCisJaGJ0eXBlID0gKnArKzsKKwluMnMocCwgcGF5bG9hZCk7CisJaWYgKDEgKyAyICsgcGF5bG9hZCArIDE2ID4gcy0+czMtPnJyZWMubGVuZ3RoKQorCQlyZXR1cm4gMDsgLyogc2lsZW50bHkgZGlzY2FyZCBwZXIgUkZDIDY1MjAgc2VjLiA0ICovCisJcGwgPSBwOworCiAJaWYgKGhidHlwZSA9PSBUTFMxX0hCX1JFUVVFU1QpCiAJCXsKIAkJdW5zaWduZWQgY2hhciAqYnVmZmVyLCAqYnA7CisJCXVuc2lnbmVkIGludCB3cml0ZV9sZW5ndGggPSAxIC8qIGhlYXJ0YmVhdCB0eXBlICovICsKKwkJCQkJICAgIDIgLyogaGVhcnRiZWF0IGxlbmd0aCAqLyArCisJCQkJCSAgICBwYXlsb2FkICsgcGFkZGluZzsKIAkJaW50IHI7CiAKKwkJaWYgKHdyaXRlX2xlbmd0aCA+IFNTTDNfUlRfTUFYX1BMQUlOX0xFTkdUSCkKKwkJCXJldHVybiAwOworCiAJCS8qIEFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIHJlc3BvbnNlLCBzaXplIGlzIDEgYnl0ZQogCQkgKiBtZXNzYWdlIHR5cGUsIHBsdXMgMiBieXRlcyBwYXlsb2FkIGxlbmd0aCwgcGx1cwogCQkgKiBwYXlsb2FkLCBwbHVzIHBhZGRpbmcKIAkJICovCi0JCWJ1ZmZlciA9IE9QRU5TU0xfbWFsbG9jKDEgKyAyICsgcGF5bG9hZCArIHBhZGRpbmcpOworCQlidWZmZXIgPSBPUEVOU1NMX21hbGxvYyh3cml0ZV9sZW5ndGgpOwogCQlicCA9IGJ1ZmZlcjsKIAogCQkvKiBFbnRlciByZXNwb25zZSB0eXBlLCBsZW5ndGggYW5kIGNvcHkgcGF5bG9hZCAqLwpAQCAtMTQ4OSwxMSArMTUwOCwxMSBAQAogCQkvKiBSYW5kb20gcGFkZGluZyAqLwogCQlSQU5EX3BzZXVkb19ieXRlcyhicCwgcGFkZGluZyk7CiAKLQkJciA9IGR0bHMxX3dyaXRlX2J5dGVzKHMsIFRMUzFfUlRfSEVBUlRCRUFULCBidWZmZXIsIDMgKyBwYXlsb2FkICsgcGFkZGluZyk7CisJCXIgPSBkdGxzMV93cml0ZV9ieXRlcyhzLCBUTFMxX1JUX0hFQVJUQkVBVCwgYnVmZmVyLCB3cml0ZV9sZW5ndGgpOwogCiAJCWlmIChyID49IDAgJiYgcy0+bXNnX2NhbGxiYWNrKQogCQkJcy0+bXNnX2NhbGxiYWNrKDEsIHMtPnZlcnNpb24sIFRMUzFfUlRfSEVBUlRCRUFULAotCQkJCWJ1ZmZlciwgMyArIHBheWxvYWQgKyBwYWRkaW5nLAorCQkJCWJ1ZmZlciwgd3JpdGVfbGVuZ3RoLAogCQkJCXMsIHMtPm1zZ19jYWxsYmFja19hcmcpOwogCiAJCU9QRU5TU0xfZnJlZShidWZmZXIpOwpkaWZmIC0tZ2l0IGEvc3NsL2QxX2NsbnQuYyBiL3NzbC9kMV9jbG50LmMKaW5kZXggNGZjNGUxYi4uNWVlOGY1OCAxMDA2NDQKLS0tIGEvc3NsL2QxX2NsbnQuYworKysgYi9zc2wvZDFfY2xudC5jCkBAIC0xNDQwLDcgKzE0NDAsNyBAQAogCQkJCWdvdG8gZXJyOwogCQkJCX0KIAotCQkJcHNrX2xlbiA9IHMtPnBza19jbGllbnRfY2FsbGJhY2socywgcy0+Y3R4LT5wc2tfaWRlbnRpdHlfaGludCwKKwkJCXBza19sZW4gPSBzLT5wc2tfY2xpZW50X2NhbGxiYWNrKHMsIHMtPnNlc3Npb24tPnBza19pZGVudGl0eV9oaW50LAogCQkJCWlkZW50aXR5LCBQU0tfTUFYX0lERU5USVRZX0xFTiwKIAkJCQlwc2tfb3JfcHJlX21zLCBzaXplb2YocHNrX29yX3ByZV9tcykpOwogCQkJaWYgKHBza19sZW4gPiBQU0tfTUFYX1BTS19MRU4pCkBAIC0xNDY1LDE3ICsxNDY1LDYgQEAKIAkJCXQrPXBza19sZW47CiAJCQlzMm4ocHNrX2xlbiwgdCk7CiAKLQkJCWlmIChzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHlfaGludCAhPSBOVUxMKQotCQkJCU9QRU5TU0xfZnJlZShzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHlfaGludCk7Ci0JCQlzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHlfaGludCA9IEJVRl9zdHJkdXAocy0+Y3R4LT5wc2tfaWRlbnRpdHlfaGludCk7Ci0JCQlpZiAocy0+Y3R4LT5wc2tfaWRlbnRpdHlfaGludCAhPSBOVUxMICYmCi0JCQkJcy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5X2hpbnQgPT0gTlVMTCkKLQkJCQl7Ci0JCQkJU1NMZXJyKFNTTF9GX0RUTFMxX1NFTkRfQ0xJRU5UX0tFWV9FWENIQU5HRSwKLQkJCQkJRVJSX1JfTUFMTE9DX0ZBSUxVUkUpOwotCQkJCWdvdG8gcHNrX2VycjsKLQkJCQl9Ci0KIAkJCWlmIChzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHkgIT0gTlVMTCkKIAkJCQlPUEVOU1NMX2ZyZWUocy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5KTsKIAkJCXMtPnNlc3Npb24tPnBza19pZGVudGl0eSA9IEJVRl9zdHJkdXAoaWRlbnRpdHkpOwpkaWZmIC0tZ2l0IGEvc3NsL2QxX2xpYi5jIGIvc3NsL2QxX2xpYi5jCmluZGV4IGUyNzgyOGYuLjgyY2E2NTMgMTAwNjQ0Ci0tLSBhL3NzbC9kMV9saWIuYworKysgYi9zc2wvZDFfbGliLmMKQEAgLTE3Niw5ICsxNzYsMTIgQEAKIAogCXdoaWxlICggKGl0ZW0gPSBwcXVldWVfcG9wKHMtPmQxLT5idWZmZXJlZF9hcHBfZGF0YS5xKSkgIT0gTlVMTCkKIAkJewotCQlmcmFnID0gKGhtX2ZyYWdtZW50ICopaXRlbS0+ZGF0YTsKLQkJT1BFTlNTTF9mcmVlKGZyYWctPmZyYWdtZW50KTsKLQkJT1BFTlNTTF9mcmVlKGZyYWcpOworCQlyZGF0YSA9IChEVExTMV9SRUNPUkRfREFUQSAqKSBpdGVtLT5kYXRhOworCQlpZiAocmRhdGEtPnJidWYuYnVmKQorCQkJeworCQkJT1BFTlNTTF9mcmVlKHJkYXRhLT5yYnVmLmJ1Zik7CisJCQl9CisJCU9QRU5TU0xfZnJlZShpdGVtLT5kYXRhKTsKIAkJcGl0ZW1fZnJlZShpdGVtKTsKIAkJfQogCX0KZGlmZiAtLWdpdCBhL3NzbC9kMV9wa3QuYyBiL3NzbC9kMV9wa3QuYwppbmRleCA1Yjg0ZTk3Li4zNjNmYzhjIDEwMDY0NAotLS0gYS9zc2wvZDFfcGt0LmMKKysrIGIvc3NsL2QxX3BrdC5jCkBAIC0yNDEsMTQgKzI0MSw2IEBACiAJfQogI2VuZGlmCiAKLQkvKiBpbnNlcnQgc2hvdWxkIG5vdCBmYWlsLCBzaW5jZSBkdXBsaWNhdGVzIGFyZSBkcm9wcGVkICovCi0JaWYgKHBxdWV1ZV9pbnNlcnQocXVldWUtPnEsIGl0ZW0pID09IE5VTEwpCi0JCXsKLQkJT1BFTlNTTF9mcmVlKHJkYXRhKTsKLQkJcGl0ZW1fZnJlZShpdGVtKTsKLQkJcmV0dXJuKDApOwotCQl9Ci0KIAlzLT5wYWNrZXQgPSBOVUxMOwogCXMtPnBhY2tldF9sZW5ndGggPSAwOwogCW1lbXNldCgmKHMtPnMzLT5yYnVmKSwgMCwgc2l6ZW9mKFNTTDNfQlVGRkVSKSk7CkBAIC0yNjEsNyArMjUzLDE2IEBACiAJCXBpdGVtX2ZyZWUoaXRlbSk7CiAJCXJldHVybigwKTsKIAkJfQotCQorCisJLyogaW5zZXJ0IHNob3VsZCBub3QgZmFpbCwgc2luY2UgZHVwbGljYXRlcyBhcmUgZHJvcHBlZCAqLworCWlmIChwcXVldWVfaW5zZXJ0KHF1ZXVlLT5xLCBpdGVtKSA9PSBOVUxMKQorCQl7CisJCVNTTGVycihTU0xfRl9EVExTMV9CVUZGRVJfUkVDT1JELCBFUlJfUl9JTlRFUk5BTF9FUlJPUik7CisJCU9QRU5TU0xfZnJlZShyZGF0YSk7CisJCXBpdGVtX2ZyZWUoaXRlbSk7CisJCXJldHVybigwKTsKKwkJfQorCiAJcmV0dXJuKDEpOwogCX0KIApkaWZmIC0tZ2l0IGEvc3NsL2QxX3NydnIuYyBiL3NzbC9kMV9zcnZyLmMKaW5kZXggOTk3NWUyMC4uYzE4MWRiNiAxMDA2NDQKLS0tIGEvc3NsL2QxX3NydnIuYworKysgYi9zc2wvZDFfc3J2ci5jCkBAIC00NzEsNyArNDcxLDcgQEAKIAkJCS8qIFBTSzogc2VuZCBTZXJ2ZXJLZXlFeGNoYW5nZSBpZiBQU0sgaWRlbnRpdHkKIAkJCSAqIGhpbnQgaWYgcHJvdmlkZWQgKi8KICNpZm5kZWYgT1BFTlNTTF9OT19QU0sKLQkJCSAgICB8fCAoKGFsZ19rICYgU1NMX2tQU0spICYmIHMtPmN0eC0+cHNrX2lkZW50aXR5X2hpbnQpCisJCQkgICAgfHwgKChhbGdfayAmIFNTTF9rUFNLKSAmJiBzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHlfaGludCkKICNlbmRpZgogCQkJICAgIHx8IChhbGdfayAmIChTU0xfa0VESHxTU0xfa0RIcnxTU0xfa0RIZCkpCiAJCQkgICAgfHwgKGFsZ19rICYgU1NMX2tFRUNESCkKQEAgLTEyODgsNyArMTI4OCw3IEBACiAJCQlpZiAodHlwZSAmIFNTTF9rUFNLKQogCQkJCXsKIAkJCQkvKiByZXNlcnZlIHNpemUgZm9yIHJlY29yZCBsZW5ndGggYW5kIFBTSyBpZGVudGl0eSBoaW50Ki8KLQkJCQluKz0yK3N0cmxlbihzLT5jdHgtPnBza19pZGVudGl0eV9oaW50KTsKKwkJCQluKz0yK3N0cmxlbihzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHlfaGludCk7CiAJCQkJfQogCQkJZWxzZQogI2VuZGlmIC8qICFPUEVOU1NMX05PX1BTSyAqLwpAQCAtMTM1Niw2ICsxMzU2LDcgQEAKIAkJCSAgICAodW5zaWduZWQgY2hhciAqKWVuY29kZWRQb2ludCwgCiAJCQkgICAgZW5jb2RlZGxlbik7CiAJCQlPUEVOU1NMX2ZyZWUoZW5jb2RlZFBvaW50KTsKKwkJCWVuY29kZWRQb2ludCA9IE5VTEw7CiAJCQlwICs9IGVuY29kZWRsZW47CiAJCQl9CiAjZW5kaWYKQEAgLTEzNjQsOSArMTM2NSw5IEBACiAJCWlmICh0eXBlICYgU1NMX2tQU0spCiAJCQl7CiAJCQkvKiBjb3B5IFBTSyBpZGVudGl0eSBoaW50ICovCi0JCQlzMm4oc3RybGVuKHMtPmN0eC0+cHNrX2lkZW50aXR5X2hpbnQpLCBwKTsgCi0JCQlzdHJuY3B5KChjaGFyICopcCwgcy0+Y3R4LT5wc2tfaWRlbnRpdHlfaGludCwgc3RybGVuKHMtPmN0eC0+cHNrX2lkZW50aXR5X2hpbnQpKTsKLQkJCXArPXN0cmxlbihzLT5jdHgtPnBza19pZGVudGl0eV9oaW50KTsKKwkJCXMybihzdHJsZW4ocy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5X2hpbnQpLCBwKTsKKwkJCXN0cm5jcHkoKGNoYXIgKilwLCBzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHlfaGludCwgc3RybGVuKHMtPnNlc3Npb24tPnBza19pZGVudGl0eV9oaW50KSk7CisJCQlwKz1zdHJsZW4ocy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5X2hpbnQpOwogCQkJfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL3NzbC9rc3NsLmggYi9zc2wva3NzbC5oCmluZGV4IDgyNDJmZDUuLmU0ZGY4NDMgMTAwNjQ0Ci0tLSBhL3NzbC9rc3NsLmgKKysrIGIvc3NsL2tzc2wuaApAQCAtNzAsNiArNzAsMTUgQEAKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGN0eXBlLmg+CiAjaW5jbHVkZSA8a3JiNS5oPgorI2lmZGVmIE9QRU5TU0xfU1lTX1dJTjMyCisvKiBUaGVzZSBjYW4gc29tZXRpbWVzIGdldCByZWRlZmluZWQgaW5kaXJlY3RseSBieSBrcmI1IGhlYWRlciBmaWxlcworICogYWZ0ZXIgdGhleSBnZXQgdW5kZWZlZCBpbiBvc3NsX3R5cC5oCisgKi8KKyN1bmRlZiBYNTA5X05BTUUKKyN1bmRlZiBYNTA5X0VYVEVOU0lPTlMKKyN1bmRlZiBPQ1NQX1JFUVVFU1QKKyN1bmRlZiBPQ1NQX1JFU1BPTlNFCisjZW5kaWYKIAogI2lmZGVmICBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CmRpZmYgLS1naXQgYS9zc2wvczIzX2NsbnQuYyBiL3NzbC9zMjNfY2xudC5jCmluZGV4IGI0MzA4OGUuLjQ2N2FkZmUgMTAwNjQ0Ci0tLSBhL3NzbC9zMjNfY2xudC5jCisrKyBiL3NzbC9zMjNfY2xudC5jCkBAIC0yODMsNyArMjgzLDcgQEAKIAkJc2VuZF90aW1lID0gKHMtPm1vZGUgJiBTU0xfTU9ERV9TRU5EX0NMSUVOVEhFTExPX1RJTUUpICE9IDA7CiAJaWYgKHNlbmRfdGltZSkKIAkJewotCQl1bnNpZ25lZCBsb25nIFRpbWUgPSB0aW1lKE5VTEwpOworCQl1bnNpZ25lZCBsb25nIFRpbWUgPSAodW5zaWduZWQgbG9uZyl0aW1lKE5VTEwpOwogCQl1bnNpZ25lZCBjaGFyICpwID0gcmVzdWx0OwogCQlsMm4oVGltZSwgcCk7CiAJCXJldHVybiBSQU5EX3BzZXVkb19ieXRlcyhwLCBsZW4tNCk7CkBAIC00ODcsMTAgKzQ4Nyw3IEBACiAJCQl7CiAJCQkvKiBjcmVhdGUgQ2xpZW50IEhlbGxvIGluIFNTTCAzLjAvVExTIDEuMCBmb3JtYXQgKi8KIAotCQkJLyogZG8gdGhlIHJlY29yZCBoZWFkZXIgKDUgYnl0ZXMpIGFuZCBoYW5kc2hha2UgbWVzc2FnZQotCQkJICogaGVhZGVyICg0IGJ5dGVzKSBsYXN0LiBOb3RlOiB0aGUgY29kZSB0byBhZGQgdGhlCi0JCQkgKiBwYWRkaW5nIGV4dGVuc2lvbiBpbiB0MV9saWIuYyBkZXBlbmRzIG9uIHRoZSBzaXplIG9mCi0JCQkgKiB0aGlzIHByZWZpeC4gKi8KKwkJCS8qIGRvIHRoZSByZWNvcmQgaGVhZGVyICg1IGJ5dGVzKSBhbmQgaGFuZHNoYWtlIG1lc3NhZ2UgaGVhZGVyICg0IGJ5dGVzKSBsYXN0ICovCiAJCQlkID0gcCA9ICYoYnVmWzldKTsKIAkJCQogCQkJKihwKyspID0gdmVyc2lvbl9tYWpvcjsKZGlmZiAtLWdpdCBhL3NzbC9zM19ib3RoLmMgYi9zc2wvczNfYm90aC5jCmluZGV4IGQ5ZTE4YTMuLjYwNzk5MGQgMTAwNjQ0Ci0tLSBhL3NzbC9zM19ib3RoLmMKKysrIGIvc3NsL3MzX2JvdGguYwpAQCAtNTYxLDcgKzU2MSw3IEBACiAjZW5kaWYKIAogCS8qIEZlZWQgdGhpcyBtZXNzYWdlIGludG8gTUFDIGNvbXB1dGF0aW9uLiAqLwotCWlmICgqKHVuc2lnbmVkIGNoYXIqKXMtPmluaXRfYnVmLT5kYXRhICE9IFNTTDNfTVRfRU5DUllQVEVEX0VYVEVOU0lPTlMpCisJaWYgKCooKHVuc2lnbmVkIGNoYXIqKSBzLT5pbml0X2J1Zi0+ZGF0YSkgIT0gU1NMM19NVF9FTkNSWVBURURfRVhURU5TSU9OUykKIAkJc3NsM19maW5pc2hfbWFjKHMsICh1bnNpZ25lZCBjaGFyICopcy0+aW5pdF9idWYtPmRhdGEsIHMtPmluaXRfbnVtICsgNCk7CiAJaWYgKHMtPm1zZ19jYWxsYmFjaykKIAkJcy0+bXNnX2NhbGxiYWNrKDAsIHMtPnZlcnNpb24sIFNTTDNfUlRfSEFORFNIQUtFLCBzLT5pbml0X2J1Zi0+ZGF0YSwgKHNpemVfdClzLT5pbml0X251bSArIDQsIHMsIHMtPm1zZ19jYWxsYmFja19hcmcpOwpkaWZmIC0tZ2l0IGEvc3NsL3MzX2NsbnQuYyBiL3NzbC9zM19jbG50LmMKaW5kZXggOTk3OWI3ZC4uNDg2ZjUzOCAxMDA2NDQKLS0tIGEvc3NsL3MzX2NsbnQuYworKysgYi9zc2wvczNfY2xudC5jCkBAIC0yMTUsMjQgKzIxNSwxMiBAQAogCQl9CiAjZW5kaWYKIAotLy8gQkVHSU4gYW5kcm9pZC1hZGRlZAotI2lmIDAKLS8qIFNlbmQgYXBwIGRhdGEgaW4gc2VwYXJhdGUgcGFja2V0LCBvdGhlcndpc2UsIHNvbWUgcGFydGljdWxhciBzaXRlCi0gKiAob25seSBvbmUgc2l0ZSBzbyBmYXIpIGNsb3NlcyB0aGUgc29ja2V0LiBodHRwOi8vYi8yNTExMDczCi0gKiBOb3RlOiB0aGVyZSBpcyBhIHZlcnkgc21hbGwgY2hhbmNlIHRoYXQgdHdvIFRDUCBwYWNrZXRzCi0gKiBjb3VsZCBiZSBhcnJpdmluZyBhdCBzZXJ2ZXIgY29tYmluZWQgaW50byBhIHNpbmdsZSBUQ1AgcGFja2V0LAotICogdGhlbiB0cmlnZ2VyIHRoYXQgc2l0ZSB0byBicmVhay4gV2UgaGF2ZW4ndCBlbmNvdW50ZXIgdGhhdCB0aG91Z2guCi0gKi8KLS8vIEVORCBhbmRyb2lkLWFkZGVkCiAJaWYgKFNTTF9nZXRfbW9kZShzKSAmIFNTTF9NT0RFX0hBTkRTSEFLRV9DVVRUSFJPVUdIKQogCQl7CiAJCS8qIFNlbmQgYXBwIGRhdGEgYWxvbmcgd2l0aCBDQ1MvRmluaXNoZWQgKi8KIAkJcy0+czMtPmZsYWdzIHw9IFNTTDNfRkxBR1NfREVMQVlfQ0xJRU5UX0ZJTklTSEVEOwogCQl9CiAKLS8vIEJFR0lOIGFuZHJvaWQtYWRkZWQKLSNlbmRpZgotLy8gRU5EIGFuZHJvaWQtYWRkZWQKIAlmb3IgKDs7KQogCQl7CiAJCXN0YXRlPXMtPnN0YXRlOwpAQCAtMzQ1LDkgKzMzMywxMCBAQAogCQkJCX0KICNlbmRpZgogCQkJLyogQ2hlY2sgaWYgaXQgaXMgYW5vbiBESC9FQ0RIICovCi0JCQkvKiBvciBQU0sgKi8KKwkJCS8qIG9yIG5vbi1SU0EgUFNLICovCiAJCQlpZiAoIShzLT5zMy0+dG1wLm5ld19jaXBoZXItPmFsZ29yaXRobV9hdXRoICYgU1NMX2FOVUxMKSAmJgotCQkJICAgICEocy0+czMtPnRtcC5uZXdfY2lwaGVyLT5hbGdvcml0aG1fbWtleSAmIFNTTF9rUFNLKSkKKwkJCSAgICAhKChzLT5zMy0+dG1wLm5ld19jaXBoZXItPmFsZ29yaXRobV9hdXRoICYgU1NMX2FQU0spICYmCisJCQkgICAgICAhKHMtPnMzLT50bXAubmV3X2NpcGhlci0+YWxnb3JpdGhtX21rZXkgJiBTU0xfa1JTQSkpKQogCQkJCXsKIAkJCQlyZXQ9c3NsM19nZXRfc2VydmVyX2NlcnRpZmljYXRlKHMpOwogCQkJCWlmIChyZXQgPD0gMCkgZ290byBlbmQ7CkBAIC01NTcsNyArNTQ2LDIwIEBACiAJCQkJfQogCQkJZWxzZQogCQkJCXsKLQkJCQlpZiAoKFNTTF9nZXRfbW9kZShzKSAmIFNTTF9NT0RFX0hBTkRTSEFLRV9DVVRUSFJPVUdIKSAmJiBTU0xfZ2V0X2NpcGhlcl9iaXRzKHMsIE5VTEwpID49IDEyOAorCQkJCS8qIFRoaXMgaXMgYSBub24tcmVzdW1wdGlvbiBoYW5kc2hha2UuIElmIGl0CisJCQkJICogaW52b2x2ZXMgQ2hhbm5lbElELCB0aGVuIHJlY29yZCB0aGUKKwkJCQkgKiBoYW5kc2hha2UgaGFzaGVzIGF0IHRoaXMgcG9pbnQgaW4gdGhlCisJCQkJICogc2Vzc2lvbiBzbyB0aGF0IGFueSByZXN1bXB0aW9uIG9mIHRoaXMKKwkJCQkgKiBzZXNzaW9uIHdpdGggQ2hhbm5lbElEIGNhbiBzaWduIHRob3NlCisJCQkJICogaGFzaGVzLiAqLworCQkJCWlmIChzLT5zMy0+dGxzZXh0X2NoYW5uZWxfaWRfbmV3KQorCQkJCQl7CisJCQkJCXJldCA9IHRsczFfcmVjb3JkX2hhbmRzaGFrZV9oYXNoZXNfZm9yX2NoYW5uZWxfaWQocyk7CisJCQkJCWlmIChyZXQgPD0gMCkKKwkJCQkJCWdvdG8gZW5kOworCQkJCQl9CisJCQkJaWYgKChTU0xfZ2V0X21vZGUocykgJiBTU0xfTU9ERV9IQU5EU0hBS0VfQ1VUVEhST1VHSCkKKwkJCQkgICAgJiYgc3NsM19jYW5fY3V0dGhyb3VnaChzKQogCQkJCSAgICAmJiBzLT5zMy0+cHJldmlvdXNfc2VydmVyX2ZpbmlzaGVkX2xlbiA9PSAwIC8qIG5vIGN1dHRocm91Z2ggb24gcmVuZWdvdGlhdGlvbiAod291bGQgY29tcGxpY2F0ZSB0aGUgc3RhdGUgbWFjaGluZSkgKi8KIAkJCQkgICApCiAJCQkJCXsKQEAgLTYwNiw2ICs2MDgsNyBAQAogCiAJCWNhc2UgU1NMM19TVF9DUl9GSU5JU0hFRF9BOgogCQljYXNlIFNTTDNfU1RfQ1JfRklOSVNIRURfQjoKKwogCQkJcy0+czMtPmZsYWdzIHw9IFNTTDNfRkxBR1NfQ0NTX09LOwogCQkJcmV0PXNzbDNfZ2V0X2ZpbmlzaGVkKHMsU1NMM19TVF9DUl9GSU5JU0hFRF9BLAogCQkJCVNTTDNfU1RfQ1JfRklOSVNIRURfQik7CkBAIC03NTYsOSArNzU5LDcgQEAKIAkJaWYgKHNzbF9maWxsX2hlbGxvX3JhbmRvbShzLCAwLCBwLCBTU0wzX1JBTkRPTV9TSVpFKSA8PSAwKQogCQkJZ290byBlcnI7CiAKLQkJLyogRG8gdGhlIG1lc3NhZ2UgdHlwZSBhbmQgbGVuZ3RoIGxhc3QuCi0JCSAqIE5vdGU6IHRoZSBjb2RlIHRvIGFkZCB0aGUgcGFkZGluZyBleHRlbnNpb24gaW4gdDFfbGliLmMKLQkJICogZGVwZW5kcyBvbiB0aGUgc2l6ZSBvZiB0aGlzIHByZWZpeC4gKi8KKwkJLyogRG8gdGhlIG1lc3NhZ2UgdHlwZSBhbmQgbGVuZ3RoIGxhc3QgKi8KIAkJZD1wPSAmKGJ1Zls0XSk7CiAKIAkJLyogdmVyc2lvbiBpbmRpY2F0ZXMgdGhlIG5lZ290aWF0ZWQgdmVyc2lvbjogZm9yIGV4YW1wbGUgZnJvbQpAQCAtMTM4MCwxMiArMTM4MSwxNCBAQAogCQkgICBvbWl0dGVkIGlmIG5vIGlkZW50aXR5IGhpbnQgaXMgc2VudC4gU2V0CiAJCSAgIHNlc3Npb24tPnNlc3NfY2VydCBhbnl3YXkgdG8gYXZvaWQgcHJvYmxlbXMKIAkJICAgbGF0ZXIuKi8KLQkJaWYgKHMtPnMzLT50bXAubmV3X2NpcGhlci0+YWxnb3JpdGhtX21rZXkgJiBTU0xfa1BTSykKKwkJaWYgKHMtPnMzLT50bXAubmV3X2NpcGhlci0+YWxnb3JpdGhtX2F1dGggJiBTU0xfYVBTSykKIAkJCXsKIAkJCXMtPnNlc3Npb24tPnNlc3NfY2VydD1zc2xfc2Vzc19jZXJ0X25ldygpOwotCQkJaWYgKHMtPmN0eC0+cHNrX2lkZW50aXR5X2hpbnQpCi0JCQkJT1BFTlNTTF9mcmVlKHMtPmN0eC0+cHNrX2lkZW50aXR5X2hpbnQpOwotCQkJcy0+Y3R4LT5wc2tfaWRlbnRpdHlfaGludCA9IE5VTEw7CisJCQlpZiAocy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5X2hpbnQpCisJCQkJeworCQkJCU9QRU5TU0xfZnJlZShzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHlfaGludCk7CisJCQkJcy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5X2hpbnQgPSBOVUxMOworCQkJCX0KIAkJCX0KICNlbmRpZgogCQlzLT5zMy0+dG1wLnJldXNlX21lc3NhZ2U9MTsKQEAgLTE0MjgsNTIgKzE0MzEsNTggQEAKIAlFVlBfTURfQ1RYX2luaXQoJm1kX2N0eCk7CiAKICNpZm5kZWYgT1BFTlNTTF9OT19QU0sKLQlpZiAoYWxnX2sgJiBTU0xfa1BTSykKKwlpZiAoYWxnX2EgJiBTU0xfYVBTSykKIAkJewogCQljaGFyIHRtcF9pZF9oaW50W1BTS19NQVhfSURFTlRJVFlfTEVOKzFdOwogCiAJCWFsPVNTTF9BRF9IQU5EU0hBS0VfRkFJTFVSRTsKIAkJbjJzKHAsaSk7CiAJCXBhcmFtX2xlbj1pKzI7Ci0JCS8qIFN0b3JlIFBTSyBpZGVudGl0eSBoaW50IGZvciBsYXRlciB1c2UsIGhpbnQgaXMgdXNlZAotCQkgKiBpbiBzc2wzX3NlbmRfY2xpZW50X2tleV9leGNoYW5nZS4gIEFzc3VtZSB0aGF0IHRoZQotCQkgKiBtYXhpbXVtIGxlbmd0aCBvZiBhIFBTSyBpZGVudGl0eSBoaW50IGNhbiBiZSBhcwotCQkgKiBsb25nIGFzIHRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhIFBTSyBpZGVudGl0eS4gKi8KLQkJaWYgKGkgPiBQU0tfTUFYX0lERU5USVRZX0xFTikKKwkJaWYgKHMtPnNlc3Npb24tPnBza19pZGVudGl0eV9oaW50KQogCQkJewotCQkJU1NMZXJyKFNTTF9GX1NTTDNfR0VUX0tFWV9FWENIQU5HRSwKLQkJCQlTU0xfUl9EQVRBX0xFTkdUSF9UT09fTE9ORyk7Ci0JCQlnb3RvIGZfZXJyOworCQkJT1BFTlNTTF9mcmVlKHMtPnNlc3Npb24tPnBza19pZGVudGl0eV9oaW50KTsKKwkJCXMtPnNlc3Npb24tPnBza19pZGVudGl0eV9oaW50ID0gTlVMTDsKIAkJCX0KLQkJaWYgKHBhcmFtX2xlbiA+IG4pCisJCWlmIChpICE9IDApCiAJCQl7Ci0JCQlhbD1TU0xfQURfREVDT0RFX0VSUk9SOwotCQkJU1NMZXJyKFNTTF9GX1NTTDNfR0VUX0tFWV9FWENIQU5HRSwKLQkJCQlTU0xfUl9CQURfUFNLX0lERU5USVRZX0hJTlRfTEVOR1RIKTsKLQkJCWdvdG8gZl9lcnI7CisJCQkvKiBTdG9yZSBQU0sgaWRlbnRpdHkgaGludCBmb3IgbGF0ZXIgdXNlLCBoaW50IGlzIHVzZWQKKwkJCSAqIGluIHNzbDNfc2VuZF9jbGllbnRfa2V5X2V4Y2hhbmdlLiAgQXNzdW1lIHRoYXQgdGhlCisJCQkgKiBtYXhpbXVtIGxlbmd0aCBvZiBhIFBTSyBpZGVudGl0eSBoaW50IGNhbiBiZSBhcworCQkJICogbG9uZyBhcyB0aGUgbWF4aW11bSBsZW5ndGggb2YgYSBQU0sgaWRlbnRpdHkuICovCisJCQlpZiAoaSA+IFBTS19NQVhfSURFTlRJVFlfTEVOKQorCQkJCXsKKwkJCQlTU0xlcnIoU1NMX0ZfU1NMM19HRVRfS0VZX0VYQ0hBTkdFLAorCQkJCQlTU0xfUl9EQVRBX0xFTkdUSF9UT09fTE9ORyk7CisJCQkJZ290byBmX2VycjsKKwkJCQl9CisJCQlpZiAocGFyYW1fbGVuID4gbikKKwkJCQl7CisJCQkJYWw9U1NMX0FEX0RFQ09ERV9FUlJPUjsKKwkJCQlTU0xlcnIoU1NMX0ZfU1NMM19HRVRfS0VZX0VYQ0hBTkdFLAorCQkJCQlTU0xfUl9CQURfUFNLX0lERU5USVRZX0hJTlRfTEVOR1RIKTsKKwkJCQlnb3RvIGZfZXJyOworCQkJCX0KKwkJCS8qIElmIHJlY2VpdmVkIFBTSyBpZGVudGl0eSBoaW50IGNvbnRhaW5zIE5VTEwKKwkJCSAqIGNoYXJhY3RlcnMsIHRoZSBoaW50IGlzIHRydW5jYXRlZCBmcm9tIHRoZSBmaXJzdAorCQkJICogTlVMTC4gcCBtYXkgbm90IGJlIGVuZGluZyB3aXRoIE5VTEwsIHNvIGNyZWF0ZSBhCisJCQkgKiBOVUxMLXRlcm1pbmF0ZWQgc3RyaW5nLiAqLworCQkJbWVtY3B5KHRtcF9pZF9oaW50LCBwLCBpKTsKKwkJCW1lbXNldCh0bXBfaWRfaGludCtpLCAwLCBQU0tfTUFYX0lERU5USVRZX0xFTisxLWkpOworCQkJcy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5X2hpbnQgPSBCVUZfc3RyZHVwKHRtcF9pZF9oaW50KTsKKwkJCWlmIChzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHlfaGludCA9PSBOVUxMKQorCQkJCXsKKwkJCQlTU0xlcnIoU1NMX0ZfU1NMM19HRVRfS0VZX0VYQ0hBTkdFLCBFUlJfUl9NQUxMT0NfRkFJTFVSRSk7CisJCQkJZ290byBmX2VycjsKKwkJCQl9CiAJCQl9Ci0JCS8qIElmIHJlY2VpdmVkIFBTSyBpZGVudGl0eSBoaW50IGNvbnRhaW5zIE5VTEwKLQkJICogY2hhcmFjdGVycywgdGhlIGhpbnQgaXMgdHJ1bmNhdGVkIGZyb20gdGhlIGZpcnN0Ci0JCSAqIE5VTEwuIHAgbWF5IG5vdCBiZSBlbmRpbmcgd2l0aCBOVUxMLCBzbyBjcmVhdGUgYQotCQkgKiBOVUxMLXRlcm1pbmF0ZWQgc3RyaW5nLiAqLwotCQltZW1jcHkodG1wX2lkX2hpbnQsIHAsIGkpOwotCQltZW1zZXQodG1wX2lkX2hpbnQraSwgMCwgUFNLX01BWF9JREVOVElUWV9MRU4rMS1pKTsKLQkJaWYgKHMtPmN0eC0+cHNrX2lkZW50aXR5X2hpbnQgIT0gTlVMTCkKLQkJCU9QRU5TU0xfZnJlZShzLT5jdHgtPnBza19pZGVudGl0eV9oaW50KTsKLQkJcy0+Y3R4LT5wc2tfaWRlbnRpdHlfaGludCA9IEJVRl9zdHJkdXAodG1wX2lkX2hpbnQpOwotCQlpZiAocy0+Y3R4LT5wc2tfaWRlbnRpdHlfaGludCA9PSBOVUxMKQotCQkJewotCQkJU1NMZXJyKFNTTF9GX1NTTDNfR0VUX0tFWV9FWENIQU5HRSwgRVJSX1JfTUFMTE9DX0ZBSUxVUkUpOwotCQkJZ290byBmX2VycjsKLQkJCX0JICAgCi0KIAkJcCs9aTsKIAkJbi09cGFyYW1fbGVuOwogCQl9Ci0JZWxzZQogI2VuZGlmIC8qICFPUEVOU1NMX05PX1BTSyAqLworCisJaWYgKDApIHt9CiAjaWZuZGVmIE9QRU5TU0xfTk9fU1JQCi0JaWYgKGFsZ19rICYgU1NMX2tTUlApCisJZWxzZSBpZiAoYWxnX2sgJiBTU0xfa1NSUCkKIAkJewogCQluMnMocCxpKTsKIAkJcGFyYW1fbGVuPWkrMjsKQEAgLTE1NTAsMTAgKzE1NTksOSBAQAogCQkJcGtleT1YNTA5X2dldF9wdWJrZXkocy0+c2Vzc2lvbi0+c2Vzc19jZXJ0LT5wZWVyX3BrZXlzW1NTTF9QS0VZX0RTQV9TSUdOXS54NTA5KTsKICNlbmRpZgogCQl9Ci0JZWxzZQogI2VuZGlmIC8qICFPUEVOU1NMX05PX1NSUCAqLwogI2lmbmRlZiBPUEVOU1NMX05PX1JTQQotCWlmIChhbGdfayAmIFNTTF9rUlNBKQorCWVsc2UgaWYgKGFsZ19rICYgU1NMX2tSU0EpCiAJCXsKIAkJaWYgKChyc2E9UlNBX25ldygpKSA9PSBOVUxMKQogCQkJewpAQCAtMTYwMiw5ICsxNjEwLDYgQEAKIAkJcy0+c2Vzc2lvbi0+c2Vzc19jZXJ0LT5wZWVyX3JzYV90bXA9cnNhOwogCQlyc2E9TlVMTDsKIAkJfQotI2Vsc2UgLyogT1BFTlNTTF9OT19SU0EgKi8KLQlpZiAoMCkKLQkJOwogI2VuZGlmCiAjaWZuZGVmIE9QRU5TU0xfTk9fREgKIAllbHNlIGlmIChhbGdfayAmIFNTTF9rRURIKQpAQCAtMTc4NSwxNCArMTc5MCwxNCBAQAogCQlFQ19QT0lOVF9mcmVlKHNydnJfZWNwb2ludCk7CiAJCXNydnJfZWNwb2ludCA9IE5VTEw7CiAJCX0KLQllbHNlIGlmIChhbGdfaykKKyNlbmRpZiAvKiAhT1BFTlNTTF9OT19FQ0RIICovCisKKwllbHNlIGlmICghKGFsZ19rICYgU1NMX2tQU0spKQogCQl7CiAJCWFsPVNTTF9BRF9VTkVYUEVDVEVEX01FU1NBR0U7CiAJCVNTTGVycihTU0xfRl9TU0wzX0dFVF9LRVlfRVhDSEFOR0UsU1NMX1JfVU5FWFBFQ1RFRF9NRVNTQUdFKTsKIAkJZ290byBmX2VycjsKIAkJfQotI2VuZGlmIC8qICFPUEVOU1NMX05PX0VDREggKi8KLQogCiAJLyogcCBwb2ludHMgdG8gdGhlIG5leHQgYnl0ZSwgdGhlcmUgYXJlICduJyBieXRlcyBsZWZ0ICovCiAKQEAgLTE4OTcsOCArMTkwMiw5IEBACiAJCX0KIAllbHNlCiAJCXsKLQkJaWYgKCEoYWxnX2EgJiBTU0xfYU5VTEwpICYmICEoYWxnX2sgJiBTU0xfa1BTSykpCi0JCQkvKiBhTlVMTCBvciBrUFNLIGRvIG5vdCBuZWVkIHB1YmxpYyBrZXlzICovCisJCWlmICghKGFsZ19hICYgU1NMX2FOVUxMKSAmJgorCQkJLyogQW1vbmcgUFNLIGNpcGhlcnMgb25seSBSU0FfUFNLIG5lZWRzIGEgcHVibGljIGtleSAqLworCQkJISgoYWxnX2EgJiBTU0xfYVBTSykgJiYgIShhbGdfayAmIFNTTF9rUlNBKSkpCiAJCQl7CiAJCQlTU0xlcnIoU1NMX0ZfU1NMM19HRVRfS0VZX0VYQ0hBTkdFLEVSUl9SX0lOVEVSTkFMX0VSUk9SKTsKIAkJCWdvdG8gZXJyOwpAQCAtMjI5OCw4ICsyMzA0LDkgQEAKIGludCBzc2wzX3NlbmRfY2xpZW50X2tleV9leGNoYW5nZShTU0wgKnMpCiAJewogCXVuc2lnbmVkIGNoYXIgKnAsKmQ7Ci0JaW50IG47CisJaW50IG4gPSAwOwogCXVuc2lnbmVkIGxvbmcgYWxnX2s7CisJdW5zaWduZWQgbG9uZyBhbGdfYTsKICNpZm5kZWYgT1BFTlNTTF9OT19SU0EKIAl1bnNpZ25lZCBjaGFyICpxOwogCUVWUF9QS0VZICpwa2V5PU5VTEw7CkBAIC0yMzE0LDcgKzIzMjEsMTEgQEAKIAl1bnNpZ25lZCBjaGFyICplbmNvZGVkUG9pbnQgPSBOVUxMOwogCWludCBlbmNvZGVkX3B0X2xlbiA9IDA7CiAJQk5fQ1RYICogYm5fY3R4ID0gTlVMTDsKLSNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1BTSworCXVuc2lnbmVkIGludCBwc2tfbGVuID0gMDsKKwl1bnNpZ25lZCBjaGFyIHBza1tQU0tfTUFYX1BTS19MRU5dOworI2VuZGlmIC8qIE9QRU5TU0xfTk9fUFNLICovCisjZW5kaWYgLyogT1BFTlNTTF9OT19FQ0RIICovCiAKIAlpZiAocy0+c3RhdGUgPT0gU1NMM19TVF9DV19LRVlfRVhDSF9BKQogCQl7CkBAIC0yMzIyLDcgKzIzMzMsODkgQEAKIAkJcD0gJihkWzRdKTsKIAogCQlhbGdfaz1zLT5zMy0+dG1wLm5ld19jaXBoZXItPmFsZ29yaXRobV9ta2V5OworCQlhbGdfYT1zLT5zMy0+dG1wLm5ld19jaXBoZXItPmFsZ29yaXRobV9hdXRoOwogCisjaWZuZGVmIE9QRU5TU0xfTk9fUFNLCisJCWlmIChhbGdfYSAmIFNTTF9hUFNLKQorCQkJeworCQkJY2hhciBpZGVudGl0eVtQU0tfTUFYX0lERU5USVRZX0xFTiArIDFdOworCQkJc2l6ZV90IGlkZW50aXR5X2xlbjsKKwkJCXVuc2lnbmVkIGNoYXIgKnQgPSBOVUxMOworCQkJdW5zaWduZWQgY2hhciBwcmVfbXNbUFNLX01BWF9QU0tfTEVOKjIrNF07CisJCQl1bnNpZ25lZCBpbnQgcHJlX21zX2xlbiA9IDA7CisJCQlpbnQgcHNrX2VyciA9IDE7CisKKwkJCW4gPSAwOworCQkJaWYgKHMtPnBza19jbGllbnRfY2FsbGJhY2sgPT0gTlVMTCkKKwkJCQl7CisJCQkJU1NMZXJyKFNTTF9GX1NTTDNfU0VORF9DTElFTlRfS0VZX0VYQ0hBTkdFLAorCQkJCQlTU0xfUl9QU0tfTk9fQ0xJRU5UX0NCKTsKKwkJCQlnb3RvIGVycjsKKwkJCQl9CisKKwkJCW1lbXNldChpZGVudGl0eSwgMCwgc2l6ZW9mKGlkZW50aXR5KSk7CisJCQlwc2tfbGVuID0gcy0+cHNrX2NsaWVudF9jYWxsYmFjayhzLCBzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHlfaGludCwKKwkJCQlpZGVudGl0eSwgc2l6ZW9mKGlkZW50aXR5KSwgcHNrLCBzaXplb2YocHNrKSk7CisJCQlpZiAocHNrX2xlbiA+IFBTS19NQVhfUFNLX0xFTikKKwkJCQl7CisJCQkJU1NMZXJyKFNTTF9GX1NTTDNfU0VORF9DTElFTlRfS0VZX0VYQ0hBTkdFLAorCQkJCQlFUlJfUl9JTlRFUk5BTF9FUlJPUik7CisJCQkJZ290byBwc2tfZXJyOworCQkJCX0KKwkJCWVsc2UgaWYgKHBza19sZW4gPT0gMCkKKwkJCQl7CisJCQkJU1NMZXJyKFNTTF9GX1NTTDNfU0VORF9DTElFTlRfS0VZX0VYQ0hBTkdFLAorCQkJCQlTU0xfUl9QU0tfSURFTlRJVFlfTk9UX0ZPVU5EKTsKKwkJCQlnb3RvIHBza19lcnI7CisJCQkJfQorCQkJaWRlbnRpdHlfbGVuID0gc3RybmxlbihpZGVudGl0eSwgc2l6ZW9mKGlkZW50aXR5KSk7CisJCQlpZiAoaWRlbnRpdHlfbGVuID4gUFNLX01BWF9JREVOVElUWV9MRU4pCisJCQkJeworCQkJCVNTTGVycihTU0xfRl9TU0wzX1NFTkRfQ0xJRU5UX0tFWV9FWENIQU5HRSwKKwkJCQkJRVJSX1JfSU5URVJOQUxfRVJST1IpOworCQkJCWdvdG8gcHNrX2VycjsKKwkJCQl9CisKKwkJCWlmICghKGFsZ19rICYgU1NMX2tFRUNESCkpCisJCQkJeworCQkJCS8qIENyZWF0ZSB0aGUgc2hhcmVkIHNlY3JldCBub3cgaWYgd2UncmUgbm90IHVzaW5nIEVDREhFLVBTSy4qLworCQkJCXByZV9tc19sZW4gPSAyK3Bza19sZW4rMitwc2tfbGVuOworCQkJCXQgPSBwcmVfbXM7CisJCQkJczJuKHBza19sZW4sIHQpOworCQkJCW1lbXNldCh0LCAwLCBwc2tfbGVuKTsKKwkJCQl0Kz1wc2tfbGVuOworCQkJCXMybihwc2tfbGVuLCB0KTsKKwkJCQltZW1jcHkodCwgcHNrLCBwc2tfbGVuKTsKKworCQkJCXMtPnNlc3Npb24tPm1hc3Rlcl9rZXlfbGVuZ3RoID0KKwkJCQkJcy0+bWV0aG9kLT5zc2wzX2VuYy0+Z2VuZXJhdGVfbWFzdGVyX3NlY3JldChzLAorCQkJCQkJcy0+c2Vzc2lvbi0+bWFzdGVyX2tleSwKKwkJCQkJCXByZV9tcywgcHJlX21zX2xlbik7CisJCQkJczJuKGlkZW50aXR5X2xlbiwgcCk7CisJCQkJbWVtY3B5KHAsIGlkZW50aXR5LCBpZGVudGl0eV9sZW4pOworCQkJCW4gPSAyICsgaWRlbnRpdHlfbGVuOworCQkJCX0KKworCQkJaWYgKHMtPnNlc3Npb24tPnBza19pZGVudGl0eSAhPSBOVUxMKQorCQkJCU9QRU5TU0xfZnJlZShzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHkpOworCQkJcy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5ID0gQlVGX3N0cmR1cChpZGVudGl0eSk7CisJCQlpZiAocy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5ID09IE5VTEwpCisJCQkJeworCQkJCVNTTGVycihTU0xfRl9TU0wzX1NFTkRfQ0xJRU5UX0tFWV9FWENIQU5HRSwKKwkJCQkJRVJSX1JfTUFMTE9DX0ZBSUxVUkUpOworCQkJCWdvdG8gcHNrX2VycjsKKwkJCQl9CisJCQlwc2tfZXJyID0gMDsKKwkJcHNrX2VycjoKKwkJCU9QRU5TU0xfY2xlYW5zZShpZGVudGl0eSwgUFNLX01BWF9JREVOVElUWV9MRU4pOworCQkJT1BFTlNTTF9jbGVhbnNlKHByZV9tcywgc2l6ZW9mKHByZV9tcykpOworCQkJaWYgKHBza19lcnIgIT0gMCkKKwkJCQl7CisJCQkJc3NsM19zZW5kX2FsZXJ0KHMsIFNTTDNfQUxfRkFUQUwsIFNTTF9BRF9IQU5EU0hBS0VfRkFJTFVSRSk7CisJCQkJZ290byBlcnI7CisJCQkJfQorCQkJfQorI2VuZGlmCiAJCS8qIEZvb2wgZW1hY3MgaW5kZW50YXRpb24gKi8KIAkJaWYgKDApIHt9CiAjaWZuZGVmIE9QRU5TU0xfTk9fUlNBCkBAIC0yNTgzLDE0ICsyNjc2LDI2IEBACiAJCQkvKiBwZXJoYXBzIGNsZWFuIHRoaW5ncyB1cCBhIGJpdCBFQVkgRUFZIEVBWSBFQVkqLwogCQkJfQogI2VuZGlmCi0KLSNpZm5kZWYgT1BFTlNTTF9OT19FQ0RIIAorI2lmbmRlZiBPUEVOU1NMX05PX0VDREgKIAkJZWxzZSBpZiAoYWxnX2sgJiAoU1NMX2tFRUNESHxTU0xfa0VDREhyfFNTTF9rRUNESGUpKQogCQkJewogCQkJY29uc3QgRUNfR1JPVVAgKnNydnJfZ3JvdXAgPSBOVUxMOwogCQkJRUNfS0VZICp0a2V5OwogCQkJaW50IGVjZGhfY2xudF9jZXJ0ID0gMDsKIAkJCWludCBmaWVsZF9zaXplID0gMDsKKyNpZm5kZWYgT1BFTlNTTF9OT19QU0sKKwkJCXVuc2lnbmVkIGNoYXIgKnByZV9tczsKKwkJCXVuc2lnbmVkIGNoYXIgKnQ7CisJCQl1bnNpZ25lZCBpbnQgcHJlX21zX2xlbjsKKwkJCXVuc2lnbmVkIGludCBpOworI2VuZGlmCisKKwkJCWlmIChzLT5zZXNzaW9uLT5zZXNzX2NlcnQgPT0gTlVMTCkgCisJCQkJeworCQkJCXNzbDNfc2VuZF9hbGVydChzLFNTTDNfQUxfRkFUQUwsU1NMX0FEX1VORVhQRUNURURfTUVTU0FHRSk7CisJCQkJU1NMZXJyKFNTTF9GX1NTTDNfU0VORF9DTElFTlRfS0VZX0VYQ0hBTkdFLFNTTF9SX1VORVhQRUNURURfTUVTU0FHRSk7CisJCQkJZ290byBlcnI7CisJCQkJfQogCiAJCQkvKiBEaWQgd2Ugc2VuZCBvdXQgdGhlIGNsaWVudCdzCiAJCQkgKiBFQ0RIIHNoYXJlIGZvciB1c2UgaW4gcHJlbWFzdGVyCkBAIC0yNzExLDE1ICsyODE2LDQxIEBACiAJCQkJZ290byBlcnI7CiAJCQkJfQogCi0JCQkvKiBnZW5lcmF0ZSBtYXN0ZXIga2V5IGZyb20gdGhlIHJlc3VsdCAqLwotCQkJcy0+c2Vzc2lvbi0+bWFzdGVyX2tleV9sZW5ndGggPSBzLT5tZXRob2QtPnNzbDNfZW5jIFwKLQkJCSAgICAtPiBnZW5lcmF0ZV9tYXN0ZXJfc2VjcmV0KHMsIAotCQkJCXMtPnNlc3Npb24tPm1hc3Rlcl9rZXksCi0JCQkJcCwgbik7Ci0KKyNpZm5kZWYgT1BFTlNTTF9OT19QU0sKKwkJCS8qIEVDREhFIFBTSyBjaXBoZXJzdWl0ZXMgZnJvbSBSRkMgNTQ4OSAqLworCQkJaWYgKChhbGdfYSAmIFNTTF9hUFNLKSAmJiBwc2tfbGVuICE9IDApCisJCQkJeworCQkJCXByZV9tc19sZW4gPSAyK3Bza19sZW4rMituOworCQkJCXByZV9tcyA9IE9QRU5TU0xfbWFsbG9jKHByZV9tc19sZW4pOworCQkJCWlmIChwcmVfbXMgPT0gTlVMTCkKKwkJCQkJeworCQkJCQlTU0xlcnIoU1NMX0ZfU1NMM19TRU5EX0NMSUVOVF9LRVlfRVhDSEFOR0UsCisJCQkgICAgCQlFUlJfUl9NQUxMT0NfRkFJTFVSRSk7CisJCQkJCWdvdG8gZXJyOworCQkJCQl9CisJCQkJbWVtc2V0KHByZV9tcywgMCwgcHJlX21zX2xlbik7CisJCQkJdCA9IHByZV9tczsKKwkJCQlzMm4ocHNrX2xlbiwgdCk7CisJCQkJbWVtY3B5KHQsIHBzaywgcHNrX2xlbik7CisJCQkJdCArPSBwc2tfbGVuOworCQkJCXMybihuLCB0KTsKKwkJCQltZW1jcHkodCwgcCwgbik7CisJCQkJcy0+c2Vzc2lvbi0+bWFzdGVyX2tleV9sZW5ndGggPSBzLT5tZXRob2QtPnNzbDNfZW5jIFwKKwkJCQkJLT4gZ2VuZXJhdGVfbWFzdGVyX3NlY3JldChzLAorCQkJCQkJcy0+c2Vzc2lvbi0+bWFzdGVyX2tleSwgcHJlX21zLCBwcmVfbXNfbGVuKTsKKwkJCQlPUEVOU1NMX2NsZWFuc2UocHJlX21zLCBwcmVfbXNfbGVuKTsKKwkJCQlPUEVOU1NMX2ZyZWUocHJlX21zKTsKKwkJCQl9CisjZW5kaWYgLyogT1BFTlNTTF9OT19QU0sgKi8KKwkJCWlmICghKGFsZ19hICYgU1NMX2FQU0spKQorCQkJCXsKKwkJCQkvKiBnZW5lcmF0ZSBtYXN0ZXIga2V5IGZyb20gdGhlIHJlc3VsdCAqLworCQkJCXMtPnNlc3Npb24tPm1hc3Rlcl9rZXlfbGVuZ3RoID0gcy0+bWV0aG9kLT5zc2wzX2VuYyBcCisJCQkJCS0+IGdlbmVyYXRlX21hc3Rlcl9zZWNyZXQocywKKwkJCQkJCXMtPnNlc3Npb24tPm1hc3Rlcl9rZXksIHAsIG4pOworCQkJCX0KIAkJCW1lbXNldChwLCAwLCBuKTsgLyogY2xlYW4gdXAgKi8KLQotCQkJaWYgKGVjZGhfY2xudF9jZXJ0KSAKKwkJCWlmIChlY2RoX2NsbnRfY2VydCkKIAkJCQl7CiAJCQkJLyogU2VuZCBlbXB0eSBjbGllbnQga2V5IGV4Y2ggbWVzc2FnZSAqLwogCQkJCW4gPSAwOwpAQCAtMjc0NywyOSArMjg3OCw0MiBAQAogCQkJCQl9CiAKIAkJCQkvKiBFbmNvZGUgdGhlIHB1YmxpYyBrZXkgKi8KLQkJCQluID0gRUNfUE9JTlRfcG9pbnQyb2N0KHNydnJfZ3JvdXAsIAotCQkJCSAgICBFQ19LRVlfZ2V0MF9wdWJsaWNfa2V5KGNsbnRfZWNkaCksIAotCQkJCSAgICBQT0lOVF9DT05WRVJTSU9OX1VOQ09NUFJFU1NFRCwgCisJCQkJZW5jb2RlZF9wdF9sZW4gPSBFQ19QT0lOVF9wb2ludDJvY3Qoc3J2cl9ncm91cCwKKwkJCQkgICAgRUNfS0VZX2dldDBfcHVibGljX2tleShjbG50X2VjZGgpLAorCQkJCSAgICBQT0lOVF9DT05WRVJTSU9OX1VOQ09NUFJFU1NFRCwKIAkJCQkgICAgZW5jb2RlZFBvaW50LCBlbmNvZGVkX3B0X2xlbiwgYm5fY3R4KTsKKwkJCQkKKwkJCQluID0gMDsKKyNpZm5kZWYgT1BFTlNTTF9OT19QU0sKKwkJCQlpZiAoKGFsZ19hICYgU1NMX2FQU0spICYmIHBza19sZW4gIT0gMCkKKwkJCQkJeworCQkJCQlpID0gc3RybGVuKHMtPnNlc3Npb24tPnBza19pZGVudGl0eSk7CisJCQkJCXMybihpLCBwKTsKKwkJCQkJbWVtY3B5KHAsIHMtPnNlc3Npb24tPnBza19pZGVudGl0eSwgaSk7CisJCQkJCXAgKz0gaTsKKwkJCQkJbiA9IGkgKyAyOworCQkJCQl9CisjZW5kaWYKIAotCQkJCSpwID0gbjsgLyogbGVuZ3RoIG9mIGVuY29kZWQgcG9pbnQgKi8KKwkJCQkqcCA9IGVuY29kZWRfcHRfbGVuOyAvKiBsZW5ndGggb2YgZW5jb2RlZCBwb2ludCAqLwogCQkJCS8qIEVuY29kZWQgcG9pbnQgd2lsbCBiZSBjb3BpZWQgaGVyZSAqLwotCQkJCXAgKz0gMTsgCisJCQkJcCArPSAxOworCQkJCW4gKz0gMTsKIAkJCQkvKiBjb3B5IHRoZSBwb2ludCAqLwotCQkJCW1lbWNweSgodW5zaWduZWQgY2hhciAqKXAsIGVuY29kZWRQb2ludCwgbik7CisJCQkJbWVtY3B5KCh1bnNpZ25lZCBjaGFyICopcCwgZW5jb2RlZFBvaW50LCBlbmNvZGVkX3B0X2xlbik7CiAJCQkJLyogaW5jcmVtZW50IG4gdG8gYWNjb3VudCBmb3IgbGVuZ3RoIGZpZWxkICovCi0JCQkJbiArPSAxOyAKKwkJCQluICs9IGVuY29kZWRfcHRfbGVuOwogCQkJCX0KIAogCQkJLyogRnJlZSBhbGxvY2F0ZWQgbWVtb3J5ICovCiAJCQlCTl9DVFhfZnJlZShibl9jdHgpOwogCQkJaWYgKGVuY29kZWRQb2ludCAhPSBOVUxMKSBPUEVOU1NMX2ZyZWUoZW5jb2RlZFBvaW50KTsKLQkJCWlmIChjbG50X2VjZGggIT0gTlVMTCkgCisJCQlpZiAoY2xudF9lY2RoICE9IE5VTEwpCiAJCQkJIEVDX0tFWV9mcmVlKGNsbnRfZWNkaCk7CiAJCQlFVlBfUEtFWV9mcmVlKHNydnJfcHViX3BrZXkpOwogCQkJfQogI2VuZGlmIC8qICFPUEVOU1NMX05PX0VDREggKi8KLQkJZWxzZSBpZiAoYWxnX2sgJiBTU0xfa0dPU1QpIAorCQllbHNlIGlmIChhbGdfayAmIFNTTF9rR09TVCkKIAkJCXsKIAkJCS8qIEdPU1Qga2V5IGV4Y2hhbmdlIG1lc3NhZ2UgY3JlYXRpb24gKi8KIAkJCUVWUF9QS0VZX0NUWCAqcGtleV9jdHg7CkBAIC0yODkyLDg5ICszMDM2LDcgQEAKIAkJCQl9CiAJCQl9CiAjZW5kaWYKLSNpZm5kZWYgT1BFTlNTTF9OT19QU0sKLQkJZWxzZSBpZiAoYWxnX2sgJiBTU0xfa1BTSykKLQkJCXsKLQkJCWNoYXIgaWRlbnRpdHlbUFNLX01BWF9JREVOVElUWV9MRU5dOwotCQkJdW5zaWduZWQgY2hhciAqdCA9IE5VTEw7Ci0JCQl1bnNpZ25lZCBjaGFyIHBza19vcl9wcmVfbXNbUFNLX01BWF9QU0tfTEVOKjIrNF07Ci0JCQl1bnNpZ25lZCBpbnQgcHJlX21zX2xlbiA9IDAsIHBza19sZW4gPSAwOwotCQkJaW50IHBza19lcnIgPSAxOwotCi0JCQluID0gMDsKLQkJCWlmIChzLT5wc2tfY2xpZW50X2NhbGxiYWNrID09IE5VTEwpCi0JCQkJewotCQkJCVNTTGVycihTU0xfRl9TU0wzX1NFTkRfQ0xJRU5UX0tFWV9FWENIQU5HRSwKLQkJCQkJU1NMX1JfUFNLX05PX0NMSUVOVF9DQik7Ci0JCQkJZ290byBlcnI7Ci0JCQkJfQotCi0JCQlwc2tfbGVuID0gcy0+cHNrX2NsaWVudF9jYWxsYmFjayhzLCBzLT5jdHgtPnBza19pZGVudGl0eV9oaW50LAotCQkJCWlkZW50aXR5LCBQU0tfTUFYX0lERU5USVRZX0xFTiwKLQkJCQlwc2tfb3JfcHJlX21zLCBzaXplb2YocHNrX29yX3ByZV9tcykpOwotCQkJaWYgKHBza19sZW4gPiBQU0tfTUFYX1BTS19MRU4pCi0JCQkJewotCQkJCVNTTGVycihTU0xfRl9TU0wzX1NFTkRfQ0xJRU5UX0tFWV9FWENIQU5HRSwKLQkJCQkJRVJSX1JfSU5URVJOQUxfRVJST1IpOwotCQkJCWdvdG8gcHNrX2VycjsKLQkJCQl9Ci0JCQllbHNlIGlmIChwc2tfbGVuID09IDApCi0JCQkJewotCQkJCVNTTGVycihTU0xfRl9TU0wzX1NFTkRfQ0xJRU5UX0tFWV9FWENIQU5HRSwKLQkJCQkJU1NMX1JfUFNLX0lERU5USVRZX05PVF9GT1VORCk7Ci0JCQkJZ290byBwc2tfZXJyOwotCQkJCX0KLQotCQkJLyogY3JlYXRlIFBTSyBwcmVfbWFzdGVyX3NlY3JldCAqLwotCQkJcHJlX21zX2xlbiA9IDIrcHNrX2xlbisyK3Bza19sZW47Ci0JCQl0ID0gcHNrX29yX3ByZV9tczsKLQkJCW1lbW1vdmUocHNrX29yX3ByZV9tcytwc2tfbGVuKzQsIHBza19vcl9wcmVfbXMsIHBza19sZW4pOwotCQkJczJuKHBza19sZW4sIHQpOwotCQkJbWVtc2V0KHQsIDAsIHBza19sZW4pOwotCQkJdCs9cHNrX2xlbjsKLQkJCXMybihwc2tfbGVuLCB0KTsKLQotCQkJaWYgKHMtPnNlc3Npb24tPnBza19pZGVudGl0eV9oaW50ICE9IE5VTEwpCi0JCQkJT1BFTlNTTF9mcmVlKHMtPnNlc3Npb24tPnBza19pZGVudGl0eV9oaW50KTsKLQkJCXMtPnNlc3Npb24tPnBza19pZGVudGl0eV9oaW50ID0gQlVGX3N0cmR1cChzLT5jdHgtPnBza19pZGVudGl0eV9oaW50KTsKLQkJCWlmIChzLT5jdHgtPnBza19pZGVudGl0eV9oaW50ICE9IE5VTEwgJiYKLQkJCQlzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHlfaGludCA9PSBOVUxMKQotCQkJCXsKLQkJCQlTU0xlcnIoU1NMX0ZfU1NMM19TRU5EX0NMSUVOVF9LRVlfRVhDSEFOR0UsCi0JCQkJCUVSUl9SX01BTExPQ19GQUlMVVJFKTsKLQkJCQlnb3RvIHBza19lcnI7Ci0JCQkJfQotCi0JCQlpZiAocy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5ICE9IE5VTEwpCi0JCQkJT1BFTlNTTF9mcmVlKHMtPnNlc3Npb24tPnBza19pZGVudGl0eSk7Ci0JCQlzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHkgPSBCVUZfc3RyZHVwKGlkZW50aXR5KTsKLQkJCWlmIChzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHkgPT0gTlVMTCkKLQkJCQl7Ci0JCQkJU1NMZXJyKFNTTF9GX1NTTDNfU0VORF9DTElFTlRfS0VZX0VYQ0hBTkdFLAotCQkJCQlFUlJfUl9NQUxMT0NfRkFJTFVSRSk7Ci0JCQkJZ290byBwc2tfZXJyOwotCQkJCX0KLQotCQkJcy0+c2Vzc2lvbi0+bWFzdGVyX2tleV9sZW5ndGggPQotCQkJCXMtPm1ldGhvZC0+c3NsM19lbmMtPmdlbmVyYXRlX21hc3Rlcl9zZWNyZXQocywKLQkJCQkJcy0+c2Vzc2lvbi0+bWFzdGVyX2tleSwKLQkJCQkJcHNrX29yX3ByZV9tcywgcHJlX21zX2xlbik7IAotCQkJbiA9IHN0cmxlbihpZGVudGl0eSk7Ci0JCQlzMm4obiwgcCk7Ci0JCQltZW1jcHkocCwgaWRlbnRpdHksIG4pOwotCQkJbis9MjsKLQkJCXBza19lcnIgPSAwOwotCQlwc2tfZXJyOgotCQkJT1BFTlNTTF9jbGVhbnNlKGlkZW50aXR5LCBQU0tfTUFYX0lERU5USVRZX0xFTik7Ci0JCQlPUEVOU1NMX2NsZWFuc2UocHNrX29yX3ByZV9tcywgc2l6ZW9mKHBza19vcl9wcmVfbXMpKTsKLQkJCWlmIChwc2tfZXJyICE9IDApCi0JCQkJewotCQkJCXNzbDNfc2VuZF9hbGVydChzLCBTU0wzX0FMX0ZBVEFMLCBTU0xfQURfSEFORFNIQUtFX0ZBSUxVUkUpOwotCQkJCWdvdG8gZXJyOwotCQkJCX0KLQkJCX0KLSNlbmRpZgotCQllbHNlCisJCWVsc2UgaWYgKCEoYWxnX2sgJiBTU0xfa1BTSykgfHwgKChhbGdfayAmIFNTTF9rUFNLKSAmJiAhKGFsZ19hICYgU1NMX2FQU0spKSkKIAkJCXsKIAkJCXNzbDNfc2VuZF9hbGVydChzLCBTU0wzX0FMX0ZBVEFMLAogCQkJICAgIFNTTF9BRF9IQU5EU0hBS0VfRkFJTFVSRSk7CkBAIC0zMjc5LDcgKzMzNDEsNyBAQAogCWFsZ19hPXMtPnMzLT50bXAubmV3X2NpcGhlci0+YWxnb3JpdGhtX2F1dGg7CiAKIAkvKiB3ZSBkb24ndCBoYXZlIGEgY2VydGlmaWNhdGUgKi8KLQlpZiAoKGFsZ19hICYgKFNTTF9hREh8U1NMX2FOVUxMfFNTTF9hS1JCNSkpIHx8IChhbGdfayAmIFNTTF9rUFNLKSkKKwlpZiAoKGFsZ19hICYgKFNTTF9hREh8U1NMX2FOVUxMfFNTTF9hS1JCNSkpIHx8ICgoYWxnX2EgJiBTU0xfYVBTSykgJiYgIShhbGdfayAmIFNTTF9rUlNBKSkpCiAJCXJldHVybigxKTsKIAogCXNjPXMtPnNlc3Npb24tPnNlc3NfY2VydDsKQEAgLTM0MzgsMTAgKzM1MDAsMjkgQEAKIAlpZiAocy0+c3RhdGUgIT0gU1NMM19TVF9DV19DSEFOTkVMX0lEX0EpCiAJCXJldHVybiBzc2wzX2RvX3dyaXRlKHMsIFNTTDNfUlRfSEFORFNIQUtFKTsKIAorCWlmICghcy0+dGxzZXh0X2NoYW5uZWxfaWRfcHJpdmF0ZSAmJiBzLT5jdHgtPmNoYW5uZWxfaWRfY2IpCisJCXsKKwkJRVZQX1BLRVkgKmtleSA9IE5VTEw7CisJCXMtPmN0eC0+Y2hhbm5lbF9pZF9jYihzLCAma2V5KTsKKwkJaWYgKGtleSAhPSBOVUxMKQorCQkJeworCQkJcy0+dGxzZXh0X2NoYW5uZWxfaWRfcHJpdmF0ZSA9IGtleTsKKwkJCX0KKwkJfQorCWlmICghcy0+dGxzZXh0X2NoYW5uZWxfaWRfcHJpdmF0ZSkKKwkJeworCQlzLT5yd3N0YXRlPVNTTF9DSEFOTkVMX0lEX0xPT0tVUDsKKwkJcmV0dXJuICgtMSk7CisJCX0KKwlzLT5yd3N0YXRlPVNTTF9OT1RISU5HOworCiAJZCA9ICh1bnNpZ25lZCBjaGFyICopcy0+aW5pdF9idWYtPmRhdGE7CiAJKihkKyspPVNTTDNfTVRfRU5DUllQVEVEX0VYVEVOU0lPTlM7CiAJbDJuMygyICsgMiArIFRMU0VYVF9DSEFOTkVMX0lEX1NJWkUsIGQpOwotCXMybihUTFNFWFRfVFlQRV9jaGFubmVsX2lkLCBkKTsKKwlpZiAocy0+czMtPnRsc2V4dF9jaGFubmVsX2lkX25ldykKKwkJczJuKFRMU0VYVF9UWVBFX2NoYW5uZWxfaWRfbmV3LCBkKTsKKwllbHNlCisJCXMybihUTFNFWFRfVFlQRV9jaGFubmVsX2lkLCBkKTsKIAlzMm4oVExTRVhUX0NIQU5ORUxfSURfU0laRSwgZCk7CiAKIAlFVlBfTURfQ1RYX2luaXQoJm1kX2N0eCk7CkBAIC0zNDUyLDkgKzM1MzMsOSBAQAogCQlTU0xlcnIoU1NMX0ZfU1NMM19TRU5EX0NIQU5ORUxfSUQsU1NMX1JfQ0FOTk9UX1NFUklBTElaRV9QVUJMSUNfS0VZKTsKIAkJZ290byBlcnI7CiAJCX0KLQkvLyBpMmRfUHVibGljS2V5IHdpbGwgcHJvZHVjZSBhbiBBTlNJIFg5LjYyIHB1YmxpYyBrZXkgd2hpY2gsIGZvciBhCi0JLy8gUC0yNTYga2V5LCBpcyAweDA0IChtZWFuaW5nIHVuY29tcHJlc3NlZCkgZm9sbG93ZWQgYnkgdGhlIHggYW5kIHkKLQkvLyBmaWVsZCBlbGVtZW50cyBhcyAzMi1ieXRlLCBiaWctZW5kaWFuIG51bWJlcnMuCisJLyogaTJkX1B1YmxpY0tleSB3aWxsIHByb2R1Y2UgYW4gQU5TSSBYOS42MiBwdWJsaWMga2V5IHdoaWNoLCBmb3IgYQorCSAqIFAtMjU2IGtleSwgaXMgMHgwNCAobWVhbmluZyB1bmNvbXByZXNzZWQpIGZvbGxvd2VkIGJ5IHRoZSB4IGFuZCB5CisJICogZmllbGQgZWxlbWVudHMgYXMgMzItYnl0ZSwgYmlnLWVuZGlhbiBudW1iZXJzLiAqLwogCWlmIChwdWJsaWNfa2V5X2xlbiAhPSA2NSkKIAkJewogCQlTU0xlcnIoU1NMX0ZfU1NMM19TRU5EX0NIQU5ORUxfSUQsU1NMX1JfQ0hBTk5FTF9JRF9OT1RfUDI1Nik7CkBAIC0zNTAwLDE0ICszNTgxLDE0IEBACiAJCX0KIAogCWRlcnAgPSBkZXJfc2lnOwotCXNpZyA9IGQyaV9FQ0RTQV9TSUcoTlVMTCwgKGNvbnN0IHVuc2lnbmVkIGNoYXIqKikmZGVycCwgc2lnX2xlbik7CisJc2lnID0gZDJpX0VDRFNBX1NJRyhOVUxMLCAoY29uc3QgdW5zaWduZWQgY2hhcioqKSAmZGVycCwgc2lnX2xlbik7CiAJaWYgKHNpZyA9PSBOVUxMKQogCQl7CiAJCVNTTGVycihTU0xfRl9TU0wzX1NFTkRfQ0hBTk5FTF9JRCxTU0xfUl9EMklfRUNEU0FfU0lHKTsKIAkJZ290byBlcnI7CiAJCX0KIAotCS8vIFRoZSBmaXJzdCBieXRlIG9mIHB1YmxpY19rZXkgd2lsbCBiZSAweDQsIGRlbm90aW5nIGFuIHVuY29tcHJlc3NlZCBrZXkuCisJLyogVGhlIGZpcnN0IGJ5dGUgb2YgcHVibGljX2tleSB3aWxsIGJlIDB4NCwgZGVub3RpbmcgYW4gdW5jb21wcmVzc2VkIGtleS4gKi8KIAltZW1jcHkoZCwgcHVibGljX2tleSArIDEsIDY0KTsKIAlkICs9IDY0OwogCW1lbXNldChkLCAwLCAyICogMzIpOwpkaWZmIC0tZ2l0IGEvc3NsL3MzX2VuYy5jIGIvc3NsL3MzX2VuYy5jCmluZGV4IDFiNWNjNzkuLjM1OTVjZmYgMTAwNjQ0Ci0tLSBhL3NzbC9zM19lbmMuYworKysgYi9zc2wvczNfZW5jLmMKQEAgLTcyOCw3ICs3MjgsNyBAQAogCQl9CiAKIAl0PUVWUF9NRF9DVFhfc2l6ZShoYXNoKTsKLQlpZiAodCA8IDApCisJaWYgKHQgPCAwIHx8IHQgPiAyMCkKIAkJcmV0dXJuIC0xOwogCW1kX3NpemU9dDsKIAlucGFkPSg0OC9tZF9zaXplKSptZF9zaXplOwpkaWZmIC0tZ2l0IGEvc3NsL3MzX2xpYi5jIGIvc3NsL3MzX2xpYi5jCmluZGV4IGYzM2FkYTMuLmRjYTk4NTggMTAwNjQ0Ci0tLSBhL3NzbC9zM19saWIuYworKysgYi9zc2wvczNfbGliLmMKQEAgLTI4MjYsNiArMjgyNiw0MSBAQAogCTI1NiwKIAl9LAogCisjaWZuZGVmIE9QRU5TU0xfTk9fUFNLCisgICAgLyogRUNESCBQU0sgY2lwaGVyc3VpdGVzIGZyb20gUkZDIDU0ODkgKi8KKwkvKiBDaXBoZXIgQzAzNSAqLworCXsKKwkxLAorCVRMUzFfVFhUX0VDREhFX1BTS19XSVRIX0FFU18xMjhfQ0JDX1NIQSwKKwlUTFMxX0NLX0VDREhFX1BTS19XSVRIX0FFU18xMjhfQ0JDX1NIQSwKKwlTU0xfa0VFQ0RILAorCVNTTF9hUFNLLAorCVNTTF9BRVMxMjgsCisJU1NMX1NIQTEsCisJU1NMX1RMU1YxLAorCVNTTF9OT1RfRVhQfFNTTF9ISUdIfFNTTF9GSVBTLAorCVNTTF9IQU5EU0hBS0VfTUFDX0RFRkFVTFR8VExTMV9QUkYsCisJMTI4LAorCTEyOCwKKwl9LAorCisJLyogQ2lwaGVyIEMwMzYgKi8KKwl7CisJMSwKKwlUTFMxX1RYVF9FQ0RIRV9QU0tfV0lUSF9BRVNfMjU2X0NCQ19TSEEsCisJVExTMV9DS19FQ0RIRV9QU0tfV0lUSF9BRVNfMjU2X0NCQ19TSEEsCisJU1NMX2tFRUNESCwKKwlTU0xfYVBTSywKKwlTU0xfQUVTMjU2LAorCVNTTF9TSEExLAorCVNTTF9UTFNWMSwKKwlTU0xfTk9UX0VYUHxTU0xfSElHSHxTU0xfRklQUywKKwlTU0xfSEFORFNIQUtFX01BQ19ERUZBVUxUfFRMUzFfUFJGLAorCTI1NiwKKwkyNTYsCisJfSwKKyNlbmRpZiAvKiBPUEVOU1NMX05PX1BTSyAqLworCiAjZW5kaWYgLyogT1BFTlNTTF9OT19FQ0RIICovCiAKIApAQCAtMzM3Niw4ICszNDExLDYgQEAKIAkJYnJlYWs7CiAjZW5kaWYKIAljYXNlIFNTTF9DVFJMX0NIQU5ORUxfSUQ6Ci0JCWlmICghcy0+c2VydmVyKQotCQkJYnJlYWs7CiAJCXMtPnRsc2V4dF9jaGFubmVsX2lkX2VuYWJsZWQgPSAxOwogCQlyZXQgPSAxOwogCQlicmVhazsKQEAgLTMzOTMsNyArMzQyNiw3IEBACiAJCQl9CiAJCWlmIChzLT50bHNleHRfY2hhbm5lbF9pZF9wcml2YXRlKQogCQkJRVZQX1BLRVlfZnJlZShzLT50bHNleHRfY2hhbm5lbF9pZF9wcml2YXRlKTsKLQkJcy0+dGxzZXh0X2NoYW5uZWxfaWRfcHJpdmF0ZSA9IChFVlBfUEtFWSopIHBhcmc7CisJCXMtPnRsc2V4dF9jaGFubmVsX2lkX3ByaXZhdGUgPSBFVlBfUEtFWV9kdXAoKEVWUF9QS0VZKikgcGFyZyk7CiAJCXJldCA9IDE7CiAJCWJyZWFrOwogCkBAIC0zNzM1LDcgKzM3NjgsNyBAQAogCQkJfQogCQlpZiAoY3R4LT50bHNleHRfY2hhbm5lbF9pZF9wcml2YXRlKQogCQkJRVZQX1BLRVlfZnJlZShjdHgtPnRsc2V4dF9jaGFubmVsX2lkX3ByaXZhdGUpOwotCQljdHgtPnRsc2V4dF9jaGFubmVsX2lkX3ByaXZhdGUgPSAoRVZQX1BLRVkqKSBwYXJnOworCQljdHgtPnRsc2V4dF9jaGFubmVsX2lkX3ByaXZhdGUgPSBFVlBfUEtFWV9kdXAoKEVWUF9QS0VZKikgcGFyZyk7CiAJCWJyZWFrOwogCiAJZGVmYXVsdDoKQEAgLTM5MzksNyArMzk3Miw3IEBACiAjZW5kaWYgLyogT1BFTlNTTF9OT19LUkI1ICovCiAjaWZuZGVmIE9QRU5TU0xfTk9fUFNLCiAJCS8qIHdpdGggUFNLIHRoZXJlIG11c3QgYmUgc2VydmVyIGNhbGxiYWNrIHNldCAqLwotCQlpZiAoKGFsZ19rICYgU1NMX2tQU0spICYmIHMtPnBza19zZXJ2ZXJfY2FsbGJhY2sgPT0gTlVMTCkKKwkJaWYgKChhbGdfYSAmIFNTTF9hUFNLKSAmJiBzLT5wc2tfc2VydmVyX2NhbGxiYWNrID09IE5VTEwpCiAJCQljb250aW51ZTsKICNlbmRpZiAvKiBPUEVOU1NMX05PX1BTSyAqLwogCmRpZmYgLS1naXQgYS9zc2wvczNfcGt0LmMgYi9zc2wvczNfcGt0LmMKaW5kZXggNzU5OTdhYy4uZGY0MzZjZiAxMDA2NDQKLS0tIGEvc3NsL3MzX3BrdC5jCisrKyBiL3NzbC9zM19wa3QuYwpAQCAtMTEwLDYgKzExMCw3IEBACiAgKi8KIAogI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KICNkZWZpbmUgVVNFX1NPQ0tFVFMKICNpbmNsdWRlICJzc2xfbG9jbC5oIgpAQCAtNTgwLDEwICs1ODEsMTEgQEAKIGludCBzc2wzX3dyaXRlX2J5dGVzKFNTTCAqcywgaW50IHR5cGUsIGNvbnN0IHZvaWQgKmJ1Zl8sIGludCBsZW4pCiAJewogCWNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1Zj1idWZfOwotCXVuc2lnbmVkIGludCB0b3QsbixudzsKLQlpbnQgaTsKKwl1bnNpZ25lZCBpbnQgbixudzsKKwlpbnQgaSx0b3Q7CiAKIAlzLT5yd3N0YXRlPVNTTF9OT1RISU5HOworCU9QRU5TU0xfYXNzZXJ0KHMtPnMzLT53bnVtIDw9IElOVF9NQVgpOwogCXRvdD1zLT5zMy0+d251bTsKIAlzLT5zMy0+d251bT0wOwogCkBAIC01OTgsNiArNjAwLDIyIEBACiAJCQl9CiAJCX0KIAorCS8qIGVuc3VyZSB0aGF0IGlmIHdlIGVuZCB1cCB3aXRoIGEgc21hbGxlciB2YWx1ZSBvZiBkYXRhIHRvIHdyaXRlIAorCSAqIG91dCB0aGFuIHRoZSB0aGUgb3JpZ2luYWwgbGVuIGZyb20gYSB3cml0ZSB3aGljaCBkaWRuJ3QgY29tcGxldGUgCisJICogZm9yIG5vbi1ibG9ja2luZyBJL08gYW5kIGFsc28gc29tZWhvdyBlbmRlZCB1cCBhdm9pZGluZyAKKwkgKiB0aGUgY2hlY2sgZm9yIHRoaXMgaW4gc3NsM193cml0ZV9wZW5kaW5nL1NTTF9SX0JBRF9XUklURV9SRVRSWSBhcworCSAqIGl0IG11c3QgbmV2ZXIgYmUgcG9zc2libGUgdG8gZW5kIHVwIHdpdGggKGxlbi10b3QpIGFzIGEgbGFyZ2UKKwkgKiBudW1iZXIgdGhhdCB3aWxsIHRoZW4gcHJvbXB0bHkgc2VuZCBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgdXNlcnMKKwkgKiBidWZmZXIgLi4uIHNvIHdlIHRyYXAgYW5kIHJlcG9ydCB0aGUgZXJyb3IgaW4gYSB3YXkgdGhlIHVzZXIKKwkgKiB3aWxsIG5vdGljZQorCSAqLworCWlmIChsZW4gPCB0b3QpCisJCXsKKwkJU1NMZXJyKFNTTF9GX1NTTDNfV1JJVEVfQllURVMsU1NMX1JfQkFEX0xFTkdUSCk7CisJCXJldHVybigtMSk7CisJCX0KKworCiAJbj0obGVuLXRvdCk7CiAJZm9yICg7OykKIAkJewpAQCAtNjE0LDkgKzYzMiw2IEBACiAJCSAgICAhcy0+czMtPnJlY29yZF9zcGxpdF9kb25lKQogCQkJewogCQkJZnJhZ21lbnQgPSAxOwotCQkJLyogVGhlIGZpcnN0IGJ5dGUgd2lsbCBiZSBpbiBpdHMgb3duIHJlY29yZCwgc28gd2UKLQkJCSAqIGNhbiB3cml0ZSBhbiBleHRyYSBieXRlLiAqLwotCQkJbWF4Kys7CiAJCQkvKiByZWNvcmRfc3BsaXRfZG9uZSByZWNvcmRzIHRoYXQgdGhlIHNwbGl0dGluZyBoYXMKIAkJCSAqIGJlZW4gZG9uZSBpbiBjYXNlIHdlIGhpdCBhbiBTU0xfV0FOVF9XUklURSBjb25kaXRpb24uCiAJCQkgKiBJbiB0aGF0IGNhc2UsIHdlIGRvbid0IG5lZWQgdG8gZG8gdGhlIHNwbGl0IGFnYWluLiAqLwpAQCAtNjMyLDYgKzY0Nyw4IEBACiAJCWlmIChpIDw9IDApCiAJCQl7CiAJCQlzLT5zMy0+d251bT10b3Q7CisJCQkvKiBUcnkgdG8gd3JpdGUgdGhlIGZyYWdtZW50IG5leHQgdGltZS4gKi8KKwkJCXMtPnMzLT5yZWNvcmRfc3BsaXRfZG9uZSA9IDA7CiAJCQlyZXR1cm4gaTsKIAkJCX0KIApAQCAtNjY4LDkgKzY4NSw2IEBACiAJU1NMM19CVUZGRVIgKndiPSYocy0+czMtPndidWYpOwogCVNTTF9TRVNTSU9OICpzZXNzOwogCi0gCWlmICh3Yi0+YnVmID09IE5VTEwpCi0JCWlmICghc3NsM19zZXR1cF93cml0ZV9idWZmZXIocykpCi0JCQlyZXR1cm4gLTE7CiAKIAkvKiBmaXJzdCBjaGVjayBpZiB0aGVyZSBpcyBhIFNTTDNfQlVGRkVSIHN0aWxsIGJlaW5nIHdyaXR0ZW4KIAkgKiBvdXQuICBUaGlzIHdpbGwgaGFwcGVuIHdpdGggbm9uIGJsb2NraW5nIElPICovCkBAIC02ODYsNiArNzAwLDEwIEBACiAJCS8qIGlmIGl0IHdlbnQsIGZhbGwgdGhyb3VnaCBhbmQgc2VuZCBtb3JlIHN0dWZmICovCiAJCX0KIAorCWlmICh3Yi0+YnVmID09IE5VTEwpCisJCWlmICghc3NsM19zZXR1cF93cml0ZV9idWZmZXIocykpCisJCQlyZXR1cm4gLTE7CisKIAlpZiAobGVuID09IDApCiAJCXJldHVybiAwOwogCkBAIC0xMDY3LDcgKzEwODUsNyBAQAogCQkJCXsKIAkJCQlzLT5yc3RhdGU9U1NMX1NUX1JFQURfSEVBREVSOwogCQkJCXJyLT5vZmY9MDsKLQkJCQlpZiAocy0+bW9kZSAmIFNTTF9NT0RFX1JFTEVBU0VfQlVGRkVSUykKKwkJCQlpZiAocy0+bW9kZSAmIFNTTF9NT0RFX1JFTEVBU0VfQlVGRkVSUyAmJiBzLT5zMy0+cmJ1Zi5sZWZ0ID09IDApCiAJCQkJCXNzbDNfcmVsZWFzZV9yZWFkX2J1ZmZlcihzKTsKIAkJCQl9CiAJCQl9CkBAIC0xMzEyLDEwICsxMzMwLDEyIEBACiAJCWlmICghKHMtPnMzLT5mbGFncyAmIFNTTDNfRkxBR1NfQ0NTX09LKSkKIAkJCXsKIAkJCWFsPVNTTF9BRF9VTkVYUEVDVEVEX01FU1NBR0U7Ci0JCQlTU0xlcnIoU1NMX0ZfU1NMM19SRUFEX0JZVEVTLFNTTF9SX1VORVhQRUNURURfQ0NTKTsKKwkJCVNTTGVycihTU0xfRl9TU0wzX1JFQURfQllURVMsU1NMX1JfQ0NTX1JFQ0VJVkVEX0VBUkxZKTsKIAkJCWdvdG8gZl9lcnI7CiAJCQl9CiAKKwkJcy0+czMtPmZsYWdzICY9IH5TU0wzX0ZMQUdTX0NDU19PSzsKKwogCQlyci0+bGVuZ3RoPTA7CiAKIAkJaWYgKHMtPm1zZ19jYWxsYmFjaykKQEAgLTE0NTAsMTIgKzE0NzAsNyBAQAogCiAJaWYgKHMtPnMzLT50bXAua2V5X2Jsb2NrID09IE5VTEwpCiAJCXsKLQkJaWYgKHMtPnNlc3Npb24tPm1hc3Rlcl9rZXlfbGVuZ3RoID09IDApCi0JCQl7Ci0JCQlTU0xlcnIoU1NMX0ZfU1NMM19ET19DSEFOR0VfQ0lQSEVSX1NQRUMsU1NMX1JfVU5FWFBFQ1RFRF9DQ1MpOwotCQkJcmV0dXJuICgwKTsKLQkJCX0KLQkJaWYgKHMtPnNlc3Npb24gPT0gTlVMTCkKKwkJaWYgKHMtPnNlc3Npb24gPT0gTlVMTCB8fCBzLT5zZXNzaW9uLT5tYXN0ZXJfa2V5X2xlbmd0aCA9PSAwKQogCQkJewogCQkJLyogbWlnaHQgaGFwcGVuIGlmIGR0bHMxX3JlYWRfYnl0ZXMoKSBjYWxscyB0aGlzICovCiAJCQlTU0xlcnIoU1NMX0ZfU1NMM19ET19DSEFOR0VfQ0lQSEVSX1NQRUMsU1NMX1JfQ0NTX1JFQ0VJVkVEX0VBUkxZKTsKZGlmZiAtLWdpdCBhL3NzbC9zM19zcnZyLmMgYi9zc2wvczNfc3J2ci5jCmluZGV4IDlmZGI1ZmQuLmY4M2M5MzYgMTAwNjQ0Ci0tLSBhL3NzbC9zM19zcnZyLmMKKysrIGIvc3NsL3MzX3NydnIuYwpAQCAtMjE3LDYgKzIxNyw3IEBACiAJewogCUJVRl9NRU0gKmJ1ZjsKIAl1bnNpZ25lZCBsb25nIGFsZ19rLFRpbWU9KHVuc2lnbmVkIGxvbmcpdGltZShOVUxMKTsKKwl1bnNpZ25lZCBsb25nIGFsZ19hOwogCXZvaWQgKCpjYikoY29uc3QgU1NMICpzc2wsaW50IHR5cGUsaW50IHZhbCk9TlVMTDsKIAlpbnQgcmV0PSAtMTsKIAlpbnQgbmV3X3N0YXRlLHN0YXRlLHNraXA9MDsKQEAgLTQxMiw5ICs0MTMsMTEgQEAKIAkJY2FzZSBTU0wzX1NUX1NXX0NFUlRfQToKIAkJY2FzZSBTU0wzX1NUX1NXX0NFUlRfQjoKIAkJCS8qIENoZWNrIGlmIGl0IGlzIGFub24gREggb3IgYW5vbiBFQ0RILCAqLwotCQkJLyogbm9ybWFsIFBTSyBvciBLUkI1IG9yIFNSUCAqLworCQkJLyogbm9uLVJTQSBQU0sgb3IgS1JCNSBvciBTUlAgKi8KIAkJCWlmICghKHMtPnMzLT50bXAubmV3X2NpcGhlci0+YWxnb3JpdGhtX2F1dGggJiBTU0xfYU5VTEwpCi0JCQkJJiYgIShzLT5zMy0+dG1wLm5ld19jaXBoZXItPmFsZ29yaXRobV9ta2V5ICYgU1NMX2tQU0spCisJCQkJLyogQW1vbmcgUFNLIGNpcGhlcnN1aXRlcyBvbmx5IFJTQV9QU0sgdXNlcyBzZXJ2ZXIgY2VydGlmaWNhdGUgKi8KKwkJCQkmJiAhKHMtPnMzLT50bXAubmV3X2NpcGhlci0+YWxnb3JpdGhtX2F1dGggJiBTU0xfYVBTSyAmJgorCQkJCQkgIShzLT5zMy0+dG1wLm5ld19jaXBoZXItPmFsZ29yaXRobV9ta2V5ICYgU1NMX2tSU0EpKQogCQkJCSYmICEocy0+czMtPnRtcC5uZXdfY2lwaGVyLT5hbGdvcml0aG1fYXV0aCAmIFNTTF9hS1JCNSkpCiAJCQkJewogCQkJCXJldD1zc2wzX3NlbmRfc2VydmVyX2NlcnRpZmljYXRlKHMpOwpAQCAtNDQzLDYgKzQ0Niw3IEBACiAJCWNhc2UgU1NMM19TVF9TV19LRVlfRVhDSF9BOgogCQljYXNlIFNTTDNfU1RfU1dfS0VZX0VYQ0hfQjoKIAkJCWFsZ19rID0gcy0+czMtPnRtcC5uZXdfY2lwaGVyLT5hbGdvcml0aG1fbWtleTsKKwkJCWFsZ19hID0gcy0+czMtPnRtcC5uZXdfY2lwaGVyLT5hbGdvcml0aG1fYXV0aDsKIAogCQkJLyogY2xlYXIgdGhpcywgaXQgbWF5IGdldCByZXNldCBieQogCQkJICogc2VuZF9zZXJ2ZXJfa2V5X2V4Y2hhbmdlICovCkBAIC00NzIsMTAgKzQ3NiwxMiBAQAogCQkJICogcHVibGljIGtleSBmb3Iga2V5IGV4Y2hhbmdlLgogCQkJICovCiAJCQlpZiAocy0+czMtPnRtcC51c2VfcnNhX3RtcAotCQkJLyogUFNLOiBzZW5kIFNlcnZlcktleUV4Y2hhbmdlIGlmIFBTSyBpZGVudGl0eQotCQkJICogaGludCBpZiBwcm92aWRlZCAqLworCQkJLyogUFNLOiBzZW5kIFNlcnZlcktleUV4Y2hhbmdlIGlmIGVpdGhlcjoKKwkJCSAqICAgLSBQU0sgaWRlbnRpdHkgaGludCBpcyBwcm92aWRlZCwgb3IKKwkJCSAqICAgLSB0aGUga2V5IGV4Y2hhbmdlIGlzIGtFRUNESC4KKwkJCSAqLwogI2lmbmRlZiBPUEVOU1NMX05PX1BTSwotCQkJICAgIHx8ICgoYWxnX2sgJiBTU0xfa1BTSykgJiYgcy0+Y3R4LT5wc2tfaWRlbnRpdHlfaGludCkKKwkJCSAgICB8fCAoKGFsZ19hICYgU1NMX2FQU0spICYmICgoYWxnX2sgJiBTU0xfa0VFQ0RIKSB8fCBzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHlfaGludCkpCiAjZW5kaWYKICNpZm5kZWYgT1BFTlNTTF9OT19TUlAKIAkJCSAgICAvKiBTUlA6IHNlbmQgU2VydmVyS2V5RXhjaGFuZ2UgKi8KQEAgLTY2OSw4ICs2NzUsOCBAQAogCQljYXNlIFNTTDNfU1RfU1JfQ0VSVF9WUkZZX0E6CiAJCWNhc2UgU1NMM19TVF9TUl9DRVJUX1ZSRllfQjoKIAotCQkJLyogd2Ugc2hvdWxkIGRlY2lkZSBpZiB3ZSBleHBlY3RlZCB0aGlzIG9uZSAqLwogCQkJcy0+czMtPmZsYWdzIHw9IFNTTDNfRkxBR1NfQ0NTX09LOworCQkJLyogd2Ugc2hvdWxkIGRlY2lkZSBpZiB3ZSBleHBlY3RlZCB0aGlzIG9uZSAqLwogCQkJcmV0PXNzbDNfZ2V0X2NlcnRfdmVyaWZ5KHMpOwogCQkJaWYgKHJldCA8PSAwKSBnb3RvIGVuZDsKIApAQCAtNjg4LDcgKzY5NCw2IEBACiAJCQljaGFubmVsX2lkID0gcy0+czMtPnRsc2V4dF9jaGFubmVsX2lkX3ZhbGlkOwogI2VuZGlmCiAKLQkJCXMtPnMzLT5mbGFncyB8PSBTU0wzX0ZMQUdTX0NDU19PSzsKIAkJCWlmIChuZXh0X3Byb3RvX25lZykKIAkJCQlzLT5zdGF0ZT1TU0wzX1NUX1NSX05FWFRfUFJPVE9fQTsKIAkJCWVsc2UgaWYgKGNoYW5uZWxfaWQpCkBAIC03MjMsNiArNzI4LDcgQEAKIAogCQljYXNlIFNTTDNfU1RfU1JfRklOSVNIRURfQToKIAkJY2FzZSBTU0wzX1NUX1NSX0ZJTklTSEVEX0I6CisJCQlzLT5zMy0+ZmxhZ3MgfD0gU1NMM19GTEFHU19DQ1NfT0s7CiAJCQlyZXQ9c3NsM19nZXRfZmluaXNoZWQocyxTU0wzX1NUX1NSX0ZJTklTSEVEX0EsCiAJCQkJU1NMM19TVF9TUl9GSU5JU0hFRF9CKTsKIAkJCWlmIChyZXQgPD0gMCkgZ290byBlbmQ7CkBAIC03MzQsNiArNzQwLDE1IEBACiAjZW5kaWYKIAkJCWVsc2UKIAkJCQlzLT5zdGF0ZT1TU0wzX1NUX1NXX0NIQU5HRV9BOworCQkJLyogSWYgdGhpcyBpcyBhIGZ1bGwgaGFuZHNoYWtlIHdpdGggQ2hhbm5lbElEIHRoZW4KKwkJCSAqIHJlY29yZCB0aGUgaGFzaHNoYWtlIGhhc2hlcyBpbiB8cy0+c2Vzc2lvbnwgaW4gY2FzZQorCQkJICogd2UgbmVlZCB0aGVtIHRvIHZlcmlmeSBhIENoYW5uZWxJRCBzaWduYXR1cmUgb24gYQorCQkJICogcmVzdW1wdGlvbiBvZiB0aGlzIHNlc3Npb24gaW4gdGhlIGZ1dHVyZS4gKi8KKwkJCWlmICghcy0+aGl0ICYmIHMtPnMzLT50bHNleHRfY2hhbm5lbF9pZF9uZXcpCisJCQkJeworCQkJCXJldCA9IHRsczFfcmVjb3JkX2hhbmRzaGFrZV9oYXNoZXNfZm9yX2NoYW5uZWxfaWQocyk7CisJCQkJaWYgKHJldCA8PSAwKSBnb3RvIGVuZDsKKwkJCQl9CiAJCQlzLT5pbml0X251bT0wOwogCQkJYnJlYWs7CiAKQEAgLTE0NjIsNiArMTQ3NywyMiBAQAogCiAJaWYgKHMtPnN0YXRlID09IFNTTDNfU1RfU1dfU1JWUl9IRUxMT19BKQogCQl7CisJCS8qIFdlIG9ubHkgYWNjZXB0IENoYW5uZWxJRHMgb24gY29ubmVjdGlvbnMgd2l0aCBFQ0RIRSBpbiBvcmRlcgorCQkgKiB0byBhdm9pZCBhIGtub3duIGF0dGFjayB3aGlsZSB3ZSBmaXggQ2hhbm5lbElEIGl0c2VsZi4gKi8KKwkJaWYgKHMtPnMzICYmCisJCSAgICBzLT5zMy0+dGxzZXh0X2NoYW5uZWxfaWRfdmFsaWQgJiYKKwkJICAgIChzLT5zMy0+dG1wLm5ld19jaXBoZXItPmFsZ29yaXRobV9ta2V5ICYgU1NMX2tFRUNESCkgPT0gMCkKKwkJCXMtPnMzLT50bHNleHRfY2hhbm5lbF9pZF92YWxpZCA9IDA7CisKKwkJLyogSWYgdGhpcyBpcyBhIHJlc3VtcHRpb24gYW5kIHRoZSBvcmlnaW5hbCBoYW5kc2hha2UgZGlkbid0CisJCSAqIHN1cHBvcnQgQ2hhbm5lbElEIHRoZW4gd2UgZGlkbid0IHJlY29yZCB0aGUgb3JpZ2luYWwKKwkJICogaGFuZHNoYWtlIGhhc2hlcyBpbiB0aGUgc2Vzc2lvbiBhbmQgc28gY2Fubm90IHJlc3VtZSB3aXRoCisJCSAqIENoYW5uZWxJRHMuICovCisJCWlmIChzLT5oaXQgJiYKKwkJICAgIHMtPnMzLT50bHNleHRfY2hhbm5lbF9pZF9uZXcgJiYKKwkJICAgIHMtPnNlc3Npb24tPm9yaWdpbmFsX2hhbmRzaGFrZV9oYXNoX2xlbiA9PSAwKQorCQkJcy0+czMtPnRsc2V4dF9jaGFubmVsX2lkX3ZhbGlkID0gMDsKKwogCQlidWY9KHVuc2lnbmVkIGNoYXIgKilzLT5pbml0X2J1Zi0+ZGF0YTsKICNpZmRlZiBPUEVOU1NMX05PX1RMU0VYVAogCQlwPXMtPnMzLT5zZXJ2ZXJfcmFuZG9tOwpAQCAtMTU5MSwxMSArMTYyMiwxNiBAQAogCWludCBjdXJ2ZV9pZCA9IDA7CiAJQk5fQ1RYICpibl9jdHggPSBOVUxMOyAKICNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1BTSworCWNvbnN0IGNoYXIqIHBza19pZGVudGl0eV9oaW50OworCXNpemVfdCBwc2tfaWRlbnRpdHlfaGludF9sZW47CisjZW5kaWYKIAlFVlBfUEtFWSAqcGtleTsKIAljb25zdCBFVlBfTUQgKm1kID0gTlVMTDsKIAl1bnNpZ25lZCBjaGFyICpwLCpkOwogCWludCBhbCxpOwotCXVuc2lnbmVkIGxvbmcgdHlwZTsKKwl1bnNpZ25lZCBsb25nIGFsZ19rOworCXVuc2lnbmVkIGxvbmcgYWxnX2E7CiAJaW50IG47CiAJQ0VSVCAqY2VydDsKIAlCSUdOVU0gKnJbNF07CkBAIC0xNjA2LDE1ICsxNjQyLDI4IEBACiAJRVZQX01EX0NUWF9pbml0KCZtZF9jdHgpOwogCWlmIChzLT5zdGF0ZSA9PSBTU0wzX1NUX1NXX0tFWV9FWENIX0EpCiAJCXsKLQkJdHlwZT1zLT5zMy0+dG1wLm5ld19jaXBoZXItPmFsZ29yaXRobV9ta2V5OworCQlhbGdfaz1zLT5zMy0+dG1wLm5ld19jaXBoZXItPmFsZ29yaXRobV9ta2V5OworCQlhbGdfYT1zLT5zMy0+dG1wLm5ld19jaXBoZXItPmFsZ29yaXRobV9hdXRoOwogCQljZXJ0PXMtPmNlcnQ7CiAKIAkJYnVmPXMtPmluaXRfYnVmOwogCiAJCXJbMF09clsxXT1yWzJdPXJbM109TlVMTDsKIAkJbj0wOworI2lmbmRlZiBPUEVOU1NMX05PX1BTSworCQlpZiAoYWxnX2EgJiBTU0xfYVBTSykKKwkJCXsKKwkJCS8qIHNpemUgZm9yIFBTSyBpZGVudGl0eSBoaW50ICovCisJCQlwc2tfaWRlbnRpdHlfaGludCA9IHMtPnNlc3Npb24tPnBza19pZGVudGl0eV9oaW50OworCQkJaWYgKHBza19pZGVudGl0eV9oaW50KQorCQkJCXBza19pZGVudGl0eV9oaW50X2xlbiA9IHN0cmxlbihwc2tfaWRlbnRpdHlfaGludCk7CisJCQllbHNlCisJCQkJcHNrX2lkZW50aXR5X2hpbnRfbGVuID0gMDsKKwkJCW4rPTIrcHNrX2lkZW50aXR5X2hpbnRfbGVuOworCQkJfQorI2VuZGlmIC8qICFPUEVOU1NMX05PX1BTSyAqLwogI2lmbmRlZiBPUEVOU1NMX05PX1JTQQotCQlpZiAodHlwZSAmIFNTTF9rUlNBKQorCQlpZiAoYWxnX2sgJiBTU0xfa1JTQSkKIAkJCXsKIAkJCXJzYT1jZXJ0LT5yc2FfdG1wOwogCQkJaWYgKChyc2EgPT0gTlVMTCkgJiYgKHMtPmNlcnQtPnJzYV90bXBfY2IgIT0gTlVMTCkpCkBAIC0xNjQxLDEwICsxNjkwLDkgQEAKIAkJCXJbMV09cnNhLT5lOwogCQkJcy0+czMtPnRtcC51c2VfcnNhX3RtcD0xOwogCQkJfQotCQllbHNlCiAjZW5kaWYKICNpZm5kZWYgT1BFTlNTTF9OT19ESAotCQkJaWYgKHR5cGUgJiBTU0xfa0VESCkKKwkJZWxzZSBpZiAoYWxnX2sgJiBTU0xfa0VESCkKIAkJCXsKIAkJCWRocD1jZXJ0LT5kaF90bXA7CiAJCQlpZiAoKGRocCA9PSBOVUxMKSAmJiAocy0+Y2VydC0+ZGhfdG1wX2NiICE9IE5VTEwpKQpAQCAtMTY5NywxMCArMTc0NSw5IEBACiAJCQlyWzFdPWRoLT5nOwogCQkJclsyXT1kaC0+cHViX2tleTsKIAkJCX0KLQkJZWxzZSAKICNlbmRpZgogI2lmbmRlZiBPUEVOU1NMX05PX0VDREgKLQkJCWlmICh0eXBlICYgU1NMX2tFRUNESCkKKwkJZWxzZSBpZiAoYWxnX2sgJiBTU0xfa0VFQ0RIKQogCQkJewogCQkJY29uc3QgRUNfR1JPVVAgKmdyb3VwOwogCkBAIC0xODEzLDcgKzE4NjAsNyBAQAogCQkJICogdG8gZW5jb2RlIHRoZSBlbnRpcmUgU2VydmVyRUNESFBhcmFtcwogCQkJICogc3RydWN0dXJlLiAKIAkJCSAqLwotCQkJbiA9IDQgKyBlbmNvZGVkbGVuOworCQkJbiArPSA0ICsgZW5jb2RlZGxlbjsKIAogCQkJLyogV2UnbGwgZ2VuZXJhdGUgdGhlIHNlcnZlcktleUV4Y2hhbmdlIG1lc3NhZ2UKIAkJCSAqIGV4cGxpY2l0bHkgc28gd2UgY2FuIHNldCB0aGVzZSB0byBOVUxMcwpAQCAtMTgyMywxOCArMTg3MCw5IEBACiAJCQlyWzJdPU5VTEw7CiAJCQlyWzNdPU5VTEw7CiAJCQl9Ci0JCWVsc2UgCiAjZW5kaWYgLyogIU9QRU5TU0xfTk9fRUNESCAqLwotI2lmbmRlZiBPUEVOU1NMX05PX1BTSwotCQkJaWYgKHR5cGUgJiBTU0xfa1BTSykKLQkJCQl7Ci0JCQkJLyogcmVzZXJ2ZSBzaXplIGZvciByZWNvcmQgbGVuZ3RoIGFuZCBQU0sgaWRlbnRpdHkgaGludCovCi0JCQkJbis9MitzdHJsZW4ocy0+Y3R4LT5wc2tfaWRlbnRpdHlfaGludCk7Ci0JCQkJfQotCQkJZWxzZQotI2VuZGlmIC8qICFPUEVOU1NMX05PX1BTSyAqLwogI2lmbmRlZiBPUEVOU1NMX05PX1NSUAotCQlpZiAodHlwZSAmIFNTTF9rU1JQKQorCQllbHNlIGlmIChhbGdfayAmIFNTTF9rU1JQKQogCQkJewogCQkJaWYgKChzLT5zcnBfY3R4Lk4gPT0gTlVMTCkgfHwKIAkJCQkocy0+c3JwX2N0eC5nID09IE5VTEwpIHx8CkBAIC0xODQ5LDI2ICsxODg3LDI3IEBACiAJCQlyWzJdPXMtPnNycF9jdHguczsKIAkJCXJbM109cy0+c3JwX2N0eC5COwogCQkJfQotCQllbHNlIAogI2VuZGlmCisJCWVsc2UgaWYgKCEoYWxnX2sgJiBTU0xfa1BTSykpCiAJCQl7CiAJCQlhbD1TU0xfQURfSEFORFNIQUtFX0ZBSUxVUkU7CiAJCQlTU0xlcnIoU1NMX0ZfU1NMM19TRU5EX1NFUlZFUl9LRVlfRVhDSEFOR0UsU1NMX1JfVU5LTk9XTl9LRVlfRVhDSEFOR0VfVFlQRSk7CiAJCQlnb3RvIGZfZXJyOwogCQkJfQotCQlmb3IgKGk9MDsgcltpXSAhPSBOVUxMICYmIGk8NDsgaSsrKQorCQlmb3IgKGk9MDsgaSA8IDQgJiYgcltpXSAhPSBOVUxMOyBpKyspCiAJCQl7CiAJCQlucltpXT1CTl9udW1fYnl0ZXMocltpXSk7CiAjaWZuZGVmIE9QRU5TU0xfTk9fU1JQCi0JCQlpZiAoKGkgPT0gMikgJiYgKHR5cGUgJiBTU0xfa1NSUCkpCisJCQlpZiAoKGkgPT0gMikgJiYgKGFsZ19rICYgU1NMX2tTUlApKQogCQkJCW4rPTErbnJbaV07CiAJCQllbHNlCiAjZW5kaWYKIAkJCW4rPTIrbnJbaV07CiAJCQl9CiAKLQkJaWYgKCEocy0+czMtPnRtcC5uZXdfY2lwaGVyLT5hbGdvcml0aG1fYXV0aCAmIFNTTF9hTlVMTCkKLQkJCSYmICEocy0+czMtPnRtcC5uZXdfY2lwaGVyLT5hbGdvcml0aG1fbWtleSAmIFNTTF9rUFNLKSkKKwkJaWYgKCEoYWxnX2EgJiBTU0xfYU5VTEwpCisJCQkvKiBBbW9uZyBQU0sgY2lwaGVyc3VpdGVzIG9ubHkgUlNBIHVzZXMgYSBjZXJ0aWZpY2F0ZSAqLworCQkJJiYgISgoYWxnX2EgJiBTU0xfYVBTSykgJiYgIShhbGdfayAmIFNTTF9rUlNBKSkpCiAJCQl7CiAJCQlpZiAoKHBrZXk9c3NsX2dldF9zaWduX3BrZXkocyxzLT5zMy0+dG1wLm5ld19jaXBoZXIsJm1kKSkKIAkJCQk9PSBOVUxMKQpAQCAtMTg5MiwxMCArMTkzMSwxMCBAQAogCQlkPSh1bnNpZ25lZCBjaGFyICopcy0+aW5pdF9idWYtPmRhdGE7CiAJCXA9ICYoZFs0XSk7CiAKLQkJZm9yIChpPTA7IHJbaV0gIT0gTlVMTCAmJiBpPDQ7IGkrKykKKwkJZm9yIChpPTA7IGkgPCA0ICYmIHJbaV0gIT0gTlVMTDsgaSsrKQogCQkJewogI2lmbmRlZiBPUEVOU1NMX05PX1NSUAotCQkJaWYgKChpID09IDIpICYmICh0eXBlICYgU1NMX2tTUlApKQorCQkJaWYgKChpID09IDIpICYmIChhbGdfayAmIFNTTF9rU1JQKSkKIAkJCQl7CiAJCQkJKnAgPSBucltpXTsKIAkJCQlwKys7CkBAIC0xOTA3LDggKzE5NDYsMjQgQEAKIAkJCXArPW5yW2ldOwogCQkJfQogCisvKiBOb3RlOiBFQ0RIRSBQU0sgY2lwaGVyc3VpdGVzIHVzZSBTU0xfa0VFQ0RIIGFuZCBTU0xfYVBTSy4KKyAqIFdoZW4gb25lIG9mIHRoZW0gaXMgdXNlZCwgdGhlIHNlcnZlciBrZXkgZXhjaGFuZ2UgcmVjb3JkIG5lZWRzIHRvIGhhdmUgYm90aAorICogdGhlIHBza19pZGVudGl0eV9oaW50IGFuZCB0aGUgU2VydmVyRUNESFBhcmFtcy4gKi8KKyNpZm5kZWYgT1BFTlNTTF9OT19QU0sKKwkJaWYgKGFsZ19hICYgU1NMX2FQU0spCisJCQl7CisJCQkvKiBjb3B5IFBTSyBpZGVudGl0eSBoaW50IChpZiBwcm92aWRlZCkgKi8KKwkJCXMybihwc2tfaWRlbnRpdHlfaGludF9sZW4sIHApOworCQkJaWYgKHBza19pZGVudGl0eV9oaW50X2xlbiA+IDApCisJCQkJeworCQkJCW1lbWNweShwLCBwc2tfaWRlbnRpdHlfaGludCwgcHNrX2lkZW50aXR5X2hpbnRfbGVuKTsKKwkJCQlwKz1wc2tfaWRlbnRpdHlfaGludF9sZW47CisJCQkJfQorCQkJfQorI2VuZGlmIC8qIE9QRU5TU0xfTk9fUFNLICovCisKICNpZm5kZWYgT1BFTlNTTF9OT19FQ0RICi0JCWlmICh0eXBlICYgU1NMX2tFRUNESCkgCisJCWlmIChhbGdfayAmIFNTTF9rRUVDREgpCiAJCQl7CiAJCQkvKiBYWFg6IEZvciBub3csIHdlIG9ubHkgc3VwcG9ydCBuYW1lZCAobm90IGdlbmVyaWMpIGN1cnZlcy4KIAkJCSAqIEluIHRoaXMgc2l0dWF0aW9uLCB0aGUgc2VydmVyS2V5RXhjaGFuZ2UgbWVzc2FnZSBoYXM6CkBAIC0xOTMxLDE3ICsxOTg2LDcgQEAKIAkJCWVuY29kZWRQb2ludCA9IE5VTEw7CiAJCQlwICs9IGVuY29kZWRsZW47CiAJCQl9Ci0jZW5kaWYKLQotI2lmbmRlZiBPUEVOU1NMX05PX1BTSwotCQlpZiAodHlwZSAmIFNTTF9rUFNLKQotCQkJewotCQkJLyogY29weSBQU0sgaWRlbnRpdHkgaGludCAqLwotCQkJczJuKHN0cmxlbihzLT5jdHgtPnBza19pZGVudGl0eV9oaW50KSwgcCk7IAotCQkJc3RybmNweSgoY2hhciAqKXAsIHMtPmN0eC0+cHNrX2lkZW50aXR5X2hpbnQsIHN0cmxlbihzLT5jdHgtPnBza19pZGVudGl0eV9oaW50KSk7Ci0JCQlwKz1zdHJsZW4ocy0+Y3R4LT5wc2tfaWRlbnRpdHlfaGludCk7Ci0JCQl9Ci0jZW5kaWYKKyNlbmRpZiAvKiBPUEVOU1NMX05PX0VDREggKi8KIAogCQkvKiBub3QgYW5vbnltb3VzICovCiAJCWlmIChwa2V5ICE9IE5VTEwpCkBAIC0xOTc4LDcgKzIwMjMsNyBAQAogCQkJCW4rPXUrMjsKIAkJCQl9CiAJCQllbHNlCi0jZW5kaWYKKyNlbmRpZiAvKiBPUEVOU1NMX05PX1JTQSAqLwogCQkJaWYgKG1kKQogCQkJCXsKIAkJCQkvKiBGb3IgVExTMS4yIGFuZCBsYXRlciBzZW5kIHNpZ25hdHVyZQpAQCAtMjEyMyw2ICsyMTY4LDExIEBACiAJCXMtPmluaXRfbnVtPW4rNDsKIAkJcy0+aW5pdF9vZmY9MDsKICNpZmRlZiBORVRTQ0FQRV9IQU5HX0JVRworCQlpZiAoIUJVRl9NRU1fZ3Jvd19jbGVhbihidWYsIHMtPmluaXRfbnVtICsgNCkpCisJCQl7CisJCQlTU0xlcnIoU1NMX0ZfU1NMM19TRU5EX0NFUlRJRklDQVRFX1JFUVVFU1QsRVJSX1JfQlVGX0xJQik7CisJCQlnb3RvIGVycjsKKwkJCX0KIAkJcD0odW5zaWduZWQgY2hhciAqKXMtPmluaXRfYnVmLT5kYXRhICsgcy0+aW5pdF9udW07CiAKIAkJLyogZG8gdGhlIGhlYWRlciAqLwpAQCAtMjE0Nyw2ICsyMTk3LDcgQEAKIAlpbnQgaSxhbCxvazsKIAlsb25nIG47CiAJdW5zaWduZWQgbG9uZyBhbGdfazsKKwl1bnNpZ25lZCBsb25nIGFsZ19hOwogCXVuc2lnbmVkIGNoYXIgKnA7CiAjaWZuZGVmIE9QRU5TU0xfTk9fUlNBCiAJUlNBICpyc2E9TlVMTDsKQEAgLTIxNjQsNyArMjIxNSwxMSBAQAogCUVDX0tFWSAqc3J2cl9lY2RoID0gTlVMTDsKIAlFVlBfUEtFWSAqY2xudF9wdWJfcGtleSA9IE5VTEw7CiAJRUNfUE9JTlQgKmNsbnRfZWNwb2ludCA9IE5VTEw7Ci0JQk5fQ1RYICpibl9jdHggPSBOVUxMOyAKKwlCTl9DVFggKmJuX2N0eCA9IE5VTEw7CisjaWZuZGVmIE9QRU5TU0xfTk9fUFNLCisJdW5zaWduZWQgaW50IHBza19sZW4gPSAwOworCXVuc2lnbmVkIGNoYXIgcHNrW1BTS19NQVhfUFNLX0xFTl07CisjZW5kaWYgLyogT1BFTlNTTF9OT19QU0sgKi8KICNlbmRpZgogCiAJbj1zLT5tZXRob2QtPnNzbF9nZXRfbWVzc2FnZShzLApAQCAtMjE3OCw3ICsyMjMzLDk1IEBACiAJcD0odW5zaWduZWQgY2hhciAqKXMtPmluaXRfbXNnOwogCiAJYWxnX2s9cy0+czMtPnRtcC5uZXdfY2lwaGVyLT5hbGdvcml0aG1fbWtleTsKKwlhbGdfYT1zLT5zMy0+dG1wLm5ld19jaXBoZXItPmFsZ29yaXRobV9hdXRoOwogCisjaWZuZGVmIE9QRU5TU0xfTk9fUFNLCisJaWYgKGFsZ19hICYgU1NMX2FQU0spCisJCXsKKwkJdW5zaWduZWQgY2hhciAqdCA9IE5VTEw7CisJCXVuc2lnbmVkIGNoYXIgcHJlX21zW1BTS19NQVhfUFNLX0xFTioyKzRdOworCQl1bnNpZ25lZCBpbnQgcHJlX21zX2xlbiA9IDA7CisJCWludCBwc2tfZXJyID0gMTsKKwkJY2hhciB0bXBfaWRbUFNLX01BWF9JREVOVElUWV9MRU4rMV07CisKKwkJYWw9U1NMX0FEX0hBTkRTSEFLRV9GQUlMVVJFOworCisJCW4ycyhwLCBpKTsKKwkJaWYgKG4gIT0gaSsyICYmICEoYWxnX2sgJiBTU0xfa0VFQ0RIKSkKKwkJCXsKKwkJCVNTTGVycihTU0xfRl9TU0wzX0dFVF9DTElFTlRfS0VZX0VYQ0hBTkdFLAorCQkJCVNTTF9SX0xFTkdUSF9NSVNNQVRDSCk7CisJCQlnb3RvIHBza19lcnI7CisJCQl9CisJCWlmIChpID4gUFNLX01BWF9JREVOVElUWV9MRU4pCisJCQl7CisJCQlTU0xlcnIoU1NMX0ZfU1NMM19HRVRfQ0xJRU5UX0tFWV9FWENIQU5HRSwKKwkJCQlTU0xfUl9EQVRBX0xFTkdUSF9UT09fTE9ORyk7CisJCQlnb3RvIHBza19lcnI7CisJCQl9CisJCWlmIChzLT5wc2tfc2VydmVyX2NhbGxiYWNrID09IE5VTEwpCisJCQl7CisJCQlTU0xlcnIoU1NMX0ZfU1NMM19HRVRfQ0xJRU5UX0tFWV9FWENIQU5HRSwKKwkJCSAgICAgICBTU0xfUl9QU0tfTk9fU0VSVkVSX0NCKTsKKwkJCWdvdG8gcHNrX2VycjsKKwkJCX0KKworCQkvKiBDcmVhdGUgZ3VhcmFudGVlZCBOVUwtdGVybWluYXRlZCBpZGVudGl0eQorCQkgKiBzdHJpbmcgZm9yIHRoZSBjYWxsYmFjayAqLworCQltZW1jcHkodG1wX2lkLCBwLCBpKTsKKwkJbWVtc2V0KHRtcF9pZCtpLCAwLCBQU0tfTUFYX0lERU5USVRZX0xFTisxLWkpOworCQlwc2tfbGVuID0gcy0+cHNrX3NlcnZlcl9jYWxsYmFjayhzLCB0bXBfaWQsIHBzaywgc2l6ZW9mKHBzaykpOworCisJCWlmIChwc2tfbGVuID4gUFNLX01BWF9QU0tfTEVOKQorCQkJeworCQkJU1NMZXJyKFNTTF9GX1NTTDNfR0VUX0NMSUVOVF9LRVlfRVhDSEFOR0UsCisJCQkJRVJSX1JfSU5URVJOQUxfRVJST1IpOworCQkJZ290byBwc2tfZXJyOworCQkJfQorCQllbHNlIGlmIChwc2tfbGVuID09IDApCisJCQl7CisJCQkvKiBQU0sgcmVsYXRlZCB0byB0aGUgZ2l2ZW4gaWRlbnRpdHkgbm90IGZvdW5kICovCisJCQlTU0xlcnIoU1NMX0ZfU1NMM19HRVRfQ0xJRU5UX0tFWV9FWENIQU5HRSwKKwkJCSAgICAgICBTU0xfUl9QU0tfSURFTlRJVFlfTk9UX0ZPVU5EKTsKKwkJCWFsPVNTTF9BRF9VTktOT1dOX1BTS19JREVOVElUWTsKKwkJCWdvdG8gcHNrX2VycjsKKwkJCX0KKwkJaWYgKCEoYWxnX2sgJiBTU0xfa0VFQ0RIKSkKKwkJCXsKKwkJCS8qIENyZWF0ZSB0aGUgc2hhcmVkIHNlY3JldCBub3cgaWYgd2UncmUgbm90IHVzaW5nIEVDREhFLVBTSy4qLworCQkJcHJlX21zX2xlbj0yK3Bza19sZW4rMitwc2tfbGVuOworCQkJdCA9IHByZV9tczsKKwkJCXMybihwc2tfbGVuLCB0KTsKKwkJCW1lbXNldCh0LCAwLCBwc2tfbGVuKTsKKwkJCXQrPXBza19sZW47CisJCQlzMm4ocHNrX2xlbiwgdCk7CisJCQltZW1jcHkodCwgcHNrLCBwc2tfbGVuKTsKKworCQkJcy0+c2Vzc2lvbi0+bWFzdGVyX2tleV9sZW5ndGg9CisJCQkJcy0+bWV0aG9kLT5zc2wzX2VuYy0+Z2VuZXJhdGVfbWFzdGVyX3NlY3JldChzLAorCQkJCQlzLT5zZXNzaW9uLT5tYXN0ZXJfa2V5LCBwcmVfbXMsIHByZV9tc19sZW4pOworCQkJfQorCQlpZiAocy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5ICE9IE5VTEwpCisJCQlPUEVOU1NMX2ZyZWUocy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5KTsKKwkJcy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5ID0gQlVGX3N0cmR1cCh0bXBfaWQpOworCQlPUEVOU1NMX2NsZWFuc2UodG1wX2lkLCBQU0tfTUFYX0lERU5USVRZX0xFTisxKTsKKwkJaWYgKHMtPnNlc3Npb24tPnBza19pZGVudGl0eSA9PSBOVUxMKQorCQkJeworCQkJU1NMZXJyKFNTTF9GX1NTTDNfR0VUX0NMSUVOVF9LRVlfRVhDSEFOR0UsCisJCQkJRVJSX1JfTUFMTE9DX0ZBSUxVUkUpOworCQkJZ290byBwc2tfZXJyOworCQkJfQorCisJCXAgKz0gaTsKKwkJbiAtPSAoaSArIDIpOworCQlwc2tfZXJyID0gMDsKKwlwc2tfZXJyOgorCQlPUEVOU1NMX2NsZWFuc2UocHJlX21zLCBzaXplb2YocHJlX21zKSk7CisJCWlmIChwc2tfZXJyICE9IDApCisJCQlnb3RvIGZfZXJyOworCQl9CisjZW5kaWYgLyogT1BFTlNTTF9OT19QU0sgKi8KKwlpZiAoMCkge30KICNpZm5kZWYgT1BFTlNTTF9OT19SU0EKIAlpZiAoYWxnX2sgJiBTU0xfa1JTQSkKIAkJewpAQCAtMjI4MywxMCArMjQyNiw5IEBACiAJCQkJcCxpKTsKIAkJT1BFTlNTTF9jbGVhbnNlKHAsaSk7CiAJCX0KLQllbHNlCiAjZW5kaWYKICNpZm5kZWYgT1BFTlNTTF9OT19ESAotCQlpZiAoYWxnX2sgJiAoU1NMX2tFREh8U1NMX2tESHJ8U1NMX2tESGQpKQorCWVsc2UgaWYgKGFsZ19rICYgKFNTTF9rRURIfFNTTF9rREhyfFNTTF9rREhkKSkKIAkJewogCQluMnMocCxpKTsKIAkJaWYgKG4gIT0gaSsyKQpAQCAtMjM0NywxMCArMjQ4OSw5IEBACiAJCQkJcy0+c2Vzc2lvbi0+bWFzdGVyX2tleSxwLGkpOwogCQlPUEVOU1NMX2NsZWFuc2UocCxpKTsKIAkJfQotCWVsc2UKICNlbmRpZgogI2lmbmRlZiBPUEVOU1NMX05PX0tSQjUKLQlpZiAoYWxnX2sgJiBTU0xfa0tSQjUpCisJZWxzZSBpZiAoYWxnX2sgJiBTU0xfa0tSQjUpCiAJCXsKIAkJa3JiNV9lcnJvcl9jb2RlCQlrcmI1cmM7CiAJCWtyYjVfZGF0YQkJZW5jX3RpY2tldDsKQEAgLTI1MzksMTcgKzI2ODAsMjAgQEAKIAkJKiogIGlmIChzLT5rc3NsX2N0eCkgIHMtPmtzc2xfY3R4ID0gTlVMTDsKIAkJKi8KIAkJfQotCWVsc2UKICNlbmRpZgkvKiBPUEVOU1NMX05PX0tSQjUgKi8KLQogI2lmbmRlZiBPUEVOU1NMX05PX0VDREgKLQkJaWYgKGFsZ19rICYgKFNTTF9rRUVDREh8U1NMX2tFQ0RIcnxTU0xfa0VDREhlKSkKKwllbHNlIGlmIChhbGdfayAmIChTU0xfa0VFQ0RIfFNTTF9rRUNESHJ8U1NMX2tFQ0RIZSkpCiAJCXsKIAkJaW50IHJldCA9IDE7CiAJCWludCBmaWVsZF9zaXplID0gMDsKIAkJY29uc3QgRUNfS0VZICAgKnRrZXk7CiAJCWNvbnN0IEVDX0dST1VQICpncm91cDsKIAkJY29uc3QgQklHTlVNICpwcml2X2tleTsKKyNpZm5kZWYgT1BFTlNTTF9OT19QU0sKKwkJdW5zaWduZWQgY2hhciAqcHJlX21zOworCQl1bnNpZ25lZCBpbnQgcHJlX21zX2xlbjsKKwkJdW5zaWduZWQgY2hhciAqdDsKKyNlbmRpZiAvKiBPUEVOU1NMX05PX1BTSyAqLwogCiAJCS8qIGluaXRpYWxpemUgc3RydWN0dXJlcyBmb3Igc2VydmVyJ3MgRUNESCBrZXkgcGFpciAqLwogCQlpZiAoKHNydnJfZWNkaCA9IEVDX0tFWV9uZXcoKSkgPT0gTlVMTCkgCkBAIC0yNjQ1LDcgKzI3ODksNyBAQAogCQkJCX0KIAogCQkJLyogR2V0IGVuY29kZWQgcG9pbnQgbGVuZ3RoICovCi0JCQlpID0gKnA7IAorCQkJaSA9ICpwOwogCQkJcCArPSAxOwogCQkJaWYgKG4gIT0gMSArIGkpCiAJCQkJewpAQCAtMjY4NywyMjMgKzI4MzEsMTQ1IEBACiAJCUVDX0tFWV9mcmVlKHNydnJfZWNkaCk7CiAJCUJOX0NUWF9mcmVlKGJuX2N0eCk7CiAJCUVDX0tFWV9mcmVlKHMtPnMzLT50bXAuZWNkaCk7Ci0JCXMtPnMzLT50bXAuZWNkaCA9IE5VTEw7IAorCQlzLT5zMy0+dG1wLmVjZGggPSBOVUxMOwogCi0JCS8qIENvbXB1dGUgdGhlIG1hc3RlciBzZWNyZXQgKi8KLQkJcy0+c2Vzc2lvbi0+bWFzdGVyX2tleV9sZW5ndGggPSBzLT5tZXRob2QtPnNzbDNfZW5jLT4gXAotCQkgICAgZ2VuZXJhdGVfbWFzdGVyX3NlY3JldChzLCBzLT5zZXNzaW9uLT5tYXN0ZXJfa2V5LCBwLCBpKTsKLQkJCi0JCU9QRU5TU0xfY2xlYW5zZShwLCBpKTsKLQkJcmV0dXJuIChyZXQpOwotCQl9Ci0JZWxzZQotI2VuZGlmCiAjaWZuZGVmIE9QRU5TU0xfTk9fUFNLCi0JCWlmIChhbGdfayAmIFNTTF9rUFNLKQorCQkvKiBFQ0RIRSBQU0sgY2lwaGVyc3VpdGVzIGZyb20gUkZDIDU0ODkgKi8KKwkgICAgaWYgKChhbGdfYSAmIFNTTF9hUFNLKSAmJiBwc2tfbGVuICE9IDApCiAJCQl7Ci0JCQl1bnNpZ25lZCBjaGFyICp0ID0gTlVMTDsKLQkJCXVuc2lnbmVkIGNoYXIgcHNrX29yX3ByZV9tc1tQU0tfTUFYX1BTS19MRU4qMis0XTsKLQkJCXVuc2lnbmVkIGludCBwcmVfbXNfbGVuID0gMCwgcHNrX2xlbiA9IDA7Ci0JCQlpbnQgcHNrX2VyciA9IDE7Ci0JCQljaGFyIHRtcF9pZFtQU0tfTUFYX0lERU5USVRZX0xFTisxXTsKLQotCQkJYWw9U1NMX0FEX0hBTkRTSEFLRV9GQUlMVVJFOwotCi0JCQluMnMocCxpKTsKLQkJCWlmIChuICE9IGkrMikKLQkJCQl7Ci0JCQkJU1NMZXJyKFNTTF9GX1NTTDNfR0VUX0NMSUVOVF9LRVlfRVhDSEFOR0UsCi0JCQkJCVNTTF9SX0xFTkdUSF9NSVNNQVRDSCk7Ci0JCQkJZ290byBwc2tfZXJyOwotCQkJCX0KLQkJCWlmIChpID4gUFNLX01BWF9JREVOVElUWV9MRU4pCi0JCQkJewotCQkJCVNTTGVycihTU0xfRl9TU0wzX0dFVF9DTElFTlRfS0VZX0VYQ0hBTkdFLAotCQkJCQlTU0xfUl9EQVRBX0xFTkdUSF9UT09fTE9ORyk7Ci0JCQkJZ290byBwc2tfZXJyOwotCQkJCX0KLQkJCWlmIChzLT5wc2tfc2VydmVyX2NhbGxiYWNrID09IE5VTEwpCi0JCQkJewotCQkJCVNTTGVycihTU0xfRl9TU0wzX0dFVF9DTElFTlRfS0VZX0VYQ0hBTkdFLAotCQkJCSAgICAgICBTU0xfUl9QU0tfTk9fU0VSVkVSX0NCKTsKLQkJCQlnb3RvIHBza19lcnI7Ci0JCQkJfQotCi0JCQkvKiBDcmVhdGUgZ3VhcmFudGVlZCBOVUxMLXRlcm1pbmF0ZWQgaWRlbnRpdHkKLQkJCSAqIHN0cmluZyBmb3IgdGhlIGNhbGxiYWNrICovCi0JCQltZW1jcHkodG1wX2lkLCBwLCBpKTsKLQkJCW1lbXNldCh0bXBfaWQraSwgMCwgUFNLX01BWF9JREVOVElUWV9MRU4rMS1pKTsKLQkJCXBza19sZW4gPSBzLT5wc2tfc2VydmVyX2NhbGxiYWNrKHMsIHRtcF9pZCwKLQkJCQlwc2tfb3JfcHJlX21zLCBzaXplb2YocHNrX29yX3ByZV9tcykpOwotCQkJT1BFTlNTTF9jbGVhbnNlKHRtcF9pZCwgUFNLX01BWF9JREVOVElUWV9MRU4rMSk7Ci0KLQkJCWlmIChwc2tfbGVuID4gUFNLX01BWF9QU0tfTEVOKQotCQkJCXsKLQkJCQlTU0xlcnIoU1NMX0ZfU1NMM19HRVRfQ0xJRU5UX0tFWV9FWENIQU5HRSwKLQkJCQkJRVJSX1JfSU5URVJOQUxfRVJST1IpOwotCQkJCWdvdG8gcHNrX2VycjsKLQkJCQl9Ci0JCQllbHNlIGlmIChwc2tfbGVuID09IDApCi0JCQkJewotCQkJCS8qIFBTSyByZWxhdGVkIHRvIHRoZSBnaXZlbiBpZGVudGl0eSBub3QgZm91bmQgKi8KLQkJCQlTU0xlcnIoU1NMX0ZfU1NMM19HRVRfQ0xJRU5UX0tFWV9FWENIQU5HRSwKLQkJCQkgICAgICAgU1NMX1JfUFNLX0lERU5USVRZX05PVF9GT1VORCk7Ci0JCQkJYWw9U1NMX0FEX1VOS05PV05fUFNLX0lERU5USVRZOwotCQkJCWdvdG8gcHNrX2VycjsKLQkJCQl9Ci0KLQkJCS8qIGNyZWF0ZSBQU0sgcHJlX21hc3Rlcl9zZWNyZXQgKi8KLQkJCXByZV9tc19sZW49Mitwc2tfbGVuKzIrcHNrX2xlbjsKLQkJCXQgPSBwc2tfb3JfcHJlX21zOwotCQkJbWVtbW92ZShwc2tfb3JfcHJlX21zK3Bza19sZW4rNCwgcHNrX29yX3ByZV9tcywgcHNrX2xlbik7Ci0JCQlzMm4ocHNrX2xlbiwgdCk7Ci0JCQltZW1zZXQodCwgMCwgcHNrX2xlbik7Ci0JCQl0Kz1wc2tfbGVuOwotCQkJczJuKHBza19sZW4sIHQpOwotCi0JCQlpZiAocy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5ICE9IE5VTEwpCi0JCQkJT1BFTlNTTF9mcmVlKHMtPnNlc3Npb24tPnBza19pZGVudGl0eSk7Ci0JCQlzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHkgPSBCVUZfc3RyZHVwKChjaGFyICopcCk7Ci0JCQlpZiAocy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5ID09IE5VTEwpCisJCQlwcmVfbXNfbGVuID0gMitwc2tfbGVuKzIraTsKKwkJCXByZV9tcyA9IE9QRU5TU0xfbWFsbG9jKHByZV9tc19sZW4pOworCQkJaWYgKHByZV9tcyA9PSBOVUxMKQogCQkJCXsKIAkJCQlTU0xlcnIoU1NMX0ZfU1NMM19HRVRfQ0xJRU5UX0tFWV9FWENIQU5HRSwKIAkJCQkJRVJSX1JfTUFMTE9DX0ZBSUxVUkUpOwotCQkJCWdvdG8gcHNrX2VycjsKKwkJCQlnb3RvIGVycjsKIAkJCQl9Ci0KLQkJCWlmIChzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHlfaGludCAhPSBOVUxMKQotCQkJCU9QRU5TU0xfZnJlZShzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHlfaGludCk7Ci0JCQlzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHlfaGludCA9IEJVRl9zdHJkdXAocy0+Y3R4LT5wc2tfaWRlbnRpdHlfaGludCk7Ci0JCQlpZiAocy0+Y3R4LT5wc2tfaWRlbnRpdHlfaGludCAhPSBOVUxMICYmCi0JCQkJcy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5X2hpbnQgPT0gTlVMTCkKLQkJCQl7Ci0JCQkJU1NMZXJyKFNTTF9GX1NTTDNfR0VUX0NMSUVOVF9LRVlfRVhDSEFOR0UsCi0JCQkJCUVSUl9SX01BTExPQ19GQUlMVVJFKTsKLQkJCQlnb3RvIHBza19lcnI7Ci0JCQkJfQotCi0JCQlzLT5zZXNzaW9uLT5tYXN0ZXJfa2V5X2xlbmd0aD0KLQkJCQlzLT5tZXRob2QtPnNzbDNfZW5jLT5nZW5lcmF0ZV9tYXN0ZXJfc2VjcmV0KHMsCi0JCQkJCXMtPnNlc3Npb24tPm1hc3Rlcl9rZXksIHBza19vcl9wcmVfbXMsIHByZV9tc19sZW4pOwotCQkJcHNrX2VyciA9IDA7Ci0JCXBza19lcnI6Ci0JCQlPUEVOU1NMX2NsZWFuc2UocHNrX29yX3ByZV9tcywgc2l6ZW9mKHBza19vcl9wcmVfbXMpKTsKLQkJCWlmIChwc2tfZXJyICE9IDApCi0JCQkJZ290byBmX2VycjsKKwkJCW1lbXNldChwcmVfbXMsIDAsIHByZV9tc19sZW4pOworCQkJdCA9IHByZV9tczsKKwkJCXMybihwc2tfbGVuLCB0KTsKKwkJCW1lbWNweSh0LCBwc2ssIHBza19sZW4pOworCQkJdCArPSBwc2tfbGVuOworCQkJczJuKGksIHQpOworCQkJbWVtY3B5KHQsIHAsIGkpOworCQkJcy0+c2Vzc2lvbi0+bWFzdGVyX2tleV9sZW5ndGggPSBzLT5tZXRob2QtPnNzbDNfZW5jIFwKKwkJCQktPiBnZW5lcmF0ZV9tYXN0ZXJfc2VjcmV0KHMsCisJCQkJCXMtPnNlc3Npb24tPm1hc3Rlcl9rZXksIHByZV9tcywgcHJlX21zX2xlbik7CisJCQlPUEVOU1NMX2NsZWFuc2UocHJlX21zLCBwcmVfbXNfbGVuKTsKKwkJCU9QRU5TU0xfZnJlZShwcmVfbXMpOwogCQkJfQotCQllbHNlCisjZW5kaWYgLyogT1BFTlNTTF9OT19QU0sgKi8KKwkJaWYgKCEoYWxnX2EgJiBTU0xfYVBTSykpCisJCQl7CisJCQkvKiBDb21wdXRlIHRoZSBtYXN0ZXIgc2VjcmV0ICovCisJCQlzLT5zZXNzaW9uLT5tYXN0ZXJfa2V5X2xlbmd0aCA9IHMtPm1ldGhvZC0+c3NsM19lbmMgXAorCQkJCS0+IGdlbmVyYXRlX21hc3Rlcl9zZWNyZXQocywKKwkJCQkJcy0+c2Vzc2lvbi0+bWFzdGVyX2tleSwgcCwgaSk7CisJCQl9CisKKwkJT1BFTlNTTF9jbGVhbnNlKHAsIGkpOworCQl9CiAjZW5kaWYKICNpZm5kZWYgT1BFTlNTTF9OT19TUlAKLQkJaWYgKGFsZ19rICYgU1NMX2tTUlApCisJZWxzZSBpZiAoYWxnX2sgJiBTU0xfa1NSUCkKKwkJeworCQlpbnQgcGFyYW1fbGVuOworCisJCW4ycyhwLGkpOworCQlwYXJhbV9sZW49aSsyOworCQlpZiAocGFyYW1fbGVuID4gbikKIAkJCXsKLQkJCWludCBwYXJhbV9sZW47Ci0KLQkJCW4ycyhwLGkpOwotCQkJcGFyYW1fbGVuPWkrMjsKLQkJCWlmIChwYXJhbV9sZW4gPiBuKQotCQkJCXsKLQkJCQlhbD1TU0xfQURfREVDT0RFX0VSUk9SOwotCQkJCVNTTGVycihTU0xfRl9TU0wzX0dFVF9DTElFTlRfS0VZX0VYQ0hBTkdFLFNTTF9SX0JBRF9TUlBfQV9MRU5HVEgpOwotCQkJCWdvdG8gZl9lcnI7Ci0JCQkJfQotCQkJaWYgKCEocy0+c3JwX2N0eC5BPUJOX2JpbjJibihwLGksTlVMTCkpKQotCQkJCXsKLQkJCQlTU0xlcnIoU1NMX0ZfU1NMM19HRVRfQ0xJRU5UX0tFWV9FWENIQU5HRSxFUlJfUl9CTl9MSUIpOwotCQkJCWdvdG8gZXJyOwotCQkJCX0KLQkJCWlmIChzLT5zZXNzaW9uLT5zcnBfdXNlcm5hbWUgIT0gTlVMTCkKLQkJCQlPUEVOU1NMX2ZyZWUocy0+c2Vzc2lvbi0+c3JwX3VzZXJuYW1lKTsKLQkJCXMtPnNlc3Npb24tPnNycF91c2VybmFtZSA9IEJVRl9zdHJkdXAocy0+c3JwX2N0eC5sb2dpbik7Ci0JCQlpZiAocy0+c2Vzc2lvbi0+c3JwX3VzZXJuYW1lID09IE5VTEwpCi0JCQkJewotCQkJCVNTTGVycihTU0xfRl9TU0wzX0dFVF9DTElFTlRfS0VZX0VYQ0hBTkdFLAotCQkJCQlFUlJfUl9NQUxMT0NfRkFJTFVSRSk7Ci0JCQkJZ290byBlcnI7Ci0JCQkJfQotCi0JCQlpZiAoKHMtPnNlc3Npb24tPm1hc3Rlcl9rZXlfbGVuZ3RoID0gU1JQX2dlbmVyYXRlX3NlcnZlcl9tYXN0ZXJfc2VjcmV0KHMscy0+c2Vzc2lvbi0+bWFzdGVyX2tleSkpPDApCi0JCQkJewotCQkJCVNTTGVycihTU0xfRl9TU0wzX0dFVF9DTElFTlRfS0VZX0VYQ0hBTkdFLEVSUl9SX0lOVEVSTkFMX0VSUk9SKTsKLQkJCQlnb3RvIGVycjsKLQkJCQl9Ci0KLQkJCXArPWk7CisJCQlhbD1TU0xfQURfREVDT0RFX0VSUk9SOworCQkJU1NMZXJyKFNTTF9GX1NTTDNfR0VUX0NMSUVOVF9LRVlfRVhDSEFOR0UsU1NMX1JfQkFEX1NSUF9BX0xFTkdUSCk7CisJCQlnb3RvIGZfZXJyOwogCQkJfQotCQllbHNlCisJCWlmICghKHMtPnNycF9jdHguQT1CTl9iaW4yYm4ocCxpLE5VTEwpKSkKKwkJCXsKKwkJCVNTTGVycihTU0xfRl9TU0wzX0dFVF9DTElFTlRfS0VZX0VYQ0hBTkdFLEVSUl9SX0JOX0xJQik7CisJCQlnb3RvIGVycjsKKwkJCX0KKwkJaWYgKHMtPnNlc3Npb24tPnNycF91c2VybmFtZSAhPSBOVUxMKQorCQkJT1BFTlNTTF9mcmVlKHMtPnNlc3Npb24tPnNycF91c2VybmFtZSk7CisJCXMtPnNlc3Npb24tPnNycF91c2VybmFtZSA9IEJVRl9zdHJkdXAocy0+c3JwX2N0eC5sb2dpbik7CisJCWlmIChzLT5zZXNzaW9uLT5zcnBfdXNlcm5hbWUgPT0gTlVMTCkKKwkJCXsKKwkJCVNTTGVycihTU0xfRl9TU0wzX0dFVF9DTElFTlRfS0VZX0VYQ0hBTkdFLAorCQkJCUVSUl9SX01BTExPQ19GQUlMVVJFKTsKKwkJCWdvdG8gZXJyOworCQkJfQorCisJCWlmICgocy0+c2Vzc2lvbi0+bWFzdGVyX2tleV9sZW5ndGggPSBTUlBfZ2VuZXJhdGVfc2VydmVyX21hc3Rlcl9zZWNyZXQocyxzLT5zZXNzaW9uLT5tYXN0ZXJfa2V5KSk8MCkKKwkJCXsKKwkJCVNTTGVycihTU0xfRl9TU0wzX0dFVF9DTElFTlRfS0VZX0VYQ0hBTkdFLEVSUl9SX0lOVEVSTkFMX0VSUk9SKTsKKwkJCWdvdG8gZXJyOworCQkJfQorCisJCXArPWk7CisJCX0KICNlbmRpZgkvKiBPUEVOU1NMX05PX1NSUCAqLwotCQlpZiAoYWxnX2sgJiBTU0xfa0dPU1QpIAorCWVsc2UgaWYgKGFsZ19rICYgU1NMX2tHT1NUKSAKKwkJeworCQlpbnQgcmV0ID0gMDsKKwkJRVZQX1BLRVlfQ1RYICpwa2V5X2N0eDsKKwkJRVZQX1BLRVkgKmNsaWVudF9wdWJfcGtleSA9IE5VTEwsICpwayA9IE5VTEw7CisJCXVuc2lnbmVkIGNoYXIgcHJlbWFzdGVyX3NlY3JldFszMl0sICpzdGFydDsKKwkJc2l6ZV90IG91dGxlbj0zMiwgaW5sZW47CisJCXVuc2lnbmVkIGxvbmcgYWxnX2E7CisJCWludCBUdGFnLCBUY2xhc3M7CisJCWxvbmcgVGxlbjsKKworCQkvKiBHZXQgb3VyIGNlcnRpZmljYXRlIHByaXZhdGUga2V5Ki8KKwkJYWxnX2EgPSBzLT5zMy0+dG1wLm5ld19jaXBoZXItPmFsZ29yaXRobV9hdXRoOworCQlpZiAoYWxnX2EgJiBTU0xfYUdPU1Q5NCkKKwkJCXBrID0gcy0+Y2VydC0+cGtleXNbU1NMX1BLRVlfR09TVDk0XS5wcml2YXRla2V5OworCQllbHNlIGlmIChhbGdfYSAmIFNTTF9hR09TVDAxKQorCQkJcGsgPSBzLT5jZXJ0LT5wa2V5c1tTU0xfUEtFWV9HT1NUMDFdLnByaXZhdGVrZXk7CisKKwkJcGtleV9jdHggPSBFVlBfUEtFWV9DVFhfbmV3KHBrLE5VTEwpOworCQlFVlBfUEtFWV9kZWNyeXB0X2luaXQocGtleV9jdHgpOworCQkvKiBJZiBjbGllbnQgY2VydGlmaWNhdGUgaXMgcHJlc2VudCBhbmQgaXMgb2YgdGhlIHNhbWUgdHlwZSwgbWF5YmUKKwkJICogdXNlIGl0IGZvciBrZXkgZXhjaGFuZ2UuICBEb24ndCBtaW5kIGVycm9ycyBmcm9tCisJCSAqIEVWUF9QS0VZX2Rlcml2ZV9zZXRfcGVlciwgYmVjYXVzZSBpdCBpcyBjb21wbGV0ZWx5IHZhbGlkIHRvIHVzZQorCQkgKiBhIGNsaWVudCBjZXJ0aWZpY2F0ZSBmb3IgYXV0aG9yaXphdGlvbiBvbmx5LiAqLworCQljbGllbnRfcHViX3BrZXkgPSBYNTA5X2dldF9wdWJrZXkocy0+c2Vzc2lvbi0+cGVlcik7CisJCWlmIChjbGllbnRfcHViX3BrZXkpCiAJCQl7Ci0JCQlpbnQgcmV0ID0gMDsKLQkJCUVWUF9QS0VZX0NUWCAqcGtleV9jdHg7Ci0JCQlFVlBfUEtFWSAqY2xpZW50X3B1Yl9wa2V5ID0gTlVMTCwgKnBrID0gTlVMTDsKLQkJCXVuc2lnbmVkIGNoYXIgcHJlbWFzdGVyX3NlY3JldFszMl0sICpzdGFydDsKLQkJCXNpemVfdCBvdXRsZW49MzIsIGlubGVuOwotCQkJdW5zaWduZWQgbG9uZyBhbGdfYTsKLQotCQkJLyogR2V0IG91ciBjZXJ0aWZpY2F0ZSBwcml2YXRlIGtleSovCi0JCQlhbGdfYSA9IHMtPnMzLT50bXAubmV3X2NpcGhlci0+YWxnb3JpdGhtX2F1dGg7Ci0JCQlpZiAoYWxnX2EgJiBTU0xfYUdPU1Q5NCkKLQkJCQlwayA9IHMtPmNlcnQtPnBrZXlzW1NTTF9QS0VZX0dPU1Q5NF0ucHJpdmF0ZWtleTsKLQkJCWVsc2UgaWYgKGFsZ19hICYgU1NMX2FHT1NUMDEpCi0JCQkJcGsgPSBzLT5jZXJ0LT5wa2V5c1tTU0xfUEtFWV9HT1NUMDFdLnByaXZhdGVrZXk7Ci0KLQkJCXBrZXlfY3R4ID0gRVZQX1BLRVlfQ1RYX25ldyhwayxOVUxMKTsKLQkJCUVWUF9QS0VZX2RlY3J5cHRfaW5pdChwa2V5X2N0eCk7Ci0JCQkvKiBJZiBjbGllbnQgY2VydGlmaWNhdGUgaXMgcHJlc2VudCBhbmQgaXMgb2YgdGhlIHNhbWUgdHlwZSwgbWF5YmUKLQkJCSAqIHVzZSBpdCBmb3Iga2V5IGV4Y2hhbmdlLiAgRG9uJ3QgbWluZCBlcnJvcnMgZnJvbQotCQkJICogRVZQX1BLRVlfZGVyaXZlX3NldF9wZWVyLCBiZWNhdXNlIGl0IGlzIGNvbXBsZXRlbHkgdmFsaWQgdG8gdXNlCi0JCQkgKiBhIGNsaWVudCBjZXJ0aWZpY2F0ZSBmb3IgYXV0aG9yaXphdGlvbiBvbmx5LiAqLwotCQkJY2xpZW50X3B1Yl9wa2V5ID0gWDUwOV9nZXRfcHVia2V5KHMtPnNlc3Npb24tPnBlZXIpOwotCQkJaWYgKGNsaWVudF9wdWJfcGtleSkKLQkJCQl7Ci0JCQkJaWYgKEVWUF9QS0VZX2Rlcml2ZV9zZXRfcGVlcihwa2V5X2N0eCwgY2xpZW50X3B1Yl9wa2V5KSA8PSAwKQotCQkJCQlFUlJfY2xlYXJfZXJyb3IoKTsKLQkJCQl9Ci0JCQkvKiBEZWNyeXB0IHNlc3Npb24ga2V5ICovCi0JCQlpZiAoKCpwIT0oIFZfQVNOMV9TRVFVRU5DRXwgVl9BU04xX0NPTlNUUlVDVEVEKSkpIAotCQkJCXsKLQkJCQlTU0xlcnIoU1NMX0ZfU1NMM19HRVRfQ0xJRU5UX0tFWV9FWENIQU5HRSxTU0xfUl9ERUNSWVBUSU9OX0ZBSUxFRCk7Ci0JCQkJZ290byBnZXJyOwotCQkJCX0KLQkJCWlmIChwWzFdID09IDB4ODEpCi0JCQkJewotCQkJCXN0YXJ0ID0gcCszOwotCQkJCWlubGVuID0gcFsyXTsKLQkJCQl9Ci0JCQllbHNlIGlmIChwWzFdIDwgMHg4MCkKLQkJCQl7Ci0JCQkJc3RhcnQgPSBwKzI7Ci0JCQkJaW5sZW4gPSBwWzFdOwotCQkJCX0KLQkJCWVsc2UKLQkJCQl7Ci0JCQkJU1NMZXJyKFNTTF9GX1NTTDNfR0VUX0NMSUVOVF9LRVlfRVhDSEFOR0UsU1NMX1JfREVDUllQVElPTl9GQUlMRUQpOwotCQkJCWdvdG8gZ2VycjsKLQkJCQl9Ci0JCQlpZiAoRVZQX1BLRVlfZGVjcnlwdChwa2V5X2N0eCxwcmVtYXN0ZXJfc2VjcmV0LCZvdXRsZW4sc3RhcnQsaW5sZW4pIDw9MCkgCi0KLQkJCQl7Ci0JCQkJU1NMZXJyKFNTTF9GX1NTTDNfR0VUX0NMSUVOVF9LRVlfRVhDSEFOR0UsU1NMX1JfREVDUllQVElPTl9GQUlMRUQpOwotCQkJCWdvdG8gZ2VycjsKLQkJCQl9Ci0JCQkvKiBHZW5lcmF0ZSBtYXN0ZXIgc2VjcmV0ICovCi0JCQlzLT5zZXNzaW9uLT5tYXN0ZXJfa2V5X2xlbmd0aD0KLQkJCQlzLT5tZXRob2QtPnNzbDNfZW5jLT5nZW5lcmF0ZV9tYXN0ZXJfc2VjcmV0KHMsCi0JCQkJCXMtPnNlc3Npb24tPm1hc3Rlcl9rZXkscHJlbWFzdGVyX3NlY3JldCwzMik7Ci0JCQkvKiBDaGVjayBpZiBwdWJrZXkgZnJvbSBjbGllbnQgY2VydGlmaWNhdGUgd2FzIHVzZWQgKi8KLQkJCWlmIChFVlBfUEtFWV9DVFhfY3RybChwa2V5X2N0eCwgLTEsIC0xLCBFVlBfUEtFWV9DVFJMX1BFRVJfS0VZLCAyLCBOVUxMKSA+IDApCi0JCQkJcmV0ID0gMjsKLQkJCWVsc2UKLQkJCQlyZXQgPSAxOwotCQlnZXJyOgotCQkJRVZQX1BLRVlfZnJlZShjbGllbnRfcHViX3BrZXkpOwotCQkJRVZQX1BLRVlfQ1RYX2ZyZWUocGtleV9jdHgpOwotCQkJaWYgKHJldCkKLQkJCQlyZXR1cm4gcmV0OwotCQkJZWxzZQotCQkJCWdvdG8gZXJyOworCQkJaWYgKEVWUF9QS0VZX2Rlcml2ZV9zZXRfcGVlcihwa2V5X2N0eCwgY2xpZW50X3B1Yl9wa2V5KSA8PSAwKQorCQkJCUVSUl9jbGVhcl9lcnJvcigpOwogCQkJfQorCQkvKiBEZWNyeXB0IHNlc3Npb24ga2V5ICovCisJCWlmIChBU04xX2dldF9vYmplY3QoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKiopJnAsICZUbGVuLCAmVHRhZywgJlRjbGFzcywgbikgIT0gVl9BU04xX0NPTlNUUlVDVEVEIHx8CisJCQlUdGFnICE9IFZfQVNOMV9TRVFVRU5DRSB8fAorCQkJVGNsYXNzICE9IFZfQVNOMV9VTklWRVJTQUwpCisJCQl7CisJCQlTU0xlcnIoU1NMX0ZfU1NMM19HRVRfQ0xJRU5UX0tFWV9FWENIQU5HRSxTU0xfUl9ERUNSWVBUSU9OX0ZBSUxFRCk7CisJCQlnb3RvIGdlcnI7CisJCQl9CisJCXN0YXJ0ID0gcDsKKwkJaW5sZW4gPSBUbGVuOworCQlpZiAoRVZQX1BLRVlfZGVjcnlwdChwa2V5X2N0eCxwcmVtYXN0ZXJfc2VjcmV0LCZvdXRsZW4sc3RhcnQsaW5sZW4pIDw9MCkgCisJCQl7CisJCQlTU0xlcnIoU1NMX0ZfU1NMM19HRVRfQ0xJRU5UX0tFWV9FWENIQU5HRSxTU0xfUl9ERUNSWVBUSU9OX0ZBSUxFRCk7CisJCQlnb3RvIGdlcnI7CisJCQl9CisJCS8qIEdlbmVyYXRlIG1hc3RlciBzZWNyZXQgKi8KKwkJcy0+c2Vzc2lvbi0+bWFzdGVyX2tleV9sZW5ndGg9CisJCQlzLT5tZXRob2QtPnNzbDNfZW5jLT5nZW5lcmF0ZV9tYXN0ZXJfc2VjcmV0KHMsCisJCQkJcy0+c2Vzc2lvbi0+bWFzdGVyX2tleSxwcmVtYXN0ZXJfc2VjcmV0LDMyKTsKKwkJLyogQ2hlY2sgaWYgcHVia2V5IGZyb20gY2xpZW50IGNlcnRpZmljYXRlIHdhcyB1c2VkICovCisJCWlmIChFVlBfUEtFWV9DVFhfY3RybChwa2V5X2N0eCwgLTEsIC0xLCBFVlBfUEtFWV9DVFJMX1BFRVJfS0VZLCAyLCBOVUxMKSA+IDApCisJCQlyZXQgPSAyOwogCQllbHNlCisJCQlyZXQgPSAxOworCWdlcnI6CisJCUVWUF9QS0VZX2ZyZWUoY2xpZW50X3B1Yl9wa2V5KTsKKwkJRVZQX1BLRVlfQ1RYX2ZyZWUocGtleV9jdHgpOworCQlpZiAocmV0KQorCQkJcmV0dXJuIHJldDsKKwkJZWxzZQorCQkJZ290byBlcnI7CisJCX0KKwllbHNlIGlmICghKGFsZ19rICYgU1NMX2tQU0spKQogCQl7CiAJCWFsPVNTTF9BRF9IQU5EU0hBS0VfRkFJTFVSRTsKIAkJU1NMZXJyKFNTTF9GX1NTTDNfR0VUX0NMSUVOVF9LRVlfRVhDSEFOR0UsCkBAIC0zNjI5LDYgKzM2OTUsNyBAQAogCUVDX1BPSU5UKiBwb2ludCA9IE5VTEw7CiAJRUNEU0FfU0lHIHNpZzsKIAlCSUdOVU0geCwgeTsKKwl1bnNpZ25lZCBzaG9ydCBleHBlY3RlZF9leHRlbnNpb25fdHlwZTsKIAogCWlmIChzLT5zdGF0ZSA9PSBTU0wzX1NUX1NSX0NIQU5ORUxfSURfQSAmJiBzLT5pbml0X251bSA9PSAwKQogCQl7CkBAIC0zNjg2LDcgKzM3NTMsMTEgQEAKIAluMnMocCwgZXh0ZW5zaW9uX3R5cGUpOwogCW4ycyhwLCBleHRlbnNpb25fbGVuKTsKIAotCWlmIChleHRlbnNpb25fdHlwZSAhPSBUTFNFWFRfVFlQRV9jaGFubmVsX2lkIHx8CisJZXhwZWN0ZWRfZXh0ZW5zaW9uX3R5cGUgPSBUTFNFWFRfVFlQRV9jaGFubmVsX2lkOworCWlmIChzLT5zMy0+dGxzZXh0X2NoYW5uZWxfaWRfbmV3KQorCQlleHBlY3RlZF9leHRlbnNpb25fdHlwZSA9IFRMU0VYVF9UWVBFX2NoYW5uZWxfaWRfbmV3OworCisJaWYgKGV4dGVuc2lvbl90eXBlICE9IGV4cGVjdGVkX2V4dGVuc2lvbl90eXBlIHx8CiAJICAgIGV4dGVuc2lvbl9sZW4gIT0gVExTRVhUX0NIQU5ORUxfSURfU0laRSkKIAkJewogCQlTU0xlcnIoU1NMX0ZfU1NMM19HRVRfQ0hBTk5FTF9JRCxTU0xfUl9JTlZBTElEX01FU1NBR0UpOwpkaWZmIC0tZ2l0IGEvc3NsL3NzbC5oIGIvc3NsL3NzbC5oCmluZGV4IGUyZTk3ZjEuLmE4OWFiMjMgMTAwNjQ0Ci0tLSBhL3NzbC9zc2wuaAorKysgYi9zc2wvc3NsLmgKQEAgLTU0NCw2ICs1NDQsMTMgQEAKICNpZm5kZWYgT1BFTlNTTF9OT19TUlAKIAljaGFyICpzcnBfdXNlcm5hbWU7CiAjZW5kaWYKKworCS8qIG9yaWdpbmFsX2hhbmRzaGFrZV9oYXNoIGNvbnRhaW5zIHRoZSBoYW5kc2hha2UgaGFzaCAoZWl0aGVyCisJICogU0hBLTErTUQ1IG9yIFNIQS0yLCBkZXBlbmRpbmcgb24gVExTIHZlcnNpb24pIGZvciB0aGUgb3JpZ2luYWwsIGZ1bGwKKwkgKiBoYW5kc2hha2UgdGhhdCBjcmVhdGVkIGEgc2Vzc2lvbi4gVGhpcyBpcyB1c2VkIGJ5IENoYW5uZWwgSURzIGR1cmluZworCSAqIHJlc3VtcHRpb24uICovCisJdW5zaWduZWQgY2hhciBvcmlnaW5hbF9oYW5kc2hha2VfaGFzaFtFVlBfTUFYX01EX1NJWkVdOworCXVuc2lnbmVkIGludCBvcmlnaW5hbF9oYW5kc2hha2VfaGFzaF9sZW47CiAJfTsKIAogI2VuZGlmCkBAIC01NTMsNyArNTYwLDcgQEAKIC8qIEFsbG93IGluaXRpYWwgY29ubmVjdGlvbiB0byBzZXJ2ZXJzIHRoYXQgZG9uJ3Qgc3VwcG9ydCBSSSAqLwogI2RlZmluZSBTU0xfT1BfTEVHQUNZX1NFUlZFUl9DT05ORUNUCQkJMHgwMDAwMDAwNEwKICNkZWZpbmUgU1NMX09QX05FVFNDQVBFX1JFVVNFX0NJUEhFUl9DSEFOR0VfQlVHCQkweDAwMDAwMDA4TAotI2RlZmluZSBTU0xfT1BfU1NMUkVGMl9SRVVTRV9DRVJUX1RZUEVfQlVHCQkweDAwMDAwMDEwTAorI2RlZmluZSBTU0xfT1BfVExTRVhUX1BBRERJTkcJCQkJMHgwMDAwMDAxMEwKICNkZWZpbmUgU1NMX09QX01JQ1JPU09GVF9CSUdfU1NMVjNfQlVGRkVSCQkweDAwMDAwMDIwTAogI2RlZmluZSBTU0xfT1BfU0FGQVJJX0VDREhFX0VDRFNBX0JVRwkJCTB4MDAwMDAwNDBMCiAjZGVmaW5lIFNTTF9PUF9TU0xFQVlfMDgwX0NMSUVOVF9ESF9CVUcJCQkweDAwMDAwMDgwTApAQCAtNTYyLDYgKzU2OSw4IEBACiAKIC8qIEhhc24ndCBkb25lIGFueXRoaW5nIHNpbmNlIE9wZW5TU0wgMC45LjdoLCByZXRhaW5lZCBmb3IgY29tcGF0aWJpbGl0eSAqLwogI2RlZmluZSBTU0xfT1BfTVNJRV9TU0xWMl9SU0FfUEFERElORwkJCTB4MAorLyogUmVmZXJzIHRvIGFuY2llbnQgU1NMUkVGIGFuZCBTU0x2MiwgcmV0YWluZWQgZm9yIGNvbXBhdGliaWxpdHkgKi8KKyNkZWZpbmUgU1NMX09QX1NTTFJFRjJfUkVVU0VfQ0VSVF9UWVBFX0JVRwkJMHgwCiAKIC8qIFNTTF9PUF9ET05UX0lOU0VSVF9FTVBUWV9GUkFHTUVOVFMgaXMgdmVzdGlnaWFsLiBQcmV2aW91c2x5IGl0IGRpc2FibGVkIHRoZQogICogaW5zZXJ0aW9uIG9mIGVtcHR5IHJlY29yZHMgaW4gQ0JDIG1vZGUsIGJ1dCB0aGUgZW1wdHkgcmVjb3JkcyB3ZXJlIGNvbW1vbmx5CkBAIC02NDgsMTYgKzY1NywxOSBAQAogICogVExTIG9ubHkuKSAgIlJlbGVhc2VkIiBidWZmZXJzIGFyZSBwdXQgb250byBhIGZyZWUtbGlzdCBpbiB0aGUgY29udGV4dAogICogb3IganVzdCBmcmVlZCAoZGVwZW5kaW5nIG9uIHRoZSBjb250ZXh0J3Mgc2V0dGluZyBmb3IgZnJlZWxpc3RfbWF4X2xlbikuICovCiAjZGVmaW5lIFNTTF9NT0RFX1JFTEVBU0VfQlVGRkVSUyAweDAwMDAwMDEwTAorCiAvKiBTZW5kIHRoZSBjdXJyZW50IHRpbWUgaW4gdGhlIFJhbmRvbSBmaWVsZHMgb2YgdGhlIENsaWVudEhlbGxvIGFuZAogICogU2VydmVySGVsbG8gcmVjb3JkcyBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIGh5cG90aGV0aWNhbCBpbXBsZW1lbnRhdGlvbnMKICAqIHRoYXQgcmVxdWlyZSBpdC4KICAqLwogI2RlZmluZSBTU0xfTU9ERV9TRU5EX0NMSUVOVEhFTExPX1RJTUUgMHgwMDAwMDAyMEwKICNkZWZpbmUgU1NMX01PREVfU0VORF9TRVJWRVJIRUxMT19USU1FIDB4MDAwMDAwNDBMCisKIC8qIFdoZW4gc2V0LCBjbGllbnRzIG1heSBzZW5kIGFwcGxpY2F0aW9uIGRhdGEgYmVmb3JlIHJlY2VpcHQgb2YgQ0NTCiAgKiBhbmQgRmluaXNoZWQuICBUaGlzIG1vZGUgZW5hYmxlcyBmdWxsLWhhbmRzaGFrZXMgdG8gJ2NvbXBsZXRlJyBpbgogICogb25lIFJUVC4gKi8KICNkZWZpbmUgU1NMX01PREVfSEFORFNIQUtFX0NVVFRIUk9VR0ggMHgwMDAwMDA4MEwKKwogLyogV2hlbiBzZXQsIFRMUyAxLjAgYW5kIFNTTHYzLCBtdWx0aS1ieXRlLCBDQkMgcmVjb3JkcyB3aWxsIGJlIHNwbGl0IGluIHR3bzoKICAqIHRoZSBmaXJzdCByZWNvcmQgd2lsbCBjb250YWluIGEgc2luZ2xlIGJ5dGUgYW5kIHRoZSBzZWNvbmQgd2lsbCBjb250YWluIHRoZQogICogcmVzdCBvZiB0aGUgYnl0ZXMuIFRoaXMgZWZmZWN0aXZlbHkgcmFuZG9taXNlcyB0aGUgSVYgYW5kIHByZXZlbnRzIEJFQVNUCkBAIC04NzEsNiArODgzLDkgQEAKIAkvKiBnZXQgY2xpZW50IGNlcnQgY2FsbGJhY2sgKi8KIAlpbnQgKCpjbGllbnRfY2VydF9jYikoU1NMICpzc2wsIFg1MDkgKip4NTA5LCBFVlBfUEtFWSAqKnBrZXkpOwogCisJLyogZ2V0IGNoYW5uZWwgaWQgY2FsbGJhY2sgKi8KKwl2b2lkICgqY2hhbm5lbF9pZF9jYikoU1NMICpzc2wsIEVWUF9QS0VZICoqcGtleSk7CisKICAgICAvKiBjb29raWUgZ2VuZXJhdGUgY2FsbGJhY2sgKi8KICAgICBpbnQgKCphcHBfZ2VuX2Nvb2tpZV9jYikoU1NMICpzc2wsIHVuc2lnbmVkIGNoYXIgKmNvb2tpZSwgCiAgICAgICAgIHVuc2lnbmVkIGludCAqY29va2llX2xlbik7CkBAIC05MzMsNyArOTQ4LDcgQEAKIAkgKi8KIAl1bnNpZ25lZCBpbnQgbWF4X3NlbmRfZnJhZ21lbnQ7CiAKLSNpZm5kZWYgT1BFTlNTTF9FTkdJTkUKKyNpZm5kZWYgT1BFTlNTTF9OT19FTkdJTkUKIAkvKiBFbmdpbmUgdG8gcGFzcyByZXF1ZXN0cyBmb3IgY2xpZW50IGNlcnRzIHRvCiAJICovCiAJRU5HSU5FICpjbGllbnRfY2VydF9lbmdpbmU7CkBAIC0xMDMzLDYgKzEwNDgsMTAgQEAKIAkvKiBJZiB0cnVlLCBhIGNsaWVudCB3aWxsIGFkdmVydGlzZSB0aGUgQ2hhbm5lbCBJRCBleHRlbnNpb24gYW5kIGEKIAkgKiBzZXJ2ZXIgd2lsbCBlY2hvIGl0LiAqLwogCWNoYXIgdGxzZXh0X2NoYW5uZWxfaWRfZW5hYmxlZDsKKwkvKiB0bHNleHRfY2hhbm5lbF9pZF9lbmFibGVkX25ldyBpcyBhIGhhY2sgdG8gc3VwcG9ydCBib3RoIG9sZCBhbmQgbmV3CisJICogQ2hhbm5lbElEIHNpZ25hdHVyZXMuIEl0IGluZGljYXRlcyB0aGF0IGEgY2xpZW50IHNob3VsZCBhZHZlcnRpc2UgdGhlCisJICogbmV3IENoYW5uZWxJRCBleHRlbnNpb24gbnVtYmVyLiAqLworCWNoYXIgdGxzZXh0X2NoYW5uZWxfaWRfZW5hYmxlZF9uZXc7CiAJLyogVGhlIGNsaWVudCdzIENoYW5uZWwgSUQgcHJpdmF0ZSBrZXkuICovCiAJRVZQX1BLRVkgKnRsc2V4dF9jaGFubmVsX2lkX3ByaXZhdGU7CiAjZW5kaWYKQEAgLTEwOTEsNiArMTExMCw4IEBACiB2b2lkICgqU1NMX0NUWF9nZXRfaW5mb19jYWxsYmFjayhTU0xfQ1RYICpjdHgpKShjb25zdCBTU0wgKnNzbCxpbnQgdHlwZSxpbnQgdmFsKTsKIHZvaWQgU1NMX0NUWF9zZXRfY2xpZW50X2NlcnRfY2IoU1NMX0NUWCAqY3R4LCBpbnQgKCpjbGllbnRfY2VydF9jYikoU1NMICpzc2wsIFg1MDkgKip4NTA5LCBFVlBfUEtFWSAqKnBrZXkpKTsKIGludCAoKlNTTF9DVFhfZ2V0X2NsaWVudF9jZXJ0X2NiKFNTTF9DVFggKmN0eCkpKFNTTCAqc3NsLCBYNTA5ICoqeDUwOSwgRVZQX1BLRVkgKipwa2V5KTsKK3ZvaWQgU1NMX0NUWF9zZXRfY2hhbm5lbF9pZF9jYihTU0xfQ1RYICpjdHgsIHZvaWQgKCpjaGFubmVsX2lkX2NiKShTU0wgKnNzbCwgRVZQX1BLRVkgKipwa2V5KSk7Cit2b2lkICgqU1NMX0NUWF9nZXRfY2hhbm5lbF9pZF9jYihTU0xfQ1RYICpjdHgpKShTU0wgKnNzbCwgRVZQX1BLRVkgKipwa2V5KTsKICNpZm5kZWYgT1BFTlNTTF9OT19FTkdJTkUKIGludCBTU0xfQ1RYX3NldF9jbGllbnRfY2VydF9lbmdpbmUoU1NMX0NUWCAqY3R4LCBFTkdJTkUgKmUpOwogI2VuZGlmCkBAIC0xMTY3LDEyICsxMTg4LDE0IEBACiAjZGVmaW5lIFNTTF9XUklUSU5HCTIKICNkZWZpbmUgU1NMX1JFQURJTkcJMwogI2RlZmluZSBTU0xfWDUwOV9MT09LVVAJNAorI2RlZmluZSBTU0xfQ0hBTk5FTF9JRF9MT09LVVAJNQogCiAvKiBUaGVzZSB3aWxsIG9ubHkgYmUgdXNlZCB3aGVuIGRvaW5nIG5vbi1ibG9ja2luZyBJTyAqLwogI2RlZmluZSBTU0xfd2FudF9ub3RoaW5nKHMpCShTU0xfd2FudChzKSA9PSBTU0xfTk9USElORykKICNkZWZpbmUgU1NMX3dhbnRfcmVhZChzKQkoU1NMX3dhbnQocykgPT0gU1NMX1JFQURJTkcpCiAjZGVmaW5lIFNTTF93YW50X3dyaXRlKHMpCShTU0xfd2FudChzKSA9PSBTU0xfV1JJVElORykKICNkZWZpbmUgU1NMX3dhbnRfeDUwOV9sb29rdXAocykJKFNTTF93YW50KHMpID09IFNTTF9YNTA5X0xPT0tVUCkKKyNkZWZpbmUgU1NMX3dhbnRfY2hhbm5lbF9pZF9sb29rdXAocykJKFNTTF93YW50KHMpID09IFNTTF9DSEFOTkVMX0lEX0xPT0tVUCkKIAogI2RlZmluZSBTU0xfTUFDX0ZMQUdfUkVBRF9NQUNfU1RSRUFNIDEKICNkZWZpbmUgU1NMX01BQ19GTEFHX1dSSVRFX01BQ19TVFJFQU0gMgpAQCAtMTMyMCw2ICsxMzQzLDEwIEBACiAjZW5kaWYJLyogT1BFTlNTTF9OT19LUkI1ICovCiAKICNpZm5kZWYgT1BFTlNTTF9OT19QU0sKKwkvKiBQU0sgaWRlbnRpdHkgaGludCBpcyBzdG9yZWQgaGVyZSBvbmx5IHRvIGVuYWJsZSBzZXR0aW5nIGEgaGludCBvbiBhbiBTU0wgb2JqZWN0IGJlZm9yZSBhbgorCSAqIFNTTF9TRVNTSU9OIGlzIGFzc29jaWF0ZWQgd2l0aCBpdC4gT25jZSBhbiBTU0xfU0VTU0lPTiBpcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBTU0wgb2JqZWN0LAorCSAqIHRoZSBwc2tfaWRlbnRpdHlfaGludCBmcm9tIHRoZSBzZXNzaW9uIHRha2VzIHByZWNlZGVuY2Ugb3ZlciB0aGlzIG9uZS4gKi8KKwljaGFyICpwc2tfaWRlbnRpdHlfaGludDsKIAl1bnNpZ25lZCBpbnQgKCpwc2tfY2xpZW50X2NhbGxiYWNrKShTU0wgKnNzbCwgY29uc3QgY2hhciAqaGludCwgY2hhciAqaWRlbnRpdHksCiAJCXVuc2lnbmVkIGludCBtYXhfaWRlbnRpdHlfbGVuLCB1bnNpZ25lZCBjaGFyICpwc2ssCiAJCXVuc2lnbmVkIGludCBtYXhfcHNrX2xlbik7CkBAIC0xNjA0LDYgKzE2MzEsNyBAQAogI2RlZmluZSBTU0xfRVJST1JfWkVST19SRVRVUk4JCTYKICNkZWZpbmUgU1NMX0VSUk9SX1dBTlRfQ09OTkVDVAkJNwogI2RlZmluZSBTU0xfRVJST1JfV0FOVF9BQ0NFUFQJCTgKKyNkZWZpbmUgU1NMX0VSUk9SX1dBTlRfQ0hBTk5FTF9JRF9MT09LVVAJOQogCiAjZGVmaW5lIFNTTF9DVFJMX05FRURfVE1QX1JTQQkJCTEKICNkZWZpbmUgU1NMX0NUUkxfU0VUX1RNUF9SU0EJCQkyCkBAIC0xNzQzLDEwICsxNzcxLDExIEBACiAjZGVmaW5lIFNTTF9zZXRfdG1wX2VjZGgoc3NsLGVjZGgpIFwKIAlTU0xfY3RybChzc2wsU1NMX0NUUkxfU0VUX1RNUF9FQ0RILDAsKGNoYXIgKillY2RoKQogCi0vKiBTU0xfZW5hYmxlX3Rsc19jaGFubmVsX2lkIGNvbmZpZ3VyZXMgYSBUTFMgc2VydmVyIHRvIGFjY2VwdCBUTFMgY2xpZW50Ci0gKiBJRHMgZnJvbSBjbGllbnRzLiBSZXR1cm5zIDEgb24gc3VjY2Vzcy4gKi8KLSNkZWZpbmUgU1NMX2VuYWJsZV90bHNfY2hhbm5lbF9pZChjdHgpIFwKLQlTU0xfY3RybChjdHgsU1NMX0NUUkxfQ0hBTk5FTF9JRCwwLE5VTEwpCisvKiBTU0xfZW5hYmxlX3Rsc19jaGFubmVsX2lkIGVpdGhlciBjb25maWd1cmVzIGEgVExTIHNlcnZlciB0byBhY2NlcHQgVExTIGNsaWVudAorICogSURzIGZyb20gY2xpZW50cywgb3IgY29uZmlndXJlIGEgY2xpZW50IHRvIHNlbmQgVExTIGNsaWVudCBJRHMgdG8gc2VydmVyLgorICogUmV0dXJucyAxIG9uIHN1Y2Nlc3MuICovCisjZGVmaW5lIFNTTF9lbmFibGVfdGxzX2NoYW5uZWxfaWQocykgXAorCVNTTF9jdHJsKHMsU1NMX0NUUkxfQ0hBTk5FTF9JRCwwLE5VTEwpCiAvKiBTU0xfc2V0MV90bHNfY2hhbm5lbF9pZCBjb25maWd1cmVzIGEgVExTIGNsaWVudCB0byBzZW5kIGEgVExTIENoYW5uZWwgSUQgdG8KICAqIGNvbXBhdGlibGUgc2VydmVycy4gcHJpdmF0ZV9rZXkgbXVzdCBiZSBhIFAtMjU2IEVWUF9QS0VZKi4gUmV0dXJucyAxIG9uCiAgKiBzdWNjZXNzLiAqLwpAQCAtMTc5Niw3ICsxODI1LDcgQEAKIGNoYXIgKglTU0xfQ0lQSEVSX2dldF92ZXJzaW9uKGNvbnN0IFNTTF9DSVBIRVIgKmMpOwogY29uc3QgY2hhciAqCVNTTF9DSVBIRVJfZ2V0X25hbWUoY29uc3QgU1NMX0NJUEhFUiAqYyk7CiB1bnNpZ25lZCBsb25nIAlTU0xfQ0lQSEVSX2dldF9pZChjb25zdCBTU0xfQ0lQSEVSICpjKTsKLWNvbnN0IGNoYXIqIFNTTF9DSVBIRVJfYXV0aGVudGljYXRpb25fbWV0aG9kKGNvbnN0IFNTTF9DSVBIRVIqIGNpcGhlcik7Citjb25zdCBjaGFyICoJU1NMX0NJUEhFUl9hdXRoZW50aWNhdGlvbl9tZXRob2QoY29uc3QgU1NMX0NJUEhFUiogY2lwaGVyKTsKIAogaW50CVNTTF9nZXRfZmQoY29uc3QgU1NMICpzKTsKIGludAlTU0xfZ2V0X3JmZChjb25zdCBTU0wgKnMpOwpAQCAtMjcxMyw3ICsyNzQyLDYgQEAKICNkZWZpbmUgU1NMX1JfV1JPTkdfVkVSU0lPTl9OVU1CRVIJCQkgMjY3CiAjZGVmaW5lIFNTTF9SX1g1MDlfTElCCQkJCQkgMjY4CiAjZGVmaW5lIFNTTF9SX1g1MDlfVkVSSUZJQ0FUSU9OX1NFVFVQX1BST0JMRU1TCQkgMjY5Ci0jZGVmaW5lIFNTTF9SX1VORVhQRUNURURfQ0NTCQkJCSAzODgKIAogI2lmZGVmICBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvc3NsL3NzbDMuaCBiL3NzbC9zc2wzLmgKaW5kZXggMWFhNDAyMy4uY2JhOTQzNCAxMDA2NDQKLS0tIGEvc3NsL3NzbDMuaAorKysgYi9zc2wvc3NsMy5oCkBAIC0zOTMsOSArMzkzLDYgQEAKICNkZWZpbmUgVExTMV9GTEFHU19UTFNfUEFERElOR19CVUcJCTB4MDAwOAogI2RlZmluZSBUTFMxX0ZMQUdTX1NLSVBfQ0VSVF9WRVJJRlkJCTB4MDAxMAogI2RlZmluZSBUTFMxX0ZMQUdTX0tFRVBfSEFORFNIQUtFCQkweDAwMjAKLS8qIFNTTDNfRkxBR1NfQ0NTX09LIGluZGljYXRlcyB0aGF0IGEgQ2hhbmdlQ2lwaGVyU3BlYyByZWNvcmQgaXMgYWNjZXB0YWJsZSBhdAotICogdGhpcyBwb2ludCBpbiB0aGUgaGFuZHNoYWtlLiBJZiB0aGlzIGZsYWcgaXMgbm90IHNldCB0aGVuIHJlY2VpdmVkIENDUwotICogcmVjb3JkcyB3aWxsIGNhdXNlIGEgZmF0YWwgZXJyb3IgZm9yIHRoZSBjb25uZWN0aW9uLiAqLwogI2RlZmluZSBTU0wzX0ZMQUdTX0NDU19PSwkJCTB4MDA4MAogIAogLyogU1NMM19GTEFHU19TR0NfUkVTVEFSVF9ET05FIGlzIHNldCB3aGVuIHdlCkBAIC01NjMsNiArNTYwLDExIEBACiAJICogZm9yIENoYW5uZWwgSURzIGFuZCB0aGF0IHRsc2V4dF9jaGFubmVsX2lkIHdpbGwgYmUgdmFsaWQgYWZ0ZXIgdGhlCiAJICogaGFuZHNoYWtlLiAqLwogCWNoYXIgdGxzZXh0X2NoYW5uZWxfaWRfdmFsaWQ7CisJLyogdGxzZXh0X2NoYW5uZWxfaWRfbmV3IG1lYW5zIHRoYXQgdGhlIHVwZGF0ZWQgQ2hhbm5lbCBJRCBleHRlbnNpb24KKwkgKiB3YXMgbmVnb3RpYXRlZC4gVGhpcyBpcyBhIHRlbXBvcmFyeSBoYWNrIGluIHRoZSBjb2RlIHRvIHN1cHBvcnQgYm90aAorCSAqIGZvcm1zIG9mIENoYW5uZWwgSUQgZXh0ZW5zaW9uIHdoaWxlIHdlIHRyYW5zaXRpb24gdG8gdGhlIG5ldyBmb3JtYXQsCisJICogd2hpY2ggZml4ZWQgYSBzZWN1cml0eSBpc3N1ZS4gKi8KKwljaGFyIHRsc2V4dF9jaGFubmVsX2lkX25ldzsKIAkvKiBGb3IgYSBzZXJ2ZXI6CiAJICogICAgIElmIHx0bHNleHRfY2hhbm5lbF9pZF92YWxpZHwgaXMgdHJ1ZSwgdGhlbiB0aGlzIGNvbnRhaW5zIHRoZQogCSAqICAgICB2ZXJpZmllZCBDaGFubmVsIElEIGZyb20gdGhlIGNsaWVudDogYSBQMjU2IHBvaW50LCAoeCx5KSwgd2hlcmUKQEAgLTY4MywxMSArNjg1LDExIEBACiAjZGVmaW5lIFNTTDNfU1RfU1JfQ0VSVF9WUkZZX0IJCSgweDFBMXxTU0xfU1RfQUNDRVBUKQogI2RlZmluZSBTU0wzX1NUX1NSX0NIQU5HRV9BCQkoMHgxQjB8U1NMX1NUX0FDQ0VQVCkKICNkZWZpbmUgU1NMM19TVF9TUl9DSEFOR0VfQgkJKDB4MUIxfFNTTF9TVF9BQ0NFUFQpCi0jZGVmaW5lIFNTTDNfU1RfU1JfUE9TVF9DTElFTlRfQ0VSVAkoMHgxQkZ8U1NMX1NUX0FDQ0VQVCkKICNpZm5kZWYgT1BFTlNTTF9OT19ORVhUUFJPVE9ORUcKICNkZWZpbmUgU1NMM19TVF9TUl9ORVhUX1BST1RPX0EJCSgweDIxMHxTU0xfU1RfQUNDRVBUKQogI2RlZmluZSBTU0wzX1NUX1NSX05FWFRfUFJPVE9fQgkJKDB4MjExfFNTTF9TVF9BQ0NFUFQpCiAjZW5kaWYKKyNkZWZpbmUgU1NMM19TVF9TUl9QT1NUX0NMSUVOVF9DRVJUCSgweDFCRnxTU0xfU1RfQUNDRVBUKQogI2RlZmluZSBTU0wzX1NUX1NSX0NIQU5ORUxfSURfQQkJKDB4MjIwfFNTTF9TVF9BQ0NFUFQpCiAjZGVmaW5lIFNTTDNfU1RfU1JfQ0hBTk5FTF9JRF9CCQkoMHgyMjF8U1NMX1NUX0FDQ0VQVCkKICNkZWZpbmUgU1NMM19TVF9TUl9GSU5JU0hFRF9BCQkoMHgxQzB8U1NMX1NUX0FDQ0VQVCkKZGlmZiAtLWdpdCBhL3NzbC9zc2xfYXNuMS5jIGIvc3NsL3NzbF9hc24xLmMKaW5kZXggMzg1NDBiZS4uZjgzZTE4ZiAxMDA2NDQKLS0tIGEvc3NsL3NzbF9hc24xLmMKKysrIGIvc3NsL3NzbF9hc24xLmMKQEAgLTExNywxMiArMTE3LDEzIEBACiAjaWZuZGVmIE9QRU5TU0xfTk9fU1JQCiAJQVNOMV9PQ1RFVF9TVFJJTkcgc3JwX3VzZXJuYW1lOwogI2VuZGlmIC8qIE9QRU5TU0xfTk9fU1JQICovCisJQVNOMV9PQ1RFVF9TVFJJTkcgb3JpZ2luYWxfaGFuZHNoYWtlX2hhc2g7CiAJfSBTU0xfU0VTU0lPTl9BU04xOwogCiBpbnQgaTJkX1NTTF9TRVNTSU9OKFNTTF9TRVNTSU9OICppbiwgdW5zaWduZWQgY2hhciAqKnBwKQogCXsKICNkZWZpbmUgTFNJWkUyIChzaXplb2YobG9uZykqMikKLQlpbnQgdjE9MCx2Mj0wLHYzPTAsdjQ9MCx2NT0wLHY3PTAsdjg9MDsKKwlpbnQgdjE9MCx2Mj0wLHYzPTAsdjQ9MCx2NT0wLHY3PTAsdjg9MCx2MTQ9MDsKIAl1bnNpZ25lZCBjaGFyIGJ1Zls0XSxpYnVmMVtMU0laRTJdLGlidWYyW0xTSVpFMl07CiAJdW5zaWduZWQgY2hhciBpYnVmM1tMU0laRTJdLGlidWY0W0xTSVpFMl0saWJ1ZjVbTFNJWkUyXTsKICNpZm5kZWYgT1BFTlNTTF9OT19UTFNFWFQKQEAgLTI3Miw2ICsyNzMsMTMgQEAKIAkJYS5wc2tfaWRlbnRpdHkudHlwZT1WX0FTTjFfT0NURVRfU1RSSU5HOwogCQlhLnBza19pZGVudGl0eS5kYXRhPSh1bnNpZ25lZCBjaGFyICopKGluLT5wc2tfaWRlbnRpdHkpOwogCQl9CisKKwlpZiAoaW4tPm9yaWdpbmFsX2hhbmRzaGFrZV9oYXNoX2xlbiA+IDApCisJCXsKKwkJYS5vcmlnaW5hbF9oYW5kc2hha2VfaGFzaC5sZW5ndGggPSBpbi0+b3JpZ2luYWxfaGFuZHNoYWtlX2hhc2hfbGVuOworCQlhLm9yaWdpbmFsX2hhbmRzaGFrZV9oYXNoLnR5cGUgPSBWX0FTTjFfT0NURVRfU1RSSU5HOworCQlhLm9yaWdpbmFsX2hhbmRzaGFrZV9oYXNoLmRhdGEgPSBpbi0+b3JpZ2luYWxfaGFuZHNoYWtlX2hhc2g7CisJCX0KICNlbmRpZiAvKiBPUEVOU1NMX05PX1BTSyAqLwogI2lmbmRlZiBPUEVOU1NMX05PX1NSUAogCWlmIChpbi0+c3JwX3VzZXJuYW1lKQpAQCAtMzI1LDYgKzMzMyw4IEBACiAJaWYgKGluLT5zcnBfdXNlcm5hbWUpCiAgICAgICAgIAlNX0FTTjFfSTJEX2xlbl9FWFBfb3B0KCYoYS5zcnBfdXNlcm5hbWUpLCBpMmRfQVNOMV9PQ1RFVF9TVFJJTkcsMTIsdjEyKTsKICNlbmRpZiAvKiBPUEVOU1NMX05PX1NSUCAqLworCWlmIChpbi0+b3JpZ2luYWxfaGFuZHNoYWtlX2hhc2hfbGVuID4gMCkKKwkJTV9BU04xX0kyRF9sZW5fRVhQX29wdCgmKGEub3JpZ2luYWxfaGFuZHNoYWtlX2hhc2gpLGkyZF9BU04xX09DVEVUX1NUUklORywxNCx2MTQpOwogCiAJTV9BU04xX0kyRF9zZXFfdG90YWwoKTsKIApAQCAtMzczLDYgKzM4Myw4IEBACiAJaWYgKGluLT5zcnBfdXNlcm5hbWUpCiAJCU1fQVNOMV9JMkRfcHV0X0VYUF9vcHQoJihhLnNycF91c2VybmFtZSksIGkyZF9BU04xX09DVEVUX1NUUklORywxMix2MTIpOwogI2VuZGlmIC8qIE9QRU5TU0xfTk9fU1JQICovCisJaWYgKGluLT5vcmlnaW5hbF9oYW5kc2hha2VfaGFzaF9sZW4gPiAwKQorCQlNX0FTTjFfSTJEX3B1dF9FWFBfb3B0KCYoYS5vcmlnaW5hbF9oYW5kc2hha2VfaGFzaCksaTJkX0FTTjFfT0NURVRfU1RSSU5HLDE0LHYxNCk7CiAJTV9BU04xX0kyRF9maW5pc2goKTsKIAl9CiAKQEAgLTQwOCw2ICs0MjAsNyBAQAogCQlpZiAob3MubGVuZ3RoICE9IDMpCiAJCQl7CiAJCQljLmVycm9yPVNTTF9SX0NJUEhFUl9DT0RFX1dST05HX0xFTkdUSDsKKwkJCWMubGluZT1fX0xJTkVfXzsKIAkJCWdvdG8gZXJyOwogCQkJfQogCQlpZD0weDAyMDAwMDAwTHwKQEAgLTQyMCw2ICs0MzMsNyBAQAogCQlpZiAob3MubGVuZ3RoICE9IDIpCiAJCQl7CiAJCQljLmVycm9yPVNTTF9SX0NJUEhFUl9DT0RFX1dST05HX0xFTkdUSDsKKwkJCWMubGluZT1fX0xJTkVfXzsKIAkJCWdvdG8gZXJyOwogCQkJfQogCQlpZD0weDAzMDAwMDAwTHwKQEAgLTQyOSw2ICs0NDMsNyBAQAogCWVsc2UKIAkJewogCQljLmVycm9yPVNTTF9SX1VOS05PV05fU1NMX1ZFUlNJT047CisJCWMubGluZT1fX0xJTkVfXzsKIAkJZ290byBlcnI7CiAJCX0KIAkKQEAgLTUyMSw2ICs1MzYsNyBAQAogCSAgICBpZiAob3MubGVuZ3RoID4gU1NMX01BWF9TSURfQ1RYX0xFTkdUSCkKIAkJewogCQljLmVycm9yPVNTTF9SX0JBRF9MRU5HVEg7CisJCWMubGluZT1fX0xJTkVfXzsKIAkJZ290byBlcnI7CiAJCX0KIAkgICAgZWxzZQpAQCAtNjM4LDUgKzY1NCwxNiBAQAogCQlyZXQtPnNycF91c2VybmFtZT1OVUxMOwogI2VuZGlmIC8qIE9QRU5TU0xfTk9fU1JQICovCiAKKwlvcy5sZW5ndGg9MDsKKwlvcy5kYXRhPU5VTEw7CisJTV9BU04xX0QySV9nZXRfRVhQX29wdChvc3AsZDJpX0FTTjFfT0NURVRfU1RSSU5HLDE0KTsKKwlpZiAob3MuZGF0YSAmJiBvcy5sZW5ndGggPCAoaW50KXNpemVvZihyZXQtPm9yaWdpbmFsX2hhbmRzaGFrZV9oYXNoKSkKKwkJeworCQltZW1jcHkocmV0LT5vcmlnaW5hbF9oYW5kc2hha2VfaGFzaCwgb3MuZGF0YSwgb3MubGVuZ3RoKTsKKwkJcmV0LT5vcmlnaW5hbF9oYW5kc2hha2VfaGFzaF9sZW4gPSBvcy5sZW5ndGg7CisJCU9QRU5TU0xfZnJlZShvcy5kYXRhKTsKKwkJb3MuZGF0YSA9IE5VTEw7CisJCX0KKwogCU1fQVNOMV9EMklfRmluaXNoKGEsU1NMX1NFU1NJT05fZnJlZSxTU0xfRl9EMklfU1NMX1NFU1NJT04pOwogCX0KZGlmZiAtLWdpdCBhL3NzbC9zc2xfZXJyLmMgYi9zc2wvc3NsX2Vyci5jCmluZGV4IDUxMTdiZTAuLjgxNmY2ZWUgMTAwNjQ0Ci0tLSBhL3NzbC9zc2xfZXJyLmMKKysrIGIvc3NsL3NzbF9lcnIuYwpAQCAtNTU1LDcgKzU1NSw3IEBACiB7RVJSX1JFQVNPTihTU0xfUl9UTFNWMV9VTlJFQ09HTklaRURfTkFNRSksInRsc3YxIHVucmVjb2duaXplZCBuYW1lIn0sCiB7RVJSX1JFQVNPTihTU0xfUl9UTFNWMV9VTlNVUFBPUlRFRF9FWFRFTlNJT04pLCJ0bHN2MSB1bnN1cHBvcnRlZCBleHRlbnNpb24ifSwKIHtFUlJfUkVBU09OKFNTTF9SX1RMU19DTElFTlRfQ0VSVF9SRVFfV0lUSF9BTk9OX0NJUEhFUiksInRscyBjbGllbnQgY2VydCByZXEgd2l0aCBhbm9uIGNpcGhlciJ9LAote0VSUl9SRUFTT04oU1NMX1JfVExTX0hFQVJUQkVBVF9QRUVSX0RPRVNOVF9BQ0NFUFQpLCJwZWVyIGRvZXMgbm90IGFjY2VwdCBoZWFydGJlYXJ0cyJ9LAore0VSUl9SRUFTT04oU1NMX1JfVExTX0hFQVJUQkVBVF9QRUVSX0RPRVNOVF9BQ0NFUFQpLCJwZWVyIGRvZXMgbm90IGFjY2VwdCBoZWFydGJlYXRzIn0sCiB7RVJSX1JFQVNPTihTU0xfUl9UTFNfSEVBUlRCRUFUX1BFTkRJTkcpICwiaGVhcnRiZWF0IHJlcXVlc3QgYWxyZWFkeSBwZW5kaW5nIn0sCiB7RVJSX1JFQVNPTihTU0xfUl9UTFNfSUxMRUdBTF9FWFBPUlRFUl9MQUJFTCksInRscyBpbGxlZ2FsIGV4cG9ydGVyIGxhYmVsIn0sCiB7RVJSX1JFQVNPTihTU0xfUl9UTFNfSU5WQUxJRF9FQ1BPSU5URk9STUFUX0xJU1QpLCJ0bHMgaW52YWxpZCBlY3BvaW50Zm9ybWF0IGxpc3QifSwKQEAgLTYwNiw3ICs2MDYsNiBAQAoge0VSUl9SRUFTT04oU1NMX1JfV1JPTkdfVkVSU0lPTl9OVU1CRVIpICAsIndyb25nIHZlcnNpb24gbnVtYmVyIn0sCiB7RVJSX1JFQVNPTihTU0xfUl9YNTA5X0xJQikgICAgICAgICAgICAgICwieDUwOSBsaWIifSwKIHtFUlJfUkVBU09OKFNTTF9SX1g1MDlfVkVSSUZJQ0FUSU9OX1NFVFVQX1BST0JMRU1TKSwieDUwOSB2ZXJpZmljYXRpb24gc2V0dXAgcHJvYmxlbXMifSwKLXtFUlJfUkVBU09OKFNTTF9SX1VORVhQRUNURURfQ0NTKSwidW5leHBlY3RlZCBDQ1MifSwKIHswLE5VTEx9CiAJfTsKIApkaWZmIC0tZ2l0IGEvc3NsL3NzbF9saWIuYyBiL3NzbC9zc2xfbGliLmMKaW5kZXggYzZlNzlkYy4uZWMwZWMyZSAxMDA2NDQKLS0tIGEvc3NsL3NzbF9saWIuYworKysgYi9zc2wvc3NsX2xpYi5jCkBAIC0zODgsNiArMzg4LDEzIEBACiAJQ1JZUFRPX25ld19leF9kYXRhKENSWVBUT19FWF9JTkRFWF9TU0wsIHMsICZzLT5leF9kYXRhKTsKIAogI2lmbmRlZiBPUEVOU1NMX05PX1BTSworCXMtPnBza19pZGVudGl0eV9oaW50ID0gTlVMTDsKKwlpZiAoY3R4LT5wc2tfaWRlbnRpdHlfaGludCkKKwkJeworCQlzLT5wc2tfaWRlbnRpdHlfaGludCA9IEJVRl9zdHJkdXAoY3R4LT5wc2tfaWRlbnRpdHlfaGludCk7CisJCWlmIChzLT5wc2tfaWRlbnRpdHlfaGludCA9PSBOVUxMKQorCQkJZ290byBlcnI7CisJCX0KIAlzLT5wc2tfY2xpZW50X2NhbGxiYWNrPWN0eC0+cHNrX2NsaWVudF9jYWxsYmFjazsKIAlzLT5wc2tfc2VydmVyX2NhbGxiYWNrPWN0eC0+cHNrX3NlcnZlcl9jYWxsYmFjazsKICNlbmRpZgpAQCAtNTk2LDYgKzYwMywxMSBAQAogCQlPUEVOU1NMX2ZyZWUocy0+YWxwbl9jbGllbnRfcHJvdG9fbGlzdCk7CiAjZW5kaWYKIAorI2lmbmRlZiBPUEVOU1NMX05PX1BTSworCWlmIChzLT5wc2tfaWRlbnRpdHlfaGludCkKKwkJT1BFTlNTTF9mcmVlKHMtPnBza19pZGVudGl0eV9oaW50KTsKKyNlbmRpZgorCiAJaWYgKHMtPmNsaWVudF9DQSAhPSBOVUxMKQogCQlza19YNTA5X05BTUVfcG9wX2ZyZWUocy0+Y2xpZW50X0NBLFg1MDlfTkFNRV9mcmVlKTsKIApAQCAtMTM5MSw2ICsxNDAzLDEwIEBACiAKIAlwPWJ1ZjsKIAlzaz1zLT5zZXNzaW9uLT5jaXBoZXJzOworCisJaWYgKHNrX1NTTF9DSVBIRVJfbnVtKHNrKSA9PSAwKQorCQlyZXR1cm4gTlVMTDsKKwogCWZvciAoaT0wOyBpPHNrX1NTTF9DSVBIRVJfbnVtKHNrKTsgaSsrKQogCQl7CiAJCWludCBuOwpAQCAtMTQ0Miw3ICsxNDU4LDcgQEAKICNlbmRpZiAvKiBPUEVOU1NMX05PX0tSQjUgKi8KICNpZm5kZWYgT1BFTlNTTF9OT19QU0sKIAkJLyogd2l0aCBQU0sgdGhlcmUgbXVzdCBiZSBjbGllbnQgY2FsbGJhY2sgc2V0ICovCi0JCWlmICgoKGMtPmFsZ29yaXRobV9ta2V5ICYgU1NMX2tQU0spIHx8IChjLT5hbGdvcml0aG1fYXV0aCAmIFNTTF9hUFNLKSkgJiYKKwkJaWYgKChjLT5hbGdvcml0aG1fYXV0aCAmIFNTTF9hUFNLKSAmJgogCQkgICAgcy0+cHNrX2NsaWVudF9jYWxsYmFjayA9PSBOVUxMKQogCQkJY29udGludWU7CiAjZW5kaWYgLyogT1BFTlNTTF9OT19QU0sgKi8KQEAgLTI2ODksNiArMjcwNSwxMCBAQAogCQl7CiAJCXJldHVybihTU0xfRVJST1JfV0FOVF9YNTA5X0xPT0tVUCk7CiAJCX0KKwlpZiAoKGkgPCAwKSAmJiBTU0xfd2FudF9jaGFubmVsX2lkX2xvb2t1cChzKSkKKwkJeworCQlyZXR1cm4oU1NMX0VSUk9SX1dBTlRfQ0hBTk5FTF9JRF9MT09LVVApOworCQl9CiAKIAlpZiAoaSA9PSAwKQogCQl7CkBAIC0zMzMzLDMyICszMzUzLDU0IEBACiAJaWYgKHMgPT0gTlVMTCkKIAkJcmV0dXJuIDA7CiAKLQlpZiAocy0+c2Vzc2lvbiA9PSBOVUxMKQotCQlyZXR1cm4gMTsgLyogc2Vzc2lvbiBub3QgY3JlYXRlZCB5ZXQsIGlnbm9yZWQgKi8KLQogCWlmIChpZGVudGl0eV9oaW50ICE9IE5VTEwgJiYgc3RybGVuKGlkZW50aXR5X2hpbnQpID4gUFNLX01BWF9JREVOVElUWV9MRU4pCiAJCXsKIAkJU1NMZXJyKFNTTF9GX1NTTF9VU0VfUFNLX0lERU5USVRZX0hJTlQsIFNTTF9SX0RBVEFfTEVOR1RIX1RPT19MT05HKTsKIAkJcmV0dXJuIDA7CiAJCX0KLQlpZiAocy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5X2hpbnQgIT0gTlVMTCkKKworCS8qIENsZWFyIGhpbnQgaW4gU1NMIGFuZCBhc3NvY2lhdGVkIFNTTF9TRVNTSU9OIChpZiBhbnkpLiAqLworCWlmIChzLT5wc2tfaWRlbnRpdHlfaGludCAhPSBOVUxMKQorCQl7CisJCU9QRU5TU0xfZnJlZShzLT5wc2tfaWRlbnRpdHlfaGludCk7CisJCXMtPnBza19pZGVudGl0eV9oaW50ID0gTlVMTDsKKwkJfQorCWlmIChzLT5zZXNzaW9uICE9IE5VTEwgJiYgcy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5X2hpbnQgIT0gTlVMTCkKKwkJewogCQlPUEVOU1NMX2ZyZWUocy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5X2hpbnQpOworCQlzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHlfaGludCA9IE5VTEw7CisJCX0KKwogCWlmIChpZGVudGl0eV9oaW50ICE9IE5VTEwpCiAJCXsKLQkJcy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5X2hpbnQgPSBCVUZfc3RyZHVwKGlkZW50aXR5X2hpbnQpOwotCQlpZiAocy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5X2hpbnQgPT0gTlVMTCkKLQkJCXJldHVybiAwOworCQkvKiBUaGUgaGludCBpcyBzdG9yZWQgaW4gU1NMIGFuZCBTU0xfU0VTU0lPTiB3aXRoIHRoZSBvbmUgaW4KKwkJICogU1NMX1NFU1NJT04gdGFraW5nIHByZWNlZGVuY2UuIFRodXMsIGlmIFNTTF9TRVNTSU9OIGlzIGF2YWlhYmxlLAorCQkgKiB3ZSBzdG9yZSB0aGUgaGludCB0aGVyZSwgb3RoZXJ3aXNlIHdlIHN0b3JlIGl0IGluIFNTTC4gKi8KKwkJaWYgKHMtPnNlc3Npb24gIT0gTlVMTCkKKwkJCXsKKwkJCXMtPnNlc3Npb24tPnBza19pZGVudGl0eV9oaW50ID0gQlVGX3N0cmR1cChpZGVudGl0eV9oaW50KTsKKwkJCWlmIChzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHlfaGludCA9PSBOVUxMKQorCQkJCXJldHVybiAwOworCQkJfQorCQllbHNlCisJCQl7CisJCQlzLT5wc2tfaWRlbnRpdHlfaGludCA9IEJVRl9zdHJkdXAoaWRlbnRpdHlfaGludCk7CisJCQlpZiAocy0+cHNrX2lkZW50aXR5X2hpbnQgPT0gTlVMTCkKKwkJCQlyZXR1cm4gMDsKKwkJCX0KIAkJfQotCWVsc2UKLQkJcy0+c2Vzc2lvbi0+cHNrX2lkZW50aXR5X2hpbnQgPSBOVUxMOwogCXJldHVybiAxOwogCX0KIAogY29uc3QgY2hhciAqU1NMX2dldF9wc2tfaWRlbnRpdHlfaGludChjb25zdCBTU0wgKnMpCiAJewotCWlmIChzID09IE5VTEwgfHwgcy0+c2Vzc2lvbiA9PSBOVUxMKQorCWlmIChzID09IE5VTEwpCiAJCXJldHVybiBOVUxMOwotCXJldHVybihzLT5zZXNzaW9uLT5wc2tfaWRlbnRpdHlfaGludCk7CisJLyogVGhlIGhpbnQgaXMgc3RvcmVkIGluIFNTTCBhbmQgU1NMX1NFU1NJT04gd2l0aCB0aGUgb25lIGluIFNTTF9TRVNTSU9OCisJICogdGFraW5nIHByZWNlZGVuY2UuICovCisJaWYgKHMtPnNlc3Npb24gIT0gTlVMTCkKKwkJcmV0dXJuKHMtPnNlc3Npb24tPnBza19pZGVudGl0eV9oaW50KTsKKwlyZXR1cm4ocy0+cHNrX2lkZW50aXR5X2hpbnQpOwogCX0KIAogY29uc3QgY2hhciAqU1NMX2dldF9wc2tfaWRlbnRpdHkoY29uc3QgU1NMICpzKQpAQCAtMzQxNSwxMiArMzQ1Nyw0MSBAQAogCQlzLT52ZXJzaW9uID49IFNTTDNfVkVSU0lPTiAmJgogCQlzLT5zMy0+aW5fcmVhZF9hcHBfZGF0YSA9PSAwICYmICAgLyogY3V0dGhyb3VnaCBvbmx5IGFwcGxpZXMgdG8gd3JpdGUoKSAqLwogCQkoU1NMX2dldF9tb2RlKChTU0wqKXMpICYgU1NMX01PREVfSEFORFNIQUtFX0NVVFRIUk9VR0gpICYmICAvKiBjdXR0aHJvdWdoIGVuYWJsZWQgKi8KLQkJU1NMX2dldF9jaXBoZXJfYml0cyhzLCBOVUxMKSA+PSAxMjggJiYgICAgICAgICAgICAgICAgICAgICAgLyogc3Ryb25nIGNpcGhlciBjaG9vc2VuICovCisJCXNzbDNfY2FuX2N1dHRocm91Z2gocykgJiYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGN1dHRocm91Z2ggYWxsb3dlZCAqLwogCQlzLT5zMy0+cHJldmlvdXNfc2VydmVyX2ZpbmlzaGVkX2xlbiA9PSAwICYmICAgICAgICAgICAgICAgICAvKiBub3QgYSByZW5lZ290aWF0aW9uIGhhbmRzaGFrZSAqLwogCQkocy0+c3RhdGUgPT0gU1NMM19TVF9DUl9TRVNTSU9OX1RJQ0tFVF9BIHx8ICAgICAgICAgICAgICAgICAvKiByZWFkeSB0byB3cml0ZSBhcHAtZGF0YSovCiAJCQlzLT5zdGF0ZSA9PSBTU0wzX1NUX0NSX0ZJTklTSEVEX0EpKTsKIAl9CiAKK2ludCBzc2wzX2Nhbl9jdXR0aHJvdWdoKGNvbnN0IFNTTCAqcykKKwl7CisJY29uc3QgU1NMX0NJUEhFUiAqYzsKKworCS8qIHJlcXVpcmUgYSBzdHJvbmcgZW5vdWdoIGNpcGhlciAqLworCWlmIChTU0xfZ2V0X2NpcGhlcl9iaXRzKHMsIE5VTEwpIDwgMTI4KQorCQlyZXR1cm4gMDsKKworCS8qIHJlcXVpcmUgQUxQTiBvciBOUE4gZXh0ZW5zaW9uICovCisJaWYgKCFzLT5zMy0+YWxwbl9zZWxlY3RlZAorI2lmbmRlZiBPUEVOU1NMX05PX05FWFRQUk9UT05FRworCQkmJiAhcy0+czMtPm5leHRfcHJvdG9fbmVnX3NlZW4KKyNlbmRpZgorCSkKKwkJeworCQlyZXR1cm4gMDsKKwkJfQorCisJLyogcmVxdWlyZSBhIGZvcndhcmQtc2VjcmV0IGNpcGhlciAqLworCWMgPSBTU0xfZ2V0X2N1cnJlbnRfY2lwaGVyKHMpOworCWlmICghYyB8fCAoYy0+YWxnb3JpdGhtX21rZXkgIT0gU1NMX2tFREggJiYKKwkJCWMtPmFsZ29yaXRobV9ta2V5ICE9IFNTTF9rRUVDREgpKQorCQl7CisJCXJldHVybiAwOworCQl9CisKKwlyZXR1cm4gMTsKKwl9CisKIC8qIEFsbG9jYXRlcyBuZXcgRVZQX01EX0NUWCBhbmQgc2V0cyBwb2ludGVyIHRvIGl0IGludG8gZ2l2ZW4gcG9pbnRlcgogICogdmFpcmFibGUsIGZyZWVpbmcgIEVWUF9NRF9DVFggcHJldmlvdXNseSBzdG9yZWQgaW4gdGhhdCB2YXJpYWJsZSwgaWYKICAqIGFueS4gSWYgRVZQX01EIHBvaW50ZXIgaXMgcGFzc2VkLCBpbml0aWFsaXplcyBjdHggd2l0aCB0aGlzIG1kCmRpZmYgLS1naXQgYS9zc2wvc3NsX2xvY2wuaCBiL3NzbC9zc2xfbG9jbC5oCmluZGV4IGY3OWFiMDAuLjZiNzczMWEgMTAwNjQ0Ci0tLSBhL3NzbC9zc2xfbG9jbC5oCisrKyBiL3NzbC9zc2xfbG9jbC5oCkBAIC0xMDcwLDYgKzEwNzAsNyBAQAogaW50IHRsczFfY2hhbmdlX2NpcGhlcl9zdGF0ZShTU0wgKnMsIGludCB3aGljaCk7CiBpbnQgdGxzMV9zZXR1cF9rZXlfYmxvY2soU1NMICpzKTsKIGludCB0bHMxX2VuYyhTU0wgKnMsIGludCBzbmQpOworaW50IHRsczFfaGFuZHNoYWtlX2RpZ2VzdChTU0wgKnMsIHVuc2lnbmVkIGNoYXIgKm91dCwgc2l6ZV90IG91dF9sZW4pOwogaW50IHRsczFfZmluYWxfZmluaXNoX21hYyhTU0wgKnMsCiAJY29uc3QgY2hhciAqc3RyLCBpbnQgc2xlbiwgdW5zaWduZWQgY2hhciAqcCk7CiBpbnQgdGxzMV9jZXJ0X3ZlcmlmeV9tYWMoU1NMICpzLCBpbnQgbWRfbmlkLCB1bnNpZ25lZCBjaGFyICpwKTsKQEAgLTExMjYsOCArMTEyNywxMCBAQAogY29uc3QgRVZQX01EICp0bHMxMl9nZXRfaGFzaCh1bnNpZ25lZCBjaGFyIGhhc2hfYWxnKTsKIAogaW50IHRsczFfY2hhbm5lbF9pZF9oYXNoKEVWUF9NRF9DVFggKmN0eCwgU1NMICpzKTsKK2ludCB0bHMxX3JlY29yZF9oYW5kc2hha2VfaGFzaGVzX2Zvcl9jaGFubmVsX2lkKFNTTCAqcyk7CiAjZW5kaWYKIAoraW50IHNzbDNfY2FuX2N1dHRocm91Z2goY29uc3QgU1NMICpzKTsKIEVWUF9NRF9DVFgqIHNzbF9yZXBsYWNlX2hhc2goRVZQX01EX0NUWCAqKmhhc2gsY29uc3QgRVZQX01EICptZCkgOwogdm9pZCBzc2xfY2xlYXJfaGFzaF9jdHgoRVZQX01EX0NUWCAqKmhhc2gpOwogaW50IHNzbF9hZGRfc2VydmVyaGVsbG9fcmVuZWdvdGlhdGVfZXh0KFNTTCAqcywgdW5zaWduZWQgY2hhciAqcCwgaW50ICpsZW4sCmRpZmYgLS1naXQgYS9zc2wvc3NsX3Nlc3MuYyBiL3NzbC9zc2xfc2Vzcy5jCmluZGV4IDkyMGI3NjMuLjdkMTcwODUgMTAwNjQ0Ci0tLSBhL3NzbC9zc2xfc2Vzcy5jCisrKyBiL3NzbC9zc2xfc2Vzcy5jCkBAIC00MjcsNiArNDI3LDE4IEBACiAJCQl9CiAjZW5kaWYKICNlbmRpZgorI2lmbmRlZiBPUEVOU1NMX05PX1BTSworCQlpZiAocy0+cHNrX2lkZW50aXR5X2hpbnQpCisJCQl7CisJCQlzcy0+cHNrX2lkZW50aXR5X2hpbnQgPSBCVUZfc3RyZHVwKHMtPnBza19pZGVudGl0eV9oaW50KTsKKwkJCWlmIChzcy0+cHNrX2lkZW50aXR5X2hpbnQgPT0gTlVMTCkKKwkJCQl7CisJCQkJU1NMZXJyKFNTTF9GX1NTTF9HRVRfTkVXX1NFU1NJT04sIEVSUl9SX01BTExPQ19GQUlMVVJFKTsKKwkJCQlTU0xfU0VTU0lPTl9mcmVlKHNzKTsKKwkJCQlyZXR1cm4gMDsKKwkJCQl9CisJCQl9CisjZW5kaWYKIAkJfQogCWVsc2UKIAkJewpAQCAtMTEzMiw2ICsxMTQ0LDE3IEBACiAJcmV0dXJuIGN0eC0+Y2xpZW50X2NlcnRfY2I7CiAJfQogCit2b2lkIFNTTF9DVFhfc2V0X2NoYW5uZWxfaWRfY2IoU1NMX0NUWCAqY3R4LAorCXZvaWQgKCpjYikoU1NMICpzc2wsIEVWUF9QS0VZICoqcGtleSkpCisJeworCWN0eC0+Y2hhbm5lbF9pZF9jYj1jYjsKKwl9CisKK3ZvaWQgKCpTU0xfQ1RYX2dldF9jaGFubmVsX2lkX2NiKFNTTF9DVFggKmN0eCkpKFNTTCAqIHNzbCwgRVZQX1BLRVkgKipwa2V5KQorCXsKKwlyZXR1cm4gY3R4LT5jaGFubmVsX2lkX2NiOworCX0KKwogI2lmbmRlZiBPUEVOU1NMX05PX0VOR0lORQogaW50IFNTTF9DVFhfc2V0X2NsaWVudF9jZXJ0X2VuZ2luZShTU0xfQ1RYICpjdHgsIEVOR0lORSAqZSkKIAl7CmRpZmYgLS1naXQgYS9zc2wvdDFfZW5jLmMgYi9zc2wvdDFfZW5jLmMKaW5kZXggNWM5ZjI2MS4uYjhkNDk3ZSAxMDA2NDQKLS0tIGEvc3NsL3QxX2VuYy5jCisrKyBiL3NzbC90MV9lbmMuYwpAQCAtODk1LDU0ICs4OTUsNzkgQEAKIAlyZXR1cm4oKGludClyZXQpOwogCX0KIAotaW50IHRsczFfZmluYWxfZmluaXNoX21hYyhTU0wgKnMsCi0JICAgICBjb25zdCBjaGFyICpzdHIsIGludCBzbGVuLCB1bnNpZ25lZCBjaGFyICpvdXQpCisvKiB0bHMxX2hhbmRzaGFrZV9kaWdlc3QgY2FsY3VsYXRlcyB0aGUgY3VycmVudCBoYW5kc2hha2UgaGFzaCBhbmQgd3JpdGVzIGl0IHRvCisgKiB8b3V0fCwgd2hpY2ggaGFzIHNwYWNlIGZvciB8b3V0X2xlbnwgYnl0ZXMuIEl0IHJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcworICogd3JpdHRlbiBvciAtMSBpbiB0aGUgZXZlbnQgb2YgYW4gZXJyb3IuIFRoaXMgZnVuY3Rpb24gd29ya3Mgb24gYSBjb3B5IG9mIHRoZQorICogdW5kZXJseWluZyBkaWdlc3RzIHNvIGNhbiBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgYW5kIHByaW9yIHRvIHRoZSBmaW5hbAorICogdXBkYXRlIGV0Yy4gKi8KK2ludCB0bHMxX2hhbmRzaGFrZV9kaWdlc3QoU1NMICpzLCB1bnNpZ25lZCBjaGFyICpvdXQsIHNpemVfdCBvdXRfbGVuKQogCXsKLQl1bnNpZ25lZCBpbnQgaTsKKwljb25zdCBFVlBfTUQgKm1kOwogCUVWUF9NRF9DVFggY3R4OwotCXVuc2lnbmVkIGNoYXIgYnVmWzIqRVZQX01BWF9NRF9TSVpFXTsKLQl1bnNpZ25lZCBjaGFyICpxLGJ1ZjJbMTJdOwotCWludCBpZHg7CisJaW50IGksIGVyciA9IDAsIGxlbiA9IDA7CiAJbG9uZyBtYXNrOwotCWludCBlcnI9MDsKLQljb25zdCBFVlBfTUQgKm1kOyAKLQotCXE9YnVmOwotCi0JaWYgKHMtPnMzLT5oYW5kc2hha2VfYnVmZmVyKSAKLQkJaWYgKCFzc2wzX2RpZ2VzdF9jYWNoZWRfcmVjb3JkcyhzKSkKLQkJCXJldHVybiAwOwogCiAJRVZQX01EX0NUWF9pbml0KCZjdHgpOwogCi0JZm9yIChpZHg9MDtzc2xfZ2V0X2hhbmRzaGFrZV9kaWdlc3QoaWR4LCZtYXNrLCZtZCk7aWR4KyspCisJZm9yIChpID0gMDsgc3NsX2dldF9oYW5kc2hha2VfZGlnZXN0KGksICZtYXNrLCAmbWQpOyBpKyspCiAJCXsKLQkJaWYgKG1hc2sgJiBzc2xfZ2V0X2FsZ29yaXRobTIocykpCisJCWludCBoYXNoX3NpemU7CisJCXVuc2lnbmVkIGludCBkaWdlc3RfbGVuOworCQlFVlBfTURfQ1RYICpoZGdzdCA9IHMtPnMzLT5oYW5kc2hha2VfZGdzdFtpXTsKKworCQlpZiAoKG1hc2sgJiBzc2xfZ2V0X2FsZ29yaXRobTIocykpID09IDApCisJCQljb250aW51ZTsKKworCQloYXNoX3NpemUgPSBFVlBfTURfc2l6ZShtZCk7CisJCWlmICghaGRnc3QgfHwgaGFzaF9zaXplIDwgMCB8fCAoc2l6ZV90KWhhc2hfc2l6ZSA+IG91dF9sZW4pCiAJCQl7Ci0JCQlpbnQgaGFzaHNpemUgPSBFVlBfTURfc2l6ZShtZCk7Ci0JCQlFVlBfTURfQ1RYICpoZGdzdCA9IHMtPnMzLT5oYW5kc2hha2VfZGdzdFtpZHhdOwotCQkJaWYgKCFoZGdzdCB8fCBoYXNoc2l6ZSA8IDAgfHwgaGFzaHNpemUgPiAoaW50KShzaXplb2YgYnVmIC0gKHNpemVfdCkocS1idWYpKSkKLQkJCQl7Ci0JCQkJLyogaW50ZXJuYWwgZXJyb3I6ICdidWYnIGlzIHRvbyBzbWFsbCBmb3IgdGhpcyBjaXBlcnN1aXRlISAqLwotCQkJCWVyciA9IDE7Ci0JCQkJfQotCQkJZWxzZQotCQkJCXsKLQkJCQlpZiAoIUVWUF9NRF9DVFhfY29weV9leCgmY3R4LCBoZGdzdCkgfHwKLQkJCQkJIUVWUF9EaWdlc3RGaW5hbF9leCgmY3R4LHEsJmkpIHx8Ci0JCQkJCShpICE9ICh1bnNpZ25lZCBpbnQpaGFzaHNpemUpKQotCQkJCQllcnIgPSAxOwotCQkJCXErPWhhc2hzaXplOwotCQkJCX0KKwkJCWVyciA9IDE7CisJCQlicmVhazsKIAkJCX0KKworCQlpZiAoIUVWUF9NRF9DVFhfY29weV9leCgmY3R4LCBoZGdzdCkgfHwKKwkJICAgICFFVlBfRGlnZXN0RmluYWxfZXgoJmN0eCwgb3V0LCAmZGlnZXN0X2xlbikgfHwKKwkJICAgIGRpZ2VzdF9sZW4gIT0gKHVuc2lnbmVkIGludCloYXNoX3NpemUpIC8qIGludGVybmFsIGVycm9yICovCisJCQl7CisJCQllcnIgPSAxOworCQkJYnJlYWs7CisJCQl9CisJCW91dCArPSBkaWdlc3RfbGVuOworCQlvdXRfbGVuIC09IGRpZ2VzdF9sZW47CisJCWxlbiArPSBkaWdlc3RfbGVuOwogCQl9Ci0JCQorCisJRVZQX01EX0NUWF9jbGVhbnVwKCZjdHgpOworCisJaWYgKGVyciAhPSAwKQorCQlyZXR1cm4gLTE7CisJcmV0dXJuIGxlbjsKKwl9CisKK2ludCB0bHMxX2ZpbmFsX2ZpbmlzaF9tYWMoU1NMICpzLAorCSAgICAgY29uc3QgY2hhciAqc3RyLCBpbnQgc2xlbiwgdW5zaWduZWQgY2hhciAqb3V0KQorCXsKKwl1bnNpZ25lZCBjaGFyIGJ1ZlsyKkVWUF9NQVhfTURfU0laRV07CisJdW5zaWduZWQgY2hhciBidWYyWzEyXTsKKwlpbnQgZXJyPTA7CisJaW50IGRpZ2VzdHNfbGVuOworCisJaWYgKHMtPnMzLT5oYW5kc2hha2VfYnVmZmVyKQorCQlpZiAoIXNzbDNfZGlnZXN0X2NhY2hlZF9yZWNvcmRzKHMpKQorCQkJcmV0dXJuIDA7CisKKwlkaWdlc3RzX2xlbiA9IHRsczFfaGFuZHNoYWtlX2RpZ2VzdChzLCBidWYsIHNpemVvZihidWYpKTsKKwlpZiAoZGlnZXN0c19sZW4gPCAwKQorCQl7CisJCWVyciA9IDE7CisJCWRpZ2VzdHNfbGVuID0gMDsKKwkJfQorCiAJaWYgKCF0bHMxX1BSRihzc2xfZ2V0X2FsZ29yaXRobTIocyksCi0JCQlzdHIsc2xlbiwgYnVmLChpbnQpKHEtYnVmKSwgTlVMTCwwLCBOVUxMLDAsIE5VTEwsMCwKKwkJCXN0cixzbGVuLCBidWYsIGRpZ2VzdHNfbGVuLCBOVUxMLDAsIE5VTEwsMCwgTlVMTCwwLAogCQkJcy0+c2Vzc2lvbi0+bWFzdGVyX2tleSxzLT5zZXNzaW9uLT5tYXN0ZXJfa2V5X2xlbmd0aCwKIAkJCW91dCxidWYyLHNpemVvZiBidWYyKSkKIAkJZXJyID0gMTsKLQlFVlBfTURfQ1RYX2NsZWFudXAoJmN0eCk7CiAKIAlpZiAoZXJyKQogCQlyZXR1cm4gMDsKQEAgLTk4Niw3ICsxMDExLDggQEAKIAkJfQogCQllbHNlCiAJCXsKLQkJCUVWUF9NRF9DVFhfY29weSgmaG1hYyxoYXNoKTsKKwkJCWlmICghRVZQX01EX0NUWF9jb3B5KCZobWFjLGhhc2gpKQorCQkJCXJldHVybiAtMTsKIAkJCW1hY19jdHggPSAmaG1hYzsKIAkJfQogCkBAIC0xMDQ3LDE0ICsxMDczLDEwIEBACiAJaWYgKCFzdHJlYW1fbWFjKQogCQlFVlBfTURfQ1RYX2NsZWFudXAoJmhtYWMpOwogI2lmZGVmIFRMU19ERUJVRwotcHJpbnRmKCJzZWM9Iik7Ci17dW5zaWduZWQgaW50IHo7IGZvciAoej0wOyB6PG1kX3NpemU7IHorKykgcHJpbnRmKCIlMDJYICIsbWFjX3NlY1t6XSk7IHByaW50ZigiXG4iKTsgfQogcHJpbnRmKCJzZXE9Iik7CiB7aW50IHo7IGZvciAoej0wOyB6PDg7IHorKykgcHJpbnRmKCIlMDJYICIsc2VxW3pdKTsgcHJpbnRmKCJcbiIpOyB9Ci1wcmludGYoImJ1Zj0iKTsKLXtpbnQgejsgZm9yICh6PTA7IHo8NTsgeisrKSBwcmludGYoIiUwMlggIixidWZbel0pOyBwcmludGYoIlxuIik7IH0KIHByaW50ZigicmVjPSIpOwote3Vuc2lnbmVkIGludCB6OyBmb3IgKHo9MDsgejxyZWMtPmxlbmd0aDsgeisrKSBwcmludGYoIiUwMlggIixidWZbel0pOyBwcmludGYoIlxuIik7IH0KK3t1bnNpZ25lZCBpbnQgejsgZm9yICh6PTA7IHo8cmVjLT5sZW5ndGg7IHorKykgcHJpbnRmKCIlMDJYICIscmVjLT5kYXRhW3pdKTsgcHJpbnRmKCJcbiIpOyB9CiAjZW5kaWYKIAogCWlmIChzc2wtPnZlcnNpb24gIT0gRFRMUzFfVkVSU0lPTiAmJiBzc2wtPnZlcnNpb24gIT0gRFRMUzFfQkFEX1ZFUikKQEAgLTExODQsNyArMTIwNiw3IEBACiAJaWYgKG1lbWNtcCh2YWwsIFRMU19NRF9LRVlfRVhQQU5TSU9OX0NPTlNULAogCQkgVExTX01EX0tFWV9FWFBBTlNJT05fQ09OU1RfU0laRSkgPT0gMCkgZ290byBlcnIxOwogCi0JcnYgPSB0bHMxX1BSRihzLT5zMy0+dG1wLm5ld19jaXBoZXItPmFsZ29yaXRobTIsCisJcnYgPSB0bHMxX1BSRihzc2xfZ2V0X2FsZ29yaXRobTIocyksCiAJCSAgICAgIHZhbCwgdmFsbGVuLAogCQkgICAgICBOVUxMLCAwLAogCQkgICAgICBOVUxMLCAwLApkaWZmIC0tZ2l0IGEvc3NsL3QxX2xpYi5jIGIvc3NsL3QxX2xpYi5jCmluZGV4IGViYTczMmYuLjEyMmEyNWYgMTAwNjQ0Ci0tLSBhL3NzbC90MV9saWIuYworKysgYi9zc2wvdDFfbGliLmMKQEAgLTYxNyw2ICs2MTcsOCBAQAogCiAjaWZuZGVmIE9QRU5TU0xfTk9fSEVBUlRCRUFUUwogCS8qIEFkZCBIZWFydGJlYXQgZXh0ZW5zaW9uICovCisJaWYgKChsaW1pdCAtIHJldCAtIDQgLSAxKSA8IDApCisJCXJldHVybiBOVUxMOwogCXMybihUTFNFWFRfVFlQRV9oZWFydGJlYXQscmV0KTsKIAlzMm4oMSxyZXQpOwogCS8qIFNldCBtb2RlOgpAQCAtNjQ3LDcgKzY0OSwxMCBAQAogCQkgKiBzdXBwb3J0IGZvciBDaGFubmVsIElELiAqLwogCQlpZiAobGltaXQgLSByZXQgLSA0IDwgMCkKIAkJCXJldHVybiBOVUxMOwotCQlzMm4oVExTRVhUX1RZUEVfY2hhbm5lbF9pZCxyZXQpOworCQlpZiAocy0+Y3R4LT50bHNleHRfY2hhbm5lbF9pZF9lbmFibGVkX25ldykKKwkJCXMybihUTFNFWFRfVFlQRV9jaGFubmVsX2lkX25ldyxyZXQpOworCQllbHNlCisJCQlzMm4oVExTRVhUX1RZUEVfY2hhbm5lbF9pZCxyZXQpOwogCQlzMm4oMCxyZXQpOwogCQl9CiAKQEAgLTY4MywzMSArNjg4LDM1IEBACiAgICAgICAgICAgICAgICAgcmV0ICs9IGVsOwogICAgICAgICAgICAgICAgIH0KICNlbmRpZgotCiAJLyogQWRkIHBhZGRpbmcgdG8gd29ya2Fyb3VuZCBidWdzIGluIEY1IHRlcm1pbmF0b3JzLgotCSAqIFNlZSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtYWdsLXRscy1wYWRkaW5nLTAyICovCi0JewotCWludCBobGVuID0gcmV0IC0gKHVuc2lnbmVkIGNoYXIgKilzLT5pbml0X2J1Zi0+ZGF0YTsKLQkvKiBUaGUgY29kZSBpbiBzMjNfY2xudC5jIHRvIGJ1aWxkIENsaWVudEhlbGxvIG1lc3NhZ2VzIGluY2x1ZGVzIHRoZQotCSAqIDUtYnl0ZSByZWNvcmQgaGVhZGVyIGluIHRoZSBidWZmZXIsIHdoaWxlIHRoZSBjb2RlIGluIHMzX2NsbnQuYyBkb2VzCi0JICogbm90LiAqLwotCWlmIChzLT5zdGF0ZSA9PSBTU0wyM19TVF9DV19DTE5UX0hFTExPX0EpCi0JCWhsZW4gLT0gNTsKLQlpZiAoaGxlbiA+IDB4ZmYgJiYgaGxlbiA8IDB4MjAwKQorCSAqIFNlZSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtYWdsLXRscy1wYWRkaW5nLTAzCisJICoKKwkgKiBOQjogYmVjYXVzZSB0aGlzIGNvZGUgd29ya3Mgb3V0IHRoZSBsZW5ndGggb2YgYWxsIGV4aXN0aW5nCisJICogZXh0ZW5zaW9ucyBpdCBNVVNUIGFsd2F5cyBhcHBlYXIgbGFzdC4KKwkgKi8KKwlpZiAocy0+b3B0aW9ucyAmIFNTTF9PUF9UTFNFWFRfUEFERElORykKIAkJewotCQlobGVuID0gMHgyMDAgLSBobGVuOwotCQlpZiAoaGxlbiA+PSA0KQotCQkJaGxlbiAtPSA0OwotCQllbHNlCi0JCQlobGVuID0gMDsKKwkJaW50IGhsZW4gPSByZXQgLSAodW5zaWduZWQgY2hhciAqKXMtPmluaXRfYnVmLT5kYXRhOworCQkvKiBUaGUgY29kZSBpbiBzMjNfY2xudC5jIHRvIGJ1aWxkIENsaWVudEhlbGxvIG1lc3NhZ2VzCisJCSAqIGluY2x1ZGVzIHRoZSA1LWJ5dGUgcmVjb3JkIGhlYWRlciBpbiB0aGUgYnVmZmVyLCB3aGlsZQorCQkgKiB0aGUgY29kZSBpbiBzM19jbG50LmMgZG9lcyBub3QuCisJCSAqLworCQlpZiAocy0+c3RhdGUgPT0gU1NMMjNfU1RfQ1dfQ0xOVF9IRUxMT19BKQorCQkJaGxlbiAtPSA1OworCQlpZiAoaGxlbiA+IDB4ZmYgJiYgaGxlbiA8IDB4MjAwKQorCQkJeworCQkJaGxlbiA9IDB4MjAwIC0gaGxlbjsKKwkJCWlmIChobGVuID49IDQpCisJCQkJaGxlbiAtPSA0OworCQkJZWxzZQorCQkJCWhsZW4gPSAwOwogCi0JCXMybihUTFNFWFRfVFlQRV9wYWRkaW5nLCByZXQpOwotCQlzMm4oaGxlbiwgcmV0KTsKLQkJbWVtc2V0KHJldCwgMCwgaGxlbik7Ci0JCXJldCArPSBobGVuOworCQkJczJuKFRMU0VYVF9UWVBFX3BhZGRpbmcsIHJldCk7CisJCQlzMm4oaGxlbiwgcmV0KTsKKwkJCW1lbXNldChyZXQsIDAsIGhsZW4pOworCQkJcmV0ICs9IGhsZW47CisJCQl9CiAJCX0KLQl9Ci0KIAogCWlmICgoZXh0ZGF0YWxlbiA9IHJldC1wLTIpPT0gMCkgCiAJCXJldHVybiBwOwpAQCAtODYyLDYgKzg3MSw4IEBACiAJLyogQWRkIEhlYXJ0YmVhdCBleHRlbnNpb24gaWYgd2UndmUgcmVjZWl2ZWQgb25lICovCiAJaWYgKHMtPnRsc2V4dF9oZWFydGJlYXQgJiBTU0xfVExTRVhUX0hCX0VOQUJMRUQpCiAJCXsKKwkJaWYgKChsaW1pdCAtIHJldCAtIDQgLSAxKSA8IDApCisJCQlyZXR1cm4gTlVMTDsKIAkJczJuKFRMU0VYVF9UWVBFX2hlYXJ0YmVhdCxyZXQpOwogCQlzMm4oMSxyZXQpOwogCQkvKiBTZXQgbW9kZToKQEAgLTkwNCw3ICs5MTUsMTAgQEAKIAkJewogCQlpZiAobGltaXQgLSByZXQgLSA0IDwgMCkKIAkJCXJldHVybiBOVUxMOwotCQlzMm4oVExTRVhUX1RZUEVfY2hhbm5lbF9pZCxyZXQpOworCQlpZiAocy0+czMtPnRsc2V4dF9jaGFubmVsX2lkX25ldykKKwkJCXMybihUTFNFWFRfVFlQRV9jaGFubmVsX2lkX25ldyxyZXQpOworCQllbHNlCisJCQlzMm4oVExTRVhUX1RZUEVfY2hhbm5lbF9pZCxyZXQpOwogCQlzMm4oMCxyZXQpOwogCQl9CiAKQEAgLTE0MTIsNyArMTQyNiw3IEBACiAJCQl0bHMxX3Byb2Nlc3Nfc2lnYWxncyhzLCBkYXRhLCBkc2l6ZSk7CiAJCQl9CiAJCWVsc2UgaWYgKHR5cGUgPT0gVExTRVhUX1RZUEVfc3RhdHVzX3JlcXVlc3QgJiYKLQkJICAgICAgICAgcy0+dmVyc2lvbiAhPSBEVExTMV9WRVJTSU9OICYmIHMtPmN0eC0+dGxzZXh0X3N0YXR1c19jYikKKwkJICAgICAgICAgcy0+dmVyc2lvbiAhPSBEVExTMV9WRVJTSU9OKQogCQkJewogCQkKIAkJCWlmIChzaXplIDwgNSkgCkBAIC0xNTY3LDYgKzE1ODEsMTMgQEAKIAkJZWxzZSBpZiAodHlwZSA9PSBUTFNFWFRfVFlQRV9jaGFubmVsX2lkICYmIHMtPnRsc2V4dF9jaGFubmVsX2lkX2VuYWJsZWQpCiAJCQlzLT5zMy0+dGxzZXh0X2NoYW5uZWxfaWRfdmFsaWQgPSAxOwogCisJCWVsc2UgaWYgKHR5cGUgPT0gVExTRVhUX1RZUEVfY2hhbm5lbF9pZF9uZXcgJiYKKwkJCSBzLT50bHNleHRfY2hhbm5lbF9pZF9lbmFibGVkKQorCQkJeworCQkJcy0+czMtPnRsc2V4dF9jaGFubmVsX2lkX3ZhbGlkID0gMTsKKwkJCXMtPnMzLT50bHNleHRfY2hhbm5lbF9pZF9uZXcgPSAxOworCQkJfQorCiAJCWVsc2UgaWYgKHR5cGUgPT0gVExTRVhUX1RZUEVfYXBwbGljYXRpb25fbGF5ZXJfcHJvdG9jb2xfbmVnb3RpYXRpb24gJiYKIAkJCSBzLT5jdHgtPmFscG5fc2VsZWN0X2NiICYmCiAJCQkgcy0+czMtPnRtcC5maW5pc2hfbWRfbGVuID09IDApCkBAIC0xODE2LDYgKzE4MzcsMTIgQEAKIAkJZWxzZSBpZiAodHlwZSA9PSBUTFNFWFRfVFlQRV9jaGFubmVsX2lkKQogCQkJcy0+czMtPnRsc2V4dF9jaGFubmVsX2lkX3ZhbGlkID0gMTsKIAorCQllbHNlIGlmICh0eXBlID09IFRMU0VYVF9UWVBFX2NoYW5uZWxfaWRfbmV3KQorCQkJeworCQkJcy0+czMtPnRsc2V4dF9jaGFubmVsX2lkX3ZhbGlkID0gMTsKKwkJCXMtPnMzLT50bHNleHRfY2hhbm5lbF9pZF9uZXcgPSAxOworCQkJfQorCiAJCWVsc2UgaWYgKHR5cGUgPT0gVExTRVhUX1RZUEVfYXBwbGljYXRpb25fbGF5ZXJfcHJvdG9jb2xfbmVnb3RpYXRpb24pCiAJCQl7CiAJCQl1bnNpZ25lZCBsZW47CkBAIC0yNzQ0LDE2ICsyNzcxLDIwIEBACiAJdW5zaWduZWQgaW50IHBheWxvYWQ7CiAJdW5zaWduZWQgaW50IHBhZGRpbmcgPSAxNjsgLyogVXNlIG1pbmltdW0gcGFkZGluZyAqLwogCi0JLyogUmVhZCB0eXBlIGFuZCBwYXlsb2FkIGxlbmd0aCBmaXJzdCAqLwotCWhidHlwZSA9ICpwKys7Ci0JbjJzKHAsIHBheWxvYWQpOwotCXBsID0gcDsKLQogCWlmIChzLT5tc2dfY2FsbGJhY2spCiAJCXMtPm1zZ19jYWxsYmFjaygwLCBzLT52ZXJzaW9uLCBUTFMxX1JUX0hFQVJUQkVBVCwKIAkJCSZzLT5zMy0+cnJlYy5kYXRhWzBdLCBzLT5zMy0+cnJlYy5sZW5ndGgsCiAJCQlzLCBzLT5tc2dfY2FsbGJhY2tfYXJnKTsKIAorCS8qIFJlYWQgdHlwZSBhbmQgcGF5bG9hZCBsZW5ndGggZmlyc3QgKi8KKwlpZiAoMSArIDIgKyAxNiA+IHMtPnMzLT5ycmVjLmxlbmd0aCkKKwkJcmV0dXJuIDA7IC8qIHNpbGVudGx5IGRpc2NhcmQgKi8KKwloYnR5cGUgPSAqcCsrOworCW4ycyhwLCBwYXlsb2FkKTsKKwlpZiAoMSArIDIgKyBwYXlsb2FkICsgMTYgPiBzLT5zMy0+cnJlYy5sZW5ndGgpCisJCXJldHVybiAwOyAvKiBzaWxlbnRseSBkaXNjYXJkIHBlciBSRkMgNjUyMCBzZWMuIDQgKi8KKwlwbCA9IHA7CisKIAlpZiAoaGJ0eXBlID09IFRMUzFfSEJfUkVRVUVTVCkKIAkJewogCQl1bnNpZ25lZCBjaGFyICpidWZmZXIsICpicDsKQEAgLTI4OTksNiArMjkzMCwxNyBAQAogCiAJRVZQX0RpZ2VzdFVwZGF0ZShtZCwga0NsaWVudElETWFnaWMsIHNpemVvZihrQ2xpZW50SURNYWdpYykpOwogCisJaWYgKHMtPmhpdCAmJiBzLT5zMy0+dGxzZXh0X2NoYW5uZWxfaWRfbmV3KQorCQl7CisJCXN0YXRpYyBjb25zdCBjaGFyIGtSZXN1bXB0aW9uTWFnaWNbXSA9ICJSZXN1bXB0aW9uIjsKKwkJRVZQX0RpZ2VzdFVwZGF0ZShtZCwga1Jlc3VtcHRpb25NYWdpYywKKwkJCQkgc2l6ZW9mKGtSZXN1bXB0aW9uTWFnaWMpKTsKKwkJaWYgKHMtPnNlc3Npb24tPm9yaWdpbmFsX2hhbmRzaGFrZV9oYXNoX2xlbiA9PSAwKQorCQkJcmV0dXJuIDA7CisJCUVWUF9EaWdlc3RVcGRhdGUobWQsIHMtPnNlc3Npb24tPm9yaWdpbmFsX2hhbmRzaGFrZV9oYXNoLAorCQkJCSBzLT5zZXNzaW9uLT5vcmlnaW5hbF9oYW5kc2hha2VfaGFzaF9sZW4pOworCQl9CisKIAlFVlBfTURfQ1RYX2luaXQoJmN0eCk7CiAJZm9yIChpID0gMDsgaSA8IFNTTF9NQVhfRElHRVNUOyBpKyspCiAJCXsKQEAgLTI5MTMsMyArMjk1NSwyOSBAQAogCXJldHVybiAxOwogCX0KICNlbmRpZgorCisvKiB0bHMxX3JlY29yZF9oYW5kc2hha2VfaGFzaGVzX2Zvcl9jaGFubmVsX2lkIHJlY29yZHMgdGhlIGN1cnJlbnQgaGFuZHNoYWtlCisgKiBoYXNoZXMgaW4gfHMtPnNlc3Npb258IHNvIHRoYXQgQ2hhbm5lbCBJRCByZXN1bXB0aW9ucyBjYW4gc2lnbiB0aGF0IGRhdGEuICovCitpbnQgdGxzMV9yZWNvcmRfaGFuZHNoYWtlX2hhc2hlc19mb3JfY2hhbm5lbF9pZChTU0wgKnMpCisJeworCWludCBkaWdlc3RfbGVuOworCS8qIFRoaXMgZnVuY3Rpb24gc2hvdWxkIG5ldmVyIGJlIGNhbGxlZCBmb3IgYSByZXN1bWVkIHNlc3Npb24gYmVjYXVzZQorCSAqIHRoZSBoYW5kc2hha2UgaGFzaGVzIHRoYXQgd2Ugd2lzaCB0byByZWNvcmQgYXJlIGZvciB0aGUgb3JpZ2luYWwsCisJICogZnVsbCBoYW5kc2hha2UuICovCisJaWYgKHMtPmhpdCkKKwkJcmV0dXJuIC0xOworCS8qIEl0IG9ubHkgbWFrZXMgc2Vuc2UgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIGlmIENoYW5uZWwgSURzIGhhdmUgYmVlbgorCSAqIG5lZ290aWF0ZWQuICovCisJaWYgKCFzLT5zMy0+dGxzZXh0X2NoYW5uZWxfaWRfbmV3KQorCQlyZXR1cm4gLTE7CisKKwlkaWdlc3RfbGVuID0gdGxzMV9oYW5kc2hha2VfZGlnZXN0KAorCQlzLCBzLT5zZXNzaW9uLT5vcmlnaW5hbF9oYW5kc2hha2VfaGFzaCwKKwkJc2l6ZW9mKHMtPnNlc3Npb24tPm9yaWdpbmFsX2hhbmRzaGFrZV9oYXNoKSk7CisJaWYgKGRpZ2VzdF9sZW4gPCAwKQorCQlyZXR1cm4gLTE7CisKKwlzLT5zZXNzaW9uLT5vcmlnaW5hbF9oYW5kc2hha2VfaGFzaF9sZW4gPSBkaWdlc3RfbGVuOworCisJcmV0dXJuIDE7CisJfQpkaWZmIC0tZ2l0IGEvc3NsL3RsczEuaCBiL3NzbC90bHMxLmgKaW5kZXggODY1MDdkNy4uZGMzNmY3OSAxMDA2NDQKLS0tIGEvc3NsL3RsczEuaAorKysgYi9zc2wvdGxzMS5oCkBAIC0yMzMsNiArMjMzLDEyIEBACiAvKiBFeHRlbnNpb25UeXBlIHZhbHVlIGZyb20gUkZDNTYyMCAqLwogI2RlZmluZSBUTFNFWFRfVFlQRV9oZWFydGJlYXQJMTUKIAorLyogRXh0ZW5zaW9uVHlwZSB2YWx1ZSBmb3IgVExTIHBhZGRpbmcgZXh0ZW5zaW9uLgorICogaHR0cDovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy90bHMtZXh0ZW5zaW9udHlwZS12YWx1ZXMvdGxzLWV4dGVuc2lvbnR5cGUtdmFsdWVzLnhodG1sCisgKiBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1hZ2wtdGxzLXBhZGRpbmctMDMKKyAqLworI2RlZmluZSBUTFNFWFRfVFlQRV9wYWRkaW5nCTIxCisKIC8qIEV4dGVuc2lvblR5cGUgdmFsdWUgZnJvbSBkcmFmdC1pZXRmLXRscy1hcHBsYXllcnByb3RvbmVnLTAwICovCiAjZGVmaW5lIFRMU0VYVF9UWVBFX2FwcGxpY2F0aW9uX2xheWVyX3Byb3RvY29sX25lZ290aWF0aW9uIDE2CiAKQEAgLTI1NiwxMCArMjYyLDcgQEAKIAogLyogVGhpcyBpcyBub3QgYW4gSUFOQSBkZWZpbmVkIGV4dGVuc2lvbiBudW1iZXIgKi8KICNkZWZpbmUgVExTRVhUX1RZUEVfY2hhbm5lbF9pZAkJCTMwMDMxCi0KLS8qIFNlZSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtYWdsLXRscy1wYWRkaW5nLTAyCi0gKiBOdW1iZXIgbm90IHlldCBJQU5BIGFzc2lnbmVkLiAqLwotI2RlZmluZSBUTFNFWFRfVFlQRV9wYWRkaW5nCQkJMzU2NTUKKyNkZWZpbmUgVExTRVhUX1RZUEVfY2hhbm5lbF9pZF9uZXcJCTMwMDMyCiAKIC8qIE5hbWVUeXBlIHZhbHVlIGZyb20gUkZDIDM1NDYgKi8KICNkZWZpbmUgVExTRVhUX05BTUVUWVBFX2hvc3RfbmFtZSAwCkBAIC01MzIsNiArNTM1LDEyIEBACiAjZGVmaW5lIFRMUzFfQ0tfRUNESF9SU0FfV0lUSF9BRVNfMTI4X0dDTV9TSEEyNTYgICAgICAgIDB4MDMwMEMwMzEKICNkZWZpbmUgVExTMV9DS19FQ0RIX1JTQV9XSVRIX0FFU18yNTZfR0NNX1NIQTM4NCAgICAgICAgMHgwMzAwQzAzMgogCisvKiBFQ0RIRSBQU0sgY2lwaGVyc3VpdGVzIGZyb20gUkZDNTQ4OQorICogU0hBLTIgY2lwaGVyIHN1aXRlcyBhcmUgb21pdHRlZCBiZWNhdXNlIHRoZXkgY2Fubm90IGJlIHVzZWQgc2FmZWx5IHdpdGgKKyAqIFNTTHYzLiAqLworI2RlZmluZSBUTFMxX0NLX0VDREhFX1BTS19XSVRIX0FFU18xMjhfQ0JDX1NIQSAgICAgICAgICAweDAzMDBDMDM1CisjZGVmaW5lIFRMUzFfQ0tfRUNESEVfUFNLX1dJVEhfQUVTXzI1Nl9DQkNfU0hBICAgICAgICAgIDB4MDMwMEMwMzYKKwogLyogWFhYCiAgKiBJbmNvbnNpc3RlbmN5IGFsZXJ0OgogICogVGhlIE9wZW5TU0wgbmFtZXMgb2YgY2lwaGVycyB3aXRoIGVwaGVtZXJhbCBESCBoZXJlIGluY2x1ZGUgdGhlIHN0cmluZwpAQCAtNjgzLDYgKzY5MiwxMCBAQAogI2RlZmluZSBUTFMxX1RYVF9FQ0RIX1JTQV9XSVRIX0FFU18xMjhfR0NNX1NIQTI1NiAgICAgICAiRUNESC1SU0EtQUVTMTI4LUdDTS1TSEEyNTYiCiAjZGVmaW5lIFRMUzFfVFhUX0VDREhfUlNBX1dJVEhfQUVTXzI1Nl9HQ01fU0hBMzg0ICAgICAgICJFQ0RILVJTQS1BRVMyNTYtR0NNLVNIQTM4NCIKIAorLyogRUNESEUgUFNLIGNpcGhlcnN1aXRlcyBmcm9tIFJGQzU0ODkgKi8KKyNkZWZpbmUgVExTMV9UWFRfRUNESEVfUFNLX1dJVEhfQUVTXzEyOF9DQkNfU0hBICAgICAgICAgIkVDREhFLVBTSy1BRVMxMjgtQ0JDLVNIQSIKKyNkZWZpbmUgVExTMV9UWFRfRUNESEVfUFNLX1dJVEhfQUVTXzI1Nl9DQkNfU0hBICAgICAgICAgIkVDREhFLVBTSy1BRVMyNTYtQ0JDLVNIQSIKKwogI2RlZmluZSBUTFNfQ1RfUlNBX1NJR04JCQkxCiAjZGVmaW5lIFRMU19DVF9EU1NfU0lHTgkJCTIKICNkZWZpbmUgVExTX0NUX1JTQV9GSVhFRF9ESAkJMwo=