From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpbg156.qq.com (smtpbg156.qq.com [15.184.82.18]) by sourceware.org (Postfix) with ESMTPS id A603F3858CDB for ; Wed, 24 May 2023 11:53:00 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org A603F3858CDB Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=rivai.ai Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=rivai.ai X-QQ-mid: bizesmtp75t1684929173tp155d2k Received: from TABLET-POE6JQHH ( [115.44.118.116]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 24 May 2023 19:52:52 +0800 (CST) X-QQ-SSF: 01400000000000F0R000000A0000000 X-QQ-FEAT: CR3LFp2JE4lL1GLCr4icpsX7S3tvXwjx3EgT/qmFbtGPBRaOoqC42yhAHEy9I tI/pv7sUQ5AguIkfFmhKSvBXxKXD/ybSNwXeRyBOEO1TKrgGwoK2+/NXfk1bMJ+0FfBdW87 oOCmOsj6C02BRQb9pV0NGRUA2EBUq+/wHoTNCDkcUmyA2Rb6lax4NsJZzqM5GRpgB5i6EQd T3i8cMhPjSUbxtUPRSnh/xcdmphv2bgvqzSZylycnusQnKRubiqarrMnRsRjQV8trRQqfLF K0kzJrGq9BD/vXCLUg8e6wNYkd9pi6AvIi1YUS2V4k8G+GL5bMI0jDxKGWCT0L86FYgjfAg usUBfa5+wexuajNhww6+neBOY2+/KYIIOUFoUWWTo9c9U5AL116BVYNpVFWy+btCdyzVjxs R5VUBzLvA5+Xe/QfNL0DXO2WYF8w+I1H X-QQ-GoodBg: 2 X-BIZMAIL-ID: 3069819216389132348 Date: Wed, 24 May 2023 19:52:51 +0800 From: =?GB2312?B?1tO+09Xc?= To: richard.sandiford Cc: gcc-patches , rguenther Subject: Re: Re: [PATCH V12] VECT: Add decrement IV iteration loop control by variable amount support References: <20230522083814.1647787-1-juzhe.zhong@rivai.ai>, X-Priority: 3 X-GUID: D3C545A8-6A2E-4D9D-9533-4DFD68B51439 X-Has-Attach: no X-Mailer: Foxmail 7.2.23.121[cn] Mime-Version: 1.0 Message-ID: Content-Type: multipart/alternative; boundary="----=_001_NextPart240645175357_=----" X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvrgz:qybglogicsvrgz7a-one-0 X-Spam-Status: No, score=-8.3 required=5.0 tests=BAYES_00,CHARSET_FARAWAY_HEADER,GIT_PATCH_0,HTML_MESSAGE,KAM_DMARC_STATUS,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_PASS,TXREP,T_KAM_HTML_FONT_INVALID,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. ------=_001_NextPart240645175357_=---- Content-Type: text/plain; charset="GB2312" Content-Transfer-Encoding: base64 SGksIFJpY2hhcmQuICBJdCdzIHF1aXRlIGNvbXBsaWNhdGVkIGZvciBtZSBh bmQgSSBhbSBub3Qgc3VyZSB3aGV0aGVyIEkgY2FuIGNhdGNoIHVwIHdpdGgg eW91Lg0KU28gSSB3aWxsIHJhdGhlciBzcGxpdCB0aGUgd29yayBzdGVwIGJ5 IHN0ZXAgdG8gIGltcGxlbWVudCB0aGUgZGVjcmVtZW50IElWDQoNCkZvciB0 aGUgZmlyc3Qgc3RlcCB5b3UgbWVudGlvbmVkOg0KDQo+PiAoMSkgSW4gdmVj dF9zZXRfbG9vcF9jb25kaXRpb25fcGFydGlhbF92ZWN0b3JzLCBmb3IgdGhl IGZpcnN0IGl0ZXJhdGlvbiBvZjoNCg0KID4+ICBGT1JfRUFDSF9WRUNfRUxU ICgqY29udHJvbHMsIGksIHJnYykNCiA+PiAgICBpZiAoIXJnYy0+Y29udHJv bHMuaXNfZW1wdHkgKCkpDQoNCj4+IGNhbGwgdmVjdF9zZXRfbG9vcF9jb250 cm9sc19kaXJlY3RseS4gIFRoYXQgaXM6DQoNCj4+ID4+IC8qIFNlZSB3aGV0 aGVyIHplcm8tYmFzZWQgSVYgd291bGQgZXZlciBnZW5lcmF0ZSBhbGwtZmFs c2UgbWFza3MNCj4+ICAgIG9yIHplcm8gbGVuZ3RoIGJlZm9yZSB3cmFwcGlu ZyBhcm91bmQuICAqLw0KPj4gYm9vbCBtaWdodF93cmFwX3AgPSB2ZWN0X3Jn cm91cF9pdl9taWdodF93cmFwX3AgKGxvb3BfdmluZm8sIHJnYyk7DQo+PiAN Ci8qIFNldCB1cCBhbGwgY29udHJvbHMgZm9yIHRoaXMgZ3JvdXAuICAqLw0K Pj4gdGVzdF9jdHJsID0gdmVjdF9zZXRfbG9vcF9jb250cm9sc19kaXJlY3Rs eSAobG9vcCwgbG9vcF92aW5mbywNCiA+PiAgICAgJnByZWhlYWRlcl9zZXEs DQogID4+ICAgICZoZWFkZXJfc2VxLA0KID4+ICAgICBsb29wX2NvbmRfZ3Np LCByZ2MsDQogPj4gICAgIG5pdGVycywgbml0ZXJzX3NraXAsDQogPj4gICAg IG1pZ2h0X3dyYXBfcCk7DQoNCj4+IG5lZWRzIHRvIGJlIGFuICJpZiIgdGhh dCAoZm9yIExPT1BfVklORk9fVVNJTkdfREVDUkVNRU5USU5HX0lWX1ApDQo+ PiBpcyBvbmx5IGV4ZWN1dGVkIG9uIHRoZSBmaXJzdCBpdGVyYXRpb24uDQoN CklzIGl0IGNvcnJlY3QgbGlrZSB0aGlzPw0KDQogIEZPUl9FQUNIX1ZFQ19F TFQgKCpjb250cm9scywgaSwgcmdjKQ0KICAgIGlmICghcmdjLT5jb250cm9s cy5pc19lbXB0eSAoKSkNCiAgICAgIHsNCiAgICAgICAgLyogRmlyc3QgdHJ5 IHVzaW5nIHBlcm11dGVzLiAgVGhpcyBhZGRzIGEgc2luZ2xlIHZlY3Rvcg0K ICAgICAgICAgICBpbnN0cnVjdGlvbiB0byB0aGUgbG9vcCBmb3IgZWFjaCBt YXNrLCBidXQgbmVlZHMgbm8gZXh0cmENCiAgICAgICAgICAgbG9vcCBpbnZh cmlhbnRzIG9yIElWcy4gICovDQogICAgICAgIHVuc2lnbmVkIGludCBubWFz a3MgPSBpICsgMTsNCiAgICAgICAgaWYgKHVzZV9tYXNrc19wICYmIChubWFz a3MgJiAxKSA9PSAwKQ0KICAgICAgICAgIHsNCiAgICAgICAgICAgIHJncm91 cF9jb250cm9scyAqaGFsZl9yZ2MgPSAmKCpjb250cm9scylbbm1hc2tzIC8g MiAtIDFdOw0KICAgICAgICAgICAgaWYgKCFoYWxmX3JnYy0+Y29udHJvbHMu aXNfZW1wdHkgKCkNCiAgICAgICAgICAgICAgICAmJiB2ZWN0X21heWJlX3Bl cm11dGVfbG9vcF9tYXNrcyAoJmhlYWRlcl9zZXEsIHJnYywgaGFsZl9yZ2Mp KQ0KICAgICAgICAgICAgICBjb250aW51ZTsNCiAgICAgICAgICB9DQoNCiAg ICAgICAgLyogU2VlIHdoZXRoZXIgemVyby1iYXNlZCBJViB3b3VsZCBldmVy IGdlbmVyYXRlIGFsbC1mYWxzZSBtYXNrcw0KICAgICAgICAgICBvciB6ZXJv IGxlbmd0aCBiZWZvcmUgd3JhcHBpbmcgYXJvdW5kLiAgKi8NCiAgICAgICAg Ym9vbCBtaWdodF93cmFwX3AgPSB2ZWN0X3Jncm91cF9pdl9taWdodF93cmFw X3AgKGxvb3BfdmluZm8sIHJnYyk7DQoNCiAgICAgICAgLyogU2V0IHVwIGFs bCBjb250cm9scyBmb3IgdGhpcyBncm91cC4gICovDQogICAgICAgIHRlc3Rf Y3RybCA9IHZlY3Rfc2V0X2xvb3BfY29udHJvbHNfZGlyZWN0bHkgKGxvb3As IGxvb3BfdmluZm8sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICZwcmVoZWFkZXJfc2VxLA0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmaGVhZGVyX3NlcSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbG9vcF9jb25kX2dzaSwgcmdjLA0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBuaXRlcnMsIG5pdGVyc19za2lwLA0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWdodF93 cmFwX3ApOw0KDQogICAgICAgIC8qIERlY3JlbWVudCBJViBvbmx5IHJ1biB2 ZWN0X3NldF9sb29wX2NvbnRyb2xzX2RpcmVjdGx5IG9uY2UuICAqLw0KICAg ICAgICBpZiAoTE9PUF9WSU5GT19VU0lOR19ERUNSRU1FTlRJTkdfSVZfUCAo bG9vcF92aW5mbykpDQogICAgICAgICAgYnJlYWs7DQogICAgICB9DQoNClRo YW5rcy4NCg0KDQpqdXpoZS56aG9uZ0ByaXZhaS5haQ0KIA0KRnJvbTogUmlj aGFyZCBTYW5kaWZvcmQNCkRhdGU6IDIwMjMtMDUtMjQgMTk6MjMNClRvOiBq dXpoZS56aG9uZw0KQ0M6IGdjYy1wYXRjaGVzOyByZ3VlbnRoZXINClN1Ympl Y3Q6IFJlOiBbUEFUQ0ggVjEyXSBWRUNUOiBBZGQgZGVjcmVtZW50IElWIGl0 ZXJhdGlvbiBsb29wIGNvbnRyb2wgYnkgdmFyaWFibGUgYW1vdW50IHN1cHBv cnQNClNvcnJ5IGZvciB0aGUgc2xvdyByZXZpZXcuICBJIG5lZWRlZCBzb21l IHRpbWUgdG8gZ28gdGhyb3VnaCB0aGlzDQpwYXRjaCBhbmQgc3Vycm91bmRp bmcgY29kZSB0byB1bmRlcnN0YW5kIGl0LCBhbmQgdG8gdW5kZXJzdGFuZA0K d2h5IGl0IHdhc24ndCBzdHJ1Y3R1cmVkIHRoZSB3YXkgSSB3YXMgZXhwZWN0 aW5nLg0KIA0KSSd2ZSBnb3Qgc29tZSBzcGVjaWZpYyBjb21tZW50cyBiZWxv dywgYW5kIHRoZW4gYSBnZW5lcmFsIGNvbW1lbnQNCmFib3V0IGhvdyBJIHRo aW5rIHdlIHNob3VsZCBzdHJ1Y3R1cmUgdGhpcy4NCiANCmp1emhlLnpob25n QHJpdmFpLmFpIHdyaXRlczoNCj4gRnJvbTogSnUtWmhlIFpob25nIDxqdXpo ZS56aG9uZ0ByaXZhaS5haT4NCj4NCj4gZ2NjL0NoYW5nZUxvZzoNCj4NCj4g ICAgICAgICAqIHRyZWUtdmVjdC1sb29wLW1hbmlwLmNjICh2ZWN0X2FkanVz dF9sb29wX2xlbnNfY29udHJvbCk6IE5ldyBmdW5jdGlvbi4NCj4gICAgICAg ICAodmVjdF9zZXRfbG9vcF9jb250cm9sc19kaXJlY3RseSk6IEFkZCBkZWNy ZW1lbnQgSVYgc3VwcG9ydC4NCj4gICAgICAgICAodmVjdF9zZXRfbG9vcF9j b25kaXRpb25fcGFydGlhbF92ZWN0b3JzKTogRGl0dG8uDQo+ICAgICAgICAg KiB0cmVlLXZlY3QtbG9vcC5jYzogRGl0dG8uDQo+ICAgICAgICAgKiB0cmVl LXZlY3Rvcml6ZXIuaCAoTE9PUF9WSU5GT19VU0lOR19ERUNSRU1FTlRJTkdf SVZfUCk6IE5ldyBtYWNyby4NCj4NCj4gLS0tDQo+ICBnY2MvdHJlZS12ZWN0 LWxvb3AtbWFuaXAuY2MgfCAxODQgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKystDQo+ICBnY2MvdHJlZS12ZWN0LWxvb3AuY2MgICAgICAg fCAgMTAgKysNCj4gIGdjYy90cmVlLXZlY3Rvcml6ZXIuaCAgICAgICB8ICAg OCArKw0KPiAgMyBmaWxlcyBjaGFuZ2VkLCAxOTkgaW5zZXJ0aW9ucygrKSwg MyBkZWxldGlvbnMoLSkNCj4NCj4gZGlmZiAtLWdpdCBhL2djYy90cmVlLXZl Y3QtbG9vcC1tYW5pcC5jYyBiL2djYy90cmVlLXZlY3QtbG9vcC1tYW5pcC5j Yw0KPiBpbmRleCBmZjYxNTllMDhkNS4uOTRiMzhkMWUwZmIgMTAwNjQ0DQo+ IC0tLSBhL2djYy90cmVlLXZlY3QtbG9vcC1tYW5pcC5jYw0KPiArKysgYi9n Y2MvdHJlZS12ZWN0LWxvb3AtbWFuaXAuY2MNCj4gQEAgLTM4NSw2ICszODUs NjYgQEAgdmVjdF9tYXliZV9wZXJtdXRlX2xvb3BfbWFza3MgKGdpbXBsZV9z ZXEgKnNlcSwgcmdyb3VwX2NvbnRyb2xzICpkZXN0X3JnbSwNCj4gICAgcmV0 dXJuIGZhbHNlOw0KPiAgfQ0KPiAgDQo+ICsvKiBUcnkgdG8gdXNlIGFkanVz dCBsb29wIGxlbnMgZm9yIG5vbi1TTFAgbXVsdGlwbGUtcmdyb3Vwcy4NCj4g Kw0KPiArICAgICBfMzYgPSBNSU5fRVhQUiA8aXZ0bXBfMzQsIFZGPjsNCj4g Kw0KPiArICAgICBGaXJzdCBsZW5ndGggKE1JTiAoWCwgVkYvTikpOg0KPiAr ICAgICAgIGxvb3BfbGVuXzE1ID0gTUlOX0VYUFIgPF8zNiwgVkYvTj47DQo+ ICsNCj4gKyAgICAgU2Vjb25kIGxlbmd0aDoNCj4gKyAgICAgICB0bXAgPSBf MzYgLSBsb29wX2xlbl8xNTsNCj4gKyAgICAgICBsb29wX2xlbl8xNiA9IE1J TiAodG1wLCBWRi9OKTsNCj4gKw0KPiArICAgICBUaGlyZCBsZW5ndGg6DQo+ ICsgICAgICAgdG1wMiA9IHRtcCAtIGxvb3BfbGVuXzE2Ow0KPiArICAgICAg IGxvb3BfbGVuXzE3ID0gTUlOICh0bXAyLCBWRi9OKTsNCj4gKw0KPiArICAg ICBMYXN0IGxlbmd0aDoNCj4gKyAgICAgICBsb29wX2xlbl8xOCA9IHRtcDIg LSBsb29wX2xlbl8xNzsNCj4gKyovDQo+ICsNCj4gK3N0YXRpYyB2b2lkDQo+ ICt2ZWN0X2FkanVzdF9sb29wX2xlbnNfY29udHJvbCAodHJlZSBpdl90eXBl LCBnaW1wbGVfc2VxICpzZXEsDQo+ICsgICAgICAgIHJncm91cF9jb250cm9s cyAqZGVzdF9yZ20sDQo+ICsgICAgICAgIHJncm91cF9jb250cm9scyAqc3Jj X3JnbSwgdHJlZSBzdGVwKQ0KPiArew0KPiArICB0cmVlIGN0cmxfdHlwZSA9 IGRlc3RfcmdtLT50eXBlOw0KPiArICBwb2x5X3VpbnQ2NCBuaXRlbXNfcGVy X2N0cmwNCj4gKyAgICA9IFRZUEVfVkVDVE9SX1NVQlBBUlRTIChjdHJsX3R5 cGUpICogZGVzdF9yZ20tPmZhY3RvcjsNCj4gKyAgdHJlZSBsZW5ndGhfbGlt aXQgPSBidWlsZF9pbnRfY3N0IChpdl90eXBlLCBuaXRlbXNfcGVyX2N0cmwp Ow0KPiArDQo+ICsgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgZGVz dF9yZ20tPmNvbnRyb2xzLmxlbmd0aCAoKTsgKytpKQ0KPiArICAgIHsNCj4g KyAgICAgIGlmICghc3RlcCkNCj4gKyBzdGVwID0gc3JjX3JnbS0+Y29udHJv bHNbaSAvIGRlc3RfcmdtLT5jb250cm9scy5sZW5ndGggKCldOw0KIA0KQ291 bGQgeW91IGV4cGxhaW4gdGhpcyBpbmRleD8gIEl0IGxvb2tzIGxpa2UgaXQg d2lsbCBhbHdheXMgYmUgMA0KZHVlIHRvIHRoZSByYW5nZSBvZiBpLg0KIA0K U2luY2UgdGhpcyBpcyB0aGUgb25seSB1c2Ugb2Ygc3JjX3JnbSwgaXQgbWln aHQgYmUgY2xlYW5lciB0byBkcm9wDQpzcmNfcmdtIGFuZCBvbmx5IHBhc3Mg dGhlIHN0ZXAuDQogDQo+ICsgICAgICB0cmVlIGN0cmwgPSBkZXN0X3JnbS0+ Y29udHJvbHNbaV07DQo+ICsgICAgICBpZiAoaSA9PSAwKQ0KPiArIHsNCj4g KyAgIC8qIEZpcnN0IGl0ZXJhdGlvbjogTUlOIChYLCBWRi9OKSBjYXBwZWQg dG8gdGhlIHJhbmdlIFswLCBWRi9OXS4gICovDQo+ICsgICBnYXNzaWduICph c3NpZ24NCj4gKyAgICAgPSBnaW1wbGVfYnVpbGRfYXNzaWduIChjdHJsLCBN SU5fRVhQUiwgc3RlcCwgbGVuZ3RoX2xpbWl0KTsNCj4gKyAgIGdpbXBsZV9z ZXFfYWRkX3N0bXQgKHNlcSwgYXNzaWduKTsNCj4gKyB9DQo+ICsgICAgICBl bHNlIGlmIChpID09IGRlc3RfcmdtLT5jb250cm9scy5sZW5ndGggKCkgLSAx KQ0KPiArIHsNCj4gKyAgIC8qIExhc3QgaXRlcmF0aW9uOiBSZW1haW4gY2Fw cGVkIHRvIHRoZSByYW5nZSBbMCwgVkYvTl0uICAqLw0KPiArICAgZ2Fzc2ln biAqYXNzaWduID0gZ2ltcGxlX2J1aWxkX2Fzc2lnbiAoY3RybCwgTUlOVVNf RVhQUiwgc3RlcCwNCj4gKyBkZXN0X3JnbS0+Y29udHJvbHNbaSAtIDFdKTsN Cj4gKyAgIGdpbXBsZV9zZXFfYWRkX3N0bXQgKHNlcSwgYXNzaWduKTsNCj4g KyB9DQo+ICsgICAgICBlbHNlDQo+ICsgew0KPiArICAgLyogKE1JTiAocmVt YWluLCBWRipJL04pKSBjYXBwZWQgdG8gdGhlIHJhbmdlIFswLCBWRi9OXS4g ICovDQo+ICsgICBzdGVwID0gZ2ltcGxlX2J1aWxkIChzZXEsIE1JTlVTX0VY UFIsIGl2X3R5cGUsIHN0ZXAsDQo+ICsgICAgICAgIGRlc3RfcmdtLT5jb250 cm9sc1tpIC0gMV0pOw0KPiArICAgZ2Fzc2lnbiAqYXNzaWduDQo+ICsgICAg ID0gZ2ltcGxlX2J1aWxkX2Fzc2lnbiAoY3RybCwgTUlOX0VYUFIsIHN0ZXAs IGxlbmd0aF9saW1pdCk7DQo+ICsgICBnaW1wbGVfc2VxX2FkZF9zdG10IChz ZXEsIGFzc2lnbik7DQo+ICsgfQ0KPiArICAgIH0NCj4gK30NCiANCk5vdCB5 b3VyIGZhdWx0LCBidXQgdGhlIHN0cnVjdHVyZSBzZWVtcyBraW5kLW9mIGF3 a3dhcmQsIHNpbmNlDQppdCdzIHJlYWxseSBhIE1JTlVTX0VYUFIgZm9yIGkg IT0gMCBmb2xsb3dlZCBieSBhIE1JTl9FWFBSIGZvciBpICE9IGxhc3QuDQpC dXQgSSBhZ3JlZSB0aGF0IGl0IHByb2JhYmx5IGhhcyB0byBiZSB3cml0dGVu IGFzIGFib3ZlIGdpdmVuIHRoYXQNCnRoZSBmaW5hbCBkZXN0aW5hdGlvbiBp cyBmaXhlZCBpbiBhZHZhbmNlLg0KIA0KPiArDQo+ICAvKiBIZWxwZXIgZm9y IHZlY3Rfc2V0X2xvb3BfY29uZGl0aW9uX3BhcnRpYWxfdmVjdG9ycy4gIEdl bmVyYXRlIGRlZmluaXRpb25zDQo+ICAgICBmb3IgYWxsIHRoZSByZ3JvdXAg Y29udHJvbHMgaW4gUkdDIGFuZCByZXR1cm4gYSBjb250cm9sIHRoYXQgaXMg bm9uemVybw0KPiAgICAgd2hlbiB0aGUgbG9vcCBuZWVkcyB0byBpdGVyYXRl LiAgQWRkIGFueSBuZXcgcHJlaGVhZGVyIHN0YXRlbWVudHMgdG8NCj4gQEAg LTQ2OCw5ICs1MjgsNzggQEAgdmVjdF9zZXRfbG9vcF9jb250cm9sc19kaXJl Y3RseSAoY2xhc3MgbG9vcCAqbG9vcCwgbG9vcF92ZWNfaW5mbyBsb29wX3Zp bmZvLA0KPiAgICBnaW1wbGVfc3RtdF9pdGVyYXRvciBpbmNyX2dzaTsNCj4g ICAgYm9vbCBpbnNlcnRfYWZ0ZXI7DQo+ICAgIHN0YW5kYXJkX2l2X2luY3Jl bWVudF9wb3NpdGlvbiAobG9vcCwgJmluY3JfZ3NpLCAmaW5zZXJ0X2FmdGVy KTsNCj4gLSAgY3JlYXRlX2l2IChidWlsZF9pbnRfY3N0IChpdl90eXBlLCAw KSwgUExVU19FWFBSLCBuaXRlbXNfc3RlcCwgTlVMTF9UUkVFLA0KPiAtICAg ICAgbG9vcCwgJmluY3JfZ3NpLCBpbnNlcnRfYWZ0ZXIsICZpbmRleF9iZWZv cmVfaW5jciwNCj4gLSAgICAgICZpbmRleF9hZnRlcl9pbmNyKTsNCj4gKyAg aWYgKExPT1BfVklORk9fVVNJTkdfREVDUkVNRU5USU5HX0lWX1AgKGxvb3Bf dmluZm8pKQ0KPiArICAgIHsNCj4gKyAgICAgIG5pdGVtc190b3RhbCA9IGdp bXBsZV9jb252ZXJ0IChwcmVoZWFkZXJfc2VxLCBpdl90eXBlLCBuaXRlbXNf dG90YWwpOw0KPiArICAgICAgdHJlZSBzdGVwID0gbWFrZV9zc2FfbmFtZSAo aXZfdHlwZSk7DQo+ICsgICAgICAvKiBDcmVhdGUgZGVjcmVtZW50IElWLiAg Ki8NCj4gKyAgICAgIGNyZWF0ZV9pdiAobml0ZW1zX3RvdGFsLCBNSU5VU19F WFBSLCBzdGVwLCBOVUxMX1RSRUUsIGxvb3AsICZpbmNyX2dzaSwNCj4gKyBp bnNlcnRfYWZ0ZXIsICZpbmRleF9iZWZvcmVfaW5jciwgJmluZGV4X2FmdGVy X2luY3IpOw0KPiArICAgICAgdHJlZSB0ZW1wID0gZ2ltcGxlX2J1aWxkICho ZWFkZXJfc2VxLCBNSU5fRVhQUiwgaXZfdHlwZSwNCj4gKyBpbmRleF9iZWZv cmVfaW5jciwgbml0ZW1zX3N0ZXApOw0KPiArICAgICAgZ2ltcGxlX3NlcV9h ZGRfc3RtdCAoaGVhZGVyX3NlcSwgZ2ltcGxlX2J1aWxkX2Fzc2lnbiAoc3Rl cCwgdGVtcCkpOw0KIA0KUHJvYmFibHkgc2ltcGxlciB0byBidWlsZCB0aGUg TUlOX0VYUFIgYXMgYSBnaW1wbGVfYnVpbGRfYXNzaWduLA0Kd2l0aCAic3Rl cCIgYXMgaXRzIGRlc3RpbmF0aW9uLiAgTm8gc2ltcGxpZmljYXRpb24gaXMg bGlrZWx5IGdpdmVuDQp0aGF0IHRoZSBpbnB1dCBpcyBhIGZyZXNobHktbWlu dGVkIElWLg0KIA0KPiArDQo+ICsgICAgICBpZiAocmdjLT5tYXhfbnNjYWxh cnNfcGVyX2l0ZXIgPT0gMSkNCiANCkknbSBub3Qgc3VyZSB0aGlzIGlzIHRo ZSBjb3JyZWN0IGNvbmRpdGlvbi4gIElzbid0IHRoZSBzcGxpdCByZWFsbHkN CmJldHdlZW4gd2hldGhlciByZ2MtPmNvbnRyb2xzLmxlbmd0aCAoKSBpcyAx IG9yIGdyZWF0ZXIgdGhhbiAxPw0KSXQncyBwb3NzaWJsZSAoZXZlbiBjb21t b24pIGZvciByZ2MtPmNvbnRyb2xzLmxlbmd0aCAoKSA9PSAxDQomJiByZ2Mt Pm1heF9uc2NhbGFyc19wZXJfaXRlciAhPSAxLCBhbmQgaW4gdGhhdCBjYXNl LA0KdmVjdF9hZGp1c3RfbG9vcF9sZW5zX2NvbnRyb2wgd2lsbCBjcmVhdGUg YW4gdW5uZWNlc3NhcnkgTUlOX0VYUFIuDQogDQpXaGVuIHJnYy0+Y29udHJv bHMubGVuZ3RoICgpIGlzIDEsIGl0IHdvdWxkIGJlIGdvb2QgdG8gdXNlDQpy Z2MtPmNvbnRyb2xzWzBdIGFzICJzdGVwIiBhYm92ZSwgcmF0aGVyIHRoYW4g bWFrZSBhIG5ldyBTU0EgbmFtZS4NCiANClRoYW5rcyBmb3IgcHV0dGluZyB0 aGUgY29kZSBoZXJlIHRob3VnaC4gIEl0IGxvb2tzIGxpa2UgdGhlIHJpZ2h0 DQpwbGFjZSB0byBtZS4NCiANCk1vcmUgb24gdGhpcyBiZWxvdy4NCiANCj4g KyB7DQo+ICsgICAvKiBzaW5nbGUgcmdyb3VwOg0KPiArICAgICAgLi4uDQo+ ICsgICAgICBfMTAgPSAodW5zaWduZWQgbG9uZykgY291bnRfMTIoRCk7DQo+ ICsgICAgICAuLi4NCj4gKyAgICAgICMgaXZ0bXBfOSA9IFBISSA8aXZ0bXBf MzUoNiksIF8xMCg1KT4NCj4gKyAgICAgIF8zNiA9IE1JTl9FWFBSIDxpdnRt cF85LCBQT0xZX0lOVF9DU1QgWzQsIDRdPjsNCj4gKyAgICAgIC4uLg0KPiAr ICAgICAgdmVjdF9fNC44XzI4ID0gLkxFTl9MT0FEIChfMTcsIDMyQiwgXzM2 LCAwKTsNCj4gKyAgICAgIC4uLg0KPiArICAgICAgaXZ0bXBfMzUgPSBpdnRt cF85IC0gXzM2Ow0KPiArICAgICAgLi4uDQo+ICsgICAgICBpZiAoaXZ0bXBf MzUgIT0gMCkNCj4gKyAgICAgICAgZ290byA8YmIgND47IFs4My4zMyVdDQo+ ICsgICAgICBlbHNlDQo+ICsgICAgICAgIGdvdG8gPGJiIDU+OyBbMTYuNjcl XQ0KPiArICAgKi8NCj4gKyAgIGdhc3NpZ24gKmFzc2lnbiA9IGdpbXBsZV9i dWlsZF9hc3NpZ24gKHJnYy0+Y29udHJvbHNbMF0sIHN0ZXApOw0KPiArICAg Z2ltcGxlX3NlcV9hZGRfc3RtdCAoaGVhZGVyX3NlcSwgYXNzaWduKTsNCj4g KyB9DQo+ICsgICAgICBlbHNlDQo+ICsgew0KPiArICAgLyogTXVsdGlwbGUg cmdyb3VwIChTTFApOg0KPiArICAgICAgLi4uDQo+ICsgICAgICBfMzggPSAo dW5zaWduZWQgbG9uZykgYm5kLjdfMjk7DQo+ICsgICAgICBfMzkgPSBfMzgg KiAyOw0KPiArICAgICAgLi4uDQo+ICsgICAgICAjIGl2dG1wXzQxID0gUEhJ IDxpdnRtcF80Mig2KSwgXzM5KDUpPg0KPiArICAgICAgLi4uDQo+ICsgICAg ICBfNDMgPSBNSU5fRVhQUiA8aXZ0bXBfNDEsIDMyPjsNCj4gKyAgICAgIGxv b3BfbGVuXzI2ID0gTUlOX0VYUFIgPF80MywgMTY+Ow0KPiArICAgICAgbG9v cF9sZW5fMjUgPSBfNDMgLSBsb29wX2xlbl8yNjsNCj4gKyAgICAgIC4uLg0K PiArICAgICAgLkxFTl9TVE9SRSAoXzYsIDhCLCBsb29wX2xlbl8yNiwgLi4u KTsNCj4gKyAgICAgIC4uLg0KPiArICAgICAgLkxFTl9TVE9SRSAoXzI1LCA4 QiwgbG9vcF9sZW5fMjUsIC4uLik7DQo+ICsgICAgICBfMzMgPSBsb29wX2xl bl8yNiAvIDI7DQo+ICsgICAgICAuLi4NCj4gKyAgICAgIC5MRU5fU1RPUkUg KF84LCAxNkIsIF8zMywgLi4uKTsNCj4gKyAgICAgIF8zNiA9IGxvb3BfbGVu XzI1IC8gMjsNCj4gKyAgICAgIC4uLg0KPiArICAgICAgLkxFTl9TVE9SRSAo XzE1LCAxNkIsIF8zNiwgLi4uKTsNCj4gKyAgICAgIGl2dG1wXzQyID0gaXZ0 bXBfNDEgLSBfNDM7DQo+ICsgICAgICAuLi4NCj4gKyAgICAgIGlmIChpdnRt cF80MiAhPSAwKQ0KPiArICAgICAgICBnb3RvIDxiYiA0PjsgWzgzLjMzJV0N Cj4gKyAgICAgIGVsc2UNCj4gKyAgICAgICBnb3RvIDxiYiA1PjsgWzE2LjY3 JV0NCj4gKyAgICovDQo+ICsgICB2ZWN0X2FkanVzdF9sb29wX2xlbnNfY29u dHJvbCAoaXZfdHlwZSwgaGVhZGVyX3NlcSwgcmdjLCBOVUxMLCBzdGVwKTsN Cj4gKyB9DQo+ICsgICAgICByZXR1cm4gaW5kZXhfYWZ0ZXJfaW5jcjsNCj4g KyAgICB9DQo+ICsgIGVsc2UNCj4gKyAgICB7DQo+ICsgICAgICAvKiBDcmVh dGUgaW5jcmVtZW50IElWLiAgKi8NCj4gKyAgICAgIGNyZWF0ZV9pdiAoYnVp bGRfaW50X2NzdCAoaXZfdHlwZSwgMCksIFBMVVNfRVhQUiwgbml0ZW1zX3N0 ZXAsIE5VTExfVFJFRSwNCj4gKyBsb29wLCAmaW5jcl9nc2ksIGluc2VydF9h ZnRlciwgJmluZGV4X2JlZm9yZV9pbmNyLA0KPiArICZpbmRleF9hZnRlcl9p bmNyKTsNCj4gKyAgICB9DQogDQpQcm9iYWJseSBiZXR0ZXIgdG8gaGF2ZSBu byAiZWxzZSIgYW5kIGluc3RlYWQgZmFsbCB0aHJvdWdoIHRvIHRoaXMNCmNy ZWF0ZV9pdi4gIEl0IG1ha2VzIGl0IGNsZWFyZXIgdGhhdCB0aGUgZGVjcmVt ZW50aW5nIElWIGNhc2UNCmRvZXNuJ3QgY29udGludWUgYmV5b25kIHRoZSAi aWYiIGFib3ZlLg0KIA0KPiAgDQo+ICAgIHRyZWUgemVyb19pbmRleCA9IGJ1 aWxkX2ludF9jc3QgKGNvbXBhcmVfdHlwZSwgMCk7DQo+ICAgIHRyZWUgdGVz dF9pbmRleCwgdGVzdF9saW1pdCwgZmlyc3RfbGltaXQ7DQo+IEBAIC03NTMs NiArODgyLDU1IEBAIHZlY3Rfc2V0X2xvb3BfY29uZGl0aW9uX3BhcnRpYWxf dmVjdG9ycyAoY2xhc3MgbG9vcCAqbG9vcCwNCj4gICAgICAgIGNvbnRpbnVl Ow0KPiAgICB9DQo+ICANCj4gKyBpZiAoTE9PUF9WSU5GT19VU0lOR19ERUNS RU1FTlRJTkdfSVZfUCAobG9vcF92aW5mbykNCj4gKyAgICAgJiYgcmdjLT5t YXhfbnNjYWxhcnNfcGVyX2l0ZXIgPT0gMQ0KPiArICAgICAmJiByZ2MgIT0g JkxPT1BfVklORk9fTEVOUyAobG9vcF92aW5mbylbMF0pDQo+ICsgICB7DQo+ ICsgICAgIC8qIE11bHRpcGxlIHJncm91cCAobm9uLVNMUCk6DQo+ICsgICAg ICAgLi4uDQo+ICsgICAgICAgXzM4ID0gKHVuc2lnbmVkIGxvbmcpIG5fMTIo RCk7DQo+ICsgICAgICAgLi4uDQo+ICsgICAgICAgIyBpdnRtcF8zOCA9IFBI SSA8aXZ0bXBfMzkoMyksIDEwMCgyKT4NCj4gKyAgICAgICAuLi4NCj4gKyAg ICAgICBfNDAgPSBNSU5fRVhQUiA8aXZ0bXBfMzgsIFBPTFlfSU5UX0NTVCBb OCwgOF0+Ow0KPiArICAgICAgIGxvb3BfbGVuXzIxID0gTUlOX0VYUFIgPF80 MCwgUE9MWV9JTlRfQ1NUIFsyLCAyXT47DQo+ICsgICAgICAgXzQxID0gXzQw IC0gbG9vcF9sZW5fMjE7DQo+ICsgICAgICAgbG9vcF9sZW5fMjAgPSBNSU5f RVhQUiA8XzQxLCBQT0xZX0lOVF9DU1QgWzIsIDJdPjsNCj4gKyAgICAgICBf NDIgPSBfNDAgLSBsb29wX2xlbl8yMDsNCj4gKyAgICAgICBsb29wX2xlbl8x OSA9IE1JTl9FWFBSIDxfNDIsIFBPTFlfSU5UX0NTVCBbMiwgMl0+Ow0KPiAr ICAgICAgIF80MyA9IF80MCAtIGxvb3BfbGVuXzE5Ow0KPiArICAgICAgIGxv b3BfbGVuXzE2ID0gTUlOX0VYUFIgPF80MywgUE9MWV9JTlRfQ1NUIFsyLCAy XT47DQo+ICsgICAgICAgLi4uDQo+ICsgICAgICAgdmVjdF9fNC44XzE1ID0g LkxFTl9MT0FEIChfNiwgNjRCLCBsb29wX2xlbl8yMSwgMCk7DQo+ICsgICAg ICAgLi4uDQo+ICsgICAgICAgdmVjdF9fNC45XzggPSAuTEVOX0xPQUQgKF8x MywgNjRCLCBsb29wX2xlbl8yMCwgMCk7DQo+ICsgICAgICAgLi4uDQo+ICsg ICAgICAgdmVjdF9fNC4xMF8yOCA9IC5MRU5fTE9BRCAoXzQ2LCA2NEIsIGxv b3BfbGVuXzE5LCAwKTsNCj4gKyAgICAgICAuLi4NCj4gKyAgICAgICB2ZWN0 X180LjExXzMwID0gLkxFTl9MT0FEIChfNDksIDY0QiwgbG9vcF9sZW5fMTYs IDApOw0KPiArICAgICAgIHZlY3RfXzcuMTNfMzEgPSBWRUNfUEFDS19UUlVO Q19FWFBSIDx2ZWN0X180LjhfMTUsIHZlY3RfXzQuOV84PjsNCj4gKyAgICAg ICB2ZWN0X183LjEzXzMyID0gVkVDX1BBQ0tfVFJVTkNfRVhQUiA8Li4uPjsN Cj4gKyAgICAgICB2ZWN0X183LjEyXzMzID0gVkVDX1BBQ0tfVFJVTkNfRVhQ UiA8Li4uPjsNCj4gKyAgICAgICAuLi4NCj4gKyAgICAgICAuTEVOX1NUT1JF IChfMTQsIDE2QiwgXzQwLCB2ZWN0X183LjEyXzMzLCAwKTsNCj4gKyAgICAg ICBpdnRtcF8zOSA9IGl2dG1wXzM4IC0gXzQwOw0KPiArICAgICAgIC4uLg0K PiArICAgICAgIGlmIChpdnRtcF8zOSAhPSAwKQ0KPiArIGdvdG8gPGJiIDM+ OyBbOTIuMzElXQ0KPiArICAgICAgIGVsc2UNCj4gKyBnb3RvIDxiYiA0Pjsg WzcuNjklXQ0KPiArICAgICAqLw0KPiArICAgICByZ3JvdXBfY29udHJvbHMg KnN1Yl9yZ2MNCj4gKyAgICAgICA9ICYoKmNvbnRyb2xzKVtubWFza3MgLyBy Z2MtPmNvbnRyb2xzLmxlbmd0aCAoKSAtIDFdOw0KPiArICAgICBpZiAoIXN1 Yl9yZ2MtPmNvbnRyb2xzLmlzX2VtcHR5ICgpKQ0KPiArICAgICAgIHsNCj4g KyB0cmVlIGl2X3R5cGUgPSBMT09QX1ZJTkZPX1JHUk9VUF9JVl9UWVBFIChs b29wX3ZpbmZvKTsNCj4gKyB2ZWN0X2FkanVzdF9sb29wX2xlbnNfY29udHJv bCAoaXZfdHlwZSwgJmhlYWRlcl9zZXEsIHJnYywNCj4gKyAgICAgICAgc3Vi X3JnYywgTlVMTF9UUkVFKTsNCj4gKyBjb250aW51ZTsNCj4gKyAgICAgICB9 DQo+ICsgICB9DQogDQpJIGRvbid0IHRoaW5rIHRoaXMgaXMgcmlnaHQsIHNp bmNlIGlmIHdlIGhhdmUgMS1jb250cm9sLCAyLWNvbnRyb2wNCmFuZCA0LWNv bnRyb2wgZ3JvdXBzLCB0aGUgZmFuLW91dCBmb3IgdGhlIDQtY29udHJvbCBn cm91cCBtdXN0IGJlDQpiYXNlZCBvbiB0aGUgMS1jb250cm9sIGdyb3VwIHJh dGhlciB0aGFuIGFueSBnZW5lcmFsIHN1Yl9yZ2MuDQpVc2luZyBhbnkgb3Ro ZXIgcmdyb3VwIHdvdWxkIG1lYW4gdGhhdCB0aGUgaW5wdXQgd2FzIGFscmVh ZHkNCmNsYW1wZWQgYnkgYSBNSU5fRVhQUiAoYmVjYXVzZSB0aGF0IGlucHV0 IHdvdWxkIGl0c2VsZiBoYXZlIGJlZW4NCmNyZWF0ZWQgYnkgdmVjdF9hZGp1 c3RfbG9vcF9sZW5zX2NvbnRyb2wpLg0KIA0KPiArDQo+ICAvKiBTZWUgd2hl dGhlciB6ZXJvLWJhc2VkIElWIHdvdWxkIGV2ZXIgZ2VuZXJhdGUgYWxsLWZh bHNlIG1hc2tzDQo+ICAgICBvciB6ZXJvIGxlbmd0aCBiZWZvcmUgd3JhcHBp bmcgYXJvdW5kLiAgKi8NCj4gIGJvb2wgbWlnaHRfd3JhcF9wID0gdmVjdF9y Z3JvdXBfaXZfbWlnaHRfd3JhcF9wIChsb29wX3ZpbmZvLCByZ2MpOw0KPiBk aWZmIC0tZ2l0IGEvZ2NjL3RyZWUtdmVjdC1sb29wLmNjIGIvZ2NjL3RyZWUt dmVjdC1sb29wLmNjDQo+IGluZGV4IGNmMTAxMzJiMGJmLi41M2FjNGQyYTZj MiAxMDA2NDQNCj4gLS0tIGEvZ2NjL3RyZWUtdmVjdC1sb29wLmNjDQo+ICsr KyBiL2djYy90cmVlLXZlY3QtbG9vcC5jYw0KPiBAQCAtMjcyNSw2ICsyNzI1 LDE2IEBAIHN0YXJ0X292ZXI6DQo+ICAgICAgICAmJiAhdmVjdF92ZXJpZnlf bG9vcF9sZW5zIChsb29wX3ZpbmZvKSkNCj4gICAgICBMT09QX1ZJTkZPX0NB Tl9VU0VfUEFSVElBTF9WRUNUT1JTX1AgKGxvb3BfdmluZm8pID0gZmFsc2U7 DQo+ICANCj4gKyAgLyogSWYgd2UncmUgdmVjdG9yaXppbmcgYW4gbG9vcCB0 aGF0IHVzZXMgbGVuZ3RoICJjb250cm9scyIgYW5kDQo+ICsgICAgIGNhbiBp dGVyYXRlIG1vcmUgdGhhbiBvbmNlLCB3ZSBhcHBseSBkZWNyZW1lbnRpbmcg SVYgYXBwcm9hY2gNCj4gKyAgICAgaW4gbG9vcCBjb250cm9sLiAgKi8NCj4g KyAgaWYgKExPT1BfVklORk9fQ0FOX1VTRV9QQVJUSUFMX1ZFQ1RPUlNfUCAo bG9vcF92aW5mbykNCj4gKyAgICAgICYmICFMT09QX1ZJTkZPX0xFTlMgKGxv b3BfdmluZm8pLmlzX2VtcHR5ICgpDQo+ICsgICAgICAmJiAhKExPT1BfVklO Rk9fTklURVJTX0tOT1dOX1AgKGxvb3BfdmluZm8pDQo+ICsgICAgJiYga25v d25fbGUgKExPT1BfVklORk9fSU5UX05JVEVSUyAobG9vcF92aW5mbyksDQo+ ICsgTE9PUF9WSU5GT19WRUNUX0ZBQ1RPUiAobG9vcF92aW5mbykpKSkNCiAN CkkgdGhpbmsgdGhpcyBhbHNvIG5lZWRzIHRvIGNoZWNrOg0KIA0KTE9PUF9W SU5GT19QQVJUSUFMX0xPQURfU1RPUkVfQklBUyAobG9vcF92aW5mbykgPT0g MA0KIA0KLS0tLS0NCiANCkkgdGhpbmsgYW5vdGhlciB3YXkgdG8gdGhpbmsg YWJvdXQgdGhlIHBhdGNoIGlzIHRoaXM6DQogDQpUaGluZ3Mgd291bGQgYmUg ZWFzeSBpZiB0aGVyZSB3YXMgYWx3YXlzIGEgMS1jb250cm9sIGdyb3VwLg0K VGhlbiB3ZSBjb3VsZCBjcmVhdGUgYSBkZWNyZW1lbnRpbmcgSVYgZm9yIHRo YXQgMS1jb250cm9sIGdyb3VwLA0KaW4gdGhlIHdheSB0aGF0IHlvdSBkbyBh Ym92ZS4gIEFsbCBvdGhlciBncm91cHMgd291bGQgdXNlIHRoZQ0KMS1jb250 cm9sIGdyb3VwIGFzIGlucHV0LiAgVGhleSB3b3VsZCBmYW4gdGhhdCBpbnB1 dCBvdXQgdXNpbmcNCnZlY3RfYWRqdXN0X2xvb3BfbGVuc19jb250cm9sLg0K IA0KSG93ZXZlciwgdGhlcmUgaXNuJ3QgZ3VhcmFudGVlZCB0byBiZSAxLWNv bnRyb2wgZ3JvdXAsIGFuZCBjcmVhdGluZw0KYSBmYWtlIG9uZSBtaWdodCBu b3QgYmUgZWFzeS4gIFdlJ2QgbmVlZCB0byBjYWxjdWxhdGUgdmFsaWQgdmFs dWVzDQpmb3IgdGhlIGZhY3RvciwgdHlwZSwgbnNjYWxhcnNfcGVyX2l0ZXIs IGV0Yy4gZmllbGRzLg0KIA0KU28gd2hlbiB0aGVyZSBpcyBubyAxLWNvbnRy b2wgZ3JvdXAsIGl0J3MgcHJvYmFibHkgZWFzaWVyIHRvIGNyZWF0ZQ0KYSBk ZWNyZW1lbnRpbmcgSVYgYmFzZWQgb24gdGhlIGZpcnN0IG5vbi1lbXB0eSBn cm91cC4gIFRoaXMgaXMgd2hhdA0KeW91ciBwYXRjaCBkb2VzLiAgQW5kIEkg dGhpbmsgaXQncyB0aGUgcmlnaHQgYXBwcm9hY2guDQogDQpIb3dldmVyLCB0 aGUgSVYgY3JlYXRlZCBpbiB0aGlzIHdheSBpcyAic3BlY2lhbCIuICBJdCBk b2Vzbid0IGV4aXN0DQphcyBwYXJ0IG9mIHRoZSBub3JtYWwgcmdyb3VwIGZy YW1ld29yay4gIEl0J3Mgc29tZXRoaW5nIGNyZWF0ZWQNCm91dHNpZGUgdGhl IHJncm91cCBmcmFtZXdvcmsgdG8gbWFrZSB0aGUgY29udHJvbHMgZWFzaWVy IHRvIHBvcHVsYXRlLg0KIA0KSW4geW91ciBjYXNlLCB0aGlzIGlzIHRoZSBj YXNlIHdoZXJlICJzdGVwIiBpcyBjcmVhdGVkIGFuZCBpcyBub3QNCmFzc2ln bmVkIGRpcmVjdGx5IHRvIHJnYy0+Y29udHJvbHMuDQogDQpHaXZlbiB0aGF0 LCBJIHRoaW5rIHdlIHNob3VsZCBzdHJ1Y3R1cmUgdGhlIGNvZGUgYXMgZm9s bG93cywNCmNoYW5naW5nIHRoZSBiZWhhdmlvdXIgb25seSBmb3IgTE9PUF9W SU5GT19VU0lOR19ERUNSRU1FTlRJTkdfSVZfUDoNCiANCigxKSBJbiB2ZWN0 X3NldF9sb29wX2NvbmRpdGlvbl9wYXJ0aWFsX3ZlY3RvcnMsIGZvciB0aGUg Zmlyc3QgaXRlcmF0aW9uIG9mOg0KIA0KICBGT1JfRUFDSF9WRUNfRUxUICgq Y29udHJvbHMsIGksIHJnYykNCiAgICBpZiAoIXJnYy0+Y29udHJvbHMuaXNf ZW1wdHkgKCkpDQogDQpjYWxsIHZlY3Rfc2V0X2xvb3BfY29udHJvbHNfZGly ZWN0bHkuICBUaGF0IGlzOg0KIA0KLyogU2VlIHdoZXRoZXIgemVyby1iYXNl ZCBJViB3b3VsZCBldmVyIGdlbmVyYXRlIGFsbC1mYWxzZSBtYXNrcw0KICAg b3IgemVybyBsZW5ndGggYmVmb3JlIHdyYXBwaW5nIGFyb3VuZC4gICovDQpi b29sIG1pZ2h0X3dyYXBfcCA9IHZlY3Rfcmdyb3VwX2l2X21pZ2h0X3dyYXBf cCAobG9vcF92aW5mbywgcmdjKTsNCiANCi8qIFNldCB1cCBhbGwgY29udHJv bHMgZm9yIHRoaXMgZ3JvdXAuICAqLw0KdGVzdF9jdHJsID0gdmVjdF9zZXRf bG9vcF9jb250cm9sc19kaXJlY3RseSAobG9vcCwgbG9vcF92aW5mbywNCiAg ICAgJnByZWhlYWRlcl9zZXEsDQogICAgICZoZWFkZXJfc2VxLA0KICAgICBs b29wX2NvbmRfZ3NpLCByZ2MsDQogICAgIG5pdGVycywgbml0ZXJzX3NraXAs DQogICAgIG1pZ2h0X3dyYXBfcCk7DQogDQpuZWVkcyB0byBiZSBhbiAiaWYi IHRoYXQgKGZvciBMT09QX1ZJTkZPX1VTSU5HX0RFQ1JFTUVOVElOR19JVl9Q KQ0KaXMgb25seSBleGVjdXRlZCBvbiB0aGUgZmlyc3QgaXRlcmF0aW9uLg0K IA0KKDIpIHZlY3Rfc2V0X2xvb3BfY29udHJvbHNfZGlyZWN0bHkgY2FsY3Vs YXRlcyAic3RlcCIgYXMgaW4geW91ciBwYXRjaC4NCklmIHJnYyBoYXMgMSBj b250cm9sLCB0aGlzIHN0ZXAgaXMgdGhlIFNTQSBuYW1lIGNyZWF0ZWQgZm9y IHRoYXQgY29udHJvbC4NCk90aGVyd2lzZSB0aGUgc3RlcCBpcyBhIGZyZXNo IFNTQSBuYW1lLCBhcyBpbiB5b3VyIHBhdGNoLg0KIA0KKDMpIHZlY3Rfc2V0 X2xvb3BfY29udHJvbHNfZGlyZWN0bHkgc3RvcmVzIHRoaXMgc3RlcCBzb21l d2hlcmUgZm9yIGxhdGVyDQp1c2UsIHByb2JhYmx5IGluIExPT1BfVklORk8u ICBMZXQncyB1c2UgIlMiIHRvIHJlZmVyIHRvIHRoaXMgc3RvcmVkIHN0ZXAu DQogDQooNCkgQWZ0ZXIgdGhlIHZlY3Rfc2V0X2xvb3BfY29udHJvbHNfZGly ZWN0bHkgY2FsbCBhYm92ZSwgYW5kIG91dHNpZGUNCnRoZSAiaWYiIHN0YXRl bWVudCB0aGF0IG5vdyBjb250YWlucyB2ZWN0X3NldF9sb29wX2NvbnRyb2xz X2RpcmVjdGx5LA0KY2hlY2sgd2hldGhlciByZ2MtPmNvbnRyb2xzLmxlbmd0 aCAoKSA+IDEuICBJZiBzbywgdXNlDQp2ZWN0X2FkanVzdF9sb29wX2xlbnNf Y29udHJvbCB0byBzZXQgdGhlIGNvbnRyb2xzIGJhc2VkIG9uIFMuDQogDQpU aGVuIHRoZSBvbmx5IGNhbGxlciBvZiB2ZWN0X2FkanVzdF9sb29wX2xlbnNf Y29udHJvbCBpcw0KdmVjdF9zZXRfbG9vcF9jb25kaXRpb25fcGFydGlhbF92 ZWN0b3JzLiAgQW5kIHRoZSBzdGFydGluZw0Kc3RlcCBmb3IgdmVjdF9hZGp1 c3RfbG9vcF9sZW5zX2NvbnRyb2wgaXMgYWx3YXlzIFMuDQogDQpJdCBzb3Vu ZHMgY29tcGxpY2F0ZWQgd2hlbiBJIHdyaXRlIGl0IGxpa2UgdGhhdCwgYnV0 IEkgdGhpbmsgaXQNCndpbGwgYmUgY2xlYXJlciBpbiBjb2RlLg0KIA0KSG9w ZSB0aGF0IG1ha2VzIHNlbnNlLiAgUGxlYXNlIGxldCBtZSBrbm93IGlmIG5v dC4NCiANClRoYW5rcywNClJpY2hhcmQNCiANCg== ------=_001_NextPart240645175357_=------