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 C6AF93858D35 for ; Fri, 9 Jun 2023 10:49:37 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C6AF93858D35 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: bizesmtp73t1686307767topdmoyc Received: from LAPTOP-EPITNQBU ( [58.60.1.20]) by bizesmtp.qq.com (ESMTP) with id ; Fri, 09 Jun 2023 18:49:26 +0800 (CST) X-QQ-SSF: 01400000000000F0S000000A0000000 X-QQ-FEAT: RrZlkntZBfmeNJpalZ8nq6rZZwCbxXj77SeTgU/ZITpzuyeSO3lInhPfUuAPy fzYvyiA0Clyy18B16Z0Nkl7AnJp0SmwIhYBtikEOTKyeZyuAVF+OKa/g2TpeVMVaIZnZa4O aznCzvwgNl/esHOiZ+5zV9b13+GG3ZLD5FRMU3uC28YY0gPhllvxBeaLx47qSaLsbW2px0g eNx318nwI1V6pqeak/lRqWXlv9tqm1cUGvCi6VzQQJ3brwfapufcIYP+uxcRax6E3GnQMqT ickSRWItQRMo5spB1XfIqaWUtg/jdjp33SWIdH/Od0g1S53cFRtDxOCeHfXrdqSdQSB0k9Z VnVIwMUGcmk7dc8NONvP5NT+7IFa8U826YGu5cNzY1NCj4ZXlBAOqJ7hk5Qs/QHbyyzVce4 t24RkXqZMnyDeMEodzeNp2MFRFAcw0rc X-QQ-GoodBg: 2 X-BIZMAIL-ID: 3328970830146660809 Date: Fri, 9 Jun 2023 18:49:26 +0800 From: "juzhe.zhong@rivai.ai" To: Kito.cheng Cc: gcc-patches , kito.cheng , palmer , palmer , jeffreyalaw , "Robin Dapp" , pan2.li Subject: Re: Re: [PATCH V2] RISC-V: Rework Phase 5 && Phase 6 of VSETVL PASS References: <20230609104105.9100-1-juzhe.zhong@rivai.ai>, X-Priority: 3 X-GUID: B03AD5A6-930C-474A-9515-A6A3E6787DDC X-Has-Attach: no X-Mailer: Foxmail 7.2.16.188[cn] Mime-Version: 1.0 Message-ID: Content-Type: multipart/alternative; boundary="----=_001_NextPart288755728020_=----" X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvrgz:qybglogicsvrgz7a-one-0 X-Spam-Status: No, score=-6.8 required=5.0 tests=BAYES_00,GIT_PATCH_0,HTML_MESSAGE,KAM_DMARC_STATUS,KAM_SHORT,LIKELY_SPAM_BODY,RCVD_IN_BARRACUDACENTRAL,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,RCVD_IN_SORBS_WEB,SCC_10_SHORT_WORD_LINES,SCC_20_SHORT_WORD_LINES,SCC_5_SHORT_WORD_LINES,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE,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_NextPart288755728020_=---- Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 VGhpcyBwYXRjaCByZW1vdmVkIDJuZCB0aW1lIGluaXRpYWxpemF0aW9uIG9m IFJUTF9TU0Egd2hpY2ggaXMgdGhlIGFwcHJvYWNoIHdlIGJvdGggaGF0ZS4N Cg0KDQoNCmp1emhlLnpob25nQHJpdmFpLmFpDQogDQpGcm9tOiBLaXRvIENo ZW5nDQpEYXRlOiAyMDIzLTA2LTA5IDE4OjQ1DQpUbzoganV6aGUuemhvbmcN CkNDOiBnY2MtcGF0Y2hlczsga2l0by5jaGVuZzsgcGFsbWVyOyBwYWxtZXI7 IGplZmZyZXlhbGF3OyByZGFwcC5nY2M7IHBhbjIubGkNClN1YmplY3Q6IFJl OiBbUEFUQ0ggVjJdIFJJU0MtVjogUmV3b3JrIFBoYXNlIDUgJiYgUGhhc2Ug NiBvZiBWU0VUVkwgUEFTUw0KVGhhbmtmdWwgeW91IHNlbmQgdGhpcyBiZWZv cmUgd2Vla2VuZCwgSSBjb3VsZCBydW4gdGhlIGZ1enp5IHRlc3RpbmcNCmR1 cmluZyB0aGlzIHdlZWtlbmQgOlANCiANCk9uIEZyaSwgSnVuIDksIDIwMjMg YXQgNjo0MeKAr1BNIDxqdXpoZS56aG9uZ0ByaXZhaS5haT4gd3JvdGU6DQo+ DQo+IEZyb206IEp1emhlLVpob25nIDxqdXpoZS56aG9uZ0ByaXZhaS5haT4N Cj4NCj4gVGhpcyBwYXRjaCBpcyB0byByZXdvcmsgUGhhc2UgNSAmJiBQaGFz ZSA2IG9mIFZTRVRWTCBQQVNTIHNpbmNlIFBoYXNlIDUgJiYgUGhhc2UgNg0K PiBhcmUgcXVpdGUgbWVzc3kgYW5kIGNhdXNlIHNvbWUgYnVncyBkaXNjb3Zl cmVkIGJ5IG15IGRvd25zdHJlYW0gYXV0by12ZWN0b3JpemF0aW9uDQo+IHRl c3QtZ2VuZXJhdG9yLg0KPg0KPiBCZWZvcmUgdGhpcyBwYXRjaC4NCj4NCj4g UGhhc2UgNSBpcyBjbGVhbnVwX2luc25zIGlzIHRoZSBmdW5jdGlvbiByZW1v dmUgQVZMIG9wZXJhbmQgZGVwZW5kZW5jeSBmcm9tIGVhY2ggUlZWIGluc3Ry dWN0aW9uLg0KPiBFLmcuIHZhZGQudnYgKHVzZSBhNSksIGFmdGVyIFBoYXNl IDUsID09PT0+IHZhZGQudnYgKHVzZSBjb25zdF9pbnQgMCkuIFNpbmNlICJh NSIgaXMgdXNlZCBpbiAidnNldHZsIiBpbnN0cnVjdGlvbnMgYW5kDQo+IGFm dGVyIHRoZSBjb3JyZWN0ICJ2c2V0dmwiIGluc3RydWN0aW9ucyBhcmUgaW5z ZXJ0ZWQsIGVhY2ggUlZWIGluc3RydWN0aW9uIGRvZXNuJ3QgbmVlZCBBVkwg b3BlcmFuZCAiYTUiIGFueW1vcmUuIFRoZW4sDQo+IHdlIHJlbW92ZSB0aGlz IG9wZXJhbmQgZGVwZW5kZW5jeSBoZWxwcyBmb3IgdGhlIGZvbGxvd2luZyBz Y2hlZHVsaW5nIFBBU1MuDQo+DQo+IFBoYXNlIDYgaXMgcHJvcGFnYXRlX2F2 bCBkbyB0aGUgZm9sbG93aW5nIDIgdGhpbmdzOg0KPiAxLiBMb2NhbCAmJiBH bG9iYWwgdXNlciB2c2V0dmwgaW5zdHJ1Y3Rpb25zIG9wdGltaXphdGlvbi4N Cj4gICAgRS5nLg0KPiAgICAgICB2c2V0dmxpIGEyLCBhMiwgZTgsIG1mOCAg ID09PT09PT4gQ2hhbmdlIGl0IGludG8gdnNldHZsaSBhMiwgYTIsIGUzMiwg bWYyDQo+ICAgICAgIHZzZXR2bGkgemVybyxhMiwgZTMyLCBtZjIgID09PT09 PT4gZWxpbWluYXRlDQo+IDIuIE9wdGltaXplIHVzZXIgdnNldHZsIGZyb20g InZzZXR2bCBhMixhMiIgaW50byAidnNldHZsIHplcm8sYTIiIGlmICJhMiIg aXMgbm90IHVzZWQgYnkgYW55IGluc3RydWN0aW9ucy4NCj4gU2luY2UgZnJv bSBQaGFzZSAxIH4gUGhhc2UgNCB3aGljaCBpbnNlcnRzICJ2c2V0dmxpIiBp bnN0cnVjdGlvbnMgYmFzZSBvbiBMQ00gd2hpY2ggY2hhbmdlIHRoZSBDRkcs IEkgcmUtbmV3IGEgbmV3DQo+IFJUTF9TU0EgZnJhbWV3b3JrICh3aGljaCBp cyBtb3JlIGV4cGVuc2l2ZSB0aGFuIGp1c3QgdXNpbmcgREYpIGZvciBQaGFz ZSA2IGFuZCBvcHRtaXplIHVzZXIgdnNldHZsaSBiYXNlIG9uIHRoZSBuZXcg UlRMX1NTQS4NCj4NCj4gVGhlcmUgYXJlIDIgaXNzdWVzIGluIFBoYXNlIDUg JiYgUGhhc2UgNjoNCj4gMS4gbG9jYWxfZWxpbWluYXRlX3ZzZXR2bF9pbnNu IHdhcyBpbnRyb2R1Y2VkIGJ5IEBraXRvIHdoaWNoIGNhbiBkbyBiZXR0ZXIg bG9jYWwgdXNlciB2c2V0dmwgb3B0aW1pemF0aW9ucyBiZXR0ZXIgdGhhbg0K PiAgICBQaGFzZSA2IGRvLCBzdWNoIGFwcHJvYWNoIGRvZXNuJ3QgbmVlZCB0 byByZS1uZXcgdGhlIFJUTF9TU0EgZnJhbWV3b3JrLiBTbyB0aGUgbG9jYWwg dXNlciB2c2V0dmxpIGluc3RydWN0aW9ucyBvcHRpbWl6YWl0b24NCj4gICAg aW4gUGhhc2UgNiBpcyByZWR1bmRhbnQgYW5kIHNob3VsZCBiZSByZW1vdmVk Lg0KPiAyLiBBIGJ1ZyBkaXNjb3ZlcmVkIGJ5IG15IGRvd25zdHJlYW0gYXV0 by12ZWN0b3JpemF0aW9uIHRlc3QtZ2VuZXJhdG9yIChJIGNhbid0IHB1dCB0 aGUgdGVzdCBpbiB0aGlzIHBhdGNoIHNpbmNlIHdlIGFyZSBtaXNzaW5nIGF1 dG92ZWMNCj4gICAgcGF0dGVybnMgZm9yIGl0IHNvIHdlIGNhbid0IHVzZSB0 aGUgdXBzdHJlYW0gR0NDIGRpcmVjdGx5IHJlcHJvZHVjZSBzdWNoIGlzc3Vl IGJ1dCBJIHdpbGwgcmVtZW1iZXIgcHV0IGl0IGJhY2sgYWZ0ZXIgSSBzdXBw b3J0IHRoZQ0KPiAgICBuZWNlc3NhcnkgYXV0b3ZlYyBwYXR0ZXJucykuIFN1 Y2ggYnVnIGlzIGNhdXNpbmcgYnkgdXNpbmcgUlRMX1NTQSByZS1uZXcgZnJh bWV3b3JrLiBUaGUgaXNzdWUgZGVzY3JpcHRpb24gaXMgdGhpczoNCj4NCj4g QmVmb3JlIFBoYXNlIDY6DQo+ICAgIC4uLg0KPiAgICBpbnNuMTogdnNldGx2 aSBhMywgMTcgPD09PT09PT09PT0gZ2VuZXJhdGVkIGJ5IFNFTEVDVF9WTCBh dXRvLXZlYyBwYXR0ZXJuLg0KPiAgICBzbGxpIGE0LGEzLDMNCj4gICAgLi4u DQo+ICAgIGluc24yOiB2c2V0dmxpIHplcm8sIGEzLCAuLi4NCj4gICAgbG9h ZCAodXNlIGNvbnN0X2ludCAwLCBiZWZvcmUgUGhhc2UgNSwgaXQncyB1c2lu ZyBhMywgYnV0IHRoZSB1c2Ugb2YgImEzIiBpcyByZW1vdmVkIGluIFBoYXNl IDUpDQo+ICAgIC4uLg0KPg0KPiBJbiBQaGFzZSA2LCB3ZSBpdGVyYXRlIHRv IGluc24yLCB0aGVuIGdldCB0aGUgZGVmIG9mICJhMyIgd2hpY2ggaXMgdGhl IGluc24xLg0KPiBpbnNuMiBpcyB0aGUgdnNldHZsaSBpbnN0cnVjdGlvbiBp bnNlcnRlZCBpbiBQaGFzZSA0IHdoaWNoIGlzIG5vdCBpbmNsdWRlZCBpbiB0 aGUgUkxUX1NTQSBmcmFtZXdvcmsNCj4gZXZlbiB0aG91Z2ggd2UgcmVuZXcg aXQgKEkgZGlkbid0IHRha2UgYSBsb29rIGF0IGl0IGFuZCBJIGRvbid0IHRo aW5rIHdlIG5lZWQgdG8gbm93KS4NCj4gQmFzZSBvbiB0aGlzIHNpdHVhdGlv biwgdGhlIGRlZl9pbmZvIG9mIGluc24yIGhhcyB0aGUgaW5mb3JtYXRpb24g InNldC0+c2luZ2xlX25vbmRlYnVnX2luc25fdXNlICgpIg0KPiB3aGljaCBy ZXR1cm4gdHJ1ZS4gT2J2aW91c2x5LCB0aGlzIGluZm9ybWF0aW9uIGlzIG5v dCBjb3JyZWN0LCBzaW5jZSBpbnNuMSBoYXMgYWxlYXN0IDIgdXNlczoNCj4g MSkuIHNsbGkgYTQsYTMsMyAyKS5pbnNuMjogdnNldHZsaSB6ZXJvLCBhMywg Li4uIFRoZW4sIHRoZSB0ZXN0IGdlbmVyYXRlZCBieSBteSBkb3duc3RyZWFt IHRlc3QtZ2VuZXJhdG9yDQo+IGV4ZWN1dGlvbiB0ZXN0IGZhaWxlZC4NCj4N Cj4gQ29uY2x1c2lvbiBvZiBSVExfU1NBIGZyYW1ld29yazoNCj4gQmVmb3Jl IHRoaXMgcGF0Y2gsIHdlIGluaXRpYWxpemUgUlRMX1NTQSAyIHRpbWVzLiBP bmUgaXMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgVlNFVFZMIFBBU1Mgd2hp Y2ggaXMgYWJzb2x1dGVseSBjb3JyZWN0LCB0aGUgb3RoZXINCj4gaXMgcmUt bmV3IGFmdGVyIFBoYXNlIDQgKExDTSkgaGFzIGluY29ycmVjdCBpbmZvcm1h dGlvbiB0aGF0IGNhdXNlcyBidWdzLg0KPg0KPiBCZXNpZGVzLCB3ZSBkb24n dCBsaWtlIHRvIGluaXRpYWxpemUgUlRMX1NTQSBzZWNvbmQgdGltZSBpdCBz ZWVtcyB0byBiZSBhIHdhc3RlIHNpbmNlIHdlIGp1c3QgbmVlZCB0byBkbyBh IGxpdHRsZSBvcHRpbWl6YXRpb24uDQo+DQo+IEJhc2Ugb24gYWxsIGNpcmN1 bXN0YW5jZXMgSSBkZXNjcmliZWQgYWJvdmUsIEkgcmV3b3JrIGFuZCByZW9y Z2FuaXplIFBoYXNlIDUgJiYgUGhhc2UgNiBhcyBmb2xsb3dzOg0KPiAxLiBQ aGFzZSA1IGlzIGNhbGxlZCBzc2FfcG9zdF9vcHRpbWl6YXRpb24gd2hpY2gg aXMgZG9pbmcgdGhlIG9wdGltaXphdGlvbiBiYXNlIG9uIHRoZSBSVExfU1NB IGluZm9ybWF0aW9uIChUaGUgUlRMX1NTQSBpcyBpbml0aWFsaXplZA0KPiAg ICBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBWU0VUVkwgUEFTUywgbm8gbmVl ZCB0byByZS1uZXcgaXQgYWdhaW4pLiBUaGlzIHBoYXNlIGluY2x1ZGVzIDMg b3B0aW1pemFpdG9uczoNCj4gICAgMSkuIGxvY2FsX2VsaW1pbmF0ZV92c2V0 dmxfaW5zbiB3ZSBhbHJlYWR5IGhhdmUgKG5vIGNoYW5nZSkuDQo+ICAgIDIp LiBnbG9iYWxfZWxpbWluYXRlX3ZzZXR2bF9pbnNuIC0tLT4gbmV3IG9wdGlt aXphaXRvbiBzcGxpdHRlZCBmcm9tIG9yaWduYWwgUGhhc2UgNiBidXQgd2l0 aCBtb3JlIHBvd2VyZnVsIGFuZCByZWxpYWJsZSBpbXBsZW1lbnRhdGlvbi4N Cj4gICAgICAgRS5nLg0KPiAgICAgICB2b2lkIGYoaW50OF90ICpiYXNlLCBp bnQ4X3QgKm91dCwgc2l6ZV90IHZsLCBzaXplX3QgbSwgc2l6ZV90IGspIHsN Cj4gICAgICAgICBzaXplX3QgYXZsOw0KPiAgICAgICAgIGlmIChtID4gMTAw KQ0KPiAgICAgICAgICAgYXZsID0gX19yaXNjdl92c2V0dmxfZTE2bWY0KHZs IDw8IDQpOw0KPiAgICAgICAgIGVsc2UNCj4gICAgICAgICAgIGF2bCA9IF9f cmlzY3ZfdnNldHZsX2UzMm1mMih2bCA+PiA4KTsNCj4gICAgICAgICBmb3Ig KHNpemVfdCBpID0gMDsgaSA8IG07IGkrKykgew0KPiAgICAgICAgICAgdmlu dDhtZjhfdCB2MCA9IF9fcmlzY3ZfdmxlOF92X2k4bWY4KGJhc2UgKyBpLCBh dmwpOw0KPiAgICAgICAgICAgdjAgPSBfX3Jpc2N2X3ZhZGRfdnZfaThtZjgg KHYwLCB2MCwgYXZsKTsNCj4gICAgICAgICAgIF9fcmlzY3ZfdnNlOF92X2k4 bWY4KG91dCArIGksIHYwLCBhdmwpOw0KPiAgICAgICAgIH0NCj4gICAgICAg fQ0KPg0KPiAgICAgICBUaGlzIGV4YW1wbGUgZmFpbGVkIHRvIGdsb2JhbCB1 c2VyIHZzZXR2bCBvcHRpbWl6ZSBiZWZvcmUgdGhpcyBwYXRjaDoNCj4gICAg ICAgZjoNCj4gICAgICAgICAgICAgICBsaSAgICAgIGE1LDEwMA0KPiAgICAg ICAgICAgICAgIGJsZXUgICAgYTMsYTUsLkwyDQo+ICAgICAgICAgICAgICAg c2xsaSAgICBhMixhMiw0DQo+ICAgICAgICAgICAgICAgdnNldHZsaSBhNCxh MixlMTYsbWY0LHRhLG11DQo+ICAgICAgIC5MMzoNCj4gICAgICAgICAgICAg ICBsaSAgICAgIGE1LDANCj4gICAgICAgICAgICAgICB2c2V0dmxpIHplcm8s YTQsZTgsbWY4LHRhLG1hDQo+ICAgICAgIC5MNToNCj4gICAgICAgICAgICAg ICBhZGQgICAgIGE2LGEwLGE1DQo+ICAgICAgICAgICAgICAgYWRkICAgICBh MixhMSxhNQ0KPiAgICAgICAgICAgICAgIHZsZTgudiAgdjEsMChhNikNCj4g ICAgICAgICAgICAgICBhZGRpICAgIGE1LGE1LDENCj4gICAgICAgICAgICAg ICB2YWRkLnZ2IHYxLHYxLHYxDQo+ICAgICAgICAgICAgICAgdnNlOC52ICB2 MSwwKGEyKQ0KPiAgICAgICAgICAgICAgIGJndHUgICAgYTMsYTUsLkw1DQo+ ICAgICAgIC5MMTA6DQo+ICAgICAgICAgICAgICAgcmV0DQo+ICAgICAgIC5M MjoNCj4gICAgICAgICAgICAgICBiZXEgICAgIGEzLHplcm8sLkwxMA0KPiAg ICAgICAgICAgICAgIHNybGkgICAgYTIsYTIsOA0KPiAgICAgICAgICAgICAg IHZzZXR2bGkgYTQsYTIsZTMyLG1mMix0YSxtdQ0KPiAgICAgICAgICAgICAg IGogICAgICAgLkwzDQo+ICAgICAgIFdpdGggdGhpcyBwYXRjaDoNCj4gICAg ICAgZjoNCj4gICAgICAgICAgICAgICBsaSAgICAgIGE1LDEwMA0KPiAgICAg ICAgICAgICAgIGJsZXUgICAgYTMsYTUsLkwyDQo+ICAgICAgICAgICAgICAg c2xsaSAgICBhMixhMiw0DQo+ICAgICAgICAgICAgICAgdnNldHZsaSB6ZXJv LGEyLGU4LG1mOCx0YSxtYQ0KPiAgICAgICAuTDM6DQo+ICAgICAgICAgICAg ICAgbGkgICAgICBhNSwwDQo+ICAgICAgIC5MNToNCj4gICAgICAgICAgICAg ICBhZGQgICAgIGE2LGEwLGE1DQo+ICAgICAgICAgICAgICAgYWRkICAgICBh MixhMSxhNQ0KPiAgICAgICAgICAgICAgIHZsZTgudiAgdjEsMChhNikNCj4g ICAgICAgICAgICAgICBhZGRpICAgIGE1LGE1LDENCj4gICAgICAgICAgICAg ICB2YWRkLnZ2IHYxLHYxLHYxDQo+ICAgICAgICAgICAgICAgdnNlOC52ICB2 MSwwKGEyKQ0KPiAgICAgICAgICAgICAgIGJndHUgICAgYTMsYTUsLkw1DQo+ ICAgICAgIC5MMTA6DQo+ICAgICAgICAgICAgICAgcmV0DQo+ICAgICAgIC5M MjoNCj4gICAgICAgICAgICAgICBiZXEgICAgIGEzLHplcm8sLkwxMA0KPiAg ICAgICAgICAgICAgIHNybGkgICAgYTIsYTIsOA0KPiAgICAgICAgICAgICAg IHZzZXR2bGkgemVybyxhMixlOCxtZjgsdGEsbWENCj4gICAgICAgICAgICAg ICBqICAgICAgIC5MMw0KPg0KPiAgICAzKS4gUmVtb3ZlIEFWTCBvcGVyYW5k IGRlcGVuZGVuY3kgb2YgZWFjaCBSVlYgaW5zdHJ1Y3Rpb25zLg0KPg0KPiAy LiBQaGFzZSA2IGlzIGNhbGxlZCBkZl9wb3N0X29wdGltaXphdGlvbjogT3B0 aW1pemUgInZzZXR2bCBhMyxhMi4uLi4iIGludG8gT3B0aW1pemUgInZzZXR2 bCB6ZXJvLGEyLi4uLiIgYmFzZSBvbg0KPiAgICBkYXRhZmxvdyBhbmFseXNp cyBvZiBuZXcgQ0ZHIChuZXcgQ0ZHIGlzIGNyZWF0ZWQgYnkgTENNKS4gVGhl IHJlYXNvbiB3ZSBuZWVkIHRvIGRvIHVzZSBuZXcgQ0ZHIGFuZCBhZnRlciBQ aGFzZSA1Og0KPiAgICAuLi4NCj4gICAgdnNldHZsIGEzLCBhMi4uLg0KPiAg ICB2YWRkLnZ2ICh1c2UgYTMpDQo+ICAgIElmIHdlIGRvbid0IGhhdmUgUGhh c2UgNSB3aGljaCByZW1vdmVzIHRoZSAiYTMiIHVzZSBpbiB2YWRkLnZ2LCB3 ZSB3aWxsIGZhaWwgdG8gb3B0aW1pemUgdnNldHZsIGEzLGEyIGludG8gdnNl dHZsIHplcm8sYTIuDQo+DQo+ICAgIFRoaXMgcGF0Y2ggcGFzc2VkIGFsbCB0 ZXN0cyBpbiBydnYuZXhwIHdpdGggT05MWSBwZWZvcm1hbmNlICYmIGNvZGVn ZW4gaW1wcm92ZWQgKG5vIHBlcmZvcm1hbmNlIGRlY2xpbmUgYW5kIG5vIGJ1 Z3MgaW5jbHVkaW5nIG15DQo+ICAgIGRvd25zdHJlYW0gdGVzdHMpLg0KPg0K PiBnY2MvQ2hhbmdlTG9nOg0KPg0KPiAgICAgICAgICogY29uZmlnL3Jpc2N2 L3Jpc2N2LXZzZXR2bC5jYyAoYXZhaWxhYmxlX29jY3VycmVuY2VfcCk6IEVo YW5jZSB1c2VyIHZzZXR2bCBvcHRpbWl6YXRpb24uDQo+ICAgICAgICAgKHZl Y3Rvcl9pbnNuX2luZm86OnBhcnNlX2luc24pOiBBZGQgcnR4X2luc24gcGFy c2UuDQo+ICAgICAgICAgKHBhc3NfdnNldHZsOjpsb2NhbF9lbGltaW5hdGVf dnNldHZsX2luc24pOiBFaGFuY2UgdXNlciB2c2V0dmwgb3B0aW1pemF0aW9u Lg0KPiAgICAgICAgIChnZXRfZmlyc3RfdnNldHZsKTogTmV3IGZ1bmN0aW9u Lg0KPiAgICAgICAgIChwYXNzX3ZzZXR2bDo6Z2xvYmFsX2VsaW1pbmF0ZV92 c2V0dmxfaW5zbik6IERpdHRvLg0KPiAgICAgICAgIChwYXNzX3ZzZXR2bDo6 Y2xlYW51cF9pbnNucyk6IFJlbW92ZSBpdC4NCj4gICAgICAgICAocGFzc192 c2V0dmw6OnNzYV9wb3N0X29wdGltaXphdGlvbik6IE5ldyBmdW5jdGlvbi4N Cj4gICAgICAgICAoaGFzX25vX3VzZXMpOiBEaXR0by4NCj4gICAgICAgICAo cGFzc192c2V0dmw6OnByb3BhZ2F0ZV9hdmwpOiBSZW1vdmUgaXQuDQo+ICAg ICAgICAgKHBhc3NfdnNldHZsOjpkZl9wb3N0X29wdGltaXphdGlvbik6IE5l dyBmdW5jdGlvbi4NCj4gICAgICAgICAocGFzc192c2V0dmw6OmxhenlfdnNl dHZsKTogUmV3b3JrIFBoYXNlIDUgJiYgUGhhc2UgNi4NCj4gICAgICAgICAq IGNvbmZpZy9yaXNjdi9yaXNjdi12c2V0dmwuaDogQWRhcHQgZGVjbGFyYXRp b24uDQo+DQo+IGdjYy90ZXN0c3VpdGUvQ2hhbmdlTG9nOg0KPg0KPiAgICAg ICAgICogZ2NjLnRhcmdldC9yaXNjdi9ydnYvdnNldHZsL3ZzZXR2bC0xNi5j OiBBZGFwdCB0ZXN0Lg0KPiAgICAgICAgICogZ2NjLnRhcmdldC9yaXNjdi9y dnYvdnNldHZsL3ZzZXR2bC0yLmM6IERpdHRvLg0KPiAgICAgICAgICogZ2Nj LnRhcmdldC9yaXNjdi9ydnYvdnNldHZsL3ZzZXR2bC0zLmM6IERpdHRvLg0K PiAgICAgICAgICogZ2NjLnRhcmdldC9yaXNjdi9ydnYvdnNldHZsL3ZzZXR2 bC0yMS5jOiBOZXcgdGVzdC4NCj4gICAgICAgICAqIGdjYy50YXJnZXQvcmlz Y3YvcnZ2L3ZzZXR2bC92c2V0dmwtMjIuYzogTmV3IHRlc3QuDQo+ICAgICAg ICAgKiBnY2MudGFyZ2V0L3Jpc2N2L3J2di92c2V0dmwvdnNldHZsLTIzLmM6 IE5ldyB0ZXN0Lg0KPg0KPiAtLS0NCj4gIGdjYy9jb25maWcvcmlzY3Yvcmlz Y3YtdnNldHZsLmNjICAgICAgICAgICAgICB8IDQwMCArKysrKysrKysrKy0t LS0tLS0NCj4gIGdjYy9jb25maWcvcmlzY3YvcmlzY3YtdnNldHZsLmggICAg ICAgICAgICAgICB8ICAzNCArLQ0KPiAgLi4uL2djYy50YXJnZXQvcmlzY3Yv cnZ2L3ZzZXR2bC92c2V0dmwtMTYuYyAgIHwgICAyICstDQo+ICAuLi4vZ2Nj LnRhcmdldC9yaXNjdi9ydnYvdnNldHZsL3ZzZXR2bC0yLmMgICAgfCAgIDIg Ky0NCj4gIC4uLi9nY2MudGFyZ2V0L3Jpc2N2L3J2di92c2V0dmwvdnNldHZs LTIxLmMgICB8ICAyMSArDQo+ICAuLi4vZ2NjLnRhcmdldC9yaXNjdi9ydnYv dnNldHZsL3ZzZXR2bC0yMi5jICAgfCAgMjEgKw0KPiAgLi4uL2djYy50YXJn ZXQvcmlzY3YvcnZ2L3ZzZXR2bC92c2V0dmwtMjMuYyAgIHwgIDM3ICsrDQo+ ICAuLi4vZ2NjLnRhcmdldC9yaXNjdi9ydnYvdnNldHZsL3ZzZXR2bC0zLmMg ICAgfCAgIDIgKy0NCj4gIDggZmlsZXMgY2hhbmdlZCwgMzY2IGluc2VydGlv bnMoKyksIDE1MyBkZWxldGlvbnMoLSkNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0 NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3ZzZXR2bC92 c2V0dmwtMjEuYw0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvdnNldHZsL3ZzZXR2bC0yMi5jDQo+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L3Jpc2N2L3J2di92c2V0dmwvdnNldHZsLTIzLmMNCj4NCj4gZGlmZiAtLWdp dCBhL2djYy9jb25maWcvcmlzY3YvcmlzY3YtdnNldHZsLmNjIGIvZ2NjL2Nv bmZpZy9yaXNjdi9yaXNjdi12c2V0dmwuY2MNCj4gaW5kZXggZmU1NWY0Y2Nk MzAuLjkyNGE5NGFkZjljIDEwMDY0NA0KPiAtLS0gYS9nY2MvY29uZmlnL3Jp c2N2L3Jpc2N2LXZzZXR2bC5jYw0KPiArKysgYi9nY2MvY29uZmlnL3Jpc2N2 L3Jpc2N2LXZzZXR2bC5jYw0KPiBAQCAtMzk1LDEwICszOTUsMTUgQEAgYXZh aWxhYmxlX29jY3VycmVuY2VfcCAoY29uc3QgYmJfaW5mbyAqYmIsIGNvbnN0 IHZlY3Rvcl9pbnNuX2luZm8gZGVtKQ0KPiAgICAgICAgaWYgKCF2bG1heF9h dmxfcCAoZGVtLmdldF9hdmwgKCkpKQ0KPiAgICAgICAgIHsNCj4gICAgICAg ICAgIHJ0eCBkZXN0ID0gTlVMTF9SVFg7DQo+ICsgICAgICAgICBpbnNuX2lu Zm8gKmkgPSBpbnNuOw0KPiAgICAgICAgICAgaWYgKHZzZXR2bF9pbnNuX3Ag KGluc24tPnJ0bCAoKSkpDQo+IC0gICAgICAgICAgIGRlc3QgPSBnZXRfdmwg KGluc24tPnJ0bCAoKSk7DQo+IC0gICAgICAgICBmb3IgKGNvbnN0IGluc25f aW5mbyAqaSA9IGluc247IHJlYWxfaW5zbl9hbmRfc2FtZV9iYl9wIChpLCBi Yik7DQo+IC0gICAgICAgICAgICAgIGkgPSBpLT5uZXh0X25vbmRlYnVnX2lu c24gKCkpDQo+ICsgICAgICAgICAgIHsNCj4gKyAgICAgICAgICAgICBkZXN0 ID0gZ2V0X3ZsIChpbnNuLT5ydGwgKCkpOw0KPiArICAgICAgICAgICAgIC8q IEZvciB1c2VyIHZzZXR2bCBhMiwgYTIgaW5zdHJ1Y3Rpb24sIHdlIGNvbnNp ZGVyIGl0IGFzDQo+ICsgICAgICAgICAgICAgICAgYXZhaWxhYmxlIGV2ZW4g dGhvdWdoIGl0IG1vZGlmaWVzICJhMiIuICAqLw0KPiArICAgICAgICAgICAg IGkgPSBpLT5uZXh0X25vbmRlYnVnX2luc24gKCk7DQo+ICsgICAgICAgICAg IH0NCj4gKyAgICAgICAgIGZvciAoOyByZWFsX2luc25fYW5kX3NhbWVfYmJf cCAoaSwgYmIpOyBpID0gaS0+bmV4dF9ub25kZWJ1Z19pbnNuICgpKQ0KPiAg ICAgICAgICAgICB7DQo+ICAgICAgICAgICAgICAgaWYgKHJlYWRfdmxfaW5z bl9wIChpLT5ydGwgKCkpKQ0KPiAgICAgICAgICAgICAgICAgY29udGludWU7 DQo+IEBAIC0xODkzLDExICsxODk4LDEzIEBAIHZlY3Rvcl9pbnNuX2luZm86 OnBhcnNlX2luc24gKHJ0eF9pbnNuICpyaW5zbikNCj4gICAgKnRoaXMgPSB2 ZWN0b3JfaW5zbl9pbmZvICgpOw0KPiAgICBpZiAoIU5PTkRFQlVHX0lOU05f UCAocmluc24pKQ0KPiAgICAgIHJldHVybjsNCj4gLSAgaWYgKCFoYXNfdnR5 cGVfb3AgKHJpbnNuKSkNCj4gKyAgaWYgKG9wdGltaXplID09IDAgJiYgIWhh c192dHlwZV9vcCAocmluc24pKQ0KPiArICAgIHJldHVybjsNCj4gKyAgaWYg KG9wdGltaXplID4gMCAmJiAhdnNldHZsX2luc25fcCAocmluc24pKQ0KPiAg ICAgIHJldHVybjsNCj4gICAgbV9zdGF0ZSA9IFZBTElEOw0KPiAgICBleHRy YWN0X2luc25fY2FjaGVkIChyaW5zbik7DQo+IC0gIGNvbnN0IHJ0eCBhdmwg PSByZWNvZ19kYXRhLm9wZXJhbmRbZ2V0X2F0dHJfdmxfb3BfaWR4IChyaW5z bildOw0KPiArICBydHggYXZsID0gOjpnZXRfYXZsIChyaW5zbik7DQo+ICAg IG1fYXZsID0gYXZsX2luZm8gKGF2bCwgbnVsbHB0cik7DQo+ICAgIG1fc2V3 ID0gOjpnZXRfc2V3IChyaW5zbik7DQo+ICAgIG1fdmxtdWwgPSA6OmdldF92 bG11bCAocmluc24pOw0KPiBAQCAtMjczMCwxMCArMjczNywxMSBAQCBwcml2 YXRlOg0KPiAgICAvKiBQaGFzZSA1LiAgKi8NCj4gICAgcnR4X2luc24gKmdl dF92c2V0dmxfYXRfZW5kIChjb25zdCBiYl9pbmZvICosIHZlY3Rvcl9pbnNu X2luZm8gKikgY29uc3Q7DQo+ICAgIHZvaWQgbG9jYWxfZWxpbWluYXRlX3Zz ZXR2bF9pbnNuIChjb25zdCBiYl9pbmZvICopIGNvbnN0Ow0KPiAtICB2b2lk IGNsZWFudXBfaW5zbnMgKHZvaWQpIGNvbnN0Ow0KPiArICBib29sIGdsb2Jh bF9lbGltaW5hdGVfdnNldHZsX2luc24gKGNvbnN0IGJiX2luZm8gKikgY29u c3Q7DQo+ICsgIHZvaWQgc3NhX3Bvc3Rfb3B0aW1pemF0aW9uICh2b2lkKSBj b25zdDsNCj4NCj4gICAgLyogUGhhc2UgNi4gICovDQo+IC0gIHZvaWQgcHJv cGFnYXRlX2F2bCAodm9pZCkgY29uc3Q7DQo+ICsgIHZvaWQgZGZfcG9zdF9v cHRpbWl6YXRpb24gKHZvaWQpIGNvbnN0Ow0KPg0KPiAgICB2b2lkIGluaXQg KHZvaWQpOw0KPiAgICB2b2lkIGRvbmUgKHZvaWQpOw0KPiBAQCAtNDI0Niw3 ICs0MjU0LDcgQEAgcGFzc192c2V0dmw6OmxvY2FsX2VsaW1pbmF0ZV92c2V0 dmxfaW5zbiAoY29uc3QgYmJfaW5mbyAqYmIpIGNvbnN0DQo+DQo+ICAgICAg ICAvKiBMb2NhbCBBVkwgY29tcGF0aWJpbGl0eSBjaGVja2luZyBpcyBzaW1w bGVyIHRoYW4gZ2xvYmFsLCB3ZSBvbmx5DQo+ICAgICAgICAgIG5lZWQgdG8g Y2hlY2sgdGhlIFJFR05PIGlzIHNhbWUuICAqLw0KPiAtICAgICAgaWYgKHBy ZXZfZGVtLnZhbGlkX3AgKCkgJiYgcHJldl9kZW0uc2tpcF9hdmxfY29tcGF0 aWJsZV9wIChjdXJyX2RlbSkNCj4gKyAgICAgIGlmIChwcmV2X2RlbS52YWxp ZF9vcl9kaXJ0eV9wICgpICYmIHByZXZfZGVtLnNraXBfYXZsX2NvbXBhdGli bGVfcCAoY3Vycl9kZW0pDQo+ICAgICAgICAgICAmJiBsb2NhbF9hdmxfY29t cGF0aWJsZV9wIChwcmV2X2F2bCwgY3Vycl9hdmwpKQ0KPiAgICAgICAgIHsN Cj4gICAgICAgICAgIC8qIGN1cnJfZGVtIGFuZCBwcmV2X2RlbSBpcyBjb21w YXRpYmxlISAgKi8NCj4gQEAgLTQyNzcsMjcgKzQyODUsMTg3IEBAIHBhc3Nf dnNldHZsOjpsb2NhbF9lbGltaW5hdGVfdnNldHZsX2luc24gKGNvbnN0IGJi X2luZm8gKmJiKSBjb25zdA0KPiAgICAgIH0NCj4gIH0NCj4NCj4gLS8qIEJl Zm9yZSBWU0VUVkwgUEFTUywgUlZWIGluc3RydWN0aW9ucyBwYXR0ZXJuIGlz IGRlcGVuZGluZyBvbiBBVkwgb3BlcmFuZA0KPiAtICAgaW1wbGljaXRseS4g U2luY2Ugd2Ugd2lsbCBlbWl0IFZTRVRWTCBpbnN0cnVjdGlvbiBhbmQgbWFr ZSBSVlYgaW5zdHJ1Y3Rpb25zDQo+IC0gICBkZXBlbmRpbmcgb24gVkwvVlRZ UEUgZ2xvYmFsIHN0YXR1cyByZWdpc3RlcnMsIHdlIHJlbW92ZSB0aGUgc3Vj aCBBVkwgb3BlcmFuZA0KPiAtICAgaW4gdGhlIFJWViBpbnN0cnVjdGlvbnMg cGF0dGVybiBoZXJlIGluIG9yZGVyIHRvIHJlbW92ZSBBVkwgZGVwZW5kZW5j aWVzIHdoZW4NCj4gLSAgIEFWTCBvcGVyYW5kIGlzIGEgcmVnaXN0ZXIgb3Bl cmFuZC4NCj4gLQ0KPiAtICAgQmVmb3JlIHRoZSBWU0VUVkwgUEFTUzoNCj4g LSAgICAgbGkgYTUsMzINCj4gLSAgICAgLi4uDQo+IC0gICAgIHZhZGQudnYg KC4uLiwgYTUpDQo+IC0gICBBZnRlciB0aGUgVlNFVFZMIFBBU1M6DQo+IC0g ICAgIGxpIGE1LDMyDQo+IC0gICAgIHZzZXR2bGkgemVybywgYTUsIC4uLg0K PiAtICAgICAuLi4NCj4gLSAgICAgdmFkZC52diAoLi4uLCBjb25zdF9pbnQg MCkuICAqLw0KPiArLyogR2V0IHRoZSBmaXJzdCB2c2V0dmwgaW5zdHJ1Y3Rp b25zIG9mIHRoZSBibG9jay4gICovDQo+ICtzdGF0aWMgcnR4X2luc24gKg0K PiArZ2V0X2ZpcnN0X3ZzZXR2bCAoYmFzaWNfYmxvY2sgY2ZnX2JiKQ0KPiAr ew0KPiArICBydHhfaW5zbiAqcmluc247DQo+ICsgIEZPUl9CQl9JTlNOUyAo Y2ZnX2JiLCByaW5zbikNCj4gKyAgICB7DQo+ICsgICAgICBpZiAoIU5PTkRF QlVHX0lOU05fUCAocmluc24pKQ0KPiArICAgICAgIGNvbnRpbnVlOw0KPiAr ICAgICAgLyogSWYgd2UgZG9uJ3QgZmluZCBhbnkgaW5zZXJ0ZWQgdnNldHZs aSBiZWZvcmUgdXNlciBSVlYgaW5zdHJ1Y3Rpb25zLA0KPiArICAgICAgICB3 ZSBkb24ndCBuZWVkIHRvIG9wdGltaXplIHRoZSB2c2V0dmxzIGluIHRoaXMg YmxvY2suICAqLw0KPiArICAgICAgaWYgKGhhc192dHlwZV9vcCAocmluc24p IHx8IHZzZXR2bF9pbnNuX3AgKHJpbnNuKSkNCj4gKyAgICAgICByZXR1cm4g bnVsbHB0cjsNCj4gKw0KPiArICAgICAgaWYgKHZzZXR2bF9kaXNjYXJkX3Jl c3VsdF9pbnNuX3AgKHJpbnNuKSkNCj4gKyAgICAgICByZXR1cm4gcmluc247 DQo+ICsgICAgfQ0KPiArICByZXR1cm4gbnVsbHB0cjsNCj4gK30NCj4gKw0K PiArLyogR2xvYmFsIHVzZXIgdnNldHZsIG9wdGltaXphaXRvbjoNCj4gKw0K PiArICAgICBDYXNlIDE6DQo+ICsgICAgIGJiIDE6DQo+ICsgICAgICAgdnNl dHZsIGE1LGE0LGU4LG1mOA0KPiArICAgICAgIC4uLg0KPiArICAgICBiYiAy Og0KPiArICAgICAgIC4uLg0KPiArICAgICAgIHZzZXR2bCB6ZXJvLGE1LGU4 LG1mOCAtLT4gRWxpbWluYXRlIGRpcmVjdGx5Lg0KPiArDQo+ICsgICAgIENh c2UgMjoNCj4gKyAgICAgIGJiIDE6DQo+ICsgICAgICAgdnNldHZsIGE1LGE0 LGU4LG1mOCAgICAtLT4gdnNldHZsIGE1LGE0LGUzMixtZjINCj4gKyAgICAg ICAuLi4NCj4gKyAgICAgIGJiIDI6DQo+ICsgICAgICAgLi4uDQo+ICsgICAg ICAgdnNldHZsIHplcm8sYTUsZTMyLG1mMiAtLT4gRWxpbWluYXRlIGRpcmVj dGx5Lg0KPiArDQo+ICsgICAgIENhc2UgMzoNCj4gKyAgICAgIGJiIDE6DQo+ ICsgICAgICAgdnNldHZsIGE1LGE0LGU4LG1mOCAgICAtLT4gdnNldHZsIGE1 LGE0LGUzMixtZjINCj4gKyAgICAgICAuLi4NCj4gKyAgICAgIGJiIDI6DQo+ ICsgICAgICAgLi4uDQo+ICsgICAgICAgdnNldHZsIGE1LGE0LGU4LG1mOCAg ICAtLT4gdnNldHZsIGE1LGE0LGUzMixtZjINCj4gKyAgICAgICBnb3RvIGJi IDMNCj4gKyAgICAgIGJiIDM6DQo+ICsgICAgICAgLi4uDQo+ICsgICAgICAg dnNldHZsIHplcm8sYTUsZTMyLG1mMiAtLT4gRWxpbWluYXRlIGRpcmVjdGx5 Lg0KPiArKi8NCj4gK2Jvb2wNCj4gK3Bhc3NfdnNldHZsOjpnbG9iYWxfZWxp bWluYXRlX3ZzZXR2bF9pbnNuIChjb25zdCBiYl9pbmZvICpiYikgY29uc3QN Cj4gK3sNCj4gKyAgcnR4X2luc24gKnZzZXR2bF9yaW5zbjsNCj4gKyAgdmVj dG9yX2luc25faW5mbyBkZW0gPSB2ZWN0b3JfaW5zbl9pbmZvICgpOw0KPiAr ICBjb25zdCBhdXRvICZibG9ja19pbmZvID0gZ2V0X2Jsb2NrX2luZm8gKGJi KTsNCj4gKyAgYmFzaWNfYmxvY2sgY2ZnX2JiID0gYmItPmNmZ19iYiAoKTsN Cj4gKw0KPiArICBpZiAoYmxvY2tfaW5mby5sb2NhbF9kZW0udmFsaWRfb3Jf ZGlydHlfcCAoKSkNCj4gKyAgICB7DQo+ICsgICAgICAvKiBPcHRpbWl6ZSB0 aGUgbG9jYWwgdnNldHZsLiAgKi8NCj4gKyAgICAgIGRlbSA9IGJsb2NrX2lu Zm8ubG9jYWxfZGVtOw0KPiArICAgICAgdnNldHZsX3JpbnNuID0gZ2V0X2Zp cnN0X3ZzZXR2bCAoY2ZnX2JiKTsNCj4gKyAgICB9DQo+ICsgIGlmICghdnNl dHZsX3JpbnNuKQ0KPiArICAgIC8qIE9wdGltaXplIHRoZSBnbG9iYWwgdnNl dHZsIGluc2VydGVkIGJ5IExDTS4gICovDQo+ICsgICAgdnNldHZsX3JpbnNu ID0gZ2V0X3ZzZXR2bF9hdF9lbmQgKGJiLCAmZGVtKTsNCj4gKw0KPiArICAv KiBObyBuZWVkIHRvIG9wdGltaXplIGlmIGJsb2NrIGRvZXNuJ3QgaGF2ZSB2 c2V0dmwgaW5zdHJ1Y3Rpb25zLiAgKi8NCj4gKyAgaWYgKCFkZW0udmFsaWRf b3JfZGlydHlfcCAoKSB8fCAhdnNldHZsX3JpbnNuIHx8ICFkZW0uZ2V0X2F2 bF9zb3VyY2UgKCkNCj4gKyAgICAgIHx8ICFkZW0uaGFzX2F2bF9yZWcgKCkp DQo+ICsgICAgcmV0dXJuIGZhbHNlOw0KPiArDQo+ICsgIC8qIElmIGFsbCBw cmVkcyBoYXMgVkwvVlRZUEUgc3RhdHVzIHNldHRlZCBieSB1c2VyIHZzZXR2 bHMsIGFuZCB0aGVzZQ0KPiArICAgICB1c2VyIHZzZXR2bHMgYXJlIGFsbCBz a2lwX2F2bF9jb21wYXRpYmxlX3Agd2l0aCB0aGUgdnNldHZsIGluIHRoaXMN Cj4gKyAgICAgYmxvY2ssIHdlIGNhbiBlbGltaW5hdGUgdGhpcyB2c2V0dmwg aW5zdHJ1Y3Rpb24uICAqLw0KPiArICBzYml0bWFwIGF2aW4gPSBtX3ZlY3Rv cl9tYW5hZ2VyLT52ZWN0b3JfYXZpbltjZmdfYmItPmluZGV4XTsNCj4gKw0K PiArICB1bnNpZ25lZCBpbnQgYmJfaW5kZXg7DQo+ICsgIHNiaXRtYXBfaXRl cmF0b3Igc2JpOw0KPiArICBydHggYXZsID0gZ2V0X2F2bCAoZGVtLmdldF9p bnNuICgpLT5ydGwgKCkpOw0KPiArICBoYXNoX3NldDxzZXRfaW5mbyAqPiBz ZXRzDQo+ICsgICAgPSBnZXRfYWxsX3NldHMgKGRlbS5nZXRfYXZsX3NvdXJj ZSAoKSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKTsNCj4gKyAgLyogQ29uZGl0aW9u IDE6IEFsbCBWTC9WVFlQRSBhdmFpbGFibGUgaW4gYXJlIGFsbCBjb21wYXRp YmxlLiAgKi8NCj4gKyAgRVhFQ1VURV9JRl9TRVRfSU5fQklUTUFQIChhdmlu LCAwLCBiYl9pbmRleCwgc2JpKQ0KPiArICAgIHsNCj4gKyAgICAgIGNvbnN0 IGF1dG8gJmV4cHIgPSBtX3ZlY3Rvcl9tYW5hZ2VyLT52ZWN0b3JfZXhwcnNb YmJfaW5kZXhdOw0KPiArICAgICAgY29uc3QgYXV0byAmaW5zbiA9IGV4cHIt PmdldF9pbnNuICgpOw0KPiArICAgICAgZGVmX2luZm8gKmRlZiA9IGZpbmRf YWNjZXNzIChpbnNuLT5kZWZzICgpLCBSRUdOTyAoYXZsKSk7DQo+ICsgICAg ICBzZXRfaW5mbyAqc2V0ID0gc2FmZV9keW5fY2FzdDxzZXRfaW5mbyAqPiAo ZGVmKTsNCj4gKyAgICAgIGlmICghdnNldHZsX2luc25fcCAoaW5zbi0+cnRs ICgpKSB8fCBpbnNuLT5iYiAoKSA9PSBiYg0KPiArICAgICAgICAgfHwgIXNl dHMuY29udGFpbnMgKHNldCkpDQo+ICsgICAgICAgcmV0dXJuIGZhbHNlOw0K PiArICAgIH0NCj4gKw0KPiArICAvKiBDb25kaXRpb24gMjogQ2hlY2sgaXQg aGFzIHByZWRzLiAgKi8NCj4gKyAgaWYgKEVER0VfQ09VTlQgKGNmZ19iYi0+ cHJlZHMpID09IDApDQo+ICsgICAgcmV0dXJuIGZhbHNlOw0KPiArDQo+ICsg IC8qIENvbmRpdGlvbiAzOiBXZSBkb24ndCBkbyB0aGUgZ2xvYmFsIG9wdGlt aXphdGlvbiBmb3IgdGhlIGJsb2NrDQo+ICsgICAgIGhhcyBhIHByZWQgaXMg ZW50cnkgYmxvY2sgb3IgZXhpdCBibG9jay4gICovDQo+ICsgIC8qIENvbmRp dGlvbiA0OiBBbGwgcHJlZHMgaGF2ZSBhdmFpbGFibGUgVkwvVlRZUEUgb3V0 LiAgKi8NCj4gKyAgZWRnZSBlOw0KPiArICBlZGdlX2l0ZXJhdG9yIGVpOw0K PiArICBGT1JfRUFDSF9FREdFIChlLCBlaSwgY2ZnX2JiLT5wcmVkcykNCj4g KyAgICB7DQo+ICsgICAgICBzYml0bWFwIGF2b3V0ID0gbV92ZWN0b3JfbWFu YWdlci0+dmVjdG9yX2F2b3V0W2UtPnNyYy0+aW5kZXhdOw0KPiArICAgICAg aWYgKGUtPnNyYyA9PSBFTlRSWV9CTE9DS19QVFJfRk9SX0ZOIChjZnVuKQ0K PiArICAgICAgICAgfHwgZS0+c3JjID09IEVYSVRfQkxPQ0tfUFRSX0ZPUl9G TiAoY2Z1bikgfHwgYml0bWFwX2VtcHR5X3AgKGF2b3V0KSkNCj4gKyAgICAg ICByZXR1cm4gZmFsc2U7DQo+ICsNCj4gKyAgICAgIEVYRUNVVEVfSUZfU0VU X0lOX0JJVE1BUCAoYXZvdXQsIDAsIGJiX2luZGV4LCBzYmkpDQo+ICsgICAg ICAgew0KPiArICAgICAgICAgY29uc3QgYXV0byAmZXhwciA9IG1fdmVjdG9y X21hbmFnZXItPnZlY3Rvcl9leHByc1tiYl9pbmRleF07DQo+ICsgICAgICAg ICBjb25zdCBhdXRvICZpbnNuID0gZXhwci0+Z2V0X2luc24gKCk7DQo+ICsg ICAgICAgICBkZWZfaW5mbyAqZGVmID0gZmluZF9hY2Nlc3MgKGluc24tPmRl ZnMgKCksIFJFR05PIChhdmwpKTsNCj4gKyAgICAgICAgIHNldF9pbmZvICpz ZXQgPSBzYWZlX2R5bl9jYXN0PHNldF9pbmZvICo+IChkZWYpOw0KPiArICAg ICAgICAgaWYgKCF2c2V0dmxfaW5zbl9wIChpbnNuLT5ydGwgKCkpIHx8IGlu c24tPmJiICgpID09IGJiDQo+ICsgICAgICAgICAgICAgfHwgIXNldHMuY29u dGFpbnMgKHNldCkgfHwgIWV4cHItPnNraXBfYXZsX2NvbXBhdGlibGVfcCAo ZGVtKSkNCj4gKyAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KPiArICAgICAg IH0NCj4gKyAgICB9DQo+ICsNCj4gKyAgLyogU3RlcDE6IFJlc2hhcGUgdGhl IFZML1ZUWVBFIHN0YXR1cyB0byBtYWtlIHN1cmUgZXZlcnl0aGluZyBjb21w YXRpYmxlLiAgKi8NCj4gKyAgaGFzaF9zZXQ8YmFzaWNfYmxvY2s+IHByZWRf Y2ZnX2JicyA9IGdldF9hbGxfcHJlZGVjZXNzb3JzIChjZmdfYmIpOw0KPiAr ICBGT1JfRUFDSF9FREdFIChlLCBlaSwgY2ZnX2JiLT5wcmVkcykNCj4gKyAg ICB7DQo+ICsgICAgICBzYml0bWFwIGF2b3V0ID0gbV92ZWN0b3JfbWFuYWdl ci0+dmVjdG9yX2F2b3V0W2UtPnNyYy0+aW5kZXhdOw0KPiArICAgICAgRVhF Q1VURV9JRl9TRVRfSU5fQklUTUFQIChhdm91dCwgMCwgYmJfaW5kZXgsIHNi aSkNCj4gKyAgICAgICB7DQo+ICsgICAgICAgICB2ZWN0b3JfaW5zbl9pbmZv IHByZXZfZGVtID0gKm1fdmVjdG9yX21hbmFnZXItPnZlY3Rvcl9leHByc1ti Yl9pbmRleF07DQo+ICsgICAgICAgICB2ZWN0b3JfaW5zbl9pbmZvIGN1cnJf ZGVtID0gZGVtOw0KPiArICAgICAgICAgaW5zbl9pbmZvICppbnNuID0gcHJl dl9kZW0uZ2V0X2luc24gKCk7DQo+ICsgICAgICAgICBpZiAoIXByZWRfY2Zn X2Jicy5jb250YWlucyAoaW5zbi0+YmIgKCktPmNmZ19iYiAoKSkpDQo+ICsg ICAgICAgICAgIGNvbnRpbnVlOw0KPiArICAgICAgICAgLyogVXBkYXRlIGF2 bCBpbmZvIHNpbmNlIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoZXkgYXJlIGZ1 bGx5DQo+ICsgICAgICAgICAgICBjb21wYXRpYmxlIGJlZm9yZSBtZXJnZS4g ICovDQo+ICsgICAgICAgICBjdXJyX2RlbS5zZXRfYXZsX2luZm8gKHByZXZf ZGVtLmdldF9hdmxfaW5mbyAoKSk7DQo+ICsgICAgICAgICAvKiBNZXJnZSBi b3RoIGFuZCB1cGRhdGUgaW50byBjdXJyX3ZzZXR2bC4gICovDQo+ICsgICAg ICAgICBwcmV2X2RlbSA9IGN1cnJfZGVtLm1lcmdlIChwcmV2X2RlbSwgTE9D QUxfTUVSR0UpOw0KPiArICAgICAgICAgY2hhbmdlX3ZzZXR2bF9pbnNuIChp bnNuLCBwcmV2X2RlbSk7DQo+ICsgICAgICAgfQ0KPiArICAgIH0NCj4gKw0K PiArICAvKiBTdGVwMjogZWxpbWluYXRlIHRoZSB2c2V0dmwgaW5zdHJ1Y3Rp b24uICAqLw0KPiArICBlbGltaW5hdGVfaW5zbiAodnNldHZsX3JpbnNuKTsN Cj4gKyAgcmV0dXJuIHRydWU7DQo+ICt9DQo+ICsNCj4gKy8qIFRoaXMgZnVu Y3Rpb24gZG9lcyB0aGUgZm9sbG93aW5nIHBvc3Qgb3B0aW1pemF0aW9uIGJh c2Ugb24gUlRMX1NTQToNCj4gKw0KPiArICAgMS4gTG9jYWwgdXNlciB2c2V0 dmwgb3B0aW1pemF0aW9ucy4NCj4gKyAgIDIuIEdsb2JhbCB1c2VyIHZzZXR2 bCBvcHRpbWl6YXRpb25zLg0KPiArICAgMy4gQVZMIGRlcGVuZGVuY2llcyBy ZW1vdmFsOg0KPiArICAgICAgQmVmb3JlIFZTRVRWTCBQQVNTLCBSVlYgaW5z dHJ1Y3Rpb25zIHBhdHRlcm4gaXMgZGVwZW5kaW5nIG9uIEFWTCBvcGVyYW5k DQo+ICsgICAgICBpbXBsaWNpdGx5LiBTaW5jZSB3ZSB3aWxsIGVtaXQgVlNF VFZMIGluc3RydWN0aW9uIGFuZCBtYWtlIFJWVg0KPiArICAgICAgaW5zdHJ1 Y3Rpb25zIGRlcGVuZGluZyBvbiBWTC9WVFlQRSBnbG9iYWwgc3RhdHVzIHJl Z2lzdGVycywgd2UgcmVtb3ZlIHRoZQ0KPiArICAgICAgc3VjaCBBVkwgb3Bl cmFuZCBpbiB0aGUgUlZWIGluc3RydWN0aW9ucyBwYXR0ZXJuIGhlcmUgaW4g b3JkZXIgdG8gcmVtb3ZlDQo+ICsgICAgICBBVkwgZGVwZW5kZW5jaWVzIHdo ZW4gQVZMIG9wZXJhbmQgaXMgYSByZWdpc3RlciBvcGVyYW5kLg0KPiArDQo+ ICsgICAgICBCZWZvcmUgdGhlIFZTRVRWTCBQQVNTOg0KPiArICAgICAgIGxp IGE1LDMyDQo+ICsgICAgICAgLi4uDQo+ICsgICAgICAgdmFkZC52diAoLi4u LCBhNSkNCj4gKyAgICAgIEFmdGVyIHRoZSBWU0VUVkwgUEFTUzoNCj4gKyAg ICAgICBsaSBhNSwzMg0KPiArICAgICAgIHZzZXR2bGkgemVybywgYTUsIC4u Lg0KPiArICAgICAgIC4uLg0KPiArICAgICAgIHZhZGQudnYgKC4uLiwgY29u c3RfaW50IDApLiAgKi8NCj4gIHZvaWQNCj4gLXBhc3NfdnNldHZsOjpjbGVh bnVwX2luc25zICh2b2lkKSBjb25zdA0KPiArcGFzc192c2V0dmw6OnNzYV9w b3N0X29wdGltaXphdGlvbiAodm9pZCkgY29uc3QNCj4gIHsNCj4gICAgZm9y IChjb25zdCBiYl9pbmZvICpiYiA6IGNydGwtPnNzYS0+YmJzICgpKQ0KPiAg ICAgIHsNCj4gICAgICAgIGxvY2FsX2VsaW1pbmF0ZV92c2V0dmxfaW5zbiAo YmIpOw0KPiArICAgICAgYm9vbCBjaGFuZ2VkX3AgPSB0cnVlOw0KPiArICAg ICAgd2hpbGUgKGNoYW5nZWRfcCkNCj4gKyAgICAgICB7DQo+ICsgICAgICAg ICBjaGFuZ2VkX3AgPSBmYWxzZTsNCj4gKyAgICAgICAgIGNoYW5nZWRfcCB8 PSBnbG9iYWxfZWxpbWluYXRlX3ZzZXR2bF9pbnNuIChiYik7DQo+ICsgICAg ICAgfQ0KPiAgICAgICAgZm9yIChpbnNuX2luZm8gKmluc24gOiBiYi0+cmVh bF9ub25kZWJ1Z19pbnNucyAoKSkNCj4gICAgICAgICB7DQo+ICAgICAgICAg ICBydHhfaW5zbiAqcmluc24gPSBpbnNuLT5ydGwgKCk7DQo+IEBAIC00MzQy LDEzNSArNDUxMCw4MSBAQCBwYXNzX3ZzZXR2bDo6Y2xlYW51cF9pbnNucyAo dm9pZCkgY29uc3QNCj4gICAgICB9DQo+ICB9DQo+DQo+ICsvKiBSZXR1cm4g dHJ1ZSBpZiB0aGUgU0VUIHJlc3VsdCBpcyBub3QgdXNlZCBieSBhbnkgaW5z dHJ1Y3Rpb25zLiAgKi8NCj4gK3N0YXRpYyBib29sDQo+ICtoYXNfbm9fdXNl cyAoYmFzaWNfYmxvY2sgY2ZnX2JiLCBydHhfaW5zbiAqcmluc24sIGludCBy ZWdubykNCj4gK3sNCj4gKyAgLyogSGFuZGxlIHRoZSBmb2xsb3dpbmcgY2Fz ZSB0aGF0IGNhbiBub3QgYmUgZGV0ZWN0ZWQgaW4gUlRMX1NTQS4gICovDQo+ ICsgIC8qIEUuZy4NCj4gKyAgICAgICAgIGxpIGE1LCAxMDANCj4gKyAgICAg ICAgIHZzZXR2bGkgYTYsIGE1Li4uDQo+ICsgICAgICAgICAuLi4NCj4gKyAg ICAgICAgIHZhZGQgKHVzZSBhNikNCj4gKw0KPiArICAgICAgIFRoZSB1c2Ug b2YgImE2IiBpcyByZW1vdmVkIGZyb20gInZhZGQiIGJ1dCB0aGUgaW5mb3Jt YXRpb24gaXMNCj4gKyAgICAgICBub3QgdXBkYXRlZCBpbiBSVExfU1NBIGZy YW1ld29yay4gV2UgZG9uJ3Qgd2FudCB0byByZS1uZXcNCj4gKyAgICAgICBh IG5ldyBSVExfU1NBIHdoaWNoIGlzIGV4cGVuc2l2ZSwgaW5zdGVhZCwgd2Ug dXNlIGRhdGEtZmxvdw0KPiArICAgICAgIGFuYWx5c2lzIHRvIGNoZWNrIHdo ZXRoZXIgImE2IiBoYXMgbm8gdXNlcy4gICovDQo+ICsgIGlmIChiaXRtYXBf Yml0X3AgKGRmX2dldF9saXZlX291dCAoY2ZnX2JiKSwgcmVnbm8pKQ0KPiAr ICAgIHJldHVybiBmYWxzZTsNCj4gKw0KPiArICBydHhfaW5zbiAqaXRlcjsN Cj4gKyAgZm9yIChpdGVyID0gTkVYVF9JTlNOIChyaW5zbik7IGl0ZXIgJiYg aXRlciAhPSBORVhUX0lOU04gKEJCX0VORCAoY2ZnX2JiKSk7DQo+ICsgICAg ICAgaXRlciA9IE5FWFRfSU5TTiAoaXRlcikpDQo+ICsgICAgaWYgKGRmX2Zp bmRfdXNlIChpdGVyLCByZWdub19yZWdfcnR4W3JlZ25vXSkpDQo+ICsgICAg ICByZXR1cm4gZmFsc2U7DQo+ICsNCj4gKyAgcmV0dXJuIHRydWU7DQo+ICt9 DQo+ICsNCj4gKy8qIFRoaXMgZnVuY3Rpb24gZG9lcyB0aGUgZm9sbG93aW5n IHBvc3Qgb3B0aW1pemF0aW9uIGJhc2Ugb24gZGF0YWZsb3cNCj4gKyAgIGFu YWx5c2lzOg0KPiArDQo+ICsgICAxLiBDaGFuZ2UgdnNldHZsIHJkLCByczEg LS0+IHZzZXZsIHplcm8sIHJzMSwgaWYgcmQgaXMgbm90IHVzZWQgYnkgYW55 DQo+ICsgICBub25kZWJ1ZyBpbnN0cnVjdGlvbnMuIEV2ZW4gdGhvdWdoIHRo aXMgUEFTUyBydW5zIGFmdGVyIFJBIGFuZCBpdCBkb2Vzbid0DQo+ICsgICBo ZWxwIGZvciByZWR1Y2UgcmVnaXN0ZXIgcHJlc3N1cmUsIGl0IGNhbiBoZWxw IGluc3RydWN0aW9ucyBzY2hlZHVsaW5nIHNpbmNlDQo+ICsgICB3ZSByZW1v dmUgdGhlIGRlcGVuZGVuY2llcy4NCj4gKw0KPiArICAgMi4gUmVtb3ZlIHJl ZHVuZGFudCB1c2VyIHZzZXR2bHMgYmFzZSBvbiBvdXRjb21lIG9mIFBoYXNl IDQgKExDTSkgJiYgUGhhc2UgNQ0KPiArICAgKEFWTCBkZXBlbmRlbmNpZXMg cmVtb3ZhbCkuICAqLw0KPiAgdm9pZA0KPiAtcGFzc192c2V0dmw6OnByb3Bh Z2F0ZV9hdmwgKHZvaWQpIGNvbnN0DQo+IC17DQo+IC0gIC8qIFJlYnVpbGQg dGhlIFJUTF9TU0EgYWNjb3JkaW5nIHRvIHRoZSBuZXcgQ0ZHIGdlbmVyYXRl ZCBieSBMQ00uICAqLw0KPiAtICAvKiBGaW5hbGl6YXRpb24gb2YgUlRMX1NT QS4gICovDQo+IC0gIGZyZWVfZG9taW5hbmNlX2luZm8gKENESV9ET01JTkFU T1JTKTsNCj4gLSAgaWYgKGNydGwtPnNzYS0+cGVyZm9ybV9wZW5kaW5nX3Vw ZGF0ZXMgKCkpDQo+IC0gICAgY2xlYW51cF9jZmcgKDApOw0KPiAtICBkZWxl dGUgY3J0bC0+c3NhOw0KPiAtICBjcnRsLT5zc2EgPSBudWxscHRyOw0KPiAt ICAvKiBJbml0aWFsaXphdGlvbiBvZiBSVExfU1NBLiAgKi8NCj4gLSAgY2Fs Y3VsYXRlX2RvbWluYW5jZV9pbmZvIChDRElfRE9NSU5BVE9SUyk7DQo+ICtw YXNzX3ZzZXR2bDo6ZGZfcG9zdF9vcHRpbWl6YXRpb24gKHZvaWQpIGNvbnN0 DQo+ICt7DQo+ICAgIGRmX2FuYWx5emUgKCk7DQo+IC0gIGNydGwtPnNzYSA9 IG5ldyBmdW5jdGlvbl9pbmZvIChjZnVuKTsNCj4gLQ0KPiAgICBoYXNoX3Nl dDxydHhfaW5zbiAqPiB0b19kZWxldGU7DQo+IC0gIGZvciAoY29uc3QgYmJf aW5mbyAqYmIgOiBjcnRsLT5zc2EtPmJicyAoKSkNCj4gKyAgYmFzaWNfYmxv Y2sgY2ZnX2JiOw0KPiArICBydHhfaW5zbiAqcmluc247DQo+ICsgIEZPUl9B TExfQkJfRk4gKGNmZ19iYiwgY2Z1bikNCj4gICAgICB7DQo+IC0gICAgICBm b3IgKGluc25faW5mbyAqaW5zbiA6IGJiLT5yZWFsX25vbmRlYnVnX2luc25z ICgpKQ0KPiArICAgICAgRk9SX0JCX0lOU05TIChjZmdfYmIsIHJpbnNuKQ0K PiAgICAgICAgIHsNCj4gLSAgICAgICAgIGlmICh2c2V0dmxfZGlzY2FyZF9y ZXN1bHRfaW5zbl9wIChpbnNuLT5ydGwgKCkpKQ0KPiArICAgICAgICAgaWYg KE5PTkRFQlVHX0lOU05fUCAocmluc24pICYmIHZzZXR2bF9pbnNuX3AgKHJp bnNuKSkNCj4gICAgICAgICAgICAgew0KPiAtICAgICAgICAgICAgIHJ0eCBh dmwgPSBnZXRfYXZsIChpbnNuLT5ydGwgKCkpOw0KPiAtICAgICAgICAgICAg IGlmICghUkVHX1AgKGF2bCkpDQo+IC0gICAgICAgICAgICAgICBjb250aW51 ZTsNCj4gLQ0KPiAtICAgICAgICAgICAgIHNldF9pbmZvICpzZXQgPSBmaW5k X2FjY2VzcyAoaW5zbi0+dXNlcyAoKSwgUkVHTk8gKGF2bCkpLT5kZWYgKCk7 DQo+IC0gICAgICAgICAgICAgaW5zbl9pbmZvICpkZWZfaW5zbiA9IGV4dHJh Y3Rfc2luZ2xlX3NvdXJjZSAoc2V0KTsNCj4gLSAgICAgICAgICAgICBpZiAo IWRlZl9pbnNuKQ0KPiAtICAgICAgICAgICAgICAgY29udGludWU7DQo+IC0N Cj4gLSAgICAgICAgICAgICAvKiBIYW5kbGUgdGhpcyBjYXNlOg0KPiAtICAg ICAgICAgICAgICAgIHZzZXR2bGkgICAgICAgIGE2LHplcm8sZTMyLG0xLHRh LG11DQo+IC0gICAgICAgICAgICAgICAgbGkgICAgIGE1LDQwOTYNCj4gLSAg ICAgICAgICAgICAgICBhZGQgICAgYTcsYTAsYTUNCj4gLSAgICAgICAgICAg ICAgICBhZGRpICAgYTcsYTcsLTk2DQo+IC0gICAgICAgICAgICAgICAgdnNl dHZsaSAgICAgICAgdDEsemVybyxlOCxtZjgsdGEsbWENCj4gLSAgICAgICAg ICAgICAgICB2bGU4LnYgdjI0LDAoYTcpDQo+IC0gICAgICAgICAgICAgICAg YWRkICAgIGE1LGEzLGE1DQo+IC0gICAgICAgICAgICAgICAgYWRkaSAgIGE1 LGE1LC05Ng0KPiAtICAgICAgICAgICAgICAgIHZzZTgudiB2MjQsMChhNSkN Cj4gLSAgICAgICAgICAgICAgICB2c2V0dmxpICAgICAgICB6ZXJvLGE2LGUz MixtMSx0dSxtYQ0KPiAtICAgICAgICAgICAgICovDQo+IC0gICAgICAgICAg ICAgaWYgKHZzZXR2bF9pbnNuX3AgKGRlZl9pbnNuLT5ydGwgKCkpKQ0KPiAt ICAgICAgICAgICAgICAgew0KPiAtICAgICAgICAgICAgICAgICB2bF92dHlw ZV9pbmZvIGRlZl9pbmZvID0gZ2V0X3ZsX3Z0eXBlX2luZm8gKGRlZl9pbnNu KTsNCj4gLSAgICAgICAgICAgICAgICAgdmxfdnR5cGVfaW5mbyBpbmZvID0g Z2V0X3ZsX3Z0eXBlX2luZm8gKGluc24pOw0KPiAtICAgICAgICAgICAgICAg ICBydHggYXZsID0gZ2V0X2F2bCAoZGVmX2luc24tPnJ0bCAoKSk7DQo+IC0g ICAgICAgICAgICAgICAgIHJ0eCB2bCA9IGdldF92bCAoZGVmX2luc24tPnJ0 bCAoKSk7DQo+IC0gICAgICAgICAgICAgICAgIGlmIChkZWZfaW5mby5nZXRf cmF0aW8gKCkgPT0gaW5mby5nZXRfcmF0aW8gKCkpDQo+IC0gICAgICAgICAg ICAgICAgICAgew0KPiAtICAgICAgICAgICAgICAgICAgICAgaWYgKHZsbWF4 X2F2bF9wIChkZWZfaW5mby5nZXRfYXZsICgpKSkNCj4gLSAgICAgICAgICAg ICAgICAgICAgICAgew0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgIGlu Zm8uc2V0X2F2bF9pbmZvICgNCj4gLSAgICAgICAgICAgICAgICAgICAgICAg ICAgIGF2bF9pbmZvIChkZWZfaW5mby5nZXRfYXZsICgpLCBudWxscHRyKSk7 DQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgcnR4IG5ld19wYXQNCj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgID0gZ2VuX3ZzZXR2bF9wYXQg KFZTRVRWTF9OT1JNQUwsIGluZm8sIHZsKTsNCj4gLSAgICAgICAgICAgICAg ICAgICAgICAgICB2YWxpZGF0ZV9jaGFuZ2UgKGluc24tPnJ0bCAoKSwNCj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQ QVRURVJOIChpbnNuLT5ydGwgKCkpLCBuZXdfcGF0LA0KPiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpOw0KPiAt ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KPiAtICAgICAg ICAgICAgICAgICAgICAgICB9DQo+IC0gICAgICAgICAgICAgICAgICAgICBp ZiAoZGVmX2luZm8uaGFzX2F2bF9pbW0gKCkgfHwgcnR4X2VxdWFsX3AgKGF2 bCwgdmwpKQ0KPiAtICAgICAgICAgICAgICAgICAgICAgICB7DQo+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgaW5mby5zZXRfYXZsX2luZm8gKGF2bF9p bmZvIChhdmwsIG51bGxwdHIpKTsNCj4gLSAgICAgICAgICAgICAgICAgICAg ICAgICBlbWl0X3ZzZXR2bF9pbnNuIChWU0VUVkxfRElTQ0FSRF9SRVNVTFQs IEVNSVRfQUZURVIsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW5mbywgTlVMTF9SVFgsIGluc24tPnJ0bCAoKSk7 DQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldC0+c2luZ2xl X25vbmRlYnVnX2luc25fdXNlICgpKQ0KPiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgew0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0 b19kZWxldGUuYWRkIChpbnNuLT5ydGwgKCkpOw0KPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0b19kZWxldGUuYWRkIChkZWZfaW5zbi0+cnRs ICgpKTsNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCj4gLSAg ICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCj4gLSAgICAgICAg ICAgICAgICAgICAgICAgfQ0KPiAtICAgICAgICAgICAgICAgICAgIH0NCj4g LSAgICAgICAgICAgICAgIH0NCj4gLSAgICAgICAgICAgfQ0KPiAtDQo+IC0g ICAgICAgICAvKiBDaGFuZ2UgdnNldHZsIHJkLCByczEgLS0+IHZzZXZsIHpl cm8sIHJzMSwNCj4gLSAgICAgICAgICAgIGlmIHJkIGlzIG5vdCB1c2VkIGJ5 IGFueSBub25kZWJ1ZyBpbnN0cnVjdGlvbnMuDQo+IC0gICAgICAgICAgICBF dmVuIHRob3VnaCB0aGlzIFBBU1MgcnVucyBhZnRlciBSQSBhbmQgaXQgZG9l c24ndCBoZWxwIGZvcg0KPiAtICAgICAgICAgICAgcmVkdWNlIHJlZ2lzdGVy IHByZXNzdXJlLCBpdCBjYW4gaGVscCBpbnN0cnVjdGlvbnMgc2NoZWR1bGlu Zw0KPiAtICAgICAgICAgICAgc2luY2Ugd2UgcmVtb3ZlIHRoZSBkZXBlbmRl bmNpZXMuICAqLw0KPiAtICAgICAgICAgaWYgKHZzZXR2bF9pbnNuX3AgKGlu c24tPnJ0bCAoKSkpDQo+IC0gICAgICAgICAgIHsNCj4gLSAgICAgICAgICAg ICBydHggdmwgPSBnZXRfdmwgKGluc24tPnJ0bCAoKSk7DQo+IC0gICAgICAg ICAgICAgcnR4IGF2bCA9IGdldF9hdmwgKGluc24tPnJ0bCAoKSk7DQo+IC0g ICAgICAgICAgICAgZGVmX2luZm8gKmRlZiA9IGZpbmRfYWNjZXNzIChpbnNu LT5kZWZzICgpLCBSRUdOTyAodmwpKTsNCj4gLSAgICAgICAgICAgICBzZXRf aW5mbyAqc2V0ID0gc2FmZV9keW5fY2FzdDxzZXRfaW5mbyAqPiAoZGVmKTsN Cj4gKyAgICAgICAgICAgICBydHggdmwgPSBnZXRfdmwgKHJpbnNuKTsNCj4g ICAgICAgICAgICAgICB2ZWN0b3JfaW5zbl9pbmZvIGluZm87DQo+IC0gICAg ICAgICAgICAgaW5mby5wYXJzZV9pbnNuIChpbnNuKTsNCj4gLSAgICAgICAg ICAgICBnY2NfYXNzZXJ0IChzZXQpOw0KPiAtICAgICAgICAgICAgIGlmICht X3ZlY3Rvcl9tYW5hZ2VyLT50b19kZWxldGVfdnNldHZscy5jb250YWlucyAo aW5zbi0+cnRsICgpKSkNCj4gLSAgICAgICAgICAgICAgIHsNCj4gLSAgICAg ICAgICAgICAgICAgbV92ZWN0b3JfbWFuYWdlci0+dG9fZGVsZXRlX3ZzZXR2 bHMucmVtb3ZlIChpbnNuLT5ydGwgKCkpOw0KPiAtICAgICAgICAgICAgICAg ICBpZiAobV92ZWN0b3JfbWFuYWdlci0+dG9fcmVmaW5lX3ZzZXR2bHMuY29u dGFpbnMgKA0KPiAtICAgICAgICAgICAgICAgICAgICAgICBpbnNuLT5ydGwg KCkpKQ0KPiAtICAgICAgICAgICAgICAgICAgIG1fdmVjdG9yX21hbmFnZXIt PnRvX3JlZmluZV92c2V0dmxzLnJlbW92ZSAoaW5zbi0+cnRsICgpKTsNCj4g LSAgICAgICAgICAgICAgICAgaWYgKCFzZXQtPmhhc19ub25kZWJ1Z19pbnNu X3VzZXMgKCkpDQo+IC0gICAgICAgICAgICAgICAgICAgew0KPiAtICAgICAg ICAgICAgICAgICAgICAgdG9fZGVsZXRlLmFkZCAoaW5zbi0+cnRsICgpKTsN Cj4gLSAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KPiAtICAgICAg ICAgICAgICAgICAgIH0NCj4gLSAgICAgICAgICAgICAgIH0NCj4gLSAgICAg ICAgICAgICBpZiAobV92ZWN0b3JfbWFuYWdlci0+dG9fcmVmaW5lX3ZzZXR2 bHMuY29udGFpbnMgKGluc24tPnJ0bCAoKSkpDQo+ICsgICAgICAgICAgICAg aW5mby5wYXJzZV9pbnNuIChyaW5zbik7DQo+ICsgICAgICAgICAgICAgYm9v bCB0b19kZWxldGVfcCA9IG1fdmVjdG9yX21hbmFnZXItPnRvX2RlbGV0ZV9w IChyaW5zbik7DQo+ICsgICAgICAgICAgICAgYm9vbCB0b19yZWZpbmVfcCA9 IG1fdmVjdG9yX21hbmFnZXItPnRvX3JlZmluZV9wIChyaW5zbik7DQo+ICsg ICAgICAgICAgICAgaWYgKGhhc19ub191c2VzIChjZmdfYmIsIHJpbnNuLCBS RUdOTyAodmwpKSkNCj4gICAgICAgICAgICAgICAgIHsNCj4gLSAgICAgICAg ICAgICAgICAgbV92ZWN0b3JfbWFuYWdlci0+dG9fcmVmaW5lX3ZzZXR2bHMu cmVtb3ZlIChpbnNuLT5ydGwgKCkpOw0KPiAtICAgICAgICAgICAgICAgICBp ZiAoIXNldC0+aGFzX25vbmRlYnVnX2luc25fdXNlcyAoKSkNCj4gKyAgICAg ICAgICAgICAgICAgaWYgKHRvX2RlbGV0ZV9wKQ0KPiArICAgICAgICAgICAg ICAgICAgIHRvX2RlbGV0ZS5hZGQgKHJpbnNuKTsNCj4gKyAgICAgICAgICAg ICAgICAgZWxzZSBpZiAodG9fcmVmaW5lX3ApDQo+ICAgICAgICAgICAgICAg ICAgICAgew0KPiAgICAgICAgICAgICAgICAgICAgICAgcnR4IG5ld19wYXQg PSBnZW5fdnNldHZsX3BhdCAoVlNFVFZMX1ZUWVBFX0NIQU5HRV9PTkxZLA0K PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW5mbywgTlVMTF9SVFgpOw0KPiAtICAgICAgICAgICAgICAg ICAgICAgY2hhbmdlX2luc24gKGluc24tPnJ0bCAoKSwgbmV3X3BhdCk7DQo+ IC0gICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCj4gKyAgICAgICAg ICAgICAgICAgICAgIHZhbGlkYXRlX2NoYW5nZSAocmluc24sICZQQVRURVJO IChyaW5zbiksIG5ld19wYXQsIGZhbHNlKTsNCj4gKyAgICAgICAgICAgICAg ICAgICB9DQo+ICsgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCF2bG1heF9h dmxfcCAoaW5mby5nZXRfYXZsICgpKSkNCj4gKyAgICAgICAgICAgICAgICAg ICB7DQo+ICsgICAgICAgICAgICAgICAgICAgICBydHggbmV3X3BhdCA9IGdl bl92c2V0dmxfcGF0IChWU0VUVkxfRElTQ0FSRF9SRVNVTFQsIGluZm8sDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBOVUxMX1JUWCk7DQo+ICsgICAgICAgICAgICAgICAgICAgICB2 YWxpZGF0ZV9jaGFuZ2UgKHJpbnNuLCAmUEFUVEVSTiAocmluc24pLCBuZXdf cGF0LCBmYWxzZSk7DQo+ICAgICAgICAgICAgICAgICAgICAgfQ0KPiAtICAg ICAgICAgICAgICAgfQ0KPiAtICAgICAgICAgICAgIGlmICh2bG1heF9hdmxf cCAoYXZsKSkNCj4gLSAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KPiAtICAg ICAgICAgICAgIHJ0eCBuZXdfcGF0DQo+IC0gICAgICAgICAgICAgICA9IGdl bl92c2V0dmxfcGF0IChWU0VUVkxfRElTQ0FSRF9SRVNVTFQsIGluZm8sIE5V TExfUlRYKTsNCj4gLSAgICAgICAgICAgICBpZiAoIXNldC0+aGFzX25vbmRl YnVnX2luc25fdXNlcyAoKSkNCj4gLSAgICAgICAgICAgICAgIHsNCj4gLSAg ICAgICAgICAgICAgICAgdmFsaWRhdGVfY2hhbmdlIChpbnNuLT5ydGwgKCks ICZQQVRURVJOIChpbnNuLT5ydGwgKCkpLA0KPiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG5ld19wYXQsIGZhbHNlKTsNCj4gLSAgICAg ICAgICAgICAgICAgY29udGludWU7DQo+ICAgICAgICAgICAgICAgICB9DQo+ ICAgICAgICAgICAgIH0NCj4gICAgICAgICB9DQo+ICAgICAgfQ0KPiAtDQo+ ICAgIGZvciAocnR4X2luc24gKnJpbnNuIDogdG9fZGVsZXRlKQ0KPiAgICAg IGVsaW1pbmF0ZV9pbnNuIChyaW5zbik7DQo+ICB9DQo+IEBAIC00NTkzLDE2 ICs0NzA3LDE2IEBAIHBhc3NfdnNldHZsOjpsYXp5X3ZzZXR2bCAodm9pZCkN Cj4gICAgICBmcHJpbnRmIChkdW1wX2ZpbGUsICJcblBoYXNlIDQ6IFBSRSB2 c2V0dmwgYnkgTGF6eSBjb2RlIG1vdGlvbiAoTENNKVxuIik7DQo+ICAgIHBy ZV92c2V0dmwgKCk7DQo+DQo+IC0gIC8qIFBoYXNlIDUgLSBDbGVhbnVwIEFW TCAmJiBWTCBvcGVyYW5kIG9mIFJWViBpbnN0cnVjdGlvbi4gICovDQo+ICsg IC8qIFBoYXNlIDUgLSBQb3N0IG9wdGltaXphdGlvbiBiYXNlIG9uIFJUTF9T U0EuICAqLw0KPiAgICBpZiAoZHVtcF9maWxlKQ0KPiAtICAgIGZwcmludGYg KGR1bXBfZmlsZSwgIlxuUGhhc2UgNTogQ2xlYW51cCBBVkwgYW5kIFZMIG9w ZXJhbmRzXG4iKTsNCj4gLSAgY2xlYW51cF9pbnNucyAoKTsNCj4gKyAgICBm cHJpbnRmIChkdW1wX2ZpbGUsICJcblBoYXNlIDU6IFBvc3Qgb3B0aW1pemF0 aW9uIGJhc2Ugb24gUlRMX1NTQVxuIik7DQo+ICsgIHNzYV9wb3N0X29wdGlt aXphdGlvbiAoKTsNCj4NCj4gLSAgLyogUGhhc2UgNiAtIFJlYnVpbGQgUlRM X1NTQSB0byBwcm9wYWdhdGUgQVZMIGJldHdlZW4gdnNldHZscy4gICovDQo+ ICsgIC8qIFBoYXNlIDYgLSBQb3N0IG9wdGltaXphdGlvbiBiYXNlIG9uIGRh dGEtZmxvdyBhbmFseXNpcy4gICovDQo+ICAgIGlmIChkdW1wX2ZpbGUpDQo+ ICAgICAgZnByaW50ZiAoZHVtcF9maWxlLA0KPiAtICAgICAgICAgICAgIlxu UGhhc2UgNjogUmVidWlsZCBSVExfU1NBIHRvIHByb3BhZ2F0ZSBBVkwgYmV0 d2VlbiB2c2V0dmxzXG4iKTsNCj4gLSAgcHJvcGFnYXRlX2F2bCAoKTsNCj4g KyAgICAgICAgICAgICJcblBoYXNlIDY6IFBvc3Qgb3B0aW1pemF0aW9uIGJh c2Ugb24gZGF0YS1mbG93IGFuYWx5c2lzXG4iKTsNCj4gKyAgZGZfcG9zdF9v cHRpbWl6YXRpb24gKCk7DQo+ICB9DQo+DQo+ICAvKiBNYWluIGVudHJ5IHBv aW50IGZvciB0aGlzIHBhc3MuICAqLw0KPiBkaWZmIC0tZ2l0IGEvZ2NjL2Nv bmZpZy9yaXNjdi9yaXNjdi12c2V0dmwuaCBiL2djYy9jb25maWcvcmlzY3Yv cmlzY3YtdnNldHZsLmgNCj4gaW5kZXggZDdhNmMxNGU5MzEuLjQyNTc0NTFi Yjc0IDEwMDY0NA0KPiAtLS0gYS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXZz ZXR2bC5oDQo+ICsrKyBiL2djYy9jb25maWcvcmlzY3YvcmlzY3YtdnNldHZs LmgNCj4gQEAgLTI5MCwxMyArMjkwLDYgQEAgcHJpdmF0ZToNCj4gICAgICAg ZGVmaW5pdGlvbiBvZiBBVkwuICAqLw0KPiAgICBydGxfc3NhOjppbnNuX2lu Zm8gKm1faW5zbjsNCj4NCj4gLSAgLyogUGFyc2UgdGhlIGluc3RydWN0aW9u IHRvIGdldCBWTC9WVFlQRSBpbmZvcm1hdGlvbiBhbmQgZGVtYW5kaW5nDQo+ IC0gICAqIGluZm9ybWF0aW9uLiAgKi8NCj4gLSAgLyogVGhpcyBpcyBvbmx5 IGNhbGxlZCBieSBzaW1wbGVfdnNldHZsIHN1YnJvdXRpbmUgd2hlbiBvcHRp bWl6ZSA9PSAwLg0KPiAtICAgICBTaW5jZSBSVExfU1NBIGNhbiBub3QgYmUg ZW5hYmxlZCB3aGVuIG9wdGltaXplID09IDAsIHdlIGRvbid0IGluaXRpYWxp emUNCj4gLSAgICAgdGhlIG1faW5zbi4gICovDQo+IC0gIHZvaWQgcGFyc2Vf aW5zbiAocnR4X2luc24gKik7DQo+IC0NCj4gICAgZnJpZW5kIGNsYXNzIHZl Y3Rvcl9pbmZvc19tYW5hZ2VyOw0KPg0KPiAgcHVibGljOg0KPiBAQCAtMzA1 LDYgKzI5OCwxMiBAQCBwdWJsaWM6DQo+ICAgICAgICBtX2luc24gKG51bGxw dHIpDQo+ICAgIHt9DQo+DQo+ICsgIC8qIFBhcnNlIHRoZSBpbnN0cnVjdGlv biB0byBnZXQgVkwvVlRZUEUgaW5mb3JtYXRpb24gYW5kIGRlbWFuZGluZw0K PiArICAgKiBpbmZvcm1hdGlvbi4gICovDQo+ICsgIC8qIFRoaXMgaXMgb25s eSBjYWxsZWQgYnkgc2ltcGxlX3ZzZXR2bCBzdWJyb3V0aW5lIHdoZW4gb3B0 aW1pemUgPT0gMC4NCj4gKyAgICAgU2luY2UgUlRMX1NTQSBjYW4gbm90IGJl IGVuYWJsZWQgd2hlbiBvcHRpbWl6ZSA9PSAwLCB3ZSBkb24ndCBpbml0aWFs aXplDQo+ICsgICAgIHRoZSBtX2luc24uICAqLw0KPiArICB2b2lkIHBhcnNl X2luc24gKHJ0eF9pbnNuICopOw0KPiAgICAvKiBUaGlzIGlzIG9ubHkgY2Fs bGVkIGJ5IGxhenlfdnNldHZsIHN1YnJvdXRpbmUgd2hlbiBvcHRpbWl6ZSA+ IDAuDQo+ICAgICAgIFdlIHVzZSBSVExfU1NBIGZyYW1ld29yayB0byBpbml0 aWFsaXplIHRoZSBpbnNuX2luZm8uICAqLw0KPiAgICB2b2lkIHBhcnNlX2lu c24gKHJ0bF9zc2E6Omluc25faW5mbyAqKTsNCj4gQEAgLTQ1NCw2ICs0NTMs MjcgQEAgcHVibGljOg0KPiAgICBib29sIGFsbF9lbXB0eV9wcmVkZWNlc3Nv cl9wIChjb25zdCBiYXNpY19ibG9jaykgY29uc3Q7DQo+ICAgIGJvb2wgYWxs X2F2YWlsX2luX2NvbXBhdGlibGVfcCAoY29uc3QgYmFzaWNfYmxvY2spIGNv bnN0Ow0KPg0KPiArICBib29sIHRvX2RlbGV0ZV9wIChydHhfaW5zbiAqcmlu c24pDQo+ICsgIHsNCj4gKyAgICBpZiAodG9fZGVsZXRlX3ZzZXR2bHMuY29u dGFpbnMgKHJpbnNuKSkNCj4gKyAgICAgIHsNCj4gKyAgICAgICB0b19kZWxl dGVfdnNldHZscy5yZW1vdmUgKHJpbnNuKTsNCj4gKyAgICAgICBpZiAodG9f cmVmaW5lX3ZzZXR2bHMuY29udGFpbnMgKHJpbnNuKSkNCj4gKyAgICAgICAg IHRvX3JlZmluZV92c2V0dmxzLnJlbW92ZSAocmluc24pOw0KPiArICAgICAg IHJldHVybiB0cnVlOw0KPiArICAgICAgfQ0KPiArICAgIHJldHVybiBmYWxz ZTsNCj4gKyAgfQ0KPiArICBib29sIHRvX3JlZmluZV9wIChydHhfaW5zbiAq cmluc24pDQo+ICsgIHsNCj4gKyAgICBpZiAodG9fcmVmaW5lX3ZzZXR2bHMu Y29udGFpbnMgKHJpbnNuKSkNCj4gKyAgICAgIHsNCj4gKyAgICAgICB0b19y ZWZpbmVfdnNldHZscy5yZW1vdmUgKHJpbnNuKTsNCj4gKyAgICAgICByZXR1 cm4gdHJ1ZTsNCj4gKyAgICAgIH0NCj4gKyAgICByZXR1cm4gZmFsc2U7DQo+ ICsgIH0NCj4gKw0KPiAgICB2b2lkIHJlbGVhc2UgKHZvaWQpOw0KPiAgICB2 b2lkIGNyZWF0ZV9iaXRtYXBfdmVjdG9ycyAodm9pZCk7DQo+ICAgIHZvaWQg ZnJlZV9iaXRtYXBfdmVjdG9ycyAodm9pZCk7DQo+IGRpZmYgLS1naXQgYS9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3ZzZXR2bC92c2V0 dmwtMTYuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYv dnNldHZsL3ZzZXR2bC0xNi5jDQo+IGluZGV4IGUwYzY1ODhiMWRiLi4yOWUw NWM0OTgyYiAxMDA2NDQNCj4gLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L3Jpc2N2L3J2di92c2V0dmwvdnNldHZsLTE2LmMNCj4gKysrIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di92c2V0dmwvdnNldHZs LTE2LmMNCj4gQEAgLTE2LDUgKzE2LDUgQEAgdm9pZCBmKGludDhfdCAqYmFz ZSwgaW50OF90ICpvdXQsIHNpemVfdCB2bCwgc2l6ZV90IG0pIHsNCj4gICAg fQ0KPiAgfQ0KPg0KPiAtLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVy LXRpbWVzIHt2c2V0dmxpfSAzIHsgdGFyZ2V0IHsgbm8tb3B0cyAiLU8wIiBu by1vcHRzICItT3MiIG5vLW9wdHMgIi1PeiIgbm8tb3B0cyAiLWciIG5vLW9w dHMgIi1mdW5yb2xsLWxvb3BzIiB9IH0gfSB9ICovDQo+ICsvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge3ZzZXR2bGl9IDIgeyB0YXJn ZXQgeyBuby1vcHRzICItTzAiIG5vLW9wdHMgIi1PcyIgbm8tb3B0cyAiLU96 IiBuby1vcHRzICItZyIgbm8tb3B0cyAiLWZ1bnJvbGwtbG9vcHMiIH0gfSB9 IH0gKi8NCj4gIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1l cyB7c2xsaVxzK1thLXgwLTldKyxccypbYS14MC05XSssXHMqMTB9IDEgeyB0 YXJnZXQgeyBuby1vcHRzICItTzAiIG5vLW9wdHMgIi1nIiBuby1vcHRzICIt ZnVucm9sbC1sb29wcyIgfSB9IH0gfSAqLw0KPiBkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di92c2V0dmwvdnNldHZs LTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvdnNl dHZsL3ZzZXR2bC0yLmMNCj4gaW5kZXggMGM1ZGE1ZTY0MGMuLmZmMDE3MWIz ZmY2IDEwMDY0NA0KPiAtLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv cmlzY3YvcnZ2L3ZzZXR2bC92c2V0dmwtMi5jDQo+ICsrKyBiL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvdnNldHZsL3ZzZXR2bC0yLmMN Cj4gQEAgLTE3LDQgKzE3LDQgQEAgdm9pZCBmKGludDhfdCAqYmFzZSwgaW50 OF90ICpvdXQsIHNpemVfdCB2bCwgc2l6ZV90IG0pIHsNCj4gIH0NCj4NCj4g IC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7c2xsaVxz K1thLXgwLTldKyxccypbYS14MC05XSssXHMqMTB9IDEgeyB0YXJnZXQgeyBu by1vcHRzICItTzAiIG5vLW9wdHMgIi1nIiBuby1vcHRzICItZnVucm9sbC1s b29wcyIgfSB9IH0gfSAqLw0KPiAtLyogeyBkZy1maW5hbCB7IHNjYW4tYXNz ZW1ibGVyLXRpbWVzIHt2c2V0dmxpfSAzIHsgdGFyZ2V0IHsgbm8tb3B0cyAi LU8wIiBuby1vcHRzICItT3MiIG5vLW9wdHMgIi1PeiIgbm8tb3B0cyAiLWci IG5vLW9wdHMgIi1mdW5yb2xsLWxvb3BzIiB9IH0gfSB9ICovDQo+ICsvKiB7 IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge3ZzZXR2bGl9IDIg eyB0YXJnZXQgeyBuby1vcHRzICItTzAiIG5vLW9wdHMgIi1PcyIgbm8tb3B0 cyAiLU96IiBuby1vcHRzICItZyIgbm8tb3B0cyAiLWZ1bnJvbGwtbG9vcHMi IH0gfSB9IH0gKi8NCj4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9yaXNjdi9ydnYvdnNldHZsL3ZzZXR2bC0yMS5jIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di92c2V0dmwvdnNldHZsLTIx LmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAw MDAuLjU1MTkyMGM2YTcyDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di92c2V0dmwvdnNldHZs LTIxLmMNCj4gQEAgLTAsMCArMSwyMSBAQA0KPiArLyogeyBkZy1kbyBjb21w aWxlIH0gKi8NCj4gKy8qIHsgZGctb3B0aW9ucyAiLW1hcmNoPXJ2MzJnY3Yg LW1hYmk9aWxwMzIgLWZuby1zY2hlZHVsZS1pbnNucyAtZm5vLXNjaGVkdWxl LWluc25zMiIgfSAqLw0KPiArDQo+ICsjaW5jbHVkZSAicmlzY3ZfdmVjdG9y LmgiDQo+ICsNCj4gK3ZvaWQgZihpbnQ4X3QgKmJhc2UsIGludDhfdCAqb3V0 LCBzaXplX3QgdmwsIHNpemVfdCBtLCBzaXplX3Qgaykgew0KPiArICBzaXpl X3QgYXZsOw0KPiArICBpZiAobSA+IDEwMCkNCj4gKyAgICBhdmwgPSBfX3Jp c2N2X3ZzZXR2bF9lMTZtZjQodmwgPDwgNCk7DQo+ICsgIGVsc2V7DQo+ICsg ICAgaWYgKGspDQo+ICsgICAgICBhdmwgPSBfX3Jpc2N2X3ZzZXR2bF9lOG1m OCh2bCk7DQo+ICsgIH0NCj4gKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt OyBpKyspIHsNCj4gKyAgICB2aW50OG1mOF90IHYwID0gX19yaXNjdl92bGU4 X3ZfaThtZjgoYmFzZSArIGksIGF2bCk7DQo+ICsgICAgX19yaXNjdl92c2U4 X3ZfaThtZjgob3V0ICsgaSwgdjAsIGF2bCk7DQo+ICsgIH0NCj4gK30NCj4g Kw0KPiArLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtz bGxpXHMrW2EteDAtOV0rLFxzKlthLXgwLTldKyxccyo0fSAxIHsgdGFyZ2V0 IHsgbm8tb3B0cyAiLU8wIiBuby1vcHRzICItZyIgbm8tb3B0cyAiLWZ1bnJv bGwtbG9vcHMiIH0gfSB9IH0gKi8NCj4gKy8qIHsgZGctZmluYWwgeyBzY2Fu LWFzc2VtYmxlci10aW1lcyB7dnNldHZsaX0gMyB7IHRhcmdldCB7IG5vLW9w dHMgIi1PMCIgbm8tb3B0cyAiLU9zIiBuby1vcHRzICItT3oiIG5vLW9wdHMg Ii1nIiBuby1vcHRzICItZnVucm9sbC1sb29wcyIgfSB9IH0gfSAqLw0KPiBk aWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2 di92c2V0dmwvdnNldHZsLTIyLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvcmlzY3YvcnZ2L3ZzZXR2bC92c2V0dmwtMjIuYw0KPiBuZXcgZmlsZSBt b2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMC4uMTAzZjQyMzhjNzYN Cj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvcmlzY3YvcnZ2L3ZzZXR2bC92c2V0dmwtMjIuYw0KPiBAQCAtMCww ICsxLDIxIEBADQo+ICsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLw0KPiArLyog eyBkZy1vcHRpb25zICItbWFyY2g9cnYzMmdjdiAtbWFiaT1pbHAzMiAtZm5v LXNjaGVkdWxlLWluc25zIC1mbm8tc2NoZWR1bGUtaW5zbnMyIiB9ICovDQo+ ICsNCj4gKyNpbmNsdWRlICJyaXNjdl92ZWN0b3IuaCINCj4gKw0KPiArdm9p ZCBmKGludDhfdCAqYmFzZSwgaW50OF90ICpvdXQsIHNpemVfdCB2bCwgc2l6 ZV90IG0sIHNpemVfdCBrKSB7DQo+ICsgIHNpemVfdCBhdmw7DQo+ICsgIGlm IChtID4gMTAwKQ0KPiArICAgIGF2bCA9IF9fcmlzY3ZfdnNldHZsX2UxNm1m NCh2bCA8PCA0KTsNCj4gKyAgZWxzZQ0KPiArICAgIGF2bCA9IF9fcmlzY3Zf dnNldHZsX2UzMm1mMih2bCA+PiA4KTsNCj4gKyAgZm9yIChzaXplX3QgaSA9 IDA7IGkgPCBtOyBpKyspIHsNCj4gKyAgICB2aW50OG1mOF90IHYwID0gX19y aXNjdl92bGU4X3ZfaThtZjgoYmFzZSArIGksIGF2bCk7DQo+ICsgICAgdjAg PSBfX3Jpc2N2X3ZhZGRfdnZfaThtZjggKHYwLCB2MCwgYXZsKTsNCj4gKyAg ICBfX3Jpc2N2X3ZzZThfdl9pOG1mOChvdXQgKyBpLCB2MCwgYXZsKTsNCj4g KyAgfQ0KPiArfQ0KPiArDQo+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXItdGltZXMge3NsbGlccytbYS14MC05XSssXHMqW2EteDAtOV0rLFxz KjR9IDEgeyB0YXJnZXQgeyBuby1vcHRzICItTzAiIG5vLW9wdHMgIi1nIiBu by1vcHRzICItZnVucm9sbC1sb29wcyIgfSB9IH0gfSAqLw0KPiArLyogeyBk Zy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHt2c2V0dmxpfSAyIHsg dGFyZ2V0IHsgbm8tb3B0cyAiLU8wIiBuby1vcHRzICItT3MiIG5vLW9wdHMg Ii1PeiIgbm8tb3B0cyAiLWciIG5vLW9wdHMgIi1mdW5yb2xsLWxvb3BzIiB9 IH0gfSB9ICovDQo+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIt dGltZXMge3ZzZXR2bGlccyt6ZXJvLFxzKlthLXgwLTldKyxccyplOCxccypt ZjgsXHMqdFthdV0sXHMqbVthdV19IDIgeyB0YXJnZXQgeyBuby1vcHRzICIt TzAiIG5vLW9wdHMgIi1nIiBuby1vcHRzICItZnVucm9sbC1sb29wcyIgfSB9 IH0gfSAqLw0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L3Jpc2N2L3J2di92c2V0dmwvdnNldHZsLTIzLmMgYi9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3ZzZXR2bC92c2V0dmwtMjMuYw0K PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMC4u NjZjOTBhYzEwZTcNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3ZzZXR2bC92c2V0dmwtMjMu Yw0KPiBAQCAtMCwwICsxLDM3IEBADQo+ICsvKiB7IGRnLWRvIGNvbXBpbGUg fSAqLw0KPiArLyogeyBkZy1vcHRpb25zICItbWFyY2g9cnYzMmdjdiAtbWFi aT1pbHAzMiAtZm5vLXNjaGVkdWxlLWluc25zIC1mbm8tc2NoZWR1bGUtaW5z bnMyIiB9ICovDQo+ICsNCj4gKyNpbmNsdWRlICJyaXNjdl92ZWN0b3IuaCIN Cj4gKw0KPiArdm9pZCBmKGludDhfdCAqYmFzZSwgaW50OF90ICpvdXQsIHNp emVfdCB2bCwgc2l6ZV90IG0sIHNpemVfdCBrKSB7DQo+ICsgIHNpemVfdCBh dmw7DQo+ICsgIHN3aXRjaCAobSkNCj4gKyAgew0KPiArICBjYXNlIDUwOg0K PiArICAgIGF2bCA9IF9fcmlzY3ZfdnNldHZsX2UxNm1mNCh2bCA8PCA0KTsN Cj4gKyAgICBicmVhazsNCj4gKyAgY2FzZSAxOg0KPiArICAgIGF2bCA9IF9f cmlzY3ZfdnNldHZsX2UzMm1mMihrKTsNCj4gKyAgICBicmVhazsNCj4gKyAg Y2FzZSAyOg0KPiArICAgIGF2bCA9IF9fcmlzY3ZfdnNldHZsX2U2NG0xKHZs KTsNCj4gKyAgICBicmVhazsNCj4gKyAgY2FzZSAzOg0KPiArICAgIGF2bCA9 IF9fcmlzY3ZfdnNldHZsX2UzMm1mMihrID4+IDgpOw0KPiArICAgIGJyZWFr Ow0KPiArICBkZWZhdWx0Og0KPiArICAgIGF2bCA9IF9fcmlzY3ZfdnNldHZs X2UzMm1mMihrICsgdmwpOw0KPiArICAgIGJyZWFrOw0KPiArICB9DQo+ICsg IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbTsgaSsrKSB7DQo+ICsgICAgdmlu dDhtZjhfdCB2MCA9IF9fcmlzY3ZfdmxlOF92X2k4bWY4KGJhc2UgKyBpLCBh dmwpOw0KPiArICAgIHYwID0gX19yaXNjdl92YWRkX3Z2X2k4bWY4ICh2MCwg djAsIGF2bCk7DQo+ICsgICAgdjAgPSBfX3Jpc2N2X3ZhZGRfdnZfaThtZjhf dHUgKHYwLCB2MCwgdjAsIGF2bCk7DQo+ICsgICAgX19yaXNjdl92c2U4X3Zf aThtZjgob3V0ICsgaSwgdjAsIGF2bCk7DQo+ICsgIH0NCj4gK30NCj4gKw0K PiArLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtzbGxp XHMrW2EteDAtOV0rLFxzKlthLXgwLTldKyxccyo0fSAxIHsgdGFyZ2V0IHsg bm8tb3B0cyAiLU8wIiBuby1vcHRzICItZyIgbm8tb3B0cyAiLWZ1bnJvbGwt bG9vcHMiIH0gfSB9IH0gKi8NCj4gKy8qIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlci10aW1lcyB7c3JsaVxzK1thLXgwLTldKyxccypbYS14MC05XSss XHMqOH0gMSB7IHRhcmdldCB7IG5vLW9wdHMgIi1PMCIgbm8tb3B0cyAiLWci IG5vLW9wdHMgIi1mdW5yb2xsLWxvb3BzIiB9IH0gfSB9ICovDQo+ICsvKiB7 IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge3ZzZXR2bGl9IDUg eyB0YXJnZXQgeyBuby1vcHRzICItTzAiIG5vLW9wdHMgIi1PcyIgbm8tb3B0 cyAiLU96IiBuby1vcHRzICItZyIgbm8tb3B0cyAiLWZ1bnJvbGwtbG9vcHMi IH0gfSB9IH0gKi8NCj4gKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ci10aW1lcyB7dnNldHZsaVxzK3plcm8sXHMqW2EteDAtOV0rLFxzKmU4LFxz Km1mOCxccyp0dSxccyptW2F1XX0gNSB7IHRhcmdldCB7IG5vLW9wdHMgIi1P MCIgbm8tb3B0cyAiLU9zIiBuby1vcHRzICItZyIgbm8tb3B0cyAiLWZ1bnJv bGwtbG9vcHMiIH0gfSB9IH0gKi8NCj4gZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvdnNldHZsL3ZzZXR2bC0zLmMg Yi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3ZzZXR2bC92 c2V0dmwtMy5jDQo+IGluZGV4IGY5OTVlMDRhYWNjLi4xM2QwOWZjM2ZkMSAx MDA2NDQNCj4gLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2 L3J2di92c2V0dmwvdnNldHZsLTMuYw0KPiArKysgYi9nY2MvdGVzdHN1aXRl L2djYy50YXJnZXQvcmlzY3YvcnZ2L3ZzZXR2bC92c2V0dmwtMy5jDQo+IEBA IC0xOCw0ICsxOCw0IEBAIHZvaWQgZihpbnQ4X3QgKmJhc2UsIGludDhfdCAq b3V0LCBzaXplX3QgdmwsIHNpemVfdCBtKSB7DQo+ICB9DQo+DQo+ICAvKiB7 IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge3NsbGlccytbYS14 MC05XSssXHMqW2EteDAtOV0rLFxzKjEwfSAxIHsgdGFyZ2V0IHsgbm8tb3B0 cyAiLU8wIiBuby1vcHRzICItZyIgbm8tb3B0cyAiLWZ1bnJvbGwtbG9vcHMi IH0gfSB9IH0gKi8NCj4gLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ci10aW1lcyB7dnNldHZsaX0gMyB7IHRhcmdldCB7IG5vLW9wdHMgIi1PMCIg bm8tb3B0cyAiLU9zIiBuby1vcHRzICItT3oiIG5vLW9wdHMgIi1nIiBuby1v cHRzICItZnVucm9sbC1sb29wcyIgfSB9IH0gfSAqLw0KPiArLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHt2c2V0dmxpfSAyIHsgdGFy Z2V0IHsgbm8tb3B0cyAiLU8wIiBuby1vcHRzICItT3MiIG5vLW9wdHMgIi1P eiIgbm8tb3B0cyAiLWciIG5vLW9wdHMgIi1mdW5yb2xsLWxvb3BzIiB9IH0g fSB9ICovDQo+IC0tDQo+IDIuMzYuMQ0KPg0KIA0K ------=_001_NextPart288755728020_=------