<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>160945</bug_id>
          
          <creation_ts>2016-08-17 11:46:45 -0700</creation_ts>
          <short_desc>Move WKSignedPublicKeyAndChallengeString into WebCore and make it proper C++</short_desc>
          <delta_ts>2016-08-17 12:59:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mitz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1220907</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-08-17 11:46:45 -0700</bug_when>
    <thetext>Move WKSignedPublicKeyAndChallengeString into WebCore and make it proper C++</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220908</commentid>
    <comment_count>1</comment_count>
      <attachid>286309</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-08-17 11:50:03 -0700</bug_when>
    <thetext>Created attachment 286309
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220914</commentid>
    <comment_count>2</comment_count>
      <attachid>286312</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-08-17 12:07:38 -0700</bug_when>
    <thetext>Created attachment 286312
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220923</commentid>
    <comment_count>3</comment_count>
      <attachid>286316</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-08-17 12:26:46 -0700</bug_when>
    <thetext>Created attachment 286316
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220925</commentid>
    <comment_count>4</comment_count>
      <attachid>286316</attachid>
    <who name="">mitz</who>
    <bug_when>2016-08-17 12:40:37 -0700</bug_when>
    <thetext>Comment on attachment 286316
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=286316&amp;action=review

&gt; Source/WebCore/platform/mac/SSLKeyGeneratorMac.mm:72
&gt; +    const CSSM_KEY *cssmPublicKey;

The * should go next to the type.

&gt; Source/WebCore/platform/mac/SSLKeyGeneratorMac.mm:76
&gt; +    const CSSM_ACCESS_CREDENTIALS credentials { };

We normally don’t const-qualify local, non-static variables.

&gt; Source/WebCore/platform/mac/SSLKeyGeneratorMac.mm:104
&gt; +    const CSSM_KEY *cssmPrivateKey;

Star on the wrong side.

&gt; Source/WebCore/platform/mac/SSLKeyGeneratorMac.mm:108
&gt; +    const CSSM_ACCESS_CREDENTIALS *credentials;

Ditto.

&gt; Source/WebCore/platform/mac/SSLKeyGeneratorMac.mm:142
&gt; +    // For security purposes, private keys imported by WebKit should not be accessible by 
&gt; +    // all applications. (4126976) Passing nullptr to SecTrustedApplicationCreateFromPath tells
&gt; +    // that function to assume the application bundle. Our access to the newly-created private
&gt; +    // key is necessary to sign challange responses.

I don’t think the 4126976 reference is needed. I’d remove the first and last sentences of the comment.

&gt; Source/WebCore/platform/mac/SSLKeyGeneratorMac.mm:179
&gt; +    ASSERT(challenge.length());

Isn’t this assertion wrong? We have a call site below that can pass us the empty string as a challenge.

&gt; Source/WebCore/platform/mac/SSLKeyGeneratorMac.mm:204
&gt; +    signedPublicKeyAndChallenge.signature.Length *= 8;

Mystery 8.

&gt; Source/WebCore/platform/mac/SSLKeyGeneratorMac.mm:206
&gt; +    CSSM_DATA encodedSignedPublicKeyAndChallenge {0, nullptr };

Missing space after the {.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220927</commentid>
    <comment_count>5</comment_count>
      <attachid>286316</attachid>
    <who name="">mitz</who>
    <bug_when>2016-08-17 12:42:17 -0700</bug_when>
    <thetext>Comment on attachment 286316
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=286316&amp;action=review

&gt; Source/WTF/wtf/spi/cocoa/SecuritySPI.h:33
&gt; +#include &lt;Security/keyTemplates.h&gt;

I think this isn’t present in the Apple-internal iOS SDK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220935</commentid>
    <comment_count>6</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-08-17 12:59:38 -0700</bug_when>
    <thetext>Committed r204567: &lt;http://trac.webkit.org/changeset/204567&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286309</attachid>
            <date>2016-08-17 11:50:03 -0700</date>
            <delta_ts>2016-08-17 12:07:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160945-20160817114815.patch</filename>
            <type>text/plain</type>
            <size>12241</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0NTM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDk1NDBiMTgzMmE0NDY5YzJlM2Q1YWQ4
NTAyMjVlYjY2OTRiNjg2M2UuLmViMGFiMTBkOTg2ZmM1MWIxOTc5ZmZhNTM1ZmZjODI5NDI2YTE2
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTYtMDgtMTcgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFdLU2lnbmVkUHVibGljS2V5QW5kQ2hh
bGxlbmdlU3RyaW5nIGludG8gV2ViQ29yZSBhbmQgbWFrZSBpdCBwcm9wZXIgQysrCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA5NDUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9SZXRhaW5QdHIu
aDoKKyAgICAgICAgKFdURjo6UmV0YWluUHRyOjpvcGVyYXRvciYpOgorICAgICAgICBDYXN0IHRo
aXMgdG8gdGhlIHJpZ2h0IHR5cGUuCisKKyAgICAgICAgKiB3dGYvc3BpL2NvY29hL1NlY3VyaXR5
U1BJLmg6CisgICAgICAgIEFkZCBuZXcgU1BJLgorCiAyMDE2LTA4LTE2ICBBbmRlcnMgQ2FybHNz
b24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGEgdGhpbmtvLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDg3NjQ5ZjkwMGM1NzYzMjBhZjBlOTYwNGEyNTE1YzI4ZWYwYWJlYzQuLmUyMWI0MDc1
OWNlN2Q4Y2VmMmNmMmZhOWFiMTI5YzY0MzkyMTM1YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAxNi0wOC0xNyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgor
CisgICAgICAgIE1vdmUgV0tTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcgaW50byBX
ZWJDb3JlIGFuZCBtYWtlIGl0IHByb3BlciBDKysKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDk0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OmdldFN1YmplY3RQdWJsaWNLZXkpOgorICAgICAgICAoV2Vi
Q29yZTo6c2lnblB1YmxpY0tleUFuZENoYWxsZW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpzaWdu
ZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcpOgorCiAyMDE2LTA4LTE2ICBBbmRlcnMgQ2Fy
bHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGJ1aWxkLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvUmV0YWluUHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9SZXRhaW5Q
dHIuaAppbmRleCA0MmE4MTk2YzkxZDc3Nzg1ZDcxMmJhZjg5ZGZmMGZmZTE3ODQ2MjJlLi4zYjNm
OGQ5YmNiMDZlODEzMmU5NThhMmQ5NWM5OGE4M2RlNTc1NDM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9SZXRhaW5QdHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZXRhaW5QdHIuaApAQCAt
OTYsNyArOTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIFJlcXVpcmUgdGhhdCB0aGUgcG9pbnRl
ciBpcyBudWxsLCB0byBwcmV2ZW50IGxlYWtzLgogICAgICAgICBBU1NFUlQoIW1fcHRyKTsKIAot
ICAgICAgICByZXR1cm4gJm1fcHRyOworICAgICAgICByZXR1cm4gKFB0clR5cGUqKSZtX3B0cjsK
ICAgICB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvc3BpL2NvY29hL1Nl
Y3VyaXR5U1BJLmggYi9Tb3VyY2UvV1RGL3d0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEkuaAppbmRl
eCBjYjliMjQ5YzgzODZkNDkwYjVjNTNlN2U0NGY1MzUzMmQ2ZjE5MjNmLi42MWM1OTNlYzAzMTlm
ZjY4ZDU4ZTM0MWZlYzA2ODU0ZmVhYTI2NDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9z
cGkvY29jb2EvU2VjdXJpdHlTUEkuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9zcGkvY29jb2EvU2Vj
dXJpdHlTUEkuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPFNlY3VyaXR5L1NlY0NlcnRp
ZmljYXRlUHJpdi5oPgogI2luY2x1ZGUgPFNlY3VyaXR5L1NlY1Rhc2suaD4KICNpbmNsdWRlIDxT
ZWN1cml0eS9TZWNUcnVzdFByaXYuaD4KKyNpbmNsdWRlIDxTZWN1cml0eS9rZXlUZW1wbGF0ZXMu
aD4KIAogI2Vsc2UKIApAQCAtNjIsNiArNjMsMTEgQEAgRVhURVJOX0MgQ0ZUeXBlUmVmIFNlY1Rh
c2tDb3B5VmFsdWVGb3JFbnRpdGxlbWVudChTZWNUYXNrUmVmLCBDRlN0cmluZ1JlZiBlbnRpdGwK
IEVYVEVSTl9DIENGU3RyaW5nUmVmIFNlY1Rhc2tDb3B5U2lnbmluZ0lkZW50aWZpZXIoU2VjVGFz
a1JlZiwgQ0ZFcnJvclJlZiAqKTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oTUFDKQorZXh0ZXJu
IGNvbnN0IFNlY0FzbjFUZW1wbGF0ZSBrU2VjQXNuMUFsZ29yaXRobUlEVGVtcGxhdGVbXTsKK2V4
dGVybiBjb25zdCBTZWNBc24xVGVtcGxhdGUga1NlY0FzbjFTdWJqZWN0UHVibGljS2V5SW5mb1Rl
bXBsYXRlW107CisjZW5kaWYKKwogI2lmIEhBVkUoU0VDX1RSVVNUX1NFUklBTElaQVRJT04pCiBF
WFRFUk5fQyBDRl9SRVRVUk5TX1JFVEFJTkVEIENGRGF0YVJlZiBTZWNUcnVzdFNlcmlhbGl6ZShT
ZWNUcnVzdFJlZiwgQ0ZFcnJvclJlZiAqKTsKIEVYVEVSTl9DIENGX1JFVFVSTlNfUkVUQUlORUQg
U2VjVHJ1c3RSZWYgU2VjVHJ1c3REZXNlcmlhbGl6ZShDRkRhdGFSZWYgc2VyaWFsaXplZFRydXN0
LCBDRkVycm9yUmVmICopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1NTTEtleUdlbmVyYXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TU0xL
ZXlHZW5lcmF0b3JNYWMubW0KaW5kZXggZGU4YjFiNDVkZWQ4MmE4YWRhYzgwZDE2YmE3NDdlMjFi
ZmY5ZmYwZi4uNDhmNmM1MDE0YTk3ZWMwZTYyZjVkY2VjM2FhMmZhZjRkOTEwNTNhZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9yTWFjLm1tCkBA
IC0yMywxNiArMjMsMTk1IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNTTEtleUdlbmVyYXRvci5oIgor
I2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJTU0xLZXlHZW5lcmF0b3IuaCIKIAotI2luY2x1
ZGUgIlVSTC5oIgotI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKLSNpbmNsdWRlICJXZWJD
b3JlU3lzdGVtSW50ZXJmYWNlLmgiCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9y
dCAiTG9jYWxpemVkU3RyaW5ncy5oIgorI2ltcG9ydCAiVVJMLmgiCisjaW1wb3J0IDxTZWN1cml0
eS9TZWNBc24xQ29kZXIuaD4KKyNpbXBvcnQgPFNlY3VyaXR5L1NlY0FzbjFUZW1wbGF0ZXMuaD4K
KyNpbXBvcnQgPFNlY3VyaXR5L1NlY0VuY29kZVRyYW5zZm9ybS5oPgorI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL1Njb3BlLmg+CisjaW1wb3J0IDx3dGYvc3BpL2NvY29h
L1NlY3VyaXR5U1BJLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9CYXNlNjQuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCisKK3N0cnVj
dCBQdWJsaWNLZXlBbmRDaGFsbGVuZ2UgeworICAgIENTU01fWDUwOV9TVUJKRUNUX1BVQkxJQ19L
RVlfSU5GTyBzdWJqZWN0UHVibGljS2V5SW5mbzsKKyAgICBDU1NNX0RBVEEgY2hhbGxlbmdlOwor
fTsKKworc3RydWN0IFNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZSB7CisgICAgUHVibGljS2V5
QW5kQ2hhbGxlbmdlIHB1YmxpY0tleUFuZENoYWxsZW5nZTsKKyAgICBDU1NNX1g1MDlfQUxHT1JJ
VEhNX0lERU5USUZJRVIgYWxnb3JpdGhtSWRlbnRpZmllcjsKKyAgICBDU1NNX0RBVEEgc2lnbmF0
dXJlOworfTsKKworc3RhdGljIGNvbnN0IFNlY0FzbjFUZW1wbGF0ZSBwdWJsaWNLZXlBbmRDaGFs
bGVuZ2VUZW1wbGF0ZVtdID0geworICAgIHsgU0VDX0FTTjFfU0VRVUVOQ0UsIDAsIG51bGxwdHIs
IHNpemVvZihQdWJsaWNLZXlBbmRDaGFsbGVuZ2UpIH0sCisgICAgeyBTRUNfQVNOMV9JTkxJTkUs
IG9mZnNldG9mKFB1YmxpY0tleUFuZENoYWxsZW5nZSwgc3ViamVjdFB1YmxpY0tleUluZm8pLCBr
U2VjQXNuMVN1YmplY3RQdWJsaWNLZXlJbmZvVGVtcGxhdGUsIDB9LAorICAgIHsgU0VDX0FTTjFf
SU5MSU5FLCBvZmZzZXRvZihQdWJsaWNLZXlBbmRDaGFsbGVuZ2UsIGNoYWxsZW5nZSksIGtTZWNB
c24xSUE1U3RyaW5nVGVtcGxhdGUsIDAgfSwKKyAgICB7IDAsIDAsIDAsIDB9Cit9OworCitzdGF0
aWMgY29uc3QgU2VjQXNuMVRlbXBsYXRlIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVRlbXBs
YXRlW10gPSB7CisgICAgeyBTRUNfQVNOMV9TRVFVRU5DRSwgMCwgbnVsbHB0ciwgc2l6ZW9mKFNp
Z25lZFB1YmxpY0tleUFuZENoYWxsZW5nZSkgfSwKKyAgICB7IFNFQ19BU04xX0lOTElORSwgb2Zm
c2V0b2YoU2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlLCBwdWJsaWNLZXlBbmRDaGFsbGVuZ2Up
LCBwdWJsaWNLZXlBbmRDaGFsbGVuZ2VUZW1wbGF0ZSwgMCB9LAorICAgIHsgU0VDX0FTTjFfSU5M
SU5FLCBvZmZzZXRvZihTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2UsIGFsZ29yaXRobUlkZW50
aWZpZXIpLCBrU2VjQXNuMUFsZ29yaXRobUlEVGVtcGxhdGUsIDAgfSwKKyAgICB7IFNFQ19BU04x
X0JJVF9TVFJJTkcsIG9mZnNldG9mKFNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZSwgc2lnbmF0
dXJlKSwgMCwgMCB9LAorICAgIHsgMCwgMCwgMCwgMCB9Cit9OworCitzdGF0aWMgYm9vbCBnZXRT
dWJqZWN0UHVibGljS2V5KENTU01fQ1NQX0hBTkRMRSBjc3BIYW5kbGUsIFNlY0tleVJlZiBwdWJs
aWNLZXksIENTU01fS0VZX1BUUiBzdWJqZWN0UHVibGljS2V5KQoreworICAgIGNvbnN0IENTU01f
S0VZICpjc3NtUHVibGljS2V5OworICAgIGlmIChTZWNLZXlHZXRDU1NNS2V5KHB1YmxpY0tleSwg
JmNzc21QdWJsaWNLZXkpICE9IG5vRXJyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBj
b25zdCBDU1NNX0FDQ0VTU19DUkVERU5USUFMUyBjcmVkZW50aWFscyB7IH07CisgICAgQ1NTTV9D
Q19IQU5ETEUgY2NIYW5kbGU7CisgICAgaWYgKENTU01fQ1NQX0NyZWF0ZVN5bW1ldHJpY0NvbnRl
eHQoY3NwSGFuZGxlLCBDU1NNX0FMR0lEX05PTkUsIENTU01fQUxHTU9ERV9OT05FLCAmY3JlZGVu
dGlhbHMsIE5VTEwsIE5VTEwsIENTU01fUEFERElOR19OT05FLCAwLCAmY2NIYW5kbGUpICE9IG5v
RXJyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGRlbGV0ZUNvbnRleHQgPSBt
YWtlU2NvcGVFeGl0KFsmXSB7CisgICAgICAgIENTU01fRGVsZXRlQ29udGV4dChjY0hhbmRsZSk7
CisgICAgfSk7CisKKyAgICBDU1NNX0NPTlRFWFRfQVRUUklCVVRFIHB1YmxpY0tleUZvcm1hdEF0
dHJpYnV0ZTsKKyAgICBwdWJsaWNLZXlGb3JtYXRBdHRyaWJ1dGUuQXR0cmlidXRlVHlwZSA9IENT
U01fQVRUUklCVVRFX1BVQkxJQ19LRVlfRk9STUFUOworICAgIHB1YmxpY0tleUZvcm1hdEF0dHJp
YnV0ZS5BdHRyaWJ1dGVMZW5ndGggPSBzaXplb2YodWludDMyKTsKKyAgICBwdWJsaWNLZXlGb3Jt
YXRBdHRyaWJ1dGUuQXR0cmlidXRlLkRhdGEgPSAoQ1NTTV9EQVRBX1BUUilDU1NNX0tFWUJMT0Jf
UkFXX0ZPUk1BVF9YNTA5OworCisgICAgaWYgKENTU01fVXBkYXRlQ29udGV4dEF0dHJpYnV0ZXMo
Y2NIYW5kbGUsIDEsICZwdWJsaWNLZXlGb3JtYXRBdHRyaWJ1dGUpICE9IG5vRXJyKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoQ1NTTV9XcmFwS2V5KGNjSGFuZGxlLCAmY3JlZGVu
dGlhbHMsIGNzc21QdWJsaWNLZXksIE5VTEwsIHN1YmplY3RQdWJsaWNLZXkpICE9IG5vRXJyKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJv
b2wgc2lnblB1YmxpY0tleUFuZENoYWxsZW5nZShDU1NNX0NTUF9IQU5ETEUgY3NwSGFuZGxlLCBj
b25zdCBDU1NNX0RBVEEqIHBsYWluVGV4dCwgU2VjS2V5UmVmIHByaXZhdGVLZXksIENTU01fQUxH
T1JJVEhNUyBhbGdvcml0aG1JRCwgQ1NTTV9EQVRBJiBzaWduYXR1cmUpCit7CisgICAgQVNTRVJU
KCFzaWduYXR1cmUuRGF0YSk7CisgICAgQVNTRVJUKCFzaWduYXR1cmUuTGVuZ3RoKTsKKworICAg
IGNvbnN0IENTU01fS0VZICpjc3NtUHJpdmF0ZUtleTsKKyAgICBpZiAoU2VjS2V5R2V0Q1NTTUtl
eShwcml2YXRlS2V5LCAmY3NzbVByaXZhdGVLZXkpICE9IG5vRXJyKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBjb25zdCBDU1NNX0FDQ0VTU19DUkVERU5USUFMUyAqY3JlZGVudGlhbHM7
CisgICAgaWYgKFNlY0tleUdldENyZWRlbnRpYWxzKHByaXZhdGVLZXksIENTU01fQUNMX0FVVEhP
UklaQVRJT05fU0lHTiwga1NlY0NyZWRlbnRpYWxUeXBlRGVmYXVsdCwgJmNyZWRlbnRpYWxzKSAh
PSBub0VycikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQ1NTTV9DQ19IQU5ETEUgY2NI
YW5kbGU7CisgICAgaWYgKENTU01fQ1NQX0NyZWF0ZVNpZ25hdHVyZUNvbnRleHQoY3NwSGFuZGxl
LCBhbGdvcml0aG1JRCwgY3JlZGVudGlhbHMsIGNzc21Qcml2YXRlS2V5LCAmY2NIYW5kbGUpICE9
IG5vRXJyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYXV0byBkZWxldGVDb250ZXh0ID0g
bWFrZVNjb3BlRXhpdChbJl0geworICAgICAgICBDU1NNX0RlbGV0ZUNvbnRleHQoY2NIYW5kbGUp
OworICAgIH0pOworCisgICAgaWYgKENTU01fU2lnbkRhdGEoY2NIYW5kbGUsIHBsYWluVGV4dCwg
MSwgQ1NTTV9BTEdJRF9OT05FLCAmc2lnbmF0dXJlKSAhPSBub0VycikKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBTdHJpbmcgc2lnbmVkUHVi
bGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemUsIGNvbnN0IENTdHJpbmcm
IGNoYWxsZW5nZSwgY29uc3QgU3RyaW5nJiBrZXlEZXNjcmlwdGlvbikKK3sKKyAgICBTaWduZWRQ
dWJsaWNLZXlBbmRDaGFsbGVuZ2Ugc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlIHsgfTsKKwor
ICAgIFJldGFpblB0cjxTZWNBY2Nlc3NSZWY+IGFjY2VzczsKKyAgICBpZiAoU2VjQWNjZXNzQ3Jl
YXRlKGtleURlc2NyaXB0aW9uLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIE5VTEwsICZhY2Nlc3Mp
ICE9IG5vRXJyKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBSZXRhaW5QdHI8Q0ZB
cnJheVJlZj4gYWNsczsKKyAgICBpZiAoU2VjQWNjZXNzQ29weVNlbGVjdGVkQUNMTGlzdChhY2Nl
c3MuZ2V0KCksIENTU01fQUNMX0FVVEhPUklaQVRJT05fREVDUllQVCwgJmFjbHMpICE9IG5vRXJy
KQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBTZWNBQ0xSZWYgYWNsID0gKFNlY0FD
TFJlZikoQ0ZBcnJheUdldFZhbHVlQXRJbmRleChhY2xzLmdldCgpLCAwKSk7CisKKyAgICAvLyBG
b3Igc2VjdXJpdHkgcHVycG9zZXMsIHByaXZhdGUga2V5cyBpbXBvcnRlZCBieSBXZWJLaXQgc2hv
dWxkIG5vdCBiZSBhY2Nlc3NpYmxlIGJ5IAorICAgIC8vIGFsbCBhcHBsaWNhdGlvbnMuICg0MTI2
OTc2KSBQYXNzaW5nIE5VTEwgdG8gU2VjVHJ1c3RlZEFwcGxpY2F0aW9uQ3JlYXRlRnJvbVBhdGgg
dGVsbHMKKyAgICAvLyB0aGF0IGZ1bmN0aW9uIHRvIGFzc3VtZSB0aGUgYXBwbGljYXRpb24gYnVu
ZGxlLiBPdXIgYWNjZXNzIHRvIHRoZSBuZXdseS1jcmVhdGVkIHByaXZhdGUKKyAgICAvLyBrZXkg
aXMgbmVjZXNzYXJ5IHRvIHNpZ24gY2hhbGxhbmdlIHJlc3BvbnNlcy4KKyAgICBSZXRhaW5QdHI8
U2VjVHJ1c3RlZEFwcGxpY2F0aW9uUmVmPiB0cnVzdGVkQXBwOworICAgIGlmIChTZWNUcnVzdGVk
QXBwbGljYXRpb25DcmVhdGVGcm9tUGF0aChOVUxMLCAmdHJ1c3RlZEFwcCkgIT0gbm9FcnIpCisg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIGNvbnN0IENTU01fQUNMX0tFWUNIQUlOX1BS
T01QVF9TRUxFQ1RPUiBkZWZhdWx0U2VsZWN0b3IgPSB7CisgICAgICAgIENTU01fQUNMX0tFWUNI
QUlOX1BST01QVF9DVVJSRU5UX1ZFUlNJT04sIDAKKyAgICB9OworICAgIGlmIChTZWNBQ0xTZXRT
aW1wbGVDb250ZW50cyhhY2wsIChfX2JyaWRnZSBDRkFycmF5UmVmKUBbIChfX2JyaWRnZSBpZCl0
cnVzdGVkQXBwLmdldCgpIF0sIGtleURlc2NyaXB0aW9uLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCks
ICZkZWZhdWx0U2VsZWN0b3IpICE9IG5vRXJyKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisK
KyAgICBSZXRhaW5QdHI8U2VjS2V5UmVmPiBwdWJsaWNLZXk7CisgICAgUmV0YWluUHRyPFNlY0tl
eVJlZj4gcHJpdmF0ZUtleTsKKyAgICBpZiAoU2VjS2V5Q3JlYXRlUGFpcihudWxscHRyLCBDU1NN
X0FMR0lEX1JTQSwga2V5U2l6ZSwgMCwgQ1NTTV9LRVlVU0VfQU5ZLCBDU1NNX0tFWUFUVFJfUEVS
TUFORU5UIHwgQ1NTTV9LRVlBVFRSX0VYVFJBQ1RBQkxFIHwgQ1NTTV9LRVlBVFRSX1JFVFVSTl9S
RUYsIENTU01fS0VZVVNFX0FOWSwgQ1NTTV9LRVlBVFRSX1NFTlNJVElWRSB8IENTU01fS0VZQVRU
Ul9SRVRVUk5fUkVGIHwgQ1NTTV9LRVlBVFRSX1BFUk1BTkVOVCB8IENTU01fS0VZQVRUUl9FWFRS
QUNUQUJMRSwgYWNjZXNzLmdldCgpLCAmcHVibGljS2V5LCAmcHJpdmF0ZUtleSkgIT0gbm9FcnIp
CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIENTU01fQ1NQX0hBTkRMRSBjc3BIYW5k
bGU7CisgICAgaWYgKFNlY0tleUdldENTUEhhbmRsZShwcml2YXRlS2V5LmdldCgpLCAmY3NwSGFu
ZGxlKSAhPSBub0VycikKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIAorICAgIENTU01f
S0VZIHN1YmplY3RQdWJsaWNLZXkgeyB9OworICAgIGlmICghZ2V0U3ViamVjdFB1YmxpY0tleShj
c3BIYW5kbGUsIHB1YmxpY0tleS5nZXQoKSwgJnN1YmplY3RQdWJsaWNLZXkpKQorICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CisgICAgYXV0byBmcmVlU3ViamVjdFB1YmxpY0tleSA9IG1ha2VTY29w
ZUV4aXQoWyZdIHsKKyAgICAgICAgQ1NTTV9GcmVlS2V5KGNzcEhhbmRsZSwgTlVMTCwgJnN1Ympl
Y3RQdWJsaWNLZXksIENTU01fRkFMU0UpOworICAgIH0pOworCisgICAgU2VjQXNuMUNvZGVyUmVm
IGNvZGVyID0gbnVsbHB0cjsKKyAgICBpZiAoU2VjQXNuMUNvZGVyQ3JlYXRlKCZjb2RlcikgIT0g
bm9FcnIpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICBhdXRvIHJlbGVhc2VDb2RlciA9
IG1ha2VTY29wZUV4aXQoWyZdIHsKKyAgICAgICAgU2VjQXNuMUNvZGVyUmVsZWFzZShjb2Rlcik7
CisgICAgfSk7CisKKyAgICBpZiAoU2VjQXNuMURlY29kZURhdGEoY29kZXIsICZzdWJqZWN0UHVi
bGljS2V5LktleURhdGEsIGtTZWNBc24xU3ViamVjdFB1YmxpY0tleUluZm9UZW1wbGF0ZSwgJnNp
Z25lZFB1YmxpY0tleUFuZENoYWxsZW5nZS5wdWJsaWNLZXlBbmRDaGFsbGVuZ2Uuc3ViamVjdFB1
YmxpY0tleUluZm8pICE9IG5vRXJyKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBB
U1NFUlQoY2hhbGxlbmdlLmxlbmd0aCgpKTsKKworICAgIHNpZ25lZFB1YmxpY0tleUFuZENoYWxs
ZW5nZS5wdWJsaWNLZXlBbmRDaGFsbGVuZ2UuY2hhbGxlbmdlLkxlbmd0aCA9IGNoYWxsZW5nZS5s
ZW5ndGgoKTsKKyAgICBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2UucHVibGljS2V5QW5kQ2hh
bGxlbmdlLmNoYWxsZW5nZS5EYXRhID0gKHVpbnQ4X3QqKWNoYWxsZW5nZS5kYXRhKCk7CisKKyAg
ICBDU1NNX0RBVEEgZW5jb2RlZFB1YmxpY0tleUFuZENoYWxsZW5nZSA9IHswLCBOVUxMfTsKKyAg
ICBpZiAoU2VjQXNuMUVuY29kZUl0ZW0oY29kZXIsICZzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVu
Z2UucHVibGljS2V5QW5kQ2hhbGxlbmdlLCBwdWJsaWNLZXlBbmRDaGFsbGVuZ2VUZW1wbGF0ZSwg
JmVuY29kZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2UpICE9IG5vRXJyKQorICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CisKKyAgICBDU1NNX0RBVEEgc2lnbmF0dXJlIHsgfTsKKyAgICBpZiAoIXNpZ25Q
dWJsaWNLZXlBbmRDaGFsbGVuZ2UoY3NwSGFuZGxlLCAmZW5jb2RlZFB1YmxpY0tleUFuZENoYWxs
ZW5nZSwgcHJpdmF0ZUtleS5nZXQoKSwgQ1NTTV9BTEdJRF9NRDVXaXRoUlNBLCBzaWduYXR1cmUp
KQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgYXV0byBmcmVlU2lnbmF0dXJlRGF0YSA9
IG1ha2VTY29wZUV4aXQoWyZdIHsKKyAgICAgICAgQ1NTTV9BUElfTUVNT1JZX0ZVTkNTIG1lbW9y
eUZ1bmN0aW9uczsKKyAgICAgICAgaWYgKENTU01fR2V0QVBJTWVtb3J5RnVuY3Rpb25zKGNzcEhh
bmRsZSwgJm1lbW9yeUZ1bmN0aW9ucykgIT0gbm9FcnIpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgbWVtb3J5RnVuY3Rpb25zLmZyZWVfZnVuYyhzaWduYXR1cmUuRGF0YSwgbWVtb3J5
RnVuY3Rpb25zLkFsbG9jUmVmKTsKKyAgICB9KTsKKworICAgIHN0YXRpYyBjb25zdCB1aW50OCBl
bmNvZGVOdWxsWzJdID0geyBTRUNfQVNOMV9OVUxMLCAwIH07CisgICAgc2lnbmVkUHVibGljS2V5
QW5kQ2hhbGxlbmdlLmFsZ29yaXRobUlkZW50aWZpZXIuYWxnb3JpdGhtID0gQ1NTTU9JRF9NRDVX
aXRoUlNBOworICAgIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZS5hbGdvcml0aG1JZGVudGlm
aWVyLnBhcmFtZXRlcnMuRGF0YSA9ICh1aW50OCAqKWVuY29kZU51bGw7CisgICAgc2lnbmVkUHVi
bGljS2V5QW5kQ2hhbGxlbmdlLmFsZ29yaXRobUlkZW50aWZpZXIucGFyYW1ldGVycy5MZW5ndGgg
PSAyOworICAgIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZS5zaWduYXR1cmUgPSBzaWduYXR1
cmU7CisgICAgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlLnNpZ25hdHVyZS5MZW5ndGggKj0g
ODsKKworICAgIENTU01fREFUQSBlbmNvZGVkU2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlID0g
ezAsIG51bGxwdHIgfTsKKyAgICBpZiAoU2VjQXNuMUVuY29kZUl0ZW0oY29kZXIsICZzaWduZWRQ
dWJsaWNLZXlBbmRDaGFsbGVuZ2UsIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVRlbXBsYXRl
LCAmZW5jb2RlZFNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZSkgIT0gbm9FcnIpCisgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBiYXNlNjRFbmNvZGUoZW5jb2RlZFNpZ25l
ZFB1YmxpY0tleUFuZENoYWxsZW5nZS5EYXRhLCBlbmNvZGVkU2lnbmVkUHVibGljS2V5QW5kQ2hh
bGxlbmdlLkxlbmd0aCk7Cit9CisKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKwogdm9p
ZCBnZXRTdXBwb3J0ZWRLZXlTaXplcyhWZWN0b3I8U3RyaW5nPiYgc3VwcG9ydGVkS2V5U2l6ZXMp
CiB7CiAgICAgQVNTRVJUKHN1cHBvcnRlZEtleVNpemVzLmlzRW1wdHkoKSk7CkBAIC02MCw3ICsy
MzksOSBAQCBTdHJpbmcgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVk
IGtleVNpemVJbmRleCwgY29uc3QgU3RyaW5nJiBjaAogICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CiAgICAgfQogCi0gICAgcmV0dXJuIGFkb3B0Q0Yod2tTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVu
Z2VTdHJpbmcoa2V5U2l6ZSwgY2hhbGxlbmdlU3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCks
IGtleWdlbktleWNoYWluSXRlbU5hbWUodXJsLmhvc3QoKSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSkpLmdldCgpOworICAgIGF1dG8gY2hhbGxlbmdlID0gY2hhbGxlbmdlU3RyaW5nLmNvbnRhaW5z
T25seUFTQ0lJKCkgPyBjaGFsbGVuZ2VTdHJpbmcuYXNjaWkoKSA6ICIiOworCisgICAgcmV0dXJu
IHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhrZXlTaXplLCBjaGFsbGVuZ2UsIGtl
eWdlbktleWNoYWluSXRlbU5hbWUodXJsLmhvc3QoKSkpOwogfQogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286312</attachid>
            <date>2016-08-17 12:07:38 -0700</date>
            <delta_ts>2016-08-17 12:26:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160945-20160817120549.patch</filename>
            <type>text/plain</type>
            <size>12311</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0NTM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDk1NDBiMTgzMmE0NDY5YzJlM2Q1YWQ4
NTAyMjVlYjY2OTRiNjg2M2UuLmViMGFiMTBkOTg2ZmM1MWIxOTc5ZmZhNTM1ZmZjODI5NDI2YTE2
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTYtMDgtMTcgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFdLU2lnbmVkUHVibGljS2V5QW5kQ2hh
bGxlbmdlU3RyaW5nIGludG8gV2ViQ29yZSBhbmQgbWFrZSBpdCBwcm9wZXIgQysrCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA5NDUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9SZXRhaW5QdHIu
aDoKKyAgICAgICAgKFdURjo6UmV0YWluUHRyOjpvcGVyYXRvciYpOgorICAgICAgICBDYXN0IHRo
aXMgdG8gdGhlIHJpZ2h0IHR5cGUuCisKKyAgICAgICAgKiB3dGYvc3BpL2NvY29hL1NlY3VyaXR5
U1BJLmg6CisgICAgICAgIEFkZCBuZXcgU1BJLgorCiAyMDE2LTA4LTE2ICBBbmRlcnMgQ2FybHNz
b24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGEgdGhpbmtvLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDg3NjQ5ZjkwMGM1NzYzMjBhZjBlOTYwNGEyNTE1YzI4ZWYwYWJlYzQuLmUyMWI0MDc1
OWNlN2Q4Y2VmMmNmMmZhOWFiMTI5YzY0MzkyMTM1YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAxNi0wOC0xNyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgor
CisgICAgICAgIE1vdmUgV0tTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcgaW50byBX
ZWJDb3JlIGFuZCBtYWtlIGl0IHByb3BlciBDKysKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDk0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OmdldFN1YmplY3RQdWJsaWNLZXkpOgorICAgICAgICAoV2Vi
Q29yZTo6c2lnblB1YmxpY0tleUFuZENoYWxsZW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpzaWdu
ZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcpOgorCiAyMDE2LTA4LTE2ICBBbmRlcnMgQ2Fy
bHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGJ1aWxkLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvUmV0YWluUHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9SZXRhaW5Q
dHIuaAppbmRleCA0MmE4MTk2YzkxZDc3Nzg1ZDcxMmJhZjg5ZGZmMGZmZTE3ODQ2MjJlLi4zYjNm
OGQ5YmNiMDZlODEzMmU5NThhMmQ5NWM5OGE4M2RlNTc1NDM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9SZXRhaW5QdHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZXRhaW5QdHIuaApAQCAt
OTYsNyArOTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIFJlcXVpcmUgdGhhdCB0aGUgcG9pbnRl
ciBpcyBudWxsLCB0byBwcmV2ZW50IGxlYWtzLgogICAgICAgICBBU1NFUlQoIW1fcHRyKTsKIAot
ICAgICAgICByZXR1cm4gJm1fcHRyOworICAgICAgICByZXR1cm4gKFB0clR5cGUqKSZtX3B0cjsK
ICAgICB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvc3BpL2NvY29hL1Nl
Y3VyaXR5U1BJLmggYi9Tb3VyY2UvV1RGL3d0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEkuaAppbmRl
eCBjYjliMjQ5YzgzODZkNDkwYjVjNTNlN2U0NGY1MzUzMmQ2ZjE5MjNmLi40MjYzNDQ0MDAzOGY4
YjY4ZTg3Y2M0YjVlZjhmMzJjNGNjYWVlYzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9z
cGkvY29jb2EvU2VjdXJpdHlTUEkuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9zcGkvY29jb2EvU2Vj
dXJpdHlTUEkuaApAQCAtMjgsOSArMjgsMTEgQEAKIAogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9T
REspCiAKKyNpbmNsdWRlIDxTZWN1cml0eS9TZWNBc24xVHlwZXMuaD4KICNpbmNsdWRlIDxTZWN1
cml0eS9TZWNDZXJ0aWZpY2F0ZVByaXYuaD4KICNpbmNsdWRlIDxTZWN1cml0eS9TZWNUYXNrLmg+
CiAjaW5jbHVkZSA8U2VjdXJpdHkvU2VjVHJ1c3RQcml2Lmg+CisjaW5jbHVkZSA8U2VjdXJpdHkv
a2V5VGVtcGxhdGVzLmg+CiAKICNlbHNlCiAKQEAgLTYyLDYgKzY0LDExIEBAIEVYVEVSTl9DIENG
VHlwZVJlZiBTZWNUYXNrQ29weVZhbHVlRm9yRW50aXRsZW1lbnQoU2VjVGFza1JlZiwgQ0ZTdHJp
bmdSZWYgZW50aXRsCiBFWFRFUk5fQyBDRlN0cmluZ1JlZiBTZWNUYXNrQ29weVNpZ25pbmdJZGVu
dGlmaWVyKFNlY1Rhc2tSZWYsIENGRXJyb3JSZWYgKik7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JN
KE1BQykKK2V4dGVybiBjb25zdCBTZWNBc24xVGVtcGxhdGUga1NlY0FzbjFBbGdvcml0aG1JRFRl
bXBsYXRlW107CitleHRlcm4gY29uc3QgU2VjQXNuMVRlbXBsYXRlIGtTZWNBc24xU3ViamVjdFB1
YmxpY0tleUluZm9UZW1wbGF0ZVtdOworI2VuZGlmCisKICNpZiBIQVZFKFNFQ19UUlVTVF9TRVJJ
QUxJWkFUSU9OKQogRVhURVJOX0MgQ0ZfUkVUVVJOU19SRVRBSU5FRCBDRkRhdGFSZWYgU2VjVHJ1
c3RTZXJpYWxpemUoU2VjVHJ1c3RSZWYsIENGRXJyb3JSZWYgKik7CiBFWFRFUk5fQyBDRl9SRVRV
Uk5TX1JFVEFJTkVEIFNlY1RydXN0UmVmIFNlY1RydXN0RGVzZXJpYWxpemUoQ0ZEYXRhUmVmIHNl
cmlhbGl6ZWRUcnVzdCwgQ0ZFcnJvclJlZiAqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9yTWFjLm1tCmluZGV4IGRlOGIxYjQ1ZGVkODJhOGFkYWM4
MGQxNmJhNzQ3ZTIxYmZmOWZmMGYuLjQ4ZjZjNTAxNGE5N2VjMGU2MmY1ZGNlYzNhYTJmYWY0ZDkx
MDUzYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TU0xLZXlHZW5l
cmF0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVy
YXRvck1hYy5tbQpAQCAtMjMsMTYgKzIzLDE5NSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTU0xLZXlH
ZW5lcmF0b3IuaCIKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiU1NMS2V5R2VuZXJhdG9y
LmgiCiAKLSNpbmNsdWRlICJVUkwuaCIKLSNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCi0j
aW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KKyNpbXBvcnQgIkxvY2FsaXplZFN0cmluZ3MuaCIKKyNpbXBvcnQgIlVSTC5oIgorI2lt
cG9ydCA8U2VjdXJpdHkvU2VjQXNuMUNvZGVyLmg+CisjaW1wb3J0IDxTZWN1cml0eS9TZWNBc24x
VGVtcGxhdGVzLmg+CisjaW1wb3J0IDxTZWN1cml0eS9TZWNFbmNvZGVUcmFuc2Zvcm0uaD4KKyNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9TY29wZS5oPgorI2ltcG9ydCA8
d3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oPgorI2ltcG9ydCA8d3RmL3RleHQvQmFzZTY0Lmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gK
KyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRp
b25zIgorCitzdHJ1Y3QgUHVibGljS2V5QW5kQ2hhbGxlbmdlIHsKKyAgICBDU1NNX1g1MDlfU1VC
SkVDVF9QVUJMSUNfS0VZX0lORk8gc3ViamVjdFB1YmxpY0tleUluZm87CisgICAgQ1NTTV9EQVRB
IGNoYWxsZW5nZTsKK307CisKK3N0cnVjdCBTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2Ugewor
ICAgIFB1YmxpY0tleUFuZENoYWxsZW5nZSBwdWJsaWNLZXlBbmRDaGFsbGVuZ2U7CisgICAgQ1NT
TV9YNTA5X0FMR09SSVRITV9JREVOVElGSUVSIGFsZ29yaXRobUlkZW50aWZpZXI7CisgICAgQ1NT
TV9EQVRBIHNpZ25hdHVyZTsKK307CisKK3N0YXRpYyBjb25zdCBTZWNBc24xVGVtcGxhdGUgcHVi
bGljS2V5QW5kQ2hhbGxlbmdlVGVtcGxhdGVbXSA9IHsKKyAgICB7IFNFQ19BU04xX1NFUVVFTkNF
LCAwLCBudWxscHRyLCBzaXplb2YoUHVibGljS2V5QW5kQ2hhbGxlbmdlKSB9LAorICAgIHsgU0VD
X0FTTjFfSU5MSU5FLCBvZmZzZXRvZihQdWJsaWNLZXlBbmRDaGFsbGVuZ2UsIHN1YmplY3RQdWJs
aWNLZXlJbmZvKSwga1NlY0FzbjFTdWJqZWN0UHVibGljS2V5SW5mb1RlbXBsYXRlLCAwfSwKKyAg
ICB7IFNFQ19BU04xX0lOTElORSwgb2Zmc2V0b2YoUHVibGljS2V5QW5kQ2hhbGxlbmdlLCBjaGFs
bGVuZ2UpLCBrU2VjQXNuMUlBNVN0cmluZ1RlbXBsYXRlLCAwIH0sCisgICAgeyAwLCAwLCAwLCAw
fQorfTsKKworc3RhdGljIGNvbnN0IFNlY0FzbjFUZW1wbGF0ZSBzaWduZWRQdWJsaWNLZXlBbmRD
aGFsbGVuZ2VUZW1wbGF0ZVtdID0geworICAgIHsgU0VDX0FTTjFfU0VRVUVOQ0UsIDAsIG51bGxw
dHIsIHNpemVvZihTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2UpIH0sCisgICAgeyBTRUNfQVNO
MV9JTkxJTkUsIG9mZnNldG9mKFNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZSwgcHVibGljS2V5
QW5kQ2hhbGxlbmdlKSwgcHVibGljS2V5QW5kQ2hhbGxlbmdlVGVtcGxhdGUsIDAgfSwKKyAgICB7
IFNFQ19BU04xX0lOTElORSwgb2Zmc2V0b2YoU2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlLCBh
bGdvcml0aG1JZGVudGlmaWVyKSwga1NlY0FzbjFBbGdvcml0aG1JRFRlbXBsYXRlLCAwIH0sCisg
ICAgeyBTRUNfQVNOMV9CSVRfU1RSSU5HLCBvZmZzZXRvZihTaWduZWRQdWJsaWNLZXlBbmRDaGFs
bGVuZ2UsIHNpZ25hdHVyZSksIDAsIDAgfSwKKyAgICB7IDAsIDAsIDAsIDAgfQorfTsKKworc3Rh
dGljIGJvb2wgZ2V0U3ViamVjdFB1YmxpY0tleShDU1NNX0NTUF9IQU5ETEUgY3NwSGFuZGxlLCBT
ZWNLZXlSZWYgcHVibGljS2V5LCBDU1NNX0tFWV9QVFIgc3ViamVjdFB1YmxpY0tleSkKK3sKKyAg
ICBjb25zdCBDU1NNX0tFWSAqY3NzbVB1YmxpY0tleTsKKyAgICBpZiAoU2VjS2V5R2V0Q1NTTUtl
eShwdWJsaWNLZXksICZjc3NtUHVibGljS2V5KSAhPSBub0VycikKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgY29uc3QgQ1NTTV9BQ0NFU1NfQ1JFREVOVElBTFMgY3JlZGVudGlhbHMgeyB9
OworICAgIENTU01fQ0NfSEFORExFIGNjSGFuZGxlOworICAgIGlmIChDU1NNX0NTUF9DcmVhdGVT
eW1tZXRyaWNDb250ZXh0KGNzcEhhbmRsZSwgQ1NTTV9BTEdJRF9OT05FLCBDU1NNX0FMR01PREVf
Tk9ORSwgJmNyZWRlbnRpYWxzLCBOVUxMLCBOVUxMLCBDU1NNX1BBRERJTkdfTk9ORSwgMCwgJmNj
SGFuZGxlKSAhPSBub0VycikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBkZWxl
dGVDb250ZXh0ID0gbWFrZVNjb3BlRXhpdChbJl0geworICAgICAgICBDU1NNX0RlbGV0ZUNvbnRl
eHQoY2NIYW5kbGUpOworICAgIH0pOworCisgICAgQ1NTTV9DT05URVhUX0FUVFJJQlVURSBwdWJs
aWNLZXlGb3JtYXRBdHRyaWJ1dGU7CisgICAgcHVibGljS2V5Rm9ybWF0QXR0cmlidXRlLkF0dHJp
YnV0ZVR5cGUgPSBDU1NNX0FUVFJJQlVURV9QVUJMSUNfS0VZX0ZPUk1BVDsKKyAgICBwdWJsaWNL
ZXlGb3JtYXRBdHRyaWJ1dGUuQXR0cmlidXRlTGVuZ3RoID0gc2l6ZW9mKHVpbnQzMik7CisgICAg
cHVibGljS2V5Rm9ybWF0QXR0cmlidXRlLkF0dHJpYnV0ZS5EYXRhID0gKENTU01fREFUQV9QVFIp
Q1NTTV9LRVlCTE9CX1JBV19GT1JNQVRfWDUwOTsKKworICAgIGlmIChDU1NNX1VwZGF0ZUNvbnRl
eHRBdHRyaWJ1dGVzKGNjSGFuZGxlLCAxLCAmcHVibGljS2V5Rm9ybWF0QXR0cmlidXRlKSAhPSBu
b0VycikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKENTU01fV3JhcEtleShjY0hh
bmRsZSwgJmNyZWRlbnRpYWxzLCBjc3NtUHVibGljS2V5LCBOVUxMLCBzdWJqZWN0UHVibGljS2V5
KSAhPSBub0VycikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK3N0YXRpYyBib29sIHNpZ25QdWJsaWNLZXlBbmRDaGFsbGVuZ2UoQ1NTTV9DU1BfSEFORExF
IGNzcEhhbmRsZSwgY29uc3QgQ1NTTV9EQVRBKiBwbGFpblRleHQsIFNlY0tleVJlZiBwcml2YXRl
S2V5LCBDU1NNX0FMR09SSVRITVMgYWxnb3JpdGhtSUQsIENTU01fREFUQSYgc2lnbmF0dXJlKQor
eworICAgIEFTU0VSVCghc2lnbmF0dXJlLkRhdGEpOworICAgIEFTU0VSVCghc2lnbmF0dXJlLkxl
bmd0aCk7CisKKyAgICBjb25zdCBDU1NNX0tFWSAqY3NzbVByaXZhdGVLZXk7CisgICAgaWYgKFNl
Y0tleUdldENTU01LZXkocHJpdmF0ZUtleSwgJmNzc21Qcml2YXRlS2V5KSAhPSBub0VycikKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY29uc3QgQ1NTTV9BQ0NFU1NfQ1JFREVOVElBTFMg
KmNyZWRlbnRpYWxzOworICAgIGlmIChTZWNLZXlHZXRDcmVkZW50aWFscyhwcml2YXRlS2V5LCBD
U1NNX0FDTF9BVVRIT1JJWkFUSU9OX1NJR04sIGtTZWNDcmVkZW50aWFsVHlwZURlZmF1bHQsICZj
cmVkZW50aWFscykgIT0gbm9FcnIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIENTU01f
Q0NfSEFORExFIGNjSGFuZGxlOworICAgIGlmIChDU1NNX0NTUF9DcmVhdGVTaWduYXR1cmVDb250
ZXh0KGNzcEhhbmRsZSwgYWxnb3JpdGhtSUQsIGNyZWRlbnRpYWxzLCBjc3NtUHJpdmF0ZUtleSwg
JmNjSGFuZGxlKSAhPSBub0VycikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8gZGVs
ZXRlQ29udGV4dCA9IG1ha2VTY29wZUV4aXQoWyZdIHsKKyAgICAgICAgQ1NTTV9EZWxldGVDb250
ZXh0KGNjSGFuZGxlKTsKKyAgICB9KTsKKworICAgIGlmIChDU1NNX1NpZ25EYXRhKGNjSGFuZGxl
LCBwbGFpblRleHQsIDEsIENTU01fQUxHSURfTk9ORSwgJnNpZ25hdHVyZSkgIT0gbm9FcnIpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgU3Ry
aW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplLCBj
b25zdCBDU3RyaW5nJiBjaGFsbGVuZ2UsIGNvbnN0IFN0cmluZyYga2V5RGVzY3JpcHRpb24pCit7
CisgICAgU2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlIHNpZ25lZFB1YmxpY0tleUFuZENoYWxs
ZW5nZSB7IH07CisKKyAgICBSZXRhaW5QdHI8U2VjQWNjZXNzUmVmPiBhY2Nlc3M7CisgICAgaWYg
KFNlY0FjY2Vzc0NyZWF0ZShrZXlEZXNjcmlwdGlvbi5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBO
VUxMLCAmYWNjZXNzKSAhPSBub0VycikKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAg
UmV0YWluUHRyPENGQXJyYXlSZWY+IGFjbHM7CisgICAgaWYgKFNlY0FjY2Vzc0NvcHlTZWxlY3Rl
ZEFDTExpc3QoYWNjZXNzLmdldCgpLCBDU1NNX0FDTF9BVVRIT1JJWkFUSU9OX0RFQ1JZUFQsICZh
Y2xzKSAhPSBub0VycikKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgU2VjQUNMUmVm
IGFjbCA9IChTZWNBQ0xSZWYpKENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoYWNscy5nZXQoKSwgMCkp
OworCisgICAgLy8gRm9yIHNlY3VyaXR5IHB1cnBvc2VzLCBwcml2YXRlIGtleXMgaW1wb3J0ZWQg
YnkgV2ViS2l0IHNob3VsZCBub3QgYmUgYWNjZXNzaWJsZSBieSAKKyAgICAvLyBhbGwgYXBwbGlj
YXRpb25zLiAoNDEyNjk3NikgUGFzc2luZyBOVUxMIHRvIFNlY1RydXN0ZWRBcHBsaWNhdGlvbkNy
ZWF0ZUZyb21QYXRoIHRlbGxzCisgICAgLy8gdGhhdCBmdW5jdGlvbiB0byBhc3N1bWUgdGhlIGFw
cGxpY2F0aW9uIGJ1bmRsZS4gT3VyIGFjY2VzcyB0byB0aGUgbmV3bHktY3JlYXRlZCBwcml2YXRl
CisgICAgLy8ga2V5IGlzIG5lY2Vzc2FyeSB0byBzaWduIGNoYWxsYW5nZSByZXNwb25zZXMuCisg
ICAgUmV0YWluUHRyPFNlY1RydXN0ZWRBcHBsaWNhdGlvblJlZj4gdHJ1c3RlZEFwcDsKKyAgICBp
ZiAoU2VjVHJ1c3RlZEFwcGxpY2F0aW9uQ3JlYXRlRnJvbVBhdGgoTlVMTCwgJnRydXN0ZWRBcHAp
ICE9IG5vRXJyKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBjb25zdCBDU1NNX0FD
TF9LRVlDSEFJTl9QUk9NUFRfU0VMRUNUT1IgZGVmYXVsdFNlbGVjdG9yID0geworICAgICAgICBD
U1NNX0FDTF9LRVlDSEFJTl9QUk9NUFRfQ1VSUkVOVF9WRVJTSU9OLCAwCisgICAgfTsKKyAgICBp
ZiAoU2VjQUNMU2V0U2ltcGxlQ29udGVudHMoYWNsLCAoX19icmlkZ2UgQ0ZBcnJheVJlZilAWyAo
X19icmlkZ2UgaWQpdHJ1c3RlZEFwcC5nZXQoKSBdLCBrZXlEZXNjcmlwdGlvbi5jcmVhdGVDRlN0
cmluZygpLmdldCgpLCAmZGVmYXVsdFNlbGVjdG9yKSAhPSBub0VycikKKyAgICAgICAgcmV0dXJu
IFN0cmluZygpOworCisgICAgUmV0YWluUHRyPFNlY0tleVJlZj4gcHVibGljS2V5OworICAgIFJl
dGFpblB0cjxTZWNLZXlSZWY+IHByaXZhdGVLZXk7CisgICAgaWYgKFNlY0tleUNyZWF0ZVBhaXIo
bnVsbHB0ciwgQ1NTTV9BTEdJRF9SU0EsIGtleVNpemUsIDAsIENTU01fS0VZVVNFX0FOWSwgQ1NT
TV9LRVlBVFRSX1BFUk1BTkVOVCB8IENTU01fS0VZQVRUUl9FWFRSQUNUQUJMRSB8IENTU01fS0VZ
QVRUUl9SRVRVUk5fUkVGLCBDU1NNX0tFWVVTRV9BTlksIENTU01fS0VZQVRUUl9TRU5TSVRJVkUg
fCBDU1NNX0tFWUFUVFJfUkVUVVJOX1JFRiB8IENTU01fS0VZQVRUUl9QRVJNQU5FTlQgfCBDU1NN
X0tFWUFUVFJfRVhUUkFDVEFCTEUsIGFjY2Vzcy5nZXQoKSwgJnB1YmxpY0tleSwgJnByaXZhdGVL
ZXkpICE9IG5vRXJyKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBDU1NNX0NTUF9I
QU5ETEUgY3NwSGFuZGxlOworICAgIGlmIChTZWNLZXlHZXRDU1BIYW5kbGUocHJpdmF0ZUtleS5n
ZXQoKSwgJmNzcEhhbmRsZSkgIT0gbm9FcnIpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAg
ICAKKyAgICBDU1NNX0tFWSBzdWJqZWN0UHVibGljS2V5IHsgfTsKKyAgICBpZiAoIWdldFN1Ympl
Y3RQdWJsaWNLZXkoY3NwSGFuZGxlLCBwdWJsaWNLZXkuZ2V0KCksICZzdWJqZWN0UHVibGljS2V5
KSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIGF1dG8gZnJlZVN1YmplY3RQdWJsaWNL
ZXkgPSBtYWtlU2NvcGVFeGl0KFsmXSB7CisgICAgICAgIENTU01fRnJlZUtleShjc3BIYW5kbGUs
IE5VTEwsICZzdWJqZWN0UHVibGljS2V5LCBDU1NNX0ZBTFNFKTsKKyAgICB9KTsKKworICAgIFNl
Y0FzbjFDb2RlclJlZiBjb2RlciA9IG51bGxwdHI7CisgICAgaWYgKFNlY0FzbjFDb2RlckNyZWF0
ZSgmY29kZXIpICE9IG5vRXJyKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgYXV0byBy
ZWxlYXNlQ29kZXIgPSBtYWtlU2NvcGVFeGl0KFsmXSB7CisgICAgICAgIFNlY0FzbjFDb2RlclJl
bGVhc2UoY29kZXIpOworICAgIH0pOworCisgICAgaWYgKFNlY0FzbjFEZWNvZGVEYXRhKGNvZGVy
LCAmc3ViamVjdFB1YmxpY0tleS5LZXlEYXRhLCBrU2VjQXNuMVN1YmplY3RQdWJsaWNLZXlJbmZv
VGVtcGxhdGUsICZzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2UucHVibGljS2V5QW5kQ2hhbGxl
bmdlLnN1YmplY3RQdWJsaWNLZXlJbmZvKSAhPSBub0VycikKKyAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOworCisgICAgQVNTRVJUKGNoYWxsZW5nZS5sZW5ndGgoKSk7CisKKyAgICBzaWduZWRQdWJs
aWNLZXlBbmRDaGFsbGVuZ2UucHVibGljS2V5QW5kQ2hhbGxlbmdlLmNoYWxsZW5nZS5MZW5ndGgg
PSBjaGFsbGVuZ2UubGVuZ3RoKCk7CisgICAgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlLnB1
YmxpY0tleUFuZENoYWxsZW5nZS5jaGFsbGVuZ2UuRGF0YSA9ICh1aW50OF90KiljaGFsbGVuZ2Uu
ZGF0YSgpOworCisgICAgQ1NTTV9EQVRBIGVuY29kZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2UgPSB7
MCwgTlVMTH07CisgICAgaWYgKFNlY0FzbjFFbmNvZGVJdGVtKGNvZGVyLCAmc2lnbmVkUHVibGlj
S2V5QW5kQ2hhbGxlbmdlLnB1YmxpY0tleUFuZENoYWxsZW5nZSwgcHVibGljS2V5QW5kQ2hhbGxl
bmdlVGVtcGxhdGUsICZlbmNvZGVkUHVibGljS2V5QW5kQ2hhbGxlbmdlKSAhPSBub0VycikKKyAg
ICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgQ1NTTV9EQVRBIHNpZ25hdHVyZSB7IH07Cisg
ICAgaWYgKCFzaWduUHVibGljS2V5QW5kQ2hhbGxlbmdlKGNzcEhhbmRsZSwgJmVuY29kZWRQdWJs
aWNLZXlBbmRDaGFsbGVuZ2UsIHByaXZhdGVLZXkuZ2V0KCksIENTU01fQUxHSURfTUQ1V2l0aFJT
QSwgc2lnbmF0dXJlKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIGF1dG8gZnJlZVNp
Z25hdHVyZURhdGEgPSBtYWtlU2NvcGVFeGl0KFsmXSB7CisgICAgICAgIENTU01fQVBJX01FTU9S
WV9GVU5DUyBtZW1vcnlGdW5jdGlvbnM7CisgICAgICAgIGlmIChDU1NNX0dldEFQSU1lbW9yeUZ1
bmN0aW9ucyhjc3BIYW5kbGUsICZtZW1vcnlGdW5jdGlvbnMpICE9IG5vRXJyKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIG1lbW9yeUZ1bmN0aW9ucy5mcmVlX2Z1bmMoc2lnbmF0dXJl
LkRhdGEsIG1lbW9yeUZ1bmN0aW9ucy5BbGxvY1JlZik7CisgICAgfSk7CisKKyAgICBzdGF0aWMg
Y29uc3QgdWludDggZW5jb2RlTnVsbFsyXSA9IHsgU0VDX0FTTjFfTlVMTCwgMCB9OworICAgIHNp
Z25lZFB1YmxpY0tleUFuZENoYWxsZW5nZS5hbGdvcml0aG1JZGVudGlmaWVyLmFsZ29yaXRobSA9
IENTU01PSURfTUQ1V2l0aFJTQTsKKyAgICBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2UuYWxn
b3JpdGhtSWRlbnRpZmllci5wYXJhbWV0ZXJzLkRhdGEgPSAodWludDggKillbmNvZGVOdWxsOwor
ICAgIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZS5hbGdvcml0aG1JZGVudGlmaWVyLnBhcmFt
ZXRlcnMuTGVuZ3RoID0gMjsKKyAgICBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2Uuc2lnbmF0
dXJlID0gc2lnbmF0dXJlOworICAgIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZS5zaWduYXR1
cmUuTGVuZ3RoICo9IDg7CisKKyAgICBDU1NNX0RBVEEgZW5jb2RlZFNpZ25lZFB1YmxpY0tleUFu
ZENoYWxsZW5nZSA9IHswLCBudWxscHRyIH07CisgICAgaWYgKFNlY0FzbjFFbmNvZGVJdGVtKGNv
ZGVyLCAmc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlLCBzaWduZWRQdWJsaWNLZXlBbmRDaGFs
bGVuZ2VUZW1wbGF0ZSwgJmVuY29kZWRTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2UpICE9IG5v
RXJyKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICByZXR1cm4gYmFzZTY0RW5jb2Rl
KGVuY29kZWRTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2UuRGF0YSwgZW5jb2RlZFNpZ25lZFB1
YmxpY0tleUFuZENoYWxsZW5nZS5MZW5ndGgpOworfQorCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0
aWMgcG9wCisKIHZvaWQgZ2V0U3VwcG9ydGVkS2V5U2l6ZXMoVmVjdG9yPFN0cmluZz4mIHN1cHBv
cnRlZEtleVNpemVzKQogewogICAgIEFTU0VSVChzdXBwb3J0ZWRLZXlTaXplcy5pc0VtcHR5KCkp
OwpAQCAtNjAsNyArMjM5LDkgQEAgU3RyaW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0
cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2gKICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwogICAgIH0KIAotICAgIHJldHVybiBhZG9wdENGKHdrU2lnbmVkUHVibGlj
S2V5QW5kQ2hhbGxlbmdlU3RyaW5nKGtleVNpemUsIGNoYWxsZW5nZVN0cmluZy5jcmVhdGVDRlN0
cmluZygpLmdldCgpLCBrZXlnZW5LZXljaGFpbkl0ZW1OYW1lKHVybC5ob3N0KCkpLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCkpKS5nZXQoKTsKKyAgICBhdXRvIGNoYWxsZW5nZSA9IGNoYWxsZW5nZVN0
cmluZy5jb250YWluc09ubHlBU0NJSSgpID8gY2hhbGxlbmdlU3RyaW5nLmFzY2lpKCkgOiAiIjsK
KworICAgIHJldHVybiBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcoa2V5U2l6ZSwg
Y2hhbGxlbmdlLCBrZXlnZW5LZXljaGFpbkl0ZW1OYW1lKHVybC5ob3N0KCkpKTsKIH0KIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286316</attachid>
            <date>2016-08-17 12:26:46 -0700</date>
            <delta_ts>2016-08-17 12:40:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160945-20160817122458.patch</filename>
            <type>text/plain</type>
            <size>12746</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0NTM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDk1NDBiMTgzMmE0NDY5YzJlM2Q1YWQ4
NTAyMjVlYjY2OTRiNjg2M2UuLmViMGFiMTBkOTg2ZmM1MWIxOTc5ZmZhNTM1ZmZjODI5NDI2YTE2
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTYtMDgtMTcgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFdLU2lnbmVkUHVibGljS2V5QW5kQ2hh
bGxlbmdlU3RyaW5nIGludG8gV2ViQ29yZSBhbmQgbWFrZSBpdCBwcm9wZXIgQysrCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA5NDUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9SZXRhaW5QdHIu
aDoKKyAgICAgICAgKFdURjo6UmV0YWluUHRyOjpvcGVyYXRvciYpOgorICAgICAgICBDYXN0IHRo
aXMgdG8gdGhlIHJpZ2h0IHR5cGUuCisKKyAgICAgICAgKiB3dGYvc3BpL2NvY29hL1NlY3VyaXR5
U1BJLmg6CisgICAgICAgIEFkZCBuZXcgU1BJLgorCiAyMDE2LTA4LTE2ICBBbmRlcnMgQ2FybHNz
b24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGEgdGhpbmtvLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDg3NjQ5ZjkwMGM1NzYzMjBhZjBlOTYwNGEyNTE1YzI4ZWYwYWJlYzQuLmUyMWI0MDc1
OWNlN2Q4Y2VmMmNmMmZhOWFiMTI5YzY0MzkyMTM1YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAxNi0wOC0xNyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgor
CisgICAgICAgIE1vdmUgV0tTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcgaW50byBX
ZWJDb3JlIGFuZCBtYWtlIGl0IHByb3BlciBDKysKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDk0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OmdldFN1YmplY3RQdWJsaWNLZXkpOgorICAgICAgICAoV2Vi
Q29yZTo6c2lnblB1YmxpY0tleUFuZENoYWxsZW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpzaWdu
ZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcpOgorCiAyMDE2LTA4LTE2ICBBbmRlcnMgQ2Fy
bHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGJ1aWxkLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvUmV0YWluUHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9SZXRhaW5Q
dHIuaAppbmRleCA0MmE4MTk2YzkxZDc3Nzg1ZDcxMmJhZjg5ZGZmMGZmZTE3ODQ2MjJlLi4zYjNm
OGQ5YmNiMDZlODEzMmU5NThhMmQ5NWM5OGE4M2RlNTc1NDM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9SZXRhaW5QdHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZXRhaW5QdHIuaApAQCAt
OTYsNyArOTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIFJlcXVpcmUgdGhhdCB0aGUgcG9pbnRl
ciBpcyBudWxsLCB0byBwcmV2ZW50IGxlYWtzLgogICAgICAgICBBU1NFUlQoIW1fcHRyKTsKIAot
ICAgICAgICByZXR1cm4gJm1fcHRyOworICAgICAgICByZXR1cm4gKFB0clR5cGUqKSZtX3B0cjsK
ICAgICB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvc3BpL2NvY29hL1Nl
Y3VyaXR5U1BJLmggYi9Tb3VyY2UvV1RGL3d0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEkuaAppbmRl
eCBjYjliMjQ5YzgzODZkNDkwYjVjNTNlN2U0NGY1MzUzMmQ2ZjE5MjNmLi4xNmYxZjA4NjVmODU5
YTMxYzk0MGE4MzZjMzgzZjA2OTEzMzBlYjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9z
cGkvY29jb2EvU2VjdXJpdHlTUEkuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9zcGkvY29jb2EvU2Vj
dXJpdHlTUEkuaApAQCAtMjMsMTQgKzIzLDE0IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBTZWN1cml0eVNQSV9oCi0jZGVmaW5lIFNlY3VyaXR5
U1BJX2gKKyNwcmFnbWEgb25jZQogCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAogI2lu
Y2x1ZGUgPFNlY3VyaXR5L1NlY0NlcnRpZmljYXRlUHJpdi5oPgogI2luY2x1ZGUgPFNlY3VyaXR5
L1NlY1Rhc2suaD4KICNpbmNsdWRlIDxTZWN1cml0eS9TZWNUcnVzdFByaXYuaD4KKyNpbmNsdWRl
IDxTZWN1cml0eS9rZXlUZW1wbGF0ZXMuaD4KIAogI2Vsc2UKIApAQCAtNTMsNiArNTMsOCBAQCBF
WFRFUk5fQyBTZWNTaWduYXR1cmVIYXNoQWxnb3JpdGhtIFNlY0NlcnRpZmljYXRlR2V0U2lnbmF0
dXJlSGFzaEFsZ29yaXRobShTZWNDZQogCiAjZW5kaWYKIAorI2luY2x1ZGUgPFNlY3VyaXR5L1Nl
Y0FzbjFUeXBlcy5oPgorCiB0eXBlZGVmIHN0cnVjdCBfX1NlY1Rhc2sgKlNlY1Rhc2tSZWY7CiBF
WFRFUk5fQyBTZWNUYXNrUmVmIFNlY1Rhc2tDcmVhdGVXaXRoQXVkaXRUb2tlbihDRkFsbG9jYXRv
clJlZiwgYXVkaXRfdG9rZW5fdCk7CiBFWFRFUk5fQyBTZWNUYXNrUmVmIFNlY1Rhc2tDcmVhdGVG
cm9tU2VsZihDRkFsbG9jYXRvclJlZik7CkBAIC02Miw5ICs2NCwxMiBAQCBFWFRFUk5fQyBDRlR5
cGVSZWYgU2VjVGFza0NvcHlWYWx1ZUZvckVudGl0bGVtZW50KFNlY1Rhc2tSZWYsIENGU3RyaW5n
UmVmIGVudGl0bAogRVhURVJOX0MgQ0ZTdHJpbmdSZWYgU2VjVGFza0NvcHlTaWduaW5nSWRlbnRp
ZmllcihTZWNUYXNrUmVmLCBDRkVycm9yUmVmICopOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShN
QUMpCitleHRlcm4gY29uc3QgU2VjQXNuMVRlbXBsYXRlIGtTZWNBc24xQWxnb3JpdGhtSURUZW1w
bGF0ZVtdOworZXh0ZXJuIGNvbnN0IFNlY0FzbjFUZW1wbGF0ZSBrU2VjQXNuMVN1YmplY3RQdWJs
aWNLZXlJbmZvVGVtcGxhdGVbXTsKKyNlbmRpZgorCiAjaWYgSEFWRShTRUNfVFJVU1RfU0VSSUFM
SVpBVElPTikKIEVYVEVSTl9DIENGX1JFVFVSTlNfUkVUQUlORUQgQ0ZEYXRhUmVmIFNlY1RydXN0
U2VyaWFsaXplKFNlY1RydXN0UmVmLCBDRkVycm9yUmVmICopOwogRVhURVJOX0MgQ0ZfUkVUVVJO
U19SRVRBSU5FRCBTZWNUcnVzdFJlZiBTZWNUcnVzdERlc2VyaWFsaXplKENGRGF0YVJlZiBzZXJp
YWxpemVkVHJ1c3QsIENGRXJyb3JSZWYgKik7CiAjZW5kaWYKLQotI2VuZGlmIC8vIFNlY3VyaXR5
U1BJX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TU0xLZXlHZW5l
cmF0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9y
TWFjLm1tCmluZGV4IGRlOGIxYjQ1ZGVkODJhOGFkYWM4MGQxNmJhNzQ3ZTIxYmZmOWZmMGYuLmQ5
MzJkNDFkZWJkYWFkNzM5NWY4MzNhMmZhODk0Y2ZmYTIwNDkwMTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5tbQpAQCAtMjMsMTYgKzIz
LDE5NSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTU0xLZXlHZW5lcmF0b3IuaCIKKyNpbXBvcnQgImNv
bmZpZy5oIgorI2ltcG9ydCAiU1NMS2V5R2VuZXJhdG9yLmgiCiAKLSNpbmNsdWRlICJVUkwuaCIK
LSNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCi0jaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUlu
dGVyZmFjZS5oIgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgIkxvY2FsaXpl
ZFN0cmluZ3MuaCIKKyNpbXBvcnQgIlVSTC5oIgorI2ltcG9ydCA8U2VjdXJpdHkvU2VjQXNuMUNv
ZGVyLmg+CisjaW1wb3J0IDxTZWN1cml0eS9TZWNBc24xVGVtcGxhdGVzLmg+CisjaW1wb3J0IDxT
ZWN1cml0eS9TZWNFbmNvZGVUcmFuc2Zvcm0uaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
KyNpbXBvcnQgPHd0Zi9TY29wZS5oPgorI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQ
SS5oPgorI2ltcG9ydCA8d3RmL3RleHQvQmFzZTY0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3Rp
YyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgorCitzdHJ1Y3QgUHVibGljS2V5
QW5kQ2hhbGxlbmdlIHsKKyAgICBDU1NNX1g1MDlfU1VCSkVDVF9QVUJMSUNfS0VZX0lORk8gc3Vi
amVjdFB1YmxpY0tleUluZm87CisgICAgQ1NTTV9EQVRBIGNoYWxsZW5nZTsKK307CisKK3N0cnVj
dCBTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2UgeworICAgIFB1YmxpY0tleUFuZENoYWxsZW5n
ZSBwdWJsaWNLZXlBbmRDaGFsbGVuZ2U7CisgICAgQ1NTTV9YNTA5X0FMR09SSVRITV9JREVOVElG
SUVSIGFsZ29yaXRobUlkZW50aWZpZXI7CisgICAgQ1NTTV9EQVRBIHNpZ25hdHVyZTsKK307CisK
K3N0YXRpYyBjb25zdCBTZWNBc24xVGVtcGxhdGUgcHVibGljS2V5QW5kQ2hhbGxlbmdlVGVtcGxh
dGVbXSB7CisgICAgeyBTRUNfQVNOMV9TRVFVRU5DRSwgMCwgbnVsbHB0ciwgc2l6ZW9mKFB1Ymxp
Y0tleUFuZENoYWxsZW5nZSkgfSwKKyAgICB7IFNFQ19BU04xX0lOTElORSwgb2Zmc2V0b2YoUHVi
bGljS2V5QW5kQ2hhbGxlbmdlLCBzdWJqZWN0UHVibGljS2V5SW5mbyksIGtTZWNBc24xU3ViamVj
dFB1YmxpY0tleUluZm9UZW1wbGF0ZSwgMH0sCisgICAgeyBTRUNfQVNOMV9JTkxJTkUsIG9mZnNl
dG9mKFB1YmxpY0tleUFuZENoYWxsZW5nZSwgY2hhbGxlbmdlKSwga1NlY0FzbjFJQTVTdHJpbmdU
ZW1wbGF0ZSwgMCB9LAorICAgIHsgMCwgMCwgMCwgMH0KK307CisKK3N0YXRpYyBjb25zdCBTZWNB
c24xVGVtcGxhdGUgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlVGVtcGxhdGVbXSB7CisgICAg
eyBTRUNfQVNOMV9TRVFVRU5DRSwgMCwgbnVsbHB0ciwgc2l6ZW9mKFNpZ25lZFB1YmxpY0tleUFu
ZENoYWxsZW5nZSkgfSwKKyAgICB7IFNFQ19BU04xX0lOTElORSwgb2Zmc2V0b2YoU2lnbmVkUHVi
bGljS2V5QW5kQ2hhbGxlbmdlLCBwdWJsaWNLZXlBbmRDaGFsbGVuZ2UpLCBwdWJsaWNLZXlBbmRD
aGFsbGVuZ2VUZW1wbGF0ZSwgMCB9LAorICAgIHsgU0VDX0FTTjFfSU5MSU5FLCBvZmZzZXRvZihT
aWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2UsIGFsZ29yaXRobUlkZW50aWZpZXIpLCBrU2VjQXNu
MUFsZ29yaXRobUlEVGVtcGxhdGUsIDAgfSwKKyAgICB7IFNFQ19BU04xX0JJVF9TVFJJTkcsIG9m
ZnNldG9mKFNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZSwgc2lnbmF0dXJlKSwgMCwgMCB9LAor
ICAgIHsgMCwgMCwgMCwgMCB9Cit9OworCitzdGF0aWMgYm9vbCBnZXRTdWJqZWN0UHVibGljS2V5
KENTU01fQ1NQX0hBTkRMRSBjc3BIYW5kbGUsIFNlY0tleVJlZiBwdWJsaWNLZXksIENTU01fS0VZ
X1BUUiBzdWJqZWN0UHVibGljS2V5KQoreworICAgIGNvbnN0IENTU01fS0VZICpjc3NtUHVibGlj
S2V5OworICAgIGlmIChTZWNLZXlHZXRDU1NNS2V5KHB1YmxpY0tleSwgJmNzc21QdWJsaWNLZXkp
ICE9IG5vRXJyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBjb25zdCBDU1NNX0FDQ0VT
U19DUkVERU5USUFMUyBjcmVkZW50aWFscyB7IH07CisgICAgQ1NTTV9DQ19IQU5ETEUgY2NIYW5k
bGU7CisgICAgaWYgKENTU01fQ1NQX0NyZWF0ZVN5bW1ldHJpY0NvbnRleHQoY3NwSGFuZGxlLCBD
U1NNX0FMR0lEX05PTkUsIENTU01fQUxHTU9ERV9OT05FLCAmY3JlZGVudGlhbHMsIG51bGxwdHIs
IG51bGxwdHIsIENTU01fUEFERElOR19OT05FLCAwLCAmY2NIYW5kbGUpICE9IG5vRXJyKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGRlbGV0ZUNvbnRleHQgPSBtYWtlU2NvcGVF
eGl0KFsmXSB7CisgICAgICAgIENTU01fRGVsZXRlQ29udGV4dChjY0hhbmRsZSk7CisgICAgfSk7
CisKKyAgICBDU1NNX0NPTlRFWFRfQVRUUklCVVRFIHB1YmxpY0tleUZvcm1hdEF0dHJpYnV0ZTsK
KyAgICBwdWJsaWNLZXlGb3JtYXRBdHRyaWJ1dGUuQXR0cmlidXRlVHlwZSA9IENTU01fQVRUUklC
VVRFX1BVQkxJQ19LRVlfRk9STUFUOworICAgIHB1YmxpY0tleUZvcm1hdEF0dHJpYnV0ZS5BdHRy
aWJ1dGVMZW5ndGggPSBzaXplb2YodWludDMyKTsKKyAgICBwdWJsaWNLZXlGb3JtYXRBdHRyaWJ1
dGUuQXR0cmlidXRlLkRhdGEgPSAoQ1NTTV9EQVRBX1BUUilDU1NNX0tFWUJMT0JfUkFXX0ZPUk1B
VF9YNTA5OworCisgICAgaWYgKENTU01fVXBkYXRlQ29udGV4dEF0dHJpYnV0ZXMoY2NIYW5kbGUs
IDEsICZwdWJsaWNLZXlGb3JtYXRBdHRyaWJ1dGUpICE9IG5vRXJyKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBpZiAoQ1NTTV9XcmFwS2V5KGNjSGFuZGxlLCAmY3JlZGVudGlhbHMsIGNz
c21QdWJsaWNLZXksIG51bGxwdHIsIHN1YmplY3RQdWJsaWNLZXkpICE9IG5vRXJyKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgc2ln
blB1YmxpY0tleUFuZENoYWxsZW5nZShDU1NNX0NTUF9IQU5ETEUgY3NwSGFuZGxlLCBjb25zdCBD
U1NNX0RBVEEqIHBsYWluVGV4dCwgU2VjS2V5UmVmIHByaXZhdGVLZXksIENTU01fQUxHT1JJVEhN
UyBhbGdvcml0aG1JRCwgQ1NTTV9EQVRBJiBzaWduYXR1cmUpCit7CisgICAgQVNTRVJUKCFzaWdu
YXR1cmUuRGF0YSk7CisgICAgQVNTRVJUKCFzaWduYXR1cmUuTGVuZ3RoKTsKKworICAgIGNvbnN0
IENTU01fS0VZICpjc3NtUHJpdmF0ZUtleTsKKyAgICBpZiAoU2VjS2V5R2V0Q1NTTUtleShwcml2
YXRlS2V5LCAmY3NzbVByaXZhdGVLZXkpICE9IG5vRXJyKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBjb25zdCBDU1NNX0FDQ0VTU19DUkVERU5USUFMUyAqY3JlZGVudGlhbHM7CisgICAg
aWYgKFNlY0tleUdldENyZWRlbnRpYWxzKHByaXZhdGVLZXksIENTU01fQUNMX0FVVEhPUklaQVRJ
T05fU0lHTiwga1NlY0NyZWRlbnRpYWxUeXBlRGVmYXVsdCwgJmNyZWRlbnRpYWxzKSAhPSBub0Vy
cikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQ1NTTV9DQ19IQU5ETEUgY2NIYW5kbGU7
CisgICAgaWYgKENTU01fQ1NQX0NyZWF0ZVNpZ25hdHVyZUNvbnRleHQoY3NwSGFuZGxlLCBhbGdv
cml0aG1JRCwgY3JlZGVudGlhbHMsIGNzc21Qcml2YXRlS2V5LCAmY2NIYW5kbGUpICE9IG5vRXJy
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYXV0byBkZWxldGVDb250ZXh0ID0gbWFrZVNj
b3BlRXhpdChbJl0geworICAgICAgICBDU1NNX0RlbGV0ZUNvbnRleHQoY2NIYW5kbGUpOworICAg
IH0pOworCisgICAgaWYgKENTU01fU2lnbkRhdGEoY2NIYW5kbGUsIHBsYWluVGV4dCwgMSwgQ1NT
TV9BTEdJRF9OT05FLCAmc2lnbmF0dXJlKSAhPSBub0VycikKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBTdHJpbmcgc2lnbmVkUHVibGljS2V5
QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemUsIGNvbnN0IENTdHJpbmcmIGNoYWxs
ZW5nZSwgY29uc3QgU3RyaW5nJiBrZXlEZXNjcmlwdGlvbikKK3sKKyAgICBTaWduZWRQdWJsaWNL
ZXlBbmRDaGFsbGVuZ2Ugc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlIHsgfTsKKworICAgIFJl
dGFpblB0cjxTZWNBY2Nlc3NSZWY+IGFjY2VzczsKKyAgICBpZiAoU2VjQWNjZXNzQ3JlYXRlKGtl
eURlc2NyaXB0aW9uLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIG51bGxwdHIsICZhY2Nlc3MpICE9
IG5vRXJyKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBSZXRhaW5QdHI8Q0ZBcnJh
eVJlZj4gYWNsczsKKyAgICBpZiAoU2VjQWNjZXNzQ29weVNlbGVjdGVkQUNMTGlzdChhY2Nlc3Mu
Z2V0KCksIENTU01fQUNMX0FVVEhPUklaQVRJT05fREVDUllQVCwgJmFjbHMpICE9IG5vRXJyKQor
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBTZWNBQ0xSZWYgYWNsID0gKFNlY0FDTFJl
ZikoQ0ZBcnJheUdldFZhbHVlQXRJbmRleChhY2xzLmdldCgpLCAwKSk7CisKKyAgICAvLyBGb3Ig
c2VjdXJpdHkgcHVycG9zZXMsIHByaXZhdGUga2V5cyBpbXBvcnRlZCBieSBXZWJLaXQgc2hvdWxk
IG5vdCBiZSBhY2Nlc3NpYmxlIGJ5IAorICAgIC8vIGFsbCBhcHBsaWNhdGlvbnMuICg0MTI2OTc2
KSBQYXNzaW5nIG51bGxwdHIgdG8gU2VjVHJ1c3RlZEFwcGxpY2F0aW9uQ3JlYXRlRnJvbVBhdGgg
dGVsbHMKKyAgICAvLyB0aGF0IGZ1bmN0aW9uIHRvIGFzc3VtZSB0aGUgYXBwbGljYXRpb24gYnVu
ZGxlLiBPdXIgYWNjZXNzIHRvIHRoZSBuZXdseS1jcmVhdGVkIHByaXZhdGUKKyAgICAvLyBrZXkg
aXMgbmVjZXNzYXJ5IHRvIHNpZ24gY2hhbGxhbmdlIHJlc3BvbnNlcy4KKyAgICBSZXRhaW5QdHI8
U2VjVHJ1c3RlZEFwcGxpY2F0aW9uUmVmPiB0cnVzdGVkQXBwOworICAgIGlmIChTZWNUcnVzdGVk
QXBwbGljYXRpb25DcmVhdGVGcm9tUGF0aChudWxscHRyLCAmdHJ1c3RlZEFwcCkgIT0gbm9FcnIp
CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIGNvbnN0IENTU01fQUNMX0tFWUNIQUlO
X1BST01QVF9TRUxFQ1RPUiBkZWZhdWx0U2VsZWN0b3IgPSB7CisgICAgICAgIENTU01fQUNMX0tF
WUNIQUlOX1BST01QVF9DVVJSRU5UX1ZFUlNJT04sIDAKKyAgICB9OworICAgIGlmIChTZWNBQ0xT
ZXRTaW1wbGVDb250ZW50cyhhY2wsIChfX2JyaWRnZSBDRkFycmF5UmVmKUBbIChfX2JyaWRnZSBp
ZCl0cnVzdGVkQXBwLmdldCgpIF0sIGtleURlc2NyaXB0aW9uLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCksICZkZWZhdWx0U2VsZWN0b3IpICE9IG5vRXJyKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CisKKyAgICBSZXRhaW5QdHI8U2VjS2V5UmVmPiBwdWJsaWNLZXk7CisgICAgUmV0YWluUHRyPFNl
Y0tleVJlZj4gcHJpdmF0ZUtleTsKKyAgICBpZiAoU2VjS2V5Q3JlYXRlUGFpcihudWxscHRyLCBD
U1NNX0FMR0lEX1JTQSwga2V5U2l6ZSwgMCwgQ1NTTV9LRVlVU0VfQU5ZLCBDU1NNX0tFWUFUVFJf
UEVSTUFORU5UIHwgQ1NTTV9LRVlBVFRSX0VYVFJBQ1RBQkxFIHwgQ1NTTV9LRVlBVFRSX1JFVFVS
Tl9SRUYsIENTU01fS0VZVVNFX0FOWSwgQ1NTTV9LRVlBVFRSX1NFTlNJVElWRSB8IENTU01fS0VZ
QVRUUl9SRVRVUk5fUkVGIHwgQ1NTTV9LRVlBVFRSX1BFUk1BTkVOVCB8IENTU01fS0VZQVRUUl9F
WFRSQUNUQUJMRSwgYWNjZXNzLmdldCgpLCAmcHVibGljS2V5LCAmcHJpdmF0ZUtleSkgIT0gbm9F
cnIpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIENTU01fQ1NQX0hBTkRMRSBjc3BI
YW5kbGU7CisgICAgaWYgKFNlY0tleUdldENTUEhhbmRsZShwcml2YXRlS2V5LmdldCgpLCAmY3Nw
SGFuZGxlKSAhPSBub0VycikKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIAorICAgIENT
U01fS0VZIHN1YmplY3RQdWJsaWNLZXkgeyB9OworICAgIGlmICghZ2V0U3ViamVjdFB1YmxpY0tl
eShjc3BIYW5kbGUsIHB1YmxpY0tleS5nZXQoKSwgJnN1YmplY3RQdWJsaWNLZXkpKQorICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CisgICAgYXV0byBmcmVlU3ViamVjdFB1YmxpY0tleSA9IG1ha2VT
Y29wZUV4aXQoWyZdIHsKKyAgICAgICAgQ1NTTV9GcmVlS2V5KGNzcEhhbmRsZSwgbnVsbHB0ciwg
JnN1YmplY3RQdWJsaWNLZXksIENTU01fRkFMU0UpOworICAgIH0pOworCisgICAgU2VjQXNuMUNv
ZGVyUmVmIGNvZGVyID0gbnVsbHB0cjsKKyAgICBpZiAoU2VjQXNuMUNvZGVyQ3JlYXRlKCZjb2Rl
cikgIT0gbm9FcnIpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICBhdXRvIHJlbGVhc2VD
b2RlciA9IG1ha2VTY29wZUV4aXQoWyZdIHsKKyAgICAgICAgU2VjQXNuMUNvZGVyUmVsZWFzZShj
b2Rlcik7CisgICAgfSk7CisKKyAgICBpZiAoU2VjQXNuMURlY29kZURhdGEoY29kZXIsICZzdWJq
ZWN0UHVibGljS2V5LktleURhdGEsIGtTZWNBc24xU3ViamVjdFB1YmxpY0tleUluZm9UZW1wbGF0
ZSwgJnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZS5wdWJsaWNLZXlBbmRDaGFsbGVuZ2Uuc3Vi
amVjdFB1YmxpY0tleUluZm8pICE9IG5vRXJyKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisK
KyAgICBBU1NFUlQoY2hhbGxlbmdlLmxlbmd0aCgpKTsKKworICAgIHNpZ25lZFB1YmxpY0tleUFu
ZENoYWxsZW5nZS5wdWJsaWNLZXlBbmRDaGFsbGVuZ2UuY2hhbGxlbmdlLkxlbmd0aCA9IGNoYWxs
ZW5nZS5sZW5ndGgoKTsKKyAgICBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2UucHVibGljS2V5
QW5kQ2hhbGxlbmdlLmNoYWxsZW5nZS5EYXRhID0gKHVpbnQ4X3QqKWNoYWxsZW5nZS5kYXRhKCk7
CisKKyAgICBDU1NNX0RBVEEgZW5jb2RlZFB1YmxpY0tleUFuZENoYWxsZW5nZSB7IDAsIG51bGxw
dHIgfTsKKyAgICBpZiAoU2VjQXNuMUVuY29kZUl0ZW0oY29kZXIsICZzaWduZWRQdWJsaWNLZXlB
bmRDaGFsbGVuZ2UucHVibGljS2V5QW5kQ2hhbGxlbmdlLCBwdWJsaWNLZXlBbmRDaGFsbGVuZ2VU
ZW1wbGF0ZSwgJmVuY29kZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2UpICE9IG5vRXJyKQorICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBDU1NNX0RBVEEgc2lnbmF0dXJlIHsgfTsKKyAgICBp
ZiAoIXNpZ25QdWJsaWNLZXlBbmRDaGFsbGVuZ2UoY3NwSGFuZGxlLCAmZW5jb2RlZFB1YmxpY0tl
eUFuZENoYWxsZW5nZSwgcHJpdmF0ZUtleS5nZXQoKSwgQ1NTTV9BTEdJRF9NRDVXaXRoUlNBLCBz
aWduYXR1cmUpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgYXV0byBmcmVlU2lnbmF0
dXJlRGF0YSA9IG1ha2VTY29wZUV4aXQoWyZdIHsKKyAgICAgICAgQ1NTTV9BUElfTUVNT1JZX0ZV
TkNTIG1lbW9yeUZ1bmN0aW9uczsKKyAgICAgICAgaWYgKENTU01fR2V0QVBJTWVtb3J5RnVuY3Rp
b25zKGNzcEhhbmRsZSwgJm1lbW9yeUZ1bmN0aW9ucykgIT0gbm9FcnIpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgbWVtb3J5RnVuY3Rpb25zLmZyZWVfZnVuYyhzaWduYXR1cmUuRGF0
YSwgbWVtb3J5RnVuY3Rpb25zLkFsbG9jUmVmKTsKKyAgICB9KTsKKworICAgIHVpbnQ4IGVuY29k
ZU51bGxbMl0geyBTRUNfQVNOMV9OVUxMLCAwIH07CisgICAgc2lnbmVkUHVibGljS2V5QW5kQ2hh
bGxlbmdlLmFsZ29yaXRobUlkZW50aWZpZXIuYWxnb3JpdGhtID0gQ1NTTU9JRF9NRDVXaXRoUlNB
OworICAgIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZS5hbGdvcml0aG1JZGVudGlmaWVyLnBh
cmFtZXRlcnMuRGF0YSA9ICh1aW50OCAqKWVuY29kZU51bGw7CisgICAgc2lnbmVkUHVibGljS2V5
QW5kQ2hhbGxlbmdlLmFsZ29yaXRobUlkZW50aWZpZXIucGFyYW1ldGVycy5MZW5ndGggPSAyOwor
ICAgIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZS5zaWduYXR1cmUgPSBzaWduYXR1cmU7Cisg
ICAgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlLnNpZ25hdHVyZS5MZW5ndGggKj0gODsKKwor
ICAgIENTU01fREFUQSBlbmNvZGVkU2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlIHswLCBudWxs
cHRyIH07CisgICAgaWYgKFNlY0FzbjFFbmNvZGVJdGVtKGNvZGVyLCAmc2lnbmVkUHVibGljS2V5
QW5kQ2hhbGxlbmdlLCBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VUZW1wbGF0ZSwgJmVuY29k
ZWRTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2UpICE9IG5vRXJyKQorICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CisKKyAgICByZXR1cm4gYmFzZTY0RW5jb2RlKGVuY29kZWRTaWduZWRQdWJsaWNL
ZXlBbmRDaGFsbGVuZ2UuRGF0YSwgZW5jb2RlZFNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZS5M
ZW5ndGgpOworfQorCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisKIHZvaWQgZ2V0U3Vw
cG9ydGVkS2V5U2l6ZXMoVmVjdG9yPFN0cmluZz4mIHN1cHBvcnRlZEtleVNpemVzKQogewogICAg
IEFTU0VSVChzdXBwb3J0ZWRLZXlTaXplcy5pc0VtcHR5KCkpOwpAQCAtNjAsNyArMjM5LDkgQEAg
U3RyaW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXpl
SW5kZXgsIGNvbnN0IFN0cmluZyYgY2gKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIH0K
IAotICAgIHJldHVybiBhZG9wdENGKHdrU2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5n
KGtleVNpemUsIGNoYWxsZW5nZVN0cmluZy5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrZXlnZW5L
ZXljaGFpbkl0ZW1OYW1lKHVybC5ob3N0KCkpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKS5nZXQo
KTsKKyAgICBhdXRvIGNoYWxsZW5nZSA9IGNoYWxsZW5nZVN0cmluZy5jb250YWluc09ubHlBU0NJ
SSgpID8gY2hhbGxlbmdlU3RyaW5nLmFzY2lpKCkgOiAiIjsKKworICAgIHJldHVybiBzaWduZWRQ
dWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcoa2V5U2l6ZSwgY2hhbGxlbmdlLCBrZXlnZW5LZXlj
aGFpbkl0ZW1OYW1lKHVybC5ob3N0KCkpKTsKIH0KIAogfQo=
</data>
<flag name="review"
          id="309869"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>