From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?B?R2VuZXZpw6h2ZSBCYXN0aWVu?= Subject: Re: [RFC Patch Ust 2/5] Serialize the CTF global structures for ust-comm Date: Wed, 09 Apr 2014 13:33:06 -0400 Message-ID: <53458452.8030905__35621.3013096296$1397064853$gmane$org@versatic.net> References: <1395845232-17669-1-git-send-email-gbastien+lttng@versatic.net> <1395845232-17669-3-git-send-email-gbastien+lttng@versatic.net> <224451157.1253.1397058138828.JavaMail.zimbra@efficios.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from smtp.polymtl.ca ([132.207.4.11]) by ltt.polymtl.ca with esmtp (Exim 4.80) (envelope-from ) id 1WXwN3-00023D-9t for lttng-dev@lists.lttng.org; Wed, 09 Apr 2014 13:33:15 -0400 In-Reply-To: <224451157.1253.1397058138828.JavaMail.zimbra@efficios.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: lttng-dev-bounces@lists.lttng.org To: Mathieu Desnoyers Cc: lttng-dev@lists.lttng.org List-Id: lttng-dev@lists.lttng.org T24gMDQvMDkvMjAxNCAxMTo0MiBBTSwgTWF0aGlldSBEZXNub3llcnMgd3JvdGU6Cj4gLS0tLS0g T3JpZ2luYWwgTWVzc2FnZSAtLS0tLQo+PiBGcm9tOiAiR2VuZXZpw6h2ZSBCYXN0aWVuIiA8Z2Jh c3RpZW4rbHR0bmdAdmVyc2F0aWMubmV0Pgo+PiBUbzogbHR0bmctZGV2QGxpc3RzLmx0dG5nLm9y Zwo+PiBTZW50OiBXZWRuZXNkYXksIE1hcmNoIDI2LCAyMDE0IDEwOjQ3OjA5IEFNCj4+IFN1Ympl Y3Q6IFtsdHRuZy1kZXZdIFtSRkMgUGF0Y2ggVXN0IDIvNV0gU2VyaWFsaXplIHRoZSBDVEYgZ2xv YmFsIHN0cnVjdHVyZXMJZm9yIHVzdC1jb21tCj4+Cj4+IEl0IGZsYXR0ZW4gdGhlIGdsb2JhbCB0 eXBlcyBzbyB0aGF0IGdsb2JhbCB0eXBlcyB1c2VkIGJ5IG90aGVyIGdsb2JhbCB0eXBlcwo+IGZs YXR0ZW4gLT4gZmxhdHRlbnMKPgo+PiBhbGwgYmVsb25nIHRvIHRoZSBldmVudCBhdCBzZXJpYWxp emF0aW9uLiBUaGlzIGF2b2lkcyByZWN1cnNpdmUgY2FsbHMgdG8gdGhlCj4+IHNlbmQgYW5kIHJl Y2VpdmUgZnVuY3Rpb25zIGFuZCBzaW1wbGlmaWVzIGVycm9yIGhhbmRsaW5nIChubyByZWN1cnNp dmUKPj4gZnJlZXMpLgo+IElzIHRoZSBzdHJ1Y3R1cmUgYW5kIGVudW0gcGFydCBvZiB0aGUgZXZl bnQsIG9yIGRlY2xhcmVkIG91dHNpZGUgb2YKPiB0aGUgZXZlbnQgc2NvcGUgPwpUaGV5IGFyZSBu YW1lZCBzdHJ1Y3R1cmVzIHNvIGRlY2xhcmVkIG91dHNpZGUgdGhlIHNjb3BlIG9mIHRoZSBldmVu dC4gCkJ1dCB0aGV5IGFyZSBzZW50IG9ubHkgaWYgb25lIGV2ZW50IG5lZWRzIHRoZW0uCj4KPiBJ cyB0aGVyZSBhIGRvd25zaWRlIHRvIHRoaXMgYXBwcm9hY2ggPyBGb3IgaW5zdGFuY2UsIGlmIHRo ZSBzYW1lCj4gc3RydWN0dXJlIGlzIHVzZWQgaW4gbWFueSBldmVudHMsIGRvIHdlIGhhdmUgdG8g c2VuZCB0aGUgc3RydWN0dXJlIGluZm8KPiBtYW55IHRpbWVzID8KU2VuZGluZyBlYWNoIHN0cnVj dHVyZSAoYW5kIGVudW0pIG9uY2Ugd291bGQgYmUgZW5vdWdoLCB3ZSBjb3VsZCBrZWVwIGEgCmhh c2ggdGFibGUgb2YgZ2xvYmFsIHR5cGVzIHRoYXQgd2VyZSBzZW50LCBsaWtlIHdlIGRvIGJlZm9y ZSBkdW1waW5nIHRoZSAKbWV0YWRhdGEgb2YgdGhvc2UgZ2xvYmFsIHR5cGVzLCBhbmQgdGhhdCB3 b3VsZCBhdm9pZCBzZW5kaW5nIHRoZW0gbWFueSAKdGltZXMuIEJ1dCBpdCBpcyBub3Qgd2hhdCBp cyBiZWluZyBkb25lIHJpZ2h0IG5vdy4gV2UganVzdCBzZW5kIGFsbCB0aGUgCmdsb2JhbCB0eXBl cywgYnV0IHRoZXkgYXJlIGFkZGVkIHRvIHRoZSBtZXRhZGF0YSBvbmx5IG9uY2UuCgpUaGFua3Ms CkdlbmV2acOodmUKPgo+IFRoYW5rcywKPgo+IE1hdGhpZXUKPgo+PiBTaWduZWQtb2ZmLWJ5OiBH ZW5ldmnDqHZlIEJhc3RpZW4gPGdiYXN0aWVuK2x0dG5nQHZlcnNhdGljLm5ldD4KPj4gLS0tCj4+ ICAgbGlibHR0bmctdXN0LWNvbW0vbHR0bmctdXN0LWNvbW0uYyB8IDE3MAo+PiAgICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0KPj4gICBsaWJsdHRuZy11c3QtY3RsL3VzdGN0 bC5jICAgICAgICAgIHwgIDI2ICsrKysrKwo+PiAgIDIgZmlsZXMgY2hhbmdlZCwgMTc5IGluc2Vy dGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEvbGlibHR0bmctdXN0 LWNvbW0vbHR0bmctdXN0LWNvbW0uYwo+PiBiL2xpYmx0dG5nLXVzdC1jb21tL2x0dG5nLXVzdC1j b21tLmMKPj4gaW5kZXggYmMyMjEzMC4uOTAyNzRjNCAxMDA2NDQKPj4gLS0tIGEvbGlibHR0bmct dXN0LWNvbW0vbHR0bmctdXN0LWNvbW0uYwo+PiArKysgYi9saWJsdHRuZy11c3QtY29tbS9sdHRu Zy11c3QtY29tbS5jCj4+IEBAIC03NDIsNiArNzQyLDcgQEAgaW50IHNlcmlhbGl6ZV9iYXNpY190 eXBlKGVudW0gdXN0Y3RsX2Fic3RyYWN0X3R5cGVzCj4+ICp1YXR5cGUsCj4+ICAgCX0KPj4gICAJ Y2FzZSBhdHlwZV9hcnJheToKPj4gICAJY2FzZSBhdHlwZV9zZXF1ZW5jZToKPj4gKwljYXNlIGF0 eXBlX3N0cnVjdHVyZToKPj4gICAJZGVmYXVsdDoKPj4gICAJCXJldHVybiAtRUlOVkFMOwo+PiAg IAl9Cj4+IEBAIC04MDAsNiArODAxLDE0IEBAIGludCBzZXJpYWxpemVfb25lX3R5cGUoc3RydWN0 IHVzdGN0bF90eXBlICp1dCwgY29uc3QKPj4gc3RydWN0IGx0dG5nX3R5cGUgKmx0KQo+PiAgIAkJ dXQtPmF0eXBlID0gdXN0Y3RsX2F0eXBlX3NlcXVlbmNlOwo+PiAgIAkJYnJlYWs7Cj4+ICAgCX0K Pj4gKwljYXNlIGF0eXBlX3N0cnVjdHVyZToKPj4gKwl7Cj4+ICsJCXN0cm5jcHkodXQtPnUuc3Ry dWN0dXJlLm5hbWUsIGx0LT51LnN0cnVjdHVyZS5uYW1lLAo+PiArCQkJCQkJTFRUTkdfVVNUX1NZ TV9OQU1FX0xFTik7Cj4+ICsJCXV0LT51LnN0cnVjdHVyZS5uYW1lW0xUVE5HX1VTVF9TWU1fTkFN RV9MRU4gLSAxXSA9ICdcMCc7Cj4+ICsJCXV0LT5hdHlwZSA9IHVzdGN0bF9hdHlwZV9zdHJ1Y3R1 cmU7Cj4+ICsJCWJyZWFrOwo+PiArCX0KPj4gICAJZGVmYXVsdDoKPj4gICAJCXJldHVybiAtRUlO VkFMOwo+PiAgIAl9Cj4+IEBAIC04OTIsMjUgKzkwMSw4MiBAQCBpbnQgc2VyaWFsaXplX2VudW0o c3RydWN0IHVzdGN0bF9lbnVtICp1ZW51bSwKPj4gICB9Cj4+ICAgCj4+ICAgc3RhdGljCj4+IC1p bnQgc2VyaWFsaXplX2dsb2JhbF90eXBlX2RlY2woc2l6ZV90ICpfbnJfd3JpdGVfZ2xvYmFsX3R5 cGVfZGVjbCwKPj4gLQkJc3RydWN0IHVzdGN0bF9nbG9iYWxfdHlwZV9kZWNsICoqdXN0Y3RsX2ds b2JhbF90eXBlLAo+PiAraW50IHNlcmlhbGl6ZV9zdHJ1Y3R1cmUoc3RydWN0IHVzdGN0bF9zdHJ1 Y3R1cmUgKnVzdHJ1Y3QsCj4+ICsJCWNvbnN0IHN0cnVjdCBsdHRuZ19zdHJ1Y3R1cmUgKmxzdHJ1 Y3QpCj4+ICt7Cj4+ICsJaW50IHJldDsKPj4gKwo+PiArCXN0cm5jcHkodXN0cnVjdC0+bmFtZSwg bHN0cnVjdC0+bmFtZSwgTFRUTkdfVVNUX1NZTV9OQU1FX0xFTik7Cj4+ICsJdXN0cnVjdC0+bmFt ZVtMVFROR19VU1RfU1lNX05BTUVfTEVOIC0gMV0gPSAnXDAnOwo+PiArCj4+ICsJLyogU2VyaWFs aXplIHRoZSBmaWVsZHMgKi8KPj4gKwlpZiAobHN0cnVjdC0+bnJfZmllbGRzID4gMCkgewo+PiAr CQlyZXQgPSBzZXJpYWxpemVfZmllbGRzKCZ1c3RydWN0LT5ucl9maWVsZHMsICZ1c3RydWN0LT5m aWVsZHMsCj4+ICsJCQkJbHN0cnVjdC0+bnJfZmllbGRzLAlsc3RydWN0LT5maWVsZHMpOwo+PiAr CQlpZiAocmV0KSB7Cj4+ICsJCQlyZXR1cm4gcmV0Owo+PiArCQl9Cj4+ICsJfQo+PiArCj4+ICsJ cmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBzaXplX3QgZ2V0X2NoaWxkX2dsb2JhbF90 eXBlX2NvdW50KHNpemVfdCBucl9nbG9iYWxfdHlwZV9kZWNsLAo+PiArCQljb25zdCBzdHJ1Y3Qg bHR0bmdfZ2xvYmFsX3R5cGVfZGVjbCAqbHR0bmdfZ2xvYmFsX3R5cGUpCj4+ICt7Cj4+ICsJc2l6 ZV90IHRvdGFsX2dsb2JhbF90eXBlcyA9IDA7Cj4+ICsJaW50IGk7Cj4+ICsJY29uc3Qgc3RydWN0 IGx0dG5nX2dsb2JhbF90eXBlX2RlY2wgKmxnOwo+PiArCj4+ICsJZm9yIChpID0gMDsgaSA8IG5y X2dsb2JhbF90eXBlX2RlY2w7IGkrKykgewo+PiArCQlsZyA9ICZsdHRuZ19nbG9iYWxfdHlwZVtp XTsKPj4gKwo+PiArCQlpZiAobGctPm5vd3JpdGUpCj4+ICsJCQljb250aW51ZTsKPj4gKwo+PiAr CQkvKiBDb3VudCB0aGUgZ2xvYmFsIHR5cGVzIGluIGNoaWxkcmVuIGFzIHdlbGwgKi8KPj4gKwkJ c3dpdGNoIChsZy0+bXR5cGUpIHsKPj4gKwkJY2FzZSBtdHlwZV9zdHJ1Y3R1cmU6Cj4+ICsJCXsK Pj4gKwkJCWNvbnN0IHN0cnVjdCBsdHRuZ19zdHJ1Y3R1cmUgKmxzOwo+PiArCj4+ICsJCQlscyA9 IGxnLT51LmN0Zl9zdHJ1Y3R1cmU7Cj4+ICsJCQkvKiBBZGQgdGhlIG51bWJlciBvZiBnbG9iYWwg dHlwZXMgaXQgY29udGFpbnMgYW5kIHRoZSBjb3VudCBvZiBpdHMgb3duCj4+IGNoaWxkcmVuICov Cj4+ICsJCQlpZiAobHMtPm5yX2dsb2JhbF90eXBlX2RlY2wgPiAwKSB7Cj4+ICsJCQkJdG90YWxf Z2xvYmFsX3R5cGVzICs9IGxzLT5ucl9nbG9iYWxfdHlwZV9kZWNsOwo+PiArCQkJCXRvdGFsX2ds b2JhbF90eXBlcyArPQo+PiBnZXRfY2hpbGRfZ2xvYmFsX3R5cGVfY291bnQobHMtPm5yX2dsb2Jh bF90eXBlX2RlY2wsCj4+ICsJCQkJCQkJCWxzLT5nbG9iYWxfdHlwZV9kZWNsKTsKPj4gKwkJCX0K Pj4gKwkJCWJyZWFrOwo+PiArCQl9Cj4+ICsJCWNhc2UgbXR5cGVfZW51bToKPj4gKwkJZGVmYXVs dDoKPj4gKwkJCWJyZWFrOwo+PiArCQl9Cj4+ICsJfQo+PiArCj4+ICsJcmV0dXJuIHRvdGFsX2ds b2JhbF90eXBlczsKPj4gK30KPj4gKwo+PiArLyoKPj4gKyAqIFdoZW4gdGhpcyBtZXRob2QgaXMg Y2FsbGVkLCBpbmRleCBpcyB0aGUgbmV4dCBpbmRleCB0byB3cml0ZSB0byBhbmQgdGhlCj4+ICsg KiB1c3RjdGxfZ2xvYmFsX3R5cGUgc3RydWN0dXJlIGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQgYW5k IHdpbGwgbm90Cj4+IG92ZXJmbG93Lgo+PiArICoKPj4gKyAqIFRoZSBnbG9iYWwgdHlwZSBkZWNs YXJhdGlvbnMgYXJlIGZsYXR0ZW5lZCBhdCBzZXJpYWxpemF0aW9uIHRvIGF2b2lkCj4+ICsgKiBu ZWVkaW5nIHRvIGRvIHJlY3Vyc2l2ZSBmcmVlcyBvbiBlcnJvci4KPj4gKyAqLwo+PiArc3RhdGlj IGludCBfc2VyaWFsaXplX2dsb2JhbF90eXBlX2RlY2woc2l6ZV90ICppbmRleCwKPj4gKwkJc3Ry dWN0IHVzdGN0bF9nbG9iYWxfdHlwZV9kZWNsICpnbG9iYWxfdHlwZV9kZWNsLAo+PiAgIAkJc2l6 ZV90IG5yX2dsb2JhbF90eXBlX2RlY2wsCj4+ICAgCQljb25zdCBzdHJ1Y3QgbHR0bmdfZ2xvYmFs X3R5cGVfZGVjbCAqbHR0bmdfZ2xvYmFsX3R5cGUpCj4+ICAgewo+PiAtCXN0cnVjdCB1c3RjdGxf Z2xvYmFsX3R5cGVfZGVjbCAqZ2xvYmFsX3R5cGVfZGVjbDsKPj4gICAJaW50IGksIHJldDsKPj4g LQlzaXplX3QgbnJfd3JpdGVfZ2xvYmFsX3R5cGVfZGVjbCA9IDA7Cj4+IC0KPj4gLQlnbG9iYWxf dHlwZV9kZWNsID0gem1hbGxvYyhucl9nbG9iYWxfdHlwZV9kZWNsCj4+IC0JCQkJCSogc2l6ZW9m KCpnbG9iYWxfdHlwZV9kZWNsKSk7Cj4+IC0JaWYgKCFnbG9iYWxfdHlwZV9kZWNsKQo+PiAtCQly ZXR1cm4gLUVOT01FTTsKPj4gICAKPj4gICAJZm9yIChpID0gMDsgaSA8IG5yX2dsb2JhbF90eXBl X2RlY2w7IGkrKykgewo+PiAgIAkJc3RydWN0IHVzdGN0bF9nbG9iYWxfdHlwZV9kZWNsICpmOwo+ PiAgIAkJY29uc3Qgc3RydWN0IGx0dG5nX2dsb2JhbF90eXBlX2RlY2wgKmxmOwo+PiAgIAo+PiAt CQlmID0gJmdsb2JhbF90eXBlX2RlY2xbbnJfd3JpdGVfZ2xvYmFsX3R5cGVfZGVjbF07Cj4+ICsJ CWYgPSAmZ2xvYmFsX3R5cGVfZGVjbFsqaW5kZXhdOwo+PiAgIAkJbGYgPSAmbHR0bmdfZ2xvYmFs X3R5cGVbaV07Cj4+ICAgCj4+ICAgCQkvKiBza2lwICdub3dyaXRlJyBmaWVsZHMgKi8KPj4gQEAg LTkyOCwxOCArOTk0LDY2IEBAIGludCBzZXJpYWxpemVfZ2xvYmFsX3R5cGVfZGVjbChzaXplX3QK Pj4gKl9ucl93cml0ZV9nbG9iYWxfdHlwZV9kZWNsLAo+PiAgIAkJCWxlID0gbGYtPnUuY3RmX2Vu dW07Cj4+ICAgCQkJcmV0ID0gc2VyaWFsaXplX2VudW0odWUsIGxlKTsKPj4gICAJCQlpZiAocmV0 KQo+PiAtCQkJCWdvdG8gZXJyb3I7Cj4+ICsJCQkJcmV0dXJuIHJldDsKPj4gICAKPj4gICAJCQlm LT5tdHlwZSA9IHVzdGN0bF9tdHlwZV9lbnVtOwo+PiAgIAkJCWJyZWFrOwo+PiAgIAkJfQo+PiAr CQljYXNlIG10eXBlX3N0cnVjdHVyZToKPj4gKwkJewo+PiArCQkJc3RydWN0IHVzdGN0bF9zdHJ1 Y3R1cmUgKnVzOwo+PiArCQkJY29uc3Qgc3RydWN0IGx0dG5nX3N0cnVjdHVyZSAqbHM7Cj4+ICsK Pj4gKwkJCS8qIFNlcmlhbGl6ZSBjaGlsZHJlbiBnbG9iYWwgdHlwZXMgZmlyc3QgKi8KPj4gKwkJ CWxzID0gbGYtPnUuY3RmX3N0cnVjdHVyZTsKPj4gKwkJCXJldCA9IF9zZXJpYWxpemVfZ2xvYmFs X3R5cGVfZGVjbChpbmRleCwKPj4gKwkJCQkJZ2xvYmFsX3R5cGVfZGVjbCwKPj4gKwkJCQkJbHMt Pm5yX2dsb2JhbF90eXBlX2RlY2wsCj4+ICsJCQkJCWxzLT5nbG9iYWxfdHlwZV9kZWNsKTsKPj4g KwkJCWlmIChyZXQpCj4+ICsJCQkJcmV0dXJuIHJldDsKPj4gKwo+PiArCQkJLyogUmVpbml0aWFs aXplIGYgc2luY2UgdGhlIGluZGV4IG1heSBoYXZlIGNoYW5nZWQgKi8KPj4gKwkJCWYgPSAmZ2xv YmFsX3R5cGVfZGVjbFsqaW5kZXhdOwo+PiArCQkJdXMgPSAmZi0+dS5jdGZfc3RydWN0dXJlOwo+ PiArCj4+ICsJCQlyZXQgPSBzZXJpYWxpemVfc3RydWN0dXJlKHVzLCBscyk7Cj4+ICsJCQlpZiAo cmV0KQo+PiArCQkJCXJldHVybiByZXQ7Cj4+ICsKPj4gKwkJCWYtPm10eXBlID0gdXN0Y3RsX210 eXBlX3N0cnVjdHVyZTsKPj4gKwkJCWJyZWFrOwo+PiArCQl9Cj4+ICAgCQlkZWZhdWx0Ogo+PiAt CQkJcmV0ID0gLUVJTlZBTDsKPj4gLQkJCWdvdG8gZXJyb3I7Cj4+ICsJCQlyZXR1cm4gLUVJTlZB TDsKPj4gICAJCX0KPj4gICAKPj4gLQkJbnJfd3JpdGVfZ2xvYmFsX3R5cGVfZGVjbCsrOwo+PiAr CQkqaW5kZXggPSAqaW5kZXggKyAxOwo+PiAgIAl9Cj4+ICsJcmV0dXJuIDA7Cj4+ICt9Cj4+ICsK Pj4gK3N0YXRpYwo+PiAraW50IHNlcmlhbGl6ZV9nbG9iYWxfdHlwZV9kZWNsKHNpemVfdCAqX25y X3dyaXRlX2dsb2JhbF90eXBlX2RlY2wsCj4+ICsJCXN0cnVjdCB1c3RjdGxfZ2xvYmFsX3R5cGVf ZGVjbCAqKnVzdGN0bF9nbG9iYWxfdHlwZSwKPj4gKwkJc2l6ZV90IG5yX2dsb2JhbF90eXBlX2Rl Y2wsCj4+ICsJCWNvbnN0IHN0cnVjdCBsdHRuZ19nbG9iYWxfdHlwZV9kZWNsICpsdHRuZ19nbG9i YWxfdHlwZSkKPj4gK3sKPj4gKwlzdHJ1Y3QgdXN0Y3RsX2dsb2JhbF90eXBlX2RlY2wgKmdsb2Jh bF90eXBlX2RlY2w7Cj4+ICsJaW50IGksIHJldDsKPj4gKwlzaXplX3QgbnJfd3JpdGVfZ2xvYmFs X3R5cGVfZGVjbCA9IDA7Cj4+ICsJc2l6ZV90IG5yX2NoaWxkX2dsb2JhbF90eXBlX2NudCA9Cj4+ IGdldF9jaGlsZF9nbG9iYWxfdHlwZV9jb3VudChucl9nbG9iYWxfdHlwZV9kZWNsLAo+PiArCQkJ CQkJCWx0dG5nX2dsb2JhbF90eXBlKTsKPj4gKwo+PiArCWdsb2JhbF90eXBlX2RlY2wgPSB6bWFs bG9jKChucl9nbG9iYWxfdHlwZV9kZWNsICsgbnJfY2hpbGRfZ2xvYmFsX3R5cGVfY250KQo+PiAr CQkJCQkqIHNpemVvZigqZ2xvYmFsX3R5cGVfZGVjbCkpOwo+PiArCWlmICghZ2xvYmFsX3R5cGVf ZGVjbCkKPj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4+ICsKPj4gKwlyZXQgPSBfc2VyaWFsaXplX2ds b2JhbF90eXBlX2RlY2woJm5yX3dyaXRlX2dsb2JhbF90eXBlX2RlY2wsCj4+IGdsb2JhbF90eXBl X2RlY2wsCj4+ICsJCQlucl9nbG9iYWxfdHlwZV9kZWNsLCBsdHRuZ19nbG9iYWxfdHlwZSk7Cj4+ ICsJaWYgKHJldCkKPj4gKwkJZ290byBlcnJvcjsKPj4gICAKPj4gICAJKl9ucl93cml0ZV9nbG9i YWxfdHlwZV9kZWNsID0gbnJfd3JpdGVfZ2xvYmFsX3R5cGVfZGVjbDsKPj4gICAJKnVzdGN0bF9n bG9iYWxfdHlwZSA9IGdsb2JhbF90eXBlX2RlY2w7Cj4+IEBAIC05NTQsNiArMTA2OCw5IEBAIGVy cm9yOgo+PiAgIAkJY2FzZSB1c3RjdGxfbXR5cGVfZW51bToKPj4gICAJCQlmcmVlKG0tPnUuY3Rm X2VudW0uZW50cmllcyk7Cj4+ICAgCQkJYnJlYWs7Cj4+ICsJCWNhc2UgdXN0Y3RsX210eXBlX3N0 cnVjdHVyZToKPj4gKwkJCWZyZWUobS0+dS5jdGZfc3RydWN0dXJlLmZpZWxkcyk7Cj4+ICsJCQli cmVhazsKPj4gICAJCWRlZmF1bHQ6Cj4+ICAgCQkJYnJlYWs7Cj4+ICAgCQl9Cj4+IEBAIC0xMTU4 LDE1ICsxMjc1LDMxIEBAIGludCB1c3Rjb21tX3JlZ2lzdGVyX2V2ZW50KGludCBzb2NrLAo+PiAg IAkJCQl9Cj4+ICAgCQkJCWJyZWFrOwo+PiAgIAkJCX0KPj4gKwkJCWNhc2UgdXN0Y3RsX210eXBl X3N0cnVjdHVyZToKPj4gKwkJCXsKPj4gKwkJCQlpbnQgZmllbGRfbGVuID0gb25lX2dsb2JhbF90 eXBlLT51LmN0Zl9zdHJ1Y3R1cmUubnJfZmllbGRzICoKPj4gc2l6ZW9mKCpvbmVfZ2xvYmFsX3R5 cGUtPnUuY3RmX3N0cnVjdHVyZS5maWVsZHMpOwo+PiArCj4+ICsJCQkJLyogU2VuZCB0aGUgZmll bGRzICovCj4+ICsJCQkJREJHKCJTZW5kaW5nIGZpZWxkcyBmb3IgZ2xvYmFsIHR5cGUgc3RydWN0 dXJlICVzLlxuIiwKPj4gKwkJCQkJCW9uZV9nbG9iYWxfdHlwZS0+dS5jdGZfc3RydWN0dXJlLm5h bWUpOwo+PiArCQkJCWxlbiA9IHVzdGNvbW1fc2VuZF91bml4X3NvY2soc29jaywKPj4gb25lX2ds b2JhbF90eXBlLT51LmN0Zl9zdHJ1Y3R1cmUuZmllbGRzLCBmaWVsZF9sZW4pOwo+PiArCQkJCWZy ZWUob25lX2dsb2JhbF90eXBlLT51LmN0Zl9zdHJ1Y3R1cmUuZmllbGRzKTsKPj4gKwkJCQlvbmVf Z2xvYmFsX3R5cGUtPnUuY3RmX3N0cnVjdHVyZS5maWVsZHMgPSBOVUxMOwo+PiArCQkJCWlmIChs ZW4gPiAwICYmIGxlbiAhPSBmaWVsZF9sZW4pIHsKPj4gKwkJCQkJZ290byBlcnJvcl9nbG9iYWxf dHlwZTsKPj4gKwkJCQl9Cj4+ICsJCQkJaWYgKGxlbiA8IDApIHsKPj4gKwkJCQkJZ290byBlcnJv cl9nbG9iYWxfdHlwZTsKPj4gKwkJCQl9Cj4+ICsJCQkJYnJlYWs7Cj4+ICsJCQl9Cj4+ICAgCQkJ ZGVmYXVsdDoKPj4gICAJCQkJYnJlYWs7Cj4+ICAgCQkJfQo+PiAgIAkJfQo+PiAtCQlmcmVlKGds b2JhbF90eXBlX2RlY2wpOwo+PiAgIAo+PiAtCX0gZWxzZSB7Cj4+IC0JCWZyZWUoZ2xvYmFsX3R5 cGVfZGVjbCk7Cj4+ICAgCX0KPj4gKwlmcmVlKGdsb2JhbF90eXBlX2RlY2wpOwo+PiAgIAo+PiAg IAkvKiByZWNlaXZlIHJlcGx5ICovCj4+ICAgCWxlbiA9IHVzdGNvbW1fcmVjdl91bml4X3NvY2so c29jaywgJnJlcGx5LCBzaXplb2YocmVwbHkpKTsKPj4gQEAgLTEyMTIsNiArMTM0NSw5IEBAIGVy cm9yX2dsb2JhbF90eXBlOgo+PiAgIAkJY2FzZSB1c3RjdGxfbXR5cGVfZW51bToKPj4gICAJCQlm cmVlKG9uZV9nbG9iYWxfdHlwZS0+dS5jdGZfZW51bS5lbnRyaWVzKTsKPj4gICAJCQlicmVhazsK Pj4gKwkJY2FzZSB1c3RjdGxfbXR5cGVfc3RydWN0dXJlOgo+PiArCQkJZnJlZShvbmVfZ2xvYmFs X3R5cGUtPnUuY3RmX3N0cnVjdHVyZS5maWVsZHMpOwo+PiArCQkJYnJlYWs7Cj4+ICAgCQlkZWZh dWx0Ogo+PiAgIAkJCWJyZWFrOwo+PiAgIAkJfQo+PiBkaWZmIC0tZ2l0IGEvbGlibHR0bmctdXN0 LWN0bC91c3RjdGwuYyBiL2xpYmx0dG5nLXVzdC1jdGwvdXN0Y3RsLmMKPj4gaW5kZXggYTE4MWU2 Mi4uMzEwMGYxYiAxMDA2NDQKPj4gLS0tIGEvbGlibHR0bmctdXN0LWN0bC91c3RjdGwuYwo+PiAr KysgYi9saWJsdHRuZy11c3QtY3RsL3VzdGN0bC5jCj4+IEBAIC0xODk2LDYgKzE4OTYsMzIgQEAg aW50IHVzdGN0bF9yZWN2X3JlZ2lzdGVyX2V2ZW50KGludCBzb2NrLAo+PiAgIAkJCQl9Cj4+ICAg CQkJCWJyZWFrOwo+PiAgIAkJCX0KPj4gKwkJCWNhc2UgdXN0Y3RsX210eXBlX3N0cnVjdHVyZToK Pj4gKwkJCXsKPj4gKwkJCQlpbnQgZW50cnlfbGVuID0gb25lX2dsb2JhbF90eXBlLT51LmN0Zl9z dHJ1Y3R1cmUubnJfZmllbGRzICoKPj4gc2l6ZW9mKCpvbmVfZ2xvYmFsX3R5cGUtPnUuY3RmX3N0 cnVjdHVyZS5maWVsZHMpOwo+PiArCQkJCS8qIFJlY2VpdmUgdGhlIGVudHJpZXMgKi8KPj4gKwkJ CQlvbmVfZ2xvYmFsX3R5cGUtPnUuY3RmX3N0cnVjdHVyZS5maWVsZHMgPSB6bWFsbG9jKGVudHJ5 X2xlbik7Cj4+ICsJCQkJaWYgKCFvbmVfZ2xvYmFsX3R5cGUtPnUuY3RmX3N0cnVjdHVyZS5maWVs ZHMpIHsKPj4gKwkJCQkJbGVuID0gLUVOT01FTTsKPj4gKwkJCQkJZ290byBnbG9iYWxfdHlwZV9l cnJvcjsKPj4gKwkJCQl9Cj4+ICsJCQkJbGVuID0gdXN0Y29tbV9yZWN2X3VuaXhfc29jayhzb2Nr LAo+PiArCQkJCQkJb25lX2dsb2JhbF90eXBlLT51LmN0Zl9zdHJ1Y3R1cmUuZmllbGRzLAo+PiAr CQkJCQkJZW50cnlfbGVuKTsKPj4gKwkJCQlEQkcoIlJlY2VpdmVkIGZpZWxkcyBmb3Igc3RydWN0 ICVzLlxuIiwKPj4gb25lX2dsb2JhbF90eXBlLT51LmN0Zl9zdHJ1Y3R1cmUubmFtZSk7Cj4+ICsJ CQkJaWYgKGxlbiA+IDAgJiYgbGVuICE9IGVudHJ5X2xlbikgewo+PiArCQkJCQlsZW4gPSAtRUlP Owo+PiArCQkJCQlnb3RvIGdsb2JhbF90eXBlX2Vycm9yOwo+PiArCQkJCX0KPj4gKwkJCQlpZiAo bGVuID09IDApIHsKPj4gKwkJCQkJbGVuID0gLUVQSVBFOwo+PiArCQkJCQlnb3RvIGdsb2JhbF90 eXBlX2Vycm9yOwo+PiArCQkJCX0KPj4gKwkJCQlpZiAobGVuIDwgMCkgewo+PiArCQkJCQlnb3Rv IGdsb2JhbF90eXBlX2Vycm9yOwo+PiArCQkJCX0KPj4gKwkJCQlicmVhazsKPj4gKwkJCX0KPj4g ICAJCQlkZWZhdWx0Ogo+PiAgIAkJCQlicmVhazsKPj4gICAJCQl9Cj4+IC0tCj4+IDEuOS4xCj4+ Cj4+Cj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+ IGx0dG5nLWRldiBtYWlsaW5nIGxpc3QKPj4gbHR0bmctZGV2QGxpc3RzLmx0dG5nLm9yZwo+PiBo dHRwOi8vbGlzdHMubHR0bmcub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9sdHRuZy1kZXYK Pj4KCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsdHRu Zy1kZXYgbWFpbGluZyBsaXN0Cmx0dG5nLWRldkBsaXN0cy5sdHRuZy5vcmcKaHR0cDovL2xpc3Rz Lmx0dG5nLm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vbHR0bmctZGV2Cg==