From mboxrd@z Thu Jan 1 00:00:00 1970 From: Haneen Mohammed Subject: Re: [PATCH v2 5/5] drm/vkms: Implement CRC debugfs API Date: Wed, 18 Jul 2018 22:42:55 +0300 Message-ID: <20180718194255.GA7440@haneenDRM> References: <20180716182256.GY20303@art_vandelay> <20180716235220.GA12258@haneenDRM> <20180717204316.GA20303@art_vandelay> <20180717210503.GC20359@art_vandelay> <20180718162434.GA1417@haneenDRM> <20180718184418.GD20359@art_vandelay> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x231.google.com (mail-wm0-x231.google.com [IPv6:2a00:1450:400c:c09::231]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9D3BE6E38D for ; Wed, 18 Jul 2018 19:43:01 +0000 (UTC) Received: by mail-wm0-x231.google.com with SMTP id o11-v6so3877100wmh.2 for ; Wed, 18 Jul 2018 12:43:01 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20180718184418.GD20359@art_vandelay> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Sean Paul Cc: rodrigosiqueiramelo@gmail.com, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBKdWwgMTgsIDIwMTggYXQgMDI6NDQ6MThQTSAtMDQwMCwgU2VhbiBQYXVsIHdyb3Rl Ogo+IE9uIFdlZCwgSnVsIDE4LCAyMDE4IGF0IDA3OjI0OjM0UE0gKzAzMDAsIEhhbmVlbiBNb2hh bW1lZCB3cm90ZToKPiA+IEZpcnN0LCBqdXN0IHNvIHlvdSBoYXZlIHRoZSBjb21wbGV0ZSB2aWV3 LCB0aGlzIGlzIHRoZSBtaXNzaW5nIHBhcnQgaW4gdGhpcyBwYXRjaDoKPiA+IC0tLS0tLSB2a21z X2NyYy5jCj4gPiBzdGF0aWMgdWludDMyX3QgX3ZrbXNfZ2V0X2NyYyhzdHJ1Y3Qgdmttc19jcmNf ZGF0YSAqY3JjX2RhdGEpCj4gPiB7Cj4gPiAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSAm Y3JjX2RhdGEtPmZiOwo+ID4gCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2VtX29iaiA9IGRybV9n ZW1fZmJfZ2V0X29iaihmYiwgMCk7Cj4gPiAJc3RydWN0IHZrbXNfZ2VtX29iamVjdCAqdmttc19v YmogPSBkcm1fZ2VtX3RvX3ZrbXNfZ2VtKGdlbV9vYmopOwo+ID4gCXUzMiBjcmMgPSAwOwo+ID4g CWludCBpID0gMDsKPiA+IAl1bnNpZ25lZCBpbnQgeCA9IGNyY19kYXRhLT5zcmMueDEgPj4gMTY7 Cj4gPiAJdW5zaWduZWQgaW50IHkgPSBjcmNfZGF0YS0+c3JjLnkxID4+IDE2Owo+ID4gCXVuc2ln bmVkIGludCBoZWlnaHQgPSBkcm1fcmVjdF9oZWlnaHQoJmNyY19kYXRhLT5zcmMpID4+IDE2Owo+ ID4gCXVuc2lnbmVkIGludCB3aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZjcmNfZGF0YS0+c3JjKSA+ PiAxNjsKPiA+IAl1bnNpZ25lZCBpbnQgY3BwID0gZmItPmZvcm1hdC0+Y3BwWzBdOwo+ID4gCXVu c2lnbmVkIGludCBzcmNfb2Zmc2V0Owo+ID4gCXVuc2lnbmVkIGludCBzaXplX2J5dGUgPSB3aWR0 aCAqIGNwcDsKPiA+IAl2b2lkICp2YWRkciA9IHZrbXNfb2JqLT52YWRkcjsKPiA+IAo+ID4gCWlm IChXQVJOX09OKCF2YWRkcikpCj4gPiAJCXJldHVybiBjcmM7Cj4gPiAKPiA+IAlmb3IgKGkgPSB5 OyBpIDwgeSArIGhlaWdodDsgaSsrKSB7Cj4gPiAJCXNyY19vZmZzZXQgPSBmYi0+b2Zmc2V0c1sw XSArIChpICogZmItPnBpdGNoZXNbMF0pICsgKHggKiBjcHApOwo+ID4gCQljcmMgPSBjcmMzMl9s ZShjcmMsIHZhZGRyICsgc3JjX29mZnNldCwgc2l6ZV9ieXRlKTsKPiA+IAl9Cj4gPiAKPiA+IAly ZXR1cm4gY3JjOwo+ID4gfQo+ID4gCj4gPiB2b2lkIHZrbXNfY3JjX3dvcmtfaGFuZGxlKHN0cnVj dCB3b3JrX3N0cnVjdCAqd29yaykKPiA+IHsKPiA+IAlzdHJ1Y3Qgdmttc19jcnRjX3N0YXRlICpj cnRjX3N0YXRlID0gY29udGFpbmVyX29mKHdvcmssCj4gPiAJCQkJCQlzdHJ1Y3Qgdmttc19jcnRj X3N0YXRlLAo+ID4gCQkJCQkJY3JjX3dvcmspOwo+ID4gCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9 IGNydGNfc3RhdGUtPmJhc2UuY3J0YzsKPiA+IAlzdHJ1Y3Qgdmttc19vdXRwdXQgKm91dCA9IGRy bV9jcnRjX3RvX3ZrbXNfb3V0cHV0KGNydGMpOwo+ID4gCj4gPiAJaWYgKGNydGNfc3RhdGUgJiYg b3V0LT5jcmNfZW5hYmxlZCkgewo+ID4gCQl1MzIgY3JjMzIgPSBfdmttc19nZXRfY3JjKCZjcnRj X3N0YXRlLT5kYXRhKTsKPiA+IAkJdW5zaWduZWQgaW50IG5fZnJhbWUgPSBjcnRjX3N0YXRlLT5u X2ZyYW1lOwo+ID4gCj4gPiAJCWRybV9jcnRjX2FkZF9jcmNfZW50cnkoY3J0YywgdHJ1ZSwgbl9m cmFtZSwgJmNyYzMyKTsKPiA+IAl9Cj4gPiB9Cj4gPiAKPiA+IGludCB2a21zX3NldF9jcmNfc291 cmNlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywgY29uc3QgY2hhciAqc3JjX25hbWUsCj4gPiAJCQlz aXplX3QgKnZhbHVlc19jbnQpCj4gPiB7Cj4gPiAJc3RydWN0IHZrbXNfb3V0cHV0ICpvdXQgPSBk cm1fY3J0Y190b192a21zX291dHB1dChjcnRjKTsKPiA+IAo+ID4gCWlmICghc3JjX25hbWUpIHsK PiA+IAkJb3V0LT5jcmNfZW5hYmxlZCA9IGZhbHNlOwo+ID4gCX0gZWxzZSBpZiAoc3RyY21wKHNy Y19uYW1lLCAiYXV0byIpID09IDApIHsKPiA+IAkJb3V0LT5jcmNfZW5hYmxlZCA9IHRydWU7Cj4g PiAJfSBlbHNlIHsKPiA+IAkJb3V0LT5jcmNfZW5hYmxlZCA9IGZhbHNlOwo+ID4gCQlyZXR1cm4g LUVJTlZBTDsKPiA+IAl9Cj4gPiAKPiA+IAkqdmFsdWVzX2NudCA9IDE7Cj4gPiAKPiA+IAlyZXR1 cm4gMDsKPiA+IH0KPiA+IC0tLSBlbmQgdmttc19jcmMuYwo+IAo+IC9zbmlwCj4gCj4gPiA+ID4g PiA+ID4gK3N0YXRpYyB2b2lkIHZrbXNfY3J0Y19hdG9taWNfYmVnaW4oc3RydWN0IGRybV9jcnRj ICpjcnRjLAo+ID4gPiA+ID4gPiA+ICsJCQkJICAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRf Y3J0Y19zdGF0ZSkKPiA+ID4gPiA+ID4gPiArewo+ID4gPiA+ID4gPiA+ICsJc3RydWN0IHZrbXNf b3V0cHV0ICp2a21zX291dHB1dCA9IGRybV9jcnRjX3RvX3ZrbXNfb3V0cHV0KGNydGMpOwo+ID4g PiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArCXNwaW5fbG9ja19pcnEoJnZrbXNfb3V0cHV0LT5s b2NrKTsKPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IEhtbSwgeW91IGNhbid0IGxvY2sgYWNyb3Nz IGF0b21pY19iZWdpbi9mbHVzaC4gV2hhdCBpcyB0aGlzIHByb3RlY3RpbmcgYWdhaW5zdD8KPiA+ ID4gPiA+ID4gCj4gPiA+ID4gPiAKPiA+ID4gPiA+IEkgZGlkIHRoaXMgcGVyIERhbmllbCByZWNv bW1lbmRhdGlvbjoKPiA+ID4gPiA+IDEtIHNwaW5fbG9ja19pcnEgLT4gdmttc19jcnRjX2F0b21p Y19iZWdpbgo+ID4gPiA+ID4gMi0gdXBkYXRlIHZrbXNfY3JjX2RhdGEgYW5kIGdldCByZWYgdG8g ZmIgLT4gdmttc19wcmltYXJ5X3BsYW5lX3VwZGF0ZQo+ID4gPiA+ID4gMy0gc3Bpbl91bmxvY2tf aXJxIGFmdGVyIHZibGFuayBldmVudCAtPiB2a21zX2NydGNfYXRvbWljX2ZsdXNoCj4gPiA+ID4g Cj4gPiA+ID4gSSB0aGluayBJJ20gaW50ZXJwcmV0aW5nIGhpcyBtYWlsIGEgbGl0dGxlIGRpZmZl cmVudGx5LiBUaGUgcG9pbnQgb2YgdGhlCj4gPiA+ID4gc3BpbmxvY2sgaXMgdG8gcHJvdGVjdCB0 aGUgcG9pbnRlciB0byB0aGUgY3JjX2RhdGEgaW4gdmttc19jcnRjIChyaWdodCBub3cgaXQncwo+ ID4gPiA+IG5vdCBhIHBvaW50ZXIsIGJ1dCBpdCBzaG91bGQgYmUpLgo+ID4gPiA+IAo+ID4gPiA+ IFNvIEkgdGhpbmsgeW91IG5lZWQgdG8gZG8gdGhlIGZvbGxvd2luZzoKPiA+ID4gPiAtIENoYW5n ZSBjcmNfZGF0YSB0byBhIHBvaW50ZXIKPiA+ID4gPiAtIEluIHBsYW5lX3VwZGF0ZSwgYWxsb2Nh dGUgbmV3IG1lbW9yeSB0byBob2xkIGNyY19kYXRhIGFuZCwgdW5kZXIgdGhlIHNwaW5sb2NrLAo+ ID4gPiA+ICAgdXBkYXRlIHRoZSBjcmNfZGF0YSB0byBwb2ludCB0byB0aGUgbmV3IG1lbW9yeSAo YWRkIGEgV0FSTl9PTiBpZiB0aGUgcG9pbnRlcgo+ID4gPiA+ICAgaXMgTlVMTCkKPiA+ID4gPiAt IEluIHRoZSBocnRpbWVyLCB3aGlsZSBob2xkaW5nIHRoZSBzcGlubG9jaywgdGFrZSB0aGUgcG9p bnRlciBmcm9tIGNyY19kYXRhCj4gPiA+ID4gICBpbnRvIGEgbG9jYWwgdmFyaWFibGUgYW5kIGNs ZWFyIHRoZSBjcnRjLT5jcmNfZGF0YSBwb2ludGVyCj4gPiA+ID4gLSBQYXNzIHRoZSBwb2ludGVy IChmcm9tIHRoZSBsb2NhbCB2YXJpYWJsZSkgdG8gdGhlIGNyY193b3JrZXIKPiA+ID4gPiAKPiA+ IAo+ID4gVGhlIHByb2JsZW0gd2l0aCB0aGlzIGFwcHJvYWNoIGlzIG1hbmFnaW5nIHRoZSBwb2lu dGVyIGFsbG9jYXRpb24gYW5kCj4gPiBkZWFsbG9jYXRpb24uIElmIEkgZ3JhYiBpdCBpbiB0aGUg aHJ0aW1lciwgdGhlbiB3aGVyZS93aGVuIHNob3VsZCBJIGZyZWUgaXQ/Cj4gPiBJIGNhbid0IGFm dGVyIHRoZSBjcmMgd29ya2VyIGlzIGRvbmUgd2l0aCBpdCBiZWNhdXNlIHdoYXQgSSBub3RpY2Vk IGlzCj4gPiB0aGF0IHRoZSBjcmMgY29tcHV0YXRpb24gaXMgZXhwZWN0ZWQgdG8gcnVuIG11bHRp cGxlIHRpbWVzIGFmdGVyIG9uZQo+ID4gcGxhbmVfYXRvbWljX3VwZGF0ZS4KPiA+IAo+ID4gPiA+ IEkgZG9uJ3QgdGhpbmsgeW91IG5lZWQgdG8gaG9sZCB0aGUgc3BpbmxvY2sgYWNyb3NzIHRoZSBh dG9taWMgaG9va3MsIGp1c3QgZ3JhYgo+ID4gPiA+IGl0IGluIHBsYW5lX3VwZGF0ZS4KPiA+ID4g Cj4gPiAKPiA+IEkgYXNrZWQgRGFuaWVsIGluIGlyYyBhYm91dCByZWxlYXNpbmcgdGhlIHZrbXNf b3V0cHV0LT5sb2NrIGluIHRoZSBiZWdnaW5uaW5nIG9mIGF0b21pY19mbHVzaAo+ID4gdG8gYXZv aWQgbW9kaWZ5aW5nIHRoZSBldmVudF9sb2NrIGFuZCBoZSBtZW50aW9uZWQgdGhhdCAib3V0cHV0 LT5sb2NrIG11c3Qgd3JhcCB0aGUgZXZlbnQKPiA+IGhhbmRsaW5nIGNvZGUgY29tcGxldGVseSBz aW5jZSB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBmbGlwIGV2ZW50Cj4gPiBhbmQgdGhl IGNyYyBhbGwgbWF0Y2ggdXAiLgo+ID4gCj4gPiBTbyBtYXliZSBJIGNhbiBncmFiIHRoZSBzcGlu bG9jayBpbiBwbGFuZV9hdG9taWNfdXBkYXRlIGFuZCByZWxlYXNlIGl0IGF0Cj4gPiB0aGUgZW5k IG9mIGNydGNfYXRvbWljX2ZsdXNoPyBJcyBwbGFuZV9hdG9taWNfdXBkYXRlIGFsd2F5cyBjYWxs ZWQKPiA+IGJlZm9yZSBjcnRjX2F0b21pY19mbHVzaD8KPiA+IAo+ID4gT3RoZXJ3aXNlIGlmIEkg Z3JhYiB0aGUgc3BpbmxvY2sgaW4gYXRvbWljX2JlZ2luIEkgd29uJ3QgYmUgYWJsZSB0bwo+ID4g dXNlIHBvaW50ZXIgZm9yIGNyY19kYXRhIGFuZCBhbGxvY2F0ZSBpdCBpbiBwbGFuZV9hdG9taWNf dXBkYXRlIHNpbmNlCj4gPiBJJ2xsIGJlIGhvbGRpbmcgYSBzcGlubG9jayBhbHJlYWR5LiAKPiA+ IAo+ID4gSSBoYXZlIGJhc2VkIHRoaXMgcGF0Y2ggb24gRGFuaWVsJ3Mgc2Vjb25kIGZlZWRiYWNr IHRvIG15IGVtYWlsCj4gPiAiW1BBVENIXSBkcm0vdmttczogVXBkYXRlIENSQyBzdXBwb3J0IGFm dGVyIGxvY2sgcmV2aWV3IiB3aGljaCBJIGRpZG4ndAo+ID4gY2MgdGhlIGRyaSBtYWlsaW5nIGxp c3QgaW4gaXQsIHF1b3RpbmcgRGFuaWVsOgo+ID4gCj4gPiAiT3ZlcmFsbCBmbG93Ogo+ID4gMS4g aW4gY3J0Y19mdW5jcy0+YXRvbWljX2JlZ2luIGdyYWIgdGhlIHNwaW5sb2NrLCB0byBtYWtlIHN1 cmUKPiA+IGV2ZXJ5dGhpbmcgaXMgdmlzaWJsZSBjb21wbGV0ZWx5IG9yIG5vdCBhdCBhbGwgdG8g dGhlIHZibGFuayBoYW5kbGVyLgo+ID4gQWxzbyB1cGRhdGUgYSBwb2ludGVyIHRvIHRoZSB2a21z X2NydGNfc3RhdGUgaW4gdmttc19vdXRwdXQtPmNyY19kYXRhCj4gPiAob3Igc29tZXRoaW5nIGxp a2UgdGhhdC4KPiA+IDIuIGNvcHkgdGhlIHBsYW5lIGRhdGEgKGxpa2UgeW91IGRvIGhlcmUpIGlu IHBsYW5lX2Z1bmNzLT5hdG9taWNfY29tbWl0Lgo+ID4gMy4gZHJvcCB0aGUgc3BpbmxvY2sgaW4g Y3J0Y19mdW5jcy0+YXRvbWljX2ZsdXNoIGFmdGVyIHRoZSB2YmxhbmsKPiA+IGV2ZW50IGlzIGFy bWVkLgo+ID4gCj4gPiBJbiB0aGUgdmJsYW5rIGhydGltZXIgaGFuZGxlcjoKPiA+IDEuIGdyYWIg dGhlIHNwaW5sb2NrCj4gPiAyLiBkcm1fY3J0Y19oYW5kbGVfdmJsYW5rKCkgLSB3ZSBtdXN0IGRv IHRoaXMgd2hpbGUgaG9sZGluZyB0aGUKPiA+IHNwaW5sb2NrLCBvdGhlcndpc2UgdGhlIGV2ZW50 IGFuZCBjcmMgbWlnaHQgZ2V0IG91dCBvZiBzeW5jLiBBbHNvIGdyYWIKPiA+IHRoZSBjdXJyZW50 IHZibGFuayBudW1iZXIgaGVyZSBhbmQgc3RvcmUgaXQgc29tZXdoZXJlIGluCj4gPiB2a21zX2Ny dGNfc3RhdGUgc28gdGhhdCB0aGUgd29ya2VyIGNhbiB1c2UgdGhlIHJpZ2h0IG9uZS4KPiA+IDMu IGxhdW5jaCB0aGUgd29ya2VyLiBOb3RlIHRoYXQgdGhlIHN0cnVjdF93b3JrIG5lZWRzIHRvIGJl IHdpdGhpbiB0aGUKPiA+IHZrbXNfY3J0Y19zdGF0ZSBzdHJ1Y3R1cmUsIG90aGVyd2lzZSB0aGUg Y3JjIGNvbXB1dGF0aW9uIHdvcmtlcgo+ID4gZG9lc24ndCBrbm93IHJlYWxseSBmb3Igd2hpY2gg ZGF0YSBpdCBzaG91bGQgY29tcHV0ZSB0aGUgY3JjIC0ganVzdAo+ID4gaGF2aW5nIG9uZSBjb3B5 IGluIGRhdGFbMV0gZG9lc24ndCByZWFsbHkgc29sdmUgdGhpcyByYWNlLgo+ID4gNC4gZHJvcCBz cGlubG9jawo+IAo+IE9rLCBJIHRoaW5rIEkgdW5kZXJzdGFuZCB3aGF0IHdlJ3JlIHRyeWluZyB0 byBkby4gSXQgc2VlbXMgbGlrZSB0aGUgc3BpbmxvY2sgaXMKPiBzaW11bGF0aW5nIHdoYXQgd2Ug d291bGQgZG8gaW4gaHcgYnkgdGVsbGluZyB0aGUgZGlzcGxheSBjb250cm9sbGVyIG5vdCB0byBs YXRjaAo+IGluIG5ldyBhZGRyZXNzZXMgdW50aWwgd2UncmUgcmVhZHkuIEJ5IGJsb2NraW5nIHRo ZSB2YmxhbmsgaGFuZGxlciAoYW5kLCBieQo+IGV4dGVuc2lvbiwgdGhlIGV2ZW50KSwgd2UncmUg ZGVsYXkgc2VuZGluZyBhbiBldmVudCBvdXQgdW50aWwgdGhlIGNyYyBkYXRhIGlzCj4gY29tcGxl dGUuIEluIGh3LCB0aGlzIHdvdWxkIGJlIGEgZHJvcHBlZCBmcmFtZS4KPiAKPiBJJ2QgcHJvYmFi bHkgcHJlZmVyIGRvaW5nIHNvbWV0aGluZyBtb3JlIHNpbWlsYXIgdG8gaHcuIFNvbWV0aGluZyBs aWtlIHNpbXVsYXRpbmcKPiBhIGxhdGNoIHRvIHRlbGwgdGhlIHZibGFuayBoYW5kbGVyIHRvIHNr aXAgc2VuZGluZyB0aGUgZXZlbnQgdW50aWwgdGhlIG5leHQKPiB0aW1lciBpbnRlcnJ1cHQsIGlu c3RlYWQgb2YgYmxvY2tpbmcgaXQuIEkgdGhpbmsgdGhhdCB3b3VsZCBhdm9pZCBoYXZpbmcgdG8g aG9sZAo+IHRoZSBzcGlubG9jayBhY3Jvc3MgYmVnaW4vPGV2ZXJ5dGhpbmc+L2ZsdXNoLiBIb3dl dmVyIERhbmllbCBpcyBzbWFydGVyIHRoYW4gSSBhbSwKPiBzbyBJJ2xsIGdvIHdpdGggaGlzIHN1 Z2dlc3Rpb24gc2luY2UgSSdtIHN1cmUgdGhlcmUncyBhIHZlcnkgZ29vZCByZWFzb24gdGhpcyBp cyBhCj4gdmVyeSBiYWQgaWRlYSA6LSkKPiAKPiBJbiB0aGF0IGNhc2UsIHdoYXQgeW91IGhhdmUg bWFrZXMgc2Vuc2UgdG8gbWUsIHNvIGlmIHdlIGNvdWxkIGZsdXNoIHRoZSB3b3JrCj4gaXRlbSBp bnN0ZWFkIG9mIHRoZSB3aG9sZSBxdWV1ZSwgSSB0aGluayB3ZSdyZSB0aGVyZS4KPiAKCkFscmln aHQsIHdpbGwgZG8gdGhhdC4gVGhhbmsgeW91IHNvIG11Y2ghCgotIEhhbmVlbgo+IFNlYW4KPiAK PiAKPiA+IAo+ID4gU28gb25lIGJpZyBwcm9ibGVtIHdlIGhhdmUgaGVyZSBzdGlsbCBpcyB3aGF0 IGhhcHBlbnMgaWYgdGhlIGNyYwo+ID4gd29ya2VyIGZhbGxzIGJlaGluZCB3aXRoIGNvbXB1dGlu ZyBjcmNzLiBUaGVyZSdzIDIgY2FzZXMsIGxldCdzIGZpcnN0Cj4gPiBsb29rIGF0IGhvdyB0byBm aXhlIHRoZSBjcmMgd29ya2VyIGZhbGxpbmcgYmVoaW5kIGF0b21pYyB1cGRhdGVzLiBUaGUKPiA+ IHByb2JsZW0gdGhlcmUgaXMgdGhhdCB0aGUgbmV4dCBhdG9taWMgdXBkYXRlIG1pZ2h0IGZyZWUg dGhlCj4gPiB2a21zX2NydGNfc3RhdGUgc3RydWN0dXJlIGJlZm9yZSB0aGUgd29ya2VyIGlzIGRv bmUgd2l0aCBpdC4gVGhhdCdzCj4gPiBmYWlybHkgZWFzeSB0byBmaXg6Cj4gPiAtIGFkZCBhIGZs dXNoX3dvcmsgY2FsbCB0byB5b3VyIHZrbXNfY3J0Y19zdGF0ZV9kZXN0cm95IGZ1bmN0aW9uLiBU aGlzCj4gPiBtZWFucyB5b3UgbmVlZCB0byBpbml0aWFsaXplIHRoZSB3b3JrIGFscmVhZHkgaW4K PiA+IHZrbXNfY3J0Y19zdGF0ZV9kdXBsaWNhdGUgKHlvdSdsbCBjcmVhdGUgYm90aCBvZiB0aGVz ZSB3aGVuIGRvaW5nIHRoZQo+ID4gdmttc19jcnRjX3N0YXRlIHN1YmNsYXNzaW5nKS4KPiA+IC0g Mm5kIHdlIG5lZWQgdG8gbWFrZSBzdXJlIGNyYyB3b3JrZXJzIGFyZSBydW4gaW4gb3JkZXIgZWFz aWVzdCBmaXgKPiA+IGZvciB0aGF0IGlzIHRvIGNyZWF0ZSB5b3VyIG93biBwcml2YXRlIGNyYyB3 b3JrIHF1ZXVlICgxIHBlciBjcnRjIHdlCj4gPiBoYXZlKSB3aXRoIHRoZSBXUV9PUkRFUkVEIGZs YWcuCj4gPiAKPiA+IDJuZCBpc3N1ZSBpZiB0aGUgdmJsYW5rcyBnZXQgYWhlYWQgb2YgdGhlIGNy YyB3b3JrZXIuIFRoaXMgaGFwcGVucwo+ID4gd2hlbiBlLmcuIHRoZXJlJ3Mgbm8gYXRvbWljIHVw ZGF0ZXMsIGJ1dCAgd2Ugc3RpbGwgd2FudCB0byBnZW5lcmF0ZSAxCj4gPiB2YmxhbmsgcGVyIGZy YW1lLiBUaGlzIGlzIHByb2JhYmx5IGJldHRlciBkb25lIGluIGEgZm9sbG93LXVwIHBhdGNoLAo+ ID4gYnV0IHJvdWdoIHNvbHV0aW9uIGlzOgo+ID4gLSBpbiB0aGUgdmJsYW5rIGhydGltZXIgY2hl Y2sgd2hldGhlciB0aGUgd29yayBpcyBzdGlsbCBzY2hlZHVsZWQgYW5kCj4gPiBub3QgeWV0IGNv bXBsZXRlICh3aGlsZSBob2xkaW5nIHRoZSBzcGlubG9jaykuIGluIHRoYXQgY2FzZSBzaW1wbHkK PiA+IHRlbGwgdGhlIHdvcmtlciB0byBmaWxsIG91dCB0aGUgc2FtZSBjcmMgZm9yIG11bHRpcGxl IHZibGFua3MsIGJ5Cj4gPiB1c2luZyBhIHZibGFua19zZXFub19zdGFydC9lbmQuCj4gPiAtIGlm IHRoZSB3b3JrZXIgaXMgbm90IGJ1c3ksIHRoZW4gd2UgdGVsbCBpdCB0byBjb21wdXRlIGEgbmV3 IGNyYyAoaW4KPiA+IGNhc2Ugc29tZXRoaW5nIGluIHRoZSBidWZmZXJzIGhhcyBjaGFuZ2VkIC0g aW4gdGhlIGZ1dHVyZSB3ZSBtaWdodAo+ID4gY2hhbmdlIHRoaXMgYmVoYXZpb3VyKS4iCj4gPiAK PiA+ID4gU28gdGhlIG1vcmUgSSB0aGluayBhYm91dCB0aGlzLCBJIGRvbid0IHRoaW5rIGl0J3Mg cXVpdGUgcmlnaHQuIFBlcmhhcHMgSSdtCj4gPiA+IG1pc3NpbmcgYW4gZW1haWwgZnJvbSBEYW5p ZWwsIG9yIChtb3JlIGxpa2VseSkgbWlzdW5kZXJzdGFuZGluZyB3aGF0IHlvdSdyZQo+ID4gPiB0 cnlpbmcgdG8gZG8uIEhvd2V2ZXIsIHRoZSBlbWFpbCBJIHJlYWQgc3VnZ2VzdGVkIHN0b3Jpbmcg dGhlIGNyY19kYXRhCj4gPiA+IHRvIGJlIGNvbnN1bWVkIGJ5IHRoZSBjcmMgd29ya2VyIGluIHZr bXNfY3J0Yy4gSG93ZXZlciBpbiB0aGlzIHBhdGNoIGl0J3MgYmVpbmcKPiA+ID4gc3RvcmVkIChh bG9uZyB3aXRoIHRoZSB3b3JrIGl0ZW0pIGluIGNydGMgc3RhdGUuIEZ1cnRoZXIsIHRoZSBzdGF0 ZSBjYW5ub3QgYmUKPiA+ID4gZGVzdHJveWVkIHdpdGhvdXQgY29tcGxldGluZyB0aGUgY3JjX3dv cmssIHdoaWNoIGtpbmQgb2YgZGVmZWF0cyB0aGUgcHVycG9zZSBvZgo+ID4gPiB0aGUgd29ya3F1 ZXVlIGluIHRoZSBmaXJzdCBwbGFjZS4KPiA+ID4gCj4gPiA+IFN0b3JpbmcgYSBjb3B5IG9mIHRo ZSBjcmNfZGF0YSBpbiBjcnRjIGFsbG93cyB5b3UgdG8gZnJlZSB0aGUgY3J0Y19zdGF0ZSwgc28g eW91Cj4gPiA+IGNhbiBzdGFydCB3b3JraW5nIG9uIHRoZSBuZXh0IGZyYW1lIHdoaWxlIHRoZSBj cmMgd29ya2VyIGlzIHNjaGVkdWxlZCBhbmQgcGlja3MKPiA+ID4gdXAgdGhlIGNyY19kYXRhIGZy b20gY3J0Yy4gU3RvcmluZyB0aGUgY3JjX2RhdGEgaW4gY3J0Y19zdGF0ZSBhbmQgd2FpdGluZyBm b3IKPiA+ID4gdGhlIHdvcmsgdG8gZmluaXNoIGlzIGVhc2llciBzaW5jZSB5b3UgZG9uJ3QgbmVl ZCB0byB3b3JyeSBhYm91dCBjb3B5aW5nIGFuZAo+ID4gPiBsb2NraW5nIChzbyBtdWNoKS4gSG93 ZXZlciwgaXQgc2VlbXMgbGlrZSB3ZSdyZSBkb2luZyBib3RoIGluIHRoaXMgcGF0Y2guCj4gPiA+ IAo+ID4gPiBBZ2FpbiwgSSdtIGxpa2VseSBqdXN0IG5vdCB1bmRlcnN0YW5kaW5nIHdoYXQgdGhl IGdvYWwgb2YgdGhpcyBpcywgc28gYW55Cj4gPiA+IGNsYXJpZmljYXRpb24gd291bGQgYmUgZ3Jl YXRseSBhcHByZWNpYXRlZCA6KQo+ID4gPiAKPiA+ID4gU2Vhbgo+ID4gPiAKPiA+ID4gPiAKPiA+ ID4gPiBTZWFuCj4gPiA+ID4gCj4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiArfQo+ID4gPiA+ID4g PiA+ICsKPiAKPiAvc25pcAo+IAo+IC0tIAo+IFNlYW4gUGF1bCwgU29mdHdhcmUgRW5naW5lZXIs IEdvb2dsZSAvIENocm9taXVtIE9TCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2RyaS1kZXZlbAo=