From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Kaleb S. KEITHLEY To: git-commits@fedoraproject.org Subject: [rpms/ceph] rawhide: rebuild for libarrow (Apache Arrow) 25.0.1 Date: Fri, 11 Sep 2026 22:53:32 GMT Message-ID: <178916721287.1.11530680052752961667.rpms-ceph-3daa3e61651a@fedoraproject.org> List-ID: X-Git-Repo: rpms/ceph X-Git-Branch: rawhide X-Git-Rev: 3daa3e61651ae958b3f095a65c00546270df5d2f ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvY2VwaAogICAgICAgICAgICBCcmFuY2ggOiByYXdoaWRlCiAgICAgICAgICAg IENvbW1pdCA6IDNkYWEzZTYxNjUxYWU5NThiM2YwOTVhNjVjMDA1NDYyNzBkZjVkMmYKICAgICAg ICAgICAgQXV0aG9yIDogS2FsZWIgUy4gS0VJVEhMRVkgPGtrZWl0aGxlQHJlZGhhdC5jb20+CiAg ICAgICAgICAgIERhdGUgICA6IDIwMjYtMDktMTFUMTg6NTI6NDAtMDQ6MDAKICAgICAgICAgICAg U3RhdHMgIDogKzI5Ni8tODQwIGluIDMgZmlsZShzKQogICAgICAgICAgICBVUkwgICAgOiBodHRw czovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2NlcGgvYy8zZGFhM2U2MTY1MWFlOTU4YjNm MDk1YTY1YzAwNTQ2MjcwZGY1ZDJmP2JyYW5jaD1yYXdoaWRlCgogICAgICAgICAgICBMb2c6CiAg ICAgICAgICAgIHJlYnVpbGQgZm9yIGxpYmFycm93IChBcGFjaGUgQXJyb3cpIDI1LjAuMQpzaWRl IHRhZzogZjQ2LWJ1aWxkLXNpZGUtMTUxMjg3CgotLS0KZGlmZiAtLWdpdCBhLzAwNTYtbGliYXJy b3ctMjAuMC4wLnBhdGNoIGIvMDA1Ni1saWJhcnJvdy0yMC4wLjAucGF0Y2gKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDEyY2I5Y2YuLjAwMDAwMDAKLS0tIGEvMDA1Ni1saWJhcnJvdy0y MC4wLjAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4MzggKzAsMCBAQAotLS0tIGNlcGgtMjAu MC4wLTIzNjItZ2E5ZDIwZmMwL3NyYy9zM3NlbGVjdC9pbmNsdWRlL2VuY3J5cHRpb25faW50ZXJu YWxfMTkuaC5vcmlnCTIwMjUtMDctMDggMDc6NDA6MjkuODExODE0NTQ5IC0wNDAwCi0rKysgY2Vw aC0yMC4wLjAtMjM2Mi1nYTlkMjBmYzAvc3JjL3Mzc2VsZWN0L2luY2x1ZGUvZW5jcnlwdGlvbl9p bnRlcm5hbF8xOS5oCTIwMjUtMDctMDggMDc6NDA6MjkuODExNzM5MjkwIC0wNDAwCi1AQCAtMCww ICsxLDExNCBAQAotKy8vIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlv biAoQVNGKSB1bmRlciBvbmUKLSsvLyBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVt ZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKLSsvLyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29y ayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgotKy8vIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3du ZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKLSsvLyB0byB5b3UgdW5kZXIgdGhl IEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCi0rLy8gIkxpY2Vuc2UiKTsgeW91IG1h eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQotKy8vIHdpdGggdGhlIExp Y2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSsvLwotKy8v ICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0rLy8KLSsvLyBV bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcs Ci0rLy8gc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0 ZWQgb24gYW4KLSsvLyAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElU SU9OUyBPRiBBTlkKLSsvLyBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRo ZSBMaWNlbnNlIGZvciB0aGUKLSsvLyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlz c2lvbnMgYW5kIGxpbWl0YXRpb25zCi0rLy8gdW5kZXIgdGhlIExpY2Vuc2UuCi0rCi0rI3ByYWdt YSBvbmNlCi0rCi0rI2luY2x1ZGUgPG1lbW9yeT4KLSsjaW5jbHVkZSA8c3RyaW5nPgotKyNpbmNs dWRlIDx2ZWN0b3I+Ci0rCi0rI2luY2x1ZGUgInBhcnF1ZXQvcHJvcGVydGllcy5oIgotKyNpbmNs dWRlICJwYXJxdWV0L3R5cGVzLmgiCi0rCi0rdXNpbmcgcGFycXVldDo6UGFycXVldENpcGhlcjsK LSsKLStuYW1lc3BhY2UgcGFycXVldCB7Ci0rbmFtZXNwYWNlIGVuY3J5cHRpb24gewotKwotK2Nv bnN0ZXhwciBpbnQga0djbVRhZ0xlbmd0aCA9IDE2OwotK2NvbnN0ZXhwciBpbnQga05vbmNlTGVu Z3RoID0gMTI7Ci0rCi0rLy8gTW9kdWxlIHR5cGVzCi0rY29uc3RleHByIGludDhfdCBrRm9vdGVy ID0gMDsKLStjb25zdGV4cHIgaW50OF90IGtDb2x1bW5NZXRhRGF0YSA9IDE7Ci0rY29uc3RleHBy IGludDhfdCBrRGF0YVBhZ2UgPSAyOwotK2NvbnN0ZXhwciBpbnQ4X3Qga0RpY3Rpb25hcnlQYWdl ID0gMzsKLStjb25zdGV4cHIgaW50OF90IGtEYXRhUGFnZUhlYWRlciA9IDQ7Ci0rY29uc3RleHBy IGludDhfdCBrRGljdGlvbmFyeVBhZ2VIZWFkZXIgPSA1OwotK2NvbnN0ZXhwciBpbnQ4X3Qga0Nv bHVtbkluZGV4ID0gNjsKLStjb25zdGV4cHIgaW50OF90IGtPZmZzZXRJbmRleCA9IDc7Ci0rCi0r Ly8vIFBlcmZvcm1zIEFFUyBlbmNyeXB0aW9uIG9wZXJhdGlvbnMgd2l0aCBHQ00gb3IgQ1RSIGNp cGhlcnMuCi0rY2xhc3MgQWVzRW5jcnlwdG9yIHsKLSsgcHVibGljOgotKyAgc3RhdGljIEFlc0Vu Y3J5cHRvciogTWFrZShQYXJxdWV0Q2lwaGVyOjp0eXBlIGFsZ19pZCwgaW50IGtleV9sZW4sIGJv b2wgbWV0YWRhdGEsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPEFl c0VuY3J5cHRvcio+KiBhbGxfZW5jcnlwdG9ycyk7Ci0rCi0rICB+QWVzRW5jcnlwdG9yKCk7Ci0r Ci0rICAvLy8gU2l6ZSBkaWZmZXJlbmNlIGJldHdlZW4gcGxhaW50ZXh0IGFuZCBjaXBoZXJ0ZXh0 LCBmb3IgdGhpcyBjaXBoZXIuCi0rICBpbnQgQ2lwaGVydGV4dFNpemVEZWx0YSgpOwotKwotKyAg Ly8vIEVuY3J5cHRzIHBsYWludGV4dCB3aXRoIHRoZSBrZXkgYW5kIGFhZC4gS2V5IGxlbmd0aCBp cyBwYXNzZWQgb25seSBmb3IgdmFsaWRhdGlvbi4KLSsgIC8vLyBJZiBkaWZmZXJlbnQgZnJvbSB2 YWx1ZSBpbiBjb25zdHJ1Y3RvciwgZXhjZXB0aW9uIHdpbGwgYmUgdGhyb3duLgotKyAgaW50IEVu Y3J5cHQoY29uc3QgdWludDhfdCogcGxhaW50ZXh0LCBpbnQgcGxhaW50ZXh0X2xlbiwgY29uc3Qg dWludDhfdCoga2V5LAotKyAgICAgICAgICAgICAgaW50IGtleV9sZW4sIGNvbnN0IHVpbnQ4X3Qq IGFhZCwgaW50IGFhZF9sZW4sIHVpbnQ4X3QqIGNpcGhlcnRleHQpOwotKwotKyAgLy8vIEVuY3J5 cHRzIHBsYWludGV4dCBmb290ZXIsIGluIG9yZGVyIHRvIGNvbXB1dGUgZm9vdGVyIHNpZ25hdHVy ZSAodGFnKS4KLSsgIGludCBTaWduZWRGb290ZXJFbmNyeXB0KGNvbnN0IHVpbnQ4X3QqIGZvb3Rl ciwgaW50IGZvb3Rlcl9sZW4sIGNvbnN0IHVpbnQ4X3QqIGtleSwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgIGludCBrZXlfbGVuLCBjb25zdCB1aW50OF90KiBhYWQsIGludCBhYWRfbGVuLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCogbm9uY2UsIHVpbnQ4X3Qq IGVuY3J5cHRlZF9mb290ZXIpOwotKwotKyAgdm9pZCBXaXBlT3V0KCk7Ci0rCi0rIHByaXZhdGU6 Ci0rICAvLy8gQ2FuIHNlcnZlIG9uZSBrZXkgbGVuZ3RoIG9ubHkuIFBvc3NpYmxlIHZhbHVlczog MTYsIDI0LCAzMiBieXRlcy4KLSsgIGV4cGxpY2l0IEFlc0VuY3J5cHRvcihQYXJxdWV0Q2lwaGVy Ojp0eXBlIGFsZ19pZCwgaW50IGtleV9sZW4sIGJvb2wgbWV0YWRhdGEpOwotKyAgLy8gUElNUEwg SWRpb20KLSsgIGNsYXNzIEFlc0VuY3J5cHRvckltcGw7Ci0rICBzdGQ6OnVuaXF1ZV9wdHI8QWVz RW5jcnlwdG9ySW1wbD4gaW1wbF87Ci0rfTsKLSsKLSsvLy8gUGVyZm9ybXMgQUVTIGRlY3J5cHRp b24gb3BlcmF0aW9ucyB3aXRoIEdDTSBvciBDVFIgY2lwaGVycy4KLStjbGFzcyBBZXNEZWNyeXB0 b3IgewotKyBwdWJsaWM6Ci0rICBzdGF0aWMgQWVzRGVjcnlwdG9yKiBNYWtlKFBhcnF1ZXRDaXBo ZXI6OnR5cGUgYWxnX2lkLCBpbnQga2V5X2xlbiwgYm9vbCBtZXRhZGF0YSwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8QWVzRGVjcnlwdG9yKj4qIGFsbF9kZWNyeXB0 b3JzKTsKLSsKLSsgIH5BZXNEZWNyeXB0b3IoKTsKLSsgIHZvaWQgV2lwZU91dCgpOwotKwotKyAg Ly8vIFNpemUgZGlmZmVyZW5jZSBiZXR3ZWVuIHBsYWludGV4dCBhbmQgY2lwaGVydGV4dCwgZm9y IHRoaXMgY2lwaGVyLgotKyAgaW50IENpcGhlcnRleHRTaXplRGVsdGEoKTsKLSsKLSsgIC8vLyBE ZWNyeXB0cyBjaXBoZXJ0ZXh0IHdpdGggdGhlIGtleSBhbmQgYWFkLiBLZXkgbGVuZ3RoIGlzIHBh c3NlZCBvbmx5IGZvcgotKyAgLy8vIHZhbGlkYXRpb24uIElmIGRpZmZlcmVudCBmcm9tIHZhbHVl IGluIGNvbnN0cnVjdG9yLCBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24uCi0rICBpbnQgRGVjcnlw dChjb25zdCB1aW50OF90KiBjaXBoZXJ0ZXh0LCBpbnQgY2lwaGVydGV4dF9sZW4sIGNvbnN0IHVp bnQ4X3QqIGtleSwKLSsgICAgICAgICAgICAgIGludCBrZXlfbGVuLCBjb25zdCB1aW50OF90KiBh YWQsIGludCBhYWRfbGVuLCB1aW50OF90KiBwbGFpbnRleHQpOwotKwotKyBwcml2YXRlOgotKyAg Ly8vIENhbiBzZXJ2ZSBvbmUga2V5IGxlbmd0aCBvbmx5LiBQb3NzaWJsZSB2YWx1ZXM6IDE2LCAy NCwgMzIgYnl0ZXMuCi0rICBleHBsaWNpdCBBZXNEZWNyeXB0b3IoUGFycXVldENpcGhlcjo6dHlw ZSBhbGdfaWQsIGludCBrZXlfbGVuLCBib29sIG1ldGFkYXRhKTsKLSsgIC8vIFBJTVBMIElkaW9t Ci0rICBjbGFzcyBBZXNEZWNyeXB0b3JJbXBsOwotKyAgc3RkOjp1bmlxdWVfcHRyPEFlc0RlY3J5 cHRvckltcGw+IGltcGxfOwotK307Ci0rCi0rc3RkOjpzdHJpbmcgQ3JlYXRlTW9kdWxlQWFkKGNv bnN0IHN0ZDo6c3RyaW5nJiBmaWxlX2FhZCwgaW50OF90IG1vZHVsZV90eXBlLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQxNl90IHJvd19ncm91cF9vcmRpbmFsLCBpbnQxNl90IGNv bHVtbl9vcmRpbmFsLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQxNl90IHBhZ2Vf b3JkaW5hbCk7Ci0rCi0rc3RkOjpzdHJpbmcgQ3JlYXRlRm9vdGVyQWFkKGNvbnN0IHN0ZDo6c3Ry aW5nJiBhYWRfcHJlZml4X2J5dGVzKTsKLSsKLSsvLyBVcGRhdGUgbGFzdCB0d28gYnl0ZXMgb2Yg cGFnZSAob3IgcGFnZSBoZWFkZXIpIG1vZHVsZSBBQUQKLSt2b2lkIFF1aWNrVXBkYXRlUGFnZUFh ZChjb25zdCBzdGQ6OnN0cmluZyYgQUFELCBpbnQxNl90IG5ld19wYWdlX29yZGluYWwpOwotKwot Ky8vIFdyYXBzIE9wZW5TU0wgUkFORF9ieXRlcyBmdW5jdGlvbgotK3ZvaWQgUmFuZEJ5dGVzKHVu c2lnbmVkIGNoYXIqIGJ1ZiwgaW50IG51bSk7Ci0rCi0rfSAgLy8gbmFtZXNwYWNlIGVuY3J5cHRp b24KLSt9ICAvLyBuYW1lc3BhY2UgcGFycXVldAotLS0tIGNlcGgtMjAuMC4wLTIzNjItZ2E5ZDIw ZmMwL3NyYy9zM3NlbGVjdC9pbmNsdWRlL2VuY3J5cHRpb25faW50ZXJuYWxfMjAuaC5vcmlnCTIw MjUtMDctMDggMDc6NDA6MjkuODEyNzU5OTQ4IC0wNDAwCi0rKysgY2VwaC0yMC4wLjAtMjM2Mi1n YTlkMjBmYzAvc3JjL3Mzc2VsZWN0L2luY2x1ZGUvZW5jcnlwdGlvbl9pbnRlcm5hbF8yMC5oCTIw MjUtMDctMDggMDc6NDA6MjkuODEyNjg3NTM2IC0wNDAwCi1AQCAtMCwwICsxLDE0MSBAQAotKy8v IExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBv bmUKLSsvLyBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUg Tk9USUNFIGZpbGUKLSsvLyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25h bCBpbmZvcm1hdGlvbgotKy8vIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFT RiBsaWNlbnNlcyB0aGlzIGZpbGUKLSsvLyB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNl LCBWZXJzaW9uIDIuMCAodGhlCi0rLy8gIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMg ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQotKy8vIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5 IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSsvLwotKy8vICAgaHR0cDovL3d3dy5h cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0rLy8KLSsvLyBVbmxlc3MgcmVxdWlyZWQg YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCi0rLy8gc29mdHdhcmUg ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KLSsvLyAi QVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKLSsv LyBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0 aGUKLSsvLyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0 YXRpb25zCi0rLy8gdW5kZXIgdGhlIExpY2Vuc2UuCi0rCi0rI3ByYWdtYSBvbmNlCi0rCi0rI2lu Y2x1ZGUgPG1lbW9yeT4KLSsjaW5jbHVkZSA8c3RyaW5nPgotKyNpbmNsdWRlIDx2ZWN0b3I+Ci0r Ci0rI2luY2x1ZGUgImFycm93L3V0aWwvc3Bhbi5oIgotKyNpbmNsdWRlICJwYXJxdWV0L3Byb3Bl cnRpZXMuaCIKLSsjaW5jbHVkZSAicGFycXVldC90eXBlcy5oIgotKwotK3VzaW5nIHBhcnF1ZXQ6 OlBhcnF1ZXRDaXBoZXI7Ci0rCi0rbmFtZXNwYWNlIHBhcnF1ZXQ6OmVuY3J5cHRpb24gewotKwot K2NvbnN0ZXhwciBpbnQzMl90IGtHY21UYWdMZW5ndGggPSAxNjsKLStjb25zdGV4cHIgaW50MzJf dCBrTm9uY2VMZW5ndGggPSAxMjsKLSsKLSsvLyBNb2R1bGUgdHlwZXMKLStjb25zdGV4cHIgaW50 OF90IGtGb290ZXIgPSAwOwotK2NvbnN0ZXhwciBpbnQ4X3Qga0NvbHVtbk1ldGFEYXRhID0gMTsK LStjb25zdGV4cHIgaW50OF90IGtEYXRhUGFnZSA9IDI7Ci0rY29uc3RleHByIGludDhfdCBrRGlj dGlvbmFyeVBhZ2UgPSAzOwotK2NvbnN0ZXhwciBpbnQ4X3Qga0RhdGFQYWdlSGVhZGVyID0gNDsK LStjb25zdGV4cHIgaW50OF90IGtEaWN0aW9uYXJ5UGFnZUhlYWRlciA9IDU7Ci0rY29uc3RleHBy IGludDhfdCBrQ29sdW1uSW5kZXggPSA2OwotK2NvbnN0ZXhwciBpbnQ4X3Qga09mZnNldEluZGV4 ID0gNzsKLStjb25zdGV4cHIgaW50OF90IGtCbG9vbUZpbHRlckhlYWRlciA9IDg7Ci0rY29uc3Rl eHByIGludDhfdCBrQmxvb21GaWx0ZXJCaXRzZXQgPSA5OwotKwotKy8vLyBQZXJmb3JtcyBBRVMg ZW5jcnlwdGlvbiBvcGVyYXRpb25zIHdpdGggR0NNIG9yIENUUiBjaXBoZXJzLgotK2NsYXNzIFBB UlFVRVRfRVhQT1JUIEFlc0VuY3J5cHRvciB7Ci0rIHB1YmxpYzoKLSsgIC8vLyBDYW4gc2VydmUg b25lIGtleSBsZW5ndGggb25seS4gUG9zc2libGUgdmFsdWVzOiAxNiwgMjQsIDMyIGJ5dGVzLgot KyAgLy8vIElmIHdyaXRlX2xlbmd0aCBpcyB0cnVlLCBwcmVwZW5kIGNpcGhlcnRleHQgbGVuZ3Ro IHRvIHRoZSBjaXBoZXJ0ZXh0Ci0rICBleHBsaWNpdCBBZXNFbmNyeXB0b3IoUGFycXVldENpcGhl cjo6dHlwZSBhbGdfaWQsIGludDMyX3Qga2V5X2xlbiwgYm9vbCBtZXRhZGF0YSwKLSsgICAgICAg ICAgICAgICAgICAgICAgICBib29sIHdyaXRlX2xlbmd0aCA9IHRydWUpOwotKwotKyAgc3RhdGlj IHN0ZDo6dW5pcXVlX3B0cjxBZXNFbmNyeXB0b3I+IE1ha2UoUGFycXVldENpcGhlcjo6dHlwZSBh bGdfaWQsIGludDMyX3Qga2V5X2xlbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGJvb2wgbWV0YWRhdGEsIGJvb2wgd3JpdGVfbGVuZ3RoID0gdHJ1ZSk7Ci0r Ci0rICB+QWVzRW5jcnlwdG9yKCk7Ci0rCi0rICAvLy8gVGhlIHNpemUgb2YgdGhlIGNpcGhlcnRl eHQsIGZvciB0aGlzIGNpcGhlciBhbmQgdGhlIHNwZWNpZmllZCBwbGFpbnRleHQgbGVuZ3RoLgot KyAgW1tub2Rpc2NhcmRdXSBpbnQzMl90IENpcGhlcnRleHRMZW5ndGgoaW50NjRfdCBwbGFpbnRl eHRfbGVuKSBjb25zdDsKLSsKLSsgIC8vLyBFbmNyeXB0cyBwbGFpbnRleHQgd2l0aCB0aGUga2V5 IGFuZCBhYWQuIEtleSBsZW5ndGggaXMgcGFzc2VkIG9ubHkgZm9yIHZhbGlkYXRpb24uCi0rICAv Ly8gSWYgZGlmZmVyZW50IGZyb20gdmFsdWUgaW4gY29uc3RydWN0b3IsIGV4Y2VwdGlvbiB3aWxs IGJlIHRocm93bi4KLSsgIGludDMyX3QgRW5jcnlwdCg6OmFycm93Ojp1dGlsOjpzcGFuPGNvbnN0 IHVpbnQ4X3Q+IHBsYWludGV4dCwKLSsgICAgICAgICAgICAgICAgICA6OmFycm93Ojp1dGlsOjpz cGFuPGNvbnN0IHVpbnQ4X3Q+IGtleSwKLSsgICAgICAgICAgICAgICAgICA6OmFycm93Ojp1dGls OjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGFhZCwKLSsgICAgICAgICAgICAgICAgICA6OmFycm93Ojp1 dGlsOjpzcGFuPHVpbnQ4X3Q+IGNpcGhlcnRleHQpOwotKwotKyAgLy8vIEVuY3J5cHRzIHBsYWlu dGV4dCBmb290ZXIsIGluIG9yZGVyIHRvIGNvbXB1dGUgZm9vdGVyIHNpZ25hdHVyZSAodGFnKS4K LSsgIGludDMyX3QgU2lnbmVkRm9vdGVyRW5jcnlwdCg6OmFycm93Ojp1dGlsOjpzcGFuPGNvbnN0 IHVpbnQ4X3Q+IGZvb3RlciwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OmFycm93 Ojp1dGlsOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGtleSwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA6OmFycm93Ojp1dGlsOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGFhZCwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA6OmFycm93Ojp1dGlsOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+ IG5vbmNlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6YXJyb3c6OnV0aWw6OnNw YW48dWludDhfdD4gZW5jcnlwdGVkX2Zvb3Rlcik7Ci0rCi0rIHByaXZhdGU6Ci0rICAvLyBQSU1Q TCBJZGlvbQotKyAgY2xhc3MgQWVzRW5jcnlwdG9ySW1wbDsKLSsgIHN0ZDo6dW5pcXVlX3B0cjxB ZXNFbmNyeXB0b3JJbXBsPiBpbXBsXzsKLSt9OwotKwotKy8vLyBQZXJmb3JtcyBBRVMgZGVjcnlw dGlvbiBvcGVyYXRpb25zIHdpdGggR0NNIG9yIENUUiBjaXBoZXJzLgotK2NsYXNzIFBBUlFVRVRf RVhQT1JUIEFlc0RlY3J5cHRvciB7Ci0rIHB1YmxpYzoKLSsgIC8vLyBcYnJpZWYgQ29uc3RydWN0 IGFuIEFlc0RlY3J5cHRvcgotKyAgLy8vCi0rICAvLy8gXHBhcmFtIGFsZ19pZCB0aGUgZW5jcnlw dGlvbiBhbGdvcml0aG0gdG8gdXNlCi0rICAvLy8gXHBhcmFtIGtleV9sZW4ga2V5IGxlbmd0aC4g UG9zc2libGUgdmFsdWVzOiAxNiwgMjQsIDMyIGJ5dGVzLgotKyAgLy8vIFxwYXJhbSBtZXRhZGF0 YSBpZiB0cnVlIHRoZW4gdGhpcyBpcyBhIG1ldGFkYXRhIGRlY3J5cHRvcgotKyAgLy8vIFxwYXJh bSBjb250YWluc19sZW5ndGggaWYgdHJ1ZSwgZXhwZWN0IGNpcGhlcnRleHQgbGVuZ3RoIHByZXBl bmRlZCB0byB0aGUgY2lwaGVydGV4dAotKyAgZXhwbGljaXQgQWVzRGVjcnlwdG9yKFBhcnF1ZXRD aXBoZXI6OnR5cGUgYWxnX2lkLCBpbnQzMl90IGtleV9sZW4sIGJvb2wgbWV0YWRhdGEsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgYm9vbCBjb250YWluc19sZW5ndGggPSB0cnVlKTsKLSsKLSsg IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWVzRGVjcnlwdG9yPiBNYWtlKFBhcnF1ZXRDaXBoZXI6 OnR5cGUgYWxnX2lkLCBpbnQzMl90IGtleV9sZW4sCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBib29sIG1ldGFkYXRhKTsKLSsKLSsgIH5BZXNEZWNyeXB0b3Io KTsKLSsKLSsgIC8vLyBUaGUgc2l6ZSBvZiB0aGUgcGxhaW50ZXh0LCBmb3IgdGhpcyBjaXBoZXIg YW5kIHRoZSBzcGVjaWZpZWQgY2lwaGVydGV4dCBsZW5ndGguCi0rICBbW25vZGlzY2FyZF1dIGlu dDMyX3QgUGxhaW50ZXh0TGVuZ3RoKGludDMyX3QgY2lwaGVydGV4dF9sZW4pIGNvbnN0OwotKwot KyAgLy8vIFRoZSBzaXplIG9mIHRoZSBjaXBoZXJ0ZXh0LCBmb3IgdGhpcyBjaXBoZXIgYW5kIHRo ZSBzcGVjaWZpZWQgcGxhaW50ZXh0IGxlbmd0aC4KLSsgIFtbbm9kaXNjYXJkXV0gaW50MzJfdCBD aXBoZXJ0ZXh0TGVuZ3RoKGludDMyX3QgcGxhaW50ZXh0X2xlbikgY29uc3Q7Ci0rCi0rICAvLy8g RGVjcnlwdHMgY2lwaGVydGV4dCB3aXRoIHRoZSBrZXkgYW5kIGFhZC4gS2V5IGxlbmd0aCBpcyBw YXNzZWQgb25seSBmb3IKLSsgIC8vLyB2YWxpZGF0aW9uLiBJZiBkaWZmZXJlbnQgZnJvbSB2YWx1 ZSBpbiBjb25zdHJ1Y3RvciwgZXhjZXB0aW9uIHdpbGwgYmUgdGhyb3duLgotKyAgLy8vIFRoZSBj YWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGVuc3VyaW5nIHRoYXQgdGhlIHBsYWludGV4dCBidWZm ZXIgaXMgYXQgbGVhc3QgYXMKLSsgIC8vLyBsYXJnZSBhcyBQbGFpbnRleHRMZW5ndGgoY2lwaGVy dGV4dF9sZW4pLgotKyAgaW50MzJfdCBEZWNyeXB0KDo6YXJyb3c6OnV0aWw6OnNwYW48Y29uc3Qg dWludDhfdD4gY2lwaGVydGV4dCwKLSsgICAgICAgICAgICAgICAgICA6OmFycm93Ojp1dGlsOjpz cGFuPGNvbnN0IHVpbnQ4X3Q+IGtleSwKLSsgICAgICAgICAgICAgICAgICA6OmFycm93Ojp1dGls OjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGFhZCwKLSsgICAgICAgICAgICAgICAgICA6OmFycm93Ojp1 dGlsOjpzcGFuPHVpbnQ4X3Q+IHBsYWludGV4dCk7Ci0rCi0rIHByaXZhdGU6Ci0rICAvLyBQSU1Q TCBJZGlvbQotKyAgY2xhc3MgQWVzRGVjcnlwdG9ySW1wbDsKLSsgIHN0ZDo6dW5pcXVlX3B0cjxB ZXNEZWNyeXB0b3JJbXBsPiBpbXBsXzsKLSt9OwotKwotK3N0ZDo6c3RyaW5nIENyZWF0ZU1vZHVs ZUFhZChjb25zdCBzdGQ6OnN0cmluZyYgZmlsZV9hYWQsIGludDhfdCBtb2R1bGVfdHlwZSwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCByb3dfZ3JvdXBfb3JkaW5hbCwgaW50 MTZfdCBjb2x1bW5fb3JkaW5hbCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJf dCBwYWdlX29yZGluYWwpOwotKwotK3N0ZDo6c3RyaW5nIENyZWF0ZUZvb3RlckFhZChjb25zdCBz dGQ6OnN0cmluZyYgYWFkX3ByZWZpeF9ieXRlcyk7Ci0rCi0rLy8gVXBkYXRlIGxhc3QgdHdvIGJ5 dGVzIG9mIHBhZ2UgKG9yIHBhZ2UgaGVhZGVyKSBtb2R1bGUgQUFECi0rdm9pZCBRdWlja1VwZGF0 ZVBhZ2VBYWQoaW50MzJfdCBuZXdfcGFnZV9vcmRpbmFsLCBzdGQ6OnN0cmluZyogQUFEKTsKLSsK LSsvLyBXcmFwcyBPcGVuU1NMIFJBTkRfYnl0ZXMgZnVuY3Rpb24KLSt2b2lkIFJhbmRCeXRlcyh1 bnNpZ25lZCBjaGFyKiBidWYsIHNpemVfdCBudW0pOwotKwotKy8vIEVuc3VyZSBPcGVuU1NMIGlz IGluaXRpYWxpemVkLgotKy8vCi0rLy8gVGhpcyBpcyBvbmx5IG5lY2Vzc2FyeSBpbiBzcGVjaWZp YyBzaXR1YXRpb25zIHNpbmNlIE9wZW5TU0wgb3RoZXJ3aXNlCi0rLy8gaW5pdGlhbGl6ZXMgaXRz ZWxmIGF1dG9tYXRpY2FsbHkuIEZvciBleGFtcGxlLCB1bmRlciBWYWxncmluZCwgYSBtZW1vcnkK LSsvLyBsZWFrIHdpbGwgYmUgcmVwb3J0ZWQgaWYgT3BlblNTTCBpcyBpbml0aWFsaXplZCBmb3Ig dGhlIGZpcnN0IHRpbWUgZnJvbQotKy8vIGEgd29ya2VyIHRocmVhZDsgY2FsbGluZyB0aGlzIGZ1 bmN0aW9uIGZyb20gdGhlIG1haW4gdGhyZWFkIHByZXZlbnRzIHRoaXMuCi0rdm9pZCBFbnN1cmVC YWNrZW5kSW5pdGlhbGl6ZWQoKTsKLSsKLSt9ICAvLyBuYW1lc3BhY2UgcGFycXVldDo6ZW5jcnlw dGlvbgotLS0tIGNlcGgtMjAuMC4wLTIzNjItZ2E5ZDIwZmMwL3NyYy9zM3NlbGVjdC9pbmNsdWRl L2VuY3J5cHRpb25faW50ZXJuYWwuaC5vcmlnCTIwMjQtMTAtMDYgMDc6MTg6NDEuMDAwMDAwMDAw IC0wNDAwCi0rKysgY2VwaC0yMC4wLjAtMjM2Mi1nYTlkMjBmYzAvc3JjL3Mzc2VsZWN0L2luY2x1 ZGUvZW5jcnlwdGlvbl9pbnRlcm5hbC5oCTIwMjUtMDctMDggMDc6NDA6MjkuODA5OTA4ODkxIC0w NDAwCi1AQCAtMTcsOTggKzE3LDggQEAKLSAKLSAjcHJhZ21hIG9uY2UKLSAKLS0jaW5jbHVkZSA8 bWVtb3J5PgotLSNpbmNsdWRlIDxzdHJpbmc+Ci0tI2luY2x1ZGUgPHZlY3Rvcj4KLS0KLS0jaW5j bHVkZSAicGFycXVldC9wcm9wZXJ0aWVzLmgiCi0tI2luY2x1ZGUgInBhcnF1ZXQvdHlwZXMuaCIK LS0KLS11c2luZyBwYXJxdWV0OjpQYXJxdWV0Q2lwaGVyOwotLQotLW5hbWVzcGFjZSBwYXJxdWV0 IHsKLS1uYW1lc3BhY2UgZW5jcnlwdGlvbiB7Ci0tCi0tY29uc3RleHByIGludCBrR2NtVGFnTGVu Z3RoID0gMTY7Ci0tY29uc3RleHByIGludCBrTm9uY2VMZW5ndGggPSAxMjsKLS0KLS0vLyBNb2R1 bGUgdHlwZXMKLS1jb25zdGV4cHIgaW50OF90IGtGb290ZXIgPSAwOwotLWNvbnN0ZXhwciBpbnQ4 X3Qga0NvbHVtbk1ldGFEYXRhID0gMTsKLS1jb25zdGV4cHIgaW50OF90IGtEYXRhUGFnZSA9IDI7 Ci0tY29uc3RleHByIGludDhfdCBrRGljdGlvbmFyeVBhZ2UgPSAzOwotLWNvbnN0ZXhwciBpbnQ4 X3Qga0RhdGFQYWdlSGVhZGVyID0gNDsKLS1jb25zdGV4cHIgaW50OF90IGtEaWN0aW9uYXJ5UGFn ZUhlYWRlciA9IDU7Ci0tY29uc3RleHByIGludDhfdCBrQ29sdW1uSW5kZXggPSA2OwotLWNvbnN0 ZXhwciBpbnQ4X3Qga09mZnNldEluZGV4ID0gNzsKLS0KLS0vLy8gUGVyZm9ybXMgQUVTIGVuY3J5 cHRpb24gb3BlcmF0aW9ucyB3aXRoIEdDTSBvciBDVFIgY2lwaGVycy4KLS1jbGFzcyBBZXNFbmNy eXB0b3IgewotLSBwdWJsaWM6Ci0tICBzdGF0aWMgQWVzRW5jcnlwdG9yKiBNYWtlKFBhcnF1ZXRD aXBoZXI6OnR5cGUgYWxnX2lkLCBpbnQga2V5X2xlbiwgYm9vbCBtZXRhZGF0YSwKLS0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8QWVzRW5jcnlwdG9yKj4qIGFsbF9lbmNy eXB0b3JzKTsKLS0KLS0gIH5BZXNFbmNyeXB0b3IoKTsKLS0KLS0gIC8vLyBTaXplIGRpZmZlcmVu Y2UgYmV0d2VlbiBwbGFpbnRleHQgYW5kIGNpcGhlcnRleHQsIGZvciB0aGlzIGNpcGhlci4KLS0g IGludCBDaXBoZXJ0ZXh0U2l6ZURlbHRhKCk7Ci0tCi0tICAvLy8gRW5jcnlwdHMgcGxhaW50ZXh0 IHdpdGggdGhlIGtleSBhbmQgYWFkLiBLZXkgbGVuZ3RoIGlzIHBhc3NlZCBvbmx5IGZvciB2YWxp ZGF0aW9uLgotLSAgLy8vIElmIGRpZmZlcmVudCBmcm9tIHZhbHVlIGluIGNvbnN0cnVjdG9yLCBl eGNlcHRpb24gd2lsbCBiZSB0aHJvd24uCi0tICBpbnQgRW5jcnlwdChjb25zdCB1aW50OF90KiBw bGFpbnRleHQsIGludCBwbGFpbnRleHRfbGVuLCBjb25zdCB1aW50OF90KiBrZXksCi0tICAgICAg ICAgICAgICBpbnQga2V5X2xlbiwgY29uc3QgdWludDhfdCogYWFkLCBpbnQgYWFkX2xlbiwgdWlu dDhfdCogY2lwaGVydGV4dCk7Ci0tCi0tICAvLy8gRW5jcnlwdHMgcGxhaW50ZXh0IGZvb3Rlciwg aW4gb3JkZXIgdG8gY29tcHV0ZSBmb290ZXIgc2lnbmF0dXJlICh0YWcpLgotLSAgaW50IFNpZ25l ZEZvb3RlckVuY3J5cHQoY29uc3QgdWludDhfdCogZm9vdGVyLCBpbnQgZm9vdGVyX2xlbiwgY29u c3QgdWludDhfdCoga2V5LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGtleV9sZW4s IGNvbnN0IHVpbnQ4X3QqIGFhZCwgaW50IGFhZF9sZW4sCi0tICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCB1aW50OF90KiBub25jZSwgdWludDhfdCogZW5jcnlwdGVkX2Zvb3Rlcik7Ci0t Ci0tICB2b2lkIFdpcGVPdXQoKTsKLS0KLS0gcHJpdmF0ZToKLS0gIC8vLyBDYW4gc2VydmUgb25l IGtleSBsZW5ndGggb25seS4gUG9zc2libGUgdmFsdWVzOiAxNiwgMjQsIDMyIGJ5dGVzLgotLSAg ZXhwbGljaXQgQWVzRW5jcnlwdG9yKFBhcnF1ZXRDaXBoZXI6OnR5cGUgYWxnX2lkLCBpbnQga2V5 X2xlbiwgYm9vbCBtZXRhZGF0YSk7Ci0tICAvLyBQSU1QTCBJZGlvbQotLSAgY2xhc3MgQWVzRW5j cnlwdG9ySW1wbDsKLS0gIHN0ZDo6dW5pcXVlX3B0cjxBZXNFbmNyeXB0b3JJbXBsPiBpbXBsXzsK LS19OwotLQotLS8vLyBQZXJmb3JtcyBBRVMgZGVjcnlwdGlvbiBvcGVyYXRpb25zIHdpdGggR0NN IG9yIENUUiBjaXBoZXJzLgotLWNsYXNzIEFlc0RlY3J5cHRvciB7Ci0tIHB1YmxpYzoKLS0gIHN0 YXRpYyBBZXNEZWNyeXB0b3IqIE1ha2UoUGFycXVldENpcGhlcjo6dHlwZSBhbGdfaWQsIGludCBr ZXlfbGVuLCBib29sIG1ldGFkYXRhLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6 OnZlY3RvcjxBZXNEZWNyeXB0b3IqPiogYWxsX2RlY3J5cHRvcnMpOwotLQotLSAgfkFlc0RlY3J5 cHRvcigpOwotLSAgdm9pZCBXaXBlT3V0KCk7Ci0tCi0tICAvLy8gU2l6ZSBkaWZmZXJlbmNlIGJl dHdlZW4gcGxhaW50ZXh0IGFuZCBjaXBoZXJ0ZXh0LCBmb3IgdGhpcyBjaXBoZXIuCi0tICBpbnQg Q2lwaGVydGV4dFNpemVEZWx0YSgpOwotLQotLSAgLy8vIERlY3J5cHRzIGNpcGhlcnRleHQgd2l0 aCB0aGUga2V5IGFuZCBhYWQuIEtleSBsZW5ndGggaXMgcGFzc2VkIG9ubHkgZm9yCi0tICAvLy8g dmFsaWRhdGlvbi4gSWYgZGlmZmVyZW50IGZyb20gdmFsdWUgaW4gY29uc3RydWN0b3IsIGV4Y2Vw dGlvbiB3aWxsIGJlIHRocm93bi4KLS0gIGludCBEZWNyeXB0KGNvbnN0IHVpbnQ4X3QqIGNpcGhl cnRleHQsIGludCBjaXBoZXJ0ZXh0X2xlbiwgY29uc3QgdWludDhfdCoga2V5LAotLSAgICAgICAg ICAgICAgaW50IGtleV9sZW4sIGNvbnN0IHVpbnQ4X3QqIGFhZCwgaW50IGFhZF9sZW4sIHVpbnQ4 X3QqIHBsYWludGV4dCk7Ci0tCi0tIHByaXZhdGU6Ci0tICAvLy8gQ2FuIHNlcnZlIG9uZSBrZXkg bGVuZ3RoIG9ubHkuIFBvc3NpYmxlIHZhbHVlczogMTYsIDI0LCAzMiBieXRlcy4KLS0gIGV4cGxp Y2l0IEFlc0RlY3J5cHRvcihQYXJxdWV0Q2lwaGVyOjp0eXBlIGFsZ19pZCwgaW50IGtleV9sZW4s IGJvb2wgbWV0YWRhdGEpOwotLSAgLy8gUElNUEwgSWRpb20KLS0gIGNsYXNzIEFlc0RlY3J5cHRv ckltcGw7Ci0tICBzdGQ6OnVuaXF1ZV9wdHI8QWVzRGVjcnlwdG9ySW1wbD4gaW1wbF87Ci0tfTsK LS0KLS1zdGQ6OnN0cmluZyBDcmVhdGVNb2R1bGVBYWQoY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVf YWFkLCBpbnQ4X3QgbW9kdWxlX3R5cGUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dDE2X3Qgcm93X2dyb3VwX29yZGluYWwsIGludDE2X3QgY29sdW1uX29yZGluYWwsCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludDE2X3QgcGFnZV9vcmRpbmFsKTsKLS0KLS1zdGQ6OnN0 cmluZyBDcmVhdGVGb290ZXJBYWQoY29uc3Qgc3RkOjpzdHJpbmcmIGFhZF9wcmVmaXhfYnl0ZXMp OwotLQotLS8vIFVwZGF0ZSBsYXN0IHR3byBieXRlcyBvZiBwYWdlIChvciBwYWdlIGhlYWRlcikg bW9kdWxlIEFBRAotLXZvaWQgUXVpY2tVcGRhdGVQYWdlQWFkKGNvbnN0IHN0ZDo6c3RyaW5nJiBB QUQsIGludDE2X3QgbmV3X3BhZ2Vfb3JkaW5hbCk7Ci0tCi0tLy8gV3JhcHMgT3BlblNTTCBSQU5E X2J5dGVzIGZ1bmN0aW9uCi0tdm9pZCBSYW5kQnl0ZXModW5zaWduZWQgY2hhciogYnVmLCBpbnQg bnVtKTsKLS0KLS19ICAvLyBuYW1lc3BhY2UgZW5jcnlwdGlvbgotLX0gIC8vIG5hbWVzcGFjZSBw YXJxdWV0Ci0rI2lmIEFSUk9XX1ZFUlNJT05fTUFKT1IgPCAyMAotKyNpbmNsdWRlICJlbmNyeXB0 aW9uX2ludGVybmFsXzE5LmgiCi0rI2Vsc2UKLSsjaW5jbHVkZSAiZW5jcnlwdGlvbl9pbnRlcm5h bF8yMC5oIgotKyNlbmRpZgotLS0tIGNlcGgtMjAuMC4wLTIzNjItZ2E5ZDIwZmMwL3NyYy9zM3Nl bGVjdC9pbmNsdWRlL2ludGVybmFsX2ZpbGVfZGVjcnlwdG9yXzE5Lmgub3JpZwkyMDI1LTA3LTA4 IDA3OjQwOjI5LjgxNDI5MjM4OSAtMDQwMAotKysrIGNlcGgtMjAuMC4wLTIzNjItZ2E5ZDIwZmMw L3NyYy9zM3NlbGVjdC9pbmNsdWRlL2ludGVybmFsX2ZpbGVfZGVjcnlwdG9yXzE5LmgJMjAyNS0w Ny0wOCAwNzo0MDoyOS44MTM3Mjc0NjUgLTA0MDAKLUBAIC0wLDAgKzEsMTIxIEBACi0rLy8gTGlj ZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQot Ky8vIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJ Q0UgZmlsZQotKy8vIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGlu Zm9ybWF0aW9uCi0rLy8gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxp Y2Vuc2VzIHRoaXMgZmlsZQotKy8vIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZl cnNpb24gMi4wICh0aGUKLSsvLyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl IGV4Y2VwdCBpbiBjb21wbGlhbmNlCi0rLy8gd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0 YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotKy8vCi0rLy8gICBodHRwOi8vd3d3LmFwYWNo ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSsvLwotKy8vIFVubGVzcyByZXF1aXJlZCBieSBh cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKLSsvLyBzb2Z0d2FyZSBkaXN0 cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgotKy8vICJBUyBJ UyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQotKy8vIEtJ TkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQot Ky8vIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlv bnMKLSsvLyB1bmRlciB0aGUgTGljZW5zZS4KLSsKLSsjcHJhZ21hIG9uY2UKLSsKLSsjaW5jbHVk ZSA8bWFwPgotKyNpbmNsdWRlIDxtZW1vcnk+Ci0rI2luY2x1ZGUgPHN0cmluZz4KLSsjaW5jbHVk ZSA8dmVjdG9yPgotKwotKyNpbmNsdWRlICJwYXJxdWV0L3NjaGVtYS5oIgotKwotK25hbWVzcGFj ZSBwYXJxdWV0IHsKLSsKLStuYW1lc3BhY2UgZW5jcnlwdGlvbiB7Ci0rY2xhc3MgQWVzRGVjcnlw dG9yOwotK2NsYXNzIEFlc0VuY3J5cHRvcjsKLSt9ICAvLyBuYW1lc3BhY2UgZW5jcnlwdGlvbgot KwotK2NsYXNzIEZpbGVEZWNyeXB0aW9uUHJvcGVydGllczsKLSsKLStjbGFzcyBQQVJRVUVUX0VY UE9SVCBEZWNyeXB0b3IgewotKyBwdWJsaWM6Ci0rICBEZWNyeXB0b3IoZW5jcnlwdGlvbjo6QWVz RGVjcnlwdG9yKiBkZWNyeXB0b3IsIGNvbnN0IHN0ZDo6c3RyaW5nJiBrZXksCi0rICAgICAgICAg ICAgY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVfYWFkLCBjb25zdCBzdGQ6OnN0cmluZyYgYWFkLAot KyAgICAgICAgICAgIDo6YXJyb3c6Ok1lbW9yeVBvb2wqIHBvb2wpOwotKwotKyAgY29uc3Qgc3Rk OjpzdHJpbmcmIGZpbGVfYWFkKCkgY29uc3QgeyByZXR1cm4gZmlsZV9hYWRfOyB9Ci0rICB2b2lk IFVwZGF0ZUFhZChjb25zdCBzdGQ6OnN0cmluZyYgYWFkKSB7IGFhZF8gPSBhYWQ7IH0KLSsgIDo6 YXJyb3c6Ok1lbW9yeVBvb2wqIHBvb2woKSB7IHJldHVybiBwb29sXzsgfQotKwotKyAgaW50IENp cGhlcnRleHRTaXplRGVsdGEoKTsKLSsgIGludCBEZWNyeXB0KGNvbnN0IHVpbnQ4X3QqIGNpcGhl cnRleHQsIGludCBjaXBoZXJ0ZXh0X2xlbiwgdWludDhfdCogcGxhaW50ZXh0KTsKLSsKLSsgcHJp dmF0ZToKLSsgIGVuY3J5cHRpb246OkFlc0RlY3J5cHRvciogYWVzX2RlY3J5cHRvcl87Ci0rICBz dGQ6OnN0cmluZyBrZXlfOwotKyAgc3RkOjpzdHJpbmcgZmlsZV9hYWRfOwotKyAgc3RkOjpzdHJp bmcgYWFkXzsKLSsgIDo6YXJyb3c6Ok1lbW9yeVBvb2wqIHBvb2xfOwotK307Ci0rCi0rY2xhc3Mg SW50ZXJuYWxGaWxlRGVjcnlwdG9yIHsKLSsgcHVibGljOgotKyAgZXhwbGljaXQgSW50ZXJuYWxG aWxlRGVjcnlwdG9yKEZpbGVEZWNyeXB0aW9uUHJvcGVydGllcyogcHJvcGVydGllcywKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgZmlsZV9hYWQs Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFycXVldENpcGhlcjo6dHlwZSBh bGdvcml0aG0sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpz dHJpbmcmIGZvb3Rlcl9rZXlfbWV0YWRhdGEsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgOjphcnJvdzo6TWVtb3J5UG9vbCogcG9vbCk7Ci0rCi0rICBzdGQ6OnN0cmluZyYgZmls ZV9hYWQoKSB7IHJldHVybiBmaWxlX2FhZF87IH0KLSsKLSsgIHN0ZDo6c3RyaW5nIEdldEZvb3Rl cktleSgpOwotKwotKyAgUGFycXVldENpcGhlcjo6dHlwZSBhbGdvcml0aG0oKSB7IHJldHVybiBh bGdvcml0aG1fOyB9Ci0rCi0rICBzdGQ6OnN0cmluZyYgZm9vdGVyX2tleV9tZXRhZGF0YSgpIHsg cmV0dXJuIGZvb3Rlcl9rZXlfbWV0YWRhdGFfOyB9Ci0rCi0rICBGaWxlRGVjcnlwdGlvblByb3Bl cnRpZXMqIHByb3BlcnRpZXMoKSB7IHJldHVybiBwcm9wZXJ0aWVzXzsgfQotKwotKyAgdm9pZCBX aXBlT3V0RGVjcnlwdGlvbktleXMoKTsKLSsKLSsgIDo6YXJyb3c6Ok1lbW9yeVBvb2wqIHBvb2wo KSB7IHJldHVybiBwb29sXzsgfQotKwotKyAgc3RkOjpzaGFyZWRfcHRyPERlY3J5cHRvcj4gR2V0 Rm9vdGVyRGVjcnlwdG9yKCk7Ci0rICBzdGQ6OnNoYXJlZF9wdHI8RGVjcnlwdG9yPiBHZXRGb290 ZXJEZWNyeXB0b3JGb3JDb2x1bW5NZXRhKGNvbnN0IHN0ZDo6c3RyaW5nJiBhYWQgPSAiIik7Ci0r ICBzdGQ6OnNoYXJlZF9wdHI8RGVjcnlwdG9yPiBHZXRGb290ZXJEZWNyeXB0b3JGb3JDb2x1bW5E YXRhKGNvbnN0IHN0ZDo6c3RyaW5nJiBhYWQgPSAiIik7Ci0rICBzdGQ6OnNoYXJlZF9wdHI8RGVj cnlwdG9yPiBHZXRDb2x1bW5NZXRhRGVjcnlwdG9yKAotKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n JiBjb2x1bW5fcGF0aCwgY29uc3Qgc3RkOjpzdHJpbmcmIGNvbHVtbl9rZXlfbWV0YWRhdGEsCi0r ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGFhZCA9ICIiKTsKLSsgIHN0ZDo6c2hhcmVkX3B0cjxE ZWNyeXB0b3I+IEdldENvbHVtbkRhdGFEZWNyeXB0b3IoCi0rICAgICAgY29uc3Qgc3RkOjpzdHJp bmcmIGNvbHVtbl9wYXRoLCBjb25zdCBzdGQ6OnN0cmluZyYgY29sdW1uX2tleV9tZXRhZGF0YSwK LSsgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgYWFkID0gIiIpOwotKwotKyBwcml2YXRlOgotKyAg RmlsZURlY3J5cHRpb25Qcm9wZXJ0aWVzKiBwcm9wZXJ0aWVzXzsKLSsgIC8vIENvbmNhdGVuYXRp b24gb2YgYWFkX3ByZWZpeCAoaWYgZXhpc3RzKSBhbmQgYWFkX2ZpbGVfdW5pcXVlCi0rICBzdGQ6 OnN0cmluZyBmaWxlX2FhZF87Ci0rICBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpzaGFyZWRf cHRyPERlY3J5cHRvcj4+IGNvbHVtbl9kYXRhX21hcF87Ci0rICBzdGQ6Om1hcDxzdGQ6OnN0cmlu Zywgc3RkOjpzaGFyZWRfcHRyPERlY3J5cHRvcj4+IGNvbHVtbl9tZXRhZGF0YV9tYXBfOwotKwot KyAgc3RkOjpzaGFyZWRfcHRyPERlY3J5cHRvcj4gZm9vdGVyX21ldGFkYXRhX2RlY3J5cHRvcl87 Ci0rICBzdGQ6OnNoYXJlZF9wdHI8RGVjcnlwdG9yPiBmb290ZXJfZGF0YV9kZWNyeXB0b3JfOwot KyAgUGFycXVldENpcGhlcjo6dHlwZSBhbGdvcml0aG1fOwotKyAgc3RkOjpzdHJpbmcgZm9vdGVy X2tleV9tZXRhZGF0YV87Ci0rICBzdGQ6OnZlY3RvcjxlbmNyeXB0aW9uOjpBZXNEZWNyeXB0b3Iq PiBhbGxfZGVjcnlwdG9yc187Ci0rCi0rICAvLy8gS2V5IG11c3QgYmUgMTYsIDI0IG9yIDMyIGJ5 dGVzIGluIGxlbmd0aC4gVGh1cyB0aGVyZSBjb3VsZCBiZSB1cCB0byB0aHJlZQotKyAgLy8gdHlw ZXMgb2YgbWV0YV9kZWNyeXB0b3JzIGFuZCBkYXRhX2RlY3J5cHRvcnMuCi0rICBzdGQ6OnVuaXF1 ZV9wdHI8ZW5jcnlwdGlvbjo6QWVzRGVjcnlwdG9yPiBtZXRhX2RlY3J5cHRvcl9bM107Ci0rICBz dGQ6OnVuaXF1ZV9wdHI8ZW5jcnlwdGlvbjo6QWVzRGVjcnlwdG9yPiBkYXRhX2RlY3J5cHRvcl9b M107Ci0rCi0rICA6OmFycm93OjpNZW1vcnlQb29sKiBwb29sXzsKLSsKLSsgIHN0ZDo6c2hhcmVk X3B0cjxEZWNyeXB0b3I+IEdldEZvb3RlckRlY3J5cHRvcihjb25zdCBzdGQ6OnN0cmluZyYgYWFk LCBib29sIG1ldGFkYXRhKTsKLSsgIHN0ZDo6c2hhcmVkX3B0cjxEZWNyeXB0b3I+IEdldENvbHVt bkRlY3J5cHRvcihjb25zdCBzdGQ6OnN0cmluZyYgY29sdW1uX3BhdGgsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGNv bHVtbl9rZXlfbWV0YWRhdGEsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGFhZCwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIG1ldGFkYXRhID0gZmFsc2UpOwotKwot KyAgZW5jcnlwdGlvbjo6QWVzRGVjcnlwdG9yKiBHZXRNZXRhQWVzRGVjcnlwdG9yKHNpemVfdCBr ZXlfc2l6ZSk7Ci0rICBlbmNyeXB0aW9uOjpBZXNEZWNyeXB0b3IqIEdldERhdGFBZXNEZWNyeXB0 b3Ioc2l6ZV90IGtleV9zaXplKTsKLSsKLSsgIGludCBNYXBLZXlMZW5Ub0RlY3J5cHRvckFycmF5 SW5kZXgoaW50IGtleV9sZW4pOwotK307Ci0rCi0rfSAgLy8gbmFtZXNwYWNlIHBhcnF1ZXQKLS0t LSBjZXBoLTIwLjAuMC0yMzYyLWdhOWQyMGZjMC9zcmMvczNzZWxlY3QvaW5jbHVkZS9pbnRlcm5h bF9maWxlX2RlY3J5cHRvcl8yMC5oLm9yaWcJMjAyNS0wNy0wOCAwNzo0MDoyOS44MTU0MTE5OTgg LTA0MDAKLSsrKyBjZXBoLTIwLjAuMC0yMzYyLWdhOWQyMGZjMC9zcmMvczNzZWxlY3QvaW5jbHVk ZS9pbnRlcm5hbF9maWxlX2RlY3J5cHRvcl8yMC5oCTIwMjUtMDctMDggMDc6NDA6MjkuODE1MjQ1 MTU1IC0wNDAwCi1AQCAtMCwwICsxLDE0OCBAQAotKy8vIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUg U29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKLSsvLyBvciBtb3JlIGNvbnRyaWJ1 dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKLSsvLyBkaXN0cmli dXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgotKy8vIHJlZ2Fy ZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKLSsv LyB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCi0rLy8g IkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5j ZQotKy8vIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp Y2Vuc2UgYXQKLSsvLwotKy8vICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO U0UtMi4wCi0rLy8KLSsvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy ZWVkIHRvIGluIHdyaXRpbmcsCi0rLy8gc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExp Y2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KLSsvLyAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdB UlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKLSsvLyBLSU5ELCBlaXRoZXIgZXhwcmVzcyBv ciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKLSsvLyBzcGVjaWZpYyBsYW5ndWFn ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCi0rLy8gdW5kZXIgdGhlIExp Y2Vuc2UuCi0rCi0rI3ByYWdtYSBvbmNlCi0rCi0rI2luY2x1ZGUgPG1lbW9yeT4KLSsjaW5jbHVk ZSA8bXV0ZXg+Ci0rI2luY2x1ZGUgPHN0cmluZz4KLSsjaW5jbHVkZSA8dmVjdG9yPgotKwotKyNp bmNsdWRlICJwYXJxdWV0L3NjaGVtYS5oIgotKwotK25hbWVzcGFjZSBwYXJxdWV0IHsKLSsKLStu YW1lc3BhY2UgZW5jcnlwdGlvbiB7Ci0rY2xhc3MgQWVzRGVjcnlwdG9yOwotK2NsYXNzIEFlc0Vu Y3J5cHRvcjsKLSt9ICAvLyBuYW1lc3BhY2UgZW5jcnlwdGlvbgotKwotK2NsYXNzIENvbHVtbkNy eXB0b01ldGFEYXRhOwotK2NsYXNzIEZpbGVEZWNyeXB0aW9uUHJvcGVydGllczsKLSsKLSsvLyBB biBvYmplY3QgaGFuZGxpbmcgZGVjcnlwdGlvbiB1c2luZyB3ZWxsLWtub3duIGVuY3J5cHRpb24g cGFyYW1ldGVycwotKy8vCi0rLy8gQ0FVVElPTjogRGVjcnlwdG9yIG9iamVjdHMgYXJlIG5vdCB0 aHJlYWQtc2FmZS4KLStjbGFzcyBQQVJRVUVUX0VYUE9SVCBEZWNyeXB0b3IgewotKyBwdWJsaWM6 Ci0rICBEZWNyeXB0b3Ioc3RkOjp1bmlxdWVfcHRyPGVuY3J5cHRpb246OkFlc0RlY3J5cHRvcj4g ZGVjcnlwdG9yLCBjb25zdCBzdGQ6OnN0cmluZyYga2V5LAotKyAgICAgICAgICAgIGNvbnN0IHN0 ZDo6c3RyaW5nJiBmaWxlX2FhZCwgY29uc3Qgc3RkOjpzdHJpbmcmIGFhZCwKLSsgICAgICAgICAg ICA6OmFycm93OjpNZW1vcnlQb29sKiBwb29sKTsKLSsgIH5EZWNyeXB0b3IoKTsKLSsKLSsgIGNv bnN0IHN0ZDo6c3RyaW5nJiBmaWxlX2FhZCgpIGNvbnN0IHsgcmV0dXJuIGZpbGVfYWFkXzsgfQot KyAgdm9pZCBVcGRhdGVBYWQoY29uc3Qgc3RkOjpzdHJpbmcmIGFhZCkgeyBhYWRfID0gYWFkOyB9 Ci0rICA6OmFycm93OjpNZW1vcnlQb29sKiBwb29sKCkgeyByZXR1cm4gcG9vbF87IH0KLSsKLSsg IFtbbm9kaXNjYXJkXV0gaW50MzJfdCBQbGFpbnRleHRMZW5ndGgoaW50MzJfdCBjaXBoZXJ0ZXh0 X2xlbikgY29uc3Q7Ci0rICBbW25vZGlzY2FyZF1dIGludDMyX3QgQ2lwaGVydGV4dExlbmd0aChp bnQzMl90IHBsYWludGV4dF9sZW4pIGNvbnN0OwotKyAgaW50MzJfdCBEZWNyeXB0KDo6YXJyb3c6 OnV0aWw6OnNwYW48Y29uc3QgdWludDhfdD4gY2lwaGVydGV4dCwKLSsgICAgICAgICAgICAgICAg ICA6OmFycm93Ojp1dGlsOjpzcGFuPHVpbnQ4X3Q+IHBsYWludGV4dCk7Ci0rCi0rIHByaXZhdGU6 Ci0rICBzdGQ6OnVuaXF1ZV9wdHI8ZW5jcnlwdGlvbjo6QWVzRGVjcnlwdG9yPiBhZXNfZGVjcnlw dG9yXzsKLSsgIHN0ZDo6c3RyaW5nIGtleV87Ci0rICBzdGQ6OnN0cmluZyBmaWxlX2FhZF87Ci0r ICBzdGQ6OnN0cmluZyBhYWRfOwotKyAgOjphcnJvdzo6TWVtb3J5UG9vbCogcG9vbF87Ci0rfTsK LSsKLStjbGFzcyBJbnRlcm5hbEZpbGVEZWNyeXB0b3IgewotKyBwdWJsaWM6Ci0rICBleHBsaWNp dCBJbnRlcm5hbEZpbGVEZWNyeXB0b3Ioc3RkOjpzaGFyZWRfcHRyPEZpbGVEZWNyeXB0aW9uUHJv cGVydGllcz4gcHJvcGVydGllcywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBzdGQ6OnN0cmluZyYgZmlsZV9hYWQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUGFycXVldENpcGhlcjo6dHlwZSBhbGdvcml0aG0sCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGZvb3Rlcl9rZXlfbWV0YWRhdGEsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjphcnJvdzo6TWVtb3J5UG9vbCogcG9v bCk7Ci0rCi0rICBjb25zdCBzdGQ6OnN0cmluZyYgZmlsZV9hYWQoKSBjb25zdCB7IHJldHVybiBm aWxlX2FhZF87IH0KLSsKLSsgIHN0ZDo6c3RyaW5nIEdldEZvb3RlcktleSgpOwotKwotKyAgUGFy cXVldENpcGhlcjo6dHlwZSBhbGdvcml0aG0oKSBjb25zdCB7IHJldHVybiBhbGdvcml0aG1fOyB9 Ci0rCi0rICBjb25zdCBzdGQ6OnN0cmluZyYgZm9vdGVyX2tleV9tZXRhZGF0YSgpIGNvbnN0IHsg cmV0dXJuIGZvb3Rlcl9rZXlfbWV0YWRhdGFfOyB9Ci0rCi0rICBjb25zdCBzdGQ6OnNoYXJlZF9w dHI8RmlsZURlY3J5cHRpb25Qcm9wZXJ0aWVzPiYgcHJvcGVydGllcygpIGNvbnN0IHsKLSsgICAg cmV0dXJuIHByb3BlcnRpZXNfOwotKyAgfQotKwotKyAgOjphcnJvdzo6TWVtb3J5UG9vbCogcG9v bCgpIGNvbnN0IHsgcmV0dXJuIHBvb2xfOyB9Ci0rCi0rICAvLyBHZXQgYSBEZWNyeXB0b3IgaW5z dGFuY2UgZm9yIHRoZSBQYXJxdWV0IGZvb3RlcgotKyAgc3RkOjp1bmlxdWVfcHRyPERlY3J5cHRv cj4gR2V0Rm9vdGVyRGVjcnlwdG9yKCk7Ci0rCi0rICAvLyBHZXQgYSBEZWNyeXB0b3IgaW5zdGFu Y2UgZm9yIGNvbHVtbiBjaHVuayBtZXRhZGF0YS4KLSsgIHN0ZDo6dW5pcXVlX3B0cjxEZWNyeXB0 b3I+IEdldENvbHVtbk1ldGFEZWNyeXB0b3IoCi0rICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGNv bHVtbl9wYXRoLCBjb25zdCBzdGQ6OnN0cmluZyYgY29sdW1uX2tleV9tZXRhZGF0YSwKLSsgICAg ICBjb25zdCBzdGQ6OnN0cmluZyYgYWFkID0gIiIpIHsKLSsgICAgcmV0dXJuIEdldENvbHVtbkRl Y3J5cHRvcihjb2x1bW5fcGF0aCwgY29sdW1uX2tleV9tZXRhZGF0YSwgYWFkLCAvKm1ldGFkYXRh PSovdHJ1ZSk7Ci0rICB9Ci0rCi0rICAvLyBHZXQgYSBEZWNyeXB0b3IgaW5zdGFuY2UgZm9yIGNv bHVtbiBjaHVuayBkYXRhLgotKyAgc3RkOjp1bmlxdWVfcHRyPERlY3J5cHRvcj4gR2V0Q29sdW1u RGF0YURlY3J5cHRvcigKLSsgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgY29sdW1uX3BhdGgsIGNv bnN0IHN0ZDo6c3RyaW5nJiBjb2x1bW5fa2V5X21ldGFkYXRhLAotKyAgICAgIGNvbnN0IHN0ZDo6 c3RyaW5nJiBhYWQgPSAiIikgewotKyAgICByZXR1cm4gR2V0Q29sdW1uRGVjcnlwdG9yKGNvbHVt bl9wYXRoLCBjb2x1bW5fa2V5X21ldGFkYXRhLCBhYWQsIC8qbWV0YWRhdGE9Ki9mYWxzZSk7Ci0r ICB9Ci0rCi0rICAvLyBHZXQgYSBEZWNyeXB0b3IgZmFjdG9yeSBmb3IgY29sdW1uIGNodW5rIG1l dGFkYXRhLgotKyAgLy8KLSsgIC8vIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWZ1bCBpZiBtdWx0aS10 aHJlYWRlZCBkZWNyeXB0aW9uIGlzIGV4cGVjdGVkLgotKyAgLy8gVGhpcyBpcyBhIHN0YXRpYyBm dW5jdGlvbiBhcyBpdCBhY2NlcHRzIGEgbnVsbCBgSW50ZXJuYWxGaWxlRGVjcnlwdG9yKmAKLSsg IC8vIGFyZ3VtZW50IGlmIHRoZSBjb2x1bW4gaXMgbm90IGVuY3J5cHRlZC4KLSsgIHN0YXRpYyBz dGQ6OmZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxEZWNyeXB0b3I+KCk+IEdldENvbHVtbk1ldGFE ZWNyeXB0b3JGYWN0b3J5KAotKyAgICAgIEludGVybmFsRmlsZURlY3J5cHRvciosIGNvbnN0IENv bHVtbkNyeXB0b01ldGFEYXRhKiBjcnlwdG9fbWV0YWRhdGEsCi0rICAgICAgY29uc3Qgc3RkOjpz dHJpbmcmIGFhZCA9ICIiKTsKLSsgIC8vIEdldCBhIERlY3J5cHRvciBmYWN0b3J5IGZvciBjb2x1 bW4gY2h1bmsgZGF0YS4KLSsgIC8vCi0rICAvLyBUaGlzIGlzIHR5cGljYWxseSB1c2VmdWwgaWYg bXVsdGktdGhyZWFkZWQgZGVjcnlwdGlvbiBpcyBleHBlY3RlZC4KLSsgIC8vIFRoaXMgaXMgYSBz dGF0aWMgZnVuY3Rpb24gYXMgaXQgYWNjZXB0cyBhIG51bGwgYEludGVybmFsRmlsZURlY3J5cHRv cipgCi0rICAvLyBhcmd1bWVudCBpZiB0aGUgY29sdW1uIGlzIG5vdCBlbmNyeXB0ZWQuCi0rICBz dGF0aWMgc3RkOjpmdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8RGVjcnlwdG9yPigpPiBHZXRDb2x1 bW5EYXRhRGVjcnlwdG9yRmFjdG9yeSgKLSsgICAgICBJbnRlcm5hbEZpbGVEZWNyeXB0b3IqLCBj b25zdCBDb2x1bW5DcnlwdG9NZXRhRGF0YSogY3J5cHRvX21ldGFkYXRhLAotKyAgICAgIGNvbnN0 IHN0ZDo6c3RyaW5nJiBhYWQgPSAiIik7Ci0rCi0rIHByaXZhdGU6Ci0rICBzdGQ6OnNoYXJlZF9w dHI8RmlsZURlY3J5cHRpb25Qcm9wZXJ0aWVzPiBwcm9wZXJ0aWVzXzsKLSsgIC8vIENvbmNhdGVu YXRpb24gb2YgYWFkX3ByZWZpeCAoaWYgZXhpc3RzKSBhbmQgYWFkX2ZpbGVfdW5pcXVlCi0rICBz dGQ6OnN0cmluZyBmaWxlX2FhZF87Ci0rICBQYXJxdWV0Q2lwaGVyOjp0eXBlIGFsZ29yaXRobV87 Ci0rICBzdGQ6OnN0cmluZyBmb290ZXJfa2V5X21ldGFkYXRhXzsKLSsgIDo6YXJyb3c6Ok1lbW9y eVBvb2wqIHBvb2xfOwotKwotKyAgLy8gUHJvdGVjdHMgZm9vdGVyX2tleV8gdXBkYXRlcwotKyAg c3RkOjptdXRleCBtdXRleF87Ci0rICBzdGQ6OnN0cmluZyBmb290ZXJfa2V5XzsKLSsKLSsgIHN0 ZDo6c3RyaW5nIEdldENvbHVtbktleShjb25zdCBzdGQ6OnN0cmluZyYgY29sdW1uX3BhdGgsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGNvbHVtbl9rZXlf bWV0YWRhdGEpOwotKwotKyAgc3RkOjp1bmlxdWVfcHRyPERlY3J5cHRvcj4gR2V0Rm9vdGVyRGVj cnlwdG9yKGNvbnN0IHN0ZDo6c3RyaW5nJiBhYWQsIGJvb2wgbWV0YWRhdGEpOwotKwotKyAgc3Rk Ojp1bmlxdWVfcHRyPERlY3J5cHRvcj4gR2V0Q29sdW1uRGVjcnlwdG9yKGNvbnN0IHN0ZDo6c3Ry aW5nJiBjb2x1bW5fcGF0aCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgY29sdW1uX2tleV9tZXRhZGF0YSwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0 cmluZyYgYWFkLCBib29sIG1ldGFkYXRhKTsKLSsKLSsgIHN0ZDo6ZnVuY3Rpb248c3RkOjp1bmlx dWVfcHRyPERlY3J5cHRvcj4oKT4gR2V0Q29sdW1uRGVjcnlwdG9yRmFjdG9yeSgKLSsgICAgICBj b25zdCBDb2x1bW5DcnlwdG9NZXRhRGF0YSogY3J5cHRvX21ldGFkYXRhLCBjb25zdCBzdGQ6OnN0 cmluZyYgYWFkLCBib29sIG1ldGFkYXRhKTsKLSt9OwotKwotK3ZvaWQgVXBkYXRlRGVjcnlwdG9y KERlY3J5cHRvciogZGVjcnlwdG9yLCBpbnQxNl90IHJvd19ncm91cF9vcmRpbmFsLAotKyAgICAg ICAgICAgICAgICAgICAgIGludDE2X3QgY29sdW1uX29yZGluYWwsIGludDhfdCBtb2R1bGVfdHlw ZSk7Ci0rCi0rfSAgLy8gbmFtZXNwYWNlIHBhcnF1ZXQKLS0tLSBjZXBoLTIwLjAuMC0yMzYyLWdh OWQyMGZjMC9zcmMvczNzZWxlY3QvaW5jbHVkZS9pbnRlcm5hbF9maWxlX2RlY3J5cHRvci5oLm9y aWcJMjAyNC0xMC0wNiAwNzoxODo0MS4wMDAwMDAwMDAgLTA0MDAKLSsrKyBjZXBoLTIwLjAuMC0y MzYyLWdhOWQyMGZjMC9zcmMvczNzZWxlY3QvaW5jbHVkZS9pbnRlcm5hbF9maWxlX2RlY3J5cHRv ci5oCTIwMjUtMDctMDggMDc6NDA6MjkuODEzNjIzMTQzIC0wNDAwCi1AQCAtMTcsMTA1ICsxNyw4 IEBACi0gCi0gI3ByYWdtYSBvbmNlCi0gCi0tI2luY2x1ZGUgPG1hcD4KLS0jaW5jbHVkZSA8bWVt b3J5PgotLSNpbmNsdWRlIDxzdHJpbmc+Ci0tI2luY2x1ZGUgPHZlY3Rvcj4KLS0KLS0jaW5jbHVk ZSAicGFycXVldC9zY2hlbWEuaCIKLS0KLS1uYW1lc3BhY2UgcGFycXVldCB7Ci0tCi0tbmFtZXNw YWNlIGVuY3J5cHRpb24gewotLWNsYXNzIEFlc0RlY3J5cHRvcjsKLS1jbGFzcyBBZXNFbmNyeXB0 b3I7Ci0tfSAgLy8gbmFtZXNwYWNlIGVuY3J5cHRpb24KLS0KLS1jbGFzcyBGaWxlRGVjcnlwdGlv blByb3BlcnRpZXM7Ci0tCi0tY2xhc3MgUEFSUVVFVF9FWFBPUlQgRGVjcnlwdG9yIHsKLS0gcHVi bGljOgotLSAgRGVjcnlwdG9yKGVuY3J5cHRpb246OkFlc0RlY3J5cHRvciogZGVjcnlwdG9yLCBj b25zdCBzdGQ6OnN0cmluZyYga2V5LAotLSAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBm aWxlX2FhZCwgY29uc3Qgc3RkOjpzdHJpbmcmIGFhZCwKLS0gICAgICAgICAgICA6OmFycm93OjpN ZW1vcnlQb29sKiBwb29sKTsKLS0KLS0gIGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlX2FhZCgpIGNv bnN0IHsgcmV0dXJuIGZpbGVfYWFkXzsgfQotLSAgdm9pZCBVcGRhdGVBYWQoY29uc3Qgc3RkOjpz dHJpbmcmIGFhZCkgeyBhYWRfID0gYWFkOyB9Ci0tICA6OmFycm93OjpNZW1vcnlQb29sKiBwb29s KCkgeyByZXR1cm4gcG9vbF87IH0KLS0KLS0gIGludCBDaXBoZXJ0ZXh0U2l6ZURlbHRhKCk7Ci0t ICBpbnQgRGVjcnlwdChjb25zdCB1aW50OF90KiBjaXBoZXJ0ZXh0LCBpbnQgY2lwaGVydGV4dF9s ZW4sIHVpbnQ4X3QqIHBsYWludGV4dCk7Ci0tCi0tIHByaXZhdGU6Ci0tICBlbmNyeXB0aW9uOjpB ZXNEZWNyeXB0b3IqIGFlc19kZWNyeXB0b3JfOwotLSAgc3RkOjpzdHJpbmcga2V5XzsKLS0gIHN0 ZDo6c3RyaW5nIGZpbGVfYWFkXzsKLS0gIHN0ZDo6c3RyaW5nIGFhZF87Ci0tICA6OmFycm93OjpN ZW1vcnlQb29sKiBwb29sXzsKLS19OwotLQotLWNsYXNzIEludGVybmFsRmlsZURlY3J5cHRvciB7 Ci0tIHB1YmxpYzoKLS0gIGV4cGxpY2l0IEludGVybmFsRmlsZURlY3J5cHRvcihGaWxlRGVjcnlw dGlvblByb3BlcnRpZXMqIHByb3BlcnRpZXMsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVfYWFkLAotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFBhcnF1ZXRDaXBoZXI6OnR5cGUgYWxnb3JpdGhtLAotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBmb290ZXJfa2V5X21ldGFk YXRhLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6YXJyb3c6Ok1lbW9yeVBv b2wqIHBvb2wpOwotLQotLSAgc3RkOjpzdHJpbmcmIGZpbGVfYWFkKCkgeyByZXR1cm4gZmlsZV9h YWRfOyB9Ci0tCi0tICBzdGQ6OnN0cmluZyBHZXRGb290ZXJLZXkoKTsKLS0KLS0gIFBhcnF1ZXRD aXBoZXI6OnR5cGUgYWxnb3JpdGhtKCkgeyByZXR1cm4gYWxnb3JpdGhtXzsgfQotLQotLSAgc3Rk OjpzdHJpbmcmIGZvb3Rlcl9rZXlfbWV0YWRhdGEoKSB7IHJldHVybiBmb290ZXJfa2V5X21ldGFk YXRhXzsgfQotLQotLSAgRmlsZURlY3J5cHRpb25Qcm9wZXJ0aWVzKiBwcm9wZXJ0aWVzKCkgeyBy ZXR1cm4gcHJvcGVydGllc187IH0KLS0KLS0gIHZvaWQgV2lwZU91dERlY3J5cHRpb25LZXlzKCk7 Ci0tCi0tICA6OmFycm93OjpNZW1vcnlQb29sKiBwb29sKCkgeyByZXR1cm4gcG9vbF87IH0KLS0K LS0gIHN0ZDo6c2hhcmVkX3B0cjxEZWNyeXB0b3I+IEdldEZvb3RlckRlY3J5cHRvcigpOwotLSAg c3RkOjpzaGFyZWRfcHRyPERlY3J5cHRvcj4gR2V0Rm9vdGVyRGVjcnlwdG9yRm9yQ29sdW1uTWV0 YShjb25zdCBzdGQ6OnN0cmluZyYgYWFkID0gIiIpOwotLSAgc3RkOjpzaGFyZWRfcHRyPERlY3J5 cHRvcj4gR2V0Rm9vdGVyRGVjcnlwdG9yRm9yQ29sdW1uRGF0YShjb25zdCBzdGQ6OnN0cmluZyYg YWFkID0gIiIpOwotLSAgc3RkOjpzaGFyZWRfcHRyPERlY3J5cHRvcj4gR2V0Q29sdW1uTWV0YURl Y3J5cHRvcigKLS0gICAgICBjb25zdCBzdGQ6OnN0cmluZyYgY29sdW1uX3BhdGgsIGNvbnN0IHN0 ZDo6c3RyaW5nJiBjb2x1bW5fa2V5X21ldGFkYXRhLAotLSAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n JiBhYWQgPSAiIik7Ci0tICBzdGQ6OnNoYXJlZF9wdHI8RGVjcnlwdG9yPiBHZXRDb2x1bW5EYXRh RGVjcnlwdG9yKAotLSAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBjb2x1bW5fcGF0aCwgY29uc3Qg c3RkOjpzdHJpbmcmIGNvbHVtbl9rZXlfbWV0YWRhdGEsCi0tICAgICAgY29uc3Qgc3RkOjpzdHJp bmcmIGFhZCA9ICIiKTsKLS0KLS0gcHJpdmF0ZToKLS0gIEZpbGVEZWNyeXB0aW9uUHJvcGVydGll cyogcHJvcGVydGllc187Ci0tICAvLyBDb25jYXRlbmF0aW9uIG9mIGFhZF9wcmVmaXggKGlmIGV4 aXN0cykgYW5kIGFhZF9maWxlX3VuaXF1ZQotLSAgc3RkOjpzdHJpbmcgZmlsZV9hYWRfOwotLSAg c3RkOjptYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c2hhcmVkX3B0cjxEZWNyeXB0b3I+PiBjb2x1bW5f ZGF0YV9tYXBfOwotLSAgc3RkOjptYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c2hhcmVkX3B0cjxEZWNy eXB0b3I+PiBjb2x1bW5fbWV0YWRhdGFfbWFwXzsKLS0KLS0gIHN0ZDo6c2hhcmVkX3B0cjxEZWNy eXB0b3I+IGZvb3Rlcl9tZXRhZGF0YV9kZWNyeXB0b3JfOwotLSAgc3RkOjpzaGFyZWRfcHRyPERl Y3J5cHRvcj4gZm9vdGVyX2RhdGFfZGVjcnlwdG9yXzsKLS0gIFBhcnF1ZXRDaXBoZXI6OnR5cGUg YWxnb3JpdGhtXzsKLS0gIHN0ZDo6c3RyaW5nIGZvb3Rlcl9rZXlfbWV0YWRhdGFfOwotLSAgc3Rk Ojp2ZWN0b3I8ZW5jcnlwdGlvbjo6QWVzRGVjcnlwdG9yKj4gYWxsX2RlY3J5cHRvcnNfOwotLQot LSAgLy8vIEtleSBtdXN0IGJlIDE2LCAyNCBvciAzMiBieXRlcyBpbiBsZW5ndGguIFRodXMgdGhl cmUgY291bGQgYmUgdXAgdG8gdGhyZWUKLS0gIC8vIHR5cGVzIG9mIG1ldGFfZGVjcnlwdG9ycyBh bmQgZGF0YV9kZWNyeXB0b3JzLgotLSAgc3RkOjp1bmlxdWVfcHRyPGVuY3J5cHRpb246OkFlc0Rl Y3J5cHRvcj4gbWV0YV9kZWNyeXB0b3JfWzNdOwotLSAgc3RkOjp1bmlxdWVfcHRyPGVuY3J5cHRp b246OkFlc0RlY3J5cHRvcj4gZGF0YV9kZWNyeXB0b3JfWzNdOwotLQotLSAgOjphcnJvdzo6TWVt b3J5UG9vbCogcG9vbF87Ci0tCi0tICBzdGQ6OnNoYXJlZF9wdHI8RGVjcnlwdG9yPiBHZXRGb290 ZXJEZWNyeXB0b3IoY29uc3Qgc3RkOjpzdHJpbmcmIGFhZCwgYm9vbCBtZXRhZGF0YSk7Ci0tICBz dGQ6OnNoYXJlZF9wdHI8RGVjcnlwdG9yPiBHZXRDb2x1bW5EZWNyeXB0b3IoY29uc3Qgc3RkOjpz dHJpbmcmIGNvbHVtbl9wYXRoLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBjb2x1bW5fa2V5X21ldGFkYXRhLAotLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6 c3RyaW5nJiBhYWQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYm9vbCBtZXRhZGF0YSA9IGZhbHNlKTsKLS0KLS0gIGVuY3J5cHRpb246OkFlc0RlY3J5 cHRvciogR2V0TWV0YUFlc0RlY3J5cHRvcihzaXplX3Qga2V5X3NpemUpOwotLSAgZW5jcnlwdGlv bjo6QWVzRGVjcnlwdG9yKiBHZXREYXRhQWVzRGVjcnlwdG9yKHNpemVfdCBrZXlfc2l6ZSk7Ci0t Ci0tICBpbnQgTWFwS2V5TGVuVG9EZWNyeXB0b3JBcnJheUluZGV4KGludCBrZXlfbGVuKTsKLS19 OwotLQotLX0gIC8vIG5hbWVzcGFjZSBwYXJxdWV0Ci0rI2lmIEFSUk9XX1ZFUlNJT05fTUFKT1Ig PCAyMAotKyNpbmNsdWRlICJpbnRlcm5hbF9maWxlX2RlY3J5cHRvcl8xOS5oIgotKyNlbHNlCi0r I2luY2x1ZGUgImludGVybmFsX2ZpbGVfZGVjcnlwdG9yXzIwLmgiCi0rI2VuZGlmCi0tLS0gY2Vw aC0yMC4wLjAtMjM2Mi1nYTlkMjBmYzAvc3JjL3Mzc2VsZWN0L2luY2x1ZGUvczNzZWxlY3RfcGFy cXVldF9pbnRyZi5oLm9yaWcJMjAyNC0xMC0wNiAwNzoxODo0MS4wMDAwMDAwMDAgLTA0MDAKLSsr KyBjZXBoLTIwLjAuMC0yMzYyLWdhOWQyMGZjMC9zcmMvczNzZWxlY3QvaW5jbHVkZS9zM3NlbGVj dF9wYXJxdWV0X2ludHJmLmgJMjAyNS0wNy0wOCAwNzo0MDoyOS44MTY3Mjc0MTcgLTA0MDAKLUBA IC0xMDAyLDYgKzEwMDIsNyBAQAotICAgICAgIHRocm93IFBhcnF1ZXRFeGNlcHRpb24oIkVuY3J5 cHRlZCBmaWxlcyBjYW5ub3QgY29udGFpbiBtb3JlIHRoYW4gMzI3Njcgcm93IGdyb3VwcyIpOwot ICAgICB9Ci0gCi0rI2lmIEFSUk9XX1ZFUlNJT05fTUFKT1IgPCAyMAotICAgICAvLyBUaGUgY29s dW1uIGlzIGVuY3J5cHRlZAotICAgICBzdGQ6OnNoYXJlZF9wdHI8OjpwYXJxdWV0OjpEZWNyeXB0 b3I+IG1ldGFfZGVjcnlwdG9yOwotICAgICBzdGQ6OnNoYXJlZF9wdHI8RGVjcnlwdG9yPiBkYXRh X2RlY3J5cHRvcjsKLUBAIC0xMDM1LDYgKzEwMzYsMjUgQEAKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZmFsc2UsCi0gICAgICNlbmRpZgotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwcm9wZXJ0aWVzXy5tZW1vcnlfcG9vbCgpLCAmY3R4KTsKLSsjZWxzZQotKyAgICAvLyBBcnJv dyAyMCsgdmVyc2lvbiB1c2VzIGZhY3RvcnkgZnVuY3Rpb25zIGluc3RlYWQgb2Ygc2hhcmVkX3B0 ciBmb3IgZGVjcnlwdG9ycwotKyAgICBzdGQ6OmZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxEZWNy eXB0b3I+KCk+IG1ldGFfZGVjcnlwdG9yX2ZhY3RvcnkgPQotKyAgICAgICAgSW50ZXJuYWxGaWxl RGVjcnlwdG9yOjpHZXRDb2x1bW5NZXRhRGVjcnlwdG9yRmFjdG9yeShmaWxlX2RlY3J5cHRvcl8u Z2V0KCksIGNyeXB0b19tZXRhZGF0YS5nZXQoKSk7Ci0rICAgIHN0ZDo6ZnVuY3Rpb248c3RkOjp1 bmlxdWVfcHRyPERlY3J5cHRvcj4oKT4gZGF0YV9kZWNyeXB0b3JfZmFjdG9yeSA9Ci0rICAgICAg ICBJbnRlcm5hbEZpbGVEZWNyeXB0b3I6OkdldENvbHVtbkRhdGFEZWNyeXB0b3JGYWN0b3J5KGZp bGVfZGVjcnlwdG9yXy5nZXQoKSwgY3J5cHRvX21ldGFkYXRhLmdldCgpKTsKLSsKLSsgICAgY29u c3QgQ3J5cHRvQ29udGV4dCBjdHggewotKyAgICAgICAgY29sLT5oYXNfZGljdGlvbmFyeV9wYWdl KCksCi0rICAgICAgICByb3dfZ3JvdXBfb3JkaW5hbF8sCi0rICAgICAgICBzdGF0aWNfY2FzdDxp bnQxNl90PihpKSwKLSsgICAgICAgIG1ldGFfZGVjcnlwdG9yX2ZhY3RvcnksCi0rICAgICAgICBk YXRhX2RlY3J5cHRvcl9mYWN0b3J5LAotKyAgICB9OwotKwotKyAgICByZXR1cm4gUGFnZVJlYWRl cjo6T3BlbihzdHJlYW0sIGNvbC0+bnVtX3ZhbHVlcygpLCBjb2wtPmNvbXByZXNzaW9uKCksCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwcm9wZXJ0aWVzXy5tZW1vcnlfcG9vbCgpLCAmY3R4KTsKLSsjZW5kaWYKLSAgIH0K LSAKLSAgcHJpdmF0ZToKLUBAIC0xMDcxLDcgKzEwOTEsOSBAQAotICAgfQotIAotICAgdm9pZCBD bG9zZSgpIG92ZXJyaWRlIHsKLSsjaWYgQVJST1dfVkVSU0lPTl9NQUpPUiA8IDIwCi0gICAgIGlm IChmaWxlX2RlY3J5cHRvcl8pIGZpbGVfZGVjcnlwdG9yXy0+V2lwZU91dERlY3J5cHRpb25LZXlz KCk7Ci0rI2VuZGlmCi0gICB9Ci0gCi0gICBzdGQ6OnNoYXJlZF9wdHI8Um93R3JvdXBSZWFkZXI+ IEdldFJvd0dyb3VwKGludCBpKSBvdmVycmlkZSB7Ci1AQCAtMTI0OSw5ICsxMjcxLDE3IEBACi0g ICAvLyBIYW5kbGUgQUFEIHByZWZpeAotICAgRW5jcnlwdGlvbkFsZ29yaXRobSBhbGdvID0gZmls ZV9jcnlwdG9fbWV0YWRhdGEtPmVuY3J5cHRpb25fYWxnb3JpdGhtKCk7Ci0gICBzdGQ6OnN0cmlu ZyBmaWxlX2FhZCA9IEhhbmRsZUFhZFByZWZpeChmaWxlX2RlY3J5cHRpb25fcHJvcGVydGllcywg YWxnbyk7Ci0rI2lmIEFSUk9XX1ZFUlNJT05fTUFKT1IgPCAyMAotICAgZmlsZV9kZWNyeXB0b3Jf ID0gc3RkOjptYWtlX3NoYXJlZDw6OnBhcnF1ZXQ6OkludGVybmFsRmlsZURlY3J5cHRvcj4oCi0g ICAgICAgZmlsZV9kZWNyeXB0aW9uX3Byb3BlcnRpZXMsIGZpbGVfYWFkLCBhbGdvLmFsZ29yaXRo bSwKLSAgICAgICBmaWxlX2NyeXB0b19tZXRhZGF0YS0+a2V5X21ldGFkYXRhKCksIHByb3BlcnRp ZXNfLm1lbW9yeV9wb29sKCkpOwotKyNlbHNlCi0rICAvLyBBcnJvdyAyMCsgdGFrZXMgYSBzaGFy ZWRfcHRyIHRvIEZpbGVEZWNyeXB0aW9uUHJvcGVydGllcwotKyAgZmlsZV9kZWNyeXB0b3JfID0g c3RkOjptYWtlX3NoYXJlZDw6OnBhcnF1ZXQ6OkludGVybmFsRmlsZURlY3J5cHRvcj4oCi0rICAg ICAgc3RkOjpzaGFyZWRfcHRyPEZpbGVEZWNyeXB0aW9uUHJvcGVydGllcz4oZmlsZV9kZWNyeXB0 aW9uX3Byb3BlcnRpZXMpLAotKyAgICAgIGZpbGVfYWFkLCBhbGdvLmFsZ29yaXRobSwKLSsgICAg ICBmaWxlX2NyeXB0b19tZXRhZGF0YS0+a2V5X21ldGFkYXRhKCksIHByb3BlcnRpZXNfLm1lbW9y eV9wb29sKCkpOwotKyNlbmRpZgotIAotICAgaW50NjRfdCBtZXRhZGF0YV9vZmZzZXQgPSBzb3Vy Y2Vfc2l6ZV8gLSBrRm9vdGVyU2l6ZSAtIGZvb3Rlcl9sZW4gKyBjcnlwdG9fbWV0YWRhdGFfbGVu OwotICAgdWludDMyX3QgbWV0YWRhdGFfbGVuID0gZm9vdGVyX2xlbiAtIGNyeXB0b19tZXRhZGF0 YV9sZW47Ci1AQCAtMTI4Miw5ICsxMzEyLDE4IEBACi0gICAgIEVuY3J5cHRpb25BbGdvcml0aG0g YWxnbyA9IGZpbGVfbWV0YWRhdGFfLT5lbmNyeXB0aW9uX2FsZ29yaXRobSgpOwotICAgICAvLyBI YW5kbGUgQUFEIHByZWZpeAotICAgICBzdGQ6OnN0cmluZyBmaWxlX2FhZCA9IEhhbmRsZUFhZFBy ZWZpeChmaWxlX2RlY3J5cHRpb25fcHJvcGVydGllcywgYWxnbyk7Ci0rI2lmIEFSUk9XX1ZFUlNJ T05fTUFKT1IgPCAyMAotICAgICBmaWxlX2RlY3J5cHRvcl8gPSBzdGQ6Om1ha2Vfc2hhcmVkPDo6 cGFycXVldDo6SW50ZXJuYWxGaWxlRGVjcnlwdG9yPigKLSAgICAgICAgIGZpbGVfZGVjcnlwdGlv bl9wcm9wZXJ0aWVzLCBmaWxlX2FhZCwgYWxnby5hbGdvcml0aG0sCi0gICAgICAgICBmaWxlX21l dGFkYXRhXy0+Zm9vdGVyX3NpZ25pbmdfa2V5X21ldGFkYXRhKCksIHByb3BlcnRpZXNfLm1lbW9y eV9wb29sKCkpOwotKyNlbHNlCi0rICAgIC8vIEFycm93IDIwKyB0YWtlcyBhIHNoYXJlZF9wdHIg dG8gRmlsZURlY3J5cHRpb25Qcm9wZXJ0aWVzCi0rICAgIGZpbGVfZGVjcnlwdG9yXyA9IHN0ZDo6 bWFrZV9zaGFyZWQ8OjpwYXJxdWV0OjpJbnRlcm5hbEZpbGVEZWNyeXB0b3I+KAotKyAgICAgICAg c3RkOjpzaGFyZWRfcHRyPEZpbGVEZWNyeXB0aW9uUHJvcGVydGllcz4oZmlsZV9kZWNyeXB0aW9u X3Byb3BlcnRpZXMpLAotKyAgICAgICAgZmlsZV9hYWQsIGFsZ28uYWxnb3JpdGhtLAotKyAgICAg ICAgZmlsZV9tZXRhZGF0YV8tPmZvb3Rlcl9zaWduaW5nX2tleV9tZXRhZGF0YSgpLCBwcm9wZXJ0 aWVzXy5tZW1vcnlfcG9vbCgpKTsKLSsgICAgLy8gSW4gQXJyb3cgMjArLCBubyBuZWVkIHRvIHNl dCBmaWxlX2RlY3J5cHRvciBpbiBtZXRhZGF0YQotKyNlbmRpZgotICAgICAvLyBzZXQgdGhlIElu dGVybmFsRmlsZURlY3J5cHRvciBpbiB0aGUgbWV0YWRhdGEgYXMgd2VsbCwgYXMgaXQncyB1c2Vk Ci0gICAgIC8vIGZvciBzaWduYXR1cmUgdmVyaWZpY2F0aW9uIGFuZCBmb3IgQ29sdW1uQ2h1bmtN ZXRhRGF0YSBjcmVhdGlvbi4KLSAjaWYgR0FMX3NldF9maWxlX2RlY3J5cHRvcl9kZWNsYXJlX3By aXZhdGUKCmRpZmYgLS1naXQgYS8wMDU2LWxpYmFycm93LTI1LjAuMC5wYXRjaCBiLzAwNTYtbGli YXJyb3ctMjUuMC4wLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFh YWE1M2MKLS0tIC9kZXYvbnVsbAorKysgYi8wMDU2LWxpYmFycm93LTI1LjAuMC5wYXRjaApAQCAt MCwwICsxLDI5MSBAQAorLS0tIGNlcGgtMjEuMS4wL3NyYy9zM3NlbGVjdC9pbmNsdWRlL2ludGVy bmFsX2ZpbGVfZGVjcnlwdG9yLmgub3JpZwkyMDI0LTEwLTA2IDA3OjE4OjQxLjAwMDAwMDAwMCAt MDQwMAorKysrIGNlcGgtMjEuMS4wL3NyYy9zM3NlbGVjdC9pbmNsdWRlL2ludGVybmFsX2ZpbGVf ZGVjcnlwdG9yLmgJMjAyNi0wOS0xMSAxNjoyMjoyOC4yMTM2OTQ1ODYgLTA0MDAKK0BAIC0xNywx MSArMTcsMTQgQEAKKyAKKyAjcHJhZ21hIG9uY2UKKyAKKy0jaW5jbHVkZSA8bWFwPgorKyNpbmNs dWRlIDxmdW5jdGlvbmFsPgorICNpbmNsdWRlIDxtZW1vcnk+CisrI2luY2x1ZGUgPG11dGV4Pgor KyNpbmNsdWRlIDxzcGFuPgorICNpbmNsdWRlIDxzdHJpbmc+CisgI2luY2x1ZGUgPHZlY3Rvcj4K KyAKKysjaW5jbHVkZSAiYXJyb3cvdXRpbC9zZWN1cmVfc3RyaW5nLmgiCisgI2luY2x1ZGUgInBh cnF1ZXQvc2NoZW1hLmgiCisgCisgbmFtZXNwYWNlIHBhcnF1ZXQgeworQEAgLTMxLDI0ICszNCwz MSBAQAorIGNsYXNzIEFlc0VuY3J5cHRvcjsKKyB9ICAvLyBuYW1lc3BhY2UgZW5jcnlwdGlvbgor IAorK2NsYXNzIENvbHVtbkNyeXB0b01ldGFEYXRhOworK2NsYXNzIERlY3J5cHRpb25LZXlSZXRy aWV2ZXI7CisgY2xhc3MgRmlsZURlY3J5cHRpb25Qcm9wZXJ0aWVzOworIAorKy8vIEFuIG9iamVj dCBoYW5kbGluZyBkZWNyeXB0aW9uIHVzaW5nIHdlbGwta25vd24gZW5jcnlwdGlvbiBwYXJhbWV0 ZXJzCisrLy8KKysvLyBDQVVUSU9OOiBEZWNyeXB0b3Igb2JqZWN0cyBhcmUgbm90IHRocmVhZC1z YWZlLgorIGNsYXNzIFBBUlFVRVRfRVhQT1JUIERlY3J5cHRvciB7CisgIHB1YmxpYzoKKy0gIERl Y3J5cHRvcihlbmNyeXB0aW9uOjpBZXNEZWNyeXB0b3IqIGRlY3J5cHRvciwgY29uc3Qgc3RkOjpz dHJpbmcmIGtleSwKKy0gICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgZmlsZV9hYWQsIGNv bnN0IHN0ZDo6c3RyaW5nJiBhYWQsCisrICBEZWNyeXB0b3Ioc3RkOjp1bmlxdWVfcHRyPGVuY3J5 cHRpb246OkFlc0RlY3J5cHRvcj4gZGVjcnlwdG9yLAorKyAgICAgICAgICAgIDo6YXJyb3c6OnV0 aWw6OlNlY3VyZVN0cmluZyBrZXksIHN0ZDo6c3RyaW5nIGZpbGVfYWFkLCBzdGQ6OnN0cmluZyBh YWQsCisgICAgICAgICAgICAgOjphcnJvdzo6TWVtb3J5UG9vbCogcG9vbCk7CisrICB+RGVjcnlw dG9yKCk7CisgCisgICBjb25zdCBzdGQ6OnN0cmluZyYgZmlsZV9hYWQoKSBjb25zdCB7IHJldHVy biBmaWxlX2FhZF87IH0KKyAgIHZvaWQgVXBkYXRlQWFkKGNvbnN0IHN0ZDo6c3RyaW5nJiBhYWQp IHsgYWFkXyA9IGFhZDsgfQorICAgOjphcnJvdzo6TWVtb3J5UG9vbCogcG9vbCgpIHsgcmV0dXJu IHBvb2xfOyB9CisgCistICBpbnQgQ2lwaGVydGV4dFNpemVEZWx0YSgpOworLSAgaW50IERlY3J5 cHQoY29uc3QgdWludDhfdCogY2lwaGVydGV4dCwgaW50IGNpcGhlcnRleHRfbGVuLCB1aW50OF90 KiBwbGFpbnRleHQpOworKyAgW1tub2Rpc2NhcmRdXSBpbnQzMl90IFBsYWludGV4dExlbmd0aChp bnQzMl90IGNpcGhlcnRleHRfbGVuKSBjb25zdDsKKysgIFtbbm9kaXNjYXJkXV0gaW50MzJfdCBD aXBoZXJ0ZXh0TGVuZ3RoKGludDMyX3QgcGxhaW50ZXh0X2xlbikgY29uc3Q7CisrICBpbnQzMl90 IERlY3J5cHQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGNpcGhlcnRleHQsIHN0ZDo6c3Bhbjx1 aW50OF90PiBwbGFpbnRleHQpOworIAorICBwcml2YXRlOgorLSAgZW5jcnlwdGlvbjo6QWVzRGVj cnlwdG9yKiBhZXNfZGVjcnlwdG9yXzsKKy0gIHN0ZDo6c3RyaW5nIGtleV87CisrICBzdGQ6OnVu aXF1ZV9wdHI8ZW5jcnlwdGlvbjo6QWVzRGVjcnlwdG9yPiBhZXNfZGVjcnlwdG9yXzsKKysgIDo6 YXJyb3c6OnV0aWw6OlNlY3VyZVN0cmluZyBrZXlfOworICAgc3RkOjpzdHJpbmcgZmlsZV9hYWRf OworICAgc3RkOjpzdHJpbmcgYWFkXzsKKyAgIDo6YXJyb3c6Ok1lbW9yeVBvb2wqIHBvb2xfOwor QEAgLTU2LDY2ICs2Niw5MCBAQAorIAorIGNsYXNzIEludGVybmFsRmlsZURlY3J5cHRvciB7Cisg IHB1YmxpYzoKKy0gIGV4cGxpY2l0IEludGVybmFsRmlsZURlY3J5cHRvcihGaWxlRGVjcnlwdGlv blByb3BlcnRpZXMqIHByb3BlcnRpZXMsCisrICBleHBsaWNpdCBJbnRlcm5hbEZpbGVEZWNyeXB0 b3Ioc3RkOjpzaGFyZWRfcHRyPEZpbGVEZWNyeXB0aW9uUHJvcGVydGllcz4gcHJvcGVydGllcywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgZmls ZV9hYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFycXVldENpcGhlcjo6 dHlwZSBhbGdvcml0aG0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg c3RkOjpzdHJpbmcmIGZvb3Rlcl9rZXlfbWV0YWRhdGEsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgOjphcnJvdzo6TWVtb3J5UG9vbCogcG9vbCk7CisgCistICBzdGQ6OnN0cmlu ZyYgZmlsZV9hYWQoKSB7IHJldHVybiBmaWxlX2FhZF87IH0KKysgIGNvbnN0IHN0ZDo6c3RyaW5n JiBmaWxlX2FhZCgpIGNvbnN0IHsgcmV0dXJuIGZpbGVfYWFkXzsgfQorIAorLSAgc3RkOjpzdHJp bmcgR2V0Rm9vdGVyS2V5KCk7CisrICBjb25zdCA6OmFycm93Ojp1dGlsOjpTZWN1cmVTdHJpbmcm IEdldEZvb3RlcktleSgpOworIAorLSAgUGFycXVldENpcGhlcjo6dHlwZSBhbGdvcml0aG0oKSB7 IHJldHVybiBhbGdvcml0aG1fOyB9CisrICBQYXJxdWV0Q2lwaGVyOjp0eXBlIGFsZ29yaXRobSgp IGNvbnN0IHsgcmV0dXJuIGFsZ29yaXRobV87IH0KKyAKKy0gIHN0ZDo6c3RyaW5nJiBmb290ZXJf a2V5X21ldGFkYXRhKCkgeyByZXR1cm4gZm9vdGVyX2tleV9tZXRhZGF0YV87IH0KKysgIGNvbnN0 IHN0ZDo6c3RyaW5nJiBmb290ZXJfa2V5X21ldGFkYXRhKCkgY29uc3QgeyByZXR1cm4gZm9vdGVy X2tleV9tZXRhZGF0YV87IH0KKyAKKy0gIEZpbGVEZWNyeXB0aW9uUHJvcGVydGllcyogcHJvcGVy dGllcygpIHsgcmV0dXJuIHByb3BlcnRpZXNfOyB9CisrICBjb25zdCBzdGQ6OnNoYXJlZF9wdHI8 RmlsZURlY3J5cHRpb25Qcm9wZXJ0aWVzPiYgcHJvcGVydGllcygpIGNvbnN0IHsKKysgICAgcmV0 dXJuIHByb3BlcnRpZXNfOworKyAgfQorIAorLSAgdm9pZCBXaXBlT3V0RGVjcnlwdGlvbktleXMo KTsKKysgIDo6YXJyb3c6Ok1lbW9yeVBvb2wqIHBvb2woKSBjb25zdCB7IHJldHVybiBwb29sXzsg fQorIAorLSAgOjphcnJvdzo6TWVtb3J5UG9vbCogcG9vbCgpIHsgcmV0dXJuIHBvb2xfOyB9Cisr ICAvLyBHZXQgYSBEZWNyeXB0b3IgaW5zdGFuY2UgZm9yIHRoZSBQYXJxdWV0IGZvb3RlcgorKyAg c3RkOjp1bmlxdWVfcHRyPERlY3J5cHRvcj4gR2V0Rm9vdGVyRGVjcnlwdG9yKCk7CisgCistICBz dGQ6OnNoYXJlZF9wdHI8RGVjcnlwdG9yPiBHZXRGb290ZXJEZWNyeXB0b3IoKTsKKy0gIHN0ZDo6 c2hhcmVkX3B0cjxEZWNyeXB0b3I+IEdldEZvb3RlckRlY3J5cHRvckZvckNvbHVtbk1ldGEoY29u c3Qgc3RkOjpzdHJpbmcmIGFhZCA9ICIiKTsKKy0gIHN0ZDo6c2hhcmVkX3B0cjxEZWNyeXB0b3I+ IEdldEZvb3RlckRlY3J5cHRvckZvckNvbHVtbkRhdGEoY29uc3Qgc3RkOjpzdHJpbmcmIGFhZCA9 ICIiKTsKKy0gIHN0ZDo6c2hhcmVkX3B0cjxEZWNyeXB0b3I+IEdldENvbHVtbk1ldGFEZWNyeXB0 b3IoCisrICAvLyBHZXQgYSBEZWNyeXB0b3IgaW5zdGFuY2UgZm9yIGNvbHVtbiBjaHVuayBtZXRh ZGF0YS4KKysgIHN0ZDo6dW5pcXVlX3B0cjxEZWNyeXB0b3I+IEdldENvbHVtbk1ldGFEZWNyeXB0 b3IoCisgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGNvbHVtbl9wYXRoLCBjb25zdCBzdGQ6OnN0 cmluZyYgY29sdW1uX2tleV9tZXRhZGF0YSwKKy0gICAgICBjb25zdCBzdGQ6OnN0cmluZyYgYWFk ID0gIiIpOworLSAgc3RkOjpzaGFyZWRfcHRyPERlY3J5cHRvcj4gR2V0Q29sdW1uRGF0YURlY3J5 cHRvcigKKysgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgYWFkID0gIiIpIHsKKysgICAgcmV0dXJu IEdldENvbHVtbkRlY3J5cHRvcihjb2x1bW5fcGF0aCwgY29sdW1uX2tleV9tZXRhZGF0YSwgYWFk LCAvKm1ldGFkYXRhPSovdHJ1ZSk7CisrICB9CisrCisrICAvLyBHZXQgYSBEZWNyeXB0b3IgaW5z dGFuY2UgZm9yIGNvbHVtbiBjaHVuayBkYXRhLgorKyAgc3RkOjp1bmlxdWVfcHRyPERlY3J5cHRv cj4gR2V0Q29sdW1uRGF0YURlY3J5cHRvcigKKyAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgY29s dW1uX3BhdGgsIGNvbnN0IHN0ZDo6c3RyaW5nJiBjb2x1bW5fa2V5X21ldGFkYXRhLAorKyAgICAg IGNvbnN0IHN0ZDo6c3RyaW5nJiBhYWQgPSAiIikgeworKyAgICByZXR1cm4gR2V0Q29sdW1uRGVj cnlwdG9yKGNvbHVtbl9wYXRoLCBjb2x1bW5fa2V5X21ldGFkYXRhLCBhYWQsIC8qbWV0YWRhdGE9 Ki9mYWxzZSk7CisrICB9CisrCisrICAvLyBHZXQgYSBEZWNyeXB0b3IgZmFjdG9yeSBmb3IgY29s dW1uIGNodW5rIG1ldGFkYXRhLgorKyAgLy8KKysgIC8vIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWZ1 bCBpZiBtdWx0aS10aHJlYWRlZCBkZWNyeXB0aW9uIGlzIGV4cGVjdGVkLgorKyAgLy8gVGhpcyBp cyBhIHN0YXRpYyBmdW5jdGlvbiBhcyBpdCBhY2NlcHRzIGEgbnVsbCBgSW50ZXJuYWxGaWxlRGVj cnlwdG9yKmAKKysgIC8vIGFyZ3VtZW50IGlmIHRoZSBjb2x1bW4gaXMgbm90IGVuY3J5cHRlZC4K KysgIHN0YXRpYyBzdGQ6OmZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxEZWNyeXB0b3I+KCk+IEdl dENvbHVtbk1ldGFEZWNyeXB0b3JGYWN0b3J5KAorKyAgICAgIEludGVybmFsRmlsZURlY3J5cHRv ciosIGNvbnN0IENvbHVtbkNyeXB0b01ldGFEYXRhKiBjcnlwdG9fbWV0YWRhdGEsCisrICAgICAg Y29uc3Qgc3RkOjpzdHJpbmcmIGFhZCA9ICIiKTsKKysgIC8vIEdldCBhIERlY3J5cHRvciBmYWN0 b3J5IGZvciBjb2x1bW4gY2h1bmsgZGF0YS4KKysgIC8vCisrICAvLyBUaGlzIGlzIHR5cGljYWxs eSB1c2VmdWwgaWYgbXVsdGktdGhyZWFkZWQgZGVjcnlwdGlvbiBpcyBleHBlY3RlZC4KKysgIC8v IFRoaXMgaXMgYSBzdGF0aWMgZnVuY3Rpb24gYXMgaXQgYWNjZXB0cyBhIG51bGwgYEludGVybmFs RmlsZURlY3J5cHRvcipgCisrICAvLyBhcmd1bWVudCBpZiB0aGUgY29sdW1uIGlzIG5vdCBlbmNy eXB0ZWQuCisrICBzdGF0aWMgc3RkOjpmdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8RGVjcnlwdG9y PigpPiBHZXRDb2x1bW5EYXRhRGVjcnlwdG9yRmFjdG9yeSgKKysgICAgICBJbnRlcm5hbEZpbGVE ZWNyeXB0b3IqLCBjb25zdCBDb2x1bW5DcnlwdG9NZXRhRGF0YSogY3J5cHRvX21ldGFkYXRhLAor ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBhYWQgPSAiIik7CisgCisgIHByaXZhdGU6CistICBG aWxlRGVjcnlwdGlvblByb3BlcnRpZXMqIHByb3BlcnRpZXNfOworKyAgc3RkOjpzaGFyZWRfcHRy PEZpbGVEZWNyeXB0aW9uUHJvcGVydGllcz4gcHJvcGVydGllc187CisgICAvLyBDb25jYXRlbmF0 aW9uIG9mIGFhZF9wcmVmaXggKGlmIGV4aXN0cykgYW5kIGFhZF9maWxlX3VuaXF1ZQorICAgc3Rk OjpzdHJpbmcgZmlsZV9hYWRfOworLSAgc3RkOjptYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c2hhcmVk X3B0cjxEZWNyeXB0b3I+PiBjb2x1bW5fZGF0YV9tYXBfOworLSAgc3RkOjptYXA8c3RkOjpzdHJp bmcsIHN0ZDo6c2hhcmVkX3B0cjxEZWNyeXB0b3I+PiBjb2x1bW5fbWV0YWRhdGFfbWFwXzsKKy0K Ky0gIHN0ZDo6c2hhcmVkX3B0cjxEZWNyeXB0b3I+IGZvb3Rlcl9tZXRhZGF0YV9kZWNyeXB0b3Jf OworLSAgc3RkOjpzaGFyZWRfcHRyPERlY3J5cHRvcj4gZm9vdGVyX2RhdGFfZGVjcnlwdG9yXzsK KyAgIFBhcnF1ZXRDaXBoZXI6OnR5cGUgYWxnb3JpdGhtXzsKKyAgIHN0ZDo6c3RyaW5nIGZvb3Rl cl9rZXlfbWV0YWRhdGFfOworLSAgc3RkOjp2ZWN0b3I8ZW5jcnlwdGlvbjo6QWVzRGVjcnlwdG9y Kj4gYWxsX2RlY3J5cHRvcnNfOworKyAgOjphcnJvdzo6TWVtb3J5UG9vbCogcG9vbF87CisgCist ICAvLy8gS2V5IG11c3QgYmUgMTYsIDI0IG9yIDMyIGJ5dGVzIGluIGxlbmd0aC4gVGh1cyB0aGVy ZSBjb3VsZCBiZSB1cCB0byB0aHJlZQorLSAgLy8gdHlwZXMgb2YgbWV0YV9kZWNyeXB0b3JzIGFu ZCBkYXRhX2RlY3J5cHRvcnMuCistICBzdGQ6OnVuaXF1ZV9wdHI8ZW5jcnlwdGlvbjo6QWVzRGVj cnlwdG9yPiBtZXRhX2RlY3J5cHRvcl9bM107CistICBzdGQ6OnVuaXF1ZV9wdHI8ZW5jcnlwdGlv bjo6QWVzRGVjcnlwdG9yPiBkYXRhX2RlY3J5cHRvcl9bM107CisrICAvLyBQcm90ZWN0cyBmb290 ZXJfa2V5XyB1cGRhdGVzCisrICBzdGQ6Om11dGV4IG11dGV4XzsKKysgIDo6YXJyb3c6OnV0aWw6 OlNlY3VyZVN0cmluZyBmb290ZXJfa2V5XzsKKyAKKy0gIDo6YXJyb3c6Ok1lbW9yeVBvb2wqIHBv b2xfOworKyAgOjphcnJvdzo6dXRpbDo6U2VjdXJlU3RyaW5nIEdldENvbHVtbktleShjb25zdCBz dGQ6OnN0cmluZyYgY29sdW1uX3BhdGgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBjb2x1bW5fa2V5X21ldGFkYXRhKTsKKyAK Ky0gIHN0ZDo6c2hhcmVkX3B0cjxEZWNyeXB0b3I+IEdldEZvb3RlckRlY3J5cHRvcihjb25zdCBz dGQ6OnN0cmluZyYgYWFkLCBib29sIG1ldGFkYXRhKTsKKy0gIHN0ZDo6c2hhcmVkX3B0cjxEZWNy eXB0b3I+IEdldENvbHVtbkRlY3J5cHRvcihjb25zdCBzdGQ6OnN0cmluZyYgY29sdW1uX3BhdGgs CistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg c3RkOjpzdHJpbmcmIGNvbHVtbl9rZXlfbWV0YWRhdGEsCistICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGFhZCwKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIG1ldGFkYXRh ID0gZmFsc2UpOworKyAgc3RhdGljIDo6YXJyb3c6OnV0aWw6OlNlY3VyZVN0cmluZyBSZXRyaWV2 ZUNvbHVtbktleUlmRW1wdHkoCisrICAgICAgOjphcnJvdzo6dXRpbDo6U2VjdXJlU3RyaW5nIGNv bHVtbl9rZXksIGNvbnN0IHN0ZDo6c3RyaW5nJiBjb2x1bW5fa2V5X21ldGFkYXRhLAorKyAgICAg IGNvbnN0IHN0ZDo6c2hhcmVkX3B0cjxEZWNyeXB0aW9uS2V5UmV0cmlldmVyPiYga2V5X3JldHJp ZXZlcik7CisgCistICBlbmNyeXB0aW9uOjpBZXNEZWNyeXB0b3IqIEdldE1ldGFBZXNEZWNyeXB0 b3Ioc2l6ZV90IGtleV9zaXplKTsKKy0gIGVuY3J5cHRpb246OkFlc0RlY3J5cHRvciogR2V0RGF0 YUFlc0RlY3J5cHRvcihzaXplX3Qga2V5X3NpemUpOworKyAgc3RkOjp1bmlxdWVfcHRyPERlY3J5 cHRvcj4gR2V0Rm9vdGVyRGVjcnlwdG9yKGNvbnN0IHN0ZDo6c3RyaW5nJiBhYWQsIGJvb2wgbWV0 YWRhdGEpOworIAorLSAgaW50IE1hcEtleUxlblRvRGVjcnlwdG9yQXJyYXlJbmRleChpbnQga2V5 X2xlbik7CisrICBzdGQ6OnVuaXF1ZV9wdHI8RGVjcnlwdG9yPiBHZXRDb2x1bW5EZWNyeXB0b3Io Y29uc3Qgc3RkOjpzdHJpbmcmIGNvbHVtbl9wYXRoLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBjb2x1bW5fa2V5X21l dGFkYXRhLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IHN0ZDo6c3RyaW5nJiBhYWQsIGJvb2wgbWV0YWRhdGEpOworKworKyAgc3RkOjpmdW5j dGlvbjxzdGQ6OnVuaXF1ZV9wdHI8RGVjcnlwdG9yPigpPiBHZXRDb2x1bW5EZWNyeXB0b3JGYWN0 b3J5KAorKyAgICAgIGNvbnN0IENvbHVtbkNyeXB0b01ldGFEYXRhKiBjcnlwdG9fbWV0YWRhdGEs IGNvbnN0IHN0ZDo6c3RyaW5nJiBhYWQsIGJvb2wgbWV0YWRhdGEpOworIH07CisgCisrdm9pZCBV cGRhdGVEZWNyeXB0b3IoRGVjcnlwdG9yKiBkZWNyeXB0b3IsIGludDE2X3Qgcm93X2dyb3VwX29y ZGluYWwsCisrICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCBjb2x1bW5fb3JkaW5hbCwgaW50 OF90IG1vZHVsZV90eXBlKTsKKysKKyB9ICAvLyBuYW1lc3BhY2UgcGFycXVldAorLS0tIGNlcGgt MjEuMS4wL3NyYy9zM3NlbGVjdC9pbmNsdWRlL3Mzc2VsZWN0X3BhcnF1ZXRfaW50cmYuaC5vcmln CTIwMjYtMDktMTEgMTc6MTk6MTkuNzk3MDMzNTAxIC0wNDAwCisrKysgY2VwaC0yMS4xLjAvc3Jj L3Mzc2VsZWN0L2luY2x1ZGUvczNzZWxlY3RfcGFycXVldF9pbnRyZi5oCTIwMjYtMDktMTEgMTg6 MjQ6NTcuMzE3NzkyMjIyIC0wNDAwCitAQCAtNTYxLDEwICs1NjEsMTAgQEAKKyAgIFJlc3VsdDxz dGQ6OnNoYXJlZF9wdHI8QnVmZmVyPj4gRG9SZWFkKGludDY0X3QgbmJ5dGVzKTsKKyAKKyAgIC8v LyBcYnJpZWYgVGhyZWFkLXNhZmUgaW1wbGVtZW50YXRpb24gb2YgUmVhZEF0CistICBSZXN1bHQ8 aW50NjRfdD4gRG9SZWFkQXQoaW50NjRfdCBwb3NpdGlvbiwgaW50NjRfdCBuYnl0ZXMsIHZvaWQq IG91dCk7CisrICBSZXN1bHQ8aW50NjRfdD4gRG9SZWFkQXQoaW50NjRfdCBwb3NpdGlvbiwgaW50 NjRfdCBuYnl0ZXMsIGJvb2wgdW51c2VkLCB2b2lkKiBvdXQpOworIAorICAgLy8vIFxicmllZiBU aHJlYWQtc2FmZSBpbXBsZW1lbnRhdGlvbiBvZiBSZWFkQXQKKy0gIFJlc3VsdDxzdGQ6OnNoYXJl ZF9wdHI8QnVmZmVyPj4gRG9SZWFkQXQoaW50NjRfdCBwb3NpdGlvbiwgaW50NjRfdCBuYnl0ZXMp OworKyAgUmVzdWx0PHN0ZDo6c2hhcmVkX3B0cjxCdWZmZXI+PiBEb1JlYWRBdChpbnQ2NF90IHBv c2l0aW9uLCBpbnQ2NF90IG5ieXRlcywgYm9vbCB1bnVzZWQpOworIAorICAgUmVzdWx0PGludDY0 X3Q+IERvR2V0U2l6ZSgpOworICAgU3RhdHVzIERvU2VlayhpbnQ2NF90IHBvc2l0aW9uKTsKK0BA IC02ODcsMTEgKzY4NywxMSBAQAorICAgcmV0dXJuIGltcGxfLT5JTVBMLT5SZWFkKG5ieXRlcywg b3V0KTsKKyB9CisgCistUmVzdWx0PGludDY0X3Q+IFJlYWRhYmxlRmlsZTo6RG9SZWFkQXQoaW50 NjRfdCBwb3NpdGlvbiwgaW50NjRfdCBuYnl0ZXMsIHZvaWQqIG91dCkgeworK1Jlc3VsdDxpbnQ2 NF90PiBSZWFkYWJsZUZpbGU6OkRvUmVhZEF0KGludDY0X3QgcG9zaXRpb24sIGludDY0X3QgbmJ5 dGVzLCBib29sIHVudXNlZCwgdm9pZCogb3V0KSB7CisgICByZXR1cm4gaW1wbF8tPklNUEwtPlJl YWRBdChwb3NpdGlvbiwgbmJ5dGVzLCBvdXQpOworIH0KKyAKKy1SZXN1bHQ8c3RkOjpzaGFyZWRf cHRyPEJ1ZmZlcj4+IFJlYWRhYmxlRmlsZTo6RG9SZWFkQXQoaW50NjRfdCBwb3NpdGlvbiwgaW50 NjRfdCBuYnl0ZXMpIHsKKytSZXN1bHQ8c3RkOjpzaGFyZWRfcHRyPEJ1ZmZlcj4+IFJlYWRhYmxl RmlsZTo6RG9SZWFkQXQoaW50NjRfdCBwb3NpdGlvbiwgaW50NjRfdCBuYnl0ZXMsIGJvb2wgdW51 c2VkKSB7CisgICByZXR1cm4gaW1wbF8tPlJlYWRCdWZmZXJBdChwb3NpdGlvbiwgbmJ5dGVzKTsK KyB9CisgCitAQCAtMTAwMiw2ICsxMDAyLDcgQEAKKyAgICAgICB0aHJvdyBQYXJxdWV0RXhjZXB0 aW9uKCJFbmNyeXB0ZWQgZmlsZXMgY2Fubm90IGNvbnRhaW4gbW9yZSB0aGFuIDMyNzY3IHJvdyBn cm91cHMiKTsKKyAgICAgfQorIAorKyNpZiBBUlJPV19WRVJTSU9OX01BSk9SIDwgMjAKKyAgICAg Ly8gVGhlIGNvbHVtbiBpcyBlbmNyeXB0ZWQKKyAgICAgc3RkOjpzaGFyZWRfcHRyPDo6cGFycXVl dDo6RGVjcnlwdG9yPiBtZXRhX2RlY3J5cHRvcjsKKyAgICAgc3RkOjpzaGFyZWRfcHRyPERlY3J5 cHRvcj4gZGF0YV9kZWNyeXB0b3I7CitAQCAtMTAzNSw2ICsxMDM2LDI1IEBACisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGZhbHNlLAorICAgICAjZW5kaWYKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcHJvcGVydGllc18ubWVtb3J5X3Bvb2woKSwgJmN0eCk7CisrI2Vsc2UKKysg ICAgLy8gQXJyb3cgMjArIHZlcnNpb24gdXNlcyBmYWN0b3J5IGZ1bmN0aW9ucyBpbnN0ZWFkIG9m IHNoYXJlZF9wdHIgZm9yIGRlY3J5cHRvcnMKKysgICAgc3RkOjpmdW5jdGlvbjxzdGQ6OnVuaXF1 ZV9wdHI8RGVjcnlwdG9yPigpPiBtZXRhX2RlY3J5cHRvcl9mYWN0b3J5ID0KKysgICAgICAgIElu dGVybmFsRmlsZURlY3J5cHRvcjo6R2V0Q29sdW1uTWV0YURlY3J5cHRvckZhY3RvcnkoZmlsZV9k ZWNyeXB0b3JfLmdldCgpLCBjcnlwdG9fbWV0YWRhdGEuZ2V0KCkpOworKyAgICBzdGQ6OmZ1bmN0 aW9uPHN0ZDo6dW5pcXVlX3B0cjxEZWNyeXB0b3I+KCk+IGRhdGFfZGVjcnlwdG9yX2ZhY3Rvcnkg PQorKyAgICAgICAgSW50ZXJuYWxGaWxlRGVjcnlwdG9yOjpHZXRDb2x1bW5EYXRhRGVjcnlwdG9y RmFjdG9yeShmaWxlX2RlY3J5cHRvcl8uZ2V0KCksIGNyeXB0b19tZXRhZGF0YS5nZXQoKSk7Cisr CisrICAgIGNvbnN0IENyeXB0b0NvbnRleHQgY3R4IHsKKysgICAgICAgIGNvbC0+aGFzX2RpY3Rp b25hcnlfcGFnZSgpLAorKyAgICAgICAgcm93X2dyb3VwX29yZGluYWxfLAorKyAgICAgICAgc3Rh dGljX2Nhc3Q8aW50MTZfdD4oaSksCisrICAgICAgICBtZXRhX2RlY3J5cHRvcl9mYWN0b3J5LAor KyAgICAgICAgZGF0YV9kZWNyeXB0b3JfZmFjdG9yeSwKKysgICAgfTsKKysKKysgICAgcmV0dXJu IFBhZ2VSZWFkZXI6Ok9wZW4oc3RyZWFtLCBjb2wtPm51bV92YWx1ZXMoKSwgY29sLT5jb21wcmVz c2lvbigpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcHJvcGVydGllc18ubWVtb3J5X3Bvb2woKSwgJmN0eCk7CisrI2Vu ZGlmCisgICB9CisgCisgIHByaXZhdGU6CitAQCAtMTA3MSw3ICsxMDkxLDkgQEAKKyAgIH0KKyAK KyAgIHZvaWQgQ2xvc2UoKSBvdmVycmlkZSB7CisrI2lmIEFSUk9XX1ZFUlNJT05fTUFKT1IgPCAy MAorICAgICBpZiAoZmlsZV9kZWNyeXB0b3JfKSBmaWxlX2RlY3J5cHRvcl8tPldpcGVPdXREZWNy eXB0aW9uS2V5cygpOworKyNlbmRpZgorICAgfQorIAorICAgc3RkOjpzaGFyZWRfcHRyPFJvd0dy b3VwUmVhZGVyPiBHZXRSb3dHcm91cChpbnQgaSkgb3ZlcnJpZGUgeworQEAgLTEyNDksOSArMTI3 MSwxNyBAQAorICAgLy8gSGFuZGxlIEFBRCBwcmVmaXgKKyAgIEVuY3J5cHRpb25BbGdvcml0aG0g YWxnbyA9IGZpbGVfY3J5cHRvX21ldGFkYXRhLT5lbmNyeXB0aW9uX2FsZ29yaXRobSgpOworICAg c3RkOjpzdHJpbmcgZmlsZV9hYWQgPSBIYW5kbGVBYWRQcmVmaXgoZmlsZV9kZWNyeXB0aW9uX3By b3BlcnRpZXMsIGFsZ28pOworKyNpZiBBUlJPV19WRVJTSU9OX01BSk9SIDwgMjAKKyAgIGZpbGVf ZGVjcnlwdG9yXyA9IHN0ZDo6bWFrZV9zaGFyZWQ8OjpwYXJxdWV0OjpJbnRlcm5hbEZpbGVEZWNy eXB0b3I+KAorICAgICAgIGZpbGVfZGVjcnlwdGlvbl9wcm9wZXJ0aWVzLCBmaWxlX2FhZCwgYWxn by5hbGdvcml0aG0sCisgICAgICAgZmlsZV9jcnlwdG9fbWV0YWRhdGEtPmtleV9tZXRhZGF0YSgp LCBwcm9wZXJ0aWVzXy5tZW1vcnlfcG9vbCgpKTsKKysjZWxzZQorKyAgLy8gQXJyb3cgMjArIHRh a2VzIGEgc2hhcmVkX3B0ciB0byBGaWxlRGVjcnlwdGlvblByb3BlcnRpZXMKKysgIGZpbGVfZGVj cnlwdG9yXyA9IHN0ZDo6bWFrZV9zaGFyZWQ8OjpwYXJxdWV0OjpJbnRlcm5hbEZpbGVEZWNyeXB0 b3I+KAorKyAgICAgIHN0ZDo6c2hhcmVkX3B0cjxGaWxlRGVjcnlwdGlvblByb3BlcnRpZXM+KGZp bGVfZGVjcnlwdGlvbl9wcm9wZXJ0aWVzKSwKKysgICAgICBmaWxlX2FhZCwgYWxnby5hbGdvcml0 aG0sCisrICAgICAgZmlsZV9jcnlwdG9fbWV0YWRhdGEtPmtleV9tZXRhZGF0YSgpLCBwcm9wZXJ0 aWVzXy5tZW1vcnlfcG9vbCgpKTsKKysjZW5kaWYKKyAKKyAgIGludDY0X3QgbWV0YWRhdGFfb2Zm c2V0ID0gc291cmNlX3NpemVfIC0ga0Zvb3RlclNpemUgLSBmb290ZXJfbGVuICsgY3J5cHRvX21l dGFkYXRhX2xlbjsKKyAgIHVpbnQzMl90IG1ldGFkYXRhX2xlbiA9IGZvb3Rlcl9sZW4gLSBjcnlw dG9fbWV0YWRhdGFfbGVuOworQEAgLTEyODIsOSArMTMxMiwxOCBAQAorICAgICBFbmNyeXB0aW9u QWxnb3JpdGhtIGFsZ28gPSBmaWxlX21ldGFkYXRhXy0+ZW5jcnlwdGlvbl9hbGdvcml0aG0oKTsK KyAgICAgLy8gSGFuZGxlIEFBRCBwcmVmaXgKKyAgICAgc3RkOjpzdHJpbmcgZmlsZV9hYWQgPSBI YW5kbGVBYWRQcmVmaXgoZmlsZV9kZWNyeXB0aW9uX3Byb3BlcnRpZXMsIGFsZ28pOworKyNpZiBB UlJPV19WRVJTSU9OX01BSk9SIDwgMjAKKyAgICAgZmlsZV9kZWNyeXB0b3JfID0gc3RkOjptYWtl X3NoYXJlZDw6OnBhcnF1ZXQ6OkludGVybmFsRmlsZURlY3J5cHRvcj4oCisgICAgICAgICBmaWxl X2RlY3J5cHRpb25fcHJvcGVydGllcywgZmlsZV9hYWQsIGFsZ28uYWxnb3JpdGhtLAorICAgICAg ICAgZmlsZV9tZXRhZGF0YV8tPmZvb3Rlcl9zaWduaW5nX2tleV9tZXRhZGF0YSgpLCBwcm9wZXJ0 aWVzXy5tZW1vcnlfcG9vbCgpKTsKKysjZWxzZQorKyAgICAvLyBBcnJvdyAyMCsgdGFrZXMgYSBz aGFyZWRfcHRyIHRvIEZpbGVEZWNyeXB0aW9uUHJvcGVydGllcworKyAgICBmaWxlX2RlY3J5cHRv cl8gPSBzdGQ6Om1ha2Vfc2hhcmVkPDo6cGFycXVldDo6SW50ZXJuYWxGaWxlRGVjcnlwdG9yPigK KysgICAgICAgIHN0ZDo6c2hhcmVkX3B0cjxGaWxlRGVjcnlwdGlvblByb3BlcnRpZXM+KGZpbGVf ZGVjcnlwdGlvbl9wcm9wZXJ0aWVzKSwKKysgICAgICAgIGZpbGVfYWFkLCBhbGdvLmFsZ29yaXRo bSwKKysgICAgICAgIGZpbGVfbWV0YWRhdGFfLT5mb290ZXJfc2lnbmluZ19rZXlfbWV0YWRhdGEo KSwgcHJvcGVydGllc18ubWVtb3J5X3Bvb2woKSk7CisrICAgIC8vIEluIEFycm93IDIwKywgbm8g bmVlZCB0byBzZXQgZmlsZV9kZWNyeXB0b3IgaW4gbWV0YWRhdGEKKysjZW5kaWYKKyAgICAgLy8g c2V0IHRoZSBJbnRlcm5hbEZpbGVEZWNyeXB0b3IgaW4gdGhlIG1ldGFkYXRhIGFzIHdlbGwsIGFz IGl0J3MgdXNlZAorICAgICAvLyBmb3Igc2lnbmF0dXJlIHZlcmlmaWNhdGlvbiBhbmQgZm9yIENv bHVtbkNodW5rTWV0YURhdGEgY3JlYXRpb24uCisgI2lmIEdBTF9zZXRfZmlsZV9kZWNyeXB0b3Jf ZGVjbGFyZV9wcml2YXRlCgpkaWZmIC0tZ2l0IGEvY2VwaC5zcGVjIGIvY2VwaC5zcGVjCmluZGV4 IDlmODQ3NGEuLjU3NzIzZjEgMTAwNjQ0Ci0tLSBhL2NlcGguc3BlYworKysgYi9jZXBoLnNwZWMK QEAgLTE5Nyw3ICsxOTcsNyBAQCBmaQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiBOYW1lOgkJ Y2VwaAogVmVyc2lvbjoJMjEuMS4wCi1SZWxlYXNlOgk2JXs/ZGlzdH0KK1JlbGVhc2U6CTclez9k aXN0fQogJWlmIDAlez9mZWRvcmF9IHx8IDAlez9yaGVsfQogRXBvY2g6CQkyCiAlZW5kaWYKQEAg LTIzMiw3ICsyMzIsNyBAQCBQYXRjaDoJCTAwNDktc3JjLXJvY2tzZGItZGItYmxvYi1ibG9iX2Zp bGVfbWV0YS5oLnBhdGNoCiBQYXRjaDoJCTAwNTEtc3JjLWdvb2dsZXRlc3Qtbm9zaGFyZWRsaWJz LnBhdGNoCiBQYXRjaDoJCTAwNTItc3JjLXRyYWNpbmcucGF0Y2gKIFBhdGNoOgkJMDA1My1zcmMt dGVzdC1uZW9yYWRvcy1jb21tb25fdGVzdHMuaC5wYXRjaAotUGF0Y2g6CQkwMDU2LWxpYmFycm93 LTIwLjAuMC5wYXRjaAorUGF0Y2g6CQkwMDU2LWxpYmFycm93LTI1LjAuMC5wYXRjaAogUGF0Y2g6 CQkwMDU5LWlzbzY0Ni5wYXRjaAogUGF0Y2g6CQkwMDYyLXNyYy1yZ3ctZHJpdmVyLWRic3RvcmUt Q01ha2VMaXN0cy50eHQucGF0Y2gKIFBhdGNoOgkJMDA2My1zcmMtamFlZ2VydHJhY2luZy1vcGVu dGVsZW1ldHJ5LWNwcC1DTWFrZUxpc3RzLnR4dC5wYXRjaApAQCAtMzIwMyw2ICszMjAzLDkgQEAg ZXhpdCAwCiAlZW5kaWYKIAogJWNoYW5nZWxvZworKiBGcmkgU2VwIDExIDIwMjYgS2FsZWIgUy4g S0VJVEhMRVkgPGtrZWl0aGxlW2F0XXJlZGhhdC5jb20+IC0gMjoyMS4xLjAtNworLSByZWJ1aWxk IGZvciBsaWJhcnJvdyAoQXBhY2hlIEFycm93KSAyNS4wLjEKKwogKiBUaHUgQXVnIDEzIDIwMjYg SmFzb24gTW9udGxlb24gPGphc29uQG1vbnRsZW9uLmNvbT4gLSAyOjIxLjEuMC02CiAtIHJoYnoj MjUxNTk1NiwgZml4IEZUQkZTIG9uIHJpc2N2NjQgcmVncmVzc2lvbgogCg==