From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from zg8tmja2lje4os4yms4ymjma.icoremail.net (zg8tmja2lje4os4yms4ymjma.icoremail.net [206.189.21.223]) by sourceware.org (Postfix) with ESMTP id 138003858D39 for ; Fri, 26 May 2023 08:56:32 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 138003858D39 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=eswincomputing.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=eswincomputing.com Received: from E0001792LT (unknown [113.200.72.66]) by app1 (Coremail) with SMTP id EwgMCgCnRMQ9dHBkSFgcAA--.16161S2; Fri, 26 May 2023 16:56:30 +0800 (CST) Date: Fri, 26 May 2023 16:56:29 +0800 From: "Feng Wang" To: "wangfeng@eswincomputing.com" , gcc-patches Cc: kito.cheng , palmer Subject: Re: [PATCH] RISC-V: Optimize the MASK opt generation References: <20230301014611.26707-1-wangfeng@eswincomputing.com> X-Priority: 3 X-GUID: ECF1A24A-8277-4C8D-9774-0D2406B5A75A X-Has-Attach: no X-Mailer: Foxmail 7.2.15.80[cn] Mime-Version: 1.0 Message-ID: <202305261656292789767@eswincomputing.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-CM-TRANSID:EwgMCgCnRMQ9dHBkSFgcAA--.16161S2 X-Coremail-Antispam: 1UD129KBjvAXoW3ZF1xKw1xXry7Kw4DCryUWrg_yoW8Cr18uo WIgrZ8tF15Jr4xur48Ww1UJr98X3WDAr1DXF4DAr4fJFnxXF1qg348Ka9YqayUA34fWFW5 JFnrXFyDZa45Jr15n29KB7ZKAUJUUUUU529EdanIXcx71UUUUU7v73VFW2AGmfu7bjvjm3 AaLaJ3UjIYCTnIWjp_UUUYz7CY07I20VC2zVCF04k26cxKx2IYs7xG6rWj6s0DM28lY4IE w2IIxxk0rwA2F7IY1VAKz4vEj48ve4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_tr0E3s1l84 ACjcxK6xIIjxv20xvEc7CjxVAFwI0_Cr1j6rxdM28EF7xvwVC2z280aVAFwI0_GcCE3s1l 84ACjcxK6I8E87Iv6xkF7I0E14v26rxl6s0DM2AIxVAIcxkEcVAq07x20xvEncxIr21l5I 8CrVACY4xI64kE6c02F40Ex7xfMcIj6x8ErcxFaVAv8VW8Jr1UJr1lOx8S6xCaFVCjc4AY 6r1j6r4UM4x0Y48IcxkI7VAKI48JM4x0x7Aq67IIx4CEVc8vx2IErcIFxwACY4xI67k042 43AVAKzVAKj4xxMxkIecxEwVAFwVW8ZwCF04k20xvY0x0EwIxGrwCF04k20xvE74AGY7Cv 6cx26r4UJr1UJwCFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E14v26r1j6r18MI 8I3I0E7480Y4vE14v26r106r1rMI8E67AF67kF1VAFwI0_JF0_Jw1lIxkGc2Ij64vIr41l IxAIcVC0I7IYx2IY67AKxVWUJVWUCwCI42IY6xIIjxv20xvEc7CjxVAFwI0_Jr0_Gr1lIx AIcVCF04k26cxKx2IYs7xG6r1j6r1xMIIF0xvEx4A2jsIE14v26r1j6r4UMIIF0xvEx4A2 jsIEc7CjxVAFwI0_Jr0_Gr1l6VACY4xI67k04243AbIYCTnIWIevJa73UjIFyTuYvjfUxH UDDUUUU X-CM-SenderInfo: pzdqwwxhqjqvxvzl0uprps33xlqjhudrp/ X-Spam-Status: No, score=-10.2 required=5.0 tests=BAYES_00,BODY_8BITS,GIT_PATCH_0,KAM_DMARC_STATUS,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE 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: T24gMjAyMy0wMy0wMSAwOTo0NiDCoEZlbmcgV2FuZzx3YW5nZmVuZ0Blc3dpbmNvbXB1dGluZy5j b20+IHdyb3RlOgo+Cj5UaGUgTWFzayBmbGFnIGluIHRoZSBzaW5nbGUgVGFyZ2V0VmFyaWFibGUg aXMgbm90IGVub3VnaCBkdWUgdG8gbW9yZQo+YW5kIG1vcmUgZXh0ZW5zaW9ucyB3ZXJlIGFkZGVk LlNvIEkgb3B0aW1pemUgdGhlIGRlZmluYXRpb24gb2YgTWFzawo+ZmxhZywgcGxlYXNlIHJlZmVy IHRvIHRoZSBiZWxvdyBjYXNlOgo+VGhlcmUgYXJlIHNvbWUgbmV3IE1BU0sgZmxhZ3MgZm9yICd2 JyBleHRlbnNpb24oWlZMMzJCLFpWTDY0QiwuLi4sWlZMNjU1MzZCKSwKPmJ1dCB0aGVzZSBNQVNL IGZsYWdzIGNhbid0IHN0b3JlIGludG8geF90YXJnZXRfZmxhZ3MsYmVjYXVzZSB0aGUgdG90YWwg bnVtYmVyCj5vZiBNQVNLIGZsYWdzIGV4Y2VlZCAzMi4gSW4gdGhpcyBwYXRjaCB3ZSBjYW4gd3Jp dGUgaXQgbGlrZSB0aGlzIGluIHRoaXMgc2NlbmNlLgo+Cj5UYXJnZXRWYXJpYWJsZQo+aW50IHJp c2N2X3p2bF9mbGFncwo+Cj5NYXNrKFpWTDMyQikgaW4gVGFyZ2V0VmFyaWFibGUocmlzY3ZfenZs X2ZsYWdzKQo+Cj5UaGUgY29ycmVzcG9uZGluZyBNQVNLIGFuZCBUQVJHRVQgd2lsbCBiZSBhdXRv bWF0aWNhbGx5IGdlbmVyYXRlZC4KPgo+Z2NjL0NoYW5nZUxvZzoKPgo+wqDCoMKgwqDCoMKgwqAg KiBjb25maWcvcmlzY3YvcmlzY3Ytb3B0cy5owqDCoCBEZWxldGUgYmVsb3cgZGVmaW5hdGlvbnMK PsKgwqDCoMKgwqDCoMKgIChNQVNLX1pJQ1NSKTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKE1B U0tfWklGRU5DRUkpOiBEZWxldGU7Cj7CoMKgwqDCoMKgwqDCoCAoVEFSR0VUX1pJQ1NSKTogRGVs ZXRlOwo+wqDCoMKgwqDCoMKgwqAgKFRBUkdFVF9aSUZFTkNFSSk6IERlbGV0ZTsKPsKgwqDCoMKg wqDCoMKgIChNQVNLX1pBV1JTKTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKFRBUkdFVF9aQVdS Uyk6IERlbGV0ZTsKPsKgwqDCoMKgwqDCoMKgIChNQVNLX1pCQSk6IERlbGV0ZTsKPsKgwqDCoMKg wqDCoMKgIChNQVNLX1pCQik6IERlbGV0ZTsKPsKgwqDCoMKgwqDCoMKgIChNQVNLX1pCQyk6IERl bGV0ZTsKPsKgwqDCoMKgwqDCoMKgIChNQVNLX1pCUyk6IERlbGV0ZTsKPsKgwqDCoMKgwqDCoMKg IChUQVJHRVRfWkJBKTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKFRBUkdFVF9aQkIpOiBEZWxl dGU7Cj7CoMKgwqDCoMKgwqDCoCAoVEFSR0VUX1pCQyk6IERlbGV0ZTsKPsKgwqDCoMKgwqDCoMKg IChUQVJHRVRfWkJTKTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKE1BU0tfWkZJTlgpOiBEZWxl dGU7Cj7CoMKgwqDCoMKgwqDCoCAoTUFTS19aRElOWCk6IERlbGV0ZTsKPsKgwqDCoMKgwqDCoMKg IChNQVNLX1pISU5YKTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKE1BU0tfWkhJTlhNSU4pOiBE ZWxldGU7Cj7CoMKgwqDCoMKgwqDCoCAoVEFSR0VUX1pGSU5YKTogRGVsZXRlOwo+wqDCoMKgwqDC oMKgwqAgKFRBUkdFVF9aRElOWCk6IERlbGV0ZTsKPsKgwqDCoMKgwqDCoMKgIChUQVJHRVRfWkhJ TlgpOiBEZWxldGU7Cj7CoMKgwqDCoMKgwqDCoCAoVEFSR0VUX1pISU5YTUlOKTogRGVsZXRlOwo+ wqDCoMKgwqDCoMKgwqAgKE1BU0tfWkJLQik6IERlbGV0ZTsKPsKgwqDCoMKgwqDCoMKgIChNQVNL X1pCS0MpOiBEZWxldGU7Cj7CoMKgwqDCoMKgwqDCoCAoTUFTS19aQktYKTogRGVsZXRlOwo+wqDC oMKgwqDCoMKgwqAgKE1BU0tfWktORSk6IERlbGV0ZTsKPsKgwqDCoMKgwqDCoMKgIChNQVNLX1pL TkQpOiBEZWxldGU7Cj7CoMKgwqDCoMKgwqDCoCAoTUFTS19aS05IKTogRGVsZXRlOwo+wqDCoMKg wqDCoMKgwqAgKE1BU0tfWktSKTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKE1BU0tfWktTRUQp OiBEZWxldGU7Cj7CoMKgwqDCoMKgwqDCoCAoTUFTS19aS1NIKTogRGVsZXRlOwo+wqDCoMKgwqDC oMKgwqAgKE1BU0tfWktUKTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKFRBUkdFVF9aQktCKTog RGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKFRBUkdFVF9aQktDKTogRGVsZXRlOwo+wqDCoMKgwqDC oMKgwqAgKFRBUkdFVF9aQktYKTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKFRBUkdFVF9aS05F KTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKFRBUkdFVF9aS05EKTogRGVsZXRlOwo+wqDCoMKg wqDCoMKgwqAgKFRBUkdFVF9aS05IKTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKFRBUkdFVF9a S1IpOiBEZWxldGU7Cj7CoMKgwqDCoMKgwqDCoCAoVEFSR0VUX1pLU0VEKTogRGVsZXRlOwo+wqDC oMKgwqDCoMKgwqAgKFRBUkdFVF9aS1NIKTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKFRBUkdF VF9aS1QpOiBEZWxldGU7Cj7CoMKgwqDCoMKgwqDCoCAoTUFTS19WRUNUT1JfRUxFTl8zMik6IERl bGV0ZTsKPsKgwqDCoMKgwqDCoMKgIChNQVNLX1ZFQ1RPUl9FTEVOXzY0KTogRGVsZXRlOwo+wqDC oMKgwqDCoMKgwqAgKE1BU0tfVkVDVE9SX0VMRU5fRlBfMzIpOiBEZWxldGU7Cj7CoMKgwqDCoMKg wqDCoCAoTUFTS19WRUNUT1JfRUxFTl9GUF82NCk6IERlbGV0ZTsKPsKgwqDCoMKgwqDCoMKgIChU QVJHRVRfVkVDVE9SX0VMRU5fMzIpOiBEZWxldGU7Cj7CoMKgwqDCoMKgwqDCoCAoVEFSR0VUX1ZF Q1RPUl9FTEVOXzY0KTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKFRBUkdFVF9WRUNUT1JfRUxF Tl9GUF8zMik6IERlbGV0ZTsKPsKgwqDCoMKgwqDCoMKgIChUQVJHRVRfVkVDVE9SX0VMRU5fRlBf NjQpOiBEZWxldGU7Cj7CoMKgwqDCoMKgwqDCoCAoTUFTS19aVkwzMkIpOiBEZWxldGU7Cj7CoMKg wqDCoMKgwqDCoCAoTUFTS19aVkw2NEIpOiBEZWxldGU7Cj7CoMKgwqDCoMKgwqDCoCAoTUFTS19a VkwxMjhCKTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKE1BU0tfWlZMMjU2Qik6IERlbGV0ZTsK PsKgwqDCoMKgwqDCoMKgIChNQVNLX1pWTDUxMkIpOiBEZWxldGU7Cj7CoMKgwqDCoMKgwqDCoCAo TUFTS19aVkwxMDI0Qik6IERlbGV0ZTsKPsKgwqDCoMKgwqDCoMKgIChNQVNLX1pWTDIwNDhCKTog RGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKE1BU0tfWlZMNDA5NkIpOiBEZWxldGU7Cj7CoMKgwqDC oMKgwqDCoCAoTUFTS19aVkw4MTkyQik6IERlbGV0ZTsKPsKgwqDCoMKgwqDCoMKgIChNQVNLX1pW TDE2Mzg0Qik6IERlbGV0ZTsKPsKgwqDCoMKgwqDCoMKgIChNQVNLX1pWTDMyNzY4Qik6IERlbGV0 ZTsKPsKgwqDCoMKgwqDCoMKgIChNQVNLX1pWTDY1NTM2Qik6IERlbGV0ZTsKPsKgwqDCoMKgwqDC oMKgIChUQVJHRVRfWlZMMzJCKTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKFRBUkdFVF9aVkw2 NEIpOiBEZWxldGU7Cj7CoMKgwqDCoMKgwqDCoCAoVEFSR0VUX1pWTDEyOEIpOiBEZWxldGU7Cj7C oMKgwqDCoMKgwqDCoCAoVEFSR0VUX1pWTDI1NkIpOiBEZWxldGU7Cj7CoMKgwqDCoMKgwqDCoCAo VEFSR0VUX1pWTDUxMkIpOiBEZWxldGU7Cj7CoMKgwqDCoMKgwqDCoCAoVEFSR0VUX1pWTDEwMjRC KTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKFRBUkdFVF9aVkwyMDQ4Qik6IERlbGV0ZTsKPsKg wqDCoMKgwqDCoMKgIChUQVJHRVRfWlZMNDA5NkIpOiBEZWxldGU7Cj7CoMKgwqDCoMKgwqDCoCAo VEFSR0VUX1pWTDgxOTJCKTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKFRBUkdFVF9aVkwxNjM4 NEIpOiBEZWxldGU7Cj7CoMKgwqDCoMKgwqDCoCAoVEFSR0VUX1pWTDMyNzY4Qik6IERlbGV0ZTsK PsKgwqDCoMKgwqDCoMKgIChUQVJHRVRfWlZMNjU1MzZCKTogRGVsZXRlOwo+wqDCoMKgwqDCoMKg wqAgKE1BU0tfWklDQk9aKTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKE1BU0tfWklDQk9NKTog RGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKE1BU0tfWklDQk9QKTogRGVsZXRlOwo+wqDCoMKgwqDC oMKgwqAgKFRBUkdFVF9aSUNCT1opOiBEZWxldGU7Cj7CoMKgwqDCoMKgwqDCoCAoVEFSR0VUX1pJ Q0JPTSk6IERlbGV0ZTsKPsKgwqDCoMKgwqDCoMKgIChUQVJHRVRfWklDQk9QKTogRGVsZXRlOwo+ wqDCoMKgwqDCoMKgwqAgKE1BU0tfWkZITUlOKTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKE1B U0tfWkZIKTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKFRBUkdFVF9aRkhNSU4pOiBEZWxldGU7 Cj7CoMKgwqDCoMKgwqDCoCAoVEFSR0VUX1pGSCk6IERlbGV0ZTsKPsKgwqDCoMKgwqDCoMKgIChN QVNLX1pNTVVMKTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKFRBUkdFVF9aTU1VTCk6IERlbGV0 ZTsKPsKgwqDCoMKgwqDCoMKgIChNQVNLX1NWSU5WQUwpOiBEZWxldGU7Cj7CoMKgwqDCoMKgwqDC oCAoTUFTS19TVk5BUE9UKTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKFRBUkdFVF9TVklOVkFM KTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKFRBUkdFVF9TVk5BUE9UKTogRGVsZXRlOwo+wqDC oMKgwqDCoMKgwqAgKiBjb25maWcvcmlzY3YvcmlzY3Yub3B0OiBBZGQgbmV3IE1hc2sgZGVmaW5h dGlvbi4KPsKgwqDCoMKgwqDCoMKgICogb3B0LWZ1bmN0aW9ucy5hd2s6wqDCoMKgwqDCoCBBZGQg bmV3IGZ1bmN0aW9uIHRvIGZpbmQgdGhlIGluZGV4Cj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgb2YgdGFyZ2V0IHZhcmlh YmxlIGZyb20gZXh0cmFfdGFyZ2V0X3ZhcnMuCj7CoMKgwqDCoMKgwqDCoCAqIG9wdC1yZWFkLmF3 azrCoMKgwqDCoMKgwqDCoMKgwqDCoCBBZGQgbmV3IGZ1bmN0aW9uIHRvIHN0b3JlIHRoZSBNYXNr IGZsYWdzLgo+wqDCoMKgwqDCoMKgwqAgKiBvcHRoLWdlbi5hd2s6wqDCoMKgwqDCoMKgwqDCoMKg wqAgQWRkIG5ldyBmdW5jdGlvbiB0byBvdXRwdXQgdGhlIGRlZmluYXRpb24gb2YKPsKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBNYXNrIE1hY3JvIGFuZCBUYXJnZXQgTWFjcm8uCj4tLS0KPiBnY2MvY29uZmlnL3Jpc2N2L3Jp c2N2LW9wdHMuaCB8IDExNSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gZ2Nj L2NvbmZpZy9yaXNjdi9yaXNjdi5vcHTCoMKgwqAgfMKgIDkwICsrKysrKysrKysrKysrKysrKysr KysrKysrCj4gZ2NjL29wdC1mdW5jdGlvbnMuYXdrwqDCoMKgwqDCoMKgwqDCoCB8wqAgMTEgKysr Kwo+IGdjYy9vcHQtcmVhZC5hd2vCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgMTYgKysr Ky0KPiBnY2Mvb3B0aC1nZW4uYXdrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDIyICsr KysrKysKPiA1IGZpbGVzIGNoYW5nZWQsIDEzOCBpbnNlcnRpb25zKCspLCAxMTYgZGVsZXRpb25z KC0pCj4KPmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LW9wdHMuaCBiL2djYy9j b25maWcvcmlzY3YvcmlzY3Ytb3B0cy5oCj5pbmRleCAyNWZkODViMDliMS4uN2NmMjg4MzhjYjUg MTAwNjQ0Cj4tLS0gYS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LW9wdHMuaAo+KysrIGIvZ2NjL2Nv bmZpZy9yaXNjdi9yaXNjdi1vcHRzLmgKPkBAIC02NiwxMjEgKzY2LDYgQEAgZW51bSBzdGFja19w cm90ZWN0b3JfZ3VhcmQgewo+wqDCoCBTU1BfVExTLAkvKiBwZXItdGhyZWFkIGNhbmFyeSBpbiBU TFMgYmxvY2sgKi8KPsKgwqAgU1NQX0dMT0JBTAkvKiBnbG9iYWwgY2FuYXJ5ICovCj4gfTsKPi0K Pi0jZGVmaW5lIE1BU0tfWklDU1LCoMKgwqAgKDEgPDwgMCkKPi0jZGVmaW5lIE1BU0tfWklGRU5D RUkgKDEgPDwgMSkKPi0KPi0jZGVmaW5lIFRBUkdFVF9aSUNTUsKgwqDCoCAoKHJpc2N2X3ppX3N1 YmV4dCAmIE1BU0tfWklDU1IpICE9IDApCj4tI2RlZmluZSBUQVJHRVRfWklGRU5DRUkgKChyaXNj dl96aV9zdWJleHQgJiBNQVNLX1pJRkVOQ0VJKSAhPSAwKQo+LQo+LSNkZWZpbmUgTUFTS19aQVdS U8KgwqAgKDEgPDwgMCkKPi0jZGVmaW5lIFRBUkdFVF9aQVdSUyAoKHJpc2N2X3phX3N1YmV4dCAm IE1BU0tfWkFXUlMpICE9IDApCj4tCj4tI2RlZmluZSBNQVNLX1pCQcKgwqDCoMKgwqAgKDEgPDwg MCkKPi0jZGVmaW5lIE1BU0tfWkJCwqDCoMKgwqDCoCAoMSA8PCAxKQo+LSNkZWZpbmUgTUFTS19a QkPCoMKgwqDCoMKgICgxIDw8IDIpCj4tI2RlZmluZSBNQVNLX1pCU8KgwqDCoMKgwqAgKDEgPDwg MykKPi0KPi0jZGVmaW5lIFRBUkdFVF9aQkHCoMKgwqAgKChyaXNjdl96Yl9zdWJleHQgJiBNQVNL X1pCQSkgIT0gMCkKPi0jZGVmaW5lIFRBUkdFVF9aQkLCoMKgwqAgKChyaXNjdl96Yl9zdWJleHQg JiBNQVNLX1pCQikgIT0gMCkKPi0jZGVmaW5lIFRBUkdFVF9aQkPCoMKgwqAgKChyaXNjdl96Yl9z dWJleHQgJiBNQVNLX1pCQykgIT0gMCkKPi0jZGVmaW5lIFRBUkdFVF9aQlPCoMKgwqAgKChyaXNj dl96Yl9zdWJleHQgJiBNQVNLX1pCUykgIT0gMCkKPi0KPi0jZGVmaW5lIE1BU0tfWkZJTljCoMKg wqDCoMKgICgxIDw8IDApCj4tI2RlZmluZSBNQVNLX1pESU5YwqDCoMKgwqDCoCAoMSA8PCAxKQo+ LSNkZWZpbmUgTUFTS19aSElOWMKgwqDCoMKgwqAgKDEgPDwgMikKPi0jZGVmaW5lIE1BU0tfWkhJ TlhNSU7CoMKgICgxIDw8IDMpCj4tCj4tI2RlZmluZSBUQVJHRVRfWkZJTljCoMKgwqAgKChyaXNj dl96aW54X3N1YmV4dCAmIE1BU0tfWkZJTlgpICE9IDApCj4tI2RlZmluZSBUQVJHRVRfWkRJTljC oMKgwqAgKChyaXNjdl96aW54X3N1YmV4dCAmIE1BU0tfWkRJTlgpICE9IDApCj4tI2RlZmluZSBU QVJHRVRfWkhJTljCoMKgwqAgKChyaXNjdl96aW54X3N1YmV4dCAmIE1BU0tfWkhJTlgpICE9IDAp Cj4tI2RlZmluZSBUQVJHRVRfWkhJTlhNSU4gKChyaXNjdl96aW54X3N1YmV4dCAmIE1BU0tfWkhJ TlhNSU4pICE9IDApCj4tCj4tI2RlZmluZSBNQVNLX1pCS0LCoMKgwqDCoCAoMSA8PCAwKQo+LSNk ZWZpbmUgTUFTS19aQktDwqDCoMKgwqAgKDEgPDwgMSkKPi0jZGVmaW5lIE1BU0tfWkJLWMKgwqDC oMKgICgxIDw8IDIpCj4tI2RlZmluZSBNQVNLX1pLTkXCoMKgwqDCoCAoMSA8PCAzKQo+LSNkZWZp bmUgTUFTS19aS05EwqDCoMKgwqAgKDEgPDwgNCkKPi0jZGVmaW5lIE1BU0tfWktOSMKgwqDCoMKg ICgxIDw8IDUpCj4tI2RlZmluZSBNQVNLX1pLUsKgwqDCoMKgwqAgKDEgPDwgNikKPi0jZGVmaW5l IE1BU0tfWktTRUTCoMKgwqAgKDEgPDwgNykKPi0jZGVmaW5lIE1BU0tfWktTSMKgwqDCoMKgICgx IDw8IDgpCj4tI2RlZmluZSBNQVNLX1pLVMKgwqDCoMKgwqAgKDEgPDwgOSkKPi0KPi0jZGVmaW5l IFRBUkdFVF9aQktCwqDCoCAoKHJpc2N2X3prX3N1YmV4dCAmIE1BU0tfWkJLQikgIT0gMCkKPi0j ZGVmaW5lIFRBUkdFVF9aQktDwqDCoCAoKHJpc2N2X3prX3N1YmV4dCAmIE1BU0tfWkJLQykgIT0g MCkKPi0jZGVmaW5lIFRBUkdFVF9aQktYwqDCoCAoKHJpc2N2X3prX3N1YmV4dCAmIE1BU0tfWkJL WCkgIT0gMCkKPi0jZGVmaW5lIFRBUkdFVF9aS05FwqDCoCAoKHJpc2N2X3prX3N1YmV4dCAmIE1B U0tfWktORSkgIT0gMCkKPi0jZGVmaW5lIFRBUkdFVF9aS05EwqDCoCAoKHJpc2N2X3prX3N1YmV4 dCAmIE1BU0tfWktORCkgIT0gMCkKPi0jZGVmaW5lIFRBUkdFVF9aS05IwqDCoCAoKHJpc2N2X3pr X3N1YmV4dCAmIE1BU0tfWktOSCkgIT0gMCkKPi0jZGVmaW5lIFRBUkdFVF9aS1LCoMKgwqAgKChy aXNjdl96a19zdWJleHQgJiBNQVNLX1pLUikgIT0gMCkKPi0jZGVmaW5lIFRBUkdFVF9aS1NFRMKg ICgocmlzY3Zfemtfc3ViZXh0ICYgTUFTS19aS1NFRCkgIT0gMCkKPi0jZGVmaW5lIFRBUkdFVF9a S1NIwqDCoCAoKHJpc2N2X3prX3N1YmV4dCAmIE1BU0tfWktTSCkgIT0gMCkKPi0jZGVmaW5lIFRB UkdFVF9aS1TCoMKgwqAgKChyaXNjdl96a19zdWJleHQgJiBNQVNLX1pLVCkgIT0gMCkKPi0KPi0j ZGVmaW5lIE1BU0tfVkVDVE9SX0VMRU5fMzLCoMKgwqAgKDEgPDwgMCkKPi0jZGVmaW5lIE1BU0tf VkVDVE9SX0VMRU5fNjTCoMKgwqAgKDEgPDwgMSkKPi0jZGVmaW5lIE1BU0tfVkVDVE9SX0VMRU5f RlBfMzIgKDEgPDwgMikKPi0jZGVmaW5lIE1BU0tfVkVDVE9SX0VMRU5fRlBfNjQgKDEgPDwgMykK Pi0KPi0jZGVmaW5lIFRBUkdFVF9WRUNUT1JfRUxFTl8zMiBcCj4twqAgKChyaXNjdl92ZWN0b3Jf ZWxlbl9mbGFncyAmIE1BU0tfVkVDVE9SX0VMRU5fMzIpICE9IDApCj4tI2RlZmluZSBUQVJHRVRf VkVDVE9SX0VMRU5fNjQgXAo+LcKgICgocmlzY3ZfdmVjdG9yX2VsZW5fZmxhZ3MgJiBNQVNLX1ZF Q1RPUl9FTEVOXzY0KSAhPSAwKQo+LSNkZWZpbmUgVEFSR0VUX1ZFQ1RPUl9FTEVOX0ZQXzMyIFwK Pi3CoCAoKHJpc2N2X3ZlY3Rvcl9lbGVuX2ZsYWdzICYgTUFTS19WRUNUT1JfRUxFTl9GUF8zMikg IT0gMCkKPi0jZGVmaW5lIFRBUkdFVF9WRUNUT1JfRUxFTl9GUF82NCBcCj4twqAgKChyaXNjdl92 ZWN0b3JfZWxlbl9mbGFncyAmIE1BU0tfVkVDVE9SX0VMRU5fRlBfNjQpICE9IDApCj4tCj4tI2Rl ZmluZSBNQVNLX1pWTDMyQsKgwqDCoCAoMSA8PMKgIDApCj4tI2RlZmluZSBNQVNLX1pWTDY0QsKg wqDCoCAoMSA8PMKgIDEpCj4tI2RlZmluZSBNQVNLX1pWTDEyOELCoMKgICgxIDw8wqAgMikKPi0j ZGVmaW5lIE1BU0tfWlZMMjU2QsKgwqAgKDEgPDzCoCAzKQo+LSNkZWZpbmUgTUFTS19aVkw1MTJC wqDCoCAoMSA8PMKgIDQpCj4tI2RlZmluZSBNQVNLX1pWTDEwMjRCwqAgKDEgPDzCoCA1KQo+LSNk ZWZpbmUgTUFTS19aVkwyMDQ4QsKgICgxIDw8wqAgNikKPi0jZGVmaW5lIE1BU0tfWlZMNDA5NkLC oCAoMSA8PMKgIDcpCj4tI2RlZmluZSBNQVNLX1pWTDgxOTJCwqAgKDEgPDzCoCA4KQo+LSNkZWZp bmUgTUFTS19aVkwxNjM4NEIgKDEgPDzCoCA5KQo+LSNkZWZpbmUgTUFTS19aVkwzMjc2OEIgKDEg PDwgMTApCj4tI2RlZmluZSBNQVNLX1pWTDY1NTM2QiAoMSA8PCAxMSkKPi0KPi0jZGVmaW5lIFRB UkdFVF9aVkwzMkLCoMKgwqAgKChyaXNjdl96dmxfZmxhZ3MgJiBNQVNLX1pWTDMyQikgIT0gMCkK Pi0jZGVmaW5lIFRBUkdFVF9aVkw2NELCoMKgwqAgKChyaXNjdl96dmxfZmxhZ3MgJiBNQVNLX1pW TDY0QikgIT0gMCkKPi0jZGVmaW5lIFRBUkdFVF9aVkwxMjhCwqDCoCAoKHJpc2N2X3p2bF9mbGFn cyAmIE1BU0tfWlZMMTI4QikgIT0gMCkKPi0jZGVmaW5lIFRBUkdFVF9aVkwyNTZCwqDCoCAoKHJp c2N2X3p2bF9mbGFncyAmIE1BU0tfWlZMMjU2QikgIT0gMCkKPi0jZGVmaW5lIFRBUkdFVF9aVkw1 MTJCwqDCoCAoKHJpc2N2X3p2bF9mbGFncyAmIE1BU0tfWlZMNTEyQikgIT0gMCkKPi0jZGVmaW5l IFRBUkdFVF9aVkwxMDI0QsKgICgocmlzY3ZfenZsX2ZsYWdzICYgTUFTS19aVkwxMDI0QikgIT0g MCkKPi0jZGVmaW5lIFRBUkdFVF9aVkwyMDQ4QsKgICgocmlzY3ZfenZsX2ZsYWdzICYgTUFTS19a VkwyMDQ4QikgIT0gMCkKPi0jZGVmaW5lIFRBUkdFVF9aVkw0MDk2QsKgICgocmlzY3ZfenZsX2Zs YWdzICYgTUFTS19aVkw0MDk2QikgIT0gMCkKPi0jZGVmaW5lIFRBUkdFVF9aVkw4MTkyQsKgICgo cmlzY3ZfenZsX2ZsYWdzICYgTUFTS19aVkw4MTkyQikgIT0gMCkKPi0jZGVmaW5lIFRBUkdFVF9a VkwxNjM4NEIgKChyaXNjdl96dmxfZmxhZ3MgJiBNQVNLX1pWTDE2Mzg0QikgIT0gMCkKPi0jZGVm aW5lIFRBUkdFVF9aVkwzMjc2OEIgKChyaXNjdl96dmxfZmxhZ3MgJiBNQVNLX1pWTDMyNzY4Qikg IT0gMCkKPi0jZGVmaW5lIFRBUkdFVF9aVkw2NTUzNkIgKChyaXNjdl96dmxfZmxhZ3MgJiBNQVNL X1pWTDY1NTM2QikgIT0gMCkKPi0KPi0jZGVmaW5lIE1BU0tfWklDQk9awqDCoCAoMSA8PCAwKQo+ LSNkZWZpbmUgTUFTS19aSUNCT03CoMKgICgxIDw8IDEpCj4tI2RlZmluZSBNQVNLX1pJQ0JPUMKg wqAgKDEgPDwgMikKPi0KPi0jZGVmaW5lIFRBUkdFVF9aSUNCT1ogKChyaXNjdl96aWNtb19zdWJl eHQgJiBNQVNLX1pJQ0JPWikgIT0gMCkKPi0jZGVmaW5lIFRBUkdFVF9aSUNCT00gKChyaXNjdl96 aWNtb19zdWJleHQgJiBNQVNLX1pJQ0JPTSkgIT0gMCkKPi0jZGVmaW5lIFRBUkdFVF9aSUNCT1Ag KChyaXNjdl96aWNtb19zdWJleHQgJiBNQVNLX1pJQ0JPUCkgIT0gMCkKPi0KPi0jZGVmaW5lIE1B U0tfWkZITUlOwqDCoCAoMSA8PCAwKQo+LSNkZWZpbmUgTUFTS19aRkjCoMKgwqDCoMKgICgxIDw8 IDEpCj4tCj4tI2RlZmluZSBUQVJHRVRfWkZITUlOICgocmlzY3ZfemZfc3ViZXh0ICYgTUFTS19a RkhNSU4pICE9IDApCj4tI2RlZmluZSBUQVJHRVRfWkZIwqDCoMKgICgocmlzY3ZfemZfc3ViZXh0 ICYgTUFTS19aRkgpICE9IDApCj4tCj4tI2RlZmluZSBNQVNLX1pNTVVMwqDCoMKgwqDCoCAoMSA8 PCAwKQo+LSNkZWZpbmUgVEFSR0VUX1pNTVVMwqDCoMKgICgocmlzY3Zfem1fc3ViZXh0ICYgTUFT S19aTU1VTCkgIT0gMCkKPi0KPi0jZGVmaW5lIE1BU0tfU1ZJTlZBTCAoMSA8PCAwKQo+LSNkZWZp bmUgTUFTS19TVk5BUE9UICgxIDw8IDEpCj4tCj4tI2RlZmluZSBUQVJHRVRfU1ZJTlZBTCAoKHJp c2N2X3N2X3N1YmV4dCAmIE1BU0tfU1ZJTlZBTCkgIT0gMCkKPi0jZGVmaW5lIFRBUkdFVF9TVk5B UE9UICgocmlzY3Zfc3Zfc3ViZXh0ICYgTUFTS19TVk5BUE9UKSAhPSAwKQo+LQo+IC8qIEJpdCBv ZiByaXNjdl96dmxfZmxhZ3Mgd2lsbCBzZXQgY29udGludHVseSwgTi0xIGJpdCB3aWxsIHNldCBp ZiBOLWJpdCBpcwo+wqDCoMKgIHNldCwgZS5nLiBNQVNLX1pWTDY0QiBoYXMgc2V0IHRoZW4gTUFT S19aVkwzMkIgaXMgc2V0LCBzbyB3ZSBjYW4gdXNlCj7CoMKgwqAgcG9wY291bnQgdG8gY2FjbHVs YXRlIHRoZSBtaW5pbWFsIFZMRU4uwqAgKi8KPmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3Jpc2N2 L3Jpc2N2Lm9wdCBiL2djYy9jb25maWcvcmlzY3YvcmlzY3Yub3B0Cj5pbmRleCA3YzNjYTQ4ZDFj Yy4uNzdmNTUzMzU2YjEgMTAwNjQ0Cj4tLS0gYS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2Lm9wdAo+ KysrIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi5vcHQKPkBAIC0yMDMsMzYgKzIwMywxMjYgQEAg bG9uZyByaXNjdl9zdGFja19wcm90ZWN0b3JfZ3VhcmRfb2Zmc2V0ID0gMAo+IFRhcmdldFZhcmlh YmxlCj4gaW50IHJpc2N2X3ppX3N1YmV4dAo+Cj4rTWFzayhaSUNTUikgaW4gVGFyZ2V0VmFyaWFi bGUocmlzY3Zfemlfc3ViZXh0KQo+Kwo+K01hc2soWklGRU5DRUkpIGluIFRhcmdldFZhcmlhYmxl KHJpc2N2X3ppX3N1YmV4dCkKPisKPiBUYXJnZXRWYXJpYWJsZQo+IGludCByaXNjdl96YV9zdWJl eHQKPgo+K01hc2soWkFXUlMpIGluIFRhcmdldFZhcmlhYmxlKHJpc2N2X3phX3N1YmV4dCkKPisK PiBUYXJnZXRWYXJpYWJsZQo+IGludCByaXNjdl96Yl9zdWJleHQKPgo+K01hc2soWkJBKSBpbiBU YXJnZXRWYXJpYWJsZShyaXNjdl96Yl9zdWJleHQpCj4rCj4rTWFzayhaQkIpIGluIFRhcmdldFZh cmlhYmxlKHJpc2N2X3piX3N1YmV4dCkKPisKPitNYXNrKFpCQykgaW4gVGFyZ2V0VmFyaWFibGUo cmlzY3ZfemJfc3ViZXh0KQo+Kwo+K01hc2soWkJTKSBpbiBUYXJnZXRWYXJpYWJsZShyaXNjdl96 Yl9zdWJleHQpCj4rCj4gVGFyZ2V0VmFyaWFibGUKPiBpbnQgcmlzY3ZfemlueF9zdWJleHQKPgo+ K01hc2soWkZJTlgpIGluIFRhcmdldFZhcmlhYmxlKHJpc2N2X3ppbnhfc3ViZXh0KQo+Kwo+K01h c2soWkRJTlgpIGluIFRhcmdldFZhcmlhYmxlKHJpc2N2X3ppbnhfc3ViZXh0KQo+Kwo+K01hc2so WkhJTlgpIGluIFRhcmdldFZhcmlhYmxlKHJpc2N2X3ppbnhfc3ViZXh0KQo+Kwo+K01hc2soWkhJ TlhNSU4pIGluIFRhcmdldFZhcmlhYmxlKHJpc2N2X3ppbnhfc3ViZXh0KQo+Kwo+IFRhcmdldFZh cmlhYmxlCj4gaW50IHJpc2N2X3prX3N1YmV4dAo+Cj4rTWFzayhaQktCKSBpbiBUYXJnZXRWYXJp YWJsZShyaXNjdl96a19zdWJleHQpCj4rCj4rTWFzayhaQktDKSBpbiBUYXJnZXRWYXJpYWJsZShy aXNjdl96a19zdWJleHQpCj4rCj4rTWFzayhaQktYKSBpbiBUYXJnZXRWYXJpYWJsZShyaXNjdl96 a19zdWJleHQpCj4rCj4rTWFzayhaS05FKSBpbiBUYXJnZXRWYXJpYWJsZShyaXNjdl96a19zdWJl eHQpCj4rCj4rTWFzayhaS05EKSBpbiBUYXJnZXRWYXJpYWJsZShyaXNjdl96a19zdWJleHQpCj4r Cj4rTWFzayhaS05IKSBpbiBUYXJnZXRWYXJpYWJsZShyaXNjdl96a19zdWJleHQpCj4rCj4rTWFz ayhaS1IpIGluIFRhcmdldFZhcmlhYmxlKHJpc2N2X3prX3N1YmV4dCkKPisKPitNYXNrKFpLU0VE KSBpbiBUYXJnZXRWYXJpYWJsZShyaXNjdl96a19zdWJleHQpCj4rCj4rTWFzayhaS1NIKSBpbiBU YXJnZXRWYXJpYWJsZShyaXNjdl96a19zdWJleHQpCj4rCj4rTWFzayhaS1QpIGluIFRhcmdldFZh cmlhYmxlKHJpc2N2X3prX3N1YmV4dCkKPisKPiBUYXJnZXRWYXJpYWJsZQo+IGludCByaXNjdl92 ZWN0b3JfZWxlbl9mbGFncwo+Cj4rTWFzayhWRUNUT1JfRUxFTl8zMikgaW4gVGFyZ2V0VmFyaWFi bGUocmlzY3ZfdmVjdG9yX2VsZW5fZmxhZ3MpCj4rCj4rTWFzayhWRUNUT1JfRUxFTl82NCkgaW4g VGFyZ2V0VmFyaWFibGUocmlzY3ZfdmVjdG9yX2VsZW5fZmxhZ3MpCj4rCj4rTWFzayhWRUNUT1Jf RUxFTl9GUF8zMikgaW4gVGFyZ2V0VmFyaWFibGUocmlzY3ZfdmVjdG9yX2VsZW5fZmxhZ3MpCj4r Cj4rTWFzayhWRUNUT1JfRUxFTl9GUF82NCkgaW4gVGFyZ2V0VmFyaWFibGUocmlzY3ZfdmVjdG9y X2VsZW5fZmxhZ3MpCj4rCj4gVGFyZ2V0VmFyaWFibGUKPiBpbnQgcmlzY3ZfenZsX2ZsYWdzCj4K PitNYXNrKFpWTDMyQikgaW4gVGFyZ2V0VmFyaWFibGUocmlzY3ZfenZsX2ZsYWdzKQo+Kwo+K01h c2soWlZMNjRCKSBpbiBUYXJnZXRWYXJpYWJsZShyaXNjdl96dmxfZmxhZ3MpCj4rCj4rTWFzayha VkwxMjhCKSBpbiBUYXJnZXRWYXJpYWJsZShyaXNjdl96dmxfZmxhZ3MpCj4rCj4rTWFzayhaVkwy NTZCKSBpbiBUYXJnZXRWYXJpYWJsZShyaXNjdl96dmxfZmxhZ3MpCj4rCj4rTWFzayhaVkw1MTJC KSBpbiBUYXJnZXRWYXJpYWJsZShyaXNjdl96dmxfZmxhZ3MpCj4rCj4rTWFzayhaVkwxMDI0Qikg aW4gVGFyZ2V0VmFyaWFibGUocmlzY3ZfenZsX2ZsYWdzKQo+Kwo+K01hc2soWlZMMjA0OEIpIGlu IFRhcmdldFZhcmlhYmxlKHJpc2N2X3p2bF9mbGFncykKPisKPitNYXNrKFpWTDQwOTZCKSBpbiBU YXJnZXRWYXJpYWJsZShyaXNjdl96dmxfZmxhZ3MpCj4rCj4rTWFzayhaVkw4MTkyQikgaW4gVGFy Z2V0VmFyaWFibGUocmlzY3ZfenZsX2ZsYWdzKQo+Kwo+K01hc2soWlZMMTYzODRCKSBpbiBUYXJn ZXRWYXJpYWJsZShyaXNjdl96dmxfZmxhZ3MpCj4rCj4rTWFzayhaVkwzMjc2OEIpIGluIFRhcmdl dFZhcmlhYmxlKHJpc2N2X3p2bF9mbGFncykKPisKPitNYXNrKFpWTDY1NTM2QikgaW4gVGFyZ2V0 VmFyaWFibGUocmlzY3ZfenZsX2ZsYWdzKQo+Kwo+IFRhcmdldFZhcmlhYmxlCj4gaW50IHJpc2N2 X3ppY21vX3N1YmV4dAo+Cj4rTWFzayhaSUNCT1opIGluIFRhcmdldFZhcmlhYmxlKHJpc2N2X3pp Y21vX3N1YmV4dCkKPisKPitNYXNrKFpJQ0JPTSkgaW4gVGFyZ2V0VmFyaWFibGUocmlzY3Zfemlj bW9fc3ViZXh0KQo+Kwo+K01hc2soWklDQk9QKSBpbiBUYXJnZXRWYXJpYWJsZShyaXNjdl96aWNt b19zdWJleHQpCj4rCj4gVGFyZ2V0VmFyaWFibGUKPiBpbnQgcmlzY3ZfemZfc3ViZXh0Cj4KPitN YXNrKFpGSE1JTikgaW4gVGFyZ2V0VmFyaWFibGUocmlzY3ZfemZfc3ViZXh0KQo+Kwo+K01hc2so WkZIKSBpbiBUYXJnZXRWYXJpYWJsZShyaXNjdl96Zl9zdWJleHQpCj4rCj4gVGFyZ2V0VmFyaWFi bGUKPiBpbnQgcmlzY3Zfem1fc3ViZXh0Cj4KPitNYXNrKFpNTVVMKSBpbiBUYXJnZXRWYXJpYWJs ZShyaXNjdl96bV9zdWJleHQpCj4rCj4gVGFyZ2V0VmFyaWFibGUKPiBpbnQgcmlzY3Zfc3Zfc3Vi ZXh0Cj4KPitNYXNrKFNWSU5WQUwpIGluIFRhcmdldFZhcmlhYmxlKHJpc2N2X3N2X3N1YmV4dCkK PisKPitNYXNrKFNWTkFQT1QpIGluIFRhcmdldFZhcmlhYmxlKHJpc2N2X3N2X3N1YmV4dCkKPisK PiBFbnVtCj4gTmFtZShpc2Ffc3BlY19jbGFzcykgVHlwZShlbnVtIHJpc2N2X2lzYV9zcGVjX2Ns YXNzKQo+IFN1cHBvcnRlZCBJU0Egc3BlY3MgKGZvciB1c2Ugd2l0aCB0aGUgLW1pc2Etc3BlYz0g b3B0aW9uKToKPmRpZmYgLS1naXQgYS9nY2Mvb3B0LWZ1bmN0aW9ucy5hd2sgYi9nY2Mvb3B0LWZ1 bmN0aW9ucy5hd2sKPmluZGV4IDJhZWUwYjlmMWMzLi45ZDYwODBkNjRhOCAxMDA2NDQKPi0tLSBh L2djYy9vcHQtZnVuY3Rpb25zLmF3awo+KysrIGIvZ2NjL29wdC1mdW5jdGlvbnMuYXdrCj5AQCAt Mzg3LDMgKzM4NywxNCBAQCBmdW5jdGlvbiBpbnRlZ2VyX3JhbmdlX2luZm8ocmFuZ2Vfb3B0aW9u LCBpbml0LCBvcHRpb24sIHVpbnRlZ2VyX3VzZWQpCj7CoMKgwqDCoCBlbHNlCj7CoMKgwqDCoMKg wqDCoMKgIHJldHVybiAiLTEsIC0xIgo+IH0KPisKPisjIEZpbmQgdGhlIGluZGV4IG9mIHRhcmdl dCB2YXJpYWJsZSBmcm9tIGV4dHJhX3RhcmdldF92YXJzCj4rZnVuY3Rpb24gZmluZF9pbmRleCh2 YXIsIHZhcl9hcnJ5LCBuX3Zhcl9hcnJ5KQo+K3sKPivCoMKgwqAgZm9yICh2YXJfaW5kZXggPSAw OyB2YXJfaW5kZXggPCBuX3Zhcl9hcnJ5OyB2YXJfaW5kZXgrKykKPivCoMKgwqAgewo+K8KgwqDC oMKgwqDCoMKgIGlmICh2YXJfYXJyeVt2YXJfaW5kZXhdID09IHZhcikKPivCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGJyZWFrCj4rwqDCoMKgIH0KPivCoMKgwqAgcmV0dXJuIHZhcl9pbmRleAo+K30K PlwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo+ZGlmZiAtLWdpdCBhL2djYy9vcHQtcmVhZC5h d2sgYi9nY2Mvb3B0LXJlYWQuYXdrCj5pbmRleCBjZTM2MTdjOGQ0YS4uZWJlNDhkYjk2OGIgMTAw NjQ0Cj4tLS0gYS9nY2Mvb3B0LXJlYWQuYXdrCj4rKysgYi9nY2Mvb3B0LXJlYWQuYXdrCj5AQCAt MjIsNiArMjIsNyBAQCBCRUdJTiB7Cj4gbl9vcHRzID0gMAo+IG5fbGFuZ3MgPSAwCj4gbl90YXJn ZXRfc2F2ZSA9IDAKPisJbl90YXJnZXRfdmFycyA9IDAKPiBuX2V4dHJhX3ZhcnMgPSAwCj4gbl9l eHRyYV90YXJnZXRfdmFycyA9IDAKPiBuX2V4dHJhX21hc2tzID0gMAo+QEAgLTEyMSw3ICsxMjIs MjAgQEAgQkVHSU4gewo+IG5fb3B0cysrOwo+IH0KPiBlbHNlIHsKPi0JZXh0cmFfbWFza3Nbbl9l eHRyYV9tYXNrcysrXSA9IG5hbWUKPisJaWYoJDAgfiAiaW4iKQo+Kwl7Cj4rCXRhcmdldF92YXIg PSBvcHRfYXJncygiVGFyZ2V0VmFyaWFibGUiLCAkMSkKPisJdmFyX2luZGV4ID0gZmluZF9pbmRl eCh0YXJnZXRfdmFyLCB0YXJnZXRfdmFycywgbl90YXJnZXRfdmFycykKPisJaWYgKHZhcl9pbmRl eCA9PSBuX3RhcmdldF92YXJzKQo+Kwl7Cj4rCXRhcmdldF92YXJzW25fdGFyZ2V0X3ZhcnMrK10g PSB0YXJnZXRfdmFyCj4rCX0KPisJb3RoZXJfbWFza3NbdmFyX2luZGV4XVtuX290aGVyX21hc2tb dmFyX2luZGV4XSsrXSA9IG5hbWUKPisJfQo+KwllbHNlCj4rCXsKPisJZXh0cmFfbWFza3Nbbl9l eHRyYV9tYXNrcysrXSA9IG5hbWUKPisJfQo+IH0KPiB9Cj4gfQo+ZGlmZiAtLWdpdCBhL2djYy9v cHRoLWdlbi5hd2sgYi9nY2Mvb3B0aC1nZW4uYXdrCj5pbmRleCA4YmJhOGVjNDU0OS4uMjQ3YTlm Yjg5NDQgMTAwNjQ0Cj4tLS0gYS9nY2Mvb3B0aC1nZW4uYXdrCj4rKysgYi9nY2Mvb3B0aC1nZW4u YXdrCj5AQCAtNDA2LDYgKzQwNiwxOCBAQCBmb3IgKGkgPSAwOyBpIDwgbl9leHRyYV9tYXNrczsg aSsrKSB7Cj4gcHJpbnQgIiNkZWZpbmUgTUFTS18iIGV4dHJhX21hc2tzW2ldICIgKDFVIDw8ICIg bWFza251bVsiIl0rKyAiKSIKPiB9Cj4KPitmb3IgKGkgPSAwOyBpIDwgbl90YXJnZXRfdmFyczsg aSsrKQo+K3sKPisJaWYgKGZpbmRfaW5kZXgodGFyZ2V0X3ZhcnNbaV0sIGV4dHJhX3RhcmdldF92 YXJzLCBuX2V4dHJhX3RhcmdldF92YXJzKSA9PSBuX2V4dHJhX3RhcmdldF92YXJzKQo+Kwljb250 aW51ZQo+Kwlmb3IgKGogPSAwOyBqIDwgbl9vdGhlcl9tYXNrW2ldOyBqKyspCj4rCXsKPisJcHJp bnQgIiNkZWZpbmUgTUFTS18iIG90aGVyX21hc2tzW2ldW2pdICIgKDFVIDw8ICIgb3RoZXJfbWFz a251bVtpXVsiIl0rKyAiKSIKPisJfQo+KwlpZiAob3RoZXJfbWFza251bVtpXVsiIl0gPiAzMikK PisJcHJpbnQgIiNlcnJvciB0b28gbWFueSB0YXJnZXQgbWFza3MgZm9yIiBleHRyYV90YXJnZXRf dmFyc1tpXQo+K30KPisKPiBmb3IgKHZhciBpbiBtYXNrbnVtKSB7Cj4gaWYgKHZhciAhPSAiIiAm JiBob3N0X3dpZGVfaW50W3Zhcl0gPT0gInllcyIpIHsKPiBwcmludCAiI2lmIGRlZmluZWQoSE9T VF9CSVRTX1BFUl9XSURFX0lOVCkgJiYgIiBtYXNrbnVtW3Zhcl0gIiA+IEhPU1RfQklUU19QRVJf V0lERV9JTlQiCj5AQCAtNDU3LDYgKzQ2OSwxNiBAQCBmb3IgKGkgPSAwOyBpIDwgbl9leHRyYV9t YXNrczsgaSsrKSB7Cj4gcHJpbnQgIiNkZWZpbmUgVEFSR0VUXyIgZXh0cmFfbWFza3NbaV0gXAo+ IMKgwqDCoMKgwqAgIiAoKHRhcmdldF9mbGFncyAmIE1BU0tfIiBleHRyYV9tYXNrc1tpXSAiKSAh PSAwKSIKPiB9Cj4rZm9yIChpID0gMDsgaSA8IG5fdGFyZ2V0X3ZhcnM7IGkrKykKPit7Cj4rCWlm IChmaW5kX2luZGV4KHRhcmdldF92YXJzW2ldLCBleHRyYV90YXJnZXRfdmFycywgbl9leHRyYV90 YXJnZXRfdmFycykgPT0gbl9leHRyYV90YXJnZXRfdmFycykKPisJY29udGludWUKPisJZm9yIChq ID0gMDsgaiA8IG5fb3RoZXJfbWFza1tpXTsgaisrKQo+Kwl7Cj4rCXByaW50ICIjZGVmaW5lIFRB UkdFVF8iIG90aGVyX21hc2tzW2ldW2pdIFwKPisJwqDCoMKgwqDCoCAiICgoIiB0YXJnZXRfdmFy c1tpXSAiICYgTUFTS18iIG90aGVyX21hc2tzW2ldW2pdICIpICE9IDApIgo+Kwl9Cj4rfQo+IHBy aW50ICIiCj4KPiBmb3IgKGkgPSAwOyBpIDwgbl9vcHRzOyBpKyspIHsKPi0tCj4yLjE3LjEgClBp bmcswqBJZiB0aGlzIHBsYW4gaXMgZmVhc2libGUsIEkgd2lsbCBkbyByZWJhc2UuIFRoYW5rcyE=