From mboxrd@z Thu Jan 1 00:00:00 1970 From: Vince Hsu Subject: Re: [RFC PATCH 2/3] dvfs: add support for GK20A Date: Fri, 19 Dec 2014 09:25:07 +0800 Message-ID: <54937E73.4040802@nvidia.com> References: <1418884092-14448-1-git-send-email-vinceh@nvidia.com> <1418884092-14448-3-git-send-email-vinceh@nvidia.com> <5492A8E6.1040508@nvidia.com> <54932C04.6030506@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <54932C04.6030506-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: nouveau-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Nouveau" To: Samuel Pitoiset , Ben Skeggs Cc: "nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , Roy Spliet , Ben Skeggs List-Id: nouveau.vger.kernel.org Ck9uIDEyLzE5LzIwMTQgMDM6MzMgQU0sIFNhbXVlbCBQaXRvaXNldCB3cm90ZToKPiBPbiAxMi8x OC8yMDE0IDExOjI1IEFNLCBCZW4gU2tlZ2dzIHdyb3RlOgo+PiBPbiBUaHUsIERlYyAxOCwgMjAx NCBhdCA4OjEzIFBNLCBWaW5jZSBIc3UgPHZpbmNlaEBudmlkaWEuY29tPiB3cm90ZToKPj4+IEhl bGxvIEJlbiwKPj4+Cj4+PiBPbiAxMi8xOC8yMDE0IDA1OjM0IFBNLCBCZW4gU2tlZ2dzIHdyb3Rl Ogo+Pj4+IE9uIFRodSwgRGVjIDE4LCAyMDE0IGF0IDQ6MjggUE0sIFZpbmNlIEhzdSA8dmluY2Vo QG52aWRpYS5jb20+IHdyb3RlOgo+Pj4+PiBUaGlzIHBhdGNoIGNyZWF0ZXMgYSBzdWJkZXYgZm9y IERWRlMgKER5bmFtaWMgVm9sdGFnZSBhbmQgRnJlcXVlbmN5Cj4+Pj4+IFNjYWxpbmcpCj4+Pj4+ IHN1cHBvcnQgaW4gTm91dmVhdS4gVGhpcyBzdWJkZXYgcmVmZXJzIHRvIHRoZSBzdGF0dXMgaW5m b3JtYXRpb24gCj4+Pj4+IHByb3ZpZGVkCj4+Pj4+IGJ5Cj4+Pj4+IHRoZSBOVklESUEgaGFyZHdh cmUgYW5kIHRyaWVzIHRvIGFkanVzdCB0aGUgcGVyZm9ybWFuY2UgbGV2ZWwgCj4+Pj4+IGJhc2Vk IG9uCj4+Pj4+IHRoZQo+Pj4+PiBjYWxjdWxhdGVkIHRhcmdldC4gT25seSB0aGUgR0syMEEgaXMg c3VwcG9ydGVkIHJpZ2h0IG5vdy4KPj4+PiBIZXkgVmluY2UsCj4+Pj4KPj4+PiBJJ2Qgbm90IG1h a2UgYSBuZXcgc3ViZGV2LCBidXQgaW1wbGVtZW50IHRoaXMgaW4gdGhlIFBNVSAoUFdSCj4+Pj4g Y3VycmVudGx5KSBzdWJkZXYuICBUaGUgdWNvZGUgdGhhdCdzIHN1cHBvc2VkIHRvIGJlIHJ1bm5p bmcgdGhlcmUgY2FuCj4+Pj4gZG8gdGhlIHBlcmZvcm1hbmNlIG1vbml0b3JpbmcgaW4gYSBtb3Jl IGNvbXBsZXggaW1wbGVtZW50YXRpb24sIGFuZAo+Pj4+IGl0J3MgUE1VIGNvdW50ZXJzIHlvdSdy ZSB0b3VjaGluZyB0byBnZXQgdGhlIHVzYWdlIHN0YXRzIDopIEJ1dCB0aGUKPj4+PiBzaW1wbGVy IG9uLWhvc3QgaW1wbGVtZW50YXRpb24gaXMgdG90YWxseSBmaW5lLgo+Pj4gWWVhaCwgSSBrbm93 IHdlIGhhdmUgdGhlIGNvdW50ZXJzIGRlZmluZWQgaW4gZGFlbW9uLmMuIE1hcnRpbiAKPj4+IHJl bWluZGVkIG1lCj4+PiB0aGF0IFJveSBoYWQgYSBwYXRjaCB0byByZW1vdmUgdGhhdCwgc29ycnkg dGhhdCBJIGNvdWxkIG5vdCBmaW5kIHRoZSAKPj4+IGxpbmsKPj4+IG5vdy4gQW5vdGhlciByZWFz b24gSSBkaWQgbm90IHVzZSB0aGUgbm91dmVhdV9zcGVjc2lnIGlzIGJlY2F1c2UgSSAKPj4+IGhh ZCB0bwo+Pj4gY3JlYXRlIHNvbWUgbnZpZiBzdHJ1Y3R1cmVzIHRvIGFjY2VzcyB0aGUgY291bnRl cnMgYW5kIHRoYXQncyBub3QKPj4+IHN0cmFpZ2h0Zm9yd2FyZC4gSSdtIGhhcHB5IHRvIGhlYXIg eW91J3JlIGZpbmUgd2l0aCB0aGUgb24taG9zdAo+Pj4gaW1wbGVtZW50YXRpb24uIDopCj4KPiBI ZXkgVmluY2UsCj4KPiBJdCdzIG5vdCBSb3kgYnV0IG1lIHdobyBoYWQgc3VibWl0dGVkIGEgcGF0 Y2ggd2hpY2ggcmVtb3ZlcyBQREFFTU9OIAo+IHNpZ25hbHMuIDotKQpPb3BzLiBTb3JyeSBmb3Ig dGhlIHdyb25nIG5hbWUsIG15IGJhZC4KCj4KPiBIb3dldmVyLCB0aGUgcGF0Y2ggaXMgbm90IHJl YWR5IHRvIGJlIHVwc3RyZWFtIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSAKPiBhbnkgb3RoZXIgd2F5 cyB0byBleHBvc2UgdGhlc2UgcGVyZm9ybWFuY2UgY291bnRlcnMuCj4KPiBDdXJyZW50bHksIEkn bSB3b3JraW5nIG9uIHBlcmZtb24gYW5kIG52aWYgdG8gZXhwb3NlIGhhcmR3YXJlIGV2ZW50cyAK PiB0byB0aGUgdXNlcnNwYWNlIGZvciBOVjUwLiBJIGhvcGUgdG8gc3VibWl0IHRoZSBidW5jaCBv ZiBwYXRjaGVzIGFzIAo+IHNvb24gYXMgcG9zc2libGUgYnV0IHVuZm9ydHVuYXRlbHksCj4gSSBk b24ndCBoYXZlIG15IGZ1bGwgdGltZSBvbiB0aGlzLCBzbyBpdCB0YWtlcyBtb3JlIHRpbWUgdGhh biBleHBlY3RlZC4KPgo+Pj4KPj4+IEkgd2lsbCBtb3ZlIGFsbCB0byBQV1Igc3ViZGV2IGluIHRo ZSBuZXh0IHZlcnNpb24uCj4+Pj4KPj4+PiBUaGUgY3VycmVudCBiYXNlIFBNVSBpbXBsZW1lbnRh dGlvbiB0cmllcyB0byBkbyBhIGxvdCBvZiBzdHVmZiB0aGF0Cj4+Pj4geW91IGRvbid0IG5lZWQs IGp1c3Qgb3ZlcnJpZGUgdGhlIGltcGxlbWVudGF0aW9uIGVudGlyZWx5IGZvciBHSzIwQQo+Pj4+ IGZvciBub3cgaWYgdGhhdCdzIGVhc2llciB0aGFuIHJld29ya2luZyBpdC4KPj4+IFNvIGN1cnJl bnRseSB0aGVyZSBpcyBubyBkR1BVIHVzaW5nIHRoZSBQTVU/IEkganVzdCBkb24ndCB3YW50IHRv IAo+Pj4gYnJlYWsgYW55Cj4+PiBkR1BVIGZ1bmN0aW9ucy4gOykKPj4gV2UgdXBsb2FkIGEgY3Vz dG9tIGZpcm13YXJlIHRvIGl0LCB3aGljaCB3ZSAoY3VycmVudGx5KSBvbmx5IHVzZSBhcyBhCj4+ IHNjcmlwdCBpbnRlcnByZXRlciBmb3IgbWVtb3J5IGNsb2NrIGNoYW5nZXMuICBCdXQgZm9yIHlv dXIgbmVlZHMgcmlnaHQKPj4gbm93LCBpdCdkIGJlIGZpbmUgdG8gaWdub3JlIGFsbCB0aGUgY29t bW9uIGNvZGUgdGhlcmUgZm9yIEdLMjBBLgo+Pgo+Pj4+Cj4+Pj4gQXNpZGUgZnJvbSB0aGUgc3Vi ZGV2IG1vdmUsIGl0IGxvb2tzIGdvb2Qgc28gZmFyIHRvIG1lLiBHbGFkIHRvIHNlZQo+Pj4+IHRo ZSBDTEsgc3R1ZmYgaXNuJ3QgdG90YWxseSB1c2VsZXNzLCBkZXNwaXRlIGl0IG5lZWRpbmcgYSAq bG90KiBvZgo+Pj4+IHdvcmsuCj4+PiBCVFcsIGNhbiB3ZSBhZGQgc29tZSBleGVjdXRpb24gdGlt ZSBpbmZvcm1hdGlvbiBmb3IgcHN0YXRlPyBJIG1lYW4gCj4+PiBzb21ldGhpbmcKPj4+IGxpa2Ug Ii9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdTAvY3B1ZnJlcS9zdGF0cy90aW1lX2luX3N0YXRl Ii4gSSAKPj4+IGtub3cgd2UKPj4+IGRvbid0IHdhbnQgdG8gY2hhbmdlIHRoZSB1c2VyIHNwYWNl IEFCSSB0aG91Z2guCj4+Pgo+Pj4gVGhhbmtzLAo+Pj4gVmluY2UKPj4+Cj4+Pgo+Pj4+IFRoYW5r cywKPj4+PiBCZW4uCj4+Pj4KPj4+Pj4gU2lnbmVkLW9mZi1ieTogVmluY2UgSHN1IDx2aW5jZWhA bnZpZGlhLmNvbT4KPj4+Pj4gLS0tCj4+Pj4+ICAgIGRybS9LYnVpbGQgICAgICAgICAgICAgICAg ICAgICB8ICAgMiArCj4+Pj4+ICAgIGRybS9jb3JlL2luY2x1ZGUvc3ViZGV2L2R2ZnMuaCB8ICAg MSArCj4+Pj4+ICAgIGRybS9jb3JlL3N1YmRldi9kdmZzL2Jhc2UuYyAgICB8ICAgMSArCj4+Pj4+ ICAgIGRybS9jb3JlL3N1YmRldi9kdmZzL2drMjBhLmMgICB8ICAgMSArCj4+Pj4+ICAgIGRybS9j b3JlL3N1YmRldi9kdmZzL3ByaXYuaCAgICB8ICAgMSArCj4+Pj4+ICAgIG52a20vZW5naW5lL2Rl dmljZS9udmUwLmMgICAgICB8ICAgMiArCj4+Pj4+ICAgIG52a20vaW5jbHVkZS9jb3JlL2Rldmlj ZS5oICAgICB8ICAgMSArCj4+Pj4+ICAgIG52a20vaW5jbHVkZS9zdWJkZXYvZHZmcy5oICAgICB8 ICAzMCArKysrKysrKwo+Pj4+PiAgICBudmttL3N1YmRldi9NYWtlZmlsZS5hbSAgICAgICAgfCAg IDUgKy0KPj4+Pj4gICAgbnZrbS9zdWJkZXYvZHZmcy9NYWtlZmlsZS5hbSAgIHwgICA2ICsrCj4+ Pj4+ICAgIG52a20vc3ViZGV2L2R2ZnMvYmFzZS5jICAgICAgICB8IDEyOSAKPj4+Pj4gKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+Pj4+PiAgICBudmttL3N1YmRldi9kdmZzL2dr MjBhLmMgICAgICAgfCAxNTYKPj4+Pj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysKPj4+Pj4gICAgbnZrbS9zdWJkZXYvZHZmcy9wcml2LmggICAgICAgIHwgIDQzICsr KysrKysrKysrKwo+Pj4+PiAgICAxMyBmaWxlcyBjaGFuZ2VkLCAzNzYgaW5zZXJ0aW9ucygrKSwg MiBkZWxldGlvbnMoLSkKPj4+Pj4gICAgY3JlYXRlIG1vZGUgMTIwMDAwIGRybS9jb3JlL2luY2x1 ZGUvc3ViZGV2L2R2ZnMuaAo+Pj4+PiAgICBjcmVhdGUgbW9kZSAxMjAwMDAgZHJtL2NvcmUvc3Vi ZGV2L2R2ZnMvYmFzZS5jCj4+Pj4+ICAgIGNyZWF0ZSBtb2RlIDEyMDAwMCBkcm0vY29yZS9zdWJk ZXYvZHZmcy9nazIwYS5jCj4+Pj4+ICAgIGNyZWF0ZSBtb2RlIDEyMDAwMCBkcm0vY29yZS9zdWJk ZXYvZHZmcy9wcml2LmgKPj4+Pj4gICAgY3JlYXRlIG1vZGUgMTAwNjQ0IG52a20vaW5jbHVkZS9z dWJkZXYvZHZmcy5oCj4+Pj4+ICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBudmttL3N1YmRldi9kdmZz L01ha2VmaWxlLmFtCj4+Pj4+ICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBudmttL3N1YmRldi9kdmZz L2Jhc2UuYwo+Pj4+PiAgICBjcmVhdGUgbW9kZSAxMDA2NDQgbnZrbS9zdWJkZXYvZHZmcy9nazIw YS5jCj4+Pj4+ICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBudmttL3N1YmRldi9kdmZzL3ByaXYuaAo+ Pj4+Pgo+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJtL0tidWlsZCBiL2RybS9LYnVpbGQKPj4+Pj4gaW5k ZXggMDYxZDlmYWVmODM2Li5lN2ViMDVlNjY2YTAgMTAwNjQ0Cj4+Pj4+IC0tLSBhL2RybS9LYnVp bGQKPj4+Pj4gKysrIGIvZHJtL0tidWlsZAo+Pj4+PiBAQCAtMjI3LDYgKzIyNyw4IEBAIG5vdXZl YXUteSArPSBjb3JlL3N1YmRldi92b2x0L2Jhc2Uubwo+Pj4+PiAgICBub3V2ZWF1LXkgKz0gY29y ZS9zdWJkZXYvdm9sdC9ncGlvLm8KPj4+Pj4gICAgbm91dmVhdS15ICs9IGNvcmUvc3ViZGV2L3Zv bHQvbnY0MC5vCj4+Pj4+ICAgIG5vdXZlYXUteSArPSBjb3JlL3N1YmRldi92b2x0L2drMjBhLm8K Pj4+Pj4gK25vdXZlYXUteSArPSBjb3JlL3N1YmRldi9kdmZzL2Jhc2Uubwo+Pj4+PiArbm91dmVh dS15ICs9IGNvcmUvc3ViZGV2L2R2ZnMvZ2syMGEubwo+Pj4+Pgo+Pj4+PiAgICBub3V2ZWF1LXkg Kz0gY29yZS9lbmdpbmUvZmFsY29uLm8KPj4+Pj4gICAgbm91dmVhdS15ICs9IGNvcmUvZW5naW5l L3h0ZW5zYS5vCj4+Pj4+IGRpZmYgLS1naXQgYS9kcm0vY29yZS9pbmNsdWRlL3N1YmRldi9kdmZz LmgKPj4+Pj4gYi9kcm0vY29yZS9pbmNsdWRlL3N1YmRldi9kdmZzLmgKPj4+Pj4gbmV3IGZpbGUg bW9kZSAxMjAwMDAKPj4+Pj4gaW5kZXggMDAwMDAwMDAwMDAwLi41NTNhNjk2ODM1MGIKPj4+Pj4g LS0tIC9kZXYvbnVsbAo+Pj4+PiArKysgYi9kcm0vY29yZS9pbmNsdWRlL3N1YmRldi9kdmZzLmgK Pj4+Pj4gQEAgLTAsMCArMSBAQAo+Pj4+PiArLi4vLi4vLi4vLi4vbnZrbS9pbmNsdWRlL3N1YmRl di9kdmZzLmgKPj4+Pj4gXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCj4+Pj4+IGRpZmYgLS1n aXQgYS9kcm0vY29yZS9zdWJkZXYvZHZmcy9iYXNlLmMgCj4+Pj4+IGIvZHJtL2NvcmUvc3ViZGV2 L2R2ZnMvYmFzZS5jCj4+Pj4+IG5ldyBmaWxlIG1vZGUgMTIwMDAwCj4+Pj4+IGluZGV4IDAwMDAw MDAwMDAwMC4uMjk2MzM0ZWU1MmQxCj4+Pj4+IC0tLSAvZGV2L251bGwKPj4+Pj4gKysrIGIvZHJt L2NvcmUvc3ViZGV2L2R2ZnMvYmFzZS5jCj4+Pj4+IEBAIC0wLDAgKzEgQEAKPj4+Pj4gKy4uLy4u Ly4uLy4uL252a20vc3ViZGV2L2R2ZnMvYmFzZS5jCj4+Pj4+IFwgTm8gbmV3bGluZSBhdCBlbmQg b2YgZmlsZQo+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJtL2NvcmUvc3ViZGV2L2R2ZnMvZ2syMGEuYyAK Pj4+Pj4gYi9kcm0vY29yZS9zdWJkZXYvZHZmcy9nazIwYS5jCj4+Pj4+IG5ldyBmaWxlIG1vZGUg MTIwMDAwCj4+Pj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uZDA1ZDQ5M2UzZmM5Cj4+Pj4+IC0tLSAv ZGV2L251bGwKPj4+Pj4gKysrIGIvZHJtL2NvcmUvc3ViZGV2L2R2ZnMvZ2syMGEuYwo+Pj4+PiBA QCAtMCwwICsxIEBACj4+Pj4+ICsuLi8uLi8uLi8uLi9udmttL3N1YmRldi9kdmZzL2drMjBhLmMK Pj4+Pj4gXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCj4+Pj4+IGRpZmYgLS1naXQgYS9kcm0v Y29yZS9zdWJkZXYvZHZmcy9wcml2LmggCj4+Pj4+IGIvZHJtL2NvcmUvc3ViZGV2L2R2ZnMvcHJp di5oCj4+Pj4+IG5ldyBmaWxlIG1vZGUgMTIwMDAwCj4+Pj4+IGluZGV4IDAwMDAwMDAwMDAwMC4u OWI0NzFkYzQ0ZjQ4Cj4+Pj4+IC0tLSAvZGV2L251bGwKPj4+Pj4gKysrIGIvZHJtL2NvcmUvc3Vi ZGV2L2R2ZnMvcHJpdi5oCj4+Pj4+IEBAIC0wLDAgKzEgQEAKPj4+Pj4gKy4uLy4uLy4uLy4uL252 a20vc3ViZGV2L2R2ZnMvcHJpdi5oCj4+Pj4+IFwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo+ Pj4+PiBkaWZmIC0tZ2l0IGEvbnZrbS9lbmdpbmUvZGV2aWNlL252ZTAuYyBiL252a20vZW5naW5l L2RldmljZS9udmUwLmMKPj4+Pj4gaW5kZXggYmE3OTIyZDMxMzUxLi41YTgzMGEzN2ExNWQgMTAw NjQ0Cj4+Pj4+IC0tLSBhL252a20vZW5naW5lL2RldmljZS9udmUwLmMKPj4+Pj4gKysrIGIvbnZr bS9lbmdpbmUvZGV2aWNlL252ZTAuYwo+Pj4+PiBAQCAtNDEsNiArNDEsNyBAQAo+Pj4+PiAgICAj aW5jbHVkZSA8c3ViZGV2L2Jhci5oPgo+Pj4+PiAgICAjaW5jbHVkZSA8c3ViZGV2L3B3ci5oPgo+ Pj4+PiAgICAjaW5jbHVkZSA8c3ViZGV2L3ZvbHQuaD4KPj4+Pj4gKyNpbmNsdWRlIDxzdWJkZXYv ZHZmcy5oPgo+Pj4+Pgo+Pj4+PiAgICAjaW5jbHVkZSA8ZW5naW5lL2RldmljZS5oPgo+Pj4+PiAg ICAjaW5jbHVkZSA8ZW5naW5lL2RtYW9iai5oPgo+Pj4+PiBAQCAtMTgwLDYgKzE4MSw3IEBAIG52 ZTBfaWRlbnRpZnkoc3RydWN0IG5vdXZlYXVfZGV2aWNlICpkZXZpY2UpCj4+Pj4+ICAgICAgICAg ICAgICAgICAgIGRldmljZS0+b2NsYXNzW05WREVWX0VOR0lORV9DT1BZMiAgXSA9Cj4+Pj4+ICZu dmUwX2NvcHkyX29jbGFzczsKPj4+Pj4gICAgICAgICAgICAgICAgICAgZGV2aWNlLT5vY2xhc3Nb TlZERVZfRU5HSU5FX1BFUkZNT05dID0KPj4+Pj4gJmdrMjBhX3BlcmZtb25fb2NsYXNzOwo+Pj4+ PiAgICAgICAgICAgICAgICAgICBkZXZpY2UtPm9jbGFzc1tOVkRFVl9TVUJERVZfVk9MVCAgIF0g PQo+Pj4+PiAmZ2syMGFfdm9sdF9vY2xhc3M7Cj4+Pj4+ICsgICAgICAgICAgICAgICBkZXZpY2Ut Pm9jbGFzc1tOVkRFVl9TVUJERVZfRFZGUyAgIF0gPSAKPj4+Pj4gZ2syMGFfZHZmc19vY2xhc3M7 Cj4+Pj4+ICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+Pj4+PiAgICAgICAgICAgY2FzZSAweGYw Ogo+Pj4+PiAgICAgICAgICAgICAgICAgICBkZXZpY2UtPmNuYW1lID0gIkdLMTEwIjsKPj4+Pj4g ZGlmZiAtLWdpdCBhL252a20vaW5jbHVkZS9jb3JlL2RldmljZS5oIGIvbnZrbS9pbmNsdWRlL2Nv cmUvZGV2aWNlLmgKPj4+Pj4gaW5kZXggMmVjMmU1MGQzNjc2Li4xNjJmYTZhM2NmY2MgMTAwNjQ0 Cj4+Pj4+IC0tLSBhL252a20vaW5jbHVkZS9jb3JlL2RldmljZS5oCj4+Pj4+ICsrKyBiL252a20v aW5jbHVkZS9jb3JlL2RldmljZS5oCj4+Pj4+IEBAIC0zOSw2ICszOSw3IEBAIGVudW0gbnZfc3Vi ZGV2X3R5cGUgewo+Pj4+PiAgICAgICAgICAgTlZERVZfU1VCREVWX1ZPTFQsCj4+Pj4+ICAgICAg ICAgICBOVkRFVl9TVUJERVZfVEhFUk0sCj4+Pj4+ICAgICAgICAgICBOVkRFVl9TVUJERVZfQ0xP Q0ssCj4+Pj4+ICsgICAgICAgTlZERVZfU1VCREVWX0RWRlMsCj4+Pj4+Cj4+Pj4+ICAgICAgICAg ICBOVkRFVl9FTkdJTkVfRklSU1QsCj4+Pj4+ICAgICAgICAgICBOVkRFVl9FTkdJTkVfRE1BT0JK ID0gTlZERVZfRU5HSU5FX0ZJUlNULAo+Pj4+PiBkaWZmIC0tZ2l0IGEvbnZrbS9pbmNsdWRlL3N1 YmRldi9kdmZzLmggYi9udmttL2luY2x1ZGUvc3ViZGV2L2R2ZnMuaAo+Pj4+PiBuZXcgZmlsZSBt b2RlIDEwMDY0NAo+Pj4+PiBpbmRleCAwMDAwMDAwMDAwMDAuLjM4NTE2MjlhMGRlNAo+Pj4+PiAt LS0gL2Rldi9udWxsCj4+Pj4+ICsrKyBiL252a20vaW5jbHVkZS9zdWJkZXYvZHZmcy5oCj4+Pj4+ IEBAIC0wLDAgKzEsMzAgQEAKPj4+Pj4gKyNpZm5kZWYgX19OT1VWRUFVX0RWRlNfSF9fCj4+Pj4+ ICsjZGVmaW5lIF9fTk9VVkVBVV9EVkZTX0hfXwo+Pj4+PiArCj4+Pj4+ICsjaW5jbHVkZSA8Y29y ZS9zdWJkZXYuaD4KPj4+Pj4gKyNpbmNsdWRlIDxjb3JlL2RldmljZS5oPgo+Pj4+PiArCj4+Pj4+ ICsjaW5jbHVkZSA8c3ViZGV2L3RpbWVyLmg+Cj4+Pj4+ICsKPj4+Pj4gK3N0cnVjdCBub3V2ZWF1 X2R2ZnNfZGF0YSB7Cj4+Pj4+ICsgICAgICAgaW50IHBfbG9hZF90YXJnZXQ7Cj4+Pj4+ICsgICAg ICAgaW50IHBfbG9hZF9tYXg7Cj4+Pj4+ICsgICAgICAgaW50IHBfc21vb3RoOwo+Pj4+PiArICAg ICAgIHVuc2lnbmVkIGludCBhdmdfbG9hZDsKPj4+Pj4gK307Cj4+Pj4+ICsKPj4+Pj4gK3N0cnVj dCBub3V2ZWF1X2R2ZnMgewo+Pj4+PiArICAgICAgIHN0cnVjdCBub3V2ZWF1X3N1YmRldiBiYXNl Owo+Pj4+PiArICAgICAgIHN0cnVjdCBub3V2ZWF1X2FsYXJtIGFsYXJtOwo+Pj4+PiArICAgICAg IHN0cnVjdCBub3V2ZWF1X2R2ZnNfZGF0YSAqZGF0YTsKPj4+Pj4gK307Cj4+Pj4+ICsKPj4+Pj4g K3N0YXRpYyBpbmxpbmUgc3RydWN0IG5vdXZlYXVfZHZmcyAqCj4+Pj4+ICtub3V2ZWF1X2R2ZnMo dm9pZCAqb2JqKQo+Pj4+PiArewo+Pj4+PiArICAgICAgIHJldHVybiAodm9pZCAqKW52X2Rldmlj ZShvYmopLT5zdWJkZXZbTlZERVZfU1VCREVWX0RWRlNdOwo+Pj4+PiArfQo+Pj4+PiArCj4+Pj4+ ICtleHRlcm4gc3RydWN0IG5vdXZlYXVfb2NsYXNzICpnazIwYV9kdmZzX29jbGFzczsKPj4+Pj4g Kwo+Pj4+PiArI2VuZGlmCj4+Pj4+IGRpZmYgLS1naXQgYS9udmttL3N1YmRldi9NYWtlZmlsZS5h bSBiL252a20vc3ViZGV2L01ha2VmaWxlLmFtCj4+Pj4+IGluZGV4IDVhNDhkZGI4Nzk4MS4uM2Qx MWUwODMzMDMyIDEwMDY0NAo+Pj4+PiAtLS0gYS9udmttL3N1YmRldi9NYWtlZmlsZS5hbQo+Pj4+ PiArKysgYi9udmttL3N1YmRldi9NYWtlZmlsZS5hbQo+Pj4+PiBAQCAtMSw1ICsxLDUgQEAKPj4+ Pj4gICAgU1VCRElSUyA9IGJhciBidXMgYmlvcyBjbG9jayBkZXZpbml0IGZiIGZ1c2UgZ3BpbyBp MmMgaWJ1cyAKPj4+Pj4gaW5zdG1lbSBcCj4+Pj4+IC0gICAgICAgICBsdGMgbWMgbXhtIHB3ciB0 aGVybSB0aW1lciB2bSB2b2x0Cj4+Pj4+ICsgICAgICAgICBsdGMgbWMgbXhtIHB3ciB0aGVybSB0 aW1lciB2bSB2b2x0IGR2ZnMKPj4+Pj4KPj4+Pj4gICAgbm9pbnN0X0xUTElCUkFSSUVTID0gbGli c3ViZGV2LmxhCj4+Pj4+Cj4+Pj4+IEBAIC0yMiw0ICsyMiw1IEBAIGxpYnN1YmRldl9sYV9MSUJB REQgICA9IGJhci9saWJiYXIubGEgXAo+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRo ZXJtL2xpYnRoZXJtLmxhIFwKPj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lci9s aWJ0aW1lci5sYSBcCj4+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgdm0vbGlidm0ubGEg XAo+Pj4+PiAtICAgICAgICAgICAgICAgICAgICAgICB2b2x0L2xpYnZvbHQubGEKPj4+Pj4gKyAg ICAgICAgICAgICAgICAgICAgICAgdm9sdC9saWJ2b2x0LmxhIFwKPj4+Pj4gKyAgICAgICAgICAg ICAgICAgICAgICAgZHZmcy9kdmZzLmxhCj4+Pj4+IGRpZmYgLS1naXQgYS9udmttL3N1YmRldi9k dmZzL01ha2VmaWxlLmFtIAo+Pj4+PiBiL252a20vc3ViZGV2L2R2ZnMvTWFrZWZpbGUuYW0KPj4+ Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4+Pj4gaW5kZXggMDAwMDAwMDAwMDAwLi5jMDlkNGVj NDEyNGQKPj4+Pj4gLS0tIC9kZXYvbnVsbAo+Pj4+PiArKysgYi9udmttL3N1YmRldi9kdmZzL01h a2VmaWxlLmFtCj4+Pj4+IEBAIC0wLDAgKzEsNiBAQAo+Pj4+PiArbm9pbnN0X0xUTElCUkFSSUVT ID0gbGliZHZmcy5sYQo+Pj4+PiArCj4+Pj4+ICtsaWJkdmZzX2xhX1NPVVJDRVMgPSBiYXNlLmMg XAo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgZ2syMGEuYwo+Pj4+PiArCj4+Pj4+ICtpbmNs dWRlICQoc3JjZGlyKS8uLi9NYWtlZmlsZS5zdWJkZXYKPj4+Pj4gZGlmZiAtLWdpdCBhL252a20v c3ViZGV2L2R2ZnMvYmFzZS5jIGIvbnZrbS9zdWJkZXYvZHZmcy9iYXNlLmMKPj4+Pj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQKPj4+Pj4gaW5kZXggMDAwMDAwMDAwMDAwLi44OGFlMjAxODQwYTgKPj4+ Pj4gLS0tIC9kZXYvbnVsbAo+Pj4+PiArKysgYi9udmttL3N1YmRldi9kdmZzL2Jhc2UuYwo+Pj4+ PiBAQCAtMCwwICsxLDEyOSBAQAo+Pj4+PiArLyoKPj4+Pj4gKyAqIENvcHlyaWdodCAoYykgMjAx NCwgTlZJRElBIENPUlBPUkFUSU9OLiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+Pj4+PiArICoKPj4+ Pj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBh bnkgcGVyc29uIAo+Pj4+PiBvYnRhaW5pbmcKPj4+Pj4gYQo+Pj4+PiArICogY29weSBvZiB0aGlz IHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQo+Pj4+PiAi U29mdHdhcmUiKSwKPj4+Pj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVz dHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0Cj4+Pj4+IGxpbWl0YXRpb24KPj4+Pj4gKyAqIHRo ZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRl LAo+Pj4+PiBzdWJsaWNlbnNlLAo+Pj4+PiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBT b2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIAo+Pj4+PiB3aG9tIHRoZQo+Pj4+PiAr ICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dp bmcgCj4+Pj4+IGNvbmRpdGlvbnM6Cj4+Pj4+ICsgKgo+Pj4+PiArICogVGhlIGFib3ZlIGNvcHly aWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUKPj4+Pj4gaW5j bHVkZWQgaW4KPj4+Pj4gKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2Yg dGhlIFNvZnR3YXJlLgo+Pj4+PiArICoKPj4+Pj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURF RCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAo+Pj4+PiBFWFBSRVNTIE9S Cj4+Pj4+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJS QU5USUVTIE9GCj4+Pj4+IE1FUkNIQU5UQUJJTElUWSwKPj4+Pj4gKyAqIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UCj4+Pj4+ IFNIQUxMCj4+Pj4+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFC TEUgRk9SIEFOWSBDTEFJTSwgCj4+Pj4+IERBTUFHRVMgT1IKPj4+Pj4gT1RIRVIKPj4+Pj4gKyAq IExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RI RVJXSVNFLAo+Pj4+PiBBUklTSU5HCj4+Pj4+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVD VElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIAo+Pj4+PiBPVEhFUgo+Pj4+PiAr ICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgo+Pj4+PiArICovCj4+Pj4+ICsKPj4+Pj4gKyNp bmNsdWRlIDxjb3JlL29wdGlvbi5oPgo+Pj4+PiArCj4+Pj4+ICsjaW5jbHVkZSA8c3ViZGV2L2Ns b2NrLmg+Cj4+Pj4+ICsjaW5jbHVkZSA8c3ViZGV2L2R2ZnMuaD4KPj4+Pj4gKyNpbmNsdWRlIDxz dWJkZXYvdm9sdC5oPgo+Pj4+PiArCj4+Pj4+ICsjaW5jbHVkZSAicHJpdi5oIgo+Pj4+PiArCj4+ Pj4+ICtzdGF0aWMgdm9pZAo+Pj4+PiArX25vdXZlYXVfZHZmc193b3JrKHN0cnVjdCBub3V2ZWF1 X2FsYXJtICphbGFybSkKPj4+Pj4gK3sKPj4+Pj4gKyAgICAgICBzdHJ1Y3Qgbm91dmVhdV9kdmZz ICpkdmZzID0gY29udGFpbmVyX29mKGFsYXJtLCBzdHJ1Y3QKPj4+Pj4gbm91dmVhdV9kdmZzLAo+ Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICBhbGFybSk7Cj4+Pj4+ICsgICAgICAgc3RydWN0 IG5vdXZlYXVfZHZmc19kYXRhICpkYXRhID0gZHZmcy0+ZGF0YTsKPj4+Pj4gKyAgICAgICBzdHJ1 Y3Qgbm91dmVhdV9vYmplY3QgKm9iamVjdCA9IG52X29iamVjdChkdmZzKTsKPj4+Pj4gKyAgICAg ICBzdHJ1Y3Qgbm91dmVhdV9kdmZzX2ltcGwgKmltcGwgPSAodm9pZCAqKW9iamVjdC0+b2NsYXNz Owo+Pj4+PiArICAgICAgIHN0cnVjdCBub3V2ZWF1X2R2ZnNfZGV2X3N0YXR1cyBzdGF0dXM7Cj4+ Pj4+ICsgICAgICAgdTMyIHV0aWxpemF0aW9uID0gMDsKPj4+Pj4gKyAgICAgICBpbnQgc3RhdGUs IHJldDsKPj4+Pj4gKwo+Pj4+PiArICAgICAgIHJldCA9IGltcGwtPmdldF9kZXZfc3RhdHVzKGR2 ZnMsICZzdGF0dXMpOwo+Pj4+PiArICAgICAgIGlmIChyZXQpIHsKPj4+Pj4gKyAgICAgICAgICAg ICAgIG52X3dhcm4oZHZmcywgImZhaWxlZCB0byBnZXQgZGV2aWNlIHN0YXR1c1xuIik7Cj4+Pj4+ ICsgICAgICAgICAgICAgICBnb3RvIHJlc2NoZWQ7Cj4+Pj4+ICsgICAgICAgfQo+Pj4+PiArCj4+ Pj4+ICsgICAgICAgaWYgKHN0YXR1cy50b3RhbCkKPj4+Pj4gKyAgICAgICAgICAgICAgIHV0aWxp emF0aW9uID0gZGl2X3U2NCgodTY0KXN0YXR1cy5idXN5ICogMTAwLAo+Pj4+PiBzdGF0dXMudG90 YWwpOwo+Pj4+PiArCj4+Pj4+ICsgICAgICAgZGF0YS0+YXZnX2xvYWQgPSAoZGF0YS0+cF9zbW9v dGggKiBkYXRhLT5hdmdfbG9hZCkgKyAKPj4+Pj4gdXRpbGl6YXRpb247Cj4+Pj4+ICsgICAgICAg ZGF0YS0+YXZnX2xvYWQgLz0gZGF0YS0+cF9zbW9vdGggKyAxOwo+Pj4+PiArICAgICAgIG52X3Ry YWNlKGR2ZnMsICJ1dGlsaXphdGlvbiA9ICVkICUlLCBhdmdfbG9hZCA9ICVkICUlXG4iLAo+Pj4+ PiArICAgICAgICAgICAgICAgICAgICAgICB1dGlsaXphdGlvbiwgZGF0YS0+YXZnX2xvYWQpOwo+ Pj4+PiArCj4+Pj4+ICsgICAgICAgcmV0ID0gaW1wbC0+Z2V0X2N1cl9zdGF0ZShkdmZzLCAmc3Rh dGUpOwo+Pj4+PiArICAgICAgIGlmIChyZXQpIHsKPj4+Pj4gKyAgICAgICAgICAgICAgIG52X3dh cm4oZHZmcywgImZhaWxlZCB0byBnZXQgY3VycmVudCBzdGF0ZVxuIik7Cj4+Pj4+ICsgICAgICAg ICAgICAgICBnb3RvIHJlc2NoZWQ7Cj4+Pj4+ICsgICAgICAgfQo+Pj4+PiArCj4+Pj4+ICsgICAg ICAgaWYgKGltcGwtPmdldF90YXJnZXRfc3RhdGUoZHZmcywgJnN0YXRlLCBkYXRhLT5hdmdfbG9h ZCkpIHsKPj4+Pj4gKyAgICAgICAgICAgICAgIG52X3RyYWNlKGR2ZnMsICJzZXQgbmV3IHN0YXRl IHRvICVkXG4iLCBzdGF0ZSk7Cj4+Pj4+ICsgICAgICAgICAgICAgICBpbXBsLT50YXJnZXQoZHZm cywgJnN0YXRlKTsKPj4+Pj4gKyAgICAgICB9Cj4+Pj4+ICsKPj4+Pj4gK3Jlc2NoZWQ6Cj4+Pj4+ ICsgICAgICAgaW1wbC0+cmVzZXRfZGV2X3N0YXR1cyhkdmZzKTsKPj4+Pj4gKyAgICAgICBub3V2 ZWF1X3RpbWVyX2FsYXJtKGR2ZnMsIDEwMDAwMDAwMCwgYWxhcm0pOwo+Pj4+PiArfQo+Pj4+PiAr Cj4+Pj4+ICtpbnQKPj4+Pj4gK19ub3V2ZWF1X2R2ZnNfZmluaShzdHJ1Y3Qgbm91dmVhdV9vYmpl Y3QgKm9iamVjdCwgYm9vbCBzdXNwZW5kKQo+Pj4+PiArewo+Pj4+PiArICAgICAgIHN0cnVjdCBu b3V2ZWF1X2R2ZnMgKmR2ZnMgPSAodm9pZCAqKW9iamVjdDsKPj4+Pj4gKwo+Pj4+PiArICAgICAg IG5vdXZlYXVfdGltZXJfYWxhcm1fY2FuY2VsKGR2ZnMsICZkdmZzLT5hbGFybSk7Cj4+Pj4+ICsK Pj4+Pj4gKyAgICAgICByZXR1cm4gbm91dmVhdV9zdWJkZXZfZmluaSgmZHZmcy0+YmFzZSwgc3Vz cGVuZCk7Cj4+Pj4+ICt9Cj4+Pj4+ICsKPj4+Pj4gK2ludAo+Pj4+PiArX25vdXZlYXVfZHZmc19p bml0KHN0cnVjdCBub3V2ZWF1X29iamVjdCAqb2JqZWN0KQo+Pj4+PiArewo+Pj4+PiArICAgICAg IHN0cnVjdCBub3V2ZWF1X2R2ZnMgKmR2ZnMgPSAodm9pZCAqKW9iamVjdDsKPj4+Pj4gKyAgICAg ICBzdHJ1Y3Qgbm91dmVhdV9jbG9jayAqY2xrID0gbm91dmVhdV9jbG9jayhvYmplY3QpOwo+Pj4+ PiArICAgICAgIHN0cnVjdCBub3V2ZWF1X3ZvbHQgKnZvbHQgPSBub3V2ZWF1X3ZvbHQob2JqZWN0 KTsKPj4+Pj4gKyAgICAgICBpbnQgcmV0Owo+Pj4+PiArCj4+Pj4+ICsgICAgICAgcmV0ID0gbm91 dmVhdV9zdWJkZXZfaW5pdCgmZHZmcy0+YmFzZSk7Cj4+Pj4+ICsgICAgICAgaWYgKHJldCkKPj4+ Pj4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgICBpZiAo IWNsayB8fCAhdm9sdCkKPj4+Pj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+Pj4+ PiArCj4+Pj4+ICsgICAgICAgbm91dmVhdV90aW1lcl9hbGFybShkdmZzLCAyMDAwMDAwMDAwLCAm ZHZmcy0+YWxhcm0pOwo+Pj4+PiArCj4+Pj4+ICsgICAgICAgcmV0dXJuIDA7Cj4+Pj4+ICt9Cj4+ Pj4+ICsKPj4+Pj4gK3ZvaWQKPj4+Pj4gK19ub3V2ZWF1X2R2ZnNfZHRvcihzdHJ1Y3Qgbm91dmVh dV9vYmplY3QgKm9iamVjdCkKPj4+Pj4gK3sKPj4+Pj4gKyAgICAgICBzdHJ1Y3Qgbm91dmVhdV9k dmZzICpkdmZzID0gKHZvaWQgKilvYmplY3Q7Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgICBub3V2ZWF1 X3N1YmRldl9kZXN0cm95KCZkdmZzLT5iYXNlKTsKPj4+Pj4gK30KPj4+Pj4gKwo+Pj4+PiAraW50 Cj4+Pj4+ICtub3V2ZWF1X2R2ZnNfY3JlYXRlXyhzdHJ1Y3Qgbm91dmVhdV9vYmplY3QgKnBhcmVu dCwKPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG5vdXZlYXVfb2JqZWN0ICpl bmdpbmUsCj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBub3V2ZWF1X29jbGFz cyAqb2NsYXNzLAo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2l6ZSwgdm9pZCAq KnBvYmplY3QpCj4+Pj4+ICt7Cj4+Pj4+ICsgICAgICAgc3RydWN0IG5vdXZlYXVfZHZmcyAqZHZm czsKPj4+Pj4gKyAgICAgICBpbnQgcmV0Owo+Pj4+PiArCj4+Pj4+ICsgICAgICAgcmV0ID0gbm91 dmVhdV9zdWJkZXZfY3JlYXRlXyhwYXJlbnQsIGVuZ2luZSwgb2NsYXNzLCAwLCAKPj4+Pj4gIkRW RlMiLAo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImR2ZnMiLCBz aXplLCBwb2JqZWN0KTsKPj4+Pj4gKyAgICAgICBkdmZzID0gKnBvYmplY3Q7Cj4+Pj4+ICsgICAg ICAgaWYgKHJldCkKPj4+Pj4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4+Pj4+ICsKPj4+ Pj4gKyAgICAgICBub3V2ZWF1X2FsYXJtX2luaXQoJmR2ZnMtPmFsYXJtLCBfbm91dmVhdV9kdmZz X3dvcmspOwo+Pj4+PiArCj4+Pj4+ICsgICAgICAgcmV0dXJuIDA7Cj4+Pj4+ICt9Cj4+Pj4+IGRp ZmYgLS1naXQgYS9udmttL3N1YmRldi9kdmZzL2drMjBhLmMgYi9udmttL3N1YmRldi9kdmZzL2dr MjBhLmMKPj4+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4+Pj4gaW5kZXggMDAwMDAwMDAwMDAw Li5lZmViZDJjMTBmOTkKPj4+Pj4gLS0tIC9kZXYvbnVsbAo+Pj4+PiArKysgYi9udmttL3N1YmRl di9kdmZzL2drMjBhLmMKPj4+Pj4gQEAgLTAsMCArMSwxNTYgQEAKPj4+Pj4gKy8qCj4+Pj4+ICsg KiBDb3B5cmlnaHQgKGMpIDIwMTQsIE5WSURJQSBDT1JQT1JBVElPTi4gQWxsIHJpZ2h0cyByZXNl cnZlZC4KPj4+Pj4gKyAqCj4+Pj4+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBm cmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiAKPj4+Pj4gb2J0YWluaW5nCj4+Pj4+IGEKPj4+ Pj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9u IGZpbGVzICh0aGUKPj4+Pj4gIlNvZnR3YXJlIiksCj4+Pj4+ICsgKiB0byBkZWFsIGluIHRoZSBT b2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dAo+Pj4+PiBsaW1p dGF0aW9uCj4+Pj4+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwg cHVibGlzaCwgZGlzdHJpYnV0ZSwKPj4+Pj4gc3VibGljZW5zZSwKPj4+Pj4gKyAqIGFuZC9vciBz ZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byAKPj4+ Pj4gd2hvbSB0aGUKPj4+Pj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3Vi amVjdCB0byB0aGUgZm9sbG93aW5nIAo+Pj4+PiBjb25kaXRpb25zOgo+Pj4+PiArICoKPj4+Pj4g KyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNl IHNoYWxsIGJlCj4+Pj4+IGluY2x1ZGVkIGluCj4+Pj4+ICsgKiBhbGwgY29waWVzIG9yIHN1YnN0 YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KPj4+Pj4gKyAqCj4+Pj4+ICsgKiBUSEUg U09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lO RCwKPj4+Pj4gRVhQUkVTUyBPUgo+Pj4+PiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1Qg TElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgo+Pj4+PiBNRVJDSEFOVEFCSUxJVFksCj4+Pj4+ ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5U LiBJTiBOTyBFVkVOVAo+Pj4+PiBTSEFMTAo+Pj4+PiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJ R0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIAo+Pj4+PiBEQU1BR0VTIE9SCj4+ Pj4+IE9USEVSCj4+Pj4+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENP TlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKPj4+Pj4gQVJJU0lORwo+Pj4+PiArICogRlJPTSwg T1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiAK Pj4+Pj4gT1RIRVIKPj4+Pj4gKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KPj4+Pj4gKyAq Lwo+Pj4+PiArCj4+Pj4+ICsjaW5jbHVkZSA8c3ViZGV2L2Nsb2NrLmg+Cj4+Pj4+ICsjaW5jbHVk ZSA8c3ViZGV2L2R2ZnMuaD4KPj4+Pj4gKyNpbmNsdWRlIDxzdWJkZXYvdm9sdC5oPgo+Pj4+PiAr Cj4+Pj4+ICsjaW5jbHVkZSAicHJpdi5oIgo+Pj4+PiArCj4+Pj4+ICsjZGVmaW5lIEJVU1lfU0xP VCAgICAgIDAKPj4+Pj4gKyNkZWZpbmUgQ0xLX1NMT1QgICAgICAgNwo+Pj4+PiArCj4+Pj4+ICtz dHJ1Y3QgZ2syMGFfZHZmc19wcml2IHsKPj4+Pj4gKyAgICAgICBzdHJ1Y3Qgbm91dmVhdV9kdmZz IGJhc2U7Cj4+Pj4+ICt9Owo+Pj4+PiArCj4+Pj4+ICtzdGF0aWMgaW50Cj4+Pj4+ICtnazIwYV9k dmZzX3RhcmdldChzdHJ1Y3Qgbm91dmVhdV9kdmZzICpkdmZzLCBpbnQgKnN0YXRlKQo+Pj4+PiAr ewo+Pj4+PiArICAgICAgIHN0cnVjdCBub3V2ZWF1X2Nsb2NrICpjbGsgPSBub3V2ZWF1X2Nsb2Nr KGR2ZnMpOwo+Pj4+PiArCj4+Pj4+ICsgICAgICAgcmV0dXJuIG5vdXZlYXVfY2xvY2tfYXN0YXRl KGNsaywgKnN0YXRlLCAwLCBmYWxzZSk7Cj4+Pj4+ICt9Cj4+Pj4+ICsKPj4+Pj4gK3N0YXRpYyBp bnQKPj4+Pj4gK2drMjBhX2R2ZnNfZ2V0X2N1cl9zdGF0ZShzdHJ1Y3Qgbm91dmVhdV9kdmZzICpk dmZzLCBpbnQgKnN0YXRlKQo+Pj4+PiArewo+Pj4+PiArICAgICAgIHN0cnVjdCBub3V2ZWF1X2Ns b2NrICpjbGsgPSBub3V2ZWF1X2Nsb2NrKGR2ZnMpOwo+Pj4+PiArCj4+Pj4+ICsgICAgICAgKnN0 YXRlID0gY2xrLT5wc3RhdGU7Cj4+Pj4+ICsgICAgICAgcmV0dXJuIDA7Cj4+Pj4+ICt9Cj4+Pj4+ ICsKPj4+Pj4gK3N0YXRpYyBpbnQKPj4+Pj4gK2drMjBhX2R2ZnNfZ2V0X3RhcmdldF9zdGF0ZShz dHJ1Y3Qgbm91dmVhdV9kdmZzICpkdmZzLCBpbnQgCj4+Pj4+ICpzdGF0ZSwgaW50Cj4+Pj4+IGxv YWQpCj4+Pj4+ICt7Cj4+Pj4+ICsgICAgICAgc3RydWN0IG5vdXZlYXVfZHZmc19kYXRhICpkYXRh ID0gZHZmcy0+ZGF0YTsKPj4+Pj4gKyAgICAgICBzdHJ1Y3Qgbm91dmVhdV9jbG9jayAqY2xrID0g bm91dmVhdV9jbG9jayhkdmZzKTsKPj4+Pj4gKyAgICAgICBpbnQgY3VyX2xldmVsLCBsZXZlbDsK Pj4+Pj4gKwo+Pj4+PiArICAgICAgIC8qIEZvciBHSzIwQSwgdGhlIHBlcmZvcm1hbmNlIGxldmVs IGlzIGRpcmVjdGx5IG1hcHBlZCB0byAKPj4+Pj4gcHN0YXRlCj4+Pj4+ICovCj4+Pj4+ICsgICAg ICAgbGV2ZWwgPSBjdXJfbGV2ZWwgPSBjbGstPnBzdGF0ZTsKPj4+Pj4gKwo+Pj4+PiArICAgICAg IGlmIChsb2FkID4gZGF0YS0+cF9sb2FkX21heCkgewo+Pj4+PiArICAgICAgICAgICAgICAgbGV2 ZWwgPSBtaW4oY2xrLT5zdGF0ZV9uciAtIDEsIGxldmVsICsgCj4+Pj4+IChjbGstPnN0YXRlX25y IC8KPj4+Pj4gMykpOwo+Pj4+PiArICAgICAgIH0gZWxzZSB7Cj4+Pj4+ICsgICAgICAgICAgICAg ICBsZXZlbCArPSAoKGxvYWQgLSBkYXRhLT5wX2xvYWRfdGFyZ2V0KSAqIDEwIC8KPj4+Pj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5wX2xvYWRfdGFyZ2V0KSAvIDI7Cj4+ Pj4+ICsgICAgICAgICAgICAgICBsZXZlbCA9IG1heCgwLCBsZXZlbCk7Cj4+Pj4+ICsgICAgICAg ICAgICAgICBsZXZlbCA9IG1pbihjbGstPnN0YXRlX25yIC0gMSwgbGV2ZWwpOwo+Pj4+PiArICAg ICAgIH0KPj4+Pj4gKwo+Pj4+PiArICAgICAgIG52X3RyYWNlKGR2ZnMsICJjdXIgbGV2ZWwgPSAl ZCwgbmV3IGxldmVsID0gJWRcbiIsIGN1cl9sZXZlbCwKPj4+Pj4gbGV2ZWwpOwo+Pj4+PiArCj4+ Pj4+ICsgICAgICAgKnN0YXRlID0gbGV2ZWw7Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgICBpZiAobGV2 ZWwgPT0gY3VyX2xldmVsKQo+Pj4+PiArICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4+Pj4+ICsg ICAgICAgZWxzZQo+Pj4+PiArICAgICAgICAgICAgICAgcmV0dXJuIDE7Cj4+Pj4+ICt9Cj4+Pj4+ ICsKPj4+Pj4gK3N0YXRpYyBpbnQKPj4+Pj4gK2drMjBhX2R2ZnNfZ2V0X2Rldl9zdGF0dXMoc3Ry dWN0IG5vdXZlYXVfZHZmcyAqZHZmcywKPj4+Pj4gKyAgICAgICBzdHJ1Y3Qgbm91dmVhdV9kdmZz X2Rldl9zdGF0dXMgKnN0YXR1cykKPj4+Pj4gK3sKPj4+Pj4gKyAgICAgICBzdGF0dXMtPmJ1c3kg PSBudl9yZDMyKGR2ZnMsIDB4MTBhNTA4ICsgKEJVU1lfU0xPVCAqIDB4MTApKTsKPj4+Pj4gKyAg ICAgICBzdGF0dXMtPnRvdGFsPSBudl9yZDMyKGR2ZnMsIDB4MTBhNTA4ICsgKENMS19TTE9UICog MHgxMCkpOwo+Pj4+PiArICAgICAgIHJldHVybiAwOwo+Pj4+PiArfQo+Pj4+PiArCj4+Pj4+ICtz dGF0aWMgdm9pZAo+Pj4+PiArZ2syMGFfZHZmc19yZXNldF9kZXZfc3RhdHVzKHN0cnVjdCBub3V2 ZWF1X2R2ZnMgKmR2ZnMpCj4+Pj4+ICt7Cj4+Pj4+ICsgICAgICAgbnZfd3IzMihkdmZzLCAweDEw YTUwOCArIChCVVNZX1NMT1QgKiAweDEwKSwgMHg4MDAwMDAwMCk7Cj4+Pj4+ICsgICAgICAgbnZf d3IzMihkdmZzLCAweDEwYTUwOCArIChDTEtfU0xPVCAqIDB4MTApLCAweDgwMDAwMDAwKTsKPj4+ Pj4gK30KPj4+Pj4gKwo+Pj4+PiArc3RhdGljIGludAo+Pj4+PiArZ2syMGFfZHZmc19pbml0KHN0 cnVjdCBub3V2ZWF1X29iamVjdCAqb2JqZWN0KQo+Pj4+PiArewo+Pj4+PiArICAgICAgIHN0cnVj dCBnazIwYV9kdmZzX3ByaXYgKnByaXYgPSAodm9pZCAqKW9iamVjdDsKPj4+Pj4gKyAgICAgICBp bnQgcmV0Owo+Pj4+PiArCj4+Pj4+ICsgICAgICAgLyogaW5pdCBwd3IgcGVyZiBjb3VudGVyICov Cj4+Pj4+ICsgICAgICAgbnZfd3IzMihwcml2LCAweDEwYTUwNCArIChCVVNZX1NMT1QgKiAweDEw KSwgMHgwMDIwMDAwMSk7Cj4+Pj4+ICsgICAgICAgbnZfd3IzMihwcml2LCAweDEwYTUwYyArIChC VVNZX1NMT1QgKiAweDEwKSwgMHgwMDAwMDAwMik7Cj4+Pj4+ICsgICAgICAgbnZfd3IzMihwcml2 LCAweDEwYTUwYyArIChDTEtfU0xPVCAqIDB4MTApLCAweDAwMDAwMDAzKTsKPj4+Pj4gKwo+Pj4+ PiArICAgICAgIHJldCA9IG5vdXZlYXVfZHZmc19pbml0KCZwcml2LT5iYXNlKTsKPj4+Pj4gKyAg ICAgICBpZiAocmV0KQo+Pj4+PiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPj4+Pj4gKwo+ Pj4+PiArICAgICAgIHJldHVybiAwOwo+Pj4+PiArfQo+Pj4+PiArCj4+Pj4+ICtzdHJ1Y3Qgbm91 dmVhdV9kdmZzX2RhdGEgZ2syMGFfZHZmc19kYXRhID0gewo+Pj4+PiArICAgICAgIC5wX2xvYWRf dGFyZ2V0ID0gNzAsCj4+Pj4+ICsgICAgICAgLnBfbG9hZF9tYXggPSA5MCwKPj4+Pj4gKyAgICAg ICAucF9zbW9vdGggPSAxLAo+Pj4+PiArfTsKPj4+Pj4gKwo+Pj4+PiArc3RhdGljIGludAo+Pj4+ PiArZ2syMGFfZHZmc19jdG9yKHN0cnVjdCBub3V2ZWF1X29iamVjdCAqcGFyZW50LCBzdHJ1Y3Qg bm91dmVhdV9vYmplY3QKPj4+Pj4gKmVuZ2luZSwKPj4+Pj4gKyAgICAgICAgICAgIHN0cnVjdCBu b3V2ZWF1X29jbGFzcyAqb2NsYXNzLCB2b2lkICpkYXRhLCB1MzIgc2l6ZSwKPj4+Pj4gKyAgICAg ICAgICAgIHN0cnVjdCBub3V2ZWF1X29iamVjdCAqKnBvYmplY3QpCj4+Pj4+ICt7Cj4+Pj4+ICsg ICAgICAgc3RydWN0IGdrMjBhX2R2ZnNfcHJpdiAqcHJpdjsKPj4+Pj4gKyAgICAgICBzdHJ1Y3Qg bm91dmVhdV9kdmZzICpkdmZzOwo+Pj4+PiArICAgICAgIGludCByZXQ7Cj4+Pj4+ICsKPj4+Pj4g KyAgICAgICByZXQgPSBub3V2ZWF1X2R2ZnNfY3JlYXRlKHBhcmVudCwgZW5naW5lLCBvY2xhc3Ms ICZwcml2KTsKPj4+Pj4gKyAgICAgICAqcG9iamVjdCA9IG52X29iamVjdChwcml2KTsKPj4+Pj4g KyAgICAgICBpZiAocmV0KQo+Pj4+PiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPj4+Pj4g Kwo+Pj4+PiArICAgICAgIGR2ZnMgPSAmcHJpdi0+YmFzZTsKPj4+Pj4gKyAgICAgICBkdmZzLT5k YXRhID0gJmdrMjBhX2R2ZnNfZGF0YTsKPj4+Pj4gKwo+Pj4+PiArICAgICAgIHJldHVybiAwOwo+ Pj4+PiArfQo+Pj4+PiArCj4+Pj4+ICtzdHJ1Y3Qgbm91dmVhdV9vY2xhc3MgKgo+Pj4+PiArZ2sy MGFfZHZmc19vY2xhc3MgPSAmKHN0cnVjdCBub3V2ZWF1X2R2ZnNfaW1wbCkgewo+Pj4+PiArICAg ICAgIC5iYXNlLmhhbmRsZSA9IE5WX1NVQkRFVihEVkZTLCAweGVhKSwKPj4+Pj4gKyAgICAgICAu YmFzZS5vZnVuY3MgPSAmKHN0cnVjdCBub3V2ZWF1X29mdW5jcykgewo+Pj4+PiArICAgICAgICAg ICAgICAgLmN0b3IgPSBnazIwYV9kdmZzX2N0b3IsCj4+Pj4+ICsgICAgICAgICAgICAgICAuZHRv ciA9IF9ub3V2ZWF1X2R2ZnNfZHRvciwKPj4+Pj4gKyAgICAgICAgICAgICAgIC5pbml0ID0gZ2sy MGFfZHZmc19pbml0LAo+Pj4+PiArICAgICAgICAgICAgICAgLmZpbmkgPSBfbm91dmVhdV9kdmZz X2ZpbmksCj4+Pj4+ICsgICAgICAgfSwKPj4+Pj4gKyAgICAgICAuZ2V0X2Rldl9zdGF0dXMgPSBn azIwYV9kdmZzX2dldF9kZXZfc3RhdHVzLAo+Pj4+PiArICAgICAgIC5yZXNldF9kZXZfc3RhdHVz ID0gZ2syMGFfZHZmc19yZXNldF9kZXZfc3RhdHVzLAo+Pj4+PiArICAgICAgIC50YXJnZXQgPSBn azIwYV9kdmZzX3RhcmdldCwKPj4+Pj4gKyAgICAgICAuZ2V0X2N1cl9zdGF0ZSA9IGdrMjBhX2R2 ZnNfZ2V0X2N1cl9zdGF0ZSwKPj4+Pj4gKyAgICAgICAuZ2V0X3RhcmdldF9zdGF0ZSA9IGdrMjBh X2R2ZnNfZ2V0X3RhcmdldF9zdGF0ZSwKPj4+Pj4gK30uYmFzZTsKPj4+Pj4gZGlmZiAtLWdpdCBh L252a20vc3ViZGV2L2R2ZnMvcHJpdi5oIGIvbnZrbS9zdWJkZXYvZHZmcy9wcml2LmgKPj4+Pj4g bmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4+Pj4gaW5kZXggMDAwMDAwMDAwMDAwLi45NWM4YTAwYTAx YzEKPj4+Pj4gLS0tIC9kZXYvbnVsbAo+Pj4+PiArKysgYi9udmttL3N1YmRldi9kdmZzL3ByaXYu aAo+Pj4+PiBAQCAtMCwwICsxLDQzIEBACj4+Pj4+ICsjaWZuZGVmIF9fTlZLTV9EVkZTX1BSSVZf SF9fCj4+Pj4+ICsjZGVmaW5lIF9fTlZLTV9EVkZTX1BSSVZfSF9fCj4+Pj4+ICsKPj4+Pj4gKyNp bmNsdWRlIDxzdWJkZXYvZHZmcy5oPgo+Pj4+PiArCj4+Pj4+ICtzdHJ1Y3Qgbm91dmVhdV9kdmZz X2Rldl9zdGF0dXMgewo+Pj4+PiArICAgICAgIHVuc2lnbmVkIGxvbmcgdG90YWw7Cj4+Pj4+ICsg ICAgICAgdW5zaWduZWQgbG9uZyBidXN5Owo+Pj4+PiArICAgICAgIGludCBjdXJfc3RhdGU7Cj4+ Pj4+ICt9Owo+Pj4+PiArCj4+Pj4+ICtzdHJ1Y3Qgbm91dmVhdV9kdmZzX2ltcGwgewo+Pj4+PiAr ICAgICAgIHN0cnVjdCBub3V2ZWF1X29jbGFzcyBiYXNlOwo+Pj4+PiArICAgICAgIGludCAoKmdl dF9kZXZfc3RhdHVzKShzdHJ1Y3Qgbm91dmVhdV9kdmZzICosCj4+Pj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IG5vdXZlYXVfZHZmc19kZXZfc3RhdHVzICopOwo+Pj4+ PiArICAgICAgIHZvaWQgKCpyZXNldF9kZXZfc3RhdHVzKShzdHJ1Y3Qgbm91dmVhdV9kdmZzICop Owo+Pj4+PiArICAgICAgIGludCAoKnRhcmdldCkoc3RydWN0IG5vdXZlYXVfZHZmcyAqLCBpbnQg KnN0YXRlKTsKPj4+Pj4gKyAgICAgICBpbnQgKCpnZXRfY3VyX3N0YXRlKShzdHJ1Y3Qgbm91dmVh dV9kdmZzICosIGludCAqc3RhdGUpOwo+Pj4+PiArICAgICAgIGludCAoKmdldF90YXJnZXRfc3Rh dGUpKHN0cnVjdCBub3V2ZWF1X2R2ZnMgKiwgaW50ICpzdGF0ZSwgCj4+Pj4+IGludAo+Pj4+PiBs b2FkKTsKPj4+Pj4gK307Cj4+Pj4+ICsKPj4+Pj4gKyNkZWZpbmUgbm91dmVhdV9kdmZzX2NyZWF0 ZShwLGUsbyxkKQo+Pj4+PiBcCj4+Pj4+ICsgICAgICAgbm91dmVhdV9kdmZzX2NyZWF0ZV8oKHAp LCAoZSksIChvKSwgc2l6ZW9mKCoqZCksICh2b2lkICoqKWQpCj4+Pj4+ICsjZGVmaW5lIG5vdXZl YXVfZHZmc19kZXN0cm95KHApICh7Cj4+Pj4+IFwKPj4+Pj4gKyAgICAgICBzdHJ1Y3Qgbm91dmVh dV9kdmZzICpkID0gKHApOwo+Pj4+PiBcCj4+Pj4+ICsgICAgICAgX25vdXZlYXVfZHZmc19kdG9y KG52X29iamVjdChkKSk7Cj4+Pj4+IFwKPj4+Pj4gK30pCj4+Pj4+ICsjZGVmaW5lIG5vdXZlYXVf ZHZmc19pbml0KHApICh7Cj4+Pj4+IFwKPj4+Pj4gKyAgICAgICBzdHJ1Y3Qgbm91dmVhdV9kdmZz ICpkID0gKHApOwo+Pj4+PiBcCj4+Pj4+ICsgICAgICAgX25vdXZlYXVfZHZmc19pbml0KG52X29i amVjdChkKSk7Cj4+Pj4+IFwKPj4+Pj4gK30pCj4+Pj4+ICsjZGVmaW5lIG5vdXZlYXVfZHZmc19m aW5pKHAscykgKHsKPj4+Pj4gXAo+Pj4+PiArICAgICAgIHN0cnVjdCBub3V2ZWF1X2R2ZnMgKmQg PSAocCk7Cj4+Pj4+IFwKPj4+Pj4gKyAgICAgICBfbm91dmVhdV9kdmZzX2ZpbmkobnZfb2JqZWN0 KGQpLCAocykpOwo+Pj4+PiBcCj4+Pj4+ICt9KQo+Pj4+PiArCj4+Pj4+ICtpbnQgbm91dmVhdV9k dmZzX2NyZWF0ZV8oc3RydWN0IG5vdXZlYXVfb2JqZWN0ICosIHN0cnVjdCAKPj4+Pj4gbm91dmVh dV9vYmplY3QKPj4+Pj4gKiwKPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj dCBub3V2ZWF1X29jbGFzcyAqLCBpbnQsIHZvaWQgKiopOwo+Pj4+PiArdm9pZCBfbm91dmVhdV9k dmZzX2R0b3Ioc3RydWN0IG5vdXZlYXVfb2JqZWN0ICopOwo+Pj4+PiAraW50IF9ub3V2ZWF1X2R2 ZnNfaW5pdChzdHJ1Y3Qgbm91dmVhdV9vYmplY3QgKik7Cj4+Pj4+ICtpbnQgX25vdXZlYXVfZHZm c19maW5pKHN0cnVjdCBub3V2ZWF1X29iamVjdCAqLCBib29sIHN1c3BlbmQpOwo+Pj4+PiArCj4+ Pj4+ICsjZW5kaWYKPj4+Pj4gLS0gCj4+Pj4+IDEuOS4xCj4+Pj4+Cj4+Pj4+IF9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+Pj4+IE5vdXZlYXUgbWFpbGlu ZyBsaXN0Cj4+Pj4+IE5vdXZlYXVAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+Pj4+IGh0dHA6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9ub3V2ZWF1Cj4+Pgo+Pj4KPj4+ IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIAo+Pj4KPj4+IFRoaXMgZW1haWwgbWVzc2FnZSBp cyBmb3IgdGhlIHNvbGUgdXNlIG9mIHRoZSBpbnRlbmRlZCByZWNpcGllbnQocykgCj4+PiBhbmQg bWF5Cj4+PiBjb250YWluCj4+PiBjb25maWRlbnRpYWwgaW5mb3JtYXRpb24uICBBbnkgdW5hdXRo b3JpemVkIHJldmlldywgdXNlLCBkaXNjbG9zdXJlIG9yCj4+PiBkaXN0cmlidXRpb24KPj4+IGlz IHByb2hpYml0ZWQuICBJZiB5b3UgYXJlIG5vdCB0aGUgaW50ZW5kZWQgcmVjaXBpZW50LCBwbGVh c2UgCj4+PiBjb250YWN0IHRoZQo+Pj4gc2VuZGVyIGJ5Cj4+PiByZXBseSBlbWFpbCBhbmQgZGVz dHJveSBhbGwgY29waWVzIG9mIHRoZSBvcmlnaW5hbCBtZXNzYWdlLgo+Pj4gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0gCj4+Pgo+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwo+PiBOb3V2ZWF1IG1haWxpbmcgbGlzdAo+PiBOb3V2ZWF1QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwo+PiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vbm91dmVhdQo+CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpOb3V2ZWF1IG1haWxpbmcgbGlzdApOb3V2ZWF1QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vbm91dmVhdQo=