From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpbguseast3.qq.com (smtpbguseast3.qq.com [54.243.244.52]) by sourceware.org (Postfix) with ESMTPS id 33A733857355 for ; Wed, 18 Oct 2023 04:17:30 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 33A733857355 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=rivai.ai Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=rivai.ai ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 33A733857355 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=54.243.244.52 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1697602655; cv=none; b=NLjR9nOWvCmge3FFIBzVMuhvhu+47993HuLOlSjz101Jw0NBnk37YqKXjHpdyLN7Io2VkEHmG9oHDPYQmOgoDBSCZu/RTPilBMDw+KRFuoZaeMYxVfaL9I040y+E7n9b5gGfrsw7pY3rQvHHO2RcAhTdd0C6aIIW32xZqCYthoQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1697602655; c=relaxed/simple; bh=QZpc/h1e9Y8126yyKckYsCDOo56kFBt8WiCtT2cpBgE=; h=Date:From:To:Subject:Mime-Version:Message-ID; b=HrUC2j2Tg+KxQtiZJH31h0O6aXh8Wm4L1lVPz+qp4ql1W5xMqb86LvOLK4OV+2wKmXnGOL2eZp56EW+b825X8bV6mNyKkKIPSqiimfXKv+S0m6j9eogaT6sgJs4rvh95Z4QcCTMc7UuDyd94APGCfyYif/TyA++Cqj9HUuXDxUI= ARC-Authentication-Results: i=1; server2.sourceware.org X-QQ-mid: bizesmtp86t1697602631t1wkeeqp Received: from LAPTOP-EPITNQBU ( [113.104.225.121]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 18 Oct 2023 12:17:10 +0800 (CST) X-QQ-SSF: 01400000000000G0V000000A0000000 X-QQ-FEAT: ERSZEewZJukHsSDdcKhgfweh7Cr5kQI0LU4xm/nNVhPq10QJq2rfjywPpUvRV oUqWaNTDu6GYGFQgFAFERvlnIt90zP44BmiOVfWjX8xbrEdKBwPOdHT5ey0iljjwRtACgv3 dLlOfFdtHkOeNoluNM1eD8KqrzJNYkgJzwWK1eUuetU8t1LWuYLqNhLr4mqLQJ77m43qcjW RrwJKUvVKJW7dYhmCx8tfjKHYIqnuSBV0QPZIMqcuV+aqgqWORDjMPtub8e55n9zku3tngY zw3t7icuebS8sLccQTJtAgmod0BLTIZlCF2C5LXFCpyQoX42ffp71u6H8ssx5qPkM5IeK88 W6wlufE5umeQeYcDC0pRZrUmU8RnfrDLRugRAqS8OyLkagKtWplASZ+swmZ3mgFbeTIV4gV vwCVr6MkENrhE9OEd2XUbvfwfhRayfsaY+PO08B69Sg= X-QQ-GoodBg: 2 X-BIZMAIL-ID: 14718890552841373547 Date: Wed, 18 Oct 2023 12:17:10 +0800 From: "juzhe.zhong@rivai.ai" To: =?GB2312?B?tqHA1ruq?= , gcc-patches Cc: kito.cheng , "Robin Dapp" , palmer , jeffreyalaw , =?GB2312?B?tqHA1ruq?= Subject: Re: [PATCH V2 13/14] RISC-V: P13: Reorganize functions used to modify RTL References: <20231017113500.1160997-1-lehua.ding@rivai.ai>, <20231017113500.1160997-14-lehua.ding@rivai.ai> X-Priority: 3 X-GUID: 06559019-47A3-40D4-AA5E-50A3A19FA3E2 X-Has-Attach: no X-Mailer: Foxmail 7.2.16.188[cn] Mime-Version: 1.0 Message-ID: Content-Type: multipart/alternative; boundary="----=_001_NextPart754722046052_=----" X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvrgz:qybglogicsvrgz7a-one-0 X-Spam-Status: No, score=-12.0 required=5.0 tests=BAYES_00,GIT_PATCH_0,HTML_MESSAGE,KAM_DMARC_STATUS,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,SPF_PASS,TXREP 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_NextPart754722046052_=---- Content-Type: text/plain; charset="GB2312" Content-Transfer-Encoding: base64 T0sNCg0KDQoNCmp1emhlLnpob25nQHJpdmFpLmFpDQogDQpGcm9tOiBMZWh1 YSBEaW5nDQpEYXRlOiAyMDIzLTEwLTE3IDE5OjM0DQpUbzogZ2NjLXBhdGNo ZXMNCkNDOiBqdXpoZS56aG9uZzsga2l0by5jaGVuZzsgcmRhcHAuZ2NjOyBw YWxtZXI7IGplZmZyZXlhbGF3OyBsZWh1YS5kaW5nDQpTdWJqZWN0OiBbUEFU Q0ggVjIgMTMvMTRdIFJJU0MtVjogUDEzOiBSZW9yZ2FuaXplIGZ1bmN0aW9u cyB1c2VkIHRvIG1vZGlmeSBSVEwNClRoaXMgc3ViLXBhdGNoIHJlb3JpZ2Fu aXplIHRoZSBmdW5jdGlvbnMgdGhhdCB1c2VkIHRvIG1vZGlmeSBSVEwuDQog DQpnY2MvQ2hhbmdlTG9nOg0KIA0KKiBjb25maWcvcmlzY3YvcmlzY3YtdnNl dHZsLmNjIChoYXNfbm9fdXNlcyk6IE1vdmVkLg0KKHZhbGlkYXRlX2NoYW5n ZV9vcl9mYWlsKTogTW92ZWQuDQooZ2VuX3ZzZXR2bF9wYXQpOiBSZW1vdmVk Lg0KKGVtaXRfdnNldHZsX2luc24pOiBSZW1vdmVkLg0KKGVsaW1pbmF0ZV9p bnNuKTogUmVtb3ZlZC4NCihjaGFuZ2VfaW5zbik6IFJlbW92ZWQuDQooY2hh bmdlX3ZzZXR2bF9pbnNuKTogTmV3Lg0KKHByZV92c2V0dmw6OmVtaXRfdnNl dHZsKTogTmV3Lg0KKHByZV92c2V0dmw6OnJlbW92ZV9hdmxfb3BlcmFuZCk6 IEFkanVzdC4NCihwcmVfdnNldHZsOjpyZW1vdmVfdW51c2VkX2Rlc3Rfb3Bl cmFuZCk6IEFkanVzdC4NCihwYXNzX3ZzZXR2bDo6c2ltcGxlX3ZzZXR2bCk6 IEFkanVzdC4NCiANCi0tLQ0KZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12c2V0 dmwuY2MgfCA0NDMgKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLQ0K MSBmaWxlIGNoYW5nZWQsIDE3NiBpbnNlcnRpb25zKCspLCAyNjcgZGVsZXRp b25zKC0pDQogDQpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNj di12c2V0dmwuY2MgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXZzZXR2bC5j Yw0KaW5kZXggZDkxYjAyNzJkOWYuLjc4ODE2Y2JlZTE1IDEwMDY0NA0KLS0t IGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12c2V0dmwuY2MNCisrKyBiL2dj Yy9jb25maWcvcmlzY3YvcmlzY3YtdnNldHZsLmNjDQpAQCAtNjgwLDYgKzY4 MCwzMCBAQCBnZXRfYmJfaW5kZXggKHVuc2lnbmVkIGV4cHJfaWQsIHVuc2ln bmVkIG51bV9iYikNCiAgIHJldHVybiBleHByX2lkICUgbnVtX2JiOw0KfQ0K IA0KKy8qIFJldHVybiB0cnVlIGlmIHRoZSBTRVQgcmVzdWx0IGlzIG5vdCB1 c2VkIGJ5IGFueSBpbnN0cnVjdGlvbnMuICAqLw0KK3N0YXRpYyBib29sDQor aGFzX25vX3VzZXMgKGJhc2ljX2Jsb2NrIGNmZ19iYiwgcnR4X2luc24gKnJp bnNuLCBpbnQgcmVnbm8pDQorew0KKyAgaWYgKGJpdG1hcF9iaXRfcCAoZGZf Z2V0X2xpdmVfb3V0IChjZmdfYmIpLCByZWdubykpDQorICAgIHJldHVybiBm YWxzZTsNCisNCisgIHJ0eF9pbnNuICppdGVyOw0KKyAgZm9yIChpdGVyID0g TkVYVF9JTlNOIChyaW5zbik7IGl0ZXIgJiYgaXRlciAhPSBORVhUX0lOU04g KEJCX0VORCAoY2ZnX2JiKSk7DQorICAgICAgIGl0ZXIgPSBORVhUX0lOU04g KGl0ZXIpKQ0KKyAgICBpZiAoZGZfZmluZF91c2UgKGl0ZXIsIHJlZ25vX3Jl Z19ydHhbcmVnbm9dKSkNCisgICAgICByZXR1cm4gZmFsc2U7DQorDQorICBy ZXR1cm4gdHJ1ZTsNCit9DQorDQorLyogQ2hhbmdlIGluc24gYW5kIEFzc2Vy dCB0aGUgY2hhbmdlIGFsd2F5cyBoYXBwZW5zLiAgKi8NCitzdGF0aWMgdm9p ZA0KK3ZhbGlkYXRlX2NoYW5nZV9vcl9mYWlsIChydHggb2JqZWN0LCBydHgg KmxvYywgcnR4IG5ld19ydHgsIGJvb2wgaW5fZ3JvdXApDQorew0KKyAgYm9v bCBjaGFuZ2VfcCA9IHZhbGlkYXRlX2NoYW5nZSAob2JqZWN0LCBsb2MsIG5l d19ydHgsIGluX2dyb3VwKTsNCisgIGdjY19hc3NlcnQgKGNoYW5nZV9wKTsN Cit9DQorDQovKiBUaGlzIGZsYWdzIGluZGljYXRlcyB0aGUgbWluaW11bSBk ZW1hbmQgb2YgdGhlIHZsIGFuZCB2dHlwZSB2YWx1ZXMgYnkgdGhlDQogICAg UlZWIGluc3RydWN0aW9uLiBGb3IgZXhhbXBsZSwgREVNQU5EX1JBVElPX1Ag aW5kaWNhdGVzIHRoYXQgdGhpcyBSVlYNCiAgICBpbnN0cnVjdGlvbiBvbmx5 IG5lZWRzIHRoZSBTRVcvTE1VTCByYXRpbyB0byByZW1haW4gdGhlIHNhbWUs IGFuZCBkb2VzIG5vdA0KQEAgLTExMjYsNiArMTE1MCwyOCBAQCBwdWJsaWM6 DQogICAgICAgfQ0KICAgfQ0KIA0KKyAgLyogUmV0dXJucyB0aGUgY29ycmVz cG9uZGluZyB2c2V0dmwgcnR4IHBhdC4gICovDQorICBydHggZ2V0X3ZzZXR2 bF9wYXQgKGJvb2wgaWdub3JlX3ZsID0gZmFsc2UpIGNvbnN0DQorICB7DQor ICAgIHJ0eCBhdmwgPSBnZXRfYXZsICgpOw0KKyAgICAvKiBpZiBvcHRpbWl6 YXRpb24gPT0gMCBhbmQgdGhlIGluc3RydWN0aW9uIGlzIHZtdi54LnMvdmZt di5mLnMsDQorICAgICAgIHNldCB0aGUgdmFsdWUgb2YgYXZsIHRvIChjb25z dF9pbnQgMCkgc28gdGhhdCBWU0VUVkwgUEFTUyB3aWxsDQorICAgICAgIGlu c2VydCB2c2V0dmwgY29ycmVjdGx5LiovDQorICAgIGlmICghZ2V0X2F2bCAo KSkNCisgICAgICBhdmwgPSBHRU5fSU5UICgwKTsNCisgICAgcnR4IHNldyA9 IGdlbl9pbnRfbW9kZSAoZ2V0X3NldyAoKSwgUG1vZGUpOw0KKyAgICBydHgg dmxtdWwgPSBnZW5faW50X21vZGUgKGdldF92bG11bCAoKSwgUG1vZGUpOw0K KyAgICBydHggdGEgPSBnZW5faW50X21vZGUgKGdldF90YSAoKSwgUG1vZGUp Ow0KKyAgICBydHggbWEgPSBnZW5faW50X21vZGUgKGdldF9tYSAoKSwgUG1v ZGUpOw0KKw0KKyAgICBpZiAoY2hhbmdlX3Z0eXBlX29ubHlfcCAoKSkNCisg ICAgICByZXR1cm4gZ2VuX3ZzZXR2bF92dHlwZV9jaGFuZ2Vfb25seSAoc2V3 LCB2bG11bCwgdGEsIG1hKTsNCisgICAgZWxzZSBpZiAoaGFzX3JlZ192bCAo KSAmJiAhaWdub3JlX3ZsKQ0KKyAgICAgIHJldHVybiBnZW5fdnNldHZsIChQ bW9kZSwgZ2V0X3ZsICgpLCBhdmwsIHNldywgdmxtdWwsIHRhLCBtYSk7DQor ICAgIGVsc2UNCisgICAgICByZXR1cm4gZ2VuX3ZzZXR2bF9kaXNjYXJkX3Jl c3VsdCAoUG1vZGUsIGF2bCwgc2V3LCB2bG11bCwgdGEsIG1hKTsNCisgIH0N CisNCiAgIGJvb2wgb3BlcmF0b3I9PSAoY29uc3QgdnNldHZsX2luZm8gJm90 aGVyKSBjb25zdA0KICAgew0KICAgICBnY2NfYXNzZXJ0ICghdW5pbml0X3Ag KCkgJiYgIW90aGVyLnVuaW5pdF9wICgpDQpAQCAtMTkzOCwxOTkgKzE5ODQs NiBAQCBwdWJsaWM6DQogICB9DQp9Ow0KIA0KLS8qIEVtaXQgdnNldHZsIGlu c3RydWN0aW9uLiAgKi8NCi1zdGF0aWMgcnR4DQotZ2VuX3ZzZXR2bF9wYXQg KGVudW0gdnNldHZsX3R5cGUgaW5zbl90eXBlLCBjb25zdCB2c2V0dmxfaW5m byAmaW5mbywgcnR4IHZsKQ0KLXsNCi0gIHJ0eCBhdmwgPSBpbmZvLmdldF9h dmwgKCk7DQotICAvKiBpZiBvcHRpbWl6YXRpb24gPT0gMCBhbmQgdGhlIGlu c3RydWN0aW9uIGlzIHZtdi54LnMvdmZtdi5mLnMsDQotICAgICBzZXQgdGhl IHZhbHVlIG9mIGF2bCB0byAoY29uc3RfaW50IDApIHNvIHRoYXQgVlNFVFZM IFBBU1Mgd2lsbA0KLSAgICAgaW5zZXJ0IHZzZXR2bCBjb3JyZWN0bHkuKi8N Ci0gIGlmICghaW5mby5nZXRfYXZsICgpKQ0KLSAgICBhdmwgPSBHRU5fSU5U ICgwKTsNCi0gIHJ0eCBzZXcgPSBnZW5faW50X21vZGUgKGluZm8uZ2V0X3Nl dyAoKSwgUG1vZGUpOw0KLSAgcnR4IHZsbXVsID0gZ2VuX2ludF9tb2RlIChp bmZvLmdldF92bG11bCAoKSwgUG1vZGUpOw0KLSAgcnR4IHRhID0gZ2VuX2lu dF9tb2RlIChpbmZvLmdldF90YSAoKSwgUG1vZGUpOw0KLSAgcnR4IG1hID0g Z2VuX2ludF9tb2RlIChpbmZvLmdldF9tYSAoKSwgUG1vZGUpOw0KLQ0KLSAg aWYgKGluc25fdHlwZSA9PSBWU0VUVkxfTk9STUFMKQ0KLSAgICB7DQotICAg ICAgZ2NjX2Fzc2VydCAodmwgIT0gTlVMTF9SVFgpOw0KLSAgICAgIHJldHVy biBnZW5fdnNldHZsIChQbW9kZSwgdmwsIGF2bCwgc2V3LCB2bG11bCwgdGEs IG1hKTsNCi0gICAgfQ0KLSAgZWxzZSBpZiAoaW5zbl90eXBlID09IFZTRVRW TF9WVFlQRV9DSEFOR0VfT05MWSkNCi0gICAgcmV0dXJuIGdlbl92c2V0dmxf dnR5cGVfY2hhbmdlX29ubHkgKHNldywgdmxtdWwsIHRhLCBtYSk7DQotICBl bHNlDQotICAgIHJldHVybiBnZW5fdnNldHZsX2Rpc2NhcmRfcmVzdWx0IChQ bW9kZSwgYXZsLCBzZXcsIHZsbXVsLCB0YSwgbWEpOw0KLX0NCi0NCi1zdGF0 aWMgcnR4DQotZ2VuX3ZzZXR2bF9wYXQgKHJ0eF9pbnNuICpyaW5zbiwgY29u c3QgdnNldHZsX2luZm8gJmluZm8sIHJ0eCB2bCA9IE5VTExfUlRYKQ0KLXsN Ci0gIHJ0eCBuZXdfcGF0Ow0KLSAgdnNldHZsX2luZm8gbmV3X2luZm8gPSBp bmZvOw0KLSAgLyogRm9yIHZtdi54LnMsIHVzZSAwIGZvciBhdmwuICAqLw0K LSAgaWYgKCFpbmZvLmdldF9hdmwgKCkpDQotICAgIHsNCi0gICAgICBuZXdf aW5mby5zZXRfYXZsIChjb25zdDBfcnR4KTsNCi0gICAgICBuZXdfaW5mby5z ZXRfYXZsX2RlZiAobnVsbHB0cik7DQotICAgIH0NCi0NCi0gIGlmICh2bCkN Ci0gICAgbmV3X3BhdCA9IGdlbl92c2V0dmxfcGF0IChWU0VUVkxfTk9STUFM LCBuZXdfaW5mbywgdmwpOw0KLSAgZWxzZQ0KLSAgICB7DQotICAgICAgaWYg KHZzZXR2bF9pbnNuX3AgKHJpbnNuKSAmJiAhaW5mby5jaGFuZ2VfdnR5cGVf b25seV9wICgpKQ0KLSBuZXdfcGF0ID0gZ2VuX3ZzZXR2bF9wYXQgKFZTRVRW TF9OT1JNQUwsIG5ld19pbmZvLCBnZXRfdmwgKHJpbnNuKSk7DQotICAgICAg ZWxzZSBpZiAoaW5mby5jaGFuZ2VfdnR5cGVfb25seV9wICgpDQotICAgICAg ICB8fCBJTlNOX0NPREUgKHJpbnNuKSA9PSBDT0RFX0ZPUl92c2V0dmxfdnR5 cGVfY2hhbmdlX29ubHkpDQotIG5ld19wYXQgPSBnZW5fdnNldHZsX3BhdCAo VlNFVFZMX1ZUWVBFX0NIQU5HRV9PTkxZLCBuZXdfaW5mbywgTlVMTF9SVFgp Ow0KLSAgICAgIGVsc2UNCi0gbmV3X3BhdCA9IGdlbl92c2V0dmxfcGF0IChW U0VUVkxfRElTQ0FSRF9SRVNVTFQsIG5ld19pbmZvLCBOVUxMX1JUWCk7DQot ICAgIH0NCi0gIHJldHVybiBuZXdfcGF0Ow0KLX0NCi0NCi1zdGF0aWMgdm9p ZA0KLWVtaXRfdnNldHZsX2luc24gKGVudW0gdnNldHZsX3R5cGUgaW5zbl90 eXBlLCBlbnVtIGVtaXRfdHlwZSBlbWl0X3R5cGUsDQotICAgY29uc3QgdnNl dHZsX2luZm8gJmluZm8sIHJ0eCB2bCwgcnR4X2luc24gKnJpbnNuKQ0KLXsN Ci0gIHJ0eCBwYXQgPSBnZW5fdnNldHZsX3BhdCAoaW5zbl90eXBlLCBpbmZv LCB2bCk7DQotDQotICBpZiAoZW1pdF90eXBlID09IEVNSVRfRElSRUNUKQ0K LSAgICB7DQotICAgICAgZW1pdF9pbnNuIChwYXQpOw0KLSAgICAgIGlmIChk dW1wX2ZpbGUpDQotIHsNCi0gICBmcHJpbnRmIChkdW1wX2ZpbGUsICIgIElu c2VydCB2c2V0dmwgaW5zbiAlZDpcbiIsDQotICAgIElOU05fVUlEIChnZXRf bGFzdF9pbnNuICgpKSk7DQotICAgcHJpbnRfcnRsX3NpbmdsZSAoZHVtcF9m aWxlLCBnZXRfbGFzdF9pbnNuICgpKTsNCi0gfQ0KLSAgICB9DQotICBlbHNl IGlmIChlbWl0X3R5cGUgPT0gRU1JVF9CRUZPUkUpDQotICAgIHsNCi0gICAg ICBlbWl0X2luc25fYmVmb3JlIChwYXQsIHJpbnNuKTsNCi0gICAgICBpZiAo ZHVtcF9maWxlKQ0KLSB7DQotICAgZnByaW50ZiAoZHVtcF9maWxlLCAiICBJ bnNlcnQgdnNldHZsIGluc24gYmVmb3JlIGluc24gJWQ6XG4iLA0KLSAgICBJ TlNOX1VJRCAocmluc24pKTsNCi0gICBwcmludF9ydGxfc2luZ2xlIChkdW1w X2ZpbGUsIFBSRVZfSU5TTiAocmluc24pKTsNCi0gfQ0KLSAgICB9DQotICBl bHNlDQotICAgIHsNCi0gICAgICBlbWl0X2luc25fYWZ0ZXIgKHBhdCwgcmlu c24pOw0KLSAgICAgIGlmIChkdW1wX2ZpbGUpDQotIHsNCi0gICBmcHJpbnRm IChkdW1wX2ZpbGUsICIgIEluc2VydCB2c2V0dmwgaW5zbiBhZnRlciBpbnNu ICVkOlxuIiwNCi0gICAgSU5TTl9VSUQgKHJpbnNuKSk7DQotICAgcHJpbnRf cnRsX3NpbmdsZSAoZHVtcF9maWxlLCBORVhUX0lOU04gKHJpbnNuKSk7DQot IH0NCi0gICAgfQ0KLX0NCi0NCi1zdGF0aWMgdm9pZA0KLWVsaW1pbmF0ZV9p bnNuIChydHhfaW5zbiAqcmluc24pDQotew0KLSAgaWYgKGR1bXBfZmlsZSkN Ci0gICAgew0KLSAgICAgIGZwcmludGYgKGR1bXBfZmlsZSwgIiAgRWxpbWlu YXRlIGluc24gJWQ6XG4iLCBJTlNOX1VJRCAocmluc24pKTsNCi0gICAgICBw cmludF9ydGxfc2luZ2xlIChkdW1wX2ZpbGUsIHJpbnNuKTsNCi0gICAgfQ0K LSAgaWYgKGluX3NlcXVlbmNlX3AgKCkpDQotICAgIHJlbW92ZV9pbnNuIChy aW5zbik7DQotICBlbHNlDQotICAgIGRlbGV0ZV9pbnNuIChyaW5zbik7DQot fQ0KLQ0KLS8qIENoYW5nZSBpbnNuIGFuZCBBc3NlcnQgdGhlIGNoYW5nZSBh bHdheXMgaGFwcGVucy4gICovDQotc3RhdGljIHZvaWQNCi12YWxpZGF0ZV9j aGFuZ2Vfb3JfZmFpbCAocnR4IG9iamVjdCwgcnR4ICpsb2MsIHJ0eCBuZXdf cnR4LCBib29sIGluX2dyb3VwKQ0KLXsNCi0gIGJvb2wgY2hhbmdlX3AgPSB2 YWxpZGF0ZV9jaGFuZ2UgKG9iamVjdCwgbG9jLCBuZXdfcnR4LCBpbl9ncm91 cCk7DQotICBnY2NfYXNzZXJ0IChjaGFuZ2VfcCk7DQotfQ0KLQ0KLXN0YXRp YyB2b2lkDQotY2hhbmdlX2luc24gKHJ0eF9pbnNuICpyaW5zbiwgcnR4IG5l d19wYXQpDQotew0KLSAgLyogV2UgZG9uJ3QgYXBwbHkgY2hhbmdlIG9uIFJU TF9TU0EgaGVyZSBzaW5jZSBpdCdzIHBvc3NpYmxlIGENCi0gICAgIG5ldyBJ TlNOIHdlIGFkZCBpbiB0aGUgUEFTUyBiZWZvcmUgd2hpY2ggZG9lc24ndCBo YXZlIFJUTF9TU0ENCi0gICAgIGluZm8geWV0LiovDQotICBpZiAoZHVtcF9m aWxlKQ0KLSAgICB7DQotICAgICAgZnByaW50ZiAoZHVtcF9maWxlLCAiICBD aGFuZ2UgaW5zbiAlZCBmcm9tOlxuIiwgSU5TTl9VSUQgKHJpbnNuKSk7DQot ICAgICAgcHJpbnRfcnRsX3NpbmdsZSAoZHVtcF9maWxlLCByaW5zbik7DQot ICAgIH0NCi0NCi0gIHZhbGlkYXRlX2NoYW5nZV9vcl9mYWlsIChyaW5zbiwg JlBBVFRFUk4gKHJpbnNuKSwgbmV3X3BhdCwgZmFsc2UpOw0KLQ0KLSAgaWYg KGR1bXBfZmlsZSkNCi0gICAgew0KLSAgICAgIGZwcmludGYgKGR1bXBfZmls ZSwgIlxuICB0bzpcbiIpOw0KLSAgICAgIHByaW50X3J0bF9zaW5nbGUgKGR1 bXBfZmlsZSwgcmluc24pOw0KLSAgICB9DQotfQ0KLQ0KLXN0YXRpYyBib29s DQotY2hhbmdlX2luc24gKGZ1bmN0aW9uX2luZm8gKnNzYSwgaW5zbl9jaGFu Z2UgY2hhbmdlLCBpbnNuX2luZm8gKmluc24sDQotICAgICAgcnR4IG5ld19w YXQpDQotew0KLSAgcnR4X2luc24gKnJpbnNuID0gaW5zbi0+cnRsICgpOw0K LSAgYXV0byBhdHRlbXB0ID0gc3NhLT5uZXdfY2hhbmdlX2F0dGVtcHQgKCk7 DQotICBpZiAoIXJlc3RyaWN0X21vdmVtZW50IChjaGFuZ2UpKQ0KLSAgICBy ZXR1cm4gZmFsc2U7DQotDQotICBpZiAoZHVtcF9maWxlKQ0KLSAgICB7DQot ICAgICAgZnByaW50ZiAoZHVtcF9maWxlLCAiICBDaGFuZ2UgaW5zbiAlZCBm cm9tOlxuIiwgSU5TTl9VSUQgKHJpbnNuKSk7DQotICAgICAgcHJpbnRfcnRs X3NpbmdsZSAoZHVtcF9maWxlLCByaW5zbik7DQotICAgIH0NCi0NCi0gIGlu c25fY2hhbmdlX3dhdGVybWFyayB3YXRlcm1hcms7DQotICB2YWxpZGF0ZV9j aGFuZ2Vfb3JfZmFpbCAocmluc24sICZQQVRURVJOIChyaW5zbiksIG5ld19w YXQsIHRydWUpOw0KLQ0KLSAgLyogVGhlc2Ugcm91dGluZXMgcmVwb3J0IGZh aWx1cmVzIHRoZW1zZWx2ZXMuICAqLw0KLSAgaWYgKCFyZWNvZyAoYXR0ZW1w dCwgY2hhbmdlKSB8fCAhY2hhbmdlX2lzX3dvcnRod2hpbGUgKGNoYW5nZSwg ZmFsc2UpKQ0KLSAgICByZXR1cm4gZmFsc2U7DQotDQotICByZW1vdmVfcmVn X2VxdWFsX2VxdWl2X25vdGVzIChyaW5zbik7DQotICBjb25maXJtX2NoYW5n ZV9ncm91cCAoKTsNCi0gIHNzYS0+Y2hhbmdlX2luc24gKGNoYW5nZSk7DQot DQotICBpZiAoZHVtcF9maWxlKQ0KLSAgICB7DQotICAgICAgZnByaW50ZiAo ZHVtcF9maWxlLCAiXG4gIHRvOlxuIik7DQotICAgICAgcHJpbnRfcnRsX3Np bmdsZSAoZHVtcF9maWxlLCByaW5zbik7DQotICAgIH0NCi0NCi0gIHJldHVy biB0cnVlOw0KLX0NCi0NCi1zdGF0aWMgdm9pZA0KLWNoYW5nZV92c2V0dmxf aW5zbiAoY29uc3QgaW5zbl9pbmZvICppbnNuLCBjb25zdCB2c2V0dmxfaW5m byAmaW5mbykNCi17DQotICBydHhfaW5zbiAqcmluc24gPSBpbnNuLT5ydGwg KCk7DQotICBydHggbmV3X3BhdCA9IGdlbl92c2V0dmxfcGF0IChyaW5zbiwg aW5mbyk7DQotICBjaGFuZ2VfaW5zbiAocmluc24sIG5ld19wYXQpOw0KLX0N Ci0NCi0vKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgU0VUIHJlc3VsdCBpcyBub3Qg dXNlZCBieSBhbnkgaW5zdHJ1Y3Rpb25zLiAgKi8NCi1zdGF0aWMgYm9vbA0K LWhhc19ub191c2VzIChiYXNpY19ibG9jayBjZmdfYmIsIHJ0eF9pbnNuICpy aW5zbiwgaW50IHJlZ25vKQ0KLXsNCi0gIGlmIChiaXRtYXBfYml0X3AgKGRm X2dldF9saXZlX291dCAoY2ZnX2JiKSwgcmVnbm8pKQ0KLSAgICByZXR1cm4g ZmFsc2U7DQotDQotICBydHhfaW5zbiAqaXRlcjsNCi0gIGZvciAoaXRlciA9 IE5FWFRfSU5TTiAocmluc24pOyBpdGVyICYmIGl0ZXIgIT0gTkVYVF9JTlNO IChCQl9FTkQgKGNmZ19iYikpOw0KLSAgICAgICBpdGVyID0gTkVYVF9JTlNO IChpdGVyKSkNCi0gICAgaWYgKGRmX2ZpbmRfdXNlIChpdGVyLCByZWdub19y ZWdfcnR4W3JlZ25vXSkpDQotICAgICAgcmV0dXJuIGZhbHNlOw0KLQ0KLSAg cmV0dXJuIHRydWU7DQotfQ0KLQ0KY2xhc3MgcHJlX3ZzZXR2bA0Kew0KcHJp dmF0ZToNCkBAIC0yMjU3LDE4ICsyMTEwLDc1IEBAIHByaXZhdGU6DQogICAg ICAgfQ0KICAgfQ0KIA0KLSAgdm9pZCBpbnNlcnRfdnNldHZsIChlbnVtIGVt aXRfdHlwZSBlbWl0X3R5cGUsIHJ0eF9pbnNuICpyaW5zbiwNCi0gICAgICAg Y29uc3QgdnNldHZsX2luZm8gJmluZm8pDQorICB2b2lkIGluc2VydF92c2V0 dmxfaW5zbiAoZW51bSBlbWl0X3R5cGUgZW1pdF90eXBlLCBjb25zdCB2c2V0 dmxfaW5mbyAmaW5mbykNCiAgIHsNCi0gICAgaWYgKGluZm8uY2hhbmdlX3Z0 eXBlX29ubHlfcCAoKSkNCi0gICAgICBlbWl0X3ZzZXR2bF9pbnNuIChWU0VU VkxfVlRZUEVfQ0hBTkdFX09OTFksIGVtaXRfdHlwZSwgaW5mbywgTlVMTF9S VFgsDQotIHJpbnNuKTsNCisgICAgcnR4IHBhdCA9IGluZm8uZ2V0X3ZzZXR2 bF9wYXQgKCk7DQorICAgIHJ0eF9pbnNuICpyaW5zbiA9IGluZm8uZ2V0X2lu c24gKCktPnJ0bCAoKTsNCiANCi0gICAgZWxzZSBpZiAoaW5mby5oYXNfcmVn X3ZsICgpKQ0KLSAgICAgIGVtaXRfdnNldHZsX2luc24gKFZTRVRWTF9OT1JN QUwsIGVtaXRfdHlwZSwgaW5mbywgaW5mby5nZXRfdmwgKCksIHJpbnNuKTsN CisgICAgaWYgKGVtaXRfdHlwZSA9PSBFTUlUX0RJUkVDVCkNCisgICAgICB7 DQorIGVtaXRfaW5zbiAocGF0KTsNCisgaWYgKGR1bXBfZmlsZSkNCisgICB7 DQorICAgICBmcHJpbnRmIChkdW1wX2ZpbGUsICIgIEluc2VydCB2c2V0dmwg aW5zbiAlZDpcbiIsDQorICAgICAgSU5TTl9VSUQgKGdldF9sYXN0X2luc24g KCkpKTsNCisgICAgIHByaW50X3J0bF9zaW5nbGUgKGR1bXBfZmlsZSwgZ2V0 X2xhc3RfaW5zbiAoKSk7DQorICAgfQ0KKyAgICAgIH0NCisgICAgZWxzZSBp ZiAoZW1pdF90eXBlID09IEVNSVRfQkVGT1JFKQ0KKyAgICAgIHsNCisgZW1p dF9pbnNuX2JlZm9yZSAocGF0LCByaW5zbik7DQorIGlmIChkdW1wX2ZpbGUp DQorICAgew0KKyAgICAgZnByaW50ZiAoZHVtcF9maWxlLCAiICBJbnNlcnQg dnNldHZsIGluc24gYmVmb3JlIGluc24gJWQ6XG4iLA0KKyAgICAgIElOU05f VUlEIChyaW5zbikpOw0KKyAgICAgcHJpbnRfcnRsX3NpbmdsZSAoZHVtcF9m aWxlLCBQUkVWX0lOU04gKHJpbnNuKSk7DQorICAgfQ0KKyAgICAgIH0NCiAg ICAgZWxzZQ0KLSAgICAgIGVtaXRfdnNldHZsX2luc24gKFZTRVRWTF9ESVND QVJEX1JFU1VMVCwgZW1pdF90eXBlLCBpbmZvLCBOVUxMX1JUWCwNCi0gcmlu c24pOw0KKyAgICAgIHsNCisgZW1pdF9pbnNuX2FmdGVyIChwYXQsIHJpbnNu KTsNCisgaWYgKGR1bXBfZmlsZSkNCisgICB7DQorICAgICBmcHJpbnRmIChk dW1wX2ZpbGUsICIgIEluc2VydCB2c2V0dmwgaW5zbiBhZnRlciBpbnNuICVk OlxuIiwNCisgICAgICBJTlNOX1VJRCAocmluc24pKTsNCisgICAgIHByaW50 X3J0bF9zaW5nbGUgKGR1bXBfZmlsZSwgTkVYVF9JTlNOIChyaW5zbikpOw0K KyAgIH0NCisgICAgICB9DQorICB9DQorDQorICB2b2lkIGNoYW5nZV92c2V0 dmxfaW5zbiAoY29uc3QgdnNldHZsX2luZm8gJmluZm8pDQorICB7DQorICAg IHJ0eF9pbnNuICpyaW5zbiA9IGluZm8uZ2V0X2luc24gKCktPnJ0bCAoKTsN CisgICAgcnR4IG5ld19wYXQgPSBpbmZvLmdldF92c2V0dmxfcGF0ICgpOw0K Kw0KKyAgICBpZiAoZHVtcF9maWxlKQ0KKyAgICAgIHsNCisgZnByaW50ZiAo ZHVtcF9maWxlLCAiICBDaGFuZ2UgaW5zbiAlZCBmcm9tOlxuIiwgSU5TTl9V SUQgKHJpbnNuKSk7DQorIHByaW50X3J0bF9zaW5nbGUgKGR1bXBfZmlsZSwg cmluc24pOw0KKyAgICAgIH0NCisNCisgICAgdmFsaWRhdGVfY2hhbmdlX29y X2ZhaWwgKHJpbnNuLCAmUEFUVEVSTiAocmluc24pLCBuZXdfcGF0LCBmYWxz ZSk7DQorDQorICAgIGlmIChkdW1wX2ZpbGUpDQorICAgICAgew0KKyBmcHJp bnRmIChkdW1wX2ZpbGUsICJcbiAgdG86XG4iKTsNCisgcHJpbnRfcnRsX3Np bmdsZSAoZHVtcF9maWxlLCByaW5zbik7DQorICAgICAgfQ0KKyAgfQ0KKw0K KyAgdm9pZCByZW1vdmVfdnNldHZsX2luc24gKGNvbnN0IHZzZXR2bF9pbmZv ICZpbmZvKQ0KKyAgew0KKyAgICBydHhfaW5zbiAqcmluc24gPSBpbmZvLmdl dF9pbnNuICgpLT5ydGwgKCk7DQorICAgIGlmIChkdW1wX2ZpbGUpDQorICAg ICAgew0KKyBmcHJpbnRmIChkdW1wX2ZpbGUsICIgIEVsaW1pbmF0ZSBpbnNu ICVkOlxuIiwgSU5TTl9VSUQgKHJpbnNuKSk7DQorIHByaW50X3J0bF9zaW5n bGUgKGR1bXBfZmlsZSwgcmluc24pOw0KKyAgICAgIH0NCisgICAgaWYgKGlu X3NlcXVlbmNlX3AgKCkpDQorICAgICAgcmVtb3ZlX2luc24gKHJpbnNuKTsN CisgICAgZWxzZQ0KKyAgICAgIGRlbGV0ZV9pbnNuIChyaW5zbik7DQogICB9 DQogDQogICBib29sIGVhcmxpZXN0X2Z1c2lvbl93b3J0aHdoaWxlX3AgKGNv bnN0IGJhc2ljX2Jsb2NrIGNmZ19iYikgY29uc3QNCkBAIC0zMjk3LDcgKzMy MDcsNyBAQCBwcmVfdnNldHZsOjplbWl0X3ZzZXR2bCAoKQ0KICBpZiAoY3Vy cl9pbmZvLmlnbm9yZV9wICgpKQ0KICAgIHsNCiAgICAgIGlmICh2c2V0dmxf aW5zbl9wIChpbnNuLT5ydGwgKCkpKQ0KLSBlbGltaW5hdGVfaW5zbiAoaW5z bi0+cnRsICgpKTsNCisgcmVtb3ZlX3ZzZXR2bF9pbnNuIChjdXJyX2luZm8p Ow0KICAgICAgY29udGludWU7DQogICAgfQ0KICBlbHNlIGlmIChjdXJyX2lu Zm8udmFsaWRfcCAoKSkNCkBAIC0zMzE0LDcgKzMyMjQsNyBAQCBwcmVfdnNl dHZsOjplbWl0X3ZzZXR2bCAoKQ0KICBmcHJpbnRmIChkdW1wX2ZpbGUsICIg IHRvOiAiKTsNCiAgY3Vycl9pbmZvLmR1bXAgKGR1bXBfZmlsZSwgIiAgICAi KTsNCn0NCi0gICAgICAgY2hhbmdlX3ZzZXR2bF9pbnNuIChpbnNuLCBjdXJy X2luZm8pOw0KKyAgICAgICBjaGFuZ2VfdnNldHZsX2luc24gKGN1cnJfaW5m byk7DQogICAgfQ0KfQ0KICAgICAgZWxzZQ0KQEAgLTMzMjYsNyArMzIzNiw3 IEBAIHByZV92c2V0dmw6OmVtaXRfdnNldHZsICgpDQogICAgICAgaW5zbi0+ dWlkICgpKTsNCiAgICAgIGN1cnJfaW5mby5kdW1wIChkdW1wX2ZpbGUsICIg ICAgIik7DQogICAgfQ0KLSAgIGluc2VydF92c2V0dmwgKEVNSVRfQkVGT1JF LCBpbnNuLT5ydGwgKCksIGN1cnJfaW5mbyk7DQorICAgaW5zZXJ0X3ZzZXR2 bF9pbnNuIChFTUlUX0JFRk9SRSwgY3Vycl9pbmZvKTsNCn0NCiAgICB9DQp9 DQpAQCAtMzMzNSw3ICszMjQ1LDcgQEAgcHJlX3ZzZXR2bDo6ZW1pdF92c2V0 dmwgKCkNCiAgIGZvciAoY29uc3QgdnNldHZsX2luZm8gJml0ZW0gOiBkZWxl dGVfbGlzdCkNCiAgICAgew0KICAgICAgIGdjY19hc3NlcnQgKHZzZXR2bF9p bnNuX3AgKGl0ZW0uZ2V0X2luc24gKCktPnJ0bCAoKSkpOw0KLSAgICAgIGVs aW1pbmF0ZV9pbnNuIChpdGVtLmdldF9pbnNuICgpLT5ydGwgKCkpOw0KKyAg ICAgIHJlbW92ZV92c2V0dmxfaW5zbiAoaXRlbSk7DQogICAgIH0NCiANCiAg IC8qIEluc2VydCB2c2V0dmwgYXMgTENNIHN1Z2dlc3QuICovDQpAQCAtMzM2 NSw4ICszMjc1LDcgQEAgcHJlX3ZzZXR2bDo6ZW1pdF92c2V0dmwgKCkNCiAg ICAgICBydGxfcHJvZmlsZV9mb3JfZWRnZSAoZWcpOw0KICAgICAgIHN0YXJ0 X3NlcXVlbmNlICgpOw0KIA0KLSAgICAgIGluc25faW5mbyAqaW5zbiA9IGlu Zm8uZ2V0X2luc24gKCk7DQotICAgICAgaW5zZXJ0X3ZzZXR2bCAoRU1JVF9E SVJFQ1QsIGluc24tPnJ0bCAoKSwgaW5mbyk7DQorICAgICAgaW5zZXJ0X3Zz ZXR2bF9pbnNuIChFTUlUX0RJUkVDVCwgaW5mbyk7DQogICAgICAgcnR4X2lu c24gKnJpbnNuID0gZ2V0X2luc25zICgpOw0KICAgICAgIGVuZF9zZXF1ZW5j ZSAoKTsNCiAgICAgICBkZWZhdWx0X3J0bF9wcm9maWxlICgpOw0KQEAgLTMz ODUsNyArMzI5NCw2IEBAIHByZV92c2V0dmw6OmVtaXRfdnNldHZsICgpDQpj b250aW51ZTsNCiANCiAgICAgICBjb25zdCB2c2V0dmxfaW5mbyAmZm9vdGVy X2luZm8gPSBibG9ja19pbmZvLmdldF9mb290ZXJfaW5mbyAoKTsNCi0gICAg ICBpbnNuX2luZm8gKmluc24gPSBmb290ZXJfaW5mby5nZXRfaW5zbiAoKTsN CiANCiAgICAgICBpZiAoZm9vdGVyX2luZm8uaWdub3JlX3AgKCkpDQpjb250 aW51ZTsNCkBAIC0zNDA0LDcgKzMzMTIsNyBAQCBwcmVfdnNldHZsOjplbWl0 X3ZzZXR2bCAoKQ0KICAgICAgZm9vdGVyX2luZm8uZHVtcCAoZHVtcF9maWxl LCAiICAgICIpOw0KICAgIH0NCiAgc3RhcnRfc2VxdWVuY2UgKCk7DQotICAg aW5zZXJ0X3ZzZXR2bCAoRU1JVF9ESVJFQ1QsIGluc24tPnJ0bCAoKSwgZm9v dGVyX2luZm8pOw0KKyAgIGluc2VydF92c2V0dmxfaW5zbiAoRU1JVF9ESVJF Q1QsIGZvb3Rlcl9pbmZvKTsNCiAgcnR4X2luc24gKnJpbnNuID0gZ2V0X2lu c25zICgpOw0KICBlbmRfc2VxdWVuY2UgKCk7DQogIGRlZmF1bHRfcnRsX3By b2ZpbGUgKCk7DQpAQCAtMzQyNyw3MSArMzMzNSw2NiBAQCBwcmVfdnNldHZs OjpjbGVhdXAgKCkNCnZvaWQNCnByZV92c2V0dmw6OnJlbW92ZV9hdmxfb3Bl cmFuZCAoKQ0Kew0KLSAgZm9yIChjb25zdCBiYl9pbmZvICpiYiA6IGNydGwt PnNzYS0+YmJzICgpKQ0KLSAgICBmb3IgKGluc25faW5mbyAqaW5zbiA6IGJi LT5yZWFsX25vbmRlYnVnX2luc25zICgpKQ0KLSAgICAgIHsNCi0gcnR4X2lu c24gKnJpbnNuID0gaW5zbi0+cnRsICgpOw0KLSAvKiBFcmFzZSB0aGUgQVZM IG9wZXJhbmQgZnJvbSB0aGUgaW5zdHJ1Y3Rpb24uICAqLw0KLSBpZiAoIWhh c192bF9vcCAocmluc24pIHx8ICFSRUdfUCAoZ2V0X3ZsIChyaW5zbikpKQ0K LSAgIGNvbnRpbnVlOw0KLSBydHggYXZsID0gZ2V0X3ZsIChyaW5zbik7DQot IGlmIChjb3VudF9yZWdub19vY2N1cnJlbmNlcyAocmluc24sIFJFR05PIChh dmwpKSA9PSAxKQ0KLSAgIHsNCi0gICAgIC8qIEdldCB0aGUgbGlzdCBvZiB1 c2VzIGZvciB0aGUgbmV3IGluc3RydWN0aW9uLiAgKi8NCi0gICAgIGF1dG8g YXR0ZW1wdCA9IGNydGwtPnNzYS0+bmV3X2NoYW5nZV9hdHRlbXB0ICgpOw0K LSAgICAgaW5zbl9jaGFuZ2UgY2hhbmdlIChpbnNuKTsNCi0gICAgIC8qIFJl bW92ZSB0aGUgdXNlIG9mIHRoZSBzdWJzdGl0dXRlZCB2YWx1ZS4gICovDQot ICAgICBhY2Nlc3NfYXJyYXlfYnVpbGRlciB1c2VzX2J1aWxkZXIgKGF0dGVt cHQpOw0KLSAgICAgdXNlc19idWlsZGVyLnJlc2VydmUgKGluc24tPm51bV91 c2VzICgpIC0gMSk7DQotICAgICBmb3IgKHVzZV9pbmZvICp1c2UgOiBpbnNu LT51c2VzICgpKQ0KLSAgICAgICBpZiAodXNlICE9IGZpbmRfYWNjZXNzIChp bnNuLT51c2VzICgpLCBSRUdOTyAoYXZsKSkpDQotIHVzZXNfYnVpbGRlci5x dWlja19wdXNoICh1c2UpOw0KLSAgICAgdXNlX2FycmF5IG5ld191c2VzID0g dXNlX2FycmF5ICh1c2VzX2J1aWxkZXIuZmluaXNoICgpKTsNCi0gICAgIGNo YW5nZS5uZXdfdXNlcyA9IG5ld191c2VzOw0KLSAgICAgY2hhbmdlLm1vdmVf cmFuZ2UgPSBpbnNuLT5lYmIgKCktPmluc25fcmFuZ2UgKCk7DQotICAgICBy dHggcGF0Ow0KLSAgICAgaWYgKGZhdWx0X2ZpcnN0X2xvYWRfcCAocmluc24p KQ0KLSAgICAgICBwYXQgPSBzaW1wbGlmeV9yZXBsYWNlX3J0eCAoUEFUVEVS TiAocmluc24pLCBhdmwsIGNvbnN0MF9ydHgpOw0KLSAgICAgZWxzZQ0KLSAg ICAgICB7DQotIHJ0eCBzZXQgPSBzaW5nbGVfc2V0IChyaW5zbik7DQotIHJ0 eCBzcmMgPSBzaW1wbGlmeV9yZXBsYWNlX3J0eCAoU0VUX1NSQyAoc2V0KSwg YXZsLCBjb25zdDBfcnR4KTsNCi0gcGF0ID0gZ2VuX3J0eF9TRVQgKFNFVF9E RVNUIChzZXQpLCBzcmMpOw0KLSAgICAgICB9DQotICAgICBib29sIG9rID0g Y2hhbmdlX2luc24gKGNydGwtPnNzYSwgY2hhbmdlLCBpbnNuLCBwYXQpOw0K LSAgICAgZ2NjX2Fzc2VydCAob2spOw0KLSAgIH0NCi0gICAgICB9DQorICBi YXNpY19ibG9jayBjZmdfYmI7DQorICBydHhfaW5zbiAqcmluc247DQorICBG T1JfQUxMX0JCX0ZOIChjZmdfYmIsIGNmdW4pDQorICAgIEZPUl9CQl9JTlNO UyAoY2ZnX2JiLCByaW5zbikNCisgICAgICBpZiAoTk9OREVCVUdfSU5TTl9Q IChyaW5zbikgJiYgaGFzX3ZsX29wIChyaW5zbikNCisgICAmJiBSRUdfUCAo Z2V0X3ZsIChyaW5zbikpKQ0KKyB7DQorICAgcnR4IGF2bCA9IGdldF92bCAo cmluc24pOw0KKyAgIGlmIChjb3VudF9yZWdub19vY2N1cnJlbmNlcyAocmlu c24sIFJFR05PIChhdmwpKSA9PSAxKQ0KKyAgICAgew0KKyAgICAgICBydHgg bmV3X3BhdDsNCisgICAgICAgaWYgKGZhdWx0X2ZpcnN0X2xvYWRfcCAocmlu c24pKQ0KKyBuZXdfcGF0DQorICAgPSBzaW1wbGlmeV9yZXBsYWNlX3J0eCAo UEFUVEVSTiAocmluc24pLCBhdmwsIGNvbnN0MF9ydHgpOw0KKyAgICAgICBl bHNlDQorIHsNCisgICBydHggc2V0ID0gc2luZ2xlX3NldCAocmluc24pOw0K KyAgIHJ0eCBzcmMNCisgICAgID0gc2ltcGxpZnlfcmVwbGFjZV9ydHggKFNF VF9TUkMgKHNldCksIGF2bCwgY29uc3QwX3J0eCk7DQorICAgbmV3X3BhdCA9 IGdlbl9ydHhfU0VUIChTRVRfREVTVCAoc2V0KSwgc3JjKTsNCisgfQ0KKyAg ICAgICBpZiAoZHVtcF9maWxlKQ0KKyB7DQorICAgZnByaW50ZiAoZHVtcF9m aWxlLCAiICBDbGVhbnVwIGluc24gJXUncyBhdmwgb3BlcmFuZDpcbiIsDQor ICAgIElOU05fVUlEIChyaW5zbikpOw0KKyAgIHByaW50X3J0bF9zaW5nbGUg KGR1bXBfZmlsZSwgcmluc24pOw0KKyB9DQorICAgICAgIHZhbGlkYXRlX2No YW5nZV9vcl9mYWlsIChyaW5zbiwgJlBBVFRFUk4gKHJpbnNuKSwgbmV3X3Bh dCwgZmFsc2UpOw0KKyAgICAgfQ0KKyB9DQp9DQogDQp2b2lkDQpwcmVfdnNl dHZsOjpyZW1vdmVfdW51c2VkX2Rlc3Rfb3BlcmFuZCAoKQ0Kew0KICAgZGZf YW5hbHl6ZSAoKTsNCi0gIGhhc2hfc2V0PHJ0eF9pbnNuICo+IHRvX2RlbGV0 ZTsNCiAgIGJhc2ljX2Jsb2NrIGNmZ19iYjsNCiAgIHJ0eF9pbnNuICpyaW5z bjsNCiAgIEZPUl9BTExfQkJfRk4gKGNmZ19iYiwgY2Z1bikNCi0gICAgew0K LSAgICAgIEZPUl9CQl9JTlNOUyAoY2ZnX2JiLCByaW5zbikNCisgICAgRk9S X0JCX0lOU05TIChjZmdfYmIsIHJpbnNuKQ0KKyAgICAgIGlmIChOT05ERUJV R19JTlNOX1AgKHJpbnNuKSAmJiB2c2V0dmxfaW5zbl9wIChyaW5zbikpDQp7 DQotICAgaWYgKE5PTkRFQlVHX0lOU05fUCAocmluc24pICYmIHZzZXR2bF9p bnNuX3AgKHJpbnNuKSkNCi0gICAgIHsNCi0gICAgICAgcnR4IHZsID0gZ2V0 X3ZsIChyaW5zbik7DQotICAgICAgIHZzZXR2bF9pbmZvIGluZm8gPSB2c2V0 dmxfaW5mbyAocmluc24pOw0KLSAgICAgICBpZiAoaGFzX25vX3VzZXMgKGNm Z19iYiwgcmluc24sIFJFR05PICh2bCkpKQ0KLSB7DQotICAgaWYgKCFpbmZv Lmhhc192bG1heF9hdmwgKCkpDQotICAgICB7DQotICAgICAgIHJ0eCBuZXdf cGF0ID0gZ2VuX3ZzZXR2bF9wYXQgKFZTRVRWTF9ESVNDQVJEX1JFU1VMVCwg aW5mbywNCi0gICAgIE5VTExfUlRYKTsNCi0gICAgICAgdmFsaWRhdGVfY2hh bmdlX29yX2ZhaWwgKHJpbnNuLCAmUEFUVEVSTiAocmluc24pLCBuZXdfcGF0 LA0KLSAgICAgICAgZmFsc2UpOw0KLSAgICAgfQ0KLSB9DQotICAgICB9DQor ICAgcnR4IHZsID0gZ2V0X3ZsIChyaW5zbik7DQorICAgdnNldHZsX2luZm8g aW5mbyA9IHZzZXR2bF9pbmZvIChyaW5zbik7DQorICAgaWYgKGhhc19ub191 c2VzIChjZmdfYmIsIHJpbnNuLCBSRUdOTyAodmwpKSkNCisgICAgIGlmICgh aW5mby5oYXNfdmxtYXhfYXZsICgpKQ0KKyAgICAgICB7DQorIHJ0eCBuZXdf cGF0ID0gaW5mby5nZXRfdnNldHZsX3BhdCAodHJ1ZSk7DQorIGlmIChkdW1w X2ZpbGUpDQorICAgew0KKyAgICAgZnByaW50ZiAoZHVtcF9maWxlLA0KKyAg ICAgICIgIFJlbW92ZSB2c2V0dmwgaW5zbiAldSdzIGRlc3QodmwpIG9wZXJh bmQgc2luY2UgIg0KKyAgICAgICJpdCB1bnVzZWQ6XG4iLA0KKyAgICAgIElO U05fVUlEIChyaW5zbikpOw0KKyAgICAgcHJpbnRfcnRsX3NpbmdsZSAoZHVt cF9maWxlLCByaW5zbik7DQorICAgfQ0KKyB2YWxpZGF0ZV9jaGFuZ2Vfb3Jf ZmFpbCAocmluc24sICZQQVRURVJOIChyaW5zbiksIG5ld19wYXQsDQorIGZh bHNlKTsNCisgICAgICAgfQ0KfQ0KLSAgICB9DQp9DQogDQpjb25zdCBwYXNz X2RhdGEgcGFzc19kYXRhX3ZzZXR2bCA9IHsNCkBAIC0zNTM2LDkgKzM0Mzks MTUgQEAgcGFzc192c2V0dmw6OnNpbXBsZV92c2V0dmwgKCkNCiAgICBjb250 aW51ZTsNCiAgaWYgKGhhc192dHlwZV9vcCAocmluc24pKQ0KICAgIHsNCi0g ICAgICAgY29uc3QgYXV0byBpbmZvID0gdnNldHZsX2luZm8gKHJpbnNuKTsN Ci0gICAgICAgZW1pdF92c2V0dmxfaW5zbiAoVlNFVFZMX0RJU0NBUkRfUkVT VUxULCBFTUlUX0JFRk9SRSwgaW5mbywNCi0gTlVMTF9SVFgsIHJpbnNuKTsN CisgICAgICAgY29uc3QgYXV0byAmaW5mbyA9IHZzZXR2bF9pbmZvIChyaW5z bik7DQorICAgICAgIHJ0eCBwYXQgPSBpbmZvLmdldF92c2V0dmxfcGF0ICgp Ow0KKyAgICAgICBlbWl0X2luc25fYmVmb3JlIChwYXQsIHJpbnNuKTsNCisg ICAgICAgaWYgKGR1bXBfZmlsZSkNCisgew0KKyAgIGZwcmludGYgKGR1bXBf ZmlsZSwgIiAgSW5zZXJ0IHZzZXR2bCBpbnNuIGJlZm9yZSBpbnNuICVkOlxu IiwNCisgICAgSU5TTl9VSUQgKHJpbnNuKSk7DQorICAgcHJpbnRfcnRsX3Np bmdsZSAoZHVtcF9maWxlLCBQUkVWX0lOU04gKHJpbnNuKSk7DQorIH0NCiAg ICB9DQp9DQogICAgIH0NCi0tDQoyLjM2LjMNCiANCg== ------=_001_NextPart754722046052_=------