From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpbgeu1.qq.com (smtpbgeu1.qq.com [52.59.177.22]) by sourceware.org (Postfix) with ESMTPS id 5D5203858D20; Fri, 11 Aug 2023 10:43:30 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 5D5203858D20 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: bizesmtp86t1691750598t27samxc Received: from LAPTOP-EPITNQBU ( [113.104.212.2]) by bizesmtp.qq.com (ESMTP) with id ; Fri, 11 Aug 2023 18:43:17 +0800 (CST) X-QQ-SSF: 00400000000000G0V000000A0000000 X-QQ-FEAT: 27H4dUct9thD6upNctmcHH/8e+zbbauTv0Q1C6t2rSUrAdv+5RypGN0zMurar HZaXwwezfwFqj07nTCdZP0CTNkMDIe6CNQEu0QWi6LuWVrN+qYp+rptTdqcpmX6EMMHYCJH DlC5CcohU3faeNoxVaJ0YllOEMw6sMgQJln5B2IsKWVhqq19GbQC27A9lLvRGbPDQIiRnc/ Narqe/cNLm4977GSce2LQH3UOnrc79f4eDH31ojO4zsrQSiYxTMJh2Mks0E65cybKbeDSyk kFd1GCzdniXjQMMiKkTevC5qgEFc/FbG2DuxI50azEkaiOlrJz8g90XJKIu8q/toBuJWczF v8EI+cQR2X/MKiSBxyIUYCfTK2Gi6F2IRgodl742bXel+uOKihntwHqvfBcRg4BdBW9EcVW d4fhfbwfFDJEEubWVI7DiHEO2XiH+vI7 X-QQ-GoodBg: 2 X-BIZMAIL-ID: 9500776605717368327 Date: Fri, 11 Aug 2023 18:43:18 +0800 From: "juzhe.zhong@rivai.ai" To: rguenther Cc: gcc-patches , richard.sandiford , linkw , krebbel Subject: Re: Re: [PATCH V3] VECT: Support loop len control on EXTRACT_LAST vectorization References: <20230811063817.491547-1-juzhe.zhong@rivai.ai>, , <0CF24057688529E6+2023081115284214396319@rivai.ai>, X-Priority: 3 X-GUID: 60C99E49-F643-48BD-8B61-D230AE817C59 X-Has-Attach: no X-Mailer: Foxmail 7.2.16.188[cn] Mime-Version: 1.0 Message-ID: Content-Type: multipart/alternative; boundary="----=_001_NextPart428284830175_=----" X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvrgz:qybglogicsvrgz7a-one-0 X-Spam-Status: No, score=-10.3 required=5.0 tests=BAYES_00,GIT_PATCH_0,HTML_MESSAGE,KAM_DMARC_STATUS,RCVD_IN_BARRACUDACENTRAL,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_PASS,TXREP,T_KAM_HTML_FONT_INVALID,T_SPF_HELO_TEMPERROR 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_NextPart428284830175_=---- Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGksIFJpY2hpLg0KDQo+IDEuIFRhcmdldCBpcyB1c2luZyBsb29wIE1BU0sg YXMgdGhlIHBhcnRpYWwgdmVjdG9yIGxvb3AgY29udHJvbC4NCj4+IEkgZG9u J3QgdGhpbmsgaXQgY2hlY2tzIGZvciB0aGlzPw0KDQpJIGFtIG5vdCBzdXJl IHdoZXRoZXIgSSB1bmRlcnN0YW5kIEVYVFJBQ1RfTEFTVCBjb3JyZWN0bHku DQpCdXQgaWYgdGFyZ2V0IGRvZXNuJ3QgdXNlIGxvb3AgTUFTSyBmb3IgcGFy dGlhbCB2ZWN0b3IgbG9vcCBjb250cm9sLCBob3cgZG9lcyB0YXJnZXQgdXNl IEVYVFJBQ1RfTEFTVD8NClNpbmNlIEVYVFJBQ1RfTEFTVCBpcyBhbHdheXMg ZXh0cmFjdGluZyB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSB2ZWN0b3IgYWNj b3JkaW5nIHRvIE1BU0sgb3BlcmFuZC4NCg0KPiBCdXQgd2UgZG9uJ3QgcmVh bGx5IGtub3cgdGhpcyBhdCB0aGlzIHBvaW50PyAgVGhlIG9ubHkgdGhpbmcg d2Uga25vdw0KPiBpcyB0aGF0IG5vdGhpbmcgc2V0IExPT1BfVklORk9fQ0FO X1VTRV9QQVJUSUFMX1ZFQ1RPUlNfUCB0byBmYWxzZS4NCg0KWWVzLiBTbyBJ IGFtIHRyeSB0byB1c2UgJ2dldF9sZW5fbG9hZF9zdG9yZScgdG8gY2hlY2sg d2hldGhlciB0YXJnZXQgc3VwcG9ydCBMRU4gbG9vcCBjb250cm9sLg0KDQpX ZWxsLCBJIGFkbWl0IGl0J3Mgbm90IGEgZ29vZCBpZGVhLg0KDQoNCj4gSSB0 aGluayBpdCBzaG91bGQgd29yayB0byBjaGFuZ2UgdGhlIGRpcmVjdF9pbnRl cm5hbF9mbl9zdXBwb3J0ZWRfcA0KPiBjaGVjayBmb3IgSUZOX0VYVFJBQ1Rf TEFTVCB0byBhICJwb2l0aXZlIiBvbmUgZ3VhcmRpbmcNCg0KPiAgICAgICAg ICAgICAgIGdjY19hc3NlcnQgKG5jb3BpZXMgPT0gMSAmJiAhc2xwX25vZGUp Ow0KPiAgICAgICAgICAgICAgIHZlY3RfcmVjb3JkX2xvb3BfbWFzayAobG9v cF92aW5mbywNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICZMT09QX1ZJTkZPX01BU0tTIChsb29wX3ZpbmZvKSwNCj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIHZlY3R5cGUsIE5V TEwpOw0KDQo+IGFuZCBpbiB0aGUgZWxzZSBicmFuY2ggY2hlY2sgZm9yIFZF Q19FWFRSQUNUIHN1cHBvcnQgYW5kIGlmIHByZXNlbnQNCj4gcmVjb3JkIGEg bG9vcCBsZW4uICBKdXN0IGluIHRoaXMgY2FzZSB0aGlzIHBhcnRpY3VsYXIg b3JkZXIgd291bGQNCj4gYmUgaW1wb3J0YW50Lg0KDQpEbyB5b3UgbWVhbiBj aGFuZ2UgdGhlIGNvZGVzIGFzIGZvbGxvd3MgOj8NCg0KLSAgICAgICAgIGlm ICghZGlyZWN0X2ludGVybmFsX2ZuX3N1cHBvcnRlZF9wIChJRk5fRVhUUkFD VF9MQVNULCB2ZWN0eXBlLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBPUFRJTUlaRV9GT1JfU1BFRUQpKQ0KLSAg ICAgICAgICAgew0KLSAgICAgICAgICAgICBpZiAoZHVtcF9lbmFibGVkX3Ag KCkpDQotICAgICAgICAgICAgICAgZHVtcF9wcmludGZfbG9jIChNU0dfTUlT U0VEX09QVElNSVpBVElPTiwgdmVjdF9sb2NhdGlvbiwNCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJjYW4ndCBvcGVyYXRlIG9uIHBhcnRp YWwgdmVjdG9ycyAiDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiYmVjYXVzZSB0aGUgdGFyZ2V0IGRvZXNuJ3Qgc3VwcG9ydCBleHRyYWN0 ICINCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsYXN0IHJl ZHVjdGlvbi5cbiIpOw0KLSAgICAgICAgICAgICBMT09QX1ZJTkZPX0NBTl9V U0VfUEFSVElBTF9WRUNUT1JTX1AgKGxvb3BfdmluZm8pID0gZmFsc2U7DQot ICAgICAgICAgICB9DQotICAgICAgICAgZWxzZSBpZiAoc2xwX25vZGUpDQog ICAgICAgICAgaWYgKHNscF9ub2RlKQ0KICAgICAgICAgICAgew0KICAgICAg ICAgICAgICBpZiAoZHVtcF9lbmFibGVkX3AgKCkpDQogICAgICAgICAgICAg ICAgZHVtcF9wcmludGZfbG9jIChNU0dfTUlTU0VEX09QVElNSVpBVElPTiwg dmVjdF9sb2NhdGlvbiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJjYW4ndCBvcGVyYXRlIG9uIHBhcnRpYWwgdmVjdG9ycyAiDQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmVjYXVzZSBhbiBTTFAg c3RhdGVtZW50IGlzIGxpdmUgYWZ0ZXIgIg0KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgInRoZSBsb29wLlxuIik7DQogICAgICAgICAgICAg IExPT1BfVklORk9fQ0FOX1VTRV9QQVJUSUFMX1ZFQ1RPUlNfUCAobG9vcF92 aW5mbykgPSBmYWxzZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICBlbHNl IGlmIChuY29waWVzID4gMSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAg ICAgaWYgKGR1bXBfZW5hYmxlZF9wICgpKQ0KICAgICAgICAgICAgICAgIGR1 bXBfcHJpbnRmX2xvYyAoTVNHX01JU1NFRF9PUFRJTUlaQVRJT04sIHZlY3Rf bG9jYXRpb24sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi Y2FuJ3Qgb3BlcmF0ZSBvbiBwYXJ0aWFsIHZlY3RvcnMgIg0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgImJlY2F1c2UgbmNvcGllcyBpcyBn cmVhdGVyIHRoYW4gMS5cbiIpOw0KICAgICAgICAgICAgICBMT09QX1ZJTkZP X0NBTl9VU0VfUEFSVElBTF9WRUNUT1JTX1AgKGxvb3BfdmluZm8pID0gZmFs c2U7DQogICAgICAgICAgICB9DQogICAgICAgICAgZWxzZQ0KICAgICAgICAg ICAgew0KICAgICAgICAgICAgICBnY2NfYXNzZXJ0IChuY29waWVzID09IDEg JiYgIXNscF9ub2RlKTsNCiAgICAgICAgICAgICAgaWYgKGRpcmVjdF9pbnRl cm5hbF9mbl9zdXBwb3J0ZWRfcCAoSUZOX0VYVFJBQ1RfTEFTVCwgdmVjdHlw ZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgT1BUSU1JWkVfRk9SX1NQRUVEKSkNCiAgICAgICAgICAgICAg ICB2ZWN0X3JlY29yZF9sb29wX21hc2sgKGxvb3BfdmluZm8sDQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmTE9PUF9WSU5GT19N QVNLUyAobG9vcF92aW5mbyksDQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAxLCB2ZWN0eXBlLCBOVUxMKTsNCiAgICAgICAgICAg ICAgZWxzZQ0KICAgICAgICAgICAgICAgIHZlY3RfcmVjb3JkX2xvb3BfbGVu IChsb29wX3ZpbmZvLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAmTE9PUF9WSU5GT19MRU5TIChsb29wX3ZpbmZvKSwNCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgdmVjdHlwZSwg MSk7DQogICAgICAgICAgICB9DQoNCg0KVGhhbmtzLg0KDQoNCmp1emhlLnpo b25nQHJpdmFpLmFpDQogDQpGcm9tOiBSaWNoYXJkIEJpZW5lcg0KRGF0ZTog MjAyMy0wOC0xMSAxODoyMQ0KVG86IGp1emhlLnpob25nQHJpdmFpLmFpDQpD QzogZ2NjLXBhdGNoZXM7IHJpY2hhcmQuc2FuZGlmb3JkOyBsaW5rdzsga3Jl YmJlbA0KU3ViamVjdDogUmU6IFJlOiBbUEFUQ0ggVjNdIFZFQ1Q6IFN1cHBv cnQgbG9vcCBsZW4gY29udHJvbCBvbiBFWFRSQUNUX0xBU1QgdmVjdG9yaXph dGlvbg0KT24gRnJpLCAxMSBBdWcgMjAyMywganV6aGUuemhvbmdAcml2YWku YWkgd3JvdGU6DQogDQo+IEhpLCBSaWNoaS4NCj4gDQo+ID4+IFNvIGhvdyBj YW4gd2UgcmVzb2x2ZSB0aGUgaXNzdWUgd2hlbiBhIG5vbi1WTCBvcGVyYXRp b24gbGlrZQ0KPiA+PiAuVkVDX0VYVFJBQ1QgaXMgdXNlZCBmb3IgX2xlbiBz dXBwb3J0Pw0KPiANCj4gRG8geW91IG1lYW4gbm9uLVZMIGV4dHJhY3QgbGFz dCBvcGVyYXRpb24gKEkgYW0gc29ycnkgdGhhdCBub3Qgc3VyZSB3aGV0aGVy IEkgdW5kZXJzdGFuZCB5b3VyIHF1ZXN0aW9uIGNvcnJlY3RseSk/IA0KPiBJ ZiB5ZXMsIHRoZSBhbnN3ZXIgaXMgZm9yIFJWViwgd2UgYXJlIHJldXNpbmcg dGhlIHNhbWUgZmxvdyBhcyBBUk0gU1ZFIChCSVRfRklMRURfUkVGIGFwcHJv YWNoKSwgc2VlIHRoZSBleGFtcGxlIGJlbG93Og0KPiANCj4gaHR0cHM6Ly9n b2Rib2x0Lm9yZy96L2NxcldyWThxNCANCj4gDQo+ICNkZWZpbmUgRVhUUkFD VF9MQVNUKFRZUEUpICAgICAgICAgIFwNCj4gICBUWVBFIF9fYXR0cmlidXRl X18gKChub2lubGluZSwgbm9jbG9uZSkpICBcDQo+ICAgdGVzdF8jI1RZUEUg KFRZUEUgKngsIGludCBuLCBUWVBFIHZhbHVlKSAgXA0KPiAgIHsgICAgICAg ICAgICAgICAgICAgICBcDQo+ICAgICBUWVBFIGxhc3Q7ICAgICAgICAgICAg ICAgICAgXA0KPiAgICAgZm9yIChpbnQgaiA9IDA7IGogPCA2NDsgKytqKSAg ICAgICAgICAgIFwNCj4gICAgICAgeyAgICAgICAgICAgICAgICAgICAgIFwN Cj4gICAgIGxhc3QgPSB4W2pdOyAgICAgICAgICAgICAgICBcDQo+ICAgICB4 W2pdID0gbGFzdCAqIHZhbHVlOyAgICAgICAgICAgIFwNCj4gICAgICAgfSAg ICAgICAgICAgICAgICAgICAgIFwNCj4gICAgIHJldHVybiBsYXN0OyAgICAg ICAgICAgICAgICBcDQo+ICAgfQ0KPiANCj4gI2RlZmluZSBURVNUX0FMTChU KSAgICAgICAgICAgICBcDQo+ICAgVCAodWludDhfdCkgICAgICAgICAgICAg ICAgICAgXA0KPiANCj4gVEVTVF9BTEwgKEVYVFJBQ1RfTEFTVCkNCj4gDQo+ ICAgdmVjdF9jc3RfXzIyID0ge3ZhbHVlXzEyKEQpLCB2YWx1ZV8xMihEKSwg dmFsdWVfMTIoRCksIHZhbHVlXzEyKEQpLCB2YWx1ZV8xMihEKSwgdmFsdWVf MTIoRCksIHZhbHVlXzEyKEQpLCB2YWx1ZV8xMihEKSwgdmFsdWVfMTIoRCks IHZhbHVlXzEyKEQpLCB2YWx1ZV8xMihEKSwgdmFsdWVfMTIoRCksIHZhbHVl XzEyKEQpLCB2YWx1ZV8xMihEKSwgdmFsdWVfMTIoRCksIHZhbHVlXzEyKEQp LCB2YWx1ZV8xMihEKSwgdmFsdWVfMTIoRCksIHZhbHVlXzEyKEQpLCB2YWx1 ZV8xMihEKSwgdmFsdWVfMTIoRCksIHZhbHVlXzEyKEQpLCB2YWx1ZV8xMihE KSwgdmFsdWVfMTIoRCksIHZhbHVlXzEyKEQpLCB2YWx1ZV8xMihEKSwgdmFs dWVfMTIoRCksIHZhbHVlXzEyKEQpLCB2YWx1ZV8xMihEKSwgdmFsdWVfMTIo RCksIHZhbHVlXzEyKEQpLCB2YWx1ZV8xMihEKSwgdmFsdWVfMTIoRCksIHZh bHVlXzEyKEQpLCB2YWx1ZV8xMihEKSwgdmFsdWVfMTIoRCksIHZhbHVlXzEy KEQpLCB2YWx1ZV8xMihEKSwgdmFsdWVfMTIoRCksIHZhbHVlXzEyKEQpLCB2 YWx1ZV8xMihEKSwgdmFsdWVfMTIoRCksIHZhbHVlXzEyKEQpLCB2YWx1ZV8x MihEKSwgdmFsdWVfMTIoRCksIHZhbHVlXzEyKEQpLCB2YWx1ZV8xMihEKSwg dmFsdWVfMTIoRCksIHZhbHVlXzEyKEQpLCB2YWx1ZV8xMihEKSwgdmFsdWVf MTIoRCksIHZhbHVlXzEyKEQpLCB2YWx1ZV8xMihEKSwgdmFsdWVfMTIoRCks IHZhbHVlXzEyKEQpLCB2YWx1ZV8xMihEKSwgdmFsdWVfMTIoRCksIHZhbHVl XzEyKEQpLCB2YWx1ZV8xMihEKSwgdmFsdWVfMTIoRCksIHZhbHVlXzEyKEQp LCB2YWx1ZV8xMihEKSwgdmFsdWVfMTIoRCksIHZhbHVlXzEyKEQpfTsNCj4g ICB2ZWN0X2xhc3RfMTEuNl8zID0gTUVNIDx2ZWN0b3IoNjQpIHVuc2lnbmVk IGNoYXI+IFsodWludDhfdCAqKXhfMTAoRCldOw0KPiAgIHZlY3RfXzQuN18y MyA9IHZlY3RfbGFzdF8xMS42XzMgKiB2ZWN0X2NzdF9fMjI7DQo+ICAgTUVN IDx2ZWN0b3IoNjQpIHVuc2lnbmVkIGNoYXI+IFsodWludDhfdCAqKXhfMTAo RCldID0gdmVjdF9fNC43XzIzOw0KPiAgIF8yMSA9IEJJVF9GSUVMRF9SRUYg PHZlY3RfbGFzdF8xMS42XzMsIDgsIDUwND47DQo+IA0KPiBUaGlzIGFwcHJv YWNoIHdvcmtzIHBlcmZlY3RseSBmb3IgYm90aCBSVlYgYW5kIEFSTSBTVkUg Zm9yIG5vbi1WTCBhbmQgbm9uLU1BU0sgRVhUUkFDVF9MQVNUIG9wZXJhdGlv bi4NCj4gDQo+ID4+IFNvLCB3aHkgZG8gd2UgdGVzdCBmb3IgZ2V0X2xlbl9s b2FkX3N0b3JlX21vZGUgYW5kIG5vdCBqdXN0IGZvcg0KPiA+PiBWRUNfRVhU UkFDVD8NCj4gDQo+IEJlZm9yZSBhbnN3ZXIgdGhpcyBxdWVzdGlvbiwgbGV0 IG1lIGZpcnN0IGVsYWJvcmF0ZSBob3cgQVJNIFNWRSBpcyBkb2luZyB3aXRo IE1BU0sgRVhUUkFDVF9MQVNULg0KPiANCj4gSGVyZSBpcyB0aGUgZXhhbXBs ZToNCj4gaHR0cHM6Ly9nb2Rib2x0Lm9yZy96LzhjVHYxanFNYiANCj4gDQo+ IEFSTSBTVkUgSVI6DQo+IA0KPiAgIDxiYiA0PiBbbG9jYWwgY291bnQ6IDk1 NTYzMDIyNF06DQo+ICAgIyBpdnRtcF8zMSA9IFBISSA8aXZ0bXBfMzIoNCks IDAoMyk+DQo+IA0KPiAgICMgbG9vcF9tYXNrXzIyID0gUEhJIDxuZXh0X21h c2tfMzUoNCksIG1heF9tYXNrXzM0KDMpPiAtLS0tLT4gRm9yIFJWViwgd2Ug d2FudCB0aGlzIHRvIGJlIGxvb3BfbGVuID0gU0VMRUNUX1ZMOw0KPiANCj4g ICBfNyA9ICZNRU0gPHZlY3RvcihbMTYsMTZdKSB1bnNpZ25lZCBjaGFyPiBb KHVpbnQ4X3QgKil4XzExKEQpICsgaXZ0bXBfMzEgKiAxXTsNCj4gICB2ZWN0 X2xhc3RfMTIuOF8yMyA9IC5NQVNLX0xPQUQgKF83LCA4QiwgbG9vcF9tYXNr XzIyKTsNCj4gICB2ZWN0X180LjlfMjcgPSB2ZWN0X2xhc3RfMTIuOF8yMyAq IHZlY3RfY3N0X18yNjsNCj4gICAuTUFTS19TVE9SRSAoXzcsIDhCLCBsb29w X21hc2tfMjIsIHZlY3RfXzQuOV8yNyk7DQo+ICAgaXZ0bXBfMzIgPSBpdnRt cF8zMSArIFBPTFlfSU5UX0NTVCBbMTYsIDE2XTsNCj4gICBfMSA9ICh1bnNp Z25lZCBpbnQpIGl2dG1wXzMyOw0KPiANCj4gICBuZXh0X21hc2tfMzUgPSAu V0hJTEVfVUxUIChfMSwgYm5kLjVfNiwgeyAwLCAuLi4gfSk7DQo+IA0KPiAg IGlmIChuZXh0X21hc2tfMzUgIT0geyAwLCAuLi4gfSkNCj4gICAgIGdvdG8g PGJiIDQ+OyBbODkuMDAlXQ0KPiAgIGVsc2UNCj4gICAgIGdvdG8gPGJiIDU+ OyBbMTEuMDAlXQ0KPiANCj4gICA8YmIgNT4gW2xvY2FsIGNvdW50OiAxMDUx MTkzMjRdOg0KPiANCj4gICBfMjUgPSAuRVhUUkFDVF9MQVNUIChsb29wX21h c2tfMjIsIHZlY3RfbGFzdF8xMi44XzIzKTsgW3RhaWwgY2FsbF0gLS0tLT4g VXNlIHRoZSBsYXN0IG1hc2sgZ2VuZXJhdGVkIGluIEJCIDQsIHNvIGZvciBS VlYsIHdlIGFyZSB1c2luZyB0aGUgbG9vcF9sZW4uDQo+IA0KPiBTbyB0aGlz IHBhdGNoIGlzIHRyeWluZyB0byBvcHRpbWl6ZSB0aGUgY29kZWdlbiB3aXRo IHNpbXVsYXRpbmcgc2FtZSBmbG93IGFzIEFSTSBTVkUgYnV0IHdpdGggcmVw bGFjaW5nICdsb29wX21hc2tfMjInIChUaGlzIGlzIGdlbmVyYXRlZCBpbiBC QjQpIGludG8gJ2xvb3BfbGVuJy4NCj4gDQo+IEZvciBBUk0gU1ZFLCB0aGV5 IG9ubHkgY2hlY2sgd2hldGhlciB0YXJnZXQgc3VwcG9ydCBFWFRSQUNUX0xB U1QgcGF0dGVybiwgdGhpcyBwYXR0ZXJuIGlzIHN1cHBvcnRlZCBtZWFuczoN Cj4gDQo+IDEuIFRhcmdldCBpcyB1c2luZyBsb29wIE1BU0sgYXMgdGhlIHBh cnRpYWwgdmVjdG9yIGxvb3AgY29udHJvbC4NCiANCkkgZG9uJ3QgdGhpbmsg aXQgY2hlY2tzIGZvciB0aGlzPw0KIA0KPiAyLiBleHRyYWN0X2xhc3Qgb3B0 YWIgaXMgZW5hYmxlZCBpbiB0aGUgYmFja2VuZC4NCj4gDQo+IFNvIGZvciBS VlYsIHdlIGFyZSBhbHNvIGNoZWNraW5nIHNhbWUgY29uZGl0aW9uczoNCj4g DQo+IDEuIFRhcmdldCBpcyB1c2luZyBsb29wIExFTiBhcyB0aGUgcGFydGlh bCB2ZWN0b3IgbG9vcCBjb250cm9sIChJIHVzZSBnZXRfbGVuX2xvYWRfc3Rv cmVfbW9kZSB0byBjaGVjayB3aGV0aGVyIHRhcmdldCBpcyB1c2luZyBsb29w IExFTiBhcyB0aGUgcGFydGlhbCB2ZWN0b3IgbG9vcCBjb250cm9sKS4NCiAN CkJ1dCB3ZSBkb24ndCByZWFsbHkga25vdyB0aGlzIGF0IHRoaXMgcG9pbnQ/ ICBUaGUgb25seSB0aGluZyB3ZSBrbm93DQppcyB0aGF0IG5vdGhpbmcgc2V0 IExPT1BfVklORk9fQ0FOX1VTRV9QQVJUSUFMX1ZFQ1RPUlNfUCB0byBmYWxz ZS4NCiANCj4gMi4gdmVjX2V4dHJhY3Qgb3B0YWIgaXMgZW5hYmxlZCBpbiB0 aGUgYmFja2VuZC4NCj4gDQo+IEFuIGFsdGVybmF0aXZlIGFwcHJvYWNoIGlz IHRoYXQgd2UgY2FuIGFkZGluZyBFWFRSQUNUX0xBU1RfTEVOIGludGVybmFs IEZOLCB0aGVuIHdlIGNhbiBvbmx5IGNoZWNrIHRoaXMgbGlrZSBBUk0gU1ZF IG9ubHkgY2hlY2sgRVhUUkFDVF9MQVNULg0KIA0KSSB0aGluayBpdCBzaG91 bGQgd29yayB0byBjaGFuZ2UgdGhlIGRpcmVjdF9pbnRlcm5hbF9mbl9zdXBw b3J0ZWRfcA0KY2hlY2sgZm9yIElGTl9FWFRSQUNUX0xBU1QgdG8gYSAicG9p dGl2ZSIgb25lIGd1YXJkaW5nDQogDQogICAgICAgICAgICAgIGdjY19hc3Nl cnQgKG5jb3BpZXMgPT0gMSAmJiAhc2xwX25vZGUpOw0KICAgICAgICAgICAg ICB2ZWN0X3JlY29yZF9sb29wX21hc2sgKGxvb3BfdmluZm8sDQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkxPT1BfVklORk9fTUFT S1MgKGxvb3BfdmluZm8pLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDEsIHZlY3R5cGUsIE5VTEwpOw0KIA0KYW5kIGluIHRoZSBl bHNlIGJyYW5jaCBjaGVjayBmb3IgVkVDX0VYVFJBQ1Qgc3VwcG9ydCBhbmQg aWYgcHJlc2VudA0KcmVjb3JkIGEgbG9vcCBsZW4uICBKdXN0IGluIHRoaXMg Y2FzZSB0aGlzIHBhcnRpY3VsYXIgb3JkZXIgd291bGQNCmJlIGltcG9ydGFu dC4NCiANCj4gPj4gY2FuIHdlIGRvdWJsZS1jaGVjayB0aGlzIG9uIHBvd2Vy cGMgYW5kIHMzOTA/DQo+IA0KPiBTdXJlLCBJIGhvcGUgaXQgY2FuIGJlIGJl bmVmaWNpYWwgdG8gcG93ZXJwYyBhbmQgczM5MC4NCj4gQW5kLCBJIHRoaW5r IFJpY2hhcmQncyBjb21tZW50cyBhcmUgYWxzbyB2ZXJ5IGltcG9ydGFudCBz byBJIGFtIGdvbm5hIHdhaXQgZm9yIGl0Lg0KIA0KWWVhaCwganVzdCB0byBk b3VibGUtY2hlY2sgdGhlIGJpYXMgc3R1ZmYgd29ya3MgY29ycmVjdGx5Lg0K IA0KUmljaGFyZC4NCiANCj4gVGhhbmtzLg0KPiANCj4gDQo+IGp1emhlLnpo b25nQHJpdmFpLmFpDQo+ICANCj4gRnJvbTogUmljaGFyZCBCaWVuZXINCj4g RGF0ZTogMjAyMy0wOC0xMSAxNTowMQ0KPiBUbzogSnUtWmhlIFpob25nDQo+ IENDOiBnY2MtcGF0Y2hlczsgcmljaGFyZC5zYW5kaWZvcmQ7IGxpbmt3OyBr cmViYmVsDQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggVjNdIFZFQ1Q6IFN1cHBv cnQgbG9vcCBsZW4gY29udHJvbCBvbiBFWFRSQUNUX0xBU1QgdmVjdG9yaXph dGlvbg0KPiBPbiBGcmksIDExIEF1ZyAyMDIzLCBqdXpoZS56aG9uZ0ByaXZh aS5haSB3cm90ZToNCj4gIA0KPiA+IEZyb206IEp1LVpoZSBaaG9uZyA8anV6 aGUuemhvbmdAcml2YWkuYWk+DQo+ID4gDQo+ID4gSGksIFJpY2hhcmQgYW5k IFJpY2hpLg0KPiA+IA0KPiA+IFRoaXMgcGF0Y2ggYWRkIHN1cHBvcnQgbGl2 ZSB2ZWN0b3JpemF0aW9uIGJ5IFZFQ19FWFRSQUNUIGZvciBMRU4gbG9vcCBj b250cm9sLg0KPiA+IA0KPiA+IENvbnNpZGVyIHRoaXMgZm9sbG93aW5nIGNh c2U6DQo+ID4gDQo+ID4gI2luY2x1ZGUgPHN0ZGludC5oPg0KPiA+IA0KPiA+ ICNkZWZpbmUgRVhUUkFDVF9MQVNUKFRZUEUpIFwNCj4gPiAgIFRZUEUgX19h dHRyaWJ1dGVfXyAoKG5vaW5saW5lLCBub2Nsb25lKSkgXA0KPiA+ICAgdGVz dF8jI1RZUEUgKFRZUEUgKngsIGludCBuLCBUWVBFIHZhbHVlKSBcDQo+ID4g ICB7IFwNCj4gPiAgICAgVFlQRSBsYXN0OyBcDQo+ID4gICAgIGZvciAoaW50 IGogPSAwOyBqIDwgbjsgKytqKSBcDQo+ID4gICAgICAgeyBcDQo+ID4gbGFz dCA9IHhbal07IFwNCj4gPiB4W2pdID0gbGFzdCAqIHZhbHVlOyBcDQo+ID4g ICAgICAgfSBcDQo+ID4gICAgIHJldHVybiBsYXN0OyBcDQo+ID4gICB9DQo+ ID4gDQo+ID4gI2RlZmluZSBURVNUX0FMTChUKSBcDQo+ID4gICBUICh1aW50 OF90KSBcDQo+ID4gDQo+ID4gVEVTVF9BTEwgKEVYVFJBQ1RfTEFTVCkNCj4g PiANCj4gPiBBUk0gU1ZFIElSOg0KPiA+IA0KPiA+IFByZWhlYWRlcjoNCj4g PiAgIG1heF9tYXNrXzM0ID0gLldISUxFX1VMVCAoMCwgYm5kLjVfNiwgeyAw LCAuLi4gfSk7DQo+ID4gDQo+ID4gTG9vcDoNCj4gPiAgIC4uLg0KPiA+ICAg IyBsb29wX21hc2tfMjIgPSBQSEkgPG5leHRfbWFza18zNSg0KSwgbWF4X21h c2tfMzQoMyk+DQo+ID4gICAuLi4NCj4gPiAgIHZlY3RfbGFzdF8xMi44XzIz ID0gLk1BU0tfTE9BRCAoXzcsIDhCLCBsb29wX21hc2tfMjIpOw0KPiA+ICAg dmVjdF9fNC45XzI3ID0gdmVjdF9sYXN0XzEyLjhfMjMgKiB2ZWN0X2NzdF9f MjY7DQo+ID4gICAuTUFTS19TVE9SRSAoXzcsIDhCLCBsb29wX21hc2tfMjIs IHZlY3RfXzQuOV8yNyk7DQo+ID4gICAuLi4NCj4gPiAgIG5leHRfbWFza18z NSA9IC5XSElMRV9VTFQgKF8xLCBibmQuNV82LCB7IDAsIC4uLiB9KTsNCj4g PiAgIC4uLg0KPiA+IA0KPiA+IEVwaWxvZ3VlOg0KPiA+ICAgXzI1ID0gLkVY VFJBQ1RfTEFTVCAobG9vcF9tYXNrXzIyLCB2ZWN0X2xhc3RfMTIuOF8yMyk7 DQo+ID4gDQo+ID4gRm9yIFJWViBzaW5jZSB3ZSBwcmVmZXIgbGVuIGluIGxv b3AgY29udHJvbCwgYWZ0ZXIgdGhpcyBwYXRjaCBmb3IgUlZWOg0KPiA+IA0K PiA+IExvb3A6DQo+ID4gICAuLi4NCj4gPiAgIGxvb3BfbGVuXzIyID0gU0VM RUNUX1ZMOw0KPiA+ICAgdmVjdF9sYXN0XzEyLjhfMjMgPSAuTUFTS19MT0FE IChfNywgOEIsIGxvb3BfbGVuXzIyKTsNCj4gPiAgIHZlY3RfXzQuOV8yNyA9 IHZlY3RfbGFzdF8xMi44XzIzICogdmVjdF9jc3RfXzI2Ow0KPiA+ICAgLk1B U0tfU1RPUkUgKF83LCA4QiwgbG9vcF9sZW5fMjIsIHZlY3RfXzQuOV8yNyk7 DQo+ID4gICAuLi4NCj4gPiANCj4gPiBFcGlsb2d1ZToNCj4gPiAgIF8yNSA9 IC5WRUNfRVhUUkFDVCAobG9vcF9sZW5fMjIgKyBiaWFzIC0gMSwgdmVjdF9s YXN0XzEyLjhfMjMpOw0KPiA+IA0KPiA+IERldGFpbHMgb2YgdGhpcyBhcHBy b2FjaDoNCj4gPiANCj4gPiAxLiBTdGVwIDEgLSBBZGQgJ3ZlY3RfY2FuX3Zl Y3Rvcml6ZV9leHRyYWN0X2xhc3Rfd2l0aF9sZW5fcCcgIHRvIGVuYWJsZSBs aXZlIHZlY3Rvcml6YXRpb24NCj4gPiAgICAgICAgICAgICBmb3IgTEVOIGxv b3AgY29udHJvbC4NCj4gPiAgICANCj4gPiAgICBUaGlzIGZ1bmN0aW9uIHdl IGNoZWNrIHdoZXRoZXIgdGFyZ2V0IHN1cHBvcnQ6DQo+ID4gICAgIC0gVXNl IExFTiBhcyB0aGUgbG9vcCBjb250cm9sLg0KPiA+ICAgICAtIFN1cHBvcnQg VkVDX0VYVFJBQ1Qgb3B0YWIuDQo+ID4gDQo+ID4gMi4gU3RlcCAyIC0gUmVj b3JkIExFTiBmb3IgbG9vcCBjb250cm9sIGlmICd2ZWN0X2Nhbl92ZWN0b3Jp emVfZXh0cmFjdF9sYXN0X3dpdGhfbGVuX3AnIGlzIHRydWUuDQo+ID4gDQo+ ID4gMy4gU3RlcCAzIC0gR2VyZW5hdGUgVkVDX0VYVFJBQ1QgKHYsIExFTiAr IEJJQVMgLSAxKS4NCj4gPiANCj4gPiBUaGUgb25seSBkaWZmZXJlbmNlIGJl dHdlZW4gbWFzayBhbmQgbGVuIGlzIHRoYXQgbGVuIGlzIHVzaW5nIGxlbmd0 aCBnZW5lcmF0ZWQgYnkgU0VMRUNUX1ZMIGFuZA0KPiA+IHVzZSBWRUNfRVhU UkFDVCBwYXR0ZXJuLiBUaGUgcmVzdCBvZiB0aGUgbGl2ZSB2ZWN0b3JpemF0 aW9uIGlzIHRvdGFsbHkgdGhlIHNhbWUgQVJNIFNWRS4NCj4gPiANCj4gPiBC b290c3RyYXAgYW5kIFJlZ3Jlc3Npb24gb24gWDg2IHBhc3NlZC4NCj4gPiAN Cj4gPiBUZXN0ZWQgb24gQVJNIFFFTVUuDQo+ID4gDQo+ID4gT2sgZm9yIHRy dW5rPw0KPiA+IA0KPiA+IGdjYy9DaGFuZ2VMb2c6DQo+ID4gDQo+ID4gKiB0 cmVlLXZlY3QtbG9vcC5jYyAodmVjdF9jYW5fdmVjdG9yaXplX2V4dHJhY3Rf bGFzdF93aXRoX2xlbl9wKTogTmV3IGZ1bmN0aW9uLg0KPiA+ICh2ZWN0b3Jp emFibGVfbGl2ZV9vcGVyYXRpb24pOiBBZGQgbG9vcCBsZW4gY29udHJvbC4N Cj4gPiANCj4gPiAtLS0NCj4gPiAgZ2NjL3RyZWUtdmVjdC1sb29wLmNjIHwg NzYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0t LQ0KPiA+ICAxIGZpbGUgY2hhbmdlZCwgNzAgaW5zZXJ0aW9ucygrKSwgNiBk ZWxldGlvbnMoLSkNCj4gPiANCj4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUt dmVjdC1sb29wLmNjIGIvZ2NjL3RyZWUtdmVjdC1sb29wLmNjDQo+ID4gaW5k ZXggYmY4ZDY3N2I1ODQuLjgwOWI3M2I5NjZjIDEwMDY0NA0KPiA+IC0tLSBh L2djYy90cmVlLXZlY3QtbG9vcC5jYw0KPiA+ICsrKyBiL2djYy90cmVlLXZl Y3QtbG9vcC5jYw0KPiA+IEBAIC04OTYzLDYgKzg5NjMsMjcgQEAgdmVjdF9j YW5fdmVjdG9yaXplX3dpdGhvdXRfc2ltZF9wIChjb2RlX2hlbHBlciBjb2Rl KQ0KPiA+ICAgICYmIHZlY3RfY2FuX3ZlY3Rvcml6ZV93aXRob3V0X3NpbWRf cCAodHJlZV9jb2RlIChjb2RlKSkpOw0KPiA+ICB9DQo+ID4gIA0KPiA+ICsv KiBSZXR1cm4gdHJ1ZSBpZiB0YXJnZXQgc3VwcG9ydHMgZXh0cmFjdCBsYXN0 IHZlY3Rvcml6YXRpb24gd2l0aCBMRU4uICAqLw0KPiA+ICsNCj4gPiArc3Rh dGljIGJvb2wNCj4gPiArdmVjdF9jYW5fdmVjdG9yaXplX2V4dHJhY3RfbGFz dF93aXRoX2xlbl9wICh0cmVlIHZlY3R5cGUpDQo+ID4gK3sNCj4gPiArICAv KiBSZXR1cm4gZmFsc2UgaWYgdGFyZ2V0IGRvZXNuJ3Qgc3VwcG9ydCBMRU4g aW4gbG9vcCBjb250cm9sLiAgKi8NCj4gPiArICBtYWNoaW5lX21vZGUgdm1v ZGU7DQo+ID4gKyAgbWFjaGluZV9tb2RlIHZlY19tb2RlID0gVFlQRV9NT0RF ICh2ZWN0eXBlKTsNCj4gPiArICBpZiAoIVZFQ1RPUl9NT0RFX1AgKHZlY19t b2RlKSkNCj4gPiArICAgIHJldHVybiBmYWxzZTsNCj4gPiArICBpZiAoIWdl dF9sZW5fbG9hZF9zdG9yZV9tb2RlICh2ZWNfbW9kZSwgdHJ1ZSkuZXhpc3Rz ICgmdm1vZGUpDQo+ID4gKyAgICAgIHx8ICFnZXRfbGVuX2xvYWRfc3RvcmVf bW9kZSAodmVjX21vZGUsIGZhbHNlKS5leGlzdHMgKCZ2bW9kZSkpDQo+ID4g KyAgICByZXR1cm4gZmFsc2U7DQo+ICANCj4gU28gdGhpcyAiaGlkZGVuIiBi aXQgaW4gdGhlIGVuZCBkZWNpZGVzIHdoZXRoZXIgdG8gLi4uDQo+ICANCj4g PiArICAvKiBUYXJnZXQgbmVlZCB0byBzdXBwb3J0IFZFQ19FWFRSQUNUIHRv IGV4dHJhY3QgdGhlIGxhc3QgYWN0aXZlIGVsZW1lbnQuICAqLw0KPiA+ICsg IHJldHVybiBjb252ZXJ0X29wdGFiX2hhbmRsZXIgKHZlY19leHRyYWN0X29w dGFiLA0KPiA+ICsgdmVjX21vZGUsDQo+ID4gKyBUWVBFX01PREUgKFRSRUVf VFlQRSAodmVjdHlwZSkpKQ0KPiA+ICsgIT0gQ09ERV9GT1Jfbm90aGluZzsN Cj4gPiArfQ0KPiA+ICsNCj4gPiAgLyogQ3JlYXRlIHZlY3RvciBpbml0IGZv ciB2ZWN0b3JpemVkIGl2LiAgKi8NCj4gPiAgc3RhdGljIHRyZWUNCj4gPiAg dmVjdF9jcmVhdGVfbm9ubGluZWFyX2l2X2luaXQgKGdpbXBsZV9zZXEqIHN0 bXRzLCB0cmVlIGluaXRfZXhwciwNCj4gPiBAQCAtMTAyNzksNyArMTAzMDAs OCBAQCB2ZWN0b3JpemFibGVfbGl2ZV9vcGVyYXRpb24gKHZlY19pbmZvICp2 aW5mbywgc3RtdF92ZWNfaW5mbyBzdG10X2luZm8sDQo+ID4gICAgICAgIGlm IChsb29wX3ZpbmZvICYmIExPT1BfVklORk9fQ0FOX1VTRV9QQVJUSUFMX1ZF Q1RPUlNfUCAobG9vcF92aW5mbykpDQo+ID4gIHsNCj4gPiAgICBpZiAoIWRp cmVjdF9pbnRlcm5hbF9mbl9zdXBwb3J0ZWRfcCAoSUZOX0VYVFJBQ1RfTEFT VCwgdmVjdHlwZSwNCj4gPiAtICAgICAgICBPUFRJTUlaRV9GT1JfU1BFRUQp KQ0KPiA+ICsgICAgICAgIE9QVElNSVpFX0ZPUl9TUEVFRCkNCj4gPiArICAg ICAgICYmICF2ZWN0X2Nhbl92ZWN0b3JpemVfZXh0cmFjdF9sYXN0X3dpdGhf bGVuX3AgKHZlY3R5cGUpKQ0KPiA+ICAgICAgew0KPiA+ICAgICAgICBpZiAo ZHVtcF9lbmFibGVkX3AgKCkpDQo+ID4gIGR1bXBfcHJpbnRmX2xvYyAoTVNH X01JU1NFRF9PUFRJTUlaQVRJT04sIHZlY3RfbG9jYXRpb24sDQo+ID4gQEAg LTEwMzA4LDkgKzEwMzMwLDE0IEBAIHZlY3Rvcml6YWJsZV9saXZlX29wZXJh dGlvbiAodmVjX2luZm8gKnZpbmZvLCBzdG10X3ZlY19pbmZvIHN0bXRfaW5m bywNCj4gPiAgICBlbHNlDQo+ID4gICAgICB7DQo+ID4gICAgICAgIGdjY19h c3NlcnQgKG5jb3BpZXMgPT0gMSAmJiAhc2xwX25vZGUpOw0KPiA+IC0gICAg ICAgdmVjdF9yZWNvcmRfbG9vcF9tYXNrIChsb29wX3ZpbmZvLA0KPiA+IC0g ICAgICAmTE9PUF9WSU5GT19NQVNLUyAobG9vcF92aW5mbyksDQo+ID4gLSAg ICAgIDEsIHZlY3R5cGUsIE5VTEwpOw0KPiA+ICsgICAgICAgaWYgKHZlY3Rf Y2FuX3ZlY3Rvcml6ZV9leHRyYWN0X2xhc3Rfd2l0aF9sZW5fcCAodmVjdHlw ZSkpDQo+ID4gKyB2ZWN0X3JlY29yZF9sb29wX2xlbiAobG9vcF92aW5mbywN Cj4gPiArICAgICAgICZMT09QX1ZJTkZPX0xFTlMgKGxvb3BfdmluZm8pLA0K PiA+ICsgICAgICAgMSwgdmVjdHlwZSwgMSk7DQo+ICANCj4gLi4gcmVjb3Jk IGEgbG9vcF9sZW4gaGVyZS4gIEkgdGhpbmsgcG93ZXJwYyBhdCBsZWFzdCBo YXMgLlZFQ19FWFRSQUNUIGFzIA0KPiB3ZWxsIGJ1dCBvZiBjb3Vyc2UgLlZF Q19FWFRSQUNUIHN1cHBvcnQgaXRzZWxmIGRvZXNuJ3QgaGF2ZSBhbnl0aGlu ZyB0bw0KPiBkbyB3aXRoICdsZW4nIHN1cHBvcnQuDQo+ICANCj4geDg2IGhh cyAuVkVDX1NFVCBidXQgbm90IHlldCAuVkVDX0VYVFJBQ1QsIGlmIGl0IGdl dHMgLlZFQ19FWFRSQUNUDQo+IGl0cyBwYXJ0aWFsIHZlY3RvciBzdXBwb3J0 IHN0aWxsIHdhbnRzIG1hc2tzLCBub3QgbGVucyAoYW5kIG9uY2UNCj4gd2Ug cmVjb3JkIGJvdGggd2UgZmFpbCkuDQo+ICANCj4gU28gaG93IGNhbiB3ZSBy ZXNvbHZlIHRoZSBpc3N1ZSB3aGVuIGEgbm9uLVZMIG9wZXJhdGlvbiBsaWtl DQo+IC5WRUNfRVhUUkFDVCBpcyB1c2VkIGZvciBfbGVuIHN1cHBvcnQ/DQo+ ICANCj4gTm90ZSB4ODYgZG9lbnMndCB5ZXQgc3VwcG9ydCBJRk5fRVhUUkFD VF9MQVNUIGVpdGhlci4NCj4gIA0KPiBTbywgd2h5IGRvIHdlIHRlc3QgZm9y IGdldF9sZW5fbG9hZF9zdG9yZV9tb2RlIGFuZCBub3QganVzdCBmb3INCj4g VkVDX0VYVFJBQ1Q/DQo+ICANCj4gPiArICAgICAgIGVsc2UNCj4gPiArIHZl Y3RfcmVjb3JkX2xvb3BfbWFzayAobG9vcF92aW5mbywNCj4gPiArICAgICAg ICAmTE9PUF9WSU5GT19NQVNLUyAobG9vcF92aW5mbyksDQo+ID4gKyAgICAg ICAgMSwgdmVjdHlwZSwgTlVMTCk7DQo+ID4gICAgICB9DQo+ID4gIH0NCj4g PiAgICAgICAgLyogPz8/ICBFbmFibGUgZm9yIGxvb3AgY29zdGluZyBhcyB3 ZWxsLiAgKi8NCj4gPiBAQCAtMTAzMzYsNyArMTAzNjMsOSBAQCB2ZWN0b3Jp emFibGVfbGl2ZV9vcGVyYXRpb24gKHZlY19pbmZvICp2aW5mbywgc3RtdF92 ZWNfaW5mbyBzdG10X2luZm8sDQo+ID4gICAgZ2ltcGxlICp2ZWNfc3RtdDsN Cj4gPiAgICBpZiAoc2xwX25vZGUpDQo+ID4gICAgICB7DQo+ID4gLSAgICAg IGdjY19hc3NlcnQgKCFsb29wX3ZpbmZvIHx8ICFMT09QX1ZJTkZPX0ZVTExZ X01BU0tFRF9QIChsb29wX3ZpbmZvKSk7DQo+ID4gKyAgICAgIGdjY19hc3Nl cnQgKCFsb29wX3ZpbmZvDQo+ID4gKyAgIHx8ICghTE9PUF9WSU5GT19GVUxM WV9NQVNLRURfUCAobG9vcF92aW5mbykNCj4gPiArICAgICAgICYmICFMT09Q X1ZJTkZPX0ZVTExZX1dJVEhfTEVOR1RIX1AgKGxvb3BfdmluZm8pKSk7DQo+ ID4gIA0KPiA+ICAgICAgICAvKiBHZXQgdGhlIGNvcnJlY3Qgc2xwIHZlY3Rv cml6ZWQgc3RtdC4gICovDQo+ID4gICAgICAgIHZlY19saHMgPSBTTFBfVFJF RV9WRUNfREVGUyAoc2xwX25vZGUpW3ZlY19lbnRyeV07DQo+ID4gQEAgLTEw MzgwLDcgKzEwNDA5LDQyIEBAIHZlY3Rvcml6YWJsZV9saXZlX29wZXJhdGlv biAodmVjX2luZm8gKnZpbmZvLCBzdG10X3ZlY19pbmZvIHN0bXRfaW5mbywN Cj4gPiAgDQo+ID4gICAgICAgIGdpbXBsZV9zZXEgc3RtdHMgPSBOVUxMOw0K PiA+ICAgICAgICB0cmVlIG5ld190cmVlOw0KPiA+IC0gICAgICBpZiAoTE9P UF9WSU5GT19GVUxMWV9NQVNLRURfUCAobG9vcF92aW5mbykpDQo+ID4gKyAg ICAgIGlmIChMT09QX1ZJTkZPX0ZVTExZX1dJVEhfTEVOR1RIX1AgKGxvb3Bf dmluZm8pKQ0KPiA+ICsgew0KPiA+ICsgICAvKiBFbWl0Og0KPiA+ICsNCj4g PiArICAgICAgICBTQ0FMQVJfUkVTID0gVkVDX0VYVFJBQ1QgPFZFQ19MSFMs IExFTiArIEJJQVMgLSAxPg0KPiA+ICsNCj4gPiArICAgICAgd2hlcmUgVkVD X0xIUyBpcyB0aGUgdmVjdG9yaXplZCBsaXZlLW91dCByZXN1bHQgYW5kIE1B U0sgaXMNCj4gPiArICAgICAgdGhlIGxvb3AgbWFzayBmb3IgdGhlIGZpbmFs IGl0ZXJhdGlvbi4gICovDQo+ID4gKyAgIGdjY19hc3NlcnQgKG5jb3BpZXMg PT0gMSAmJiAhc2xwX25vZGUpOw0KPiA+ICsgICBnaW1wbGVfc2VxIHRlbSA9 IE5VTEw7DQo+ID4gKyAgIGdpbXBsZV9zdG10X2l0ZXJhdG9yIGdzaSA9IGdz aV9sYXN0ICh0ZW0pOw0KPiA+ICsgICB0cmVlIGxlbg0KPiA+ICsgICAgID0g dmVjdF9nZXRfbG9vcF9sZW4gKGxvb3BfdmluZm8sICZnc2ksDQo+ID4gKyAm TE9PUF9WSU5GT19MRU5TIChsb29wX3ZpbmZvKSwNCj4gPiArIDEsIHZlY3R5 cGUsIDAsIDApOw0KPiA+ICsNCj4gPiArICAgLyogQklBUyAtIDEuICAqLw0K PiA+ICsgICBzaWduZWQgY2hhciBiaWFzdmFsID0gTE9PUF9WSU5GT19QQVJU SUFMX0xPQURfU1RPUkVfQklBUyAobG9vcF92aW5mbyk7DQo+ID4gKyAgIHRy ZWUgYmlhc19taW51c19vbmUNCj4gPiArICAgICA9IGludF9jb25zdF9iaW5v cCAoTUlOVVNfRVhQUiwNCj4gPiArICAgICAgICBidWlsZF9pbnRfY3N0IChU UkVFX1RZUEUgKGxlbiksIGJpYXN2YWwpLA0KPiA+ICsgICAgICAgIGJ1aWxk X29uZV9jc3QgKFRSRUVfVFlQRSAobGVuKSkpOw0KPiA+ICsNCj4gPiArICAg LyogTEFTVF9JTkRFWCA9IExFTiArIChCSUFTIC0gMSkuICAqLw0KPiA+ICsg ICB0cmVlIGxhc3RfaW5kZXggPSBnaW1wbGVfYnVpbGQgKCZzdG10cywgUExV U19FWFBSLCBUUkVFX1RZUEUgKGxlbiksDQo+ID4gKyAgIGxlbiwgYmlhc19t aW51c19vbmUpOw0KPiA+ICsNCj4gPiArICAgLyogU0NBTEFSX1JFUyA9IFZF Q19FWFRSQUNUIDxWRUNfTEhTLCBMRU4gKyBCSUFTIC0gMT4uICAqLw0KPiA+ ICsgICB0cmVlIHNjYWxhcl9yZXMNCj4gPiArICAgICA9IGdpbXBsZV9idWls ZCAoJnN0bXRzLCBDRk5fVkVDX0VYVFJBQ1QsIFRSRUVfVFlQRSAodmVjdHlw ZSksDQo+ID4gKyAgICAgdmVjX2xoc19waGksIGxhc3RfaW5kZXgpOw0KPiA+ ICsNCj4gIA0KPiBjYW4gd2UgZG91YmxlLWNoZWNrIHRoaXMgb24gcG93ZXJw YyBhbmQgczM5MD8NCj4gIA0KPiBUaGFua3MsDQo+IFJpY2hhcmQuDQo+ICAN Cj4gPiArICAgLyogQ29udmVydCB0aGUgZXh0cmFjdGVkIHZlY3RvciBlbGVt ZW50IHRvIHRoZSBzY2FsYXIgdHlwZS4gICovDQo+ID4gKyAgIG5ld190cmVl ID0gZ2ltcGxlX2NvbnZlcnQgKCZzdG10cywgbGhzX3R5cGUsIHNjYWxhcl9y ZXMpOw0KPiA+ICsgfQ0KPiA+ICsgICAgICBlbHNlIGlmIChMT09QX1ZJTkZP X0ZVTExZX01BU0tFRF9QIChsb29wX3ZpbmZvKSkNCj4gPiAgew0KPiA+ICAg IC8qIEVtaXQ6DQo+ID4gIA0KPiAgDQo+IA0KIA0KLS0gDQpSaWNoYXJkIEJp ZW5lciA8cmd1ZW50aGVyQHN1c2UuZGU+DQpTVVNFIFNvZnR3YXJlIFNvbHV0 aW9ucyBHZXJtYW55IEdtYkgsDQpGcmFua2Vuc3RyYXNzZSAxNDYsIDkwNDYx IE51ZXJuYmVyZywgR2VybWFueTsNCkdGOiBJdm8gVG90ZXYsIEFuZHJldyBN Y0RvbmFsZCwgV2VybmVyIEtub2JsaWNoOyAoSFJCIDM2ODA5LCBBRyBOdWVy bmJlcmcpDQogDQo= ------=_001_NextPart428284830175_=------