From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from xry111.site (xry111.site [IPv6:2001:470:683e::1]) by sourceware.org (Postfix) with ESMTPS id 1C4263858C20 for ; Tue, 22 Nov 2022 14:03:24 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 1C4263858C20 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=xry111.site Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=xry111.site DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=xry111.site; s=default; t=1669125802; bh=cl2MG2Oe3E2qGdoljebD3IjDnJoY3vK2Se8GOTMSv7I=; h=Subject:From:To:Cc:Date:In-Reply-To:References:From; b=DotvH/14YjSubzpN0SPG4wpzYoYwPUC+NhLhew5ANswstjGwLTXa43dnUw/YOeS6z EDWWcxD3IRD378yR8RixtFizrYhiRyjejpHgm7jv0u/hCf6nrv9sW1mkPXwGGrm59Y 5YO7Fb/bfPsFkjnYzESeRcO8zjpAfBwgkUwAWPXM= Received: from localhost.localdomain (xry111.site [IPv6:2001:470:683e::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature ECDSA (P-384) server-digest SHA384) (Client did not present a certificate) (Authenticated sender: xry111@xry111.site) by xry111.site (Postfix) with ESMTPSA id 2D9C265C67; Tue, 22 Nov 2022 09:03:20 -0500 (EST) Message-ID: Subject: Re: [PATCH v4] LoongArch: Optimize immediate load. From: Xi Ruoyao To: Lulu Cheng , gcc-patches@gcc.gnu.org Cc: i@xen0n.name, xuchenghua@loongson.cn Date: Tue, 22 Nov 2022 22:03:19 +0800 In-Reply-To: <20221117095909.2896386-1-chenglulu@loongson.cn> References: <20221117095909.2896386-1-chenglulu@loongson.cn> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 User-Agent: Evolution 3.46.0 MIME-Version: 1.0 X-Spam-Status: No, score=-5.2 required=5.0 tests=BAYES_00,BODY_8BITS,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FROM_SUSPICIOUS_NTLD,GIT_PATCH_0,KAM_SHORT,LIKELY_SPAM_FROM,PDS_OTHER_BAD_TLD,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: V2hpbGUgSSBzdGlsbCBjYW4ndCBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbW1lZGlhdGUgbG9hZCBp c3N1ZSBhbmQgaG93CnRoaXMgcGF0Y2ggZml4IGl0LCBJJ3ZlIHRlc3RlZCB0aGlzIHBhdGNoIChh bG9uZ3NpZGUgdGhlIHByZWZldGNoCmluc3RydWN0aW9uIHBhdGNoKSB3aXRoIGJvb3RzdHJhcC11 YnNhbi4gIEFuZCB0aGUgY29tcGlsZWQgcmVzdWx0IG9mCmltbS1sb2FkMS5jIHNlZW1zIE9LLgoK T24gVGh1LCAyMDIyLTExLTE3IGF0IDE3OjU5ICswODAwLCBMdWx1IENoZW5nIHdyb3RlOgo+IHYx IC0+IHYyOgo+IDEuIENoYW5nZSB0aGUgY29kZSBmb3JtYXQuCj4gMi4gRml4IGJ1Z3MgaW4gdGhl IGNvZGUuCj4gCj4gdjIgLT4gdjM6Cj4gTW9kaWZ5aW5nIGEgY29kZSBpbXBsZW1lbnRhdGlvbiBv ZiBhbiB1bmRlZmluZWQgYmVoYXZpb3IuCj4gCj4gdjMgLT4gdjQ6Cj4gTW92ZSB0aGUgcGFydCBv ZiB0aGUgaW1tZWRpYXRlIG51bWJlciBkZWNvbXBvc2l0aW9uIGZyb20gZXhwYW5kIHBhc3MKPiB0 byBzcGxpdAo+IHBhc3MuCj4gCj4gQm90aCByZWdyZXNzaW9uIHRlc3RzIGFuZCBzcGVjMjAwNiBw YXNzZWQuCj4gCj4gVGhlIHByb2JsZW0gbWVudGlvbmVkIGluIHRoZSBsaW5rIGRvZXMgbm90IG1v dmUgdGhlIGZvdXIgaW1tZWRpYXRlCj4gbG9hZAo+IGluc3RydWN0aW9ucyBvdXQgb2YgdGhlIGxv b3AuIEl0IGhhcyBiZWVuIG9wdGltaXplZC4gTm93LCBhcyBpbiB0aGUKPiB0ZXN0IGNhc2UsCj4g Zm91ciBpbW1lZGlhdGUgbG9hZCBpbnN0cnVjdGlvbnMgYXJlIGdlbmVyYXRlZCBvdXRzaWRlIHRo ZSBsb29wLgo+ICgKPiBodHRwczovL3NvdXJjZXdhcmUub3JnL3BpcGVybWFpbC9saWJjLWFscGhh LzIwMjItU2VwdGVtYmVyLzE0MjIwMi5odG1sKQo+IAo+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gQmVjYXVzZSBs b29wMl9pbnZhcmlhbnQgcGFzcyB3aWxsIGV4dHJhY3QgdGhlIGluc3RydWN0aW9ucyB0aGF0IGRv IG5vdAo+IGNoYW5nZQo+IGluIHRoZSBsb29wIG91dCBvZiB0aGUgbG9vcCwgc29tZSBpbnN0cnVj dGlvbnMgd2lsbCBub3QgbWVldCB0aGUKPiBleHRyYWN0aW9uCj4gY29uZGl0aW9ucyBpZiB0aGUg bWFjaGluZSBwZXJmb3JtcyBpbW1lZGlhdGUgZGVjb21wb3NpdGlvbiB3aGlsZQo+IGV4cGFuZCBw YXNzLAo+IHNvIHRoZSBpbW1lZGlhdGUgZGVjb21wb3NpdGlvbiB3aWxsIGJlIHRyYW5zZmVycmVk IHRvIHRoZSBzcGxpdAo+IHByb2Nlc3MuCj4gCj4gZ2NjL0NoYW5nZUxvZzoKPiAKPiDCoMKgwqDC oMKgwqDCoMKgKiBjb25maWcvbG9vbmdhcmNoL2xvb25nYXJjaC5jYyAoZW51bQo+IGxvb25nYXJj aF9sb2FkX2ltbV9tZXRob2QpOgo+IMKgwqDCoMKgwqDCoMKgwqBSZW1vdmUgdGhlIG1lbWJlciBN RVRIT0RfSU5TViB0aGF0IGlzIG5vdCBjdXJyZW50bHkgdXNlZC4KPiDCoMKgwqDCoMKgwqDCoMKg KHN0cnVjdCBsb29uZ2FyY2hfaW50ZWdlcl9vcCk6IERlZmluZSBhIG5ldyBtZW1iZXIgY3Vycl92 YWx1ZSwKPiDCoMKgwqDCoMKgwqDCoMKgdGhhdCByZWNvcmRzIHRoZSB2YWx1ZSBvZiB0aGUgbnVt YmVyIHN0b3JlZCBpbiB0aGUgZGVzdGluYXRpb24KPiDCoMKgwqDCoMKgwqDCoMKgcmVnaXN0ZXIg aW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGN1cnJlbnQgaW5zdHJ1Y3Rpb24gaGFzIHJ1bi4KPiDCoMKg wqDCoMKgwqDCoMKgKGxvb25nYXJjaF9idWlsZF9pbnRlZ2VyKTogQXNzaWduIGEgdmFsdWUgdG8g dGhlIGN1cnJfdmFsdWUKPiBtZW1iZXIgdmFyaWFibGUuCj4gwqDCoMKgwqDCoMKgwqDCoChsb29u Z2FyY2hfbW92ZV9pbnRlZ2VyKTogQWRkcyBpbmZvcm1hdGlvbiBmb3IgdGhlIGltbWVkaWF0ZQo+ IGxvYWQgaW5zdHJ1Y3Rpb24uCj4gwqDCoMKgwqDCoMKgwqDCoCogY29uZmlnL2xvb25nYXJjaC9s b29uZ2FyY2gubWQgKCptb3ZkaV8zMmJpdCk6IFJlZGVmaW5lIGFzCj4gZGVmaW5lX2luc25fYW5k X3NwbGl0Lgo+IMKgwqDCoMKgwqDCoMKgwqAoKm1vdmRpXzY0Yml0KTogTGlrZXdpc2UuCj4gwqDC oMKgwqDCoMKgwqDCoCgqbW92c2lfaW50ZXJuYWwpOiBMaWtld2lzZS4KPiDCoMKgwqDCoMKgwqDC oMKgKCptb3ZoaV9pbnRlcm5hbCk6IExpa2V3aXNlLgo+IMKgwqDCoMKgwqDCoMKgwqAqIGNvbmZp Zy9sb29uZ2FyY2gvcHJlZGljYXRlcy5tZDogUmV0dXJuIHRydWUgYXMgbG9uZyBhcyBpdCBpcwo+ IENPTlNUX0lOVCwgZW5zdXJlCj4gwqDCoMKgwqDCoMKgwqDCoHRoYXQgdGhlIGltbWVkaWF0ZSBu dW1iZXIgaXMgbm90IG9wdGltaXplZCBieSBkZWNvbXBvc2l0aW9uCj4gZHVyaW5nIGV4cGFuZAo+ IMKgwqDCoMKgwqDCoMKgwqBvcHRpbWl6YXRpb24gbG9vcC4KPiAKPiBnY2MvdGVzdHN1aXRlL0No YW5nZUxvZzoKPiAKPiDCoMKgwqDCoMKgwqDCoMKgKiBnY2MudGFyZ2V0L2xvb25nYXJjaC9pbW0t bG9hZC5jOiBOZXcgdGVzdC4KPiDCoMKgwqDCoMKgwqDCoMKgKiBnY2MudGFyZ2V0L2xvb25nYXJj aC9pbW0tbG9hZDEuYzogTmV3IHRlc3QuCj4gLS0tCj4gwqBnY2MvY29uZmlnL2xvb25nYXJjaC9s b29uZ2FyY2guY2PCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA2MiArKysrKysrKysrLS0tLS0t LS0KPiAtCj4gwqBnY2MvY29uZmlnL2xvb25nYXJjaC9sb29uZ2FyY2gubWTCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfCA0NCArKysrKysrKysrKy0tCj4gwqBnY2MvY29uZmlnL2xvb25nYXJjaC9w cmVkaWNhdGVzLm1kwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgMiArLQo+IMKgZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L2xvb25nYXJjaC9pbW0tbG9hZC5jIHwgMTAgKysrCj4gwqAuLi4vZ2Nj LnRhcmdldC9sb29uZ2FyY2gvaW1tLWxvYWQxLmPCoMKgwqDCoMKgwqDCoMKgwqAgfCAyNiArKysr KysrKwo+IMKgNSBmaWxlcyBjaGFuZ2VkLCAxMTAgaW5zZXJ0aW9ucygrKSwgMzQgZGVsZXRpb25z KC0pCj4gwqBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2xvb25n YXJjaC9pbW0tbG9hZC5jCj4gwqBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2xvb25nYXJjaC9pbW0tbG9hZDEuYwo+IAo+IGRpZmYgLS1naXQgYS9nY2MvY29uZmln L2xvb25nYXJjaC9sb29uZ2FyY2guY2MKPiBiL2djYy9jb25maWcvbG9vbmdhcmNoL2xvb25nYXJj aC5jYwo+IGluZGV4IDhlZTMyYzkwNTczLi45ZTBkNmM3YzNlYSAxMDA2NDQKPiAtLS0gYS9nY2Mv Y29uZmlnL2xvb25nYXJjaC9sb29uZ2FyY2guY2MKPiArKysgYi9nY2MvY29uZmlnL2xvb25nYXJj aC9sb29uZ2FyY2guY2MKPiBAQCAtMTM5LDIyICsxMzksMjEgQEAgc3RydWN0IGxvb25nYXJjaF9h ZGRyZXNzX2luZm8KPiDCoAo+IMKgwqDCoCBNRVRIT0RfTFU1Mkk6Cj4gwqDCoMKgwqDCoCBMb2Fk IDUyLTYzIGJpdCBvZiB0aGUgaW1tZWRpYXRlIG51bWJlci4KPiAtCj4gLcKgwqAgTUVUSE9EX0lO U1Y6Cj4gLcKgwqDCoMKgIGltbWVkaWF0ZSBsaWtlIDB4ZmZmMDAwMDBmZmZmZnh4eAo+IC3CoMKg ICovCj4gKyovCj4gwqBlbnVtIGxvb25nYXJjaF9sb2FkX2ltbV9tZXRob2QKPiDCoHsKPiDCoMKg IE1FVEhPRF9OT1JNQUwsCj4gwqDCoCBNRVRIT0RfTFUzMkksCj4gLcKgIE1FVEhPRF9MVTUySSwK PiAtwqAgTUVUSE9EX0lOU1YKPiArwqAgTUVUSE9EX0xVNTJJCj4gwqB9Owo+IMKgCj4gwqBzdHJ1 Y3QgbG9vbmdhcmNoX2ludGVnZXJfb3AKPiDCoHsKPiDCoMKgIGVudW0gcnR4X2NvZGUgY29kZTsK PiDCoMKgIEhPU1RfV0lERV9JTlQgdmFsdWU7Cj4gK8KgIC8qIFJlcHJlc2VudCB0aGUgcmVzdWx0 IG9mIHRoZSBpbW1lZGlhdGUgY291bnQgb2YgdGhlIGxvYWQKPiBpbnN0cnVjdGlvbiBhdAo+ICvC oMKgwqDCoCBlYWNoIHN0ZXAuwqAgKi8KPiArwqAgSE9TVF9XSURFX0lOVCBjdXJyX3ZhbHVlOwo+ IMKgwqAgZW51bSBsb29uZ2FyY2hfbG9hZF9pbW1fbWV0aG9kIG1ldGhvZDsKPiDCoH07Cj4gwqAK PiBAQCAtMTQ3NSwyNCArMTQ3NCwyNyBAQCBsb29uZ2FyY2hfYnVpbGRfaW50ZWdlciAoc3RydWN0 Cj4gbG9vbmdhcmNoX2ludGVnZXJfb3AgKmNvZGVzLAo+IMKgwqDCoMKgIHsKPiDCoMKgwqDCoMKg wqAgLyogVGhlIHZhbHVlIG9mIHRoZSBsb3dlciAzMiBiaXQgYmUgbG9hZGVkIHdpdGggb25lCj4g aW5zdHJ1Y3Rpb24uCj4gwqDCoMKgwqDCoMKgwqDCoCBsdTEyaS53LsKgICovCj4gLcKgwqDCoMKg wqAgY29kZXNbMF0uY29kZSA9IFVOS05PV047Cj4gLcKgwqDCoMKgwqAgY29kZXNbMF0ubWV0aG9k ID0gTUVUSE9EX05PUk1BTDsKPiAtwqDCoMKgwqDCoCBjb2Rlc1swXS52YWx1ZSA9IGxvd19wYXJ0 Owo+ICvCoMKgwqDCoMKgIGNvZGVzW2Nvc3RdLmNvZGUgPSBVTktOT1dOOwo+ICvCoMKgwqDCoMKg IGNvZGVzW2Nvc3RdLm1ldGhvZCA9IE1FVEhPRF9OT1JNQUw7Cj4gK8KgwqDCoMKgwqAgY29kZXNb Y29zdF0udmFsdWUgPSBsb3dfcGFydDsKPiArwqDCoMKgwqDCoCBjb2Rlc1tjb3N0XS5jdXJyX3Zh bHVlID0gbG93X3BhcnQ7Cj4gwqDCoMKgwqDCoMKgIGNvc3QrKzsKPiDCoMKgwqDCoCB9Cj4gwqDC oCBlbHNlCj4gwqDCoMKgwqAgewo+IMKgwqDCoMKgwqDCoCAvKiBsdTEyaS53ICsgaW9yLsKgICov Cj4gLcKgwqDCoMKgwqAgY29kZXNbMF0uY29kZSA9IFVOS05PV047Cj4gLcKgwqDCoMKgwqAgY29k ZXNbMF0ubWV0aG9kID0gTUVUSE9EX05PUk1BTDsKPiAtwqDCoMKgwqDCoCBjb2Rlc1swXS52YWx1 ZSA9IGxvd19wYXJ0ICYgfihJTU1fUkVBQ0ggLSAxKTsKPiArwqDCoMKgwqDCoCBjb2Rlc1tjb3N0 XS5jb2RlID0gVU5LTk9XTjsKPiArwqDCoMKgwqDCoCBjb2Rlc1tjb3N0XS5tZXRob2QgPSBNRVRI T0RfTk9STUFMOwo+ICvCoMKgwqDCoMKgIGNvZGVzW2Nvc3RdLnZhbHVlID0gbG93X3BhcnQgJiB+ KElNTV9SRUFDSCAtIDEpOwo+ICvCoMKgwqDCoMKgIGNvZGVzW2Nvc3RdLmN1cnJfdmFsdWUgPSBj b2Rlc1tjb3N0XS52YWx1ZTsKPiDCoMKgwqDCoMKgwqAgY29zdCsrOwo+IMKgwqDCoMKgwqDCoCBI T1NUX1dJREVfSU5UIGlvcnYgPSBsb3dfcGFydCAmIChJTU1fUkVBQ0ggLSAxKTsKPiDCoMKgwqDC oMKgwqAgaWYgKGlvcnYgIT0gMCkKPiDCoMKgwqDCoMKgwqDCoMKgewo+IC3CoMKgwqDCoMKgwqDC oMKgIGNvZGVzWzFdLmNvZGUgPSBJT1I7Cj4gLcKgwqDCoMKgwqDCoMKgwqAgY29kZXNbMV0ubWV0 aG9kID0gTUVUSE9EX05PUk1BTDsKPiAtwqDCoMKgwqDCoMKgwqDCoCBjb2Rlc1sxXS52YWx1ZSA9 IGlvcnY7Cj4gK8KgwqDCoMKgwqDCoMKgwqAgY29kZXNbY29zdF0uY29kZSA9IElPUjsKPiArwqDC oMKgwqDCoMKgwqDCoCBjb2Rlc1tjb3N0XS5tZXRob2QgPSBNRVRIT0RfTk9STUFMOwo+ICvCoMKg wqDCoMKgwqDCoMKgIGNvZGVzW2Nvc3RdLnZhbHVlID0gaW9ydjsKPiArwqDCoMKgwqDCoMKgwqDC oCBjb2Rlc1tjb3N0XS5jdXJyX3ZhbHVlID0gbG93X3BhcnQ7Cj4gwqDCoMKgwqDCoMKgwqDCoMKg IGNvc3QrKzsKPiDCoMKgwqDCoMKgwqDCoMKgfQo+IMKgwqDCoMKgIH0KPiBAQCAtMTUxNSwxMSAr MTUxNywxNCBAQCBsb29uZ2FyY2hfYnVpbGRfaW50ZWdlciAoc3RydWN0Cj4gbG9vbmdhcmNoX2lu dGVnZXJfb3AgKmNvZGVzLAo+IMKgwqDCoMKgwqDCoMKgwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoMKg IGNvZGVzW2Nvc3RdLm1ldGhvZCA9IE1FVEhPRF9MVTUySTsKPiDCoMKgwqDCoMKgwqDCoMKgwqAg Y29kZXNbY29zdF0udmFsdWUgPSB2YWx1ZSAmIExVNTJJX0I7Cj4gK8KgwqDCoMKgwqDCoMKgwqAg Y29kZXNbY29zdF0uY3Vycl92YWx1ZSA9IHZhbHVlOwo+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1 cm4gY29zdCArIDE7Cj4gwqDCoMKgwqDCoMKgwqDCoH0KPiDCoAo+IMKgwqDCoMKgwqDCoCBjb2Rl c1tjb3N0XS5tZXRob2QgPSBNRVRIT0RfTFUzMkk7Cj4gwqDCoMKgwqDCoMKgIGNvZGVzW2Nvc3Rd LnZhbHVlID0gKHZhbHVlICYgTFUzMklfQikgfCAoc2lnbjUxID8gTFU1MklfQiA6IDApOwo+ICvC oMKgwqDCoMKgIGNvZGVzW2Nvc3RdLmN1cnJfdmFsdWUgPSAodmFsdWUgJiAweGZmZmZmZmZmZmZm ZmYpCj4gK8KgwqDCoMKgwqDCoMKgfCAoc2lnbjUxID8gTFU1MklfQiA6IDApOwo+IMKgwqDCoMKg wqDCoCBjb3N0Kys7Cj4gwqAKPiDCoMKgwqDCoMKgwqAgLyogRGV0ZXJtaW5lIHdoZXRoZXIgdGhl IDUyLTYxIGJpdHMgYXJlIHNpZ24tZXh0ZW5kZWQgZnJvbSB0aGUKPiBsb3cgb3JkZXIsCj4gQEAg LTE1MjgsNiArMTUzMyw3IEBAIGxvb25nYXJjaF9idWlsZF9pbnRlZ2VyIChzdHJ1Y3QKPiBsb29u Z2FyY2hfaW50ZWdlcl9vcCAqY29kZXMsCj4gwqDCoMKgwqDCoMKgwqDCoHsKPiDCoMKgwqDCoMKg wqDCoMKgwqAgY29kZXNbY29zdF0ubWV0aG9kID0gTUVUSE9EX0xVNTJJOwo+IMKgwqDCoMKgwqDC oMKgwqDCoCBjb2Rlc1tjb3N0XS52YWx1ZSA9IHZhbHVlICYgTFU1MklfQjsKPiArwqDCoMKgwqDC oMKgwqDCoCBjb2Rlc1tjb3N0XS5jdXJyX3ZhbHVlID0gdmFsdWU7Cj4gwqDCoMKgwqDCoMKgwqDC oMKgIGNvc3QrKzsKPiDCoMKgwqDCoMKgwqDCoMKgfQo+IMKgwqDCoMKgIH0KPiBAQCAtMjkxMSw2 ICsyOTE3LDkgQEAgbG9vbmdhcmNoX21vdmVfaW50ZWdlciAocnR4IHRlbXAsIHJ0eCBkZXN0LAo+ IHVuc2lnbmVkIEhPU1RfV0lERV9JTlQgdmFsdWUpCj4gwqDCoMKgwqDCoMKgIGVsc2UKPiDCoMKg wqDCoMKgwqDCoMKgeCA9IGZvcmNlX3JlZyAobW9kZSwgeCk7Cj4gwqAKPiArwqDCoMKgwqDCoCBz ZXRfdW5pcXVlX3JlZ19ub3RlIChnZXRfbGFzdF9pbnNuICgpLCBSRUdfRVFVQUwsCj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEdFTl9JTlQgKGNv ZGVzW2ktMV0uY3Vycl92YWx1ZSkpOwo+ICsKPiDCoMKgwqDCoMKgwqAgc3dpdGNoIChjb2Rlc1tp XS5tZXRob2QpCj4gwqDCoMKgwqDCoMKgwqDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgY2FzZSBNRVRI T0RfTk9STUFMOgo+IEBAIC0yOTE4LDIyICsyOTI3LDE3IEBAIGxvb25nYXJjaF9tb3ZlX2ludGVn ZXIgKHJ0eCB0ZW1wLCBydHggZGVzdCwKPiB1bnNpZ25lZCBIT1NUX1dJREVfSU5UIHZhbHVlKQo+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgR0VOX0lOVCAoY29kZXNbaV0udmFsdWUpKTsKPiDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7 Cj4gwqDCoMKgwqDCoMKgwqDCoGNhc2UgTUVUSE9EX0xVMzJJOgo+IC3CoMKgwqDCoMKgwqDCoMKg IGVtaXRfaW5zbiAoCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgIGdlbl9ydHhfU0VUICh4LAo+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdlbl9ydHhfSU9S IChESW1vZGUsCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnZW5fcnR4X1pFUk9fRVhURU5EICgKPiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgREltb2RlLCBnZW5fcnR4X1NVQlJFRwo+IChTSW1vZGUsIHgsIDAp KSwKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIEdFTl9JTlQgKGNvZGVzW2ldLnZhbHVlKSkpKTsKPiArwqDC oMKgwqDCoMKgwqDCoCBnY2NfYXNzZXJ0IChtb2RlID09IERJbW9kZSk7Cj4gK8KgwqDCoMKgwqDC oMKgwqAgeCA9IGdlbl9ydHhfSU9SIChESW1vZGUsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdlbl9ydHhfWkVST19FWFRFTkQgKERJbW9kZSwK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdlbl9ydHhfU1VCUkVHCj4g KFNJbW9kZSwgeCwgMCkpLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBHRU5fSU5UIChjb2Rlc1tpXS52YWx1ZSkpOwo+IMKgwqDCoMKgwqDCoMKg wqDCoCBicmVhazsKPiDCoMKgwqDCoMKgwqDCoMKgY2FzZSBNRVRIT0RfTFU1Mkk6Cj4gLcKgwqDC oMKgwqDCoMKgwqAgZW1pdF9pbnNuIChnZW5fbHU1MmlfZCAoeCwgeCwgR0VOX0lOVCAoMHhmZmZm ZmZmZmZmZmZmKSwKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBHRU5fSU5UIChjb2Rlc1tpXS52YWx1ZSkpKTsKPiAtwqDC oMKgwqDCoMKgwqDCoCBicmVhazsKPiAtwqDCoMKgwqDCoMKgwqBjYXNlIE1FVEhPRF9JTlNWOgo+ IC3CoMKgwqDCoMKgwqDCoMKgIGVtaXRfaW5zbiAoCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgIGdl bl9ydHhfU0VUIChnZW5fcnR4X1pFUk9fRVhUUkFDVCAoREltb2RlLCB4LCBHRU5fSU5UCj4gKDIw KSwKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEdFTl9JTlQgKDMyKSksCj4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ2VuX3J0eF9S RUcgKERJbW9kZSwgMCkpKTsKPiArwqDCoMKgwqDCoMKgwqDCoCBnY2NfYXNzZXJ0IChtb2RlID09 IERJbW9kZSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqAgeCA9IGdlbl9ydHhfSU9SIChESW1vZGUsCj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdlbl9y dHhfQU5EIChESW1vZGUsIHgsIEdFTl9JTlQKPiAoMHhmZmZmZmZmZmZmZmZmKSksCj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEdFTl9JTlQgKGNv ZGVzW2ldLnZhbHVlKSk7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+IMKgwqDCoMKgwqDC oMKgwqBkZWZhdWx0Ogo+IMKgwqDCoMKgwqDCoMKgwqDCoCBnY2NfdW5yZWFjaGFibGUgKCk7Cj4g ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbG9vbmdhcmNoL2xvb25nYXJjaC5tZAo+IGIvZ2NjL2Nv bmZpZy9sb29uZ2FyY2gvbG9vbmdhcmNoLm1kCj4gaW5kZXggMmZkYTUzODE5MDQuLmY2MWRiNjZk NTM1IDEwMDY0NAo+IC0tLSBhL2djYy9jb25maWcvbG9vbmdhcmNoL2xvb25nYXJjaC5tZAo+ICsr KyBiL2djYy9jb25maWcvbG9vbmdhcmNoL2xvb25nYXJjaC5tZAo+IEBAIC0xNzE4LDIzICsxNzE4 LDQxIEBAIChkZWZpbmVfZXhwYW5kICJtb3ZkaSIKPiDCoMKgwqDCoCBET05FOwo+IMKgfSkKPiDC oAo+IC0oZGVmaW5lX2luc24gIiptb3ZkaV8zMmJpdCIKPiArKGRlZmluZV9pbnNuX2FuZF9zcGxp dCAiKm1vdmRpXzMyYml0Igo+IMKgwqAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6REkgMCAibm9uaW1t ZWRpYXRlX29wZXJhbmQiCj4gIj1yLHIscix3LCpmLCpmLCpyLCptIikKPiDCoMKgwqDCoMKgwqDC oCAobWF0Y2hfb3BlcmFuZDpESSAxICJtb3ZlX29wZXJhbmQiICJyLGksdyxyLCpKKnIsKm0sKmYs KmYiKSldCj4gwqDCoCAiIVRBUkdFVF82NEJJVAo+IMKgwqDCoCAmJiAocmVnaXN0ZXJfb3BlcmFu ZCAob3BlcmFuZHNbMF0sIERJbW9kZSkKPiDCoMKgwqDCoMKgwqDCoCB8fCByZWdfb3JfMF9vcGVy YW5kIChvcGVyYW5kc1sxXSwgREltb2RlKSkiCj4gwqDCoCB7IHJldHVybiBsb29uZ2FyY2hfb3V0 cHV0X21vdmUgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSk7IH0KPiArwqAgIkNPTlNUX0lOVF9Q IChvcGVyYW5kc1sxXSkgJiYgUkVHX1AgKG9wZXJhbmRzWzBdKSAmJiBHUF9SRUdfUAo+IChSRUdO Two+ICvCoCAob3BlcmFuZHNbMF0pKSIKPiArwqAgWyhjb25zdF9pbnQgMCldCj4gK8KgICIKPiAr ewo+ICvCoCBsb29uZ2FyY2hfbW92ZV9pbnRlZ2VyIChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMF0s IElOVFZBTAo+IChvcGVyYW5kc1sxXSkpOwo+ICvCoCBET05FOwo+ICt9Cj4gK8KgICIKPiDCoMKg IFsoc2V0X2F0dHIgIm1vdmVfdHlwZSIKPiAibW92ZSxjb25zdCxsb2FkLHN0b3JlLG1ndGYsZnBs b2FkLG1mdGcsZnBzdG9yZSIpCj4gwqDCoMKgIChzZXRfYXR0ciAibW9kZSIgIkRJIildKQo+IMKg Cj4gLShkZWZpbmVfaW5zbiAiKm1vdmRpXzY0Yml0Igo+ICsoZGVmaW5lX2luc25fYW5kX3NwbGl0 ICIqbW92ZGlfNjRiaXQiCj4gwqDCoCBbKHNldCAobWF0Y2hfb3BlcmFuZDpESSAwICJub25pbW1l ZGlhdGVfb3BlcmFuZCIKPiAiPXIscixyLHcsKmYsKmYsKnIsKm0iKQo+IMKgwqDCoMKgwqDCoMKg wqAobWF0Y2hfb3BlcmFuZDpESSAxICJtb3ZlX29wZXJhbmQiCj4gInIsWWQsdyxySiwqcipKLCpt LCpmLCpmIikpXQo+IMKgwqAgIlRBUkdFVF82NEJJVAo+IMKgwqDCoCAmJiAocmVnaXN0ZXJfb3Bl cmFuZCAob3BlcmFuZHNbMF0sIERJbW9kZSkKPiDCoMKgwqDCoMKgwqDCoCB8fCByZWdfb3JfMF9v cGVyYW5kIChvcGVyYW5kc1sxXSwgREltb2RlKSkiCj4gwqDCoCB7IHJldHVybiBsb29uZ2FyY2hf b3V0cHV0X21vdmUgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSk7IH0KPiArwqAgIkNPTlNUX0lO VF9QIChvcGVyYW5kc1sxXSkgJiYgUkVHX1AgKG9wZXJhbmRzWzBdKSAmJiBHUF9SRUdfUAo+IChS RUdOTwo+ICvCoCAob3BlcmFuZHNbMF0pKSIKPiArwqAgWyhjb25zdF9pbnQgMCldCj4gK8KgICIK PiArewo+ICvCoCBsb29uZ2FyY2hfbW92ZV9pbnRlZ2VyIChvcGVyYW5kc1swXSwgb3BlcmFuZHNb MF0sIElOVFZBTAo+IChvcGVyYW5kc1sxXSkpOwo+ICvCoCBET05FOwo+ICt9Cj4gK8KgICIKPiDC oMKgIFsoc2V0X2F0dHIgIm1vdmVfdHlwZSIKPiAibW92ZSxjb25zdCxsb2FkLHN0b3JlLG1ndGYs ZnBsb2FkLG1mdGcsZnBzdG9yZSIpCj4gwqDCoMKgIChzZXRfYXR0ciAibW9kZSIgIkRJIildKQo+ IMKgCj4gQEAgLTE3NDksMTIgKzE3NjcsMjEgQEAgKGRlZmluZV9leHBhbmQgIm1vdnNpIgo+IMKg wqDCoMKgIERPTkU7Cj4gwqB9KQo+IMKgCj4gLShkZWZpbmVfaW5zbiAiKm1vdnNpX2ludGVybmFs Igo+ICsoZGVmaW5lX2luc25fYW5kX3NwbGl0ICIqbW92c2lfaW50ZXJuYWwiCj4gwqDCoCBbKHNl dCAobWF0Y2hfb3BlcmFuZDpTSSAwICJub25pbW1lZGlhdGVfb3BlcmFuZCIKPiAiPXIscixyLHcs KmYsKmYsKnIsKm0sKnIsKnoiKQo+IMKgwqDCoMKgwqDCoMKgwqAobWF0Y2hfb3BlcmFuZDpTSSAx ICJtb3ZlX29wZXJhbmQiCj4gInIsWWQsdyxySiwqcipKLCptLCpmLCpmLCp6LCpyIikpXQo+IMKg wqAgIihyZWdpc3Rlcl9vcGVyYW5kIChvcGVyYW5kc1swXSwgU0ltb2RlKQo+IMKgwqDCoMKgIHx8 IHJlZ19vcl8wX29wZXJhbmQgKG9wZXJhbmRzWzFdLCBTSW1vZGUpKSIKPiDCoMKgIHsgcmV0dXJu IGxvb25nYXJjaF9vdXRwdXRfbW92ZSAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdKTsgfQo+ICvC oCAiQ09OU1RfSU5UX1AgKG9wZXJhbmRzWzFdKSAmJiBSRUdfUCAob3BlcmFuZHNbMF0pICYmIEdQ X1JFR19QCj4gKFJFR05PCj4gK8KgIChvcGVyYW5kc1swXSkpIgo+ICvCoCBbKGNvbnN0X2ludCAw KV0KPiArwqAgIgo+ICt7Cj4gK8KgIGxvb25nYXJjaF9tb3ZlX2ludGVnZXIgKG9wZXJhbmRzWzBd LCBvcGVyYW5kc1swXSwgSU5UVkFMCj4gKG9wZXJhbmRzWzFdKSk7Cj4gK8KgIERPTkU7Cj4gK30K PiArwqAgIgo+IMKgwqAgWyhzZXRfYXR0ciAibW92ZV90eXBlIgo+ICJtb3ZlLGNvbnN0LGxvYWQs c3RvcmUsbWd0ZixmcGxvYWQsbWZ0ZyxmcHN0b3JlLG1mdGcsbWd0ZiIpCj4gwqDCoMKgIChzZXRf YXR0ciAibW9kZSIgIlNJIildKQo+IMKgCj4gQEAgLTE3NzQsMTIgKzE4MDEsMjEgQEAgKGRlZmlu ZV9leHBhbmQgIm1vdmhpIgo+IMKgwqDCoMKgIERPTkU7Cj4gwqB9KQo+IMKgCj4gLShkZWZpbmVf aW5zbiAiKm1vdmhpX2ludGVybmFsIgo+ICsoZGVmaW5lX2luc25fYW5kX3NwbGl0ICIqbW92aGlf aW50ZXJuYWwiCj4gwqDCoCBbKHNldCAobWF0Y2hfb3BlcmFuZDpISSAwICJub25pbW1lZGlhdGVf b3BlcmFuZCIgIj1yLHIscixyLG0scixrIikKPiDCoMKgwqDCoMKgwqDCoMKgKG1hdGNoX29wZXJh bmQ6SEkgMSAibW92ZV9vcGVyYW5kIiAicixZZCxJLG0sckosayxySiIpKV0KPiDCoMKgICIocmVn aXN0ZXJfb3BlcmFuZCAob3BlcmFuZHNbMF0sIEhJbW9kZSkKPiDCoMKgwqDCoMKgwqDCoCB8fCBy ZWdfb3JfMF9vcGVyYW5kIChvcGVyYW5kc1sxXSwgSEltb2RlKSkiCj4gwqDCoCB7IHJldHVybiBs b29uZ2FyY2hfb3V0cHV0X21vdmUgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSk7IH0KPiArwqAg IkNPTlNUX0lOVF9QIChvcGVyYW5kc1sxXSkgJiYgUkVHX1AgKG9wZXJhbmRzWzBdKSAmJiBHUF9S RUdfUAo+IChSRUdOTwo+ICvCoCAob3BlcmFuZHNbMF0pKSIKPiArwqAgWyhjb25zdF9pbnQgMCld Cj4gK8KgICIKPiArewo+ICvCoCBsb29uZ2FyY2hfbW92ZV9pbnRlZ2VyIChvcGVyYW5kc1swXSwg b3BlcmFuZHNbMF0sIElOVFZBTAo+IChvcGVyYW5kc1sxXSkpOwo+ICvCoCBET05FOwo+ICt9Cj4g K8KgICIKPiDCoMKgIFsoc2V0X2F0dHIgIm1vdmVfdHlwZSIgIm1vdmUsY29uc3QsY29uc3QsbG9h ZCxzdG9yZSxsb2FkLHN0b3JlIikKPiDCoMKgwqAgKHNldF9hdHRyICJtb2RlIiAiSEkiKV0pCj4g wqAKPiBkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9sb29uZ2FyY2gvcHJlZGljYXRlcy5tZAo+IGIv Z2NjL2NvbmZpZy9sb29uZ2FyY2gvcHJlZGljYXRlcy5tZAo+IGluZGV4IDhiZDBjMTM3NmM5Li41 OGMzZGMyMjYxYyAxMDA2NDQKPiAtLS0gYS9nY2MvY29uZmlnL2xvb25nYXJjaC9wcmVkaWNhdGVz Lm1kCj4gKysrIGIvZ2NjL2NvbmZpZy9sb29uZ2FyY2gvcHJlZGljYXRlcy5tZAo+IEBAIC0yMjYs NyArMjI2LDcgQEAgKGRlZmluZV9wcmVkaWNhdGUgIm1vdmVfb3BlcmFuZCIKPiDCoMKgIHN3aXRj aCAoR0VUX0NPREUgKG9wKSkKPiDCoMKgwqDCoCB7Cj4gwqDCoMKgwqAgY2FzZSBDT05TVF9JTlQ6 Cj4gLcKgwqDCoMKgwqAgcmV0dXJuICFzcGxpdHRhYmxlX2NvbnN0X2ludF9vcGVyYW5kIChvcCwg bW9kZSk7Cj4gK8KgwqDCoMKgwqAgcmV0dXJuIHRydWU7Cj4gwqAKPiDCoMKgwqDCoCBjYXNlIENP TlNUOgo+IMKgwqDCoMKgIGNhc2UgU1lNQk9MX1JFRjoKPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L2xvb25nYXJjaC9pbW0tbG9hZC5jCj4gYi9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvbG9vbmdhcmNoL2ltbS1sb2FkLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGlu ZGV4IDAwMDAwMDAwMDAwLi5jMDRjYTMzOTk2Zgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvbG9vbmdhcmNoL2ltbS1sb2FkLmMKPiBAQCAtMCwwICsxLDEw IEBACj4gKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCj4gKy8qIHsgZGctb3B0aW9ucyAiLW1hYmk9 bHA2NGQgLU8yIC1mZHVtcC1ydGwtc3BsaXQxIiB9ICovCj4gKwo+ICtsb25nIGludAo+ICt0ZXN0 ICh2b2lkKQo+ICt7Cj4gK8KgIHJldHVybiAweDEyMzQ1Njc4OTBhYmNkZWY7Cj4gK30KPiArLyog eyBkZy1maW5hbCB7IHNjYW4tcnRsLWR1bXAtdGltZXMgInNjYW5uaW5nIG5ldyBpbnNuIHdpdGgg dWlkIiA2Cj4gInNwbGl0MSIgfSB9ICovCj4gKwo+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRl L2djYy50YXJnZXQvbG9vbmdhcmNoL2ltbS1sb2FkMS5jCj4gYi9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvbG9vbmdhcmNoL2ltbS1sb2FkMS5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRl eCAwMDAwMDAwMDAwMC4uMmZmMDI5NzEyMzkKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L2xvb25nYXJjaC9pbW0tbG9hZDEuYwo+IEBAIC0wLDAgKzEsMjYg QEAKPiArLyogeyBkZy1kbyBjb21waWxlIH0gKi8KPiArLyogeyBkZy1vcHRpb25zICItbWFiaT1s cDY0ZCAtTzIiIH0gKi8KPiArLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyCj4gInRlc3Q6 LipsdTUyaVwuZC4qXG5cdGFkZGlcLncuKlxuXC5MMjoiIH0gfSAqLwo+ICsKPiArCj4gK2V4dGVy biBsb25nIGxvbmcgYlsxMF07Cj4gK3N0YXRpYyBpbmxpbmUgbG9uZyBsb25nCj4gK3JlcGVhdF9i eXRlcyAodm9pZCkKPiArewo+ICvCoCBsb25nIGxvbmcgciA9IDB4MDEwMTAxMDEwMTAxMDEwMTsK PiArCj4gK8KgIHJldHVybiByOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIGxvbmcgbG9uZwo+ ICtoaWdoYml0X21hc2sgKGxvbmcgbG9uZyBtKQo+ICt7Cj4gK8KgIHJldHVybiBtICYgcmVwZWF0 X2J5dGVzICgpOwo+ICt9Cj4gKwo+ICt2b2lkIHRlc3QobG9uZyBsb25nICphKQo+ICt7Cj4gK8Kg IGZvciAoaW50IGkgPSAwOyBpIDwgMTA7IGkrKykKPiArwqDCoMKgIGJbaV0gPSBoaWdoYml0X21h c2sgKGFbaV0pOwo+ICsKPiArfQoKLS0gClhpIFJ1b3lhbyA8eHJ5MTExQHhyeTExMS5zaXRlPgpT Y2hvb2wgb2YgQWVyb3NwYWNlIFNjaWVuY2UgYW5kIFRlY2hub2xvZ3ksIFhpZGlhbiBVbml2ZXJz aXR5Cg==