From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5149 invoked by alias); 8 Feb 2015 16:59:39 -0000 Mailing-List: contact binutils-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: binutils-owner@sourceware.org Received: (qmail 5135 invoked by uid 89); 8 Feb 2015 16:59:38 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00,MIME_BASE64_BLANKS,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-HELO: relay1.mentorg.com Received: from relay1.mentorg.com (HELO relay1.mentorg.com) (192.94.38.131) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sun, 08 Feb 2015 16:59:33 +0000 Received: from svr-orw-fem-02x.mgc.mentorg.com ([147.34.96.206] helo=SVR-ORW-FEM-02.mgc.mentorg.com) by relay1.mentorg.com with esmtp id 1YKVCj-0000iH-Qv from Catherine_Moore@mentor.com ; Sun, 08 Feb 2015 08:59:29 -0800 Received: from NA-MBX-04.mgc.mentorg.com ([169.254.4.117]) by SVR-ORW-FEM-02.mgc.mentorg.com ([147.34.96.168]) with mapi id 14.03.0224.002; Sun, 8 Feb 2015 08:59:29 -0800 From: "Moore, Catherine" To: Richard Sandiford CC: "binutils@sourceware.org" Subject: RE: [Patch] Gas support for MIPS Compact EH Date: Sun, 08 Feb 2015 16:59:00 -0000 Message-ID: References: <87k3me9jia.fsf@talisman.default> <8738jt5zt1.fsf@talisman.default> <871tov9tzs.fsf@googlemail.com> In-Reply-To: <871tov9tzs.fsf@googlemail.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-IsSubscribed: yes X-SW-Source: 2015-02/txt/msg00096.txt.bz2 PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBSaWNoYXJk IFNhbmRpZm9yZCBbbWFpbHRvOnJkc2FuZGlmb3JkQGdvb2dsZW1haWwuY29t XQ0KPiBTZW50OiBTYXR1cmRheSwgTm92ZW1iZXIgMjIsIDIwMTQgOTo0MyBB TQ0KPiBUbzogTW9vcmUsIENhdGhlcmluZQ0KPiBDYzogYmludXRpbHNAc291 cmNld2FyZS5vcmcNCj4gU3ViamVjdDogUmU6IFtQYXRjaF0gR2FzIHN1cHBv cnQgZm9yIE1JUFMgQ29tcGFjdCBFSA0KPiANCj4gIk1vb3JlLCBDYXRoZXJp bmUiIDxDYXRoZXJpbmVfTW9vcmVAbWVudG9yLmNvbT4gd3JpdGVzOg0KPiA+ IEhpIFJpY2hhcmQsDQo+ID4gUGxlYXNlIGZpbmQgdGhlIHVwZGF0ZWQgQ29t cGFjdCBFSCAgcGF0Y2ggZm9yIGJpbnV0aWxzLg0KPiA+IFRoaXMgd2lsbCBs aWtlbHkgc3RpbGwgYmUgYSBoYXJkIHBhdGNoIHRvIHJldmlldywgYnV0IEkg dHJpZWQgdG8gDQo+ID4gYWRkcmVzcyB0aGUgbWFueSBjb21tZW50cyB0aGF0 IHlvdSBtYWRlIGVhcmxpZXIuDQo+ID4gVGhlIG1haW4gZGlmZmVyZW5jZSBp cyB0aGUgZXhjZXB0aW9uIGhhbmRsaW5nIHJlbG9jYXRpb24gdHlwZSBmb3Ig DQo+ID4gdGhlIExpbnV4IHRvb2xjaGFpbi4gIEl0IGlzIG5vIGxvbmdlciBn cHJlbCBiYXNlZC4NCj4gPiBUaGUgRUxGIGFuZCBMaW51eCB0b29scyBib3Ro IHVzZSBwY3JlbDMyIGFuZCB0aGUgRUgtc3BlY2lmaWMgDQo+ID4gcmVsb2Nh dGlvbiB0eXBlIGhhcyBiZWVuIHJlbW92ZWQuDQo+ID4gSSByYW4gaW50byBh IGZldyBpc3N1ZXMgd2l0aCB0aGUgcmVjZW50IGNoYW5nZXMgdG8gZWhfZnJh bWUgaGFuZGxpbmcgDQo+ID4gZm9yIERXQVJGLCBJIGhvcGVmdWxseSBjb3Zl cmVkIHRob3NlIHdpdGggdGhlIENvbXBhY3QgRUgNCj4gaW1wbGVtZW50YXRp b24uDQo+ID4gUGxlYXNlIGxldCBtZSBrbm93IHdoYXQgeW91IHRoaW5rLiAg SSBob3BlIHdlIGFyZSBjbG9zZSB0byANCj4gPiBjb252ZXJnaW5nIG9uIGFu IGltcGxlbWVudGF0aW9uLg0KPiANCj4gT0ssIHRoYW5rcy4gIEkgc3RhcnRl ZCBieSBnb2luZyB0aHJvdWdoIG15IHByZXZpb3VzIGNvbW1lbnRzIGFuZCAN Cj4gbG9va2luZyBhdCBob3cgeW91IGFkZHJlc3NlZCB0aGVtIGluIHRoZSBu ZXcgcGF0Y2guICBJIHRoaW5rIHRoZXJlIGFyZSANCj4gc3RpbGwgc29tZSB0 aGluZ3MgdGhhdCBuZWVkIHRvIGJlIHNvcnRlZCBvdXQuDQo+IA0KPiBXaGVu IGRvaW5nIHRoZSBuZXh0IHBhdGNoLCBjb3VsZCB5b3UgcmVwbHkgdG8gdGhl IG1haW4gcG9pbnRzIGFuZCBzYXkgDQo+IGhvdyB5b3UgZGVhbHQgd2l0aCB0 aGVtPyAgVGhhdCdkIG1ha2UgaXQgYSBsb3QgZWFzaWVyIHRvIHNlZSBob3cg dGhpcyBpcyBldm9sdmluZy4NCg0KWWVzLCBJJ2xsIGRvIHRoYXQuICBJJ20g c29ycnkgZm9yIHRoZSBtaXNzaW5nIHBpZWNlcyBvZiB0aGUgbGFzdCBwYXRj aC4gIE15IHJlYmFzZSBoYWQgc29tZSB1bmV4cGVjdGVkIHJlc3VsdHMgdGhh dCBJIGRpZG4ndCBjYXRjaCBiZWZvcmUgSSBwb3N0ZWQuDQpZb3VyIGNvbW1l bnQgdGhhdCBhZGRpdGlvbmFsIHRlc3RzIHdvdWxkIGhhdmUgY2F1Z2h0IHRo b3NlIGlzIGNvcnJlY3QuICBJJ3ZlIGFkZGVkIHNvbWUgbGluayB0ZXN0cyB0 byBoZWxwIG91dCB3aXRoIHRoYXQuICBJIHRoaW5rIHRoYXQgZXh0ZW5kaW5n IHRoZSByZWFkZWxmIC11IChkdW1wIHVud2luZCBvcHRpb24pIHdvdWxkIGJl IHVzZWZ1bCBmb3IgYWRkaXRpb25hbCB0ZXN0cywgYnV0IEkgZG9uJ3Qgd2Fu dCB0byBtYWtlIHRoYXQgYWRkaXRpb25hbCBkZXZlbG9wbWVudCBhIHJlcXVp cmVtZW50IGZvciBhcHByb3ZhbCBvZiB0aGlzIHBhdGNoLiAgVGhlcmUgYXJl IHN0aWxsIG9uZSBvciB0d28gb3V0c3RhbmRpbmcgYml0cywgYnV0IEknZCBs aWtlIHRvIGRlZmVyIHRob3NlIHVudGlsIEkgc2VlIHlvdXIgY29tbWVudHMg b24gdGhlIGN1cnJlbnQgcGF0Y2guDQo+IA0KPiA+PiAtLS0tLU9yaWdpbmFs IE1lc3NhZ2UtLS0tLQ0KPiA+PiBGcm9tOiBSaWNoYXJkIFNhbmRpZm9yZCBb bWFpbHRvOnJkc2FuZGlmb3JkQGdvb2dsZW1haWwuY29tXQ0KPiA+PiBTZW50 OiBTYXR1cmRheSwgRmVicnVhcnkgMDgsIDIwMTQgMTE6MzQgQU0NCj4gPj4g VG86IE1vb3JlLCBDYXRoZXJpbmUNCj4gPj4gQ2M6IGJpbnV0aWxzQHNvdXJj ZXdhcmUub3JnDQo+ID4+IFN1YmplY3Q6IFJlOiBbUGF0Y2hdIEdhcyBzdXBw b3J0IGZvciBNSVBTIENvbXBhY3QgRUgNCj4gPj4NCj4gPj4gVGhhbmtzIGZv ciB0aGUgdXBkYXRlcy4NCj4gPj4NCj4gPj4gIk1vb3JlLCBDYXRoZXJpbmUi IDxDYXRoZXJpbmVfTW9vcmVAbWVudG9yLmNvbT4gd3JpdGVzOg0KPiA+PiA+ PiA+IEBAIC00NTE0LDYgKzQ1MTcsMjMgQEAgYXJndW1lbnQgaXMgbm90IHBy ZXNlbnQsIG90aGVyd2lzZSANCj4gPj4gPj4gPiBzZWNvbiBvciBhIHN5bWJv bCBuYW1lLiAgVGhlIGRlZmF1bHQgYWZ0ZXIgDQo+ID4+ID4+ID4gQGNvZGV7 LmNmaV9zdGFydHByb2N9IGlzIEBjb2Rley5jZmlfbHNkYSAweGZmfSwgIG5v IExTREEuDQo+ID4+ID4+ID4NCj4gPj4gPj4gPiArQHNlY3Rpb24gQGNvZGV7 LmNmaV9pbmxpbmVfbHNkYX0gW0B2YXJ7YWxpZ259XSANCj4gPj4gPj4gPiAr QGNvZGV7LmNmaV9pbmxpbmVfbHNkYX0gbWFya3MgdGhlIHN0YXJ0IG9mIGEg TFNEQSBkYXRhIA0KPiA+PiA+PiA+ICtzZWN0aW9uIGFuZCBzd2l0Y2hlcyB0 byB0aGUgY29ycmVzcG9uZGluZyBAY29kZXsuZ251LmV4dGFifSBzZWN0aW9u Lg0KPiA+PiA+PiA+ICtJdCBtdXN0IGJlIHByZWNlZGVkIGJ5IGEgQ0ZJIGJs b2NrIGNvbnRhaW5pbmcgYSANCj4gPj4gPj4gPiArQGNvZGV7LmNmaV9sc2Rh fSBkaXJlY3RpdmUgYW5kIGlzIG9ubHkgdmFsaWQgd2hlbiBnZW5lcmF0aW5n DQo+IGNvbXBhY3QgRUggZnJhbWVzIChpLmUuDQo+ID4+ID4+ID4gK3dpdGgg QGNvZGV7LmNmaV9zZWN0aW9ucyBlaF9mcmFtZV9lbnRyeX0uDQo+ID4+ID4+ ID4gKw0KPiA+PiA+PiA+ICtJZiBhIGNvbXBhY3QgZW5jb2RpbmcgaXMgYmVp bmcgdXNlZCB0aGVuIHRoZSB0YWJsZSBoZWFkZXIgYW5kIA0KPiA+PiA+PiA+ ICt1bndpbmRpbmcgb3Bjb2RlcyB3aWxsIGJlIGdlbmVyYXRlZCBhdCB0aGlz IHBvaW50LCBzbyB0aGF0IA0KPiA+PiA+PiA+ICt0aGV5IGFyZSBpbW1lZGlh dGVseSBmb2xsb3dlZCBieSB0aGUgTFNEQSBkYXRhLiAgVGhlIHN5bWJvbCAN Cj4gPj4gPj4gPiArcmVmZXJlbmNlZCBieSB0aGUgQGNvZGV7LmNmaV9sc2Rh fSBkaXJlY3RpdmUgc2hvdWxkIHN0aWxsIGJlIA0KPiA+PiA+PiA+ICtkZWZp bmVkIGluIGNhc2UgYSBmYWxsYmFjayBGREUgYmFzZWQgZW5jb2RpbmcgaXMg dXNlZC4NCj4gPj4gPj4gPiArDQo+ID4+ID4+ID4gK1RoZSBvcHRpb25hbCBA dmFye2FsaWdufSBhcmd1bWVudCBzcGVjaWZpZXMgdGhlIGFsaWdubWVudA0K PiByZXF1aXJlZC4NCj4gPj4gPj4gPiArVGhlIGFsaWdubWVudCBpcyBzcGVj aWZpZWQgYXMgYSBwb3dlciBvZiB0d28sIGFzIHdpdGggdGhlIA0KPiA+PiA+ PiA+ICtAY29kZXsucDJhbGlnbn0gZGlyZWN0aXZlLg0KPiA+PiA+Pg0KPiA+ PiA+PiBIbW0sIHN3aXRjaGluZyBzZWN0aW9ucyBhbmQgZW1pdHRpbmcgZGF0 YSBmZWVscyB2ZXJ5IGRpZmZlcmVudCANCj4gPj4gPj4gaW4gc3R5bGUgZnJv bSB0aGUgb3RoZXIgLmNmaSBkaXJlY3RpdmVzLCB3aGljaCBqdXN0IGFubm90 YXRlIA0KPiA+PiA+PiBjb2RlIHdpdGhvdXQgY2hhbmdpbmcgdGhlIGZsb3cg b2YgYXNzZW1ibHkuICBJJ2QgbGlrZSB0byBrbm93IA0KPiA+PiA+PiBvdGhl ciBwZW9wbGUncw0KPiA+PiB0aG91Z2h0cyBvbiB0aGlzLg0KPiA+PiA+Pg0K PiA+PiA+PiBBbHNvLCBob3cgZG8geW91IHRlcm1pbmF0ZSB0aGUgTFNEQT8g IFRoZSBkb2N1bWVudGF0aW9uIGRvZXNuJ3QgDQo+ID4+ID4+IHNheSAoYnV0 IHNob3VsZCA6LSkpIGFuZCBJIGNvdWxkbid0IHNlZSB0aGlzIGRpcmVjdGl2 ZSBpbiB0aGUgc3BlYyBlaXRoZXIuDQo+ID4+ID4NCj4gPj4gPiBUaGUgTFNE QSBpcyB0ZXJtaW5hdGVkIGJ5IGEgc2VjdGlvbiBzd2l0Y2guDQo+ID4+DQo+ ID4+IE9LLiAgTGlrZSBJIHNheSwgcGxlYXNlIG1lbnRpb24gdGhpcyBpbiB0 aGUgZG9jdW1lbnRhdGlvbi4NCj4gDQo+IFRoZSBuZXcgdmVyc2lvbiBvZiB0 aGUgcGF0Y2ggZG9lc24ndCBoYXZlIHRoZSAuY2ZpX2lubGluZV9sc2RhIA0K PiBkb2N1bWVudGF0aW9uIHRoYXQgdGhlIHByZXZpb3VzIHBhdGNoIGhhZC4g IFBsZWFzZSBhZGQgaXQgYmFjayA6LSkgIA0KPiBCdXQgbGlrZSBJIHNheSBh Ym92ZSwgcGxlYXNlIGFsc28gZG9jdW1lbnQgaG93IHRoZSBkYXRhIGlzIHRl cm1pbmF0ZWQuDQoNCkl0J3MgYmFjay4NCj4gDQo+ID4+ID4+IFRCSCwgd2l0 aG91dCB0ZXN0cywgYW5kIHdpdGhvdXQgYW4gZXhwbGFuYXRpb24gb2Ygd2hh dCB0aGUgY29kZSANCj4gPj4gPj4gaXMgZG9pbmcsIEkgZm91bmQgdGhpcyBw YXRjaCBwcmV0dHkgaGFyZCB0byByZXZpZXcuICBFLmcuOg0KPiA+PiA+Pg0K PiA+PiA+PiA+IEBAIC0xMjksNyArMTQwLDEyIEBAIGdldF9kZWJ1Z3NlZ19u YW1lIChzZWdUIHNlZywgY29uc3QgY2hhcg0KPiA+PiA+PiA+ICAgICAgICBk b3QgPSBzdHJjaHIgKG5hbWUgKyAxLCAnLicpOw0KPiA+PiA+PiA+DQo+ID4+ ID4+ID4gICAgICAgIGlmICghZG9sbGFyICYmICFkb3QpDQo+ID4+ID4+ID4g LQluYW1lID0gIiI7DQo+ID4+ID4+ID4gKwl7DQo+ID4+ID4+ID4gKwkgIGlm IChjb21wYWN0X2VoICYmIHN0cmNtcCAobmFtZSwgIi50ZXh0IikgIT0gMCkN Cj4gPj4gPj4gPiArCSAgICByZXR1cm4gY29uY2F0IChiYXNlX25hbWUsICIu IiwgbmFtZSwgTlVMTCk7DQo+ID4+ID4+ID4gKw0KPiA+PiA+PiA+ICsJICBu YW1lID0gIiI7DQo+ID4+ID4+ID4gKwl9DQo+ID4+ID4+DQo+ID4+ID4+IHdo eSBpcyB0aGlzIGNoYW5nZSBuZWVkZWQ/ICBJLmUuLCBmb3IgYSB0ZXh0IHNl Y3Rpb24gY2FsbGVkIA0KPiA+PiA+PiBzb21ldGhpbmcgbGlrZSAuZm9vYmFy LCB3aHkgZG9lcyBjb21wYWN0X2VoIG5lZWQgdG8gcHV0IHRoaW5ncyANCj4g Pj4gPj4gaW4gYSBzZWN0aW9uIG5hbWUgZW5kaW5nIGluICIuLmZvb2JhciIs IHJhdGhlciB0aGFuIGluIHRoZSBtYWluIA0KPiA+PiA+PiBFSCBzZWN0aW9u PyAgSSBhc3N1bWUgdGhlIGRvdWJsZSBkb3RzIGFyZSBkZWxpYmVyYXRlLCBl LmcuIHRvIA0KPiA+PiA+PiBhdm9pZCBjb25mdXNpb24gd2l0aA0KPiA+PiAi LnRleHQuZm9vYmFyIj8NCj4gPj4gPg0KPiA+PiA+IEknbSBub3Qgc3VyZSB3 aHkgUGF1bCBwdXQgdGhpcyBpcyBhbmQgdGhlIG5leHQgaHVuay4gIFRoZXJl IHdlcmUgDQo+ID4+ID4gdGVzdCBmYWlsdXJlcyB3aXRob3V0LiAgSSBjYW4g cmV2aXNpdCB0aGlzIEZvciB0aGUgbmV4dCBpdGVyYXRpb24gDQo+ID4+ID4g aWYgbmVjZXNzYXJ5Lg0KPiA+Pg0KPiA+PiBZZWFoLCBpZiB5b3UgY291bGQg dGhhdCdkIGJlIGdyZWF0LiAgVGhlIGNvZGUgY2FuJ3QgcmVhbGx5IGdvIGlu IGlmDQo+ID4gdGhlcmUncyBuby0NCj4gPj4gb25lIGFyb3VuZCB3aG8gdW5k ZXJzdGFuZHMgd2hhdCBpdCBkb2VzLg0KPiA+Pg0KPiA+PiBJIGFzc3VtZSBp dCdzIGp1c3QgdG8gZW5zdXJlIHRoYXQgZWFjaCB0ZXh0IHNlY3Rpb24gaGFz IGl0cyBvd24gDQo+ID4+IC5laF9mcmFtZV9lbnRyeSwgYnV0IGluIHRoYXQg Y2FzZSBJIHRoaW5rIHdlIHNob3VsZCBjaGVjayBiYXNlZCBvbiANCj4gPj4g dGhlIGJhc2VfbmFtZSByYXRoZXIgdGhhbiBjb21wYWN0X2VoLiAgT3IgZG8g d2UgbmVlZCB0aGUgc2FtZSANCj4gPj4gdHJlYXRtZW50IGZvciAuZ251X2V4 dGFiLiAgSWYgc28sIHdoeT8NCj4gPj4NCj4gPj4gQSBjb21tZW50IGlzIG5l ZWRlZCBhdCB0aGUgdmVyeSBsZWFzdC4NCj4gDQo+IFRoZSBuZXcgaHVuayBm b3IgdGhpcyBpczoNCj4gDQo+ID4gQEAgLTEyOCw3ICsyNDEsMTUgQEAgZ2V0 X2RlYnVnc2VnX25hbWUgKHNlZ1Qgc2VnLCBjb25zdCBjaGFyDQo+ICpiYXNl X25hbWUpDQo+ID4gICAgICAgIGRvdCA9IHN0cmNociAobmFtZSArIDEsICcu Jyk7DQo+ID4NCj4gPiAgICAgICAgaWYgKCFkb2xsYXIgJiYgIWRvdCkNCj4g PiAtCW5hbWUgPSAiIjsNCj4gPiArCXsNCj4gPiArCSAgLyogRW5zdXJlIHRo YXQgYSB1bmlxdWVseSBuYW1lZCAuZWhfZnJhbWVfZW50cnkgc2VjdGlvbg0K PiA+ICsJICAgICBpcyBjcmVhdGVkIGZvciBlYWNoIHRleHQgc2VjdGlvbi4g ICovDQo+ID4gKwkgIGlmIChjb21wYWN0X2VoDQo+ID4gKwkgICAgICAgJiYg IXN0cmNtcCAoYmFzZV9uYW1lLCAiLmVoX2ZyYW1lX2VudHJ5IikNCj4gPiAr CSAgICAgICAmJiBzdHJjbXAgKG5hbWUsICIudGV4dCIpICE9IDApDQo+ID4g KwkgICAgcmV0dXJuIGNvbmNhdCAoYmFzZV9uYW1lLCAiLiIsIG5hbWUsIE5V TEwpOw0KPiA+ICsJICBuYW1lID0gIiI7DQo+ID4gKwl9DQo+IA0KPiBJIGRv bid0IHRoaW5rIHdlIHdhbnQgdGhlIGNvbXBhY3RfZWggdGVzdCBoZXJlOyBq dXN0IHRoZSBiYXNlX25hbWUgDQo+IGNoZWNrIHNob3VsZCBiZSBlbm91Z2gu ICAoTml0LCBzb3JyeSwgYnV0IHdhdGNoIHRoZSBpbmRlbnRhdGlvbi4NCj4g T25lIGxlc3Mgc3BhY2UgYmVmb3JlICImJiIuKQ0KPiANCkRvbmUuDQo+ID4+ ID4+ID4gQEAgLTgzMywxNCArODU5LDE1IEBAIGRvdF9jZmlfcGVyc29uYWxp dHkgKGludCBpZ25vcmVkIEFUVFJJQlUNCj4gPj4gPj4gPiAgICAgIH0NCj4g Pj4gPj4gPg0KPiA+PiA+PiA+ICAgIGlmICgoZW5jb2RpbmcgJiAweGZmKSAh PSBlbmNvZGluZw0KPiA+PiA+PiA+IC0gICAgICB8fCAoKGVuY29kaW5nICYg MHg3MCkgIT0gMA0KPiA+PiA+PiA+ICsgICAgICB8fCAoKCgoZW5jb2Rpbmcg JiAweDcwKSAhPSAwDQo+ID4+ID4+ID4gICNpZiBDRklfRElGRl9FWFBSX09L IHx8IGRlZmluZWQgdGNfY2ZpX2VtaXRfcGNyZWxfZXhwcg0KPiA+PiA+PiA+ IC0JICAmJiAoZW5jb2RpbmcgJiAweDcwKSAhPSBEV19FSF9QRV9wY3JlbA0K PiA+PiA+PiA+ICsJICAgJiYgKGVuY29kaW5nICYgMHg3MCkgIT0gRFdfRUhf UEVfcGNyZWwNCj4gPj4gPj4gPiAgI2VuZGlmDQo+ID4+ID4+ID4gIAkgICkN Cj4gPj4gPj4gPiAvKiBsZWIxMjggY2FuIGJlIGhhbmRsZWQsIGJ1dCBkb2Vz IHNvbWV0aGluZyBhY3R1YWxseSBuZWVkIGl0Pw0KPiA+ICovDQo+ID4+ID4+ ID4gLSAgICAgIHx8IChlbmNvZGluZyAmIDcpID09IERXX0VIX1BFX3VsZWIx MjgNCj4gPj4gPj4gPiAtICAgICAgfHwgKGVuY29kaW5nICYgNykgPiBEV19F SF9QRV91ZGF0YTgpDQo+ID4+ID4+ID4gKwkgICB8fCAoZW5jb2RpbmcgJiA3 KSA9PSBEV19FSF9QRV91bGViMTI4DQo+ID4+ID4+ID4gKwkgICB8fCAoZW5j b2RpbmcgJiA3KSA+IERXX0VIX1BFX3VkYXRhOCkNCj4gPj4gPj4gPiArCSYm ICF0Y19jZmlfc3BlY2lhbF9lbmNvZGluZyAoZW5jb2RpbmcpKSkNCj4gPj4g Pj4gPiAgICAgIHsNCj4gPj4gPj4gPiAgICAgICAgYXNfYmFkIChfKCJpbnZh bGlkIG9yIHVuc3VwcG9ydGVkIGVuY29kaW5nIGluIC5jZmlfcGVyc29uYWxp dHkiKSk7DQo+ID4+ID4+ID4gICAgICAgIGlnbm9yZV9yZXN0X29mX2xpbmUg KCk7DQo+ID4+ID4+DQo+ID4+ID4+IFdoYXQgZG9lcyBhICJzcGVjaWFsIiBl bmNvZGluZyBtZWFuPyAgQWdhaW4sIHRoaXMgaG9vayBzaG91bGQgYmUgDQo+ ID4+ID4+IGRvY3VtZW50ZWQgaW4gaW50ZXJuYWxzLnRleGkuICBBbmQgZG8g d2UgcmVhbGx5IHdhbnQgdG8gY2hhbmdlIA0KPiA+PiA+PiB0aGUgc2V0IG9m IGVuY29kaW5ncyB0aGF0IGFyZSBhbGxvd2VkIGZvciBEV0FSRiwgZXZlbiBv biBNSVBTIA0KPiA+PiA+PiBzeXN0ZW1zIHRoYXQgcHJlZGF0ZSBjb21wYXQg RUg/DQo+ID4+ID4+DQo+ID4+ID4gU3BlY2lhbCBtZWFucyB0aGF0IHdlIGhh dmUgY29kZSBpbiB0aGUgYmFja2VuZCB0byBlbWl0IGEgcmVsb2MgZm9yIGl0 Lg0KPiA+PiA+IEluIHRoZSByZXZpc2VkIHBhdGNoLCBpdCBnb2VzIGFsb25n IHdpdGggVGNfY2ZpX3JlbG9jX2Zvcl9lbmNvZGluZy4NCj4gPj4gPiBJdCBh bHNvIGxvb2tzIGxpa2UgaW50ZXJuYWxzLnRleGkgZmFpbHMgdG8gZG9jdW1l bnQgbWFueSBvZiB0aGUgDQo+ID4+ID4gdGNfbWFjcm9zIGFuZCBpdCBkb2Vz bid0IGFwcGVhciB0byBiZSBidWlsdCBpbnRvIGEgLmluZm8gZmlpZS4NCj4g Pj4NCj4gPj4gVGhhdCdzIG5vIHJlYXNvbiBub3QgdG8gZG9jdW1lbnQgbmV3 IGhvb2tzIHRob3VnaC4gIEkga25vdyBJJ3ZlIA0KPiA+PiB1c2VkIGludGVy bmFscy50ZXhpIHRvIHJlYWQgbW9yZSBhYm91dCBhIGhvb2sgaW4gdGhlIHBh c3QuICBJZiB5b3UgDQo+ID4+IGRvbid0DQo+ID4gd2FudCB0byBwdXQNCj4g Pj4gaXQgdGhlcmUgdGhvdWdoIHRoZW4gcGxlYXNlIGF0IGxlYXN0IHB1dCBp dCBpbiBhIGNvbW1lbnQgaW5zdGVhZC4NCj4gDQo+IFRoZSBodW5rIGZvciB0 aGlzIGlzOg0KPiANCj4gPiBkaWZmIC0tZ2l0IGEvZ2FzL2RvYy9pbnRlcm5h bHMudGV4aSBiL2dhcy9kb2MvaW50ZXJuYWxzLnRleGkgaW5kZXgNCj4gPiBj YzQwODliLi45ZGQwYmQwIDEwMDY0NA0KPiA+IC0tLSBhL2dhcy9kb2MvaW50 ZXJuYWxzLnRleGkNCj4gPiArKysgYi9nYXMvZG9jL2ludGVybmFscy50ZXhp DQo+ID4gQEAgLTE0NzMsNiArMTQ3MywxMCBAQCBjb21wbGV0ZWQsIGJ1dCBi ZWZvcmUgdGhlIHJlbG9jYXRpb25zIGhhdmUNCj4gYmVlbiBnZW5lcmF0ZWQu DQo+ID4gIElmIHlvdSBkZWZpbmUgdGhpcyBtYWNybywgR0FTIHdpbGwgY2Fs bCBpdCBhZnRlciB0aGUgcmVsb2NzIGhhdmUgDQo+ID4gYmVlbiBnZW5lcmF0 ZWQuDQo+ID4NCj4gPiArQGl0ZW0gdGNfY2ZpX3JlbG9jX2Zvcl9lbmNvZGlu Zw0KPiA+ICtAY2luZGV4IHRjX2NmaV9yZWxvY19mb3JfZW5jb2RpbmcNCj4g PiArWW91IG1heSBkZWZpbmUgdGhpcyBtYWNybyB0byBpbmRpY2F0ZSB3aGV0 aGVyIGEgY2ZpIGVuY29kaW5nIA0KPiA+ICtyZXF1aXJlcyBhDQo+IHJlbG9j YXRpb24uDQo+IA0KPiBUaGF0IG1ha2VzIGl0IHNvdW5kIGxpa2UgYSBib29s ZWFuLCB3aGVyZWFzIGl0IHJldHVybnMgYSByZWxvYy4gIA0KPiBQbGVhc2Ug YWxzbyBtZW50aW9uIHRoYXQgaXQgY29udHJvbHMgd2hldGhlciBjb21wYWN0 IEVIIGlzIHN1cHBvcnRlZC4gIA0KPiBUaGUgODAtIGNoYXJhY3RlciBsaW1p dCBhcHBsaWVzIHRvIGRvY3VtZW50YXRpb24gdG9vLg0KPiANCg0KRG9uZS4N Cg0KPiA+PiA+PiA+ICsgIGRlbWFuZF9lbXB0eV9yZXN0X29mX2xpbmUgKCk7 DQo+ID4+ID4+ID4gKyAgY2NzZWcgPSBDVVJfU0VHIChsYXN0X2ZkZSk7DQo+ ID4+ID4+ID4gKyAgLyogT3BlbiAuZ251X2V4dGFiIHNlY3Rpb24uICAqLw0K PiA+PiA+PiA+ICsgIGNmaV9zZWcgPSBnZXRfY2ZpX3NlZyAoY2NzZWcsICIu Z251X2V4dGFiIiwNCj4gPj4gPj4gPiArCQkJIChTRUNfQUxMT0MgfCBTRUNf TE9BRCB8IFNFQ19EQVRBDQo+ID4+ID4+ID4gKwkJCSAgfCBEV0FSRjJfRUhf RlJBTUVfUkVBRF9PTkxZKSwNCj4gPj4gPj4gPiArCQkJIDEpOw0KPiA+PiA+ PiA+ICsjaWZkZWYgbWRfZml4X3VwX2VoX2ZyYW1lDQo+ID4+ID4+ID4gKyAg bWRfZml4X3VwX2VoX2ZyYW1lIChjZmlfc2VnKTsgI2Vsc2UNCj4gPj4gPj4g PiArICAodm9pZCkgY2ZpX3NlZzsNCj4gPj4gPj4gPiArI2VuZGlmDQo+ID4+ ID4+ID4gKw0KPiA+PiA+PiA+ICsgIGZyYWdfYWxpZ24gKGFsaWduLCAwLCAw KTsNCj4gPj4gPj4gPiArICByZWNvcmRfYWxpZ25tZW50IChub3dfc2VnLCBh bGlnbik7ICBpZiANCj4gPj4gPj4gPiArIChsYXN0X2ZkZS0+ZWhfaGVhZGVy X3R5cGUgPT0gRUhfQ09NUEFDVF9IQVNfTFNEQSkNCj4gPj4gPj4gPiArICAg IG91dHB1dF9jb21wYWN0X3Vud2luZF9kYXRhIChsYXN0X2ZkZSwgYWxpZ24p Ow0KPiA+PiA+Pg0KPiA+PiA+PiBQbGVhc2UgY291bGQgeW91IGV4cGxhaW4g dGhlIEVIX0NPTVBBQ1RfTEVHQUNZIGhhbmRsaW5nIGhlcmU/DQo+ID4+ID4N Cj4gPj4gPiBXb3VsZCB5b3UgcGxlYXNlIGNsYXJpZnkgdGhpcyBxdWVzdGlv bj8gIEkgZG9uJ3Qgc2VlIHRoZSANCj4gPj4gPiByZWZlcmVuY2UgdG8gRUhf Q09NUEFDVF9MRUdBQ1kuDQo+ID4+DQo+ID4+IFRoYXQgd2FzIHRoZSBwcm9i bGVtIDotKSAgRnVydGhlciB1cCB0aGVyZSdzOg0KPiA+Pg0KPiA+PiAgIGlm IChsYXN0X2ZkZS0+ZWhfaGVhZGVyX3R5cGUgIT0gRUhfQ09NUEFDVF9MRUdB Q1kNCj4gPj4gICAgICAgJiYgbGFzdF9mZGUtPmVoX2hlYWRlcl90eXBlICE9 IEVIX0NPTVBBQ1RfSEFTX0xTREEpDQo+ID4+ICAgICB7DQo+ID4+ICAgICAg IGFzX2JhZCAoXygiLmNmaV9pbmxpbmVfbHNkYSBzZWVuIGZvciBmcmFtZSB3 aXRob3V0IC5jZmlfbHNkYSIpKTsNCj4gPj4gICAgICAgaWdub3JlX3Jlc3Rf b2ZfbGluZSAoKTsNCj4gPj4gICAgICAgcmV0dXJuOw0KPiA+PiAgICAgfQ0K PiA+Pg0KPiA+PiBTbyB3aGF0IGRvZXMgdGhpcyBjb2RlIG1lYW4vZG8gaW4g dGhlOg0KPiA+Pg0KPiA+PiAgIGxhc3RfZmRlLT5laF9oZWFkZXJfdHlwZSA9 PSBFSF9DT01QQUNUX0xFR0FDWQ0KPiA+Pg0KPiA+PiBjYXNlPw0KPiANCj4g U3RpbGwgbm90IHN1cmUgYWJvdXQgdGhpcyAtLSBwbGVhc2UgY291bGQgeW91 IGNsYXJpZnk/ICBUaGUgY29udGV4dCBpcyANCj4gdGhpcyBwYXJ0IG9mDQo+ IGRvdF9jZmlfaW5saW5lX2xzZGE6DQo+IA0KPiA+ICsgIGlmIChsYXN0X2Zk ZS0+ZWhfaGVhZGVyX3R5cGUgIT0gRUhfQ09NUEFDVF9MRUdBQ1kNCj4gPiAr ICAgICAgJiYgbGFzdF9mZGUtPmVoX2hlYWRlcl90eXBlICE9IEVIX0NPTVBB Q1RfSEFTX0xTREEpDQo+ID4gKyAgICB7DQo+ID4gKyAgICAgIGFzX2JhZCAo XygiLmNmaV9pbmxpbmVfbHNkYSBzZWVuIGZvciBmcmFtZSB3aXRob3V0IC5j ZmlfbHNkYSIpKTsNCj4gPiArICAgICAgaWdub3JlX3Jlc3Rfb2ZfbGluZSAo KTsNCj4gPiArICAgICAgcmV0dXJuOw0KPiA+ICsgICAgfQ0KPiA+ICsNCj4g PiArI2lmZGVmIG1kX2ZsdXNoX3BlbmRpbmdfb3V0cHV0DQo+ID4gKyAgbWRf Zmx1c2hfcGVuZGluZ19vdXRwdXQgKCk7DQo+ID4gKyNlbmRpZg0KPiA+ICsN Cj4gPiArICBhbGlnbiA9IGdldF9hYnNvbHV0ZV9leHByZXNzaW9uICgpOyAg aWYgKGFsaWduID4gbWF4X2FsaWdubWVudCkNCj4gPiArICAgIHsNCj4gPiAr ICAgICAgYWxpZ24gPSBtYXhfYWxpZ25tZW50Ow0KPiA+ICsgICAgICBhc19i YWQgKF8oIkFsaWdubWVudCB0b28gbGFyZ2U6ICVkIGFzc3VtZWQuIiksIGFs aWduKTsNCj4gPiArICAgIH0NCj4gPiArICBlbHNlIGlmIChhbGlnbiA8IDAp DQo+ID4gKyAgICB7DQo+ID4gKyAgICAgIGFzX3dhcm4gKF8oIkFsaWdubWVu dCBuZWdhdGl2ZTogMCBhc3N1bWVkLiIpKTsNCj4gPiArICAgICAgYWxpZ24g PSAwOw0KPiA+ICsgICAgfQ0KPiA+ICsNCj4gPiArICBkZW1hbmRfZW1wdHlf cmVzdF9vZl9saW5lICgpOw0KPiA+ICsgIGNjc2VnID0gQ1VSX1NFRyAobGFz dF9mZGUpOw0KPiA+ICsgIC8qIE9wZW4gLmdudV9leHRhYiBzZWN0aW9uLiAg Ki8NCj4gPiArICBnZXRfY2ZpX3NlZyAoY2NzZWcsICIuZ251X2V4dGFiIiwN Cj4gPiArCSAgICAgICAoU0VDX0FMTE9DIHwgU0VDX0xPQUQgfCBTRUNfREFU QQ0KPiA+ICsJCXwgRFdBUkYyX0VIX0ZSQU1FX1JFQURfT05MWSksDQo+ID4g KwkgICAgICAgMSk7DQo+ID4NCj4gPiArICBmcmFnX2FsaWduIChhbGlnbiwg MCwgMCk7DQo+ID4gKyAgcmVjb3JkX2FsaWdubWVudCAobm93X3NlZywgYWxp Z24pOyAgaWYgKGxhc3RfZmRlLT5laF9oZWFkZXJfdHlwZSANCj4gPiArID09 IEVIX0NPTVBBQ1RfSEFTX0xTREEpDQo+ID4gKyAgICBvdXRwdXRfY29tcGFj dF91bndpbmRfZGF0YSAobGFzdF9mZGUsIGFsaWduKTsNCj4gPiArDQo+ID4g KyAgbGFzdF9mZGUgPSBOVUxMOw0KPiA+ICsNCj4gPiArICByZXR1cm47DQo+ IA0KPiBUaGUgZmlyc3QgImlmIiBzdGF0ZW1lbnQgYWxsb3dzIHRoZSBkaXJl Y3RpdmUgdG8gYmUgdXNlZCBmb3IgDQo+IEVIX0NPTVBBQ1RfTEVHQUNZLCBi dXQgd2hhdCBkb2VzIHRoZSBkaXJlY3RpdmUgbWVhbi9kbyBpbiB0aGF0IGNh c2U/DQo+IA0KDQpJJ3ZlIG5vdyBhZGRlZCBzb21lIGNvbW1lbnRhcnkgYW5k IGV4dGVuZGVkIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBlbnVtZXJhdGlvbiB0 byBpbmNsdWRlIGFuIEVIX0NPTVBBQ1RfVU5LTk9XTiB2YWx1ZS4gDQpUaGUg ZWhfaGVhZGVyX3R5cGUgd2FzIG5ldmVyIGV4cGxpY2l0bHkgaW5pdGlhbGl6 ZWQ7IGl0J3Mgbm93IGluaXRpYWxpemVkIHRvIEVIX0NPTVBBQ1RfVU5LTk9X Ti4gIFRoZSBFSF9DT01QQUNUX0xFR0FDWSBoZWFkZXIgdHlwZSBpcyB0aGVu IGV4cGxpY2l0bHkgc2V0IHdoZW4gbm9uZSBvZiB0aGUgQ09NUEFDVCBoZWFk ZXIgdHlwZSBjYXNlcyBhcmUgZGlzY292ZXJlZC4NCg0KPiA+PiA+IGRpZmYg LS1naXQgYS9iZmQvZWxmLWJmZC5oIGIvYmZkL2VsZi1iZmQuaCBpbmRleCAw YWFiNWZhLi5iN2Q3ZGYwDQo+ID4+ID4gMTAwNjQ0DQo+ID4+ID4gLS0tIGEv YmZkL2VsZi1iZmQuaA0KPiA+PiA+ICsrKyBiL2JmZC9lbGYtYmZkLmgNCj4g Pj4gPiBAQCAtMzgxLDggKzM4MSwxMCBAQCBzdHJ1Y3QgZWhfZnJhbWVfaGRy X2luZm8gIHsNCj4gPj4gPiAgICBzdHJ1Y3QgaHRhYiAqY2llczsNCj4gPj4g PiAgICBhc2VjdGlvbiAqaGRyX3NlYzsNCj4gPj4gPiAtICB1bnNpZ25lZCBp bnQgZmRlX2NvdW50LCBhcnJheV9jb3VudDsNCj4gPj4gPiArICB1bnNpZ25l ZCBpbnQgZmRlX2NvdW50LCBhcnJheV9jb3VudCwgYWxsb2NhdGVkX2VudHJp ZXM7DQo+ID4+ID4gICAgc3RydWN0IGVoX2ZyYW1lX2FycmF5X2VudCAqYXJy YXk7DQo+ID4+ID4gKyAgLyogZWhfZnJhbWVfZW50cnkgZnJhZ21lbnRzLiAg Ki8gIGFzZWN0aW9uICoqZW50cmllczsNCj4gPj4gPiAgICAvKiBUUlVFIGlm IHdlIHNob3VsZCB0cnkgdG8gbWVyZ2UgQ0lFcyBiZXR3ZWVuIGlucHV0IHNl Y3Rpb25zLiAgKi8NCj4gPj4gPiAgICBiZmRfYm9vbGVhbiBtZXJnZV9jaWVz Ow0KPiA+PiA+ICAgIC8qIFRSVUUgaWYgYWxsIC5laF9mcmFtZXMgaGF2ZSBi ZWVuIHBhcnNkLiAgKi8NCj4gPj4NCj4gPj4gSSdtIG5vdCBzdXJlIHRoZXJl J3MgZW5vdWdoIGNvbW1vbmFsaXR5IGJldHdlZW4gdGhlIERXQVJGIGFuZA0K PiBjb21wYWN0DQo+ID4+IHZlcnNpb25zIHRvIHNoYXJlIHRoaXMgc3RydWN0 dXJlLiAgRWl0aGVyIHdlIHNob3VsZCBoYXZlIHNlcGFyYXRlIA0KPiA+PiBz dHJ1Y3R1cmVzIG9yIHVzZSBhIHVuaW9uIHRvIHNlcGFyYXRlIG91dCB0aGUg Zm9ybWF0LXNwZWNpZmljIGJpdHMuDQo+IA0KPiBJIHNlZSB5b3UndmUgZG9u ZSB0aGlzLCB0aGFua3MsIGJ1dDoNCj4gDQo+ID4gK3N0cnVjdCBkd2FyZl9l aF9mcmFtZV9oZHJfaW5mbw0KPiA+ICt7DQo+ID4gKyAgc3RydWN0IGVoX2Zy YW1lX2FycmF5X2VudCAqYXJyYXk7IH07DQo+ID4gKw0KPiA+ICtzdHJ1Y3Qg Y29tcGFjdF9laF9mcmFtZV9oZHJfaW5mbw0KPiA+ICt7DQo+ID4gKyAgdW5z aWduZWQgaW50IGFsbG9jYXRlZF9lbnRyaWVzOw0KPiA+ICsgIC8qIGVoX2Zy YW1lX2VudHJ5X2ZyYWdtZW50cy4gICovDQo+ID4gKyAgYXNlY3Rpb24gKipl bnRyaWVzOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiAgc3RydWN0IGVoX2ZyYW1l X2hkcl9pbmZvDQo+ID4gIHsNCj4gPiAgICBzdHJ1Y3QgaHRhYiAqY2llczsN Cj4gPiAgICBhc2VjdGlvbiAqaGRyX3NlYzsNCj4gPiAgICB1bnNpZ25lZCBp bnQgZmRlX2NvdW50LCBhcnJheV9jb3VudDsNCj4gPiAtICBzdHJ1Y3QgZWhf ZnJhbWVfYXJyYXlfZW50ICphcnJheTsNCj4gPiAgICAvKiBUUlVFIGlmIC5l aF9mcmFtZV9oZHIgc2hvdWxkIGNvbnRhaW4gdGhlIHNvcnRlZCBzZWFyY2gg dGFibGUuDQo+ID4gICAgICAgV2UgYnVpbGQgaXQgaWYgd2Ugc3VjY2Vzc2Z1 bGx5IHJlYWQgYWxsIC5laF9mcmFtZSBpbnB1dCBzZWN0aW9ucw0KPiA+ICAg ICAgIGFuZCByZWNvZ25pemUgdGhlbS4gICovDQo+ID4gICAgYmZkX2Jvb2xl YW4gdGFibGU7DQo+ID4gKyAgYmZkX2Jvb2xlYW4gZnJhbWVfaGRyX2lzX2Nv bXBhY3Q7ICB1bmlvbg0KPiA+ICsgICAgew0KPiA+ICsgICAgICBzdHJ1Y3Qg ZHdhcmZfZWhfZnJhbWVfaGRyX2luZm8gZHdhcmY7DQo+ID4gKyAgICAgIHN0 cnVjdCBjb21wYWN0X2VoX2ZyYW1lX2hkcl9pbmZvIGNvbXBhY3Q7DQo+ID4g KyAgICB9DQo+ID4gKyAgdTsNCj4gPiAgfTsNCj4gPg0KPiA+ICAvKiBFbnVt IHVzZWQgdG8gaWRlbnRpZnkgdGFyZ2V0IHNwZWNpZmljIGV4dGVuc2lvbnMg dG8gdGhlIA0KPiA+IGVsZl9vYmpfdGRhdGENCj4gDQo+IC4uLmFyZW4ndCBj aWVzLCBmZGVfY291bnQsIGFycmF5X2NvdW50IGFuZCB0YWJsZSBzcGVjaWZp YyB0byB0aGUgRFdBUkYgDQo+IHZlcnNpb24gdG9vPyAgTXkgcG9pbnQgd2Fz IHRoYXQgaWYgd2Ugd2VudCBmb3IgdGhlIHVuaW9uIGFwcHJvYWNoLCB0aGUg DQo+IG9ubHkgZmllbGRzIGluIHRoZSBjb21tb24gc3RydWN0dXJlIHNob3Vs ZCBiZSB0aG9zZSB0aGF0IGFyZSBuZWVkZWQgYnkgDQo+IGJvdGggZm9ybWF0 cy4gIEl0IGxvb2tzIGxpa2UgdGhhdCdzIGp1c3QgaGRyX3NlYy4NCj4gDQo+ IElmIG1vdmluZyBhbGwgb2YgdGhlbSBzZWVtcyBsaWtlIHRvbyBtdWNoIHdv cmssIEkgdGhpbmsgd2Ugc2hvdWxkIGdvIA0KPiBmb3Igc2VwYXJhdGUgc3Ry dWN0dXJlcyBpbnN0ZWFkLg0KDQpJIG1vdmVkIHRoZW0gYW5kIGtlcHQgdGhl IHVuaW9uLg0KDQo+IA0KPiA+PiA+ICsJfQ0KPiA+PiA+ICsNCj4gPj4gPiAr ICAgICAgQkZEX0FTU0VSVCAoaGRyX2luZm8tPmVudHJpZXMpOw0KPiA+PiA+ ICsgICAgfQ0KPiA+PiA+ICsNCj4gPj4gPiArICBoZHJfaW5mby0+ZW50cmll c1toZHJfaW5mby0+YXJyYXlfY291bnQrK10gPSBzZWM7IH0NCj4gPj4gPiAr DQo+ID4+ID4gKy8qIFBhcnNlIGEgLmVoX2ZyYW1lX2VudHJ5IHNlY3Rpb24u ICBGaWd1cmUgb3V0IHdoaWNoIHRleHQgc2VjdGlvbiBpdA0KPiA+PiA+ICsg ICByZWZlcmVuY2VzLiAgKi8NCj4gPj4gPiArDQo+ID4+ID4gK3ZvaWQNCj4g Pj4gPiArX2JmZF9lbGZfcGFyc2VfZWhfZnJhbWVfZW50cnkgKGJmZCAqYWJm ZCwgc3RydWN0IGJmZF9saW5rX2luZm8NCj4gKmluZm8sDQo+ID4+ID4gKwkJ CSAgICAgICBhc2VjdGlvbiAqc2VjLCBzdHJ1Y3QgZWxmX3JlbG9jX2Nvb2tp ZSAqY29va2llLA0KPiA+PiA+ICsJCQkgICAgICAgYmZkX2Jvb2xlYW4gcmVt ZW1iZXIpDQo+ID4+DQo+ID4+IFRoaXMgZG9lcyBtb3JlIHRoYW4gdGhlIGNv bW1lbnQgc2F5cyBhbmQgdGhlIG5hbWUgaW1wbGllczsgdGhlIA0KPiA+PiBS RU1FTUJFUiBzdHVmZiBpc24ndCBtZW50aW9uZWQuDQo+ID4+DQo+ID4+IFRo ZSBwYXRjaCB0cmllcyB0byBkbyB0aGUgcGFyc2luZyBkdXJpbmcgYmZkX2Vs Zl9kaXNjYXJkX2luZm8sIGJ1dCANCj4gPj4gc2luY2UgdGhlIHBhcnNpbmcg d2FudHMgdG8gYmUgYWJsZSB0byBmYWlsIHdpdGggYW4gZXJyb3IsIEkgdGhp bmsgDQo+ID4+IHdlIG5lZWQgdG8gZG8gaXQgaW4gYW4gZWFybGllciBwYXNz LiAgV2UgY2FuIHRoZW4gcmV0dXJuIGEgDQo+ID4+IGJmZF9ib29sZWFuIHN1 Y2Nlc3MgY29kZSBhbmQgcHJvcGFnYXRlIGVycm9yIHJldHVybnMgdXAsIHdo aWNoIHRoZSANCj4gPj4gY3VycmVudCBwYXRjaA0KPiBkb2Vzbid0IGRvLg0K PiA+PiBJZGVhbGx5IHdlJ2QgcHV0IHRoZSBwYXNzIHNvbWV3aGVyZSBiZWZv cmUgR0MsIHNvIHRoYXQgYm90aCB0aGUgR0MgDQo+ID4+IGFuZCBiZmRfZWxm X2Rpc2NhcmRfaW5mbyBzdGFnZXMgY2FuIGFzc3VtZSBwYXJzZWQgLmVoX2Zy YW1lX2VudHJ5DQo+IHNlY3Rpb25zLg0KPiA+Pg0KPiA+PiBIYXZpbmcgYmZk X2VsZl9kaXNjYXJkX2luZm8gYWRkIGluZm8gKGFzIHBlciBSRU1FTUJFUiA9 PSBUUlVFKSANCj4gPj4gc2VlbXMgYSBiaXQgY291bnRlcmludHVpdGl2ZS4g IEkgdGhpbmsgdGhlIGVhcmxpZXIgcGFzcyBzaG91bGQgDQo+ID4+IHJlY29y ZCBhbGwgLmVoX2ZyYW1lX2VudHJ5IHNlY3Rpb25zIGFuZCB0aGVuIHRoZSBj b2RlIGN1cnJlbnRseSBpbiANCj4gPj4gX2JmZF9lbGZfZW5kX2VoX2ZyYW1l X3BhcnNpbmcgKGJ1dCBzZWUgYmVsb3cpIHNob3VsZCByZW1vdmUNCj4gdW53 YW50ZWQNCj4gPj4gZW50cmllcyBmcm9tIHRoZSBlaF9mcmFtZV9oZHJfaW5m byBhcnJheS4NCj4gDQo+IEkgc2VlIHlvdSd2ZSBhZGRlZCB0aGUgZWFybGll ciBwYXNzLCB0aGFua3MsIGJ1dCBlcnJvcnMgYXJlbid0IGFsd2F5cyANCj4g cmVwb3J0ZWQgYmFjayB1cC4gIFRoZSBmdW5jdGlvbjoNCj4gDQo+ID4gKy8q IFBhcnNlIGEgLmVoX2ZyYW1lX2VudHJ5IHNlY3Rpb24uICBGaWd1cmUgb3V0 IHdoaWNoIHRleHQgc2VjdGlvbiBpdA0KPiA+ICsgICByZWZlcmVuY2VzLiAg Ki8NCj4gPiArDQo+ID4gK3ZvaWQNCj4gPiArX2JmZF9lbGZfcGFyc2VfZWhf ZnJhbWVfZW50cnkgKHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvLA0KPiA+ ICsJCQkgICAgICAgYXNlY3Rpb24gKnNlYywgc3RydWN0IGVsZl9yZWxvY19j b29raWUgKmNvb2tpZSkgew0KPiA+IFsuLi5dDQo+ID4gK2ZhaWw6DQo+ID4g KyAgKCpfYmZkX2Vycm9yX2hhbmRsZXIpIChfKCIlQjogZmFpbGVkIHRvIHBy b2Nlc3MgDQo+ID4gKy5laF9mcmFtZV9lbnRyeSIpLA0KPiA+ICtzZWMtPm93 bmVyKTsgfQ0KPiANCj4gZG9lc24ndCB0ZWxsIHRoZSBjYWxsZXIgKGFuZCBl dmVudHVhbGx5IHRoZSBsZCBjb2RlKSB0aGF0IGEgcHJvYmxlbSBvY2N1cmVk Lg0KPiBUaGUgZnVuY3Rpb24gb3VnaHQgdG8gcmV0dXJuIGEgYmZkX2Jvb2xl YW4gc3VjY2VzcyBjb2RlLCBsaWtlIGl0cyBjYWxsZXJzLg0KPiBBbHNvLCB0 aGUgZXJyb3IgaGVyZSBzZWVtcyB0byBkdXBsaWNhdGUgdGhlIGV2ZW50dWFs IGxkIG9uZToNCj4gDQo+ICAgICBlaW5mbyAoXygiJVAlRjogRmFpbGVkIHRv IHBhcnNlIEVIIGZyYW1lIGVudHJpZXMuXG4iKSk7DQo+IA0KPiB3aXRob3V0 IHJlYWxseSBwcm92aWRpbmcgYW55IG1vcmUgaW5mb3JtYXRpb24uDQo+IA0K PiBEb24ndCBzaG9vdCBtZSwgYnV0IGl0IHdvdWxkIHByb2JhYmx5IGJlIGNs ZWFuZXIgdG8gbWFrZSB0aGlzIGFuIA0KPiBFTEYtc3BlY2lmaWMgcGFzcyBh bmQgY2FsbCBpdCBmcm9tIGVsZjMyLmVtIGluc3RlYWQuICBUaGF0J2xsIGF2 b2lkIA0KPiBoYXZpbmcgdG8gZG8gYWxsIHRoZSBhb3V0LCBib3V0LCBldGMu IHN0dWZmIGFuZCB3b3VsZCBhbGxvdyB0aGUgbGQgDQo+IGNvZGUgdG8gcmVm ZXIgdG8gRUxGaXNtcyBsaWtlIC5laF9mcmFtZV9lbnRyeSBpdHNlbGYuDQo+ IA0KT2theSwgSSd2ZSBub3cgbW92ZWQgdGhpcyB0byBlbGYzMi5lbS4gIEkg Zml4ZWQgdGhlIGVycm9yIGhhbmRsaW5nIGFzIHdlbGwuDQoNCj4gPj4gPiAr LyogRmluaXNoIGEgcGFzcyBvdmVyIGFsbCAuZWhfZnJhbWUgYW5kIGVoX2Zy YW1lX2VudHJ5IHNlY3Rpb25zLg0KPiA+PiA+ICsqLw0KPiA+PiA+ICsNCj4g Pj4gPiArYmZkX2Jvb2xlYW4NCj4gPj4gPiAgX2JmZF9lbGZfZW5kX2VoX2Zy YW1lX3BhcnNpbmcgKHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvKSAgew0K PiA+PiA+ICAgIHN0cnVjdCBlaF9mcmFtZV9oZHJfaW5mbyAqaGRyX2luZm87 DQo+ID4+ID4gKyAgdW5zaWduZWQgaW50IGk7DQo+ID4+ID4NCj4gPj4gPiAg ICBoZHJfaW5mbyA9ICZlbGZfaGFzaF90YWJsZSAoaW5mbyktPmVoX2luZm87 DQo+ID4+ID4gICAgaGRyX2luZm8tPnBhcnNlZF9laF9mcmFtZXMgPSBUUlVF Ow0KPiA+PiA+ICsNCj4gPj4gPiArICBpZiAoaGRyX2luZm8tPmFycmF5X2Nv dW50ID09IDAgfHwgaW5mby0+ZWhfZnJhbWVfaGRyIDwgMikNCj4gPj4gPiAr ICAgIHJldHVybiBGQUxTRTsNCj4gPj4gPiArDQo+ID4+ID4gKyAgcXNvcnQg KGhkcl9pbmZvLT5lbnRyaWVzLCBoZHJfaW5mby0+YXJyYXlfY291bnQsDQo+ ID4+ID4gKwkgc2l6ZW9mIChhc2VjdGlvbiAqKSwgY21wX2VoX2ZyYW1lX2hk cik7DQo+ID4+ID4gKw0KPiA+PiA+ICsgIGZvciAoaSA9IDA7IGkgPCBoZHJf aW5mby0+YXJyYXlfY291bnQgLSAxOyBpKyspDQo+ID4+ID4gKyAgICB7DQo+ ID4+ID4gKyAgICAgIGFkZF9laF9mcmFtZV9oZHJfdGVybWluYXRvciAoaGRy X2luZm8tPmVudHJpZXNbaV0sDQo+ID4+ID4gKwkJCQkgICBoZHJfaW5mby0+ ZW50cmllc1tpICsgMV0pOw0KPiA+PiA+ICsgICAgfQ0KPiA+PiA+ICsNCj4g Pj4gPiArICAvKiBBZGQgYSBDQU5UVU5XSU5EIHRlcm1pbmF0b3IgYWZ0ZXIg dGhlIGxhc3QgZW50cnkuICAqLyANCj4gPj4gPiArIGFkZF9laF9mcmFtZV9o ZHJfdGVybWluYXRvciAoaGRyX2luZm8tPmVudHJpZXNbaV0sIE5VTEwpOyAg DQo+ID4+ID4gKyByZXR1cm4gVFJVRTsNCj4gPj4NCj4gPj4gVGhpcyByb3V0 aW5lIGlzIGNhbGxlZCBmcm9tIGJvdGggYmZkX2VsZl9nY19zZWN0aW9ucyBh bmQgDQo+ID4+IGJmZF9lbGZfZGlzY2FyZF9pbmZvIGJ1dCBJIHRoaW5rIHlv dSBvbmx5IHdhbnQgaXQgZm9yIGJmZF9lbGZfZGlzY2FyZF9pbmZvLg0KPiA+ PiBTbyBwZXJoYXBzIHRoaXMgc2hvdWxkIGJlIGEgc2VwYXJhdGUgZnVuY3Rp b24uDQo+ID4+DQo+ID4+IEkgd29uZGVyIHdoZXRoZXIgd2UgY291bGQgaW5z dGVhZCBpbnNlcnQgQ0FOVFVOV0lORHMgZWFybGllciAoc2F5IA0KPiA+PiBp biB0aGUgbm9uLWR5bmFtaWMgcGFydCBvZiBzaXplX2R5bmFtaWNfc2VjdGlv bnMpIGJhc2VkIG9uIHRoZSBsaW5rIG9yZGVyLg0KPiA+PiBJLmUuIHJhdGhl ciB0aGFuIGNvbXBhcmluZyB0aGUgc3RhcnQgYW5kIGVuZCBhZGRyZXNzZXMg b2YgdHdvIA0KPiA+PiBzZWN0aW9ucywgd2UgY291bGQganVzdCB3YWxrIHRo ZSBzZWN0aW9ucyBpbiB0aGUgb3JkZXIgdGhhdCB0aGV5J3JlIA0KPiA+PiBn b2luZyB0bw0KPiBiZSBsaW5rZWQuDQo+ID4+DQo+ID4+IEl0IHNvdW5kcyBs aWtlIGRvaW5nIGl0IHRoYXQgd2F5IHdvdWxkIGJlIG1vcmUgZGlyZWN0IGFu ZCBtb3JlIGVmZmljaWVudC4NCj4gPj4gUmV0dXJuaW5nIFRSVUUgaGVyZSBm b3JjZXMgdGhlIGxpbmtlciB0byBtYXAgc2VjdGlvbnMgdHdpY2UuDQo+IA0K PiBOb3RlIHRoYXQgdGhlIGdlbmVyaWMgdmVyc2lvbiBvZiBfYmZkX2VsZl9l bmRfZWhfZnJhbWVfcGFyc2luZyB3YXMgDQo+IHJlbW92ZWQgaW4gdGhlIG1l YW50aW1lLiAgWW91ciBwYXRjaCBhZGRzIGl0IGJhY2ssIGJ1dCBJIGNhbid0 IHNlZSANCj4gd2hlcmUgaXQgZ2V0cyBjYWxsZWQuICBVbmxlc3MgSSdtIG1p c3Npbmcgc29tZXRoaW5nLCB0aGlzIHN1Z2dlc3RzIA0KPiB0aGF0IHRoZSB0 ZXN0cyBkb24ndCBleGVyY2lzZSB0aGlzIGNvZGUgYW5kIHRoYXQgZXh0cmEg dGVzdHMgbWlnaHQgYmUgbmVlZGVkLg0KDQpJJ3ZlIG5vdyBhZGRlZCBsaW5r LXRpbWUgdGVzdHMgYW5kIHRoZSBjYWxsIF9iZmRfZWxmX2VuZF9laF9mcmFt ZV9wYXJzaW5nIGhhcyBiZWVuIHJlc3RvcmVkLg0KPiANCj4gPj4gPiBAQCAt MTI3MSw2ICsxNDY1LDQ1IEBAIF9iZmRfZWxmX2VoX2ZyYW1lX3ByZXNlbnQg KHN0cnVjdA0KPiA+PiBiZmRfbGlua19pbmZvICppbmZvKQ0KPiA+PiA+ICAg IHJldHVybiBGQUxTRTsNCj4gPj4gPiAgfQ0KPiA+PiA+DQo+ID4+ID4gKy8q IFJldHVybiB0cnVlIGlmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSAuZWhfZnJh bWVfZW50cnkgc2VjdGlvbiBpbg0KPiA+PiA+ICsgICBpbnB1dCBmaWxlcy4g ICovDQo+ID4+ID4gK2JmZF9ib29sZWFuDQo+ID4+ID4gK19iZmRfZWxmX2Vo X2ZyYW1lX2VudHJ5X3ByZXNlbnQgKHN0cnVjdCBiZmRfbGlua19pbmZvICpp bmZvKSB7DQo+ID4+ID4gKyAgYXNlY3Rpb24gKm87DQo+ID4+ID4gKyAgYmZk ICphYmZkOw0KPiA+PiA+ICsNCj4gPj4gPiArICBmb3IgKGFiZmQgPSBpbmZv LT5pbnB1dF9iZmRzOyBhYmZkICE9IE5VTEw7IGFiZmQgPSBhYmZkLT5saW5r X25leHQpDQo+ID4+ID4gKyAgICB7DQo+ID4+ID4gKyAgICAgIGZvciAobyA9 IGFiZmQtPnNlY3Rpb25zOyBvOyBvID0gby0+bmV4dCkNCj4gPj4gPiArCXsN Cj4gPj4gPiArCSAgY29uc3QgY2hhciAqbmFtZSA9IGJmZF9nZXRfc2VjdGlv bl9uYW1lIChhYmZkLCBvKTsNCj4gPj4gPiArDQo+ID4+ID4gKwkgIGlmIChz dHJjbXAgKG5hbWUsICIuZWhfZnJhbWVfZW50cnkiKQ0KPiA+PiA+ICsJICAg ICAgJiYgIWJmZF9pc19hYnNfc2VjdGlvbiAoby0+b3V0cHV0X3NlY3Rpb24p KQ0KPiA+PiA+ICsJICAgIHsNCj4gPj4gPiArCSAgICAgIGlmIChzdHJjbXAg KG8tPm91dHB1dF9zZWN0aW9uLT5uYW1lLCAiLmVoX2ZyYW1lX2hkciIpKQ0K PiA+PiA+ICsJCXJldHVybiBUUlVFOw0KPiA+PiA+ICsJICAgICAgZWxzZQ0K PiA+PiA+ICsJCXsNCj4gPj4gPiArCQkgICgqX2JmZF9lcnJvcl9oYW5kbGVy KQ0KPiA+PiA+ICsJCQkoXygiZXJyb3I6IGFuICcuZWhfZnJhbWVfZW50cnkn Ig0KPiA+PiA+ICsJCQkgICAiIGlucHV0IHNlY3Rpb24gdGhhdCBpcyBub3Qg bWFwcGVkIHRvIHRoZSINCj4gPj4gPiArCQkJICAgIiAnLmVoX2ZyYW1lX2hk cicgb3V0cHV0IHNlY3Rpb24gd2FzIHNlZW4iKSk7DQo+ID4+ID4gKwkJICAo Kl9iZmRfZXJyb3JfaGFuZGxlcikNCj4gPj4gPiArCQkJKF8oIm5vdGU6IHRy eSBhZGRpbmcgJyooLmVoX2ZyYW1lX2VudHJ5Ig0KPiA+PiA+ICsJCQkgICAi IC5laF9mcmFtZV9lbnRyeS4qKScgdG8gdGhlICcuZWhfZnJhbWVfaGRyJyIN Cj4gPj4gPiArCQkJICAgIiBvdXRwdXQgc2VjdGlvbiBkZXNjcmlwdGlvbiBp biB0aGUgbGlua2VyIg0KPiA+PiA+ICsJCQkgICAiIHNjcmlwdCIpKTsNCj4g Pj4gPiArCQkgIGJmZF9zZXRfZXJyb3IgKGJmZF9lcnJvcl9pbnZhbGlkX29w ZXJhdGlvbik7DQo+ID4+ID4gKwkJICByZXR1cm4gRkFMU0U7DQo+ID4+ID4g KwkJfQ0KPiA+PiA+ICsJICAgIH0NCj4gPj4gPiArCX0NCj4gPj4gPiArICAg IH0NCj4gPj4gPiArICByZXR1cm4gRkFMU0U7DQo+ID4+DQo+ID4+IFRoZSBj YWxsZXIgY2FuJ3QgdGVsbCAiRkFMU0UgYmVjYXVzZSBhbiBlcnJvciB3YXMg cmVwb3J0ZWQiIGZyb20gDQo+ID4+ICJGQUxTRSBiZWNhdXNlIHRoZXJlIHdh cyBubyAuZWhfZnJhbWVfZW50cnkiLiAgV2Ugc2hvdWxkIHNlcGFyYXRlIA0K PiA+PiBvdXQgdGhlIHR3byBjYXNlcyBhbmQgcHJvcGFnYXRlIGVycm9yIHJl dHVybnMgdXAuDQo+IA0KPiBJdCBsb29rcyBsaWtlIHlvdSBkZWFsdCB3aXRo IHRoaXMgYnkgcmVtb3ZpbmcgdGhlIGVycm9yIGNoZWNraW5nLg0KPiBJIHRo aW5rIHdlIHN0aWxsIHdhbnQgaXQsIGJ1dCBpdCBzaG91bGQgYmUgZG9uZSBz ZXBhcmF0ZWx5IGFuZCBpbiBhIA0KPiBjb250ZXh0IHdoZXJlIHRoZSBlcnJv ciBjYW4gYmUgcHJvcGFnYXRlZC4NCg0KSSdtIGRlZmVycmluZyB0aGlzIGZv ciBub3cuDQo+IA0KPiA+PiA+IEBAIC0xMzg3LDYgKzE2MzYsNzEgQEAgX2Jm ZF9lbGZfZWhfZnJhbWVfc2VjdGlvbl9vZmZzZXQgKGJmZA0KPiA+PiAqb3V0 cHV0X2JmZCBBVFRSSUJVVEVfVU5VU0VELA0KPiA+PiA+ICAJICArIGV4dHJh X2F1Z21lbnRhdGlvbl9kYXRhX2J5dGVzIChzZWNfaW5mby0+ZW50cnkgKyBt aWQpKTsgIH0NCj4gPj4gPg0KPiA+PiA+ICsvKiBXcml0ZSBvdXQgLmVoX2Zy YW1lX2VudHJ5IHNlY3Rpb24uICBBZGQgQ0FOVFVOV0lORCB0ZXJtaW5hdG9y IA0KPiA+PiA+ICtpZg0KPiA+PiBuZWVkZWQuDQo+ID4+ID4gKyAgIEFsc28g Y2hlY2sgdGhhdCB0aGUgY29udGVudHMgbG9vayBzYW5lLiAgKi8NCj4gPj4g PiArDQo+ID4+ID4gK2JmZF9ib29sZWFuDQo+ID4+ID4gK19iZmRfZWxmX3dy aXRlX3NlY3Rpb25fZWhfZnJhbWVfZW50cnkgKGJmZCAqYWJmZCwNCj4gPj4g PiArCQkJCSAgICAgICBhc2VjdGlvbiAqc2VjLA0KPiA+PiA+ICsJCQkJICAg ICAgIGJmZF9ieXRlICpjb250ZW50cykNCj4gPj4NCj4gPj4gRm9ybWF0dGlu ZzogZmlyc3QgdHdvIGFyZ3VtZW50cyBmaXQgb24gYSBsaW5lLg0KPiANCj4g U3RpbGwgcHJlc2VudC4NCkZpeGVkLg0KPiANCj4gPj4gPiArICB0ZXh0X3Nl YyA9IChhc2VjdGlvbiAqKSBlbGZfc2VjdGlvbl9kYXRhIChzZWMpLT5zZWNf aW5mbzsNCj4gPj4gPiArICBhZGRyID0gdGV4dF9zZWMtPm91dHB1dF9zZWN0 aW9uLT52bWEgKyB0ZXh0X3NlYy0+b3V0cHV0X29mZnNldA0KPiA+PiA+ICsJ ICsgdGV4dF9zZWMtPnNpemU7DQo+ID4+ID4gKyAgYWRkciAmPSB+MTsNCj4g Pj4gPiArICBhZGRyIC09IChzZWMtPm91dHB1dF9zZWN0aW9uLT52bWEgKyBz ZWMtPm91dHB1dF9vZmZzZXQgKw0KPiA+PiA+ICtzZWMtPnJhd3NpemUpOw0K PiA+PiA+ICsgIEJGRF9BU1NFUlQgKChhZGRyICYgMSkgPT0gMCk7DQo+ID4+ DQo+ID4+IEl0IGxvb2tzIGxpa2UgdGhpcyBjb3VsZCB0cmlnZ2VyIGZvciBv ZGQtc2l6ZWQgaW5wdXQgdGV4dCBzZWN0aW9ucy4NCj4gPj4gSSB0aGluayBp dCBzaG91bGQgYmUgYW4gZXJyb3IgaW5zdGVhZCBvZiBhbiBhc3NlcnQuDQo+ IA0KPiBJIHNlZSB5b3UndmUgZG9uZSB0aGlzIHdpdGg6DQo+IA0KPiA+ICsg IGlmIChhZGRyICYgMSkNCj4gPiArICAgIHsNCj4gPiArICAgICAgKCpfYmZk X2Vycm9yX2hhbmRsZXIpIChfKCIlQjogJXMgaW52YWxpZCBpbnB1dCBzZWN0 aW9uIHNpemUiKSwNCj4gPiArCQkJICAgICBzZWMtPm93bmVyLCBzZWMtPm5h bWUpOw0KPiA+ICsgICAgICByZXR1cm4gRkFMU0U7DQo+ID4gKyAgICB9DQo+ ID4gKyAgaWYgKGxhc3RfYWRkciA+PSBhZGRyICsgc2VjLT5yYXdzaXplKQ0K PiA+ICsgICAgew0KPiA+ICsgICAgICAoKl9iZmRfZXJyb3JfaGFuZGxlcikg KF8oIiVCOiAlcyBwb2ludHMgcGFzdCBlbmQgb2YgdGV4dCBzZWN0aW9uIiks DQo+ID4gKwkJCSAgICAgc2VjLT5vd25lciwgc2VjLT5uYW1lKTsNCj4gPiAr ICAgICAgcmV0dXJuIEZBTFNFOw0KPiA+ICsgICAgfQ0KPiANCj4gYnV0IEkg dGhpbmsgd2Ugd2FudCAiYmZkX3NldF9lcnJvciAoYmZkX2Vycm9yX2JhZF92 YWx1ZSk7IiB0b28uDQoNCkRvbmUuDQo+IA0KPiA+PiA+ICsgIGlmIChsYXN0 X2FkZHIgPj0gYWRkciArIHNlYy0+cmF3c2l6ZSkNCj4gPj4gPiArICAgIHsN Cj4gPj4gPiArICAgICAgKCpfYmZkX2Vycm9yX2hhbmRsZXIpIChfKCIlQjog JXMgcG9pbnRzIHBhc3QgZW5kIG9mIHRleHQgc2VjdGlvbiIpLA0KPiA+PiA+ ICsJCQkgICAgIHNlYy0+b3duZXIsIHNlYy0+bmFtZSk7DQo+ID4+ID4gKyAg ICAgIHJldHVybiBGQUxTRTsNCj4gPj4gPiArICAgIH0NCj4gPj4gPiArDQo+ ID4+ID4gKyAgaWYgKHNlYy0+c2l6ZSA9PSBzZWMtPnJhd3NpemUpDQo+ID4+ ID4gKyAgICByZXR1cm4gVFJVRTsNCj4gPj4gPiArDQo+ID4+ID4gKyAgQkZE X0FTU0VSVCAoc2VjLT5zaXplID09IHNlYy0+cmF3c2l6ZSArIDgpOyAgQkZE X0FTU0VSVCAoKGFkZHIgDQo+ID4+ID4gKyAmDQo+ID4+ID4gKyAxKSA9PSAw KTsNCj4gPj4gPiArICBiZmRfcHV0XzMyIChhYmZkLCBhZGRyLCBjYW50dW53 aW5kKTsNCj4gPj4gPiArICBiZmRfcHV0XzMyIChhYmZkLCAweDAxNWQ1ZDAx LCBjYW50dW53aW5kICsgNCk7ICByZXR1cm4gDQo+ID4+ID4gKyBiZmRfc2V0 X3NlY3Rpb25fY29udGVudHMgKGFiZmQsIHNlYy0+b3V0cHV0X3NlY3Rpb24s DQo+ID4+IGNhbnR1bndpbmQsDQo+ID4+ID4gKwkJCQkgICBzZWMtPm91dHB1 dF9vZmZzZXQgKyBzZWMtPnJhd3NpemUsIDgpOw0KPiA+Pg0KPiA+PiBBUk0g YW5kIGM2eCBzZWVtIHRvIHVzZSAwIHJhdGhlciB0aGFuIDB4NWQgYXMgdGhl ICJubyB1bndpbmQiIA0KPiA+PiBvcGNvZGUsIGlzIHRoYXQgcmlnaHQ/ICBJ ZiBzbywgSSB0aGluayB0aGlzIHNob3VsZCBiZSBhIGhvb2suDQo+IA0KPiBJ dCBkb2Vzbid0IGxvb2sgbGlrZSB5b3UgYWRkcmVzc2VkIHRoaXMgcGFydC4N Cg0KSXQgbG9va2VkIHRvIG1lIGxpa2UgdGhvc2UgcG9ydHMgdXNlZCAxPyAg SW4gYW55IGNhc2UsIEkndmUgYWRkZWQgdGhlIGhvb2ssIGJ1dCBJIGhhdmVu J3QgdXBkYXRlZCB0aGUgYXJtIGFuZCBjNnggcG9ydHMgdG8gdXNlIGl0Lg0K PiANCj4gPj4gVGhlIGRlY2lzaW9uIGFib3V0IHdoZXRoZXIgdG8gaW5zZXJ0 IHRoZSBDQU5UVU5XSU5EIGlzIG1hZGUgZHVyaW5nIA0KPiA+PiBiZmRfZWxm X2Rpc2NhcmRfaW5mbywgYnV0IGFkZHJlc3NlcyBjYW4gY2hhbmdlIGFmdGVy IHRoYXQg4oCcdGhhbmtz4oCdDQo+ID4+IHRvIHJlbGF4YXRpb24uICBTbyB0 aGlzIGNvdWxkIGluIHByaW5jaXBsZSBlbmQgdXAgZW1pdHRpbmcgYSANCj4g Pj4gQ0FOVFVOV0lORCBmb3IgdGhlIHNhbWUgYWRkcmVzcyBhcyB0aGUgZm9s bG93aW5nIHRleHQgc2VjdGlvbi4NCj4gDQo+IEFzIGFib3ZlLCBpdCBsb29r cyBsaWtlIG5vdGhpbmcgZXZlciBjYWxscyANCj4gX2JmZF9lbGZfd3JpdGVf c2VjdGlvbl9laF9mcmFtZV9lbnRyeSBpbiB0aGUgbmV3IHZlcnNpb24gb2Yg dGhlIHBhdGNoLg0KPiBJZiB0aGUgdGVzdHMgZG9uJ3QgcGljayB0aGF0IHVw IHRoZW4gSSB0aGluayB3ZSBuZWVkIHNvbWUgbW9yZSA6LSkNCj4gDQpTb3Jy eSBhYm91dCB0aGlzIG1pc3NpbmcgYml0LiAgTW9yZSB0ZXN0cyBoYXZlIGJl ZW4gYWRkZWQgYW5kIHRoZSBjYWxsIHRvIHRoaXMgZnVuY3Rpb24gaGFzIGJl ZW4gcmVzdG9yZWQuDQoNCj4gPj4gPiBAQCAtMTAwMzksNiArMTAwNDAsMTAg QEAgZWxmX2xpbmtfaW5wdXRfYmZkIChzdHJ1Y3QgDQo+ID4+ID4gZWxmX2Zp bmFsX2xpbmtfaW5mbw0KPiA+PiAqZmxpbmZvLCBiZmQgKmlucHV0X2JmZCkN Cj4gPj4gPiAgCSAgICAgIHJldHVybiBGQUxTRTsNCj4gPj4gPiAgCSAgfQ0K PiA+PiA+ICAJICBicmVhazsNCj4gPj4gPiArCWNhc2UgU0VDX0lORk9fVFlQ RV9FSF9GUkFNRV9FTlRSWToNCj4gPj4gPiArCSAgICBpZiAoISBfYmZkX2Vs Zl93cml0ZV9zZWN0aW9uX2VoX2ZyYW1lX2VudHJ5IChvdXRwdXRfYmZkLCBv LA0KPiA+PiBjb250ZW50cykpDQo+ID4+ID4gKwkgICAgICByZXR1cm4gRkFM U0U7DQo+ID4+ID4gKwkgIGJyZWFrOw0KPiA+Pg0KPiA+PiBFeGNlc3MgaW5k ZW50YXRpb24gb2YgdGhlICJpZiIuDQo+IA0KPiBOb3Qgc3VyZTogd2h5IGlz IHRoaXMgbm8gbG9uZ2VyIGluIHRoZSBwYXRjaD8NClJlc3RvcmVkLg0KPiAN Cj4gPj4gPiBAQCAtMTE4MDcsNiArMTE4MTQsMTMgQEAgX2JmZF9lbGZfZ2Nf bWFyayAoc3RydWN0IGJmZF9saW5rX2luZm8NCj4gKmluZm8sDQo+ID4+ID4g IAl9DQo+ID4+ID4gICAgICB9DQo+ID4+ID4NCj4gPj4gPiArICBlaF9mcmFt ZSA9IGVsZl9zZWN0aW9uX2VoX2ZyYW1lX2VudHJ5IChzZWMpOyAgaWYgKGVo X2ZyYW1lICYmDQo+ID4+ID4gKyAhZWhfZnJhbWUtPmdjX21hcmspDQo+ID4+ ID4gKyAgICB7DQo+ID4+ID4gKyAgICBpZiAoIV9iZmRfZWxmX2djX21hcmsg KGluZm8sIGVoX2ZyYW1lLCBnY19tYXJrX2hvb2spKQ0KPiA+PiA+ICsgICAg ICByZXR1cm4gRkFMU0U7DQo+ID4+ID4gKyAgICB9DQo+ID4+DQo+ID4+IElu IHRoaXMgY29udGV4dCB3ZSBzaG91bGQgYmUgdXNpbmcgInJldCI6DQo+ID4+ DQo+ID4+ICAgZWhfZnJhbWUgPSBlbGZfc2VjdGlvbl9laF9mcmFtZV9lbnRy eSAoc2VjKTsNCj4gPj4gICBpZiAocmV0ICYmIGVoX2ZyYW1lICYmICFlaF9m cmFtZS0+Z2NfbWFyaykNCj4gPj4gICAgIHJldCA9IF9iZmRfZWxmX2djX21h cmsgKGluZm8sIGVoX2ZyYW1lLCBnY19tYXJrX2hvb2spOw0KPiANCj4gWW91 IGNoYW5nZWQgdGhpcyB0bzoNCj4gDQo+ID4gKyAgaWYgKGVoX2ZyYW1lICYm ICFlaF9mcmFtZS0+Z2NfbWFyaykNCj4gPiArICAgIHsNCj4gPiArICAgICAg aWYgKCFfYmZkX2VsZl9nY19tYXJrIChpbmZvLCBlaF9mcmFtZSwgZ2NfbWFy a19ob29rKSkNCj4gPiArCXJldCA9IEZBTFNFOw0KPiA+ICsgICAgfQ0KPiAN Cj4gYnV0IHRoZSBwb2ludCB3YXMgYWxzbyB0aGF0IHdlIGRvbid0IHdhbnQg dG8gdHJ5IGFub3RoZXIgbWFyayBvbmNlICJyZXQiDQo+IGlzIGFscmVhZHkg RkFMU0UuICBUaGUgInJldCAmJiIgcGFydCBvZiB0aGUgY29uZGl0aW9uIHdh cyBpbXBvcnRhbnQuDQpBbm90aGVyIHJlYmFzZSBwcm9ibGVtLiAgTm93IGZp eGVkLg0KPiANCj4gPj4gPiBAQCAtMTIxOTAsMjIgKzEyMjA0LDQyIEBAIGJm ZF9lbGZfZ2Nfc2VjdGlvbnMgKGJmZCAqYWJmZCwgc3RydWN0DQo+ID4+IGJm ZF9saW5rX2luZm8gKmluZm8pDQo+ID4+ID4gICAgYmVkLT5nY19rZWVwIChp bmZvKTsNCj4gPj4gPg0KPiA+PiA+ICAgIC8qIFRyeSB0byBwYXJzZSBlYWNo IGJmZCdzIC5laF9mcmFtZSBzZWN0aW9uLiAgUG9pbnQNCj4gPj4gZWxmX2Vo X2ZyYW1lX3NlY3Rpb24NCj4gPj4gPiAtICAgICBhdCB0aGUgLmVoX2ZyYW1l IHNlY3Rpb24gaWYgd2UgY2FuIG1hcmsgdGhlIEZERXMgaW5kaXZpZHVhbGx5 LiAgKi8NCj4gPj4gPiArICAgICBhdCB0aGUgLmVoX2ZyYW1lIHNlY3Rpb24g aWYgd2UgY2FuIG1hcmsgdGhlIEZERXMgaW5kaXZpZHVhbGx5Lg0KPiA+PiA+ ICsgICAgIEVzdGFibGlzaCBsaW5rcyBmcm9tIHRleHQgc2VjdGlvbnMgdG8g dGhlaXIgY29ycmVzcG9uZGluZw0KPiA+PiA+ICsgICAgIC5laF9mcmFtZV9l bnRyeSBzZWN0aW9ucy4gICovDQo+ID4+ID4gICAgX2JmZF9lbGZfYmVnaW5f ZWhfZnJhbWVfcGFyc2luZyAoaW5mbyk7DQo+ID4+ID4gICAgZm9yIChzdWIg PSBpbmZvLT5pbnB1dF9iZmRzOyBzdWIgIT0gTlVMTDsgc3ViID0gc3ViLT5s aW5rX25leHQpDQo+ID4+ID4gICAgICB7DQo+ID4+ID4gICAgICAgIGFzZWN0 aW9uICpzZWM7DQo+ID4+ID4gICAgICAgIHN0cnVjdCBlbGZfcmVsb2NfY29v a2llIGNvb2tpZTsNCj4gPj4gPg0KPiA+PiA+IC0gICAgICBzZWMgPSBiZmRf Z2V0X3NlY3Rpb25fYnlfbmFtZSAoc3ViLCAiLmVoX2ZyYW1lIik7DQo+ID4+ ID4gLSAgICAgIHdoaWxlIChzZWMgJiYgaW5pdF9yZWxvY19jb29raWVfZm9y X3NlY3Rpb24gKCZjb29raWUsIGluZm8sIHNlYykpDQo+ID4+ID4gKyAgICAg IGlmICghaW5pdF9yZWxvY19jb29raWUgKCZjb29raWUsIGluZm8sIHN1Yikp DQo+ID4+ID4gKwlyZXR1cm4gRkFMU0U7DQo+ID4+ID4gKw0KPiA+PiA+ICsg ICAgICBpZiAoaW5mby0+ZWhfZnJhbWVfaGRyIDwgMikNCj4gPj4gPiAgCXsN Cj4gPj4gPiAtCSAgX2JmZF9lbGZfcGFyc2VfZWhfZnJhbWUgKHN1YiwgaW5m bywgc2VjLCAmY29va2llKTsNCj4gPj4gPiAtCSAgaWYgKGVsZl9zZWN0aW9u X2RhdGEgKHNlYyktPnNlY19pbmZvDQo+ID4+ID4gLQkgICAgICAmJiAoc2Vj LT5mbGFncyAmIFNFQ19MSU5LRVJfQ1JFQVRFRCkgPT0gMCkNCj4gPj4gPiAt CSAgICBlbGZfZWhfZnJhbWVfc2VjdGlvbiAoc3ViKSA9IHNlYzsNCj4gPj4g PiAtCSAgZmluaV9yZWxvY19jb29raWVfZm9yX3NlY3Rpb24gKCZjb29raWUs IHNlYyk7DQo+ID4+ID4gLQkgIHNlYyA9IGJmZF9nZXRfbmV4dF9zZWN0aW9u X2J5X25hbWUgKHNlYyk7DQo+ID4+ID4gKwkgIHNlYyA9IGJmZF9nZXRfc2Vj dGlvbl9ieV9uYW1lIChzdWIsICIuZWhfZnJhbWUiKTsNCj4gPj4gPiArCSAg aWYgKHNlYyAmJiBpbml0X3JlbG9jX2Nvb2tpZV9yZWxzICgmY29va2llLCBp bmZvLCBzdWIsIHNlYykpDQo+ID4+ID4gKwkgICAgew0KPiA+PiA+ICsJICAg ICAgX2JmZF9lbGZfcGFyc2VfZWhfZnJhbWUgKHN1YiwgaW5mbywgc2VjLCAm Y29va2llKTsNCj4gPj4gPiArCSAgICAgIGlmIChlbGZfc2VjdGlvbl9kYXRh IChzZWMpLT5zZWNfaW5mbw0KPiA+PiA+ICsJCSAgJiYgKHNlYy0+ZmxhZ3Mg JiBTRUNfTElOS0VSX0NSRUFURUQpID09IDApDQo+ID4+ID4gKwkJZWxmX2Vo X2ZyYW1lX3NlY3Rpb24gKHN1YikgPSBzZWM7DQo+ID4+ID4gKwkgICAgICBm aW5pX3JlbG9jX2Nvb2tpZV9mb3Jfc2VjdGlvbiAoJmNvb2tpZSwgc2VjKTsN Cj4gPj4gPiArCSAgICB9DQo+ID4+ID4gKwl9DQo+ID4+ID4gKyAgICAgIGVs c2UNCj4gPj4gPiArCXsNCj4gPj4gPiArCSAgZm9yIChzZWMgPSBzdWItPnNl Y3Rpb25zOyBzZWM7IHNlYyA9IHNlYy0+bmV4dCkNCj4gPj4gPiArCSAgICB7 DQo+ID4+ID4gKwkgICAgICBpZiAoQ09OU1RfU1RSTkVRIChiZmRfc2VjdGlv bl9uYW1lIChzdWIsIHNlYyksDQo+ID4+ICIuZWhfZnJhbWVfZW50cnkiKQ0K PiA+PiA+ICsJCSAgJiYgaW5pdF9yZWxvY19jb29raWVfcmVscyAoJmNvb2tp ZSwgaW5mbywgc3ViLCBzZWMpKQ0KPiA+PiA+ICsJCXsNCj4gPj4gPiArCQkg IF9iZmRfZWxmX3BhcnNlX2VoX2ZyYW1lX2VudHJ5IChzdWIsIGluZm8sIHNl YywgJmNvb2tpZSwNCj4gPj4gPiArCQkJCQkJIEZBTFNFKTsNCj4gPj4gPiAr CQkgIGZpbmlfcmVsb2NfY29va2llX2Zvcl9zZWN0aW9uICgmY29va2llLCBz ZWMpOw0KPiA+PiA+ICsJCX0NCj4gPj4gPiArCSAgICB9DQo+ID4+DQo+ID4+ IFRoaXMgY2hhbmdlcyB0aGUgaW5mby0+ZWhfZnJhbWVfaGRyICE9IDIgY2Fz ZSB0byBvbmx5IGhhbmRsZSB0aGUgDQo+ID4+IGZpcnN0IC5laF9mcmFtZSBz ZWN0aW9uLiAgKCJ3aGlsZSIgLT4gImlmIikuDQo+ID4+DQo+ID4+IEFsc28s IHRoZSBpbml0L2ZpbmlfcmVsb2NfY29va2llKiBjYWxscyBkb24ndCBtYXRj aCB1cC4gIEkgYXNzdW1lIA0KPiA+PiB0aGUNCj4gPiBpZGVhIGlzIHRvDQo+ ID4+IGF2b2lkIGV4Y2Vzc2l2ZSBhbGxvY2F0aW9uIGFuZCBmcmVlaW5nIG9m IHRoZSBsb2NzeW1zLCBidXQgaW4gdGhhdCANCj4gPj4gY2FzZSB5b3Ugc2hv dWxkIHVzZSBmaW5pX3JlbG9jX2Nvb2tpZV9yZWxzIGluc3RlYWQgb2YgDQo+ ID4+IGZpbmlfcmVsb2NfY29va2llX2Zvcl9zZWN0aW9uIGFuZCBjYWxsIGZp bmlfcmVsb2NfY29va2llIGF0IHRoZSBlbmQuDQo+ID4+IEF0IHRoZSBtb21l bnQgSSB0aGluayB0aGlzIGxlYWtzIG1lbW9yeSBpZiB0aGVyZSBhcmUgbm8g RUggc2VjdGlvbnMuDQo+ID4+DQo+ID4+IEkgZG9uJ3Qga25vdyBlaXRoZXIg d2F5IHdoZXRoZXIgc3BsaXR0aW5nIHRoZSANCj4gPj4gaW5pdF9yZWxvY19j b29raWVfZm9yX3NlY3Rpb24gY2FsbCB1cCBpcyBhIHdpbiBvciBub3QgZm9y IC5laF9mcmFtZS4NCj4gPj4gSXQgd2lsbCBiZSBhIHdpbiBpZiB0aGVyZSBh cmUNCj4gPiBtdWx0aXBsZSBFSA0KPiA+PiBzZWN0aW9ucyBidXQgYSBsb3Nz IGlmIHRoZXJlIGFyZSBub25lLCBzaW5jZSB3ZSB0aGVuIGluaXRpYWxpc2Ug YW5kDQo+ID4gZnJlZSB0aGUgYmZkLQ0KPiA+PiBsZXZlbCBpbmZvcm1hdGlv biB1bm5lY2Vzc2FyaWx5LiAgU28gSSB0aGluayBpdCBtaWdodCBtYWtlIHNl bnNlIHRvIA0KPiA+PiBrZWVwIHRoZSAuZWhfZnJhbWUgY29kZSBhcyBpdCBp cyBub3cgYW5kIHJlc3RyaWN0IHRoZSAqX3JlbHMgdG8gdGhlIA0KPiA+PiBu ZXcNCj4gY29kZS4NCj4gDQo+IFlvdSBjaGFuZ2VkIHRoaXMgdG86DQo+IA0K PiA+IEBAIC0xMjE3MSw3ICsxMjI1Niw5IEBAIGJmZF9lbGZfZ2Nfc2VjdGlv bnMgKGJmZCAqYWJmZCwgc3RydWN0IA0KPiA+IGJmZF9saW5rX2luZm8gKmlu Zm8pDQo+ID4NCj4gPiAgICAvKiBUcnkgdG8gcGFyc2UgZWFjaCBiZmQncyAu ZWhfZnJhbWUgc2VjdGlvbi4gIFBvaW50DQo+IGVsZl9laF9mcmFtZV9zZWN0 aW9uDQo+ID4gICAgICAgYXQgdGhlIC5laF9mcmFtZSBzZWN0aW9uIGlmIHdl IGNhbiBtYXJrIHRoZSBGREVzIGluZGl2aWR1YWxseS4NCj4gPiAqLw0KPiA+ IC0gIGZvciAoc3ViID0gaW5mby0+aW5wdXRfYmZkczsgc3ViICE9IE5VTEw7 IHN1YiA9IHN1Yi0+bGluay5uZXh0KQ0KPiA+ICsgIGZvciAoc3ViID0gaW5m by0+aW5wdXRfYmZkczsNCj4gPiArICAgICAgIGluZm8tPmVoX2ZyYW1lX2hk cl90eXBlICE9IENPTVBBQ1RfRUhfSERSICYmIHN1YiAhPSBOVUxMOw0KPiA+ ICsgICAgICAgc3ViID0gc3ViLT5saW5rLm5leHQpDQo+ID4gICAgICB7DQo+ ID4gICAgICAgIGFzZWN0aW9uICpzZWM7DQo+ID4gICAgICAgIHN0cnVjdCBl bGZfcmVsb2NfY29va2llIGNvb2tpZTsNCj4gDQo+IHdoZXJlIGluZm8tPmVo X2ZyYW1lX2hkcl90eXBlIGlzIGFuIGludmFyaWFudC4gIEkgYXNzdW1lIHRo aXMgd2FzIGp1c3QgDQo+IHRvIGF2b2lkIHJlZm9ybWF0dGluZyB0aGUgYmxv Y2ssIGJ1dCBwbGVhc2UgdXNlOg0KPiANCj4gICBpZiAoaW5mby0+ZWhfZnJh bWVfaGRyX3R5cGUgIT0gQ09NUEFDVF9FSF9IRFIpDQo+ICAgICBmb3IgKC4u LikNCj4gDQo+IGluc3RlYWQuICBGb3J0dW5hdGVseSB0aGUgYmxvY2sncyBu b3QgdGhhdCBiaWcuIDotKQ0KDQpEb25lLg0KPiANCj4gPj4gPiBkaWZmIC0t Z2l0IGEvZ2FzL2NvbmZpZy90Yy1taXBzLmggYi9nYXMvY29uZmlnL3RjLW1p cHMuaCBpbmRleA0KPiA+PiA+IGM3ZWFhMDQuLmEzMDAwNjIgMTAwNjQ0DQo+ ID4+ID4gLS0tIGEvZ2FzL2NvbmZpZy90Yy1taXBzLmgNCj4gPj4gPiArKysg Yi9nYXMvY29uZmlnL3RjLW1pcHMuaA0KPiA+PiA+IEBAIC0xNzcsNyArMTc3 LDkgQEAgZXh0ZXJuIGVudW0gZHdhcmYyX2Zvcm1hdA0KPiBtaXBzX2R3YXJm Ml9mb3JtYXQNCj4gPj4gPiAoYXNlY3Rpb24gKik7DQo+ID4+ID4NCj4gPj4g PiAgZXh0ZXJuIGludCBtaXBzX2R3YXJmMl9hZGRyX3NpemUgKHZvaWQpOyAg I2RlZmluZQ0KPiA+PiA+IERXQVJGMl9BRERSX1NJWkUoYmZkKSBtaXBzX2R3 YXJmMl9hZGRyX3NpemUgKCkgLSNkZWZpbmUgDQo+ID4+ID4gRFdBUkYyX0ZE RV9SRUxPQ19TSVpFIG1pcHNfZHdhcmYyX2FkZHJfc2l6ZSAoKQ0KPiA+PiA+ ICsjZGVmaW5lIERXQVJGMl9GREVfUkVMT0NfU0laRSAoY29tcGFjdF9laCA/ IDQgOg0KPiA+PiBtaXBzX2R3YXJmMl9hZGRyX3NpemUNCj4gPj4gPiArKCkp ICNkZWZpbmUgRFdBUkYyX0ZERV9SRUxPQ19FTkNPRElORyhlbmMpIFwNCj4g Pj4gPiArICAoZW5jIHwgKGNvbXBhY3RfZWggPyBEV19FSF9QRV9wY3JlbCA6 IDApKQ0KPiA+Pg0KPiA+PiBXaGF0IGNhc2UgaXMgdGhpcyBoYW5kbGluZz8g IFBsZWFzZSBleHBsYWluIHRoaXMgYSBiaXQgbW9yZS4NCj4gDQo+IERvZXNu J3QgbG9vayBsaWtlIHlvdSd2ZSBhZGRyZXNzZWQgdGhpcyBiaXQuDQoNCkRl ZmVycmluZyBmb3Igbm93Lg0KPiANCj4gPj4gPiBAQCAtNDU2Niw2ICs0NTg2 LDIyIEBAIGFyZ3VtZW50IGlzIG5vdCBwcmVzZW50LCBvdGhlcndpc2Ugc2Vj b25kIA0KPiA+PiA+IGFyZ3VtZW50IHNob3VsZCBiZSBhIGNvbnN0YW50ICBv ciBhIHN5bWJvbCBuYW1lLiAgVGhlIGRlZmF1bHQgDQo+ID4+ID4gYWZ0ZXIg QGNvZGV7LmNmaV9zdGFydHByb2N9IGlzIEBjb2Rley5jZmlfbHNkYSAweGZm fSwgIG5vIExTREEuDQo+ID4+ID4NCj4gPj4gPiArQHNlY3Rpb24gQGNvZGV7 LmNmaV9pbmxpbmVfbHNkYX0gW0B2YXJ7YWxpZ259XSANCj4gPj4gPiArQGNv ZGV7LmNmaV9pbmxpbmVfbHNkYX0gbWFya3MgdGhlIHN0YXJ0IG9mIGEgTFNE QSBkYXRhIHNlY3Rpb24gDQo+ID4+ID4gK2FuZCBzd2l0Y2hlcyB0byB0aGUg Y29ycmVzcG9uZGluZyBAY29kZXsuZ251LmV4dGFifSBzZWN0aW9uLg0KPiA+ PiA+ICtNdXN0IGJlIHByZWNlZGVkIGJ5IGEgQ0ZJIGJsb2NrIGNvbnRhaW5p bmcgYSBAY29kZXsuY2ZpX2xzZGF9DQo+IGRpcmVjdGl2ZS4NCj4gPj4gPiAr T25seSB2YWxpZCB3aGVuIGdlbmVyYXRpbmcgY29tcGFjdCBFSCBmcmFtZXMg KGkuZS4NCj4gPj4gPiArd2l0aCBAY29kZXsuY2ZpX3NlY3Rpb25zIGVoX2Zy YW1lX2VudHJ5fS4NCj4gPj4NCj4gPj4gTWlzc2luZyAiKSIuDQo+IA0KPiBB cyBhYm92ZSwgdGhpcyBwYXJ0IG9mIHRoZSBkb2MgaXMgbm8gbG9uZ2VyIHRo ZXJlLg0KDQpSZXN0b3JlZC4NCj4gDQo+ID4+ID4gQEAgLTQ2NDMsNiArNDY3 OSwyMCBAQCBtYXJrIGEgY29kZSBzZWdtZW50IHRoYXQgaGFzIG9ubHkgb25l DQo+IHJldHVybg0KPiA+PiA+IGFkZHJlc3Mgd2hpY2ggaXMgcmVhY2hlZCAg YnkgYSBkaXJlY3QgYnJhbmNoIGFuZCBubyBjb3B5IG9mIHRoZSANCj4gPj4g PiByZXR1cm4gYWRkcmVzcyBleGlzdHMgaW4gbWVtb3J5ICBvciBhbm90aGVy IHJlZ2lzdGVyLg0KPiA+PiA+DQo+ID4+ID4gK0BzZWN0aW9uIEBjb2Rley5j ZmlfZXBpbG9ndWVfYmVnaW59IEEgcHNldWRvLW9wZXJhdGlvbiB3aGljaA0K PiBtYXJrcw0KPiA+PiA+ICt0aGUgYmVnaW5uaW5nIG9mIHRoZSBlcGlsb2d1 ZSBpbiBhIGdpdmVuIGZ1bmN0aW9uLiAgVGhpcyBpcyANCj4gPj4gPiArY3Vy cmVudGx5IHVzZWQgYnkgdGhlIGNvbXBhY3QgdW53aW5kLXRhYmxlIGltcGxl bWVudGF0aW9uIChmb3IgDQo+ID4+ID4gK2V4Y2VwdGlvbiBoYW5kbGluZyks IHdoaWNoIGFzc3VtZXMgYSBzaW5nbGUgcmVnaXN0ZXIgc3RhdGUgZm9yIA0K PiA+PiA+ICt1bndpbmRpbmcgdGhyb3VnaG91dCB0aGUgYm9keSBvZiBhIGZ1 bmN0aW9uLiAgVGhlIGZ1bmN0aW9uIGlzIA0KPiA+PiA+ICtzY2FubmVkLCBh bmQgQ0ZJIGRpcmVjdGl2ZXMgYXJlIHJld3JpdHRlbiBpbiBhIGNvbXBhY3Qg Zm9ybS4NCj4gPj4gPiArSG93ZXZlciwgcmVjZW50IHZlcnNpb25zIG9mIEdD QyBlbWl0IHVud2luZCBpbmZvcm1hdGlvbiBmb3IgDQo+ID4+ID4gK2Z1bmN0 aW9uIGVwaWxvZ3Vlcywgd2hpY2ggc2hvdWxkIG5vdCBiZSByZXByZXNlbnRl ZCBpbiB0aGlzIA0KPiA+PiA+ICtjb21wYWN0DQo+ID4+ID4gK2Zvcm06IGhl bmNlLCBhbnkgQ0ZJIGRpcmVjdGl2ZXMgd2hpY2ggb2NjdXIgaW4gYSBmdW5j dGlvbiBhZnRlciANCj4gPj4gPiArQGNvZGV7LmNmaV9lcGlsb2d1ZV9lbmR9 IGFyZSBub3QgcHJvY2Vzc2VkLg0KPiA+PiA+ICsNCj4gPj4gPiArVGhpcyBv cGVyYXRpb24gb25seSBhZmZlY3RzIHRoZSBpbnRlcm5hbHMgb2YgdGhlIGFz c2VtYmxlciwgYW5kIA0KPiA+PiA+ICtpcyBub3QgcmVwcmVzZW50ZWQgaW4g dGhlIGJpbmFyeSBvdXRwdXQuDQo+ID4+DQo+ID4+IERvbid0IHJlYWxseSBm b2xsb3cgdGhpcywgc29ycnkuICBDYW4geW91IGdpdmUgYW4gZXhhbXBsZSwg b3IgDQo+ID4+IGJldHRlciB5ZXQsIGEgdGVzdGNhc2U/DQo+IA0KPiBIYXMg LmNmaV9lcGlsb2d1ZV9iZWdpbiBiZWVuIGRyb3BwZWQ/DQoNClllcy4NCj4g DQo+ID4+DQo+ID4+ID4gQEAgLTE2MSw2ICsyNzgsOSBAQCBhbGxvY19kZWJ1 Z3NlZ19pdGVtIChzZWdUIHNlZywgaW50IHN1YnNlZywgDQo+ID4+ID4gY2hh cg0KPiA+PiA+ICpuYW1lKSAgc3RhdGljIHNlZ1QgIGlzX25vd19saW5rb25j ZV9zZWdtZW50ICh2b2lkKSAgew0KPiA+PiA+ICsgIGlmIChjb21wYWN0X2Vo KQ0KPiA+PiA+ICsgICAgcmV0dXJuIG5vd19zZWc7DQo+ID4+ID4gKw0KPiA+ Pg0KPiA+PiBQbGVhc2UgYWRkIGEgY29tbWVudCBleHBsYWluaW5nIHdoeSB0 aGlzIGlzIGNvcnJlY3QuDQo+IA0KPiBUaGUgaHVuayBmb3IgdGhpcyBpczoN Cj4gDQo+ID4gKyAgLyogV2UgdHJhY2sgdGhlIGN1cnJlbnQgc2VnbWVudCBp biB0aGUgY2ZpX2luc25fZGF0YSBzdHJ1Y3QgYW5kDQo+ID4gKyAgICAgdGhl IGNmaV9pbnNuX2RhdGEgc3RydWN0IGZvciBDb21wYWN0IEVILiAgKi8gIGlm IChjb21wYWN0X2VoKQ0KPiA+ICsgICAgcmV0dXJuIG5vd19zZWc7DQo+IA0K PiBidXQgdGhlIGNvbW1lbnQgcmVwZWF0cyAidGhlIGNmaV9pbnNuX2RhdGEg c3RydWN0Ii4gIFRCSCBJJ20gc3RpbGwgbm90IA0KPiBzdXJlIHdoeS93aGV0 aGVyIHRoaXMgaXMgY29ycmVjdCwgYnV0IGxldCdzIHNvcnQgdGhlIG90aGVy IHRoaW5ncyBvdXQgZmlyc3QuDQoNCk9rYXkuDQo+IA0KPiA+PiA+IC0vKiBF bWl0IGEgc2luZ2xlIGJ5dGUgaW50byB0aGUgY3VycmVudCBzZWdtZW50LiAg Ki8NCj4gPj4gPiAtDQo+ID4+ID4gLXN0YXRpYyBpbmxpbmUgdm9pZA0KPiA+ PiA+IC1vdXRfb25lIChpbnQgYnl0ZSkNCj4gPj4gPiArc3RhdGljIHNlZ1QN Cj4gPj4gPiArZ2V0X2NmaV9zZWcgKHNlZ1QgY3NlZywgY29uc3QgY2hhciAq YmFzZSwgZmxhZ3dvcmQgZmxhZ3MsIGludA0KPiA+PiA+ICthbGlnbikNCj4g Pj4gPiAgew0KPiA+PiA+IC0gIEZSQUdfQVBQRU5EXzFfQ0hBUiAoYnl0ZSk7 DQo+ID4+ID4gKyAgaWYgKFNVUFBPUlRfRlJBTUVfTElOS09OQ0UgfHwgKChm bGFncyAmIFNFQ19ERUJVR0dJTkcpID09IDANCj4gJiYNCj4gPj4gY29tcGFj dF9laCkpDQo+ID4+ID4gKyAgICB7DQo+ID4+DQo+ID4+IFBsZWFzZSBhZGQg YSBjb21tZW50IGhlcmUgdG9vIHRvIGV4cGxhaW4gdGhlIFNFQ19ERUJVR0dJ TkcgdGVzdC4NCj4gDQo+IEl0IGRvZXNuJ3QgbG9vayBsaWtlIHlvdSBhZGRy ZXNzZWQgdGhpcyBiaXQuDQo+IA0KPiA+PiA+ICtzdGF0aWMgdm9pZA0KPiA+ PiA+ICtvdXRwdXRfY29tcGFjdF91bndpbmRfZGF0YSAoc3RydWN0IGZkZV9l bnRyeSAqZmRlLCBpbnQgYWxpZ24pDQo+ID4+DQo+ID4+IFByb2JhYmx5IHdv cnRoIGEgY29tbWVudCBoZXJlLCBzaW5jZSBpdCB3YXNuJ3Qgb2J2aW91cyB0 byBtZSB0aGUgDQo+ID4+ICJhbGlnbiIgaXMgdGhlIGFsaWdubWVudCBvZiB0 aGUgZW5kIG9mIHRoZSBkYXRhIHJhdGhlciB0aGFuIHRoZSBzdGFydC4NCj4g DQo+IEkgZG9uJ3QgdGhpbmsgeW91IGFkZHJlc3NlZCB0aGlzIGJpdC4gIChJ biBjYXNlIGl0IHdhc24ndCBjbGVhciwgSSB3YXMgDQo+IHN1Z2dlc3Rpbmcg YWRkaW5nIGEgZnVuY3Rpb24gY29tbWVudCB0aGF0IHNheXMgd2hhdCB0aGUg ZnVuY3Rpb24gZG9lcyANCj4gYW5kIHdoYXQgaXRzIGFyZ3VtZW50cyBhcmUs IGV0Yy4pDQoNCkRvbmUuDQo+IA0KPiA+PiA+ICsJICBtZF9udW1iZXJfdG9f Y2hhcnMgKHAsIDAsIDQpOw0KPiA+PiA+ICsJICBmaXhfbmV3IChmcmFnX25v dywgcCAtIGZyYWdfbm93LT5mcl9saXRlcmFsLCA0LCBleHAuWF9hZGRfc3lt Ym9sLA0KPiA+PiA+ICsJCSAgIGV4cC5YX2FkZF9udW1iZXIsIGhvd3RvLT5w Y19yZWxhdGl2ZSwgY29kZSk7DQo+ID4+DQo+ID4+IFdoYXQncyB0aGUgc2ln bmlmaWNhbmNlIG9mIGV4cC5YX2FkZF9udW1iZXIgaGVyZT8gIElmIGl0IHdh cyANCj4gPj4gc3VwcG9zZWQgdG8gYmUgaW5pdGlhbGlzZWQgdG8gMCBhYm92 ZSB0aGVuIEkgdGhpbmsgaXQgd291bGQgYmUgDQo+ID4+IGVhc2llciB0byBs ZWF2ZSB0aGUNCj4gImV4cCINCj4gPj4gc3R1ZmYgYWxvbmUgYW5kIGp1c3Qg dXNlIGZkZS0+c3RhcnRfYWRkcmVzcyBhbmQgMCBkaXJlY3RseSBpbiB0aGlz DQo+ID4gZml4X25ldyBjYWxsLg0KPiA+PiBDZXJ0YWlubHkuLi4NCj4gPj4N Cj4gPj4gPiAgICBlbHNlDQo+ID4+ID4gICAgICB7DQo+ID4+ID4gLSAgICAg IGV4cC5YX29wID0gT19zeW1ib2w7DQo+ID4+ID4gLSAgICAgIGV4cC5YX2Fk ZF9zeW1ib2wgPSBmZGUtPnN0YXJ0X2FkZHJlc3M7DQo+ID4+ID4gICAgICAg IGV4cC5YX2FkZF9udW1iZXIgPSAwOw0KPiA+PiA+ICAgICAgICBhZGRyX3Np emUgPSBEV0FSRjJfQUREUl9TSVpFIChzdGRvdXRwdXQpOw0KPiA+PiA+ICAg ICAgICBlbWl0X2V4cHIgKCZleHAsIGFkZHJfc2l6ZSk7DQo+ID4+DQo+ID4+ IC4uLnNlcGFyYXRpbmcgdGhlIGFkZF9zeW1ib2wgYW5kIGFkZF9udW1iZXIg ZmVlbHMgb2RkLg0KPiANCj4gVGhpcyBpcyBub3c6DQo+IA0KPiA+IEBAIC0x NTc1LDI5ICsxODgxLDQzIEBAIG91dHB1dF9mZGUgKHN0cnVjdCBmZGVfZW50 cnkgKmZkZSwgc3RydWN0DQo+IGNpZV9lbnRyeSAqY2llLA0KPiA+ICAgICAg ICBUQ19EV0FSRjJfRU1JVF9PRkZTRVQgKGNpZS0+c3RhcnRfYWRkcmVzcywg b2Zmc2V0X3NpemUpOw0KPiA+ICAgICAgfQ0KPiA+DQo+ID4gKyAgZXhwLlhf b3AgPSBPX3N5bWJvbDsNCj4gPiArICBleHAuWF9hZGRfc3ltYm9sID0gZmRl LT5zdGFydF9hZGRyZXNzOw0KPiANCj4gKEEpDQo+IA0KPiA+ICAgIGlmIChl aF9mcmFtZSkNCj4gPiAgICAgIHsNCj4gPiAtICAgICAgZXhwLlhfb3AgPSBP X3N1YnRyYWN0Ow0KPiA+IC0gICAgICBleHAuWF9hZGRfbnVtYmVyID0gMDsN Cj4gPiArICAgICAgYmZkX3JlbG9jX2NvZGVfcmVhbF90eXBlIGNvZGUNCj4g PiArCT0gdGNfY2ZpX3JlbG9jX2Zvcl9lbmNvZGluZyAoY2llLT5mZGVfZW5j b2RpbmcpOw0KPiA+ICsgICAgICBpZiAoY29kZSAhPSAgQkZEX1JFTE9DX05P TkUpDQo+ID4gKwl7DQo+ID4gKwkgIHJlbG9jX2hvd3RvX3R5cGUgKmhvd3Rv ID0gYmZkX3JlbG9jX3R5cGVfbG9va3VwIChzdGRvdXRwdXQsDQo+IGNvZGUp Ow0KPiA+ICsJICBjaGFyICpwID0gZnJhZ19tb3JlICg0KTsNCj4gPiArCSAg bWRfbnVtYmVyX3RvX2NoYXJzIChwLCAwLCA0KTsNCj4gPiArCSAgZml4X25l dyAoZnJhZ19ub3csIHAgLSBmcmFnX25vdy0+ZnJfbGl0ZXJhbCwgNCwgZmRl LT5zdGFydF9hZGRyZXNzLA0KPiA+ICsJCSAgIDAsIGhvd3RvLT5wY19yZWxh dGl2ZSwgY29kZSk7DQo+ID4gKwl9DQo+ID4gKyAgICAgIGVsc2UNCj4gPiAr CXsNCj4gPiArCSAgZXhwLlhfb3AgPSBPX3N1YnRyYWN0Ow0KPiA+ICsJICBl eHAuWF9hZGRfbnVtYmVyID0gMDsNCj4gDQo+IChCKQ0KPiANCj4gPiAgI2lm IENGSV9ESUZGX0VYUFJfT0sNCj4gPiAtICAgICAgZXhwLlhfYWRkX3N5bWJv bCA9IGZkZS0+c3RhcnRfYWRkcmVzczsNCj4gPiAtICAgICAgZXhwLlhfb3Bf c3ltYm9sID0gc3ltYm9sX3RlbXBfbmV3X25vdyAoKTsNCj4gPiAtICAgICAg ZW1pdF9leHByICgmZXhwLCBEV0FSRjJfRkRFX1JFTE9DX1NJWkUpOwkvKiBD b2RlIG9mZnNldC4gICovDQo+ID4gKwkgIGV4cC5YX2FkZF9zeW1ib2wgPSBm ZGUtPnN0YXJ0X2FkZHJlc3M7DQo+ID4gKwkgIGV4cC5YX29wX3N5bWJvbCA9 IHN5bWJvbF90ZW1wX25ld19ub3cgKCk7DQo+ID4gKwkgIGVtaXRfZXhwciAo JmV4cCwgRFdBUkYyX0ZERV9SRUxPQ19TSVpFKTsJLyogQ29kZQ0KPiBvZmZz ZXQuICAqLw0KPiA+ICAjZWxzZQ0KPiA+IC0gICAgICBleHAuWF9vcCA9IE9f c3ltYm9sOw0KPiA+IC0gICAgICBleHAuWF9hZGRfc3ltYm9sID0gZmRlLT5z dGFydF9hZGRyZXNzOw0KPiA+IC0jaWZkZWYgdGNfY2ZpX2VtaXRfcGNyZWxf ZXhwcg0KPiA+IC0gICAgICB0Y19jZmlfZW1pdF9wY3JlbF9leHByICgmZXhw LCBEV0FSRjJfRkRFX1JFTE9DX1NJWkUpOwkgLyoNCj4gQ29kZSBvZmZzZXQu ICAqLw0KPiA+ICsJICBleHAuWF9vcCA9IE9fc3ltYm9sOw0KPiA+ICsJICBl eHAuWF9hZGRfc3ltYm9sID0gZmRlLT5zdGFydF9hZGRyZXNzOw0KPiA+ICsN Cj4gPiArI2lmIGRlZmluZWQodGNfY2ZpX2VtaXRfcGNyZWxfZXhwcikNCj4g PiArCSAgdGNfY2ZpX2VtaXRfcGNyZWxfZXhwciAoJmV4cCwgRFdBUkYyX0ZE RV9SRUxPQ19TSVpFKTsJIC8qDQo+IENvZGUgb2Zmc2V0LiAgKi8NCj4gPiAg I2Vsc2UNCj4gPiAtICAgICAgZW1pdF9leHByICgmZXhwLCBEV0FSRjJfRkRF X1JFTE9DX1NJWkUpOwkvKiBDb2RlIG9mZnNldC4gICovDQo+ID4gKwkgIGVt aXRfZXhwciAoJmV4cCwgRFdBUkYyX0ZERV9SRUxPQ19TSVpFKTsJLyogQ29k ZQ0KPiBvZmZzZXQuICAqLw0KPiA+ICAjZW5kaWYNCj4gPiAgI2VuZGlmDQo+ ID4gKwl9DQo+ID4gICAgICAgIGFkZHJfc2l6ZSA9IERXQVJGMl9GREVfUkVM T0NfU0laRTsNCj4gPiAgICAgIH0NCj4gPiAgICBlbHNlDQo+ID4gICAgICB7 DQo+ID4gLSAgICAgIGV4cC5YX29wID0gT19zeW1ib2w7DQo+ID4gLSAgICAg IGV4cC5YX2FkZF9zeW1ib2wgPSBmZGUtPnN0YXJ0X2FkZHJlc3M7DQo+IA0K PiAoQykNCj4gDQo+ID4gICAgICAgIGV4cC5YX2FkZF9udW1iZXIgPSAwOw0K PiA+ICAgICAgICBhZGRyX3NpemUgPSBEV0FSRjJfQUREUl9TSVpFIChzdGRv dXRwdXQpOw0KPiA+ICAgICAgICBlbWl0X2V4cHIgKCZleHAsIGFkZHJfc2l6 ZSk7DQo+IA0KPiAoQykgaXMgc3RpbGwgaG9pc3RlZCB0byAoQSksIGJ1dCB0 aGUgb25seSB1c2Ugb2YgImV4cCIgaW4gdGhlIA0KPiAiZWhfZnJhbWUiIGFy bSBpcw0KPiAocmlnaHRseSkgYXQgKEIpLCB3aGljaCBvdmVycmlkZXMgd2hh dCAoQSkgZG9lcy4NCj4gUGxlYXNlIGp1c3QgZHJvcCAoQSkgYW5kIGxlYXZl IHRoZSAiZWxzZSIgYXJtIHVubW9kaWZpZWQuDQoNCkRvbmUuDQo+IA0KPiA+ PiA+IEBAIC0xODg4LDcgKzIyMjMsMTcgQEAgY2ZpX2ZpbmlzaCAodm9pZCkN Cj4gPj4gPg0KPiA+PiA+ICAJICBmb3IgKGZkZSA9IGFsbF9mZGVfZGF0YTsg ZmRlIDsgZmRlID0gZmRlLT5uZXh0KQ0KPiA+PiA+ICAJICAgIHsNCj4gPj4g PiAtCSAgICAgIGlmIChTVVBQT1JUX0ZSQU1FX0xJTktPTkNFKQ0KPiA+PiA+ ICsJICAgICAgaWYgKChmZGUtPnNlY3Rpb25zICYgQ0ZJX0VNSVRfZWhfZnJh bWUpID09IDApDQo+ID4+ID4gKwkJY29udGludWU7DQo+ID4+ID4gKw0KPiA+ PiA+ICsjaWYgU1VQUE9SVF9DT01QQUNUX0VIDQo+ID4+ID4gKwkgICAgICBp ZiAoZmRlLT5laF9oZWFkZXJfdHlwZSA9PSBFSF9DT01QQUNUX0hBU19MU0RB KQ0KPiA+PiA+ICsJCWZkZS0+ZWhfaGVhZGVyX3R5cGUgPSBFSF9DT01QQUNU X0xFR0FDWTsNCj4gPj4gPiArDQo+ID4+ID4gKwkgICAgICBpZiAoZmRlLT5l aF9oZWFkZXJfdHlwZSAhPSBFSF9DT01QQUNUX0xFR0FDWSkNCj4gPj4gPiAr CQljb250aW51ZTsNCj4gPj4gPiArI2VuZGlmDQo+ID4+DQo+ID4+IFBsZWFz ZSBhZGQgYSBjb21tZW50IGV4cGxhaW5pbmcgdGhpcy4NCj4gDQo+IEkgZG9u J3QgdGhpbmsgeW91IGFkZHJlc3NlZCB0aGlzLg0KPiANCg0KRG9uZS4NCj4g Pj4gPiBAQCAtMTk1OCw2ICsyMzk0LDkgQEAgY2ZpX2ZpbmlzaCAodm9pZCkN Cj4gPj4gPg0KPiA+PiA+ICAJICBmb3IgKGZkZSA9IGFsbF9mZGVfZGF0YTsg ZmRlIDsgZmRlID0gZmRlLT5uZXh0KQ0KPiA+PiA+ICAJICAgIHsNCj4gPj4g PiArCSAgICAgIGlmICgoZmRlLT5zZWN0aW9ucyAmIENGSV9FTUlUX2RlYnVn X2ZyYW1lKSA9PSAwKQ0KPiA+PiA+ICsJCWNvbnRpbnVlOw0KPiA+PiA+ICsN Cj4gPj4gPiAgCSAgICAgIGlmIChTVVBQT1JUX0ZSQU1FX0xJTktPTkNFKQ0K PiA+PiA+ICAJCXsNCj4gPj4gPiAgCQkgIGlmIChIQU5ETEVEIChmZGUpKQ0K PiA+Pg0KPiA+PiBQbGVhc2UgYWRkIGEgY29tbWVudCBleHBsYWluaW5nIHdo eSB0aGlzIGlzIG5lZWRlZC9jb3JyZWN0Lg0KPiANCj4gU2FtZSBoZXJlLg0K PiANCkRlZmVycmVkLg0K