From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpbgeu1.qq.com (smtpbgeu1.qq.com [52.59.177.22]) by sourceware.org (Postfix) with ESMTPS id 4FC0A3858C39 for ; Mon, 22 Aug 2022 09:12:08 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 4FC0A3858C39 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: bizesmtp73t1661159523tbn7hmak Received: from LAPTOP-EPITNQBU ( [58.60.1.3]) by bizesmtp.qq.com (ESMTP) with id ; Mon, 22 Aug 2022 17:12:02 +0800 (CST) X-QQ-SSF: 01400000002000C0I000B00A0000000 X-QQ-FEAT: w1YG9MRGEBJqJFp4GV8fJpBEIIJXjIRzauwJfUODTu4UgZ2jZATtdBqVzVIir RNDYNfoi+UChxu1npYn88WDgxRK0Kmy7BBn7/xoLXVgco7JSbww0KWtwaMsA7dUOKqTQZ0Y 2pR1obBjNwBUu/3Cx/SKo+UwiOod2XqQSR3HGhMkzMk2FZXV7uY2eZnQeXyIB6zJF3PvLil eoHudrSUa10i/p9DKV07JBdFqRtn0dV+Ow/ZbsHZVHSvM1xV/Z+V8muyyTw9r3VTkJYVFMh F+O+g2qPB4jcdSIjdoalD9onpvhxyjQgGHlEMqNT3FH/StuhfzqA6wdyyd5SdmOcKMceJEk 6EhO9LfO6dRSeDWV9Qa0VHhuZOIg77L5TnVNp1pj9HubmH8yXfZ5awfvoRL/RREuOqJqD25 1XGp09skelPz8IgEZ9v5VT9uVd6PFtDw X-QQ-GoodBg: 2 Date: Mon, 22 Aug 2022 17:12:02 +0800 From: "juzhe.zhong@rivai.ai" To: richard.sandiford Cc: gcc-patches , rguenther , kito.cheng Subject: Re: Re: [PATCH] middle-end: skipp stepped vector test of poly_int (1, 1) and allow the machine_mode definition with poly_uint16 (1, 1) References: <20220818104608.259204-1-juzhe.zhong@rivai.ai>, , , , , , <8A43FD564C1D55FA+202208200923041010290@rivai.ai>, , <787DDEDE66AD1087+202208221645522274775@rivai.ai>, X-Priority: 3 X-GUID: 08F6A414-A807-4514-9230-669F0F46F971 X-Has-Attach: no X-Mailer: Foxmail 7.2.16.188[cn] Mime-Version: 1.0 Message-ID: <700BF8DEE58202F1+202208221712016783017@rivai.ai> X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvr:qybglogicsvr7 X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00, BODY_8BITS, GIT_PATCH_0, HTML_MESSAGE, KAM_DMARC_STATUS, RCVD_IN_BARRACUDACENTRAL, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE, T_SPF_HELO_TEMPERROR, WEIRD_PORT autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 22 Aug 2022 09:12:16 -0000 SSBzZW50IGFub3RoZXIgcGF0Y2ggY2FsbGVkICJGaXggaXNzdWUgb2YgcG9seV91aW50MTYgKDEs MSkgaW4gc2VsZiB0ZXN0IiB0byBmaXggaXQuDQpJIGRpZG4ndCBzZW5kIFYyIGZvbGxvd2luZyB0 aGlzIHBhdGNoIGJlY2F1c2UgdGhpcyBwYXRjaCBuYW1lIGlzIG1pc2xlYWRpbmcuDQoNClRoYW5r IHlvdSBzbyBtdWNoLiBSaWNoYXJkLg0KDQoNCg0KanV6aGUuemhvbmdAcml2YWkuYWkNCiANCkZy b206IFJpY2hhcmQgU2FuZGlmb3JkDQpEYXRlOiAyMDIyLTA4LTIyIDE2OjU2DQpUbzoganV6aGUu emhvbmdcQHJpdmFpLmFpDQpDQzogZ2NjLXBhdGNoZXM7IHJndWVudGhlcjsga2l0by5jaGVuZw0K U3ViamVjdDogUmU6IFtQQVRDSF0gbWlkZGxlLWVuZDogc2tpcHAgc3RlcHBlZCB2ZWN0b3IgdGVz dCBvZiBwb2x5X2ludCAoMSwgMSkgYW5kIGFsbG93IHRoZSBtYWNoaW5lX21vZGUgZGVmaW5pdGlv biB3aXRoIHBvbHlfdWludDE2ICgxLCAxKQ0KImp1emhlLnpob25nQHJpdmFpLmFpIiA8anV6aGUu emhvbmdAcml2YWkuYWk+IHdyaXRlczoNCj4gVGhhbmtzIGZvciB5b3VyIHJlcGx5LiBZb3VyIHN1 Z2dlc3Rpb24gIi0xIC0gKGludCkgaSIgaXMgYmV0dGVyLg0KPg0KPiBDYW4gSSBzZW5kIGFub3Ro ZXIgcGF0Y2ggdGhhdCBjaGFuZ2VzICJidWlsZGVyLnF1aWNrX3B1c2ggKGdlbl9pbnRfbW9kZSAo LShpbnQpIGksIGludF9tb2RlKSk7Ig0KPiBpbnRvIOKAnGJ1aWxkZXIucXVpY2tfcHVzaCAoZ2Vu X2ludF9tb2RlICgtMSAtIChpbnQpIGksIGludF9tb2RlKSk7IiB0aGVuIHlvdSBtZXJnZSBpdCBm b3IgbWU/DQogDQpZZWFoLCBwbGVhc2Ugc2VuZCBhIHBhdGNoLCBhbmQgSSdsbCBtZXJnZSBpdCBs aWtlIHlvdSBzYXkuDQogDQpUaGFua3MsDQpSaWNoYXJkDQogDQo+DQo+IE9yIHlvdSBjaGFuZ2Ug aXQgeW91cnNlbGY/DQo+ICANCj4gVGhhbmsgeW91IHNvIG11Y2guDQo+DQo+DQo+DQo+DQo+IGp1 emhlLnpob25nQHJpdmFpLmFpDQo+ICANCj4gRnJvbTogUmljaGFyZCBTYW5kaWZvcmQNCj4gRGF0 ZTogMjAyMi0wOC0yMiAxNjozMQ0KPiBUbzog6ZKf5bGF5ZOyDQo+IENDOiByZ3VlbnRoZXI7IGdj Yy1wYXRjaGVzOyBraXRvLmNoZW5nDQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0hdIG1pZGRsZS1lbmQ6 IHNraXBwIHN0ZXBwZWQgdmVjdG9yIHRlc3Qgb2YgcG9seV9pbnQgKDEsIDEpIGFuZCBhbGxvdyB0 aGUgbWFjaGluZV9tb2RlIGRlZmluaXRpb24gd2l0aCBwb2x5X3VpbnQxNiAoMSwgMSkNCj4g6ZKf 5bGF5ZOyIDxqdXpoZS56aG9uZ0ByaXZhaS5haT4gd3JpdGVzOg0KPj4gQWZ0ZXIgZGVlcCBhbmFs eXNpcyBhbmQgc2V2ZXJhbCB0cmllcy4gSSBoYXZlIG1hZGUgYSBhbmFseXNpcyBhbmQgY29uY2x1 c2lvbiBhcyBmb2xsb3dzLg0KPj4gSSByZWFsbHkgYXBwcmVjaWF0ZSBpZiB5b3UgY291bGQgc3Bl bmQgc29tZSB0aW1lIHRha2UgYSBsb29rIGF0IHRoZSBmb2xsb3dpbmcgYW5hbHlzaXMgdGhhdCBJ IG1hZGU6DQo+Pg0KPj4gQWNjb3JkaW5nIHRvIHRoZSBjb2RlcyBpbiB0ZXN0X3ZlY3Rvcl9zdWJy ZWdzX2ZvcmVfYmFjazoNCj4+DQo+PiB+fn4NCj4+ICBwb2x5X3VpbnQ2NCBudW5pdHMgPSBHRVRf TU9ERV9OVU5JVFMgKGlubmVyX21vZGUpOw0KPj4gICB1bnNpZ25lZCBpbnQgbWluX251bml0cyA9 IGNvbnN0YW50X2xvd2VyX2JvdW5kIChudW5pdHMpOw0KPj4gICBzY2FsYXJfbW9kZSBpbnRfbW9k ZSA9IEdFVF9NT0RFX0lOTkVSIChpbm5lcl9tb2RlKTsNCj4+ICAgdW5zaWduZWQgaW50IGNvdW50 ID0gZ2NkIChtaW5fbnVuaXRzLCA0KTsNCj4+DQo+PiAgIHJ0eF92ZWN0b3JfYnVpbGRlciBidWls ZGVyIChpbm5lcl9tb2RlLCBjb3VudCwgMik7DQo+PiAgIGZvciAodW5zaWduZWQgaW50IGkgPSAw OyBpIDwgY291bnQ7ICsraSkNCj4+ICAgICBidWlsZGVyLnF1aWNrX3B1c2ggKGdlbl9pbnRfbW9k ZSAoaSwgaW50X21vZGUpKTsNCj4+ICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBjb3Vu dDsgKytpKQ0KPj4gICAgIGJ1aWxkZXIucXVpY2tfcHVzaCAoZ2VuX2ludF9tb2RlICgtKGludCkg aSwgaW50X21vZGUpKTsNCj4+ICAgcnR4IHggPSBidWlsZGVyLmJ1aWxkICgpOw0KPj4gfn5+fg0K Pj4NCj4+IEFuYWx5emUgdGhlIGNvZGVzIGFuZCB0cmllZCBzZXZlcmFsIHBhdHRlcm5zOg0KPj4N Cj4+IEZvciBwb2x5X3VpbnQxNiAoMiwyKToNCj4+IHggPSAoY29uc3RfdmVjdG9yOlZOeDFESSBb DQo+PiAgICAgICAgIChjb25zdF9pbnQgMCBbMF0pDQo+PiAgICAgICAgIChjb25zdF9pbnQgMSBb MHgxXSkNCj4+ICAgICAgICAgcmVwZWF0IFsNCj4+ICAgICAgICAgICAgIChjb25zdF9pbnQgMCBb MF0pDQo+PiAgICAgICAgICAgICAoY29uc3RfaW50IC0xIFsweGZmZmZmZmZmZmZmZmZmZmZdKQ0K Pj4gICAgICAgICBdDQo+PiAgICAgXSkNCj4+DQo+PiBGb3IgcG9seV91aW50MTYgKDQsNCk6DQo+ PiB4ID0gKGNvbnN0X3ZlY3RvcjpWTngxREkgWw0KPj4gICAgICAgICAoY29uc3RfaW50IDAgWzBd KQ0KPj4gICAgICAgICAoY29uc3RfaW50IDEgWzB4MV0pDQo+PiAgICAgICAgIChjb25zdF9pbnQg MiBbMHgyXSkNCj4+ICAgICAgICAgKGNvbnN0X2ludCAzIFsweDNdKQ0KPj4gICAgICAgICByZXBl YXQgWw0KPj4gICAgICAgICAgICAgKGNvbnN0X2ludCAwIFswXSkNCj4+ICAgICAgICAgICAgIChj b25zdF9pbnQgLTEgWzB4ZmZmZmZmZmZmZmZmZmZmZl0pDQo+PiAgICAgICAgICAgICAoY29uc3Rf aW50IC0yIFsweGZmZmZmZmZmZmZmZmZmZmVdKQ0KPj4gICAgICAgICAgICAgKGNvbnN0X2ludCAt MyBbMHhmZmZmZmZmZmZmZmZmZmZkXSkNCj4+ICAgICAgICAgXQ0KPj4gICAgIF0pDQo+Pg0KPj4g U28sIEkgdGhpbmsgSSBjYW4gY29uY2x1ZGUgdGhlIHBhdHRlcm4gcnVsZSBhcyBmb2xsb3dzOg0K Pj4NCj4+IHBvbHlfdWludDE2IChuLG4pOg0KPj4geCA9IChjb25zdF92ZWN0b3I6Vk54MURJIFsN Cj4+ICAgICAgICAgKGNvbnN0X2ludCAwIFswXSkNCj4+ICAgICAgICAgKGNvbnN0X2ludCAxIFsw eDFdKQ0KPj4gICAgICAgICAoY29uc3RfaW50IDIgWzB4Ml0pDQo+PiAgICAgICAgIChjb25zdF9p bnQgMyBbMHgzXSkNCj4+ICAgICAgICAgLi4uLi4uLi4uLi4uLi4uLi4uDQo+PiAgICAgICAgIChj b25zdF9pbnQgbiBbaGV4KG4pXSkNCj4+ICAgICAgICAgcmVwZWF0IFsNCj4+ICAgICAgICAgICAg IChjb25zdF9pbnQgMCBbMF0pDQo+PiAgICAgICAgICAgICAoY29uc3RfaW50IC0xIFsweGZmZmZm ZmZmZmZmZmZmZmZdKQ0KPj4gICAgICAgICAgICAgKGNvbnN0X2ludCAtMiBbMHhmZmZmZmZmZmZm ZmZmZmZlXSkNCj4+ICAgICAgICAgICAgIChjb25zdF9pbnQgLTMgWzB4ZmZmZmZmZmZmZmZmZmZm ZF0pDQo+PiAgICAgICAgICAgICAuLi4uLi4uLi4NCj4+ICAgICAgICAgICAgICAoY29uc3RfaW50 IC1uIFtoZXgoLW4pXSkNCj4+ICAgICAgICAgXQ0KPj4gICAgIF0pDQo+PiBBbSBJIHVuZGVyc3Rh bmRpbmcgcmlnaHQ/DQo+Pg0KPj4gTGV0J3MgZmlyc3QgdGFrZSBhIGxvb2sgYXQgdGhlIGNvZGVz IHlvdSB3cml0ZToNCj4+DQo+PiBydHhfdmVjdG9yX2J1aWxkZXIgYnVpbGRlciAoaW5uZXJfbW9k ZSwgY291bnQsIDIpOw0KPj4gICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGNvdW50OyAr K2kpDQo+PiAgICAgYnVpbGRlci5xdWlja19wdXNoIChnZW5faW50X21vZGUgKGksIGludF9tb2Rl KSk7DQo+PiAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSkNCj4+ICAg ICBidWlsZGVyLnF1aWNrX3B1c2ggKGdlbl9pbnRfbW9kZSAoLShpbnQpIGksIGludF9tb2RlKSk7 DQo+PiAgIHJ0eCB4ID0gYnVpbGRlci5idWlsZCAoKTsNCj4+DQo+PiBTbyBmb3IgcG9seV91aW50 ICgxLDEpOg0KPj4gSWRlYWxseSBhY2NvcmRpbmcgdG8gdGhlIGNvZGVzLCB5b3Ugd2FudCB0byBn ZW5lcmF0ZSB0aGUgcGF0dGVybiBsaWtlIHRoaXM6DQo+PiB4ID0gKGNvbnN0X3ZlY3RvcjpWTngx REkgWw0KPj4gICAgICAgICAoY29uc3RfaW50IDAgWzBdKQ0KPj4gICAgICAgICByZXBlYXQgWw0K Pj4gICAgICAgICAgICAgKGNvbnN0X2ludCAwIFswXSkNCj4+ICAgICAgICAgXQ0KPj4gICAgIF0p DQo+ICANCj4gQWgsIHJpZ2h0LCB0aGUgdHdvIHN1YnNlcXVlbmNlcyBhcmUgc3VwcG9zZWQgdG8g YmUgZGlmZmVyZW50Lg0KPiAgDQo+PiBJbiB5b3VyIGNvZGVzLCB3aGVuIGNvdW50ID0gMSBmb3Ig cG9seV91aW50MTYgKDEsMSkuIEFuZCBpIDwgY291bnQgaXRlcmF0aW9uIG1ha2UgaSBhbHdheXMg aXMgMC4NCj4+IEluIHRoaXMgY2FzZSwgaSA9IC1pID0gMC4NCj4+DQo+PiBTbyB3ZSB3aWxsIGVu ZCB1cCB3aXRoIHRoZSBmaXJzdCB2YWx1ZSA9IDAsIGFuZCByZXBlYXQgdmFsdWUgaXMgYWxzbyAw LCBpbiAicnR4IHggPSBidWlsZGVyLmJ1aWxkICgpOyIuDQo+PiBCZWNhdXNlIEdDQyB0aGlua3Mg YWxsIHRoZSB2YWx1ZSBhcmUgMCwgc28gdGhlIHBhdHRlcm4gaXMgY2hhbmdlZCBhcyBmb2xsb3dz IHdoaWNoIGlzIG5vdCBhIHN0ZXBwZWQgdmVjdG9yOg0KPj4NCj4+IHggPSAoY29uc3RfdmVjdG9y OlZOeDFESSByZXBlYXQgWw0KPj4gICAgICAgICAoY29uc3RfaW50IDAgWzBdKQ0KPj4gICAgIF0p DQo+Pg0KPj4gVGhpcyBpcyBhIGNvbnN0X3ZlY3RvciBkdXBsaWNhdGUgdmVjdG9yLg0KPj4gVGhp cyBpcyBub3QgdGhlIGNvcnJlY3QgcGF0dGVybiB5b3Ugd2FudCBzbyBpdCBmYWlscyBpbiB0aGUg Zm9sbG93aW5nIGNoZWNrLg0KPj4NCj4+IEkgdGhpbmsgdGhlIHRlc3QgcGF0dGVybiBnZW5lcmF0 b3IgZ29lcyB3cm9uZyBpbiBwb2x5X3VpbnQxNiAoMSwxKSB3aGljaCBpcyB0aGUgb25seSBjb3Ju ZXIgY2FzZSB3aWxsIGdvIHdyb25nLg0KPj4NCj4+IFRvIGZpeCB0aGlzLCB3ZSBzaG91bGQgYWRq dXN0IHRlc3QgcGF0dGVybiBnZW5lcmF0b3IgdG8gc3BlY2lmaWNhbGx5IHBvbHlfdWludDE2ICgx LDEpLiBXZSBzaG91bGQgbWFrZSBmaXJzdCB2YWx1ZQ0KPj4gYW5kIHJlcGVhdCB2YWx1ZSBkaWZm ZXJlbnQuIEkgdHJpZWQgMiBzb2x1dGlvbiBhbmQgdGhleSBib3RoIHBhc3MgZm9yIHBvbHlfdWlu dDE2ICgxLDEpOg0KPj4NCj4+ID09PT09PT09PT09PT09PT0NCj4+IE9yaWdpbmFsIGNvZGVzOg0K Pj4gcnR4X3ZlY3Rvcl9idWlsZGVyIGJ1aWxkZXIgKGlubmVyX21vZGUsIGNvdW50LCAyKTsNCj4+ ICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBjb3VudDsgKytpKQ0KPj4gICAgIGJ1aWxk ZXIucXVpY2tfcHVzaCAoZ2VuX2ludF9tb2RlIChpLCBpbnRfbW9kZSkpOw0KPj4gICBmb3IgKHVu c2lnbmVkIGludCBpID0gMDsgaSA8IGNvdW50OyArK2kpDQo+PiAgICAgYnVpbGRlci5xdWlja19w dXNoIChnZW5faW50X21vZGUgKC0oaW50KSBpLCBpbnRfbW9kZSkpOw0KPj4gPT09PT09PT09PT09 PT09PQ0KPj4NCj4+ID09PT09PT09PT09PT09PT0NCj4+IDFzdCBzb2x1dGlvbjoNCj4+IHJ0eF92 ZWN0b3JfYnVpbGRlciBidWlsZGVyIChpbm5lcl9tb2RlLCBjb3VudCwgMik7DQo+PiAgIGZvciAo dW5zaWduZWQgaW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSkNCj4+ICAgICBidWlsZGVyLnF1aWNr X3B1c2ggKGdlbl9pbnRfbW9kZSAoY291bnQgPT0gMSA/IDEgOiBpLCBpbnRfbW9kZSkpOw0KPj4g ICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGNvdW50OyArK2kpDQo+PiAgICAgYnVpbGRl ci5xdWlja19wdXNoIChnZW5faW50X21vZGUgKC0oaW50KSBpLCBpbnRfbW9kZSkpOw0KPj4NCj4+ IHggPSAoY29uc3RfdmVjdG9yOlZOeDFESSBbDQo+PiAgICAgICAgIChjb25zdF9pbnQgMCBbMF0p DQo+PiAgICAgICAgIHJlcGVhdCBbDQo+PiAgICAgICAgICAgICAoY29uc3RfaW50IDEgWzB4MV0p DQo+PiAgICAgICAgIF0NCj4+ICAgICBdKQ0KPj4gPT09PT09PT09PT09PT09PQ0KPj4NCj4+ID09 PT09PT09PT09PT09PT0NCj4+IDJuZCBzb2x1dGlvbjoNCj4+IHJ0eF92ZWN0b3JfYnVpbGRlciBi dWlsZGVyIChpbm5lcl9tb2RlLCBjb3VudCwgMik7DQo+PiAgIGZvciAodW5zaWduZWQgaW50IGkg PSAwOyBpIDwgY291bnQ7ICsraSkNCj4+ICAgICBidWlsZGVyLnF1aWNrX3B1c2ggKGdlbl9pbnRf bW9kZSAoaSwgaW50X21vZGUpKTsNCj4+ICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBj b3VudDsgKytpKQ0KPj4gICAgIGJ1aWxkZXIucXVpY2tfcHVzaCAoZ2VuX2ludF9tb2RlIChjb3Vu dCA9PSAxID8gLTEgOiAtKGludCkgaSwgaW50X21vZGUpKTsNCj4gIA0KPiBJIGRvbid0IHRoaW5r IHdlIG5lZWQgdG8gc2luZ2xlIG91dCBjb3VudCA9PSAxLiAgSXQgc2hvdWxkIGJlIE9LIHRvIHVz ZQ0KPiAtMSAtIChpbnQpIGkgdW5jb25kaXRpb25hbGx5Lg0KPiAgDQo+IFRoYW5rcywNCj4gUmlj aGFyZA0KPiAgDQo+PiB4PSANCj4+IChjb25zdF92ZWN0b3I6Vk54MURJIFsNCj4+ICAgICAgICAg KGNvbnN0X2ludCAwIFswXSkNCj4+ICAgICAgICAgcmVwZWF0IFsNCj4+ICAgICAgICAgICAgIChj b25zdF9pbnQgLTEgWzB4ZmZmZmZmZmZmZmZmZmZmZl0pDQo+PiAgICAgICAgIF0NCj4+ICAgICBd KQ0KPj4gPT09PT09PT09PT09PT09PQ0KPj4NCj4+IERvIHlvdSBhZ3JlZSB3aXRoIHRoZXNlIHNv bHV0aW9uPyBPciB5b3UgY291bGQgb2ZmZXIgYSBiZXR0ZXIgc29sdXRpb24gdG8gZml4IHRoaXM/ IFRoYW5rIHlvdSBzbyBtdWNoLg0KPj4NCj4+DQo+PiBqdXpoZS56aG9uZ0ByaXZhaS5haQ0KPj4g IA0KPj4gRnJvbTogUmljaGFyZCBTYW5kaWZvcmQNCj4+IERhdGU6IDIwMjItMDgtMTkgMjA6NTIN Cj4+IFRvOiBqdXpoZS56aG9uZ1xAcml2YWkuYWkNCj4+IENDOiBnY2MtcGF0Y2hlczsgcmd1ZW50 aGVyOyBraXRvLmNoZW5nDQo+PiBTdWJqZWN0OiBSZTogW1BBVENIXSBtaWRkbGUtZW5kOiBza2lw cCBzdGVwcGVkIHZlY3RvciB0ZXN0IG9mIHBvbHlfaW50ICgxLCAxKSBhbmQgYWxsb3cgdGhlIG1h Y2hpbmVfbW9kZSBkZWZpbml0aW9uIHdpdGggcG9seV91aW50MTYgKDEsIDEpDQo+PiAianV6aGUu emhvbmdAcml2YWkuYWkiIDxqdXpoZS56aG9uZ0ByaXZhaS5haT4gd3JpdGVzOg0KPj4+PiBBaCwg cmlnaHQsIHNvcnJ5IGZvciB0aGUgYm9ndXMgc3VnZ2VzdGlvbi4NCj4+Pj4gSW4gdGhhdCBjYXNl LCB3aGF0IHNwZWNpZmljYWxseSBnb2VzIHdyb25nPyAgV2hpY2ggdGVzdCBpbg0KPj4+PiB0ZXN0 X3ZlY3Rvcl9zdWJyZWdzX21vZGVzIGZhaWxzLCBhbmQgd2hhdCBkb2VzIHRoZSBJQ0UgbG9vayBs aWtlPw0KPj4+DQo+Pj4gQmVjYXVzZSBtYXlfYmUgKG51bml0cywgMSkgcmV0dXJuIHRydWUuIEZv ciBudW5pdHMgPSAoMSwxKSwgaXQgd2lsbCBleGVjdXRlIHRlc3RfdmVjdG9yX3N1YnJlZ3NfbW9k ZXMuDQo+Pj4gVGhlIGZhaWwgSUNFOg0KPj4+IC4uLy4uLy4uL3Jpc2N2LWdjYy9nY2Mvc2ltcGxp ZnktcnR4LmNjOjgzOTY6IHRlc3RfdmVjdG9yX3N1YnJlZ3NfbW9kZXM6IEZBSUw6IEFTU0VSVF9S VFhfRVEgKGV4cGVjdGVkLCBzaW1wbGlmeV9zdWJyZWcgKFFJbW9kZSwgeCwgaW5uZXJfbW9kZSwg Ynl0ZSkpDQo+Pj4gICBleHBlY3RlZDogKG5pbCkNCj4+Pg0KPj4+ICAgYWN0dWFsOiAoY29uc3Rf aW50IDAgWzBdKQ0KPj4+IGNjMTogaW50ZXJuYWwgY29tcGlsZXIgZXJyb3I6IGluIGFzc2VydF9y dHhfZXFfYXQsIGF0IHNlbGZ0ZXN0LXJ0bC5jYzo1Nw0KPj4+IDB4MTMwNGVlMSBzZWxmdGVzdDo6 YXNzZXJ0X3J0eF9lcV9hdChzZWxmdGVzdDo6bG9jYXRpb24gY29uc3QmLCBjaGFyIGNvbnN0Kiwg cnR4X2RlZiosIHJ0eF9kZWYqKQ0KPj4+ICAgICAgICAgLi4vLi4vLi4vcmlzY3YtZ2NjL2djYy9z ZWxmdGVzdC1ydGwuY2M6NTcNCj4+PiAweDEzMzI1MDQgdGVzdF92ZWN0b3Jfc3VicmVnc19tb2Rl cw0KPj4+ICAgICAgICAgLi4vLi4vLi4vcmlzY3YtZ2NjL2djYy9zaW1wbGlmeS1ydHguY2M6ODM5 NQ0KPj4+IDB4MTMzMjk4OCB0ZXN0X3ZlY3Rvcl9zdWJyZWdzX2ZvcmVfYmFjaw0KPj4+ICAgICAg ICAgLi4vLi4vLi4vcmlzY3YtZ2NjL2djYy9zaW1wbGlmeS1ydHguY2M6ODQ0Mg0KPj4+IDB4MTMz MmFlNyB0ZXN0X3ZlY3Rvcl9zdWJyZWdzDQo+Pj4gICAgICAgICAuLi8uLi8uLi9yaXNjdi1nY2Mv Z2NjL3NpbXBsaWZ5LXJ0eC5jYzo4NDY3DQo+Pj4gMHgxMzMyYzU3IHRlc3RfdmVjdG9yX29wcw0K Pj4+ICAgICAgICAgLi4vLi4vLi4vcmlzY3YtZ2NjL2djYy9zaW1wbGlmeS1ydHguY2M6ODQ4Nw0K Pj4+IDB4MTMzMmM3YiBzZWxmdGVzdDo6c2ltcGxpZnlfcnR4X2NjX3Rlc3RzKCkNCj4+PiAgICAg ICAgIC4uLy4uLy4uL3Jpc2N2LWdjYy9nY2Mvc2ltcGxpZnktcnR4LmNjOjg1NDcNCj4+PiAweDIx MzE4ZmEgc2VsZnRlc3Q6OnJ1bl90ZXN0cygpDQo+Pj4gICAgICAgICAuLi8uLi8uLi9yaXNjdi1n Y2MvZ2NjL3NlbGZ0ZXN0LXJ1bi10ZXN0cy5jYzoxMTUNCj4+PiAweDEzNjJhNzYgdG9wbGV2Ojpy dW5fc2VsZl90ZXN0cygpDQo+Pj4gICAgICAgICAuLi8uLi8uLi9yaXNjdi1nY2MvZ2NjL3RvcGxl di5jYzoyMjA1DQo+Pj4NCj4+PiBJIGFuYWx5emVkIHRoZSBjb2RlczoNCj4+PiBJbiB0ZXN0X3Zl Y3Rvcl9zdWJyZWdzX2ZvcmVfYmFjaywgd2hlbiBudW5pdHMgPSAoMSwxKS4gVGhlIGV4cGVjdGVk ID0gTlVMTF9SVFggYW5kIHNpbXBsaWZ5X3N1YnJlZyAoUUltb2RlLCB4LCBpbm5lcl9tb2RlLCBi eXRlKSA9IGNvbnN0X2ludCAwLg0KPj4+IFNvIHRoZSBhc3NlcnRpb24gZmFpbHMuDQo+PiAgDQo+ PiBIbW0sIG9rLCBzbyB0aGUgc3VicmVnIG9wZXJhdGlvbiBpcyB1bmV4cGVjdGVkIHN1Y2NlZWRp bmcuDQo+PiAgDQo+Pj4gVGhpcyBpcyB0aGUgdGVzdCBmb3Igc3RlcHBlZCB2ZWN0b3IgdXNpbmcg MiBlbGVtZW50IHBlciBwYXR0ZXJuLiAgRm9yIHBvbHlfdWludDE2ICgxLDEpLCBpdCdzIHRydWUg aXQgaXMgcG9zc2libGUgb25seSBoYXMgMSBlbGVtZW50LiANCj4+ICANCj4+IFRoZSBzdGVwcGVk IGNhc2UgaXMgMyBlbGVtZW50cyBwZXIgcGF0dGVybiByYXRoZXIgdGhhbiAyLiAgSW4gYSBzdGVw cGVkDQo+PiBwYXR0ZXJuOiBhLCBiLCBiK24gYXJlIHJlcHJlc2VudGVkIGV4cGxpY2l0bHksIHRo ZW4gdGhlIHJlc3QgYXJlDQo+PiBpbXBsaWNpdGx5IGIrbioyLCBiK24qMywgZXRjLg0KPj4gIA0K Pj4gVGhlIGNhc2UgYmVpbmcgaGFuZGxlZCBieSB0aGlzIGNvZGUgaXMgaW5zdGVhZCB0aGUgMi1l bGVtZW50IGNhc2U6DQo+PiBhLCBiIGFyZSByZXByZXNlbnRlZCBleHBsaWNpdGx5LCB0aGVuIHRo ZSByZXN0IGFyZSBpbXBsaWNpdGx5IGFsbCBiLg0KPj4gIA0KPj4gV2h5IGlzICgxLDEpIGRpZmZl cmVudCB0aG91Z2g/ICBUaGUgdGVzdCBpcyBjb25zdHJ1Y3Rpbmc6DQo+PiAgDQo+PiAgIG51bml0 czogMSArIDF4DQo+PiAgIHNoYXBlOiBuZWx0c19wZXJfcGF0dGVybiA9PSAyLCBucGF0dGVybnMg PT0gMQ0KPj4gICBlbGVtZW50czogYSwgYlssIGIsIGIsIGIsIGIsIC4uLl0NCj4+ICANCj4+IEl0 IHRoZW4gdGVzdHMgc3VicmVncyBzdGFydGluZyBhdCAwICsgMXggKHNvIHN0YXJ0aW5nIGF0IHRo ZSBmaXJzdCBiKS4NCj4+IEJ1dCBmb3IgKDIsMikgd2Ugc2hvdWxkIGhhdmU6DQo+PiAgDQo+PiAg IG51bml0czogMiArIDJ4DQo+PiAgIHNoYXBlOiBuZWx0c19wZXJfcGF0dGVybiA9PSAyLCBucGF0 dGVybnMgPT0gMg0KPj4gICBlbGVtZW50czogYTEsIGEyLCBiMSwgYjJbLCBiMSwgYjIsIGIxLCBi MiwgLi4uXQ0KPj4gIA0KPj4gYW5kIHdlIHNob3VsZCB0ZXN0IHN1YnJlZ3Mgc3RhcnRpbmcgYXQg MCArIDJ4IChzbyBzdGFydGluZyBhdCB0aGUNCj4+IGZpcnN0IGIxKS4gIFRoZSB0d28gY2FzZXMg c2hvdWxkIGJlIHZlcnkgc2ltaWxhciwgaXQncyBqdXN0IHRoYXQgdGhlDQo+PiAoMiwyKSBjYXNl IGRvdWJsZXMgdGhlIG51bWJlciBvZiBwYXR0ZXJucy4NCj4+ICANCj4+PiBJIHRoaW5rIGl0IG1h a2VzIHNlbnNlIHRvIGZhaWwgdGhlIHRlc3QuIEhvd2V2ZXIgZm9yIHBvbHkgKDEsMSkgbWFjaGlu ZSBtb2RlLCBjYW4gd2UgaGF2ZSB0aGUgY2hhbmNlIHRoYXQgc29tZSB0YXJnZXQgZGVmaW5lIHRo aXMNCj4+PiBraW5kIG9mIG1hY2hpbmUgbW9kZSBvbmx5IHVzZWQgZm9yIGludHJpbnNpY3M/ICBJ IGFscmVhZHkgZGV2ZWxvcGVkIGZ1bGwgUlZWIHN1cHBvcnQgaW4gR0NDIChpbmNsdWRpbmcgaW50 cmluc2MgYW5kIGF1dG8tdmVjdG9yaXphdGlvbikuDQo+Pj4gSSBvbmx5IGVuYWJsZSBhdXRvLXZl Y3Rvcml6YXRpb24gd2l0aCBtb2RlIGxhcmdlciB0aGFuICgyLDIpIGFuZCB0ZXN0IGl0IGZ1bGx5 Lg0KPj4+IEZyb20gbXkgZXhwZXJpZW5jZSwgaXQgc2VlbXMgdGhlIHN0ZXBwZWQgdmVjdG9yIG9u bHkgY3JlYXRlZCBkdXJpbmcgVkxBIGF1dG8tdmVjdG9yaXphdGlvbi4gQW5kIEkgdGhpbmsgb25s eSBhbGxvdyBwb2x5ICgxLDEpbW9kZSB1c2VkIGluIGludHJpbnNpY3Mgd2lsbA0KPj4+IG5vdCBj cmVhdGUgaXNzdWVzLiBBbSBJIHVuZGVyc3RhbmRpbmcgd3Jvbmcg77yfRmVlbCBmcmVlIHRvIGNv cnJlY3QgbWUuIFRoYW5rcyB+DQo+PiAgDQo+PiBGb2xsb3dpbmcgb24gZnJvbSB3aGF0IEkgc2Fp ZCBhYm92ZSwgaXQgZG9lc24ndCBsb29rIGxpa2UgdGhpcyBwYXJ0aWN1bGFyDQo+PiBjYXNlIGlz IHJlbGF0ZWQgdG8gc3RlcHBlZCB2ZWN0b3JzLg0KPj4gIA0KPj4gKDEsMSkgc2hvdWxkbid0IChu ZWVkIHRvKSBiZSBhIHNwZWNpYWwgY2FzZSB0aG91Z2guICBBbnkgcG90ZW50aXRhbA0KPj4gcHJv YmxlbXMgdGhhdCB3b3VsZCBvY2N1ciBmb3IgKDEsMSkgd2l0aCBucGF0dGVybnM9PTEgd291bGQg YWxzbyBvY2N1cg0KPj4gZm9yIChuLG4pIHdpdGggbnBhdHRlcm5zPT1uLiAgRS5nLiBpZiBzdGVw cGVkIHZlY3RvcnMgYXJlIHByb2JsZW1hdGljDQo+PiBmb3IgKDEsMSkgdGhlbiBhbiBpbnRlcmxl YXZpbmcgb2YgMiBzdGVwcGVkIHZlY3RvcnMgKGkuZS4gbnBhdHRlcm5zPT0yKQ0KPj4gd291bGQg YmUgcHJvYmxlbWF0aWMgZm9yICgyLDIpLg0KPj4gIA0KPj4gU28geWVhaCwgcHJldmVudGluZyBh IG1vZGUgYmVpbmcgdXNlZCBmb3IgYXV0b3ZlY3RvcmlzYXRpb24gd291bGQgYWxsb3cNCj4+IHRo ZSB0YXJnZXQgdG8gaGF2ZSBhIGJpdCBtb3JlIGNvbnRyb2wgb3ZlciB3aGljaCBjb25zdGFudHMg YXJlIGFjdHVhbGx5DQo+PiBnZW5lcmF0ZWQuICBCdXQgaXQgc2hvdWxkbid0IGJlIG5lY2Vzc2Fy eSB0byBkbyB0aGF0IGZvciBjb3JyZWN0bmVzcy4NCj4+ICANCj4+IFRoYW5rcywNCj4+IFJpY2hh cmQNCj4+ICANCj4+PiBqdXpoZS56aG9uZ0ByaXZhaS5haQ0KPj4+ICANCj4+PiBGcm9tOiBSaWNo YXJkIFNhbmRpZm9yZA0KPj4+IERhdGU6IDIwMjItMDgtMTkgMTc6MzUNCj4+PiBUbzoganV6aGUu emhvbmdcQHJpdmFpLmFpDQo+Pj4gQ0M6IHJndWVudGhlcjsgZ2NjLXBhdGNoZXM7IGtpdG8uY2hl bmcNCj4+PiBTdWJqZWN0OiBSZTogW1BBVENIXSBtaWRkbGUtZW5kOiBza2lwcCBzdGVwcGVkIHZl Y3RvciB0ZXN0IG9mIHBvbHlfaW50ICgxLCAxKSBhbmQgYWxsb3cgdGhlIG1hY2hpbmVfbW9kZSBk ZWZpbml0aW9uIHdpdGggcG9seV91aW50MTYgKDEsIDEpDQo+Pj4gImp1emhlLnpob25nQHJpdmFp LmFpIiA8anV6aGUuemhvbmdAcml2YWkuYWk+IHdyaXRlczoNCj4+Pj4gSGksIFJpY2hhcmQuIEkg dHJpZWQgdGhlIGNvZGVzOg0KPj4+PiBpZiAoIW51bml0cy5pc19jb25zdGFudCAoKSAmJiBtYXli ZV9ndCAobnVuaXRzLCAxKSkgDQo+Pj4+IHRlc3RfdmVjdG9yX3N1YnJlZ3NfbW9kZXMgKHgsIG51 bml0cyAtIG1pbl9udW5pdHMsIGNvdW50KTsNCj4+Pj4NCj4+Pj4gSXQgc3RpbGwgZmFpbGVkLiBG b3IgbnVuaXRzID0gKDEsMSkgLCBtYXliZV9ndCAobnVuaXRzLCAxKSByZXR1cm4gdHJ1ZSB2YWx1 ZS4NCj4+PiAgDQo+Pj4gQWgsIHJpZ2h0LCBzb3JyeSBmb3IgdGhlIGJvZ3VzIHN1Z2dlc3Rpb24u DQo+Pj4gIA0KPj4+IEluIHRoYXQgY2FzZSwgd2hhdCBzcGVjaWZpY2FsbHkgZ29lcyB3cm9uZz8g IFdoaWNoIHRlc3QgaW4NCj4+PiB0ZXN0X3ZlY3Rvcl9zdWJyZWdzX21vZGVzIGZhaWxzLCBhbmQg d2hhdCBkb2VzIHRoZSBJQ0UgbG9vayBsaWtlPw0KPj4+ICANCj4+PiBUaGFua3MsDQo+Pj4gUmlj aGFyZA0KPj4+ICANCj4+Pj4gQnV0IEkgdHJpZWQ6DQo+Pj4+IGlmICghbnVuaXRzLmlzX2NvbnN0 YW50ICgpICYmIGtub3duX2d0IChudW5pdHMsIDEpKSANCj4+Pj4gdGVzdF92ZWN0b3Jfc3VicmVn c19tb2RlcyAoeCwgbnVuaXRzIC0gbWluX251bml0cywgY291bnQpOw0KPj4+PiBJdCBwYXNzLiBC dXQgaXQgcmVwb3J0IGEgd2FybmluZzogIndhcm5pbmc6IGNvbXBhcmlzb24gYmV0d2VlbiBzaWdu ZWQgYW5kIHVuc2lnbmVkIGludGVnZXIgZXhwcmVzc2lvbnMgWy1Xc2lnbi1jb21wYXJlXSIgZHVy aW5nIHRoZSBjb21waWxhdGlvbi4NCj4+Pj4NCj4+Pj4gRmluYWxseSwgSSB0cmllZDoNCj4+Pj4g aWYgKCFudW5pdHMuaXNfY29uc3RhbnQgKCkgJiYga25vd25fZ3QgKEdFVF9NT0RFX05VTklUUyAo aW5uZXJfbW9kZSksIDEpKSANCj4+Pj4gdGVzdF92ZWN0b3Jfc3VicmVnc19tb2RlcyAoeCwgbnVu aXRzIC0gbWluX251bml0cywgY291bnQpOw0KPj4+PiBJdCBwYXNzZWQgd2l0aCBubyB3YXJuaW5n Lg0KPj4+Pg0KPj4+PiBJcyAna25vd25fZ3QgKEdFVF9NT0RFX05VTklUUyAoaW5uZXJfbW9kZSks IDEpJyBhIGdvb2Qgc29sdXRpb24gZm9yIHRoaXM/DQo+Pj4+IFRoYW5rcyENCj4+Pj4NCj4+Pj4N Cj4+Pj4ganV6aGUuemhvbmdAcml2YWkuYWkNCj4+Pj4gIA0KPj4+PiBGcm9tOiBSaWNoYXJkIFNh bmRpZm9yZA0KPj4+PiBEYXRlOiAyMDIyLTA4LTE5IDE2OjAzDQo+Pj4+IFRvOiBqdXpoZS56aG9u Zw0KPj4+PiBDQzogZ2NjLXBhdGNoZXM7IHJndWVudGhlcjsga2l0by5jaGVuZw0KPj4+PiBTdWJq ZWN0OiBSZTogW1BBVENIXSBtaWRkbGUtZW5kOiBza2lwcCBzdGVwcGVkIHZlY3RvciB0ZXN0IG9m IHBvbHlfaW50ICgxLCAxKSBhbmQgYWxsb3cgdGhlIG1hY2hpbmVfbW9kZSBkZWZpbml0aW9uIHdp dGggcG9seV91aW50MTYgKDEsIDEpDQo+Pj4+IGp1emhlLnpob25nQHJpdmFpLmFpIHdyaXRlczoN Cj4+Pj4+IEZyb206IHpob25nanV6aGUgPGp1emhlLnpob25nQHJpdmFpLmFpPg0KPj4+Pj4NCj4+ Pj4+IEhlbGxvLiBUaGlzIHBhdGNoIGlzIHByZXBhcmluZyBmb3IgZm9sbG93aW5nIFJWViBzdXBw b3J0Lg0KPj4+Pj4NCj4+Pj4+IEJvdGggQVJNIFNWRSBhbmQgUlZWIChSSVNDLVYgJ1YnIEV4dGVu c2lvbikgc3VwcG9ydCBsZW5ndGgtYWdub3N0aWMgdmVjdG9yLg0KPj4+Pj4gVGhlIG1pbmltdW0g dmVjdG9yIGxlbmd0aCBvZiBBUk0gU1ZFIGlzIDEyOC1iaXQgYW5kIHRoZSBydW50aW1lIGludmFy aWFudCBvZiBBUk0gU1ZFIGlzIGFsd2F5cyAxMjgtYml0IGJsb2Nrcy4NCj4+Pj4+IEhvd2V2ZXIs IHRoZSBtaW5pbXVtIHZlY3RvciBsZW5ndGggb2YgUlZWIGNhbiBiZSAzMmJpdCBpbiAnWnZlMzIq JyBzdWItZXh0ZW5zaW9uIGFuZCA2NGJpdCBpbiAnWnZlKicgc3ViLWV4dGVuc2lvbi4NCj4+Pj4+ DQo+Pj4+PiBTbyBJIGRlZmluZSB0aGUgbWFjaGluZV9tb2RlIGFzIGZvbGxvd3M6DQo+Pj4+PiBW RUNUT1JfTU9ERV9XSVRIX1BSRUZJWCAoVk54LCBJTlQsIERJLCAxLCAwKTsNCj4+Pj4+IEFESlVT VF9OVU5JVFMgKE1PREUsIHJpc2N2X3ZlY3Rvcl9jaHVua3MpOw0KPj4+Pj4gVGhlIHJpc2N2X3Zl Y3Rvcl9jaHVua3MgPSBwb2x5X3VpbnQxNiAoMSwgMSkNCj4+Pj4+DQo+Pj4+PiBUaGUgY29tcGls YXRpb24gaXMgZmFpbGVkIGZvciB0aGUgc3RlcHBlZCB2ZWN0b3IgdGVzdDoNCj4+Pj4+IChjb25z dF92ZWN0b3I6Vk54MURJIHJlcGVhdCBbDQo+Pj4+PiAgICAgICAgIChjb25zdF9pbnQgOCBbMHg4 XSkNCj4+Pj4+ICAgICAgICAgKGNvbnN0X2ludCA3IFsweDddKQ0KPj4+Pj4gICAgIF0pDQo+Pj4+ Pg0KPj4+Pj4gSSB1bmRlcnN0YW5kIGZvciBzdGVwcGVkIHZlY3RvciBzaG91bGQgYWx3YXlzIGhh dmUgYWxlYXN0IDIgZWxlbWVudHMgYW5kIHN0ZXBwZWQgdmVjdG9yIGluaXRpYWxpemF0aW9uIGlz IGNvbW1vbg0KPj4+Pj4gZm9yIFZMQSAodmVjdG9yLWxlbmd0aGUgYWdub3N0aWMpIGF1dG8tdmVj dG9yaXphdGlvbi4gSXQgbWFrZXMgc2Vuc2UgdGhhdCByZXBvcnQgZmFpbCBmb3Igc3RlcHBlZCB2 ZWN0b3Igb2YgcG9seV91aW50MTYgKDEsIDEpLg0KPj4+Pj4NCj4+Pj4+IG1hY2hpbmUgbW9kZSB3 aXRoIG51bml0cyA9IHBvbHlfdWludDE2ICgxLCAxKSBuZWVkcyB0byBpbXBsZW1lbnRlZCBpbiBp bnRyaW5zaWNzLiBBbmQgSSB3b3VsZCBsaWtlIHRvIGVuYWJsZSBSVlYgYXV0by12ZWN0b3JpemF0 aW9uDQo+Pj4+PiB3aXRoIHZlY3RvciBtb2RlIG9ubHkgbnVuaXRzIGlzIGxhcmdlciB0aGFuIHBv bHlfdWludDE2ICgyLCAyKSBpbiBSSVNDLVYgYmFja2VuZC4gSSB0aGluayBpdCB3aWxsIG5vdCBj cmVhdGUgaXNzdWUgaWYgd2UgZGVmaW5lDQo+Pj4+PiB2ZWN0b3IgbW9kZSB3aXRoIG51bml0cyA9 IHBvbHlfdWludDE2ICgxLCAxKS4gRmVlbCBmcmVlIHRvIGNvcnJlY3QgbWUgb3Igb2ZmZXIgbWUg c29tZSBvdGhlciBiZXR0ZXIgc29sdXRpb25zLiBUaGFua3MhDQo+Pj4+Pg0KPj4+Pj4gICANCj4+ Pj4+DQo+Pj4+PiBnY2MvQ2hhbmdlTG9nOg0KPj4+Pj4NCj4+Pj4+ICAgICAgICAgKiBzaW1wbGlm eS1ydHguY2MgKHRlc3RfdmVjdG9yX3N1YnJlZ3NfZm9yZV9iYWNrKTogc2tpcCB0ZXN0IGZvciBw b2x5X3VpbnQxNiAoMSwgMSkuDQo+Pj4+Pg0KPj4+Pj4gLS0tDQo+Pj4+PiAgZ2NjL3NpbXBsaWZ5 LXJ0eC5jYyB8IDIgKy0NCj4+Pj4+ICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEg ZGVsZXRpb24oLSkNCj4+Pj4+DQo+Pj4+PiBkaWZmIC0tZ2l0IGEvZ2NjL3NpbXBsaWZ5LXJ0eC5j YyBiL2djYy9zaW1wbGlmeS1ydHguY2MNCj4+Pj4+IGluZGV4IDdkMDliZjcxMDNkLi42MWUwZGZh MDBkMCAxMDA2NDQNCj4+Pj4+IC0tLSBhL2djYy9zaW1wbGlmeS1ydHguY2MNCj4+Pj4+ICsrKyBi L2djYy9zaW1wbGlmeS1ydHguY2MNCj4+Pj4+IEBAIC04NDM4LDcgKzg0MzgsNyBAQCB0ZXN0X3Zl Y3Rvcl9zdWJyZWdzX2ZvcmVfYmFjayAobWFjaGluZV9tb2RlIGlubmVyX21vZGUpDQo+Pj4+PiAg ICBydHggeCA9IGJ1aWxkZXIuYnVpbGQgKCk7DQo+Pj4+PiAgDQo+Pj4+PiAgICB0ZXN0X3ZlY3Rv cl9zdWJyZWdzX21vZGVzICh4KTsNCj4+Pj4+IC0gIGlmICghbnVuaXRzLmlzX2NvbnN0YW50ICgp KQ0KPj4+Pj4gKyAgaWYgKCFudW5pdHMuaXNfY29uc3RhbnQgKCkgJiYga25vd25fbmUgKG51bml0 cywgcG9seV91aW50MTYgKDEsIDEpKSkNCj4+Pj4+ICAgICAgdGVzdF92ZWN0b3Jfc3VicmVnc19t b2RlcyAoeCwgbnVuaXRzIC0gbWluX251bml0cywgY291bnQpOw0KPj4+PiAgDQo+Pj4+IEkgdGhp bmsgaW5zdGVhZCB3ZSBzaG91bGQgdXNlIG1heWJlX2d0IChudW5pdHMsIDEpLCBvbiB0aGUgYmFz aXMgdGhhdA0KPj4+PiB0aGUgZm9yZV9iYWNrIHRlc3RzIHJlcXVpcmUgdmVjdG9ycyB0aGF0IGhh dmUgYSBtaW5pbXVtIG9mIDIgZWxlbWVudHMuDQo+Pj4+IFNvbWV0aGluZyBsaWtlIHBvbHlfdWlu dDE2ICgxLCAyKSB3b3VsZCBoYXZlIHRoZSBzYW1lIHByb2JsZW0gYXMNCj4+Pj4gcG9seV91aW50 MTYgKDEsIDEpLiAgKHsxLCAyfSBpcyBhbiB1bmxpa2VseSB2YWx1ZSwgYnV0IGl0J3MgT0sgaW4N Cj4+Pj4gcHJpbmNpcGxlLikNCj4+Pj4gIA0KPj4+PiBUaGlzIGNvcnJlc3BvbmRzIHRvIHRoZSBt aW5pbXVtIG9mIDMgZWxlbWVudHMgZm9yIHRoZSBzdGVwcGVkIHRlc3RzOg0KPj4+PiAgDQo+Pj4+ ICAgaWYgKEdFVF9NT0RFX0NMQVNTIChtb2RlKSA9PSBNT0RFX1ZFQ1RPUl9JTlQNCj4+Pj4gICAg ICAgJiYgbWF5YmVfZ3QgKEdFVF9NT0RFX05VTklUUyAobW9kZSksIDIpKQ0KPj4+PiAgICAgew0K Pj4+PiAgICAgICB0ZXN0X3ZlY3Rvcl9vcHNfc2VyaWVzIChtb2RlLCBzY2FsYXJfcmVnKTsNCj4+ Pj4gICAgICAgdGVzdF92ZWN0b3Jfc3VicmVncyAobW9kZSk7DQo+Pj4+ICAgICB9DQo+Pj4+ICAN Cj4+Pj4gVGhhbmtzLA0KPj4+PiBSaWNoYXJkDQo+Pj4+ICANCj4+PiAgDQo+PiAgDQo+ICANCiAN Cg==