From mboxrd@z Thu Jan 1 00:00:00 1970 From: Brendan Higgins Subject: Re: [PATCH v9 04/18] kunit: test: add kunit_stream a std::stream like logger Date: Mon, 22 Jul 2019 11:10:04 -0700 Message-ID: References: <20190712081744.87097-1-brendanhiggins@google.com> <20190712081744.87097-5-brendanhiggins@google.com> <20190715221554.8417320665@mail.kernel.org> <20190716175021.9CA412173C@mail.kernel.org> <20190718175024.C3EC421019@mail.kernel.org> <20190719000834.GA3228@google.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190719000834.GA3228@google.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Stephen Boyd Cc: Petr Mladek , "open list:DOCUMENTATION" , Peter Zijlstra , Amir Goldstein , dri-devel , Sasha Levin , Masahiro Yamada , Michael Ellerman , "open list:KERNEL SELFTEST FRAMEWORK" , shuah , linux-nvdimm , Frank Rowand , Knut Omang , Kieran Bingham , wfg@linux.intel.com, Joel Stanley , David Rientjes , Jeff Dike , Dan Carpenter , devicetree , linux-kbuild , "Bird, Timothy" List-Id: linux-nvdimm@lists.01.org T24gVGh1LCBKdWwgMTgsIDIwMTkgYXQgNTowOCBQTSBCcmVuZGFuIEhpZ2dpbnMKPGJyZW5kYW5o aWdnaW5zQGdvb2dsZS5jb20+IHdyb3RlOgo+Cj4gT24gVGh1LCBKdWwgMTgsIDIwMTkgYXQgMTI6 MjI6MzNQTSAtMDcwMCwgQnJlbmRhbiBIaWdnaW5zIHdyb3RlOgo+ID4gT24gVGh1LCBKdWwgMTgs IDIwMTkgYXQgMTA6NTAgQU0gU3RlcGhlbiBCb3lkIDxzYm95ZEBrZXJuZWwub3JnPiB3cm90ZToK PiA+ID4KPiA+ID4gUXVvdGluZyBCcmVuZGFuIEhpZ2dpbnMgKDIwMTktMDctMTYgMTE6NTI6MDEp Cj4gPiA+ID4gT24gVHVlLCBKdWwgMTYsIDIwMTkgYXQgMTA6NTAgQU0gU3RlcGhlbiBCb3lkIDxz Ym95ZEBrZXJuZWwub3JnPiB3cm90ZToKPiBbLi4uXQo+ID4gPiBEbyB5b3UgaGF2ZSBhIGxpbmsg dG8gdGhvc2UgZWFybGllciBwYXRjaGVzPwo+ID4KPiA+IFRoaXMgaXMgdGhlIGZpcnN0IHBhdGNo c2V0Ogo+ID4KPiA+IGh0dHBzOi8vd3d3Lm1haWwtYXJjaGl2ZS5jb20vbGludXgta2VybmVsQHZn ZXIua2VybmVsLm9yZy9tc2cxNzg4MDU3Lmh0bWwKPiA+Cj4gPiBJbiBwYXJ0aWN1bGFyIHlvdSBj YW4gc2VlIHRoZSBjb2RlIGZvciBtYXRjaGluZyBmdW5jdGlvbnMgaGVyZToKPiA+Cj4gPiBodHRw czovL3d3dy5tYWlsLWFyY2hpdmUuY29tL2xpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcvbXNn MTc4ODA3My5odG1sCj4gPgo+ID4gQW5kIHBhcmFtZXRlciBtYXRjaGluZyBjb2RlIGhlcmU6Cj4g Pgo+ID4gaHR0cHM6Ly93d3cubWFpbC1hcmNoaXZlLmNvbS9saW51eC1rZXJuZWxAdmdlci5rZXJu ZWwub3JnL21zZzE3ODgwNzIuaHRtbAo+ID4KPiA+IGh0dHBzOi8vd3d3Lm1haWwtYXJjaGl2ZS5j b20vbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZy9tc2cxNzg4MDg2Lmh0bWwKPiA+Cj4gPiBN eSBhcG9sb2dpZXMgaW4gYWR2YW5jZSwgYnV0IHRoZSBjb2RlIGF0IHRoaXMgZWFybHkgc3RhZ2Ug aGFkIG5vdAo+ID4gYWRvcHRlZCB0aGUga3VuaXRfKiBwcmVmaXggYW5kIHdhcyBzdGlsbCB1c2lu ZyB0aGUgdGVzdF8qIGFuZCBtb2NrXyoKPiA+IHByZWZpeC4gKEhlbmNlLCBzdHJ1Y3Qga3VuaXRf c3RyZWFtIHdhcyBrbm93biBhcyBzdHJ1Y3QgdGVzdF9zdHJlYW0pLgo+IFsuLi5dCj4gPiA+IFRo ZSBjcnV4IG9mIG15IGNvbXBsYWludCBpcyB0aGF0IHRoZSBzdHJpbmcgc3RyZWFtIEFQSSBpcyB0 b28gbG9vc2VseQo+ID4gPiBkZWZpbmVkIHRvIGJlIHVzYWJsZS4gSXQgYWxsb3dzIHRlc3RzIHRv IGJ1aWxkIHVwIGEgc3RyaW5nIG9mCj4gPiA+IHVuc3RydWN0dXJlZCBpbmZvcm1hdGlvbiwgYnV0 IHdpdGggY2VydGFpbiBjYWxsaW5nIGNvbnN0cmFpbnRzIHNvIHdlCj4gPiA+IGhhdmUgdG8gdHJl YWQgY2FyZWZ1bGx5LiBJZiB0aGVyZSB3YXMgbW9yZSBzdHJ1Y3R1cmUgdG8gdGhlIGRhdGEgdGhh dCdzCj4gPiA+IGJlaW5nIHJlY29yZGVkIHRoZW4gdGhlIHRlc3QgY2FzZSBydW5uZXIgY291bGQg b3BlcmF0ZSBvbiB0aGUgZGF0YQo+ID4gPiB3aXRob3V0IGhhdmluZyB0byBkbyBzdHJpbmcvc3Ry ZWFtIG9wZXJhdGlvbnMsIGFsbG9jYXRpb25zLCBldGMuIFRoaXMKPiA+ID4gd291bGQgbWFrZSB0 aGUgYXNzZXJ0aW9uIGxvZ2ljIG11Y2ggbW9yZSBjb25jcmV0ZSBhbmQgc3BlY2lmaWMgdG8ga3Vu aXQsCj4gPiA+IGluc3RlYWQgb2YgdGhpcyBzbWFsbCBrdW5pdCB3cmFwcGVyIHRoYXQncyBiZWVu IHBsYWNlZCBvbiB0b3Agb2Ygc3RyaW5nCj4gPiA+IHN0cmVhbS4KPiA+Cj4gPiBZZWFoLCBJIGNh biBzZWUgdGhlIHBvaW50IG9mIHdhbnRpbmcgc29tZXRoaW5nIHRoYXQgcHJvdmlkZXMgbW9yZQo+ ID4gc3RydWN0dXJlIHRoYW4gdGhlIHJhdyBgc3RydWN0IGt1bml0X3N0cmVhbWAgaW50ZXJmYWNl LiBJbiBmYWN0LCBpdCBpcwo+ID4gc29tZXRoaW5nIEkgaGFkIGFscmVhZHkgc3RhcnRlZCB3b3Jr aW5nIG9uLCB3aGVuIEkgaGFkIGRldGVybWluZWQgaXQKPiA+IHdvdWxkIGJlIGEgbGFyZ2UgZWZm b3J0IHRvIGNhcHR1cmUgYWxsIHRoZSB2YXJpYXRpb25zLiBJIHdhcyBmdXJ0aGVyCj4gPiBwdXQg b2ZmIGZyb20gdGhlIGlkZWEgd2hlbiBJIGhhZCBiZWVuIGFza2VkIHRvIGNvbnZlcnQgdGhlIEtV bml0Cj4gPiBpbnRlcm1lZGlhdGUgZm9ybWF0IGZyb20gd2hhdCBJIHdhcyB1c2luZyB0byBUQVAs IGJlY2F1c2UsIGFzIGl0IGlzLAo+ID4gdGhlIGN1cnJlbnQgZGF0YSBwcmludGVkIG91dCBieSBL VW5pdCBkb2Vzbid0IGNvbnRhaW4gYWxsIHRoZSBkYXRhIEkKPiA+IHdvdWxkIGxpa2UgdG8gcHV0 IGluIGl0IGluIGEgd2F5IHRoYXQgYmVzdCB0YWtlcyBhZHZhbnRhZ2Ugb2YgdGhlIFRBUAo+ID4g c3BlY2lmaWNhdGlvbi4gT25lIHByb2JsZW1hdGljIGFyZWEgaW4gcGFydGljdWxhcjogVEFQIGFs cmVhZHkKPiA+IHByb3ZpZGVzIGEgd2F5IHRvIHByZXNlbnQgYSBsb3Qgb2YgdGhlIGRhdGEgSSB3 b3VsZCBsaWtlIHRvIGV4cG9ydCwKPiA+IGJ1dCBpdCBpbnZvbHZlcyBKU09OIHNlcmlhbGl6YXRp b24gd2hpY2ggd2FzIGFuIGlkZWEgdGhhdCBzb21lIG9mIHRoZQo+ID4gb3RoZXIgcmV2aWV3ZXJz IHVuZGVyc3RhbmRhYmx5IHdlcmVuJ3QgdG9vIGtlZW4gb24uIFRBUCBhbHNvIHdhbnRzIHRvCj4g PiByZXBvcnQgZGF0YSBzb21lIHRpbWUgYWZ0ZXIgaXQgaXMgYXZhaWxhYmxlLCB3aGljaCBpcyBn ZW5lcmFsbHkgbm90IGEKPiA+IGdvb2QgaWRlYSBmb3IgdGVzdCBkZWJ1ZyBpbmZvcm1hdGlvbjsg eW91IHdhbnQgdG8gbWFrZSBpdCBhdmFpbGFibGUgYXMKPiA+IHNvb24gYXMgeW91IGNhbiBvciB5 b3UgcmlzayBjcmFzaGluZyB3aXRoIHRoZSBkYXRhIHN0aWxsIGluc2lkZS4KPiA+Cj4gPiBIZW5j ZSwgSSBkZWNpZGVkIHdlIGNvdWxkIHByb2JhYmx5IHNwZW5kIGEgZ29vZCBsb25nIHdoaWxlIGRl YmF0aW5nCj4gPiBob3cgSSBwcmVzZW50IHRoZSBpbmZvcm1hdGlvbi4gU28gdGhlIGlkZWEgb2Yg aGF2aW5nIGEgbG9vc2UKPiA+IGRlZmluaXRpb24gc2VlbWVkIGF0dHJhY3RpdmUgdG8gbWUgaW4g aXRzIG93biByaWdodCBzaW5jZSBpdCB3b3VsZAo+ID4gbGlrZWx5IGNvbmZvcm0gdG8gd2hhdGV2 ZXIgd2UgZW5kZWQgdXAgZGVjaWRpbmcgaW4gdGhlIGxvbmcgcnVuLiBBbHNvLAo+ID4gYWxsIHRo ZSBiZXR0ZXIgdGhhdCBpdCB3YXMgd2hhdCBJIGFscmVhZHkgaGFkIGFuZCBubyBvbmUgc2VlbWVk IHRvCj4gPiBtaW5kIHRvbyBtdWNoLgo+ID4KPiA+IFRoZSBvbmx5IGNvbnN0YW50IEkgZXhwZWN0 IGlzIHRoYXQgYHN0cnVjdCBrdW5pdGAgd2lsbCBsaWtlbHkgbmVlZCB0bwo+ID4gdGFrZSBhbiBh YnN0cmFjdCBvYmplY3Qgd2l0aCBhIGBjb21taXRgIG1ldGhvZCwgb3IgYSBgZm9ybWF0YCBtZXRo b2QKPiA+IG9yIHdoYXRldmVyIHNvIGl0IGNvdWxkIGNvbnRyb2wgd2hlbiBkYXRhIHdhcyBnb2lu ZyB0byBiZSBwcmludGVkIG91dAo+ID4gdG8gdGhlIHVzZXIuIFdlIHdpbGwgcHJvYmFibHkgYWxz byB1c2UgYSBzdHJpbmcgYnVpbGRlciBpbiB0aGVyZQo+ID4gc29tZXdoZXJlLgo+ID4KPiA+ID4g VEw7RFI6IElmIHdlIGNhbiBnZXQgcmlkIG9mIHRoZSBzdHJpbmcgc3RyZWFtIEFQSSBJJ2Qgdmll dyB0aGF0IGFzIGFuCj4gPiA+IGltcHJvdmVtZW50IGJlY2F1c2UgYnVpbGRpbmcgYXJiaXRyYXJ5 IHN0cmluZ3MgaW4gdGhlIGtlcm5lbCBpcyBjb21wbGV4LAo+ID4gPiBlcnJvciBwcm9uZSBhbmQg aGFzIGNhbGxpbmcgY29udGV4dCBjb25jZXJucy4KPiA+Cj4gPiBUcnVlLiBObyBhcmd1bWVudCB0 aGVyZS4KPiA+Cj4gPiA+IElzIHRoZSBpbnRlbnRpb24gdGhhdCBvdGhlciBjb2RlIGJlc2lkZXMg dW5pdCB0ZXN0cyB3aWxsIHVzZSB0aGlzIHN0cmluZwo+ID4gPiBzdHJlYW0gQVBJIHRvIGJ1aWxk IHVwIHN0cmluZ3M/IEFueSB0YXJnZXRzIGluIG1pbmQ/IFRoaXMgd291bGQgYmUgYQo+ID4gPiBn b29kIHdheSB0byBnZXQgdGhlIEFQSSBtZXJnZWQgdXBzdHJlYW0gZ2l2ZW4gdGhhdCBpdHMgMjAx OSBhbmQgd2UKPiA+ID4gaGF2ZW4ndCBoYWQgc3VjaCBhbiBBUEkgaW4gdGhlIGtlcm5lbCBzbyBm YXIuCj4gPgo+ID4gU29tZW9uZSwgKHdhcyBpdCB5b3U/KSBhc2tlZCBhYm91dCBjb2RlIHNoYXJp bmcgd2l0aCBhIHN0cmluZyBidWlsZGVyCj4gPiB0aGluZ3kgdGhhdCB3YXMgdXNlZCBmb3IgY3Jl YXRpbmcgc3RydWN0dXJlZCBodW1hbiByZWFkYWJsZSBmaWxlcywgYnV0Cj4gPiB0aGF0IHNlZW1l ZCBsaWtlIGEgcHJldHR5IG1hc3NpdmUgdW5kZXJ0YWtpbmcuCj4gPgo+ID4gQXNpZGUgZnJvbSB0 aGF0LCBuby4gSSB3b3VsZCBraW5kIG9mIHByZWZlcmVkIHRoYXQgbm9ib2R5IHVzZWQgaXQgZm9y Cj4gPiBhbnl0aGluZyBlbHNlIGJlY2F1c2UgSSB0aGUgaXNzdWVzIHlvdSBkZXNjcmliZWQuCj4g Pgo+ID4gTmV2ZXJ0aGVsZXNzLCBJIHRoaW5rIHRoZSBkZWJhdGUgb3ZlciB0aGUgdXNlZnVsbmVz cyBvZiB0aGUKPiA+IHN0cmluZ19zdHJlYW0gYW5kIGt1bml0X3N0cmVhbSBhcmUgc2VwYXJhdGUg dG9waWNzLiBFdmVuIGlmIHdlIG1hZGUKPiA+IGt1bml0X3N0cmVhbSBtb3JlIHN0cnVjdHVyZWQs IEkgYW0gcHJldHR5IHN1cmUgSSB3b3VsZCB3YW50IHRvIHVzZQo+ID4gc3RyaW5nX3N0cmVhbSBv ciBzb21lIHZhcmlhdGlvbiBmb3IgY29uc3RydWN0aW5nIHRoZSBtZXNzYWdlLgo+ID4KPiA+ID4g QW4gIm9iamVjdCBvcmllbnRlZCIgKHN0cm9uZyBxdW90ZXMhKSBhcHByb2FjaCB3aGVyZSBrdW5p dF9mYWlsX21zZyBpcwo+ID4gPiB0aGUgaW5uZXJtb3N0IHN0cnVjdCBpbiBzb21lIGFzc2VydGlv biBzcGVjaWZpYyBzdHJ1Y3R1cmUgbWlnaHQgd29yawo+ID4gPiBuaWNlbHkgYW5kIGFsbG93IHRo ZSB0ZXN0IHJ1bm5lciB0byBjYWxsIGEgZ2VuZXJpYyAnZm9ybWF0JyBmdW5jdGlvbiB0bwo+ID4g PiBwcmludCBvdXQgdGhlIG1lc3NhZ2UgYmFzZWQgb24gdGhlIHR5cGUgb2YgYXNzZXJ0aW9uL2V4 cGVjdGF0aW9uIGl0IGlzLgo+ID4gPiBJdCBwcm9iYWJseSB3b3VsZCBtZWFuIGxlc3MgY29kZSBz aXplIHRvbyBiZWNhdXNlIHRoZSBzdHJpbmdzIHRoYXQgYXJlCj4gPiA+IGNvbW1vbiB3aWxsIGJl IGluIHRoZSBjb21tb24gcHJpbnRpbmcgZnVuY3Rpb24gaW5zdGVhZCBvZiBjcmVhdGVkIHR3aWNl LAo+ID4gPiBpbiB0aGUgbWFjcm9zL2NvZGUgYW5kIHRoZW4gY29waWVkIHRvIHRoZSBoZWFwIGZv ciB0aGUgc3RyaW5nIHN0cmVhbS4KPiA+ID4KPiA+ID4gICAgICAgICBzdHJ1Y3Qga3VuaXRfYXNz ZXJ0IHsKPiA+ID4gICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmxpbmU7Cj4gPiA+ICAgICAg ICAgICAgICAgICBjb25zdCBjaGFyICpmaWxlOwo+ID4gPiAgICAgICAgICAgICAgICAgY29uc3Qg Y2hhciAqZnVuYzsKPiA+ID4gICAgICAgICAgICAgICAgIHZvaWQgKCpmb3JtYXQpKHN0cnVjdCBr dW5pdF9hc3NlcnQgKmFzc2VydCk7Cj4gPiA+ICAgICAgICAgfTsKPiA+ID4KPiA+ID4gICAgICAg ICBzdHJ1Y3Qga3VuaXRfY29tcGFyaXNvbl9hc3NlcnQgewo+ID4gPiAgICAgICAgICAgICAgICAg ZW51bSBvcGVyYXRvciBvcGVyYXRvcjsKPiA+ID4gICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg KmxlZnQ7Cj4gPiA+ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyaWdodDsKPiA+ID4gICAg ICAgICAgICAgICAgIHN0cnVjdCBrdW5pdF9hc3NlcnQgYXNzZXJ0Owo+ID4gPiAgICAgICAgIH07 Cj4gPiA+Cj4gPiA+ICAgICAgICAgc3RydWN0IGt1bml0X2Jvb2xfYXNzZXJ0IHsKPiA+ID4gICAg ICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRydXRoOwo+ID4gPiAgICAgICAgICAgICAgICAgY29u c3QgY2hhciAqc3RhdGVtZW50Owo+ID4gPiAgICAgICAgICAgICAgICAgc3RydWN0IGt1bml0X2Fz c2VydCBhc3NlcnQ7Cj4gPiA+ICAgICAgICAgfTsKPiA+ID4KPiA+ID4gICAgICAgICB2b2lkIGt1 bml0X2Zvcm1hdF9jb21wYXJpc29uKHN0cnVjdCBrdW5pdF9hc3NlcnQgKmFzc2VydCkKPiA+ID4g ICAgICAgICB7Cj4gPiA+ICAgICAgICAgICAgICAgICBzdHJ1Y3Qga3VuaXRfY29tcGFyaXNvbl9h c3NlcnQgKmNvbXAgPSBjb250YWluZXJfb2YoYXNzZXJ0LCAuLi4pCj4gPiA+Cj4gPiA+ICAgICAg ICAgICAgICAgICBrdW5pdF9wcmludGsoLi4uKQo+ID4gPiAgICAgICAgIH0KPgo+IEkgc3RhcnRl ZCBwb2tpbmcgYXJvdW5kIHdpdGggeW91ciBzdWdnZXN0aW9uIHdoaWxlIHdlIGFyZSB3YWl0aW5n LiBBCj4gY291cGxlIGVhcmx5IG9ic2VydmF0aW9uczoKPgo+IDEpIEl0IGlzIGFjdHVhbGx5IGVh c2llciB0byBkbyB0aGFuIEkgcHJldmlvdXNseSB0aG91Z2h0IGFuZCB3aWxsIHByb2JhYmx5Cj4g ICAgaGVscCB3aXRoIGdldHRpbmcgbW9yZSBvZiB0aGUgcGxhbm5lZCBUQVAgb3V0cHV0IHN0dWZm IHdvcmtpbmcuCj4KPiAgICBUaGF0IGJlaW5nIHNhaWQsIHRoaXMgaXMgc3RpbGwgYSBwcmV0dHkg c3Vic3RhbnRpYWwgdW5kZXJ0YWtpbmcgYW5kCj4gICAgd2lsbCBsaWtlbHkgdGFrZSAqYXQgbGVh c3QqIGEgd2VlayB0byBpbXBsZW1lbnQgYW5kIHByb3Blcmx5IHJldmlldy4KPiAgICBBc3N1bWlu ZyBldmVyeXRoaW5nIGdvZXMgZXh0cmVtZWx5IHdlbGwgKG5vIHVuZXhwZWN0ZWQgaXNzdWVzIG9u IG15Cj4gICAgZW5kLCB2ZXJ5IHJlc3BvbnNpdmUgcmV2aWV3ZXJzLCBldGMpLgo+Cj4gMikgSXQg KndpbGwqIGVsaW1pbmF0ZSB0aGUgbmVlZCBmb3Iga3VuaXRfc3RyZWFtLgo+Cj4gMykgLi4uYnV0 LCBpdCAqd2lsbCBub3QqIGVsaW1pbmF0ZSB0aGUgbmVlZCBmb3Igc3RyaW5nX3N0cmVhbS4KPgo+ IEJhc2VkIG9uIG15IGVhcmx5IG9ic2VydmF0aW9ucywgSSBkbyB0aGluayBpdCBpcyB3b3J0aCBk b2luZywgYnV0IEkKPiBkb24ndCB0aGluayBpdCBpcyB3b3J0aCB0cnlpbmcgdG8gbWFrZSBpdCBp biB0aGlzIHBhdGNoc2V0ICh1bmxlc3MgSQo+IGhhdmUgYWxyZWFkeSBtaXNzZWQgdGhlIHdpbmRv dywgb3IgaXQgaXMgZ29pbmcgdG8gYmUgb3BlbiBmb3IgYSB3aGlsZSk6Cj4gSSBkbyB0aGluayBp dCB3aWxsIG1ha2UgdGhpbmdzIG11Y2ggY2xlYW5lciwgYnV0IEkgZG9uJ3QgdGhpbmsgaXQgd2ls bAo+IGFjaGlldmUgeW91ciBkZXNpcmVkIGdvYWwgb2YgZ2V0dGluZyByaWQgb2YgYW4gdW5zdHJ1 Y3R1cmVkCj4ge2t1bml0fHN0cmluZ31fc3RyZWFtIHN0eWxlIGludGVyZmFjZTsgaXQganVzdCBh ZGRzIGEgbGF5ZXIgb24gdG9wIG9mIGl0Cj4gdGhhdCBtYWtlcyBpdCBoYXJkZXIgdG8gbWlzdXNl Lgo+Cj4gSSBhdHRhY2hlZCBhIHBhdGNoIG9mIHdoYXQgSSBoYXZlIHNvIGZhciBhdCB0aGUgZW5k IG9mIHRoaXMgZW1haWwgc28geW91Cj4gY2FuIHNlZSB3aGF0IEkgYW0gdGFsa2luZyBhYm91dC4g QW5kIG9mIGNvdXJzZSwgaWYgeW91IGFncmVlIHdpdGggbXkKPiBhc3Nlc3NtZW50LCBzbyB3ZSBj YW4gc3RhcnQgd29ya2luZyBvbiBpdCBhcyBhIGZ1dHVyZSBwYXRjaC4KPgo+IEEgY291cGxlIHRo aW5ncyBpbiByZWdhcmQgdG8gdGhlIHBhdGNoIEkgYXR0YWNoZWQ6Cj4KPiAxKSBJIHdyb3RlIGl0 IHByZXR0eSBxdWlja2x5IHNvIHRoZXJlIGFyZSBhbG1vc3QgZGVmaW5pdGVseSBtaXN0YWtlcy4K PiAgICBZb3Ugc2hvdWxkIGNvbnNpZGVyIGl0IFJGQy4gSSBkaWQgdmVyaWZ5IGl0IGNvbXBpbGVz IHRob3VnaC4KPgo+IDIpIEFsc28sIEkgZGlkIHVzZSBrdW5pdF9zdHJlYW0gaW4gd3JpdGluZyBp dDogYWxsIG9jY3VyZW5jZXMgc2hvdWxkIGJlCj4gICAgcHJldHR5IGVhc3kgdG8gcmVwbGFjZSB3 aXRoIHN0cmluZ19zdHJlYW07IG5ldmVydGhlbGVzcywgdGhlIHJlYXNvbgo+ICAgIGZvciB0aGlz IGlzIGp1c3QgdG8gbWFrZSBpdCBlYXNpZXIgdG8gcGxheSB3aXRoIHRoZSBjdXJyZW50IEFQSXMu IEkKPiAgICB3YW50ZWQgdG8gaGF2ZSBzb21ldGhpbmcgd29ya2luZyBiZWZvcmUgSSB3ZW50IHRo cm91Z2ggYSBiaWcgdGVkaW91cwo+ICAgIHJlZmFjdG9yaW5nLiBTbyBzb3JyeSBpZiBpdCBjYXVz ZXMgYW55IGNvbmZ1c2lvbi4KPgo+IDMpIEkgYWxzbyBiYXNlZCB0aGUgcGF0Y2ggb24gYWxsIHRo ZSBLVW5pdCBwYXRjaGVzIEkgaGF2ZSBxdWV1ZWQgdXAKPiAgICAoaW5jbHVkZXMgdGhpbmdzIGxp a2UgbW9ja2luZyBhbmQgc3VjaCkgc2luY2UgSSB3YW50IHRvIHNlZSBob3cgdGhpcwo+ICAgIHNl cmlhbGl6YXRpb24gdGhpbmcgd2lsbCB3b3JrIHdpdGggbW9ja3MgYW5kIG1hdGNoZXJzIGFuZCB0 aGluZ3MgbGlrZQo+ICAgIHRoYXQuCj4KPiA+IEkgc3RhcnRlZCB3b3JraW5nIG9uIHNvbWV0aGlu ZyBzaW1pbGFyaXNoLCBidXQgYnkgdGhlIHRpbWUgSSBlbmRlZCB1cAo+ID4gY29taW5nIHVwIHdp dGggYSBwYXJlbnQgb2JqZWN0IHdob3NlIGRlZmluaXRpb24gd2FzIGxvb3NlIGVub3VnaCB0bwo+ ID4gc2F0aXNmeSBhbGwgdGhlIHByb3BlcnRpZXMgcmVxdWlyZWQgYnkgdGhlIGNoaWxkIGNsYXNz ZXMgaXQgZW5kZWQgdXAKPiA+IGJhc2ljYWxseSBiZWluZyB0aGUgc2FtZSBhcyB3aGF0IEkgaGF2 ZSBub3cganVzdCB3aXRoIGEgbW9yZSBjb21wbGV4Cj4gPiBoaWVyYXJjaHkgb2YgbWVzc2FnZSBt YW5pcHVsYXRpb24gbG9naWMuCj4gPgo+ID4gT24gdGhlIG90aGVyIGhhbmQsIEkgZGlkbid0IGhh dmUgdGhlIGlkZWEgb2YgZG9pbmcgdGhlIHBhcmVudCBvYmplY3QKPiA+IHF1aXRlIHRoZSB3YXkg eW91IGRpZCBhbmQgdGhhdCB3b3VsZCBjbGVhbiB1cCBhIGxvdCBvZiB0aGUgZHVwbGljYXRlZAo+ ID4gZmlyc3QgbGluZSBsb2dpYy4KPiA+Cj4gPiBJIHdvdWxkIGxpa2UgdG8gZ2l2ZSBpdCBhIHRy eSwgYnV0IEkgYW0gYWZyYWlkIEkgYW0gZ29pbmcgdG8gZ2V0Cj4gPiBzdWNrZWQgZG93biBhIHJl YWxseSBkZWVwIHJhYmJpdCBob2xlLgo+ID4KPiA+ID4gTWF5YmUgb3RoZXIgcGVvcGxlIGhhdmUg b3BpbmlvbnMgaGVyZSBvbiBpZiB5b3Ugc2hvdWxkIGRvIGl0IG5vdyBvcgo+ID4gPiBsYXRlci4g RnV0dXJlIGNvZGluZyBpcyBub3QgYSBncmVhdCBhcmd1bWVudCBiZWNhdXNlIGl0J3MgaGFyZCB0 bwo+ID4gPiBwcmVkaWN0IHRoZSBmdXR1cmUuIE9uIHRoZSBvdGhlciBoYW5kLCB0aGlzIHBhdGNo c2V0IGlzIGluIGdvb2Qgc2hhcGUgdG8KPiA+Cj4gPiBZZWFoLCB0aGF0J3Mga2luZCBvZiB3aHkg SSBhbSBhZnJhaWQgdG8gZ28gZG93biB0aGlzIHJvYWQgd2hlbiBJIGhhdmUKPiA+IHNvbWV0aGlu ZyB0aGF0IHdvcmtzIG5vdyBhbmQgSSBrbm93IHdvcmtzIHdpdGggdGhlIG1vY2tpbmcgc3R1ZmYg SQo+ID4gd2FudCB0byBkby4KPiA+Cj4gPiBJIHdvdWxkIGxpa2UgdG8gdHJ5IHlvdXIgc3VnZ2Vz dGlvbiwgYnV0IEkgd2FudCB0byB0cnkgdG8gbWFrZSBpdCB3b3JrCj4gPiB3aXRoIG15IG1vY2tp bmcgcGF0Y2hlcyBiZWZvcmUgSSBjb21taXQgdG8gaXQgYmVjYXVzZSBvdGhlcndpc2UgSSBhbQo+ ID4ganVzdCBnb2luZyB0byBoYXZlIHRvIGJhY2sgaXQgb3V0IGluIGEgZm9sbG93IHVwIHBhdGNo c2V0Lgo+ID4KPiA+ID4gbWVyZ2UgYW5kIEknZCBsaWtlIHRvIHVzZSBpdCB0byB3cml0ZSB1bml0 IHRlc3RzIGZvciBjb2RlIEkgbWFpbnRhaW4gc28KPiA+ID4gSSBkb24ndCB3YW50IHRvIHNlZSB0 aGlzIHN0YWxsIG91dC4gU29ycnkgaWYgSSdtIG9wZW5pbmcgdGhlIGNhbiBvZgo+ID4gPiB3b3Jt cyB5b3UncmUgdGFsa2luZyBhYm91dC4KPiA+Cj4gPiBEb24ndCBiZSBzb3JyeS4gSSBhZ3JlZSB3 aXRoIHlvdSB0aGF0IHRoZSBrdW5pdF9zdHJlYW0gc3R1ZmYgaXMgbm90IHZlcnkgcHJldHR5Lgo+ ID4KPiA+IFNodWFoLCBoYXZlIHdlIG1pc3NlZCB0aGUgbWVyZ2Ugd2luZG93IGZvciA1LjM/Cj4g Pgo+ID4gSSBzYXcgeW91IG9ubHkgc2VudCBvbmUgUFIgb3V0IHNvIGZhciBmb3IgdGhpcyByZWxl YXNlLCBhbmQgdGhlcmUKPiA+IHdhc24ndCBtdWNoIGluIGl0OyBJIGltYWdpbmUgeW91IGFyZSBn b2luZyB0byBzZW5kIGF0IGxlYXN0IG9uZSBtb3JlPwo+ID4KPiA+IEkgZmlndXJlLCBpZiB3ZSBz dGlsbCBnb3QgdGltZSB0byB0cnkgb3V0IHlvdXIgc3VnZ2VzdGlvbiwgU3RlcGhlbiwgbm8KPiA+ IGhhcm0gaW4gdHJ5aW5nLgo+ID4KPiA+IEFsc28gaWYgd2UgbWlzc2VkIGl0LCB0aGVuIEkgaGF2 ZSBhbm90aGVyIGNvdXBsZSBtb250aHMgdG8gcGxheSBhcm91bmQgd2l0aCBpdC4KPiA+Cj4gPiBX aGF0IGRvIHlvdSB0aGluaz8KCkkgdGFsa2VkIHRvIFNodWFoIG9mZiB0aHJlYWQsIHNoZSB3b3Vs ZCBsaWtlIHVzIHRvIHJlc29sdmUgdGhpcwpkaXNjdXNzaW9uIGJlZm9yZSBhY2NlcHRpbmcgdGhl IHBhdGNoc2V0LgoKU2hlIGFsc28gc2FpZCB0aGF0IHRoaXMgaXMgcHJvYmFibHkgZ29pbmcgdG8g aGF2ZSB0byB3YWl0IHVudGlsIHY1LjQuCgpOZXZlcnRoZWxlc3MsIFN0ZXBoZW4sIHdvdWxkIHlv dSBtaW5kIHRha2luZyBhIGxvb2sgYXQgdGhlIHBhdGNoIEkKcG9zdGVkIGJlbG93PyBJIHdvdWxk IGxpa2UgdG8gZ2V0IHlvdXIgdGhvdWdodHMgb24gdGhlIHN1bSBvZiBhbGwgdGhlCmNoYW5nZXMg SSBhbSBnb2luZyB0byBoYXZlIHRvIG1ha2UgYmVmb3JlIEkgdHJ5IHRvIGludGVncmF0ZSB0aGVt IGludG8KdGhlIGV4aXN0aW5nIHBhdGNoZXMuCgpTb3JyeSBmb3IgYmVpbmcgbGF6eSwgYnV0IEkg c3VzcGVjdCB5b3Ugd29uJ3QgbGlrZSB0aGUgZmlyc3QgcGFzcyBvZgpob3cgSSBhbSBkb2luZyBp dCwgYW5kIEkgdGhpbmsgaXQgd2lsbCBwcm9iYWJseSBiZSBlYXNpZXIgZm9yIHlvdSB0bwpnaXZl IGVhcmx5IGZlZWRiYWNrIG9uIGl0IGFzIGl0cyBvd24gY2hhbmdlIGFueXdheS4KCj4gSSBhdHRh Y2hlZCB0aGUgcGF0Y2ggbWVudGlvbmVkIGFib3ZlIGJlbG93LiBMZXQgbWUga25vdyB3aGF0IHlv dSB0aGluayEKPgo+IENoZWVycyEKPgo+IEZyb20gNTNkNDc1ZDNkNTZhZmNmOTJiNDUyYzZkMzQ3 ZGJlZGZhMWExN2QzNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKPiBGcm9tOiBCcmVuZGFuIEhp Z2dpbnMgPGJyZW5kYW5oaWdnaW5zQGdvb2dsZS5jb20+Cj4gRGF0ZTogVGh1LCAxOCBKdWwgMjAx OSAxNjowODo1MiAtMDcwMAo+IFN1YmplY3Q6IFtQQVRDSCB2MV0gRE8gTk9UIE1FUkdFOiBzdGFy dGVkIHBsYXlpbmcgYXJvdW5kIHdpdGggdGhlCj4gIHNlcmlhbGl6YXRpb24gYXBpCj4KPiAtLS0K PiAgaW5jbHVkZS9rdW5pdC9hc3NlcnQuaCB8IDEzMCArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysKPiAgaW5jbHVkZS9rdW5pdC9tb2NrLmggICB8ICAgNCArCj4gIGt1bml0L01ha2VmaWxl ICAgICAgICAgfCAgIDMgKy0KPiAga3VuaXQvYXNzZXJ0LmMgICAgICAgICB8IDE3OSArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICBrdW5pdC9tb2NrLmMgICAgICAg ICAgIHwgICA2ICstCj4gIDUgZmlsZXMgY2hhbmdlZCwgMzE4IGluc2VydGlvbnMoKyksIDQgZGVs ZXRpb25zKC0pCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2t1bml0L2Fzc2VydC5oCj4g IGNyZWF0ZSBtb2RlIDEwMDY0NCBrdW5pdC9hc3NlcnQuYwo+Cj4gZGlmZiAtLWdpdCBhL2luY2x1 ZGUva3VuaXQvYXNzZXJ0LmggYi9pbmNsdWRlL2t1bml0L2Fzc2VydC5oCj4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAwLi5lMDU0ZmRmZjQ2NDJmCj4gLS0tIC9kZXYv bnVsbAo+ICsrKyBiL2luY2x1ZGUva3VuaXQvYXNzZXJ0LmgKPiBAQCAtMCwwICsxLDEzMCBAQAo+ ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLwo+ICsvKgo+ICsgKiBBc3Nl cnRpb24gYW5kIGV4cGVjdGF0aW9uIHNlcmlhbGl6YXRpb24gQVBJLgo+ICsgKgo+ICsgKiBDb3B5 cmlnaHQgKEMpIDIwMTksIEdvb2dsZSBMTEMuCj4gKyAqIEF1dGhvcjogQnJlbmRhbiBIaWdnaW5z IDxicmVuZGFuaGlnZ2luc0Bnb29nbGUuY29tPgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgX0tVTklU X0FTU0VSVF9ICj4gKyNkZWZpbmUgX0tVTklUX0FTU0VSVF9ICj4gKwo+ICsjaW5jbHVkZSA8a3Vu aXQvdGVzdC5oPgo+ICsjaW5jbHVkZSA8a3VuaXQvbW9jay5oPgo+ICsKPiArZW51bSBrdW5pdF9h c3NlcnRfdHlwZSB7Cj4gKyAgICAgICBLVU5JVF9BU1NFUlRJT04sCj4gKyAgICAgICBLVU5JVF9F WFBFQ1RBVElPTiwKPiArfTsKPiArCj4gK3N0cnVjdCBrdW5pdF9hc3NlcnQgewo+ICsgICAgICAg ZW51bSBrdW5pdF9hc3NlcnRfdHlwZSB0eXBlOwo+ICsgICAgICAgY29uc3QgY2hhciAqbGluZTsK PiArICAgICAgIGNvbnN0IGNoYXIgKmZpbGU7Cj4gKyAgICAgICBzdHJ1Y3QgdmFfZm9ybWF0IG1l c3NhZ2U7Cj4gKyAgICAgICB2b2lkICgqZm9ybWF0KShzdHJ1Y3Qga3VuaXRfYXNzZXJ0ICphc3Nl cnQsCj4gKyAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qga3VuaXRfc3RyZWFtICpzdHJlYW0p Owo+ICt9Owo+ICsKPiArdm9pZCBrdW5pdF9iYXNlX2Fzc2VydF9mb3JtYXQoc3RydWN0IGt1bml0 X2Fzc2VydCAqYXNzZXJ0LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBr dW5pdF9zdHJlYW0gKnN0cmVhbSk7Cj4gKwo+ICt2b2lkIGt1bml0X2Fzc2VydF9wcmludF9tc2co c3RydWN0IGt1bml0X2Fzc2VydCAqYXNzZXJ0LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3Qga3VuaXRfc3RyZWFtICpzdHJlYW0pOwo+ICsKPiArc3RydWN0IGt1bml0X3VuYXJ5 X2Fzc2VydCB7Cj4gKyAgICAgICBzdHJ1Y3Qga3VuaXRfYXNzZXJ0IGFzc2VydDsKPiArICAgICAg IGNvbnN0IGNoYXIgKmNvbmRpdGlvbjsKPiArICAgICAgIGJvb2wgZXhwZWN0ZWRfdHJ1ZTsKPiAr fTsKPiArCj4gK3ZvaWQga3VuaXRfdW5hcnlfYXNzZXJ0X2Zvcm1hdChzdHJ1Y3Qga3VuaXRfYXNz ZXJ0ICphc3NlcnQsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBrdW5p dF9zdHJlYW0gKnN0cmVhbSk7Cj4gKwo+ICtzdHJ1Y3Qga3VuaXRfcHRyX25vdF9lcnJfYXNzZXJ0 IHsKPiArICAgICAgIHN0cnVjdCBrdW5pdF9hc3NlcnQgYXNzZXJ0Owo+ICsgICAgICAgY29uc3Qg Y2hhciAqdGV4dDsKPiArICAgICAgIHZvaWQgKnZhbHVlOwo+ICt9Owo+ICsKPiArdm9pZCBrdW5p dF9wdHJfbm90X2Vycl9hc3NlcnRfZm9ybWF0KHN0cnVjdCBrdW5pdF9hc3NlcnQgKmFzc2VydCwK PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGt1bml0X3N0cmVh bSAqc3RyZWFtKTsKPiArCj4gK3N0cnVjdCBrdW5pdF9iaW5hcnlfYXNzZXJ0IHsKPiArICAgICAg IHN0cnVjdCBrdW5pdF9hc3NlcnQgYXNzZXJ0Owo+ICsgICAgICAgY29uc3QgY2hhciAqb3BlcmF0 aW9uOwo+ICsgICAgICAgY29uc3QgY2hhciAqbGVmdF90ZXh0Owo+ICsgICAgICAgbG9uZyBsb25n IGxlZnRfdmFsdWU7Cj4gKyAgICAgICBjb25zdCBjaGFyICpyaWdodF90ZXh0Owo+ICsgICAgICAg bG9uZyBsb25nIHJpZ2h0X3ZhbHVlOwo+ICt9Owo+ICsKPiArdm9pZCBrdW5pdF9iaW5hcnlfYXNz ZXJ0X2Zvcm1hdChzdHJ1Y3Qga3VuaXRfYXNzZXJ0ICphc3NlcnQsCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdHJ1Y3Qga3VuaXRfc3RyZWFtICpzdHJlYW0pOwo+ICsKPiArc3Ry dWN0IGt1bml0X2JpbmFyeV9wdHJfYXNzZXJ0IHsKPiArICAgICAgIHN0cnVjdCBrdW5pdF9hc3Nl cnQgYXNzZXJ0Owo+ICsgICAgICAgY29uc3QgY2hhciAqb3BlcmF0aW9uOwo+ICsgICAgICAgY29u c3QgY2hhciAqbGVmdF90ZXh0Owo+ICsgICAgICAgdm9pZCAqbGVmdF92YWx1ZTsKPiArICAgICAg IGNvbnN0IGNoYXIgKnJpZ2h0X3RleHQ7Cj4gKyAgICAgICB2b2lkICpyaWdodF92YWx1ZTsKPiAr fTsKPiArCj4gK3ZvaWQga3VuaXRfYmluYXJ5X3B0cl9hc3NlcnRfZm9ybWF0KHN0cnVjdCBrdW5p dF9hc3NlcnQgKmFzc2VydCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dHJ1Y3Qga3VuaXRfc3RyZWFtICpzdHJlYW0pOwo+ICsKPiArc3RydWN0IGt1bml0X2JpbmFyeV9z dHJfYXNzZXJ0IHsKPiArICAgICAgIHN0cnVjdCBrdW5pdF9hc3NlcnQgYXNzZXJ0Owo+ICsgICAg ICAgY29uc3QgY2hhciAqb3BlcmF0aW9uOwo+ICsgICAgICAgY29uc3QgY2hhciAqbGVmdF90ZXh0 Owo+ICsgICAgICAgY29uc3QgY2hhciAqbGVmdF92YWx1ZTsKPiArICAgICAgIGNvbnN0IGNoYXIg KnJpZ2h0X3RleHQ7Cj4gKyAgICAgICBjb25zdCBjaGFyICpyaWdodF92YWx1ZTsKPiArfTsKPiAr Cj4gK3ZvaWQga3VuaXRfYmluYXJ5X3N0cl9hc3NlcnRfZm9ybWF0KHN0cnVjdCBrdW5pdF9hc3Nl cnQgKmFzc2VydCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg a3VuaXRfc3RyZWFtICpzdHJlYW0pOwo+ICsKPiArc3RydWN0IGt1bml0X21vY2tfYXNzZXJ0IHsK PiArICAgICAgIHN0cnVjdCBrdW5pdF9hc3NlcnQgYXNzZXJ0Owo+ICt9Owo+ICsKPiArc3RydWN0 IGt1bml0X21vY2tfbm9fZXhwZWN0YXRpb25zIHsKPiArICAgICAgIHN0cnVjdCBrdW5pdF9tb2Nr X2Fzc2VydCBhc3NlcnQ7Cj4gK307Cj4gKwo+ICtzdHJ1Y3Qga3VuaXRfbW9ja19kZWNsYXJhdGlv biB7Cj4gKyAgICAgICBjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lOwo+ICsgICAgICAgY29uc3Qg Y2hhciAqKnR5cGVfbmFtZXM7Cj4gKyAgICAgICBjb25zdCB2b2lkICoqcGFyYW1zOwo+ICsgICAg ICAgaW50IGxlbjsKPiArfTsKPiArCj4gK3ZvaWQga3VuaXRfbW9ja19kZWNsYXJhdGlvbl9mb3Jt YXQoc3RydWN0IGt1bml0X21vY2tfZGVjbGFyYXRpb24gKmRlY2xhcmF0aW9uLAo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGt1bml0X3N0cmVhbSAqc3RyZWFtKTsK PiArCj4gK3N0cnVjdCBrdW5pdF9tYXRjaGVyX3Jlc3VsdCB7Cj4gKyAgICAgICBzdHJ1Y3Qga3Vu aXRfYXNzZXJ0IGFzc2VydDsKPiArfTsKPiArCj4gK3N0cnVjdCBrdW5pdF9tb2NrX2ZhaWxlZF9t YXRjaCB7Cj4gKyAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIG5vZGU7Cj4gKyAgICAgICBjb25zdCBj aGFyICpleHBlY3RhdGlvbl90ZXh0Owo+ICsgICAgICAgc3RydWN0IGt1bml0X21hdGNoZXJfcmVz dWx0ICptYXRjaGVyX2xpc3Q7Cj4gKyAgICAgICBzaXplX3QgbWF0Y2hlcl9saXN0X2xlbjsKPiAr fTsKPiArCj4gK3ZvaWQga3VuaXRfbW9ja19mYWlsZWRfbWF0Y2hfZm9ybWF0KHN0cnVjdCBrdW5p dF9tb2NrX2ZhaWxlZF9tYXRjaCAqbWF0Y2gsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IGt1bml0X3N0cmVhbSAqc3RyZWFtKTsKPiArCj4gK3N0cnVjdCBrdW5p dF9tb2NrX25vX21hdGNoIHsKPiArICAgICAgIHN0cnVjdCBrdW5pdF9tb2NrX2Fzc2VydCBhc3Nl cnQ7Cj4gKyAgICAgICBzdHJ1Y3Qga3VuaXRfbW9ja19kZWNsYXJhdGlvbiBkZWNsYXJhdGlvbjsK PiArICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZmFpbGVkX21hdGNoX2xpc3Q7Cj4gK307Cj4gKwo+ ICt2b2lkIGt1bml0X21vY2tfbm9fbWF0Y2hfZm9ybWF0KHN0cnVjdCBrdW5pdF9hc3NlcnQgKmFz c2VydCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBrdW5pdF9zdHJl YW0gKnN0cmVhbSk7Cj4gKwo+ICsjZW5kaWYgLyogIF9LVU5JVF9BU1NFUlRfSCAqLwo+IGRpZmYg LS1naXQgYS9pbmNsdWRlL2t1bml0L21vY2suaCBiL2luY2x1ZGUva3VuaXQvbW9jay5oCj4gaW5k ZXggMDAxYjk2YWY2MmYxZS4uNTJjOWU0MjdjODMxYiAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2t1 bml0L21vY2suaAo+ICsrKyBiL2luY2x1ZGUva3VuaXQvbW9jay5oCj4gQEAgLTE0NCw2ICsxNDQs MTAgQEAgdm9pZCBtb2NrX3JlZ2lzdGVyX2Zvcm1hdHRlcihzdHJ1Y3QgbW9ja19wYXJhbV9mb3Jt YXR0ZXIgKmZvcm1hdHRlcik7Cj4KPiAgdm9pZCBtb2NrX3VucmVnaXN0ZXJfZm9ybWF0dGVyKHN0 cnVjdCBtb2NrX3BhcmFtX2Zvcm1hdHRlciAqZm9ybWF0dGVyKTsKPgo+ICt2b2lkIG1vY2tfZm9y bWF0X3BhcmFtKHN0cnVjdCBrdW5pdF9zdHJlYW0gKnN0cmVhbSwKPiArICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IGNoYXIgKnR5cGVfbmFtZSwKPiArICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IHZvaWQgKnBhcmFtKTsKPiArCj4gIHN0cnVjdCBtb2NrICptb2NrX2dldF9nbG9iYWxfbW9j ayh2b2lkKTsKPgo+ICAjZGVmaW5lIE1PQ0sobmFtZSkgbmFtZSMjX21vY2sKPiBkaWZmIC0tZ2l0 IGEva3VuaXQvTWFrZWZpbGUgYi9rdW5pdC9NYWtlZmlsZQo+IGluZGV4IGJiZjQzZmNmYjkzYTku LjE0OWQ4NTZhMzBmMDQgMTAwNjQ0Cj4gLS0tIGEva3VuaXQvTWFrZWZpbGUKPiArKysgYi9rdW5p dC9NYWtlZmlsZQo+IEBAIC0zLDcgKzMsOCBAQCBvYmotJChDT05GSUdfS1VOSVQpICs9ICAgICAg ICAgICAgICAgICAgdGVzdC5vIFwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29tbW9uLW1vY2tzLm8gXAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJpbmctc3RyZWFtLm8gXAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBrdW5pdC1zdHJlYW0ubyBcCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHRyeS1jYXRjaC5vCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRyeS1jYXRjaC5vIFwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYXNzZXJ0Lm8KPgo+ICBvYmotJChDT05GSUdfS1VOSVRfVEVTVCkgKz0gICAgICAg ICAgICB0ZXN0LXRlc3QubyBcCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRlc3QtbW9jay5vIFwKPiBkaWZmIC0tZ2l0IGEva3VuaXQvYXNzZXJ0LmMgYi9rdW5pdC9h c3NlcnQuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwMC4uNzVi YjY5MjJhOTk0ZQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9rdW5pdC9hc3NlcnQuYwo+IEBAIC0w LDAgKzEsMTc5IEBACj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCj4gKy8q Cj4gKyAqIEFzc2VydGlvbiBhbmQgZXhwZWN0YXRpb24gc2VyaWFsaXphdGlvbiBBUEkuCj4gKyAq Cj4gKyAqIENvcHlyaWdodCAoQykgMjAxOSwgR29vZ2xlIExMQy4KPiArICogQXV0aG9yOiBCcmVu ZGFuIEhpZ2dpbnMgPGJyZW5kYW5oaWdnaW5zQGdvb2dsZS5jb20+Cj4gKyAqLwo+ICsjaW5jbHVk ZSA8a3VuaXQvYXNzZXJ0Lmg+Cj4gKwo+ICt2b2lkIGt1bml0X2Jhc2VfYXNzZXJ0X2Zvcm1hdChz dHJ1Y3Qga3VuaXRfYXNzZXJ0ICphc3NlcnQsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IGt1bml0X3N0cmVhbSAqc3RyZWFtKQo+ICt7Cj4gKyAgICAgICBjb25zdCBjaGFy ICpleHBlY3Rfb3JfYXNzZXJ0Owo+ICsKPiArICAgICAgIGlmIChhc3NlcnQtPnR5cGUgPT0gS1VO SVRfRVhQRUNUQVRJT04pCj4gKyAgICAgICAgICAgICAgIGV4cGVjdF9vcl9hc3NlcnQgPSAiRVhQ RUNUQVRJT04iOwo+ICsgICAgICAgZWxzZQo+ICsgICAgICAgICAgICAgICBleHBlY3Rfb3JfYXNz ZXJ0ID0gIkFTU0VSVElPTiI7Cj4gKwo+ICsgICAgICAga3VuaXRfc3RyZWFtX2FkZChzdHJlYW0s ICIlcyBGQUlMRUQgYXQgJXM6JXNcbiIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVj dF9vcl9hc3NlcnQsIGFzc2VydC0+ZmlsZSwgYXNzZXJ0LT5saW5lKTsKPiArfQo+ICsKPiArdm9p ZCBrdW5pdF9hc3NlcnRfcHJpbnRfbXNnKHN0cnVjdCBrdW5pdF9hc3NlcnQgKmFzc2VydCwKPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGt1bml0X3N0cmVhbSAqc3RyZWFtKQo+ ICt7Cj4gKyAgICAgICBpZiAoYXNzZXJ0LT5tZXNzYWdlLmZtdCkKPiArICAgICAgICAgICAgICAg a3VuaXRfc3RyZWFtX2FkZChzdHJlYW0sICJcbiVwViIsICZhc3NlcnQtPm1lc3NhZ2UpOwo+ICt9 Cj4gKwo+ICt2b2lkIGt1bml0X3VuYXJ5X2Fzc2VydF9mb3JtYXQoc3RydWN0IGt1bml0X2Fzc2Vy dCAqYXNzZXJ0LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qga3VuaXRf c3RyZWFtICpzdHJlYW0pCj4gK3sKPiArICAgICAgIHN0cnVjdCBrdW5pdF91bmFyeV9hc3NlcnQg KnVuYXJ5X2Fzc2VydCA9IGNvbnRhaW5lcl9vZigKPiArICAgICAgICAgICAgICAgICAgICAgICBh c3NlcnQsIHN0cnVjdCBrdW5pdF91bmFyeV9hc3NlcnQsIGFzc2VydCk7Cj4gKwo+ICsgICAgICAg a3VuaXRfYmFzZV9hc3NlcnRfZm9ybWF0KGFzc2VydCwgc3RyZWFtKTsKPiArICAgICAgIGlmICh1 bmFyeV9hc3NlcnQtPmV4cGVjdGVkX3RydWUpCj4gKyAgICAgICAgICAgICAgIGt1bml0X3N0cmVh bV9hZGQoc3RyZWFtLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdEV4cGVj dGVkICVzIHRvIGJlIHRydWUsIGJ1dCBpcyBmYWxzZVxuIiwKPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1bmFyeV9hc3NlcnQtPmNvbmRpdGlvbik7Cj4gKyAgICAgICBlbHNlCj4g KyAgICAgICAgICAgICAgIGt1bml0X3N0cmVhbV9hZGQoc3RyZWFtLAo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJcdEV4cGVjdGVkICVzIHRvIGJlIGZhbHNlLCBidXQgaXMgdHJ1 ZVxuIiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmFyeV9hc3NlcnQtPmNv bmRpdGlvbik7Cj4gKyAgICAgICBrdW5pdF9hc3NlcnRfcHJpbnRfbXNnKGFzc2VydCwgc3RyZWFt KTsKPiArfQo+ICsKPiArdm9pZCBrdW5pdF9wdHJfbm90X2Vycl9hc3NlcnRfZm9ybWF0KHN0cnVj dCBrdW5pdF9hc3NlcnQgKmFzc2VydCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3RydWN0IGt1bml0X3N0cmVhbSAqc3RyZWFtKQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3Qg a3VuaXRfcHRyX25vdF9lcnJfYXNzZXJ0ICpwdHJfYXNzZXJ0ID0gY29udGFpbmVyX29mKAo+ICsg ICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCwgc3RydWN0IGt1bml0X3B0cl9ub3RfZXJyX2Fz c2VydCwgYXNzZXJ0KTsKPiArCj4gKyAgICAgICBrdW5pdF9iYXNlX2Fzc2VydF9mb3JtYXQoYXNz ZXJ0LCBzdHJlYW0pOwo+ICsgICAgICAgaWYgKCFwdHJfYXNzZXJ0LT52YWx1ZSkgewo+ICsgICAg ICAgICAgICAgICBrdW5pdF9zdHJlYW1fYWRkKHN0cmVhbSwKPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiXHRFeHBlY3RlZCAlcyBpcyBub3QgbnVsbCwgYnV0IGlzXG4iLAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0cl9hc3NlcnQtPnRleHQpOwo+ICsgICAg ICAgfSBlbHNlIGlmIChJU19FUlIocHRyX2Fzc2VydC0+dmFsdWUpKSB7Cj4gKyAgICAgICAgICAg ICAgIGt1bml0X3N0cmVhbV9hZGQoc3RyZWFtLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICJcdEV4cGVjdGVkICVzIGlzIG5vdCBlcnJvciwgYnV0IGlzOiAlbGRcbiIsCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRyX2Fzc2VydC0+dGV4dCwKPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQVFJfRVJSKHB0cl9hc3NlcnQtPnZhbHVlKSk7Cj4g KyAgICAgICB9Cj4gKyAgICAgICBrdW5pdF9hc3NlcnRfcHJpbnRfbXNnKGFzc2VydCwgc3RyZWFt KTsKPiArfQo+ICsKPiArdm9pZCBrdW5pdF9iaW5hcnlfYXNzZXJ0X2Zvcm1hdChzdHJ1Y3Qga3Vu aXRfYXNzZXJ0ICphc3NlcnQsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3Qga3VuaXRfc3RyZWFtICpzdHJlYW0pCj4gK3sKPiArICAgICAgIHN0cnVjdCBrdW5pdF9iaW5h cnlfYXNzZXJ0ICpiaW5hcnlfYXNzZXJ0ID0gY29udGFpbmVyX29mKAo+ICsgICAgICAgICAgICAg ICAgICAgICAgIGFzc2VydCwgc3RydWN0IGt1bml0X2JpbmFyeV9hc3NlcnQsIGFzc2VydCk7Cj4g Kwo+ICsgICAgICAga3VuaXRfYmFzZV9hc3NlcnRfZm9ybWF0KGFzc2VydCwgc3RyZWFtKTsKPiAr ICAgICAgIGt1bml0X3N0cmVhbV9hZGQoc3RyZWFtLAo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAiXHRFeHBlY3RlZCAlcyAlcyAlcywgYnV0XG4iLAo+ICsgICAgICAgICAgICAgICAgICAgICAg ICBiaW5hcnlfYXNzZXJ0LT5sZWZ0X3RleHQsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGJp bmFyeV9hc3NlcnQtPm9wZXJhdGlvbiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgYmluYXJ5 X2Fzc2VydC0+cmlnaHRfdGV4dCk7Cj4gKyAgICAgICBrdW5pdF9zdHJlYW1fYWRkKHN0cmVhbSwg Ilx0XHQlcyA9PSAlbGxkXG4iLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICBiaW5hcnlfYXNz ZXJ0LT5sZWZ0X3RleHQsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGJpbmFyeV9hc3NlcnQt PmxlZnRfdmFsdWUpOwo+ICsgICAgICAga3VuaXRfc3RyZWFtX2FkZChzdHJlYW0sICJcdFx0JXMg PT0gJWxsZCIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGJpbmFyeV9hc3NlcnQtPnJpZ2h0 X3RleHQsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGJpbmFyeV9hc3NlcnQtPnJpZ2h0X3Zh bHVlKTsKPiArICAgICAgIGt1bml0X2Fzc2VydF9wcmludF9tc2coYXNzZXJ0LCBzdHJlYW0pOwo+ ICt9Cj4gKwoKSSBjb3VsZCBwcm9iYWJseSByZWR1Y2Ugc29tZSBvZiB0aGUgY29kZSBkdXBsaWNh dGlvbiBoZXJlIGJ5IHVzaW5nIGEKdmFyaWFibGUgdHlwZSBzdHJ1Y3QgZm9yIGxlZnRfdmFsdWUg YW5kIHJpZ2h0X3ZhbHVlLCBidXQgdGhhdCB3b3VsZAphY3R1YWxseSBpbmNyZWFzZSB0aGUgdXNh Z2Ugb2Yge2t1bml0fHN0cmluZ31fc3RyZWFtOyBpdCBpcyBwcm9iYWJseQp0aGUgcmlnaHQgdGhp bmcgdG8gZG8sIGJ1dCBJIHdhbnRlZCB0byBnZXQgeW91ciB0aG91Z2h0cyBvbiBpdCBmaXJzdC4K Cj4gK3ZvaWQga3VuaXRfYmluYXJ5X3B0cl9hc3NlcnRfZm9ybWF0KHN0cnVjdCBrdW5pdF9hc3Nl cnQgKmFzc2VydCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg a3VuaXRfc3RyZWFtICpzdHJlYW0pCj4gK3sKPiArICAgICAgIHN0cnVjdCBrdW5pdF9iaW5hcnlf cHRyX2Fzc2VydCAqYmluYXJ5X2Fzc2VydCA9IGNvbnRhaW5lcl9vZigKPiArICAgICAgICAgICAg ICAgICAgICAgICBhc3NlcnQsIHN0cnVjdCBrdW5pdF9iaW5hcnlfcHRyX2Fzc2VydCwgYXNzZXJ0 KTsKPiArCj4gKyAgICAgICBrdW5pdF9iYXNlX2Fzc2VydF9mb3JtYXQoYXNzZXJ0LCBzdHJlYW0p Owo+ICsgICAgICAga3VuaXRfc3RyZWFtX2FkZChzdHJlYW0sCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICJcdEV4cGVjdGVkICVzICVzICVzLCBidXRcbiIsCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgIGJpbmFyeV9hc3NlcnQtPmxlZnRfdGV4dCwKPiArICAgICAgICAgICAgICAgICAgICAg ICAgYmluYXJ5X2Fzc2VydC0+b3BlcmF0aW9uLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICBi aW5hcnlfYXNzZXJ0LT5yaWdodF90ZXh0KTsKPiArICAgICAgIGt1bml0X3N0cmVhbV9hZGQoc3Ry ZWFtLCAiXHRcdCVzID09ICVwS1xuIiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgYmluYXJ5 X2Fzc2VydC0+bGVmdF90ZXh0LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICBiaW5hcnlfYXNz ZXJ0LT5sZWZ0X3ZhbHVlKTsKPiArICAgICAgIGt1bml0X3N0cmVhbV9hZGQoc3RyZWFtLCAiXHRc dCVzID09ICVwSyIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGJpbmFyeV9hc3NlcnQtPnJp Z2h0X3RleHQsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGJpbmFyeV9hc3NlcnQtPnJpZ2h0 X3ZhbHVlKTsKPiArICAgICAgIGt1bml0X2Fzc2VydF9wcmludF9tc2coYXNzZXJ0LCBzdHJlYW0p Owo+ICt9Cj4gKwo+ICt2b2lkIGt1bml0X2JpbmFyeV9zdHJfYXNzZXJ0X2Zvcm1hdChzdHJ1Y3Qg a3VuaXRfYXNzZXJ0ICphc3NlcnQsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IGt1bml0X3N0cmVhbSAqc3RyZWFtKQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3Qga3Vu aXRfYmluYXJ5X3N0cl9hc3NlcnQgKmJpbmFyeV9hc3NlcnQgPSBjb250YWluZXJfb2YoCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LCBzdHJ1Y3Qga3VuaXRfYmluYXJ5X3N0cl9hc3Nl cnQsIGFzc2VydCk7Cj4gKwo+ICsgICAgICAga3VuaXRfYmFzZV9hc3NlcnRfZm9ybWF0KGFzc2Vy dCwgc3RyZWFtKTsKPiArICAgICAgIGt1bml0X3N0cmVhbV9hZGQoc3RyZWFtLAo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAiXHRFeHBlY3RlZCAlcyAlcyAlcywgYnV0XG4iLAo+ICsgICAgICAg ICAgICAgICAgICAgICAgICBiaW5hcnlfYXNzZXJ0LT5sZWZ0X3RleHQsCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgIGJpbmFyeV9hc3NlcnQtPm9wZXJhdGlvbiwKPiArICAgICAgICAgICAgICAg ICAgICAgICAgYmluYXJ5X2Fzc2VydC0+cmlnaHRfdGV4dCk7Cj4gKyAgICAgICBrdW5pdF9zdHJl YW1fYWRkKHN0cmVhbSwgIlx0XHQlcyA9PSAlc1xuIiwKPiArICAgICAgICAgICAgICAgICAgICAg ICAgYmluYXJ5X2Fzc2VydC0+bGVmdF90ZXh0LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICBi aW5hcnlfYXNzZXJ0LT5sZWZ0X3ZhbHVlKTsKPiArICAgICAgIGt1bml0X3N0cmVhbV9hZGQoc3Ry ZWFtLCAiXHRcdCVzID09ICVzIiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgYmluYXJ5X2Fz c2VydC0+cmlnaHRfdGV4dCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgYmluYXJ5X2Fzc2Vy dC0+cmlnaHRfdmFsdWUpOwo+ICsgICAgICAga3VuaXRfYXNzZXJ0X3ByaW50X21zZyhhc3NlcnQs IHN0cmVhbSk7Cj4gK30KPiArCj4gK3ZvaWQga3VuaXRfbW9ja19kZWNsYXJhdGlvbl9mb3JtYXQo c3RydWN0IGt1bml0X21vY2tfZGVjbGFyYXRpb24gKmRlY2xhcmF0aW9uLAo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGt1bml0X3N0cmVhbSAqc3RyZWFtKQo+ICt7 Cj4gKyAgICAgICBpbnQgaTsKPiArCj4gKyAgICAgICBrdW5pdF9zdHJlYW1fYWRkKHN0cmVhbSwg IiVzKCIsIGRlY2xhcmF0aW9uLT5mdW5jdGlvbl9uYW1lKTsKPiArICAgICAgIGZvciAoaSA9IDA7 IGkgPCBkZWNsYXJhdGlvbi0+bGVuOyBpKyspIHsKPiArICAgICAgICAgICAgICAgbW9ja19mb3Jt YXRfcGFyYW0oc3RyZWFtLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNs YXJhdGlvbi0+dHlwZV9uYW1lc1tpXSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZGVjbGFyYXRpb24tPnBhcmFtc1tpXSk7Cj4gKyAgICAgICAgICAgICAgIGlmIChpIDwgZGVj bGFyYXRpb24tPmxlbiAtIDEpCj4gKyAgICAgICAgICAgICAgICAgICAgICAga3VuaXRfc3RyZWFt X2FkZChzdHJlYW0sICIsICIpOwo+ICsgICAgICAgfQo+ICsgICAgICAga3VuaXRfc3RyZWFtX2Fk ZChzdHJlYW0sICIpXG4iKTsKPiArfQo+ICsKPiArdm9pZCBrdW5pdF9tb2NrX2ZhaWxlZF9tYXRj aF9mb3JtYXQoc3RydWN0IGt1bml0X21vY2tfZmFpbGVkX21hdGNoICptYXRjaCwKPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qga3VuaXRfc3RyZWFtICpzdHJlYW0p Cj4gK3sKPiArICAgICAgIHN0cnVjdCBrdW5pdF9tYXRjaGVyX3Jlc3VsdCAqcmVzdWx0Owo+ICsg ICAgICAgc2l6ZV90IGk7Cj4gKwo+ICsgICAgICAga3VuaXRfc3RyZWFtX2FkZChzdHJlYW0sCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICJUcmllZCBleHBlY3RhdGlvbjogJXMsIGJ1dFxuIiwK PiArICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gtPmV4cGVjdGF0aW9uX3RleHQpOwo+ICsg ICAgICAgZm9yIChpID0gMDsgaSA8IG1hdGNoLT5tYXRjaGVyX2xpc3RfbGVuOyBpKyspIHsKPiAr ICAgICAgICAgICAgICAgcmVzdWx0ID0gJm1hdGNoLT5tYXRjaGVyX2xpc3RbaV07Cj4gKyAgICAg ICAgICAgICAgIGt1bml0X3N0cmVhbV9hZGQoc3RyZWFtLCAiXHQiKTsKPiArICAgICAgICAgICAg ICAgcmVzdWx0LT5hc3NlcnQuZm9ybWF0KCZyZXN1bHQtPmFzc2VydCwgc3RyZWFtKTsKPiArICAg ICAgICAgICAgICAga3VuaXRfc3RyZWFtX2FkZChzdHJlYW0sICJcbiIpOwo+ICsgICAgICAgfQo+ ICt9Cj4gKwo+ICt2b2lkIGt1bml0X21vY2tfbm9fbWF0Y2hfZm9ybWF0KHN0cnVjdCBrdW5pdF9h c3NlcnQgKmFzc2VydCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBr dW5pdF9zdHJlYW0gKnN0cmVhbSkKPiArewo+ICsgICAgICAgc3RydWN0IGt1bml0X21vY2tfYXNz ZXJ0ICptb2NrX2Fzc2VydCA9IGNvbnRhaW5lcl9vZigKPiArICAgICAgICAgICAgICAgICAgICAg ICBhc3NlcnQsIHN0cnVjdCBrdW5pdF9tb2NrX2Fzc2VydCwgYXNzZXJ0KTsKPiArICAgICAgIHN0 cnVjdCBrdW5pdF9tb2NrX25vX21hdGNoICpub19tYXRjaCA9IGNvbnRhaW5lcl9vZigKPiArICAg ICAgICAgICAgICAgICAgICAgICBtb2NrX2Fzc2VydCwgc3RydWN0IGt1bml0X21vY2tfbm9fbWF0 Y2gsIGFzc2VydCk7Cj4gKyAgICAgICBzdHJ1Y3Qga3VuaXRfbW9ja19mYWlsZWRfbWF0Y2ggKmV4 cGVjdGF0aW9uOwo+ICsKPiArICAgICAgIGt1bml0X2Jhc2VfYXNzZXJ0X2Zvcm1hdChhc3NlcnQs IHN0cmVhbSk7Cj4gKyAgICAgICBrdW5pdF9tb2NrX2RlY2xhcmF0aW9uX2Zvcm1hdCgmbm9fbWF0 Y2gtPmRlY2xhcmF0aW9uLCBzdHJlYW0pOwo+ICsKPiArICAgICAgIGxpc3RfZm9yX2VhY2hfZW50 cnkoZXhwZWN0YXRpb24sICZub19tYXRjaC0+ZmFpbGVkX21hdGNoX2xpc3QsIG5vZGUpCj4gKyAg ICAgICAgICAgICAgIGt1bml0X21vY2tfZmFpbGVkX21hdGNoX2Zvcm1hdChleHBlY3RhdGlvbiwg c3RyZWFtKTsKPiArfQo+IGRpZmYgLS1naXQgYS9rdW5pdC9tb2NrLmMgYi9rdW5pdC9tb2NrLmMK PiBpbmRleCBjY2IwYWJlMTExNDAyLi5hYjQ0MWE1OGE5MThjIDEwMDY0NAo+IC0tLSBhL2t1bml0 L21vY2suYwo+ICsrKyBiL2t1bml0L21vY2suYwo+IEBAIC0yNjksOSArMjY5LDkgQEAgc3RydWN0 IG1vY2tfcGFyYW1fZm9ybWF0dGVyICptb2NrX2ZpbmRfZm9ybWF0dGVyKGNvbnN0IGNoYXIgKnR5 cGVfbmFtZSkKPiAgICAgICAgIHJldHVybiBOVUxMOwo+ICB9Cj4KPiAtc3RhdGljIHZvaWQgbW9j a19mb3JtYXRfcGFyYW0oc3RydWN0IGt1bml0X3N0cmVhbSAqc3RyZWFtLAo+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnR5cGVfbmFtZSwKPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwYXJhbSkKPiArdm9pZCBtb2NrX2Zvcm1hdF9w YXJhbShzdHJ1Y3Qga3VuaXRfc3RyZWFtICpzdHJlYW0sCj4gKyAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBjaGFyICp0eXBlX25hbWUsCj4gKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2 b2lkICpwYXJhbSkKPiAgewo+ICAgICAgICAgc3RydWN0IG1vY2tfcGFyYW1fZm9ybWF0dGVyICpm b3JtYXR0ZXI7Cj4KPiAtLQo+IDIuMjIuMC42NTcuZzk2MGU5MmQyNGYtZ29vZwo+Cl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5n IGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==