<?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>204010</bug_id>
          
          <creation_ts>2019-11-08 10:01:53 -0800</creation_ts>
          <short_desc>[Web Animations] Use a keyframe effect stack to resolve animations on an element</short_desc>
          <delta_ts>2019-11-08 12:42:15 -0800</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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=204009</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antoine Quint">graouts</reporter>
          <assigned_to name="Antoine Quint">graouts</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kangil.han</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1588693</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2019-11-08 10:01:53 -0800</bug_when>
    <thetext>[Web Animations] Use a keyframe effect stack to resolve animations on an element</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588705</commentid>
    <comment_count>1</comment_count>
      <attachid>383140</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2019-11-08 10:19:06 -0800</bug_when>
    <thetext>Created attachment 383140
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588713</commentid>
    <comment_count>2</comment_count>
      <attachid>383140</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2019-11-08 10:24:33 -0800</bug_when>
    <thetext>Comment on attachment 383140
Patch

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

&gt; Source/WebCore/animation/KeyframeEffect.cpp:1009
&gt; +    bool animationChanged = animation != this-&gt;animation();
&gt; +    AnimationEffect::setAnimation(animation);
&gt; +    if (m_target &amp;&amp; animationChanged) {

Would it read better as this?
{
   AnimationEffect::setAnimation(animation);
   if (m_target &amp;&amp; animation != this-&gt;animation()) {...

I&apos;m not sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588755</commentid>
    <comment_count>3</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2019-11-08 12:32:49 -0800</bug_when>
    <thetext>(In reply to Dean Jackson from comment #2)
&gt; Comment on attachment 383140 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=383140&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/animation/KeyframeEffect.cpp:1009
&gt; &gt; +    bool animationChanged = animation != this-&gt;animation();
&gt; &gt; +    AnimationEffect::setAnimation(animation);
&gt; &gt; +    if (m_target &amp;&amp; animationChanged) {
&gt; 
&gt; Would it read better as this?
&gt; {
&gt;    AnimationEffect::setAnimation(animation);
&gt;    if (m_target &amp;&amp; animation != this-&gt;animation()) {...
&gt; 
&gt; I&apos;m not sure.

Once AnimationEffect::setAnimation(animation) is called, `animation` and `this-&gt;animation()` are guaranteed to return the same thing. That&apos;s why it&apos;s required to determine whether the value changed before calling the superclass&apos;s implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588759</commentid>
    <comment_count>4</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2019-11-08 12:41:07 -0800</bug_when>
    <thetext>Committed r252253: &lt;https://trac.webkit.org/changeset/252253&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588761</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-11-08 12:42:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/57031112&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383140</attachid>
            <date>2019-11-08 10:19:06 -0800</date>
            <delta_ts>2019-11-08 10:24:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204010-20191108191905.patch</filename>
            <type>text/plain</type>
            <size>35497</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyMjMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWJkNDNkYjYxZGIwZjhh
ZGU4ZDYzNDNlZTc0NDU2MWYyYmUyMmVjMi4uMTdkZjk2NmQwMjZmODgzMjM3MjU0YjM3MjE1ZjUw
N2RlODI5OTBiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDE5LTExLTA4ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYiBBbmltYXRpb25z
XSBVc2UgYSBrZXlmcmFtZSBlZmZlY3Qgc3RhY2sgdG8gcmVzb2x2ZSBhbmltYXRpb25zIG9uIGFu
IGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwNDAxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVudGlsIG5vdywgd2hlbiByZXNvbHZpbmcgYW5pbWF0aW9ucyBmb3IgYW4gZWxlbWVudCwgd2Ug
d291bGQgY2FsbCBhbmltYXRpb25zRm9yRWxlbWVudCgpIGR1cmluZyBlYWNoIHJlc29sdXRpb24g
d2hpY2gKKyAgICAgICAgbWVhbnMgZG9pbmcgc2V2ZXJhbCBoYXNoIHRhYmxlIGxvb2t1cHMgdG8g
bG9jYXRlIHRoZSB2YXJpb3VzIGNsYXNzZXMgb2YgYW5pbWF0aW9ucyBmb3IgdGhhdCBnaXZlbiBl
bGVtZW50LCBzb3J0aW5nIGVhY2gKKyAgICAgICAgb2YgdGhvc2UgYW5pbWF0aW9ucyBhbmQgaW5z
ZXJ0aW5nIHRoZW0gaW50byBhIG5ldyBWZWN0b3IuCisKKyAgICAgICAgV2Ugbm93IHVzZSBhIEtl
eWZyYW1lRWZmZWN0U3RhY2sgd2hpY2gga2VlcHMgYSBsaXN0IG9mIEtleWZyYW1lRWZmZWN0IG9i
amVjdHMgdGhhdCBhcHBseSB0byBhIGdpdmVuIHRhcmdldCwgcHJvdmlkZWQgdGhlCisgICAgICAg
IGVmZmVjdCBhbHNvIGhhcyBhIHZhbGlkIGFuaW1hdGlvbiBhbmQgdGhhdCBhbmltYXRpb24gaGFz
IGEgdmFsaWQgdGltZWxpbmUsIGFsbCBwcmUtY29uZGl0aW9ucyBmb3IgdGhhdCBlZmZlY3QgdG8g
cHJvZHVjZQorICAgICAgICBhbiBhbmltYXRlZCB2YWx1ZS4gQW55IHRpbWUgb25lIG9mIHRob3Nl
IHByZS1jb25kaXRpb25zIGNoYW5nZSwgd2UgdXBkYXRlIHRoZSBtZW1iZXJzaGlwIG9mIHRoYXQg
ZWZmZWN0IGluIHRoZSBzdGFjay4KKyAgICAgICAgVGhlIEtleWZyYW1lRWZmZWN0U3RhY2sgaXMg
YSBuZXcgbWVtYmVyIG9mIEVsZW1lbnRSYXJlRGF0YS4KKworICAgICAgICBOb3csIGVhY2ggdGlt
ZSB3ZSByZXNvbHZlIGFuIGFuaW1hdGlvbiBmb3IgYW4gZWxlbWVudCwgd2UgaXRlcmF0ZSBvdmVy
IHRoZSBLZXlmcmFtZUVmZmVjdCBvYmplY3RzIHJldHVybmVkIGJ5IGNhbGxpbmcKKyAgICAgICAg
c29ydEVmZmVjdHMoKSBvbiB0aGUgS2V5ZnJhbWVFZmZlY3RTdGFjayB3aGljaCB3aWxsIHNvcnQg
dGhlIHN0YWNrJ3MgZWZmZWN0cyBvbmx5IGlmIGEgbmV3IGVmZmVjdCBoYWQgYmVlbiBhZGRlZCBz
aW5jZQorICAgICAgICB0aGUgbGFzdCBpdGVyYXRpb24sIHdoaWNoIG1lYW5zIHRoYXQgc2ltcGxl
IGFuaW1hdGlvbnMgdGhhdCBhcmUgbm90IG11dGF0ZWQgd2lsbCByZXF1aXJlIHNvcnRpbmcgb2Yg
dGhlIHN0YWNrIGp1c3Qgb25jZSwKKyAgICAgICAgYW5kIHRoZSBhZGRpdGlvbiBvZiBzZXZlcmFs
IGFuaW1hdGlvbnMgaW4gYSBzaW5nbGUgYW5pbWF0aW9uIGZyYW1lIHdpbGwgcmVxdWlyZSBzb3J0
aW5nIGp1c3Qgb25jZSBhcyB3ZWxsLgorCisgICAgICAgIEl0IHdhcyBhbHNvIGZvdW5kIHdoaWxl
IGRvaW5nIHRoaXMgd29yayB0aGF0IFN0eWxlOjpUcmVlUmVzb2x2ZXI6OmNyZWF0ZUFuaW1hdGVk
RWxlbWVudFVwZGF0ZSB3b3VsZCBjYWxsIFJlbmRlclN0eWxlOjpjbG9uZVB0cigpCisgICAgICAg
IGZvciBhbnkgZWxlbWVudCB0aGF0IHdhcyBwYXJ0IG9mIGEgZG9jdW1lbnQgY29udGFpbmluZyBh
IHRpbWVsaW5lLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhhdCBlbGVtZW50IGhhZCBhbnkgYW5p
bWF0aW9ucy4gTm93CisgICAgICAgIHdlIGNoZWNrIHdoZXRoZXIgdGhhdCBlbGVtZW50J3MgS2V5
ZnJhbWVFZmZlY3RTdGFjayBjb250YWlucyBhbnkgZWZmZWN0cyBwcmlvciB0byBjbG9uaW5nIHRo
ZSBzdHlsZS4KKworICAgICAgICAqIFNvdXJjZXMudHh0OiBBZGQgdGhlIG5ldyBLZXlmcmFtZUVm
ZmVjdFN0YWNrLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBhbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpBbmltYXRpb25FZmZlY3Q6OnNldEFuaW1hdGlvbik6CisgICAgICAgICogYW5pbWF0aW9uL0Fu
aW1hdGlvblRpbWVsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRpbWVsaW5l
OjpyZW1vdmVBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxpbmU6
OnVwZGF0ZUNTU0FuaW1hdGlvbnNGb3JFbGVtZW50KTogU2luY2Ugd2UgbmVlZCB0byBrbm93IHRo
ZSBvcmRlciBvZiBDU1MgQGtleWZyYW1lcyBydWxlcyBsaXN0ZWQgaW4gYW5pbWF0aW9uLW5hbWUK
KyAgICAgICAgd2hlbiBzb3J0aW5nIGVmZmVjdHMsIHdlIG11c3QgY29tcGlsZSB0aGUgb3JkZXJl
ZCBsaXN0IG9mIHRob3NlIEBrZXlmcmFtZSBydWxlcyBhcyB3ZSB1cGRhdGUgQ1NTIGFuaW1hdGlv
bnMgZm9yIGFuIGVsZW1lbnQgYW5kIHN0b3JlIGl0IG9uIGl0cworICAgICAgICBLZXlmcmFtZUVm
ZmVjdFN0YWNrLgorICAgICAgICAqIGFuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGltZWxpbmU6OnJlc29sdmVBbmltYXRpb25zRm9yRWxl
bWVudCk6IERlbGV0ZWQuIFJlcGxhY2VkIGJ5IEVsZW1lbnQ6OmFwcGx5S2V5ZnJhbWVFZmZlY3Rz
KCkuCisgICAgICAgICogYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuaDoKKyAgICAgICAgKiBh
bmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVF
ZmZlY3Q6OmFuaW1hdGlvblRpbWVsaW5lRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Oktl
eWZyYW1lRWZmZWN0OjpzZXRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVF
ZmZlY3Q6OnNldFRhcmdldCk6CisgICAgICAgICogYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0Lmg6
CisgICAgICAgICogYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0U3RhY2suY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OktleWZyYW1lRWZmZWN0U3RhY2s6OktleWZyYW1lRWZmZWN0U3RhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVFZmZlY3RTdGFjazo6fktleWZyYW1lRWZmZWN0
U3RhY2spOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVFZmZlY3RTdGFjazo6YWRkRWZmZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lRWZmZWN0U3RhY2s6OnJlbW92ZUVmZmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUVmZmVjdFN0YWNrOjpzb3J0ZWRFZmZlY3RzKToK
KyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lRWZmZWN0U3RhY2s6OmVuc3VyZUVmZmVjdHNBcmVT
b3J0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVFZmZlY3RTdGFjazo6c2V0Q1NTQW5p
bWF0aW9uTmFtZXMpOgorICAgICAgICAqIGFuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdFN0YWNrLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVFZmZlY3RTdGFjazo6aGFzRWZmZWN0
cyBjb25zdCk6CisgICAgICAgICogYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXZWJBbmltYXRpb246OnNldFRpbWVsaW5lSW50ZXJuYWwpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViQW5pbWF0aW9uOjpwZXJzaXN0KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjplbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6Omhhc0tleWZyYW1lRWZmZWN0cyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphcHBseUtleWZyYW1lRWZmZWN0cyk6CisgICAg
ICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vRWxlbWVudFJhcmVEYXRhLmNwcDoK
KyAgICAgICAgKiBkb20vRWxlbWVudFJhcmVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50UmFyZURhdGE6OmtleWZyYW1lRWZmZWN0U3RhY2spOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudFJhcmVEYXRhOjpzZXRLZXlmcmFtZUVmZmVjdFN0YWNrKToKKyAgICAgICAgKiBzdHlsZS9T
dHlsZVRyZWVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29s
dmVyOjpjcmVhdGVBbmltYXRlZEVsZW1lbnRVcGRhdGUpOgorCiAyMDE5LTExLTA3ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAgRGVmYXVsdCBO
YW1lcGFjZVVSSSBtdXN0IGJlIGdvdHRlbiBmcm9tIHRoZSB0b3Btb3N0IHBhcmVudCBiZWZvcmUg
dGhlIFNWRyA8Zm9yZWlnbk9iamVjdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggODRlZGU1Y2U4MGY2NDg0
NWEzMGZlZmM4NDFhY2FmZDdkOGJlNGI5OC4uOWM2MzliYzU1YjQ3YjQzMDY5OGMxMGU2OGZmMjg5
ZWQ4NWJhMjVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTQ0OCw2ICs0NDgsNyBAQCBhY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKIGFjY2Vzc2liaWxpdHkvaXNvbGF0
ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlTm9kZS5jcHAKIAogYW5pbWF0aW9uL0FuaW1hdGlvbkVmZmVj
dC5jcHAKK2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdFN0YWNrLmNwcAogYW5pbWF0aW9uL0FuaW1h
dGlvblBsYXliYWNrRXZlbnQuY3BwCiBhbmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUuY3BwCiBh
bmltYXRpb24vQ1NTQW5pbWF0aW9uLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDEzMDMyZWMxMjExNGVkMTA5NzI2Yjk4ZDM0
MzBhOTMwMWRmMmY5OTIuLmM0MDFiNDZjM2ZkYjZjY2U3NzRkODM0OTE3M2M1MjdkZDcxNzg3M2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTIwOTIsNiArMjA5Miw3IEBACiAJCTcxNzI5RjdFMjBGM0JCNDcwMDgwMUNFNiAvKiBK
U0RvY3VtZW50VGltZWxpbmVPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MTcyOUY3QzIwRjNCQUI5MDA4MDFDRTYgLyogSlNEb2N1bWVudFRp
bWVsaW5lT3B0aW9ucy5oICovOyB9OwogCQk3MUExQjYwODFERUU1QUQ3MDA3M0JDRkIgLyogbW9k
ZXJuLW1lZGlhLWNvbnRyb2xzLWxvY2FsaXplZC1zdHJpbmdzLmpzIGluIFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MUExQjYwNjFERUU1QTgyMDA3M0JDRkIg
LyogbW9kZXJuLW1lZGlhLWNvbnRyb2xzLWxvY2FsaXplZC1zdHJpbmdzLmpzICovOyB9OwogCQk3
MUE1N0RGMjE1NEJFMjVDMDAwOUQxMjAgLyogU1ZHUGF0aFV0aWxpdGllcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzFBNTdERjAxNTRCRTI1QzAwMDlE
MTIwIC8qIFNWR1BhdGhVdGlsaXRpZXMuaCAqLzsgfTsKKwkJNzFBNTgxOTYyMzZGNDY3NjAwRDgx
QTI0IC8qIEtleWZyYW1lRWZmZWN0U3RhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDcxQTU4MTkzMjM2RjQ2NjQwMEQ4MUEyNCAvKiBLZXlmcmFtZUVm
ZmVjdFN0YWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNzFCMjg0MjcyMDNDRUM0QzAwMzZBQTVEIC8qIEpTQ1NTQW5pbWF0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MUIyODQyNjIwM0NFQzBE
MDAzNkFBNUQgLyogSlNDU1NBbmltYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3MUI1QUIyNjIxRjFEOUY0MDAzNzZFNUMgLyogUG9pbnRl
ckNhcHR1cmVDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MUI1QUIyNDIxRjFEOUUyMDAzNzZFNUMgLyogUG9pbnRlckNhcHR1cmVDb250
cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNzFCN0VFMEQyMUI1QzY4NzAwMzFDMUVGIC8qIFRvdWNoQWN0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MUFFRTRFQjIxQjVBNDlDMDBEREIw
MzYgLyogVG91Y2hBY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtOTQ3NCw2ICs5NDc1LDggQEAKIAkJNzFBMUI2MDcxREVFNUE4MjAwNzNC
Q0ZCIC8qIGVuICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBuYW1lID0gZW47IHBhdGggPSAiZW4ubHByb2ovbW9k
ZXJuLW1lZGlhLWNvbnRyb2xzLWxvY2FsaXplZC1zdHJpbmdzLmpzIjsgc291cmNlVHJlZSA9IFNP
VVJDRV9ST09UOyB9OwogCQk3MUE1N0RFRjE1NEJFMjVDMDAwOUQxMjAgLyogU1ZHUGF0aFV0aWxp
dGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdQYXRoVXRp
bGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFBNTdERjAxNTRCRTI1
QzAwMDlEMTIwIC8qIFNWR1BhdGhVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU1ZHUGF0aFV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3MUE1ODE5MzIzNkY0NjY0MDBEODFBMjQgLyogS2V5ZnJhbWVFZmZlY3RTdGFjay5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLZXlmcmFtZUVmZmVjdFN0YWNrLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcxQTU4MTk1MjM2RjQ2NjUwMEQ4MUEyNCAvKiBLZXlm
cmFtZUVmZmVjdFN0YWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEtleWZyYW1lRWZmZWN0U3RhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MUFFRTRFQjIxQjVBNDlDMDBEREIwMzYgLyogVG91Y2hBY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVG91Y2hBY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzFCMDQ2MEExREQzQzJFRTAwRUUxOUNGIC8qIHN0YXR1cy1zdXBwb3J0LmpzICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gInN0YXR1cy1zdXBwb3J0LmpzIjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFCMjg0MjQyMDNDRUMwQjAwMzZBQTVEIC8q
IEpTQ1NTQW5pbWF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTQ1NTQW5pbWF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwODU0
LDYgKzIwODU3LDggQEAKIAkJCQk3MTU1NkNBQjFGOUYwOTlDMDBFNzhEMDggLyogS2V5ZnJhbWVF
ZmZlY3QuaWRsICovLAogCQkJCTcxMjQ3RTMyMUZFQTVGN0YwMDhDMDhDRSAvKiBLZXlmcmFtZUVm
ZmVjdE9wdGlvbnMuaCAqLywKIAkJCQk3MTI0N0UzMDFGRUE1RjdFMDA4QzA4Q0UgLyogS2V5ZnJh
bWVFZmZlY3RPcHRpb25zLmlkbCAqLywKKwkJCQk3MUE1ODE5NTIzNkY0NjY1MDBEODFBMjQgLyog
S2V5ZnJhbWVFZmZlY3RTdGFjay5jcHAgKi8sCisJCQkJNzFBNTgxOTMyMzZGNDY2NDAwRDgxQTI0
IC8qIEtleWZyYW1lRWZmZWN0U3RhY2suaCAqLywKIAkJCQk3MTIwNzMzRDIxNkRGQUYxMDBDNzgz
MjkgLyogT3B0aW9uYWxFZmZlY3RUaW1pbmcuaCAqLywKIAkJCQk3MTIwNzMzRjIxNkRGQUYyMDBD
NzgzMjkgLyogT3B0aW9uYWxFZmZlY3RUaW1pbmcuaWRsICovLAogCQkJCTcxMkJFNDdFMUZFODY0
OUQwMDIwMzFDQyAvKiBQbGF5YmFja0RpcmVjdGlvbi5oICovLApAQCAtMzA2NjgsNyArMzA2NzMs
NiBAQAogCQkJCTc3QTE3QUE3MTJGMjhCMkEwMDRFMDJGNiAvKiBKU09FU1ZlcnRleEFycmF5T2Jq
ZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGREY2QkFGOTEzNEE0Qzk4MDA4MjI5MjAgLyogSlNP
ZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEQTkzMjY3
MTY3MDNCQTkwMDg5ODJEQyAvKiBKU09mZmxpbmVBdWRpb0NvbnRleHQuaCBpbiBIZWFkZXJzICov
LAotCQkJCUU0NUJBNkFBMjM3NDkyNkMwMDRERkMwNyAvKiBNYXRjaGVkRGVjbGFyYXRpb25zQ2Fj
aGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNDg3N0U2MUZBQUIwMjUwMEMwNTc1OSAvKiBKU09m
ZnNjcmVlbkNhbnZhcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE0MEM1MjcxRkRGNTU4MjAwRDJB
ODczIC8qIEpTT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggaW4gSGVhZGVycyAq
LywKIAkJCQk1N0UyMzM2NTFEQzdEQjFGMDBGMjhEMDEgLyogSnNvbldlYktleS5oIGluIEhlYWRl
cnMgKi8sCkBAIC0zMTA4Miw2ICszMTA4Niw3IEBACiAJCQkJNzEyNDdFMzkxRkVBNUY4NjAwOEMw
OENFIC8qIEtleWZyYW1lQW5pbWF0aW9uT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzE1
NTZDQjQxRjlGMDlCQTAwRTc4RDA4IC8qIEtleWZyYW1lRWZmZWN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQk3MTI0N0UzQTFGRUE1Rjg2MDA4QzA4Q0UgLyogS2V5ZnJhbWVFZmZlY3RPcHRpb25zLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk3MUE1ODE5NjIzNkY0Njc2MDBEODFBMjQgLyogS2V5ZnJhbWVF
ZmZlY3RTdGFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RUJBMTEwRTgyM0U0NzAwQjI1OTY1
IC8qIEtleWZyYW1lTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE1RkY3RDUxOEM5NTUzODAw
RkU0Qzg3IC8qIEtleXByZXNzQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDUwQ0VCRjEx
NTA3M0JCRTAwMkJCMTQ5IC8qIExhYmVsYWJsZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAt
MzExNzMsNiArMzExNzgsNyBAQAogCQkJCTkzMzA5REY4MDk5RTY0OTIwMDU2RTU4MSAvKiBtYXJr
dXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3MjhDMzE0MTI2OEU0MzkwMDQxRTg5QiAvKiBNYXJr
dXBBY2N1bXVsYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDBDNjBFM0YxM0Q3NkQ3RTAwOTJB
Mjc1IC8qIE1hcmt1cFRva2VuaXplcklubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0NUJB
NkFBMjM3NDkyNkMwMDRERkMwNyAvKiBNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZBQkU3MkY1MTA1OUMxRUIwMEQ4ODhDQyAvKiBNYXRoTUxBbm5vdGF0aW9u
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkFCRTcyRjUxMDU5QzFFQjAwRDk5OUREIC8q
IE1hdGhNTEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0QTI4QUFDMTJERkI4QUMwMEFF
OTIzQiAvKiBNYXRoTUxFbGVtZW50RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0LmgKaW5kZXggZjNmZjNlOTg4OTJjZTI0ZTQ0
YThjN2IxZTc5OTBhYWZiM2VmY2UyYi4uZTFlY2VkNGQ4ZWZkOTFmZTczZWQyYTRhOWU1YzNhYmMw
OGRmZWNiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvbkVm
ZmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3QuaApA
QCAtNDcsNyArNDcsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEFuaW1hdGlv
bkVmZmVjdCA6IHB1YmxpYyBSZWZDb3VudGVkPEFuaW1hdGlvbkVmZmVjdD4geworY2xhc3MgQW5p
bWF0aW9uRWZmZWN0IDogcHVibGljIFJlZkNvdW50ZWQ8QW5pbWF0aW9uRWZmZWN0PiwgcHVibGlj
IENhbk1ha2VXZWFrUHRyPEFuaW1hdGlvbkVmZmVjdD4gewogcHVibGljOgogICAgIHZpcnR1YWwg
fkFuaW1hdGlvbkVmZmVjdCgpOwogCkBAIC02Miw5ICs2MiwxMCBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGludmFsaWRhdGUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFuaW1hdGlvbkRp
ZFNlZWsoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFuaW1hdGlvblN1c3BlbnNpb25TdGF0ZURp
ZENoYW5nZShib29sKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFuaW1hdGlvblRpbWVsaW5lRGlk
Q2hhbmdlKEFuaW1hdGlvblRpbWVsaW5lKikgPSAwOwogCiAgICAgV2ViQW5pbWF0aW9uKiBhbmlt
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX2FuaW1hdGlvbi5nZXQoKTsgfQotICAgIHZvaWQgc2V0
QW5pbWF0aW9uKFdlYkFuaW1hdGlvbiogYW5pbWF0aW9uKSB7IG1fYW5pbWF0aW9uID0gbWFrZVdl
YWtQdHIoYW5pbWF0aW9uKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRBbmltYXRpb24oV2ViQW5p
bWF0aW9uKiBhbmltYXRpb24pIHsgbV9hbmltYXRpb24gPSBtYWtlV2Vha1B0cihhbmltYXRpb24p
OyB9CiAKICAgICBTZWNvbmRzIGRlbGF5KCkgY29uc3QgeyByZXR1cm4gbV9kZWxheTsgfQogICAg
IHZvaWQgc2V0RGVsYXkoY29uc3QgU2Vjb25kcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9BbmltYXRpb25UaW1lbGluZS5jcHAKaW5kZXggMDA2NmJkMGZlYjlkMDQxNTA5NmVhOTMz
MTg1ZjRmM2U4Y2ZjMjE3YS4uYzRkZWEzY2RmZWFkNjBlYmMxNzA4ZTg2ZTFlMzYzNzA2N2ViMmFl
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUuY3Bw
CkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRUaW1lbGluZS5oIgogI2luY2x1
ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJLZXlmcmFtZUVmZmVjdC5oIgorI2luY2x1ZGUgIktl
eWZyYW1lRWZmZWN0U3RhY2suaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUg
IlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnR5U2hvcnRoYW5kLmgiCkBAIC03
NSw4ICs3NiwxMCBAQCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjpyZW1vdmVBbmltYXRpb24oV2Vi
QW5pbWF0aW9uJiBhbmltYXRpb24pCiAgICAgQVNTRVJUKCFhbmltYXRpb24udGltZWxpbmUoKSB8
fCBhbmltYXRpb24udGltZWxpbmUoKSA9PSB0aGlzKTsKICAgICBtX2FuaW1hdGlvbnMucmVtb3Zl
KCZhbmltYXRpb24pOwogICAgIGlmIChpczxLZXlmcmFtZUVmZmVjdD4oYW5pbWF0aW9uLmVmZmVj
dCgpKSkgewotICAgICAgICBpZiAoYXV0byogdGFyZ2V0ID0gZG93bmNhc3Q8S2V5ZnJhbWVFZmZl
Y3Q+KGFuaW1hdGlvbi5lZmZlY3QoKSktPnRhcmdldCgpKQorICAgICAgICBpZiAoYXV0byogdGFy
Z2V0ID0gZG93bmNhc3Q8S2V5ZnJhbWVFZmZlY3Q+KGFuaW1hdGlvbi5lZmZlY3QoKSktPnRhcmdl
dCgpKSB7CiAgICAgICAgICAgICBhbmltYXRpb25XYXNSZW1vdmVkRnJvbUVsZW1lbnQoYW5pbWF0
aW9uLCAqdGFyZ2V0KTsKKyAgICAgICAgICAgIHRhcmdldC0+ZW5zdXJlS2V5ZnJhbWVFZmZlY3RT
dGFjaygpLnJlbW92ZUVmZmVjdCgqZG93bmNhc3Q8S2V5ZnJhbWVFZmZlY3Q+KGFuaW1hdGlvbi5l
ZmZlY3QoKSkpOworICAgICAgICB9CiAgICAgfQogfQogCkBAIC0yNDMsMTIgKzI0NiwxNSBAQCBz
dGF0aWMgYm9vbCBzaG91bGRDb25zaWRlckFuaW1hdGlvbihFbGVtZW50JiBlbGVtZW50LCBjb25z
dCBBbmltYXRpb24mIGFuaW1hdGlvbgogCiB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVD
U1NBbmltYXRpb25zRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSZW5kZXJTdHls
ZSogY3VycmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgYWZ0ZXJDaGFuZ2VTdHlsZSkKIHsK
KyAgICBWZWN0b3I8U3RyaW5nPiBhbmltYXRpb25OYW1lczsKKwogICAgIC8vIEluIGNhc2UgdGhp
cyBlbGVtZW50IGlzIG5ld2x5IGdldHRpbmcgYSAiZGlzcGxheTogbm9uZSIgd2UgbmVlZCB0byBj
YW5jZWwgYWxsIG9mIGl0cyBhbmltYXRpb25zIGFuZCBkaXNyZWdhcmQgbmV3IG9uZXMuCiAgICAg
aWYgKGN1cnJlbnRTdHlsZSAmJiBjdXJyZW50U3R5bGUtPmhhc0FuaW1hdGlvbnMoKSAmJiBjdXJy
ZW50U3R5bGUtPmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6Tm9uZSAmJiBhZnRlckNoYW5nZVN0
eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6Tm9uZSkgewogICAgICAgICBpZiAobV9lbGVt
ZW50VG9DU1NBbmltYXRpb25CeU5hbWUuY29udGFpbnMoJmVsZW1lbnQpKSB7CiAgICAgICAgICAg
ICBmb3IgKGNvbnN0IGF1dG8mIGNzc0FuaW1hdGlvbnNCeU5hbWVNYXBJdGVtIDogbV9lbGVtZW50
VG9DU1NBbmltYXRpb25CeU5hbWUudGFrZSgmZWxlbWVudCkpCiAgICAgICAgICAgICAgICAgY2Fu
Y2VsRGVjbGFyYXRpdmVBbmltYXRpb24oKmNzc0FuaW1hdGlvbnNCeU5hbWVNYXBJdGVtLnZhbHVl
KTsKICAgICAgICAgfQorICAgICAgICBlbGVtZW50LmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2so
KS5zZXRDU1NBbmltYXRpb25OYW1lcyhXVEZNb3ZlKGFuaW1hdGlvbk5hbWVzKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTI3NSw2ICsyODEsNyBAQCB2b2lkIEFuaW1hdGlvblRpbWVs
aW5lOjp1cGRhdGVDU1NBbmltYXRpb25zRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBjb25z
dCBSZQogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGN1cnJlbnRBbmltYXRpb25zLT5z
aXplKCk7ICsraSkgewogICAgICAgICAgICAgYXV0byYgY3VycmVudEFuaW1hdGlvbiA9IGN1cnJl
bnRBbmltYXRpb25zLT5hbmltYXRpb24oaSk7CiAgICAgICAgICAgICBhdXRvJiBuYW1lID0gY3Vy
cmVudEFuaW1hdGlvbi5uYW1lKCk7CisgICAgICAgICAgICBhbmltYXRpb25OYW1lcy5hcHBlbmQo
bmFtZSk7CiAgICAgICAgICAgICBpZiAobmFtZXNPZlByZXZpb3VzQW5pbWF0aW9ucy5jb250YWlu
cyhuYW1lKSkgewogICAgICAgICAgICAgICAgIC8vIFdlJ3ZlIGZvdW5kIHRoZSBuYW1lIG9mIHRo
aXMgYW5pbWF0aW9uIGluIG91ciBsaXN0IG9mIHByZXZpb3VzIGFuaW1hdGlvbnMsIHRoaXMgbWVh
bnMgd2UndmUgYWxyZWFkeQogICAgICAgICAgICAgICAgIC8vIGNyZWF0ZWQgYSBDU1NBbmltYXRp
b24gb2JqZWN0IGZvciBpdCBhbmQgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGlzIENTU0FuaW1hdGlv
biBpcyBiYWNrZWQgYnkgdGhlIGN1cnJlbnQKQEAgLTI5Niw2ICszMDMsOCBAQCB2b2lkIEFuaW1h
dGlvblRpbWVsaW5lOjp1cGRhdGVDU1NBbmltYXRpb25zRm9yRWxlbWVudChFbGVtZW50JiBlbGVt
ZW50LCBjb25zdCBSZQogICAgICAgICBpZiAoYXV0byBhbmltYXRpb24gPSBjc3NBbmltYXRpb25z
QnlOYW1lLnRha2UobmFtZU9mQW5pbWF0aW9uVG9SZW1vdmUpKQogICAgICAgICAgICAgY2FuY2Vs
RGVjbGFyYXRpdmVBbmltYXRpb24oKmFuaW1hdGlvbik7CiAgICAgfQorCisgICAgZWxlbWVudC5l
bnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKCkuc2V0Q1NTQW5pbWF0aW9uTmFtZXMoV1RGTW92ZShh
bmltYXRpb25OYW1lcykpOwogfQogCiBSZWZQdHI8V2ViQW5pbWF0aW9uPiBBbmltYXRpb25UaW1l
bGluZTo6Y3NzQW5pbWF0aW9uRm9yRWxlbWVudEFuZFByb3BlcnR5KEVsZW1lbnQmIGVsZW1lbnQs
IENTU1Byb3BlcnR5SUQgcHJvcGVydHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9j
dW1lbnRUaW1lbGluZS5jcHAKaW5kZXggZWZjNjY1N2FiYjhkMGY0ZDZhYTE1YWJhZjc2ZjdmM2Y0
MjU0MGQyZi4uYjBjNDgxZWY1YzYxNjg4NjIyYWMyOTIzYWZjYmI3OTNiZDRjODcxMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcApAQCAtMjgsNyAr
MjgsNiBAQAogCiAjaW5jbHVkZSAiQW5pbWF0aW9uUGxheWJhY2tFdmVudC5oIgogI2luY2x1ZGUg
IkNTU0FuaW1hdGlvbi5oIgotI2luY2x1ZGUgIkNTU1Byb3BlcnR5QW5pbWF0aW9uLmgiCiAjaW5j
bHVkZSAiQ1NTVHJhbnNpdGlvbi5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUg
IkRlY2xhcmF0aXZlQW5pbWF0aW9uLmgiCkBAIC02NzMsMzIgKzY3Miw2IEBAIHZvaWQgRG9jdW1l
bnRUaW1lbGluZTo6YXBwbHlQZW5kaW5nQWNjZWxlcmF0ZWRBbmltYXRpb25zKCkKICAgICB9CiB9
CiAKLWJvb2wgRG9jdW1lbnRUaW1lbGluZTo6cmVzb2x2ZUFuaW1hdGlvbnNGb3JFbGVtZW50KEVs
ZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSkKLXsKLSAgICBib29sIGhh
c05vbkFjY2VsZXJhdGVkQW5pbWF0aW9uUHJvcGVydHkgPSBmYWxzZTsKLQotICAgIGZvciAoY29u
c3QgYXV0byYgYW5pbWF0aW9uIDogYW5pbWF0aW9uc0ZvckVsZW1lbnQoZWxlbWVudCkpIHsKLSAg
ICAgICAgYW5pbWF0aW9uLT5yZXNvbHZlKHRhcmdldFN0eWxlKTsKLQotICAgICAgICBpZiAoaGFz
Tm9uQWNjZWxlcmF0ZWRBbmltYXRpb25Qcm9wZXJ0eSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwot
Ci0gICAgICAgIGF1dG8qIGVmZmVjdCA9IGFuaW1hdGlvbi0+ZWZmZWN0KCk7Ci0gICAgICAgIGlm
ICghZWZmZWN0IHx8ICFpczxLZXlmcmFtZUVmZmVjdD4oZWZmZWN0KSkKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotCi0gICAgICAgIGF1dG8qIGtleWZyYW1lRWZmZWN0ID0gZG93bmNhc3Q8S2V5ZnJh
bWVFZmZlY3Q+KGVmZmVjdCk7Ci0gICAgICAgIGZvciAoYXV0byBjc3NQcm9wZXJ0eUlkIDoga2V5
ZnJhbWVFZmZlY3QtPmFuaW1hdGVkUHJvcGVydGllcygpKSB7Ci0gICAgICAgICAgICBpZiAoIUNT
U1Byb3BlcnR5QW5pbWF0aW9uOjphbmltYXRpb25PZlByb3BlcnR5SXNBY2NlbGVyYXRlZChjc3NQ
cm9wZXJ0eUlkKSkgewotICAgICAgICAgICAgICAgIGhhc05vbkFjY2VsZXJhdGVkQW5pbWF0aW9u
UHJvcGVydHkgPSB0cnVlOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuICFoYXNOb25BY2NlbGVyYXRlZEFuaW1hdGlv
blByb3BlcnR5OwotfQotCiBib29sIERvY3VtZW50VGltZWxpbmU6OnJ1bm5pbmdBbmltYXRpb25z
Rm9yRWxlbWVudEFyZUFsbEFjY2VsZXJhdGVkKEVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fZWxlbWVudHNXaXRoUnVubmluZ0FjY2VsZXJhdGVkQW5pbWF0aW9ucy5jb250
YWlucygmZWxlbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9j
dW1lbnRUaW1lbGluZS5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxp
bmUuaAppbmRleCA0MzAwN2NjODFlMDdjYmI1OTIxMzIyMjViNTAxZTkxYTAyOGE1NjBhLi43YzQ4
MWYyN2JhNGExMWU3YTQ5NmM1MjJlYzE5YmQzMzA5NmQ3OWU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmgKQEAgLTY3LDcgKzY3LDYgQEAgcHVibGljOgog
ICAgIHZvaWQgYW5pbWF0aW9uQWNjZWxlcmF0ZWRSdW5uaW5nU3RhdGVEaWRDaGFuZ2UoV2ViQW5p
bWF0aW9uJik7CiAgICAgdm9pZCBhcHBseVBlbmRpbmdBY2NlbGVyYXRlZEFuaW1hdGlvbnMoKTsK
ICAgICBib29sIHJ1bm5pbmdBbmltYXRpb25zRm9yRWxlbWVudEFyZUFsbEFjY2VsZXJhdGVkKEVs
ZW1lbnQmKSBjb25zdDsKLSAgICBib29sIHJlc29sdmVBbmltYXRpb25zRm9yRWxlbWVudChFbGVt
ZW50JiwgUmVuZGVyU3R5bGUmKTsKICAgICB2b2lkIGRldGFjaEZyb21Eb2N1bWVudCgpOwogCiAg
ICAgdm9pZCBlbnF1ZXVlQW5pbWF0aW9uUGxheWJhY2tFdmVudChBbmltYXRpb25QbGF5YmFja0V2
ZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcAppbmRl
eCA2OWVkZDg0NTA4ZjU1NjlkZGVjMjVmMzAxM2ZlODc4MTEyOWFmNGM0Li43NTc3NmM1Y2RlNWZk
YWQ2MGE5YTdjYjM3MzE3NGNiMzMzMTJmZWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9LZXlmcmFtZUVmZmVjdC5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJKU0NvbXBv
c2l0ZU9wZXJhdGlvbk9yQXV0by5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydC5oIgogI2luY2x1
ZGUgIkpTS2V5ZnJhbWVFZmZlY3QuaCIKKyNpbmNsdWRlICJLZXlmcmFtZUVmZmVjdFN0YWNrLmgi
CiAjaW5jbHVkZSAiUmVuZGVyQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94TW9kZWxPYmplY3Qu
aCIKICNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCkBAIC05OTAsNiArOTkxLDI5IEBAIHZvaWQg
S2V5ZnJhbWVFZmZlY3Q6OmNvbXB1dGVTdGFja2luZ0NvbnRleHRJbXBhY3QoKQogICAgIH0KIH0K
IAordm9pZCBLZXlmcmFtZUVmZmVjdDo6YW5pbWF0aW9uVGltZWxpbmVEaWRDaGFuZ2UoQW5pbWF0
aW9uVGltZWxpbmUqIHRpbWVsaW5lKQoreworICAgIGlmICghbV90YXJnZXQpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmICh0aW1lbGluZSkKKyAgICAgICAgbV90YXJnZXQtPmVuc3VyZUtleWZy
YW1lRWZmZWN0U3RhY2soKS5hZGRFZmZlY3QoKnRoaXMpOworICAgIGVsc2UKKyAgICAgICAgbV90
YXJnZXQtPmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2soKS5yZW1vdmVFZmZlY3QoKnRoaXMpOwor
fQorCit2b2lkIEtleWZyYW1lRWZmZWN0OjpzZXRBbmltYXRpb24oV2ViQW5pbWF0aW9uKiBhbmlt
YXRpb24pCit7CisgICAgYm9vbCBhbmltYXRpb25DaGFuZ2VkID0gYW5pbWF0aW9uICE9IHRoaXMt
PmFuaW1hdGlvbigpOworICAgIEFuaW1hdGlvbkVmZmVjdDo6c2V0QW5pbWF0aW9uKGFuaW1hdGlv
bik7CisgICAgaWYgKG1fdGFyZ2V0ICYmIGFuaW1hdGlvbkNoYW5nZWQpIHsKKyAgICAgICAgaWYg
KGFuaW1hdGlvbikKKyAgICAgICAgICAgIG1fdGFyZ2V0LT5lbnN1cmVLZXlmcmFtZUVmZmVjdFN0
YWNrKCkuYWRkRWZmZWN0KCp0aGlzKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV90YXJn
ZXQtPmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2soKS5yZW1vdmVFZmZlY3QoKnRoaXMpOworICAg
IH0KK30KKwogdm9pZCBLZXlmcmFtZUVmZmVjdDo6c2V0VGFyZ2V0KFJlZlB0cjxFbGVtZW50PiYm
IG5ld1RhcmdldCkKIHsKICAgICBpZiAobV90YXJnZXQgPT0gbmV3VGFyZ2V0KQpAQCAtMTAwOSw2
ICsxMDMzLDExIEBAIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OnNldFRhcmdldChSZWZQdHI8RWxlbWVu
dD4mJiBuZXdUYXJnZXQpCiAgICAgLy8gTGlrZXdpc2UsIHdlIG5lZWQgdG8gaW52YWxpZGF0ZSBz
dHlsZXMgb24gdGhlIHByZXZpb3VzIHRhcmdldCBzbyB0aGF0CiAgICAgLy8gYW55IGFuaW1hdGVk
IHN0eWxlcyBhcmUgcmVtb3ZlZCBpbW1lZGlhdGVseS4KICAgICBpbnZhbGlkYXRlRWxlbWVudChw
cmV2aW91c1RhcmdldC5nZXQoKSk7CisKKyAgICBpZiAocHJldmlvdXNUYXJnZXQpCisgICAgICAg
IHByZXZpb3VzVGFyZ2V0LT5lbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKCkucmVtb3ZlRWZmZWN0
KCp0aGlzKTsKKyAgICBpZiAobV90YXJnZXQpCisgICAgICAgIG1fdGFyZ2V0LT5lbnN1cmVLZXlm
cmFtZUVmZmVjdFN0YWNrKCkuYWRkRWZmZWN0KCp0aGlzKTsKIH0KIAogdm9pZCBLZXlmcmFtZUVm
ZmVjdDo6YXBwbHkoUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vS2V5ZnJhbWVFZmZlY3QuaAppbmRleCAxNzc1OGFhOGVmZDM1YmI2MjM0ODllYWEwNDdm
ZTE2ZjNkNzM3MzYwLi4zY2Q0ODc5ZDI3ZmQ2MDQzOTFmOWY1YzUyYTVmODE2ZjY1YjY2NzA5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaApAQCAtMTE0LDEwICsx
MTQsMTMgQEAgcHVibGljOgogICAgIHZvaWQgaW52YWxpZGF0ZSgpIG92ZXJyaWRlOwogICAgIHZv
aWQgYW5pbWF0aW9uRGlkU2VlaygpIGZpbmFsOwogICAgIHZvaWQgYW5pbWF0aW9uU3VzcGVuc2lv
blN0YXRlRGlkQ2hhbmdlKGJvb2wpIGZpbmFsOworICAgIHZvaWQgYW5pbWF0aW9uVGltZWxpbmVE
aWRDaGFuZ2UoQW5pbWF0aW9uVGltZWxpbmUqKSBmaW5hbDsKICAgICB2b2lkIGFwcGx5UGVuZGlu
Z0FjY2VsZXJhdGVkQWN0aW9ucygpOwogICAgIGJvb2wgaXNSdW5uaW5nQWNjZWxlcmF0ZWQoKSBj
b25zdCB7IHJldHVybiBtX2xhc3RSZWNvcmRlZEFjY2VsZXJhdGVkQWN0aW9uICE9IEFjY2VsZXJh
dGVkQWN0aW9uOjpTdG9wOyB9CiAgICAgYm9vbCBoYXNQZW5kaW5nQWNjZWxlcmF0ZWRBY3Rpb24o
KSBjb25zdCB7IHJldHVybiAhbV9wZW5kaW5nQWNjZWxlcmF0ZWRBY3Rpb25zLmlzRW1wdHkoKSAm
JiBpc1J1bm5pbmdBY2NlbGVyYXRlZCgpOyB9CiAKKyAgICB2b2lkIHNldEFuaW1hdGlvbihXZWJB
bmltYXRpb24qKSBmaW5hbDsKKwogICAgIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIGN1cnJlbnRTdHlsZSgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIGJvb2wgaXNBY2NlbGVyYXRlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fc2hvdWxkUnVuQWNjZWxlcmF0ZWQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9LZXlmcmFtZUVmZmVjdFN0YWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9LZXlmcmFtZUVmZmVjdFN0YWNrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NDc0NjRlOGViNWUzNmEzYjVm
NzMxMzE0ZjkwNTBkOWI1YWMwYWEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0U3RhY2suY3BwCkBAIC0wLDAgKzEsMTMyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIktleWZyYW1lRWZmZWN0U3RhY2suaCIKKworI2luY2x1ZGUgIkNTU0Fu
aW1hdGlvbi5oIgorI2luY2x1ZGUgIkNTU1RyYW5zaXRpb24uaCIKKyNpbmNsdWRlICJLZXlmcmFt
ZUVmZmVjdC5oIgorI2luY2x1ZGUgIldlYkFuaW1hdGlvbi5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK0tleWZyYW1lRWZmZWN0U3RhY2s6OktleWZyYW1lRWZmZWN0U3RhY2soKQoreworfQor
CitLZXlmcmFtZUVmZmVjdFN0YWNrOjp+S2V5ZnJhbWVFZmZlY3RTdGFjaygpCit7CisgICAgQVNT
RVJUKG1fZWZmZWN0cy5pc0VtcHR5KCkpOworfQorCit2b2lkIEtleWZyYW1lRWZmZWN0U3RhY2s6
OmFkZEVmZmVjdChLZXlmcmFtZUVmZmVjdCYgZWZmZWN0KQoreworICAgIC8vIFRvIHF1YWxpZnkg
Zm9yIG1lbWJlcnNoaXAgaW4gYW4gZWZmZWN0IHN0YWNrLCBhbiBlZmZlY3QgbXVzdCBoYXZlIGEg
dGFyZ2V0LCBhbiBhbmltYXRpb24gYW5kIGEgdGltZWxpbmUuCisgICAgLy8gVGhpcyBtZXRob2Qg
d2lsbCBiZSBjYWxsZWQgaW4gV2ViQW5pbWF0aW9uIGFuZCBLZXlmcmFtZUVmZmVjdCBhcyB0aG9z
ZSBwcm9wZXJ0aWVzIGNoYW5nZS4KKyAgICBpZiAoIWVmZmVjdC50YXJnZXQoKSB8fCAhZWZmZWN0
LmFuaW1hdGlvbigpIHx8ICFlZmZlY3QuYW5pbWF0aW9uKCktPnRpbWVsaW5lKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fZWZmZWN0cy5hcHBlbmQobWFrZVdlYWtQdHIoJmVmZmVjdCkpOwor
ICAgIG1faXNTb3J0ZWQgPSBmYWxzZTsKK30KKwordm9pZCBLZXlmcmFtZUVmZmVjdFN0YWNrOjpy
ZW1vdmVFZmZlY3QoS2V5ZnJhbWVFZmZlY3QmIGVmZmVjdCkKK3sKKyAgICBtX2VmZmVjdHMucmVt
b3ZlRmlyc3QoJmVmZmVjdCk7Cit9CisKK1ZlY3RvcjxXZWFrUHRyPEtleWZyYW1lRWZmZWN0Pj4g
S2V5ZnJhbWVFZmZlY3RTdGFjazo6c29ydGVkRWZmZWN0cygpCit7CisgICAgZW5zdXJlRWZmZWN0
c0FyZVNvcnRlZCgpOworICAgIHJldHVybiBtX2VmZmVjdHM7Cit9CisKK3ZvaWQgS2V5ZnJhbWVF
ZmZlY3RTdGFjazo6ZW5zdXJlRWZmZWN0c0FyZVNvcnRlZCgpCit7CisgICAgaWYgKG1faXNTb3J0
ZWQgfHwgbV9lZmZlY3RzLnNpemUoKSA8IDIpCisgICAgICAgIHJldHVybjsKKworICAgIHN0ZDo6
c29ydChtX2VmZmVjdHMuYmVnaW4oKSwgbV9lZmZlY3RzLmVuZCgpLCBbJl0oYXV0byYgbGhzLCBh
dXRvJiByaHMpIHsKKyAgICAgICAgYXV0byogbGhzQW5pbWF0aW9uID0gbGhzLT5hbmltYXRpb24o
KTsKKyAgICAgICAgYXV0byogcmhzQW5pbWF0aW9uID0gcmhzLT5hbmltYXRpb24oKTsKKworICAg
ICAgICBBU1NFUlQobGhzQW5pbWF0aW9uKTsKKyAgICAgICAgQVNTRVJUKHJoc0FuaW1hdGlvbik7
CisKKyAgICAgICAgLy8gQ1NTIFRyYW5zaXRpb25zIHNvcnQgZmlyc3QuCisgICAgICAgIGJvb2wg
bGhzSXNDU1NUcmFuc2l0aW9uID0gaXM8Q1NTVHJhbnNpdGlvbj4obGhzQW5pbWF0aW9uKTsKKyAg
ICAgICAgYm9vbCByaHNJc0NTU1RyYW5zaXRpb24gPSBpczxDU1NUcmFuc2l0aW9uPihyaHNBbmlt
YXRpb24pOworICAgICAgICBpZiAobGhzSXNDU1NUcmFuc2l0aW9uIHx8IHJoc0lzQ1NTVHJhbnNp
dGlvbikgeworICAgICAgICAgICAgaWYgKGxoc0lzQ1NTVHJhbnNpdGlvbiA9PSByaHNJc0NTU1Ry
YW5zaXRpb24pIHsKKyAgICAgICAgICAgICAgICAvLyBTb3J0IHRyYW5zaXRpb25zIGZpcnN0IGJ5
IHRoZWlyIGdlbmVyYXRpb24gdGltZSwgYW5kIHRoZW4gYnkgdHJhbnNpdGlvbi1wcm9wZXJ0eS4K
KyAgICAgICAgICAgICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXRyYW5zaXRp
b25zLTIvI2FuaW1hdGlvbi1jb21wb3NpdGUtb3JkZXIKKyAgICAgICAgICAgICAgICBhdXRvKiBs
aHNDU1NUcmFuc2l0aW9uID0gZG93bmNhc3Q8Q1NTVHJhbnNpdGlvbj4obGhzQW5pbWF0aW9uKTsK
KyAgICAgICAgICAgICAgICBhdXRvKiByaHNDU1NUcmFuc2l0aW9uID0gZG93bmNhc3Q8Q1NTVHJh
bnNpdGlvbj4ocmhzQW5pbWF0aW9uKTsKKyAgICAgICAgICAgICAgICBpZiAobGhzQ1NTVHJhbnNp
dGlvbi0+Z2VuZXJhdGlvblRpbWUoKSAhPSByaHNDU1NUcmFuc2l0aW9uLT5nZW5lcmF0aW9uVGlt
ZSgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGhzQ1NTVHJhbnNpdGlvbi0+Z2VuZXJh
dGlvblRpbWUoKSA8IHJoc0NTU1RyYW5zaXRpb24tPmdlbmVyYXRpb25UaW1lKCk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGxoc0NTU1RyYW5zaXRpb24tPnRyYW5zaXRpb25Qcm9wZXJ0eSgpLnV0
ZjgoKSA8IHJoc0NTU1RyYW5zaXRpb24tPnRyYW5zaXRpb25Qcm9wZXJ0eSgpLnV0ZjgoKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiAhcmhzSXNDU1NUcmFuc2l0aW9uOworICAg
ICAgICB9CisKKyAgICAgICAgLy8gQ1NTIEFuaW1hdGlvbnMgc29ydCBuZXh0LgorICAgICAgICBi
b29sIGxoc0lzQ1NTQW5pbWF0aW9uID0gaXM8Q1NTQW5pbWF0aW9uPihsaHNBbmltYXRpb24pOwor
ICAgICAgICBib29sIHJoc0lzQ1NTQW5pbWF0aW9uID0gaXM8Q1NTQW5pbWF0aW9uPihyaHNBbmlt
YXRpb24pOworICAgICAgICBpZiAobGhzSXNDU1NBbmltYXRpb24gfHwgcmhzSXNDU1NBbmltYXRp
b24pIHsKKyAgICAgICAgICAgIGlmIChsaHNJc0NTU0FuaW1hdGlvbiA9PSByaHNJc0NTU0FuaW1h
dGlvbikgeworICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mt
YW5pbWF0aW9ucy0yLyNhbmltYXRpb24tY29tcG9zaXRlLW9yZGVyCisgICAgICAgICAgICAgICAg
Ly8gU29ydCBBIGFuZCBCIGJhc2VkIG9uIHRoZWlyIHBvc2l0aW9uIGluIHRoZSBjb21wdXRlZCB2
YWx1ZSBvZiB0aGUgYW5pbWF0aW9uLW5hbWUgcHJvcGVydHkgb2YgdGhlIChjb21tb24pIG93bmlu
ZyBlbGVtZW50LgorICAgICAgICAgICAgICAgIGF1dG8mIGxoc0NTU0FuaW1hdGlvbk5hbWUgPSBk
b3duY2FzdDxDU1NBbmltYXRpb24+KGxoc0FuaW1hdGlvbiktPmJhY2tpbmdBbmltYXRpb24oKS5u
YW1lKCk7CisgICAgICAgICAgICAgICAgYXV0byYgcmhzQ1NTQW5pbWF0aW9uTmFtZSA9IGRvd25j
YXN0PENTU0FuaW1hdGlvbj4ocmhzQW5pbWF0aW9uKS0+YmFja2luZ0FuaW1hdGlvbigpLm5hbWUo
KTsKKworICAgICAgICAgICAgICAgIGZvciAoYXV0byYgYW5pbWF0aW9uTmFtZSA6IG1fY3NzQW5p
bWF0aW9uTmFtZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFuaW1hdGlvbk5hbWUgPT0g
bGhzQ1NTQW5pbWF0aW9uTmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICAgICAgICAgICAgICBpZiAoYW5pbWF0aW9uTmFtZSA9PSByaHNDU1NBbmltYXRp
b25OYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgaGF2ZSBmb3VuZCBlaXRoZXIg
b2YgdGhvc2UgQ1NTIGFuaW1hdGlvbnMgaW4gdGhlIENTUyBhbmltYXRpb25zIGxpc3QuCisgICAg
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICByZXR1cm4gIXJoc0lzQ1NTQW5pbWF0aW9uOworICAgICAgICB9CisKKyAgICAgICAgLy8g
SlMtb3JpZ2luYXRlZCBhbmltYXRpb25zIHNvcnQgbGFzdCBiYXNlZCBvbiB0aGVpciBwb3NpdGlv
biBpbiB0aGUgZ2xvYmFsIGFuaW1hdGlvbiBsaXN0LgorICAgICAgICAvLyBodHRwczovL2RyYWZ0
cy5jc3N3Zy5vcmcvd2ViLWFuaW1hdGlvbnMtMS8jYW5pbWF0aW9uLWNvbXBvc2l0ZS1vcmRlcgor
ICAgICAgICByZXR1cm4gbGhzQW5pbWF0aW9uLT5nbG9iYWxQb3NpdGlvbigpIDwgcmhzQW5pbWF0
aW9uLT5nbG9iYWxQb3NpdGlvbigpOworICAgIH0pOworCisgICAgbV9pc1NvcnRlZCA9IHRydWU7
Cit9CisKK3ZvaWQgS2V5ZnJhbWVFZmZlY3RTdGFjazo6c2V0Q1NTQW5pbWF0aW9uTmFtZXMoVmVj
dG9yPFN0cmluZz4mJiBhbmltYXRpb25OYW1lcykKK3sKKyAgICBtX2Nzc0FuaW1hdGlvbk5hbWVz
ID0gV1RGTW92ZShhbmltYXRpb25OYW1lcyk7CisgICAgLy8gU2luY2UgdGhlIGxpc3Qgb2YgYW5p
bWF0aW9uIG5hbWVzIGhhcyBjaGFuZ2VkLCB0aGUgc29ydGluZyBvcmRlciBvZiB0aGUgYW5pbWF0
aW9uIGVmZmVjdHMgbWF5IGhhdmUgY2hhbmdlZCBhcyB3ZWxsLgorICAgIG1faXNTb3J0ZWQgPSBm
YWxzZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0U3RhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9LZXlmcmFtZUVmZmVjdFN0YWNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTY1NjgyODcxZDBlMTZk
ZDljM2Y4NWJkNmQzNTg5YWVhMGQzZTcyOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdFN0YWNrLmgKQEAgLTAsMCArMSw1NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgS2V5ZnJhbWVFZmZlY3Q7CisKK2NsYXNzIEtleWZy
YW1lRWZmZWN0U3RhY2sgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgor
ICAgIGV4cGxpY2l0IEtleWZyYW1lRWZmZWN0U3RhY2soKTsKKyAgICB+S2V5ZnJhbWVFZmZlY3RT
dGFjaygpOworCisgICAgdm9pZCBhZGRFZmZlY3QoS2V5ZnJhbWVFZmZlY3QmKTsKKyAgICB2b2lk
IHJlbW92ZUVmZmVjdChLZXlmcmFtZUVmZmVjdCYpOworICAgIGJvb2wgaGFzRWZmZWN0cygpIGNv
bnN0IHsgcmV0dXJuICFtX2VmZmVjdHMuaXNFbXB0eSgpOyB9CisgICAgVmVjdG9yPFdlYWtQdHI8
S2V5ZnJhbWVFZmZlY3Q+PiBzb3J0ZWRFZmZlY3RzKCk7CisgICAgdm9pZCBzZXRDU1NBbmltYXRp
b25OYW1lcyhWZWN0b3I8U3RyaW5nPiYmKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGVuc3VyZUVm
ZmVjdHNBcmVTb3J0ZWQoKTsKKworICAgIFZlY3RvcjxXZWFrUHRyPEtleWZyYW1lRWZmZWN0Pj4g
bV9lZmZlY3RzOworICAgIFZlY3RvcjxTdHJpbmc+IG1fY3NzQW5pbWF0aW9uTmFtZXM7CisgICAg
Ym9vbCBtX2lzU29ydGVkIHsgdHJ1ZSB9OworCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwCmluZGV4IGMyM2Y5YzAy
NDE2MTA1MzVlNzU1ODExMWQyNzg3ZjE4YThkMDFlN2EuLmI5MTE4NGViMTIwYzUzOTcyOGZiN2Qw
OTc2MjM1YTVjN2RjOWQ4YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9X
ZWJBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRp
b24uY3BwCkBAIC0yMzcsNiArMjM3LDkgQEAgdm9pZCBXZWJBbmltYXRpb246OnNldFRpbWVsaW5l
SW50ZXJuYWwoUmVmUHRyPEFuaW1hdGlvblRpbWVsaW5lPiYmIHRpbWVsaW5lKQogICAgICAgICBt
X3RpbWVsaW5lLT5yZW1vdmVBbmltYXRpb24oKnRoaXMpOwogCiAgICAgbV90aW1lbGluZSA9IFdU
Rk1vdmUodGltZWxpbmUpOworCisgICAgaWYgKG1fZWZmZWN0KQorICAgICAgICBtX2VmZmVjdC0+
YW5pbWF0aW9uVGltZWxpbmVEaWRDaGFuZ2UobV90aW1lbGluZS5nZXQoKSk7CiB9CiAKIHZvaWQg
V2ViQW5pbWF0aW9uOjplZmZlY3RUYXJnZXREaWRDaGFuZ2UoRWxlbWVudCogcHJldmlvdXNUYXJn
ZXQsIEVsZW1lbnQqIG5ld1RhcmdldCkKQEAgLTEyNTgsOCArMTI2MSwxMiBAQCB2b2lkIFdlYkFu
aW1hdGlvbjo6cGVyc2lzdCgpCiAgICAgYXV0byBwcmV2aW91c1JlcGxhY2VTdGF0ZSA9IHN0ZDo6
ZXhjaGFuZ2UobV9yZXBsYWNlU3RhdGUsIFJlcGxhY2VTdGF0ZTo6UGVyc2lzdGVkKTsKIAogICAg
IGlmIChwcmV2aW91c1JlcGxhY2VTdGF0ZSA9PSBSZXBsYWNlU3RhdGU6OlJlbW92ZWQgJiYgbV90
aW1lbGluZSkgewotICAgICAgICBpZiAoaXM8S2V5ZnJhbWVFZmZlY3Q+KG1fZWZmZWN0KSkKLSAg
ICAgICAgICAgIG1fdGltZWxpbmUtPmFuaW1hdGlvbldhc0FkZGVkVG9FbGVtZW50KCp0aGlzLCAq
ZG93bmNhc3Q8S2V5ZnJhbWVFZmZlY3Q+KG1fZWZmZWN0LmdldCgpKS0+dGFyZ2V0KCkpOworICAg
ICAgICBpZiAoaXM8S2V5ZnJhbWVFZmZlY3Q+KG1fZWZmZWN0KSkgeworICAgICAgICAgICAgYXV0
byYga2V5ZnJhbWVFZmZlY3QgPSBkb3duY2FzdDxLZXlmcmFtZUVmZmVjdD4oKm1fZWZmZWN0KTsK
KyAgICAgICAgICAgIGF1dG8mIHRhcmdldCA9ICprZXlmcmFtZUVmZmVjdC50YXJnZXQoKTsKKyAg
ICAgICAgICAgIG1fdGltZWxpbmUtPmFuaW1hdGlvbldhc0FkZGVkVG9FbGVtZW50KCp0aGlzLCB0
YXJnZXQpOworICAgICAgICAgICAgdGFyZ2V0LmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2soKS5h
ZGRFZmZlY3Qoa2V5ZnJhbWVFZmZlY3QpOworICAgICAgICB9CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAKaW5kZXggMzg4N2ExMTkxMTQ4N2JlMjIyOWIwZmVlYTBmYWZiYjUwZmNmN2Nk
Yi4uYTgyNjY4MTdkMjM5NGI5M2VmNGUyNjNlYjcxODg3OWFkZTJlZWM3MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkF0dHJpYnV0ZUNoYW5nZUlu
dmFsaWRhdGlvbi5oIgogI2luY2x1ZGUgIkNTU0FuaW1hdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNs
dWRlICJDU1NQYXJzZXIuaCIKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eUFuaW1hdGlvbi5oIgogI2lu
Y2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkNs
YXNzQ2hhbmdlSW52YWxpZGF0aW9uLmgiCkBAIC0zNjc3LDYgKzM2NzgsNDcgQEAgSW50ZXJzZWN0
aW9uT2JzZXJ2ZXJEYXRhKiBFbGVtZW50OjppbnRlcnNlY3Rpb25PYnNlcnZlckRhdGEoKQogfQog
I2VuZGlmCiAKK0tleWZyYW1lRWZmZWN0U3RhY2smIEVsZW1lbnQ6OmVuc3VyZUtleWZyYW1lRWZm
ZWN0U3RhY2soKQoreworICAgIGF1dG8mIHJhcmVEYXRhID0gZW5zdXJlRWxlbWVudFJhcmVEYXRh
KCk7CisgICAgaWYgKCFyYXJlRGF0YS5rZXlmcmFtZUVmZmVjdFN0YWNrKCkpCisgICAgICAgIHJh
cmVEYXRhLnNldEtleWZyYW1lRWZmZWN0U3RhY2sobWFrZVVuaXF1ZTxLZXlmcmFtZUVmZmVjdFN0
YWNrPigpKTsKKyAgICByZXR1cm4gKnJhcmVEYXRhLmtleWZyYW1lRWZmZWN0U3RhY2soKTsKK30K
KworYm9vbCBFbGVtZW50OjpoYXNLZXlmcmFtZUVmZmVjdHMoKSBjb25zdAoreworICAgIGlmICgh
aGFzUmFyZURhdGEoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byoga2V5ZnJh
bWVFZmZlY3RTdGFjayA9IGVsZW1lbnRSYXJlRGF0YSgpLT5rZXlmcmFtZUVmZmVjdFN0YWNrKCk7
CisgICAgcmV0dXJuIGtleWZyYW1lRWZmZWN0U3RhY2sgJiYga2V5ZnJhbWVFZmZlY3RTdGFjay0+
aGFzRWZmZWN0cygpOworfQorCitib29sIEVsZW1lbnQ6OmFwcGx5S2V5ZnJhbWVFZmZlY3RzKFJl
bmRlclN0eWxlJiB0YXJnZXRTdHlsZSkKK3sKKyAgICBib29sIGhhc05vbkFjY2VsZXJhdGVkQW5p
bWF0aW9uUHJvcGVydHkgPSBmYWxzZTsKKworICAgIGZvciAoY29uc3QgYXV0byYgZWZmZWN0IDog
ZW5zdXJlS2V5ZnJhbWVFZmZlY3RTdGFjaygpLnNvcnRlZEVmZmVjdHMoKSkgeworICAgICAgICBB
U1NFUlQoZWZmZWN0LT5hbmltYXRpb24oKSk7CisgICAgICAgIGVmZmVjdC0+YW5pbWF0aW9uKCkt
PnJlc29sdmUodGFyZ2V0U3R5bGUpOworCisgICAgICAgIGlmIChoYXNOb25BY2NlbGVyYXRlZEFu
aW1hdGlvblByb3BlcnR5KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgLy8gRklY
TUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQwMDkKKyAgICAg
ICAgLy8gS2V5ZnJhbWVFZmZlY3RTdGFjayBhbmQgS2V5ZnJhbWVFZmZlY3Qgc2hvdWxkIGluZGlj
YXRlIHdoZXRoZXIgaXQgb25seSBjb250YWlucyBhY2NlbGVyYXRlZCBhbmltYXRpb24gcHJvcGVy
dGllcworICAgICAgICBmb3IgKGF1dG8gY3NzUHJvcGVydHlJZCA6IGVmZmVjdC0+YW5pbWF0ZWRQ
cm9wZXJ0aWVzKCkpIHsKKyAgICAgICAgICAgIGlmICghQ1NTUHJvcGVydHlBbmltYXRpb246OmFu
aW1hdGlvbk9mUHJvcGVydHlJc0FjY2VsZXJhdGVkKGNzc1Byb3BlcnR5SWQpKSB7CisgICAgICAg
ICAgICAgICAgaGFzTm9uQWNjZWxlcmF0ZWRBbmltYXRpb25Qcm9wZXJ0eSA9IHRydWU7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICByZXR1cm4gIWhhc05vbkFjY2VsZXJhdGVkQW5pbWF0aW9uUHJvcGVydHk7Cit9CisKICNpZiBF
TkFCTEUoUkVTSVpFX09CU0VSVkVSKQogdm9pZCBFbGVtZW50OjpkaXNjb25uZWN0RnJvbVJlc2l6
ZU9ic2VydmVycygpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCA1ZWUwNDZlZjU5NzI0MWE3NDli
MDUxNGIwN2EzNTAyZTY4NWMyYzBmLi40MmE3ZjIyNWQ3YTNkYmFlZTc5NTdjYTBkOGQ3NmRjNGY5
YTFlM2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTQ3LDYgKzQ3LDcgQEAgY2xhc3MgRnJhbWU7
CiBjbGFzcyBIVE1MRG9jdW1lbnQ7CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgSlNDdXN0b21FbGVt
ZW50SW50ZXJmYWNlOworY2xhc3MgS2V5ZnJhbWVFZmZlY3RTdGFjazsKIGNsYXNzIEtleWJvYXJk
RXZlbnQ7CiBjbGFzcyBMb2NhbGU7CiBjbGFzcyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ7CkBAIC00
ODksNiArNDkwLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEhhc0NTU0FuaW1hdGlvbigpOwog
ICAgIHZvaWQgY2xlYXJIYXNDU1NBbmltYXRpb24oKTsKIAorICAgIEtleWZyYW1lRWZmZWN0U3Rh
Y2smIGVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2soKTsKKyAgICBib29sIGhhc0tleWZyYW1lRWZm
ZWN0cygpIGNvbnN0OworICAgIGJvb2wgYXBwbHlLZXlmcmFtZUVmZmVjdHMoUmVuZGVyU3R5bGUm
KTsKKwogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGNvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoKSBjb25zdDsKICAgICB2b2lkIHNldENvbnRhaW5z
RnVsbFNjcmVlbkVsZW1lbnQoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudFJhcmVEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEu
Y3BwCmluZGV4IGIwNGVkOGE2Y2ZhNTJmMjk3ZDI0NzJiM2RmMjY1OTYxMjRkOWZjNmQuLjhhYWVh
ZWM1NmYwMTdjYmEzNzIxOTdhY2Q5M2NhODNmOTY3MTEzZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50UmFyZURhdGEuY3BwCkBAIC00Myw3ICs0Myw3IEBAIHN0cnVjdCBTYW1lU2l6ZUFzRWxl
bWVudFJhcmVEYXRhIDogTm9kZVJhcmVEYXRhIHsKICNlbmRpZgogICAgIExheW91dFNpemUgc2l6
ZUZvclJlc2l6aW5nOwogICAgIEludFBvaW50IHNhdmVkTGF5ZXJTY3JvbGxQb3NpdGlvbjsKLSAg
ICB2b2lkKiBwb2ludGVyc1sxMF07CisgICAgdm9pZCogcG9pbnRlcnNbMTFdOwogI2lmIEVOQUJM
RShJTlRFUlNFQ1RJT05fT0JTRVJWRVIpCiAgICAgdm9pZCogaW50ZXJzZWN0aW9uT2JzZXJ2ZXJE
YXRhOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVE
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKaW5kZXggYjg0Njlh
MDk4ODhmNTA0Y2Q2MWNjY2UxY2IwMjE3MjRhZDQwNGU0ZS4uYjdhNjg2MzUzZDdjNjg4NDlhMjJi
YjZmOTgxMGUwZWY2ZTIzYjQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnRSYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaApA
QCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkRPTVRva2VuTGlzdC5oIgogI2luY2x1ZGUgIkRh
dGFzZXRET01TdHJpbmdNYXAuaCIKICNpbmNsdWRlICJJbnRlcnNlY3Rpb25PYnNlcnZlci5oIgor
I2luY2x1ZGUgIktleWZyYW1lRWZmZWN0U3RhY2suaCIKICNpbmNsdWRlICJOYW1lZE5vZGVNYXAu
aCIKICNpbmNsdWRlICJOb2RlUmFyZURhdGEuaCIKICNpbmNsdWRlICJQc2V1ZG9FbGVtZW50Lmgi
CkBAIC0xMDAsNiArMTAxLDkgQEAgcHVibGljOgogICAgIGJvb2wgaGFzQ1NTQW5pbWF0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9oYXNDU1NBbmltYXRpb247IH0KICAgICB2b2lkIHNldEhhc0NTU0Fu
aW1hdGlvbihib29sIHZhbHVlKSB7IG1faGFzQ1NTQW5pbWF0aW9uID0gdmFsdWU7IH0KIAorICAg
IEtleWZyYW1lRWZmZWN0U3RhY2sqIGtleWZyYW1lRWZmZWN0U3RhY2soKSB7IHJldHVybiBtX2tl
eWZyYW1lRWZmZWN0U3RhY2suZ2V0KCk7IH0KKyAgICB2b2lkIHNldEtleWZyYW1lRWZmZWN0U3Rh
Y2soc3RkOjp1bmlxdWVfcHRyPEtleWZyYW1lRWZmZWN0U3RhY2s+JiYga2V5ZnJhbWVFZmZlY3RT
dGFjaykgeyBtX2tleWZyYW1lRWZmZWN0U3RhY2sgPSBXVEZNb3ZlKGtleWZyYW1lRWZmZWN0U3Rh
Y2spOyB9CisKICAgICBib29sIGhhc0VsZW1lbnRJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4g
bV9oYXNFbGVtZW50SWRlbnRpZmllcjsgfQogICAgIHZvaWQgc2V0SGFzRWxlbWVudElkZW50aWZp
ZXIoYm9vbCB2YWx1ZSkgeyBtX2hhc0VsZW1lbnRJZGVudGlmaWVyID0gdmFsdWU7IH0KIApAQCAt
MTg2LDYgKzE5MCw4IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlc2l6ZU9ic2Vy
dmVyRGF0YT4gbV9yZXNpemVPYnNlcnZlckRhdGE7CiAjZW5kaWYKIAorICAgIHN0ZDo6dW5pcXVl
X3B0cjxLZXlmcmFtZUVmZmVjdFN0YWNrPiBtX2tleWZyYW1lRWZmZWN0U3RhY2s7CisKICAgICBS
ZWZQdHI8UHNldWRvRWxlbWVudD4gbV9iZWZvcmVQc2V1ZG9FbGVtZW50OwogICAgIFJlZlB0cjxQ
c2V1ZG9FbGVtZW50PiBtX2FmdGVyUHNldWRvRWxlbWVudDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCmluZGV4IDQ0ZWY5NDNmMmMwMzgxNmM2YmE4NjFhZWQ3
MGRmYTA1NDkyNWQzNTAuLjdkMWRjMzVmY2EzNDc0NmZhMzMwZjZiZmViNWFiNzM4MTZhMmEwY2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKQEAgLTMxNywx
MSArMzE3LDExIEBAIEVsZW1lbnRVcGRhdGUgVHJlZVJlc29sdmVyOjpjcmVhdGVBbmltYXRlZEVs
ZW1lbnRVcGRhdGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBpZiAoYXV0byB0aW1lbGluZSA9IG1fZG9jdW1lbnQuZXhpc3RpbmdUaW1lbGluZSgpKSB7
Ci0gICAgICAgIC8vIE5vdyB3ZSBjYW4gdXBkYXRlIGFsbCBXZWIgYW5pbWF0aW9ucywgd2hpY2gg
d2lsbCBpbmNsdWRlIENTUyBBbmltYXRpb25zIGFzIHdlbGwKLSAgICAgICAgLy8gYXMgYW5pbWF0
aW9ucyBjcmVhdGVkIHZpYSB0aGUgSlMgQVBJLgorICAgIC8vIE5vdyB3ZSBjYW4gdXBkYXRlIGFs
bCBXZWIgYW5pbWF0aW9ucywgd2hpY2ggd2lsbCBpbmNsdWRlIENTUyBBbmltYXRpb25zIGFzIHdl
bGwKKyAgICAvLyBhcyBhbmltYXRpb25zIGNyZWF0ZWQgdmlhIHRoZSBKUyBBUEkuCisgICAgaWYg
KGVsZW1lbnQuaGFzS2V5ZnJhbWVFZmZlY3RzKCkpIHsKICAgICAgICAgYXV0byBhbmltYXRlZFN0
eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lUHRyKCpuZXdTdHlsZSk7Ci0gICAgICAgIHNob3VsZFJl
Y29tcG9zaXRlTGF5ZXIgPSB0aW1lbGluZS0+cmVzb2x2ZUFuaW1hdGlvbnNGb3JFbGVtZW50KGVs
ZW1lbnQsICphbmltYXRlZFN0eWxlKTsKKyAgICAgICAgc2hvdWxkUmVjb21wb3NpdGVMYXllciA9
IGVsZW1lbnQuYXBwbHlLZXlmcmFtZUVmZmVjdHMoKmFuaW1hdGVkU3R5bGUpOwogICAgICAgICBu
ZXdTdHlsZSA9IFdURk1vdmUoYW5pbWF0ZWRTdHlsZSk7CiAgICAgfQogCg==
</data>
<flag name="review"
          id="398895"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>