From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH i-g-t] tests/kms_fbc_crc.c: No longer dependant on Cairo A setup function that used to use Cairo to draw 2 rectangles covering the whole screen has been changed to use igt_draw Date: Fri, 22 Jan 2016 18:14:31 +0100 Message-ID: <20160122171431.GG11240@phenom.ffwll.local> References: <1452872548-4959-1-git-send-email-devon.davies@intel.com> <1453318472.22174.93.camel@intel.com> <38ACF0BC99FA3A449472D1EE32ACA1EA2B2917F0@IRSMSX107.ger.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-f68.google.com (mail-wm0-f68.google.com [74.125.82.68]) by gabe.freedesktop.org (Postfix) with ESMTPS id 73DEB6EC6B for ; Fri, 22 Jan 2016 09:14:25 -0800 (PST) Received: by mail-wm0-f68.google.com with SMTP id u188so19026828wmu.0 for ; Fri, 22 Jan 2016 09:14:25 -0800 (PST) Content-Disposition: inline In-Reply-To: <38ACF0BC99FA3A449472D1EE32ACA1EA2B2917F0@IRSMSX107.ger.corp.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Davies, Devon" Cc: "Vetter, Daniel" , "intel-gfx@lists.freedesktop.org" , "Zanoni, Paulo R" List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBKYW4gMjIsIDIwMTYgYXQgMDM6MTg6MTVQTSArMDAwMCwgRGF2aWVzLCBEZXZvbiB3 cm90ZToKPiBIaSwKPiAKPiBUaGFua3MgZm9yIHRoZSBmZWVkYmFjay4KPiAKPiBJJ2xsIHVwZGF0 ZSB0aGUgY29tbWl0IHRpdGxlLiBJIHdpbGwgYWxzbyBzZXBhcmF0ZSB0aGlzIHBhdGNoIGludG8g NSBwYXRjaGVzLgo+IAo+IEZvciBub3cgSSB3YW50IHRvIGtlZXAgdGhlICJpZmRlZiBkYW5jZSIg aW4gaWd0X2ZiYy5jLiBJZiB3ZSB3YW50IHRvIHNwbGl0IHRoZSBmaWxlIHVwLCB0aGF0IHNob3Vs ZCBiZSBhIG5ldyBjb21taXQvcGF0Y2guCj4gKEkgdGhpbmsgd2Ugc2hvdWxkIGdldCB0aGUgZmJj IHRlc3RzIGJ1aWxkaW5nIG9uIEFuZHJvaWQgZmlyc3QgYmVmb3JlIHdlIHN0YXJ0IHRoZSBzcGxp dHRpbmcgdXAgaWd0X2ZiYy5jLCBzaW5jZSB3ZSB3YW50IHRvIHN0YXJ0IHRlc3RpbmcgYXNhcC4p CgpOb3BlLCBubyAjaWZkZWYgbWFkbmVzcyBpbiBsaWJyYXJ5IGNvZGUuIElmIHdlIG5lZWQgdGhh dCBpbiBoZWFkZXJzLCBvcgpmb3IgdHJ1bHkgZXhjZXB0aW9uYWwgY2FzZXMgaW4gaW50ZWxfb3Mu YyB0aGVuIG9rLiBCdXQgaW4gY29yZSBsaWJyYXJ5CmNvZGUgaXQganVzdCBtYWtlcyByZWFkaW5n IHRoaW5ncyBtdWNoLCBtdWNoIGhhcmRlci4gU28gZWl0aGVyIHdlIHJld3JpdGUKaWd0X2ZiLmMg dG8gbm90IG5lZWQgY2Fpcm8gYXQgYWxsLCBvciBhbmRyb2lkIGp1c3QgZ3Jvd3MgaXRzZWxmIHNv bWUKY2Fpcm8uCgpUaGFua3MsIERhbmllbAoKPiAKPiBJIGxvb2tlZCB0byBzZWUgaWYgSSBoYWQg cmVtb3ZlZC9hZGRlZCBhbnkgZXh0cmEgbGluZXMuLi4gc29tZSBtdXN0IGhhdmUgbWlzc2VkIG1l LCBJIHdpbGwgcmV2ZXJ0IHRoZW0uCj4gCj4gVGhlIGZmcyBkZWZpbmU6IEkgY2FuIHNlZSB0aGF0 IGJlaW5nIGRhbmdlcm91cy4KPiBTaG91bGQgSSBkbwo+ICNpZiBkZWZpbmVkKF9fR05VQ19fKQo+ ICNkZWZpbmUgZmZzIF9fYnVpbHRpbl9mZnMKPiAjZW5kaWYKPiA/Cj4gSW4gbXkgb3BpbmlvbiB0 aGF0IGlzIGNsZWFuZXIgdGhhbiBoYXZpbmcgYSBpZmRlZiBhcm91bmQgdGhlIGFjdHVhbCBmZnMg ZnVuY3Rpb24gY2FsbC4gSXQncyBhbHNvIGVhc2llciB0byBhZGQgdG8gKGluIGNhc2Ugc29tZW9u ZSBpbiB0aGUgZnV0dXJlIHVzZXMgYSBkaWZmZXJlbnQgY29tcGlsZXIpLgo+IAo+IGlndF9kcm1f cGxhbmVfY29tbWl0Ogo+IEkgZG9uJ3Qga25vdyB3aHkgQW5kcm9pZCBpcyBkaWZmZXJlbnQsIGFj Y29yZGluZyB0byBnaXQgYmxhbWUsIGl0J3MgYmVlbiB0aGlzIHdheSBzaW5jZSAxM3RoIEp1bmUg MjAxNC4KPiBJJ2xsIGFzayB3aHkgc2VwYXJhdGVseSB0byB0aGlzIHRocmVhZC4KPiBBcyBmb3Ig bWFraW5nIGEgd3JhcHBlci4gSSB0aGluayB0aGF0IHNob3VsZCBiZSBwYXJ0IG9mIGFub3RoZXIg Y29tbWl0Lgo+IChBZ2FpbiB0byBiZSBkb25lIGFmdGVyIHRoaXMsIHNpbmNlIHdlIHdhbnQgdG8g YmVnaW4gdGVzdGluZyBhc2FwLikKPiAKPiBUaGFua3MsCj4gRGV2b24uCj4gCj4gLS0tLS1Pcmln aW5hbCBNZXNzYWdlLS0tLS0KPiBGcm9tOiBaYW5vbmksIFBhdWxvIFIgCj4gU2VudDogV2VkbmVz ZGF5LCBKYW51YXJ5IDIwLCAyMDE2IDc6MzUgUE0KPiBUbzogaW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZzsgRGF2aWVzLCBEZXZvbgo+IENjOiBHb3JlLCBUaW07IFZldHRlciwgRGFuaWVs Cj4gU3ViamVjdDogUmU6IFtJbnRlbC1nZnhdIFtQQVRDSCBpLWctdF0gdGVzdHMva21zX2ZiY19j cmMuYzogTm8gbG9uZ2VyIGRlcGVuZGFudCBvbiBDYWlybyBBIHNldHVwIGZ1bmN0aW9uIHRoYXQg dXNlZCB0byB1c2UgQ2Fpcm8gdG8gZHJhdyAyIHJlY3RhbmdsZXMgY292ZXJpbmcgdGhlIHdob2xl IHNjcmVlbiBoYXMgYmVlbiBjaGFuZ2VkIHRvIHVzZSBpZ3RfZHJhdwo+IAo+IEhpCj4gCj4gSW4g b3VyIElHVC9LZXJuZWwgY3VsdHVyZSwgcGF0Y2ggY29tbWl0IHRpdGxlcyAoaGVyZSwgcHJlc2Vu dGVkIGFzIHRoZSBlbWFpbCBzdWJqZWN0KSBhcmUgdXN1YWxseSBzbWFsbCAodW5kZXIgNzAtODAg Y2hhcnMpIHByb3ZpZGluZyBhIHF1aWNrIHN1bW1hcnkgb2Ygd2hhdCB0aGUgY2hhbmdlIGRvZXMu Cj4gCj4gQWxzbywgd2UgdHJ5IHRvIG1ha2UgZWFjaCBwYXRjaCBjb250YWluIGEgc2luZ2xlIGxv Z2ljYWwgYW5kIGNvbXBsZXRlIGNoYW5nZS4gU28sIGZvciBleGFtcGxlLCBvbmUgYXBwcm9hY2gg eW91IGNvdWxkIGhhdmUgdGFrZW4gaGVyZSB3b3VsZAo+IGJlOgo+IMKgLSBwYXRjaCAxOiB1cGRh dGUgbGliL2lndF9mYi5jIHNvIGl0IGNvbXBpbGVzIG9uIEFuZHJvaWQgd2l0aG91dCBjYWlybwo+ IMKgLSBwYXRjaCAyOiBzb2x2ZSB0aGUgZmZzKCkgcHJvYmxlbQo+IMKgLSBwYXRjaCAzOiBzb2x2 ZSB0aGUgZHJtTW9kZVNldFBsYW5lKCkgcHJvYmxlbQo+IMKgLSBwYXRjaCA0OiBjaGFuZ2Uga21z X2ZiY19jcmMgdG8gbm90IG5lZWQgY2Fpcm8KPiDCoC0gcGF0Y2ggNTogY2hhbmdlIHRoZSBidWls ZCBzeXN0ZW0gc28gaXQgY29tcGlsZXMgdGVzdHMgdGhhdCBub3cgd29yayBvbiBBbmRyb2lkCj4g Cj4gRm9sbG93aW5nIGlzIGFub3RoZXIgdGV4dCBleHBsYWluaW5nIHRoaXMgcGF0dGVybjoKPiBo dHRwOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcvZHJtLWludGVsL3RyZWUvRG9jdW1lbnRhdGlvbi9T dWJtaXR0aW5nUGF0Ywo+IGhlcyNuMjAxCj4gCj4gCj4gTm93LCByZWdhcmRpbmcgdGhlIEFuZHJv aWQgdnMgQ2Fpcm8gbWFjcm9zOiBJIGtub3cgdGhpcyBoYXMgYmVlbiBkaXNjdXNzZWQgaW4gdGhl IG1haWxpbmcgbGlzdCBhIGZldyB0aW1lcyBidXQgSSBkaWRuJ3QgZm9sbG93IGl0IGNsb3NlbHks IGFuZCBJR1QgZXZlbiBoYXMgdGhlIEFORFJPSURfSEFTX0NBSVJPIHN1cHBvcnQsIHNvIEknZCBs aWtlIERhbmllbCBvciBvdGhlcnMgdG8gY29tbWVudCBvbiB0aGlzLiBEbyB3ZSB3YW50IHRoZSBp ZmRlZiBkYW5jZSBpbiBpZ3RfZmI/IFBlcmhhcHMgd2UgY291bGQgc3BsaXQgdGhlIGxpYnMgaW50 byBpZ3RfZmIgZm9yIHRoZSBub24tY2Fpcm8gcGFydHMsIGFuZCBpZ3RfY2Fpcm8gZm9yIHRoZSBj YWlybyBwYXJ0cz8gVGhlIGlndF9mYiBsaWJyYXJ5IGlzIGRlZmluaXRlbHkgdXNlZnVsIHdpdGhv dXQgY2Fpcm8sIHNvIHRoaXMgd291bGQgbWFrZSBzZW5zZSB0byBtZS4gQnV0IHBlcmhhcHMgd2Ug d2FudCB0byBqdXN0IGtlZXAgZXZlcnl0aGluZyBhcy1pcyBzaW5jZSBpdCdzIHBvc3NpYmxlIHRv IGhhdmUgY2Fpcm8gb24gQW5kcm9pZD8KPiAKPiBUaGVyZSBhcmUgc29tZSBvdGhlciBjb21tZW50 cyBpbmxpbmUuIFBsZWFzZSBzZWUgYmVsb3cuCj4gCj4gCj4gRW0gU2V4LCAyMDE2LTAxLTE1IMOg cyAxNTo0MiArMDAwMCwgZGV2b24uZGF2aWVzQGludGVsLmNvbSBlc2NyZXZldToKPiA+IEZyb206 IERldm9uIERhdmllcyA8ZGV2b24uZGF2aWVzQGludGVsLmNvbT4KPiA+IAo+ID4gdGVzdHMva21z X2Zyb250YnVmZmVyX3RyYWNraW5nLmM6IE5vdyBidWlsZHMgd2l0aCBEUk1fUFJJTUFSWV9ESVNB QkxFCj4gPiDCoMKgwqDCoEVhY2ggY2FsbCB0byB0aGUgZnVuY3Rpb24gZHJtTW9kZVNldFBsYW5l IG5vdyBoYXMgYW4gYWRkdGlvbmFsIAo+ID4gTlVMTCBpbiB0aGUKPiA+IMKgwqDCoMKgYXJndW1l bnRzIGlmIERSTV9QUklNQVJZX0RJU0FCTEUgaXMgc2V0Lgo+ID4gCj4gPiB0ZXN0cy9BbmRyb2lk Lm1rOiBBbGxvdyB0aGUgYWJvdmUgdGVzdHMgdG8gYmUgYnVpbHQgd2l0aG91dCBDYWlybwo+ID4g wqDCoMKgwqBTaW1wbHkgcmVtb3ZlZCB0aGVtIGZyb20gdGhlIHRlc3RzIHRoZSBiZSBza2lwcGVk Lgo+ID4gCj4gPiBsaWJzL2lndF9rbXMuYzogTm93IGJ1aWxkcyB3aXRoIERSTV9QUklNQVJZX0RJ U0FCTEUKPiA+IMKgwqDCoMKgSSBoYWQgdG8gZGVmaW5lIGZmcyBhcyBfX2J1aWx0aW5fZnNzIGR1 ZSB0byBjb21waWxlciBpc3N1ZXMuCj4gPiDCoMKgwqDCoEVhY2ggY2FsbCB0byB0aGUgZnVuY3Rp b24gZHJtTW9kZVNldFBsYW5lIG5vdyBoYXMgYW4gYWRkdGlvbmFsIAo+ID4gTlVMTCBpbiB0aGUK PiA+IMKgwqDCoMKgYXJndW1lbnRzIGlmIERSTV9QUklNQVJZX0RJU0FCTEUgaXMgc2V0Lgo+ID4g Cj4gPiBsaWJzL2lndF9mYi5jOiBXaWxsIG5vdyBidWlsZCBzb21lIGZ1bmN0aW9ucyB3aXRob3V0 IENhaXJvCj4gPiDCoMKgwqDCoEZ1bmN0aW9ucyB3aGljaCBhcmVuJ3QgdXNlZCBieSB0aGUgZnJh bWVidWZmZXIgY29tcHJlc3Npb24gdGVzdHMgCj4gPiBhcmUKPiA+IMKgwqDCoMKgbm93IGJlaGlu ZCBhbiAjaWYgKCFkZWZpbmVkKEFORFJPSUQpKSB8fCAoZGVmaW5lZChBTkRST0lEKSAmJgo+ID4g wqDCoMKgwqBBTkRST0lEX0hBU19DQUlSTwo+ID4gCj4gPiBsaWJzL0FuZHJvaWQubWsKPiA+IMKg wqDCoMKgaWd0X2ZiIGFuZCBpZ3Rfa21zIGFyZSBubyBsb25nZXIgaWdub3JlZCBpZiB3ZSBkb24n dCBoYXZlIENhaXJvLgo+ID4gCj4gPiBUaGUgdGVzdHMga21zX2ZiY19jcmMgYW5kIGttc19mcm9u dGJ1ZmZlcl90cmFja2luZyBoYWQgYW4gdW5uZWNlc3NhcnkgCj4gPiBkZXBlbmRhbmNlIG9uIHRo ZSBDYWlybyBncmFwaGljcyBlbmdpbmUuCj4gPiBBbHNvLCBkcm1Nb2RlU2V0UGxhbmUgbWF5IGhh dmUgYW4gYWRkaXRpb25hbCBhcmd1bWVudCBpZiAKPiA+IERSTV9QUklNQVJZX0RJU0FCTEUgaXMg c2V0IChhcyBpdCB3YXMgZm9yIG1lKSwgSSBoYXZlIGZpeGVkIHRoYXQgCj4gPiBpc3N1ZS4KPiA+ IAo+ID4gU2lnbmVkLW9mZi1ieTogRGV2b24gRGF2aWVzIDxkZXZvbi5kYXZpZXNAaW50ZWwuY29t Pgo+ID4gLS0tCj4gPiDCoGxpYi9BbmRyb2lkLm1rwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB8wqDCoDQgLS0KPiA+IMKgbGliL2lndF9mYi5jwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfCAyNiArKysrKysrKysrKystCj4gPiDCoGxpYi9pZ3Rf a21zLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfCAxNSArKysrKyst LQo+ID4gwqB0ZXN0cy9BbmRyb2lkLm1rwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHzCoMKgNSArKysKPiA+IMKgdGVzdHMva21zX2ZiY19jcmMuY8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqB8IDIwICsrKysrKy0tLS0KPiA+IMKgdGVzdHMva21zX2Zyb250YnVmZmVyX3RyYWNr aW5nLmMgfCA3OQo+ID4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLQo+ ID4gwqA2IGZpbGVzIGNoYW5nZWQsIDExOSBpbnNlcnRpb25zKCspLCAzMCBkZWxldGlvbnMoLSkK PiA+IAo+ID4gZGlmZiAtLWdpdCBhL2xpYi9BbmRyb2lkLm1rIGIvbGliL0FuZHJvaWQubWsgaW5k ZXggYmFkZWMxZS4uYmJkYjA1MSAKPiA+IDEwMDY0NAo+ID4gLS0tIGEvbGliL0FuZHJvaWQubWsK PiA+ICsrKyBiL2xpYi9BbmRyb2lkLm1rCj4gPiBAQCAtMzcsMTAgKzM3LDYgQEAgaWZlcSAoIiR7 QU5EUk9JRF9IQVNfQ0FJUk99IiwgIjEiKQo+ID4gwqDCoMKgwqDCoExPQ0FMX0NfSU5DTFVERVMg Kz0gJChBTkRST0lEX0JVSUxEX1RPUCkvZXh0ZXJuYWwvY2Fpcm8tCj4gPiAxLjEyLjE2L3NyYwo+ ID4gwqDCoMKgwqDCoExPQ0FMX0NGTEFHUyArPSAtREFORFJPSURfSEFTX0NBSVJPPTEgLURJR1Rf REFUQURJUj1cIi5cIgo+ID4gLURJR1RfU1JDRElSPVwiLlwiCj4gPiDCoGVsc2UKPiA+IC1za2lw X2xpYl9saXN0IDo9IFwKPiA+IC3CoMKgwqDCoGlndF9rbXMuYyBcCj4gPiAtwqDCoMKgwqBpZ3Rf a21zLmggXAo+ID4gLcKgwqDCoMKgaWd0X2ZiLmMKPiA+IMKgwqDCoMKgwqAtREFORFJPSURfSEFT X0NBSVJPPTAKPiA+IMKgZW5kaWYKPiA+IMKgCj4gPiBkaWZmIC0tZ2l0IGEvbGliL2lndF9mYi5j IGIvbGliL2lndF9mYi5jIGluZGV4IGM5ODU4MjQuLjVhY2RhYTcgMTAwNjQ0Cj4gPiAtLS0gYS9s aWIvaWd0X2ZiLmMKPiA+ICsrKyBiL2xpYi9pZ3RfZmIuYwo+ID4gQEAgLTMzLDYgKzMzLDcgQEAK PiA+IMKgI2luY2x1ZGUgImlndF9mYi5oIgo+ID4gwqAjaW5jbHVkZSAiaW9jdGxfd3JhcHBlcnMu aCIKPiA+IMKgCj4gPiArCj4gCj4gUGxlYXNlIGRvbid0IGFkZCByYW5kb20gbGluZXMgdG8gZmls ZXMuCj4gCj4gCj4gPiDCoC8qKgo+ID4gwqAgKiBTRUNUSU9OOmlndF9mYgo+ID4gwqAgKiBAc2hv cnRfZGVzY3JpcHRpb246IEZyYW1lYnVmZmVyIGhhbmRsaW5nIGFuZCBkcmF3aW5nIGxpYnJhcnkg QEAgCj4gPiAtNTIsMTEgKzUzLDIzIEBACj4gPiDCoCAqLwo+ID4gwqAKPiA+IMKgLyogZHJtIGZv dXJjYy9jYWlybyBmb3JtYXQgbWFwcyAqLwo+ID4gKyNpZiAoIWRlZmluZWQoQU5EUk9JRCkpIHx8 IChkZWZpbmVkKEFORFJPSUQpICYmIEFORFJPSURfSEFTX0NBSVJPKQo+ID4gKwo+ID4gwqAjZGVm aW5lIERGKGRpZCwgY2lkLCBfYnBwLCBfZGVwdGgpCVwKPiA+IMKgCXsgRFJNX0ZPUk1BVF8jI2Rp ZCwgQ0FJUk9fRk9STUFUXyMjY2lkLCAjIGRpZCwgX2JwcCwgX2RlcHRoIH0KPiA+ICsKPiA+ICsj ZWxzZQo+ID4gKwo+ID4gKyNkZWZpbmUgREYoZGlkLCBjaWQsIF9icHAsIF9kZXB0aCkJXAo+ID4g Kwl7IERSTV9GT1JNQVRfIyNkaWQsICMgZGlkLCBfYnBwLCBfZGVwdGggfQo+ID4gKwo+ID4gKyNl bmRpZgo+ID4gKwo+ID4gwqBzdGF0aWMgc3RydWN0IGZvcm1hdF9kZXNjX3N0cnVjdCB7Cj4gPiDC oAl1aW50MzJfdCBkcm1faWQ7Cj4gPiArI2lmICghZGVmaW5lZChBTkRST0lEKSkgfHwgKGRlZmlu ZWQoQU5EUk9JRCkgJiYgQU5EUk9JRF9IQVNfQ0FJUk8pCj4gPiDCoAljYWlyb19mb3JtYXRfdCBj YWlyb19pZDsKPiA+ICsjZW5kaWYKPiA+IMKgCWNvbnN0IGNoYXIgKm5hbWU7Cj4gPiDCoAlpbnQg YnBwOwo+ID4gwqAJaW50IGRlcHRoOwo+ID4gQEAgLTcyLDcgKzg1LDYgQEAgc3RhdGljIHN0cnVj dCBmb3JtYXRfZGVzY19zdHJ1Y3Qgewo+ID4gwqAjZGVmaW5lIGZvcl9lYWNoX2Zvcm1hdChmKQlc Cj4gPiDCoAlmb3IgKGYgPSBmb3JtYXRfZGVzYzsgZiAtIGZvcm1hdF9kZXNjIDwgQVJSQVlfU0la RShmb3JtYXRfZGVzYyk7IAo+ID4gZisrKQo+ID4gwqAKPiA+IC0KPiAKPiBQbGVhc2UgZG9uJ3Qg cmVtb3ZlIHJhbmRvbSBsaW5lcyBmcm9tIGZpbGVzLgo+IAo+IAo+ID4gwqAvKiBoZWxwZXJzIHRv IGNyZWF0ZSBuaWNlLWxvb2tpbmcgZnJhbWVidWZmZXJzICovCj4gPiDCoHN0YXRpYyBpbnQgY3Jl YXRlX2JvX2Zvcl9mYihpbnQgZmQsIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IGJwcCwKPiA+ IMKgCQkJwqDCoMKgwqB1aW50NjRfdCB0aWxpbmcsIHVuc2lnbmVkIGJvX3NpemUsIEBAIC0xMjUs NiArMTM3LDggQEAgc3RhdGljIAo+ID4gaW50IGNyZWF0ZV9ib19mb3JfZmIoaW50IGZkLCBpbnQg d2lkdGgsIGludCBoZWlnaHQsIGludCBicHAsCj4gPiDCoAlyZXR1cm4gcmV0Owo+ID4gwqB9Cj4g PiDCoAo+ID4gKyNpZiAoIWRlZmluZWQoQU5EUk9JRCkpIHx8IChkZWZpbmVkKEFORFJPSUQpICYm IEFORFJPSURfSEFTX0NBSVJPKQo+ID4gKwo+ID4gwqAvKioKPiA+IMKgICogaWd0X3BhaW50X2Nv bG9yOgo+ID4gwqAgKiBAY3I6IGNhaXJvIGRyYXdpbmcgY29udGV4dAo+ID4gQEAgLTM5NCw2ICs0 MDgsNyBAQCB2b2lkIGlndF9wYWludF9pbWFnZShjYWlyb190ICpjciwgY29uc3QgY2hhciAKPiA+ ICpmaWxlbmFtZSwKPiA+IMKgCj4gPiDCoAlmY2xvc2UoZik7Cj4gPiDCoH0KPiA+ICsjZW5kaWYK PiA+IMKgCj4gPiDCoC8qKgo+ID4gwqAgKiBpZ3RfY3JlYXRlX2ZiX3dpdGhfYm9fc2l6ZToKPiA+ IEBAIC00OTQsNiArNTA5LDcgQEAgdW5zaWduZWQgaW50IGlndF9jcmVhdGVfZmIoaW50IGZkLCBp bnQgd2lkdGgsIGludCAKPiA+IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LAo+ID4gwqAJcmV0dXJu IGlndF9jcmVhdGVfZmJfd2l0aF9ib19zaXplKGZkLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHRp bGluZywgCj4gPiBmYiwKPiA+IMKgCQkJCQnCoMKgMCwgMCk7Cj4gPiDCoH0KPiA+ICsjaWYgKCFk ZWZpbmVkKEFORFJPSUQpKSB8fCAoZGVmaW5lZChBTkRST0lEKSAmJiBBTkRST0lEX0hBU19DQUlS TykKPiA+IMKgCj4gPiDCoC8qKgo+ID4gwqAgKiBpZ3RfY3JlYXRlX2NvbG9yX2ZiOgo+ID4gQEAg LTk4NSw2ICsxMDAxLDcgQEAgdm9pZCBpZ3Rfd3JpdGVfZmJfdG9fcG5nKGludCBmZCwgc3RydWN0 IGlndF9mYiAKPiA+ICpmYiwgY29uc3QgY2hhciAqZmlsZW5hbWUpCj4gPiDCoAo+ID4gwqAJaWd0 X2Fzc2VydChzdGF0dXMgPT0gQ0FJUk9fU1RBVFVTX1NVQ0NFU1MpOwo+ID4gwqB9Cj4gPiArI2Vu ZGlmCj4gPiDCoAo+ID4gwqAvKioKPiA+IMKgICogaWd0X3JlbW92ZV9mYjoKPiA+IEBAIC05OTcs MTAgKzEwMTQsMTMgQEAgdm9pZCBpZ3Rfd3JpdGVfZmJfdG9fcG5nKGludCBmZCwgc3RydWN0IGln dF9mYiAKPiA+ICpmYiwgY29uc3QgY2hhciAqZmlsZW5hbWUpCj4gPiDCoCAqLwo+ID4gwqB2b2lk IGlndF9yZW1vdmVfZmIoaW50IGZkLCBzdHJ1Y3QgaWd0X2ZiICpmYikKPiA+IMKgewo+ID4gKyNp ZiAoIWRlZmluZWQoQU5EUk9JRCkpIHx8IChkZWZpbmVkKEFORFJPSUQpICYmIEFORFJPSURfSEFT X0NBSVJPKQo+ID4gwqAJY2Fpcm9fc3VyZmFjZV9kZXN0cm95KGZiLT5jYWlyb19zdXJmYWNlKTsK PiA+ICsjZW5kaWYKPiA+IMKgCWRvX29yX2RpZShkcm1Nb2RlUm1GQihmZCwgZmItPmZiX2lkKSk7 Cj4gPiDCoAlnZW1fY2xvc2UoZmQsIGZiLT5nZW1faGFuZGxlKTsKPiA+IMKgfQo+ID4gKyNpZiAo IWRlZmluZWQoQU5EUk9JRCkpIHx8IChkZWZpbmVkKEFORFJPSUQpICYmIEFORFJPSURfSEFTX0NB SVJPKQo+ID4gwqAKPiA+IMKgLyoqCj4gPiDCoCAqIGlndF9icHBfZGVwdGhfdG9fZHJtX2Zvcm1h dDoKPiA+IEBAIC0xMDI0LDYgKzEwNDQsOCBAQCB1aW50MzJfdCBpZ3RfYnBwX2RlcHRoX3RvX2Ry bV9mb3JtYXQoaW50IGJwcCwgCj4gPiBpbnQgZGVwdGgpCj4gPiDCoAkJwqDCoMKgwqDCoGRlcHRo KTsKPiA+IMKgfQo+ID4gwqAKPiA+ICsjZW5kaWYKPiA+ICsKPiA+IMKgLyoqCj4gPiDCoCAqIGln dF9kcm1fZm9ybWF0X3RvX2JwcDoKPiA+IMKgICogQGRybV9mb3JtYXQ6IGRybSBmb3VyY2MgcGl4 ZWwgZm9ybWF0IGNvZGUgQEAgLTEwNjIsNiArMTA4NCw3IEBAIAo+ID4gY29uc3QgY2hhciAqaWd0 X2Zvcm1hdF9zdHIodWludDMyX3QgZHJtX2Zvcm1hdCkKPiA+IMKgCj4gPiDCoAlyZXR1cm4gImlu dmFsaWQiOwo+ID4gwqB9Cj4gPiArI2lmICghZGVmaW5lZChBTkRST0lEKSkgfHwgKGRlZmluZWQo QU5EUk9JRCkgJiYgQU5EUk9JRF9IQVNfQ0FJUk8pCj4gPiDCoAo+ID4gwqAvKioKPiA+IMKgICog aWd0X2dldF9hbGxfZm9ybWF0czoKPiA+IEBAIC0xMDg5LDMgKzExMTIsNCBAQCB2b2lkIGlndF9n ZXRfYWxsX2Zvcm1hdHMoY29uc3QgdWludDMyX3QgCj4gPiAqKmZvcm1hdHMsIGludCAqZm9ybWF0 X2NvdW50KQo+ID4gwqAJKmZvcm1hdHMgPSBkcm1fZm9ybWF0czsKPiA+IMKgCSpmb3JtYXRfY291 bnQgPSBBUlJBWV9TSVpFKGZvcm1hdF9kZXNjKTsKPiA+IMKgfQo+ID4gKyNlbmRpZgo+ID4gZGlm ZiAtLWdpdCBhL2xpYi9pZ3Rfa21zLmMgYi9saWIvaWd0X2ttcy5jIGluZGV4IDQ5NzExOGEuLjdi NjgyY2IgCj4gPiAxMDA2NDQKPiA+IC0tLSBhL2xpYi9pZ3Rfa21zLmMKPiA+ICsrKyBiL2xpYi9p Z3Rfa21zLmMKPiA+IEBAIC00OSw2ICs0OSw4IEBACj4gPiDCoCNpbmNsdWRlICJpbnRlbF9jaGlw c2V0LmgiCj4gPiDCoCNpbmNsdWRlICJpZ3RfZGVidWdmcy5oIgo+ID4gwqAKPiA+ICsjZGVmaW5l IGZmcyBfX2J1aWx0aW5fZmZzCj4gCj4gQSBkZWZpbmUgbGlrZSB0aGlzIGNhbiBiZSBkYW5nZXJv dXMuIFNob3VsZG4ndCB3ZSBqdXN0IGZpeCBhbGwgdGhlIGNhbGxlcnMsIHNvIGNvZGUgcmVhZGVy cyBrbm93IGV4YWN0bHkgd2hpY2ggZnVuY3Rpb24gaXMgYmVpbmcgcnVuPwo+IAo+IE9uIHRoZSBv dGhlciBoYW5kLCBpdCBzZWVtcyB0aGF0IHRoaXMgY2hhbmdlIHdpbGwgcmVzdHJpY3QgdXMgdG8g Z2NjLSBvbmx5LiBTbyBtYXliZSB3ZSBjb3VsZCBqdXN0IGRlZmluZSBmZnMgYXMgX19idWlsdGlu X2ZmcyBpZiBBTkRST0lEIGlzIGRlZmluZWQ/Cj4gCj4gCj4gPiArCj4gPiDCoC8qIGxpc3Qgb2Yg Y29ubmVjdG9ycyB0aGF0IG5lZWQgcmVzZXR0aW5nIG9uIGV4aXQgKi8KPiA+IMKgI2RlZmluZSBN QVhfQ09OTkVDVE9SUyAzMgo+ID4gwqBzdGF0aWMgY2hhciAqZm9yY2VkX2Nvbm5lY3RvcnNbTUFY X0NPTk5FQ1RPUlMgKyAxXTsgQEAgLTEzNTQsOCAKPiA+ICsxMzU2LDExIEBAIHN0YXRpYyBpbnQg aWd0X2RybV9wbGFuZV9jb21taXQoaWd0X3BsYW5lX3QgKnBsYW5lLAo+ID4gwqAJCQkJwqDCoMKg wqDCoMKgSUdUX0ZJWEVEKDAsMCksIC8qIHNyY194ICovCj4gPiDCoAkJCQnCoMKgwqDCoMKgwqBJ R1RfRklYRUQoMCwwKSwgLyogc3JjX3kgKi8KPiA+IMKgCQkJCcKgwqDCoMKgwqDCoElHVF9GSVhF RCgwLDApLCAvKiBzcmNfdyAqLwo+ID4gLQkJCQnCoMKgwqDCoMKgwqBJR1RfRklYRUQoMCwwKSAv KiBzcmNfaCAqLyk7Cj4gPiAtCj4gPiArCQkJCcKgwqDCoMKgwqDCoElHVF9GSVhFRCgwLDApIC8q IHNyY19oICovCj4gPiArI2lmIERSTV9QUklNQVJZX0RJU0FCTEUKPiA+ICsJCQkJCcKgwqAsIE5V TEwKPiA+ICsjZW5kaWYKPiAKPiBJZiB3ZSdyZSBnb2luZyB0aGlzIHdheSwgbWF5YmUgdGhlIGJl c3QgYXBwcm9hY2ggd291bGQgYmUgdG8gYWRkIGEgd3JhcHBlciAoaWd0X2ttc19zZXRfcGxhbmU/ KSBhbmQgbWFrZSB0aGUgY3VycmVudCBjYWxsZXJzIHVzZSBpdC4KPiAKPiBPbiBhIHNpZGUgbm90 ZTogd2h5IGlzIEFuZHJvaWQgZGlmZmVyZW50IGhlcmUhPwo+IAo+IAo+IFRoYW5rcywKPiBQYXVs bwo+IAo+ID4gKwkJCQkJwqDCoCk7Cj4gPiDCoAkJQ0hFQ0tfUkVUVVJOKHJldCwgZmFpbF9vbl9l cnJvcik7Cj4gPiDCoAl9IGVsc2UgaWYgKHBsYW5lLT5mYl9jaGFuZ2VkIHx8IHBsYW5lLT5wb3Np dGlvbl9jaGFuZ2VkIHx8Cj4gPiDCoAkJcGxhbmUtPnNpemVfY2hhbmdlZCkgewo+ID4gQEAgLTEz ODYsNyArMTM5MSwxMSBAQCBzdGF0aWMgaW50IGlndF9kcm1fcGxhbmVfY29tbWl0KGlndF9wbGFu ZV90IAo+ID4gKnBsYW5lLAo+ID4gwqAJCQkJwqDCoMKgwqDCoMKgY3J0Y194LCBjcnRjX3ksCj4g PiDCoAkJCQnCoMKgwqDCoMKgwqBjcnRjX3csIGNydGNfaCwKPiA+IMKgCQkJCcKgwqDCoMKgwqDC oHNyY194LCBzcmNfeSwKPiA+IC0JCQkJwqDCoMKgwqDCoMKgc3JjX3csIHNyY19oKTsKPiA+ICsJ CQkJwqDCoMKgwqDCoMKgc3JjX3csIHNyY19oCj4gPiArI2lmIERSTV9QUklNQVJZX0RJU0FCTEUK PiA+ICsJCQkJCcKgwqAsIE5VTEwKPiA+ICsjZW5kaWYKPiA+ICsJCQkJCcKgwqApOwo+ID4gwqAK PiA+IMKgCQlDSEVDS19SRVRVUk4ocmV0LCBmYWlsX29uX2Vycm9yKTsKPiA+IMKgCX0KPiA+IGRp ZmYgLS1naXQgYS90ZXN0cy9BbmRyb2lkLm1rIGIvdGVzdHMvQW5kcm9pZC5tayBpbmRleCAKPiA+ IDg0NTcxMjUuLmViMjg3YTYgMTAwNjQ0Cj4gPiAtLS0gYS90ZXN0cy9BbmRyb2lkLm1rCj4gPiAr KysgYi90ZXN0cy9BbmRyb2lkLm1rCj4gPiBAQCAtNjUsNiArNjUsMTEgQEAgZWxzZQo+ID4gwqAK PiA+IMKgwqDCoMKgwqB0bXBfbGlzdCA6PSAkKGZvcmVhY2ggdGVzdF9uYW1lLCAkKFRFU1RTX3By b2dzX00pLFwKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoCQoaWYgJChmaW5kc3RyaW5nIGttc18sJCh0 ZXN0X25hbWUpKSwkKHRlc3RfbmFtZSkpKQo+ID4gKwo+ID4gKyMga21zX2ZiY19jcmMgYW5kIGtt c19mcm9udGJ1ZmZlcl90cmFja2luZyBubyBsb25nZXIgZGVwZW5kIG9uIENhaXJvCj4gPiArwqDC oMKgwqB0bXBfbGlzdCA6PSAkKGZpbHRlci1vdXQga21zX2ZiY19jcmMsICQodG1wX2xpc3QpKQo+ ID4gK8KgwqDCoMKgdG1wX2xpc3QgOj0gJChmaWx0ZXItb3V0IGttc19mcm9udGJ1ZmZlcl90cmFj a2luZywgJCh0bXBfbGlzdCkpCj4gPiArCj4gPiDCoMKgwqDCoMKgc2tpcF90ZXN0c19saXN0ICs9 ICQodG1wX2xpc3QpCj4gPiDCoAo+ID4gwqDCoMKgwqDCoElHVF9MT0NBTF9DRkxBR1MgKz0gLURB TkRST0lEX0hBU19DQUlSTz0wIGRpZmYgLS1naXQgCj4gPiBhL3Rlc3RzL2ttc19mYmNfY3JjLmMg Yi90ZXN0cy9rbXNfZmJjX2NyYy5jIGluZGV4IDAyZTk1ZTUuLjcxN2U4OTEgCj4gPiAxMDA2NDQK PiA+IC0tLSBhL3Rlc3RzL2ttc19mYmNfY3JjLmMKPiA+ICsrKyBiL3Rlc3RzL2ttc19mYmNfY3Jj LmMKPiA+IEBAIC0zMzYsMTQgKzMzNiwxOCBAQCBzdGF0aWMgdm9pZCBjcmVhdGVfZmJzKGRhdGFf dCAqZGF0YSwgYm9vbCB0aWxlZCwgCj4gPiBzdHJ1Y3QgaWd0X2ZiICpmYnMpCj4gPiDCoAl1aW50 NjRfdCB0aWxpbmcgPSB0aWxlZCA/IExPQ0FMX0k5MTVfRk9STUFUX01PRF9YX1RJTEVEIDoKPiA+ IMKgCQkJCcKgwqBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FOwo+ID4gwqAKPiA+IC0JcmMgPSBp Z3RfY3JlYXRlX2NvbG9yX2ZiKGRhdGEtPmRybV9mZCwgbW9kZS0+aGRpc3BsYXksIG1vZGUtCj4g PiA+dmRpc3BsYXksCj4gPiAtCQkJCcKgRFJNX0ZPUk1BVF9YUkdCODg4OCwgdGlsaW5nLAo+ID4g LQkJCQnCoDAuMCwgMC4wLCAwLjAsICZmYnNbMF0pOwo+ID4gLQlpZ3RfYXNzZXJ0KHJjKTsKPiA+ IC0JcmMgPSBpZ3RfY3JlYXRlX2NvbG9yX2ZiKGRhdGEtPmRybV9mZCwgbW9kZS0+aGRpc3BsYXks IG1vZGUtCj4gPiA+dmRpc3BsYXksCj4gPiAtCQkJCcKgRFJNX0ZPUk1BVF9YUkdCODg4OCwgdGls aW5nLAo+ID4gLQkJCQnCoDAuMSwgMC4xLCAwLjEsICZmYnNbMV0pOwo+ID4gLQlpZ3RfYXNzZXJ0 KHJjKTsKPiA+ICsJdW5zaWduZWQgaW50IGZiX2lkOwo+ID4gKwo+ID4gKwlmYl9pZCA9IGlndF9j cmVhdGVfZmIoZGF0YS0+ZHJtX2ZkLCBtb2RlLT5oZGlzcGxheSwgbW9kZS0KPiA+ID52ZGlzcGxh eSwKPiA+ICsJCQkJRFJNX0ZPUk1BVF9YUkdCODg4OCwgdGlsaW5nLAo+ID4gJmZic1swXSk7Cj4g PiArCWlndF9hc3NlcnQoZmJfaWQpOwo+ID4gKwlpZ3RfZHJhd19maWxsX2ZiKGRhdGEtPmRybV9m ZCwgJmZic1swXSwgMCk7Cj4gPiArCj4gPiArCWZiX2lkID0gaWd0X2NyZWF0ZV9mYihkYXRhLT5k cm1fZmQsIG1vZGUtPmhkaXNwbGF5LCBtb2RlLQo+ID4gPnZkaXNwbGF5LAo+ID4gKwkJCQlEUk1f Rk9STUFUX1hSR0I4ODg4LCB0aWxpbmcsCj4gPiAmZmJzWzFdKTsKPiA+ICsJaWd0X2Fzc2VydChm Yl9pZCk7Cj4gPiArCWlndF9kcmF3X2ZpbGxfZmIoZGF0YS0+ZHJtX2ZkLCAmZmJzWzFdLCAweDc3 KTsKPiA+ICsKPiA+IMKgfQo+ID4gwqAKPiA+IMKgLyogU2luY2Ugd2Ugd2FudCB0byBiZSByZWFs bHkgc2FmZSB0aGF0IHRoZSBDUkNzIGFyZSBhY3R1YWxseSB3aGF0IHdlIAo+ID4gcmVhbGx5IGRp ZmYgLS1naXQgYS90ZXN0cy9rbXNfZnJvbnRidWZmZXJfdHJhY2tpbmcuYwo+ID4gYi90ZXN0cy9r bXNfZnJvbnRidWZmZXJfdHJhY2tpbmcuYwo+ID4gaW5kZXggZTdhY2M3Yy4uZjhiOWVjYSAxMDA2 NDQKPiA+IC0tLSBhL3Rlc3RzL2ttc19mcm9udGJ1ZmZlcl90cmFja2luZy5jCj4gPiArKysgYi90 ZXN0cy9rbXNfZnJvbnRidWZmZXJfdHJhY2tpbmcuYwo+ID4gQEAgLTEwNzksNyArMTA3OSwxMSBA QCBzdGF0aWMgdm9pZCB1bnNldF9hbGxfY3J0Y3Modm9pZCkKPiA+IMKgCj4gPiDCoAlmb3IgKGkg PSAwOyBpIDwgZHJtLnBsYW5lX3Jlcy0+Y291bnRfcGxhbmVzOyBpKyspIHsKPiA+IMKgCQlyYyA9 IGRybU1vZGVTZXRQbGFuZShkcm0uZmQsIGRybS5wbGFuZV9yZXMtCj4gPiA+cGxhbmVzW2ldLCAw LCAwLCAwLAo+ID4gLQkJCQnCoMKgwqDCoMKgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCk7Cj4gPiAr CQkJCcKgwqDCoMKgwqAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwCj4gPiArI2lmIERSTV9QUklNQVJZ X0RJU0FCTEUKPiA+ICsJCQkJwqDCoMKgwqDCoCwgTlVMTAo+ID4gKyNlbmRpZgo+ID4gKwkJCcKg wqDCoMKgwqApOwo+ID4gwqAJCWlndF9hc3NlcnRfZXEocmMsIDApOwo+ID4gwqAJfQo+ID4gwqB9 Cj4gPiBAQCAtMTcxNSw3ICsxNzE5LDExIEBAIHN0YXRpYyB2b2lkIHNldF9zcHJpdGVfZm9yX3Rl c3QoY29uc3Qgc3RydWN0IAo+ID4gdGVzdF9tb2RlICp0LAo+ID4gwqAJCQnCoMKgwqDCoMKgcGFy YW1zLT5zcHJpdGUuZmItPmZiX2lkLCAwLCAwLCAwLAo+ID4gwqAJCQnCoMKgwqDCoMKgcGFyYW1z LT5zcHJpdGUudywgcGFyYW1zLT5zcHJpdGUuaCwKPiA+IMKgCQkJwqDCoMKgwqDCoDAsIDAsIHBh cmFtcy0+c3ByaXRlLncgPDwgMTYsCj4gPiAtCQkJwqDCoMKgwqDCoHBhcmFtcy0+c3ByaXRlLmgg PDwgMTYpOwo+ID4gKwkJCcKgwqDCoMKgwqBwYXJhbXMtPnNwcml0ZS5oIDw8IDE2Cj4gPiArI2lm IERSTV9QUklNQVJZX0RJU0FCTEUKPiA+ICsJCQnCoMKgwqDCoMKgLCBOVUxMCj4gPiArI2VuZGlm Cj4gPiArCQkJwqDCoMKgwqDCoCk7Cj4gPiDCoAlpZ3RfYXNzZXJ0X2VxKHJjLCAwKTsKPiA+IMKg Cj4gPiDCoAlkb19hc3NlcnRpb25zKEFTU0VSVF9OT19BQ1RJT05fQ0hBTkdFKTsKPiA+IEBAIC0y MjIwLDcgKzIyMjgsMTEgQEAgc3RhdGljIHZvaWQgc2V0X3ByaW1fcGxhbmVfZm9yX3BhcmFtcyhz dHJ1Y3QgCj4gPiBtb2Rlc2V0X3BhcmFtcyAqcGFyYW1zKQo+ID4gwqAJCQnCoMKgwqDCoMKgcGFy YW1zLT5tb2RlLT5oZGlzcGxheSwKPiA+IMKgCQkJwqDCoMKgwqDCoHBhcmFtcy0+bW9kZS0+dmRp c3BsYXksCj4gPiDCoAkJCcKgwqDCoMKgwqBwYXJhbXMtPmZiLnggPDwgMTYsIHBhcmFtcy0+ZmIu eSA8PCAxNiwKPiA+IC0JCQnCoMKgwqDCoMKgcGFyYW1zLT5mYi53IDw8IDE2LCBwYXJhbXMtPmZi LmggPDwKPiA+IDE2KTsKPiA+ICsJCQnCoMKgwqDCoMKgcGFyYW1zLT5mYi53IDw8IDE2LCBwYXJh bXMtPmZiLmggPDwgMTYgI2lmIAo+ID4gK0RSTV9QUklNQVJZX0RJU0FCTEUKPiA+ICsJCQnCoMKg wqDCoMKgLCBOVUxMCj4gPiArI2VuZGlmCj4gPiArCQkJwqDCoMKgwqDCoCk7Cj4gPiDCoAlpZ3Rf YXNzZXJ0KHJjID09IDApOwo+ID4gwqB9Cj4gPiDCoAo+ID4gQEAgLTI0MDYsNyArMjQxOCwxMSBA QCBzdGF0aWMgdm9pZCBtb3ZlX3N1YnRlc3QoY29uc3Qgc3RydWN0IHRlc3RfbW9kZSAKPiA+ICp0 KQo+ID4gwqAJCQkJCcKgwqDCoMKgwqBwYXJhbXMtPnNwcml0ZS5mYi0KPiA+ID5mYl9pZCwgMCwK PiA+IMKgCQkJCQnCoMKgwqDCoMKgcmVjdC54LCByZWN0LnksIHJlY3QudywKPiA+IMKgCQkJCQnC oMKgwqDCoMKgcmVjdC5oLCAwLCAwLCByZWN0LncgPDwKPiA+IDE2LAo+ID4gLQkJCQkJwqDCoMKg wqDCoHJlY3QuaCA8PCAxNik7Cj4gPiArCQkJCQnCoMKgwqDCoMKgcmVjdC5oIDw8IDE2Cj4gPiAr I2lmIERSTV9QUklNQVJZX0RJU0FCTEUKPiA+ICsJCQkJCcKgwqDCoMKgwqAsIE5VTEwKPiA+ICsj ZW5kaWYKPiA+ICsJCQnCoMKgwqDCoMKgKTsKPiA+IMKgCQkJaWd0X2Fzc2VydF9lcShyYywgMCk7 Cj4gPiDCoAkJCWJyZWFrOwo+ID4gwqAJCWRlZmF1bHQ6Cj4gPiBAQCAtMjQ2Myw4ICsyNDc5LDEx IEBAIHN0YXRpYyB2b2lkIG9ub2ZmX3N1YnRlc3QoY29uc3Qgc3RydWN0IAo+ID4gdGVzdF9tb2Rl ICp0KQo+ID4gwqAJCQkJYnJlYWs7Cj4gPiDCoAkJCWNhc2UgUExBTkVfU1BSOgo+ID4gwqAJCQkJ cmMgPSBkcm1Nb2RlU2V0UGxhbmUoZHJtLmZkLCBwYXJhbXMtCj4gPiA+c3ByaXRlX2lkLAo+ID4g LQkJCQkJCcKgwqDCoMKgwqAwLCAwLCAwLCAwLCAwLAo+ID4gMCwgMCwgMCwgMCwKPiA+IC0JCQkJ CQnCoMKgwqDCoMKgMCwgMCk7Cj4gPiArCQkJCQkJwqDCoMKgwqDCoDAsIDAsIDAsIDAsIDAsCj4g PiAwLCAwLCAwLCAwLCAwLCAwCj4gPiArI2lmIERSTV9QUklNQVJZX0RJU0FCTEUKPiA+ICsJCQkJ CQnCoMKgwqDCoMKgLCBOVUxMCj4gPiArI2VuZGlmCj4gPiArCQkJwqDCoMKgwqDCoCk7Cj4gPiDC oAkJCQlpZ3RfYXNzZXJ0X2VxKHJjLCAwKTsKPiA+IMKgCQkJCWJyZWFrOwo+ID4gwqAJCQlkZWZh dWx0Ogo+ID4gQEAgLTI0ODksNyArMjUwOCwxMSBAQCBzdGF0aWMgdm9pZCBvbm9mZl9zdWJ0ZXN0 KGNvbnN0IHN0cnVjdCAKPiA+IHRlc3RfbW9kZSAqdCkKPiA+IMKgCQkJCQkJwqDCoMKgwqDCoHBh cmFtcy0KPiA+ID5zcHJpdGUuaCwgMCwKPiA+IMKgCQkJCQkJwqDCoMKgwqDCoDAsCj4gPiDCoAkJ CQkJCcKgwqDCoMKgwqBwYXJhbXMtCj4gPiA+c3ByaXRlLncgPDwgMTYsCj4gPiAtCQkJCQkJwqDC oMKgwqDCoHBhcmFtcy0KPiA+ID5zcHJpdGUuaCA8PCAxNik7Cj4gPiArCQkJCQkJwqDCoMKgwqDC oHBhcmFtcy0KPiA+ID5zcHJpdGUuaCA8PCAxNgo+ID4gKyNpZiBEUk1fUFJJTUFSWV9ESVNBQkxF Cj4gPiArCQkJCQkJwqDCoMKgwqDCoCwgTlVMTAo+ID4gKyNlbmRpZgo+ID4gKwkJCcKgwqDCoMKg wqApOwo+ID4gwqAJCQkJaWd0X2Fzc2VydF9lcShyYywgMCk7Cj4gPiDCoAkJCQlicmVhazsKPiA+ IMKgCQkJZGVmYXVsdDoKPiA+IEBAIC0yNTYxLDcgKzI1ODQsMTEgQEAgc3RhdGljIHZvaWQgZnVs bHNjcmVlbl9wbGFuZV9zdWJ0ZXN0KGNvbnN0IAo+ID4gc3RydWN0IHRlc3RfbW9kZSAqdCkKPiA+ IMKgCQkJwqDCoMKgwqDCoGZ1bGxzY3JlZW5fZmIuZmJfaWQsIDAsIDAsIDAsIGZ1bGxzY3JlZW5f ZmIud2lkdGgsCj4gPiDCoAkJCcKgwqDCoMKgwqBmdWxsc2NyZWVuX2ZiLmhlaWdodCwgMCwgMCwK PiA+IMKgCQkJwqDCoMKgwqDCoGZ1bGxzY3JlZW5fZmIud2lkdGggPDwgMTYsCj4gPiAtCQkJwqDC oMKgwqDCoGZ1bGxzY3JlZW5fZmIuaGVpZ2h0IDw8IDE2KTsKPiA+ICsJCQnCoMKgwqDCoMKgZnVs bHNjcmVlbl9mYi5oZWlnaHQgPDwgMTYKPiA+ICsjaWYgRFJNX1BSSU1BUllfRElTQUJMRQo+ID4g KwkJCcKgwqDCoMKgwqAsIE5VTEwKPiA+ICsjZW5kaWYKPiA+ICsJCQnCoMKgwqDCoMKgKTsKPiA+ IMKgCWlndF9hc3NlcnRfZXEocmMsIDApOwo+ID4gwqAJdXBkYXRlX3dhbnRlZF9jcmModCwgJnBh dHRlcm4tPmNyY3NbdC0+Zm9ybWF0XVswXSk7Cj4gPiDCoAo+ID4gQEAgLTI1ODEsNyArMjYwOCwx MSBAQCBzdGF0aWMgdm9pZCBmdWxsc2NyZWVuX3BsYW5lX3N1YnRlc3QoY29uc3QgCj4gPiBzdHJ1 Y3QgdGVzdF9tb2RlICp0KQo+ID4gwqAJZG9fYXNzZXJ0aW9ucyhhc3NlcnRpb25zKTsKPiA+IMKg Cj4gPiDCoAlyYyA9IGRybU1vZGVTZXRQbGFuZShkcm0uZmQsIHBhcmFtcy0+c3ByaXRlX2lkLCAw LCAwLCAwLCAwLCAwLCAwLCAwLCAKPiA+IDAsCj4gPiAtCQkJwqDCoMKgwqDCoDAsIDAsIDApOwo+ ID4gKwkJCcKgwqDCoMKgwqAwLCAwLCAwCj4gPiArI2lmIERSTV9QUklNQVJZX0RJU0FCTEUKPiA+ ICsJCQnCoMKgwqDCoMKgLCBOVUxMCj4gPiArI2VuZGlmCj4gPiArCQkJwqDCoMKgwqDCoCk7Cj4g PiDCoAlpZ3RfYXNzZXJ0X2VxKHJjLCAwKTsKPiA+IMKgCj4gPiDCoAlpZiAodC0+c2NyZWVuID09 IFNDUkVFTl9QUklNKQo+ID4gQEAgLTI2NTcsNyArMjY4OCwxMSBAQCBzdGF0aWMgdm9pZCBzY2Fs ZWRwcmltYXJ5X3N1YnRlc3QoY29uc3Qgc3RydWN0IAo+ID4gdGVzdF9tb2RlICp0KQo+ID4gwqAJ CQnCoMKgwqDCoMKgMCwgMCwKPiA+IMKgCQkJwqDCoMKgwqDCoHBhcmFtcy0+bW9kZS0+aGRpc3Bs YXksIHBhcmFtcy0+bW9kZS0KPiA+ID52ZGlzcGxheSwKPiA+IMKgCQkJwqDCoMKgwqDCoHBhcmFt cy0+ZmIueCA8PCAxNiwgcGFyYW1zLT5mYi55IDw8IDE2LAo+ID4gLQkJCcKgwqDCoMKgwqBwYXJh bXMtPmZiLncgPDwgMTYsIHBhcmFtcy0+ZmIuaCA8PAo+ID4gMTYpOwo+ID4gKwkJCcKgwqDCoMKg wqBwYXJhbXMtPmZiLncgPDwgMTYsIHBhcmFtcy0+ZmIuaCA8PCAxNiAjaWYgCj4gPiArRFJNX1BS SU1BUllfRElTQUJMRQo+ID4gKwkJCcKgwqDCoMKgwqAsIE5VTEwKPiA+ICsjZW5kaWYKPiA+ICsJ CQnCoMKgwqDCoMKgKTsKPiA+IMKgCWlndF9hc3NlcnQocmMgPT0gMCk7Cj4gPiDCoAlkb19hc3Nl cnRpb25zKERPTlRfQVNTRVJUX0NSQyk7Cj4gPiDCoAo+ID4gQEAgLTI2NjgsNyArMjcwMywxMSBA QCBzdGF0aWMgdm9pZCBzY2FsZWRwcmltYXJ5X3N1YnRlc3QoY29uc3Qgc3RydWN0IAo+ID4gdGVz dF9tb2RlICp0KQo+ID4gwqAJCQnCoMKgwqDCoMKgcGFyYW1zLT5tb2RlLT5oZGlzcGxheSwgcGFy YW1zLT5tb2RlLQo+ID4gPnZkaXNwbGF5LAo+ID4gwqAJCQnCoMKgwqDCoMKgcGFyYW1zLT5mYi54 IDw8IDE2LCBwYXJhbXMtPmZiLnkgPDwgMTYsCj4gPiDCoAkJCcKgwqDCoMKgwqAocGFyYW1zLT5m Yi53IC8gMikgPDwgMTYsCj4gPiAtCQkJwqDCoMKgwqDCoChwYXJhbXMtPmZiLmggLyAyKSA8PCAx Nik7Cj4gPiArCQkJwqDCoMKgwqDCoChwYXJhbXMtPmZiLmggLyAyKSA8PCAxNgo+ID4gKyNpZiBE Uk1fUFJJTUFSWV9ESVNBQkxFCj4gPiArCQkJwqDCoMKgwqDCoCwgTlVMTAo+ID4gKyNlbmRpZgo+ ID4gKwkJCcKgwqDCoMKgwqApOwo+ID4gwqAJaWd0X2Fzc2VydChyYyA9PSAwKTsKPiA+IMKgCWRv X2Fzc2VydGlvbnMoRE9OVF9BU1NFUlRfQ1JDKTsKPiA+IMKgCj4gPiBAQCAtMjY4MSw3ICsyNzIw LDExIEBAIHN0YXRpYyB2b2lkIHNjYWxlZHByaW1hcnlfc3VidGVzdChjb25zdCBzdHJ1Y3QgCj4g PiB0ZXN0X21vZGUgKnQpCj4gPiDCoAkJCcKgwqDCoMKgwqBwYXJhbXMtPm1vZGUtPnZkaXNwbGF5 IC8gMiwKPiA+IMKgCQkJwqDCoMKgwqDCoHBhcmFtcy0+ZmIueCA8PCAxNiwgcGFyYW1zLT5mYi55 IDw8IDE2LAo+ID4gwqAJCQnCoMKgwqDCoMKgKHBhcmFtcy0+ZmIudyAvIDIpIDw8IDE2LAo+ID4g LQkJCcKgwqDCoMKgwqAocGFyYW1zLT5mYi5oIC8gMikgPDwgMTYpOwo+ID4gKwkJCcKgwqDCoMKg wqAocGFyYW1zLT5mYi5oIC8gMikgPDwgMTYKPiA+ICsjaWYgRFJNX1BSSU1BUllfRElTQUJMRQo+ ID4gKwkJCcKgwqDCoMKgwqAsIE5VTEwKPiA+ICsjZW5kaWYKPiA+ICsJCQnCoMKgwqDCoMKgKTsK PiA+IMKgCWlndF9hc3NlcnQocmMgPT0gMCk7Cj4gPiDCoAlkb19hc3NlcnRpb25zKERPTlRfQVNT RVJUX0NSQyk7Cj4gPiDCoAo+ID4gQEAgLTI2OTUsNyArMjczOCwxMSBAQCBzdGF0aWMgdm9pZCBz Y2FsZWRwcmltYXJ5X3N1YnRlc3QoY29uc3Qgc3RydWN0IAo+ID4gdGVzdF9tb2RlICp0KQo+ID4g wqAJCQnCoMKgwqDCoMKgKHBhcmFtcy0+ZmIueCArIHBhcmFtcy0+ZmIudyAvIDIpIDw8IDE2LAo+ ID4gwqAJCQnCoMKgwqDCoMKgKHBhcmFtcy0+ZmIueSArIHBhcmFtcy0+ZmIuaCAvIDIpIDw8IDE2 LAo+ID4gwqAJCQnCoMKgwqDCoMKgKHBhcmFtcy0+ZmIudyAvIDQpIDw8IDE2LAo+ID4gLQkJCcKg wqDCoMKgwqAocGFyYW1zLT5mYi5oIC8gNCkgPDwgMTYpOwo+ID4gKwkJCcKgwqDCoMKgwqAocGFy YW1zLT5mYi5oIC8gNCkgPDwgMTYKPiA+ICsjaWYgRFJNX1BSSU1BUllfRElTQUJMRQo+ID4gKwkJ CcKgwqDCoMKgwqAsIE5VTEwKPiA+ICsjZW5kaWYKPiA+ICsJCQnCoMKgwqDCoMKgKTsKPiA+IMKg CWlndF9hc3NlcnQocmMgPT0gMCk7Cj4gPiDCoAlkb19hc3NlcnRpb25zKERPTlRfQVNTRVJUX0NS Qyk7Cj4gPiDCoAo+ID4gQEAgLTI3MDUsNyArMjc1MiwxMSBAQCBzdGF0aWMgdm9pZCBzY2FsZWRw cmltYXJ5X3N1YnRlc3QoY29uc3Qgc3RydWN0IAo+ID4gdGVzdF9tb2RlICp0KQo+ID4gwqAJCQnC oMKgwqDCoMKgMCwgMCwKPiA+IMKgCQkJwqDCoMKgwqDCoHBhcmFtcy0+bW9kZS0+aGRpc3BsYXks IHBhcmFtcy0+bW9kZS0KPiA+ID52ZGlzcGxheSwKPiA+IMKgCQkJwqDCoMKgwqDCoHBhcmFtcy0+ ZmIueCA8PCAxNiwgcGFyYW1zLT5mYi55IDw8IDE2LAo+ID4gLQkJCcKgwqDCoMKgwqBwYXJhbXMt PmZiLncgPDwgMTYsIHBhcmFtcy0+ZmIuaCA8PAo+ID4gMTYpOwo+ID4gKwkJCcKgwqDCoMKgwqBw YXJhbXMtPmZiLncgPDwgMTYsIHBhcmFtcy0+ZmIuaCA8PCAxNiAjaWYgCj4gPiArRFJNX1BSSU1B UllfRElTQUJMRQo+ID4gKwkJCcKgwqDCoMKgwqAsIE5VTEwKPiA+ICsjZW5kaWYKPiA+ICsJCQnC oMKgwqDCoMKgKTsKPiA+IMKgCWlndF9hc3NlcnQocmMgPT0gMCk7Cj4gPiDCoAlkb19hc3NlcnRp b25zKDApOwo+ID4gwqAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENv cnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4Cg==