From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bhupinder Thakur Subject: Re: [PATCH 03/14 v4] xen/arm: vpl011: Add pl011 uart emulation in Xen Date: Wed, 14 Jun 2017 11:17:49 +0530 Message-ID: References: <1496769929-23355-1-git-send-email-bhupinder.thakur@linaro.org> <1496769929-23355-4-git-send-email-bhupinder.thakur@linaro.org> <1fe7dea9-9120-63c7-5efd-b98fed3a70ba@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dL19k-0004HY-SG for xen-devel@lists.xenproject.org; Wed, 14 Jun 2017 05:47:52 +0000 Received: by mail-ua0-f181.google.com with SMTP id q15so88337997uaa.2 for ; Tue, 13 Jun 2017 22:47:51 -0700 (PDT) In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Julien Grall Cc: xen-devel@lists.xenproject.org, Stefano Stabellini , Ian Jackson , Wei Liu List-Id: xen-devel@lists.xenproject.org SGkgSnVsaWVuLAoKCj4+Pj4gK30KPj4+PiArCj4+Pj4gK3N0YXRpYyB2b2lkIHZwbDAxMV91cGRh dGUoc3RydWN0IGRvbWFpbiAqZCkKPj4+PiArewo+Pj4+ICsgICAgc3RydWN0IHZwbDAxMSAqdnBs MDExID0gJmQtPmFyY2gudnBsMDExOwo+Pj4+ICsKPj4+PiArICAgIC8qCj4+Pj4gKyAgICAgKiBU T0RPOiBQTDAxMSBpbnRlcnJ1cHRzIGFyZSBsZXZlbCB0cmlnZ2VyZWQgd2hpY2ggbWVhbnMKPj4+ PiArICAgICAqIHRoYXQgaW50ZXJydXB0IG5lZWRzIHRvIGJlIHNldC9jbGVhciBpbnN0ZWFkIG9m IGJlaW5nCj4+Pj4gKyAgICAgKiBpbmplY3RlZC4gSG93ZXZlciwgY3VycmVudGx5IHZHSUMgZG9l cyBub3QgaGFuZGxlIGxldmVsCj4+Pj4gKyAgICAgKiB0cmlnZ2VyZWQgaW50ZXJydXB0cyBwcm9w ZXJseS4gVGhpcyBmdW5jdGlvbiBuZWVkcyB0byBiZQo+Pj4+ICsgICAgICogcmV2aXNpdGVkIG9u Y2UgdkdJQyBzdGFydHMgaGFuZGxpbmcgbGV2ZWwgdHJpZ2dlcmVkCj4+Pj4gKyAgICAgKiBpbnRl cnJ1cHRzLgo+Pj4+ICsgICAgICovCj4+Pj4gKyAgICBpZiAoIHZwbDAxMS0+dWFydHJpcyAmIHZw bDAxMS0+dWFydGltc2MgKQo+Pj4KPj4+Cj4+Pgo+Pj4gVGhlIHdyaXRlIGluIHVhcnRpcnMgYW5k IHVhcnRpbXNjIGFyZSBwcm90ZWN0ZWQgYnkgYSBsb2NrLiBTaG91bGRuJ3QgaXQKPj4+IGJlCj4+ PiB0aGUgY2FzZSBoZXJlIHRvbz8gTW9yZSB0aGF0IHRoZXkgYXJlIG5vdCB1cGRhdGVkIGF0b21p Y2FsbHkuCj4+Pgo+Pj4gWW91IHByb2JhYmx5IHdhbnQgdG8gY2FsbCB2cGwwMTFfdXBkYXRlIHdp dGggdnBsMDExIGxvY2sgdGFrZW4gdG8gbWFrZQo+Pj4gc3VyZQo+Pj4geW91IGRvbid0IGhhdmUg YW55IHN5bmNocm9uaXphdGlvbiBpc3N1ZS4KPj4KPj4KPj4gU2luY2Ugd2UgYXJlIGp1c3QgcmVh ZGluZyB0aGUgdmFsdWVzIGhlcmUsIEkgdGhpbmsgaXQgaXMgZmluZSB0byBub3QKPj4gdGFrZSBh IGxvY2suIFRoZQo+PiBjb25kaXRpb24gd2lsbCBlaXRoZXIgYmUgdHJ1ZSBvciBmYWxzZS4KPgo+ Cj4gdWFydHJpcyBhbmQgdWFydGltc2MgbWF5IG5vdCBiZSB1cGRhdGVkIGF0b21pY2FsbHkgYmVj YXVzZSB2cmVnX3JlZzMyX3VwZGF0ZQo+IGRvZXMgbm90IGd1YXJhbnRlZSBpdC4KPgo+IFNvIHlv dSBtYXkgcmVhZCBhIHdyb25nIHZhbHVlIGhlcmUgYW5kIHBvdGVudGlhbGx5IGluamVjdCBzcHVy aW91cwo+IGludGVycnVwdC4gVGhpcyB3aWxsIGdldCBtdWNoIHdvcnNlIHdoZW4gbGV2ZWwgd2ls bCBmdWxseSBiZSBzdXBwb3J0ZWQgYXMKPiB5b3UgbWF5IHN3aXRjaCB0aGUgbGV2ZWwgb2YgdGhl IGludGVycnVwdCBieSBtaXN0YWtlLgo+Ck9rLiBJIHdpbGwgY2hlY2sgdGhpcyBjb25kaXRpb24g dW5kZXIgbG9jay4gQnV0IHNob3VsZCBJIGNhbGwKdmdpY192Y3B1X2luamVjdF9zcGkoKSBhbHNv IHVuZGVyIHRoZSBzYW1lIGxvY2s/IEkgdGhpbmsgd2UgY2FuIGRvCmxpa2UgdGhpczoKCnZwbDAx MV9sb2NrKCk7Cm1hc2sgPSAgdnBsMDExLT51YXJ0cmlzICYgdnBsMDExLT51YXJ0aW1zYzsKdnBs MDExX3VubG9jaygpOwoKaWYgKCBtYXNrICkKICAgdmdpY192Y3B1X2luamVjdF9zcGkoKTsKPgoK Pj4+IFNlZSBteSBhbnN3ZXIgb24gU3RlZmFubydzIGUtbWFpbCByZWdhcmRpbmcgdGhlIGJhcnJp ZXIgaGVyZS4KPj4+ICg8ZmEzZTUwMDMtNWM3Zi0wODg2LWQ0MzctNmI2NDMzNDdiNGM1QGFybS5j b20+KQo+Pj4KPj4+PiArCj4+Pj4gKyAgICBWUEwwMTFfTE9DSyhkLCBmbGFncyk7Cj4+Pj4gKwo+ Pj4+ICsgICAgLyoKPj4+PiArICAgICAqIEl0IGlzIGV4cGVjdGVkIHRoYXQgdGhlcmUgd2lsbCBi ZSBkYXRhIGluIHRoZSByaW5nIGJ1ZmZlciB3aGVuCj4+Pj4gdGhpcwo+Pj4+ICsgICAgICogZnVu Y3Rpb24gaXMgY2FsbGVkIHNpbmNlIHRoZSBndWVzdCBpcyBleHBlY3RlZCB0byByZWFkIHRoZSBk YXRhCj4+Pj4gcmVnaXN0ZXIKPj4+PiArICAgICAqIG9ubHkgaWYgdGhlIFRYRkUgZmxhZyBpcyBu b3Qgc2V0Lgo+Pj4+ICsgICAgICogSWYgdGhlIGd1ZXN0IHN0aWxsIGRvZXMgcmVhZCB3aGVuIFRY RkUgYml0IGlzIHNldCB0aGVuIDAgd2lsbCBiZQo+Pj4+IHJldHVybmVkLgo+Pj4+ICsgICAgICov Cj4+Pj4gKyAgICBpZiAoIHhlbmNvbnNfcXVldWVkKGluX3Byb2QsIGluX2NvbnMsIHNpemVvZihp bnRmLT5pbikpID4gMCApCj4+Pj4gKyAgICB7Cj4+Pj4gKyAgICAgICAgZGF0YSA9IGludGYtPmlu W3hlbmNvbnNfbWFzayhpbl9jb25zLCBzaXplb2YoaW50Zi0+aW4pKV07Cj4+Pj4gKyAgICAgICAg aW5fY29ucyArPSAxOwo+Pj4+ICsgICAgICAgIGludGYtPmluX2NvbnMgPSBpbl9jb25zOwo+Pj4+ ICsgICAgICAgIHNtcF9tYigpOwo+Pj4KPj4+Cj4+Pgo+Pj4gSSBkb24ndCB1bmRlcnN0YW5kIHdo eSB5b3UgbW92ZWQgdGhlIGJhcnJpZXIgZnJvbSBiZXR3ZWVuIHJlYWRpbmcgdGhlCj4+PiBkYXRh Cj4+PiBhbmQgaW50Zi0+aW5fY29ucy4gWW91IGhhdmUgdG8gZW5zdXJlIHRoZSBjaGFyYWN0ZXIg aXMgcmVhZCBiZWZvcmUKPj4+IHVwZGF0aW5nCj4+PiBpbl9jb25zLgo+Pgo+PiBJIHRob3VnaHQg dGhhdCBzaW5jZSB0aGVzZSAzIHN0YXRlbWVudHMgYXJlIGRlcGVuZGVudCBvbiBpbl9jb25zLCB0 aGV5Cj4+IHdvdWxkIGJlIGV4ZWN1dGVkIGluIG9yZGVyIGR1ZSB0byBkYXRhIGRlcGVuZGVuY3ku Cj4KPgo+IEhvdyBkbyB5b3Uga25vdyB0aGUgY29tcGlsZXIgd2lsbCBnZW5lcmF0ZSBhc3NlbWJs eSB3aGljaCBjb250YWluIHRoZSBkYXRhCj4gZGVwZW5kZW5jeT8KPgo+IExpa2VseSBpdCB3aWxs IG5vdCBiZSB0aGUgY2FzZSBiZWNhdXNlIGluX2NvbnMgd2lsbCBiZSB1c2VkIGluZGlyZWN0bHkg YXMgd2UKPiBtYXNrIGl0IGZpcnN0Lgo+Cj4+IFRoZSBtZW1vcnkgYmFycmllcgo+PiBhZnRlciB0 aGUgMyBzdGF0ZW1lbnRzIGVuc3VyZXMgdGhhdCBpbnRmLT5pbl9jb25zIGlzIHVwZGF0ZWQgYmVm b3JlCj4+IHByb2NlZWRpbmcgYWhlYWQuCj4KPgo+IENhbiB5b3UgZXhwbGFpbiB3aHk/Cj4KPiBJ SE1PLCB3aGF0IG1hdHRlciBoZXJlIGlzIGluX2NvbnMgdG8gYmUgd3JpdHRlbiBhZnRlciBpbnRm LT5pblsuLi5dIGlzIHJlYWQuCj4gT3RoZXJ3aXNlIHRoZSBiYWNrZW5kIG1heSBzZWUgaW5fY29u cyBiZWZvcmUgdGhlIGNoYXJhY3RlciBoYXMgZWZmZWN0aXZlbHkKPiBiZWVuIHJlYWQuCj4Kb2su IFRoZSBpc3N1ZSBpcyB0aGF0IHRoZSBvdGhlciBlbmQgKHhlbmNvbnNvbGUgcnVubmluZyBvbiBt YXliZSBzb21lCm90aGVyIENQVSkgbWF5IHNlZSB0aGUgaW5jcmVtZW50IG9wZXJhdGlvbiBmaXJz dCBiZWZvcmUgdGhlIHJlYWQKb3BlcmF0aW9uIGNvdWxkIGNvbXBsZXRlIChkdWUgdG8gc29tZSBx dWlyayBvZiBtZW1vcnkvY2FjaGUKYXJjaGl0ZWN0dXJlKSBldmVuIHRob3VnaCB0aGUgQ1BVIHJ1 bm5pbmcgdGhlIG1taW9fcmVhZCgpIHdpbGwgc2VlIHRoZQplZmZlY3QgaW4gdGhlIGNvcnJlY3Qg b3JkZXIgb25seS4KCkkgd2lsbCBtb3ZlIHRoZSBzbXBfbWIoKSBiZWZvcmUgaW5kZXggaXMgaW5j cmVtZW50ZWQuCgo+Pj4gV2hhdCBpZiB0aGUgb3RoZXIgZW5kIG9mIHRoZSByaW5nIGhhcyBwdXQg bW9yZSBkYXRhIHdoaWxzdCByZWFkaW5nIG9uZQo+Pj4gY2hhcmFjdGVyPwo+Pgo+PiBJdCB3aWxs IHJhaXNlIGFuIGV2ZW50IHdoZW4gdGhlIG90aGVyIGVuZCBwdXRzIG1vcmUgZGF0YSBhbmQgaW4g dGhlCj4+IGV2ZW50IGhhbmRsaW5nIGZ1bmN0aW9uIGRhdGFfYXZhaWxhYmxlKCksIGl0IHdpbGwg Y2xlYXIgdGhlIFJYRkUgYml0Lgo+Cj4KPiBBbmQgdGhpcyBpcyBmaW5lIGJlY2F1c2UgdGhlIGxv Y2sgaXMgaGVyZSB0byBwcm90ZWN0IHVhcnRmci91YXJ0aXMgSSBndWVzcz8KWWVzLgoKPgo+IFsu Li5dCj4KPj4+PiArCj4+Pj4gKyAgICAvKiBNYXAgdGhlIGd1ZXN0IFBGTiB0byBYZW4gYWRkcmVz cyBzcGFjZS4gKi8KPj4+PiArICAgIHJjID0gIHByZXBhcmVfcmluZ19mb3JfaGVscGVyKGQsCj4+ Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZm5feChpbmZvLT5nZm4pLAo+ Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZwbDAxMS0+cmluZ19wYWdl LAo+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZwbDAxMS0+cmluZ19i dWYpOwo+Pj4+ICsgICAgaWYgKCByYyA8IDAgKQo+Pj4+ICsgICAgICAgIGdvdG8gb3V0Owo+Pj4+ ICsKPj4+PiArICAgIHJjID0gdmdpY19yZXNlcnZlX3ZpcnEoZCwgR1VFU1RfVlBMMDExX1NQSSk7 Cj4+Pj4gKyAgICBpZiAoICFyYyApCj4+Pj4gKyAgICB7Cj4+Pj4gKyAgICAgICAgcmMgPSAtRUlO VkFMOwo+Pj4+ICsgICAgICAgIGdvdG8gb3V0MTsKPj4+PiArICAgIH0KPj4+PiArCj4+Pj4gKyAg ICByZWdpc3Rlcl9tbWlvX2hhbmRsZXIoZCwgJnZwbDAxMV9tbWlvX2hhbmRsZXIsCj4+Pj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgR1VFU1RfUEwwMTFfQkFTRSwgR1VFU1RfUEwwMTFfU0la RSwgTlVMTCk7Cj4+Pgo+Pj4KPj4+Cj4+PiBBZ2FpbiwgeW91IHJlZ2lzdGVyIE1NSU8gaGFuZGxl ciBidXQgbmV2ZXIgcmVtb3ZlIHRoZW0uIFNvIGlmIHRoaXMgY2FsbAo+Pj4gZmFpbCwgeW91IHdp bGwgZW5kIHVwIHdpdGggdGhlIGhhbmRsZXJzIGV4aXN0aW5nIGJ1dCB0aGUgcmVzdAo+Pj4gaGFs Zi1pbml0aWFsaXplZCB3aGljaCBsaWtlbHkgbGVhZCB0byBhIHNlZ2ZhdWx0LCBvciB3b3JzdCBs ZWFraW5nIGRhdGEuCj4+Cj4+IFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgc3RhdHVz LiBTbyB0aGVyZSBpcyBubyB3YXkgdG8gZmluZCBvdXQKPj4gaWYgdGhlIG1taW8gaGFuZGxlcnMg d2VyZQo+PiByZWdpc3RlcmVkIHN1Y2Nlc3NmdWxseS4KPgo+Cj4gVGhhdCdzIG5vdCBteSBwb2lu dC4gcmVnaXN0ZXJfbW1pb19oYW5kbGVyIHNob3VsZCBuZXZlciBmYWlsLiBIb3dldmVyLCB0aGUK PiBjb2RlIGJlbG93IChhbGxvY191bmJvdW50Xy4uLikgbWF5IGZhaWwuIEFuZCB5b3UgYmFpbAo+ Cj4+IEkgYW0gcmVtb3ZpbmcgdGhlIG1taW8gaGFuZGxlcnMgaW4gdGhlIGVycm9yCj4+IGxlZ3Mg aW4gZG9tYWluX3ZwbDAxMV9pbml0KCkuCj4KPgo+IFhlbiBkb2VzIG5vdCBoYXZlIGFueSBoZWxw ZXIgdG8gcmV2ZXJ0IHRoZSBiZWhhdmlvciBvZiByZWdpc3Rlcl9tbWlvX2hhbmRsZXIKPiBhbmQg SSBkb24ndCBzZWVtIHRvIGludHJvZHVjZSB3aHkuIFNvIGhvdyBkbyB5b3UgZG8gaXQ/Cj4KPiBB bnl3YXksIHlvdSB3aWxsIG5vdCBuZWVkIHRvIHdvcnJ5IGFib3V0IHJlbW92aW5nIE1NSU8gaGFu ZGxlciBpZiB5b3UgbW92ZQo+IHRoZSBjYWxsIGFmdGVyIGFsbCB0aGUgY2FsbCB0aGF0IG1heSBm YWlsLgo+Ckkgd2lsbCBtb3ZlIHRoaXMgY2FsbCB0byB0aGUgbGFzdC4KCj4+Pgo+Pj4+ICsKPj4+ PiArICAgIHNwaW5fbG9ja19pbml0KCZ2cGwwMTEtPmxvY2spOwo+Pj4+ICsKPj4+PiArICAgIHJj ID0gYWxsb2NfdW5ib3VuZF94ZW5fZXZlbnRfY2hhbm5lbChkLCAwLCBpbmZvLT5jb25zb2xlX2Rv bWlkLAo+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZwbDAx MV9ub3RpZmljYXRpb24pOwo+Pj4+ICsgICAgaWYgKCByYyA8IDAgKQo+Pj4KPj4+Cj4+PiBZb3UK Pj4KPj4gSSB0aGluayB0aGlzIGlzIGEgdHlwZS4KPgo+Cj4gaG1tbSBsaWtlbHkuCj4KPgo+Pgo+ Pj4+Cj4+Pj4gKyAgICAgICAgZ290byBvdXQyOwo+Pj4+ICsKPj4+PiArICAgIHZwbDAxMS0+ZXZ0 Y2huID0gaW5mby0+ZXZ0Y2huID0gcmM7Cj4+Pj4gKwo+Pj4+ICsgICAgcmV0dXJuIDA7Cj4+Pj4g Kwo+Pj4+ICtvdXQyOgo+Pj4+ICsgICAgeGZyZWUoZC0+YXJjaC52bW1pby5oYW5kbGVycyk7Cj4+ Pj4gKyAgICB2Z2ljX2ZyZWVfdmlycShkLCBHVUVTVF9WUEwwMTFfU1BJKTsKPj4+PiArCj4+Pj4g K291dDE6Cj4+Pj4gKyAgICBkZXN0cm95X3JpbmdfZm9yX2hlbHBlcigmdnBsMDExLT5yaW5nX2J1 ZiwgdnBsMDExLT5yaW5nX3BhZ2UpOwo+Pj4+ICsKPj4+PiArb3V0Ogo+Pj4+ICsgICAgcmV0dXJu IHJjOwo+Pj4+ICt9Cj4+Pj4gKwo+Pj4+ICt2b2lkIGRvbWFpbl92cGwwMTFfZGVpbml0KHN0cnVj dCBkb21haW4gKmQpCj4+Pj4gK3sKPj4+PiArICAgIHN0cnVjdCB2cGwwMTEgKnZwbDAxMSA9ICZk LT5hcmNoLnZwbDAxMTsKPj4+PiArCj4+Pj4gKyAgICBpZiAoICF2cGwwMTEtPnJpbmdfYnVmICkK Pj4+Cj4+Pgo+Pj4KPj4+IFlvdSB3aWxsIGJhaWwgb3V0IGlmIHJpbmdfYnVmIGlzIE5VTEwuIEhv d2V2ZXIsIGlmIHlvdSBjYWxsZWQKPj4+IGRvbWFpbl92cGwwMTFfaW5pdCBmaXJzdCBhbmQgaXQg ZmFpbGVkLCB5b3UgbWF5IGhhdmUgcmluZ19idWYgc2V0IGJ1dCB0aGUKPj4+IHJlc3Qgbm90IGZ1 bGx5IHVwZGF0ZWQuIFRoaXMgbWVhbnMgdGhhdCB5b3Ugd2lsbCBmcmVlIGdhcmJhZ2dlLgo+Pj4K Pj4+IEkgdGhpbmsgdGhpcyBjb3VsZCBiZSBzb2x2ZWQgYnkgcmVpbml0aWFsaXplIHJpbmdfYnVm IGlmIGFuIGVycm9yIG9jY3VyCj4+PiBpbgo+Pj4gZG9tYWluX3ZwbDAxMV9pbml0Lgo+Pgo+PiBk ZXN0cm95X3JpbmdfZm9yX2hlbHBlcigpIHNldHMgdGhlIGZpcnN0IHBhcmFtZXRlciB0byBOVUxM IGluY2FzZSBpdAo+PiBmYWlscy4KPgo+Cj4gRmluZS4gSSB0aGluayBpdCBpcyBhIGJpdCBmcmFn aWxlLCBidXQgSSBkb24ndCBzZWUgd2h5IHNvbWVvbmUgd291bGQgZGVjaWRlCj4gdG8gcmVtb3Zl IGl0IHdpdGhvdXQgY2hlY2tpbmcgYWxsIHRoZSBjYWxsZXJzLgo+Cj4gWy4uLl0KPgo+Pj4+ICsj aWZkZWYgQ09ORklHX1ZQTDAxMV9DT05TT0xFCj4+Pj4gK2ludCBkb21haW5fdnBsMDExX2luaXQo c3RydWN0IGRvbWFpbiAqZCwKPj4+PiArICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdnBs MDExX2luaXRfaW5mbyAqaW5mbyk7Cj4+Pj4gK3ZvaWQgZG9tYWluX3ZwbDAxMV9kZWluaXQoc3Ry dWN0IGRvbWFpbiAqZCk7Cj4+Pj4gKyNlbHNlCj4+Pj4gK3N0YXRpYyBpbmxpbmUgaW50IGRvbWFp bl92cGwwMTFfaW5pdChzdHJ1Y3QgZG9tYWluICpkLAo+Pj4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IHZwbDAxMV9pbml0X2luZm8gKmluZm8pCj4+Pj4gK3sK Pj4+PiArICAgIHJldHVybiAtRU5PU1lTOwo+Pj4+ICt9Cj4+Pj4gKwo+Pj4+ICtzdGF0aWMgaW5s aW5lIHZvaWQgZG9tYWluX3ZwbDAxMV9kZWluaXQoc3RydWN0IGRvbWFpbiAqZCkgeyB9Cj4+Pj4g KyNlbmRpZgo+Pj4+ICsKPj4+PiArI2VuZGlmCj4+Pj4gKwo+Pj4KPj4+Cj4+Pgo+Pj4gUGxlYXNl IGRyb3AgdGhpcyBuZXdsaW5lLgo+Pgo+PiBZb3UgbWVhbiB0aGUgbmV3bGluZSBiZXR3ZWVuIHRo ZSAjZW5kaWZzIG9yIGFmdGVyIHRoZSBsYXN0ICNlbmRpZj8KPgo+Cj4gWWVzLgpvay4gSSBoYXZl IHJlbW92ZWQgdGhlIG5ld2xpbmUgYmV0d2VlbiB0aGUgZW5kaWZzLgoKUmVnYXJkcywKQmh1cGlu ZGVyCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4t ZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMu eGVuLm9yZy94ZW4tZGV2ZWwK