From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.linutronix.de (193.142.43.55:993) by crypto-ml.lab.linutronix.de with IMAP4-SSL for ; 05 Nov 2019 12:28:34 -0000 Received: from mx2.suse.de ([195.135.220.15] helo=mx1.suse.de) by Galois.linutronix.de with esmtps (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.80) (envelope-from ) id 1iRxwm-0003g6-FF for speck@linutronix.de; Tue, 05 Nov 2019 13:28:33 +0100 Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id F1450AC5F for ; Tue, 5 Nov 2019 12:28:24 +0000 (UTC) Date: Tue, 5 Nov 2019 13:28:24 +0100 From: Michal Hocko Subject: [MODERATED] Re: ***UNCHECKED*** Re: [PATCH v5 6/8] NX 6 Message-ID: <20191105122824.GM22672@dhcp22.suse.cz> References: <1561989149-17323-1-git-send-email-pbonzini@redhat.com> <1561989149-17323-7-git-send-email-pbonzini@redhat.com> <973c85efc96c05cba9ddfc2f5bf53c9482801924.camel@decadent.org.uk> <4d3beab5-4021-832d-5c40-a0f657d55631@redhat.com> <20191104194351.GA18351@u1904> MIME-Version: 1.0 In-Reply-To: <20191104194351.GA18351@u1904> Content-Type: multipart/mixed; boundary="M9NhX3UHpAaciwkO" Content-Disposition: inline To: speck@linutronix.de List-ID: --M9NhX3UHpAaciwkO Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Mon 04-11-19 11:43:51, speck for mark gross wrote: [...] > If someone already has a 4.4 backport done we can help check it out. See the attached tarball with our 4.4 based distribution kernel backport. I expect this to not apply cleanly on top of the latest stable 4.4 kernel though. Please also note that this is on top of TAA patches. -- Michal Hocko SUSE Labs --M9NhX3UHpAaciwkO Content-Type: application/x-tar Content-Disposition: attachment; filename="4.4-backport.tar" Content-Transfer-Encoding: base64 Li9QYXhIZWFkZXJzLjM2MDIyLzAwMDEtS1ZNLXZteC1zdm0tYWx3YXlzLXJ1bi13aXRoLUVG RVIuTlhFLTEtd2hlbi1zaGFkb3ctcC5wYXRjaAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQA MDAwMDAwMAAwMDAwMDAwADAwMDAwMDAwMTMyADEzNTYwMjMwNzIxADAyMzQ1MAAgeAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhcgAwMAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzMCBtdGltZT0xNTcyOTQyMjg5LjkxODE3Mzg3 MwozMCBhdGltZT0xNTcyOTQyMjg5LjkxODE3Mzg3MwozMCBjdGltZT0xNTcyOTQyMjg5Ljkx ODE3Mzg3MwoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAw MDEtS1ZNLXZteC1zdm0tYWx3YXlzLXJ1bi13aXRoLUVGRVIuTlhFLTEtd2hlbi1zaGFkb3ct cC5wYXRjaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAw MjUzNzcAMDAwMDE0NAAwMDAwMDAwNDUwNwAxMzU2MDIzMDcyMQAwMjQzMDIAIDAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIAMDBtaG9ja28A AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzZXJzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAMDAwMDAwMAAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARnJvbTogUGFvbG8gQm9uemluaSA8cGJvbnppbmlA cmVkaGF0LmNvbT4KRGF0ZTogU3VuLCAyNyBPY3QgMjAxOSAxNjoyMzoyMyArMDEwMApTdWJq ZWN0OiBbUEFUQ0ggMS82XSBLVk06IHZteCwgc3ZtOiBhbHdheXMgcnVuIHdpdGggRUZFUi5O WEU9MSB3aGVuIHNoYWRvdwogcGFnaW5nIGlzIGFjdGl2ZQpSZWZlcmVuY2VzOiBic2MjMTEx NzY2NQpQYXRjaC1tYWlubGluZTogdjUuNC1yYzYKR2l0LWNvbW1pdDogOTE2N2FiNzk5MzYy MDYxMThjYzYwZTQ3ZGNiOTI2YzM0ODlmM2JkNQoKVk1YIGFscmVhZHkgZG9lcyBzbyBpZiB0 aGUgaG9zdCBoYXMgU01FUCwgaW4gb3JkZXIgdG8gc3VwcG9ydCB0aGUgY29tYmluYXRpb24g b2YKQ1IwLldQPTEgYW5kIENSNC5TTUVQPTEuICBIb3dldmVyLCBpdCBpcyBwZXJmZWN0bHkg c2FmZSB0byBhbHdheXMgZG8gc28sIGFuZCBpbgpmYWN0IFZNWCBhbHJlYWR5IGVuZHMgdXAg cnVubmluZyB3aXRoIEVGRVIuTlhFPTEgb24gb2xkIHByb2Nlc3NvcnMgdGhhdCBsYWNrIHRo ZQoibG9hZCBFRkVSIiBjb250cm9scywgYmVjYXVzZSBpdCBtYXkgaGVscCBhdm9pZGluZyBh IHNsb3cgTVNSIHdyaXRlLiAgUmVtb3ZpbmcKYWxsIHRoZSBjb25kaXRpb25hbHMgc2ltcGxp ZmllcyB0aGUgY29kZS4KClNWTSBkb2VzIG5vdCBoYXZlIHNpbWlsYXIgY29kZSwgYnV0IGl0 IHNob3VsZCBzaW5jZSByZWNlbnQgQU1EIHByb2Nlc3NvcnMgZG8Kc3VwcG9ydCBTTUVQLiAg U28gdGhpcyBwYXRjaCBhbHNvIG1ha2VzIHRoZSBjb2RlIGZvciB0aGUgdHdvIHZlbmRvcnMg bW9yZSBzaW1pbGFyCndoaWxlIGZpeGluZyBOUFQ9MCwgQ1IwLldQPTEgYW5kIENSNC5TTUVQ PTEgb24gQU1EIHByb2Nlc3NvcnMuCgpDYzogc3RhYmxlQHZnZXIua2VybmVsLm9yZwpDYzog Sm9lcmcgUm9lZGVsIDxqcm9lZGVsQHN1c2UuZGU+ClNpZ25lZC1vZmYtYnk6IFBhb2xvIEJv bnppbmkgPHBib256aW5pQHJlZGhhdC5jb20+ClNpZ25lZC1vZmYtYnk6IEpvZXJnIFJvZWRl bCA8anJvZWRlbEBzdXNlLmRlPgotLS0KIGFyY2gveDg2L2t2bS9zdm0uYyAgICAgfCAxMCAr KysrKysrKy0tCiBhcmNoL3g4Ni9rdm0vdm14L3ZteC5jIHwgMTQgKysrLS0tLS0tLS0tLS0K IDIgZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCgot LS0gYS9hcmNoL3g4Ni9rdm0vc3ZtLmMKKysrIGIvYXJjaC94ODYva3ZtL3N2bS5jCkBAIC01 ODUsOCArNTg1LDE0IEBAIHN0YXRpYyBpbnQgZ2V0X25wdF9sZXZlbCh2b2lkKQogc3RhdGlj IHZvaWQgc3ZtX3NldF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpCiB7 CiAJdmNwdS0+YXJjaC5lZmVyID0gZWZlcjsKLQlpZiAoIW5wdF9lbmFibGVkICYmICEoZWZl ciAmIEVGRVJfTE1BKSkKLQkJZWZlciAmPSB+RUZFUl9MTUU7CisKKwlpZiAoIW5wdF9lbmFi bGVkKSB7CisJCS8qIFNoYWRvdyBwYWdpbmcgYXNzdW1lcyBOWCB0byBiZSBhdmFpbGFibGUu ICAqLworCQllZmVyIHw9IEVGRVJfTlg7CisKKwkJaWYgKCEoZWZlciAmIEVGRVJfTE1BKSkK KwkJCWVmZXIgJj0gfkVGRVJfTE1FOworCX0KIAogCXRvX3N2bSh2Y3B1KS0+dm1jYi0+c2F2 ZS5lZmVyID0gZWZlciB8IEVGRVJfU1ZNRTsKIAltYXJrX2RpcnR5KHRvX3N2bSh2Y3B1KS0+ dm1jYiwgVk1DQl9DUik7Ci0tLSBhL2FyY2gveDg2L2t2bS92bXguYworKysgYi9hcmNoL3g4 Ni9rdm0vdm14LmMKQEAgLTIwNDUsMTcgKzIwNDUsOSBAQCBzdGF0aWMgYm9vbCB1cGRhdGVf dHJhbnNpdGlvbl9lZmVyKHN0cnVjCiAJdTY0IGd1ZXN0X2VmZXIgPSB2bXgtPnZjcHUuYXJj aC5lZmVyOwogCXU2NCBpZ25vcmVfYml0cyA9IDA7CiAKLQlpZiAoIWVuYWJsZV9lcHQpIHsK LQkJLyoKLQkJICogTlggaXMgbmVlZGVkIHRvIGhhbmRsZSBDUjAuV1A9MSwgQ1I0LlNNRVA9 MS4gIFRlc3RpbmcKLQkJICogaG9zdCBDUFVJRCBpcyBtb3JlIGVmZmljaWVudCB0aGFuIHRl c3RpbmcgZ3Vlc3QgQ1BVSUQKLQkJICogb3IgQ1I0LiAgSG9zdCBTTUVQIGlzIGFueXdheSBh IHJlcXVpcmVtZW50IGZvciBndWVzdCBTTUVQLgotCQkgKi8KLQkJaWYgKGJvb3RfY3B1X2hh cyhYODZfRkVBVFVSRV9TTUVQKSkKLQkJCWd1ZXN0X2VmZXIgfD0gRUZFUl9OWDsKLQkJZWxz ZSBpZiAoIShndWVzdF9lZmVyICYgRUZFUl9OWCkpCi0JCQlpZ25vcmVfYml0cyB8PSBFRkVS X05YOwotCX0KKwkvKiBTaGFkb3cgcGFnaW5nIGFzc3VtZXMgTlggdG8gYmUgYXZhaWxhYmxl LiAgKi8KKwlpZiAoIWVuYWJsZV9lcHQpCisJCWd1ZXN0X2VmZXIgfD0gRUZFUl9OWDsKIAog CS8qCiAJICogTE1BIGFuZCBMTUUgaGFuZGxlZCBieSBoYXJkd2FyZTsgU0NFIG1lYW5pbmds ZXNzIG91dHNpZGUgbG9uZyBtb2RlLgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4vUGF4SGVh ZGVycy4zNjAyMi8wMDAxLXg4Ni1BZGQtSVRMQl9NVUxUSUhJVC1idWctaW5mcmFzdHJ1Y3R1 cmUucGF0Y2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDAwMDAA MDAwMDAwMAAwMDAwMDAwMDEzMAAxMzU2MDIzMDcyMQAwMjEzNTMAIHgAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIAMDAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAMjkgbXRpbWU9MTU3Mjk0MjI4OS45MjIxNzM4OAozMCBhdGlt ZT0xNTcyOTQyMjg5LjkxODE3Mzg3MwoyOSBjdGltZT0xNTcyOTQyMjg5LjkyMjE3Mzg4CgAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAxLXg4Ni1B ZGQtSVRMQl9NVUxUSUhJVC1idWctaW5mcmFzdHJ1Y3R1cmUucGF0Y2gAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDI1Mzc3ADAw MDAxNDQAMDAwMDAwMjQ3MTcAMTM1NjAyMzA3MjEAMDIyMjE0ACAwAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyADAwbWhvY2tvAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAB1c2VycwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAw MDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAEZyb206IFBhd2FuIEd1cHRhIDxwYXdhbi5rdW1hci5ndXB0YUBs aW51eC5pbnRlbC5jb20+ClN1YmplY3Q6IFtQQVRDSCAxLzVdIHg4NjogQWRkIElUTEJfTVVM VElISVQgYnVnIGluZnJhc3RydWN0dXJlClJlZmVyZW5jZXM6IGJzYyMxMTE3NjY1LCBDVkUt MjAxOC0xMjIwNwpQYXRjaC1tYWlubGluZTogTm8sIHN0aWxsIHVuZGVyIGRpc2N1c3Npb24K ClNvbWUgcHJvY2Vzc29ycyBtYXkgaW5jdXIgYSBtYWNoaW5lIGNoZWNrIGVycm9yIHBvc3Np Ymx5CnJlc3VsdGluZyBpbiBhbiB1bnJlY292ZXJhYmxlIGNwdSBoYW5nIHdoZW4gYW4gaW5z dHJ1Y3Rpb24gZmV0Y2gKZW5jb3VudGVycyBhIFRMQiBtdWx0aS1oaXQgaW4gdGhlIGluc3Ry dWN0aW9uIFRMQi4gVGhpcyBjYW4gb2NjdXIKd2hlbiB0aGUgcGFnZSBzaXplIGlzIGNoYW5n ZWQgYWxvbmcgd2l0aCBlaXRoZXIgdGhlIHBoeXNpY2FsCmFkZHJlc3Mgb3IgY2FjaGUgdHlw ZSBbMV0uCgpUaGlzIGlzc3VlIGFmZmVjdHMgYm90aCBiYXJlLW1ldGFsIHg4NiBwYWdlIHRh YmxlcyBhbmQgRVBULgoKVGhpcyBjYW4gYmUgbWl0aWdhdGVkIGJ5IGVpdGhlciBlbGltaW5h dGluZyB0aGUgdXNlIG9mIGxhcmdlCnBhZ2VzIG9yIGJ5IHVzaW5nIGNhcmVmdWwgVExCIGlu dmFsaWRhdGlvbnMgd2hlbiBjaGFuZ2luZyB0aGUKcGFnZSBzaXplIGluIHRoZSBwYWdlIHRh Ymxlcy4KCkp1c3QgbGlrZSBTcGVjdHJlLCBNZWx0ZG93biwgTDFURiBhbmQgTURTLCBhIG5l dyBiaXQgaGFzIGJlZW4KYWxsb2NhdGVkIGluIE1TUl9JQTMyX0FSQ0hfQ0FQQUJJTElUSUVT IChQU0NIQU5HRV9NQ19OTykgYW5kIHdpbGwKYmUgc2V0IG9uIENQVXMgd2hpY2ggYXJlIG1p dGlnYXRlZCBhZ2FpbnN0IHRoaXMgaXNzdWUuCgpbMV0gRm9yIGV4YW1wbGUgcGxlYXNlIHJl ZmVyIHRvIGVycmF0dW0gU0tMMDAyIGluICI2dGggR2VuZXJhdGlvbgpJbnRlbCBQcm9jZXNz b3IgRmFtaWx5IFNwZWNpZmljYXRpb24gVXBkYXRlIgpodHRwczovL3d3dy5pbnRlbC5jb20v Y29udGVudC93d3cvdXMvZW4vcHJvZHVjdHMvZG9jcy9wcm9jZXNzb3JzL2NvcmUvZGVza3Rv cC02dGgtZ2VuLWNvcmUtZmFtaWx5LXNwZWMtdXBkYXRlLmh0bWwKaHR0cHM6Ly93d3cuZ29v Z2xlLmNvbS9zZWFyY2g/cT1zaXRlOmludGVsLmNvbStTS0wwMDIKClRoZXJlIGFyZSBhIGxv dCBvZiBvdGhlciBhZmZlY3RlZCBwcm9jZXNzb3JzIG91dHNpZGUgb2YgU2t5bGFrZSBhbmQK dGhhdCB0aGUgZXJyYXR1bShyZWZlcnJlZCBhYm92ZSkgZG9lcyBub3QgZnVsbHkgZGlzY2xv c2UgdGhlIGlzc3VlCmFuZCB0aGUgaW1wYWN0LCBib3RoIG9uIFNreWxha2UgYW5kIGFjcm9z cyBhbGwgdGhlIGFmZmVjdGVkIENQVXMuCgpTaWduZWQtb2ZmLWJ5OiBWaW5lZWxhIFR1bW1h bGFwYWxsaSA8dmluZWVsYS50dW1tYWxhcGFsbGlAaW50ZWwuY29tPgpDby1kZXZlbG9wZWQt Ynk6IFBhd2FuIEd1cHRhIDxwYXdhbi5rdW1hci5ndXB0YUBsaW51eC5pbnRlbC5jb20+ClNp Z25lZC1vZmYtYnk6IFBhd2FuIEd1cHRhIDxwYXdhbi5rdW1hci5ndXB0YUBsaW51eC5pbnRl bC5jb20+ClNpZ25lZC1vZmYtYnk6IFBhb2xvIEJvbnppbmkgPHBib256aW5pQHJlZGhhdC5j b20+CkFja2VkLWJ5OiBKb2VyZyBSb2VkZWwgPGpyb2VkZWxAc3VzZS5kZT4KLS0tCiBEb2N1 bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRldmljZXMtc3lzdGVtLWNwdSB8ICAgIDEg CiBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlLmggICAgICAgICAgICAgICAgICB8 ICAgIDEgCiBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9tc3ItaW5kZXguaCAgICAgICAgICAgICAg ICAgICB8ICAgIDggKysKIGFyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAxMyArKysrCiBhcmNoL3g4Ni9rZXJuZWwvY3B1L2NvbW1vbi5j ICAgICAgICAgICAgICAgICAgICAgICB8ICAgNjEgKysrKysrKysrKystLS0tLS0tLS0tCiBk cml2ZXJzL2Jhc2UvY3B1LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg IDggKysKIGluY2x1ZGUvbGludXgvY3B1LmggICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgMiAKIDcgZmlsZXMgY2hhbmdlZCwgNjYgaW5zZXJ0aW9ucygrKSwgMjggZGVs ZXRpb25zKC0pCgotLS0gYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRldmlj ZXMtc3lzdGVtLWNwdQorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRl dmljZXMtc3lzdGVtLWNwdQpAQCAtMjgwLDYgKzI4MCw3IEBAIFdoYXQ6CQkvc3lzL2Rldmlj ZXMvc3lzdGVtL2NwdS92dWxuZXJhYmkKIAkJL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvdnVs bmVyYWJpbGl0aWVzL2wxdGYKIAkJL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvdnVsbmVyYWJp bGl0aWVzL21kcwogCQkvc3lzL2RldmljZXMvc3lzdGVtL2NwdS92dWxuZXJhYmlsaXRpZXMv dHN4X2FzeW5jX2Fib3J0CisJCS9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L3Z1bG5lcmFiaWxp dGllcy9pdGxiX211bHRpaGl0CiBEYXRlOgkJSmFudWFyeSAyMDE4CiBDb250YWN0OglMaW51 eCBrZXJuZWwgbWFpbGluZyBsaXN0IDxsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnPgog RGVzY3JpcHRpb246CUluZm9ybWF0aW9uIGFib3V0IENQVSB2dWxuZXJhYmlsaXRpZXMKLS0t IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZS5oCisrKyBiL2FyY2gveDg2L2lu Y2x1ZGUvYXNtL2NwdWZlYXR1cmUuaApAQCAtMzQxLDYgKzM0MSw3IEBACiAjZGVmaW5lIFg4 Nl9CVUdfTVNCRFNfT05MWQlYODZfQlVHKDIwKSAvKiBDUFUgaXMgb25seSBhZmZlY3RlZCBi eSB0aGUgIE1TREJTIHZhcmlhbnQgb2YgQlVHX01EUyAqLwogI2RlZmluZSBYODZfQlVHX1NX QVBHUwkJWDg2X0JVRygyMSkgLyogQ1BVIGlzIGFmZmVjdGVkIGJ5IHNwZWN1bGF0aW9uIHRo cm91Z2ggU1dBUEdTICovCiAjZGVmaW5lIFg4Nl9CVUdfVEFBCQkJWDg2X0JVRygyMikgLyog Q1BVIGlzIGFmZmVjdGVkIGJ5IFRTWCBBc3luYyBBYm9ydChUQUEpICovCisjZGVmaW5lIFg4 Nl9CVUdfSVRMQl9NVUxUSUhJVAlYODZfQlVHKDIzKSAvKiBDUFUgbWF5IGluY3VyIE1DRSBk dXJpbmcgY2VydGFpbiBwYWdlIGF0dHJpYnV0ZSBjaGFuZ2VzICovCiAKIAogI2lmIGRlZmlu ZWQoX19LRVJORUxfXykgJiYgIWRlZmluZWQoX19BU1NFTUJMWV9fKQotLS0gYS9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9tc3ItaW5kZXguaAorKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9t c3ItaW5kZXguaApAQCAtNzgsNiArNzgsMTQgQEAKIAkJCQkJCSAqIFRTWCBBc3luYyBBYm9y dCAoVEFBKSB2dWxuZXJhYmlsaXRpZXMuCiAJCQkJCQkgKi8KIAorI2RlZmluZSBBUkNIX0NB UF9QU0NIQU5HRV9NQ19OTwkJQklUKDYpCSAvKgorCQkJCQkJICAqIFRoZSBwcm9jZXNzb3Ig aXMgbm90IHN1c2NlcHRpYmxlIHRvIGEKKwkJCQkJCSAgKiBtYWNoaW5lIGNoZWNrIGVycm9y IGR1ZSB0byBtb2RpZnlpbmcgdGhlCisJCQkJCQkgICogY29kZSBwYWdlIHNpemUgYWxvbmcg d2l0aCBlaXRoZXIgdGhlCisJCQkJCQkgICogcGh5c2ljYWwgYWRkcmVzcyBvciBjYWNoZSB0 eXBlCisJCQkJCQkgICogd2l0aG91dCBUTEIgaW52YWxpZGF0aW9uLgorCQkJCQkJICAqLwor CiAjZGVmaW5lIE1TUl9JQTMyX0ZMVVNIX0NNRAkJMHgwMDAwMDEwYgogI2RlZmluZSBMMURf RkxVU0gJCQlCSVQoMCkJLyoKIAkJCQkJCSAqIFdyaXRlYmFjayBhbmQgaW52YWxpZGF0ZSB0 aGUKLS0tIGEvYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmMKKysrIGIvYXJjaC94ODYva2Vy bmVsL2NwdS9idWdzLmMKQEAgLTEwMzgsNiArMTAzOCwxMSBAQCB2b2lkIGFyY2hfc2VjY29t cF9zcGVjX21pdGlnYXRlKHN0cnVjdCB0CiB9CiAjZW5kaWYKIAorc3RhdGljIHNzaXplX3Qg aXRsYl9tdWx0aWhpdF9zaG93X3N0YXRlKGNoYXIgKmJ1ZikKK3sKKwlyZXR1cm4gc3ByaW50 ZihidWYsICJQcm9jZXNzb3IgdnVsbmVyYWJsZVxuIik7Cit9CisKIHN0YXRpYyBzc2l6ZV90 IG1kc19zaG93X3N0YXRlKGNoYXIgKmJ1ZikKIHsKIAlpZiAoeDg2X2h5cGVyKSB7CkBAIC0x MTc5LDYgKzExODQsOSBAQCBzdGF0aWMgc3NpemVfdCBjcHVfc2hvd19jb21tb24oc3RydWN0 IGRlCiAJY2FzZSBYODZfQlVHX1RBQToKIAkJcmV0dXJuIHRzeF9hc3luY19hYm9ydF9zaG93 X3N0YXRlKGJ1Zik7CiAKKwljYXNlIFg4Nl9CVUdfSVRMQl9NVUxUSUhJVDoKKwkJcmV0dXJu IGl0bGJfbXVsdGloaXRfc2hvd19zdGF0ZShidWYpOworCiAJZGVmYXVsdDoKIAkJYnJlYWs7 CiAJfQpAQCAtMTIyMiw0ICsxMjMwLDkgQEAgc3NpemVfdCBjcHVfc2hvd190c3hfYXN5bmNf YWJvcnQoc3RydWN0CiB7CiAJcmV0dXJuIGNwdV9zaG93X2NvbW1vbihkZXYsIGF0dHIsIGJ1 ZiwgWDg2X0JVR19UQUEpOwogfQorCitzc2l6ZV90IGNwdV9zaG93X2l0bGJfbXVsdGloaXQo c3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hh ciAqYnVmKQoreworCXJldHVybiBjcHVfc2hvd19jb21tb24oZGV2LCBhdHRyLCBidWYsIFg4 Nl9CVUdfSVRMQl9NVUxUSUhJVCk7Cit9CiAjZW5kaWYKLS0tIGEvYXJjaC94ODYva2VybmVs L2NwdS9jb21tb24uYworKysgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L2NvbW1vbi5jCkBAIC04 NzYsMTMgKzg3NiwxNCBAQCBzdGF0aWMgdm9pZCBpZGVudGlmeV9jcHVfd2l0aG91dF9jcHVp ZChzCiAjZW5kaWYKIH0KIAotI2RlZmluZSBOT19TUEVDVUxBVElPTglCSVQoMCkKLSNkZWZp bmUgTk9fTUVMVERPV04JQklUKDEpCi0jZGVmaW5lIE5PX1NTQgkJQklUKDIpCi0jZGVmaW5l IE5PX0wxVEYJCUJJVCgzKQotI2RlZmluZSBOT19NRFMJCUJJVCg0KQotI2RlZmluZSBNU0JE U19PTkxZCUJJVCg1KQotI2RlZmluZSBOT19TV0FQR1MJQklUKDYpCisjZGVmaW5lIE5PX1NQ RUNVTEFUSU9OCQlCSVQoMCkKKyNkZWZpbmUgTk9fTUVMVERPV04JCUJJVCgxKQorI2RlZmlu ZSBOT19TU0IJCQlCSVQoMikKKyNkZWZpbmUgTk9fTDFURgkJCUJJVCgzKQorI2RlZmluZSBO T19NRFMJCQlCSVQoNCkKKyNkZWZpbmUgTVNCRFNfT05MWQkJQklUKDUpCisjZGVmaW5lIE5P X1NXQVBHUwkJQklUKDYpCisjZGVmaW5lIE5PX0lUTEJfTVVMVElISVQJQklUKDcpCiAKICNk ZWZpbmUgVlVMTldMKF92ZW5kb3IsIF9mYW1pbHksIF9tb2RlbCwgX3doaXRlbGlzdCkJXAog CXsgWDg2X1ZFTkRPUl8jI192ZW5kb3IsIF9mYW1pbHksIF9tb2RlbCwgWDg2X0ZFQVRVUkVf QU5ZLCBfd2hpdGVsaXN0IH0KQEAgLTkwMCwyNiArOTAxLDI2IEBAIHN0YXRpYyBjb25zdCBf X2luaXRjb25zdCBzdHJ1Y3QgeDg2X2NwdV8KIAlWVUxOV0woTlNDLAk1LCBYODZfTU9ERUxf QU5ZLAlOT19TUEVDVUxBVElPTiksCiAKIAkvKiBJbnRlbCBGYW1pbHkgNiAqLwotCVZVTE5X TF9JTlRFTChBVE9NX1NBTFRXRUxMLAkJTk9fU1BFQ1VMQVRJT04pLAotCVZVTE5XTF9JTlRF TChBVE9NX1NBTFRXRUxMX1RBQkxFVCwJTk9fU1BFQ1VMQVRJT04pLAotCVZVTE5XTF9JTlRF TChBVE9NX1NBTFRXRUxMX01JRCwJCU5PX1NQRUNVTEFUSU9OKSwKLQlWVUxOV0xfSU5URUwo QVRPTV9CT05ORUxMLAkJTk9fU1BFQ1VMQVRJT04pLAotCVZVTE5XTF9JTlRFTChBVE9NX0JP Tk5FTExfTUlELAkJTk9fU1BFQ1VMQVRJT04pLAotCi0JVlVMTldMX0lOVEVMKEFUT01fU0lM VkVSTU9OVCwJCU5PX1NTQiB8IE5PX0wxVEYgfCBNU0JEU19PTkxZIHwgTk9fU1dBUEdTKSwK LQlWVUxOV0xfSU5URUwoQVRPTV9TSUxWRVJNT05UX1gsCQlOT19TU0IgfCBOT19MMVRGIHwg TVNCRFNfT05MWSB8IE5PX1NXQVBHUyksCi0JVlVMTldMX0lOVEVMKEFUT01fU0lMVkVSTU9O VF9NSUQsCU5PX1NTQiB8IE5PX0wxVEYgfCBNU0JEU19PTkxZIHwgTk9fU1dBUEdTKSwKLQlW VUxOV0xfSU5URUwoQVRPTV9BSVJNT05ULAkJTk9fU1NCIHwgTk9fTDFURiB8IE1TQkRTX09O TFkgfCBOT19TV0FQR1MpLAotCVZVTE5XTF9JTlRFTChYRU9OX1BISV9LTkwsCQlOT19TU0Ig fCBOT19MMVRGIHwgTVNCRFNfT05MWSB8IE5PX1NXQVBHUyksCi0JVlVMTldMX0lOVEVMKFhF T05fUEhJX0tOTSwJCU5PX1NTQiB8IE5PX0wxVEYgfCBNU0JEU19PTkxZIHwgTk9fU1dBUEdT KSwKKwlWVUxOV0xfSU5URUwoQVRPTV9TQUxUV0VMTCwJCU5PX1NQRUNVTEFUSU9OIHwgTk9f SVRMQl9NVUxUSUhJVCksCisJVlVMTldMX0lOVEVMKEFUT01fU0FMVFdFTExfVEFCTEVULAlO T19TUEVDVUxBVElPTiB8IE5PX0lUTEJfTVVMVElISVQpLAorCVZVTE5XTF9JTlRFTChBVE9N X1NBTFRXRUxMX01JRCwJCU5PX1NQRUNVTEFUSU9OIHwgTk9fSVRMQl9NVUxUSUhJVCksCisJ VlVMTldMX0lOVEVMKEFUT01fQk9OTkVMTCwJCU5PX1NQRUNVTEFUSU9OIHwgTk9fSVRMQl9N VUxUSUhJVCksCisJVlVMTldMX0lOVEVMKEFUT01fQk9OTkVMTF9NSUQsCQlOT19TUEVDVUxB VElPTiB8IE5PX0lUTEJfTVVMVElISVQpLAorCisJVlVMTldMX0lOVEVMKEFUT01fU0lMVkVS TU9OVCwJCU5PX1NTQiB8IE5PX0wxVEYgfCBNU0JEU19PTkxZIHwgTk9fU1dBUEdTIHwgTk9f SVRMQl9NVUxUSUhJVCksCisJVlVMTldMX0lOVEVMKEFUT01fU0lMVkVSTU9OVF9YLAkJTk9f U1NCIHwgTk9fTDFURiB8IE1TQkRTX09OTFkgfCBOT19TV0FQR1MgfCBOT19JVExCX01VTFRJ SElUKSwKKwlWVUxOV0xfSU5URUwoQVRPTV9TSUxWRVJNT05UX01JRCwJTk9fU1NCIHwgTk9f TDFURiB8IE1TQkRTX09OTFkgfCBOT19TV0FQR1MgfCBOT19JVExCX01VTFRJSElUKSwKKwlW VUxOV0xfSU5URUwoQVRPTV9BSVJNT05ULAkJTk9fU1NCIHwgTk9fTDFURiB8IE1TQkRTX09O TFkgfCBOT19TV0FQR1MgfCBOT19JVExCX01VTFRJSElUKSwKKwlWVUxOV0xfSU5URUwoWEVP Tl9QSElfS05MLAkJTk9fU1NCIHwgTk9fTDFURiB8IE1TQkRTX09OTFkgfCBOT19TV0FQR1Mg fCBOT19JVExCX01VTFRJSElUKSwKKwlWVUxOV0xfSU5URUwoWEVPTl9QSElfS05NLAkJTk9f U1NCIHwgTk9fTDFURiB8IE1TQkRTX09OTFkgfCBOT19TV0FQR1MgfCBOT19JVExCX01VTFRJ SElUKSwKIAogCVZVTE5XTF9JTlRFTChDT1JFX1lPTkFILAkJTk9fU1NCKSwKIAotCVZVTE5X TF9JTlRFTChBVE9NX0FJUk1PTlRfTUlELAkJTk9fTDFURiB8IE1TQkRTX09OTFkgfCBOT19T V0FQR1MpLAorCVZVTE5XTF9JTlRFTChBVE9NX0FJUk1PTlRfTUlELAkJTk9fTDFURiB8IE1T QkRTX09OTFkgfCBOT19TV0FQR1MgfCBOT19JVExCX01VTFRJSElUKSwKIAotCVZVTE5XTF9J TlRFTChBVE9NX0dPTERNT05ULAkJTk9fTURTIHwgTk9fTDFURiB8IE5PX1NXQVBHUyksCi0J VlVMTldMX0lOVEVMKEFUT01fR09MRE1PTlRfWCwJCU5PX01EUyB8IE5PX0wxVEYgfCBOT19T V0FQR1MpLAotCVZVTE5XTF9JTlRFTChBVE9NX0dPTERNT05UX1BMVVMsCU5PX01EUyB8IE5P X0wxVEYgfCBOT19TV0FQR1MpLAorCVZVTE5XTF9JTlRFTChBVE9NX0dPTERNT05ULAkJTk9f TURTIHwgTk9fTDFURiB8IE5PX1NXQVBHUyB8IE5PX0lUTEJfTVVMVElISVQpLAorCVZVTE5X TF9JTlRFTChBVE9NX0dPTERNT05UX1gsCQlOT19NRFMgfCBOT19MMVRGIHwgTk9fU1dBUEdT IHwgTk9fSVRMQl9NVUxUSUhJVCksCisJVlVMTldMX0lOVEVMKEFUT01fR09MRE1PTlRfUExV UywJTk9fTURTIHwgTk9fTDFURiB8IE5PX1NXQVBHUyB8IE5PX0lUTEJfTVVMVElISVQpLAog CiAJLyoKIAkgKiBUZWNobmljYWxseSwgc3dhcGdzIGlzbid0IHNlcmlhbGl6aW5nIG9uIEFN RCAoZGVzcGl0ZSBpdCBwcmV2aW91c2x5CkBAIC05MzAsMTMgKzkzMSwxMyBAQCBzdGF0aWMg Y29uc3QgX19pbml0Y29uc3Qgc3RydWN0IHg4Nl9jcHVfCiAJICovCiAKIAkvKiBBTUQgRmFt aWx5IDB4ZiAtIDB4MTIgKi8KLQlWVUxOV0xfQU1EKDB4MGYsCU5PX01FTFRET1dOIHwgTk9f U1NCIHwgTk9fTDFURiB8IE5PX01EUyB8IE5PX1NXQVBHUyksCi0JVlVMTldMX0FNRCgweDEw LAlOT19NRUxURE9XTiB8IE5PX1NTQiB8IE5PX0wxVEYgfCBOT19NRFMgfCBOT19TV0FQR1Mp LAotCVZVTE5XTF9BTUQoMHgxMSwJTk9fTUVMVERPV04gfCBOT19TU0IgfCBOT19MMVRGIHwg Tk9fTURTIHwgTk9fU1dBUEdTKSwKLQlWVUxOV0xfQU1EKDB4MTIsCU5PX01FTFRET1dOIHwg Tk9fU1NCIHwgTk9fTDFURiB8IE5PX01EUyB8IE5PX1NXQVBHUyksCisJVlVMTldMX0FNRCgw eDBmLAlOT19NRUxURE9XTiB8IE5PX1NTQiB8IE5PX0wxVEYgfCBOT19NRFMgfCBOT19TV0FQ R1MgfCBOT19JVExCX01VTFRJSElUKSwKKwlWVUxOV0xfQU1EKDB4MTAsCU5PX01FTFRET1dO IHwgTk9fU1NCIHwgTk9fTDFURiB8IE5PX01EUyB8IE5PX1NXQVBHUyB8IE5PX0lUTEJfTVVM VElISVQpLAorCVZVTE5XTF9BTUQoMHgxMSwJTk9fTUVMVERPV04gfCBOT19TU0IgfCBOT19M MVRGIHwgTk9fTURTIHwgTk9fU1dBUEdTIHwgTk9fSVRMQl9NVUxUSUhJVCksCisJVlVMTldM X0FNRCgweDEyLAlOT19NRUxURE9XTiB8IE5PX1NTQiB8IE5PX0wxVEYgfCBOT19NRFMgfCBO T19TV0FQR1MgfCBOT19JVExCX01VTFRJSElUKSwKIAogCS8qIEZBTUlMWV9BTlkgbXVzdCBi ZSBsYXN0LCBvdGhlcndpc2UgMHgwZiAtIDB4MTIgbWF0Y2hlcyB3b24ndCB3b3JrICovCi0J VlVMTldMX0FNRChYODZfRkFNSUxZX0FOWSwJTk9fTUVMVERPV04gfCBOT19MMVRGIHwgTk9f TURTIHwgTk9fU1dBUEdTKSwKKwlWVUxOV0xfQU1EKFg4Nl9GQU1JTFlfQU5ZLAlOT19NRUxU RE9XTiB8IE5PX0wxVEYgfCBOT19NRFMgfCBOT19TV0FQR1MgfCBOT19JVExCX01VTFRJSElU KSwKIAl7fQogfTsKIApAQCAtOTYxLDYgKzk2MiwxMCBAQCBzdGF0aWMgdm9pZCBfX2luaXQg Y3B1X3NldF9idWdfYml0cyhzdHJ1CiB7CiAJdTY0IGlhMzJfY2FwID0geDg2X3JlYWRfYXJj aF9jYXBfbXNyKCk7CiAKKwkvKiBTZXQgSVRMQl9NVUxUSUhJVCBidWcgaWYgY3B1IGlzIG5v dCBpbiB0aGUgd2hpdGVsaXN0IGFuZCBub3QgbWl0aWdhdGVkICovCisJaWYgKCFjcHVfbWF0 Y2hlcyhOT19JVExCX01VTFRJSElUKSAmJiAhKGlhMzJfY2FwICYgQVJDSF9DQVBfUFNDSEFO R0VfTUNfTk8pKQorCQlzZXR1cF9mb3JjZV9jcHVfYnVnKFg4Nl9CVUdfSVRMQl9NVUxUSUhJ VCk7CisKIAlpZiAoY3B1X21hdGNoZXMoTk9fU1BFQ1VMQVRJT04pKQogCQlyZXR1cm47CiAK LS0tIGEvZHJpdmVycy9iYXNlL2NwdS5jCisrKyBiL2RyaXZlcnMvYmFzZS9jcHUuYwpAQCAt NTQzLDYgKzU0MywxMiBAQCBzc2l6ZV90IF9fd2VhayBjcHVfc2hvd190c3hfYXN5bmNfYWJv cnQoCiAJcmV0dXJuIHNwcmludGYoYnVmLCAiTm90IGFmZmVjdGVkXG4iKTsKIH0KIAorc3Np emVfdCBfX3dlYWsgY3B1X3Nob3dfaXRsYl9tdWx0aWhpdChzdHJ1Y3QgZGV2aWNlICpkZXYs CisJCQkgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKK3sK KwlyZXR1cm4gc3ByaW50ZihidWYsICJOb3QgYWZmZWN0ZWRcbiIpOworfQorCiBzdGF0aWMg REVWSUNFX0FUVFIobWVsdGRvd24sIDA0NDQsIGNwdV9zaG93X21lbHRkb3duLCBOVUxMKTsK IHN0YXRpYyBERVZJQ0VfQVRUUihzcGVjdHJlX3YxLCAwNDQ0LCBjcHVfc2hvd19zcGVjdHJl X3YxLCBOVUxMKTsKIHN0YXRpYyBERVZJQ0VfQVRUUihzcGVjdHJlX3YyLCAwNDQ0LCBjcHVf c2hvd19zcGVjdHJlX3YyLCBOVUxMKTsKQEAgLTU1MCw2ICs1NTYsNyBAQCBzdGF0aWMgREVW SUNFX0FUVFIoc3BlY19zdG9yZV9ieXBhc3MsIDA0CiBzdGF0aWMgREVWSUNFX0FUVFIobDF0 ZiwgMDQ0NCwgY3B1X3Nob3dfbDF0ZiwgTlVMTCk7CiBzdGF0aWMgREVWSUNFX0FUVFIobWRz LCAwNDQ0LCBjcHVfc2hvd19tZHMsIE5VTEwpOwogc3RhdGljIERFVklDRV9BVFRSKHRzeF9h c3luY19hYm9ydCwgMDQ0NCwgY3B1X3Nob3dfdHN4X2FzeW5jX2Fib3J0LCBOVUxMKTsKK3N0 YXRpYyBERVZJQ0VfQVRUUihpdGxiX211bHRpaGl0LCAwNDQ0LCBjcHVfc2hvd19pdGxiX211 bHRpaGl0LCBOVUxMKTsKIAogc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmNwdV9yb290X3Z1 bG5lcmFiaWxpdGllc19hdHRyc1tdID0gewogCSZkZXZfYXR0cl9tZWx0ZG93bi5hdHRyLApA QCAtNTU5LDYgKzU2Niw3IEBAIHN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpjcHVfcm9vdF92 dWxuZXIKIAkmZGV2X2F0dHJfbDF0Zi5hdHRyLAogCSZkZXZfYXR0cl9tZHMuYXR0ciwKIAkm ZGV2X2F0dHJfdHN4X2FzeW5jX2Fib3J0LmF0dHIsCisJJmRldl9hdHRyX2l0bGJfbXVsdGlo aXQuYXR0ciwKIAlOVUxMCiB9OwogCi0tLSBhL2luY2x1ZGUvbGludXgvY3B1LmgKKysrIGIv aW5jbHVkZS9saW51eC9jcHUuaApAQCAtNTUsNiArNTUsOCBAQCBleHRlcm4gc3NpemVfdCBj cHVfc2hvd19tZHMoc3RydWN0IGRldmljCiBleHRlcm4gc3NpemVfdCBjcHVfc2hvd190c3hf YXN5bmNfYWJvcnQoc3RydWN0IGRldmljZSAqZGV2LAogCQkJCQlzdHJ1Y3QgZGV2aWNlX2F0 dHJpYnV0ZSAqYXR0ciwKIAkJCQkJY2hhciAqYnVmKTsKK2V4dGVybiBzc2l6ZV90IGNwdV9z aG93X2l0bGJfbXVsdGloaXQoc3RydWN0IGRldmljZSAqZGV2LAorCQkJCSAgICAgIHN0cnVj dCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpOwogCiBleHRlcm4gX19wcmlu dGYoNCwgNSkKIHN0cnVjdCBkZXZpY2UgKmNwdV9kZXZpY2VfY3JlYXRlKHN0cnVjdCBkZXZp Y2UgKnBhcmVudCwgdm9pZCAqZHJ2ZGF0YSwKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4vUGF4SGVhZGVycy4zNjAyMi8wMDAyLXg4Ni1jcHUt QWRkLVRyZW1vbnQtdG8tdGhlLWNwdS12dWxuZXJhYmlsaXR5LnBhdGNoAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDAwMDAAMDAwMDAwMAAwMDAwMDAwMDEzMgAxMzU1 NjMxMzcyMAAwMjI1NTEAIHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAdXN0YXIAMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMzAgbXRp bWU9MTU3MjQ0NDExMi43NTI0Njg4NTEKMzAgYXRpbWU9MTU3MjQ0NDExMi43NTI0Njg4NTEK MzAgY3RpbWU9MTU3MjQ0NDExMi43NTI0Njg4NTEKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAyLXg4Ni1jcHUtQWRkLVRyZW1vbnQtdG8tdGhlLWNw dS12dWxuZXJhYmlsaXR5LnBhdGNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAMDAwMDY0NAAwMDI1Mzc3ADAwMDAxNDQAMDAwMDAwMDIxNDcAMTM1NTYz MTM3MjAAMDIzNDAxACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAHVzdGFyADAwbWhvY2tvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c2VycwAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEZyb206IFBh d2FuIEd1cHRhIDxwYXdhbi5rdW1hci5ndXB0YUBsaW51eC5pbnRlbC5jb20+ClN1YmplY3Q6 IFtQQVRDSCAyLzVdIHg4Ni9jcHU6IEFkZCBUcmVtb250IHRvIHRoZSBjcHUgdnVsbmVyYWJp bGl0eQpSZWZlcmVuY2VzOiBic2MjMTExNzY2NSwgQ1ZFLTIwMTgtMTIyMDcKUGF0Y2gtbWFp bmxpbmU6IE5vLCBzdGlsbCB1bmRlciBkaXNjdXNzaW9uCgpUaGlzIHBhdGNoIGFkZHMgbmV3 IGNwdSBmYW1pbHkgQVRPTV9UUkVNT05UX1ggdG8gdGhlIGNwdSB2dW5lcmFiaWxpdHkKd2hp dGVsaXN0LiBBVE9NX1RSRU1PTlRfWCBpcyBub3QgYWZmZWN0ZWQgYnkgWDg2X0JVR19JVExC X01VTFRJSElULiBUaGVyZQptYXkgYmUgbW9yZSBidWdzIG5vdCBhZmZlY3RpbmcgQVRPTV9U UkVNT05UX1ggd2hpY2ggYXJlIG5vdCBrbm93biBhdAp0aGlzIHBvaW50IGFuZCBjb3VsZCBi ZSBhZGRlZCBsYXRlci4KClNpZ25lZC1vZmYtYnk6IFBhd2FuIEd1cHRhIDxwYXdhbi5rdW1h ci5ndXB0YUBsaW51eC5pbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IFBhb2xvIEJvbnppbmkg PHBib256aW5pQHJlZGhhdC5jb20+CkFja2VkLWJ5OiBKb2VyZyBSb2VkZWwgPGpyb2VkZWxA c3VzZS5kZT4KLS0tCiBhcmNoL3g4Ni9rZXJuZWwvY3B1L2NvbW1vbi5jIHwgMiArKwogMSBm aWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQoKLS0tIGEvYXJjaC94ODYva2VybmVsL2Nw dS9jb21tb24uYworKysgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L2NvbW1vbi5jCkBAIC05MzAs NiArOTMwLDggQEAgc3RhdGljIGNvbnN0IF9faW5pdGNvbnN0IHN0cnVjdCB4ODZfY3B1Xwog CSAqIGdvb2QgZW5vdWdoIGZvciBvdXIgcHVycG9zZXMuCiAJICovCiAKKwlWVUxOV0xfSU5U RUwoQVRPTV9UUkVNT05UX1gsCQlOT19JVExCX01VTFRJSElUKSwKKwogCS8qIEFNRCBGYW1p bHkgMHhmIC0gMHgxMiAqLwogCVZVTE5XTF9BTUQoMHgwZiwJTk9fTUVMVERPV04gfCBOT19T U0IgfCBOT19MMVRGIHwgTk9fTURTIHwgTk9fU1dBUEdTIHwgTk9fSVRMQl9NVUxUSUhJVCks CiAJVlVMTldMX0FNRCgweDEwLAlOT19NRUxURE9XTiB8IE5PX1NTQiB8IE5PX0wxVEYgfCBO T19NRFMgfCBOT19TV0FQR1MgfCBOT19JVExCX01VTFRJSElUKSwKAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAC4vUGF4SGVhZGVycy4zNjAyMi8wMDAzLWt2bS1tbXUtSVRMQl9N VUxUSUhJVC1taXRpZ2F0aW9uLnBhdGNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAwMDAwNjQ0ADAwMDAwMDAAMDAwMDAwMAAwMDAwMDAwMDEzMgAxMzU2MDIzMDc3 NQAwMjAxNTcAIHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAdXN0YXIAMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMzAgbXRpbWU9MTU3 Mjk0MjMzMy4wNTgyNTE1NTkKMzAgYXRpbWU9MTU3Mjk0MjMzMy4wNTgyNTE1NTkKMzAgY3Rp bWU9MTU3Mjk0MjMzMy4wNTgyNTE1NTkKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAwMDAzLWt2bS1tbXUtSVRMQl9NVUxUSUhJVC1taXRpZ2F0aW9uLnBh dGNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAMDAwMDY0NAAwMDI1Mzc3ADAwMDAxNDQAMDAwMDAwMzM2MzIAMTM1NjAyMzA3NzUA MDIxMDEyACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AHVzdGFyADAwbWhvY2tvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c2VycwAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEZyb206IEp1bmFpZCBT aGFoaWQgPGp1bmFpZHNAZ29vZ2xlLmNvbT4KU3ViamVjdDogW1BBVENIIDMvNV0ga3ZtOiBt bXU6IElUTEJfTVVMVElISVQgbWl0aWdhdGlvbgpSZWZlcmVuY2VzOiBic2MjMTExNzY2NSwg Q1ZFLTIwMTgtMTIyMDcKUGF0Y2gtbWFpbmxpbmU6IE5vLCBzdGlsbCB1bmRlciBkaXNjdXNz aW9uCgpXaXRoIHNvbWUgSW50ZWwgcHJvY2Vzc29ycywgcHV0dGluZyB0aGUgc2FtZSB2aXJ0 dWFsIGFkZHJlc3MgaW4gdGhlIFRMQgphcyBib3RoIGEgNCBLaUIgYW5kIDIgTWlCIHBhZ2Ug Y2FuIGNvbmZ1c2UgdGhlIGluc3RydWN0aW9uIGZldGNoIHVuaXQKYW5kIGNhdXNlIHRoZSBw cm9jZXNzb3IgdG8gaXNzdWUgYSBtYWNoaW5lIGNoZWNrLiAgVW5mb3J0dW5hdGVseSBpZiBF UFQKcGFnZSB0YWJsZXMgdXNlIGh1Z2UgcGFnZXMsIGl0IHBvc3NpYmxlIGZvciBhIG1hbGlj aW91cyBndWVzdCB0byBjYXVzZQp0aGlzIHNpdHVhdGlvbi4KClRoaXMgcGF0Y2ggYWRkcyBh IGtub2IgdG8gbWFyayBodWdlIHBhZ2VzIGFzIG5vbi1leGVjdXRhYmxlLiBXaGVuIHRoZQpu eF9odWdlX3BhZ2VzIHBhcmFtZXRlciBpcyBlbmFibGVkIChhbmQgd2UgYXJlIHVzaW5nIEVQ VCksIGFsbCBodWdlIHBhZ2VzCmFyZSBtYXJrZWQgYXMgTlguIElmIHRoZSBndWVzdCBhdHRl bXB0cyB0byBleGVjdXRlIGluIG9uZSBvZiB0aG9zZSBwYWdlcywKdGhlIHBhZ2UgaXMgYnJv a2VuIGRvd24gaW50byA0SyBwYWdlcywgd2hpY2ggYXJlIHRoZW4gbWFya2VkIGV4ZWN1dGFi bGUuCgpUaGlzIGlzIG5vdCBhbiBpc3N1ZSBmb3Igc2hhZG93IHBhZ2luZyAoZXhjZXB0IG5l c3RlZCBFUFQpLCBiZWNhdXNlIHRoZW4KdGhlIGhvc3QgaXMgaW4gY29udHJvbCBvZiBUTEIg Zmx1c2hlcyBhbmQgdGhlIHByb2JsZW1hdGljIHNpdHVhdGlvbiBjYW5ub3QKaGFwcGVuLiAg V2l0aCBuZXN0ZWQgRVBULCBhZ2FpbiB0aGUgbmVzdGVkIGd1ZXN0IGNhbiBjYXVzZSBwcm9i bGVtcyBzbyB3ZQp0cmVhdCBzaGFkb3cgYW5kIGRpcmVjdCBFUFQgdGhlIHNhbWUuCgpTaWdu ZWQtb2ZmLWJ5OiBKdW5haWQgU2hhaGlkIDxqdW5haWRzQGdvb2dsZS5jb20+ClNpZ25lZC1v ZmYtYnk6IFBhb2xvIEJvbnppbmkgPHBib256aW5pQHJlZGhhdC5jb20+CkFja2VkLWJ5OiBK b2VyZyBSb2VkZWwgPGpyb2VkZWxAc3VzZS5kZT4KLS0tCiBEb2N1bWVudGF0aW9uL2tlcm5l bC1wYXJhbWV0ZXJzLnR4dCB8ICAgMTEgKysKIGFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9o b3N0LmggICAgIHwgICAgMiAKIGFyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jICAgICAgICAg IHwgICAyMSArKysrLQogYXJjaC94ODYva3ZtL21tdS5jICAgICAgICAgICAgICAgICAgfCAg MTM1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQogYXJjaC94ODYva3Zt L3BhZ2luZ190bXBsLmggICAgICAgICAgfCAgIDI5ICsrKysrKy0KIGFyY2gveDg2L2t2bS94 ODYuYyAgICAgICAgICAgICAgICAgIHwgICAgMSAKIDYgZmlsZXMgY2hhbmdlZCwgMTgyIGlu c2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQoKLS0tIGEvRG9jdW1lbnRhdGlvbi9rZXJu ZWwtcGFyYW1ldGVycy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9rZXJuZWwtcGFyYW1ldGVy cy50eHQKQEAgLTE4NTUsNiArMTg1NSwxNyBAQCBieXRlcyByZXNwZWN0aXZlbHkuIFN1Y2gg bGV0dGVyIHN1ZmZpeGVzCiAJCQlLVk0gTU1VIGF0IHJ1bnRpbWUuCiAJCQlEZWZhdWx0IGlz IDAgKG9mZikKIAorCWt2bS5ueF9odWdlX3BhZ2VzPQorCQkJW0tWTV0gQ29udHJvbHMgdGhl IHN3IHdvcmthcm91bmQgZm9yIGJ1ZworCQkJWDg2X0JVR19JVExCX01VTFRJSElULgorCQkJ Zm9yY2UgICA6IEFsd2F5cyBkZXBsb3kgd29ya2Fyb3VuZC4KKwkJCW9mZiAgICAgOiBOZXZl ciBkZXBsb3kgd29ya2Fyb3VuZC4KKwkJCWF1dG8gICAgOiBEZXBsb3kgd29ya2Fyb3VuZCBi YXNlZCBvbiBwcmVzZW5jZSBvZgorCQkJCSAgWDg2X0JVR19JVExCX01VTFRJSElULiBEZWZh dWx0CisKKwkJCUlmIHRoZSBzdyB3b3JrYXJvdW5kIGlzIGVuYWJsZWQgZm9yIHRoZSBob3N0 LCBndWVzdHMKKwkJCW5lZWQgbm90IGVuYWJsZSBpdCBmb3IgbmVzdGVkIGd1ZXN0cy4KKwog CWt2bS1hbWQubmVzdGVkPQlbS1ZNLEFNRF0gQWxsb3cgbmVzdGVkIHZpcnR1YWxpemF0aW9u IGluIEtWTS9TVk0uCiAJCQlEZWZhdWx0IGlzIDEgKGVuYWJsZWQpCiAKLS0tIGEvYXJjaC94 ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaAorKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9r dm1faG9zdC5oCkBAIC0yMjksNiArMjI5LDcgQEAgc3RydWN0IGt2bV9tbXVfcGFnZSB7CiAJ c3RydWN0IGxpc3RfaGVhZCBsaW5rOwogCXN0cnVjdCBobGlzdF9ub2RlIGhhc2hfbGluazsK IAlib29sIHVuc3luYzsKKwlib29sIGxwYWdlX2Rpc2FsbG93ZWQ7IC8qIENhbid0IGJlIHJl cGxhY2VkIGJ5IGFuIGVxdWl2IGxhcmdlIHBhZ2UgKi8KIAogCS8qCiAJICogVGhlIGZvbGxv d2luZyB0d28gZW50cmllcyBhcmUgdXNlZCB0byBrZXkgdGhlIHNoYWRvdyBwYWdlIGluIHRo ZQpAQCAtNzYyLDYgKzc2Myw3IEBAIHN0cnVjdCBrdm1fdm1fc3RhdCB7CiAJdTMyIG1tdV91 bnN5bmM7CiAJdTMyIHJlbW90ZV90bGJfZmx1c2g7CiAJdTMyIGxwYWdlczsKKwl1MzIgbnhf bHBhZ2Vfc3BsaXRzOwogfTsKIAogc3RydWN0IGt2bV92Y3B1X3N0YXQgewotLS0gYS9hcmNo L3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYworKysgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3Mu YwpAQCAtOTc3LDYgKzk3Nyw5IEBAIHN0YXRpYyB2b2lkIHNzYl9zZWxlY3RfbWl0aWdhdGlv bih2b2lkKQogCQlwcl9pbmZvKCIlc1xuIiwgc3NiX3N0cmluZ3Nbc3NiX21vZGVdKTsKIH0K IAorYm9vbCBpdGxiX211bHRpaGl0X2t2bV9taXRpZ2F0aW9uOworRVhQT1JUX1NZTUJPTF9H UEwoaXRsYl9tdWx0aWhpdF9rdm1fbWl0aWdhdGlvbik7CisKICN1bmRlZiBwcl9mbXQKICNk ZWZpbmUgcHJfZm10KGZtdCkgICAgICJTcGVjdWxhdGlvbiBwcmN0bDogIiBmbXQKIApAQCAt MTAzOCwxMSArMTA0MSw2IEBAIHZvaWQgYXJjaF9zZWNjb21wX3NwZWNfbWl0aWdhdGUoc3Ry dWN0IHQKIH0KICNlbmRpZgogCi1zdGF0aWMgc3NpemVfdCBpdGxiX211bHRpaGl0X3Nob3df c3RhdGUoY2hhciAqYnVmKQotewotCXJldHVybiBzcHJpbnRmKGJ1ZiwgIlByb2Nlc3NvciB2 dWxuZXJhYmxlXG4iKTsKLX0KLQogc3RhdGljIHNzaXplX3QgbWRzX3Nob3dfc3RhdGUoY2hh ciAqYnVmKQogewogCWlmICh4ODZfaHlwZXIpIHsKQEAgLTExMzUsMTEgKzExMzMsMjQgQEAg c3RhdGljIHNzaXplX3QgbDF0Zl9zaG93X3N0YXRlKGNoYXIgKmJ1ZgogCQkgICAgICAgY3B1 X3NtdF9jb250cm9sID09IENQVV9TTVRfRU5BQkxFRCA/ICJ2dWxuZXJhYmxlIiA6ICJkaXNh YmxlZCIsCiAJCSAgICAgICBsMXRmX3ZteF9zdGF0ZXNbbDF0Zl92bXhfbWl0aWdhdGlvbl0p OwogfQorCitzdGF0aWMgc3NpemVfdCBpdGxiX211bHRpaGl0X3Nob3dfc3RhdGUoY2hhciAq YnVmKQoreworCWlmIChpdGxiX211bHRpaGl0X2t2bV9taXRpZ2F0aW9uKQorCQlyZXR1cm4g c3ByaW50ZihidWYsICJLVk06IE1pdGlnYXRpb246IFNwbGl0IGh1Z2UgcGFnZXNcbiIpOwor CWVsc2UKKwkJcmV0dXJuIHNwcmludGYoYnVmLCAiS1ZNOiBWdWxuZXJhYmxlXG4iKTsKK30K ICNlbHNlCiBzdGF0aWMgc3NpemVfdCBsMXRmX3Nob3dfc3RhdGUoY2hhciAqYnVmKQogewog CXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVzXG4iLCBMMVRGX0RFRkFVTFRfTVNHKTsKIH0KKwor c3RhdGljIHNzaXplX3QgaXRsYl9tdWx0aWhpdF9zaG93X3N0YXRlKGNoYXIgKmJ1ZikKK3sK KwlyZXR1cm4gc3ByaW50ZihidWYsICJQcm9jZXNzb3IgdnVsbmVyYWJsZVxuIik7Cit9CiAj ZW5kaWYKIAogc3RhdGljIHNzaXplX3QgY3B1X3Nob3dfY29tbW9uKHN0cnVjdCBkZXZpY2Ug KmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCi0tLSBhL2FyY2gveDg2L2t2 bS9tbXUuYworKysgYi9hcmNoL3g4Ni9rdm0vbW11LmMKQEAgLTQyLDYgKzQyLDIwIEBACiAj aW5jbHVkZSA8YXNtL2lvLmg+CiAjaW5jbHVkZSA8YXNtL3ZteC5oPgogCitleHRlcm4gYm9v bCBpdGxiX211bHRpaGl0X2t2bV9taXRpZ2F0aW9uOworCitzdGF0aWMgaW50IF9fcmVhZF9t b3N0bHkgbnhfaHVnZV9wYWdlcyA9IC0xOworCitzdGF0aWMgaW50IHNldF9ueF9odWdlX3Bh Z2VzKGNvbnN0IGNoYXIgKnZhbCwgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbSAqa3ApOwor CitzdGF0aWMgc3RydWN0IGtlcm5lbF9wYXJhbV9vcHMgbnhfaHVnZV9wYWdlc19vcHMgPSB7 CisJLnNldCA9IHNldF9ueF9odWdlX3BhZ2VzLAorCS5nZXQgPSBwYXJhbV9nZXRfYm9vbCwK K307CisKK21vZHVsZV9wYXJhbV9jYihueF9odWdlX3BhZ2VzLCAmbnhfaHVnZV9wYWdlc19v cHMsICZueF9odWdlX3BhZ2VzLCAwNjQ0KTsKK19fTU9EVUxFX1BBUk1fVFlQRShueF9odWdl X3BhZ2VzLCAiYm9vbCIpOworCiAvKgogICogV2hlbiBzZXR0aW5nIHRoaXMgdmFyaWFibGUg dG8gdHJ1ZSBpdCBlbmFibGVzIFR3by1EaW1lbnNpb25hbC1QYWdpbmcKICAqIHdoZXJlIHRo ZSBoYXJkd2FyZSB3YWxrcyAyIHBhZ2UgdGFibGVzOgpAQCAtMTk5LDYgKzIxMywxMSBAQCB2 b2lkIGt2bV9tbXVfc2V0X21taW9fc3B0ZV9tYXNrKHU2NCBtbWlvCiB9CiBFWFBPUlRfU1lN Qk9MX0dQTChrdm1fbW11X3NldF9tbWlvX3NwdGVfbWFzayk7CiAKK3N0YXRpYyBib29sIGlz X254X2h1Z2VfcGFnZV9lbmFibGVkKHZvaWQpCit7CisJcmV0dXJuIFJFQURfT05DRShueF9o dWdlX3BhZ2VzKTsKK30KKwogLyoKICAqIHRoZSBsb3cgYml0IG9mIHRoZSBnZW5lcmF0aW9u IG51bWJlciBpcyBhbHdheXMgcHJlc3VtZWQgdG8gYmUgemVyby4KICAqIFRoaXMgZGlzYWJs ZXMgbW1pbyBjYWNoaW5nIGR1cmluZyBtZW1zbG90IHVwZGF0ZXMuICBUaGUgY29uY2VwdCBp cwpAQCAtODQ0LDYgKzg2MywxNSBAQCBzdGF0aWMgdm9pZCBhY2NvdW50X3NoYWRvd2VkKHN0 cnVjdCBrdm0KIAlrdm0tPmFyY2guaW5kaXJlY3Rfc2hhZG93X3BhZ2VzKys7CiB9CiAKK3N0 YXRpYyB2b2lkIGFjY291bnRfaHVnZV9ueF9wYWdlKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0 IGt2bV9tbXVfcGFnZSAqc3ApCit7CisJaWYgKHNwLT5scGFnZV9kaXNhbGxvd2VkKQorCQly ZXR1cm47CisKKwkrK2t2bS0+c3RhdC5ueF9scGFnZV9zcGxpdHM7CisJc3AtPmxwYWdlX2Rp c2FsbG93ZWQgPSB0cnVlOworfQorCiBzdGF0aWMgdm9pZCB1bmFjY291bnRfc2hhZG93ZWQo c3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX21tdV9wYWdlICpzcCkKIHsKIAlzdHJ1Y3Qg a3ZtX21lbXNsb3RzICpzbG90czsKQEAgLTg1Nyw2ICs4ODUsMTIgQEAgc3RhdGljIHZvaWQg dW5hY2NvdW50X3NoYWRvd2VkKHN0cnVjdCBrdgogCWt2bS0+YXJjaC5pbmRpcmVjdF9zaGFk b3dfcGFnZXMtLTsKIH0KIAorc3RhdGljIHZvaWQgdW5hY2NvdW50X2h1Z2VfbnhfcGFnZShz dHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fbW11X3BhZ2UgKnNwKQoreworCS0ta3ZtLT5z dGF0Lm54X2xwYWdlX3NwbGl0czsKKwlzcC0+bHBhZ2VfZGlzYWxsb3dlZCA9IGZhbHNlOwor fQorCiBzdGF0aWMgYm9vbCBfX21tdV9nZm5fbHBhZ2VfaXNfZGlzYWxsb3dlZChnZm5fdCBn Zm4sIGludCBsZXZlbCwKIAkJCQkJICBzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICpzbG90KQog ewpAQCAtMjM3Niw2ICsyNDEwLDkgQEAgc3RhdGljIGludCBrdm1fbW11X3ByZXBhcmVfemFw X3BhZ2Uoc3RydQogCQkJa3ZtX3JlbG9hZF9yZW1vdGVfbW11cyhrdm0pOwogCX0KIAorCWlm IChzcC0+bHBhZ2VfZGlzYWxsb3dlZCkKKwkJdW5hY2NvdW50X2h1Z2VfbnhfcGFnZShrdm0s IHNwKTsKKwogCXNwLT5yb2xlLmludmFsaWQgPSAxOwogCXJldHVybiByZXQ7CiB9CkBAIC0y NTMzLDYgKzI1NzAsMTEgQEAgc3RhdGljIGludCBzZXRfc3B0ZShzdHJ1Y3Qga3ZtX3ZjcHUg KnZjcAogCWlmICghc3BlY3VsYXRpdmUpCiAJCXNwdGUgfD0gc2hhZG93X2FjY2Vzc2VkX21h c2s7CiAKKwlpZiAobGV2ZWwgPiBQVF9QQUdFX1RBQkxFX0xFVkVMICYmIChwdGVfYWNjZXNz ICYgQUNDX0VYRUNfTUFTSykgJiYKKwkgICAgaXNfbnhfaHVnZV9wYWdlX2VuYWJsZWQoKSkg eworCQlwdGVfYWNjZXNzICY9IH5BQ0NfRVhFQ19NQVNLOworCX0KKwogCWlmIChwdGVfYWNj ZXNzICYgQUNDX0VYRUNfTUFTSykKIAkJc3B0ZSB8PSBzaGFkb3dfeF9tYXNrOwogCWVsc2UK QEAgLTI3NDAsOSArMjc4MiwzMiBAQCBzdGF0aWMgdm9pZCBkaXJlY3RfcHRlX3ByZWZldGNo KHN0cnVjdCBrCiAJX19kaXJlY3RfcHRlX3ByZWZldGNoKHZjcHUsIHNwLCBzcHRlcCk7CiB9 CiAKK3N0YXRpYyB2b2lkIGRpc2FsbG93ZWRfaHVnZXBhZ2VfYWRqdXN0KHN0cnVjdCBrdm1f c2hhZG93X3dhbGtfaXRlcmF0b3IgaXQsCisJCQkJICAgICAgIGdmbl90IGdmbiwga3ZtX3Bm bl90ICpwZm5wLCBpbnQgKmxldmVscCkKK3sKKwlpbnQgbGV2ZWwgPSAqbGV2ZWxwOworCXU2 NCBzcHRlID0gKml0LnNwdGVwOworCisJaWYgKGl0LmxldmVsID09IGxldmVsICYmIGxldmVs ID4gUFRfUEFHRV9UQUJMRV9MRVZFTCAmJgorCSAgICBpc19ueF9odWdlX3BhZ2VfZW5hYmxl ZCgpICYmCisJICAgIGlzX3NoYWRvd19wcmVzZW50X3B0ZShzcHRlKSAmJgorCSAgICAhaXNf bGFyZ2VfcHRlKHNwdGUpKSB7CisJCS8qCisJCSAqIEEgc21hbGwgU1BURSBleGlzdHMgZm9y IHRoaXMgcGZuLCBidXQgRk5BTUUoZmV0Y2gpCisJCSAqIGFuZCBfX2RpcmVjdF9tYXAgd291 bGQgbGlrZSB0byBjcmVhdGUgYSBsYXJnZSBQVEUKKwkJICogaW5zdGVhZDoganVzdCBmb3Jj ZSB0aGVtIHRvIGdvIGRvd24gYW5vdGhlciBsZXZlbCwKKwkJICogcGF0Y2hpbmcgYmFjayBm b3IgdGhlbSBpbnRvIHBmbiB0aGUgbmV4dCA5IGJpdHMgb2YKKwkJICogdGhlIGFkZHJlc3Mu CisJCSAqLworCQl1NjQgcGFnZV9tYXNrID0gS1ZNX1BBR0VTX1BFUl9IUEFHRShsZXZlbCkg LSBLVk1fUEFHRVNfUEVSX0hQQUdFKGxldmVsIC0gMSk7CisJCSpwZm5wIHw9IGdmbiAmIHBh Z2VfbWFzazsKKwkJKCpsZXZlbHApLS07CisJfQorfQorCiBzdGF0aWMgaW50IF9fZGlyZWN0 X21hcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IGdwYSwgaW50IHdyaXRlLAogCQkJ aW50IG1hcF93cml0YWJsZSwgaW50IGxldmVsLCBrdm1fcGZuX3QgcGZuLAotCQkJYm9vbCBw cmVmYXVsdCkKKwkJCWJvb2wgcHJlZmF1bHQsIGJvb2wgbHBhZ2VfZGlzYWxsb3dlZCkKIHsK IAlzdHJ1Y3Qga3ZtX3NoYWRvd193YWxrX2l0ZXJhdG9yIGl0OwogCXN0cnVjdCBrdm1fbW11 X3BhZ2UgKnNwOwpAQCAtMjc1NSw2ICsyODIwLDEyIEBAIHN0YXRpYyBpbnQgX19kaXJlY3Rf bWFwKHN0cnVjdCBrdm1fdmNwdQogCiAJdHJhY2Vfa3ZtX21tdV9zcHRlX3JlcXVlc3RlZChn cGEsIGxldmVsLCBwZm4pOwogCWZvcl9lYWNoX3NoYWRvd19lbnRyeSh2Y3B1LCBncGEsIGl0 KSB7CisJCS8qCisJCSAqIFdlIGNhbm5vdCBvdmVyd3JpdGUgZXhpc3RpbmcgcGFnZSB0YWJs ZXMgd2l0aCBhbiBOWAorCQkgKiBsYXJnZSBwYWdlLCBhcyB0aGUgbGVhZiBjb3VsZCBiZSBl eGVjdXRhYmxlLgorCQkgKi8KKwkJZGlzYWxsb3dlZF9odWdlcGFnZV9hZGp1c3QoaXQsIGdm biwgJnBmbiwgJmxldmVsKTsKKwogCQliYXNlX2dmbiA9IGdmbiAmIH4oS1ZNX1BBR0VTX1BF Ul9IUEFHRShpdC5sZXZlbCkgLSAxKTsKIAkJaWYgKGl0LmxldmVsID09IGxldmVsKQogCQkJ YnJlYWs7CkBAIC0yNzY1LDYgKzI4MzYsOCBAQCBzdGF0aWMgaW50IF9fZGlyZWN0X21hcChz dHJ1Y3Qga3ZtX3ZjcHUKIAkJCQkJICAgICAgaXQubGV2ZWwgLSAxLCB0cnVlLCBBQ0NfQUxM KTsKIAogCQkJbGlua19zaGFkb3dfcGFnZSh2Y3B1LCBpdC5zcHRlcCwgc3ApOworCQkJaWYg KGxwYWdlX2Rpc2FsbG93ZWQpCisJCQkJYWNjb3VudF9odWdlX254X3BhZ2UodmNwdS0+a3Zt LCBzcCk7CiAJCX0KIAl9CiAJcmV0ID0gbW11X3NldF9zcHRlKHZjcHUsIGl0LnNwdGVwLCBB Q0NfQUxMLApAQCAtMzAwOCwxMSArMzA4MSwxNCBAQCBzdGF0aWMgaW50IG5vbnBhZ2luZ19t YXAoc3RydWN0IGt2bV92Y3B1CiB7CiAJaW50IHI7CiAJaW50IGxldmVsOwotCWJvb2wgZm9y Y2VfcHRfbGV2ZWwgPSBmYWxzZTsKKwlib29sIGZvcmNlX3B0X2xldmVsOwogCWt2bV9wZm5f dCBwZm47CiAJdW5zaWduZWQgbG9uZyBtbXVfc2VxOwogCWJvb2wgbWFwX3dyaXRhYmxlLCB3 cml0ZSA9IGVycm9yX2NvZGUgJiBQRkVSUl9XUklURV9NQVNLOworCWJvb2wgbHBhZ2VfZGlz YWxsb3dlZCA9IChlcnJvcl9jb2RlICYgUEZFUlJfRkVUQ0hfTUFTSykgJiYKKwkJCQlpc19u eF9odWdlX3BhZ2VfZW5hYmxlZCgpOwogCisJZm9yY2VfcHRfbGV2ZWwgPSBscGFnZV9kaXNh bGxvd2VkOwogCWxldmVsID0gbWFwcGluZ19sZXZlbCh2Y3B1LCBnZm4sICZmb3JjZV9wdF9s ZXZlbCk7CiAJaWYgKGxpa2VseSghZm9yY2VfcHRfbGV2ZWwpKSB7CiAJCS8qCkBAIC0zMDQ1 LDcgKzMxMjEsOCBAQCBzdGF0aWMgaW50IG5vbnBhZ2luZ19tYXAoc3RydWN0IGt2bV92Y3B1 CiAJbWFrZV9tbXVfcGFnZXNfYXZhaWxhYmxlKHZjcHUpOwogCWlmIChsaWtlbHkoIWZvcmNl X3B0X2xldmVsKSkKIAkJdHJhbnNwYXJlbnRfaHVnZXBhZ2VfYWRqdXN0KHZjcHUsIGdmbiwg JnBmbiwgJmxldmVsKTsKLQlyID0gX19kaXJlY3RfbWFwKHZjcHUsIHYsIHdyaXRlLCBtYXBf d3JpdGFibGUsIGxldmVsLCBwZm4sIHByZWZhdWx0KTsKKwlyID0gX19kaXJlY3RfbWFwKHZj cHUsIHYsIHdyaXRlLCBtYXBfd3JpdGFibGUsIGxldmVsLCBwZm4sCisJCQkgcHJlZmF1bHQs IGZhbHNlKTsKIAogb3V0X3VubG9jazoKIAlzcGluX3VubG9jaygmdmNwdS0+a3ZtLT5tbXVf bG9jayk7CkBAIC0zNTAzLDYgKzM1ODAsOCBAQCBzdGF0aWMgaW50IHRkcF9wYWdlX2ZhdWx0 KHN0cnVjdCBrdm1fdmNwCiAJdW5zaWduZWQgbG9uZyBtbXVfc2VxOwogCWludCB3cml0ZSA9 IGVycm9yX2NvZGUgJiBQRkVSUl9XUklURV9NQVNLOwogCWJvb2wgbWFwX3dyaXRhYmxlOwor CWJvb2wgbHBhZ2VfZGlzYWxsb3dlZCA9IChlcnJvcl9jb2RlICYgUEZFUlJfRkVUQ0hfTUFT SykgJiYKKwkJCQlpc19ueF9odWdlX3BhZ2VfZW5hYmxlZCgpOwogCiAJTU1VX1dBUk5fT04o IVZBTElEX1BBR0UodmNwdS0+YXJjaC5tbXUucm9vdF9ocGEpKTsKIApAQCAtMzUxMCw4ICsz NTg5LDkgQEAgc3RhdGljIGludCB0ZHBfcGFnZV9mYXVsdChzdHJ1Y3Qga3ZtX3ZjcAogCWlm IChyKQogCQlyZXR1cm4gcjsKIAotCWZvcmNlX3B0X2xldmVsID0gIWNoZWNrX2h1Z2VwYWdl X2NhY2hlX2NvbnNpc3RlbmN5KHZjcHUsIGdmbiwKLQkJCQkJCQkgICBQVF9ESVJFQ1RPUllf TEVWRUwpOworCWZvcmNlX3B0X2xldmVsID0KKwkJbHBhZ2VfZGlzYWxsb3dlZCB8fAorCQkh Y2hlY2tfaHVnZXBhZ2VfY2FjaGVfY29uc2lzdGVuY3kodmNwdSwgZ2ZuLCBQVF9ESVJFQ1RP UllfTEVWRUwpOwogCWxldmVsID0gbWFwcGluZ19sZXZlbCh2Y3B1LCBnZm4sICZmb3JjZV9w dF9sZXZlbCk7CiAJaWYgKGxpa2VseSghZm9yY2VfcHRfbGV2ZWwpKSB7CiAJCWlmIChsZXZl bCA+IFBUX0RJUkVDVE9SWV9MRVZFTCAmJgpAQCAtMzUzOSw3ICszNjE5LDggQEAgc3RhdGlj IGludCB0ZHBfcGFnZV9mYXVsdChzdHJ1Y3Qga3ZtX3ZjcAogCW1ha2VfbW11X3BhZ2VzX2F2 YWlsYWJsZSh2Y3B1KTsKIAlpZiAobGlrZWx5KCFmb3JjZV9wdF9sZXZlbCkpCiAJCXRyYW5z cGFyZW50X2h1Z2VwYWdlX2FkanVzdCh2Y3B1LCBnZm4sICZwZm4sICZsZXZlbCk7Ci0JciA9 IF9fZGlyZWN0X21hcCh2Y3B1LCBncGEsIHdyaXRlLCBtYXBfd3JpdGFibGUsIGxldmVsLCBw Zm4sIHByZWZhdWx0KTsKKwlyID0gX19kaXJlY3RfbWFwKHZjcHUsIGdwYSwgd3JpdGUsIG1h cF93cml0YWJsZSwgbGV2ZWwsIHBmbiwKKwkJCSBwcmVmYXVsdCwgbHBhZ2VfZGlzYWxsb3dl ZCk7CiBvdXRfdW5sb2NrOgogCXNwaW5fdW5sb2NrKCZ2Y3B1LT5rdm0tPm1tdV9sb2NrKTsK IAlrdm1fcmVsZWFzZV9wZm5fY2xlYW4ocGZuKTsKQEAgLTQ5OTIsOCArNTA3Myw1MCBAQCBz dGF0aWMgdm9pZCBtbXVfZGVzdHJveV9jYWNoZXModm9pZCkKIAkJa21lbV9jYWNoZV9kZXN0 cm95KG1tdV9wYWdlX2hlYWRlcl9jYWNoZSk7CiB9CiAKK3N0YXRpYyB2b2lkIF9fc2V0X254 X2h1Z2VfcGFnZXMoYm9vbCB2YWwpCit7CisJbnhfaHVnZV9wYWdlcyA9IGl0bGJfbXVsdGlo aXRfa3ZtX21pdGlnYXRpb24gPSB2YWw7Cit9CisKK3N0YXRpYyBpbnQgc2V0X254X2h1Z2Vf cGFnZXMoY29uc3QgY2hhciAqdmFsLCBjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtICprcCkK K3sKKwlib29sIG9sZF92YWwgPSBueF9odWdlX3BhZ2VzOworCWJvb2wgbmV3X3ZhbDsKKwor CS8qIEluICJhdXRvIiBtb2RlIGRlcGxveSB3b3JrYXJvdW5kIG9ubHkgaWYgQ1BVIGhhcyB0 aGUgYnVnLiAqLworCWlmIChzeXNmc19zdHJlcSh2YWwsICJvZmYiKSkKKwkJbmV3X3ZhbCA9 IDA7CisJZWxzZSBpZiAoc3lzZnNfc3RyZXEodmFsLCAiZm9yY2UiKSkKKwkJbmV3X3ZhbCA9 IDE7CisJZWxzZSBpZiAoc3lzZnNfc3RyZXEodmFsLCAiYXV0byIpKQorCQluZXdfdmFsID0g Ym9vdF9jcHVfaGFzX2J1ZyhYODZfQlVHX0lUTEJfTVVMVElISVQpOworCWVsc2UgaWYgKHN0 cnRvYm9vbCh2YWwsICZuZXdfdmFsKSA8IDApCisJCXJldHVybiAtRUlOVkFMOworCisJX19z ZXRfbnhfaHVnZV9wYWdlcyhuZXdfdmFsKTsKKworCWlmIChuZXdfdmFsICE9IG9sZF92YWwp IHsKKwkJc3RydWN0IGt2bSAqa3ZtOworCQlpbnQgaWR4OworCisJCW11dGV4X2xvY2soJmt2 bV9sb2NrKTsKKworCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGt2bSwgJnZtX2xpc3QsIHZtX2xp c3QpIHsKKwkJCWlkeCA9IHNyY3VfcmVhZF9sb2NrKCZrdm0tPnNyY3UpOworCQkJa3ZtX21t dV9pbnZhbGlkYXRlX3phcF9hbGxfcGFnZXMoa3ZtKTsKKwkJCXNyY3VfcmVhZF91bmxvY2so Jmt2bS0+c3JjdSwgaWR4KTsKKwkJfQorCQltdXRleF91bmxvY2soJmt2bV9sb2NrKTsKKwl9 CisKKwlyZXR1cm4gMDsKK30KKwogaW50IGt2bV9tbXVfbW9kdWxlX2luaXQodm9pZCkKIHsK KwlpZiAobnhfaHVnZV9wYWdlcyA9PSAtMSkKKwkJX19zZXRfbnhfaHVnZV9wYWdlcyhib290 X2NwdV9oYXNfYnVnKFg4Nl9CVUdfSVRMQl9NVUxUSUhJVCkpOworCiAJcHRlX2xpc3RfZGVz Y19jYWNoZSA9IGttZW1fY2FjaGVfY3JlYXRlKCJwdGVfbGlzdF9kZXNjIiwKIAkJCQkJICAg IHNpemVvZihzdHJ1Y3QgcHRlX2xpc3RfZGVzYyksCiAJCQkJCSAgICAwLCAwLCBOVUxMKTsK LS0tIGEvYXJjaC94ODYva3ZtL3BhZ2luZ190bXBsLmgKKysrIGIvYXJjaC94ODYva3ZtL3Bh Z2luZ190bXBsLmgKQEAgLTU2NCwxMyArNTY0LDE0IEBAIHN0YXRpYyB2b2lkIEZOQU1FKHB0 ZV9wcmVmZXRjaCkoc3RydWN0IGsKIHN0YXRpYyBpbnQgRk5BTUUoZmV0Y2gpKHN0cnVjdCBr dm1fdmNwdSAqdmNwdSwgZ3ZhX3QgYWRkciwKIAkJCSBzdHJ1Y3QgZ3Vlc3Rfd2Fsa2VyICpn dywKIAkJCSBpbnQgd3JpdGVfZmF1bHQsIGludCBobGV2ZWwsCi0JCQkga3ZtX3Bmbl90IHBm biwgYm9vbCBtYXBfd3JpdGFibGUsIGJvb2wgcHJlZmF1bHQpCisJCQkga3ZtX3Bmbl90IHBm biwgYm9vbCBtYXBfd3JpdGFibGUsIGJvb2wgcHJlZmF1bHQsCisJCQkgYm9vbCBscGFnZV9k aXNhbGxvd2VkKQogewogCXN0cnVjdCBrdm1fbW11X3BhZ2UgKnNwID0gTlVMTDsKIAlzdHJ1 Y3Qga3ZtX3NoYWRvd193YWxrX2l0ZXJhdG9yIGl0OwogCXVuc2lnbmVkIGRpcmVjdF9hY2Nl c3MsIGFjY2VzcyA9IGd3LT5wdF9hY2Nlc3M7CiAJaW50IHRvcF9sZXZlbCwgcmV0OwotCWdm bl90IGJhc2VfZ2ZuOworCWdmbl90IGdmbiwgYmFzZV9nZm47CiAKIAlkaXJlY3RfYWNjZXNz ID0gZ3ctPnB0ZV9hY2Nlc3M7CiAKQEAgLTYxNSwxMyArNjE2LDI1IEBAIHN0YXRpYyBpbnQg Rk5BTUUoZmV0Y2gpKHN0cnVjdCBrdm1fdmNwdQogCQkJbGlua19zaGFkb3dfcGFnZSh2Y3B1 LCBpdC5zcHRlcCwgc3ApOwogCX0KIAotCWJhc2VfZ2ZuID0gZ3ctPmdmbjsKKwkvKgorCSAq IEZOQU1FKHBhZ2VfZmF1bHQpIG1pZ2h0IGhhdmUgY2xvYmJlcmVkIHRoZSBib3R0b20gYml0 cyBvZgorCSAqIGd3LT5nZm4sIHJlc3RvcmUgdGhlbSBmcm9tIHRoZSB2aXJ0dWFsIGFkZHJl c3MuCisJICovCisJZ2ZuID0gZ3ctPmdmbiB8ICgoYWRkciAmIFBUX0xWTF9PRkZTRVRfTUFT Syhndy0+bGV2ZWwpKSA+PiBQQUdFX1NISUZUKTsKKwliYXNlX2dmbiA9IGdmbjsKIAogCXRy YWNlX2t2bV9tbXVfc3B0ZV9yZXF1ZXN0ZWQoYWRkciwgZ3ctPmxldmVsLCBwZm4pOwogCiAJ Zm9yICg7IHNoYWRvd193YWxrX29rYXkoJml0KTsgc2hhZG93X3dhbGtfbmV4dCgmaXQpKSB7 CiAJCWNsZWFyX3NwX3dyaXRlX2Zsb29kaW5nX2NvdW50KGl0LnNwdGVwKTsKLQkJYmFzZV9n Zm4gPSBndy0+Z2ZuICYgfihLVk1fUEFHRVNfUEVSX0hQQUdFKGl0LmxldmVsKSAtIDEpOwor CisJCS8qCisJCSAqIFdlIGNhbm5vdCBvdmVyd3JpdGUgZXhpc3RpbmcgcGFnZSB0YWJsZXMg d2l0aCBhbiBOWAorCQkgKiBsYXJnZSBwYWdlLCBhcyB0aGUgbGVhZiBjb3VsZCBiZSBleGVj dXRhYmxlLgorCQkgKi8KKwkJZGlzYWxsb3dlZF9odWdlcGFnZV9hZGp1c3QoaXQsIGdmbiwg JnBmbiwgJmhsZXZlbCk7CisKKwkJYmFzZV9nZm4gPSBnZm4gJiB+KEtWTV9QQUdFU19QRVJf SFBBR0UoaXQubGV2ZWwpIC0gMSk7CiAJCWlmIChpdC5sZXZlbCA9PSBobGV2ZWwpCiAJCQli cmVhazsKIApAQCAtNjMzLDYgKzY0Niw4IEBAIHN0YXRpYyBpbnQgRk5BTUUoZmV0Y2gpKHN0 cnVjdCBrdm1fdmNwdQogCQkJc3AgPSBrdm1fbW11X2dldF9wYWdlKHZjcHUsIGJhc2VfZ2Zu LCBhZGRyLAogCQkJCQkgICAgICBpdC5sZXZlbCAtIDEsIHRydWUsIGRpcmVjdF9hY2Nlc3Mp OwogCQkJbGlua19zaGFkb3dfcGFnZSh2Y3B1LCBpdC5zcHRlcCwgc3ApOworCQkJaWYgKGxw YWdlX2Rpc2FsbG93ZWQpCisJCQkJYWNjb3VudF9odWdlX254X3BhZ2UodmNwdS0+a3ZtLCBz cCk7CiAJCX0KIAl9CiAKQEAgLTcwOSw5ICs3MjQsMTEgQEAgc3RhdGljIGludCBGTkFNRShw YWdlX2ZhdWx0KShzdHJ1Y3Qga3ZtXwogCWludCByOwogCWt2bV9wZm5fdCBwZm47CiAJaW50 IGxldmVsID0gUFRfUEFHRV9UQUJMRV9MRVZFTDsKLQlib29sIGZvcmNlX3B0X2xldmVsID0g ZmFsc2U7CiAJdW5zaWduZWQgbG9uZyBtbXVfc2VxOwogCWJvb2wgbWFwX3dyaXRhYmxlLCBp c19zZWxmX2NoYW5nZV9tYXBwaW5nOworCWJvb2wgbHBhZ2VfZGlzYWxsb3dlZCA9IChlcnJv cl9jb2RlICYgUEZFUlJfRkVUQ0hfTUFTSykgJiYKKwkJCQlpc19ueF9odWdlX3BhZ2VfZW5h YmxlZCgpOworCWJvb2wgZm9yY2VfcHRfbGV2ZWwgPSBscGFnZV9kaXNhbGxvd2VkOwogCiAJ cGdwcmludGsoIiVzOiBhZGRyICVseCBlcnIgJXhcbiIsIF9fZnVuY19fLCBhZGRyLCBlcnJv cl9jb2RlKTsKIApAQCAtNzk2LDcgKzgxMyw3IEBAIHN0YXRpYyBpbnQgRk5BTUUocGFnZV9m YXVsdCkoc3RydWN0IGt2bV8KIAlpZiAoIWZvcmNlX3B0X2xldmVsKQogCQl0cmFuc3BhcmVu dF9odWdlcGFnZV9hZGp1c3QodmNwdSwgd2Fsa2VyLmdmbiwgJnBmbiwgJmxldmVsKTsKIAly ID0gRk5BTUUoZmV0Y2gpKHZjcHUsIGFkZHIsICZ3YWxrZXIsIHdyaXRlX2ZhdWx0LAotCQkJ IGxldmVsLCBwZm4sIG1hcF93cml0YWJsZSwgcHJlZmF1bHQpOworCQkJIGxldmVsLCBwZm4s IG1hcF93cml0YWJsZSwgcHJlZmF1bHQsIGxwYWdlX2Rpc2FsbG93ZWQpOwogCWt2bV9tbXVf YXVkaXQodmNwdSwgQVVESVRfUE9TVF9QQUdFX0ZBVUxUKTsKIAogb3V0X3VubG9jazoKLS0t IGEvYXJjaC94ODYva3ZtL3g4Ni5jCisrKyBiL2FyY2gveDg2L2t2bS94ODYuYwpAQCAtMTg3 LDYgKzE4Nyw3IEBAIHN0cnVjdCBrdm1fc3RhdHNfZGVidWdmc19pdGVtIGRlYnVnZnNfZW4K IAl7ICJtbXVfdW5zeW5jIiwgVk1fU1RBVChtbXVfdW5zeW5jKSB9LAogCXsgInJlbW90ZV90 bGJfZmx1c2giLCBWTV9TVEFUKHJlbW90ZV90bGJfZmx1c2gpIH0sCiAJeyAibGFyZ2VwYWdl cyIsIFZNX1NUQVQobHBhZ2VzLCAubW9kZSA9IDA0NDQpIH0sCisJeyAibnhfbGFyZ2VwYWdl c19zcGxpdHRlZCIsIFZNX1NUQVQobnhfbHBhZ2Vfc3BsaXRzLCAubW9kZSA9IDA0NDQpIH0s CiAJeyBOVUxMIH0KIH07CiAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAALi9QYXhIZWFkZXJzLjM2MDIyLzAwMDQta3ZtLUFkZC1oZWxwZXItZnVu Y3Rpb24tZm9yLWNyZWF0aW5nLVZNLXdvcmtlci5wYXRjaAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAADAwMDA2NDQAMDAwMDAwMAAwMDAwMDAwADAwMDAwMDAwMTMyADEzNTU2MzEzNzIwADAy MzE0MwAgeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1 c3RhcgAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzMCBtdGltZT0xNTcyNDQ0 MTEyLjgzNjQ2OTAzMQozMCBhdGltZT0xNTcyNDQ0MTEyLjgzNjQ2OTAzMQozMCBjdGltZT0x NTcyNDQ0MTEyLjgzNjQ2OTAzMQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAADAwMDQta3ZtLUFkZC1oZWxwZXItZnVuY3Rpb24tZm9yLWNyZWF0aW5nLVZN LXdvcmtlci5wYXRjaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAwMDAwNjQ0ADAwMjUzNzcAMDAwMDE0NAAwMDAwMDAwNjc3MQAxMzU1NjMxMzcyMAAwMjQw MDIAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0 YXIAMDBtaG9ja28AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzZXJzAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARnJvbTogSnVuYWlkIFNoYWhp ZCA8anVuYWlkc0Bnb29nbGUuY29tPgpTdWJqZWN0OiBbUEFUQ0ggNC81XSBrdm06IEFkZCBo ZWxwZXIgZnVuY3Rpb24gZm9yIGNyZWF0aW5nIFZNIHdvcmtlcgpSZWZlcmVuY2VzOiBic2Mj MTExNzY2NSwgQ1ZFLTIwMTgtMTIyMDcKUGF0Y2gtbWFpbmxpbmU6IE5vLCBzdGlsbCB1bmRl ciBkaXNjdXNzaW9uCgpUaGlzIGFkZHMgYSBmdW5jdGlvbiB0byBjcmVhdGUgYSBrZXJuZWwg dGhyZWFkIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuClZNLiBJbiBwYXJ0aWN1bGFyLCBpdCBl bnN1cmVzIHRoYXQgdGhlIHdvcmtlciB0aHJlYWQgaW5oZXJpdHMgdGhlCnByaW9yaXR5IGFu ZCBjZ3JvdXBzIG9mIHRoZSBjYWxsaW5nIHRocmVhZC4KClNpZ25lZC1vZmYtYnk6IEp1bmFp ZCBTaGFoaWQgPGp1bmFpZHNAZ29vZ2xlLmNvbT4KU2lnbmVkLW9mZi1ieTogUGFvbG8gQm9u emluaSA8cGJvbnppbmlAcmVkaGF0LmNvbT4KQWNrZWQtYnk6IEpvZXJnIFJvZWRlbCA8anJv ZWRlbEBzdXNlLmRlPgotLS0KIGluY2x1ZGUvbGludXgva3ZtX2hvc3QuaCB8ICA2ICsrKysK IHZpcnQva3ZtL2t2bV9tYWluLmMgICAgICB8IDg0ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCA5MCBpbnNlcnRp b25zKCspCgotLS0gYS9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgKKysrIGIvaW5jbHVkZS9s aW51eC9rdm1faG9zdC5oCkBAIC0xMjQwLDQgKzEyNDAsMTAgQEAgaW50IGt2bV9hcmNoX3Vw ZGF0ZV9pcnFmZF9yb3V0aW5nKHN0cnVjdAogCQkJCSAgdWludDMyX3QgZ3Vlc3RfaXJxLCBi b29sIHNldCk7CiAjZW5kaWYgLyogQ09ORklHX0hBVkVfS1ZNX0lSUV9CWVBBU1MgKi8KIAor dHlwZWRlZiBpbnQgKCprdm1fdm1fdGhyZWFkX2ZuX3QpKHN0cnVjdCBrdm0gKmt2bSwgdWlu dHB0cl90IGRhdGEpOworCitpbnQga3ZtX3ZtX2NyZWF0ZV93b3JrZXJfdGhyZWFkKHN0cnVj dCBrdm0gKmt2bSwga3ZtX3ZtX3RocmVhZF9mbl90IHRocmVhZF9mbiwKKwkJCQl1aW50cHRy X3QgZGF0YSwgY29uc3QgY2hhciAqbmFtZSwKKwkJCQlzdHJ1Y3QgdGFza19zdHJ1Y3QgKip0 aHJlYWRfcHRyKTsKKwogI2VuZGlmCi0tLSBhL3ZpcnQva3ZtL2t2bV9tYWluLmMKKysrIGIv dmlydC9rdm0va3ZtX21haW4uYwpAQCAtNTAsNiArNTAsNyBAQAogI2luY2x1ZGUgPGxpbnV4 L3NvcnQuaD4KICNpbmNsdWRlIDxsaW51eC9ic2VhcmNoLmg+CiAjaW5jbHVkZSA8bGludXgv c3lzY2FsbHMuaD4KKyNpbmNsdWRlIDxsaW51eC9rdGhyZWFkLmg+CiAKICNpbmNsdWRlIDxh c20vcHJvY2Vzc29yLmg+CiAjaW5jbHVkZSA8YXNtL2lvLmg+CkBAIC0zODc3LDMgKzM4Nzgs ODYgQEAgdm9pZCBrdm1fZXhpdCh2b2lkKQogCWt2bV92ZmlvX29wc19leGl0KCk7CiB9CiBF WFBPUlRfU1lNQk9MX0dQTChrdm1fZXhpdCk7CisKK3N0cnVjdCBrdm1fdm1fd29ya2VyX3Ro cmVhZF9jb250ZXh0IHsKKwlzdHJ1Y3Qga3ZtICprdm07CisJc3RydWN0IHRhc2tfc3RydWN0 ICpwYXJlbnQ7CisJc3RydWN0IGNvbXBsZXRpb24gaW5pdF9kb25lOworCWt2bV92bV90aHJl YWRfZm5fdCB0aHJlYWRfZm47CisJdWludHB0cl90IGRhdGE7CisJaW50IGVycjsKK307CisK K3N0YXRpYyBpbnQga3ZtX3ZtX3dvcmtlcl90aHJlYWQodm9pZCAqY29udGV4dCkKK3sKKwkv KgorCSAqIFRoZSBpbml0X2NvbnRleHQgaXMgYWxsb2NhdGVkIG9uIHRoZSBzdGFjayBvZiB0 aGUgcGFyZW50IHRocmVhZCwgc28KKwkgKiB3ZSBoYXZlIHRvIGxvY2FsbHkgY29weSBhbnl0 aGluZyB0aGF0IGlzIG5lZWRlZCBiZXlvbmQgaW5pdGlhbGl6YXRpb24KKwkgKi8KKwlzdHJ1 Y3Qga3ZtX3ZtX3dvcmtlcl90aHJlYWRfY29udGV4dCAqaW5pdF9jb250ZXh0ID0gY29udGV4 dDsKKwlzdHJ1Y3Qga3ZtICprdm0gPSBpbml0X2NvbnRleHQtPmt2bTsKKwlrdm1fdm1fdGhy ZWFkX2ZuX3QgdGhyZWFkX2ZuID0gaW5pdF9jb250ZXh0LT50aHJlYWRfZm47CisJdWludHB0 cl90IGRhdGEgPSBpbml0X2NvbnRleHQtPmRhdGE7CisJaW50IGVycjsKKworCWVyciA9IGt0 aHJlYWRfcGFyayhjdXJyZW50KTsKKwkvKiBrdGhyZWFkX3BhcmsoY3VycmVudCkgaXMgbmV2 ZXIgc3VwcG9zZWQgdG8gcmV0dXJuIGFuIGVycm9yICovCisJV0FSTl9PTihlcnIgIT0gMCk7 CisJaWYgKGVycikKKwkJZ290byBpbml0X2NvbXBsZXRlOworCisJZXJyID0gY2dyb3VwX2F0 dGFjaF90YXNrX2FsbChpbml0X2NvbnRleHQtPnBhcmVudCwgY3VycmVudCk7CisJaWYgKGVy cikgeworCQlrdm1fZXJyKCIlczogY2dyb3VwX2F0dGFjaF90YXNrX2FsbCBmYWlsZWQgd2l0 aCBlcnIgJWRcbiIsCisJCQlfX2Z1bmNfXywgZXJyKTsKKwkJZ290byBpbml0X2NvbXBsZXRl OworCX0KKworCXNldF91c2VyX25pY2UoY3VycmVudCwgdGFza19uaWNlKGluaXRfY29udGV4 dC0+cGFyZW50KSk7CisKK2luaXRfY29tcGxldGU6CisJaW5pdF9jb250ZXh0LT5lcnIgPSBl cnI7CisJY29tcGxldGUoJmluaXRfY29udGV4dC0+aW5pdF9kb25lKTsKKwlpbml0X2NvbnRl eHQgPSBOVUxMOworCisJaWYgKGVycikKKwkJcmV0dXJuIGVycjsKKworCS8qIFdhaXQgdG8g YmUgd29rZW4gdXAgYnkgdGhlIHNwYXduZXIgYmVmb3JlIHByb2NlZWRpbmcuICovCisJa3Ro cmVhZF9wYXJrbWUoKTsKKworCWlmICgha3RocmVhZF9zaG91bGRfc3RvcCgpKQorCQllcnIg PSB0aHJlYWRfZm4oa3ZtLCBkYXRhKTsKKworCXJldHVybiBlcnI7Cit9CisKK2ludCBrdm1f dm1fY3JlYXRlX3dvcmtlcl90aHJlYWQoc3RydWN0IGt2bSAqa3ZtLCBrdm1fdm1fdGhyZWFk X2ZuX3QgdGhyZWFkX2ZuLAorCQkJCXVpbnRwdHJfdCBkYXRhLCBjb25zdCBjaGFyICpuYW1l LAorCQkJCXN0cnVjdCB0YXNrX3N0cnVjdCAqKnRocmVhZF9wdHIpCit7CisJc3RydWN0IGt2 bV92bV93b3JrZXJfdGhyZWFkX2NvbnRleHQgaW5pdF9jb250ZXh0ID0ge307CisJc3RydWN0 IHRhc2tfc3RydWN0ICp0aHJlYWQ7CisKKwkqdGhyZWFkX3B0ciA9IE5VTEw7CisJaW5pdF9j b250ZXh0Lmt2bSA9IGt2bTsKKwlpbml0X2NvbnRleHQucGFyZW50ID0gY3VycmVudDsKKwlp bml0X2NvbnRleHQudGhyZWFkX2ZuID0gdGhyZWFkX2ZuOworCWluaXRfY29udGV4dC5kYXRh ID0gZGF0YTsKKwlpbml0X2NvbXBsZXRpb24oJmluaXRfY29udGV4dC5pbml0X2RvbmUpOwor CisJdGhyZWFkID0ga3RocmVhZF9ydW4oa3ZtX3ZtX3dvcmtlcl90aHJlYWQsICZpbml0X2Nv bnRleHQsCisJCQkgICAgICIlcy0lZCIsIG5hbWUsIHRhc2tfcGlkX25yKGN1cnJlbnQpKTsK KwlpZiAoSVNfRVJSKHRocmVhZCkpCisJCXJldHVybiBQVFJfRVJSKHRocmVhZCk7CisKKwkv KiBrdGhyZWFkX3J1biBpcyBuZXZlciBzdXBwb3NlZCB0byByZXR1cm4gTlVMTCAqLworCVdB Uk5fT04odGhyZWFkID09IE5VTEwpOworCisJd2FpdF9mb3JfY29tcGxldGlvbigmaW5pdF9j b250ZXh0LmluaXRfZG9uZSk7CisKKwlpZiAoIWluaXRfY29udGV4dC5lcnIpCisJCSp0aHJl YWRfcHRyID0gdGhyZWFkOworCisJcmV0dXJuIGluaXRfY29udGV4dC5lcnI7Cit9CgAAAAAA AAAuL1BheEhlYWRlcnMuMzYwMjIvMDAwNS1rdm0teDg2LW1tdS1SZWNvdmVyeS1vZi1zaGF0 dGVyZWQtTlgtbGFyZ2UtcGFnZXMucGF0Y2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0 NAAwMDAwMDAwADAwMDAwMDAAMDAwMDAwMDAxMzIAMTM1NTYzMTM3MjAAMDIzMjU3ACB4AAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyADAwAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMwIG10aW1lPTE1NzI0NDQxMTIuODcyNDY5 MTA4CjMwIGF0aW1lPTE1NzI0NDQxMTIuODcyNDY5MTA4CjMwIGN0aW1lPTE1NzI0NDQxMTIu ODcyNDY5MTA4CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA MDAwNS1rdm0teDg2LW1tdS1SZWNvdmVyeS1vZi1zaGF0dGVyZWQtTlgtbGFyZ2UtcGFnZXMu cGF0Y2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQA MDAyNTM3NwAwMDAwMTQ0ADAwMDAwMDIzMDczADEzNTU2MzEzNzIwADAyNDExMAAgMAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhcgAwMG1ob2Nr bwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXNlcnMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAwMDAwMDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGcm9tOiBKdW5haWQgU2hhaGlkIDxqdW5haWRz QGdvb2dsZS5jb20+ClN1YmplY3Q6IFtQQVRDSCA1LzVdIGt2bTogeDg2OiBtbXU6IFJlY292 ZXJ5IG9mIHNoYXR0ZXJlZCBOWCBsYXJnZSBwYWdlcwpSZWZlcmVuY2VzOiBic2MjMTExNzY2 NSwgQ1ZFLTIwMTgtMTIyMDcKUGF0Y2gtbWFpbmxpbmU6IE5vLCBzdGlsbCB1bmRlciBkaXNj dXNzaW9uCgpUaGUgcGFnZSB0YWJsZSBwYWdlcyBjb3JyZXNwb25kaW5nIHRvIGJyb2tlbiBk b3duIGxhcmdlIHBhZ2VzIGFyZQp6YXBwZWQgaW4gRklGTyBvcmRlciwgc28gdGhhdCB0aGUg bGFyZ2UgcGFnZSBjYW4gcG90ZW50aWFsbHkKYmUgcmVjb3ZlcmVkLCBpZiBpdCBpcyBubyBs b25nZXIgYmVpbmcgdXNlZCBmb3IgZXhlY3V0aW9uLiAgVGhpcyByZW1vdmVzCnRoZSBwZXJm b3JtYW5jZSBwZW5hbHR5IGZvciB3YWxraW5nIGRlZXBlciBFUFQgcGFnZSB0YWJsZXMuCgpC eSBkZWZhdWx0LCBvbmUgbGFyZ2UgcGFnZSB3aWxsIGxhc3QgYWJvdXQgb25lIGhvdXIgb25j ZSB0aGUgZ3Vlc3QKcmVhY2hlcyBhIHN0ZWFkeSBzdGF0ZS4KClNpZ25lZC1vZmYtYnk6IEp1 bmFpZCBTaGFoaWQgPGp1bmFpZHNAZ29vZ2xlLmNvbT4KU2lnbmVkLW9mZi1ieTogUGFvbG8g Qm9uemluaSA8cGJvbnppbmlAcmVkaGF0LmNvbT4KQWNrZWQtYnk6IEpvZXJnIFJvZWRlbCA8 anJvZWRlbEBzdXNlLmRlPgotLS0KIERvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVs LXBhcmFtZXRlcnMudHh0IHwgICA2ICsrCiBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9z dC5oICAgICAgICAgICAgICAgICB8ICAgNCArCiBhcmNoL3g4Ni9rdm0vbW11LmMgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IDEyOSArKysrKysrKysrKysrKysrKysrKysrKysK IGFyY2gveDg2L2t2bS9tbXUuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0 ICsKIGFyY2gveDg2L2t2bS94ODYuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg IDExICsrCiB2aXJ0L2t2bS9rdm1fbWFpbi5jICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAzMCArKysrKy0KIDYgZmlsZXMgY2hhbmdlZCwgMTgzIGluc2VydGlvbnMoKyksIDEg ZGVsZXRpb24oLSkKCi0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKKysr IGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaApAQCAtMjI4LDYgKzIyOCw4IEBA IHN0cnVjdCBrdm1fcm1hcF9oZWFkIHsKIHN0cnVjdCBrdm1fbW11X3BhZ2UgewogCXN0cnVj dCBsaXN0X2hlYWQgbGluazsKIAlzdHJ1Y3QgaGxpc3Rfbm9kZSBoYXNoX2xpbms7CisJc3Ry dWN0IGxpc3RfaGVhZCBscGFnZV9kaXNhbGxvd2VkX2xpbms7CisKIAlib29sIHVuc3luYzsK IAlib29sIGxwYWdlX2Rpc2FsbG93ZWQ7IC8qIENhbid0IGJlIHJlcGxhY2VkIGJ5IGFuIGVx dWl2IGxhcmdlIHBhZ2UgKi8KIApAQCAtNjc4LDYgKzY4MCw3IEBAIHN0cnVjdCBrdm1fYXJj aCB7CiAJICovCiAJc3RydWN0IGxpc3RfaGVhZCBhY3RpdmVfbW11X3BhZ2VzOwogCXN0cnVj dCBsaXN0X2hlYWQgemFwcGVkX29ic29sZXRlX3BhZ2VzOworCXN0cnVjdCBsaXN0X2hlYWQg bHBhZ2VfZGlzYWxsb3dlZF9tbXVfcGFnZXM7CiAKIAlzdHJ1Y3QgbGlzdF9oZWFkIGFzc2ln bmVkX2Rldl9oZWFkOwogCXN0cnVjdCBpb21tdV9kb21haW4gKmlvbW11X2RvbWFpbjsKQEAg LTc1MCw2ICs3NTMsOCBAQCBzdHJ1Y3Qga3ZtX2FyY2ggewogCiAJYm9vbCB4MmFwaWNfZm9y bWF0OwogCWJvb2wgeDJhcGljX2Jyb2FkY2FzdF9xdWlya19kaXNhYmxlZDsKKworCXN0cnVj dCB0YXNrX3N0cnVjdCAqbnhfbHBhZ2VfcmVjb3ZlcnlfdGhyZWFkOwogfTsKIAogc3RydWN0 IGt2bV92bV9zdGF0IHsKLS0tIGEvYXJjaC94ODYva3ZtL21tdS5jCisrKyBiL2FyY2gveDg2 L2t2bS9tbXUuYwpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgPGxpbnV4L3NyY3UuaD4K ICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CiAjaW5jbHVkZSA8bGludXgvdWFjY2Vzcy5oPgor I2luY2x1ZGUgPGxpbnV4L2t0aHJlYWQuaD4KIAogI2luY2x1ZGUgPGFzbS9wYWdlLmg+CiAj aW5jbHVkZSA8YXNtL2NtcHhjaGcuaD4KQEAgLTQ1LDE2ICs0NiwyNiBAQAogZXh0ZXJuIGJv b2wgaXRsYl9tdWx0aWhpdF9rdm1fbWl0aWdhdGlvbjsKIAogc3RhdGljIGludCBfX3JlYWRf bW9zdGx5IG54X2h1Z2VfcGFnZXMgPSAtMTsKK3N0YXRpYyB1aW50IF9fcmVhZF9tb3N0bHkg bnhfaHVnZV9wYWdlc19yZWNvdmVyeV9yYXRpbyA9IDYwOwogCiBzdGF0aWMgaW50IHNldF9u eF9odWdlX3BhZ2VzKGNvbnN0IGNoYXIgKnZhbCwgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJh bSAqa3ApOworc3RhdGljIGludCBzZXRfbnhfaHVnZV9wYWdlc19yZWNvdmVyeV9yYXRpbyhj b25zdCBjaGFyICp2YWwsIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW0gKmtwKTsKIAogc3Rh dGljIHN0cnVjdCBrZXJuZWxfcGFyYW1fb3BzIG54X2h1Z2VfcGFnZXNfb3BzID0gewogCS5z ZXQgPSBzZXRfbnhfaHVnZV9wYWdlcywKIAkuZ2V0ID0gcGFyYW1fZ2V0X2Jvb2wsCiB9Owog CitzdGF0aWMgc3RydWN0IGtlcm5lbF9wYXJhbV9vcHMgbnhfaHVnZV9wYWdlc19yZWNvdmVy eV9yYXRpb19vcHMgPSB7CisJLnNldCA9IHNldF9ueF9odWdlX3BhZ2VzX3JlY292ZXJ5X3Jh dGlvLAorCS5nZXQgPSBwYXJhbV9nZXRfdWludCwKK307CisKIG1vZHVsZV9wYXJhbV9jYihu eF9odWdlX3BhZ2VzLCAmbnhfaHVnZV9wYWdlc19vcHMsICZueF9odWdlX3BhZ2VzLCAwNjQ0 KTsKIF9fTU9EVUxFX1BBUk1fVFlQRShueF9odWdlX3BhZ2VzLCAiYm9vbCIpOworbW9kdWxl X3BhcmFtX2NiKG54X2h1Z2VfcGFnZXNfcmVjb3ZlcnlfcmF0aW8sICZueF9odWdlX3BhZ2Vz X3JlY292ZXJ5X3JhdGlvX29wcywKKwkJJm54X2h1Z2VfcGFnZXNfcmVjb3ZlcnlfcmF0aW8s IDA2NDQpOworX19NT0RVTEVfUEFSTV9UWVBFKG54X2h1Z2VfcGFnZXNfcmVjb3ZlcnlfcmF0 aW8sICJ1aW50Iik7CiAKIC8qCiAgKiBXaGVuIHNldHRpbmcgdGhpcyB2YXJpYWJsZSB0byB0 cnVlIGl0IGVuYWJsZXMgVHdvLURpbWVuc2lvbmFsLVBhZ2luZwpAQCAtODY5LDYgKzg4MCw4 IEBAIHN0YXRpYyB2b2lkIGFjY291bnRfaHVnZV9ueF9wYWdlKHN0cnVjdAogCQlyZXR1cm47 CiAKIAkrK2t2bS0+c3RhdC5ueF9scGFnZV9zcGxpdHM7CisJbGlzdF9hZGRfdGFpbCgmc3At PmxwYWdlX2Rpc2FsbG93ZWRfbGluaywKKwkJICAgICAgJmt2bS0+YXJjaC5scGFnZV9kaXNh bGxvd2VkX21tdV9wYWdlcyk7CiAJc3AtPmxwYWdlX2Rpc2FsbG93ZWQgPSB0cnVlOwogfQog CkBAIC04ODksNiArOTAyLDcgQEAgc3RhdGljIHZvaWQgdW5hY2NvdW50X2h1Z2VfbnhfcGFn ZShzdHJ1YwogewogCS0ta3ZtLT5zdGF0Lm54X2xwYWdlX3NwbGl0czsKIAlzcC0+bHBhZ2Vf ZGlzYWxsb3dlZCA9IGZhbHNlOworCWxpc3RfZGVsKCZzcC0+bHBhZ2VfZGlzYWxsb3dlZF9s aW5rKTsKIH0KIAogc3RhdGljIGJvb2wgX19tbXVfZ2ZuX2xwYWdlX2lzX2Rpc2FsbG93ZWQo Z2ZuX3QgZ2ZuLCBpbnQgbGV2ZWwsCkBAIC01MTA1LDYgKzUxMTksOCBAQCBzdGF0aWMgaW50 IHNldF9ueF9odWdlX3BhZ2VzKGNvbnN0IGNoYXIKIAkJCWlkeCA9IHNyY3VfcmVhZF9sb2Nr KCZrdm0tPnNyY3UpOwogCQkJa3ZtX21tdV9pbnZhbGlkYXRlX3phcF9hbGxfcGFnZXMoa3Zt KTsKIAkJCXNyY3VfcmVhZF91bmxvY2soJmt2bS0+c3JjdSwgaWR4KTsKKworCQkJd2FrZV91 cF9wcm9jZXNzKGt2bS0+YXJjaC5ueF9scGFnZV9yZWNvdmVyeV90aHJlYWQpOwogCQl9CiAJ CW11dGV4X3VubG9jaygma3ZtX2xvY2spOwogCX0KQEAgLTUxODAsMyArNTE5NiwxMTYgQEAg dm9pZCBrdm1fbW11X21vZHVsZV9leGl0KHZvaWQpCiAJdW5yZWdpc3Rlcl9zaHJpbmtlcigm bW11X3Nocmlua2VyKTsKIAltbXVfYXVkaXRfZGlzYWJsZSgpOwogfQorCitzdGF0aWMgaW50 IHNldF9ueF9odWdlX3BhZ2VzX3JlY292ZXJ5X3JhdGlvKGNvbnN0IGNoYXIgKnZhbCwgY29u c3Qgc3RydWN0IGtlcm5lbF9wYXJhbSAqa3ApCit7CisJdW5zaWduZWQgaW50IG9sZF92YWw7 CisJaW50IGVycjsKKworCW9sZF92YWwgPSBueF9odWdlX3BhZ2VzX3JlY292ZXJ5X3JhdGlv OworCWVyciA9IHBhcmFtX3NldF91aW50KHZhbCwga3ApOworCWlmIChlcnIpCisJCXJldHVy biBlcnI7CisKKwlpZiAoUkVBRF9PTkNFKG54X2h1Z2VfcGFnZXMpICYmCisJICAgICFvbGRf dmFsICYmIG54X2h1Z2VfcGFnZXNfcmVjb3ZlcnlfcmF0aW8pIHsKKwkJc3RydWN0IGt2bSAq a3ZtOworCisJCW11dGV4X2xvY2soJmt2bV9sb2NrKTsKKworCQlsaXN0X2Zvcl9lYWNoX2Vu dHJ5KGt2bSwgJnZtX2xpc3QsIHZtX2xpc3QpCisJCQl3YWtlX3VwX3Byb2Nlc3Moa3ZtLT5h cmNoLm54X2xwYWdlX3JlY292ZXJ5X3RocmVhZCk7CisKKwkJbXV0ZXhfdW5sb2NrKCZrdm1f bG9jayk7CisJfQorCisJcmV0dXJuIGVycjsKK30KKworc3RhdGljIHZvaWQga3ZtX3JlY292 ZXJfbnhfbHBhZ2VzKHN0cnVjdCBrdm0gKmt2bSkKK3sKKwlpbnQgcmN1X2lkeDsKKwlzdHJ1 Y3Qga3ZtX21tdV9wYWdlICpzcDsKKwl1bnNpZ25lZCBpbnQgcmF0aW87CisJTElTVF9IRUFE KGludmFsaWRfbGlzdCk7CisJdWxvbmcgdG9femFwOworCisJcmN1X2lkeCA9IHNyY3VfcmVh ZF9sb2NrKCZrdm0tPnNyY3UpOworCXNwaW5fbG9jaygma3ZtLT5tbXVfbG9jayk7CisKKwly YXRpbyA9IFJFQURfT05DRShueF9odWdlX3BhZ2VzX3JlY292ZXJ5X3JhdGlvKTsKKwl0b196 YXAgPSByYXRpbyA/IERJVl9ST1VORF9VUChrdm0tPnN0YXQubnhfbHBhZ2Vfc3BsaXRzLCBy YXRpbykgOiAwOworCXdoaWxlICh0b196YXAgJiYgIWxpc3RfZW1wdHkoJmt2bS0+YXJjaC5s cGFnZV9kaXNhbGxvd2VkX21tdV9wYWdlcykpIHsKKwkJLyoKKwkJICogV2UgdXNlIGEgc2Vw YXJhdGUgbGlzdCBpbnN0ZWFkIG9mIGp1c3QgdXNpbmcgYWN0aXZlX21tdV9wYWdlcworCQkg KiBiZWNhdXNlIHRoZSBudW1iZXIgb2YgbHBhZ2VfZGlzYWxsb3dlZCBwYWdlcyBpcyBleHBl Y3RlZCB0bworCQkgKiBiZSByZWxhdGl2ZWx5IHNtYWxsIGNvbXBhcmVkIHRvIHRoZSB0b3Rh bC4KKwkJICovCisJCXNwID0gbGlzdF9maXJzdF9lbnRyeSgma3ZtLT5hcmNoLmxwYWdlX2Rp c2FsbG93ZWRfbW11X3BhZ2VzLAorCQkJCSAgICAgIHN0cnVjdCBrdm1fbW11X3BhZ2UsCisJ CQkJICAgICAgbHBhZ2VfZGlzYWxsb3dlZF9saW5rKTsKKwkJV0FSTl9PTl9PTkNFKCFzcC0+ bHBhZ2VfZGlzYWxsb3dlZCk7CisJCWt2bV9tbXVfcHJlcGFyZV96YXBfcGFnZShrdm0sIHNw LCAmaW52YWxpZF9saXN0KTsKKwkJV0FSTl9PTl9PTkNFKHNwLT5scGFnZV9kaXNhbGxvd2Vk KTsKKworCQlpZiAoIS0tdG9femFwIHx8IG5lZWRfcmVzY2hlZCgpIHx8IHNwaW5fbmVlZGJy ZWFrKCZrdm0tPm1tdV9sb2NrKSkgeworCQkJa3ZtX21tdV9jb21taXRfemFwX3BhZ2Uoa3Zt LCAmaW52YWxpZF9saXN0KTsKKwkJCWlmICh0b196YXApCisJCQkJY29uZF9yZXNjaGVkX2xv Y2soJmt2bS0+bW11X2xvY2spOworCQl9CisJfQorCisJc3Bpbl91bmxvY2soJmt2bS0+bW11 X2xvY2spOworCXNyY3VfcmVhZF91bmxvY2soJmt2bS0+c3JjdSwgcmN1X2lkeCk7Cit9CisK K3N0YXRpYyBsb25nIGdldF9ueF9scGFnZV9yZWNvdmVyeV90aW1lb3V0KHU2NCBzdGFydF90 aW1lKQoreworCXJldHVybiBSRUFEX09OQ0UobnhfaHVnZV9wYWdlcykgJiYgUkVBRF9PTkNF KG54X2h1Z2VfcGFnZXNfcmVjb3ZlcnlfcmF0aW8pCisJCT8gc3RhcnRfdGltZSArIDYwICog SFogLSBnZXRfamlmZmllc182NCgpCisJCTogTUFYX1NDSEVEVUxFX1RJTUVPVVQ7Cit9CisK K3N0YXRpYyBpbnQga3ZtX254X2xwYWdlX3JlY292ZXJ5X3dvcmtlcihzdHJ1Y3Qga3ZtICpr dm0sIHVpbnRwdHJfdCBkYXRhKQoreworCXU2NCBzdGFydF90aW1lOworCWxvbmcgcmVtYWlu aW5nX3RpbWU7CisKKwl3aGlsZSAodHJ1ZSkgeworCQlzdGFydF90aW1lID0gZ2V0X2ppZmZp ZXNfNjQoKTsKKwkJcmVtYWluaW5nX3RpbWUgPSBnZXRfbnhfbHBhZ2VfcmVjb3ZlcnlfdGlt ZW91dChzdGFydF90aW1lKTsKKworCQlzZXRfY3VycmVudF9zdGF0ZShUQVNLX0lOVEVSUlVQ VElCTEUpOworCQl3aGlsZSAoIWt0aHJlYWRfc2hvdWxkX3N0b3AoKSAmJiByZW1haW5pbmdf dGltZSA+IDApIHsKKwkJCXNjaGVkdWxlX3RpbWVvdXQocmVtYWluaW5nX3RpbWUpOworCQkJ cmVtYWluaW5nX3RpbWUgPSBnZXRfbnhfbHBhZ2VfcmVjb3ZlcnlfdGltZW91dChzdGFydF90 aW1lKTsKKwkJCXNldF9jdXJyZW50X3N0YXRlKFRBU0tfSU5URVJSVVBUSUJMRSk7CisJCX0K KworCQlzZXRfY3VycmVudF9zdGF0ZShUQVNLX1JVTk5JTkcpOworCisJCWlmIChrdGhyZWFk X3Nob3VsZF9zdG9wKCkpCisJCQlyZXR1cm4gMDsKKworCQlrdm1fcmVjb3Zlcl9ueF9scGFn ZXMoa3ZtKTsKKwl9Cit9CisKK2ludCBrdm1fbW11X3Bvc3RfaW5pdF92bShzdHJ1Y3Qga3Zt ICprdm0pCit7CisJaW50IGVycjsKKworCWVyciA9IGt2bV92bV9jcmVhdGVfd29ya2VyX3Ro cmVhZChrdm0sIGt2bV9ueF9scGFnZV9yZWNvdmVyeV93b3JrZXIsIDAsCisJCQkJCSAgImt2 bS1ueC1scGFnZS1yZWNvdmVyeSIsCisJCQkJCSAgJmt2bS0+YXJjaC5ueF9scGFnZV9yZWNv dmVyeV90aHJlYWQpOworCWlmICghZXJyKQorCQlrdGhyZWFkX3VucGFyayhrdm0tPmFyY2gu bnhfbHBhZ2VfcmVjb3ZlcnlfdGhyZWFkKTsKKworCXJldHVybiBlcnI7Cit9CisKK3ZvaWQg a3ZtX21tdV9wcmVfZGVzdHJveV92bShzdHJ1Y3Qga3ZtICprdm0pCit7CisJaWYgKGt2bS0+ YXJjaC5ueF9scGFnZV9yZWNvdmVyeV90aHJlYWQpCisJCWt0aHJlYWRfc3RvcChrdm0tPmFy Y2gubnhfbHBhZ2VfcmVjb3ZlcnlfdGhyZWFkKTsKK30KLS0tIGEvYXJjaC94ODYva3ZtL21t dS5oCisrKyBiL2FyY2gveDg2L2t2bS9tbXUuaApAQCAtMTg0LDQgKzE4NCw4IEBAIHZvaWQg a3ZtX3phcF9nZm5fcmFuZ2Uoc3RydWN0IGt2bSAqa3ZtLAogCiB2b2lkIGt2bV9tbXVfZ2Zu X2Rpc2FsbG93X2xwYWdlKHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKnNsb3QsIGdmbl90IGdm bik7CiB2b2lkIGt2bV9tbXVfZ2ZuX2FsbG93X2xwYWdlKHN0cnVjdCBrdm1fbWVtb3J5X3Ns b3QgKnNsb3QsIGdmbl90IGdmbik7CisKK2ludCBrdm1fbW11X3Bvc3RfaW5pdF92bShzdHJ1 Y3Qga3ZtICprdm0pOwordm9pZCBrdm1fbW11X3ByZV9kZXN0cm95X3ZtKHN0cnVjdCBrdm0g Kmt2bSk7CisKICNlbmRpZgotLS0gYS9hcmNoL3g4Ni9rdm0veDg2LmMKKysrIGIvYXJjaC94 ODYva3ZtL3g4Ni5jCkBAIC03ODE3LDYgKzc4MTcsNyBAQCBpbnQga3ZtX2FyY2hfaW5pdF92 bShzdHJ1Y3Qga3ZtICprdm0sIHVuCiAJSU5JVF9ITElTVF9IRUFEKCZrdm0tPmFyY2gubWFz a19ub3RpZmllcl9saXN0KTsKIAlJTklUX0xJU1RfSEVBRCgma3ZtLT5hcmNoLmFjdGl2ZV9t bXVfcGFnZXMpOwogCUlOSVRfTElTVF9IRUFEKCZrdm0tPmFyY2guemFwcGVkX29ic29sZXRl X3BhZ2VzKTsKKwlJTklUX0xJU1RfSEVBRCgma3ZtLT5hcmNoLmxwYWdlX2Rpc2FsbG93ZWRf bW11X3BhZ2VzKTsKIAlJTklUX0xJU1RfSEVBRCgma3ZtLT5hcmNoLmFzc2lnbmVkX2Rldl9o ZWFkKTsKIAlhdG9taWNfc2V0KCZrdm0tPmFyY2gubm9uY29oZXJlbnRfZG1hX2NvdW50LCAw KTsKIApAQCAtNzgzOCw2ICs3ODM5LDExIEBAIGludCBrdm1fYXJjaF9pbml0X3ZtKHN0cnVj dCBrdm0gKmt2bSwgdW4KIAlyZXR1cm4gMDsKIH0KIAoraW50IGt2bV9hcmNoX3Bvc3RfaW5p dF92bShzdHJ1Y3Qga3ZtICprdm0pCit7CisJcmV0dXJuIGt2bV9tbXVfcG9zdF9pbml0X3Zt KGt2bSk7Cit9CisKIHN0YXRpYyB2b2lkIGt2bV91bmxvYWRfdmNwdV9tbXUoc3RydWN0IGt2 bV92Y3B1ICp2Y3B1KQogewogCWludCByOwpAQCAtNzk0Nyw2ICs3OTUzLDExIEBAIGludCB4 ODZfc2V0X21lbW9yeV9yZWdpb24oc3RydWN0IGt2bSAqa3YKIH0KIEVYUE9SVF9TWU1CT0xf R1BMKHg4Nl9zZXRfbWVtb3J5X3JlZ2lvbik7CiAKK3ZvaWQga3ZtX2FyY2hfcHJlX2Rlc3Ry b3lfdm0oc3RydWN0IGt2bSAqa3ZtKQoreworCWt2bV9tbXVfcHJlX2Rlc3Ryb3lfdm0oa3Zt KTsKK30KKwogdm9pZCBrdm1fYXJjaF9kZXN0cm95X3ZtKHN0cnVjdCBrdm0gKmt2bSkKIHsK IAlpZiAoY3VycmVudC0+bW0gPT0ga3ZtLT5tbSkgewotLS0gYS92aXJ0L2t2bS9rdm1fbWFp bi5jCisrKyBiL3ZpcnQva3ZtL2t2bV9tYWluLmMKQEAgLTYwMSw2ICs2MDEsMjMgQEAgc3Rh dGljIGludCBrdm1fY3JlYXRlX3ZtX2RlYnVnZnMoc3RydWN0CiAJcmV0dXJuIDA7CiB9CiAK Ky8qCisgKiBDYWxsZWQgYWZ0ZXIgdGhlIFZNIGlzIG90aGVyd2lzZSBpbml0aWFsaXplZCwg YnV0IGp1c3QgYmVmb3JlIGFkZGluZyBpdCB0bworICogdGhlIHZtX2xpc3QuCisgKi8KK2lu dCBfX3dlYWsga3ZtX2FyY2hfcG9zdF9pbml0X3ZtKHN0cnVjdCBrdm0gKmt2bSkKK3sKKwly ZXR1cm4gMDsKK30KKworLyoKKyAqIENhbGxlZCBqdXN0IGFmdGVyIHJlbW92aW5nIHRoZSBW TSBmcm9tIHRoZSB2bV9saXN0LCBidXQgYmVmb3JlIGRvaW5nIGFueQorICogb3RoZXIgZGVz dHJ1Y3Rpb24uCisgKi8KK3ZvaWQgX193ZWFrIGt2bV9hcmNoX3ByZV9kZXN0cm95X3ZtKHN0 cnVjdCBrdm0gKmt2bSkKK3sKK30KKwogc3RhdGljIHN0cnVjdCBrdm0gKmt2bV9jcmVhdGVf dm0odW5zaWduZWQgbG9uZyB0eXBlKQogewogCWludCByLCBpOwpAQCAtNjQ4LDExICs2NjUs MTUgQEAgc3RhdGljIHN0cnVjdCBrdm0gKmt2bV9jcmVhdGVfdm0odW5zaWduZQogCQlrdm0t PmJ1c2VzW2ldID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGt2bV9pb19idXMpLAogCQkJCQlH RlBfS0VSTkVMKTsKIAkJaWYgKCFrdm0tPmJ1c2VzW2ldKQotCQkJZ290byBvdXRfZXJyOwor CQkJZ290byBvdXRfZXJyX25vX21tdV9ub3RpZmllcjsKIAl9CiAKIAlyID0ga3ZtX2luaXRf bW11X25vdGlmaWVyKGt2bSk7CiAJaWYgKHIpCisJCWdvdG8gb3V0X2Vycl9ub19tbXVfbm90 aWZpZXI7CisKKwlyID0ga3ZtX2FyY2hfcG9zdF9pbml0X3ZtKGt2bSk7CisJaWYgKHIpCiAJ CWdvdG8gb3V0X2VycjsKIAogCW11dGV4X2xvY2soJmt2bV9sb2NrKTsKQEAgLTY2NCw2ICs2 ODUsMTEgQEAgc3RhdGljIHN0cnVjdCBrdm0gKmt2bV9jcmVhdGVfdm0odW5zaWduZQogCXJl dHVybiBrdm07CiAKIG91dF9lcnI6CisjaWYgZGVmaW5lZChDT05GSUdfTU1VX05PVElGSUVS KSAmJiBkZWZpbmVkKEtWTV9BUkNIX1dBTlRfTU1VX05PVElGSUVSKQorCWlmIChrdm0tPm1t dV9ub3RpZmllci5vcHMpCisJCW1tdV9ub3RpZmllcl91bnJlZ2lzdGVyKCZrdm0tPm1tdV9u b3RpZmllciwgY3VycmVudC0+bW0pOworI2VuZGlmCitvdXRfZXJyX25vX21tdV9ub3RpZmll cjoKIAljbGVhbnVwX3NyY3Vfc3RydWN0KCZrdm0tPmlycV9zcmN1KTsKIG91dF9lcnJfbm9f aXJxX3NyY3U6CiAJY2xlYW51cF9zcmN1X3N0cnVjdCgma3ZtLT5zcmN1KTsKQEAgLTcxNiw2 ICs3NDIsOCBAQCBzdGF0aWMgdm9pZCBrdm1fZGVzdHJveV92bShzdHJ1Y3Qga3ZtICprCiAJ bXV0ZXhfbG9jaygma3ZtX2xvY2spOwogCWxpc3RfZGVsKCZrdm0tPnZtX2xpc3QpOwogCW11 dGV4X3VubG9jaygma3ZtX2xvY2spOworCWt2bV9hcmNoX3ByZV9kZXN0cm95X3ZtKGt2bSk7 CisKIAlrdm1fZnJlZV9pcnFfcm91dGluZyhrdm0pOwogCWZvciAoaSA9IDA7IGkgPCBLVk1f TlJfQlVTRVM7IGkrKykgewogCQlpZiAoa3ZtLT5idXNlc1tpXSkKAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAALi9QYXhIZWFkZXJzLjM2MDIyL2NwdS1zcGVjdWxhdGlvbi11bmlubGluZS1hbmQt ZXhwb3J0LUNQVS1taXRpZ2F0aW9ucy1oZWxwZXJzLnBhdGNoAAAAAAAAAAAAAAAAAAAAADAw MDA2NDQAMDAwMDAwMAAwMDAwMDAwADAwMDAwMDAwMTMyADEzNTYwMjMxMTE3ADAyNTQwNwAg eAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhcgAw MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzMCBtdGltZT0xNTcyOTQyNDE1LjE4 MjM5OTQzMQozMCBhdGltZT0xNTcyOTQyNDE1LjE4MjM5OTQzMQozMCBjdGltZT0xNTcyOTQy NDE1LjE4MjM5OTQzMQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAGNwdS1zcGVjdWxhdGlvbi11bmlubGluZS1hbmQtZXhwb3J0LUNQVS1taXRpZ2F0aW9u cy1oZWxwZXJzLnBhdGNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAw NjQ0ADAwMjUzNzcAMDAwMDE0NAAwMDAwMDAwNTM3MQAxMzU2MDIzMTExNwAwMjYyNDEAIDAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIAMDBt aG9ja28AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzZXJzAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARnJvbTogVHlsZXIgSGlja3MgPHR5aGlj a3NAY2Fub25pY2FsLmNvbT4KU3ViamVjdDogW1BBVENIXSBjcHUvc3BlY3VsYXRpb246IFVu aW5saW5lIGFuZCBleHBvcnQgQ1BVIG1pdGlnYXRpb25zIGhlbHBlcnMKUGF0Y2gtbWFpbmxp bmU6IG5vdCB5ZXQsIHN0aWxsIHVuZGVyIGVtYmFyZ28KUmVmZXJlbmNlczogYm5jIzExMTc2 NjUKCkEga2VybmVsIG1vZHVsZSBtYXkgbmVlZCB0byBjaGVjayB0aGUgdmFsdWUgb2YgdGhl ICJtaXRpZ2F0aW9ucz0iIGtlcm5lbApjb21tYW5kIGxpbmUgcGFyYW1ldGVyIGFzIHBhcnQg b2YgaXRzIHNldHVwIHdoZW4gdGhlIG1vZHVsZSBuZWVkcwp0byBwZXJmb3JtIHNvZnR3YXJl IG1pdGlnYXRpb25zIGZvciBhIENQVSBmbGF3LiBVbmlubGluZSBhbmQgZXhwb3J0IHRoZQpo ZWxwZXIgZnVuY3Rpb25zIHN1cnJvdW5kaW5nIHRoZSBjcHVfbWl0aWdhdGlvbnMgZW51bSB0 byBhbGxvdyBmb3IgdGhlaXIKdXNhZ2UgZnJvbSBhIG1vZHVsZS4gTGFzdGx5LCBwcml2YXRp emUgdGhlIGVudW0gYW5kIGNwdV9taXRpZ2F0aW9ucwp2YXJpYWJsZSBzaW5jZSB0aGUgdmFs dWUgb2YgY3B1X21pdGlnYXRpb25zIGNhbiBiZSBjaGVja2VkIHdpdGggdGhlCmV4cG9ydGVk IGhlbHBlciBmdW5jdGlvbnMuCgpTaWduZWQtb2ZmLWJ5OiBUeWxlciBIaWNrcyA8dHloaWNr c0BjYW5vbmljYWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgSG9ja28gPG1ob2Nrb0Bz dXNlLmNvbT4KCi0tLQogaW5jbHVkZS9saW51eC9jcHUuaCB8ICAgMjUgKystLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQoga2VybmVsL2NwdS5jICAgICAgICB8ICAgMjcgKysrKysrKysrKysr KysrKysrKysrKysrKystCiAyIGZpbGVzIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDI0 IGRlbGV0aW9ucygtKQoKLS0tIGEvaW5jbHVkZS9saW51eC9jcHUuaAorKysgYi9pbmNsdWRl L2xpbnV4L2NwdS5oCkBAIC0zMTksMjggKzMxOSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBj cHVfc210X2Rpc2FibGUoYm9vbAogc3RhdGljIGlubGluZSB2b2lkIGNwdV9zbXRfY2hlY2tf dG9wb2xvZ3kodm9pZCkgeyB9CiAjZW5kaWYKIAotLyoKLSAqIFRoZXNlIGFyZSB1c2VkIGZv ciBhIGdsb2JhbCAibWl0aWdhdGlvbnM9IiBjbWRsaW5lIG9wdGlvbiBmb3IgdG9nZ2xpbmcK LSAqIG9wdGlvbmFsIENQVSBtaXRpZ2F0aW9ucy4KLSAqLwotZW51bSBjcHVfbWl0aWdhdGlv bnMgewotCUNQVV9NSVRJR0FUSU9OU19PRkYsCi0JQ1BVX01JVElHQVRJT05TX0FVVE8sCi0J Q1BVX01JVElHQVRJT05TX0FVVE9fTk9TTVQsCi19OwotCi1leHRlcm4gZW51bSBjcHVfbWl0 aWdhdGlvbnMgY3B1X21pdGlnYXRpb25zOwotCi0vKiBtaXRpZ2F0aW9ucz1vZmYgKi8KLXN0 YXRpYyBpbmxpbmUgYm9vbCBjcHVfbWl0aWdhdGlvbnNfb2ZmKHZvaWQpCi17Ci0JcmV0dXJu IGNwdV9taXRpZ2F0aW9ucyA9PSBDUFVfTUlUSUdBVElPTlNfT0ZGOwotfQotCi0vKiBtaXRp Z2F0aW9ucz1hdXRvLG5vc210ICovCi1zdGF0aWMgaW5saW5lIGJvb2wgY3B1X21pdGlnYXRp b25zX2F1dG9fbm9zbXQodm9pZCkKLXsKLQlyZXR1cm4gY3B1X21pdGlnYXRpb25zID09IENQ VV9NSVRJR0FUSU9OU19BVVRPX05PU01UOwotfQorZXh0ZXJuIGJvb2wgY3B1X21pdGlnYXRp b25zX29mZih2b2lkKTsKK2V4dGVybiBib29sIGNwdV9taXRpZ2F0aW9uc19hdXRvX25vc210 KHZvaWQpOwogCiAjZW5kaWYgLyogX0xJTlVYX0NQVV9IXyAqLwotLS0gYS9rZXJuZWwvY3B1 LmMKKysrIGIva2VybmVsL2NwdS5jCkBAIC0xMTkzLDcgKzExOTMsMTggQEAgdm9pZCBpbml0 X2NwdV9vbmxpbmUoY29uc3Qgc3RydWN0IGNwdW1hcwogCWNwdW1hc2tfY29weSh0b19jcHVt YXNrKGNwdV9vbmxpbmVfYml0cyksIHNyYyk7CiB9CiAKLWVudW0gY3B1X21pdGlnYXRpb25z IGNwdV9taXRpZ2F0aW9ucyBfX3JvX2FmdGVyX2luaXQgPSBDUFVfTUlUSUdBVElPTlNfQVVU TzsKKy8qCisgKiBUaGVzZSBhcmUgdXNlZCBmb3IgYSBnbG9iYWwgIm1pdGlnYXRpb25zPSIg Y21kbGluZSBvcHRpb24gZm9yIHRvZ2dsaW5nCisgKiBvcHRpb25hbCBDUFUgbWl0aWdhdGlv bnMuCisgKi8KK2VudW0gY3B1X21pdGlnYXRpb25zIHsKKwlDUFVfTUlUSUdBVElPTlNfT0ZG LAorCUNQVV9NSVRJR0FUSU9OU19BVVRPLAorCUNQVV9NSVRJR0FUSU9OU19BVVRPX05PU01U LAorfTsKKworc3RhdGljIGVudW0gY3B1X21pdGlnYXRpb25zIGNwdV9taXRpZ2F0aW9ucyBf X3JvX2FmdGVyX2luaXQgPQorCUNQVV9NSVRJR0FUSU9OU19BVVRPOwogCiBzdGF0aWMgaW50 IF9faW5pdCBtaXRpZ2F0aW9uc19wYXJzZV9jbWRsaW5lKGNoYXIgKmFyZykKIHsKQEAgLTEy MDcsMyArMTIxOCwxNyBAQCBzdGF0aWMgaW50IF9faW5pdCBtaXRpZ2F0aW9uc19wYXJzZV9j bWRsCiAJcmV0dXJuIDA7CiB9CiBlYXJseV9wYXJhbSgibWl0aWdhdGlvbnMiLCBtaXRpZ2F0 aW9uc19wYXJzZV9jbWRsaW5lKTsKKworLyogbWl0aWdhdGlvbnM9b2ZmICovCitib29sIGNw dV9taXRpZ2F0aW9uc19vZmYodm9pZCkKK3sKKwlyZXR1cm4gY3B1X21pdGlnYXRpb25zID09 IENQVV9NSVRJR0FUSU9OU19PRkY7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChjcHVfbWl0aWdh dGlvbnNfb2ZmKTsKKworLyogbWl0aWdhdGlvbnM9YXV0byxub3NtdCAqLworYm9vbCBjcHVf bWl0aWdhdGlvbnNfYXV0b19ub3NtdCh2b2lkKQoreworCXJldHVybiBjcHVfbWl0aWdhdGlv bnMgPT0gQ1BVX01JVElHQVRJT05TX0FVVE9fTk9TTVQ7Cit9CitFWFBPUlRfU1lNQk9MX0dQ TChjcHVfbWl0aWdhdGlvbnNfYXV0b19ub3NtdCk7CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALi9QYXhIZWFkZXJzLjM2MDIyL2t2bS14ODYtbW11 LUFwcGx5LWdsb2JhbC1taXRpZ2F0aW9ucy1rbm9iLXRvLUlUTEJfTVVMVElISVQucGF0Y2gA AAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDAwMDAwMAAwMDAwMDAwADAwMDAwMDAwMTMyADEz NTYwMjMxMTIwADAyNDI1NgAgeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAB1c3RhcgAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzMCBt dGltZT0xNTcyOTQyNDE2Ljk2NjQwMjY0NAozMCBhdGltZT0xNTcyOTQyNDE2Ljk2MjQwMjYz NgozMCBjdGltZT0xNTcyOTQyNDE2Ljk2NjQwMjY0NAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAGt2bS14ODYtbW11LUFwcGx5LWdsb2JhbC1taXRpZ2F0 aW9ucy1rbm9iLXRvLUlUTEJfTVVMVElISVQucGF0Y2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMjUzNzcAMDAwMDE0NAAwMDAwMDAwNDYyMQAxMzU2 MDIzMTEyMAAwMjUxMDUAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAdXN0YXIAMDBtaG9ja28AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzZXJz AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARnJvbTog UGF3YW4gR3VwdGEgPHBhd2FuLmt1bWFyLmd1cHRhQGxpbnV4LmludGVsLmNvbT4KRGF0ZTog V2VkLCAzMCBPY3QgMjAxOSAyMToyODoyNCAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIGt2bTog eDg2OiBtbXU6IEFwcGx5IGdsb2JhbCBtaXRpZ2F0aW9ucyBrbm9iIHRvIElUTEJfTVVMVElI SVQKUGF0Y2gtbWFpbmxpbmU6IE5vdCB5ZXQsIHN0aWxsIHVuZGVyIGVtYmFyZ28KUmVmZXJl bmNlczogYm5jIzExMTc2NjUKClByb2JsZW06IFRoZSBnbG9iYWwgbWl0aWdhdGlvbiBrbm9i IG1pdGlnYXRpb25zPW9mZiBkb2VzIG5vdCB0dXJuIG9mZgpYODZfQlVHX0lUTEJfTVVMVElI SVQgbWl0aWdhdGlvbi4KCkZpeDogVHVybiBvZmYgdGhlIG1pdGlnYXRpb24gd2hlbiBJVExC X01VTFRJSElUIG1pdGlnYXRpb24gbW9kZSBpcwoiYXV0byIgYW5kIG1pdGlnYXRpb25zIGFy ZSB0dXJuZWQgb2ZmIGdsb2JhbGx5IHZpYSBjbWRsaW5lCm1pdGlnYXRpb25zPW9mZi4KClNp Z25lZC1vZmYtYnk6IFBhd2FuIEd1cHRhIDxwYXdhbi5rdW1hci5ndXB0YUBsaW51eC5pbnRl bC5jb20+ClNpZ25lZC1vZmYtYnk6IE1pY2hhbCBIb2NrbyA8bWhvY2tvQHN1c2UuY29tPgoK LS0tClJlYmFzZWQgb24gdGFhLW1hc3RlciBidW5kbGUuIEkgZG8gbm90IGhhdmUgYWNjZXNz IHRvIFRob21hcydzIHJlcG8uClRoaXMgbmVlZHMgdG8gZ28gb24gdG9wIG9mIFR5bGVyJ3Mg Zml4LgoKIERvY3VtZW50YXRpb24va2VybmVsLXBhcmFtZXRlcnMudHh0IHwgICAgNiArKysr KysKIGFyY2gveDg2L2t2bS9tbXUuYyAgICAgICAgICAgICAgICAgIHwgICAxMCArKysrKysr Ky0tCiAyIGZpbGVzIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0p CgotLS0gYS9Eb2N1bWVudGF0aW9uL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dAorKysgYi9Eb2N1 bWVudGF0aW9uL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dApAQCAtMjM1OSw2ICsyMzU5LDEyIEBA IGJ5dGVzIHJlc3BlY3RpdmVseS4gU3VjaCBsZXR0ZXIgc3VmZml4ZXMKIAkJCQkJICAgICAg IGwxdGY9b2ZmIFtYODZdCiAJCQkJCSAgICAgICBtZHM9b2ZmIFtYODZdCiAJCQkJCSAgICAg ICB0c3hfYXN5bmNfYWJvcnQ9b2ZmIFtYODZdCisJCQkJCSAgICAgICBrdm0ubnhfaHVnZV9w YWdlcz1vZmYgW1g4Nl0KKworCQkJCUV4Y2VwdGlvbnM6CisJCQkJCSAgICAgICBUaGlzIGRv ZXMgbm90IGhhdmUgYW55IGVmZmVjdCBvbgorCQkJCQkgICAgICAga3ZtLm54X2h1Z2VfcGFn ZXMgd2hlbgorCQkJCQkgICAgICAga3ZtLm54X2h1Z2VfcGFnZXM9Zm9yY2UuCiAKIAkJCWF1 dG8gKGRlZmF1bHQpCiAJCQkJTWl0aWdhdGUgYWxsIENQVSB2dWxuZXJhYmlsaXRpZXMsIGJ1 dCBsZWF2ZSBTTVQKLS0tIGEvYXJjaC94ODYva3ZtL21tdS5jCisrKyBiL2FyY2gveDg2L2t2 bS9tbXUuYwpAQCAtNTA4Nyw2ICs1MDg3LDEyIEBAIHN0YXRpYyB2b2lkIG1tdV9kZXN0cm95 X2NhY2hlcyh2b2lkKQogCQlrbWVtX2NhY2hlX2Rlc3Ryb3kobW11X3BhZ2VfaGVhZGVyX2Nh Y2hlKTsKIH0KIAorc3RhdGljIGJvb2wgZ2V0X254X2F1dG9fbW9kZSh2b2lkKQoreworCS8q IFJldHVybiB0cnVlIHdoZW4gQ1BVIGhhcyB0aGUgYnVnLCBhbmQgbWl0aWdhdGlvbnMgYXJl IE9OICovCisJcmV0dXJuIGJvb3RfY3B1X2hhc19idWcoWDg2X0JVR19JVExCX01VTFRJSElU KSAmJiAhY3B1X21pdGlnYXRpb25zX29mZigpOworfQorCiBzdGF0aWMgdm9pZCBfX3NldF9u eF9odWdlX3BhZ2VzKGJvb2wgdmFsKQogewogCW54X2h1Z2VfcGFnZXMgPSBpdGxiX211bHRp aGl0X2t2bV9taXRpZ2F0aW9uID0gdmFsOwpAQCAtNTEwMyw3ICs1MTA5LDcgQEAgc3RhdGlj IGludCBzZXRfbnhfaHVnZV9wYWdlcyhjb25zdCBjaGFyCiAJZWxzZSBpZiAoc3lzZnNfc3Ry ZXEodmFsLCAiZm9yY2UiKSkKIAkJbmV3X3ZhbCA9IDE7CiAJZWxzZSBpZiAoc3lzZnNfc3Ry ZXEodmFsLCAiYXV0byIpKQotCQluZXdfdmFsID0gYm9vdF9jcHVfaGFzX2J1ZyhYODZfQlVH X0lUTEJfTVVMVElISVQpOworCQluZXdfdmFsID0gZ2V0X254X2F1dG9fbW9kZSgpOwogCWVs c2UgaWYgKHN0cnRvYm9vbCh2YWwsICZuZXdfdmFsKSA8IDApCiAJCXJldHVybiAtRUlOVkFM OwogCkBAIC01MTMxLDcgKzUxMzcsNyBAQCBzdGF0aWMgaW50IHNldF9ueF9odWdlX3BhZ2Vz KGNvbnN0IGNoYXIKIGludCBrdm1fbW11X21vZHVsZV9pbml0KHZvaWQpCiB7CiAJaWYgKG54 X2h1Z2VfcGFnZXMgPT0gLTEpCi0JCV9fc2V0X254X2h1Z2VfcGFnZXMoYm9vdF9jcHVfaGFz X2J1ZyhYODZfQlVHX0lUTEJfTVVMVElISVQpKTsKKwkJX19zZXRfbnhfaHVnZV9wYWdlcyhn ZXRfbnhfYXV0b19tb2RlKCkpOwogCiAJcHRlX2xpc3RfZGVzY19jYWNoZSA9IGttZW1fY2Fj aGVfY3JlYXRlKCJwdGVfbGlzdF9kZXNjIiwKIAkJCQkJICAgIHNpemVvZihzdHJ1Y3QgcHRl X2xpc3RfZGVzYyksCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAC4vUGF4SGVhZGVycy4zNjAyMi9Eb2N1bWVudGF0aW9uLUFkZC1J VExCX01VTFRJSElULWRvY3VtZW50YXRpb24ucGF0Y2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAwMDAwNjQ0ADAwMDAwMDAAMDAwMDAwMAAwMDAwMDAwMDEzMgAxMzU2MDIzMTEy MgAwMjIxNzUAIHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAdXN0YXIAMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMzAgbXRpbWU9MTU3 Mjk0MjQxOC4xNTQ0MDQ3ODIKMzAgYXRpbWU9MTU3Mjk0MjQxOC4xNTA0MDQ3NzUKMzAgY3Rp bWU9MTU3Mjk0MjQxOC4xNTQ0MDQ3ODIKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAABEb2N1bWVudGF0aW9uLUFkZC1JVExCX01VTFRJSElULWRvY3VtZW50 YXRpb24ucGF0Y2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAMDAwMDY0NAAwMDI1Mzc3ADAwMDAxNDQAMDAwMDAwMTY1MzQAMTM1NjAyMzExMjIA MDIzMDMyACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AHVzdGFyADAwbWhvY2tvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c2VycwAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEZyb206ICJHb21leiBJ Z2xlc2lhcywgQW50b25pbyIgPGFudG9uaW8uZ29tZXouaWdsZXNpYXNAaW50ZWwuY29tPgpT dWJqZWN0OiBbUEFUQ0ggdjkgNy83XSBEb2N1bWVudGF0aW9uOiBBZGQgSVRMQl9NVUxUSUhJ VCBkb2N1bWVudGF0aW9uClBhdGNoLW1haW5saW5lOiBub3QgeWV0LCBzdGlsbCB1bmRlciBl bWJhcmdvClJlZmVyZW5jZXM6IGJuYyMxMTE3NjY1CgpBZGQgdGhlIGluaXRpYWwgSVRMQl9N VUxUSUhJVCBkb2N1bWVudGF0aW9uLgoKU2lnbmVkLW9mZi1ieTogQW50b25pbyBHb21leiBJ Z2xlc2lhcyA8YW50b25pby5nb21lei5pZ2xlc2lhc0BpbnRlbC5jb20+ClNpZ25lZC1vZmYt Ynk6IE5lbHNvbiBEJ1NvdXphIDxuZWxzb24uZHNvdXphQGxpbnV4LmludGVsLmNvbT4KU2ln bmVkLW9mZi1ieTogUGFvbG8gQm9uemluaSA8cGJvbnppbmlAcmVkaGF0LmNvbT4KU2lnbmVk LW9mZi1ieTogTWljaGFsIEhvY2tvIDxtaG9ja29Ac3VzZS5jb20+CgotLS0KIC4uLi9ody12 dWxuL211bHRpaGl0LnJzdCAgICAgICAgICB8IDE2MiArKysrKysrKysrKysrKysrKysKIDEg ZmlsZSBjaGFuZ2VkLCAxNjIgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IERv Y3VtZW50YXRpb24vaHctdnVsbi9tdWx0aWhpdC5yc3QKCmRpZmYgLS1naXQgYS9Eb2N1bWVu dGF0aW9uL2h3LXZ1bG4vbXVsdGloaXQucnN0IGIvRG9jdW1lbnRhdGlvbi9ody12dWxuL211 bHRpaGl0LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjc4 MmVjZGZkNTBlNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaHctdnVsbi9t dWx0aWhpdC5yc3QKQEAgLTAsMCArMSwxNjIgQEAKK2lUTEIgbXVsdGloaXQKKz09PT09PT09 PT09PT0KKworaVRMQiBtdWx0aWhpdCBpcyBhbiBlcnJhdHVtIHdoZXJlIHNvbWUgcHJvY2Vz c29ycyBtYXkgaW5jdXIgYSBtYWNoaW5lIGNoZWNrCitlcnJvciwgcG9zc2libHkgcmVzdWx0 aW5nIGluIGFuIHVucmVjb3ZlcmFibGUgQ1BVIGhhbmcsIHdoZW4gYW4gaW5zdHJ1Y3Rpb24g ZmV0Y2gKK2hpdHMgbXVsdGlwbGUgZW50cmllcyBpbiB0aGUgaW5zdHJ1Y3Rpb24gVExCLiBU aGlzIGNhbiBvY2N1ciB3aGVuIHRoZSBwYWdlCitzaXplIGlzIGNoYW5nZWQgYWxvbmcgd2l0 aCBlaXRoZXIgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgb3IgY2FjaGUgdHlwZS4gQQorbWFsaWNp b3VzIGd1ZXN0IHJ1bm5pbmcgb24gYSB2aXJ0dWFsaXplZCBzeXN0ZW0gY2FuIGV4cGxvaXQg dGhpcyBlcnJhdHVtIHRvCitwZXJmb3JtIGEgZGVuaWFsIG9mIHNlcnZpY2UgYXR0YWNrLgor CisKK0FmZmVjdGVkIHByb2Nlc3NvcnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworVmFyaWF0 aW9ucyBvZiB0aGlzIGVycmF0dW0gYXJlIHByZXNlbnQgb24gbW9zdCBJbnRlbCBDb3JlIGFu ZCBYZW9uIHByb2Nlc3NvcgorbW9kZWxzLiBUaGUgZXJyYXR1bSBpcyBub3QgcHJlc2VudCBv bjoKKworICAgLSBub24tSW50ZWwgcHJvY2Vzc29ycworCisgICAtIFNvbWUgQXRvbXMgKEFp cm1vbnQsIEJvbm5lbGwsIEdvbGRtb250LCBHb2xkbW9udFBsdXMsIFNhbHR3ZWxsLCBTaWx2 ZXJtb250KQorCisgICAtIEludGVsIHByb2Nlc3NvcnMgdGhhdCBoYXZlIHRoZSBQU0NIQU5H RV9NQ19OTyBiaXQgc2V0IGluIHRoZQorICAgICBJQTMyX0FSQ0hfQ0FQQUJJTElUSUVTIE1T Ui4KKworCitSZWxhdGVkIENWRXMKKy0tLS0tLS0tLS0tLQorCitUaGUgZm9sbG93aW5nIENW RSBlbnRyeSBpcyByZWxhdGVkIHRvIHRoaXMgaXNzdWU6CisKKyAgID09PT09PT09PT09PT09 ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cisg ICBDVkUtMjAxOC0xMjIwNyAgTWFjaGluZSBDaGVjayBFcnJvciBBdm9pZGFuY2Ugb24gUGFn ZSBTaXplIENoYW5nZQorICAgPT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworCitQcm9ibGVtCistLS0tLS0tCisK K1ByaXZpbGVnZWQgc29mdHdhcmUsIGluY2x1ZGluZyBPUyBhbmQgdmlydHVhbCBtYWNoaW5l IG1hbmFnZXJzIChWTU0pLCBhcmUgaW4KK2NoYXJnZSBvZiBtZW1vcnkgbWFuYWdlbWVudC4g QSBrZXkgY29tcG9uZW50IGluIG1lbW9yeSBtYW5hZ2VtZW50IGlzIHRoZSBjb250cm9sCitv ZiB0aGUgcGFnZSB0YWJsZXMuIE1vZGVybiBwcm9jZXNzb3JzIHVzZSB2aXJ0dWFsIG1lbW9y eSwgYSB0ZWNobmlxdWUgdGhhdCBjcmVhdGVzCit0aGUgaWxsdXNpb24gb2YgYSB2ZXJ5IGxh cmdlIG1lbW9yeSBmb3IgcHJvY2Vzc29ycy4gVGhpcyB2aXJ0dWFsIHNwYWNlIGlzIHNwbGl0 CitpbnRvIHBhZ2VzIG9mIGEgZ2l2ZW4gc2l6ZS4gUGFnZSB0YWJsZXMgdHJhbnNsYXRlIHZp cnR1YWwgYWRkcmVzc2VzIHRvIHBoeXNpY2FsCithZGRyZXNzZXMuCisKK1RvIHJlZHVjZSBs YXRlbmN5IHdoZW4gcGVyZm9ybWluZyBhIHZpcnR1YWwgdG8gcGh5c2ljYWwgYWRkcmVzcyB0 cmFuc2xhdGlvbiwKK3Byb2Nlc3NvcnMgaW5jbHVkZSBhIHN0cnVjdHVyZSwgY2FsbGVkIFRM QiwgdGhhdCBjYWNoZXMgcmVjZW50IHRyYW5zbGF0aW9ucy4KK1RoZXJlIGFyZSBzZXBhcmF0 ZSBUTEJzIGZvciBpbnN0cnVjdGlvbiAoaVRMQikgYW5kIGRhdGEgKGRUTEIpLgorCitVbmRl ciB0aGlzIGVycmF0YSwgaW5zdHJ1Y3Rpb25zIGFyZSBmZXRjaGVkIGZyb20gYSBsaW5lYXIg YWRkcmVzcyB0cmFuc2xhdGVkCit1c2luZyBhIDQgS0IgdHJhbnNsYXRpb24gY2FjaGVkIGlu IHRoZSBpVExCLiBQcml2aWxlZ2VkIHNvZnR3YXJlIG1vZGlmaWVzIHRoZQorcGFnaW5nIHN0 cnVjdHVyZSBzbyB0aGF0IHRoZSBzYW1lIGxpbmVhciBhZGRyZXNzIHVzaW5nIGxhcmdlIHBh Z2Ugc2l6ZSAoMiBNQiwgNAorTUIsIDEgR0IpIHdpdGggYSBkaWZmZXJlbnQgcGh5c2ljYWwg YWRkcmVzcyBvciBtZW1vcnkgdHlwZS4gIEFmdGVyIHRoZSBwYWdlCitzdHJ1Y3R1cmUgbW9k aWZpY2F0aW9uIGJ1dCBiZWZvcmUgdGhlIHNvZnR3YXJlIGludmFsaWRhdGVzIGFueSBpVExC IGVudHJpZXMgZm9yCit0aGUgbGluZWFyIGFkZHJlc3MsIGEgY29kZSBmZXRjaCB0aGF0IGhh cHBlbnMgb24gdGhlIHNhbWUgbGluZWFyIGFkZHJlc3MgbWF5CitjYXVzZSBhIG1hY2hpbmUt Y2hlY2sgZXJyb3Igd2hpY2ggY2FuIHJlc3VsdCBpbiBhIHN5c3RlbSBoYW5nIG9yIHNodXRk b3duLgorCisKK0F0dGFjayBzY2VuYXJpb3MKKy0tLS0tLS0tLS0tLS0tLS0KKworQXR0YWNr cyBhZ2FpbnN0IHRoZSBpVExCIG11bHRpaGl0IGVycmF0dW0gY2FuIGJlIG1vdW50ZWQgZnJv bSBtYWxpY2lvdXMKK3ByaXZpbGVnZWQgYWN0b3JzIHJ1bm5pbmcgYXMgZ3Vlc3RzIGluIGEg dmlydHVhbGl6ZWQgc3lzdGVtLgorCisKK2lUTEIgbXVsdGloaXQgc3lzdGVtIGluZm9ybWF0 aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgTGludXgga2Vy bmVsIHByb3ZpZGVzIGEgc3lzZnMgaW50ZXJmYWNlIHRvIGVudW1lcmF0ZSB0aGUgY3VycmVu dCBpVExCCittdWx0aWhpdCBzdGF0dXMgb2YgdGhlIHN5c3RlbTp3aGV0aGVyIHRoZSBzeXN0 ZW0gaXMgdnVsbmVyYWJsZSBhbmQgd2hpY2gKK21pdGlnYXRpb25zIGFyZSBhY3RpdmUuIFRo ZSByZWxldmFudCBzeXNmcyBmaWxlIGlzOgorCisvc3lzL2RldmljZXMvc3lzdGVtL2NwdS92 dWxuZXJhYmlsaXRpZXMvaXRsYl9tdWx0aWhpdAorCitUaGUgcG9zc2libGUgdmFsdWVzIGlu IHRoaXMgZmlsZSBhcmU6CisKKy4uIGxpc3QtdGFibGU6OgorCisgICAgICogLSBOb3QgYWZm ZWN0ZWQKKyAgICAgICAtIFRoZSBwcm9jZXNzb3IgaXMgbm90IHZ1bG5lcmFibGUuCisgICAg ICogLSBLVk06IE1pdGlnYXRpb246IFNwbGl0IGh1Z2UgcGFnZXMKKyAgICAgICAtIFNvZnR3 YXJlIGNoYW5nZXMgbWl0aWdhdGUgdGhpcyBpc3N1ZS4KKyAgICAgKiAtIEtWTTogVnVsbmVy YWJsZQorICAgICAgIC0gVGhlIHByb2Nlc3NvciBpcyB2dWxuZXJhYmxlLCBidXQgbm8gbWl0 aWdhdGlvbiBlbmFibGVkCisKKworRW51bWVyYXRpb24gb2YgdGhlIGVycmF0dW0KKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0EgbmV3IGJpdCBoYXMgYmVlbiBhbGxv Y2F0ZWQgaW4gdGhlIElBMzJfQVJDSF9DQVBBQklMSVRJRVMgKFBTQ0hBTkdFX01DX05PKSBt c3IKK2FuZCB3aWxsIGJlIHNldCBvbiBDUFUncyB3aGljaCBhcmUgbWl0aWdhdGVkIGFnYWlu c3QgdGhpcyBpc3N1ZS4KKworICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09ICAgPT09PT09PT09PT0gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CisgICBJQTMyX0FSQ0hfQ0FQQUJJTElUSUVTIE1TUiAgICAgICAgICAgICAgICBOb3QgcHJl c2VudCAgIFBvc3NpYmx5IHZ1bG5lcmFibGUsY2hlY2sgbW9kZWwKKyAgIElBMzJfQVJDSF9D QVBBQklMSVRJRVNbUFNDSEFOR0VfTUNfTk9dICAgICcwJyAgICAgICAgICAgTGlrZWx5IHZ1 bG5lcmFibGUsY2hlY2sgbW9kZWwKKyAgIElBMzJfQVJDSF9DQVBBQklMSVRJRVNbUFNDSEFO R0VfTUNfTk9dICAgICcxJyAgICAgICAgICAgTm90IHZ1bG5lcmFibGUKKyAgID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgID09PT09PT09PT09ICAgPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorCisKK01pdGlnYXRpb24gbWVjaGFuaXNtCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgZXJyYXR1bSBjYW4gYmUgbWl0aWdh dGVkIGJ5IHJlc3RyaWN0aW5nIHRoZSB1c2Ugb2YgbGFyZ2UgcGFnZSBzaXplcyB0bworbm9u LWV4ZWN1dGFibGUgcGFnZXMuICBUaGlzIGZvcmNlcyBhbGwgaVRMQiBlbnRyaWVzIHRvIGJl IDRLLCBhbmQgcmVtb3ZlcwordGhlIHBvc3NpYmlsaXR5IG9mIG11bHRpcGxlIGhpdHMuCisK K0luIG9yZGVyIHRvIG1pdGlnYXRlIHRoZSB2dWxuZXJhYmlsaXR5LCBLVk0gaW5pdGlhbGx5 IG1hcmtzIGFsbCBodWdlIHBhZ2VzCithcyBub24tZXhlY3V0YWJsZS4gSWYgdGhlIGd1ZXN0 IGF0dGVtcHRzIHRvIGV4ZWN1dGUgaW4gb25lIG9mIHRob3NlIHBhZ2VzLAordGhlIHBhZ2Ug aXMgYnJva2VuIGRvd24gaW50byA0SyBwYWdlcywgd2hpY2ggYXJlIHRoZW4gbWFya2VkIGV4 ZWN1dGFibGUuCisKK0lmIEVQVCBpcyBkaXNhYmxlZCBvciBub3QgYXZhaWxhYmxlIG9uIHRo ZSBob3N0LCBLVk0gaXMgaW4gY29udHJvbCBvZgorVExCIGZsdXNoZXMgYW5kIHRoZSBwcm9i bGVtYXRpYyBzaXR1YXRpb24gY2Fubm90IGhhcHBlbi4gIEhvd2V2ZXIsIHRoZQorc2hhZG93 IEVQVCBwYWdpbmcgbWVjaGFuaXNtIHVzZWQgYnkgbmVzdGVkIHZpcnR1YWxpemF0aW9uIGlz IHZ1bG5lcmFibGUsCitiZWNhdXNlIHRoZSBuZXN0ZWQgZ3Vlc3QgY2FuIHRyaWdnZXIgbXVs dGlwbGUgaVRMQiBoaXRzIGJ5IG1vZGlmeWluZyBpdHMgb3duCisobm9uLW5lc3RlZCkgcGFn ZSB0YWJsZXMuICBGb3Igc2ltcGxpY2l0eSwgS1ZNIHdpbGwgbWFrZSBsYXJnZSBwYWdlcwor bm9uLWV4ZWN1dGFibGUgaW4gYWxsIHNoYWRvdyBwYWdpbmcgbW9kZXMuCisKK01pdGlnYXRp b24gY29udHJvbCBvbiB0aGUga2VybmVsIGNvbW1hbmQgbGluZSBhbmQgS1ZNIC0gbW9kdWxl IHBhcmFtZXRlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBLVk0gaHlwZXJ2aXNvciBt aXRpZ2F0aW9uIG1lY2hhbmlzbSBmb3IgbWFya2luZyBodWdlIHBhZ2VzIGFzCitub24tZXhl Y3V0YWJsZSBjYW4gYmUgY29udHJvbGxlZCB3aXRoIGEgbW9kdWxlIHBhcmFtZXRlciAibnhf aHVnZV9wYWdlcz0iLgorVGhlIGtlcm5lbCBjb21tYW5kIGxpbmUgYWxsb3dzIHRvIGNvbnRy b2wgdGhlIGlUTEIgbXVsdGloaXQgbWl0aWdhdGlvbnMgYXQKK2Jvb3QgdGltZSB3aXRoIHRo ZSBvcHRpb24gImt2bS5ueF9odWdlX3BhZ2VzPSIuCisKK1RoZSB2YWxpZCBhcmd1bWVudHMg Zm9yIHRoZXNlIG9wdGlvbnMgYXJlOgorCisgID09PT09PT09PT0gID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAg Zm9yY2UgICAgICAgTWl0aWdhdGlvbiBpcyBlbmFibGVkLiBJbiB0aGlzIGNhc2UsIHRoZSBt aXRpZ2F0aW9uIGltcGxlbWVudHMKKyAgICAgICAgICAgICAgbm9uLWV4ZWN1dGFibGUgaHVn ZSBwYWdlcyBpbiBMaW51eCBrZXJuZWwgS1ZNIG1vZHVsZS4gQWxsIGh1Z2UKKyAgICAgICAg ICAgICAgcGFnZXMgaW4gdGhlIEVQVCBhcmUgbWFya2VkIGFzIG5vbi1leGVjdXRhYmxlLgor ICAgICAgICAgICAgICBJZiBhIGd1ZXN0IGF0dGVtcHRzIHRvIGV4ZWN1dGUgaW4gb25lIG9m IHRob3NlIHBhZ2VzLCB0aGUgcGFnZSBpcworICAgICAgICAgICAgICBicm9rZW4gZG93biBp bnRvIDRLIHBhZ2VzLCB3aGljaCBhcmUgdGhlbiBtYXJrZWQgZXhlY3V0YWJsZS4KKworICBv ZmYJICAgICAgTWl0aWdhdGlvbiBpcyBkaXNhYmxlZC4KKworICBhdXRvICAgICAgICBFbmFi bGUgbWl0aWdhdGlvbiBvbmx5IGlmIHRoZSBwbGF0Zm9ybSBpcyBhZmZlY3RlZCBhbmQgdGhl IGtlcm5lbAorICAgICAgICAgICAgICB3YXMgbm90IGJvb3RlZCB3aXRoIHRoZSAibWl0aWdh dGlvbnM9b2ZmIiBjb21tYW5kIGxpbmUgcGFyYW1ldGVyLgorICA9PT09PT09PT09ICA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CisKKworTWl0aWdhdGlvbiBzZWxlY3Rpb24gZ3VpZGUKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisKKzEuIE5vIHZpcnR1YWxpemF0aW9uIGluIHVzZQorXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXl5eCisKKyAgIFRoZSBzeXN0ZW0gaXMgcHJvdGVjdGVkIGJ5IHRo ZSBrZXJuZWwgdW5jb25kaXRpb25hbGx5IGFuZCBubyBmdXJ0aGVyCisgICBhY3Rpb24gaXMg cmVxdWlyZWQuCisKKzIuIFZpcnR1YWxpemF0aW9uIHdpdGggdHJ1c3RlZCBndWVzdHMKK15e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworICAgSWYgdGhlIGd1ZXN0 IGNvbWVzIGZyb20gYSB0cnVzdGVkIHNvdXJjZSwgeW91IG1heSBhc3N1bWUgdGhhdCB0aGUg Z3Vlc3Qgd2lsbAorICAgbm90IGF0dGVtcHQgdG8gbWFsaWNpb3VzbHkgZXhwbG9pdCB0aGVz ZSBlcnJhdGEgYW5kIG5vIGZ1cnRoZXIgYWN0aW9uIGlzCisgICByZXF1aXJlZC4KKworMy4g VmlydHVhbGl6YXRpb24gd2l0aCB1bnRydXN0ZWQgZ3Vlc3RzCiteXl5eXl5eXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKyAgIElmIHRoZSBndWVzdCBjb21lcyBmcm9tIGFu IHVudHJ1c3RlZCBzb3VyY2UsIHRoZSBndWVzdCBob3N0IGtlcm5lbCB3aWxsIG5lZWQKKyAg IHRvIGFwcGx5IGlUTEIgbXVsdGloaXQgbWl0aWdhdGlvbiB2aWEgdGhlIGtlcm5lbCBjb21t YW5kIGxpbmUgb3Iga3ZtCisgICBtb2R1bGUgcGFyYW1ldGVyLgotLSAKMi4yMS4wCgoAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== --M9NhX3UHpAaciwkO--