From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v3 5/8] drm: Handle aspect ratio info in atomic and legacy modeset paths Date: Tue, 13 Feb 2018 15:18:43 +0200 Message-ID: <20180213131843.GC5453@intel.com> References: <1515738096-16892-1-git-send-email-ankit.k.nautiyal@intel.com> <1515738096-16892-6-git-send-email-ankit.k.nautiyal@intel.com> <20180129185321.GU5453@intel.com> <2a237194-9136-1b9e-7df2-9f4056dde68d@intel.com> <20180131130911.GJ5453@intel.com> <9cbf55ba-79ac-b2be-7847-84b7a58b7b3c@intel.com> <20180201125437.GN5453@intel.com> <10dd7fbf-4005-e5b3-8a2c-cbb3536ca19b@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9082B89166 for ; Tue, 13 Feb 2018 13:18:47 +0000 (UTC) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: "Nautiyal, Ankit K" Cc: "dri-devel@lists.freedesktop.org" List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBGZWIgMTMsIDIwMTggYXQgMTA6MjE6MTVBTSArMDUzMCwgTmF1dGl5YWwsIEFua2l0 IEsgd3JvdGU6Cj4gSGkgVmlsbGUsCj4gCj4gQXMgcGVyIG91ciBsYXN0IGRpc2N1c3Npb24sIGZv bGxvd2luZyBwb2ludHMgd2VyZSBkaXNjdXNzZWQ6Cj4gCj4gMS4gVG8gc3VwcHJlc3MgdGhlIGFz cGVjdC1yYXRpbyBpbmZvIGZyb20gZ2V0YmxvYiBpb2N0bCB0byBhIHVzZXIgdGhhdCAKPiBkb2Vz IG5vdCBzdXBwb3J0IGl0Ogo+IAo+ICAgICAgaS4gQSBuZXcgZmxhZyBtdXN0IGJlIGFkZGVkIHRv IGRybV9ibG9iX3Byb3BlcnR5IHRvIG1hcmsgaWYgdGhlIAo+IGJsb2IgaGFzIG1vZGUgZGF0YS4K PiAKPiAgICAgIGlpLiBUaGlzIGZsYWcgbXVzdCBiZSBzZXQgd2hlbiB0aGUgdXNlciB0cmllcyBk byBhbiBhdG9taWMgbW9kZXNldC4KPiAKPiAgICAgIGlpaS4gSW4gdGhlIGdldGJsb2IgaW9jdGws IGJhc2VkIG9uIHRoZSBhYm92ZSBmbGFnLCBpdCBjYW4gYmUgCj4gZGV0ZXJtaW5lZCB0aGF0IGlm IHRoZSBibG9iCj4gCj4gICAgICBoYXMgbW9kZSBkYXRhLCBhbmQgdGhlIGFzcGVjdCByYXRpbyBp bmZvIGNhbiBiZSBzdXBwcmVzc2VkIGluIAo+IGdldGJsb2IgaW9jdGwsIGlmIHVzZXIgZG9lcyBu b3Qgc3VwcG9ydCBpdC4KPiAKPiAyLiBJbnN0ZWFkIG9mIGFkZGluZyBhc3BlY3QgcmF0aW8gY2Fw YWJpbGl0aWVzIGluIGRybV9hdG9taWNfc3RhdGUsIHBhc3MgCj4gb24gdGhlIGZpbGVfcHJpdiB3 aGljaCBhbHJlYWR5IGhhcwo+IAo+IHRoZSByZXF1aXJlZCBpbmZvcm1hdGlvbiB0byB0aGUgZnVu Y3Rpb24gZHJtX21vZGVfY29udmVydF91bW9kZS4KPiAKPiBJdCB3aWxsIHJlcXVpcmUgYWRkaXRp b24gb2YgYW4gbmV3IGFyZ3VtZW50IGZpbGVfcHJpdiB0byBzZXZlcmFsIAo+IGZ1bmN0aW9ucywg YnV0IHRoYXQgaXMgcmlnaHQgdGhpbmcgdG8gZG8sCj4gCj4gYXMgZmlsZV9wcml2IGlzIHRoZSBj b3JyZWN0IHN0cnVjdHVyZSBmb3IgdGhlIGNhcGFiaWxpdHkgaW5mb3JtYXRpb24uCj4gCj4gMy4g Q2hhbmdpbmcgdGhlIHVzZXJtb2RlIGFzcGVjdCByYXRpbyBmbGFnIGJpdHMsIHdpdGhvdXQgY2hh bmdlIGluIHRoZQo+IHBpY3R1cmVfYXNwZWN0X3JhdGlvIHdvdWxkIG5vdCBtYXR0ZXIsIGFuZCBk b2VzIG5vdCBuZWVkIHRvIGJlIGhhbmRsZWQgCj4gaW4gdGhpcyBwYXRjaC4KPiAKPiAKPiBJIGp1 c3QgaGF2ZSBvbmUgcXVlcnkgaGVyZS4gV2UgaGF2ZSBhZ3JlZWQgdG8gbW9kaWZ5IAo+IGRybV9t b2RlX2NvbnZlcnRfdW1vZGUsIHRvIGZpbHRlciBvdXQgdGhlIGFzcGVjdC1yYXRpbwo+IAo+IGlu Zm8gaWYgdXNlciBoYXMgbm90IHNldCBhc3BlY3QtcmF0aW8gY2FwYWJpbGl0eSwgYnV0IGRvIHdl IG5lZWQgYSAKPiBzaW1pbGFyIGNoYW5nZSB0aGUgZHJtX21vZGVfY29udmVydF90b191bW9kZT8K CkkgdGhpbmsgeW91IG1heWJlIGhhZCB0aG9zZSBiYWNrd2FyZHMuCgpkcm1fbW9kZV9jb252ZXJ0 X3Vtb2RlKCksIG9yIG1vcmUgbGlrZWx5IGl0cyByZWxldmFudCBjYWxsZXJzIHNldGNydGMKYW5k IHNldHByb3BlcnR5LCBuZWVkIHRvIHJlamVjdCB0aGUgbW9kZSBpZiB0aGUgY2xpZW50IGNhcCBp cyBub3Qgc2V0LgoKZHJtX21vZGVfY29udmVydF90b191bW9kZSgpLCBvciByYXRoZXIgaXRzIGNh bGxlcnMgZ2V0YmxvYiBhbmQgZ2V0Y3J0YywKbmVlZCB0byBmaWx0ZXIgb3V0IHRoZSBmbGFncy4K Cj4gCj4gSWYgd2UgZG8sIEkgYW0gbm90IHN1cmUgaWYgaXQgd291bGQgYmUgcG9zc2libGUgdG8g aGF2ZSB0aGUgZmlsZV9wcml2IHRvIAo+IC9kcm1fYXRvbWljX3NldF9tb2RlX2Zvcl9jcnRjLywg d2hpY2ggY2FsbHMKPiAKPiBkcm1fbW9kZV9jb252ZXJ0X3RvX3Vtb2RlLiAgVGhlIGZ1bmN0aW9u IC9kcm1fYXRvbWljX3NldF9tb2RlX2Zvcl9jcnRjLyAKPiBpcyB1c2VkIHRvIHNldCBtb2RlLCBv cmlnaW5hdGluZyBieSBrZXJuZWwsCj4gCj4gYW5kIG1ha2UgYSBibG9iIGZyb20gdGhlIGtlcm5l bCBtb2RlLCB3aGljaCBpdCBzYXZlcyBpbiBjcnRjX3N0YXRlLgo+IAo+IFRoaXMgZnVuY3Rpb24g LzogZHJtX2F0b21pY19zZXRfbW9kZV9mb3JfY3J0YywgL2lzIGNhbGxlZCBieSBzZXZlcmFsIAo+ IGhlbHBlciBmdW5jdGlvbnMgYW5kIGRyaXZlciBmdW5jdGlvbnMsIGFuZCBwYXNzaW5nCj4gCj4g ZmlsZV9wcml2IGZyb20gYWxsIHRoZXNlIGZ1bmN0aW9ucyBkb2VzIG5vdCBzZWVtIHRvIGJlIHBs YXVzaWJsZS4KCkkgZG9uJ3QgdGhpbmsgd2UgbmVlZCB0byBwbHVtYiBpdCBxdWl0ZSB0aGF0IGRl ZXAuIERvaW5nIHRoZQpjaGVjayBpbiBkcm1fYXRvbWljX2NydGNfc2V0X3Byb3BlcnR5KCkgc2hv dWxkIGJlIHN1ZmZpY2llbnQuCgo+IAo+IEFueSBzdWdnZXN0aW9ucyBvbiBob3cgdG8gaGFuZGxl IHRoaXMgc2l0dWF0aW9uPwo+IAo+IAo+IFJlZ2FyZHMsCj4gCj4gQW5raXQKPiAKPiAKPiBPbiAy LzgvMjAxOCA5OjU5IEFNLCBOYXV0aXlhbCwgQW5raXQgSyB3cm90ZToKPiA+IEhpIFZpbGxlLAo+ ID4KPiA+IEkgc3RpbGwgaGF2ZSBzb21lIHF1ZXJpZXMgcmVnYXJkaW5nIHRoZSBoYW5kbGluZyBv ZiBhc3BlY3QgcmF0aW8gZmxhZ3MgCj4gPiBpbiBnZXRibG9iIGlvY3RsLgo+ID4KPiA+IFBsZWFz ZSBmaW5kIGJlbG93IG15IHJlc3BvbnNlcyBpbmxpbmUuCj4gPgo+ID4KPiA+IE9uIDIvMS8yMDE4 IDY6MjQgUE0sIFZpbGxlIFN5cmrDpGzDpCB3cm90ZToKPiA+PiBPbiBUaHUsIEZlYiAwMSwgMjAx OCBhdCAwNDozNToyMlBNICswNTMwLCBOYXV0aXlhbCwgQW5raXQgSyB3cm90ZToKPiA+Pj4gSGkg VmlsbGUsCj4gPj4+Cj4gPj4+IEFwcHJlY2lhdGUgeW91ciB0aW1lIGFuZCB0aGUgc3VnZ2VzdGlv bnMuCj4gPj4+IFBsZWFzZSBmaW5kIG15IHJlc3BvbnNlIGlubGluZToKPiA+Pj4KPiA+Pj4gT24g MS8zMS8yMDE4IDY6MzkgUE0sIFZpbGxlIFN5cmrDpGzDpCB3cm90ZToKPiA+Pj4+IE9uIFdlZCwg SmFuIDMxLCAyMDE4IGF0IDEyOjA0OjUyUE0gKzA1MzAsIE5hdXRpeWFsLCBBbmtpdCBLIHdyb3Rl Ogo+ID4+Pj4+IE9uIDEvMzAvMjAxOCAxMjoyMyBBTSwgVmlsbGUgU3lyasOkbMOkIHdyb3RlOgo+ ID4+Pj4+PiBPbiBGcmksIEphbiAxMiwgMjAxOCBhdCAxMTo1MTozM0FNICswNTMwLCBOYXV0aXlh bCwgQW5raXQgSyB3cm90ZToKPiA+Pj4+Pj4+IEZyb206IEFua2l0IE5hdXRpeWFsIDxhbmtpdC5r Lm5hdXRpeWFsQGludGVsLmNvbT4KPiA+Pj4+Pj4+Cj4gPj4+Pj4+PiBJZiB0aGUgdXNlciBtb2Rl IGRvZXMgbm90IHN1cHBvcnQgYXNwZWN0LXJhdGlvLCBhbmQgcmVxdWVzdHMgZm9yCj4gPj4+Pj4+ PiBhIG1vZGVzZXQsIHRoZW4gdGhlIGZsYWcgYml0cyByZXByZXNlbnRpbmcgYXNwZWN0IHJhdGlv IGluIHRoZQo+ID4+Pj4+Pj4gZ2l2ZW4gdXNlci1tb2RlIG11c3QgYmUgcmVqZWN0ZWQuCj4gPj4+ Pj4+PiBTaW1pbGFybHksIHdoaWxlIHByZXBhcmluZyBhIHVzZXItbW9kZSBmcm9tIGtlcm5lbCBt b2RlLCB0aGUKPiA+Pj4+Pj4+IGFzcGVjdC1yYXRpbyBpbmZvIG11c3Qgbm90IGJlIGdpdmVuLCBp ZiBhc3BlY3QtcmF0aW8gaXMgbm90Cj4gPj4+Pj4+PiBzdXBwb3J0ZWQgYnkgdGhlIHVzZXIuCj4g Pj4+Pj4+Pgo+ID4+Pj4+Pj4gVGhpcyBwYXRjaDoKPiA+Pj4+Pj4+IDEuIGFkZHMgYSBuZXcgYml0 IGZpZWxkIGFzcGVjdF9yYXRpb19hbGxvd2VkIGluIGRybV9hdG9taWNfc3RhdGUsCj4gPj4+Pj4+ PiB3aGljaCBpcyBzZXQgb25seSBpZiB0aGUgYXNwZWN0LXJhdGlvIGlzIHN1cHBvcnRlZCBieSB0 aGUgdXNlci4KPiA+Pj4+Pj4+IDIuIGRpc2NhcmRzIHRoZSBhc3BlY3QtcmF0aW8gaW5mbyBmcm9t IHRoZSB1c2VyIG1vZGUgd2hpbGUKPiA+Pj4+Pj4+IHByZXBhcmluZyBrZXJuZWwgbW9kZSBzdHJ1 Y3R1cmUsIGR1cmluZyBtb2Rlc2V0LCBpZiB0aGUKPiA+Pj4+Pj4+IHVzZXIgZG9lcyBub3Qgc3Vw cG9ydCBhc3BlY3QgcmF0aW8uCj4gPj4+Pj4+PiAzLiBhdm9pZHMgc2V0dGluZyB0aGUgYXNwZWN0 LXJhdGlvIGluZm8gaW4gdXNlci1tb2RlLCB3aGlsZQo+ID4+Pj4+Pj4gY29udmVydGluZyB1c2Vy LW1vZGUgZnJvbSB0aGUga2VybmVsLW1vZGUuCj4gPj4+Pj4+Pgo+ID4+Pj4+Pj4gU2lnbmVkLW9m Zi1ieTogQW5raXQgTmF1dGl5YWwgPGFua2l0LmsubmF1dGl5YWxAaW50ZWwuY29tPgo+ID4+Pj4+ Pj4KPiA+Pj4+Pj4+IFYzOiBBZGRyZXNzZWQgcmV2aWV3IGNvbW1lbnRzIGZyb20gVmlsbGU6Cj4g Pj4+Pj4+PiAtRG8gbm90IGNvcnJ1cHQgdGhlIGN1cnJlbnQgY3J0YyBzdGF0ZSBieSB1cGRhdGlu ZyBhc3BlY3QgcmF0aW8KPiA+Pj4+Pj4+IG9uIHRoZSBmbHkuCj4gPj4+Pj4+PiAtLS0KPiA+Pj4+ Pj4+ICAgICBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jIHwgNjEgCj4gPj4+Pj4+PiArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQo+ID4+Pj4+Pj4gICAgIGRy aXZlcnMvZ3B1L2RybS9kcm1fY3J0Yy5jICAgfCAxOSArKysrKysrKysrKysrKwo+ID4+Pj4+Pj4g ICAgIGluY2x1ZGUvZHJtL2RybV9hdG9taWMuaCAgICAgfCAgMiArKwo+ID4+Pj4+Pj4gICAgIDMg ZmlsZXMgY2hhbmdlZCwgNzkgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKPiA+Pj4+Pj4+ Cj4gPj4+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYyAKPiA+ Pj4+Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYwo+ID4+Pj4+Pj4gaW5kZXggNjlm Zjc2My4uMzkzMTNlMiAxMDA2NDQKPiA+Pj4+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1f YXRvbWljLmMKPiA+Pj4+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKPiA+ Pj4+Pj4+IEBAIC0zMTYsNiArMzE2LDM1IEBAIHN0YXRpYyBzMzIgX191c2VyIAo+ID4+Pj4+Pj4g KmdldF9vdXRfZmVuY2VfZm9yX2NydGMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ ID4+Pj4+Pj4gICAgICAgICAgICAgcmV0dXJuIGZlbmNlX3B0cjsKPiA+Pj4+Pj4+ICAgICB9Cj4g Pj4+Pj4+PiArLyoqCj4gPj4+Pj4+PiArICogZHJtX2F0b21pY19hbGxvd19hc3BlY3RfcmF0aW9f Zm9yX2ttb2RlCj4gPj4+Pj4+PiArICogQHN0YXRlOiB0aGUgY3J0YyBzdGF0ZQo+ID4+Pj4+Pj4g KyAqIEBtb2RlOiBrZXJuZWwtaW50ZXJuYWwgbW9kZSwgd2hpY2ggaXMgdXNlZCB0byBjcmVhdGUg YSAKPiA+Pj4+Pj4+IGR1cGxpY2F0ZSBtb2RlLAo+ID4+Pj4+Pj4gKyAqIHdpdGggdXBkYXRlZCBw aWN0dXJlIGFzcGVjdCByYXRpby4KPiA+Pj4+Pj4+ICsgKgo+ID4+Pj4+Pj4gKyAqIEFsbG93IHRo ZSBhc3BlY3QgcmF0aW8gaW5mbyBpbiB0aGUga2VybmVsIG1vZGUgb25seSBpZiAKPiA+Pj4+Pj4+ IGFzcGVjdCByYXRpbyBpcwo+ID4+Pj4+Pj4gKyAqIHN1cHBvcnRlZC4KPiA+Pj4+Pj4+ICsgKgo+ ID4+Pj4+Pj4gKyAqIFJFVFVSTlM6Cj4gPj4+Pj4+PiArICoga2VybmVsLWludGVybmFsIG1vZGUg d2l0aCB1cGRhdGVkIHBpY3R1cmUgYXNwZWN0IHJhdGlvIHZhbHVlLgo+ID4+Pj4+Pj4gKyAqLwo+ ID4+Pj4+Pj4gKwo+ID4+Pj4+Pj4gK3N0cnVjdCBkcm1fZGlzcGxheV9tb2RlKgo+ID4+Pj4+Pj4g K2RybV9hdG9taWNfYWxsb3dfYXNwZWN0X3JhdGlvX2Zvcl9rbW9kZShzdHJ1Y3QgZHJtX2NydGNf c3RhdGUgCj4gPj4+Pj4+PiAqc3RhdGUsCj4gPj4+Pj4+PiArICAgICAgICAgICAgICAgICAgICBj b25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkKPiA+Pj4+Pj4+ICt7Cj4gPj4+Pj4+ PiArICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICphdG9taWNfc3RhdGUgPSBzdGF0ZS0+c3Rh dGU7Cj4gPj4+Pj4+PiArICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphcl9rbW9kZTsKPiA+ Pj4+Pj4+ICsKPiA+Pj4+Pj4+ICsgICAgYXJfa21vZGUgPSBkcm1fbW9kZV9kdXBsaWNhdGUoc3Rh dGUtPmNydGMtPmRldiwgbW9kZSk7Cj4gPj4+Pj4+PiArICAgIC8qCj4gPj4+Pj4+PiArICAgICAq IElmIGFzcGVjdCByYXRpbyBpcyBub3Qgc3VwcG9ydGVkLCBzZXQgdGhlIHBpY3R1cmUgYXNwZWN0 IAo+ID4+Pj4+Pj4gcmF0aW8gYXMKPiA+Pj4+Pj4+ICsgICAgICogTk9ORS4KPiA+Pj4+Pj4+ICsg ICAgICovCj4gPj4+Pj4+PiArICAgIGlmIChhdG9taWNfc3RhdGUgJiYgIWF0b21pY19zdGF0ZS0+ YWxsb3dfYXNwZWN0X3JhdGlvKQo+ID4+Pj4+Pj4gKyAgICAgICAgYXJfa21vZGUtPnBpY3R1cmVf YXNwZWN0X3JhdGlvID0gSERNSV9QSUNUVVJFX0FTUEVDVF9OT05FOwo+ID4+Pj4+Pj4gKyAgICBy ZXR1cm4gYXJfa21vZGU7Cj4gPj4+Pj4+PiArfQo+ID4+Pj4+Pj4gICAgICAgICAvKioKPiA+Pj4+ Pj4+ICAgICAgKiBkcm1fYXRvbWljX3NldF9tb2RlX2Zvcl9jcnRjIC0gc2V0IG1vZGUgZm9yIENS VEMKPiA+Pj4+Pj4+IEBAIC0zNDEsNyArMzcwLDEwIEBAIGludCBkcm1fYXRvbWljX3NldF9tb2Rl X2Zvcl9jcnRjKHN0cnVjdCAKPiA+Pj4+Pj4+IGRybV9jcnRjX3N0YXRlICpzdGF0ZSwKPiA+Pj4+ Pj4+ICAgICAgICAgc3RhdGUtPm1vZGVfYmxvYiA9IE5VTEw7Cj4gPj4+Pj4+PiAgICAgICAgICAg ICBpZiAobW9kZSkgewo+ID4+Pj4+Pj4gLSAgICAgICAgZHJtX21vZGVfY29udmVydF90b191bW9k ZSgmdW1vZGUsIG1vZGUpOwo+ID4+Pj4+Pj4gKyAgICAgICAgc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgKmFyX21vZGU7Cj4gPj4+Pj4+PiArCj4gPj4+Pj4+PiArICAgICAgICBhcl9tb2RlID0gCj4g Pj4+Pj4+PiBkcm1fYXRvbWljX2FsbG93X2FzcGVjdF9yYXRpb19mb3Jfa21vZGUoc3RhdGUsIG1v ZGUpOwo+ID4+Pj4+Pj4gKyAgICAgICAgZHJtX21vZGVfY29udmVydF90b191bW9kZSgmdW1vZGUs IGFyX21vZGUpOwo+ID4+Pj4+PiBUaGlzIHN0aWxsIGxvb2tzIHNrZXRjaHkuCj4gPj4+Pj4+Cj4g Pj4+Pj4+IEkgYmVsaWV2ZSB0aGVyZSBhcmUganVzdCB0d28gcGxhY2VzIHdoZXJlIHdlIG5lZWQg dG8gZmlsdGVyIG91dCB0aGUKPiA+Pj4+Pj4gYXNwZWN0IHJhdGlvIGZsYWdzIGZyb20gdGhlIHVt b2RlLCBuYW1lbHkgdGhlIGdldGJsb2IgYW5kIGdldGNydGMKPiA+Pj4+Pj4gaW9jdGxzLgo+ID4+ Pj4+IEFGQUlLIFRoZSBnZXRibG9iIGlvY3RsIGNhbiBiZSBjYWxsZWQgZm9yIGVkaWQgYmxvYiwg Z2FtbWEsIGN0bSBibG9iLAo+ID4+Pj4+IGV0Yy4gYXBhcnQgZnJvbSB0aGUgbW9kZSBibG9iLgo+ ID4+Pj4+IElzIHRoZXJlIGFueSB3YXkgdG8gY2hlY2sgZnJvbSBibG9iIGlkIChvciBieSBhbnkg b3RoZXIgbWVhbnMpLAo+ID4+Pj4+IGlmIHRoZSBkYXRhIGlzIGZvciB0aGUgbW9kZSwgb3IgZWRp ZCwgb3IgZ2FtbWEgZXRjLgo+ID4+Pj4gSSB0aGluayB3ZSdkIGhhdmUgdG8gc29tZWhvdyBtYXJr IHRoZSBtb2RlIGJsb2JzIGFzIHNwZWNpYWwuIFVudGlsIHdlCj4gPj4+PiBoYXZlIG1vcmUgbmVl ZCBmb3IgY2xlYW5pbmcgdXAgYmxvYnMgYmVmb3JlIHJldHVybmluZyB0aGVtIHRvIAo+ID4+Pj4g dXNlcnNwYWNlCj4gPj4+PiBJIHRoaW5rIGEgc2ltcGxlIGZsYWcgc2hvdWxkIGRvLiBJZiB3ZSBj b21lIHVwIHdpdGggbW9yZSB1c2VzIGxpa2UgCj4gPj4+PiB0aGlzCj4gPj4+PiB0aGVuIGl0IG1p Z2h0IG1ha2Ugc2Vuc2UgdG8gaW50cm9kdWNlIHNvbWUga2luZCBvZiBvcHRpb25hbCBmaWx0ZXIK PiA+Pj4+IGZ1bmN0aW9uIGZvciBibG9icy4KPiA+Pj4gSWYgbXkgdW5kZXJzdGFuZGluZyBpcyBj b3JyZWN0LAo+ID4+PiAxLiBUbyBiZSBhYmxlIHRvIGRvIHRoaXMsIHdlIG5lZWQgdG8gY2hhbmdl IGluIHVhcGkuCj4gPj4gV2Ugc2hvdWxkIGJlIGZpbmUgd2l0aCBhbiBpbnRlcm5hbCBmbGFnLiBP YnZpb3VzbHkgaXQgd29uJ3QgYmUgc2V0Cj4gPj4gZm9yIGJsb2JzIGZyZXNobHkgY3JlYXRlZCBi eSB1c2Vyc3BhY2UsIGJ1dCB0aGF0J3MgZmluZSBiZWNhdXNlIHdlCj4gPj4gZG8gbm8gb3RoZXIg ZXJyb3IgY2hlY2tpbmcgZm9yIHRoZW0gZWl0aGVyLiBUaGUgZXJyb3IgY2hlY2tpbmcgd2lsbAo+ ID4+IGhhcHBlbiB3aGVuIHRoZSB1c2VyIHRyaWVzIHRvIGFjdHVhbGx5IHVzZSB0aGUgYmxvYi4K PiA+Cj4gPiBJIGFtIG5vdCBzdXJlIHdoeSBnZXRibG9iIGlvY3RsIHNob3VsZCBldmVuIGNvbWUg aW50byBwaWN0dXJlLiAKPiA+IChQZXJoYXBzIEkgYW0gbWlzc2luZyBzb21ldGhpbmcpLgo+ID4g QXMgcGVyIG15IHVuZGVyc3RhbmRpbmc6Cj4gPiBJZiBhIHVzZXJzcGFjZSBuZWVkcyB0byBzZXQg YSBtb2RlLCBpdCB3aWxsIGp1c3QgY3JlYXRlIGEgYmxvYiB3aXRoIAo+ID4gZHJtX21vZGVfbW9k ZV9pbmZvLAo+ID4gYW5kIGdldCB0aGUgYmxvYi1pZC4gVGhpcyBibG9iLWlkIHdvdWxkIGJlIHN1 cHBsaWVkIHRvIAo+ID4gZHJtX21vZGVfYXRvbWljX2lvY3RsIGFzIGEgY3J0Ywo+ID4gcHJvcGVy dHkgbW9kZV9pZC4KPiA+IEF0IHRoZSBrZXJuZWwgc2lkZSwgIHRoZSBjcnRjIHByb3BlcnR5IG1v ZGVfaWQgaXMgc2V0IGJ5IGxvb2tpbmctdXAgCj4gPiBmb3IgbW9kZSBibG9iIGZyb20gYmxvYiBp ZC4KPiA+IEkgYW0gZG9pbmcgdGhlIGNoYW5nZSBpbiB0aGUgdXNlciBtb2RlIGFzcGVjdC1yYXRp byBmbGFncyBhdCB0aGlzIAo+ID4ganVuY3Rpb24uCj4gPgo+ID4gQXMgZmFyIGFzIGdldGJsb2Ig aW9jdGwgaXMgY29uY2VybmVkLCBpZiB0aGUgdXNlciBkb2VzIGNhbGwgZ2V0YmxvYiAKPiA+IGlv Y3RsIGZvciBnZXR0aW5nIG1vZGUgYmxvYiBmcm9tCj4gPiB0aGUgYmxvYiBpZCwgaXQgd2lsbCBy ZWNlaXZlIHRoZSBzYW1lIG1vZGUgYmxvYiwgd2l0aCBzYW1lIGFzcGVjdCAKPiA+IHJhdGlvIGlu Zm8gd2hpY2ggdGhlIHVzZXIgaGFkCj4gPiBjcmVhdGVkIHVzaW5nIGNyZWF0ZSBibG9iIGlvY3Rs LiBJZiBpdCBkb2VzIHdhbnQgdG8gdXNlIHRoZSBibG9iLCBpdCAKPiA+IGhhcyB0byBjb21lIHRo cm91Z2ggdGhlCj4gPiBkcm1fbW9kZV9hdG9taWNfaW9jdGwgd2F5LCB3aGVyZSBhc3BlY3QgcmF0 aW8gZmxhZ3MgYXJlIGhhbmRsZWQuCj4gPgo+ID4+PiAyLiBXaGVuZXZlciB0aGUgdXNlcnNwYWNl IGNyZWF0ZXMgYSBibG9iIGZvciBtb2RlLCB0aGUgbmV3IGZsYWcvY2xhc3MKPiA+Pj4gZm9yIGJs b2IgdHlwZSBuZWVkcyB0byBiZSBzZXQuCj4gPj4+Cj4gPj4+IERvIHlvdSB0aGluayB0aGF0IGl0 J3Mgd29ydGggdGhlIGVmZm9ydD8KPiA+Pj4+PiBJZiB3ZSBjYW4gY2hlY2sgdGhhdCwgSSBjYW4g bWFrZSBzdXJlIHRoYXQgYXNwZWN0LXJhdGlvIGZsYWdzIGFyZSAKPiA+Pj4+PiB0YWtlbgo+ID4+ Pj4+IGNhcmUgb2YsIGlmIHRoZSBibG9iIGlzIGZvciBtb2RlLAo+ID4+Pj4+IGFuZCB0aGUgYXNw ZWN0IHJhdGlvIGlzIG5vdCBzdXBwb3J0ZWQuCj4gPj4+Pj4KPiA+Pj4+Pj4gQW5kIGZvciBjaGVj a2luZyB0aGUgdXNlciBpbnB1dCBJIHRoaW5rIHdlIHNob3VsZCBwcm9iYWJseSBqdXN0Cj4gPj4+ Pj4+IHN0aWNrIHRoYXQgaW50byBkcm1fbW9kZV9jb252ZXJ0X3Vtb2RlKCkuIExvb2tzIGxpa2Ug d2UgbmV2ZXIgY2FsbAo+ID4+Pj4+PiB0aGF0IGZyb20gYW55d2hlcmUgYnV0IHRoZSBhdG9taWMv c2V0cHJvcCBhbmQgc2V0Y3J0YyBwYXRocyB3aXRoCj4gPj4+Pj4+IGEgbm9uLU5VTEwgYXJndW1l bnQuCj4gPj4+Pj4+Cj4gPj4+Pj4+IEkgKnRoaW5rKiB0aG9zZSB0aHJlZSBwbGFjZXMgc2hvdWxk IGJlIHN1ZmZpY2llbnQgdG8gY292ZXIgCj4gPj4+Pj4+IGV2ZXJ5dGhpbmcuCj4gPj4+Pj4gQWdy ZWVkLiBJbmZhY3QgSSB0cmllZCB0byBkbyB0aGF0IGZpcnN0LCBidXQgdGhlIG9ubHkgcHJvYmxl bSB3ZSBoYXZlCj4gPj4+Pj4gaGVyZSwgaXMgdGhhdCwgdGhlIGZpbGVfcHJpdgo+ID4+Pj4+IHdo aWNoIGhhcyB0aGUgYXNwZWN0IHJhdGlvIGNhcGFiaWxpdHkgaW5mb3JtYXRpb24gaXMgbm90IHN1 cHBsaWVkIAo+ID4+Pj4+IHRvIHRoZQo+ID4+Pj4+IGRybV9tb2RlX2NvbnZlcnRfdW1vZGUoKQo+ ID4+Pj4+IG9yIHRoZSBmdW5jdGlvbnMgY2FsbGluZywgZHJtX21vZGVfY29udmVyX3Vtb2RlKCku IEF0IGJlc3Qgd2UgaGF2ZQo+ID4+Pj4+IGRybV9jcnRjX3N0YXRlLgo+ID4+Pj4gU2ltcGx5IHBh c3NpbmcgdGhlIGZpbGVfcHJpdiBkb3duIHdvdWxkIHNlZW0gbGlrZSB0aGUgbW9zdCBvYnZpb3Vz Cj4gPj4+PiBzb2x1dGlvbi4KPiA+Pj4gVGhpcyBtZWFucyB3ZSBoYXZlIHRvIG1ha2UgY2hhbmdl IGluIHZhcmlvdXMgZHJpdmVycyBhbmQgd2UgaGF2ZSB0byAKPiA+Pj4gcHVsbAo+ID4+PiB0aGUg ZmlsZV9wcml2Cj4gPj4+IHBhcmFtZXRlciB0aHJlZSBsZXZlbHMgZG93bi4gU2hvdWxkIHdlIHRo aW5rIG9mIGEgYmV0dGVyIHdheSBmb3IgCj4gPj4+IGRvaW5nIHRoaXM/Cj4gPj4gQ29jY2luZWxs ZSBpcyBwcmV0dHkgZ29vZCBhdCBtb2RpZnlpbmcgZnVuY3Rpb24gcGFyYW1ldGVycy4KPiA+Cj4g PiBUaGFua3MgZm9yIHBvaW50aW5nIG91dCBDb2NjaW5lbGxlLCB3aWxsIGRlZmludGVseSB0cnkg dGhhdCBvdXQuCj4gPiBCdXQgbXkgcXVlc3Rpb24gaGVyZSBpcyB3aGV0aGVyIHdlIHJlYWxseSB3 YW50IHRvIGRyYWcgdGhlIGZpbGVfcHJpdgo+ID4gZnJvbSBkcm1fbW9kZV9hdG9taWNfaW9jdGwg LS0+IGRybV9tb2RlX2F0b21pY19zZXRfcHJvcGVydHkgLS0+Cj4gPiBkcm1fYXRvbWljX2NydGNf c2V0X3Byb3BlcnR5IC0tPiBkcm1fbW9kZV9zZXRfbW9kZV9wcm9wX2Zvcl9jcnRjLS0+Cj4gPiBk cm1fbW9kZV9jb252ZXJ0X3Vtb2RlLgo+ID4KPiA+IEluc3RlYWQsIEkgdHJpZWQgdG8gYWRkIGEg bmV3IGZpZWxkIChhbGxvd19hc3BlY3RfcmF0aW8pIGluIAo+ID4gZHJtX2NydGNfc3RhdGUgd2hp Y2ggaXMKPiA+IGFscmVhZHkgcGFzc2VkIGZyb20gdGhlIGRybV9tb2RlX2F0b21pY19pb2N0bCBh bGwgdGhlIHdheSB0bwo+ID4gZHJtX21vZGVfY29udmVydF91bW9kZS4KPiA+Cj4gPgo+ID4gLVJl Z2FyZHMKPiA+IEFua2l0Cj4gPj4KPiA+Pj4+PiBJIGhhdmUgYWRkZWQgYW4gYXNwZWN0IHJhdGlv IGFsbG93ZWQgZmxhZyAgaW4gCj4gPj4+Pj4gZHJtX2NydGNfc3RhdGUtPnN0YXRlIHNvCj4gPj4+ Pj4gdGhhdCBpdHMgYXZhaWxhYmxlIGluIHRoZQo+ID4+Pj4+IGZ1bmN0aW9ucyBjYWxsaW5nIGRy bV9tb2RlX2NvbnZlcnRfdW1vZGUuCj4gPj4+Pj4KPiA+Pj4+PiBJIGFtIG9wZW4gdG8gc3VnZ2Vz dGlvbiB0byBhdm9pZCBhZGRpbmcgYSBuZXcgZmxhZyBpbiAKPiA+Pj4+PiBkcm1fYXRvbWljX3N0 YXRlLAo+ID4+Pj4+IGlmIHRoZXJlIGlzIGEgYmV0dGVyCj4gPj4+Pj4gd2F5IHRvIGxldCB0aGUg ZHJtX21vZGVfY29udmVydF91bW9kZSggKSBrbm93IHRoYXQgdXNlciBzdXBwb3J0cyAKPiA+Pj4+ PiBhc3BlY3QKPiA+Pj4+PiByYXRpbyBjYXBhYmlsaXR5Lgo+ID4+Pj4+Pj4gICAgICAgICAgICAg c3RhdGUtPm1vZGVfYmxvYiA9Cj4gPj4+Pj4+PiBkcm1fcHJvcGVydHlfY3JlYXRlX2Jsb2Ioc3Rh dGUtPmNydGMtPmRldiwKPiA+Pj4+Pj4+IHNpemVvZih1bW9kZSksCj4gPj4+Pj4+PiBAQCAtMzQ5 LDEwICszODEsMTEgQEAgaW50IGRybV9hdG9taWNfc2V0X21vZGVfZm9yX2NydGMoc3RydWN0IAo+ ID4+Pj4+Pj4gZHJtX2NydGNfc3RhdGUgKnN0YXRlLAo+ID4+Pj4+Pj4gICAgICAgICAgICAgaWYg KElTX0VSUihzdGF0ZS0+bW9kZV9ibG9iKSkKPiA+Pj4+Pj4+ICAgICAgICAgICAgICAgICByZXR1 cm4gUFRSX0VSUihzdGF0ZS0+bW9kZV9ibG9iKTsKPiA+Pj4+Pj4+ICAgICAtICAgICAgICBkcm1f bW9kZV9jb3B5KCZzdGF0ZS0+bW9kZSwgbW9kZSk7Cj4gPj4+Pj4+PiArICAgICAgICBkcm1fbW9k ZV9jb3B5KCZzdGF0ZS0+bW9kZSwgYXJfbW9kZSk7Cj4gPj4+Pj4+PiAgICAgICAgICAgICBzdGF0 ZS0+ZW5hYmxlID0gdHJ1ZTsKPiA+Pj4+Pj4+ICAgICAgICAgICAgIERSTV9ERUJVR19BVE9NSUMo IlNldCBbTU9ERTolc10gZm9yIENSVEMgc3RhdGUgJXBcbiIsCj4gPj4+Pj4+PiAtICAgICAgICAg ICAgICAgICBtb2RlLT5uYW1lLCBzdGF0ZSk7Cj4gPj4+Pj4+PiArICAgICAgICAgICAgICAgICBh cl9tb2RlLT5uYW1lLCBzdGF0ZSk7Cj4gPj4+Pj4+PiArICAgICAgICBkcm1fbW9kZV9kZXN0cm95 KHN0YXRlLT5jcnRjLT5kZXYsIGFyX21vZGUpOwo+ID4+Pj4+Pj4gICAgICAgICB9IGVsc2Ugewo+ ID4+Pj4+Pj4gICAgICAgICAgICAgbWVtc2V0KCZzdGF0ZS0+bW9kZSwgMCwgc2l6ZW9mKHN0YXRl LT5tb2RlKSk7Cj4gPj4+Pj4+PiAgICAgICAgICAgICBzdGF0ZS0+ZW5hYmxlID0gZmFsc2U7Cj4g Pj4+Pj4+PiBAQCAtNDM2LDYgKzQ2OSwyNSBAQCAKPiA+Pj4+Pj4+IGRybV9hdG9taWNfcmVwbGFj ZV9wcm9wZXJ0eV9ibG9iX2Zyb21faWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+Pj4+Pj4+ ICAgICB9Cj4gPj4+Pj4+PiAgICAgICAgIC8qKgo+ID4+Pj4+Pj4gKyAqIGRybV9hdG9taWNfYWxs b3dfYXNwZWN0X3JhdGlvX2Zvcl91bW9kZQo+ID4+Pj4+Pj4gKyAqIEBzdGF0ZTogdGhlIGNydGMg c3RhdGUKPiA+Pj4+Pj4+ICsgKiBAdW1vZGU6IHVzZXJzcGFjZSBtb2RlLCB3aG9zZSBhc3BlY3Qg cmF0aW8gZmxhZyBiaXRzIGFyZSB0byAKPiA+Pj4+Pj4+IGJlIHVwZGF0ZWQuCj4gPj4+Pj4+PiAr ICoKPiA+Pj4+Pj4+ICsgKiBBbGxvdyB0aGUgYXNwZWN0IHJhdGlvIGluZm8gaW4gdGhlIHVzZXJz cGFjZSBtb2RlIG9ubHkgaWYgCj4gPj4+Pj4+PiBhc3BlY3QgcmF0aW8gaXMKPiA+Pj4+Pj4+ICsg KiBzdXBwb3J0ZWQuCj4gPj4+Pj4+PiArICovCj4gPj4+Pj4+PiArdm9pZAo+ID4+Pj4+Pj4gK2Ry bV9hdG9taWNfYWxsb3dfYXNwZWN0X3JhdGlvX2Zvcl91bW9kZShzdHJ1Y3QgZHJtX2NydGNfc3Rh dGUgCj4gPj4+Pj4+PiAqc3RhdGUsCj4gPj4+Pj4+PiArICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgZHJtX21vZGVfbW9kZWluZm8gKnVtb2RlKQo+ID4+Pj4+Pj4gK3sKPiA+Pj4+Pj4+ICsgICAg c3RydWN0IGRybV9hdG9taWNfc3RhdGUgKmF0b21pY19zdGF0ZSA9IHN0YXRlLT5zdGF0ZTsKPiA+ Pj4+Pj4+ICsKPiA+Pj4+Pj4+ICsgICAgLyogUmVzZXQgdGhlIGFzcGVjdCByYXRpbyBmbGFncyBp ZiBhc3BlY3QgcmF0aW8gaXMgbm90IAo+ID4+Pj4+Pj4gc3VwcG9ydGVkICovCj4gPj4+Pj4+PiAr ICAgIGlmIChhdG9taWNfc3RhdGUgJiYgIWF0b21pY19zdGF0ZS0+YWxsb3dfYXNwZWN0X3JhdGlv KQo+ID4+Pj4+Pj4gKyAgICAgICAgdW1vZGUtPmZsYWdzICY9ICh+RFJNX01PREVfRkxBR19QSUNf QVJfTUFTSyk7Cj4gPj4+Pj4+PiArfQo+ID4+Pj4+Pj4gKwo+ID4+Pj4+Pj4gKy8qKgo+ID4+Pj4+ Pj4gICAgICAqIGRybV9hdG9taWNfY3J0Y19zZXRfcHJvcGVydHkgLSBzZXQgcHJvcGVydHkgb24g Q1JUQwo+ID4+Pj4+Pj4gICAgICAqIEBjcnRjOiB0aGUgZHJtIENSVEMgdG8gc2V0IGEgcHJvcGVy dHkgb24KPiA+Pj4+Pj4+ICAgICAgKiBAc3RhdGU6IHRoZSBzdGF0ZSBvYmplY3QgdG8gdXBkYXRl IHdpdGggdGhlIG5ldyBwcm9wZXJ0eSAKPiA+Pj4+Pj4+IHZhbHVlCj4gPj4+Pj4+PiBAQCAtNDY0 LDYgKzUxNiw5IEBAIGludCBkcm1fYXRvbWljX2NydGNfc2V0X3Byb3BlcnR5KHN0cnVjdCAKPiA+ Pj4+Pj4+IGRybV9jcnRjICpjcnRjLAo+ID4+Pj4+Pj4gICAgICAgICBlbHNlIGlmIChwcm9wZXJ0 eSA9PSBjb25maWctPnByb3BfbW9kZV9pZCkgewo+ID4+Pj4+Pj4gICAgICAgICAgICAgc3RydWN0 IGRybV9wcm9wZXJ0eV9ibG9iICptb2RlID0KPiA+Pj4+Pj4+ICAgICAgICAgICAgICAgICBkcm1f cHJvcGVydHlfbG9va3VwX2Jsb2IoZGV2LCB2YWwpOwo+ID4+Pj4+Pj4gKyBkcm1fYXRvbWljX2Fs bG93X2FzcGVjdF9yYXRpb19mb3JfdW1vZGUoc3RhdGUsCj4gPj4+Pj4+PiArICAgICAgICAgICAg ICAgICAgICAoc3RydWN0IGRybV9tb2RlX21vZGVpbmZvICopCj4gPj4+Pj4+PiArICAgICAgICAg ICAgICAgICAgICBtb2RlLT5kYXRhKTsKPiA+Pj4+Pj4+ICAgICAgICAgICAgIHJldCA9IGRybV9h dG9taWNfc2V0X21vZGVfcHJvcF9mb3JfY3J0YyhzdGF0ZSwgbW9kZSk7Cj4gPj4+Pj4+PiAgICAg ICAgICAgICBkcm1fcHJvcGVydHlfYmxvYl9wdXQobW9kZSk7Cj4gPj4+Pj4+PiAgICAgICAgICAg ICByZXR1cm4gcmV0Owo+ID4+Pj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1f Y3J0Yy5jIAo+ID4+Pj4+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NydGMuYwo+ID4+Pj4+Pj4g aW5kZXggZjA1NTZlNi4uYTJkMzRmYSAxMDA2NDQKPiA+Pj4+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9kcm1fY3J0Yy5jCj4gPj4+Pj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NydGMu Ywo+ID4+Pj4+Pj4gQEAgLTQyNSw2ICs0MjUsMTMgQEAgaW50IGRybV9tb2RlX2dldGNydGMoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKPiA+Pj4+Pj4+ICAgICAgICAgZHJtX21vZGVzZXRfbG9jaygm Y3J0Yy0+bXV0ZXgsIE5VTEwpOwo+ID4+Pj4+Pj4gICAgICAgICBpZiAoY3J0Yy0+c3RhdGUpIHsK PiA+Pj4+Pj4+ICAgICAgICAgICAgIGlmIChjcnRjLT5zdGF0ZS0+ZW5hYmxlKSB7Cj4gPj4+Pj4+ PiArICAgICAgICAgICAgLyoKPiA+Pj4+Pj4+ICsgICAgICAgICAgICAgKiBJZiB0aGUgYXNwZWN0 LXJhdGlvIGlzIG5vdCByZXF1aXJlZCBieSB0aGUsCj4gPj4+Pj4+PiArICAgICAgICAgICAgICog dXNlcnNwYWNlLCBkbyBub3Qgc2V0IHRoZSBhc3BlY3QtcmF0aW8gZmxhZ3MuCj4gPj4+Pj4+PiAr ICAgICAgICAgICAgICovCj4gPj4+Pj4+PiArICAgICAgICAgICAgaWYgKCFmaWxlX3ByaXYtPmFz cGVjdF9yYXRpb19hbGxvd2VkKQo+ID4+Pj4+Pj4gKyBjcnRjLT5zdGF0ZS0+bW9kZS5waWN0dXJl X2FzcGVjdF9yYXRpbyA9Cj4gPj4+Pj4+PiArICAgICAgICAgICAgICAgICAgICBIRE1JX1BJQ1RV UkVfQVNQRUNUX05PTkU7Cj4gPj4+Pj4+IFRoZXNlIHdvdWxkIHN0aWxsIGNsb2JiZXIgdGhlIGN1 cnJlbnQgY3J0YyBzdGF0ZS4gU28gZGVmaW5pdGVseSAKPiA+Pj4+Pj4gZG9uJ3QKPiA+Pj4+Pj4g d2FudCB0byBkbyB0aGlzLgo+ID4+Pj4+IEFscmlnaHQsIHNvIGFsdGVybmF0aXZlIHdheSBvZiBk b2luZyB0aGlzIHdpbGwgYmU6Cj4gPj4+Pj4gQXZvaWQgY2hhbmdpbmcgdGhlIGNydGMtPnN0YXRl LT5tb2RlLnBpY3R1cmVfYXNwZWN0X3JhdGlvIGkuZSBrZXJuZWwKPiA+Pj4+PiBtb2RlIHN0cnVj dHVyZSwKPiA+Pj4+PiBidXQgc2V0IHRoZSBhc3BlY3QgcmF0aW8gZmxhZ3MgaW4gdGhlIHVzZXJt b2RlIHRvIG5vbmUsIGFmdGVyIAo+ID4+Pj4+IGNhbGxpbmcgdGhlCj4gPj4+Pj4gZHJtX21vZGVf Y29udmVydF90b191bW9kZSgpLgo+ID4+Pj4+Cj4gPj4+Pj4gV2lsbCB0YWtlIGNhcmUgb2YgdGhp cyBpbiB0aGUgbmV4dCBwYXRjaHNldC4KPiA+Pj4gSSBnYXZlIGEgdGhvdWdodCBhYm91dCBpdCBh Z2Fpbi4gQXMgeW91IGhhdmUgbWVudGlvbmVkIGVhcmxpZXIgdGhhdAo+ID4+PiBnZXRfY3J0YyBp cyBvbmUgb2YgdGhlCj4gPj4+IHBsYWNlIHdoZXJlIHRoZSB1c2VyIG1vZGUgYXNwZWN0IHJhdGlv IGZsYWdzIG11c3QgYmUgZmlsdGVyZWQgb3V0LCBpcwo+ID4+PiB0aGlzIHdoYXQgeW91IGhhdmUK PiA+Pj4gaW4gbWluZC4gSSBob3BlIEkgZGlkIG5vdCBtaXN1bmRlcnN0YW5kLgo+ID4+Pgo+ID4+ PiBDaGFuZ2luZyB0aGUgdXNlcm1vZGUgYXNwZWN0IHJhdGlvIGZsYWcgYml0cywgd2l0aG91dCBj aGFuZ2UgaW4gdGhlCj4gPj4+IHBpY3R1cmVfYXNwZWN0X3JhdGlvCj4gPj4+IGtlcm5lbCBtb2Rl IHdpbGwgbm90IHJlc3VsdCBpbiBib3RoIHN0cnVjdHVyZXMgb3V0IG9mIHN5bmM/Cj4gPj4gSSBk b24ndCB0aGluayB0aGF0IHNob3VsZCByZWFsbHkgbWF0dGVyLiBJIHN1cHBvc2Ugd2UgbWlnaHQg Z2V0IG9uZQo+ID4+IGV4dHJhIG1vZGVzZXQgd2hlbiB0aGUgdXNlciBmZWVkcyB0aGF0IG1vZGUg YmFjayB2aWEgc2V0Y3J0Yy9hdG9taWMsIGJ1dAo+ID4+IG1laC4gQW5kIGFjdHVhbGx5IHRoZSBh c3BlY3QgcmF0aW8gc2hvdWxkIG9ubHkgYWZmZWN0IHRoZSBpbmZvZnJhbWUsIHNvCj4gPj4gd2Ug c2hvdWxkIGJlIGFibGUgdG8gZXZlbnR1YWxseSBlbGltaW5hdGUgdGhhdCBleHRyYSBtb2Rlc2V0 IGFuZCBqdXN0Cj4gPj4gdXBkYXRlIHRoZSBpbmZvZnJhbWUgaW5zdGVhZC4KPiA+Pgo+ID4+Pj4+ Pj4gZHJtX21vZGVfY29udmVydF90b191bW9kZSgmY3J0Y19yZXNwLT5tb2RlLCAmY3J0Yy0+c3Rh dGUtPm1vZGUpOwo+ID4+Pj4+Pj4gICAgICAgICAgICAgICAgIGNydGNfcmVzcC0+bW9kZV92YWxp ZCA9IDE7Cj4gPj4+Pj4+PiAgICAgQEAgLTQzNSw2ICs0NDIsMTMgQEAgaW50IGRybV9tb2RlX2dl dGNydGMoc3RydWN0IGRybV9kZXZpY2UgCj4gPj4+Pj4+PiAqZGV2LAo+ID4+Pj4+Pj4gICAgICAg ICAgICAgY3J0Y19yZXNwLT54ID0gY3J0Yy0+eDsKPiA+Pj4+Pj4+ICAgICAgICAgICAgIGNydGNf cmVzcC0+eSA9IGNydGMtPnk7Cj4gPj4+Pj4+PiAgICAgICAgICAgICBpZiAoY3J0Yy0+ZW5hYmxl ZCkgewo+ID4+Pj4+Pj4gKyAgICAgICAgICAgIC8qCj4gPj4+Pj4+PiArICAgICAgICAgICAgICog SWYgdGhlIGFzcGVjdC1yYXRpbyBpcyBub3QgcmVxdWlyZWQgYnkgdGhlLAo+ID4+Pj4+Pj4gKyAg ICAgICAgICAgICAqIHVzZXJzcGFjZSwgZG8gbm90IHNldCB0aGUgYXNwZWN0LXJhdGlvIGZsYWdz Lgo+ID4+Pj4+Pj4gKyAgICAgICAgICAgICAqLwo+ID4+Pj4+Pj4gKyAgICAgICAgICAgIGlmICgh ZmlsZV9wcml2LT5hc3BlY3RfcmF0aW9fYWxsb3dlZCkKPiA+Pj4+Pj4+ICsgICAgICAgICAgICAg ICAgY3J0Yy0+bW9kZS5waWN0dXJlX2FzcGVjdF9yYXRpbyA9Cj4gPj4+Pj4+PiArICAgICAgICAg ICAgICAgICAgICBIRE1JX1BJQ1RVUkVfQVNQRUNUX05PTkU7Cj4gPj4+Pj4+PiBkcm1fbW9kZV9j b252ZXJ0X3RvX3Vtb2RlKCZjcnRjX3Jlc3AtPm1vZGUsICZjcnRjLT5tb2RlKTsKPiA+Pj4+Pj4+ ICAgICAgICAgICAgICAgICBjcnRjX3Jlc3AtPm1vZGVfdmFsaWQgPSAxOwo+ID4+Pj4+Pj4gICAg IEBAIC02MTAsNiArNjI0LDExIEBAIGludCBkcm1fbW9kZV9zZXRjcnRjKHN0cnVjdCBkcm1fZGV2 aWNlIAo+ID4+Pj4+Pj4gKmRldiwgdm9pZCAqZGF0YSwKPiA+Pj4+Pj4+ICAgICAgICAgICAgICAg ICBnb3RvIG91dDsKPiA+Pj4+Pj4+ICAgICAgICAgICAgIH0KPiA+Pj4+Pj4+ICAgICArICAgICAg ICAvKiBJZiB0aGUgdXNlciBkb2VzIG5vdCBhc2sgZm9yIGFzcGVjdCByYXRpbywgcmVzZXQgCj4g Pj4+Pj4+PiB0aGUgYXNwZWN0Cj4gPj4+Pj4+PiArICAgICAgICAgKiByYXRpbyBiaXRzIGluIHRo ZSB1c2VybW9kZS4KPiA+Pj4+Pj4+ICsgICAgICAgICAqLwo+ID4+Pj4+Pj4gKyAgICAgICAgaWYg KCFmaWxlX3ByaXYtPmFzcGVjdF9yYXRpb19hbGxvd2VkKQo+ID4+Pj4+Pj4gKyAgICAgICAgICAg IGNydGNfcmVxLT5tb2RlLmZsYWdzICY9ICh+RFJNX01PREVfRkxBR19QSUNfQVJfTUFTSyk7Cj4g Pj4+Pj4+PiAgICAgICAgICAgICByZXQgPSBkcm1fbW9kZV9jb252ZXJ0X3Vtb2RlKG1vZGUsICZj cnRjX3JlcS0+bW9kZSk7Cj4gPj4+Pj4+PiAgICAgICAgICAgICBpZiAocmV0KSB7Cj4gPj4+Pj4+ PiAgICAgICAgICAgICAgICAgRFJNX0RFQlVHX0tNUygiSW52YWxpZCBtb2RlXG4iKTsKPiA+Pj4+ Pj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fYXRvbWljLmggYi9pbmNsdWRlL2RybS9k cm1fYXRvbWljLmgKPiA+Pj4+Pj4+IGluZGV4IDFjMjc1MjYuLjEzMGRhZDkgMTAwNjQ0Cj4gPj4+ Pj4+PiAtLS0gYS9pbmNsdWRlL2RybS9kcm1fYXRvbWljLmgKPiA+Pj4+Pj4+ICsrKyBiL2luY2x1 ZGUvZHJtL2RybV9hdG9taWMuaAo+ID4+Pj4+Pj4gQEAgLTIzNyw2ICsyMzcsNyBAQCBzdHJ1Y3Qg X19kcm1fcHJpdmF0ZV9vYmpzX3N0YXRlIHsKPiA+Pj4+Pj4+ICAgICAgKiBAcmVmOiBjb3VudCBv ZiBhbGwgcmVmZXJlbmNlcyB0byB0aGlzIHN0YXRlICh3aWxsIG5vdCBiZSAKPiA+Pj4+Pj4+IGZy ZWVkIHVudGlsIHplcm8pCj4gPj4+Pj4+PiAgICAgICogQGRldjogcGFyZW50IERSTSBkZXZpY2UK PiA+Pj4+Pj4+ICAgICAgKiBAYWxsb3dfbW9kZXNldDogYWxsb3cgZnVsbCBtb2Rlc2V0Cj4gPj4+ Pj4+PiArICogQGFsbG93X2FzcGVjdF9yYXRpbzogYWxsb3cgdGhlIGFzcGVjdCByYXRpbyBpbmZv IHRvIGJlIAo+ID4+Pj4+Pj4gcGFzc2VzIHRvIHVzZXIKPiA+Pj4+Pj4+ICAgICAgKiBAbGVnYWN5 X2N1cnNvcl91cGRhdGU6IGhpbnQgdG8gZW5mb3JjZSBsZWdhY3kgY3Vyc29yIAo+ID4+Pj4+Pj4g SU9DVEwgc2VtYW50aWNzCj4gPj4+Pj4+PiAgICAgICogQGFzeW5jX3VwZGF0ZTogaGludCBmb3Ig YXN5bmNocm9ub3VzIHBsYW5lIHVwZGF0ZQo+ID4+Pj4+Pj4gICAgICAqIEBwbGFuZXM6IHBvaW50 ZXIgdG8gYXJyYXkgb2Ygc3RydWN0dXJlcyB3aXRoIHBlci1wbGFuZSBkYXRhCj4gPj4+Pj4+PiBA QCAtMjU2LDYgKzI1Nyw3IEBAIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlIHsKPiA+Pj4+Pj4+ICAg ICAgICAgICAgIHN0cnVjdCBkcm1fZGV2aWNlICpkZXY7Cj4gPj4+Pj4+PiAgICAgICAgIGJvb2wg YWxsb3dfbW9kZXNldCA6IDE7Cj4gPj4+Pj4+PiArICAgIGJvb2wgYWxsb3dfYXNwZWN0X3JhdGlv IDogMTsKPiA+Pj4+Pj4+ICAgICAgICAgYm9vbCBsZWdhY3lfY3Vyc29yX3VwZGF0ZSA6IDE7Cj4g Pj4+Pj4+PiAgICAgICAgIGJvb2wgYXN5bmNfdXBkYXRlIDogMTsKPiA+Pj4+Pj4+ICAgICAgICAg c3RydWN0IF9fZHJtX3BsYW5lc19zdGF0ZSAqcGxhbmVzOwo+ID4+Pj4+Pj4gLS0gCj4gPj4+Pj4+ PiAyLjcuNAo+ID4+Pj4+Pj4KPiA+Pj4+Pj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCj4gPj4+Pj4+PiBkcmktZGV2ZWwgbWFpbGluZyBsaXN0Cj4gPj4+ Pj4+PiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gPj4+Pj4+PiBodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo+ID4+PiBSZWdh cmRzLAo+ID4+PiBBbmtpdAo+ID4KPiAKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBt YWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=