From mboxrd@z Thu Jan 1 00:00:00 1970 From: Subject: Re: [PATCH net-next 3/3] openvswitch: 802.1AD: Flow handling, actions, vlan parsing and netlink attributes Date: Sat, 1 Aug 2015 15:45:42 +0000 Message-ID: References: <1437922355-3809-1-git-send-email-thomasfherbert@gmail.com> <1437922355-3809-4-git-send-email-thomasfherbert@gmail.com> , <55BBA229.6080704@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: dev-yBygre7rU0TnMu66kgdUjQ@public.gmane.org To: , , , Return-path: In-Reply-To: <55BBA229.6080704-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces-yBygre7rU0TnMu66kgdUjQ@public.gmane.org Sender: "dev" List-Id: netdev.vger.kernel.org SGkgVGhvbWFzLAoKVGhhbmtzIGZvciB5b3VyIGNsYXJpZmljYXRpb24uCkNvdWxkIHlvdSBwbGVh c2UgZm9yd2FyZCBtZSB0aGUgdXNlcnNwYWNlIHBhdGNoIHlvdSBhcmUgbWVudGlvbmluZy4gSSBn dWVzcyB2ZXJzaW9uIDYgaXMgdGhlIGxhdGVzdCwKYnV0IEkgY291bGQgbm90IGdldCB0aGUgcGF0 Y2ggaW4gaW50ZXJuZXQuIFdlIGFyZSBpbnRlcmVzdGVkIGluIHRlc3RpbmcgdGhpcyBmZWF0dXJl IHRob3JvdWdobHkuCgpBbHNvIEluIHRoZSBjYXNlIG9mIE5PUk1BTCBtb2RlIGFzIHlvdSBzYWlk IHdpdGhvdXQgcGF0Y2ggYWxzbyBpdCBzaG91bGQgd29yay4gQnV0IEkgdGVzdGVkIHRob3JvdWdo bHkgdG8gcmVhbGl6ZSAxYWQgaW4gdGhlIGNvbnRleHQgb2YKTk9STUFMIG1vZGUuIEkgZGlkIG5v dCBzZWUgdGhlIHN1cHBvcnQgaW4gTk9STUFMIG1vZGUuIEkgYW0gc2VlaW5nIHB1c2hpbmcgb25s eSAxcSB0YWcoQWNjZXNzL05hdGl2ZS10YWdnZWQvTmF0aXZlLXVudGFnZ2VkKS4KClBsZWFzZSBm aW5kIG15IHVuZGVyc3RhbmRpbmcgZnJvbSBteSB0ZXN0cwoKSWYgYWxyZWFkeSB0YWdnZWQgcGFj a2V0IHJlY2VpdmVkIG9uIGluZ3Jlc3MgcG9ydDoKICAgICAgIDEpSWYgaW50ZXJmYWNlIGlzIGNv bmZpZ3VyZWQgYXMgYWNjZXNzICwgcGFja2V0IGlzIGRyb3BwZWQKICAgICAgIDIpSWYgaW50ZXJm YWNlIGlzIGNvbmZpZ3VyZWQgYXMgbmF0aXZlLXRhZ2dlZC9uYXRpdmUtdW50YWdnZWQsIHBhY2tl dCBpcyBqdXN0IGZvcndhcmRlZApGb3IgYW4gdW50YWdnZWQgcGFja2V0IHJlY2VpdmVkIG9uIGlu Z3Jlc3MgcG9ydCAsIGluIGFsbCB0aGUgYWJvdmUgdGhyZWUgbW9kZSAxcSBoZWFkZXIgaXMgYmVp bmcgcHVzaGVkLgoKVGhhbmtzICYgUmVnYXJkcywKVWRheWEgS3VtYXIgUgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KRnJvbTogVGhvbWFzIEYgSGVyYmVydCA8dGhlcmJl cnRAcmVkaGF0LmNvbT4KU2VudDogRnJpZGF5LCBKdWx5IDMxLCAyMDE1IDk6NTggUE0KVG86IFJh dnVsYWtvbGx1IFVkYXlhIEt1bWFyIChXVDAxIC0gRGlnaXRhbCBNYXJrZXRpbmcpOyB0aG9tYXNm aGVyYmVydEBnbWFpbC5jb207IG5ldGRldkB2Z2VyLmtlcm5lbC5vcmc7IHBzaGVsYXJAbmljaXJh LmNvbQpDYzogZGV2QG9wZW52c3dpdGNoLm9yZwpTdWJqZWN0OiBSZTogW292cy1kZXZdIFtQQVRD SCBuZXQtbmV4dCAzLzNdIG9wZW52c3dpdGNoOiA4MDIuMUFEOiBGbG93IGhhbmRsaW5nLCBhY3Rp b25zLCB2bGFuIHBhcnNpbmcgYW5kIG5ldGxpbmsgYXR0cmlidXRlcwoKT24gNy8zMS8xNSA1OjM0 IEFNLCByYXZ1bGFrb2xsdS5rdW1hckB3aXByby5jb20gd3JvdGU6Cj4gSGkgVGhvbWFzLAo+Cj4g SSBoYXZlIGFwcGxpZWQgeW91ciAgYmVsb3cgbWVudGlvbmVkIDFhZCBwYXRjaCB0byBvdnMtbWFz dGVyIGNvZGUuIENvbXBpbGVkIHN1Y2Nlc3NmdWxseS4gSSBhbSBydW5uaW5nIG92cyBpbiBhIGNl bnRvcyBtYWNoaW5lLgo+IEkgaGF2ZSBjcmVhdGVkIGJyaWRnZSBhbmQgY29uZmlndXJlZCBwb3J0 cyB1c2luZyBiZWxvdyBjb21tYW5kcy4KPgo+IG92cy12c2N0bCAtLW5vLXdhaXQgYWRkLWJyIGJy MAo+IG92cy12c2N0bCAtLW5vLXdhaXQgYWRkLXBvcnQgYnIwIGV0aDAgdGFnPTEwMCB2bGFuX21v ZGU9bmF0aXZlLXRhZ2dlZCAvYWNjZXNzCj4gb3ZzLXZzY3RsIC0tbm8td2FpdCBhZGQtcG9ydCBi cjAgZXRoMQo+Cj4gQ29uZmlndXJlZCB0aGUgYnJpZGdlIHRvIHdvcmsgaW4gbGVnYWN5IGJyaWRn ZSBtb2RlCj4gJCBvdnMtb2ZjdGwgZHVtcC1mbG93cyBicjAKPiAgIE5YU1RfRkxPVyByZXBseSAo eGlkPTB4NCk6Cj4gICBjb29raWU9MHgwLCBkdXJhdGlvbj0xNS40NThzLCB0YWJsZT0wLCBuX3Bh Y2tldHM9MCwgbl9ieXRlcz0wLCBpZGxlX2FnZT0xNSwgcHJpb3JpdHk9MCBhY3Rpb25zPU5PUk1B TAo+Cj4gQW5kIHN0YXJ0ZWQgcnVubmluZyB2c3dpdGNoZAo+Cj4gJCBvdnMtdnN3aXRjaGQgLS1w aWRmaWxlCj4KPiBTdGFydGVkIHB1bXBpbmcgdHJhZmZpYyBmcm9tIG91dHNpZGUgdXNpbmcgb3N0 aW5hdG8gcGFja2V0IGdlbmVyYXRvciBmb3IgUGh5LVBoeSBzY2VuYXJpbyhzZW5kaW5nIHRvIGV0 aDAgLHJlY2VpdmluZyBiYWNrIG9uIGV0aDEpCj4gTXkgb2JzZXJ2YXRpb24gaXMKPiAxKSBGb3Ig dW50YWdnZWQgcGFja2V0IHJlY2VpdmVkIG9uIGV0aDAgcHVzaGluZyB2aWQgMTAwIGFuZCBwYWNr ZXQgZmxvdyBpcyBmaW5lCj4gMikgRm9yIGFscmVhZHkgdGFnZ2VkICgxcSkgcGFja2V0IHJlY2Vp dmVkIG9uIGV0aDAgcGFja2V0IGlzIGRyb3BwZWQgLCBJIGNvdWxkIHNlZSB2c3dpdGNoZCBsb2cg dGhyb3dpbmcgYmVsb3cgZXJyb3IoZHVwbGljYXRlIGV0aF90eXBlIGF0dHJpYnV0ZSBpbiBmbG93 IGtleSkKPgo+IDIwMTUtMDctMzFUMTI6MTM6NTlafDAwMDAxfG92c19udW1hfElORk98RGlzY292 ZXJlZCA0IENQVSBjb3JlcyBvbiBOVU1BIG5vZGUgMAo+IDIwMTUtMDctMzFUMTI6MTM6NTlafDAw MDAyfG92c19udW1hfElORk98RGlzY292ZXJlZCAxIE5VTUEgbm9kZXMgYW5kIDQgQ1BVIGNvcmVz Cj4gMjAxNS0wNy0zMVQxMjoxMzo1OVp8MDAwMDN8cmVjb25uZWN0fElORk98dW5peDovdXNyL2xv Y2FsL3Zhci9ydW4vb3BlbnZzd2l0Y2gvZGIuc29jazogY29ubmVjdGluZy4uLgo+IDIwMTUtMDct MzFUMTI6MTM6NTlafDAwMDA0fHJlY29ubmVjdHxJTkZPfHVuaXg6L3Vzci9sb2NhbC92YXIvcnVu L29wZW52c3dpdGNoL2RiLnNvY2s6IGNvbm5lY3RlZAo+IDIwMTUtMDctMzFUMTI6MTM6NTlafDAw MDA1fG9mcHJvdG9fZHBpZnxJTkZPfHN5c3RlbUBvdnMtc3lzdGVtOiBEYXRhcGF0aCBzdXBwb3J0 cyByZWNpcmN1bGF0aW9uCj4gMjAxNS0wNy0zMVQxMjoxMzo1OVp8MDAwMDZ8b2Zwcm90b19kcGlm fElORk98c3lzdGVtQG92cy1zeXN0ZW06IE1QTFMgbGFiZWwgc3RhY2sgbGVuZ3RoIHByb2JlZCBh cyAxCj4gMjAxNS0wNy0zMVQxMjoxMzo1OVp8MDAwMDd8b2Zwcm90b19kcGlmfElORk98c3lzdGVt QG92cy1zeXN0ZW06IERhdGFwYXRoIHN1cHBvcnRzIHVuaXF1ZSBmbG93IGlkcwo+IDIwMTUtMDct MzFUMTI6MTM6NTlafDAwMDAxfG9mcHJvdG9fZHBpZl91cGNhbGwoaGFuZGxlcjEpfElORk98cmVj ZWl2ZWQgcGFja2V0IG9uIHVuYXNzb2NpYXRlZCBkYXRhcGF0aCBwb3J0IDAKPiAyMDE1LTA3LTMx VDEyOjEzOjU5WnwwMDAwOHxicmlkZ2V8SU5GT3xicmlkZ2UgYnIwOiBhZGRlZCBpbnRlcmZhY2Ug ZXRoMCBvbiBwb3J0IDEKPiAyMDE1LTA3LTMxVDEyOjEzOjU5WnwwMDAwOXxicmlkZ2V8SU5GT3xi cmlkZ2UgYnIwOiBhZGRlZCBpbnRlcmZhY2UgYnIwIG9uIHBvcnQgNjU1MzQKPiAyMDE1LTA3LTMx VDEyOjEzOjU5WnwwMDAxMHxicmlkZ2V8SU5GT3xicmlkZ2UgYnIwOiBhZGRlZCBpbnRlcmZhY2Ug ZXRoMSBvbiBwb3J0IDIKPiAyMDE1LTA3LTMxVDEyOjEzOjU5WnwwMDAxMXxicmlkZ2V8SU5GT3xi cmlkZ2UgYnIwOiB1c2luZyBkYXRhcGF0aCBJRCAwMDAwZWFjMDdhZWE1MTQzCj4gMjAxNS0wNy0z MVQxMjoxMzo1OVp8MDAwMTJ8Y29ubm1ncnxJTkZPfGJyMDogYWRkZWQgc2VydmljZSBjb250cm9s bGVyICJwdW5peDovdXNyL2xvY2FsL3Zhci9ydW4vb3BlbnZzd2l0Y2gvYnIwLm1nbXQiCj4gMjAx NS0wNy0zMVQxMjoxMzo1OVp8MDAwMTN8YnJpZGdlfElORk98b3ZzLXZzd2l0Y2hkIChPcGVuIHZT d2l0Y2gpIDIuMy45MAo+IDIwMTUtMDctMzFUMTI6MTQ6MDlafDAwMDE0fG1lbW9yeXxJTkZPfDI0 MjAga0IgcGVhayByZXNpZGVudCBzZXQgc2l6ZSBhZnRlciAxMC4wIHNlY29uZHMKPiAyMDE1LTA3 LTMxVDEyOjE0OjA5WnwwMDAxNXxtZW1vcnl8SU5GT3xoYW5kbGVyczoyIHBvcnRzOjMgcmV2YWxp ZGF0b3JzOjIgcnVsZXM6NQo+IDIwMTUtMDctMzFUMTI6MTY6MzFafDAwMDAxfG9kcF91dGlsKGhh bmRsZXI2KXxFUlJ8ZHVwbGljYXRlIGV0aF90eXBlIGF0dHJpYnV0ZSBpbiBmbG93IGtleQo+IDIw MTUtMDctMzFUMTI6MjY6NTFafDAwMDAyfG9kcF91dGlsKGhhbmRsZXI2KXxFUlJ8ZHVwbGljYXRl IGV0aF90eXBlIGF0dHJpYnV0ZSBpbiBmbG93IGtleQpJIGJlbGlldmUgdGhpcyBtYXkgYmUgYSBi dWcgaW4gdGhlIHBhdGNoLgoKQWxzbywgd2hhdCB5b3UgYXJlIGRvaW5nIGFib3ZlIHNob3VsZCB3 b3JrIHdpdGhvdXQgdGhlIHBhdGNoLgo+Cj4KPiBQbGVhc2UsIGxldCBtZSBrbm93IHdoZXRoZXIg SSBtaXNzZWQgYW55dGhpbmcgaW4gdGhlIGNvbmZpZ3VyYXRpb24uIEl0IHdvdWxkIGJlIGhlbHBm dWwgIGlmIHNvbWVvbmUgY291bGQgbGV0IG1lCj4gS25vdyBob3cgSSBjYW4gaW5zZXJ0IDFhZCB0 YWcgb24gaW5ncmVzcy4KClRoZSBwYXRjaCBzdXBwb3J0cyBwdXNoaW5nIGFuZCBwb3BwaW5nIG91 dGVyIHRhZ3MgZm9yIDgwMi4xYWQuIFRoZQpwcmV2aW91c2x5IHN1Ym1pdHRlZCB1c2VyIHNwYWNl IHBhdGNoIGlzIHJlcXVpcmVkIGFzIHdlbGwuCgpUbyB0ZXN0OiB0YWtlIHRoZSBzd2l0Y2ggb3V0 IG9mIE5PUk1BTCBtb2RlIHNvIGl0IHdvbid0IGZsb29kIHBhY2tldHMsCnNldCB1cCB2ZXRocywg YnJpZGdlcyBhbmQgcG9ydHMuIFRoZSB0ZXN0IHNob3VsZCBhY2NlcHQgIHVudGFnZ2VkCnRyYWZm aWMgaW4gZXRoIHAxcDEgYW5kIGRvdWJsZSB0YWdnZWQgdHJhZmZpYyBpbiBldGggZW00CgpzdWRv IGlwIGxpbmsgYWRkIHR5cGUgdmV0aApzdWRvIGlmY29uZmlnIHZldGgwIHVwCnN1ZG8gaWZjb25m aWcgdmV0aDEgdXAKCnN1ZG8gb3ZzLXZzY3RsIGFkZC1iciBicjAKCnN1ZG8gb3ZzLXZzY3RsIC0t IHNldCBicmlkZ2UgYnIwIGZhaWwtbW9kZT1zZWN1cmUKCnN1ZG8gb3ZzLXZzY3RsIC0tIHNldCBi cmlkZ2UgYnIwIHByb3RvY29scz1bT3BlbkZsb3cxMV0KCnN1ZG8gb3ZzLXZzY3RsIGFkZC1wb3J0 IGJyMCBlbTQKCnN1ZG8gb3ZzLXZzY3RsIGFkZC1wb3J0IGJyMCB2ZXRoMAojCiMgQWRkIEN1c3Rv bWVyIGJyaWRnZQojCnN1ZG8gb3ZzLXZzY3RsIGFkZC1iciBicjEKCnN1ZG8gb3ZzLXZzY3RsIC0t IHNldCBicmlkZ2UgYnIxIGZhaWwtbW9kZT1zZWN1cmUKCnN1ZG8gb3ZzLXZzY3RsIC0tIHNldCBi cmlkZ2UgYnIxIHByb3RvY29scz1bT3BlbkZsb3cxMV0KCnN1ZG8gb3ZzLXZzY3RsIGFkZC1wb3J0 IGJyMSB2ZXRoMQoKc3VkbyBvdnMtdnNjdGwgYWRkLXBvcnQgYnIxIHAxcDIKCgpUaGVuIGFkZCBm bG93cyB0byBwdXNoIGFuZCBwb3AgdmxhbnMgYXMgZm9sbG93cy4KCnN1ZG8gb3ZzLW9mY3RsIC0t cHJvdG9jb2xzPU9wZW5GbG93MTEgYWRkLWZsb3cgYnIwCmluX3BvcnQ9MSxkbF92bGFuPTEwMCxh Y3Rpb25zPXBvcF92bGFuLG91dHB1dDoyCiMKIyBQYWNrZXRzIHRvIENvcmUKIwpzdWRvIG92cy1v ZmN0bCAtLXByb3RvY29scz1PcGVuRmxvdzExIGFkZC1mbG93IGJyMAppbl9wb3J0PTIsYWN0aW9u cz1wdXNoX3ZsYW46MHg4OGE4LGxvYWQ6MTAwLVw+T1hNX09GX1ZMQU5fVklEW10sb3V0cHV0OjEK IwojIFN0cmlwIGMtdGFnCiMKIyBDdGFnIFBhY2tldHMgZnJvbSBicjAsVklEOjk5OAojCnN1ZG8g b3ZzLW9mY3RsIC0tcHJvdG9jb2xzPU9wZW5GbG93MTEgYWRkLWZsb3cgYnIxCmluX3BvcnQ9MSxk bF92bGFuPTk5OCxhY3Rpb25zPXBvcF92bGFuLG91dHB1dDoyCiMKIyBDdGFnIFBhY2tldHMgZnJv bSAgY3BlIHRvIFZJRDo5OTgKIwpzdWRvIG92cy1vZmN0bCAtLXByb3RvY29scz1PcGVuRmxvdzEx IGFkZC1mbG93IGJyMQppbl9wb3J0PTIsYWN0aW9ucz1wdXNoX3ZsYW46MHg4MTAwLGxvYWQ6OTk4 LVw+T1hNX09GX1ZMQU5fVklEW10sb3V0cHV0OjEKCgotLVRGSAoKPgo+IFRoYW5rcyAmIFJlZ2Fy ZHMsCj4gVWRheQo+Cj4KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+IEZyb206IGRldiBb bWFpbHRvOmRldi1ib3VuY2VzQG9wZW52c3dpdGNoLm9yZ10gT24gQmVoYWxmIE9mIFRob21hcyBG IEhlcmJlcnQKPiBTZW50OiBTdW5kYXksIEp1bHkgMjYsIDIwMTUgODoyMyBQTQo+IFRvOiBuZXRk ZXZAdmdlci5rZXJuZWwub3JnOyBwc2hlbGFyQG5pY2lyYS5jb20KPiBDYzogZGV2QG9wZW52c3dp dGNoLm9yZzsgdGhlcmJlcnRAcmVkaGF0LmNvbQo+IFN1YmplY3Q6IFtvdnMtZGV2XSBbUEFUQ0gg bmV0LW5leHQgMy8zXSBvcGVudnN3aXRjaDogODAyLjFBRDogRmxvdyBoYW5kbGluZywgYWN0aW9u cywgdmxhbiBwYXJzaW5nIGFuZCBuZXRsaW5rIGF0dHJpYnV0ZXMKPgo+IEFkZCBzdXBwb3J0IGZv ciA4MDIuMWFkIGluY2x1ZGluZyB0aGUgYWJpbGl0eSB0byBwdXNoIGFuZCBwb3AgZG91YmxlIHRh Z2dlZCB2bGFucy4gQWRkIHN1cHBvcnQgZm9yIDgwMi4xYWQgdG8gbmV0bGluayBwYXJzaW5nIGFu ZCBmbG93IGNvbnZlcnNpb24uIFVzZXMgZG91YmxlIG5lc3RlZCBlbmNhcCBhdHRyaWJ1dGVzIHRv IHJlcHJlc2VudCBkb3VibGUgdGFnZ2VkIHZsYW4uIElubmVyIFRQSUQgZW5jb2RlZCBhbG9uZyB3 aXRoIGN0Y2kgaW4gbmVzdGVkIGF0dHJpYnV0ZXMuIEFsbG93cyBlaXRoZXIgMHg4MTAwIG9yIDB4 ODhhOCBvbiBpbm5lciBvciBvdXRlciB0YWdzLgo+Cj4gU2lnbmVkLW9mZi1ieTogVGhvbWFzIEYg SGVyYmVydCA8dGhvbWFzZmhlcmJlcnRAZ21haWwuY29tPgo+IC0tLQo+ICAgbmV0L29wZW52c3dp dGNoL2Zsb3cuYyAgICAgICAgIHwgIDg0ICsrKysrKysrKysrKysrKy0tLQo+ICAgbmV0L29wZW52 c3dpdGNoL2Zsb3cuaCAgICAgICAgIHwgICA1ICsrCj4gICBuZXQvb3BlbnZzd2l0Y2gvZmxvd19u ZXRsaW5rLmMgfCAxOTYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0K PiAgIDMgZmlsZXMgY2hhbmdlZCwgMjQzIGluc2VydGlvbnMoKyksIDQyIGRlbGV0aW9ucygtKQo+ Cj4gZGlmZiAtLWdpdCBhL25ldC9vcGVudnN3aXRjaC9mbG93LmMgYi9uZXQvb3BlbnZzd2l0Y2gv Zmxvdy5jIGluZGV4IDhkYjIyZWYuLjBhYmFiMzcgMTAwNjQ0Cj4gLS0tIGEvbmV0L29wZW52c3dp dGNoL2Zsb3cuYwo+ICsrKyBiL25ldC9vcGVudnN3aXRjaC9mbG93LmMKPiBAQCAtMjk4LDIxICsy OTgsODAgQEAgc3RhdGljIGJvb2wgaWNtcDZoZHJfb2soc3RydWN0IHNrX2J1ZmYgKnNrYikgIHN0 YXRpYyBpbnQgcGFyc2VfdmxhbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc3dfZmxvd19r ZXkgKmtleSkgIHsKPiAgICAgICBzdHJ1Y3QgcXRhZ19wcmVmaXggewo+IC0gICAgICAgICAgICAg X19iZTE2IGV0aF90eXBlOyAvKiBFVEhfUF84MDIxUSAqLwo+ICsgICAgICAgICAgICAgX19iZTE2 IGV0aF90eXBlOyAvKiBFVEhfUF84MDIxUSAgb3IgRVRIX1BfODAyMUFEICovCj4gICAgICAgICAg ICAgICBfX2JlMTYgdGNpOwo+ICAgICAgIH07Cj4gLSAgICAgc3RydWN0IHF0YWdfcHJlZml4ICpx cDsKPiArICAgICBzdHJ1Y3QgcXRhZ19wcmVmaXggKnFwID0gKHN0cnVjdCBxdGFnX3ByZWZpeCAq KXNrYi0+ZGF0YTsKPgo+IC0gICAgIGlmICh1bmxpa2VseShza2ItPmxlbiA8IHNpemVvZihzdHJ1 Y3QgcXRhZ19wcmVmaXgpICsgc2l6ZW9mKF9fYmUxNikpKQo+ICsgICAgIHN0cnVjdCBxaW5xdGFn X3ByZWZpeCB7Cj4gKyAgICAgICAgICAgICBfX2JlMTYgZXRoX3R5cGU7IC8qIEVUSF9QXzgwMjFR ICBvciBFVEhfUF84MDIxQUQgKi8KPiArICAgICAgICAgICAgIF9fYmUxNiB0Y2k7Cj4gKyAgICAg ICAgICAgICBfX2JlMTYgaW5uZXJfdHBpZDsgLyogRVRIX1BfODAyMVEgKi8KPiArICAgICAgICAg ICAgIF9fYmUxNiBjdGNpOwo+ICsgICAgIH07Cj4gKwo+ICsgICAgIGlmIChsaWtlbHkoc2tiX3Zs YW5fdGFnX3ByZXNlbnQoc2tiKSkpIHsKPiArICAgICAgICAgICAgIGtleS0+ZXRoLnRjaSA9IGh0 b25zKHNrYi0+dmxhbl90Y2kpOwo+ICsKPiArICAgICAgICAgICAgIC8qIENhc2Ugd2hlcmUgdXBz dHJlYW0KPiArICAgICAgICAgICAgICAqIHByb2Nlc3NpbmcgaGFzIGFscmVhZHkgc3RyaXBwZWQg dGhlIG91dGVyIHZsYW4gdGFnLgo+ICsgICAgICAgICAgICAgICovCj4gKyAgICAgICAgICAgICBp ZiAodW5saWtlbHkoc2tiLT52bGFuX3Byb3RvID09IGh0b25zKEVUSF9QXzgwMjFBRCkpKSB7Cj4g KyAgICAgICAgICAgICAgICAgICAgIGlmICh1bmxpa2VseShza2ItPmxlbiA8IHNpemVvZihzdHJ1 Y3QgcXRhZ19wcmVmaXgpICsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNpemVvZihfX2JlMTYpKSkgewo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleS0+ ZXRoLnRjaSA9IDA7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4g KyAgICAgICAgICAgICAgICAgICAgIH0KPiArCj4gKyAgICAgICAgICAgICAgICAgICAgIGlmICh1 bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoc3RydWN0IHF0YWdfcHJlZml4KSArCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoX19i ZTE2KSkpKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07 Cj4gKyAgICAgICAgICAgICAgICAgICAgIH0KPiArCj4gKyAgICAgICAgICAgICAgICAgICAgIGlm IChsaWtlbHkocXAtPmV0aF90eXBlID09IGh0b25zKEVUSF9QXzgwMjFRKSkpIHsKPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBrZXktPmV0aC5jdmxhbi5jdGNpID0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHFwLT50Y2kgfCBodG9ucyhWTEFOX1RBR19QUkVT RU5UKTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXktPmV0aC5jdmxhbi5jX3Rw aWQgPSBxcC0+ZXRoX3R5cGU7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19za2Jf cHVsbChza2IsIHNpemVvZihzdHJ1Y3QgcXRhZ19wcmVmaXgpKTsKPiArICAgICAgICAgICAgICAg ICAgICAgfQo+ICsgICAgICAgICAgICAgfQo+ICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4gKyAg ICAgfQo+Cj4gLSAgICAgaWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgc2l6ZW9mKHN0 cnVjdCBxdGFnX3ByZWZpeCkgKwo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNpemVvZihfX2JlMTYpKSkpCj4gLSAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKPgo+ IC0gICAgIHFwID0gKHN0cnVjdCBxdGFnX3ByZWZpeCAqKSBza2ItPmRhdGE7Cj4gLSAgICAga2V5 LT5ldGgudGNpID0gcXAtPnRjaSB8IGh0b25zKFZMQU5fVEFHX1BSRVNFTlQpOwo+IC0gICAgIF9f c2tiX3B1bGwoc2tiLCBzaXplb2Yoc3RydWN0IHF0YWdfcHJlZml4KSk7Cj4gKyAgICAgaWYgKHFw LT5ldGhfdHlwZSA9PSBodG9ucyhFVEhfUF84MDIxQUQpKSB7Cj4gKyAgICAgICAgICAgICBzdHJ1 Y3QgcWlucXRhZ19wcmVmaXggKnFpbnFwID0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChzdHJ1Y3QgcWlucXRhZ19wcmVmaXggKilza2ItPmRhdGE7Cj4gKwo+ICsgICAg ICAgICAgICAgaWYgKHVubGlrZWx5KHNrYi0+bGVuIDwgc2l6ZW9mKHN0cnVjdCBxaW5xdGFnX3By ZWZpeCkgKwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKF9f YmUxNikpKQo+ICsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKPiArCj4gKyAgICAgICAg ICAgICBpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBzaXplb2Yoc3RydWN0IHFpbnF0 YWdfcHJlZml4KSArCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKF9fYmUx NikpKSkgewo+ICsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKPiArICAgICAg ICAgICAgIH0KPiArICAgICAgICAgICAgIGtleS0+ZXRoLnRjaSA9IHFpbnFwLT50Y2kgfCBodG9u cyhWTEFOX1RBR19QUkVTRU5UKTsKPiArICAgICAgICAgICAgIGtleS0+ZXRoLmN2bGFuLmN0Y2kg PSBxaW5xcC0+Y3RjaSB8IGh0b25zKFZMQU5fVEFHX1BSRVNFTlQpOwo+ICsgICAgICAgICAgICAg a2V5LT5ldGguY3ZsYW4uY190cGlkID0gcWlucXAtPmlubmVyX3RwaWQ7Cj4gKwo+ICsgICAgICAg ICAgICAgX19za2JfcHVsbChza2IsIHNpemVvZihzdHJ1Y3QgcWlucXRhZ19wcmVmaXgpKTsKPiAr Cj4gKyAgICAgICAgICAgICByZXR1cm4gMDsKPiArICAgICB9Cj4gKyAgICAgaWYgKHFwLT5ldGhf dHlwZSA9PSBodG9ucyhFVEhfUF84MDIxUSkpIHsKPiArICAgICAgICAgICAgIGlmICh1bmxpa2Vs eShza2ItPmxlbiA8IHNpemVvZihzdHJ1Y3QgcXRhZ19wcmVmaXgpICsKPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihfX2JlMTYpKSkKPiArICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsgICAgICAgICAgICAgaWYgKHVubGlrZWx5 KCFwc2tiX21heV9wdWxsKHNrYiwgc2l6ZW9mKHN0cnVjdCBxdGFnX3ByZWZpeCkgKwo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihfX2JlMTYpKSkpCj4gKyAgICAgICAgICAg ICAgICAgICAgIHJldHVybiAwOwo+ICsgICAgICAgICAgICAga2V5LT5ldGgudGNpID0gcXAtPnRj aSB8IGh0b25zKFZMQU5fVEFHX1BSRVNFTlQpOwo+ICsKPiArICAgICAgICAgICAgIF9fc2tiX3B1 bGwoc2tiLCBzaXplb2Yoc3RydWN0IHF0YWdfcHJlZml4KSk7Cj4gKyAgICAgfQo+Cj4gICAgICAg cmV0dXJuIDA7Cj4gICB9Cj4gQEAgLTQ3NCw5ICs1MzMsMTAgQEAgc3RhdGljIGludCBrZXlfZXh0 cmFjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc3dfZmxvd19rZXkgKmtleSkKPiAgICAg ICAgKi8KPgo+ICAgICAgIGtleS0+ZXRoLnRjaSA9IDA7Cj4gLSAgICAgaWYgKHNrYl92bGFuX3Rh Z19wcmVzZW50KHNrYikpCj4gLSAgICAgICAgICAgICBrZXktPmV0aC50Y2kgPSBodG9ucyhza2It PnZsYW5fdGNpKTsKPiAtICAgICBlbHNlIGlmIChldGgtPmhfcHJvdG8gPT0gaHRvbnMoRVRIX1Bf ODAyMVEpKQo+ICsgICAgIGtleS0+ZXRoLmN2bGFuLmN0Y2kgPSAwOwo+ICsgICAgIGtleS0+ZXRo LmN2bGFuLmNfdHBpZCA9IDA7Cj4gKyAgICAgaWYgKChza2Jfdmxhbl90YWdfcHJlc2VudChza2Ip KSB8fAo+ICsgICAgICAgICBldGhfdHlwZV92bGFuKGV0aC0+aF9wcm90bykpCj4gICAgICAgICAg ICAgICBpZiAodW5saWtlbHkocGFyc2Vfdmxhbihza2IsIGtleSkpKQo+ICAgICAgICAgICAgICAg ICAgICAgICByZXR1cm4gLUVOT01FTTsKPgo+IGRpZmYgLS1naXQgYS9uZXQvb3BlbnZzd2l0Y2gv Zmxvdy5oIGIvbmV0L29wZW52c3dpdGNoL2Zsb3cuaCBpbmRleCBiNjJjZGIzLi42OWM0OGM2IDEw MDY0NAo+IC0tLSBhL25ldC9vcGVudnN3aXRjaC9mbG93LmgKPiArKysgYi9uZXQvb3BlbnZzd2l0 Y2gvZmxvdy5oCj4gQEAgLTY5LDYgKzY5LDExIEBAIHN0cnVjdCBzd19mbG93X2tleSB7Cj4gICAg ICAgICAgICAgICB1OCAgICAgc3JjW0VUSF9BTEVOXTsgICAvKiBFdGhlcm5ldCBzb3VyY2UgYWRk cmVzcy4gKi8KPiAgICAgICAgICAgICAgIHU4ICAgICBkc3RbRVRIX0FMRU5dOyAgIC8qIEV0aGVy bmV0IGRlc3RpbmF0aW9uIGFkZHJlc3MuICovCj4gICAgICAgICAgICAgICBfX2JlMTYgdGNpOyAg ICAgICAgICAgICAvKiAwIGlmIG5vIFZMQU4sIFZMQU5fVEFHX1BSRVNFTlQgc2V0IG90aGVyd2lz ZS4gKi8KPiArICAgICAgICAgICAgIHN0cnVjdCB7Cj4gKyAgICAgICAgICAgICAgICAgICAgIF9f YmUxNiBjX3RwaWQ7ICAvKiBWbGFuIERMX3R5cGUgODAyLjFxIG9yIDgwMi4xYWQgKi8KPiArICAg ICAgICAgICAgICAgICAgICAgX19iZTE2IGN0Y2k7ICAgIC8qIDAgaWYgbm8gQ1ZMQU4sIFZMQU5f VEFHX1BSRVNFTlQgKi8KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q IHNldCBvdGhlcndpc2UuICovCj4gKyAgICAgICAgICAgICB9IGN2bGFuOwo+ICAgICAgICAgICAg ICAgX19iZTE2IHR5cGU7ICAgICAgICAgICAgLyogRXRoZXJuZXQgZnJhbWUgdHlwZS4gKi8KPiAg ICAgICB9IGV0aDsKPiAgICAgICB1bmlvbiB7Cj4gZGlmZiAtLWdpdCBhL25ldC9vcGVudnN3aXRj aC9mbG93X25ldGxpbmsuYyBiL25ldC9vcGVudnN3aXRjaC9mbG93X25ldGxpbmsuYyBpbmRleCBh NmViNzdhLi45NDZmOTlkIDEwMDY0NAo+IC0tLSBhL25ldC9vcGVudnN3aXRjaC9mbG93X25ldGxp bmsuYwo+ICsrKyBiL25ldC9vcGVudnN3aXRjaC9mbG93X25ldGxpbmsuYwo+IEBAIC03NzEsNiAr NzcxLDMxIEBAIHN0YXRpYyBpbnQgbWV0YWRhdGFfZnJvbV9ubGF0dHJzKHN0cnVjdCBzd19mbG93 X21hdGNoICptYXRjaCwgIHU2NCAqYXR0cnMsCj4gICAgICAgcmV0dXJuIDA7Cj4gICB9Cj4KPiAr c3RhdGljIGludCBjdXN0X3ZsYW5fZnJvbV9ubGF0dHJzKHN0cnVjdCBzd19mbG93X21hdGNoICpt YXRjaCwgdTY0IGF0dHJzLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg c3RydWN0IG5sYXR0ciAqKmEsIGJvb2wgaXNfbWFzaywKPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJvb2wgbG9nKQo+ICt7Cj4gKyAgICAgLyogVGhpcyBzaG91bGQgYmUgbmVzdGVk IGlubmVyIG9yICJjdXN0b21lciIgdGNpIiAqLwo+ICsgICAgIGlmIChhdHRycyAmICgxIDw8IE9W U19LRVlfQVRUUl9WTEFOKSkgewo+ICsgICAgICAgICAgICAgX19iZTE2IGN0Y2k7Cj4gKyAgICAg ICAgICAgICBfX2JlMTYgY190cGlkOwo+ICsKPiArICAgICAgICAgICAgIGN0Y2kgPSBubGFfZ2V0 X2JlMTYoYVtPVlNfS0VZX0FUVFJfVkxBTl0pOwo+ICsgICAgICAgICAgICAgaWYgKCEoY3RjaSAm IGh0b25zKFZMQU5fVEFHX1BSRVNFTlQpKSkgewo+ICsgICAgICAgICAgICAgICAgICAgICBpZiAo aXNfbWFzaykKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPVlNfTkxFUlIobG9nLCAi VkxBTiBDVENJIG1hc2sgZG9lcyBub3QgaGF2ZSBleGFjdCBtYXRjaCBmb3IgVkxBTl9UQUdfUFJF U0VOVCBiaXQuIik7Cj4gKyAgICAgICAgICAgICAgICAgICAgIGVsc2UKPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBPVlNfTkxFUlIobG9nLCAiVkxBTiBDVENJIGRvZXMgbm90IGhhdmUg VkxBTl9UQUdfUFJFU0VOVCBiaXQKPiArc2V0LiIpOwo+ICsKPiArICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIC1FSU5WQUw7Cj4gKyAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgICBjX3Rw aWQgPSBubGFfZ2V0X2JlMTYoYVtPVlNfS0VZX0FUVFJfRVRIRVJUWVBFXSk7Cj4gKyAgICAgICAg ICAgICBTV19GTE9XX0tFWV9QVVQobWF0Y2gsIGV0aC5jdmxhbi5jX3RwaWQsIGN0Y2ksIGlzX21h c2spOwo+ICsgICAgICAgICAgICAgU1dfRkxPV19LRVlfUFVUKG1hdGNoLCBldGguY3ZsYW4uY3Rj aSwgY3RjaSwgaXNfbWFzayk7Cj4gKyAgICAgfQo+ICsgICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ ICAgc3RhdGljIGludCBvdnNfa2V5X2Zyb21fbmxhdHRycyhzdHJ1Y3Qgc3dfZmxvd19tYXRjaCAq bWF0Y2gsIHU2NCBhdHRycywKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz dHJ1Y3QgbmxhdHRyICoqYSwgYm9vbCBpc19tYXNrLAo+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGJvb2wgbG9nKQo+IEBAIC0xMDI0LDYgKzEwNDksMTA0IEBAIHN0YXRpYyB2b2lkIG1h c2tfc2V0X25sYXR0cihzdHJ1Y3QgbmxhdHRyICphdHRyLCB1OCB2YWwpCj4gICAgICAgbmxhdHRy X3NldChhdHRyLCB2YWwsIG92c19rZXlfbGVucyk7Cj4gICB9Cj4KPiArc3RhdGljIGludCBwYXJz ZV92bGFuX2Zyb21fbmxhdHRycyhjb25zdCBzdHJ1Y3QgbmxhdHRyICpubGEsCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHN3X2Zsb3dfbWF0Y2ggKm1hdGNoLAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU2NCAqa2V5X2F0dHJzLCBib29sICppZV92 YWxpZCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qgbmxh dHRyICoqYSwgYm9vbCBpc19tYXNrLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGJvb2wgbG9nKQo+ICt7Cj4gKyAgICAgaW50IGVycjsKPiArICAgICBfX2JlMTYgdGNpOwo+ICsg ICAgIGNvbnN0IHN0cnVjdCBubGF0dHIgKmVuY2FwOwo+ICsKPiArICAgICAqaWVfdmFsaWQgPSBm YWxzZTsKPiArICAgICBpZiAoIWlzX21hc2spIHsKPiArICAgICAgICAgICAgIHU2NCB2X2F0dHJz ID0gMDsKPiArCj4gKyAgICAgICAgICAgICB0Y2kgPSBubGFfZ2V0X2JlMTYoYVtPVlNfS0VZX0FU VFJfVkxBTl0pOwo+ICsKPiArICAgICAgICAgICAgIGlmICh0Y2kgJiBodG9ucyhWTEFOX1RBR19Q UkVTRU5UKSkgewo+ICsgICAgICAgICAgICAgICAgICAgICBlcnIgPSBwYXJzZV9mbG93X25sYXR0 cnMobmxhLCBhLCAmdl9hdHRycywgbG9nKTsKPiArICAgICAgICAgICAgICAgICAgICAgaWYgKGVy cikKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyOwo+ICsgICAgICAg ICAgICAgICAgICAgICBpZiAoIXZfYXR0cnMpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIC1FSU5WQUw7Cj4gKyAgICAgICAgICAgICAgICAgICAgIC8qIEFub3RoZXIgZW5j YXAgYXR0cmlidXRlIGhlcmUgaW5kaWNhdGVzCj4gKyAgICAgICAgICAgICAgICAgICAgICAqIGEg ZG91YmxlIHRhZ2dlZCB2bGFuLgo+ICsgICAgICAgICAgICAgICAgICAgICAgKi8KPiArICAgICAg ICAgICAgICAgICAgICAgaWYgKHZfYXR0cnMgJiAoMVVMTCA8PCBPVlNfS0VZX0FUVFJfRU5DQVAp KSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEodl9hdHRycyAmICgxVUxM IDw8IE9WU19LRVlfQVRUUl9WTEFOKSkpIHsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE9WU19OTEVSUihsb2csICJJbm5lciBlbmNhcCBhdHRyIGlzIHNldCBmb3Igbm9u IFZMQU4gZnJhbWUiKTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl dHVybiAtRUlOVkFMOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB2X2F0dHJzICY9IH4oMSA8PCBPVlNfS0VZX0FUVFJfRVRI RVJUWVBFKTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNhcCA9IGFbT1ZTX0tF WV9BVFRSX0VOQ0FQXTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2X2F0dHJzICY9 IH4oMSA8PCBPVlNfS0VZX0FUVFJfRU5DQVApOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICppZV92YWxpZCA9IHRydWU7Cj4gKwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGVyciA9IGN1c3Rfdmxhbl9mcm9tX25sYXR0cnMobWF0Y2gsIHZfYXR0cnMsCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZW5jYXAs IGlzX21hc2ssCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBsb2cpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChl cnIpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyOwo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEluc3VyZSB0aGF0IHRjaSBrZXkgYXR0 cmlidXRlIGlzbid0Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogb3ZlcndyaXR0 ZW4gYnkgZW5jYXBzdWxhdGVkIGN1c3RvbWVyIHRjaS4KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKi8KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2X2F0dHJzICY9IH4o MSA8PCBPVlNfS0VZX0FUVFJfVkxBTik7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KmtleV9hdHRycyB8PSB2X2F0dHJzOwo+ICsgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICprZXlfYXR0cnMgJj0gfigxIDw8IE9WU19L RVlfQVRUUl9WTEFOKTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSBwYXJz ZV9mbG93X25sYXR0cnMobmxhLCBhLCBrZXlfYXR0cnMsCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZyk7Cj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaWYgKGVycikKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJldHVybiBlcnI7Cj4gKyAgICAgICAgICAgICAgICAgICAgIH0KPiArICAgICAgICAg ICAgIH0gZWxzZSBpZiAoIXRjaSkgewo+ICsgICAgICAgICAgICAgICAgICAgICAvKiBDb3JuZXIg Y2FzZSBmb3IgdHJ1bmNhdGVkIDgwMi4xUSBoZWFkZXIuICovCj4gKyAgICAgICAgICAgICAgICAg ICAgIGlmIChubGFfbGVuKG5sYSkpIHsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP VlNfTkxFUlIobG9nLCAiVHJ1bmNhdGVkIDgwMi4xUSBoZWFkZXIgaGFzIG5vbi16ZXJvIGVuY2Fw IGF0dHJpYnV0ZS4iKTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVJ TlZBTDsKPiArICAgICAgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgfSBlbHNlIHsK PiArICAgICAgICAgICAgICAgICAgICAgT1ZTX05MRVJSKGxvZywgIkVuY2FwIGF0dHIgaXMgc2V0 IGZvciBub24tVkxBTiBmcmFtZSIpOwo+ICsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIC1F SU5WQUw7Cj4gKyAgICAgICAgICAgICB9Cj4gKwo+ICsgICAgIH0gZWxzZSB7Cj4gKyAgICAgICAg ICAgICB1NjQgbWFza192X2F0dHJzID0gMDsKPiArCj4gKyAgICAgICAgICAgICB0Y2kgPSAwOwo+ ICsgICAgICAgICAgICAgaWYgKGFbT1ZTX0tFWV9BVFRSX1ZMQU5dKQo+ICsgICAgICAgICAgICAg ICAgICAgICB0Y2kgPSBubGFfZ2V0X2JlMTYoYVtPVlNfS0VZX0FUVFJfVkxBTl0pOwo+ICsKPiAr ICAgICAgICAgICAgIGlmICghKHRjaSAmIGh0b25zKFZMQU5fVEFHX1BSRVNFTlQpKSkgewo+ICsg ICAgICAgICAgICAgICAgICAgICBPVlNfTkxFUlIobG9nLCAiVkxBTiB0YWcgcHJlc2VudCBiaXQg bXVzdCBoYXZlIGFuIGV4YWN0IG1hdGNoICh0Y2lfbWFzaz0leCkuIiwKPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG50b2hzKHRjaSkpOwo+ICsgICAgICAgICAgICAgICAgICAgICBl cnIgPSAtRUlOVkFMOwo+ICsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyOwo+ICsgICAg ICAgICAgICAgfQo+ICsgICAgICAgICAgICAgZXJyID0gcGFyc2VfZmxvd19tYXNrX25sYXR0cnMo bmxhLCBhLCAmbWFza192X2F0dHJzLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbG9nKTsKPiArICAgICAgICAgICAgIGlmIChlcnIpCj4gKyAgICAgICAgICAg ICAgICAgICAgIHJldHVybiBlcnI7Cj4gKwo+ICsgICAgICAgICAgICAgaWYgKG1hc2tfdl9hdHRy cyAmICgxVUxMIDw8IE9WU19LRVlfQVRUUl9WTEFOKSkgewo+ICsgICAgICAgICAgICAgICAgICAg ICBlcnIgPSBjdXN0X3ZsYW5fZnJvbV9ubGF0dHJzKG1hdGNoLCBtYXNrX3ZfYXR0cnMsCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSwgaXNfbWFz aywgbG9nKTsKPiArICAgICAgICAgICAgICAgICAgICAgaWYgKGVycikKPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZXR1cm4gZXJyOwo+ICsKPiArICAgICAgICAgICAgICAgICAgICAg bWFza192X2F0dHJzICY9IH4oMVVMTCA8PCBPVlNfS0VZX0FUVFJfVkxBTik7Cj4gKyAgICAgICAg ICAgICAgICAgICAgICprZXlfYXR0cnMgfD0gbWFza192X2F0dHJzOwo+ICsgICAgICAgICAgICB9 IGVsc2Ugewo+ICsgICAgICAgICAgICAgICAgICAgICAqa2V5X2F0dHJzICY9IH4oMSA8PCBPVlNf S0VZX0FUVFJfVkxBTik7Cj4gKyAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIpCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycjsKPiArICAgICAgICAgICAgIH0KPiAr ICAgICB9Cj4gKyAgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gICAvKioKPiAgICAqIG92c19ubGFf Z2V0X21hdGNoIC0gcGFyc2VzIE5ldGxpbmsgYXR0cmlidXRlcyBpbnRvIGEgZmxvdyBrZXkgYW5k Cj4gICAgKiBtYXNrLiBJbiBjYXNlIHRoZSAnbWFzaycgaXMgTlVMTCwgdGhlIGZsb3cgaXMgdHJl YXRlZCBhcyBleGFjdCBtYXRjaCBAQCAtMTA1MCw2ICsxMTczLDcgQEAgaW50IG92c19ubGFfZ2V0 X21hdGNoKHN0cnVjdCBzd19mbG93X21hdGNoICptYXRjaCwKPiAgICAgICB1NjQga2V5X2F0dHJz ID0gMDsKPiAgICAgICB1NjQgbWFza19hdHRycyA9IDA7Cj4gICAgICAgYm9vbCBlbmNhcF92YWxp ZCA9IGZhbHNlOwo+ICsgICAgIGJvb2wgaV9lbmNhcF92YWxpZCA9IGZhbHNlOwo+ICAgICAgIGlu dCBlcnI7Cj4KPiAgICAgICBlcnIgPSBwYXJzZV9mbG93X25sYXR0cnMobmxhX2tleSwgYSwgJmtl eV9hdHRycywgbG9nKTsgQEAgLTEwNTgsMzUgKzExODIsMjQgQEAgaW50IG92c19ubGFfZ2V0X21h dGNoKHN0cnVjdCBzd19mbG93X21hdGNoICptYXRjaCwKPgo+ICAgICAgIGlmICgoa2V5X2F0dHJz ICYgKDEgPDwgT1ZTX0tFWV9BVFRSX0VUSEVSTkVUKSkgJiYKPiAgICAgICAgICAgKGtleV9hdHRy cyAmICgxIDw8IE9WU19LRVlfQVRUUl9FVEhFUlRZUEUpKSAmJgo+IC0gICAgICAgICAobmxhX2dl dF9iZTE2KGFbT1ZTX0tFWV9BVFRSX0VUSEVSVFlQRV0pID09IGh0b25zKEVUSF9QXzgwMjFRKSkp IHsKPiAtICAgICAgICAgICAgIF9fYmUxNiB0Y2k7Cj4gKyAgICAgICAgIGV0aF90eXBlX3ZsYW4o bmxhX2dldF9iZTE2KGFbT1ZTX0tFWV9BVFRSX0VUSEVSVFlQRV0pKSkgewo+Cj4gLSAgICAgICAg ICAgICBpZiAoISgoa2V5X2F0dHJzICYgKDEgPDwgT1ZTX0tFWV9BVFRSX1ZMQU4pKSAmJgo+IC0g ICAgICAgICAgICAgICAgICAgKGtleV9hdHRycyAmICgxIDw8IE9WU19LRVlfQVRUUl9FTkNBUCkp KSkgewo+ICsgICAgICAgICAgICAgaWYgKCEoKGtleV9hdHRycyAmICgxVUxMIDw8IE9WU19LRVlf QVRUUl9WTEFOKSkgJiYKPiArICAgICAgICAgICAgICAgICAgIChrZXlfYXR0cnMgJiAoMVVMTCA8 PCBPVlNfS0VZX0FUVFJfRU5DQVApKSkpIHsKPiAgICAgICAgICAgICAgICAgICAgICAgT1ZTX05M RVJSKGxvZywgIkludmFsaWQgVmxhbiBmcmFtZS4iKTsKPiAgICAgICAgICAgICAgICAgICAgICAg cmV0dXJuIC1FSU5WQUw7Cj4gICAgICAgICAgICAgICB9Cj4KPiAgICAgICAgICAgICAgIGtleV9h dHRycyAmPSB+KDEgPDwgT1ZTX0tFWV9BVFRSX0VUSEVSVFlQRSk7Cj4gLSAgICAgICAgICAgICB0 Y2kgPSBubGFfZ2V0X2JlMTYoYVtPVlNfS0VZX0FUVFJfVkxBTl0pOwo+ICAgICAgICAgICAgICAg ZW5jYXAgPSBhW09WU19LRVlfQVRUUl9FTkNBUF07Cj4gICAgICAgICAgICAgICBrZXlfYXR0cnMg Jj0gfigxIDw8IE9WU19LRVlfQVRUUl9FTkNBUCk7Cj4gICAgICAgICAgICAgICBlbmNhcF92YWxp ZCA9IHRydWU7Cj4KPiAtICAgICAgICAgICAgIGlmICh0Y2kgJiBodG9ucyhWTEFOX1RBR19QUkVT RU5UKSkgewo+IC0gICAgICAgICAgICAgICAgICAgICBlcnIgPSBwYXJzZV9mbG93X25sYXR0cnMo ZW5jYXAsIGEsICZrZXlfYXR0cnMsIGxvZyk7Cj4gLSAgICAgICAgICAgICAgICAgICAgIGlmIChl cnIpCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycjsKPiAtICAgICAg ICAgICAgIH0gZWxzZSBpZiAoIXRjaSkgewo+IC0gICAgICAgICAgICAgICAgICAgICAvKiBDb3Ju ZXIgY2FzZSBmb3IgdHJ1bmNhdGVkIDgwMi4xUSBoZWFkZXIuICovCj4gLSAgICAgICAgICAgICAg ICAgICAgIGlmIChubGFfbGVuKGVuY2FwKSkgewo+IC0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE9WU19OTEVSUihsb2csICJUcnVuY2F0ZWQgODAyLjFRIGhlYWRlciBoYXMgbm9uLXplcm8g ZW5jYXAgYXR0cmlidXRlLiIpOwo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy biAtRUlOVkFMOwo+IC0gICAgICAgICAgICAgICAgICAgICB9Cj4gLSAgICAgICAgICAgICB9IGVs c2Ugewo+IC0gICAgICAgICAgICAgICAgICAgICBPVlNfTkxFUlIobG9nLCAiRW5jYXAgYXR0ciBp cyBzZXQgZm9yIG5vbi1WTEFOIGZyYW1lIik7Cj4gLSAgICAgICAgICAgICAgICAgICAgIHJldHVy biAgLUVJTlZBTDsKPiAtICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgIGVyciA9IHBhcnNl X3ZsYW5fZnJvbV9ubGF0dHJzKGVuY2FwLCBtYXRjaCwgJmtleV9hdHRycywKPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpX2VuY2FwX3ZhbGlkLCBhLCBmYWxz ZSwgbG9nKTsKPiArICAgICAgICAgICAgIGlmIChlcnIpCj4gKyAgICAgICAgICAgICAgICAgICAg IHJldHVybiBlcnI7Cj4gKwo+ICAgICAgIH0KPgo+ICAgICAgIGVyciA9IG92c19rZXlfZnJvbV9u bGF0dHJzKG1hdGNoLCBrZXlfYXR0cnMsIGEsIGZhbHNlLCBsb2cpOyBAQCAtMTEzMiw3ICsxMjQ1 LDYgQEAgaW50IG92c19ubGFfZ2V0X21hdGNoKHN0cnVjdCBzd19mbG93X21hdGNoICptYXRjaCwK Pgo+ICAgICAgICAgICAgICAgaWYgKG1hc2tfYXR0cnMgJiAxIDw8IE9WU19LRVlfQVRUUl9FTkNB UCkgewo+ICAgICAgICAgICAgICAgICAgICAgICBfX2JlMTYgZXRoX3R5cGUgPSAwOwo+IC0gICAg ICAgICAgICAgICAgICAgICBfX2JlMTYgdGNpID0gMDsKPgo+ICAgICAgICAgICAgICAgICAgICAg ICBpZiAoIWVuY2FwX3ZhbGlkKSB7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1ZT X05MRVJSKGxvZywgIkVuY2FwIG1hc2sgYXR0cmlidXRlIGlzIHNldCBmb3Igbm9uLVZMQU4gZnJh bWUuIik7IEBAIC0xMTU4LDE1ICsxMjcwLDEzIEBAIGludCBvdnNfbmxhX2dldF9tYXRjaChzdHJ1 Y3Qgc3dfZmxvd19tYXRjaCAqbWF0Y2gsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Z290byBmcmVlX25ld21hc2s7Cj4gICAgICAgICAgICAgICAgICAgICAgIH0KPgo+IC0gICAgICAg ICAgICAgICAgICAgICBpZiAoYVtPVlNfS0VZX0FUVFJfVkxBTl0pCj4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdGNpID0gbmxhX2dldF9iZTE2KGFbT1ZTX0tFWV9BVFRSX1ZMQU5dKTsK PiAtCj4gLSAgICAgICAgICAgICAgICAgICAgIGlmICghKHRjaSAmIGh0b25zKFZMQU5fVEFHX1BS RVNFTlQpKSkgewo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9WU19OTEVSUihsb2cs ICJWTEFOIHRhZyBwcmVzZW50IGJpdCBtdXN0IGhhdmUgYW4gZXhhY3QgbWF0Y2ggKHRjaV9tYXNr PSV4KS4iLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudG9ocyh0 Y2kpKTsKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSAtRUlOVkFMOwo+ICsg ICAgICAgICAgICAgICAgICAgICBlcnIgPSBwYXJzZV92bGFuX2Zyb21fbmxhdHRycyhlbmNhcCwg bWF0Y2gsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICZtYXNrX2F0dHJzLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmaV9lbmNhcF92YWxpZCwgYSwgdHJ1ZSwKPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nKTsKPiArICAgICAgICAgICAg ICAgICAgICAgaWYgKGVycikKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZy ZWVfbmV3bWFzazsKPiAtICAgICAgICAgICAgICAgICAgICAgfQo+ICsKPiAgICAgICAgICAgICAg IH0KPgo+ICAgICAgICAgICAgICAgZXJyID0gb3ZzX2tleV9mcm9tX25sYXR0cnMobWF0Y2gsIG1h c2tfYXR0cnMsIGEsIHRydWUsIGxvZyk7IEBAIC0xMjc3LDYgKzEzODcsNyBAQCBzdGF0aWMgaW50 IF9fb3ZzX25sYV9wdXRfa2V5KGNvbnN0IHN0cnVjdCBzd19mbG93X2tleSAqc3drZXksICB7Cj4g ICAgICAgc3RydWN0IG92c19rZXlfZXRoZXJuZXQgKmV0aF9rZXk7Cj4gICAgICAgc3RydWN0IG5s YXR0ciAqbmxhLCAqZW5jYXA7Cj4gKyAgICAgc3RydWN0IG5sYXR0ciAqaW5fZW5jYXAgPSBOVUxM Owo+Cj4gICAgICAgaWYgKG5sYV9wdXRfdTMyKHNrYiwgT1ZTX0tFWV9BVFRSX1JFQ0lSQ19JRCwg b3V0cHV0LT5yZWNpcmNfaWQpKQo+ICAgICAgICAgICAgICAgZ290byBubGFfcHV0X2ZhaWx1cmU7 Cj4gQEAgLTEzMzEsOCArMTQ0MiwzMCBAQCBzdGF0aWMgaW50IF9fb3ZzX25sYV9wdXRfa2V5KGNv bnN0IHN0cnVjdCBzd19mbG93X2tleSAqc3drZXksCj4gICAgICAgICAgICAgICBlbmNhcCA9IG5s YV9uZXN0X3N0YXJ0KHNrYiwgT1ZTX0tFWV9BVFRSX0VOQ0FQKTsKPiAgICAgICAgICAgICAgIGlm ICghc3drZXktPmV0aC50Y2kpCj4gICAgICAgICAgICAgICAgICAgICAgIGdvdG8gdW5lbmNhcDsK PiAtICAgICB9IGVsc2UKPiArICAgICB9IGVsc2UgaWYgKHN3a2V5LT5ldGguY3ZsYW4uY3RjaSB8 fCBzd2tleS0+ZXRoLnR5cGUgPT0KPiArICAgICAgICAgICAgICAgIGh0b25zKEVUSF9QXzgwMjFB RCkpIHsKPiArICAgICAgICAgICAgIF9fYmUxNiBldGhfdHlwZTsKPiArCj4gKyAgICAgICAgICAg ICBldGhfdHlwZSA9ICFpc19tYXNrID8gaHRvbnMoRVRIX1BfODAyMUFEKSA6IGh0b25zKDB4ZmZm Zik7Cj4gKyAgICAgICAgICAgICBpZiAobmxhX3B1dF9iZTE2KHNrYiwgT1ZTX0tFWV9BVFRSX0VU SEVSVFlQRSwgZXRoX3R5cGUpIHx8Cj4gKyAgICAgICAgICAgICAgICAgbmxhX3B1dF9iZTE2KHNr YiwgT1ZTX0tFWV9BVFRSX1ZMQU4sIG91dHB1dC0+ZXRoLnRjaSkpCj4gKyAgICAgICAgICAgICAg ICAgICAgIGdvdG8gbmxhX3B1dF9mYWlsdXJlOwo+ICsgICAgICAgICAgICAgZW5jYXAgPSBubGFf bmVzdF9zdGFydChza2IsIE9WU19LRVlfQVRUUl9FTkNBUCk7Cj4gKyAgICAgICAgICAgICBpZiAo IXN3a2V5LT5ldGgudGNpKQo+ICsgICAgICAgICAgICAgICAgICAgICBnb3RvIHVuZW5jYXA7Cj4g KyAgICAgICAgICAgICAvKiBDdXN0b21lciB0Y2kgaXMgbmVzdGVkIGJ1dCB1c2VzIHNhbWUga2V5 IGF0dHJpYnV0ZS4KPiArICAgICAgICAgICAgICAqLwo+ICsgICAgICAgICAgICAgZXRoX3R5cGUg PSAhaXNfbWFzayA/IGh0b25zKEVUSF9QXzgwMjFRKSA6IGh0b25zKDB4ZmZmZik7Cj4gKyAgICAg ICAgICAgICBpZiAobmxhX3B1dF9iZTE2KHNrYiwgT1ZTX0tFWV9BVFRSX0VUSEVSVFlQRSwgZXRo X3R5cGUpIHx8Cj4gKyAgICAgICAgICAgICAgICAgbmxhX3B1dF9iZTE2KHNrYiwgT1ZTX0tFWV9B VFRSX1ZMQU4sCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dC0+ZXRoLmN2 bGFuLmN0Y2kpKQo+ICsgICAgICAgICAgICAgICAgICAgICBnb3RvIG5sYV9wdXRfZmFpbHVyZTsK PiArICAgICAgICAgICAgIGluX2VuY2FwID0gbmxhX25lc3Rfc3RhcnQoc2tiLCBPVlNfS0VZX0FU VFJfRU5DQVApOwo+ICsgICAgICAgICAgICAgaWYgKCFzd2tleS0+ZXRoLmN2bGFuLmN0Y2kpCj4g KyAgICAgICAgICAgICAgICAgICAgIGdvdG8gdW5lbmNhcDsKPiArICAgICB9IGVsc2Ugewo+ICAg ICAgICAgICAgICAgZW5jYXAgPSBOVUxMOwo+ICsgICAgIH0KPgo+ICAgICAgIGlmIChzd2tleS0+ ZXRoLnR5cGUgPT0gaHRvbnMoRVRIX1BfODAyXzIpKSB7Cj4gICAgICAgICAgICAgICAvKgo+IEBA IC0xNDc5LDYgKzE2MTIsOCBAQCBzdGF0aWMgaW50IF9fb3ZzX25sYV9wdXRfa2V5KGNvbnN0IHN0 cnVjdCBzd19mbG93X2tleSAqc3drZXksCj4gICB1bmVuY2FwOgo+ICAgICAgIGlmIChlbmNhcCkK PiAgICAgICAgICAgICAgIG5sYV9uZXN0X2VuZChza2IsIGVuY2FwKTsKPiArICAgICBpZiAoaW5f ZW5jYXApCj4gKyAgICAgICAgICAgICBubGFfbmVzdF9lbmQoc2tiLCBpbl9lbmNhcCk7Cj4KPiAg ICAgICByZXR1cm4gMDsKPgo+IEBAIC0yMTI3LDcgKzIyNjIsOCBAQCBzdGF0aWMgaW50IF9fb3Zz X25sYV9jb3B5X2FjdGlvbnMoY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0ciwKPgo+ICAgICAgICAg ICAgICAgY2FzZSBPVlNfQUNUSU9OX0FUVFJfUFVTSF9WTEFOOgo+ICAgICAgICAgICAgICAgICAg ICAgICB2bGFuID0gbmxhX2RhdGEoYSk7Cj4gLSAgICAgICAgICAgICAgICAgICAgIGlmICh2bGFu LT52bGFuX3RwaWQgIT0gaHRvbnMoRVRIX1BfODAyMVEpKQo+ICsgICAgICAgICAgICAgICAgICAg ICBpZiAoKHZsYW4tPnZsYW5fdHBpZCAhPSBodG9ucyhFVEhfUF84MDIxUSkpICYmCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAodmxhbi0+dmxhbl90cGlkICE9IGh0b25zKEVUSF9QXzgwMjFB RCkpKQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ICAg ICAgICAgICAgICAgICAgICAgICBpZiAoISh2bGFuLT52bGFuX3RjaSAmIGh0b25zKFZMQU5fVEFH X1BSRVNFTlQpKSkKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZB TDsKPiAtLQo+IDIuNC4zCj4KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwo+IGRldiBtYWlsaW5nIGxpc3QKPiBkZXZAb3BlbnZzd2l0Y2gub3JnCj4gaHR0 cDovL29wZW52c3dpdGNoLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Rldgo+CgotLQpUaG9tYXMgRiBI ZXJiZXJ0IFJlZCBIYXQKVGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZCBpbiB0aGlzIGVsZWN0cm9u aWMgbWVzc2FnZSBhbmQgYW55IGF0dGFjaG1lbnRzIHRvIHRoaXMgbWVzc2FnZSBhcmUgaW50ZW5k ZWQgZm9yIHRoZSBleGNsdXNpdmUgdXNlIG9mIHRoZSBhZGRyZXNzZWUocykgYW5kIG1heSBjb250 YWluIHByb3ByaWV0YXJ5LCBjb25maWRlbnRpYWwgb3IgcHJpdmlsZWdlZCBpbmZvcm1hdGlvbi4g SWYgeW91IGFyZSBub3QgdGhlIGludGVuZGVkIHJlY2lwaWVudCwgeW91IHNob3VsZCBub3QgZGlz c2VtaW5hdGUsIGRpc3RyaWJ1dGUgb3IgY29weSB0aGlzIGUtbWFpbC4gUGxlYXNlIG5vdGlmeSB0 aGUgc2VuZGVyIGltbWVkaWF0ZWx5IGFuZCBkZXN0cm95IGFsbCBjb3BpZXMgb2YgdGhpcyBtZXNz YWdlIGFuZCBhbnkgYXR0YWNobWVudHMuIFdBUk5JTkc6IENvbXB1dGVyIHZpcnVzZXMgY2FuIGJl IHRyYW5zbWl0dGVkIHZpYSBlbWFpbC4gVGhlIHJlY2lwaWVudCBzaG91bGQgY2hlY2sgdGhpcyBl bWFpbCBhbmQgYW55IGF0dGFjaG1lbnRzIGZvciB0aGUgcHJlc2VuY2Ugb2YgdmlydXNlcy4gVGhl IGNvbXBhbnkgYWNjZXB0cyBubyBsaWFiaWxpdHkgZm9yIGFueSBkYW1hZ2UgY2F1c2VkIGJ5IGFu eSB2aXJ1cyB0cmFuc21pdHRlZCBieSB0aGlzIGVtYWlsLiB3d3cud2lwcm8uY29tCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRldiBtYWlsaW5nIGxpc3QK ZGV2QG9wZW52c3dpdGNoLm9yZwpodHRwOi8vb3BlbnZzd2l0Y2gub3JnL21haWxtYW4vbGlzdGlu Zm8vZGV2Cg==