From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dmitry Osipenko Subject: Re: [PATCH v2] drm/tegra: Add kerneldoc for UAPI Date: Sat, 19 May 2018 01:45:14 +0300 Message-ID: <247d97b4-1519-f400-87b3-b7606c328a8d@gmail.com> References: <20180517154132.10058-8-thierry.reding@gmail.com> <20180518203337.26476-1-thierry.reding@gmail.com> <71541779-b4a9-43f3-f3e0-dd74e244ba93@gmail.com> <20180518215819.GA28123@ulmo> <20180518221305.GA29384@ulmo> <015e6ef1-e020-f339-2517-49330cc8616a@gmail.com> <20180518222438.GB29384@ulmo> <9e4a9f6a-19eb-1b1e-3ac1-7b271330c722@gmail.com> <20180518223552.GA30671@ulmo> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180518223552.GA30671@ulmo> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Thierry Reding Cc: linux-tegra@vger.kernel.org, dri-devel@lists.freedesktop.org, Mikko Perttunen List-Id: linux-tegra@vger.kernel.org T24gMTkuMDUuMjAxOCAwMTozNSwgVGhpZXJyeSBSZWRpbmcgd3JvdGU6Cj4gT24gU2F0LCBNYXkg MTksIDIwMTggYXQgMDE6Mjg6MTdBTSArMDMwMCwgRG1pdHJ5IE9zaXBlbmtvIHdyb3RlOgo+PiBP biAxOS4wNS4yMDE4IDAxOjI0LCBUaGllcnJ5IFJlZGluZyB3cm90ZToKPj4+IE9uIFNhdCwgTWF5 IDE5LCAyMDE4IGF0IDAxOjE4OjA1QU0gKzAzMDAsIERtaXRyeSBPc2lwZW5rbyB3cm90ZToKPj4+ PiBPbiAxOS4wNS4yMDE4IDAxOjEzLCBUaGllcnJ5IFJlZGluZyB3cm90ZToKPj4+Pj4gT24gRnJp LCBNYXkgMTgsIDIwMTggYXQgMTE6NTg6MTlQTSArMDIwMCwgVGhpZXJyeSBSZWRpbmcgd3JvdGU6 Cj4+Pj4+PiBPbiBTYXQsIE1heSAxOSwgMjAxOCBhdCAxMjo0MjoyMkFNICswMzAwLCBEbWl0cnkg T3NpcGVua28gd3JvdGU6Cj4+Pj4+Pj4gT24gMTguMDUuMjAxOCAyMzozMywgVGhpZXJyeSBSZWRp bmcgd3JvdGU6Cj4+Pj4+Pj4+IEZyb206IFRoaWVycnkgUmVkaW5nIDx0cmVkaW5nQG52aWRpYS5j b20+Cj4+Pj4+Pj4+Cj4+Pj4+Pj4+IERvY3VtZW50IHRoZSB1c2Vyc3BhY2UgQUJJIHdpdGgga2Vy bmVsZG9jIHRvIHByb3ZpZGUgc29tZSBpbmZvcm1hdGlvbiBvbgo+Pj4+Pj4+PiBob3cgdG8gdXNl IGl0Lgo+Pj4+Pj4+Pgo+Pj4+Pj4+PiB2MjoKPj4+Pj4+Pj4gLSBrZWVwIEdFTSBvYmplY3QgY3Jl YXRpb24gZmxhZ3MgZm9yIEFCSSBjb21wYXRpYmlsaXR5Cj4+Pj4+Pj4+IC0gZml4IHR5cG8gaW4g c3RydWN0IGRybV90ZWdyYV9zeW5jcHRfaW5jciBrZXJuZWxkb2MKPj4+Pj4+Pj4gLSBmaXggdHlw b3MgaW4gc3RydWN0IGRybV90ZWdyYV9zdWJtaXQga2VybmVsZG9jCj4+Pj4+Pj4+IC0gcmV3b3Jk ZWQgc29tZSBkZXNjcmlwdGlvbnMgYXMgc3VnZ2VzdGVkCj4+Pj4+Pj4+Cj4+Pj4+Pj4+IFNpZ25l ZC1vZmYtYnk6IFRoaWVycnkgUmVkaW5nIDx0cmVkaW5nQG52aWRpYS5jb20+Cj4+Pj4+Pj4+IC0t LQo+Pj4+Pj4+PiAgaW5jbHVkZS91YXBpL2RybS90ZWdyYV9kcm0uaCB8IDQ4MCArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrLQo+Pj4+Pj4+PiAgMSBmaWxlIGNoYW5nZWQsIDQ3MSBp bnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQo+Pj4+Pj4+Pgo+Pj4+Pj4+PiBkaWZmIC0tZ2l0 IGEvaW5jbHVkZS91YXBpL2RybS90ZWdyYV9kcm0uaCBiL2luY2x1ZGUvdWFwaS9kcm0vdGVncmFf ZHJtLmgKPj4+Pj4+Pj4gaW5kZXggOTllMTVkODJkMWU5Li43ZTEyMWM2OWNkOWEgMTAwNjQ0Cj4+ Pj4+Pj4+IC0tLSBhL2luY2x1ZGUvdWFwaS9kcm0vdGVncmFfZHJtLmgKPj4+Pj4+Pj4gKysrIGIv aW5jbHVkZS91YXBpL2RybS90ZWdyYV9kcm0uaAo+Pj4+Pj4+PiBAQCAtMzIsMTQzICszMiw2MDUg QEAgZXh0ZXJuICJDIiB7Cj4+Pj4+Pj4+ICAjZGVmaW5lIERSTV9URUdSQV9HRU1fQ1JFQVRFX1RJ TEVEICAgICAoMSA8PCAwKQo+Pj4+Pj4+PiAgI2RlZmluZSBEUk1fVEVHUkFfR0VNX0NSRUFURV9C T1RUT01fVVAgKDEgPDwgMSkKPj4+Pj4+Pj4gIAo+Pj4+Pj4+PiArLyoqCj4+Pj4+Pj4+ICsgKiBz dHJ1Y3QgZHJtX3RlZ3JhX2dlbV9jcmVhdGUgLSBwYXJhbWV0ZXJzIGZvciB0aGUgR0VNIG9iamVj dCBjcmVhdGlvbiBJT0NUTAo+Pj4+Pj4+PiArICovCj4+Pj4+Pj4+ICBzdHJ1Y3QgZHJtX3RlZ3Jh X2dlbV9jcmVhdGUgewo+Pj4+Pj4+PiArCS8qKgo+Pj4+Pj4+PiArCSAqIEBzaXplOgo+Pj4+Pj4+ PiArCSAqCj4+Pj4+Pj4+ICsJICogVGhlIHNpemUsIGluIGJ5dGVzLCBvZiB0aGUgYnVmZmVyIG9i amVjdCB0byBiZSBjcmVhdGVkLgo+Pj4+Pj4+PiArCSAqLwo+Pj4+Pj4+PiAgCV9fdTY0IHNpemU7 Cj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4gKwkvKioKPj4+Pj4+Pj4gKwkgKiBAZmxhZ3M6Cj4+Pj4+Pj4+ ICsJICoKPj4+Pj4+Pj4gKwkgKiBBIGJpdG1hc2sgb2YgZmxhZ3MgdGhhdCBpbmZsdWVuY2UgdGhl IGNyZWF0aW9uIG9mIEdFTSBvYmplY3RzOgo+Pj4+Pj4+PiArCSAqCj4+Pj4+Pj4+ICsJICogRFJN X1RFR1JBX0dFTV9DUkVBVEVfVElMRUQKPj4+Pj4+Pj4gKwkgKiAgIFVzZSB0aGUgMTZ4MTYgdGls aW5nIGZvcm1hdCBmb3IgdGhpcyBidWZmZXIuCj4+Pj4+Pj4+ICsJICoKPj4+Pj4+Pj4gKwkgKiBE Uk1fVEVHUkFfR0VNX0NSRUFURV9CT1RUT01fVVAKPj4+Pj4+Pj4gKwkgKiAgIFRoZSBidWZmZXIg aGFzIGEgYm90dG9tLXVwIGxheW91dC4KPj4+Pj4+Pj4gKwkgKi8KPj4+Pj4+Pj4gIAlfX3UzMiBm bGFnczsKPj4+Pj4+Pj4gKwo+Pj4+Pj4+PiArCS8qKgo+Pj4+Pj4+PiArCSAqIEBoYW5kbGU6Cj4+ Pj4+Pj4+ICsJICoKPj4+Pj4+Pj4gKwkgKiBUaGUgaGFuZGxlIG9mIHRoZSBjcmVhdGVkIEdFTSBv YmplY3QuIFNldCBieSB0aGUga2VybmVsIHVwb24KPj4+Pj4+Pj4gKwkgKiBzdWNjZXNzZnVsIGNv bXBsZXRpb24gb2YgdGhlIElPQ1RMLgo+Pj4+Pj4+PiArCSAqLwo+Pj4+Pj4+PiAgCV9fdTMyIGhh bmRsZTsKPj4+Pj4+Pj4gIH07Cj4+Pj4+Pj4+ICAKPj4+Pj4+Pj4gKy8qKgo+Pj4+Pj4+PiArICog c3RydWN0IGRybV90ZWdyYV9nZW1fbW1hcCAtIHBhcmFtZXRlcnMgZm9yIHRoZSBHRU0gbW1hcCBJ T0NUTAo+Pj4+Pj4+PiArICovCj4+Pj4+Pj4+ICBzdHJ1Y3QgZHJtX3RlZ3JhX2dlbV9tbWFwIHsK Pj4+Pj4+Pj4gKwkvKioKPj4+Pj4+Pj4gKwkgKiBAaGFuZGxlOgo+Pj4+Pj4+PiArCSAqCj4+Pj4+ Pj4+ICsJICogSGFuZGxlIG9mIHRoZSBHRU0gb2JqZWN0IHRvIG9idGFpbiBhbiBtbWFwIG9mZnNl dCBmb3IuCj4+Pj4+Pj4+ICsJICovCj4+Pj4+Pj4+ICAJX191MzIgaGFuZGxlOwo+Pj4+Pj4+PiAr Cj4+Pj4+Pj4+ICsJLyoqCj4+Pj4+Pj4+ICsJICogQHBhZDoKPj4+Pj4+Pj4gKwkgKgo+Pj4+Pj4+ PiArCSAqIFN0cnVjdHVyZSBwYWRkaW5nIHRoYXQgbWF5IGJlIHVzZWQgaW4gdGhlIGZ1dHVyZS4g TXVzdCBiZSAwLgo+Pj4+Pj4+PiArCSAqLwo+Pj4+Pj4+PiAgCV9fdTMyIHBhZDsKPj4+Pj4+Pj4g Kwo+Pj4+Pj4+PiArCS8qKgo+Pj4+Pj4+PiArCSAqIEBvZmZzZXQ6Cj4+Pj4+Pj4+ICsJICoKPj4+ Pj4+Pj4gKwkgKiBUaGUgbW1hcCBvZmZzZXQgZm9yIHRoZSBnaXZlbiBHRU0gb2JqZWN0LiBTZXQg YnkgdGhlIGtlcm5lbCB1cG9uCj4+Pj4+Pj4+ICsJICogc3VjY2Vzc2Z1bCBjb21wbGV0aW9uIG9m IHRoZSBJT0NUTC4KPj4+Pj4+Pj4gKwkgKi8KPj4+Pj4+Pj4gIAlfX3U2NCBvZmZzZXQ7Cj4+Pj4+ Pj4+ICB9Owo+Pj4+Pj4+PiAgCj4+Pj4+Pj4+ICsvKioKPj4+Pj4+Pj4gKyAqIHN0cnVjdCBkcm1f dGVncmFfc3luY3B0X3JlYWQgLSBwYXJhbWV0ZXJzIGZvciB0aGUgcmVhZCBzeW5jcG9pbnQgSU9D VEwKPj4+Pj4+Pj4gKyAqLwo+Pj4+Pj4+PiAgc3RydWN0IGRybV90ZWdyYV9zeW5jcHRfcmVhZCB7 Cj4+Pj4+Pj4+ICsJLyoqCj4+Pj4+Pj4+ICsJICogQGlkOgo+Pj4+Pj4+PiArCSAqCj4+Pj4+Pj4+ ICsJICogSUQgb2YgdGhlIHN5bmNwb2ludCB0byByZWFkIHRoZSBjdXJyZW50IHZhbHVlIGZyb20u Cj4+Pj4+Pj4+ICsJICovCj4+Pj4+Pj4+ICAJX191MzIgaWQ7Cj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4g KwkvKioKPj4+Pj4+Pj4gKwkgKiBAdmFsdWU6Cj4+Pj4+Pj4+ICsJICoKPj4+Pj4+Pj4gKwkgKiBU aGUgY3VycmVudCBzeW5jcG9pbnQgdmFsdWUuIFNldCBieSB0aGUga2VybmVsIHVwb24gc3VjY2Vz c2Z1bAo+Pj4+Pj4+PiArCSAqIGNvbXBsZXRpb24gb2YgdGhlIElPQ1RMLgo+Pj4+Pj4+PiArCSAq Lwo+Pj4+Pj4+PiAgCV9fdTMyIHZhbHVlOwo+Pj4+Pj4+PiAgfTsKPj4+Pj4+Pj4gIAo+Pj4+Pj4+ PiArLyoqCj4+Pj4+Pj4+ICsgKiBzdHJ1Y3QgZHJtX3RlZ3JhX3N5bmNwdF9pbmNyIC0gcGFyYW1l dGVycyBmb3IgdGhlIGluY3JlbWVudCBzeW5jcG9pbnQgSU9DVEwKPj4+Pj4+Pj4gKyAqLwo+Pj4+ Pj4+PiAgc3RydWN0IGRybV90ZWdyYV9zeW5jcHRfaW5jciB7Cj4+Pj4+Pj4+ICsJLyoqCj4+Pj4+ Pj4+ICsJICogQGlkOgo+Pj4+Pj4+PiArCSAqCj4+Pj4+Pj4+ICsJICogSUQgb2YgdGhlIHN5bmNw b2ludCB0byBpbmNyZW1lbnQuCj4+Pj4+Pj4+ICsJICovCj4+Pj4+Pj4+ICAJX191MzIgaWQ7Cj4+ Pj4+Pj4+ICsKPj4+Pj4+Pj4gKwkvKioKPj4+Pj4+Pj4gKwkgKiBAcGFkOgo+Pj4+Pj4+PiArCSAq Cj4+Pj4+Pj4+ICsJICogU3RydWN0dXJlIHBhZGRpbmcgdGhhdCBtYXkgYmUgdXNlZCBpbiB0aGUg ZnV0dXJlLiBNdXN0IGJlIDAuCj4+Pj4+Pj4+ICsJICovCj4+Pj4+Pj4+ICAJX191MzIgcGFkOwo+ Pj4+Pj4+PiAgfTsKPj4+Pj4+Pj4gIAo+Pj4+Pj4+PiArLyoqCj4+Pj4+Pj4+ICsgKiBzdHJ1Y3Qg ZHJtX3RlZ3JhX3N5bmNwdF93YWl0IC0gcGFyYW1ldGVycyBmb3IgdGhlIHdhaXQgc3luY3BvaW50 IElPQ1RMCj4+Pj4+Pj4+ICsgKi8KPj4+Pj4+Pj4gIHN0cnVjdCBkcm1fdGVncmFfc3luY3B0X3dh aXQgewo+Pj4+Pj4+PiArCS8qKgo+Pj4+Pj4+PiArCSAqIEBpZDoKPj4+Pj4+Pj4gKwkgKgo+Pj4+ Pj4+PiArCSAqIElEIG9mIHRoZSBzeW5jcG9pbnQgdG8gd2FpdCBvbi4KPj4+Pj4+Pj4gKwkgKi8K Pj4+Pj4+Pj4gIAlfX3UzMiBpZDsKPj4+Pj4+Pj4gKwo+Pj4+Pj4+PiArCS8qKgo+Pj4+Pj4+PiAr CSAqIEB0aHJlc2g6Cj4+Pj4+Pj4+ICsJICoKPj4+Pj4+Pj4gKwkgKiBUaHJlc2hvbGQgdmFsdWUg Zm9yIHdoaWNoIHRvIHdhaXQuCj4+Pj4+Pj4+ICsJICovCj4+Pj4+Pj4+ICAJX191MzIgdGhyZXNo Owo+Pj4+Pj4+PiArCj4+Pj4+Pj4+ICsJLyoqCj4+Pj4+Pj4+ICsJICogQHRpbWVvdXQ6Cj4+Pj4+ Pj4+ICsJICoKPj4+Pj4+Pj4gKwkgKiBUaW1lb3V0LCBpbiBtaWxsaXNlY29uZHMsIHRvIHdhaXQu Cj4+Pj4+Pj4+ICsJICovCj4+Pj4+Pj4+ICAJX191MzIgdGltZW91dDsKPj4+Pj4+Pj4gKwo+Pj4+ Pj4+PiArCS8qKgo+Pj4+Pj4+PiArCSAqIEB2YWx1ZToKPj4+Pj4+Pj4gKwkgKgo+Pj4+Pj4+PiAr CSAqIFRoZSBuZXcgc3luY3BvaW50IHZhbHVlIGFmdGVyIHRoZSB3YWl0LiBTZXQgYnkgdGhlIGtl cm5lbCB1cG9uCj4+Pj4+Pj4+ICsJICogc3VjY2Vzc2Z1bCBjb21wbGV0aW9uIG9mIHRoZSBJT0NU TC4KPj4+Pj4+Pj4gKwkgKi8KPj4+Pj4+Pj4gIAlfX3UzMiB2YWx1ZTsKPj4+Pj4+Pj4gIH07Cj4+ Pj4+Pj4+ICAKPj4+Pj4+Pj4gICNkZWZpbmUgRFJNX1RFR1JBX05PX1RJTUVPVVQJKDB4ZmZmZmZm ZmYpCj4+Pj4+Pj4+ICAKPj4+Pj4+Pj4gKy8qKgo+Pj4+Pj4+PiArICogc3RydWN0IGRybV90ZWdy YV9vcGVuX2NoYW5uZWwgLSBwYXJhbWV0ZXJzIGZvciB0aGUgb3BlbiBjaGFubmVsIElPQ1RMCj4+ Pj4+Pj4+ICsgKi8KPj4+Pj4+Pj4gIHN0cnVjdCBkcm1fdGVncmFfb3Blbl9jaGFubmVsIHsKPj4+ Pj4+Pj4gKwkvKioKPj4+Pj4+Pj4gKwkgKiBAY2xpZW50Ogo+Pj4+Pj4+PiArCSAqCj4+Pj4+Pj4+ ICsJICogVGhlIGNsaWVudCBJRCBmb3IgdGhpcyBjaGFubmVsLgo+Pj4+Pj4+PiArCSAqLwo+Pj4+ Pj4+PiAgCV9fdTMyIGNsaWVudDsKPj4+Pj4+Pj4gKwo+Pj4+Pj4+PiArCS8qKgo+Pj4+Pj4+PiAr CSAqIEBwYWQ6Cj4+Pj4+Pj4+ICsJICoKPj4+Pj4+Pj4gKwkgKiBTdHJ1Y3R1cmUgcGFkZGluZyB0 aGF0IG1heSBiZSB1c2VkIGluIHRoZSBmdXR1cmUuIE11c3QgYmUgMC4KPj4+Pj4+Pj4gKwkgKi8K Pj4+Pj4+Pj4gIAlfX3UzMiBwYWQ7Cj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4gKwkvKioKPj4+Pj4+Pj4g KwkgKiBAY29udGV4dDoKPj4+Pj4+Pj4gKwkgKgo+Pj4+Pj4+PiArCSAqIFRoZSBhcHBsaWNhdGlv biBjb250ZXh0IG9mIHRoaXMgY2hhbm5lbC4gU2V0IGJ5IHRoZSBrZXJuZWwgdXBvbgo+Pj4+Pj4+ PiArCSAqIHN1Y2Nlc3NmdWwgY29tcGxldGlvbiBvZiB0aGUgSU9DVEwuIFRoaXMgY29udGV4dCBu ZWVkcyB0byBiZSBwYXNzZWQKPj4+Pj4+Pj4gKwkgKiB0byB0aGUgRFJNX1RFR1JBX0NIQU5ORUxf Q0xPU0Ugb3IgdGhlIERSTV9URUdSQV9TVUJNSVQgSU9DVExzLgo+Pj4+Pj4+PiArCSAqLwo+Pj4+ Pj4+PiAgCV9fdTY0IGNvbnRleHQ7Cj4+Pj4+Pj4+ICB9Owo+Pj4+Pj4+PiAgCj4+Pj4+Pj4+ICsv KioKPj4+Pj4+Pj4gKyAqIHN0cnVjdCBkcm1fdGVncmFfY2xvc2VfY2hhbm5lbCAtIHBhcmFtZXRl cnMgZm9yIHRoZSBjbG9zZSBjaGFubmVsIElPQ1RMCj4+Pj4+Pj4+ICsgKi8KPj4+Pj4+Pj4gIHN0 cnVjdCBkcm1fdGVncmFfY2xvc2VfY2hhbm5lbCB7Cj4+Pj4+Pj4+ICsJLyoqCj4+Pj4+Pj4+ICsJ ICogQGNvbnRleHQ6Cj4+Pj4+Pj4+ICsJICoKPj4+Pj4+Pj4gKwkgKiBUaGUgYXBwbGljYXRpb24g Y29udGV4dCBvZiB0aGlzIGNoYW5uZWwuIFRoaXMgaXMgb2J0YWluZWQgZnJvbSB0aGUKPj4+Pj4+ Pj4gKwkgKiBEUk1fVEVHUkFfT1BFTl9DSEFOTkVMIElPQ1RMLgo+Pj4+Pj4+PiArCSAqLwo+Pj4+ Pj4+PiAgCV9fdTY0IGNvbnRleHQ7Cj4+Pj4+Pj4+ICB9Owo+Pj4+Pj4+PiAgCj4+Pj4+Pj4+ICsv KioKPj4+Pj4+Pj4gKyAqIHN0cnVjdCBkcm1fdGVncmFfZ2V0X3N5bmNwdCAtIHBhcmFtZXRlcnMg Zm9yIHRoZSBnZXQgc3luY3BvaW50IElPQ1RMCj4+Pj4+Pj4+ICsgKi8KPj4+Pj4+Pj4gIHN0cnVj dCBkcm1fdGVncmFfZ2V0X3N5bmNwdCB7Cj4+Pj4+Pj4+ICsJLyoqCj4+Pj4+Pj4+ICsJICogQGNv bnRleHQ6Cj4+Pj4+Pj4+ICsJICoKPj4+Pj4+Pj4gKwkgKiBUaGUgYXBwbGljYXRpb24gY29udGV4 dCBpZGVudGlmeWluZyB0aGUgY2hhbm5lbCBmb3Igd2hpY2ggdG8gb2J0YWluCj4+Pj4+Pj4+ICsJ ICogdGhlIHN5bmNwb2ludCBJRC4KPj4+Pj4+Pj4gKwkgKi8KPj4+Pj4+Pj4gIAlfX3U2NCBjb250 ZXh0Owo+Pj4+Pj4+PiArCj4+Pj4+Pj4+ICsJLyoqCj4+Pj4+Pj4+ICsJICogQGluZGV4Ogo+Pj4+ Pj4+PiArCSAqCj4+Pj4+Pj4+ICsJICogSW5kZXggb2YgdGhlIGNsaWVudCBzeW5jcG9pbnQgZm9y IHdoaWNoIHRvIG9idGFpbiB0aGUgSUQuCj4+Pj4+Pj4+ICsJICovCj4+Pj4+Pj4+ICAJX191MzIg aW5kZXg7Cj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4gKwkvKioKPj4+Pj4+Pj4gKwkgKiBAaWQ6Cj4+Pj4+ Pj4+ICsJICoKPj4+Pj4+Pj4gKwkgKiBUaGUgSUQgb2YgdGhlIGdpdmVuIHN5bmNwb2ludC4gU2V0 IGJ5IHRoZSBrZXJuZWwgdXBvbiBzdWNjZXNzZnVsCj4+Pj4+Pj4+ICsJICogY29tcGxldGlvbiBv ZiB0aGUgSU9DVEwuCj4+Pj4+Pj4+ICsJICovCj4+Pj4+Pj4+ICAJX191MzIgaWQ7Cj4+Pj4+Pj4+ ICB9Owo+Pj4+Pj4+PiAgCj4+Pj4+Pj4+ICsvKioKPj4+Pj4+Pj4gKyAqIHN0cnVjdCBkcm1fdGVn cmFfZ2V0X3N5bmNwdF9iYXNlIC0gcGFyYW1ldGVycyBmb3IgdGhlIGdldCB3YWl0IGJhc2UgSU9D VEwKPj4+Pj4+Pj4gKyAqLwo+Pj4+Pj4+PiAgc3RydWN0IGRybV90ZWdyYV9nZXRfc3luY3B0X2Jh c2Ugewo+Pj4+Pj4+PiArCS8qKgo+Pj4+Pj4+PiArCSAqIEBjb250ZXh0Ogo+Pj4+Pj4+PiArCSAq Cj4+Pj4+Pj4+ICsJICogVGhlIGFwcGxpY2F0aW9uIGNvbnRleHQgaWRlbnRpZnlpbmcgZm9yIHdo aWNoIGNoYW5uZWwgdG8gb2J0YWluIHRoZQo+Pj4+Pj4+PiArCSAqIHdhaXQgYmFzZS4KPj4+Pj4+ Pj4gKwkgKi8KPj4+Pj4+Pj4gIAlfX3U2NCBjb250ZXh0Owo+Pj4+Pj4+PiArCj4+Pj4+Pj4+ICsJ LyoqCj4+Pj4+Pj4+ICsJICogQHN5bmNwdDoKPj4+Pj4+Pj4gKwkgKgo+Pj4+Pj4+PiArCSAqIElE IG9mIHRoZSBzeW5jcG9pbnQgZm9yIHdoaWNoIHRvIG9idGFpbiB0aGUgd2FpdCBiYXNlLgo+Pj4+ Pj4+PiArCSAqLwo+Pj4+Pj4+PiAgCV9fdTMyIHN5bmNwdDsKPj4+Pj4+Pj4gKwo+Pj4+Pj4+PiAr CS8qKgo+Pj4+Pj4+PiArCSAqIEBpZDoKPj4+Pj4+Pj4gKwkgKgo+Pj4+Pj4+PiArCSAqIFRoZSBJ RCBvZiB0aGUgd2FpdCBiYXNlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGNsaWVudCBzeW5jcG9pbnQu IFNldAo+Pj4+Pj4+PiArCSAqIGJ5IHRoZSBrZXJuZWwgdXBvbiBzdWNjZXNzZnVsIGNvbXBsZXRp b24gb2YgdGhlIElPQ1RMLgo+Pj4+Pj4+PiArCSAqLwo+Pj4+Pj4+PiAgCV9fdTMyIGlkOwo+Pj4+ Pj4+PiAgfTsKPj4+Pj4+Pj4gIAo+Pj4+Pj4+PiArLyoqCj4+Pj4+Pj4+ICsgKiBzdHJ1Y3QgZHJt X3RlZ3JhX3N5bmNwdCAtIHN5bmNwb2ludCBpbmNyZW1lbnQgb3BlcmF0aW9uCj4+Pj4+Pj4+ICsg Ki8KPj4+Pj4+Pj4gIHN0cnVjdCBkcm1fdGVncmFfc3luY3B0IHsKPj4+Pj4+Pj4gKwkvKioKPj4+ Pj4+Pj4gKwkgKiBAaWQ6Cj4+Pj4+Pj4+ICsJICoKPj4+Pj4+Pj4gKwkgKiBJRCBvZiB0aGUgc3lu Y3BvaW50IHRvIG9wZXJhdGUgb24uCj4+Pj4+Pj4+ICsJICovCj4+Pj4+Pj4+ICAJX191MzIgaWQ7 Cj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4gKwkvKioKPj4+Pj4+Pj4gKwkgKiBAaW5jcnM6Cj4+Pj4+Pj4+ ICsJICoKPj4+Pj4+Pj4gKwkgKiBOdW1iZXIgb2YgaW5jcmVtZW50cyB0byBwZXJmb3JtIGZvciB0 aGUgc3luY3BvaW50Lgo+Pj4+Pj4+PiArCSAqLwo+Pj4+Pj4+PiAgCV9fdTMyIGluY3JzOwo+Pj4+ Pj4+PiAgfTsKPj4+Pj4+Pj4gIAo+Pj4+Pj4+PiArLyoqCj4+Pj4+Pj4+ICsgKiBzdHJ1Y3QgZHJt X3RlZ3JhX2NtZGJ1ZiAtIHN0cnVjdHVyZSBkZXNjcmliaW5nIGEgY29tbWFuZCBidWZmZXIKPj4+ Pj4+Pj4gKyAqLwo+Pj4+Pj4+PiAgc3RydWN0IGRybV90ZWdyYV9jbWRidWYgewo+Pj4+Pj4+PiAr CS8qKgo+Pj4+Pj4+PiArCSAqIEBoYW5kbGU6Cj4+Pj4+Pj4+ICsJICoKPj4+Pj4+Pj4gKwkgKiBI YW5kbGUgdG8gYSBHRU0gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGNvbW1hbmQgYnVmZmVyLgo+Pj4+ Pj4+PiArCSAqLwo+Pj4+Pj4+PiAgCV9fdTMyIGhhbmRsZTsKPj4+Pj4+Pj4gKwo+Pj4+Pj4+PiAr CS8qKgo+Pj4+Pj4+PiArCSAqIEBvZmZzZXQ6Cj4+Pj4+Pj4+ICsJICoKPj4+Pj4+Pj4gKwkgKiBP ZmZzZXQsIGluIGJ5dGVzLCBpbnRvIHRoZSBHRU0gb2JqZWN0IGlkZW50aWZpZWQgYnkgQGhhbmRs ZSBhdAo+Pj4+Pj4+PiArCSAqIHdoaWNoIHRoZSBjb21tYW5kIGJ1ZmZlciBzdGFydHMuCj4+Pj4+ Pj4+ICsJICovCj4+Pj4+Pj4+ICAJX191MzIgb2Zmc2V0Owo+Pj4+Pj4+PiArCj4+Pj4+Pj4+ICsJ LyoqCj4+Pj4+Pj4+ICsJICogQHdvcmRzOgo+Pj4+Pj4+PiArCSAqCj4+Pj4+Pj4+ICsJICogTnVt YmVyIG9mIDMyLWJpdCB3b3JkcyBpbiB0aGlzIGNvbW1hbmQgYnVmZmVyLgo+Pj4+Pj4+PiArCSAq Lwo+Pj4+Pj4+PiAgCV9fdTMyIHdvcmRzOwo+Pj4+Pj4+PiArCj4+Pj4+Pj4+ICsJLyoqCj4+Pj4+ Pj4+ICsJICogQHBhZDoKPj4+Pj4+Pj4gKwkgKgo+Pj4+Pj4+PiArCSAqIFN0cnVjdHVyZSBwYWRk aW5nIHRoYXQgbWF5IGJlIHVzZWQgaW4gdGhlIGZ1dHVyZS4gTXVzdCBiZSAwLgo+Pj4+Pj4+PiAr CSAqLwo+Pj4+Pj4+PiAgCV9fdTMyIHBhZDsKPj4+Pj4+Pj4gIH07Cj4+Pj4+Pj4+ICAKPj4+Pj4+ Pj4gKy8qKgo+Pj4+Pj4+PiArICogc3RydWN0IGRybV90ZWdyYV9yZWxvYyAtIEdFTSBvYmplY3Qg cmVsb2NhdGlvbiBzdHJ1Y3R1cmUKPj4+Pj4+Pj4gKyAqLwo+Pj4+Pj4+PiAgc3RydWN0IGRybV90 ZWdyYV9yZWxvYyB7Cj4+Pj4+Pj4+ICAJc3RydWN0IHsKPj4+Pj4+Pj4gKwkJLyoqCj4+Pj4+Pj4+ ICsJCSAqIEBjbWRidWYuaGFuZGxlOgo+Pj4+Pj4+PiArCQkgKgo+Pj4+Pj4+PiArCQkgKiBIYW5k bGUgdG8gdGhlIEdFTSBvYmplY3QgY29udGFpbmluZyB0aGUgY29tbWFuZCBidWZmZXIgZm9yCj4+ Pj4+Pj4+ICsJCSAqIHdoaWNoIHRvIHBlcmZvcm0gdGhpcyBHRU0gb2JqZWN0IHJlbG9jYXRpb24u Cj4+Pj4+Pj4+ICsJCSAqLwo+Pj4+Pj4+PiAgCQlfX3UzMiBoYW5kbGU7Cj4+Pj4+Pj4+ICsKPj4+ Pj4+Pj4gKwkJLyoqCj4+Pj4+Pj4+ICsJCSAqIEBjbWRidWYub2Zmc2V0Ogo+Pj4+Pj4+PiArCQkg Kgo+Pj4+Pj4+PiArCQkgKiBPZmZzZXQsIGluIGJ5dGVzLCBpbnRvIHRoZSBjb21tYW5kIGJ1ZmZl ciBhdCB3aGljaCB0bwo+Pj4+Pj4+PiArCQkgKiBpbnNlcnQgdGhlIHJlbG9jYXRlZCBhZGRyZXNz Lgo+Pj4+Pj4+PiArCQkgKi8KPj4+Pj4+Pj4gIAkJX191MzIgb2Zmc2V0Owo+Pj4+Pj4+PiAgCX0g Y21kYnVmOwo+Pj4+Pj4+PiAgCXN0cnVjdCB7Cj4+Pj4+Pj4+ICsJCS8qKgo+Pj4+Pj4+PiArCQkg KiBAdGFyZ2V0LmhhbmRsZToKPj4+Pj4+Pj4gKwkJICoKPj4+Pj4+Pj4gKwkJICogSGFuZGxlIHRv IHRoZSBHRU0gb2JqZWN0IHRvIGJlIHJlbG9jYXRlZC4KPj4+Pj4+Pj4gKwkJICovCj4+Pj4+Pj4+ ICAJCV9fdTMyIGhhbmRsZTsKPj4+Pj4+Pj4gKwo+Pj4+Pj4+PiArCQkvKioKPj4+Pj4+Pj4gKwkJ ICogQHRhcmdldC5vZmZzZXQ6Cj4+Pj4+Pj4+ICsJCSAqCj4+Pj4+Pj4+ICsJCSAqIE9mZnNldCwg aW4gYnl0ZXMsIGludG8gdGhlIHRhcmdldCBHRU0gb2JqZWN0IGF0IHdoaWNoIHRoZQo+Pj4+Pj4+ PiArCQkgKiByZWxvY2F0ZWQgZGF0YSBzdGFydHMuCj4+Pj4+Pj4+ICsJCSAqLwo+Pj4+Pj4+PiAg CQlfX3UzMiBvZmZzZXQ7Cj4+Pj4+Pj4+ICAJfSB0YXJnZXQ7Cj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4g KwkvKioKPj4+Pj4+Pj4gKwkgKiBAc2hpZnQ6Cj4+Pj4+Pj4+ICsJICoKPj4+Pj4+Pj4gKwkgKiBU aGUgbnVtYmVyIG9mIGJpdHMgYnkgd2hpY2ggdG8gc2hpZnQgcmVsb2NhdGVkIGFkZHJlc3Nlcy4K Pj4+Pj4+Pj4gKwkgKi8KPj4+Pj4+Pj4gIAlfX3UzMiBzaGlmdDsKPj4+Pj4+Pj4gKwo+Pj4+Pj4+ PiArCS8qKgo+Pj4+Pj4+PiArCSAqIEBwYWQ6Cj4+Pj4+Pj4+ICsJICoKPj4+Pj4+Pj4gKwkgKiBT dHJ1Y3R1cmUgcGFkZGluZyB0aGF0IG1heSBiZSB1c2VkIGluIHRoZSBmdXR1cmUuIE11c3QgYmUg MC4KPj4+Pj4+Pj4gKwkgKi8KPj4+Pj4+Pj4gIAlfX3UzMiBwYWQ7Cj4+Pj4+Pj4+ICB9Owo+Pj4+ Pj4+PiAgCj4+Pj4+Pj4+ICsvKioKPj4+Pj4+Pj4gKyAqIHN0cnVjdCBkcm1fdGVncmFfd2FpdGNo ayAtIHdhaXQgY2hlY2sgc3RydWN0dXJlCj4+Pj4+Pj4+ICsgKi8KPj4+Pj4+Pj4gIHN0cnVjdCBk cm1fdGVncmFfd2FpdGNoayB7Cj4+Pj4+Pj4+ICsJLyoqCj4+Pj4+Pj4+ICsJICogQGhhbmRsZToK Pj4+Pj4+Pj4gKwkgKgo+Pj4+Pj4+PiArCSAqIEhhbmRsZSB0byB0aGUgR0VNIG9iamVjdCBjb250 YWluaW5nIGEgY29tbWFuZCBzdHJlYW0gb24gd2hpY2ggdG8KPj4+Pj4+Pj4gKwkgKiBwZXJmb3Jt IHRoZSB3YWl0IGNoZWNrLgo+Pj4+Pj4+PiArCSAqLwo+Pj4+Pj4+PiAgCV9fdTMyIGhhbmRsZTsK Pj4+Pj4+Pj4gKwo+Pj4+Pj4+PiArCS8qKgo+Pj4+Pj4+PiArCSAqIEBvZmZzZXQ6Cj4+Pj4+Pj4+ ICsJICoKPj4+Pj4+Pj4gKwkgKiBPZmZzZXQsIGluIGJ5dGVzLCBvZiB0aGUgbG9jYXRpb24gaW4g dGhlIGNvbW1hbmQgc3RyZWFtIHRvIHBlcmZvcm0KPj4+Pj4+Pj4gKwkgKiB0aGUgd2FpdCBjaGVj ayBvbi4KPj4+Pj4+Pj4gKwkgKi8KPj4+Pj4+Pj4gIAlfX3UzMiBvZmZzZXQ7Cj4+Pj4+Pj4+ICsK Pj4+Pj4+Pj4gKwkvKioKPj4+Pj4+Pj4gKwkgKiBAc3luY3B0Ogo+Pj4+Pj4+PiArCSAqCj4+Pj4+ Pj4+ICsJICogSUQgb2YgdGhlIHN5bmNwb2ludCB0byB3YWl0IGNoZWNrLgo+Pj4+Pj4+PiArCSAq Lwo+Pj4+Pj4+PiAgCV9fdTMyIHN5bmNwdDsKPj4+Pj4+Pj4gKwo+Pj4+Pj4+PiArCS8qKgo+Pj4+ Pj4+PiArCSAqIEB0aHJlc2g6Cj4+Pj4+Pj4+ICsJICoKPj4+Pj4+Pj4gKwkgKiBUaHJlc2hvbGQg dmFsdWUgZm9yIHdoaWNoIHRvIGNoZWNrLgo+Pj4+Pj4+PiArCSAqLwo+Pj4+Pj4+PiAgCV9fdTMy IHRocmVzaDsKPj4+Pj4+Pj4gIH07Cj4+Pj4+Pj4+ICAKPj4+Pj4+Pj4gKy8qKgo+Pj4+Pj4+PiAr ICogc3RydWN0IGRybV90ZWdyYV9zdWJtaXQgLSBqb2Igc3VibWlzc2lvbiBzdHJ1Y3R1cmUKPj4+ Pj4+Pj4gKyAqLwo+Pj4+Pj4+PiAgc3RydWN0IGRybV90ZWdyYV9zdWJtaXQgewo+Pj4+Pj4+PiAr CS8qKgo+Pj4+Pj4+PiArCSAqIEBjb250ZXh0Ogo+Pj4+Pj4+PiArCSAqCj4+Pj4+Pj4+ICsJICog VGhlIGFwcGxpY2F0aW9uIGNvbnRleHQgaWRlbnRpZnlpbmcgdGhlIGNoYW5uZWwgdG8gdXNlIGZv ciB0aGUKPj4+Pj4+Pj4gKwkgKiBleGVjdXRpb24gb2YgdGhpcyBqb2IuCj4+Pj4+Pj4+ICsJICov Cj4+Pj4+Pj4+ICAJX191NjQgY29udGV4dDsKPj4+Pj4+Pj4gKwo+Pj4+Pj4+PiArCS8qKgo+Pj4+ Pj4+PiArCSAqIEBudW1fc3luY3B0czoKPj4+Pj4+Pj4gKwkgKgo+Pj4+Pj4+PiArCSAqIFRoZSBu dW1iZXIgb2Ygc3luY3BvaW50cyBvcGVyYXRlZCBvbiBieSB0aGlzIGpvYi4KPj4+Pj4+Pj4gKwkg Ki8KPj4+Pj4+Pj4gIAlfX3UzMiBudW1fc3luY3B0czsKPj4+Pj4+Pj4gKwo+Pj4+Pj4+PiArCS8q Kgo+Pj4+Pj4+PiArCSAqIEBudW1fY21kYnVmczoKPj4+Pj4+Pj4gKwkgKgo+Pj4+Pj4+PiArCSAq IFRoZSBudW1iZXIgb2YgY29tbWFuZCBidWZmZXJzIHRvIGV4ZWN1dGUgYXMgcGFydCBvZiB0aGlz IGpvYi4KPj4+Pj4+Pj4gKwkgKi8KPj4+Pj4+Pj4gIAlfX3UzMiBudW1fY21kYnVmczsKPj4+Pj4+ Pj4gKwo+Pj4+Pj4+PiArCS8qKgo+Pj4+Pj4+PiArCSAqIEBudW1fcmVsb2NzOgo+Pj4+Pj4+PiAr CSAqCj4+Pj4+Pj4+ICsJICogVGhlIG51bWJlciBvZiByZWxvY2F0aW9ucyB0byBwZXJmb3JtIGJl Zm9yZSBleGVjdXRpbmcgdGhpcyBqb2IuCj4+Pj4+Pj4+ICsJICovCj4+Pj4+Pj4+ICAJX191MzIg bnVtX3JlbG9jczsKPj4+Pj4+Pj4gKwo+Pj4+Pj4+PiArCS8qKgo+Pj4+Pj4+PiArCSAqIEBudW1f d2FpdGNoa3M6Cj4+Pj4+Pj4+ICsJICoKPj4+Pj4+Pj4gKwkgKiBUaGUgbnVtYmVyIG9mIHdhaXQg Y2hlY2tzIHRvIHBlcmZvcm0gYXMgcGFydCBvZiB0aGlzIGpvYi4KPj4+Pj4+Pj4gKwkgKi8KPj4+ Pj4+Pj4gIAlfX3UzMiBudW1fd2FpdGNoa3M7Cj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4gKwkvKioKPj4+ Pj4+Pj4gKwkgKiBAd2FpdGNoa19tYXNrOgo+Pj4+Pj4+PiArCSAqCj4+Pj4+Pj4+ICsJICogQml0 bWFzayBvZiB2YWxpZCB3YWl0IGNoZWNrcy4KPj4+Pj4+Pj4gKwkgKi8KPj4+Pj4+Pj4gIAlfX3Uz MiB3YWl0Y2hrX21hc2s7Cj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4gKwkvKioKPj4+Pj4+Pj4gKwkgKiBA dGltZW91dDoKPj4+Pj4+Pj4gKwkgKgo+Pj4+Pj4+PiArCSAqIFRpbWVvdXQsIGluIG1pbGxpc2Vj b25kcywgYmVmb3JlIHRoaXMgam9iIGlzIGNhbmNlbGxlZC4KPj4+Pj4+Pj4gKwkgKi8KPj4+Pj4+ Pj4gIAlfX3UzMiB0aW1lb3V0Owo+Pj4+Pj4+PiArCj4+Pj4+Pj4+ICsJLyoqCj4+Pj4+Pj4+ICsJ ICogQHN5bmNwdHM6Cj4+Pj4+Pj4+ICsJICoKPj4+Pj4+Pj4gKwkgKiBBIHBvaW50ZXIgdG8gQG51 bV9zeW5jcHRzICZzdHJ1Y3QgZHJtX3RlZ3JhX3N5bmNwdCBzdHJ1Y3R1cmVzIHRoYXQKPj4+Pj4+ Pgo+Pj4+Pj4+IEknbSBub3Qgc3VyZSB3aGV0aGVyIHRoaXMgInBvaW50ZXIgdG8gQG51bV9zeW5j cHRzIiBtYWtlcyBzZW5zZSwgc2hvdWxkbid0IGl0IGJlOgo+Pj4+Pj4+Cj4+Pj4+Pj4gCUEgcG9p bnRlciB0byAmc3RydWN0IGRybV90ZWdyYV9zeW5jcHQgc3RydWN0dXJlcyB0aGF0Li4uCj4+Pj4+ Pj4KPj4+Pj4+PiA/Cj4+Pj4+Pj4KPj4+Pj4+PiBTYW1lIGZvciB0aGUgQGNtZGJ1ZnMvQHJlbG9j cy9Ad2FpdGNoa3MgbWVtYmVycy4KPj4+Pj4+Cj4+Pj4+PiBJIHdhbnRlZCB0byBoYXZlIHRoZSBy ZWZlcmVuY2VzIHRvIHRob3NlIGZpZWxkcyBpbiB0aGUgdGV4dCBzbyB0aGF0IGl0Cj4+Pj4+PiBi ZWNvbWVzIG9idmlvdXMgdGhhdCBudW1fc3luY3B0cyBkZWZpbmVzIHRoZSBudW1iZXIgb2YgZW50 cmllcyBpbiB0aGlzCj4+Pj4+PiBzeW5jcHRzIGFycmF5Lgo+Pj4+Pj4KPj4+Pj4+IFBlcmhhcHMg YSBiZXR0ZXIgZm9ybXVsYXRpb24gd291bGQgYmU6Cj4+Pj4+Pgo+Pj4+Pj4gCUEgcG9pbnRlciB0 byBhbiBhcnJheSBvZiBAbnVtX3N5bmNwdHMgJnN0cnVjdCBkcm1fdGVncmFfc3luY3B0Cj4+Pj4+ PiAJc3RydWN0dXJlIHRoYXQuLi4KPj4+Pj4+Cj4+Pj4+PiA/Cj4+Pj4KPj4+PiBUaGF0IHZhcmlh bnQgaXMgZ29vZCB0byBtZS4KPj4+Pgo+Pj4+Pgo+Pj4+PiBBbm90aGVyIGFsdGVybmF0aXZlIG1h eSBiZToKPj4+Pj4KPj4+Pj4gCS8qKgo+Pj4+PiAJICogQHN5bmNwdHM6Cj4+Pj4+IAkgKgo+Pj4+ PiAJICogQSBwb2ludGVyIHRvIGFuIGFycmF5IG9mICZzdHJ1Y3QgZHJtX3RlZ3JhX3N5bmNwdCBz dHJ1Y3R1cmUgdGhhdAo+Pj4+PiAJICogc3BlY2lmeSB0aGUgc3luY3BvaW50IG9wZXJhdGlvbnMg cGVyZm9ybWVkIGFzIHBhcnQgb2YgdGhpcyBqb2IuCj4+Pj4+IAkgKiBUaGUgbnVtYmVyIG9mIGVs ZW1lbnRzIGluIHRoZSBhcnJheSBtdXN0IGJlIGVxdWFsIHRvIHRoZSB2YWx1ZQo+Pj4+PiAJICog Z2l2ZW4gYnkgQG51bV9zeW5jcHRzLgo+Pj4+PiAJICovCj4+Pj4+Cj4+Pj4+IFRoYXQncyBzbGln aHRseSBlYXNpZXIgdG8gcmVhZCBidXQgYWxzbyB2ZXJ5IGV4cGxpY2l0IGluIHJlbGF0aW5nIGJv dGgKPj4+Pj4gZmllbGRzIHRvIG9uZSBhbm90aGVyLiBQZXJoYXBzIGEgdHdvLXdheSBsaW5rIGNh biBiZSBlc3RhYmxpc2hlZCBieQo+Pj4+PiBhZGRpbmcgc29tZXRoaW5nIGxpa2UgdGhpcyB0byB0 aGUgZGVzY3JpcHRpb24gb2YgQG51bV9zeW5jcHRzOgo+Pj4+Pgo+Pj4+PiAJLyoqCj4+Pj4+IAkg KiBAbnVtX3N5bmNwdHM6Cj4+Pj4+IAkgKgo+Pj4+PiAJICogVGhlIG51bWJlciBvZiBzeW5jcG9p bnRzIG9wZXJhdGVkIG9uIGJ5IHRoaXMgam9iLiBUaGlzIGRlZmluZXMKPj4+Pj4gCSAqIHRoZSBs ZW5ndGggb2YgdGhlIGFycmF5IHBvaW50ZWQgdG8gYnkgQHN5bmNwdHMuCj4+Pj4+IAkgKi8KPj4+ Pgo+Pj4+IEJ1dCB0aGlzIHZhcmlhbnQgaXMgZXZlbiBiZXR0ZXIuCj4+Pj4KPj4+PiBJIGRvbid0 IG1pbmQgZWl0aGVyIHdheSwgY2hvb3NlIHdoYXQgeW91IHByZWZlci4KPj4+Cj4+PiBJIHdlbnQg d2l0aCB0aGUgbGF0dGVyLiBJJ3ZlIHVwZGF0ZWQgYWxsIG9mIHRoZXNlIGZpZWxkIGRlc2NyaXB0 aW9ucyBhbmQKPj4+IGFkZGVkIHlvdXIgUmV2aWV3ZWQtYnkuIFB1c2hlZCBldmVyeXRoaW5nIHRv IGRybS90ZWdyYS9mb3ItbmV4dCBhbmQgd2lsbAo+Pj4gc2VuZCBhIHB1bGwgcmVxdWVzdCBmb3Ig dGhhdCBicmFuY2ggc2hvcnRseS4KPj4KPj4gQXdlc29tZSEgSSB0aGluayBNaWtrbyB3YXMgZ29p bmcgdG8gbWFrZSBhIHBhdGNoIHRvIHRoZSB2YWxpZGF0aW9uIGJ1ZyBpbiB0aGUKPj4gc3VibWl0 IGNvZGUgdGhhdCBoZSBzcG90dGVkIHJlY2VudGx5LCBzbyBtYXliZSBpdCB3b3VsZCB3b3J0aCB0 byBwb3N0cG9uZSB0aGUKPj4gcHVsbCByZXF1ZXN0IGEgdGFkLgo+IAo+IFRoaXMgaXMgZm9yIHRo ZSBtYWluIGZlYXR1cmUgcHVsbCByZXF1ZXN0IGZvciB2NC4xOC1yYzEsIGZvciB3aGljaCB0aGUK PiBkZWFkbGluZSBpcyB1c3VhbGx5IC1yYzYgb2YgdGhlIHByZXZpb3VzIHZlcnNpb24sIHNvIHRo aXMgaXMgYWxyZWFkeQo+IGN1dHRpbmcgaXQgcmF0aGVyIGNsb3NlLiBJZiBNaWtrbyBoYXMgYSBi dWdmaXggcGF0Y2ggdGhhdCdzIHNvbWV0aGluZwo+IHRoYXQgY2FuIGdvIGludG8gYSBzZXBhcmF0 ZSAtZml4ZXMgcHVsbCByZXF1ZXN0LgoKT2theS4KX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vZHJpLWRldmVsCg==