From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: Re: [PATCH v2 1/4] drm/i915/icl: Assign Master slave crtc links for Transcoder Port Sync Date: Thu, 13 Jun 2019 09:41:42 -0700 Message-ID: <20190613164142.GA10097@intel.com> References: <20190423154901.15222-1-manasi.d.navare@intel.com> <20190423154901.15222-2-manasi.d.navare@intel.com> <22e58e8c-53be-3fa6-46b8-8ed6c5a446da@linux.intel.com> <20190612190426.GQ5942@intel.com> <20190612191101.GB5765@intel.com> <20190612193055.GR5942@intel.com> <20190612205951.GC5765@intel.com> <20190613091057.GS5942@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3C9AA89358 for ; Thu, 13 Jun 2019 16:39:56 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190613091057.GS5942@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Cc: Daniel Vetter , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBKdW4gMTMsIDIwMTkgYXQgMTI6MTA6NTdQTSArMDMwMCwgVmlsbGUgU3lyasOkbMOk IHdyb3RlOgo+IE9uIFdlZCwgSnVuIDEyLCAyMDE5IGF0IDAxOjU5OjUyUE0gLTA3MDAsIE1hbmFz aSBOYXZhcmUgd3JvdGU6Cj4gPiBPbiBXZWQsIEp1biAxMiwgMjAxOSBhdCAxMDozMDo1NVBNICsw MzAwLCBWaWxsZSBTeXJqw6Rsw6Qgd3JvdGU6Cj4gPiA+IE9uIFdlZCwgSnVuIDEyLCAyMDE5IGF0 IDEyOjExOjAyUE0gLTA3MDAsIE1hbmFzaSBOYXZhcmUgd3JvdGU6Cj4gPiA+ID4gT24gV2VkLCBK dW4gMTIsIDIwMTkgYXQgMTA6MDQ6MjZQTSArMDMwMCwgVmlsbGUgU3lyasOkbMOkIHdyb3RlOgo+ ID4gPiA+ID4gT24gV2VkLCBKdW4gMTIsIDIwMTkgYXQgMTE6Mzk6MDNBTSArMDIwMCwgTWFhcnRl biBMYW5raG9yc3Qgd3JvdGU6Cj4gPiA+ID4gPiA+IE9wIDIzLTA0LTIwMTkgb20gMTc6NDggc2No cmVlZiBNYW5hc2kgTmF2YXJlOgo+ID4gPiA+ID4gPiA+IEluIGNhc2Ugb2YgdGlsZWQgZGlzcGxh eXMgd2hlbiB0aGUgdHdvIHRpbGVzIGFyZSBzZW50IGFjcm9zcyB0d28gQ1JUQ3MKPiA+ID4gPiA+ ID4gPiBvdmVyIHR3byBzZXBhcmF0ZSBEUCBTU1QgY29ubmVjdG9ycywgd2UgbmVlZCBhIG1lY2hh bmlzbSB0byBzeW5jaHJvbml6ZQo+ID4gPiA+ID4gPiA+IHRoZSB0d28gQ1JUQ3MgYW5kIHRoZWly IGNvcnJlc3BvbmRpbmcgdHJhbnNjb2RlcnMuCj4gPiA+ID4gPiA+ID4gU28gdXNlIHRoZSBtYXN0 ZXItc2xhdmUgbW9kZSB3aGVyZSB0aGVyZSBpcyBvbmUgbWFzdGVyIGNvcnJlc3BvbmRpbmcKPiA+ ID4gPiA+ID4gPiB0byBsYXN0IGhvcml6b250YWwgYW5kIHZlcnRpY2FsIHRpbGUgdGhhdCBuZWVk cyB0byBiZSBnZW5sb2NrZWQgd2l0aAo+ID4gPiA+ID4gPiA+IGFsbCBvdGhlciBzbGF2ZSB0aWxl cy4KPiA+ID4gPiA+ID4gPiBUaGlzIHBhdGNoIGlkZW50aWZpZXMgc2F2ZXMgdGhlIG1hc3RlciBD UlRDIHBvaW50ZXIgaW4gYWxsIHRoZSBzbGF2ZQo+ID4gPiA+ID4gPiA+IENSVEMgc3RhdGVzLiBU aGlzIHBvaW50ZXIgaXMgbmVlZGVkIHRvIHNlbGVjdCB0aGUgbWFzdGVyIENSVEMvdHJhbnNjb2Rl cgo+ID4gPiA+ID4gPiA+IHdoaWxlIGNvbmZpZ3VyaW5nIHRyYW5zY29kZXIgcG9ydCBzeW5jIGZv ciB0aGUgY29ycmVzcG9uZGluZyBzbGF2ZXMuCj4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiB2 MjoKPiA+ID4gPiA+ID4gPiAqIE1vdmUgdGhpcyB0byBpbnRlbF9tb2RlX3NldF9waXBlX2NvbmZp ZyhKYW5pIE4sIFZpbGxlKQo+ID4gPiA+ID4gPiA+ICogVXNlIHNsYXZlX2JpdG1hc2sgdG8gc2F2 ZSBhc3NvY2lhdGVkIHNsYXZlcyBpbiBtYXN0ZXIgY3J0YyBzdGF0ZSAoVmlsbGUpCj4gPiA+ID4g PiA+ID4KPiA+ID4gPiA+ID4gPiBDYzogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZnds bC5jaD4KPiA+ID4gPiA+ID4gPiBDYzogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxp bnV4LmludGVsLmNvbT4KPiA+ID4gPiA+ID4gPiBDYzogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0 ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPiA+ID4gPiA+ID4gPiBDYzogTWF0dCBSb3Bl ciA8bWF0dGhldy5kLnJvcGVyQGludGVsLmNvbT4KPiA+ID4gPiA+ID4gPiBTaWduZWQtb2ZmLWJ5 OiBNYW5hc2kgTmF2YXJlIDxtYW5hc2kuZC5uYXZhcmVAaW50ZWwuY29tPgo+ID4gPiA+ID4gPiA+ IC0tLQo+ID4gPiA+ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMg fCA4OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gPiA+ID4gPiA+ID4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICB8ICA2ICsrCj4gPiA+ID4gPiA+ID4gIDIgZmls ZXMgY2hhbmdlZCwgOTUgaW5zZXJ0aW9ucygrKQo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gPiA+ID4gPiA+IGluZGV4IGIyNzYz NDU3NzllNi4uOTJkZWEyMjMxNDk5IDEwMDY0NAo+ID4gPiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gPiA+ID4gPiA+IEBAIC0xMTMxNiw2ICsx MTMxNiw4NiBAQCBzdGF0aWMgaW50IGljbF9jaGVja19udjEyX3BsYW5lcyhzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiA+ID4gPiA+ID4gPiAgCXJldHVybiAwOwo+ID4gPiA+ ID4gPiA+ICB9Cj4gPiA+ID4gPiA+ID4gIAo+ID4gPiA+ID4gPiA+ICtzdGF0aWMgaW50IGljbF9h ZGRfZ2VubG9ja19jcnRjcyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gPiA+ID4gPiA+ID4gKwkJ CQkgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gPiA+ID4gPiA+ID4gKwkJ CQkgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ID4gPiA+ID4gPiA+ICt7Cj4gPiA+ ID4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNy dGNfc3RhdGUtPmJhc2UuY3J0Yy0+ZGV2KTsKPiA+ID4gPiA+ID4gPiArCXN0cnVjdCBkcm1fY29u bmVjdG9yICptYXN0ZXJfY29ubmVjdG9yLCAqY29ubmVjdG9yOwo+ID4gPiA+ID4gPiA+ICsJc3Ry dWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5lY3Rvcl9zdGF0ZTsKPiA+ID4gPiA+ID4gPiAr CXN0cnVjdCBkcm1fY29ubmVjdG9yX2xpc3RfaXRlciBjb25uX2l0ZXI7Cj4gPiA+ID4gPiA+ID4g KwlzdHJ1Y3QgZHJtX2NydGMgKm1hc3Rlcl9jcnRjID0gTlVMTDsKPiA+ID4gPiA+ID4gPiArCXN0 cnVjdCBkcm1fY3J0Y19zdGF0ZSAqbWFzdGVyX2NydGNfc3RhdGU7Cj4gPiA+ID4gPiA+ID4gKwlp bnQgaSwgdGlsZV9ncm91cF9pZDsKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKwlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA8IDExKQo+ID4gPiA+ID4gPiA+ICsJCXJldHVybiAwOwo+ID4g PiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArCS8qCj4gPiA+ID4gPiA+ID4gKwkgKiBJbiBjYXNl IG9mIHRpbGVkIGRpc3BsYXlzIHRoZXJlIGNvdWxkIGJlIG9uZSBvciBtb3JlIHNsYXZlcyBidXQg dGhlcmUgaXMKPiA+ID4gPiA+ID4gPiArCSAqIG9ubHkgb25lIG1hc3Rlci4gTGV0cyBtYWtlIHRo ZSBDUlRDIHVzZWQgYnkgdGhlIGNvbm5lY3RvciBjb3JyZXNwb25kaW5nCj4gPiA+ID4gPiA+ID4g KwkgKiB0byB0aGUgbGFzdCBob3Jpem9uYWwgYW5kIGxhc3QgdmVydGljYWwgdGlsZSBhIG1hc3Rl ci9nZW5sb2NrIENSVEMuCj4gPiA+ID4gPiA+ID4gKwkgKiBBbGwgdGhlIG90aGVyIENSVENzIGNv cnJlc3BvbmRpbmcgdG8gb3RoZXIgdGlsZXMgb2YgdGhlIHNhbWUgVGlsZSBncm91cAo+ID4gPiA+ ID4gPiA+ICsJICogYXJlIHRoZSBzbGF2ZSBDUlRDcyBhbmQgaG9sZCBhIHBvaW50ZXIgdG8gdGhl aXIgZ2VubG9jayBDUlRDLgo+ID4gPiA+ID4gPiA+ICsJICovCj4gPiA+ID4gPiA+ID4gKwlmb3Jf ZWFjaF9uZXdfY29ubmVjdG9yX2luX3N0YXRlKHN0YXRlLCBjb25uZWN0b3IsIGNvbm5lY3Rvcl9z dGF0ZSwgaSkgewo+ID4gPiA+ID4gPiA+ICsJCWlmIChjb25uZWN0b3Jfc3RhdGUtPmNydGMgIT0g Y3J0YykKPiA+ID4gPiA+ID4gPiArCQkJY29udGludWU7Cj4gPiA+ID4gPiA+ID4gKwkJaWYgKCFj b25uZWN0b3ItPmhhc190aWxlKQo+ID4gPiA+ID4gPiA+ICsJCQljb250aW51ZTsKPiA+ID4gPiA+ ID4gPiArCQlpZiAoY29ubmVjdG9yLT50aWxlX2hfbG9jID09IGNvbm5lY3Rvci0+bnVtX2hfdGls ZSAtIDEgJiYKPiA+ID4gPiA+ID4gPiArCQkgICAgY29ubmVjdG9yLT50aWxlX3ZfbG9jID09IGNv bm5lY3Rvci0+bnVtX3ZfdGlsZSAtIDEpCj4gPiA+ID4gPiA+ID4gKwkJCWNvbnRpbnVlOwo+ID4g PiA+ID4gPiA+ICsJCWNydGNfc3RhdGUtPm1hc3Rlcl9jcnRjID0gTlVMTDsKPiA+ID4gPiA+ID4g PiArCQl0aWxlX2dyb3VwX2lkID0gY29ubmVjdG9yLT50aWxlX2dyb3VwLT5pZDsKPiA+ID4gPiA+ ID4gPiArCQlkcm1fY29ubmVjdG9yX2xpc3RfaXRlcl9iZWdpbigmZGV2X3ByaXYtPmRybSwgJmNv bm5faXRlcik7Cj4gPiA+ID4gPiA+ID4gKwkJZHJtX2Zvcl9lYWNoX2Nvbm5lY3Rvcl9pdGVyKG1h c3Rlcl9jb25uZWN0b3IsICZjb25uX2l0ZXIpIHsKPiA+ID4gPiA+ID4gPiArCQkJc3RydWN0IGRy bV9jb25uZWN0b3Jfc3RhdGUgKm1hc3Rlcl9jb25uX3N0YXRlID0gTlVMTDsKPiA+ID4gPiA+ID4g PiArCj4gPiA+ID4gPiA+ID4gKwkJCWlmICghbWFzdGVyX2Nvbm5lY3Rvci0+aGFzX3RpbGUpCj4g PiA+ID4gPiA+ID4gKwkJCQljb250aW51ZTsKPiA+ID4gPiA+ID4gPiArCQkJaWYgKG1hc3Rlcl9j b25uZWN0b3ItPnRpbGVfaF9sb2MgIT0gbWFzdGVyX2Nvbm5lY3Rvci0+bnVtX2hfdGlsZSAtIDEg fHwKPiA+ID4gPiA+ID4gPiArCQkJICAgIG1hc3Rlcl9jb25uZWN0b3ItPnRpbGVfdl9sb2MgIT0g bWFzdGVyX2Nvbm5lY3Rvci0+bnVtX3ZfdGlsZSAtIDEpCj4gPiA+ID4gPiA+ID4gKwkJCQljb250 aW51ZTsKPiA+ID4gPiA+ID4gPiArCQkJaWYgKG1hc3Rlcl9jb25uZWN0b3ItPnRpbGVfZ3JvdXAt PmlkICE9IHRpbGVfZ3JvdXBfaWQpCj4gPiA+ID4gPiA+ID4gKwkJCQljb250aW51ZTsKPiA+ID4g PiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKwkJCW1hc3Rlcl9jb25uX3N0YXRlID0gZHJtX2F0b21p Y19nZXRfY29ubmVjdG9yX3N0YXRlKHN0YXRlLAo+ID4gPiA+ID4gPiA+ICsJCQkJCQkJCQkgICBt YXN0ZXJfY29ubmVjdG9yKTsKPiA+ID4gPiA+ID4gPiArCQkJaWYgKElTX0VSUihtYXN0ZXJfY29u bl9zdGF0ZSkpIHsKPiA+ID4gPiA+ID4gPiArCQkJCWRybV9jb25uZWN0b3JfbGlzdF9pdGVyX2Vu ZCgmY29ubl9pdGVyKTsKPiA+ID4gPiA+ID4gPiArCQkJCXJldHVybiBQVFJfRVJSKG1hc3Rlcl9j b25uX3N0YXRlKTsKPiA+ID4gPiA+ID4gPiArCQkJfQo+ID4gPiA+ID4gPiA+ICsJCQlpZiAobWFz dGVyX2Nvbm5fc3RhdGUtPmNydGMpIHsKPiA+ID4gPiA+ID4gPiArCQkJCW1hc3Rlcl9jcnRjID0g bWFzdGVyX2Nvbm5fc3RhdGUtPmNydGM7Cj4gPiA+ID4gPiA+ID4gKwkJCQlicmVhazsKPiA+ID4g PiA+ID4gPiArCQkJfQo+ID4gPiA+ID4gPiA+ICsJCX0KPiA+ID4gPiA+ID4gPiArCQlkcm1fY29u bmVjdG9yX2xpc3RfaXRlcl9lbmQoJmNvbm5faXRlcik7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ ID4gPiA+ICsJCWlmICghbWFzdGVyX2NydGMpIHsKPiA+ID4gPiA+ID4gPiArCQkJRFJNX0RFQlVH X0tNUygiQ291bGQgbm90IGFkZCBNYXN0ZXIgQ1JUQyBmb3IgU2xhdmUgQ1JUQyAlZFxuIiwKPiA+ ID4gPiA+ID4gPiArCQkJCSAgICAgIGNvbm5lY3Rvcl9zdGF0ZS0+Y3J0Yy0+YmFzZS5pZCk7Cj4g PiA+ID4gPiA+ID4gKwkJCXJldHVybiAtRUlOVkFMOwo+ID4gPiA+ID4gPiA+ICsJCX0KPiA+ID4g PiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKwkJbWFzdGVyX2NydGNfc3RhdGUgPSBkcm1fYXRvbWlj X2dldF9jcnRjX3N0YXRlKHN0YXRlLAo+ID4gPiA+ID4gPiA+ICsJCQkJCQkJICAgICAgbWFzdGVy X2NydGMpOwo+ID4gPiA+ID4gPiA+ICsJCWlmIChJU19FUlIobWFzdGVyX2NydGNfc3RhdGUpKQo+ ID4gPiA+ID4gPiA+ICsJCQlyZXR1cm4gUFRSX0VSUihtYXN0ZXJfY3J0Y19zdGF0ZSk7Cj4gPiA+ ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsJCWNydGNfc3RhdGUtPm1hc3Rlcl9jcnRjID0gdG9f aW50ZWxfY3J0YyhtYXN0ZXJfY3J0Yyk7Cj4gPiA+ID4gPiA+ID4gKwkJdG9faW50ZWxfY3J0Y19z dGF0ZShtYXN0ZXJfY3J0Y19zdGF0ZSktPnRyYW5zX3BvcnRfc3luY19zbGF2ZXMgfD0KPiA+ID4g PiA+ID4gPiArCQkJQklUKHRvX2ludGVsX2NydGMoY3J0YyktPnBpcGUpOwo+ID4gPiA+ID4gPiA+ ICsJCURSTV9ERUJVR19LTVMoIk1hc3RlciBDUlRDID0gJWQgYWRkZWQgZm9yIFNsYXZlIENSVEMg PSAlZFxuLCBzbGF2ZSBiaXRtYXN0ID0gJWQiLAo+ID4gPiA+ID4gPiA+ICsJCQkgICAgICBtYXN0 ZXJfY3J0Yy0+YmFzZS5pZCwKPiA+ID4gPiA+ID4gPiArCQkJICAgICAgY3J0Y19zdGF0ZS0+YmFz ZS5jcnRjLT5iYXNlLmlkLAo+ID4gPiA+ID4gPiA+ICsJCQkgICAgICB0b19pbnRlbF9jcnRjX3N0 YXRlKG1hc3Rlcl9jcnRjX3N0YXRlKS0+dHJhbnNfcG9ydF9zeW5jX3NsYXZlcyk7Cj4gPiA+ID4g PiA+ID4gKwl9Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsJcmV0dXJuIDA7Cj4gPiA+ ID4gPiA+ID4gK30KPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gIHN0YXRpYyBpbnQgaW50 ZWxfY3J0Y19hdG9taWNfY2hlY2soc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ID4gPiA+ID4gPiA+ ICAJCQkJICAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ID4gPiA+ID4gPiA+ ICB7Cj4gPiA+ID4gPiA+ID4gQEAgLTExNzk1LDYgKzExODc1LDkgQEAgY2xlYXJfaW50ZWxfY3J0 Y19zdGF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiA+ID4gPiA+ID4g PiAgCWlmIChJU19HNFgoZGV2X3ByaXYpIHx8Cj4gPiA+ID4gPiA+ID4gIAkgICAgSVNfVkFMTEVZ VklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCj4gPiA+ID4gPiA+ID4g IAkJc2F2ZWRfc3RhdGUtPndtID0gY3J0Y19zdGF0ZS0+d207Cj4gPiA+ID4gPiA+ID4gKwlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA+PSAxMSkKPiA+ID4gPiA+ID4gPiArCQlzYXZlZF9zdGF0ZS0+ dHJhbnNfcG9ydF9zeW5jX3NsYXZlcyA9Cj4gPiA+ID4gPiA+ID4gKwkJCWNydGNfc3RhdGUtPnRy YW5zX3BvcnRfc3luY19zbGF2ZXM7Cj4gPiA+ID4gPiA+ID4gIAo+ID4gPiA+ID4gPiA+ICAJLyog S2VlcCBiYXNlIGRybV9jcnRjX3N0YXRlIGludGFjdCwgb25seSBjbGVhciBvdXIgZXh0ZW5kZWQg c3RydWN0ICovCj4gPiA+ID4gPiA+ID4gIAlCVUlMRF9CVUdfT04ob2Zmc2V0b2Yoc3RydWN0IGlu dGVsX2NydGNfc3RhdGUsIGJhc2UpKTsKPiA+ID4gPiA+ID4gPiBAQCAtMTE4ODgsNiArMTE5NzEs MTIgQEAgaW50ZWxfbW9kZXNldF9waXBlX2NvbmZpZyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4g PiA+ID4gPiA+ID4gIAlkcm1fbW9kZV9zZXRfY3J0Y2luZm8oJnBpcGVfY29uZmlnLT5iYXNlLmFk anVzdGVkX21vZGUsCj4gPiA+ID4gPiA+ID4gIAkJCSAgICAgIENSVENfU1RFUkVPX0RPVUJMRSk7 Cj4gPiA+ID4gPiA+ID4gIAo+ID4gPiA+ID4gPiA+ICsJcmV0ID0gaWNsX2FkZF9nZW5sb2NrX2Ny dGNzKGNydGMsIHBpcGVfY29uZmlnLCBzdGF0ZSk7Cj4gPiA+ID4gPiA+ID4gKwlpZiAocmV0KSB7 Cj4gPiA+ID4gPiA+ID4gKwkJRFJNX0RFQlVHX0tNUygiXG44SyBEZWJ1ZzogQ2Fubm90IGFzc2ln biBnZW5sb2NrIGNydGNzIik7Cj4gPiA+ID4gPiA+ID4gKwkJcmV0dXJuIHJldDsKPiA+ID4gPiA+ ID4gPiArCX0KPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gIAkvKiBQYXNzIG91ciBtb2Rl IHRvIHRoZSBjb25uZWN0b3JzIGFuZCB0aGUgQ1JUQyB0byBnaXZlIHRoZW0gYSBjaGFuY2UgdG8K PiA+ID4gPiA+ID4gPiAgCSAqIGFkanVzdCBpdCBhY2NvcmRpbmcgdG8gbGltaXRhdGlvbnMgb3Ig Y29ubmVjdG9yIHByb3BlcnRpZXMsIGFuZCBhbHNvCj4gPiA+ID4gPiA+ID4gIAkgKiBhIGNoYW5j ZSB0byByZWplY3QgdGhlIG1vZGUgZW50aXJlbHkuCj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiBJ IHRoZ2luayB3ZSBzaG91bGQgZXh0ZW5kIG9uIHRoaXMgdG8gbWFrZSBtYXN0ZXIvc2xhdmUgbW9k ZSB3b3JrIGJ5IGRvaW5nIHdoYXQgbWF0dCByb3BlciB3YXMgd29ya2luZyBvbiwgaW4gY29sbGFi b3JhdGlvbiB3aXRoIFZpbGxlPwo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gY3J0Yy0+c3RhdGUg cG9pbnRzIHRvIGRybV9jcnRjX3N0YXRlLCB3aGljaCBpcyB0aGUgdWFwaSBzdGF0ZSwgYnV0IGFs c28gY29udGFpbnMgYSBzaGFkb3cgc3RydWN0IGludGVsX2NydGNfc3RhdGUsIHdoaWNoIGlzIHRo ZSBhY3R1YWwgaHcgc3RhdGUuIEl0IGhhcyBpdHMgb3duIGRybV9jcnRjX3N0YXRlIG9iamVjdCBm b3IgdGhlIHJlYWwgc3RhdGUsIHdoaWNoIGdldHMgY29waWVkIGFmdGVyIGNoZWNrLgo+ID4gPiA+ ID4gPiAKPiA+ID4gPiA+ID4gVGhpcyBzaG91bGQgdGhlbiBhbHNvIGJlIGRvbmUgZm9yIGludGVs X3BsYW5lX3N0YXRlLCB3aGljaCB3aWxsIGFsbG93IHVzIHRvIGNvcnJlY3RseSBoYW5kbGUgdGhp cyBtb2RlLgo+ID4gPiA+ID4gCj4gPiA+ID4gPiBJIGRvbid0IHRoaW5rIHRoZXJlJ3MgYW55IGxp bmthZ2UgYmV0d2VlbiB0aGlzIGFuZCB0aGUgMi1waXBlLTEtcG9ydAo+ID4gPiA+ID4gY2FzZXMg b3RoZXIgdGhhbiB3ZSBtaWdodCB3YW50IHRvIGhhbmRsZSB0aWxlZCBkaXNwbGF5cyB0aGF0IHdh eSBvbmUKPiA+ID4gPiA+IGRheSB0byBtYWtlIGxpZmUgZWFzaWVyIGZvciB1c2Vyc3BhY2UuIEJ1 dCB0aGF0IGhhcyBvdGhlciBpc3N1ZXMgc3VjaAo+ID4gPiA+ID4gYXMgd2UnZCBoYXZlIHRvIGdl bmVyYXRlIGEgbmV3IEVESUQgZm9yIHRoZSB3aG9sZSBkaXNwbGF5IGZyb20gdGhlIEVESURzCj4g PiA+ID4gPiBvZiB0aGUgdGlsZXMuCj4gPiA+ID4gPiAKPiA+ID4gPiA+IEFsc28gd2UgbWF5YmUg d2FudCBwb3J0IHN5bmMgZm9yIDEwMCUgaW5kZXBlbmRlbnQgZGlzcGxheXMgdG9vLiBTbyBJTU8K PiA+ID4gPiA+IG5vIHBvaW50IGluIHRyeWluZyB0byBzaG9laG9ybiBib3RoIHRoaW5ncyBpbnRv IHRoZSBzYW1lIGJ1Y2tldC4KPiA+ID4gPiAKPiA+ID4gPiBJIGFncmVlLCBhbHNvIHRoZSB0aWxl ZCBkaXNwbGF5IGNhc2UgaXMgc2ltcGxlIGluIHRlcm1zIG9mIHRoZSBzdGF0ZXMgc2luY2UgaXRz IDIgY29ubmVjdG9ycyBhbmQgMiBjcnRjcyBleHBvc2VkIHRvIHRoZSB1c2Vyc3BhY2UKPiA+ID4g PiBzbyB0aGUgdXNlcnNwYWNlIHdpbGwgY3JlYXRlIHR3byBzdGF0ZXMgYW5kIHRoZXkgYXJlIHVz ZWQgYXMgaXMgZm9yIHRoZSB0d28gY3J0Y3MsIHRoZSBvbmx5IGRpZmZlcmVuY2UgaXMgdGhhdCB3 ZSBuZWVkIHRvIHByb2dyYW0KPiA+ID4gPiBvbmUgYXMgYSBzbGF2ZSBhbmQgdGhlIG90aGVyIGFz IG1hc3RlciBhbmQgZmluZCBhIHdheSB0byBzdG9yZSBhIHBvaW50ZXIgdG8gbWFzdGVyIGZyb20g dGhlIHNsYXZlIHNpbmNlIHdlIG5lZWQgdG8gdXNlIHRoYXQKPiA+ID4gPiB0byBjb25maWd1cmUg YW5kIGVuYWJsZSB0cmFuc2NvZGVyIHBvcnQgc3luYyB3aGlsZSBlbmFibGluZyBzbGF2ZSBDUlRD Lgo+ID4gPiA+IAo+ID4gPiA+IFNvIG9uIHRob3NlIGxpbmVzLCBpZiBpIHN0b3JlIHRoZSBtYXN0 ZXIgdHJhbnNjb2RlciBkaXJlY3RseSBpbiB0aGUgc2xhdmUgY3J0YyBzdGF0ZSB0aGVuIHRyYW5z ID0gMCBpcyB2YWxpZCBmb3IgdHJhbnMgQSB0aGVuIGhvdwo+ID4gPiA+IGRvIEkgaWRlbnRpZnkg d2hpY2ggY3J0YyBpcyBzbGF2ZT8KPiA+ID4gPiBDdXJyZW50bHkgSSBjaGVjayBmb3IgIW1hc3Rl cl9jcnRjIGFuZCB0aGF0IHRlbGxzIG1lIHRoYXQgaXQgaXMgbm90IHNsYXZlLgo+ID4gPiAKPiA+ ID4gSU5WQUxJRF9UUkFOU0NPRERFUiBvciBzb21ldGhpbmc/Cj4gPiAKPiA+IEFjdHVhbGx5IEkg anVzdCByZWFsaXplZCB0aGF0IGluIHRoZSBod19zdGF0ZV9yZWFkb3V0IGFmdGVyIGkgZ2V0IHRo ZSB0cmFuc2NvZGVyIHdoaWNoIHdvdWxkIGJlIHNhbWUgYXMgcGlwZSwKPiA+IGNhbiBJIGp1c3Qg dXNlIHRoZSBpbnRlbF9nZXRfY3J0Y19mb3JfcGlwZSgpIGZ1bmN0aW9uIHRvIGdldCB0aGUgaW50 ZWxfY3J0Yyogd2hpY2ggc2hvdWxkIG1hdGNoIHRoZSBtYXN0ZXJfY3J0YyBzYXZlZAo+ID4gaW4g c2xhdmUgY3J0Y19zdGF0ZSwgd2hhIGRvIHlvdSB0aGluaz8KPiAKPiBPbmx5IGlmIHlvdSBpZ25v cmUgdGhlIGZhY3QgdGhhdCB0cmFuc2NvZGVyIEVEUCBjYW4gYmUgdGhlIG1hc3Rlci4KCkFjdHVh bGx5IFRyYW5zY29kZXIgRURQIGNhbiBuZXZlciBiZSB0aGUgbWFzdGVyIHNvIHRoZXJlIHNob3Vs ZCBiZSBhIHdhcm5pbmcgaWYgVFJBTlNDT0RFUiBFRFAgZ2V0cyBzZXQgYXMgYSBtYXN0ZXIgaW4g dGVoIGNvbmZpZ3VyYXRpb24gdGltZSBpdHNlbGYuCgpTbyBpZGVhbGx5IHRoZXJlIGFyZSB0d28g b3B0aW9uczoKc3RvcmUgbWFzdGVyX3BpcGUgZGlyZWN0bHkgaW4gc2xhdmUgY3J0YyBzdGF0ZSBh bmQgdGhlbiB1c2UgUElQRV9JTlZBTElEIGFzIGEgY2hlY2sgdG8gZmluZCBpZiBpdHMgYSBzbGF2 ZSBvciBhIG1hc3RlciwgdGhhdCB3YXkgdGhlIEhXIHJlYWRvdXQgY2FuIGJlIG1hcHBlZCB0byB0 aGUgY29ycmVzcG9uZGluZyBwaXBlIGFuZCBjb21wYXJlZApPUgpzdG9yZSBtYXN0ZXJfY3J0YyBs aWtlIHdlIGFyZSBzdG9yaW5nIG5vdyBhbmQgdGhlbiB1c2UgaW50ZWxfZ2V0X2NydGNfZnJvbV9w aXBlIGluIEhXIHN0YXRlIHJlYWRvdXQgZm9yIHRoZSBjb21wYXJpc29uCgpXaGljaCBvbmUgd291 bGQgYmUgYSBwcmVmZXJyZWQgd2F5PwoKVGhlIG90aGVyIG1pc21hdGNoIGlzIGluIHRoZSB0cmFu c19wb3J0X3N5bmNfc2xhdmVzIGJpdG1hc2sgbWFpbnRhaW5pbmcgdGhlIGxpc3Qgb2Ygc2xhdmVz IGluIHRoZSBtYXN0ZXJfY3J0Y19zdGF0ZSwgZXZlbiBmb3IgdGhhdCBpbiB0aGUgSFcgc3RhdGUg cmVhZG91dCBvZiB0aGUgbWFzdGVyIENSVEMgdGhlcmUgaXMgbm8gSFcgc3RhdGUvcmVnaXN0ZXIg dGhhdCBnaXZlcyB0aGUgYXNzb2NpYXRlZCBzbGF2ZXMgc28gbm90aGluZyB0byBjb21wYXJlIGFn YWluc3Qgd2hpY2ggY3JlYXRlcyB0aGUgbWlzbWF0Y2gsIGhvdyBjYW4gdGhpcyBiZSBzb2x2ZWQ/ CgpBcyBNYXR0IHN1Z2dlc3RlZCwgbWF5IGJlIHdlIHNob3VsZCBkbyB0aGUgcGlwZSBjb25maWcg Y29tcGFyZXMgZGlmZmVyZW50bHkgZm9yIHRoZSBnYW5nZWQgbW9kZT8gQW55IGlkZWFzPwoKTWFu YXNpCj4gCj4gLS0gCj4gVmlsbGUgU3lyasOkbMOkCj4gSW50ZWwKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4