From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Kocialkowski Subject: Re: [PATCH 06/20] lib: Add video format information library Date: Tue, 23 Apr 2019 18:56:20 +0200 Message-ID: References: <0aae62f0-776a-6933-2290-f0141d01c5b2@suse.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from relay6-d.mail.gandi.net (relay6-d.mail.gandi.net [217.70.183.198]) by gabe.freedesktop.org (Postfix) with ESMTPS id 441A4890E5 for ; Tue, 23 Apr 2019 16:56:24 +0000 (UTC) In-Reply-To: <0aae62f0-776a-6933-2290-f0141d01c5b2@suse.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Thomas Zimmermann , Maxime Ripard , Daniel Vetter , David Airlie , Maarten Lankhorst , Sean Paul , Mauro Carvalho Chehab Cc: Sakari Ailus , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Hans Verkuil , Laurent Pinchart , Thomas Petazzoni , linux-media@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org SGksCgpMZSBtYXJkaSAyMyBhdnJpbCAyMDE5IMOgIDEzOjIyICswMjAwLCBUaG9tYXMgWmltbWVy bWFubiBhIMOpY3JpdCA6Cj4gSGkKPiAKPiBBbSAxNy4wNC4xOSB1bSAwOTo1NCBzY2hyaWViIE1h eGltZSBSaXBhcmQ6Cj4gPiBNb3ZlIHRoZSBEUk0gZm9ybWF0cyBBUEkgdG8gdHVybiB0aGlzIGlu dG8gYSBtb3JlIGdlbmVyaWMgaW1hZ2UgZm9ybWF0cyBBUEkKPiA+IHRvIGJlIGFibGUgdG8gbGV2 ZXJhZ2UgaXQgaW50byBzb21lIG90aGVyIHBsYWNlcyBvZiB0aGUga2VybmVsLCBzdWNoIGFzCj4g PiB2NGwyIGRyaXZlcnMuCj4gCj4gSGVyZSdzIHNvbWUgbml0cGlja2luZzogJ2ltYWdlX2Zvcm1h dF8qJyBhcHBlYXJzIHNsaWdodGx5IHZhZ3VlOyBpdAo+IGNvdWxkIHJlZmVyIHRvIGEgZGlzayBv ciBST00gaW1hZ2UgYXMgd2VsbC4gU29tZXRoaW5nIGxpa2UKPiAncGl4ZWxfZm9ybWF0XyonLCAn cGl4YnVmX2Zvcm1hdF8qJywgZXRjLiB3b3VsZCBjbGVhcmx5IGluZGljYXRlIGdyYXBoaWNzLgoK WWVhaCBJJ20gd2l0aCB5b3Ugb24gdGhpcyBvbmUuIEl0J3MgYmlrZS1zaGVkZGluZywgYnV0IEkg dGhpbmsgaXQncwpmaW5lIGFzIGxvbmcgYXMgbW9yZSBmdW5kYW1lbnRhbCB0b3BpY3MgYXJlIG1v dmluZyBhcyB3ZWxsLgoKQ2hlZXJzLAoKUGF1bAoKPiBCZXN0IHJlZ2FyZHMKPiBUaG9tYXMKPiAK PiA+IFNpZ25lZC1vZmYtYnk6IE1heGltZSBSaXBhcmQgPG1heGltZS5yaXBhcmRAYm9vdGxpbi5j b20+Cj4gPiAtLS0KPiA+ICBpbmNsdWRlL2xpbnV4L2ltYWdlLWZvcm1hdHMuaCB8IDM4NyArKysr KysrKysrKysrKysrKysrKystCj4gPiAgbGliL0tjb25maWcgICAgICAgICAgICAgICAgICAgfCAg IDcgKy0KPiA+ICBsaWIvTWFrZWZpbGUgICAgICAgICAgICAgICAgICB8ICAgMyArLQo+ID4gIGxp Yi9pbWFnZS1mb3JtYXRzLXNlbGZ0ZXN0cy5jIHwgMzI1ICsrKysrKysrKysrKysrKysrLQo+ID4g IGxpYi9pbWFnZS1mb3JtYXRzLmMgICAgICAgICAgIHwgNjU1ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrLQo+ID4gIDUgZmlsZXMgY2hhbmdlZCwgMTM3NyBpbnNlcnRpb25zKCsp Cj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvbGludXgvaW1hZ2UtZm9ybWF0cy5oCj4g PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9pbWFnZS1mb3JtYXRzLXNlbGZ0ZXN0cy5jCj4gPiAg Y3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9pbWFnZS1mb3JtYXRzLmMKPiA+IAo+ID4gZGlmZiAtLWdp dCBhL2luY2x1ZGUvbGludXgvaW1hZ2UtZm9ybWF0cy5oIGIvaW5jbHVkZS9saW51eC9pbWFnZS1m b3JtYXRzLmgKPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiBpbmRleCAwMDAwMDAwMDAwMDAu LmVjNDNkOWY5YTUyNwo+ID4gLS0tIC9kZXYvbnVsbAo+ID4gKysrIGIvaW5jbHVkZS9saW51eC9p bWFnZS1mb3JtYXRzLmgKPiA+IEBAIC0wLDAgKzEsMzg3IEBACj4gPiArLyoKPiA+ICsgKiBDb3B5 cmlnaHQgKGMpIDIwMTYgTGF1cmVudCBQaW5jaGFydCA8bGF1cmVudC5waW5jaGFydEBpZGVhc29u Ym9hcmQuY29tPgo+ID4gKyAqIENvcHlyaWdodCAoYykgMjAxOSBNYXhpbWUgUmlwYXJkIDxtYXhp bWUucmlwYXJkQGJvb3RsaW4uY29tPgo+ID4gKyAqCj4gPiArICogUGVybWlzc2lvbiB0byB1c2Us IGNvcHksIG1vZGlmeSwgZGlzdHJpYnV0ZSwgYW5kIHNlbGwgdGhpcyBzb2Z0d2FyZSBhbmQgaXRz Cj4gPiArICogZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgaXMgaGVyZWJ5IGdyYW50ZWQg d2l0aG91dCBmZWUsIHByb3ZpZGVkIHRoYXQKPiA+ICsgKiB0aGUgYWJvdmUgY29weXJpZ2h0IG5v dGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcyBhbmQgdGhhdCBib3RoIHRoYXQgY29weXJpZ2h0Cj4g PiArICogbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBzdXBwb3J0 aW5nIGRvY3VtZW50YXRpb24sIGFuZAo+ID4gKyAqIHRoYXQgdGhlIG5hbWUgb2YgdGhlIGNvcHly aWdodCBob2xkZXJzIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yCj4gPiArICogcHVibGlj aXR5IHBlcnRhaW5pbmcgdG8gZGlzdHJpYnV0aW9uIG9mIHRoZSBzb2Z0d2FyZSB3aXRob3V0IHNw ZWNpZmljLAo+ID4gKyAqIHdyaXR0ZW4gcHJpb3IgcGVybWlzc2lvbi4gIFRoZSBjb3B5cmlnaHQg aG9sZGVycyBtYWtlIG5vIHJlcHJlc2VudGF0aW9ucwo+ID4gKyAqIGFib3V0IHRoZSBzdWl0YWJp bGl0eSBvZiB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVkICJh cwo+ID4gKyAqIGlzIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eS4KPiA+ICsg Kgo+ID4gKyAqIFRIRSBDT1BZUklHSFQgSE9MREVSUyBESVNDTEFJTSBBTEwgV0FSUkFOVElFUyBX SVRIIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFLAo+ID4gKyAqIElOQ0xVRElORyBBTEwgSU1QTElF RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUywgSU4gTk8KPiA+ICsg KiBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgU1BF Q0lBTCwgSU5ESVJFQ1QgT1IKPiA+ICsgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERB TUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTSBMT1NTIE9GIFVTRSwKPiA+ICsgKiBEQVRB IE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNF IE9SIE9USEVSCj4gPiArICogVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBD T05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRQo+ID4gKyAqIE9GIFRISVMgU09G VFdBUkUuCj4gPiArICovCj4gPiArCj4gPiArI2lmbmRlZiBfSU1BR0VfRk9STUFUU19IXwo+ID4g KyNkZWZpbmUgX0lNQUdFX0ZPUk1BVFNfSF8KPiA+ICsKPiA+ICsjaW5jbHVkZSA8bGludXgva2Vy bmVsLmg+Cj4gPiArI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Cj4gPiArCj4gPiArLyoqCj4gPiAr ICogc3RydWN0IGltYWdlX2Zvcm1hdF9pbmZvIC0gaW5mb3JtYXRpb24gYWJvdXQgYSBpbWFnZSBm b3JtYXQKPiA+ICsgKi8KPiA+ICtzdHJ1Y3QgaW1hZ2VfZm9ybWF0X2luZm8gewo+ID4gKwl1bmlv biB7Cj4gPiArCQkvKioKPiA+ICsJCSAqIEBkcm1fZm10Ogo+ID4gKwkJICoKPiA+ICsJCSAqIERS TSA0Q0MgZm9ybWF0IGlkZW50aWZpZXIgKERSTV9GT1JNQVRfKikKPiA+ICsJCSAqLwo+ID4gKwkJ dTMyIGRybV9mbXQ7Cj4gPiArCj4gPiArCQkvKioKPiA+ICsJCSAqIEBmb3JtYXQ6Cj4gPiArCQkg Kgo+ID4gKwkJICogRFJNIDRDQyBmb3JtYXQgaWRlbnRpZmllciAoRFJNX0ZPUk1BVF8qKS4gS2Vw dAo+ID4gKwkJICogYXJvdW5kIGZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMgd2l0aCB0aGUgY3Vy cmVudAo+ID4gKwkJICogRFJNIGRyaXZlcnMuCj4gPiArCQkgKi8KPiA+ICsJCXUzMiBmb3JtYXQ7 Cj4gPiArCX07Cj4gPiArCj4gPiArCS8qKgo+ID4gKwkgKiBAZGVwdGg6Cj4gPiArCSAqCj4gPiAr CSAqIENvbG9yIGRlcHRoIChudW1iZXIgb2YgYml0cyBwZXIgcGl4ZWwgZXhjbHVkaW5nIHBhZGRp bmcgYml0cyksCj4gPiArCSAqIHZhbGlkIGZvciBhIHN1YnNldCBvZiBSR0IgZm9ybWF0cyBvbmx5 LiBUaGlzIGlzIGEgbGVnYWN5IGZpZWxkLCBkbwo+ID4gKwkgKiBub3QgdXNlIGluIG5ldyBjb2Rl IGFuZCBzZXQgdG8gMCBmb3IgbmV3IGZvcm1hdHMuCj4gPiArCSAqLwo+ID4gKwl1OCBkZXB0aDsK PiA+ICsKPiA+ICsJLyoqIEBudW1fcGxhbmVzOiBOdW1iZXIgb2YgY29sb3IgcGxhbmVzICgxIHRv IDMpICovCj4gPiArCXU4IG51bV9wbGFuZXM7Cj4gPiArCj4gPiArCXVuaW9uIHsKPiA+ICsJCS8q Kgo+ID4gKwkJICogQGNwcDoKPiA+ICsJCSAqCj4gPiArCQkgKiBOdW1iZXIgb2YgYnl0ZXMgcGVy IHBpeGVsIChwZXIgcGxhbmUpLCB0aGlzIGlzIGFsaWFzZWQgd2l0aAo+ID4gKwkJICogQGNoYXJf cGVyX2Jsb2NrLiBJdCBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiB1c2luZyB0aGUKPiA+ICsJ CSAqIHRyaXBsZXQgQGNoYXJfcGVyX2Jsb2NrLCBAYmxvY2tfdywgQGJsb2NrX2ggZm9yIGJldHRl cgo+ID4gKwkJICogZGVzY3JpYmluZyB0aGUgcGl4ZWwgZm9ybWF0Lgo+ID4gKwkJICovCj4gPiAr CQl1OCBjcHBbM107Cj4gPiArCj4gPiArCQkvKioKPiA+ICsJCSAqIEBjaGFyX3Blcl9ibG9jazoK PiA+ICsJCSAqCj4gPiArCQkgKiBOdW1iZXIgb2YgYnl0ZXMgcGVyIGJsb2NrIChwZXIgcGxhbmUp LCB3aGVyZSBibG9ja3MgYXJlCj4gPiArCQkgKiBkZWZpbmVkIGFzIGEgcmVjdGFuZ2xlIG9mIHBp eGVscyB3aGljaCBhcmUgc3RvcmVkIG5leHQgdG8KPiA+ICsJCSAqIGVhY2ggb3RoZXIgaW4gYSBi eXRlIGFsaWduZWQgbWVtb3J5IHJlZ2lvbi4gVG9nZXRoZXIgd2l0aAo+ID4gKwkJICogQGJsb2Nr X3cgYW5kIEBibG9ja19oIHRoaXMgaXMgdXNlZCB0byBwcm9wZXJseSBkZXNjcmliZSB0aWxlcwo+ ID4gKwkJICogaW4gdGlsZWQgZm9ybWF0cyBvciB0byBkZXNjcmliZSBncm91cHMgb2YgcGl4ZWxz IGluIHBhY2tlZAo+ID4gKwkJICogZm9ybWF0cyBmb3Igd2hpY2ggdGhlIG1lbW9yeSBuZWVkZWQg Zm9yIGEgc2luZ2xlIHBpeGVsIGlzIG5vdAo+ID4gKwkJICogYnl0ZSBhbGlnbmVkLgo+ID4gKwkJ ICoKPiA+ICsJCSAqIEBjcHAgaGFzIGJlZW4ga2VwdCBmb3IgaGlzdG9yaWNhbCByZWFzb25zIGJl Y2F1c2UgdGhlcmUgYXJlCj4gPiArCQkgKiBhIGxvdCBvZiBwbGFjZXMgaW4gZHJpdmVycyB3aGVy ZSBpdCdzIHVzZWQuIEluIGRybSBjb3JlIGZvcgo+ID4gKwkJICogZ2VuZXJpYyBjb2RlIHBhdGhz IHRoZSBwcmVmZXJyZWQgd2F5IGlzIHRvIHVzZQo+ID4gKwkJICogQGNoYXJfcGVyX2Jsb2NrLCBp bWFnZV9mb3JtYXRfaW5mb19ibG9ja193aWR0aCgpIGFuZAo+ID4gKwkJICogaW1hZ2VfZm9ybWF0 X2luZm9fYmxvY2tfaGVpZ2h0KCkgd2hpY2ggYWxsb3dzIGhhbmRsaW5nIGJvdGgKPiA+ICsJCSAq IGJsb2NrIGFuZCBub24tYmxvY2sgZm9ybWF0cyBpbiB0aGUgc2FtZSB3YXkuCj4gPiArCQkgKgo+ ID4gKwkJICogRm9yIGZvcm1hdHMgdGhhdCBhcmUgaW50ZW5kZWQgdG8gYmUgdXNlZCBvbmx5IHdp dGggbm9uLWxpbmVhcgo+ID4gKwkJICogbW9kaWZpZXJzIGJvdGggQGNwcCBhbmQgQGNoYXJfcGVy X2Jsb2NrIG11c3QgYmUgMCBpbiB0aGUKPiA+ICsJCSAqIGdlbmVyaWMgZm9ybWF0IHRhYmxlLiBE cml2ZXJzIGNvdWxkIHN1cHBseSBhY2N1cmF0ZQo+ID4gKwkJICogaW5mb3JtYXRpb24gZnJvbSB0 aGVpciBkcm1fbW9kZV9jb25maWcuZ2V0X2Zvcm1hdF9pbmZvIGhvb2sKPiA+ICsJCSAqIGlmIHRo ZXkgd2FudCB0aGUgY29yZSB0byBiZSB2YWxpZGF0aW5nIHRoZSBwaXRjaC4KPiA+ICsJCSAqLwo+ ID4gKwkJdTggY2hhcl9wZXJfYmxvY2tbM107Cj4gPiArCX07Cj4gPiArCj4gPiArCS8qKgo+ID4g KwkgKiBAYmxvY2tfdzoKPiA+ICsJICoKPiA+ICsJICogQmxvY2sgd2lkdGggaW4gcGl4ZWxzLCB0 aGlzIGlzIGludGVuZGVkIHRvIGJlIGFjY2Vzc2VkIHRocm91Z2gKPiA+ICsJICogaW1hZ2VfZm9y bWF0X2luZm9fYmxvY2tfd2lkdGgoKQo+ID4gKwkgKi8KPiA+ICsJdTggYmxvY2tfd1szXTsKPiA+ ICsKPiA+ICsJLyoqCj4gPiArCSAqIEBibG9ja19oOgo+ID4gKwkgKgo+ID4gKwkgKiBCbG9jayBo ZWlnaHQgaW4gcGl4ZWxzLCB0aGlzIGlzIGludGVuZGVkIHRvIGJlIGFjY2Vzc2VkIHRocm91Z2gK PiA+ICsJICogaW1hZ2VfZm9ybWF0X2luZm9fYmxvY2tfaGVpZ2h0KCkKPiA+ICsJICovCj4gPiAr CXU4IGJsb2NrX2hbM107Cj4gPiArCj4gPiArCS8qKiBAaHN1YjogSG9yaXpvbnRhbCBjaHJvbWEg c3Vic2FtcGxpbmcgZmFjdG9yICovCj4gPiArCXU4IGhzdWI7Cj4gPiArCS8qKiBAdnN1YjogVmVy dGljYWwgY2hyb21hIHN1YnNhbXBsaW5nIGZhY3RvciAqLwo+ID4gKwl1OCB2c3ViOwo+ID4gKwo+ ID4gKwkvKiogQGhhc19hbHBoYTogRG9lcyB0aGUgZm9ybWF0IGVtYmVkcyBhbiBhbHBoYSBjb21w b25lbnQ/ICovCj4gPiArCWJvb2wgaGFzX2FscGhhOwo+ID4gKwo+ID4gKwkvKiogQGlzX3l1djog SXMgaXQgYSBZVVYgZm9ybWF0PyAqLwo+ID4gKwlib29sIGlzX3l1djsKPiA+ICt9Owo+ID4gKwo+ ID4gKy8qKgo+ID4gKyAqIGltYWdlX2Zvcm1hdF9pbmZvX2lzX3l1dl9wYWNrZWQgLSBjaGVjayB0 aGF0IHRoZSBmb3JtYXQgaW5mbyBtYXRjaGVzIGEgWVVWCj4gPiArICogZm9ybWF0IHdpdGggZGF0 YSBsYWlkIGluIGEgc2luZ2xlIHBsYW5lCj4gPiArICogQGluZm86IGZvcm1hdCBpbmZvCj4gPiAr ICoKPiA+ICsgKiBSZXR1cm5zOgo+ID4gKyAqIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIg dGhlIGZvcm1hdCBpbmZvIG1hdGNoZXMgYSBwYWNrZWQgWVVWIGZvcm1hdC4KPiA+ICsgKi8KPiA+ ICtzdGF0aWMgaW5saW5lIGJvb2wKPiA+ICtpbWFnZV9mb3JtYXRfaW5mb19pc195dXZfcGFja2Vk KGNvbnN0IHN0cnVjdCBpbWFnZV9mb3JtYXRfaW5mbyAqaW5mbykKPiA+ICt7Cj4gPiArCXJldHVy biBpbmZvLT5pc195dXYgJiYgaW5mby0+bnVtX3BsYW5lcyA9PSAxOwo+ID4gK30KPiA+ICsKPiA+ ICsvKioKPiA+ICsgKiBpbWFnZV9mb3JtYXRfaW5mb19pc195dXZfc2VtaXBsYW5hciAtIGNoZWNr IHRoYXQgdGhlIGZvcm1hdCBpbmZvIG1hdGNoZXMgYSBZVVYKPiA+ICsgKiBmb3JtYXQgd2l0aCBk YXRhIGxhaWQgaW4gdHdvIHBsYW5lcyAobHVtaW5hbmNlIGFuZCBjaHJvbWluYW5jZSkKPiA+ICsg KiBAaW5mbzogZm9ybWF0IGluZm8KPiA+ICsgKgo+ID4gKyAqIFJldHVybnM6Cj4gPiArICogQSBi b29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZm9ybWF0IGluZm8gbWF0Y2hlcyBhIHNlbWlw bGFuYXIgWVVWIGZvcm1hdC4KPiA+ICsgKi8KPiA+ICtzdGF0aWMgaW5saW5lIGJvb2wKPiA+ICtp bWFnZV9mb3JtYXRfaW5mb19pc195dXZfc2VtaXBsYW5hcihjb25zdCBzdHJ1Y3QgaW1hZ2VfZm9y bWF0X2luZm8gKmluZm8pCj4gPiArewo+ID4gKwlyZXR1cm4gaW5mby0+aXNfeXV2ICYmIGluZm8t Pm51bV9wbGFuZXMgPT0gMjsKPiA+ICt9Cj4gPiArCj4gPiArLyoqCj4gPiArICogaW1hZ2VfZm9y bWF0X2luZm9faXNfeXV2X3BsYW5hciAtIGNoZWNrIHRoYXQgdGhlIGZvcm1hdCBpbmZvIG1hdGNo ZXMgYSBZVVYKPiA+ICsgKiBmb3JtYXQgd2l0aCBkYXRhIGxhaWQgaW4gdGhyZWUgcGxhbmVzIChv bmUgZm9yIGVhY2ggWVVWIGNvbXBvbmVudCkKPiA+ICsgKiBAaW5mbzogZm9ybWF0IGluZm8KPiA+ ICsgKgo+ID4gKyAqIFJldHVybnM6Cj4gPiArICogQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhl ciB0aGUgZm9ybWF0IGluZm8gbWF0Y2hlcyBhIHBsYW5hciBZVVYgZm9ybWF0Lgo+ID4gKyAqLwo+ ID4gK3N0YXRpYyBpbmxpbmUgYm9vbAo+ID4gK2ltYWdlX2Zvcm1hdF9pbmZvX2lzX3l1dl9wbGFu YXIoY29uc3Qgc3RydWN0IGltYWdlX2Zvcm1hdF9pbmZvICppbmZvKQo+ID4gK3sKPiA+ICsJcmV0 dXJuIGluZm8tPmlzX3l1diAmJiBpbmZvLT5udW1fcGxhbmVzID09IDM7Cj4gPiArfQo+ID4gKwo+ ID4gKy8qKgo+ID4gKyAqIGltYWdlX2Zvcm1hdF9pbmZvX2lzX3l1dl9zYW1wbGluZ180MTAgLSBj aGVjayB0aGF0IHRoZSBmb3JtYXQgaW5mbyBtYXRjaGVzIGEKPiA+ICsgKiBZVVYgZm9ybWF0IHdp dGggNDoxOjAgc3ViLXNhbXBsaW5nCj4gPiArICogQGluZm86IGZvcm1hdCBpbmZvCj4gPiArICoK PiA+ICsgKiBSZXR1cm5zOgo+ID4gKyAqIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhl IGZvcm1hdCBpbmZvIG1hdGNoZXMgYSBZVVYgZm9ybWF0IHdpdGggNDoxOjAKPiA+ICsgKiBzdWIt c2FtcGxpbmcuCj4gPiArICovCj4gPiArc3RhdGljIGlubGluZSBib29sCj4gPiAraW1hZ2VfZm9y bWF0X2luZm9faXNfeXV2X3NhbXBsaW5nXzQxMChjb25zdCBzdHJ1Y3QgaW1hZ2VfZm9ybWF0X2lu Zm8gKmluZm8pCj4gPiArewo+ID4gKwlyZXR1cm4gaW5mby0+aXNfeXV2ICYmIGluZm8tPmhzdWIg PT0gNCAmJiBpbmZvLT52c3ViID09IDQ7Cj4gPiArfQo+ID4gKwo+ID4gKy8qKgo+ID4gKyAqIGlt YWdlX2Zvcm1hdF9pbmZvX2lzX3l1dl9zYW1wbGluZ180MTEgLSBjaGVjayB0aGF0IHRoZSBmb3Jt YXQgaW5mbyBtYXRjaGVzIGEKPiA+ICsgKiBZVVYgZm9ybWF0IHdpdGggNDoxOjEgc3ViLXNhbXBs aW5nCj4gPiArICogQGluZm86IGZvcm1hdCBpbmZvCj4gPiArICoKPiA+ICsgKiBSZXR1cm5zOgo+ ID4gKyAqIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZvcm1hdCBpbmZvIG1hdGNo ZXMgYSBZVVYgZm9ybWF0IHdpdGggNDoxOjEKPiA+ICsgKiBzdWItc2FtcGxpbmcuCj4gPiArICov Cj4gPiArc3RhdGljIGlubGluZSBib29sCj4gPiAraW1hZ2VfZm9ybWF0X2luZm9faXNfeXV2X3Nh bXBsaW5nXzQxMShjb25zdCBzdHJ1Y3QgaW1hZ2VfZm9ybWF0X2luZm8gKmluZm8pCj4gPiArewo+ ID4gKwlyZXR1cm4gaW5mby0+aXNfeXV2ICYmIGluZm8tPmhzdWIgPT0gNCAmJiBpbmZvLT52c3Vi ID09IDE7Cj4gPiArfQo+ID4gKwo+ID4gKy8qKgo+ID4gKyAqIGltYWdlX2Zvcm1hdF9pbmZvX2lz X3l1dl9zYW1wbGluZ180MjAgLSBjaGVjayB0aGF0IHRoZSBmb3JtYXQgaW5mbyBtYXRjaGVzIGEK PiA+ICsgKiBZVVYgZm9ybWF0IHdpdGggNDoyOjAgc3ViLXNhbXBsaW5nCj4gPiArICogQGluZm86 IGZvcm1hdCBpbmZvCj4gPiArICoKPiA+ICsgKiBSZXR1cm5zOgo+ID4gKyAqIEEgYm9vbGVhbiBp bmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZvcm1hdCBpbmZvIG1hdGNoZXMgYSBZVVYgZm9ybWF0IHdp dGggNDoyOjAKPiA+ICsgKiBzdWItc2FtcGxpbmcuCj4gPiArICovCj4gPiArc3RhdGljIGlubGlu ZSBib29sCj4gPiAraW1hZ2VfZm9ybWF0X2luZm9faXNfeXV2X3NhbXBsaW5nXzQyMChjb25zdCBz dHJ1Y3QgaW1hZ2VfZm9ybWF0X2luZm8gKmluZm8pCj4gPiArewo+ID4gKwlyZXR1cm4gaW5mby0+ aXNfeXV2ICYmIGluZm8tPmhzdWIgPT0gMiAmJiBpbmZvLT52c3ViID09IDI7Cj4gPiArfQo+ID4g Kwo+ID4gKy8qKgo+ID4gKyAqIGltYWdlX2Zvcm1hdF9pbmZvX2lzX3l1dl9zYW1wbGluZ180MjIg LSBjaGVjayB0aGF0IHRoZSBmb3JtYXQgaW5mbyBtYXRjaGVzIGEKPiA+ICsgKiBZVVYgZm9ybWF0 IHdpdGggNDoyOjIgc3ViLXNhbXBsaW5nCj4gPiArICogQGluZm86IGZvcm1hdCBpbmZvCj4gPiAr ICoKPiA+ICsgKiBSZXR1cm5zOgo+ID4gKyAqIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIg dGhlIGZvcm1hdCBpbmZvIG1hdGNoZXMgYSBZVVYgZm9ybWF0IHdpdGggNDoyOjIKPiA+ICsgKiBz dWItc2FtcGxpbmcuCj4gPiArICovCj4gPiArc3RhdGljIGlubGluZSBib29sCj4gPiAraW1hZ2Vf Zm9ybWF0X2luZm9faXNfeXV2X3NhbXBsaW5nXzQyMihjb25zdCBzdHJ1Y3QgaW1hZ2VfZm9ybWF0 X2luZm8gKmluZm8pCj4gPiArewo+ID4gKwlyZXR1cm4gaW5mby0+aXNfeXV2ICYmIGluZm8tPmhz dWIgPT0gMiAmJiBpbmZvLT52c3ViID09IDE7Cj4gPiArfQo+ID4gKwo+ID4gKy8qKgo+ID4gKyAq IGltYWdlX2Zvcm1hdF9pbmZvX2lzX3l1dl9zYW1wbGluZ180NDQgLSBjaGVjayB0aGF0IHRoZSBm b3JtYXQgaW5mbyBtYXRjaGVzIGEKPiA+ICsgKiBZVVYgZm9ybWF0IHdpdGggNDo0OjQgc3ViLXNh bXBsaW5nCj4gPiArICogQGluZm86IGZvcm1hdCBpbmZvCj4gPiArICoKPiA+ICsgKiBSZXR1cm5z Ogo+ID4gKyAqIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZvcm1hdCBpbmZvIG1h dGNoZXMgYSBZVVYgZm9ybWF0IHdpdGggNDo0OjQKPiA+ICsgKiBzdWItc2FtcGxpbmcuCj4gPiAr ICovCj4gPiArc3RhdGljIGlubGluZSBib29sCj4gPiAraW1hZ2VfZm9ybWF0X2luZm9faXNfeXV2 X3NhbXBsaW5nXzQ0NChjb25zdCBzdHJ1Y3QgaW1hZ2VfZm9ybWF0X2luZm8gKmluZm8pCj4gPiAr ewo+ID4gKwlyZXR1cm4gaW5mby0+aXNfeXV2ICYmIGluZm8tPmhzdWIgPT0gMSAmJiBpbmZvLT52 c3ViID09IDE7Cj4gPiArfQo+ID4gKwo+ID4gKy8qKgo+ID4gKyAqIGltYWdlX2Zvcm1hdF9pbmZv X3BsYW5lX2NwcCAtIGRldGVybWluZSB0aGUgYnl0ZXMgcGVyIHBpeGVsIHZhbHVlCj4gPiArICog QGZvcm1hdDogcGl4ZWwgZm9ybWF0IGluZm8KPiA+ICsgKiBAcGxhbmU6IHBsYW5lIGluZGV4Cj4g PiArICoKPiA+ICsgKiBSZXR1cm5zOgo+ID4gKyAqIFRoZSBieXRlcyBwZXIgcGl4ZWwgdmFsdWUg Zm9yIHRoZSBzcGVjaWZpZWQgcGxhbmUuCj4gPiArICovCj4gPiArc3RhdGljIGlubGluZQo+ID4g K2ludCBpbWFnZV9mb3JtYXRfaW5mb19wbGFuZV9jcHAoY29uc3Qgc3RydWN0IGltYWdlX2Zvcm1h dF9pbmZvICppbmZvLCBpbnQgcGxhbmUpCj4gPiArewo+ID4gKwlpZiAoIWluZm8gfHwgcGxhbmUg Pj0gaW5mby0+bnVtX3BsYW5lcykKPiA+ICsJCXJldHVybiAwOwo+ID4gKwo+ID4gKwlyZXR1cm4g aW5mby0+Y3BwW3BsYW5lXTsKPiA+ICt9Cj4gPiArCj4gPiArLyoqCj4gPiArICogaW1hZ2VfZm9y bWF0X2luZm9fcGxhbmVfd2lkdGggLSB3aWR0aCBvZiB0aGUgcGxhbmUgZ2l2ZW4gdGhlIGZpcnN0 IHBsYW5lCj4gPiArICogQGZvcm1hdDogcGl4ZWwgZm9ybWF0IGluZm8KPiA+ICsgKiBAd2lkdGg6 IHdpZHRoIG9mIHRoZSBmaXJzdCBwbGFuZQo+ID4gKyAqIEBwbGFuZTogcGxhbmUgaW5kZXgKPiA+ ICsgKgo+ID4gKyAqIFJldHVybnM6Cj4gPiArICogVGhlIHdpZHRoIG9mIEBwbGFuZSwgZ2l2ZW4g dGhhdCB0aGUgd2lkdGggb2YgdGhlIGZpcnN0IHBsYW5lIGlzIEB3aWR0aC4KPiA+ICsgKi8KPiA+ ICtzdGF0aWMgaW5saW5lCj4gPiAraW50IGltYWdlX2Zvcm1hdF9pbmZvX3BsYW5lX3dpZHRoKGNv bnN0IHN0cnVjdCBpbWFnZV9mb3JtYXRfaW5mbyAqaW5mbywgaW50IHdpZHRoLAo+ID4gKwkJCQkg IGludCBwbGFuZSkKPiA+ICt7Cj4gPiArCWlmICghaW5mbyB8fCBwbGFuZSA+PSBpbmZvLT5udW1f cGxhbmVzKQo+ID4gKwkJcmV0dXJuIDA7Cj4gPiArCj4gPiArCWlmIChwbGFuZSA9PSAwKQo+ID4g KwkJcmV0dXJuIHdpZHRoOwo+ID4gKwo+ID4gKwlyZXR1cm4gd2lkdGggLyBpbmZvLT5oc3ViOwo+ ID4gK30KPiA+ICsKPiA+ICsvKioKPiA+ICsgKiBpbWFnZV9mb3JtYXRfaW5mb19wbGFuZV9oZWln aHQgLSBoZWlnaHQgb2YgdGhlIHBsYW5lIGdpdmVuIHRoZSBmaXJzdCBwbGFuZQo+ID4gKyAqIEBm b3JtYXQ6IHBpeGVsIGZvcm1hdCBpbmZvCj4gPiArICogQGhlaWdodDogaGVpZ2h0IG9mIHRoZSBm aXJzdCBwbGFuZQo+ID4gKyAqIEBwbGFuZTogcGxhbmUgaW5kZXgKPiA+ICsgKgo+ID4gKyAqIFJl dHVybnM6Cj4gPiArICogVGhlIGhlaWdodCBvZiBAcGxhbmUsIGdpdmVuIHRoYXQgdGhlIGhlaWdo dCBvZiB0aGUgZmlyc3QgcGxhbmUgaXMgQGhlaWdodC4KPiA+ICsgKi8KPiA+ICtzdGF0aWMgaW5s aW5lCj4gPiAraW50IGltYWdlX2Zvcm1hdF9pbmZvX3BsYW5lX2hlaWdodChjb25zdCBzdHJ1Y3Qg aW1hZ2VfZm9ybWF0X2luZm8gKmluZm8sIGludCBoZWlnaHQsCj4gPiArCQkJCSAgIGludCBwbGFu ZSkKPiA+ICt7Cj4gPiArCWlmICghaW5mbyB8fCBwbGFuZSA+PSBpbmZvLT5udW1fcGxhbmVzKQo+ ID4gKwkJcmV0dXJuIDA7Cj4gPiArCj4gPiArCWlmIChwbGFuZSA9PSAwKQo+ID4gKwkJcmV0dXJu IGhlaWdodDsKPiA+ICsKPiA+ICsJcmV0dXJuIGhlaWdodCAvIGluZm8tPnZzdWI7Cj4gPiArfQo+ ID4gKwo+ID4gKy8qKgo+ID4gKyAqIGltYWdlX2Zvcm1hdF9pbmZvX2Jsb2NrX3dpZHRoIC0gd2lk dGggaW4gcGl4ZWxzIG9mIGJsb2NrLgo+ID4gKyAqIEBmb3JtYXQ6IHBvaW50ZXIgdG8gdGhlIGlt YWdlX2Zvcm1hdF9pbmZvCj4gPiArICogQHBsYW5lOiBwbGFuZSBpbmRleAo+ID4gKyAqCj4gPiAr ICogUmV0dXJuczoKPiA+ICsgKiBUaGUgd2lkdGggaW4gcGl4ZWxzIG9mIGEgYmxvY2ssIGRlcGVu ZGluZyBvbiB0aGUgcGxhbmUgaW5kZXguCj4gPiArICovCj4gPiArc3RhdGljIGlubGluZQo+ID4g K3Vuc2lnbmVkIGludCBpbWFnZV9mb3JtYXRfaW5mb19ibG9ja193aWR0aChjb25zdCBzdHJ1Y3Qg aW1hZ2VfZm9ybWF0X2luZm8gKmZvcm1hdCwKPiA+ICsJCQkJCSAgIGludCBwbGFuZSkKPiA+ICt7 Cj4gPiArCWlmICghZm9ybWF0KQo+ID4gKwkJcmV0dXJuIDA7Cj4gPiArCj4gPiArCWlmIChwbGFu ZSA8IDAgfHwgcGxhbmUgPj0gQVJSQVlfU0laRShmb3JtYXQtPmJsb2NrX3cpKQo+ID4gKwkJcmV0 dXJuIDA7Cj4gPiArCj4gPiArCWlmIChwbGFuZSA+PSBmb3JtYXQtPm51bV9wbGFuZXMpCj4gPiAr CQlyZXR1cm4gMDsKPiA+ICsKPiA+ICsJaWYgKCFmb3JtYXQtPmJsb2NrX3dbcGxhbmVdKQo+ID4g KwkJcmV0dXJuIDE7Cj4gPiArCj4gPiArCXJldHVybiBmb3JtYXQtPmJsb2NrX3dbcGxhbmVdOwo+ ID4gK30KPiA+ICsKPiA+ICsvKioKPiA+ICsgKiBpbWFnZV9mb3JtYXRfaW5mb19ibG9ja19oZWln aHQgLSBoZWlnaHQgaW4gcGl4ZWxzIG9mIGEgYmxvY2sKPiA+ICsgKiBAaW5mbzogcG9pbnRlciB0 byB0aGUgaW1hZ2VfZm9ybWF0X2luZm8KPiA+ICsgKiBAcGxhbmU6IHBsYW5lIGluZGV4Cj4gPiAr ICoKPiA+ICsgKiBSZXR1cm5zOgo+ID4gKyAqIFRoZSBoZWlnaHQgaW4gcGl4ZWxzIG9mIGEgYmxv Y2ssIGRlcGVuZGluZyBvbiB0aGUgcGxhbmUgaW5kZXguCj4gPiArICovCj4gPiArc3RhdGljIGlu bGluZQo+ID4gK3Vuc2lnbmVkIGludCBpbWFnZV9mb3JtYXRfaW5mb19ibG9ja19oZWlnaHQoY29u c3Qgc3RydWN0IGltYWdlX2Zvcm1hdF9pbmZvICpmb3JtYXQsCj4gPiArCQkJCQkgICAgaW50IHBs YW5lKQo+ID4gK3sKPiA+ICsJaWYgKCFmb3JtYXQpCj4gPiArCQlyZXR1cm4gMDsKPiA+ICsKPiA+ ICsJaWYgKHBsYW5lIDwgMCB8fCBwbGFuZSA+PSBBUlJBWV9TSVpFKGZvcm1hdC0+YmxvY2tfdykp Cj4gPiArCQlyZXR1cm4gMDsKPiA+ICsKPiA+ICsJaWYgKHBsYW5lID49IGZvcm1hdC0+bnVtX3Bs YW5lcykKPiA+ICsJCXJldHVybiAwOwo+ID4gKwo+ID4gKwlpZiAoIWZvcm1hdC0+YmxvY2tfaFtw bGFuZV0pCj4gPiArCQlyZXR1cm4gMTsKPiA+ICsKPiA+ICsJcmV0dXJuIGZvcm1hdC0+YmxvY2tf aFtwbGFuZV07Cj4gPiArfQo+ID4gKwo+ID4gKy8qKgo+ID4gKyAqIGltYWdlX2Zvcm1hdF9pbmZv X21pbl9waXRjaCAtIGNvbXB1dGVzIHRoZSBtaW5pbXVtIHJlcXVpcmVkIHBpdGNoIGluIGJ5dGVz Cj4gPiArICogQGluZm86IHBpeGVsIGZvcm1hdCBpbmZvCj4gPiArICogQHBsYW5lOiBwbGFuZSBp bmRleAo+ID4gKyAqIEBidWZmZXJfd2lkdGg6IGJ1ZmZlciB3aWR0aCBpbiBwaXhlbHMKPiA+ICsg Kgo+ID4gKyAqIFJldHVybnM6Cj4gPiArICogVGhlIG1pbmltdW0gcmVxdWlyZWQgcGl0Y2ggaW4g Ynl0ZXMgZm9yIGEgYnVmZmVyIGJ5IHRha2luZyBpbnRvIGNvbnNpZGVyYXRpb24KPiA+ICsgKiB0 aGUgcGl4ZWwgZm9ybWF0IGluZm9ybWF0aW9uIGFuZCB0aGUgYnVmZmVyIHdpZHRoLgo+ID4gKyAq Lwo+ID4gK3N0YXRpYyBpbmxpbmUKPiA+ICt1aW50NjRfdCBpbWFnZV9mb3JtYXRfaW5mb19taW5f cGl0Y2goY29uc3Qgc3RydWN0IGltYWdlX2Zvcm1hdF9pbmZvICppbmZvLAo+ID4gKwkJCQkgICAg IGludCBwbGFuZSwgdW5zaWduZWQgaW50IGJ1ZmZlcl93aWR0aCkKPiA+ICt7Cj4gPiArCWlmICgh aW5mbyB8fCBwbGFuZSA8IDAgfHwgcGxhbmUgPj0gaW5mby0+bnVtX3BsYW5lcykKPiA+ICsJCXJl dHVybiAwOwo+ID4gKwo+ID4gKwlyZXR1cm4gRElWX1JPVU5EX1VQX1VMTCgodTY0KWJ1ZmZlcl93 aWR0aCAqIGluZm8tPmNoYXJfcGVyX2Jsb2NrW3BsYW5lXSwKPiA+ICsJCQkgICAgaW1hZ2VfZm9y bWF0X2luZm9fYmxvY2tfd2lkdGgoaW5mbywgcGxhbmUpICoKPiA+ICsJCQkgICAgaW1hZ2VfZm9y bWF0X2luZm9fYmxvY2tfaGVpZ2h0KGluZm8sIHBsYW5lKSk7Cj4gPiArfQo+ID4gKwo+ID4gK2Nv bnN0IHN0cnVjdCBpbWFnZV9mb3JtYXRfaW5mbyAqX19pbWFnZV9mb3JtYXRfZHJtX2xvb2t1cCh1 MzIgZHJtKTsKPiA+ICtjb25zdCBzdHJ1Y3QgaW1hZ2VfZm9ybWF0X2luZm8gKmltYWdlX2Zvcm1h dF9kcm1fbG9va3VwKHUzMiBkcm0pOwo+ID4gKwo+ID4gKyNlbmRpZiAvKiBfSU1BR0VfRk9STUFU U19IXyAqLwo+ID4gZGlmZiAtLWdpdCBhL2xpYi9LY29uZmlnIGIvbGliL0tjb25maWcKPiA+IGlu ZGV4IGZiNDUzYWZmZjMyZS4uOWEwMTYwZDMxMjNiIDEwMDY0NAo+ID4gLS0tIGEvbGliL0tjb25m aWcKPiA+ICsrKyBiL2xpYi9LY29uZmlnCj4gPiBAQCAtNjI1LDMgKzYyNSwxMCBAQCBjb25maWcg R0VORVJJQ19MSUJfVUNNUERJMgo+ID4gIAo+ID4gIGNvbmZpZyBPQkpBR0cKPiA+ICAJdHJpc3Rh dGUgIm9iamFnZyIgaWYgQ09NUElMRV9URVNUCj4gPiArCj4gPiArY29uZmlnIElNQUdFX0ZPUk1B VFMKPiA+ICsJYm9vbAo+ID4gKwo+ID4gK2NvbmZpZyBJTUFHRV9GT1JNQVRTX1NFTEZURVNUUwo+ ID4gKwl0cmlzdGF0ZSAiVGVzdCBpbWFnZSBmb3JtYXQgZnVuY3Rpb25zIgo+ID4gKwlkZXBlbmRz IG9uIElNQUdFX0ZPUk1BVFMKPiA+IGRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUgYi9saWIvTWFr ZWZpbGUKPiA+IGluZGV4IDY5OTZkMmI5ZjQwMS4uMjAzMzM2YjkxMjQ4IDEwMDY0NAo+ID4gLS0t IGEvbGliL01ha2VmaWxlCj4gPiArKysgYi9saWIvTWFrZWZpbGUKPiA+IEBAIC0yODAsMyArMjgw LDYgQEAgb2JqLSQoQ09ORklHX0dFTkVSSUNfTElCX01VTERJMykgKz0gbXVsZGkzLm8KPiA+ICBv YmotJChDT05GSUdfR0VORVJJQ19MSUJfQ01QREkyKSArPSBjbXBkaTIubwo+ID4gIG9iai0kKENP TkZJR19HRU5FUklDX0xJQl9VQ01QREkyKSArPSB1Y21wZGkyLm8KPiA+ICBvYmotJChDT05GSUdf T0JKQUdHKSArPSBvYmphZ2cubwo+ID4gKwo+ID4gK29iai0kKENPTkZJR19JTUFHRV9GT1JNQVRT KSArPSBpbWFnZS1mb3JtYXRzLm8KPiA+ICtvYmotJChDT05GSUdfSU1BR0VfRk9STUFUU19TRUxG VEVTVFMpICs9IGltYWdlLWZvcm1hdHMtc2VsZnRlc3RzLm8KPiA+IGRpZmYgLS1naXQgYS9saWIv aW1hZ2UtZm9ybWF0cy1zZWxmdGVzdHMuYyBiL2xpYi9pbWFnZS1mb3JtYXRzLXNlbGZ0ZXN0cy5j Cj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi5kMGYwMDEx YjUzNWUKPiA+IC0tLSAvZGV2L251bGwKPiA+ICsrKyBiL2xpYi9pbWFnZS1mb3JtYXRzLXNlbGZ0 ZXN0cy5jCj4gPiBAQCAtMCwwICsxLDMyNSBAQAo+ID4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBHUEwtMi4wCj4gPiArLyoKPiA+ICsgKiBUZXN0IGNhc2VzIGZvciB0aGUgaW1hZ2VfZm9y bWF0IGZ1bmN0aW9ucwo+ID4gKyAqLwo+ID4gKwo+ID4gKyNkZWZpbmUgcHJfZm10KGZtdCkgImlt YWdlX2Zvcm1hdDogIiBmbXQKPiA+ICsKPiA+ICsjaW5jbHVkZSA8bGludXgvZXJybm8uaD4KPiA+ ICsjaW5jbHVkZSA8bGludXgvaW1hZ2UtZm9ybWF0cy5oPgo+ID4gKyNpbmNsdWRlIDxsaW51eC9r ZXJuZWwuaD4KPiA+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gPiArCj4gPiArI2luY2x1 ZGUgPGRybS9kcm1fZm91cmNjLmg+Cj4gPiArCj4gPiArI2RlZmluZSBGQUlMKHRlc3QsIG1zZywg Li4uKSBcCj4gPiArCWRvIHsgXAo+ID4gKwkJaWYgKHRlc3QpIHsgXAo+ID4gKwkJCXByX2Vycigi JXMvJXU6ICIgbXNnLCBfX0ZVTkNUSU9OX18sIF9fTElORV9fLCAjI19fVkFfQVJHU19fKTsgXAo+ ID4gKwkJCXJldHVybiAtRUlOVkFMOyBcCj4gPiArCQl9IFwKPiA+ICsJfSB3aGlsZSAoMCkKPiA+ ICsKPiA+ICsjZGVmaW5lIEZBSUxfT04oeCkgRkFJTCgoeCksICIlcyIsICJGQUlMX09OKCIgX19z dHJpbmdpZnkoeCkgIilcbiIpCj4gPiArCj4gPiArc3RhdGljIGludCB0ZXN0X2ltYWdlX2Zvcm1h dF9pbmZvX2Jsb2NrX3dpZHRoKHZvaWQpCj4gPiArewo+ID4gKwljb25zdCBzdHJ1Y3QgaW1hZ2Vf Zm9ybWF0X2luZm8gKmluZm8gPSBOVUxMOwo+ID4gKwo+ID4gKwkvKiBUZXN0IGludmFsaWQgYXJn dW1lbnRzICovCj4gPiArCUZBSUxfT04oaW1hZ2VfZm9ybWF0X2luZm9fYmxvY2tfd2lkdGgoaW5m bywgMCkgIT0gMCk7Cj4gPiArCUZBSUxfT04oaW1hZ2VfZm9ybWF0X2luZm9fYmxvY2tfd2lkdGgo aW5mbywgLTEpICE9IDApOwo+ID4gKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9pbmZvX2Jsb2NrX3dp ZHRoKGluZm8sIDEpICE9IDApOwo+ID4gKwo+ID4gKwkvKiBUZXN0IDEgcGxhbmUgZm9ybWF0ICov Cj4gPiArCWluZm8gPSBpbWFnZV9mb3JtYXRfZHJtX2xvb2t1cChEUk1fRk9STUFUX1hSR0I0NDQ0 KTsKPiA+ICsJRkFJTF9PTighaW5mbyk7Cj4gPiArCUZBSUxfT04oaW1hZ2VfZm9ybWF0X2luZm9f YmxvY2tfd2lkdGgoaW5mbywgMCkgIT0gMSk7Cj4gPiArCUZBSUxfT04oaW1hZ2VfZm9ybWF0X2lu Zm9fYmxvY2tfd2lkdGgoaW5mbywgMSkgIT0gMCk7Cj4gPiArCUZBSUxfT04oaW1hZ2VfZm9ybWF0 X2luZm9fYmxvY2tfd2lkdGgoaW5mbywgLTEpICE9IDApOwo+ID4gKwo+ID4gKwkvKiBUZXN0IDIg cGxhbmVzIGZvcm1hdCAqLwo+ID4gKwlpbmZvID0gaW1hZ2VfZm9ybWF0X2RybV9sb29rdXAoRFJN X0ZPUk1BVF9OVjEyKTsKPiA+ICsJRkFJTF9PTighaW5mbyk7Cj4gPiArCUZBSUxfT04oaW1hZ2Vf Zm9ybWF0X2luZm9fYmxvY2tfd2lkdGgoaW5mbywgMCkgIT0gMSk7Cj4gPiArCUZBSUxfT04oaW1h Z2VfZm9ybWF0X2luZm9fYmxvY2tfd2lkdGgoaW5mbywgMSkgIT0gMSk7Cj4gPiArCUZBSUxfT04o aW1hZ2VfZm9ybWF0X2luZm9fYmxvY2tfd2lkdGgoaW5mbywgMikgIT0gMCk7Cj4gPiArCUZBSUxf T04oaW1hZ2VfZm9ybWF0X2luZm9fYmxvY2tfd2lkdGgoaW5mbywgLTEpICE9IDApOwo+ID4gKwo+ ID4gKwkvKiBUZXN0IDMgcGxhbmVzIGZvcm1hdCAqLwo+ID4gKwlpbmZvID0gaW1hZ2VfZm9ybWF0 X2RybV9sb29rdXAoRFJNX0ZPUk1BVF9ZVVY0MjIpOwo+ID4gKwlGQUlMX09OKCFpbmZvKTsKPiA+ ICsJRkFJTF9PTihpbWFnZV9mb3JtYXRfaW5mb19ibG9ja193aWR0aChpbmZvLCAwKSAhPSAxKTsK PiA+ICsJRkFJTF9PTihpbWFnZV9mb3JtYXRfaW5mb19ibG9ja193aWR0aChpbmZvLCAxKSAhPSAx KTsKPiA+ICsJRkFJTF9PTihpbWFnZV9mb3JtYXRfaW5mb19ibG9ja193aWR0aChpbmZvLCAyKSAh PSAxKTsKPiA+ICsJRkFJTF9PTihpbWFnZV9mb3JtYXRfaW5mb19ibG9ja193aWR0aChpbmZvLCAz KSAhPSAwKTsKPiA+ICsJRkFJTF9PTihpbWFnZV9mb3JtYXRfaW5mb19ibG9ja193aWR0aChpbmZv LCAtMSkgIT0gMCk7Cj4gPiArCj4gPiArCS8qIFRlc3QgYSB0aWxlZCBmb3JtYXQgKi8KPiA+ICsJ aW5mbyA9IGltYWdlX2Zvcm1hdF9kcm1fbG9va3VwKERSTV9GT1JNQVRfWDBMMCk7Cj4gPiArCUZB SUxfT04oIWluZm8pOwo+ID4gKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9pbmZvX2Jsb2NrX3dpZHRo KGluZm8sIDApICE9IDIpOwo+ID4gKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9pbmZvX2Jsb2NrX3dp ZHRoKGluZm8sIDEpICE9IDApOwo+ID4gKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9pbmZvX2Jsb2Nr X3dpZHRoKGluZm8sIC0xKSAhPSAwKTsKPiA+ICsKPiA+ICsJcmV0dXJuIDA7Cj4gPiArfQo+ID4g Kwo+ID4gK3N0YXRpYyBpbnQgdGVzdF9pbWFnZV9mb3JtYXRfaW5mb19ibG9ja19oZWlnaHQodm9p ZCkKPiA+ICt7Cj4gPiArCWNvbnN0IHN0cnVjdCBpbWFnZV9mb3JtYXRfaW5mbyAqaW5mbyA9IE5V TEw7Cj4gPiArCj4gPiArCS8qIFRlc3QgaW52YWxpZCBhcmd1bWVudHMgKi8KPiA+ICsJRkFJTF9P TihpbWFnZV9mb3JtYXRfaW5mb19ibG9ja19oZWlnaHQoaW5mbywgMCkgIT0gMCk7Cj4gPiArCUZB SUxfT04oaW1hZ2VfZm9ybWF0X2luZm9fYmxvY2tfaGVpZ2h0KGluZm8sIC0xKSAhPSAwKTsKPiA+ ICsJRkFJTF9PTihpbWFnZV9mb3JtYXRfaW5mb19ibG9ja19oZWlnaHQoaW5mbywgMSkgIT0gMCk7 Cj4gPiArCj4gPiArCS8qIFRlc3QgMSBwbGFuZSBmb3JtYXQgKi8KPiA+ICsJaW5mbyA9IGltYWdl X2Zvcm1hdF9kcm1fbG9va3VwKERSTV9GT1JNQVRfWFJHQjQ0NDQpOwo+ID4gKwlGQUlMX09OKCFp bmZvKTsKPiA+ICsJRkFJTF9PTihpbWFnZV9mb3JtYXRfaW5mb19ibG9ja19oZWlnaHQoaW5mbywg MCkgIT0gMSk7Cj4gPiArCUZBSUxfT04oaW1hZ2VfZm9ybWF0X2luZm9fYmxvY2tfaGVpZ2h0KGlu Zm8sIDEpICE9IDApOwo+ID4gKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9pbmZvX2Jsb2NrX2hlaWdo dChpbmZvLCAtMSkgIT0gMCk7Cj4gPiArCj4gPiArCS8qIFRlc3QgMiBwbGFuZXMgZm9ybWF0ICov Cj4gPiArCWluZm8gPSBpbWFnZV9mb3JtYXRfZHJtX2xvb2t1cChEUk1fRk9STUFUX05WMTIpOwo+ ID4gKwlGQUlMX09OKCFpbmZvKTsKPiA+ICsJRkFJTF9PTihpbWFnZV9mb3JtYXRfaW5mb19ibG9j a19oZWlnaHQoaW5mbywgMCkgIT0gMSk7Cj4gPiArCUZBSUxfT04oaW1hZ2VfZm9ybWF0X2luZm9f YmxvY2tfaGVpZ2h0KGluZm8sIDEpICE9IDEpOwo+ID4gKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9p bmZvX2Jsb2NrX2hlaWdodChpbmZvLCAyKSAhPSAwKTsKPiA+ICsJRkFJTF9PTihpbWFnZV9mb3Jt YXRfaW5mb19ibG9ja19oZWlnaHQoaW5mbywgLTEpICE9IDApOwo+ID4gKwo+ID4gKwkvKiBUZXN0 IDMgcGxhbmVzIGZvcm1hdCAqLwo+ID4gKwlpbmZvID0gaW1hZ2VfZm9ybWF0X2RybV9sb29rdXAo RFJNX0ZPUk1BVF9ZVVY0MjIpOwo+ID4gKwlGQUlMX09OKCFpbmZvKTsKPiA+ICsJRkFJTF9PTihp bWFnZV9mb3JtYXRfaW5mb19ibG9ja19oZWlnaHQoaW5mbywgMCkgIT0gMSk7Cj4gPiArCUZBSUxf T04oaW1hZ2VfZm9ybWF0X2luZm9fYmxvY2tfaGVpZ2h0KGluZm8sIDEpICE9IDEpOwo+ID4gKwlG QUlMX09OKGltYWdlX2Zvcm1hdF9pbmZvX2Jsb2NrX2hlaWdodChpbmZvLCAyKSAhPSAxKTsKPiA+ ICsJRkFJTF9PTihpbWFnZV9mb3JtYXRfaW5mb19ibG9ja19oZWlnaHQoaW5mbywgMykgIT0gMCk7 Cj4gPiArCUZBSUxfT04oaW1hZ2VfZm9ybWF0X2luZm9fYmxvY2tfaGVpZ2h0KGluZm8sIC0xKSAh PSAwKTsKPiA+ICsKPiA+ICsJLyogVGVzdCBhIHRpbGVkIGZvcm1hdCAqLwo+ID4gKwlpbmZvID0g aW1hZ2VfZm9ybWF0X2RybV9sb29rdXAoRFJNX0ZPUk1BVF9YMEwwKTsKPiA+ICsJRkFJTF9PTigh aW5mbyk7Cj4gPiArCUZBSUxfT04oaW1hZ2VfZm9ybWF0X2luZm9fYmxvY2tfaGVpZ2h0KGluZm8s IDApICE9IDIpOwo+ID4gKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9pbmZvX2Jsb2NrX2hlaWdodChp bmZvLCAxKSAhPSAwKTsKPiA+ICsJRkFJTF9PTihpbWFnZV9mb3JtYXRfaW5mb19ibG9ja19oZWln aHQoaW5mbywgLTEpICE9IDApOwo+ID4gKwo+ID4gKwlyZXR1cm4gMDsKPiA+ICt9Cj4gPiArCj4g PiArc3RhdGljIGludCB0ZXN0X2ltYWdlX2Zvcm1hdF9pbmZvX21pbl9waXRjaCh2b2lkKQo+ID4g K3sKPiA+ICsJY29uc3Qgc3RydWN0IGltYWdlX2Zvcm1hdF9pbmZvICppbmZvID0gTlVMTDsKPiA+ ICsKPiA+ICsJLyogVGVzdCBpbnZhbGlkIGFyZ3VtZW50cyAqLwo+ID4gKwlGQUlMX09OKGltYWdl X2Zvcm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCAwLCAwKSAhPSAwKTsKPiA+ICsJRkFJTF9PTihp bWFnZV9mb3JtYXRfaW5mb19taW5fcGl0Y2goaW5mbywgLTEsIDApICE9IDApOwo+ID4gKwlGQUlM X09OKGltYWdlX2Zvcm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCAxLCAwKSAhPSAwKTsKPiA+ICsK PiA+ICsJLyogVGVzdCAxIHBsYW5lIDggYml0cyBwZXIgcGl4ZWwgZm9ybWF0ICovCj4gPiArCWlu Zm8gPSBpbWFnZV9mb3JtYXRfZHJtX2xvb2t1cChEUk1fRk9STUFUX1JHQjMzMik7Cj4gPiArCUZB SUxfT04oIWluZm8pOwo+ID4gKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9pbmZvX21pbl9waXRjaChp bmZvLCAwLCAwKSAhPSAwKTsKPiA+ICsJRkFJTF9PTihpbWFnZV9mb3JtYXRfaW5mb19taW5fcGl0 Y2goaW5mbywgLTEsIDApICE9IDApOwo+ID4gKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9pbmZvX21p bl9waXRjaChpbmZvLCAxLCAwKSAhPSAwKTsKPiA+ICsKPiA+ICsJRkFJTF9PTihpbWFnZV9mb3Jt YXRfaW5mb19taW5fcGl0Y2goaW5mbywgMCwgMSkgIT0gMSk7Cj4gPiArCUZBSUxfT04oaW1hZ2Vf Zm9ybWF0X2luZm9fbWluX3BpdGNoKGluZm8sIDAsIDIpICE9IDIpOwo+ID4gKwlGQUlMX09OKGlt YWdlX2Zvcm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCAwLCA2NDApICE9IDY0MCk7Cj4gPiArCUZB SUxfT04oaW1hZ2VfZm9ybWF0X2luZm9fbWluX3BpdGNoKGluZm8sIDAsIDEwMjQpICE9IDEwMjQp Owo+ID4gKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCAwLCAxOTIw KSAhPSAxOTIwKTsKPiA+ICsJRkFJTF9PTihpbWFnZV9mb3JtYXRfaW5mb19taW5fcGl0Y2goaW5m bywgMCwgNDA5NikgIT0gNDA5Nik7Cj4gPiArCUZBSUxfT04oaW1hZ2VfZm9ybWF0X2luZm9fbWlu X3BpdGNoKGluZm8sIDAsIDY3MSkgIT0gNjcxKTsKPiA+ICsJRkFJTF9PTihpbWFnZV9mb3JtYXRf aW5mb19taW5fcGl0Y2goaW5mbywgMCwgVUlOVF9NQVgpICE9Cj4gPiArCQkJKHVpbnQ2NF90KVVJ TlRfTUFYKTsKPiA+ICsJRkFJTF9PTihpbWFnZV9mb3JtYXRfaW5mb19taW5fcGl0Y2goaW5mbywg MCwgKFVJTlRfTUFYIC0gMSkpICE9Cj4gPiArCQkJKHVpbnQ2NF90KShVSU5UX01BWCAtIDEpKTsK PiA+ICsKPiA+ICsJLyogVGVzdCAxIHBsYW5lIDE2IGJpdHMgcGVyIHBpeGVsIGZvcm1hdCAqLwo+ ID4gKwlpbmZvID0gaW1hZ2VfZm9ybWF0X2RybV9sb29rdXAoRFJNX0ZPUk1BVF9YUkdCNDQ0NCk7 Cj4gPiArCUZBSUxfT04oIWluZm8pOwo+ID4gKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9pbmZvX21p bl9waXRjaChpbmZvLCAwLCAwKSAhPSAwKTsKPiA+ICsJRkFJTF9PTihpbWFnZV9mb3JtYXRfaW5m b19taW5fcGl0Y2goaW5mbywgLTEsIDApICE9IDApOwo+ID4gKwlGQUlMX09OKGltYWdlX2Zvcm1h dF9pbmZvX21pbl9waXRjaChpbmZvLCAxLCAwKSAhPSAwKTsKPiA+ICsKPiA+ICsJRkFJTF9PTihp bWFnZV9mb3JtYXRfaW5mb19taW5fcGl0Y2goaW5mbywgMCwgMSkgIT0gMik7Cj4gPiArCUZBSUxf T04oaW1hZ2VfZm9ybWF0X2luZm9fbWluX3BpdGNoKGluZm8sIDAsIDIpICE9IDQpOwo+ID4gKwlG QUlMX09OKGltYWdlX2Zvcm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCAwLCA2NDApICE9IDEyODAp Owo+ID4gKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCAwLCAxMDI0 KSAhPSAyMDQ4KTsKPiA+ICsJRkFJTF9PTihpbWFnZV9mb3JtYXRfaW5mb19taW5fcGl0Y2goaW5m bywgMCwgMTkyMCkgIT0gMzg0MCk7Cj4gPiArCUZBSUxfT04oaW1hZ2VfZm9ybWF0X2luZm9fbWlu X3BpdGNoKGluZm8sIDAsIDQwOTYpICE9IDgxOTIpOwo+ID4gKwlGQUlMX09OKGltYWdlX2Zvcm1h dF9pbmZvX21pbl9waXRjaChpbmZvLCAwLCA2NzEpICE9IDEzNDIpOwo+ID4gKwlGQUlMX09OKGlt YWdlX2Zvcm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCAwLCBVSU5UX01BWCkgIT0KPiA+ICsJCQko dWludDY0X3QpVUlOVF9NQVggKiAyKTsKPiA+ICsJRkFJTF9PTihpbWFnZV9mb3JtYXRfaW5mb19t aW5fcGl0Y2goaW5mbywgMCwgKFVJTlRfTUFYIC0gMSkpICE9Cj4gPiArCQkJKHVpbnQ2NF90KShV SU5UX01BWCAtIDEpICogMik7Cj4gPiArCj4gPiArCS8qIFRlc3QgMSBwbGFuZSAyNCBiaXRzIHBl ciBwaXhlbCBmb3JtYXQgKi8KPiA+ICsJaW5mbyA9IGltYWdlX2Zvcm1hdF9kcm1fbG9va3VwKERS TV9GT1JNQVRfUkdCODg4KTsKPiA+ICsJRkFJTF9PTighaW5mbyk7Cj4gPiArCUZBSUxfT04oaW1h Z2VfZm9ybWF0X2luZm9fbWluX3BpdGNoKGluZm8sIDAsIDApICE9IDApOwo+ID4gKwlGQUlMX09O KGltYWdlX2Zvcm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCAtMSwgMCkgIT0gMCk7Cj4gPiArCUZB SUxfT04oaW1hZ2VfZm9ybWF0X2luZm9fbWluX3BpdGNoKGluZm8sIDEsIDApICE9IDApOwo+ID4g Kwo+ID4gKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCAwLCAxKSAh PSAzKTsKPiA+ICsJRkFJTF9PTihpbWFnZV9mb3JtYXRfaW5mb19taW5fcGl0Y2goaW5mbywgMCwg MikgIT0gNik7Cj4gPiArCUZBSUxfT04oaW1hZ2VfZm9ybWF0X2luZm9fbWluX3BpdGNoKGluZm8s IDAsIDY0MCkgIT0gMTkyMCk7Cj4gPiArCUZBSUxfT04oaW1hZ2VfZm9ybWF0X2luZm9fbWluX3Bp dGNoKGluZm8sIDAsIDEwMjQpICE9IDMwNzIpOwo+ID4gKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9p bmZvX21pbl9waXRjaChpbmZvLCAwLCAxOTIwKSAhPSA1NzYwKTsKPiA+ICsJRkFJTF9PTihpbWFn ZV9mb3JtYXRfaW5mb19taW5fcGl0Y2goaW5mbywgMCwgNDA5NikgIT0gMTIyODgpOwo+ID4gKwlG QUlMX09OKGltYWdlX2Zvcm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCAwLCA2NzEpICE9IDIwMTMp Owo+ID4gKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCAwLCBVSU5U X01BWCkgIT0KPiA+ICsJCQkodWludDY0X3QpVUlOVF9NQVggKiAzKTsKPiA+ICsJRkFJTF9PTihp bWFnZV9mb3JtYXRfaW5mb19taW5fcGl0Y2goaW5mbywgMCwgVUlOVF9NQVggLSAxKSAhPQo+ID4g KwkJCSh1aW50NjRfdCkoVUlOVF9NQVggLSAxKSAqIDMpOwo+ID4gKwo+ID4gKwkvKiBUZXN0IDEg cGxhbmUgMzIgYml0cyBwZXIgcGl4ZWwgZm9ybWF0ICovCj4gPiArCWluZm8gPSBpbWFnZV9mb3Jt YXRfZHJtX2xvb2t1cChEUk1fRk9STUFUX0FCR1I4ODg4KTsKPiA+ICsJRkFJTF9PTighaW5mbyk7 Cj4gPiArCUZBSUxfT04oaW1hZ2VfZm9ybWF0X2luZm9fbWluX3BpdGNoKGluZm8sIDAsIDApICE9 IDApOwo+ID4gKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCAtMSwg MCkgIT0gMCk7Cj4gPiArCUZBSUxfT04oaW1hZ2VfZm9ybWF0X2luZm9fbWluX3BpdGNoKGluZm8s IDEsIDApICE9IDApOwo+ID4gKwo+ID4gKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9pbmZvX21pbl9w aXRjaChpbmZvLCAwLCAxKSAhPSA0KTsKPiA+ICsJRkFJTF9PTihpbWFnZV9mb3JtYXRfaW5mb19t aW5fcGl0Y2goaW5mbywgMCwgMikgIT0gOCk7Cj4gPiArCUZBSUxfT04oaW1hZ2VfZm9ybWF0X2lu Zm9fbWluX3BpdGNoKGluZm8sIDAsIDY0MCkgIT0gMjU2MCk7Cj4gPiArCUZBSUxfT04oaW1hZ2Vf Zm9ybWF0X2luZm9fbWluX3BpdGNoKGluZm8sIDAsIDEwMjQpICE9IDQwOTYpOwo+ID4gKwlGQUlM X09OKGltYWdlX2Zvcm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCAwLCAxOTIwKSAhPSA3NjgwKTsK PiA+ICsJRkFJTF9PTihpbWFnZV9mb3JtYXRfaW5mb19taW5fcGl0Y2goaW5mbywgMCwgNDA5Nikg IT0gMTYzODQpOwo+ID4gKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9pbmZvX21pbl9waXRjaChpbmZv LCAwLCA2NzEpICE9IDI2ODQpOwo+ID4gKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9pbmZvX21pbl9w aXRjaChpbmZvLCAwLCBVSU5UX01BWCkgIT0KPiA+ICsJCQkodWludDY0X3QpVUlOVF9NQVggKiA0 KTsKPiA+ICsJRkFJTF9PTihpbWFnZV9mb3JtYXRfaW5mb19taW5fcGl0Y2goaW5mbywgMCwgVUlO VF9NQVggLSAxKSAhPQo+ID4gKwkJCSh1aW50NjRfdCkoVUlOVF9NQVggLSAxKSAqIDQpOwo+ID4g Kwo+ID4gKwkvKiBUZXN0IDIgcGxhbmVzIGZvcm1hdCAqLwo+ID4gKwlpbmZvID0gaW1hZ2VfZm9y bWF0X2RybV9sb29rdXAoRFJNX0ZPUk1BVF9OVjEyKTsKPiA+ICsJRkFJTF9PTighaW5mbyk7Cj4g PiArCUZBSUxfT04oaW1hZ2VfZm9ybWF0X2luZm9fbWluX3BpdGNoKGluZm8sIDAsIDApICE9IDAp Owo+ID4gKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCAxLCAwKSAh PSAwKTsKPiA+ICsJRkFJTF9PTihpbWFnZV9mb3JtYXRfaW5mb19taW5fcGl0Y2goaW5mbywgLTEs IDApICE9IDApOwo+ID4gKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9pbmZvX21pbl9waXRjaChpbmZv LCAyLCAwKSAhPSAwKTsKPiA+ICsKPiA+ICsJRkFJTF9PTihpbWFnZV9mb3JtYXRfaW5mb19taW5f cGl0Y2goaW5mbywgMCwgMSkgIT0gMSk7Cj4gPiArCUZBSUxfT04oaW1hZ2VfZm9ybWF0X2luZm9f bWluX3BpdGNoKGluZm8sIDEsIDEpICE9IDIpOwo+ID4gKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9p bmZvX21pbl9waXRjaChpbmZvLCAwLCAyKSAhPSAyKTsKPiA+ICsJRkFJTF9PTihpbWFnZV9mb3Jt YXRfaW5mb19taW5fcGl0Y2goaW5mbywgMSwgMSkgIT0gMik7Cj4gPiArCUZBSUxfT04oaW1hZ2Vf Zm9ybWF0X2luZm9fbWluX3BpdGNoKGluZm8sIDAsIDY0MCkgIT0gNjQwKTsKPiA+ICsJRkFJTF9P TihpbWFnZV9mb3JtYXRfaW5mb19taW5fcGl0Y2goaW5mbywgMSwgMzIwKSAhPSA2NDApOwo+ID4g KwlGQUlMX09OKGltYWdlX2Zvcm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCAwLCAxMDI0KSAhPSAx MDI0KTsKPiA+ICsJRkFJTF9PTihpbWFnZV9mb3JtYXRfaW5mb19taW5fcGl0Y2goaW5mbywgMSwg NTEyKSAhPSAxMDI0KTsKPiA+ICsJRkFJTF9PTihpbWFnZV9mb3JtYXRfaW5mb19taW5fcGl0Y2go aW5mbywgMCwgMTkyMCkgIT0gMTkyMCk7Cj4gPiArCUZBSUxfT04oaW1hZ2VfZm9ybWF0X2luZm9f bWluX3BpdGNoKGluZm8sIDEsIDk2MCkgIT0gMTkyMCk7Cj4gPiArCUZBSUxfT04oaW1hZ2VfZm9y bWF0X2luZm9fbWluX3BpdGNoKGluZm8sIDAsIDQwOTYpICE9IDQwOTYpOwo+ID4gKwlGQUlMX09O KGltYWdlX2Zvcm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCAxLCAyMDQ4KSAhPSA0MDk2KTsKPiA+ ICsJRkFJTF9PTihpbWFnZV9mb3JtYXRfaW5mb19taW5fcGl0Y2goaW5mbywgMCwgNjcxKSAhPSA2 NzEpOwo+ID4gKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCAxLCAz MzYpICE9IDY3Mik7Cj4gPiArCUZBSUxfT04oaW1hZ2VfZm9ybWF0X2luZm9fbWluX3BpdGNoKGlu Zm8sIDAsIFVJTlRfTUFYKSAhPQo+ID4gKwkJCSh1aW50NjRfdClVSU5UX01BWCk7Cj4gPiArCUZB SUxfT04oaW1hZ2VfZm9ybWF0X2luZm9fbWluX3BpdGNoKGluZm8sIDEsIFVJTlRfTUFYIC8gMiAr IDEpICE9Cj4gPiArCQkJKHVpbnQ2NF90KVVJTlRfTUFYICsgMSk7Cj4gPiArCUZBSUxfT04oaW1h Z2VfZm9ybWF0X2luZm9fbWluX3BpdGNoKGluZm8sIDAsIChVSU5UX01BWCAtIDEpKSAhPQo+ID4g KwkJCSh1aW50NjRfdCkoVUlOVF9NQVggLSAxKSk7Cj4gPiArCUZBSUxfT04oaW1hZ2VfZm9ybWF0 X2luZm9fbWluX3BpdGNoKGluZm8sIDEsIChVSU5UX01BWCAtIDEpIC8gIDIpICE9Cj4gPiArCQkJ KHVpbnQ2NF90KShVSU5UX01BWCAtIDEpKTsKPiA+ICsKPiA+ICsJLyogVGVzdCAzIHBsYW5lcyA4 IGJpdHMgcGVyIHBpeGVsIGZvcm1hdCAqLwo+ID4gKwlpbmZvID0gaW1hZ2VfZm9ybWF0X2RybV9s b29rdXAoRFJNX0ZPUk1BVF9ZVVY0MjIpOwo+ID4gKwlGQUlMX09OKCFpbmZvKTsKPiA+ICsJRkFJ TF9PTihpbWFnZV9mb3JtYXRfaW5mb19taW5fcGl0Y2goaW5mbywgMCwgMCkgIT0gMCk7Cj4gPiAr CUZBSUxfT04oaW1hZ2VfZm9ybWF0X2luZm9fbWluX3BpdGNoKGluZm8sIDEsIDApICE9IDApOwo+ ID4gKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCAyLCAwKSAhPSAw KTsKPiA+ICsJRkFJTF9PTihpbWFnZV9mb3JtYXRfaW5mb19taW5fcGl0Y2goaW5mbywgLTEsIDAp ICE9IDApOwo+ID4gKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCAz LCAwKSAhPSAwKTsKPiA+ICsKPiA+ICsJRkFJTF9PTihpbWFnZV9mb3JtYXRfaW5mb19taW5fcGl0 Y2goaW5mbywgMCwgMSkgIT0gMSk7Cj4gPiArCUZBSUxfT04oaW1hZ2VfZm9ybWF0X2luZm9fbWlu X3BpdGNoKGluZm8sIDEsIDEpICE9IDEpOwo+ID4gKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9pbmZv X21pbl9waXRjaChpbmZvLCAyLCAxKSAhPSAxKTsKPiA+ICsJRkFJTF9PTihpbWFnZV9mb3JtYXRf aW5mb19taW5fcGl0Y2goaW5mbywgMCwgMikgIT0gMik7Cj4gPiArCUZBSUxfT04oaW1hZ2VfZm9y bWF0X2luZm9fbWluX3BpdGNoKGluZm8sIDEsIDIpICE9IDIpOwo+ID4gKwlGQUlMX09OKGltYWdl X2Zvcm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCAyLCAyKSAhPSAyKTsKPiA+ICsJRkFJTF9PTihp bWFnZV9mb3JtYXRfaW5mb19taW5fcGl0Y2goaW5mbywgMCwgNjQwKSAhPSA2NDApOwo+ID4gKwlG QUlMX09OKGltYWdlX2Zvcm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCAxLCAzMjApICE9IDMyMCk7 Cj4gPiArCUZBSUxfT04oaW1hZ2VfZm9ybWF0X2luZm9fbWluX3BpdGNoKGluZm8sIDIsIDMyMCkg IT0gMzIwKTsKPiA+ICsJRkFJTF9PTihpbWFnZV9mb3JtYXRfaW5mb19taW5fcGl0Y2goaW5mbywg MCwgMTAyNCkgIT0gMTAyNCk7Cj4gPiArCUZBSUxfT04oaW1hZ2VfZm9ybWF0X2luZm9fbWluX3Bp dGNoKGluZm8sIDEsIDUxMikgIT0gNTEyKTsKPiA+ICsJRkFJTF9PTihpbWFnZV9mb3JtYXRfaW5m b19taW5fcGl0Y2goaW5mbywgMiwgNTEyKSAhPSA1MTIpOwo+ID4gKwlGQUlMX09OKGltYWdlX2Zv cm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCAwLCAxOTIwKSAhPSAxOTIwKTsKPiA+ICsJRkFJTF9P TihpbWFnZV9mb3JtYXRfaW5mb19taW5fcGl0Y2goaW5mbywgMSwgOTYwKSAhPSA5NjApOwo+ID4g KwlGQUlMX09OKGltYWdlX2Zvcm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCAyLCA5NjApICE9IDk2 MCk7Cj4gPiArCUZBSUxfT04oaW1hZ2VfZm9ybWF0X2luZm9fbWluX3BpdGNoKGluZm8sIDAsIDQw OTYpICE9IDQwOTYpOwo+ID4gKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9pbmZvX21pbl9waXRjaChp bmZvLCAxLCAyMDQ4KSAhPSAyMDQ4KTsKPiA+ICsJRkFJTF9PTihpbWFnZV9mb3JtYXRfaW5mb19t aW5fcGl0Y2goaW5mbywgMiwgMjA0OCkgIT0gMjA0OCk7Cj4gPiArCUZBSUxfT04oaW1hZ2VfZm9y bWF0X2luZm9fbWluX3BpdGNoKGluZm8sIDAsIDY3MSkgIT0gNjcxKTsKPiA+ICsJRkFJTF9PTihp bWFnZV9mb3JtYXRfaW5mb19taW5fcGl0Y2goaW5mbywgMSwgMzM2KSAhPSAzMzYpOwo+ID4gKwlG QUlMX09OKGltYWdlX2Zvcm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCAyLCAzMzYpICE9IDMzNik7 Cj4gPiArCUZBSUxfT04oaW1hZ2VfZm9ybWF0X2luZm9fbWluX3BpdGNoKGluZm8sIDAsIFVJTlRf TUFYKSAhPQo+ID4gKwkJCSh1aW50NjRfdClVSU5UX01BWCk7Cj4gPiArCUZBSUxfT04oaW1hZ2Vf Zm9ybWF0X2luZm9fbWluX3BpdGNoKGluZm8sIDEsIFVJTlRfTUFYIC8gMiArIDEpICE9Cj4gPiAr CQkJKHVpbnQ2NF90KVVJTlRfTUFYIC8gMiArIDEpOwo+ID4gKwlGQUlMX09OKGltYWdlX2Zvcm1h dF9pbmZvX21pbl9waXRjaChpbmZvLCAyLCBVSU5UX01BWCAvIDIgKyAxKSAhPQo+ID4gKwkJCSh1 aW50NjRfdClVSU5UX01BWCAvIDIgKyAxKTsKPiA+ICsJRkFJTF9PTihpbWFnZV9mb3JtYXRfaW5m b19taW5fcGl0Y2goaW5mbywgMCwgKFVJTlRfTUFYIC0gMSkgLyAyKSAhPQo+ID4gKwkJCSh1aW50 NjRfdCkoVUlOVF9NQVggLSAxKSAvIDIpOwo+ID4gKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9pbmZv X21pbl9waXRjaChpbmZvLCAxLCAoVUlOVF9NQVggLSAxKSAvIDIpICE9Cj4gPiArCQkJKHVpbnQ2 NF90KShVSU5UX01BWCAtIDEpIC8gMik7Cj4gPiArCUZBSUxfT04oaW1hZ2VfZm9ybWF0X2luZm9f bWluX3BpdGNoKGluZm8sIDIsIChVSU5UX01BWCAtIDEpIC8gMikgIT0KPiA+ICsJCQkodWludDY0 X3QpKFVJTlRfTUFYIC0gMSkgLyAyKTsKPiA+ICsKPiA+ICsJLyogVGVzdCB0aWxlZCBmb3JtYXQg Ki8KPiA+ICsJaW5mbyA9IGltYWdlX2Zvcm1hdF9kcm1fbG9va3VwKERSTV9GT1JNQVRfWDBMMik7 Cj4gPiArCUZBSUxfT04oIWluZm8pOwo+ID4gKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9pbmZvX21p bl9waXRjaChpbmZvLCAwLCAwKSAhPSAwKTsKPiA+ICsJRkFJTF9PTihpbWFnZV9mb3JtYXRfaW5m b19taW5fcGl0Y2goaW5mbywgLTEsIDApICE9IDApOwo+ID4gKwlGQUlMX09OKGltYWdlX2Zvcm1h dF9pbmZvX21pbl9waXRjaChpbmZvLCAxLCAwKSAhPSAwKTsKPiA+ICsKPiA+ICsJRkFJTF9PTihp bWFnZV9mb3JtYXRfaW5mb19taW5fcGl0Y2goaW5mbywgMCwgMSkgIT0gMik7Cj4gPiArCUZBSUxf T04oaW1hZ2VfZm9ybWF0X2luZm9fbWluX3BpdGNoKGluZm8sIDAsIDIpICE9IDQpOwo+ID4gKwlG QUlMX09OKGltYWdlX2Zvcm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCAwLCA2NDApICE9IDEyODAp Owo+ID4gKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCAwLCAxMDI0 KSAhPSAyMDQ4KTsKPiA+ICsJRkFJTF9PTihpbWFnZV9mb3JtYXRfaW5mb19taW5fcGl0Y2goaW5m bywgMCwgMTkyMCkgIT0gMzg0MCk7Cj4gPiArCUZBSUxfT04oaW1hZ2VfZm9ybWF0X2luZm9fbWlu X3BpdGNoKGluZm8sIDAsIDQwOTYpICE9IDgxOTIpOwo+ID4gKwlGQUlMX09OKGltYWdlX2Zvcm1h dF9pbmZvX21pbl9waXRjaChpbmZvLCAwLCA2NzEpICE9IDEzNDIpOwo+ID4gKwlGQUlMX09OKGlt YWdlX2Zvcm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCAwLCBVSU5UX01BWCkgIT0KPiA+ICsJCQko dWludDY0X3QpVUlOVF9NQVggKiAyKTsKPiA+ICsJRkFJTF9PTihpbWFnZV9mb3JtYXRfaW5mb19t aW5fcGl0Y2goaW5mbywgMCwgVUlOVF9NQVggLSAxKSAhPQo+ID4gKwkJCSh1aW50NjRfdCkoVUlO VF9NQVggLSAxKSAqIDIpOwo+ID4gKwo+ID4gKwlyZXR1cm4gMDsKPiA+ICt9Cj4gPiArCj4gPiAr I2RlZmluZSBzZWxmdGVzdCh0ZXN0KQl7IC5uYW1lID0gI3Rlc3QsIC5mdW5jID0gdGVzdCwgfQo+ ID4gKwo+ID4gK3N0YXRpYyBzdHJ1Y3QgaW1hZ2VfZm9ybWF0X3Rlc3Qgewo+ID4gKwljaGFyCSpu YW1lOwo+ID4gKwlpbnQJKCpmdW5jKSh2b2lkKTsKPiA+ICt9IHRlc3RzW10gPSB7Cj4gPiArCXNl bGZ0ZXN0KHRlc3RfaW1hZ2VfZm9ybWF0X2luZm9fYmxvY2tfaGVpZ2h0KSwKPiA+ICsJc2VsZnRl c3QodGVzdF9pbWFnZV9mb3JtYXRfaW5mb19ibG9ja193aWR0aCksCj4gPiArCXNlbGZ0ZXN0KHRl c3RfaW1hZ2VfZm9ybWF0X2luZm9fbWluX3BpdGNoKSwKPiA+ICt9Owo+ID4gKwo+ID4gK3N0YXRp YyBpbnQgX19pbml0IGltYWdlX2Zvcm1hdF90ZXN0X2luaXQodm9pZCkKPiA+ICt7Cj4gPiArCXVu c2lnbmVkIGludCBpOwo+ID4gKwo+ID4gKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRSh0ZXN0 cyk7IGkrKykgewo+ID4gKwkJc3RydWN0IGltYWdlX2Zvcm1hdF90ZXN0ICp0ZXN0ID0gJnRlc3Rz W2ldOwo+ID4gKwkJaW50IHJldDsKPiA+ICsKPiA+ICsJCXJldCA9IHRlc3QtPmZ1bmMoKTsKPiA+ ICsJCWlmIChyZXQpIHsKPiA+ICsJCQlwcl9lcnIoIkZhaWxlZCB0ZXN0ICVzXG4iLCB0ZXN0LT5u YW1lKTsKPiA+ICsJCQlyZXR1cm4gcmV0Owo+ID4gKwkJfQo+ID4gKwl9Cj4gPiArCj4gPiArCXBy X2luZm8oIkFsbCB0ZXN0cyBleGVjdXRlZCBwcm9wZXJseS5cbiIpOwo+ID4gKwlyZXR1cm4gMDsK PiA+ICt9Cj4gPiArbW9kdWxlX2luaXQoaW1hZ2VfZm9ybWF0X3Rlc3RfaW5pdCk7Cj4gPiArCj4g PiArTU9EVUxFX0FVVEhPUigiSW50ZWwgQ29ycG9yYXRpb24iKTsKPiA+ICtNT0RVTEVfQVVUSE9S KCJNYXhpbWUgUmlwYXJkIDxtYXhpbWUucmlwYXJkQGJvb3RsaW4uY29tPiIpOwo+ID4gK01PRFVM RV9MSUNFTlNFKCJHUEwiKTsKPiA+IGRpZmYgLS1naXQgYS9saWIvaW1hZ2UtZm9ybWF0cy5jIGIv bGliL2ltYWdlLWZvcm1hdHMuYwo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+IGluZGV4IDAw MDAwMDAwMDAwMC4uMWU1MmE3NDEwMjIyCj4gPiAtLS0gL2Rldi9udWxsCj4gPiArKysgYi9saWIv aW1hZ2UtZm9ybWF0cy5jCj4gPiBAQCAtMCwwICsxLDY1NSBAQAo+ID4gKy8qCj4gPiArICogQ29w eXJpZ2h0IChjKSAyMDE2IExhdXJlbnQgUGluY2hhcnQgPGxhdXJlbnQucGluY2hhcnRAaWRlYXNv bmJvYXJkLmNvbT4KPiA+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTkgTWF4aW1lIFJpcGFyZCA8bWF4 aW1lLnJpcGFyZEBib290bGluLmNvbT4KPiA+ICsgKgo+ID4gKyAqIFBlcm1pc3Npb24gdG8gdXNl LCBjb3B5LCBtb2RpZnksIGRpc3RyaWJ1dGUsIGFuZCBzZWxsIHRoaXMgc29mdHdhcmUgYW5kIGl0 cwo+ID4gKyAqIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGlzIGhlcmVieSBncmFudGVk IHdpdGhvdXQgZmVlLCBwcm92aWRlZCB0aGF0Cj4gPiArICogdGhlIGFib3ZlIGNvcHlyaWdodCBu b3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMgYW5kIHRoYXQgYm90aCB0aGF0IGNvcHlyaWdodAo+ ID4gKyAqIG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gc3VwcG9y dGluZyBkb2N1bWVudGF0aW9uLCBhbmQKPiA+ICsgKiB0aGF0IHRoZSBuYW1lIG9mIHRoZSBjb3B5 cmlnaHQgaG9sZGVycyBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvcgo+ID4gKyAqIHB1Ymxp Y2l0eSBwZXJ0YWluaW5nIHRvIGRpc3RyaWJ1dGlvbiBvZiB0aGUgc29mdHdhcmUgd2l0aG91dCBz cGVjaWZpYywKPiA+ICsgKiB3cml0dGVuIHByaW9yIHBlcm1pc3Npb24uICBUaGUgY29weXJpZ2h0 IGhvbGRlcnMgbWFrZSBubyByZXByZXNlbnRhdGlvbnMKPiA+ICsgKiBhYm91dCB0aGUgc3VpdGFi aWxpdHkgb2YgdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UuICBJdCBpcyBwcm92aWRlZCAi YXMKPiA+ICsgKiBpcyIgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHkuCj4gPiAr ICoKPiA+ICsgKiBUSEUgQ09QWVJJR0hUIEhPTERFUlMgRElTQ0xBSU0gQUxMIFdBUlJBTlRJRVMg V0lUSCBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSwKPiA+ICsgKiBJTkNMVURJTkcgQUxMIElNUExJ RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MsIElOIE5PCj4gPiAr ICogRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIFNQ RUNJQUwsIElORElSRUNUIE9SCj4gPiArICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBE QU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsCj4gPiArICogREFU QSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5D RSBPUiBPVEhFUgo+ID4gKyAqIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4g Q09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UKPiA+ICsgKiBPRiBUSElTIFNP RlRXQVJFLgo+ID4gKyAqLwo+ID4gKwo+ID4gKyNpbmNsdWRlIDxsaW51eC9idWcuaD4KPiA+ICsj aW5jbHVkZSA8bGludXgvaW1hZ2UtZm9ybWF0cy5oPgo+ID4gKyNpbmNsdWRlIDxsaW51eC9rZXJu ZWwuaD4KPiA+ICsjaW5jbHVkZSA8bGludXgvbWF0aDY0Lmg+Cj4gPiArCj4gPiArI2luY2x1ZGUg PHVhcGkvZHJtL2RybV9mb3VyY2MuaD4KPiA+ICsKPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGlt YWdlX2Zvcm1hdF9pbmZvIGZvcm1hdHNbXSA9IHsKPiA+ICsJewo+ID4gKwkJLmRybV9mbXQgPSBE Uk1fRk9STUFUX0M4LAo+ID4gKwkJLmRlcHRoID0gOCwKPiA+ICsJCS5udW1fcGxhbmVzID0gMSwK PiA+ICsJCS5jcHAgPSB7IDEsIDAsIDAgfSwKPiA+ICsJCS5oc3ViID0gMSwKPiA+ICsJCS52c3Vi ID0gMSwKPiA+ICsJfSwgewo+ID4gKwkJLmRybV9mbXQgPSBEUk1fRk9STUFUX1JHQjMzMiwKPiA+ ICsJCS5kZXB0aCA9IDgsCj4gPiArCQkubnVtX3BsYW5lcyA9IDEsCj4gPiArCQkuY3BwID0geyAx LCAwLCAwIH0sCj4gPiArCQkuaHN1YiA9IDEsCj4gPiArCQkudnN1YiA9IDEsCj4gPiArCX0sIHsK PiA+ICsJCS5kcm1fZm10ID0gRFJNX0ZPUk1BVF9CR1IyMzMsCj4gPiArCQkuZGVwdGggPSA4LAo+ ID4gKwkJLm51bV9wbGFuZXMgPSAxLAo+ID4gKwkJLmNwcCA9IHsgMSwgMCwgMCB9LAo+ID4gKwkJ LmhzdWIgPSAxLAo+ID4gKwkJLnZzdWIgPSAxLAo+ID4gKwl9LCB7Cj4gPiArCQkuZHJtX2ZtdCA9 IERSTV9GT1JNQVRfWFJHQjQ0NDQsCj4gPiArCQkuZGVwdGggPSAwLAo+ID4gKwkJLm51bV9wbGFu ZXMgPSAxLAo+ID4gKwkJLmNwcCA9IHsgMiwgMCwgMCB9LAo+ID4gKwkJLmhzdWIgPSAxLAo+ID4g KwkJLnZzdWIgPSAxLAo+ID4gKwl9LCB7Cj4gPiArCQkuZHJtX2ZtdCA9IERSTV9GT1JNQVRfWEJH UjQ0NDQsCj4gPiArCQkuZGVwdGggPSAwLAo+ID4gKwkJLm51bV9wbGFuZXMgPSAxLAo+ID4gKwkJ LmNwcCA9IHsgMiwgMCwgMCB9LAo+ID4gKwkJLmhzdWIgPSAxLAo+ID4gKwkJLnZzdWIgPSAxLAo+ ID4gKwl9LCB7Cj4gPiArCQkuZHJtX2ZtdCA9IERSTV9GT1JNQVRfUkdCWDQ0NDQsCj4gPiArCQku ZGVwdGggPSAwLAo+ID4gKwkJLm51bV9wbGFuZXMgPSAxLAo+ID4gKwkJLmNwcCA9IHsgMiwgMCwg MCB9LAo+ID4gKwkJLmhzdWIgPSAxLAo+ID4gKwkJLnZzdWIgPSAxLAo+ID4gKwl9LCB7Cj4gPiAr CQkuZHJtX2ZtdCA9IERSTV9GT1JNQVRfQkdSWDQ0NDQsCj4gPiArCQkuZGVwdGggPSAwLAo+ID4g KwkJLm51bV9wbGFuZXMgPSAxLAo+ID4gKwkJLmNwcCA9IHsgMiwgMCwgMCB9LAo+ID4gKwkJLmhz dWIgPSAxLAo+ID4gKwkJLnZzdWIgPSAxLAo+ID4gKwl9LCB7Cj4gPiArCQkuZHJtX2ZtdCA9IERS TV9GT1JNQVRfQVJHQjQ0NDQsCj4gPiArCQkuZGVwdGggPSAwLAo+ID4gKwkJLm51bV9wbGFuZXMg PSAxLAo+ID4gKwkJLmNwcCA9IHsgMiwgMCwgMCB9LAo+ID4gKwkJLmhzdWIgPSAxLAo+ID4gKwkJ LnZzdWIgPSAxLAo+ID4gKwkJLmhhc19hbHBoYSA9IHRydWUsCj4gPiArCX0sIHsKPiA+ICsJCS5k cm1fZm10ID0gRFJNX0ZPUk1BVF9BQkdSNDQ0NCwKPiA+ICsJCS5kZXB0aCA9IDAsCj4gPiArCQku bnVtX3BsYW5lcyA9IDEsCj4gPiArCQkuY3BwID0geyAyLCAwLCAwIH0sCj4gPiArCQkuaHN1YiA9 IDEsCj4gPiArCQkudnN1YiA9IDEsCj4gPiArCQkuaGFzX2FscGhhID0gdHJ1ZSwKPiA+ICsJfSwg ewo+ID4gKwkJLmRybV9mbXQgPSBEUk1fRk9STUFUX1JHQkE0NDQ0LAo+ID4gKwkJLmRlcHRoID0g MCwKPiA+ICsJCS5udW1fcGxhbmVzID0gMSwKPiA+ICsJCS5jcHAgPSB7IDIsIDAsIDAgfSwKPiA+ ICsJCS5oc3ViID0gMSwKPiA+ICsJCS52c3ViID0gMSwKPiA+ICsJCS5oYXNfYWxwaGEgPSB0cnVl LAo+ID4gKwl9LCB7Cj4gPiArCQkuZHJtX2ZtdCA9IERSTV9GT1JNQVRfQkdSQTQ0NDQsCj4gPiAr CQkuZGVwdGggPSAwLAo+ID4gKwkJLm51bV9wbGFuZXMgPSAxLAo+ID4gKwkJLmNwcCA9IHsgMiwg MCwgMCB9LAo+ID4gKwkJLmhzdWIgPSAxLAo+ID4gKwkJLnZzdWIgPSAxLAo+ID4gKwkJLmhhc19h bHBoYSA9IHRydWUsCj4gPiArCX0sIHsKPiA+ICsJCS5kcm1fZm10ID0gRFJNX0ZPUk1BVF9YUkdC MTU1NSwKPiA+ICsJCS5kZXB0aCA9IDE1LAo+ID4gKwkJLm51bV9wbGFuZXMgPSAxLAo+ID4gKwkJ LmNwcCA9IHsgMiwgMCwgMCB9LAo+ID4gKwkJLmhzdWIgPSAxLAo+ID4gKwkJLnZzdWIgPSAxLAo+ ID4gKwl9LCB7Cj4gPiArCQkuZHJtX2ZtdCA9IERSTV9GT1JNQVRfWEJHUjE1NTUsCj4gPiArCQku ZGVwdGggPSAxNSwKPiA+ICsJCS5udW1fcGxhbmVzID0gMSwKPiA+ICsJCS5jcHAgPSB7IDIsIDAs IDAgfSwKPiA+ICsJCS5oc3ViID0gMSwKPiA+ICsJCS52c3ViID0gMSwKPiA+ICsJfSwgewo+ID4g KwkJLmRybV9mbXQgPSBEUk1fRk9STUFUX1JHQlg1NTUxLAo+ID4gKwkJLmRlcHRoID0gMTUsCj4g PiArCQkubnVtX3BsYW5lcyA9IDEsCj4gPiArCQkuY3BwID0geyAyLCAwLCAwIH0sCj4gPiArCQku aHN1YiA9IDEsCj4gPiArCQkudnN1YiA9IDEsCj4gPiArCX0sIHsKPiA+ICsJCS5kcm1fZm10ID0g RFJNX0ZPUk1BVF9CR1JYNTU1MSwKPiA+ICsJCS5kZXB0aCA9IDE1LAo+ID4gKwkJLm51bV9wbGFu ZXMgPSAxLAo+ID4gKwkJLmNwcCA9IHsgMiwgMCwgMCB9LAo+ID4gKwkJLmhzdWIgPSAxLAo+ID4g KwkJLnZzdWIgPSAxLAo+ID4gKwl9LCB7Cj4gPiArCQkuZHJtX2ZtdCA9IERSTV9GT1JNQVRfQVJH QjE1NTUsCj4gPiArCQkuZGVwdGggPSAxNSwKPiA+ICsJCS5udW1fcGxhbmVzID0gMSwKPiA+ICsJ CS5jcHAgPSB7IDIsIDAsIDAgfSwKPiA+ICsJCS5oc3ViID0gMSwKPiA+ICsJCS52c3ViID0gMSwK PiA+ICsJCS5oYXNfYWxwaGEgPSB0cnVlLAo+ID4gKwl9LCB7Cj4gPiArCQkuZHJtX2ZtdCA9IERS TV9GT1JNQVRfQUJHUjE1NTUsCj4gPiArCQkuZGVwdGggPSAxNSwKPiA+ICsJCS5udW1fcGxhbmVz ID0gMSwKPiA+ICsJCS5jcHAgPSB7IDIsIDAsIDAgfSwKPiA+ICsJCS5oc3ViID0gMSwKPiA+ICsJ CS52c3ViID0gMSwKPiA+ICsJCS5oYXNfYWxwaGEgPSB0cnVlLAo+ID4gKwl9LCB7Cj4gPiArCQku ZHJtX2ZtdCA9IERSTV9GT1JNQVRfUkdCQTU1NTEsCj4gPiArCQkuZGVwdGggPSAxNSwKPiA+ICsJ CS5udW1fcGxhbmVzID0gMSwKPiA+ICsJCS5jcHAgPSB7IDIsIDAsIDAgfSwKPiA+ICsJCS5oc3Vi ID0gMSwKPiA+ICsJCS52c3ViID0gMSwKPiA+ICsJCS5oYXNfYWxwaGEgPSB0cnVlLAo+ID4gKwl9 LCB7Cj4gPiArCQkuZHJtX2ZtdCA9IERSTV9GT1JNQVRfQkdSQTU1NTEsCj4gPiArCQkuZGVwdGgg PSAxNSwKPiA+ICsJCS5udW1fcGxhbmVzID0gMSwKPiA+ICsJCS5jcHAgPSB7IDIsIDAsIDAgfSwK PiA+ICsJCS5oc3ViID0gMSwKPiA+ICsJCS52c3ViID0gMSwKPiA+ICsJCS5oYXNfYWxwaGEgPSB0 cnVlLAo+ID4gKwl9LCB7Cj4gPiArCQkuZHJtX2ZtdCA9IERSTV9GT1JNQVRfUkdCNTY1LAo+ID4g KwkJLmRlcHRoID0gMTYsCj4gPiArCQkubnVtX3BsYW5lcyA9IDEsCj4gPiArCQkuY3BwID0geyAy LCAwLCAwIH0sCj4gPiArCQkuaHN1YiA9IDEsCj4gPiArCQkudnN1YiA9IDEsCj4gPiArCX0sIHsK PiA+ICsJCS5kcm1fZm10ID0gRFJNX0ZPUk1BVF9CR1I1NjUsCj4gPiArCQkuZGVwdGggPSAxNiwK PiA+ICsJCS5udW1fcGxhbmVzID0gMSwKPiA+ICsJCS5jcHAgPSB7IDIsIDAsIDAgfSwKPiA+ICsJ CS5oc3ViID0gMSwKPiA+ICsJCS52c3ViID0gMSwKPiA+ICsJfSwgewo+ID4gKwkJLmRybV9mbXQg PSBEUk1fRk9STUFUX1JHQjg4OCwKPiA+ICsJCS5kZXB0aCA9IDI0LAo+ID4gKwkJLm51bV9wbGFu ZXMgPSAxLAo+ID4gKwkJLmNwcCA9IHsgMywgMCwgMCB9LAo+ID4gKwkJLmhzdWIgPSAxLAo+ID4g KwkJLnZzdWIgPSAxLAo+ID4gKwl9LCB7Cj4gPiArCQkuZHJtX2ZtdCA9IERSTV9GT1JNQVRfQkdS ODg4LAo+ID4gKwkJLmRlcHRoID0gMjQsCj4gPiArCQkubnVtX3BsYW5lcyA9IDEsCj4gPiArCQku Y3BwID0geyAzLCAwLCAwIH0sCj4gPiArCQkuaHN1YiA9IDEsCj4gPiArCQkudnN1YiA9IDEsCj4g PiArCX0sIHsKPiA+ICsJCS5kcm1fZm10ID0gRFJNX0ZPUk1BVF9YUkdCODg4OCwKPiA+ICsJCS5k ZXB0aCA9IDI0LAo+ID4gKwkJLm51bV9wbGFuZXMgPSAxLAo+ID4gKwkJLmNwcCA9IHsgNCwgMCwg MCB9LAo+ID4gKwkJLmhzdWIgPSAxLAo+ID4gKwkJLnZzdWIgPSAxLAo+ID4gKwl9LCB7Cj4gPiAr CQkuZHJtX2ZtdCA9IERSTV9GT1JNQVRfWEJHUjg4ODgsCj4gPiArCQkuZGVwdGggPSAyNCwKPiA+ ICsJCS5udW1fcGxhbmVzID0gMSwKPiA+ICsJCS5jcHAgPSB7IDQsIDAsIDAgfSwKPiA+ICsJCS5o c3ViID0gMSwKPiA+ICsJCS52c3ViID0gMSwKPiA+ICsJfSwgewo+ID4gKwkJLmRybV9mbXQgPSBE Uk1fRk9STUFUX1JHQlg4ODg4LAo+ID4gKwkJLmRlcHRoID0gMjQsCj4gPiArCQkubnVtX3BsYW5l cyA9IDEsCj4gPiArCQkuY3BwID0geyA0LCAwLCAwIH0sCj4gPiArCQkuaHN1YiA9IDEsCj4gPiAr CQkudnN1YiA9IDEsCj4gPiArCX0sIHsKPiA+ICsJCS5kcm1fZm10ID0gRFJNX0ZPUk1BVF9CR1JY ODg4OCwKPiA+ICsJCS5kZXB0aCA9IDI0LAo+ID4gKwkJLm51bV9wbGFuZXMgPSAxLAo+ID4gKwkJ LmNwcCA9IHsgNCwgMCwgMCB9LAo+ID4gKwkJLmhzdWIgPSAxLAo+ID4gKwkJLnZzdWIgPSAxLAo+ ID4gKwl9LCB7Cj4gPiArCQkuZHJtX2ZtdCA9IERSTV9GT1JNQVRfUkdCNTY1X0E4LAo+ID4gKwkJ LmRlcHRoID0gMjQsCj4gPiArCQkubnVtX3BsYW5lcyA9IDIsCj4gPiArCQkuY3BwID0geyAyLCAx LCAwIH0sCj4gPiArCQkuaHN1YiA9IDEsCj4gPiArCQkudnN1YiA9IDEsCj4gPiArCQkuaGFzX2Fs cGhhID0gdHJ1ZSwKPiA+ICsJfSwgewo+ID4gKwkJLmRybV9mbXQgPSBEUk1fRk9STUFUX0JHUjU2 NV9BOCwKPiA+ICsJCS5kZXB0aCA9IDI0LAo+ID4gKwkJLm51bV9wbGFuZXMgPSAyLAo+ID4gKwkJ LmNwcCA9IHsgMiwgMSwgMCB9LAo+ID4gKwkJLmhzdWIgPSAxLAo+ID4gKwkJLnZzdWIgPSAxLAo+ ID4gKwkJLmhhc19hbHBoYSA9IHRydWUsCj4gPiArCX0sIHsKPiA+ICsJCS5kcm1fZm10ID0gRFJN X0ZPUk1BVF9YUkdCMjEwMTAxMCwKPiA+ICsJCS5kZXB0aCA9IDMwLAo+ID4gKwkJLm51bV9wbGFu ZXMgPSAxLAo+ID4gKwkJLmNwcCA9IHsgNCwgMCwgMCB9LAo+ID4gKwkJLmhzdWIgPSAxLAo+ID4g KwkJLnZzdWIgPSAxLAo+ID4gKwl9LCB7Cj4gPiArCQkuZHJtX2ZtdCA9IERSTV9GT1JNQVRfWEJH UjIxMDEwMTAsCj4gPiArCQkuZGVwdGggPSAzMCwKPiA+ICsJCS5udW1fcGxhbmVzID0gMSwKPiA+ ICsJCS5jcHAgPSB7IDQsIDAsIDAgfSwKPiA+ICsJCS5oc3ViID0gMSwKPiA+ICsJCS52c3ViID0g MSwKPiA+ICsJfSwgewo+ID4gKwkJLmRybV9mbXQgPSBEUk1fRk9STUFUX1JHQlgxMDEwMTAyLAo+ ID4gKwkJLmRlcHRoID0gMzAsCj4gPiArCQkubnVtX3BsYW5lcyA9IDEsCj4gPiArCQkuY3BwID0g eyA0LCAwLCAwIH0sCj4gPiArCQkuaHN1YiA9IDEsCj4gPiArCQkudnN1YiA9IDEsCj4gPiArCX0s IHsKPiA+ICsJCS5kcm1fZm10ID0gRFJNX0ZPUk1BVF9CR1JYMTAxMDEwMiwKPiA+ICsJCS5kZXB0 aCA9IDMwLAo+ID4gKwkJLm51bV9wbGFuZXMgPSAxLAo+ID4gKwkJLmNwcCA9IHsgNCwgMCwgMCB9 LAo+ID4gKwkJLmhzdWIgPSAxLAo+ID4gKwkJLnZzdWIgPSAxLAo+ID4gKwl9LCB7Cj4gPiArCQku ZHJtX2ZtdCA9IERSTV9GT1JNQVRfQVJHQjIxMDEwMTAsCj4gPiArCQkuZGVwdGggPSAzMCwKPiA+ ICsJCS5udW1fcGxhbmVzID0gMSwKPiA+ICsJCS5jcHAgPSB7IDQsIDAsIDAgfSwKPiA+ICsJCS5o c3ViID0gMSwKPiA+ICsJCS52c3ViID0gMSwKPiA+ICsJCS5oYXNfYWxwaGEgPSB0cnVlLAo+ID4g Kwl9LCB7Cj4gPiArCQkuZHJtX2ZtdCA9IERSTV9GT1JNQVRfQUJHUjIxMDEwMTAsCj4gPiArCQku ZGVwdGggPSAzMCwKPiA+ICsJCS5udW1fcGxhbmVzID0gMSwKPiA+ICsJCS5jcHAgPSB7IDQsIDAs IDAgfSwKPiA+ICsJCS5oc3ViID0gMSwKPiA+ICsJCS52c3ViID0gMSwKPiA+ICsJCS5oYXNfYWxw aGEgPSB0cnVlLAo+ID4gKwl9LCB7Cj4gPiArCQkuZHJtX2ZtdCA9IERSTV9GT1JNQVRfUkdCQTEw MTAxMDIsCj4gPiArCQkuZGVwdGggPSAzMCwKPiA+ICsJCS5udW1fcGxhbmVzID0gMSwKPiA+ICsJ CS5jcHAgPSB7IDQsIDAsIDAgfSwKPiA+ICsJCS5oc3ViID0gMSwKPiA+ICsJCS52c3ViID0gMSwK PiA+ICsJCS5oYXNfYWxwaGEgPSB0cnVlLAo+ID4gKwl9LCB7Cj4gPiArCQkuZHJtX2ZtdCA9IERS TV9GT1JNQVRfQkdSQTEwMTAxMDIsCj4gPiArCQkuZGVwdGggPSAzMCwKPiA+ICsJCS5udW1fcGxh bmVzID0gMSwKPiA+ICsJCS5jcHAgPSB7IDQsIDAsIDAgfSwKPiA+ICsJCS5oc3ViID0gMSwKPiA+ ICsJCS52c3ViID0gMSwKPiA+ICsJCS5oYXNfYWxwaGEgPSB0cnVlLAo+ID4gKwl9LCB7Cj4gPiAr CQkuZHJtX2ZtdCA9IERSTV9GT1JNQVRfQVJHQjg4ODgsCj4gPiArCQkuZGVwdGggPSAzMiwKPiA+ ICsJCS5udW1fcGxhbmVzID0gMSwKPiA+ICsJCS5jcHAgPSB7IDQsIDAsIDAgfSwKPiA+ICsJCS5o c3ViID0gMSwKPiA+ICsJCS52c3ViID0gMSwKPiA+ICsJCS5oYXNfYWxwaGEgPSB0cnVlLAo+ID4g Kwl9LCB7Cj4gPiArCQkuZHJtX2ZtdCA9IERSTV9GT1JNQVRfQUJHUjg4ODgsCj4gPiArCQkuZGVw dGggPSAzMiwKPiA+ICsJCS5udW1fcGxhbmVzID0gMSwKPiA+ICsJCS5jcHAgPSB7IDQsIDAsIDAg fSwKPiA+ICsJCS5oc3ViID0gMSwKPiA+ICsJCS52c3ViID0gMSwKPiA+ICsJCS5oYXNfYWxwaGEg PSB0cnVlLAo+ID4gKwl9LCB7Cj4gPiArCQkuZHJtX2ZtdCA9IERSTV9GT1JNQVRfUkdCQTg4ODgs Cj4gPiArCQkuZGVwdGggPSAzMiwKPiA+ICsJCS5udW1fcGxhbmVzID0gMSwKPiA+ICsJCS5jcHAg PSB7IDQsIDAsIDAgfSwKPiA+ICsJCS5oc3ViID0gMSwKPiA+ICsJCS52c3ViID0gMSwKPiA+ICsJ CS5oYXNfYWxwaGEgPSB0cnVlLAo+ID4gKwl9LCB7Cj4gPiArCQkuZHJtX2ZtdCA9IERSTV9GT1JN QVRfQkdSQTg4ODgsCj4gPiArCQkuZGVwdGggPSAzMiwKPiA+ICsJCS5udW1fcGxhbmVzID0gMSwK PiA+ICsJCS5jcHAgPSB7IDQsIDAsIDAgfSwKPiA+ICsJCS5oc3ViID0gMSwKPiA+ICsJCS52c3Vi ID0gMSwKPiA+ICsJCS5oYXNfYWxwaGEgPSB0cnVlLAo+ID4gKwl9LCB7Cj4gPiArCQkuZHJtX2Zt dCA9IERSTV9GT1JNQVRfUkdCODg4X0E4LAo+ID4gKwkJLmRlcHRoID0gMzIsCj4gPiArCQkubnVt X3BsYW5lcyA9IDIsCj4gPiArCQkuY3BwID0geyAzLCAxLCAwIH0sCj4gPiArCQkuaHN1YiA9IDEs Cj4gPiArCQkudnN1YiA9IDEsCj4gPiArCQkuaGFzX2FscGhhID0gdHJ1ZSwKPiA+ICsJfSwgewo+ ID4gKwkJLmRybV9mbXQgPSBEUk1fRk9STUFUX0JHUjg4OF9BOCwKPiA+ICsJCS5kZXB0aCA9IDMy LAo+ID4gKwkJLm51bV9wbGFuZXMgPSAyLAo+ID4gKwkJLmNwcCA9IHsgMywgMSwgMCB9LAo+ID4g KwkJLmhzdWIgPSAxLAo+ID4gKwkJLnZzdWIgPSAxLAo+ID4gKwkJLmhhc19hbHBoYSA9IHRydWUs Cj4gPiArCX0sIHsKPiA+ICsJCS5kcm1fZm10ID0gRFJNX0ZPUk1BVF9YUkdCODg4OF9BOCwKPiA+ ICsJCS5kZXB0aCA9IDMyLAo+ID4gKwkJLm51bV9wbGFuZXMgPSAyLAo+ID4gKwkJLmNwcCA9IHsg NCwgMSwgMCB9LAo+ID4gKwkJLmhzdWIgPSAxLAo+ID4gKwkJLnZzdWIgPSAxLAo+ID4gKwkJLmhh c19hbHBoYSA9IHRydWUsCj4gPiArCX0sIHsKPiA+ICsJCS5kcm1fZm10ID0gRFJNX0ZPUk1BVF9Y QkdSODg4OF9BOCwKPiA+ICsJCS5kZXB0aCA9IDMyLAo+ID4gKwkJLm51bV9wbGFuZXMgPSAyLAo+ ID4gKwkJLmNwcCA9IHsgNCwgMSwgMCB9LAo+ID4gKwkJLmhzdWIgPSAxLAo+ID4gKwkJLnZzdWIg PSAxLAo+ID4gKwkJLmhhc19hbHBoYSA9IHRydWUsCj4gPiArCX0sIHsKPiA+ICsJCS5kcm1fZm10 ID0gRFJNX0ZPUk1BVF9SR0JYODg4OF9BOCwKPiA+ICsJCS5kZXB0aCA9IDMyLAo+ID4gKwkJLm51 bV9wbGFuZXMgPSAyLAo+ID4gKwkJLmNwcCA9IHsgNCwgMSwgMCB9LAo+ID4gKwkJLmhzdWIgPSAx LAo+ID4gKwkJLnZzdWIgPSAxLAo+ID4gKwkJLmhhc19hbHBoYSA9IHRydWUsCj4gPiArCX0sIHsK PiA+ICsJCS5kcm1fZm10ID0gRFJNX0ZPUk1BVF9CR1JYODg4OF9BOCwKPiA+ICsJCS5kZXB0aCA9 IDMyLAo+ID4gKwkJLm51bV9wbGFuZXMgPSAyLAo+ID4gKwkJLmNwcCA9IHsgNCwgMSwgMCB9LAo+ ID4gKwkJLmhzdWIgPSAxLAo+ID4gKwkJLnZzdWIgPSAxLAo+ID4gKwkJLmhhc19hbHBoYSA9IHRy dWUsCj4gPiArCX0sIHsKPiA+ICsJCS5kcm1fZm10ID0gRFJNX0ZPUk1BVF9ZVVY0MTAsCj4gPiAr CQkuZGVwdGggPSAwLAo+ID4gKwkJLm51bV9wbGFuZXMgPSAzLAo+ID4gKwkJLmNwcCA9IHsgMSwg MSwgMSB9LAo+ID4gKwkJLmhzdWIgPSA0LAo+ID4gKwkJLnZzdWIgPSA0LAo+ID4gKwkJLmlzX3l1 diA9IHRydWUsCj4gPiArCX0sIHsKPiA+ICsJCS5kcm1fZm10ID0gRFJNX0ZPUk1BVF9ZVlU0MTAs Cj4gPiArCQkuZGVwdGggPSAwLAo+ID4gKwkJLm51bV9wbGFuZXMgPSAzLAo+ID4gKwkJLmNwcCA9 IHsgMSwgMSwgMSB9LAo+ID4gKwkJLmhzdWIgPSA0LAo+ID4gKwkJLnZzdWIgPSA0LAo+ID4gKwkJ LmlzX3l1diA9IHRydWUsCj4gPiArCX0sIHsKPiA+ICsJCS5kcm1fZm10ID0gRFJNX0ZPUk1BVF9Z VVY0MTEsCj4gPiArCQkuZGVwdGggPSAwLAo+ID4gKwkJLm51bV9wbGFuZXMgPSAzLAo+ID4gKwkJ LmNwcCA9IHsgMSwgMSwgMSB9LAo+ID4gKwkJLmhzdWIgPSA0LAo+ID4gKwkJLnZzdWIgPSAxLAo+ ID4gKwkJLmlzX3l1diA9IHRydWUsCj4gPiArCX0sIHsKPiA+ICsJCS5kcm1fZm10ID0gRFJNX0ZP Uk1BVF9ZVlU0MTEsCj4gPiArCQkuZGVwdGggPSAwLAo+ID4gKwkJLm51bV9wbGFuZXMgPSAzLAo+ ID4gKwkJLmNwcCA9IHsgMSwgMSwgMSB9LAo+ID4gKwkJLmhzdWIgPSA0LAo+ID4gKwkJLnZzdWIg PSAxLAo+ID4gKwkJLmlzX3l1diA9IHRydWUsCj4gPiArCX0sIHsKPiA+ICsJCS5kcm1fZm10ID0g RFJNX0ZPUk1BVF9ZVVY0MjAsCj4gPiArCQkuZGVwdGggPSAwLAo+ID4gKwkJLm51bV9wbGFuZXMg PSAzLAo+ID4gKwkJLmNwcCA9IHsgMSwgMSwgMSB9LAo+ID4gKwkJLmhzdWIgPSAyLAo+ID4gKwkJ LnZzdWIgPSAyLAo+ID4gKwkJLmlzX3l1diA9IHRydWUsCj4gPiArCX0sIHsKPiA+ICsJCS5kcm1f Zm10ID0gRFJNX0ZPUk1BVF9ZVlU0MjAsCj4gPiArCQkuZGVwdGggPSAwLAo+ID4gKwkJLm51bV9w bGFuZXMgPSAzLAo+ID4gKwkJLmNwcCA9IHsgMSwgMSwgMSB9LAo+ID4gKwkJLmhzdWIgPSAyLAo+ ID4gKwkJLnZzdWIgPSAyLAo+ID4gKwkJLmlzX3l1diA9IHRydWUsCj4gPiArCX0sIHsKPiA+ICsJ CS5kcm1fZm10ID0gRFJNX0ZPUk1BVF9ZVVY0MjIsCj4gPiArCQkuZGVwdGggPSAwLAo+ID4gKwkJ Lm51bV9wbGFuZXMgPSAzLAo+ID4gKwkJLmNwcCA9IHsgMSwgMSwgMSB9LAo+ID4gKwkJLmhzdWIg PSAyLAo+ID4gKwkJLnZzdWIgPSAxLAo+ID4gKwkJLmlzX3l1diA9IHRydWUsCj4gPiArCX0sIHsK PiA+ICsJCS5kcm1fZm10ID0gRFJNX0ZPUk1BVF9ZVlU0MjIsCj4gPiArCQkuZGVwdGggPSAwLAo+ ID4gKwkJLm51bV9wbGFuZXMgPSAzLAo+ID4gKwkJLmNwcCA9IHsgMSwgMSwgMSB9LAo+ID4gKwkJ LmhzdWIgPSAyLAo+ID4gKwkJLnZzdWIgPSAxLAo+ID4gKwkJLmlzX3l1diA9IHRydWUsCj4gPiAr CX0sIHsKPiA+ICsJCS5kcm1fZm10ID0gRFJNX0ZPUk1BVF9ZVVY0NDQsCj4gPiArCQkuZGVwdGgg PSAwLAo+ID4gKwkJLm51bV9wbGFuZXMgPSAzLAo+ID4gKwkJLmNwcCA9IHsgMSwgMSwgMSB9LAo+ ID4gKwkJLmhzdWIgPSAxLAo+ID4gKwkJLnZzdWIgPSAxLAo+ID4gKwkJLmlzX3l1diA9IHRydWUs Cj4gPiArCX0sIHsKPiA+ICsJCS5kcm1fZm10ID0gRFJNX0ZPUk1BVF9ZVlU0NDQsCj4gPiArCQku ZGVwdGggPSAwLAo+ID4gKwkJLm51bV9wbGFuZXMgPSAzLAo+ID4gKwkJLmNwcCA9IHsgMSwgMSwg MSB9LAo+ID4gKwkJLmhzdWIgPSAxLAo+ID4gKwkJLnZzdWIgPSAxLAo+ID4gKwkJLmlzX3l1diA9 IHRydWUsCj4gPiArCX0sIHsKPiA+ICsJCS5kcm1fZm10ID0gRFJNX0ZPUk1BVF9OVjEyLAo+ID4g KwkJLmRlcHRoID0gMCwKPiA+ICsJCS5udW1fcGxhbmVzID0gMiwKPiA+ICsJCS5jcHAgPSB7IDEs IDIsIDAgfSwKPiA+ICsJCS5oc3ViID0gMiwKPiA+ICsJCS52c3ViID0gMiwKPiA+ICsJCS5pc195 dXYgPSB0cnVlLAo+ID4gKwl9LCB7Cj4gPiArCQkuZHJtX2ZtdCA9IERSTV9GT1JNQVRfTlYyMSwK PiA+ICsJCS5kZXB0aCA9IDAsCj4gPiArCQkubnVtX3BsYW5lcyA9IDIsCj4gPiArCQkuY3BwID0g eyAxLCAyLCAwIH0sCj4gPiArCQkuaHN1YiA9IDIsCj4gPiArCQkudnN1YiA9IDIsCj4gPiArCQku aXNfeXV2ID0gdHJ1ZSwKPiA+ICsJfSwgewo+ID4gKwkJLmRybV9mbXQgPSBEUk1fRk9STUFUX05W MTYsCj4gPiArCQkuZGVwdGggPSAwLAo+ID4gKwkJLm51bV9wbGFuZXMgPSAyLAo+ID4gKwkJLmNw cCA9IHsgMSwgMiwgMCB9LAo+ID4gKwkJLmhzdWIgPSAyLAo+ID4gKwkJLnZzdWIgPSAxLAo+ID4g KwkJLmlzX3l1diA9IHRydWUsCj4gPiArCX0sIHsKPiA+ICsJCS5kcm1fZm10ID0gRFJNX0ZPUk1B VF9OVjYxLAo+ID4gKwkJLmRlcHRoID0gMCwKPiA+ICsJCS5udW1fcGxhbmVzID0gMiwKPiA+ICsJ CS5jcHAgPSB7IDEsIDIsIDAgfSwKPiA+ICsJCS5oc3ViID0gMiwKPiA+ICsJCS52c3ViID0gMSwK PiA+ICsJCS5pc195dXYgPSB0cnVlLAo+ID4gKwl9LCB7Cj4gPiArCQkuZHJtX2ZtdCA9IERSTV9G T1JNQVRfTlYyNCwKPiA+ICsJCS5kZXB0aCA9IDAsCj4gPiArCQkubnVtX3BsYW5lcyA9IDIsCj4g PiArCQkuY3BwID0geyAxLCAyLCAwIH0sCj4gPiArCQkuaHN1YiA9IDEsCj4gPiArCQkudnN1YiA9 IDEsCj4gPiArCQkuaXNfeXV2ID0gdHJ1ZSwKPiA+ICsJfSwgewo+ID4gKwkJLmRybV9mbXQgPSBE Uk1fRk9STUFUX05WNDIsCj4gPiArCQkuZGVwdGggPSAwLAo+ID4gKwkJLm51bV9wbGFuZXMgPSAy LAo+ID4gKwkJLmNwcCA9IHsgMSwgMiwgMCB9LAo+ID4gKwkJLmhzdWIgPSAxLAo+ID4gKwkJLnZz dWIgPSAxLAo+ID4gKwkJLmlzX3l1diA9IHRydWUsCj4gPiArCX0sIHsKPiA+ICsJCS5kcm1fZm10 ID0gRFJNX0ZPUk1BVF9ZVVlWLAo+ID4gKwkJLmRlcHRoID0gMCwKPiA+ICsJCS5udW1fcGxhbmVz ID0gMSwKPiA+ICsJCS5jcHAgPSB7IDIsIDAsIDAgfSwKPiA+ICsJCS5oc3ViID0gMiwKPiA+ICsJ CS52c3ViID0gMSwKPiA+ICsJCS5pc195dXYgPSB0cnVlLAo+ID4gKwl9LCB7Cj4gPiArCQkuZHJt X2ZtdCA9IERSTV9GT1JNQVRfWVZZVSwKPiA+ICsJCS5kZXB0aCA9IDAsCj4gPiArCQkubnVtX3Bs YW5lcyA9IDEsCj4gPiArCQkuY3BwID0geyAyLCAwLCAwIH0sCj4gPiArCQkuaHN1YiA9IDIsCj4g PiArCQkudnN1YiA9IDEsCj4gPiArCQkuaXNfeXV2ID0gdHJ1ZSwKPiA+ICsJfSwgewo+ID4gKwkJ LmRybV9mbXQgPSBEUk1fRk9STUFUX1VZVlksCj4gPiArCQkuZGVwdGggPSAwLAo+ID4gKwkJLm51 bV9wbGFuZXMgPSAxLAo+ID4gKwkJLmNwcCA9IHsgMiwgMCwgMCB9LAo+ID4gKwkJLmhzdWIgPSAy LAo+ID4gKwkJLnZzdWIgPSAxLAo+ID4gKwkJLmlzX3l1diA9IHRydWUsCj4gPiArCX0sIHsKPiA+ ICsJCS5kcm1fZm10ID0gRFJNX0ZPUk1BVF9WWVVZLAo+ID4gKwkJLmRlcHRoID0gMCwKPiA+ICsJ CS5udW1fcGxhbmVzID0gMSwKPiA+ICsJCS5jcHAgPSB7IDIsIDAsIDAgfSwKPiA+ICsJCS5oc3Vi ID0gMiwKPiA+ICsJCS52c3ViID0gMSwKPiA+ICsJCS5pc195dXYgPSB0cnVlLAo+ID4gKwl9LCB7 Cj4gPiArCQkuZHJtX2ZtdCA9IERSTV9GT1JNQVRfWFlVVjg4ODgsCj4gPiArCQkuZGVwdGggPSAw LAo+ID4gKwkJLm51bV9wbGFuZXMgPSAxLAo+ID4gKwkJLmNwcCA9IHsgNCwgMCwgMCB9LAo+ID4g KwkJLmhzdWIgPSAxLAo+ID4gKwkJLnZzdWIgPSAxLAo+ID4gKwkJLmlzX3l1diA9IHRydWUsCj4g PiArCX0sIHsKPiA+ICsJCS5kcm1fZm10ID0gRFJNX0ZPUk1BVF9BWVVWLAo+ID4gKwkJLmRlcHRo ID0gMCwKPiA+ICsJCS5udW1fcGxhbmVzID0gMSwKPiA+ICsJCS5jcHAgPSB7IDQsIDAsIDAgfSwK PiA+ICsJCS5oc3ViID0gMSwKPiA+ICsJCS52c3ViID0gMSwKPiA+ICsJCS5oYXNfYWxwaGEgPSB0 cnVlLAo+ID4gKwkJLmlzX3l1diA9IHRydWUsCj4gPiArCX0sIHsKPiA+ICsJCS5kcm1fZm10ID0g RFJNX0ZPUk1BVF9ZMEwwLAo+ID4gKwkJLmRlcHRoID0gMCwKPiA+ICsJCS5udW1fcGxhbmVzID0g MSwKPiA+ICsJCS5jaGFyX3Blcl9ibG9jayA9IHsgOCwgMCwgMCB9LAo+ID4gKwkJLmJsb2NrX3cg PSB7IDIsIDAsIDAgfSwKPiA+ICsJCS5ibG9ja19oID0geyAyLCAwLCAwIH0sCj4gPiArCQkuaHN1 YiA9IDIsCj4gPiArCQkudnN1YiA9IDIsCj4gPiArCQkuaGFzX2FscGhhID0gdHJ1ZSwKPiA+ICsJ CS5pc195dXYgPSB0cnVlLAo+ID4gKwl9LCB7Cj4gPiArCQkuZHJtX2ZtdCA9IERSTV9GT1JNQVRf WDBMMCwKPiA+ICsJCS5kZXB0aCA9IDAsCj4gPiArCQkubnVtX3BsYW5lcyA9IDEsCj4gPiArCQku Y2hhcl9wZXJfYmxvY2sgPSB7IDgsIDAsIDAgfSwKPiA+ICsJCS5ibG9ja193ID0geyAyLCAwLCAw IH0sCj4gPiArCQkuYmxvY2tfaCA9IHsgMiwgMCwgMCB9LAo+ID4gKwkJLmhzdWIgPSAyLAo+ID4g KwkJLnZzdWIgPSAyLAo+ID4gKwkJLmlzX3l1diA9IHRydWUsCj4gPiArCX0sIHsKPiA+ICsJCS5k cm1fZm10ID0gRFJNX0ZPUk1BVF9ZMEwyLAo+ID4gKwkJLmRlcHRoID0gMCwKPiA+ICsJCS5udW1f cGxhbmVzID0gMSwKPiA+ICsJCS5jaGFyX3Blcl9ibG9jayA9IHsgOCwgMCwgMCB9LAo+ID4gKwkJ LmJsb2NrX3cgPSB7IDIsIDAsIDAgfSwKPiA+ICsJCS5ibG9ja19oID0geyAyLCAwLCAwIH0sCj4g PiArCQkuaHN1YiA9IDIsCj4gPiArCQkudnN1YiA9IDIsCj4gPiArCQkuaGFzX2FscGhhID0gdHJ1 ZSwKPiA+ICsJCS5pc195dXYgPSB0cnVlLAo+ID4gKwl9LCB7Cj4gPiArCQkuZHJtX2ZtdCA9IERS TV9GT1JNQVRfWDBMMiwKPiA+ICsJCS5kZXB0aCA9IDAsCj4gPiArCQkubnVtX3BsYW5lcyA9IDEs Cj4gPiArCQkuY2hhcl9wZXJfYmxvY2sgPSB7IDgsIDAsIDAgfSwKPiA+ICsJCS5ibG9ja193ID0g eyAyLCAwLCAwIH0sCj4gPiArCQkuYmxvY2tfaCA9IHsgMiwgMCwgMCB9LAo+ID4gKwkJLmhzdWIg PSAyLAo+ID4gKwkJLnZzdWIgPSAyLAo+ID4gKwkJLmlzX3l1diA9IHRydWUsCj4gPiArCX0sCj4g PiArfTsKPiA+ICsKPiA+ICsjZGVmaW5lIF9faW1hZ2VfZm9ybWF0X2xvb2t1cChfZmllbGQsIF9m bXQpCQkJXAo+ID4gKwkoewkJCQkJCQlcCj4gPiArCQljb25zdCBzdHJ1Y3QgaW1hZ2VfZm9ybWF0 X2luZm8gKmZvcm1hdCA9IE5VTEw7CVwKPiA+ICsJCXVuc2lnbmVkIGk7CQkJCQlcCj4gPiArCQkJ CQkJCQlcCj4gPiArCQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShmb3JtYXRzKTsgaSsrKQlc Cj4gPiArCQkJaWYgKGZvcm1hdHNbaV0uX2ZpZWxkID09IF9mbXQpCQlcCj4gPiArCQkJCWZvcm1h dCA9ICZmb3JtYXRzW2ldOwkJXAo+ID4gKwkJCQkJCQkJXAo+ID4gKwkJZm9ybWF0OwkJCQkJCVwK PiA+ICsJfSkKPiA+ICsKPiA+ICsvKioKPiA+ICsgKiBfX2ltYWdlX2Zvcm1hdF9kcm1fbG9va3Vw IC0gcXVlcnkgaW5mb3JtYXRpb24gZm9yIGEgZ2l2ZW4gZm9ybWF0Cj4gPiArICogQGRybTogRFJN IGZvdXJjYyBwaXhlbCBmb3JtYXQgKERSTV9GT1JNQVRfKikKPiA+ICsgKgo+ID4gKyAqIFRoZSBj YWxsZXIgc2hvdWxkIG9ubHkgcGFzcyBhIHN1cHBvcnRlZCBwaXhlbCBmb3JtYXQgdG8gdGhpcyBm dW5jdGlvbi4KPiA+ICsgKgo+ID4gKyAqIFJldHVybnM6Cj4gPiArICogVGhlIGluc3RhbmNlIG9m IHN0cnVjdCBpbWFnZV9mb3JtYXRfaW5mbyB0aGF0IGRlc2NyaWJlcyB0aGUgcGl4ZWwgZm9ybWF0 LCBvcgo+ID4gKyAqIE5VTEwgaWYgdGhlIGZvcm1hdCBpcyB1bnN1cHBvcnRlZC4KPiA+ICsgKi8K PiA+ICtjb25zdCBzdHJ1Y3QgaW1hZ2VfZm9ybWF0X2luZm8gKl9faW1hZ2VfZm9ybWF0X2RybV9s b29rdXAodTMyIGRybSkKPiA+ICt7Cj4gPiArCXJldHVybiBfX2ltYWdlX2Zvcm1hdF9sb29rdXAo ZHJtX2ZtdCwgZHJtKTsKPiA+ICt9Cj4gPiArRVhQT1JUX1NZTUJPTChfX2ltYWdlX2Zvcm1hdF9k cm1fbG9va3VwKTsKPiA+ICsKPiA+ICsvKioKPiA+ICsgKiBpbWFnZV9mb3JtYXRfZHJtX2xvb2t1 cCAtIHF1ZXJ5IGluZm9ybWF0aW9uIGZvciBhIGdpdmVuIGZvcm1hdAo+ID4gKyAqIEBkcm06IERS TSBmb3VyY2MgcGl4ZWwgZm9ybWF0IChEUk1fRk9STUFUXyopCj4gPiArICoKPiA+ICsgKiBUaGUg Y2FsbGVyIHNob3VsZCBvbmx5IHBhc3MgYSBzdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0IHRvIHRoaXMg ZnVuY3Rpb24uCj4gPiArICogVW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0cyB3aWxsIGdlbmVyYXRl IGEgd2FybmluZyBpbiB0aGUga2VybmVsIGxvZy4KPiA+ICsgKgo+ID4gKyAqIFJldHVybnM6Cj4g PiArICogVGhlIGluc3RhbmNlIG9mIHN0cnVjdCBpbWFnZV9mb3JtYXRfaW5mbyB0aGF0IGRlc2Ny aWJlcyB0aGUgcGl4ZWwgZm9ybWF0LCBvcgo+ID4gKyAqIE5VTEwgaWYgdGhlIGZvcm1hdCBpcyB1 bnN1cHBvcnRlZC4KPiA+ICsgKi8KPiA+ICtjb25zdCBzdHJ1Y3QgaW1hZ2VfZm9ybWF0X2luZm8g KmltYWdlX2Zvcm1hdF9kcm1fbG9va3VwKHUzMiBkcm0pCj4gPiArewo+ID4gKwljb25zdCBzdHJ1 Y3QgaW1hZ2VfZm9ybWF0X2luZm8gKmZvcm1hdDsKPiA+ICsKPiA+ICsJZm9ybWF0ID0gX19pbWFn ZV9mb3JtYXRfZHJtX2xvb2t1cChkcm0pOwo+ID4gKwo+ID4gKwlXQVJOX09OKCFmb3JtYXQpOwo+ ID4gKwlyZXR1cm4gZm9ybWF0Owo+ID4gK30KPiA+ICtFWFBPUlRfU1lNQk9MKGltYWdlX2Zvcm1h dF9kcm1fbG9va3VwKTsKPiA+IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v ZHJpLWRldmVs