From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from cantor2.suse.de ([195.135.220.15] helo=mx2.suse.de) by merlin.infradead.org with esmtps (Exim 4.76 #1 (Red Hat Linux)) id 1Stlza-0004vk-HL for kexec@lists.infradead.org; Tue, 24 Jul 2012 20:46:16 +0000 From: Petr Tesarik Subject: Re: [PATCH 1/3] makedumpfile: Xen4: determine Xen version Date: Tue, 24 Jul 2012 22:45:57 +0200 References: <201206221746.40036.Norbert.Trapp@ts.fujitsu.com> In-Reply-To: <201206221746.40036.Norbert.Trapp@ts.fujitsu.com> MIME-Version: 1.0 Message-Id: <201207242245.57351.ptesarik@suse.cz> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: kexec-bounces@lists.infradead.org Errors-To: kexec-bounces+dwmw2=infradead.org@lists.infradead.org To: kexec@lists.infradead.org, Norbert Trapp SGkgTm9yYmVydCBldCBhbCwKCnBsZWFzZSBmaW5kIG15IGNvbW1lbnRzIGJlbG93LgoKRG5lIFDD oSAyMi4gxI1lcnZuYSAyMDEyIDE3OjQ2OjM5IE5vcmJlcnQgVHJhcHAgbmFwc2FsKGEpOgo+IFRo ZSBjb3JlIGZpbGUgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHhlbiB2ZXJzaW9uLiBU aGUKPiBYZW4gdmVyc2lvbiBpcyBkZXRlcm1pbmVkIGFuZCBkaWZmZXJlbnQgZnVuY3Rpb25zIHdp bGwgYmUKPiBjYWxsZWQgZm9yIGRpZmZlcmVudCBYZW4gdmVyc2lvbnMuIEFkZGl0aW9uYWxseSBh IFhlbjMgcHJvYmxlbQo+IHdpdGggdGhlIHBhZ2VfaW5mbyBfZG9tYWluIG9mZnNldCBmb3IgeDg2 XzY0IGdldHMgcmVwYWlyZWQuCj4gCj4gSW4gWGVuMyB4ZW4vY29tbW9uL2tleGVjLmMgdGhlIHBh Z2VfaW5mbyBfZG9tYWluIG9mZnNldCB3YXMgc2V0IHdpdGg6Cj4gICAgIFZNQ09SRUlORk9fT0ZG U0VUX0FMSUFTKHBhZ2VfaW5mbywgdSwgX2RvbWFpbik7Cj4gd2hpY2ggaXMgd3JvbmcgZm9yIHg4 Nl9pbiBiZWNhdXNlIHRoZSBfZG9tYWluIGlzIGluIHVuaW9uIHYuCj4gKHhlbi9pbmNsdWRlL2Fz bS14ODYvbW0uaCkKPiBGb3IgWGVuMyBpbiBtYWtlZHVtcGZpbGUuYyB0aGUgb2Zmc2V0IGlzIHNp bXBseSBtb2RpZmllZCB0byAyNAo+IGZvciB4ODZfNjQuCj4gCj4gRm9yIFhlbjQgd2UgYXNrZWQg WGVuIGRldmVsb3BtZW50IHRvIHVzZToKPiAgICAgI2lmZGVmIF9faWE2NF9fCj4gCVZNQ09SRUlO Rk9fT0ZGU0VUX1NVQihwYWdlX2luZm8sIHUuaW51c2UsIF9kb21haW4pOwo+ICAgICAjZWxzZQo+ IAlWTUNPUkVJTkZPX09GRlNFVF9TVUIocGFnZV9pbmZvLCB2LmludXNlLCBfZG9tYWluKTsKPiAg ICAgI2VuZGlmCj4gCj4gU2lnbmVkLW9mZi1ieTogTm9yYmVydCBUcmFwcCA8bm9yYmVydC50cmFw cEB0cy5mdWppdHN1LmNvbT4KPiAtLS0KPiAgZWxmX2luZm8uYyAgICAgfCAgICAyICsKPiAgbWFr ZWR1bXBmaWxlLmMgfCAgIDkwCj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tLS0tLS0gbWFrZWR1bXBmaWxlLmggfCAKPiAgIDMgKysKPiAgMyBmaWxl cyBjaGFuZ2VkLCA3NCBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0t Z2l0IGEvZWxmX2luZm8uYyBiL2VsZl9pbmZvLmMKPiBpbmRleCBjZjQ3NmEzLi5lNzIzNzIwIDEw MDY0NAo+IC0tLSBhL2VsZl9pbmZvLmMKPiArKysgYi9lbGZfaW5mby5jCj4gQEAgLTE1OSw2ICsx NTksNyBAQCBjaGVja19lbGZfZm9ybWF0KGludCBmZCwgY2hhciAqZmlsZW5hbWUsIGludCAqcGhu dW0sCj4gdW5zaWduZWQgaW50ICpudW1fbG9hZCkgaWYgKChlaGRyNjQuZV9pZGVudFtFSV9DTEFT U10gPT0gRUxGQ0xBU1M2NCkKPiAgCSAgICAmJiAoZWhkcjMyLmVfaWRlbnRbRUlfQ0xBU1NdICE9 IEVMRkNMQVNTMzIpKSB7Cj4gIAkJKCpwaG51bSkgPSBlaGRyNjQuZV9waG51bTsKPiArCQlpbmZv LT5lbGZfbWFjaGluZSA9IGVoZHI2NC5lX21hY2hpbmU7Cj4gIAkJZm9yIChpID0gMDsgaSA8IGVo ZHI2NC5lX3BobnVtOyBpKyspIHsKPiAgCQkJaWYgKCFnZXRfZWxmNjRfcGhkcihmZCwgZmlsZW5h bWUsIGksICZsb2FkNjQpKSB7Cj4gIAkJCQlFUlJNU0coIkNhbid0IGZpbmQgUGhkciAlZC5cbiIs IGkpOwo+IEBAIC0xNzIsNiArMTczLDcgQEAgY2hlY2tfZWxmX2Zvcm1hdChpbnQgZmQsIGNoYXIg KmZpbGVuYW1lLCBpbnQgKnBobnVtLAo+IHVuc2lnbmVkIGludCAqbnVtX2xvYWQpIH0gZWxzZSBp ZiAoKGVoZHI2NC5lX2lkZW50W0VJX0NMQVNTXSAhPQo+IEVMRkNMQVNTNjQpCj4gIAkgICAgJiYg KGVoZHIzMi5lX2lkZW50W0VJX0NMQVNTXSA9PSBFTEZDTEFTUzMyKSkgewo+ICAJCSgqcGhudW0p ID0gZWhkcjMyLmVfcGhudW07Cj4gKwkJaW5mby0+ZWxmX21hY2hpbmUgPSBlaGRyMzIuZV9tYWNo aW5lOwo+ICAJCWZvciAoaSA9IDA7IGkgPCBlaGRyMzIuZV9waG51bTsgaSsrKSB7Cj4gIAkJCWlm ICghZ2V0X2VsZjMyX3BoZHIoZmQsIGZpbGVuYW1lLCBpLCAmbG9hZDMyKSkgewo+ICAJCQkJRVJS TVNHKCJDYW4ndCBmaW5kIFBoZHIgJWQuXG4iLCBpKTsKPiBkaWZmIC0tZ2l0IGEvbWFrZWR1bXBm aWxlLmMgYi9tYWtlZHVtcGZpbGUuYwo+IGluZGV4IGQwMjRlOTUuLjczOThmMTcgMTAwNjQ0Cj4g LS0tIGEvbWFrZWR1bXBmaWxlLmMKPiArKysgYi9tYWtlZHVtcGZpbGUuYwo+IEBAIC01MzAwLDEw ICs1MzAwLDcgQEAgZ2V0X3N0cnVjdHVyZV9pbmZvX3hlbih2b2lkKQo+ICB7Cj4gIAlTSVpFX0lO SVQocGFnZV9pbmZvLCAicGFnZV9pbmZvIik7Cj4gIAlPRkZTRVRfSU5JVChwYWdlX2luZm8uY291 bnRfaW5mbywgInBhZ2VfaW5mbyIsICJjb3VudF9pbmZvIik7Cj4gLQkvKgo+IC0JICogX2RvbWFp biBpcyB0aGUgZmlyc3QgbWVtYmVyIG9mIHVuaW9uIHUKPiAtCSAqLwo+IC0JT0ZGU0VUX0lOSVQo cGFnZV9pbmZvLl9kb21haW4sICJwYWdlX2luZm8iLCAidSIpOwo+ICsJT0ZGU0VUX0lOX1VOSU9O X0lOSVQocGFnZV9pbmZvLl9kb21haW4sICJwYWdlX2luZm8iLCAiX2RvbWFpbiIpOwoKVGhpcyBp cyBjbGV2ZXIsIGJlY2F1c2UgaXQgYWxzbyB3b3JrcyBmb3IgaWE2NCwgd2hpY2ggaGFzIGtlcHQg dGhlIF9kb21haW4gCmZpZWxkIGluIHVuaW9uICJ1Ii4gR29vZCEKCj4gCj4gIAlTSVpFX0lOSVQo ZG9tYWluLCAiZG9tYWluIik7Cj4gIAlPRkZTRVRfSU5JVChkb21haW4uZG9tYWluX2lkLCAiZG9t YWluIiwgImRvbWFpbl9pZCIpOwo+IEBAIC01MzEzLDYgKzUzMTAsNDEgQEAgZ2V0X3N0cnVjdHVy ZV9pbmZvX3hlbih2b2lkKQo+ICB9Cj4gCj4gIGludAo+ICtnZXRfeGVuX3ZlcnNpb24odm9pZCkK PiArewo+ICsJdW5zaWduZWQgbG9uZyAgIHhlbl9tYWpvcl92ZXJzaW9uOwo+ICsJdW5zaWduZWQg bG9uZyAgIHhlbl9taW5vcl92ZXJzaW9uOwo+ICsJb2ZmX3QgICAgICAgICAgIG9mZnNldF94ZW5f Y3Jhc2hfaW5mbzsKPiArCXVuc2lnbmVkIGxvbmcgICBzaXplX3hlbl9jcmFzaF9pbmZvOwo+ICsJ Y29uc3Qgb2ZmX3QgICAgIGZhaWxlZCA9IChvZmZfdCktMTsKPiArCj4gKwlnZXRfeGVuX2NyYXNo X2luZm8oJm9mZnNldF94ZW5fY3Jhc2hfaW5mbywgJnNpemVfeGVuX2NyYXNoX2luZm8pOwo+ICsJ aWYgKGluZm8tPnhlbl9tYWpvcl92ZXJzaW9uICYmIGluZm8tPnhlbl9taW5vcl92ZXJzaW9uKQo+ ICsJCXJldHVybiBUUlVFOwo+ICsKPiArCWlmIChsc2VlayhpbmZvLT5mZF9tZW1vcnksIG9mZnNl dF94ZW5fY3Jhc2hfaW5mbywgU0VFS19TRVQpID09IGZhaWxlZCkgewo+ICsJCUVSUk1TRygiQ2Fu J3Qgc2VlayB0aGUgZHVtcCBtZW1vcnkoJXMpLiAlc1xuIiwKPiArCQkgICAgaW5mby0+bmFtZV9t ZW1vcnksIHN0cmVycm9yKGVycm5vKSk7Cj4gKwkJcmV0dXJuIEZBTFNFOwo+ICsJfQo+ICsJaWYg KHJlYWQoaW5mby0+ZmRfbWVtb3J5LCAmeGVuX21ham9yX3ZlcnNpb24sIHNpemVvZih4ZW5fbWFq b3JfdmVyc2lvbikpCj4gKwkgICAgIT0gc2l6ZW9mKHhlbl9tYWpvcl92ZXJzaW9uKSkgewo+ICsJ CUVSUk1TRygiQ2FuJ3QgcmVhZCB0aGUgZHVtcCBtZW1vcnkoJXMpLiAlc1xuIiwKPiArCQkgICAg aW5mby0+bmFtZV9tZW1vcnksIHN0cmVycm9yKGVycm5vKSk7Cj4gKwkJcmV0dXJuIEZBTFNFOwo+ ICsJfQo+ICsJaWYgKHJlYWQoaW5mby0+ZmRfbWVtb3J5LCAmeGVuX21pbm9yX3ZlcnNpb24sIHNp emVvZih4ZW5fbWlub3JfdmVyc2lvbikpCj4gKwkgICAgIT0gc2l6ZW9mKHhlbl9tYWpvcl92ZXJz aW9uKSkgewo+ICsJCUVSUk1TRygiQ2FuJ3QgcmVhZCB0aGUgZHVtcCBtZW1vcnkoJXMpLiAlc1xu IiwKPiArCQkgICAgaW5mby0+bmFtZV9tZW1vcnksIHN0cmVycm9yKGVycm5vKSk7Cj4gKwkJcmV0 dXJuIEZBTFNFOwo+ICsJfQo+ICsJaW5mby0+eGVuX21ham9yX3ZlcnNpb24gPSB4ZW5fbWFqb3Jf dmVyc2lvbjsKPiArCWluZm8tPnhlbl9taW5vcl92ZXJzaW9uID0geGVuX21pbm9yX3ZlcnNpb247 Cj4gKwlyZXR1cm4gVFJVRTsKPiArfQoKTXkgcGF0Y2ggZG9lcyB0aGlzIGRpZmZlcmVudGx5LiBJ IHNvbWVob3cgZmVlbCB0aGF0IGl0IG1pZ2h0IGJlIGJldHRlciB0byAKZGVzY3JpYmUgdGhlIGRl ZmluaXRpb24gb2YgY3Jhc2hfeGVuX2luZm9fdCB3aXRoIGEgc3RydWN0LCBiZWNhdXNlIGl0IGhl bHBzIApvdGhlciBwZW9wbGUgdW5kZXJzdGFuZCB0aGUgIm1hZ2ljIiBiZWhpbmQgdGhlIGNyYXNo IG5vdGVzLiBPbiB0aGUgb3RoZXIgaGFuZCwgCkkgZW5kZWQgdXAgd2l0aCB0eXBlY2FzdGluZyBh IHZvaWQqLCBzbyBJIGRvbid0IGhhdmUgYSBzdHJvbmcgb3Bpbmlvbi4gSSdsbCAKdHJ5IHJld3Jp dGluZyBteSBwYXRjaCB3aXRoIGEgdW5pb24gYW5kIHNlZSBpZiB0aGF0IGxvb2tzIG5pY2VyLgoK Tm8gbWF0dGVyIGhvdyB3ZSBkbyBpdCwgd2UgbXVzdCBjaGVjayB0aGUgWGVuIHZlcnNpb24gZnJv bSBkaWZmZXJlbnQgcGxhY2VzLCAKc28gaXQgc2hvdWxkIGJlIHJlYWQgYW5kIHN0b3JlZCBzb21l d2hlcmUuCgo+ICsKPiAraW50Cj4gIGdldF94ZW5fcGh5c19zdGFydCh2b2lkKQo+ICB7Cj4gIAlv ZmZfdCBvZmZzZXQsIG9mZnNldF94ZW5fY3Jhc2hfaW5mbzsKPiBAQCAtNTM1MCwyMyArNTM4Miwy NSBAQCBnZXRfeGVuX2luZm8odm9pZCkKPiAgCXVuc2lnbmVkIGludCBkb21haW5faWQ7Cj4gIAlp bnQgbnVtX2RvbWFpbjsKPiAKPiAtCWlmIChTWU1CT0woYWxsb2NfYml0bWFwKSA9PSBOT1RfRk9V TkRfU1lNQk9MKSB7Cj4gLQkJRVJSTVNHKCJDYW4ndCBnZXQgdGhlIHN5bWJvbCBvZiBhbGxvY19i aXRtYXAuXG4iKTsKPiAtCQlyZXR1cm4gRkFMU0U7Cj4gLQl9Cj4gLQlpZiAoIXJlYWRtZW0oVkFE RFJfWEVOLCBTWU1CT0woYWxsb2NfYml0bWFwKSwgJmluZm8tPmFsbG9jX2JpdG1hcCwKPiAtCSAg ICAgIHNpemVvZihpbmZvLT5hbGxvY19iaXRtYXApKSkgewo+IC0JCUVSUk1TRygiQ2FuJ3QgZ2V0 IHRoZSB2YWx1ZSBvZiBhbGxvY19iaXRtYXAuXG4iKTsKPiAtCQlyZXR1cm4gRkFMU0U7Cj4gLQl9 Cj4gLQlpZiAoU1lNQk9MKG1heF9wYWdlKSA9PSBOT1RfRk9VTkRfU1lNQk9MKSB7Cj4gLQkJRVJS TVNHKCJDYW4ndCBnZXQgdGhlIHN5bWJvbCBvZiBtYXhfcGFnZS5cbiIpOwo+IC0JCXJldHVybiBG QUxTRTsKPiAtCX0KPiAtCWlmICghcmVhZG1lbShWQUREUl9YRU4sIFNZTUJPTChtYXhfcGFnZSks ICZpbmZvLT5tYXhfcGFnZSwKPiAtCSAgICBzaXplb2YoaW5mby0+bWF4X3BhZ2UpKSkgewo+IC0J CUVSUk1TRygiQ2FuJ3QgZ2V0IHRoZSB2YWx1ZSBvZiBtYXhfcGFnZS5cbiIpOwo+IC0JCXJldHVy biBGQUxTRTsKPiArCWlmIChpbmZvLT54ZW5fbWFqb3JfdmVyc2lvbiA8PSAzKSB7Cj4gKwkJaWYg KFNZTUJPTChhbGxvY19iaXRtYXApID09IE5PVF9GT1VORF9TWU1CT0wpIHsKPiArCQkJRVJSTVNH KCJDYW4ndCBnZXQgdGhlIHN5bWJvbCBvZiBhbGxvY19iaXRtYXAuXG4iKTsKPiArCQkJcmV0dXJu IEZBTFNFOwo+ICsJCX0KPiArCQlpZiAoIXJlYWRtZW0oVkFERFJfWEVOLCBTWU1CT0woYWxsb2Nf Yml0bWFwKSwgJmluZm8tPmFsbG9jX2JpdG1hcCwKPiArCQkgICAgICBzaXplb2YoaW5mby0+YWxs b2NfYml0bWFwKSkpIHsKPiArCQkJRVJSTVNHKCJDYW4ndCBnZXQgdGhlIHZhbHVlIG9mIGFsbG9j X2JpdG1hcC5cbiIpOwo+ICsJCQlyZXR1cm4gRkFMU0U7Cj4gKwkJfQo+ICsJCWlmIChTWU1CT0wo bWF4X3BhZ2UpID09IE5PVF9GT1VORF9TWU1CT0wpIHsKPiArCQkJRVJSTVNHKCJDYW4ndCBnZXQg dGhlIHN5bWJvbCBvZiBtYXhfcGFnZS5cbiIpOwo+ICsJCQlyZXR1cm4gRkFMU0U7Cj4gKwkJfQo+ ICsJCWlmICghcmVhZG1lbShWQUREUl9YRU4sIFNZTUJPTChtYXhfcGFnZSksICZpbmZvLT5tYXhf cGFnZSwKPiArCQkgICAgc2l6ZW9mKGluZm8tPm1heF9wYWdlKSkpIHsKPiArCQkJRVJSTVNHKCJD YW4ndCBnZXQgdGhlIHZhbHVlIG9mIG1heF9wYWdlLlxuIik7Cj4gKwkJCXJldHVybiBGQUxTRTsK PiArCQl9CgpNeSBwYXRjaCBkb2VzIHRoaXMgZGlmZmVyZW50bHkuIEluc3RlYWQgb2YgY2hlY2tp bmcgdGhlIFhlbiB2ZXJzaW9uIG51bWJlciwgCkknbSBjaGVja2luZyB0aGUgZXhpc3RlbmNlIG9m IHRoZSAiYWxsb2NfYml0bWFwIiBzeW1ib2wuIENoZWNraW5nIHRoZSB2ZXJzaW9uIApudW1iZXIg bG9va3MgY2xlYW5lciwgYmVjYXVzZSB3ZSBrbm93IHdoYXQgdG8gZXhwZWN0LgoKPiAgCX0KPiAK PiAgCS8qCj4gQEAgLTU1MDMsNiArNTUzNyw4IEBAIHNob3dfZGF0YV94ZW4odm9pZCkKPiAgCU1T RygiT0ZGU0VUKGRvbWFpbi5uZXh0X2luX2xpc3QpOiAlbGRcbiIsIE9GRlNFVChkb21haW4ubmV4 dF9pbl9saXN0KSk7Cj4gCj4gIAlNU0coIlxuIik7Cj4gKwlNU0coInhlbl9tYWpvcl92ZXJzaW9u OiAlbHhcbiIsIGluZm8tPnhlbl9tYWpvcl92ZXJzaW9uKTsKPiArCU1TRygieGVuX21pbm9yX3Zl cnNpb246ICVseFxuIiwgaW5mby0+eGVuX21pbm9yX3ZlcnNpb24pOwoKSSBkaWRuJ3QgaW5jbHVk ZSB0aGlzIGRlYnVnZ2luZyBpbmZvIGluIG15IHBhdGNoLCBidXQgaXQgbWF5IGJlIHZlcnkgdXNl ZnVsIGlmIAp3ZSBnZXQgdGhlIFhlbiB2ZXJzaW9uIHdyb25nIGZvciBhbnkgcmVhc29uLgoKPiAg CU1TRygieGVuX3BoeXNfc3RhcnQ6ICVseFxuIiwgaW5mby0+eGVuX3BoeXNfc3RhcnQpOwo+ICAJ TVNHKCJmcmFtZV90YWJsZV92YWRkcjogJWx4XG4iLCBpbmZvLT5mcmFtZV90YWJsZV92YWRkcik7 Cj4gIAlNU0coInhlbl9oZWFwX3N0YXJ0OiAlbHhcbiIsIGluZm8tPnhlbl9oZWFwX3N0YXJ0KTsK PiBAQCAtNTY0MCw2ICs1Njc2LDEyIEBAIHJlYWRfdm1jb3JlaW5mb194ZW4odm9pZCkKPiAKPiAg CVJFQURfTUVNQkVSX09GRlNFVCgicGFnZV9pbmZvLmNvdW50X2luZm8iLCBwYWdlX2luZm8uY291 bnRfaW5mbyk7Cj4gIAlSRUFEX01FTUJFUl9PRkZTRVQoInBhZ2VfaW5mby5fZG9tYWluIiwgcGFn ZV9pbmZvLl9kb21haW4pOwo+ICsJaWYgKGluZm8tPmVsZl9tYWNoaW5lID09IEVNX1g4Nl82NCkg ewo+ICsJCWlmIChpbmZvLT54ZW5fbWFqb3JfdmVyc2lvbiA8IDQpIHsKPiArCQkJTVNHKCJtb2Rp ZmllZCBvZmZzZXRfdGFibGUucGFnZV9pbmZvLl9kb21haW4gZnJvbSAlbGQgdG8gMjRcbiIsCj4g b2Zmc2V0X3RhYmxlLnBhZ2VfaW5mby5fZG9tYWluKTsgKwkJCQpvZmZzZXRfdGFibGUucGFnZV9p bmZvLl9kb21haW4gPSAyNDsKPiArCQl9Cj4gKwl9CgpUaGlzIGRvZXNuJ3QgY29ycmVjdGx5IGNv dmVyIHRoZSByYW5nZSBvZiBYZW4gdmVyc2lvbnMgd2hlcmUgdGhpcyB3YXMgYnJva2VuOgoKMS4g cGFnZV9pbmZvIG1lbWJlcnMgd2VyZSByZS1hcnJhbmdlZCBieSBjaGFuZ2VzZXQgMTYyY2RiNTk2 YjlhLCBpLmUuIGFmdGVyIAp4ZW4tMy4zLjAgd2FzIGJyYW5jaGVkIGFuZCBiZWZvcmUgeGVuLTMu NC4wIHdhcyByZWxlYXNlZC4KMi4gRm9yIHRoZSB4ZW4tMy40IGJyYW5jaCwgdGhpcyBidWcgd2Fz IG5ldmVyIGZpeGVkLgozLiBUaGUgYnVnIHdhcyBzcG90dGVkIGR1cmluZyB4ZW4tNC4xIGRldmVs b3BtZW50IChjaGFuZ2VzZXQgY2I3NTYzODEwODdjKSwgc28gCmFsbCB4ZW4tNC4xIHJlbGVhc2Vz IGFyZSBmaXhlZC4KNC4gVGhpcyBjaGFuZ2VzZXQgd2FzIGFsc28gYmFja3BvcnRlZCB0byB4ZW4t NC4wIGJyYW5jaCBhcyBjaGFuZ2VzZXQgCjNiOTBhNTM1M2YyMCwgd2hpY2ggZmlyc3Qgd2VudCBp bnRvIHhlbi00LjAuMi4KClRvIHN1bSBpdCB1cDoKMS4gYWxsIFhlbiB2ZXJzaW9ucyB1cCB0byBh bmQgaW5jbHVkaW5nIHhlbi0zLjMgcHV0IHRoZSByaWdodCBudW1iZXIgaW4gaGVyZQoyLiBYZW4t NC4xIGFuZCBhYm92ZSBpcyBhbHNvIGZpbmUKMy4gWGVuLTMuNCBpcyBhbHdheXMgYnJva2VuCjQu IFhlbi00LjAgaXMgYnJva2VuIHVwIHRvIDQuMC4yCgpPYnZpb3VzbHksIGFuIE9TIHZlbmRvciBt YXkgYWxzbyBoYXZlIGJhY2twb3J0ZWQgdGhlIHBhdGNoIHRvIHRoZSBvdGhlcndpc2UgCmJyb2tl biB2ZXJzaW9ucywgc28gZXZlbiB0aGUgYWJvdmUgc3VtbWFyeSBtYXkgbm90IGJlIHJlbGlhYmxl LgoKSW4gbXkgb3BpbmlvbiwgYWRkaW5nIGEgd29ya2Fyb3VuZCBoZXJlIGZvciBhIGJ1ZyBpbiBh bm90aGVyIHBhY2thZ2UgaXMgd3Jvbmc6CgpBLiBTdGFuZGFsb25lIHVzZXJzIHNob3VsZCB1cGdy YWRlIHhlbi4KQi4gVXNlcnMgb2YgZGlzdHJvIHBhY2thZ2VzIHNob3VsZCByZXBvcnQgaXQgYXMg YSBidWcgdG8gdGhlaXIgdmVuZG9yLCBhbmQgdGhlIAp2ZW5kb3Igc2hvdWxkIGJhY2twb3J0IHRo ZSBwYXRjaC4KQy4gVXNlcnMgd2hvIG5lZWQgYW4gaW1tZWRpYXRlIHdvcmthcm91bmQgc2hvdWxk IGdlbmVyYXRlIGEgdm1jb3JlaW5mbyBmaWxlIAp1c2luZyBtYWtlZHVtcGZpbGUsIHdoaWNoIHdp bGwgYmUgY29ycmVjdCBhZnRlciBhcHBseWluZyB0aGlzIHBhdGNoLgoKPiAgCVJFQURfTUVNQkVS X09GRlNFVCgiZG9tYWluLmRvbWFpbl9pZCIsIGRvbWFpbi5kb21haW5faWQpOwo+ICAJUkVBRF9N RU1CRVJfT0ZGU0VUKCJkb21haW4ubmV4dF9pbl9saXN0IiwgZG9tYWluLm5leHRfaW5fbGlzdCk7 Cj4gCj4gQEAgLTU3NjMsNiArNTgwNSwxMiBAQCBpbml0aWFsX3hlbih2b2lkKQo+ICAJb2ZmX3Qg b2Zmc2V0Owo+ICAJdW5zaWduZWQgbG9uZyBzaXplOwo+IAo+ICsJaWYgKCFnZXRfeGVuX3ZlcnNp b24oKSkKPiArCQlyZXR1cm4gRkFMU0U7Cj4gKwlpZiAoKGluZm8tPmVsZl9tYWNoaW5lICE9IEVN X1g4Nl82NCkgJiYgKGluZm8tPnhlbl9tYWpvcl92ZXJzaW9uID49IDQpKSB7Cj4gKwkJTVNHKCJY ZW4gbWFqb3IgdmVyc2lvbiAlbHUgaXMgbm90IHN1cHBvcnRlZCB5ZXQgZm9yIHRoaXMgbWFjaGlu ZS5cbiIsCj4gaW5mby0+eGVuX21ham9yX3ZlcnNpb24pOyArCQlyZXR1cm4gRkFMU0U7Cj4gKwl9 CgpJIHdvdWxkIGhhdmUgZXhwZWN0ZWQgYW4gIiNpZiBkZWZpbmVkCl9feDg2XzY0XykiIGhlcmUg dG8gYmUgY29uc2lzdGVudCB3aXRoIGFsbCB0aGUgb3RoZXIgYXJjaC1kZXBlbmRlbnQgY29kZS4K CkFueXdheSwgbXkgcGF0Y2hlcyBzZWVtIHRvIGNvdmVyIHRoZSByZW1haW5pbmcgYXJjaGl0ZWN0 dXJlcywgYWx0aG91Z2ggSSBoYXZlIApyZWFsbHkgb25seSB0ZXN0ZWQgeDg2XzY0Li4uCgpQZXRy IFRlc2FyaWsKU1VTRSBMaW51eAoKPiAgI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykgfHwgZGVm aW5lZChfX3Bvd2VycGMzMl9fKQo+ICAJTVNHKCJcbiIpOwo+ICAJTVNHKCJYZW4gaXMgbm90IHN1 cHBvcnRlZCBvbiBwb3dlcnBjLlxuIik7Cj4gZGlmZiAtLWdpdCBhL21ha2VkdW1wZmlsZS5oIGIv bWFrZWR1bXBmaWxlLmgKPiBpbmRleCA2ZjU0ODlkLi5kOGQ3Nzc5IDEwMDY0NAo+IC0tLSBhL21h a2VkdW1wZmlsZS5oCj4gKysrIGIvbWFrZWR1bXBmaWxlLmgKPiBAQCAtODQzLDYgKzg0Myw3IEBA IHN0cnVjdCBEdW1wSW5mbyB7Cj4gIAkvKgo+ICAJICogRUxGIGhlYWRlciBpbmZvOgo+ICAJICov Cj4gKwlpbnQJCQllbGZfbWFjaGluZTsKPiAgCXVuc2lnbmVkIGludAkJbnVtX2xvYWRfZHVtcGZp bGU7Cj4gIAlzaXplX3QJCQlvZmZzZXRfbG9hZF9kdW1wZmlsZTsKPiAKPiBAQCAtOTAyLDYgKzkw Myw4IEBAIHN0cnVjdCBEdW1wSW5mbyB7Cj4gIAkvKgo+ICAJICogZm9yIFhlbiBleHRyYWN0aW9u Cj4gIAkgKi8KPiArCXVuc2lnbmVkIGxvbmcJCXhlbl9tYWpvcl92ZXJzaW9uOwo+ICsJdW5zaWdu ZWQgbG9uZwkJeGVuX21pbm9yX3ZlcnNpb247Cj4gIAl1bnNpZ25lZCBsb25nIGxvbmcJZG9tMF9t YXBucjsgIC8qIFRoZSBudW1iZXIgb2YgcGFnZSBpbiBkb21haW4tMC4KPiAgCQkJCQkgICAgICAq IERpZmZlcmVudCBmcm9tIG1heF9tYXBuci4KPiAgCQkJCQkgICAgICAqIG1heF9tYXBuciBpcyB0 aGUgbnVtYmVyIG9mIHBhZ2UKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmtleGVjIG1haWxpbmcgbGlzdAprZXhlY0BsaXN0cy5pbmZyYWRlYWQub3JnCmh0 dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8va2V4ZWMK