From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [MIPI CABC 2/2] drm/i915: CABC support for backlight control Date: Wed, 23 Mar 2016 13:51:15 +0200 Message-ID: <87oaa5pg3w.fsf@intel.com> References: <1458625270-29433-1-git-send-email-m.deepak@intel.com> <1458625270-29433-3-git-send-email-m.deepak@intel.com> <87egb2r5bv.fsf@intel.com> <87r3f1pg5l.fsf@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id BF6706E841 for ; Wed, 23 Mar 2016 11:51:18 +0000 (UTC) In-Reply-To: <87r3f1pg5l.fsf@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Deepak, M" , "intel-gfx@lists.freedesktop.org" Cc: "Adebisi, YetundeX" , "Vetter, Daniel" List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCAyMyBNYXIgMjAxNiwgSmFuaSBOaWt1bGEgPGphbmkubmlrdWxhQGludGVsLmNvbT4g d3JvdGU6Cj4gWyB0ZXh0L3BsYWluIF0KPiBPbiBXZWQsIDIzIE1hciAyMDE2LCAiRGVlcGFrLCBN IiA8bS5kZWVwYWtAaW50ZWwuY29tPiB3cm90ZToKPj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0t LS0tCj4+PiBGcm9tOiBOaWt1bGEsIEphbmkKPj4+IFNlbnQ6IFR1ZXNkYXksIE1hcmNoIDIyLCAy MDE2IDc6MTkgUE0KPj4+IFRvOiBEZWVwYWssIE0gPG0uZGVlcGFrQGludGVsLmNvbT47IGludGVs LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPj4+IENjOiBEZWVwYWssIE0gPG0uZGVlcGFrQGlu dGVsLmNvbT47IFZldHRlciwgRGFuaWVsCj4+PiA8ZGFuaWVsLnZldHRlckBpbnRlbC5jb20+OyBB ZGViaXNpLCBZZXR1bmRlWAo+Pj4gPHlldHVuZGV4LmFkZWJpc2lAaW50ZWwuY29tPgo+Pj4gU3Vi amVjdDogUmU6IFtNSVBJIENBQkMgMi8yXSBkcm0vaTkxNTogQ0FCQyBzdXBwb3J0IGZvciBiYWNr bGlnaHQgY29udHJvbAo+Pj4gCj4+PiBPbiBUdWUsIDIyIE1hciAyMDE2LCBEZWVwYWsgTSA8bS5k ZWVwYWtAaW50ZWwuY29tPiB3cm90ZToKPj4+ID4gSW4gQ0FCQyAoQ29udGVudCBBZGFwdGl2ZSBC cmlnaHRuZXNzIENvbnRyb2wpIGNvbnRlbnQgZ3JleSBsZXZlbCBzY2FsZQo+Pj4gPiBjYW4gYmUg aW5jcmVhc2VkIHdoaWxlIHNpbXVsdGFuZW91c2x5IGRlY3JlYXNpbmcgYnJpZ2h0bmVzcyBvZiB0 aGUKPj4+ID4gYmFja2xpZ2h0IHRvIGFjaGlldmUgc2FtZSBwZXJjZWl2ZWQgYnJpZ2h0bmVzcy4K Pj4+ID4KPj4+ID4gVGhlIENBQkMgaXMgbm90IHN0YW5kYXJkaXplZCBhbmQgcGFuZWwgdmVuZG9y cyBhcmUgZnJlZSB0byBmb2xsb3cKPj4+ID4gdGhlaXIgaW1wbGVtZW50YXRpb24uIFRoZSBDQUJD IGltcGxlbWVudGFpb24gaGVyZSBhc3N1bWVzIHRoYXQgdGhlCj4+PiA+IHBhbmVscyB1c2Ugc3Rh bmRhcmQgU1cgcmVnaXN0ZXIgZm9yIGNvbnRyb2wuCj4+PiA+Cj4+PiA+IEluIHRoaXMgZGVzaWdu IHRoZXJlIHdpbGwgYmUgbm8gUFdNIHNpZ25hbCBmcm9tIHRoZSBTb0MgYW5kIERDUwo+Pj4gPiBj b21tYW5kcyBhcmUgc2VudCB0byBlbmFibGUgYW5kIGNvbnRyb2wgdGhlIGJhY2tsaWdodCBicmln aHRuZXNzLgo+Pj4gPgo+Pj4gPiB2MjogTW92aW5nIHRoZSBDQUJDIGJrbCBmdW5jdGlvbnMgdG8g bmV3IGZpbGUuKEphbmkpCj4+PiA+Cj4+PiA+IHYzOiBSZWJhc2UKPj4+ID4KPj4+ID4gdjQ6IFJl YmFzZQo+Pj4gPgo+Pj4gPiBDYzogSmFuaSBOaWt1bGEgPGphbmkubmlrdWxhQGludGVsLmNvbT4K Pj4+ID4gQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAaW50ZWwuY29tPgo+Pj4gPiBD YzogWWV0dW5kZSBBZGViaXNpIDx5ZXR1bmRleC5hZGViaXNpQGludGVsLmNvbT4KPj4+ID4gU2ln bmVkLW9mZi1ieTogRGVlcGFrIE0gPG0uZGVlcGFrQGludGVsLmNvbT4KPj4+ID4gLS0tCj4+PiA+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICAgICAgIHwgICAxICsKPj4+ID4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgfCAgIDIgKy0KPj4+ID4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5jICAgICAgfCAgMTkgKysrLQo+Pj4gPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpLmggICAgICB8ICAgNCArCj4+PiA+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kc2lfY2FiYy5jIHwgMTc5Cj4+PiArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrCj4+PiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5j ICAgIHwgICA0ICsKPj4+ID4gIDYgZmlsZXMgY2hhbmdlZCwgMjA2IGluc2VydGlvbnMoKyksIDMg ZGVsZXRpb25zKC0pICBjcmVhdGUgbW9kZQo+Pj4gPiAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHNpX2NhYmMuYwo+Pj4gPgo+Pj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvTWFrZWZpbGUKPj4+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSBp bmRleCA3ZmZiNTFiLi4wNjVjNDEwIDEwMDY0NAo+Pj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9NYWtlZmlsZQo+Pj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+ Pj4gPiBAQCAtODMsNiArODMsNyBAQCBpOTE1LXkgKz0gZHZvX2NoNzAxNy5vIFwKPj4+ID4gIAkg IGludGVsX2RwX21zdC5vIFwKPj4+ID4gIAkgIGludGVsX2RwLm8gXAo+Pj4gPiAgCSAgaW50ZWxf ZHNpLm8gXAo+Pj4gPiArCSAgaW50ZWxfZHNpX2NhYmMubyBcCj4+PiA+ICAJICBpbnRlbF9kc2lf cGFuZWxfdmJ0Lm8gXAo+Pj4gPiAgCSAgaW50ZWxfZHNpX3BsbC5vIFwKPj4+ID4gIAkgIGludGVs X2R2by5vIFwKPj4+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKPj4+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGluZGV4IDA1MGQ4NjAu LmQxOTY0MDQgMTAwNjQ0Cj4+PiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKPj4+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+Pj4gPiBAQCAt MzQ4OSw3ICszNDg5LDcgQEAgdm9pZCBpbnRlbF9zYmlfd3JpdGUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUKPj4+ICpkZXZfcHJpdiwgdTE2IHJlZywgdTMyIHZhbHVlLAo+Pj4gPiAgCQkgICAgIGVu dW0gaW50ZWxfc2JpX2Rlc3RpbmF0aW9uIGRlc3RpbmF0aW9uKTsKPj4+ID4gIHUzMiB2bHZfZmxp c2RzaV9yZWFkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIHJlZyk7Cj4+ PiA+IHZvaWQgdmx2X2ZsaXNkc2lfd3JpdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LCB1MzIgcmVnLCB1MzIKPj4+ID4gdmFsKTsKPj4+ID4gLQo+Pj4gPiAraW50IGludGVsX2Rz aV9jYWJjX2luaXRfYmFja2xpZ2h0X2Z1bmNzKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IKPj4+ID4g KyppbnRlbF9jb25uZWN0b3IpOwo+Pj4gCj4+PiBUaGlzIHByb2JhYmx5IGZpdHMgYmV0dGVyIGlu IGludGVsX2Rydi5oIHVuZGVyIGEgLyogaW50ZWxfZHNpX2NhYmMuYyAqLwo+Pj4gY29tbWVudCwg c2VlIHRoZSBmaWxlIGZvciBleGFtcGxlcy4KPj4+IAo+Pj4gPiAgaW50IGludGVsX2dwdV9mcmVx KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IHZhbCk7ICBpbnQKPj4+ID4g aW50ZWxfZnJlcV9vcGNvZGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpbnQg dmFsKTsKPj4+ID4KPj4+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RzaS5jCj4+PiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpLmMKPj4+ID4gaW5k ZXggNDU2Njc2Yy4uN2FhNzA3ZiAxMDA2NDQKPj4+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHNpLmMKPj4+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNp LmMKPj4+ID4gQEAgLTEyMDksMTAgKzEyMDksMjUgQEAgdm9pZCBpbnRlbF9kc2lfaW5pdChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQo+Pj4gPiAgCWVsc2UKPj4+ID4gIAkJaW50ZWxfZW5jb2Rlci0+ Y3J0Y19tYXNrID0gQklUKFBJUEVfQik7Cj4+PiA+Cj4+PiA+IC0JaWYgKGRldl9wcml2LT52YnQu ZHNpLmNvbmZpZy0+ZHVhbF9saW5rKQo+Pj4gPiArCWlmIChkZXZfcHJpdi0+dmJ0LmRzaS5jb25m aWctPmR1YWxfbGluaykgewo+Pj4gPiAgCQlpbnRlbF9kc2ktPnBvcnRzID0gQklUKFBPUlRfQSkg fCBCSVQoUE9SVF9DKTsKPj4+ID4gLQllbHNlCj4+PiA+ICsJCXN3aXRjaCAoZGV2X3ByaXYtPnZi dC5kc2kuY29uZmlnLT5kbF9jYWJjX3BvcnQpIHsKPj4+ID4gKwkJY2FzZSBDQUJDX1BPUlRfQToK Pj4+ID4gKwkJCWludGVsX2RzaS0+YmtsX2Rjc19wb3J0cyA9IEJJVChQT1JUX0EpOwo+Pj4gPiAr CQkJYnJlYWs7Cj4+PiA+ICsJCWNhc2UgQ0FCQ19QT1JUX0M6Cj4+PiA+ICsJCQlpbnRlbF9kc2kt PmJrbF9kY3NfcG9ydHMgPSBCSVQoUE9SVF9DKTsKPj4+ID4gKwkJCWJyZWFrOwo+Pj4gPiArCQlj YXNlIENBQkNfUE9SVF9BX0FORF9DOgo+Pj4gPiArCQkJaW50ZWxfZHNpLT5ia2xfZGNzX3BvcnRz ID0gQklUKFBPUlRfQSkgfAo+Pj4gQklUKFBPUlRfQyk7Cj4+PiA+ICsJCQlicmVhazsKPj4+ID4g KwkJZGVmYXVsdDoKPj4+ID4gKwkJCURSTV9FUlJPUigiVW5rbm93biBNSVBJIHBvcnRzIGZvciBz ZW5kaW5nCj4+PiBEQ1NcbiIpOwo+Pj4gPiArCQl9Cj4+PiA+ICsJfSBlbHNlIHsKPj4+ID4gIAkJ aW50ZWxfZHNpLT5wb3J0cyA9IEJJVChwb3J0KTsKPj4+ID4gKwkJaW50ZWxfZHNpLT5ia2xfZGNz X3BvcnRzID0gQklUKHBvcnQpOwo+Pj4gPiArCX0KPj4+ID4KPj4+ID4gIAkvKiBDcmVhdGUgYSBE U0kgaG9zdCAoYW5kIGEgZGV2aWNlKSBmb3IgZWFjaCBwb3J0LiAqLwo+Pj4gPiAgCWZvcl9lYWNo X2RzaV9wb3J0KHBvcnQsIGludGVsX2RzaS0+cG9ydHMpIHsgZGlmZiAtLWdpdAo+Pj4gPiBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHNpLmgKPj4+ID4gaW5kZXggMGU3NThmMS4uNWMwN2Q1OSAxMDA2NDQKPj4+ID4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpLmgKPj4+ID4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHNpLmgKPj4+ID4gQEAgLTM0LDYgKzM0LDEwIEBACj4+PiA+ICAjZGVm aW5lIERTSV9EVUFMX0xJTktfRlJPTlRfQkFDSwkxCj4+PiA+ICAjZGVmaW5lIERTSV9EVUFMX0xJ TktfUElYRUxfQUxUCQkyCj4+PiA+Cj4+PiA+ICsjZGVmaW5lIENBQkNfUE9SVF9BICAgICAgICAg ICAgICAgICAgICAgMHgwMAo+Pj4gPiArI2RlZmluZSBDQUJDX1BPUlRfQyAgICAgICAgICAgICAg ICAgICAgIDB4MDEKPj4+ID4gKyNkZWZpbmUgQ0FCQ19QT1JUX0FfQU5EX0MgICAgICAgICAgICAg ICAweDAyCj4+PiA+ICsKPj4+ID4gIHN0cnVjdCBpbnRlbF9kc2lfaG9zdDsKPj4+ID4KPj4+ID4g IHN0cnVjdCBpbnRlbF9kc2kgewo+Pj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHNpX2NhYmMuYwo+Pj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rz aV9jYWJjLmMKPj4+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4+ID4gaW5kZXggMDAwMDAwMC4u ZDE0YTY2OQo+Pj4gPiAtLS0gL2Rldi9udWxsCj4+PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RzaV9jYWJjLmMKPj4+ID4gQEAgLTAsMCArMSwxNzkgQEAKPj4+ID4gKy8qCj4+ PiA+ICsgKiBDb3B5cmlnaHQgwqkgMjAwNi0yMDEwIEludGVsIENvcnBvcmF0aW9uCj4+PiAKPj4+ IDIwMTYKPj4+IAo+Pj4gPiArICoKPj4+ID4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50 ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uCj4+PiA+ICsgb2J0YWluaW5nIGEKPj4+ ID4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9u IGZpbGVzICh0aGUKPj4+ID4gKyAiU29mdHdhcmUiKSwKPj4+ID4gKyAqIHRvIGRlYWwgaW4gdGhl IFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0Cj4+PiA+ICsg bGltaXRhdGlvbgo+Pj4gPiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVy Z2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsCj4+PiA+ICsgc3VibGljZW5zZSwKPj4+ID4gKyAqIGFu ZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0 byB3aG9tCj4+PiA+ICsgdGhlCj4+PiA+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8g c28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+Pj4gPiArICoKPj4+ID4g KyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNl IChpbmNsdWRpbmcKPj4+ID4gKyB0aGUgbmV4dAo+Pj4gPiArICogcGFyYWdyYXBoKSBzaGFsbCBi ZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zCj4+PiA+ICsg b2YgdGhlCj4+PiA+ICsgKiBTb2Z0d2FyZS4KPj4+ID4gKyAqCj4+PiA+ICsgKiBUSEUgU09GVFdB UkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKPj4+IEtJTkQs Cj4+PiA+ICsgRVhQUkVTUyBPUgo+Pj4gPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1Qg TElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgo+Pj4gPiArIE1FUkNIQU5UQUJJTElUWSwKPj4+ ID4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1F TlQuICBJTgo+Pj4gTk8gRVZFTlQKPj4+ID4gKyBTSEFMTAo+Pj4gPiArICogVEhFIEFVVEhPUlMg T1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sCj4+PiBEQU1BR0VT Cj4+PiA+ICsgT1IgT1RIRVIKPj4+ID4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJ T04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IKPj4+IE9USEVSV0lTRSwKPj4+ID4gKyBBUklTSU5HCj4+ PiA+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBP UiBUSEUgVVNFCj4+PiBPUgo+Pj4gPiArIE9USEVSCj4+PiA+ICsgKiBERUFMSU5HUyBJTiBUSEUg U09GVFdBUkUuCj4+PiA+ICsgKgo+Pj4gPiArICogQXV0aG9yOiBEZWVwYWsgTSA8bS5kZWVwYWsg YXQgaW50ZWwuY29tPiAqLwo+Pj4gPiArCj4+PiA+ICsjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiCj4+ PiA+ICsjaW5jbHVkZSAiaW50ZWxfZHNpLmgiCj4+PiA+ICsjaW5jbHVkZSAiaTkxNV9kcnYuaCIK Pj4+ID4gKyNpbmNsdWRlIDxkcm0vZHJtX21pcGlfZHNpLmg+Cj4+PiA+ICsKPj4+ID4gKyNkZWZp bmUgQ0FCQ19PRkYgICAgICAgICAgICAgICAgICAgICAgICAoMCA8PCAwKQo+Pj4gPiArI2RlZmlu ZSBDQUJDX1VTRVJfSU5URVJGQUNFX0lNQUdFICAgICAgICgxIDw8IDApCj4+PiA+ICsjZGVmaW5l IENBQkNfU1RJTExfUElDVFVSRSAgICAgICAgICAgICAgKDIgPDwgMCkKPj4+ID4gKyNkZWZpbmUg Q0FCQ19WSURFT19NT0RFICAgICAgICAgICAgICAgICAoMyA8PCAwKQo+Pj4gPiArCj4+PiA+ICsj ZGVmaW5lIENBQkNfQkFDS0xJR0hUICAgICAgICAgICAgICAgICAgKDEgPDwgMikKPj4+ID4gKyNk ZWZpbmUgQ0FCQ19ESU1NSU5HX0RJU1BMQVkgICAgICAgICAgICAoMSA8PCAzKQo+Pj4gPiArI2Rl ZmluZSBDQUJDX0JDVFJMICAgICAgICAgICAgICAgICAgICAgICgxIDw8IDUpCj4+PiA+ICsKPj4+ ID4gKyNkZWZpbmUgQ0FCQ19NQVhfVkFMVUUgICAgICAgICAgICAgICAgICAweEZGCj4+PiA+ICsK Pj4+IAo+Pj4gVGhlIGRlZmluZXMgYmVsb3cgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSByZWxldmFu dCBlbnVtIGluCj4+PiBpbmNsdWRlL3ZpZGVvL21pcGlfZGlzcGxheS5oIHVzaW5nIHRoZSBNSVBJ IERDUyBzcGVjaWZpY2F0aW9uIG5hbWVzLiBJJ2xsCj4+PiBjb3B5IHRoZW0gYmVsb3cuIFBsZWFz ZSBjcmVhdGUgYSBzZXBhcmF0ZSBwcmVwIHBhdGNoIGFuZCBzZW5kIGl0IHRvIGRyaS0KPj4+IGRl dmVsLgo+Pj4gCj4+PiA+ICsjZGVmaW5lIE1JUElfRENTX0NBQkNfTEVWRUxfUkQgICAgICAgICAg MHg1Mgo+Pj4gCj4+PiBNSVBJX0RDU19HRVRfRElTUExBWV9CUklHSFRORVNTCj4+PiAKPj4+ID4g KyNkZWZpbmUgTUlQSV9EQ1NfQ0FCQ19NSU5fQlJJR0hUTkVTU19SRCAweDVGCj4+PiAKPj4+IE1J UElfRENTX0dFVF9DQUJDX01JTl9CUklHSFRORVNTCj4+PiAKPj4+ID4gKyNkZWZpbmUgTUlQSV9E Q1NfQ0FCQ19DT05UUk9MX1JEICAgICAgICAweDU2Cj4+PiAKPj4+IE1JUElfRENTX0dFVF9QT1dF Ul9TQVZFCj4+PiAKPj4+ID4gKyNkZWZpbmUgTUlQSV9EQ1NfQ0FCQ19DT05UUk9MX0JSSUdIVF9S RCAweDU0Cj4+PiAKPj4+IE1JUElfRENTX0dFVF9DT05UUk9MX0RJU1BMQVkKPj4+IAo+Pj4gPiAr I2RlZmluZSBNSVBJX0RDU19DQUJDX0xFVkVMX1dSICAgICAgICAgIDB4NTEKPj4+IAo+Pj4gTUlQ SV9EQ1NfU0VUX0RJU1BMQVlfQlJJR0hUTkVTUwo+Pj4gCj4+PiA+ICsjZGVmaW5lIE1JUElfRENT X0NBQkNfTUlOX0JSSUdIVE5FU1NfV1IgMHg1RQo+Pj4gCj4+PiBNSVBJX0RDU19TRVRfQ0FCQ19N SU5fQlJJR0hUTkVTUwo+Pj4gCj4+PiA+ICsjZGVmaW5lIE1JUElfRENTX0NBQkNfQ09OVFJPTF9X UiAgICAgICAgMHg1NQo+Pj4gCj4+PiBNSVBJX0RDU19XUklURV9QT1dFUl9TQVZFCj4+PiAKPj4+ ID4gKyNkZWZpbmUgTUlQSV9EQ1NfQ0FCQ19DT05UUk9MX0JSSUdIVF9XUiAweDUzCj4+PiAKPj4+ IE1JUElfRENTX1dSSVRFX0NPTlRST0xfRElTUExBWQo+Pj4gCj4+PiA+ICsKPj4+ID4gK3N0YXRp YyB1MzIgY2FiY19nZXRfYmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rv cikgewo+Pj4gCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyID0gY29ubmVjdG9yLT5lbmNv ZGVyOwo+Pj4gCXN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSA9IGVuY190b19pbnRlbF9kc2ko JmVuY29kZXItPmJhc2UpOwo+Pj4gCj4+PiBTYW1lIGZvciBhbGwgZnVuY3Rpb25zIGJlbG93Lgo+ Pj4gCj4+PiA+ICsJc3RydWN0IGludGVsX2RzaSAqaW50ZWxfZHNpID0gTlVMTDsKPj4+ID4gKwlz dHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciA9IE5VTEw7Cj4+PiA+ICsJc3RydWN0IG1pcGlf ZHNpX2RldmljZSAqZHNpX2RldmljZTsKPj4+ID4gKwl1OCBkYXRhWzJdID0gezB9Owo+Pj4gPiAr CWVudW0gcG9ydCBwb3J0Owo+Pj4gPiArCj4+PiA+ICsJZW5jb2RlciA9IGNvbm5lY3Rvci0+ZW5j b2RlcjsKPj4+ID4gKwlpbnRlbF9kc2kgPSBlbmNfdG9faW50ZWxfZHNpKCZlbmNvZGVyLT5iYXNl KTsKPj4+ID4gKwo+Pj4gPiArCWZvcl9lYWNoX2RzaV9wb3J0KHBvcnQsIGludGVsX2RzaS0+Ymts X2Rjc19wb3J0cykgewo+Pj4gPiArCQlkc2lfZGV2aWNlID0gaW50ZWxfZHNpLT5kc2lfaG9zdHNb cG9ydF0tPmRldmljZTsKPj4+ID4gKwkJbWlwaV9kc2lfZGNzX3JlYWQoZHNpX2RldmljZSwgTUlQ SV9EQ1NfQ0FCQ19MRVZFTF9SRCwKPj4+IGRhdGEsIDIpOwo+Pj4gPiArCX0KPj4+ID4gKwo+Pj4g PiArCXJldHVybiBkYXRhWzFdOwo+Pj4gCj4+PiBIbW0sIGl0J3MgdXAgdG8gdGhlIG1hbnVmYWN0 dXJlciB3aGV0aGVyIHRoZSB0aGlzIGlzIDggb3IgMTYgYml0cy4gSSBndWVzcwo+Pj4geW91J3Jl IGp1c3QgYXNzdW1pbmcgOCBiaXRzPyBJIHdvbmRlciBpZiB0aGlzIHNob3VsZCBiZSBtb3JlIGdl bmVyaWMgd3J0IDggdnMuCj4+PiAxNiBiaXRzLgo+Pj4gCj4+IFtEZWVwYWssIE1dIE5lZWQgdG8g dGhpbmsgb24gaG93IHRvIG1ha2UgaXQgZ2VuZXJpYyB3cnQgOCB2cyAxNiBiaXRzLAo+PiBwcm9i bGVtIGhlcmUgaXMgdG8gc29tZWhvdyB3ZSBoYXZlIHRvIGlkZW50aWZ5IHRoZSBubyBvZiBwYXJh bWV0ZXJzIG9yCj4+IHdlIGhhdmUgdG8gcGFzcyB0aGlzIGluZm8gaW4gVkJULi4uCj4KPiBMb29r IGF0IHRoZSBtYXhpbXVtIHZhbHVlIHRvIGRlY2lkZT8gVGhhdCdzIHdoYXQgbmVlZHMgdG8gYmUg c2V0IGluCj4gc2V0dXAgaWYgdGhlIHNpemUgY2hhbmdlcywgc28gbm8gbmVlZCB0byBhZGQgYW5v dGhlciB2YXJpYWJsZS4KCk9yIGp1c3QgaWdub3JlIHRoaXMgcGFydCBmb3Igbm93LCBhbmQgZ28g Zm9yIGVpdGhlciA4IG9yIDE2IGJpdHMsIG5vdAp0aGlzIHNvbWV0aW1lcyB0aGlzIHNvbWV0aW1l cyB0aGF0LgoKCgoKPgo+IEJSLAo+IEphbmkuCj4KPj4+ID4gK30KPj4+ID4gKwo+Pj4gPiArc3Rh dGljIHZvaWQgY2FiY19zZXRfYmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5l Y3RvciwgdTMyCj4+PiA+ICtsZXZlbCkgewo+Pj4gPiArCXN0cnVjdCBpbnRlbF9kc2kgKmludGVs X2RzaSA9IE5VTEw7Cj4+PiA+ICsJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIgPSBOVUxM Owo+Pj4gPiArCXN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaV9kZXZpY2U7Cj4+PiA+ICsJdTgg ZGF0YVsyXSA9IHswfTsKPj4+ID4gKwllbnVtIHBvcnQgcG9ydDsKPj4+ID4gKwo+Pj4gPiArCWVu Y29kZXIgPSBjb25uZWN0b3ItPmVuY29kZXI7Cj4+PiA+ICsJaW50ZWxfZHNpID0gZW5jX3RvX2lu dGVsX2RzaSgmZW5jb2Rlci0+YmFzZSk7Cj4+PiA+ICsKPj4+ID4gKwlmb3JfZWFjaF9kc2lfcG9y dChwb3J0LCBpbnRlbF9kc2ktPmJrbF9kY3NfcG9ydHMpIHsKPj4+ID4gKwkJZHNpX2RldmljZSA9 IGludGVsX2RzaS0+ZHNpX2hvc3RzW3BvcnRdLT5kZXZpY2U7Cj4+PiA+ICsJCWRhdGFbMV0gPSBs ZXZlbDsKPj4+ID4gKwkJZGF0YVswXSA9IE1JUElfRENTX0NBQkNfTEVWRUxfV1I7Cj4+PiA+ICsJ CW1pcGlfZHNpX2Rjc193cml0ZV9idWZmZXIoZHNpX2RldmljZSwgZGF0YSwgMik7Cj4+PiAKPj4+ IFBsZWFzZSB1c2UgbWlwaV9kc2lfZGNzX3dyaXRlKCkuIFNhbWUgZm9yIGFsbCBmdW5jdGlvbnMg YmVsb3cuCj4+PiAKPj4+ID4gKwl9Cj4+PiA+ICt9Cj4+PiA+ICsKPj4+ID4gK3N0YXRpYyB2b2lk IGNhYmNfZGlzYWJsZV9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9y KQo+Pj4gPiArewo+Pj4gPiArCXN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSA9IE5VTEw7Cj4+ PiA+ICsJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIgPSBOVUxMOwo+Pj4gPiArCXN0cnVj dCBtaXBpX2RzaV9kZXZpY2UgKmRzaV9kZXZpY2U7Cj4+PiA+ICsJZW51bSBwb3J0IHBvcnQ7Cj4+ PiA+ICsJdTggZGF0YVsyXSA9IHswfTsKPj4+ID4gKwo+Pj4gPiArCWVuY29kZXIgPSBjb25uZWN0 b3ItPmVuY29kZXI7Cj4+PiA+ICsJaW50ZWxfZHNpID0gZW5jX3RvX2ludGVsX2RzaSgmZW5jb2Rl ci0+YmFzZSk7Cj4+PiA+ICsKPj4+ID4gKwljYWJjX3NldF9iYWNrbGlnaHQoY29ubmVjdG9yLCAw KTsKPj4+ID4gKwo+Pj4gPiArCWZvcl9lYWNoX2RzaV9wb3J0KHBvcnQsIGludGVsX2RzaS0+Ymts X2Rjc19wb3J0cykgewo+Pj4gPiArCQlkc2lfZGV2aWNlID0gaW50ZWxfZHNpLT5kc2lfaG9zdHNb cG9ydF0tPmRldmljZTsKPj4+ID4gKwkJZGF0YVsxXSA9IENBQkNfT0ZGOwo+Pj4gPiArCQlkYXRh WzBdID0gTUlQSV9EQ1NfQ0FCQ19DT05UUk9MX1dSOwo+Pj4gPiArCQltaXBpX2RzaV9kY3Nfd3Jp dGVfYnVmZmVyKGRzaV9kZXZpY2UsIGRhdGEsIDIpOwo+Pj4gPiArCQlkYXRhWzBdID0gTUlQSV9E Q1NfQ0FCQ19DT05UUk9MX0JSSUdIVF9XUjsKPj4+ID4gKwkJbWlwaV9kc2lfZGNzX3dyaXRlX2J1 ZmZlcihkc2lfZGV2aWNlLCBkYXRhLCAyKTsKPj4+ID4gKwl9Cj4+PiA+ICt9Cj4+PiA+ICsKPj4+ ID4gK3N0YXRpYyB2b2lkIGNhYmNfZW5hYmxlX2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxfY29ubmVj dG9yICpjb25uZWN0b3IpCj4+PiA+ICt7Cj4+PiA+ICsJc3RydWN0IGludGVsX2RzaSAqaW50ZWxf ZHNpID0gTlVMTDsKPj4+ID4gKwlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciA9IE5VTEw7 Cj4+PiA+ICsJc3RydWN0IGludGVsX3BhbmVsICpwYW5lbCA9ICZjb25uZWN0b3ItPnBhbmVsOwo+ Pj4gPiArCXN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaV9kZXZpY2U7Cj4+PiA+ICsJZW51bSBw b3J0IHBvcnQ7Cj4+PiA+ICsJdTggZGF0YVsyXSA9IHswfTsKPj4+ID4gKwo+Pj4gPiArCWVuY29k ZXIgPSBjb25uZWN0b3ItPmVuY29kZXI7Cj4+PiA+ICsJaW50ZWxfZHNpID0gZW5jX3RvX2ludGVs X2RzaSgmZW5jb2Rlci0+YmFzZSk7Cj4+PiA+ICsKPj4+ID4gKwlmb3JfZWFjaF9kc2lfcG9ydChw b3J0LCBpbnRlbF9kc2ktPmJrbF9kY3NfcG9ydHMpIHsKPj4+ID4gKwkJZHNpX2RldmljZSA9IGlu dGVsX2RzaS0+ZHNpX2hvc3RzW3BvcnRdLT5kZXZpY2U7Cj4+PiA+ICsJCWRhdGFbMF0gPSBNSVBJ X0RDU19DQUJDX0NPTlRST0xfQlJJR0hUX1dSOwo+Pj4gPiArCQlkYXRhWzFdID0gQ0FCQ19CQUNL TElHSFQgfCBDQUJDX0RJTU1JTkdfRElTUExBWSB8Cj4+PiBDQUJDX0JDVFJMOwo+Pj4gPiArCQlt aXBpX2RzaV9kY3Nfd3JpdGVfYnVmZmVyKGRzaV9kZXZpY2UsIGRhdGEsIDIpOwo+Pj4gPiArCQlk YXRhWzBdID0gTUlQSV9EQ1NfQ0FCQ19DT05UUk9MX1dSOwo+Pj4gPiArCQlkYXRhWzFdID0gQ0FC Q19TVElMTF9QSUNUVVJFOwo+Pj4gPiArCQltaXBpX2RzaV9kY3Nfd3JpdGVfYnVmZmVyKGRzaV9k ZXZpY2UsIGRhdGEsIDIpOwo+Pj4gPiArCX0KPj4+ID4gKwo+Pj4gPiArCWNhYmNfc2V0X2JhY2ts aWdodChjb25uZWN0b3IsIHBhbmVsLT5iYWNrbGlnaHQubGV2ZWwpOyB9Cj4+PiA+ICsKPj4+ID4g K3N0YXRpYyBpbnQgY2FiY19zZXR1cF9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAq Y29ubmVjdG9yLAo+Pj4gPiArCQllbnVtIHBpcGUgdW51c2VkKQo+Pj4gPiArewo+Pj4gPiArCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjb25uZWN0b3ItPmJhc2UuZGV2Owo+Pj4gPiArCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4+PiA+ICsJ c3RydWN0IGludGVsX3BhbmVsICpwYW5lbCA9ICZjb25uZWN0b3ItPnBhbmVsOwo+Pj4gPiArCj4+ PiA+ICsJaWYgKGRldl9wcml2LT52YnQuYmFja2xpZ2h0LnByZXNlbnQpCj4+PiA+ICsJCXBhbmVs LT5iYWNrbGlnaHQucHJlc2VudCA9IHRydWU7Cj4+PiA+ICsJZWxzZSB7Cj4+PiA+ICsJCURSTV9F UlJPUigibm8gYmFja2xpZ2h0IHByZXNlbnQgcGVyIFZCVFxuIik7Cj4+PiA+ICsJCXJldHVybiAw Owo+Pj4gPiArCX0KPj4+IAo+Pj4gTm9uZSBvZiB0aGUgYWJvdmUgaXMgbmVlZGVkLgo+Pj4gCj4+ PiBkZXZfcHJpdi0+dmJ0LmJhY2tsaWdodC5wcmVzZW50IGlzIGNoZWNrZWQgaGlnaGVyIGxldmVs IGluCj4+PiBpbnRlbF9wYW5lbF9zZXR1cF9iYWNrbGlnaHQoKSwgYW5kIHBhbmVsLT5iYWNrbGln aHQucHJlc2VudCA9IHRydWUgaXMgc2V0Cj4+PiB0aGVyZSBhcyB3ZWxsIGlmIHRoaXMgaG9vayBy ZXR1cm5zIDAuCj4+PiAKPj4+ID4gKwo+Pj4gPiArCXBhbmVsLT5iYWNrbGlnaHQubWF4ID0gQ0FC Q19NQVhfVkFMVUU7Cj4+PiA+ICsJcGFuZWwtPmJhY2tsaWdodC5sZXZlbCA9IENBQkNfTUFYX1ZB TFVFOwo+Pj4gPiArCj4+PiA+ICsJcmV0dXJuIDA7Cj4+PiA+ICt9Cj4+PiA+ICsKPj4+ID4gK2lu dCBpbnRlbF9kc2lfY2FiY19pbml0X2JhY2tsaWdodF9mdW5jcyhzdHJ1Y3QgaW50ZWxfY29ubmVj dG9yCj4+PiA+ICsqaW50ZWxfY29ubmVjdG9yKSB7Cj4+PiA+ICsJc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9IGludGVsX2Nvbm5lY3Rvci0+YmFzZS5kZXY7Cj4+PiA+ICsJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPj4+ID4gKwlzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlciA9IGludGVsX2Nvbm5lY3Rvci0+ZW5jb2RlcjsKPj4+ID4gKwlz dHJ1Y3QgaW50ZWxfcGFuZWwgKnBhbmVsID0gJmludGVsX2Nvbm5lY3Rvci0+cGFuZWw7Cj4+PiA+ ICsKPj4+ID4gKwlpZiAoIWRldl9wcml2LT52YnQuZHNpLmNvbmZpZy0+Y2FiY19zdXBwb3J0ZWQp Cj4+PiA+ICsJCXJldHVybiAtRUlOVkFMOwo+Pj4gCj4+PiAtRU5PREVWIHNlZW1zIG1vcmUgYXBw cm9wcmlhdGUuCj4+PiAKPj4+ID4gKwo+Pj4gPiArCWlmIChlbmNvZGVyLT50eXBlICE9IElOVEVM X09VVFBVVF9EU0kpIHsKPj4+ID4gKwkJRFJNX0VSUk9SKCJVc2UgRFNJIGVuY29kZXIgZm9yIENB QkNcbiIpOwo+Pj4gPiArCQlyZXR1cm4gLUVJTlZBTDsKPj4+ID4gKwl9Cj4+PiAKPj4+IAlpZiAo V0FSTl9PTihlbmNvZGVyLT50eXBlICE9IElOVEVMX09VVFBVVF9EU0kpKQo+Pj4gCQlyZXR1cm4g LUVJTlZBTDsKPj4+IAo+Pj4gPiArCj4+PiA+ICsJcGFuZWwtPmJhY2tsaWdodC5zZXR1cCA9IGNh YmNfc2V0dXBfYmFja2xpZ2h0Owo+Pj4gPiArCXBhbmVsLT5iYWNrbGlnaHQuZW5hYmxlID0gY2Fi Y19lbmFibGVfYmFja2xpZ2h0Owo+Pj4gPiArCXBhbmVsLT5iYWNrbGlnaHQuZGlzYWJsZSA9IGNh YmNfZGlzYWJsZV9iYWNrbGlnaHQ7Cj4+PiA+ICsJcGFuZWwtPmJhY2tsaWdodC5zZXQgPSBjYWJj X3NldF9iYWNrbGlnaHQ7Cj4+PiA+ICsJcGFuZWwtPmJhY2tsaWdodC5nZXQgPSBjYWJjX2dldF9i YWNrbGlnaHQ7Cj4+PiA+ICsKPj4+ID4gKwlyZXR1cm4gMDsKPj4+ID4gK30KPj4+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMKPj4+ID4gYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jCj4+PiA+IGluZGV4IDhjODk5NmYuLjBmOWJmODAg MTAwNjQ0Cj4+PiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMKPj4+ ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYwo+Pj4gPiBAQCAtMTcx OCw2ICsxNzE4LDEwIEBAIGludGVsX3BhbmVsX2luaXRfYmFja2xpZ2h0X2Z1bmNzKHN0cnVjdAo+ Pj4gaW50ZWxfcGFuZWwgKnBhbmVsKQo+Pj4gPiAgCQljb250YWluZXJfb2YocGFuZWwsIHN0cnVj dCBpbnRlbF9jb25uZWN0b3IsIHBhbmVsKTsKPj4+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOwo+Pj4gPgo+Pj4gPiAr CWlmIChjb25uZWN0b3ItPmJhc2UuY29ubmVjdG9yX3R5cGUgPT0KPj4+IERSTV9NT0RFX0NPTk5F Q1RPUl9EU0kgJiYKPj4+ID4gKwkJCWludGVsX2RzaV9jYWJjX2luaXRfYmFja2xpZ2h0X2Z1bmNz KGNvbm5lY3RvcikgPT0gMCkKPj4+IAo+Pj4gSW5kZW50YXRpb24gaXMgbm90IHF1aXRlIHJpZ2h0 Lgo+Pj4gCj4+PiA+ICsJCXJldHVybjsKPj4+ID4gKwo+Pj4gPiAgCWlmIChJU19CUk9YVE9OKGRl dl9wcml2KSkgewo+Pj4gPiAgCQlwYW5lbC0+YmFja2xpZ2h0LnNldHVwID0gYnh0X3NldHVwX2Jh Y2tsaWdodDsKPj4+ID4gIAkJcGFuZWwtPmJhY2tsaWdodC5lbmFibGUgPSBieHRfZW5hYmxlX2Jh Y2tsaWdodDsKPj4+IAo+Pj4gLS0KPj4+IEphbmkgTmlrdWxhLCBJbnRlbCBPcGVuIFNvdXJjZSBU ZWNobm9sb2d5IENlbnRlcgoKLS0gCkphbmkgTmlrdWxhLCBJbnRlbCBPcGVuIFNvdXJjZSBUZWNo bm9sb2d5IENlbnRlcgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngK