From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19157 invoked by alias); 1 Aug 2002 20:57:59 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 19145 invoked from network); 1 Aug 2002 20:57:55 -0000 Received: from unknown (HELO mail2.microsoft.com) (131.107.3.124) by sources.redhat.com with SMTP; 1 Aug 2002 20:57:55 -0000 Received: from mail6.microsoft.com ([157.54.6.196]) by mail2.microsoft.com with Microsoft SMTPSVC(5.0.2195.4905); Thu, 1 Aug 2002 13:57:54 -0700 Received: from inet-vrs-06.redmond.corp.microsoft.com ([157.54.6.181]) by mail6.microsoft.com with Microsoft SMTPSVC(5.0.2195.4905); Thu, 1 Aug 2002 13:57:52 -0700 Received: from 157.54.8.155 by inet-vrs-06.redmond.corp.microsoft.com (InterScan E-Mail VirusWall NT); Thu, 01 Aug 2002 13:57:51 -0700 Received: from red-msg-08.redmond.corp.microsoft.com ([157.54.12.5]) by inet-hub-04.redmond.corp.microsoft.com with Microsoft SMTPSVC(5.0.2195.2966); Thu, 1 Aug 2002 13:57:51 -0700 X-MimeOLE: Produced By Microsoft Exchange V6.0.6249.0 Content-Class: urn:content-classes:message MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----_=_NextPart_001_01C2399E.192A7BA6" Subject: Patches for Interix Date: Thu, 01 Aug 2002 13:57:00 -0000 Message-ID: X-MS-Has-Attach: yes X-MS-TNEF-Correlator: From: "Donn Terry" To: X-OriginalArrivalTime: 01 Aug 2002 20:57:51.0571 (UTC) FILETIME=[19875230:01C2399E] X-SW-Source: 2002-08/txt/msg00019.txt.bz2 This is a multi-part message in MIME format. ------_=_NextPart_001_01C2399E.192A7BA6 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Content-length: 238 This is a "for the record" submission of all the patches necessary to make gdb work correctly on Interix. These patches were current as of June 7, 2002. Actual submissions for application will follow; this is a required niceity. Donn ------_=_NextPart_001_01C2399E.192A7BA6 Content-Type: application/octet-stream; name="gdball" Content-Transfer-Encoding: base64 Content-Description: gdball Content-Disposition: attachment; filename="gdball" Content-length: 388627 LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClNUMCBwYXRjaCBzaG91 bGQgYmUgY3Jvc3MtYXBwbGllZC4KClRoaXMgcGF0Y2ggY29udGFpbnMgdGhl ICJiYXNpYywgb2J2aW91cyIgc3R1ZmYgbmVjZXNzYXJ5IHRvIHN1cHBvcnQK Z2RiIG9uIGludGVyaXgsIGdpdmVuIGEgL3Byb2MgZmlsZXN5c3RlbSBpbnRl cmZhY2UgZm9yIGRlYnVnZ2luZy4KSXQgYWxvbmUgaXMgbm90IHN1ZmZpY2ll bnQsIGJ1dCB0aGUgcGllY2VzIGhlcmVpbiBkbyBub3QgYWZmZWN0CmFueXRo aW5nIGVsc2UuICBUbyBjb21waWxlIHN1Y2Nlc3NmdWxseSBmb3IgaW50ZXJp eCwgdGhlIC9wcm9jCnBhdGNoIGlzIG5lZWRlZCBhcyB3ZWxsLiAgKEFuZCB0 aGVuLCBpdCBwcm9iYWJseSB3b24ndCBydW4gdmVyeQp3ZWxsLikKClNvbWUg Y29tcGlsZXJzIGRvbid0IHBlcm1pdCBmaWxlbmFtZXMgYmVmb3JlIC1EIG9w dGlvbnM7IHJlb3JkZXIuCgpTb21lIHZlcnNpb25zIG9mIG1ha2Ugc2V0IC1l IHdoZW4gdGhleSBhcmd1YWJseSBzaG91bGRuJ3Q7IGlmIGdyZXAKZXhpdHMg MSAobm8gbWF0Y2gpIGl0IHdpbGwgZXhpdCB0aGUgbWFrZSBpZiBpbml0LmMg dG9vIGVhcmx5LgoKRnJpIERlYyAgMyAxMDowNzoyMCBQU1QgMTk5OSAgRG9u biBUZXJyeSA8ZG9ubnRlQG1pY3Jvc29mdC5jb20+CgkqIE1ha2VmaWxlLmlu OiBhZGQgaW50ZXJpeCBjYXNlLiAgUHV0IC1EIGJlZm9yZSBmaWxlbmFtZXMu CgkgIEJlIG1vcmUgcm9idXN0IHcuci50LiBzaGVsbCAtZSBvcHRpb24uCgkq IGludGVyaXgubWg6IE5ldyBmaWxlLgoJKiBpbnRlcml4Lm10OiBOZXcgZmls ZS4KCSogbm0taW50ZXJpeC5oOiBOZXcgZmlsZS4KCSogdG0taTM4NmludGVy aXguaDogTmV3IGZpbGUuCgkqIHhtLWludGVyaXguaDogTmV3IGZpbGUuCgkq IGNvbmZpZ3VyZS5ob3N0OiBhZGQgaW50ZXJpeCBjYXNlLgoJKiBjb25maWd1 cmUuaW46IGFkZCBpbnRlcml4IHByb2NmcyBjYXNlLgoJKiBjb25maWd1cmUu dGd0OiBhZGQgaW50ZXJpeCBjYXNlLgoJKiBpMzg2LXRkZXAuYyhnZXRfbG9u Z2ptcF90YXJnZXQpOiB0dXJuIG9mZiBpbiBmYXZvciBvZiBvbmUKCWluIGkz ODZpbnRlcml4LW5hdC5jIHdoZW4gb24gSW50ZXJpeC4KCSogaTM4NmludGVy aXgtbmF0LmM6IE5ldyBmaWxlLgoKSW5kZXg6IHNyYy9nZGIvTWFrZWZpbGUu aW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2Rldi9mcy9I L3J1cHAvZGV2ZWwtbG9jYWwtcmVwb3NpdG9yeS9zcmMvZ2RiL01ha2VmaWxl LmluLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEuMS4xCmRpZmYgLXAgLXUg LXIxLjEuMS4xIE1ha2VmaWxlLmluCi0tLSBzcmMvZ2RiL01ha2VmaWxlLmlu CTIwMDEvMTIvMjMgMDA6MzQ6NTAJMS4xLjEuMQorKysgc3JjL2dkYi9NYWtl ZmlsZS5pbgkyMDAxLzEyLzIzIDIwOjM0OjQ2CkBAIC04NDUsNyArODQ1LDcg QEAgaW5pdC5jOiAkKElOSVRfRklMRVMpCiAJICAgIC1lICcvW2EtejAtOUEt Wl9dKi1leHAudGFiLm8vZCcgXAogCSAgICAtZSAncy9cLm8vLmMvJyBcCiAJ ICAgIC1lICdzfFwoW14gIF1bXiAgICAgXSpcKXwkKHNyY2RpcikvXDF8Zycg fCBcCi0Jd2hpbGUgcmVhZCBmOyBkbyBncmVwICdeX2luaXRpYWxpemVfW2Et el8wLTlBLVpdKiAqKCcgJCRmIDI+L2Rldi9udWxsOyBkb25lIHwgXAorIAl3 aGlsZSByZWFkIGY7IGRvICggZ3JlcCAnXl9pbml0aWFsaXplX1thLXpfMC05 QS1aXSogKignICQkZiAyPi9kZXYvbnVsbCB8fCBleGl0IDApIDsgZG9uZSB8 IFwKIAlzZWQgLWUgJ3MvXi4qOi8vJyAtZSAncy9eXChbYS16XzAtOUEtWl0q XCkuKi9cMS8nID4gaW5pdC5sLXRtcAogCUBlY2hvICcvKiBEbyBub3QgbW9k aWZ5IHRoaXMgZmlsZS4gICovJyA+PmluaXQuYy10bXAKIAlAZWNobyAnLyog SXQgaXMgY3JlYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IHRoZSBNYWtlZmlsZS4g ICovJz4+aW5pdC5jLXRtcApAQCAtMTU5MCw2ICsxNTkwLDggQEAgaTM4Ni1s aW51eC10ZGVwLm86IGkzODYtbGludXgtdGRlcC5jICQoZAogCSQodmFsdWVf aCkgJChyZWdjYWNoZV9oKQogCiBpMzg2djQtbmF0Lm86IGkzODZ2NC1uYXQu YyAkKGRlZnNfaCkgJChyZWdjYWNoZV9oKQorCitpMzg2aW50ZXJpeC1uYXQu bzogaTM4NmludGVyaXgtbmF0LmMgJChkZWZzX2gpCiAKIGkzODctdGRlcC5v OiBpMzg3LXRkZXAuYyAkKGZsb2F0Zm9ybWF0X2gpICQoZGVmc19oKSAkKGdk YmNvcmVfaCkgXAogCSQoaW5mZXJpb3JfaCkgJChsYW5ndWFnZV9oKSAkKHJl Z2NhY2hlX2gpICQoZG91Ymxlc3RfaCkgaTM4Ni10ZGVwLmgKSW5kZXg6IHNy Yy9nZGIvY29uZmlndXJlLmhvc3QKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS Q1MgZmlsZTogL2Rldi9mcy9IL3J1cHAvZGV2ZWwtbG9jYWwtcmVwb3NpdG9y eS9zcmMvZ2RiL2NvbmZpZ3VyZS5ob3N0LHYKcmV0cmlldmluZyByZXZpc2lv biAxLjEuMS4xCmRpZmYgLXAgLXUgLXIxLjEuMS4xIGNvbmZpZ3VyZS5ob3N0 Ci0tLSBzcmMvZ2RiL2NvbmZpZ3VyZS5ob3N0CTIwMDEvMTIvMjMgMDA6MzQ6 NDQJMS4xLjEuMQorKysgc3JjL2dkYi9jb25maWd1cmUuaG9zdAkyMDAxLzEy LzIzIDIwOjM0OjQ2CkBAIC04MCw2ICs4MCw3IEBAIGlbMzQ1Nl04Ni0qLXVu aXh3YXJlKikJZ2RiX2hvc3Q9aTM4NnY0IDsKIGlbMzQ1Nl04Ni0qLXN5c3Yq KQlnZGJfaG9zdD1pMzg2diA7OwogaVszNDU2XTg2LSotaXNjKikJZ2RiX2hv c3Q9aTM4NnYzMiA7OwogaVszNDU2XTg2LSotY3lnd2luKikJZ2RiX2hvc3Q9 Y3lnd2luIDs7CitpWzM0NTZdODYtKi1pbnRlcml4KikJZ2RiX2hvc3Q9aW50 ZXJpeCA7OwogCiBpYTY0LSotYWl4KikJCWdkYl9ob3N0PWFpeCA7OwogaWE2 NC0qLWxpbnV4KikJCWdkYl9ob3N0PWxpbnV4IDs7CkluZGV4OiBzcmMvZ2Ri L2NvbmZpZ3VyZS5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxl OiAvZGV2L2ZzL0gvcnVwcC9kZXZlbC1sb2NhbC1yZXBvc2l0b3J5L3NyYy9n ZGIvY29uZmlndXJlLmluLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEuMS4x CmRpZmYgLXAgLXUgLXIxLjEuMS4xIGNvbmZpZ3VyZS5pbgotLS0gc3JjL2dk Yi9jb25maWd1cmUuaW4JMjAwMS8xMi8yMyAwMDozNDo0NAkxLjEuMS4xCisr KyBzcmMvZ2RiL2NvbmZpZ3VyZS5pbgkyMDAxLzEyLzIzIDIwOjM0OjQ2CkBA IC0yNjMsNyArMjYzLDcgQEAgaWYgdGVzdCAiJHt0YXJnZXR9IiA9ICIke2hv c3R9IjsgdGhlbgogICBpYTY0LSotYWl4KikKICAgICAgIEFDX0RFRklORShO RVdfUFJPQ19BUEkpCiAgICAgICA7OwotICAqLSotdW5peHdhcmUqIHwgKi0q LXN5c3Y0LjIqIHwgKi0qLXN5c3Y1KikKKyAgKi0qLXVuaXh3YXJlKiB8ICot Ki1zeXN2NC4yKiB8ICotKi1zeXN2NSogfCAqLSotaW50ZXJpeCogKQogICAg ICAgQUNfREVGSU5FKE5FV19QUk9DX0FQSSkKICAgICAgIDs7CiAgICotKi1z b2xhcmlzMi5bWzY3OF1dKQpJbmRleDogc3JjL2dkYi9jb25maWd1cmUudGd0 Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9kZXYvZnMvSC9y dXBwL2RldmVsLWxvY2FsLXJlcG9zaXRvcnkvc3JjL2dkYi9jb25maWd1cmUu dGd0LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEuMS4xCmRpZmYgLXAgLXUg LXIxLjEuMS4xIGNvbmZpZ3VyZS50Z3QKLS0tIHNyYy9nZGIvY29uZmlndXJl LnRndAkyMDAxLzEyLzIzIDAwOjM0OjQ0CTEuMS4xLjEKKysrIHNyYy9nZGIv Y29uZmlndXJlLnRndAkyMDAxLzEyLzIzIDIwOjM0OjQ2CkBAIC0xMTMsNiAr MTEzLDcgQEAgaVszNDU2XTg2LSotc2NvMy4ydjQqKQlnZGJfdGFyZ2V0PWkz ODZzYwogaVszNDU2XTg2LSotc2NvMy4ydjUqKQlnZGJfdGFyZ2V0PWkzODZz Y281IDs7CiBpWzM0NTZdODYtKi1zY28qKQlnZGJfdGFyZ2V0PWkzODZ2IDs7 CiBpWzM0NTZdODYtKi1zeXN2KikJZ2RiX3RhcmdldD1pMzg2diA7OworaVsz NDU2XTg2LSotaW50ZXJpeCopCWdkYl90YXJnZXQ9aW50ZXJpeCA7OwogaVsz NDU2XTg2LSotbGludXgqKQlnZGJfdGFyZ2V0PWxpbnV4CiAJCWNvbmZpZ2Rp cnM9IiR7Y29uZmlnZGlyc30gZ2Ric2VydmVyIiA7OwogaVszNDU2XTg2LXBj LWxpbnV4LWdudSkJZ2RiX3RhcmdldD1saW51eApJbmRleDogc3JjL2dkYi9p Mzg2LXRkZXAuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAv ZGV2L2ZzL0gvcnVwcC9kZXZlbC1sb2NhbC1yZXBvc2l0b3J5L3NyYy9nZGIv aTM4Ni10ZGVwLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4xLjEKZGlm ZiAtcCAtdSAtcjEuMS4xLjEgaTM4Ni10ZGVwLmMKLS0tIHNyYy9nZGIvaTM4 Ni10ZGVwLmMJMjAwMS8xMi8yMyAwMDozNDo0OAkxLjEuMS4xCisrKyBzcmMv Z2RiL2kzODYtdGRlcC5jCTIwMDEvMTIvMjMgMjA6MzQ6NDYKQEAgLTgzMyw2 ICs4MzMsNyBAQCBpMzg2X3BvcF9mcmFtZSAodm9pZCkKIAwKIAogI2lmZGVm IEdFVF9MT05HSk1QX1RBUkdFVAorI2lmbmRlZiBfX0lOVEVSSVggLyogaXQg bmVlZHMgc29tZXRoaW5nIGRpZmZlcmVudCAqLwogCiAvKiBGaWd1cmUgb3V0 IHdoZXJlIHRoZSBsb25nam1wIHdpbGwgbGFuZC4gIFNsdXJwIHRoZSBhcmdz IG91dCBvZiB0aGUKICAgIHN0YWNrLiAgV2UgZXhwZWN0IHRoZSBmaXJzdCBh cmcgdG8gYmUgYSBwb2ludGVyIHRvIHRoZSBqbXBfYnVmCkBAIC04NjMsNiAr ODY0LDcgQEAgZ2V0X2xvbmdqbXBfdGFyZ2V0IChDT1JFX0FERFIgKnBjKQog CiAgIHJldHVybiAxOwogfQorI2VuZGlmIC8qIElOVEVSSVggKi8KIAogI2Vu ZGlmIC8qIEdFVF9MT05HSk1QX1RBUkdFVCAqLwogDApJbmRleDogc3JjL2dk Yi9pMzg2aW50ZXJpeC1uYXQuYwo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD UyBmaWxlOiBpMzg2aW50ZXJpeC1uYXQuYwpkaWZmIC1OIGkzODZpbnRlcml4 LW5hdC5jCi0tLSAvZGV2L251bGwJU3VuIERlYyAyMyAxMjo0MzoyMiAyMDAx CisrKyBzcmMvZ2RiL2kzODZpbnRlcml4LW5hdC5jCVN1biBEZWMgMjMgMTI6 MzQ6NDYgMjAwMQpAQCAtMCwwICsxLDQxMyBAQAorLyogTmF0aXZlLWRlcGVu ZGVudCBjb2RlIGZvciBJbnRlcml4IHJ1bm5pbmcgb24gaTM4NidzLCBmb3Ig R0RCLgorICAgQ29weXJpZ2h0IDE5ODgsIDE5ODksIDE5OTEsIDE5OTIsIDE5 OTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKK1RoaXMgZmls ZSBpcyBwYXJ0IG9mIEdEQi4KKworVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK K2l0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cit0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv cgorKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworVGhp cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCitidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQorR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KKworWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKK2Fsb25nIHdpdGgg dGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3 YXJlCitGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0 ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KKworI2lu Y2x1ZGUgImRlZnMuaCIKKworI2luY2x1ZGUgPHN5cy9wcm9jZnMuaD4KKyNp bmNsdWRlIDx1Y29udGV4dC5oPgorI2luY2x1ZGUgPGZyYW1lLmg+CisjaW5j bHVkZSA8aW5mZXJpb3IuaD4KKworI2luY2x1ZGUgPGkzODYtdGRlcC5oPgor Cit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgZ3JlZ190OyAgLyogV2hlcmUgc2hv dWxkIHRoaXMgYmUgZGVmaW5lZD8gKi8KKworLyogU2VlIHByb2Nmcy5jIGFu ZCAqaW50ZXJpeCouaCBpbiBjb25maWcvW2FscGhhLGkzODZdICovCitDT1JF X0FERFIgdHJhbXBfc3RhcnQ7CitDT1JFX0FERFIgdHJhbXBfZW5kOworQ09S RV9BRERSIG51bGxfc3RhcnQ7CitDT1JFX0FERFIgbnVsbF9lbmQ7CisKKy8q ICBUaGUgL3Byb2MgaW50ZXJmYWNlIHRyYWRpdGlvbmFsbHkgZGl2aWRlcyB0 aGUgdGFyZ2V0IG1hY2hpbmUncyByZWdpc3RlciAKKyAgICBzZXQgdXAgaW50 byB0d28gZGlmZmVyZW50IHNldHMsIHRoZSBnZW5lcmFsIHJlZ2lzdGVyIHNl dCAoZ3JlZ3NldCkgCisgICAgYW5kIHRoZSBmbG9hdGluZyBwb2ludCByZWdp c3RlciBzZXQgKGZwcmVnc2V0KS4gICBUaGlzIGlzIHJlZmxlY3RlZAorICAg IGluIHRoZSBkYXRhIHN0cnVjdHVyZXMgaW4gPHN5cy9yZWdzZXQuaD4uCisK KyAgICBIb3dldmVyLCB0aGUgcmVhZC93cml0ZSAvcHJvYyBmb3IgaW50ZXJp eCB0cmVhdHMgdGhlbSBhbGwgYXMgcGFydAorICAgIG9mIHRoZSBzdGF0dXMg c3ViZmlsZS4gCisKKyAgICBUaGVzZSByb3V0aW5lcyBwcm92aWRlIHRoZSBw YWNraW5nIGFuZCB1bnBhY2tpbmcgb2YgZ3JlZ3NldF90IGFuZAorICAgIGZw cmVnc2V0X3QgZm9ybWF0dGVkIGRhdGEuCisKKyAqLworCisvKiBUaGlzIGlz IGEgZHVwbGljYXRlIG9mIHRoZSB0YWJsZSBpbiBpMzg2LXhkZXAuYy4gKi8K Kworc3RhdGljIGludCByZWdtYXBbXSA9IAoreworICBFQVgsIEVDWCwgRURY LCBFQlgsCisgIFVFU1AsIEVCUCwgRVNJLCBFREksCisgIEVJUCwgRUZMLCBD UywgU1MsCisgIERTLCBFUywgRlMsIEdTLAorfTsKKworLyogIEdpdmVuIGEg cG9pbnRlciB0byBhIGdlbmVyYWwgcmVnaXN0ZXIgc2V0IGluIC9wcm9jIGZv cm1hdCAoZ3JlZ3NldF90ICopLAorICAgIHVucGFjayB0aGUgcmVnaXN0ZXIg Y29udGVudHMgYW5kIHN1cHBseSB0aGVtIGFzIGdkYidzIGlkZWEgb2YgdGhl IGN1cnJlbnQKKyAgICByZWdpc3RlciB2YWx1ZXMuICovCisKK3ZvaWQKK3N1 cHBseV9ncmVnc2V0IChncmVnc2V0cCkKKyAgICAgZ3JlZ3NldF90ICpncmVn c2V0cDsKK3sKKyAgcmVnaXN0ZXIgaW50IHJlZ2k7CisgIHJlZ2lzdGVyIGdy ZWdfdCAqcmVncCA9IChncmVnX3QgKikgJmdyZWdzZXRwLT5ncmVnczsKKwor ICBmb3IgKHJlZ2kgPSAwOyByZWdpIDwgTlVNX0dSRUdTOyByZWdpKyspCisg ICAgeworICAgICAgc3VwcGx5X3JlZ2lzdGVyIChyZWdpLCAoY2hhciAqKSAo cmVncCArIHJlZ21hcFtyZWdpXSkpOworICAgIH0KK30KKworLyogRmlsbCBp biBhIGdyZWdzZXRfdCBvYmplY3Qgd2l0aCBzZWxlY3RlZCBkYXRhIGZyb20g YSBnZGItZm9ybWF0CisgICByZWdpc3RlciBmaWxlLgorICAgLSBHUkVHU0VU UCBwb2ludHMgdG8gdGhlIGdyZWdzZXRfdCBvYmplY3QgdG8gYmUgZmlsbGVk LgorICAgLSBHREJfUkVHUyBwb2ludHMgdG8gdGhlIEdEQi1zdHlsZSByZWdp c3RlciBmaWxlIHByb3ZpZGluZyB0aGUgZGF0YS4KKyAgIC0gVkFMSUQgaXMg YW4gYXJyYXkgaW5kaWNhdGluZyB3aGljaCByZWdpc3RlcnMgaW4gR0RCX1JF R1MgYXJlCisgICAgIHZhbGlkOyB0aGUgcGFydHMgb2YgKkdSRUdTRVRQIHRo YXQgd291bGQgaG9sZCByZWdpc3RlcnMgbWFya2VkCisgICAgIGludmFsaWQg aW4gR0RCX1JFR1MgYXJlIGxlZnQgdW5jaGFuZ2VkLiAgSWYgVkFMSUQgaXMg emVybywgYWxsCisgICAgIHJlZ2lzdGVycyBhcmUgYXNzdW1lZCB0byBiZSB2 YWxpZC4gICovCit2b2lkCitjb252ZXJ0X3RvX2dyZWdzZXQgKGdyZWdzZXRf dCAqZ3JlZ3NldHAsCisJCSAgICBjaGFyICpnZGJfcmVncywKKwkJICAgIHNp Z25lZCBjaGFyICp2YWxpZCkKK3sKKyAgaW50IHJlZ2k7CisgIHJlZ2lzdGVy IGdyZWdfdCAqcmVncCA9IChncmVnX3QgKikgZ3JlZ3NldHAtPmdyZWdzOwor CisgIGZvciAocmVnaSA9IDA7IHJlZ2kgPCBOVU1fR1JFR1M7IHJlZ2krKykK KyAgICBpZiAoISB2YWxpZCB8fCB2YWxpZFtyZWdpXSkKKyAgICAgICoocmVn cCArIHJlZ21hcFtyZWdpXSkgPSAqIChpbnQgKikgJnJlZ2lzdGVyc1tSRUdJ U1RFUl9CWVRFIChyZWdpKV07Cit9CisKKworLyogU3RvcmUgR0RCJ3MgdmFs dWUgZm9yIFJFR05PIGluICpHUkVHU0VUUC4gIElmIFJFR05PIGlzIC0xLCBk byBhbGwKKyAgIG9mIHRoZW0uICAqLwordm9pZAorZmlsbF9ncmVnc2V0IChn cmVnc2V0X3QgKmdyZWdzZXRwLAorCSAgICAgIGludCByZWdubykKK3sKKyAg aWYgKHJlZ25vID09IC0xKQorICAgIGNvbnZlcnRfdG9fZ3JlZ3NldCAoZ3Jl Z3NldHAsIHJlZ2lzdGVycywgMCk7CisgIGVsc2UgaWYgKHJlZ25vID49IDAg JiYgcmVnbm8gPCBOVU1fR1JFR1MpCisgICAgeworICAgICAgc2lnbmVkIGNo YXIgdmFsaWRbTlVNX0dSRUdTXTsKKyAgICAgIG1lbXNldCAodmFsaWQsIDAs IHNpemVvZiAodmFsaWQpKTsKKyAgICAgIHZhbGlkW3JlZ25vXSA9IDE7Cisg ICAgICBjb252ZXJ0X3RvX2dyZWdzZXQgKGdyZWdzZXRwLCByZWdpc3RlcnMs IHZhbGlkKTsKKyAgICB9Cit9CisKKy8qICBHaXZlbiBhIHBvaW50ZXIgdG8g YSBmbG9hdGluZyBwb2ludCByZWdpc3RlciBzZXQgaW4gL3Byb2MgZm9ybWF0 CisgICAgKGZwcmVnc2V0X3QgKiksIHVucGFjayB0aGUgcmVnaXN0ZXIgY29u dGVudHMgYW5kIHN1cHBseSB0aGVtIGFzIGdkYidzCisgICAgaWRlYSBvZiB0 aGUgY3VycmVudCBmbG9hdGluZyBwb2ludCByZWdpc3RlciB2YWx1ZXMuICov CisKKy8qIFdoYXQgaXMgdGhlIGFkZHJlc3Mgb2Ygc3QoTikgd2l0aGluIHRo ZSBmcHJlZ3NldF90IHN0cnVjdHVyZSBGPyAgKi8KKyNkZWZpbmUgRlBSRUdT RVRfVF9GUFJFR19BRERSKGYsIG4pIFwKKyAgKChjaGFyICopICYoZiktPmZw c3RhdGUuZnByZWdzICsgKG4pICogMTApCisKKy8qIEZpbGwgR0RCJ3MgcmVn aXN0ZXIgZmlsZSB3aXRoIHRoZSBmbG9hdGluZy1wb2ludCByZWdpc3RlciB2 YWx1ZXMgaW4KKyAgICpGUFJFR1NFVFAuICAqLwordm9pZCAKK3N1cHBseV9m cHJlZ3NldCAoZnByZWdzZXRfdCAqZnByZWdzZXRwKQoreworICBpbnQgaTsK KyAgbG9uZyBsOworCisgIC8qIFN1cHBseSB0aGUgZmxvYXRpbmctcG9pbnQg cmVnaXN0ZXJzLiAgKi8KKyAgZm9yIChpID0gMDsgaSA8IDg7IGkrKykKKyAg ICBzdXBwbHlfcmVnaXN0ZXIgKEZQMF9SRUdOVU0gKyBpLCBGUFJFR1NFVF9U X0ZQUkVHX0FERFIgKGZwcmVnc2V0cCwgaSkpOworCisgIGwgPSBmcHJlZ3Nl dHAtPmZwc3RhdGUuY29udHJvbCAmIDB4ZmZmZjsKKyAgc3VwcGx5X3JlZ2lz dGVyIChGQ1RSTF9SRUdOVU0sIChjaGFyICopICZsKTsKKyAgbCA9IGZwcmVn c2V0cC0+ZnBzdGF0ZS5zdGF0dXMgJiAweGZmZmY7CisgIHN1cHBseV9yZWdp c3RlciAoRlNUQVRfUkVHTlVNLCAoY2hhciAqKSAmbCk7CisgIGwgPSBmcHJl Z3NldHAtPmZwc3RhdGUudGFnICYgMHhmZmZmOworICBzdXBwbHlfcmVnaXN0 ZXIgKEZUQUdfUkVHTlVNLCAgKGNoYXIgKikgJmwpOworICBzdXBwbHlfcmVn aXN0ZXIgKEZDT0ZGX1JFR05VTSwgKGNoYXIgKikgJmZwcmVnc2V0cC0+ZnBz dGF0ZS5lcnJvcm9mZnNldCk7CisgIGwgPSBmcHJlZ3NldHAtPmZwc3RhdGUu ZGF0YXNlbGVjdG9yICYgMHhmZmZmOworICBzdXBwbHlfcmVnaXN0ZXIgKEZE U19SRUdOVU0sICAgKGNoYXIgKikgJmwpOworICBzdXBwbHlfcmVnaXN0ZXIg KEZET0ZGX1JFR05VTSwgKGNoYXIgKikgJmZwcmVnc2V0cC0+ZnBzdGF0ZS5k YXRhb2Zmc2V0KTsKKyAgCisgIC8qIEV4dHJhY3QgdGhlIGNvZGUgc2VnbWVu dCBhbmQgb3Bjb2RlIGZyb20gdGhlICAiZmNzIiBtZW1iZXIuICAqLworCisg IGwgPSBmcHJlZ3NldHAtPmZwc3RhdGUuZXJyb3JzZWxlY3RvciAmIDB4ZmZm ZjsKKyAgc3VwcGx5X3JlZ2lzdGVyIChGQ1NfUkVHTlVNLCAoY2hhciAqKSAm bCk7CisKKyAgbCA9IChmcHJlZ3NldHAtPmZwc3RhdGUuZXJyb3JzZWxlY3Rv ciA+PiAxNikgJiAoKDEgPDwgMTEpIC0gMSk7CisgIHN1cHBseV9yZWdpc3Rl ciAoRk9QX1JFR05VTSwgKGNoYXIgKikgJmwpOworfQorCisKKy8qIEZpbGwg aW4gYW4gZnByZWdzZXRfdCBzdHJ1Y3R1cmUgd2l0aCBzZWxlY3RlZCBkYXRh IGZyb20gYQorICAgZ2RiLWZvcm1hdCByZWdpc3RlciBmaWxlLgorICAgLSBG UFJFR1NFVFAgcG9pbnRzIHRvIHRoZSBzdHJ1Y3R1cmUgdG8gYmUgZmlsbGVk LiAKKyAgIC0gR0RCX1JFR1MgcG9pbnRzIHRvIHRoZSBHREItc3R5bGUgcmVn aXN0ZXIgZmlsZSBwcm92aWRpbmcgdGhlIGRhdGEuCisgICAtIFZBTElEIGlz IGFuIGFycmF5IGluZGljYXRpbmcgd2hpY2ggcmVnaXN0ZXJzIGluIEdEQl9S RUdTIGFyZQorICAgICB2YWxpZDsgdGhlIHBhcnRzIG9mICpGUFJFR1NFVFAg dGhhdCB3b3VsZCBob2xkIHJlZ2lzdGVycyBtYXJrZWQKKyAgICAgaW52YWxp ZCBpbiBHREJfUkVHUyBhcmUgbGVmdCB1bmNoYW5nZWQuICBJZiBWQUxJRCBp cyB6ZXJvLCBhbGwKKyAgICAgcmVnaXN0ZXJzIGFyZSBhc3N1bWVkIHRvIGJl IHZhbGlkLiAgKi8KK3ZvaWQKK2NvbnZlcnRfdG9fZnByZWdzZXQgKGZwcmVn c2V0X3QgKmZwcmVnc2V0cCwKKwkJICAgICBjaGFyICpnZGJfcmVncywKKwkJ ICAgICBzaWduZWQgY2hhciAqdmFsaWQpCit7CisgIGludCBpOworCisgIC8q IEZpbGwgaW4gdGhlIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVycy4gICovCisg IGZvciAoaSA9IDA7IGkgPCA4OyBpKyspCisgICAgaWYgKCF2YWxpZCB8fCB2 YWxpZFtpXSkKKyAgICAgIG1lbWNweSAoRlBSRUdTRVRfVF9GUFJFR19BRERS IChmcHJlZ3NldHAsIGkpLAorCSAgICAgICZyZWdpc3RlcnNbUkVHSVNURVJf QllURSAoRlAwX1JFR05VTSArIGkpXSwKKwkgICAgICBSRUdJU1RFUl9SQVdf U0laRShGUDBfUkVHTlVNICsgaSkpOworCisjZGVmaW5lIGZpbGwoTUVNQkVS LCBSRUdOTykJCQkJCQkgICAgICBcCisgIGlmICghIHZhbGlkIHx8IHZhbGlk WyhSRUdOTyldKQkJCQkJICAgICAgXAorICAgIG1lbWNweSAoJmZwcmVnc2V0 cC0+ZnBzdGF0ZS5NRU1CRVIsICZyZWdpc3RlcnNbUkVHSVNURVJfQllURSAo UkVHTk8pXSwgICAgXAorCSAgICBzaXplb2YgKGZwcmVnc2V0cC0+ZnBzdGF0 ZS5NRU1CRVIpKQorCisgIGZpbGwgKGNvbnRyb2wsIEZDVFJMX1JFR05VTSk7 CisgIGZpbGwgKHN0YXR1cywgRlNUQVRfUkVHTlVNKTsKKyAgZmlsbCAodGFn LCBGVEFHX1JFR05VTSk7CisgIGZpbGwgKGVycm9yb2Zmc2V0LCBGQ09GRl9S RUdOVU0pOworICBmaWxsIChkYXRhb2Zmc2V0LCBGRE9GRl9SRUdOVU0pOwor ICBmaWxsIChkYXRhc2VsZWN0b3IsIEZEU19SRUdOVU0pOworCisjdW5kZWYg ZmlsbAorCisgIGlmICghIHZhbGlkIHx8IHZhbGlkW0ZDU19SRUdOVU1dKQor ICAgIGZwcmVnc2V0cC0+ZnBzdGF0ZS5lcnJvcnNlbGVjdG9yCisgICAgICA9 ICgoZnByZWdzZXRwLT5mcHN0YXRlLmVycm9yc2VsZWN0b3IgJiB+MHhmZmZm KQorCSB8ICgqIChpbnQgKikgJnJlZ2lzdGVyc1tSRUdJU1RFUl9CWVRFIChG Q1NfUkVHTlVNKV0gJiAweGZmZmYpKTsKKworICBpZiAoISB2YWxpZCB8fCB2 YWxpZFtGT1BfUkVHTlVNXSkKKyAgICBmcHJlZ3NldHAtPmZwc3RhdGUuZXJy b3JzZWxlY3RvcgorICAgICAgPSAoKGZwcmVnc2V0cC0+ZnBzdGF0ZS5lcnJv cnNlbGVjdG9yICYgMHhmZmZmKQorCSB8ICgoKihpbnQgKikgJnJlZ2lzdGVy c1tSRUdJU1RFUl9CWVRFIChGT1BfUkVHTlVNKV0gJiAoKDEgPDwgMTEpIC0g MSkpCisJICAgIDw8IDE2KSk7Cit9CisKKworLyogR2l2ZW4gYSBwb2ludGVy IHRvIGEgZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXIgc2V0IGluIChmcHJlZ3Nl dF90ICopCisgICBmb3JtYXQsIHVwZGF0ZSBhbGwgb2YgdGhlIHJlZ2lzdGVy cyBmcm9tIGdkYidzIGlkZWEgb2YgdGhlIGN1cnJlbnQKKyAgIGZsb2F0aW5n IHBvaW50IHJlZ2lzdGVyIHNldC4gICovCisKK3ZvaWQKK2ZpbGxfZnByZWdz ZXQgKGZwcmVnc2V0X3QgKmZwcmVnc2V0cCwKKwkgICAgICAgaW50IHJlZ25v KQoreworICBjb252ZXJ0X3RvX2ZwcmVnc2V0IChmcHJlZ3NldHAsIHJlZ2lz dGVycywgMCk7Cit9CisKKworLyogdGhlIG5hbWUgb2YgdGhlIHByb2Mgc3Rh dHVzIHN0cnVjdCBkZXBlbmRzIG9uIHRoZSBpbXBsZW1lbnRhdGlvbiAqLwor I2lmZGVmIEhBVkVfUFNUQVRVU19UCisgIHR5cGVkZWYgcHN0YXR1c190IGdk Yl9wcnN0YXR1c190OworI2Vsc2UKKyAgdHlwZWRlZiBwcnN0YXR1c190IGdk Yl9wcnN0YXR1c190OworI2VuZGlmCisKKy8qIFdlIHdhbnQgdG8gZmluZCB0 aGUgcHJldmlvdXMgZnJhbWUsIHdoaWNoIG9uIEludGVyaXggaXMgdHJpY2t5 IHdoZW4gc2lnbmFscworICAgYXJlIGludm9sdmVkOyBzZXQgZnJhbWUtPmZy YW1lIGFwcHJvcHJpYXRlbHksIGFuZCBhbHNvIGdldCB0aGUgcGMKKyAgIGFu ZCB0d2VhayBzaWduYWxfaGFuZGxlcl9jYWxsZXI7IHRoaXMgcmVwbGFjZXMg YSBib2F0bG9hZCBvZiBuZXN0ZWQKKyAgIG1hY3JvcywgYXMgd2VsbC4gKi8K K3ZvaWQKK2ludGVyaXhfYmFja19vbmVfZnJhbWUgKGZyb21sZWFmLCBmcmFt ZSkKKyAgICAgaW50IGZyb21sZWFmOworICAgICBzdHJ1Y3QgZnJhbWVfaW5m byAqZnJhbWU7Cit7CisgIENPUkVfQUREUiByYTsKKyAgQ09SRV9BRERSIGZt OworICBDT1JFX0FERFIgY29udGV4dDsKKyAgbG9uZyB0OworCisgIGlmIChm cmFtZSA9PSBOVUxMKQorICAgICAgYWJvcnQoKTsKKyAgCisgIGlmIChmcm9t bGVhZikKKyAgICB7CisgICAgICAgZnJhbWUtPnBjID0gU0FWRURfUENfQUZU RVJfQ0FMTCAoZnJhbWUtPm5leHQpOworICAgICAgIHJldHVybjsKKyAgICB9 CisKKyAgaWYgKCFmcmFtZS0+bmV4dCkKKyAgICB7CisgICAgICAgZnJhbWUt PnBjID0gcmVhZF9wYygpOworCisgICAgICAgLyogcGFydCBvZiB0aGUgc2ln bmFsIHN0dWZmLi4uIHNlZSBiZWxvdyAqLworICAgICAgIGlmIChzdG9wcGVk X2J5X3JhbmRvbV9zaWduYWwpCisJIHsKKwkgICAvKiB3ZSBrbm93IHdlJ3Jl IGluIGEgc3lzdGVtIGNhbGwgbWluaS1mcmFtZTsgd2FzIGl0CisJICAgICAg TnVsbEFwaSBvciBzb21ldGhpbmcgZWxzZT8gKi8KKyAgICAgICAgICAgcmEg PSBTQVZFRF9QQ19BRlRFUl9DQUxMIChmcmFtZSk7CisgICAgICAgICAgIGlm IChyYSA+PSBudWxsX3N0YXJ0ICYmIHJhIDwgbnVsbF9lbmQpCisJICAgICAg ZnJhbWUtPnNpZ25hbF9oYW5kbGVyX2NhbGxlciA9IDE7CisJIH0KKyAgICAg ICByZXR1cm47CisgICAgfQorCisgIGlmICghZnJhbWUtPm5leHQtPnNpZ25h bF9oYW5kbGVyX2NhbGxlcikKKyAgICB7CisgICAgICBmcmFtZS0+cGMgPSAo Q09SRV9BRERSKXJlYWRfbWVtb3J5X2ludGVnZXIgKGZyYW1lLT5uZXh0LT5m cmFtZSArIDQsIDQpOworICAgICAgcmV0dXJuOworICAgIH0KKworICAvKiBU aGlzIGlzIG1lc3N5Li4uIChhY3R1YWxseSBBV0ZVTCkgdGhlICJ0cmFtcG9s aW5lIiBtaWdodCBiZSAyLCAzIAorICAgICBvciBhbGwgNSBlbnRpdGllcyBv biB0aGUgZnJhbWUuIAorCisgICAgIENodW5rIDEgd2lsbCBiZSBwcmVzZW50 IHdoZW4gd2UncmUgYWN0dWFsbHkgaW4gYSBzaWduYWwgaGFuZGxlci4KKyAg ICAgQ2h1bmsgMiB3aWxsIGJlIHByZXNlbnQgd2hlbiBhbiBhc3luY2hyb25v dXMgc2lnbmFsIChvbmUgdGhhdAorCWRpZG4ndCBjb21lIGluIHdpdGggYSBz eXN0ZW0gY2FsbCkgaXMgcHJlc2VudC4KKwlXZSBtYXkgbm90ICh5ZXQpIGJl IGluIHRoZSBoYW5kbGVyLCBpZiB3ZSdyZSBqdXN0IHJldHVybmluZworCWZy b20gdGhlIGNhbGwuCisgICAgIFdoZW4gd2UncmUgYWN0dWFsbHkgaW4gYSBo YW5kbGVyIHRha2VuIGZyb20gYW4gYXN5bmNocm9ub3VzCisgICAgIHNpZ25h bCwgYm90aCB3aWxsIGJlIHByZXNlbnQuCisKKyAgICAgQ2h1bmsgMToKKwlQ ZHhTaWduYWxEZWxpdmVyZXIncyBmcmFtZSAKKyAgICAgICsgQ29udGV4dCBz dHJ1Y3QgICAgLS0gbm90IGFjY291bnRlZCBmb3IgaW4gYW55IGZyYW1lCisK KyAgICAgQ2h1bmsgMjoKKyAgICAgICsgUGR4TnVsbFBvc2l4QXBpJ3MgZnJh bWUgCisgICAgICArIFBkeE51bGxBcGlDYWxsZXIncyBmcmFtZQorICAgICAg KyBDb250ZXh0IHN0cnVjdCA9IDB4MjMwICBub3QgYWNjb3VudGVkIGZvciBp biBhbnkgZnJhbWUKKworICAgICBUaGUgc3ltYm9sIG5hbWVzIGNvbWUgZnJv bSBleGFtaW5pbmcgb2JqZHVtcHMgb2YgcHN4ZGxsLmRsbDsKKyAgICAgdGhl eSBkb24ndCBhcHBlYXIgaW4gdGhlIHJ1bnRpbWUgaW1hZ2UuCisKKyAgICAg Rm9yIGdkYidzIHB1cnBvc2VzLCB3ZSBjYW4gcGlsZSBhbGwgdGhpcyBpbnRv IG9uZSBmcmFtZS4KKyAgKi8KKworICByYSA9IGZyYW1lLT5uZXh0LT5wYzsK KyAgLyogQXJlIHdlIGFscmVhZHkgcG9pbnRpbmcgYXQgUGR4TnVsbFBvc2l4 QXBpPyAgV2UgYXJlIGlmCisgICAgIHRoaXMgaXMgYSBzaWduYWwgZnJhbWUs IHdlJ3JlIGF0IG5leHQtdG8tdG9wLCBhbmQgd2VyZSBzdG9wcGVkCisgICAg IGJ5IGEgcmFuZG9tIHNpZ25hbC4gIChJZiBpdCB3YXNuJ3QgdGhlIHJpZ2h0 IGFkZHJlc3MgdW5kZXIKKyAgICAgdGhlc2UgY2lyY3Vtc3RhbmNlcywgd2Ug d291bGRuJ3QgYmUgaGVyZSBhdCBhbGwgYnkgdGVzdHMgYWJvdmUKKyAgICAg b24gdGhlIHByaW9yIGZyYW1lLikgKi8KKyAgaWYgKGZyYW1lLT5uZXh0LT5u ZXh0ID09IE5VTEwgJiYgc3RvcHBlZF9ieV9yYW5kb21fc2lnbmFsKSAKKyAg ICB7CisgICAgICAvKiBXZSdyZSBwb2ludGluZyBhdCB0aGUgZnJhbWUgRk9S IFBkeE51bGxBcGkgKi8KKyAgICAgIGZtID0gZnJhbWUtPmZyYW1lOworICAg IH0KKyAgZWxzZQorICAgIHsKKyAgICAgIC8qIE5vLi4uIHdlIG11c3QgYmUg cG9pbnRpbmcgYXQgdGhlIGZyYW1lIHRoYXQKKwkgd2FzIGNhbGxlZCBieSBQ ZHhTaWduYWxEZWxpdmVyZXI7IGJhY2sgdXAgYWNyb3NzIHRoZQorCSB3aG9s ZSBtZXNzICovCisKKyAgICAgIC8qIGV4dHJhY3QgdGhlIGZyYW1lIGZvciBQ ZHhTaWduYWxEZWxpdmVyZXI7IG5vdGUuLi5GUkFNRV9DSEFJTgorCSB1c2Vk IHRoZSAib2xkIiBmcmFtZSBwb2ludGVyIGJlY2F1c2Ugd2Ugd2VyZSBhIGRl bGl2ZXJlci4KKwkgR2V0IHRoZSBhZGRyZXNzIG9mIHRoZSBjb250ZXh0IHJl Y29yZCB0aGF0J3Mgb24gaGVyZSBmcmFtZWxlc3MgKi8KKyAgICAgIGNvbnRl eHQgPSByZWFkX21lbW9yeV9pbnRlZ2VyIChmcmFtZS0+ZnJhbWUsIDQpOyAg LyogYW4gQXJnICovCisKKyAgICAgIC8qIE5vdyBleHRyYWN0IHRoZSBmcmFt ZSBwb2ludGVyIGNvbnRhaW5lZCBpbiB0aGUgY29udGV4dCAqLworICAgICAg Zm0gPSAoQ09SRV9BRERSKXJlYWRfbWVtb3J5X2ludGVnZXIgCisJIChjb250 ZXh0ICsgb2Zmc2V0b2YobWNvbnRleHRfdCwgZ3JlZ3MuZ3JlZ3NbRUJQXSks IDQpOworCisgICAgICByYSA9IChDT1JFX0FERFIpcmVhZF9tZW1vcnlfaW50 ZWdlciAKKwkgKGNvbnRleHQgKyBvZmZzZXRvZihtY29udGV4dF90LCBncmVn cy5ncmVnc1tFSVBdKSwgNCk7CisKKyAgICAgIC8qIFdlIG5lZWQgdG8ga25v dyBpZiB3ZSdyZSBpbiBhIHN5c3RlbSBjYWxsIGJlY2F1c2Ugd2UnbGwgYmUK KwkgaW4gYSBzeXNjYWxsIG1pbmktZnJhbWUsIGlmIHNvLCBhbmQgdGhlIHJ1 bGVzIGFyZSBkaWZmZXJlbnQ7CisJIHJlc2VydmVkWzFdIGNvbnRhaW5zIDAg aWYgcnVubmluZyBmcmVlLCAxIGlmIGJsb2NrZWQgb24gYSBzeXN0ZW0KKwkg Y2FsbCwgYW5kIDIgaWYgYmxvY2tlZCBvbiBhbiBleGNlcHRpb24gbWVzc2Fn ZSAoZS5nLiBhIHRyYXApOworCSB3ZSBkb24ndCBleHBlY3QgdG8gZ2V0IGhl cmUgd2l0aCBhIDIuICovCisgICAgICB0ID0gKGxvbmcpcmVhZF9tZW1vcnlf aW50ZWdlciAKKwkgKGNvbnRleHQgKyBvZmZzZXRvZihtY29udGV4dF90LCBn cmVncy5yZXNlcnZlZFsxXSksIDQpOworICAgICAgaWYgKHQgIT0gMSkKKwl7 CisJICAgLyogbm90IGF0IGEgc3lzdGVtIGNhbGwsIHRoZXJlZm9yZSBpdCBj YW4ndCBiZSBOdWxsQXBpICovCisJICAgZnJhbWUtPnBjID0gcmE7CisJICAg ZnJhbWUtPmZyYW1lID0gZm07CisJICAgcmV0dXJuOworCX0KKworICAgICAg LyogSXQncyBhIHN5c3RlbSBjYWxsLi4uIG1pbmkgZnJhbWUsIHRoZW4gbG9v ayBmb3IgTnVsbEFwaSAqLworICAgICAgLyogR2V0IHRoZSBSQSAob24gdGhl IHN0YWNrKSBhc3NvY2lhdGVkIHdpdGggdGhpcy4uLiBpdCdzCisJIGEgc3lz dGVtIGNhbGwgbWluaS1mcmFtZSAqLworICAgICAgcmEgPSAoQ09SRV9BRERS KXJlYWRfbWVtb3J5X2ludGVnZXIgCisJIChjb250ZXh0ICsgb2Zmc2V0b2Yo bWNvbnRleHRfdCwgZ3JlZ3MuZ3JlZ3NbVUVTUF0pLCA0KTsKKyAgICAgIHJh ID0gKENPUkVfQUREUilyZWFkX21lbW9yeV9pbnRlZ2VyKHJhLDQpOworCisg ICAgICAvKiBXZSBtaWdodCBiZSBkb25lIChubyBOdWxsIEFQSSBpZiBzbykg Ki8KKyAgICAgIGlmICghKHJhID49IG51bGxfc3RhcnQgJiYgcmEgPCBudWxs X2VuZCkpCisJeworCSAgIC8qIE5vIE51bGwgQVBJIHByZXNlbnQ7IHdlJ3Jl IGRvbmUgKi8KKwkgICBmcmFtZS0+cGMgPSByYTsKKwkgICBmcmFtZS0+ZnJh bWUgPSBmbTsKKwkgICByZXR1cm47CisJfQorICAgIH0KKyAgLyogQXQgdGhp cyBwb2ludCwgd2UncmUgbG9va2luZyBhdCB0aGUgZnJhbWUgZm9yIFBkeE51 bGxQb3NpeEFwaSwKKyAgICAgaW4gZWl0aGVyIGNhc2UuICovCisKKyAgLyog ZXh0cmFjdCB0aGUgZnJhbWUgZm9yIFBkeE51bGxQb3NpeEFwaSAqLworICBm bSA9IHJlYWRfbWVtb3J5X2ludGVnZXIgKGZtLCA0KTsKKworICAvKiBleHRy YWN0IHRoZSBmcmFtZSBmb3IgUGR4TnVsbEFwaUNhbGxlciAqLworICAvKiBU aGUgc2F2ZWQgZnJhbWUgcmVnaXN0ZXIgZm9yIFBkeE51bGxBcGlDYWxsZXIg c2tpcHMgdXMgb3ZlciB0aGUKKyAgICAgc2F2ZWQgY29udGV4dCwgd2hpY2gg aXMgdGhlIHdyb25nIHRoaW5nIHRvIGRvLCBiZWNhdXNlIGl0IHNraXBzCisg ICAgIHRoZSBpbnRlcnJydXB0ZWQgcm91dGluZSEgIEluc3RlYWQsIGdldCB0 aGUgYXJnIHRoYXQgd2FzIHBhc3NlZAorICAgICB3aGljaCBoYXMgdGhlIGFk ZHJlc3Mgb2YgdGhlIGNvbnRleHQgKHdoaWNoIGlzIHJlYWxseSBpbiBubyBm cmFtZSkgKi8KKworICBmbSA9IChDT1JFX0FERFIpcmVhZF9tZW1vcnlfaW50 ZWdlciAoZm0gKyA4LCA0KTsKKworICAvKiBUSElTIGNvbnRleHQgaXMgYWNj b3VudGVkIGZvciBpbiBhIGZyYW1lICovCisgIC8qIEV4dHJhY3QgdGhlIHNl Y29uZCBjb250ZXh0IHJlY29yZCAqLworCisgIHJhID0gKENPUkVfQUREUily ZWFkX21lbW9yeV9pbnRlZ2VyIAorICAgICAoZm0gKyBvZmZzZXRvZihtY29u dGV4dF90LCBncmVncy5ncmVnc1tFSVBdKSwgNCk7CisgIGZtID0gKENPUkVf QUREUilyZWFkX21lbW9yeV9pbnRlZ2VyIAorICAgICAoZm0gKyBvZmZzZXRv ZihtY29udGV4dF90LCBncmVncy5ncmVnc1tFQlBdKSwgNCk7CisKKyAgZnJh bWUtPmZyYW1lID0gZm07CisgIGZyYW1lLT5wYyA9IHJhOworCisgIHJldHVy bjsKK30KKworLyogRmlndXJlIG91dCB3aGVyZSB0aGUgbG9uZ2ptcCB3aWxs IGxhbmQuCisgICBXZSBleHBlY3QgdGhlIGZpcnN0IGFyZyB0byBiZSBhIHBv aW50ZXIgdG8gdGhlIGptcF9idWYgc3RydWN0dXJlIGZyb20gd2hpY2gKKyAg IHdlIGV4dHJhY3QgdGhlIHBjIHRoYXQgd2Ugd2lsbCBsYW5kIGF0LiAgVGhl IHBjIGlzIGNvcGllZCBpbnRvIFBDLgorICAgVGhpcyByb3V0aW5lIHJldHVy bnMgdHJ1ZSBvbiBzdWNjZXNzLiAqLworCisjaW5jbHVkZSA8c2V0am1wLmg+ CisKK2ludAorZ2V0X2xvbmdqbXBfdGFyZ2V0IChwYykKKyAgICAgQ09SRV9B RERSICpwYzsKK3sKKyAgQ09SRV9BRERSIHNwLCBqYl9hZGRyOworICBjaGFy IHJhd19idWZmZXJbTUFYX1JFR0lTVEVSX1JBV19TSVpFXTsKKworICBzcCA9 IHJlYWRfcmVnaXN0ZXIgKFNQX1JFR05VTSk7CisKKyAgaWYgKHRhcmdldF9y ZWFkX21lbW9yeSAoc3AgKyBTUF9BUkcwLCAvKiBPZmZzZXQgb2YgZmlyc3Qg YXJnIG9uIHN0YWNrICovCisJCQkgIHJhd19idWZmZXIsCisJCQkgIFRBUkdF VF9QVFJfQklUIC8gVEFSR0VUX0NIQVJfQklUKSkKKyAgICByZXR1cm4gMDsK KworICBqYl9hZGRyID0gZXh0cmFjdF9hZGRyZXNzIChyYXdfYnVmZmVyLCBU QVJHRVRfUFRSX0JJVCAvIFRBUkdFVF9DSEFSX0JJVCk7CisKKyAgaWYgKHRh cmdldF9yZWFkX21lbW9yeShqYl9hZGRyICsgb2Zmc2V0b2YoX0pVTVBfQlVG RkVSLEVpcCksIHJhd19idWZmZXIsCisJCQkgc2l6ZW9mKENPUkVfQUREUikp KQorICAgIHJldHVybiAwOworCisgICpwYyA9IGV4dHJhY3RfYWRkcmVzcyAo cmF3X2J1ZmZlciwgc2l6ZW9mKENPUkVfQUREUikpOworICByZXR1cm4gMTsK K30KSW5kZXg6IHNyYy9nZGIvY29uZmlnL2kzODYvaW50ZXJpeC5taAo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiBpbnRlcml4Lm1oCmRpZmYg LU4gaW50ZXJpeC5taAotLS0gL2Rldi9udWxsCVN1biBEZWMgMjMgMTI6NDU6 MTUgMjAwMQorKysgc3JjL2dkYi9jb25maWcvaTM4Ni9pbnRlcml4Lm1oCVN1 biBEZWMgMjMgMTI6MzQ6NDYgMjAwMQpAQCAtMCwwICsxLDkgQEAKKyMgSG9z dDogSW50ZWwgMzg2IHJ1bm5pbmcgSW50ZXJpeAorWERFUEZJTEVTPSAKK05B VERFUEZJTEVTPSBjb3JlbG93Lm8gY29yZS1yZWdzZXQubyBmb3JrLWNoaWxk Lm8gaTM4NmludGVyaXgtbmF0Lm8gXAorCXByb2Nmcy5vIHByb2MtYXBpLm8g cHJvYy1ldmVudHMubyBwcm9jLWZsYWdzLm8gcHJvYy13aHkubworWE1fRklM RT0geG0taW50ZXJpeC5oCitOQVRfRklMRT0gbm0taW50ZXJpeC5oCisjIFRo ZSBiZWxvdyBtYXkgYmUgdGVtcG9yYXJ5OyBtbWFsbG9jIHJlbGllcyBvbiBz YnJrKCkgYXQgdGhlIG1vbWVudAorTU1BTExPQz0KK01NQUxMT0NfQ0ZMQUdT PS1ETk9fTU1BTExPQwpJbmRleDogc3JjL2dkYi9jb25maWcvaTM4Ni9pbnRl cml4Lm10Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IGludGVy aXgubXQKZGlmZiAtTiBpbnRlcml4Lm10Ci0tLSAvZGV2L251bGwJU3VuIERl YyAyMyAxMjo0NToxNyAyMDAxCisrKyBzcmMvZ2RiL2NvbmZpZy9pMzg2L2lu dGVyaXgubXQJU3VuIERlYyAyMyAxMjozNDo0NiAyMDAxCkBAIC0wLDAgKzEs MyBAQAorIyBUYXJnZXQ6IEludGVsIDM4NiBydW5uaW5nIEludGVyaXgKK1RE RVBGSUxFUz0gaTM4Ni10ZGVwLm8gaTM4Ny10ZGVwLm8KK1RNX0ZJTEU9IHRt LWkzODZpbnRlcml4LmgKSW5kZXg6IHNyYy9nZGIvY29uZmlnL2kzODYvbm0t aW50ZXJpeC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IG5t LWludGVyaXguaApkaWZmIC1OIG5tLWludGVyaXguaAotLS0gL2Rldi9udWxs CVN1biBEZWMgMjMgMTI6NDU6MTcgMjAwMQorKysgc3JjL2dkYi9jb25maWcv aTM4Ni9ubS1pbnRlcml4LmgJU3VuIERlYyAyMyAxMjozNDo0NiAyMDAxCkBA IC0wLDAgKzEsNTggQEAKKy8qIE5hdGl2ZS1kZXBlbmRlbnQgZGVmaW5pdGlv bnMgZm9yIEludGVsIDM4NiBydW5uaW5nIEludGVyaXgsIGZvciBHREIuCisg ICBDb3B5cmlnaHQgMTk4NiwgMTk4NywgMTk4OSwgMTk5MiwgMTk5NiBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworVGhpcyBmaWxlIGlzIHBh cnQgb2YgR0RCLgorCitUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQoraXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKK3RoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCitUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKK2J1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCitNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl CitHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgorCitZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKK0Zv dW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwg Qm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLworCisjaWZuZGVmIE5N X0lOVEVSSVhfSAorI2RlZmluZSBOTV9JTlRFUklYX0gKKworI2RlZmluZSBV U0VfUFJPQ19GUworCisvKiBzdWJtb2RlcyBvZiBVU0VfUFJPQ19GUyAqLwor I2RlZmluZSBQUk9DRlNfVVNFX1JFQURfV1JJVEUKKyNkZWZpbmUgSEFWRV9N VUxUSVBMRV9QUk9DX0ZEUworI2RlZmluZSBVTklYV0FSRQorI2RlZmluZSBI QVZFX1NUUlVDVF9MV1AKKworI2RlZmluZSBBVFRBQ0hfREVUQUNICisKKy8q IFRoaXMgaXMgdGhlIGFtb3VudCB0byBzdWJ0cmFjdCBmcm9tIHUudV9hcjAK KyAgIHRvIGdldCB0aGUgb2Zmc2V0IGluIHRoZSBjb3JlIGZpbGUgb2YgdGhl IHJlZ2lzdGVyIHZhbHVlcy4gICovCisKKyNpZiAwCisjaW5jbHVkZSA8bWFj aGluZS92bXBhcmFtLmg+CisjZGVmaW5lIEtFUk5FTF9VX0FERFIgVVNSU1RB Q0sKKyNlbmRpZgorCisjZGVmaW5lIFJFR0lTVEVSX1VfQUREUihhZGRyLCBi bG9ja2VuZCwgcmVnbm8pIFwKKwkoYWRkcikgPSBpMzg2X3JlZ2lzdGVyX3Vf YWRkciAoKGJsb2NrZW5kKSwocmVnbm8pKTsKKworZXh0ZXJuIGludAoraTM4 Nl9yZWdpc3Rlcl91X2FkZHIgUEFSQU1TICgoaW50LCBpbnQpKTsKKworI2Rl ZmluZSBQVFJBQ0VfQVJHM19UWVBFIGNoYXIqCisKKy8qIFJldHVybiBzaXpl b2YgdXNlciBzdHJ1Y3QgdG8gY2FsbGVycyBpbiBsZXNzIG1hY2hpbmUgZGVw ZW5kZW50IHJvdXRpbmVzICovCisKKyNkZWZpbmUgS0VSTkVMX1VfU0laRSBr ZXJuZWxfdV9zaXplKCkKK2V4dGVybiBpbnQga2VybmVsX3Vfc2l6ZSBQQVJB TVMgKCh2b2lkKSk7CisKKy8qIEl0J3MgQUxNT1NUIGNvZmY7IGJmZCBkb2Vz IHRoZSBzYW1lIHRoaW5nICovCisjZGVmaW5lIENPRkZfV0lUSF9QRQorI2Rl ZmluZSBDT0ZGX0lNQUdFX1dJVEhfUEUKKworI2VuZGlmIC8qIE5NX0lOVEVS SVhfSCAqLwpJbmRleDogc3JjL2dkYi9jb25maWcvaTM4Ni90bS1pMzg2aW50 ZXJpeC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IHRtLWkz ODZpbnRlcml4LmgKZGlmZiAtTiB0bS1pMzg2aW50ZXJpeC5oCi0tLSAvZGV2 L251bGwJU3VuIERlYyAyMyAxMjo0NToxNyAyMDAxCisrKyBzcmMvZ2RiL2Nv bmZpZy9pMzg2L3RtLWkzODZpbnRlcml4LmgJU3VuIERlYyAyMyAxMjozNDo0 NiAyMDAxCkBAIC0wLDAgKzEsMTI3IEBACisvKiBNYWNybyBkZWZpbml0aW9u cyBmb3IgaTM4NiBydW5uaW5nIHVuZGVyIEludGVyaXgKKyAgIENvcHlyaWdo dCAxOTk4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCitUaGlz IGZpbGUgaXMgcGFydCBvZiBHREIuCisKK1RoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5CitpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQordGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z ZSwgb3IKKyhhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisK K1RoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKK01FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKK0dOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCisKK1lvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCithbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBT b2Z0d2FyZQorRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0g U3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCisK KyNpZm5kZWYgVE1fSU5URVJJWF9ICisjZGVmaW5lIFRNX0lOVEVSSVhfSAor CisjZGVmaW5lIEhBVkVfSTM4N19SRUdTCisjaW5jbHVkZSAiaTM4Ni90bS1p Mzg2LmgiCisKKyN1bmRlZiBUQVJHRVRfTE9OR19CSVQKKyNkZWZpbmUgVEFS R0VUX0xPTkdfQklUIDMyCisKKy8qIHRoaXMgaXMgYSBuby1vcCBjaGFuZ2Us IGJ1dCBmb3IgdGhlIHJlY29yZC4uLiAqLworI3VuZGVmIFRBUkdFVF9MT05H X0xPTkdfQklUCisjZGVmaW5lIFRBUkdFVF9MT05HX0xPTkdfQklUIDY0CisK Ky8qIGNvbmZpZ3VyZSBjYW4ndCBiZSBleHBlY3RlZCB0byBub29kbGUgb3V0 IE1TJ3MgYWx0ZXJuYXRlIHNwZWxsaW5nIGZvcgorICAgNjQtYml0IGludGVn ZXJzLCBzbyB3ZSdsbCB0ZWxsIGl0LiAqLworI2RlZmluZSBQUklOVEZfSEFT X0xPTkdfTE9ORyAxCisjaWZkZWYgX19HTlVDX18KKyNkZWZpbmUgQkZEX0hP U1RfNjRfQklUIGxvbmcgbG9uZworI2RlZmluZSBCRkRfSE9TVF9VXzY0X0JJ VCB1bnNpZ25lZCBsb25nIGxvbmcKKyNlbGlmIGRlZmluZWQoX01TQ19WRVIp CisjZGVmaW5lIEJGRF9IT1NUXzY0X0JJVCBfX2ludDY0CisjZGVmaW5lIEJG RF9IT1NUX1VfNjRfQklUIHVuc2lnbmVkIF9faW50NjQKKyNlbHNlCisjZXJy b3IuLi4gT0sgd2hhdCBjb21waWxlciBpcyB0aGlzPworI2VuZGlmCisKKyN1 bmRlZiBMT05HRVNUCisjdW5kZWYgVUxPTkdFU1QKKworI2RlZmluZSBMT05H RVNUIEJGRF9IT1NUXzY0X0JJVAorI2RlZmluZSBVTE9OR0VTVCBCRkRfSE9T VF9VXzY0X0JJVAorCisjdW5kZWYgVEFSR0VUX1BUUl9CSVQKKyNkZWZpbmUg VEFSR0VUX1BUUl9CSVQgMzIKKworLyogQW1vdW50IFBDIG11c3QgYmUgZGVj cmVtZW50ZWQgYnkgYWZ0ZXIgYSBicmVha3BvaW50LiAgVGhpcyBpcyBvZnRl biB0aGUKKyAgIG51bWJlciBvZiBieXRlcyBpbiBCUkVBS1BPSU5UIGJ1dCBu b3QgYWx3YXlzIChzdWNoIGFzIG5vdykuICovCisKKworI3VuZGVmIERFQ1Jf UENfQUZURVJfQlJFQUsKKyNkZWZpbmUgREVDUl9QQ19BRlRFUl9CUkVBSyAw CisKKyN1bmRlZiBJTl9TSUdUUkFNUAorLyogU0lHVFJBTVAgaXMgaW4gYSBE TEwgd2hlcmUgd2UgZG9uJ3QgaGF2ZSBhbnkgc3ltYm9scy4gSG93ZXZlciwK KyAgIHByb2NmcyB0ZWxscyB1cyB3aGVyZSBpdCBpcy4gKi8KKworZXh0ZXJu IENPUkVfQUREUiB0cmFtcF9zdGFydDsKK2V4dGVybiBDT1JFX0FERFIgdHJh bXBfZW5kOworZXh0ZXJuIENPUkVfQUREUiBudWxsX3N0YXJ0OworZXh0ZXJu IENPUkVfQUREUiBudWxsX2VuZDsKKworLyogVGhpcyBpcyBzdWZmaWNpZW50 LCB3aGVyZSB1c2VkLCBidXQgaXMgTk9UIGEgY29tcGxldGUgdGVzdDsgdGhl cmUncyBtb3JlCisgICBpbiBJTklUX0VYVFJBX0ZSQU1FX0lORk8gKGEuay5h LiBpbnRlcml4X2JhY2tfb25lX2ZyYW1lKSAqLworI2RlZmluZSBJTl9TSUdU UkFNUChwLGYpICgoKChwKT49dHJhbXBfc3RhcnQgJiYgKHApPHRyYW1wX2Vu ZCkpIFwKKwkJfHwgKCgocCk+PW51bGxfc3RhcnQgJiYgKHApPG51bGxfZW5k KSkpCisKKyNkZWZpbmUgSU5fU09MSUJfQ0FMTF9UUkFNUE9MSU5FKHBjLCBu YW1lKSBza2lwX3RyYW1wb2xpbmVfY29kZSAocGMsIG5hbWUpCisjZGVmaW5l IFNLSVBfVFJBTVBPTElORV9DT0RFKHBjKSAgICAgICAgICAgc2tpcF90cmFt cG9saW5lX2NvZGUgKHBjLCAwKQorZXh0ZXJuIENPUkVfQUREUiBza2lwX3Ry YW1wb2xpbmVfY29kZSBQQVJBTVMgKChDT1JFX0FERFIgcGMsIGNoYXIgKm5h bWUpKTsKKwordm9pZCBpbnRlcml4X2JhY2tfb25lX2ZyYW1lIChpbnQgZnJv bWxlYWYsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSk7CisvKiBBY3R1YWxs eS4uLiBkbyBhIGZ1bGwgdW53aW5kICovCisjZGVmaW5lIElOSVRfRVhUUkFf RlJBTUVfSU5GTyhmcm9tbGVhZiwgcHJldikgXAorCWludGVyaXhfYmFja19v bmVfZnJhbWUoZnJvbWxlYWYsIHByZXYpOworCisvKiBUaGlzIGJlY29tZXMg YSBuby1vcCBiZWNhdXNlIG9mIHRoZSBhYm92ZSAqLworI2RlZmluZSBJTklU X0ZSQU1FX1BDKGEsYikKKworLyogSW4gdGhlIGNvbnRleHQgd2hlcmUgdGhp cyBpcyB1c2VkLCB3ZSBnZXQgdGhlIHNhdmVkIFBDIGJlZm9yZSB3ZSd2ZQor ICAgc3VjY2Vzc2Z1bGx5IHVud291bmQgZmFyIGVub3VnaCB0byBiZSBzdXJl IHdoYXQgd2UndmUgZ290IChpdCBtYXkKKyAgIGJlIGEgc2lnbmFsIGhhbmRs ZXIgY2FsbGVyKS4gIElmIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIHNpZ25hbAor ICAgaGFuZGxlciBjYWxsZXIsIHRoaXMgd2lsbCByZXR1cm4gdmFsaWQsIHdo aWNoIGlzIGZpbmUuICBJZiBub3QsCisgICBpdCdsbCBtYWtlIHRoZSBjb3Jy ZWN0IHRlc3QuICovCisKKyN1bmRlZiBGUkFNRV9DSEFJTl9WQUxJRAorI2Rl ZmluZSBGUkFNRV9DSEFJTl9WQUxJRChDSEFJTiwgRlJBTUUpIFwKKyAgKChG UkFNRSktPnNpZ25hbF9oYW5kbGVyX2NhbGxlciB8fFwKKyAgKChDSEFJTikg IT0gMCAgXAorICAmJiAhaW5zaWRlX2VudHJ5X2ZpbGUgKHJlYWRfbWVtb3J5 X2ludGVnZXIgKChGUkFNRSktPmZyYW1lICsgNCwgNCkpKSkKKworLyogQXNz dW1lIHRoYXQgd2UndmUgYWxyZWFkeSB1bndvdW5kIGVub3VnaCB0byBoYXZl IHRoZSBjYWxsZXIncyBhZGRyZXNzCisgICBpZiB3ZSdyZSBkZWFsaW5nIHdp dGggYSBzaWduYWwgaGFuZGxlciBjYWxsZXIuICAoQW5kIGlmIHRoYXQgZmFp bHMsCisgICByZXR1cm4gMC4pICAqLworI3VuZGVmIEZSQU1FX1NBVkVEX1BD CisjZGVmaW5lIEZSQU1FX1NBVkVEX1BDKEZSQU1FKSBcCisgICgoKEZSQU1F KS0+c2lnbmFsX2hhbmRsZXJfY2FsbGVyKSBcCisgICAgICA/ICgoRlJBTUUp LT5uZXh0ID8gKEZSQU1FKS0+bmV4dC0+cGMgOiAwKSBcCisgICAgICA6IChD T1JFX0FERFIpcmVhZF9tZW1vcnlfaW50ZWdlciAoKEZSQU1FKS0+ZnJhbWUg KyA0LCA0KSkKKworI2RlZmluZSBJMzg2X0ZMT0FUU19SRVRVUk5fSU5fU1Qw CisKKy8qIEludGVyaXggaGFzIGEgbWluaW1hbCBzYnJrKCkgKGJ1dCBub3Qg d2hhdCdzIHdhbnRlZCBmb3IgdGhpcyB1c2FnZSksCisgICBhbmQgaXQncyBy ZWxhdGlvbnNoaXAgdG8gZW52aXJvbltdIGlzIG5vdCB3aGF0J3MgdXN1YWxs eSBleHBlY3RlZAorICAgKGFzIGluLCB0aGVyZSBpcyBubyBzcGVjaWZpYyBy ZWxhdGlvbnNoaXAgYXQgYWxsKS4gIEp1c3QgcHJldGVuZCB3ZSBkb24ndAor ICAgaGF2ZSBhbiBzYnJrKCkuICovCisjdW5kZWYgSEFWRV9TQlJLCisKKy8q IEZpZ3VyZSBvdXQgd2hlcmUgdGhlIGxvbmdqbXAgd2lsbCBsYW5kLiAgU2x1 cnAgdGhlIGFyZ3Mgb3V0IG9mIHRoZSBzdGFjay4KKyAgIFdlIGV4cGVjdCB0 aGUgZmlyc3QgYXJnIHRvIGJlIGEgcG9pbnRlciB0byB0aGUgam1wX2J1ZiBz dHJ1Y3R1cmUgZnJvbSB3aGljaAorICAgd2UgZXh0cmFjdCB0aGUgcGMgIHRo YXQgd2Ugd2lsbCBsYW5kIGF0LiAgVGhlIHBjIGlzIGNvcGllZCBpbnRvIEFE RFIuCisgICBUaGlzIHJvdXRpbmUgcmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3Mg Ki8KKworZXh0ZXJuIGludAorZ2V0X2xvbmdqbXBfdGFyZ2V0IFBBUkFNUyAo KENPUkVfQUREUiAqKSk7CisKKyNkZWZpbmUgR0VUX0xPTkdKTVBfVEFSR0VU KEFERFIpIGdldF9sb25nam1wX3RhcmdldChBRERSKQorCisjZW5kaWYgLyog VE1fSU5URVJJWF9IICovCkluZGV4OiBzcmMvZ2RiL2NvbmZpZy9pMzg2L3ht LWludGVyaXguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiB4 bS1pbnRlcml4LmgKZGlmZiAtTiB4bS1pbnRlcml4LmgKLS0tIC9kZXYvbnVs bAlTdW4gRGVjIDIzIDEyOjQ1OjE3IDIwMDEKKysrIHNyYy9nZGIvY29uZmln L2kzODYveG0taW50ZXJpeC5oCVN1biBEZWMgMjMgMTI6MzQ6NDYgMjAwMQpA QCAtMCwwICsxLDIyIEBACisvKiBIb3N0LWRlcGVuZGVudCBkZWZpbml0aW9u cyBmb3IgSW50ZWwgMzg2IHJ1bm5pbmcgSW50ZXJpeCwgZm9yIEdEQi4KKyAg IENvcHlyaWdodCAxOTg2LCAxOTg3LCAxOTg5LCAxOTkyIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgorCitUaGlzIGZpbGUgaXMgcGFydCBvZiBH REIuCisKK1RoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CitpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQordGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyhhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKK1RoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAorYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKK01FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKK0dOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKK1lv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCithbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsg aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorRm91bmRhdGlv biwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24s IE1BIDAyMTExLTEzMDcsIFVTQS4gICovCisKKyNkZWZpbmUgSE9TVF9CWVRF X09SREVSIExJVFRMRV9FTkRJQU4KKworI2luY2x1ZGUgPGxpbWl0cy5oPgkJ LyogZm9yIElOVF9NSU4gKi8KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tClRFWFQgTU9TVExZIFdST05HLi4uIHJld3JpdGUgd2hlbiBkb25lCkxv b2sgZm9yIC8vIGNvbW1lbnRzLgoKCi9wcm9jIGRvY3MgYXJlIHNvbWV3aGF0 IGFtYmlndW91cyBpbiBkZWZpbnRpb24gb2YgdGhlIGNvbW1hbmQgd29yZDsK aW4gdGhlIGNhc2Ugb2YgZ2V0dGluZy9zZW5kaW5nIHJlZ2lzdGVycywgb24g dGhlIEFscGhhIHRoZSBncmVnc2V0X3QKc3RydWN0IHdpbGwgYmUgNjQtYml0 IGFsaWduZWQsIHNvIHRoZXJlIHdpbGwgYmUgYSAzMi1iaXQgcGFkIApiZXR3 ZWVuIGNtZCBhbmQgZ3JlZ3NldCBpbiBncmVnX2N0bC4gIEhvd2V2ZXIsIHRo ZSBrZXJuZWwgd2Fzbid0CmV4cGVjaW5nIHRoYXQgcGFkLiAgQWRqdXN0IHRv IGF2b2lkIHRoZSBpc3N1ZSBwb3J0YWJseS4gIChBcHBsaWVzCnRvIGZwcmVn X2N0bCB0b28uKQoKVGhlIHNpZ25hbCB0cmFtcG9saW5lCmlzIG5vdCBpbiB0 aGUgc3ltYm9sIHRhYmxlLCBidXQgdGhlIE9TIGtub3dzIHdoZXJlIGl0IGlz LiAgCi9wcm9jIG1vZGlmaWVkIHRvIHJldHVybiB0aGUgYWRkcmVzcyByYW5n ZSwgY3JlYXRlX3Byb2NpbmZvIHRvCmNhcHR1cmUgdGhlIHZhbHVlcy4gaTM4 NmludGVyaXgtbmF0LmMgbW9kZWQgdG8gaG9sZCB0aGUgdmFsdWVzLgp0bS1p Mzg2aW50ZXJpeC5oIG1vZGVkIHRvIHVzZSBuZXcgZ2xvYmFscy4gICppbnRl cml4LW5hdC5jIGFsc28gdXNlcy4KCnByb2Nmcy5jL2Nsb3NlX3Byb2NfZmls ZTogIG9wZW5fcHJvY19maWxlIGNhbiBiZSBjYWxsZWQgd2l0aAoiY29udHJv bCIgPT0gMCB3aGljaCBjYXVzZXMgcGlwLT5jdGxfZmQgdG8gbm90IGJlIG9w ZW5lZCAoYW5kCnRodXMgYmUgemVybykuICBUaGlzIHdhcyB1bmNvbmRpdGlv bmFsbHkgY2xvc2luZyBpdCwgd2hpY2ggCmFjdHVhbGx5IGNsb3NlZCBzdGRp bi4KCgpwcm9jZnMuYy9wcm9jX3NldF9leGVjX3RyYXA6IHdoeSBkaWQgd2Ug anVzdCBjbGVhciBQUl9GT1JLIGFuZCBzZXQgCml0IGFnYWluPyAgQ2F1c2Vz IHRoZSBnZGIgInNoZWxsIiBjb21tYW5kIHRvIGhhbmcgdXAuCgp0ZXN0c3Vp dGUvZ2RiLmJhc2UvaW5mby1wcm9jLmV4cCB3YXMgZmFpbGluZyBiZWNhdXNl IG9mZnNldCB3YXMgYWx3YXlzCnplcm8sIGFuZCAkI1ggcmV0dXJucyAwLCBu b3QgMHgwIQoKRnJpIERlYyAgMyAxMDowNzoyMCBQU1QgMTk5OSAgRG9ubiBU ZXJyeSA8ZG9ubnRlQG1pY3Jvc29mdC5jb20+CgkqIHByb2Nmcy5jKHByb2Nm c19raWxsX2luZmVyaW9yLCBwcm9jX3NldF9leGVjX3RyYXAsIAoJcHJvY2Zz X3ByZXBhcmVfdG9fc3RvcmUscHJvY2ZzX21vdXJuX2luZmVyaW9yLAoJcHJv Y2ZzX2Nhbl9ydW4sIHByb2Nmc19zdG9wKTogZXhwbGljaXQgdm9pZCB0byBz aHV0IHVwIHNvbWUgY29tcGlsZXJzLgoKCSogcHJvY2ZzLmMoZ2xvYmFsLCBw cm9jX3NldF9leGVjX3RyYXAsIHByb2NfaW50ZXJhdGVfb3Zlcl9tYXBwaW5n cywKCWRvX2F0dGFjaCwgZG9fZGV0YWNoLCBzZXRfcHJvY19zaWdpbmZvLCBw cm9jZnNfcmVzdW1lLCAKCXByb2Nmc19mZXRjaF9yZWdpc3RlcnMsIGluZm9f cHJvY19zeXNjYWxscywgaW5mb19wcm9jX3NpZ25hbHMsCglpbmZvX3Byb2Nf ZmF1bHRzKTogY2xhcmlmeSB1c2Ugb2YgUFJPQ0ZTX1VTRV9SRUFEX1dSSVRF LCAKCXVudGFuZ2xlIGZyb20gVU5JWFdBUkUKCgkqIHByb2Nmcy5jKD8/Pyk6 IERpdHRvIEhBVkVfTk9fUFJSVU5fVCwgSEFWRV9TVFJVQ1RfTFdQCgoJKiBw cm9jZnMuYyhwcm9jZnNfdG9fZmQpOiBOb3QgbmVlZGVkIGlmIFBST0NGU19V U0VfUkVBRF9XUklURS4KCgkqIHByb2Nmcy5jKD8/Pyk6IEFkZCBQUk9DRlNf VVNFX1JFQURfV1JJVEUgY2FzZXMgd2hlcmUgbmVlZGVkIChzb21lIHdlcmUK CW1pc3Npbmcgb3IgaW5jb21wbGV0ZSkuCgoJKiBwcm9jZnMuYyh3YWl0X2Zk KTogIGZpeCBidWcgaW4gTE9TSU5HX1BPTEwgY2FzZS4KCgkqIHByb2Nmcy5j KGdsb2JhbCwgcHJvY2ZzX3N0b3JlX3JlZ2lzdGVycyk6IGFsbG93IGZvciA2 NCBiaXQgYWxpZ25tZW50LgoKCSogcHJvY2ZzLmMocHJvY2ZzX3JlYWRfY3Vy cmVudF9zdGF0dXMpOiBOZXcuICAoUEFSVCBPRiBGUCBQQUNLISkKCgkqIHBy b2Nmcy5jKHByb2Nmc19raWxsX2luZmVyaW9yKTogQmV0dGVyIGRpYWdub3N0 aWNzIGluIGNhc2Ugb2YKCXVuZXhwZWN0ZWQgZmFpbHVyZS4KCgkqIHByb2Nm cy5jKGNyZWF0ZV9wcm9jaW5mbyk6IFJlcG9ydCBhZGRyZXNzIG9mIHNpZ25h bCB0cmFtcG9saW5lCglmb3IgSW50ZXJpeC4KCgkqIHByb2Nmcy5jKHByb2Nm c19pbml0X2luZmVyaW9yKTogPz8/IFNlZSB0cmFwPwoKCSogcHJvY2ZzLmMo cHJvY2ZzX2luaXRfaW5mZXJpb3IpOiBSZWZsZWN0IG5ldyBjb3VudGluZyBy dWxlcwoJZm9yIHN5bmNocm9uaXplci4gIChHb2VzIHdpdGggc29tZXRoaW5n IGVsc2UuKQoKCSogcHJvY2ZzLmMocHJvY2ZzX2ZpbmRfYWxsb2NhdGlvbl9i YXNlKTogTmV3LgoKCSogcHJvY2ZzLmMocHJvY2ZzX3dhaXQpOiBBc3N1cmUg cGkgaXMgTlVMTCBhdCBzdGFydCwgZ2V0cwoJaW5pdGlhbGl6ZWQuCgoJKiBw cm9jZnMuYyhjbG9zZV9wcm9jX2ZpbGUsIG9wZW5fcHJvY19maWxlKTogIGNs b3NlIG9ubHkgZmlsZXMgCgl3ZSBvcGVuZWQuCgoJKiBwcm9jZnMuYyhwcm9j X3NldF9leGVjX3RyYXApOiBmaXggY2xlYXIvc2V0IG9mIFBSX0ZPUksuCgoJ KiBwcm9jZnMuYyAobW9kaWZ5X3J1bl9vbl9sYXN0X2Nsb3NlX2ZsYWcpOiAg V2h5IFJMQz8gPz8/Pz8/CgoJKiBwcm9jZnMuYyAocHJvY2ZzX2NsZWFyX3N5 c2NhbGxfdHJhcCwgcHJvY2ZzX3NldF9zeXNjYWxsX3RyYXApOiAKCVRpZ2h0 ZXIgdXNlIG9mIHR5cGVzLgoKCSAgQmV0dGVyIGRpYWdub3N0aWNzIGZvciBw cm9jZnNfeGZlcl9tZW1vcnkoKQoJICBSZW1vdmUgcmVkdW5kYW50IG9wZW4g b2YgcHJvY2ZzIG1hcCBmaWxlLgoKCgpJbmRleDogc3JjL2dkYi9wcm9jLWFw aS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9kZXYvZnMv SC9ydXBwL2RldmVsLWxvY2FsLXJlcG9zaXRvcnkvc3JjL2dkYi9wcm9jLWFw aS5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEuMS4xCmRpZmYgLXAgLXUg LXIxLjEuMS4xIHByb2MtYXBpLmMKLS0tIHNyYy9nZGIvcHJvYy1hcGkuYwky MDAxLzEyLzIzIDAwOjM0OjUyCTEuMS4xLjEKKysrIHNyYy9nZGIvcHJvYy1h cGkuYwkyMDAxLzEyLzIzIDIxOjIxOjE2CkBAIC0zNiw3ICszNiw5IEBAIElu Yy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG8KICNpbmNs dWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1 ZGUgPHN5cy9wcm9jZnMuaD4KKyNpZm5kZWYgX19JTlRFUklYCiAjaW5jbHVk ZSA8c3lzL3Byb2MuaD4JLyogZm9yIHN0cnVjdCBwcm9jICovCisjZW5kaWYK ICNpZmRlZiBIQVZFX1NZU19VU0VSX0gKICNpbmNsdWRlIDxzeXMvdXNlci5o PgkvKiBmb3Igc3RydWN0IHVzZXIgKi8KICNlbmRpZgpAQCAtMzk1LDkgKzM5 NywxMyBAQCBzdGF0aWMgc3RydWN0IHRyYW5zIHJ3X3RhYmxlW10gPSB7CiAj aWZkZWYgUENDU0lHCQkJLyogc29sYXJpcyAqLwogICB7IFBDQ1NJRywgICAi UENDU0lHIiwgICAiY2xlYXIgY3VycmVudCBzaWduYWwiIH0sCiAjZW5kaWYK KyNpZmRlZiBQQ0RTVE9QCQkJLyogc29sYXJpcyAqLwogICB7IFBDRFNUT1As ICAiUENEU1RPUCIsICAicG9zdCBzdG9wIHJlcXVlc3QiIH0sCisjZW5kaWYK ICAgeyBQQ0tJTEwsICAgIlBDS0lMTCIsICAgInBvc3QgYSBzaWduYWwiIH0s CisjaWZkZWYgUENOSUNFCQkJLyogc29sYXJpcyAqLwogICB7IFBDTklDRSwg ICAiUENOSUNFIiwgICAic2V0IG5pY2UgcHJpb3JpdHkiIH0sCisjZW5kaWYK ICNpZmRlZiBQQ1JFQUQJCQkvKiBzb2xhcmlzICovCiAgIHsgUENSRUFELCAg ICJQQ1JFQUQiLCAgICJyZWFkIGZyb20gdGhlIGFkZHJlc3Mgc3BhY2UiIH0s CiAgIHsgUENXUklURSwgICJQQ1dSSVRFIiwgICJ3cml0ZSB0byB0aGUgYWRk cmVzcyBzcGFjZSIgfSwKQEAgLTQxNyw3ICs0MjMsOSBAQCBzdGF0aWMgc3Ry dWN0IHRyYW5zIHJ3X3RhYmxlW10gPSB7CiAgIHsgUENTRVhJVCwgICJQQ1NF WElUIiwgICJzZXQgdHJhY2VkIHN5c2NhbGwgZXhpdCAgc2V0IiB9LAogICB7 IFBDU0ZBVUxULCAiUENTRkFVTFQiLCAic2V0IHRyYWNlZCBmYXVsdCBzZXQi IH0sCiAgIHsgUENTRlBSRUcsICJQQ1NGUFJFRyIsICJzZXQgZmxvYXRpbmcg cG9pbnQgcmVnaXN0ZXJzIiB9LAorI2lmZGVmIFBDSE9MRAkJCS8qIHNvbGFy aXMgKi8KICAgeyBQQ1NIT0xELCAgIlBDU0hPTEQiLCAgInNldCBzaWduYWwg bWFzayIgfSwKKyNlbmRpZgogICB7IFBDU1JFRywgICAiUENTUkVHIiwgICAi c2V0IGdlbmVyYWwgcmVnaXN0ZXJzIiB9LAogICB7IFBDU1NJRywgICAiUENT U0lHIiwgICAic2V0IGN1cnJlbnQgc2lnbmFsIiB9LAogICB7IFBDU1RPUCwg ICAiUENTVE9QIiwgICAicG9zdCBzdG9wIHJlcXVlc3QgYW5kIHdhaXQiIH0s CkBAIC00MzEsNyArNDM5LDkgQEAgc3RhdGljIHN0cnVjdCB0cmFucyByd190 YWJsZVtdID0gewogI2lmZGVmIFBDVFdTVE9QCQkJLyogc29sYXJpcyAqLwog ICB7IFBDVFdTVE9QLCAiUENUV1NUT1AiLCAid2FpdCBmb3Igc3RvcCwgd2l0 aCB0aW1lb3V0IGFyZyIgfSwKICNlbmRpZgorI2lmZGVmIFBDVU5LSUxMCQkJ Lyogc29sYXJpcyAqLwogICB7IFBDVU5LSUxMLCAiUENVTktJTEwiLCAiZGVs ZXRlIGEgcGVuZGluZyBzaWduYWwiIH0sCisjZW5kaWYKICNpZmRlZiBQQ1VO U0VUCQkJLyogc29sYXJpcyAqLwogICB7IFBDVU5TRVQsICAiUENVTlNFVCIs ICAidW5zZXQgbW9kZXMiIH0sCiAjZW5kaWYKQEAgLTUxNiwxMiArNTI2LDE0 IEBAIHdyaXRlX3dpdGhfdHJhY2UgKGludCBmZCwgdm9pZCAqdmFyZywgc2kK IAlwcm9jX3ByZXR0eWZwcmludF9zeXNjYWxscyAocHJvY2ZzX2ZpbGUgPyBw cm9jZnNfZmlsZSA6IHN0ZG91dCwKIAkJCQkgICAgKHN5c3NldF90ICopICZh cmdbMV0sIDApOwogCWJyZWFrOworI2lmZGVmIFBDU0hPTEQKICAgICAgIGNh c2UgUENTSE9MRDoKIAlmcHJpbnRmIChwcm9jZnNfZmlsZSA/IHByb2Nmc19m aWxlIDogc3Rkb3V0LCAKIAkJICJ3cml0ZSAoUENTSE9MRCkgIik7CiAJcHJv Y19wcmV0dHlmcHJpbnRfc2lnbmFsc2V0IChwcm9jZnNfZmlsZSA/IHByb2Nm c19maWxlIDogc3Rkb3V0LAogCQkJCSAgICAgKHNpZ3NldF90ICopICZhcmdb MV0sIDApOwogCWJyZWFrOworI2VuZGlmCiAgICAgICBjYXNlIFBDU1NJRzoK IAlmcHJpbnRmIChwcm9jZnNfZmlsZSA/IHByb2Nmc19maWxlIDogc3Rkb3V0 LCAKIAkJICJ3cml0ZSAoUENTU0lHKSAiKTsKQEAgLTU0MCwxMCArNTUyLDE0 IEBAIHdyaXRlX3dpdGhfdHJhY2UgKGludCBmZCwgdm9pZCAqdmFyZywgc2kK IAkgIGZwcmludGYgKHByb2Nmc19maWxlID8gcHJvY2ZzX2ZpbGUgOiBzdGRv dXQsICJjbGVhckZsdCAiKTsKIAlpZiAoYXJnWzFdICYgUFJTVEVQKQogCSAg ZnByaW50ZiAocHJvY2ZzX2ZpbGUgPyBwcm9jZnNfZmlsZSA6IHN0ZG91dCwg InN0ZXAgIik7CisjaWZkZWYgUFJTQUJPUlQKIAlpZiAoYXJnWzFdICYgUFJT QUJPUlQpCiAJICBmcHJpbnRmIChwcm9jZnNfZmlsZSA/IHByb2Nmc19maWxl IDogc3Rkb3V0LCAic3lzY2FsbEFib3J0ICIpOworI2VuZGlmCisjaWZkZWYg UFJTVE9QCiAJaWYgKGFyZ1sxXSAmIFBSU1RPUCkKIAkgIGZwcmludGYgKHBy b2Nmc19maWxlID8gcHJvY2ZzX2ZpbGUgOiBzdGRvdXQsICJzdG9wUmVxICIp OworI2VuZGlmCiAJICAKIAlmcHJpbnRmIChwcm9jZnNfZmlsZSA/IHByb2Nm c19maWxlIDogc3Rkb3V0LCAiXG4iKTsKIAlicmVhazsKSW5kZXg6IHNyYy9n ZGIvcHJvY2ZzLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog L2Rldi9mcy9IL3J1cHAvZGV2ZWwtbG9jYWwtcmVwb3NpdG9yeS9zcmMvZ2Ri L3Byb2Nmcy5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEuMS4xCmRpZmYg LXAgLXUgLXIxLjEuMS4xIHByb2Nmcy5jCi0tLSBwcm9jZnMuYy5vbGQJU2F0 IE1hciAgMiAxMDozMzo0MiAyMDAyCisrKyBwcm9jZnMuYwlUaHUgRmViIDI4 IDE1OjQyOjUxIDIwMDIKQEAgLTUxOCw3ICs1MTgsNyBAQCBvcGVuX3Byb2Np bmZvX2ZpbGVzIChwcm9jaW5mbyAqcGksIGludCB3CiAgICAqIFRoaXMgZnVu Y3Rpb24gaXMgZ2V0dGluZyBBTE1PU1QgbG9uZyBlbm91Z2ggdG8gYnJlYWsg dXAgaW50byBzZXZlcmFsLgogICAgKiBIZXJlIGlzIHNvbWUgcmF0aW9uYWxl OgogICAgKgotICAgKiBORVdfUFJPQ19BUEkgKFNvbGFyaXMgMi42LCBTb2xh cmlzIDIuNywgVW5peHdhcmUpOgorICAgKiBORVdfUFJPQ19BUEkgKFNvbGFy aXMgMi42LCBTb2xhcmlzIDIuNywgVW5peHdhcmUsIEludGVyaXgpOgogICAg KiAgIFRoZXJlIGFyZSBzZXZlcmFsIGZpbGUgZGVzY3JpcHRvcnMgdGhhdCBt YXkgbmVlZCB0byBiZSBvcGVuIAogICAgKiAgIGZvciBhbnkgZ2l2ZW4gcHJv Y2VzcyBvciBMV1AuICBUaGUgb25lcyB3ZSdyZSBpbnRlcmV0ZWQgaW4gYXJl OgogICAgKiAgICAgLSBjb250cm9sCSAoY3RsKQkgIHdyaXRlLW9ubHkJY2hh bmdlIHRoZSBzdGF0ZQpAQCAtNTMzLDcgKzUzMyw3IEBAIG9wZW5fcHJvY2lu Zm9fZmlsZXMgKHByb2NpbmZvICpwaSwgaW50IHcKICAgICogICAgICAgL3By b2MvPHByb2MtaWQ+L3N0YXR1cwogICAgKiAgICAgICAvcHJvYy88cHJvYy1p ZD4vYXMKICAgICogICAgICAgL3Byb2MvPHByb2MtaWQ+L21hcAotICAgKiAg ICAgUGF0aG5hbWVzIGZvciBhbiBMV1AgKGx3cC1pZCk6CisgICAqICAgICBQ YXRobmFtZXMgZm9yIGFuIExXUCAobHdwLWlkKSAobm90IG9uIEludGVyaXgp OgogICAgKiAgICAgICAvcHJvYy88cHJvYy1pZD4vbHdwLzxsd3AtaWQ+L2x3 cGN0bAogICAgKiAgICAgICAvcHJvYy88cHJvYy1pZD4vbHdwLzxsd3AtaWQ+ L2x3cHN0YXR1cwogICAgKiAgIEFuIExXUCBoYXMgbm8gbWFwIG9yIGFkZHJl c3Mgc3BhY2UgZmlsZSBkZXNjcmlwdG9yLCBzaW5jZQpAQCAtNjY1LDggKzY2 NSw4IEBAIG9wZW5fcHJvY2luZm9fZmlsZXMgKHByb2NpbmZvICpwaSwgaW50 IHcKIHN0YXRpYyBwcm9jaW5mbyAqCiBjcmVhdGVfcHJvY2luZm8gKGludCBw aWQsIGludCB0aWQpCiB7Ci0gIHByb2NpbmZvICpwaSwgKnBhcmVudDsKLQor ICBwcm9jaW5mbyAqcGksICpwYXJlbnQgPSBOVUxMOworCiAgIGlmICgocGkg PSBmaW5kX3Byb2NpbmZvIChwaWQsIHRpZCkpKQogICAgIHJldHVybiBwaTsJ CQkvKiBBbHJlYWR5IGV4aXN0cywgbm90aGluZyB0byBkby4gKi8KIApAQCAt MTEzMiw2ICsxMTMyLDIwIEBAIHByb2NfZ2V0X3N0YXR1cyAocHJvY2luZm8g KnBpKQogCQkJCSAgICAgIHNpemVvZiAoZ2RiX3Byc3RhdHVzX3QpKQogCQkJ CT09IHNpemVvZiAoZ2RiX3Byc3RhdHVzX3QpKTsKICNlbmRpZiAvKiBVTklY V0FSRSAqLworCisjaWZkZWYgX19JTlRFUklYCisgICAgICAvKiBPbiBJbnRl cml4LCB0aGUgbG9jYXRpb24gb2YgdGhlIHRyYW1wb2xpbmUgY29kZSBjYW4g ZmxvYXQsIGFuZCBpdCdzCisJIG5vdCBwYXJ0IG9mIHRoZSBzeW1ib2wgdGFi bGUgKGJlY2F1c2UgaXQncyBpbnRlcm5hbCB0byBhIERMTCkuICAKKwkgSG93 ZXZlciwgdGhlIHN5c3RlbSBrbm93cyB3aGVyZSBpdCBpcywgYW5kIHRlbGxz IHVzLCBzbyB3ZSBjYXB0dXJlIAorCSB0aGF0IGluZm8gaGVyZS4gKi8KKy8v IFRISVMgTUFZIE5PVCBCRSBUSEUgQkVTVCBQTEFDRSB0byByZWFkCisvLyBJ VCBNQVkgQkUgQkVTVCBUTyBNQUtFIFRIRVNFIEZJRUxEUyBQRVItUFJPQwor ICAgICAgdHJhbXBfc3RhcnQgPSAoQ09SRV9BRERSKXBpLT5wcnN0YXR1cy5w cl9zaWduYWxkZWxpdmVyZXI7CisgICAgICB0cmFtcF9lbmQgPSAoQ09SRV9B RERSKXBpLT5wcnN0YXR1cy5wcl9lbmRzaWduYWxkZWxpdmVyZXI7CisgICAg ICBudWxsX3N0YXJ0ID0gKENPUkVfQUREUilwaS0+cHJzdGF0dXMucHJfbnVs bGFwaTsKKyAgICAgIG51bGxfZW5kID0gKENPUkVfQUREUilwaS0+cHJzdGF0 dXMucHJfZW5kbnVsbGFwaTsKKyNlbmRpZgorCiAJfQogICAgIH0KICNlbHNl CS8qIGlvY3RsIG1ldGhvZCAqLwpAQCAtMTI1Miw3ICsxMjY2LDggQEAgcHJv Y193aGF0IChwcm9jaW5mbyAqcGkpCiAjZW5kaWYKIH0KIAotI2lmbmRlZiBQ SU9DU1NQQ0FDVAkvKiBUaGUgZm9sbG93aW5nIGlzIG5vdCBzdXBwb3J0ZWQg b24gT1NGLiAgKi8KKyNpZiAhZGVmaW5lZChQSU9DU1NQQ0FDVCkgJiYgIWRl ZmluZWQoX19JTlRFUklYKQorLyogVGhlIGZvbGxvd2luZyBpcyBub3Qgc3Vw cG9ydGVkIG9uIE9TRi4gIE9yIEludGVyaXguICAqLwogLyoKICAqIEZ1bmN0 aW9uOiBwcm9jX25zeXNhcmcKICAqCkBAIC0xOTYwLDggKzE5NzUsOCBAQCBw cm9jX3NldF90cmFjZWRfc3lzZXhpdCAocHJvY2luZm8gKnBpLCBzCiBpbnQK IHByb2Nfc2V0X2hlbGRfc2lnbmFscyAocHJvY2luZm8gKnBpLCBnZGJfc2ln c2V0X3QgKnNpZ2hvbGQpCiB7Ci0gIGludCB3aW47Ci0KKyAgaW50IHdpbiA9 IDE7ICAvKiBObyBQQ1NIT0xEID09IE5vIExXUHM7IGp1c3Qgc3VjY2VlZC4g Ki8KKwogICAvKgogICAgKiBXZSBzaG91bGQgbmV2ZXIgaGF2ZSB0byBhcHBs eSB0aGlzIG9wZXJhdGlvbiB0byBhbnkgcHJvY2luZm8KICAgICogZXhjZXB0 IHRoZSBvbmUgZm9yIHRoZSBtYWluIHByb2Nlc3MuICBJZiB0aGF0IGV2ZXIg Y2hhbmdlcwpAQCAtMTk3Myw3ICsxOTg4LDggQEAgcHJvY19zZXRfaGVsZF9z aWduYWxzIChwcm9jaW5mbyAqcGksIGdkYgogICAgIHBpID0gZmluZF9wcm9j aW5mb19vcl9kaWUgKHBpLT5waWQsIDApOwogCiAjaWZkZWYgTkVXX1BST0Nf QVBJCisjaWZkZWYgUENTSE9MRAogICB7CiAgICAgc3RydWN0IHsKICAgICAg IHByb2Nmc19jdGxfdCBjbWQ7CiAgICAgICAvKiBVc2UgY2hhciBhcnJheSB0 byBhdm9pZCBhbGlnbm1lbnQgaXNzdWVzLiAgKi8KQEAgLTE5ODQsNiArMjAw MSw3IEBAIHByb2Nfc2V0X2hlbGRfc2lnbmFscyAocHJvY2luZm8gKnBpLCBn ZGIKICAgICBtZW1jcHkgKCZhcmcuaG9sZCwgc2lnaG9sZCwgc2l6ZW9mIChn ZGJfc2lnc2V0X3QpKTsKICAgICB3aW4gPSAod3JpdGUgKHBpLT5jdGxfZmQs ICh2b2lkICopICZhcmcsIHNpemVvZiAoYXJnKSkgPT0gc2l6ZW9mIChhcmcp KTsKICAgfQorI2VuZGlmCiAjZWxzZQogICB3aW4gPSAoaW9jdGwgKHBpLT5j dGxfZmQsIFBJT0NTSE9MRCwgc2lnaG9sZCkgPj0gMCk7CiAjZW5kaWYKQEAg LTI3OTgsNyArMjgxNiwxMyBAQCBwcm9jX2tpbGwgKHByb2NpbmZvICpwaSwg aW50IHNpZ25vKQogCiAgICAgICBjbWRbMF0gPSBQQ0tJTEw7CiAgICAgICBj bWRbMV0gPSBzaWdubzsKKyNpZmRlZiBfX0lOVEVSSVgKKyAgICAgIC8qIFdv cmsgYXJvdW5kIHN5c3RlbSBidWc7IGZvciBub3cuICovCisgICAgICB3cml0 ZSAocGktPmN0bF9mZCwgKGNoYXIgKikgJmNtZCwgc2l6ZW9mIChjbWQpKTsK KyAgICAgIHdpbiA9IDE7CisjZWxzZQogICAgICAgd2luID0gKHdyaXRlIChw aS0+Y3RsX2ZkLCAoY2hhciAqKSAmY21kLCBzaXplb2YgKGNtZCkpID09IHNp emVvZiAoY21kKSk7CisjZW5kaWYKICNlbHNlICAgLyogaW9jdGwgbWV0aG9k ICovCiAgICAgICAvKiBGSVhNRTogZG8gSSBuZWVkIHRoZSBBbHBoYSBPU0Yg Zml4dXBzIHByZXNlbnQgaW4KIAkgcHJvY2ZzLmMvdW5jb25kaXRpb25hbGx5 X2tpbGxfaW5mZXJpb3I/ICBQZXJoYXBzIG9ubHkgZm9yIFNJR0tJTEw/ICov CkBAIC0yODgwLDYgKzI5MDQsNTMgQEAgcHJvY19zZXRfd2F0Y2hwb2ludCAo cHJvY2luZm8gKnBpLCBDT1JFXwogI2VuZGlmCiB9CiAKKy8vIE5FRURTIFJF SU5URVJGQUNFCisjaWZkZWYgX19JTlRFUklYCisvKiBGaW5kIHRoZSBhbGxv Y2F0aW9uIGJhc2UgKGFuIE5UIGNvbmNlcHQpIGNvbnRhaW5pbmcgdGhlIGFk ZHJlc3MgKi8KK0NPUkVfQUREUgorcHJvY19hbGxvY2F0aW9uX2Jhc2UoQ09S RV9BRERSIGFkZHIpCit7CisgIGludCBubWFwOworICBwcm1hcF90ICpwcm1h cHM7CisgIHBybWFwX3QgKnBybWFwOworICBzdHJ1Y3QgcHJvY2luZm8gKnBp OworICBzdHJ1Y3Qgc3RhdCBzYnVmOworICBjaGFyIHBhdGhuYW1lW01BWF9Q Uk9DX05BTUVfU0laRV07CisgIGludCBtYXBfZmQ7CisKKyAgcGkgPSBmaW5k X3Byb2NpbmZvX29yX2RpZSAoUElER0VUIChpbmZlcmlvcl9wdGlkKSwgMCk7 CisKKyAgLyogT3BlbiBtYXAgZmQuICAqLworICBzcHJpbnRmIChwYXRobmFt ZSwgIi9wcm9jLyVkL21hcCIsIHBpLT5waWQpOworICBpZiAoKG1hcF9mZCA9 IG9wZW4gKHBhdGhuYW1lLCBPX1JET05MWSkpIDwgMCkKKyAgICBwcm9jX2Vy cm9yIChwaSwgInByb2NfaXRlcmF0ZV9vdmVyX21hcHBpbmdzIChvcGVuKSIs IF9fTElORV9fKTsKKworICAvKiBNYWtlIHN1cmUgaXQgZ2V0cyBjbG9zZWQg YWdhaW4uICAqLworICBtYWtlX2NsZWFudXBfY2xvc2UgKG1hcF9mZCk7CisK KyAgaWYgKGZzdGF0IChtYXBfZmQsICZzYnVmKSA8IDApCisgICAgcmV0dXJu IDA7CisKKyAgbm1hcCA9IHNidWYuc3Rfc2l6ZSAvIHNpemVvZiAocHJtYXBf dCk7CisgIHBybWFwcyA9IChwcm1hcF90ICopIGFsbG9jYSAobm1hcCAqIHNp emVvZihwcm1hcF90KSk7CisgIGlmICgobHNlZWsgKG1hcF9mZCwgMCwgU0VF S19TRVQpID09IDApICYmCisJKHJlYWQgKG1hcF9mZCwgKGNoYXIgKikgcHJt YXBzLCBubWFwICogc2l6ZW9mIChwcm1hcF90KSkgPT0KKwkobm1hcCAqIHNp emVvZiAocHJtYXBfdCkpKSkKKyAgICB7CisgICAgICBpbnQgaSA9IDA7Cisg ICAgICBmb3IgKHBybWFwID0gcHJtYXBzOyBpIDwgbm1hcDsgKytwcm1hcCwg KytpKQorICAgICAgICB7CisJICBpZiAoKChDT1JFX0FERFIpcHJtYXAtPnBy X3ZhZGRyIDw9IGFkZHIpICYmCisJICAgICAgKChDT1JFX0FERFIpcHJtYXAt PnByX3ZhZGRyICsgcHJtYXAtPnByX3NpemUgPiBhZGRyKSkKKwkgICAgewor CQlyZXR1cm4gKENPUkVfQUREUilwcm1hcC0+QWxsb2NhdGlvbkJhc2U7CisJ ICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgcmV0dXJuIChDT1JFX0FERFIp LTE7Cit9CisjZW5kaWYgLyogX19JTlRFUklYICovCisKICNpZmRlZiBUTV9J Mzg2U09MMl9ICQkvKiBJcyBpdCBob2tleSB0byB1c2UgdGhpcz8gKi8KIAog I2luY2x1ZGUgPHN5cy9zeXNpODYuaD4KQEAgLTM5OTMsNyArNDA2NCw3IEBA IHdhaXRfYWdhaW46CiAJCSAgICBwcmludGZfZmlsdGVyZWQgKCJwcm9jZnM6 IHRyYXBwZWQgb24gZW50cnkgdG8gIik7CiAJCSAgICBwcm9jX3ByZXR0eXBy aW50X3N5c2NhbGwgKHByb2Nfd2hhdCAocGkpLCAwKTsKIAkJICAgIHByaW50 Zl9maWx0ZXJlZCAoIlxuIik7Ci0jaWZuZGVmIFBJT0NTU1BDQUNUCisjaWYg IWRlZmluZWQoUElPQ1NTUENBQ1QpICYmICFkZWZpbmVkKF9fSU5URVJJWCkK IAkJICAgIHsKIAkJICAgICAgbG9uZyBpLCBuc3lzYXJncywgKnN5c2FyZ3M7 CiAKQEAgLTQwODEsNyArNDE1Miw3IEBAIHdhaXRfYWdhaW46CiAJCSAgICBw cmludGZfZmlsdGVyZWQgKCJwcm9jZnM6IHRyYXBwZWQgb24gZXhpdCBmcm9t ICIpOwogCQkgICAgcHJvY19wcmV0dHlwcmludF9zeXNjYWxsIChwcm9jX3do YXQgKHBpKSwgMCk7CiAJCSAgICBwcmludGZfZmlsdGVyZWQgKCJcbiIpOwot I2lmbmRlZiBQSU9DU1NQQ0FDVAorI2lmICFkZWZpbmVkKFBJT0NTU1BDQUNU KSAmJiAhZGVmaW5lZChfX0lOVEVSSVgpCiAJCSAgICB7CiAJCSAgICAgIGxv bmcgaSwgbnN5c2FyZ3MsICpzeXNhcmdzOwogCkBAIC00Mjc3LDE1ICs0MzQ4 LDIxIEBAIHByb2Nmc194ZmVyX21lbW9yeSAoQ09SRV9BRERSIG1lbWFkZHIs IGMKIAkgIFBST0NGU19OT1RFICgid3JpdGUgbWVtb3J5OiBcbiIpOwogI2Vu ZGlmCiAJICBuYnl0ZXMgPSB3cml0ZSAocGktPmFzX2ZkLCBteWFkZHIsIGxl bik7CisJICBpZiAobmJ5dGVzIDwgMCkKKwkgICAgeworCSAgICAgIHBlcnJv cigicHJvY2ZzIHdyaXRlIG9mIG1lbW9yeToiKTsKKwkgICAgICBuYnl0ZXMg PSAwOworCSAgICB9CiAJfQogICAgICAgZWxzZQogCXsKIAkgIFBST0NGU19O T1RFICgicmVhZCAgbWVtb3J5OiBcbiIpOwogCSAgbmJ5dGVzID0gcmVhZCAo cGktPmFzX2ZkLCBteWFkZHIsIGxlbik7Ci0JfQotICAgICAgaWYgKG5ieXRl cyA8IDApCi0JewotCSAgbmJ5dGVzID0gMDsKKwkgIGlmIChuYnl0ZXMgPCAw KQorCSAgICB7CisJICAgICAgcGVycm9yKCJwcm9jZnMgcmVhZCBvZiBtZW1v cnk6Iik7CisJICAgICAgbmJ5dGVzID0gMDsKKwkgICAgfQogCX0KICAgICB9 CiAgIHJldHVybiBuYnl0ZXM7CkBAIC01NzIyLDcgKzU3OTksNyBAQCBwcm9j ZnNfZmlyc3RfYXZhaWxhYmxlICh2b2lkKQogfQogCiAvKiA9PT09PT09PT09 PT09PT09PT09ICBHQ09SRSAuTk9URSAiTU9EVUxFIiA9PT09PT09PT09PT09 PT09PT09ICovCi0jaWYgZGVmaW5lZCAoVU5JWFdBUkUpIHx8IGRlZmluZWQg KFBJT0NPUEVOTFdQKSB8fCBkZWZpbmVkIChQQ0FHRU5UKQorI2lmIChkZWZp bmVkIChVTklYV0FSRSkgfHwgZGVmaW5lZCAoUElPQ09QRU5MV1ApIHx8IGRl ZmluZWQgKFBDQUdFTlQpKSAmJiAhZGVmaW5lZChfX0lOVEVSSVgpCiAvKiBn Y29yZSBvbmx5IGltcGxlbWVudGVkIG9uIHNvbGFyaXMgYW5kIHVuaXh3YXJl IChzbyBmYXIpICovCiAKIHN0YXRpYyBjaGFyICoKZGlmZiAtZHJ1cFAgLS1l eGNsdWRlLWZyb209L00vZG9ubi9kaWZmcy9leGNsdWRlLmZpbGVzIGdkYi5z YXZlZC90ZXN0c3VpdGUvZ2RiLmJhc2UvaW5mby1wcm9jLmV4cCBnZGIvdGVz dHN1aXRlL2dkYi5iYXNlL2luZm8tcHJvYy5leHAKLS0tIHNyYy9nZGIuc2F2 ZWQvdGVzdHN1aXRlL2dkYi5iYXNlL2luZm8tcHJvYy5leHAJVHVlIE1hciAg NSAxNDo1NjowNiAyMDAyCisrKyBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9pbmZvLXByb2MuZXhwCVR1ZSBNYXIgIDUgMjA6NTM6NDQgMjAwMgpAQCAt NzEsNSArNzEsNSBAQCBpZiB7ICEgWyBydW50byBtYWluIF0gfSB0aGVuIHsK IGdkYl90ZXN0ICJpbmZvIHByb2MiICJwcm9jZXNzICR7ZGVjaW1hbH0uKiIg ImluZm8gcHJvYyB3aXRoIHByb2Nlc3MiCiAKIGdkYl90ZXN0ICJpbmZvIHBy b2MgbWFwcGluZyIgXAotCSIuKk1hcHBlZCBhZGRyZXNzIHNwYWNlczouKiR7 aGV4fSR7d3N9JHtoZXh9JHt3c30ke2hleH0ke3dzfSR7aGV4fS4qIiBcCisJ Ii4qTWFwcGVkIGFkZHJlc3Mgc3BhY2VzOi4qJHtoZXh9JHt3c30ke2hleH0k e3dzfSR7aGV4fSR7d3N9XCgke2hleH18MFwpLioiIFwKIAkiaW5mbyBwcm9j IG1hcHBpbmciCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpNaXNj ZWxsYW5vdXMgc21hbGwgY2hhbmdlcyBzcGVjaWZpYyB0byBJbnRlcml4LgoK VGhlcmUgbWlnaHQgYmUgYSBiZXR0ZXIgd2F5IHRvIGRldGVybWluZSB0aGF0 IHRoZXJlIGlzIGFuCm92ZXJyaWRpbmcgZnVuY3Rpb24gZm9yIGdldF9sb25n am1wX3RhcmdldC4KCnBvbGwoKSBpcyBwcmVzZW50IGJ1dCBub3QgZnVsbHkg ZnVuY3Rpb25hbCBvbiBJbnRlcml4LgpUaGUgcG9sbCB0ZXN0IHJlYWxseSBi ZWxvbmdzIGluIGNvbmZpZ3VyZSwgYnV0IGxhY2tpbmcKdGhhdCBpdCBwcm9i YWJseSBiZWxvbmdzIGluIHRoZSBtYW51YWxseSBjb25maWd1cmVkCmhlYWRl ciBmaWxlcy4gIChTb21ldGhpbmcgYWxvbmcgdGhlIGxpbmVzIG9mCihmb3Ig dGhlIGRlZmF1bHQpOgojaWZkZWYgSEFWRV9QT0xMCiNkZWZpbmUgVVNFX1BP TExfT05fUFJPQwojZGVmaW5lIFVTRV9QT0xMX09OX1RUWQojZWxzZQojdW5k ZWYgVVNFX1BPTExfT05fUFJPQwojdW5kZWYgVVNFX1BPTExfT05fVFRZCiNl bmRpZgoKRm9yIHNwZWNpYWwgY2FzZXMgKHVzaW5nIG1pbmUgYXMgYW4gZXhh bXBsZSk6CiN1bmRlZiBVU0VfUE9MTF9PTl9UVFkKI3VuZGVmIFVTRV9QT0xM X09OX1BST0MgLy8gSnVzdCBmb3IgZXJyb3IgcHJldmVudGlvbgojZGVmaW5l IFVTRV9QT0xMX09OX1BST0MKCgpGcmkgRGVjICAzIDEwOjA3OjIwIFBTVCAx OTk5ICBEb25uIFRlcnJ5IDxkb25udGVAbWljcm9zb2Z0LmNvbT4KCSogdG9w LmModXNlX3dpbmRvd3MpOiBkZWZhdWx0IGlzIHRvIG5vdCB1c2Ugb24gSW50 ZXJpeC4KCSogZGVmcy5oKEhBVkVfUE9MTCk6IG92ZXJyaWRlIGZvciBJbnRl cml4LgoKCkluZGV4OiBzcmMvZ2RiL2RlZnMuaAo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09ClJDUyBmaWxlOiAvZGV2L2ZzL0gvcnVwcC9kZXZlbC1sb2NhbC1y ZXBvc2l0b3J5L3NyYy9nZGIvZGVmcy5oLHYKcmV0cmlldmluZyByZXZpc2lv biAxLjEuMS4xCmRpZmYgLXAgLXUgLXIxLjEuMS4xIGRlZnMuaAotLS0gc3Jj L2dkYi9kZWZzLmgJMjAwMS8xMi8yMyAwMDozNDo0NQkxLjEuMS4xCisrKyBz cmMvZ2RiL2RlZnMuaAkyMDAxLzEyLzIzIDIyOjU4OjEzCkBAIC0zOSw2ICsz OSwxMSBAQAogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2VuZGlmCiAKKyNpZmRl ZiBfX0lOVEVSSVgKKyN1bmRlZiBIQVZFX1BPTEwJLyogT25seSBwYXJ0aWFs bHkgaW1wbGVtZW50ZWQgc28gZmFyICovCisjdW5kZWYgSEFWRV9WRk9SSwkv KiBPbmx5IHBhcnRpYWxseSBpbXBsZW1lbnRlZCBzbyBmYXIgKi8gLy8gQ0hF Q0sKKyNlbmRpZgorCiAvKiBKdXN0IGluIGNhc2UgdGhleSdyZSBub3QgZGVm aW5lZCBpbiBzdGRpby5oLiAqLwogCiAjaWZuZGVmIFNFRUtfU0VUCkluZGV4 OiBzcmMvZ2RiL3RvcC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp bGU6IC9kZXYvZnMvSC9ydXBwL2RldmVsLWxvY2FsLXJlcG9zaXRvcnkvc3Jj L2dkYi90b3AuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xLjEuMQpkaWZm IC1wIC11IC1yMS4xLjEuMSB0b3AuYwotLS0gc3JjL2dkYi90b3AuYwkyMDAx LzEyLzIzIDAwOjM0OjU2CTEuMS4xLjEKKysrIHNyYy9nZGIvdG9wLmMJMjAw MS8xMi8yMyAyMjo1ODoxMwpAQCAtODEsNyArODEsMTEgQEAgaW50IGluaGli aXRfZ2RiaW5pdCA9IDA7CiAvKiBJZiBub256ZXJvLCBhbmQgR0RCIGhhcyBi ZWVuIGNvbmZpZ3VyZWQgdG8gYmUgYWJsZSB0byB1c2Ugd2luZG93cywKICAg IGF0dGVtcHQgdG8gb3BlbiB0aGVtIHVwb24gc3RhcnR1cC4gICovCiAKKyNp ZmRlZiBfX0lOVEVSSVgKK2ludCB1c2Vfd2luZG93cyA9IDA7CisjZWxzZQog aW50IHVzZV93aW5kb3dzID0gMTsKKyNlbmRpZgogCiBleHRlcm4gY2hhciBs YW5nX2ZyYW1lX21pc21hdGNoX3dhcm5bXTsJCS8qIGxhbmd1YWdlLmMgKi8K IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KTWlzY2VsbGFuZW91 cyBzbWFsbCBmaXhlcyB0aGF0IGFyZSBnZW5lcmFsbHkgYXBwbGljYWJsZS4K ClRFU1RfR0RCIHZhcmlhYmxlIGFsbG93cyByZXRhcmdldGluZyBvZiB0ZXN0 cy4KCk1TVkMgNC4wIChNU0MgMTAuMCkgc3RpbGwgZG9lc24ndCBoYW5kbGUg dW5zaWduZWQgX19pbnQ2NC4KCkZyaSBEZWMgIDMgMTA6MDc6MjAgUFNUIDE5 OTkgIERvbm4gVGVycnkgPGRvbm50ZUBtaWNyb3NvZnQuY29tPgoJKiB0ZXN0 c3VpdGUvZ2RiLmJhc2Uvc2VsZnRlc3QuZXhwOiBob25vciBURVNUX0dEQiB2 YXIuCgkqIGV2ZW50LXRvcC5jIChjb21tYW5kX2hhbmRsZXIpOiBNaXNzZWQg dGVzdCBmb3Igc2JyaygpOwoJaWYgbWFpbnQgc3BhY2Ugbm90IGltcGxlbWVu dGVkIHNheSBzb21ldGhpbmcuCgkqIGdkYi5iYXNlL21haW50LmV4cDogVG8g bWF0Y2ggYWJvdmUuCgoKSW5kZXg6IHNyYy9nZGIvZXZlbnQtdG9wLmMKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2Rldi9mcy9IL3J1cHAv ZGV2ZWwtbG9jYWwtcmVwb3NpdG9yeS9zcmMvZ2RiL2V2ZW50LXRvcC5jLHYK cmV0cmlldmluZyByZXZpc2lvbiAxLjEuMS4xCmRpZmYgLXAgLXUgLXIxLjEu MS4xIGV2ZW50LXRvcC5jCi0tLSBzcmMvZ2RiL2V2ZW50LXRvcC5jCTIwMDEv MTIvMjMgMDA6MzQ6NDYJMS4xLjEuMQorKysgc3JjL2dkYi9ldmVudC10b3Au YwkyMDAxLzEyLzIzIDIzOjA0OjMxCkBAIC01MjMsNyArNTIzLDkgQEAgY29t bWFuZF9oYW5kbGVyIChjaGFyICpjb21tYW5kKQogICAgICAgYXJnMS0+bmV4 dCA9IGFyZzI7CiAgICAgICBhcmcyLT5uZXh0ID0gTlVMTDsKICAgICAgIGFy ZzEtPmRhdGEuaW50ZWdlciA9IHRpbWVfYXRfY21kX3N0YXJ0OworI2lmZGVm IEhBVkVfU0JSSwogICAgICAgYXJnMi0+ZGF0YS5pbnRlZ2VyID0gc3BhY2Vf YXRfY21kX3N0YXJ0OworI2VuZGlmCiAgICAgICBhZGRfY29udGludWF0aW9u IChjb21tYW5kX2xpbmVfaGFuZGxlcl9jb250aW51YXRpb24sIGFyZzEpOwog ICAgIH0KIApAQCAtNTU1LDYgKzU1Nyw4IEBAIGNvbW1hbmRfaGFuZGxlciAo Y2hhciAqY29tbWFuZCkKIAkJCSAgICAgc3BhY2Vfbm93LAogCQkJICAgICAo c3BhY2VfZGlmZiA+PSAwID8gJysnIDogJy0nKSwKIAkJCSAgICAgc3BhY2Vf ZGlmZik7CisjZWxzZQorCSAgcHJpbnRmX3VuZmlsdGVyZWQgKCJTcGFjZSB1 c2VkOiA8dW5pbXBsZW1lbnRlZD4gKCs8dW5pbXBsZW1lbnRlZD4gZm9yIHRo aXMgY29tbWFuZClcbiIpOwogI2VuZGlmCiAJfQogICAgIH0KSW5kZXg6IHNy Yy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL21haW50LmV4cAo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09ClJDUyBmaWxlOiAvZGV2L2ZzL0gvcnVwcC9kZXZlbC1s b2NhbC1yZXBvc2l0b3J5L3NyYy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL21h aW50LmV4cCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xLjEuMQpkaWZmIC1w IC11IC1yMS4xLjEuMSBtYWludC5leHAKLS0tIHNyYy9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL21haW50LmV4cAkyMDAxLzEyLzIzIDAwOjM1OjE3CTEuMS4x LjEKKysrIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL21haW50LmV4cAky MDAxLzEyLzIzIDIzOjA0OjMxCkBAIC0xMTksOSArMTE5LDExIEBAIGdkYl9l eHBlY3QgIHsKICAgICAgICAgdGltZW91dCAgICAgICAgIHsgZmFpbCAiKHRp bWVvdXQpIG1haW50IHNwYWNlIiB9CiAgICAgICAgIH0KIAorc2V0IGRlY09y VW5pbXAgKCRkZWNpbWFsfDx1bmltcGxlbWVudGVkPikKKwogc2VuZF9nZGIg Im1haW50IHNwYWNlIDFcbiIKIGdkYl9leHBlY3QgIHsKLSAgICAgICAgLXJl ICJTcGFjZSB1c2VkOiAkZGVjaW1hbCBcXChcXCskZGVjaW1hbCBmb3IgdGhp cyBjb21tYW5kXFwpLiokZ2RiX3Byb21wdCAkIlwKKyAgICAgICAgLXJlICJT cGFjZSB1c2VkOiAkZGVjT3JVbmltcCBcXChcXCskZGVjT3JVbmltcCBmb3Ig dGhpcyBjb21tYW5kXFwpLiokZ2RiX3Byb21wdCAkIlwKICAgICAgICAgICAg ICAgICAgICAgICAgIHsgcGFzcyAibWFpbnQgc3BhY2UgMSIgfQogICAgICAg ICAtcmUgIi4qJGdkYl9wcm9tcHQgJCIgICAgICAgeyBmYWlsICJtYWludCBz cGFjZSAxIiB9CiAgICAgICAgIHRpbWVvdXQgICAgICAgICB7IGZhaWwgIih0 aW1lb3V0KSBtYWludCBzcGFjZSAxIiB9CkBAIC0xMzAsNyArMTMyLDcgQEAg Z2RiX2V4cGVjdCAgewogCiBzZW5kX2dkYiAibWFpbnQgdGltZVxuIgogZ2Ri X2V4cGVjdCAgewotICAgICAgICAtcmUgIlwibWFpbnRlbmFuY2UgdGltZVwi IHRha2VzIGEgbnVtZXJpYyBhcmd1bWVudFxcLi4qU3BhY2UgdXNlZDogJGRl Y2ltYWwgXFwoXFwrJGRlY2ltYWwgZm9yIHRoaXMgY29tbWFuZFxcKS4qJGdk Yl9wcm9tcHQgJCJcCisgICAgICAgIC1yZSAiXCJtYWludGVuYW5jZSB0aW1l XCIgdGFrZXMgYSBudW1lcmljIGFyZ3VtZW50XFwuLipTcGFjZSB1c2VkOiAk ZGVjT3JVbmltcCBcXChcXCskZGVjT3JVbmltcCBmb3IgdGhpcyBjb21tYW5k XFwpLiokZ2RiX3Byb21wdCAkIlwKICAgICAgICAgICAgICAgICAgICAgICAg IHsgcGFzcyAibWFpbnQgdGltZSIgfQogICAgICAgICAtcmUgIi4qJGdkYl9w cm9tcHQgJCIgICAgICAgeyBmYWlsICJtYWludCB0aW1lIiB9CiAgICAgICAg IHRpbWVvdXQgICAgICAgICB7IGZhaWwgIih0aW1lb3V0KSBtYWludCB0aW1l IiB9CkBAIC0xMzgsNyArMTQwLDcgQEAgZ2RiX2V4cGVjdCAgewogCiBzZW5k X2dkYiAibWFpbnQgdGltZSAxXG4iCiBnZGJfZXhwZWN0ICB7Ci0gICAgICAg IC1yZSAiQ29tbWFuZCBleGVjdXRpb24gdGltZTogJGRlY2ltYWwuKlNwYWNl IHVzZWQ6ICRkZWNpbWFsIFxcKFxcKyRkZWNpbWFsIGZvciB0aGlzIGNvbW1h bmRcXCkuKiRnZGJfcHJvbXB0ICQiXAorICAgICAgICAtcmUgIkNvbW1hbmQg ZXhlY3V0aW9uIHRpbWU6ICRkZWNpbWFsLipTcGFjZSB1c2VkOiAkZGVjT3JV bmltcCBcXChcXCskZGVjT3JVbmltcCBmb3IgdGhpcyBjb21tYW5kXFwpLiok Z2RiX3Byb21wdCAkIlwKICAgICAgICAgICAgICAgICAgICAgICAgIHsgcGFz cyAibWFpbnQgdGltZSAxIiB9CiAgICAgICAgIC1yZSAiLiokZ2RiX3Byb21w dCAkIiAgICAgICB7IGZhaWwgIm1haW50IHRpbWUgMSIgfQogICAgICAgICB0 aW1lb3V0ICAgICAgICAgeyBmYWlsICIodGltZW91dCkgbWFpbnQgdGltZSAx IiB9CkBAIC0xNDYsNyArMTQ4LDcgQEAgZ2RiX2V4cGVjdCAgewogCiBzZW5k X2dkYiAibWFpbnQgdGltZSAwXG4iCiBnZGJfZXhwZWN0ICB7Ci0gICAgICAg IC1yZSAiU3BhY2UgdXNlZDogJGRlY2ltYWwgXFwoXFwrJGRlY2ltYWwgZm9y IHRoaXMgY29tbWFuZFxcKS4qJGdkYl9wcm9tcHQgJCJcCisgICAgICAgIC1y ZSAiU3BhY2UgdXNlZDogJGRlY09yVW5pbXAgXFwoXFwrJGRlY09yVW5pbXAg Zm9yIHRoaXMgY29tbWFuZFxcKS4qJGdkYl9wcm9tcHQgJCJcCiAgICAgICAg ICAgICAgICAgICAgICAgICB7IHBhc3MgIm1haW50IHRpbWUgMCIgfQogICAg ICAgICAtcmUgIi4qJGdkYl9wcm9tcHQgJCIgICAgICAgeyBmYWlsICJtYWlu dCB0aW1lIDAiIH0KICAgICAgICAgdGltZW91dCAgICAgICAgIHsgZmFpbCAi KHRpbWVvdXQpIG1haW50IHRpbWUgMCIgfQpJbmRleDogc3JjL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2Uvc2VsZnRlc3QuZXhwCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KUkNTIGZpbGU6IC9kZXYvZnMvSC9ydXBwL2RldmVsLWxvY2FsLXJl cG9zaXRvcnkvc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2VsZnRlc3Qu ZXhwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEuMS4xCmRpZmYgLXAgLXUg LXIxLjEuMS4xIHNlbGZ0ZXN0LmV4cAotLS0gc3JjL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2Uvc2VsZnRlc3QuZXhwCTIwMDEvMTIvMjMgMDA6MzU6MTgJMS4x LjEuMQorKysgc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2VsZnRlc3Qu ZXhwCTIwMDEvMTIvMjMgMjM6MDQ6MzEKQEAgLTQzNSw3ICs0MzUsMTMgQEAg c2V0IEdEQl9GVUxMUEFUSCBbZmluZF9nZGIgJEdEQl0KIHJlbW90ZV9maWxl IGhvc3QgZGVsZXRlIHgkdG9vbAogCiBnZGJfc3RhcnQKLXNldCBmaWxlIFty ZW1vdGVfZG93bmxvYWQgaG9zdCAkR0RCX0ZVTExQQVRIIHgkdG9vbF0KKwor Z2xvYmFsIFRFU1RfR0RCCitpZiBbaW5mbyBleGlzdHMgVEVTVF9HREJdIHsK KyAgIHNldCBmaWxlICRURVNUX0dEQgorfSBlbHNlIHsKKyAgIHNldCBmaWxl IFtyZW1vdGVfZG93bmxvYWQgaG9zdCAkR0RCX0ZVTExQQVRIIHgkdG9vbF0K K30KIHNldCByZXN1bHQgW3Rlc3Rfd2l0aF9zZWxmICRmaWxlXTsKIGdkYl9l eGl0OwogY2F0Y2ggInJlbW90ZV9maWxlIGhvc3QgZGVsZXRlICRmaWxlIjsK LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCk9uIEludGVyaXggKGFu ZCBvbiBQRSBzeXN0ZW1zIGluIGdlbmVyYWwsIHdoZW4gUEUgaXMgZnVsbHkg c3VwcG9ydGVkKQp0aGUgdmFsdWUgb2YgSW1hZ2VCYXNlIGlzIGluIHByaW5j aXBsZSB2YXJpYWJsZS4gIFRoaXMgcGF0Y2ggYXBwbGllcwp0aGUgdmFsdWUg b2YgSW1hZ2VCYXNlIGluIHRoZSByaWdodCBwbGFjZXMgYW5kIHJlcG9ydHMg aXQgYXMgcmVxdWlyZWQuCgpGcmkgRGVjICAzIDEwOjA3OjIwIFBTVCAxOTk5 ICBEb25uIFRlcnJ5IDxkb25udGVAbWljcm9zb2Z0LmNvbT4KCgkqIGNvZmZy ZWFkLmMgKGNvZmZfc3ltZmlsZV9yZWFkKTogQXBwbHkgSW1hZ2UgQmFzZQoJ KiBleGVjLmMgKHByaW50X3NlY3Rpb25faW5mbyk6IFByaW50IGVudHJ5IHBv aW50IHdpdGggSW1hZ2VCYXNlLgoJKiBtYWludC5jIChtYWludGVuYW5jZV9p bmZvX3NlY3Rpb25zKTogUHJpbnQgSW1hZ2VCYXNlLgoJKiBzeW1maWxlLmMg KGluaXRfZW50cnlfcG9pbnQpOiBBcHBseSBJbWFnZUJhc2UuCgpJbmRleDog c3JjL2dkYi9jb2ZmcmVhZC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNT IGZpbGU6IC9kZXYvZnMvSC9ydXBwL2RldmVsLWxvY2FsLXJlcG9zaXRvcnkv c3JjL2dkYi9jb2ZmcmVhZC5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEu MS4xCmRpZmYgLXAgLXUgLXIxLjEuMS4xIGNvZmZyZWFkLmMKLS0tIHNyYy9n ZGIvY29mZnJlYWQuYwkyMDAxLzEyLzIzIDAwOjM0OjQzCTEuMS4xLjEKKysr IHNyYy9nZGIvY29mZnJlYWQuYwkyMDAxLzEyLzIzIDIzOjE3OjAzCkBAIC00 Nyw2ICs0NywxNCBAQAogCiBleHRlcm4gdm9pZCBfaW5pdGlhbGl6ZV9jb2Zm cmVhZCAodm9pZCk7CiAKKyNpZm5kZWYgQURKVVNUX09CSkZJTEVfT0ZGU0VU UworI2RlZmluZSBBREpVU1RfT0JKRklMRV9PRkZTRVRTKG9iamZpbGUsIHR5 cGUpIFwKKyAgICBnbnVfcGVpX2FkanVzdF9vYmpmaWxlX29mZnNldHMob2Jq ZmlsZSwgdHlwZSkKKyNlbmRpZgorCisvKiBUaGlzIGxpdHRsZSB0YXBkYW5j ZSBnaXZlcyB1cyBhIGRlY2xhcmF0aW9uLiAgVW50aWwgdGhpcyBpcyBtb3Jl CisgICBwZXJ2YXNpdmUsIHRoZSBlbnVtIGlzbid0IGluIHNjb3BlIGF0IHRo ZSByaWdodCB0aW1lLiAqLwordm9pZCBBREpVU1RfT0JKRklMRV9PRkZTRVRT KHN0cnVjdCBvYmpmaWxlICosIGVudW0gb2JqZmlsZV9hZGp1c3RzKTsKIHN0 cnVjdCBjb2ZmX3N5bWZpbGVfaW5mbwogICB7CiAgICAgZmlsZV9wdHIgbWlu X2xpbmVub19vZmZzZXQ7CS8qIFdoZXJlIGluIGZpbGUgbG93ZXN0IGxpbmUj cyBhcmUgKi8KQEAgLTM0NywyNSArMzU1LDYgQEAgY3NfdG9fc2VjdGlvbiAo c3RydWN0IGNvZmZfc3ltYm9sICpjcywgcwogICByZXR1cm4gb2ZmOwogfQog Ci0vKiBSZXR1cm4gdGhlIGFkZHJlc3Mgb2YgdGhlIHNlY3Rpb24gb2YgYSBD T0ZGIHN5bWJvbC4gICovCi0KLXN0YXRpYyBDT1JFX0FERFIgY3Nfc2VjdGlv bl9hZGRyZXNzIChzdHJ1Y3QgY29mZl9zeW1ib2wgKiwgYmZkICopOwotCi1z dGF0aWMgQ09SRV9BRERSCi1jc19zZWN0aW9uX2FkZHJlc3MgKHN0cnVjdCBj b2ZmX3N5bWJvbCAqY3MsIGJmZCAqYWJmZCkKLXsKLSAgYXNlY3Rpb24gKnNl Y3QgPSBOVUxMOwotICBzdHJ1Y3QgZmluZF90YXJnX3NlY19hcmcgYXJnczsK LSAgQ09SRV9BRERSIGFkZHIgPSAwOwotCi0gIGFyZ3MudGFyZ19pbmRleCA9 IGNzLT5jX3NlY251bTsKLSAgYXJncy5yZXN1bHRwID0gJnNlY3Q7Ci0gIGJm ZF9tYXBfb3Zlcl9zZWN0aW9ucyAoYWJmZCwgZmluZF90YXJnX3NlYywgJmFy Z3MpOwotICBpZiAoc2VjdCAhPSBOVUxMKQotICAgIGFkZHIgPSBiZmRfZ2V0 X3NlY3Rpb25fdm1hIChvYmpmaWxlLT5vYmZkLCBzZWN0KTsKLSAgcmV0dXJu IGFkZHI7Ci19Ci0KIC8qIExvb2sgdXAgYSBjb2ZmIHR5cGUtbnVtYmVyIGlu ZGV4LiAgUmV0dXJuIHRoZSBhZGRyZXNzIG9mIHRoZSBzbG90CiAgICB3aGVy ZSB0aGUgdHlwZSBmb3IgdGhhdCBpbmRleCBpcyBzdG9yZWQuCiAgICBUaGUg dHlwZS1udW1iZXIgaXMgaW4gSU5ERVguIApAQCAtNjQ2LDggKzYzNSwxNiBA QCBjb2ZmX3N5bWZpbGVfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZpCiAg IC8qIE5vdyB0aGF0IHRoZSBleGVjdXRhYmxlIGZpbGUgaXMgcG9zaXRpb25l ZCBhdCBzeW1ib2wgdGFibGUsCiAgICAgIHByb2Nlc3MgaXQgYW5kIGRlZmlu ZSBzeW1ib2xzIGFjY29yZGluZ2x5LiAgKi8KIAorICAvKiBTb21lIGltcGxl bWVudGF0aW9ucyAoZS5nLiBQRSkgaGF2ZSB0aGVpciBzeW1ib2xzIHN0b3Jl ZCBhcworICAgICByZWxhdGl2ZSB0byBzb21lIGJhc2Ugb3RoZXIgdGhhbiB6 ZXJvLiAgQWRqdXN0IHRoZSBvZmZzZXQKKyAgICAgYXJyYXkgdG8gY29tcGVu c2F0ZS4gIChBbmQgdGhlbiBwdXQgdGhpbmdzIGJhY2sgbGlrZSB3ZSBmb3Vu ZAorICAgICB0aGVtLikgICAoRG9pbmcgdGhpcyBoZXJlIHNhdmVzIGxvdHMg b2YgZXhlY3V0aW9uIHRpbWUgd2hpbGUKKyAgICAgcmVhZGluZyB0aGUgc3lt Ym9scywgYmVjYXVzZSBpdCdzIGF1dG9tYXRpYy4pICovCisKKyAgQURKVVNU X09CSkZJTEVfT0ZGU0VUUyhvYmpmaWxlLCBhZGp1c3RfZm9yX3N5bXRhYik7 CiAgIGNvZmZfc3ltdGFiX3JlYWQgKChsb25nKSBzeW10YWJfb2Zmc2V0LCBu dW1fc3ltYm9scywgb2JqZmlsZSk7Ci0KKyAgQURKVVNUX09CSkZJTEVfT0ZG U0VUUyhvYmpmaWxlLCBhZGp1c3RfZm9yX3N5bXRhYl9yZXN0b3JlKTsKKwog ICAvKiBTb3J0IHN5bWJvbHMgYWxwaGFiZXRpY2FsbHkgd2l0aGluIGVhY2gg YmxvY2suICAqLwogCiAgIHsKQEAgLTY4MCwxNiArNjc3LDIxIEBAIGNvZmZf c3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmkKIAogICAgICAg c3RhYnN0cnNpemUgPSBiZmRfc2VjdGlvbl9zaXplIChhYmZkLCBpbmZvLT5z dGFic3Ryc2VjdCk7CiAKKyAgICAgIEFESlVTVF9PQkpGSUxFX09GRlNFVFMo b2JqZmlsZSwgYWRqdXN0X2Zvcl9zdGFicyk7CiAgICAgICBjb2Zmc3RhYl9i dWlsZF9wc3ltdGFicyAob2JqZmlsZSwKIAkJCSAgICAgICBtYWlubGluZSwK IAkJCSAgICAgICBpbmZvLT50ZXh0YWRkciwgaW5mby0+dGV4dHNpemUsCiAJ CQkgICAgICAgaW5mby0+c3RhYnNlY3RzLAogCQkJICAgICAgIGluZm8tPnN0 YWJzdHJzZWN0LT5maWxlcG9zLCBzdGFic3Ryc2l6ZSk7CisgICAgICBBREpV U1RfT0JKRklMRV9PRkZTRVRTKG9iamZpbGUsIGFkanVzdF9mb3Jfc3RhYnNf cmVzdG9yZSk7CisKICAgICB9CiAgIGlmIChkd2FyZjJfaGFzX2luZm8gKGFi ZmQpKQogICAgIHsKICAgICAgIC8qIERXQVJGMiBzZWN0aW9ucy4gICovCisg ICAgICBBREpVU1RfT0JKRklMRV9PRkZTRVRTKG9iamZpbGUsIGFkanVzdF9m b3JfZHdhcmYpOwogICAgICAgZHdhcmYyX2J1aWxkX3BzeW10YWJzIChvYmpm aWxlLCBtYWlubGluZSk7CisgICAgICBBREpVU1RfT0JKRklMRV9PRkZTRVRT KG9iamZpbGUsIGFkanVzdF9mb3JfZHdhcmZfcmVzdG9yZSk7CiAgICAgfQog CiAgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKQEAgLTExNzMsMzYgKzExNzUs OCBAQCByZWFkX29uZV9zeW0gKHJlZ2lzdGVyIHN0cnVjdCBjb2ZmX3N5bWJv CiAjZW5kaWYKIAogICBzeW1udW0gKz0gMSArIGNzLT5jX25hdXg7Ci0KLSAg LyogVGhlIFBFIGZpbGUgZm9ybWF0IHN0b3JlcyBzeW1ib2wgdmFsdWVzIGFz IG9mZnNldHMgd2l0aGluIHRoZQotICAgICBzZWN0aW9uLCByYXRoZXIgdGhh biBhcyBhYnNvbHV0ZSBhZGRyZXNzZXMuICBXZSBjb3JyZWN0IHRoYXQKLSAg ICAgaGVyZSwgaWYgdGhlIHN5bWJvbCBoYXMgYW4gYXBwcm9wcmlhdGUgc3Rv cmFnZSBjbGFzcy4gIEZJWE1FOiBXZQotICAgICBzaG91bGQgdXNlIEJGRCB0 byByZWFkIHRoZSBzeW1ib2xzLCByYXRoZXIgdGhhbiBkdXBsaWNhdGluZyB0 aGUKLSAgICAgd29yayBoZXJlLiAgKi8KLSAgaWYgKHBlX2ZpbGUpCi0gICAg ewotICAgICAgc3dpdGNoIChjcy0+Y19zY2xhc3MpCi0JewotCWNhc2UgQ19F WFQ6Ci0JY2FzZSBDX1RIVU1CRVhUOgotCWNhc2UgQ19USFVNQkVYVEZVTkM6 Ci0JY2FzZSBDX1NFQ1RJT046Ci0JY2FzZSBDX05UX1dFQUs6Ci0JY2FzZSBD X1NUQVQ6Ci0JY2FzZSBDX1RIVU1CU1RBVDoKLQljYXNlIENfVEhVTUJTVEFU RlVOQzoKLQljYXNlIENfTEFCRUw6Ci0JY2FzZSBDX1RIVU1CTEFCRUw6Ci0J Y2FzZSBDX0JMT0NLOgotCWNhc2UgQ19GQ046Ci0JY2FzZSBDX0VGQ046Ci0J ICBpZiAoY3MtPmNfc2VjbnVtICE9IDApCi0JICAgIGNzLT5jX3ZhbHVlICs9 IGNzX3NlY3Rpb25fYWRkcmVzcyAoY3MsIHN5bWZpbGVfYmZkKTsKLQkgIGJy ZWFrOwotCX0KLSAgICB9Ci19Ci0MCit9CisMCiAvKiBTdXBwb3J0IGZvciBz dHJpbmcgdGFibGUgaGFuZGxpbmcgKi8KIAogc3RhdGljIGNoYXIgKnN0cmlu Z3RhYiA9IE5VTEw7CkBAIC0yNTAwLDYgKzI1NTUsNjcgQEAgaW5pdF9saW5l bm8gKGJmZCAqYWJmZCwgbG9uZyBvZmZzZXQsIGludAogICAgIGFib3J0KCk7 CiAgIC8qIFdlIGNvdWxkIHJlYWxsb2MgdGhlIHRhYmxlLCBidXQgaXQgcHJv YmFibHkgbG9zZXMgZm9yIG1vc3QgZmlsZXMuICAqLwogICByZXR1cm4gMDsK K30KKworCisvKiBUaGlzIGRvZXMgdGhlIGVxdWl2YWxlbnQgb2Ygd2hhdCBv bGRlciBjb2RlIGRpZCAoYnV0IGJvdGggbW9yZQorICAgZWZmaWNpZW50bHkg YW5kIHdpdGggYSBmaW5lciBncmFpbiBvZiBjb250cm9sKSwgYnV0IEknbSBu b3QKKyAgIGNvbnZpbmNlZCB0aGlzIHdhcyByaWdodCB0byBiZWdpbiB3aXRo OiB0aGUgb2Zmc2V0IG9mIGEgc3ltYm9sCisgICBpcyBOT1QgdGhlIG9mZnNl dCBvZiBpdHMgc2VjdGlvbiwgYnV0IHJhdGhlciBvZiB0aGUgaW1hZ2UgYmFz ZS4gKi8KKworc3RydWN0IGFkanVzdF9zZWNfb2JqZmlsZQorICB7CisgICAg c3RydWN0IG9iamZpbGUgKm9iamZpbGU7CisgICAgaW50IHNpZ247CisgIH07 CisKK3N0YXRpYyB2b2lkCithZGp1c3Rfc2VjX29iamZpbGVfb2Zmc2V0IChi ZmQgKmFiZmQsIGFzZWN0aW9uICpzZWN0LCBQVFIgb2JqKQoreworICBzdHJ1 Y3QgYWRqdXN0X3NlY19vYmpmaWxlICphcmdzID0gKHN0cnVjdCBhZGp1c3Rf c2VjX29iamZpbGUgKikgb2JqOworICBpbnQgb2ZmOworICBDT1JFX0FERFIg c3ltYm9sc19vZmZzZXQ7CisKKyAgLyogVGhpcyBpcyB0aGUgc2VjdGlvbi4g IEZpZ3VyZSBvdXQgd2hhdCBTRUNUX09GRl8qIGNvZGUgaXQgaXMuICAqLwor ICBpZiAoYmZkX2dldF9zZWN0aW9uX2ZsYWdzIChhYmZkLCBzZWN0KSAmIFNF Q19DT0RFKQorICAgIG9mZiA9IFNFQ1RfT0ZGX1RFWFQgKGFyZ3MtPm9iamZp bGUpOworICBlbHNlIGlmIChiZmRfZ2V0X3NlY3Rpb25fZmxhZ3MgKGFiZmQs IHNlY3QpICYgU0VDX0xPQUQpCisgICAgb2ZmID0gU0VDVF9PRkZfREFUQSAo YXJncy0+b2JqZmlsZSk7CisgIGVsc2UKKyAgICBvZmYgPSBzZWN0LT5pbmRl eDsKKworICBzeW1ib2xzX29mZnNldCA9IGJmZF9nZXRfc2VjdGlvbl92bWEg KG9iamZpbGUtPm9iZmQsIHNlY3QpICogYXJncy0+c2lnbjsKKworICBhcmdz LT5vYmpmaWxlLT5zZWN0aW9uX29mZnNldHMtPm9mZnNldHNbb2ZmXSArPSBz eW1ib2xzX29mZnNldDsKK30KKworc3RhdGljIHZvaWQKK2dudV9wZWlfYWRq dXN0X29iamZpbGVfb2Zmc2V0cyhzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwg CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBvYmpmaWxl X2FkanVzdHMgdHlwZSkKK3sKKyAgc3RydWN0IGFkanVzdF9zZWNfb2JqZmls ZSBhcmdzOworCisgIGlmICghcGVfZmlsZSkKKyAgICByZXR1cm47CisKKyAg YXJncy5vYmpmaWxlID0gb2JqZmlsZTsKKworICBzd2l0Y2ggKHR5cGUpIHsK KyAgY2FzZSBhZGp1c3RfZm9yX3N5bXRhYjoKKyAgICBhcmdzLnNpZ24gPSAx OworICAgIGJyZWFrOworICBjYXNlIGFkanVzdF9mb3Jfc3ltdGFiX3Jlc3Rv cmU6CisgICAgYXJncy5zaWduID0gLTE7CisgICAgYnJlYWs7CisgIGNhc2Ug YWRqdXN0X2Zvcl9zdGFiczoKKyAgY2FzZSBhZGp1c3RfZm9yX3N0YWJzX3Jl c3RvcmU6CisgIGNhc2UgYWRqdXN0X2Zvcl9kd2FyZjoKKyAgY2FzZSBhZGp1 c3RfZm9yX2R3YXJmX3Jlc3RvcmU6CisgIGRlZmF1bHQ6CisgICAgcmV0dXJu OworICB9CisKKyAgYmZkX21hcF9vdmVyX3NlY3Rpb25zIChvYmpmaWxlLT5v YmZkLCBhZGp1c3Rfc2VjX29iamZpbGVfb2Zmc2V0LCAmYXJncyk7CiB9CiAK IC8qIFJlZ2lzdGVyIG91ciBhYmlsaXR5IHRvIHBhcnNlIHN5bWJvbHMgZm9y IGNvZmYgQkZEIGZpbGVzLiAqLwpkaWZmIC1kcnVwUCAtLWV4Y2x1ZGUtZnJv bT0vZGV2L2ZzL00vZG9ubi9kaWZmcy9leGNsdWRlLmZpbGVzIGRlZnMuaCBk ZWZzLmgKLS0tIGEvYi9kZWZzLmgJVGh1IE1hciAgNyAwOToxODo1OSAyMDAy CisrKyBhL2IvZGVmcy5oCVR1ZSBNYXIgMTIgMTQ6MTQ6MzIgMjAwMgpAQCAt MTQwNyw0ICsxNDA3LDExIEBAIGV4dGVybiBpbnQgdXNlX3dpbmRvd3M7CiAj ZGVmaW5lIElTQVRUWShGUCkJKGlzYXR0eSAoZmlsZW5vIChGUCkpKQogI2Vu ZGlmCiAKKy8qIElmIHRoZSBoZWFkZXIgcHJvdmlkZXMgdGhpcywgdGhlbiB0 aGUgbGlua2VyIGFsbG93cyAob3IgcmVxdWlyZXMpCisgICB0aGF0IGZpbGVz IGJlIGxpbmtlZCBhdCBvdGhlciB0aGFuIHplcm8sIGFuZCB0aGlzIGlzIGhv dyB0byBnZXQgdGhhdAorICAgdmFsdWUuICovCisjaWZuZGVmIE5PTlpFUk9f TElOS19CQVNFCisjZGVmaW5lIE5PTlpFUk9fTElOS19CQVNFKGFiZmQpIDAK KyNlbmRpZgorCiAjZW5kaWYgLyogI2lmbmRlZiBERUZTX0ggKi8KSW5kZXg6 IHNyYy9nZGIvZXhlYy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp bGU6IC9kZXYvZnMvSC9ydXBwL2RldmVsLWxvY2FsLXJlcG9zaXRvcnkvc3Jj L2dkYi9leGVjLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4xLjEKZGlm ZiAtcCAtdSAtcjEuMS4xLjEgZXhlYy5jCi0tLSBzcmMvZ2RiL2V4ZWMuYwky MDAxLzEyLzIzIDAwOjM0OjQ2CTEuMS4xLjEKKysrIHNyYy9nZGIvZXhlYy5j CTIwMDEvMTIvMjMgMjM6MTc6MDMKQEAgLTU0OSw3ICs1NDksNyBAQCBwcmlu dF9zZWN0aW9uX2luZm8gKHN0cnVjdCB0YXJnZXRfb3BzICp0CiAgIGlmIChh YmZkID09IGV4ZWNfYmZkKQogICAgIHsKICAgICAgIHByaW50Zl9maWx0ZXJl ZCAoIlx0RW50cnkgcG9pbnQ6ICIpOwotICAgICAgcHJpbnRfYWRkcmVzc19u dW1lcmljIChiZmRfZ2V0X3N0YXJ0X2FkZHJlc3MgKGFiZmQpLCAxLCBnZGJf c3Rkb3V0KTsKKyAgICAgIHByaW50X2FkZHJlc3NfbnVtZXJpYyAoYmZkX2dl dF9zdGFydF9hZGRyZXNzIChhYmZkKSArIE5PTlpFUk9fTElOS19CQVNFKGFi ZmQpLCAxLCBnZGJfc3Rkb3V0KTsKICAgICAgIHByaW50Zl9maWx0ZXJlZCAo IlxuIik7CiAgICAgfQogICBmb3IgKHAgPSB0LT50b19zZWN0aW9uczsgcCA8 IHQtPnRvX3NlY3Rpb25zX2VuZDsgcCsrKQpkaWZmIC1kcnVwUCAtLWV4Y2x1 ZGUtZnJvbT0vZGV2L2ZzL00vZG9ubi9kaWZmcy9leGNsdWRlLmZpbGVzIGNv bmZpZy9pMzg2L3RtLWkzODZpbnRlcml4LmggY29uZmlnL2kzODYvdG0taTM4 NmludGVyaXguaAotLS0gYS9iL2NvbmZpZy9pMzg2L3RtLWkzODZpbnRlcml4 LmgJVGh1IE1hciAgNyAwOToxODo0MyAyMDAyCisrKyBhL2IvY29uZmlnL2kz ODYvdG0taTM4NmludGVyaXguaAlUdWUgTWFyIDEyIDE0OjE5OjQ0IDIwMDIK QEAgLTEyNCw0ICsxMjQsMTEgQEAgZ2V0X2xvbmdqbXBfdGFyZ2V0IFBBUkFN UyAoKENPUkVfQUREUiAqKQogCiAjZGVmaW5lIEdFVF9MT05HSk1QX1RBUkdF VChBRERSKSBnZXRfbG9uZ2ptcF90YXJnZXQoQUREUikKIAorIAorI2RlZmlu ZSBBREpVU1RfT0JKRklMRV9PRkZTRVRTKG9iamZpbGUsIHR5cGUpIFwKKyAg ICBwZWlfYWRqdXN0X29iamZpbGVfb2Zmc2V0cyhvYmpmaWxlLCB0eXBlKQor CitleHRlcm4gQ09SRV9BRERSIGJmZF9nZXRJbWFnZUJhc2UoYmZkICphYmZk KTsKKyNkZWZpbmUgTk9OWkVST19MSU5LX0JBU0UoYWJmZCkgYmZkX2dldElt YWdlQmFzZShhYmZkKQorCiAjZW5kaWYgLyogVE1fSU5URVJJWF9IICovCmRp ZmYgLWRydXBQIC0tZXhjbHVkZS1mcm9tPS9kZXYvZnMvTS9kb25uL2RpZmZz L2V4Y2x1ZGUuZmlsZXMgZXhlYy5jIGV4ZWMuYwpkaWZmIC1kcnVwUCAtLWV4 Y2x1ZGUtZnJvbT0vZGV2L2ZzL00vZG9ubi9kaWZmcy9leGNsdWRlLmZpbGVz IGkzODZpbnRlcml4LW5hdC5jIGkzODZpbnRlcml4LW5hdC5jCi0tLSBhL2Iv aTM4NmludGVyaXgtbmF0LmMJVGh1IE1hciAgNyAwOToxOTowMCAyMDAyCisr KyBhL2IvaTM4NmludGVyaXgtbmF0LmMJVHVlIE1hciAxMiAxNDoxMDozNSAy MDAyCkBAIC0yNSw3ICsyNSwxMCBAQCBGb3VuZGF0aW9uLCBJbmMuLCA1OSBU ZW1wbGUgUGxhY2UgLSBTdWl0CiAjaW5jbHVkZSA8aW5mZXJpb3IuaD4KIAog I2luY2x1ZGUgPGkzODYtdGRlcC5oPgotCisjaW5jbHVkZSAic3ltZmlsZS5o IgorI2luY2x1ZGUgIm9iamZpbGVzLmgiCisjaW5jbHVkZSAiZ2RiLXN0YWJz LmgiCisKIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBncmVnX3Q7ICAvKiBXaGVy ZSBzaG91bGQgdGhpcyBiZSBkZWZpbmVkPyAqLwogCiAvKiBTZWUgcHJvY2Zz LmMgYW5kICppbnRlcml4Ki5oIGluIGNvbmZpZy9bYWxwaGEsaTM4Nl0gKi8K QEAgLTQxMCw0ICs0MTMsMzcgQEAgZ2V0X2xvbmdqbXBfdGFyZ2V0IChwYykK IAogICAqcGMgPSBleHRyYWN0X2FkZHJlc3MgKHJhd19idWZmZXIsIHNpemVv ZihDT1JFX0FERFIpKTsKICAgcmV0dXJuIDE7Cit9CisKKy8qIEFkanVzdCB0 aGUgc2VjdGlvbiBvZmZzZXRzIGluIGFuIG9iamZpbGUgc3RydWN0dXJlIHNv IHRoYXQgaXQncyBjb3JyZWN0CisgICBmb3IgdGhlIHR5cGUgb2Ygc3ltYm9s cyBiZWluZyByZWFkIChvciB1bmRvIGl0IHdpdGggdGhlIF9yZXN0b3JlCisg ICBhcmd1bWVudHMpLiAgCisKKyAgIElmIG1haW4gcHJvZ3JhbXMgZXZlciBz dGFydCBzaG93aW5nIHVwIGF0IG90aGVyIHRoYW4gdGhlIGRlZmF1bHQgSW1h Z2UKKyAgIEJhc2UsIHRoaXMgaXMgd2hlcmUgdGhhdCB3b3VsZCBsaWtlbHkg YmUgYXBwbGllZC4gKi8KK3ZvaWQKK3BlaV9hZGp1c3Rfb2JqZmlsZV9vZmZz ZXRzKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBlbnVtIG9iamZpbGVfYWRq dXN0cyB0eXBlKQoreworICBpbnQgaTsKKyAgQ09SRV9BRERSIHN5bWJvbHNf b2Zmc2V0OworCisgIHN3aXRjaCAodHlwZSkgeworICBjYXNlIGFkanVzdF9m b3Jfc3ltdGFiOgorICAgICAgc3ltYm9sc19vZmZzZXQgPSBOT05aRVJPX0xJ TktfQkFTRShvYmpmaWxlLT5vYmZkKTsKKyAgICAgIGJyZWFrOworICBjYXNl IGFkanVzdF9mb3Jfc3ltdGFiX3Jlc3RvcmU6CisgICAgICBzeW1ib2xzX29m ZnNldCA9IC1OT05aRVJPX0xJTktfQkFTRShvYmpmaWxlLT5vYmZkKTsKKyAg ICAgIGJyZWFrOworICBjYXNlIGFkanVzdF9mb3Jfc3RhYnM6CisgIGNhc2Ug YWRqdXN0X2Zvcl9zdGFic19yZXN0b3JlOgorICBjYXNlIGFkanVzdF9mb3Jf ZHdhcmY6CisgIGNhc2UgYWRqdXN0X2Zvcl9kd2FyZl9yZXN0b3JlOgorICBk ZWZhdWx0OgorICAgICAgcmV0dXJuOworICB9CisKKyAgZm9yIChpID0gMDsg aSA8IFNFQ1RfT0ZGX01BWDsgaSsrKQorICAgeworICAgICAob2JqZmlsZS0+ c2VjdGlvbl9vZmZzZXRzKS0+b2Zmc2V0c1tpXSArPSBzeW1ib2xzX29mZnNl dDsKKyAgIH0KIH0KSW5kZXg6IHNyYy9nZGIvbWFpbnQuYwo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09ClJDUyBmaWxlOiAvZGV2L2ZzL0gvcnVwcC9kZXZlbC1s b2NhbC1yZXBvc2l0b3J5L3NyYy9nZGIvbWFpbnQuYyx2CnJldHJpZXZpbmcg cmV2aXNpb24gMS4xLjEuMQpkaWZmIC1wIC11IC1yMS4xLjEuMSBtYWludC5j Ci0tLSBzcmMvZ2RiL21haW50LmMJMjAwMS8xMi8yMyAwMDozNDo1MAkxLjEu MS4xCisrKyBzcmMvZ2RiL21haW50LmMJMjAwMS8xMi8yMyAyMzoyMDozNQpA QCAtMzQ5LDcgKzM0OSwxNSBAQCBtYWludGVuYW5jZV9pbmZvX3NlY3Rpb25z IChjaGFyICphcmcsIGluCiAgICAgICBwcmludGZfZmlsdGVyZWQgKCJFeGVj IGZpbGU6XG4iKTsKICAgICAgIHByaW50Zl9maWx0ZXJlZCAoIiAgICBgJXMn LCAiLCBiZmRfZ2V0X2ZpbGVuYW1lIChleGVjX2JmZCkpOwogICAgICAgd3Jh cF9oZXJlICgiICAgICAgICAiKTsKLSAgICAgIHByaW50Zl9maWx0ZXJlZCAo ImZpbGUgdHlwZSAlcy5cbiIsIGJmZF9nZXRfdGFyZ2V0IChleGVjX2JmZCkp OworICAgICAgcHJpbnRmX2ZpbHRlcmVkICgiZmlsZSB0eXBlICVzLiIsIGJm ZF9nZXRfdGFyZ2V0IChleGVjX2JmZCkpOworI2lmZGVmIENPRkZfSU1BR0Vf V0lUSF9QRQorICAgICAgaWYgKE5PTlpFUk9fTElOS19CQVNFKGV4ZWNfYmZk KSkKKyAgICAgIHsKKyAgICAgICAgIHdyYXBfaGVyZSAoIiAgICAgICAgIik7 CisgICAgICAgICBwcmludGZfZmlsdGVyZWQgKCIgSW1hZ2UgYmFzZSAweCVs eFxuIiwgKHVuc2lnbmVkIGxvbmcpTk9OWkVST19MSU5LX0JBU0UoZXhlY19i ZmQpKTsKKyAgICAgIH0KKyNlbmRpZgorICAgICAgcHJpbnRmX2ZpbHRlcmVk ICgiXG4iKTsKICAgICAgIGlmIChhcmcgJiYgKmFyZyAmJiBtYXRjaF9zdWJz dHJpbmcgKGFyZywgIkFMTE9CSiIpKQogCXsKIAkgIHN0cnVjdCBvYmpmaWxl ICpvZmlsZTsKQEAgLTM4MSw3ICszODksMTUgQEAgbWFpbnRlbmFuY2VfaW5m b19zZWN0aW9ucyAoY2hhciAqYXJnLCBpbgogICAgICAgcHJpbnRmX2ZpbHRl cmVkICgiQ29yZSBmaWxlOlxuIik7CiAgICAgICBwcmludGZfZmlsdGVyZWQg KCIgICAgYCVzJywgIiwgYmZkX2dldF9maWxlbmFtZSAoY29yZV9iZmQpKTsK ICAgICAgIHdyYXBfaGVyZSAoIiAgICAgICAgIik7Ci0gICAgICBwcmludGZf ZmlsdGVyZWQgKCJmaWxlIHR5cGUgJXMuXG4iLCBiZmRfZ2V0X3RhcmdldCAo Y29yZV9iZmQpKTsKKyAgICAgIHByaW50Zl9maWx0ZXJlZCAoImZpbGUgdHlw ZSAlcy4iLCBiZmRfZ2V0X3RhcmdldChjb3JlX2JmZCkpOworI2lmZGVmIENP RkZfSU1BR0VfV0lUSF9QRQorICAgICAgaWYgKE5PTlpFUk9fTElOS19CQVNF KGV4ZWNfYmZkKSkKKyAgICAgIHsKKyAgICAgICAgIHdyYXBfaGVyZSAoIiAg ICAgICAgIik7CisgICAgICAgICBwcmludGZfZmlsdGVyZWQgKCIgSW1hZ2Ug YmFzZSAweCVseFxuIiwgKHVuc2lnbmVkIGxvbmcpTk9OWkVST19MSU5LX0JB U0UoY29yZV9iZmQpKTsKKyAgICAgIH0KKyNlbmRpZgorICAgICAgcHJpbnRm X2ZpbHRlcmVkICgiXG4iKTsKICAgICAgIGJmZF9tYXBfb3Zlcl9zZWN0aW9u cyAoY29yZV9iZmQsIHByaW50X2JmZF9zZWN0aW9uX2luZm8sIGFyZyk7CiAg ICAgfQogfQpJbmRleDogc3JjL2dkYi9zeW1maWxlLmMKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQpSQ1MgZmlsZTogL2Rldi9mcy9IL3J1cHAvZGV2ZWwtbG9j YWwtcmVwb3NpdG9yeS9zcmMvZ2RiL3N5bWZpbGUuYyx2CnJldHJpZXZpbmcg cmV2aXNpb24gMS4xLjEuMQpkaWZmIC1wIC11IC1yMS4xLjEuMSBzeW1maWxl LmMKLS0tIHNyYy9nZGIvc3ltZmlsZS5jCTIwMDEvMTIvMjMgMDA6MzQ6NTYJ MS4xLjEuMQorKysgc3JjL2dkYi9zeW1maWxlLmMJMjAwMS8xMi8yMyAyMzox NzowMwpAQCAtMzg2LDcgKzM4Niw5IEBAIGluaXRfZW50cnlfcG9pbnRfaW5m byAoc3RydWN0IG9iamZpbGUgKm8KICAgICB7CiAgICAgICAvKiBFeGVjdXRh YmxlIGZpbGUgLS0gcmVjb3JkIGl0cyBlbnRyeSBwb2ludCBzbyB3ZSdsbCBy ZWNvZ25pemUKICAgICAgICAgIHRoZSBzdGFydHVwIGZpbGUgYmVjYXVzZSBp dCBjb250YWlucyB0aGUgZW50cnkgcG9pbnQuICAqLwotICAgICAgb2JqZmls ZS0+ZWkuZW50cnlfcG9pbnQgPSBiZmRfZ2V0X3N0YXJ0X2FkZHJlc3MgKG9i amZpbGUtPm9iZmQpOworICAgICAgb2JqZmlsZS0+ZWkuZW50cnlfcG9pbnQg PSAKKwkgYmZkX2dldF9zdGFydF9hZGRyZXNzIChvYmpmaWxlLT5vYmZkKSAr CisJIE5PTlpFUk9fTElOS19CQVNFKG9iamZpbGUtPm9iZmQpOwogICAgIH0K ICAgZWxzZQogICAgIHsKZGlmZiAtZHJ1cFAgLS1leGNsdWRlLWZyb209L2Rl di9mcy9NL2Rvbm4vZGlmZnMvZXhjbHVkZS5maWxlcyBzeW1maWxlLmggc3lt ZmlsZS5oCi0tLSBhL2Ivc3ltZmlsZS5oCVRodSBNYXIgIDcgMDk6MTk6MDEg MjAwMgorKysgYS9iL3N5bWZpbGUuaAlGcmkgTWFyICA4IDExOjA1OjQzIDIw MDIKQEAgLTMyMyw0ICszMjMsMjEgQEAgZXh0ZXJuIHZvaWQKIGVsZm1kZWJ1 Z19idWlsZF9wc3ltdGFicyAoc3RydWN0IG9iamZpbGUgKiwKIAkJCSAgY29u c3Qgc3RydWN0IGVjb2ZmX2RlYnVnX3N3YXAgKiwgYXNlY3Rpb24gKik7CiAK Ky8qIExldCB0aGUgImJhY2sgZW5kIiBhZGp1c3QgdGhlIHNlY3Rpb24gcmVs b2NhdGlvbnMgZm9yIHRoZSB0eXBlIG9mCisgICBzeW1ib2xzIGJlaW5nIHJl YWQuCisgICBOb3RlOyB0aGlzIGN1cnJlbnRseSBpcyBvbmx5IGFwcGxpZWQg dG8gY29mZnJlYWQsIGJ1dCB0aGUgb3RoZXIgcmVhZGVycworICAgbWF5IGZp bmQgaXQgdXNlZnVsLiAqLworZW51bSBvYmpmaWxlX2FkanVzdHMgeworICAg IGFkanVzdF9mb3Jfc3ltdGFiLAorICAgIGFkanVzdF9mb3Jfc3ltdGFiX3Jl c3RvcmUsCisgICAgYWRqdXN0X2Zvcl9zdGFicywKKyAgICBhZGp1c3RfZm9y X3N0YWJzX3Jlc3RvcmUsCisgICAgYWRqdXN0X2Zvcl9kd2FyZiwKKyAgICBh ZGp1c3RfZm9yX2R3YXJmX3Jlc3RvcmUsCit9OworCisvKiBBIGRlZmF1bHQg dmFsdWUgZm9yIEFESlVTVF9PQkZJTEVfT0ZGU0VUUyBjb3VsZCBnbyBoZXJl LCBidXQgZm9yIG5vdworICAgd2UgbGV0IHRoZSBpbmRpdmlkdWFsIGZpbGVz IHVzaW5nIHRoaXMgZGVmaW5lIHRoZSBkZWZhdWx0LCB1bnRpbCBhbGwKKyAg IHRoZSBwbGFjZXMgdGhhdCBuZWVkIHRvIHByb3ZpZGUgc3BlY2lhbCBvbmVz IGFyZSBmb3VuZC4gKi8KKwogI2VuZGlmIC8qICFkZWZpbmVkKFNZTUZJTEVf SCkgKi8KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClJlbW92ZWQg ImJyZWFrcG9pbnQiIGNoYW5nZTogbm93IGl0IGRvZXMgd2hhdCBpdCdzIHRv bGQuCgpTZXZlcmFsIG1pbm9yIGNvcnJlY3Rpb25zIHRvIHRoZSBpbnRlcm5h bCBkb2N1bWVudGF0aW9uIChFbmdsaXNoLApzcGVsbGluZywgY29udGVudCkg YW5kIGNvcnJlc3BvbmRpbmcgcmVncmVzc2lvbiBjaGFuZ2VzLgoKRXhwZXJp bWVudGFsbHkgYW5kIGZyb20gY29kZSByZWFkaW5nLCBicmVha3BvaW50IGF0 IGFkZHJlc3MgYWxpZ25zCnRvIGEgbGluZSBudW1iZXIsIHJhdGhlciB0aGFu IG9jY3VycmluZyBhbnl3aGVyZS4gIChJdCdzIGFyZ3VhYmxlCndoaWNoIGl0 IHNob3VsZCBkbywgcGFydGljdWxhcmx5IG9uIHZhcmlhYmxlIGxlbmd0aCBp bnN0cnVjdGlvbgptYWNoaW5lcyB3aGVyZSBiZWluZyBzdXJlIHRoZSBicCBp cyBvbiBhbiBpbnN0cnVjdGlvbiBib3VuZGFyeQppcyBoYXJkLiBHbyB3aXRo IHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24uKQoKRnJpIERlYyAgMyAxMDow NzoyMCBQU1QgMTk5OSAgRG9ubiBUZXJyeSA8ZG9ubnRlQG1pY3Jvc29mdC5j b20+CgoJKiB0aHJlYWQuYyhyZXN0b3JlX2N1cnJlbnRfdGhyZWFkKTogZml4 IGNvbW1lbnQuCgkoX2luaXRpYWxpemVfdGhyZWFkKTogQ2xlYXJlciBoZWxw OyBhcHBseSBhcHBsaWVzIHRvIEFMTAoJY2xhc3Nlcy4KCkluZGV4OiBzcmMv Z2RiL3RocmVhZC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6 IC9kZXYvZnMvSC9ydXBwL2RldmVsLWxvY2FsLXJlcG9zaXRvcnkvc3JjL2dk Yi90aHJlYWQuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xLjEuMQpkaWZm IC1wIC11IC1yMS4xLjEuMSB0aHJlYWQuYwotLS0gc3JjL2dkYi90aHJlYWQu YwkyMDAxLzEyLzIzIDAwOjM0OjU2CTEuMS4xLjEKKysrIHNyYy9nZGIvdGhy ZWFkLmMJMjAwMS8xMi8yMyAyMzoyMzoxMwpAQCAtNTM5LDcgKzUzOSw3IEBA IG1ha2VfY2xlYW51cF9yZXN0b3JlX2N1cnJlbnRfdGhyZWFkIChwdGkKIAog ICAgdGhyZWFkIGFwcGx5IDEgMiA3IDQgYmFja3RyYWNlICAgICAgIEFwcGx5 IGJhY2t0cmFjZSBjbWQgdG8gdGhyZWFkcyAxLDIsNyw0CiAgICB0aHJlYWQg YXBwbHkgMi03IDkgcCBmb28oMSkgIEFwcGx5IHAgZm9vKDEpIGNtZCB0byB0 aHJlYWRzIDItPjcgJiA5Ci0gICB0aHJlYWQgYXBwbHkgYWxsIHAgeC9pICRw YyAgIEFwcGx5IHgvaSAkcGMgY21kIHRvIGFsbCB0aHJlYWRzCisgICB0aHJl YWQgYXBwbHkgYWxsIHgvaSAkcGMgICBBcHBseSB4L2kgJHBjIGNtZCB0byBh bGwgdGhyZWFkcwogICovCiAKIHN0YXRpYyB2b2lkCkBAIC03NjEsMTEgKzc2 MSwxMiBAQCBfaW5pdGlhbGl6ZV90aHJlYWQgKHZvaWQpCiBUaGUgbmV3IHRo cmVhZCBJRCBtdXN0IGJlIGN1cnJlbnRseSBrbm93bi4iLCAmdGhyZWFkX2Nt ZF9saXN0LCAidGhyZWFkICIsIDEsCiAJCSAgJmNtZGxpc3QpOwogCi0gIGFk ZF9wcmVmaXhfY21kICgiYXBwbHkiLCBjbGFzc19ydW4sIHRocmVhZF9hcHBs eV9jb21tYW5kLAotCQkgICJBcHBseSBhIGNvbW1hbmQgdG8gYSBsaXN0IG9m IHRocmVhZHMuIiwKLQkJICAmdGhyZWFkX2FwcGx5X2xpc3QsICJhcHBseSAi LCAxLCAmdGhyZWFkX2NtZF9saXN0KTsKKyAgYWRkX3ByZWZpeF9jbWQgKCJh cHBseSIsIG5vX2NsYXNzLCB0aHJlYWRfYXBwbHlfY29tbWFuZCwKKwkJICAi QXBwbHkgYSBjb21tYW5kIHRvIGEgbGlzdCBvZiB0aHJlYWRzLlxuXAorYXBw bHkgdGhyZWFkIFtufG0tbnxhbGxdIDxjb21tYW5kPiIsCisJCSAgJnRocmVh ZF9hcHBseV9saXN0LCAidGhyZWFkIGFwcGx5ICIsIDEsICZ0aHJlYWRfY21k X2xpc3QpOwogCi0gIGFkZF9jbWQgKCJhbGwiLCBjbGFzc19ydW4sIHRocmVh ZF9hcHBseV9hbGxfY29tbWFuZCwKKyAgYWRkX2NtZCAoImFsbCIsIG5vX2Ns YXNzLCB0aHJlYWRfYXBwbHlfYWxsX2NvbW1hbmQsCiAJICAgIkFwcGx5IGEg Y29tbWFuZCB0byBhbGwgdGhyZWFkcy4iLAogCSAgICZ0aHJlYWRfYXBwbHlf bGlzdCk7CiAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkZyaSBE ZWMgIDMgMTA6MDc6MjAgUFNUIDE5OTkgIERvbm4gVGVycnkgPGRvbm50ZUBt aWNyb3NvZnQuY29tPgoKCSogYy1leHAueShkaXJlY3RfYWJzX2RlY2wpOiB0 eXBlIGNhc3QgdG8gc2h1dCB1cCBjb21waWxlci4KCkluZGV4OiBzcmMvZ2Ri L2MtZXhwLnkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2Rl di9mcy9IL3J1cHAvZGV2ZWwtbG9jYWwtcmVwb3NpdG9yeS9zcmMvZ2RiL2Mt ZXhwLnksdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4xLjEKZGlmZiAtcCAt dSAtcjEuMS4xLjEgYy1leHAueQotLS0gc3JjL2dkYi9jLWV4cC55CTIwMDEv MTIvMjMgMDA6MzQ6NDEJMS4xLjEuMQorKysgc3JjL2dkYi9jLWV4cC55CTIw MDEvMTIvMjMgMjM6Mzg6NTcKQEAgLTc1NSwxMiArNzU1LDEyIEBAIGRpcmVj dF9hYnNfZGVjbDogJygnIGFic19kZWNsICcpJwogCQkJeyAkJCA9ICQyOyB9 CiAJfAlkaXJlY3RfYWJzX2RlY2wgYXJyYXlfbW9kCiAJCQl7Ci0JCQkgIHB1 c2hfdHlwZV9pbnQgKCQyKTsKKwkJCSAgcHVzaF90eXBlX2ludCAoKGludCkk Mik7CiAJCQkgIHB1c2hfdHlwZSAodHBfYXJyYXkpOwogCQkJfQogCXwJYXJy YXlfbW9kCiAJCQl7Ci0JCQkgIHB1c2hfdHlwZV9pbnQgKCQxKTsKKwkJCSAg cHVzaF90eXBlX2ludCAoKGludCkkMSk7CiAJCQkgIHB1c2hfdHlwZSAodHBf YXJyYXkpOwogCQkJICAkJCA9IDA7CiAJCQl9Ci0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQpFeHBhbmQgYSBjb21tZW50IGFib3V0IHVud2luZC4g IFRoZSBhY3R1YWwgY2hhbmdlcyBpbXBsaWVkIGJ5IHRoaXMKY29tbWVudCBh cmUgaW4gdGhlIEludGVyaXggcGF0Y2ggZmlsZXMgc3VibWl0dGVkIGVsc2V3 aGVyZSwgYnV0CnRoaXMgaXMgbm90IEludGVyaXggc3BlY2lmaWMuCgpGcmkg RGVjICAzIDEwOjA3OjIwIFBTVCAxOTk5ICBEb25uIFRlcnJ5IDxkb25udGVA bWljcm9zb2Z0LmNvbT4KCSogYmxvY2tmcmFtZS5jKGdldF9wcmV2X2ZyYW1l X2luZm8pOiBjb21tZW50LCBhZGQgZXhwbGFuYXRvcnkKCXdhcm5pbmcuCgpJ bmRleDogc3JjL2dkYi9ibG9ja2ZyYW1lLmMKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQpSQ1MgZmlsZTogL2Rldi9mcy9IL3J1cHAvZGV2ZWwtbG9jYWwtcmVw b3NpdG9yeS9zcmMvZ2RiL2Jsb2NrZnJhbWUuYyx2CnJldHJpZXZpbmcgcmV2 aXNpb24gMS4xLjEuMQpkaWZmIC1wIC11IC1yMS4xLjEuMSBibG9ja2ZyYW1l LmMKLS0tIHNyYy9nZGIvYmxvY2tmcmFtZS5jCTIwMDEvMTIvMjMgMDA6MzQ6 NDEJMS4xLjEuMQorKysgc3JjL2dkYi9ibG9ja2ZyYW1lLmMJMjAwMS8xMi8y MyAyMzo0MToxMQpAQCAtNDMzLDggKzQzMywyNiBAQCBnZXRfcHJldl9mcmFt ZSAoc3RydWN0IGZyYW1lX2luZm8gKm5leHRfCiAgICB0aGUgZGVmYXVsdCBJ TklUX0ZSQU1FX1BDIGRvZXMuICBTb21lIG1hY2hpbmVzIHdpbGwgY2FsbCBp dCBmcm9tCiAgICBJTklUX1BSRVZfRlJBTUUgKGVpdGhlciBhdCB0aGUgYmVn aW5uaW5nLCB0aGUgZW5kLCBvciBpbiB0aGUgbWlkZGxlKS4KICAgIFNvbWUg bWFjaGluZXMgd29uJ3QgdXNlIGl0LgotICAga2luZ2RvbkBjeWdudXMuY29t LCAxM0FwcjkzLCAzMUphbjk0LCAxNERlYzk0LiAgKi8KKyAgIGtpbmdkb25A Y3lnbnVzLmNvbSwgMTNBcHI5MywgMzFKYW45NCwgMTREZWM5NC4gIAogCisK KyAgIEFjdHVhbGx5LCB0aGlzIHByb2JsZW0gQ0FOTk9UIGJlIHNvbHZlZCwg aW4gZ2VuZXJhbCwgd2l0aCBtYWNyb3MgYmVjYXVzZQorICAgdGhlcmUgYXJl IG1hY2hpbmVzIChJbnRlcml4LCBlLmcuKSB0aGF0IHJlcXVpcmUgaW50ZXJs ZWF2ZWQgZXh0cmFjdGlvbiBvZiAKKyAgIEJPVEggZnAgYW5kIHBjLCBhbmQg d2hpY2ggcmVxdWlyZSBzb21ldGltZXMgZmFpcmx5IGNvbXBsZXggb3BlcmF0 aW9ucyB0bworICAgZmluZCB0aGUgbmV4dCBwYy4gIEl0IG1pZ2h0IG1ha2Ug bW9yZSBzZW5zZSB0byByZXBsYWNlIG1vc3Qgb2YgdGhpcyBzZWN0aW9uCisg ICBvZiBjb2RlIHdpdGggYSBTSU5HTEUgbWFjcm8sIHdoaWNoIGRlZmF1bHRz IHRvIHNvbWV0aGluZyBsaWtlIGEgY29weSBvZgorICAgdGhlIGN1cnJlbnQg Y29kZSwgYnV0IHdoaWNoIG1pZ2h0IGJlIHJlcGxhY2VkIHdpdGggc29tZXRo aW5nIHN1aXRhYmxlCisgICBmb3IgdGhvc2Ugd2hpY2ggbmVlZCBwYyBiZWZv cmUgZnAsIG9yIGEgY3VzdG9tIHJvdXRpbmUgZm9yIHRoZSByZWFsbHkKKyAg IGNvbXBsZXggY2FzZXMuICAoVGhlIG1hY3JvIHNob3VsZCBjb21wdXRlIGFs bCB0aGUgcGFyYW1ldGVycyBvZiB0aGUKKyAgIG5leHQgZnJhbWUsIGluY2x1 ZGluZyBmcCwgcGMsIHNpZ25hbF9oYW5kbGVyX2NhbGxlcjsgaXQgbWlnaHQg d2FudAorICAgdG8gcmV0dXJuIHRoZSBsb2NhbCBOQU1FIGluIGNhc2UgaXQg bmVlZHMgdGhlIHZhbHVlIGJlZm9yZSBpdCdzIG5lZWRlZAorICAgaGVyZS4g IChJbiB0aGUgc2hvcnQgdGVybSwgdGhpcyBjYW4gYmUgYWNoaWV2ZWQgYnkg cHV0dGluZyBhbGwgdGhlIGxvYWQKKyAgIG9uIElOSVRfRVhUUkFfRlJBTUVf SU5GTywgYW5kIGFwcHJvcHJpYXRlbHkgZGVmaW5pbmcgb3RoZXIgbWFjcm9z OyBob3dldmVyLAorICAgdGhlICJhcHByb3ByaWF0ZSIgZGVmaW5pdGlvbiBv ZiBzb21lIG9mIHRob3NlIG1hY3JvcyBpcyAiaWZmeSIgYmVjYXVzZQorICAg dGhleSBhcmUgdXNlZCBpbiBvdGhlciBwbGFjZXMuCisKKyAgICovCisKICAg SU5JVF9GUkFNRV9QQ19GSVJTVCAoZnJvbWxlYWYsIHByZXYpOwogCiAgIGlm IChJTklUX0VYVFJBX0ZSQU1FX0lORk9fUCAoKSkKQEAgLTQ1NCw2ICs0NzIs NyBAQCBnZXRfcHJldl9mcmFtZSAoc3RydWN0IGZyYW1lX2luZm8gKm5leHRf CiAgICAgICBpZiAocHJldi0+ZnJhbWUgPT0gbmV4dF9mcmFtZS0+ZnJhbWUK IAkgICYmIHByZXYtPnBjID09IG5leHRfZnJhbWUtPnBjKQogCXsKKwkgIHdh cm5pbmcoIlN0YWNrIFVud2luZCBpcyBub3QgcHJvZ3Jlc3Npbmc7IHF1aXR0 aW5nIHVud2luZFxuIik7CiAJICBuZXh0X2ZyYW1lLT5wcmV2ID0gTlVMTDsK IAkgIG9ic3RhY2tfZnJlZSAoJmZyYW1lX2NhY2hlX29ic3RhY2ssIHByZXYp OwogCSAgcmV0dXJuIE5VTEw7Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQpJbiBmb3JrLWNoaWxkLmMsIHN0YXJ0dXBfaW5mZXJpb3IoKTogIFRo ZSBsb29wIHdoaWNoIGNvdW50cyBkb3duIAp1bnRpbCB0aGUgYmVnaW5uaW5n IG9mIHRoZSB0YXJnZXQgZXhlY3V0YWJsZSBpcyByZWFjaGVkIHRyZWF0cwp1 bmV4cGVjdGVkIHNpZ25hbHMgKGV0Yy4pIHNwZWNpYWxseSwgYW5kIGNvbnRp bnVlcyB3aXRob3V0IGNvdW50aW5nCnRoZW0uICBTdWNoIHNpZ25hbHMgQ0FO IGNhdXNlIHN1cnByaXNlcyBpZiBzb21ldGhpbmcgZWxzZSBnb2VzIHdyb25n LApzbyByZXBvcnQgdGhhdCB0aGV5IG9jY3VycmVkIHRvIHRoZSB1c2VyLiAg KEluIHBhcnRpY3VsYXIsIGlmIApTSUdUVElOIG9yIFNJR1RUT1VUIHNob3Vs ZCBvY2N1ciwgdGhlcmUgY291bGQgYmUgc29tZSBibG9ja2FnZSBvZgpJL08u KSAgQ291bnQgdGhlbSwgYW5kIGlmIHdheSB0b28gbWFueSwgcXVpdC4gQWxz by4uLgoKQXZvaWQgaW5maW5pdGUgbG9vcDogc3RhcnR1cF9pbmZlcmlvcigp IHNob3VsZCB0ZXN0IGZvciBub24tbmVnYXRpdmUKcGVuZGluZ19leGVjcywg bm90IGV4YWN0bHkgemVyby4gIEl0IGhhcyBiZWVuIG9ic2VydmVkIHRvIGdv IG5lZ2F0aXZlCndpdGggb3RoZXIgZXJyb3JzLgoKaW5mbG93LmMvdGVybWlu YWxfaW5mZXJpb3IoKTogaXQncyBwb3NzaWJsZSBmb3Igc3RhcnR1cF9pbmZl cmlvcigpCnRvIGNhbGwgcmVzdW1lKCkgKHVuZGVyIHRoZSBjb25kaXRpb25z IGFib3ZlKSBiZWZvcmUgaXQKY2FsbHMgdGVybWluYWxfaW5pdF9pbmZlcmlv cigpLiAgVGhpcyBjYW4gY2F1c2UgdGVybWluYWxfaW5mZXJpb3IKdG8gYmUg Y2FsbGVkIHdpdGggaW5mZXJpb3JfdHR5c3RhdGUgPT0gTlVMTC4gIEFkZCBj b2RlIHRvIHNpbXBseQpyZXR1cm4gaWYgaW5mZXJpb3JfdHR5c3RhdGUgaXMg TlVMTC4KCkZyaSBEZWMgIDMgMTA6MDc6MjAgUFNUIDE5OTkgIERvbm4gVGVy cnkgPGRvbm50ZUBtaWNyb3NvZnQuY29tPgoJKiBmb3JrLWNoaWxkLmMgKHN0 YXJ0dXBfaW5mZXJpb3IpOiBDb3VudC9yZXBvcnQgdW5leHBlY3RlZCB0cmFw cy4KCSAgQmUgc3VyZSBwZW5kaW5nX2V4ZWNzIDwgMCB3b24ndCBsb29wIGZv cmV2ZXIuCgkqIGluZmxvdy5jICh0ZXJtaW5hbF9pbmZlcmlvcik6IGlmIGFy ZyBpcyBOVUxMLCByZXR1cm4uCgpJbmRleDogc3JjL2dkYi9mb3JrLWNoaWxk LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2Rldi9mcy9I L3J1cHAvZGV2ZWwtbG9jYWwtcmVwb3NpdG9yeS9zcmMvZ2RiL2ZvcmstY2hp bGQuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xLjEuMQpkaWZmIC1wIC11 IC1yMS4xLjEuMSBmb3JrLWNoaWxkLmMKLS0tIHNyYy9nZGIvZm9yay1jaGls ZC5jCTIwMDEvMTIvMjMgMDA6MzQ6NDYJMS4xLjEuMQorKysgc3JjL2dkYi9m b3JrLWNoaWxkLmMJMjAwMS8xMi8yMyAyMzo0MzowNgpAQCAtNTA4LDcgKzUw OCw5IEBAIHN0YXJ0dXBfaW5mZXJpb3IgKGludCBudHJhcHMpCiB7CiAgIGlu dCBwZW5kaW5nX2V4ZWNzID0gbnRyYXBzOwogICBpbnQgdGVybWluYWxfaW5p dHRlZDsKKyAgaW50IGJhZF90cmFwcyA9IDA7CiAKKwogICAvKiBUaGUgcHJv Y2VzcyB3YXMgc3RhcnRlZCBieSB0aGUgZm9yayB0aGF0IGNyZWF0ZWQgaXQs CiAgICAgIGJ1dCBpdCB3aWxsIGhhdmUgc3RvcHBlZCBvbmUgaW5zdHJ1Y3Rp b24gYWZ0ZXIgZXhlY2luZyB0aGUgc2hlbGwuCiAgICAgIEhlcmUgd2UgbXVz dCBnZXQgaXQgdXAgdG8gYWN0dWFsIGV4ZWN1dGlvbiBvZiB0aGUgcmVhbCBw cm9ncmFtLiAgKi8KQEAgLTUzNSw4ICs1MzcsMTUgQEAgc3RhcnR1cF9pbmZl cmlvciAoaW50IG50cmFwcykKICAgICAgIHdhaXRfZm9yX2luZmVyaW9yICgp OwogICAgICAgaWYgKHN0b3Bfc2lnbmFsICE9IFRBUkdFVF9TSUdOQUxfVFJB UCkKIAl7CisgICAgICAgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3Rk ZXJyLCAKKwkgICAgIkdvdCB1bmV4cGVjdGVkIHN0b3Agc2lnbmFsICVkIGR1 cmluZyBpbmZlcmlvciBzdGFydHVwOyBpZ25vcmluZ1xuIiwKKwkJIHN0b3Bf c2lnbmFsKTsKIAkgIC8qIExldCBzaGVsbCBjaGlsZCBoYW5kbGUgaXRzIG93 biBzaWduYWxzIGluIGl0cyBvd24gd2F5ICovCiAJICAvKiBGSVhNRSwgd2hh dCBpZiBjaGlsZCBoYXMgZXhpdCgpZWQ/ICBNdXN0IGV4aXQgbG9vcCBzb21l aG93ICovCisJICBpZiAoYmFkX3RyYXBzKysgPiAyKm50cmFwcykgeworCSAg ICAgIGZwcmludGZfdW5maWx0ZXJlZChnZGJfc3RkZXJyLCAiLi4uIGdpdmlu ZyB1cC4uLiB0b28gbWFueVxuIik7CisJICAgICAgYnJlYWs7CisJICB9CiAJ ICByZXN1bWUgKDAsIHN0b3Bfc2lnbmFsKTsKIAl9CiAgICAgICBlbHNlCkBA IC01NTksNyArNTY4LDcgQEAgc3RhcnR1cF9pbmZlcmlvciAoaW50IG50cmFw cykKIAkgICAgfQogCiAJICBwZW5kaW5nX2V4ZWNzID0gcGVuZGluZ19leGVj cyAtIDE7Ci0JICBpZiAoMCA9PSBwZW5kaW5nX2V4ZWNzKQorCSAgaWYgKDAg Pj0gcGVuZGluZ19leGVjcykKIAkgICAgYnJlYWs7CiAKIAkgIHJlc3VtZSAo MCwgVEFSR0VUX1NJR05BTF8wKTsJLyogSnVzdCBtYWtlIGl0IGdvIG9uICov CkluZGV4OiBzcmMvZ2RiL2luZmxvdy5jCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KUkNTIGZpbGU6IC9kZXYvZnMvSC9ydXBwL2RldmVsLWxvY2FsLXJlcG9z aXRvcnkvc3JjL2dkYi9pbmZsb3cuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24g MS4xLjEuMQpkaWZmIC1wIC11IC1yMS4xLjEuMSBpbmZsb3cuYwotLS0gc3Jj L2dkYi9pbmZsb3cuYwkyMDAxLzEyLzIzIDAwOjM0OjQ5CTEuMS4xLjEKKysr IHNyYy9nZGIvaW5mbG93LmMJMjAwMS8xMi8yMyAyMzo0MzowNgpAQCAtMjIw LDYgKzIyMCwxMiBAQCB0ZXJtaW5hbF9pbml0X2luZmVyaW9yICh2b2lkKQog dm9pZAogdGVybWluYWxfaW5mZXJpb3IgKHZvaWQpCiB7CisKKyAgLyogbm90 IHlldCBpbml0aWFsaXplZDsgY2FsbGVkIGJlZm9yZSBpbml0IHdhcyBjYWxs ZWQuIFRoaXMgaXMgcmVhc29uYWJsZToKKyAgICAgc3RhcnR1cF9pbmZlcmlv ciBjYW4gZG8gdGhpcyBpZiBpdCBnZXRzIGFuIHVuZXhwZWN0ZWQgc2lnbmFs IChkaXJlY3RlZAorICAgICBhdCB0aGUgaW50ZXJtZWRpYXRlIHNoZWxsKS4g IElnbm9yZSBpdCB1bnRpbCB3ZSdyZSBpbml0aWFsaXplZCAqLworICBpZiAo aW5mZXJpb3JfdHR5c3RhdGUgPT0gTlVMTCkgcmV0dXJuOworCiAgIGlmIChn ZGJfaGFzX2FfdGVybWluYWwgKCkgJiYgdGVybWluYWxfaXNfb3VycwogICAg ICAgJiYgaW5mZXJpb3JfdGhpc3J1bl90ZXJtaW5hbCA9PSAwKQogICAgIHsK LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRoZSBiZmRfc2VjdGlv biBpcyBuZWVkZWQgdG8gZW5hYmxlIHNlYXJjaGluZyBpbiBzb21lIGNhc2Vz ICgiaW5mbwpzeW0iIGZvciBhIC5ic3Mgc3ltYm9sLCBlLmcuKTsgcmVjb3Jk IHRoZSBzZWN0aW9uIHBvaW50ZXIgZm9yCmxhdGVyIHVzZS4gIHByaW1fcmVj b3JkX21pbmltYWxfc3ltYm9sX2FuZF9pbmZvIGFscmVhZHkgaGFkIGEgcGxh Y2UKZm9yIGl0OyBqdXN0IGJyaW5nIHRvIGhpZ2hlciBsZXZlbHMuICBJbgps b29rdXBfbWluaW1hbF9zeW1ib2xfYnlfcGNfc2VjdGlvbiB1c2UgdG8gYXZv aWQgb3Zlcmxvbmcgc2VhcmNoZXMuCgpGcmkgRGVjICAzIDEwOjA3OjIwIFBT VCAxOTk5ICBEb25uIFRlcnJ5IDxkb25udGVAbWljcm9zb2Z0LmNvbT4KCSog c3ltdGFiLmgocmVjb3JkX21pbmltYWxfc3ltYm9sKTogYWRkIHNlY3Rpb24g YXJnLgoJKiBtaW5zeW1zLmMocHJpbV9yZWNvcmRfbWluaW1hbF9zeW1ib2wp OiBhZGQgc2VjdGlvbiBhcmcuCgkobG9va3VwX21pbmltYWxfc3ltYm9sX2J5 X3BjX3NlY3Rpb24pOiBVc2Ugc2VjdGlvbiBpbmZvLgoJKiBjb2ZmcmVhZC5j KHJlY29yZF9taW5pbWFsX3N5bWJvbCk6IGFkZCBzZWN0aW9uIGFyZy4KCShj b2ZmX3N5bWZpbGVfZmluaXNoLCBjb2ZmX3N5bXRhYl9yZWFkKTogIFVzZSBp dC4KCSogZGJ4cmVhZC5jKHJlYWRfZGJ4X2R5bWFtaWNfc3ltdGFiKTogcHJv dmlkZSBkdW1teSBhcmcuCgkqIGR3YXJmMnJlYWQuYyhhZGRfcGFydGlhbF9z eW1ib2wpOiBwcm92aWRlIGR1bW15IGFyZy4KCSogbWRlYnVncmVhZC5jKHBh cnNlX3BhcnRpYWxfc3ltYm9scyk6IHByb3ZpZGUgZHVtbXkgYXJnLgoJKiBt aXBzcmVhZC5jKHJlYWRfYWxwaGFjb2ZmX2R5bmFtaWNfc3ltdGFiKTogcHJv dmlkZSBkdW1teSBhcmcuCgkqIG5sbXJlYWQuYyhubG1fcmVjb3JkX21pbmlt YWxfc3ltYm9sKTogcHJvdmlkZSBkdW1teSBhcmcuCgkqIG9zOWtyZWFkLmMo cmVjb3JkX21pbmltYWxfc3ltYm9sKTogcHJvdmlkZSBkdW1teSBhcmcuCgoK SW5kZXg6IHNyYy9nZGIvY29mZnJlYWQuYwo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09ClJDUyBmaWxlOiAvZGV2L2ZzL0gvcnVwcC9kZXZlbC1sb2NhbC1yZXBv c2l0b3J5L3NyYy9nZGIvY29mZnJlYWQuYyx2CnJldHJpZXZpbmcgcmV2aXNp b24gMS4yCmRpZmYgLXAgLXUgLXIxLjIgY29mZnJlYWQuYwotLS0gc3JjL2dk Yi9jb2ZmcmVhZC5jCTIwMDEvMTIvMjMgMjM6MjI6MTIJMS4yCisrKyBzcmMv Z2RiL2NvZmZyZWFkLmMJMjAwMS8xMi8yMyAyMzo0NDo1NwpAQCAtNDgzLDE1 ICs0ODQsMTYgQEAgY29mZl9lbmRfc3ltdGFiIChzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZQogDAogc3RhdGljIHZvaWQKIHJlY29yZF9taW5pbWFsX3N5bWJv bCAoY2hhciAqbmFtZSwgQ09SRV9BRERSIGFkZHJlc3MsCi0JCSAgICAgICBl bnVtIG1pbmltYWxfc3ltYm9sX3R5cGUgdHlwZSwgc3RydWN0IG9iamZpbGUg Km9iamZpbGUpCi17CisJCSAgICAgICBlbnVtIG1pbmltYWxfc3ltYm9sX3R5 cGUgdHlwZSwgc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisJCSAgICAgICBh c2VjdGlvbiAqYmZkX3NlY3Rpb24pCit7CiAgIC8qIFdlIGRvbid0IHdhbnQg VERFU0MgZW50cnkgcG9pbnRzIGluIHRoZSBtaW5pbWFsIHN5bWJvbCB0YWJs ZSAqLwogICBpZiAobmFtZVswXSA9PSAnQCcpCiAgICAgcmV0dXJuOwogCi0g IHByaW1fcmVjb3JkX21pbmltYWxfc3ltYm9sIChuYW1lLCBhZGRyZXNzLCB0 eXBlLCBvYmpmaWxlKTsKLX0KLQwKKyAgcHJpbV9yZWNvcmRfbWluaW1hbF9z eW1ib2wgKG5hbWUsIGFkZHJlc3MsIHR5cGUsIG9iamZpbGUsIGJmZF9zZWN0 aW9uKTsKK30KKwwKIC8qIGNvZmZfc3ltZmlsZV9pbml0ICgpCiAgICBpcyB0 aGUgY29mZi1zcGVjaWZpYyBpbml0aWFsaXphdGlvbiByb3V0aW5lIGZvciBy ZWFkaW5nIHN5bWJvbHMuCiAgICBJdCBpcyBwYXNzZWQgYSBzdHJ1Y3Qgb2Jq ZmlsZSB3aGljaCBjb250YWlucywgYW1vbmcgb3RoZXIgdGhpbmdzLApAQCAt ODE3LDggKzgxOSw5IEBAIGNvZmZfc3ltdGFiX3JlYWQgKGxvbmcgc3ltdGFi X29mZnNldCwgdW4KIAl7CiAJICAvKiBSZWNvcmQgYWxsIGZ1bmN0aW9ucyAt LSBleHRlcm5hbCBhbmQgc3RhdGljIC0tIGluIG1pbnN5bXMuICovCiAJICB0 bXBhZGRyID0gY3MtPmNfdmFsdWUgKyBBTk9GRlNFVCAob2JqZmlsZS0+c2Vj dGlvbl9vZmZzZXRzLCBTRUNUX09GRl9URVhUIChvYmpmaWxlKSk7Ci0JICBy ZWNvcmRfbWluaW1hbF9zeW1ib2wgKGNzLT5jX25hbWUsIHRtcGFkZHIsIG1z dF90ZXh0LCBvYmpmaWxlKTsKLQorICAJICByZWNvcmRfbWluaW1hbF9zeW1i b2wgKGNzLT5jX25hbWUsIHRtcGFkZHIsIG1zdF90ZXh0LCBvYmpmaWxlLCAK KyAgCSAgICAgY29mZl9zZWN0aW9uX2Zyb21fYmZkX2luZGV4KG9iamZpbGUt Pm9iZmQsIGNzLT5jX3NlY251bSkpOworCiAJICBmY25fbGluZV9wdHIgPSBt YWluX2F1eC54X3N5bS54X2ZjbmFyeS54X2Zjbi54X2xubm9wdHI7CiAJICBm Y25fc3RhcnRfYWRkciA9IHRtcGFkZHI7CiAJICBmY25fY3Nfc2F2ZWQgPSAq Y3M7CkBAIC05NzcsOCArOTgwLDkgQEAgY29mZl9zeW10YWJfcmVhZCAobG9u ZyBzeW10YWJfb2Zmc2V0LCB1bgogICAgICAgICAgICAgICAgICAgIHdlbGNv bWUuICovCiAJCWdkYl9hc3NlcnQgKHNpemVvZiAodm9pZCAqKSA+PSBzaXpl b2YgKGNzLT5jX3NjbGFzcykpOwogCQltc3ltID0gcHJpbV9yZWNvcmRfbWlu aW1hbF9zeW1ib2xfYW5kX2luZm8KLQkJICAoY3MtPmNfbmFtZSwgdG1wYWRk ciwgbXNfdHlwZSwgKHZvaWQgKikgKGxvbmcpIGNzLT5jX3NjbGFzcywKLQkJ ICAgc2VjLCBOVUxMLCBvYmpmaWxlKTsKKwkJIChjcy0+Y19uYW1lLCB0bXBh ZGRyLCBtc190eXBlLCAodm9pZCAqKSAobG9uZykgY3MtPmNfc2NsYXNzLAor CSAgICAgICAgIHNlYywgY29mZl9zZWN0aW9uX2Zyb21fYmZkX2luZGV4IChv YmpmaWxlLT5vYmZkLCBjcy0+Y19zZWNudW0pLAorCSAgICAgICAgIG9iamZp bGUpOwogCQlpZiAobXN5bSkKIAkJICBDT0ZGX01BS0VfTVNZTUJPTF9TUEVD SUFMIChjcy0+Y19zY2xhc3MsIG1zeW0pOwogCSAgICAgIH0KSW5kZXg6IHNy Yy9nZGIvZGJ4cmVhZC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp bGU6IC9kZXYvZnMvSC9ydXBwL2RldmVsLWxvY2FsLXJlcG9zaXRvcnkvc3Jj L2dkYi9kYnhyZWFkLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4xLjEK ZGlmZiAtcCAtdSAtcjEuMS4xLjEgZGJ4cmVhZC5jCi0tLSBzcmMvZ2RiL2Ri eHJlYWQuYwkyMDAxLzEyLzIzIDAwOjM0OjQ1CTEuMS4xLjEKKysrIHNyYy9n ZGIvZGJ4cmVhZC5jCTIwMDEvMTIvMjMgMjM6NDQ6NTcKQEAgLTEyMjQsNyAr MTIyNCw3IEBAIHJlYWRfZGJ4X2R5bmFtaWNfc3ltdGFiIChzdHJ1Y3Qgb2Jq ZmlsZSAKIAogICAgICAgbmFtZSA9IChjaGFyICopIGJmZF9hc3ltYm9sX25h bWUgKCpyZWwtPnN5bV9wdHJfcHRyKTsKICAgICAgIHByaW1fcmVjb3JkX21p bmltYWxfc3ltYm9sIChuYW1lLCBhZGRyZXNzLCBtc3Rfc29saWJfdHJhbXBv bGluZSwKLQkJCQkgIG9iamZpbGUpOworCQkJCSAgb2JqZmlsZSwgTlVMTCk7 CiAgICAgfQogCiAgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKSW5kZXg6IHNy Yy9nZGIvZHdhcmYycmVhZC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNT IGZpbGU6IC9kZXYvZnMvSC9ydXBwL2RldmVsLWxvY2FsLXJlcG9zaXRvcnkv c3JjL2dkYi9kd2FyZjJyZWFkLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEu MS4xLjEKZGlmZiAtcCAtdSAtcjEuMS4xLjEgZHdhcmYycmVhZC5jCi0tLSBz cmMvZ2RiL2R3YXJmMnJlYWQuYwkyMDAxLzEyLzIzIDAwOjM0OjQ2CTEuMS4x LjEKKysrIHNyYy9nZGIvZHdhcmYycmVhZC5jCTIwMDEvMTIvMjMgMjM6NDQ6 NTgKQEAgLTEyNjgsNyArMTI2OCw3IEBAIGFkZF9wYXJ0aWFsX3N5bWJvbCAo c3RydWN0IHBhcnRpYWxfZGllX2kKICAgICAgIGlmIChwZGktPmlzX2V4dGVy bmFsKQogCXsKIAkgIC8qcHJpbV9yZWNvcmRfbWluaW1hbF9zeW1ib2wgKHBk aS0+bmFtZSwgcGRpLT5sb3dwYyArIGJhc2VhZGRyLAotCSAgICAgbXN0X3Rl eHQsIG9iamZpbGUpOyAqLworCSAgICAgbXN0X3RleHQsIG9iamZpbGUsIE5V TEwpOyAqLwogCSAgYWRkX3BzeW1ib2xfdG9fbGlzdCAocGRpLT5uYW1lLCBz dHJsZW4gKHBkaS0+bmFtZSksCiAJCQkgICAgICAgVkFSX05BTUVTUEFDRSwg TE9DX0JMT0NLLAogCQkJICAgICAgICZvYmpmaWxlLT5nbG9iYWxfcHN5bWJv bHMsCkBAIC0xMjc3LDcgKzEyNzcsNyBAQCBhZGRfcGFydGlhbF9zeW1ib2wg KHN0cnVjdCBwYXJ0aWFsX2RpZV9pCiAgICAgICBlbHNlCiAJewogCSAgLypw cmltX3JlY29yZF9taW5pbWFsX3N5bWJvbCAocGRpLT5uYW1lLCBwZGktPmxv d3BjICsgYmFzZWFkZHIsCi0JICAgICBtc3RfZmlsZV90ZXh0LCBvYmpmaWxl KTsgKi8KKwkgICAgIG1zdF9maWxlX3RleHQsIG9iamZpbGUsIE5VTEwpOyAq LwogCSAgYWRkX3BzeW1ib2xfdG9fbGlzdCAocGRpLT5uYW1lLCBzdHJsZW4g KHBkaS0+bmFtZSksCiAJCQkgICAgICAgVkFSX05BTUVTUEFDRSwgTE9DX0JM T0NLLAogCQkJICAgICAgICZvYmpmaWxlLT5zdGF0aWNfcHN5bWJvbHMsCkBA IC0xMzE1LDcgKzEzMTUsNyBAQCBhZGRfcGFydGlhbF9zeW1ib2wgKHN0cnVj dCBwYXJ0aWFsX2RpZV9pCiAJICAgIHJldHVybjsKIAkgIGFkZHIgPSBkZWNv ZGVfbG9jZGVzYyAocGRpLT5sb2NkZXNjLCBvYmpmaWxlLCBjdV9oZWFkZXIp OwogCSAgLypwcmltX3JlY29yZF9taW5pbWFsX3N5bWJvbCAocGRpLT5uYW1l LCBhZGRyICsgYmFzZWFkZHIsCi0JICAgICBtc3RfZmlsZV9kYXRhLCBvYmpm aWxlKTsgKi8KKwkgICAgIG1zdF9maWxlX2RhdGEsIG9iamZpbGUsIE5VTEwp OyAqLwogCSAgYWRkX3BzeW1ib2xfdG9fbGlzdCAocGRpLT5uYW1lLCBzdHJs ZW4gKHBkaS0+bmFtZSksCiAJCQkgICAgICAgVkFSX05BTUVTUEFDRSwgTE9D X1NUQVRJQywKIAkJCSAgICAgICAmb2JqZmlsZS0+c3RhdGljX3BzeW1ib2xz LApJbmRleDogc3JjL2dkYi9tZGVidWdyZWFkLmMKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQpSQ1MgZmlsZTogL2Rldi9mcy9IL3J1cHAvZGV2ZWwtbG9jYWwt cmVwb3NpdG9yeS9zcmMvZ2RiL21kZWJ1Z3JlYWQuYyx2CnJldHJpZXZpbmcg cmV2aXNpb24gMS4xLjEuMQpkaWZmIC1wIC11IC1yMS4xLjEuMSBtZGVidWdy ZWFkLmMKLS0tIHNyYy9nZGIvbWRlYnVncmVhZC5jCTIwMDEvMTIvMjMgMDA6 MzQ6NTAJMS4xLjEuMQorKysgc3JjL2dkYi9tZGVidWdyZWFkLmMJMjAwMS8x Mi8yMyAyMzo0NDo1OApAQCAtMjQ4NSw3ICsyNDg1LDcgQEAgcGFyc2VfcGFy dGlhbF9zeW1ib2xzIChzdHJ1Y3Qgb2JqZmlsZSAqbwogCSAgY29tcGxhaW4g KCZ1bmtub3duX2V4dF9jb21wbGFpbnQsIG5hbWUpOwogCX0KICAgICAgIGlm ICghRUNPRkZfSU5fRUxGIChjdXJfYmZkKSkKLQlwcmltX3JlY29yZF9taW5p bWFsX3N5bWJvbCAobmFtZSwgc3ZhbHVlLCBtc190eXBlLCBvYmpmaWxlKTsK KwlwcmltX3JlY29yZF9taW5pbWFsX3N5bWJvbCAobmFtZSwgc3ZhbHVlLCBt c190eXBlLCBvYmpmaWxlLCBOVUxMKTsKICAgICB9CiAKICAgLyogUGFzcyAz IG92ZXIgZmlsZXMsIG92ZXIgbG9jYWwgc3ltczogZmlsbCBpbiBzdGF0aWMg c3ltYm9scyAqLwpJbmRleDogc3JjL2dkYi9taW5zeW1zLmMKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2Rldi9mcy9IL3J1cHAvZGV2ZWwt bG9jYWwtcmVwb3NpdG9yeS9zcmMvZ2RiL21pbnN5bXMuYyx2CnJldHJpZXZp bmcgcmV2aXNpb24gMS4xLjEuMQpkaWZmIC1wIC11IC1yMS4xLjEuMSBtaW5z eW1zLmMKLS0tIHNyYy9nZGIvbWluc3ltcy5jCTIwMDEvMTIvMjMgMDA6MzQ6 NTEJMS4xLjEuMQorKysgc3JjL2dkYi9taW5zeW1zLmMJMjAwMS8xMi8yMyAy Mzo0NDo1OApAQCAtNDg0LDEzICs0ODQsMTcgQEAgbG9va3VwX21pbmltYWxf c3ltYm9sX2J5X3BjX3NlY3Rpb24gKENPUgogCiAJICAgICAgLyogSWYgInNl Y3Rpb24iIHNwZWNpZmllZCwgc2tpcCBhbnkgc3ltYm9sIGZyb20gd3Jvbmcg c2VjdGlvbiAqLwogCSAgICAgIC8qIFRoaXMgaXMgdGhlIG5ldyBjb2RlIHRo YXQgZGlzdGluZ3Vpc2hlcyBpdCBmcm9tIHRoZSBvbGQgZnVuY3Rpb24gKi8K KwkgICAgICAvKiBJZiB0aGUgc3ltYm9scyBhcmUgYWxyZWFkeSBpbiBzZWN0 aW9uIG9yZGVyLCB3ZSBtYXkgZW5kIHVwCisJCSBsaW5lYXJseSBiYWNraW5n IHVwIHRocnUgdGhlIHdob2xlIHRhYmxlLCBzbyBxdWl0IGlmIHRoZQorCQkg c3ltYm9sIHZhbHVlIGdldHMgd2VpcmQuICovCiAJICAgICAgaWYgKHNlY3Rp b24pCiAJCXdoaWxlIChoaSA+PSAwCiAJCSAgICAgICAvKiBTb21lIHR5cGVz IG9mIGRlYnVnIGluZm8sIHN1Y2ggYXMgQ09GRiwKIAkJCSAgZG9uJ3QgZmls bCB0aGUgYmZkX3NlY3Rpb24gbWVtYmVyLCBzbyBkb24ndAogCQkJICB0aHJv dyBhd2F5IHN5bWJvbHMgb24gdGhvc2UgcGxhdGZvcm1zLiAgKi8KIAkJICAg ICAgICYmIFNZTUJPTF9CRkRfU0VDVElPTiAoJm1zeW1ib2xbaGldKSAhPSBO VUxMCi0JCSAgICAgICAmJiBTWU1CT0xfQkZEX1NFQ1RJT04gKCZtc3ltYm9s W2hpXSkgIT0gc2VjdGlvbikKKwkJICAgICAgICYmIFNZTUJPTF9CRkRfU0VD VElPTiAoJm1zeW1ib2xbaGldKSAhPSBzZWN0aW9uCisJCSAgICAgICAmJiBT WU1CT0xfVkFMVUVfQUREUkVTUyAoJm1zeW1ib2xbaGldKSA+PSBwYykKIAkJ ICAtLWhpOwogCiAJICAgICAgaWYgKGhpID49IDAKQEAgLTU5Miw3ICs1OTYs NyBAQCBpbml0X21pbmltYWxfc3ltYm9sX2NvbGxlY3Rpb24gKHZvaWQpCiB2 b2lkCiBwcmltX3JlY29yZF9taW5pbWFsX3N5bWJvbCAoY29uc3QgY2hhciAq bmFtZSwgQ09SRV9BRERSIGFkZHJlc3MsCiAJCQkgICAgZW51bSBtaW5pbWFs X3N5bWJvbF90eXBlIG1zX3R5cGUsCi0JCQkgICAgc3RydWN0IG9iamZpbGUg Km9iamZpbGUpCisJCQkgICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGFz ZWN0aW9uICpiZmRfc2VjdGlvbikKIHsKICAgaW50IHNlY3Rpb247CiAKQEAg LTYxNiw3ICs2MjAsNyBAQCBwcmltX3JlY29yZF9taW5pbWFsX3N5bWJvbCAo Y29uc3QgY2hhciAqCiAgICAgfQogCiAgIHByaW1fcmVjb3JkX21pbmltYWxf c3ltYm9sX2FuZF9pbmZvIChuYW1lLCBhZGRyZXNzLCBtc190eXBlLAotCQkJ CSAgICAgICBOVUxMLCBzZWN0aW9uLCBOVUxMLCBvYmpmaWxlKTsKKwkJCQkg ICAgICAgTlVMTCwgc2VjdGlvbiwgYmZkX3NlY3Rpb24sIG9iamZpbGUpOwog fQogCiAvKiBSZWNvcmQgYSBtaW5pbWFsIHN5bWJvbCBpbiB0aGUgbXN5bSBi dW5jaGVzLiAgUmV0dXJucyB0aGUgc3ltYm9sCkluZGV4OiBzcmMvZ2RiL21p cHNyZWFkLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2Rl di9mcy9IL3J1cHAvZGV2ZWwtbG9jYWwtcmVwb3NpdG9yeS9zcmMvZ2RiL21p cHNyZWFkLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4xLjEKZGlmZiAt cCAtdSAtcjEuMS4xLjEgbWlwc3JlYWQuYwotLS0gc3JjL2dkYi9taXBzcmVh ZC5jCTIwMDEvMTIvMjMgMDA6MzQ6NTEJMS4xLjEuMQorKysgc3JjL2dkYi9t aXBzcmVhZC5jCTIwMDEvMTIvMjMgMjM6NDQ6NTgKQEAgLTQyMSw3ICs0MjEs NyBAQCByZWFkX2FscGhhY29mZl9keW5hbWljX3N5bXRhYiAoc3RydWN0IHNl CiAJICAgIH0KIAl9CiAKLSAgICAgIHByaW1fcmVjb3JkX21pbmltYWxfc3lt Ym9sIChuYW1lLCBzeW1fdmFsdWUsIG1zX3R5cGUsIG9iamZpbGUpOworICAg ICAgcHJpbV9yZWNvcmRfbWluaW1hbF9zeW1ib2wgKG5hbWUsIHN5bV92YWx1 ZSwgbXNfdHlwZSwgb2JqZmlsZSwgTlVMTCk7CiAgICAgfQogCiAgIGRvX2Ns ZWFudXBzIChjbGVhbnVwcyk7CkluZGV4OiBzcmMvZ2RiL25sbXJlYWQuYwo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvZGV2L2ZzL0gvcnVw cC9kZXZlbC1sb2NhbC1yZXBvc2l0b3J5L3NyYy9nZGIvbmxtcmVhZC5jLHYK cmV0cmlldmluZyByZXZpc2lvbiAxLjEuMS4xCmRpZmYgLXAgLXUgLXIxLjEu MS4xIG5sbXJlYWQuYwotLS0gc3JjL2dkYi9ubG1yZWFkLmMJMjAwMS8xMi8y MyAwMDozNDo1MQkxLjEuMS4xCisrKyBzcmMvZ2RiL25sbXJlYWQuYwkyMDAx LzEyLzIzIDIzOjQ0OjU4CkBAIC0xMzUsNyArMTM1LDcgQEAgbmxtX3N5bXRh Yl9yZWFkIChiZmQgKmFiZmQsIENPUkVfQUREUiBhZAogCQltc190eXBlID0g bXN0X3Vua25vd247CiAKIAkgICAgICBwcmltX3JlY29yZF9taW5pbWFsX3N5 bWJvbCAoc3ltLT5uYW1lLCBzeW1hZGRyLCBtc190eXBlLAotCQkJCQkgIG9i amZpbGUpOworCQkJCQkgIG9iamZpbGUsIE5VTEwpOwogCSAgICB9CiAJfQog ICAgICAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOwpJbmRleDogc3JjL2dkYi9v czlrcmVhZC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9k ZXYvZnMvSC9ydXBwL2RldmVsLWxvY2FsLXJlcG9zaXRvcnkvc3JjL2dkYi9v czlrcmVhZC5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEuMS4xCmRpZmYg LXAgLXUgLXIxLjEuMS4xIG9zOWtyZWFkLmMKLS0tIHNyYy9nZGIvb3M5a3Jl YWQuYwkyMDAxLzEyLzIzIDAwOjM0OjUxCTEuMS4xLjEKKysrIHNyYy9nZGIv b3M5a3JlYWQuYwkyMDAxLzEyLzIzIDIzOjQ0OjU4CkBAIC0yMTUsNyArMjE1 LDcgQEAgcmVjb3JkX21pbmltYWxfc3ltYm9sIChjaGFyICpuYW1lLCBDT1JF XwogICAgICAgYnJlYWs7CiAgICAgfQogCi0gIHByaW1fcmVjb3JkX21pbmlt YWxfc3ltYm9sIChuYW1lLCBhZGRyZXNzLCBtc190eXBlLCBvYmpmaWxlKTsK KyAgcHJpbV9yZWNvcmRfbWluaW1hbF9zeW1ib2wgKG5hbWUsIGFkZHJlc3Ms IG1zX3R5cGUsIG9iamZpbGUsIE5VTEwpOwogfQogCiAvKiByZWFkIGFuZCBw cm9jZXNzIC5zdGIgZmlsZSBhbmQgc3RvcmUgaW4gbWluaW1hbCBzeW1ib2wg dGFibGUgKi8KSW5kZXg6IHNyYy9nZGIvc3ltdGFiLmgKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQpSQ1MgZmlsZTogL2Rldi9mcy9IL3J1cHAvZGV2ZWwtbG9j YWwtcmVwb3NpdG9yeS9zcmMvZ2RiL3N5bXRhYi5oLHYKcmV0cmlldmluZyBy ZXZpc2lvbiAxLjEuMS4xCmRpZmYgLXAgLXUgLXIxLjEuMS4xIHN5bXRhYi5o Ci0tLSBzcmMvZ2RiL3N5bXRhYi5oCTIwMDEvMTIvMjMgMDA6MzQ6NTYJMS4x LjEuMQorKysgc3JjL2dkYi9zeW10YWIuaAkyMDAxLzEyLzIzIDIzOjQ0OjU4 CkBAIC0xMTg2LDcgKzExODYsOCBAQCBleHRlcm4gc3RydWN0IHR5cGUgKmxv b2t1cF90cmFuc3BhcmVudF90CiAKIGV4dGVybiB2b2lkIHByaW1fcmVjb3Jk X21pbmltYWxfc3ltYm9sIChjb25zdCBjaGFyICosIENPUkVfQUREUiwKIAkJ CQkJZW51bSBtaW5pbWFsX3N5bWJvbF90eXBlLAotCQkJCQlzdHJ1Y3Qgb2Jq ZmlsZSAqKTsKKwkJCQkJc3RydWN0IG9iamZpbGUgKiwKKwkJCQkJYXNlY3Rp b24gKik7CiAKIGV4dGVybiBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKnByaW1f cmVjb3JkX21pbmltYWxfc3ltYm9sX2FuZF9pbmZvCiAgIChjb25zdCBjaGFy ICosIENPUkVfQUREUiwKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ck9uZSBtb3JlIGFsaWdubWVudCBydWxlIGlzIG5lZWRlZCBmb3Igc3RydWN0 dXJlIHZhbHVlcyAKKG5vdCBpbiB0aGVpciBmaXhlcywgeWV0KS4KCkFsc28s IGZpeCBidWcgd2l0aCBCTE9DS19HQ0NfQ09NUElMRUQ6IGl0IHNpbXBseSBk b2Vzbid0IHdvcmsKcmlnaHQgYXQgdGhpcyBwb2ludCBhbmQgYnJlYWtzIHNv bWUgc3lzdGVtcy4gIFNlZSBjb21tZW50IGJlbG93LgoKSW5kZXg6IHNyYy9n ZGIvdmFsb3BzLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog L2Rldi9mcy9IL3J1cHAvZGV2ZWwtbG9jYWwtcmVwb3NpdG9yeS9zcmMvZ2Ri L3ZhbG9wcy5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEuMS4xCmRpZmYg LXAgLXUgLXIxLjEuMS4xIHZhbG9wcy5jCi0tLSBzcmMvZ2RiL3ZhbG9wcy5j CTIwMDEvMTIvMjMgMDA6MzQ6NTcJMS4xLjEuMQorKysgc3JjL2dkYi92YWxv cHMuYwkyMDAxLzEyLzIzIDIzOjU4OjM5CkBAIC0xMzU2LDExICsxMzU2LDIw IEBAIGhhbmRfZnVuY3Rpb25fY2FsbCAodmFsdWVfcHRyIGZ1bmN0aW9uLCAK ICAgZnVuYWRkciA9IGZpbmRfZnVuY3Rpb25fYWRkciAoZnVuY3Rpb24sICZ2 YWx1ZV90eXBlKTsKICAgQ0hFQ0tfVFlQRURFRiAodmFsdWVfdHlwZSk7CiAK KyNpZmRlZiBDQVJFX0lGX0dDQwogICB7CiAgICAgc3RydWN0IGJsb2NrICpi ID0gYmxvY2tfZm9yX3BjIChmdW5hZGRyKTsKICAgICAvKiBJZiBjb21waWxl ZCB3aXRob3V0IC1nLCBhc3N1bWUgR0NDIDIuICAqLwogICAgIHVzaW5nX2dj YyA9IChiID09IE5VTEwgPyAyIDogQkxPQ0tfR0NDX0NPTVBJTEVEIChiKSk7 CiAgIH0KKyNlbHNlCisgIC8qIElmIHdlIGRvbid0IGNhcmUgaWYgd2UncmUg dXNpbmcgZ2NjIG9yIG5vdCBvbiB0aGlzIHN5c3RlbSwKKyAgICAgdGhlbiBk ZWZhdWx0IHRvIDIuICBOb3RlIHRoYXQgdGhlcmUgYXBwZWFycyB0byBiZSBO TyBjb2RlCisgICAgIHRoYXQgYWN0dWFsbHkgc2V0cyB1cCBCTE9DS19HQ0Nf Q09NUElMRUQgKGdjY19jb21waWxlX2ZsYWcpCisgICAgIHNvIHRoaXMgaXMg YWxsIHByZXR0eSBtdWNoIG1lYW5pbmdsZXNzIGFueXdheSwgYnV0IGl0Cisg ICAgIGJyZWFrcyB0aGUgcmVncmVzc2lvbnMgKGNhbGxmdW5jKS4gICovCisg IHVzaW5nX2djYyA9IDI7CisjZW5kaWYKIAogICAvKiBBcmUgd2UgcmV0dXJu aW5nIGEgdmFsdWUgdXNpbmcgYSBzdHJ1Y3R1cmUgcmV0dXJuIG9yIGEgbm9y bWFsCiAgICAgIHZhbHVlIHJldHVybj8gKi8KQEAgLTE1NTcsNiArMTU2Niw3 IEBAIFlvdSBtdXN0IHVzZSBhIHBvaW50ZXIgdG8gZnVuY3Rpb24gdHlwZSAK ICAgLyogUmVzZXJ2ZSBzcGFjZSBmb3IgdGhlIHJldHVybiBzdHJ1Y3R1cmUg dG8gYmUgd3JpdHRlbiBvbiB0aGUKICAgICAgc3RhY2ssIGlmIG5lY2Vzc2Fy eSAqLwogCisjaWYgMAogICBpZiAoc3RydWN0X3JldHVybikKICAgICB7CiAg ICAgICBpbnQgbGVuID0gVFlQRV9MRU5HVEggKHZhbHVlX3R5cGUpOwpAQCAt MTU3OCw2ICsxNTg4LDM5IEBAIFlvdSBtdXN0IHVzZSBhIHBvaW50ZXIgdG8g ZnVuY3Rpb24gdHlwZSAKIAkgIHNwICs9IGxlbjsKIAl9CiAgICAgfQorI2Vs c2UKKyAgaWYgKHN0cnVjdF9yZXR1cm4pCisgICAgeworICAgICAgcmVnaXN0 ZXIgaW50IGxlbiA9IFRZUEVfTEVOR1RIICh2YWx1ZV90eXBlKTsKKyAgICAg IHJlZ2lzdGVyIGludCBjb250YWluZXJfbGVuID0gbGVuOworICAgICAgcmVn aXN0ZXIgaW50IG9mZnNldDsKKworICAgICAgLyogSG93IGJpZyBpcyB0aGUg Y29udGFpbmVyIHdlJ3JlIGdvaW5nIHRvIHB1dCB0aGlzIHZhbHVlIGluPyAg Ki8KKyAgICAgIGlmIChQQVJNX0JPVU5EQVJZKQorCWNvbnRhaW5lcl9sZW4g PSAoKGxlbiArIFBBUk1fQk9VTkRBUlkgLyBUQVJHRVRfQ0hBUl9CSVQgLSAx KQorCQkJJiB+KFBBUk1fQk9VTkRBUlkgLyBUQVJHRVRfQ0hBUl9CSVQgLSAx KSk7CisKKyAgICAgIC8qIEFyZSB3ZSBnb2luZyB0byBwdXQgaXQgYXQgdGhl IGhpZ2ggb3IgbG93IGVuZCBvZiB0aGUgY29udGFpbmVyPyAgKi8KKyAgICAg IGlmIChUQVJHRVRfQllURV9PUkRFUiA9PSBCSUdfRU5ESUFOKQorCW9mZnNl dCA9IGNvbnRhaW5lcl9sZW4gLSBsZW47CisgICAgICBlbHNlCisJb2Zmc2V0 ID0gMDsKKworICAgICAgaWYgKElOTkVSX1RIQU4gKDEsIDIpKQorCXsKKwkg IC8qIHN0YWNrIGdyb3dzIGRvd253YXJkICovCisJICBzcCAtPSBjb250YWlu ZXJfbGVuOworCSAgc3RydWN0X2FkZHIgPSBzcDsKKwl9CisgICAgICBlbHNl CisJeworCSAgLyogc3RhY2sgZ3Jvd3MgdXB3YXJkICovCisJICBzdHJ1Y3Rf YWRkciA9IHNwOworCSAgc3AgKz0gY29udGFpbmVyX2xlbjsKKwl9CisgICAg fQorCisjZW5kaWYKIAogICAvKiBlbHo6IG9uIEhQUEEgbm8gbmVlZCBmb3Ig dGhpcyBleHRyYSBhbGlnbm1lbnQsIG1heWJlIGl0IGlzIG5lZWRlZAogICAg ICBvbiBvdGhlciBhcmNoaXRlY3R1cmVzLiBUaGlzIGlzIGJlY2F1c2UgYWxs IHRoZSBhbGlnbm1lbnQgaXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tClJlbW92ZSBzb21lIG9mIHRoZSBjb25mdXNpb24gYXJvdW5kIENPUkVf QUREUiB2cy4gbG9uZyB2cy4KbG9uZyBsb25nIHZzLiBMT05HRVNULiAgT24g QWxwaGEgTlQsIGludHMgYXJlIDMyIGJpdHMsIGFkZHJlc3NlcwoocG9pbnRl cnMsIGluIG1lbW9yeSkgYXJlIDMyIGJpdHMsIGJ1dCByZWdpc3RlcnMgYW5k IGxvbmcgbG9uZyBhcmUKNjQgYml0cy4gIFRoaXMgaW1wbGllcyBjYXJlIGlu IGdldHRpbmcgdGhlc2UgdHlwZXMgcmlnaHQuCgpTZWUgYWxzbyBhIHBhdGNo IGNvbmNlcm5pbmcgQ0NfSEFTX0xPTkdfTE9ORy4KCkZyaSBEZWMgIDMgMTA6 MDc6MjAgUFNUIDE5OTkgIERvbm4gVGVycnkgPGRvbm50ZUBtaWNyb3NvZnQu Y29tPgoJKiBpMzg2LXRkZXAuYyhpMzg2X3NhdmVkX3BjX2FmdGVyX2NhbGws IGkzODZfZnJhbWVfc2F2ZWRfcGMpOiAKCWFkZCBDT1JFX0FERFIgY2FzdHMu CgkqIGZpbmR2YXIuYyhyZWFkX3JlZ2lzdGVyLCByZWFkX3JlZ2lzdGVyX3Bp ZCk6IENoYW5nZSB0byBMT05HRVNULgoJKiBnZGJ0eXBlcy5jKGNyZWF0ZV9y YW5nZV90eXBlKTogQ2hhbmdlIGFyZ3MgdG8gTE9OR0VTVC4KCSogZ2RidHlw ZXMuaChjcmVhdGVfcmFuZ2VfdHlwZSk6IExpa2V3aXNlLgoJKiB2YWxhcml0 aC5jKHZhbHVlX3N1YnNjcmlwdGVkX3J2YWx1ZSwgdmFsdWVfYml0X2luZGV4 KTogTGlrZXdpc2UuCgkqIHZhbG9wdHMuYyh2YWx1ZV9zbGljZSk6IExpa2V3 aXNlLgoJKiBzY20tbGFuZy5jKHNjbV9nZXRfZmllbGQsIHNjbV9sb29rdXBf bmFtZSwgc2NtX2V2YWx1YXRlX3N0cmluZyk6IAoJY2FzdCB0byBDT1JFX0FE RFIuCgkqIHNjbS12YWxwcmludC5jKHNjbV9zY212YWxfcHJpbnQpOiBjYXN0 IHRvL2Zyb20gQ09SRV9BRERSLgoJKiB2YWx1ZS5oICh2YWx1ZV9iaXRfaW5k ZXgsIHZhbHVlX3B0cik6IGFyZyBiZWNvbWVzIENPUkVfQUREUi4KCShyZWFk X3JlZ2lzdGVyLCByZWFkX3JlZ2lzdGVyX3BpZCk6IHJlc3VsdCB0eXBlIGJl Y29tZXMgTE9OR0VTVC4KCkluZGV4OiBzcmMvZ2RiL2dkYnR5cGVzLmMKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2Rldi9mcy9IL3J1cHAv ZGV2ZWwtbG9jYWwtcmVwb3NpdG9yeS9zcmMvZ2RiL2dkYnR5cGVzLmMsdgpy ZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4xLjEKZGlmZiAtcCAtdSAtcjEuMS4x LjEgZ2RidHlwZXMuYwotLS0gc3JjL2dkYi9nZGJ0eXBlcy5jCTIwMDEvMTIv MjMgMDA6MzQ6NDcJMS4xLjEuMQorKysgc3JjL2dkYi9nZGJ0eXBlcy5jCTIw MDEvMTIvMjQgMDA6NTU6NTIKQEAgLTU2MSw3ICs1NjEsNyBAQCBhbGxvY2F0 ZV9zdHViX21ldGhvZCAoc3RydWN0IHR5cGUgKnR5cGUpCiAKIHN0cnVjdCB0 eXBlICoKIGNyZWF0ZV9yYW5nZV90eXBlIChzdHJ1Y3QgdHlwZSAqcmVzdWx0 X3R5cGUsIHN0cnVjdCB0eXBlICppbmRleF90eXBlLAotCQkgICBpbnQgbG93 X2JvdW5kLCBpbnQgaGlnaF9ib3VuZCkKKwkJICAgTE9OR0VTVCBsb3dfYm91 bmQsIExPTkdFU1QgaGlnaF9ib3VuZCkKIHsKICAgaWYgKHJlc3VsdF90eXBl ID09IE5VTEwpCiAgICAgewpJbmRleDogc3JjL2dkYi9nZGJ0eXBlcy5oCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9kZXYvZnMvSC9ydXBw L2RldmVsLWxvY2FsLXJlcG9zaXRvcnkvc3JjL2dkYi9nZGJ0eXBlcy5oLHYK cmV0cmlldmluZyByZXZpc2lvbiAxLjEuMS4xCmRpZmYgLXAgLXUgLXIxLjEu MS4xIGdkYnR5cGVzLmgKLS0tIHNyYy9nZGIvZ2RidHlwZXMuaAkyMDAxLzEy LzIzIDAwOjM0OjQ3CTEuMS4xLjEKKysrIHNyYy9nZGIvZ2RidHlwZXMuaAky MDAxLzEyLzI0IDAwOjU1OjUyCkBAIC0xMDgzLDggKzEwODMsOCBAQCBleHRl cm4gc3RydWN0IHR5cGUgKm1ha2VfZnVuY3Rpb25fdHlwZSAoCiAKIGV4dGVy biBzdHJ1Y3QgdHlwZSAqbG9va3VwX2Z1bmN0aW9uX3R5cGUgKHN0cnVjdCB0 eXBlICopOwogCi1leHRlcm4gc3RydWN0IHR5cGUgKmNyZWF0ZV9yYW5nZV90 eXBlIChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdHlwZSAqLCBpbnQsCi0JCQkJ ICAgICAgIGludCk7CitleHRlcm4gc3RydWN0IHR5cGUgKmNyZWF0ZV9yYW5n ZV90eXBlIChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdHlwZSAqLCBMT05HRVNU LAorCQkJCSAgICAgICBMT05HRVNUKTsKIAogZXh0ZXJuIHN0cnVjdCB0eXBl ICpjcmVhdGVfYXJyYXlfdHlwZSAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHR5 cGUgKiwKIAkJCQkgICAgICAgc3RydWN0IHR5cGUgKik7CkluZGV4OiBzcmMv Z2RiL2kzODYtdGRlcC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp bGU6IC9kZXYvZnMvSC9ydXBwL2RldmVsLWxvY2FsLXJlcG9zaXRvcnkvc3Jj L2dkYi9pMzg2LXRkZXAuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yCmRp ZmYgLXAgLXUgLXIxLjIgaTM4Ni10ZGVwLmMKLS0tIHNyYy9nZGIvaTM4Ni10 ZGVwLmMJMjAwMS8xMi8yMyAyMDo0NjoxNAkxLjIKKysrIHNyYy9nZGIvaTM4 Ni10ZGVwLmMJMjAwMS8xMi8yNCAwMDo1NTo1MgpAQCAtNTA1LDcgKzUwNSw3 IEBAIGkzODZfZnJhbWVfc2F2ZWRfcGMgKHN0cnVjdCBmcmFtZV9pbmZvICoK ICAgICByZXR1cm4gc2lndHJhbXBfc2F2ZWRfcGMgKGZyYW1lKTsKICNlbmRp ZgogCi0gIHJldHVybiByZWFkX21lbW9yeV91bnNpZ25lZF9pbnRlZ2VyIChm cmFtZS0+ZnJhbWUgKyA0LCA0KTsKKyAgcmV0dXJuIChDT1JFX0FERFIpIHJl YWRfbWVtb3J5X3Vuc2lnbmVkX2ludGVnZXIgKGZyYW1lLT5mcmFtZSArIDQs IDQpOwogfQogCiBDT1JFX0FERFIKQEAgLTUxOSw3ICs1MTksNyBAQCBpMzg2 Z28zMl9mcmFtZV9zYXZlZF9wYyAoc3RydWN0IGZyYW1lX2luCiBDT1JFX0FE RFIKIGkzODZfc2F2ZWRfcGNfYWZ0ZXJfY2FsbCAoc3RydWN0IGZyYW1lX2lu Zm8gKmZyYW1lKQogewotICByZXR1cm4gcmVhZF9tZW1vcnlfdW5zaWduZWRf aW50ZWdlciAocmVhZF9yZWdpc3RlciAoU1BfUkVHTlVNKSwgNCk7CisgIHJl dHVybiByZWFkX21lbW9yeV91bnNpZ25lZF9pbnRlZ2VyICgoQ09SRV9BRERS KSByZWFkX3JlZ2lzdGVyIChTUF9SRUdOVU0pLCA0KTsKIH0KIAogLyogUmV0 dXJuIG51bWJlciBvZiBhcmdzIHBhc3NlZCB0byBhIGZyYW1lLgpJbmRleDog c3JjL2dkYi9zY20tbGFuZy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNT IGZpbGU6IC9kZXYvZnMvSC9ydXBwL2RldmVsLWxvY2FsLXJlcG9zaXRvcnkv c3JjL2dkYi9zY20tbGFuZy5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEu MS4xCmRpZmYgLXAgLXUgLXIxLjEuMS4xIHNjbS1sYW5nLmMKLS0tIHNyYy9n ZGIvc2NtLWxhbmcuYwkyMDAxLzEyLzIzIDAwOjM0OjU0CTEuMS4xLjEKKysr IHNyYy9nZGIvc2NtLWxhbmcuYwkyMDAxLzEyLzI0IDAwOjU1OjUyCkBAIC03 Niw3ICs3Niw3IEBAIExPTkdFU1QKIHNjbV9nZXRfZmllbGQgKExPTkdFU1Qg c3ZhbHVlLCBpbnQgaW5kZXgpCiB7CiAgIGNoYXIgYnVmZmVyWzIwXTsKLSAg cmVhZF9tZW1vcnkgKFNDTTJQVFIgKHN2YWx1ZSkgKyBpbmRleCAqIFRZUEVf TEVOR1RIIChidWlsdGluX3R5cGVfc2NtKSwKKyAgcmVhZF9tZW1vcnkgKChD T1JFX0FERFIpKFNDTTJQVFIgKHN2YWx1ZSkgKyBpbmRleCAqIFRZUEVfTEVO R1RIIChidWlsdGluX3R5cGVfc2NtKSksCiAJICAgICAgIGJ1ZmZlciwgVFlQ RV9MRU5HVEggKGJ1aWx0aW5fdHlwZV9zY20pKTsKICAgcmV0dXJuIGV4dHJh Y3Rfc2lnbmVkX2ludGVnZXIgKGJ1ZmZlciwgVFlQRV9MRU5HVEggKGJ1aWx0 aW5fdHlwZV9zY20pKTsKIH0KQEAgLTE1Nyw3ICsxNTcsNyBAQCBzY21fbG9v a3VwX25hbWUgKGNoYXIgKnN0cikKICAgc3RydWN0IHN5bWJvbCAqc3ltOwog ICBhcmdzWzBdID0gdmFsdWVfYWxsb2NhdGVfc3BhY2VfaW5faW5mZXJpb3Ig KGxlbik7CiAgIGFyZ3NbMV0gPSB2YWx1ZV9mcm9tX2xvbmdlc3QgKGJ1aWx0 aW5fdHlwZV9pbnQsIGxlbik7Ci0gIHdyaXRlX21lbW9yeSAodmFsdWVfYXNf bG9uZyAoYXJnc1swXSksIHN0ciwgbGVuKTsKKyAgd3JpdGVfbWVtb3J5ICgo Q09SRV9BRERSKXZhbHVlX2FzX2xvbmcgKGFyZ3NbMF0pLCBzdHIsIGxlbik7 CiAKICAgaWYgKGluX2V2YWxfYyAoKQogICAgICAgJiYgKHN5bSA9IGxvb2t1 cF9zeW1ib2wgKCJlbnYiLApAQCAtMTg5LDkgKzE4OSw5IEBAIHNjbV9ldmFs dWF0ZV9zdHJpbmcgKGNoYXIgKnN0ciwgaW50IGxlbikKICAgc3RydWN0IHZh bHVlICpmdW5jOwogICBzdHJ1Y3QgdmFsdWUgKmFkZHIgPSB2YWx1ZV9hbGxv Y2F0ZV9zcGFjZV9pbl9pbmZlcmlvciAobGVuICsgMSk7CiAgIExPTkdFU1Qg aWFkZHIgPSB2YWx1ZV9hc19sb25nIChhZGRyKTsKLSAgd3JpdGVfbWVtb3J5 IChpYWRkciwgc3RyLCBsZW4pOworICB3cml0ZV9tZW1vcnkgKChDT1JFX0FE RFIpaWFkZHIsIHN0ciwgbGVuKTsKICAgLyogRklYTUUgLSBzaG91bGQgZmlu ZCBhbmQgcGFzcyBlbnYgKi8KLSAgd3JpdGVfbWVtb3J5IChpYWRkciArIGxl biwgIiIsIDEpOworICB3cml0ZV9tZW1vcnkgKChDT1JFX0FERFIpaWFkZHIg KyBsZW4sICIiLCAxKTsKICAgZnVuYyA9IGZpbmRfZnVuY3Rpb25faW5faW5m ZXJpb3IgKCJzY21fZXZzdHIiKTsKICAgcmV0dXJuIGNhbGxfZnVuY3Rpb25f YnlfaGFuZCAoZnVuYywgMSwgJmFkZHIpOwogfQpJbmRleDogc3JjL2dkYi9z Y20tdmFscHJpbnQuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxl OiAvZGV2L2ZzL0gvcnVwcC9kZXZlbC1sb2NhbC1yZXBvc2l0b3J5L3NyYy9n ZGIvc2NtLXZhbHByaW50LmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4x LjEKZGlmZiAtcCAtdSAtcjEuMS4xLjEgc2NtLXZhbHByaW50LmMKLS0tIHNy Yy9nZGIvc2NtLXZhbHByaW50LmMJMjAwMS8xMi8yMyAwMDozNDo1NAkxLjEu MS4xCisrKyBzcmMvZ2RiL3NjbS12YWxwcmludC5jCTIwMDEvMTIvMjQgMDA6 NTU6NTIKQEAgLTE1MSw3ICsxNTEsNyBAQCB0YWxvb3A6CiAgICAgICBpZiAo U0NNX0lDSFJQIChzdmFsdWUpKQogCXsKIAkgIHN2YWx1ZSA9IFNDTV9JQ0hS IChzdmFsdWUpOwotCSAgc2NtX3ByaW50Y2hhciAoc3ZhbHVlLCBzdHJlYW0p OworCSAgc2NtX3ByaW50Y2hhciAoKGludClzdmFsdWUsIHN0cmVhbSk7CiAJ ICBicmVhazsKIAl9CiAgICAgICBlbHNlIGlmIChTQ01fSUZMQUdQIChzdmFs dWUpCkBAIC0yNTIsNyArMjUyLDcgQEAgdGFsb29wOgogCSAgICBpbnQgbGVu ID0gU0NNX0xFTkdUSCAoc3ZhbHVlKTsKIAogCSAgICBjaGFyICpzdHIgPSAo Y2hhciAqKSBhbGxvY2EgKGxlbik7Ci0JICAgIHJlYWRfbWVtb3J5IChTQ01f Q0RSIChzdmFsdWUpLCBzdHIsIGxlbiArIDEpOworCSAgICByZWFkX21lbW9y eSAoKENPUkVfQUREUilTQ01fQ0RSIChzdmFsdWUpLCBzdHIsIGxlbiArIDEp OwogCSAgICAvKiBTaG91bGQgaGFuZGxlIHdlaXJkIGNoYXJhY3RlcnMgRklY TUUgKi8KIAkgICAgc3RyW2xlbl0gPSAnXDAnOwogCSAgICBmcHV0c19maWx0 ZXJlZCAoc3RyLCBzdHJlYW0pOwpJbmRleDogc3JjL2dkYi92YWxhcml0aC5j Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9kZXYvZnMvSC9y dXBwL2RldmVsLWxvY2FsLXJlcG9zaXRvcnkvc3JjL2dkYi92YWxhcml0aC5j LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEuMS4xCmRpZmYgLXAgLXUgLXIx LjEuMS4xIHZhbGFyaXRoLmMKLS0tIHNyYy9nZGIvdmFsYXJpdGguYwkyMDAx LzEyLzIzIDAwOjM0OjU3CTEuMS4xLjEKKysrIHNyYy9nZGIvdmFsYXJpdGgu YwkyMDAxLzEyLzI0IDAwOjU1OjUyCkBAIC0zOCw4ICszOCw4IEBACiAjZGVm aW5lIFRSVU5DQVRJT05fVE9XQVJEU19aRVJPICgoLTUgLyAyKSA9PSAtMikK ICNlbmRpZgogCi1zdGF0aWMgc3RydWN0IHZhbHVlICp2YWx1ZV9zdWJzY3Jp cHRlZF9ydmFsdWUgKHN0cnVjdCB2YWx1ZSAqLCBzdHJ1Y3QgdmFsdWUgKiwg aW50KTsKLQorc3RhdGljIHN0cnVjdCB2YWx1ZSAqdmFsdWVfc3Vic2NyaXB0 ZWRfcnZhbHVlIChzdHJ1Y3QgdmFsdWUgKiwgc3RydWN0IHZhbHVlICosIExP TkdFU1QpOworCiB2b2lkIF9pbml0aWFsaXplX3ZhbGFyaXRoICh2b2lkKTsK IAwKIApAQCAtMjEzLDggKzIxMyw4IEBAIHZhbHVlX3N1YnNjcmlwdCAoc3Ry dWN0IHZhbHVlICphcnJheSwgc3QKICAgIHRvIGRvdWJsZXMsIGJ1dCBubyBs b25nZXIgZG9lcy4gICovCiAKIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgotdmFs dWVfc3Vic2NyaXB0ZWRfcnZhbHVlIChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBz dHJ1Y3QgdmFsdWUgKmlkeCwgaW50IGxvd2VyYm91bmQpCi17Cit2YWx1ZV9z dWJzY3JpcHRlZF9ydmFsdWUgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIHN0cnVj dCB2YWx1ZSAqaWR4LCBMT05HRVNUIGxvd2VyYm91bmQpCit7CiAgIHN0cnVj dCB0eXBlICphcnJheV90eXBlID0gY2hlY2tfdHlwZWRlZiAoVkFMVUVfVFlQ RSAoYXJyYXkpKTsKICAgc3RydWN0IHR5cGUgKmVsdF90eXBlID0gY2hlY2tf dHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAoYXJyYXlfdHlwZSkpOwogICB1 bnNpZ25lZCBpbnQgZWx0X3NpemUgPSBUWVBFX0xFTkdUSCAoZWx0X3R5cGUp OwpAQCAtMTM0Miw3ICsxMzQyLDcgQEAgdmFsdWVfY29tcGxlbWVudCAoc3Ry dWN0IHZhbHVlICphcmcxKQogICAgUmV0dXJuIC0xIGlmIG91dCBvZiByYW5n ZSwgLTIgb3RoZXIgZXJyb3IuICovCiAKIGludAotdmFsdWVfYml0X2luZGV4 IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY2hhciAqdmFsYWRkciwgaW50IGluZGV4 KQordmFsdWVfYml0X2luZGV4IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY2hhciAq dmFsYWRkciwgTE9OR0VTVCBpbmRleCkKIHsKICAgTE9OR0VTVCBsb3dfYm91 bmQsIGhpZ2hfYm91bmQ7CiAgIExPTkdFU1Qgd29yZDsKSW5kZXg6IHNyYy9n ZGIvdmFsb3BzLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog L2Rldi9mcy9IL3J1cHAvZGV2ZWwtbG9jYWwtcmVwb3NpdG9yeS9zcmMvZ2Ri L3ZhbG9wcy5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjIKZGlmZiAtcCAt dSAtcjEuMiB2YWxvcHMuYwotLS0gc3JjL2dkYi92YWxvcHMuYwkyMDAxLzEy LzIzIDAwOjM0OjU3CTEuMS4xLjEKKysrIHNyYy9nZGIvdmFsb3BzLmMJMjAw MS8xMi8yNCAwMDo1NTo1MgpAQCAtMzMxMyw3ICszMzEzLDcgQEAgdmFsdWVf b2ZfdGhpcyAoaW50IGNvbXBsYWluKQogICAgdGhlIG9yaWdpbmFsIEFSUkFZ LiAgKi8KIAogc3RydWN0IHZhbHVlICoKLXZhbHVlX3NsaWNlIChzdHJ1Y3Qg dmFsdWUgKmFycmF5LCBpbnQgbG93Ym91bmQsIGludCBsZW5ndGgpCit2YWx1 ZV9zbGljZSAoc3RydWN0IHZhbHVlICphcnJheSwgTE9OR0VTVCBsb3dib3Vu ZCwgTE9OR0VTVCBsZW5ndGgpCiB7CiAgIHN0cnVjdCB0eXBlICpzbGljZV9y YW5nZV90eXBlLCAqc2xpY2VfdHlwZSwgKnJhbmdlX3R5cGU7CiAgIExPTkdF U1QgbG93ZXJib3VuZCwgdXBwZXJib3VuZCwgb2Zmc2V0OwpJbmRleDogc3Jj L2dkYi92YWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6 IC9kZXYvZnMvSC9ydXBwL2RldmVsLWxvY2FsLXJlcG9zaXRvcnkvc3JjL2dk Yi92YWx1ZS5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEuMS4xCmRpZmYg LXAgLXUgLXIxLjEuMS4xIHZhbHVlLmgKLS0tIHNyYy9nZGIvdmFsdWUuaAky MDAxLzEyLzIzIDAwOjM0OjU3CTEuMS4xLjEKKysrIHNyYy9nZGIvdmFsdWUu aAkyMDAxLzEyLzI0IDAwOjU1OjUyCkBAIC00MTksOCArNDE5LDggQEAgZXh0 ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfYmVpbmdfcmV0dXJuZQogCiBleHRl cm4gc3RydWN0IHZhbHVlICp2YWx1ZV9pbiAoc3RydWN0IHZhbHVlICplbGVt ZW50LCBzdHJ1Y3QgdmFsdWUgKnNldCk7CiAKLWV4dGVybiBpbnQgdmFsdWVf Yml0X2luZGV4IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY2hhciAqYWRkciwgaW50 IGluZGV4KTsKLQorZXh0ZXJuIGludCB2YWx1ZV9iaXRfaW5kZXggKHN0cnVj dCB0eXBlICp0eXBlLCBjaGFyICphZGRyLCBMT05HRVNUIGluZGV4KTsKKwog ZXh0ZXJuIGludCB1c2luZ19zdHJ1Y3RfcmV0dXJuIChzdHJ1Y3QgdmFsdWUg KmZ1bmN0aW9uLCBDT1JFX0FERFIgZnVuY2FkZHIsCiAJCQkJc3RydWN0IHR5 cGUgKnZhbHVlX3R5cGUsIGludCBnY2NfcCk7CiAKQEAgLTU0OSw3ICs1NDks NyBAQCBleHRlcm4gc3RydWN0IHZhbHVlICp2YWx1ZV9jb3B5IChzdHJ1Y3Qg CiAKIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhcnlpbmdfdG9fc2xpY2UgKHN0 cnVjdCB2YWx1ZSAqKTsKIAotZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVf c2xpY2UgKHN0cnVjdCB2YWx1ZSAqLCBpbnQsIGludCk7CitleHRlcm4gc3Ry dWN0IHZhbHVlICp2YWx1ZV9zbGljZSAoc3RydWN0IHZhbHVlICosIExPTkdF U1QsIExPTkdFU1QpOwogCiBleHRlcm4gc3RydWN0IHZhbHVlICpjYWxsX2Z1 bmN0aW9uX2J5X2hhbmQgKHN0cnVjdCB2YWx1ZSAqLCBpbnQsCiAJCQkJCSAg ICBzdHJ1Y3QgdmFsdWUgKiopOwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KUFJJTlRGX0hBU19MT05HX0xPTkcgY2FuIGJlIHRydWUgd2hlbiBD Q19IQVNfTE9OR19MT05HIGlzbid0LCAKYmVjYXVzZSB0aGUgc3ltYm9sIGZv ciA2NC1iaXQgaW50ZWdlciBpc24ndCAibG9uZyBsb25nIiAKKF9faW50NjQg b24gTVNWQykuICAoQ0NfSEFTX0xPTkdfTE9ORyBzZWVtcyB0byBoYXZlIG1v cmUgdG8KZG8gd2l0aCB0aGUgc3BlbGxpbmcgb2YgdGhlIHN5bWJvbCB0aGFu IHRoZSBwcmVzZW5jZSBvZiB0aGUgCmFic3RyYWN0IHR5cGUuKQoKRnJpIERl YyAgMyAxMDowNzoyMCBQU1QgMTk5OSAgRG9ubiBUZXJyeSA8ZG9ubnRlQG1p Y3Jvc29mdC5jb20+CgkqIGV4cHByaW50LmMoZHVtcF9leHByZXNzaW9uKTog VXNlIFBSSU5URl9IQVNfTE9OR19MT05HIGFwcHJvcHJpYXRlbHkuCgkqIHBy aW50Y21kLmMocHJpbnRfY29tbWFuZCk6IExpa2V3aXNlLgoJKiB2YWxwcmlu dC5jKHByaW50X2xvbmdlc3QpOiBMaWtld2lzZS4KCkluZGV4OiBzcmMvZ2Ri L3ByaW50Y21kLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog L2Rldi9mcy9IL3J1cHAvZGV2ZWwtbG9jYWwtcmVwb3NpdG9yeS9zcmMvZ2Ri L3ByaW50Y21kLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4xLjEKZGlm ZiAtcCAtdSAtcjEuMS4xLjEgcHJpbnRjbWQuYwotLS0gc3JjL2dkYi9wcmlu dGNtZC5jCTIwMDEvMTIvMjMgMDA6MzQ6NTIJMS4xLjEuMQorKysgc3JjL2dk Yi9wcmludGNtZC5jCTIwMDEvMTIvMjQgMDA6NTg6MTQKQEAgLTIyNzQsOSAr MjI3NCw5IEBAIHByaW50Zl9jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9t X3R0eSkKIAkgICAgICBicmVhazsKIAkgICAgfQogCSAgY2FzZSBsb25nX2xv bmdfYXJnOgotI2lmIGRlZmluZWQgKENDX0hBU19MT05HX0xPTkcpICYmIGRl ZmluZWQgKFBSSU5URl9IQVNfTE9OR19MT05HKQorI2lmIGRlZmluZWQgKFBS SU5URl9IQVNfTE9OR19MT05HKQogCSAgICB7Ci0JICAgICAgbG9uZyBsb25n IHZhbCA9IHZhbHVlX2FzX2xvbmcgKHZhbF9hcmdzW2ldKTsKKwkgICAgICBM T05HRVNUIHZhbCA9IHZhbHVlX2FzX2xvbmcgKHZhbF9hcmdzW2ldKTsKIAkg ICAgICBwcmludGZfZmlsdGVyZWQgKGN1cnJlbnRfc3Vic3RyaW5nLCB2YWwp OwogCSAgICAgIGJyZWFrOwogCSAgICB9CkluZGV4OiBzcmMvZ2RiL3ZhbHBy aW50LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2Rldi9m cy9IL3J1cHAvZGV2ZWwtbG9jYWwtcmVwb3NpdG9yeS9zcmMvZ2RiL3ZhbHBy aW50LmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4xLjEKZGlmZiAtcCAt dSAtcjEuMS4xLjEgdmFscHJpbnQuYwotLS0gc3JjL2dkYi92YWxwcmludC5j CTIwMDEvMTIvMjMgMDA6MzQ6NTcJMS4xLjEuMQorKysgc3JjL2dkYi92YWxw cmludC5jCTIwMDEvMTIvMjQgMDA6NTg6MTQKQEAgLTMyNSw3ICszMjUsOSBA QCBwcmludF9sb25nZXN0IChzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpCiAg ICAgfQogI2VuZGlmCiAKLSNpZiBkZWZpbmVkIChDQ19IQVNfTE9OR19MT05H KSAmJiBkZWZpbmVkIChQUklOVEZfSEFTX0xPTkdfTE9ORykKKyNpZiBkZWZp bmVkIChQUklOVEZfSEFTX0xPTkdfTE9ORykgCisgIC8qIHdoaWNoIGltcGxp ZXMgY2MgaGFzIFNPTUUgZm9ybSBvZiA2NC1iaXQgaW50ZWdlciwgYnV0IG5v dCBuZWNlc3NhcnkKKyAgICAgc3BlbGxlZCAibG9uZyBsb25nIi4gKi8KICAg c3dpdGNoIChmb3JtYXQpCiAgICAgewogICAgIGNhc2UgJ2QnOgpAQCAtMzY0 LDcgKzM2Niw5IEBAIHByaW50X2xvbmdlc3QgKHN0cnVjdCB1aV9maWxlICpz dHJlYW0sIGkKICAgICBkZWZhdWx0OgogICAgICAgaW50ZXJuYWxfZXJyb3Ig KF9fRklMRV9fLCBfX0xJTkVfXywgImZhaWxlZCBpbnRlcm5hbCBjb25zaXN0 ZW5jeSBjaGVjayIpOwogICAgIH0KLSNlbHNlIC8qICFDQ19IQVNfTE9OR19M T05HIHx8ICFQUklOVEZfSEFTX0xPTkdfTE9ORyAqLworI2VuZGlmCisKKyNp ZiAhZGVmaW5lZCAoQ0NfSEFTX0xPTkdfTE9ORykgJiYgIWRlZmluZWQgKFBS SU5URl9IQVNfTE9OR19MT05HKQogICAvKiBJbiB0aGUgZm9sbG93aW5nIGl0 IGlzIGltcG9ydGFudCB0byBjb2VyY2UgKHZhbF9sb25nKSB0byBhIGxvbmcu IEl0IGRvZXMKICAgICAgbm90aGluZyBpZiAhTE9OR19MT05HLCBidXQgaXQg d2lsbCBjaG9wIG9mZiB0aGUgdG9wIGhhbGYgKHdoaWNoIHdlIGtub3cKICAg ICAgd2UgY2FuIGlnbm9yZSkgaWYgdGhlIGhvc3Qgc3VwcG9ydHMgbG9uZyBs b25ncy4gICovCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpQcm9i bGVtOiBjYWxscyB0byB0aGUgaW5mZXJpb3IncyBtYWxsb2MoKSAoYXMgbmVl ZGVkIGJ5IGdkYiBpdHNlbGYKdXBvbiBvY2Nhc2lvbikgd2VyZW4ndCB3b3Jr aW5nLiAgQ2F1c2U6IHRoZSAoY29mZikgc3ltYm9sIHRhYmxlCnRob3VnaHQg aXQgd2FzIG9mIHJldHVybiB0eXBlIFRfTlVMTCwgd2hpY2ggaXMgZXF1aXZh bGVudCB0byBUX1ZPSUQuCihPY2N1cnMgd2hlbiBsaW5raW5nIHN0cmlwcGVk LCBNU1ZDLWdlbmVyYXRlZCAubyBmaWxlcywgYmVjYXVzZQpNU1ZDIGRvZXNu J3QgZmlsbCBpbiB0aGUgZnVuY3Rpb24gdHlwZS4pCgpGaXg6IGNoYW5nZSBj b2ZmcmVhZC5jIHRvIHJlY29nbml6ZSBUX05VTEwgZnVuY3Rpb25zIGFuZCBt YWtlIHRoZW0KVF9JTlQgZnVuY3Rpb25zICh3aGljaCBpcyBpbiBnZW5lcmFs IG1vcmUgbGlrZWx5IGFueXdheS4pCgpGcmkgRGVjICAzIDEwOjA3OjIwIFBT VCAxOTk5ICBEb25uIFRlcnJ5IDxkb25udGVAbWljcm9zb2Z0LmNvbT4KCSog Y29mZnJlYWQuYyhwcm9jZXNzX2NvZmZfc3ltYm9sKTogVHJlYXQgVF9OVUxM IGZ1bmN0aW9uIGFzCglUX0lOVCBmb3IgaW50ZXJuYWwgY2FsbHMuCgpJbmRl eDogc3JjL2dkYi9jb2ZmcmVhZC5jCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K UkNTIGZpbGU6IC9kZXYvZnMvSC9ydXBwL2RldmVsLWxvY2FsLXJlcG9zaXRv cnkvc3JjL2dkYi9jb2ZmcmVhZC5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAx LjMKZGlmZiAtcCAtdSAtcjEuMyBjb2ZmcmVhZC5jCi0tLSBzcmMvZ2RiL2Nv ZmZyZWFkLmMJMjAwMS8xMi8yMyAyMzo1MDo1MAkxLjMKKysrIHNyYy9nZGIv Y29mZnJlYWQuYwkyMDAxLzEyLzI0IDAxOjEwOjQ2CkBAIC0xNTMyLDggKzE1 MzIsMjEgQEAgcHJvY2Vzc19jb2ZmX3N5bWJvbCAocmVnaXN0ZXIgc3RydWN0 IGNvZgogICBpZiAoSVNGQ04gKGNzLT5jX3R5cGUpKQogICAgIHsKICAgICAg IFNZTUJPTF9WQUxVRSAoc3ltKSArPSBBTk9GRlNFVCAob2JqZmlsZS0+c2Vj dGlvbl9vZmZzZXRzLCBTRUNUX09GRl9URVhUIChvYmpmaWxlKSk7Ci0gICAg ICBTWU1CT0xfVFlQRSAoc3ltKSA9Ci0JbG9va3VwX2Z1bmN0aW9uX3R5cGUg KGRlY29kZV9mdW5jdGlvbl90eXBlIChjcywgY3MtPmNfdHlwZSwgYXV4KSk7 CisjaWZkZWYgQ09GRl9JTUFHRV9XSVRIX1BFCisgICAgICAvKiBJZiB3ZSBn ZXQgYSAiZnVuY3Rpb24gcmV0dXJuaW5nIFRfTlVMTCIgaXQncyBwcm9iYWJs eSBmcm9tCisJIE1TVkMsIGFuZCBhbHRobyB3ZSBjYW4ndCBzYXkgbXVjaCBh Ym91dCBpdCwgaXQncyB1bmxpa2VseQorCSB0aGF0IGl0IHJlYWxseSByZXR1 cm5zIG5vdGhpbmc7IHNvIHdlJ2xsIGd1ZXNzIGFuZCBzYXkgaXQKKwkgcmV0 dXJucyBhbiBpbnRlZ2VyIChvciBwb2ludGVyKS4gIFRoaXMgd291bGQgbW9z dGx5IGJlIGEKKwkgbnVpc2FuY2UgZXhjZXB0IHRoYXQgdmFsdWVfYWxsb2Nh dGVfc3BhY2VfaW5faW5mZXJpb3IKKwkgbmVlZHMgc29tZXdoYXQgbWVhbmlu Z2Z1bCB0eXBlIGluZm9ybWF0aW9uIChhdCBsZWFzdCBhIHNpemUpCisJIHRv IHN1Y2Nlc3NmdWxseSBkbyB0aGluZ3Mgc3VjaCBhcyAncHJpbnQgImZvbyIn LiAqLworICAgICAgaWYgKGNzLT5jX3R5cGUgPT0gKFRfTlVMTCB8IChEVF9G Q04gPDwgTl9CVFNIRlQpKSkKKwkgIFNZTUJPTF9UWVBFKHN5bSkgPSBsb29r dXBfZnVuY3Rpb25fdHlwZSAoCisJICAgIGRlY29kZV9mdW5jdGlvbl90eXBl IChjcywgKFRfSU5UIHwgKERUX0ZDTiA8PCBOX0JUU0hGVCkpLCBhdXgpKTsK KyAgICAgIGVsc2UKKyNlbmRpZgorCSAgU1lNQk9MX1RZUEUgKHN5bSkgPQor CSAgICBsb29rdXBfZnVuY3Rpb25fdHlwZSAoZGVjb2RlX2Z1bmN0aW9uX3R5 cGUgKGNzLCBjcy0+Y190eXBlLCBhdXgpKTsKIAogICAgICAgU1lNQk9MX0NM QVNTIChzeW0pID0gTE9DX0JMT0NLOwogICAgICAgaWYgKGNzLT5jX3NjbGFz cyA9PSBDX1NUQVQgfHwgY3MtPmNfc2NsYXNzID09IENfVEhVTUJTVEFUCi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbiBjb2ZmX3N5bXRhYl9y ZWFkIGEgbnVtYmVyIG9mIHR5cGVzIGFyZSBmdW5uZWxlZCB0b2dldGhlciBp biBhCnRoZSAnY2FzZScgZm9yIENfRVhUOyBzZXZlcmFsLCBidXQgbm90IGFs bCwgbmVlZCB0byBoYXZlIHRoZWlyCm1zX3R5cGUgc2V0LiAgQWRkIGNvZGUg dG8gc29ydCB0aGlzIG91dCBmb3IgUEUuICBUaGUKY2hhbmdlIG1heSBiZSBh cHBsaWNhYmxlIHRvIG90aGVyIHN5c3RlbXMuICAoVGhpcyBhbHNvIHNpbXBs aWZpZXMKc29tZSBjYXNlcyBmb3IgQ19USFVNQiouKQoKRnJpIERlYyAgMyAx MDowNzoyMCBQU1QgMTk5OSAgRG9ubiBUZXJyeSA8ZG9ubnRlQG1pY3Jvc29m dC5jb20+CgkqIGNvZmZyZWFkLmMoY29mZl9zeW10YWJfcmVhZCk6IHVzZSBz eW1ib2xpYyBuYW1lIGZvciBOX0RFQlVHLgoJKGNvZmZfc3ltdGFiX3JlYWQp OiBGb3IgUEUsIHJlY29nbml6ZSBzZXZlcmFsIHN0b3JhZ2UgY2xhc3NlcwoJ YXMgZXh0ZXJuYWwgZm9yIHB1cnBvc2VzIG9mIHNldHRpbmcgbXNfdHlwZS4K CkluZGV4OiBzcmMvZ2RiL2NvZmZyZWFkLmMKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQpSQ1MgZmlsZTogL2Rldi9mcy9IL3J1cHAvZGV2ZWwtbG9jYWwtcmVw b3NpdG9yeS9zcmMvZ2RiL2NvZmZyZWFkLmMsdgpyZXRyaWV2aW5nIHJldmlz aW9uIDEuNApkaWZmIC1wIC11IC1yMS40IGNvZmZyZWFkLmMKLS0tIHNyYy9n ZGIvY29mZnJlYWQuYwkyMDAxLzEyLzI0IDAxOjExOjM3CTEuNAorKysgc3Jj L2dkYi9jb2ZmcmVhZC5jCTIwMDEvMTIvMjQgMDE6MTI6MTEKQEAgLTkzNSwy NCArOTM1LDM2IEBAIGNvZmZfc3ltdGFiX3JlYWQgKGxvbmcgc3ltdGFiX29m ZnNldCwgdW4KIAkJdG1wYWRkciA9IHJlbGFkZHI7CiAJCS8qIFRoZSBhZGRy ZXNzIGhhcyBhbHJlYWR5IGJlZW4gcmVsb2NhdGVkOyBtYWtlIHN1cmUgdGhh dAogCQkgICBvYmpmaWxlX3JlbG9jYXRlIGRvZXNuJ3QgcmVsb2NhdGUgaXQg YWdhaW4uICAqLwotCQlzZWMgPSAtMjsKKwkJc2VjID0gTl9ERUJVRzsKIAkJ bXNfdHlwZSA9IGNzLT5jX3NjbGFzcyA9PSBDX0VYVAogCQkgIHx8IGNzLT5j X3NjbGFzcyA9PSBDX1RIVU1CRVhUID8KIAkJICBtc3RfYnNzIDogbXN0X2Zp bGVfYnNzOwogCSAgICAgIH0KIAkgICAgZWxzZQogCSAgICAgIHsKKwkgICAg ICAgIGludCBleHRlcm5hbF9jbGFzcyA9IDA7CiAJCXNlYyA9IGNzX3RvX3Nl Y3Rpb24gKGNzLCBvYmpmaWxlKTsKIAkJdG1wYWRkciA9IGNzLT5jX3ZhbHVl OwogCQlpZiAoY3MtPmNfc2NsYXNzID09IENfRVhUIHx8IGNzLT5jX3NjbGFz cyA9PSBDX1RIVU1CRVhURlVOQwogCQkgICAgfHwgY3MtPmNfc2NsYXNzID09 IENfVEhVTUJFWFQpCi0gCQkgIHRtcGFkZHIgKz0gQU5PRkZTRVQgKG9iamZp bGUtPnNlY3Rpb25fb2Zmc2V0cywgc2VjKTsKKwkJICB7CisJCSAgICB0bXBh ZGRyICs9IEFOT0ZGU0VUIChvYmpmaWxlLT5zZWN0aW9uX29mZnNldHMsIHNl Yyk7CisJCSAgICBleHRlcm5hbF9jbGFzcyA9IDE7CisJCSAgfQorI2lmZGVm IENPRkZfSU1BR0VfV0lUSF9QRQorCQkvKiB0aGlzIG1heSBiZSBhIGdlbmVy YWwgY2hhbmdlICovCisJCWlmIChjcy0+Y19zY2xhc3MgPT0gQ19TVEFUIHx8 IGNzLT5jX3NjbGFzcyA9PSBDX0xBQkVMIHx8CisJCSAgICBjcy0+Y19zY2xh c3MgPT0gQ19TRUNUSU9OKQorCQkgIHsKKwkJICAgIHRtcGFkZHIgKz0gQU5P RkZTRVQgKG9iamZpbGUtPnNlY3Rpb25fb2Zmc2V0cywgc2VjKTsKKwkJICAg IGV4dGVybmFsX2NsYXNzID0gMTsKKwkJICB9CisjZW5kaWYKIAogCQlpZiAo c2VjID09IFNFQ1RfT0ZGX1RFWFQgKG9iamZpbGUpKQogCQkgIHsKIAkJICAg IG1zX3R5cGUgPQotCQkgICAgICBjcy0+Y19zY2xhc3MgPT0gQ19FWFQgfHwg Y3MtPmNfc2NsYXNzID09IENfVEhVTUJFWFRGVU5DCi0JCSAgICAgIHx8IGNz LT5jX3NjbGFzcyA9PSBDX1RIVU1CRVhUID8KKwkJICAgICAgY3MtPmNfc2Ns YXNzID09IGV4dGVybmFsX2NsYXNzID8gCiAJCSAgICAgIG1zdF90ZXh0IDog bXN0X2ZpbGVfdGV4dDsKICNpZmRlZiBTTUFTSF9URVhUX0FERFJFU1MKIAkJ ICAgIGlmICh0bXBhZGRyICYgMSkJLyogRklYTUU6IGRlbGV0ZSB0aGlzIGxp bmUgKi8KQEAgLTk2MiwxMyArOTc0LDEzIEBAIGNvZmZfc3ltdGFiX3JlYWQg KGxvbmcgc3ltdGFiX29mZnNldCwgdW4KIAkJZWxzZSBpZiAoc2VjID09IFNF Q1RfT0ZGX0RBVEEgKG9iamZpbGUpKQogCQkgIHsKIAkJICAgIG1zX3R5cGUg PQotCQkgICAgICBjcy0+Y19zY2xhc3MgPT0gQ19FWFQgfHwgY3MtPmNfc2Ns YXNzID09IENfVEhVTUJFWFQgPworCQkgICAgICBjcy0+Y19zY2xhc3MgPT0g ZXh0ZXJuYWxfY2xhc3MgPwogCQkgICAgICBtc3RfZGF0YSA6IG1zdF9maWxl X2RhdGE7CiAJCSAgfQogCQllbHNlIGlmIChzZWMgPT0gU0VDVF9PRkZfQlNT IChvYmpmaWxlKSkKIAkJICB7CiAJCSAgICBtc190eXBlID0KLQkJICAgICAg Y3MtPmNfc2NsYXNzID09IENfRVhUIHx8IGNzLT5jX3NjbGFzcyA9PSBDX1RI VU1CRVhUID8KKwkJICAgICAgY3MtPmNfc2NsYXNzID09IGV4dGVybmFsX2Ns YXNzID8KIAkJICAgICAgbXN0X2RhdGEgOiBtc3RfZmlsZV9kYXRhOwogCQkg IH0KIAkJZWxzZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUEUg Zm9ybWF0IHNwZWNpZmljIHBhdGNoZXMuCgpUSElTIE1BWSBCRSBBIFNFUCBQ QVRDSDoKY29mZnJlYWQuYy9kZWNvZGVfZnVuY3Rpb25fdHlwZSgpOiBBbHdh eXMgKHdoeSB3YXMgdGhpcwpldmVyIGNvbmRpdGlvbmFsPykgc3RlcCBvbiB0 aGUgYXV4IHN5bWJvbHMgd2hlbiBkZWNvZGluZwp0aGUgcmV0dXJuIHR5cGUg b2YgYSBmdW5jdGlvbjsgdGhlIGF1eCBlbnRyeSBhbHdheXMgcmVmZXJzCnRv IHRoZSBmdW5jdGlvbiBpdHNlbGYuICAoSW50ZXJhY3Rpb24gd2l0aCB0aGUg YWJvdmUgZml4OyB3aXRoCnRoZSBhdXggZW50cmllcyBwcmVzZW50LCB0aGUg ZnVuY3Rpb24gdHlwZSB3YXMgYmVpbmcgZGVjb2RlZCBhcwphIHBvaW50ZXIg dG8gYW4gdW5kZWZpbmVkIHN0cnVjdHVyZSEpCgpJZiBQRSBpcyBkb25lIGNv cnJlY3RseSwgdGhlcmUgaXMgbm8gbmVlZCB0byBoYW5kbGUgYSBzcGVjaWFs IGNhc2UKZm9yIG9mZnNldHMuICAoVGhpcyBpbnRlcmFjdHMgd2l0aCB0aGUg SWFuIHBhdGNoLikKCkZyaSBEZWMgIDMgMTA6MDc6MjAgUFNUIDE5OTkgIERv bm4gVGVycnkgPGRvbm50ZUBtaWNyb3NvZnQuY29tPgoJKiBjb2ZmcmVhZC5j KGNvZmZfc3ltdGFiX3JlYWQpOiBQRSBkb2Vzbid0IGNvIENfTElORSwgQ19B TElBUywKCUFkZCBDX1NFQ1RJT04gZm9yIERMTHMuCgkoZW50ZXJfbGluZW5v cyk6IE1TIExpbmUgbnVtYmVycyBhcmUgb2ZmIGJ5IG9uZS4KCShkZWNvZGVf ZnVuY3Rpb25fdHlwZSk6IGRvbid0IG1pcy1kZWNvZGUgZnVuY3Rpb24gdHlw ZXMuCgkocmVhZF9vbmVfc3ltKTogUmVtb3ZlIHNwZWNpYWwgY2FzZSBmb3Ig UEUKCkluZGV4OiBzcmMvZ2RiL2NvZmZyZWFkLmMKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQpSQ1MgZmlsZTogL2Rldi9mcy9IL3J1cHAvZGV2ZWwtbG9jYWwt cmVwb3NpdG9yeS9zcmMvZ2RiL2NvZmZyZWFkLmMsdgpyZXRyaWV2aW5nIHJl dmlzaW9uIDEuNQpkaWZmIC1wIC11IC1yMS41IGNvZmZyZWFkLmMKLS0tIHNy Yy9nZGIvY29mZnJlYWQuYwkyMDAxLzEyLzI0IDAxOjEzOjExCTEuNQorKysg c3JjL2dkYi9jb2ZmcmVhZC5jCTIwMDEvMTIvMjQgMDE6MTM6MzkKQEAgLTgz OSw4ICs4MzksMTAgQEAgY29mZl9zeW10YWJfcmVhZCAobG9uZyBzeW10YWJf b2Zmc2V0LCB1bgogCWNhc2UgQ19FWFRERUY6CiAJY2FzZSBDX1VMQUJFTDoK IAljYXNlIENfVVNUQVRJQzoKKyNpZm5kZWYgQ09GRl9JTUFHRV9XSVRIX1BF CiAJY2FzZSBDX0xJTkU6CiAJY2FzZSBDX0FMSUFTOgorI2VuZGlmCiAJY2Fz ZSBDX0hJRERFTjoKIAkgIGNvbXBsYWluICgmYmFkX3NjbGFzc19jb21wbGFp bnQsIGNzLT5jX25hbWUpOwogCSAgYnJlYWs7CkBAIC04NzIsNiArODc0LDkg QEAgY29mZl9zeW10YWJfcmVhZCAobG9uZyBzeW10YWJfb2Zmc2V0LCB1bgog CSAgICAgc28gZmlsdGVyIHRoZW0gb3V0IChmcm9tIHBoZG1AbWFjcWVsLmJl KS4gKi8KIAkgIGlmICh3aXRoaW5fZnVuY3Rpb24pCiAJICAgIGJyZWFrOwor I2lmZGVmIENPRkZfSU1BR0VfV0lUSF9QRQorCWNhc2UgQ19TRUNUSU9OOiAg LyogZm91bmQgaW4gc29tZSBETEwgbGlicyAqLworI2VuZGlmCiAJY2FzZSBD X1NUQVQ6CiAJY2FzZSBDX1RIVU1CTEFCRUw6CiAJY2FzZSBDX1RIVU1CU1RB VDoKQEAgLTE0MTYsOCArMTQyMywxNCBAQCBlbnRlcl9saW5lbm9zIChsb25n IGZpbGVfb2Zmc2V0LCByZWdpc3RlCiAKICAgLyogc2tpcCBmaXJzdCBsaW5l IGVudHJ5IGZvciBlYWNoIGZ1bmN0aW9uICovCiAgIHJhd3B0ciArPSBsb2Nh bF9saW5lc3o7CisjaWZkZWYgQ09GRl9JTUFHRV9XSVRIX1BFCisgIC8qIE1T IFBFIGZvcm1hdCBoYXMgdGhlIGxhc3QgbGluZSAoaW4gLmVmKSBhcyBhIGZp bGUgbGluZSBudW1iZXIsIG5vdAorICAgICBhIHJlbGF0aXZlIG9uZTsgY29t cGVuc2F0ZS4gIEFsc28sIHRoZSBzdGFydCBpcyAwIGJhc2VkIGFscmVhZHku ICovCisgIGxhc3RfbGluZSA9IChsYXN0X2xpbmUgLSBmaXJzdF9saW5lKSAr IDE7CisjZWxzZQogICAvKiBsaW5lIG51bWJlcnMgc3RhcnQgYXQgb25lIGZv ciB0aGUgZmlyc3QgbGluZSBvZiB0aGUgZnVuY3Rpb24gKi8KICAgZmlyc3Rf bGluZS0tOworI2VuZGlmCiAKICAgZm9yICg7OykKICAgICB7CkBAIC0xODQw LDggKzE4NTMsOSBAQCBzdGF0aWMgc3RydWN0IHR5cGUgKgogZGVjb2RlX2Z1 bmN0aW9uX3R5cGUgKHJlZ2lzdGVyIHN0cnVjdCBjb2ZmX3N5bWJvbCAqY3Ms IHVuc2lnbmVkIGludCBjX3R5cGUsCiAJCSAgICAgIHJlZ2lzdGVyIHVuaW9u IGludGVybmFsX2F1eGVudCAqYXV4KQogewotICBpZiAoYXV4LT54X3N5bS54 X3RhZ25keC5sID09IDApCi0gICAgY3MtPmNfbmF1eCA9IDA7CQkvKiBhdXhl bnQgcmVmZXJzIHRvIGZ1bmN0aW9uLCBub3QgYmFzZSB0eXBlICovCisgIC8q IGlmIChhdXgtPnhfc3ltLnhfdGFnbmR4LmwgPT0gMCkgKi8KKyAgY3MtPmNf bmF1eCA9IDA7CS8qIGF1eGVudCByZWZlcnMgdG8gZnVuY3Rpb24sIG5vdCBi YXNlIHR5cGU7CisgICAgIGRvbid0IGdldCBjb25mdXNlZCBieSB0aGUgbGlu ZSBudW1iZXJzLCBldGMuICovCiAKICAgcmV0dXJuIGRlY29kZV90eXBlIChj cywgREVDUkVGIChjX3R5cGUpLCBhdXgpOwogfQotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KQ19GSUxFIGVudHJpZXMgaW4gTVNWQyBhcmUgbXVs dGlwbGUgQVVYIGVudHJpZXMsIHJhdGhlciB0aGFuCmEgc3RyaW5nIHRhYmxl IGVudHJ5LiAgSGFuZGxlIHRoYXQuCgpOb3RlIGluY2lkZW50YWwgZml4IG9m IFwgZmlsZSBzZXBhcmF0b3JzLgoKRnJpIERlYyAgMyAxMDowNzoyMCBQU1Qg MTk5OSAgRG9ubiBUZXJyeSA8ZG9ubnRlQG1pY3Jvc29mdC5jb20+CgkqIGNv ZmZyZWFkLmMoY29mZl9zeW1maWxlX3JlYWQpOiAgQWRkIEFVWCBjb3VudCwg dXNlIHRvIGdldAoJZmlsZW5hbWUuIChyZWFkX29uZV9zeW0pOiBVc2UgYXV4 IGNvdW50IGZvciBDX0ZJTEUuICAKCShjb2ZmX2dldF9maWxlbmFtZSk6IFVz ZSBhdXggY291bnQsIHRvIGdldCB0byBmaWxlbmFtZSBpbgoJQVVYIGVudHJp ZXMuICBBbHNvIHJlY29nbml6ZSBcIHNlcGFyYXRvcnMuCgpJbmRleDogc3Jj L2dkYi9jb2ZmcmVhZC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp bGU6IC9kZXYvZnMvSC9ydXBwL2RldmVsLWxvY2FsLXJlcG9zaXRvcnkvc3Jj L2dkYi9jb2ZmcmVhZC5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjYKZGlm ZiAtcCAtdSAtcjEuNiBjb2ZmcmVhZC5jCi0tLSBzcmMvZ2RiL2NvZmZyZWFk LmMJMjAwMS8xMi8yNCAwMToxNTo0NgkxLjYKKysrIHNyYy9nZGIvY29mZnJl YWQuYwkyMDAxLzEyLzI0IDAxOjE2OjI3CkBAIC0yMDcsNyArMjA3LDcgQEAg c3RhdGljIGludCBpbml0X2xpbmVubyAoYmZkICosIGxvbmcsIGludAogCiBz dGF0aWMgY2hhciAqZ2V0c3ltbmFtZSAoc3RydWN0IGludGVybmFsX3N5bWVu dCAqKTsKIAotc3RhdGljIGNoYXIgKmNvZmZfZ2V0ZmlsZW5hbWUgKHVuaW9u IGludGVybmFsX2F1eGVudCAqKTsKK3N0YXRpYyBjaGFyICpjb2ZmX2dldGZp bGVuYW1lICh1bmlvbiBpbnRlcm5hbF9hdXhlbnQgKiwgaW50KTsKIAogc3Rh dGljIHZvaWQgZnJlZV9zdHJpbmd0YWIgKHZvaWQpOwogCkBAIC02MTIsOCAr NjEyLDkgQEAgY29mZl9zeW1maWxlX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpv YmpmaQogCiAgIC8qIEFsbG9jYXRlIHNwYWNlIGZvciByYXcgc3ltYm9sIGFu ZCBhdXggZW50cmllcywgYmFzZWQgb24gdGhlaXIKICAgICAgc3BhY2UgcmVx dWlyZW1lbnRzIGFzIHJlcG9ydGVkIGJ5IEJGRC4gICovCisgIC8qIGFsbG9j YXRlIEJVRlNJWiB3b3J0aCBtb3JlIGVudHJpZXMuLi4gc2VlIENfRklMRSBm b3Igd2h5ICovCiAgIHRlbXBfc3ltID0gKGNoYXIgKikgeG1hbGxvYwotICAg IChjZGF0YS0+bG9jYWxfc3ltZXN6ICsgY2RhdGEtPmxvY2FsX2F1eGVzeik7 CisJIChjZGF0YS0+bG9jYWxfc3ltZXN6ICsgbG9jYWxfYXV4ZXN6KihCVUZT SVovbG9jYWxfYXV4ZXN6KzEpKTsKICAgdGVtcF9hdXggPSB0ZW1wX3N5bSAr IGNkYXRhLT5sb2NhbF9zeW1lc3o7CiAgIGJhY2tfdG8gPSBtYWtlX2NsZWFu dXAgKGZyZWVfY3VycmVudF9jb250ZW50cywgJnRlbXBfc3ltKTsKIApAQCAt ODUyLDcgKzg1Myw3IEBAIGNvZmZfc3ltdGFiX3JlYWQgKGxvbmcgc3ltdGFi X29mZnNldCwgdW4KIAkgICAgIG9yIHN5bW51bSBvZiBmaXJzdCBnbG9iYWwg YWZ0ZXIgbGFzdCAuZmlsZS4gICovCiAJICBuZXh0X2ZpbGVfc3ltbnVtID0g Y3MtPmNfdmFsdWU7CiAJICBpZiAoY3MtPmNfbmF1eCA+IDApCi0JICAgIGZp bGVzdHJpbmcgPSBjb2ZmX2dldGZpbGVuYW1lICgmbWFpbl9hdXgpOworCSAg ICAgIGZpbGVzdHJpbmcgPSBjb2ZmX2dldGZpbGVuYW1lICgmbWFpbl9hdXgs IGNzLT5jX25hdXgpOwogCSAgZWxzZQogCSAgICBmaWxlc3RyaW5nID0gIiI7 CiAKQEAgLTExODksOCArMTE5MCwxMCBAQCByZWFkX29uZV9zeW0gKHJlZ2lz dGVyIHN0cnVjdCBjb2ZmX3N5bWJvCiAJCQkgICAgMCwgY3MtPmNfbmF1eCwg KGNoYXIgKikgYXV4KTsKICAgICAgIC8qIElmIG1vcmUgdGhhbiBvbmUgYXV4 IGVudHJ5LCByZWFkIHBhc3QgaXQgKG9ubHkgdGhlIGZpcnN0IGF1eAogICAg ICAgICAgaXMgaW1wb3J0YW50KS4gKi8KKyAgICAgIC8qIG5vdCByZWFsbHku Li4gcHV0IHRoZSByZXN0IHdoZXJlIHdlIGNhbiBmaW5kIHRoZW0gZm9yIHRo ZSBtb21lbnQsCisgICAgICAgICBzZWUgQ19GSUxFICovCiAgICAgICBmb3Ig KGkgPSAxOyBpIDwgY3MtPmNfbmF1eDsgaSsrKQotCWJmZF9icmVhZCAodGVt cF9hdXgsIGxvY2FsX2F1eGVzeiwgbmxpc3RfYmZkX2dsb2JhbCk7CisJYmZk X2JyZWFkICgmdGVtcF9hdXhbaSpsb2NhbF9hdXhlc3pdLCBsb2NhbF9hdXhl c3osIG5saXN0X2JmZF9nbG9iYWwpOwogICAgIH0KICAgY3MtPmNfbmFtZSA9 IGdldHN5bW5hbWUgKHN5bSk7CiAgIGNzLT5jX3ZhbHVlID0gc3ltLT5uX3Zh bHVlOwpAQCAtMTMyMSwyNyArMTMyNCwzNSBAQCBnZXRzeW1uYW1lIChzdHJ1 Y3QgaW50ZXJuYWxfc3ltZW50ICpzeW1iCiAgICBvbmx5IHRoZSBsYXN0IGNv bXBvbmVudCBvZiB0aGUgbmFtZS4gIFJlc3VsdCBpcyBpbiBzdGF0aWMgc3Rv cmFnZSBhbmQKICAgIGlzIG9ubHkgZ29vZCBmb3IgdGVtcG9yYXJ5IHVzZS4g ICovCiAKKy8qIFRoZSBNU1ZDIEMgbWlnaHQgY2hvb3NlIHRvIHVzZSBtb3Jl IHRoYW4gb25lIEFVWCBlbnRyeSAhICovCisKIHN0YXRpYyBjaGFyICoKLWNv ZmZfZ2V0ZmlsZW5hbWUgKHVuaW9uIGludGVybmFsX2F1eGVudCAqYXV4X2Vu dHJ5KQorY29mZl9nZXRmaWxlbmFtZSAodW5pb24gaW50ZXJuYWxfYXV4ZW50 ICphdXhfZW50cnksIGludCBuYXV4KQogewogICBzdGF0aWMgY2hhciBidWZm ZXJbQlVGU0laXTsKLSAgcmVnaXN0ZXIgY2hhciAqdGVtcDsKKyAgY2hhciAq dGVtcDEsICp0ZW1wMjsKICAgY2hhciAqcmVzdWx0OwogCiAgIGlmIChhdXhf ZW50cnktPnhfZmlsZS54X24ueF96ZXJvZXMgPT0gMCkKICAgICBzdHJjcHkg KGJ1ZmZlciwgc3RyaW5ndGFiICsgYXV4X2VudHJ5LT54X2ZpbGUueF9uLnhf b2Zmc2V0KTsKICAgZWxzZQogICAgIHsKLSAgICAgIHN0cm5jcHkgKGJ1ZmZl ciwgYXV4X2VudHJ5LT54X2ZpbGUueF9mbmFtZSwgRklMTk1MRU4pOwotICAg ICAgYnVmZmVyW0ZJTE5NTEVOXSA9ICdcMCc7CisgICAgICAvKiBNUyBDIHN0 dWZmcyBtdWx0aXBsZSBBVVggZW50cmllcyByYXRoZXIgdGhhbiBhZGRpbmcK KwkgdG8gdGhlIHN0cmluZyB0YWJsZS4gIEZpc2ggaXQgb3V0IG9mIHRlbXBf YXV4ICovCisgICAgICBzdHJuY3B5IChidWZmZXIsIHRlbXBfYXV4LCBsb2Nh bF9hdXhlc3oqbmF1eCk7CisgICAgICBidWZmZXJbbG9jYWxfYXV4ZXN6Km5h dXhdID0gJ1wwJzsKICAgICB9CiAgIHJlc3VsdCA9IGJ1ZmZlcjsKIAogICAv KiBGSVhNRTogV2Ugc2hvdWxkIG5vdCBiZSB0aHJvd2luZyBhd2F5IHRoZSBp bmZvcm1hdGlvbiBhYm91dCB3aGF0CiAgICAgIGRpcmVjdG9yeS4gIEl0IHNo b3VsZCBnbyBpbnRvIGRpcm5hbWUgb2YgdGhlIHN5bXRhYiwgb3Igc29tZSBz dWNoCiAgICAgIHBsYWNlLiAgKi8KLSAgaWYgKCh0ZW1wID0gc3RycmNociAo cmVzdWx0LCAnLycpKSAhPSBOVUxMKQotICAgIHJlc3VsdCA9IHRlbXAgKyAx OworICB0ZW1wMSA9IHN0cnJjaHIgKHJlc3VsdCwgJy8nKTsKKyAgdGVtcDIg PSBzdHJyY2hyIChyZXN1bHQsICdcXCcpOworICBpZiAodGVtcDIgIT0gTlVM TCAmJiAodGVtcDEgPT0gTlVMTCB8fCB0ZW1wMiA+IHRlbXAxKSkKKyAgICB0 ZW1wMSA9IHRlbXAyOworICBpZiAodGVtcDEgIT0gTlVMTCkKKyAgICByZXN1 bHQgPSB0ZW1wMSArIDE7CiAgIHJldHVybiAocmVzdWx0KTsKIH0KIAwKLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClJlbGlua2luZyB0aGUgcmVz dWx0IG9mIGxkIC1yIGRpZCBub3QgdGFrZSBraW5kbHkgdG8gaGF2aW5nCm11 bHRpcGxlIC50ZXh0IHN5bWJvbHMsIGFzIHJlcXVpcmVkIGJ5IGNvZmZyZWFk L2NvZmZfc3ltdGFiX3JlYWQoKS4KQ2hhbmdlIGNvZmZfc3ltdGFiX3JlYWQo KSB0byBub3QgcmVxdWlyZSAudGV4dDsgaXQgd2FzIGJlaW5nCnVzZWQgdG8g c2VwYXJhdGUgdGhlIHZhcmlvdXMgaW5wdXQgImZpbGVzIiBpbiB0aGUgc3lt Ym9sIHRhYmxlLAphbmQgdG8gcHJvdmlkZSB0aGUgInNlY3Rpb24iIHNpemUg Zm9yIHRoYXQgZmlsZS4gIFVzZSBDX0ZJTEUKYW5kIHRoZSBpbmZvcm1hdGlv biBpbiB0aGUgQVVYIHJlY29yZCBmb3IgdGhlIGZ1bmN0aW9ucyB0byBkZXRl cm1pbmUKdGhlIHNhbWUgaW5mb3JtYXRpb24gd2l0aG91dCByZWZlcmVuY2Ug dG8gdGhlIC50ZXh0LiAgIChNdWx0aXBsZQppbnN0YW5jZXMgb2YgdGhlIHNh bWUgc3ltYm9sIGRvIHNlZW0gd3JvbmcsIHNvIHRoZSBmaXggd2FzIG1hZGUK aGVyZS4pCgpJbmZlcnJpbmcgdGhlIHJhbmdlIG9mIHN5bWJvbHMgZm9yIGEg ImZpbGUiIChDX0ZJTEUgZW50cnkpIG5lZWRlZAp0byBiZSBzbWFydGVyIHRv IGdldCBBbHBoYSB1bndpbmQgd29ya2luZyBhcm91bmQgY3J0MC4gIChTcGVj aWZpY2FsbHksCmlkZW50aWZ5aW5nIHRoZSBmdWxsIHNpemUgb2YgZW50cnlf ZmlsZSkuICBXZSBuZWVkIHRvIGtlZXAgdGhlIHJhbmdlCmZyb20gdGhlIGZp cnN0IGZ1bmN0aW9uIGluIGEgZmlsZSB1bnRpbCB3ZSBmaW5kIGFub3RoZXIg ZmlsZSwgYW5kCm1ha2UgdGhlIHJhbmdlIG9mIHRoZSBwcmlvciBmaWxlIGJl IGZyb20gdGhhdCBzYXZlZCBlbnRyeSB1bnRpbAp0aGUgZmlyc3QgZnVuY3Rp b24gaW4gdGhlIG5ldyBmaWxlLiAgWWVzLCB0aGlzIGlzIGd1ZXNzd29yaywK YnV0IGl0IHdvcmtzLgoKKHJhbmdlX3N5bXRhYiBpcyBhIGNvbnZlbmllbmNl IGZ1bmN0aW9uLikKCkZyaSBEZWMgIDMgMTA6MDc6MjAgUFNUIDE5OTkgIERv bm4gVGVycnkgPGRvbm50ZUBtaWNyb3NvZnQuY29tPgoJKmNvZmZyZWFkLmMo cmFuZ2Vfc3ltdGFiKTogTmV3LCBmb3IgYmVsb3cuCgkoY29tcGxldGVfc3lt dGFiKTogVXNlIChpbmNpZGVudGFsbHkpLgoJKGNvZmZfc3ltdGFiX3JlYWQp OiB1c2UgQ19GSUxFIHRvIHNlcGFyYXRlIG1vZHVsZXM7IHVzZXMgYWJvdmUu CgpJbmRleDogc3JjL2dkYi9jb2ZmcmVhZC5jCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KUkNTIGZpbGU6IC9kZXYvZnMvSC9ydXBwL2RldmVsLWxvY2FsLXJl cG9zaXRvcnkvc3JjL2dkYi9jb2ZmcmVhZC5jLHYKcmV0cmlldmluZyByZXZp c2lvbiAxLjcKZGlmZiAtcCAtdSAtcjEuNyBjb2ZmcmVhZC5jCi0tLSBzcmMv Z2RiL2NvZmZyZWFkLmMJMjAwMS8xMi8yNCAwMToxNzozMwkxLjcKKysrIHNy Yy9nZGIvY29mZnJlYWQuYwkyMDAxLzEyLzI0IDAxOjE4OjA1CkBAIC00Mzks NiArNDM5LDE4IEBAIGNvZmZfc3RhcnRfc3ltdGFiIChjaGFyICpuYW1lKQog ICByZWNvcmRfZGVidWdmb3JtYXQgKCJDT0ZGIik7CiB9CiAKK3N0YXRpYyB2 b2lkCityYW5nZV9zeW10YWIoc3RhcnRfYWRkciwgZW5kX2FkZHIpCisgICAg Q09SRV9BRERSIHN0YXJ0X2FkZHI7CisgICAgQ09SRV9BRERSIGVuZF9hZGRy OworeworICBpZiAoY3VycmVudF9vYmpmaWxlLT5laS5lbnRyeV9wb2ludCA+ PSBzdGFydF9hZGRyICYmCisgICAgICBjdXJyZW50X29iamZpbGUtPmVpLmVu dHJ5X3BvaW50IDwgIGVuZF9hZGRyKQorICAgIHsKKyAgICAgIGN1cnJlbnRf b2JqZmlsZS0+ZWkuZW50cnlfZmlsZV9sb3dwYyA9IHN0YXJ0X2FkZHI7Cisg ICAgICBjdXJyZW50X29iamZpbGUtPmVpLmVudHJ5X2ZpbGVfaGlnaHBjID0g ZW5kX2FkZHI7CisgICAgfQorfQogLyogU2F2ZSB0aGUgdml0YWwgaW5mb3Jt YXRpb24gZnJvbSB3aGVuIHN0YXJ0aW5nIHRvIHJlYWQgYSBmaWxlLAogICAg Zm9yIHVzZSB3aGVuIGNsb3Npbmcgb2ZmIHRoZSBjdXJyZW50IGZpbGUuCiAg ICBOQU1FIGlzIHRoZSBmaWxlIG5hbWUgdGhlIHN5bWJvbHMgY2FtZSBmcm9t LCBTVEFSVF9BRERSIGlzIHRoZSBmaXJzdApAQCAtNDUzLDEyICs0NjUsNyBA QCBjb21wbGV0ZV9zeW10YWIgKGNoYXIgKm5hbWUsIENPUkVfQUREUiBzCiAg IGN1cnJlbnRfc291cmNlX3N0YXJ0X2FkZHIgPSBzdGFydF9hZGRyOwogICBj dXJyZW50X3NvdXJjZV9lbmRfYWRkciA9IHN0YXJ0X2FkZHIgKyBzaXplOwog Ci0gIGlmIChjdXJyZW50X29iamZpbGUtPmVpLmVudHJ5X3BvaW50ID49IGN1 cnJlbnRfc291cmNlX3N0YXJ0X2FkZHIgJiYKLSAgICAgIGN1cnJlbnRfb2Jq ZmlsZS0+ZWkuZW50cnlfcG9pbnQgPCBjdXJyZW50X3NvdXJjZV9lbmRfYWRk cikKLSAgICB7Ci0gICAgICBjdXJyZW50X29iamZpbGUtPmVpLmVudHJ5X2Zp bGVfbG93cGMgPSBjdXJyZW50X3NvdXJjZV9zdGFydF9hZGRyOwotICAgICAg Y3VycmVudF9vYmpmaWxlLT5laS5lbnRyeV9maWxlX2hpZ2hwYyA9IGN1cnJl bnRfc291cmNlX2VuZF9hZGRyOwotICAgIH0KKyAgcmFuZ2Vfc3ltdGFiKGN1 cnJlbnRfc291cmNlX3N0YXJ0X2FkZHIsY3VycmVudF9zb3VyY2VfZW5kX2Fk ZHIpOwogfQogCiAvKiBGaW5pc2ggdGhlIHN5bWJvbCBkZWZpbml0aW9ucyBm b3Igb25lIG1haW4gc291cmNlIGZpbGUsCkBAIC03NjAsNiArNzY3LDMzIEBA IGNvZmZfc3ltdGFiX3JlYWQgKGxvbmcgc3ltdGFiX29mZnNldCwgdW4KICAg aW50IHZhbDsKICAgQ09SRV9BRERSIHRtcGFkZHI7CiAKKyAgLyogT24gdGhl IHVzZSBvZiB0aGUgZm9sbG93aW5nIHN5bWJvbHM6ICBFYXJsaWVyIHZlcnNp b25zIG9mIHRoaXMgcm91dGluZQorICAgICB0cmllZCB0byBrZXkgb2ZmIC50 ZXh0IGVudHJpZXMgdG8gZGV0ZXJtaW5lIHRoZSBzaXplIG9mIGEgImZpbGUi CisgICAgIChhbiBvcmlnaW5hbCBzb3VyY2UgZmlsZSkuICBUaGlzIGltcGxp ZWQgdGhhdCB0aGVyZSB3ZXJlIGFzIG1hbnkKKyAgICAgLnRleHQgZW50cmll cyBhcyB0aGVyZSB3ZXJlIC5vIGZpbGVzIGluIHRoZSBsaW5rLiAgVGhhdCB3 YXMgT0sgYXMKKyAgICAgbG9uZyBhcyBsZCAtciB3YXNuJ3QgaW52b2x2ZWQu ICBMaW5raW5nIHRoZSByZXN1bHQgb2YgbGQgLXIgcmVxdWlyZXMKKyAgICAg dGhhdCB0aGVyZSBiZSBvbmx5IG9uZSAudGV4dCBzeW1ib2wgKG90aGVyd2lz ZSwgd2hpY2ggb25lIGRvIHlvdQorICAgICByZWxvY2F0ZSBhZ2FpbnN0Pykg IChUaGVyZSB3YXMgYWxzbyBhIEZJWE1FIGFnYWluc3QgdXNpbmcgdGhlIHN5 bWJvbAorICAgICAiLnRleHQiIGZvciB0aGF0IGNvbXBhcmlzb24uKSAgVGhl IG9ubHkgaW5mb3JtYXRpb24gdXNlZCBmcm9tIHRoZQorICAgICBtdWx0aXBs ZSAudGV4dCBzeW1ib2xzIHdhcyB0aGUgc2VjdGlvbiBzaXplIHRvIGRldGVy bWluZSB3aGVyZSB0aGUKKyAgICAgY29kZSBlbmRlZC4gIFdpdGggdGhlIC50 ZXh0IHN5bWJvbHMgZ29uZSwgc29tZSBvdGhlciB3YXkgdG8gZGV0ZXJtaW5l CisgICAgIHRoZSBzaXplIGhhZCB0byBiZSBmb3VuZC4gIFRoZSB0aHJlZSBz eW1ib2xzIGJlbG93IGFjY29tcGxpc2ggdGhhdAorICAgICBiYXNlZCBvbiB0 aGUgZnVuY3Rpb24gc3ltYm9scyB0aGVtc2VsdmVzIChhbmQgdGhlIC5lZiwg aWYgcHJlc2VudCkuCisgICAgIGZpcnN0X2Z1bmN0aW9uX3RoaXNfZmlsZSBp cyB0aGUgUlZBIG9mIHRoZSBmaXJzdCBmdW5jdGlvbgorICAgICBmb3VuZCBh ZnRlciBhIENfRklMRSBlbnRyeS4gIG1vc3RfcmVjZW50X2Z1bmN0aW9uX2Vu ZCBpcyB0aGUKKyAgICAgUlZBIG9mIHRoZSBlbmQgb2YgdGhlIG1vc3QgcmVj ZW50IGZ1bmN0aW9uIGZvdW5kLiAgVGhlIHNpemUKKyAgICAgb2YgdGhlICJm aWxlIiBjYW4gYmUgZGV0ZXJtaW5lZCBmcm9tIHRoZSBkaWZmZXJlbmNlIGJl dHdlZW4KKyAgICAgbW9zdF9yZWNlbnRfZnVuY3Rpb25fZW5kIGFuZCBmaXJz dF9mdW5jdGlvbl90aGlzX2ZpbGUuCisKKyAgICAgQSB6ZXJvIHZhbHVlIGZv ciBmaXJzdF9mdW5jdGlvbl90aGlzX2ZpbGUgaW5kaWNhdGVzIHRoYXQgbm8g ZnVuY3Rpb24KKyAgICAgaGFzIGJlZW4gZm91bmQgc2luY2UgdGhlIGxhc3Qg Q19GSUxFIC4gIFRoYXQncyB1c2VkIGJvdGggdG8gY2FwdHVyZQorICAgICB0 aGUgZmlyc3Qgb25lLCBhbmQgdG8gaW5kaWNhdGUgYSAiZmlsZSIgd2l0aCBu byBjb250ZW50LCB3aGljaCBuZWVkcworICAgICB0byBiZSBoYW5kbGVkIHNs aWdodGx5IHNwZWNpYWxseS4gIChNb3JlIG9uIHRoYXQgYmVsb3cuKSAqLwor CisgIENPUkVfQUREUiBmaXJzdF9mdW5jdGlvbl90aGlzX2ZpbGU7CisgIENP UkVfQUREUiBmaXJzdF9mdW5jdGlvbl9sYXN0X2ZpbGU7CisgIENPUkVfQURE UiBtb3N0X3JlY2VudF9mdW5jdGlvbl9lbmQ7CisKICAgLyogV29yayBhcm91 bmQgYSBzdGRpbyBidWcgaW4gU3VuT1M0LjEuMSAodGhpcyBtYWtlcyBtZSBu ZXJ2b3VzLi4uLgogICAgICBpdCdzIGhhcmQgdG8ga25vdyBJJ3ZlIHJlYWxs eSB3b3JrZWQgYXJvdW5kIGl0LiAgVGhlIGZpeCBzaG91bGQgYmUKICAgICAg aGFybWxlc3MsIGFueXdheSkuICBUaGUgc3ltcHRvbSBvZiB0aGUgYnVnIGlz IHRoYXQgdGhlIGZpcnN0CkBAIC03OTQsOCArODI4LDE2IEBAIGNvZmZfc3lt dGFiX3JlYWQgKGxvbmcgc3ltdGFiX29mZnNldCwgdW4KICAgICB4bWFsbG9j ICh0eXBlX3ZlY3Rvcl9sZW5ndGggKiBzaXplb2YgKHN0cnVjdCB0eXBlICop KTsKICAgbWVtc2V0ICh0eXBlX3ZlY3RvciwgMCwgdHlwZV92ZWN0b3JfbGVu Z3RoICogc2l6ZW9mIChzdHJ1Y3QgdHlwZSAqKSk7CiAKKyAgLyogSWYgdGhl IGZpcnN0IGxpbmUgaXNuJ3QgYSBDX0ZJTEUsIGl0J3MgYmVuaWduIHRvIGNy ZWF0ZSBhbiBlbXB0eSBzeW10YWI7CisgICAgIGl0J2xsIGdldCBkaXNjYXJk ZWQgYWxtb3N0IGltbWVkaWF0ZWx5LCBzbyBpZiBpdCBzaW1wbGlmaWVzIHRo ZSBjb2RlLi4uLiAqLwogICBjb2ZmX3N0YXJ0X3N5bXRhYiAoIiIpOwogCisg IGZpcnN0X2Z1bmN0aW9uX3RoaXNfZmlsZSA9IG1vc3RfcmVjZW50X2Z1bmN0 aW9uX2VuZCA9IDA7CisgIC8qIElmIHRoZSBmaXJzdCBmaWxlIChjcnQwLm8p IGlzIG5vdCBkZWJ1Z2dhYmxlICh3aGljaCBpcyBwcm9iYWJseQorICAgICB0 aGUgY2FzZSkgYW5kIHN0YXJ0cyB3aXRoIHN0YXRpYyBmdW5jdGlvbnMgKGFs c28gbGlrZWx5KSwgd2UnbGwKKyAgICAgd2FudCB0byB1c2UgdGhlIGJlZ2lu bmluZyBvZiB0aGUgdGV4dCBzZWN0aW9uIGluc3RlYWQuICovCisgIGZpcnN0 X2Z1bmN0aW9uX2xhc3RfZmlsZSA9IEFOT0ZGU0VUIChvYmpmaWxlLT5zZWN0 aW9uX29mZnNldHMsIFNFQ1RfT0ZGX1RFWFQob2JqZmlsZSkpOworCiAgIHN5 bW51bSA9IDA7CiAgIHdoaWxlIChzeW1udW0gPCBuc3ltcykKICAgICB7CkBA IC04MDMsOCArODQ1LDE4IEBAIGNvZmZfc3ltdGFiX3JlYWQgKGxvbmcgc3lt dGFiX29mZnNldCwgdW4KIAogICAgICAgcmVhZF9vbmVfc3ltIChjcywgJm1h aW5fc3ltLCAmbWFpbl9hdXgpOwogCisgICAgICAvKiBHbG9iYWwgc3ltYm9s cyBhZnRlciB0aGUgbGFzdCBDX0ZJTEUgKi8KICAgICAgIGlmIChjcy0+Y19z eW1udW0gPT0gbmV4dF9maWxlX3N5bW51bSAmJiBjcy0+Y19zY2xhc3MgIT0g Q19GSUxFKQogCXsKKwkgIGlmIChmaXJzdF9mdW5jdGlvbl90aGlzX2ZpbGUg IT0gMCkKKwkgICAgY29tcGxldGVfc3ltdGFiIChmaWxlc3RyaW5nLAorCQkg ICBmaXJzdF9mdW5jdGlvbl90aGlzX2ZpbGUKKwkJCSAgICArIEFOT0ZGU0VU IChvYmpmaWxlLT5zZWN0aW9uX29mZnNldHMsIFNFQ1RfT0ZGX1RFWFQob2Jq ZmlsZSkpLAorCQkgICBtb3N0X3JlY2VudF9mdW5jdGlvbl9lbmQgPT0gMCAK KwkJICAgICAgPyAwOm1vc3RfcmVjZW50X2Z1bmN0aW9uX2VuZCAtIGZpcnN0 X2Z1bmN0aW9uX3RoaXNfZmlsZSk7CisJICBlbHNlCisJICAgIGNvbXBsZXRl X3N5bXRhYiAoZmlsZXN0cmluZywgMCwgMCk7CisKIAkgIGlmIChsYXN0X3Nv dXJjZV9maWxlKQogCSAgICBjb2ZmX2VuZF9zeW10YWIgKG9iamZpbGUpOwog CkBAIC04MjEsMTYgKzg3Myw3MCBAQCBjb2ZmX3N5bXRhYl9yZWFkIChsb25n IHN5bXRhYl9vZmZzZXQsIHVuCiAgICAgICAvKiBUeXBlZGVmcyBzaG91bGQg bm90IGJlIHRyZWF0ZWQgYXMgc3ltYm9sIGRlZmluaXRpb25zLiAgKi8KICAg ICAgIGlmIChJU0ZDTiAoY3MtPmNfdHlwZSkgJiYgY3MtPmNfc2NsYXNzICE9 IENfVFBERUYpCiAJeworCisJICBpZiAoZmlyc3RfZnVuY3Rpb25fdGhpc19m aWxlID09IDApCisJICAgICBmaXJzdF9mdW5jdGlvbl90aGlzX2ZpbGUgPSBj cy0+Y192YWx1ZTsKKwkgIGVsc2UgCisJICAgIHsKKwkgICAgICAvKiBtb3N0 X3JlY2VudF9mdW5jdGlvbiBfbmQgc2hvdWxkIGJlIEFUIExFQVNUIHRoZSBi ZWdpbm5pbmcKKwkJIG9mIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGlmIHdlJ3Jl IG9uIG90aGVyIHRoYW4gdGhlIGZpcnN0CisJCSBmdW5jdGlvbiBpbiB0aGUg ZmlsZS4gIFdlJ2xsIHRyeSB0byBkbyBiZXR0ZXIgYmVsb3cuICovCisJICAg ICBtb3N0X3JlY2VudF9mdW5jdGlvbl9lbmQgPSBjcy0+Y192YWx1ZTsKKwkg ICAgfQorCiAJICAvKiBSZWNvcmQgYWxsIGZ1bmN0aW9ucyAtLSBleHRlcm5h bCBhbmQgc3RhdGljIC0tIGluIG1pbnN5bXMuICovCiAJICB0bXBhZGRyID0g Y3MtPmNfdmFsdWUgKyBBTk9GRlNFVCAob2JqZmlsZS0+c2VjdGlvbl9vZmZz ZXRzLCBTRUNUX09GRl9URVhUIChvYmpmaWxlKSk7CiAgIAkgIHJlY29yZF9t aW5pbWFsX3N5bWJvbCAoY3MtPmNfbmFtZSwgdG1wYWRkciwgbXN0X3RleHQs IG9iamZpbGUsIAogICAJICAgICBjb2ZmX3NlY3Rpb25fZnJvbV9iZmRfaW5k ZXgob2JqZmlsZS0+b2JmZCwgY3MtPmNfc2VjbnVtKSk7CiAKKwkgIGlmIChj cy0+Y19uYXV4ID4gMCkgCisJICAgIHsKKwkgICAgICBmY25fbGluZV9wdHIg PSBtYWluX2F1eC54X3N5bS54X2ZjbmFyeS54X2Zjbi54X2xubm9wdHI7CisJ ICAgICAgZmNuX2F1eF9zYXZlZCA9IG1haW5fYXV4OworCSAgICAgIG1vc3Rf cmVjZW50X2Z1bmN0aW9uX2VuZCA9IGNzLT5jX3ZhbHVlICsKKwkJICBtYWlu X2F1eC54X3N5bS54X21pc2MueF9mc2l6ZTsKKwkgICAgfQorCSAgZWxzZQor CSAgICB7CisJICAgICAgLyogQXV4IGlzIHRyYXNoOyBwcmV0ZW5kIGl0J3Mg emVyb3M7IHRoaXMgY2FuIGhhcHBlbgorCQkgaWYgZGVidWdnaW5nIGlzIHR1 cm5lZCBvZmYgKGF0IGxlYXN0IG9uIE1TVkMpOyBmb3IKKwkJIG1vc3RfcmVj ZW50X2Z1bmN0aW9uX2VuZCB3ZSdsbCB1c2UgemVybyAoYXMgYSBmbGFnKS4K KwkJIEluIHNvbWUgY2FzZXMsIHdlIHVzZSB0aGUgYmVnaW5uaW5nIGFzIGl0 J3MgZ29vZCBlbm91Z2gsCisJCSBidXQgd2hlbiB3ZSBjYW4gaW5mZXIgYSBi ZXR0ZXIgc2l6ZSBhdCB0aGUgYmVnaW5uaW5nIG9mCisJCSB0aGUgbmV4dCBm dW5jdGlvbiwgd2UnbGwgdXNlIHRoYXQuICBUaGF0J3MgT0sgc2luY2Ugd2Ug Y2FuJ3QgCisJCSBkZWJ1ZyBzeW1ib2xpY2FsbHkgYW55d2F5LiAgKEluIHNv bWUgaW5zdGFuY2VzIChQRSkgYSBzaXplIAorCQkgbWlnaHQgYmUgaW4gYW4g LmVmIHJlY29yZCwgYnV0IHNvIGZhciwgLmVmIGFuZCB0aGlzIGF1eCBnbyAK KwkJIHRvZ2V0aGVyIHNvIHRoZXJlJ3Mgbm8gcG9pbnQgaW4gdHJ5aW5nIHRo YXQuKQorCisJCSBGSVhNRTogaWYvd2hlbiB3ZSBzdGFydCBwYXJzaW5nIC5w ZGF0YSwgd2UgY2FuIGRvIE1VQ0gKKwkJIGJldHRlciBpZiBpdCdzIGF2YWls YWJsZS4gICovCisKKwkgICAgICBmY25fbGluZV9wdHIgPSAwOworCSAgICAg IG1lbXNldCgodm9pZCAqKSZmY25fYXV4X3NhdmVkLCAwLCBzaXplb2YoZmNu X2F1eF9zYXZlZCkpOworCSAgICB9CisKIAkgIGZjbl9saW5lX3B0ciA9IG1h aW5fYXV4Lnhfc3ltLnhfZmNuYXJ5LnhfZmNuLnhfbG5ub3B0cjsKIAkgIGZj bl9zdGFydF9hZGRyID0gdG1wYWRkcjsKIAkgIGZjbl9jc19zYXZlZCA9ICpj czsKIAkgIGZjbl9zeW1fc2F2ZWQgPSBtYWluX3N5bTsKIAkgIGZjbl9hdXhf c2F2ZWQgPSBtYWluX2F1eDsKKyAKKyAJICAvKiBJZiBmaXJzdF9mdW5jdGlv bl9sYXN0IGZpbGUgaXMgbm9uemVybywgd2UgaGFkIGdvdHRlbiBhIHNpemVs ZXNzCisgCSAgICAgZnVuY3Rpb24gZWFybGllcjsgIHdlIGtlZXAgZ29pbmcg dW50aWwgd2UgRE8gZ2V0IGEgc2l6ZSwgYW5kIAorIAkgICAgIHByZXN1bWUg dGhhdCBldmVydGhpbmcgaW4gdGhlIHJhbmdlIHVwIHRvIHRoZSBjdXJyZW50 IGZ1bmN0aW9uCisgCSAgICAgaXMgYSBzaW5nbGUgZmlsZS4gKi8KKyAJICBp ZiAobW9zdF9yZWNlbnRfZnVuY3Rpb25fZW5kICE9IDApCisgCSAgICB7Cisg CSAgICAgIGlmIChmaXJzdF9mdW5jdGlvbl9sYXN0X2ZpbGUgIT0gMCkKKyAJ CSByYW5nZV9zeW10YWIoZmlyc3RfZnVuY3Rpb25fbGFzdF9maWxlLCB0bXBh ZGRyLTEpOworIAkgICAgICBmaXJzdF9mdW5jdGlvbl9sYXN0X2ZpbGUgPSAw OworIAkgICAgfQorIAkgIGVsc2UKKyAJICAgIHsKKyAJICAgICAgaWYgKGZp cnN0X2Z1bmN0aW9uX2xhc3RfZmlsZSA9PSAwKQorIAkJIGZpcnN0X2Z1bmN0 aW9uX2xhc3RfZmlsZSA9IHRtcGFkZHI7CisgCSAgICB9CisgCiAJICBjb250 aW51ZTsKIAl9CiAKQEAgLTg0OSw2ICs5NTUsMTggQEAgY29mZl9zeW10YWJf cmVhZCAobG9uZyBzeW10YWJfb2Zmc2V0LCB1bgogCSAgYnJlYWs7CiAKIAlj YXNlIENfRklMRToKKwkgIC8qIENvbXBsZXRlIHN5bWJvbCB0YWJsZSBmb3Ig bGFzdCBvYmplY3QgZmlsZQorCSAgICAgY29udGFpbmluZyBkZWJ1Z2dpbmcg aW5mb3JtYXRpb24uICAqLworCSAgaWYgKGZpcnN0X2Z1bmN0aW9uX3RoaXNf ZmlsZSAhPSAwKQorCQljb21wbGV0ZV9zeW10YWIgKGZpbGVzdHJpbmcsCisJ CSAgIGZpcnN0X2Z1bmN0aW9uX3RoaXNfZmlsZQorCQkgICArIEFOT0ZGU0VU IChvYmpmaWxlLT5zZWN0aW9uX29mZnNldHMsIFNFQ1RfT0ZGX1RFWFQgKG9i amZpbGUpKSwKKwkJICAgbW9zdF9yZWNlbnRfZnVuY3Rpb25fZW5kID09IDAg CisJCSAgICAgPyAwOm1vc3RfcmVjZW50X2Z1bmN0aW9uX2VuZCAtIGZpcnN0 X2Z1bmN0aW9uX3RoaXNfZmlsZSk7CisJICBlbHNlCisJCWNvbXBsZXRlX3N5 bXRhYiAoZmlsZXN0cmluZywgMCwgMCk7CisJICBjb2ZmX2VuZF9zeW10YWIg KG9iamZpbGUpOworCiAJICAvKiBjX3ZhbHVlIGZpZWxkIGNvbnRhaW5zIHN5 bW51bSBvZiBuZXh0IC5maWxlIGVudHJ5IGluIHRhYmxlCiAJICAgICBvciBz eW1udW0gb2YgZmlyc3QgZ2xvYmFsIGFmdGVyIGxhc3QgLmZpbGUuICAqLwog CSAgbmV4dF9maWxlX3N5bW51bSA9IGNzLT5jX3ZhbHVlOwpAQCAtODU3LDE0 ICs5NzUsOSBAQCBjb2ZmX3N5bXRhYl9yZWFkIChsb25nIHN5bXRhYl9vZmZz ZXQsIHVuCiAJICBlbHNlCiAJICAgIGZpbGVzdHJpbmcgPSAiIjsKIAotCSAg LyogQ29tcGxldGUgc3ltYm9sIHRhYmxlIGZvciBsYXN0IG9iamVjdCBmaWxl Ci0JICAgICBjb250YWluaW5nIGRlYnVnZ2luZyBpbmZvcm1hdGlvbi4gICov Ci0JICBpZiAobGFzdF9zb3VyY2VfZmlsZSkKLQkgICAgewotCSAgICAgIGNv ZmZfZW5kX3N5bXRhYiAob2JqZmlsZSk7Ci0JICAgICAgY29mZl9zdGFydF9z eW10YWIgKGZpbGVzdHJpbmcpOwotCSAgICB9Ci0JICBpbl9zb3VyY2VfZmls ZSA9IDE7CisJICBjb2ZmX3N0YXJ0X3N5bXRhYiAoZmlsZXN0cmluZyk7CisK KwkgIGZpcnN0X2Z1bmN0aW9uX3RoaXNfZmlsZSA9IDA7CiAJICBicmVhazsK IAogCSAgLyogQ19MQUJFTCBpcyB1c2VkIGZvciBsYWJlbHMgYW5kIHN0YXRp YyBmdW5jdGlvbnMuICBJbmNsdWRpbmcKQEAgLTg4NCwyMCArOTk3LDcgQEAg Y29mZl9zeW10YWJfcmVhZCAobG9uZyBzeW10YWJfb2Zmc2V0LCB1bgogCWNh c2UgQ19USFVNQlNUQVRGVU5DOgogCSAgaWYgKGNzLT5jX25hbWVbMF0gPT0g Jy4nKQogCSAgICB7Ci0JICAgICAgaWYgKFNUUkVRIChjcy0+Y19uYW1lLCAi LnRleHQiKSkKLQkJewotCQkgIC8qIEZJWE1FOiAgZG9uJ3Qgd2lyZSBpbiAi LnRleHQiIGFzIHNlY3Rpb24gbmFtZQotCQkgICAgIG9yIHN5bWJvbCBuYW1l ISAqLwotCQkgIC8qIENoZWNrIGZvciBpbl9zb3VyY2VfZmlsZSBkZWFscyB3 aXRoIGNhc2Ugb2YKLQkJICAgICBhIGZpbGUgd2l0aCBkZWJ1Z2dpbmcgc3lt Ym9scwotCQkgICAgIGZvbGxvd2VkIGJ5IGEgbGF0ZXIgZmlsZSB3aXRoIG5v IHN5bWJvbHMuICAqLwotCQkgIGlmIChpbl9zb3VyY2VfZmlsZSkKLQkJICAg IGNvbXBsZXRlX3N5bXRhYiAoZmlsZXN0cmluZywKLQkJICAgIGNzLT5jX3Zh bHVlICsgQU5PRkZTRVQgKG9iamZpbGUtPnNlY3Rpb25fb2Zmc2V0cywgU0VD VF9PRkZfVEVYVCAob2JqZmlsZSkpLAotCQkJCSAgICAgbWFpbl9hdXgueF9z Y24ueF9zY25sZW4pOwotCQkgIGluX3NvdXJjZV9maWxlID0gMDsKLQkJfQot CSAgICAgIC8qIGZsdXNoIHJlc3Qgb2YgJy4nIHN5bWJvbHMgKi8KKwkgICAg ICAvKiBmbHVzaCAnLicgc3ltYm9scyAqLwogCSAgICAgIGJyZWFrOwogCSAg ICB9CiAJICBlbHNlIGlmICghU0RCX1RZUEUgKGNzLT5jX3R5cGUpCkBAIC0x MTU1LDggKzEyNTUsMTQgQEAgY29mZl9zeW10YWJfcmVhZCAobG9uZyBzeW10 YWJfb2Zmc2V0LCB1bgogCX0KICAgICB9CiAKLSAgaWYgKGxhc3Rfc291cmNl X2ZpbGUpCi0gICAgY29mZl9lbmRfc3ltdGFiIChvYmpmaWxlKTsKKyAgICBp ZiAoZmlyc3RfZnVuY3Rpb25fdGhpc19maWxlICE9IDApCisJICBjb21wbGV0 ZV9zeW10YWIgKGZpbGVzdHJpbmcsCisJICAgICBmaXJzdF9mdW5jdGlvbl90 aGlzX2ZpbGUKKwkJICAgICsgQU5PRkZTRVQgKG9iamZpbGUtPnNlY3Rpb25f b2Zmc2V0cywgU0VDVF9PRkZfVEVYVChvYmpmaWxlKSksCisJICAgICBtb3N0 X3JlY2VudF9mdW5jdGlvbl9lbmQgPT0gMCAKKwkJICAgID8gMDptb3N0X3Jl Y2VudF9mdW5jdGlvbl9lbmQgLSBmaXJzdF9mdW5jdGlvbl90aGlzX2ZpbGUp OworICAgIGVsc2UKKwkgIGNvbXBsZXRlX3N5bXRhYiAoZmlsZXN0cmluZywg MCwgMCk7CiAKICAgLyogUGF0Y2ggdXAgYW55IG9wYXF1ZSB0eXBlcyAocmVm ZXJlbmNlcyB0byB0eXBlcyB0aGF0IGFyZSBub3QgZGVmaW5lZAogICAgICBp biB0aGUgZmlsZSB3aGVyZSB0aGV5IGFyZSByZWZlcmVuY2VkLCBlLmcuICJz dHJ1Y3QgZm9vICpiYXIiKS4gICovCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQpHZXQgcmlkIG9mIGxvY2FsIGxhYmVscyBvbiBJbnRlbC9jb2Zm L1BFLgoKRnJpIERlYyAgMyAxMDowNzoyMCBQU1QgMTk5OSAgRG9ubiBUZXJy eSA8ZG9ubnRlQG1pY3Jvc29mdC5jb20+CgkqIGNvZmZyZWFkLmMgKGNvZmZf c3ltdGFiX3JlYWQpOiBkb24ndCByZWNvcmQgTC4uLiBzeW1ib2xzLgoKSW5k ZXg6IHNyYy9nZGIvY29mZnJlYWQuYwo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 ClJDUyBmaWxlOiAvZGV2L2ZzL0gvcnVwcC9kZXZlbC1sb2NhbC1yZXBvc2l0 b3J5L3NyYy9nZGIvY29mZnJlYWQuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24g MS44CmRpZmYgLXAgLXUgLXIxLjggY29mZnJlYWQuYwotLS0gc3JjL2dkYi9j b2ZmcmVhZC5jCTIwMDEvMTIvMjQgMDE6MTg6NTcJMS44CisrKyBzcmMvZ2Ri L2NvZmZyZWFkLmMJMjAwMS8xMi8yNCAwMToyODoyMApAQCAtMTAxMyw2ICsx MDEzLDExIEBAIGNvZmZfc3ltdGFiX3JlYWQgKGxvbmcgc3ltdGFiX29mZnNl dCwgdW4KIAkgICAgLyogQXQgbGVhc3Qgb24gYSAzYjEsIGdjYyBnZW5lcmF0 ZXMgc3diZWcgYW5kIHN0cmluZyBsYWJlbHMKIAkgICAgICAgdGhhdCBsb29r IGxpa2UgdGhpcy4gIElnbm9yZSB0aGVtLiAgKi8KIAkgICAgYnJlYWs7CisJ ICAvKiBPbiBJbnRlbCwgbG9jYWwgbmFtZXMgY2FuIGJlIExubm47IHdlIGNh biBkaXNjYXJkIHRoZW0KKwkgICAgIChhbmQgbG90cyBvZiBvdGhlciBqdW5r KSBpZiB0aGVyZSdzIGEgbGVhZGluZyBjaGFyLiAqLworCSAgaWYgKGJmZF9n ZXRfc3ltYm9sX2xlYWRpbmdfY2hhcihvYmpmaWxlLT5vYmZkKSAmJgorCSAg ICAgIGNzLT5jX25hbWVbMF0gIT0gYmZkX2dldF9zeW1ib2xfbGVhZGluZ19j aGFyKG9iamZpbGUtPm9iZmQpKQorCSAgICAgIGJyZWFrOwogCSAgLyogZmFs bCBpbiBmb3Igc3RhdGljIHN5bWJvbHMgdGhhdCBkb24ndCBzdGFydCB3aXRo ICcuJyAqLwogCWNhc2UgQ19USFVNQkVYVDoKIAljYXNlIENfVEhVTUJFWFRG VU5DOgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmVjb2duaXpl IGFic29sdXRlIHN5bWJvbHMgYW5kIG1hcmsgdGhlbSBhcyBzdWNoOyBzb21l CmFic29sdXRlcyB3ZXJlIGNvbWluZyBpbiB0aGUgbWlkZGxlIG9mIGNvZGUg c3BhY2UsIGNvbmZ1c2luZyBidApiYWRseS4KCkZyaSBEZWMgIDMgMTA6MDc6 MjAgUFNUIDE5OTkgIERvbm4gVGVycnkgPGRvbm50ZUBtaWNyb3NvZnQuY29t PgoJKiBjb2ZmcmVhZC5jKGNvZmZfc3ltdGFiX3JlYWQpOiByZWNvZ25pemUg YWJzb2x1dGUgc3ltYm9scy4KCkluZGV4OiBzcmMvZ2RiL2NvZmZyZWFkLmMK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2Rldi9mcy9IL3J1 cHAvZGV2ZWwtbG9jYWwtcmVwb3NpdG9yeS9zcmMvZ2RiL2NvZmZyZWFkLmMs dgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuOQpkaWZmIC1wIC11IC1yMS45IGNv ZmZyZWFkLmMKLS0tIHNyYy9nZGIvY29mZnJlYWQuYwkyMDAxLzEyLzI0IDAx OjI5OjA3CTEuOQorKysgc3JjL2dkYi9jb2ZmcmVhZC5jCTIwMDEvMTIvMjQg MDE6MzA6MDkKQEAgLTEwMjksMTEgKzEwMjksMTYgQEAgY29mZl9zeW10YWJf cmVhZCAobG9uZyBzeW10YWJfb2Zmc2V0LCB1bgogCSAgICAgICBwcmludF9h ZGRyZXNzX3N5bWJvbGljIHdvcmsgcmlnaHQgd2l0aG91dCB0aGUgKG5vdwog CSAgICAgICBnb25lKSAic2V0IGZhc3Qtc3ltYm9saWMtYWRkciBvZmYiIGts dWRnZS4gICovCiAKLQkgICAgLyogRklYTUU6IHNob3VsZCB1c2UgbXN0X2Fi cywgYW5kIG5vdCByZWxvY2F0ZSwgaWYgYWJzb2x1dGUuICAqLwogCSAgICBl bnVtIG1pbmltYWxfc3ltYm9sX3R5cGUgbXNfdHlwZTsKIAkgICAgaW50IHNl YzsKIAotCSAgICBpZiAoY3MtPmNfc2VjbnVtID09IE5fVU5ERUYpCisJICAg IGlmIChjcy0+Y19zZWNudW0gPT0gTl9BQlMpCisJICAgICAgeworCQl0bXBh ZGRyID0gY3MtPmNfdmFsdWU7CisJCXNlYyA9IE5fQUJTOworCQltc190eXBl ID0gIG1zdF9hYnM7CisJICAgICAgfQorCSAgICBlbHNlIGlmIChjcy0+Y19z ZWNudW0gPT0gTl9VTkRFRikKIAkgICAgICB7CiAJCS8qIFRoaXMgaXMgYSBj b21tb24gc3ltYm9sLiAgU2VlIGlmIHRoZSB0YXJnZXQKIAkJICAgZW52aXJv bm1lbnQga25vd3Mgd2hlcmUgaXQgaGFzIGJlZW4gcmVsb2NhdGVkIHRvLiAg Ki8KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCk9uIHRoZSAzODYg YXJjaGl0ZWN0dXJlIChhdCBsZWFzdCBmb3IgTlQpLCBsYXJnZSBmcmFtZXMg YXJlIGNyZWF0ZWQKYnkgYW4gaW1wbGllZCBjYWxsIHRvIF9hbGxvY2EuICBU byBkZXRlcm1pbmUgdGhlIGZyYW1lIHNpemUsIHdlIG11c3QKZGVjb2RlIHRo ZSBjYWxsIGluc3RlYWQgb2YgdGhlIGlubGluZSBpbnN0cnVjdGlvbnMuCgpG cmkgRGVjICAzIDEwOjA3OjIwIFBTVCAxOTk5ICBEb25uIFRlcnJ5IDxkb25u dGVAbWljcm9zb2Z0LmNvbT4KCSogaTM4Ni10ZGVwLmMoaTM4Nl9nZXRfZnJh bWVfc2V0dXApOiBSZWNvZ25pemUvaW50ZXJwcmV0CglfYWxsb2NhIGNhbGxl ZCBmb3Igc3RhY2sgZ3Jvd3RoLiAgUmVtb3ZlIHVudXNlZCAiYnVmIi4KCklu ZGV4OiBzcmMvZ2RiL2kzODYtdGRlcC5jCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KUkNTIGZpbGU6IC9kZXYvZnMvSC9ydXBwL2RldmVsLWxvY2FsLXJlcG9z aXRvcnkvc3JjL2dkYi9pMzg2LXRkZXAuYyx2CnJldHJpZXZpbmcgcmV2aXNp b24gMS4zCmRpZmYgLXAgLXUgLXIxLjMgaTM4Ni10ZGVwLmMKLS0tIHNyYy9n ZGIvaTM4Ni10ZGVwLmMJMjAwMS8xMi8yNCAwMDo1NzoyNAkxLjMKKysrIHNy Yy9nZGIvaTM4Ni10ZGVwLmMJMjAwMS8xMi8yNCAwMTozMTo0MgpAQCAtMzI0 LDYgKzMyNCwxMCBAQCBzdGF0aWMgbG9uZwogaTM4Nl9nZXRfZnJhbWVfc2V0 dXAgKENPUkVfQUREUiBwYykKIHsKICAgdW5zaWduZWQgY2hhciBvcDsKKyAg Ym9vbGVhbiBzYXdfc2l6ZV9zZXR1cCA9IGZhbHNlOworICBpbnQgc2l6ZSA9 IDA7CisgIGNoYXIgYnVmWzRdOworICBpbnQgc2F2ZWRfcGMgPSAwOwogCiAg IGNvZGVzdHJlYW1fc2VlayAocGMpOwogCkBAIC0zOTYsMTkgKzQwMCwzNyBA QCBpMzg2X2dldF9mcmFtZV9zZXR1cCAoQ09SRV9BRERSIHBjKQogCiAgIGlm IChvcCA9PSAweDU1KQkJLyogcHVzaGwgJWVicCAqLwogICAgIHsKLSAgICAg IC8qIENoZWNrIGZvciAibW92bCAlZXNwLCAlZWJwIiAtLSBjYW4gYmUgd3Jp dHRlbiBpbiB0d28gd2F5cy4gICovCi0gICAgICBzd2l0Y2ggKGNvZGVzdHJl YW1fZ2V0ICgpKQorICAgICAgd2hpbGUoMSkKIAl7Ci0JY2FzZSAweDhiOgot CSAgaWYgKGNvZGVzdHJlYW1fZ2V0ICgpICE9IDB4ZWMpCi0JICAgIHJldHVy biAtMTsKLQkgIGJyZWFrOwotCWNhc2UgMHg4OToKLQkgIGlmIChjb2Rlc3Ry ZWFtX2dldCAoKSAhPSAweGU1KQotCSAgICByZXR1cm4gLTE7Ci0JICBicmVh azsKLQlkZWZhdWx0OgotCSAgcmV0dXJuIC0xOworCSAgc3dpdGNoIChjb2Rl c3RyZWFtX2dldCAoKSkKKwkgICAgeworCSAgICAvKiBjaGVjayBmb3IgIm1v dmwgJWVzcCwgJWVicCIgLS0gY2FuIGJlIHdyaXR0ZW4gdHdvIHdheXMgKi8K KwkgICAgY2FzZSAweDhiOgorCSAgICAgIGlmIChjb2Rlc3RyZWFtX2dldCAo KSAhPSAweGVjKQorCQlyZXR1cm4gLTE7CisJICAgICAgYnJlYWs7CisJICAg IGNhc2UgMHg4OToKKwkgICAgICBpZiAoY29kZXN0cmVhbV9nZXQgKCkgIT0g MHhlNSkKKwkJcmV0dXJuIC0xOworCSAgICAgIGJyZWFrOworCisJICAgIC8q IENvdWxkIGJlIGEgc2V0dXAgZm9yIGEgImJpZyIgc3RhY2sgZnJhbWUsIHB1 c2hlZCB1cAorCSAgICAgICBiZWZvcmUgdGhlIG1vdmwgJWVzcCwlZWJwOyBi aWcgZnJhbWVzIHB1c2ggdGhlIGZyYW1lCisJICAgICAgIHNpemUgYW5kIHRo ZW4gY2FsbCBfYWxsb2NhIHRvIGRvIHRoZSBzdGFjayBwcm9iZXMuICovCisJ ICAgIGNhc2UgMHhiODoKKwkgICAgICAvKiBnZXQgdGhlIGZyYW1lIHNpemUg ZnJvbSB0aGUgaW5zdHJ1Y3Rpb247IHdlJ3JlIE5PVAorCQkgeWV0IHN1cmUg d2UgaGF2ZSB0aGlzIGtpbmQgb2YgZnJhbWUsIGJ1dCBpdCBzZWVtcworCQkg bGlrZWx5LiAgKi8KKwkgICAgICBzYXZlZF9wYyA9IGNvZGVzdHJlYW1fdGVs bCgpOworCSAgICAgIGNvZGVzdHJlYW1fcmVhZCAoKHVuc2lnbmVkIGNoYXIg KilidWYsIDQpOworCSAgICAgIHNpemUgPSBleHRyYWN0X3NpZ25lZF9pbnRl Z2VyIChidWYsIDQpOworCSAgICAgIHNhd19zaXplX3NldHVwID0gdHJ1ZTsK KwkgICAgICBjb250aW51ZTsKKworCSAgICBkZWZhdWx0OgorCSAgICAgIHJl dHVybiAtMTsKKwkgICAgfQorCSAgICBicmVhazsKIAl9CiAgICAgICAvKiBD aGVjayBmb3Igc3RhY2sgYWRqdXN0bWVudCAKIApAQCAtNDE3LDggKzQzOSw5 IEBAIGkzODZfZ2V0X2ZyYW1lX3NldHVwIChDT1JFX0FERFIgcGMpCiAJIE5P VEU6IFlvdSBjYW4ndCBzdWJ0cmFjdCBhIDE2IGJpdCBpbW1lZGlhdGUgZnJv bSBhIDMyIGJpdAogCSByZWcsIHNvIHdlIGRvbid0IGhhdmUgdG8gd29ycnkg YWJvdXQgYSBkYXRhMTYgcHJlZml4LiAgKi8KICAgICAgIG9wID0gY29kZXN0 cmVhbV9wZWVrICgpOwotICAgICAgaWYgKG9wID09IDB4ODMpCisgICAgICBz d2l0Y2gob3ApIAogCXsKKyAgICAgICAgY2FzZSAweDgzOgogCSAgLyogYHN1 YmwnIHdpdGggOCBiaXQgaW1tZWRpYXRlLiAgKi8KIAkgIGNvZGVzdHJlYW1f Z2V0ICgpOwogCSAgaWYgKGNvZGVzdHJlYW1fZ2V0ICgpICE9IDB4ZWMpCkBA IC00MzAsOSArNDUzLDggQEAgaTM4Nl9nZXRfZnJhbWVfc2V0dXAgKENPUkVf QUREUiBwYykKIAkgIC8qIGBzdWJsJyB3aXRoIHNpZ25lZCBieXRlIGltbWVk aWF0ZSAodGhvdWdoIGl0IHdvdWxkbid0CiAJICAgICBtYWtlIHNlbnNlIHRv IGJlIG5lZ2F0aXZlKS4gICovCiAJICByZXR1cm4gKGNvZGVzdHJlYW1fZ2V0 ICgpKTsKLQl9Ci0gICAgICBlbHNlIGlmIChvcCA9PSAweDgxKQotCXsKKyAg ICAgICAgY2FzZSAweDgxOgorCSAgewogCSAgY2hhciBidWZbNF07CiAJICAv KiBNYXliZSBpdCBpcyBgc3VibCcgd2l0aCBhIDMyIGJpdCBpbW1lZGVkaWF0 ZS4gICovCiAJICBjb2Rlc3RyZWFtX2dldCAoKTsKQEAgLTQ0NSwxNSArNDY3 LDUyIEBAIGkzODZfZ2V0X2ZyYW1lX3NldHVwIChDT1JFX0FERFIgcGMpCiAJ ICAvKiBJdCBpcyBgc3VibCcgd2l0aCBhIDMyIGJpdCBpbW1lZGlhdGUuICAq LwogCSAgY29kZXN0cmVhbV9yZWFkICgodW5zaWduZWQgY2hhciAqKSBidWYs IDQpOwogCSAgcmV0dXJuIGV4dHJhY3Rfc2lnbmVkX2ludGVnZXIgKGJ1Ziwg NCk7Ci0JfQotICAgICAgZWxzZQotCXsKKwkgIH0KKworCWNhc2UgMHhiODoK KwkgIC8qIENvdWxkIGJlIGEgc2V0dXAgZm9yIGEgImJpZyIgc3RhY2sgZnJh bWU7IGJpZyBmcmFtZXMgcHVzaCB0aGUgCisJICAgICBmcmFtZSBzaXplIGFu ZCB0aGVuIGNhbGwgX2FsbG9jYSB0byBkbyB0aGUgc3RhY2sgcHJvYmVzLiAq LworCSAgLyogZ2V0IHRoZSBmcmFtZSBzaXplIGZyb20gdGhlIGluc3RydWN0 aW9uOyB3ZSdyZSBOT1QKKwkgICAgIHlldCBzdXJlIHdlIGhhdmUgdGhpcyBr aW5kIG9mIGZyYW1lLCBidXQgaXQgc2VlbXMKKwkgICAgIGxpa2VseS4gICov CisJICBzYXZlZF9wYyA9IGNvZGVzdHJlYW1fdGVsbCAoKTsKKwkgIGNvZGVz dHJlYW1fcmVhZCAoKHVuc2lnbmVkIGNoYXIgKilidWYsIDQpOworCSAgc2l6 ZSA9IGV4dHJhY3Rfc2lnbmVkX2ludGVnZXIgKGJ1ZiwgNCk7CisJICBzYXdf c2l6ZV9zZXR1cCA9IHRydWU7CisgICAgICAgICAgaWYgKGNvZGVzdHJlYW1f cGVlayAoKSAhPSAweGU4KQorCSAgICB7CisJICAgICAgIGNvZGVzdHJlYW1f c2VlayhzYXZlZF9wYyk7CisJICAgICAgIHJldHVybiAwOworCSAgICB9CisJ ICAvKiBkcm9wIHRocnUgKi8KKworCWNhc2UgMHhlODoKKwkgIHsKKwkgIENP UkVfQUREUiBwYzsKKwkgIGNoYXIgKm5hbWU7CisJICBpZiAoIXNhd19zaXpl X3NldHVwKSAKKwkgICAgIHJldHVybiAwOworCSAgLyogbm93IHdlJ3JlIHN1 cmUgaXQncyBhICJiaWciIGZyYW1lICovCisJICBjb2Rlc3RyZWFtX2dldCgp OworCSAgLyogZ2V0IHRhcmdldCBvZiBwdXRhdGl2ZSBhbGxvY2EgY2FsbCAq LworCSAgY29kZXN0cmVhbV9yZWFkICgodW5zaWduZWQgY2hhciAqKWJ1Ziwg NCk7CisJICBwYyA9IGV4dHJhY3Rfc2lnbmVkX2ludGVnZXIgKGJ1ZiwgNCkg KyBjb2Rlc3RyZWFtX3RlbGwoKTsKKwkgIGZpbmRfcGNfcGFydGlhbF9mdW5j dGlvbihwYywgJm5hbWUsIE5VTEwsIE5VTEwpOworCSAgaWYgKCEgbmFtZSB8 fCAhIFNUUkVRIChuYW1lLCAiX2FsbG9jYSIpKQorCSAgICB7CisJICAgICAg IC8qIG9vcHMsIG5vdCBhIGNhbGwgdG8gX2FsbG9jYS4uLiBiYWNrIG91dCAq LworCSAgICAgICBjb2Rlc3RyZWFtX3NlZWsoc2F2ZWRfcGMpOworCSAgICAg ICByZXR1cm4gLTE7CisJICAgIH0KKwkgIHJldHVybiBzaXplOworCSAgfQor CisgICAgICAgIGRlZmF1bHQ6CiAJICByZXR1cm4gMDsKLQl9CisgICAgICB9 CiAgICAgfQogICBlbHNlIGlmIChvcCA9PSAweGM4KQogICAgIHsKLSAgICAg IGNoYXIgYnVmWzJdOwogICAgICAgLyogYGVudGVyJyB3aXRoIDE2IGJpdCB1 bnNpZ25lZCBpbW1lZGlhdGUuICAqLwogICAgICAgY29kZXN0cmVhbV9yZWFk ICgodW5zaWduZWQgY2hhciAqKSBidWYsIDIpOwogICAgICAgY29kZXN0cmVh bV9nZXQgKCk7CS8qIEZsdXNoIGZpbmFsIGJ5dGUgb2YgZW50ZXIgaW5zdHJ1 Y3Rpb24uICAqLwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRnJp IERlYyAgMyAxMDowNzoyMCBQU1QgMTk5OSAgRG9ubiBUZXJyeSA8ZG9ubnRl QG1pY3Jvc29mdC5jb20+CgoJKiBjb2ZmcmVhZC5jKGVudGVyX2xpbmVub3Mp OiBpZiBubyBsaW5lIG51bWJlcnMsIGp1c3Qgc2tpcC4KCkluZGV4OiBzcmMv Z2RiL2NvZmZyZWFkLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmls ZTogL2Rldi9mcy9IL3J1cHAvZGV2ZWwtbG9jYWwtcmVwb3NpdG9yeS9zcmMv Z2RiL2NvZmZyZWFkLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTAKZGlm ZiAtcCAtdSAtcjEuMTAgY29mZnJlYWQuYwotLS0gc3JjL2dkYi9jb2ZmcmVh ZC5jCTIwMDEvMTIvMjQgMDE6MzE6MDIJMS4xMAorKysgc3JjL2dkYi9jb2Zm cmVhZC5jCTIwMDEvMTIvMjQgMDE6MzU6MjgKQEAgLTE1MzgsNiArMTUzOCw5 IEBAIGVudGVyX2xpbmVub3MgKGxvbmcgZmlsZV9vZmZzZXQsIHJlZ2lzdGUK IAogICBpZiAoIWxpbmV0YWIpCiAgICAgcmV0dXJuOworICAvKiBubyBsaW5l IG51bWJlcnMgcmVjb3JkZWQgaW4gdGhlIGZ1bmN0aW9uICgtZzEpICovCisg IGlmIChmaWxlX29mZnNldCA9PSAwKQorICAgIHJldHVybjsKICAgaWYgKGZp bGVfb2Zmc2V0IDwgbGluZXRhYl9vZmZzZXQpCiAgICAgewogICAgICAgY29t cGxhaW4gKCZsaW5lbm9fY29tcGxhaW50LCBmaWxlX29mZnNldCk7Ci0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUaGUgZmlyc3QgY2hhbmdlIHR1 cm5lZCBvZmYgKGJ1dCBub3QgcmVtb3ZlZCkgcGVuZGluZyByZWdyZXNzaW9u IHJlc3VsdHM7Cml0IGxvb2tzIGFzIGlmIGl0J3MgYWxyZWFkeSBoYXBwZW5p bmcgY29ycmVjdGx5LgoKQmV0dGVyIGRpYWdub3N0aWNzOyBkaXN0aW5ndWlz aCBiZXR3ZWVuIHByb2dyYW0gbm90IGJlaW5nIHJ1bgphbmQgZmxvYXRpbmcg cG9pbnQgbm90IHByZXNlbnQgKGluIHJ1bm5pbmcgYXBwbGljYXRpb24pLgoo VGhlIGNoYW5nZSBtaWdodCBhbHNvIGJlIGFwcGxpY2FibGUgdG8gbm9uLWRl ZmF1bHQgY2FzZXMuKQoKRnJpIERlYyAgMyAxMDowNzoyMCBQU1QgMTk5OSAg RG9ubiBUZXJyeSA8ZG9ubnRlQG1pY3Jvc29mdC5jb20+CgkqIGFyY2hfdXRp bHMuYyhkZWZhdWx0X3ByaW50X2Zsb2F0X2luZm8pOiByZXBvcnQgbm8gaW5m ZXJpb3Igc2VwYXJhdGVseS4KCSogZGVmYXVsdC5leHA6IGFkanVzdCBleHBl Y3RlZCBtZXNzYWdlIGluIGluZm8gZmxvYXQuCgpJbmRleDogc3JjL2dkYi9h cmNoLXV0aWxzLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog L2Rldi9mcy9IL3J1cHAvZGV2ZWwtbG9jYWwtcmVwb3NpdG9yeS9zcmMvZ2Ri L2FyY2gtdXRpbHMuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xLjEuMQpk aWZmIC1wIC11IC1yMS4xLjEuMSBhcmNoLXV0aWxzLmMKLS0tIHNyYy9nZGIv YXJjaC11dGlscy5jCTIwMDEvMTIvMjMgMDA6MzQ6NDkJMS4xLjEuMQorKysg c3JjL2dkYi9hcmNoLXV0aWxzLmMJMjAwMS8xMi8yNCAwMTozNjo1MwpAQCAt MjMyLDYgKzIzMiw4IEBAIGRlZmF1bHRfcHJpbnRfZmxvYXRfaW5mbyAodm9p ZCkKICNpZiBHREJfTVVMVElfQVJDSCA+IEdEQl9NVUxUSV9BUkNIX1BBUlRJ QUwKICNlcnJvciAiRkxPQVRfSU5GTyBkZWZpbmVkIGluIG11bHRpLWFyY2gi CiAjZW5kaWYKKyAgLy9pZiAoIXRhcmdldF9oYXNfZXhlY3V0aW9uKQorICAg ICAgLy9ub3Byb2Nlc3MgKCk7CiAgIEZMT0FUX0lORk87CiAjZWxzZQogICBw cmludGZfZmlsdGVyZWQgKCJObyBmbG9hdGluZyBwb2ludCBpbmZvIGF2YWls YWJsZSBmb3IgdGhpcyBwcm9jZXNzb3IuXG4iKTsKSW5kZXg6IHNyYy9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL2RlZmF1bHQuZXhwCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KUkNTIGZpbGU6IC9kZXYvZnMvSC9ydXBwL2RldmVsLWxvY2Fs LXJlcG9zaXRvcnkvc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZGVmYXVs dC5leHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4xLjEKZGlmZiAtcCAt dSAtcjEuMS4xLjEgZGVmYXVsdC5leHAKLS0tIHNyYy9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL2RlZmF1bHQuZXhwCTIwMDEvMTIvMjMgMDA6MzU6MTYJMS4x LjEuMQorKysgc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZGVmYXVsdC5l eHAJMjAwMS8xMi8yNCAwMTozNjo1MwpAQCAtMzA4LDcgKzMwOCwxNSBAQCBp ZiBbaXN0YXJnZXQgImFybSotKi0qIl0gdGhlbiB7CiB9IGVsc2VpZiBbaXN0 YXJnZXQgImlcWzM0NTZcXTg2LSotKiJdIHRoZW4gewogICAgIGdkYl90ZXN0 ICJpbmZvIGZsb2F0IiAiUjc6LipTdGF0dXMgV29yZDouKk9wY29kZTouKiIg ImluZm8gZmxvYXQiCiB9IGVsc2UgewotICAgIGdkYl90ZXN0ICJpbmZvIGZs b2F0IiAiTm8gZmxvYXRpbmcgcG9pbnQgaW5mbyBhdmFpbGFibGUgZm9yIHRo aXMgcHJvY2Vzc29yLiIgImluZm8gZmxvYXQiCisgICAgc2VuZF9nZGIgImlu Zm8gZmxvYXRcbiIKKyAgICBnZGJfZXhwZWN0IHsKKyAgICAgIC1yZSAiTm8g ZmxvYXRpbmcgcG9pbnQgaW5mbyBhdmFpbGFibGUgZm9yIHRoaXMgcHJvY2Vz c29yLiokZ2RiX3Byb21wdCAkIiBcCisJICAgIHsgcGFzcyAiaW5mbyBmbG9h dCAobm9uZSBhdmFpbGFibGUpIiB9CisgICAgICAtcmUgIlRoZSBwcm9ncmFt IGlzIG5vdCBiZWluZyBydW4uKiRnZGJfcHJvbXB0ICQiIFwKKwkgICAgeyBw YXNzICJpbmZvIGZsb2F0IChubyBjdXJyZW50IHByb2Nlc3MpIiB9CisgICAg ICAtcmUgIi4qJGdkYl9wcm9tcHQgJCIJeyBmYWlsICJpbmZvIGZsb2F0ICh1 bmV4cGN0ZWQpIiB9CisgICAgICB0aW1lb3V0CQl7IGZhaWwgImluZm8gZmxv YXQgKHRpbWVvdXQpIiB9CisgICAgfQogfQogI3Rlc3QgaW5mbyBmdW5jdGlv bnMKIGdkYl90ZXN0ICJpbmZvIGZ1bmN0aW9ucyIgIkFsbCBkZWZpbmVkIGZ1 bmN0aW9uczoiICJpbmZvIGZ1bmN0aW9ucyIKLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tClRoZSB2YWx1ZSB0aGF0IGFwcGVhcnMgcmVzaWR1YWxs eSBpbiBhbiAiZW1wdHkiIGZsb2F0aW5nIHBvaW50CnJlZ2lzdGVyIGNhbiBz b21ldGltZXMgYmUgYSBoZWxwIGluIGludHVpdGluZyB0aGUgbmF0dXJlIG9m IGEgYnVnLApzbyBwcmludCBpdCBldmVuIGlmIHRoZSByZWdpc3RlciBpcyBl bXB0eS4KCkZyaSBEZWMgIDMgMTA6MDc6MjAgUFNUIDE5OTkgIERvbm4gVGVy cnkgPGRvbm50ZUBtaWNyb3NvZnQuY29tPgoJKiBpMzg3LXRkZXAuYyAoaTM4 N19mbG9hdF9pbmZvKTogUmVtb3ZlIGNvbmRpdGlvbi4KCkluZGV4OiBzcmMv Z2RiL2kzODctdGRlcC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp bGU6IC9kZXYvZnMvSC9ydXBwL2RldmVsLWxvY2FsLXJlcG9zaXRvcnkvc3Jj L2dkYi9pMzg3LXRkZXAuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xLjEu MQpkaWZmIC1wIC11IC1yMS4xLjEuMSBpMzg3LXRkZXAuYwotLS0gc3JjL2dk Yi9pMzg3LXRkZXAuYwkyMDAxLzEyLzIzIDAwOjM0OjQ4CTEuMS4xLjEKKysr IHNyYy9nZGIvaTM4Ny10ZGVwLmMJMjAwMS8xMi8yNCAwMTozOTo0NApAQCAt MzY3LDggKzM2Nyw3IEBAIGkzODdfZmxvYXRfaW5mbyAodm9pZCkKICAgICAg IGZvciAoaSA9IDk7IGkgPj0gMDsgaS0tKQogCXByaW50Zl9maWx0ZXJlZCAo IiUwMngiLCByYXdbaV0pOwogCi0gICAgICBpZiAodGFnICE9IDMpCi0JcHJp bnRfaTM4N19leHQgKHJhdyk7CisgICAgICBwcmludF9pMzg3X2V4dCAocmF3 KTsKIAogICAgICAgcHV0c19maWx0ZXJlZCAoIlxuIik7CiAgICAgfQotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVmFyaW91cyBjaGFuZ2VzIHRv IHByZXR0eSBwcmludGluZyB0aGUgcmVnaXN0ZXIgZGlzcGxheTsgb24KdGhl IEFscGhhIHRoZSByZWdpc3RlciBkaXNwbGF5IHdhcyBuZWFybHkgdW5yZWFk YWJsZSBkdWUgdG8KcmFnZ2VkIGNvbHVtbnMsIGFuZCB3aXRoIGEgbGFyZ2Ug bnVtYmVyIG9mIHJlZ2lzdGVycywgYSBrZXkKaXMgbmVlZGVkLiAgSXQgaGVs cHMgYSBiaXQgb24gb3RoZXIgbWFjaGluZXMgYXMgd2VsbC4KCnByaW50X3Nj YWxhcl9mb3JtYXRlZCgpOiB0cmVhdCB0aGUgbmV3IGZvcm1hdCBsZXR0ZXJz CidiJywgJ2gnLCAndycsICdnJyBhcyBzeW5vbnltcyBmb3IgJ3hiJywgZXRj LiAgVGhlIHBhdGggZnJvbQpkb19yZWdpc3RlcnNfaW5mbyB0byBoZXJlIGhh cyBubyB3YXkgdG8gY2FycnkgdGhlIHNpemUgb2YgdGhlIApyZWdpc3RlciBk aXJlY3RseSwgc28gd2UgZW5jb2RlIGl0IGluIHRoZSBmb3JtYXQuICAoWWVh aCwgaXQncwpub3QgYmVhdXRpZnVsLCBidXQgaXQgd29ya3MuKSAgVGhpcyBt YXkgaGF2ZSB0aGUgc2lkZQplZmZlY3Qgb2Ygb2NjYXNpb25hbGx5IGFsbG93 aW5nIChhdCB0aGUgY29tbWFuZCBsZXZlbCkgYSBzaXplCnRvIGJlIHN1YnN0 aXR1dGVkIGZvciBhIGZvcm1hdCwgYnV0IHRoYXQgc2VlbXMgYmVuaWduLgoK RnJpIERlYyAgMyAxMDowNzoyMCBQU1QgMTk5OSAgRG9ubiBUZXJyeSA8ZG9u bnRlQG1pY3Jvc29mdC5jb20+CgkqIGluZmNtZC5jKGRvX3JlZ2lzdGVyc19p bmZvKTogcHJpbnQgcmVnaXN0ZXIgbnVtYmVyLAoJc3VwcGx5IGZvcm1hdCB0 byBnZXQgY29uc3RhbnQgd2lkdGggb3V0cHV0LgoJKiBwcmludGNtZC5jKHBy aW50X3NjYWxhcl9mb3JtYXR0ZWQpOiBob25vciBmb3JtYXRzIGZvcgoJY29u c3RhbnQgd2lkdGguCgpJbmRleDogc3JjL2dkYi9pbmZjbWQuYwo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvZGV2L2ZzL0gvcnVwcC9kZXZl bC1sb2NhbC1yZXBvc2l0b3J5L3NyYy9nZGIvaW5mY21kLmMsdgpyZXRyaWV2 aW5nIHJldmlzaW9uIDEuMgpkaWZmIC1wIC11IC1yMS4yIGluZmNtZC5jCi0t LSBzcmMvZ2RiL2luZmNtZC5jCTIwMDEvMTIvMjQgMDE6Mzk6MTAJMS4yCisr KyBzcmMvZ2RiL2luZmNtZC5jCTIwMDEvMTIvMjQgMDE6NDE6MjQKQEAgLTE1 OTMsNiArMTU5MywxMSBAQCBkb19yZWdpc3RlcnNfaW5mbyAoaW50IHJlZ251 bSwgaW50IGZwcmVnCiAgIGludCBudW1yZWdzID0gTlVNX1JFR1MgKyBOVU1f UFNFVURPX1JFR1M7CiAgIGNoYXIgKnJhd19idWZmZXIgPSAoY2hhciopIGFs bG9jYSAoTUFYX1JFR0lTVEVSX1JBV19TSVpFKTsKICAgY2hhciAqdmlydHVh bF9idWZmZXIgPSAoY2hhciopIGFsbG9jYSAoTUFYX1JFR0lTVEVSX1ZJUlRV QUxfU0laRSk7CisgIHN0YXRpYyBjb25zdCBjaGFyIHNpemVuYW1lc1tdID0K KyAgICB7J2InLCAnYicsICAgICAgICAgICAgICAgLyogMC0xICovCisgICAg ICdoJywgICAgICAgICAgICAgICAgICAgIC8qIDItMiAqLworICAgICAndycs ICd3JywgICAgICAgICAgICAgICAvKiAzLTQgKi8KKyAgICAgJ2cnLCAnZycs ICdnJywgJ2cnICAgICAgLyogNS04ICovfTsKIAogICBmb3IgKGkgPSAwOyBp IDwgbnVtcmVnczsgaSsrKQogICAgIHsKQEAgLTE2MTQsNyArMTYxOSw4IEBA IGRvX3JlZ2lzdGVyc19pbmZvIChpbnQgcmVnbnVtLCBpbnQgZnByZWcKIAlj b250aW51ZTsKIAogICAgICAgZnB1dHNfZmlsdGVyZWQgKFJFR0lTVEVSX05B TUUgKGkpLCBnZGJfc3Rkb3V0KTsKLSAgICAgIHByaW50X3NwYWNlc19maWx0 ZXJlZCAoMTUgLSBzdHJsZW4gKFJFR0lTVEVSX05BTUUgKGkpKSwgZ2RiX3N0 ZG91dCk7CisgICAgICBwcmludF9zcGFjZXNfZmlsdGVyZWQgKDYgLSBzdHJs ZW4gKFJFR0lTVEVSX05BTUUgKGkpKSwgZ2RiX3N0ZG91dCk7CisgICAgICBw cmludGZfZmlsdGVyZWQoIiglMmQpICAgICIsaSk7CiAKICAgICAgIC8qIEdl dCB0aGUgZGF0YSBpbiByYXcgZm9ybWF0LiAgKi8KICAgICAgIGlmIChyZWFk X3JlbGF0aXZlX3JlZ2lzdGVyX3Jhd19ieXRlcyAoaSwgcmF3X2J1ZmZlcikp CkBAIC0xNjYwLDggKzE2NjYsMTEgQEAgZG9fcmVnaXN0ZXJzX2luZm8gKGlu dCByZWdudW0sIGludCBmcHJlZwogICAgICAgLyogRWxzZSBwcmludCBhcyBp bnRlZ2VyIGluIGhleCBhbmQgaW4gZGVjaW1hbC4gICovCiAgICAgICBlbHNl CiAJeworCSAgLyogYnkgdXNpbmcgc2l6ZW5hbWVzLCB3ZSBnZXQgY29uc3Rh bnQgd2lkdGggbnVtYmVycyBmb3IgZWFjaAorCSAgICAgcmVnaXN0ZXIgdHlw ZSwgd2hpY2gga2VlcHMgdGhlIGNvbHVtbnMgZnJvbSBiZWluZyBhcyByYWdn ZWQgKi8KIAkgIHZhbF9wcmludCAoUkVHSVNURVJfVklSVFVBTF9UWVBFIChp KSwgdmlydHVhbF9idWZmZXIsIDAsIDAsCi0JCSAgICAgZ2RiX3N0ZG91dCwg J3gnLCAxLCAwLCBWYWxfcHJldHR5X2RlZmF1bHQpOworCQkgICAgIGdkYl9z dGRvdXQsIHNpemVuYW1lc1tSRUdJU1RFUl9WSVJUVUFMX1NJWkUoaSldLCAK KwkJICAgICAxLCAwLCBWYWxfcHJldHR5X2RlZmF1bHQpOwogCSAgcHJpbnRm X2ZpbHRlcmVkICgiXHQiKTsKIAkgIHZhbF9wcmludCAoUkVHSVNURVJfVklS VFVBTF9UWVBFIChpKSwgdmlydHVhbF9idWZmZXIsIDAsIDAsCiAJCSAgICAg Z2RiX3N0ZG91dCwgMCwgMSwgMCwgVmFsX3ByZXR0eV9kZWZhdWx0KTsKSW5k ZXg6IHNyYy9nZGIvcHJpbnRjbWQuYwo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 ClJDUyBmaWxlOiAvZGV2L2ZzL0gvcnVwcC9kZXZlbC1sb2NhbC1yZXBvc2l0 b3J5L3NyYy9nZGIvcHJpbnRjbWQuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24g MS4yCmRpZmYgLXAgLXUgLXIxLjIgcHJpbnRjbWQuYwotLS0gc3JjL2dkYi9w cmludGNtZC5jCTIwMDEvMTIvMjQgMDE6MTA6MjAJMS4yCisrKyBzcmMvZ2Ri L3ByaW50Y21kLmMJMjAwMS8xMi8yNCAwMTo0MToyNApAQCAtNDA3LDYgKzQw NywxNCBAQCBwcmludF9zY2FsYXJfZm9ybWF0dGVkIChjaGFyICp2YWxhZGRy LCBzCiAKICAgc3dpdGNoIChmb3JtYXQpCiAgICAgeworICAgIGNhc2UgJ2In OgorICAgIGNhc2UgJ2gnOgorICAgIGNhc2UgJ3cnOgorICAgIGNhc2UgJ2cn OgorICAgICAgLyogdG8gYWxsb3cgYSBmaXhlZCB3aWR0aCBoZXggZm9ybWF0 OyBub3QgaW50ZW5kZWQgZm9yIGNvbW1hbmQgbGluZQorCSB1c2UsIGJ1dCBm cm9tIHRoZSAiaW5mbyByZWciIGNvbW1hbmQgYW5kIHRoZSBsaWtlLiAqLwor ICAgICAgc2l6ZSA9IGZvcm1hdDsKKyAgICAgIC8qIGRyb3AgdGhydSAqLwog ICAgIGNhc2UgJ3gnOgogICAgICAgaWYgKCFzaXplKQogCXsKLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tClRoaXMgaGFzIGdvdHRlbiB0cmltbWVk IGZ1cnRoZXI7IGZ1cnRoZXIgdGVzdGluZyBpbmRpY2F0ZWQuCgpDT05TSURF UiBTUExJVCBJTlRPIDIgUEFSVFMuCgpMb25nIHNpZ25hbCBuYW1lcyBjYXVz ZWQgcmFnZ2VkIGNvbHVtbnMgYW5kIGxpbmV3cmFwcywgbWFraW5nICJoYW5k bGUKYWxsIHByaW50IiBvdXRwdXQgZGlmZmljdWx0IHRvIHJlYWQuICAoQW5k IGNvcnJlc3BvbmRpbmcgcmVncmVzc2lvbiBjaGFuZ2VzLikKKFNlZSBwYXJ0 aWN1bGFybHkgdGhlIE1BQ0hfIHN0dWZmLikKCklmIHRoZXJlIGlzIGEgbWlz bWF0Y2ggYmV0d2VlbiB0aGUgc3lzdGVtIGFuZCB0aGUgZGVidWdnZXIgb24g dGhlCmxpc3Qgb2Ygc3VwcG9ydGVkIHNpZ25hbHMsIHRoZSB1c2VyIGRvZXNu J3QgZ2V0IGFueSBpbmZvcm1hdGlvbiBhYm91dAp0aGUgaG9zdCBzaWduYWwg bnVtYmVyLiAgUHJvdmlkZSBhdCBsZWFzdCB0aGUgaG9zdCBudW1iZXIgKHNv IGxhYmVsZWQpLgpEb24ndCB0cnkgdG8gZGVhbCB3aXRoIHNpZ25hbHMgbm90 IHN1cHBvcnRlZCBieSB0aGUgaG9zdC4gIChBbmQgCmNvcnJlc3BvbmRpbmcg cmVncmVzc2lvbiBjaGFuZ2VzLikKCkZyaSBEZWMgIDMgMTA6MDc6MjAgUFNU IDE5OTkgIERvbm4gVGVycnkgPGRvbm50ZUBtaWNyb3NvZnQuY29tPgoJKiBp bmZydW4uYyhzaWdfcHJpbnRfaGVhZGVyKTogTmV3IGNvbHVtbiBhbGlnbm1l bnQgc28gdGhhdCBsb25nZXIKCXNpZ25hbCBuYW1lcyBwcmludCB3aXRob3V0 IHRhYnMgbWVzc2luZyB1cC4KCShzaWdfcHJpbnRfaW5mbyk6IExpa2V3aXNl LgoJKGhhbmRsZV9jb21tYW5kKTogUmVwb3J0IHVuc3VwcG9ydGVkIHNpZ25h bHMsIGRvbid0IHRyeSB0byBwcmludAoJaW5mbyBhYm91dCB0aGVtIChhbmQg ZGllKS4KCShzaWduYWxzX2luZm8pOiBMaWtld2lzZS4KCSogdGFyZ2V0LmMo dGFyZ2V0X3NpZ25hbF90b19uYW1lKTogUHJvdmlkZSBob3N0IG51bWJlciBm b3IgCgl1bmtub3duIHNpZ25hbHMuICh0YXJnZXRfc2lnbmFsX2Zyb21faG9z dCk6IHNhdmUgaG9zdCBudW1iZXIuCgkoZG9fdGFyZ2V0X3NpZ25hbF90b19o b3N0KTogaWYgbm8gcmVhbHRpbWUgc2lnbmFscywgZG9uJ3QKCXByZXRlbmQg dGhhdCAzMiBleGlzdHMuCgkqIGdkYi5iYXNlL3NpZ2FsbC5leHA6ICBVcGRh dGUgZm9yIG5ldyBtZXNzYWdlcyBmcm9tIGFib3ZlLgoJCkluZGV4OiBzcmMv Z2RiL2luZnJ1bi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6 IC9kZXYvZnMvSC9ydXBwL2RldmVsLWxvY2FsLXJlcG9zaXRvcnkvc3JjL2dk Yi9pbmZydW4uYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xLjEuMQpkaWZm IC1wIC11IC1yMS4xLjEuMSBpbmZydW4uYwotLS0gc3JjL2dkYi9pbmZydW4u YwkyMDAxLzEyLzIzIDAwOjM0OjQ5CTEuMS4xLjEKKysrIHNyYy9nZGIvaW5m cnVuLmMJMjAwMS8xMi8yNCAwMTo0Mjo0MQpAQCAtMzYzMCwxNCArMzYzMCwx NCBAQCBzdGF0aWMgdm9pZAogc2lnX3ByaW50X2hlYWRlciAodm9pZCkKIHsK ICAgcHJpbnRmX2ZpbHRlcmVkICgiXAotU2lnbmFsICAgICAgICBTdG9wXHRQ cmludFx0UGFzcyB0byBwcm9ncmFtXHREZXNjcmlwdGlvblxuIik7CitTaWdu YWwgICAgICAgICAgICAgICBTdG9wICBQcmludCAgLT4gcHJvZ3JhbSAgRGVz Y3JpcHRpb25cbiIpOwogfQogCiBzdGF0aWMgdm9pZAogc2lnX3ByaW50X2lu Zm8gKGVudW0gdGFyZ2V0X3NpZ25hbCBvdXJzaWcpCiB7CiAgIGNoYXIgKm5h bWUgPSB0YXJnZXRfc2lnbmFsX3RvX25hbWUgKG91cnNpZyk7Ci0gIGludCBu YW1lX3BhZGRpbmcgPSAxMyAtIHN0cmxlbiAobmFtZSk7CisgIGludCBuYW1l X3BhZGRpbmcgPSAyMCAtIHN0cmxlbiAobmFtZSk7CiAKICAgaWYgKG5hbWVf cGFkZGluZyA8PSAwKQogICAgIG5hbWVfcGFkZGluZyA9IDA7CkBAIC0zNjQ1 LDkgKzM2NDUsOSBAQCBzaWdfcHJpbnRfaW5mbyAoZW51bSB0YXJnZXRfc2ln bmFsIG91cnNpCiAgIHByaW50Zl9maWx0ZXJlZCAoIiVzIiwgbmFtZSk7CiAg IHByaW50Zl9maWx0ZXJlZCAoIiUqLipzICIsIG5hbWVfcGFkZGluZywgbmFt ZV9wYWRkaW5nLAogCQkgICAiICAgICAgICAgICAgICAgICAiKTsKLSAgcHJp bnRmX2ZpbHRlcmVkICgiJXNcdCIsIHNpZ25hbF9zdG9wW291cnNpZ10gPyAi WWVzIiA6ICJObyIpOwotICBwcmludGZfZmlsdGVyZWQgKCIlc1x0Iiwgc2ln bmFsX3ByaW50W291cnNpZ10gPyAiWWVzIiA6ICJObyIpOwotICBwcmludGZf ZmlsdGVyZWQgKCIlc1x0XHQiLCBzaWduYWxfcHJvZ3JhbVtvdXJzaWddID8g IlllcyIgOiAiTm8iKTsKKyAgcHJpbnRmX2ZpbHRlcmVkICgiJXMgICAgIiwg c2lnbmFsX3N0b3Bbb3Vyc2lnXSA/ICJZZXMiIDogIk5vICIpOworICBwcmlu dGZfZmlsdGVyZWQgKCIlcyAgICAiLCBzaWduYWxfcHJpbnRbb3Vyc2lnXSA/ ICJZZXMiIDogIk5vICIpOworICBwcmludGZfZmlsdGVyZWQgKCIlcyAgICAg ICAgIiwgc2lnbmFsX3Byb2dyYW1bb3Vyc2lnXSA/ICJZZXMiIDogIk5vICIp OwogICBwcmludGZfZmlsdGVyZWQgKCIlc1xuIiwgdGFyZ2V0X3NpZ25hbF90 b19zdHJpbmcgKG91cnNpZykpOwogfQogCkBAIC0zODA5LDYgKzM4MDksOSBA QCBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gY2hhbmdlIGl0PyAiLAogCSAg ICAgIC8qIE1ha2Ugc3VyZSB0aGF0ICJhbGwiIGRvZXNuJ3QgcHJpbnQgdGhl c2UuICAqLwogCSAgICAgIGJyZWFrOwogCSAgICBkZWZhdWx0OgorCSAgICAg ICAgaWYgKCFhbGxzaWdzICYmICFzaWdzW3NpZ251bV0gJiYKKwkJICAgIXRh cmdldF9zaWduYWxfdG9faG9zdF9wKHNpZ251bSkpCisJCSAgIGVycm9yKCJT aWduYWwgJWQgbm90IHN1cHBvcnRlZCBieSB0aGlzIG1hY2hpbmVcbiIsIHNp Z251bSk7CiAJICAgICAgc2lnc1tzaWdudW1dID0gMTsKIAkgICAgICBicmVh azsKIAkgICAgfQpAQCAtMzgyNSw3ICszODI4LDcgQEAgQXJlIHlvdSBzdXJl IHlvdSB3YW50IHRvIGNoYW5nZSBpdD8gIiwKICAgICAgIHNpZ19wcmludF9o ZWFkZXIgKCk7CiAgICAgICBmb3IgKHNpZ251bSA9IDA7IHNpZ251bSA8IG5z aWdzOyBzaWdudW0rKykKIAl7Ci0JICBpZiAoc2lnc1tzaWdudW1dKQorCSAg aWYgKHNpZ3Nbc2lnbnVtXSAmJiB0YXJnZXRfc2lnbmFsX3RvX2hvc3RfcChz aWdudW0pKQogCSAgICB7CiAJICAgICAgc2lnX3ByaW50X2luZm8gKHNpZ251 bSk7CiAJICAgIH0KQEAgLTM5MjMsNyArMzkyNiwxMCBAQCBzaWduYWxzX2lu Zm8gKGNoYXIgKnNpZ251bV9leHAsIGludCBmcm9tCiAJICBvdXJzaWcgPQog CSAgICB0YXJnZXRfc2lnbmFsX2Zyb21fY29tbWFuZCAocGFyc2VfYW5kX2V2 YWxfbG9uZyAoc2lnbnVtX2V4cCkpOwogCX0KLSAgICAgIHNpZ19wcmludF9p bmZvIChvdXJzaWcpOworICAgICAgaWYgKCF0YXJnZXRfc2lnbmFsX3RvX2hv c3RfcChvdXJzaWcpKQorCSBwcmludGZfZmlsdGVyZWQoIlRoYXQgc2lnbmFs IGlzIG5vdCBkZWZpbmVkIG9uIHRoaXMgc3lzdGVtXG4iKTsKKyAgICAgIGVs c2UKKyAgICAgICAgIHNpZ19wcmludF9pbmZvIChvdXJzaWcpOwogICAgICAg cmV0dXJuOwogICAgIH0KIApAQCAtMzkzNSw5ICszOTQxLDcgQEAgc2lnbmFs c19pbmZvIChjaGFyICpzaWdudW1fZXhwLCBpbnQgZnJvbQogICAgIHsKICAg ICAgIFFVSVQ7CiAKLSAgICAgIGlmIChvdXJzaWcgIT0gVEFSR0VUX1NJR05B TF9VTktOT1dOCi0JICAmJiBvdXJzaWcgIT0gVEFSR0VUX1NJR05BTF9ERUZB VUxUCi0JICAmJiBvdXJzaWcgIT0gVEFSR0VUX1NJR05BTF8wKQorICAgICAg aWYgKHRhcmdldF9zaWduYWxfdG9faG9zdF9wKG91cnNpZykpCiAJc2lnX3By aW50X2luZm8gKG91cnNpZyk7CiAgICAgfQogCkluZGV4OiBzcmMvZ2RiL3Np Z25hbHMvc2lnbmFscy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp bGU6IC9kZXYvZnMvSC9ydXBwL2RldmVsLWxvY2FsLXJlcG9zaXRvcnkvc3Jj L2dkYi9zaWduYWxzL3NpZ25hbHMuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24g MS4xLjEuMQpkaWZmIC1wIC11IC1yMS4xLjEuMSBzaWduYWxzLmMKLS0tIHNy Yy9nZGIvc2lnbmFscy9zaWduYWxzLmMJMjAwMS8xMi8yMyAwMDozNDo1NQkx LjEuMS4xCisrKyBzcmMvZ2RiL3NpZ25hbHMvc2lnbmFscy5jCTIwMDEvMTIv MjQgMDE6NDI6NDEKQEAgLTIwNiwxNiArMjA2LDI0IEBAIHRhcmdldF9zaWdu YWxfdG9fc3RyaW5nIChlbnVtIHRhcmdldF9zaWcKICAgICByZXR1cm4gc2ln bmFsc1tUQVJHRVRfU0lHTkFMX1VOS05PV05dLnN0cmluZzsKIH0KIAoraW50 IHNhdmVkX2hvc3RzaWcgPSAwOworCiAvKiBSZXR1cm4gdGhlIG5hbWUgZm9y IGEgc2lnbmFsLiAgKi8KIGNoYXIgKgogdGFyZ2V0X3NpZ25hbF90b19uYW1l IChlbnVtIHRhcmdldF9zaWduYWwgc2lnKQogeworICBzdGF0aWMgY2hhciBi dWZbMTBdOworIAogICBpZiAoKHNpZyA+PSBUQVJHRVRfU0lHTkFMX0ZJUlNU KSAmJiAoc2lnIDw9IFRBUkdFVF9TSUdOQUxfTEFTVCkKICAgICAgICYmIHNp Z25hbHNbc2lnXS5uYW1lICE9IE5VTEwpCiAgICAgcmV0dXJuIHNpZ25hbHNb c2lnXS5uYW1lOwogICBlbHNlCi0gICAgLyogSSB0aGluayB0aGUgY29kZSB3 aGljaCBwcmludHMgdGhpcyB3aWxsIGFsd2F5cyBwcmludCBpdCBhbG9uZwot ICAgICAgIHdpdGggdGhlIHN0cmluZywgc28gbm8gbmVlZCB0byBiZSB2ZXJi b3NlICh2ZXJ5IG9sZCBjb21tZW50KS4gICovCisgICAgeworICAgICAgLyog SSB0aGluayB0aGUgY29kZSB3aGljaCBwcmludHMgdGhpcyB3aWxsIGFsd2F5 cyBwcmludCBpdCBhbG9uZworICAgICAgICAgd2l0aCB0aGUgc3RyaW5nLCBz byBubyBuZWVkIHRvIGJlIHZlcmJvc2UgKHZlcnkgb2xkIGNvbW1lbnQpLiAg Ki8KKyAgICAgIHNwcmludGYoYnVmLCAiPyhob3N0Iz0lZCkiLCBzYXZlZF9o b3N0c2lnKTsKKyAgICAgIHJldHVybiBidWY7CisgICAgfQogICAgIHJldHVy biAiPyI7CiB9CiAKQEAgLTQ5OSw2ICs1MDcsNyBAQCB0YXJnZXRfc2lnbmFs X2Zyb21faG9zdCAoaW50IGhvc3RzaWcpCiAJZXJyb3IgKCJHREIgYnVnOiB0 YXJnZXQuYyAodGFyZ2V0X3NpZ25hbF9mcm9tX2hvc3QpOiB1bnJlY29nbml6 ZWQgcmVhbC10aW1lIHNpZ25hbCIpOwogICAgIH0KICNlbmRpZgorICBzYXZl ZF9ob3N0c2lnID0gaG9zdHNpZzsKICAgcmV0dXJuIFRBUkdFVF9TSUdOQUxf VU5LTk9XTjsKIH0KIApJbmRleDogc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2Uvc2lnYWxsLmV4cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxl OiAvZGV2L2ZzL0gvcnVwcC9kZXZlbC1sb2NhbC1yZXBvc2l0b3J5L3NyYy9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ2FsbC5leHAsdgpyZXRyaWV2aW5n IHJldmlzaW9uIDEuMS4xLjEKZGlmZiAtcCAtdSAtcjEuMS4xLjEgc2lnYWxs LmV4cAotLS0gc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnYWxsLmV4 cAkyMDAxLzEyLzIzIDAwOjM1OjE4CTEuMS4xLjEKKysrIHNyYy9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL3NpZ2FsbC5leHAJMjAwMS8xMi8yNCAwMTo0Mjo0 MQpAQCAtNDYsMTQgKzQ2LDI0IEBAIHByb2MgdGVzdF9vbmVfc2lnIHtuZXh0 c2lnfSB7CiAgICAgZ2xvYmFsIGdkYl9wcm9tcHQKICAgICBnbG9iYWwgdGhp c3NpZwogCisgICAgc2V0IG5lZWRfYW5vdGhlcl9jb250aW51ZSAxCisgICAg c2V0IG1pc3NlZF9oYW5kbGVyIDAKICAgICBzZXQgdGhpc19zaWdfc3VwcG9y dGVkICRzaWdfc3VwcG9ydGVkCi0gICAgZ2RiX3Rlc3QgImhhbmRsZSBTSUck dGhpc3NpZyBzdG9wIHByaW50IiBcCi0JIlNJRyR0aGlzc2lnXFsgXHRcXSpZ ZXNcWyBcdFxdKlllc1xbIFx0XF0qWWVzLioiCisKKyAgICBzZW5kX2dkYiAi aGFuZGxlIFNJRyR0aGlzc2lnIHN0b3AgcHJpbnRcbiIKKyAgICBnZGJfZXhw ZWN0IHsKKwktcmUgIlNJRyR0aGlzc2lnXFsgXHRcXSpZZXNcWyBcdFxdKlll c1xbIFx0XF0qWWVzLiokZ2RiX3Byb21wdCAkIiB7CisJICAgIHBhc3MgInNp Z25hbCBTSUckdGhpc3NpZyBoYW5kbGVkIgorCX0KKwktcmUgIlNpZ25hbCBc WzAtOVxdKyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgbWFjaGluZS4qJGdkYl9w cm9tcHQgJCIgeworCSAgICBzZXQgdGhpc19zaWdfc3VwcG9ydGVkIDAKKwkg ICAgcGFzcyAic2lnbmFsIFNJRyR0aGlzc2lnIHJlcG9ydHMgbm90IHN1cHBv cnRlZCIKKwl9CisgICAgfQorCiAgICAgZ2RiX3Rlc3QgImIgaGFuZGxlXyR0 aGlzc2lnIiAiQnJlYWtwb2ludCBcWzAtOVxdKyAuKiIKICAgICBnZGJfdGVz dCAiYiBnZW5fJG5leHRzaWciICJCcmVha3BvaW50IFxbMC05XF0rIC4qIgog Ci0gICAgc2V0IG5lZWRfYW5vdGhlcl9jb250aW51ZSAxCi0gICAgc2V0IG1p c3NlZF9oYW5kbGVyIDAKICAgICBpZiAkdGhpc19zaWdfc3VwcG9ydGVkIHRo ZW4gewogCXNlbmRfZ2RiICJjb250aW51ZVxuIgogCWlmIHsgJHRoaXNzaWcg PT0gIklPIiB9IHsKSW5kZXg6IHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L3NpZ25hbHMuZXhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6 IC9kZXYvZnMvSC9ydXBwL2RldmVsLWxvY2FsLXJlcG9zaXRvcnkvc3JjL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnbmFscy5leHAsdgpyZXRyaWV2aW5n IHJldmlzaW9uIDEuMS4xLjEKZGlmZiAtcCAtdSAtcjEuMS4xLjEgc2lnbmFs cy5leHAKLS0tIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ25hbHMu ZXhwCTIwMDEvMTIvMjMgMDA6MzU6MTgJMS4xLjEuMQorKysgc3JjL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnbmFscy5leHAJMjAwMS8xMi8yNCAwMTo0 Mjo0MQpAQCAtMzM3LDYgKzMzNyw3IEBAIGdkYl9zdGFydAogIyBUQVJHRVRf U0lHTkFMX1VOS05PV04gYXJlIHNraXBwZWQuCiBwcm9jIHRlc3RfaGFuZGxl X2FsbF9wcmludCB7fSB7CiAgICAgZ2xvYmFsIHRpbWVvdXQKKyAgICBnbG9i YWwgZ2RiX3Byb21wdAogICAgICMgSW5jcmVhc2UgdGltZW91dCBhbmQgZXhw ZWN0IGlucHV0IGJ1ZmZlciBmb3IgbGFyZ2Ugb3V0cHV0IGZyb20gZ2RiLgog ICAgICMgQWxsb3cgYmxhbmsgb3IgVEFCIGFzIHdoaXRlc3BhY2UgY2hhcmFj dGVycy4KICAgICBzZXQgb2xkdGltZW91dCAkdGltZW91dApAQCAtMzQ1LDEw ICszNDYsMzEgQEAgcHJvYyB0ZXN0X2hhbmRsZV9hbGxfcHJpbnQge30gewog ICAgIGlmIHsgIVtpc3RhcmdldCAiKi0qLWxpbnV4KiJdCiAgICAgICAgICAm JiAoIFtpc3RhcmdldCAiKi0qLWdudSoiXQogICAgICAgICAgICAgICB8fCBb aXN0YXJnZXQgIiotKi1tYWNoKiJdICkgfSB7Ci0JZ2RiX3Rlc3QgImhhbmRs ZSBhbGwgcHJpbnQiICJTaWduYWxcWyAJXF0rU3RvcFxbIAlcXStQcmludFxb IAlcXStQYXNzIHRvIHByb2dyYW1cWyAJXF0rRGVzY3JpcHRpb25cclxuU0lH SFVQXFsgCVxdK1llc1xbIAlcXStZZXNcWyAJXF0rWWVzXFsgCVxdK0hhbmd1 cC4qU0lHNjNcWyAJXF0rWWVzXFsgCVxdK1llc1xbIAlcXStZZXNcWyAJXF0r UmVhbC10aW1lIGV2ZW50IDYzLipFWENfQlJFQUtQT0lOVFxbIAlcXStZZXNc WyAJXF0rWWVzXFsgCVxdK1llc1xbIAlcXStCcmVha3BvaW50IgorICAgICAJ Z2RiX3Rlc3QgImhhbmRsZSBhbGwgcHJpbnQiICJTaWduYWxcWyAJXF0rU3Rv cFxbIAlcXStQcmludFxbIAlcXSstPiBwcm9ncmFtXFsgCVxdK0Rlc2NyaXB0 aW9uXHJcblNJR0hVUFxbIAlcXStZZXNcWyAJXF0rWWVzXFsgCVxdK1llc1xb IAlcXStIYW5ndXBcclxuLipTSUc2M1xbIAlcXStZZXNcWyAJXF0rWWVzXFsg CVxdK1llc1xbIAlcXStSZWFsLXRpbWUgZXZlbnQgNjMuKkVYQ19CUkVBS1BP SU5UXFsgCVxdK1llc1xbIAlcXStZZXNcWyAJXF0rWWVzXFsgCVxdK0JyZWFr cG9pbnQiCiAgICAgfSBlbHNlIHsKLQlnZGJfdGVzdCAiaGFuZGxlIGFsbCBw cmludCIgIlNpZ25hbFxbIAlcXStTdG9wXFsgCVxdK1ByaW50XFsgCVxdK1Bh c3MgdG8gcHJvZ3JhbVxbIAlcXStEZXNjcmlwdGlvblxyXG5TSUdIVVBcWyAJ XF0rWWVzXFsgCVxdK1llc1xbIAlcXStZZXNcWyAJXF0rSGFuZ3VwLipTSUc2 M1xbIAlcXStZZXNcWyAJXF0rWWVzXFsgCVxdK1llc1xbIAlcXStSZWFsLXRp bWUgZXZlbnQgNjMuKiIKKyAgICAgCWdkYl90ZXN0ICJoYW5kbGUgYWxsIHBy aW50IiAiU2lnbmFsXFsgCVxdK1N0b3BcWyAJXF0rUHJpbnRcWyAJXF0rLT4g cHJvZ3JhbVxbIAlcXStEZXNjcmlwdGlvblxyXG5TSUdIVVBcWyAJXF0rWWVz XFsgCVxdK1llc1xbIAlcXStZZXNcWyAJXF0rSGFuZ3VwXHJcbi4qU0lHVVNS MlxbICAgICAgXF0rWWVzXFsgICAgICAgIFxdK1llc1xbICAgICAgXF0rWWVz XFsgICAgICAgIFxdK1VzZXIgZGVmaW5lZCBzaWduYWwgMlxyXG4uKiIKICAg ICB9CisKKyAgICBzZW5kX2dkYiAiaGFuZGxlIGFsbCBwcmludFxuIgorCisg ICAgIyB0ZXN0IGZvciB0aGUgcHJlZml4IHRoYXQgd2UgYWx3YXlzIHJlcXVp cmUKKyAgICBnZGJfZXhwZWN0IHsKKwktcmUgIlNpZ25hbFxbICAgXF0rU3Rv cFxbICAgICAgIFxdK1ByaW50XFsgICAgICBcXSstPiBwcm9ncmFtXFsgCVxd K0Rlc2NyaXB0aW9uXHJcblNJR0hVUFxbICAgICAgXF0rWWVzXFsgICAgICAg IFxdK1llc1xbICAgICAgICBcXStZZXNcWyAJXF0rSGFuZ3VwXHJcbi4qJGdk Yl9wcm9tcHQgJCIgeyBwYXNzICJTaWduYWwgbGlzdCBwcmVmaXgiIH0KKwkt cmUgIi4qJGdkYl9wcm9tcHQgJCIgeyBmYWlsICJObyBzaWduYWwgbGlzdCIg fQorCXRpbWVvdXQgeyBmYWlsICJObyBzaWduYWwgbGlzdDsgKHRpbWVvdXQp IiB9CisgICAgICB9CisKKyAgICAjIE5vdyB0ZXN0IGZvciBzb21lIHRoaW5n cyB3ZSBET04nVCB3YW50LCBhcyB3ZWxsIGFzIGxvb2tpbmcgZm9yIAorICAg ICMgdGhlIG5leHQgcHJvbXB0LgorICAgIHNlbmRfZ2RiICJoYW5kbGUgYWxs IHByaW50XG4iCisgICAgZ2RiX2V4cGVjdCB7CisJLXJlICIuKlRBUkdFVF9T SUdOQUxfMC4qJGdkYl9wcm9tcHQgJCIgeyBmYWlsICJUQVJHRVRfU0lHTkFM XzAgc2hvdWxkIG5vdCBiZSBmb3VuZCIgfQorCS1yZSAiLipUQVJHRVRfU0lH TkFMX0RFRkFVTFQuKiRnZGJfcHJvbXB0ICQiIHsgZmFpbCAiVEFSR0VUX1NJ R05BTF9ERUZBVUxUIHNob3VsZCBub3QgYmUgZm91bmQiIH0KKwktcmUgIi4q VEFSR0VUX1NJR05BTF9VTktOT1dOLiokZ2RiX3Byb21wdCAkIiB7IGZhaWwg IlRBUkdFVF9TSUdOQUxfVU5LTk9XTiBzaG91bGQgbm90IGJlIGZvdW5kIiB9 CisJLXJlICIuKiRnZGJfcHJvbXB0ICQiIHsgcGFzcyAiaGFuZGxlIHByaW50 IGFsbCIgfQorCXRpbWVvdXQgeyBmYWlsICJKdW5rIGluIHNpZ25hbCBsaXN0 OyAodGltZW91dCkiIH0KKyAgICB9CisKICAgICBzZXQgdGltZW91dCAkb2xk dGltZW91dAogICAgIHZlcmJvc2UgIlRpbWVvdXQgcmVzdG9yZWQgdG8gJHRp bWVvdXQgc2Vjb25kcyIgMgogfQpAQCAtNDIyLDE1ICs0NDQsMzkgQEAgVGhl IHByb2dyYW0gYmVpbmcgZGVidWdnZWQgc3RvcHBlZCB3aGlsZQogICAgIGdk Yl90ZXN0ICJwIGNvdW50IiAiPSA1IiAicCBjb3VudCAjMiBpbiBzaWduYWxz LmV4cCIKIAogCi0jIFZlcmlmeSB0aGF0ICJpbmZvIHNpZ25hbHMiIHByb2R1 Y2VzIHJlYXNvbmFibGUgb3V0cHV0LgotIworIyBWZXJpZnkgdGhhdCAiaW5m byBzaWduYWxzIiBwcm9kdWNlcyByZWFzb25hYmxlIG91dHB1dC4gIFdlJ3Jl IGNvbmZpcm1pbmcKKyMgdGhhdCB0aGVyZSBhcmUgbm8gc3VwcmlzZSBzaWdu YWwgbmFtZXMsIGJ1dCB3YW50IHRvIGFsbG93IHRoZSBub25wb3J0YWJsZQor IyBzaWduYWxzIHRvIGJlIG9taXR0ZWQuICBOb3RlIHRoYXQgc29tZSBzaWdu YWxzIGFyZSBleHBlY3RlZCB0byBhbHdheXMKKyMgYmUgcHJlc2VudDsgd2hl dGhlciB0aGlzIGlzIGV4YWN0bHkgdGhlIHJpZ2h0IHNldCBJJ20gbm90IHN1 cmUuICBNYWtpbmcKKyMgdGhlbSBhbGwgb3B0aW9uYWwgc2VlbXMgdmVyeSB3 cm9uZy4KKworIyBXb3JrYXJvdW5kIGJ1ZyBpbiBleHBlY3Q6IHRoZSBzaW5n bGUgUkUgdGhhdCBzaG91bGQgYmUgYWJsZSB0byBkbyB0aGlzCisjIGlzIChw cm9iYWJseSkgdG9vIGxvbmcsIHNvIHdlIHVzZSAzIHNob3J0ZXIgZ2RiX2V4 cGVjdCBjYWxscywgZWFjaCBsb29raW5nCisjIGZvciBwYXJ0IG9mIGl0Lgor CiAgICAgc2VuZF9nZGIgImluZm8gc2lnbmFsc1xuIgorICAgIGdkYl9leHBl Y3QgeworICAgICAgLXJlICIuKlNJR0hVUFxbXlxyXSpcclxuU0lHSU5UXFte XHJdKlxyXG5TSUdRVUlUXFteXHJdKlxyXG5TSUdJTExcW15ccl0qXHJcblNJ R1RSQVBcW15ccl0qXHJcblNJR0FCUlRcW15ccl0qXHJcbihTSUdFTVRcW15c cl0qXHJcbnwpU0lHRlBFXFteXHJdKlxyXG5TSUdLSUxMXFteXHJdKlxyXG5T SUdCVVNcW15ccl0qXHJcblNJR1NFR1ZcW15ccl0qXHJcblNJR1NZU1xbXlxy XSpcclxuU0lHUElQRVxbXlxyXSpcclxuU0lHQUxSTVxbXlxyXSpcclxuU0lH VEVSTVxbXlxyXSpcclxuU0lHVVJHXFteXHJdKlxyXG5TSUdTVE9QXFteXHJd KlxyXG5TSUdUU1RQXFteXHJdKlxyXG5TSUdDT05UXFteXHJdKlxyXG5TSUdD SExEXFteXHJdKlxyXG5TSUdUVElOXFteXHJdKlxyXG5TSUdUVE9VXFteXHJd KlxyXG5TSUdJT1xbXlxyXSpcclxuU0lHWENQVVxbXlxyXSpcclxuU0lHWEZT WlxbXlxyXSpcclxuU0lHVlRBTFJNXFteXHJdKlxyXG5TSUdQUk9GXFteXHJd KlxyXG5TSUdXSU5DSFxbXlxyXSpcclxuKFNJR0xPU1RcW15ccl0qXHJcbnwp U0lHVVNSMVxbXlxyXSpcclxuU0lHVVNSMlxbXlxyXSpcclxuKFNJR1BXUlxb XlxyXSpcclxufCkoU0lHUE9MTFxbXlxyXSpcclxufCkoU0lHV0lORFxbXlxy XSpcclxufCkoU0lHUEhPTkVcW15ccl0qXHJcbnwpKFNJR1dBSVRJTkdcW15c cl0qXHJcbnwpKFNJR0xXUFxbXlxyXSpcclxufCkoU0lHREFOR0VSXFteXHJd KlxyXG58KShTSUdHUkFOVFxbXlxyXSpcclxufCkoU0lHUkVUUkFDVFxbXlxy XSpcclxufCkoU0lHTVNHXFteXHJdKlxyXG58KShTSUdTT1VORFxbXlxyXSpc clxufCkoU0lHU0FLXFteXHJdKlxyXG58KShTSUdQUklPXFteXHJdKlxyXG58 KSIgXAorICAgICAgICAgICAgICB7cGFzcyAiaW5mbyBzaWduYWxzIHBhcnQg MSJ9CisgICAgICAtcmUgIiRnZGJfcHJvbXB0ICQiXAorICAgICAgICAgICAg ICB7ZmFpbCAiaW5mbyBzaWduYWxzIHBhcnQgMSJ9CisgICAgICB0aW1lb3V0 IHtmYWlsICIodGltZW91dCkgaW5mbyBzaWduYWxzIHBhcnQgMSJ9CisgICAg fQorCisgICAgZ2RiX2V4cGVjdCB7CisgICAgICAtcmUgIihTSUczM1xbXlxy XSpcclxufCkoU0lHMzRcW15ccl0qXHJcbnwpKFNJRzM1XFteXHJdKlxyXG58 KShTSUczNlxbXlxyXSpcclxufCkoU0lHMzdcW15ccl0qXHJcbnwpKFNJRzM4 XFteXHJdKlxyXG58KShTSUczOVxbXlxyXSpcclxufCkoU0lHNDBcW15ccl0q XHJcbnwpKFNJRzQxXFteXHJdKlxyXG58KShTSUc0MlxbXlxyXSpcclxufCko U0lHNDNcW15ccl0qXHJcbnwpKFNJRzQ0XFteXHJdKlxyXG58KShTSUc0NVxb XlxyXSpcclxufCkoU0lHNDZcW15ccl0qXHJcbnwpKFNJRzQ3XFteXHJdKlxy XG58KShTSUc0OFxbXlxyXSpcclxufCkoU0lHNDlcW15ccl0qXHJcbnwpIiBc CisgICAgICAgICAgICAgIHtwYXNzICJpbmZvIHNpZ25hbHMgcGFydCAyIn0K KyAgICAgIC1yZSAiJGdkYl9wcm9tcHQgJCJcCisgICAgICAgICAgICAgIHtm YWlsICJpbmZvIHNpZ25hbHMgcGFydCAyIn0KKyAgICAgIHRpbWVvdXQge2Zh aWwgIih0aW1lb3V0KSBpbmZvIHNpZ25hbHMgcGFydCAyIn0KKyAgICB9CisK ICAgICBnZGJfZXhwZWN0IHsKLSAgICAgIC1yZSAiU0lHSFVQLipTSUdJTlQu KlNJR1FVSVQuKlNJR0lMTC4qU0lHVFJBUC4qU0lHQUJSVC4qU0lHRU1ULipT SUdGUEUuKlNJR0tJTEwuKlNJR0JVUy4qU0lHU0VHVi4qU0lHU1lTLipTSUdQ SVBFLipTSUdBTFJNLipTSUdURVJNLipTSUdVUkcuKlNJR1NUT1AuKlNJR1RT VFAuKlNJR0NPTlQuKlNJR0NITEQuKlNJR1RUSU4uKlNJR1RUT1UuKlNJR0lP LipTSUdYQ1BVLipTSUdYRlNaLipTSUdWVEFMUk0uKlNJR1BST0YuKlNJR1dJ TkNILipTSUdMT1NULipTSUdVU1IxLipTSUdVU1IyLipTSUdQV1IuKlNJR1BP TEwuKlNJR1dJTkQuKlNJR1BIT05FLipTSUdXQUlUSU5HLipTSUdMV1AuKlNJ R0RBTkdFUi4qU0lHR1JBTlQuKlNJR1JFVFJBQ1QuKlNJR01TRy4qU0lHU09V TkQuKlNJR1NBSy4qU0lHUFJJTy4qU0lHMzMuKlNJRzM0LipTSUczNS4qU0lH MzYuKlNJRzM3LipTSUczOC4qU0lHMzkuKlNJRzQwLipTSUc0MS4qU0lHNDIu KlNJRzQzLipTSUc0NC4qU0lHNDUuKlNJRzQ2LipTSUc0Ny4qU0lHNDguKlNJ RzQ5LipTSUc1MC4qU0lHNTEuKlNJRzUyLipTSUc1My4qU0lHNTQuKlNJRzU1 LipTSUc1Ni4qU0lHNTcuKlNJRzU4LipTSUc1OS4qU0lHNjAuKlNJRzYxLipT SUc2Mi4qU0lHNjMuKlVzZSB0aGUgXCJoYW5kbGVcIiBjb21tYW5kIHRvIGNo YW5nZSB0aGVzZSB0YWJsZXMuKiRnZGJfcHJvbXB0ICQiXAotICAgICAgICAg ICAgICB7cGFzcyAiaW5mbyBzaWduYWxzIn0KKyAgICAgIC1yZSAiKFNJRzUw XFteXHJdKlxyXG58KShTSUc1MVxbXlxyXSpcclxufCkoU0lHNTJcW15ccl0q XHJcbnwpKFNJRzUzXFteXHJdKlxyXG58KShTSUc1NFxbXlxyXSpcclxufCko U0lHNTVcW15ccl0qXHJcbnwpKFNJRzU2XFteXHJdKlxyXG58KShTSUc1N1xb XlxyXSpcclxufCkoU0lHNThcW15ccl0qXHJcbnwpKFNJRzU5XFteXHJdKlxy XG58KShTSUc2MFxbXlxyXSpcclxufCkoU0lHNjFcW15ccl0qXHJcbnwpKFNJ RzYyXFteXHJdKlxyXG58KShTSUc2M1xbXlxyXSpcclxufCkuKlVzZSB0aGUg XCJoYW5kbGVcIiBjb21tYW5kIHRvIGNoYW5nZSB0aGVzZSB0YWJsZXMuKiRn ZGJfcHJvbXB0ICQiIFwKKyAgICAgICAgICAgICAge3Bhc3MgImluZm8gc2ln bmFscyBwYXJ0IDMifQogICAgICAgLXJlICIkZ2RiX3Byb21wdCAkIlwKLSAg ICAgICAgICAgICAge2ZhaWwgImluZm8gc2lnbmFscyJ9Ci0gICAgICB0aW1l b3V0IHtmYWlsICIodGltZW91dCkgaW5mbyBzaWduYWxzIn0KKyAgICAgICAg ICAgICAge2ZhaWwgImluZm8gc2lnbmFscyBwYXJ0IDMifQorICAgICAgdGlt ZW91dCB7ZmFpbCAiKHRpbWVvdXQpIGluZm8gc2lnbmFscyBwYXJ0IDIifQog ICAgIH0KIAogIyBWZXJpZnkgdGhhdCAiaW5mbyBzaWduYWwiIGNvcnJlY3Rs eSBoYW5kbGVzIGFuIGFyZ3VtZW50LCBiZSBpdCBhCkBAIC01MTAsOSArNTU2 LDkgQEAgVGhlIHByb2dyYW0gYmVpbmcgZGVidWdnZWQgc3RvcHBlZCB3aGls ZQogIyBWZXJpZnkgdGhhdCB3ZSBjYW4gImhhbmRsZSIgbXVsdGlwbGUgc2ln bmFscyBhdCBvbmNlLCBpbnRlcnNwZXJzZWQKICMgd2l0aCBhY3Rpb25zLgog IwotICAgIHNlbmRfZ2RiICJoYW5kbGUgU0lHNjMgcHJpbnQgU0lHSUxMXG4i CisgICAgc2VuZF9nZGIgImhhbmRsZSBTSUdTRUdWIHByaW50IFNJR0lMTFxu IgogICAgIGdkYl9leHBlY3QgewotICAgICAgLXJlICIuKlNJR0lMTFxbIFx0 XF0qWWVzXFsgXHRcXSpZZXNcWyBcdFxdKlllc1xbIFx0XF0qSWxsZWdhbCBp bnN0cnVjdGlvbi4qU0lHNjNcWyBcdFxdKlllc1xbIFx0XF0qWWVzXFsgXHRc XSpZZXNcWyBcdFxdKlJlYWwtdGltZSBldmVudCA2My4qJGdkYl9wcm9tcHQg JCJcCisgICAgICAtcmUgIi4qU0lHSUxMXFsgXHRcXSpZZXNcWyBcdFxdKlll c1xbIFx0XF0qWWVzXFsgXHRcXSpJbGxlZ2FsIGluc3RydWN0aW9uLipTSUdT RUdWXFsgXHRcXSpZZXNcWyBcdFxdKlllc1xbIFx0XF0qWWVzXFsgXHRcXSpT ZWdtZW50YXRpb24gZmF1bHQuKiRnZGJfcHJvbXB0ICQiXAogICAgICAgICAg ICAgICB7cGFzcyAiaGFuZGxlIG11bHRpcGxlIFNJR3MifQogICAgICAgLXJl ICIkZ2RiX3Byb21wdCAkIlwKICAgICAgICAgICAgICAge2ZhaWwgImhhbmRs ZSBtdWx0aXBsZSBTSUdzIn0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCkdkYiB3YXNuJ3Qgc2VhcmNoaW5nIHRoZSBTVEFUSUNfQkxPQ0sgc3lt dGFiLCBjYXVzaW5nIGl0IG5vdCB0bwpmaW5kIHNvbWUgc3RhdGljIGZ1bmN0 aW9ucyAocmVwb3J0aW5nICJubyBsaW5lbnVtYmVycyBrbm93biIgd2hlbgp0 aGVyZSB3ZXJlIHBlcmZlY3RseSBnb29kIGxpbmUgbnVtYmVycyBpbiB0aGUg YS5vdXQgZmlsZS4pICBUaGUKYnVsayBvZiB0aGUgY2hhbmdlIGlzIGluZGVu dGF0aW9uIGNoYW5nZXMuCgpGcmkgRGVjICAzIDEwOjA3OjIwIFBTVCAxOTk5 ICBEb25uIFRlcnJ5IDxkb25udGVAbWljcm9zb2Z0LmNvbT4KCSogc3ltdGFi LmMoZmluZF9wY19zZWN0X3N5bXRhYik6IHNlYXJjaCBTVEFUSUNfQkxPQ0ss IHRvbywKCWZvciBzdGF0aWMgZnVuY3Rpb25zLgoKSW5kZXg6IHNyYy9nZGIv c3ltdGFiLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2Rl di9mcy9IL3J1cHAvZGV2ZWwtbG9jYWwtcmVwb3NpdG9yeS9zcmMvZ2RiL3N5 bXRhYi5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEuMS4xCmRpZmYgLXAg LXUgLXIxLjEuMS4xIHN5bXRhYi5jCi0tLSBzcmMvZ2RiL3N5bXRhYi5jCTIw MDEvMTIvMjMgMDA6MzQ6NTYJMS4xLjEuMQorKysgc3JjL2dkYi9zeW10YWIu YwkyMDAxLzEyLzI0IDAyOjA3OjEyCkBAIC0xNDAzLDkgKzE0MDMsMTQgQEAg ZmluZF9wY19zZWN0X3N5bXRhYiAoQ09SRV9BRERSIHBjLCBhc2VjdAogCiAg IEFMTF9TWU1UQUJTIChvYmpmaWxlLCBzKQogICB7CisgICAgaW50IGJsb2Nr bnVtOworCiAgICAgYnYgPSBCTE9DS1ZFQ1RPUiAocyk7Ci0gICAgYiA9IEJM T0NLVkVDVE9SX0JMT0NLIChidiwgR0xPQkFMX0JMT0NLKTsKIAorICAgIGZv ciAoYmxvY2tudW0gPSBHTE9CQUxfQkxPQ0s7IGJsb2NrbnVtIDw9IFNUQVRJ Q19CTE9DSzsgYmxvY2tudW0rKykKKyAgICB7CisvLyBJTkRFTlRBVElPTiBG SVggREVMQVlFRCAodW50aWwgZmluYWwgbWVyZ2UpLgorICAgIGIgPSBCTE9D S1ZFQ1RPUl9CTE9DSyAoYnYsIGJsb2NrbnVtKTsKICAgICBpZiAoQkxPQ0tf U1RBUlQgKGIpIDw9IHBjCiAJJiYgQkxPQ0tfRU5EIChiKSA+IHBjCiAJJiYg KGRpc3RhbmNlID09IDAKQEAgLTE0MzksNiArMTQ0NCw3IEBAIGZpbmRfcGNf c2VjdF9zeW10YWIgKENPUkVfQUREUiBwYywgYXNlY3QKIAlkaXN0YW5jZSA9 IEJMT0NLX0VORCAoYikgLSBCTE9DS19TVEFSVCAoYik7CiAJYmVzdF9zID0g czsKICAgICAgIH0KKyAgICB9CiAgIH0KIAogICBpZiAoYmVzdF9zICE9IE5V TEwpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpOb3JtYWxseSBp dCdzIGEgYmFkIGlkZWEgdGhhdCBicmVha3BvaW50cyBhcmUgbGVmdCBpbiBz aGFyZWQgbGlicmFyaWVzCndoaWxlIHRoZSBzaGFyZWQgbGlicmFyeSBpbml0 aWFsaXphdGlvbiBpcyBnb2luZyBvbiAoZm9yIGV4YW1wbGUsIGEgCmJyZWFr cG9pbnQgY291bGQgYmUgc2V0IG9uIHNvbWV0aGluZyB0aGF0J3MgcmVsb2Nh dGVkKS4gIFRoYXQncyB0dXJuZWQKb2ZmIGVsc2V3aGVyZS4gIEhvd2V2ZXIs IHdoZW4gZGVidWdnaW5nIHRoZSBzaGFyZWQgbGlicmFyeSBpbml0aWFsaXph dGlvbgppdHNlbGYsIGl0J3MgZGVzaXJlYWJsZSB0byBsZWF2ZSB0aGVtIChh bmQgZW5hYmxlIHRoZW0gb25lIGF0IGEgdGltZQpieSBoYW5kLCBpZiBuZWNl c3NhcnkpLiAgCgpEZWJ1Z2dpbmcgdHJhbXBvbGluZSBjb2RlIGFuZCBzaWdu YWwgaGFuZGxlciBjYWxsZXJzIHByZXNlbnRzIHRoZSAKc2FtZSBzb3J0IG9m IHByb2JsZW0uCgpXaXphcmQgbW9kZSBpbmZvcm1zIHRoZSBkZWJ1Z2dlciB0 aGF0IHlvdSByZWFsbHkgKHJlYWxseSwgcmVhbGx5ISkKa25vdyB3aGF0IHlv dSdyZSBkb2luZywgYW5kIHRoYXQgaXQgc2hvdWxkbid0IHByb3RlY3QgeW91 IGZyb20KeW91cnNlbGYgKGFzIG11Y2gpLgoKRnJpIERlYyAgMyAxMDowNzoy MCBQU1QgMTk5OSAgRG9ubiBUZXJyeSA8ZG9ubnRlQG1pY3Jvc29mdC5jb20+ CgkqIGRlZnMuaCh3aXphcmRfbW9kZSk6IGRlZmluZS4KCSogaW5mcnVuLmMo d2FpdF9mb3JfaW5mZXJpb3IsIHN0ZXBfaW50b19mdW5jdGlvbik6IGFsbG93 IHNpbmdsZSAKCXN0ZXAgdGhydSB0cmFtcG9saW5lIHdoZW4gaW4gd2l6YXJk IG1vZGUuCgkqIHN0YWNrLmMocHJpbnRfZnJhbWVfaW5mbyk6IHNob3cgZHVt bXlzIGFuZCBzaWduYWwgaGFuZGxlcgoJY2FsbGVycyBpbiBzdGFjayBmb3Ig d2l6YXJkIG1vZGUuCgkqIHRvcC5jKGluaXRfbWFpbik6IGluaXQgd2l6YXJk X21vZGUsIHByaW50IGFwcHJvcHJpYXRlIGhlbHAuCgkqIGJyZWFrcG9pbnQu YyhkaXNhYmxlX2JyZWFrcG9pbnRzX2luX3NobGlicyk6IEhvbm9yIHdpemFy ZCBtb2RlLgoKSW5kZXg6IHNyYy9nZGIvYnJlYWtwb2ludC5jCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9kZXYvZnMvSC9ydXBwL2RldmVs LWxvY2FsLXJlcG9zaXRvcnkvc3JjL2dkYi9icmVha3BvaW50LmMsdgpyZXRy aWV2aW5nIHJldmlzaW9uIDEuMgpkaWZmIC1wIC11IC1yMS4yIGJyZWFrcG9p bnQuYwotLS0gc3JjL2dkYi9icmVha3BvaW50LmMJMjAwMS8xMi8yMyAyMzoz MTowOAkxLjIKKysrIHNyYy9nZGIvYnJlYWtwb2ludC5jCTIwMDEvMTIvMjQg MDI6MDk6MDEKQEAgLTQwOTgsNiArNDA5OCwxMiBAQCBkaXNhYmxlX2JyZWFr cG9pbnRzX2luX3NobGlicyAoaW50IHNpbGVuCiAgIHN0cnVjdCBicmVha3Bv aW50ICpiOwogICBpbnQgZGlzYWJsZWRfc2hsaWJfYnJlYWtzID0gMDsKIAor ICBpZiAod2l6YXJkX21vZGUpCisgICAgeworICAgICAgcHJpbnRmX2ZpbHRl cmVkICgiQnJlYWtwb2ludHMgTk9UIERJU0FCTEVEIGR1cmluZyByZWxvY2F0 aW9uLlxuIik7CisgICAgICByZXR1cm47CisgICAgfQorCiAgIC8qIFNlZSBh bHNvOiBpbnNlcnRfYnJlYWtwb2ludHMsIHVuZGVyIERJU0FCTEVfVU5TRVRU QUJMRV9CUkVBSy4gKi8KICAgQUxMX0JSRUFLUE9JTlRTIChiKQogICB7Cklu ZGV4OiBzcmMvZ2RiL2RlZnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD UyBmaWxlOiAvZGV2L2ZzL0gvcnVwcC9kZXZlbC1sb2NhbC1yZXBvc2l0b3J5 L3NyYy9nZGIvZGVmcy5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjIKZGlm ZiAtcCAtdSAtcjEuMiBkZWZzLmgKLS0tIHNyYy9nZGIvZGVmcy5oCTIwMDEv MTIvMjMgMjM6MDE6MTkJMS4yCisrKyBzcmMvZ2RiL2RlZnMuaAkyMDAxLzEy LzI0IDAyOjA5OjAxCkBAIC0xNzUsNiArMTc1LDcgQEAgZXh0ZXJuIGludCBk YnhfY29tbWFuZHM7CiBleHRlcm4gaW50IHF1aXRfZmxhZzsKIGV4dGVybiBp bnQgaW1tZWRpYXRlX3F1aXQ7CiBleHRlcm4gaW50IHNldmVuYml0X3N0cmlu Z3M7CitleHRlcm4gaW50IHdpemFyZF9tb2RlOwogCiBleHRlcm4gdm9pZCBx dWl0ICh2b2lkKTsKIApJbmRleDogc3JjL2dkYi9pbmZydW4uYwo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvZGV2L2ZzL0gvcnVwcC9kZXZl bC1sb2NhbC1yZXBvc2l0b3J5L3NyYy9nZGIvaW5mcnVuLmMsdgpyZXRyaWV2 aW5nIHJldmlzaW9uIDEuMgpkaWZmIC1wIC11IC1yMS4yIGluZnJ1bi5jCi0t LSBzcmMvZ2RiL2luZnJ1bi5jCTIwMDEvMTIvMjQgMDE6NDQ6NDAJMS4yCisr KyBzcmMvZ2RiL2luZnJ1bi5jCTIwMDEvMTIvMjQgMDI6MDk6MDEKQEAgLTI2 NDIsNiArMjY0Miw3IEBAIGhhbmRsZV9pbmZlcmlvcl9ldmVudCAoc3RydWN0 IGV4ZWN1dGlvbl8KICAgICAvKiBEaWQgd2UganVzdCB0YWtlIGEgc2lnbmFs PyAgKi8KICAgICBpZiAoUENfSU5fU0lHVFJBTVAgKHN0b3BfcGMsIGVjcy0+ c3RvcF9mdW5jX25hbWUpCiAJJiYgIVBDX0lOX1NJR1RSQU1QIChwcmV2X3Bj LCBwcmV2X2Z1bmNfbmFtZSkKKyAJJiYgIXdpemFyZF9tb2RlCiAJJiYgSU5O RVJfVEhBTiAocmVhZF9zcCAoKSwgc3RlcF9zcCkpCiAgICAgICB7CiAJLyog V2UndmUganVzdCB0YWtlbiBhIHNpZ25hbDsgZ28gdW50aWwgd2UgYXJlIGJh Y2sgdG8KQEAgLTI3NzgsNyArMjc3OSw3IEBAIGhhbmRsZV9pbmZlcmlvcl9l dmVudCAoc3RydWN0IGV4ZWN1dGlvbl8KIAkgICBmdW5jdGlvbi4gIFRoYXQn cyB3aGF0IHRlbGxzIHVzIChhKSB3aGV0aGVyIHdlIHdhbnQgdG8gc3RlcAog CSAgIGludG8gaXQgYXQgYWxsLCBhbmQgKGIpIHdoYXQgcHJvbG9ndWUgd2Ug d2FudCB0byBydW4gdG8KIAkgICB0aGUgZW5kIG9mLCBpZiB3ZSBkbyBzdGVw IGludG8gaXQuICAqLwotCXRtcCA9IFNLSVBfVFJBTVBPTElORV9DT0RFIChz dG9wX3BjKTsKKwl0bXAgPSB3aXphcmRfbW9kZSA/IDAgOiBTS0lQX1RSQU1Q T0xJTkVfQ09ERSAoc3RvcF9wYyk7CiAJaWYgKHRtcCAhPSAwKQogCSAgZWNz LT5zdG9wX2Z1bmNfc3RhcnQgPSB0bXA7CiAJZWxzZQpAQCAtMjg1Niw3ICsy ODU3LDcgQEAgaGFuZGxlX2luZmVyaW9yX2V2ZW50IChzdHJ1Y3QgZXhlY3V0 aW9uXwogCUNPUkVfQUREUiB0bXA7CiAKIAkvKiBEZXRlcm1pbmUgd2hlcmUg dGhpcyB0cmFtcG9saW5lIHJldHVybnMuICAqLwotCXRtcCA9IFNLSVBfVFJB TVBPTElORV9DT0RFIChzdG9wX3BjKTsKKwl0bXAgPSB3aXphcmRfbW9kZSA/ IDAgOiBTS0lQX1RSQU1QT0xJTkVfQ09ERSAoc3RvcF9wYyk7CiAKIAkvKiBP bmx5IHByb2NlZWQgdGhyb3VnaCBpZiB3ZSBrbm93IHdoZXJlIGl0J3MgZ29p bmcuICAqLwogCWlmICh0bXApCkBAIC00NDI3LDYgKzQ0MjgsMTIgQEAgZnVu Y3Rpb24gd2l0aG91dCBkZWJ1ZyBsaW5lIGluZm9ybWF0aW9uIAogaW5zdHJ1 Y3Rpb24gb2YgdGhhdCBmdW5jdGlvbi4gT3RoZXJ3aXNlLCB0aGUgZnVuY3Rp b24gaXMgc2tpcHBlZCBhbmRcblwKIHRoZSBzdGVwIGNvbW1hbmQgc3RvcHMg YXQgYSBkaWZmZXJlbnQgc291cmNlIGxpbmUuIiwKIAkJCSZzZXRsaXN0KTsK KyAgYWRkX3Nob3dfZnJvbV9zZXQgKGMsICZzaG93bGlzdCk7CisKKyAgYyA9 ICBhZGRfc2V0X2NtZCAoIndpemFyZC1tb2RlIiwgY2xhc3Nfc3VwcG9ydCwg CisJCSAgICB2YXJfYm9vbGVhbiwgIChjaGFyICopICZ3aXphcmRfbW9kZSwK KwkJICAgICJTZXQgZGVidWdnaW5nIG9mIHRyYW1wb2xpbmVzIGFuZCBvdGhl ciBpbmZyYXN0cnVjdHVyZS4iLAorCQkgICAgJnNldGxpc3QpOwogICBhZGRf c2hvd19mcm9tX3NldCAoYywgJnNob3dsaXN0KTsKIAogICAvKiBwdGlkIGlu aXRpYWxpemF0aW9ucyAqLwpJbmRleDogc3JjL2dkYi9zdGFjay5jCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9kZXYvZnMvSC9ydXBwL2Rl dmVsLWxvY2FsLXJlcG9zaXRvcnkvc3JjL2dkYi9zdGFjay5jLHYKcmV0cmll dmluZyByZXZpc2lvbiAxLjEuMS4xCmRpZmYgLXAgLXUgLXIxLjEuMS4xIHN0 YWNrLmMKLS0tIHNyYy9nZGIvc3RhY2suYwkyMDAxLzEyLzIzIDAwOjM0OjU2 CTEuMS4xLjEKKysrIHNyYy9nZGIvc3RhY2suYwkyMDAxLzEyLzI0IDAyOjA5 OjAxCkBAIC0zNDAsNyArMzQwLDcgQEAgcHJpbnRfZnJhbWVfaW5mb19iYXNl IChzdHJ1Y3QgZnJhbWVfaW5mbwogICAgICB0byBjaGVjayBmb3IgYSBicF9j YWxsX2R1bW15IGJyZWFrcG9pbnQuICAqLwogICBpZiAoUENfSU5fQ0FMTF9E VU1NWSAoZmktPnBjLCBzcCwgZmktPmZyYW1lKSkKICNlbHNlCi0gIGlmIChm cmFtZV9pbl9kdW1teSAoZmkpKQorICBpZiAoIXdpemFyZF9tb2RlICYmIGZy YW1lX2luX2R1bW15IChmaSkpCiAjZW5kaWYKICAgICB7CiAgICAgICBhbm5v dGF0ZV9mcmFtZV9iZWdpbiAobGV2ZWwgPT0gLTEgPyAwIDogbGV2ZWwsIGZp LT5wYyk7CkBAIC0zNTQsNyArMzU0LDcgQEAgcHJpbnRfZnJhbWVfaW5mb19i YXNlIChzdHJ1Y3QgZnJhbWVfaW5mbwogICAgICAgYW5ub3RhdGVfZnJhbWVf ZW5kICgpOwogICAgICAgcmV0dXJuOwogICAgIH0KLSAgaWYgKGZpLT5zaWdu YWxfaGFuZGxlcl9jYWxsZXIpCisgIGlmICghd2l6YXJkX21vZGUgJiYgZmkt PnNpZ25hbF9oYW5kbGVyX2NhbGxlcikKICAgICB7CiAgICAgICBhbm5vdGF0 ZV9mcmFtZV9iZWdpbiAobGV2ZWwgPT0gLTEgPyAwIDogbGV2ZWwsIGZpLT5w Yyk7CiAKSW5kZXg6IHNyYy9nZGIvdG9wLmMKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQpSQ1MgZmlsZTogL2Rldi9mcy9IL3J1cHAvZGV2ZWwtbG9jYWwtcmVw b3NpdG9yeS9zcmMvZ2RiL3RvcC5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAx LjIKZGlmZiAtcCAtdSAtcjEuMiB0b3AuYwotLS0gc3JjL2dkYi90b3AuYwky MDAxLzEyLzIzIDIzOjAxOjE5CTEuMgorKysgc3JjL2dkYi90b3AuYwkyMDAx LzEyLzI0IDAyOjA5OjAxCkBAIC05Myw2ICs5MywxMiBAQCBleHRlcm4gY2hh ciBsYW5nX2ZyYW1lX21pc21hdGNoX3dhcm5bXTsJCiAKIGludCBjYXV0aW9u ID0gMTsJCS8qIERlZmF1bHQgaXMgeWVzLCBzaWdoLiAqLwogCisvKiBUaGlz IGlzIG5vbi16ZXJvIHdoZW4gd2Ugd2FudCB0byBkZWJ1ZyB0aGUgaW5mcmFz dHJ1Y3R1cmUsIHN1Y2ggYXMKKyAgIHNpbmdsZS1zdGVwIHRyYW1wb2xpbmUg Y29kZSAoZWl0aGVyIHNpZ25hbCBvciBmdW5jdGlvbiBjYWxsKSwgc2VlIHRo ZQorICAgc3RhY2sgdW53aW5kIHRocnUgYSBzaWduYWwgdHJhbXBvbGluZSwg ZXRjLiAqLworCitpbnQgd2l6YXJkX21vZGUgPSAwOworCiAvKiBzdGRpbyBz dHJlYW0gdGhhdCBjb21tYW5kIGlucHV0IGlzIGJlaW5nIHJlYWQgZnJvbS4g IFNldCB0byBzdGRpbiBub3JtYWxseS4KICAgIFNldCBieSBzb3VyY2VfY29t bWFuZCB0byB0aGUgZmlsZSB3ZSBhcmUgc291cmNpbmcuICBTZXQgdG8gTlVM TCBpZiB3ZSBhcmUKICAgIGV4ZWN1dGluZyBhIHVzZXItZGVmaW5lZCBjb21t YW5kIG9yIGludGVyYWN0aW5nIHZpYSBhIEdVSS4gICovCmRpZmYgLWRydXBQ IC0tZXhjbHVkZS1mcm9tPS9NL2Rvbm4vZGlmZnMvZXhjbHVkZS5maWxlcyBz cmMvZ2RiLnNhdmVkL2RvYy9nZGIudGV4aW5mbyBzcmMvZ2RiL2RvYy9nZGIu dGV4aW5mbwotLS0gc3JjL2dkYi5zYXZlZC9kb2MvZ2RiLnRleGluZm8JV2Vk IE1hciAxMyAxNDoyNTowMiAyMDAyCisrKyBzcmMvZ2RiL2RvYy9nZGIudGV4 aW5mbwlXZWQgTWFyIDEzIDE2OjA5OjM2IDIwMDIKQEAgLTI1ODYsNiArMjU4 NiwyOSBAQCBzdGFydGluZyB3aXRoIEBjb2Rley0xfTsgQHNhbXB7aW5mbyBi cmVhCiBZb3UgY2FuIHNlZSB0aGVzZSBicmVha3BvaW50cyB3aXRoIHRoZSBA dmFsdWV7R0RCTn0gbWFpbnRlbmFuY2UgY29tbWFuZAogQHNhbXB7bWFpbnQg aW5mbyBicmVha3BvaW50c30gKEBweHJlZnttYWludCBpbmZvIGJyZWFrcG9p bnRzfSkuCiAKK0BjaW5kZXggd2l6YXJkICBtb2RlCitAY2luZGV4IHNoYXJl ZCBsaWJyYXJpZXMKK0BjaW5kZXggZHluYW1pYyBsb2FkaW5nCitAY2luZGV4 IGRsb3BlbgorQGtpbmRleCBzZXQgd2l6YXJkLW1vZGUKK0BpdGVtIHNldCB3 aXphcmQtbW9kZSBAdmFye21vZGV9CitAdmFsdWV7R0RCTn0gd2lsbCBub3Jt YWxseSBkaXNhYmxlIGFuZCByZS1lbmFibGUgYnJlYWtwb2ludHMgd2hlbiBs b2FkaW5nIGFuZCAKK3VubG9hZGluZyBzaGFyZWQgbGlicmFyaWVzIGFuZCBk dXJpbmcgcHJvY2VzcyBpbml0aWFsaXphdGlvbi4gIElmCit5b3UgbmVlZCB0 byBkZWJ1ZyB0aGUgc2hhcmVkIGxpYnJhcnkgbWVjaGFuaXNtIG9yIG90aGVy d2lzZSB3YW50IHRvCitjb21wbGV0ZWx5IG1hbmFnZSB5b3VyIG93biBicmVh a3BvaW50cywgQGNvZGV7c2V0IHdpemFyZC1tb2RlIG9ufSB0ZWxscworQHZh bHVle0dEQk59IHRvIHNpbXBseSBsZWF2ZSBicmVha3BvaW50cyBhbG9uZSBh dCBzdWNoIHRpbWVzLiAgVGhpcyB3aWxsIGNhdXNlCitAdmFsdWV7R0RCTn0g dG8gY29tcGxhaW4gdGhhdCBpdCBjYW5ub3Qgc2V0IGJyZWFrcG9pbnRzIGF0 IGFkZHJlc3NlcworaW4gc2hhcmVkIGxpYnJhcmllcyB0aGF0IGFyZSBub3Qg eWV0IGxvYWRlZC4gIEhvd2V2ZXIsIGJ5IHVzaW5nIHRoZQorQGNvZGV7ZW5h YmxlfSBhbmQgQGNvZGV7ZGlzYWJsZX0gY29tbWFuZHMsIHlvdSBjYW4gY29u dHJvbCB0aGUgYnJlYWtwb2ludHMKK21hbnVhbGx5LiAgVGhpcyBpcyBiZXN0 IHVzZWQgYnkgc2V0dGluZyBhIGJyZWFrcG9pbnQganVzdCBhZnRlciBhIHNo YXJlZAorbGlicmFyeSBpcyBsb2FkZWQgaW50byBtZW1vcnksIGJ1dCBiZWZv cmUgdGhlIGNvZGUgeW91IGFyZSBkZWJ1Z2dpbmcKK3J1bnMsIGFuZCB0aGVu IHNldHRpbmcgb3IgZW5hYmxpbmcgdGhlIGJyZWFrcG9pbnRzIGluIHRoZSBz aGFyZWQgbGlicmFyeQordXBvbiByZWFjaGluZyB0aGUgZmlyc3QgYnJlYWtw b2ludC4KKworQGVtcGgoTk9URSk6IFVubGVzcyB5b3UgYXJlIHdvcmtpbmcg b24gdGhlIHNoYXJlZCBsaWJyYXJ5IG9yIG90aGVyCisidW5kZXIgdGhlIGNv dmVycyIgbWVjaGFuaXNtcyBwcm92aWRlZCBieSB0aGUgb3BlcmF0aW5nIHN5 c3RlbSBvciB0aGUKK2NvbXBpbGVyLCB5b3UgYWxtb3N0IGFzc3VyZWRseSBk byBub3QgbmVlZCB0aGlzLCBhbmQgdXNpbmcgaXQgd2lsbAorbWFrZSB5b3Vy IGxpZmUgbXVjaCBtb3JlIGRpZmZpY3VsdC4KIAogQG5vZGUgU2V0IFdhdGNo cG9pbnRzCiBAc3Vic2VjdGlvbiBTZXR0aW5nIHdhdGNocG9pbnRzCi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbiBhIGxvbmcgZnVuY3Rpb24s IGFza2luZyBmb3IgYSBmdWxsIGRpc2Fzc2VtYmx5IGlzIG9mdGVuIGZhcgp0 b28gbXVjaC4gIEFsbG93IGRpc2Fzc2VtYmxpbmcgYSBzaW5nbGUgbGluZS4g IEluIG9wdGltaXplZCBjb2RlLAppdCBkaXNhc3NlbWJsZXMgdGhlIGZpcnN0 ICJjaHVuayIgb2YgdGhlIGxpbmUsIGJ1dCBpZiB5b3UncmUgZG9pbmcKZGlz YXNzZW1ibHlzIHlvdSBzaG91bGQgYmUgcHJlcGFyZWQgZm9yIHRoYXQuCgpG cmkgRGVjICAzIDEwOjA3OjIwIFBTVCAxOTk5ICBEb25uIFRlcnJ5IDxkb25u dGVAbWljcm9zb2Z0LmNvbT4KCSogcHJpbnRjbWQuYyhkaXNhc3NlbWJsZV9j b21tYW5kKTogc3VwcG9ydCAiZGlzYXNzZW1ibGUgbGluZSIuCgkoX2luaXRp YWxpemVfcHJpbnRjbWQpOiByZWZsZWN0IGluIGhlbHAuCgkqIGhlbHAuZXhw OiBhZGQgaGVscCBoZXJlLgoKSW5kZXg6IHNyYy9nZGIvcHJpbnRjbWQuYwo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvZGV2L2ZzL0gvcnVw cC9kZXZlbC1sb2NhbC1yZXBvc2l0b3J5L3NyYy9nZGIvcHJpbnRjbWQuYyx2 CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zCmRpZmYgLXAgLXUgLXIxLjMgcHJp bnRjbWQuYwotLS0gc3JjL2dkYi9wcmludGNtZC5jCTIwMDEvMTIvMjQgMDE6 NDI6MDgJMS4zCisrKyBzcmMvZ2RiL3ByaW50Y21kLmMJMjAwMS8xMi8yNCAw MjoxMDoyOQpAQCAtMjM3MCw3ICsyMzcwLDMyIEBAIGRpc2Fzc2VtYmxlX2Nv bW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb20KICNlbmRpZgogICAgICAgbG93 ICs9IEZVTkNUSU9OX1NUQVJUX09GRlNFVDsKICAgICB9Ci0gIGVsc2UKKyAg ZWxzZSBpZiAoc3RybmNtcCgibGluZSIsIGFyZywgc3BhY2VfaW5kZXgtYXJn KSA9PSAwKQorICAgIHsKKyAgICAgIC8qIFR3byBhcmdzLCB0aGUgZmlyc3Qg aXMgKGFiYnJldmlhdGVkKSAibGluZSIgKi8KKyAgICAgIHN0cnVjdCBzeW10 YWJfYW5kX2xpbmUgc2FsOworICAgICAgc3RydWN0IHN5bXRhYnNfYW5kX2xp bmVzIHNhbHM7CisKKyAgICAgIHNhbHMgPSBkZWNvZGVfbGluZV9zcGVjXzEg KHNwYWNlX2luZGV4ICsgMSwgMCk7CisgICAgICBpZiAoc2Fscy5uZWx0cyA8 PSAwKSAKKwl7CisJICAgZXJyb3IgKCJJbnZhbGlkIGxpbmUgc3BlYy5cbiIp OworCX0KKyAgICAgIGlmIChzYWxzLm5lbHRzID4gMSkgCisJeworCSAgIHBy aW50Zl9maWx0ZXJlZCAoIk1vcmUgdGhhbiBvbmUgbGluZSByZXN1bHRlZDsg ZG9pbmcgZmlyc3QuXG4iKTsKKyAgICAgICAgfQorICAgICAgc2FsID0gc2Fs cy5zYWxzWzBdOworICAgICAgaWYgKCEoc2FsLmxpbmUgPiAwICYmIGZpbmRf bGluZV9wY19yYW5nZSAoc2FsLCAmbG93LCAmaGlnaCkpKQorCXsKKwkgICBl cnJvciAoIkxpbmUgbm90IGZvdW5kLlxuIik7CisJfQorICAgICAgaWYgKGxv dyA9PSBoaWdoKQorCXsKKwkgICBlcnJvciAoIkxpbmUgY29udGFpbnMgbm8g Y29kZS5cbiIpOworCX0KKyAgICB9CisgIGVsc2UgCiAgICAgewogICAgICAg LyogVHdvIGFyZ3VtZW50cy4gICovCiAgICAgICAqc3BhY2VfaW5kZXggPSAn XDAnOwpAQCAtMjQ0Myw3ICsyNDY4LDggQEAgd2l0aCB0aGlzIGNvbW1hbmQg b3IgXCJwcmludFwiLiIsIE5VTEwpKQogCSAgICAgICAiRGlzYXNzZW1ibGUg YSBzcGVjaWZpZWQgc2VjdGlvbiBvZiBtZW1vcnkuXG5cCiBEZWZhdWx0IGlz IHRoZSBmdW5jdGlvbiBzdXJyb3VuZGluZyB0aGUgcGMgb2YgdGhlIHNlbGVj dGVkIGZyYW1lLlxuXAogV2l0aCBhIHNpbmdsZSBhcmd1bWVudCwgdGhlIGZ1 bmN0aW9uIHN1cnJvdW5kaW5nIHRoYXQgYWRkcmVzcyBpcyBkdW1wZWQuXG5c Ci1Ud28gYXJndW1lbnRzIGFyZSB0YWtlbiBhcyBhIHJhbmdlIG9mIG1lbW9y eSB0byBkdW1wLiIpOworSWYgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIFwibGlu ZVwiIChvciBcImxcIikgZHVtcCB0aGF0IGxpbmUuXG5cCitUd28gb3RoZXIg YXJndW1lbnRzIGFyZSB0YWtlbiBhcyBhIHJhbmdlIG9mIG1lbW9yeSB0byBk dW1wLiIpOwogICBzZXRfY21kX2NvbXBsZXRlciAoYywgbG9jYXRpb25fY29t cGxldGVyKTsKICAgaWYgKHhkYl9jb21tYW5kcykKICAgICBhZGRfY29tX2Fs aWFzICgidmEiLCAiZGlzYXNzZW1ibGUiLCBjbGFzc194ZGIsIDApOwpJbmRl eDogc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaGVscC5leHAKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2Rldi9mcy9IL3J1cHAvZGV2 ZWwtbG9jYWwtcmVwb3NpdG9yeS9zcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9oZWxwLmV4cCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yCmRpZmYgLXAg LXUgLXIxLjIgaGVscC5leHAKLS0tIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL2hlbHAuZXhwCTIwMDEvMTIvMjMgMjM6MzE6MTIJMS4yCisrKyBzcmMv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9oZWxwLmV4cAkyMDAxLzEyLzI0IDAy OjEwOjI5CkBAIC0xMDgsNyArMTA4LDcgQEAgZ2RiX3Rlc3QgImhlbHAgZGlz YWJsZSBicmVha3BvaW50cyIgIkRpcwogIyB0ZXN0IGhlbHAgZGlzYWJsZSBk aXNwbGF5CiBnZGJfdGVzdCAiaGVscCBkaXNhYmxlIGRpc3BsYXkiICJEaXNh YmxlIHNvbWUgZXhwcmVzc2lvbnMgdG8gYmUgZGlzcGxheWVkIHdoZW4gcHJv Z3JhbSBzdG9wc1wuXFtcclxuXF0rQXJndW1lbnRzIGFyZSB0aGUgY29kZSBu dW1iZXJzIG9mIHRoZSBleHByZXNzaW9ucyB0byBzdG9wIGRpc3BsYXlpbmdc LlxbXHJcblxdK05vIGFyZ3VtZW50IG1lYW5zIGRpc2FibGUgYWxsIGF1dG9t YXRpYy1kaXNwbGF5IGV4cHJlc3Npb25zXC5cW1xyXG5cXStEbyBcImluZm8g ZGlzcGxheVwiIHRvIHNlZSBjdXJyZW50IGxpc3Qgb2YgY29kZSBudW1iZXJz XC4iICJoZWxwIGRpc2FibGUgZGlzcGxheSIKICMgdGVzdCBoZWxwIGRpc2Fz c2VtYmxlCi1nZGJfdGVzdCAiaGVscCBkaXNhc3NlbWJsZSIgIkRpc2Fzc2Vt YmxlIGEgc3BlY2lmaWVkIHNlY3Rpb24gb2YgbWVtb3J5XC5cW1xyXG5cXStE ZWZhdWx0IGlzIHRoZSBmdW5jdGlvbiBzdXJyb3VuZGluZyB0aGUgcGMgb2Yg dGhlIHNlbGVjdGVkIGZyYW1lXC5cW1xyXG5cXStXaXRoIGEgc2luZ2xlIGFy Z3VtZW50LCB0aGUgZnVuY3Rpb24gc3Vycm91bmRpbmcgdGhhdCBhZGRyZXNz IGlzIGR1bXBlZFwuXFtcclxuXF0rVHdvIGFyZ3VtZW50cyBhcmUgdGFrZW4g YXMgYSByYW5nZSBvZiBtZW1vcnkgdG8gZHVtcFwuIiAiaGVscCBkaXNhc3Nl bWJsZSIKK2dkYl90ZXN0ICJoZWxwIGRpc2Fzc2VtYmxlIiAiRGlzYXNzZW1i bGUgYSBzcGVjaWZpZWQgc2VjdGlvbiBvZiBtZW1vcnlcLlxbXHJcblxdK0Rl ZmF1bHQgaXMgdGhlIGZ1bmN0aW9uIHN1cnJvdW5kaW5nIHRoZSBwYyBvZiB0 aGUgc2VsZWN0ZWQgZnJhbWVcLlxbXHJcblxdK1dpdGggYSBzaW5nbGUgYXJn dW1lbnQsIHRoZSBmdW5jdGlvbiBzdXJyb3VuZGluZyB0aGF0IGFkZHJlc3Mg aXMgZHVtcGVkXC5cW1xyXG5cXStJZiB0aGUgZmlyc3QgYXJndW1lbnQgaXMg XCJsaW5lXCIgLm9yIFwibFwiLiBkdW1wIHRoYXQgbGluZVwuXFtcclxuXF0r VHdvIG90aGVyIGFyZ3VtZW50cyBhcmUgdGFrZW4gYXMgYSByYW5nZSBvZiBt ZW1vcnkgdG8gZHVtcFwuIiAiaGVscCBkaXNhc3NlbWJsZSIKICMgdGVzdCBo ZWxwIGRpc3BsYXkKIGdkYl90ZXN0ICJoZWxwIGRpc3BsYXkiICJQcmludCB2 YWx1ZSBvZiBleHByZXNzaW9uIEVYUCBlYWNoIHRpbWUgdGhlIHByb2dyYW0g c3RvcHNcLlxbXHJcblxdKy9GTVQgbWF5IGJlIHVzZWQgYmVmb3JlIEVYUCBh cyBpbiB0aGUgXCJwcmludFwiIGNvbW1hbmRcLlxbXHJcblxdKy9GTVQgXCJp XCIgb3IgXCJzXCIgb3IgaW5jbHVkaW5nIGEgc2l6ZS1sZXR0ZXIgaXMgYWxs b3dlZCxcW1xyXG5cXSthcyBpbiB0aGUgXCJ4XCIgY29tbWFuZCwgYW5kIHRo ZW4gRVhQIGlzIHVzZWQgdG8gZ2V0IHRoZSBhZGRyZXNzIHRvIGV4YW1pbmVc W1xyXG5cXSthbmQgZXhhbWluaW5nIGlzIGRvbmUgYXMgaW4gdGhlIFwieFwi IGNvbW1hbmRcLlxbXHJcblxdK1dpdGggbm8gYXJndW1lbnQsIGRpc3BsYXkg YWxsIGN1cnJlbnRseSByZXF1ZXN0ZWQgYXV0by1kaXNwbGF5IGV4cHJlc3Np b25zXC5cW1xyXG5cXStVc2UgXCJ1bmRpc3BsYXlcIiB0byBjYW5jZWwgZGlz cGxheSByZXF1ZXN0cyBwcmV2aW91c2x5IG1hZGVcLiIgImhlbHAgZGlzcGxh eSIKICMgdGVzdCBoZWxwIGRvCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQpXaGVuIHN0b3JpbmcgdG8gbWVtb3J5ICh1c2luZyBwIHdpdGggPSks IGNoZWNrIHRoZSB0YXJnZXQKc2VjdGlvbiBmb3IgcmVhZC1vbmx5LiAgSXQg bWF5IGJlIHBvc3NpYmxlIGZvciBnZGIgdG8gd3JpdGUgaW50byBhIApzZWN0 aW9uIHRoYXQgdGhlIGFwcGxpY2F0aW9uIGhhcyBzZXQgdXAgYXMgcmVhZC1v bmx5LiAgVGhlIGdkYgp1c2VyIHNob3VsZCBiZSB3YXJuZWQuCgpGcmkgRGVj ICAzIDEwOjA3OjIwIFBTVCAxOTk5ICBEb25uIFRlcnJ5IDxkb25udGVAbWlj cm9zb2Z0LmNvbT4KCSogdmFsb3BzLmMoY2hlY2tfbWVtX2FjY2Vzc19pbnRl cm5hbCwgY2hlY2tfbWVtX2FjY2Vzcyk6IE5ldy4KCSh2YWx1ZV9hc3NpZ24p OiBVc2UuCgpJbmRleDogc3JjL2dkYi92YWxvcHMuYwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09ClJDUyBmaWxlOiAvZGV2L2ZzL0gvcnVwcC9kZXZlbC1sb2Nh bC1yZXBvc2l0b3J5L3NyYy9nZGIvdmFsb3BzLmMsdgpyZXRyaWV2aW5nIHJl dmlzaW9uIDEuMwpkaWZmIC1wIC11IC1yMS4zIHZhbG9wcy5jCi0tLSBzcmMv Z2RiL3ZhbG9wcy5jCTIwMDEvMTIvMjQgMDA6NTc6MjUJMS4zCisrKyBzcmMv Z2RiL3ZhbG9wcy5jCTIwMDEvMTIvMjQgMDI6MTE6NDEKQEAgLTUyOSw3ICs1 MjksODAgQEAgdmFsdWVfZmV0Y2hfbGF6eSAocmVnaXN0ZXIgdmFsdWVfcHRy IHZhbAogICByZXR1cm4gMDsKIH0KIAorc3RydWN0IF9jaGVja19pbmZvIHsK KyAgIENPUkVfQUREUiBzdGFydF9hZGRyOworICAgQ09SRV9BRERSIGVuZF9h ZGRyOworICAgaW50IG1vZGU7CisgICBpbnQgbWF0Y2hlZDsKK307ICAKKwor LyogTG9vayB0byBzZWUgaWYgdGhlIHNwZWNpZmllZCBmbGFncyBhcmUgc2V0 IGluIHRoZSBzZWN0aW9uIGNvbnRhaW5pbmcKKyAgIHRoZSBhZGRyZXNzIHJh bmdlLiAgSWYgdGhlIGFkZHJlc3MgcmFuZ2Ugc3BhbnMgc2VjdGlvbiBib3Vu ZGFyaWVzLAorICAgdGhlIGZsYWdzIG11c3QgYXBwbHkgdG8gYWxsIHBhcnRz LiAqLworc3RhdGljIHZvaWQKK2NoZWNrX21lbV9hY2Nlc3NfaW50ZXJuYWwg UEFSQU1TKChiZmQgKiwgYXNlY3Rpb24gKiwgUFRSKSk7CisKK3N0YXRpYyB2 b2lkCitjaGVja19tZW1fYWNjZXNzX2ludGVybmFsKGFiZmQsIGFzZWN0LCBp bmYpCitiZmQgKmFiZmQ7Cithc2VjdGlvbiAqYXNlY3Q7CitQVFIgaW5mOwor eworICAgcmVnaXN0ZXIgc3RydWN0IF9jaGVja19pbmZvICpjaGVja19pbmZv ID0gaW5mOworICAgQ09SRV9BRERSIHNlY3Rpb25fc3RhcnQsIHNlY3Rpb25f ZW5kOworICAgaW50IGZsYWdzOworICAgaW50IHBhZ2Vfc2l6ZSA9IGdldHBh Z2VzaXplKCk7CisgICAgCisgICBmbGFncyA9IGJmZF9nZXRfc2VjdGlvbl9m bGFncyhhYmZkLCBhc2VjdCk7CisKKyAgIC8qIGlzIGl0IHJlYWxseSBpbiB0 aGUgaW1hZ2U/ICovCisgICBpZiAoKGZsYWdzICYgKFNFQ19MT0FEfFNFQ19B TExPQykpID09IDApCisgICAgICAgcmV0dXJuOworCisgICBzZWN0aW9uX3N0 YXJ0ID0gYmZkX3NlY3Rpb25fdm1hIChhYmZkLCBhc2VjdCkgKyBOT05aRVJP X0xJTktfQkFTRShhYmZkKTsKKyAgIHNlY3Rpb25fZW5kID0gYmZkX3NlY3Rp b25fc2l6ZShhYmZkLCBhc2VjdCk7CisgICBzZWN0aW9uX2VuZCA9ICgoc2Vj dGlvbl9lbmQrcGFnZV9zaXplLTEpICYgfihwYWdlX3NpemUtMSkpCisJCSAr IHNlY3Rpb25fc3RhcnQ7CisKKyAgIGlmIChzZWN0aW9uX3N0YXJ0IDw9IGNo ZWNrX2luZm8tPnN0YXJ0X2FkZHIKKwkgICAgICAgICAgICAgJiYgY2hlY2tf aW5mby0+c3RhcnRfYWRkciA8IHNlY3Rpb25fZW5kKQorICAgICB7CisJY2hl Y2tfaW5mby0+bWF0Y2hlZCA9ICgoZmxhZ3MgJiBjaGVja19pbmZvLT5tb2Rl KSAhPSAwKTsKKyAgICAgfQorICAgLyogZG8gaXQgc2VwYXJhdGVseSBzbyB3 ZSBjaGVjayB3aGVuIGl0IHNwYW5zIHNlY3Rpb25zICovCisgICBpZiAoc2Vj dGlvbl9zdGFydCA8PSBjaGVja19pbmZvLT5lbmRfYWRkcgorCSAgICAgICAg ICAgICAmJiBjaGVja19pbmZvLT5lbmRfYWRkciA8IHNlY3Rpb25fZW5kKQor ICAgICB7CisJY2hlY2tfaW5mby0+bWF0Y2hlZCAmPSAoKGZsYWdzICYgY2hl Y2tfaW5mby0+bW9kZSkgIT0gMCk7CisgICAgIH0KK30KKworCitpbnQKK2No ZWNrX21lbV9hY2Nlc3MgUEFSQU1TKChDT1JFX0FERFIsIExPTkdFU1QsIGlu dCkpOworCitpbnQKK2NoZWNrX21lbV9hY2Nlc3Moc3RhcnQsIGxlbmd0aCwg bW9kZSkKK0NPUkVfQUREUiBzdGFydDsKK0xPTkdFU1QgbGVuZ3RoOworaW50 IG1vZGU7Cit7CisgICBzdHJ1Y3QgX2NoZWNrX2luZm8gY2hlY2tfaW5mbzsK IAorICAgY2hlY2tfaW5mby5zdGFydF9hZGRyID0gc3RhcnQ7CisgICBjaGVj a19pbmZvLmVuZF9hZGRyID0gc3RhcnQgKyBsZW5ndGg7CisgICBjaGVja19p bmZvLm1vZGUgPSBtb2RlOworICAgY2hlY2tfaW5mby5tYXRjaGVkID0gMDsK KyAgIGlmIChleGVjX2JmZCkKKyAgICAgeworICAgICAgIGJmZF9tYXBfb3Zl cl9zZWN0aW9ucyhleGVjX2JmZCwgY2hlY2tfbWVtX2FjY2Vzc19pbnRlcm5h bCwgCisJICAgKFBUUikmY2hlY2tfaW5mbyk7CisgICAgICAgcmV0dXJuIGNo ZWNrX2luZm8ubWF0Y2hlZDsKKyAgICAgfQorICAgZWxzZQorICAgICAgIHJl dHVybiAwOyAgIC8qIG5vIHRhcmdldCwgYWxsb3cgb3RoZXIgcHJvdGVjdGlv bnMgdG8gZGVhbCB3aXRoIGl0ICovCit9CisKIC8qIFN0b3JlIHRoZSBjb250 ZW50cyBvZiBGUk9NVkFMIGludG8gdGhlIGxvY2F0aW9uIG9mIFRPVkFMLgog ICAgUmV0dXJuIGEgbmV3IHZhbHVlIHdpdGggdGhlIGxvY2F0aW9uIG9mIFRP VkFMIGFuZCBjb250ZW50cyBvZiBGUk9NVkFMLiAgKi8KIApAQCAtNTkzLDYg KzY2NiwyMSBAQCB2YWx1ZV9hc3NpZ24gKHJlZ2lzdGVyIHZhbHVlX3B0ciB0 b3ZhbCwgCiAJY2hhciAqZGVzdF9idWZmZXI7CiAJQ09SRV9BRERSIGNoYW5n ZWRfYWRkcjsKIAlpbnQgY2hhbmdlZF9sZW47CisKKwkvKiBpZiB0aGlzIGlz IGluIHJlYWRvbmx5IG1lbW9yeSwgZG9uJ3QgcHJvY2VlZCB3aXRob3V0IGEg Y29tcGxhaW50OgorCSAgIFdlIG1pZ2h0IGJlIGFibGUgdG8gcmVhZC93cml0 ZSBtZW1vcnkgdGhlIGFwcGxpY2F0aW9uIHRoaW5rcyBpcworCSAgIHJlYWRv bmx5IChlLmcuIHdoZW4gd3JpdGluZyBicmVha3BvaW50cyB3aGVuIHRleHQg aXMgcmVhZG9ubHksCisJICAgd2UgbXVzdCBiZSBhYmxlIHRvIGRvIHRoYXQp LiAgSG93ZXZlciwgaWYgdGhlIHVzZXIgdHJpZXMgdG8gY2hhbmdlCisJICAg c29tZXRoaW5nIHRoZSBhcHBsaWNhdGlvbiB0aGlua3MgaXMgcmVhZG9ubHkg ZGF0YSwgd2Ugc2hvdWxkIHdhcm4uCisJICAgKEl0J2QgYmUgdG9vIGhlYXZ5 LWhhbmRlZCB0byByZWplY3QuKSAqLworCisJaWYgKGNoZWNrX21lbV9hY2Nl c3MoVkFMVUVfQUREUkVTUyAodG92YWwpICsgVkFMVUVfT0ZGU0VUICh0b3Zh bCksCisJCSAodXNlX2J1ZmZlciA/IHVzZV9idWZmZXIgOiBUWVBFX0xFTkdU SCAodHlwZSkpIC0gMSwKKwkJIFNFQ19SRUFET05MWSkKKwkgICAgJiYgIXF1 ZXJ5KCJUaGlzIHdvdWxkIG1vZGlmeSB0YXJnZXQncyByZWFkLW9ubHkgbWVt b3J5OyBwcm9jZWVkPyIpKQorCSAgeworCSAgICAgIGJyZWFrOworCSAgfQog CiAJaWYgKFZBTFVFX0JJVFNJWkUgKHRvdmFsKSkKIAkgIHsKLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCk5FRURTIFRIT1VHSFQKCkNhbGxzIHRv IGRsY2xvc2UoKSB3ZXJlIGNvbmZ1c2luZyB0aGluZ3M6IGEgY29tcGxhaW50 IGFib3V0Cm1lbW9yeSBub3QgYmVpbmcgd3JpdGVhYmxlIHdhcyBiZWluZyBn ZW5lcmF0ZWQsIGFuZCBicmVha3BvaW50cwp3ZXJlIGxlZnQgYWN0aXZlIGFu ZCBwb2ludGluZyB0byBub25leGlzdGVudCBtZW1vcnkuCgogIC0gYnJlYWtw b2ludC5jL2JyZWFrcG9pbnRfMTogcmVwb3J0IHNobGliX2Rpc2FibGVkIGJy ZWFrcG9pbnRzCiAgICBhcyBzLCBub3Qgbi4KCkFCT1ZFIE1BWSBOTyBMT05H RVIgQVBQTFk/Pz8gKHBhdGNoIGJlaW5nIGFwcGxpZWQsIGNoZWNrIHNlbWFu dGljcy4pCgogIC0gYnJlYWtwb2ludC5jL3JlX2VuYWJsZV9icmVha3BvaW50 c19pbl9zaGxpYnMoKTogZG9uJ3QgZG8gaXQKICAgIGlmIGdsb2JhbCBzb2xp Yl9pc19kZWxldGluZyBpcyBzZXQgKGFuZCBkZWZpbmUgdGhhdCB2YXJpYWJs ZQogICAgaW5pdGlhbGx5IHRvIHplcm8uKQoKICBJbiBwZWktc29saWIuYy9z b2xpYl9hZGQ6IHNldCBzb2xpYl9pc19kZWxldGluZyB3aGVuIHNvbWV0aGlu ZwogIGlzIGJlaW5nIGRlbGV0ZWQsIGFuZCBjbGVhciB3aGVuIHdlJ3JlIHRv bGQgdGhpbmdzIGFyZSBjb25zaXN0ZW50CiAgYWdhaW4uICBEaXNhYmxlIGJy ZWFrcG9pbnRzIGluIHNobGlicyB3aGlsZSBkZWxldGVpbmcgYSBzaGFyZWQK ICBsaWJyYXJ5LiAgKE90aGVyICpzb2xpYi5jIG1heSB3aXNoIHRvIGZvbGxv dy4pIChwZWktc29saWIuYyB0bwogIGZvbGxvdyBpbiBhbm90aGVyIHBhdGNo LikKCkZyaSBEZWMgIDMgMTA6MDc6MjAgUFNUIDE5OTkgIERvbm4gVGVycnkg PGRvbm50ZUBtaWNyb3NvZnQuY29tPgoJKiBicmVha3BvaW50LmMoYnBlbmFi bGVzKTogcmVwb3J0IHNoYXJlZC1saWIgc3VzcGVuZGVkIGJyZWFrcG9pbnRz CglhcyAicyIuICAoc29saWJfaXNfZGVsZXRpbmcpOiBkZWNsYXJlLiAgCgko cmVfZW5hYmxlX2JyZWFrcG9pbnRzX2luX3NobGlicyk6IGRvIG5vdGhpbmcg aWYgc3RpbGwgZGVsZXRpbmcgCglzaGFyZWQgbGlicy4KCkluZGV4OiBzcmMv Z2RiL2JyZWFrcG9pbnQuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBm aWxlOiAvZGV2L2ZzL0gvcnVwcC9kZXZlbC1sb2NhbC1yZXBvc2l0b3J5L3Ny Yy9nZGIvYnJlYWtwb2ludC5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjMK ZGlmZiAtcCAtdSAtcjEuMyBicmVha3BvaW50LmMKLS0tIHNyYy9nZGIvYnJl YWtwb2ludC5jCTIwMDEvMTIvMjQgMDI6MDk6NTEJMS4zCisrKyBzcmMvZ2Ri L2JyZWFrcG9pbnQuYwkyMDAxLzEyLzI0IDAyOjEyOjQ4CkBAIC0zMTM5LDcg KzMxMzksNyBAQCBwcmludF9vbmVfYnJlYWtwb2ludCAoc3RydWN0IGJyZWFr cG9pbnQgCiAgIAogICBzdGF0aWMgY2hhciAqYnBkaXNwc1tdID0KICAgeyJk ZWwiLCAiZHN0cCIsICJkaXMiLCAia2VlcCJ9OwotICBzdGF0aWMgY2hhciBi cGVuYWJsZXNbXSA9ICJueW5ueSI7CisgIHN0YXRpYyBjaGFyIGJwZW5hYmxl c1tdID0gIm55c255IjsKICAgY2hhciB3cmFwX2luZGVudFs4MF07CiAjaWZk ZWYgVUlfT1VUCiAgIHN0cnVjdCB1aV9zdHJlYW0gKnN0YiA9IHVpX291dF9z dHJlYW1fbmV3ICh1aW91dCk7CkBAIC00MTMwLDExICs0MTMwLDE5IEBAIGRp c2FibGVfYnJlYWtwb2ludHNfaW5fc2hsaWJzIChpbnQgc2lsZW4KICAgfQog fQogCitpbnQgc29saWJfaXNfZGVsZXRpbmcgPSAwOworCiAvKiBUcnkgdG8g cmVlbmFibGUgYW55IGJyZWFrcG9pbnRzIGluIHNoYXJlZCBsaWJyYXJpZXMu ICAqLwogdm9pZAogcmVfZW5hYmxlX2JyZWFrcG9pbnRzX2luX3NobGlicyAo dm9pZCkKIHsKICAgc3RydWN0IGJyZWFrcG9pbnQgKmI7CisKKyAgLyogSWYg dGhpcyBpcyBhIGRsY2xvc2UoKSwgd2UgZG9uJ3Qgd2FudCB0byByZWVuYWJs ZSB5ZXQsIGJ1dCB0aGVyZQorICAgICBhcmUgc2V2ZXJhbCBwbGFjZXMgdGhh dCBjYW4ndCB0ZWxsIGZyb20gdGhlaXIgc3RhdGUgd2hpY2ggaXQgaXMsCisg ICAgIHNvIHdlICh5ZXRjaCkgdXNlIGEgZ2xvYmFsLiAqLworICBpZiAoc29s aWJfaXNfZGVsZXRpbmcpCisgICAgICByZXR1cm47CiAKICAgQUxMX0JSRUFL UE9JTlRTIChiKQogICAgIGlmIChiLT5lbmFibGVfc3RhdGUgPT0gYnBfc2hs aWJfZGlzYWJsZWQpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpU aGlzIGlzIG5lZWRlZCBmb3IgY29yZSBhbmQgc2hhcmVkIGxpYnMuCgpTdW4g Tm92ICAyIDE0OjE2OjI1IE1TVCAxOTk3CglZZXN0ZXJkYXkncyBjaGFuZ2Vz IHRvIGJmZCAodG8gc2ltcGxpZnkgdGhlIGhhbmRsaW5nIG9mCglJbWFnZUJh c2Ugc2lnbmlmaWNhbnRseSkgbmVlZGVkIHRvIGJlIHJlZmxlY3RlZCBoZXJl LgoJQXBwbHkgSW1hZ2VCYXNlIHRvIHRoZSBpbnRlcm5hbCBzZWN0aW9uIHRh YmxlcyBmb3IgYm90aAoJdGhlIGV4ZWMsIGFuZCBzeW1ib2wgdGFibGVzLiAg IE9uZSBpbnZhbGlkIGFzc3VtcHRpb24gaW4KCWdkYiBoYWQgdG8gYmUgYWRk cmVzc2VkOiAgaXQncyBhc3N1bWVkIHRoYXQgc3RhYnMgc3ltYm9scwoJYW5k IHJlZ3VsYXIgc3ltYm9scyBhcmUgcmVsb2NhdGVkIHRoZSBzYW1lIHdheSwg d2hpY2ggdGhleQoJYXJlbid0IGluIFBFLiAgKFN0YWJzIHN5bWJvbHMgaGF2 ZSBJbWFnZUJhc2UgYXBwbGllZCwKCXJlZ3VsYXIgY29mZiAobWluaW1hbCkg c3ltYm9scyBkb24ndC4pICAoSXQgbWlnaHQgYmUgcG9zc2libGUKCXRvIGZp eCB0aGlzIGJ5IHVzaW5nIHRoZSBSRUZMT05HTkIgcmVsb2NhdGlvbiBpbiB0 aGUKCWFzc2VtYmxlcidzIHBhcnNlIG9mIC5zdGFicz8gbGluZXMsIGJ1dCB0 aGUgYXNzZW1ibGVyIGlzbid0CgljdXJyZW50bHkgc2V0IHVwIHRvIGRvIHRo YXQuICBJdCdzIGZhciBlYXNpZXIgdG8gZml4IGhlcmUsCglhbHRobyB0aGVy ZSBhcmUgZ29vZCByZWFzb25zIHRvIGRvIGl0IGluIHRoZSBhc3NlbWJsZXIs IGFuZAoJdGhhdCBtYXkgaGFwcGVuLikKCglDaGFuZ2U6IAoJc3ltZmlsZS5o OiBhZGQgYSBuZXcgZnVuY3Rpb24gcG9pbnRlciBidWlsZF9zZWN0aW9uX3Rh YmxlOyBpdCdzCgkgIGludGVuZGVkIHRvIGJlIGNhbGxlZCBmcm9tIHRoZSBl eGVjIHNpZGUgb2YgdGhpbmdzIHRvIGRvIGZpbGUKCSAgZm9ybWF0IHNwZWNp ZmljIHRoaW5ncywgc3VjaCBhcyBhcHBseSBJbWFnZUJhc2UgdG8gdGhlIHNl Y3Rpb24KCSAgVk1Bcy4gIFRoaXMgaGVscHMga2VlcCB0aGUgZm9ybWF0IGlz c3VlcyBzZXBhcmF0ZSBmcm9tIHRoZSBhY2Nlc3MKCSAgbWVjaGFuaXNtICh0 YXJnZXQpIGlzc3Vlcy4KCgljb2ZmcmVhZC5jOiBjcmVhdGUgYSBuZXcgc2Vj dGlvbl9vZmZzZXRzIHRhYmxlIHdpdGggSW1hZ2VCYXNlCgkgIGJhY2tlZCBv dXQgdG8gcGFzcyB0byB0aGUgc3RhYnMtcmVhZGluZyBjb2RlLgoKCSAgTWFr ZSBhIGNvZmYtcHJpdmF0ZSBzeW1maWxlX29mZnNldHMoKSByb3V0aW5lIHRo YXQgYXBwbGllcyAKCSAgSW1hZ2VCYXNlIHRvIHRoZSBpbml0aWFsIHNlY3Rp b25fb2Zmc2V0cyB0YWJsZS4KCgkgIE1ha2UgY29mZi1wcml2YXRlIGJ1aWxk X3NlY3Rpb25fdGFibGUoKSB3aGljaCBkb2VzIHRoZSBhbmFsb2dvdXMKCSAg dGhpbmcgb24gdGhlIGV4ZWMgZmlsZSBzaWRlLgoKCSAgQWRkIGJvZHkgdG8g Y29mZl9zeW1maWxlX2luaXQgdG8gYXBwbHkgSW1hZ2VCYXNlIHRvIHRoZSAK CSAgc2VjdGlvbiB0YWJsZXMuCgoJZXhlYy5jOiB1c2UgdGhlIG5ldyBidWls ZF9zZWN0aW9uX3RhYmxlIGZ1bmN0aW9uIHBvaW50ZXI7IHJlbmFtZQoJICBv bGQgdmVyc2lvbiAoYW5kIGl0J3MgaGVscGVyKSB0byBkZWZhdWx0Li4uLgoK CWNvcmVsb3cuYzogYWxzbyB1c2UgdGhlIG5ldyBidWlsZF9zZWN0aW9uX3Rh YmxlIGVudHJ5LgoKCWRieHJlYWQuYzogSW5pdCBzb21lIHVuaW5pdGlhbGl6 ZWQgc3RhdGljcyB0aGF0IHdlcmUgYmVpbmcgcmVsaWVkCgkgIHVwb24gdG8g YmUgemVybyAoaXQgRElEIG1ha2UgYSBkaWZmZXJlbmNlKS4KCgkgIFBFIGZv cm1hdCBkb2VzIE5PVCB1c2UgcmVsYXRpdmUgYWRkcmVzc2VzIGZvciBiZWdp bi9lbmQgYmxvY2suCgkgIChBbmQgaXQgbG9va3MgdHJpY2t5IHRvIGdldCB0 aGUgY29tcGlsZXIgcmlnaHQgdG8gZG8gdGhhdCwgZm9yCgkgIGxpdHRsZSBi ZW5lZml0LikKCglzeW1maWxlLmM6IHJld3JpdGUgZmluZF9zeW1fZm5zKCkg dG8gdXNlIG5ldyBmdW5jdGlvbiBsb29rdXBfc3ltX2ZucygpOwoJICBsb29r dXBfc3ltX2ZucyBpcyBsaWtlIHRoZSBvbGQgZmluZF9zeW1fZm5zIGJ1dCBy ZXR1cm5zCgkgIGEgdmFsdWUgcmF0aGVyIHRoYW4gY2hhbmdpbmcgYSBzdHJ1 Y3R1cmUuICBVc2VhYmxlIG5vdwoJICBpbiBleGVjLmMgYW5kIGNvcmVsb3cu YyB0byBmaW5kIHRoZSBmdW5jdGlvbiBwb2ludGVyCgkgIG5lZWRlZCBmb3Ig YnVpbGRfc2VjdGlvbl90YWJsZSgpLgoKCSAgQ29kZSBtYXJrZWQgYXMgI2lm bmRlZiBJQk02MDAwX1RBUkdFVCBoYWQgY29tbWVudHMgdGhhdCBpdCBzZWVt ZCBhCgkgIHNwZWNpZmljIGhhY2suLi4gIGl0IGFwcGVhcnMgdG8gaGF2ZSBi ZWVuIGFzIGl0IGFsc28gYnJva2UgTlQvUEUuCgkgIFR1cm4gaXQgb2ZmIGNv bXBsZXRlbHksIGFuZCBsZXQgdGhvc2Ugd2hvIGNhcmUgbWFrZSBhIGJldHRl ciBpZmRlZi4KCSAgKE9yIHVzZSBzeW1maWxlX29mZnNldHMgb3Igc3ltZmls ZV9pbml0LCB3aGljaCBsb29rIGFzIGlmIGl0IGNvdWxkIAoJICBkbyB0aGUg cmlnaHQgdGhpbmcsIGlmIG9uZSB3ZXJlIHdyaXR0ZW4gZm9yIHRhcmdldHMg dGhhdCBuZWVkIHRoaXMKCSAgaGFjay4pICAoVGhlIFBFIGNoYW5nZXMgd2Vy ZSBxdWl0ZSBzaW1pbGFyLCBidXQgbm90IGlkZW50aWNhbC4pCgoJdGFyZ2V0 Lmg6IHJlbW92ZSBkZWNsYXJhdGlvbiBmb3IgYnVpbGRfc2VjdGlvbl90YWJs ZS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkluIHByZXBhcmF0aW9uIGZv ciBhZGRpbmcgSW50ZXJpeCBjb3JlIGZpbGVzLCB3ZSBuZWVkIHRvIGhhdmUg YQpwcml2YXRlIHZlcnNpb24gb2YgYnVpbGRfc2VjdGlvbl90YWJsZS4gIEFs c28sIGZpbmRfc3ltX2ZucyBpcwptb3JlIHVzZWZ1bCBpZiBpdCByZXR1cm5z IGEgdmFsdWUgcmF0aGVyIHRoYW4gY2hhbmdpbmcgYSBzdHJ1Y3R1cmUsCnNv IHJlc3RydWN0dXJlIGludG8gZmluZF9zeW1fZm5zIHRvIGRvIHRoZSBvbGQg dGhpbmcsIHdoaWNoIGNhbGxzCmxvb2t1cF9zeW1fZm5zIHRvIGRvIHRoZSB3 b3JrLiAgbG9va3VwX3N5bV9mbnMgY2FuIHRoZW4gYmUgY2FsbGVkCmRpcmVj dGx5IGFzIHdlbGwuCgpGcmkgRGVjICAzIDEwOjA3OjIwIFBTVCAxOTk5ICBE b25uIFRlcnJ5IDxkb25udGVAbWljcm9zb2Z0LmNvbT4KCSogc3ltZmlsZS5o KHN5bV9mbnMpOiBhZGQgYnVpbGRfc2VjdGlvbl90YWJsZSBmaWVsZC4KCSog Y29yZWxvdy5oKGNvcmVfb3Blbik6IFVzZSBpbnN0ZWFkIG9mIGRpcmVjdCBj YWxsLgoJKiBleGVjLmMoZXhlY19maWxlX2NvbW1hbmQpOiBMaWtld2lzZS4K CShhZGRfdG9fc2VjdGlvbl90YWJsZSk6IFJlbmFtZSB0byBkZWZhdWx0X2Fk ZF90b19zZWN0aW9uX3RhYmxlLgoJKGJ1aWxkX3NlY3Rpb25fdGFibGUpOiBS ZW5hbWUgdG8gZGVmYXVsdF9idWlsZF9zZWN0aW9uX3RhYmxlLAoJdXNlIGRl ZmF1aWx0X2FkZF90b19zZWN0aW9uX3RhYmxlLgoJKiB0YXJnZXQuaChidWls ZF9zZWN0aW9uX3RhYmxlKTogUmVtb3ZlIGRlY2xhcmF0aW9uLgoKCSogc3lt ZmlsZS5jKGxvb2t1cF9zeW1fZm5zKTogTmV3LCBjb250YWlucyBtb3N0IG9m Li4uCgkoZmluZF9zeW1fZm5zKTogdXNlIGxvb2t1cF9zeW1fZm5zIHRvIGRv IG1vc3Qgb2Ygd29yay4KCgpJbmRleDogc3JjL2dkYi9jb3JlbG93LmMKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2Rldi9mcy9IL3J1cHAv ZGV2ZWwtbG9jYWwtcmVwb3NpdG9yeS9zcmMvZ2RiL2NvcmVsb3cuYyx2CnJl dHJpZXZpbmcgcmV2aXNpb24gMS4xLjEuMQpkaWZmIC1wIC11IC1yMS4xLjEu MSBjb3JlbG93LmMKLS0tIHNyYy9nZGIvY29yZWxvdy5jCTIwMDEvMTIvMjMg MDA6MzQ6NDQJMS4xLjEuMQorKysgc3JjL2dkYi9jb3JlbG93LmMJMjAwMS8x Mi8yNCAwMjoxNTo0NApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgImZy YW1lLmgiCQkvKiByZXF1aXJlZCBieSBpbmZlcmlvci5oICovCiAjaW5jbHVk ZSAiaW5mZXJpb3IuaCIKICNpbmNsdWRlICJzeW10YWIuaCIKKyNpbmNsdWRl ICJzeW1maWxlLmgiCiAjaW5jbHVkZSAiY29tbWFuZC5oIgogI2luY2x1ZGUg ImJmZC5oIgogI2luY2x1ZGUgInRhcmdldC5oIgpAQCAtMzE2LDggKzMxNyw4 IEBAIGNvcmVfb3BlbiAoY2hhciAqZmlsZW5hbWUsIGludCBmcm9tX3R0eSkK ICAgdmFsaWRhdGVfZmlsZXMgKCk7CiAKICAgLyogRmluZCB0aGUgZGF0YSBz ZWN0aW9uICovCi0gIGlmIChidWlsZF9zZWN0aW9uX3RhYmxlIChjb3JlX2Jm ZCwgJmNvcmVfb3BzLnRvX3NlY3Rpb25zLAotCQkJICAgJmNvcmVfb3BzLnRv X3NlY3Rpb25zX2VuZCkpCisgIGlmICgoKmxvb2t1cF9zeW1fZm5zKGV4ZWNf YmZkKS0+c3ltX2J1aWxkX3NlY3RfdGFibGUpCisgICAgICAoY29yZV9iZmQs ICZjb3JlX29wcy50b19zZWN0aW9ucywgJmNvcmVfb3BzLnRvX3NlY3Rpb25z X2VuZCkpCiAgICAgZXJyb3IgKCJcIiVzXCI6IENhbid0IGZpbmQgc2VjdGlv bnM6ICVzIiwKIAkgICBiZmRfZ2V0X2ZpbGVuYW1lIChjb3JlX2JmZCksIGJm ZF9lcnJtc2cgKGJmZF9nZXRfZXJyb3IgKCkpKTsKIApJbmRleDogc3JjL2dk Yi9kYnhyZWFkLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog L2Rldi9mcy9IL3J1cHAvZGV2ZWwtbG9jYWwtcmVwb3NpdG9yeS9zcmMvZ2Ri L2RieHJlYWQuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yCmRpZmYgLXAg LXUgLXIxLjIgZGJ4cmVhZC5jCi0tLSBzcmMvZ2RiL2RieHJlYWQuYwkyMDAx LzEyLzIzIDIzOjUwOjUwCTEuMgorKysgc3JjL2dkYi9kYnhyZWFkLmMJMjAw MS8xMi8yNCAwMjoxNTo0NApAQCAtMzUzMSw2ICszNTMxLDcgQEAgc3RhdGlj IHN0cnVjdCBzeW1fZm5zIGFvdXRfc3ltX2ZucyA9CiAgIGRieF9zeW1maWxl X3JlYWQsCQkvKiBzeW1fcmVhZDogcmVhZCBhIHN5bWJvbCBmaWxlIGludG8g c3ltdGFiICovCiAgIGRieF9zeW1maWxlX2ZpbmlzaCwJCS8qIHN5bV9maW5p c2g6IGZpbmlzaGVkIHdpdGggZmlsZSwgY2xlYW51cCAqLwogICBkZWZhdWx0 X3N5bWZpbGVfb2Zmc2V0cywJLyogc3ltX29mZnNldHM6IHBhcnNlIHVzZXIn cyBvZmZzZXRzIHRvIGludGVybmFsIGZvcm0gKi8KKyAgZGVmYXVsdF9idWls ZF9zZWN0aW9uX3RhYmxlLAkvKiBzeW1fYnVpbGRfc2VjdF90YWJsZTogYnVp bGQgc2VjdGlvbiB0YWJsZSAqLwogICBOVUxMCQkJCS8qIG5leHQ6IHBvaW50 ZXIgdG8gbmV4dCBzdHJ1Y3Qgc3ltX2ZucyAqLwogfTsKIApJbmRleDogc3Jj L2dkYi9kc3RyZWFkLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmls ZTogL2Rldi9mcy9IL3J1cHAvZGV2ZWwtbG9jYWwtcmVwb3NpdG9yeS9zcmMv Z2RiL2RzdHJlYWQuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xLjEuMQpk aWZmIC1wIC11IC1yMS4xLjEuMSBkc3RyZWFkLmMKLS0tIHNyYy9nZGIvZHN0 cmVhZC5jCTIwMDEvMTIvMjMgMDA6MzQ6NDUJMS4xLjEuMQorKysgc3JjL2dk Yi9kc3RyZWFkLmMJMjAwMS8xMi8yNCAwMjoxNTo0NApAQCAtMTU5Nyw2ICsx NTk3LDcgQEAgc3RhdGljIHN0cnVjdCBzeW1fZm5zIGRzdF9zeW1fZm5zID0K ICAgZHN0X3N5bWZpbGVfcmVhZCwJCS8qIHN5bV9yZWFkOiByZWFkIGEgc3lt Ym9sIGZpbGUgaW50byBzeW10YWIgKi8KICAgZHN0X3N5bWZpbGVfZmluaXNo LAkJLyogc3ltX2ZpbmlzaDogZmluaXNoZWQgd2l0aCBmaWxlLCBjbGVhbnVw ICovCiAgIGRzdF9zeW1maWxlX29mZnNldHMsCQkvKiBzeW1fb2Zmc2V0czog IHhsYXRlIGV4dGVybmFsIHRvIGludGVybmFsIGZvcm0gKi8KKyAgZGVmYXVs dF9idWlsZF9zZWN0aW9uX3RhYmxlLAkvKiBzeW1fYnVpbGRfc2VjdF90YWJs ZTogYnVpbGQgc2VjdGlvbiB0YWJsZSAqLwogICBOVUxMCQkJCS8qIG5leHQ6 IHBvaW50ZXIgdG8gbmV4dCBzdHJ1Y3Qgc3ltX2ZucyAqLwogfTsKIApJbmRl eDogc3JjL2dkYi9lbGZyZWFkLmMKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS Q1MgZmlsZTogL2Rldi9mcy9IL3J1cHAvZGV2ZWwtbG9jYWwtcmVwb3NpdG9y eS9zcmMvZ2RiL2VsZnJlYWQuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4x LjEuMQpkaWZmIC1wIC11IC1yMS4xLjEuMSBlbGZyZWFkLmMKLS0tIHNyYy9n ZGIvZWxmcmVhZC5jCTIwMDEvMTIvMjMgMDA6MzQ6NDYJMS4xLjEuMQorKysg c3JjL2dkYi9lbGZyZWFkLmMJMjAwMS8xMi8yNCAwMjoxNTo0NApAQCAtODA1 LDYgKzgwNSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc3ltX2ZucyBlbGZfc3ltX2Zu cyA9CiAgIGVsZl9zeW1maWxlX3JlYWQsCQkvKiBzeW1fcmVhZDogcmVhZCBh IHN5bWJvbCBmaWxlIGludG8gc3ltdGFiICovCiAgIGVsZl9zeW1maWxlX2Zp bmlzaCwJCS8qIHN5bV9maW5pc2g6IGZpbmlzaGVkIHdpdGggZmlsZSwgY2xl YW51cCAqLwogICBkZWZhdWx0X3N5bWZpbGVfb2Zmc2V0cywJLyogc3ltX29m ZnNldHM6ICBUcmFuc2xhdGUgZXh0LiB0byBpbnQuIHJlbG9jYXRpb24gKi8K KyAgZGVmYXVsdF9idWlsZF9zZWN0aW9uX3RhYmxlLAkvKiBzeW1fYnVpbGRf c2VjdF90YWJsZTogYnVpbGQgc2VjdGlvbiB0YWJsZSAqLwogICBOVUxMCQkJ CS8qIG5leHQ6IHBvaW50ZXIgdG8gbmV4dCBzdHJ1Y3Qgc3ltX2ZucyAqLwog fTsKIApJbmRleDogc3JjL2dkYi9leGVjLmMKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQpSQ1MgZmlsZTogL2Rldi9mcy9IL3J1cHAvZGV2ZWwtbG9jYWwtcmVw b3NpdG9yeS9zcmMvZ2RiL2V4ZWMuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24g MS4yCmRpZmYgLXAgLXUgLXIxLjIgZXhlYy5jCi0tLSBzcmMvZ2RiL2V4ZWMu YwkyMDAxLzEyLzIzIDIzOjIyOjEyCTEuMgorKysgc3JjL2dkYi9leGVjLmMJ MjAwMS8xMi8yNCAwMjoxNTo0MwpAQCAtMjU2LDggKzI1Niw4IEBAIGV4ZWNf ZmlsZV9hdHRhY2ggKGNoYXIgKmZpbGVuYW1lLCBpbnQgZnIKIAl9CiAjZW5k aWYgLyogSUJNNjAwMF9UQVJHRVQgKi8KIAotICAgICAgaWYgKGJ1aWxkX3Nl Y3Rpb25fdGFibGUgKGV4ZWNfYmZkLCAmZXhlY19vcHMudG9fc2VjdGlvbnMs Ci0JCQkgICAgICAgJmV4ZWNfb3BzLnRvX3NlY3Rpb25zX2VuZCkpCisgICAg ICBpZiAoKCpsb29rdXBfc3ltX2ZucyhleGVjX2JmZCktPnN5bV9idWlsZF9z ZWN0X3RhYmxlKQorCSAgKGV4ZWNfYmZkLCAmZXhlY19vcHMudG9fc2VjdGlv bnMsICZleGVjX29wcy50b19zZWN0aW9uc19lbmQpKQogCXsKIAkgIC8qIE1h a2Ugc3VyZSB0byBjbG9zZSBleGVjX2JmZCwgb3IgZWxzZSAicnVuIiBtaWdo dCB0cnkgdG8gdXNlCiAJICAgICBpdC4gICovCkBAIC0zNjUsNyArMzY1LDcg QEAgZmlsZV9jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKICAg IHdlIGNhc3QgaXQgYmFjayB0byBpdHMgcHJvcGVyIHR5cGUuICAqLwogCiBz dGF0aWMgdm9pZAotYWRkX3RvX3NlY3Rpb25fdGFibGUgKGJmZCAqYWJmZCwg c2VjX3B0ciBhc2VjdCwgUFRSIHRhYmxlX3BwX2NoYXIpCitkZWZhdWx0X2Fk ZF90b19zZWN0aW9uX3RhYmxlIChiZmQgKmFiZmQsIHNlY19wdHIgYXNlY3Qs IFBUUiB0YWJsZV9wcF9jaGFyKQogewogICBzdHJ1Y3Qgc2VjdGlvbl90YWJs ZSAqKnRhYmxlX3BwID0gKHN0cnVjdCBzZWN0aW9uX3RhYmxlICoqKSB0YWJs ZV9wcF9jaGFyOwogICBmbGFnd29yZCBhZmxhZzsKQEAgLTM4Niw3ICszODYs NyBAQCBhZGRfdG9fc2VjdGlvbl90YWJsZSAoYmZkICphYmZkLCBzZWNfcHRy CiAgICBSZXR1cm5zIDAgaWYgT0ssIDEgb24gZXJyb3IuICAqLwogCiBpbnQK LWJ1aWxkX3NlY3Rpb25fdGFibGUgKGJmZCAqc29tZV9iZmQsIHN0cnVjdCBz ZWN0aW9uX3RhYmxlICoqc3RhcnQsCitkZWZhdWx0X2J1aWxkX3NlY3Rpb25f dGFibGUgKGJmZCAqc29tZV9iZmQsIHN0cnVjdCBzZWN0aW9uX3RhYmxlICoq c3RhcnQsCiAJCSAgICAgc3RydWN0IHNlY3Rpb25fdGFibGUgKiplbmQpCiB7 CiAgIHVuc2lnbmVkIGNvdW50OwpAQCAtMzk2LDcgKzM5Niw3IEBAIGJ1aWxk X3NlY3Rpb25fdGFibGUgKGJmZCAqc29tZV9iZmQsIHN0cnUKICAgICB4ZnJl ZSAoKiBzdGFydCk7CiAgICpzdGFydCA9IChzdHJ1Y3Qgc2VjdGlvbl90YWJs ZSAqKSB4bWFsbG9jIChjb3VudCAqIHNpemVvZiAoKipzdGFydCkpOwogICAq ZW5kID0gKnN0YXJ0OwotICBiZmRfbWFwX292ZXJfc2VjdGlvbnMgKHNvbWVf YmZkLCBhZGRfdG9fc2VjdGlvbl90YWJsZSwgKGNoYXIgKikgZW5kKTsKKyAg YmZkX21hcF9vdmVyX3NlY3Rpb25zIChzb21lX2JmZCwgZGVmYXVsdF9hZGRf dG9fc2VjdGlvbl90YWJsZSwgKGNoYXIgKillbmQpOwogICBpZiAoKmVuZCA+ ICpzdGFydCArIGNvdW50KQogICAgIGludGVybmFsX2Vycm9yIChfX0ZJTEVf XywgX19MSU5FX18sICJmYWlsZWQgaW50ZXJuYWwgY29uc2lzdGVuY3kgY2hl Y2siKTsKICAgLyogV2UgY291bGQgcmVhbGxvYyB0aGUgdGFibGUsIGJ1dCBp dCBwcm9iYWJseSBsb3NlcyBmb3IgbW9zdCBmaWxlcy4gICovCkluZGV4OiBz cmMvZ2RiL2lyaXg1LW5hdC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNT IGZpbGU6IC9kZXYvZnMvSC9ydXBwL2RldmVsLWxvY2FsLXJlcG9zaXRvcnkv c3JjL2dkYi9pcml4NS1uYXQuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4x LjEuMQpkaWZmIC1wIC11IC1yMS4xLjEuMSBpcml4NS1uYXQuYwotLS0gc3Jj L2dkYi9pcml4NS1uYXQuYwkyMDAxLzEyLzIzIDAwOjM0OjQ5CTEuMS4xLjEK KysrIHNyYy9nZGIvaXJpeDUtbmF0LmMJMjAwMS8xMi8yNCAwMjoxNTo0MwpA QCAtNDQxLDcgKzQ0MSw3IEBAIHNvbGliX21hcF9zZWN0aW9ucyAodm9pZCAq YXJnKQogICAgICAgZXJyb3IgKCJcIiVzXCI6IG5vdCBpbiBleGVjdXRhYmxl IGZvcm1hdDogJXMuIiwKIAkgICAgIHNjcmF0Y2hfcGF0aG5hbWUsIGJmZF9l cnJtc2cgKGJmZF9nZXRfZXJyb3IgKCkpKTsKICAgICB9Ci0gIGlmIChidWls ZF9zZWN0aW9uX3RhYmxlIChhYmZkLCAmc28tPnNlY3Rpb25zLCAmc28tPnNl Y3Rpb25zX2VuZCkpCisgIGlmICgoKmxvb2t1cF9zeW1fZm5zIChhYmZkKS0+ c3ltX2J1aWxkX3NlY3RfdGFibGUpIChhYmZkLCAmc28tPnNlY3Rpb25zLCAm c28tPnNlY3Rpb25zX2VuZCkpCiAgICAgewogICAgICAgZXJyb3IgKCJDYW4n dCBmaW5kIHRoZSBmaWxlIHNlY3Rpb25zIGluIGAlcyc6ICVzIiwKIAkgICAg IGJmZF9nZXRfZmlsZW5hbWUgKGV4ZWNfYmZkKSwgYmZkX2Vycm1zZyAoYmZk X2dldF9lcnJvciAoKSkpOwpJbmRleDogc3JjL2dkYi9taXBzcmVhZC5jCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9kZXYvZnMvSC9ydXBw L2RldmVsLWxvY2FsLXJlcG9zaXRvcnkvc3JjL2dkYi9taXBzcmVhZC5jLHYK cmV0cmlldmluZyByZXZpc2lvbiAxLjIKZGlmZiAtcCAtdSAtcjEuMiBtaXBz cmVhZC5jCi0tLSBzcmMvZ2RiL21pcHNyZWFkLmMJMjAwMS8xMi8yMyAyMzo1 MDo1MQkxLjIKKysrIHNyYy9nZGIvbWlwc3JlYWQuYwkyMDAxLzEyLzI0IDAy OjE1OjQzCkBAIC00MzcsNiArNDM3LDcgQEAgc3RhdGljIHN0cnVjdCBzeW1f Zm5zIGVjb2ZmX3N5bV9mbnMgPQogICBtaXBzY29mZl9zeW1maWxlX3JlYWQs CS8qIHN5bV9yZWFkOiByZWFkIGEgc3ltYm9sIGZpbGUgaW50byBzeW10YWIg Ki8KICAgbWlwc2NvZmZfc3ltZmlsZV9maW5pc2gsCS8qIHN5bV9maW5pc2g6 IGZpbmlzaGVkIHdpdGggZmlsZSwgY2xlYW51cCAqLwogICBkZWZhdWx0X3N5 bWZpbGVfb2Zmc2V0cywJLyogc3ltX29mZnNldHM6IGR1bW15IEZJWE1FIHRp bCBpbXBsZW0gc3ltIHJlbG9jICovCisgIGRlZmF1bHRfYnVpbGRfc2VjdGlv bl90YWJsZSwJLyogc3ltX2J1aWxkX3NlY3RfdGFibGU6IGJ1aWxkIHNlY3Rp b24gdGFibGUgKi8KICAgTlVMTAkJCQkvKiBuZXh0OiBwb2ludGVyIHRvIG5l eHQgc3RydWN0IHN5bV9mbnMgKi8KIH07CiAKSW5kZXg6IHNyYy9nZGIvbmxt cmVhZC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9kZXYv ZnMvSC9ydXBwL2RldmVsLWxvY2FsLXJlcG9zaXRvcnkvc3JjL2dkYi9ubG1y ZWFkLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMgpkaWZmIC1wIC11IC1y MS4yIG5sbXJlYWQuYwotLS0gc3JjL2dkYi9ubG1yZWFkLmMJMjAwMS8xMi8y MyAyMzo1MDo1MQkxLjIKKysrIHNyYy9nZGIvbmxtcmVhZC5jCTIwMDEvMTIv MjQgMDI6MTU6NDMKQEAgLTIzOCw2ICsyMzgsNyBAQCBzdGF0aWMgc3RydWN0 IHN5bV9mbnMgbmxtX3N5bV9mbnMgPQogICBubG1fc3ltZmlsZV9yZWFkLAkJ Lyogc3ltX3JlYWQ6IHJlYWQgYSBzeW1ib2wgZmlsZSBpbnRvIHN5bXRhYiAq LwogICBubG1fc3ltZmlsZV9maW5pc2gsCQkvKiBzeW1fZmluaXNoOiBmaW5p c2hlZCB3aXRoIGZpbGUsIGNsZWFudXAgKi8KICAgZGVmYXVsdF9zeW1maWxl X29mZnNldHMsCS8qIHN5bV9vZmZzZXRzOiAgVHJhbnNsYXRlIGV4dC4gdG8g aW50LiByZWxvY2F0aW9uICovCisgIGRlZmF1bHRfYnVpbGRfc2VjdGlvbl90 YWJsZSwJLyogc3ltX2J1aWxkX3NlY3RfdGFibGU6IGJ1aWxkIHNlY3Rpb24g dGFibGUgKi8KICAgTlVMTAkJCQkvKiBuZXh0OiBwb2ludGVyIHRvIG5leHQg c3RydWN0IHN5bV9mbnMgKi8KIH07CiAKSW5kZXg6IHNyYy9nZGIvb3M5a3Jl YWQuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvZGV2L2Zz L0gvcnVwcC9kZXZlbC1sb2NhbC1yZXBvc2l0b3J5L3NyYy9nZGIvb3M5a3Jl YWQuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yCmRpZmYgLXAgLXUgLXIx LjIgb3M5a3JlYWQuYwotLS0gc3JjL2dkYi9vczlrcmVhZC5jCTIwMDEvMTIv MjMgMjM6NTA6NTEJMS4yCisrKyBzcmMvZ2RiL29zOWtyZWFkLmMJMjAwMS8x Mi8yNCAwMjoxNTo0MwpAQCAtMTYxMSw2ICsxNjExLDcgQEAgc3RhdGljIHN0 cnVjdCBzeW1fZm5zIG9zOWtfc3ltX2ZucyA9CiAgIG9zOWtfc3ltZmlsZV9y ZWFkLAkJLyogc3ltX3JlYWQ6IHJlYWQgYSBzeW1ib2wgZmlsZSBpbnRvIHN5 bXRhYiAqLwogICBvczlrX3N5bWZpbGVfZmluaXNoLAkJLyogc3ltX2Zpbmlz aDogZmluaXNoZWQgd2l0aCBmaWxlLCBjbGVhbnVwICovCiAgIGRlZmF1bHRf c3ltZmlsZV9vZmZzZXRzLAkvKiBzeW1fb2Zmc2V0czogcGFyc2UgdXNlcidz IG9mZnNldHMgdG8gaW50ZXJuYWwgZm9ybSAqLworICBkZWZhdWx0X2J1aWxk X3NlY3Rpb25fdGFibGUsCS8qIHN5bV9idWlsZF9zZWN0X3RhYmxlOiBidWls ZCBzZWN0aW9uIHRhYmxlICovCiAgIE5VTEwJCQkJLyogbmV4dDogcG9pbnRl ciB0byBuZXh0IHN0cnVjdCBzeW1fZm5zICovCiB9OwogCkluZGV4OiBzcmMv Z2RiL29zZnNvbGliLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmls ZTogL2Rldi9mcy9IL3J1cHAvZGV2ZWwtbG9jYWwtcmVwb3NpdG9yeS9zcmMv Z2RiL29zZnNvbGliLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4xLjEK ZGlmZiAtcCAtdSAtcjEuMS4xLjEgb3Nmc29saWIuYwotLS0gc3JjL2dkYi9v c2Zzb2xpYi5jCTIwMDEvMTIvMjMgMDA6MzQ6NTEJMS4xLjEuMQorKysgc3Jj L2dkYi9vc2Zzb2xpYi5jCTIwMDEvMTIvMjQgMDI6MTU6NDMKQEAgLTI2MCw3 ICsyNjAsNyBAQCBzb2xpYl9tYXBfc2VjdGlvbnMgKGNoYXIgKmFyZykKICAg ICAgIGVycm9yICgiXCIlc1wiOiBub3QgaW4gZXhlY3V0YWJsZSBmb3JtYXQ6 ICVzLiIsCiAJICAgICBzY3JhdGNoX3BhdGhuYW1lLCBiZmRfZXJybXNnIChi ZmRfZ2V0X2Vycm9yICgpKSk7CiAgICAgfQotICBpZiAoYnVpbGRfc2VjdGlv bl90YWJsZSAoYWJmZCwgJnNvLT5zZWN0aW9ucywgJnNvLT5zZWN0aW9uc19l bmQpKQorICBpZiAoKCpsb29rdXBfc3ltX2ZucyAoYWJmZCktPnN5bV9idWls ZF9zZWN0X3RhYmxlKSAoYWJmZCwgJnNvLT5zZWN0aW9ucywgJnNvLT5zZWN0 aW9uc19lbmQpKQogICAgIHsKICAgICAgIGVycm9yICgiQ2FuJ3QgZmluZCB0 aGUgZmlsZSBzZWN0aW9ucyBpbiBgJXMnOiAlcyIsCiAJICAgICBiZmRfZ2V0 X2ZpbGVuYW1lIChleGVjX2JmZCksIGJmZF9lcnJtc2cgKGJmZF9nZXRfZXJy b3IgKCkpKTsKSW5kZXg6IHNyYy9nZGIvcGE2NHNvbGliLmMKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2Rldi9mcy9IL3J1cHAvZGV2ZWwt bG9jYWwtcmVwb3NpdG9yeS9zcmMvZ2RiL3BhNjRzb2xpYi5jLHYKcmV0cmll dmluZyByZXZpc2lvbiAxLjEuMS4xCmRpZmYgLXAgLXUgLXIxLjEuMS4xIHBh NjRzb2xpYi5jCi0tLSBzcmMvZ2RiL3BhNjRzb2xpYi5jCTIwMDEvMTIvMjMg MDA6MzQ6NTIJMS4xLjEuMQorKysgc3JjL2dkYi9wYTY0c29saWIuYwkyMDAx LzEyLzI0IDAyOjE1OjQ0CkBAIC0zMTIsOSArMzEyLDggQEAgcGE2NF9zb2xp Yl9sb2FkX3N5bWJvbHMgKHN0cnVjdCBzb19saXN0IAogICAvKiBOb3cgd2Ug bmVlZCB0byBidWlsZCBhIHNlY3Rpb24gdGFibGUgZm9yIHRoaXMgbGlicmFy eSBzaW5jZQogICAgICB3ZSBtaWdodCBiZSBkZWJ1Z2dpbmcgYSBjb3JlIGZp bGUgZnJvbSBhIGR5bmFtaWNhbGx5IGxpbmtlZAogICAgICBleGVjdXRhYmxl IGluIHdoaWNoIHRoZSBsaWJyYXJpZXMgd2VyZSBub3QgcHJpdmF0ZWx5IG1h cHBlZC4gICovCi0gIGlmIChidWlsZF9zZWN0aW9uX3RhYmxlIChzby0+YWJm ZCwKLQkJCSAgICZzby0+c2VjdGlvbnMsCi0JCQkgICAmc28tPnNlY3Rpb25z X2VuZCkpCisgIGlmICgoKmxvb2t1cF9zeW1fZm5zIChzby0+YWJmZCktPnN5 bV9idWlsZF9zZWN0X3RhYmxlKSAKKyAgICAgIChzby0+YWJmZCwgJnNvLT5z ZWN0aW9ucywgJnNvLT5zZWN0aW9uc19lbmQpKQogICAgIHsKICAgICAgIGVy cm9yICgiVW5hYmxlIHRvIGJ1aWxkIHNlY3Rpb24gdGFibGUgZm9yIHNoYXJl ZCBsaWJyYXJ5XG4uIik7CiAgICAgICByZXR1cm47CkluZGV4OiBzcmMvZ2Ri L3NvbGliLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2Rl di9mcy9IL3J1cHAvZGV2ZWwtbG9jYWwtcmVwb3NpdG9yeS9zcmMvZ2RiL3Nv bGliLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4xLjEKZGlmZiAtcCAt dSAtcjEuMS4xLjEgc29saWIuYwotLS0gc3JjL2dkYi9zb2xpYi5jCTIwMDEv MTIvMjMgMDA6MzQ6NTUJMS4xLjEuMQorKysgc3JjL2dkYi9zb2xpYi5jCTIw MDEvMTIvMjQgMDI6MTU6NDMKQEAgLTI1MCw3ICsyNTAsNyBAQCBzb2xpYl9t YXBfc2VjdGlvbnMgKFBUUiBhcmcpCiAgICAgICBlcnJvciAoIlwiJXNcIjog bm90IGluIGV4ZWN1dGFibGUgZm9ybWF0OiAlcy4iLAogCSAgICAgc2NyYXRj aF9wYXRobmFtZSwgYmZkX2Vycm1zZyAoYmZkX2dldF9lcnJvciAoKSkpOwog ICAgIH0KLSAgaWYgKGJ1aWxkX3NlY3Rpb25fdGFibGUgKGFiZmQsICZzby0+ c2VjdGlvbnMsICZzby0+c2VjdGlvbnNfZW5kKSkKKyAgaWYgKCgqbG9va3Vw X3N5bV9mbnMgKGFiZmQpLT5zeW1fYnVpbGRfc2VjdF90YWJsZSkgKGFiZmQs ICZzby0+c2VjdGlvbnMsICZzby0+c2VjdGlvbnNfZW5kKSkKICAgICB7CiAg ICAgICBlcnJvciAoIkNhbid0IGZpbmQgdGhlIGZpbGUgc2VjdGlvbnMgaW4g YCVzJzogJXMiLAogCSAgICAgYmZkX2dldF9maWxlbmFtZSAoYWJmZCksIGJm ZF9lcnJtc2cgKGJmZF9nZXRfZXJyb3IgKCkpKTsKSW5kZXg6IHNyYy9nZGIv c29tcmVhZC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9k ZXYvZnMvSC9ydXBwL2RldmVsLWxvY2FsLXJlcG9zaXRvcnkvc3JjL2dkYi9z b21yZWFkLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4xLjEKZGlmZiAt cCAtdSAtcjEuMS4xLjEgc29tcmVhZC5jCi0tLSBzcmMvZ2RiL3NvbXJlYWQu YwkyMDAxLzEyLzIzIDAwOjM0OjU1CTEuMS4xLjEKKysrIHNyYy9nZGIvc29t cmVhZC5jCTIwMDEvMTIvMjQgMDI6MTU6NDMKQEAgLTc0NSw2ICs3NDUsNyBA QCBzdGF0aWMgc3RydWN0IHN5bV9mbnMgc29tX3N5bV9mbnMgPQogICBzb21f c3ltZmlsZV9yZWFkLAkJLyogc3ltX3JlYWQ6IHJlYWQgYSBzeW1ib2wgZmls ZSBpbnRvIHN5bXRhYiAqLwogICBzb21fc3ltZmlsZV9maW5pc2gsCQkvKiBz eW1fZmluaXNoOiBmaW5pc2hlZCB3aXRoIGZpbGUsIGNsZWFudXAgKi8KICAg c29tX3N5bWZpbGVfb2Zmc2V0cywJCS8qIHN5bV9vZmZzZXRzOiAgVHJhbnNs YXRlIGV4dC4gdG8gaW50LiByZWxvY2F0aW9uICovCisgIGRlZmF1bHRfYnVp bGRfc2VjdGlvbl90YWJsZSwJLyogc3ltX2J1aWxkX3NlY3RfdGFibGU6IGJ1 aWxkIHNlY3Rpb24gdGFibGUgKi8KICAgTlVMTAkJCQkvKiBuZXh0OiBwb2lu dGVyIHRvIG5leHQgc3RydWN0IHN5bV9mbnMgKi8KIH07CiAKSW5kZXg6IHNy Yy9nZGIvc29tc29saWIuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBm aWxlOiAvZGV2L2ZzL0gvcnVwcC9kZXZlbC1sb2NhbC1yZXBvc2l0b3J5L3Ny Yy9nZGIvc29tc29saWIuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xLjEu MQpkaWZmIC1wIC11IC1yMS4xLjEuMSBzb21zb2xpYi5jCi0tLSBzcmMvZ2Ri L3NvbXNvbGliLmMJMjAwMS8xMi8yMyAwMDozNDo1NQkxLjEuMS4xCisrKyBz cmMvZ2RiL3NvbXNvbGliLmMJMjAwMS8xMi8yNCAwMjoxNTo0MwpAQCAtMzUx LDkgKzM1MSw4IEBAIHNvbV9zb2xpYl9sb2FkX3N5bWJvbHMgKHN0cnVjdCBz b19saXN0ICoKICAgLyogTm93IHdlIG5lZWQgdG8gYnVpbGQgYSBzZWN0aW9u IHRhYmxlIGZvciB0aGlzIGxpYnJhcnkgc2luY2UKICAgICAgd2UgbWlnaHQg YmUgZGVidWdnaW5nIGEgY29yZSBmaWxlIGZyb20gYSBkeW5hbWljYWxseSBs aW5rZWQKICAgICAgZXhlY3V0YWJsZSBpbiB3aGljaCB0aGUgbGlicmFyaWVz IHdlcmUgbm90IHByaXZhdGVseSBtYXBwZWQuICAqLwotICBpZiAoYnVpbGRf c2VjdGlvbl90YWJsZSAoc28tPmFiZmQsCi0JCQkgICAmc28tPnNlY3Rpb25z LAotCQkJICAgJnNvLT5zZWN0aW9uc19lbmQpKQorICBpZiAoKCpsb29rdXBf c3ltX2ZucyAoYWJmZCktPnN5bV9idWlsZF9zZWN0X3RhYmxlKSAKKyAgICAg IChzby0+YWJmZCwgJnNvLT5zZWN0aW9ucywgJnNvLT5zZWN0aW9uc19lbmQp KQogICAgIHsKICAgICAgIGVycm9yICgiVW5hYmxlIHRvIGJ1aWxkIHNlY3Rp b24gdGFibGUgZm9yIHNoYXJlZCBsaWJyYXJ5XG4uIik7CiAgICAgICByZXR1 cm47CkluZGV4OiBzcmMvZ2RiL3N5bWZpbGUuYwo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09ClJDUyBmaWxlOiAvZGV2L2ZzL0gvcnVwcC9kZXZlbC1sb2NhbC1y ZXBvc2l0b3J5L3NyYy9nZGIvc3ltZmlsZS5jLHYKcmV0cmlldmluZyByZXZp c2lvbiAxLjIKZGlmZiAtcCAtdSAtcjEuMiBzeW1maWxlLmMKLS0tIHNyYy9n ZGIvc3ltZmlsZS5jCTIwMDEvMTIvMjMgMjM6MjI6MTMJMS4yCisrKyBzcmMv Z2RiL3N5bWZpbGUuYwkyMDAxLzEyLzI0IDAyOjE1OjQzCkBAIC0xMTE4LDE3 ICsxMTE4LDE3IEBAIGFkZF9zeW10YWJfZm5zIChzdHJ1Y3Qgc3ltX2ZucyAq c2YpCiB9CiAKIAotLyogSW5pdGlhbGl6ZSB0byByZWFkIHN5bWJvbHMgZnJv bSB0aGUgc3ltYm9sIGZpbGUgc3ltX2JmZC4gIEl0IGVpdGhlcgotICAgcmV0 dXJucyBvciBjYWxscyBlcnJvcigpLiAgVGhlIHJlc3VsdCBpcyBhbiBpbml0 aWFsaXplZCBzdHJ1Y3Qgc3ltX2ZucwotICAgaW4gdGhlIG9iamZpbGUgc3Ry dWN0dXJlLCB0aGF0IGNvbnRhaW5zIGNhY2hlZCBpbmZvcm1hdGlvbiBhYm91 dCB0aGUKLSAgIHN5bWJvbCBmaWxlLiAgKi8KKy8qIEdldCBmb3JtYXQgZGVw ZW5kZW50IGluZm9ybWF0aW9uLiAgSXQgZWl0aGVyIHJldHVybnMgb3IgY2Fs bHMgZXJyb3IoKS4gCisgICBUaGUgcmVzdWx0IGlzIGEgcG9pbnRlciB0byBh IHN0cnVjdCBzeW1fZm5zLiAgIFRoaXMgYWxsb3dzIHVzIHRvIGdldAorICAg dG8gdGhlIGZvcm1hdCBkZXBlbmRlbnQgc3R1ZmYgZnJvbSBlbHNld2hlcmUg KHNwZWNpZmljYWxseSBleGVjKQorICAgd2hlbiB3ZSBuZWVkIGl0LiAqLwog Ci1zdGF0aWMgdm9pZAotZmluZF9zeW1fZm5zIChzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSkKK3N0cnVjdCBzeW1fZm5zKgorbG9va3VwX3N5bV9mbnMgKGJm ZCogYWJmZCkKIHsKICAgc3RydWN0IHN5bV9mbnMgKnNmOwotICBlbnVtIGJm ZF9mbGF2b3VyIG91cl9mbGF2b3VyID0gYmZkX2dldF9mbGF2b3VyIChvYmpm aWxlLT5vYmZkKTsKLSAgY2hhciAqb3VyX3RhcmdldCA9IGJmZF9nZXRfdGFy Z2V0IChvYmpmaWxlLT5vYmZkKTsKKyAgZW51bSBiZmRfZmxhdm91ciBvdXJf Zmxhdm91ciA9IGJmZF9nZXRfZmxhdm91ciAoYWJmZCk7CisgIGNoYXIgKm91 cl90YXJnZXQgPSBiZmRfZ2V0X3RhcmdldCAoYWJmZCk7CiAKICAgLyogU3Bl Y2lhbCBrbHVkZ2UgZm9yIGFwb2xsby4gIFNlZSBkc3RyZWFkLmMuICAqLwog ICBpZiAoU1RSRVFOIChvdXJfdGFyZ2V0LCAiYXBvbGxvIiwgNikpCkBAIC0x MTM4LDEyICsxMTM4LDIzIEBAIGZpbmRfc3ltX2ZucyAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUpCiAgICAgewogICAgICAgaWYgKG91cl9mbGF2b3VyID09 IHNmLT5zeW1fZmxhdm91cikKIAl7Ci0JICBvYmpmaWxlLT5zZiA9IHNmOwot CSAgcmV0dXJuOworCSAgcmV0dXJuIHNmOwogCX0KICAgICB9Ci0gIGVycm9y ICgiSSdtIHNvcnJ5LCBEYXZlLCBJIGNhbid0IGRvIHRoYXQuICBTeW1ib2wg Zm9ybWF0IGAlcycgdW5rbm93bi4iLAotCSBiZmRfZ2V0X3RhcmdldCAob2Jq ZmlsZS0+b2JmZCkpOworICBlcnJvciAoIk9iamVjdCBmb3JtYXQgYCVzJyB1 bmtub3duLiIsCisJIGJmZF9nZXRfdGFyZ2V0IChhYmZkKSk7Cit9CisKKy8q IEluaXRpYWxpemUgdG8gcmVhZCBzeW1ib2xzIGZyb20gdGhlIHN5bWJvbCBm aWxlIHN5bV9iZmQuICBJdCBlaXRoZXIKKyAgIHJldHVybnMgb3IgY2FsbHMg ZXJyb3IoKS4gIFRoZSByZXN1bHQgaXMgYW4gaW5pdGlhbGl6ZWQgc3RydWN0 IHN5bV9mbnMKKyAgIGluIHRoZSBvYmpmaWxlIHN0cnVjdHVyZSwgdGhhdCBj b250YWlucyBjYWNoZWQgaW5mb3JtYXRpb24gYWJvdXQgdGhlCisgICBzeW1i b2wgZmlsZS4gICovCisKK3N0YXRpYyB2b2lkCitmaW5kX3N5bV9mbnMgKG9i amZpbGUpCisgICAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlOworeworICBv YmpmaWxlLT5zZiA9IGxvb2t1cF9zeW1fZm5zKG9iamZpbGUtPm9iZmQpOwog fQogDAogLyogVGhpcyBmdW5jdGlvbiBydW5zIHRoZSBsb2FkIGNvbW1hbmQg b2Ygb3VyIGN1cnJlbnQgdGFyZ2V0LiAgKi8KSW5kZXg6IHNyYy9nZGIvc3lt ZmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9kZXYv ZnMvSC9ydXBwL2RldmVsLWxvY2FsLXJlcG9zaXRvcnkvc3JjL2dkYi9zeW1m aWxlLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4xLjEKZGlmZiAtcCAt dSAtcjEuMS4xLjEgc3ltZmlsZS5oCi0tLSBzcmMvZ2RiL3N5bWZpbGUuaAky MDAxLzEyLzIzIDAwOjM0OjU2CTEuMS4xLjEKKysrIHNyYy9nZGIvc3ltZmls ZS5oCTIwMDEvMTIvMjQgMDI6MTU6NDMKQEAgLTc0LDYgKzc0LDkgQEAgc3Ry dWN0IHNlY3Rpb25fYWRkcl9pbmZvIAogICB9IG90aGVyW01BWF9TRUNUSU9O U107CiB9OwogCisvKiBGb3J3YXJkIGRlY2xhcmF0aW9uICovCitzdHJ1Y3Qg c2VjdGlvbl90YWJsZTsKKwogLyogU3RydWN0dXJlIHRvIGtlZXAgdHJhY2sg b2Ygc3ltYm9sIHJlYWRpbmcgZnVuY3Rpb25zIGZvciB2YXJpb3VzCiAgICBv YmplY3QgZmlsZSB0eXBlcy4gICovCiAKQEAgLTEyMSw2ICsxMjQsMTUgQEAg c3RydWN0IHN5bV9mbnMKIAogICAgIHZvaWQgKCpzeW1fb2Zmc2V0cykgKHN0 cnVjdCBvYmpmaWxlICosIHN0cnVjdCBzZWN0aW9uX2FkZHJfaW5mbyAqKTsK IAorICAvKiBUaGlzIGlzbid0IHN0cmljdGx5IGEgc3ltYm9sIHJvdXRpbmUs IGJ1dCB0aGVyZSBtYXkgYmUgZm9ybWF0LQorICAgICBzZW5zaXRpdmUgaW5m b3JtYXRpb24gdGhhdCB0aGUgImV4ZWMiIHNpZGUgb2YgZ2RiIG5lZWRzIHRv IGhhdmUKKyAgICAgZGVhbHQgd2l0aC4gIFVzZWQgKGF0IGxlYXN0KSBmb3Ig SW50ZXJpeCAqLworICAvKiBCdWlsZHMgYSBzZWN0aW9uIHRhYmxlLCBnaXZl biBhcmdzIEJGRCwgU0VDVEFCTEVfUFRSLCBTRUNFTkRfUFRSLgorICAgICBS ZXR1cm5zIDAgaWYgT0ssIDEgb24gZXJyb3IuICAqLworCisgIGludCAoKnN5 bV9idWlsZF9zZWN0X3RhYmxlKSAoYmZkICosIHN0cnVjdCBzZWN0aW9uX3Rh YmxlICoqLCAKKwkJCSAgICAgICBzdHJ1Y3Qgc2VjdGlvbl90YWJsZSAqKik7 CisKICAgICAvKiBGaW5kcyB0aGUgbmV4dCBzdHJ1Y3Qgc3ltX2Zucy4gIFRo ZXkgYXJlIGFsbG9jYXRlZCBhbmQgaW5pdGlhbGl6ZWQKICAgICAgICBpbiB3 aGF0ZXZlciBtb2R1bGUgaW1wbGVtZW50cyB0aGUgZnVuY3Rpb25zIHBvaW50 ZWQgdG87IGFuIAogICAgICAgIGluaXRpYWxpemVyIGNhbGxzIGFkZF9zeW10 YWJfZm5zIHRvIGFkZCB0aGVtIHRvIHRoZSBnbG9iYWwgY2hhaW4uICAqLwpA QCAtMTM1LDYgKzE0NywxMSBAQCBzdHJ1Y3Qgc3ltX2ZucwogZXh0ZXJuIHZv aWQKIGRlZmF1bHRfc3ltZmlsZV9vZmZzZXRzIChzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSwgc3RydWN0IHNlY3Rpb25fYWRkcl9pbmZvICopOwogCisvKiBU aGUgZGVmYXVsdCB2ZXJzaW9uIG9mIHN5bV9mbnMuc3ltX2J1aWxkX3NlY3Rf dGFibGUuICovCisKK2V4dGVybiBpbnQKK2RlZmF1bHRfYnVpbGRfc2VjdGlv bl90YWJsZSAoYmZkICpzb21lX2JmZCwgc3RydWN0IHNlY3Rpb25fdGFibGUg KipzdGFydCwKKwkJCSAgICAgc3RydWN0IHNlY3Rpb25fdGFibGUgKiplbmQp OwogCiBleHRlcm4gdm9pZAogZXh0ZW5kX3BzeW1ib2xfbGlzdCAoc3RydWN0 IHBzeW1ib2xfYWxsb2NhdGlvbl9saXN0ICosIHN0cnVjdCBvYmpmaWxlICop OwpAQCAtMzE4LDUgKzMzNSw4IEBAIG1kZWJ1Z19idWlsZF9wc3ltdGFicyAo c3RydWN0IG9iamZpbGUgKiwKIGV4dGVybiB2b2lkCiBlbGZtZGVidWdfYnVp bGRfcHN5bXRhYnMgKHN0cnVjdCBvYmpmaWxlICosCiAJCQkgIGNvbnN0IHN0 cnVjdCBlY29mZl9kZWJ1Z19zd2FwICosIGFzZWN0aW9uICopOworCitleHRl cm4gc3RydWN0IHN5bV9mbnMqIAorbG9va3VwX3N5bV9mbnMgKGJmZCogYWJm ZCk7CiAKICNlbmRpZiAvKiAhZGVmaW5lZChTWU1GSUxFX0gpICovCkluZGV4 OiBzcmMvZ2RiL3RhcmdldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNT IGZpbGU6IC9kZXYvZnMvSC9ydXBwL2RldmVsLWxvY2FsLXJlcG9zaXRvcnkv c3JjL2dkYi90YXJnZXQuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xLjEu MQpkaWZmIC1wIC11IC1yMS4xLjEuMSB0YXJnZXQuaAotLS0gc3JjL2dkYi90 YXJnZXQuaAkyMDAxLzEyLzIzIDAwOjM0OjU2CTEuMS4xLjEKKysrIHNyYy9n ZGIvdGFyZ2V0LmgJMjAwMS8xMi8yNCAwMjoxNTo0MwpAQCAtMTE0NSwxMiAr MTE0NSw2IEBAIHN0cnVjdCBzZWN0aW9uX3RhYmxlCiAgICAgYmZkICpiZmQ7 CQkJLyogQkZEIGZpbGUgcG9pbnRlciAqLwogICB9OwogCi0vKiBCdWlsZHMg YSBzZWN0aW9uIHRhYmxlLCBnaXZlbiBhcmdzIEJGRCwgU0VDVEFCTEVfUFRS LCBTRUNFTkRfUFRSLgotICAgUmV0dXJucyAwIGlmIE9LLCAxIG9uIGVycm9y LiAgKi8KLQotZXh0ZXJuIGludAotYnVpbGRfc2VjdGlvbl90YWJsZSAoYmZk ICosIHN0cnVjdCBzZWN0aW9uX3RhYmxlICoqLCBzdHJ1Y3Qgc2VjdGlvbl90 YWJsZSAqKik7Ci0KIC8qIEZyb20gbWVtLWJyZWFrLmMgKi8KIAogZXh0ZXJu IGludCBtZW1vcnlfcmVtb3ZlX2JyZWFrcG9pbnQgKENPUkVfQUREUiwgY2hh ciAqKTsKSW5kZXg6IHNyYy9nZGIveGNvZmZyZWFkLmMKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQpSQ1MgZmlsZTogL2Rldi9mcy9IL3J1cHAvZGV2ZWwtbG9j YWwtcmVwb3NpdG9yeS9zcmMvZ2RiL3hjb2ZmcmVhZC5jLHYKcmV0cmlldmlu ZyByZXZpc2lvbiAxLjEuMS4xCmRpZmYgLXAgLXUgLXIxLjEuMS4xIHhjb2Zm cmVhZC5jCi0tLSBzcmMvZ2RiL3hjb2ZmcmVhZC5jCTIwMDEvMTIvMjMgMDA6 MzQ6NTgJMS4xLjEuMQorKysgc3JjL2dkYi94Y29mZnJlYWQuYwkyMDAxLzEy LzI0IDAyOjE1OjQzCkBAIC0zMDI5LDYgKzMwMjksNyBAQCBzdGF0aWMgc3Ry dWN0IHN5bV9mbnMgeGNvZmZfc3ltX2ZucyA9CiAgIHhjb2ZmX2luaXRpYWxf c2NhbiwJCS8qIHN5bV9yZWFkOiByZWFkIGEgc3ltYm9sIGZpbGUgaW50byBz eW10YWIgKi8KICAgeGNvZmZfc3ltZmlsZV9maW5pc2gsCQkvKiBzeW1fZmlu aXNoOiBmaW5pc2hlZCB3aXRoIGZpbGUsIGNsZWFudXAgKi8KICAgeGNvZmZf c3ltZmlsZV9vZmZzZXRzLAkvKiBzeW1fb2Zmc2V0czogeGxhdGUgb2Zmc2V0 cyBleHQtPmludCBmb3JtICovCisgIGRlZmF1bHRfYnVpbGRfc2VjdGlvbl90 YWJsZSwJLyogc3ltX2J1aWxkX3NlY3RfdGFibGU6IGJ1aWxkIHNlY3Rpb24g dGFibGUgKi8KICAgTlVMTAkJCQkvKiBuZXh0OiBwb2ludGVyIHRvIG5leHQg c3RydWN0IHN5bV9mbnMgKi8KIH07CiAKLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCmNvZmZfc3ltZmlsZV9vZmZzZXRzOiB0aGlzIGNoYW5nZWQg c2lnbmlmaWNhbnRseTsgaXMgaXQgcmlnaHQ/Pz8KCgpVc2Ugc3ltZmlsZSBv ZmZzZXRzIGVudHJ5IHBvaW50IGZvciBzaGFyZWQgbGlicmFyaWVzLgpBbHNv IHVzZSBuZXcgYnVpbGRfc2VjdGlvbl90YWJsZSBmdW5jdGlvbiBwb2ludGVy LgoKRnJpIERlYyAgMyAxMDowNzoyMCBQU1QgMTk5OSAgRG9ubiBUZXJyeSA8 ZG9ubnRlQG1pY3Jvc29mdC5jb20+CgkqIGNvZmZyZWFkLmMgKGNvZmZfc3lt ZmlsZV9vZmZzZXRzLCBjb2ZmX2J1aWxkX3NlY3Rpb25fdGFibGUsCgljb2Zm X2FkZF90b19zZWN0aW9uX3RhYmxlKTogTmV3LgoJKGNvZmZfc3ltX2Z1bnMp OiBVc2UuCgoKSW5kZXg6IHNyYy9nZGIvY29mZnJlYWQuYwo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09ClJDUyBmaWxlOiAvZGV2L2ZzL0gvcnVwcC9kZXZlbC1s b2NhbC1yZXBvc2l0b3J5L3NyYy9nZGIvY29mZnJlYWQuYyx2CnJldHJpZXZp bmcgcmV2aXNpb24gMS4xMQpkaWZmIC1wIC11IC1yMS4xMSBjb2ZmcmVhZC5j Ci0tLSBzcmMvZ2RiL2NvZmZyZWFkLmMJMjAwMS8xMi8yNCAwMTozNjozMgkx LjExCisrKyBzcmMvZ2RiL2NvZmZyZWFkLmMJMjAwMS8xMi8yNCAwMjoxNjo1 NwpAQCAtMjM0Myw2ICsyMzQzLDEyMiBAQCBjb2ZmX3JlYWRfZW51bV90eXBl IChpbnQgaW5kZXgsIGludCBsZW5nCiAgIHJldHVybiB0eXBlOwogfQogCisv KiBQYXJzZSB0aGUgdXNlcidzIGlkZWEgb2YgYW4gb2Zmc2V0IGZvciBkeW5h bWljIGxpbmtpbmcsIGludG8gb3VyIGlkZWEKKyAgIG9mIGhvdyB0byByZXBy ZXNlbnQgaXQgZm9yIGZhc3Qgc3ltYm9sIHJlYWRpbmcuICAgVGhpcyBpcyBl c3NlbnRpYWxseQorICAgdGhlIHNhbWUgYXMgdGhlIGRlZmF1bHQgdmVyc2lv biBvZiB0aGUgZnVuY3Rpb24sIGJ1dCBpdCBhZGRzIGluIEltYWdlQmFzZS4q LworCit2b2lkCitjb2ZmX3N5bWZpbGVfb2Zmc2V0cyAob2JqZmlsZSwgYWRk cnMpCisgICAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlOworICAgICBzdHJ1 Y3Qgc2VjdGlvbl9hZGRyX2luZm8gKmFkZHJzOworeworICBhc2VjdGlvbiAq c2VjdCA9IE5VTEw7CisgIHN0cnVjdCBzZWN0aW9uX29mZnNldHMgKnNlY3Rp b25fb2Zmc2V0czsKKyAgc3RydWN0IG9ial9zZWN0aW9uICpzOworICBpbnQg aTsKKworI2lmZGVmIENPRkZfSU1BR0VfV0lUSF9QRQorICBDT1JFX0FERFIg aW1hZ2VfYmFzZTsKKworICAvKiBXZSBtdXN0IG1ha2Ugc3VyZSB0aGF0IHN5 bWJvbCBsb29rdXAgdXNlcyB0aGUgc2FtZSBpZGVhIG9mIG9mZnNldHMKKyAg ICAgdGhhdCBldmVyeW9uZSBlbHNlIGRvZXMuICovCisgIGltYWdlX2Jhc2Ug PSBOT05aRVJPX0xJTktfQkFTRShvYmpmaWxlLT5vYmZkKTsKKyAgZm9yIChz ID0gb2JqZmlsZS0+c2VjdGlvbnM7IHMgPCBvYmpmaWxlLT5zZWN0aW9uc19l bmQ7ICsrcykKKyAgICAgeworICAgICAgIHMtPmFkZHIgKz0gaW1hZ2VfYmFz ZTsKKyAgICAgICBzLT5lbmRhZGRyICs9IGltYWdlX2Jhc2U7CisgICAgIH0K KyNlbmRpZgorCisgIG9iamZpbGUtPm51bV9zZWN0aW9ucyA9IFNFQ1RfT0ZG X01BWDsKKyAgb2JqZmlsZS0+c2VjdGlvbl9vZmZzZXRzID0gKHN0cnVjdCBz ZWN0aW9uX29mZnNldHMgKikKKyAgICBvYnN0YWNrX2FsbG9jICgmb2JqZmls ZSAtPiBwc3ltYm9sX29ic3RhY2ssIFNJWkVPRl9TRUNUSU9OX09GRlNFVFMp OworICBtZW1zZXQgKG9iamZpbGUtPnNlY3Rpb25fb2Zmc2V0cywgMCwgU0la RU9GX1NFQ1RJT05fT0ZGU0VUUyk7CisKKyAgLyogSW5pdGlhbGl6ZSB0aGUg c2VjdGlvbiBpbmRleGVzIGZvciBmdXR1cmUgdXNlLiAqLworICBzZWN0ID0g YmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKG9iamZpbGUtPm9iZmQsICIudGV4 dCIpOworICBpZiAoc2VjdCkgCisgICAgb2JqZmlsZS0+c2VjdF9pbmRleF90 ZXh0ID0gc2VjdC0+aW5kZXg7CisKKyAgc2VjdCA9IGJmZF9nZXRfc2VjdGlv bl9ieV9uYW1lIChvYmpmaWxlLT5vYmZkLCAiLmRhdGEiKTsKKyAgaWYgKHNl Y3QpIAorICAgIG9iamZpbGUtPnNlY3RfaW5kZXhfZGF0YSA9IHNlY3QtPmlu ZGV4OworCisgIHNlY3QgPSBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAob2Jq ZmlsZS0+b2JmZCwgIi5ic3MiKTsKKyAgaWYgKHNlY3QpIAorICAgIG9iamZp bGUtPnNlY3RfaW5kZXhfYnNzID0gc2VjdC0+aW5kZXg7CisKKyAgc2VjdCA9 IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChvYmpmaWxlLT5vYmZkLCAiLnJv ZGF0YSIpOworICBpZiAoc2VjdCkgCisgICAgb2JqZmlsZS0+c2VjdF9pbmRl eF9yb2RhdGEgPSBzZWN0LT5pbmRleDsKKyAgZWxzZQorICAgIC8qIERvZXNu J3QgYWx3YXlzIGhhdmUgdG8gZXhpc3QsIHNvIGZha2Ugb3V0IHRoZSBzYW5p dHkgdGVzdC4gKi8KKyAgICBvYmpmaWxlLT5zZWN0X2luZGV4X3JvZGF0YSA9 IC0yOworICAgIAorCisgIC8qIE5vdyBjYWxjdWxhdGUgb2Zmc2V0cyBmb3Ig b3RoZXIgc2VjdGlvbnMuICovCisgIGZvciAoaSA9IDA7IGkgPCBNQVhfU0VD VElPTlMgJiYgYWRkcnMtPm90aGVyW2ldLm5hbWU7IGkrKykKKyAgICB7Cisg ICAgICBzdHJ1Y3Qgb3RoZXJfc2VjdGlvbnMgKm9zcCA7CisKKyAgICAgIG9z cCA9ICZhZGRycy0+b3RoZXJbaV0gOworICAgICAgaWYgKGFkZHJzLT5vdGhl cltpXS5hZGRyID09IDApCisgIAljb250aW51ZTsKKyAgICAgIC8qIFRoZSBz ZWN0aW9uX29mZnNldHMgaW4gdGhlIG9iamZpbGUgYXJlIGhlcmUgZmlsbGVk IGluIHVzaW5nCisgICAgICAgICB0aGUgQkZEIGluZGV4LiAqLworICAgICAg KG9iamZpbGUtPnNlY3Rpb25fb2Zmc2V0cyktPm9mZnNldHNbb3NwLT5zZWN0 aW5kZXhdID0gb3NwLT5hZGRyOworICAgIH0KK30KKworLyogVXNlZCBmb3Ig ImV4ZWMiOyB0aGUgc2FtZSBtYXBwaW5nIG9mIEltYWdlQmFzZSBuZWVkcyB0 byBiZSBkb25lIGhlcmUgKi8KKworLyogTG9jYXRlIGFsbCBtYXBwYWJsZSBz ZWN0aW9ucyBvZiBhIEJGRCBmaWxlLiAKKyAgIHRhYmxlX3BwX2NoYXIgaXMg YSBjaGFyICogdG8gZ2V0IGl0IHRocm91Z2ggYmZkX21hcF9vdmVyX3NlY3Rp b25zOworICAgd2UgY2FzdCBpdCBiYWNrIHRvIGl0cyBwcm9wZXIgdHlwZS4g ICovCisKK3N0YXRpYyB2b2lkCitjb2ZmX2FkZF90b19zZWN0aW9uX3RhYmxl IChhYmZkLCBhc2VjdCwgdGFibGVfcHBfY2hhcikKKyAgICAgYmZkICphYmZk OworICAgICBzZWNfcHRyIGFzZWN0OworICAgICBQVFIgdGFibGVfcHBfY2hh cjsKK3sKKyAgc3RydWN0IHNlY3Rpb25fdGFibGUgKip0YWJsZV9wcCA9IChz dHJ1Y3Qgc2VjdGlvbl90YWJsZSAqKil0YWJsZV9wcF9jaGFyOworICBmbGFn d29yZCBhZmxhZzsKKworICBhZmxhZyA9IGJmZF9nZXRfc2VjdGlvbl9mbGFn cyAoYWJmZCwgYXNlY3QpOworICBpZiAoIShhZmxhZyAmIFNFQ19BTExPQykp CisgICAgcmV0dXJuOworICBpZiAoMCA9PSBiZmRfc2VjdGlvbl9zaXplIChh YmZkLCBhc2VjdCkpCisgICAgcmV0dXJuOworCisgICgqdGFibGVfcHApLT5i ZmQgPSBhYmZkOworICAoKnRhYmxlX3BwKS0+dGhlX2JmZF9zZWN0aW9uID0g YXNlY3Q7CisgICgqdGFibGVfcHApLT5hZGRyID0gYmZkX3NlY3Rpb25fdm1h IChhYmZkLCBhc2VjdCkgKyBOT05aRVJPX0xJTktfQkFTRShhYmZkKTsKKyAg KCp0YWJsZV9wcCktPmVuZGFkZHIgPSAoKnRhYmxlX3BwKS0+YWRkciArIGJm ZF9zZWN0aW9uX3NpemUgKGFiZmQsIGFzZWN0KTsKKyAgKCp0YWJsZV9wcCkr KzsKK30KKworLyogQnVpbGRzIGEgc2VjdGlvbiB0YWJsZSwgZ2l2ZW4gYXJn cyBCRkQsIFNFQ1RBQkxFX1BUUiwgU0VDRU5EX1BUUi4KKyAgIFJldHVybnMg MCBpZiBPSywgMSBvbiBlcnJvci4gICovCisKK2ludAorY29mZl9idWlsZF9z ZWN0aW9uX3RhYmxlIChzb21lX2JmZCwgc3RhcnQsIGVuZCkKKyAgICAgYmZk ICpzb21lX2JmZDsKKyAgICAgc3RydWN0IHNlY3Rpb25fdGFibGUgKipzdGFy dCwgKiplbmQ7Cit7CisgIHVuc2lnbmVkIGNvdW50OworICBjb3VudCA9IGJm ZF9jb3VudF9zZWN0aW9ucyAoc29tZV9iZmQpOworICBpZiAoKnN0YXJ0KQor ICAgIGZyZWUgKChQVFIpKnN0YXJ0KTsKKyAgKnN0YXJ0ID0gKHN0cnVjdCBz ZWN0aW9uX3RhYmxlICopIHhtYWxsb2MgKGNvdW50ICogc2l6ZW9mICgqKnN0 YXJ0KSk7CisgICplbmQgPSAqc3RhcnQ7CisgIGJmZF9tYXBfb3Zlcl9zZWN0 aW9ucyAoc29tZV9iZmQsIGNvZmZfYWRkX3RvX3NlY3Rpb25fdGFibGUsIChj aGFyICopZW5kKTsKKyAgaWYgKCplbmQgPiAqc3RhcnQgKyBjb3VudCkKKyAg ICBhYm9ydCgpOworICAvKiBXZSBjb3VsZCByZWFsbG9jIHRoZSB0YWJsZSwg YnV0IGl0IHByb2JhYmx5IGxvc2VzIGZvciBtb3N0IGZpbGVzLiAgKi8KKyAg cmV0dXJuIDA7Cit9CisKIC8qIFJlZ2lzdGVyIG91ciBhYmlsaXR5IHRvIHBh cnNlIHN5bWJvbHMgZm9yIGNvZmYgQkZEIGZpbGVzLiAqLwogCiBzdGF0aWMg c3RydWN0IHN5bV9mbnMgY29mZl9zeW1fZm5zID0KQEAgLTIzNTIsNyArMjQ3 Myw4IEBAIHN0YXRpYyBzdHJ1Y3Qgc3ltX2ZucyBjb2ZmX3N5bV9mbnMgPQog ICBjb2ZmX3N5bWZpbGVfaW5pdCwJCS8qIHN5bV9pbml0OiByZWFkIGluaXRp YWwgaW5mbywgc2V0dXAgZm9yIHN5bV9yZWFkKCkgKi8KICAgY29mZl9zeW1m aWxlX3JlYWQsCQkvKiBzeW1fcmVhZDogcmVhZCBhIHN5bWJvbCBmaWxlIGlu dG8gc3ltdGFiICovCiAgIGNvZmZfc3ltZmlsZV9maW5pc2gsCQkvKiBzeW1f ZmluaXNoOiBmaW5pc2hlZCB3aXRoIGZpbGUsIGNsZWFudXAgKi8KLSAgZGVm YXVsdF9zeW1maWxlX29mZnNldHMsCS8qIHN5bV9vZmZzZXRzOiAgeGxhdGUg ZXh0ZXJuYWwgdG8gaW50ZXJuYWwgZm9ybSAqLworICBjb2ZmX3N5bWZpbGVf b2Zmc2V0cywJCS8qIHN5bV9vZmZzZXRzOiAgeGxhdGUgZXh0ZXJuYWwgdG8g aW50ZXJuYWwgZm9ybSAqLworICBjb2ZmX2J1aWxkX3NlY3Rpb25fdGFibGUs CS8qIGJ1aWxkX3NlY3Rpb25fdGFibGU6IGV4ZWMgdGltZSBzZWN0aW9uIG9m ZnNldHMgKi8KICAgTlVMTAkJCQkvKiBuZXh0OiBwb2ludGVyIHRvIG5leHQg c3RydWN0IHN5bV9mbnMgKi8KIH07CiAKLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCkZpeCBsaW5rLmggaGVhZGVyIQoKU3VwcG9ydCBJbnRlcml4 IHNoYXJlZCBsaWJyYXJpZXM6CkFkZCBuZXcgZmlsZXMsIHJlbW92ZSBsaWVp bmcgY29tbWVudCBmcm9tIHNvbGliLmMsIG1vZGlmeQpidWlsZF9zZWN0aW9u X2FkZHJfaW5mb19mcm9tX3NlY3Rpb25fdGFibGUgdG8gdGFrZSBhIHRoaXJk IG9mZnNldApmb3IgdGhlIGFkanVzdG1lbnQgbmVlZGVkIGlmIHRoZSBzaGFy ZWQgbGliIHdhcyBub3QgbGlua2VkIGF0IDAgb2Zmc2V0LgoKTk9URSEgIElu IHdvcmtpbmcgb24gdGhpcywgSSB3YXMgdW5hYmxlIHRvIGZpbmQgYW55IHJl Z3Jlc3Npb25zIHRoYXQgdGVzdAp0aGUgaW50ZXJhY3Rpb24gb2YgZ2RiIHdp dGggZGxvcGVuKCkuICBJIGhhdmUgaGFuZC10ZXN0ZWQgdGhpcyBjb2RlIGZv cgp0aGF0LCBhbmQgaXQncyBtb3JlLW9yLWxlc3MgY29ycmVjdCAoYW5kIGZ1 cnRoZXIgZml4ZXMgYXJlIHByb2JhYmx5IGdlbmVyaWMpLgoKSSBoYXZlIG5v dCBkb25lIHRoZSB3b3JrIHRvIGFkZCBjYXRjaCBvcGVyYXRpb25zIGZvciBz aGFyZWQgbGliIGxvYWQKYW5kIHVubG9hZCwgYnV0IGVuYWJsZV9icmVhaygp IGhhcyBhbGwgdGhlIHBpZWNlcyBuZWVkZWQgdG8gZG8gdGhhdCwKaXQncyBh IG1hdHRlciBvZiBnZXR0aW5nIHRoZSBwcm9wZXIgaGVhZGVyIGFuZCBhIGZl dyBmdW5jdGlvbnMgY29ycmVjdC4KCgpGcmkgRGVjICAzIDEwOjA3OjIwIFBT VCAxOTk5ICBEb25uIFRlcnJ5IDxkb25udGVAbWljcm9zb2Z0LmNvbT4KCSog c29saWItcGVpLmM6IG5ldyBmaWxlLgoJKiBzb2xpYi1wZWkuaDogbmV3IGZp bGUuCgkqIE1ha2VmaWxlLmluOiBhZGQgcGVpLXNvbGliLmMgc3VwcG9ydC4K CSogaW50ZXJpeC5tdDogVXNlLgoJKiBjb2ZmcmVhZC5jIChjb2ZmX3N5bXRh Yl9yZWFkKTogRmxhZyB1bmRlZmluZWQgc3ltYm9scyBhcyB0cmFtcG9saW5l cy4KCkluZGV4OiBzcmMvZ2RiL01ha2VmaWxlLmluCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KUkNTIGZpbGU6IC9kZXYvZnMvSC9ydXBwL2RldmVsLWxvY2Fs LXJlcG9zaXRvcnkvc3JjL2dkYi9NYWtlZmlsZS5pbix2CnJldHJpZXZpbmcg cmV2aXNpb24gMS4yCmRpZmYgLXAgLXUgLXIxLjIgTWFrZWZpbGUuaW4KLS0t IHNyYy9nZGIvTWFrZWZpbGUuaW4JMjAwMS8xMi8yMyAyMDo0NjoxMwkxLjIK KysrIHNyYy9nZGIvTWFrZWZpbGUuaW4JMjAwMS8xMi8yNCAwMjoxODowNApA QCAtMjAyMyw2ICsyMDIzLDkgQEAgc29saWIubzogc29saWIuYyAkKGNvbW1h bmRfaCkgJChkZWZzX2gpIAogc29saWItc3Vub3Mubzogc29saWItc3Vub3Mu YyAkKGRlZnNfaCkgJChzeW1maWxlX2gpICQob2JqZmlsZXNfaCkgXAogCSQo Z2RiY29yZV9oKSAkKGluZmVyaW9yX2gpICQoc29saXN0X2gpCiAKK3NvbGli LXBlaS5vOiBzb2xpYi1wZWkuYyAkKGRlZnNfaCkgJChnZGJjb3JlX2gpICQo aW5mZXJpb3JfaCkgJChvYmpmaWxlc19oKSBcCisJJChzeW1maWxlX2gpICQo dGFyZ2V0X2gpICQoc29saXN0X2gpIHNvbGliLXBlaS5oCisKIHNvbGliLXN2 cjQubzogc29saWItc3ZyNC5jICQoZGVmc19oKSAkKGdkYmNvcmVfaCkgJChp bmZlcmlvcl9oKSAkKG9iamZpbGVzX2gpIFwKIAkkKHN5bWZpbGVfaCkgJCh0 YXJnZXRfaCkgJChzb2xpc3RfaCkgc29saWItc3ZyNC5oCiAKSW5kZXg6IHNy Yy9nZGIvY29mZnJlYWQuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBm aWxlOiAvZGV2L2ZzL0gvcnVwcC9kZXZlbC1sb2NhbC1yZXBvc2l0b3J5L3Ny Yy9nZGIvY29mZnJlYWQuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xMgpk aWZmIC1wIC11IC1yMS4xMiBjb2ZmcmVhZC5jCi0tLSBzcmMvZ2RiL2NvZmZy ZWFkLmMJMjAwMS8xMi8yNCAwMjoxNzozNwkxLjEyCisrKyBzcmMvZ2RiL2Nv ZmZyZWFkLmMJMjAwMS8xMi8yNCAwMjoxODowNApAQCAtODg2LDcgKzg4Niwx MiBAQCBjb2ZmX3N5bXRhYl9yZWFkIChsb25nIHN5bXRhYl9vZmZzZXQsIHVu CiAKIAkgIC8qIFJlY29yZCBhbGwgZnVuY3Rpb25zIC0tIGV4dGVybmFsIGFu ZCBzdGF0aWMgLS0gaW4gbWluc3ltcy4gKi8KIAkgIHRtcGFkZHIgPSBjcy0+ Y192YWx1ZSArIEFOT0ZGU0VUIChvYmpmaWxlLT5zZWN0aW9uX29mZnNldHMs IFNFQ1RfT0ZGX1RFWFQgKG9iamZpbGUpKTsKLSAgCSAgcmVjb3JkX21pbmlt YWxfc3ltYm9sIChjcy0+Y19uYW1lLCB0bXBhZGRyLCBtc3RfdGV4dCwgb2Jq ZmlsZSwgCisJICAvKiBXZSBhbHNvIG5lZWQgdG8gZmxhZyBkeW5hbWljIHN5 bWJvbHMsIHdoaWNoIGFyZSB1bmRlZmluZWQKKwkgICAgIGZ1bmN0aW9ucyAo dXN1YWxseSkgc28gdGhhdCB0aGUgc3BlY2lhbCBoYW5kbGluZyBvZiB0aGVt CisJICAgICB3b3JrcyBjb3JyZWN0bHkuICBBdCB0aGlzIHBvaW50LCBkeW5h bWljID09IHVuZGVmaW5lZDsKKwkgICAgIGlmIGl0J3MgcmVhbGx5IHVuZGVm aW5lZCwgd2UgZGVhbCB3aXRoIHRoYXQgbGF0ZXIuICovCisgCSAgcmVjb3Jk X21pbmltYWxfc3ltYm9sIChjcy0+Y19uYW1lLCB0bXBhZGRyLCAKKwkgICAg IGNzLT5jX3NlY251bSA9PSAwID8gbXN0X3NvbGliX3RyYW1wb2xpbmUgOiBt c3RfdGV4dCwgb2JqZmlsZSwKICAgCSAgICAgY29mZl9zZWN0aW9uX2Zyb21f YmZkX2luZGV4KG9iamZpbGUtPm9iZmQsIGNzLT5jX3NlY251bSkpOwogCiAJ ICBpZiAoY3MtPmNfbmF1eCA+IDApIApJbmRleDogc3JjL2dkYi9zb2xpYi1w ZWkuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiBzb2xpYi1w ZWkuYwpkaWZmIC1OIHNvbGliLXBlaS5jCi0tLSAvZGV2L251bGwJU3VuIERl YyAyMyAxNjo0NzozNCAyMDAxCisrKyBzb2xpYi1wZWkuYwlTdW4gRGVjIDIz IDE4OjE4OjA0IDIwMDEKQEAgLTAsMCArMSw2NjYgQEAKKy8qIEhhbmRsZSBJ bnRlcml4IChwZWkpIHNoYXJlZCBsaWJyYXJpZXMgZm9yIEdEQiwgdGhlIEdO VSBEZWJ1Z2dlci4KKyAgIERlcml2ZWQgZnJvbSB0aGUgc2ltaWxhciAoYnV0 IHJhdGhlciBkaWZmZXJlbnQpIFBFSSB2YXJpYW50LgorICAgQ29weXJpZ2h0 IDE5OTAsIDE5OTEsIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5 OTgsIDE5OTksIDIwMDAsCisgICAyMDAxLCAyMDAyCisgICBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KKworICAgVGhpcyBmaWxlIGlzIHBhcnQg b2YgR0RCLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y CisgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisg ICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCisgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQorICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3Jp dGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAgIEZvdW5kYXRpb24sIEluYy4s IDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyAgIEJvc3RvbiwgTUEg MDIxMTEtMTMwNywgVVNBLiAgKi8KKworI2luY2x1ZGUgImRlZnMuaCIKKwor I2luY2x1ZGUgInN5bXRhYi5oIgorI2luY2x1ZGUgImJmZC5oIgorI2luY2x1 ZGUgInN5bWZpbGUuaCIKKyNpbmNsdWRlICJvYmpmaWxlcy5oIgorI2luY2x1 ZGUgImdkYmNvcmUuaCIKKyNpbmNsdWRlICJ0YXJnZXQuaCIKKyNpbmNsdWRl ICJpbmZlcmlvci5oIgorCisjaW5jbHVkZSAic29saXN0LmgiCisjaW5jbHVk ZSAic29saWItcGVpLmgiCisKK3N0YXRpYyBzdHJ1Y3Qgcl9kZWJ1ZyBkZWJ1 Z19jb3B5OworCitzdGF0aWMgQ09SRV9BRERSIGRlYnVnX2Jhc2U7CS8qIEJh c2Ugb2YgZHluYW1pYyBsaW5rZXIgc3RydWN0dXJlcyAqLworc3RhdGljIENP UkVfQUREUiBicmVha3BvaW50X2FkZHI7CS8qIEFkZHJlc3Mgd2hlcmUgZW5k IGJrcHQgaXMgc2V0ICovCisKK3N0YXRpYyBpbnQgZW5hYmxlX2JyZWFrIChp bnQgbW9kZSk7CisKKy8qCisKK0xPQ0FMIEZVTkNUSU9OCisJbG9jYXRlX2Jh c2UgLS0gbG9jYXRlIHRoZSBiYXNlIGFkZHJlc3Mgb2YgZHluYW1pYyBsaW5r ZXIgc3RydWN0cworCQkgICAgICAgYW5kIHNldCBkZWJ1Z19iYXNlIHRvIGl0 IChpZiBpdCBmaW5kcyBpdCEpCisKK1NZTk9QU0lTCisJQ09SRV9BRERSIGxv Y2F0ZV9iYXNlICh2b2lkKQorCitERVNDUklQVElPTgorCUlmIHRoZSBpbmZl cmlvciBleGVjdXRhYmxlIGhhcyBiZWVuIGxpbmtlZCBkeW5hbWljYWxseSwK Kwl0aGVyZSBpcyBhIHNpbmdsZSBhZGRyZXNzIHNvbWV3aGVyZSBpbiB0aGUg aW5mZXJpb3IncyBkYXRhCisJc3BhY2Ugd2hpY2ggaXMgdGhlIGtleSB0byBs b2NhdGluZyBhbGwgb2YgdGhlIGR5bmFtaWMKKwlsaW5rZXIncyBydW50aW1l IHN0cnVjdHVyZXMuICBUaGlzIGFkZHJlc3MgaXMgdGhlIHZhbHVlIG9mCisJ dGhlIGRlYnVnIGJhc2Ugc3ltYm9sLiAgVGhlIGpvYiBvZiB0aGlzIGZ1bmN0 aW9uIGlzIHRvIGZpbmQKKwlhbmQgcmV0dXJuIHRoYXQgYWRkcmVzcywgb3Ig dG8gcmV0dXJuIDAgaWYgdGhlcmUgaXMgbm8gc3VjaAorCWFkZHJlc3MgKHRo ZSBleGVjdXRhYmxlIGlzIHN0YXRpY2FsbHkgbGlua2VkIGZvciBleGFtcGxl KS4KKworCVRoZSBhZGRyZXNzIG9mIHRoZSBkeW5hbWljIGxpbmtlcidzIHJ1 bnRpbWUgc3RydWN0dXJlIGlzCisJY29udGFpbmVkIHdpdGhpbiB0aGUgZHlu YW1pYyBpbmZvIHNlY3Rpb24gaW4gdGhlIGV4ZWN1dGFibGUKKwlmaWxlLiAg VGhlIGR5bmFtaWMgc2VjdGlvbiBpcyBhbHNvIG1hcHBlZCBpbnRvIHRoZSBp bmZlcmlvcgorCWFkZHJlc3Mgc3BhY2UuICBCZWNhdXNlIHRoZSBydW50aW1l IGxvYWRlciBmaWxscyBpbiB0aGUKKwlyZWFsIGFkZHJlc3MgYmVmb3JlIHN0 YXJ0aW5nIHRoZSBpbmZlcmlvciwgd2UgaGF2ZSB0byByZWFkCisJaW4gdGhl IGR5bmFtaWMgaW5mbyBzZWN0aW9uIGZyb20gdGhlIGluZmVyaW9yIGFkZHJl c3Mgc3BhY2UuCisKKwlJZiB3ZSBmaW5kIGEgY29uZGl0aW9uIGluZGljYXRp bmcgdGhhdCB0aGVyZSBpcyBubyBkeW5hbWljIGRlYnVnCisJaW5mbywgd2Ug cmV0dXJuIEVSUk9SX0FERFIuICBJZiBpdCdzIHRoZXJlLCBidXQgdGhlIGFk ZHJlc3MgaXNuJ3QKKwlmaWxsZWQgaW4geWV0LCB3ZSByZXR1cm4gMC4gIElm IGl0J3MgZGFtYWdlZCBvciBpbmNvcnJlY3QsIHdlIAorCXJlcG9ydCBhbiBl cnJvciBhbmQgcmV0dXJuIEVSUk9SX0FERFIuICAoSW4gZWZmZWN0LCAwIG1l YW5zCisJInRyeSBhZ2FpbiBsYXRlciIuKQorKi8KKworc3RhdGljIENPUkVf QUREUgorbG9jYXRlX2Jhc2UgKCkKK3sKKyAgc2VjX3B0ciBkeW5pbmZvX3Nl Y3Q7CisgIGludCBkeW5pbmZvX3NlY3Rfc2l6ZTsKKyAgQ09SRV9BRERSIGR5 bmluZm9fYWRkcjsKKyAgY2hhciAqYnVmOworICBjaGFyICpidWZlbmQ7CisK KyAgLyogQ2hlY2sgdG8gc2VlIGlmIHdlIGhhdmUgYSBjdXJyZW50bHkgdmFs aWQgYWRkcmVzcywgYW5kIGlmIHNvLCBhdm9pZAorICAgICBkb2luZyBhbGwg dGhpcyB3b3JrIGFnYWluIGFuZCBqdXN0IHJldHVybiB0aGUgY2FjaGVkIGFk ZHJlc3MuICBJZgorICAgICB3ZSBoYXZlIG5vIGNhY2hlZCBhZGRyZXNzLCB0 cnkgdG8gbG9jYXRlIGl0IGluIHRoZSBkeW5hbWljIGluZm8KKyAgICAgc2Vj dGlvbi4gICovCisKKyAgaWYgKGRlYnVnX2Jhc2UgIT0gMCkKKyAgICAgIHJl dHVybiBkZWJ1Z19iYXNlOworCisgIGlmIChleGVjX2JmZCA9PSBOVUxMCisg ICAgICB8fCBiZmRfZ2V0X2ZsYXZvdXIgKGV4ZWNfYmZkKSAhPSBiZmRfdGFy Z2V0X2NvZmZfZmxhdm91cikKKyAgICB7CisgICAgICAgZXJyb3IoImxvY2F0 ZV9iYXNlOiBmaWxlIG9mIHdyb25nIHR5cGU7IGNhbm5vdCBsb29rIHVwIHNo YXJlZCBsaWJzLlxuIik7CisgICAgICAgcmV0dXJuIEVSUk9SX0FERFI7Cisg ICAgfQorCisgIC8qIEZpbmQgdGhlIHN0YXJ0IGFkZHJlc3Mgb2YgdGhlIC5k eW5hbWljIHNlY3Rpb24uICAqLworICBkeW5pbmZvX3NlY3QgPSBiZmRfZ2V0 X3NlY3Rpb25fYnlfbmFtZSAoZXhlY19iZmQsICIuZHluYW1pYyIpOworICBp ZiAoZHluaW5mb19zZWN0ID09IE5VTEwpCisgICAgcmV0dXJuIEVSUk9SX0FE RFI7CisKKyAgZHluaW5mb19hZGRyID0gYmZkX3NlY3Rpb25fdm1hIChleGVj X2JmZCwgZHluaW5mb19zZWN0KSAKKwkJICsgTk9OWkVST19MSU5LX0JBU0Uo ZXhlY19iZmQpOworCisgIC8qIFJlYWQgaW4gLmR5bmFtaWMgc2VjdGlvbjsg aWYgd2UgZ290IGhlcmUsIGl0J3MgYW4gZXJyb3IgaWYgd2UgY291bGRuJ3QK KyAgICAgcmVhZCBpdC4gKi8KKyAgZHluaW5mb19zZWN0X3NpemUgPSBiZmRf c2VjdGlvbl9zaXplIChleGVjX2JmZCwgZHluaW5mb19zZWN0KTsKKyAgYnVm ID0gYWxsb2NhIChkeW5pbmZvX3NlY3Rfc2l6ZSk7CisgIGlmICh0YXJnZXRf cmVhZF9tZW1vcnkgKGR5bmluZm9fYWRkciwgYnVmLCBkeW5pbmZvX3NlY3Rf c2l6ZSkpCisgICAgeworICAgICAgZXJyb3IgKCJsb2NhdGVfYmFzZTogQ2Fu J3QgcmVhZCBkeW5hbWljIHNlY3Rpb25cbiIpOworICAgICAgcmV0dXJuIEVS Uk9SX0FERFI7CisgICAgfQorCisgIC8qIEZpbmQgdGhlIERUX0RFQlVHIGVu dHJ5IGluIHRoZSB0aGUgLmR5bmFtaWMgc2VjdGlvbi4gKi8KKyAgZm9yIChi dWZlbmQgPSBidWYgKyBkeW5pbmZvX3NlY3Rfc2l6ZTsKKyAgICAgICBidWYg PCBidWZlbmQ7CisgICAgICAgYnVmICs9IHNpemVvZiAoUEVfZHluKSkKKyAg ICB7CisgICAgICBQRV9keW4gKnhfZHlucCA9IChQRV9keW4gKilidWY7Cisg ICAgICBsb25nIGR5bl90YWc7CisgICAgICBDT1JFX0FERFIgZHluX3B0cjsK KworICAgICAgZHluX3RhZyA9IGJmZF9oX2dldF8zMiAoZXhlY19iZmQsIChi ZmRfYnl0ZSAqKSAmeF9keW5wLT5kX3RhZyk7CisgICAgICBpZiAoZHluX3Rh ZyA9PSBEVF9OVUxMKQorCXsKKwkgIC8qIGxhc3QgZW50cnk7IGlmIHdlIGdl dCBoZXJlIHdlIGRpZG4ndCBmaW5kIGl0ICovCisgICAgICAgICAgYnJlYWs7 CisJfQorICAgICAgZWxzZSBpZiAoZHluX3RhZyA9PSBEVF9ERUJVRykKKwl7 CisJICBkZWJ1Z19iYXNlID0gCisJICAgICBiZmRfaF9nZXRfMzIgKGV4ZWNf YmZkLCAoYmZkX2J5dGUgKikgJnhfZHlucC0+ZF91bi5kX3B0cik7CisJICBy ZXR1cm4KKwkgICAgIGRlYnVnX2Jhc2U7CisJfQorICAgIH0KKyAgcmV0dXJu IEVSUk9SX0FERFI7Cit9CisKKy8qCisKKyAgIExPQ0FMIEZVTkNUSU9OCisK KyAgIGZpcnN0X2xpbmtfbWFwX21lbWJlciAtLSBsb2NhdGUgZmlyc3QgbWVt YmVyIGluIGR5bmFtaWMgbGlua2VyJ3MgbWFwCisKKyAgIFNZTk9QU0lTCisK KyAgIHN0YXRpYyBDT1JFX0FERFIgZmlyc3RfbGlua19tYXBfbWVtYmVyICh2 b2lkKQorCisgICBERVNDUklQVElPTgorCisgICBGaW5kIHRoZSBmaXJzdCBl bGVtZW50IGluIHRoZSBpbmZlcmlvcidzIGR5bmFtaWMgbGluayBtYXAsIGFu ZAorICAgcmV0dXJuIGl0cyBhZGRyZXNzIGluIHRoZSBpbmZlcmlvci4gIFRo aXMgZnVuY3Rpb24gZG9lc24ndCBjb3B5IHRoZQorICAgbGluayBtYXAgZW50 cnkgaXRzZWxmIGludG8gb3VyIGFkZHJlc3Mgc3BhY2U7IGN1cnJlbnRfc29z IGFjdHVhbGx5CisgICBkb2VzIHRoZSByZWFkaW5nLiAgKi8KKworc3RhdGlj IGludCBkZWJ1Z19zbF9zdGF0ZSA9IDA7ICAgLyogdG8gYmUgc2V0IHdpdGgg dGhlIGRlYnVnZ2VyLCAnbmF0Y2guICovCisKK3N0YXRpYyBDT1JFX0FERFIK K2ZpcnN0X2xpbmtfbWFwX21lbWJlciAodm9pZCkKK3sKKyAgQ09SRV9BRERS IGxtID0gMDsKKworICByZWFkX21lbW9yeSAoZGVidWdfYmFzZSwgKGNoYXIg KikgJmRlYnVnX2NvcHksIHNpemVvZiAoZGVidWdfY29weSkpOworICBpZiAo ZGVidWdfY29weS5yX3ZlcnNpb24gIT0gRFlOQU1JQ19WRVJTSU9OKQorICAg ICB3YXJuaW5nKCJNaXNtYXRjaGVkIHJ1bnRpbWUgbG9hZGVyIHZlcnNpb247 IGF0dGVtcHRpbmcgdG8gcHJvY2VlZFxuIik7CisKKyAgc3dpdGNoKGRlYnVn X2NvcHkucl9zdGF0ZSkKKyAgICB7CisgICAgY2FzZSBSVF9BREQ6CisgICAg ICAgaWYgKGRlYnVnX3NsX3N0YXRlKQorCSAgIGZwcmludGYoc3RkZXJyLCAi QWRkIHN0YXRlIHJlcG9ydGVkXG4iKTsKKyAgICAgICBkaXNhYmxlX2JyZWFr cG9pbnRzX2luX3NobGlicygxKTsKKyAgICAgICBicmVhazsKKyAgICBjYXNl IFJUX0RFTEVURToKKyAgICAgICBpZiAoZGVidWdfc2xfc3RhdGUpCisJICAg ZnByaW50ZihzdGRlcnIsICJEZWxldGUgc3RhdGUgcmVwb3J0ZWRcbiIpOwor ICAgICAgIGRpc2FibGVfYnJlYWtwb2ludHNfaW5fc2hsaWJzKDEpOworICAg ICAgIGJyZWFrOworICAgIGNhc2UgUlRfQ09OU0lTVEVOVDoKKyAgICAgICBp ZiAoZGVidWdfc2xfc3RhdGUpCisJICAgZnByaW50ZihzdGRlcnIsICJDb25z aXN0ZW50IHN0YXRlIHJlcG9ydGVkOyByZWJ1aWxkaW5nXG4iKTsKKyAgICAg ICByZV9lbmFibGVfYnJlYWtwb2ludHNfaW5fc2hsaWJzKCk7CisgICAgICAg YnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICBpZiAoZGVidWdfc2xfc3Rh dGUpCisJICAgZnByaW50ZihzdGRlcnIsICJObyBzdGF0ZSByZXBvcnRlZFxu Iik7CisgICAgICAgYnJlYWs7CisgICAgfQorCisgIGxtID0gKENPUkVfQURE UikgZGVidWdfY29weS5yX21hcDsKKworICByZXR1cm4gKGxtKTsKK30KKwor LyoKKworICBMT0NBTCBGVU5DVElPTgorCisgIG9wZW5fc3ltYm9sX2ZpbGVf b2JqZWN0CisKKyAgU1lOT1BTSVMKKworICB2b2lkIG9wZW5fc3ltYm9sX2Zp bGVfb2JqZWN0ICh2b2lkICpmcm9tX3R0eSkKKworICBERVNDUklQVElPTgor CisgIElmIG5vIG9wZW4gc3ltYm9sIGZpbGUsIGF0dGVtcHQgdG8gbG9jYXRl IGFuZCBvcGVuIHRoZSBtYWluIHN5bWJvbAorICBmaWxlLiAgT24gUEVJIHN5 c3RlbXMsIHRoaXMgaXMgdGhlIGZpcnN0IGxpbmsgbWFwIGVudHJ5LiAgSWYg aXRzCisgIG5hbWUgaXMgaGVyZSwgd2UgY2FuIG9wZW4gaXQuICBVc2VmdWwg d2hlbiBhdHRhY2hpbmcgdG8gYSBwcm9jZXNzCisgIHdpdGhvdXQgZmlyc3Qg bG9hZGluZyBpdHMgc3ltYm9sIGZpbGUuCisKKyAgSWYgRlJPTV9UVFlQIGRl cmVmZXJlbmNlcyB0byBhIG5vbi16ZXJvIGludGVnZXIsIGFsbG93IG1lc3Nh Z2VzIHRvCisgIGJlIHByaW50ZWQuICBUaGlzIHBhcmFtZXRlciBpcyBhIHBv aW50ZXIgcmF0aGVyIHRoYW4gYW4gaW50IGJlY2F1c2UKKyAgb3Blbl9zeW1i b2xfZmlsZV9vYmplY3QoKSBpcyBjYWxsZWQgdmlhIGNhdGNoX2Vycm9ycygp IGFuZAorICBjYXRjaF9lcnJvcnMoKSByZXF1aXJlcyBhIHBvaW50ZXIgYXJn dW1lbnQuICovCisKK3N0YXRpYyBpbnQKK29wZW5fc3ltYm9sX2ZpbGVfb2Jq ZWN0ICh2b2lkICpmcm9tX3R0eXApCit7CisgIENPUkVfQUREUiBsbSwgbF9u YW1lOworICBDT1JFX0FERFIgdDsKKyAgY2hhciAqZmlsZW5hbWU7CisgIGlu dCBlcnJjb2RlOworICBpbnQgZnJvbV90dHkgPSAqKGludCAqKWZyb21fdHR5 cDsKKyAgc3RydWN0IGxpbmtfbWFwICp0bTsgIC8qIE5lZWRlZCwgYnV0IG5v dCByZWFsbHkgdXNlZC4gKi8KKyAgQ09SRV9BRERSIHJlczsKKworICBpZiAo c3ltZmlsZV9vYmpmaWxlKQorICAgIGlmICghcXVlcnkgKCJBdHRlbXB0IHRv IHJlbG9hZCBzeW1ib2xzIGZyb20gcHJvY2Vzcz8gIikpCisgICAgICByZXR1 cm4gMDsKKworICByZXMgPSBsb2NhdGVfYmFzZSAoKTsKKyAgaWYgKHJlcyA9 PSBFUlJPUl9BRERSKQorICAgIHJldHVybiAwOwkvKiBmYWlsZWQgc29tZWhv dy4uLiAqLworCisgIC8qIEZpcnN0IGxpbmsgbWFwIG1lbWJlciBzaG91bGQg YmUgdGhlIGV4ZWN1dGFibGUuICAqLyAvLyA/Pz8/PworICBsbSA9IGZpcnN0 X2xpbmtfbWFwX21lbWJlciAoKTsKKyAgaWYgKGxtID09IDApCisgICAgcmV0 dXJuIDA7CS8qIGZhaWxlZCBzb21laG93Li4uICovCisKKyAgLyogUmVhZCBh ZGRyZXNzIG9mIG5hbWUgZnJvbSB0YXJnZXQgbWVtb3J5IHRvIEdEQi4gICov CisgIHJlYWRfbWVtb3J5IChsbSArIG9mZnNldG9mKHN0cnVjdCBsaW5rX21h cCwgbF9uYW1lKSwgCisJICAgICAgICh2b2lkICopJmxfbmFtZSwgc2l6ZW9m KHRtLT5sX25hbWUpKTsKKworICBpZiAobF9uYW1lID09IDApCisgICAgcmV0 dXJuIDA7CQkvKiBObyBmaWxlbmFtZS4gICovCisKKyAgLyogTm93IGZldGNo IHRoZSBmaWxlbmFtZSBmcm9tIHRhcmdldCBtZW1vcnkuICAqLworICB0YXJn ZXRfcmVhZF9zdHJpbmcgKGxfbmFtZSwgJmZpbGVuYW1lLCBTT19OQU1FX01B WF9QQVRIX1NJWkUgLSAxLCAmZXJyY29kZSk7CisKKyAgaWYgKGVycmNvZGUp CisgICAgeworICAgICAgd2FybmluZyAoImZhaWxlZCB0byByZWFkIGV4ZWMg ZmlsZW5hbWUgZnJvbSBhdHRhY2hlZCBmaWxlOiAlcyIsCisJICAgICAgIHNh ZmVfc3RyZXJyb3IgKGVycmNvZGUpKTsKKyAgICAgIHJldHVybiAwOworICAg IH0KKworICBtYWtlX2NsZWFudXAgKHhmcmVlLCBmaWxlbmFtZSk7CisgIC8q IEhhdmUgYSBwYXRobmFtZTogcmVhZCB0aGUgc3ltYm9sIGZpbGUuICAqLwor ICBzeW1ib2xfZmlsZV9hZGRfbWFpbiAoZmlsZW5hbWUsIGZyb21fdHR5KTsK KworICByZXR1cm4gMTsKK30KKworLyogTE9DQUwgRlVOQ1RJT04KKworICAg Y3VycmVudF9zb3MgLS0gYnVpbGQgYSBsaXN0IG9mIGN1cnJlbnRseSBsb2Fk ZWQgc2hhcmVkIG9iamVjdHMKKworICAgU1lOT1BTSVMKKworICAgc3RydWN0 IHNvX2xpc3QgKmN1cnJlbnRfc29zICgpCisKKyAgIERFU0NSSVBUSU9OCisK KyAgIEJ1aWxkIGEgbGlzdCBvZiBgc3RydWN0IHNvX2xpc3QnIG9iamVjdHMg ZGVzY3JpYmluZyB0aGUgc2hhcmVkCisgICBvYmplY3RzIGN1cnJlbnRseSBs b2FkZWQgaW4gdGhlIGluZmVyaW9yLiAgVGhpcyBsaXN0IGRvZXMgbm90Cisg ICBpbmNsdWRlIGFuIGVudHJ5IGZvciB0aGUgbWFpbiBleGVjdXRhYmxlIGZp bGUuCisKKyAgIE5vdGUgdGhhdCB3ZSBvbmx5IGdhdGhlciBpbmZvcm1hdGlv biBkaXJlY3RseSBhdmFpbGFibGUgZnJvbSB0aGUKKyAgIGluZmVyaW9yIC0t LSB3ZSBkb24ndCBleGFtaW5lIGFueSBvZiB0aGUgc2hhcmVkIGxpYnJhcnkg ZmlsZXMKKyAgIHRoZW1zZWx2ZXMuICBUaGUgZGVjbGFyYXRpb24gb2YgYHN0 cnVjdCBzb19saXN0JyBzYXlzIHdoaWNoIGZpZWxkcworICAgd2UgcHJvdmlk ZSB2YWx1ZXMgZm9yLiAgKi8KKworc3RhdGljIHN0cnVjdCBzb19saXN0ICoK K3BlaV9jdXJyZW50X3NvcyAodm9pZCkKK3sKKyAgQ09SRV9BRERSIGxtOwor ICBDT1JFX0FERFIgcmVzOworICBzdHJ1Y3Qgc29fbGlzdCAqaGVhZCA9IDA7 CisgIHN0cnVjdCBzb19saXN0ICoqbGlua19wdHIgPSAmaGVhZDsKKworICAv KiBNYWtlIHN1cmUgd2UndmUgbG9va2VkIHVwIHRoZSBpbmZlcmlvcidzIGR5 bmFtaWMgbGlua2VyJ3MgYmFzZQorICAgICBzdHJ1Y3R1cmUuICAqLworICBy ZXMgPSBsb2NhdGVfYmFzZSAoKTsKKworICBpZiAocmVzID09IEVSUk9SX0FE RFIpCisgICAgcmV0dXJuIDA7CisKKyAgLyogV2FsayB0aGUgaW5mZXJpb3In cyBsaW5rIG1hcCBsaXN0LCBhbmQgYnVpbGQgb3VyIGxpc3Qgb2YKKyAgICAg YHN0cnVjdCBzb19saXN0JyBub2Rlcy4gICovCisgIGxtID0gZmlyc3RfbGlu a19tYXBfbWVtYmVyICgpOyAgCisgIHdoaWxlIChsbSAhPSAwKQorICAgIHsK KyAgICAgIHN0cnVjdCBzb19saXN0ICpuZXcKKwk9IChzdHJ1Y3Qgc29fbGlz dCAqKSB4bWFsbG9jIChzaXplb2YgKHN0cnVjdCBzb19saXN0KSk7CisgICAg ICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwICh4 ZnJlZSwgbmV3KTsKKyAgICAgIGludCBlcnJjb2RlOworICAgICAgY2hhciAq YnVmZmVyOworICAgICAgc3RydWN0IGxpbmtfbWFwIGxtX2VudHJ5OworCisg ICAgICBtZW1zZXQgKG5ldywgMCwgc2l6ZW9mICgqbmV3KSk7CisKKyAgICAg IG5ldy0+bG1faW5mbyA9IHhtYWxsb2MgKHNpemVvZiAoc3RydWN0IGxtX2lu Zm8pKTsKKyAgICAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIG5ldy0+bG1faW5m byk7CisKKyAgICAgIHJlYWRfbWVtb3J5IChsbSwgKHZvaWQgKikmbG1fZW50 cnksIHNpemVvZihzdHJ1Y3QgbGlua19tYXApKTsKKworICAgICAgLyogRXh0 cmFjdCB0aGlzIHNoYXJlZCBvYmplY3QncyBuYW1lLiAgKi8KKyAgICAgIHRh cmdldF9yZWFkX3N0cmluZyAoKENPUkVfQUREUilsbV9lbnRyeS5sX25hbWUs ICZidWZmZXIsCisJCQkgIFNPX05BTUVfTUFYX1BBVEhfU0laRSAtIDEsICZl cnJjb2RlKTsKKyAgICAgIGlmIChlcnJjb2RlICE9IDApCisJeworCSAgd2Fy bmluZyAoImN1cnJlbnRfc29zOiBDYW4ndCByZWFkIHBhdGhuYW1lIGZvciBs b2FkIG1hcDogJXNcbiIsCisJCSAgIHNhZmVfc3RyZXJyb3IgKGVycmNvZGUp KTsKKwl9CisgICAgICBlbHNlCisJeworCSAgc3RybmNweSAobmV3LT5zb19u YW1lLCBidWZmZXIsIFNPX05BTUVfTUFYX1BBVEhfU0laRSAtIDEpOworCSAg bmV3LT5zb19uYW1lW1NPX05BTUVfTUFYX1BBVEhfU0laRSAtIDFdID0gJ1ww JzsKKwkgIHhmcmVlIChidWZmZXIpOworCSAgc3RyY3B5IChuZXctPnNvX29y aWdpbmFsX25hbWUsIG5ldy0+c29fbmFtZSk7CisJfQorCisgICAgICAvKiBH ZXQgdGhlIG5leHQgcG9pbnRlciBub3cuICovCisgICAgICBsbSA9IChDT1JF X0FERFIpbG1fZW50cnkubF9uZXh0OworCisgICAgICBuZXctPmxtX2luZm8t Pmxtb2Zmc2V0ID0gKENPUkVfQUREUilsbV9lbnRyeS5sX29mZnM7CisKKyAg ICAgIC8qIElmIHRoaXMgZW50cnkgaGFzIG5vIG5hbWUsIGluY2x1ZGUgaXQg aW4gdGhlIGxpc3QuICBJdCdzIHRoZSBvbmUKKwkgZm9yIHRoZSBtYWluIHBy b2dyYW0uICAqLworICAgICAgaWYgKG5ldy0+c29fbmFtZVswXSA9PSAwKQor CXsKKwkgICBmcmVlX3NvIChuZXcpOworCX0KKyAgICAgIGVsc2UKKwl7CisJ ICBuZXctPm5leHQgPSAwOworCSAgKmxpbmtfcHRyID0gbmV3OworCSAgbGlu a19wdHIgPSAmbmV3LT5uZXh0OworCX0KKworICAgICAgZGlzY2FyZF9jbGVh bnVwcyAob2xkX2NoYWluKTsKKworICAgIH0KKworICAgIC8qIFNldCB1cCBz byB3ZSdsbCBiZSB0b2xkIHRoYXQgZGxvcGVuKCkgY2FsbHMgaGF2ZSBvY2N1 cnJlZC4gKi8KKyAgICBlbmFibGVfYnJlYWsoMSk7CisKKyAgcmV0dXJuIGhl YWQ7Cit9CisKKworLyogUmV0dXJuIDEgaWYgUEMgbGllcyBpbiB0aGUgZHlu YW1pYyBzeW1ib2wgcmVzb2x1dGlvbiBjb2RlIG9mIHRoZQorICAgcnVuIHRp bWUgbG9hZGVyLiAgKi8KK3N0YXRpYyBDT1JFX0FERFIgaW50ZXJwX3RleHRf c2VjdF9sb3c7CitzdGF0aWMgQ09SRV9BRERSIGludGVycF90ZXh0X3NlY3Rf aGlnaDsKK3N0YXRpYyBDT1JFX0FERFIgaW50ZXJwX3BsdF9zZWN0X2xvdzsK K3N0YXRpYyBDT1JFX0FERFIgaW50ZXJwX3BsdF9zZWN0X2hpZ2g7CisKK3N0 YXRpYyBpbnQKK3BlaV9pbl9keW5zeW1fcmVzb2x2ZV9jb2RlIChDT1JFX0FE RFIgcGMpCit7CisgIHJldHVybiAoKHBjID49IGludGVycF90ZXh0X3NlY3Rf bG93ICYmIHBjIDwgaW50ZXJwX3RleHRfc2VjdF9oaWdoKQorCSAgfHwgKHBj ID49IGludGVycF9wbHRfc2VjdF9sb3cgJiYgcGMgPCBpbnRlcnBfcGx0X3Nl Y3RfaGlnaCkKKwkgIHx8IGluX3BsdF9zZWN0aW9uIChwYywgTlVMTCkpOwor fQorCisvKgorCitMT0NBTCBGVU5DVElPTgorCWVuYWJsZV9icmVhayAtLSBh cnJhbmdlIGZvciBkeW5hbWljIGxpbmtlciB0byBoaXQgYnJlYWtwb2ludAor CSAgIHNvbGliX2FkZF94eXp6eSB3aWxsIGJlIGNhbGxlZCB3aGVuIHRoYXQg YnJlYWtwb2ludCBpcyBoaXQ7CisJICAgaW5mcnVuLmMgImtub3dzIiB0aGlz LgorCitTWU5PUFNJUworCWludCBlbmFibGVfYnJlYWsgKG1vZGUpCisKK0RF U0NSSVBUSU9OCisJVGhlIGR5bmFtaWMgbGlua2VyIGhhcywgYXMgcGFydCBv ZiB0aGUgZGVidWdnZXIgaW50ZXJmYWNlLAorCXN1cHBvcnQgZm9yIGFycmFu Z2luZyBmb3IgdGhlIGluZmVyaW9yIHRvIGhpdCBhIGJyZWFrcG9pbnQKKwlh ZnRlciBtYXBwaW5nIGluIHRoZSBzaGFyZWQgbGlicmFyaWVzLiAgVGhpcyBm dW5jdGlvbgorCWVuYWJsZXMgdGhhdCBicmVha3BvaW50LgorCisJVGhlIGRl YnVnZ2VyIGludGVyZmFjZSBzdHJ1Y3R1cmUgY29udGFpbnMgYSBtZW1iZXIg KHJfYnJrKQorCXdoaWNoIGlzIHN0YXRpY2FsbHkgaW5pdGlhbGl6ZWQgYXQg dGhlIHRpbWUgdGhlIHNoYXJlZCBsaWJyYXJ5IGlzCisJYnVpbHQsIHRvIHRo ZSBvZmZzZXQgb2YgYSBmdW5jdGlvbiAoX3JfZGVidWdfc3RhdGUpIHdoaWNo IGlzIGd1YXJhbi0KKwl0ZWVkIHRvIGJlIGNhbGxlZCBvbmNlIGJlZm9yZSBt YXBwaW5nIGluIGEgbGlicmFyeSwgYW5kIGFnYWluIHdoZW4KKwl0aGUgbWFw cGluZyBpcyBjb21wbGV0ZS4gIEF0IHRoZSB0aW1lIHdlIGFyZSBleGFtaW5p bmcgdGhpcyBtZW1iZXIsCisJaXQgY29udGFpbnMgb25seSB0aGUgdW5yZWxv Y2F0ZWQgb2Zmc2V0IG9mIHRoZSBmdW5jdGlvbiwgc28gd2UgaGF2ZQorCXRv IGRvIG91ciBvd24gcmVsb2NhdGlvbi4gIExhdGVyLCB3aGVuIHRoZSBkeW5h bWljIGxpbmtlciBhY3R1YWxseQorCXJ1bnMsIGl0IHJlbG9jYXRlcyByX2Jy ayB0byBiZSB0aGUgYWN0dWFsIGFkZHJlc3Mgb2YgX3JfZGVidWdfc3RhdGUo KS4KKworCVRoZSBkZWJ1Z2dlciBpbnRlcmZhY2Ugc3RydWN0dXJlIGFsc28g Y29udGFpbnMgYW4gZW51bWVyYXRpb24gd2hpY2gKKwlpcyBzZXQgdG8gZWl0 aGVyIFJUX0FERCBvciBSVF9ERUxFVEUgcHJpb3IgdG8gY2hhbmdpbmcgdGhl IG1hcHBpbmcsCisJZGVwZW5kaW5nIHVwb24gd2hldGhlciBvciBub3QgdGhl IGxpYnJhcnkgaXMgYmVpbmcgbWFwcGVkIG9yIHVubWFwcGVkLAorCWFuZCB0 aGVuIHNldCB0byBSVF9DT05TSVNURU5UIGFmdGVyIHRoZSBsaWJyYXJ5IGlz IG1hcHBlZC91bm1hcHBlZC4KKworCU1PREUgaW5kaWNhdGVzIHdoZXRoZXIg dGhlIGJyZWFrIHNob3VsZCBiZSBhdCBfbWFpbkNSVHN0YXJ0dXAgKGZvciAK Kwl0aGUgdmVyeSBmaXJzdCB0aW1lKSBvciBhdCB0aGUgbG9jYXRpb24gdGhl IGR5bmFtaWMgbGlua2VyIHNldCB1cC4KKwlFeHRyYSBjYWxscyBpbiBtb2Rl IDEgKHdpdGhvdXQgbW9kZSAwKSBhcmUgdHVybmVkIGludG8gbm9vcHMuCisq LworCitzdGF0aWMgaW50CitlbmFibGVfYnJlYWsgKGludCBtb2RlKQorewor ICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW1ib2w7CisKKyAgLyogRmly c3QsIHJlbW92ZSBhbGwgdGhlIHNvbGliIGV2ZW50IGJyZWFrcG9pbnRzLiAg VGhlaXIgYWRkcmVzc2VzCisgICAgIG1heSBoYXZlIGNoYW5nZWQgc2luY2Ug dGhlIGxhc3QgdGltZSB3ZSByYW4gdGhlIHByb2dyYW0uICAqLworICByZW1v dmVfc29saWJfZXZlbnRfYnJlYWtwb2ludHMgKCk7CisKKyAgLyogSWYgd2Ug aGF2ZSBhIG1lYW5pbmdmdWwgcl9icmssIHVzZSBpdDsgaWYgbm90LCB1c2Ug bWFpbiBvbiB0aGUKKyAgICAgYXNzdW1wdGlvbiB0aGF0IGl0J3MgdGhlIGZp cnN0IHRpbWUgYW5kIHJfYnJrIGlzbid0IHNldCB1cCB5ZXQuICovCisKKyAg bXN5bWJvbCA9IGxvb2t1cF9taW5pbWFsX3N5bWJvbCgiX21haW5DUlRTdGFy dHVwIiwgTlVMTCwgc3ltZmlsZV9vYmpmaWxlKTsKKyAgaWYgKG1vZGUgPT0g MCAmJiBtc3ltYm9sICE9IE5VTEwgJiYgU1lNQk9MX1ZBTFVFX0FERFJFU1Mg KG1zeW1ib2wpICE9IDApCisgICAgeworICAgICAgZGlzYWJsZV9icmVha3Bv aW50c19pbl9zaGxpYnMoMCk7CisgICAgICBjcmVhdGVfc29saWJfZXZlbnRf YnJlYWtwb2ludCAoU1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1zeW1ib2wpKTsK KyAgICB9CisgIGVsc2UgaWYgKG1vZGUgPT0gMSAmJiBkZWJ1Z19jb3B5LnJf YnJrICE9IDApCisgICAgeworICAgICAgY3JlYXRlX3NvbGliX2V2ZW50X2Jy ZWFrcG9pbnQgKGRlYnVnX2NvcHkucl9icmspOworICAgIH0KKyAgZWxzZQor ICAgIHsKKyAgICAgIC8qIEZvciB3aGF0ZXZlciByZWFzb24gd2UgY291bGRu J3Qgc2V0IGEgYnJlYWtwb2ludCBpbiB0aGUgZHluYW1pYworCSBsaW5rZXIu ICBXYXJuLiAgKi8KKyAgICAgIHdhcm5pbmcgKCJVbmFibGUgdG8gZmluZCBk eW5hbWljIGxpbmtlciBicmVha3BvaW50IGZ1bmN0aW9uLlxuR0RCIHdpbGwg YmUgdW5hYmxlIHRvIGRlYnVnIHNoYXJlZCBsaWJyYXJ5IGluaXRpYWxpemVy c1xuYW5kIHRyYWNrIGV4cGxpY2l0bHkgbG9hZGVkIGR5bmFtaWMgY29kZS4i KTsKKyAgICB9CisKKyAgcmV0dXJuICgxKTsKK30KKworLyoKKworICAgTE9D QUwgRlVOQ1RJT04KKworICAgc3BlY2lhbF9zeW1ib2xfaGFuZGxpbmcgLS0g YWRkaXRpb25hbCBzaGFyZWQgbGlicmFyeSBzeW1ib2wgaGFuZGxpbmcKKwor ICAgU1lOT1BTSVMKKworICAgdm9pZCBzcGVjaWFsX3N5bWJvbF9oYW5kbGlu ZyAoKQorCisgICBERVNDUklQVElPTgorCisgICBPbmNlIHRoZSBzeW1ib2xz IGZyb20gYSBzaGFyZWQgb2JqZWN0IGhhdmUgYmVlbiBsb2FkZWQgaW4gdGhl IHVzdWFsCisgICB3YXksIHdlIGFyZSBjYWxsZWQgdG8gZG8gYW55IHN5c3Rl bSBzcGVjaWZpYyBzeW1ib2wgaGFuZGxpbmcgdGhhdCAKKyAgIGlzIG5lZWRl ZC4KKworICAgRm9yIFN1bk9TNCwgdGhpcyBjb25zaXN0ZWQgb2YgZ3J1bmdp bmcgYXJvdW5kIGluIHRoZSBkeW5hbWljCisgICBsaW5rZXJzIHN0cnVjdHVy ZXMgdG8gZmluZCBzeW1ib2wgZGVmaW5pdGlvbnMgZm9yICJjb21tb24iIHN5 bWJvbHMKKyAgIGFuZCBhZGRpbmcgdGhlbSB0byB0aGUgbWluaW1hbCBzeW1i b2wgdGFibGUgZm9yIHRoZSBydW50aW1lIGNvbW1vbgorICAgb2JqZmlsZS4K KworICAgSG93ZXZlciwgZm9yIFBFSSwgdGhlcmUncyBub3RoaW5nIHRvIGRv LgorCisgKi8KKworc3RhdGljIHZvaWQKK3BlaV9zcGVjaWFsX3N5bWJvbF9o YW5kbGluZyAodm9pZCkKK3sKK30KKworLyogUmVsb2NhdGUgdGhlIG1haW4g ZXhlY3V0YWJsZS4gIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCB1 cG9uCisgICBzdG9wcGluZyB0aGUgaW5mZXJpb3IgcHJvY2VzcyBhdCB0aGUg ZW50cnkgcG9pbnQgdG8gdGhlIHByb2dyYW0uIAorICAgVGhlIGVudHJ5IHBv aW50IGZyb20gQkZEIGlzIGNvbXBhcmVkIHRvIHRoZSBQQyBhbmQgaWYgdGhl eSBhcmUKKyAgIGRpZmZlcmVudCwgdGhlIG1haW4gZXhlY3V0YWJsZSBpcyBy ZWxvY2F0ZWQgYnkgdGhlIHByb3BlciBhbW91bnQuIAorICAgCisgICBBcyB3 cml0dGVuIGl0IHdpbGwgb25seSBhdHRlbXB0IHRvIHJlbG9jYXRlIGV4ZWN1 dGFibGVzIHdoaWNoCisgICBsYWNrIGludGVycHJldGVyIHNlY3Rpb25zLiAg SXQgc2VlbXMgbGlrZWx5IHRoYXQgb25seSBkeW5hbWljCisgICBsaW5rZXIg ZXhlY3V0YWJsZXMgd2lsbCBnZXQgcmVsb2NhdGVkLCB0aG91Z2ggaXQgc2hv dWxkIHdvcmsKKyAgIHByb3Blcmx5IGZvciBhIHBvc2l0aW9uLWluZGVwZW5k ZW50IHN0YXRpYyBleGVjdXRhYmxlIGFzIHdlbGwuICAqLworCitzdGF0aWMg dm9pZAorcGVpX3JlbG9jYXRlX21haW5fZXhlY3V0YWJsZSAodm9pZCkKK3sK KyNpZiAwIC8vLyBwb3NzLiBhIG5vLW9wLjsgaG93ZXZlciBtYXkgbWFrZSBs aWZlIHNpbXBsZXIgdy5yLnQuICJmcmVlIiByZWxvY3MKKyAgYXNlY3Rpb24g KmludGVycF9zZWN0OworICBDT1JFX0FERFIgcGMgPSByZWFkX3BjICgpOwor CisgIC8qIERlY2lkZSBpZiB0aGUgb2JqZmlsZSBuZWVkcyB0byBiZSByZWxv Y2F0ZWQuICBBcyBpbmRpY2F0ZWQgYWJvdmUsCisgICAgIHdlIHdpbGwgb25s eSBiZSBoZXJlIHdoZW4gZXhlY3V0aW9uIGlzIHN0b3BwZWQgYXQgdGhlIGJl Z2lubmluZworICAgICBvZiB0aGUgcHJvZ3JhbS4gIFJlbG9jYXRpb24gaXMg bmVjZXNzYXJ5IGlmIHRoZSBhZGRyZXNzIGF0IHdoaWNoCisgICAgIHdlIGFy ZSBwcmVzZW50bHkgc3RvcHBlZCBkaWZmZXJzIGZyb20gdGhlIHN0YXJ0IGFk ZHJlc3Mgc3RvcmVkIGluCisgICAgIHRoZSBleGVjdXRhYmxlIEFORCB0aGVy ZSdzIG5vIGludGVycHJldGVyIHNlY3Rpb24uICBUaGUgY29uZGl0aW9uCisg ICAgIHJlZ2FyZGluZyB0aGUgaW50ZXJwcmV0ZXIgc2VjdGlvbiBpcyB2ZXJ5 IGltcG9ydGFudCBiZWNhdXNlIGlmCisgICAgIHRoZXJlICppcyogYW4gaW50 ZXJwcmV0ZXIgc2VjdGlvbiwgZXhlY3V0aW9uIHdpbGwgYmVnaW4gdGhlcmUK KyAgICAgaW5zdGVhZC4gIFdoZW4gdGhlcmUgaXMgYW4gaW50ZXJwcmV0ZXIg c2VjdGlvbiwgdGhlIHN0YXJ0IGFkZHJlc3MKKyAgICAgaXMgKHByZXN1bWFi bHkpIHVzZWQgYnkgdGhlIGludGVycHJldGVyIGF0IHNvbWUgcG9pbnQgdG8g c3RhcnQKKyAgICAgZXhlY3V0aW9uIG9mIHRoZSBwcm9ncmFtLgorCisgICAg IElmIHRoZXJlIGlzIGFuIGludGVycHJldGVyLCBpdCBpcyBub3JtYWwgZm9y IGl0IHRvIGJlIHNldCB0byBhbgorICAgICBhcmJpdHJhcnkgYWRkcmVzcyBh dCB0aGUgb3V0c2V0LiAgVGhlIGpvYiBvZiBmaW5kaW5nIGl0IGlzCisgICAg IGhhbmRsZWQgaW4gZW5hYmxlX2JyZWFrKCkuCisKKyAgICAgU28sIHRvIHN1 bW1hcml6ZSwgcmVsb2NhdGlvbnMgYXJlIG5lY2Vzc2FyeSB3aGVuIHRoZXJl IGlzIG5vCisgICAgIGludGVycHJldGVyIHNlY3Rpb24gYW5kIHRoZSBzdGFy dCBhZGRyZXNzIG9idGFpbmVkIGZyb20gdGhlCisgICAgIGV4ZWN1dGFibGUg aXMgZGlmZmVyZW50IGZyb20gdGhlIGFkZHJlc3MgYXQgd2hpY2ggR0RCIGlz CisgICAgIGN1cnJlbnRseSBzdG9wcGVkLgorICAgICAKKyAgICAgWyBUaGUg YXN0dXRlIHJlYWRlciB3aWxsIG5vdGUgdGhhdCB3ZSBhbHNvIHRlc3QgdG8g bWFrZSBzdXJlIHRoYXQKKyAgICAgICB0aGUgZXhlY3V0YWJsZSBpbiBxdWVz dGlvbiBoYXMgdGhlIERZTkFNSUMgZmxhZyBzZXQuICBJdCBpcyBteQorICAg ICAgIG9waW5pb24gdGhhdCB0aGlzIHRlc3QgaXMgdW5uZWNlc3NhcnkgKHVu ZGVzaXJhYmxlIGV2ZW4pLiAgSXQKKyAgICAgICB3YXMgYWRkZWQgdG8gYXZv aWQgaW5hZHZlcnRlbnQgcmVsb2NhdGlvbiBvZiBhbiBleGVjdXRhYmxlCisg ICAgICAgd2hvc2UgZV90eXBlIG1lbWJlciBpbiB0aGUgRUxGIGhlYWRlciBp cyBub3QgRVRfRFlOLiAgVGhlcmUgbWF5CisgICAgICAgYmUgYSB0aW1lIGlu IHRoZSBmdXR1cmUgd2hlbiBpdCBpcyBkZXNpcmFibGUgdG8gZG8gcmVsb2Nh dGlvbnMKKyAgICAgICBvbiBvdGhlciB0eXBlcyBvZiBmaWxlcyBhcyB3ZWxs IGluIHdoaWNoIGNhc2UgdGhpcyBjb25kaXRpb24KKyAgICAgICBzaG91bGQg ZWl0aGVyIGJlIHJlbW92ZWQgb3IgbW9kaWZpZWQgdG8gYWNjb21vZGF0ZSB0 aGUgbmV3IGZpbGUKKyAgICAgICB0eXBlLiAgKEUuZywgYW4gRVRfRVhFQyBl eGVjdXRhYmxlIHdoaWNoIGhhcyBiZWVuIGJ1aWx0IHRvIGJlCisgICAgICAg cG9zaXRpb24taW5kZXBlbmRlbnQgY291bGQgc2FmZWx5IGJlIHJlbG9jYXRl ZCBieSB0aGUgT1MgaWYKKyAgICAgICBkZXNpcmVkLiAgSXQgaXMgdHJ1ZSB0 aGF0IHRoaXMgdmlvbGF0ZXMgdGhlIEFCSSwgYnV0IHRoZSBBQkkKKyAgICAg ICBoYXMgYmVlbiBrbm93biB0byBiZSBiZW50IGZyb20gdGltZSB0byB0aW1l LikgIC0gS2V2aW4sIE5vdiAyMDAwLiBdCisgICAgICovCisKKyAgaW50ZXJw X3NlY3QgPSBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAoZXhlY19iZmQsICIu aW50ZXJwIik7CisgIGlmIChpbnRlcnBfc2VjdCA9PSBOVUxMIAorICAgICAg JiYgKGJmZF9nZXRfZmlsZV9mbGFncyAoZXhlY19iZmQpICYgRFlOQU1JQykg IT0gMAorICAgICAgJiYgYmZkX2dldF9zdGFydF9hZGRyZXNzIChleGVjX2Jm ZCkgIT0gcGMpCisgICAgeworICAgICAgc3RydWN0IGNsZWFudXAgKm9sZF9j aGFpbjsKKyAgICAgIHN0cnVjdCBzZWN0aW9uX29mZnNldHMgKm5ld19vZmZz ZXRzOworICAgICAgaW50IGksIGNoYW5nZWQ7CisgICAgICBDT1JFX0FERFIg ZGlzcGxhY2VtZW50OworICAgICAgCisgICAgICAvKiBJdCBpcyBuZWNlc3Nh cnkgdG8gcmVsb2NhdGUgdGhlIG9iamZpbGUuICBUaGUgYW1vdW50IHRvCisJ IHJlbG9jYXRlIGJ5IGlzIHNpbXBseSB0aGUgYWRkcmVzcyBhdCB3aGljaCB3 ZSBhcmUgc3RvcHBlZAorCSBtaW51cyB0aGUgc3RhcnRpbmcgYWRkcmVzcyBm cm9tIHRoZSBleGVjdXRhYmxlLgorCisJIFdlIHJlbG9jYXRlIGFsbCBvZiB0 aGUgc2VjdGlvbnMgYnkgdGhlIHNhbWUgYW1vdW50LiAgVGhpcworCSBiZWhh dmlvciBpcyBtYW5kYXRlZCBieSByZWNlbnQgZWRpdGlvbnMgb2YgdGhlIFN5 c3RlbSBWIEFCSS4gCisJIEFjY29yZGluZyB0byB0aGUgU3lzdGVtIFYgQXBw bGljYXRpb24gQmluYXJ5IEludGVyZmFjZSwKKwkgRWRpdGlvbiA0LjEsIHBh Z2UgNS01OgorCisJICAgLi4uICBUaG91Z2ggdGhlIHN5c3RlbSBjaG9vc2Vz IHZpcnR1YWwgYWRkcmVzc2VzIGZvcgorCSAgIGluZGl2aWR1YWwgcHJvY2Vz c2VzLCBpdCBtYWludGFpbnMgdGhlIHNlZ21lbnRzJyByZWxhdGl2ZQorCSAg IHBvc2l0aW9ucy4gIEJlY2F1c2UgcG9zaXRpb24taW5kZXBlbmRlbnQgY29k ZSB1c2VzIHJlbGF0aXZlCisJICAgYWRkcmVzc2VzaW5nIGJldHdlZW4gc2Vn bWVudHMsIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4KKwkgICB2aXJ0dWFsIGFk ZHJlc3NlcyBpbiBtZW1vcnkgbXVzdCBtYXRjaCB0aGUgZGlmZmVyZW5jZQor CSAgIGJldHdlZW4gdmlydHVhbCBhZGRyZXNzZXMgaW4gdGhlIGZpbGUuICBU aGUgZGlmZmVyZW5jZQorCSAgIGJldHdlZW4gdGhlIHZpcnR1YWwgYWRkcmVz cyBvZiBhbnkgc2VnbWVudCBpbiBtZW1vcnkgYW5kCisJICAgdGhlIGNvcnJl c3BvbmRpbmcgdmlydHVhbCBhZGRyZXNzIGluIHRoZSBmaWxlIGlzIHRodXMg YQorCSAgIHNpbmdsZSBjb25zdGFudCB2YWx1ZSBmb3IgYW55IG9uZSBleGVj dXRhYmxlIG9yIHNoYXJlZAorCSAgIG9iamVjdCBpbiBhIGdpdmVuIHByb2Nl c3MuICBUaGlzIGRpZmZlcmVuY2UgaXMgdGhlIGJhc2UKKwkgICBhZGRyZXNz LiAgT25lIHVzZSBvZiB0aGUgYmFzZSBhZGRyZXNzIGlzIHRvIHJlbG9jYXRl IHRoZQorCSAgIG1lbW9yeSBpbWFnZSBvZiB0aGUgcHJvZ3JhbSBkdXJpbmcg ZHluYW1pYyBsaW5raW5nLgorCisJIFRoZSBzYW1lIGxhbmd1YWdlIGFsc28g YXBwZWFycyBpbiBFZGl0aW9uIDQuMCBvZiB0aGUgU3lzdGVtIFYKKwkgQUJJ IGFuZCBpcyBsZWZ0IHVuc3BlY2lmaWVkIGluIHNvbWUgb2YgdGhlIGVhcmxp ZXIgZWRpdGlvbnMuICAqLworCisgICAgICBkaXNwbGFjZW1lbnQgPSBwYyAt IGJmZF9nZXRfc3RhcnRfYWRkcmVzcyAoZXhlY19iZmQpOworICAgICAgY2hh bmdlZCA9IDA7CisKKyAgICAgIG5ld19vZmZzZXRzID0geGNhbGxvYyAoc3lt ZmlsZV9vYmpmaWxlLT5udW1fc2VjdGlvbnMsCisJCQkgICAgIHNpemVvZiAo c3RydWN0IHNlY3Rpb25fb2Zmc2V0cykpOworICAgICAgb2xkX2NoYWluID0g bWFrZV9jbGVhbnVwICh4ZnJlZSwgbmV3X29mZnNldHMpOworCisgICAgICBm b3IgKGkgPSAwOyBpIDwgc3ltZmlsZV9vYmpmaWxlLT5udW1fc2VjdGlvbnM7 IGkrKykKKwl7CisJICBpZiAoZGlzcGxhY2VtZW50ICE9IEFOT0ZGU0VUIChz eW1maWxlX29iamZpbGUtPnNlY3Rpb25fb2Zmc2V0cywgaSkpCisJICAgIGNo YW5nZWQgPSAxOworCSAgbmV3X29mZnNldHMtPm9mZnNldHNbaV0gPSBkaXNw bGFjZW1lbnQ7CisJfQorCisgICAgICBpZiAoY2hhbmdlZCkKKwlvYmpmaWxl X3JlbG9jYXRlIChzeW1maWxlX29iamZpbGUsIG5ld19vZmZzZXRzKTsKKwor ICAgICAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7CisgICAgfQorI2VuZGlm Cit9CisKKy8qCisKKyAgIEdMT0JBTCBGVU5DVElPTgorCisgICBwZWlfc29s aWJfY3JlYXRlX2luZmVyaW9yX2hvb2sgLS0gc2hhcmVkIGxpYnJhcnkgc3Rh cnR1cCBzdXBwb3J0CisKKyAgIFNZTk9QU0lTCisKKyAgIHZvaWQgcGVpX3Nv bGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rKCkKKworICAgREVTQ1JJUFRJT04K KworICAgV2hlbiBnZGIgc3RhcnRzIHVwIHRoZSBpbmZlcmlvciwgaXQgbnVy c2VzIGl0IGFsb25nICh0aHJvdWdoIHRoZQorICAgc2hlbGwpIHVudGlsIGl0 IGlzIHJlYWR5IHRvIGV4ZWN1dGUgaXQncyBmaXJzdCBpbnN0cnVjdGlvbi4g IEF0IHRoaXMKKyAgIHBvaW50LCB0aGlzIGZ1bmN0aW9uIGdldHMgY2FsbGVk IHZpYSBleHBhbnNpb24gb2YgdGhlIG1hY3JvCisgICBTT0xJQl9DUkVBVEVf SU5GRVJJT1JfSE9PSy4KKworICAgVGhpcyBpcyBhdCBfX21haW5DUlRzdGFy dHVwLgorCisgICBXZSBhcnJhbmdlIHRvIGNvb3BlcmF0ZSB3aXRoIHRoZSBk eW5hbWljIGxpbmtlciB0byBkaXNjb3ZlciB0aGUKKyAgIG5hbWVzIG9mIHNo YXJlZCBsaWJyYXJpZXMgdGhhdCBhcmUgZHluYW1pY2FsbHkgbGlua2VkLCBh bmQgdGhlCisgICBiYXNlIGFkZHJlc3NlcyB0byB3aGljaCB0aGV5IGFyZSBs aW5rZWQuCisKKyAqLworCitzdGF0aWMgdm9pZAorcGVpX3NvbGliX2NyZWF0 ZV9pbmZlcmlvcl9ob29rICh2b2lkKQoreworICAvKiBSZWxvY2F0ZSB0aGUg bWFpbiBleGVjdXRhYmxlIGlmIG5lY2Vzc2FyeS4gICovCisgIHBlaV9yZWxv Y2F0ZV9tYWluX2V4ZWN1dGFibGUgKCk7CisKKyAgaWYgKCFlbmFibGVfYnJl YWsgKDApKQorICAgIHsKKyAgICAgIHdhcm5pbmcgKCJzaGFyZWQgbGlicmFy eSBoYW5kbGVyIGZhaWxlZCB0byBlbmFibGUgYnJlYWtwb2ludCIpOworICAg ICAgcmV0dXJuOworICAgIH0KK30KKworLyogVGhpcyB3b3JrcyBiZWNhdXNl IG9mIHRoZSBzaWRlLWVmZmVjdHMgb2Ygc2V0dGluZyBkZWJ1Z19iYXNlIHRv IHplcm8gKi8KK3N0YXRpYyB2b2lkCitwZWlfY2xlYXJfc29saWIgKHZvaWQp Cit7CisgIGRlYnVnX2Jhc2UgPSAwOworfQorCitzdGF0aWMgdm9pZAorcGVp X2ZyZWVfc28gKHN0cnVjdCBzb19saXN0ICpzbykKK3sKKyAgeGZyZWUgKHNv LT5sbV9pbmZvKTsKK30KKworc3RhdGljIHZvaWQKK3BlaV9yZWxvY2F0ZV9z ZWN0aW9uX2FkZHJlc3NlcyAoc3RydWN0IHNvX2xpc3QgKnNvLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNlY3Rpb25fdGFi bGUgKnNlYykKK3sKKyAgLyogU2luY2Ugd2hlbiByZWFkaW5nIHN5bWJvbHMg d2UgcHV0IHRoZSBJbWFnZUJhc2UgaW50byB0aGVtCisgICAgICh3aGljaCBp cyByZXF1aXJlZCBmb3Igc3RhdGljYWxseSBsaW5rZWQgcHJvZ3JhbXMpLCB3 ZSBuZWVkIHRvCisgICAgIGJhY2sgaXQgb3V0IGhlcmUsIHNvIGl0IGRvZXNu J3QgZ2V0IGFkZGVkIHR3aWNlLiAqLworICBzZWMtPmFkZHIgICAgKz0gc28t PmxtX2luZm8tPmxtb2Zmc2V0OworICBzZWMtPmVuZGFkZHIgKz0gc28tPmxt X2luZm8tPmxtb2Zmc2V0OworfQorCitzdGF0aWMgc3RydWN0IHRhcmdldF9z b19vcHMgcGVpX3NvX29wczsKKwordm9pZAorX2luaXRpYWxpemVfcGVpX3Nv bGliICh2b2lkKQoreworICBwZWlfc29fb3BzLnJlbG9jYXRlX3NlY3Rpb25f YWRkcmVzc2VzID0gcGVpX3JlbG9jYXRlX3NlY3Rpb25fYWRkcmVzc2VzOwor ICBwZWlfc29fb3BzLmZyZWVfc28gPSBwZWlfZnJlZV9zbzsKKyAgcGVpX3Nv X29wcy5jbGVhcl9zb2xpYiA9IHBlaV9jbGVhcl9zb2xpYjsKKyAgcGVpX3Nv X29wcy5zb2xpYl9jcmVhdGVfaW5mZXJpb3JfaG9vayA9IHBlaV9zb2xpYl9j cmVhdGVfaW5mZXJpb3JfaG9vazsKKyAgcGVpX3NvX29wcy5zcGVjaWFsX3N5 bWJvbF9oYW5kbGluZyA9IHBlaV9zcGVjaWFsX3N5bWJvbF9oYW5kbGluZzsK KyAgcGVpX3NvX29wcy5jdXJyZW50X3NvcyA9IHBlaV9jdXJyZW50X3NvczsK KyAgcGVpX3NvX29wcy5vcGVuX3N5bWJvbF9maWxlX29iamVjdCA9IG9wZW5f c3ltYm9sX2ZpbGVfb2JqZWN0OworICBwZWlfc29fb3BzLmluX2R5bnN5bV9y ZXNvbHZlX2NvZGUgPSBwZWlfaW5fZHluc3ltX3Jlc29sdmVfY29kZTsKKwor ICAvKiBGSVhNRTogRG9uJ3QgZG8gdGhpcyBoZXJlLiAgKl9nZGJhcmNoX2lu aXQoKSBzaG91bGQgc2V0IHNvX29wcy4gKi8KKyAgY3VycmVudF90YXJnZXRf c29fb3BzID0gJnBlaV9zb19vcHM7Cit9CkluZGV4OiBzcmMvZ2RiL3NvbGli LXBlaS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IHNvbGli LXBlaS5oCmRpZmYgLU4gc29saWItcGVpLmgKQEAgLTAsMCArMSwyOSBAQAor LyogSGFuZGxlIHNoYXJlZCBsaWJyYXJpZXMgZm9yIEdEQiwgdGhlIEdOVSBE ZWJ1Z2dlci4KKyAgIENvcHlyaWdodCAyMDAwCisgICBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KKworICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg R0RCLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisg ICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlCisgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQorICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUg dG8gdGhlIEZyZWUgU29mdHdhcmUKKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5 IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyAgIEJvc3RvbiwgTUEgMDIx MTEtMTMwNywgVVNBLiAgKi8KKworI2luY2x1ZGUgIi4uL2xpYmV4ZWMvbGli ZGwvaW5jbHVkZS9saW5rLmgiIC8vIGluIGxpYmV4ZWMgZm9yIG5vdywgd2hl bmNlPworCisjZGVmaW5lIEVSUk9SX0FERFIgIDB4ZmZmZmZmZmYgICAgICAg ICAgLyogYSBub24temVybyBhZGRyZXNzIHRoYXQncyBhbiBlcnJvciAqLwor CitzdHJ1Y3QgbG1faW5mbyB7CisgICAgQ09SRV9BRERSIGxtb2Zmc2V0OwkJ CS8qIE9mZnNldCBiZXR3ZWVuIEltYWdlIGJhc2UgYW5kIHJlYWwgKi8KK307 CisKSW5kZXg6IHNyYy9nZGIvY29uZmlnL2kzODYvaW50ZXJpeC5tdAo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvZGV2L2ZzL0gvcnVwcC9k ZXZlbC1sb2NhbC1yZXBvc2l0b3J5L3NyYy9nZGIvY29uZmlnL2kzODYvaW50 ZXJpeC5tdCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xCmRpZmYgLXAgLXUg LXIxLjEgaW50ZXJpeC5tdAotLS0gc3JjL2dkYi9jb25maWcvaTM4Ni9pbnRl cml4Lm10CTIwMDEvMTIvMjMgMjA6NDY6MjMJMS4xCisrKyBzcmMvZ2RiL2Nv bmZpZy9pMzg2L2ludGVyaXgubXQJMjAwMS8xMi8yNCAwMjoxODowNApAQCAt MSwzICsxLDMgQEAKICMgVGFyZ2V0OiBJbnRlbCAzODYgcnVubmluZyBJbnRl cml4Ci1UREVQRklMRVM9IGkzODYtdGRlcC5vIGkzODctdGRlcC5vCitUREVQ RklMRVM9IGkzODYtdGRlcC5vIGkzODctdGRlcC5vIHNvbGliLm8gc29saWIt cGVpLm8KIFRNX0ZJTEU9IHRtLWkzODZpbnRlcml4LmgKSW5kZXg6IHNyYy9n ZGIvY29uZmlnL2kzODYvbm0taW50ZXJpeC5oCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KUkNTIGZpbGU6IC9kZXYvZnMvSC9ydXBwL2RldmVsLWxvY2FsLXJl cG9zaXRvcnkvc3JjL2dkYi9jb25maWcvaTM4Ni9ubS1pbnRlcml4Lmgsdgpy ZXRyaWV2aW5nIHJldmlzaW9uIDEuMQpkaWZmIC1wIC11IC1yMS4xIG5tLWlu dGVyaXguaAotLS0gc3JjL2dkYi9jb25maWcvaTM4Ni9ubS1pbnRlcml4LmgJ MjAwMS8xMi8yMyAyMDo0NjoyMwkxLjEKKysrIHNyYy9nZGIvY29uZmlnL2kz ODYvbm0taW50ZXJpeC5oCTIwMDEvMTIvMjQgMDI6MTg6MDQKQEAgLTMwLDYg KzMwLDkgQEAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0g U3VpdAogCiAjZGVmaW5lIEFUVEFDSF9ERVRBQ0gKIAorLyogQmUgc2hhcmVk IGxpYiBhd2FyZSAqLworI2luY2x1ZGUgInNvbGliLmgiCisKIC8qIFRoaXMg aXMgdGhlIGFtb3VudCB0byBzdWJ0cmFjdCBmcm9tIHUudV9hcjAKICAgIHRv IGdldCB0aGUgb2Zmc2V0IGluIHRoZSBjb3JlIGZpbGUgb2YgdGhlIHJlZ2lz dGVyIHZhbHVlcy4gICovCiAKZGlmZiAtZHJ1cFAgLS1leGNsdWRlLWZyb209 L2Rldi9mcy9NL2Rvbm4vZGlmZnMvZXhjbHVkZS5maWxlcyBnZGIuYmVmb3Jl L3NvbGliLmMgZ2RiL3NvbGliLmMKLS0tIGdkYi5iZWZvcmUvc29saWIuYwlU aHUgTWFyICA3IDA5OjE5OjAxIDIwMDIKKysrIGdkYi9zb2xpYi5jCVR1ZSBN YXIgMTIgMTQ6MTE6MTEgMjAwMgpAQCAtMzM2LDggKzMzNiw5IEBAIHN5bWJv bF9hZGRfc3R1YiAoUFRSIGFyZykKICAgICB9CiAKICAgc2FwID0gYnVpbGRf c2VjdGlvbl9hZGRyX2luZm9fZnJvbV9zZWN0aW9uX3RhYmxlIChzby0+c2Vj dGlvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc28tPnNlY3Rpb25zX2VuZCk7Ci0KKwkJCQkJc28t PnNlY3Rpb25zX2VuZCwKKwkJCQkJLU5PTlpFUk9fTElOS19CQVNFKHNvLT5h YmZkKSk7CisKICAgc28tPm9iamZpbGUgPSBzeW1ib2xfZmlsZV9hZGQgKHNv LT5zb19uYW1lLCBzby0+ZnJvbV90dHksCiAJCQkJIHNhcCwgMCwgT0JKRl9T SEFSRUQpOwogICBmcmVlX3NlY3Rpb25fYWRkcl9pbmZvIChzYXApOwpAQCAt MzY5LDExICszNzAsNyBAQCBzeW1ib2xfYWRkX3N0dWIgKFBUUiBhcmcpCiAg ICB3ZSdyZSBkb2luZy4KIAogICAgSWYgVEFSR0VUIGlzIG5vbi1udWxsLCBh ZGQgdGhlIHNlY3Rpb25zIG9mIGFsbCBuZXcgc2hhcmVkIG9iamVjdHMKLSAg IHRvIFRBUkdFVCdzIHNlY3Rpb24gdGFibGUuICBOb3RlIHRoYXQgdGhpcyBk b2Vzbid0IHJlbW92ZSBhbnkKLSAgIHNlY3Rpb25zIGZvciBzaGFyZWQgb2Jq ZWN0cyB0aGF0IGhhdmUgYmVlbiB1bmxvYWRlZCwgYW5kIGl0Ci0gICBkb2Vz bid0IGNoZWNrIHRvIHNlZSBpZiB0aGUgbmV3IHNoYXJlZCBvYmplY3RzIGFy ZSBhbHJlYWR5IHByZXNlbnQgaW4KLSAgIHRoZSBzZWN0aW9uIHRhYmxlLiAg QnV0IHdlIG9ubHkgdXNlIHRoaXMgZm9yIGNvcmUgZmlsZXMgYW5kCi0gICBw cm9jZXNzZXMgd2UndmUganVzdCBhdHRhY2hlZCB0bywgc28gdGhhdCdzIG9r YXkuICAqLworICAgdG8gVEFSR0VUJ3Mgc2VjdGlvbiB0YWJsZS4gKi8KIAog dm9pZAogdXBkYXRlX3NvbGliX2xpc3QgKGludCBmcm9tX3R0eSwgc3RydWN0 IHRhcmdldF9vcHMgKnRhcmdldCkKZGlmZiAtZHJ1cFAgLS1leGNsdWRlLWZy b209L2Rldi9mcy9NL2Rvbm4vZGlmZnMvZXhjbHVkZS5maWxlcyBnZGIuYmVm b3JlL3N5bWZpbGUuYyBnZGIvc3ltZmlsZS5jCi0tLSBnZGIuYmVmb3JlL3N5 bWZpbGUuYwlUaHUgTWFyICA3IDA5OjE5OjAxIDIwMDIKKysrIGdkYi9zeW1m aWxlLmMJVHVlIE1hciAxMiAxNDoxMToxNyAyMDAyCkBAIC00NDMsMTAgKzQ0 MywxMSBAQCBmaW5kX2xvd2VzdF9zZWN0aW9uIChiZmQgKmFiZmQsIGFzZWN0 aW9uCiAvKiBCdWlsZCAoYWxsb2NhdGUgYW5kIHBvcHVsYXRlKSBhIHNlY3Rp b25fYWRkcl9pbmZvIHN0cnVjdCBmcm9tCiAgICBhbiBleGlzdGluZyBzZWN0 aW9uIHRhYmxlLiAqLwogCi1leHRlcm4gc3RydWN0IHNlY3Rpb25fYWRkcl9p bmZvICoKK3N0cnVjdCBzZWN0aW9uX2FkZHJfaW5mbyAqCiBidWlsZF9zZWN0 aW9uX2FkZHJfaW5mb19mcm9tX3NlY3Rpb25fdGFibGUgKGNvbnN0IHN0cnVj dCBzZWN0aW9uX3RhYmxlICpzdGFydCwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHNlY3Rpb25f dGFibGUgKmVuZCkKLXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHNlY3Rpb25fdGFibGUgKmVu ZCwKKwkJCQkJICAgIENPUkVfQUREUiBvZmZzZXQpCit7CiAgIHN0cnVjdCBz ZWN0aW9uX2FkZHJfaW5mbyAqc2FwOwogICBjb25zdCBzdHJ1Y3Qgc2VjdGlv bl90YWJsZSAqc3RwOwogICBpbnQgb2lkeDsKQEAgLTQ2MCw3ICs0NjEsNyBA QCBidWlsZF9zZWN0aW9uX2FkZHJfaW5mb19mcm9tX3NlY3Rpb25fdGFiCiAJ CQkJIHN0cC0+dGhlX2JmZF9zZWN0aW9uKSAmIChTRUNfQUxMT0MgfCBTRUNf TE9BRCkKIAkgICYmIG9pZHggPCBNQVhfU0VDVElPTlMpCiAJewotCSAgc2Fw LT5vdGhlcltvaWR4XS5hZGRyID0gc3RwLT5hZGRyOworCSAgc2FwLT5vdGhl cltvaWR4XS5hZGRyID0gc3RwLT5hZGRyICsgb2Zmc2V0OwogCSAgc2FwLT5v dGhlcltvaWR4XS5uYW1lIAogCSAgICA9IHhzdHJkdXAgKGJmZF9zZWN0aW9u X25hbWUgKHN0cC0+YmZkLCBzdHAtPnRoZV9iZmRfc2VjdGlvbikpOwogCSAg c2FwLT5vdGhlcltvaWR4XS5zZWN0aW5kZXggPSBzdHAtPnRoZV9iZmRfc2Vj dGlvbi0+aW5kZXg7CmRpZmYgLWRydXBQIC0tZXhjbHVkZS1mcm9tPS9kZXYv ZnMvTS9kb25uL2RpZmZzL2V4Y2x1ZGUuZmlsZXMgZ2RiLmJlZm9yZS9zeW1m aWxlLmggZ2RiL3N5bWZpbGUuaAotLS0gZ2RiLmJlZm9yZS9zeW1maWxlLmgJ VGh1IE1hciAgNyAwOToxOTowMSAyMDAyCisrKyBnZGIvc3ltZmlsZS5oCUZy aSBNYXIgIDggMTE6MDU6NDMgMjAwMgpAQCAtMjAwLDkgKzIwMCwxMCBAQCBl eHRlcm4gc3RydWN0IG9iamZpbGUgKnN5bWJvbF9maWxlX2FkZCAoCiAKIHN0 cnVjdCBzZWN0aW9uX3RhYmxlOwogZXh0ZXJuIHN0cnVjdCBzZWN0aW9uX2Fk ZHJfaW5mbyAqCi1idWlsZF9zZWN0aW9uX2FkZHJfaW5mb19mcm9tX3NlY3Rp b25fdGFibGUgKGNvbnN0IHN0cnVjdCBzZWN0aW9uX3RhYmxlICpzdGFydCwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3Qgc3RydWN0IHNlY3Rpb25fdGFibGUgKmVuZCk7Ci0KK2J1aWxkX3Nl Y3Rpb25fYWRkcl9pbmZvX2Zyb21fc2VjdGlvbl90YWJsZSAoY29uc3Qgc3Ry dWN0IHNlY3Rpb25fdGFibGUgKiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHNlY3Rpb25fdGFi bGUgKiwKKwkJCQkJICAgIENPUkVfQUREUik7CisKIC8qIEZyZWUgYWxsIG1l bW9yeSBhbGxvY2F0ZWQgYnkgYnVpbGRfc2VjdGlvbl9hZGRyX2luZm9fZnJv bV9zZWN0aW9uX3RhYmxlLiAqLwogCiBleHRlcm4gdm9pZAotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KUkVFVkFMVUFURSBjb3JlbG93IGNoYW5n ZXMgZm9yIG5lY2Nlc3NpdHk7IGNoYW5nZXMgdG8gaW50ZXJpeC1uYXQgYXJl CmRlZmluaXRlbHkgbmVlZGVkLgoKQ29yZSBmaWxlIHN1cHBvcnQgZm9yIElu dGVyaXggKGFzc3VtZXMgY29ycmVzcG9uZGluZyBCRkQgcGF0Y2hlcwpoYXZl IGJlZW4gYXBwbGllZCkuICBJbiBjb3JlX29wZW4sIHdlIG5lZWQgdG8gZ2V0 IHRvIHRoZSBtYWdpYwpwc3RhdHVzIGluZm8gZm9yIHRoZSB1bndpbmQgc3R1 ZmYuCgpQQVRDSCBCVUc6IHRoZXJlIHNlZW0gdG8gYmUgMiBjb3BpZXMgd2hl cmUgb25seSBvbmUgaXMgbmVlZGVkIQoKSXMgdGhlcmUgYSBiZXR0ZXIgcGxh Y2UgdG8gcHV0IHRoZSBpbmNsdWRlPwoKSXMgdGhpcyBhbGwgY29yZWZpbGUg c3VwcG9ydCBvciBpcyBzb21lIG9mIGl0IHRyYW1wb2xpbmUgZml4ZXM/Pz8K CkZyaSBEZWMgIDMgMTA6MDc6MjAgUFNUIDE5OTkgIERvbm4gVGVycnkgPGRv bm50ZUBtaWNyb3NvZnQuY29tPgoJKiBjb3JlbG93LmM6IGluY2x1ZGUgcHJv Y2ZzLmggZm9yIEludGVyaXguCgkoY29yZV9vcGVuKTogZm9yIEludGVyaXgg b25seSwgZ2V0IHNpZ25hbCB0cmFtcG9saW5lIGFkZHJlc3MsCgl1c2UgY29y ZSB0YWJsZXMgZm9yIGNvcmUgZmlsZSAobm90IGV4ZWMgdGFibGVzOyB0aGUg Zm9ybWF0cwoJbWF5IGJlIGRpZmZlcmVudCkuCgoKSW5kZXg6IHNyYy9nZGIv Y29yZWxvdy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9k ZXYvZnMvSC9ydXBwL2RldmVsLWxvY2FsLXJlcG9zaXRvcnkvc3JjL2dkYi9j b3JlbG93LmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMgpkaWZmIC1wIC11 IC1yMS4yIGNvcmVsb3cuYwotLS0gc3JjL2dkYi9jb3JlbG93LmMJMjAwMS8x Mi8yNCAwMjoxNjoyNgkxLjIKKysrIHNyYy9nZGIvY29yZWxvdy5jCTIwMDEv MTIvMjQgMDI6MjA6MDkKQEAgLTQ0LDYgKzQ0LDExIEBACiAjZGVmaW5lIE9f QklOQVJZIDAKICNlbmRpZgogCisvKiBTZWUgYmVsb3cgKi8KKyNpZmRlZiBf X0lOVEVSSVgKKyNpbmNsdWRlIDxzeXMvcHJvY2ZzLmg+CisjZW5kaWYKKwog LyogTGlzdCBvZiBhbGwgYXZhaWxhYmxlIGNvcmVfZm5zLiAgT24gZ2RiIHN0 YXJ0dXAsIGVhY2ggY29yZSBmaWxlIHJlZ2lzdGVyCiAgICByZWFkZXIgY2Fs bHMgYWRkX2NvcmVfZm5zKCkgdG8gcmVnaXN0ZXIgaW5mb3JtYXRpb24gb24g ZWFjaCBjb3JlIGZvcm1hdCBpdAogICAgaXMgcHJlcGFyZWQgdG8gcmVhZC4g Ki8KQEAgLTMwOSw2ICszMTQsMzYgQEAgY29yZV9vcGVuIChjaGFyICpmaWxl bmFtZSwgaW50IGZyb21fdHR5KQogICBkaXNjYXJkX2NsZWFudXBzIChvbGRf Y2hhaW4pOwkvKiBEb24ndCBmcmVlIGZpbGVuYW1lIGFueSBtb3JlICovCiAg IHVucHVzaF90YXJnZXQgKCZjb3JlX29wcyk7CiAgIGNvcmVfYmZkID0gdGVt cF9iZmQ7CisKKyNpZmRlZiBfX0lOVEVSSVgKKyAgICB7CisgICAgICAgIC8q IFRoaXMgaXMgcGFpbmZ1bCwgYnV0IHRoZXJlIGRvZXNuJ3Qgc2VlbSB0byBi ZSBhIGJldHRlciB3YXkuCisJICAgU2VlIGludGVyaXggdG0uaCwgSU5fU0lH VFJBTVAsIGFuZCBwcm9jZnMuYyBmb3IgbW9yZSBkZXRhaWxzLiAqLworCWFz ZWN0aW9uICpzZWN0aW9uOworCXBzdGF0dXNfdCAqcDsKKworCXNlY3Rpb24g PSBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAoY29yZV9iZmQsICIucHN0YXR1 cyIpOworCWlmIChzZWN0aW9uICE9IE5VTEwpIHsKKwkgICAgcCA9IChwc3Rh dHVzX3QgKilzZWN0aW9uLT5jb250ZW50czsKKworCSAgICBpZiAocCA9PSBO VUxMKSB7CisJCXAgPSAocHN0YXR1c190ICopYmZkX2FsbG9jKGNvcmVfYmZk LCBzZWN0aW9uLT5fcmF3X3NpemUpOworCQliZmRfZ2V0X3NlY3Rpb25fY29u dGVudHMgKGNvcmVfYmZkLCBzZWN0aW9uLCBwLCAwLCAKKwkJICAgIHNlY3Rp b24tPl9yYXdfc2l6ZSk7CisJICAgIH0KKwkgICAgdHJhbXBfc3RhcnQgPSAo Q09SRV9BRERSKXAtPnByX3NpZ25hbGRlbGl2ZXJlcjsKKwkgICAgdHJhbXBf ZW5kID0gKENPUkVfQUREUilwLT5wcl9lbmRzaWduYWxkZWxpdmVyZXI7CisJ ICAgIG51bGxfc3RhcnQgPSAoQ09SRV9BRERSKXAtPnByX251bGxhcGk7CisJ ICAgIG51bGxfZW5kID0gKENPUkVfQUREUilwLT5wcl9lbmRudWxsYXBpOwor ICAgICAgICB9CisJLyogZWxzZSwganVzdCBpZ25vcmUgaXQ7IGl0IHNob3Vs ZG4ndCBldmVyIGhhcHBlbi4gKi8KKworICAgICAgICAvKiBUaGUgc3RhY2sg dW53aW5kIHN0dWZmIG5lZWRzIHRvIGtub3cgdGhpczsgcHJlc3VtYWJseSBp dCdzIGFsd2F5cworCSAgIHRydWUgZm9yIGEgY29yZWZpbGUuICovCisJc3Rv cHBlZF9ieV9yYW5kb21fc2lnbmFsID0gMTsKKyAgICB9CisjZW5kaWYKKwog ICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXAgKGNvcmVfY2xvc2VfY2xlYW51 cCwgMCAvKmlnbm9yZSovKTsKIAogICAvKiBGaW5kIGEgc3VpdGFibGUgY29y ZSBmaWxlIGhhbmRsZXIgdG8gbXVuY2ggb24gY29yZV9iZmQgKi8KQEAgLTMx Nyw3ICszNTIsNyBAQCBjb3JlX29wZW4gKGNoYXIgKmZpbGVuYW1lLCBpbnQg ZnJvbV90dHkpCiAgIHZhbGlkYXRlX2ZpbGVzICgpOwogCiAgIC8qIEZpbmQg dGhlIGRhdGEgc2VjdGlvbiAqLwotICBpZiAoKCpsb29rdXBfc3ltX2Zucyhl eGVjX2JmZCktPnN5bV9idWlsZF9zZWN0X3RhYmxlKQorICBpZiAoKCpsb29r dXBfc3ltX2Zucyhjb3JlX2JmZCktPnN5bV9idWlsZF9zZWN0X3RhYmxlKQog ICAgICAgKGNvcmVfYmZkLCAmY29yZV9vcHMudG9fc2VjdGlvbnMsICZjb3Jl X29wcy50b19zZWN0aW9uc19lbmQpKQogICAgIGVycm9yICgiXCIlc1wiOiBD YW4ndCBmaW5kIHNlY3Rpb25zOiAlcyIsCiAJICAgYmZkX2dldF9maWxlbmFt ZSAoY29yZV9iZmQpLCBiZmRfZXJybXNnIChiZmRfZ2V0X2Vycm9yICgpKSk7 CkBAIC0zNjgsNiArNDAzLDMxIEBAIGNvcmVfb3BlbiAoY2hhciAqZmlsZW5h bWUsIGludCBmcm9tX3R0eSkKIAkJInlvdSB3b24ndCBiZSBhYmxlIHRvIGFj Y2VzcyB0aGlzIGNvcmUgZmlsZSB1bnRpbCB5b3UgdGVybWluYXRlXG5cCiB5 b3VyICVzOyBkbyBgYGluZm8gZmlsZXMnJyIsIHRhcmdldF9sb25nbmFtZSk7 CiAgICAgfQorCisjaWZkZWYgX19JTlRFUklYCisgICAgeworICAgICAgICAv KiBUaGlzIGlzIHBhaW5mdWwsIGJ1dCB0aGVyZSBkb2Vzbid0IHNlZW0gdG8g YmUgYSBiZXR0ZXIgd2F5LgorCSAgIFNlZSBpbnRlcml4IHRtLmgsIElOX1NJ R1RSQU1QLCBhbmQgcHJvY2ZzLmMgZm9yIG1vcmUgZGV0YWlscy4gKi8KKwlh c2VjdGlvbiAqc2VjdGlvbjsKKwlwc3RhdHVzX3QgKnA7CisKKwlzZWN0aW9u ID0gYmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKGNvcmVfYmZkLCAiLnBzdGF0 dXMiKTsKKwlpZiAoc2VjdGlvbiAhPSBOVUxMKSB7CisJICAgIHAgPSAocHN0 YXR1c190ICopc2VjdGlvbi0+Y29udGVudHM7CisKKwkgICAgaWYgKHAgPT0g TlVMTCkgeworCQlwID0gKHBzdGF0dXNfdCAqKWJmZF9hbGxvYyhjb3JlX2Jm ZCwgc2VjdGlvbi0+X3Jhd19zaXplKTsKKwkJYmZkX2dldF9zZWN0aW9uX2Nv bnRlbnRzIChjb3JlX2JmZCwgc2VjdGlvbiwgcCwgMCwgCisJCSAgICBzZWN0 aW9uLT5fcmF3X3NpemUpOworCSAgICB9CisJICAgIHRyYW1wX3N0YXJ0ID0g KENPUkVfQUREUilwLT5wcl9zaWduYWxkZWxpdmVyZXI7CisJICAgIHRyYW1w X2VuZCA9IChDT1JFX0FERFIpcC0+cHJfZW5kc2lnbmFsZGVsaXZlcmVyOwor CSAgICBudWxsX3N0YXJ0ID0gKENPUkVfQUREUilwLT5wcl9udWxsYXBpOwor CSAgICBudWxsX2VuZCA9IChDT1JFX0FERFIpcC0+cHJfZW5kbnVsbGFwaTsK KyAgICAgICAgfQorCS8qIGVsc2UsIGp1c3QgaWdub3JlIGl0OyBpdCBzaG91 bGRuJ3QgZXZlciBoYXBwZW4uICovCisgICAgfQorI2VuZGlmCiB9CiAKIHN0 YXRpYyB2b2lkCmRpZmYgLWRydXBQIC0tZXhjbHVkZS1mcm9tPS9NL2Rvbm4v ZGlmZnMvZXhjbHVkZS5maWxlcyBnZGIuc2F2ZWQvaTM4NmludGVyaXgtbmF0 LmMgZ2RiL2kzODZpbnRlcml4LW5hdC5jCi0tLSBnZGIuc2F2ZWQvaTM4Nmlu dGVyaXgtbmF0LmMJVHVlIE1hciAgNSAxNDo1NjoxMyAyMDAyCisrKyBnZGIv aTM4NmludGVyaXgtbmF0LmMJV2VkIE1hciAgNiAxOToyNTozMiAyMDAyCkBA IC0yOCw3ICsyOCwxMCBAQCBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUg UGxhY2UgLSBTdWl0CiAjaW5jbHVkZSAic3ltZmlsZS5oIgogI2luY2x1ZGUg Im9iamZpbGVzLmgiCiAjaW5jbHVkZSAiZ2RiLXN0YWJzLmgiCi0KKyNpbmNs dWRlICJnZGJjb3JlLmgiCisjaW5jbHVkZSAiZ3JlZ3NldC5oIgorCisKIHR5 cGVkZWYgdW5zaWduZWQgbG9uZyBncmVnX3Q7ICAvKiBXaGVyZSBzaG91bGQg dGhpcyBiZSBkZWZpbmVkPyAqLwogCiAvKiBTZWUgcHJvY2ZzLmMgYW5kICpp bnRlcml4Ki5oIGluIGNvbmZpZy9bYWxwaGEsaTM4Nl0gKi8KQEAgLTIxNCw3 ICsyMTYsNjQgQEAgZmlsbF9mcHJlZ3NldCAoZnByZWdzZXRfdCAqZnByZWdz ZXRwLAogICBjb252ZXJ0X3RvX2ZwcmVnc2V0IChmcHJlZ3NldHAsIHJlZ2lz dGVycywgMCk7CiB9CiAKLQorLyoKKworICAgR0xPQkFMIEZVTkNUSU9OCisK KyAgIGZldGNoX2NvcmVfcmVnaXN0ZXJzIC0tIGZldGNoIGN1cnJlbnQgcmVn aXN0ZXJzIGZyb20gY29yZSBmaWxlCisKKyAgIFNZTk9QU0lTCisKKyAgIHZv aWQgZmV0Y2hfY29yZV9yZWdpc3RlcnMgKGNoYXIgKmNvcmVfcmVnX3NlY3Qs CisgICB1bnNpZ25lZCBjb3JlX3JlZ19zaXplLAorICAgaW50IHdoaWNoLCBD T1JFX0FERFIgcmVnX2FkZHIpCisKKyAgIERFU0NSSVBUSU9OCisKKyAgIFJl YWQgdGhlIHZhbHVlcyBvZiBlaXRoZXIgdGhlIGdlbmVyYWwgcmVnaXN0ZXIg c2V0IChXSElDSCBlcXVhbHMgMCkKKyAgIG9yIHRoZSBmbG9hdGluZyBwb2lu dCByZWdpc3RlciBzZXQgKFdISUNIIGVxdWFscyAyKSBmcm9tIHRoZSBjb3Jl CisgICBmaWxlIGRhdGEgKHBvaW50ZWQgdG8gYnkgQ09SRV9SRUdfU0VDVCks IGFuZCB1cGRhdGUgZ2RiJ3MgaWRlYSBvZgorICAgdGhlaXIgY3VycmVudCB2 YWx1ZXMuICBUaGUgQ09SRV9SRUdfU0laRSBwYXJhbWV0ZXIgaXMgY29tcGFy ZWQgdG8KKyAgIHRoZSBzaXplIG9mIHRoZSBncmVnc2V0IG9yIGZwZ3JlZ3Nl dCBzdHJ1Y3R1cmVzIChhcyBhcHByb3ByaWF0ZSkgdG8KKyAgIHZhbGlkYXRl IHRoZSBzaXplIG9mIHRoZSBzdHJ1Y3R1cmUgZnJvbSB0aGUgY29yZSBmaWxl LiAgVGhlCisgICBSRUdfQUREUiBwYXJhbWV0ZXIgaXMgaWdub3JlZC4KKwor ICovCisKK3N0YXRpYyB2b2lkCitmZXRjaF9jb3JlX3JlZ2lzdGVycyAoY2hh ciAqY29yZV9yZWdfc2VjdCwgdW5zaWduZWQgY29yZV9yZWdfc2l6ZSwgaW50 IHdoaWNoLAorCQkgICAgICBDT1JFX0FERFIgcmVnX2FkZHIpCit7CisgIGdk Yl9ncmVnc2V0X3QgZ3JlZ3NldDsKKyAgZ2RiX2ZwcmVnc2V0X3QgZnByZWdz ZXQ7CisKKyAgaWYgKHdoaWNoID09IDApCisgICAgeworICAgICAgaWYgKGNv cmVfcmVnX3NpemUgIT0gc2l6ZW9mIChncmVnc2V0KSkKKwl7CisJICB3YXJu aW5nICgid3Jvbmcgc2l6ZSBncmVnc2V0IHN0cnVjdCBpbiBjb3JlIGZpbGUi KTsKKwl9CisgICAgICBlbHNlCisJeworCSAgbWVtY3B5ICgoY2hhciAqKSAm Z3JlZ3NldCwgY29yZV9yZWdfc2VjdCwgc2l6ZW9mIChncmVnc2V0KSk7CisJ ICBzdXBwbHlfZ3JlZ3NldCAoJmdyZWdzZXQpOworCX0KKyAgICB9CisgIGVs c2UgaWYgKHdoaWNoID09IDIpCisgICAgeworICAgICAgaWYgKGNvcmVfcmVn X3NpemUgIT0gc2l6ZW9mIChmcHJlZ3NldCkpCisJeworCSAgd2FybmluZyAo Indyb25nIHNpemUgZnByZWdzZXQgc3RydWN0IGluIGNvcmUgZmlsZSIpOwor CX0KKyAgICAgIGVsc2UKKwl7CisJICBtZW1jcHkgKChjaGFyICopICZmcHJl Z3NldCwgY29yZV9yZWdfc2VjdCwgc2l6ZW9mIChmcHJlZ3NldCkpOworCSAg aWYgKEZQMF9SRUdOVU0gPj0gMCkKKwkgICAgc3VwcGx5X2ZwcmVnc2V0ICgm ZnByZWdzZXQpOworCX0KKyAgICB9Cit9CisKIC8qIHRoZSBuYW1lIG9mIHRo ZSBwcm9jIHN0YXR1cyBzdHJ1Y3QgZGVwZW5kcyBvbiB0aGUgaW1wbGVtZW50 YXRpb24gKi8KICNpZmRlZiBIQVZFX1BTVEFUVVNfVAogICB0eXBlZGVmIHBz dGF0dXNfdCBnZGJfcHJzdGF0dXNfdDsKQEAgLTQxMCw0ICs0NjksMTkgQEAg Z2V0X2xvbmdqbXBfdGFyZ2V0IChwYykKIAogICAqcGMgPSBleHRyYWN0X2Fk ZHJlc3MgKHJhd19idWZmZXIsIHNpemVvZihDT1JFX0FERFIpKTsKICAgcmV0 dXJuIDE7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgY29yZV9mbnMgaW50ZXJpeF9j b3JlX2ZucyA9Cit7CisgIGJmZF90YXJnZXRfY29mZl9mbGF2b3VyLAkJLyog Y29yZV9mbGF2b3VyICAobW9yZSBvciBsZXNzKSAqLworICBkZWZhdWx0X2No ZWNrX2Zvcm1hdCwJCQkvKiBjaGVja19mb3JtYXQgKi8KKyAgZGVmYXVsdF9j b3JlX3NuaWZmZXIsCQkJLyogY29yZV9zbmlmZmVyICovCisgIGZldGNoX2Nv cmVfcmVnaXN0ZXJzLAkJICAgICAgICAvKiBjb3JlX3JlYWRfcmVnaXN0ZXJz ICovCisgIE5VTEwJCQkJCS8qIG5leHQgKi8KK307CisKK3ZvaWQKK19pbml0 aWFsaXplX2NvcmVfaW50ZXJpeCAodm9pZCkKK3sKKyAgYWRkX2NvcmVfZm5z ICgmaW50ZXJpeF9jb3JlX2Zucyk7CiB9Ci0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQpOb3RlIHRoZSBpZiAoMCAmJi4uLiAgdGhlcmUgd2FzIGEg cmVhc29uIGZvciB0aGlzLCBidXQgSSBjYW4ndCByZW1lbWJlcgppdCwgYW5k IGl0IGJyZWFrcyBzZXR0aW5nIGJyZWFrcG9pbnRzIG9uIHNoYXJlZCBsaWIg ZW50cnkgcG9pbnRzOyBwcm9iYWJseQp0aGUgdGVzdCBpcyB0b28gd2VhayB0 byBmaWx0ZXIgdGhlIGV4YWN0IHJlYXNvbiBmb3IgdGhlIHByb2JsZW0sIHdo YXRldmVyCml0IHdhcy4KClRoaXMgcHJvYmFibHkgc2hvdWxkIGJlIGFwcGxp ZWQgYmVmb3JlIGR5bnN5bXMsIGJ1dCB0aGUgcGF0Y2hlcyBjb2xsaWRlCmF0 IG9uZSBwb2ludCwgc28gZm9yIG5vdy4uLgoKTlQgd2VhayBzeW1ib2xzIGFy ZSByZWFsbHkgYW4gYWxpYXM7IGxkIGhhbmRsZXMgdGhvc2UgcHJvcGVybHkg YnV0CmdkYiBtdXN0IGFsc28gZGVhbCB3aXRoIHRoZW0uCgpKdXN0IGtlZXAg YSBsaXN0IG9mIHRoZSBzeW1ib2xzIHNvIHdlIGNhbiBsb29rIHVwIHRoZSBk aXJlY3Qgc3ltYm9sCmFuZCBsb2FkIGl0IGludG8gdGhlIGluZGlyZWN0IG9u ZS4KClJFQ0hFQ0sgVEhJUy4uLgpXZWFrIHN5bWJvbHMgcmVwb3J0IGFzIHQs IG5vdCBULCBjb25mdXNpbmcgdGhlIHRlc3RzLiAgQWxsb3cgZWl0aGVyLgoo T3IgaXMgdGhhdCBzdGF0aWM/KQoKZGlmZiAtZHJ1cFAgLS1leGNsdWRlLWZy b209L00vZG9ubi9kaWZmcy9leGNsdWRlLmZpbGVzIGdkYi5iZWZvcmUvY29m ZnJlYWQuYyBnZGIvY29mZnJlYWQuYwotLS0gZ2RiLmJlZm9yZS9jb2ZmcmVh ZC5jCVN1biBNYXIgIDMgMTA6MzE6NTEgMjAwMgorKysgZ2RiL2NvZmZyZWFk LmMJTW9uIE1hciAgNCAxOTo0MTozNiAyMDAyCkBAIC00ODksMTggKzQ4OSwx OSBAQCBjb2ZmX2VuZF9zeW10YWIgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl CiAgIGxhc3Rfc291cmNlX2ZpbGUgPSBOVUxMOwogfQogDAotc3RhdGljIHZv aWQKK3N0YXRpYyBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKgogcmVjb3JkX21p bmltYWxfc3ltYm9sIChjaGFyICpuYW1lLCBDT1JFX0FERFIgYWRkcmVzcywK IAkJICAgICAgIGVudW0gbWluaW1hbF9zeW1ib2xfdHlwZSB0eXBlLCBzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKIAkJICAgICAgIGFzZWN0aW9uICpiZmRf c2VjdGlvbikKIHsKICAgLyogV2UgZG9uJ3Qgd2FudCBUREVTQyBlbnRyeSBw b2ludHMgaW4gdGhlIG1pbmltYWwgc3ltYm9sIHRhYmxlICovCiAgIGlmIChu YW1lWzBdID09ICdAJykKLSAgICByZXR1cm47Ci0KLSAgcHJpbV9yZWNvcmRf bWluaW1hbF9zeW1ib2wgKG5hbWUsIGFkZHJlc3MsIHR5cGUsIG9iamZpbGUs IGJmZF9zZWN0aW9uKTsKLX0KLQwKKyAgICByZXR1cm4gTlVMTDsKKworICBy ZXR1cm4gcHJpbV9yZWNvcmRfbWluaW1hbF9zeW1ib2wgKG5hbWUsIGFkZHJl c3MsIHR5cGUsCisJCQkJICAgICBvYmpmaWxlLCBiZmRfc2VjdGlvbik7Cit9 CisMCiAvKiBjb2ZmX3N5bWZpbGVfaW5pdCAoKQogICAgaXMgdGhlIGNvZmYt c3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gcm91dGluZSBmb3IgcmVhZGluZyBz eW1ib2xzLgogICAgSXQgaXMgcGFzc2VkIGEgc3RydWN0IG9iamZpbGUgd2hp Y2ggY29udGFpbnMsIGFtb25nIG90aGVyIHRoaW5ncywKQEAgLTc2Myw3ICs3 ODUsOSBAQCBjb2ZmX3N5bXRhYl9yZWFkIChsb25nIHN5bXRhYl9vZmZzZXQs IHVuCiAgIGxvbmcgZmNuX2xpbmVfcHRyID0gMDsKICAgaW50IHZhbDsKICAg Q09SRV9BRERSIHRtcGFkZHI7Ci0KKyAgc3RydWN0IG1pbmltYWxfc3ltYm9s ICoqbXN5bXM7ICAgLyogQSB0ZW1wb3JhcnkgYXJyYXkgb2YgdGhlIHJlc3Vs dHMsCisJCQkJICAgICAgIHNlZSBDX05UX1dFQUsuICovCisKICAgLyogT24g dGhlIHVzZSBvZiB0aGUgZm9sbG93aW5nIHN5bWJvbHM6ICBFYXJsaWVyIHZl cnNpb25zIG9mIHRoaXMgcm91dGluZQogICAgICB0cmllZCB0byBrZXkgb2Zm IC50ZXh0IGVudHJpZXMgdG8gZGV0ZXJtaW5lIHRoZSBzaXplIG9mIGEgImZp bGUiCiAgICAgIChhbiBvcmlnaW5hbCBzb3VyY2UgZmlsZSkuICBUaGlzIGlt cGxpZWQgdGhhdCB0aGVyZSB3ZXJlIGFzIG1hbnkKQEAgLTgzNiw2ICs4NjAs OSBAQCBjb2ZmX3N5bXRhYl9yZWFkIChsb25nIHN5bXRhYl9vZmZzZXQsIHVu CiAgIGZpcnN0X2Z1bmN0aW9uX2xhc3RfZmlsZSA9IEFOT0ZGU0VUIChvYmpm aWxlLT5zZWN0aW9uX29mZnNldHMsIFNFQ1RfT0ZGX1RFWFQob2JqZmlsZSkp OwogCiAgIHN5bW51bSA9IDA7CisgIG1zeW1zID0geG1hbGxvYyAoc2l6ZW9m KHN0cnVjdCBtc3ltYm9sICopICogbnN5bXMpOworICBtZW1zZXQobXN5bXMs IDAsIHNpemVvZihzdHJ1Y3QgbXN5bWJvbCAqKSAqIG5zeW1zKTsKKwogICB3 aGlsZSAoc3ltbnVtIDwgbnN5bXMpCiAgICAgewogICAgICAgUVVJVDsJCQkv KiBNYWtlIHRoaXMgY29tbWFuZCBpbnRlcnJ1cHRhYmxlLiAgKi8KQEAgLTg3 MCwxMiArODk3LDEzIEBAIGNvZmZfc3ltdGFiX3JlYWQgKGxvbmcgc3ltdGFi X29mZnNldCwgdW4KICAgICAgIC8qIFR5cGVkZWZzIHNob3VsZCBub3QgYmUg dHJlYXRlZCBhcyBzeW1ib2wgZGVmaW5pdGlvbnMuICAqLwogICAgICAgaWYg KElTRkNOIChjcy0+Y190eXBlKSAmJiBjcy0+Y19zY2xhc3MgIT0gQ19UUERF RikKIAl7Ci0KKwkgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbXN5bTsKKwog CSAgaWYgKGZpcnN0X2Z1bmN0aW9uX3RoaXNfZmlsZSA9PSAwKQogCSAgICAg Zmlyc3RfZnVuY3Rpb25fdGhpc19maWxlID0gY3MtPmNfdmFsdWU7CiAJICBl bHNlIAogCSAgICB7Ci0JICAgICAgLyogbW9zdF9yZWNlbnRfZnVuY3Rpb24g X25kIHNob3VsZCBiZSBBVCBMRUFTVCB0aGUgYmVnaW5uaW5nCisJICAgICAg LyogbW9zdF9yZWNlbnRfZnVuY3Rpb25fZW5kIHNob3VsZCBiZSBBVCBMRUFT VCB0aGUgYmVnaW5uaW5nCiAJCSBvZiB0aGUgY3VycmVudCBmdW5jdGlvbiBp ZiB3ZSdyZSBvbiBvdGhlciB0aGFuIHRoZSBmaXJzdAogCQkgZnVuY3Rpb24g aW4gdGhlIGZpbGUuICBXZSdsbCB0cnkgdG8gZG8gYmV0dGVyIGJlbG93LiAq LwogCSAgICAgbW9zdF9yZWNlbnRfZnVuY3Rpb25fZW5kID0gY3MtPmNfdmFs dWU7CkBAIC04ODcsMTAgKzkxNSwxMSBAQCBjb2ZmX3N5bXRhYl9yZWFkIChs b25nIHN5bXRhYl9vZmZzZXQsIHVuCiAJICAgICBmdW5jdGlvbnMgKHVzdWFs bHkpIHNvIHRoYXQgdGhlIHNwZWNpYWwgaGFuZGxpbmcgb2YgdGhlbQogCSAg ICAgd29ya3MgY29ycmVjdGx5LiAgQXQgdGhpcyBwb2ludCwgZHluYW1pYyA9 PSB1bmRlZmluZWQ7CiAJICAgICBpZiBpdCdzIHJlYWxseSB1bmRlZmluZWQs IHdlIGRlYWwgd2l0aCB0aGF0IGxhdGVyLiAqLwotIAkgIHJlY29yZF9taW5p bWFsX3N5bWJvbCAoY3MtPmNfbmFtZSwgdG1wYWRkciwgCisgCSAgbXN5bSA9 IHJlY29yZF9taW5pbWFsX3N5bWJvbCAoY3MtPmNfbmFtZSwgdG1wYWRkciwg CiAJICAgICBjcy0+Y19zZWNudW0gPT0gMCA/IG1zdF9zb2xpYl90cmFtcG9s aW5lIDogbXN0X3RleHQsIG9iamZpbGUsCiAgIAkgICAgIGNvZmZfc2VjdGlv bl9mcm9tX2JmZF9pbmRleChvYmpmaWxlLT5vYmZkLCBjcy0+Y19zZWNudW0p KTsKLQorCSAgbXN5bXNbY3MtPmNfc3ltbnVtXSA9IG1zeW07CisKIAkgIGlm IChjcy0+Y19uYXV4ID4gMCkgCiAJICAgIHsKIAkgICAgICBmY25fbGluZV9w dHIgPSBtYWluX2F1eC54X3N5bS54X2ZjbmFyeS54X2Zjbi54X2xubm9wdHI7 CkBAIC0xMDQ4LDYgKzEwNzcsNyBAQCBjb2ZmX3N5bXRhYl9yZWFkIChsb25n IHN5bXRhYl9vZmZzZXQsIHVuCiAJCWlmICh0YXJnZXRfbG9va3VwX3N5bWJv bCAoY3MtPmNfbmFtZSwgJnJlbGFkZHIpKQogCQkgIHsKIAkJICAgIC8qIEVy cm9yIGluIGxvb2t1cDsgaWdub3JlIHN5bWJvbC4gICovCisgICAgICAgICAg ICAgICAgICAgIG1zeW1zW2NzLT5jX3N5bW51bV0gPSAoc3RydWN0IG1pbmlt YWxfc3ltYm9sICopLTE7CiAJCSAgICBicmVhazsKIAkJICB9CiAJCXRtcGFk ZHIgPSByZWxhZGRyOwpAQCAtMTExNiw2ICsxMTQ2LDcgQEAgY29mZl9zeW10 YWJfcmVhZCAobG9uZyBzeW10YWJfb2Zmc2V0LCB1bgogCQkgKGNzLT5jX25h bWUsIHRtcGFkZHIsIG1zX3R5cGUsICh2b2lkICopIChsb25nKSBjcy0+Y19z Y2xhc3MsCiAJICAgICAgICAgc2VjLCBjb2ZmX3NlY3Rpb25fZnJvbV9iZmRf aW5kZXggKG9iamZpbGUtPm9iZmQsIGNzLT5jX3NlY251bSksCiAJICAgICAg ICAgb2JqZmlsZSk7CisJCW1zeW1zW2NzLT5jX3N5bW51bV0gPSBtc3ltOwog CQlpZiAobXN5bSkKIAkJICBDT0ZGX01BS0VfTVNZTUJPTF9TUEVDSUFMIChj cy0+Y19zY2xhc3MsIG1zeW0pOwogCSAgICAgIH0KQEAgLTEyNTYsMTIgKzEy ODcsNTIgQEAgY29mZl9zeW10YWJfcmVhZCAobG9uZyBzeW10YWJfb2Zmc2V0 LCB1bgogCSAgICB9CiAJICBicmVhazsKIAorCWNhc2UgQ19OVF9XRUFLOgor CSAgeworCSAgICAvKiBOVCBXZWFrcyBhcmUgcmVhbGx5IGluZGlyZWN0IHN5 bWJvbHM7IGF1eCBjb250YWlucyB0aGUgdGFyZ2V0LiAqLworCSAgICBpbnQg cmVhbHN5bTsKKwkgICAgc3RydWN0IG1pbmltYWxfc3ltYm9sICptc3ltOwor CisJICAgIHJlYWxzeW0gPSBtYWluX2F1eC54X3N5bS54X3RhZ25keC5sOwor CSAgICBpZiAoMCAmJiBjcy0+Y19zZWNudW0gPT0gMCkgIC8vIGJyZWFrcyBi IHByaW50ZjsgYWJzZW5jZSBicmVha3MgPworCSAgICAgIHsKKwkJIC8qIG5v dGhpbmc7IGlnbm9yZSBpdCAoaXQncyBhbiB1bmRlZmluZWQgd2VhazsgdGhl IGRlZmluaXRpb24KKwkJICAgIHdpbGwgdGFrZSBjYXJlIG9mIHRoaW5ncyBs YXRlci4pICovCisJICAgICAgfQorCSAgICBlbHNlIGlmIChyZWFsc3ltIDwg MCB8fCByZWFsc3ltID49IG5zeW1zIHx8IG1zeW1zW3JlYWxzeW1dID09IE5V TEwpCisJICAgICAgeworCQl3YXJuaW5nICgiXCIlc1wiOiBpbmRpcmVjdCBz eW1ib2wgZG9lcyBub3QgaGF2ZSByZWFsIG9uZSAoJWQpXG4iLCAKKwkJICBj cy0+Y19uYW1lLCByZWFsc3ltKTsKKwkgICAgICB9CisJICAgIGVsc2UgaWYg KG1zeW1zW3JlYWxzeW1dID09IChzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKikt MSkKKwkgICAgICB7CisJCS8qIG5vdGhpbmc7IGp1c3QgaWdub3JlIGl0LiAo V2UgZGlzY2FyZGVkIHRoZSB1bmRlZmluZWQKKwkJICAgcmVhbCBzeW1ib2ws IHNvIGRvIHRoZSBzYW1lIHdpdGggdGhpcy4pICovCisJICAgICAgfQorCSAg ICBlbHNlCisJICAgICAgeworCQltc3ltID0gcHJpbV9yZWNvcmRfbWluaW1h bF9zeW1ib2xfYW5kX2luZm8KKwkJICAoY3MtPmNfbmFtZSwgCisJCSAgU1lN Qk9MX1ZBTFVFX0FERFJFU1MobXN5bXNbcmVhbHN5bV0pLAorCQkgIE1TWU1C T0xfVFlQRSAobXN5bXNbcmVhbHN5bV0pLAorCQkgIE1TWU1CT0xfSU5GTyAo bXN5bXNbcmVhbHN5bV0pLCAgLyogY19zY2xhc3MgZm9yIHVzLiAqLworCQkg IFNZTUJPTF9TRUNUSU9OIChtc3ltc1tyZWFsc3ltXSksCisJCSAgU1lNQk9M X0JGRF9TRUNUSU9OIChtc3ltc1tyZWFsc3ltXSksCisJCSAgb2JqZmlsZSk7 CisJCW1zeW1zW2NzLT5jX3N5bW51bV0gPSBtc3ltOworCSAgICAgIH0KKwkg ICAgYnJlYWs7CisJICB9CisKIAlkZWZhdWx0OgogCSAgcHJvY2Vzc19jb2Zm X3N5bWJvbCAoY3MsICZtYWluX2F1eCwgb2JqZmlsZSk7CiAJICBicmVhazsK IAl9CiAgICAgfQogCisgICAgLyogQWxsIHdlIG5lZWRlZCB0aGVzZSBmb3Ig d2FzIGEgbG9va3VwLCB3ZSdyZSBkb25lIG5vdy4gKi8KKyAgICB4ZnJlZSAo bXN5bXMpOworCiAgICAgaWYgKGZpcnN0X2Z1bmN0aW9uX3RoaXNfZmlsZSAh PSAwKQogCSAgY29tcGxldGVfc3ltdGFiIChmaWxlc3RyaW5nLAogCSAgICAg Zmlyc3RfZnVuY3Rpb25fdGhpc19maWxlCmRpZmYgLWRydXBQIC0tZXhjbHVk ZS1mcm9tPS9kZXYvZnMvTS9kb25uL2RpZmZzL2V4Y2x1ZGUuZmlsZXMgZ2Ri LnNhdmVkL21pbnN5bXMuYyBnZGIvbWluc3ltcy5jCi0tLSBnZGIuc2F2ZWQv bWluc3ltcy5jCVRodSBNYXIgMTQgMTA6MzM6MDggMjAwMgorKysgZ2RiL21p bnN5bXMuYwlUaHUgTWFyIDE0IDE3OjQ3OjIyIDIwMDIKQEAgLTU5Myw3ICs1 OTMsNyBAQCBpbml0X21pbmltYWxfc3ltYm9sX2NvbGxlY3Rpb24gKHZvaWQp CiAgIG1zeW1fYnVuY2hfaW5kZXggPSBCVU5DSF9TSVpFOwogfQogCi12b2lk CitzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKgogcHJpbV9yZWNvcmRfbWluaW1h bF9zeW1ib2wgKGNvbnN0IGNoYXIgKm5hbWUsIENPUkVfQUREUiBhZGRyZXNz LAogCQkJICAgIGVudW0gbWluaW1hbF9zeW1ib2xfdHlwZSBtc190eXBlLAog CQkJICAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBhc2VjdGlvbiAqYmZk X3NlY3Rpb24pCkBAIC02MTksNyArNjE5LDcgQEAgcHJpbV9yZWNvcmRfbWlu aW1hbF9zeW1ib2wgKGNvbnN0IGNoYXIgKgogICAgICAgc2VjdGlvbiA9IC0x OwogICAgIH0KIAotICBwcmltX3JlY29yZF9taW5pbWFsX3N5bWJvbF9hbmRf aW5mbyAobmFtZSwgYWRkcmVzcywgbXNfdHlwZSwKKyAgcmV0dXJuIHByaW1f cmVjb3JkX21pbmltYWxfc3ltYm9sX2FuZF9pbmZvIChuYW1lLCBhZGRyZXNz LCBtc190eXBlLAogCQkJCSAgICAgICBOVUxMLCBzZWN0aW9uLCBiZmRfc2Vj dGlvbiwgb2JqZmlsZSk7CiB9CiAKZGlmZiAtZHJ1cFAgLS1leGNsdWRlLWZy b209L2Rldi9mcy9NL2Rvbm4vZGlmZnMvZXhjbHVkZS5maWxlcyBnZGIuc2F2 ZWQvc3ltdGFiLmggZ2RiL3N5bXRhYi5oCi0tLSBnZGIuc2F2ZWQvc3ltdGFi LmgJVGh1IE1hciAxNCAxMDozMzoxMCAyMDAyCisrKyBnZGIvc3ltdGFiLmgJ VGh1IE1hciAxNCAxNzo0ODoyNiAyMDAyCkBAIC0xMTg3LDcgKzExODcsOSBA QCBleHRlcm4gc3RydWN0IHR5cGUgKmxvb2t1cF90cmFuc3BhcmVudF90CiAv KiBGdW5jdGlvbnMgZm9yIGRlYWxpbmcgd2l0aCB0aGUgbWluaW1hbCBzeW1i b2wgdGFibGUsIHJlYWxseSBhIG1pc2MKICAgIGFkZHJlc3M8LT5zeW1ib2wg bWFwcGluZyBmb3IgdGhpbmdzIHdlIGRvbid0IGhhdmUgZGVidWcgc3ltYm9s cyBmb3IuICAqLwogCi1leHRlcm4gdm9pZCBwcmltX3JlY29yZF9taW5pbWFs X3N5bWJvbCAoY29uc3QgY2hhciAqLCBDT1JFX0FERFIsCitleHRlcm4gc3Ry dWN0IG1pbmltYWxfc3ltYm9sICogcHJpbV9yZWNvcmRfbWluaW1hbF9zeW1i b2wgKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IGNoYXIgKiwgCisJCQkJCUNPUkVfQUREUiwKIAkJCQkJZW51bSBt aW5pbWFsX3N5bWJvbF90eXBlLAogCQkJCQlzdHJ1Y3Qgb2JqZmlsZSAqLAog CQkJCQlhc2VjdGlvbiAqKTsKZGlmZiAtZHJ1cFAgLS1leGNsdWRlLWZyb209 L00vZG9ubi9kaWZmcy9leGNsdWRlLmZpbGVzIGdkYi5zYXZlZC90ZXN0c3Vp dGUvZ2RiLmJhc2UvbWFpbnQuZXhwIGdkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv bWFpbnQuZXhwCi0tLSBnZGIuc2F2ZWQvdGVzdHN1aXRlL2dkYi5iYXNlL21h aW50LmV4cAlUdWUgTWFyICA1IDE0OjU2OjA3IDIwMDIKKysrIGdkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvbWFpbnQuZXhwCVR1ZSBNYXIgIDUgMjI6MzM6MTYg MjAwMgpAQCAtMjg0LDcgKzI4NCw3IEBAIGdkYl9leHBlY3QgIHsKICAgICAg ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgc2VuZF9nZGIgInNo ZWxsIGdyZXAgZmFjdG9yaWFsIG1zeW1ib2xzX291dHB1dFxuIgogICAgICAg ICAgICAgICAgICAgZ2RiX2V4cGVjdCB7Ci0gICAgICAgICAgICAgICAgICAg ICAgICAtcmUgIlxcXFsgKiRkZWNpbWFsXFxcXSBUXFsgXHRcXSskaGV4IGZh Y3RvcmlhbC4qJGdkYl9wcm9tcHQgJCJcCisgICAgICAgICAgICAgICAgICAg ICAgICAtcmUgIlxcXFsgKiRkZWNpbWFsXFxcXSBcW1R0XF1cWyBcdFxdKyRo ZXggZmFjdG9yaWFsLiokZ2RiX3Byb21wdCAkIlwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBwYXNzICJtYWlu dCBwcmludCBtc3ltYm9scyIgfQogICAgICAgICAgICAgICAgICAgICAgICAg LXJlICIuKiRnZGJfcHJvbXB0ICQiICAgICAgIHsgZmFpbCAibWFpbnQgcHJp bnQgbXN5bWJvbHMiIH0KICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1l b3V0ICAgICAgICAgeyBmYWlsICIodGltZW91dCkgbWFpbnQgcHJpbnQgbXN5 bWJvbHMiIH0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCldoZW4g aW5mZXJyaW5nIHdoZXJlIGZpbGUgYnJlYWtzIG9jY3VyLCBkb24ndCBjb25z aWRlciAuc28gdGh1bmsgc3ltYm9scy4KClRoaXMgc2hvdWxkIGJlIG1lcmdl ZCB3aXRoIHRoZSBiYXNlIHNoYXJlZCBsaWIgc3R1ZmYgYXQgc29tZSBwb2lu dC4KClRoZSBidWxrIG9mIHRoaXMgY2hhbmdlIGlzIGFuIGluZGVudGF0aW9u IGNoYW5nZS4gIE5ldyBsaW5lcyBhcmUganVzdCBhbgppZiBhbmQgaXRzIHt9 LgoKZGlmZiAtZHJ1cFAgLS1leGNsdWRlLWZyb209L00vZG9ubi9kaWZmcy9l eGNsdWRlLmZpbGVzIGdkYi5zYXZlZC9jb2ZmcmVhZC5jIGdkYi9jb2ZmcmVh ZC5jCi0tLSBnZGIuc2F2ZWQvY29mZnJlYWQuYwlUdWUgTWFyICA1IDE0OjU2 OjEyIDIwMDIKKysrIGdkYi9jb2ZmcmVhZC5jCVdlZCBNYXIgIDYgMTE6NDY6 MTkgMjAwMgpAQCAtOTUyLDIxICs5NTIsMjUgQEAgY29mZl9zeW10YWJfcmVh ZCAobG9uZyBzeW10YWJfb2Zmc2V0LCB1bgogCSAgZmNuX3N5bV9zYXZlZCA9 IG1haW5fc3ltOwogCSAgZmNuX2F1eF9zYXZlZCA9IG1haW5fYXV4OwogIAot IAkgIC8qIElmIGZpcnN0X2Z1bmN0aW9uX2xhc3QgZmlsZSBpcyBub256ZXJv LCB3ZSBoYWQgZ290dGVuIGEgc2l6ZWxlc3MKLSAJICAgICBmdW5jdGlvbiBl YXJsaWVyOyAgd2Uga2VlcCBnb2luZyB1bnRpbCB3ZSBETyBnZXQgYSBzaXpl LCBhbmQgCi0gCSAgICAgcHJlc3VtZSB0aGF0IGV2ZXJ0aGluZyBpbiB0aGUg cmFuZ2UgdXAgdG8gdGhlIGN1cnJlbnQgZnVuY3Rpb24KLSAJICAgICBpcyBh IHNpbmdsZSBmaWxlLiAqLwotIAkgIGlmIChtb3N0X3JlY2VudF9mdW5jdGlv bl9lbmQgIT0gMCkKLSAJICAgIHsKLSAJICAgICAgaWYgKGZpcnN0X2Z1bmN0 aW9uX2xhc3RfZmlsZSAhPSAwKQotIAkJIHJhbmdlX3N5bXRhYihmaXJzdF9m dW5jdGlvbl9sYXN0X2ZpbGUsIHRtcGFkZHItMSk7Ci0gCSAgICAgIGZpcnN0 X2Z1bmN0aW9uX2xhc3RfZmlsZSA9IDA7Ci0gCSAgICB9Ci0gCSAgZWxzZQot IAkgICAgewotIAkgICAgICBpZiAoZmlyc3RfZnVuY3Rpb25fbGFzdF9maWxl ID09IDApCi0gCQkgZmlyc3RfZnVuY3Rpb25fbGFzdF9maWxlID0gdG1wYWRk cjsKLSAJICAgIH0KKwkgIC8qIFNoYXJlZCBsaWIgc3ltYm9scyBuZWVkIG5v dCBhcHBseS4gKi8KKwkgIGlmIChjcy0+Y19zZWNudW0gIT0gMCkKKwkgICAg eworCSAgICAgIC8qIElmIGZpcnN0X2Z1bmN0aW9uX2xhc3RfZmlsZSAhPSB6 ZXJvLCB3ZSBoYWQgZ290dGVuIGEgc2l6ZWxlc3MKKwkJIGZ1bmN0aW9uIGVh cmxpZXI7ICB3ZSBrZWVwIGdvaW5nIHVudGlsIHdlIERPIGdldCBhIHNpemUs IGFuZCAKKwkJIHByZXN1bWUgdGhhdCBldmVydGhpbmcgaW4gdGhlIHJhbmdl IHVwIHRvIHRoZSBjdXJyZW50IGZ1bmN0aW9uCisJCSBpcyBhIHNpbmdsZSBm aWxlLiAqLworCSAgICAgIGlmIChtb3N0X3JlY2VudF9mdW5jdGlvbl9lbmQg IT0gMCkKKwkJeworCQkgIGlmIChmaXJzdF9mdW5jdGlvbl9sYXN0X2ZpbGUg IT0gMCkKKwkJICAgICByYW5nZV9zeW10YWIoZmlyc3RfZnVuY3Rpb25fbGFz dF9maWxlLCB0bXBhZGRyLTEpOworCQkgIGZpcnN0X2Z1bmN0aW9uX2xhc3Rf ZmlsZSA9IDA7CisJCX0KKwkgICAgICBlbHNlCisJCXsKKwkJICBpZiAoZmly c3RfZnVuY3Rpb25fbGFzdF9maWxlID09IDApCisJCSAgICAgZmlyc3RfZnVu Y3Rpb25fbGFzdF9maWxlID0gdG1wYWRkcjsKKwkJfQorCSAgICB9CiAgCiAJ ICBjb250aW51ZTsKIAl9Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQpJbnRlcml4IHVzZXMgdGhlIHNhbWUgY29udmVudGlvbiBhcyBCU0QgZm9y IHBhc3Npbmcgc3RydWN0cyBvZiB1cCB0byA4IGJ5dGVzOgp1c2UgcmVnaXN0 ZXJzIGlmIHRoZSBzaXplIGlzICJyb3VuZCIgZW5vdWdoLgoKZGlmZiAtZHJ1 cFAgLS1leGNsdWRlLWZyb209L00vZG9ubi9kaWZmcy9leGNsdWRlLmZpbGVz IGdkYi5zYXZlZC9jb25maWcvaTM4Ni9pbnRlcml4Lm10IGdkYi9jb25maWcv aTM4Ni9pbnRlcml4Lm10Ci0tLSBnZGIuc2F2ZWQvY29uZmlnL2kzODYvaW50 ZXJpeC5tdAlUdWUgTWFyICA1IDE0OjU2OjAxIDIwMDIKKysrIGdkYi9jb25m aWcvaTM4Ni9pbnRlcml4Lm10CVR1ZSBNYXIgIDUgMTU6MDE6MDMgMjAwMgpA QCAtMSwzICsxLDMgQEAKICMgVGFyZ2V0OiBJbnRlbCAzODYgcnVubmluZyBJ bnRlcml4Ci1UREVQRklMRVM9IGkzODYtdGRlcC5vIGkzODctdGRlcC5vIHNv bGliLm8gc29saWItcGVpLm8KK1RERVBGSUxFUz0gaTM4Ni10ZGVwLm8gaTM4 Ny10ZGVwLm8gc29saWIubyBzb2xpYi1wZWkubyBpMzg2bmJzZC10ZGVwLm8K IFRNX0ZJTEU9IHRtLWkzODZpbnRlcml4LmgKZGlmZiAtZHJ1cFAgLS1leGNs dWRlLWZyb209L00vZG9ubi9kaWZmcy9leGNsdWRlLmZpbGVzIGdkYi5zYXZl ZC9jb25maWcvaTM4Ni90bS1pMzg2aW50ZXJpeC5oIGdkYi9jb25maWcvaTM4 Ni90bS1pMzg2aW50ZXJpeC5oCi0tLSBnZGIuc2F2ZWQvY29uZmlnL2kzODYv dG0taTM4NmludGVyaXguaAlUdWUgTWFyICA1IDE0OjU2OjAxIDIwMDIKKysr IGdkYi9jb25maWcvaTM4Ni90bS1pMzg2aW50ZXJpeC5oCVR1ZSBNYXIgIDUg MjE6MjQ6MDkgMjAwMgpAQCAtMzAsNiArMzAsMTEgQEAgRm91bmRhdGlvbiwg SW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdAogI3VuZGVmIFRBUkdFVF9M T05HX0xPTkdfQklUCiAjZGVmaW5lIFRBUkdFVF9MT05HX0xPTkdfQklUIDY0 CiAKKy8qIFdlIGRvIHRoZSBzYW1lIGFzIGkzODZuYnNkLCBzbyB1c2UgdGhh dCBmdW5jdGlvbi4gKi8KK2V4dGVybiB1c2Vfc3RydWN0X2NvbnZlbnRpb25f Zm4gaTM4Nm5ic2RfYW91dF91c2Vfc3RydWN0X2NvbnZlbnRpb247CisjZGVm aW5lIFVTRV9TVFJVQ1RfQ09OVkVOVElPTihnY2NfcCwgdHlwZSkgXAorCWkz ODZuYnNkX2FvdXRfdXNlX3N0cnVjdF9jb252ZW50aW9uKGdjY19wLCB0eXBl KQorCiAvKiBjb25maWd1cmUgY2FuJ3QgYmUgZXhwZWN0ZWQgdG8gbm9vZGxl IG91dCBNUydzIGFsdGVybmF0ZSBzcGVsbGluZyBmb3IKICAgIDY0LWJpdCBp bnRlZ2Vycywgc28gd2UnbGwgdGVsbCBpdC4gKi8KICNkZWZpbmUgUFJJTlRG X0hBU19MT05HX0xPTkcgMQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KTWlzY2VsbGFuZW91cyBzbWFsbCBmaXhlczoKCnZpcnRmdW5jLmV4cCB3 YXMgZmFpbGluZyB3aXRoIHRpbW91dHM7IGdkYiB3YXMgY3Jhc2hpbmcuICBU aGUgY2hhbmdlIHRvCmJ1aWxkc3ltLmggaW1wcm92ZXMgdGhpbmdzIHNvIGl0 IHJlcG9ydHMgdGhlIHVuZGVybHlpbmcgZXJyb3IgKHdoaWNoIGlzCmFwcGFy ZW50bHkgYSBnY2MgcHJvYmxlbTsgdGhlIHN0YWJzIHJlY29yZHMgYXJlbid0 IHByb3Blcmx5IG5lc3RlZC4pCgp0ZW1wbGF0ZXMuZXhwIHdhcyBmYWlsaW5n IGJlY2F1c2UgdGhlIGNvbXBpbGVyIGVtaXR0ZWQgYSAiY29uc3QiIGtleXdv cmQKdGhhdCBpdCB3YXNuJ3QgZXhwZWN0aW5nLgoKY29mZnJlYWQuYzogaW5k ZW50YXRpb24sIHJlY29nbml6ZSBST0RBVEEgYXMgc3BlY2lhbCwgdG9vLgoK ZGlmZiAtZHJ1cFAgLS1leGNsdWRlLWZyb209L2Rldi9mcy9NL2Rvbm4vZGlm ZnMvZXhjbHVkZS5maWxlcyBnZGIuYmVmb3JlL2J1aWxkc3ltLmggZ2RiL2J1 aWxkc3ltLmgKLS0tIGdkYi5iZWZvcmUvYnVpbGRzeW0uaAlUaHUgTWFyICA3 IDA5OjE4OjU5IDIwMDIKKysrIGdkYi9idWlsZHN5bS5oCU1vbiBNYXIgMTEg MTg6NDE6MjIgMjAwMgpAQCAtMTc3LDcgKzE3Nyw5IEBAIEVYVEVSTiBpbnQg Y29udGV4dF9zdGFja19zaXplOwogICAgZG9uZSBieSBhIHJlYWwgZnVuY3Rp b24sIHB1c2hfY29udGV4dC4gIFRoaXMgcmV0dXJucyBhIHBvaW50ZXIgdG8g YQogICAgc3RydWN0IGNvbnRleHRfc3RhY2suICAqLwogCi0jZGVmaW5lCXBv cF9jb250ZXh0KCkgKCZjb250ZXh0X3N0YWNrWy0tY29udGV4dF9zdGFja19k ZXB0aF0pOworI2RlZmluZQlwb3BfY29udGV4dCgpICggXAorICAgKGNvbnRl eHRfc3RhY2tfZGVwdGggPD0gMCkgPyBlcnJvcigiQ29udGV4dCBzdGFjayB1 bmRlcmZsb3ciKSA6IDAsIFwKKyAgICZjb250ZXh0X3N0YWNrWy0tY29udGV4 dF9zdGFja19kZXB0aF0pOwogCiAvKiBOb256ZXJvIGlmIHdpdGhpbiBhIGZ1 bmN0aW9uIChzbyBzeW1ib2xzIHNob3VsZCBiZSBsb2NhbCwgaWYKICAgIG5v dGhpbmcgc2F5cyBzcGVjaWZpY2FsbHkpLiAgKi8KZGlmZiAtZHJ1cFAgLS1l eGNsdWRlLWZyb209L2Rldi9mcy9NL2Rvbm4vZGlmZnMvZXhjbHVkZS5maWxl cyBnZGIuYmVmb3JlL2NvZmZyZWFkLmMgZ2RiL2NvZmZyZWFkLmMKLS0tIGdk Yi5iZWZvcmUvY29mZnJlYWQuYwlUaHUgTWFyICA3IDA5OjE4OjU5IDIwMDIK KysrIGdkYi9jb2ZmcmVhZC5jCVR1ZSBNYXIgMTIgMTQ6MTA6MTMgMjAwMgpA QCAtMTAwNiwxOCArMTAwNywxOCBAQCBjb2ZmX3N5bXRhYl9yZWFkIChsb25n IHN5bXRhYl9vZmZzZXQsIHVuCiAJICAgICBvciBzeW1udW0gb2YgZmlyc3Qg Z2xvYmFsIGFmdGVyIGxhc3QgLmZpbGUuICAqLwogCSAgbmV4dF9maWxlX3N5 bW51bSA9IGNzLT5jX3ZhbHVlOwogCSAgaWYgKGNzLT5jX25hdXggPiAwKQot CSAgICAgIGZpbGVzdHJpbmcgPSBjb2ZmX2dldGZpbGVuYW1lICgmbWFpbl9h dXgsIGNzLT5jX25hdXgpOworCSAgICBmaWxlc3RyaW5nID0gY29mZl9nZXRm aWxlbmFtZSAoJm1haW5fYXV4LCBjcy0+Y19uYXV4KTsKIAkgIGVsc2UKIAkg ICAgZmlsZXN0cmluZyA9ICIiOwogCiAJICBjb2ZmX3N0YXJ0X3N5bXRhYiAo ZmlsZXN0cmluZyk7CiAKIAkgIGZpcnN0X2Z1bmN0aW9uX3RoaXNfZmlsZSA9 IDA7CiAJICBicmVhazsKIAotCSAgLyogQ19MQUJFTCBpcyB1c2VkIGZvciBs YWJlbHMgYW5kIHN0YXRpYyBmdW5jdGlvbnMuICBJbmNsdWRpbmcKLQkgICAg IGl0IGhlcmUgYWxsb3dzIGdkYiB0byBzZWUgc3RhdGljIGZ1bmN0aW9ucyB3 aGVuIG5vIGRlYnVnCi0JICAgICBpbmZvIGlzIGF2YWlsYWJsZS4gICovCisJ LyogQ19MQUJFTCBpcyB1c2VkIGZvciBsYWJlbHMgYW5kIHN0YXRpYyBmdW5j dGlvbnMuICBJbmNsdWRpbmcKKwkgICBpdCBoZXJlIGFsbG93cyBnZGIgdG8g c2VlIHN0YXRpYyBmdW5jdGlvbnMgd2hlbiBubyBkZWJ1ZworCSAgIGluZm8g aXMgYXZhaWxhYmxlLiAgKi8KIAljYXNlIENfTEFCRUw6CiAJICAvKiBIb3dl dmVyLCBsYWJlbHMgd2l0aGluIGEgZnVuY3Rpb24gY2FuIG1ha2Ugd2VpcmQg YmFja3RyYWNlcywKIAkgICAgIHNvIGZpbHRlciB0aGVtIG91dCAoZnJvbSBw aGRtQG1hY3FlbC5iZSkuICovCkBAIC0xMTEzLDcgKzExMTUsOSBAQCBjb2Zm X3N5bXRhYl9yZWFkIChsb25nIHN5bXRhYl9vZmZzZXQsIHVuCiAJCSAgfQog I2VuZGlmCiAKLQkJaWYgKHNlYyA9PSBTRUNUX09GRl9URVhUIChvYmpmaWxl KSkKKwkJaWYgKHNlYyA9PSBTRUNUX09GRl9URVhUIChvYmpmaWxlKQorCQkg ICAgfHwgc2VjID09IFNFQ1RfT0ZGX1JPREFUQSAob2JqZmlsZSkKKwkJICAg ICkKIAkJICB7CiAJCSAgICBtc190eXBlID0KIAkJICAgICAgY3MtPmNfc2Ns YXNzID09IGV4dGVybmFsX2NsYXNzID8gCmRpZmYgLWRydXBQIC0tZXhjbHVk ZS1mcm9tPS9kZXYvZnMvTS9kb25uL2RpZmZzL2V4Y2x1ZGUuZmlsZXMgZ2Ri LmJlZm9yZS90ZXN0c3VpdGUvZ2RiLmMrKy90ZW1wbGF0ZXMuZXhwIGdkYi90 ZXN0c3VpdGUvZ2RiLmMrKy90ZW1wbGF0ZXMuZXhwCi0tLSBnZGIuYmVmb3Jl L3Rlc3RzdWl0ZS9nZGIuYysrL3RlbXBsYXRlcy5leHAJVGh1IE1hciAgNyAw OToxODo1MCAyMDAyCisrKyBnZGIvdGVzdHN1aXRlL2dkYi5jKysvdGVtcGxh dGVzLmV4cAlNb24gTWFyIDExIDE4OjIzOjMyIDIwMDIKQEAgLTQ0MCw3ICs0 NDAsNyBAQCBnZGJfZXhwZWN0IHsgICAKIAogc2VuZF9nZGIgInByaW50IEdh cnBseTxHYXJwbHk8Y2hhcj4gPjo6Z2FycGx5XG4iCiBnZGJfZXhwZWN0IHsK LSAgIC1yZSAiXFwkXFswLTlcXSogPSBcXHsoY2xhc3MgfClHYXJwbHk8Y2hh cj4gXFwoKGNsYXNzIHwpR2FycGx5PEdhcnBseTxjaGFyPiA+IFxcKiwgaW50 LCAoY2xhc3MgfClHYXJwbHk8Y2hhcj5cXClcXH0gJGhleCA8R2FycGx5PEdh cnBseTxjaGFyPlxbIFx0XF0qPjo6Z2FycGx5XFwoaW50LCAoY2xhc3MgfClH YXJwbHk8Y2hhcj5cXCk+XHJcbiRnZGJfcHJvbXB0ICQiIHsgcGFzcyAicHJp bnQgR2FycGx5PEdhcnBseTxjaGFyPiA+OjpnYXJwbHkiIH0KKyAgIC1yZSAi XFwkXFswLTlcXSogPSBcXHsoY2xhc3MgfClHYXJwbHk8Y2hhcj4gXFwoKGNs YXNzIHwpR2FycGx5PEdhcnBseTxjaGFyPiA+IFxcKiggY29uc3R8KSwgaW50 LCAoY2xhc3MgfClHYXJwbHk8Y2hhcj5cXClcXH0gJGhleCA8R2FycGx5PEdh cnBseTxjaGFyPlxbIFx0XF0qPjo6Z2FycGx5XFwoaW50LCAoY2xhc3MgfClH YXJwbHk8Y2hhcj5cXCk+XHJcbiRnZGJfcHJvbXB0ICQiIHsgcGFzcyAicHJp bnQgR2FycGx5PEdhcnBseTxjaGFyPiA+OjpnYXJwbHkiIH0KICAgIC1yZSAi LiokZ2RiX3Byb21wdCAkIiB7IGZhaWwgInByaW50IEdhcnBseTxHYXJwbHk8 Y2hhcj4gPjo6Z2FycGx5IiB9CiAgICB0aW1lb3V0IHsgZmFpbCAicHJpbnQg R2FycGx5PEdhcnBseTxjaGFyPiA+OjpnYXJwbHkgKHRpbWVvdXQpIiB9CiB9 Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbiBXaW5YUCwgc3Rh Y2sgdW53aW5kIHdhc24ndCBhbHdheXMgcmVjb2duaXppbmcgdHJhbXBvbGlu ZXMgYmVjYXVzZQp0aGVyZSB3YXMgYW5vdGhlciBwb3NzaWJsZSBsZXZlbCBv ZiBpbmRpcmVjdGlvbi4gIEZvciBOVCA1LjEgKFhQKSBhbmQKYWJvdmUsIHJl Y29nbml6ZSB0aGF0LiAgKFRvIGlkZW50aWZ5IDUuMSwgd2UgZ2V0IHRoZSBp bmZvIGZyb20gdXRzbmFtZS4pCgpkaWZmIC1kcnVwUCAtLWV4Y2x1ZGUtZnJv bT0vZGV2L2ZzL00vZG9ubi9kaWZmcy9leGNsdWRlLmZpbGVzIGdkYi5iZWZv cmUvY29uZmlnL2kzODYvdG0taTM4NmludGVyaXguaCBnZGIvY29uZmlnL2kz ODYvdG0taTM4NmludGVyaXguaAotLS0gZ2RiLmJlZm9yZS9jb25maWcvaTM4 Ni90bS1pMzg2aW50ZXJpeC5oCVRodSBNYXIgIDcgMDk6MTg6NDMgMjAwMgor KysgZ2RiL2NvbmZpZy9pMzg2L3RtLWkzODZpbnRlcml4LmgJVHVlIE1hciAx MiAxNDoxOTo0NCAyMDAyCkBAIC03Miw3ICs3Miw4IEBAIGV4dGVybiBDT1JF X0FERFIgdHJhbXBfc3RhcnQ7CiBleHRlcm4gQ09SRV9BRERSIHRyYW1wX2Vu ZDsKIGV4dGVybiBDT1JFX0FERFIgbnVsbF9zdGFydDsKIGV4dGVybiBDT1JF X0FERFIgbnVsbF9lbmQ7Ci0KK2V4dGVybiBpbnQgd2ludmVyOworCiAvKiBU aGlzIGlzIHN1ZmZpY2llbnQsIHdoZXJlIHVzZWQsIGJ1dCBpcyBOT1QgYSBj b21wbGV0ZSB0ZXN0OyB0aGVyZSdzIG1vcmUKICAgIGluIElOSVRfRVhUUkFf RlJBTUVfSU5GTyAoYS5rLmEuIGludGVyaXhfYmFja19vbmVfZnJhbWUpICov CiAjZGVmaW5lIElOX1NJR1RSQU1QKHAsZikgKCgoKHApPj10cmFtcF9zdGFy dCAmJiAocCk8dHJhbXBfZW5kKSkgXApkaWZmIC1kcnVwUCAtLWV4Y2x1ZGUt ZnJvbT0vZGV2L2ZzL00vZG9ubi9kaWZmcy9leGNsdWRlLmZpbGVzIGdkYi5i ZWZvcmUvZXhlYy5jIGdkYi9leGVjLmMKZGlmZiAtZHJ1cFAgLS1leGNsdWRl LWZyb209L2Rldi9mcy9NL2Rvbm4vZGlmZnMvZXhjbHVkZS5maWxlcyBnZGIu YmVmb3JlL2kzODZpbnRlcml4LW5hdC5jIGdkYi9pMzg2aW50ZXJpeC1uYXQu YwotLS0gZ2RiLmJlZm9yZS9pMzg2aW50ZXJpeC1uYXQuYwlUaHUgTWFyICA3 IDA5OjE5OjAwIDIwMDIKKysrIGdkYi9pMzg2aW50ZXJpeC1uYXQuYwlUdWUg TWFyIDEyIDE0OjEwOjM1IDIwMDIKQEAgLTM1LDcgKzM4LDggQEAgQ09SRV9B RERSIHRyYW1wX3N0YXJ0OwogQ09SRV9BRERSIHRyYW1wX2VuZDsKIENPUkVf QUREUiBudWxsX3N0YXJ0OwogQ09SRV9BRERSIG51bGxfZW5kOwotCitpbnQg d2ludmVyOyAvKiBXaW5kb3dzIE5UIHZlcnNpb24gbnVtYmVyICovCisKIC8q ICBUaGUgL3Byb2MgaW50ZXJmYWNlIHRyYWRpdGlvbmFsbHkgZGl2aWRlcyB0 aGUgdGFyZ2V0IG1hY2hpbmUncyByZWdpc3RlciAKICAgICBzZXQgdXAgaW50 byB0d28gZGlmZmVyZW50IHNldHMsIHRoZSBnZW5lcmFsIHJlZ2lzdGVyIHNl dCAoZ3JlZ3NldCkgCiAgICAgYW5kIHRoZSBmbG9hdGluZyBwb2ludCByZWdp c3RlciBzZXQgKGZwcmVnc2V0KS4gICBUaGlzIGlzIHJlZmxlY3RlZApAQCAt MzE2LDYgKzMyMCwxNSBAQCBpbnRlcml4X2JhY2tfb25lX2ZyYW1lIChmcm9t bGVhZiwgZnJhbWUpCiAgICAgICAgICAgIHJhID0gU0FWRURfUENfQUZURVJf Q0FMTCAoZnJhbWUpOwogICAgICAgICAgICBpZiAocmEgPj0gbnVsbF9zdGFy dCAmJiByYSA8IG51bGxfZW5kKQogCSAgICAgIGZyYW1lLT5zaWduYWxfaGFu ZGxlcl9jYWxsZXIgPSAxOworCSAgIC8qIFRoZXJlIG1pZ2h0IGFsc28gYmUg YW4gaW5kaXJlY3QgY2FsbCB0byB0aGUgbWluaS1mcmFtZSwKKwkgICAgICBw dXR0aW5nIG9uZSBtb3JlIHJldHVybiBhZGRyZXNzIG9uIHRoZSBzdGFjay4g IChYUCBvbmx5LAorCSAgICAgIEkgdGhpbms/KSAgVGhpcyBjYW4ndCAocmVh c29uYWJseSkgcmV0dXJuIHRoZSBhZGRyZXNzIG9mIHRoZSAKKwkgICAgICBz aWduYWwgaGFuZGxlciBjYWxsZXIgdW5sZXNzIGl0J3MgdGhhdCBzaXR1YXRp b24sIHNvIHRoaXMKKwkgICAgICBpcyBzYWZlLiAqLworICAgICAgICAgICBy YSA9IHJlYWRfbWVtb3J5X3Vuc2lnbmVkX2ludGVnZXIgKAorCSAgICAgICAo Q09SRV9BRERSKSByZWFkX3JlZ2lzdGVyIChTUF9SRUdOVU0pKzQsIDQpOwor ICAgICAgICAgICBpZiAocmEgPj0gbnVsbF9zdGFydCAmJiByYSA8IG51bGxf ZW5kKQorCSAgICAgIGZyYW1lLT5zaWduYWxfaGFuZGxlcl9jYWxsZXIgPSAx OwogCSB9CiAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQwMSw2ICs0MTQs MTQgQEAgaW50ZXJpeF9iYWNrX29uZV9mcmFtZSAoZnJvbWxlYWYsIGZyYW1l KQogCSBhIHN5c3RlbSBjYWxsIG1pbmktZnJhbWUgKi8KICAgICAgIHJhID0g KENPUkVfQUREUilyZWFkX21lbW9yeV9pbnRlZ2VyIAogCSAoY29udGV4dCAr IG9mZnNldG9mKG1jb250ZXh0X3QsIGdyZWdzLmdyZWdzW1VFU1BdKSwgNCk7 CisKKyAgICAgIGlmICh3aW52ZXI+PTUxKSB7CisJICAvKiBOZXdlciB2ZXJz aW9ucyBvZiBXaW5kb3dzIE5UIGludGVycG9zZSBhbm90aGVyIHJldHVybgor CSAgICAgYWRkcmVzcyAoYnV0IG5vIG90aGVyICJzdGFjayBmcmFtZSIgc3R1 ZmYpIHRoYXQgd2UgbmVlZAorCSAgICAgdG8gc2ltcGx5IGlnbm9yZSBoZXJl LiAqLworCSByYSs9NDsKKyAgICAgIH0KKwogICAgICAgcmEgPSAoQ09SRV9B RERSKXJlYWRfbWVtb3J5X2ludGVnZXIocmEsNCk7CiAKICAgICAgIC8qIFdl IG1pZ2h0IGJlIGRvbmUgKG5vIE51bGwgQVBJIGlmIHNvKSAqLwpAQCAtNDEz LDIwICs0MzQsMjUgQEAgaW50ZXJpeF9iYWNrX29uZV9mcmFtZSAoZnJvbWxl YWYsIGZyYW1lKQogCX0KICAgICB9CiAgIC8qIEF0IHRoaXMgcG9pbnQsIHdl J3JlIGxvb2tpbmcgYXQgdGhlIGZyYW1lIGZvciBQZHhOdWxsUG9zaXhBcGks Ci0gICAgIGluIGVpdGhlciBjYXNlLiAqLwotCi0gIC8qIGV4dHJhY3QgdGhl IGZyYW1lIGZvciBQZHhOdWxsUG9zaXhBcGkgKi8KLSAgZm0gPSByZWFkX21l bW9yeV9pbnRlZ2VyIChmbSwgNCk7Ci0KLSAgLyogZXh0cmFjdCB0aGUgZnJh bWUgZm9yIFBkeE51bGxBcGlDYWxsZXIgKi8KLSAgLyogVGhlIHNhdmVkIGZy YW1lIHJlZ2lzdGVyIGZvciBQZHhOdWxsQXBpQ2FsbGVyIHNraXBzIHVzIG92 ZXIgdGhlCi0gICAgIHNhdmVkIGNvbnRleHQsIHdoaWNoIGlzIHRoZSB3cm9u ZyB0aGluZyB0byBkbywgYmVjYXVzZSBpdCBza2lwcwotICAgICB0aGUgaW50 ZXJycnVwdGVkIHJvdXRpbmUhICBJbnN0ZWFkLCBnZXQgdGhlIGFyZyB0aGF0 IHdhcyBwYXNzZWQKLSAgICAgd2hpY2ggaGFzIHRoZSBhZGRyZXNzIG9mIHRo ZSBjb250ZXh0ICh3aGljaCBpcyByZWFsbHkgaW4gbm8gZnJhbWUpICovCi0K LSAgZm0gPSAoQ09SRV9BRERSKXJlYWRfbWVtb3J5X2ludGVnZXIgKGZtICsg OCwgNCk7Ci0KLSAgLyogVEhJUyBjb250ZXh0IGlzIGFjY291bnRlZCBmb3Ig aW4gYSBmcmFtZSAqLworICAgICBpbiBlaXRoZXIgY2FzZS4KKworICAgICBQ ZHhOdWxsUG9zaXhBcGkgaXMgY2FsbGVkIGJ5IFBkeE51bGxBcGlDYWxsZXIg KHdoaWNoIGluIHR1cm4KKyAgICAgaXMgY2FsbGVkIGJ5IF9QZHhOdWxsQXBp Q2FsbGVyIChub3RlIHRoZSBfKS4pCisgICAgIFBkeE51bGxQb3NpeEFwaUNh bGxlciAobm8gXykgaXMgYSBmcmFtZWxlc3MgZnVuY3Rpb24uCisKKyAgICAg VGhlIHNhdmVkIGZyYW1lIHBvaW50ZXIgaXMgYXMgZm0sIGJ1dCBpdCdzIG5v dCBvZiBpbnRlcmVzdAorICAgICB0byB1cyBiZWNhdXNlIGl0IHNraXBzIHVz IG92ZXIgdGhlIHNhdmVkIGNvbnRleHQsIHdoaWNoIGlzCisgICAgIHRoZSB3 cm9uZyB0aGluZyB0byBkbywgYmVjYXVzZSBpdCBza2lwcyB0aGUgaW50ZXJy cnVwdGVkCisgICAgIHJvdXRpbmUhICBQZHhOdWxsQXBpQ2FsbGVyIHRha2Vz IGFzIGl0cyBvbmx5IGFyZ3VtZW50IHRoZQorICAgICBhZGRyZXNzIG9mIHRo ZSBjb250ZXh0IG9mIHRoZSBpbnRlcnJ1cGRlZCBmdW5jdGlvbiAod2hpY2gK KyAgICAgaXMgcmVhbGx5IGluIG5vIGZyYW1lLCBidXQgamFtbWVkIG9uIHRo ZSBzdGFjayBieSB0aGUgc3lzdGVtKQorCisgICAgIFNvOiBmbSswOiBzYXZl ZCBicAorICAgICAgICAgZm0rNDogcmV0dXJuIGFkZHJlc3MgdG8gX1BkeE51 bGxBcGlDYWxsZXIKKyAgICAgICAgIGZtKzg6IGFyZyB0byBQZHhOdWxsQXBp Q2FsbGVyIHB1c2hlZCBieSBfUGR4Li4uICAqLworCisgIGZtID0gKENPUkVf QUREUilyZWFkX21lbW9yeV9pbnRlZ2VyIChmbSsweDgsIDQpOyAKKwogICAv KiBFeHRyYWN0IHRoZSBzZWNvbmQgY29udGV4dCByZWNvcmQgKi8KIAogICBy YSA9IChDT1JFX0FERFIpcmVhZF9tZW1vcnlfaW50ZWdlciAKZGlmZiAtZHJ1 cFAgLS1leGNsdWRlLWZyb209L2Rldi9mcy9NL2Rvbm4vZGlmZnMvZXhjbHVk ZS5maWxlcyBnZGIuYmVmb3JlL3Byb2Nmcy5jIGdkYi9wcm9jZnMuYwotLS0g Z2RiLmJlZm9yZS9wcm9jZnMuYwlUaHUgTWFyICA3IDA5OjE5OjAxIDIwMDIK KysrIGdkYi9wcm9jZnMuYwlGcmkgTWFyICA4IDE1OjQ1OjQyIDIwMDIKQEAg LTI2LDcgKzI2LDggQEAgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUg MzMwLCBCb3N0bwogI2luY2x1ZGUgImVsZi1iZmQuaCIJCS8qIGZvciBlbGZj b3JlX3dyaXRlXyogKi8KICNpbmNsdWRlICJnZGJjbWQuaCIKICNpbmNsdWRl ICJnZGJ0aHJlYWQuaCIKLQorI2luY2x1ZGUgPHN5cy91dHNuYW1lLmg+CisK ICNpZiBkZWZpbmVkIChORVdfUFJPQ19BUEkpCiAjZGVmaW5lIF9TVFJVQ1RV UkVEX1BST0MgMQkvKiBTaG91bGQgYmUgZG9uZSBieSBjb25maWd1cmUgc2Ny aXB0LiAqLwogI2VuZGlmCkBAIC0xMTQwLDEwICsxMTQxLDIzIEBAIHByb2Nf Z2V0X3N0YXR1cyAocHJvY2luZm8gKnBpKQogCSB0aGF0IGluZm8gaGVyZS4g Ki8KIC8vIFRISVMgTUFZIE5PVCBCRSBUSEUgQkVTVCBQTEFDRSB0byByZWFk CiAvLyBJVCBNQVkgQkUgQkVTVCBUTyBNQUtFIFRIRVNFIEZJRUxEUyBQRVIt UFJPQworLy8gQWdyZWVkLi4uIHRlbGwgbWUgaG93IGZvciAvcHJvYyBzdHVm Zj8gIERUCiAgICAgICB0cmFtcF9zdGFydCA9IChDT1JFX0FERFIpcGktPnBy c3RhdHVzLnByX3NpZ25hbGRlbGl2ZXJlcjsKICAgICAgIHRyYW1wX2VuZCA9 IChDT1JFX0FERFIpcGktPnByc3RhdHVzLnByX2VuZHNpZ25hbGRlbGl2ZXJl cjsKICAgICAgIG51bGxfc3RhcnQgPSAoQ09SRV9BRERSKXBpLT5wcnN0YXR1 cy5wcl9udWxsYXBpOwogICAgICAgbnVsbF9lbmQgPSAoQ09SRV9BRERSKXBp LT5wcnN0YXR1cy5wcl9lbmRudWxsYXBpOworICAgICAgeworCSAgLyogV2hp bGUgd2UncmUgZG9pbmcgc3VjaCB1Z2x5IHRoaW5ncywgZmluZCBvdXQgd2hp Y2ggdmVyc2lvbiBvZgorCSAgICAgTlQgdGhpcyBpcywgc28gd2UgY2FuIGNo YW5nZSBvdXIgdW53aW5kIHJ1bGVzIGEgYml0LiAqLworCSAgc3RydWN0IHV0 c25hbWUgaW5mbzsKKwkgIC8vIE4uQi4gIElmIHdlIG1vdmUgdGhpcywgbW92 ZSB0aGUgaW5jbHVkZSBvZiB1dHNuYW1lLmgsIHRvby4KKworCSAgKHZvaWQp dW5hbWUoJmluZm8pOworCSAgLyogQ29udmVydCB0aGUgZmlyc3QgdHdvIGRp Z2l0cyAoc2tpcCB0aGUgZGVjaW1hbCBwb2ludCkgaW50bworCSAgICAgYSBu dW1iZXIuICBFLmcuIDUuMCAtPiA1MC4gIFdlJ2xsIHRlc3QgdGhpcyBsYXRl ciB0byBrbm93CisJICAgICBob3cgdG8gdW53aW5kLiAqLworCSAgd2ludmVy PShpbmZvLnJlbGVhc2VfaG9zdFswXS0nMCcpKjEwICsgaW5mby5yZWxlYXNl X2hvc3RbMl0tJzAnOworICAgICAgfQogI2VuZGlmCiAKIAl9Ci0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpBZGQgbmV3IHRlc3RzIHRvIGNvbmZp cm0gdGhhdCBsb25nam1wIHdvcmtzIGFzIGV4cGVjdGVkLgpPdGhlciBtaW5v ciBob3VzZWtlZXBpbmcuCgpGcmkgRGVjICAzIDEwOjA3OjIwIFBTVCAxOTk5 ICBEb25uIFRlcnJ5IDxkb25udGVAbWljcm9zb2Z0LmNvbT4KCSogZ2RiLmJh c2UvbWlzYy5leHA6IE5ldyBmaWxlLgoJKiBnZGIuYmFzZS9sb25nam1wLmM6 IE5ldyBmaWxlLgoJKiBnZGIuYmFzZS9saXN0LmV4cDogcmVtb3ZlIGxpc3Qw LmggYmVmb3JlIGNvcHkgKGp1c3QgaW4gY2FzZSkuCgkqIGdkYi5iYXNlL3R3 aWNlLmV4cDogcmVtb3ZlIHR3aWNlLmMgYmVmb3JlIGNvcHkgKGp1c3QgaW4g Y2FzZSkuCgpJbmRleDogc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvbGlz dC5leHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2Rldi9m cy9IL3J1cHAvZGV2ZWwtbG9jYWwtcmVwb3NpdG9yeS9zcmMvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9saXN0LmV4cCx2CnJldHJpZXZpbmcgcmV2aXNpb24g MS4xLjEuMQpkaWZmIC1wIC11IC1yMS4xLjEuMSBsaXN0LmV4cAotLS0gc3Jj L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvbGlzdC5leHAJMjAwMS8xMi8yMyAw MDozNToxNwkxLjEuMS4xCisrKyBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9saXN0LmV4cAkyMDAxLzEyLzI0IDAyOjIyOjE4CkBAIC0zMSw2ICszMSw3 IEBAIHNldCB0ZXN0ZmlsZSAibGlzdCIKIHNldCBiaW5maWxlICR7b2JqZGly fS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KIAogIyBOZWVkIHRvIGRvd25sb2Fk IHRoZSBoZWFkZXIgdG8gdGhlIGhvc3QuCitzdGFuZGFyZF9maWxlIGhvc3Qg ZGVsZXRlIGxpc3QwLmgKIHJlbW90ZV9kb3dubG9hZCBob3N0ICR7c3JjZGly fS8ke3N1YmRpcn0vbGlzdDAuaCBsaXN0MC5oCiAKIApJbmRleDogc3JjL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvbG9uZ2ptcC5jCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KUkNTIGZpbGU6IGxvbmdqbXAuYwpkaWZmIC1OIGxvbmdqbXAu YwotLS0gL2Rldi9udWxsCVN1biBEZWMgMjMgMTg6MTg6NDcgMjAwMQorKysg bG9uZ2ptcC5jCVN1biBEZWMgMjMgMTg6MjI6MTggMjAwMQpAQCAtMCwwICsx LDQ1IEBACisjaW5jbHVkZSA8c2V0am1wLmg+CisjaW5jbHVkZSA8c3RkaW8u aD4KKworaW50IHYxLCB2MjsKKworc2V0am1wX2Yoam1wX2J1ZiBqYikKK3sK KyAgIGxvbmdqbXAoamIsIDk5KTsKKyAgIGZwcmludGYoc3RkZXJyLCAic2hv dWxkbid0IGdldCBoZXJlXG4iKTsKK30KKworc2lnc2V0am1wX2Yoam1wX2J1 ZiBqYikKK3sKKyAgIHNpZ2xvbmdqbXAoamIsIDk4KTsKKyAgIGZwcmludGYo c3RkZXJyLCAic2hvdWxkbid0IGdldCBoZXJlXG4iKTsKK30KKworZHVtbXko KXt9CisKK2ludCBpPTA7CisKK21haW4oKQoreworICAgIGptcF9idWYgZW52 OworICAgIGludCB2YWw7CisKKyAgICBpZiAoKHZhbCA9IHNldGptcChlbnYp KSA9PSAwKSB7CisJc2V0am1wX2YoZW52KTsKKyAgICAgICAgZnByaW50Zihz dGRlcnIsICJzaG91bGRuJ3QgZ2V0IGhlcmUsIGVpdGhlclxuIik7CisgICAg fQorICAgIGVsc2UgeworCXYxID0gdmFsOworICAgIH0KKworICAgIGlmICgo dmFsID0gc2lnc2V0am1wKGVudiwxKSkgPT0gMCkgeworCXNpZ3NldGptcF9m KGVudik7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAic2hvdWxkbid0IGdl dCBoZXJlLCBlaXRoZXJcbiIpOworICAgIH0KKyAgICBlbHNlIHsKKwl2MiA9 IHZhbDsKKyAgICB9CisKKyAgICBkdW1teSgpOworICAgIGV4aXQoMCk7Cit9 CkluZGV4OiBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9taXNjLmV4cAo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiBtaXNjLmV4cApkaWZm IC1OIG1pc2MuZXhwCi0tLSAvZGV2L251bGwJU3VuIERlYyAyMyAxODoyNDow MSAyMDAxCisrKyBtaXNjLmV4cAlTdW4gRGVjIDIzIDE4OjIyOjE4IDIwMDEK QEAgLTAsMCArMSw4NyBAQAorIyBDb3B5cmlnaHQgKEMpIDE5OTIsIDE5OTQs IDE5OTUsIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisK KyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyMgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMgCisjIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCisjIAorIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBT b2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2Ug LSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgCisK KyMgUGxlYXNlIGVtYWlsIGFueSBidWdzLCBjb21tZW50cywgYW5kL29yIGFk ZGl0aW9ucyB0byB0aGlzIGZpbGUgdG86CisjIGJ1Zy1nZGJAcHJlcC5haS5t aXQuZWR1CisKKyMgVGhpcyBmaWxlIHdhcyB3cml0dGVuIGJ5IERvbm4gVGVy cnkgKGRvbm5AaW50ZXJpeC5jb20pIGRlcml2ZWQgZnJvbSBhCisjIHNpbWls YXIgZmlsZSBieSBGcmVkIEZpc2guIChmbmZAY3lnbnVzLmNvbSkKKworaWYg JHRyYWNlbGV2ZWwgeworICAgIHN0cmFjZSAkdHJhY2VsZXZlbAorfQorCitz ZXQgcHJtc19pZCAwCitzZXQgYnVnX2lkIDAKKworIyBDcmVhdGUgYW5kIHNv dXJjZSB0aGUgZmlsZSB0aGF0IHByb3ZpZGVzIGluZm9ybWF0aW9uIGFib3V0 IHRoZSBjb21waWxlcgorIyB1c2VkIHRvIGNvbXBpbGUgdGhlIHRlc3QgY2Fz ZS4KK2lmIFtnZXRfY29tcGlsZXJfaW5mbyAke2JpbmZpbGV9XSB7CisgICAg cmV0dXJuIC0xOworfQorCisKKyMKKyMgVGVzdCBmb3Igc2V0am1wKCkvbG9u Z2ptcCgpCisjCitwcm9jIGxvbmdqbXBfZnVuYyB7IH0geworICAgIGdsb2Jh bCBnZGJfcHJvbXB0CisgICAgZ2xvYmFsIGhleAorICAgIGdsb2JhbCBkZWNp bWFsCisgICAgZ2xvYmFsIGdjY19jb21waWxlZAorCisgICAgaWYgeyAhIFsg cnVudG8gbWFpbiBdIH0gdGhlbiB7IGdkYl9zdXBwcmVzc190ZXN0czsgfQor CisgICAgIyBzaW5nbGUgc3RlcCB1bnRpbCB3ZSBnZXQgdG8gZHVtbXkKKyAg ICAjIGJyZWFrIGRvZXNuJ3Qgd29yayBpbnNpZGUgdGhlIC1yZSdzICh0Y2wv ZXhwZWN0IGJ1Zz8pCisgICAgc2V0IGRvbmUgMDsKKyAgICB3aGlsZSAoMSkg eworICAgICAgIHNlbmRfZ2RiICJzdGVwXG4iOworICAgICAgIGdkYl9leHBl Y3QgeworCSAgLXJlICIuKmR1bW15LiokZ2RiX3Byb21wdCAkIiB7IHNldCBk b25lIDF9CisJICAtcmUgIi4qVGhlIHByb2dyYW0gaXMgbm90IGJlaW5nIHJ1 bi4qIiB7IHNldCBkb25lIDEgfQorCSAgLXJlICIuKiRnZGJfcHJvbXB0ICQi IHsgfQorCSAgZGVmYXVsdCB7IGZhaWwgInNpbmdsZSBzdGVwIHRvIGR1bW15 Ijsgc2V0IGRvbmUgMSB9CisKKyAgICAgICB9CisgICAgICAgaWYgeyAkZG9u ZSB9IGJyZWFrOworICAgIH0KKworICAgIGdkYl90ZXN0ICJwcmludCB2MSIg IiA9IDk5IiAic2V0am1wOiBwcmludCB2MSIKKyAgICBnZGJfdGVzdCAicHJp bnQgdjIiICIgPSA5OCIgInNldGptcDogcHJpbnQgdjIiCisKKyAgICBnZGJf c3RvcF9zdXBwcmVzc2luZ190ZXN0czsKK30KKworZ2RiX2V4aXQKK2dkYl9z dGFydAorZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCitn ZGJfbG9hZCAke2JpbmZpbGV9CisKK3NldCB0ZXN0ZmlsZSAibG9uZ2ptcCIK K3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKK3NldCBiaW5maWxlICR7b2Jq ZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KK2lmICB7IFtnZGJfY29tcGls ZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxl fSIgZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9IHsKKyAgICBwZXJyb3Ig IkNvdWxkbid0IGNvbXBpbGUgJHtzcmNmaWxlfSIKKyAgICByZXR1cm4gLTEK K30KKworZ2RiX2V4aXQKK2dkYl9zdGFydAorZ2RiX3JlaW5pdGlhbGl6ZV9k aXIgJHNyY2Rpci8kc3ViZGlyCitnZGJfbG9hZCAke2JpbmZpbGV9CisKK2xv bmdqbXBfZnVuYwpJbmRleDogc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv dHdpY2UuZXhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9k ZXYvZnMvSC9ydXBwL2RldmVsLWxvY2FsLXJlcG9zaXRvcnkvc3JjL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2UvdHdpY2UuZXhwLHYKcmV0cmlldmluZyByZXZp c2lvbiAxLjEuMS4xCmRpZmYgLXAgLXUgLXIxLjEuMS4xIHR3aWNlLmV4cAot LS0gc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdHdpY2UuZXhwCTIwMDEv MTIvMjMgMDA6MzU6MTkJMS4xLjEuMQorKysgc3JjL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvdHdpY2UuZXhwCTIwMDEvMTIvMjQgMDI6MjI6MTgKQEAgLTM0 LDYgKzM0LDcgQEAgc2V0IGZpbGVpZCBbb3BlbiAke29iamRpcn0vJHtzdWJk aXJ9LyR7cwogcHV0cyAkZmlsZWlkICIjaW5jbHVkZSBcInR3aWNlLmNcIiI7 CiBjbG9zZSAkZmlsZWlkOwogCitzdGFuZGFyZF9maWxlIGhvc3QgZGVsZXRl IHR3aWNlLmMKIHJlbW90ZV9kb3dubG9hZCBob3N0ICR7c3JjZGlyfS8ke3N1 YmRpcn0vdHdpY2UuYyB0d2ljZS5jCiAKIGlmICB7IFtnZGJfY29tcGlsZSAi JHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIg ZXhlY3V0YWJsZSAkb3B0aW9uc10gIT0gIiIgfSB7Ci0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQpUZXN0IGFkZGl0aW9uYWwgY29uZGl0aW9ucyBm b3Igc2lnbmFsIHZzLiBiYWNrdHJhY2UgY29tbWFuZC4gIEFsbAphcmNoaXRl Y3R1cmVzIHNob3VsZCBwYXNzLCBidXQgaXQgbWF5IGZpbmQgYSBidWcgaW4g c29tZSBpbXBsZW1lbnRhdGlvbnMuCihOZXN0ZWQgaGFuZGxlcnMsIGUuZy4p CgpGcmkgRGVjICAzIDEwOjA3OjIwIFBTVCAxOTk5ICBEb25uIFRlcnJ5IDxk b25udGVAbWljcm9zb2Z0LmNvbT4KCSogZ2RiLmJhc2Uvc2lnbmFscy5jOiBh ZGQgbW9yZSBwb3NzaWJsZSB0ZXN0IGNhc2VzLgoJKiBnZGIuYmFzZS9zaWdu YWxzLmV4cDogVXNlIHRoZW0uCgpJbmRleDogc3JjL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2Uvc2lnbmFscy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNT IGZpbGU6IC9kZXYvZnMvSC9ydXBwL2RldmVsLWxvY2FsLXJlcG9zaXRvcnkv c3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnbmFscy5jLHYKcmV0cmll dmluZyByZXZpc2lvbiAxLjEuMS4xCmRpZmYgLXAgLXUgLXIxLjEuMS4xIHNp Z25hbHMuYwotLS0gc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnbmFs cy5jCTIwMDEvMTIvMjMgMDA6MzU6MTgJMS4xLjEuMQorKysgc3JjL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnbmFscy5jCTIwMDEvMTIvMjQgMDI6Mzg6 NDAKQEAgLTksNiArOSw3IEBACiAjZW5kaWYKIAogc3RhdGljIGludCBjb3Vu dCA9IDA7CitzdGF0aWMgaW50IGksIHF1aXQ7CiAKICNpZmRlZiBQUk9UT1RZ UEVTCiBzdGF0aWMgdm9pZApAQCAtMjQsNiArMjUsMTQgQEAgaGFuZGxlciAo c2lnKQogfQogCiBzdGF0aWMgdm9pZAoraGFuZGxlcjIgKHNpZykKKyAgICAg aW50IHNpZzsKK3sKKyAgc2lnbmFsIChzaWcsIGhhbmRsZXIyKTsKKyAgcXVp dCA9IDE7Cit9CisKK3N0YXRpYyB2b2lkCiBmdW5jMSAoKQogewogICArK2Nv dW50OwpAQCAtNTUsNSArNjQsMzUgQEAgbWFpbiAoKQogICBmdW5jMSAoKTsK ICAgYWxhcm0gKDEpOwogICBmdW5jMiAoKTsKKyAgYWxhcm0gKDApOyAgIC8q IEp1c3QgdG8gYmUgc3VyZSAqLworCisgIC8qIE5vdyB0ZXN0IHN0cmFuZ2Ug dW53aW5kIGNhc2VzOiBtYWtlIHN1cmUgd2UgY2FuIHVud2luZCBvdmVyIGFs bAorICAgICB0aGVzZSBjb25kaXRpb25zICovCisKKyAgcXVpdCA9IDA7ICAv KiBUaGlzIHdheSwgc28gaWYgYWxhcm0oMikgZXZlciB0YWtlcyAwIHRpbWUg Ki8KKyNpZmRlZiBTSUdBTFJNCisgIHNpZ25hbCAoU0lHQUxSTSwgaGFuZGxl cjIpOworI2VuZGlmCisgIC8qIHdoaWxlIGNvbXB1dGluZyAqLworICBhbGFy bSAoMik7CisgIGZvciAoaT0xO2k+MCAmJiBxdWl0PT0wO2krKyk7CisKKyAg YWxhcm0oMCk7ICAvKiBKdXN0IHRvIGJlIHN1cmUgKi8KKworICAvKiB3aGls ZSBwYXVzZWQgKi8KKyAgYWxhcm0gKDIpOworICBwYXVzZSgpOworCisgIGFs YXJtKDApOyAgLyogSnVzdCB0byBiZSBzdXJlICovCisKKyAgcXVpdD0wOyAg LyogVGhpcyB3YXksIHNvIGlmIHNpZ25hbCBvY2N1cnMgdG9vIGVhcmx5Li4u ICovCisgIC8qIFNJR0lOVCB3aGlsZSBjb21wdXRpbmcsIHBhdXNlZDsgZ2Ri IHdpbGwgInNlZSIgdGhlIHNpZ25hbCAqLworI2lmZGVmIFNJR0lOVAorICBz aWduYWwgKFNJR0lOVCwgaGFuZGxlcjIpOworI2VuZGlmCisKKyAgZm9yIChp PTE7aT4wICYmIHF1aXQ9PTA7aSsrKTsKKyAgcGF1c2UoKTsKKwogICByZXR1 cm4gY291bnQ7CiB9CkluZGV4OiBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9zaWduYWxzLmV4cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxl OiAvZGV2L2ZzL0gvcnVwcC9kZXZlbC1sb2NhbC1yZXBvc2l0b3J5L3NyYy9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ25hbHMuZXhwLHYKcmV0cmlldmlu ZyByZXZpc2lvbiAxLjIKZGlmZiAtcCAtdSAtcjEuMiBzaWduYWxzLmV4cAot LS0gc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnbmFscy5leHAJMjAw MS8xMi8yNCAwMTo0NDo0NAkxLjIKKysrIHNyYy9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL3NpZ25hbHMuZXhwCTIwMDEvMTIvMjQgMDI6Mzg6NDAKQEAgLTE1 OCw2ICsxNTgsOSBAQCBwcm9jIHNpZ25hbF90ZXN0c18xIHt9IHsKIAl9CiAK IAlnZGJfdGVzdCAiYnJlYWsgaGFuZGxlciIgIkJyZWFrcG9pbnQgXFswLTlc XSsgLioiCisJIyBXZSBkb24ndCBuZWVkIGhhbmRsZXIyIHVudGlsIGxhdGVy LCBidXQgaXQncyBjb252aWVuaWVudCB0byBkbworCSMgaXQgbm93LgorCWdk Yl90ZXN0ICJicmVhayBoYW5kbGVyMiIgIkJyZWFrcG9pbnQgXFswLTlcXSsg LioiCiAJZ2RiX3Rlc3QgIm5leHQiICJcXCtcXCtjb3VudDsgL1xcKiBzZWNv bmQgXFwqLyIgXAogCSAgICAibmV4dCB0byAybmQgKytjb3VudCBpbiBzaWdu YWxzX3Rlc3RzXzEiCiAJIyBBbiBhbGFybSBoYXMgYmVlbiBzaWduYWxlZCwg Z2l2ZSB0aGUgc2lnbmFsIHRpbWUgdG8gZ2V0IGRlbGl2ZXJlZC4KQEAgLTI5 Nyw2ICszMDAsMTA2IEBAIHByb2Mgc2lnbmFsX3Rlc3RzXzEge30gewogCWlm IHskYmFzaF9idWd9IHRoZW4gewogCSAgICAgY2xlYXJfeGZhaWwgIm02OCot Ki1zdW5vczQqIgogCX0KKworCSMgTm93IHRlc3Qgc29tZSBtb3JlIGV4b3Rp YyBiYWNrdHJhY2UgY2FzZXMgdGhhdCBtaWdodCBldmVuIGhhdmUKKwkjIGEg Y2hhbmNlIG9mIGZhaWxpbmcgb24gb25seSBzb21lIG1hY2hpbmVzLgorCisJ IyBUaGlzIHRlc3QgY291bGQgZmFpbCBvbiBhIGJsaW5kaW5nbHkgZmFzdCBt YWNoaW5lLCBvciBvbmUKKwkjIHdpdGggZGVmYXVsdCBvcHRpbWl6YXRpb25z IHRoYXQgcmVtb3ZlIG51bGwgbG9vcHMuICBBZGp1c3QKKwkjIHNpZ25hbHMu YyBhY2NvcmRpbmdseSB0byBtYWtlIHRoZSBsb29wIGFjdHVhbGx5IGxvb3Ag bG9uZyBlbm91Z2guCisKKwkjIFdlIGhhbmRsZSBnZXR0aW5nIHJlLXN5bmNl ZCBoZXJlLCB0b28uCisJc2VuZF9nZGIgImNvbnRpbnVlXG4iCisJZ2RiX2V4 cGVjdCB7CisJICAgIC1yZSAiQnJlYWtwb2ludC4qZnVuYzIuKiRnZGJfcHJv bXB0ICQiIHsKKwkgICAgCWZhaWwgImZpcnN0IGNvbnRpbnVlIHRvIGhhbmRs ZXIyIgorCQlnZGJfdGVzdCAiY29udGludWUiICJCcmVha3BvaW50LipoYW5k bGVyMi4qIiBcCisJCSAgICAiZXh0cmEgZmlyc3QgY29udGludWUgdG8gaGFu ZGxlcjIiCisJICAgIH0KKwkgICAgLXJlICJCcmVha3BvaW50LipoYW5kbGVy Mi4qJGdkYl9wcm9tcHQgJCIgeyBwYXNzICJjb250aW51ZSB0byBmaXJzdCBo YW5kbGVyMiIgfQorCSAgICBkZWZhdWx0IHsgZmFpbCAiY29udGludWUgdG8g Zmlyc3QgaGFuZGxlcjIiIH0KKwl9CisKKwkjIFRoaXMgZG9lc24ndCB0ZXN0 IHRoYXQgbWFpbiBpcyBmcmFtZSAjMiwganVzdCB0aGF0IG1haW4gaXMgZnJh bWUKKwkjICMyLCAjMywgb3IgaGlnaGVyLiAgQXQgc29tZSBwb2ludCB0aGlz IHNob3VsZCBiZSBmaXhlZCAoYnV0CisJIyBpdCBxdWl0ZSBwb3NzaWJseSB3 b3VsZCBpbnRyb2R1Y2UgbmV3IEZBSUxzIG9uIHNvbWUgc3lzdGVtcykuCisJ c2V0dXBfeGZhaWwgImkqODYtcGMtbGludXgtZ251IiAiaSo4Ni0qLWJzZGky LjAiCisJZ2RiX3Rlc3QgImJhY2t0cmFjZSIgIiMwLipoYW5kbGVyMi4qIzEu KiMyLiptYWluLioiIFwKKwkgICAgImJhY2t0cmFjZSBmcm9tIGNvbXB1dGlu ZyBpbiBzaWduYWxzX3Rlc3RzXzEiCisKKwlnZGJfdGVzdCAiY29udGludWUi ICJCcmVha3BvaW50LipoYW5kbGVyMi4qIiAgXAorCSAgICAiY29udGludWUg dG8gaGFuZGxlcjIgd2hpbGUgcGF1c2UoKWQiCisKKwkjIFRoaXMgZG9lc24n dCB0ZXN0IHRoYXQgbWFpbiBpcyBmcmFtZSAjMiwganVzdCB0aGF0IG1haW4g aXMgZnJhbWUKKwkjICMyLCAjMywgb3IgaGlnaGVyLiAgQXQgc29tZSBwb2lu dCB0aGlzIHNob3VsZCBiZSBmaXhlZCAoYnV0CisJIyBpdCBxdWl0ZSBwb3Nz aWJseSB3b3VsZCBpbnRyb2R1Y2UgbmV3IEZBSUxzIG9uIHNvbWUgc3lzdGVt cykuCisJc2V0dXBfeGZhaWwgImkqODYtcGMtbGludXgtZ251IiAiaSo4Ni0q LWJzZGkyLjAiCisJZ2RiX3Rlc3QgImJhY2t0cmFjZSIgIiMwLipoYW5kbGVy Mi4qIzEuKiMyLiptYWluLioiIFwKKwkgICAgIkFMQVJNOiBiYWNrdHJhY2Ug ZnJvbSBwYXVzZSgpIGluIHNpZ25hbHNfdGVzdHNfMSIKKworCSMgTm93IHRl c3Qga2V5Ym9hcmQgaW50ZXJydXB0cworCSMgZW50ZXIgYSBjb21wdXRlIGJv dW5kIGxvb3AKKwlzZW5kX2dkYiAiY29udGludWVcbiIKKwlzbGVlcCAyCisK KwkjIGludGVycnVwdCBpdC4KKwlzZW5kX2dkYiAiXDAwMyIKKwlnZGJfZXhw ZWN0IHsKKwkgICAgLXJlICIuKlByb2dyYW0gcmVjZWl2ZWQgc2lnbmFsIFNJ R0lOVCwgSW50ZXJydXB0LiokZ2RiX3Byb21wdCAkIiB7CisJICAgICAgIHBh c3MgIkludGVycnVwdCB3aGlsZSBjb21wdXRpbmciCisJICAgIH0KKwkgICAg ZGVmYXVsdCB7IGZhaWwgIkludGVycnVwdCB3aGlsZSBjb21wdXRpbmciIH0K Kwl9CisKKwkjIFRoaXMgdGVzdCBjb3VsZCBmYWlsIG9uIGEgYmxpbmRpbmds eSBmYXN0IG1hY2hpbmUsIG9yIG9uZQorCSMgd2l0aCBkZWZhdWx0IG9wdGlt aXphdGlvbnMgdGhhdCByZW1vdmUgbnVsbCBsb29wcy4gIEFkanVzdAorCSMg c2lnbmFscy5jIGFjY29yZGluZ2x5IHRvIG1ha2UgdGhlIGxvb3AgYWN0dWFs bHkgbG9vcCBsb25nIGVub3VnaC4KKworCSMgVGhpcyBkb2Vzbid0IHRlc3Qg dGhhdCBtYWluIGlzIGZyYW1lICMwLCBqdXN0IHRoYXQgbWFpbiBpcyAKKwkj IG9uIHRoZSBzdGFjayBhdCBhbGwuCisJc2V0dXBfeGZhaWwgImkqODYtcGMt bGludXgtZ251IiAiaSo4Ni0qLWJzZGkyLjAiCisJZ2RiX3Rlc3QgImJhY2t0 cmFjZSIgIi4qIzAuKm1haW4uKiIgXAorCSAgICAiYmFja3RyYWNlICMxIGZy b20gU0lHSU5UIHdoaWxlIGNvbXB1dGluZyBpbiBzaWduYWxzX3Rlc3RzXzEi CisKKwlnZGJfdGVzdCAic2lnbmFsIFNJR0lOVCIgIkJyZWFrcG9pbnQuKmhh bmRsZXIyLioiICBcCisJICAgICJzaWduYWwgU0lHSU5UIGludG8gaGFuZGxl cjIgYWZ0ZXIgU0lHSU5UIG9mIGNvbXB1dGluZy4iCisKKwkjIFRoaXMgZG9l c24ndCB0ZXN0IHRoYXQgbWFpbiBpcyBmcmFtZSAjMiwganVzdCB0aGF0IG1h aW4gaXMgZnJhbWUKKwkjICMyLCAjMywgb3IgaGlnaGVyLiAgQXQgc29tZSBw b2ludCB0aGlzIHNob3VsZCBiZSBmaXhlZCAoYnV0CisJIyBpdCBxdWl0ZSBw b3NzaWJseSB3b3VsZCBpbnRyb2R1Y2UgbmV3IEZBSUxzIG9uIHNvbWUgc3lz dGVtcykuCisJc2V0dXBfeGZhaWwgImkqODYtcGMtbGludXgtZ251IiAiaSo4 Ni0qLWJzZGkyLjAiCisJZ2RiX3Rlc3QgImJhY2t0cmFjZSIgIiMwLipoYW5k bGVyMi4qIzEuKiMyLiptYWluLioiIFwKKwkgICAgIklOVDogYmFja3RyYWNl IGZyb20gY29tcHV0ZSBpbiBzaWduYWxzX3Rlc3RzXzEiCisKKwkjIGVudGVy IGEgcGF1c2UoKSBjYWxsCisJc2VuZF9nZGIgImNvbnRpbnVlXG4iCisJc2xl ZXAgMgorCisJIyBpbnRlcnJ1cHQgaXQuCisJc2VuZF9nZGIgIlwwMDMiCisJ Z2RiX2V4cGVjdCB7CisJICAgIC1yZSAiLipQcm9ncmFtIHJlY2VpdmVkIHNp Z25hbCBTSUdJTlQsIEludGVycnVwdC4qJGdkYl9wcm9tcHQgJCIgeworCSAg ICAgICBwYXNzICJJbnRlcnJ1cHQgd2hpbGUgcGF1c2UoKWQiCisJICAgIH0K KwkgICAgZGVmYXVsdCB7IGZhaWwgIkludGVycnVwdCB3aGlsZSBwYXVzZSgp ZCIgfQorCX0KKworCSMgVGhpcyBkb2Vzbid0IHRlc3QgdGhhdCBtYWluIGlz IGZyYW1lICMwLCBqdXN0IHRoYXQgbWFpbiBpcyAKKwkjIG9uIHRoZSBzdGFj ayBhdCBhbGwuCisJc2V0dXBfeGZhaWwgImkqODYtcGMtbGludXgtZ251IiAi aSo4Ni0qLWJzZGkyLjAiCisJZ2RiX3Rlc3QgImJhY2t0cmFjZSIgIi4qIzAu Km1haW4uKiIgXAorCSAgICAiYmFja3RyYWNlICMyIGZyb20gU0lHSU5UIHdo aWxlIGNvbXB1dGluZyBpbiBzaWduYWxzX3Rlc3RzXzEiCisKKwlnZGJfdGVz dCAic2lnbmFsIFNJR0lOVCIgIkJyZWFrcG9pbnQuKmhhbmRsZXIyLioiICBc CisJICAgICJzaWduYWwgU0lHSU5UIGludG8gaGFuZGxlcjIgYWZ0ZXIgU0lH SU5UIG9mIHBhdXNlKCkuIgorCisJIyBUaGlzIGRvZXNuJ3QgdGVzdCB0aGF0 IG1haW4gaXMgZnJhbWUgIzIsIGp1c3QgdGhhdCBtYWluIGlzIGZyYW1lCisJ IyAjMiwgIzMsIG9yIGhpZ2hlci4gIEF0IHNvbWUgcG9pbnQgdGhpcyBzaG91 bGQgYmUgZml4ZWQgKGJ1dAorCSMgaXQgcXVpdGUgcG9zc2libHkgd291bGQg aW50cm9kdWNlIG5ldyBGQUlMcyBvbiBzb21lIHN5c3RlbXMpLgorCXNldHVw X3hmYWlsICJpKjg2LXBjLWxpbnV4LWdudSIgImkqODYtKi1ic2RpMi4wIgor CWdkYl90ZXN0ICJiYWNrdHJhY2UiICIjMC4qaGFuZGxlcjIuKiMxLiojMi4q bWFpbi4qIiBcCisJICAgICJiYWNrdHJhY2UgZnJvbSBwYXVzZSgpIGluIHNp Z25hbHNfdGVzdHNfMSIKKwogCWdkYl90ZXN0ICJjb250aW51ZSIgIlByb2dy YW0gZXhpdGVkIHdpdGggY29kZSAwMTBcXC4iIFwKIAkgICAgImNvbnRpbnVl IHRvIGV4aXQgaW4gc2lnbmFsc190ZXN0c18xICIKICAgICB9CkBAIC00Mzcs NiArNTQwLDE1IEBAIFRoZSBwcm9ncmFtIGJlaW5nIGRlYnVnZ2VkIHN0b3Bw ZWQgd2hpbGUKICAgICAjIEJ1dCB3ZSBzaG91bGQgYmUgYWJsZSB0byBiYWNr dHJhY2UuLi4KICAgICAjIE9uIGFscGhhLSotb3NmMi4wIHRoaXMgdGVzdCB3 b3JrcyB3aGVuIHJ1biBtYW51YWxseSBidXQgc29tZXRpbWUgZmFpbHMgd2hl bgogICAgICMgcnVuIHVuZGVyIGRlamFnbnUsIG1ha2luZyBpdCB2ZXJ5IGhh cmQgdG8gZGVidWcgdGhlIHByb2JsZW0uICBXZWlyZC4uLgorICAgICMKKyAg ICAjIFBhcnQgb2YgdGhlIHByb2JsZW0gaXMgdGhhdCB3ZSBjYW4gZW5kIHVw IGhhdmluZyBub3QgY29tcGxldGVkIHRoZQorICAgICMgcHJvbG9nIG9mIGZ1 bmMxLCB0aHVzIGNhdXNpbmcgdW53aW5kIHRvIHF1aXQvZmFpbC4gIFRoaXMg d2lsbCBvY2N1cgorICAgICMgd2hlbiB0aGUgc2lnbmFsIGlzIGRlbGl2ZXJl ZCBkdXJpbmcgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgZmlyc3QKKyAgICAjIGlu c3RydWN0aW9uIG9mIGZ1bmMxLgorICAgICMKKyAgICAjIFRoZSBhYm92ZSBm YWlsdXJlIG1vZGUgaXMgcHJldHR5IG11Y2ggZ3VhcmFudGVlZCBvbiBhbHBo YS1wYy1pbnRlcml4LAorICAgICMgYW5kIHNlZW1zIGFuIHVuYXZvaWRhYmxl IGNvcm5lciBjYXNlLgorICAgICMKICAgICBnZGJfdGVzdCAiYnQgMTAiICIj MC4qaGFuZGxlci4qIzEuKiMyLiptYWluLioiICJidCBpbiBzaWduYWxzLmV4 cCIKICAgICAjIC4uLmFuZCBjb250aW51ZS4uLgogICAgIGdkYl90ZXN0ICJj b250aW51ZSIgIkNvbnRpbnVpbmdcXC4iICJjb250aW51ZSBpbiBzaWduYWxz LmV4cCIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpGcmkgRGVj ICAzIDEwOjA3OjIwIFBTVCAxOTk5ICBEb25uIFRlcnJ5IDxkb25udGVAbWlj cm9zb2Z0LmNvbT4KCSogZ2RiLmJhc2UvY29tbWFuZHMuZXhwOiBMaW5lIG51 bWJlciBjaGFuZ2VkIGluIHNvdXJjZSBmaWxlLgoJKiBnZGIuYmFzZS9lbmRp bmctcnVuLmV4cDogQWxsb3cgY2FwIFMgaW4gZW50cnkgcG9pbnQgbmFtZS4K CSogZ2RiLmJhc2Uvc3RlcC10ZXN0LmV4cDogU3RlcCBhIGNvdXBsZSBvZiB0 aW1lcyB0byBhdm9pZCBwcm9sb2d1ZSwKCgpJbmRleDogc3JjL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvY29tbWFuZHMuZXhwCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KUkNTIGZpbGU6IC9kZXYvZnMvSC9ydXBwL2RldmVsLWxvY2FsLXJl cG9zaXRvcnkvc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvY29tbWFuZHMu ZXhwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEuMS4xCmRpZmYgLXAgLXUg LXIxLjEuMS4xIGNvbW1hbmRzLmV4cAotLS0gc3JjL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvY29tbWFuZHMuZXhwCTIwMDEvMTIvMjMgMDA6MzU6MTYJMS4x LjEuMQorKysgc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvY29tbWFuZHMu ZXhwCTIwMDEvMTIvMjQgMDI6NDI6NDAKQEAgLTMzMSw3ICszMzEsNyBAQCBw cm9jIHdhdGNocG9pbnRfY29tbWFuZF90ZXN0IHt9IHsKICAgICB9CiAgICAg c2VuZF9nZGIgImNvbnRpbnVlXG4iCiAgICAgZ2RiX2V4cGVjdCB7Ci0JLXJl ICJDb250aW51aW5nLipcW1d3XF1hdGNocG9pbnQgJHdwX2lkIGRlbGV0ZWQg YmVjYXVzZSB0aGUgcHJvZ3JhbSBoYXMgbGVmdCB0aGUgYmxvY2sgaW4uKndo aWNoIGl0cyBleHByZXNzaW9uIGlzIHZhbGlkLipydW4uYzo1Ny4qJGdkYl9w cm9tcHQgJCIgeworCS1yZSAiQ29udGludWluZy4qXFtXd1xdYXRjaHBvaW50 ICR3cF9pZCBkZWxldGVkIGJlY2F1c2UgdGhlIHByb2dyYW0gaGFzIGxlZnQg dGhlIGJsb2NrIGluLip3aGljaCBpdHMgZXhwcmVzc2lvbiBpcyB2YWxpZC4q cnVuLmM6ODIuKiRnZGJfcHJvbXB0ICQiIHsKIAkgICAgcGFzcyAiY29udGlu dWUgd2l0aCB3YXRjaCIKIAl9CiAJLXJlICIkZ2RiX3Byb21wdCAkIiAgIHtm YWlsICJjb250aW51ZSB3aXRoIHdhdGNoIn0KSW5kZXg6IHNyYy9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL2VuZGluZy1ydW4uZXhwCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KUkNTIGZpbGU6IC9kZXYvZnMvSC9ydXBwL2RldmVsLWxvY2Fs LXJlcG9zaXRvcnkvc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZW5kaW5n LXJ1bi5leHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4xLjEKZGlmZiAt cCAtdSAtcjEuMS4xLjEgZW5kaW5nLXJ1bi5leHAKLS0tIHNyYy9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL2VuZGluZy1ydW4uZXhwCTIwMDEvMTIvMjMgMDA6 MzU6MTYJMS4xLjEuMQorKysgc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv ZW5kaW5nLXJ1bi5leHAJMjAwMS8xMi8yNCAwMjo0Mjo0MApAQCAtMTUxLDcg KzE1MSw3IEBAIGdkYl9leHBlY3QgewogCQlmYWlsICJPbGQgYnVnIGNhbWUg YmFjayEiCiAJCWdkYl90ZXN0ICJuIiAiLioiICIiCiAJICAgIH0KLQkgICAg LXJlICIuKmluLipzdGFydC4qJGdkYl9wcm9tcHQgJCIgeyAKKwkgICAgLXJl ICIuKmluLipcW1NzXF10YXJ0LiokZ2RiX3Byb21wdCAkIiB7IAogCQlwYXNz ICJzdGVwIG91dCBvZiBtYWluIgogCSAgICB9CiAJICAgIC1yZSAiLippbi4q YnNwX3RyYXAuKiRnZGJfcHJvbXB0ICQiIHsgCkluZGV4OiBzcmMvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9zdGVwLXRlc3QuZXhwCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KUkNTIGZpbGU6IC9kZXYvZnMvSC9ydXBwL2RldmVsLWxvY2Fs LXJlcG9zaXRvcnkvc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc3RlcC10 ZXN0LmV4cCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xLjEuMQpkaWZmIC1w IC11IC1yMS4xLjEuMSBzdGVwLXRlc3QuZXhwCi0tLSBzcmMvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9zdGVwLXRlc3QuZXhwCTIwMDEvMTIvMjMgMDA6MzU6 MTkJMS4xLjEuMQorKysgc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc3Rl cC10ZXN0LmV4cAkyMDAxLzEyLzI0IDAyOjQyOjQwCkBAIC0xNjcsNyArMTY3 LDcgQEAgZ2RiX2V4cGVjdCB7CiAgICAgICBmYWlsICJDYW4ndCBydW4gdG8g bGluZSA0NSIKICAgICAgIHJldHVybiAwCiAgICAgfQotICAgIGZhaWwgInN0 ZXBpOiBmaW5pc2ggY2FsbCIKKyAgICBmYWlsICJzdGVwaTogZmluaXNoIGNh bGwgKHVuZXhwZWN0ZWQgZXhpdCkiCiAgIH0KICAgLXJlICIuKiR7ZGVjaW1h bH0uKmNhbGxlZS4qTkVYVEkuKiRnZGJfcHJvbXB0ICQiIHsKICAgICBwYXNz ICJzdGVwaTogZmluaXNoIGNhbGwiCkBAIC0xODUsNyArMTg1LDcgQEAgZ2Ri X2V4cGVjdCB7CiAgIH0KICAgLXJlICIkZ2RiX3Byb21wdCAkIiB7CiAgICAg IyBXZSBnb3Qgc29tZXRoaW5nIGVsc2UuICBGYWlsLgotICAgIGZhaWwgInN0 ZXBpOiBmaW5pc2ggY2FsbCIKKyAgICBmYWlsICJzdGVwaTogZmluaXNoIGNh bGwgKHVuZXhwZWN0ZWQgcmVzdWx0KSIKICAgICByZXR1cm4KICAgfQogICB0 aW1lb3V0IHsKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCk9uIHNv bWUgc3lzdGVtcywgbWFsbG9jIGlzIGEgd2VhayBzeW1ib2wsIGFuZCBpZiB0 aGUgYXBwbGljYXRpb24KZG9lc24ndCBhY3R1YWxseSBjYWxsIHNvbWV0aGlu ZyB0aGF0IHVzZXMgbWFsbG9jIGJ5IHRoYXQgbmFtZSwgdGhlCmNhbGwtZnJv bS1rZXlib2FyZCBzdHVmZiB3aWxsIGZhaWwuICBIb3dldmVyLCBpZiB3ZSBp bmZvcm0gZ2RiIG9mCnRoZSBzdHJvbmcgKGFuZCBoaWRkZW4pIG5hbWUgb2Yg bWFsbG9jICh0aGF0IHVzdWFsbHkgd2lsbCBiZSBwcmVzZW50KQp3ZSBpbmNy ZWFzZSB0aGUgb2RkcyBvZiBjYWxsIGZyb20ga2V5Ym9hcmQgImp1c3Qgd29y a2luZyIuCgpDaGFuZ2VMb2cKCSogZGVmcy5oIChOQU1FX09GX01BTExPQyk6 IGRlZmluZSBhIGRlZmF1bHQuCgkqIHZhbG9wcy5jICh2YWx1ZV9hbGxvY2F0 ZV9zcGFjZV9pbl9pbmZlcmlvcik6IHVzZSBpdC4KCSogdG0taTM4NmludGVy aXguaCAoTkFNRV9PRl9NQUxMT0MpOiBkZWZpbmUgc3BlY2lmaWMgdmFsdWUu CgkKCkluZGV4OiBzcmMvZ2RiL2RlZnMuaAo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09ClJDUyBmaWxlOiAvZGV2L2ZzL0gvcnVwcC9kZXZlbC1sb2NhbC1yZXBv c2l0b3J5L3NyYy9nZGIvZGVmcy5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAx LjMKZGlmZiAtcCAtdSAtcjEuMyBkZWZzLmgKLS0tIHNyYy9nZGIvZGVmcy5o CTIwMDEvMTIvMjQgMDI6MDk6NTEJMS4zCisrKyBzcmMvZ2RiL2RlZnMuaAky MDAxLzEyLzI0IDAyOjQ0OjMzCkBAIC05ODcsNiArOTg3LDEwIEBAIHR5cGVk ZWYgc3RydWN0IHB0aWQgcHRpZF90OwogCiAjZGVmaW5lIENPTlNUX1BUUiBj b25zdAogCisjaWZuZGVmIE5BTUVfT0ZfTUFMTE9DCisjZGVmaW5lIE5BTUVf T0ZfTUFMTE9DICJtYWxsb2MiCisjZW5kaWYKKwogLyogRGVmYXVsdHMgZm9y IHN5c3RlbS13aWRlIGNvbnN0YW50cyAoaWYgbm90IGRlZmluZWQgYnkgeG0u aCwgd2UgZmFrZSBpdCkuCiAgICBGSVhNRTogQXNzdW1lcyAyJ3MgY29tcGxl bWVudCBhcml0aG1ldGljICovCiAKSW5kZXg6IHNyYy9nZGIvdmFsb3BzLmMK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2Rldi9mcy9IL3J1 cHAvZGV2ZWwtbG9jYWwtcmVwb3NpdG9yeS9zcmMvZ2RiL3ZhbG9wcy5jLHYK cmV0cmlldmluZyByZXZpc2lvbiAxLjQKZGlmZiAtcCAtdSAtcjEuNCB2YWxv cHMuYwotLS0gc3JjL2dkYi92YWxvcHMuYwkyMDAxLzEyLzI0IDAyOjEyOjE5 CTEuNAorKysgc3JjL2dkYi92YWxvcHMuYwkyMDAxLzEyLzI0IDAyOjQ0OjM0 CkBAIC0xMzYsNyArMTM2LDcgQEAgc3RydWN0IHZhbHVlICoKIHZhbHVlX2Fs bG9jYXRlX3NwYWNlX2luX2luZmVyaW9yIChpbnQgbGVuKQogewogICBzdHJ1 Y3QgdmFsdWUgKmJsb2NrbGVuOwotICBzdHJ1Y3QgdmFsdWUgKnZhbCA9IGZp bmRfZnVuY3Rpb25faW5faW5mZXJpb3IgKCJtYWxsb2MiKTsKKyAgc3RydWN0 IHZhbHVlICp2YWwgPSBmaW5kX2Z1bmN0aW9uX2luX2luZmVyaW9yIChOQU1F X09GX01BTExPQyk7CiAKICAgYmxvY2tsZW4gPSB2YWx1ZV9mcm9tX2xvbmdl c3QgKGJ1aWx0aW5fdHlwZV9pbnQsIChMT05HRVNUKSBsZW4pOwogICB2YWwg PSBjYWxsX2Z1bmN0aW9uX2J5X2hhbmQgKHZhbCwgMSwgJmJsb2NrbGVuKTsK SW5kZXg6IHNyYy9nZGIvY29uZmlnL2kzODYvdG0taTM4NmludGVyaXguaAo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvZGV2L2ZzL0gvcnVw cC9kZXZlbC1sb2NhbC1yZXBvc2l0b3J5L3NyYy9nZGIvY29uZmlnL2kzODYv dG0taTM4NmludGVyaXguaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xCmRp ZmYgLXAgLXUgLXIxLjEgdG0taTM4NmludGVyaXguaAotLS0gc3JjL2dkYi9j b25maWcvaTM4Ni90bS1pMzg2aW50ZXJpeC5oCTIwMDEvMTIvMjMgMjA6NDY6 MjMJMS4xCisrKyBzcmMvZ2RiL2NvbmZpZy9pMzg2L3RtLWkzODZpbnRlcml4 LmgJMjAwMS8xMi8yNCAwMjo0NDozNApAQCAtMTE2LDQgKzExNiw2IEBAIGdl dF9sb25nam1wX3RhcmdldCBQQVJBTVMgKChDT1JFX0FERFIgKikKIAogI2Rl ZmluZSBHRVRfTE9OR0pNUF9UQVJHRVQoQUREUikgZ2V0X2xvbmdqbXBfdGFy Z2V0KEFERFIpCiAKKyNkZWZpbmUgTkFNRV9PRl9NQUxMT0MgIl9tYWxsb2Mi CisKICNlbmRpZiAvKiBUTV9JTlRFUklYX0ggKi8KLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tClRoZSBhc3NlbWJsZXIgZGVidWcgdGVzdHMgbWFr ZSBhIGxvdCBvZiBhc3N1bXB0aW9ucyB0aGF0IGFyZSBmYWxzZQphdCBsZWFz dCBzb21lIG9mIHRoZSB0aW1lLiAgTWFrZSB0aGUgYXNzdW1wdGlvbnMgZXhw bGljaXQgYnVpbGQgcmVxdWlyZW1lbnRzCmFuZCBtb3JlIG1hY2hpbmVzIGNh biBwYXNzLgoKVGhlIGltYmVkZGVkIGNvbW1lbnQgZ2l2ZXMgdGhlIGRldGFp bHMuCgpBbHNvLCBhZGQgYSBjb21tZW50IHRvIGRieHJlYWQuYyByZXNvbHZp bmcgYW4gdW5rbm93biByZWxhdGVkIHRvIHRoaXMuCgoKCmRpZmYgLWRydXBQ IC0tZXhjbHVkZS1mcm9tPS9kZXYvZnMvTS9kb25uL2RpZmZzL2V4Y2x1ZGUu ZmlsZXMgL0MvQ1ZTL2JpbnV0aWxzLmJhc2VsaW5lL3NyYy9nZGIvdGVzdHN1 aXRlL2dkYi5hc20vTWFrZWZpbGUuaW4gdGVzdHN1aXRlL2dkYi5hc20vTWFr ZWZpbGUuaW4KLS0tIC9DL0NWUy9iaW51dGlscy5iYXNlbGluZS9zcmMvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYXNtL01ha2VmaWxlLmluCVRodSBBcHIgMTUgMTg6 MzQ6MjkgMTk5OQorKysgdGVzdHN1aXRlL2dkYi5hc20vTWFrZWZpbGUuaW4J VHVlIE1hciAxMiAyMjoxMzo0MiAyMDAyCkBAIC0yNSw3ICsyNSw3IEBAIGNs ZWFuIG1vc3RseWNsZWFuOgogZGlzdGNsZWFuIG1haW50YWluZXItY2xlYW4g cmVhbGNsZWFuOiBjbGVhbgogCS1ybSAtZiAqfiBjb3JlCiAJLXJtIC1mIE1h a2VmaWxlIGNvbmZpZy5zdGF0dXMgY29uZmlnLmxvZwotCS1ybSAtZiBhcmNo LmluYworCS1ybSAtZiBhcmNoLmluYyBvYmplY3QuaW5jCiAJLXJtIC1mICot aW5pdC5leHAKIAktcm0gLWZyICoubG9nIHN1bW1hcnkgZGV0YWlsICoucGxv ZyAqLnN1bSAqLnBzdW0gc2l0ZS4qCiAKZGlmZiAtZHJ1cFAgLS1leGNsdWRl LWZyb209L2Rldi9mcy9NL2Rvbm4vZGlmZnMvZXhjbHVkZS5maWxlcyAvQy9D VlMvYmludXRpbHMuYmFzZWxpbmUvc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmFz bS9hc20tc291cmNlLmV4cCB0ZXN0c3VpdGUvZ2RiLmFzbS9hc20tc291cmNl LmV4cAotLS0gL0MvQ1ZTL2JpbnV0aWxzLmJhc2VsaW5lL3NyYy9nZGIvdGVz dHN1aXRlL2dkYi5hc20vYXNtLXNvdXJjZS5leHAJV2VkIEZlYiAyNyAxMzow NTo1MCAyMDAyCisrKyB0ZXN0c3VpdGUvZ2RiLmFzbS9hc20tc291cmNlLmV4 cAlUdWUgTWFyIDEyIDIyOjEzOjQyIDIwMDIKQEAgLTI3LDcgKzI3LDMyIEBA IGlmICR0cmFjZWxldmVsIHRoZW4gewogIyBUZXN0IGRlYnVnZ2luZyBhc3Nl bWJseSBsZXZlbCBwcm9ncmFtcy4KICMgVGhpcyBmaWxlIHVzZXMgYXNtc3Jj WzEyXS5zIGZvciBpbnB1dC4KICMKLQorIyBTb21lIGNvbW1lbnRzIG9uICJj b3JuZXIgY2FzZXMiOiBPbiBzb21lIHN5c3RlbXMgaXQncyBub3QgcG9zc2li bGUgdG8KKyMgbGluayBhbiBhcHBsaWNhdGlvbiB3aXRob3V0IGJvdGggY3J0 MC5vIGFuZCB0aGUgZGVmYXVsdCBsaWJjLCBiZWNhdXNlCisjIHRoZXkgbXV0 dWFsbHkgcmVmZXIuICBGb3IgdGhpcyB0ZXN0IHRvIHdvcmssIGl0IG11c3Qg ZWl0aGVyIHVzZSBjcnQwIGFuZCBsaWJjCisjIG9yIHN0YW5kIGNvbXBsZXRl bHkgYWxvbmUuICBTaW5jZSB0aGVyZSBhcmUgZ29vZCByZWFzb25zIG5vdCB0 byB1c2UgY3J0MCwKKyMgaXQgbmVlZHMgdG8gc3RhbmQgY29tcGxldGVseSBh bG9uZS4gIFNpbmNlIHRoZSBzdGFicyBlbnRyaWVzIGdlbmVyYXRlZAorIyBi eSB0aGUgYXNzZW1ibGVyIGFyZSBtb3N0bHkgU0xJTkUgZW50cmllcyAobm8g ZnVuY3Rpb25zIG9yIGJsb2NrcyksIHRoZXJlJ3MKKyMgbm90aGluZyBidXQg dGhlICJuZXh0IiBTTyBlbnRyeSB0byB0ZXJtaW5hdGUgdGhlIGJsb2NrcyAo YW5kIHRodXMgZ2VuZXJhdGUKKyMgcGFydGlhbCBzeW10YWJzIHdpdGggYSBw cm9wZXIgZW5kIHZhbHVlKS4gIFRoYXQgaGFwcGVucyAiYWNjaWRlbnRhbGx5 IgorIyBpZiBsaW5raW5nIHdpdGggbW9yZSBjb21wbGV0ZSBsaWJyYXJpZXMs IGJ1dCBub3QgaW4gdGhpcyBjYXNlLiAgKFRoaXMKKyMgd291bGQgYWxzbyBu b3QgYmUgYSBwcm9ibGVtIGlmIEZVTiBlbnRyaWVzIHdlcmUgZ2VuZXJhdGVk LikgVG8gY2F1c2UKKyMgdGhlIGluc2VydGlvbiBvZiBhICJuZXh0IiBTTyBl bnRyeSBmb2xsd2luZyBhc21zcmMyLm8sIHdlIHVzZSB0aGUgKG5lYXJseSkK KyMgZW1wdHkgYXNtc3JjNC5vLiAoUmVmOiByZWFkX2RieF9zeW10YWIuKQor IworIyBBZGRpdGlvbmFsbHksIHRoZSBzdGFjayB1bndpbmRlciBsb2dpYyAo YXQgbGVhc3QgZm9yIENPRkYpIGxvb2tzIHRvIHNlZQorIyBpZiB0aGUgUEMg aXMgaW4gdGhlICJlbnRyeSBmaWxlIi4gIFB1dHRpbmcgX3N0YXJ0ICh3aGlj aCBpZGVudGlmaWVzCisjIHRoZSBlbnRyeSBmaWxlKSBpbiB0aGUgc2FtZSBm aWxlIGFzIG1haW4gY29uZnVzZXMgdGhlIHVud2luZGVyLCBhbmQgaXQKKyMg b21pdHMgdW53aW5kaW5nIG1haW4gYXMgd2VsbCwgY2F1c2luZyB0ZXN0IGZh aWx1cmVzLiAgVGh1cywgYXNtc3JjMy5zCisjIGNvbnRhaW5zIF9zdGFydCAo YWxvbmUpLgorIworIyBOb3QgYWxsIHN5c3RlbXMgaGF2ZSB0aGVpciBkZWZh dWx0IGVudHJ5IHBvaW50IGFzIF9zdGFydCwgc28gd2Ugc2V0IGl0LgorIwor IyBFdmVyeXRoaW5nIGFwcGVhcnMgdG8gd29yayBjb3JyZWN0bHkgZm9yICJs ZWFkaW5nIHVuZGVyc2NvcmUiIG1hY2hpbmVzLAorIyBidXQgdGhlcmUgaXMg c29tZSByaXNrIHRoYXQgaXQgbWlnaHQgbm90IHVuZGVyIHNvbWUgY2lyY3Vt c3RhbmNlczsgaWYKKyMgdGhpcyB0ZXN0IGlzIGZhaWxpbmcgYnkgbm90IGZp bmRpbmcgc3ltYm9scywgbG9vayBmb3IgdGhhdC4KKyMKKwogc2V0IHBybXNf aWQgMAogc2V0IGJ1Z19pZCAwCiAKQEAgLTQ3LDYgKzcyLDEwIEBAIGlmIFtp c3RhcmdldCAiZDEwdi0qLSoiXSB0aGVuIHsKIGlmIFtpc3RhcmdldCAiczM5 MC0qLSoiXSB0aGVuIHsKICAgICBzZXQgYXNtLWFyY2ggczM5MAogfQoraWYg W2lzdGFyZ2V0ICJpMzg2LSotaW50ZXJpeCoiXSB0aGVuIHsKKyAgICBzZXQg YXNtLWFyY2ggaTM4NgorICAgIHNldCBhc20tb2JqIGNvZmYKK30KIGlmIFtp c3RhcmdldCAiaVxbMzQ1NlxdODYtKi0qIl0gdGhlbiB7CiAgICAgc2V0IGFz bS1hcmNoIGkzODYKIH0KQEAgLTk0LDEwICsxMjMsMTUgQEAgc2V0IHRlc3Rm aWxlICJhc20tc291cmNlIgogc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3Vi ZGlyfS8ke3Rlc3RmaWxlfQogc2V0IHNyYzEgJHtzcmNkaXJ9LyR7c3ViZGly fS9hc21zcmMxLnMKIHNldCBzcmMyICR7c3JjZGlyfS8ke3N1YmRpcn0vYXNt c3JjMi5zCi0KK3NldCBzcmMzICR7c3JjZGlyfS8ke3N1YmRpcn0vYXNtc3Jj My5zCitzZXQgc3JjNCAke3NyY2Rpcn0vJHtzdWJkaXJ9L2FzbXNyYzQucwor CiByZW1vdGVfZXhlYyBidWlsZCAicm0gLWYgJHtzdWJkaXJ9L2FyY2guaW5j IgogcmVtb3RlX2Rvd25sb2FkIGhvc3QgJHtzcmNkaXJ9LyR7c3ViZGlyfS8k e2FzbS1hcmNofS5pbmMgJHtzdWJkaXJ9L2FyY2guaW5jCiAKK3JlbW90ZV9l eGVjIGJ1aWxkICJybSAtZiAke3N1YmRpcn0vb2JqZWN0LmluYyIKK3JlbW90 ZV9kb3dubG9hZCBob3N0ICR7c3JjZGlyfS8ke3N1YmRpcn0vJHthc20tb2Jq fS5pbmMgJHtzdWJkaXJ9L29iamVjdC5pbmMKKwogaWYgeyAiJHthc20tZmxh Z3N9IiA9PSAiIiB9IHsKICAgICAjc2V0IGFzbS1mbGFncyAiLVdhLC1nc3Rh YnMsLUkke3NyY2Rpcn0vJHtzdWJkaXJ9LC1JJHtvYmpkaXJ9LyR7c3ViZGly fSIKICAgICBzZXQgYXNtLWZsYWdzICItZ3N0YWJzIC1JJHtzcmNkaXJ9LyR7 c3ViZGlyfSAtSSR7b2JqZGlyfS8ke3N1YmRpcn0iCkBAIC0xMDksMTggKzE0 MywyNyBAQCBpZiB7W3RhcmdldF9hc3NlbWJsZSAke3NyYzF9IGFzbXNyYzEu byAiCiBpZiB7W3RhcmdldF9hc3NlbWJsZSAke3NyYzJ9IGFzbXNyYzIubyAi JHthc20tZmxhZ3N9Il0gIT0gIiJ9IHRoZW4gewogICAgICBnZGJfc3VwcHJl c3NfZW50aXJlX2ZpbGUgIlRlc3RjYXNlIGNvbXBpbGUgZmFpbGVkLCBzbyBh bGwgdGVzdHMgaW4gdGhpcyBmaWxlIHdpbGwgYXV0b21hdGljYWxseSBmYWls LiIKIH0KK2lmIHtbdGFyZ2V0X2Fzc2VtYmxlICR7c3JjM30gYXNtc3JjMy5v ICIke2FzbS1mbGFnc30iXSAhPSAiIn0gdGhlbiB7CisgICAgIGdkYl9zdXBw cmVzc19lbnRpcmVfZmlsZSAiVGVzdGNhc2UgY29tcGlsZSBmYWlsZWQsIHNv IGFsbCB0ZXN0cyBpbiB0aGlzIGZpbGUgd2lsbCBhdXRvbWF0aWNhbGx5IGZh aWwuIgorfQoraWYge1t0YXJnZXRfYXNzZW1ibGUgJHtzcmM0fSBhc21zcmM0 Lm8gIiR7YXNtLWZsYWdzfSJdICE9ICIifSB0aGVuIHsKKyAgICAgZ2RiX3N1 cHByZXNzX2VudGlyZV9maWxlICJUZXN0Y2FzZSBjb21waWxlIGZhaWxlZCwg c28gYWxsIHRlc3RzIGluIHRoaXMgZmlsZSB3aWxsIGF1dG9tYXRpY2FsbHkg ZmFpbC4iCit9CiAKLXNldCBvcHRzICJkZWJ1ZyBsZGZsYWdzPS1ub3N0YXJ0 ZmlsZXMiCisjIFNvbWUgc2hhcmVkIGxpYnMgd29uJ3Qgc3RhbmQgYWxvbmUg KHdpdGhvdXQgdGhlIHN0YXJ0dXAgZmlsZSksIHNvIGJlIHN1cmUKKyMgaXQn cyBzdGF0aWMuICBBbmQgbm90IGFsbCBzeXN0ZW1zIHN0YXJ0IGF0IF9zdGFy dC4KKworc2V0IG9wdHMgImRlYnVnIGxkZmxhZ3M9LW5vc3RhcnRmaWxlcyBs ZGZsYWdzPS1ub3N0ZGxpYiBsZGZsYWdzPS1XbCwtZW50cnksX3N0YXJ0IGxk ZmxhZ3M9LS1zdGF0aWMgIgogZm9yZWFjaCBpICR7bGluay1mbGFnc30gewog ICAgIGFwcGVuZCBvcHRzICIgbGRmbGFncz0kaSIKIH0KLWlmIHsgW2dkYl9j b21waWxlICJhc21zcmMxLm8gYXNtc3JjMi5vIiAiJHtiaW5maWxlfSIgZXhl Y3V0YWJsZSAkb3B0c10gIT0gIiIgfSB7CitpZiB7IFtnZGJfY29tcGlsZSAi YXNtc3JjMS5vIGFzbXNyYzIubyBhc21zcmMzLm8gYXNtc3JjNC5vIiAiJHti aW5maWxlfSIgZXhlY3V0YWJsZSAkb3B0c10gIT0gIiIgfSB7CiAgICAgIGdk Yl9zdXBwcmVzc19lbnRpcmVfZmlsZSAiVGVzdGNhc2UgY29tcGlsZSBmYWls ZWQsIHNvIGFsbCB0ZXN0cyBpbiB0aGlzIGZpbGUgd2lsbCBhdXRvbWF0aWNh bGx5IGZhaWwuIgogfQogCi1yZW1vdGVfZXhlYyBidWlsZCAibXYgYXNtc3Jj MS5vIGFzbXNyYzIubyAke29iamRpcn0vJHtzdWJkaXJ9IgotCi0KK3JlbW90 ZV9leGVjIGJ1aWxkICJtdiBhc21zcmMxLm8gYXNtc3JjMi5vIGFzbXNyYzMu byBhc21zcmM0Lm8gJHtvYmpkaXJ9LyR7c3ViZGlyfSIKKworCiBnZGJfc3Rh cnQKIGdkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgogZ2Ri X2xvYWQgJHtiaW5maWxlfQpAQCAtMTg5LDggKzIzMiw4IEBAIGdkYl9leHBl Y3QgewogZ2RiX3Rlc3QgImxpc3QgJGVudHJ5X3N5bWJvbCIgIi4qZ2RiYXNt X3N0YXJ0dXAuKiIgImxpc3QiCiAKICMgTm93IHRyeSBhIHNvdXJjZSBmaWxl IHNlYXJjaAotZ2RiX3Rlc3QgInNlYXJjaCBBIHJvdXRpbmUgZm9yIGZvbzIg dG8gY2FsbCIgXAotCSIzOVxbIFx0XF0rY29tbWVudCBcIkEgcm91dGluZSBm b3IgZm9vMiB0byBjYWxsLlwiIiAic2VhcmNoIgorZ2RiX3Rlc3QgInNlYXJj aCBQcm92aWRlIHNvbWV0aGluZyB0byBzZWFyY2ggZm9yIiBcCisJIjIwXFsg XHRcXStjb21tZW50IFwiUHJvdmlkZSBzb21ldGhpbmcgdG8gc2VhcmNoIGZv clwiIiAic2VhcmNoIgogCiAjIFNlZSBpZiBgZicgcHJpbnRzIHRoZSByaWdo dCBzb3VyY2UgZmlsZS4KIGdkYl90ZXN0ICJmIiAiLiphc21zcmMyXFsuXF1z OjguKiIgImYgaW4gZm9vMiIKZGlmZiAtZHJ1cFAgLS1leGNsdWRlLWZyb209 L2Rldi9mcy9NL2Rvbm4vZGlmZnMvZXhjbHVkZS5maWxlcyAvQy9DVlMvYmlu dXRpbHMuYmFzZWxpbmUvc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmFzbS9hc21z cmMxLnMgdGVzdHN1aXRlL2dkYi5hc20vYXNtc3JjMS5zCi0tLSAvQy9DVlMv YmludXRpbHMuYmFzZWxpbmUvc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmFzbS9h c21zcmMxLnMJVHVlIERlYyAgNCAxMTo0NTo1NyAyMDAxCisrKyB0ZXN0c3Vp dGUvZ2RiLmFzbS9hc21zcmMxLnMJVHVlIE1hciAxMiAyMjoxMzo0MiAyMDAy CkBAIC0xLDYgKzEsNiBAQAogCS5pbmNsdWRlICJjb21tb24uaW5jIgogCS5p bmNsdWRlICJhcmNoLmluYyIKLQorCS5pbmNsdWRlICJvYmplY3QuaW5jIgog Y29tbWVudCAiV0FSTklORzogYXNtLXNvdXJjZS5leHAgY2hlY2tzIGZvciBs aW5lIG51bWJlcnMgcHJpbnRlZCBieSBnZGIuIgogY29tbWVudCAiQmUgY2Fy ZWZ1bCBhYm91dCBjaGFuZ2luZyB0aGlzIGZpbGUgd2l0aG91dCBhbHNvIGNo YW5naW5nIgogY29tbWVudCAiYXNtLXNvdXJjZS5leHAuIgpAQCAtOSwxOSAr OSwxOSBAQCBjb21tZW50ICJhc20tc291cmNlLmV4cC4iCiBjb21tZW50CSJU aGlzIGZpbGUgaXMgbm90IGxpbmtlZCB3aXRoIGNydDAuIgogY29tbWVudAki UHJvdmlkZSB2ZXJ5IHNpbXBsaXN0aWMgZXF1aXZhbGVudC4iCiAJCi0JLmds b2JhbCBfc3RhcnQKLV9zdGFydDoKLQlnZGJhc21fc3RhcnR1cAotCWdkYmFz bV9jYWxsIG1haW4KLQlnZGJhc21fZXhpdDAKLQotCitjb21tZW50ICIJLmds b2JhbCBfc3RhcnQiCitjb21tZW50ICIJZnVuY3Rpb24gX3N0YXJ0IgorY29t bWVudCAiCWdkYmFzbV9zdGFydHVwIgorY29tbWVudCAiCWdkYmFzbV9jYWxs IG1haW4iCitjb21tZW50ICIJZ2RiYXNtX2V4aXQwIgorCisKIGNvbW1lbnQg Im1haW4gcm91dGluZSBmb3IgYXNzZW1ibHkgc291cmNlIGRlYnVnZ2luZyB0 ZXN0IgogY29tbWVudCAiVGhpcyBwYXJ0aWN1bGFyIHRlc3RjYXNlIHVzZXMg bWFjcm9zIGluIDxhcmNoPi5pbmMgdG8gYWNoaWV2ZSIKIGNvbW1lbnQgIm1h Y2hpbmUgaW5kZXBlbmRlbmNlLiIKIAogCS5nbG9iYWwgbWFpbgotbWFpbjoK KwlmdW5jdGlvbiBtYWluCiAJZ2RiYXNtX2VudGVyCiAKIGNvbW1lbnQgIkNh bGwgYSBtYWNybyB0aGF0IGNvbnNpc3RzIG9mIHNldmVyYWwgbGluZXMgb2Yg YXNzZW1ibGVyIGNvZGUuIgpAQCAtMzksMjUgKzM5LDI1IEBAIGNvbW1lbnQg IkFsbCBkb25lLiIKIGNvbW1lbnQgIkEgcm91dGluZSBmb3IgZm9vMiB0byBj YWxsLiIKIAogCS5nbG9iYWwgZm9vMwotZm9vMzoKKwlmdW5jdGlvbiBmb28z CiAJZ2RiYXNtX2VudGVyCiAJZ2RiYXNtX2xlYXZlCiAKIAkuZ2xvYmFsIGV4 aXQKLWV4aXQ6CisJZnVuY3Rpb24gZXhpdAogCWdkYmFzbV9leGl0MAogCiBj b21tZW50ICJBIHN0YXRpYyBmdW5jdGlvbiIKIAotZm9vc3RhdGljOgorICAg ICAgICBmdW5jdGlvbiBfZm9vc3RhdGljCiAJZ2RiYXNtX2VudGVyCiAJZ2Ri YXNtX2xlYXZlCiAKIGNvbW1lbnQgIkEgZ2xvYmFsIHZhcmlhYmxlIgogCi0J Lmdsb2JhbCBnbG9iYWx2YXIKLWdkYmFzbV9kYXRhdmFyCWdsb2JhbHZhcgkx MQotCisJLmdsb2JhbCBfZ2xvYmFsdmFyCitnZGJhc21fZGF0YXZhcglfZ2xv YmFsdmFyCTExCisKIGNvbW1lbnQgIkEgc3RhdGljIHZhcmlhYmxlIgogCi1n ZGJhc21fZGF0YXZhcglzdGF0aWN2YXIJNQorZ2RiYXNtX2RhdGF2YXIJX3N0 YXRpY3Zhcgk1CmRpZmYgLWRydXBQIC0tZXhjbHVkZS1mcm9tPS9kZXYvZnMv TS9kb25uL2RpZmZzL2V4Y2x1ZGUuZmlsZXMgL0MvQ1ZTL2JpbnV0aWxzLmJh c2VsaW5lL3NyYy9nZGIvdGVzdHN1aXRlL2dkYi5hc20vYXNtc3JjMi5zIHRl c3RzdWl0ZS9nZGIuYXNtL2FzbXNyYzIucwotLS0gL0MvQ1ZTL2JpbnV0aWxz LmJhc2VsaW5lL3NyYy9nZGIvdGVzdHN1aXRlL2dkYi5hc20vYXNtc3JjMi5z CVR1ZSBEZWMgIDQgMTE6NDU6NTcgMjAwMQorKysgdGVzdHN1aXRlL2dkYi5h c20vYXNtc3JjMi5zCVR1ZSBNYXIgMTIgMjI6MTM6NDIgMjAwMgpAQCAtMSwx MCArMSwxMCBAQAogCS5pbmNsdWRlICJjb21tb24uaW5jIgogCS5pbmNsdWRl ICJhcmNoLmluYyIKLQorICAgICAgICAuaW5jbHVkZSAib2JqZWN0LmluYyIK KyAKIGNvbW1lbnQgIlNlY29uZCBmaWxlIGluIGFzc2VtYmx5IHNvdXJjZSBk ZWJ1Z2dpbmcgdGVzdGNhc2UuIgotCiAJLmdsb2JhbCBmb28yCi1mb28yOgor CWZ1bmN0aW9uIGZvbzIKIAlnZGJhc21fZW50ZXIKIAogY29tbWVudCAiQ2Fs bCBzb21lcGxhY2UgZWxzZSAoc2V2ZXJhbCB0aW1lcykuIgpkaWZmIC1kcnVw UCAtLWV4Y2x1ZGUtZnJvbT0vZGV2L2ZzL00vZG9ubi9kaWZmcy9leGNsdWRl LmZpbGVzIC9DL0NWUy9iaW51dGlscy5iYXNlbGluZS9zcmMvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYXNtL2FzbXNyYzMucyB0ZXN0c3VpdGUvZ2RiLmFzbS9hc21z cmMzLnMKLS0tIC9DL0NWUy9iaW51dGlscy5iYXNlbGluZS9zcmMvZ2RiL3Rl c3RzdWl0ZS9nZGIuYXNtL2FzbXNyYzMucwlXZWQgRGVjIDMxIDE2OjAwOjAw IDE5NjkKKysrIHRlc3RzdWl0ZS9nZGIuYXNtL2FzbXNyYzMucwlUdWUgTWFy IDEyIDIyOjEzOjQyIDIwMDIKQEAgLTAsMCArMSwyMSBAQAorCS5pbmNsdWRl ICJjb21tb24uaW5jIgorCS5pbmNsdWRlICJhcmNoLmluYyIKKwkuaW5jbHVk ZSAib2JqZWN0LmluYyIKKwljb21tZW50ICJlbXB0eSBmaWxlLCB0byBwcm92 aWRlIEVPRiBlbnRyeSBpbiBzdGFicyIKKworY29tbWVudAkiVGhpcyBmaWxl IGlzIG5vdCBsaW5rZWQgd2l0aCBjcnQwLiIKK2NvbW1lbnQJIlByb3ZpZGUg dmVyeSBzaW1wbGlzdGljIGVxdWl2YWxlbnQuIgorCQorCS5nbG9iYWwgX3N0 YXJ0CisJZnVuY3Rpb24gX3N0YXJ0CisJZ2RiYXNtX3N0YXJ0dXAKKwlnZGJh c21fY2FsbCBtYWluCisJZ2RiYXNtX2V4aXQwCisKK2NvbW1lbnQgIlRoZSBu ZXh0IG5vbmJsYW5rIGxpbmUgbXVzdCBiZSAnb2Zmc2NyZWVuJyB3LnIudC4g c3RhcnQiCitjb21tZW50ICJhbmQgaXQgbXVzdCBub3QgYmUgdGhlIGxhc3Qg bGluZSBpbiB0aGUgZmlsZSAoSSBkb24ndCBrbm93IHdoeSkiCisKKworCitj b21tZW50ICJQcm92aWRlIHNvbWV0aGluZyB0byBzZWFyY2ggZm9yIgorCmRp ZmYgLWRydXBQIC0tZXhjbHVkZS1mcm9tPS9kZXYvZnMvTS9kb25uL2RpZmZz L2V4Y2x1ZGUuZmlsZXMgL0MvQ1ZTL2JpbnV0aWxzLmJhc2VsaW5lL3NyYy9n ZGIvdGVzdHN1aXRlL2dkYi5hc20vYXNtc3JjNC5zIHRlc3RzdWl0ZS9nZGIu YXNtL2FzbXNyYzQucwotLS0gL0MvQ1ZTL2JpbnV0aWxzLmJhc2VsaW5lL3Ny Yy9nZGIvdGVzdHN1aXRlL2dkYi5hc20vYXNtc3JjNC5zCVdlZCBEZWMgMzEg MTY6MDA6MDAgMTk2OQorKysgdGVzdHN1aXRlL2dkYi5hc20vYXNtc3JjNC5z CVR1ZSBNYXIgMTIgMjI6MTM6NDIgMjAwMgpAQCAtMCwwICsxLDYgQEAKKwku aW5jbHVkZSAiY29tbW9uLmluYyIKKwkuaW5jbHVkZSAiYXJjaC5pbmMiCisJ LmluY2x1ZGUgIm9iamVjdC5pbmMiCisJY29tbWVudCAiZW1wdHkgZmlsZSwg dG8gcHJvdmlkZSBFT0YgZW50cnkgaW4gc3RhYnMiCisKKwlmdW5jdGlvbiBl bmRlcgpkaWZmIC1kcnVwUCAtLWV4Y2x1ZGUtZnJvbT0vZGV2L2ZzL00vZG9u bi9kaWZmcy9leGNsdWRlLmZpbGVzIC9DL0NWUy9iaW51dGlscy5iYXNlbGlu ZS9zcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXNtL2NvZmYuaW5jIHRlc3RzdWl0 ZS9nZGIuYXNtL2NvZmYuaW5jCi0tLSAvQy9DVlMvYmludXRpbHMuYmFzZWxp bmUvc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmFzbS9jb2ZmLmluYwlXZWQgRGVj IDMxIDE2OjAwOjAwIDE5NjkKKysrIHRlc3RzdWl0ZS9nZGIuYXNtL2NvZmYu aW5jCVR1ZSBNYXIgMTIgMjI6MTM6NDIgMjAwMgpAQCAtMCwwICsxLDYgQEAK Kwljb21tZW50ICJGb3IgQ09GRiwgZnVuY3Rpb25zIHNob3VsZCBiZSBmbGFn Z2VkIGFzIHN1Y2giCisKKwkubWFjcm8gZnVuY3Rpb24gbmFtZQorCS5kZWYg XG5hbWU7IC52YWwgXG5hbWU7IC5zY2wgMjsgLnR5cGUgMDQwOyAuZW5kZWYK K1xuYW1lOgorCS5lbmRtCmRpZmYgLWRydXBQIC0tZXhjbHVkZS1mcm9tPS9k ZXYvZnMvTS9kb25uL2RpZmZzL2V4Y2x1ZGUuZmlsZXMgL0MvQ1ZTL2JpbnV0 aWxzLmJhc2VsaW5lL3NyYy9nZGIvdGVzdHN1aXRlL2dkYi5hc20vY29tbW9u LmluYyB0ZXN0c3VpdGUvZ2RiLmFzbS9jb21tb24uaW5jCi0tLSAvQy9DVlMv YmludXRpbHMuYmFzZWxpbmUvc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmFzbS9j b21tb24uaW5jCVR1ZSBEZWMgIDQgMTE6NDU6NTcgMjAwMQorKysgdGVzdHN1 aXRlL2dkYi5hc20vY29tbW9uLmluYwlUdWUgTWFyIDEyIDIyOjEzOjQyIDIw MDIKQEAgLTI2LDMgKzI2LDQgQEAgY29tbWVudCAiZGF0YXZhciAtIGRlZmlu ZSBhIGRhdGEgdmFyaWFibAogCiBjb21tZW50ICJtYWNyb3MgdG8gbGFiZWwg YSBzdWJyb3V0aW5lIG1heSBhbHNvIGV2ZW50dWFsbHkgYmUgbmVlZGVkIgog Y29tbWVudCAiaS5lLiAuZ2xvYmFsIGZvb1xuZm9vOlxuIgorCmRpZmYgLWRy dXBQIC0tZXhjbHVkZS1mcm9tPS9kZXYvZnMvTS9kb25uL2RpZmZzL2V4Y2x1 ZGUuZmlsZXMgL0MvQ1ZTL2JpbnV0aWxzLmJhc2VsaW5lL3NyYy9nZGIvdGVz dHN1aXRlL2dkYi5hc20vb3RoZXJvYmouaW5jIHRlc3RzdWl0ZS9nZGIuYXNt L290aGVyb2JqLmluYwotLS0gL0MvQ1ZTL2JpbnV0aWxzLmJhc2VsaW5lL3Ny Yy9nZGIvdGVzdHN1aXRlL2dkYi5hc20vb3RoZXJvYmouaW5jCVdlZCBEZWMg MzEgMTY6MDA6MDAgMTk2OQorKysgdGVzdHN1aXRlL2dkYi5hc20vb3RoZXJv YmouaW5jCVR1ZSBNYXIgMTIgMjI6MTM6NDIgMjAwMgpAQCAtMCwwICsxLDUg QEAKKwljb21tZW50ICJKdXN0IGRlZmluZSB0aGUgbGFiZWwiCisKKwkubWFj cm8gZnVuY3Rpb24gbmFtZQorXG5hbWU6CisJLmVuZG0KZGlmZiAtZHJ1cFAg LS1leGNsdWRlLWZyb209L2Rldi9mcy9NL2Rvbm4vZGlmZnMvZXhjbHVkZS5m aWxlcyBnZGIuYmVmb3JlL2RieHJlYWQuYyBnZGIvZGJ4cmVhZC5jCi0tLSBk YnhyZWFkLmMJVGh1IE1hciAgNyAwOToxODo1OSAyMDAyCisrKyBkYnhyZWFk LmMJU2F0IE1hciAgOSAyMDoxMzo1OCAyMDAyCkBAIC0yNTY4LDggKzI1Njgs OSBAQCByZWFkX29maWxlX3N5bXRhYiAoc3RydWN0IHBhcnRpYWxfc3ltdGFi CiAgIGVsc2UKICAgICB7CiAgICAgICAvKiBUaGUgTl9TTyBzdGFydGluZyB0 aGlzIHN5bXRhYiBpcyB0aGUgZmlyc3Qgc3ltYm9sLCBzbyB3ZQotICAgICAg ICAgYmV0dGVyIG5vdCBjaGVjayB0aGUgc3ltYm9sIGJlZm9yZSBpdC4gIEkn bSBub3QgdGhpcyBjYW4KLSAgICAgICAgIGhhcHBlbiwgYnV0IGl0IGRvZXNu J3QgaHVydCB0byBjaGVjayBmb3IgaXQuICAqLworICAgICAgICAgYmV0dGVy IG5vdCBjaGVjayB0aGUgc3ltYm9sIGJlZm9yZSBpdC4gIFRoaXMgaXMgcmFy ZSwgYnV0IGl0CisJIGRvZXMgb2NjdXIsIHBhcnRpY3VsYXJseSB3aXRoIGRl YnVnIHN5bWJvbHMgZnJvbSB0aGUgYXNzZW1ibGVyLAorCSB3aGljaCB3b3Vs ZCBub3QgKG9mIGNvdXJzZSkgaGF2ZSBhIGNvbXBpbGVyIG5hbWUgZW50cnku ICovCiAgICAgICBiZmRfc2VlayAoc3ltZmlsZV9iZmQsIHN5bV9vZmZzZXQs IFNFRUtfQ1VSKTsKICAgICAgIHByb2Nlc3NpbmdfZ2NjX2NvbXBpbGF0aW9u ID0gMDsKICAgICB9Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpV c2Ugc21hcnRlciBSRXMgc28gdGhhdCBzeXN0ZW1zIHRoYXQgbWFyayAudGV4 dCBhcyBEQVRBIG9yIC5kYXRhIGFzIENPREUKd2lsbCBwYXNzIHdpdGhvdXQg aGF2aW5nIHRvIGZvcmNlIGFuIFhGQUlMIChhbmQgc3RpbGwgZmFpbCBpZiBz b21ldGhpbmcKc2VyaW91cyBnb2VzIHdyb25nLikKCmRpZmYgLWRydXBQIC0t ZXhjbHVkZS1mcm9tPS9NL2Rvbm4vZGlmZnMvZXhjbHVkZS5maWxlcyBnZGIu c2F2ZWQvdGVzdHN1aXRlL2dkYi5iYXNlL21haW50LmV4cCBnZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL21haW50LmV4cAotLS0gZ2RiLnNhdmVkL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9tYWludC5leHAJVHVlIE1hciAgNSAxNDo1NjowNyAyMDAy CisrKyBnZGIvdGVzdHN1aXRlL2dkYi5iYXNlL21haW50LmV4cAlUdWUgTWFy ICA1IDIyOjMzOjE2IDIwMDIKQEAgLTM5OCwyMCArMzk4LDMwIEBAIGdkYl9l eHBlY3QgewogfQogCiAjIFRlc3QgZm9yIG5ldyBvcHRpb246IENPREUgc2Vj dGlvbiBmbGFnCi0jIElmIHlvdXIgZGF0YSBzZWN0aW9uIGlzIHRhZ2dlZCBD T0RFLCB4ZmFpbCB0aGlzIHRlc3QuCiBzZW5kX2dkYiAibWFpbnQgaW5mbyBz ZWN0aW9ucyBDT0RFXG4iCiBnZGJfZXhwZWN0IHsKLSAgICAtcmUgIi4qIC5k YXRhIC4qJGdkYl9wcm9tcHQgJCIgeyBmYWlsICJtYWludCBpbmZvIHNlY3Rp b25zIENPREUiIH0KLSAgICAtcmUgIi4qIC50ZXh0IC4qJGdkYl9wcm9tcHQg JCIgeyBwYXNzICJtYWludCBpbmZvIHNlY3Rpb25zIENPREUiIH0KKyAgICAt cmUgIi4qIC5kYXRhIFxbXlxuXF0qQ09ERVxbXlxuXF0qXG4iIHsgZXhwX2Nv bnRpbnVlIH0KKyAgICAtcmUgIi4qIC5kYXRhIC4qXG4iIHsgZmFpbCAibWFp bnQgaW5mbyBzZWN0aW9ucyBDT0RFICguZGF0YSB1bmV4cGVjdGVkKSIgfQor ICAgIC1yZSAiLiogLnRleHQgLipcbiIgeyBwYXNzICJtYWludCBpbmZvIHNl Y3Rpb25zIENPREUiIH0KKyAgICAtcmUgIi4qJGdkYl9wcm9tcHQgJCIgIHsg ZmFpbCAibWFpbnQgaW5mbyBzZWN0aW9ucyBDT0RFIChubyAudGV4dCkiIH0K KyAgICB0aW1lb3V0ICAgICAgICAgICAgICB7IGZhaWwgIih0aW1lb3V0KSBt YWludCBpbmZvIHNlY3Rpb25zIENPREUgKG5vIG91dHB1dCkiIH0KK30KK2dk Yl9leHBlY3QgeworICAgIC1yZSAiLiokZ2RiX3Byb21wdCAkIiAgeyB9CiAg ICAgdGltZW91dCAgICAgICAgICAgICAgeyBmYWlsICIodGltZW91dCkgbWFp bnQgaW5mbyBzZWN0aW9ucyBDT0RFIiB9CiB9CiAKICMgVGVzdCBmb3IgbmV3 IG9wdGlvbjogREFUQSBzZWN0aW9uIGZsYWcKLSMgSWYgeW91ciB0ZXh0IHNl Y3Rpb24gaXMgdGFnZ2VkIERBVEEsIHhmYWlsIHRoaXMgdGVzdC4KIHNlbmRf Z2RiICJtYWludCBpbmZvIHNlY3Rpb25zIERBVEFcbiIKIGdkYl9leHBlY3Qg ewotICAgIC1yZSAiLiogLnRleHQgLiokZ2RiX3Byb21wdCAkIiB7IGZhaWwg Im1haW50IGluZm8gc2VjdGlvbnMgREFUQSIgfQotICAgIC1yZSAiLiogLmRh dGEgLiokZ2RiX3Byb21wdCAkIiB7IHBhc3MgIm1haW50IGluZm8gc2VjdGlv bnMgREFUQSIgfQorICAgIC1yZSAiLiogLnRleHQgXFteXG5cXSpEQVRBXFte XG5cXSpcbiIgeyBleHBfY29udGludWUgfQorICAgIC1yZSAiLiogLnRleHQg LipcbiIgeyBmYWlsICJtYWludCBpbmZvIHNlY3Rpb25zIERBVEEgKC50ZXh0 IHVuZXhwZWN0ZWQpIiB9CisgICAgLXJlICIuKiAuZGF0YSAuKlxuIiB7IHBh c3MgIm1haW50IGluZm8gc2VjdGlvbnMgREFUQSIgfQorICAgIC1yZSAiLiok Z2RiX3Byb21wdCAkIiAge2ZhaWwgIm1haW50IGluZm8gc2VjdGlvbnMgREFU QSAyIChubyAudGV4dCkiIH0KKyAgICB0aW1lb3V0ICAgICAgICAgICAgICB7 IGZhaWwgIih0aW1lb3V0KSBtYWludCBpbmZvIHNlY3Rpb25zIERBVEEgKG5v IG91dHB1dCkiIH0KK30KK2dkYl9leHBlY3QgeworICAgIC1yZSAiLiokZ2Ri X3Byb21wdCAkIiAgeyB9CiAgICAgdGltZW91dCAgICAgICAgICAgICAgeyBm YWlsICIodGltZW91dCkgbWFpbnQgaW5mbyBzZWN0aW9ucyBEQVRBIiB9CiB9 CiAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRoZSBuZXdseSAi ZW5hYmxlZCBmb3IgZXZlcnl0aGluZyIgdGVzdHMgZm9yIGF0dGFjaCBoYXZl IGEgbnVtYmVyCm9mIHByb2JsZW1zIGZvciAvcHJvYyBiYXNlZCBnZGIsIGFu ZCBhbHNvIGhhcyBhbiBIUC1VWCBzcGVjaWZpYyB0ZXN0CnRoYXQgaXMgbm90 IHNvIG1hcmtlZC4gIEJlY2F1c2Ugb2YgdGhpcyBpdCBsZWF2ZXMgYSBjcHUt ZWF0aW5nCnByb2Nlc3MgYmVoaW5kIHNsb3dpbmcgZG93biBhbGwgc3Vic2Vx dWVudCB0ZXN0cyBzaWduaWZpY2FudGx5LgpTZWUgMjAwMi0wMy0yNSAgRnJl ZCBGaXNoICA8Zm5mQHJlZGhhdC5jb20+LgoKMSkgL3Byb2MgZ2VuZXJhdGVz IGRpZmZlcmVudCBtZXNzYWdlcy4KMikgL3Byb2MgY2hhdHRlcnMgbW9yZSAo d2hpY2ggaXMgYSBkaWZmZXJlbnQgaXNzdWUpIGFuZCBjb25zZXF1ZW50bHkK ICAgc29tZSBwYXR0ZXJucyBmYWlsIHRvIG1hdGNoLiAgKEl0IGxvb2tzIHRv IG1lIGFzIGlmIHRoZSB1bm1vZGlmaWVkCiAgIHBhdHRlcm5zIHNob3VsZCBt YXRjaCwgYnV0IHRoZXkgZG9uJ3Qgd2hpbGUgdGhlIHNob3J0ZW5lZCBvbmVz IGRvLikKMykgSWYgdGhlIG5hbWUgb2YgdGhlIGV4ZWN1dGFibGUgaXMgbm90 IGZvdW5kLCBhdXRvbWF0aWMgc3ltYm9sIGxvYWRzIAogICBkb24ndCBoYXBw ZW4uICBBZGQgcmVjb3ZlcnkgY29kZSBzbyB0aGUgc3Vic2VxdWVudCB0ZXN0 cyBkb24ndCBsb3NlIAogICBzeW5jIGFuZCBsZWF2ZSB0aGUgZGFuZ2xpbmcg cHJvY2VzcyBhcm91bmQuICAoV2l0aG91dCBzeW1ib2xzLCAKICAgdGhlIGRh bmdsaW5nIHByb2Nlc3MgZG9lc24ndCBnZXQga2lsbGVkLCBldmVuIHRob3Vn aCB0aGVyZSBhcHBlYXIgCiAgIHRvIGJlIHNvbWUgZWZmb3J0cyB0byBkb3Qg dGhhdC4pCjQpIE9uZSB0ZXN0IGlzIGNsZWFybHkgSFAtVVggc3BlY2lmaWMu ICBOb3QgaGF2aW5nICJpIHIiIGhhbmcgaW4gdGhlCiAgIGF0dGFjaCBjYXNl IGlzIGEgdXNlZnVsIHRlc3QsIGJ1dCB0aGUgZXhhY3QgdGVzdCBpcyB0b28g c3BlY2lmaWMuCiAgIFRoZSBmaXggaXMgYSBiaXQgImJhbmRhaWR5IiAodGhl IG9yaWdpbmFsIGF1dGhvciBoZXJlIHdvdWxkIGJlCiAgIGJldHRlciBhYmxl IHRvIGZpeCBpdC4pCgoKLS0tIHRlc3RzdWl0ZS9nZGIuYmFzZS9hdHRhY2gu ZXhwCUZyaSBBcHIgIDUgMDI6NTg6MDggMjAwMgorKysgdGVzdHN1aXRlL2dk Yi5iYXNlLm5ldy9hdHRhY2guZXhwCUZyaSBBcHIgIDUgMDI6MzE6MTEgMjAw MgpAQCAtMTEzLDYgKzExMyw5IEBACiAgICBnZGJfZXhwZWN0IHsKICAgICAg IC1yZSAiLipJbGxlZ2FsIHByb2Nlc3MtaWQ6IGFiYy4qJGdkYl9wcm9tcHQg JCJcCiAgICAgICAgICAgICAgICAgICAgICAge3Bhc3MgImF0dGFjaCB0byBu b25zZW5zZSBpcyBwcm9oaWJpdGVkIn0KKyAgICAgICMgVGhpcyByZXNwb25z ZSBpcyBleHBlY3RlZCBmcm9tIC9wcm9jLWJhc2VkIHN5c3RlbXMuCisgICAg ICAtcmUgIkF0dGFjaGluZyB0by4qLCBwcm9jZXNzIC4qY291bGRuJ3Qgb3Bl biAvcHJvYyBmaWxlLiokZ2RiX3Byb21wdCAkIlwKKyAgICAgICAgICAgICAg ICAgICAgICB7cGFzcyAiYXR0YWNoIHRvIG5vbnNlbnNlIGlzIHByb2hpYml0 ZWQifQogICAgICAgLXJlICJBdHRhY2hpbmcgdG8uKiRnZGJfcHJvbXB0ICQi XAogICAgICAgICAgICAgICAgICAgICAgIHtmYWlsICJhdHRhY2ggdG8gbm9u c2Vuc2UgaXMgcHJvaGliaXRlZCAoYm9ndXMgcGlkIGFsbG93ZWQpIn0KICAg ICAgIC1yZSAiJGdkYl9wcm9tcHQgJCIge2ZhaWwgImF0dGFjaCB0byBub25z ZW5zZSBpcyBwcm9oaWJpdGVkIn0KQEAgLTEzMyw2ICsxMzYsOSBAQAogICAg ICAgICAgICAgICAgICAgICAgIHtwYXNzICJhdHRhY2ggdG8gbm9uZXhpc3Rl bnQgcHJvY2VzcyBpcyBwcm9oaWJpdGVkIn0KICAgICAgIC1yZSAiQXR0YWNo aW5nIHRvLiosIHByb2Nlc3MgMC4qZGVuaWVkLiokZ2RiX3Byb21wdCAkIlwK ICAgICAgICAgICAgICAgICAgICAgICB7cGFzcyAiYXR0YWNoIHRvIG5vbmV4 aXN0ZW50IHByb2Nlc3MgaXMgcHJvaGliaXRlZCJ9CisgICAgICAjIFRoaXMg cmVzcG9uc2UgaXMgZXhwZWN0ZWQgZnJvbSAvcHJvYy1iYXNlZCBzeXN0ZW1z LgorICAgICAgLXJlICJBdHRhY2hpbmcgdG8uKiwgcHJvY2VzcyAuKmNvdWxk bid0IG9wZW4gL3Byb2MgZmlsZS4qJGdkYl9wcm9tcHQgJCJcCisgICAgICAg ICAgICAgICAgICAgICAge3Bhc3MgImF0dGFjaCB0byBub25leGlzdGVudCBw cm9jZXNzIGlzIHByb2hpYml0ZWQifQogICAgICAgLXJlICIkZ2RiX3Byb21w dCAkIiB7ZmFpbCAiYXR0YWNoIHRvIG5vbmV4aXN0ZW50IHByb2Nlc3MgaXMg cHJvaGliaXRlZCJ9CiAgICAgICB0aW1lb3V0ICAgICAgICAge2ZhaWwgIih0 aW1lb3V0KSBhdHRhY2ggdG8gbm9uZXhpc3RlbnQgcHJvY2VzcyBpcyBwcm9o aWJpdGVkIn0KICAgIH0KQEAgLTE2NCw3ICsxNzAsNyBAQAogCiAgICBzZW5k X2dkYiAiYXR0YWNoICR0ZXN0cGlkXG4iCiAgICBnZGJfZXhwZWN0IHsKLSAg ICAgIC1yZSAiQXR0YWNoaW5nIHRvIHByb2dyYW0uKiRiaW5maWxlLCBwcm9j ZXNzICR0ZXN0cGlkLiptYWluLiphdCAuKiRzcmNmaWxlOi4qJGdkYl9wcm9t cHQgJCJcCisgICAgICAtcmUgIkF0dGFjaGluZyB0byBwcm9ncmFtLipgPyRi aW5maWxlJz8sIHByb2Nlc3MgJHRlc3RwaWQuKm1haW4uKmF0IC4qJHNyY2Zp bGU6LiokZ2RiX3Byb21wdCAkIlwKICAgICAgICAgICAgICAgICAgICAgICB7 cGFzcyAiYXR0YWNoMSwgYWZ0ZXIgc2V0dGluZyBmaWxlIn0KICAgICAgIC1y ZSAiJGdkYl9wcm9tcHQgJCIge2ZhaWwgImF0dGFjaDEsIGFmdGVyIHNldHRp bmcgZmlsZSJ9CiAgICAgICB0aW1lb3V0ICAgICAgICAge2ZhaWwgIih0aW1l b3V0KSBhdHRhY2gxLCBhZnRlciBzZXR0aW5nIGZpbGUifQpAQCAtMjI5LDEw ICsyMzUsNDggQEAKICAgIGdkYl9leHBlY3QgewogICAgICAgLXJlICJBdHRh Y2hpbmcgdG8gcHJvY2VzcyAkdGVzdHBpZC4qUmVhZGluZyBzeW1ib2xzIGZy b20gJGJpbmZpbGUuKm1haW4uKmF0IC4qJGdkYl9wcm9tcHQgJCJcCiAgICAg ICAgICAgICAgICAgICAgICAge3Bhc3MgImF0dGFjaDIifQorICAgICAgLXJl ICJBdHRhY2hpbmcgdG8gcHJvY2VzcyAkdGVzdHBpZC4qbWFpbi4qYXQgLiok Z2RiX3Byb21wdCAkIlwKKwkgICAgICAgICAgICAgIHtzZXR1cF94ZmFpbCAi Ki0qLWludGVyaXgqIgorCSAgICAgICAgICAgICAgIGZhaWwgImF0dGFjaDIi IH0KICAgICAgIC1yZSAiJGdkYl9wcm9tcHQgJCIge2ZhaWwgImF0dGFjaDIi fQogICAgICAgdGltZW91dCAgICAgICAgIHtmYWlsICIodGltZW91dCkgYXR0 YWNoMiJ9CiAgICB9CiAKKyAgICMgVmVyaWZ5IHRoYXQgd2UgY2FuIHN0aWxs ICJzZWUiIHRoZSB2YXJpYWJsZSAic2hvdWxkX2V4aXQiIGluIHRoZQorICAg IyBwcm9ncmFtLCBhbmQgdGhhdCBpdCBpcyB6ZXJvLiAgSWYgd2UgY2FuJ3Qs IHJlY292ZXIgd2l0aCBhICdzeW1ib2wtZmlsZScKKyAgICMgY29tbWFuZCBz byB0aGUgcmVzdCBvZiB0aGUgdGVzdHMgaGVyZSBydW4gY29ycmVjdGx5Lgor ICAgIworICAgc2VuZF9nZGIgInByaW50IHNob3VsZF9leGl0XG4iCisgICBn ZGJfZXhwZWN0IHsKKyAgICAgIC1yZSAiTm8gc3ltYm9sIHRhYmxlLiokZ2Ri X3Byb21wdCAkIiB7CisKKwkgIHNldHVwX3hmYWlsICIqLSotaW50ZXJpeCoi CisJICBmYWlsICJhZnRlciBhdHRhY2gyLCBwcmludCBzaG91bGRfZXhpdCAo bm8gc3ltYm9scykiCisKKwkgIHNlbmRfZ2RiICJzeW1ib2wtZmlsZSAkYmlu ZmlsZVxuIgorCSAgZ2RiX2V4cGVjdCB7CisJICAgICAgLXJlICJMb2FkIG5l dyBzeW1ib2wgdGFibGUgZnJvbS4qeSBvciBuLiokIiB7CisJCSBzZW5kX2dk YiAieVxuIgorCQkgZ2RiX2V4cGVjdCB7CisJCSAgICAtcmUgIlJlYWRpbmcg Lipkb25lLiokZ2RiX3Byb21wdCAkIlwKKwkJCQkgICAge3Bhc3MgIihyZSlz ZXQgZmlsZSwgYmVmb3JlIGF0dGFjaDJhIn0KKwkJICAgIC1yZSAiJGdkYl9w cm9tcHQgJCIge2ZhaWwgIihyZSlzZXQgZmlsZSwgYWZ0ZXIgYXR0YWNoMmEi fQorCQkgICAgdGltZW91dCAgIHtmYWlsICIodGltZW91dCkgKHJlKXNldCBm aWxlLCBhZnRlciBhdHRhY2gyYSJ9CisJCSB9CisJICAgICAgfQorCSAgICAg IC1yZSAiUmVhZGluZyBzeW1ib2xzIGZyb20gLipkb25lLiokZ2RiX3Byb21w dCAkIlwKKwkJCSAgICAgIHtwYXNzICJzZXQgZmlsZSwgYWZ0ZXIgYXR0YWNo MmEifQorCSAgICAgIC1yZSAiJGdkYl9wcm9tcHQgJCIge2ZhaWwgInNldCBm aWxlLCBhZnRlciBhdHRhY2gyYSJ9CisJICAgICAgdGltZW91dCAgICAgICAg IHtmYWlsICIodGltZW91dCkgc2V0IGZpbGUsIGFmdGVyIGF0dGFjaDJhIn0K KwkgICAgfQorICAgICAgfSAKKworICAgICAgLXJlICIuKiA9IDAuKiRnZGJf cHJvbXB0ICQiXAorICAgICAgICAgICAgICAgICAgICAgIHtwYXNzICJhZnRl ciBhdHRhY2gyLCBwcmludCBzaG91bGRfZXhpdCJ9CisgICAgICAtcmUgIiRn ZGJfcHJvbXB0ICQiIHtmYWlsICJhZnRlciBhdHRhY2gyLCBwcmludCBzaG91 bGRfZXhpdCJ9CisgICAgICB0aW1lb3V0ICAgICAgICAge2ZhaWwgIih0aW1l b3V0KSBhZnRlciBhdHRhY2gyLCBwcmludCBzaG91bGRfZXhpdCJ9CisgICB9 CisKICAgICMgVmVyaWZ5IHRoYXQgd2UgY2FuIG1vZGlmeSB0aGUgdmFyaWFi bGUgInNob3VsZF9leGl0IiBpbiB0aGUKICAgICMgcHJvZ3JhbS4KICAgICMK QEAgLTM3Myw2ICs0MTcsOCBAQAogICAgICAgdGltZW91dCAgICAgICAgIHtm YWlsICIodGltZW91dCkgYXR0YWNoIGNhbGwifQogICAgfQogCisgICAjIFRo aXMgYXBwZWFycyB0byBiZSBwYWluZnVsbHkgSFAtVVggc3BlY2lmaWMuCisK ICAgICMgU2VlIGlmIG90aGVyIHJlZ2lzdGVycyBhcmUgcHJvYmxlbXMKICAg ICMKICAgIHNlbmRfZ2RiICJpIHIgcjNcbiIKQEAgLTM4Miw2ICs0MjgsOSBA QAogICAgICAgIH0KICAgICAgICAtcmUgIi4qcjMuKiRnZGJfcHJvbXB0ICQi IHsKICAgICAgICAgICAgcGFzcyAiQnVnIGZpeGVkLCBZYXl5eSEiCisgICAg ICAgfQorICAgICAgIC1yZSAiJGdkYl9wcm9tcHQgJCIgeworICAgICAgICAg ICBwYXNzICJBcHBhcmVudCBwYXNzLiIKICAgICAgICB9CiAgICAgICAgdGlt ZW91dCB7IGZhaWwgInRpbWVvdXQgb24gaW5mbyByZWciIH0KICAgIH0KLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkVuYWJsZSBsb29rdXAgb2Yg dGhlIG5hbWUgdGhlIHByb2dyYW0gd2FzIHN0YXJ0ZWQgd2l0aC4KCi0tLSBp Mzg2aW50ZXJpeC1uYXQuYy5zYXZlZAlGcmkgQXByICA1IDE1OjEzOjU4IDIw MDIKKysrIGkzODZpbnRlcml4LW5hdC5jCUZyaSBBcHIgIDUgMTU6Mjk6NTQg MjAwMgpAQCAtMjMsNyArMjMsOCBAQCBGb3VuZGF0aW9uLCBJbmMuLCA1OSBU ZW1wbGUgUGxhY2UgLSBTdWl0CiAjaW5jbHVkZSA8dWNvbnRleHQuaD4KICNp bmNsdWRlIDxmcmFtZS5oPgogI2luY2x1ZGUgPGluZmVyaW9yLmg+Ci0KKyNp bmNsdWRlIDxmY250bC5oPgorCiAjaW5jbHVkZSA8aTM4Ni10ZGVwLmg+CiAj aW5jbHVkZSAic3ltZmlsZS5oIgogI2luY2x1ZGUgIm9iamZpbGVzLmgiCkBA IC01NDUsMyArNTQ1LDQxIEBAIHBlaV9hZGp1c3Rfb2JqZmlsZV9vZmZzZXRz KHN0cnVjdCBvYmpmaWwKICAgICAgKG9iamZpbGUtPnNlY3Rpb25fb2Zmc2V0 cyktPm9mZnNldHNbaV0gKz0gc3ltYm9sc19vZmZzZXQ7CiAgICB9CiB9CisK Ky8qIFdlIGRvbid0IGhhdmUgYSAvcHJvYy9waWQvZmlsZSBvciAvcHJvYy9w aWQvZXhlIHRvIHJlYWQgYSBsaW5rIGZyb20sCisgICBzbyByZWFkIGl0IGZy b20gdGhlIHNhbWUgcGxhY2UgcHMgZ2V0cyB0aGUgbmFtZS4gICovCisKK2No YXIgKgorY2hpbGRfcGlkX3RvX2V4ZWNfZmlsZSAoaW50IHBpZCkKK3sKKyAg Y2hhciAqcGF0aDsKKyAgY2hhciAqYnVmOworICBpbnQgZmQsIGM7CisgIGNo YXIgKnA7CisKKyAgYXNwcmludGYgKCZwYXRoLCAiL3Byb2MvJWQvc3RhdCIs IHBpZCk7CisgIGJ1ZiA9IHhjYWxsb2MgKE1BWFBBVEhMRU4rMSwgc2l6ZW9m IChjaGFyKSk7CisgIG1ha2VfY2xlYW51cCAoeGZyZWUsIHBhdGgpOworICBt YWtlX2NsZWFudXAgKHhmcmVlLCBidWYpOworCisgIGZkID0gb3BlbiAocGF0 aCwgT19SRE9OTFkpOworCisgIGlmIChmZCA8IDApIAorICAgICAgcmV0dXJu IE5VTEw7CisKKyAgLyogU2tpcCBvdmVyICJBcmd2MFx0IiAqLworICBsc2Vl ayAoZmQsIDYsIFNFRUtfU0VUKTsKKworICBjID0gcmVhZCAoZmQsIGJ1Ziwg TUFYUEFUSExFTik7CisgIGNsb3NlIChmZCk7CisKKyAgaWYgKGMgPCAwKSAK KyAgICAgIHJldHVybiBOVUxMOworCisgIGJ1ZltjXSA9ICdcMCc7ICAvKiBF bnN1cmUgbnVsbCB0ZXJtaW50aW9uLiAqLworICBwID0gc3RyY2hyKGJ1Ziwg J1xuJyk7CisgIGlmIChwICE9IE5VTEwpCisgICAgICpwID0gJ1wwJzsKKwor ICByZXR1cm4gYnVmOworfQotLS0gY29uZmlnL2kzODYvbm0taW50ZXJpeC5o LnNhdmVkCUZyaSBBcHIgIDUgMTU6MzE6MzUgMjAwMgorKysgY29uZmlnL2kz ODYvbm0taW50ZXJpeC5oCUZyaSBBcHIgIDUgMTU6MzE6MDggMjAwMgpAQCAt NTgsNCArNTgsNyBAQCBleHRlcm4gaW50IGtlcm5lbF91X3NpemUgUEFSQU1T ICgodm9pZCkpCiAjZGVmaW5lIENPRkZfV0lUSF9QRQogI2RlZmluZSBDT0ZG X0lNQUdFX1dJVEhfUEUKIAorLyogVHVybiBvbiBvdXIgb3duIGNoaWxkX3Bp ZF90b19leGVjX2ZpbGUuICovCisjZGVmaW5lIENISUxEX1BJRF9UT19FWEVD X0ZJTEUKKwogI2VuZGlmIC8qIE5NX0lOVEVSSVhfSCAqLwotLS0gcHJvY2Zz LmMuc2F2ZWQJTW9uIEFwciAgOCAxODoxODoxOSAyMDAyCisrKyBwcm9jZnMu YwlTYXQgQXByICA2IDEyOjUwOjEwIDIwMDIKQEAgLTE4NSw4ICsxODUsOSBA QCBpbml0X3Byb2Nmc19vcHMgKHZvaWQpCiAgIHByb2Nmc19vcHMudG9fZmlu ZF9tZW1vcnlfcmVnaW9ucyA9IHByb2NfZmluZF9tZW1vcnlfcmVnaW9uczsK ICAgcHJvY2ZzX29wcy50b19tYWtlX2NvcmVmaWxlX25vdGVzID0gcHJvY2Zz X21ha2Vfbm90ZV9zZWN0aW9uOwogICBwcm9jZnNfb3BzLnRvX21hZ2ljICAg ICAgICAgICAgICAgPSBPUFNfTUFHSUM7Ci19Ci0KKyAgcHJvY2ZzX29wcy50 b19waWRfdG9fZXhlY19maWxlICAgID0gY2hpbGRfcGlkX3RvX2V4ZWNfZmls ZTsKK30KKwogLyogPT09PT09PT09PT09PT09PT09PSBFTkQsIFRBUkdFVF9P UFMgIk1PRFVMRSIgPT09PT09PT09PT09PT09PT09PSAqLwogCiAvKgo= ------_=_NextPart_001_01C2399E.192A7BA6--