From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Justin T. Gibbs" Subject: Re: Aic7xxx and Aic79xx driver updates. Date: Tue, 07 Jan 2003 20:46:35 -0700 Sender: linux-scsi-owner@vger.kernel.org Message-ID: <679640000.1041997595@aslan.btc.adaptec.com> References: <200212210334.gBL3Yi111607@localhost.localdomain> <175810000.1041300864@aslan.btc.adaptec.com> Reply-To: "Justin T. Gibbs" Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="==========1805548168==========" Return-path: In-Reply-To: <175810000.1041300864@aslan.btc.adaptec.com> List-Id: linux-scsi@vger.kernel.org To: Linus Torvalds Cc: linux-scsi@vger.kernel.org --==========1805548168========== Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Content-Disposition: inline I've uploaded a new "bk send" file relative to the 2.5.X repository. I've also attached the output from "Documentation/.../bksend". The "bk send" version can be found here: http://people.FreeBSD.org/~gibbs/linux/SRC/aic79xx-linux-2.5-bksend.gz This should correct the false positives some have seen with the mmapped I/O test on some of the older controllers that the aic7xxx driver supports. -- Justin --==========1805548168========== Content-Type: application/octet-stream; name="bksend.out" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="bksend.out"; size=39794 WW91IGNhbiBpbXBvcnQgdGhpcyBjaGFuZ2VzZXQgaW50byBCSyBieSBwaXBpbmcgdGhpcyB3aG9s ZSBtZXNzYWdlIHRvOgonfCBiayByZWNlaXZlIFtwYXRoIHRvIHJlcG9zaXRvcnldJyBvciBhcHBs eSB0aGUgcGF0Y2ggYXMgdXN1YWwuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgoKQ2hhbmdlU2V0QDEuODkzLjEuNCwg MjAwMy0wMS0wNyAxOTo1ODo0MS0wNzowMCwgZ2liYnNAb3ZlcmRyaXZlLmJ0Yy5hZGFwdGVjLmNv bQogIGFpYzd4eHggYW5kIGFpYzc5eHggZHJpdmVyIHVwZGF0ZXM6CiAgCiAgCW8gQ29ycmVjdCBt ZW1vcnkgbWFwcGVkIEkvTyB0ZXN0IGZvciBsZWdhY3kgY29udHJvbGxlcnMKICAJICB0aGF0IGRv IG5vdCBoYXZlIHRoZSAiYXV0by1hY2Nlc3MtcGF1c2UiIGZlYXR1cmUuCiAgCW8gUHJldmVudCBO TUlzIGZyb20gdHJpZ2dlcmluZyBzaG91bGQgdGhlIE1NQVAgSS9PIHRlc3QgZmFpbC4KICAJbyBG aXggYWljNzc3MCAoRUlTQS9WTEIpIGNvbnRyb2xsZXIgcmVncmVzc2lvbi4KICAJbyBLaWxsIGEg ZmV3IGNvbXBpbGVyIHdhcm5pbmdzLgoKQ2hhbmdlU2V0QDEuODkzLjEuMywgMjAwMy0wMS0wNyAx OTo0MDozNy0wNzowMCwgZ2liYnNAb3ZlcmRyaXZlLmJ0Yy5hZGFwdGVjLmNvbQogIGFpYzd4eHgg YW5kIGFpYzc5eHggZHJpdmVycyBDb3JyZWN0IHNldmVyYWwgRFYgaXNzdWVzOgogIAogICBvIERv IG5vdCBmYWxsYmFjayB0byBhIHdpZGUgc3BlZWQgaWYgdGhlIGRldmljZSBkb2VzIG5vdCBzdXBw b3J0CiAgICAgd2lkZSB0cmFuc2ZlcnMuCiAgCiAgIG8gRG9uJ3QgYm90aGVyIGFsbG9jYXRpbmcg dGFyZ2V0IGluc3RhbmNlcyBmb3Igd2lkZSBJRHMgb24gbmFycm93CiAgICAgY29udHJvbGxlcnMu CiAgCiAgIG8gQWRkIGEgZmV3IGFkZGl0aW9uYWwgZGlhZ25vc3RpY3MgdG8gYWlkIGluIHRyYWNr aW5nIGRvd24gRFYgYnVncy4KCkNoYW5nZVNldEAxLjg5My4xLjIsIDIwMDMtMDEtMDcgMTk6MzI6 MDctMDc6MDAsIGdpYmJzQG92ZXJkcml2ZS5idGMuYWRhcHRlYy5jb20KICBhaWM3eHh4L2FpY2Fz bToKICAgICBSZW1vdmUgdGhlIG51bWVyaWNhbF92YWx1ZSBwb3J0aW9uIG9mIHRoZSBncmFtbWVy IHdoaWNoIGlzIG5vCiAgICAgbG9uZ2VyIHJlZmVyZW5jZWQuICBUaGlzIGVsaW1pbmF0ZXMgYSB5 YWNjIHdhcm5pbmcuCgpDaGFuZ2VTZXRAMS44OTcsIDIwMDMtMDEtMDcgMTg6MzE6NDAtMDg6MDAs IGFudG9uQHNhbWJhLm9yZwogIFtQQVRDSF0gc21hbGwgbW9kdWxlIHBhdGNoCiAgCiAgQWRkIGEg bWlzc2luZyBpbmxpbmUsIHNob3dzIHVwIHdoZW4gbW9kdWxlcyBhcmUgdHVybmVkIG9mZi4KCkNo YW5nZVNldEAxLjg5My4xLjEsIDIwMDMtMDEtMDcgMTk6Mjk6NDYtMDc6MDAsIGdpYmJzQG92ZXJk cml2ZS5idGMuYWRhcHRlYy5jb20KICBVcGRhdGUgdGhlIGFpYzd4eHggTWFrZWZpbGUgc28gdGhh dCB0aGUgcmVnaXN0ZXIgaW5mb3JtYXRpb24gdGFibGVzCiAgYXJlIG5vdCByZWJ1aWx0IG9uIGV2 ZXJ5IGJ1aWxkLgogIAogIFVzZSBiZXR0ZXIgS2J1aWxkIHJ1bGUgc3R5bGUgZm9yIGJ1aWxkaW5n IGZpcm13YXJlLgogIAogIFN1Ym1pdHRlZCBieTogU2FtIFJhdm5ib3JnIDxzYW1AcmF2bmJvcmcu b3JnPgoKQ2hhbmdlU2V0QDEuODk2LCAyMDAzLTAxLTA3IDE2OjQxOjIyLTA4OjAwLCBncmVnQGty b2FoLmNvbQogIFBDSSBob3RwbHVnOiBjbGVhbiB1cCB0aGUgdHJ5X21vZHVsZV9nZXQoKSBsb2dp YyBhIGJpdC4KCkNoYW5nZVNldEAxLjg5NSwgMjAwMy0wMS0wNyAxNjoyOToyMy0wODowMCwgZ3Jl Z0Brcm9haC5jb20KICBQQ0k6IHByb3Blcmx5IHVucmVnaXN0ZXIgYSBQQ0kgZGV2aWNlIGlmIGl0 IGlzIHJlbW92ZWQuCiAgCiAgVGhpcyBpcyBvbmx5IHVzZWQgYnkgcGNpIGhvdHBsdWcgYW5kIGNh cmRidXMgc3lzdGVtcy4KCkNoYW5nZVNldEAxLjg5NCwgMjAwMy0wMS0wNyAxNjoyNDoxNC0wODow MCwgZ3JlZ0Brcm9haC5jb20KICBJQk0gUENJIEhvdHBsdWc6IGZpeCBjb21waWxlIHRpbWUgZXJy b3IgZHVlIHRvIGZpbmRfYnVzKCkgZnVuY3Rpb24gbmFtZS4KCgogTWFrZWZpbGUgICAgICAgICAg ICAgICAgICAgIHwgICA0OSArKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQogYWljNzl4eF9j b3JlLmMgICAgICAgICAgICAgIHwgICAxNiArKysrKy0tLS0KIGFpYzc5eHhfb3NtLmMgICAgICAg ICAgICAgICB8ICAgMjUgKysrKysrKysrKysrKy0KIGFpYzc5eHhfb3NtLmggICAgICAgICAgICAg ICB8ICAgMTMgKysrKy0tLQogYWljNzl4eF9vc21fcGNpLmMgICAgICAgICAgIHwgICAgNSArKwog YWljNzl4eF9wY2kuYyAgICAgICAgICAgICAgIHwgICAyNSArKysrKysrKysrLS0tLQogYWljN3h4 eC5oICAgICAgICAgICAgICAgICAgIHwgICAgMyAtCiBhaWM3eHh4LnJlZyAgICAgICAgICAgICAg ICAgfCAgICA0ICstCiBhaWM3eHh4LnNlcSAgICAgICAgICAgICAgICAgfCAgICA0ICstCiBhaWM3 eHh4X2NvcmUuYyAgICAgICAgICAgICAgfCAgIDc0ICsrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiBhaWM3eHh4X29zbS5jICAgICAgICAgICAgICAgfCAgIDI5ICsr KysrKysrKysrKysrLS0tCiBhaWM3eHh4X29zbS5oICAgICAgICAgICAgICAgfCAgIDE1ICsrKyst LS0tCiBhaWM3eHh4X29zbV9wY2kuYyAgICAgICAgICAgfCAgICA2ICstLQogYWljN3h4eF9wY2ku YyAgICAgICAgICAgICAgIHwgICAzNCArKysrKysrKysrKysrLS0tLS0tLQogYWljN3h4eF9yZWcu aF9zaGlwcGVkICAgICAgIHwgICAgNSArLQogYWljN3h4eF9yZWdfcHJpbnQuY19zaGlwcGVkIHwg ICAgNCArLQogYWljN3h4eF9zZXEuaF9zaGlwcGVkICAgICAgIHwgICAgNCArLQogYWljYXNtL2Fp Y2FzbV9ncmFtLnkgICAgICAgIHwgICAxNSArLS0tLS0tLQogMTggZmlsZXMgY2hhbmdlZCwgMTcz IGluc2VydGlvbnMoKyksIDE1NyBkZWxldGlvbnMoLSkKCgpkaWZmIC1OcnUgYS9kcml2ZXJzL3Nj c2kvYWljN3h4eC9NYWtlZmlsZSBiL2RyaXZlcnMvc2NzaS9haWM3eHh4L01ha2VmaWxlCi0tLSBh L2RyaXZlcnMvc2NzaS9haWM3eHh4L01ha2VmaWxlCVR1ZSBKYW4gIDcgMjA6NDE6MjIgMjAwMwor KysgYi9kcml2ZXJzL3Njc2kvYWljN3h4eC9NYWtlZmlsZQlUdWUgSmFuICA3IDIwOjQxOjIyIDIw MDMKQEAgLTEsNyArMSw3IEBACiAjCiAjIE1ha2VmaWxlIGZvciB0aGUgTGludXggYWljN3h4eCBT Q1NJIGRyaXZlci4KICMKLSMgJElkOiAvL2RlcG90L2xpbnV4LWFpYzc5eHgtMi41LjAvZHJpdmVy cy9zY3NpL2FpYzd4eHgvTWFrZWZpbGUjMyAkCisjICRJZDogLy9kZXBvdC9saW51eC1haWM3OXh4 LTIuNS4wL2RyaXZlcnMvc2NzaS9haWM3eHh4L01ha2VmaWxlIzUgJAogIwogCiAjIExldCBrYnVp bGQgZGVzY2VuZCBpbnRvIGFpY2FzbSB3aGVuIGNsZWFuaW5nCkBAIC00NCw0MCArNDQsMzkgQEAK IAogJChvYmopL2FpYzd4eHhfY29yZS5vOiAkKG9iaikvYWljN3h4eF9zZXEuaAogJChvYmopL2Fp Yzc5eHhfY29yZS5vOiAkKG9iaikvYWljNzl4eF9zZXEuaAorJChvYmopL2FpYzc5eHhfcmVnX3By aW50LmM6ICQoc3JjKS9haWM3OXh4X3JlZ19wcmludC5jX3NoaXBwZWQKKyQob2JqKS9haWM3eHh4 X3JlZ19wcmludC5jOiAkKHNyYykvYWljN3h4eF9yZWdfcHJpbnQuY19zaGlwcGVkCiAKICQoYWRk cHJlZml4ICQob2JqKS8sJChhaWM3eHh4LXkpKTogJChvYmopL2FpYzd4eHhfcmVnLmgKICQoYWRk cHJlZml4ICQob2JqKS8sJChhaWM3OXh4LXkpKTogJChvYmopL2FpYzc5eHhfcmVnLmgKIAorYWlj N3h4eC1nZW4tJChDT05GSUdfQUlDN1hYWF9CVUlMRF9GSVJNV0FSRSkJOj0gJChvYmopL2FpYzd4 eHhfc2VxLmggXAorCQkJCQkJICAgJChvYmopL2FpYzd4eHhfcmVnLmgKK2FpYzd4eHgtZ2VuLSQo Q09ORklHX0FJQzdYWFhfUkVHX1BSRVRUWV9QUklOVCkJKz0gJChvYmopL2FpYzd4eHhfcmVnX3By aW50LmMKKworYWljYXNtLTd4eHgtb3B0cy0kKENPTkZJR19BSUM3WFhYX1JFR19QUkVUVFlfUFJJ TlQpIDo9IFwKKwktcCAkKG9iaikvYWljN3h4eF9yZWdfcHJpbnQuYyAtaSBhaWM3eHh4X29zbS5o CisKIGlmZXEgKCQoQ09ORklHX0FJQzdYWFhfQlVJTERfRklSTVdBUkUpLHkpCi1haWM3eHh4X2dl biA9ICQob2JqKS9haWM3eHh4X3NlcS5oICQob2JqKS9haWM3eHh4X3JlZy5oCi1pZmVxICgkKENP TkZJR19BSUM3WFhYX1JFR19QUkVUVFlfUFJJTlQpLHkpCi1haWM3eHh4X2dlbiArPSAkKG9iaikv YWljN3h4eF9yZWdfcHJpbnQuYwotYWljN3h4eF9hc21fY21kID0gJChvYmopL2FpY2FzbS9haWNh c20gLUkkKHNyYykgLXIgJChvYmopL2FpYzd4eHhfcmVnLmggXAotCQkgLXAgJChvYmopL2FpYzd4 eHhfcmVnX3ByaW50LmMgLWkgYWljN3h4eF9vc20uaAkgICBcCi0JCSAtbyAkKG9iaikvYWljN3h4 eF9zZXEuaCAkKHNyYykvYWljN3h4eC5zZXEKLWVsc2UKLWFpYzd4eHhfYXNtX2NtZCA9ICQob2Jq KS9haWNhc20vYWljYXNtIC1JJChzcmMpIC1yICQob2JqKS9haWM3eHh4X3JlZy5oIFwKLQkJIC1v ICQob2JqKS9haWM3eHh4X3NlcS5oICQoc3JjKS9haWM3eHh4LnNlcQorJChhaWM3eHh4LWdlbi15 KTogJChzcmMpL2FpYzd4eHguc2VxICQoc3JjKS9haWM3eHh4LnJlZyAkKG9iaikvYWljYXNtL2Fp Y2FzbQorCSQob2JqKS9haWNhc20vYWljYXNtIC1JJChzcmMpIC1yICQob2JqKS9haWM3eHh4X3Jl Zy5oIFwKKwkJCSAgICAgICQoYWljYXNtLTd4eHgtb3B0cy15KSAtbyAkKG9iaikvYWljN3h4eF9z ZXEuaCBcCisJCQkgICAgICAkKHNyYykvYWljN3h4eC5zZXEKIGVuZGlmCiAKLSQoYWljN3h4eF9n ZW4pOiAkKHNyYykvYWljN3h4eC5zZXEgJChzcmMpL2FpYzd4eHgucmVnICQob2JqKS9haWNhc20v YWljYXNtCi0JJChhaWM3eHh4X2FzbV9jbWQpCi1lbmRpZgorYWljNzl4eC1nZW4tJChDT05GSUdf QUlDNzlYWF9CVUlMRF9GSVJNV0FSRSkJOj0gJChvYmopL2FpYzc5eHhfc2VxLmggXAorCQkJCQkJ ICAgJChvYmopL2FpYzc5eHhfcmVnLmgKK2FpYzc5eHgtZ2VuLSQoQ09ORklHX0FJQzc5WFhfUkVH X1BSRVRUWV9QUklOVCkJKz0gJChvYmopL2FpYzc5eHhfcmVnX3ByaW50LmMKKworYWljYXNtLTc5 eHgtb3B0cy0kKENPTkZJR19BSUM3OVhYX1JFR19QUkVUVFlfUFJJTlQpIDo9IFwKKwktcCAkKG9i aikvYWljNzl4eF9yZWdfcHJpbnQuYyAtaSBhaWM3OXh4X29zbS5oCiAKIGlmZXEgKCQoQ09ORklH X0FJQzc5WFhfQlVJTERfRklSTVdBUkUpLHkpCi1haWM3OXh4X2dlbiA9ICQob2JqKS9haWM3OXh4 X3NlcS5oICQob2JqKS9haWM3OXh4X3JlZy5oCi1pZmVxICgkKENPTkZJR19BSUM3OVhYX1JFR19Q UkVUVFlfUFJJTlQpLHkpCi1haWM3OXh4X2dlbiArPSAkKG9iaikvYWljNzl4eF9yZWdfcHJpbnQu YwotYWljNzl4eF9hc21fY21kID0gJChvYmopL2FpY2FzbS9haWNhc20gLUkkKHNyYykgLXIgJChv YmopL2FpYzc5eHhfcmVnLmggXAotCQkgLXAgJChvYmopL2FpYzc5eHhfcmVnX3ByaW50LmMgLWkg YWljNzl4eF9vc20uaAkgICBcCi0JCSAtbyAkKG9iaikvYWljNzl4eF9zZXEuaCAkKHNyYykvYWlj Nzl4eC5zZXEKLWVsc2UKLWFpYzc5eHhfYXNtX2NtZCA9ICQob2JqKS9haWNhc20vYWljYXNtIC1J JChzcmMpIC1yICQob2JqKS9haWM3OXh4X3JlZy5oIFwKLQkJIC1vICQob2JqKS9haWM3OXh4X3Nl cS5oICQoc3JjKS9haWM3OXh4LnNlcQorJChhaWM3OXh4LWdlbi15KTogJChzcmMpL2FpYzc5eHgu c2VxICQoc3JjKS9haWM3OXh4LnJlZyAkKG9iaikvYWljYXNtL2FpY2FzbQorCSQob2JqKS9haWNh c20vYWljYXNtIC1JJChzcmMpIC1yICQob2JqKS9haWM3OXh4X3JlZy5oIFwKKwkJCSAgICAgICQo YWljYXNtLTc5eHgtb3B0cy15KSAtbyAkKG9iaikvYWljNzl4eF9zZXEuaCBcCisJCQkgICAgICAk KHNyYykvYWljNzl4eC5zZXEKIGVuZGlmCi0kKGFpYzc5eHhfZ2VuKTogJChzcmMpL2FpYzc5eHgu c2VxICQoc3JjKS9haWM3OXh4LnJlZyAkKG9iaikvYWljYXNtL2FpY2FzbQotCSQoYWljNzl4eF9h c21fY21kKQotZW5kaWYgCiAKICQob2JqKS9haWNhc20vYWljYXNtOiAkKHNyYykvYWljYXNtLyou W2NoeWxdCiAJJChNQUtFKSAtQyAkKHNyYykvYWljYXNtCmRpZmYgLU5ydSBhL2RyaXZlcnMvc2Nz aS9haWM3eHh4L2FpYzc5eHhfY29yZS5jIGIvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljNzl4eF9j b3JlLmMKLS0tIGEvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljNzl4eF9jb3JlLmMJVHVlIEphbiAg NyAyMDo0MToyMSAyMDAzCisrKyBiL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzc5eHhfY29yZS5j CVR1ZSBKYW4gIDcgMjA6NDE6MjEgMjAwMwpAQCAtMzcsNyArMzcsNyBAQAogICogSU4gQU5ZIFdB WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF CiAgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuCiAgKgotICogJElkOiAvL2RlcG90L2Fp Yzd4eHgvYWljN3h4eC9haWM3OXh4LmMjMTQ4ICQKKyAqICRJZDogLy9kZXBvdC9haWM3eHh4L2Fp Yzd4eHgvYWljNzl4eC5jIzE1MCAkCiAgKgogICogJEZyZWVCU0QkCiAgKi8KQEAgLTIzMjEsMTMg KzIzMjEsMTMgQEAKIAogCS8qIFNraXAgYWxsIFBBQ0VEIG9ubHkgZW50cmllcyBpZiBJVSBpcyBu b3QgYXZhaWxhYmxlICovCiAJaWYgKCgqcHByX29wdGlvbnMgJiBNU0dfRVhUX1BQUl9JVV9SRVEp ID09IDAKLQkgJiYgbWF4c3luYyA8IEFIRF9TWU5DUkFURV9EVCkKLQkJbWF4c3luYyA9IEFIRF9T WU5DUkFURV9EVDsKKwkgJiYgKnBlcmlvZCA8IEFIRF9TWU5DUkFURV9EVCkKKwkJKnBlcmlvZCA9 IEFIRF9TWU5DUkFURV9EVDsKIAogCS8qIFNraXAgYWxsIERUIG9ubHkgZW50cmllcyBpZiBEVCBp cyBub3QgYXZhaWxhYmxlICovCiAJaWYgKCgqcHByX29wdGlvbnMgJiBNU0dfRVhUX1BQUl9EVF9S RVEpID09IDAKLQkgJiYgbWF4c3luYyA8IEFIRF9TWU5DUkFURV9VTFRSQTIpCi0JCW1heHN5bmMg PSBBSERfU1lOQ1JBVEVfVUxUUkEyOworCSAmJiAqcGVyaW9kIDwgQUhEX1NZTkNSQVRFX1VMVFJB MikKKwkJKnBlcmlvZCA9IEFIRF9TWU5DUkFURV9VTFRSQTI7CiB9CiAKIC8qCkBAIC01NjgwLDcg KzU2ODAsOCBAQAogCQkJICAgICAgIC8qbG93YWRkciovQlVTX1NQQUNFX01BWEFERFIsCiAJCQkg ICAgICAgLypoaWdoYWRkciovQlVTX1NQQUNFX01BWEFERFIsCiAJCQkgICAgICAgLypmaWx0ZXIq L05VTEwsIC8qZmlsdGVyYXJnKi9OVUxMLAotCQkJICAgICAgIC8qbWF4c2l6ZSovTUFYQlNJWkUs IC8qbnNlZ21lbnRzKi9BSERfTlNFRywKKwkJCSAgICAgICAvKm1heHNpemUqLyhBSERfTlNFRyAt IDEpICogUEFHRV9TSVpFLAorCQkJICAgICAgIC8qbnNlZ21lbnRzKi9BSERfTlNFRywKIAkJCSAg ICAgICAvKm1heHNlZ3N6Ki9BSERfTUFYVFJBTlNGRVJfU0laRSwKIAkJCSAgICAgICAvKmZsYWdz Ki9CVVNfRE1BX0FMTE9DTk9XLAogCQkJICAgICAgICZhaGQtPmJ1ZmZlcl9kbWF0KSAhPSAwKSB7 CkBAIC03ODU2LDcgKzc4NTcsOCBAQAogI2lmZGVmIEFIRF9ERUJVRwogCWlmICgoYWhkX2RlYnVn ICYgQUhEX1NIT1dfTUlTQykgIT0gMCkgewogCQlhaGRfcHJpbnRfcGF0aChhaGQsIHNjYik7Ci0J CXByaW50ZigiSGFuZGxlZCBSZXNpZHVhbCBvZiAlZCBieXRlc1xuIiwgcmVzaWQpOworCQlwcmlu dGYoIkhhbmRsZWQgJXNSZXNpZHVhbCBvZiAlZCBieXRlc1xuIiwKKwkJICAgICAgIChzY2ItPmZs YWdzICYgU0NCX1NFTlNFKSA/ICJTZW5zZSAiIDogIiIsIHJlc2lkKTsKIAl9CiAjZW5kaWYKIH0K ZGlmZiAtTnJ1IGEvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljNzl4eF9vc20uYyBiL2RyaXZlcnMv c2NzaS9haWM3eHh4L2FpYzc5eHhfb3NtLmMKLS0tIGEvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWlj Nzl4eF9vc20uYwlUdWUgSmFuICA3IDIwOjQxOjIxIDIwMDMKKysrIGIvZHJpdmVycy9zY3NpL2Fp Yzd4eHgvYWljNzl4eF9vc20uYwlUdWUgSmFuICA3IDIwOjQxOjIxIDIwMDMKQEAgLTEsNyArMSw3 IEBACiAvKgogICogQWRhcHRlYyBBSUM3OXh4IGRldmljZSBkcml2ZXIgZm9yIExpbnV4LgogICoK LSAqICRJZDogLy9kZXBvdC9haWM3eHh4L2xpbnV4L2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzc5 eHhfb3NtLmMjMTAzICQKKyAqICRJZDogLy9kZXBvdC9haWM3eHh4L2xpbnV4L2RyaXZlcnMvc2Nz aS9haWM3eHh4L2FpYzc5eHhfb3NtLmMjMTA0ICQKICAqCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog ICogQ29weXJpZ2h0IChjKSAxOTk0LTIwMDAgSnVzdGluIFQuIEdpYmJzLgpAQCAtMjA1OCw3ICsy MDU4LDcgQEAKIAkgKiBuZWdvdGlhdGlvbiB3aWxsIG9jY3VyIGZvciB0aGUgZmlyc3QgY29tbWFu ZCwgYW5kIERWCiAJICogd2lsbCBjb21lbmNlIHNob3VsZCB0aGF0IGZpcnN0IGNvbW1hbmQgYmUg c3VjY2Vzc2Z1bC4KIAkgKi8KLQlmb3IgKHRhcmdldCA9IDA7IHRhcmdldCA8IEFIRF9OVU1fVEFS R0VUUzsgdGFyZ2V0KyspCisJZm9yICh0YXJnZXQgPSAwOyB0YXJnZXQgPCBob3N0LT5tYXhfaWQ7 IHRhcmdldCsrKQogCQlhaGRfbGludXhfYWxsb2NfdGFyZ2V0KGFoZCwgMCwgdGFyZ2V0KTsKIAlh aGRfaW50cl9lbmFibGUoYWhkLCBUUlVFKTsKIAlhaGRfbGludXhfc3RhcnRfZHYoYWhkKTsKQEAg LTI4ODMsNiArMjg4MywyMyBAQAogCQkJCWJyZWFrOwogCQkJfQogCisjaWZkZWYgQUhEX0RFQlVH CisJCQlpZiAoYWhkX2RlYnVnICYgQUhEX1NIT1dfRFYpIHsKKwkJCQlpbnQgaTsKKworCQkJCWFo ZF9wcmludF9kZXZpbmZvKGFoZCwgZGV2aW5mbyk7CisJCQkJcHJpbnRmKCJJbnF1aXJ5IGJ1ZmZl ciBtaXNtYXRjaDoiKTsKKwkJCQlmb3IgKGkgPSAwOyBpIDwgQUhEX0xJTlVYX0RWX0lOUV9MRU47 IGkrKykgeworCQkJCQlpZiAoKGkgJiAweEYpID09IDApCisJCQkJCQlwcmludGYoIlxuICAgICAg ICAiKTsKKwkJCQkJcHJpbnRmKCIweCV4OjB4MCV4ICIsCisJCQkJCSAgICAgICAoKHVpbnQ4X3Qg Kil0YXJnLT5pbnFfZGF0YSlbaV0sIAorCQkJCQkgICAgICAgdGFyZy0+ZHZfYnVmZmVyW2ldKTsK KwkJCQl9CisJCQkJcHJpbnRmKCJcbiIpOworCQkJfQorI2VuZGlmCisKIAkJCWlmIChhaGRfbGlu dXhfZHZfZmFsbGJhY2soYWhkLCBkZXZpbmZvKSAhPSAwKSB7CiAJCQkJQUhEX1NFVF9EVl9TVEFU RShhaGQsIHRhcmcsIEFIRF9EVl9TVEFURV9FWElUKTsKIAkJCQlicmVhazsKQEAgLTM1MjUsNiAr MzU0Miw4IEBACiAJCXRhcmctPmR2X25leHRfbmFycm93X3BlcmlvZCA9IE1BWChwZXJpb2QsIEFI RF9TWU5DUkFURV9VTFRSQTIpOwogCWlmICh0YXJnLT5kdl9uZXh0X3dpZGVfcGVyaW9kID09IDAp CiAJCXRhcmctPmR2X25leHRfd2lkZV9wZXJpb2QgPSBwZXJpb2Q7CisJaWYgKHRhcmctPmR2X21h eF93aWR0aCA9PSAwKQorCQl0YXJnLT5kdl9tYXhfd2lkdGggPSB3aWR0aDsKIAlpZiAodGFyZy0+ ZHZfbWF4X3Bwcl9vcHRpb25zID09IDApCiAJCXRhcmctPmR2X21heF9wcHJfb3B0aW9ucyA9IHBw cl9vcHRpb25zOwogCWlmICh0YXJnLT5kdl9sYXN0X3Bwcl9vcHRpb25zID09IDApCkBAIC0zNjE5 LDcgKzM2MzgsNyBAQAogCQkJCXBlcmlvZCsrOwogCQkJfQogCQl9IGVsc2UgaWYgKChhaGQtPmZl YXR1cmVzICYgQUhEX1dJREUpICE9IDAKLQkJCSYmIHRpbmZvLT51c2VyLndpZHRoICE9IDAKKwkJ CSYmIHRhcmctPmR2X21heF93aWR0aCAhPSAwCiAJCQkmJiB3aWRlX3NwZWVkID49IGZhbGxiYWNr X3NwZWVkCiAJCQkmJiAodGFyZy0+ZHZfbmV4dF93aWRlX3BlcmlvZCA8PSBBSERfQVNZTkNfWEZF Ul9QRVJJT0QKIAkJCSB8fCBwZXJpb2QgPj0gQUhEX0FTWU5DX1hGRVJfUEVSSU9EKSkgewpkaWZm IC1OcnUgYS9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3OXh4X29zbS5oIGIvZHJpdmVycy9zY3Np L2FpYzd4eHgvYWljNzl4eF9vc20uaAotLS0gYS9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3OXh4 X29zbS5oCVR1ZSBKYW4gIDcgMjA6NDE6MjIgMjAwMworKysgYi9kcml2ZXJzL3Njc2kvYWljN3h4 eC9haWM3OXh4X29zbS5oCVR1ZSBKYW4gIDcgMjA6NDE6MjIgMjAwMwpAQCAtMzYsNyArMzYsNyBA QAogICogSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG IEFEVklTRUQgT0YgVEhFCiAgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuCiAgKgotICog JElkOiAvL2RlcG90L2FpYzd4eHgvbGludXgvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljNzl4eF9v c20uaCM5OSAkCisgKiAkSWQ6IC8vZGVwb3QvYWljN3h4eC9saW51eC9kcml2ZXJzL3Njc2kvYWlj N3h4eC9haWM3OXh4X29zbS5oIzEwMiAkCiAgKgogICovCiAjaWZuZGVmIF9BSUM3OVhYX0xJTlVY X0hfCkBAIC0yODgsNyArMjg4LDcgQEAKICNpbmNsdWRlIDxsaW51eC9zbXAuaD4KICNlbmRpZgog Ci0jZGVmaW5lIEFJQzc5WFhfRFJJVkVSX1ZFUlNJT04gIjEuMy4wLkFMUEhBNiIKKyNkZWZpbmUg QUlDNzlYWF9EUklWRVJfVkVSU0lPTiAiMS4zLjAuQkVUQTIiCiAKIC8qKioqKioqKioqKioqKioq KioqKioqKioqKioqIEZyb250IEVuZCBRdWV1ZXMgKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovCiAvKgpAQCAtNDU4LDEwICs0NTgsMTEgQEAKIAkvKgogCSAqIFRoZSBuZXh0ICJmYWxs YmFjayIgcGVyaW9kIHRvIHVzZSBmb3IgbmFycm93L3dpZGUgdHJhbnNmZXJzLgogCSAqLwotCXVf aW50CQkJICBkdl9uZXh0X25hcnJvd19wZXJpb2Q7Ci0JdV9pbnQJCQkgIGR2X25leHRfd2lkZV9w ZXJpb2Q7Ci0JdV9pbnQJCQkgIGR2X21heF9wcHJfb3B0aW9uczsKLQl1X2ludAkJCSAgZHZfbGFz dF9wcHJfb3B0aW9uczsKKwl1aW50OF90CQkJICBkdl9uZXh0X25hcnJvd19wZXJpb2Q7CisJdWlu dDhfdAkJCSAgZHZfbmV4dF93aWRlX3BlcmlvZDsKKwl1aW50OF90CQkJICBkdl9tYXhfd2lkdGg7 CisJdWludDhfdAkJCSAgZHZfbWF4X3Bwcl9vcHRpb25zOworCXVpbnQ4X3QJCQkgIGR2X2xhc3Rf cHByX29wdGlvbnM7CiAJdV9pbnQJCQkgIGR2X2VjaG9fc2l6ZTsKIAlhaGRfZHZfc3RhdGUJCSAg ZHZfc3RhdGU7CiAJdV9pbnQJCQkgIGR2X3N0YXRlX3JldHJ5OwpkaWZmIC1OcnUgYS9kcml2ZXJz L3Njc2kvYWljN3h4eC9haWM3OXh4X29zbV9wY2kuYyBiL2RyaXZlcnMvc2NzaS9haWM3eHh4L2Fp Yzc5eHhfb3NtX3BjaS5jCi0tLSBhL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzc5eHhfb3NtX3Bj aS5jCVR1ZSBKYW4gIDcgMjA6NDE6MjIgMjAwMworKysgYi9kcml2ZXJzL3Njc2kvYWljN3h4eC9h aWM3OXh4X29zbV9wY2kuYwlUdWUgSmFuICA3IDIwOjQxOjIyIDIwMDMKQEAgLTM2LDcgKzM2LDcg QEAKICAqIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ RiBBRFZJU0VEIE9GIFRIRQogICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLgogICoKLSAq ICRJZDogLy9kZXBvdC9haWM3eHh4L2xpbnV4L2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzc5eHhf b3NtX3BjaS5jIzE5ICQKKyAqICRJZDogLy9kZXBvdC9haWM3eHh4L2xpbnV4L2RyaXZlcnMvc2Nz aS9haWM3eHh4L2FpYzc5eHhfb3NtX3BjaS5jIzIwICQKICAqLwogCiAjaW5jbHVkZSAiYWljNzl4 eF9vc20uaCIKQEAgLTE3MCw2ICsxNzAsOSBAQAogCQkJYWhkLT5wbGF0Zm9ybV9kYXRhLT5od19k bWFfbWFzayA9CiAJCQkgICAgKGJ1c19hZGRyX3QpKDB4N0ZGRkZGRkZGRlVMTCAmIChidXNfYWRk cl90KX4wKTsKIAkJfQorCX0gZWxzZSB7CisJCWFoZF9wY2lfc2V0X2RtYV9tYXNrKHBkZXYsIDB4 RkZGRkZGRkYpOworCQlhaGQtPnBsYXRmb3JtX2RhdGEtPmh3X2RtYV9tYXNrID0gMHhGRkZGRkZG RjsKIAl9CiAjZW5kaWYKIAlhaGQtPmRldl9zb2Z0YyA9IHBjaTsKZGlmZiAtTnJ1IGEvZHJpdmVy cy9zY3NpL2FpYzd4eHgvYWljNzl4eF9wY2kuYyBiL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzc5 eHhfcGNpLmMKLS0tIGEvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljNzl4eF9wY2kuYwlUdWUgSmFu ICA3IDIwOjQxOjIyIDIwMDMKKysrIGIvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljNzl4eF9wY2ku YwlUdWUgSmFuICA3IDIwOjQxOjIyIDIwMDMKQEAgLTM4LDcgKzM4LDcgQEAKICAqIElOIEFOWSBX QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI RQogICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLgogICoKLSAqICRJZDogLy9kZXBvdC9h aWM3eHh4L2FpYzd4eHgvYWljNzl4eF9wY2kuYyM2MCAkCisgKiAkSWQ6IC8vZGVwb3QvYWljN3h4 eC9haWM3eHh4L2FpYzc5eHhfcGNpLmMjNjEgJAogICoKICAqICRGcmVlQlNEJAogICovCkBAIC0z NzksMTUgKzM3OSwyMCBAQAogYWhkX3BjaV90ZXN0X3JlZ2lzdGVyX2FjY2VzcyhzdHJ1Y3QgYWhk X3NvZnRjICphaGQpCiB7CiAJYWhkX21vZGVfc3RhdGUJc2F2ZWRfbW9kZXM7CisJdWludDMyX3QJ Y21kOwogCWludAkJZXJyb3I7Ci0JdWludDhfdAkJc2VxY3RsOworCXVpbnQ4X3QJCWhjbnRybDsK IAogCXNhdmVkX21vZGVzID0gYWhkX3NhdmVfbW9kZXMoYWhkKTsKIAllcnJvciA9IEVJTzsKIAot CS8qIEVuYWJsZSBQQ0kgZXJyb3IgaW50ZXJydXB0IHN0YXR1cyAqLwotCXNlcWN0bCA9IGFoZF9p bmIoYWhkLCBTRVFDVEwwKTsKLQlhaGRfb3V0YihhaGQsIFNFUUNUTDAsIHNlcWN0bCAmIH5GQUlM RElTKTsKKwkvKgorCSAqIEVuYWJsZSBQQ0kgZXJyb3IgaW50ZXJydXB0IHN0YXR1cywgYnV0IHN1 cHByZXNzIE5NSXMKKwkgKiBnZW5lcmF0ZWQgYnkgU0VSUiByYWlzZWQgZHVlIHRvIHRhcmdldCBh Ym9ydHMuCisJICovCisJY21kID0gYWhkX3BjaV9yZWFkX2NvbmZpZyhhaGQtPmRldl9zb2Z0Yywg UENJUl9DT01NQU5ELCAvKmJ5dGVzKi8yKTsKKwlhaGRfcGNpX3dyaXRlX2NvbmZpZyhhaGQtPmRl dl9zb2Z0YywgUENJUl9DT01NQU5ELAorCQkJICAgICBjbWQgJiB+UENJTV9DTURfU0VSUkVTUEVO LCAvKmJ5dGVzKi8yKTsKIAogCS8qCiAJICogRmlyc3QgYSBzaW1wbGUgdGVzdCB0byBzZWUgaWYg YW55CkBAIC0zOTcsNyArNDAyLDggQEAKIAkgKiBiZSB6ZXJvIHNvIGl0IGlzIGEgZ29vZCByZWdp c3RlciB0bwogCSAqIHVzZSBmb3IgdGhpcyB0ZXN0LgogCSAqLwotCWlmIChhaGRfaW5iKGFoZCwg SENOVFJMKSA9PSAweEZGKQorCWhjbnRybCA9IGFoZF9pbmIoYWhkLCBIQ05UUkwpOworCWlmICho Y250cmwgPT0gMHhGRikKIAkJZ290byBmYWlsOwogCiAJLyoKQEAgLTQwNyw2ICs0MTMsMTAgQEAK IAkgKiBlaXRoZXIsIHNvIGxvb2sgZm9yIGRhdGEgY29ycnVwdGlvbiBhbmQvb3IgZmxhZ2VkCiAJ ICogUENJIGVycm9ycy4KIAkgKi8KKwlhaGRfb3V0YihhaGQsIEhDTlRSTCwgaGNudHJsfFBBVVNF KTsKKwl3aGlsZSAoYWhkX2lzX3BhdXNlZChhaGQpID09IDApCisJCTsKKwlhaGRfb3V0YihhaGQs IFNFUUNUTDAsIFBFUlJPUkRJUyk7CiAJYWhkX291dGwoYWhkLCBTUkFNX0JBU0UsIDB4NWFhNTU1 YWEpOwogCWlmIChhaGRfaW5sKGFoZCwgU1JBTV9CQVNFKSAhPSAweDVhYTU1NWFhKQogCQlnb3Rv IGZhaWw7CkBAIC00NDAsNyArNDUwLDggQEAKIAl9CiAKIAlhaGRfcmVzdG9yZV9tb2RlcyhhaGQs IHNhdmVkX21vZGVzKTsKLQlhaGRfb3V0YihhaGQsIFNFUUNUTDAsIHNlcWN0bCk7CisJYWhkX291 dGIoYWhkLCBTRVFDVEwwLCBQRVJST1JESVN8RkFJTERJUyk7CisJYWhkX3BjaV93cml0ZV9jb25m aWcoYWhkLT5kZXZfc29mdGMsIFBDSVJfQ09NTUFORCwgY21kLCAvKmJ5dGVzKi8yKTsKIAlyZXR1 cm4gKGVycm9yKTsKIH0KIApkaWZmIC1OcnUgYS9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3eHh4 LmggYi9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3eHh4LmgKLS0tIGEvZHJpdmVycy9zY3NpL2Fp Yzd4eHgvYWljN3h4eC5oCVR1ZSBKYW4gIDcgMjA6NDE6MjIgMjAwMworKysgYi9kcml2ZXJzL3Nj c2kvYWljN3h4eC9haWM3eHh4LmgJVHVlIEphbiAgNyAyMDo0MToyMiAyMDAzCkBAIC0zNyw3ICsz Nyw3IEBACiAgKiBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW RU4gSUYgQURWSVNFRCBPRiBUSEUKICAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4KICAq Ci0gKiAkSWQ6IC8vZGVwb3QvYWljN3h4eC9haWM3eHh4L2FpYzd4eHguaCM2NiAkCisgKiAkSWQ6 IC8vZGVwb3QvYWljN3h4eC9haWM3eHh4L2FpYzd4eHguaCM2NyAkCiAgKgogICogJEZyZWVCU0Qk CiAgKi8KQEAgLTEwNTMsNyArMTA1Myw2IEBACiAJdV9pbnQJCQkgIHBjaV9jYWNoZXNpemU7CiAK IAl1X2ludAkJCSAgc3RhY2tfc2l6ZTsKLQl1aW50MTZfdAkJICpzYXZlZF9zdGFjazsKIAogCS8q IFBlci1Vbml0IGRlc2NyaXB0aXZlIGluZm9ybWF0aW9uICovCiAJY29uc3QgY2hhcgkJICpkZXNj cmlwdGlvbjsKZGlmZiAtTnJ1IGEvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljN3h4eC5yZWcgYi9k cml2ZXJzL3Njc2kvYWljN3h4eC9haWM3eHh4LnJlZwotLS0gYS9kcml2ZXJzL3Njc2kvYWljN3h4 eC9haWM3eHh4LnJlZwlUdWUgSmFuICA3IDIwOjQxOjIyIDIwMDMKKysrIGIvZHJpdmVycy9zY3Np L2FpYzd4eHgvYWljN3h4eC5yZWcJVHVlIEphbiAgNyAyMDo0MToyMiAyMDAzCkBAIC0zOSw3ICsz OSw3IEBACiAgKgogICogJEZyZWVCU0QkCiAgKi8KLVZFUlNJT04gPSAiJElkOiAvL2RlcG90L2Fp Yzd4eHgvYWljN3h4eC9haWM3eHh4LnJlZyMzNiAkIgorVkVSU0lPTiA9ICIkSWQ6IC8vZGVwb3Qv YWljN3h4eC9haWM3eHh4L2FpYzd4eHgucmVnIzM3ICQiCiAKIC8qCiAgKiBUaGlzIGZpbGUgaXMg cHJvY2Vzc2VkIGJ5IHRoZSBhaWM3eHh4X2FzbSB1dGlsaXR5IGZvciB1c2UgaW4gYXNzZW1ibGlu ZwpAQCAtNjcyLDYgKzY3Miw4IEBACiAJYWRkcmVzcwkJCTB4MDZmCiAJYWNjZXNzX21vZGUgUk8K IH0KKworY29uc3QJU1RBQ0tfU0laRQk0CiAKIC8qCiAgKiBCb2FyZCBDb250cm9sIChwLiAzLTQz KQpkaWZmIC1OcnUgYS9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3eHh4LnNlcSBiL2RyaXZlcnMv c2NzaS9haWM3eHh4L2FpYzd4eHguc2VxCi0tLSBhL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzd4 eHguc2VxCVR1ZSBKYW4gIDcgMjA6NDE6MjIgMjAwMworKysgYi9kcml2ZXJzL3Njc2kvYWljN3h4 eC9haWM3eHh4LnNlcQlUdWUgSmFuICA3IDIwOjQxOjIyIDIwMDMKQEAgLTQwLDcgKzQwLDcgQEAK ICAqICRGcmVlQlNEJAogICovCiAKLVZFUlNJT04gPSAiJElkOiAvL2RlcG90L2FpYzd4eHgvYWlj N3h4eC9haWM3eHh4LnNlcSM1MiAkIgorVkVSU0lPTiA9ICIkSWQ6IC8vZGVwb3QvYWljN3h4eC9h aWM3eHh4L2FpYzd4eHguc2VxIzUzICQiCiBQQVRDSF9BUkdfTElTVCA9ICJzdHJ1Y3QgYWhjX3Nv ZnRjICphaGMiCiBQUkVGSVggPSAiYWhjXyIKIApAQCAtNzAsNyArNzAsNyBAQAogCSAqIFR1cm4g b2ZmIHRoZSBzZWxlY3Rpb24gaGFyZHdhcmUuICBXZSBuZWVkIHRvIHJlc2V0IHRoZQogCSAqIHNl bGVjdGlvbiByZXF1ZXN0IGluIG9yZGVyIHRvIHBlcmZvcm0gYSBuZXcgc2VsZWN0aW9uLgogCSAq LwotCWFuZAlTQ1NJU0VRLCBURU1PREV8RU5TRUxJfEVOUlNFTEl8RU5BVVRPQVROUCwgU0NTSVNF UTsKKwlhbmQJU0NTSVNFUSwgVEVNT0RFfEVOU0VMSXxFTlJTRUxJfEVOQVVUT0FUTlA7CiAJYW5k CVNJTU9ERTEsIH5FTkJVU0ZSRUU7CiBwb2xsX2Zvcl93b3JrOgogCWNhbGwJY2xlYXJfdGFyZ2V0 X3N0YXRlOwpkaWZmIC1OcnUgYS9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3eHh4X2NvcmUuYyBi L2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzd4eHhfY29yZS5jCi0tLSBhL2RyaXZlcnMvc2NzaS9h aWM3eHh4L2FpYzd4eHhfY29yZS5jCVR1ZSBKYW4gIDcgMjA6NDE6MjIgMjAwMworKysgYi9kcml2 ZXJzL3Njc2kvYWljN3h4eC9haWM3eHh4X2NvcmUuYwlUdWUgSmFuICA3IDIwOjQxOjIyIDIwMDMK QEAgLTM3LDcgKzM3LDcgQEAKICAqIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQogICogUE9TU0lCSUxJVFkgT0YgU1VDSCBE QU1BR0VTLgogICoKLSAqICRJZDogLy9kZXBvdC9haWM3eHh4L2FpYzd4eHgvYWljN3h4eC5jIzEw NSAkCisgKiAkSWQ6IC8vZGVwb3QvYWljN3h4eC9haWM3eHh4L2FpYzd4eHguYyMxMDggJAogICoK ICAqICRGcmVlQlNEJAogICovCkBAIC0yMzAsNyArMjMwLDYgQEAKIAkJCQkJdV9pbnQgc3RhcnRf aW5zdHIsIHVfaW50ICpza2lwX2FkZHIpOwogc3RhdGljIHZvaWQJCWFoY19kb3dubG9hZF9pbnN0 cihzdHJ1Y3QgYWhjX3NvZnRjICphaGMsCiAJCQkJCSAgIHVfaW50IGluc3RycHRyLCB1aW50OF90 ICpkY29uc3RzKTsKLXN0YXRpYyBpbnQJCWFoY19wcm9iZV9zdGFja19zaXplKHN0cnVjdCBhaGNf c29mdGMgKmFoYyk7CiAjaWZkZWYgQUhDX1RBUkdFVF9NT0RFCiBzdGF0aWMgdm9pZAkJYWhjX3F1 ZXVlX2xzdGF0ZV9ldmVudChzdHJ1Y3QgYWhjX3NvZnRjICphaGMsCiAJCQkJCSAgICAgICBzdHJ1 Y3QgYWhjX3Rtb2RlX2xzdGF0ZSAqbHN0YXRlLApAQCAtMTE2Niw2ICsxMTY1LDEzIEBACiAJCQkg ICAgICAgYWhjX25hbWUoYWhjKSwgc2NicHRyLCBzY2JfaW5kZXgpOwogCQkJYWhjX2R1bXBfY2Fy ZF9zdGF0ZShhaGMpOwogCQl9IGVsc2UgeworI2lmZGVmIEFIQ19ERUJVRworCQkJaWYgKChhaGNf ZGVidWcgJiBBSENfU0hPV19TRUxUTykgIT0gMCkgeworCQkJCWFoY19wcmludF9wYXRoKGFoYywg c2NiKTsKKwkJCQlwcmludGYoIlNhdyBTZWxlY3Rpb24gVGltZW91dCBmb3IgU0NCIDB4JXhcbiIs CisJCQkJICAgICAgIHNjYl9pbmRleCk7CisJCQl9CisjZW5kaWYKIAkJCS8qCiAJCQkgKiBGb3Jj ZSBhIHJlbmVnb3RpYXRpb24gd2l0aCB0aGlzIHRhcmdldCBqdXN0IGluCiAJCQkgKiBjYXNlIHRo ZSBjYWJsZSB3YXMgcHVsbGVkIGFuZCB3aWxsIGxhdGVyIGJlCkBAIC0xMTc4LDEzICsxMTg0LDYg QEAKIAkJCWFoY19mb3JjZV9yZW5lZ290aWF0aW9uKGFoYyk7CiAJCQlhaGNfc2V0X3RyYW5zYWN0 aW9uX3N0YXR1cyhzY2IsIENBTV9TRUxfVElNRU9VVCk7CiAJCQlhaGNfZnJlZXplX2RldnEoYWhj LCBzY2IpOwotI2lmZGVmIEFIQ19ERUJVRwotCQkJaWYgKChhaGNfZGVidWcgJiBBSENfU0hPV19T RUxUTykgIT0gMCkgewotCQkJCWFoY19wcmludF9wYXRoKGFoYywgc2NiKTsKLQkJCQlwcmludGYo IlNhdyBTZWxlY3Rpb24gVGltZW91dCBmb3IgU0NCIDB4JXhcbiIsCi0JCQkJICAgICAgIHNjYl9p bmRleCk7Ci0JCQl9Ci0jZW5kaWYKIAkJfQogCQlhaGNfb3V0YihhaGMsIENMUklOVCwgQ0xSU0NT SUlOVCk7CiAJCWFoY19yZXN0YXJ0KGFoYyk7CkBAIC00MDA1LDggKzQwMDQsNiBAQAogCQlmcmVl KGFoYy0+bmFtZSwgTV9ERVZCVUYpOwogCWlmIChhaGMtPnNlZXBfY29uZmlnICE9IE5VTEwpCiAJ CWZyZWUoYWhjLT5zZWVwX2NvbmZpZywgTV9ERVZCVUYpOwotCWlmIChhaGMtPnNhdmVkX3N0YWNr ICE9IE5VTEwpCi0JCWZyZWUoYWhjLT5zYXZlZF9zdGFjaywgTV9ERVZCVUYpOwogI2lmbmRlZiBf X0ZyZWVCU0RfXwogCWZyZWUoYWhjLCBNX0RFVkJVRik7CiAjZW5kaWYKQEAgLTQ1NDIsMTIgKzQ1 MzksNiBAQAogCXNpemVfdAkgZHJpdmVyX2RhdGFfc2l6ZTsKIAl1aW50MzJfdCBwaHlzYWRkcjsK IAotCWFoYy0+c3RhY2tfc2l6ZSA9IGFoY19wcm9iZV9zdGFja19zaXplKGFoYyk7Ci0JYWhjLT5z YXZlZF9zdGFjayA9IG1hbGxvYyhhaGMtPnN0YWNrX3NpemUgKiBzaXplb2YodWludDE2X3QpLAot CQkJCSAgTV9ERVZCVUYsIE1fTk9XQUlUKTsKLQlpZiAoYWhjLT5zYXZlZF9zdGFjayA9PSBOVUxM KQotCQlyZXR1cm4gKEVOT01FTSk7Ci0KICNpZmRlZiBBSENfREVCVUdfU0VRVUVOQ0VSCiAJYWhj LT5mbGFncyB8PSBBSENfU0VRVUVOQ0VSX0RFQlVHOwogI2VuZGlmCkBAIC00NjAyLDcgKzQ1OTMs OCBAQAogCQkJICAgICAgIC8qbG93YWRkciovQlVTX1NQQUNFX01BWEFERFIsCiAJCQkgICAgICAg LypoaWdoYWRkciovQlVTX1NQQUNFX01BWEFERFIsCiAJCQkgICAgICAgLypmaWx0ZXIqL05VTEws IC8qZmlsdGVyYXJnKi9OVUxMLAotCQkJICAgICAgIC8qbWF4c2l6ZSovTUFYQlNJWkUsIC8qbnNl Z21lbnRzKi9BSENfTlNFRywKKwkJCSAgICAgICAvKm1heHNpemUqLyhBSENfTlNFRyAtIDEpICog UEFHRV9TSVpFLAorCQkJICAgICAgIC8qbnNlZ21lbnRzKi9BSENfTlNFRywKIAkJCSAgICAgICAv Km1heHNlZ3N6Ki9BSENfTUFYVFJBTlNGRVJfU0laRSwKIAkJCSAgICAgICAvKmZsYWdzKi9CVVNf RE1BX0FMTE9DTk9XLAogCQkJICAgICAgICZhaGMtPmJ1ZmZlcl9kbWF0KSAhPSAwKSB7CkBAIC02 Mjc1LDcgKzYyNjcsOCBAQAogI2lmZGVmIEFIQ19ERUJVRwogCWlmICgoYWhjX2RlYnVnICYgQUhD X1NIT1dfTUlTQykgIT0gMCkgewogCQlhaGNfcHJpbnRfcGF0aChhaGMsIHNjYik7Ci0JCXByaW50 ZigiSGFuZGxlZCBSZXNpZHVhbCBvZiAlZCBieXRlc1xuIiwgcmVzaWQpOworCQlwcmludGYoIkhh bmRsZWQgJXNSZXNpZHVhbCBvZiAlZCBieXRlc1xuIiwKKwkJICAgICAgIChzY2ItPmZsYWdzICYg U0NCX1NFTlNFKSA/ICJTZW5zZSAiIDogIiIsIHJlc2lkKTsKIAl9CiAjZW5kaWYKIH0KQEAgLTY2 NTUsNDEgKzY2NDgsNiBAQAogCX0KIH0KIAotc3RhdGljIGludAotYWhjX3Byb2JlX3N0YWNrX3Np emUoc3RydWN0IGFoY19zb2Z0YyAqYWhjKQotewotCWludCBsYXN0X3Byb2JlOwotCi0JbGFzdF9w cm9iZSA9IDA7Ci0Jd2hpbGUgKDEpIHsKLQkJaW50IGk7Ci0KLQkJLyoKLQkJICogV2UgYXZvaWQg dXNpbmcgMCBhcyBhIHBhdHRlcm4gdG8gYXZvaWQKLQkJICogY29uZnVzaW9uIGlmIHRoZSBzdGFj ayBpbXBsZW1lbnRhdGlvbgotCQkgKiAiYmFjay1maWxscyIgd2l0aCB6ZXJvcyB3aGVuICJwb3Bp bmcnCi0JCSAqIGVudHJpZXMuCi0JCSAqLwotCQlmb3IgKGkgPSAxOyBpIDw9IGxhc3RfcHJvYmUr MTsgaSsrKSB7Ci0JCSAgICAgICBhaGNfb3V0YihhaGMsIFNUQUNLLCBpICYgMHhGRik7Ci0JCSAg ICAgICBhaGNfb3V0YihhaGMsIFNUQUNLLCAoaSA+PiA4KSAmIDB4RkYpOwotCQl9Ci0KLQkJLyog VmVyaWZ5ICovCi0JCWZvciAoaSA9IGxhc3RfcHJvYmUrMTsgaSA+IDA7IGktLSkgewotCQkJdV9p bnQgc3RhY2tfZW50cnk7Ci0KLQkJCXN0YWNrX2VudHJ5ID0gYWhjX2luYihhaGMsIFNUQUNLKQot CQkJCSAgICB8KGFoY19pbmIoYWhjLCBTVEFDSykgPDwgOCk7Ci0JCQlpZiAoc3RhY2tfZW50cnkg IT0gaSkKLQkJCQlnb3RvIHNpemVkOwotCQl9Ci0JCWxhc3RfcHJvYmUrKzsKLQl9Ci1zaXplZDoK LQlyZXR1cm4gKGxhc3RfcHJvYmUpOwotfQotCiBpbnQKIGFoY19wcmludF9yZWdpc3RlcihhaGNf cmVnX3BhcnNlX2VudHJ5X3QgKnRhYmxlLCB1X2ludCBudW1fZW50cmllcywKIAkJICAgY29uc3Qg Y2hhciAqbmFtZSwgdV9pbnQgYWRkcmVzcywgdV9pbnQgdmFsdWUsCkBAIC02NzY4LDYgKzY3MjYs NyBAQAogCWN1cl9jb2wgPSAwOwogCWlmICgoYWhjLT5mZWF0dXJlcyAmIEFIQ19EVCkgIT0gMCkK IAkJYWhjX3Njc2lzaWdpX3ByaW50KGFoY19pbmIoYWhjLCBTQ1NJU0lHSSksICZjdXJfY29sLCA1 MCk7CisJYWhjX2Vycm9yX3ByaW50KGFoY19pbmIoYWhjLCBFUlJPUiksICZjdXJfY29sLCA1MCk7 CiAJYWhjX3Njc2lwaGFzZV9wcmludChhaGNfaW5iKGFoYywgU0NTSVBIQVNFKSwgJmN1cl9jb2ws IDUwKTsKIAlhaGNfc2NzaWJ1c2xfcHJpbnQoYWhjX2luYihhaGMsIFNDU0lCVVNMKSwgJmN1cl9j b2wsIDUwKTsKIAlhaGNfbGFzdHBoYXNlX3ByaW50KGFoY19pbmIoYWhjLCBMQVNUUEhBU0UpLCAm Y3VyX2NvbCwgNTApOwpAQCAtNjc4NywxMSArNjc0Niw4IEBACiAJaWYgKGN1cl9jb2wgIT0gMCkK IAkJcHJpbnRmKCJcbiIpOwogCXByaW50ZigiU1RBQ0s6Iik7Ci0JZm9yIChpID0gMDsgaSA8IGFo Yy0+c3RhY2tfc2l6ZTsgaSsrKSB7Ci0JCWFoYy0+c2F2ZWRfc3RhY2tbaV0gPQotCQkgICAgYWhj X2luYihhaGMsIFNUQUNLKXwoYWhjX2luYihhaGMsIFNUQUNLKSA8PCA4KTsKLQkgICAgICAgcHJp bnRmKCIgMHgleCIsIGFoYy0+c2F2ZWRfc3RhY2tbaV0pOwotCX0KKwlmb3IgKGkgPSAwOyBpIDwg U1RBQ0tfU0laRTsgaSsrKQorCSAgICAgICBwcmludGYoIiAweCV4IiwgYWhjX2luYihhaGMsIFNU QUNLKXwoYWhjX2luYihhaGMsIFNUQUNLKSA8PCA4KSk7CiAJcHJpbnRmKCJcblNDQiBjb3VudCA9 ICVkXG4iLCBhaGMtPnNjYl9kYXRhLT5udW1zY2JzKTsKIAlwcmludGYoIktlcm5lbCBORVhUUVND QiA9ICVkXG4iLCBhaGMtPm5leHRfcXVldWVkX3NjYi0+aHNjYi0+dGFnKTsKIAlwcmludGYoIkNh cmQgTkVYVFFTQ0IgPSAlZFxuIiwgYWhjX2luYihhaGMsIE5FWFRfUVVFVUVEX1NDQikpOwpkaWZm IC1OcnUgYS9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3eHh4X29zbS5jIGIvZHJpdmVycy9zY3Np L2FpYzd4eHgvYWljN3h4eF9vc20uYwotLS0gYS9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3eHh4 X29zbS5jCVR1ZSBKYW4gIDcgMjA6NDE6MjEgMjAwMworKysgYi9kcml2ZXJzL3Njc2kvYWljN3h4 eC9haWM3eHh4X29zbS5jCVR1ZSBKYW4gIDcgMjA6NDE6MjEgMjAwMwpAQCAtMSw3ICsxLDcgQEAK IC8qCiAgKiBBZGFwdGVjIEFJQzd4eHggZGV2aWNlIGRyaXZlciBmb3IgTGludXguCiAgKgotICog JElkOiAvL2RlcG90L2FpYzd4eHgvbGludXgvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljN3h4eF9v c20uYyMxNjYgJAorICogJElkOiAvL2RlcG90L2FpYzd4eHgvbGludXgvZHJpdmVycy9zY3NpL2Fp Yzd4eHgvYWljN3h4eF9vc20uYyMxNjkgJAogICoKICAqIENvcHlyaWdodCAoYykgMTk5NCBKb2hu IEF5Y29jawogICogICBUaGUgVW5pdmVyc2l0eSBvZiBDYWxnYXJ5IERlcGFydG1lbnQgb2YgQ29t cHV0ZXIgU2NpZW5jZS4KQEAgLTU3Niw2ICs1NzYsNyBAQAogc3RhdGljIHZvaWQgYWhjX2xpbnV4 X3NldHVwX3RhZ19pbmZvKGNoYXIgKnAsIGNoYXIgKmVuZCwgY2hhciAqcyk7CiBzdGF0aWMgdm9p ZCBhaGNfbGludXhfc2V0dXBfdGFnX2luZm9fZ2xvYmFsKGNoYXIgKnApOwogc3RhdGljIHZvaWQg YWhjX2xpbnV4X3NldHVwX2R2KGNoYXIgKnAsIGNoYXIgKmVuZCwgY2hhciAqcyk7CitzdGF0aWMg aW50ICBhaWM3eHh4X3NldHVwKGNoYXIgKnMpOwogc3RhdGljIGludCAgYWhjX2xpbnV4X25leHRf dW5pdCh2b2lkKTsKIHN0YXRpYyB2b2lkIGFoY19ydW5xX3Rhc2tsZXQodW5zaWduZWQgbG9uZyBk YXRhKTsKIHN0YXRpYyBpbnQgIGFoY19saW51eF9oYWx0KHN0cnVjdCBub3RpZmllcl9ibG9jayAq bmIsIHVfbG9uZyBldmVudCwgdm9pZCAqYnVmKTsKQEAgLTEyOTcsNiArMTI5OCw3IEBACiAJICov CiAJLm1heF9zZWN0b3JzCQk9IDgxOTIsCiAjZW5kaWYKKyNpZiBkZWZpbmVkIENPTkZJR19ISUdI SU8gfHwgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNSwwKQogI2lmIExJ TlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNCwxOCkKIC8qIEFzc3VtZSBSZWRI YXQgRGlzdHJpYnV0aW9uIHdpdGggaXRzIGRpZmZlcmVudCBISUdISU8gY29udmVudGlvbnMuICov CiAJLmNhbl9kbWFfMzIJCT0gMSwKQEAgLTEzMDQsNiArMTMwNiw3IEBACiAjZWxzZQogCS5oaWdo bWVtX2lvCQk9IDEsCiAjZW5kaWYKKyNlbmRpZgogI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBL RVJORUxfVkVSU0lPTigyLDUsMCkKIAkubmFtZQkJCT0gImFpYzd4eHgiLAogCS5zbGF2ZV9hbGxv YwkJPSBhaGNfbGludXhfc2xhdmVfYWxsb2MsCkBAIC0xNzY0LDcgKzE3NjcsNyBAQAogICogdG8g YSBwYXJhbWV0ZXIgd2l0aCBhICc6JyBiZXR3ZWVuIHRoZSBwYXJhbWV0ZXIgYW5kIHRoZSB2YWx1 ZS4KICAqIGllLiBhaWM3eHh4PXN0cHdsZXY6MSxleHRlbmRlZAogICovCi1pbnQKK3N0YXRpYyBp bnQKIGFpYzd4eHhfc2V0dXAoY2hhciAqcykKIHsKIAlpbnQJaSwgbjsKQEAgLTE4ODgsNyArMTg5 MSw3IEBACiAJICogbmVnb3RpYXRpb24gd2lsbCBvY2N1ciBmb3IgdGhlIGZpcnN0IGNvbW1hbmQs IGFuZCBEVgogCSAqIHdpbGwgY29tZW5jZSBzaG91bGQgdGhhdCBmaXJzdCBjb21tYW5kIGJlIHN1 Y2Nlc3NmdWwuCiAJICovCi0JZm9yICh0YXJnZXQgPSAwOyB0YXJnZXQgPCBBSENfTlVNX1RBUkdF VFM7IHRhcmdldCsrKSB7CisJZm9yICh0YXJnZXQgPSAwOyB0YXJnZXQgPCBob3N0LT5tYXhfaWQq aG9zdC0+bWF4X2NoYW5uZWwrMTsgdGFyZ2V0KyspIHsKIAkJdV9pbnQgY2hhbm5lbDsKIAogCQlj aGFubmVsID0gMDsKQEAgLTI3MzIsNiArMjczNSwyMiBAQAogCQkJCUFIQ19TRVRfRFZfU1RBVEUo YWhjLCB0YXJnLCBBSENfRFZfU1RBVEVfRVhJVCk7CiAJCQkJYnJlYWs7CiAJCQl9CisjaWZkZWYg QUhDX0RFQlVHCisJCQlpZiAoYWhjX2RlYnVnICYgQUhDX1NIT1dfRFYpIHsKKwkJCQlpbnQgaTsK KworCQkJCWFoY19wcmludF9kZXZpbmZvKGFoYywgZGV2aW5mbyk7CisJCQkJcHJpbnRmKCJJbnF1 aXJ5IGJ1ZmZlciBtaXNtYXRjaDoiKTsKKwkJCQlmb3IgKGkgPSAwOyBpIDwgQUhDX0xJTlVYX0RW X0lOUV9MRU47IGkrKykgeworCQkJCQlpZiAoKGkgJiAweEYpID09IDApCisJCQkJCQlwcmludGYo IlxuICAgICAgICAiKTsKKwkJCQkJcHJpbnRmKCIweCV4OjB4MCV4ICIsCisJCQkJCSAgICAgICAo KHVpbnQ4X3QgKil0YXJnLT5pbnFfZGF0YSlbaV0sIAorCQkJCQkgICAgICAgdGFyZy0+ZHZfYnVm ZmVyW2ldKTsKKwkJCQl9CisJCQkJcHJpbnRmKCJcbiIpOworCQkJfQorI2VuZGlmCiAKIAkJCWlm IChhaGNfbGludXhfZmFsbGJhY2soYWhjLCBkZXZpbmZvKSAhPSAwKSB7CiAJCQkJQUhDX1NFVF9E Vl9TVEFURShhaGMsIHRhcmcsIEFIQ19EVl9TVEFURV9FWElUKTsKQEAgLTMzNjUsNiArMzM4NCw4 IEBACiAJCXRhcmctPmR2X25leHRfbmFycm93X3BlcmlvZCA9IE1BWChwZXJpb2QsIEFIQ19TWU5D UkFURV9VTFRSQTIpOwogCWlmICh0YXJnLT5kdl9uZXh0X3dpZGVfcGVyaW9kID09IDApCiAJCXRh cmctPmR2X25leHRfd2lkZV9wZXJpb2QgPSBwZXJpb2Q7CisJaWYgKHRhcmctPmR2X21heF93aWR0 aCA9PSAwKQorCQl0YXJnLT5kdl9tYXhfd2lkdGggPSB3aWR0aDsKIAlpZiAodGFyZy0+ZHZfbWF4 X3Bwcl9vcHRpb25zID09IDApCiAJCXRhcmctPmR2X21heF9wcHJfb3B0aW9ucyA9IHBwcl9vcHRp b25zOwogCWlmICh0YXJnLT5kdl9sYXN0X3Bwcl9vcHRpb25zID09IDApCkBAIC0zNDU5LDcgKzM0 ODAsNyBAQAogCQkJCXBlcmlvZCsrOwogCQkJfQogCQl9IGVsc2UgaWYgKChhaGMtPmZlYXR1cmVz ICYgQUhDX1dJREUpICE9IDAKLQkJCSYmIHRpbmZvLT51c2VyLndpZHRoICE9IDAKKwkJCSYmIHRh cmctPmR2X21heF93aWR0aCAhPSAwCiAJCQkmJiB3aWRlX3NwZWVkID49IGZhbGxiYWNrX3NwZWVk CiAJCQkmJiAodGFyZy0+ZHZfbmV4dF93aWRlX3BlcmlvZCA8PSBBSENfQVNZTkNfWEZFUl9QRVJJ T0QKIAkJCSB8fCBwZXJpb2QgPj0gQUhDX0FTWU5DX1hGRVJfUEVSSU9EKSkgewpkaWZmIC1OcnUg YS9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3eHh4X29zbS5oIGIvZHJpdmVycy9zY3NpL2FpYzd4 eHgvYWljN3h4eF9vc20uaAotLS0gYS9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3eHh4X29zbS5o CVR1ZSBKYW4gIDcgMjA6NDE6MjIgMjAwMworKysgYi9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3 eHh4X29zbS5oCVR1ZSBKYW4gIDcgMjA6NDE6MjIgMjAwMwpAQCAtNTMsNyArNTMsNyBAQAogICog SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT RUQgT0YgVEhFCiAgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuCiAgKgotICogJElkOiAv L2RlcG90L2FpYzd4eHgvbGludXgvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljN3h4eF9vc20uaCMx MTQgJAorICogJElkOiAvL2RlcG90L2FpYzd4eHgvbGludXgvZHJpdmVycy9zY3NpL2FpYzd4eHgv YWljN3h4eF9vc20uaCMxMTggJAogICoKICAqLwogI2lmbmRlZiBfQUlDN1hYWF9MSU5VWF9IXwpA QCAtNzIsNyArNzIsNiBAQAogI2VuZGlmCiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CiAjaW5j bHVkZSA8YXNtL2J5dGVvcmRlci5oPgotI2luY2x1ZGUgPGFzbS9pby5oPgogCiAjaWZuZGVmIEtF Uk5FTF9WRVJTSU9OCiAjZGVmaW5lIEtFUk5FTF9WRVJTSU9OKHgseSx6KSAoKCh4KTw8MTYpKygo eSk8PDgpKyh6KSkKQEAgLTMwMiw3ICszMDEsNyBAQAogI2luY2x1ZGUgPGxpbnV4L3NtcC5oPgog I2VuZGlmCiAKLSNkZWZpbmUgQUlDN1hYWF9EUklWRVJfVkVSU0lPTiAiNi4yLjI1IgorI2RlZmlu ZSBBSUM3WFhYX0RSSVZFUl9WRVJTSU9OICI2LjIuMjYiCiAKIC8qKioqKioqKioqKioqKioqKioq KioqKioqKioqIEZyb250IEVuZCBRdWV1ZXMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovCiAvKgpAQCAtNDcyLDEwICs0NzEsMTEgQEAKIAkvKgogCSAqIFRoZSBuZXh0ICJmYWxsYmFj ayIgcGVyaW9kIHRvIHVzZSBmb3IgbmFycm93L3dpZGUgdHJhbnNmZXJzLgogCSAqLwotCXVfaW50 CQkJICBkdl9uZXh0X25hcnJvd19wZXJpb2Q7Ci0JdV9pbnQJCQkgIGR2X25leHRfd2lkZV9wZXJp b2Q7Ci0JdV9pbnQJCQkgIGR2X21heF9wcHJfb3B0aW9uczsKLQl1X2ludAkJCSAgZHZfbGFzdF9w cHJfb3B0aW9uczsKKwl1aW50OF90CQkJICBkdl9uZXh0X25hcnJvd19wZXJpb2Q7CisJdWludDhf dAkJCSAgZHZfbmV4dF93aWRlX3BlcmlvZDsKKwl1aW50OF90CQkJICBkdl9tYXhfd2lkdGg7CisJ dWludDhfdAkJCSAgZHZfbWF4X3Bwcl9vcHRpb25zOworCXVpbnQ4X3QJCQkgIGR2X2xhc3RfcHBy X29wdGlvbnM7CiAJdV9pbnQJCQkgIGR2X2VjaG9fc2l6ZTsKIAlhaGNfZHZfc3RhdGUJCSAgZHZf c3RhdGU7CiAJdV9pbnQJCQkgIGR2X3N0YXRlX3JldHJ5OwpAQCAtODY0LDYgKzg2NCw3IEBACiAj ZGVmaW5lIFBDSU1fQ01EX0JVU01BU1RFUkVOCTB4MDAwNAogI2RlZmluZSBQQ0lNX0NNRF9NV1JJ Q0VOCTB4MDAxMAogI2RlZmluZSBQQ0lNX0NNRF9QRVJSRVNQRU4JMHgwMDQwCisjZGVmaW5lCVBD SU1fQ01EX1NFUlJFU1BFTgkweDAxMDAKICNkZWZpbmUgUENJUl9TVEFUVVMJCTB4MDYKICNkZWZp bmUgUENJUl9SRVZJRAkJMHgwOAogI2RlZmluZSBQQ0lSX1BST0dJRgkJMHgwOQpkaWZmIC1OcnUg YS9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3eHh4X29zbV9wY2kuYyBiL2RyaXZlcnMvc2NzaS9h aWM3eHh4L2FpYzd4eHhfb3NtX3BjaS5jCi0tLSBhL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzd4 eHhfb3NtX3BjaS5jCVR1ZSBKYW4gIDcgMjA6NDE6MjIgMjAwMworKysgYi9kcml2ZXJzL3Njc2kv YWljN3h4eC9haWM3eHh4X29zbV9wY2kuYwlUdWUgSmFuICA3IDIwOjQxOjIyIDIwMDMKQEAgLTM2 LDcgKzM2LDcgQEAKICAqIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQogICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VT LgogICoKLSAqICRJZDogLy9kZXBvdC9haWM3eHh4L2xpbnV4L2RyaXZlcnMvc2NzaS9haWM3eHh4 L2FpYzd4eHhfb3NtX3BjaS5jIzQyICQKKyAqICRJZDogLy9kZXBvdC9haWM3eHh4L2xpbnV4L2Ry aXZlcnMvc2NzaS9haWM3eHh4L2FpYzd4eHhfb3NtX3BjaS5jIzQzICQKICAqLwogCiAjaW5jbHVk ZSAiYWljN3h4eF9vc20uaCIKQEAgLTE2Nyw4ICsxNjcsOCBAQAogCQlhaGMtPnBsYXRmb3JtX2Rh dGEtPmh3X2RtYV9tYXNrID0KIAkJICAgIChidXNfYWRkcl90KSgweDdGRkZGRkZGRkZVTEwgJiAo YnVzX2FkZHJfdCl+MCk7CiAJfSBlbHNlIHsKLQkJYWhjX3BjaV9zZXRfZG1hX21hc2socGRldiwg MHhmZmZmZmZmZlVMTCk7Ci0JCWFoYy0+cGxhdGZvcm1fZGF0YS0+aHdfZG1hX21hc2sgPSAweGZm ZmZmZmZmVUxMOworCQlhaGNfcGNpX3NldF9kbWFfbWFzayhwZGV2LCAweEZGRkZGRkZGKTsKKwkJ YWhjLT5wbGF0Zm9ybV9kYXRhLT5od19kbWFfbWFzayA9IDB4RkZGRkZGRkY7CiAJfQogI2VuZGlm CiAJYWhjLT5kZXZfc29mdGMgPSBwY2k7CmRpZmYgLU5ydSBhL2RyaXZlcnMvc2NzaS9haWM3eHh4 L2FpYzd4eHhfcGNpLmMgYi9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3eHh4X3BjaS5jCi0tLSBh L2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzd4eHhfcGNpLmMJVHVlIEphbiAgNyAyMDo0MToyMSAy MDAzCisrKyBiL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzd4eHhfcGNpLmMJVHVlIEphbiAgNyAy MDo0MToyMSAyMDAzCkBAIC0zOSw3ICszOSw3IEBACiAgKiBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKICAqIFBPU1NJQklM SVRZIE9GIFNVQ0ggREFNQUdFUy4KICAqCi0gKiAkSWQ6IC8vZGVwb3QvYWljN3h4eC9haWM3eHh4 L2FpYzd4eHhfcGNpLmMjNTQgJAorICogJElkOiAvL2RlcG90L2FpYzd4eHgvYWljN3h4eC9haWM3 eHh4X3BjaS5jIzU1ICQKICAqCiAgKiAkRnJlZUJTRCQKICAqLwpAQCAtMTIwMiwxNSArMTIwMiwy MCBAQAogaW50CiBhaGNfcGNpX3Rlc3RfcmVnaXN0ZXJfYWNjZXNzKHN0cnVjdCBhaGNfc29mdGMg KmFoYykKIHsKLQlpbnQJZXJyb3I7Ci0JdV9pbnQJc3RhdHVzMTsKLQl1aW50OF90CXNlcWN0bDsK KwlpbnQJIGVycm9yOworCXVfaW50CSBzdGF0dXMxOworCXVpbnQzMl90IGNtZDsKKwl1aW50OF90 CSBoY250cmw7CiAKIAllcnJvciA9IEVJTzsKIAotCS8qIEVuYWJsZSBQQ0kgZXJyb3IgaW50ZXJy dXB0IHN0YXR1cyAqLwotCXNlcWN0bCA9IGFoY19pbmIoYWhjLCBTRVFDVEwpOwotCWFoY19vdXRi KGFoYywgU0VRQ1RMLCBzZXFjdGwgJiB+RkFJTERJUyk7CisJLyoKKwkgKiBFbmFibGUgUENJIGVy cm9yIGludGVycnVwdCBzdGF0dXMsIGJ1dCBzdXBwcmVzcyBOTUlzCisJICogZ2VuZXJhdGVkIGJ5 IFNFUlIgcmFpc2VkIGR1ZSB0byB0YXJnZXQgYWJvcnRzLgorCSAqLworCWNtZCA9IGFoY19wY2lf cmVhZF9jb25maWcoYWhjLT5kZXZfc29mdGMsIFBDSVJfQ09NTUFORCwgLypieXRlcyovMik7CisJ YWhjX3BjaV93cml0ZV9jb25maWcoYWhjLT5kZXZfc29mdGMsIFBDSVJfQ09NTUFORCwKKwkJCSAg ICAgY21kICYgflBDSU1fQ01EX1NFUlJFU1BFTiwgLypieXRlcyovMik7CiAKIAkvKgogCSAqIEZp cnN0IGEgc2ltcGxlIHRlc3QgdG8gc2VlIGlmIGFueQpAQCAtMTIyMCw3ICsxMjI1LDggQEAKIAkg KiBiZSB6ZXJvIHNvIGl0IGlzIGEgZ29vZCByZWdpc3RlciB0bwogCSAqIHVzZSBmb3IgdGhpcyB0 ZXN0LgogCSAqLwotCWlmIChhaGNfaW5iKGFoYywgSENOVFJMKSA9PSAweEZGKQorCWhjbnRybCA9 IGFoY19pbmIoYWhjLCBIQ05UUkwpOworCWlmIChoY250cmwgPT0gMHhGRikKIAkJZ290byBmYWls OwogCiAJLyoKQEAgLTEyMzAsOCArMTIzNiwxMyBAQAogCSAqIGVpdGhlciwgc28gbG9vayBmb3Ig ZGF0YSBjb3JydXB0aW9uIGFuZC9vciBmbGFnZ2VkCiAJICogUENJIGVycm9ycy4KIAkgKi8KLQlh aGNfb3V0bChhaGMsIFNSQU1fQkFTRSwgMHg1YWE1NTVhYSk7Ci0JaWYgKGFoY19pbmwoYWhjLCBT UkFNX0JBU0UpICE9IDB4NWFhNTU1YWEpCisJYWhjX291dGIoYWhjLCBIQ05UUkwsIGhjbnRybHxQ QVVTRSk7CisJd2hpbGUgKGFoY19pc19wYXVzZWQoYWhjKSA9PSAwKQorCQk7CisJYWhjX291dGIo YWhjLCBTRVFDVEwsIFBFUlJPUkRJUyk7CisJYWhjX291dGIoYWhjLCBTQ0JQVFIsIDApOworCWFo Y19vdXRsKGFoYywgU0NCX0JBU0UsIDB4NWFhNTU1YWEpOworCWlmIChhaGNfaW5sKGFoYywgU0NC X0JBU0UpICE9IDB4NWFhNTU1YWEpCiAJCWdvdG8gZmFpbDsKIAogCXN0YXR1czEgPSBhaGNfcGNp X3JlYWRfY29uZmlnKGFoYy0+ZGV2X3NvZnRjLApAQCAtMTI0OCw3ICsxMjU5LDggQEAKIAlhaGNf cGNpX3dyaXRlX2NvbmZpZyhhaGMtPmRldl9zb2Z0YywgUENJUl9TVEFUVVMgKyAxLAogCQkJICAg ICBzdGF0dXMxLCAvKmJ5dGVzKi8xKTsKIAlhaGNfb3V0YihhaGMsIENMUklOVCwgQ0xSUEFSRVJS KTsKLQlhaGNfb3V0YihhaGMsIFNFUUNUTCwgc2VxY3RsKTsKKwlhaGNfb3V0YihhaGMsIFNFUUNU TCwgUEVSUk9SRElTfEZBSUxESVMpOworCWFoY19wY2lfd3JpdGVfY29uZmlnKGFoYy0+ZGV2X3Nv ZnRjLCBQQ0lSX0NPTU1BTkQsIGNtZCwgLypieXRlcyovMik7CiAJcmV0dXJuIChlcnJvcik7CiB9 CiAKZGlmZiAtTnJ1IGEvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljN3h4eF9yZWcuaF9zaGlwcGVk IGIvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljN3h4eF9yZWcuaF9zaGlwcGVkCi0tLSBhL2RyaXZl cnMvc2NzaS9haWM3eHh4L2FpYzd4eHhfcmVnLmhfc2hpcHBlZAlUdWUgSmFuICA3IDIwOjQxOjIy IDIwMDMKKysrIGIvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljN3h4eF9yZWcuaF9zaGlwcGVkCVR1 ZSBKYW4gIDcgMjA6NDE6MjIgMjAwMwpAQCAtMiw4ICsyLDggQEAKICAqIERPIE5PVCBFRElUIC0g VGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkCiAgKgkJIGZyb20gdGhlIGZvbGxv d2luZyBzb3VyY2UgZmlsZXM6CiAgKgotICogJElkOiAvL2RlcG90L2FpYzd4eHgvYWljN3h4eC9h aWM3eHh4LnNlcSM1MiAkCi0gKiAkSWQ6IC8vZGVwb3QvYWljN3h4eC9haWM3eHh4L2FpYzd4eHgu cmVnIzM2ICQKKyAqICRJZDogLy9kZXBvdC9haWM3eHh4L2FpYzd4eHgvYWljN3h4eC5zZXEjNTMg JAorICogJElkOiAvL2RlcG90L2FpYzd4eHgvYWljN3h4eC9haWM3eHh4LnJlZyMzNyAkCiAgKi8K IHR5cGVkZWYgaW50IChhaGNfcmVnX3ByaW50X3QpKHVfaW50LCB1X2ludCAqLCB1X2ludCk7CiB0 eXBlZGVmIHN0cnVjdCBhaGNfcmVnX3BhcnNlX2VudHJ5IHsKQEAgLTE3NzksNiArMTc3OSw3IEBA CiAjZGVmaW5lCU1BWF9PRkZTRVQJMHhmZgogI2RlZmluZQlCVVNfMTZfQklUCTB4MDEKICNkZWZp bmUJU0NCX1VQTE9BRF9TSVpFCTB4MjAKKyNkZWZpbmUJU1RBQ0tfU0laRQkweDA0CiAKIAogLyog RG93bmxvYWRlZCBDb25zdGFudCBEZWZpbml0aW9ucyAqLwpkaWZmIC1OcnUgYS9kcml2ZXJzL3Nj c2kvYWljN3h4eC9haWM3eHh4X3JlZ19wcmludC5jX3NoaXBwZWQgYi9kcml2ZXJzL3Njc2kvYWlj N3h4eC9haWM3eHh4X3JlZ19wcmludC5jX3NoaXBwZWQKLS0tIGEvZHJpdmVycy9zY3NpL2FpYzd4 eHgvYWljN3h4eF9yZWdfcHJpbnQuY19zaGlwcGVkCVR1ZSBKYW4gIDcgMjA6NDE6MjIgMjAwMwor KysgYi9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3eHh4X3JlZ19wcmludC5jX3NoaXBwZWQJVHVl IEphbiAgNyAyMDo0MToyMiAyMDAzCkBAIC0yLDggKzIsOCBAQAogICogRE8gTk9UIEVESVQgLSBU aGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQKICAqCQkgZnJvbSB0aGUgZm9sbG93 aW5nIHNvdXJjZSBmaWxlczoKICAqCi0gKiAkSWQ6IC8vZGVwb3QvYWljN3h4eC9haWM3eHh4L2Fp Yzd4eHguc2VxIzUyICQKLSAqICRJZDogLy9kZXBvdC9haWM3eHh4L2FpYzd4eHgvYWljN3h4eC5y ZWcjMzYgJAorICogJElkOiAvL2RlcG90L2FpYzd4eHgvYWljN3h4eC9haWM3eHh4LnNlcSM1MyAk CisgKiAkSWQ6IC8vZGVwb3QvYWljN3h4eC9haWM3eHh4L2FpYzd4eHgucmVnIzM3ICQKICAqLwog CiAjaW5jbHVkZSAiYWljN3h4eF9vc20uaCIKZGlmZiAtTnJ1IGEvZHJpdmVycy9zY3NpL2FpYzd4 eHgvYWljN3h4eF9zZXEuaF9zaGlwcGVkIGIvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljN3h4eF9z ZXEuaF9zaGlwcGVkCi0tLSBhL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzd4eHhfc2VxLmhfc2hp cHBlZAlUdWUgSmFuICA3IDIwOjQxOjIyIDIwMDMKKysrIGIvZHJpdmVycy9zY3NpL2FpYzd4eHgv YWljN3h4eF9zZXEuaF9zaGlwcGVkCVR1ZSBKYW4gIDcgMjA6NDE6MjIgMjAwMwpAQCAtMiw4ICsy LDggQEAKICAqIERPIE5PVCBFRElUIC0gVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJh dGVkCiAgKgkJIGZyb20gdGhlIGZvbGxvd2luZyBzb3VyY2UgZmlsZXM6CiAgKgotICogJElkOiAv L2RlcG90L2FpYzd4eHgvYWljN3h4eC9haWM3eHh4LnNlcSM1MiAkCi0gKiAkSWQ6IC8vZGVwb3Qv YWljN3h4eC9haWM3eHh4L2FpYzd4eHgucmVnIzM2ICQKKyAqICRJZDogLy9kZXBvdC9haWM3eHh4 L2FpYzd4eHgvYWljN3h4eC5zZXEjNTMgJAorICogJElkOiAvL2RlcG90L2FpYzd4eHgvYWljN3h4 eC9haWM3eHh4LnJlZyMzNyAkCiAgKi8KIHN0YXRpYyB1aW50OF90IHNlcXByb2dbXSA9IHsKIAkw eGIyLCAweDAwLCAweDAwLCAweDA4LApkaWZmIC1OcnUgYS9kcml2ZXJzL3Njc2kvYWljN3h4eC9h aWNhc20vYWljYXNtX2dyYW0ueSBiL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpY2FzbS9haWNhc21f Z3JhbS55Ci0tLSBhL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpY2FzbS9haWNhc21fZ3JhbS55CVR1 ZSBKYW4gIDcgMjA6NDE6MjEgMjAwMworKysgYi9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWNhc20v YWljYXNtX2dyYW0ueQlUdWUgSmFuICA3IDIwOjQxOjIyIDIwMDMKQEAgLTM4LDcgKzM4LDcgQEAK ICAqIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB RFZJU0VEIE9GIFRIRQogICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLgogICoKLSAqICRJ ZDogLy9kZXBvdC9haWM3eHh4L2FpYzd4eHgvYWljYXNtL2FpY2FzbV9ncmFtLnkjMjggJAorICog JElkOiAvL2RlcG90L2FpYzd4eHgvYWljN3h4eC9haWNhc20vYWljYXNtX2dyYW0ueSMyOSAkCiAg KgogICogJEZyZWVCU0QkCiAgKi8KQEAgLTIwOSw3ICsyMDksNyBAQAogCiAldHlwZSA8dmFsdWU+ IGV4cG9ydCByZXQgZjFfb3Bjb2RlIGYyX29wY29kZSBqbXBfamNfam5jX2NhbGwganpfam56IGpl X2puZQogCi0ldHlwZSA8dmFsdWU+IG51bWVyaWNhbF92YWx1ZSBtb2RlX3ZhbHVlIG1vZGVfbGlz dCBtYWNyb19hcmdsaXN0CisldHlwZSA8dmFsdWU+IG1vZGVfdmFsdWUgbW9kZV9saXN0IG1hY3Jv X2FyZ2xpc3QKIAogJWxlZnQgJ3wnCiAlbGVmdCAnJicKQEAgLTc4MSwxNyArNzgxLDYgQEAKIAkJ fQogCQkkJCA9ICQxICsgMTsKIAkJYWRkX21hY3JvX2FyZygkMywgJDEpOwotCX0KLTsKLQotbnVt ZXJpY2FsX3ZhbHVlOgotCVRfTlVNQkVSCi0JewotCQkkJCA9ICQxOwotCX0KLXwJJy0nIFRfTlVN QkVSCi0JewotCQkkJCA9IC0kMjsKIAl9CiA7CiAKCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCgpUaGlzIEJpdEtlZXBl ciBwYXRjaCBjb250YWlucyB0aGUgZm9sbG93aW5nIGNoYW5nZXNldHM6CjEuODkzLi4xLjg5My4x LjQKIyMgV3JhcHBlZCB3aXRoIGd6aXBfdXUgIyMKCgpiZWdpbiA2NjQgYmtwYXRjaDEyODM3Ck0n WEwoYC4qPSZTWGBgXlE8XlU8Oy45O15WP1hLTSkjLjBIKU0yPzVWLklERlYkRVxgSDBWSSI+U0ZT VF4KTV05IVErNzo1SVpIPDgtPl0/X08+Klk1PzgsIy85IylHWmBaJTc3S0tUVzw/Tk0oTl45UipJ JUpYIyNUTwpNKz5aMiNXJjo1ME9RLVkkJDI/QS1FK1csK1tOIVZcXiQ3XztDJ0oxSFFDJkRKYFMy SS0qKT5aKEI8VTpcCk1KVEhXQ2A4Vyk1WFZCSSNKUyxXXCNIJUJURkohRTs3US1dRU03VTArUz9L W1NcPidTNitRXTZNUlUnJkMKTTJXJE4sTytaPTMmK0RWXU4tVEFfPFstLi1YWyo2PikmOjRdRCtF OF4nIjw9PERIWV8mPFAyWi4mLjYwRgpNVTpWQVNQKyY3KVYpQCcrPS1PNSk6N1QxNzBbIjFYTzMq Kiw2VVpBRUwiJFUtOEw2OlgyNTs0PEM1Kk0wCk01SiQ2ODQ6NVZFNyMqTCVPMkxHQ0k5LjdFKTFI XDJXOTspPi5CQ1hZJDxGRSgtWTVNNSpZJERERE5GN08KTVJATlNNIVIpSyEqWFdUMk9ETzs9USk9 U1g5LFBSRihSTVhVNS04L1lOXEpISTk1JF0uLFRBKF5BMi8sSgpNVS5QNjBSKytfXlU+Tz8sJkRW TzBEWiVOJi0wTD9CMkYhOF4zNT8uPzM3ITIrIldZNFJSTkFgMztMYGApCk1WLkg8IjY1NjlFLUg8 Kks8Sj5JRkI1SighS0QsP0dNUFg5Ijc7JU1QXi1QL1ckUjBLIi4oJl9LNlM8VC0KTS43Jk8xI09M IkkrJlwrVjtSOT4pTmBTMzMiMGBCJzo8XS1QTEMiLjJONVk3SSUiKkZQQDJRMUZEXEA5QQpNLVIv UDNEIUc7QEVeIyxKMGBKTSpgNzxCUFQoXlJOXSksTCE6TEVPWCM4NkpRJiVUMj1JQVRLTiYsTy4s Ck1ZUC5PJVQqXkAnQlc1NytOXURDM18xOVk8NykpP0RXPVdGXSlfSkQsX11ZKEwjIlpZSVEzRVE7 P0QjWlIKTVNPUlFFTy40SSk3NDNcLSovRyo1VDxBLVFNXkZHKUUjQzcvOyYrSlo5S0I6SzNNLlZQ WTg4I1hVWlRfNwpNQDYiIyZLQkNUUiczOzlMN0JUXjU+MF5MKkteKTgmNVQiSlFcIUpQOktVK0tB WC1VLWA7UD0tLT4lO1ohCk1HWjtIMDVMRDIqLSEzUjNQS01OIkJAPiJdLi0kWEMxTlJdPjdCPU4j IS4yWiRYKFAiNS5gSyJIIjZHPCkKTVdSPkIrMSgxXjIoSCRXKzFAMDJCJl87IiIhOSgyRVFSWl9I XmA1QSZgLSZSQElHUTBWIkZOSVxfNk1CSwpNXE5UXVIpRzRNSDouLCcxKz4rSztNS0cvPSYsVVIj VTQ3UFg/QzUsVi0kUic2Ok8hI18pK0tIMzFHLCEvCk1GWCY/M0pPOlBPYFNNUFBfWEQ6IV8tTiFP XywhKFQ9UURAQF8oUkdSR01MRU0zXGA4LkVgSSU3JTgyMEYKTU01QVI5LU9NPUNXN09YKCZgSkJO UFBgSEwiXmBXJColVEQhXCJXVVhRIio1Wj0tISdXJkxEIkozUllYYApNNS0vUjUtRzFPVj8kQlom YEEkYCVMMFwsIzRSOk4yI00sUiNNLScsIVYqR0Q2NUUoSFk4QjM0PU5ETDM3Ck1KR2BfQ0soRFtH OUcyQ1gsSCsuRCs6WikmUDBBK0I/SDcxIlpFUSRIPlomP1JGWiRUL0goVl41Pzg6VSEKTT8hV0Ei J0IjUlExNyJEUlJcWi02IkNZOzw9SEs9XlhNJD1XNCoiUjRQJi4mO0tKUDBDUyskQkxPRD1GKgpN PEZTS1wsPzBILTNEVC9KNTJXOUZOXiFQRzAlOVpfSjBWUjhXQVk7KzsiOUxWVy0sO0FCIjtaQkJa MlhQCk03Mz5MPTtPQFFSIzJfPUReQCtaTFYxUkZQMylMWUs7Ozs1T1MzNF8/NSQ3Mz8zIlFRRzda LClLQEoyWzgKTU5KRzswXFlMUzFEUlBaPDZJNFs7TCxWYCFNWiYqSUklREY4W0ZUIzJPNUcwTiYn STBdLUZUJ1pgRDRYXQpNTVRXNzZgUy4wVVZAJkMvTVU5P1JKLjczUkk2RVw6JkdeOCRNMy5IUlVf PjhZSlhXXi8sIVFgUjNUXTVECk0nLjAnJjI9WTwiK0NdIUQ5OV1BNUcyVkw4Tkc/N1xCMUA7MDUx QSpNJCheJTdAXTQsJSNWPlZaXyNXKkwKTTQ/RSQoJURGOTRVNzcrS15bOzFIUDpRJCYxOiFESEA9 LV0/Pz1NUSElST1gUzEpSTZOSltAVTNMQC4xUQpNTFgkUiE6IyZMUDNEOlkyMVRZLCZSKygkQUIp K1BETTBXRSNMSSlVWGAlOCVFRzFSPEdAVlUxYFdbLjglCk1PYE1POSs8TEJZKl0+Ti9cTC8rJ1w9 T11KPzpBSTktYF8yI0hcQlA/UFZYVyVYJFBKL1QwJF41SkgpKU4KTU5LWk5COkZEVl4uM14+QkpA JDkvUzslLkozVFQwKkM5MFJPQCtFYEosWUZGLFpaTzonMzxKMjgnTTYlSwpNMCFGWlM9Qy8qKUpB XTw7MFgkIkkvWlVIRUEvYD0sVT44UCtGIytYJiRHRUguQztgUiMvOzA9TkBDTyRECk0pUlUwUjcy S046W0taVkFUSj9DW0cpODtOSjgtJzo7W1QnQEtIJ1lARidKUCdGUUQxOlZUJFIqV1c4NC8KTUMj Uz1BJEsxWk9PQScrNiJWUDg9PkIiKi0xSDhHTj5UPzYmTTtMLz1LVlJaKlRRU0skVkglRz5bREpM NwpNLk0vOFQtJCJFU0hAXylBS0JMIzo4JVRTIlgoOjUlXCM2RSw9RiY4RDZePSMxWz1cW0MmL01S VEFPLzg6Ck1SV0ZGSEFFJlRCUV0rNEBZTFVUOFMwJD9ARSNAU0tgPTQqJ1EwYE1AJkpDL1VYIjMs W1wrLkZINz8iVTIKTVE8JCE0PS9KQFVDL1JPW1RaQU5PI1w5QT85QkBRMEMnJVFJUy8jPDBgPEoq SzUwWy80LkBSQ0dWPk4oOgpNMi42Pk4jOFlIVC8rSVlLJj0uOTFBWzs7SUssPlpeOzUzLF4tYDAu V11NU1wsIi0oSzFgM19FWUM/PCw0Ck1TUSw9VygzVTsxSi4oVzMvYE4vJ0xfV1VBRV01XSEiKjAh LzdeNF1HIVRELDQ4Tjs1JlpfKzYiJVhcOzwKTV1fKDo7KlBCNiIsQFYnNkomVC4zNEshN1Q2QFNb W0REWjorRkZELSpVRTpMTTkkJVlHOiI1Q04sQEU5WgpNJl9EKTYmRVteUy87LVpaPyM9UE45IUJd RV84PSZFXzJbTkpZLVYlT1QhTl9XNCdPPiJcLlBHOEhgTENFCk1XNEkjKkU0JUhFLFxGWTNETjJF OD83JSRTTFo6KS5aQ0JXI0QvWlEnJzcwW0BEVjVBTCVAUUcmKD9ELUgKTTwuQUMkO0dLPFkwLF1R VztUR1EsMTkyKkYzVEdeIysiI1UiNkZbRzNPTSIvMSdFWC9JJTI8QldfIV0vSgpNOyEmLEtGIlFV NzEqNiskQT9ZLDdZJURDSikpKikxI10uK05bQkQ6NUU/VT0hR0tUTFYqLTpVUEdPLUJgCk1JUCcv YEdHXkcrU0hAUSQ7IV4xNzxPQkFVQ0tfVl5FMVxfIkJXSkk9WyE8K0E9JytVVz0/T0kqJS46SFAK TUMzWTFWLj9DQl44QT9aMWBFMGAqLTRRO1BfWykpUTE6KiEjVTRXRCE2JEcjX1EkTypHTjhdPzJc X0laNApNIi1OJzAzQFs/JV1PRzM/XkhXWFBEUCVGXCsoJzFHT1pIQysqPDUiTDY7O0E4YFdSQjM1 KEo9Tz5WX0RgCk1SLlAiSCdZKUZSLzRRJldSIlZbXmAwOl8xQ004PkVbWDdOSVtJMz9NS0dOOURO P0RfLkFNWltQLlk+XjMKTU9ZIj08UEY9JzUoRS5TTCciRUtbS1lZRisyRVJVQjpNKTdRTEZaSSg8 MTs0UCwkTCw2YD0oJjxRTUNJSQpNPDRZKlZFOThaUVRMOEVTTzgxMUZIPUhMMjdUVy5AYDJaPVtG RlE3UGBPPkVVP1klWy9UV0whUlpDSWA0Ck08Lk0iJEEnRCg+KEYzIy5SJVk5JTY2ND9dKSU6JkM1 Qlc9Vz9EI19QOVUvYExFPV5IQSdRPjgsNE1UNlIKTUNKUUBPJDYjRlFKPTQyTjAvOy1EWCosWzJN K0coJDZXNTJCVzBgIUxeLzZVKCEnTmAkV09cRGBeTj4sIgpNSzcnU11OMEVFRj87QTVMTSwhMTMn KkQ6JF4pUiIqLl8jXCtEJUotQkApNV0yODsoPj0qPU5AU0UyPDJMCk1RJ0IyXCFbQS5RR0U0N0Za XEVVOCM5KCZKPEZQUy9ROVAtW05ZMy9eRk0hN0hdR19FNzFALiRJTzgrKToKTTgzI1peTjcrPzxB SlZQOUE1RyRXO2A+Qis8Rkw1R19bXjNUMiQoQjAvOTIrQD9gJkVUYC9ETkRePy9JSwpNSl87Jy9P RT8zJSRgUUInQUpeKTdeMCczMkEpSlgxODxCIVMsPzQjUiNcYD1GJkMkNEhVXC5LUSEmWjAvCk1a ODVJI1E2WVpEWj4zTzhFNS1UKDxRWF47SVFeX0AqVU1RSkdPWz4uWlo/UCFDSjEtVDRWJVcoXClf M0YKTVczWDAkKidbWkw2WFNKXzEiIlJDNkw6T1osVE8tVTVaMFdeWSg5KD8pX1JbTVM+YCknOEso Ul9WPD4hKgpNO1AhKSs5Mj1eX1w5X008IUY0RkwkQDM/NkpJO0QiIk9aLF9COyQvUiFPUTlXITRA UF1MUEBAVzBIIlRECk08TlMnTiFSPCxLNk4xQVY6XVRITS8xYFtGQEZEYFhDKEdVYCMiKyxZLj9Y LSJFTixSQ0w7SD8oJU83TjsKTUpEQTIuOj4sQDJULUMqWUJCIUE9RzxJLTRDKlZQTjEoNjMsU2BV MjhLXUhRNVo6MistLC5ALj1KTyNcLgpNQkI0VCEpLzssSEgrRiRTTSwyWSs5OVU1SiRSM0pIP1xP Mjo5PTgjLEkkWkdgWD9JUCheRjNIUUIoNV1TCk08RjchXiQzQilGTElaRlxJUz5PNV8jMEgqIVks LDFbRV46X1pfOjI1Sl1fVyRXMz0tKU0tTDImUFdNXEUKTUdKLVcmJzk1VFE/Ni5UQik7UDZMO1A+ XU9IUEoxM0xCJk8wXCgmWGAoIk1LOTVJXjZbXFhZYEomWiRfXwpNIjYnKEk0UVVFJEI1Q1VWMEI2 JERSJidDUicqXkAuQUktT1pILVVPUFtbU1FaOTNMMy81XDlSJFo1P1peCk0zNSNKJEZbQjM9OjUq XERaLFg8NF9NMEU2KFc1TDpKMyRNTC5MNzpPVz1NVEkiJiNPMjQ1ND5BKCpeQlkKTUwtUzMqWEU1 Wj5JPiRKTUouJ1hIN0U0Mz1DRFI5WC05RyZDJVBJXSQ9JCZBMUZVKDpGKzBVNTFEWF5bTgpNXTQk MS5UI0UqL14xJkBCRCsrV0k9XVQsJzAxMkpSRl1aNVIvLFonXi08WlBALyZXJjdAT1g3Vz81JDYs Ck1gWlA9UkBUXi0iQlc1MiJHTUNKTkY7VE1DVTRNMyMlSkYpUzdGVFZJJixBXT9IR05KNFVYVCMx QzI8WEAKTSJXJUpQXkAyXEw4I1QrM08xIUYsMEM3U1M/Xi5dIVpIWEVQSC1WWSNPSkdIQFlHYEBe RVhgXTYuJzJDTgpNVzNBTDgzO0tAMzNYU0hfPkRMM00yMk01TmAnWilFK1RAX0Q9Xjc0OjFLWmA/ LUBgQCI0Ji5fPTwlP19ACk1AQzQpQiw6WE8hMEo6KC05KlJVJSY8NGBSPVxWL0lXK0ctIWBMIi5P LD5QYDpQMiVWTDY8SEhcSTBRNDUKTVYoWCc0MmBJMCZaViskLCEqUl1fNzhINl43TSFFVT5eU0Qk VUBHNC44QTVVPkUxLC1gWjpCPVwrNC41NwpNQ0I7VUYmQE0nMV8mTzJPP1ZcYC4wI0o0Niw1Ilk0 NlFgJzc3KFhGQUxaLCYkOiE0ODUwWkMnMFJaKi86Ck1aNjgjRiJNT0gkKEcsOTkjQUhPKEMpPEIk TkJUMSZeMkBGI0JBTkJeI2A5QjJHPVVPM0EhSTEyUjUoSzgKTTQiIjIkMkRFLC5MTUYsXVY+K0RH WjA9WEo5NyZbPFBfUGA4VTZUPj8zRFguM1ZMJ0kvKSJOSlE+NSNBUgpNVTJDXz0xKUY4SiQiUUVY VDssIVNcR19QXEoxVT1gKTYrIzJcP0dZNi9bVTMxVFZHTjU9Mj5AKzUmLjktCk0jUi0vVjssP0NE WE9GTD84KEszNDFGRDQ0PllDN0A/VDYtRzo+KSMtWSNEQCpPN1BbLyNTPjFVK04uW0AKTS4wJUk5 OD1JMlpaQGAjXS1bLT03PVhMWktfXV49JyUsSDpPMEI0Xy02Ti08LUVSNyosYCc/U0snXC1VQQpN WFVDRTcmJTg8M0NPIy1SQ0BOJUYoVVshKT8/LSlIPS5cKTMtTEAkVTRcSC4hVTcwUUJgMTRVXztD LjM6Ck1PU1IiX19APjAxNEROSkEkTi9GMStMJjtCNE8wTSowTlIhVzQrRz4hRkkzTSRJIkMzWj9P Jk5dOydRS08KTS9TMF5EPiYwKiM9OjtMM2BKSls1UjlPN1kmLl0+NUhfJ0dWXVFQXixgUiJAIU0u SEIwNEotVTYtVjxIXgpNUklfK05RUSEvVlVQMlgsXkZRLkdYXSU9SVosX1k3MFw+TCtJWi1dUy5P Sjs8U0g+XzMsWycxTjo5SltPCk08TTEtWTcpNFNSPTxDTUwqWjdbYDlWKEw4OD1OQzlCTzc6IyYw L0E9LVY8WTUrJSJPWDEmWjIxKitBT1QKTV1fOSE+X1ldJChILENUTi04RjYrNFg+RlkqOVBPRjwt UWBSOi1aQlEqRWBYTlA5Sl06JiVEPkAyVTs8JApNWzVcUCE0M0lXSEQ2KiQ6PURVJEc2TlooIzxG IixES0RJVi0hIVVHMEwmUEgzMFRTSks7RFNDQyMsIjdECk0xOEoqJFstLDo5M0dTVEQ+Ujc1OlNH NzpYRVNXOE8oQUdYVjc7KTtfJUUmNi1GISlLUWA6Tjk7Mj0tPSsKTVErRiVfRz89UjE0RzxfNzVO MzZVWjEzTDYjUFpBRS9bXj9CODcnPSRJYDBHK0E2NzotUCssUzBeST9YRApNUzQ0OVlLR0RMT0Ix J0ouOSlOUiI/P2AsMDhfViM2Ij5SPEAhKjQsNz0hP1lGVyg3LzFgTE4jO0Q1WFlbCk1XJFpVNFhY RUMnTFQnV2BMKztQNE1OOzw7WEoxOzNdVT8vUENEOyY6UlwhXVNEIkxgR1IsWlZGOFwmTDEKTTNU RD5KW0VLKCtIN1MwYC1XPTUwOjdYMElOLiNfKCMpWzFZRTdQVVssVzRQI0RCQ0FKLiMrOlBTQFJO NQpNUiImNDVRQk86KiJNVFJJO0RHMFdbWUk3KUlGWFo3PSMnWUA1OUBBNDQxJ1lNV0JTUDs0YF1J VyIjUkkrCk1EYC5fMj9KUytgJ1ZYPjRgMzxgPkNgJVFcMCFaW0AqNU5BJ0RAQEdLSiQtOFdeKFAm JyxYRUo5UC9DRzgKTUdCK0RcMiomQ1gwO0gvPExBLz8xWCpeRVwuUy4wRTU9WEkrW19PYCJEMyo9 M15SQ1JHPFEjSjJBWFNJWQpNTUA8Rl8/Wzg8M0BVQyU3UjsiXS1fK0dPUURNVCpPTy0oXUQ/Nk4k O2A7IyYwIilBOypeOiEwMFBJXz9OCk1fJUBKX0hJTzldTD5LXikoVzxBJyRgJDpLXTFVJytXUVEx X0MqU0UmNSpLTllMQldaPyZCQjlcJzhIOzQKTUojRlFCT0ZLJEJSQFRLLl1XKl5gPlotP09HUUlP P1c8LipaVVdDNjopV1xdOy07VyJdNzdZYFpGWSREQApNXEM2V0NcJVBPOF5ZPE4/UTJJS1VdWlZT OU9XQlhGX1A6KVE+WyE9PldKTUYiSVslS1VCPEZfOSpMTEJYCk1HWjQrRSRGQFo9Iyo0T14xRERE SSctTDQ6T09aKlxATEczQEBNI0MxODNFLV1eLVZfXlhCMEclVV1STEgKTT9KSyZSOFQxUTwqXDtU RklIPygjRC46LkkhSUlZMiowUzlEPUFVTygmI1xSMTouLD1VTT1LKUQmO0JCOApNJUMmKyhRUz1G UlNHMjQwWDNSIyJGNCckQFk0XEEwQ0cwNDBYPFEkUU1cUllCJyNGKFYoMlQlYCMrPU8hCk1gLVRR J0lTWT4nI05YXCc5JiFaPFFfJ0AvKEAnWVBEXC4iLFxWITNQXCoyTi9TRy1MLjQzJl5PSVw/PC8K TSw2QzwnQysmMyc2WyJFT0MlKC5RKzMvVi5RXDM0Lj9YRVMkKk9NTFFAMU1VMyghOipKMiwmQyhX L0FcLgpNUENdOi5AQ186ITIkO1crSTo2SyhZVzwsUE1fOlkwUDJYTTg6PDBeLEUoU00hI1ksVzUv NTNWKS9NJCI/Ck1dWl1gTDBeJEMmJWBNNE9OLCo1QCNWI1AjXjMxUDwoMD89UEdOR14vUEAkPlws JjJULTQjRj9IUTMhVTgKTWA/K0xDMFIpPCtOMDBJSC8mKCpJW0ItIiVVJEJRT0ZSPDs3NyYjWCEu MD9dNSYzQ15eYExCXjk+VlMtJApNIUhEJ1pJVzxCOVZeJShbKDM4XSFLXV9SVzIzYE9OJDlJI1NP UjpDQ0o+QCo3VVQ9JV84JCVDOlVURD9HCk1FPCJONEAsUE45IStXQyUnOCQrYCRAKmBYMio2OV0j Xkg9PlBLOFtaKiFcTCxWVUIvO0FDLSdfK1orUV4KTT8vJUk3XlhcQyM5TClNTSU6IV5KTzIpOD9H P1ZCPFs9OlcoXidOSis/KkIxKiMlWiE7PU1cQTRcN0wtMApNMUBNSDVNUzxWNipJLDY4UzojQSYl QiEjVScxIy1UIVFKSUZGIjYrMzAjVypET0xGViMoOUJaJzopV05ECk04QFpAQjEoTl5QP0ROM10o OCIqWiFcMkBaK1RWKzg8MzY4QiMtTiJdIzpTU0JcLkNDWSstVSs5NTw9Mz4KTTQ0XUU5WCE5OUZK M04/Oic+Vy5eKStfXjJOU10hNztcNT4jWEVOXTQ2KEwnUVsnQjhQPD0tUFUtRjlXSwpNLC4jVicn MF8qX11dKS5KVkJCNzg5SzVYWCE2KElLLEstXFlLIyQ4P0xCVDRSKyguTSk+WUtaNkhLRk4tCk0h R0ErOlFBPU4/Kk5VTDUqMV0mTjQ0TVNgLT5aOz1NSiNYOk88OVMtKSI3UydfWCxBK0hKO01FPVJZ N2AKTSlPJzJEK183Vys/TFsjKiY3STo6QT5JSjM4PCdHSDBgRT8qP18yMyQvPEMuN09ERyg8TzdW Qz9cS0I8QQpNUyMoTzxTLTdWTTMlQ1ZIUzQ+SDFbM1EmIlosTlxVQFpITitNMi1JV188RD1QOkRc OVBZX10/K0gzLCFfCk0vVDkjMCpCWDM0IlshK05cPy5ERyErTzRbIzBKPzkzSiw3VzJYTE48RFE5 SjknPiojPUxUKVxEK11SLFoKTSJfMCY4LzMkWDs6O1o1I1VbVyMtUzdIKzkmWjQuRTMpVTUkQT5Y Vy0xLVNDVjxbWUJXXiVKNlxWMyVVPQpNOlszLDZFXF0zJVcmPFxHPyJWSTE+NyIhKDg0OGBXUkBA UUI+JUQ5IkBfMEgqIVkjNj0qMidVNjAuN0xVCk1CNjhHLElJXSsmTyguJ1g9LCxdNDw0U1tYMSdM X0lQKD1HXikiJzlfN0pDVShQNEwnXCcuLiU8JixTWUcKTThdQkdDK0cnOF1CQSQkVjNgMik8VFcn LCw2XD4zXlhPJCxTTlNQMlNeVz4iVjo+KzRKJ0lMWydMPVkvXApNP1ctN1VZTEAjJDY/XTU8MEVL V1lgJzElUi44Mj0zWjg7LSwoPlVNQiYpKiwzJydRWFxUP09dWTsuRiNICk1IIzFOT0VgLUEtSVpU SF1TM1xcPSNKO15LKiw5TjVPK1tVT1MwPVw7QDRSJSFAJkVbIis6USlPW1hUJy4KTSE2My8wRExJ VVstIjo1N15PKilQN087PzsiKjwrV0BASjRRNyRKWS1SREo4SEZNMz9NSFJKOVZGPSdgTwpNPCVF VzBALyNLOjhEMTMhOSdVUlhfJjVMPUlXPDg9PTZRQUchNk5KRiZKKCVBVDw1QiRJWDRKSSFNLjEp Ck1GODxIPDBTNzU4N0hHXE5UVCRBMyFKKiUvS0FQQi9YJlA1KUZBODgoOylAMUhDJDBDXTxHNSVT NC4tQyQKTShNODEtQSkyQj0zVk42OFgtLFwzPFUxLSZVKy4mOCpCPFxCIjQxLyZJMVhcX1lHLDRJ NTdFSE0xIkEvNwpNUytSWEFDMTtWQVdWUTNWWFAkNUlPXiMnKTFSTjZAN0E5Q1VHKlRXWCFFWT47 YF08MzNaQihKYFIzVT81Ck0mXktZNypNMVpaKjpXKyFKJF4rMCRRTzZWTjNaNjMyKUBIL0QvIzok QTBOKjtWWzArPC09TF04S1tLTCQKTVtdJzM9KkYxNEg9MCQlQ0NPOzpRIj9HKU8nSEYxUSYqJktZ SiZbLkpYNE00RFNeVjtXPykqNCtEX1pVMwpNLyUwJClPJS5BJks2XlRUOFA2YDhLU1o3LDU+VE9E NUlgSU9NI0koRkwyJDRYQkQpUSYyMDBdQyRCVDY0Ck04K2BYVD8wQDY+QSgzUCElK0hYTkhDTk0j JTkhUD0sJEpfUlgsNkZgNTskLFQtRlhBVl8hOlhMVUleNC0KTU8zJzs8VzRUP18wVD4xQD0wYDtR LiY7JSsiV1srX1pEW1NdLztbLExBXiVbJSdZTF1aTD42UVk6MUk9JgoqWzJdRVc5MDI1RyRgYGBg YApgCmVuZAo= --==========1805548168==========--