From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v3 02/15] drm: Centralize format information Date: Thu, 9 Jun 2016 14:40:28 +0200 Message-ID: <20160609124028.GP3363@phenom.ffwll.local> References: <1465428739-26529-1-git-send-email-laurent.pinchart@ideasonboard.com> <1465428739-26529-3-git-send-email-laurent.pinchart@ideasonboard.com> <20160609085223.GM3363@phenom.ffwll.local> <20160609122316.GD4329@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x243.google.com (mail-wm0-x243.google.com [IPv6:2a00:1450:400c:c09::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id B8ABA6EBAA for ; Thu, 9 Jun 2016 12:40:33 +0000 (UTC) Received: by mail-wm0-x243.google.com with SMTP id k184so10355919wme.2 for ; Thu, 09 Jun 2016 05:40:33 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20160609122316.GD4329@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Cc: Daniel Vetter , dri-devel@lists.freedesktop.org, Tomi Valkeinen , Laurent Pinchart List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBKdW4gMDksIDIwMTYgYXQgMDM6MjM6MTdQTSArMDMwMCwgVmlsbGUgU3lyasOkbMOk IHdyb3RlOgo+IE9uIFRodSwgSnVuIDA5LCAyMDE2IGF0IDEwOjUyOjIzQU0gKzAyMDAsIERhbmll bCBWZXR0ZXIgd3JvdGU6Cj4gPiBPbiBUaHUsIEp1biAwOSwgMjAxNiBhdCAwMjozMjowNkFNICsw MzAwLCBMYXVyZW50IFBpbmNoYXJ0IHdyb3RlOgo+ID4gPiBWYXJpb3VzIHBpZWNlcyBvZiBpbmZv cm1hdGlvbiBhYm91dCBEUk0gZm9ybWF0cyAobnVtYmVyIG9mIHBsYW5lcywgY29sb3IKPiA+ID4g ZGVwdGgsIGNocm9tYSBzdWJzYW1wbGluZywgLi4uKSBhcmUgc2NhdHRlcmVkIGFjcm9zcyBkaWZm ZXJlbnQgaGVscGVyCj4gPiA+IGZ1bmN0aW9ucyBpbiB0aGUgRFJNIGNvcmUuIENhbGxlcnMgb2Yg dGhvc2UgZnVuY3Rpb25zIG9mdGVuIG5lZWQgdG8KPiA+ID4gYWNjZXNzIG1vcmUgdGhhbiBhIHNp bmdsZSBwYXJhbWV0ZXIgb2YgdGhlIGZvcm1hdCwgbGVhZGluZyB0bwo+ID4gPiBpbmVmZmljaWVu Y2llcyBkdWUgdG8gbXVsdGlwbGUgbG9va3Vwcy4KPiA+ID4gCj4gPiA+IENlbnRyYWxpemUgYWxs IGZvcm1hdCBpbmZvcm1hdGlvbiBpbiBhIGRhdGEgc3RydWN0dXJlIGFuZCBjcmVhdGUgYQo+ID4g PiBmdW5jdGlvbiB0byBsb29rIHVwIGluZm9ybWF0aW9uIGJhc2VkIG9uIHRoZSBmb3JtYXQgNEND Lgo+ID4gPiAKPiA+ID4gU2lnbmVkLW9mZi1ieTogTGF1cmVudCBQaW5jaGFydCA8bGF1cmVudC5w aW5jaGFydEBpZGVhc29uYm9hcmQuY29tPgo+ID4gPiAtLS0KPiA+ID4gIGRyaXZlcnMvZ3B1L2Ry bS9kcm1fZm91cmNjLmMgfCA4NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwo+ID4gPiAgaW5jbHVkZS9kcm0vZHJtX2ZvdXJjYy5oICAgICB8IDE5ICsrKysrKysr KysKPiA+ID4gIDIgZmlsZXMgY2hhbmdlZCwgMTAzIGluc2VydGlvbnMoKykKPiA+ID4gCj4gPiA+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZvdXJjYy5jIGIvZHJpdmVycy9ncHUv ZHJtL2RybV9mb3VyY2MuYwo+ID4gPiBpbmRleCAwNjQ1Yzg1ZDVmOTUuLjQ3YjlhYmQ3NDNiZSAx MDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9mb3VyY2MuYwo+ID4gPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZvdXJjYy5jCj4gPiA+IEBAIC02Miw2ICs2Miw5MCBAQCBj b25zdCBjaGFyICpkcm1fZ2V0X2Zvcm1hdF9uYW1lKHVpbnQzMl90IGZvcm1hdCkKPiA+ID4gIEVY UE9SVF9TWU1CT0woZHJtX2dldF9mb3JtYXRfbmFtZSk7Cj4gPiA+ICAKPiA+ID4gIC8qKgo+ID4g PiArICogZHJtX2Zvcm1hdF9pbmZvIC0gcXVlcnkgaW5mb3JtYXRpb24gZm9yIGEgZ2l2ZW4gZm9y bWF0Cj4gPiA+ICsgKiBAZm9ybWF0OiBwaXhlbCBmb3JtYXQgKERSTV9GT1JNQVRfKikKPiA+ID4g KyAqCj4gPiA+ICsgKiBSZXR1cm5zOgo+ID4gPiArICogVGhlIGluc3RhbmNlIG9mIHN0cnVjdCBk cm1fZm9ybWF0X2luZm8gdGhhdCBkZXNjcmliZXMgdGhlIHBpeGVsIGZvcm1hdCwgb3IKPiA+ID4g KyAqIE5VTEwgaWYgdGhlIGZvcm1hdCBpcyB1bnN1cHBvcnRlZC4KPiA+ID4gKyAqLwo+ID4gPiAr Y29uc3Qgc3RydWN0IGRybV9mb3JtYXRfaW5mbyAqZHJtX2Zvcm1hdF9pbmZvKHUzMiBmb3JtYXQp Cj4gPiAKPiA+IEJpa2VzaGVkIG9uIHlvdXIgcGl4ZWwgZm9ybWF0IGRlc2NyaXB0aW9uIHRhYmxl LiBJIHRoaW5rIHRoZSBhcHByb2FjaCBJJ3ZlCj4gPiBzZWVuIGluIGdhbGxpdW0vbWVzYSB0byBk ZXNjcmliZSBwaXhlbCBmb3JtYXRzIGlzIGEgbG90IG1vcmUgZ2VuZXJpYywgYW5kCj4gPiB3ZSBt aWdodCBhcyB3ZWxsIGFkb3B0IGl0IHdoZW4gd2UgY2hhbmdlLiBJZGVhIGlzIHRvIGhhdmUgYSBi bG9jayBzaXplCj4gPiBtZWFzdXJlIGluIHBpeGVscyAoYm90aCBoIGFuZCB2KSwgYW5kIHRoZW4g Y3BwIGlzIGJ5dGVzX3Blcl9ibG9jay4gVGhpcyBpcwo+ID4gZXNzZW50aWFsbHkgd2hhdCB5b3Ug aGF2ZSB3aXRoIGhzdWIgYW5kIHZzdWIgYWxyZWFkeSwgZXhjZXB0IGNvbmZ1c2luZwo+ID4gbmFt ZXMsIG1vcmUgaWxsLWRlZmluZWQgKHNpbmNlIGl0IG9ubHkgbWFrZXMgc2Vuc2UgZm9yIHl1dikg YW5kIGxlc3MKPiA+IGdlbmVyaWMuIEEgZmV3IGV4YW1wbGVzOgo+IAo+IEkgdGhpbmsgeW91IGhh dmUgeW91ciBjb25mdXNpb24gYmFja3dhcmRzLiBDYWxsaW5nIHNvbWV0aGluZyBhIGJsb2NrIGlu Cj4gcGxhbmFyIGZvcm1hdHMgd291bGQgYmUgbW9yZSBjb25mdXNpbmcuIFRoZSBvbmx5IHRoaW5n IHRoYXQgcmVhbGx5Cj4gbWF0dGVycyBpcyB0aGUgcmVsYXRpdmUgcG9zaXRpb24gb2YgdGhlIHNh bXBsZXMgYmV0d2VlbiB0aGUgcGxhbmVzLgo+IFNvIHRoZXJlIHJlYWxseSBpcyBubyAiYmxvY2si IGluIHRoZXJlLgoKQXRtIFUvViBwbGFuZXMgaGF2ZSBhIGNwcCBvZiAxLCB3aGljaCBpcyBkZWZp bml0ZWx5IG5vdCB0cnVlLiBUaGVyZSdzIG11Y2gKbGVzcyB0aGFuIDEgYnl0ZSBwZXIgdmlzaWJs ZSBwaXhlbCBpbiB0aG9zZSBwbGFuZXMuIEFuZCB0aGF0J3MgdGhlIHBhcnQKdGhhdCBhbm5veXMg bWUuCgpibG9jayBoZXJlIGlzIGFuIGVudGlyZWx5IGZyZWUtc3RhbmRpbmcgY29uY2VwdCB0aGF0 IGp1c3QgbWVhbnMgImdyb3VwIG9mCnBpeGVscyBvdmVyIHdoaWNoIHRoZSBieXRlcy1wZXItZ3Jv dXAgaXMgY291bnRlZCBpbiBlYWNoIGdyb3VwIi4gSXQncyBhCmNvbmNlcHQgc3RvbGVuIGZyb20g Z2FsbGl1bSBhbmQgbWFrZXMgYSBsb3QgbW9yZSBzZW5zZSB3aGVuIHRhbGtpbmcgYWJvdXQKY29t cHJlc3NlZCBmb3JtYXRzLiBCdXQgSSB0aGluayBpdCBhbHNvIG1ha2VzIHNlbnNlIHdoZW4gdGFs a2luZyBhYm91dCB5dXYKZm9ybWF0cy4KCk1heWJlIGlmIHlvdSBvYmplY3QgImJsb2NrIiB3ZSBj YW4gY2FsbCBpdCAiZ3JvdXBfb2ZfcGl4ZWxzIiBpbnN0ZWFkLiBJdCdzCl9ub3RfIG1lYW50IHRv IGJlIGEgY29udGludW91cyBibG9jayBvZiBieXRlcyBpbiBtZW1vcnkgYXQgYWxsLgoKRS5nLiBm b3IgWVVZViBmb3JtYXRzIHRoZSBncm9wdSBzaXplIHdvdWxkIGJlICgyLCAxKSwgd2l0aCA0CmJ5 dGVzLXBlci1ncm91cCBmb3IgYW4gaW50ZXJsZWF2ZWQgZm9ybWF0IG9mIFk4VThZOFY4LiBJbiBh IHdheSB0aGUKaHN1Yi92c3ViIHN0dWZmIGRlc2NyaWJlcyBtb3JlIHRoZSBjb2xvciBkYXRhLCB0 aGUgZ3JvdXAtb2YtcGl4ZWxzIHN0dWZmCmlzIG1vcmUgdXNlZnVsIGltbyB0byBkZXNjcmliZSBo b3cgbXVjaCBzcGFjZSB5b3UgbmVlZCBvbiBlYWNoIHBsYW5lLgotRGFuaWVsCgo+IAo+ID4gCWhf YmxvY2tzaXplCXZfYmxvY2tzaXplCWJ5dGVzX3Blcl9ibG9jayAocGVyLXBsYW5lKQo+ID4gWVVW NDEwCTQJCTQJCXs0LCAxLCAxfQo+ID4gWVVWNDExCTQJCTEJCXs0LCAxLCAxfQo+ID4gCj4gPiBo c3ViID0gaF9ibG9ja3NpemUgLyBieXRlc19wZXJfYmxvY2tbVS9WIHBsYW5lXQo+ID4gdnN1YiA9 IHZfYmxvY2tzaXplIC8gYnl0ZXNfcGVyX2Jsb2NrW1UvViBwbGFuZV0KPiA+IAo+ID4gKl9ibG9j a3NpemUgaXMgaW4gcGl4ZWxzCj4gPiAKPiA+IFtub3QgZW50aXJlbHkgc3VyZSBvbiB0aGUgcHJl Y2lzZSBkYXRhLCBidXQgdGhhdCdzIGtpbmRhIHRoZSBwb2ludC5dCj4gPiAKPiA+IE9mYyBzaG91 bGQgbWF5YmUgY2hlY2sgdGhhdCB0aG9zZSBoZWxwZXJzIGFyZSBvbmx5IGNhbGxlZCBvbiB5dXYg cGxhbmFyCj4gPiBmb3JtYXRzLCB0b28uIFRoaXMgd2F5IHdlIGNvdWxkIGFsc28gcmVtb3ZlIHNv bWUgb2YgdGhlIGNvbW1lbnRzIGluCj4gPiBkcm1fZm91cmNjLmgsIG9yIGF0IGxlYXN0IG1ha2Ug dGhlIG1vcmUgY2xlYXIuIEFub3RoZXIgYmVuZWZpdCBpcyB0aGF0Cj4gPiB3aXRoIHRoaXMgaXQn cyBwb3NzaWJsZSB0byB3cml0ZSBlbnRpcmVseSBnZW5lcmljIHNpemUvc3RyaWRlIGNoZWNraW5n Cj4gPiBmdW5jdGlvbnMKPiA+IAo+ID4gT2ggYW5kIGlmIHdlIGdvIHdpdGggdGhpcywgc29tZSBh c2NpaWFydCBmb3Igd2hhdCdzIG1lYW50IChpbiBzcGhpbngvcnN0LAo+ID4gdGhhdCB3aWxsIGhh cHBlbiBpbiA0LjgpIHdvdWxkIGJlIGF3ZXNvbWUuCj4gPiAtRGFuaWVsCj4gPiAKPiA+ID4gK3sK PiA+ID4gKwlzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9mb3JtYXRfaW5mbyBmb3JtYXRzW10gPSB7 IAo+ID4gPiArCQl7IC5mb3JtYXQgPSBEUk1fRk9STUFUX0M4LAkJLmRlcHRoID0gOCwgIC5udW1f cGxhbmVzID0gMSwgLmNwcCA9IHsgMSwgMCwgMCB9LCAuaHN1YiA9IDEsIC52c3ViID0gMSB9LAo+ ID4gPiArCQl7IC5mb3JtYXQgPSBEUk1fRk9STUFUX1JHQjMzMiwJCS5kZXB0aCA9IDgsICAubnVt X3BsYW5lcyA9IDEsIC5jcHAgPSB7IDEsIDAsIDAgfSwgLmhzdWIgPSAxLCAudnN1YiA9IDEgfSwK PiA+ID4gKwkJeyAuZm9ybWF0ID0gRFJNX0ZPUk1BVF9CR1IyMzMsCQkuZGVwdGggPSA4LCAgLm51 bV9wbGFuZXMgPSAxLCAuY3BwID0geyAxLCAwLCAwIH0sIC5oc3ViID0gMSwgLnZzdWIgPSAxIH0s Cj4gPiA+ICsJCXsgLmZvcm1hdCA9IERSTV9GT1JNQVRfWFJHQjQ0NDQsCS5kZXB0aCA9IDEyLCAu bnVtX3BsYW5lcyA9IDEsIC5jcHAgPSB7IDIsIDAsIDAgfSwgLmhzdWIgPSAxLCAudnN1YiA9IDEg fSwKPiA+ID4gKwkJeyAuZm9ybWF0ID0gRFJNX0ZPUk1BVF9YQkdSNDQ0NCwJLmRlcHRoID0gMTIs IC5udW1fcGxhbmVzID0gMSwgLmNwcCA9IHsgMiwgMCwgMCB9LCAuaHN1YiA9IDEsIC52c3ViID0g MSB9LAo+ID4gPiArCQl7IC5mb3JtYXQgPSBEUk1fRk9STUFUX1JHQlg0NDQ0LAkuZGVwdGggPSAx MiwgLm51bV9wbGFuZXMgPSAxLCAuY3BwID0geyAyLCAwLCAwIH0sIC5oc3ViID0gMSwgLnZzdWIg PSAxIH0sCj4gPiA+ICsJCXsgLmZvcm1hdCA9IERSTV9GT1JNQVRfQkdSWDQ0NDQsCS5kZXB0aCA9 IDEyLCAubnVtX3BsYW5lcyA9IDEsIC5jcHAgPSB7IDIsIDAsIDAgfSwgLmhzdWIgPSAxLCAudnN1 YiA9IDEgfSwKPiA+ID4gKwkJeyAuZm9ybWF0ID0gRFJNX0ZPUk1BVF9BUkdCNDQ0NCwJLmRlcHRo ID0gMTIsIC5udW1fcGxhbmVzID0gMSwgLmNwcCA9IHsgMiwgMCwgMCB9LCAuaHN1YiA9IDEsIC52 c3ViID0gMSB9LAo+ID4gPiArCQl7IC5mb3JtYXQgPSBEUk1fRk9STUFUX0FCR1I0NDQ0LAkuZGVw dGggPSAxMiwgLm51bV9wbGFuZXMgPSAxLCAuY3BwID0geyAyLCAwLCAwIH0sIC5oc3ViID0gMSwg LnZzdWIgPSAxIH0sCj4gPiA+ICsJCXsgLmZvcm1hdCA9IERSTV9GT1JNQVRfUkdCQTQ0NDQsCS5k ZXB0aCA9IDEyLCAubnVtX3BsYW5lcyA9IDEsIC5jcHAgPSB7IDIsIDAsIDAgfSwgLmhzdWIgPSAx LCAudnN1YiA9IDEgfSwKPiA+ID4gKwkJeyAuZm9ybWF0ID0gRFJNX0ZPUk1BVF9CR1JBNDQ0NCwJ LmRlcHRoID0gMTIsIC5udW1fcGxhbmVzID0gMSwgLmNwcCA9IHsgMiwgMCwgMCB9LCAuaHN1YiA9 IDEsIC52c3ViID0gMSB9LAo+ID4gPiArCQl7IC5mb3JtYXQgPSBEUk1fRk9STUFUX1hSR0IxNTU1 LAkuZGVwdGggPSAxNSwgLm51bV9wbGFuZXMgPSAxLCAuY3BwID0geyAyLCAwLCAwIH0sIC5oc3Vi ID0gMSwgLnZzdWIgPSAxIH0sCj4gPiA+ICsJCXsgLmZvcm1hdCA9IERSTV9GT1JNQVRfWEJHUjE1 NTUsCS5kZXB0aCA9IDE1LCAubnVtX3BsYW5lcyA9IDEsIC5jcHAgPSB7IDIsIDAsIDAgfSwgLmhz dWIgPSAxLCAudnN1YiA9IDEgfSwKPiA+ID4gKwkJeyAuZm9ybWF0ID0gRFJNX0ZPUk1BVF9SR0JY NTU1MSwJLmRlcHRoID0gMTUsIC5udW1fcGxhbmVzID0gMSwgLmNwcCA9IHsgMiwgMCwgMCB9LCAu aHN1YiA9IDEsIC52c3ViID0gMSB9LAo+ID4gPiArCQl7IC5mb3JtYXQgPSBEUk1fRk9STUFUX0JH Ulg1NTUxLAkuZGVwdGggPSAxNSwgLm51bV9wbGFuZXMgPSAxLCAuY3BwID0geyAyLCAwLCAwIH0s IC5oc3ViID0gMSwgLnZzdWIgPSAxIH0sCj4gPiA+ICsJCXsgLmZvcm1hdCA9IERSTV9GT1JNQVRf QVJHQjE1NTUsCS5kZXB0aCA9IDE1LCAubnVtX3BsYW5lcyA9IDEsIC5jcHAgPSB7IDIsIDAsIDAg fSwgLmhzdWIgPSAxLCAudnN1YiA9IDEgfSwKPiA+ID4gKwkJeyAuZm9ybWF0ID0gRFJNX0ZPUk1B VF9BQkdSMTU1NSwJLmRlcHRoID0gMTUsIC5udW1fcGxhbmVzID0gMSwgLmNwcCA9IHsgMiwgMCwg MCB9LCAuaHN1YiA9IDEsIC52c3ViID0gMSB9LAo+ID4gPiArCQl7IC5mb3JtYXQgPSBEUk1fRk9S TUFUX1JHQkE1NTUxLAkuZGVwdGggPSAxNSwgLm51bV9wbGFuZXMgPSAxLCAuY3BwID0geyAyLCAw LCAwIH0sIC5oc3ViID0gMSwgLnZzdWIgPSAxIH0sCj4gPiA+ICsJCXsgLmZvcm1hdCA9IERSTV9G T1JNQVRfQkdSQTU1NTEsCS5kZXB0aCA9IDE1LCAubnVtX3BsYW5lcyA9IDEsIC5jcHAgPSB7IDIs IDAsIDAgfSwgLmhzdWIgPSAxLCAudnN1YiA9IDEgfSwKPiA+ID4gKwkJeyAuZm9ybWF0ID0gRFJN X0ZPUk1BVF9SR0I1NjUsCQkuZGVwdGggPSAxNiwgLm51bV9wbGFuZXMgPSAxLCAuY3BwID0geyAy LCAwLCAwIH0sIC5oc3ViID0gMSwgLnZzdWIgPSAxIH0sCj4gPiA+ICsJCXsgLmZvcm1hdCA9IERS TV9GT1JNQVRfQkdSNTY1LAkJLmRlcHRoID0gMTYsIC5udW1fcGxhbmVzID0gMSwgLmNwcCA9IHsg MiwgMCwgMCB9LCAuaHN1YiA9IDEsIC52c3ViID0gMSB9LAo+ID4gPiArCQl7IC5mb3JtYXQgPSBE Uk1fRk9STUFUX1JHQjg4OCwJCS5kZXB0aCA9IDI0LCAubnVtX3BsYW5lcyA9IDEsIC5jcHAgPSB7 IDMsIDAsIDAgfSwgLmhzdWIgPSAxLCAudnN1YiA9IDEgfSwKPiA+ID4gKwkJeyAuZm9ybWF0ID0g RFJNX0ZPUk1BVF9CR1I4ODgsCQkuZGVwdGggPSAyNCwgLm51bV9wbGFuZXMgPSAxLCAuY3BwID0g eyAzLCAwLCAwIH0sIC5oc3ViID0gMSwgLnZzdWIgPSAxIH0sCj4gPiA+ICsJCXsgLmZvcm1hdCA9 IERSTV9GT1JNQVRfWFJHQjg4ODgsCS5kZXB0aCA9IDI0LCAubnVtX3BsYW5lcyA9IDEsIC5jcHAg PSB7IDQsIDAsIDAgfSwgLmhzdWIgPSAxLCAudnN1YiA9IDEgfSwKPiA+ID4gKwkJeyAuZm9ybWF0 ID0gRFJNX0ZPUk1BVF9YQkdSODg4OCwJLmRlcHRoID0gMjQsIC5udW1fcGxhbmVzID0gMSwgLmNw cCA9IHsgNCwgMCwgMCB9LCAuaHN1YiA9IDEsIC52c3ViID0gMSB9LAo+ID4gPiArCQl7IC5mb3Jt YXQgPSBEUk1fRk9STUFUX1JHQlg4ODg4LAkuZGVwdGggPSAyNCwgLm51bV9wbGFuZXMgPSAxLCAu Y3BwID0geyA0LCAwLCAwIH0sIC5oc3ViID0gMSwgLnZzdWIgPSAxIH0sCj4gPiA+ICsJCXsgLmZv cm1hdCA9IERSTV9GT1JNQVRfQkdSWDg4ODgsCS5kZXB0aCA9IDI0LCAubnVtX3BsYW5lcyA9IDEs IC5jcHAgPSB7IDQsIDAsIDAgfSwgLmhzdWIgPSAxLCAudnN1YiA9IDEgfSwKPiA+ID4gKwkJeyAu Zm9ybWF0ID0gRFJNX0ZPUk1BVF9YUkdCMjEwMTAxMCwJLmRlcHRoID0gMzAsIC5udW1fcGxhbmVz ID0gMSwgLmNwcCA9IHsgNCwgMCwgMCB9LCAuaHN1YiA9IDEsIC52c3ViID0gMSB9LAo+ID4gPiAr CQl7IC5mb3JtYXQgPSBEUk1fRk9STUFUX1hCR1IyMTAxMDEwLAkuZGVwdGggPSAzMCwgLm51bV9w bGFuZXMgPSAxLCAuY3BwID0geyA0LCAwLCAwIH0sIC5oc3ViID0gMSwgLnZzdWIgPSAxIH0sCj4g PiA+ICsJCXsgLmZvcm1hdCA9IERSTV9GT1JNQVRfUkdCWDEwMTAxMDIsCS5kZXB0aCA9IDMwLCAu bnVtX3BsYW5lcyA9IDEsIC5jcHAgPSB7IDQsIDAsIDAgfSwgLmhzdWIgPSAxLCAudnN1YiA9IDEg fSwKPiA+ID4gKwkJeyAuZm9ybWF0ID0gRFJNX0ZPUk1BVF9CR1JYMTAxMDEwMiwJLmRlcHRoID0g MzAsIC5udW1fcGxhbmVzID0gMSwgLmNwcCA9IHsgNCwgMCwgMCB9LCAuaHN1YiA9IDEsIC52c3Vi ID0gMSB9LAo+ID4gPiArCQl7IC5mb3JtYXQgPSBEUk1fRk9STUFUX0FSR0IyMTAxMDEwLAkuZGVw dGggPSAzMCwgLm51bV9wbGFuZXMgPSAxLCAuY3BwID0geyA0LCAwLCAwIH0sIC5oc3ViID0gMSwg LnZzdWIgPSAxIH0sCj4gPiA+ICsJCXsgLmZvcm1hdCA9IERSTV9GT1JNQVRfQUJHUjIxMDEwMTAs CS5kZXB0aCA9IDMwLCAubnVtX3BsYW5lcyA9IDEsIC5jcHAgPSB7IDQsIDAsIDAgfSwgLmhzdWIg PSAxLCAudnN1YiA9IDEgfSwKPiA+ID4gKwkJeyAuZm9ybWF0ID0gRFJNX0ZPUk1BVF9SR0JBMTAx MDEwMiwJLmRlcHRoID0gMzAsIC5udW1fcGxhbmVzID0gMSwgLmNwcCA9IHsgNCwgMCwgMCB9LCAu aHN1YiA9IDEsIC52c3ViID0gMSB9LAo+ID4gPiArCQl7IC5mb3JtYXQgPSBEUk1fRk9STUFUX0JH UkExMDEwMTAyLAkuZGVwdGggPSAzMCwgLm51bV9wbGFuZXMgPSAxLCAuY3BwID0geyA0LCAwLCAw IH0sIC5oc3ViID0gMSwgLnZzdWIgPSAxIH0sCj4gPiA+ICsJCXsgLmZvcm1hdCA9IERSTV9GT1JN QVRfQVJHQjg4ODgsCS5kZXB0aCA9IDMyLCAubnVtX3BsYW5lcyA9IDEsIC5jcHAgPSB7IDQsIDAs IDAgfSwgLmhzdWIgPSAxLCAudnN1YiA9IDEgfSwKPiA+ID4gKwkJeyAuZm9ybWF0ID0gRFJNX0ZP Uk1BVF9BQkdSODg4OCwJLmRlcHRoID0gMzIsIC5udW1fcGxhbmVzID0gMSwgLmNwcCA9IHsgNCwg MCwgMCB9LCAuaHN1YiA9IDEsIC52c3ViID0gMSB9LAo+ID4gPiArCQl7IC5mb3JtYXQgPSBEUk1f Rk9STUFUX1JHQkE4ODg4LAkuZGVwdGggPSAzMiwgLm51bV9wbGFuZXMgPSAxLCAuY3BwID0geyA0 LCAwLCAwIH0sIC5oc3ViID0gMSwgLnZzdWIgPSAxIH0sCj4gPiA+ICsJCXsgLmZvcm1hdCA9IERS TV9GT1JNQVRfQkdSQTg4ODgsCS5kZXB0aCA9IDMyLCAubnVtX3BsYW5lcyA9IDEsIC5jcHAgPSB7 IDQsIDAsIDAgfSwgLmhzdWIgPSAxLCAudnN1YiA9IDEgfSwKPiA+ID4gKwkJeyAuZm9ybWF0ID0g RFJNX0ZPUk1BVF9ZVVY0MTAsCQkuZGVwdGggPSAwLCAgLm51bV9wbGFuZXMgPSAzLCAuY3BwID0g eyAxLCAxLCAxIH0sIC5oc3ViID0gNCwgLnZzdWIgPSA0IH0sCj4gPiA+ICsJCXsgLmZvcm1hdCA9 IERSTV9GT1JNQVRfWVZVNDEwLAkJLmRlcHRoID0gMCwgIC5udW1fcGxhbmVzID0gMywgLmNwcCA9 IHsgMSwgMSwgMSB9LCAuaHN1YiA9IDQsIC52c3ViID0gNCB9LAo+ID4gPiArCQl7IC5mb3JtYXQg PSBEUk1fRk9STUFUX1lVVjQxMSwJCS5kZXB0aCA9IDAsICAubnVtX3BsYW5lcyA9IDMsIC5jcHAg PSB7IDEsIDEsIDEgfSwgLmhzdWIgPSA0LCAudnN1YiA9IDEgfSwKPiA+ID4gKwkJeyAuZm9ybWF0 ID0gRFJNX0ZPUk1BVF9ZVlU0MTEsCQkuZGVwdGggPSAwLCAgLm51bV9wbGFuZXMgPSAzLCAuY3Bw ID0geyAxLCAxLCAxIH0sIC5oc3ViID0gNCwgLnZzdWIgPSAxIH0sCj4gPiA+ICsJCXsgLmZvcm1h dCA9IERSTV9GT1JNQVRfWVVWNDIwLAkJLmRlcHRoID0gMCwgIC5udW1fcGxhbmVzID0gMywgLmNw cCA9IHsgMSwgMSwgMSB9LCAuaHN1YiA9IDIsIC52c3ViID0gMiB9LAo+ID4gPiArCQl7IC5mb3Jt YXQgPSBEUk1fRk9STUFUX1lWVTQyMCwJCS5kZXB0aCA9IDAsICAubnVtX3BsYW5lcyA9IDMsIC5j cHAgPSB7IDEsIDEsIDEgfSwgLmhzdWIgPSAyLCAudnN1YiA9IDIgfSwKPiA+ID4gKwkJeyAuZm9y bWF0ID0gRFJNX0ZPUk1BVF9ZVVY0MjIsCQkuZGVwdGggPSAwLCAgLm51bV9wbGFuZXMgPSAzLCAu Y3BwID0geyAxLCAxLCAxIH0sIC5oc3ViID0gMiwgLnZzdWIgPSAxIH0sCj4gPiA+ICsJCXsgLmZv cm1hdCA9IERSTV9GT1JNQVRfWVZVNDIyLAkJLmRlcHRoID0gMCwgIC5udW1fcGxhbmVzID0gMywg LmNwcCA9IHsgMSwgMSwgMSB9LCAuaHN1YiA9IDIsIC52c3ViID0gMSB9LAo+ID4gPiArCQl7IC5m b3JtYXQgPSBEUk1fRk9STUFUX1lVVjQ0NCwJCS5kZXB0aCA9IDAsICAubnVtX3BsYW5lcyA9IDMs IC5jcHAgPSB7IDEsIDEsIDEgfSwgLmhzdWIgPSAxLCAudnN1YiA9IDEgfSwKPiA+ID4gKwkJeyAu Zm9ybWF0ID0gRFJNX0ZPUk1BVF9ZVlU0NDQsCQkuZGVwdGggPSAwLCAgLm51bV9wbGFuZXMgPSAz LCAuY3BwID0geyAxLCAxLCAxIH0sIC5oc3ViID0gMSwgLnZzdWIgPSAxIH0sCj4gPiA+ICsJCXsg LmZvcm1hdCA9IERSTV9GT1JNQVRfTlYxMiwJCS5kZXB0aCA9IDAsICAubnVtX3BsYW5lcyA9IDIs IC5jcHAgPSB7IDEsIDIsIDAgfSwgLmhzdWIgPSAyLCAudnN1YiA9IDIgfSwKPiA+ID4gKwkJeyAu Zm9ybWF0ID0gRFJNX0ZPUk1BVF9OVjIxLAkJLmRlcHRoID0gMCwgIC5udW1fcGxhbmVzID0gMiwg LmNwcCA9IHsgMSwgMiwgMCB9LCAuaHN1YiA9IDIsIC52c3ViID0gMiB9LAo+ID4gPiArCQl7IC5m b3JtYXQgPSBEUk1fRk9STUFUX05WMTYsCQkuZGVwdGggPSAwLCAgLm51bV9wbGFuZXMgPSAyLCAu Y3BwID0geyAxLCAyLCAwIH0sIC5oc3ViID0gMiwgLnZzdWIgPSAxIH0sCj4gPiA+ICsJCXsgLmZv cm1hdCA9IERSTV9GT1JNQVRfTlY2MSwJCS5kZXB0aCA9IDAsICAubnVtX3BsYW5lcyA9IDIsIC5j cHAgPSB7IDEsIDIsIDAgfSwgLmhzdWIgPSAyLCAudnN1YiA9IDEgfSwKPiA+ID4gKwkJeyAuZm9y bWF0ID0gRFJNX0ZPUk1BVF9OVjI0LAkJLmRlcHRoID0gMCwgIC5udW1fcGxhbmVzID0gMiwgLmNw cCA9IHsgMSwgMiwgMCB9LCAuaHN1YiA9IDEsIC52c3ViID0gMSB9LAo+ID4gPiArCQl7IC5mb3Jt YXQgPSBEUk1fRk9STUFUX05WNDIsCQkuZGVwdGggPSAwLCAgLm51bV9wbGFuZXMgPSAyLCAuY3Bw ID0geyAxLCAyLCAwIH0sIC5oc3ViID0gMSwgLnZzdWIgPSAxIH0sCj4gPiA+ICsJCXsgLmZvcm1h dCA9IERSTV9GT1JNQVRfWVVZViwJCS5kZXB0aCA9IDAsICAubnVtX3BsYW5lcyA9IDEsIC5jcHAg PSB7IDIsIDAsIDAgfSwgLmhzdWIgPSAyLCAudnN1YiA9IDEgfSwKPiA+ID4gKwkJeyAuZm9ybWF0 ID0gRFJNX0ZPUk1BVF9ZVllVLAkJLmRlcHRoID0gMCwgIC5udW1fcGxhbmVzID0gMSwgLmNwcCA9 IHsgMiwgMCwgMCB9LCAuaHN1YiA9IDIsIC52c3ViID0gMSB9LAo+ID4gPiArCQl7IC5mb3JtYXQg PSBEUk1fRk9STUFUX1VZVlksCQkuZGVwdGggPSAwLCAgLm51bV9wbGFuZXMgPSAxLCAuY3BwID0g eyAyLCAwLCAwIH0sIC5oc3ViID0gMiwgLnZzdWIgPSAxIH0sCj4gPiA+ICsJCXsgLmZvcm1hdCA9 IERSTV9GT1JNQVRfVllVWSwJCS5kZXB0aCA9IDAsICAubnVtX3BsYW5lcyA9IDEsIC5jcHAgPSB7 IDIsIDAsIDAgfSwgLmhzdWIgPSAyLCAudnN1YiA9IDEgfSwKPiA+ID4gKwkJeyAuZm9ybWF0ID0g RFJNX0ZPUk1BVF9BWVVWLAkJLmRlcHRoID0gMCwgIC5udW1fcGxhbmVzID0gMSwgLmNwcCA9IHsg NCwgMCwgMCB9LCAuaHN1YiA9IDEsIC52c3ViID0gMSB9LAo+ID4gPiArCX07Cj4gPiA+ICsKPiA+ ID4gKwl1bnNpZ25lZCBpbnQgaTsKPiA+ID4gKwo+ID4gPiArCWZvciAoaSA9IDA7IGkgPCBBUlJB WV9TSVpFKGZvcm1hdHMpOyArK2kpIHsKPiA+ID4gKwkJaWYgKGZvcm1hdHNbaV0uZm9ybWF0ID09 IGZvcm1hdCkKPiA+ID4gKwkJCXJldHVybiAmZm9ybWF0c1tpXTsKPiA+ID4gKwl9Cj4gPiA+ICsK PiA+ID4gKwlyZXR1cm4gTlVMTDsKPiA+ID4gK30KPiA+ID4gK0VYUE9SVF9TWU1CT0woZHJtX2Zv cm1hdF9pbmZvKTsKPiA+ID4gKwo+ID4gPiArLyoqCj4gPiA+ICAgKiBkcm1fZmJfZ2V0X2JwcF9k ZXB0aCAtIGdldCB0aGUgYnBwL2RlcHRoIHZhbHVlcyBmb3IgZm9ybWF0Cj4gPiA+ICAgKiBAZm9y bWF0OiBwaXhlbCBmb3JtYXQgKERSTV9GT1JNQVRfKikKPiA+ID4gICAqIEBkZXB0aDogc3RvcmFn ZSBmb3IgdGhlIGRlcHRoIHZhbHVlCj4gPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1f Zm91cmNjLmggYi9pbmNsdWRlL2RybS9kcm1fZm91cmNjLmgKPiA+ID4gaW5kZXggN2Y5MGEzOTZj ZjJiLi5iMDc3ZGY1MDdiNTEgMTAwNjQ0Cj4gPiA+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9mb3Vy Y2MuaAo+ID4gPiArKysgYi9pbmNsdWRlL2RybS9kcm1fZm91cmNjLmgKPiA+ID4gQEAgLTI1LDYg KzI1LDI1IEBACj4gPiA+ICAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KPiA+ID4gICNpbmNsdWRl IDx1YXBpL2RybS9kcm1fZm91cmNjLmg+Cj4gPiA+ICAKPiA+ID4gKy8qKgo+ID4gPiArICogc3Ry dWN0IGRybV9mb3JtYXRfaW5mbyAtIGluZm9ybWF0aW9uIGFib3V0IGEgRFJNIGZvcm1hdAo+ID4g PiArICogQGZvcm1hdDogNENDIGZvcm1hdCBpZGVudGlmaWVyIChEUk1fRk9STUFUXyopCj4gPiA+ ICsgKiBAZGVwdGg6IGNvbG9yIGRlcHRoIChudW1iZXIgb2YgYml0cyBwZXIgcGl4ZWwgZXhjbHVk aW5nIHBhZGRpbmcgYml0cykKPiA+ID4gKyAqIEBudW1fcGxhbmVzOiBudW1iZXIgb2YgY29sb3Ig cGxhbmVzICgxIHRvIDMpCj4gPiA+ICsgKiBAY3BwOiBudW1iZXIgb2YgYnl0ZXMgcGVyIHBpeGVs IChwZXIgcGxhbmUpCj4gPiA+ICsgKiBAaHN1YjogaG9yaXpvbnRhbCBjaHJvbWEgc3Vic2FtcGxp bmcgZmFjdG9yCj4gPiA+ICsgKiBAdnN1YjogdmVydGljYWwgY2hyb21hIHN1YnNhbXBsaW5nIGZh Y3Rvcgo+ID4gPiArICovCj4gPiA+ICtzdHJ1Y3QgZHJtX2Zvcm1hdF9pbmZvIHsKPiA+ID4gKwl1 MzIgZm9ybWF0Owo+ID4gPiArCXU4IGRlcHRoOwo+ID4gPiArCXU4IG51bV9wbGFuZXM7Cj4gPiA+ ICsJdTggY3BwWzNdOwo+ID4gPiArCXU4IGhzdWI7Cj4gPiA+ICsJdTggdnN1YjsKPiA+ID4gK307 Cj4gPiA+ICsKPiA+ID4gK2NvbnN0IHN0cnVjdCBkcm1fZm9ybWF0X2luZm8gKmRybV9mb3JtYXRf aW5mbyh1MzIgZm9ybWF0KTsKPiA+ID4gIHZvaWQgZHJtX2ZiX2dldF9icHBfZGVwdGgodWludDMy X3QgZm9ybWF0LCB1bnNpZ25lZCBpbnQgKmRlcHRoLCBpbnQgKmJwcCk7Cj4gPiA+ICBpbnQgZHJt X2Zvcm1hdF9udW1fcGxhbmVzKHVpbnQzMl90IGZvcm1hdCk7Cj4gPiA+ICBpbnQgZHJtX2Zvcm1h dF9wbGFuZV9jcHAodWludDMyX3QgZm9ybWF0LCBpbnQgcGxhbmUpOwo+ID4gPiAtLSAKPiA+ID4g UmVnYXJkcywKPiA+ID4gCj4gPiA+IExhdXJlbnQgUGluY2hhcnQKPiA+ID4gCj4gPiA+IF9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gPiA+IGRyaS1kZXZl bCBtYWlsaW5nIGxpc3QKPiA+ID4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ID4g PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZl bAo+ID4gCj4gPiAtLSAKPiA+IERhbmllbCBWZXR0ZXIKPiA+IFNvZnR3YXJlIEVuZ2luZWVyLCBJ bnRlbCBDb3Jwb3JhdGlvbgo+ID4gaHR0cDovL2Jsb2cuZmZ3bGwuY2gKPiA+IF9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gPiBkcmktZGV2ZWwgbWFpbGlu ZyBsaXN0Cj4gPiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gPiBodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo+IAo+IC0tIAo+ IFZpbGxlIFN5cmrDpGzDpAo+IEludGVsIE9UQwoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUg RW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5n IGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=