From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpbgau2.qq.com (smtpbgau2.qq.com [54.206.34.216]) by sourceware.org (Postfix) with ESMTPS id 5B1B43858D20 for ; Tue, 11 Apr 2023 12:13:05 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 5B1B43858D20 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: bizesmtp87t1681215176tkv0zz12 Received: from LAPTOP-EPITNQBU ( [58.60.1.20]) by bizesmtp.qq.com (ESMTP) with id ; Tue, 11 Apr 2023 20:12:54 +0800 (CST) X-QQ-SSF: 01400000000000F0O000000A0000000 X-QQ-FEAT: 90EFqYDyPxA/UPzlSS/P7mwvhO9KUR6nbCazXebswkutQbfUuLOma4pfGgRsT t76Yb40byw+6vW9PQik2B+YsYBx/7njvrGdtSj7odnRKNikBT8Z3/5AE+2TNzs0m9cFuWvk td70caVvnELAux4Ys4rtPgTbdo/OtFAbeAClNYQvxQ1E3d19/z8A3sEqrxN7VNDm+LDLOxj 7jfV7nQEIjUk9OCgKd3guYg9M0kAIczjJOFMd8hql69BtXCoZsaCp9W9q8uOqPoRHjHn863 rS0dwnEafuECTmKC7eO2aEAhdcMqRBQDD0t/ZqW69OB7vfWIyslCo5DtLP/Q09v5b6oE0w6 d9EyjwZOTt3M6Pc2V0+wVglJhietXFq6OcfLqGcZiqRbsLLTqDF97nf8obSe+Fd1Tks56lb Wd8w7r9R2tHS/PtDaiybBw7VYtRico4Q3p6Zs/4jhK9LAm6Jyrph1Q== X-QQ-GoodBg: 2 X-BIZMAIL-ID: 16834652275543413192 Date: Tue, 11 Apr 2023 20:12:56 +0800 From: "juzhe.zhong@rivai.ai" To: =?GB2312?B?1tO+09Xc?= , gcc-patches Cc: richard.sandiford , rguenther , jeffreyalaw Subject: Re: [PATCH] VECT: Add WHILE_LEN pattern for decrement IV support for auto-vectorization References: <20230407014741.139387-1-juzhe.zhong@rivai.ai> X-Priority: 3 X-GUID: 9DD96A9D-2135-4050-8358-3715408CD192 X-Has-Attach: no X-Mailer: Foxmail 7.2.16.188[cn] Mime-Version: 1.0 Message-ID: <63723855B0BF2130+2023041120125573846623@rivai.ai> Content-Type: multipart/alternative; boundary="----=_001_NextPart547710004306_=----" X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvr:qybglogicsvr7 X-Spam-Status: No, score=-9.9 required=5.0 tests=BAYES_00,GIT_PATCH_0,HTML_MESSAGE,KAM_DMARC_STATUS,RCVD_IN_BARRACUDACENTRAL,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,RCVD_IN_SORBS_WEB,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_NextPart547710004306_=---- Content-Type: text/plain; charset="GB2312" Content-Transfer-Encoding: base64 SGksIFJpY2hhcmRzLiANCktpbmRseSBQaW5nIHRoaXMgcGF0Y2guIA0KVGhp cyBpcyB0aGUgbW9zdCBpbXBvcnRhbnQgcGF0Y2ggZm9yIFJWViBhdXRvLXZl Y3Rvcml6YXRpb24gc3VwcG9ydC4NCkJvb3RzdHJhcGVkIG9uIFg4NiBoYXMg cGFzc2VkLg0KRmVlbCBmcmVlIHRvIGNvbW1lbnRzLg0KDQpUaGFua3MuDQoN Cg0KanV6aGUuemhvbmdAcml2YWkuYWkNCiANCkZyb206IGp1emhlLnpob25n DQpEYXRlOiAyMDIzLTA0LTA3IDA5OjQ3DQpUbzogZ2NjLXBhdGNoZXMNCkND OiByaWNoYXJkLnNhbmRpZm9yZDsgcmd1ZW50aGVyOyBqZWZmcmV5YWxhdzsg SnV6aGUtWmhvbmcNClN1YmplY3Q6IFtQQVRDSF0gVkVDVDogQWRkIFdISUxF X0xFTiBwYXR0ZXJuIGZvciBkZWNyZW1lbnQgSVYgc3VwcG9ydCBmb3IgYXV0 by12ZWN0b3JpemF0aW9uDQpGcm9tOiBKdXpoZS1aaG9uZyA8anV6aGUuemhv bmdAcml2YWkuYWk+DQogDQpUaGlzIHBhdGNoIGlzIHRvIGFkZCBXSElMRV9M RU4gcGF0dGVybi4NCkl0J3MgaW5zcGlyZWQgYnkgUlZWIElTQSBzaW1wbGUg InZ2YWRkaW50MzIucyIgZXhhbXBsZToNCmh0dHBzOi8vZ2l0aHViLmNvbS9y aXNjdi9yaXNjdi12LXNwZWMvYmxvYi9tYXN0ZXIvZXhhbXBsZS92dmFkZGlu dDMyLnMNCiANCk1vcmUgZGV0YWlscyBhcmUgaW4gInZlY3Rfc2V0X2xvb3Bf Y29udHJvbHNfYnlfd2hpbGVfbGVuIiBpbXBsZW1lbnRhdGlvbg0KYW5kIGNv bW1lbnRzLg0KIA0KQ29uc2lkZXIgc3VjaCBmb2xsb3dpbmcgY2FzZToNCiNk ZWZpbmUgTiAxNg0KaW50IHNyY1tOXTsNCmludCBkZXN0W05dOw0KIA0Kdm9p ZA0KZm9vIChpbnQgbikNCnsNCiAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBp KyspDQogICAgZGVzdFtpXSA9IHNyY1tpXTsNCn0NCiANCi1tYXJjaD1ydjY0 Z2N2IC1PMyAtLXBhcmFtIHJpc2N2LWF1dG92ZWMtcHJlZmVyZW5jZT1zY2Fs YWJsZSAtZm5vLXZlY3QtY29zdC1tb2RlbCAtZm5vLXRyZWUtbG9vcC1kaXN0 cmlidXRlLXBhdHRlcm5zOg0KIA0KZm9vOiAgICAgICAgDQogICAgICAgIGJs ZSAgICAgYTAsemVybywuTDENCiAgICAgICAgbHVpICAgICBhNCwlaGkoLkxB TkNIT1IwKQ0KICAgICAgICBhZGRpICAgIGE0LGE0LCVsbyguTEFOQ0hPUjAp DQogICAgICAgIGFkZGkgICAgYTMsYTQsNjQNCiAgICAgICAgY3NyciAgICBh Mix2bGVuYg0KLkwzOg0KICAgICAgICB2c2V0dmxpIGE1LGEwLGUzMixtMSx0 YSxtYQ0KICAgICAgICB2bGUzMi52IHYxLDAoYTQpDQogICAgICAgIHN1YiAg ICAgYTAsYTAsYTUNCiAgICAgICAgdnNlMzIudiB2MSwwKGEzKQ0KICAgICAg ICBhZGQgICAgIGE0LGE0LGEyDQogICAgICAgIGFkZCAgICAgYTMsYTMsYTIN CiAgICAgICAgYm5lICAgICBhMCx6ZXJvLC5MMw0KLkwxOg0KICAgICAgICBy ZXQNCiANCmdjYy9DaGFuZ2VMb2c6DQogDQogICAgICAgICogZG9jL21kLnRl eGk6IEFkZCBXSElMRV9MRU4gc3VwcG9ydC4NCiAgICAgICAgKiBpbnRlcm5h bC1mbi5jYyAod2hpbGVfbGVuX2RpcmVjdCk6IERpdHRvLg0KICAgICAgICAo ZXhwYW5kX3doaWxlX2xlbl9vcHRhYl9mbik6IERpdHRvLg0KICAgICAgICAo ZGlyZWN0X3doaWxlX2xlbl9vcHRhYl9zdXBwb3J0ZWRfcCk6IERpdHRvLg0K ICAgICAgICAqIGludGVybmFsLWZuLmRlZiAoV0hJTEVfTEVOKTogRGl0dG8u DQogICAgICAgICogb3B0YWJzLmRlZiAoT1BUQUJfRCk6IERpdHRvLg0KICAg ICAgICAqIHRyZWUtc3NhLWxvb3AtbWFuaXAuY2MgKGNyZWF0ZV9pdik6IERp dHRvLg0KICAgICAgICAqIHRyZWUtc3NhLWxvb3AtbWFuaXAuaCAoY3JlYXRl X2l2KTogRGl0dG8uDQogICAgICAgICogdHJlZS12ZWN0LWxvb3AtbWFuaXAu Y2MgKHZlY3Rfc2V0X2xvb3BfY29udHJvbHNfYnlfd2hpbGVfbGVuKTogRGl0 dG8uDQogICAgICAgICh2ZWN0X3NldF9sb29wX2NvbmRpdGlvbl9wYXJ0aWFs X3ZlY3RvcnMpOiBEaXR0by4NCiAgICAgICAgKiB0cmVlLXZlY3QtbG9vcC5j YyAodmVjdF9nZXRfbG9vcF9sZW4pOiBEaXR0by4NCiAgICAgICAgKiB0cmVl LXZlY3Qtc3RtdHMuY2MgKHZlY3Rvcml6YWJsZV9zdG9yZSk6IERpdHRvLg0K ICAgICAgICAodmVjdG9yaXphYmxlX2xvYWQpOiBEaXR0by4NCiAgICAgICAg KiB0cmVlLXZlY3Rvcml6ZXIuaCAodmVjdF9nZXRfbG9vcF9sZW4pOiBEaXR0 by4NCiANCi0tLQ0KZ2NjL2RvYy9tZC50ZXhpICAgICAgICAgICAgIHwgIDE0 ICsrKw0KZ2NjL2ludGVybmFsLWZuLmNjICAgICAgICAgIHwgIDI5ICsrKysr Kw0KZ2NjL2ludGVybmFsLWZuLmRlZiAgICAgICAgIHwgICAxICsNCmdjYy9v cHRhYnMuZGVmICAgICAgICAgICAgICB8ICAgMSArDQpnY2MvdHJlZS1zc2Et bG9vcC1tYW5pcC5jYyAgfCAgIDQgKy0NCmdjYy90cmVlLXNzYS1sb29wLW1h bmlwLmggICB8ICAgMiArLQ0KZ2NjL3RyZWUtdmVjdC1sb29wLW1hbmlwLmNj IHwgMTg2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQ0K Z2NjL3RyZWUtdmVjdC1sb29wLmNjICAgICAgIHwgIDM1ICsrKysrLS0NCmdj Yy90cmVlLXZlY3Qtc3RtdHMuY2MgICAgICB8ICAgOSArLQ0KZ2NjL3RyZWUt dmVjdG9yaXplci5oICAgICAgIHwgICA0ICstDQoxMCBmaWxlcyBjaGFuZ2Vk LCAyNjQgaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pDQogDQpkaWZm IC0tZ2l0IGEvZ2NjL2RvYy9tZC50ZXhpIGIvZ2NjL2RvYy9tZC50ZXhpDQpp bmRleCA4ZTMxMTM1OTlmZC4uNzIxNzhhYjAxNGMgMTAwNjQ0DQotLS0gYS9n Y2MvZG9jL21kLnRleGkNCisrKyBiL2djYy9kb2MvbWQudGV4aQ0KQEAgLTQ5 NjUsNiArNDk2NSwyMCBAQCBmb3IgKGkgPSAxOyBpIDwgb3BlcmFuZDM7IGkr KykNCiAgIG9wZXJhbmQwW2ldID0gb3BlcmFuZDBbaSAtIDFdICYmIChvcGVy YW5kMSArIGkgPCBvcGVyYW5kMik7DQpAZW5kIHNtYWxsZXhhbXBsZQ0KK0Bj aW5kZXggQGNvZGV7d2hpbGVfbGVuQHZhcnttfUB2YXJ7bn19IGluc3RydWN0 aW9uIHBhdHRlcm4NCitAaXRlbSBAY29kZXt3aGlsZV9sZW5AdmFye219QHZh cntufX0NCitTZXQgb3BlcmFuZCAwIHRvIHRoZSBudW1iZXIgb2YgYWN0aXZl IGVsZW1lbnRzIGluIHZlY3RvciB3aWxsIGJlIHVwZGF0ZWQgdmFsdWUuDQor b3BlcmFuZCAxIGlzIHRoZSB0b3RhbCBlbGVtZW50cyBuZWVkIHRvIGJlIHVw ZGF0ZWQgdmFsdWUuDQorb3BlcmFuZCAyIGlzIHRoZSB2ZWN0b3JpemF0aW9u IGZhY3Rvci4NCitUaGUgb3BlcmF0aW9uIGlzIGVxdWl2YWxlbnQgdG86DQor DQorQHNtYWxsZXhhbXBsZQ0KK29wZXJhbmQwID0gTUlOIChvcGVyYW5kMSwg b3BlcmFuZDIpOw0KK29wZXJhbmQyIGNhbiBiZSBjb25zdF9wb2x5X2ludCBv ciBwb2x5X2ludCByZWxhdGVkIHRvIHZlY3RvciBtb2RlIHNpemUuDQorU29t ZSB0YXJnZXQgbGlrZSBSSVNDLVYgaGFzIGEgc3RhbmRhbG9uZSBpbnN0cnVj dGlvbiB0byBnZXQgTUlOIChuLCBNT0RFIFNJWkUpIHNvDQordGhhdCB3ZSBj YW4gcmVkdWNlIGEgdXNlIG9mIGdlbmVyYWwgcHVycG9zZSByZWdpc3Rlci4N CitAZW5kIHNtYWxsZXhhbXBsZQ0KKw0KQGNpbmRleCBAY29kZXtjaGVja19y YXdfcHRyc0B2YXJ7bX19IGluc3RydWN0aW9uIHBhdHRlcm4NCkBpdGVtIEBz YW1we2NoZWNrX3Jhd19wdHJzQHZhcnttfX0NCkNoZWNrIHdoZXRoZXIsIGdp dmVuIHR3byBwb2ludGVycyBAdmFye2F9IGFuZCBAdmFye2J9IGFuZCBhIGxl bmd0aCBAdmFye2xlbn0sDQpkaWZmIC0tZ2l0IGEvZ2NjL2ludGVybmFsLWZu LmNjIGIvZ2NjL2ludGVybmFsLWZuLmNjDQppbmRleCA2ZTgxZGMwNWUwZS4u NWY0NGRlZjkwZDMgMTAwNjQ0DQotLS0gYS9nY2MvaW50ZXJuYWwtZm4uY2MN CisrKyBiL2djYy9pbnRlcm5hbC1mbi5jYw0KQEAgLTEyNyw2ICsxMjcsNyBA QCBpbml0X2ludGVybmFsX2ZucyAoKQ0KI2RlZmluZSBjb25kX2JpbmFyeV9k aXJlY3QgeyAxLCAxLCB0cnVlIH0NCiNkZWZpbmUgY29uZF90ZXJuYXJ5X2Rp cmVjdCB7IDEsIDEsIHRydWUgfQ0KI2RlZmluZSB3aGlsZV9kaXJlY3QgeyAw LCAyLCBmYWxzZSB9DQorI2RlZmluZSB3aGlsZV9sZW5fZGlyZWN0IHsgMCwg MCwgZmFsc2UgfQ0KI2RlZmluZSBmb2xkX2V4dHJhY3RfZGlyZWN0IHsgMiwg MiwgZmFsc2UgfQ0KI2RlZmluZSBmb2xkX2xlZnRfZGlyZWN0IHsgMSwgMSwg ZmFsc2UgfQ0KI2RlZmluZSBtYXNrX2ZvbGRfbGVmdF9kaXJlY3QgeyAxLCAx LCBmYWxzZSB9DQpAQCAtMzcwMiw2ICszNzAzLDMzIEBAIGV4cGFuZF93aGls ZV9vcHRhYl9mbiAoaW50ZXJuYWxfZm4sIGdjYWxsICpzdG10LCBjb252ZXJ0 X29wdGFiIG9wdGFiKQ0KICAgICBlbWl0X21vdmVfaW5zbiAobGhzX3J0eCwg b3BzWzBdLnZhbHVlKTsNCn0NCisvKiBFeHBhbmQgV0hJTEVfTEVOIGNhbGwg U1RNVCB1c2luZyBvcHRhYiBPUFRBQi4gICovDQorc3RhdGljIHZvaWQNCitl eHBhbmRfd2hpbGVfbGVuX29wdGFiX2ZuIChpbnRlcm5hbF9mbiwgZ2NhbGwg KnN0bXQsIGNvbnZlcnRfb3B0YWIgb3B0YWIpDQorew0KKyAgZXhwYW5kX29w ZXJhbmQgb3BzWzNdOw0KKyAgdHJlZSByaHNfdHlwZVsyXTsNCisNCisgIHRy ZWUgbGhzID0gZ2ltcGxlX2NhbGxfbGhzIChzdG10KTsNCisgIHRyZWUgbGhz X3R5cGUgPSBUUkVFX1RZUEUgKGxocyk7DQorICBydHggbGhzX3J0eCA9IGV4 cGFuZF9leHByIChsaHMsIE5VTExfUlRYLCBWT0lEbW9kZSwgRVhQQU5EX1dS SVRFKTsNCisgIGNyZWF0ZV9vdXRwdXRfb3BlcmFuZCAoJm9wc1swXSwgbGhz X3J0eCwgVFlQRV9NT0RFIChsaHNfdHlwZSkpOw0KKw0KKyAgZm9yICh1bnNp Z25lZCBpbnQgaSA9IDA7IGkgPCBnaW1wbGVfY2FsbF9udW1fYXJncyAoc3Rt dCk7ICsraSkNCisgICAgew0KKyAgICAgIHRyZWUgcmhzID0gZ2ltcGxlX2Nh bGxfYXJnIChzdG10LCBpKTsNCisgICAgICByaHNfdHlwZVtpXSA9IFRSRUVf VFlQRSAocmhzKTsNCisgICAgICBydHggcmhzX3J0eCA9IGV4cGFuZF9ub3Jt YWwgKHJocyk7DQorICAgICAgY3JlYXRlX2lucHV0X29wZXJhbmQgKCZvcHNb aSArIDFdLCByaHNfcnR4LCBUWVBFX01PREUgKHJoc190eXBlW2ldKSk7DQor ICAgIH0NCisNCisgIGluc25fY29kZSBpY29kZSA9IGRpcmVjdF9vcHRhYl9o YW5kbGVyIChvcHRhYiwgVFlQRV9NT0RFIChyaHNfdHlwZVswXSkpOw0KKw0K KyAgZXhwYW5kX2luc24gKGljb2RlLCAzLCBvcHMpOw0KKyAgaWYgKCFydHhf ZXF1YWxfcCAobGhzX3J0eCwgb3BzWzBdLnZhbHVlKSkNCisgICAgZW1pdF9t b3ZlX2luc24gKGxoc19ydHgsIG9wc1swXS52YWx1ZSk7DQorfQ0KKw0KLyog RXhwYW5kIGEgY2FsbCB0byBhIGNvbnZlcnQtbGlrZSBvcHRhYiB1c2luZyB0 aGUgb3BlcmFuZHMgaW4gU1RNVC4NCiAgICBGTiBoYXMgYSBzaW5nbGUgb3V0 cHV0IG9wZXJhbmQgYW5kIE5BUkdTIGlucHV0IG9wZXJhbmRzLiAgKi8NCkBA IC0zODQzLDYgKzM4NzEsNyBAQCBtdWx0aV92ZWN0b3Jfb3B0YWJfc3VwcG9y dGVkX3AgKGNvbnZlcnRfb3B0YWIgb3B0YWIsIHRyZWVfcGFpciB0eXBlcywN CiNkZWZpbmUgZGlyZWN0X3NjYXR0ZXJfc3RvcmVfb3B0YWJfc3VwcG9ydGVk X3AgY29udmVydF9vcHRhYl9zdXBwb3J0ZWRfcA0KI2RlZmluZSBkaXJlY3Rf bGVuX3N0b3JlX29wdGFiX3N1cHBvcnRlZF9wIGRpcmVjdF9vcHRhYl9zdXBw b3J0ZWRfcA0KI2RlZmluZSBkaXJlY3Rfd2hpbGVfb3B0YWJfc3VwcG9ydGVk X3AgY29udmVydF9vcHRhYl9zdXBwb3J0ZWRfcA0KKyNkZWZpbmUgZGlyZWN0 X3doaWxlX2xlbl9vcHRhYl9zdXBwb3J0ZWRfcCBkaXJlY3Rfb3B0YWJfc3Vw cG9ydGVkX3ANCiNkZWZpbmUgZGlyZWN0X2ZvbGRfZXh0cmFjdF9vcHRhYl9z dXBwb3J0ZWRfcCBkaXJlY3Rfb3B0YWJfc3VwcG9ydGVkX3ANCiNkZWZpbmUg ZGlyZWN0X2ZvbGRfbGVmdF9vcHRhYl9zdXBwb3J0ZWRfcCBkaXJlY3Rfb3B0 YWJfc3VwcG9ydGVkX3ANCiNkZWZpbmUgZGlyZWN0X21hc2tfZm9sZF9sZWZ0 X29wdGFiX3N1cHBvcnRlZF9wIGRpcmVjdF9vcHRhYl9zdXBwb3J0ZWRfcA0K ZGlmZiAtLWdpdCBhL2djYy9pbnRlcm5hbC1mbi5kZWYgYi9nY2MvaW50ZXJu YWwtZm4uZGVmDQppbmRleCA3ZmU3NDJjMmFlNy4uM2E5MzNhYmZmNWQgMTAw NjQ0DQotLS0gYS9nY2MvaW50ZXJuYWwtZm4uZGVmDQorKysgYi9nY2MvaW50 ZXJuYWwtZm4uZGVmDQpAQCAtMTUzLDYgKzE1Myw3IEBAIERFRl9JTlRFUk5B TF9PUFRBQl9GTiAoVkVDX1NFVCwgMCwgdmVjX3NldCwgdmVjX3NldCkNCkRF Rl9JTlRFUk5BTF9PUFRBQl9GTiAoTEVOX1NUT1JFLCAwLCBsZW5fc3RvcmUs IGxlbl9zdG9yZSkNCkRFRl9JTlRFUk5BTF9PUFRBQl9GTiAoV0hJTEVfVUxU LCBFQ0ZfQ09OU1QgfCBFQ0ZfTk9USFJPVywgd2hpbGVfdWx0LCB3aGlsZSkN CitERUZfSU5URVJOQUxfT1BUQUJfRk4gKFdISUxFX0xFTiwgRUNGX0NPTlNU IHwgRUNGX05PVEhST1csIHdoaWxlX2xlbiwgd2hpbGVfbGVuKQ0KREVGX0lO VEVSTkFMX09QVEFCX0ZOIChDSEVDS19SQVdfUFRSUywgRUNGX0NPTlNUIHwg RUNGX05PVEhST1csDQogICAgICAgY2hlY2tfcmF3X3B0cnMsIGNoZWNrX3B0 cnMpDQpERUZfSU5URVJOQUxfT1BUQUJfRk4gKENIRUNLX1dBUl9QVFJTLCBF Q0ZfQ09OU1QgfCBFQ0ZfTk9USFJPVywNCmRpZmYgLS1naXQgYS9nY2Mvb3B0 YWJzLmRlZiBiL2djYy9vcHRhYnMuZGVmDQppbmRleCA2OTVmNTkxMWIzMC4u ZjU5MzhiZDJjMjQgMTAwNjQ0DQotLS0gYS9nY2Mvb3B0YWJzLmRlZg0KKysr IGIvZ2NjL29wdGFicy5kZWYNCkBAIC00NzYsMyArNDc2LDQgQEAgT1BUQUJf REMgKHZlY19zZXJpZXNfb3B0YWIsICJ2ZWNfc2VyaWVzJGEiLCBWRUNfU0VS SUVTKQ0KT1BUQUJfRCAodmVjX3NobF9pbnNlcnRfb3B0YWIsICJ2ZWNfc2hs X2luc2VydF8kYSIpDQpPUFRBQl9EIChsZW5fbG9hZF9vcHRhYiwgImxlbl9s b2FkXyRhIikNCk9QVEFCX0QgKGxlbl9zdG9yZV9vcHRhYiwgImxlbl9zdG9y ZV8kYSIpDQorT1BUQUJfRCAod2hpbGVfbGVuX29wdGFiLCAid2hpbGVfbGVu JGEiKQ0KZGlmZiAtLWdpdCBhL2djYy90cmVlLXNzYS1sb29wLW1hbmlwLmNj IGIvZ2NjL3RyZWUtc3NhLWxvb3AtbWFuaXAuY2MNCmluZGV4IDA5YWNjMWM5 NGNjLi5jZGJmMjgwZTI0OSAxMDA2NDQNCi0tLSBhL2djYy90cmVlLXNzYS1s b29wLW1hbmlwLmNjDQorKysgYi9nY2MvdHJlZS1zc2EtbG9vcC1tYW5pcC5j Yw0KQEAgLTU5LDE0ICs1OSwxNCBAQCBzdGF0aWMgYml0bWFwX29ic3RhY2sg bG9vcF9yZW5hbWVyX29ic3RhY2s7DQp2b2lkDQpjcmVhdGVfaXYgKHRyZWUg YmFzZSwgdHJlZSBzdGVwLCB0cmVlIHZhciwgY2xhc3MgbG9vcCAqbG9vcCwN CiAgIGdpbXBsZV9zdG10X2l0ZXJhdG9yICppbmNyX3BvcywgYm9vbCBhZnRl ciwNCi0gICAgdHJlZSAqdmFyX2JlZm9yZSwgdHJlZSAqdmFyX2FmdGVyKQ0K KyAgICB0cmVlICp2YXJfYmVmb3JlLCB0cmVlICp2YXJfYWZ0ZXIsIGVudW0g dHJlZV9jb2RlIGNvZGUpDQp7DQogICBnYXNzaWduICpzdG10Ow0KICAgZ3Bo aSAqcGhpOw0KICAgdHJlZSBpbml0aWFsLCBzdGVwMTsNCiAgIGdpbXBsZV9z ZXEgc3RtdHM7DQogICB0cmVlIHZiLCB2YTsNCi0gIGVudW0gdHJlZV9jb2Rl IGluY3Jfb3AgPSBQTFVTX0VYUFI7DQorICBlbnVtIHRyZWVfY29kZSBpbmNy X29wID0gY29kZTsNCiAgIGVkZ2UgcGUgPSBsb29wX3ByZWhlYWRlcl9lZGdl IChsb29wKTsNCiAgIGlmICh2YXIgIT0gTlVMTF9UUkVFKQ0KZGlmZiAtLWdp dCBhL2djYy90cmVlLXNzYS1sb29wLW1hbmlwLmggYi9nY2MvdHJlZS1zc2Et bG9vcC1tYW5pcC5oDQppbmRleCBkNDkyNzNhMzk4Ny4uZGE3NTUzMjBhM2Eg MTAwNjQ0DQotLS0gYS9nY2MvdHJlZS1zc2EtbG9vcC1tYW5pcC5oDQorKysg Yi9nY2MvdHJlZS1zc2EtbG9vcC1tYW5pcC5oDQpAQCAtMjMsNyArMjMsNyBA QCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYg bm90IHNlZQ0KdHlwZWRlZiB2b2lkICgqdHJhbnNmb3JtX2NhbGxiYWNrKShj bGFzcyBsb29wICosIHZvaWQgKik7DQpleHRlcm4gdm9pZCBjcmVhdGVfaXYg KHRyZWUsIHRyZWUsIHRyZWUsIGNsYXNzIGxvb3AgKiwgZ2ltcGxlX3N0bXRf aXRlcmF0b3IgKiwNCi0gICAgICAgIGJvb2wsIHRyZWUgKiwgdHJlZSAqKTsN CisgICAgICAgIGJvb2wsIHRyZWUgKiwgdHJlZSAqLCBlbnVtIHRyZWVfY29k ZSA9IFBMVVNfRVhQUik7DQpleHRlcm4gdm9pZCByZXdyaXRlX2ludG9fbG9v cF9jbG9zZWRfc3NhIChiaXRtYXAsIHVuc2lnbmVkKTsNCmV4dGVybiB2b2lk IHZlcmlmeV9sb29wX2Nsb3NlZF9zc2EgKGJvb2wsIGNsYXNzIGxvb3AgKiA9 IE5VTEwpOw0KZGlmZiAtLWdpdCBhL2djYy90cmVlLXZlY3QtbG9vcC1tYW5p cC5jYyBiL2djYy90cmVlLXZlY3QtbG9vcC1tYW5pcC5jYw0KaW5kZXggZjYw ZmE1MGU4ZjQuLmYzY2Q2YzUxZDJlIDEwMDY0NA0KLS0tIGEvZ2NjL3RyZWUt dmVjdC1sb29wLW1hbmlwLmNjDQorKysgYi9nY2MvdHJlZS12ZWN0LWxvb3At bWFuaXAuY2MNCkBAIC02ODIsNiArNjgyLDE3MyBAQCB2ZWN0X3NldF9sb29w X2NvbnRyb2xzX2RpcmVjdGx5IChjbGFzcyBsb29wICpsb29wLCBsb29wX3Zl Y19pbmZvIGxvb3BfdmluZm8sDQogICByZXR1cm4gbmV4dF9jdHJsOw0KfQ0K Ky8qIEhlbHBlciBmb3IgdmVjdF9zZXRfbG9vcF9jb25kaXRpb25fcGFydGlh bF92ZWN0b3JzLiAgR2VuZXJhdGUgZGVmaW5pdGlvbnMNCisgICBmb3IgYWxs IHRoZSByZ3JvdXAgY29udHJvbHMgaW4gUkdDIGFuZCByZXR1cm4gYSBjb250 cm9sIHRoYXQgaXMgbm9uemVybw0KKyAgIHdoZW4gdGhlIGxvb3AgbmVlZHMg dG8gaXRlcmF0ZS4gIEFkZCBhbnkgbmV3IHByZWhlYWRlciBzdGF0ZW1lbnRz IHRvDQorICAgUFJFSEVBREVSX1NFUS4gIFVzZSBMT09QX0NPTkRfR1NJIHRv IGluc2VydCBjb2RlIGJlZm9yZSB0aGUgZXhpdCBnY29uZC4NCisNCisgICBS R0MgYmVsb25ncyB0byBsb29wIExPT1AuICBUaGUgbG9vcCBvcmlnaW5hbGx5 IGl0ZXJhdGVkIE5JVEVSUw0KKyAgIHRpbWVzIGFuZCBoYXMgYmVlbiB2ZWN0 b3JpemVkIGFjY29yZGluZyB0byBMT09QX1ZJTkZPLg0KKw0KKyAgIFVubGlr ZSB2ZWN0X3NldF9sb29wX2NvbnRyb2xzX2RpcmVjdGx5IHdoaWNoIGlzIGl0 ZXJhdGluZyBmcm9tIDAtYmFzZWQgSVYNCisgICB0byBURVNUX0xJTUlUIC0g Ymlhcy4NCisNCisgICBJbiB2ZWN0X3NldF9sb29wX2NvbnRyb2xzX2J5X3do aWxlX2xlbiwgd2UgYXJlIGl0ZXJhdGluZyBmcm9tIHN0YXJ0IGF0DQorICAg SVYgPSBURVNUX0xJTUlUIC0gYmlhcyBhbmQga2VlcCBzdWJ0cmFjdCBJViBi eSB0aGUgbGVuZ3RoIGNhbGN1bGF0ZWQgYnkNCisgICBJRk5fV0hJTEVfTEVO IHBhdHRlcm4uDQorDQorICAgTm90ZTogdGhlIGNvc3Qgb2YgdGhlIGNvZGUg Z2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gaXMgbW9kZWxlZA0KKyAgIGJ5 IHZlY3RfZXN0aW1hdGVfbWluX3Byb2ZpdGFibGVfaXRlcnMsIHNvIGNoYW5n ZXMgaGVyZSBtYXkgbmVlZA0KKyAgIGNvcnJlc3BvbmRpbmcgY2hhbmdlcyB0 aGVyZS4NCisNCisgICAxLiBTaW5nbGUgcmdyb3VwLCB0aGUgR2ltcGxlIElS IHNob3VsZCBiZToNCisNCisgPGJiIDM+DQorIF8xOSA9ICh1bnNpZ25lZCBs b25nKSBuXzUoRCk7DQorIC4uLg0KKw0KKyA8YmIgND46DQorIC4uLg0KKyAj IGl2dG1wXzIwID0gUEhJIDxpdnRtcF8yMSg0KSwgXzE5KDMpPg0KKyAuLi4N CisgXzIyID0gLldISUxFX0xFTiAoaXZ0bXBfMjAsIHZmKTsNCisgLi4uDQor IHZlY3RvciBzdGF0ZW1lbnQgKHVzZSBfMjIpOw0KKyAuLi4NCisgaXZ0bXBf MjEgPSBpdnRtcF8yMCAtIF8yMjsNCisgLi4uDQorIGlmIChpdnRtcF8yMSAh PSAwKQ0KKyAgIGdvdG8gPGJiIDQ+OyBbNzUuMDAlXQ0KKyBlbHNlDQorICAg Z290byA8YmIgNT47IFsyNS4wMCVdDQorDQorIDxiYiA1Pg0KKyByZXR1cm47 DQorDQorICAgTm90ZTogSUZOX1dISUxFX0xFTiB3aWxsIGd1YXJhbnRlZSAi aXZ0bXBfMjEgPSBpdnRtcF8yMCAtIF8yMiIgbmV2ZXINCisgICB1bmRlcmZs b3cgMC4NCisNCisgICAyLiBNdWx0aXBsZSByZ3JvdXAsIHRoZSBHaW1wbGUg SVIgc2hvdWxkIGJlOg0KKw0KKyA8YmIgMz4NCisgXzcwID0gKHVuc2lnbmVk IGxvbmcpIGJuZC43XzUyOw0KKyBfNzEgPSBfNzAgKiAyOw0KKyBfNzIgPSBN QVhfRVhQUiA8XzcxLCA0PjsNCisgXzczID0gXzcyICsgMTg0NDY3NDQwNzM3 MDk1NTE2MTI7DQorIC4uLg0KKw0KKyA8YmIgND46DQorIC4uLg0KKyAjIGl2 dG1wXzc0ID0gUEhJIDxpdnRtcF83NSg2KSwgXzczKDEyKT4NCisgIyBpdnRt cF83NyA9IFBISSA8aXZ0bXBfNzgoNiksIF83MSgxMik+DQorIF83NiA9IC5X SElMRV9MRU4gKGl2dG1wXzc0LCB2ZiAqIG5pdGVtc19wZXJfY3RybCk7DQor IF83OSA9IC5XSElMRV9MRU4gKGl2dG1wXzc3LCB2ZiAqIG5pdGVtc19wZXJf Y3RybCk7DQorIC4uLg0KKyB2ZWN0b3Igc3RhdGVtZW50ICh1c2UgXzc5KTsN CisgLi4uDQorIHZlY3RvciBzdGF0ZW1lbnQgKHVzZSBfNzYpOw0KKyAuLi4N CisgXzY1ID0gXzc5IC8gMjsNCisgdmVjdG9yIHN0YXRlbWVudCAodXNlIF82 NSk7DQorIC4uLg0KKyBfNjggPSBfNzYgLyAyOw0KKyB2ZWN0b3Igc3RhdGVt ZW50ICh1c2UgXzY4KTsNCisgLi4uDQorIGl2dG1wXzc4ID0gaXZ0bXBfNzcg LSBfNzk7DQorIGl2dG1wXzc1ID0gaXZ0bXBfNzQgLSBfNzY7DQorIC4uLg0K KyBpZiAoaXZ0bXBfNzggIT0gMCkNCisgICBnb3RvIDxiYiA0PjsgWzc1LjAw JV0NCisgZWxzZQ0KKyAgIGdvdG8gPGJiIDU+OyBbMjUuMDAlXQ0KKw0KKyA8 YmIgNT4NCisgcmV0dXJuOw0KKw0KKyovDQorDQorc3RhdGljIHRyZWUNCit2 ZWN0X3NldF9sb29wX2NvbnRyb2xzX2J5X3doaWxlX2xlbiAoY2xhc3MgbG9v cCAqbG9vcCwgbG9vcF92ZWNfaW5mbyBsb29wX3ZpbmZvLA0KKyAgICAgIGdp bXBsZV9zZXEgKnByZWhlYWRlcl9zZXEsDQorICAgICAgZ2ltcGxlX3NlcSAq aGVhZGVyX3NlcSwNCisgICAgICByZ3JvdXBfY29udHJvbHMgKnJnYywgdHJl ZSBuaXRlcnMpDQorew0KKyAgdHJlZSBjb21wYXJlX3R5cGUgPSBMT09QX1ZJ TkZPX1JHUk9VUF9DT01QQVJFX1RZUEUgKGxvb3BfdmluZm8pOw0KKyAgdHJl ZSBpdl90eXBlID0gTE9PUF9WSU5GT19SR1JPVVBfSVZfVFlQRSAobG9vcF92 aW5mbyk7DQorICAvKiBXZSBhcmUgbm90IGFsbG93aW5nIG1hc2tlZCBhcHBy b2FjaCBpbiBXSElMRV9MRU4uICAqLw0KKyAgZ2NjX2Fzc2VydCAoIUxPT1Bf VklORk9fRlVMTFlfTUFTS0VEX1AgKGxvb3BfdmluZm8pKTsNCisNCisgIHRy ZWUgY3RybF90eXBlID0gcmdjLT50eXBlOw0KKyAgdW5zaWduZWQgaW50IG5p dGVtc19wZXJfaXRlciA9IHJnYy0+bWF4X25zY2FsYXJzX3Blcl9pdGVyICog cmdjLT5mYWN0b3I7DQorICBwb2x5X3VpbnQ2NCBuaXRlbXNfcGVyX2N0cmwg PSBUWVBFX1ZFQ1RPUl9TVUJQQVJUUyAoY3RybF90eXBlKSAqIHJnYy0+ZmFj dG9yOw0KKyAgcG9seV91aW50NjQgdmYgPSBMT09QX1ZJTkZPX1ZFQ1RfRkFD VE9SIChsb29wX3ZpbmZvKTsNCisNCisgIC8qIENhbGN1bGF0ZSB0aGUgbWF4 aW11bSBudW1iZXIgb2YgaXRlbSB2YWx1ZXMgdGhhdCB0aGUgcmdyb3VwDQor ICAgICBoYW5kbGVzIGluIHRvdGFsLCB0aGUgbnVtYmVyIHRoYXQgaXQgaGFu ZGxlcyBmb3IgZWFjaCBpdGVyYXRpb24NCisgICAgIG9mIHRoZSB2ZWN0b3Ig bG9vcC4gICovDQorICB0cmVlIG5pdGVtc190b3RhbCA9IG5pdGVyczsNCisg IGlmIChuaXRlbXNfcGVyX2l0ZXIgIT0gMSkNCisgICAgew0KKyAgICAgIC8q IFdlIGNoZWNrZWQgYmVmb3JlIHNldHRpbmcgTE9PUF9WSU5GT19VU0lOR19Q QVJUSUFMX1ZFQ1RPUlNfUCB0aGF0DQorIHRoZXNlIG11bHRpcGxpY2F0aW9u cyBkb24ndCBvdmVyZmxvdy4gICovDQorICAgICAgdHJlZSBjb21wYXJlX2Zh Y3RvciA9IGJ1aWxkX2ludF9jc3QgKGNvbXBhcmVfdHlwZSwgbml0ZW1zX3Bl cl9pdGVyKTsNCisgICAgICBuaXRlbXNfdG90YWwgPSBnaW1wbGVfYnVpbGQg KHByZWhlYWRlcl9zZXEsIE1VTFRfRVhQUiwgY29tcGFyZV90eXBlLA0KKyAg ICBuaXRlbXNfdG90YWwsIGNvbXBhcmVfZmFjdG9yKTsNCisgICAgfQ0KKw0K KyAgLyogQ29udmVydCB0aGUgY29tcGFyaXNvbiB2YWx1ZSB0byB0aGUgSVYg dHlwZSAoZWl0aGVyIGEgbm8tb3Agb3INCisgICAgIGEgcHJvbW90aW9uKS4g ICovDQorICBuaXRlbXNfdG90YWwgPSBnaW1wbGVfY29udmVydCAocHJlaGVh ZGVyX3NlcSwgaXZfdHlwZSwgbml0ZW1zX3RvdGFsKTsNCisNCisgIC8qIENy ZWF0ZSBhbiBpbmR1Y3Rpb24gdmFyaWFibGUgdGhhdCBjb3VudHMgdGhlIG51 bWJlciBvZiBpdGVtcw0KKyAgICAgcHJvY2Vzc2VkLiAgKi8NCisgIHRyZWUg aW5kZXhfYmVmb3JlX2luY3IsIGluZGV4X2FmdGVyX2luY3I7DQorICBnaW1w bGVfc3RtdF9pdGVyYXRvciBpbmNyX2dzaTsNCisgIGJvb2wgaW5zZXJ0X2Fm dGVyOw0KKyAgc3RhbmRhcmRfaXZfaW5jcmVtZW50X3Bvc2l0aW9uIChsb29w LCAmaW5jcl9nc2ksICZpbnNlcnRfYWZ0ZXIpOw0KKw0KKyAgLyogVGVzdCB0 aGUgZGVjcmVtZW50ZWQgSVYsIHdoaWNoIHdpbGwgbmV2ZXIgdW5kZXJmbG93 IDAgc2luY2Ugd2UgaGF2ZQ0KKyAgICAgSUZOX1dISUxFX0xFTiB0byBndXJh bnRlZSB0aGF0LiAgKi8NCisgIHRyZWUgdGVzdF9saW1pdCA9IG5pdGVtc190 b3RhbDsNCisNCisgIC8qIFByb3ZpZGUgYSBkZWZpbml0aW9uIG9mIGVhY2gg Y29udHJvbCBpbiB0aGUgZ3JvdXAuICAqLw0KKyAgdHJlZSBjdHJsOw0KKyAg dW5zaWduZWQgaW50IGk7DQorICBGT1JfRUFDSF9WRUNfRUxUX1JFVkVSU0Ug KHJnYy0+Y29udHJvbHMsIGksIGN0cmwpDQorICAgIHsNCisgICAgICAvKiBQ cmV2aW91cyBjb250cm9scyB3aWxsIGNvdmVyIEJJQVMgaXRlbXMuICBUaGlz IGNvbnRyb2wgY292ZXJzIHRoZQ0KKyBuZXh0IGJhdGNoLiAgKi8NCisgICAg ICBwb2x5X3VpbnQ2NCBiaWFzID0gbml0ZW1zX3Blcl9jdHJsICogaTsNCisg ICAgICB0cmVlIGJpYXNfdHJlZSA9IGJ1aWxkX2ludF9jc3QgKGl2X3R5cGUs IGJpYXMpOw0KKw0KKyAgICAgIC8qIFJhdGhlciB0aGFuIGhhdmUgYSBuZXcg SVYgdGhhdCBzdGFydHMgYXQgVEVTVF9MSU1JVCBhbmQgZ29lcyBkb3duIHRv DQorIEJJQVMsIHByZWZlciB0byB1c2UgdGhlIHNhbWUgVEVTVF9MSU1JVCAt IEJJQVMgYmFzZWQgSVYgZm9yIGVhY2gNCisgY29udHJvbCBhbmQgYWRqdXN0 IHRoZSBib3VuZCBkb3duIGJ5IEJJQVMuICAqLw0KKyAgICAgIHRyZWUgdGhp c190ZXN0X2xpbWl0ID0gdGVzdF9saW1pdDsNCisgICAgICBpZiAoaSAhPSAw KQ0KKyB7DQorICAgdGhpc190ZXN0X2xpbWl0ID0gZ2ltcGxlX2J1aWxkIChw cmVoZWFkZXJfc2VxLCBNQVhfRVhQUiwgaXZfdHlwZSwNCisgICB0aGlzX3Rl c3RfbGltaXQsIGJpYXNfdHJlZSk7DQorICAgdGhpc190ZXN0X2xpbWl0ID0g Z2ltcGxlX2J1aWxkIChwcmVoZWFkZXJfc2VxLCBNSU5VU19FWFBSLCBpdl90 eXBlLA0KKyAgIHRoaXNfdGVzdF9saW1pdCwgYmlhc190cmVlKTsNCisgfQ0K Kw0KKyAgICAgIC8qIENyZWF0ZSBkZWNyZW1lbnQgSVYuICAqLw0KKyAgICAg IGNyZWF0ZV9pdiAodGhpc190ZXN0X2xpbWl0LCBjdHJsLCBOVUxMX1RSRUUs IGxvb3AsICZpbmNyX2dzaSwNCisgaW5zZXJ0X2FmdGVyLCAmaW5kZXhfYmVm b3JlX2luY3IsICZpbmRleF9hZnRlcl9pbmNyLA0KKyBNSU5VU19FWFBSKTsN CisNCisgICAgICBwb2x5X3VpbnQ2NCBmaW5hbF92ZiA9IHZmICogbml0ZW1z X3Blcl9pdGVyOw0KKyAgICAgIHRyZWUgdmZfc3RlcCA9IGJ1aWxkX2ludF9j c3QgKGl2X3R5cGUsIGZpbmFsX3ZmKTsNCisgICAgICB0cmVlIHJlc19sZW4g PSBnaW1wbGVfYnVpbGQgKGhlYWRlcl9zZXEsIElGTl9XSElMRV9MRU4sIGl2 X3R5cGUsDQorICAgIGluZGV4X2JlZm9yZV9pbmNyLCB2Zl9zdGVwKTsNCisg ICAgICBnYXNzaWduICphc3NpZ24gPSBnaW1wbGVfYnVpbGRfYXNzaWduIChj dHJsLCByZXNfbGVuKTsNCisgICAgICBnaW1wbGVfc2VxX2FkZF9zdG10ICho ZWFkZXJfc2VxLCBhc3NpZ24pOw0KKyAgICB9DQorDQorICByZXR1cm4gaW5k ZXhfYWZ0ZXJfaW5jcjsNCit9DQorDQovKiBTZXQgdXAgdGhlIGl0ZXJhdGlv biBjb25kaXRpb24gYW5kIHJncm91cCBjb250cm9scyBmb3IgTE9PUCwgZ2l2 ZW4NCiAgICB0aGF0IExPT1BfVklORk9fVVNJTkdfUEFSVElBTF9WRUNUT1JT X1AgaXMgdHJ1ZSBmb3IgdGhlIHZlY3Rvcml6ZWQNCiAgICBsb29wLiAgTE9P UF9WSU5GTyBkZXNjcmliZXMgdGhlIHZlY3Rvcml6YXRpb24gb2YgTE9PUC4g IE5JVEVSUyBpcw0KQEAgLTcwMyw2ICs4NzAsNyBAQCB2ZWN0X3NldF9sb29w X2NvbmRpdGlvbl9wYXJ0aWFsX3ZlY3RvcnMgKGNsYXNzIGxvb3AgKmxvb3As DQogICBib29sIHVzZV9tYXNrc19wID0gTE9PUF9WSU5GT19GVUxMWV9NQVNL RURfUCAobG9vcF92aW5mbyk7DQogICB0cmVlIGNvbXBhcmVfdHlwZSA9IExP T1BfVklORk9fUkdST1VQX0NPTVBBUkVfVFlQRSAobG9vcF92aW5mbyk7DQor ICB0cmVlIGl2X3R5cGUgPSBMT09QX1ZJTkZPX1JHUk9VUF9JVl9UWVBFIChs b29wX3ZpbmZvKTsNCiAgIHVuc2lnbmVkIGludCBjb21wYXJlX3ByZWNpc2lv biA9IFRZUEVfUFJFQ0lTSU9OIChjb21wYXJlX3R5cGUpOw0KICAgdHJlZSBv cmlnX25pdGVycyA9IG5pdGVyczsNCkBAIC03NTcsMTIgKzkyNSwxOCBAQCB2 ZWN0X3NldF9sb29wX2NvbmRpdGlvbl9wYXJ0aWFsX3ZlY3RvcnMgKGNsYXNz IGxvb3AgKmxvb3AsDQpib29sIG1pZ2h0X3dyYXBfcCA9IHZlY3Rfcmdyb3Vw X2l2X21pZ2h0X3dyYXBfcCAobG9vcF92aW5mbywgcmdjKTsNCi8qIFNldCB1 cCBhbGwgY29udHJvbHMgZm9yIHRoaXMgZ3JvdXAuICAqLw0KLSB0ZXN0X2N0 cmwgPSB2ZWN0X3NldF9sb29wX2NvbnRyb2xzX2RpcmVjdGx5IChsb29wLCBs b29wX3ZpbmZvLA0KLSAgICAgICZwcmVoZWFkZXJfc2VxLA0KLSAgICAgICZo ZWFkZXJfc2VxLA0KLSAgICAgIGxvb3BfY29uZF9nc2ksIHJnYywNCi0gICAg ICBuaXRlcnMsIG5pdGVyc19za2lwLA0KLSAgICAgIG1pZ2h0X3dyYXBfcCk7 DQorIGlmIChkaXJlY3RfaW50ZXJuYWxfZm5fc3VwcG9ydGVkX3AgKElGTl9X SElMRV9MRU4sIGl2X3R5cGUsDQorICAgICBPUFRJTUlaRV9GT1JfU1BFRUQp KQ0KKyAgIHRlc3RfY3RybA0KKyAgICAgPSB2ZWN0X3NldF9sb29wX2NvbnRy b2xzX2J5X3doaWxlX2xlbiAobG9vcCwgbG9vcF92aW5mbywNCisgICAgJnBy ZWhlYWRlcl9zZXEsICZoZWFkZXJfc2VxLA0KKyAgICByZ2MsIG5pdGVycyk7 DQorIGVsc2UNCisgICB0ZXN0X2N0cmwNCisgICAgID0gdmVjdF9zZXRfbG9v cF9jb250cm9sc19kaXJlY3RseSAobG9vcCwgbG9vcF92aW5mbywgJnByZWhl YWRlcl9zZXEsDQorICAgICAgICAmaGVhZGVyX3NlcSwgbG9vcF9jb25kX2dz aSwgcmdjLA0KKyAgICAgICAgbml0ZXJzLCBuaXRlcnNfc2tpcCwNCisgICAg ICAgIG1pZ2h0X3dyYXBfcCk7DQogICAgICAgfQ0KICAgLyogRW1pdCBhbGwg YWNjdW11bGF0ZWQgc3RhdGVtZW50cy4gICovDQpkaWZmIC0tZ2l0IGEvZ2Nj L3RyZWUtdmVjdC1sb29wLmNjIGIvZ2NjL3RyZWUtdmVjdC1sb29wLmNjDQpp bmRleCAxYmE5ZjE4ZDczZS4uNWJmZmQ5YTYzMjIgMTAwNjQ0DQotLS0gYS9n Y2MvdHJlZS12ZWN0LWxvb3AuY2MNCisrKyBiL2djYy90cmVlLXZlY3QtbG9v cC5jYw0KQEAgLTEwMzYwLDEyICsxMDM2MCwxNCBAQCB2ZWN0X3JlY29yZF9s b29wX2xlbiAobG9vcF92ZWNfaW5mbyBsb29wX3ZpbmZvLCB2ZWNfbG9vcF9s ZW5zICpsZW5zLA0KICAgIHJncm91cCB0aGF0IG9wZXJhdGVzIG9uIE5WRUNU T1JTIHZlY3RvcnMsIHdoZXJlIDAgPD0gSU5ERVggPCBOVkVDVE9SUy4gICov DQp0cmVlDQotdmVjdF9nZXRfbG9vcF9sZW4gKGxvb3BfdmVjX2luZm8gbG9v cF92aW5mbywgdmVjX2xvb3BfbGVucyAqbGVucywNCi0gICAgdW5zaWduZWQg aW50IG52ZWN0b3JzLCB1bnNpZ25lZCBpbnQgaW5kZXgpDQordmVjdF9nZXRf bG9vcF9sZW4gKGdpbXBsZV9zdG10X2l0ZXJhdG9yICpnc2ksIGxvb3BfdmVj X2luZm8gbG9vcF92aW5mbywNCisgICAgdmVjX2xvb3BfbGVucyAqbGVucywg dW5zaWduZWQgaW50IG52ZWN0b3JzLCB0cmVlIHZlY3R5cGUsDQorICAgIHVu c2lnbmVkIGludCBpbmRleCkNCnsNCiAgIHJncm91cF9jb250cm9scyAqcmds ID0gJigqbGVucylbbnZlY3RvcnMgLSAxXTsNCi0gIGJvb2wgdXNlX2JpYXNf YWRqdXN0ZWRfbGVuID0NCi0gICAgTE9PUF9WSU5GT19QQVJUSUFMX0xPQURf U1RPUkVfQklBUyAobG9vcF92aW5mbykgIT0gMDsNCisgIGJvb2wgdXNlX2Jp YXNfYWRqdXN0ZWRfbGVuDQorICAgID0gTE9PUF9WSU5GT19QQVJUSUFMX0xP QURfU1RPUkVfQklBUyAobG9vcF92aW5mbykgIT0gMDsNCisgIHRyZWUgaXZf dHlwZSA9IExPT1BfVklORk9fUkdST1VQX0lWX1RZUEUgKGxvb3BfdmluZm8p Ow0KICAgLyogUG9wdWxhdGUgdGhlIHJncm91cCdzIGxlbiBhcnJheSwgaWYg dGhpcyBpcyB0aGUgZmlyc3QgdGltZSB3ZSd2ZQ0KICAgICAgdXNlZCBpdC4g ICovDQpAQCAtMTAzODYsOCArMTAzODgsOCBAQCB2ZWN0X2dldF9sb29wX2xl biAobG9vcF92ZWNfaW5mbyBsb29wX3ZpbmZvLCB2ZWNfbG9vcF9sZW5zICps ZW5zLA0KICBpZiAodXNlX2JpYXNfYWRqdXN0ZWRfbGVuKQ0KICAgIHsNCiAg ICAgIGdjY19hc3NlcnQgKGkgPT0gMCk7DQotICAgICAgIHRyZWUgYWRqdXN0 ZWRfbGVuID0NCi0gbWFrZV90ZW1wX3NzYV9uYW1lIChsZW5fdHlwZSwgTlVM TCwgImFkanVzdGVkX2xvb3BfbGVuIik7DQorICAgICAgIHRyZWUgYWRqdXN0 ZWRfbGVuDQorID0gbWFrZV90ZW1wX3NzYV9uYW1lIChsZW5fdHlwZSwgTlVM TCwgImFkanVzdGVkX2xvb3BfbGVuIik7DQogICAgICBTU0FfTkFNRV9ERUZf U1RNVCAoYWRqdXN0ZWRfbGVuKSA9IGdpbXBsZV9idWlsZF9ub3AgKCk7DQog ICAgICByZ2wtPmJpYXNfYWRqdXN0ZWRfY3RybCA9IGFkanVzdGVkX2xlbjsN CiAgICB9DQpAQCAtMTAzOTYsNiArMTAzOTgsMjcgQEAgdmVjdF9nZXRfbG9v cF9sZW4gKGxvb3BfdmVjX2luZm8gbG9vcF92aW5mbywgdmVjX2xvb3BfbGVu cyAqbGVucywNCiAgIGlmICh1c2VfYmlhc19hZGp1c3RlZF9sZW4pDQogICAg IHJldHVybiByZ2wtPmJpYXNfYWRqdXN0ZWRfY3RybDsNCisgIGVsc2UgaWYg KGRpcmVjdF9pbnRlcm5hbF9mbl9zdXBwb3J0ZWRfcCAoSUZOX1dISUxFX0xF TiwgaXZfdHlwZSwNCisgICAgT1BUSU1JWkVfRk9SX1NQRUVEKSkNCisgICAg ew0KKyAgICAgIHRyZWUgbG9vcF9sZW4gPSByZ2wtPmNvbnRyb2xzW2luZGV4 XTsNCisgICAgICBwb2x5X2ludDY0IG51bml0czEgPSBUWVBFX1ZFQ1RPUl9T VUJQQVJUUyAocmdsLT50eXBlKTsNCisgICAgICBwb2x5X2ludDY0IG51bml0 czIgPSBUWVBFX1ZFQ1RPUl9TVUJQQVJUUyAodmVjdHlwZSk7DQorICAgICAg aWYgKG1heWJlX25lIChudW5pdHMxLCBudW5pdHMyKSkNCisgew0KKyAgIC8q IEEgbG9vcCBsZW4gZm9yIGRhdGEgdHlwZSBYIGNhbiBiZSByZXVzZWQgZm9y IGRhdGEgdHlwZSBZDQorICAgICAgaWYgWCBoYXMgTiB0aW1lcyBtb3JlIGVs ZW1lbnRzIHRoYW4gWSBhbmQgaWYgWSdzIGVsZW1lbnRzDQorICAgICAgYXJl IE4gdGltZXMgYmlnZ2VyIHRoYW4gWCdzLiAgKi8NCisgICBnY2NfYXNzZXJ0 IChtdWx0aXBsZV9wIChudW5pdHMxLCBudW5pdHMyKSk7DQorICAgdW5zaWdu ZWQgaW50IGZhY3RvciA9IGV4YWN0X2RpdiAobnVuaXRzMSwgbnVuaXRzMiku dG9fY29uc3RhbnQgKCk7DQorICAgZ2ltcGxlX3NlcSBzZXEgPSBOVUxMOw0K KyAgIGxvb3BfbGVuID0gZ2ltcGxlX2J1aWxkICgmc2VxLCBSRElWX0VYUFIs IGl2X3R5cGUsIGxvb3BfbGVuLA0KKyAgICBidWlsZF9pbnRfY3N0IChpdl90 eXBlLCBmYWN0b3IpKTsNCisgICBpZiAoc2VxKQ0KKyAgICAgZ3NpX2luc2Vy dF9zZXFfYmVmb3JlIChnc2ksIHNlcSwgR1NJX1NBTUVfU1RNVCk7DQorIH0N CisgICAgICByZXR1cm4gbG9vcF9sZW47DQorICAgIH0NCiAgIGVsc2UNCiAg ICAgcmV0dXJuIHJnbC0+Y29udHJvbHNbaW5kZXhdOw0KfQ0KZGlmZiAtLWdp dCBhL2djYy90cmVlLXZlY3Qtc3RtdHMuY2MgYi9nY2MvdHJlZS12ZWN0LXN0 bXRzLmNjDQppbmRleCBlZmEyZDBkYWE1Mi4uNzA4YzhhMWQ4MDYgMTAwNjQ0 DQotLS0gYS9nY2MvdHJlZS12ZWN0LXN0bXRzLmNjDQorKysgYi9nY2MvdHJl ZS12ZWN0LXN0bXRzLmNjDQpAQCAtODY1Myw4ICs4NjUzLDkgQEAgdmVjdG9y aXphYmxlX3N0b3JlICh2ZWNfaW5mbyAqdmluZm8sDQogICAgICBlbHNlIGlm IChsb29wX2xlbnMpDQp7DQogIHRyZWUgZmluYWxfbGVuDQotICAgICA9IHZl Y3RfZ2V0X2xvb3BfbGVuIChsb29wX3ZpbmZvLCBsb29wX2xlbnMsDQotIHZl Y19udW0gKiBuY29waWVzLCB2ZWNfbnVtICogaiArIGkpOw0KKyAgICAgPSB2 ZWN0X2dldF9sb29wX2xlbiAoZ3NpLCBsb29wX3ZpbmZvLCBsb29wX2xlbnMs DQorIHZlY19udW0gKiBuY29waWVzLCB2ZWN0eXBlLA0KKyB2ZWNfbnVtICog aiArIGkpOw0KICB0cmVlIHB0ciA9IGJ1aWxkX2ludF9jc3QgKHJlZl90eXBl LCBhbGlnbiAqIEJJVFNfUEVSX1VOSVQpOw0KICBtYWNoaW5lX21vZGUgdm1v ZGUgPSBUWVBFX01PREUgKHZlY3R5cGUpOw0KICBvcHRfbWFjaGluZV9tb2Rl IG5ld19vdm1vZGUNCkBAIC0xMDAwOSw4ICsxMDAxMCw4IEBAIHZlY3Rvcml6 YWJsZV9sb2FkICh2ZWNfaW5mbyAqdmluZm8sDQogICAgZWxzZSBpZiAobG9v cF9sZW5zICYmIG1lbW9yeV9hY2Nlc3NfdHlwZSAhPSBWTUFUX0lOVkFSSUFO VCkNCiAgICAgIHsNCnRyZWUgZmluYWxfbGVuDQotICAgPSB2ZWN0X2dldF9s b29wX2xlbiAobG9vcF92aW5mbywgbG9vcF9sZW5zLA0KLSAgICAgICAgdmVj X251bSAqIG5jb3BpZXMsDQorICAgPSB2ZWN0X2dldF9sb29wX2xlbiAoZ3Np LCBsb29wX3ZpbmZvLCBsb29wX2xlbnMsDQorICAgICAgICB2ZWNfbnVtICog bmNvcGllcywgdmVjdHlwZSwNCiAgICAgICB2ZWNfbnVtICogaiArIGkpOw0K dHJlZSBwdHIgPSBidWlsZF9pbnRfY3N0IChyZWZfdHlwZSwNCiAgYWxpZ24g KiBCSVRTX1BFUl9VTklUKTsNCmRpZmYgLS1naXQgYS9nY2MvdHJlZS12ZWN0 b3JpemVyLmggYi9nY2MvdHJlZS12ZWN0b3JpemVyLmgNCmluZGV4IDljZjJm YjIzZmUzLi5lNWNmMzhjYWY0YiAxMDA2NDQNCi0tLSBhL2djYy90cmVlLXZl Y3Rvcml6ZXIuaA0KKysrIGIvZ2NjL3RyZWUtdmVjdG9yaXplci5oDQpAQCAt MjI5Myw4ICsyMjkzLDggQEAgZXh0ZXJuIHRyZWUgdmVjdF9nZXRfbG9vcF9t YXNrIChnaW1wbGVfc3RtdF9pdGVyYXRvciAqLCB2ZWNfbG9vcF9tYXNrcyAq LA0KdW5zaWduZWQgaW50LCB0cmVlLCB1bnNpZ25lZCBpbnQpOw0KZXh0ZXJu IHZvaWQgdmVjdF9yZWNvcmRfbG9vcF9sZW4gKGxvb3BfdmVjX2luZm8sIHZl Y19sb29wX2xlbnMgKiwgdW5zaWduZWQgaW50LA0KICB0cmVlLCB1bnNpZ25l ZCBpbnQpOw0KLWV4dGVybiB0cmVlIHZlY3RfZ2V0X2xvb3BfbGVuIChsb29w X3ZlY19pbmZvLCB2ZWNfbG9vcF9sZW5zICosIHVuc2lnbmVkIGludCwNCi0g ICAgICAgIHVuc2lnbmVkIGludCk7DQorZXh0ZXJuIHRyZWUgdmVjdF9nZXRf bG9vcF9sZW4gKGdpbXBsZV9zdG10X2l0ZXJhdG9yICosIGxvb3BfdmVjX2lu Zm8sDQorICAgICAgICB2ZWNfbG9vcF9sZW5zICosIHVuc2lnbmVkIGludCwg dHJlZSwgdW5zaWduZWQgaW50KTsNCmV4dGVybiBnaW1wbGVfc2VxIHZlY3Rf Z2VuX2xlbiAodHJlZSwgdHJlZSwgdHJlZSwgdHJlZSk7DQpleHRlcm4gc3Rt dF92ZWNfaW5mbyBpbmZvX2Zvcl9yZWR1Y3Rpb24gKHZlY19pbmZvICosIHN0 bXRfdmVjX2luZm8pOw0KZXh0ZXJuIGJvb2wgcmVkdWN0aW9uX2ZuX2Zvcl9z Y2FsYXJfY29kZSAoY29kZV9oZWxwZXIsIGludGVybmFsX2ZuICopOw0KLS0g DQoyLjM2LjMNCiANCg== ------=_001_NextPart547710004306_=------