From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hans de Goede Subject: Re: [PATCH mesa 5/6] nouveau: codegen: Add support for OpenCL global memory buffers Date: Wed, 16 Mar 2016 11:45:33 +0100 Message-ID: <56E9394D.8040704@redhat.com> References: <1458120239-27659-1-git-send-email-hdegoede@redhat.com> <1458120239-27659-5-git-send-email-hdegoede@redhat.com> <56E93756.8040109@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <56E93756.8040109@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: mesa-dev-bounces@lists.freedesktop.org Sender: "mesa-dev" To: Samuel Pitoiset , Ilia Mirkin Cc: mesa-dev@lists.freedesktop.org, nouveau@lists.freedesktop.org List-Id: nouveau.vger.kernel.org SGksCgpPbiAxNi0wMy0xNiAxMTozNywgU2FtdWVsIFBpdG9pc2V0IHdyb3RlOgo+IENvdWxkIHlv dSBwbGVhc2UgZ2V0IHJpZCBvZiB0aGUgY29zbWV0aWMgY2hhbmdlcyAoZWcuIHRoZSBzd2l0Y2gg b25lcyk/Cj4gQmVjYXVzZSB0aGlzIGRvZXNuJ3QgcmVhbGx5IGltcHJvdmUgcmVhZGFiaWxpdHkg YW5kIGluIG15IG9waW5pb24gdGhlc2UgY2hhbmdlcyBzaG91bGQgYmUgZXZlbnR1YWxseSBkb25l IGluIGEgc2VwYXJhdGUgcGF0Y2guCgpJIG5lZWQgYXQgbGVhc3QgaGFsdmUgb2YgdGhvc2UgY29z bWV0aWMgY2hhbmdlcywgYmVjYXVzZSBoYWxmIG9mIHRoZW0gaXMgbm90IGNvc21ldGljLCBlLmcu IDoKCi0gICBjYXNlIEZJTEVfTUVNT1JZX0JVRkZFUjogY29kZVsxXSA9IDB4ZTAwMDAwMDA7IGNv ZGVbMF0gPSAweDAwMDAwMDAwOyBicmVhazsKLSAgIGNhc2UgRklMRV9NRU1PUllfTE9DQUw6ICBj b2RlWzFdID0gMHg3YTgwMDAwMDsgY29kZVswXSA9IDB4MDAwMDAwMDI7IGJyZWFrOworICAgY2Fz ZSBGSUxFX01FTU9SWV9CVUZGRVI6CisgICBjYXNlIEZJTEVfTUVNT1JZX0dMT0JBTDoKKyAgICAg IGNvZGVbMF0gPSAweDAwMDAwMDAwOworICAgICAgY29kZVsxXSA9IDB4ZTAwMDAwMDA7CisgICAg ICBicmVhazsKKyAgIGNhc2UgRklMRV9NRU1PUllfTE9DQUw6CisgICAgICBjb2RlWzBdID0gMHgw MDAwMDAwMjsKKyAgICAgIGNvZGVbMV0gPSAweDdhODAwMDAwOworICAgICAgYnJlYWs7CgpUaGUg Zmlyc3QgYml0IGFjdHVhbGx5IGNoYW5nZXMgdGhpbmdzIHRvIGhhdmUgMiBjYXNlcyBmb3IgdGhl IEJVRkZFUiBjb2RlLCBhbgpvdGhlciB3YXkgb2Ygd3JpdGluZyB0aGlzIHdvdWxkIGJlOgoKKyAg IGNhc2UgRklMRV9NRU1PUllfR0xPQkFMOgogICAgIGNhc2UgRklMRV9NRU1PUllfQlVGRkVSOiBj b2RlWzFdID0gMHhlMDAwMDAwMDsgY29kZVswXSA9IDB4MDAwMDAwMDA7IGJyZWFrOwogICAgIGNh c2UgRklMRV9NRU1PUllfTE9DQUw6IGNvZGVbMV0gPSAweDdhODAwMDAwOyBjb2RlWzBdID0gMHgw MDAwMDAwMjsgYnJlYWs7CgpCdXQgdGhhdCBqdXN0IGxvb2tzIHdlaXJkLCBpZiB3ZSBoYXZlIG11 bHRpcGxlIGNhc2UgbGFiZWxzIHdlIHNob3VsZCBub3QgdXNlCnRoZSBzaW5nbGUgbGluZSBzdGF0 ZW1lbnQgZm9sbG93aW5nIHRoZSBjYXNlIGxhYmVsIHN0eWxlIElNSE8sIHdoaWNoIGJyaW5ncyB1 cyB0bzoKCisgICBjYXNlIEZJTEVfTUVNT1JZX0JVRkZFUjoKKyAgIGNhc2UgRklMRV9NRU1PUllf R0xPQkFMOgorICAgICAgY29kZVswXSA9IDB4MDAwMDAwMDA7CisgICAgICBjb2RlWzFdID0gMHhl MDAwMDAwMDsKKyAgICAgIGJyZWFrOwoKQXQgd2hpY2ggcG9pbnQga2VlcGluZyB0aGUgTE9DQUwg Y29kZSBsb29rcyB1Z2x5IElNSE86CgorICAgY2FzZSBGSUxFX01FTU9SWV9CVUZGRVI6CisgICBj YXNlIEZJTEVfTUVNT1JZX0dMT0JBTDoKKyAgICAgIGNvZGVbMF0gPSAweDAwMDAwMDAwOworICAg ICAgY29kZVsxXSA9IDB4ZTAwMDAwMDA7CisgICAgICBicmVhazsKICAgICBjYXNlIEZJTEVfTUVN T1JZX0xPQ0FMOiBjb2RlWzFdID0gMHg3YTgwMDAwMDsgY29kZVswXSA9IDB4MDAwMDAwMDI7IGJy ZWFrOwogICAgIGNhc2UgRklMRV9NRU1PUllfU0hBUkVEOgogICAgICAgIGNvZGVbMF0gPSAweDAw MDAwMDAyOwogICAgICAgIGlmIChpLT5zdWJPcCA9PSBOVjUwX0lSX1NVQk9QX0xPQURfTE9DS0VE KQoKTm90aWNlIGhvdyB0aGUgRklMRV9NRU1PUllfTE9DQUwgY2FzZSBsb29rcyB3ZWlyZCBub3cu CgpOb3RlIEknbSBvcGVuIHRvIGZpeGluZyB0aGlzIGhvd2V2ZXIgeW91IGxpa2UsIGp1c3QgZXhw bGFpbmluZyB3aHkgSSBkaWQgaXQKdGhlIHdheSBJIGRpZCBpdC4KCj4gT3RoZXIgdGhhbiB0aGF0 LCB0aGlzIHBhdGNoIGlzIDoKPgo+IFJldmlld2VkLWJ5OiBTYW11ZWwgUGl0b2lzZXQgPHNhbXVl bC5waXRvaXNldEBnbWFpbC5jb20+CgpUaGFua3MgZm9yIHRoZSByZXZpZXdzIQoKUmVnYXJkcywK CkhhbnMKCgo+IFllcywgdGhpcyBwcm9iYWJseSB3b24ndCB3b3JrIGFzIGlzIGZvciBhdG9taWMg b3BlcmF0aW9ucyBidXQgdGhlIGxvd2VyaW5nIHBhc3MgaXMgYWxyZWFkeSBoZXJlLCBzbyBpdCBz aG91bGQgYmUgZWFzeSB0byBtYWtlIGl0IHdvcmsuCj4KPiBPbiAwMy8xNi8yMDE2IDEwOjIzIEFN LCBIYW5zIGRlIEdvZWRlIHdyb3RlOgo+PiBBZGQgc3VwcG9ydCBmb3IgT3BlbkNMIGdsb2JhbCBt ZW1vcnkgYnVmZmVycywgbm90ZSB0aGlzIGhhcyBvbmx5Cj4+IGJlZW4gdGVzdGVkIHdpdGggcmVn dWxhciBsb2FkIGFuZCBzdG9yZXMgYW5kIGxpa2VseSBuZWVkcyBtb3JlIHdvcmsKPj4gZm9yIGUu Zy4gYXRvbWljIG9wcy4KPj4KPj4gU2lnbmVkLW9mZi1ieTogSGFucyBkZSBHb2VkZSA8aGRlZ29l ZGVAcmVkaGF0LmNvbT4KPj4gLS0tCj4+ICAgc3JjL2dhbGxpdW0vZHJpdmVycy9ub3V2ZWF1L2Nv ZGVnZW4vbnY1MF9pci5oICAgICAgfCAgMSArCj4+ICAgLi4uL2RyaXZlcnMvbm91dmVhdS9jb2Rl Z2VuL252NTBfaXJfZW1pdF9nazExMC5jcHAgfCAzMSArKysrKysrKysrKysrKysrKy0tLS0tCj4+ ICAgLi4uL2RyaXZlcnMvbm91dmVhdS9jb2RlZ2VuL252NTBfaXJfZW1pdF9nbTEwNy5jcHAgfCAg NSArKystCj4+ICAgLi4uL2RyaXZlcnMvbm91dmVhdS9jb2RlZ2VuL252NTBfaXJfZW1pdF9udjUw LmNwcCAgfCAxMCArKysrLS0tCj4+ICAgLi4uL2RyaXZlcnMvbm91dmVhdS9jb2RlZ2VuL252NTBf aXJfZW1pdF9udmMwLmNwcCAgfCAyNiArKysrKysrKysrKysrLS0tLS0KPj4gICAuLi4vZHJpdmVy cy9ub3V2ZWF1L2NvZGVnZW4vbnY1MF9pcl9mcm9tX3Rnc2kuY3BwICB8IDE0ICsrKysrKystLS0K Pj4gICAuLi4vZHJpdmVycy9ub3V2ZWF1L2NvZGVnZW4vbnY1MF9pcl9wZWVwaG9sZS5jcHAgICB8 ICA1ICsrKy0KPj4gICAuLi4vZHJpdmVycy9ub3V2ZWF1L2NvZGVnZW4vbnY1MF9pcl9wcmludC5j cHAgICAgICB8ICAxICsKPj4gICAuLi4vbm91dmVhdS9jb2RlZ2VuL252NTBfaXJfdGFyZ2V0X252 NTAuY3BwICAgICAgICB8ICAxICsKPj4gICAuLi4vbm91dmVhdS9jb2RlZ2VuL252NTBfaXJfdGFy Z2V0X252YzAuY3BwICAgICAgICB8ICAxICsKPj4gICAxMCBmaWxlcyBjaGFuZ2VkLCA3NCBpbnNl cnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdpdCBhL3NyYy9nYWxsaXVt L2RyaXZlcnMvbm91dmVhdS9jb2RlZ2VuL252NTBfaXIuaCBiL3NyYy9nYWxsaXVtL2RyaXZlcnMv bm91dmVhdS9jb2RlZ2VuL252NTBfaXIuaAo+PiBpbmRleCBmZGMyMTk1Li41MTQxZmM2IDEwMDY0 NAo+PiAtLS0gYS9zcmMvZ2FsbGl1bS9kcml2ZXJzL25vdXZlYXUvY29kZWdlbi9udjUwX2lyLmgK Pj4gKysrIGIvc3JjL2dhbGxpdW0vZHJpdmVycy9ub3V2ZWF1L2NvZGVnZW4vbnY1MF9pci5oCj4+ IEBAIC0zMzMsNiArMzMzLDcgQEAgZW51bSBEYXRhRmlsZQo+PiAgICAgIEZJTEVfU0hBREVSX0lO UFVULAo+PiAgICAgIEZJTEVfU0hBREVSX09VVFBVVCwKPj4gICAgICBGSUxFX01FTU9SWV9CVUZG RVIsCj4+ICsgICBGSUxFX01FTU9SWV9HTE9CQUwsCj4+ICAgICAgRklMRV9NRU1PUllfU0hBUkVE LAo+PiAgICAgIEZJTEVfTUVNT1JZX0xPQ0FMLAo+PiAgICAgIEZJTEVfU1lTVEVNX1ZBTFVFLAo+ PiBkaWZmIC0tZ2l0IGEvc3JjL2dhbGxpdW0vZHJpdmVycy9ub3V2ZWF1L2NvZGVnZW4vbnY1MF9p cl9lbWl0X2drMTEwLmNwcCBiL3NyYy9nYWxsaXVtL2RyaXZlcnMvbm91dmVhdS9jb2RlZ2VuL252 NTBfaXJfZW1pdF9nazExMC5jcHAKPj4gaW5kZXggMDJhMTEwMS4uNjJmMTU5OCAxMDA2NDQKPj4g LS0tIGEvc3JjL2dhbGxpdW0vZHJpdmVycy9ub3V2ZWF1L2NvZGVnZW4vbnY1MF9pcl9lbWl0X2dr MTEwLmNwcAo+PiArKysgYi9zcmMvZ2FsbGl1bS9kcml2ZXJzL25vdXZlYXUvY29kZWdlbi9udjUw X2lyX2VtaXRfZ2sxMTAuY3BwCj4+IEBAIC0xNjQxLDggKzE2NDEsMTUgQEAgQ29kZUVtaXR0ZXJH SzExMDo6ZW1pdFNUT1JFKGNvbnN0IEluc3RydWN0aW9uICppKQo+PiAgICAgIGludDMyX3Qgb2Zm c2V0ID0gU0RBVEEoaS0+c3JjKDApKS5vZmZzZXQ7Cj4+Cj4+ICAgICAgc3dpdGNoIChpLT5zcmMo MCkuZ2V0RmlsZSgpKSB7Cj4+IC0gICBjYXNlIEZJTEVfTUVNT1JZX0JVRkZFUjogY29kZVsxXSA9 IDB4ZTAwMDAwMDA7IGNvZGVbMF0gPSAweDAwMDAwMDAwOyBicmVhazsKPj4gLSAgIGNhc2UgRklM RV9NRU1PUllfTE9DQUw6ICBjb2RlWzFdID0gMHg3YTgwMDAwMDsgY29kZVswXSA9IDB4MDAwMDAw MDI7IGJyZWFrOwo+PiArICAgY2FzZSBGSUxFX01FTU9SWV9CVUZGRVI6Cj4+ICsgICBjYXNlIEZJ TEVfTUVNT1JZX0dMT0JBTDoKPj4gKyAgICAgIGNvZGVbMF0gPSAweDAwMDAwMDAwOwo+PiArICAg ICAgY29kZVsxXSA9IDB4ZTAwMDAwMDA7Cj4+ICsgICAgICBicmVhazsKPj4gKyAgIGNhc2UgRklM RV9NRU1PUllfTE9DQUw6Cj4+ICsgICAgICBjb2RlWzBdID0gMHgwMDAwMDAwMjsKPj4gKyAgICAg IGNvZGVbMV0gPSAweDdhODAwMDAwOwo+PiArICAgICAgYnJlYWs7Cj4+ICAgICAgY2FzZSBGSUxF X01FTU9SWV9TSEFSRUQ6Cj4+ICAgICAgICAgY29kZVswXSA9IDB4MDAwMDAwMDI7Cj4+ICAgICAg ICAgaWYgKGktPnN1Yk9wID09IE5WNTBfSVJfU1VCT1BfU1RPUkVfVU5MT0NLRUQpCj4+IEBAIC0x Njc4LDcgKzE2ODUsOCBAQCBDb2RlRW1pdHRlckdLMTEwOjplbWl0U1RPUkUoY29uc3QgSW5zdHJ1 Y3Rpb24gKmkpCj4+Cj4+ICAgICAgc3JjSWQoaS0+c3JjKDEpLCAyKTsKPj4gICAgICBzcmNJZChp LT5zcmMoMCkuZ2V0SW5kaXJlY3QoMCksIDEwKTsKPj4gLSAgIGlmIChpLT5zcmMoMCkuZ2V0Rmls ZSgpID09IEZJTEVfTUVNT1JZX0JVRkZFUiAmJgo+PiArICAgaWYgKChpLT5zcmMoMCkuZ2V0Rmls ZSgpID09IEZJTEVfTUVNT1JZX0JVRkZFUiB8fAo+PiArICAgICAgICBpLT5zcmMoMCkuZ2V0Rmls ZSgpID09IEZJTEVfTUVNT1JZX0dMT0JBTCkgJiYKPj4gICAgICAgICAgaS0+c3JjKDApLmlzSW5k aXJlY3QoMCkgJiYKPj4gICAgICAgICAgaS0+Z2V0SW5kaXJlY3QoMCwgMCktPnJlZy5zaXplID09 IDgpCj4+ICAgICAgICAgY29kZVsxXSB8PSAxIDw8IDIzOwo+PiBAQCAtMTY5MCw4ICsxNjk4LDE1 IEBAIENvZGVFbWl0dGVyR0sxMTA6OmVtaXRMT0FEKGNvbnN0IEluc3RydWN0aW9uICppKQo+PiAg ICAgIGludDMyX3Qgb2Zmc2V0ID0gU0RBVEEoaS0+c3JjKDApKS5vZmZzZXQ7Cj4+Cj4+ICAgICAg c3dpdGNoIChpLT5zcmMoMCkuZ2V0RmlsZSgpKSB7Cj4+IC0gICBjYXNlIEZJTEVfTUVNT1JZX0JV RkZFUjogY29kZVsxXSA9IDB4YzAwMDAwMDA7IGNvZGVbMF0gPSAweDAwMDAwMDAwOyBicmVhazsK Pj4gLSAgIGNhc2UgRklMRV9NRU1PUllfTE9DQUw6ICBjb2RlWzFdID0gMHg3YTAwMDAwMDsgY29k ZVswXSA9IDB4MDAwMDAwMDI7IGJyZWFrOwo+PiArICAgY2FzZSBGSUxFX01FTU9SWV9CVUZGRVI6 Cj4+ICsgICBjYXNlIEZJTEVfTUVNT1JZX0dMT0JBTDoKPj4gKyAgICAgIGNvZGVbMF0gPSAweDAw MDAwMDAwOwo+PiArICAgICAgY29kZVsxXSA9IDB4YzAwMDAwMDA7Cj4+ICsgICAgICBicmVhazsK Pj4gKyAgIGNhc2UgRklMRV9NRU1PUllfTE9DQUw6Cj4+ICsgICAgICBjb2RlWzBdID0gMHgwMDAw MDAwMjsKPj4gKyAgICAgIGNvZGVbMV0gPSAweDdhMDAwMDAwOwo+PiArICAgICAgYnJlYWs7Cj4+ ICAgICAgY2FzZSBGSUxFX01FTU9SWV9TSEFSRUQ6Cj4+ICAgICAgICAgY29kZVswXSA9IDB4MDAw MDAwMDI7Cj4+ICAgICAgICAgaWYgKGktPnN1Yk9wID09IE5WNTBfSVJfU1VCT1BfTE9BRF9MT0NL RUQpCj4+IEBAIC0xODAwLDcgKzE4MTUsOCBAQCBDb2RlRW1pdHRlckdLMTEwOjplbWl0TU9WKGNv bnN0IEluc3RydWN0aW9uICppKQo+PiAgIHN0YXRpYyBpbmxpbmUgYm9vbAo+PiAgIHVzZXM2NGJp dEFkZHJlc3MoY29uc3QgSW5zdHJ1Y3Rpb24gKmxkc3QpCj4+ICAgewo+PiAtICAgcmV0dXJuIGxk c3QtPnNyYygwKS5nZXRGaWxlKCkgPT0gRklMRV9NRU1PUllfQlVGRkVSICYmCj4+ICsgICByZXR1 cm4gKGxkc3QtPnNyYygwKS5nZXRGaWxlKCkgPT0gRklMRV9NRU1PUllfQlVGRkVSIHx8Cj4+ICsg ICAgICAgICAgIGxkc3QtPnNyYygwKS5nZXRGaWxlKCkgPT0gRklMRV9NRU1PUllfR0xPQkFMKSAm Jgo+PiAgICAgICAgIGxkc3QtPnNyYygwKS5pc0luZGlyZWN0KDApICYmCj4+ICAgICAgICAgbGRz dC0+Z2V0SW5kaXJlY3QoMCwgMCktPnJlZy5zaXplID09IDg7Cj4+ICAgfQo+PiBAQCAtMTg2Miw3 ICsxODc4LDggQEAgQ29kZUVtaXR0ZXJHSzExMDo6ZW1pdENDVEwoY29uc3QgSW5zdHJ1Y3Rpb24g KmkpCj4+Cj4+ICAgICAgY29kZVswXSA9IDB4MDAwMDAwMDIgfCAoaS0+c3ViT3AgPDwgMik7Cj4+ Cj4+IC0gICBpZiAoaS0+c3JjKDApLmdldEZpbGUoKSA9PSBGSUxFX01FTU9SWV9CVUZGRVIpIHsK Pj4gKyAgIGlmIChpLT5zcmMoMCkuZ2V0RmlsZSgpID09IEZJTEVfTUVNT1JZX0JVRkZFUiB8fAo+ PiArICAgICAgIGktPnNyYygwKS5nZXRGaWxlKCkgPT0gRklMRV9NRU1PUllfR0xPQkFMKSB7Cj4+ ICAgICAgICAgY29kZVsxXSA9IDB4N2IwMDAwMDA7Cj4+ICAgICAgfSBlbHNlIHsKPj4gICAgICAg ICBjb2RlWzFdID0gMHg3YzAwMDAwMDsKPj4gZGlmZiAtLWdpdCBhL3NyYy9nYWxsaXVtL2RyaXZl cnMvbm91dmVhdS9jb2RlZ2VuL252NTBfaXJfZW1pdF9nbTEwNy5jcHAgYi9zcmMvZ2FsbGl1bS9k cml2ZXJzL25vdXZlYXUvY29kZWdlbi9udjUwX2lyX2VtaXRfZ20xMDcuY3BwCj4+IGluZGV4IDI3 ZjI4N2YuLjNmY2RjNTUgMTAwNjQ0Cj4+IC0tLSBhL3NyYy9nYWxsaXVtL2RyaXZlcnMvbm91dmVh dS9jb2RlZ2VuL252NTBfaXJfZW1pdF9nbTEwNy5jcHAKPj4gKysrIGIvc3JjL2dhbGxpdW0vZHJp dmVycy9ub3V2ZWF1L2NvZGVnZW4vbnY1MF9pcl9lbWl0X2dtMTA3LmNwcAo+PiBAQCAtMjQxNyw3 ICsyNDE3LDggQEAgdm9pZAo+PiAgIENvZGVFbWl0dGVyR00xMDc6OmVtaXRDQ1RMKCkKPj4gICB7 Cj4+ICAgICAgdW5zaWduZWQgd2lkdGg7Cj4+IC0gICBpZiAoaW5zbi0+c3JjKDApLmdldEZpbGUo KSA9PSBGSUxFX01FTU9SWV9CVUZGRVIpIHsKPj4gKyAgIGlmIChpbnNuLT5zcmMoMCkuZ2V0Rmls ZSgpID09IEZJTEVfTUVNT1JZX0JVRkZFUiB8fAo+PiArICAgICAgIGluc24tPnNyYygwKS5nZXRG aWxlKCkgPT0gRklMRV9NRU1PUllfR0xPQkFMKSB7Cj4+ICAgICAgICAgZW1pdEluc24oMHhlZjYw MDAwMCk7Cj4+ICAgICAgICAgd2lkdGggPSAzMDsKPj4gICAgICB9IGVsc2Ugewo+PiBAQCAtMjk4 OSw2ICsyOTkwLDcgQEAgQ29kZUVtaXR0ZXJHTTEwNzo6ZW1pdEluc3RydWN0aW9uKEluc3RydWN0 aW9uICppKQo+PiAgICAgICAgIGNhc2UgRklMRV9NRU1PUllfTE9DQUwgOiBlbWl0TERMKCk7IGJy ZWFrOwo+PiAgICAgICAgIGNhc2UgRklMRV9NRU1PUllfU0hBUkVEOiBlbWl0TERTKCk7IGJyZWFr Owo+PiAgICAgICAgIGNhc2UgRklMRV9NRU1PUllfQlVGRkVSOiBlbWl0TEQoKTsgYnJlYWs7Cj4+ ICsgICAgICBjYXNlIEZJTEVfTUVNT1JZX0dMT0JBTDogZW1pdExEKCk7IGJyZWFrOwo+PiAgICAg ICAgIGRlZmF1bHQ6Cj4+ICAgICAgICAgICAgYXNzZXJ0KCEiaW52YWxpZCBsb2FkIik7Cj4+ICAg ICAgICAgICAgZW1pdE5PUCgpOwo+PiBAQCAtMzAwMCw2ICszMDAyLDcgQEAgQ29kZUVtaXR0ZXJH TTEwNzo6ZW1pdEluc3RydWN0aW9uKEluc3RydWN0aW9uICppKQo+PiAgICAgICAgIGNhc2UgRklM RV9NRU1PUllfTE9DQUwgOiBlbWl0U1RMKCk7IGJyZWFrOwo+PiAgICAgICAgIGNhc2UgRklMRV9N RU1PUllfU0hBUkVEOiBlbWl0U1RTKCk7IGJyZWFrOwo+PiAgICAgICAgIGNhc2UgRklMRV9NRU1P UllfQlVGRkVSOiBlbWl0U1QoKTsgYnJlYWs7Cj4+ICsgICAgICBjYXNlIEZJTEVfTUVNT1JZX0dM T0JBTDogZW1pdFNUKCk7IGJyZWFrOwo+PiAgICAgICAgIGRlZmF1bHQ6Cj4+ICAgICAgICAgICAg YXNzZXJ0KCEiaW52YWxpZCBsb2FkIik7Cj4+ICAgICAgICAgICAgZW1pdE5PUCgpOwo+PiBkaWZm IC0tZ2l0IGEvc3JjL2dhbGxpdW0vZHJpdmVycy9ub3V2ZWF1L2NvZGVnZW4vbnY1MF9pcl9lbWl0 X252NTAuY3BwIGIvc3JjL2dhbGxpdW0vZHJpdmVycy9ub3V2ZWF1L2NvZGVnZW4vbnY1MF9pcl9l bWl0X252NTAuY3BwCj4+IGluZGV4IDc0NzZlMjEuLjI2NTNjODIgMTAwNjQ0Cj4+IC0tLSBhL3Ny Yy9nYWxsaXVtL2RyaXZlcnMvbm91dmVhdS9jb2RlZ2VuL252NTBfaXJfZW1pdF9udjUwLmNwcAo+ PiArKysgYi9zcmMvZ2FsbGl1bS9kcml2ZXJzL25vdXZlYXUvY29kZWdlbi9udjUwX2lyX2VtaXRf bnY1MC5jcHAKPj4gQEAgLTY2Myw2ICs2NjMsNyBAQCBDb2RlRW1pdHRlck5WNTA6OmVtaXRMT0FE KGNvbnN0IEluc3RydWN0aW9uICppKQo+PiAgICAgICAgIGNvZGVbMV0gPSAweDQwMDAwMDAwOwo+ PiAgICAgICAgIGJyZWFrOwo+PiAgICAgIGNhc2UgRklMRV9NRU1PUllfQlVGRkVSOgo+PiArICAg Y2FzZSBGSUxFX01FTU9SWV9HTE9CQUw6Cj4+ICAgICAgICAgY29kZVswXSA9IDB4ZDAwMDAwMDEg fCAoaS0+Z2V0U3JjKDApLT5yZWcuZmlsZUluZGV4IDw8IDE2KTsKPj4gICAgICAgICBjb2RlWzFd ID0gMHg4MDAwMDAwMDsKPj4gICAgICAgICBicmVhazsKPj4gQEAgLTY3MSw3ICs2NzIsOCBAQCBD b2RlRW1pdHRlck5WNTA6OmVtaXRMT0FEKGNvbnN0IEluc3RydWN0aW9uICppKQo+PiAgICAgICAg IGJyZWFrOwo+PiAgICAgIH0KPj4gICAgICBpZiAoc2YgPT0gRklMRV9NRU1PUllfTE9DQUwgfHwK Pj4gLSAgICAgICBzZiA9PSBGSUxFX01FTU9SWV9CVUZGRVIpCj4+ICsgICAgICAgc2YgPT0gRklM RV9NRU1PUllfQlVGRkVSIHx8Cj4+ICsgICAgICAgc2YgPT0gRklMRV9NRU1PUllfR0xPQkFMKQo+ PiAgICAgICAgIGVtaXRMb2FkU3RvcmVTaXplTEcoaS0+c1R5cGUsIDIxICsgMzIpOwo+Pgo+PiAg ICAgIHNldERzdChpLCAwKTsKPj4gQEAgLTY3OSw3ICs2ODEsOCBAQCBDb2RlRW1pdHRlck5WNTA6 OmVtaXRMT0FEKGNvbnN0IEluc3RydWN0aW9uICppKQo+PiAgICAgIGVtaXRGbGFnc1JkKGkpOwo+ PiAgICAgIGVtaXRGbGFnc1dyKGkpOwo+Pgo+PiAtICAgaWYgKGktPnNyYygwKS5nZXRGaWxlKCkg PT0gRklMRV9NRU1PUllfQlVGRkVSKSB7Cj4+ICsgICBpZiAoaS0+c3JjKDApLmdldEZpbGUoKSA9 PSBGSUxFX01FTU9SWV9CVUZGRVIgfHwKPj4gKyAgICAgICBpLT5zcmMoMCkuZ2V0RmlsZSgpID09 IEZJTEVfTUVNT1JZX0dMT0JBTCkgewo+PiAgICAgICAgIHNyY0lkKCppLT5zcmMoMCkuZ2V0SW5k aXJlY3QoMCksIDkpOwo+PiAgICAgIH0gZWxzZSB7Cj4+ICAgICAgICAgc2V0QVJlZzE2KGksIDAp Owo+PiBAQCAtNzAwLDYgKzcwMyw3IEBAIENvZGVFbWl0dGVyTlY1MDo6ZW1pdFNUT1JFKGNvbnN0 IEluc3RydWN0aW9uICppKQo+PiAgICAgICAgIHNyY0lkKGktPnNyYygxKSwgMzIgKyAxNCk7Cj4+ ICAgICAgICAgYnJlYWs7Cj4+ICAgICAgY2FzZSBGSUxFX01FTU9SWV9CVUZGRVI6Cj4+ICsgICBj YXNlIEZJTEVfTUVNT1JZX0dMT0JBTDoKPj4gICAgICAgICBjb2RlWzBdID0gMHhkMDAwMDAwMSB8 IChpLT5nZXRTcmMoMCktPnJlZy5maWxlSW5kZXggPDwgMTYpOwo+PiAgICAgICAgIGNvZGVbMV0g PSAweGEwMDAwMDAwOwo+PiAgICAgICAgIGVtaXRMb2FkU3RvcmVTaXplTEcoaS0+ZFR5cGUsIDIx ICsgMzIpOwo+PiBAQCAtNzM3LDcgKzc0MSw3IEBAIENvZGVFbWl0dGVyTlY1MDo6ZW1pdFNUT1JF KGNvbnN0IEluc3RydWN0aW9uICppKQo+PiAgICAgICAgIGJyZWFrOwo+PiAgICAgIH0KPj4KPj4g LSAgIGlmIChmID09IEZJTEVfTUVNT1JZX0JVRkZFUikKPj4gKyAgIGlmIChmID09IEZJTEVfTUVN T1JZX0JVRkZFUiB8fCBmID09IEZJTEVfTUVNT1JZX0dMT0JBTCkKPj4gICAgICAgICBzcmNJZCgq aS0+c3JjKDApLmdldEluZGlyZWN0KDApLCA5KTsKPj4gICAgICBlbHNlCj4+ICAgICAgICAgc2V0 QVJlZzE2KGksIDApOwo+PiBkaWZmIC0tZ2l0IGEvc3JjL2dhbGxpdW0vZHJpdmVycy9ub3V2ZWF1 L2NvZGVnZW4vbnY1MF9pcl9lbWl0X252YzAuY3BwIGIvc3JjL2dhbGxpdW0vZHJpdmVycy9ub3V2 ZWF1L2NvZGVnZW4vbnY1MF9pcl9lbWl0X252YzAuY3BwCj4+IGluZGV4IDYyMzY2NTkuLmNhNDc1 Y2UgMTAwNjQ0Cj4+IC0tLSBhL3NyYy9nYWxsaXVtL2RyaXZlcnMvbm91dmVhdS9jb2RlZ2VuL252 NTBfaXJfZW1pdF9udmMwLmNwcAo+PiArKysgYi9zcmMvZ2FsbGl1bS9kcml2ZXJzL25vdXZlYXUv Y29kZWdlbi9udjUwX2lyX2VtaXRfbnZjMC5jcHAKPj4gQEAgLTI4MSw2ICsyODEsNyBAQCBDb2Rl RW1pdHRlck5WQzA6OnNldEFkZHJlc3NCeUZpbGUoY29uc3QgVmFsdWVSZWYmIHNyYykKPj4gICB7 Cj4+ICAgICAgc3dpdGNoIChzcmMuZ2V0RmlsZSgpKSB7Cj4+ICAgICAgY2FzZSBGSUxFX01FTU9S WV9CVUZGRVI6Cj4+ICsgICBjYXNlIEZJTEVfTUVNT1JZX0dMT0JBTDoKPj4gICAgICAgICBzcmNB ZGRyMzIoc3JjLCAyNiwgMCk7Cj4+ICAgICAgICAgYnJlYWs7Cj4+ICAgICAgY2FzZSBGSUxFX01F TU9SWV9MT0NBTDoKPj4gQEAgLTE3NjgsNyArMTc2OSw4IEBAIENvZGVFbWl0dGVyTlZDMDo6ZW1p dENhY2hpbmdNb2RlKENhY2hlTW9kZSBjKQo+PiAgIHN0YXRpYyBpbmxpbmUgYm9vbAo+PiAgIHVz ZXM2NGJpdEFkZHJlc3MoY29uc3QgSW5zdHJ1Y3Rpb24gKmxkc3QpCj4+ICAgewo+PiAtICAgcmV0 dXJuIGxkc3QtPnNyYygwKS5nZXRGaWxlKCkgPT0gRklMRV9NRU1PUllfQlVGRkVSICYmCj4+ICsg ICByZXR1cm4gKGxkc3QtPnNyYygwKS5nZXRGaWxlKCkgPT0gRklMRV9NRU1PUllfQlVGRkVSIHx8 Cj4+ICsgICAgICAgICAgIGxkc3QtPnNyYygwKS5nZXRGaWxlKCkgPT0gRklMRV9NRU1PUllfR0xP QkFMKSAmJgo+PiAgICAgICAgIGxkc3QtPnNyYygwKS5pc0luZGlyZWN0KDApICYmCj4+ICAgICAg ICAgbGRzdC0+Z2V0SW5kaXJlY3QoMCwgMCktPnJlZy5zaXplID09IDg7Cj4+ICAgfQo+PiBAQCAt MTc3OSw4ICsxNzgxLDEzIEBAIENvZGVFbWl0dGVyTlZDMDo6ZW1pdFNUT1JFKGNvbnN0IEluc3Ry dWN0aW9uICppKQo+PiAgICAgIHVpbnQzMl90IG9wYzsKPj4KPj4gICAgICBzd2l0Y2ggKGktPnNy YygwKS5nZXRGaWxlKCkpIHsKPj4gLSAgIGNhc2UgRklMRV9NRU1PUllfQlVGRkVSOiBvcGMgPSAw eDkwMDAwMDAwOyBicmVhazsKPj4gLSAgIGNhc2UgRklMRV9NRU1PUllfTE9DQUw6ICBvcGMgPSAw eGM4MDAwMDAwOyBicmVhazsKPj4gKyAgIGNhc2UgRklMRV9NRU1PUllfQlVGRkVSOgo+PiArICAg Y2FzZSBGSUxFX01FTU9SWV9HTE9CQUw6Cj4+ICsgICAgICBvcGMgPSAweDkwMDAwMDAwOwo+PiAr ICAgICAgYnJlYWs7Cj4+ICsgICBjYXNlIEZJTEVfTUVNT1JZX0xPQ0FMOgo+PiArICAgICAgb3Bj ID0gMHhjODAwMDAwMDsKPj4gKyAgICAgIGJyZWFrOwo+PiAgICAgIGNhc2UgRklMRV9NRU1PUllf U0hBUkVEOgo+PiAgICAgICAgIGlmIChpLT5zdWJPcCA9PSBOVjUwX0lSX1NVQk9QX1NUT1JFX1VO TE9DS0VEKSB7Cj4+ICAgICAgICAgICAgaWYgKHRhcmctPmdldENoaXBzZXQoKSA+PSBOVklTQV9H SzEwNF9DSElQU0VUKQo+PiBAQCAtMTgyOCw4ICsxODM1LDEzIEBAIENvZGVFbWl0dGVyTlZDMDo6 ZW1pdExPQUQoY29uc3QgSW5zdHJ1Y3Rpb24gKmkpCj4+ICAgICAgY29kZVswXSA9IDB4MDAwMDAw MDU7Cj4+Cj4+ICAgICAgc3dpdGNoIChpLT5zcmMoMCkuZ2V0RmlsZSgpKSB7Cj4+IC0gICBjYXNl IEZJTEVfTUVNT1JZX0JVRkZFUjogb3BjID0gMHg4MDAwMDAwMDsgYnJlYWs7Cj4+IC0gICBjYXNl IEZJTEVfTUVNT1JZX0xPQ0FMOiAgb3BjID0gMHhjMDAwMDAwMDsgYnJlYWs7Cj4+ICsgICBjYXNl IEZJTEVfTUVNT1JZX0JVRkZFUjoKPj4gKyAgIGNhc2UgRklMRV9NRU1PUllfR0xPQkFMOgo+PiAr ICAgICAgb3BjID0gMHg4MDAwMDAwMDsKPj4gKyAgICAgIGJyZWFrOwo+PiArICAgY2FzZSBGSUxF X01FTU9SWV9MT0NBTDoKPj4gKyAgICAgIG9wYyA9IDB4YzAwMDAwMDA7Cj4+ICsgICAgICBicmVh azsKPj4gICAgICBjYXNlIEZJTEVfTUVNT1JZX1NIQVJFRDoKPj4gICAgICAgICBpZiAoaS0+c3Vi T3AgPT0gTlY1MF9JUl9TVUJPUF9MT0FEX0xPQ0tFRCkgewo+PiAgICAgICAgICAgIGlmICh0YXJn LT5nZXRDaGlwc2V0KCkgPj0gTlZJU0FfR0sxMDRfQ0hJUFNFVCkKPj4gQEAgLTIwOTAsNyArMjEw Miw4IEBAIENvZGVFbWl0dGVyTlZDMDo6ZW1pdENDVEwoY29uc3QgSW5zdHJ1Y3Rpb24gKmkpCj4+ ICAgewo+PiAgICAgIGNvZGVbMF0gPSAweDAwMDAwMDA1IHwgKGktPnN1Yk9wIDw8IDUpOwo+Pgo+ PiAtICAgaWYgKGktPnNyYygwKS5nZXRGaWxlKCkgPT0gRklMRV9NRU1PUllfQlVGRkVSKSB7Cj4+ ICsgICBpZiAoaS0+c3JjKDApLmdldEZpbGUoKSA9PSBGSUxFX01FTU9SWV9CVUZGRVIgfHwKPj4g KyAgICAgICBpLT5zcmMoMCkuZ2V0RmlsZSgpID09IEZJTEVfTUVNT1JZX0dMT0JBTCkgewo+PiAg ICAgICAgIGNvZGVbMV0gPSAweDk4MDAwMDAwOwo+PiAgICAgICAgIHNyY0FkZHIzMihpLT5zcmMo MCksIDI4LCAyKTsKPj4gICAgICB9IGVsc2Ugewo+PiBAQCAtMzEyMiw2ICszMTM1LDcgQEAgU2No ZWREYXRhQ2FsY3VsYXRvcjo6Y2hlY2tSZChjb25zdCBWYWx1ZSAqdiwgaW50IGN5Y2xlLCBpbnQm IGRlbGF5KSBjb25zdAo+PiAgICAgIGNhc2UgRklMRV9NRU1PUllfQ09OU1Q6Cj4+ICAgICAgY2Fz ZSBGSUxFX01FTU9SWV9TSEFSRUQ6Cj4+ICAgICAgY2FzZSBGSUxFX01FTU9SWV9CVUZGRVI6Cj4+ ICsgICBjYXNlIEZJTEVfTUVNT1JZX0dMT0JBTDoKPj4gICAgICBjYXNlIEZJTEVfU1lTVEVNX1ZB TFVFOgo+PiAgICAgICAgIC8vIFRPRE86IGFueSByZXN0cmljdGlvbnMgaGVyZSA/Cj4+ICAgICAg ICAgYnJlYWs7Cj4+IGRpZmYgLS1naXQgYS9zcmMvZ2FsbGl1bS9kcml2ZXJzL25vdXZlYXUvY29k ZWdlbi9udjUwX2lyX2Zyb21fdGdzaS5jcHAgYi9zcmMvZ2FsbGl1bS9kcml2ZXJzL25vdXZlYXUv Y29kZWdlbi9udjUwX2lyX2Zyb21fdGdzaS5jcHAKPj4gaW5kZXggOTE4NzllNC4uYzE2N2M0YSAx MDA2NDQKPj4gLS0tIGEvc3JjL2dhbGxpdW0vZHJpdmVycy9ub3V2ZWF1L2NvZGVnZW4vbnY1MF9p cl9mcm9tX3Rnc2kuY3BwCj4+ICsrKyBiL3NyYy9nYWxsaXVtL2RyaXZlcnMvbm91dmVhdS9jb2Rl Z2VuL252NTBfaXJfZnJvbV90Z3NpLmNwcAo+PiBAQCAtMzc0LDcgKzM3NCw3IEBAIHN0YXRpYyBu djUwX2lyOjpEYXRhRmlsZSB0cmFuc2xhdGVGaWxlKHVpbnQgZmlsZSkKPj4gICAgICBjYXNlIFRH U0lfRklMRV9JTU1FRElBVEU6ICAgICAgIHJldHVybiBudjUwX2lyOjpGSUxFX0lNTUVESUFURTsK Pj4gICAgICBjYXNlIFRHU0lfRklMRV9TWVNURU1fVkFMVUU6ICAgIHJldHVybiBudjUwX2lyOjpG SUxFX1NZU1RFTV9WQUxVRTsKPj4gICAgICBjYXNlIFRHU0lfRklMRV9CVUZGRVI6ICAgICAgICAg IHJldHVybiBudjUwX2lyOjpGSUxFX01FTU9SWV9CVUZGRVI7Cj4+IC0gICBjYXNlIFRHU0lfRklM RV9NRU1PUlk6ICAgICAgICAgIHJldHVybiBudjUwX2lyOjpGSUxFX01FTU9SWV9CVUZGRVI7Cj4+ ICsgICBjYXNlIFRHU0lfRklMRV9NRU1PUlk6ICAgICAgICAgIHJldHVybiBudjUwX2lyOjpGSUxF X01FTU9SWV9HTE9CQUw7Cj4+ICAgICAgY2FzZSBUR1NJX0ZJTEVfU0FNUExFUjoKPj4gICAgICBj YXNlIFRHU0lfRklMRV9OVUxMOgo+PiAgICAgIGRlZmF1bHQ6Cj4+IEBAIC0xMjg0LDcgKzEyODQs OSBAQCBib29sIFNvdXJjZTo6c2Nhbkluc3RydWN0aW9uKGNvbnN0IHN0cnVjdCB0Z3NpX2Z1bGxf aW5zdHJ1Y3Rpb24gKmluc3QpCj4+ICAgICAgICAgICAgaWYgKGRzdC5pc0luZGlyZWN0KDApKQo+ PiAgICAgICAgICAgICAgIGluZGlyZWN0VGVtcEFycmF5cy5pbnNlcnQoZHN0LmdldEFycmF5SWQo KSk7Cj4+ICAgICAgICAgfSBlbHNlCj4+IC0gICAgICBpZiAoZHN0LmdldEZpbGUoKSA9PSBUR1NJ X0ZJTEVfQlVGRkVSKSB7Cj4+ICsgICAgICBpZiAoZHN0LmdldEZpbGUoKSA9PSBUR1NJX0ZJTEVf QlVGRkVSIHx8Cj4+ICsgICAgICAgICAgKGRzdC5nZXRGaWxlKCkgPT0gVEdTSV9GSUxFX01FTU9S WSAmJgo+PiArICAgICAgICAgICBtZW1vcnlGaWxlc1tkc3QuZ2V0SW5kZXgoMCldLm1lbV90eXBl ID09IFRHU0lfTUVNT1JZX1RZUEVfR0xPQkFMKSkgewo+PiAgICAgICAgICAgIGluZm8tPmlvLmds b2JhbEFjY2VzcyB8PSAweDI7Cj4+ICAgICAgICAgfQo+PiAgICAgIH0KPj4gQEAgLTEyOTUsNyAr MTI5Nyw5IEBAIGJvb2wgU291cmNlOjpzY2FuSW5zdHJ1Y3Rpb24oY29uc3Qgc3RydWN0IHRnc2lf ZnVsbF9pbnN0cnVjdGlvbiAqaW5zdCkKPj4gICAgICAgICAgICBpZiAoc3JjLmlzSW5kaXJlY3Qo MCkpCj4+ICAgICAgICAgICAgICAgaW5kaXJlY3RUZW1wQXJyYXlzLmluc2VydChzcmMuZ2V0QXJy YXlJZCgpKTsKPj4gICAgICAgICB9IGVsc2UKPj4gLSAgICAgIGlmIChzcmMuZ2V0RmlsZSgpID09 IFRHU0lfRklMRV9CVUZGRVIpIHsKPj4gKyAgICAgIGlmIChzcmMuZ2V0RmlsZSgpID09IFRHU0lf RklMRV9CVUZGRVIgfHwKPj4gKyAgICAgICAgICAoc3JjLmdldEZpbGUoKSA9PSBUR1NJX0ZJTEVf TUVNT1JZICYmCj4+ICsgICAgICAgICAgIG1lbW9yeUZpbGVzW3NyYy5nZXRJbmRleCgwKV0ubWVt X3R5cGUgPT0gVEdTSV9NRU1PUllfVFlQRV9HTE9CQUwpKSB7Cj4+ICAgICAgICAgICAgaW5mby0+ aW8uZ2xvYmFsQWNjZXNzIHw9IChpbnNuLmdldE9wY29kZSgpID09IFRHU0lfT1BDT0RFX0xPQUQp ID8KPj4gICAgICAgICAgICAgICAgICAweDEgOiAweDI7Cj4+ICAgICAgICAgfSBlbHNlCj4+IEBA IC0xNTI5LDYgKzE1MzMsMTAgQEAgQ29udmVydGVyOjptYWtlU3ltKHVpbnQgdGdzaUZpbGUsIGlu dCBmaWxlSWR4LCBpbnQgaWR4LCBpbnQgYywgdWludDMyX3QgYWRkcmVzcykKPj4KPj4gICAgICBp ZiAodGdzaUZpbGUgPT0gVEdTSV9GSUxFX01FTU9SWSkgewo+PiAgICAgICAgIHN3aXRjaCAoY29k ZS0+bWVtb3J5RmlsZXNbZmlsZUlkeF0ubWVtX3R5cGUpIHsKPj4gKyAgICAgIGNhc2UgVEdTSV9N RU1PUllfVFlQRV9HTE9CQUw6Cj4+ICsgICAgICAgICAvKiBOby1vcCB0aGlzIGlzIHRoZSBkZWZh dWx0IGZvciBUR1NJX0ZJTEVfTUVNT1JZICovCj4+ICsgICAgICAgICBzeW0tPnNldEZpbGUoRklM RV9NRU1PUllfR0xPQkFMKTsKPj4gKyAgICAgICAgIGJyZWFrOwo+PiAgICAgICAgIGNhc2UgVEdT SV9NRU1PUllfVFlQRV9TSEFSRUQ6Cj4+ICAgICAgICAgICAgc3ltLT5zZXRGaWxlKEZJTEVfTUVN T1JZX1NIQVJFRCk7Cj4+ICAgICAgICAgICAgYnJlYWs7Cj4+IGRpZmYgLS1naXQgYS9zcmMvZ2Fs bGl1bS9kcml2ZXJzL25vdXZlYXUvY29kZWdlbi9udjUwX2lyX3BlZXBob2xlLmNwcCBiL3NyYy9n YWxsaXVtL2RyaXZlcnMvbm91dmVhdS9jb2RlZ2VuL252NTBfaXJfcGVlcGhvbGUuY3BwCj4+IGlu ZGV4IDRhOTZkMDQuLjg0ZDI5NDQgMTAwNjQ0Cj4+IC0tLSBhL3NyYy9nYWxsaXVtL2RyaXZlcnMv bm91dmVhdS9jb2RlZ2VuL252NTBfaXJfcGVlcGhvbGUuY3BwCj4+ICsrKyBiL3NyYy9nYWxsaXVt L2RyaXZlcnMvbm91dmVhdS9jb2RlZ2VuL252NTBfaXJfcGVlcGhvbGUuY3BwCj4+IEBAIC0yNTgx LDYgKzI1ODEsNyBAQCBNZW1vcnlPcHQ6OnJ1bk9wdChCYXNpY0Jsb2NrICpiYikKPj4gICAgICAg ICAgICAgICAgbGRzdC0+b3AgPT0gT1BfTUVNQkFSKSB7Cj4+ICAgICAgICAgICAgICAgcHVyZ2VS ZWNvcmRzKE5VTEwsIEZJTEVfTUVNT1JZX0xPQ0FMKTsKPj4gICAgICAgICAgICAgICBwdXJnZVJl Y29yZHMoTlVMTCwgRklMRV9NRU1PUllfQlVGRkVSKTsKPj4gKyAgICAgICAgICAgIHB1cmdlUmVj b3JkcyhOVUxMLCBGSUxFX01FTU9SWV9HTE9CQUwpOwo+PiAgICAgICAgICAgICAgIHB1cmdlUmVj b3JkcyhOVUxMLCBGSUxFX01FTU9SWV9TSEFSRUQpOwo+PiAgICAgICAgICAgICAgIHB1cmdlUmVj b3JkcyhOVUxMLCBGSUxFX1NIQURFUl9PVVRQVVQpOwo+PiAgICAgICAgICAgIH0gZWxzZQo+PiBA QCAtMjU4OCw2ICsyNTg5LDcgQEAgTWVtb3J5T3B0OjpydW5PcHQoQmFzaWNCbG9jayAqYmIpCj4+ ICAgICAgICAgICAgICAgaWYgKGxkc3QtPnNyYygwKS5nZXRGaWxlKCkgPT0gRklMRV9NRU1PUllf QlVGRkVSKSB7Cj4+ICAgICAgICAgICAgICAgICAgcHVyZ2VSZWNvcmRzKE5VTEwsIEZJTEVfTUVN T1JZX0xPQ0FMKTsKPj4gICAgICAgICAgICAgICAgICBwdXJnZVJlY29yZHMoTlVMTCwgRklMRV9N RU1PUllfQlVGRkVSKTsKPj4gKyAgICAgICAgICAgICAgIHB1cmdlUmVjb3JkcyhOVUxMLCBGSUxF X01FTU9SWV9HTE9CQUwpOwo+PiAgICAgICAgICAgICAgICAgIHB1cmdlUmVjb3JkcyhOVUxMLCBG SUxFX01FTU9SWV9TSEFSRUQpOwo+PiAgICAgICAgICAgICAgIH0gZWxzZSB7Cj4+ICAgICAgICAg ICAgICAgICAgcHVyZ2VSZWNvcmRzKE5VTEwsIGxkc3QtPnNyYygwKS5nZXRGaWxlKCkpOwo+PiBA QCAtMjYwNyw3ICsyNjA5LDggQEAgTWVtb3J5T3B0OjpydW5PcHQoQmFzaWNCbG9jayAqYmIpCj4+ ICAgICAgICAgICAgRGF0YUZpbGUgZmlsZSA9IGxkc3QtPnNyYygwKS5nZXRGaWxlKCk7Cj4+Cj4+ ICAgICAgICAgICAgLy8gaWYgbGQgbFtdL2dbXSBsb29rIGZvciBwcmV2aW91cyBzdG9yZSB0byBl bGltaW5hdGUgdGhlIHJlbG9hZAo+PiAtICAgICAgICAgaWYgKGZpbGUgPT0gRklMRV9NRU1PUllf QlVGRkVSIHx8IGZpbGUgPT0gRklMRV9NRU1PUllfTE9DQUwpIHsKPj4gKyAgICAgICAgIGlmIChm aWxlID09IEZJTEVfTUVNT1JZX0JVRkZFUiB8fCBmaWxlID09IEZJTEVfTUVNT1JZX0xPQ0FMIHx8 Cj4+ICsgICAgICAgICAgICAgZmlsZSA9PSBGSUxFX01FTU9SWV9HTE9CQUwpIHsKPj4gICAgICAg ICAgICAgICAvLyBUT0RPOiBzaGFyZWQgbWVtb3J5ID8KPj4gICAgICAgICAgICAgICByZWMgPSBm aW5kUmVjb3JkKGxkc3QsIGZhbHNlLCBpc0FkamFjZW50KTsKPj4gICAgICAgICAgICAgICBpZiAo cmVjICYmICFpc0FkamFjZW50KQo+PiBkaWZmIC0tZ2l0IGEvc3JjL2dhbGxpdW0vZHJpdmVycy9u b3V2ZWF1L2NvZGVnZW4vbnY1MF9pcl9wcmludC5jcHAgYi9zcmMvZ2FsbGl1bS9kcml2ZXJzL25v dXZlYXUvY29kZWdlbi9udjUwX2lyX3ByaW50LmNwcAo+PiBpbmRleCA3M2VkNzUzLi4zOTE3NzY4 IDEwMDY0NAo+PiAtLS0gYS9zcmMvZ2FsbGl1bS9kcml2ZXJzL25vdXZlYXUvY29kZWdlbi9udjUw X2lyX3ByaW50LmNwcAo+PiArKysgYi9zcmMvZ2FsbGl1bS9kcml2ZXJzL25vdXZlYXUvY29kZWdl bi9udjUwX2lyX3ByaW50LmNwcAo+PiBAQCAtNDU2LDYgKzQ1Niw3IEBAIGludCBTeW1ib2w6OnBy aW50KGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsCj4+ICAgICAgY2FzZSBGSUxFX1NIQURFUl9JTlBV VDogIGMgPSAnYSc7IGJyZWFrOwo+PiAgICAgIGNhc2UgRklMRV9TSEFERVJfT1VUUFVUOiBjID0g J28nOyBicmVhazsKPj4gICAgICBjYXNlIEZJTEVfTUVNT1JZX0JVRkZFUjogYyA9ICdnJzsgYnJl YWs7Cj4+ICsgICBjYXNlIEZJTEVfTUVNT1JZX0dMT0JBTDogYyA9ICdnJzsgYnJlYWs7Cj4+ICAg ICAgY2FzZSBGSUxFX01FTU9SWV9TSEFSRUQ6IGMgPSAncyc7IGJyZWFrOwo+PiAgICAgIGNhc2Ug RklMRV9NRU1PUllfTE9DQUw6ICBjID0gJ2wnOyBicmVhazsKPj4gICAgICBkZWZhdWx0Ogo+PiBk aWZmIC0tZ2l0IGEvc3JjL2dhbGxpdW0vZHJpdmVycy9ub3V2ZWF1L2NvZGVnZW4vbnY1MF9pcl90 YXJnZXRfbnY1MC5jcHAgYi9zcmMvZ2FsbGl1bS9kcml2ZXJzL25vdXZlYXUvY29kZWdlbi9udjUw X2lyX3RhcmdldF9udjUwLmNwcAo+PiBpbmRleCAxY2Q0NWEyLi41YzYwYjIyIDEwMDY0NAo+PiAt LS0gYS9zcmMvZ2FsbGl1bS9kcml2ZXJzL25vdXZlYXUvY29kZWdlbi9udjUwX2lyX3RhcmdldF9u djUwLmNwcAo+PiArKysgYi9zcmMvZ2FsbGl1bS9kcml2ZXJzL25vdXZlYXUvY29kZWdlbi9udjUw X2lyX3RhcmdldF9udjUwLmNwcAo+PiBAQCAtMjA4LDYgKzIwOCw3IEBAIFRhcmdldE5WNTA6Omdl dEZpbGVTaXplKERhdGFGaWxlIGZpbGUpIGNvbnN0Cj4+ICAgICAgY2FzZSBGSUxFX1NIQURFUl9J TlBVVDogIHJldHVybiAweDIwMDsKPj4gICAgICBjYXNlIEZJTEVfU0hBREVSX09VVFBVVDogcmV0 dXJuIDB4MjAwOwo+PiAgICAgIGNhc2UgRklMRV9NRU1PUllfQlVGRkVSOiByZXR1cm4gMHhmZmZm ZmZmZjsKPj4gKyAgIGNhc2UgRklMRV9NRU1PUllfR0xPQkFMOiByZXR1cm4gMHhmZmZmZmZmZjsK Pj4gICAgICBjYXNlIEZJTEVfTUVNT1JZX1NIQVJFRDogcmV0dXJuIDE2IDw8IDEwOwo+PiAgICAg IGNhc2UgRklMRV9NRU1PUllfTE9DQUw6ICByZXR1cm4gNDggPDwgMTA7Cj4+ICAgICAgY2FzZSBG SUxFX1NZU1RFTV9WQUxVRTogIHJldHVybiAxNjsKPj4gZGlmZiAtLWdpdCBhL3NyYy9nYWxsaXVt L2RyaXZlcnMvbm91dmVhdS9jb2RlZ2VuL252NTBfaXJfdGFyZ2V0X252YzAuY3BwIGIvc3JjL2dh bGxpdW0vZHJpdmVycy9ub3V2ZWF1L2NvZGVnZW4vbnY1MF9pcl90YXJnZXRfbnZjMC5jcHAKPj4g aW5kZXggYmRhNTlhNS4uOWUxZTdiZiAxMDA2NDQKPj4gLS0tIGEvc3JjL2dhbGxpdW0vZHJpdmVy cy9ub3V2ZWF1L2NvZGVnZW4vbnY1MF9pcl90YXJnZXRfbnZjMC5jcHAKPj4gKysrIGIvc3JjL2dh bGxpdW0vZHJpdmVycy9ub3V2ZWF1L2NvZGVnZW4vbnY1MF9pcl90YXJnZXRfbnZjMC5jcHAKPj4g QEAgLTI0OSw2ICsyNDksNyBAQCBUYXJnZXROVkMwOjpnZXRGaWxlU2l6ZShEYXRhRmlsZSBmaWxl KSBjb25zdAo+PiAgICAgIGNhc2UgRklMRV9TSEFERVJfSU5QVVQ6ICByZXR1cm4gMHg0MDA7Cj4+ ICAgICAgY2FzZSBGSUxFX1NIQURFUl9PVVRQVVQ6IHJldHVybiAweDQwMDsKPj4gICAgICBjYXNl IEZJTEVfTUVNT1JZX0JVRkZFUjogcmV0dXJuIDB4ZmZmZmZmZmY7Cj4+ICsgICBjYXNlIEZJTEVf TUVNT1JZX0dMT0JBTDogcmV0dXJuIDB4ZmZmZmZmZmY7Cj4+ICAgICAgY2FzZSBGSUxFX01FTU9S WV9TSEFSRUQ6IHJldHVybiAxNiA8PCAxMDsKPj4gICAgICBjYXNlIEZJTEVfTUVNT1JZX0xPQ0FM OiAgcmV0dXJuIDQ4IDw8IDEwOwo+PiAgICAgIGNhc2UgRklMRV9TWVNURU1fVkFMVUU6ICByZXR1 cm4gMzI7Cj4+Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Cm1lc2EtZGV2IG1haWxpbmcgbGlzdAptZXNhLWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9tZXNhLWRldgo=