From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from out30-98.freemail.mail.aliyun.com (out30-98.freemail.mail.aliyun.com [115.124.30.98]) by sourceware.org (Postfix) with ESMTPS id 789A53858C5F for ; Fri, 12 May 2023 08:12:41 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 789A53858C5F Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=linux.alibaba.com X-Alimail-AntiSpam:AC=PASS;BC=-1|-1;BR=01201311R101e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=ay29a033018046059;MF=sinan.lin@linux.alibaba.com;NM=1;PH=DW;RN=3;SR=0;TI=W4_0.1.47_DEFAULT_210DE1B0_1683877940563_o7001c23c; Received: from WS-web (sinan.lin@linux.alibaba.com[W4_0.1.47_DEFAULT_210DE1B0_1683877940563_o7001c23c]) at Fri, 12 May 2023 16:12:36 +0800 Date: Fri, 12 May 2023 16:12:36 +0800 From: "Sinan" To: "Fei Gao" Cc: "gcc-patches" , "Jiawei" Reply-To: "Sinan" Message-ID: <10fd153f-397b-4372-9c43-96d7ce30a2c5.sinan.lin@linux.alibaba.com> Subject: =?UTF-8?B?UmU6IFJlOiBbUEFUQ0ggNC81XSBSSVNDLVY6IEFkZCBaY21wIGV4dGVuc2lvbiBzdXBwb3J0?= =?UTF-8?B?cy4=?= X-Mailer: [Alimail-Mailagent revision 29][W4_0.1.47][DEFAULT][Chrome] MIME-Version: 1.0 References: <2023042518114000378158@eswincomputing.com>, <991049a4-d55b-4cb6-8d2f-6d9979047517.sinan.lin@linux.alibaba.com>,<20230506165331848595125@eswincomputing.com> x-aliyun-mail-creator: W4_0.1.47_DEFAULT_QvNTW96aWxsYS81LjAgKE1hY2ludG9zaDsgSW50ZWwgTWFjIE9TIFggMTBfMTVfNykgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExMy4wLjAuMCBTYWZhcmkvNTM3LjM2La In-Reply-To: <20230506165331848595125@eswincomputing.com> Content-Type: multipart/alternative; boundary="----=ALIBOUNDARY_15624_7fd339b97700_645df4f4_7f59b" X-Spam-Status: No, score=-20.2 required=5.0 tests=BAYES_00,ENV_AND_HDR_SPF_MATCH,GIT_PATCH_0,HTML_MESSAGE,KAM_DMARC_STATUS,KAM_SHORT,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE,UNPARSEABLE_RELAY,USER_IN_DEF_SPF_WL 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: ------=ALIBOUNDARY_15624_7fd339b97700_645df4f4_7f59b Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 SGkgRmVpLApTb3JyeSBmb3IgdGhlIGxhdGUgcmVwbHksIEkndmUgYmVlbiBi dXN5IHdpdGggbW92aW5nIHRoZXNlIGRheXMgOiguClRoYW5rcyBmb3Igd29y a2luZyBvbiBpdC4gSSB3b3VsZCBwcmVmZXIgcmVtb3ZpbmcgdGhlIGV4dHJh IHBhc3MgZm9yIHBvcHJldHogaWYgcG9zc2libGUgLi4uIEkgd2lsbCB0ZXN0 IHlvdXIgcGF0Y2hlcyBBU0FQLiAKQlIsClNpbmFuCi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQpTZW5kZXI6RmVpIEdhbyA8Z2FvZmVpQGVzd2luY29tcHV0aW5n LmNvbT4KU2VudCBBdDoyMDIzIE1heSA2IChTYXQuKSAxNjo1MwpSZWNpcGll bnQ6U2luYW4gPHNpbmFuLmxpbkBsaW51eC5hbGliYWJhLmNvbT4KQ2M6amlh d2VpIDxqaWF3ZWlAaXNjYXMuYWMuY24+OyBnY2MtcGF0Y2hlcyA8Z2NjLXBh dGNoZXNAZ2NjLmdudS5vcmc+ClN1YmplY3Q6UmU6IFJlOiBbUEFUQ0ggNC81 XSBSSVNDLVY6IEFkZCBaY21wIGV4dGVuc2lvbiBzdXBwb3J0cy4KT24gMjAy My0wNS0wNSAyMzo1NyBTaW5hbiA8c2luYW4ubGluQGxpbnV4LmFsaWJhYmEu Y29tPiB3cm90ZToKPgo+PiBoaSBKaWF3ZWkKPj4KPj4gUGxlYXNlIGlnbm9y ZSBteSBwcmV2aW91cyByZXBseS4gSSBhY2NpZGVudGx5IHNlbnQgdGhlIGVt YWlsIGJlZm9yZSBJIGZpbmlzaGVkIGl0Lgo+PiBTb3JyeSBmb3IgdGhhdCEK Pj4KPj4gSSBkb3dubG9hZGVkIHRoZSBzZXJpZXMgb2YgcGF0Y2hlcyBmcm9t IHlvdSBhbmQgZm91bmQgaW4gc29tZSBjYXNlcwo+PiBpdCBmYWlscyB0byBn ZW5lcmF0ZSB6Y21wIHB1c2ggYW5kIHBvcCBpbnNucy4KPj4KPj4gVEM6Cj4+ Cj4+IGNoYXIgbXlfZ2V0Y2hhcigpOwo+PiBpbnQgdGVzdF9zMCgpCj4+IHsK Pj4KPj4gaW50IGEgPSBteV9nZXRjaGFyKCk7Cj4+IGludCBiID0gbXlfZ2V0 Y2hhcigpOwo+PiByZXR1cm4gYStiOwo+PiB9Cj4+Cj4+IGNjMSAtZm5vLXNo cmluay13cmFwLXNlcGFyYXRlIC1PMiAtbWFyY2g9cnYzMmVfemNhX3pjbXAg LW1hYmk9aWxwMzJlIC1tY21vZGVsPW1lZGxvdyB0ZXN0LmMKPj4KPj4gLWZu by1zaHJpbmstd3JhcC1zZXBhcmF0ZSBpcyB1c2VkIGhlcmUgdG8gYXZvaWQg dGhlIGltcGFjdCBmcm9tIHNocmluay13cmFwLXNlcGFyYXRlIHRoYXQgaXMg YnkgZGVmYXVsdAo+PiBlbmFibGVkIGluIE8yLgo+Pgo+PiBBcyBpJ20gYWxz byBpbnRlcmVzdGVkIGluIFpjKiwgaSBkaWQgc29tZSBjaGFuZ2VzIG1haW5s eSBpbiBwcm9sb2d1ZSBhbmQgZXBpbG9ndWUgcGFzcyBxdWl0ZSBzaW1saWFy IHRvCj4+IHdoYXQgaGFzIGJlZW4gZG9uZSBmb3Igc2F2ZSBhbmQgcmVzdG9y ZSBleGNlcHQgdGhlIENGSSBkaXJlY3RpdmVzIGR1ZSB0byByZXZlcnNlZCBv cmRlciB0aGF0IHpjbXAKPj4gcHVzaGVzIGFuZCBwb3BzIHJhLCBzIHJlZ3Mg dGhhbiB3aGF0IHNhdmUgYW5kIHJlc3RvcmUgZG8uCj4+Cj4+IEkgd2lsbCBy ZWZpbmUgYW5kIHNoYXJlIHRoZSBjb2RlIHNvb24gZm9yIHlvdXIgcmV2aWV3 Lgo+Pgo+PiBCUgo+PiBGZWkKPkhpIEZlaSwKPkluIHRoZSBjdXJyZW50IGlt cGxlbWVudGF0aW9uLCBjbS5wdXNoIHdpbGwgbm90IGluY3JlYXNlIHRoZSBv cmlnaW5hbCBhZGp1c3RtZW50IHNpemUgb2YgdGhlIHN0YWNrIHBvaW50ZXIu IEFzIGNtLnB1c2ggdXNlcyBhIG1pbmltdW0gYWRqdXN0bWVudCBzaXplIG9m IDE2LCBhbmQgaW4geW91ciBleGFtcGxlLCB0aGUgYWRqdXN0bWVudCBzaXpl IG9mIHNwIGlzIDEyLCBzbyBjbS5wdXNoIHdpbGwgbm90IGJlIGdlbmVyYXRl ZC4KPnlvdSBjYW4gZmluZCB0aGUgY2hlY2sgYXQgcmlzY3ZfdXNlX3B1c2hf cG9wCj4+ID4gKyAqLwo+PiA+ICsgaWYgKGJhc2Vfc2l6ZSA+IGZyYW1lX3Np emUpCj4+ID4gKyByZXR1cm4gZmFsc2U7Cj4+ID4gKwo+QW5kIGlmIHRoaXMg Y2hlY2sgaXMgcmVtb3ZlZCwgdGhlbiB5b3UgY2FuIGdldCB0aGUgb3V0cHV0 IHRoYXQgeW91IGV4cGVjdC4KPmBgYAo+IGNtLnB1c2gge3JhLHMwfSwtMTYK PiBjYWxsIG15X2dldGNoYXIKPiBtdiBzMCxhMAo+IGNhbGwgbXlfZ2V0Y2hh cgo+IGFkZCBhMCxzMCxhMAo+IGNtLnBvcHJldCB7cmEsczB9LDE2Cj5gYGAK PkluIG1hbnkgc2NlbmFyaW9zIG9mIHJ2MzJlLCBjbS5wdXNoIGNhbm5vdCBi ZSBnZW5lcmF0ZWQgYXMgYSByZXN1bHQuIFBlcmhhcHMgd2UgY2FuIHJlbW92 ZSB0aGlzIGNoZWNrPyBJIGhhdmVuJ3QgdGVzdGVkIGlmIGl0IGlzIG9rIHRv IHJlbW92ZSB0aGlzIGNoZWNrLCBhbmQgQ0Mgamlhd2VpIHRvIGhlbHAgdGVz dCBpdC4KPkJSLAo+U2luYW4gCmhpIFNpbmFuClRoYW5rcyBmb3IgeW91ciBy ZXBseS4gCkkgcG9zdGVkIG15IGNvZGVzIGF0IGh0dHBzOi8vd3d3Lm1haWwt YXJjaGl2ZS5jb20vZ2NjLXBhdGNoZXNAZ2NjLmdudS5vcmcvbXNnMzA2OTIx Lmh0bWwKSW4gdGhlIGNvdmVyIGxldHRlciwgaSBkaWQgc29tZSBjb21wYXJp c2lvbi4gCkNvdWxkIHlvdSBwbGVhc2UgcmV2aWV3PwpUaGFua3MgJiBCUiwg CkZlaQo+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj5TZW5kZXI6RmVpIEdhbyA8 Z2FvZmVpQGVzd2luY29tcHV0aW5nLmNvbT4KPlNlbnQgQXQ6MjAyMyBBcHIu IDI1IChUdWUuKSAxODoxMgo+UmVjaXBpZW50OmppYXdlaSA8amlhd2VpQGlz Y2FzLmFjLmNuPgo+Q2M6Z2NjLXBhdGNoZXMgPGdjYy1wYXRjaGVzQGdjYy5n bnUub3JnPgo+U3ViamVjdDpbUEFUQ0ggNC81XSBSSVNDLVY6IEFkZCBaY21w IGV4dGVuc2lvbiBzdXBwb3J0cy4KPmhpIEppYXdlaQo+UGxlYXNlIGlnbm9y ZSBteSBwcmV2aW91cyByZXBseS4gSSBhY2NpZGVudGx5IHNlbnQgdGhlIGVt YWlsIGJlZm9yZSBJIGZpbmlzaGVkIGl0Lgo+U29ycnkgZm9yIHRoYXQhCj5J IGRvd25sb2FkZWQgdGhlIHNlcmllcyBvZiBwYXRjaGVzIGZyb20geW91IGFu ZCBmb3VuZCBpbiBzb21lIGNhc2VzCj5pdCBmYWlscyB0byBnZW5lcmF0ZSB6 Y21wIHB1c2ggYW5kIHBvcCBpbnNucy4KPlRDOgo+Y2hhciBteV9nZXRjaGFy KCk7Cj5pbnQgdGVzdF9zMCgpCj57Cj4gaW50IGEgPSBteV9nZXRjaGFyKCk7 Cj4gaW50IGIgPSBteV9nZXRjaGFyKCk7Cj4gcmV0dXJuIGErYjsKPn0KPmNj MSAtZm5vLXNocmluay13cmFwLXNlcGFyYXRlIC1PMiAtbWFyY2g9cnYzMmVf emNhX3pjbXAgLW1hYmk9aWxwMzJlIC1tY21vZGVsPW1lZGxvdyB0ZXN0LmMK Pi1mbm8tc2hyaW5rLXdyYXAtc2VwYXJhdGUgaXMgdXNlZCBoZXJlIHRvIGF2 b2lkIHRoZSBpbXBhY3QgZnJvbSBzaHJpbmstd3JhcC1zZXBhcmF0ZSB0aGF0 IGlzIGJ5IGRlZmF1bHQKPmVuYWJsZWQgaW4gTzIuCj5BcyBpJ20gYWxzbyBp bnRlcmVzdGVkIGluIFpjKiwgaSBkaWQgc29tZSBjaGFuZ2VzIG1haW5seSBp biBwcm9sb2d1ZSBhbmQgZXBpbG9ndWUgcGFzcyBxdWl0ZSBzaW1saWFyIHRv Cj53aGF0IGhhcyBiZWVuIGRvbmUgZm9yIHNhdmUgYW5kIHJlc3RvcmUgZXhj ZXB0IHRoZSBDRkkgZGlyZWN0aXZlcyBkdWUgdG8gcmV2ZXJzZWQgb3JkZXIg dGhhdCB6Y21wCj5wdXNoZXMgYW5kIHBvcHMgcmEsIHMgcmVncyB0aGFuIHdo YXQgc2F2ZSBhbmQgcmVzdG9yZSBkby4KPkkgd2lsbCByZWZpbmUgYW5kIHNo YXJlIHRoZSBjb2RlIHNvb24gZm9yIHlvdXIgcmV2aWV3Lgo+QlIKPkZlaQo+ T24gVGh1IEFwciA2IDA2OjIxOjE3IEdNVCAyMDIzIEppYXdlaSBqaWF3ZWlA aXNjYXMuYWMuY24gd3JvdGU6Cj4+Cj4+QWRkIFpjbXAgZXh0ZW5zaW9uIGlu c3RydWN0aW9ucyBzdXBwb3J0LiBHZW5lcmF0ZSBwdXNoL3BvcAo+PndpdGgg Zm9sbG93IHN0ZXBzOgo+Pgo+PiAxLiBwcmVwcm9jZXNzaW5nOgo+PiAxLjEu IGlmIHRoZXJlIGlzIG5vIHB1c2ggcnR4LCB0aGVuIGp1c3QgcmV0dXJuLiBl LmcuCj4+IChub3RlIDUgMSAyMiAyIFtiYiAyXSBOT1RFX0lOU05fQkFTSUNf QkxPQ0spCj4+IChpbnNuL2YgMjIgNSAyMyAyIChzZXQgKHJlZy9mOlNJIDIg c3ApCj4+IChwbHVzOlNJIChyZWcvZjpTSSAyIHNwKQo+PiAoY29uc3RfaW50 IC0zMiBbMHhmZmZmZmZmZmZmZmZmZmUwXSkpKQo+PiAobmlsKSkKPj4gKG5v dGUgMjMgMjIgMiAyIE5PVEVfSU5TTl9QUk9MT0dVRV9FTkQpCj4+IDEuMi4g aWYgcHVzaCBydHggZXhpc3RzLCB0aGVuIHdlIGNvbXB1dGUgdGhlIG51bWJl ciBvZgo+PiBwdXNoZWQgcy1yZWdpc3RlcnMsIG5fc3JlZy4KPj4KPj4gcHVz aCBydHggc2hvdWxkIGJlIGZpbmQgYmVmb3JlIE5PVEVfSU5TTl9QUk9MT0dV RV9FTkQgdGFnCj4+Cj4+IFsyIGFuZCAzIGhhcHBlbmQgc2ltdWx0YW5lb3Vz bHldCj4+Cj4+IDIuIGZpbmQgdmFsaWQgbW92ZSBwYXR0ZXJuLCBtdiBzTiwg YU4sIHdoZXJlIE4gPCBuX3NyZWcsCj4+IGFuZCBhTiBpcyBub3QgdXNlZCB0 aGUgbW92ZSBwYXR0ZXJuLCBhbmQgc04gaXMgbm90Cj4+IGRlZmluZWQgYmVm b3JlIHRoZSBtb3ZlIHBhdHRlcm4gKGZyb20gcHJvbG9ndWUgdG8gdGhlCj4+ IHBvc2l0aW9uIG9mIG1vdmUgcGF0dGVybikuCj4+Cj4+IDMuIGFuYWx5c2lz IHVzZSBhbmQgcmVhY2ggb2YgZXZlcnkgaW5zdHJ1Y3Rpb24gZnJvbSBwcm9s b2d1ZQo+PiB0byB0aGUgcG9zaXRpb24gb2YgbW92ZSBwYXR0ZXJuLgo+PiBp ZiBhbnkgc04gaXMgdXNlZCwgdGhlbiB3ZSBtYXJrIHRoZSBjb3JyZXNwb25k aW5nIGFyZ3VtZW50IGxpc3QKPj4gY2FuZGlkYXRlIGFzIGludmFsaWQuCj4+ IGUuZy4KPj4gcHVzaCB7cmEsczAtczN9LCB7fSwgLTMyCj4+IHN3IHMwLDQ0 KHNwKSAjIHMwIGlzIHVzZWQsIHRoZW4gYXJndW1lbnQgbGlzdCBpcyBpbnZh bGlkCj4+IG12IGEwLGE1ICMgYTAgaXMgZGVmaW5lZCwgdGhlbiBhcmd1bWVu dCBsaXN0IGlzIGludmFsaWQKPj4gLi4uCj4+IG12IHMwLGEwCj4+IG12IHMx LGExCj4+IG12IHMyLGEyCj4+Cj4+IDQuIGlmIHRoZXJlIGlzIGEgdmFsaWQg YXJndW1lbnQgbGlzdCwgdGhlbiByZXBsYWNlIHRoZSBwb3AKPj4gcHVzaCBw YXJhbGxlbCBpbnNuLCBhbmQgZGVsZXRlIG12IHBhdHRlcm4uCj4+IGlmIG5v dCwgc2tpcC4KPj4KPj5BbGwgInpjbXBlIiBtZWFucyBaY21wIHdpdGggUlZF IGV4dGVuc2lvbi4KPj5UaGUgcHVzaC9wb3AgaW5zdHJ1bmN0aW9uIGltcGxl bWVudCBpcyBtb3N0bHkgZmluaXNoZWQgYnkgU2luYW4gTGluLgo+Pgo+PkNv LUF1dGhvcmVkIGJ5OiBTaW5hbiBMaW4gPHNpbmFuLi4uLkBsaW51eC5hbGli YWJhLmNvbT4KPj5Dby1BdXRob3JlZCBieTogU2ltb24gQ29vayA8c2ltb24u Yy4uLkBlbWJlY29zbS5jb20+Cj4+Q28tQXV0aG9yZWQgYnk6IFNoaWh1YSBM aWFvIDxzaGkuLi5AaXNjYXMuYWMuY24+Cj4+Cj4+Z2NjL0NoYW5nZUxvZzoK Pj4KPj4gKiBjb25maWcuZ2NjOiBOZXcgb2JqZWN0Lgo+PiAqIGNvbmZpZy9y aXNjdi9wcmVkaWNhdGVzLm1kIChyaXNjdl9zdGFja19wdXNoX29wZXJhdGlv bik6Cj4+IE5ldyBwcmVkaWNhdGUuCj4+IChyaXNjdl9zdGFja19wb3Bfb3Bl cmF0aW9uKTogRGl0dG8uCj4+IChwb3BfcmV0dXJuX3ZhbHVlX2NvbnN0YW50 KTogRGl0dG8uCj4+ICogY29uZmlnL3Jpc2N2L3Jpc2N2LXBhc3Nlcy5kZWYg KElOU0VSVF9QQVNTX0FGVEVSKTogTmV3IHBhc3MuCj4+ICogY29uZmlnL3Jp c2N2L3Jpc2N2LXByb3Rvcy5oIChyaXNjdl9vdXRwdXRfcG9wcmV0X3ApOgo+ PiBOZXcgcm91dGluZS4KPj4gKHJpc2N2X3ZhbGlkX3N0YWNrX3B1c2hfcG9w X3ApOiBEaXR0by4KPj4gKHJpc2N2X2NoZWNrX3JlZ25vKTogRGl0dG8uCj4+ IChtYWtlX3Bhc3NfemNtcF9wb3ByZXQpOiBOZXcgcGFzcy4KPj4gKiBjb25m aWcvcmlzY3YvcmlzY3YuY2MgKHN0cnVjdCByaXNjdl9mcmFtZV9pbmZvKTog TmV3IHZhcmlhYmxlLgo+PiAocmlzY3Zfb3V0cHV0X3BvcHJldF9wKTogTmV3 IGZ1bmN0aW9uLgo+PiAocmlzY3ZfcHJpbnRfcG9wX3NpemUpOiBEaXR0by4K Pj4gKHJpc2N2X3ByaW50X3JlZ2xpc3QpOiBEaXR0by4KPj4gKHJpc2N2X3By aW50X29wZXJhbmQpOiBOZXcgY2FzZSBzeW1ib2xzLgo+PiAocmlzY3Zfc2F2 ZV9wdXNoX3BvcF9jb3VudCk6IE5ldyBmdW5jdGlvbi4KPj4gKHJpc2N2X3B1 c2hfcG9wX2Jhc2Vfc3BfYWRqdXN0KTogRGl0dG8uCj4+IChyaXNjdl91c2Vf cHVzaF9wb3ApOiBEaXR0by4KPj4gKHJpc2N2X2NvbXB1dGVfZnJhbWVfaW5m byk6IEFkanVzdCBmcmFtZSB2YWx1ZS4KPj4gKHJpc2N2X2VtaXRfcG9wX2lu c24pOiBOZXcgZnVuY3Rpb24uCj4+IChyaXNjdl9jaGVja19yZWdubyk6IERp dHRvLgo+PiAocmlzY3ZfdmFsaWRfc3RhY2tfcHVzaF9wb3BfcCk6IERpdHRv Lgo+PiAocmlzY3ZfZW1pdF9wdXNoX2luc24pOiBEaXR0by4KPj4gKHJpc2N2 X2V4cGFuZF9wcm9sb2d1ZSk6IE1vZGlmeSBmcmFtZSBwYXR0ZXJuLgo+PiAo cmlzY3ZfZXhwYW5kX2VwaWxvZ3VlKTogRGl0dG8uCj4+ICogY29uZmlnL3Jp c2N2L3Jpc2N2LmggKFJFVFVSTl9WQUxVRV9SRUdOVU0pOgo+PiAoUklTQ1Zf WkNFX1BVU0hfUE9QX01BU0spOiBOZXcgbWFzay4KPj4gKFJJU0NWX1pDTVBF X1BVU0hfUE9QX01BU0spOiBEaXR0by4KPj4gKiBjb25maWcvcmlzY3Yvcmlz Y3YubWQ6IEFkZCBuZXcgcmVnIG51bWJlciBhbmQgaW5jbHVkZSBpbmZvLgo+ PiAqIGNvbmZpZy9yaXNjdi90LXJpc2N2OiBOZXcgb2JqZWN0IHJ1bGVzLgo+ PiAqIGNvbmZpZy9yaXNjdi9yaXNjdi16Y21wLXBvcHJldC5jYzogTmV3IGZp bGUuCj4+ICogY29uZmlnL3Jpc2N2L3pjLm1kOiBOZXcgZmlsZS4KPj4tLS0K Pj4gZ2NjL2NvbmZpZy5nY2MgfCAyICstCj4+IGdjYy9jb25maWcvcmlzY3Yv cHJlZGljYXRlcy5tZCB8IDE2ICsKPj4gZ2NjL2NvbmZpZy9yaXNjdi9yaXNj di1wYXNzZXMuZGVmIHwgMSArCj4+IGdjYy9jb25maWcvcmlzY3YvcmlzY3Yt cHJvdG9zLmggfCA0ICsKPj4gZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi16Y21w LXBvcHJldC5jYyB8IDI2MCArKysrKysrKysrKysrKysKPj4gZ2NjL2NvbmZp Zy9yaXNjdi9yaXNjdi5jYyB8IDQzNyArKysrKysrKysrKysrKysrKysrKysr KysrLQo+PiBnY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LmggfCA0ICsKPj4gZ2Nj L2NvbmZpZy9yaXNjdi9yaXNjdi5tZCB8IDMgKwo+PiBnY2MvY29uZmlnL3Jp c2N2L3QtcmlzY3YgfCA0ICsKPj4gZ2NjL2NvbmZpZy9yaXNjdi96Yy5tZCB8 IDQ3ICsrKwo+PiAxMCBmaWxlcyBjaGFuZ2VkLCA3NjcgaW5zZXJ0aW9ucygr KSwgMTEgZGVsZXRpb25zKC0pCj4+IGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2Mv Y29uZmlnL3Jpc2N2L3Jpc2N2LXpjbXAtcG9wcmV0LmNjCj4+IGNyZWF0ZSBt b2RlIDEwMDY0NCBnY2MvY29uZmlnL3Jpc2N2L3pjLm1kCj4+Cj4+ZGlmZiAt LWdpdCBhL2djYy9jb25maWcuZ2NjIGIvZ2NjL2NvbmZpZy5nY2MKPj5pbmRl eCA2MjlkMzI0YjVlZi4uYTk5MWM1MjczZjkgMTAwNjQ0Cj4+LS0tIGEvZ2Nj L2NvbmZpZy5nY2MKPj4rKysgYi9nY2MvY29uZmlnLmdjYwo+PkBAIC01Mjks NyArNTI5LDcgQEAgcHJ1LSotKikKPj4gOzsKPj4gcmlzY3YqKQo+PiBjcHVf dHlwZT1yaXNjdgo+Pi0gZXh0cmFfb2Jqcz0icmlzY3YtYnVpbHRpbnMubyBy aXNjdi1jLm8gcmlzY3Ytc3Iubwo+PnJpc2N2LXNob3J0ZW4tbWVtcmVmcy5v IHJpc2N2LXNlbGZ0ZXN0cy5vIHJpc2N2LXYubyByaXNjdi12c2V0dmwubyIK Pj4rIGV4dHJhX29ianM9InJpc2N2LWJ1aWx0aW5zLm8gcmlzY3YtYy5vIHJp c2N2LXNyLm8KPj5yaXNjdi1zaG9ydGVuLW1lbXJlZnMubyByaXNjdi1zZWxm dGVzdHMubyByaXNjdi12Lm8gcmlzY3YtdnNldHZsLm8KPj5yaXNjdi16Y21w LXBvcHJldC5vIgo+PiBleHRyYV9vYmpzPSIke2V4dHJhX29ianN9IHJpc2N2 LXZlY3Rvci1idWlsdGlucy5vCj4+cmlzY3YtdmVjdG9yLWJ1aWx0aW5zLXNo YXBlcy5vIHJpc2N2LXZlY3Rvci1idWlsdGlucy1iYXNlcy5vIgo+PiBleHRy YV9vYmpzPSIke2V4dHJhX29ianN9IHRoZWFkLm8iCj4+IGRfdGFyZ2V0X29i anM9InJpc2N2LWQubyIKPj5kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yaXNj di9wcmVkaWNhdGVzLm1kIGIvZ2NjL2NvbmZpZy9yaXNjdi9wcmVkaWNhdGVz Lm1kCj4+aW5kZXggMGQ5ZDc3MDFjN2UuLjZiZmY2Y2QwNDdhIDEwMDY0NAo+ Pi0tLSBhL2djYy9jb25maWcvcmlzY3YvcHJlZGljYXRlcy5tZAo+PisrKyBi L2djYy9jb25maWcvcmlzY3YvcHJlZGljYXRlcy5tZAo+PkBAIC00MTIsMyAr NDEyLDE5IEBACj4+IChhbmQgKG1hdGNoX2NvZGUgImNvbnN0X2ludCIpCj4+ IChpb3IgKG1hdGNoX29wZXJhbmQgMCAibm90X3VpbW1fZXh0cmFfYml0X29w ZXJhbmQiKQo+PiAobWF0Y2hfb3BlcmFuZCAwICJjb25zdF9ub3R0d29iaXRz X29wZXJhbmQiKSkpKQo+PisKPj4rKGRlZmluZV9zcGVjaWFsX3ByZWRpY2F0 ZSAicmlzY3Zfc3RhY2tfcHVzaF9vcGVyYXRpb24iCj4+KyAobWF0Y2hfY29k ZSAicGFyYWxsZWwiKQo+Pit7Cj4+KyByZXR1cm4gcmlzY3ZfdmFsaWRfc3Rh Y2tfcHVzaF9wb3BfcCAob3AsIHRydWUpOwo+Pit9KQo+PisKPj4rKGRlZmlu ZV9zcGVjaWFsX3ByZWRpY2F0ZSAicmlzY3Zfc3RhY2tfcG9wX29wZXJhdGlv biIKPj4rIChtYXRjaF9jb2RlICJwYXJhbGxlbCIpCj4+K3sKPj4rIHJldHVy biByaXNjdl92YWxpZF9zdGFja19wdXNoX3BvcF9wIChvcCwgZmFsc2UpOwo+ Pit9KQo+PisKPj4rKGRlZmluZV9wcmVkaWNhdGUgInBvcF9yZXR1cm5fdmFs dWVfY29uc3RhbnQiCj4+KyAoYW5kIChtYXRjaF9jb2RlICJjb25zdF9pbnQi KQo+PisgKG1hdGNoX3Rlc3QgIklOVFZBTCAob3ApID09IDAiKSkpCj4+ZGlm ZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3YvcmlzY3YtcGFzc2VzLmRlZgo+ PmIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi1wYXNzZXMuZGVmCj4+aW5kZXgg NDA4NDEyMmNmMGEuLjI1NjI1YjlhZjNlIDEwMDY0NAo+Pi0tLSBhL2djYy9j b25maWcvcmlzY3YvcmlzY3YtcGFzc2VzLmRlZgo+PisrKyBiL2djYy9jb25m aWcvcmlzY3YvcmlzY3YtcGFzc2VzLmRlZgo+PkBAIC0xOSwzICsxOSw0IEBA Cj4+Cj4+IElOU0VSVF9QQVNTX0FGVEVSIChwYXNzX3J0bF9zdG9yZV9tb3Rp b24sIDEsIHBhc3Nfc2hvcnRlbl9tZW1yZWZzKTsKPj4gSU5TRVJUX1BBU1Nf QkVGT1JFIChwYXNzX2Zhc3RfcnRsX2RjZSwgMSwgcGFzc192c2V0dmwpOwo+ PitJTlNFUlRfUEFTU19BRlRFUiAocGFzc19jcHJvcF9oYXJkcmVnLCAxLCBw YXNzX3pjbXBfcG9wcmV0KTsKPj5kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9y aXNjdi9yaXNjdi1wcm90b3MuaCBiL2djYy9jb25maWcvcmlzY3YvcmlzY3Yt cHJvdG9zLmgKPj5pbmRleCA0NjExNDQ3ZGRkZS4uOGYyNDNjZDVmNDQgMTAw NjQ0Cj4+LS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi1wcm90b3MuaAo+ PisrKyBiL2djYy9jb25maWcvcmlzY3YvcmlzY3YtcHJvdG9zLmgKPj5AQCAt NTQsNiArNTQsNyBAQCBleHRlcm4gYm9vbCByaXNjdl9zcGxpdF82NGJpdF9t b3ZlX3AgKHJ0eCwgcnR4KTsKPj4gZXh0ZXJuIHZvaWQgcmlzY3Zfc3BsaXRf ZG91Ymxld29yZF9tb3ZlIChydHgsIHJ0eCk7Cj4+IGV4dGVybiBjb25zdCBj aGFyICpyaXNjdl9vdXRwdXRfbW92ZSAocnR4LCBydHgpOwo+PiBleHRlcm4g Y29uc3QgY2hhciAqcmlzY3Zfb3V0cHV0X3JldHVybiAoKTsKPj4rZXh0ZXJu IGJvb2wgcmlzY3Zfb3V0cHV0X3BvcHJldF9wIChydHgpOwo+Pgo+PiAjaWZk ZWYgUlRYX0NPREUKPj4gZXh0ZXJuIHZvaWQgcmlzY3ZfZXhwYW5kX2ludF9z Y2MgKHJ0eCwgZW51bSBydHhfY29kZSwgcnR4LCBydHgpOwo+PkBAIC03OSw2 ICs4MCw4IEBAIGV4dGVybiB2b2lkIHJpc2N2X3JlaW5pdCAodm9pZCk7Cj4+ IGV4dGVybiBwb2x5X3VpbnQ2NCByaXNjdl9yZWdtb2RlX25hdHVyYWxfc2l6 ZSAobWFjaGluZV9tb2RlKTsKPj4gZXh0ZXJuIGJvb2wgcmlzY3Zfdl9leHRf dmVjdG9yX21vZGVfcCAobWFjaGluZV9tb2RlKTsKPj4gZXh0ZXJuIGJvb2wg cmlzY3Zfc2hhbXRfbWF0Y2hlc19tYXNrX3AgKGludCwgSE9TVF9XSURFX0lO VCk7Cj4+K2V4dGVybiBib29sIHJpc2N2X3ZhbGlkX3N0YWNrX3B1c2hfcG9w X3AgKHJ0eCwgYm9vbCk7Cj4+K2V4dGVybiBib29sIHJpc2N2X2NoZWNrX3Jl Z25vKHJ0eCwgdW5zaWduZWQpOwo+Pgo+PiAvKiBSb3V0aW5lcyBpbXBsZW1l bnRlZCBpbiByaXNjdi1jLmNjLiAqLwo+PiB2b2lkIHJpc2N2X2NwdV9jcHBf YnVpbHRpbnMgKGNwcF9yZWFkZXIgKik7Cj4+QEAgLTk5LDYgKzEwMiw3IEBA IGV4dGVybiBib29sIHJpc2N2X2hhcmRfcmVnbm9fcmVuYW1lX29rICh1bnNp Z25lZCwgdW5zaWduZWQpOwo+Pgo+PiBydGxfb3B0X3Bhc3MgKiBtYWtlX3Bh c3Nfc2hvcnRlbl9tZW1yZWZzIChnY2M6OmNvbnRleHQgKmN0eHQpOwo+PiBy dGxfb3B0X3Bhc3MgKiBtYWtlX3Bhc3NfdnNldHZsIChnY2M6OmNvbnRleHQg KmN0eHQpOwo+PitydGxfb3B0X3Bhc3MgKiBtYWtlX3Bhc3NfemNtcF9wb3By ZXQgKGdjYzo6Y29udGV4dCAqY3R4dCk7Cj4+Cj4+IC8qIEluZm9ybWF0aW9u IGFib3V0IG9uZSBDUFUgd2Uga25vdyBhYm91dC4gKi8KPj4gc3RydWN0IHJp c2N2X2NwdV9pbmZvIHsKPj5kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yaXNj di9yaXNjdi16Y21wLXBvcHJldC5jYwo+PmIvZ2NjL2NvbmZpZy9yaXNjdi9y aXNjdi16Y21wLXBvcHJldC5jYwo+Pm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+ aW5kZXggMDAwMDAwMDAwMDAuLmQ3YjQwZjZhM2UyCj4+LS0tIC9kZXYvbnVs bAo+PisrKyBiL2djYy9jb25maWcvcmlzY3YvcmlzY3YtemNtcC1wb3ByZXQu Y2MKPj5AQCAtMCwwICsxLDI2MCBAQAo+PisjaW5jbHVkZSAiY29uZmlnLmgi Cj4+KyNpbmNsdWRlICJzeXN0ZW0uaCIKPj4rI2luY2x1ZGUgImNvcmV0eXBl cy5oIgo+PisjaW5jbHVkZSAidG0uaCIKPj4rI2luY2x1ZGUgInJ0bC5oIgo+ PisjaW5jbHVkZSAiYmFja2VuZC5oIgo+PisjaW5jbHVkZSAicmVncy5oIgo+ PisjaW5jbHVkZSAidGFyZ2V0LmgiCj4+KyNpbmNsdWRlICJtZW1tb2RlbC5o Igo+PisjaW5jbHVkZSAiZW1pdC1ydGwuaCIKPj4rI2luY2x1ZGUgImRmLmgi Cj4+KyNpbmNsdWRlICJwcmVkaWN0LmgiCj4+KyNpbmNsdWRlICJ0cmVlLXBh c3MuaCIKPj4rI2luY2x1ZGUgInRyZWUuaCIKPj4rI2luY2x1ZGUgInRtX3Au aCIKPj4rI2luY2x1ZGUgIm9wdGFicy5oIgo+PisjaW5jbHVkZSAicmVjb2cu aCIKPj4rI2luY2x1ZGUgImNmZ3J0bC5oIgo+PisKPj4rI2RlZmluZSBJTl9U QVJHRVRfQ09ERSAxCj4+Kwo+PituYW1lc3BhY2Ugewo+PisKPj4rLyoKPj4r IDEuIHByZXByb2Nlc3Npbmc6Cj4+KyAxLjEuIGlmIHRoZXJlIGlzIG5vIHB1 c2ggcnR4LCB0aGVuIGp1c3QgcmV0dXJuLiBlLmcuCj4+KyAobm90ZSA1IDEg MjIgMiBbYmIgMl0gTk9URV9JTlNOX0JBU0lDX0JMT0NLKQo+PisgKGluc24v ZiAyMiA1IDIzIDIgKHNldCAocmVnL2Y6U0kgMiBzcCkKPj4rIChwbHVzOlNJ IChyZWcvZjpTSSAyIHNwKQo+PisgKGNvbnN0X2ludCAtMzIgWzB4ZmZmZmZm ZmZmZmZmZmZlMF0pKSkKPj4rIChuaWwpKQo+PisgKG5vdGUgMjMgMjIgMiAy IE5PVEVfSU5TTl9QUk9MT0dVRV9FTkQpCj4+KyAxLjIuIGlmIHB1c2ggcnR4 IGV4aXN0cywgdGhlbiB3ZSBjb21wdXRlIHRoZSBudW1iZXIgb2YKPj4rIHB1 c2hlZCBzLXJlZ2lzdGVycywgbl9zcmVnLgo+PisKPj4rIHB1c2ggcnR4IHNo b3VsZCBiZSBmaW5kIGJlZm9yZSBOT1RFX0lOU05fUFJPTE9HVUVfRU5EIHRh Zwo+PisKPj4rIFsyIGFuZCAzIGhhcHBlbmQgc2ltdWx0YW5lb3VzbHldCj4+ KyAyLiBmaW5kIHZhbGlkIG1vdmUgcGF0dGVybiwgbXYgc04sIGFOLCB3aGVy ZSBOIDwgbl9zcmVnLAo+PisgYW5kIGFOIGlzIG5vdCB1c2VkIHRoZSBtb3Zl IHBhdHRlcm4sIGFuZCBzTiBpcyBub3QKPj4rIGRlZmluZWQgYmVmb3JlIHRo ZSBtb3ZlIHBhdHRlcm4gKGZyb20gcHJvbG9ndWUgdG8gdGhlCj4+KyBwb3Np dGlvbiBvZiBtb3ZlIHBhdHRlcm4pLgo+PisgMy4gYW5hbHlzaXMgdXNlIGFu ZCByZWFjaCBvZiBldmVyeSBpbnN0cnVjdGlvbiBmcm9tIHByb2xvZ3VlCj4+ KyB0byB0aGUgcG9zaXRpb24gb2YgbW92ZSBwYXR0ZXJuLgo+PisgaWYgYW55 IHNOIGlzIHVzZWQsIHRoZW4gd2UgbWFyayB0aGUgY29ycmVzcG9uZGluZyBh cmd1bWVudCBsaXN0Cj4+KyBjYW5kaWRhdGUgYXMgaW52YWxpZC4KPj4rIGUu Zy4KPj4rIHB1c2gge3JhLHMwLXMzfSwge30sIC0zMgo+Pisgc3cgczAsNDQo c3ApICMgczAgaXMgdXNlZCwgdGhlbiBhcmd1bWVudCBsaXN0IGlzIGludmFs aWQKPj4rIG12IGEwLGE1ICMgYTAgaXMgZGVmaW5lZCwgdGhlbiBhcmd1bWVu dCBsaXN0IGlzIGludmFsaWQKPj4rIC4uLgo+PisgbXYgczAsYTAKPj4rIG12 IHMxLGExCj4+KyBtdiBzMixhMgo+PisKPj4rIDQuIGlmIHRoZXJlIGlzIGEg dmFsaWQgYXJndW1lbnQgbGlzdCwgdGhlbiByZXBsYWNlIHRoZSBwb3AKPj4r IHB1c2ggcGFyYWxsZWwgaW5zbiwgYW5kIGRlbGV0ZSBtdiBwYXR0ZXJuLgo+ PisgaWYgbm90LCBza2lwLgo+PisqLwo+PisKPj4rc3RhdGljIHZvaWQKPj4r ZW1pdF96Y21wX3BvcHJldCAocnR4X2luc24gKnBvcF9ydHgsCj4+KyBydHhf aW5zbiAqKmNhbmRpZGF0ZXMsCj4+KyBiYXNpY19ibG9jayBiYikKPj4rewo+ PisgYm9vbCBnZW5fcG9wcmV0el9wID0gY2FuZGlkYXRlcyBbMF07Cj4+KyBi b29sIGdlbl9wb3ByZXRfcCA9IGNhbmRpZGF0ZXMgWzJdOwo+PisKPj4rIGlm ICghKGdlbl9wb3ByZXRfcCB8fCBnZW5fcG9wcmV0el9wKSkKPj4rIHJldHVy bjsKPj4rCj4+KyBnY2NfYXNzZXJ0ICgoZ2VuX3BvcHJldF9wICYmICFnZW5f cG9wcmV0el9wKQo+PisgfHwgKGdlbl9wb3ByZXR6X3AgJiYgZ2VuX3BvcHJl dF9wKSk7Cj4+Kwo+PisgcnR4IHBvcF9wYXQgPSBQQVRURVJOIChwb3BfcnR4 KTsKPj4rIHVuc2lnbmVkIHBvcF9pZHggPSAwLCBwb3ByZXRfaWR4ID0gMDsK Pj4rIHVuc2lnbmVkIG5fcG9wX3BhciA9IFhWRUNMRU4gKHBvcF9wYXQsIDAp Owo+PisgdW5zaWduZWQgbl9wb3ByZXRfcGFyID0gbl9wb3BfcGFyCj4+KyAr IChnZW5fcG9wcmV0el9wID8gMiA6IDApCj4+KyArIChnZW5fcG9wcmV0X3Ag PyAyIDogMCk7Cj4+Kwo+PisgcnR4IHBvcHJldF9wYXIgPSBnZW5fcnR4X1BB UkFMTEVMIChWT0lEbW9kZSwKPj4rIHJ0dmVjX2FsbG9jIChuX3BvcHJldF9w YXIpKTsKPj4rCj4+KyAvKiByZXR1cm4gemVybyBwYXR0ZXJuICovCj4+KyBp ZiAoZ2VuX3BvcHJldHpfcCkKPj4rIHsKPj4rIFhWRUNFWFAgKHBvcHJldF9w YXIsIDAsIDApID0gUEFUVEVSTiAoY2FuZGlkYXRlc1swXSk7Cj4+KyBYVkVD RVhQIChwb3ByZXRfcGFyLCAwLCAxKSA9IFBBVFRFUk4gKGNhbmRpZGF0ZXNb MV0pOwo+PisgcG9wcmV0X2lkeCArPSAyOwo+PisgZGVsZXRlX2luc24gKGNh bmRpZGF0ZXNbMF0pOwo+PisgZGVsZXRlX2luc24gKGNhbmRpZGF0ZXNbMV0p Owo+PisgfQo+PisKPj4rIC8qIGNvcHkgcG9wIHBhcnVlbmNlLiAqLwo+Pisg Zm9yICg7IHBvcF9pZHggPCBuX3BvcF9wYXI7Cj4+KyBwb3BfaWR4ICsrLCBw b3ByZXRfaWR4ICsrKQo+Pisgewo+PisgWFZFQ0VYUCAocG9wcmV0X3Bhciwg MCwgcG9wcmV0X2lkeCkgPQo+PisgWFZFQ0VYUCAocG9wX3BhdCwgMCwgcG9w X2lkeCk7Cj4+KyB9Cj4+Kwo+PisgLyogcmV0IHBhdHRlcm4uICovCj4+KyBy dHggcmV0X3BhdCA9IFBBVFRFUk4gKGNhbmRpZGF0ZXNbMl0pOwo+PisgZ2Nj X2Fzc2VydCAoR0VUX0NPREUgKHJldF9wYXQpID09IFBBUkFMTEVMKTsKPj4r Cj4+KyBmb3IgKGludCBpID0gMDsgaSA8IFhWRUNMRU4gKHJldF9wYXQsIDAp Owo+PisgaSsrLCBwb3ByZXRfaWR4KyspCj4+KyB7Cj4+KyBYVkVDRVhQIChw b3ByZXRfcGFyLCAwLCBwb3ByZXRfaWR4KSA9Cj4+KyBYVkVDRVhQIChyZXRf cGF0LCAwLCBpKTsKPj4rIH0KPj4rCj4+KyBydHhfaW5zbiAqaW5zbiA9IGVt aXRfanVtcF9pbnNuX2FmdGVyICgKPj4rIHBvcHJldF9wYXIsCj4+KyBCQl9F TkQgKGJiKSk7Cj4+KyBKVU1QX0xBQkVMIChpbnNuKSA9IHNpbXBsZV9yZXR1 cm5fcnR4Owo+PisKPj4rIFJFR19OT1RFUyAoaW5zbikgPSBSRUdfTk9URVMg KHBvcF9ydHgpOwo+PisgUlRYX0ZSQU1FX1JFTEFURURfUCAoaW5zbikgPSAx Owo+PisKPj4rIGlmIChkdW1wX2ZpbGUpCj4+KyB7Cj4+KyBmcHJpbnRmKGR1 bXBfZmlsZSwgIm5ldyBpbnNuOlxuIik7Cj4+KyBwcmludF9ydGwgKGR1bXBf ZmlsZSwgaW5zbik7Cj4+KyB9Cj4+Kwo+PisgZGVsZXRlX2luc24gKGNhbmRp ZGF0ZXMgWzJdKTsKPj4rIGRlbGV0ZV9pbnNuIChwb3BfcnR4KTsKPj4rfQo+ PisKPj4rc3RhdGljIHZvaWQKPj4remNtcF9wb3ByZXQgKHZvaWQpCj4+K3sK Pj4rIGJhc2ljX2Jsb2NrIGJiOwo+PisgcnR4X2luc24gKmluc24gPSBOVUxM LCAqcG9wX3J0eCA9IE5VTEw7Cj4+KyBydHhfaW5zbiAqcG9wX2NhbmRpZGF0 ZXNbM10gPSB7TlVMTCwgfTsKPj4rIC8qCj4+KyBmaW5kIE5PVEVfSU5TTl9F UElMT0dVRV9CRUcsIGJ1dCBwb3BfcnR4IG5vdCBmb3VuZCA9PiByZXR1cm4K Pj4rIGZpbmQgTk9URV9JTlNOX0VQSUxPR1VFX0JFRywgYW5kIHBvcF9ydHgg aXMgZm91bmQgPT4gbG9va2luZyBmb3IgYTAKPj4rICovCj4+Kwo+PisgRk9S X0VBQ0hfQkJfUkVWRVJTRV9GTiAoYmIsIGNmdW4pCj4+KyB7Cj4+KyBGT1Jf QkJfSU5TTlNfUkVWRVJTRSAoYmIsIGluc24pCj4+KyB7Cj4+KyBpZiAoIXBv cF9ydHgKPj4rICYmIE5PVEVfUCAoaW5zbikKPj4rICYmIE5PVEVfS0lORCAo aW5zbikgPT0gTk9URV9JTlNOX0VQSUxPR1VFX0JFRykKPj4rIHJldHVybjsK Pj4rCj4+KyBpZiAoTk9URV9QIChpbnNuKQo+PisgJiYgTk9URV9LSU5EIChp bnNuKSA9PSBOT1RFX0lOU05fRlVOQ1RJT05fQkVHKQo+Pisgewo+PisgaWYg KHBvcF9ydHgpCj4+KyBlbWl0X3pjbXBfcG9wcmV0IChwb3BfcnR4LCBwb3Bf Y2FuZGlkYXRlcywgYmIpOwo+PisgcmV0dXJuOwo+PisgfTsKPj4rCj4+KyBp ZiAoIShOT05ERUJVR19JTlNOX1AgKGluc24pCj4+KyB8fCBDQUxMX1AgKGlu c24pKSkKPj4rIGNvbnRpbnVlOwo+PisKPj4rIHJ0eCBwb3BfcGF0ID0gUEFU VEVSTiAoaW5zbik7Cj4+Kwo+PisgaWYgKEdFVF9DT0RFIChwb3BfcGF0KSA9 PSBQQVJBTExFTAo+PisgJiYgcmlzY3ZfdmFsaWRfc3RhY2tfcHVzaF9wb3Bf cCAocG9wX3BhdCwgZmFsc2UpKQo+Pisgewo+PisgcG9wX3J0eCA9IGluc247 Cj4+KyBjb250aW51ZTsKPj4rIH0KPj4rCj4+KyAvKiBwYXR0ZXJuIGZvciBg cmV0YC4gKi8KPj4rIGlmIChKVU1QX1AgKGluc24pCj4+KyAmJiBHRVRfQ09E RSAocG9wX3BhdCkgPT0gUEFSQUxMRUwKPj4rICYmIFhWRUNMRU4gKHBvcF9w YXQsIDApID09IDIKPj4rICYmIEdFVF9DT0RFIChYVkVDRVhQIChwb3BfcGF0 LCAwLCAwKSkgPT0gU0lNUExFX1JFVFVSTgo+PisgJiYgR0VUX0NPREUgKFhW RUNFWFAgKHBvcF9wYXQsIDAsIDEpKSA9PSBVU0UpCj4+KyB7Cj4+KyBydHgg dXNlX3JlZyA9IFhFWFAgKFhWRUNFWFAgKHBvcF9wYXQsIDAsIDEpLCAwKTsK Pj4rIGlmIChSRUdfUCAodXNlX3JlZykKPj4rICYmIFJFR05PICh1c2VfcmVn KSA9PSBSRVRVUk5fQUREUl9SRUdOVU0pCj4+KyB7Cj4+KyBwb3BfY2FuZGlk YXRlcyBbMl0gPSBpbnNuOwo+PisgY29udGludWU7Cj4+KyB9Cj4+KyB9Cj4+ Kwo+PisgaWYgKCFwb3BfcnR4KQo+PisgY29udGludWU7Cj4+Kwo+PisgLyog cGF0dGVybiBmb3IgcmV0dXJuIHZhbHVlLiAqLwo+PisgaWYgKCFwb3BfY2Fu ZGlkYXRlcyBbMF0KPj4rICYmIEdFVF9DT0RFIChwb3BfcGF0KSA9PSBVU0Up Cj4+KyB7Cj4+KyBydHhfaW5zbiAqc2V0X2luc24gPSBQUkVWX0lOU04gKGlu c24pOwo+PisgcnR4IHBhdF9zZXQgPSBQQVRURVJOIChzZXRfaW5zbik7Cj4+ Kwo+PisgaWYgKHJpc2N2X2NoZWNrX3JlZ25vIChYRVhQIChwb3BfcGF0LCAw KSwKPj4rIFJFVFVSTl9WQUxVRV9SRUdOVU0pCj4+KyAmJiBpbnNuCj4+KyAm JiBwYXRfc2V0ICE9IE5VTEwKPj4rICYmIEdFVF9DT0RFIChwYXRfc2V0KSA9 PSBTRVQKPj4rICYmIHJpc2N2X2NoZWNrX3JlZ25vIChTRVRfREVTVCAocGF0 X3NldCksCj4+KyBSRVRVUk5fVkFMVUVfUkVHTlVNKQo+PisgJiYgQ09OU1Rf SU5UX1AgKFNFVF9TUkMgKHBhdF9zZXQpKQo+PisgJiYgSU5UVkFMIChTRVRf U1JDIChwYXRfc2V0KSkgPT0gMCkKPj4rIHsKPj4rIHBvcF9jYW5kaWRhdGVz IFswXSA9IHNldF9pbnNuOwo+PisgcG9wX2NhbmRpZGF0ZXMgWzFdID0gaW5z bjsKPj4rIGJyZWFrOwo+PisgfQo+PisgfQo+PisgfQo+PisKPj4rIGlmIChw b3BfcnR4KQo+Pisgewo+PisgZW1pdF96Y21wX3BvcHJldCAocG9wX3J0eCwg cG9wX2NhbmRpZGF0ZXMsIGJiKTsKPj4rIHJldHVybjsKPj4rIH0KPj4rIH0K Pj4rfQo+PisKPj4rY29uc3QgcGFzc19kYXRhIHBhc3NfZGF0YV96Y21wX3Bv cHJldCA9Cj4+K3sKPj4rIFJUTF9QQVNTLCAvKiB0eXBlICovCj4+KyAiemNt cC1wb3ByZXQiLCAvKiBuYW1lICovCj4+KyBPUFRHUk9VUF9OT05FLCAvKiBv cHRpbmZvX2ZsYWdzICovCj4+KyBUVl9OT05FLCAvKiB0dl9pZCAqLwo+Pisg MCwgLyogcHJvcGVydGllc19yZXF1aXJlZCAqLwo+PisgMCwgLyogcHJvcGVy dGllc19wcm92aWRlZCAqLwo+PisgMCwgLyogcHJvcGVydGllc19kZXN0cm95 ZWQgKi8KPj4rIDAsIC8qIHRvZG9fZmxhZ3Nfc3RhcnQgKi8KPj4rIDAsIC8q IHRvZG9fZmxhZ3NfZmluaXNoICovCj4+K307Cj4+Kwo+PitjbGFzcyBwYXNz X3pjbXBfcG9wcmV0IDogcHVibGljIHJ0bF9vcHRfcGFzcwo+Pit7Cj4+K3B1 YmxpYzoKPj4rIHBhc3NfemNtcF9wb3ByZXQgKGdjYzo6Y29udGV4dCAqY3R4 dCkKPj4rIDogcnRsX29wdF9wYXNzIChwYXNzX2RhdGFfemNtcF9wb3ByZXQs IGN0eHQpCj4+KyB7fQo+PisKPj4rIC8qIG9wdF9wYXNzIG1ldGhvZHM6ICov Cj4+KyB2aXJ0dWFsIGJvb2wgZ2F0ZSAoZnVuY3Rpb24gKikKPj4rIHsgcmV0 dXJuIFRBUkdFVF9aQ01QOyB9Cj4+KyB2aXJ0dWFsIHVuc2lnbmVkIGludCBl eGVjdXRlIChmdW5jdGlvbiAqKQo+Pisgewo+PisgemNtcF9wb3ByZXQgKCk7 Cj4+KyByZXR1cm4gMDsKPj4rIH0KPj4rfTsgLy8gY2xhc3MgcGFzc196Y21w X3BvcHJldAo+PisKPj4rfSAvLyBhbm9uIG5hbWVzcGFjZQo+PisKPj4rcnRs X29wdF9wYXNzICoKPj4rbWFrZV9wYXNzX3pjbXBfcG9wcmV0IChnY2M6OmNv bnRleHQgKmN0eHQpCj4+K3sKPj4rIHJldHVybiBuZXcgcGFzc196Y21wX3Bv cHJldCAoY3R4dCk7Cj4+K30KPj5kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9y aXNjdi9yaXNjdi5jYyBiL2djYy9jb25maWcvcmlzY3YvcmlzY3YuY2MKPj5p bmRleCA1ZjhjYmZjMTVlZC4uMTdkZjJmM2Y4Y2YgMTAwNjQ0Cj4+LS0tIGEv Z2NjL2NvbmZpZy9yaXNjdi9yaXNjdi5jYwo+PisrKyBiL2djYy9jb25maWcv cmlzY3YvcmlzY3YuY2MKPj5AQCAtMTE0LDYgKzExNCw5IEBAIHN0cnVjdCBH VFkoKCkpIHJpc2N2X2ZyYW1lX2luZm8gewo+PiAvKiBMaWtld2lzZSBGUFIg WC4gKi8KPj4gdW5zaWduZWQgaW50IGZtYXNrOwo+Pgo+PisgLyogSG93IG11 Y2ggdGhlIHB1c2gvcG9wIHJvdXRpbmVzIGFkanVzdCBzcCAob3IgMCBpZiB1 bnVzZWQpLiAqLwo+PisgdW5zaWduZWQgcHVzaF9wb3Bfc3BfYWRqdXN0Owo+ PisKPj4gLyogSG93IG11Y2ggdGhlIEdQUiBzYXZlL3Jlc3RvcmUgcm91dGlu ZXMgYWRqdXN0IHNwIChvciAwIGlmIHVudXNlZCkuICovCj4+IHVuc2lnbmVk IHNhdmVfbGliY2FsbF9hZGp1c3RtZW50Owo+Pgo+PkBAIC00MDEsNiArNDA0 LDIwIEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBncHJfc2F2ZV9yZWdfb3Jk ZXJbXSA9IHsKPj4gUzEwX1JFR05VTSwgUzExX1JFR05VTQo+PiB9Owo+Pgo+ PisvKiBPcmRlciBmb3IgdGhlIENMT0JCRVJzL1VTRXMgb2YgcHVzaC9wb3Au ICovCj4+K3N0YXRpYyBjb25zdCB1bnNpZ25lZCBwdXNoX3NhdmVfcmVnX29y ZGVyW10gPSB7Cj4+KyBJTlZBTElEX1JFR05VTSwgUkVUVVJOX0FERFJfUkVH TlVNLCBTMF9SRUdOVU0sCj4+KyBTMV9SRUdOVU0sIFMyX1JFR05VTSwgUzNf UkVHTlVNLCBTNF9SRUdOVU0sCj4+KyBTNV9SRUdOVU0sIFM2X1JFR05VTSwg UzdfUkVHTlVNLCBTOF9SRUdOVU0sCj4+KyBTOV9SRUdOVU0sIFMxMF9SRUdO VU0sIFMxMV9SRUdOVU0KPj4rfTsKPj4rCj4+Ky8qIE9yZGVyIGZvciB0aGUg Q0xPQkJFUnMvVVNFcyBvZiBwdXNoL3BvcCBpbiBydmUuICovCj4+K3N0YXRp YyBjb25zdCB1bnNpZ25lZCBwdXNoX3NhdmVfcmVnX29yZGVyX3pjbXBlW10g PSB7Cj4+KyBJTlZBTElEX1JFR05VTSwgUkVUVVJOX0FERFJfUkVHTlVNLCBT MF9SRUdOVU0sCj4+KyBTMV9SRUdOVU0KPj4rfTsKPj4rCj4+IC8qIEEgdGFi bGUgZGVzY3JpYmluZyBhbGwgdGhlIHByb2Nlc3NvcnMgR0NDIGtub3dzIGFi b3V0LiAqLwo+PiBzdGF0aWMgY29uc3Qgc3RydWN0IHJpc2N2X3R1bmVfaW5m byByaXNjdl90dW5lX2luZm9fdGFibGVbXSA9IHsKPj4gI2RlZmluZSBSSVND Vl9UVU5FKFRVTkVfTkFNRSwgUElQRUxJTkVfTU9ERUwsIFRVTkVfSU5GTykg XAo+PkBAIC0yOTg5LDYgKzMwMDYsMTcgQEAgcmlzY3Zfb3V0cHV0X3JldHVy biAoKQo+PiByZXR1cm4gInJldCI7Cj4+IH0KPj4KPj4rYm9vbAo+PityaXNj dl9vdXRwdXRfcG9wcmV0X3AgKHJ0eCBvcCkKPj4rewo+PisgdW5zaWduZWQg bl9ydHggPSBYVkVDTEVOIChvcCwgMCk7Cj4+KyBydHggdXNlID0gWFZFQ0VY UCAob3AsIDAsIG5fcnR4IC0gMSk7Cj4+KyBydHggcmV0ID0gWFZFQ0VYUCAo b3AsIDAsIG5fcnR4IC0gMik7Cj4+Kwo+PisgcmV0dXJuIEdFVF9DT0RFIChy ZXQpID09IFNJTVBMRV9SRVRVUk4KPj4rICYmIEdFVF9DT0RFICh1c2UpID09 IFVTRTsKPj4rfQo+PisKPj4KPj4KPj4gLyogUmV0dXJuIHRydWUgaWYgQ01Q MSBpcyBhIHN1aXRhYmxlIHNlY29uZCBvcGVyYW5kIGZvciBpbnRlZ2VyIG9y ZGVyaW5nCj4+IHRlc3QgQ09ERS4gU2VlIGFsc28gdGhlICpzQ0MgcGF0dGVy bnMgaW4gcmlzY3YubWQuICovCj4+QEAgLTQzMDYsNiArNDMzNCw3NCBAQCBy aXNjdl9tZW1tb2RlbF9uZWVkc19hbW9fYWNxdWlyZSAoZW51bSBtZW1tb2Rl bCBtb2RlbCkKPj4gfQo+PiB9Cj4+Cj4+Ky8qIFByaW50IFNwIGFkanVzdG1l bnQgZmllbGQgb2YgcG9wIGluc3RydWN0aW9uLiAqLwo+PisKPj4rc3RhdGlj IHZvaWQKPj4rcmlzY3ZfcHJpbnRfcG9wX3NpemUgKEZJTEUgKmZpbGUsIHJ0 eCBvcCkKPj4rewo+PisgdW5zaWduZWQgc3BfYWRqdXN0X2lkeCA9IFhWRUNM RU4gKG9wLCAwKSAtIDE7Cj4+KyBydHggc3BfYWRqdXN0X3J0eCA9IFhWRUNF WFAgKG9wLCAwLCBzcF9hZGp1c3RfaWR4KTsKPj4rCj4+KyAvKiBTa2lwIHJl dCBvciBwYXR0ZXJuLiAqLwo+Pisgd2hpbGUgKEdFVF9DT0RFIChzcF9hZGp1 c3RfcnR4KSAhPSBTRVQpCj4+KyBzcF9hZGp1c3RfcnR4ID0gWFZFQ0VYUCAo b3AsIDAsIC0tc3BfYWRqdXN0X2lkeCk7Cj4+Kwo+PisgcnR4IGVsdF9wbHVz ID0gU0VUX1NSQyAoc3BfYWRqdXN0X3J0eCk7Cj4+KyBmcHJpbnRmIChmaWxl LCAiJWxkIiwgSU5UVkFMIChYRVhQIChlbHRfcGx1cywgMSkpKTsKPj4rfQo+ PisKPj4rLyogUHJpbnQgcHVzaC9wb3AgcmVnaXN0ZXIgbGlzdC4gKi8KPj4r Cj4+K3N0YXRpYyB2b2lkCj4+K3Jpc2N2X3ByaW50X3JlZ2xpc3QgKEZJTEUg KmZpbGUsIHJ0eCBvcCkKPj4rewo+PisgLyogd2Ugb25seSBkZWFsIHdpdGgg dGhyZWUgZm9ybWF0czoKPj4rIHB1c2gge3JhfQo+PisgcHVzaCB7cmEsIHMw fQo+PisgcHVzaCB7cmEsIHMwLXNOfQo+Pisgb3IKPj4rIHBvcCB7cmF9Cj4+ KyBwb3Age3JhLCBzMH0KPj4rIHBvcCB7cmEsIHMwLXNOfQo+PisgcmVnaXN0 ZXJzIGV4Y2VwdCByYSBoYXMgdG8gYmUgY29udGludW91cyBzLXJlZ2lzdGVy LAo+PisgYW5kIGl0IGlzIHN1cHBvc2VkIHRvIGJlIGNoZWNrZWQgYmVmb3Jl Lgo+PisgcmVnaXN0ZXIgbGlzdCBwYXR0ZXJucyBpbiBwdXNoOgo+PisgKHNl dC9mIChtZW0vYzpTSQo+PisgKHBsdXM6U0kgKHJlZy9mOlNJIDIgc3ApCj4+ KyAoY29uc3RfaW50IDI4IFsweDFjXSkpIFsyIFM0IEEzMl0pCj4+KyAocmVn OlNJIDEgcmEpKQo+PisgcmVnaXN0ZXIgbGlzdCBwYXR0ZXJucyBpbiBwb3A6 Cj4+KyAoc2V0L2YgKHJlZzpESSAxIHJhKQo+PisgKG1lbS9jOkRJIChwbHVz OkRJIChyZWcvZjpESSAyIHNwKQo+PisgKGNvbnN0X2ludCA4IFsweDhdKSkg WzIgUzggQTY0XSkpCj4+KyAqLwo+PisgaW50IHRvdGFsX2NvdW50ID0gWFZF Q0xFTiAob3AsIDApOwo+PisgaW50IG5fcmVncyA9IDA7Cj4+KyBib29sIHB1 c2hfcCA9IEdFVF9DT0RFIChYVkVDRVhQIChvcCwgMCwgMCkpID09IFNFVAo+ PisgJiYgR0VUX0NPREUgKFNFVF9TUkMgKFhWRUNFWFAgKG9wLCAwLCAwKSkp ID09IFBMVVM7Cj4+Kwo+PisgZm9yIChpbnQgaWR4ID0gMDsgaWR4IDwgdG90 YWxfY291bnQ7ICsraWR4KQo+Pisgewo+PisgcnR4IGVsZSA9IFhWRUNFWFAg KG9wLCAwLCBpZHgpOwo+PisgaWYgKEdFVF9DT0RFIChlbGUpICE9IFNFVCkK Pj4rIGNvbnRpbnVlOwo+PisKPj4rIGJvb2wgcmVzdG9yZV9zYXZlX3AgPSBw dXNoX3AgPwo+PisgTUVNX1AgKFNFVF9ERVNUIChlbGUpKSA6Cj4+KyBNRU1f UCAoU0VUX1NSQyAoZWxlKSk7Cj4+Kwo+PisgaWYgKHJlc3RvcmVfc2F2ZV9w KQo+Pisgbl9yZWdzICsrOwo+PisgfQo+PisKPj4rIGlmIChuX3JlZ3MgPiAy KQo+PisgZnByaW50ZiAoZmlsZSwgInJhLHMwLXMldSIsIG5fcmVncyAtIDIp Owo+PisgZWxzZSBpZiAobl9yZWdzID4gMSkKPj4rIGZwcmludGYgKGZpbGUs ICJyYSxzMCIpOwo+PisgZWxzZQo+PisgZnB1dHMoInJhIiwgZmlsZSk7Cj4+ K30KPj4rCj4+IC8qIFJldHVybiB0cnVlIGlmIGEgRkVOQ0Ugc2hvdWxkIGJl IGVtaXR0ZWQgdG8gYmVmb3JlIGEgbWVtb3J5IGFjY2VzcyB0bwo+PiBpbXBs ZW1lbnQgdGhlIHJlbGVhc2UgcG9ydGlvbiBvZiBtZW1vcnkgbW9kZWwgTU9E RUwuICovCj4+Cj4+QEAgLTQ1MTcsNiArNDYxMywxNCBAQCByaXNjdl9wcmlu dF9vcGVyYW5kIChGSUxFICpmaWxlLCBydHggb3AsIGludCBsZXR0ZXIpCj4+ IGZwdXRzIChHRVRfUlRYX05BTUUgKGNvZGUpLCBmaWxlKTsKPj4gYnJlYWs7 Cj4+Cj4+KyBjYXNlICdMJzoKPj4rIHJpc2N2X3ByaW50X3JlZ2xpc3QgKGZp bGUsIG9wKTsKPj4rIGJyZWFrOwo+PisKPj4rIGNhc2UgJ3MnOgo+Pisgcmlz Y3ZfcHJpbnRfcG9wX3NpemUgKGZpbGUsIG9wKTsKPj4rIGJyZWFrOwo+PisK Pj4gY2FzZSAnUyc6Cj4+IHsKPj4gcnR4IG5ld29wID0gR0VOX0lOVCAoY3R6 X2h3aSAoSU5UVkFMIChvcCkpKTsKPj5AQCAtNDc3Nyw2ICs0ODgxLDY2IEBA IHJpc2N2X3VzZV9zYXZlX2xpYmNhbGwgKGNvbnN0IHN0cnVjdCByaXNjdl9m cmFtZV9pbmZvCj4+KmZyYW1lKQo+PiByZXR1cm4gZnJhbWUtPnNhdmVfbGli Y2FsbF9hZGp1c3RtZW50ICE9IDA7Cj4+IH0KPj4KPj4rLyogRGV0ZXJtaW5l IGhvdyBtYW55IGluc3RydWN0aW9ucyByZWxhdGVkIHRvIHB1c2gvcG9wIGlu c3RydWN0aW9ucy4gKi8KPj4rCj4+K3N0YXRpYyB1bnNpZ25lZAo+PityaXNj dl9zYXZlX3B1c2hfcG9wX2NvdW50ICh1bnNpZ25lZCBtYXNrKQo+Pit7Cj4+ KyBpZiAoIUJJVFNFVF9QIChtYXNrLCBHUF9SRUdfRklSU1QgKyBSRVRVUk5f QUREUl9SRUdOVU0pKQo+PisgcmV0dXJuIDA7Cj4+KyBmb3IgKHVuc2lnbmVk IG4gPSBHUF9SRUdfTEFTVDsgbiA+IEdQX1JFR19GSVJTVDsgbi0tKQo+Pisg aWYgKEJJVFNFVF9QIChtYXNrLCBuKQo+PisgJiYgIWNhbGxfdXNlZF9yZWdz IFtuXSkKPj4rIC8qIGFkZCByYSBzYXZpbmcgYW5kIHNwIGFkanVzdC4gKi8K Pj4rIHJldHVybiBDQUxMRUVfU0FWRURfUkVHX05VTUJFUiAobikgKyAxICsg MjsKPj4rIGFib3J0ICgpOwo+Pit9Cj4+Kwo+PisvKiBDYWxjdWxhdGUgdGhl IG1heGltdW0gc3AgYWRqdXN0bWVudCBvZiBwdXNoL3BvcCBpbnN0cnVjdGlv bi4gKi8KPj4rCj4+K3N0YXRpYyB1bnNpZ25lZAo+PityaXNjdl9wdXNoX3Bv cF9iYXNlX3NwX2FkanVzdCAodW5zaWduZWQgbWFzaykKPj4rewo+PisgdW5z aWduZWQgbl9yZWdzID0gcmlzY3Zfc2F2ZV9wdXNoX3BvcF9jb3VudCAobWFz aykgLSAxOwo+PisgcmV0dXJuIChuX3JlZ3MgKiBVTklUU19QRVJfV09SRCAr IDE1KSAmICh+MHhmKTsKPj4rfQo+PisKPj4rLyogRGV0ZXJtaW5lIHdoZXRo ZXIgdG8gY2FsbCBwdXNoL3BvcCByb3V0aW5lcy4gKi8KPj4rCj4+K3N0YXRp YyBib29sCj4+K3Jpc2N2X3VzZV9wdXNoX3BvcCAoY29uc3Qgc3RydWN0IHJp c2N2X2ZyYW1lX2luZm8gKmZyYW1lLCBjb25zdCBIT1NUX1dJREVfSU5UCj4+ ZnJhbWVfc2l6ZSkKPj4rewo+PisgaWYgKCFUQVJHRVRfWkNNUCkKPj4rIHJl dHVybiBmYWxzZTsKPj4rCj4+KyAvKiBXZSBkbyBub3QgaGFuZGxlciB2YXJp YWJsZSBhcmd1bWVudCBjYXNlcyBjdXJyZW50bHkuICovCj4+KyBpZiAoY2Z1 bi0+bWFjaGluZS0+dmFyYXJnc19zaXplICE9IDApCj4+KyByZXR1cm4gZmFs c2U7Cj4+Kwo+PisgSE9TVF9XSURFX0lOVCBiYXNlX3NpemUgPSByaXNjdl9w dXNoX3BvcF9iYXNlX3NwX2FkanVzdCAoZnJhbWUtPm1hc2spOwo+PisgLyoK Pj4rIFByIDk2MDIxNS0xLmMgaW4gcnY2NCBvdXB1dHMKPj4rCj4+KyBhZGRp IHNwLHNwLC0zMgo+Pisgc2QgcmEsMjQoc3ApCj4+KyBzZCBzMCwxNihzcCkK Pj4rIHNkIHMyLDgoc3ApCj4+KyBzZCBzMywwKHNwKQo+PisgaXQgaXMgYSBy YXJlIGNhc2UgdGhhdCBjYWxsZWUgc2F2ZWQgcmVnaXN0ZXJzIGFyZSBub3Qg bm9uLWNvbnRpbm91cywKPj4rIHdoaWNoIGJyZWFrcyB0aGUgb2xkIHB1c2gg aW1wbGVtZW50YXRpb24sIGFuZCB3ZSBqdXN0IHJlamVjdCB0aGlzIGNhc2UK Pj4rIGxpa2Ugc2F2ZS1yZXN0b3JlIGRvZXMgbm93Lgo+PisgKi8KPj4rIGlm IChiYXNlX3NpemUgPiBmcmFtZV9zaXplKQo+PisgcmV0dXJuIGZhbHNlOwo+ PisKPj4rIC8qIHtyYSxzMC1zMTB9IGlzIGludmFsaWQuICovCj4+KyBpZiAo ZnJhbWUtPm1hc2sgJiAoMSA8PCAoUzEwX1JFR05VTSAtIEdQX1JFR19GSVJT VCkpCj4+KyAmJiAhKGZyYW1lLT5tYXNrICYgKDEgPDwgKFMxMV9SRUdOVU0g LSBHUF9SRUdfRklSU1QpKSkpCj4+KyByZXR1cm4gZmFsc2U7Cj4+Kwo+Pisg cmV0dXJuIGZyYW1lLT5tYXNrICYgKDEgPDwgKFJFVFVSTl9BRERSX1JFR05V TSAtIEdQX1JFR19GSVJTVCkpOwo+Pit9Cj4+Kwo+PiAvKiBEZXRlcm1pbmUg d2hpY2ggR1BSIHNhdmUvcmVzdG9yZSByb3V0aW5lIHRvIGNhbGwuICovCj4+ Cj4+IHN0YXRpYyB1bnNpZ25lZAo+PkBAIC00OTM0LDYgKzUwOTgsOCBAQCBy aXNjdl9jb21wdXRlX2ZyYW1lX2luZm8gKHZvaWQpCj4+IC8qIE9ubHkgdXNl IHNhdmUvcmVzdG9yZSByb3V0aW5lcyB3aGVuIHRoZSBHUFJzIGFyZSBhdG9w IHRoZSBmcmFtZS4gKi8KPj4gaWYgKGtub3duX25lIChmcmFtZS0+aGFyZF9m cmFtZV9wb2ludGVyX29mZnNldCwgZnJhbWUtPnRvdGFsX3NpemUpKQo+PiBm cmFtZS0+c2F2ZV9saWJjYWxsX2FkanVzdG1lbnQgPSAwOwo+PisKPj4rIGZy YW1lLT5wdXNoX3BvcF9zcF9hZGp1c3QgPSAwOwo+PiB9Cj4+Cj4+IC8qIE1h a2Ugc3VyZSB0aGF0IHdlJ3JlIG5vdCB0cnlpbmcgdG8gZWxpbWluYXRlIHRv IHRoZSB3cm9uZyBoYXJkIGZyYW1lCj4+QEAgLTUxNzEsNiArNTMzNyw4NiBA QCByaXNjdl9mb3JfZWFjaF9zYXZlZF9yZWcgKHBvbHlfaW50NjQgc3Bfb2Zm c2V0LAo+PnJpc2N2X3NhdmVfcmVzdG9yZV9mbiBmbiwKPj4gfQo+PiB9Cj4+ Cj4+K3N0YXRpYyB2b2lkCj4+K3Jpc2N2X2VtaXRfcG9wX2luc24gKHN0cnVj dCByaXNjdl9mcmFtZV9pbmZvICpmcmFtZSwgSE9TVF9XSURFX0lOVCBvZmZz ZXQsCj4+SE9TVF9XSURFX0lOVCBzaXplKQo+Pit7Cj4+KyB1bnNpZ25lZCBp bnQgdmVjbGVuID0gcmlzY3Zfc2F2ZV9wdXNoX3BvcF9jb3VudCAoZnJhbWUt Pm1hc2spOwo+PisgdW5zaWduZWQgaW50IG5fcmVnID0gdmVjbGVuIC0gMTsK Pj4rIHJ0dmVjIHZlYyA9IHJ0dmVjX2FsbG9jICh2ZWNsZW4pOwo+PisgSE9T VF9XSURFX0lOVCBzcF9hZGp1c3Q7Cj4+KyBydHggZHdhcmYgPSBOVUxMX1JU WDsKPj4rCj4+KyBjb25zdCB1bnNpZ25lZCAqcmVnX29yZGVyID0gKFRBUkdF VF9aQ01QICYmIFRBUkdFVF9SVkUpCj4+KyA/IHB1c2hfc2F2ZV9yZWdfb3Jk ZXJfemNtcGUKPj4rIDogcHVzaF9zYXZlX3JlZ19vcmRlcjsKPj4rCj4+KyBn Y2NfYXNzZXJ0IChuX3JlZyA+PSAxCj4+KyAmJiBUQVJHRVRfWkNNUAo+Pisg JiYgKChUQVJHRVRfUlZFICYmIChuX3JlZyA8PSBBUlJBWV9TSVpFIChwdXNo X3NhdmVfcmVnX29yZGVyX3pjbXBlKSkpCj4+KyB8fCAoVEFSR0VUX1pDTVAg JiYgKG5fcmVnIDw9IEFSUkFZX1NJWkUgKHB1c2hfc2F2ZV9yZWdfb3JkZXIp KSkpKTsKPj4rCj4+KyAvKiBzcCBhZGp1c3QgcGF0dGVybiAqLwo+PisgaW50 IG1heF9hbGxvd19zcF9hZGp1c3QgPSByaXNjdl9wdXNoX3BvcF9iYXNlX3Nw X2FkanVzdCAoZnJhbWUtPm1hc2spICsgNDg7Cj4+KyBpbnQgYWxpZ25lZF9z aXplID0gc2l6ZTsKPj4rCj4+KyAvKiBpZiBzcCBhZGp1c3RtZW50IGlzIHRv byBsYXJnZSwgd2Ugc2hvdWxkIHNwbGl0IGl0IGZpcnN0LiAqLwo+PisgaWYg KGFsaWduZWRfc2l6ZSA+IG1heF9hbGxvd19zcF9hZGp1c3QpCj4+KyB7Cj4+ KyBydHggZHdhcmZfcHJlX3NwX2FkanVzdCA9IE5VTExfUlRYOwo+PisgcnR4 IHByZV9hZGp1c3RfcnR4ID0gZ2VuX2FkZDNfaW5zbiAoc3RhY2tfcG9pbnRl cl9ydHgsCj4+KyBzdGFja19wb2ludGVyX3J0eCwKPj4rIEdFTl9JTlQgKGFs aWduZWRfc2l6ZSAtIG1heF9hbGxvd19zcF9hZGp1c3QpKTsKPj4rIHJ0eCBp bnNuID0gZW1pdF9pbnNuIChwcmVfYWRqdXN0X3J0eCk7Cj4+Kwo+PisgcnR4 IGNmYV9wcmVfYWRqdXN0X3J0eCA9IGdlbl9ydHhfUExVUyAoUG1vZGUsIHN0 YWNrX3BvaW50ZXJfcnR4LAo+PisgR0VOX0lOVCAoYWxpZ25lZF9zaXplIC0g bWF4X2FsbG93X3NwX2FkanVzdCkpOwo+PisgZHdhcmZfcHJlX3NwX2FkanVz dCA9IGFsbG9jX3JlZ19ub3RlIChSRUdfQ0ZBX0RFRl9DRkEsCj4+KyBjZmFf cHJlX2FkanVzdF9ydHgsCj4+KyBkd2FyZl9wcmVfc3BfYWRqdXN0KTsKPj4r Cj4+KyBSVFhfRlJBTUVfUkVMQVRFRF9QIChpbnNuKSA9IDE7Cj4+KyBSRUdf Tk9URVMgKGluc24pID0gZHdhcmZfcHJlX3NwX2FkanVzdDsKPj4rCj4+KyBz cF9hZGp1c3QgPSBtYXhfYWxsb3dfc3BfYWRqdXN0Owo+PisgfQo+PisgZWxz ZQo+Pisgc3BfYWRqdXN0ID0gKGFsaWduZWRfc2l6ZSArIDE1KSAmICh+MHhm KTsKPj4rCj4+KyAvKiByZWdpc3RlciBzYXZlIHNlcXVlbmNlLiAqLwo+Pisg Zm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IHZlY2xlbjsgKytpKQo+Pisgewo+ Pisgb2Zmc2V0IC09IFVOSVRTX1BFUl9XT1JEOwo+PisgdW5zaWduZWQgcmVn bm8gPSByZWdfb3JkZXJbaV07Cj4+KyBydHggcmVnID0gZ2VuX3J0eF9SRUcg KFBtb2RlLCByZWdubyk7Cj4+KyBydHggbWVtID0gZ2VuX2ZyYW1lX21lbSAo UG1vZGUsIHBsdXNfY29uc3RhbnQgKFBtb2RlLAo+Pisgc3RhY2tfcG9pbnRl cl9ydHgsCj4+KyBvZmZzZXQpKTsKPj4rIHJ0eCBzZXQgPSBnZW5fcnR4X1NF VCAocmVnLCBtZW0pOwo+PisgUlRWRUNfRUxUICh2ZWMsIGkgLSAxKSA9IHNl dDsKPj4rIFJUWF9GUkFNRV9SRUxBVEVEX1AgKHNldCkgPSAxOwo+PisgZHdh cmYgPSBhbGxvY19yZWdfbm90ZSAoUkVHX0NGQV9SRVNUT1JFLCByZWcsIGR3 YXJmKTsKPj4rIH0KPj4rCj4+KyAvKiBzcCBhZGp1c3QgcGF0dGVybiAqLwo+ PisgcnR4IGFkanVzdF9zcF9ydHgKPj4rID0gZ2VuX3J0eF9TRVQgKHN0YWNr X3BvaW50ZXJfcnR4LAo+PisgcGx1c19jb25zdGFudCAoUG1vZGUsCj4+KyBz dGFja19wb2ludGVyX3J0eCwKPj4rIHNwX2FkanVzdCkpOwo+PisgUlRWRUNf RUxUICh2ZWMsIHZlY2xlbiAtIDEpID0gYWRqdXN0X3NwX3J0eDsKPj4rCj4+ KyBydHggY2ZhX2FkanVzdF9ydHggPSBnZW5fcnR4X1BMVVMgKFBtb2RlLCBz dGFja19wb2ludGVyX3J0eCwKPj4rIGNvbnN0MF9ydHgpOwo+PisgZHdhcmYg PSBhbGxvY19yZWdfbm90ZSAoUkVHX0NGQV9ERUZfQ0ZBLCBjZmFfYWRqdXN0 X3J0eCwgZHdhcmYpOwo+PisKPj4rIGZyYW1lLT5ncF9zcF9vZmZzZXQgLT0g KHZlY2xlbiAtIDEpICogVU5JVFNfUEVSX1dPUkQ7Cj4+KyBmcmFtZS0+cHVz aF9wb3Bfc3BfYWRqdXN0ID0gc3BfYWRqdXN0Owo+PisKPj4rIHJ0eCBpbnNu ID0gZW1pdF9pbnNuIChnZW5fcnR4X1BBUkFMTEVMIChWT0lEbW9kZSwgdmVj KSk7Cj4+KyBSVFhfRlJBTUVfUkVMQVRFRF9QIChpbnNuKSA9IDE7Cj4+KyBS RUdfTk9URVMgKGluc24pID0gZHdhcmY7Cj4+K30KPj4rCj4+IC8qIEZvciBz dGFjayBmcmFtZXMgdGhhdCBjYW4ndCBiZSBhbGxvY2F0ZWQgd2l0aCBhIHNp bmdsZSBBRERJIGluc3RydWN0aW9uLAo+PiBjb21wdXRlIHRoZSBiZXN0IHZh bHVlIHRvIGluaXRpYWxseSBhbGxvY2F0ZS4gSXQgbXVzdCBhdCBhIG1pbmlt dW0KPj4gYWxsb2NhdGUgZW5vdWdoIHNwYWNlIHRvIHNwaWxsIHRoZSBjYWxs ZWUtc2F2ZWQgcmVnaXN0ZXJzLiBJZiBUQVJHRVRfUlZDLAo+PkBAIC01Mjcw LDYgKzU1MTYsMTQ2IEBAIHJpc2N2X2VtaXRfc3RhY2tfdGllICh2b2lkKQo+ PiBlbWl0X2luc24gKGdlbl9zdGFja190aWVkaSAoc3RhY2tfcG9pbnRlcl9y dHgsIGhhcmRfZnJhbWVfcG9pbnRlcl9ydHgpKTsKPj4gfQo+Pgo+Pitib29s Cj4+K3Jpc2N2X2NoZWNrX3JlZ25vKHJ0eCBwYXQsIHVuc2lnbmVkIHJlZ25v KQo+Pit7Cj4+KyByZXR1cm4gUkVHX1AgKHBhdCkKPj4rICYmIFJFR05PIChw YXQpID09IHJlZ25vOwo+Pit9Cj4+Kwo+PisvKiBGdW5jdGlvbiB0byBjaGVj ayB3aGV0aGVyIHRoZSBPUCBpcyBhIHZhbGlkIHN0YWNrIHB1c2gvcG9wIG9w ZXJhdGlvbi4KPj4rIFRoaXMgcGFydCBpcyBib3Jyb3dlZCBmcm9tIG5kczMy IG5kczMyX3ZhbGlkX3N0YWNrX3B1c2hfcG9wX3AgKi8KPj4rCj4+K2Jvb2wK Pj4rcmlzY3ZfdmFsaWRfc3RhY2tfcHVzaF9wb3BfcCAocnR4IG9wLCBib29s IHB1c2hfcCkKPj4rewo+PisgaW50IGluZGV4Owo+PisgaW50IHRvdGFsX2Nv dW50Owo+PisgaW50IHNwX2FkanVzdF9ydHhfaW5kZXg7Cj4+KyBydHggZWx0 Owo+PisgcnR4IGVsdF9yZWc7Cj4+KyBydHggZWx0X3BsdXM7Cj4+Kwo+Pisg aWYgKCFUQVJHRVRfWkNNUCkKPj4rIHJldHVybiBmYWxzZTsKPj4rCj4+KyB0 b3RhbF9jb3VudCA9IFhWRUNMRU4gKG9wLCAwKTsKPj4rIHNwX2FkanVzdF9y dHhfaW5kZXggPSBwdXNoX3AgPyAwIDogdG90YWxfY291bnQgLSAxOwo+PisK Pj4rIC8qIEF0IGxlYXN0IHNwICsgb25lIGNhbGxlZSBzYXZlL3Jlc3RvcmUg cmVnaXN0ZXIgcnR4ICovCj4+KyBpZiAodG90YWxfY291bnQgPCAyKQo+Pisg cmV0dXJuIGZhbHNlOwo+PisKPj4rIC8qIFBlcmZvcm0gc29tZSBxdWljayBj aGVjayBmb3IgdGhhdCBldmVyeSBlbGVtZW50IHNob3VsZCBiZSAnc2V0JywK Pj4rIGZvciBwb3AsIGl0IG1pZ2h0IGNvbnRhaW4gYHJldGAgYW5kIGByZXQg dmFsdWVgIHBhdHRlcm4uICovCj4+KyBmb3IgKGluZGV4ID0gMDsgaW5kZXgg PCB0b3RhbF9jb3VudDsgaW5kZXgrKykKPj4rIHsKPj4rIGVsdCA9IFhWRUNF WFAgKG9wLCAwLCBpbmRleCk7Cj4+Kwo+PisgLyogc2tpcCBwb3AgcmV0dXJu IHZhbHVlIHJ0eCAqLwo+PisgaWYgKCFwdXNoX3AgJiYgR0VUX0NPREUgKGVs dCkgPT0gU0VUCj4+KyAmJiByaXNjdl9jaGVja19yZWdubyAoU0VUX0RFU1Qg KGVsdCksIFJFVFVSTl9WQUxVRV9SRUdOVU0pCj4+KyAmJiB0b3RhbF9jb3Vu dCA+PSA0Cj4+KyAmJiBpbmRleCArIDEgPCB0b3RhbF9jb3VudAo+PisgJiYg R0VUX0NPREUgKFhWRUNFWFAgKG9wLCAwLCBpbmRleCArIDEpKSA9PSBVU0Up Cj4+KyB7Cj4+KyBydHggdXNlX3JlZyA9IFhFWFAgKFhWRUNFWFAgKG9wLCAw LCBpbmRleCArIDEpLCAwKTsKPj4rCj4+KyBpZiAoIXJpc2N2X2NoZWNrX3Jl Z25vICh1c2VfcmVnLCBSRVRVUk5fVkFMVUVfUkVHTlVNKSkKPj4rIHJldHVy biBmYWxzZTsKPj4rCj4+KyBpbmRleCArPSAxOwo+PisgY29udGludWU7Cj4+ KyB9Cj4+Kwo+PisgLyogc2tpcCByZXQgcnR4ICovCj4+KyBpZiAoIXB1c2hf cCAmJiBHRVRfQ09ERSAoZWx0KSA9PSBTSU1QTEVfUkVUVVJOCj4+KyAmJiB0 b3RhbF9jb3VudCA+PSA0Cj4+KyAmJiBpbmRleCArIDEgPCB0b3RhbF9jb3Vu dAo+PisgJiYgR0VUX0NPREUgKFhWRUNFWFAgKG9wLCAwLCBpbmRleCArIDEp KSA9PSBVU0UpCj4+KyB7Cj4+KyBydHggdXNlX3JlZyA9IFhFWFAgKFhWRUNF WFAgKG9wLCAwLCBpbmRleCArIDEpLCAwKTsKPj4rCj4+KyBpZiAoIXJpc2N2 X2NoZWNrX3JlZ25vICh1c2VfcmVnLCBSRVRVUk5fQUREUl9SRUdOVU0pKQo+ PisgcmV0dXJuIGZhbHNlOwo+PisKPj4rIGluZGV4ICs9IDE7Cj4+KyBzcF9h ZGp1c3RfcnR4X2luZGV4IC09IDI7Cj4+KyBjb250aW51ZTsKPj4rIH0KPj4r Cj4+KyBpZiAoR0VUX0NPREUgKGVsdCkgIT0gU0VUKQo+PisgcmV0dXJuIGZh bHNlOwo+PisgfQo+PisKPj4rIGVsdCA9IFhWRUNFWFAgKG9wLCAwLCBzcF9h ZGp1c3RfcnR4X2luZGV4KTsKPj4rIGVsdF9yZWcgPSBTRVRfREVTVCAoZWx0 KTsKPj4rIGVsdF9wbHVzID0gU0VUX1NSQyAoZWx0KTsKPj4rCj4+KyAvKiBD aGVjayB0aGlzIGlzIChzZXQgKHN0YWNrX3JlZykgKHBsdXMgc3RhY2tfcmVn IGNvbnN0KSkgcGF0dGVybi4gKi8KPj4rIGlmIChHRVRfQ09ERSAoZWx0X3Bs dXMpICE9IFBMVVMKPj4rIHx8ICFyaXNjdl9jaGVja19yZWdubyAoZWx0X3Jl ZywgU1RBQ0tfUE9JTlRFUl9SRUdOVU0pKQo+PisgcmV0dXJuIGZhbHNlOwo+ PisKPj4rIC8qIFBhc3MgYWxsIHRlc3QsIHRoaXMgaXMgYSB2YWxpZCBydHgu ICovCj4+KyByZXR1cm4gdHJ1ZTsKPj4rfQo+PisKPj4rLyogR2VuZXJhdGUg cHVzaC9wb3AgcnR4ICovCj4+Kwo+PitzdGF0aWMgdm9pZAo+PityaXNjdl9l bWl0X3B1c2hfaW5zbiAoc3RydWN0IHJpc2N2X2ZyYW1lX2luZm8gKmZyYW1l LCBIT1NUX1dJREVfSU5UIHNpemUpCj4+K3sKPj4rIHVuc2lnbmVkIGludCB2 ZWNsZW4gPSByaXNjdl9zYXZlX3B1c2hfcG9wX2NvdW50IChmcmFtZS0+bWFz ayk7Cj4+KyB1bnNpZ25lZCBpbnQgbl9yZWcgPSB2ZWNsZW4gLSAxOwo+Pisg cnR2ZWMgdmVjID0gcnR2ZWNfYWxsb2MgKHZlY2xlbik7Cj4+Kwo+PisgY29u c3QgdW5zaWduZWQgKnJlZ19vcmRlciA9IChUQVJHRVRfWkNNUCAmJiBUQVJH RVRfUlZFKQo+PisgPyBwdXNoX3NhdmVfcmVnX29yZGVyX3pjbXBlCj4+KyA6 IHB1c2hfc2F2ZV9yZWdfb3JkZXI7Cj4+Kwo+PisgaW50IGFsaWduZWRfc2l6 ZSA9IChzaXplICsgMTUpICYgKH4weGYpOwo+PisKPj4rIGdjY19hc3NlcnQg KG5fcmVnID49IDEKPj4rICYmIFRBUkdFVF9aQ01QCj4+KyAmJiAoKFRBUkdF VF9SVkUgJiYgKG5fcmVnIDw9IEFSUkFZX1NJWkUgKHB1c2hfc2F2ZV9yZWdf b3JkZXJfemNtcGUpKSkKPj4rIHx8IChUQVJHRVRfWkNNUCAmJiAobl9yZWcg PD0gQVJSQVlfU0laRSAocHVzaF9zYXZlX3JlZ19vcmRlcikpKSkpOwo+PisK Pj4rIC8qIHNwIGFkanVzdCBwYXR0ZXJuICovCj4+KyBpbnQgbWF4X2FsbG93 X3NwX2FkanVzdCA9IHJpc2N2X3B1c2hfcG9wX2Jhc2Vfc3BfYWRqdXN0IChm cmFtZS0+bWFzaykgKyA0ODsKPj4rIGludCBzcF9hZGp1c3QgPSBhbGlnbmVk X3NpemUgPiBtYXhfYWxsb3dfc3BfYWRqdXN0ID8KPj4rIG1heF9hbGxvd19z cF9hZGp1c3QKPj4rIDogYWxpZ25lZF9zaXplOwo+PisKPj4rIC8qVE9ETzog bW92ZSB0aGlzIHBhcnQgdG8gZnJhbWUgY29tcHV0YXRpb24gZnVuY3Rpb24u ICovCj4+KyBmcmFtZS0+Z3Bfc3Bfb2Zmc2V0ID0gKHZlY2xlbiAtIDEpICog VU5JVFNfUEVSX1dPUkQ7Cj4+KyBmcmFtZS0+cHVzaF9wb3Bfc3BfYWRqdXN0 ID0gc3BfYWRqdXN0Owo+PisKPj4rIHJ0eCBhZGp1c3Rfc3BfcnR4Cj4+KyA9 IGdlbl9ydHhfU0VUIChzdGFja19wb2ludGVyX3J0eCwKPj4rIHBsdXNfY29u c3RhbnQgKFBtb2RlLAo+Pisgc3RhY2tfcG9pbnRlcl9ydHgsCj4+KyAtc3Bf YWRqdXN0KSk7Cj4+KyBSVFZFQ19FTFQgKHZlYywgMCkgPSBhZGp1c3Rfc3Bf cnR4Owo+PisKPj4rIC8qIFJlZ2lzdGVyIHNhdmUgc2VxdWVuY2UuICovCj4+ KyBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgdmVjbGVuOyArK2kpCj4+KyB7 Cj4+KyBzcF9hZGp1c3QgLT0gVU5JVFNfUEVSX1dPUkQ7Cj4+KyB1bnNpZ25l ZCByZWdubyA9IHJlZ19vcmRlcltpXTsKPj4rIHJ0eCByZWcgPSBnZW5fcnR4 X1JFRyAoUG1vZGUsIHJlZ25vKTsKPj4rIHJ0eCBtZW0gPSBnZW5fZnJhbWVf bWVtIChQbW9kZSwgcGx1c19jb25zdGFudCAoUG1vZGUsCj4+KyBzdGFja19w b2ludGVyX3J0eCwKPj4rIHNwX2FkanVzdCkpOwo+PisgcnR4IHNldCA9IGdl bl9ydHhfU0VUIChtZW0sIHJlZyk7Cj4+KyBSVFZFQ19FTFQgKHZlYywgaSkg PSBzZXQ7Cj4+KyBSVFhfRlJBTUVfUkVMQVRFRF9QIChzZXQpID0gMTsKPj4r IH0KPj4rCj4+KyBydHggaW5zbiA9IGVtaXRfaW5zbiAoZ2VuX3J0eF9QQVJB TExFTCAoVk9JRG1vZGUsIHZlYykpOwo+PisgUlRYX0ZSQU1FX1JFTEFURURf UCAoaW5zbikgPSAxOwo+Pit9Cj4+Kwo+PiAvKiBFeHBhbmQgdGhlICJwcm9s b2d1ZSIgcGF0dGVybi4gKi8KPj4KPj4gdm9pZAo+PkBAIC01Mjc4LDYgKzU2 NjQsNyBAQCByaXNjdl9leHBhbmRfcHJvbG9ndWUgKHZvaWQpCj4+IHN0cnVj dCByaXNjdl9mcmFtZV9pbmZvICpmcmFtZSA9ICZjZnVuLT5tYWNoaW5lLT5m cmFtZTsKPj4gcG9seV9pbnQ2NCBzaXplID0gZnJhbWUtPnRvdGFsX3NpemU7 Cj4+IHVuc2lnbmVkIG1hc2sgPSBmcmFtZS0+bWFzazsKPj4rIEhPU1RfV0lE RV9JTlQgc3RlcDEgPSByaXNjdl9maXJzdF9zdGFja19zdGVwIChmcmFtZSk7 Cj4+IHJ0eCBpbnNuOwo+Pgo+PiBpZiAoZmxhZ19zdGFja191c2FnZV9pbmZv KQo+PkBAIC01MzAwLDE5ICs1Njg3LDMyIEBAIHJpc2N2X2V4cGFuZF9wcm9s b2d1ZSAodm9pZCkKPj4gUkVHX05PVEVTIChpbnNuKSA9IGR3YXJmOwo+PiB9 Cj4+Cj4+KyBpZiAoc2l6ZS5pc19jb25zdGFudCAoKSkKPj4rIHN0ZXAxID0g TUlOIChzaXplLnRvX2NvbnN0YW50KCksIHN0ZXAxKTsKPj4rIGlmIChyaXNj dl91c2VfcHVzaF9wb3AgKGZyYW1lLCBzdGVwMSkpCj4+KyB7Cj4+KyByaXNj dl9lbWl0X3B1c2hfaW5zbiAoZnJhbWUsIHN0ZXAxKTsKPj4rCj4+KyBzdGVw MSA9IE1BWCAoc3RlcDEgLSBmcmFtZS0+cHVzaF9wb3Bfc3BfYWRqdXN0LCAw KTsKPj4rIHNpemUgPSBNQVggKHNpemUudG9fY29uc3RhbnQoKSAtIGZyYW1l LT5wdXNoX3BvcF9zcF9hZGp1c3QsIDApOwo+PisgZnJhbWUtPm1hc2sgJj0g fiAoKFRBUkdFVF9aQ01QICYmIFRBUkdFVF9SVkUpID8KPj4rIFJJU0NWX1pD TVBFX1BVU0hfUE9QX01BU0sKPj4rIDogUklTQ1ZfWkNFX1BVU0hfUE9QX01B U0spOwo+PisgfQo+PisKPj4gLyogU2F2ZSB0aGUgcmVnaXN0ZXJzLiAqLwo+ PiBpZiAoKGZyYW1lLT5tYXNrIHwgZnJhbWUtPmZtYXNrKSAhPSAwKQo+PiB7 Cj4+LSBIT1NUX1dJREVfSU5UIHN0ZXAxID0gcmlzY3ZfZmlyc3Rfc3RhY2tf c3RlcCAoZnJhbWUpOwo+Pi0gaWYgKHNpemUuaXNfY29uc3RhbnQgKCkpCj4+ LSBzdGVwMSA9IE1JTiAoc2l6ZS50b19jb25zdGFudCgpLCBzdGVwMSk7Cj4+ LQo+Pi0gaW5zbiA9IGdlbl9hZGQzX2luc24gKHN0YWNrX3BvaW50ZXJfcnR4 LAo+Pi0gc3RhY2tfcG9pbnRlcl9ydHgsCj4+LSBHRU5fSU5UICgtc3RlcDEp KTsKPj4tIFJUWF9GUkFNRV9SRUxBVEVEX1AgKGVtaXRfaW5zbiAoaW5zbikp ID0gMTsKPj4tIHNpemUgLT0gc3RlcDE7Cj4+LSByaXNjdl9mb3JfZWFjaF9z YXZlZF9yZWcgKHNpemUsIHJpc2N2X3NhdmVfcmVnLCBmYWxzZSwgZmFsc2Up Owo+PisgaWYgKHN0ZXAxID4gMCkKPj4rIHsKPj4rIGluc24gPSBnZW5fYWRk M19pbnNuIChzdGFja19wb2ludGVyX3J0eCwKPj4rIHN0YWNrX3BvaW50ZXJf cnR4LAo+PisgR0VOX0lOVCAoLXN0ZXAxKSk7Cj4+KyBSVFhfRlJBTUVfUkVM QVRFRF9QIChlbWl0X2luc24gKGluc24pKSA9IDE7Cj4+KyBzaXplIC09IHN0 ZXAxOwo+PisgfQo+PisgcmlzY3ZfZm9yX2VhY2hfc2F2ZWRfcmVnIChzaXpl LCByaXNjdl9zYXZlX3JlZywKPj4rIGZhbHNlIC8qIGJvb2wgZXBpbG9ndWUg Ki8sIGZhbHNlIC8qIGJvb2wgbWF5YmVfZWhfcmV0dXJuICovKTsKPj4gfQo+ Pgo+PiBmcmFtZS0+bWFzayA9IG1hc2s7IC8qIFVuZG8gdGhlIGFib3ZlIGZp Yi4gKi8KPj5AQCAtNTQxMiw2ICs1ODEyLDggQEAgcmlzY3ZfZXhwYW5kX2Vw aWxvZ3VlIChpbnQgc3R5bGUpCj4+IHJ0eCByYSA9IGdlbl9ydHhfUkVHIChQ bW9kZSwgUkVUVVJOX0FERFJfUkVHTlVNKTsKPj4gcnR4IGluc247Cj4+Cj4+ KyBib29sIHVzZV96Y21wX3BvcCA9ICF1c2VfcmVzdG9yZV9saWJjYWxsICYm ICEoY3J0bC0+Y2FsbHNfZWhfcmV0dXJuKTsKPj4rCj4+IC8qIFdlIG5lZWQg dG8gYWRkIG1lbW9yeSBiYXJyaWVyIHRvIHByZXZlbnQgcmVhZCBmcm9tIGRl YWxsb2NhdGVkIHN0YWNrLiAqLwo+PiBib29sIG5lZWRfYmFycmllcl9wID0g a25vd25fbmUgKGdldF9mcmFtZV9zaXplICgpCj4+ICsgY2Z1bi0+bWFjaGlu ZS0+ZnJhbWUuYXJnX3BvaW50ZXJfb2Zmc2V0LCAwKTsKPj5AQCAtNTUzOCw2 ICs1OTQwLDE4IEBAIHJpc2N2X2V4cGFuZF9lcGlsb2d1ZSAoaW50IHN0eWxl KQo+PiBpZiAodXNlX3Jlc3RvcmVfbGliY2FsbCkKPj4gZnJhbWUtPm1hc2sg PSAwOyAvKiBUZW1wb3JhcmlseSBmaWIgdGhhdCB3ZSBuZWVkIG5vdCBzYXZl IEdQUnMuICovCj4+Cj4+KyBpZiAodXNlX3pjbXBfcG9wICYmIHJpc2N2X3Vz ZV9wdXNoX3BvcCAoZnJhbWUsIHN0ZXAyKSkKPj4rIHsKPj4rIC8qIEVtaXQg YSBiYXJyaWVyIHRvIHByZXZlbnQgbG9hZHMgZnJvbSBhIGRlYWxsb2NhdGVk IHN0YWNrLiAqLwo+PisgcmlzY3ZfZW1pdF9zdGFja190aWUgKCk7Cj4+KyBu ZWVkX2JhcnJpZXJfcCA9IGZhbHNlOwo+PisgcmlzY3ZfZW1pdF9wb3BfaW5z biAoZnJhbWUsIGZyYW1lLT50b3RhbF9zaXplLnRvX2NvbnN0YW50KCksIHN0 ZXAyKTsKPj4rIGZyYW1lLT5tYXNrICY9IH4gKChUQVJHRVRfWkNNUCAmJiBU QVJHRVRfUlZFKSA/Cj4+KyBSSVNDVl9aQ01QRV9QVVNIX1BPUF9NQVNLCj4+ KyA6IFJJU0NWX1pDRV9QVVNIX1BPUF9NQVNLKTsKPj4rIHN0ZXAyID0gMDsK Pj4rIH0KPj4rCj4+IC8qIFJlc3RvcmUgdGhlIHJlZ2lzdGVycy4gKi8KPj4g cmlzY3ZfZm9yX2VhY2hfc2F2ZWRfcmVnIChmcmFtZS0+dG90YWxfc2l6ZSAt IHN0ZXAyLCByaXNjdl9yZXN0b3JlX3JlZywKPj4gdHJ1ZSwgc3R5bGUgPT0g RVhDRVBUSU9OX1JFVFVSTik7Cj4+QEAgLTU1NTIsNiArNTk2Niw5IEBAIHJp c2N2X2V4cGFuZF9lcGlsb2d1ZSAoaW50IHN0eWxlKQo+PiBpZiAobmVlZF9i YXJyaWVyX3ApCj4+IHJpc2N2X2VtaXRfc3RhY2tfdGllICgpOwo+Pgo+Pisg aWYgKHVzZV96Y21wX3BvcCkKPj4rIGZyYW1lLT5tYXNrID0gbWFzazsKPj4r Cj4+IC8qIERlYWxsb2NhdGUgdGhlIGZpbmFsIGJpdCBvZiB0aGUgZnJhbWUu ICovCj4+IGlmIChzdGVwMiA+IDApCj4+IHsKPj5kaWZmIC0tZ2l0IGEvZ2Nj L2NvbmZpZy9yaXNjdi9yaXNjdi5oIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNj di5oCj4+aW5kZXggZDA1YjFkNTk4NTMuLjZlNmUzZWUyYzI1IDEwMDY0NAo+ Pi0tLSBhL2djYy9jb25maWcvcmlzY3YvcmlzY3YuaAo+PisrKyBiL2djYy9j b25maWcvcmlzY3YvcmlzY3YuaAo+PkBAIC0zODMsNiArMzgzLDcgQEAgQVNN X01JU0FfU1BFQwo+PiAjZGVmaW5lIEhBUkRfRlJBTUVfUE9JTlRFUl9SRUdO VU0gOAo+PiAjZGVmaW5lIFNUQUNLX1BPSU5URVJfUkVHTlVNIDIKPj4gI2Rl ZmluZSBUSFJFQURfUE9JTlRFUl9SRUdOVU0gNAo+PisjZGVmaW5lIFJFVFVS Tl9WQUxVRV9SRUdOVU0gMTAKPj4KPj4gLyogVGhlc2UgdHdvIHJlZ2lzdGVy cyBkb24ndCByZWFsbHkgZXhpc3Q6IHRoZXkgZ2V0IGVsaW1pbmF0ZWQgdG8g ZWl0aGVyCj4+IHRoZSBzdGFjayBvciBoYXJkIGZyYW1lIHBvaW50ZXIuICov Cj4+QEAgLTEwOTcsNCArMTA5OCw3IEBAIGV4dGVybiB2b2lkIHJpc2N2X3Jl bW92ZV91bm5lZWRlZF9zYXZlX3Jlc3RvcmVfY2FsbHMKPj4odm9pZCk7Cj4+ ICNkZWZpbmUgRFdBUkZfUkVHX1RPX1VOV0lORF9DT0xVTU4oUkVHTk8pIFwK Pj4gKChSRUdOTyA9PSBSSVNDVl9EV0FSRl9WTEVOQikgPyAoRklSU1RfUFNF VURPX1JFR0lTVEVSICsgMSkgOiBSRUdOTykKPj4KPj4rI2RlZmluZSBSSVND Vl9aQ0VfUFVTSF9QT1BfTUFTSyAweDBmZmMwMzAydQo+PisjZGVmaW5lIFJJ U0NWX1pDTVBFX1BVU0hfUE9QX01BU0sgMHgzMDJ1Cj4+Kwo+PiAjZW5kaWYg LyogISBHQ0NfUklTQ1ZfSCAqLwo+PmRpZmYgLS1naXQgYS9nY2MvY29uZmln L3Jpc2N2L3Jpc2N2Lm1kIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi5tZAo+ PmluZGV4IGJjMzg0ZDlhZWRmLi5iOWYyYTQyNmU0OCAxMDA2NDQKPj4tLS0g YS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2Lm1kCj4+KysrIGIvZ2NjL2NvbmZp Zy9yaXNjdi9yaXNjdi5tZAo+PkBAIC0xMDgsMTIgKzEwOCwxNCBAQAo+Pgo+ PiAoZGVmaW5lX2NvbnN0YW50cwo+PiBbKFJFVFVSTl9BRERSX1JFR05VTSAx KQo+PisgKFNQX1JFR05VTSAyKQo+PiAoR1BfUkVHTlVNIDMpCj4+IChUUF9S RUdOVU0gNCkKPj4gKFQwX1JFR05VTSA1KQo+PiAoVDFfUkVHTlVNIDYpCj4+ IChTMF9SRUdOVU0gOCkKPj4gKFMxX1JFR05VTSA5KQo+PisgKEEwX1JFR05V TSAxMCkKPj4gKFMyX1JFR05VTSAxOCkKPj4gKFMzX1JFR05VTSAxOSkKPj4g KFM0X1JFR05VTSAyMCkKPj5AQCAtMzE0NywzICszMTQ5LDQgQEAKPj4gKGlu Y2x1ZGUgInNpZml2ZS03Lm1kIikKPj4gKGluY2x1ZGUgInRoZWFkLm1kIikK Pj4gKGluY2x1ZGUgInZlY3Rvci5tZCIpCj4+KyhpbmNsdWRlICJ6Yy5tZCIp Cj4+ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3YvdC1yaXNjdiBiL2dj Yy9jb25maWcvcmlzY3YvdC1yaXNjdgo+PmluZGV4IDZlMzI2ZmM3ZTAyLi45 ZWY1MjIzMDZhNSAxMDA2NDQKPj4tLS0gYS9nY2MvY29uZmlnL3Jpc2N2L3Qt cmlzY3YKPj4rKysgYi9nY2MvY29uZmlnL3Jpc2N2L3QtcmlzY3YKPj5AQCAt OTAsNiArOTAsMTAgQEAgcmlzY3Ytdi5vOiAkKHNyY2RpcikvY29uZmlnL3Jp c2N2L3Jpc2N2LXYuY2MgXAo+PiAkKENPTVBJTEUpICQ8Cj4+ICQoUE9TVENP TVBJTEUpCj4+Cj4+K3Jpc2N2LXpjbXAtcG9wcmV0Lm86ICQoc3JjZGlyKS9j b25maWcvcmlzY3YvcmlzY3YtemNtcC1wb3ByZXQuY2MKPj4rICQoQ09NUElM RSkgJDwKPj4rICQoUE9TVENPTVBJTEUpCj4+Kwo+PiB0aGVhZC5vOiAkKHNy Y2RpcikvY29uZmlnL3Jpc2N2L3RoZWFkLmNjIFwKPj4gJChDT05GSUdfSCkg JChTWVNURU1fSCkgY29yZXR5cGVzLmggJChUQVJHRVRfSCkgYmFja2VuZC5o ICQoUlRMX0gpIFwKPj4gbWVtbW9kZWwuaCAkKEVNSVRfUlRMX0gpIHBvbHkt aW50Lmggb3V0cHV0LmgKPj5kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yaXNj di96Yy5tZCBiL2djYy9jb25maWcvcmlzY3YvemMubWQKPj5uZXcgZmlsZSBt b2RlIDEwMDY0NAo+PmluZGV4IDAwMDAwMDAwMDAwLi4zYWQzNGRhY2Q0OQo+ Pi0tLSAvZGV2L251bGwKPj4rKysgYi9nY2MvY29uZmlnL3Jpc2N2L3pjLm1k Cj4+QEAgLTAsMCArMSw0NyBAQAo+Pis7OyBNYWNoaW5lIGRlc2NyaXB0aW9u IGZvciBaQ0UgZXh0ZW5zaW9uLgo+Pis7OyBDb3B5cmlnaHQgKEMpIDIwMjEg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCj4+Kwo+Pis7OyBUaGlz IGZpbGUgaXMgcGFydCBvZiBHQ0MuCj4+Kwo+Pis7OyBHQ0MgaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQo+Pis7OyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQo+Pis7OyB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvciAo YXQgeW91ciBvcHRpb24pCj4+Kzs7IGFueSBsYXRlciB2ZXJzaW9uLgo+PisK Pj4rOzsgR0NDIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCj4+Kzs7IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4+Kzs7 IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gU2VlIHRoZQo+Pis7OyBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+PisKPj4rOzsgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKPj4rOzsgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBD T1BZSU5HMy4gSWYgbm90IHNlZQo+Pis7OyA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCj4+Kwo+PisoZGVmaW5lX2luc24gIipzdGFja19wdXNo PG1vZGU+Igo+PisgWyhtYXRjaF9wYXJhbGxlbCAwICJyaXNjdl9zdGFja19w dXNoX29wZXJhdGlvbiIKPj4rIFsoc2V0IChyZWc6WCBTUF9SRUdOVU0pIChw bHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPj4rIChtYXRjaF9vcGVyYW5kOlgg MSAiY29uc3RfaW50X29wZXJhbmQiICIiKSkpXSldCj4+KyAiVEFSR0VUX1pD TVAiCj4+KyAiY20ucHVzaFx0eyVMMH0sJTEiKQo+PisKPj4rKGRlZmluZV9p bnNuICIqc3RhY2tfcG9wPG1vZGU+Igo+PisgWyhtYXRjaF9wYXJhbGxlbCAw ICJyaXNjdl9zdGFja19wb3Bfb3BlcmF0aW9uIgo+PisgWyhzZXQgKG1hdGNo X29wZXJhbmQ6WCAxICJyZWdpc3Rlcl9vcGVyYW5kIiAiIikKPj4rIChtZW06 WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4+KyAobWF0Y2hfb3BlcmFu ZDpYIDIgImNvbnN0X2ludF9vcGVyYW5kIiAiIikpKSldKV0KPj4rICJUQVJH RVRfWkNNUCIKPj4rIHsKPj4rIHJldHVybiByaXNjdl9vdXRwdXRfcG9wcmV0 X3AgKG9wZXJhbmRzWzBdKSA/Cj4+KyAiY20ucG9wcmV0XHR7JUwwfSwlczAi IDoKPj4rICJjbS5wb3BcdHslTDB9LCVzMCI7Cj4+KyB9KQo+PisKPj4rKGRl ZmluZV9pbnNuICIqc3RhY2tfcG9wX3dpdGhfcmV0dXJuX3ZhbHVlPG1vZGU+ Igo+PisgWyhtYXRjaF9wYXJhbGxlbCAwICJyaXNjdl9zdGFja19wb3Bfb3Bl cmF0aW9uIgo+PisgWyhzZXQgKHJlZzpBTllJIEEwX1JFR05VTSkKPj4rICht YXRjaF9vcGVyYW5kOkFOWUkgMSAicG9wX3JldHVybl92YWx1ZV9jb25zdGFu dCIgIiIpKV0pXQo+PisgIlRBUkdFVF9aQ01QIgo+Pisgewo+PisgZ2NjX2Fz c2VydCAocmlzY3Zfb3V0cHV0X3BvcHJldF9wIChvcGVyYW5kc1swXSkpOwo+ PisgcmV0dXJuICJjbS5wb3ByZXR6XHR7JUwwfSwlczAiOwo+PisgfSkKPj4t LQo+PjIuMjUuMSAK ------=ALIBOUNDARY_15624_7fd339b97700_645df4f4_7f59b--