<?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>226544</bug_id>
          
          <creation_ts>2021-06-02 10:49:03 -0700</creation_ts>
          <short_desc>Drop legacy ActiveDOMObject::setPendingActivity() / unsetPendingActivity()</short_desc>
          <delta_ts>2021-06-02 14:10:20 -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>WebCore Misc.</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>calvaris</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
    
    <cc>philipj</cc>
    
    <cc>rniwa</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1766068</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-02 10:49:03 -0700</bug_when>
    <thetext>Drop legacy ActiveDOMObject::setPendingActivity() / unsetPendingActivity(). They are too leak-prone. The modern way to do this is to either override ActiveDOMObject::virtualHasPendingActivity() or use ActiveDOMObject::makePendingActivity().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766069</commentid>
    <comment_count>1</comment_count>
      <attachid>430375</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-02 10:51:37 -0700</bug_when>
    <thetext>Created attachment 430375
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766110</commentid>
    <comment_count>2</comment_count>
      <attachid>430375</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-02 12:39:07 -0700</bug_when>
    <thetext>Comment on attachment 430375
Patch

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

&gt; Source/WebCore/Modules/applepay/ApplePaySession.cpp:791
&gt; +    auto protectedJSWrapper = makePendingActivity(*this);

This object is not itself a JS wrapper. It is an object that protects the wrapper. So naming it &quot;protected JS wrapper&quot; is not quite right.

&gt; Source/WebCore/Modules/mediasource/MediaSource.h:182
&gt; +    unsigned m_associatedRegistryCount { 0 };

Do we have a no-overflow guarantee? 32-bits is a lot of bits, but is it guaranteed enough?

&gt; Source/WebCore/page/EventSource.cpp:278
&gt; +    auto protectedJSWrapper = makePendingActivity(*this);

Same variable name thought.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766113</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-02 12:44:50 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #2)
&gt; Comment on attachment 430375 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=430375&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/applepay/ApplePaySession.cpp:791
&gt; &gt; +    auto protectedJSWrapper = makePendingActivity(*this);
&gt; 
&gt; This object is not itself a JS wrapper. It is an object that protects the
&gt; wrapper. So naming it &quot;protected JS wrapper&quot; is not quite right.

jsWrapperProtector?

&gt; 
&gt; &gt; Source/WebCore/Modules/mediasource/MediaSource.h:182
&gt; &gt; +    unsigned m_associatedRegistryCount { 0 };
&gt; 
&gt; Do we have a no-overflow guarantee? 32-bits is a lot of bits, but is it
&gt; guaranteed enough?

I would just like to point out that ActiveDOMObject uses:
 unsigned m_pendingActivityInstanceCount 

So I did not change the situation with this patch. I need to look deeper into the code so see if there is a no-overflow guarantee as I am not familiar with it.

&gt; 
&gt; &gt; Source/WebCore/page/EventSource.cpp:278
&gt; &gt; +    auto protectedJSWrapper = makePendingActivity(*this);
&gt; 
&gt; Same variable name thought.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766119</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-02 13:06:24 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #3)
&gt; (In reply to Darin Adler from comment #2)
&gt; &gt; Comment on attachment 430375 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=430375&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/Modules/applepay/ApplePaySession.cpp:791
&gt; &gt; &gt; +    auto protectedJSWrapper = makePendingActivity(*this);
&gt; &gt; 
&gt; &gt; This object is not itself a JS wrapper. It is an object that protects the
&gt; &gt; wrapper. So naming it &quot;protected JS wrapper&quot; is not quite right.
&gt; 
&gt; jsWrapperProtector?
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/Modules/mediasource/MediaSource.h:182
&gt; &gt; &gt; +    unsigned m_associatedRegistryCount { 0 };
&gt; &gt; 
&gt; &gt; Do we have a no-overflow guarantee? 32-bits is a lot of bits, but is it
&gt; &gt; guaranteed enough?
&gt; 
&gt; I would just like to point out that ActiveDOMObject uses:
&gt;  unsigned m_pendingActivityInstanceCount 
&gt; 
&gt; So I did not change the situation with this patch. I need to look deeper
&gt; into the code so see if there is a no-overflow guarantee as I am not
&gt; familiar with it.

Looking at the code, I think JS could potentially cause an overflow by running this in a loop for the same mediaSource object:
`window.URL.createObjectURL(mediaSource)`

Not a regression in my patch. Switching to uint64_t would just delay the inevitable. Not sure how we usually deal with such things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766121</commentid>
    <comment_count>5</comment_count>
      <attachid>430375</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-02 13:10:51 -0700</bug_when>
    <thetext>Comment on attachment 430375
Patch

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

&gt;&gt;&gt; Source/WebCore/Modules/mediasource/MediaSource.h:182
&gt;&gt;&gt; +    unsigned m_associatedRegistryCount { 0 };
&gt;&gt; 
&gt;&gt; Do we have a no-overflow guarantee? 32-bits is a lot of bits, but is it guaranteed enough?
&gt; 
&gt; I would just like to point out that ActiveDOMObject uses:
&gt;  unsigned m_pendingActivityInstanceCount 
&gt; 
&gt; So I did not change the situation with this patch. I need to look deeper into the code so see if there is a no-overflow guarantee as I am not familiar with it.

This is not a valid use case though so the script would have to have a bug or have bad intentions. The side effect though is only that the wrapper might get collected early (or leak). If a wrapper is collected early, the one consequence I am aware of is the inability to dispatch events.
Do we think we have to deal with overflows here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766124</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-06-02 13:18:44 -0700</bug_when>
    <thetext>&gt; Looking at the code, I think JS could potentially cause an overflow by
&gt; running this in a loop for the same mediaSource object:
&gt; `window.URL.createObjectURL(mediaSource)`
&gt; 
&gt; Not a regression in my patch. Switching to uint64_t would just delay the
&gt; inevitable. Not sure how we usually deal with such things.

I believe we usually deal with this issue by using uint64_t. I think that&apos;s how all WK2 object identifiers work. I don&apos;t agree that uint64_t delays the inevitable; I believe it is a complete fix, at least for any consumer electronic device in the foreseeable future. [https://www.reddit.com/r/ProgrammerTIL/comments/4tspsn/c_it_will_take_approximately_97_years_to_overflow/]

In some cases, Checked&lt;unsigned&gt; might also be appropriate -- if we are willing to crash when the number gets too big.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766126</commentid>
    <comment_count>7</comment_count>
      <attachid>430395</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-02 13:22:44 -0700</bug_when>
    <thetext>Created attachment 430395
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766150</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-02 14:09:36 -0700</bug_when>
    <thetext>Committed r278372 (238399@main): &lt;https://commits.webkit.org/238399@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 430395.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766152</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-02 14:10:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/78782275&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430375</attachid>
            <date>2021-06-02 10:51:37 -0700</date>
            <delta_ts>2021-06-02 13:22:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226544-20210602105136.patch</filename>
            <type>text/plain</type>
            <size>13932</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MzUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDVmNDFlZGYzNTIxOTk5
ZTA4MWQ3YjkyM2ZiMjdiMDliOTk2ODE3Zi4uZGQ2NDNkNjQ5NTJjMGFhZGY4ODJiMDhhOWMyZDM4
Zjc4ZWZkZGI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIxLTA2LTAyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCBsZWdhY3kgQWN0aXZl
RE9NT2JqZWN0OjpzZXRQZW5kaW5nQWN0aXZpdHkoKSAvIHVuc2V0UGVuZGluZ0FjdGl2aXR5KCkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjU0NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERyb3AgbGVn
YWN5IEFjdGl2ZURPTU9iamVjdDo6c2V0UGVuZGluZ0FjdGl2aXR5KCkgLyB1bnNldFBlbmRpbmdB
Y3Rpdml0eSgpLiBUaGV5IGFyZSB0b28gbGVhay1wcm9uZS4gVGhlIG1vZGVybgorICAgICAgICB3
YXkgdG8gZG8gdGhpcyBpcyB0byBlaXRoZXIgb3ZlcnJpZGUgQWN0aXZlRE9NT2JqZWN0Ojp2aXJ0
dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgb3IgdXNlCisgICAgICAgIEFjdGl2ZURPTU9iamVjdDo6
bWFrZVBlbmRpbmdBY3Rpdml0eSgpLgorCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uOjpiZWdp
bik6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNlc3Npb246OmFib3J0KToKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvbjo6Y29tcGxldGVQYXltZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGxlUGF5U2Vzc2lvbjo6ZGlkQ2FuY2VsUGF5bWVudFNlc3Npb24pOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxlUGF5U2Vzc2lvbjo6c3VzcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNlc3Np
b246OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbGVQYXlTZXNzaW9uOjpkaWRSZWFjaEZpbmFsU3RhdGUpOiBEZWxldGVkLgorICAgICAgICAq
IE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmg6CisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJj
ZTo6YWRkZWRUb1JlZ2lzdHJ5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpyZW1v
dmVkRnJvbVJlZ2lzdHJ5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjp2aXJ0dWFs
SGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNl
L01lZGlhU291cmNlLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSVENEYXRhQ2hhbm5lbDo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6CisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5oOgorICAgICAgICAqIGRv
bS9BY3RpdmVET01PYmplY3QuaDoKKyAgICAgICAgKiBwYWdlL0V2ZW50U291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50U291cmNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRTb3VyY2U6Om5ldHdvcmtSZXF1ZXN0RW5kZWQpOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRTb3VyY2U6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50U291cmNlOjphYm9ydENv
bm5lY3Rpb25BdHRlbXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50U291cmNlOjp2aXJ0dWFs
SGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0V2ZW50U291cmNlLmg6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyOjp2aXJ0dWFsSGFzUGVuZGluZ0Fj
dGl2aXR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6bm90aWZ5RmluaXNoZWQp
OgorCiAyMDIxLTA2LTAyICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4K
IAogICAgICAgICBbY3NzLXNjcm9sbC1zbmFwXSBTY3JvbGwgc25hcCBpcyBicm9rZW4gd2l0aCBu
b24taG9yaXpvbnRhbCB3cml0aW5nIG1vZGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5jcHAKaW5kZXggOGVkZjJmZjlhMzlkMzIzYTMy
MDM5Nzc4ZWEwMGQ4ODBhMjE3MWNmOC4uYzE0MWU3NmJhMWNhM2NjZjM1NDUzMWVlMjQ0ZmQ2N2Zi
ZDk3ZjZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlTZXNzaW9uLmNwcApAQCAtNDQyLDggKzQ0Miw2IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEFw
cGxlUGF5U2Vzc2lvbjo6YmVnaW4oRG9jdW1lbnQmIGRvY3VtZW50KQogCiAgICAgbV9zdGF0ZSA9
IFN0YXRlOjpBY3RpdmU7CiAKLSAgICBzZXRQZW5kaW5nQWN0aXZpdHkoKnRoaXMpOwotCiAgICAg
cmV0dXJuIHsgfTsKIH0KIApAQCAtNDU1LDggKzQ1Myw2IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEFw
cGxlUGF5U2Vzc2lvbjo6YWJvcnQoKQogICAgIG1fc3RhdGUgPSBTdGF0ZTo6QWJvcnRlZDsKICAg
ICBwYXltZW50Q29vcmRpbmF0b3IoKS5hYm9ydFBheW1lbnRTZXNzaW9uKCk7CiAKLSAgICBkaWRS
ZWFjaEZpbmFsU3RhdGUoKTsKLQogICAgIHJldHVybiB7IH07CiB9CiAKQEAgLTU0OSw3ICs1NDUs
NiBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBcHBsZVBheVNlc3Npb246OmNvbXBsZXRlUGF5bWVudChB
cHBsZVBheVBheW1lbnRBdXRob3JpemF0aW9uUgogICAgIH0KIAogICAgIG1fc3RhdGUgPSBTdGF0
ZTo6Q29tcGxldGVkOwotICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5KCp0aGlzKTsKIAogICAgIHJl
dHVybiB7IH07CiB9CkBAIC03NDcsOCArNzQyLDYgQEAgdm9pZCBBcHBsZVBheVNlc3Npb246OmRp
ZENhbmNlbFBheW1lbnRTZXNzaW9uKFBheW1lbnRTZXNzaW9uRXJyb3ImJiBlcnJvcikKIAogICAg
IGF1dG8gZXZlbnQgPSBBcHBsZVBheUNhbmNlbEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNh
bmNlbEV2ZW50LCBXVEZNb3ZlKGVycm9yKSk7CiAgICAgZGlzcGF0Y2hFdmVudChldmVudC5nZXQo
KSk7Ci0KLSAgICBkaWRSZWFjaEZpbmFsU3RhdGUoKTsKIH0KIAogY29uc3QgY2hhciogQXBwbGVQ
YXlTZXNzaW9uOjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKQEAgLTc4NSw4ICs3NzgsNiBA
QCB2b2lkIEFwcGxlUGF5U2Vzc2lvbjo6c3RvcCgpCiAKICAgICBtX3N0YXRlID0gU3RhdGU6OkFi
b3J0ZWQ7CiAgICAgcGF5bWVudENvb3JkaW5hdG9yKCkuYWJvcnRQYXltZW50U2Vzc2lvbigpOwot
Ci0gICAgZGlkUmVhY2hGaW5hbFN0YXRlKCk7CiB9CiAKIHZvaWQgQXBwbGVQYXlTZXNzaW9uOjpz
dXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24gcmVhc29uKQpAQCAtNzk3LDExICs3ODgsMTAgQEAg
dm9pZCBBcHBsZVBheVNlc3Npb246OnN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbiByZWFzb24p
CiAgICAgaWYgKGNhblN1c3BlbmRXaXRob3V0Q2FuY2VsaW5nKCkpCiAgICAgICAgIHJldHVybjsK
IAorICAgIGF1dG8gcHJvdGVjdGVkSlNXcmFwcGVyID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhp
cyk7CiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpDYW5jZWxlZDsKICAgICBwYXltZW50Q29vcmRpbmF0
b3IoKS5hYm9ydFBheW1lbnRTZXNzaW9uKCk7CiAgICAgcXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50
KCp0aGlzLCBUYXNrU291cmNlOjpVc2VySW50ZXJhY3Rpb24sIEFwcGxlUGF5Q2FuY2VsRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkuY2FuY2VsRXZlbnQsIHsgfSkpOwotCi0gICAgZGlkUmVhY2hG
aW5hbFN0YXRlKCk7CiB9CiAKIFBheW1lbnRDb29yZGluYXRvciYgQXBwbGVQYXlTZXNzaW9uOjpw
YXltZW50Q29vcmRpbmF0b3IoKSBjb25zdApAQCAtMTAyMCwxMCArMTAxMCw5IEBAIGJvb2wgQXBw
bGVQYXlTZXNzaW9uOjppc0ZpbmFsU3RhdGUoKSBjb25zdAogICAgIH0KIH0KIAotdm9pZCBBcHBs
ZVBheVNlc3Npb246OmRpZFJlYWNoRmluYWxTdGF0ZSgpCitib29sIEFwcGxlUGF5U2Vzc2lvbjo6
dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGlzRmluYWxT
dGF0ZSgpKTsKLSAgICB1bnNldFBlbmRpbmdBY3Rpdml0eSgqdGhpcyk7CisgICAgcmV0dXJuIG1f
c3RhdGUgIT0gU3RhdGU6OklkbGUgJiYgIWlzRmluYWxTdGF0ZSgpOwogfQogCiAjaWYgZGVmaW5l
ZChBcHBsZVBheVNlc3Npb25BZGRpdGlvbnNfZGVmaW5pdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uaAppbmRleCA0YWM4NDBjMzA1
MDI2MTc3NWE4ZjIyNDViMzlmMDQ4YzRkMWRiMmMxLi5lMTc4YmZhZGNiZjE5OWYxMjI1YmM3OTA0
Y2Q2MGE1ZTkyMWI4MDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L0FwcGxlUGF5U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvQXBwbGVQYXlTZXNzaW9uLmgKQEAgLTExMSw2ICsxMTEsNyBAQCBwcml2YXRlOgogICAgIGNv
bnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lk
IHN0b3AoKSBvdmVycmlkZTsKICAgICB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikg
b3ZlcnJpZGU7CisgICAgYm9vbCB2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmlu
YWw7CiAKICAgICAvLyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLgogICAgIEV2ZW50VGFyZ2V0
SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
QXBwbGVQYXlTZXNzaW9uRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CkBAIC0xNDYsNyArMTQ3
LDYgQEAgcHJpdmF0ZToKICAgICBib29sIGNhblN1c3BlbmRXaXRob3V0Q2FuY2VsaW5nKCkgY29u
c3Q7CiAKICAgICBib29sIGlzRmluYWxTdGF0ZSgpIGNvbnN0OwotICAgIHZvaWQgZGlkUmVhY2hG
aW5hbFN0YXRlKCk7CiAKICAgICBlbnVtIGNsYXNzIFN0YXRlIHsKICAgICAgICAgSWRsZSwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAK
aW5kZXggNDU5MzViZjk5OGFhZDgxNDAwMzZhYWE4MWM4M2U1OTY4OTkxOGM1ZC4uYTRjNGI2YzZm
MzcxZjYzNTUyMmIxZmVjZDMyNjIyZTM5NDMyMjZhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKQEAgLTE1NSwxMyArMTU1LDE0
IEBAIHZvaWQgTWVkaWFTb3VyY2U6OnNldFByaXZhdGVBbmRPcGVuKFJlZjxNZWRpYVNvdXJjZVBy
aXZhdGU+JiYgbWVkaWFTb3VyY2VQcml2YXRlCiB2b2lkIE1lZGlhU291cmNlOjphZGRlZFRvUmVn
aXN0cnkoKQogewogICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSKTsKLSAgICBzZXRQZW5kaW5n
QWN0aXZpdHkoKnRoaXMpOworICAgICsrbV9hc3NvY2lhdGVkUmVnaXN0cnlDb3VudDsKIH0KIAog
dm9pZCBNZWRpYVNvdXJjZTo6cmVtb3ZlZEZyb21SZWdpc3RyeSgpCiB7CiAgICAgREVCVUdfTE9H
KExPR0lERU5USUZJRVIpOwotICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5KCp0aGlzKTsKKyAgICBB
U1NFUlQobV9hc3NvY2lhdGVkUmVnaXN0cnlDb3VudCk7CisgICAgLS1tX2Fzc29jaWF0ZWRSZWdp
c3RyeUNvdW50OwogfQogCiBNZWRpYVRpbWUgTWVkaWFTb3VyY2U6OmR1cmF0aW9uKCkgY29uc3QK
QEAgLTk5Nyw3ICs5OTgsNyBAQCB2b2lkIE1lZGlhU291cmNlOjpvcGVuSWZJbkVuZGVkU3RhdGUo
KQogCiBib29sIE1lZGlhU291cmNlOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QK
IHsKLSAgICByZXR1cm4gbV9wcml2YXRlIHx8IG1fYXN5bmNFdmVudFF1ZXVlLT5oYXNQZW5kaW5n
QWN0aXZpdHkoKTsKKyAgICByZXR1cm4gbV9wcml2YXRlIHx8IG1fYXN5bmNFdmVudFF1ZXVlLT5o
YXNQZW5kaW5nQWN0aXZpdHkoKSB8fCBtX2Fzc29jaWF0ZWRSZWdpc3RyeUNvdW50OwogfQogCiB2
b2lkIE1lZGlhU291cmNlOjpzdG9wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzb3VyY2UvTWVkaWFTb3VyY2UuaAppbmRleCAxOTFlMDAzMmJiYTdmNjJkZjg5MGQ2NmMxMDlk
YTk2MTExYjRjOTVjLi43NDQ1NzE1MjcyZDE5YjQyZDM4MWYyNTE0YzAxNGQ0MDNlZDUzZGQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5o
CkBAIC0xNzksNiArMTc5LDcgQEAgcHJpdmF0ZToKICAgICBSZWY8Y29uc3QgTG9nZ2VyPiBtX2xv
Z2dlcjsKICAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXIgeyBudWxscHRyIH07CiAjZW5k
aWYKKyAgICB1bnNpZ25lZCBtX2Fzc29jaWF0ZWRSZWdpc3RyeUNvdW50IHsgMCB9OwogfTsKIAog
U3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKE1lZGlhU291cmNlOjpFbmRPZlN0cmVh
bUVycm9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDRGF0YUNoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbC5jcHAKaW5kZXggNGIxYTI4NDliNDVlODU3NTBlZmQ3MDU3Mjc3Yjc1MGFi
ZTkzNjVkMS4uODZhZmNkYmI3NmMwYTJmZjUyYThmMTU0MzBiMTM5YmRiZmQ2MGQ1YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bC5jcHAKQEAgLTYyLDcgKzYyLDYgQEAgUmVmPFJUQ0RhdGFDaGFubmVsPiBSVENEYXRhQ2hhbm5l
bDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIHN0ZDoKICAgICBBU1NF
UlQoaGFuZGxlcik7CiAgICAgYXV0byBjaGFubmVsID0gYWRvcHRSZWYoKm5ldyBSVENEYXRhQ2hh
bm5lbChjb250ZXh0LCBXVEZNb3ZlKGhhbmRsZXIpLCBXVEZNb3ZlKGxhYmVsKSwgV1RGTW92ZShv
cHRpb25zKSkpOwogICAgIGNoYW5uZWwtPnN1c3BlbmRJZk5lZWRlZCgpOwotICAgIGNoYW5uZWwt
PnNldFBlbmRpbmdBY3Rpdml0eShjaGFubmVsLmdldCgpKTsKICAgICBxdWV1ZVRhc2tLZWVwaW5n
T2JqZWN0QWxpdmUoY2hhbm5lbC5nZXQoKSwgVGFza1NvdXJjZTo6TmV0d29ya2luZywgW2NoYW5u
ZWwgPSBjaGFubmVsLnB0cigpXSB7CiAgICAgICAgIGlmICghY2hhbm5lbC0+bV9pc0RldGFjaGFi
bGUpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xODQsNyArMTgzLDExIEBAIHZvaWQgUlRDRGF0
YUNoYW5uZWw6OmNsb3NlKCkKICAgICBpZiAobV9oYW5kbGVyKQogICAgICAgICBtX2hhbmRsZXIt
PmNsb3NlKCk7CiAgICAgbV9oYW5kbGVyID0gbnVsbHB0cjsKLSAgICB1bnNldFBlbmRpbmdBY3Rp
dml0eSgqdGhpcyk7Cit9CisKK2Jvb2wgUlRDRGF0YUNoYW5uZWw6OnZpcnR1YWxIYXNQZW5kaW5n
QWN0aXZpdHkoKSBjb25zdAoreworICAgIHJldHVybiAhbV9zdG9wcGVkOwogfQogCiB2b2lkIFJU
Q0RhdGFDaGFubmVsOjpkaWRDaGFuZ2VSZWFkeVN0YXRlKFJUQ0RhdGFDaGFubmVsU3RhdGUgbmV3
U3RhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0Rh
dGFDaGFubmVsLmgKaW5kZXggOWRhNzY1Njg3ODZkYWIyOWQ2ODQ1ZDMxN2U4ZjRhNzMyNWM3MzJm
MS4uNmRmYzEwNTYxOGU0MjZlNDAwMTU3NmQ0MjA1ZTA1MDE3NmRhMDBkNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaApAQCAt
MTA3LDYgKzEwNyw3IEBAIHByaXZhdGU6CiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0IEFQSQogICAg
IHZvaWQgc3RvcCgpIGZpbmFsOwogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiAiUlRDRGF0YUNoYW5uZWwiOyB9CisgICAgYm9vbCB2aXJ0
dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7CiAKICAgICAvLyBSVENEYXRhQ2hh
bm5lbEhhbmRsZXJDbGllbnQgQVBJCiAgICAgdm9pZCBkaWRDaGFuZ2VSZWFkeVN0YXRlKFJUQ0Rh
dGFDaGFubmVsU3RhdGUpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Fj
dGl2ZURPTU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5oCmlu
ZGV4IGU2Mjc5YTcyMTE2ZjViODNkMDg0YzAyNGMwMWQ1YTI3ZDU0MzIwNjUuLjU1Y2I3ZGU4OGE3
MzE3MzEyMzQ4M2E1NTMxMGFlMzRiYWQzYmM3NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9BY3RpdmVET01PYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9N
T2JqZWN0LmgKQEAgLTc0LDI0ICs3NCw2IEBAIHB1YmxpYzoKICAgICAvLyBJdCBjYW4sIGhvd2V2
ZXIsIGhhdmUgYSBzaWRlIGVmZmVjdCBvZiBkZWxldGluZyBhbiBBY3RpdmVET01PYmplY3QuCiAg
ICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKIAotICAgIC8vIEZJWE1FOiBEcm9wIHRoaXMgZnVuY3Rp
b24uCi0gICAgLy8gQ2FsbCBzaXRlcyBzaG91bGQgYmUgdXNpbmcgbWFrZVBlbmRpbmdBY3Rpdml0
eSgpIG9yIG92ZXJyaWRpbmcgdmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGluc3RlYWQuCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBzZXRQZW5kaW5nQWN0aXZpdHkoVCYgdGhpc09i
amVjdCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCgmdGhpc09iamVjdCA9PSB0aGlzKTsKLSAgICAg
ICAgdGhpc09iamVjdC5yZWYoKTsKLSAgICAgICAgKyttX3BlbmRpbmdBY3Rpdml0eUluc3RhbmNl
Q291bnQ7Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IERyb3AgdGhpcyBmdW5jdGlvbi4KLSAgICAv
LyBDYWxsIHNpdGVzIHNob3VsZCBiZSB1c2luZyBtYWtlUGVuZGluZ0FjdGl2aXR5KCkgb3Igb3Zl
cnJpZGluZyB2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgaW5zdGVhZC4KLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiB2b2lkIHVuc2V0UGVuZGluZ0FjdGl2aXR5KFQmIHRoaXNPYmplY3QpCi0g
ICAgewotICAgICAgICBBU1NFUlQobV9wZW5kaW5nQWN0aXZpdHlJbnN0YW5jZUNvdW50ID4gMCk7
Ci0gICAgICAgIC0tbV9wZW5kaW5nQWN0aXZpdHlJbnN0YW5jZUNvdW50OwotICAgICAgICB0aGlz
T2JqZWN0LmRlcmVmKCk7Ci0gICAgfQotCiAgICAgdGVtcGxhdGU8Y2xhc3MgVD4KICAgICBjbGFz
cyBQZW5kaW5nQWN0aXZpdHkgOiBwdWJsaWMgUmVmQ291bnRlZDxQZW5kaW5nQWN0aXZpdHk8VD4+
IHsKICAgICBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCmluZGV4IGZlYTgy
MmYzMDFmMDc5N2FjMmFiNTU3MmM4YTc0NTY0MjdmOGU5ODEuLmE3ZTJjOGMzOWRmNzYzYjkxZGIz
MTQ3ZmVkNWU2ZGYxYzJjYWQ4OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCkBA
IC04MCw3ICs4MCw2IEBAIEV4Y2VwdGlvbk9yPFJlZjxFdmVudFNvdXJjZT4+IEV2ZW50U291cmNl
OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4CiAgICAgfQogCiAgICAgYXV0
byBzb3VyY2UgPSBhZG9wdFJlZigqbmV3IEV2ZW50U291cmNlKGNvbnRleHQsIGZ1bGxVUkwsIGV2
ZW50U291cmNlSW5pdCkpOwotICAgIHNvdXJjZS0+c2V0UGVuZGluZ0FjdGl2aXR5KHNvdXJjZS5n
ZXQoKSk7CiAgICAgc291cmNlLT5zY2hlZHVsZUluaXRpYWxDb25uZWN0KCk7CiAgICAgc291cmNl
LT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1cm4gc291cmNlOwpAQCAtMTMwLDggKzEyOSw2
IEBAIHZvaWQgRXZlbnRTb3VyY2U6Om5ldHdvcmtSZXF1ZXN0RW5kZWQoKQogCiAgICAgaWYgKG1f
c3RhdGUgIT0gQ0xPU0VEKQogICAgICAgICBzY2hlZHVsZVJlY29ubmVjdCgpOwotICAgIGVsc2UK
LSAgICAgICAgdW5zZXRQZW5kaW5nQWN0aXZpdHkoKnRoaXMpOwogfQogCiB2b2lkIEV2ZW50U291
cmNlOjpzY2hlZHVsZUluaXRpYWxDb25uZWN0KCkKQEAgLTE2MywxMCArMTYwLDggQEAgdm9pZCBF
dmVudFNvdXJjZTo6Y2xvc2UoKQogCiAgICAgaWYgKG1fcmVxdWVzdEluRmxpZ2h0KQogICAgICAg
ICBkb0V4cGxpY2l0TG9hZENhbmNlbGxhdGlvbigpOwotICAgIGVsc2UgeworICAgIGVsc2UKICAg
ICAgICAgbV9zdGF0ZSA9IENMT1NFRDsKLSAgICAgICAgdW5zZXRQZW5kaW5nQWN0aXZpdHkoKnRo
aXMpOwotICAgIH0KIH0KIAogYm9vbCBFdmVudFNvdXJjZTo6cmVzcG9uc2VJc1ZhbGlkKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKSBjb25zdApAQCAtMjgwLDE3ICsyNzUsMjEgQEAg
dm9pZCBFdmVudFNvdXJjZTo6YWJvcnRDb25uZWN0aW9uQXR0ZW1wdCgpCiAgICAgQVNTRVJUKG1f
c3RhdGUgPT0gQ09OTkVDVElORyk7CiAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9J
TVBMSUNBVElPTighbV9pc1N1c3BlbmRlZEZvckJhY2tGb3J3YXJkQ2FjaGUpOwogCisgICAgYXV0
byBwcm90ZWN0ZWRKU1dyYXBwZXIgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKTsKICAgICBp
ZiAobV9yZXF1ZXN0SW5GbGlnaHQpCiAgICAgICAgIGRvRXhwbGljaXRMb2FkQ2FuY2VsbGF0aW9u
KCk7Ci0gICAgZWxzZSB7CisgICAgZWxzZQogICAgICAgICBtX3N0YXRlID0gQ0xPU0VEOwotICAg
ICAgICB1bnNldFBlbmRpbmdBY3Rpdml0eSgqdGhpcyk7Ci0gICAgfQogCiAgICAgQVNTRVJUKG1f
c3RhdGUgPT0gQ0xPU0VEKTsKICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLmVycm9yRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxh
YmxlOjpObykpOwogfQogCitib29sIEV2ZW50U291cmNlOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2
aXR5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdGF0ZSAhPSBDTE9TRUQ7Cit9CisKIHZvaWQg
RXZlbnRTb3VyY2U6OmRvRXhwbGljaXRMb2FkQ2FuY2VsbGF0aW9uKCkKIHsKICAgICBBU1NFUlQo
bV9yZXF1ZXN0SW5GbGlnaHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dFNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCmluZGV4IDE3ZmI1
ZmMxZDM5NzIzNzg2Nzk5NTk4YmZkOGQ2NTg4MzkwNzQ2OGEuLjBmMmYwNDE1NDMxMzIzNTIyM2Nk
ZmZiN2M1YzRjMzY5NGM0ZTkwMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmgKQEAgLTkz
LDYgKzkzLDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1l
KCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pIGZp
bmFsOwogICAgIHZvaWQgcmVzdW1lKCkgZmluYWw7CisgICAgYm9vbCB2aXJ0dWFsSGFzUGVuZGlu
Z0FjdGl2aXR5KCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIGNvbm5lY3QoKTsKICAgICB2b2lk
IG5ldHdvcmtSZXF1ZXN0RW5kZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAppbmRleCAy
YjFhODE2YWJmNjhkMWYyZGY4YmIwNTJlYWFiOWZkNjUwMTNjYzIyLi5iODNhNjY3ZjdhM2YzOWFi
ZmI2ZjFhNmVmMjM0OWRmYzdjODNjZWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCkBA
IC0xMDUsOSArMTA1LDYgQEAgRXhjZXB0aW9uT3I8UmVmPFdvcmtlcj4+IFdvcmtlcjo6Y3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEpTQzo6UnUKIAogICAgIHdvcmtlci0+
bV9zaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kgPSBzaG91bGRCeXBh
c3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3k7CiAKLSAgICAvLyBUaGUgd29ya2VyIGNv
bnRleHQgZG9lcyBub3QgZXhpc3Qgd2hpbGUgbG9hZGluZywgc28gd2UgbXVzdCBlbnN1cmUgdGhh
dCB0aGUgd29ya2VyIG9iamVjdCBpcyBub3QgY29sbGVjdGVkLCBub3IgYXJlIGl0cyBldmVudCBs
aXN0ZW5lcnMuCi0gICAgd29ya2VyLT5zZXRQZW5kaW5nQWN0aXZpdHkod29ya2VyLmdldCgpKTsK
LQogICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3dvcmtlcnMu
aHRtbCNvZmZpY2lhbC1tb21lbnQtb2YtY3JlYXRpb24KICAgICB3b3JrZXItPm1fd29ya2VyQ3Jl
YXRpb25UaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAKQEAgLTE4OSw3ICsxODYsNyBAQCB2
b2lkIFdvcmtlcjo6cmVzdW1lKCkKIAogYm9vbCBXb3JrZXI6OnZpcnR1YWxIYXNQZW5kaW5nQWN0
aXZpdHkoKSBjb25zdAogewotICAgIHJldHVybiBtX2NvbnRleHRQcm94eS5oYXNQZW5kaW5nQWN0
aXZpdHkoKTsKKyAgICByZXR1cm4gbV9jb250ZXh0UHJveHkuaGFzUGVuZGluZ0FjdGl2aXR5KCkg
fHwgbV9zY3JpcHRMb2FkZXI7CiB9CiAKIHZvaWQgV29ya2VyOjpub3RpZnlOZXR3b3JrU3RhdGVD
aGFuZ2UoYm9vbCBpc09uTGluZSkKQEAgLTIwOSw3ICsyMDYsNiBAQCB2b2lkIFdvcmtlcjo6bm90
aWZ5RmluaXNoZWQoKQogewogICAgIGF1dG8gY2xlYXJMb2FkZXIgPSBtYWtlU2NvcGVFeGl0KFt0
aGlzXSB7CiAgICAgICAgIG1fc2NyaXB0TG9hZGVyID0gbnVsbHB0cjsKLSAgICAgICAgdW5zZXRQ
ZW5kaW5nQWN0aXZpdHkoKnRoaXMpOwogICAgIH0pOwogCiAgICAgYXV0byogY29udGV4dCA9IHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430395</attachid>
            <date>2021-06-02 13:22:44 -0700</date>
            <delta_ts>2021-06-02 14:09:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226544-20210602132243.patch</filename>
            <type>text/plain</type>
            <size>14307</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MzY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGVmNjRhZDhiYTc3Yjk2
NTZhZGFhMTJiNzk2MGNjMzBmMmE0MzVmZi4uYzFiYmE2NWVhOGFmODFhNTY3NjJhMmZhMDk2YzU5
MzVhOGFmZDY2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIxLTA2LTAyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCBsZWdhY3kgQWN0aXZl
RE9NT2JqZWN0OjpzZXRQZW5kaW5nQWN0aXZpdHkoKSAvIHVuc2V0UGVuZGluZ0FjdGl2aXR5KCkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjU0NAor
CisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIERyb3AgbGVnYWN5
IEFjdGl2ZURPTU9iamVjdDo6c2V0UGVuZGluZ0FjdGl2aXR5KCkgLyB1bnNldFBlbmRpbmdBY3Rp
dml0eSgpLiBUaGV5IGFyZSB0b28gbGVhay1wcm9uZS4gVGhlIG1vZGVybgorICAgICAgICB3YXkg
dG8gZG8gdGhpcyBpcyB0byBlaXRoZXIgb3ZlcnJpZGUgQWN0aXZlRE9NT2JqZWN0Ojp2aXJ0dWFs
SGFzUGVuZGluZ0FjdGl2aXR5KCkgb3IgdXNlCisgICAgICAgIEFjdGl2ZURPTU9iamVjdDo6bWFr
ZVBlbmRpbmdBY3Rpdml0eSgpLgorCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uOjpiZWdpbik6
CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNlc3Npb246OmFib3J0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGxlUGF5U2Vzc2lvbjo6Y29tcGxldGVQYXltZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxlUGF5U2Vzc2lvbjo6ZGlkQ2FuY2VsUGF5bWVudFNlc3Npb24pOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxl
UGF5U2Vzc2lvbjo6c3VzcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNlc3Npb246
OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGVQYXlTZXNzaW9uOjpkaWRSZWFjaEZpbmFsU3RhdGUpOiBEZWxldGVkLgorICAgICAgICAqIE1v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXNvdXJjZS9NZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6
YWRkZWRUb1JlZ2lzdHJ5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpyZW1vdmVk
RnJvbVJlZ2lzdHJ5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjp2aXJ0dWFsSGFz
UGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL01l
ZGlhU291cmNlLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpS
VENEYXRhQ2hhbm5lbDo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5oOgorICAgICAgICAqIGRvbS9B
Y3RpdmVET01PYmplY3QuaDoKKyAgICAgICAgKiBwYWdlL0V2ZW50U291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50U291cmNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRTb3VyY2U6Om5ldHdvcmtSZXF1ZXN0RW5kZWQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRT
b3VyY2U6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50U291cmNlOjphYm9ydENvbm5l
Y3Rpb25BdHRlbXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50U291cmNlOjp2aXJ0dWFsSGFz
UGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0V2ZW50U291cmNlLmg6Cisg
ICAgICAgICogd29ya2Vycy9Xb3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2
aXR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6bm90aWZ5RmluaXNoZWQpOgor
CiAyMDIxLTA2LTAyICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGQgc3VwcG9ydCBmb3IgInJlbGF0aXZlIGNvbG9yIHN5bnRheCIgZm9yIGNvbG9yKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcApp
bmRleCA4ZWRmMmZmOWEzOWQzMjNhMzIwMzk3NzhlYTAwZDg4MGEyMTcxY2Y4Li41ZjIzMjQ4ODlk
ZDYzY2FjZDFkYzM4MjZjNmEwNjFkNTk0NjI1M2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3BwCkBAIC00NDIsOCArNDQyLDYg
QEAgRXhjZXB0aW9uT3I8dm9pZD4gQXBwbGVQYXlTZXNzaW9uOjpiZWdpbihEb2N1bWVudCYgZG9j
dW1lbnQpCiAKICAgICBtX3N0YXRlID0gU3RhdGU6OkFjdGl2ZTsKIAotICAgIHNldFBlbmRpbmdB
Y3Rpdml0eSgqdGhpcyk7Ci0KICAgICByZXR1cm4geyB9OwogfQogCkBAIC00NTUsOCArNDUzLDYg
QEAgRXhjZXB0aW9uT3I8dm9pZD4gQXBwbGVQYXlTZXNzaW9uOjphYm9ydCgpCiAgICAgbV9zdGF0
ZSA9IFN0YXRlOjpBYm9ydGVkOwogICAgIHBheW1lbnRDb29yZGluYXRvcigpLmFib3J0UGF5bWVu
dFNlc3Npb24oKTsKIAotICAgIGRpZFJlYWNoRmluYWxTdGF0ZSgpOwotCiAgICAgcmV0dXJuIHsg
fTsKIH0KIApAQCAtNTQ5LDcgKzU0NSw2IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEFwcGxlUGF5U2Vz
c2lvbjo6Y29tcGxldGVQYXltZW50KEFwcGxlUGF5UGF5bWVudEF1dGhvcml6YXRpb25SCiAgICAg
fQogCiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpDb21wbGV0ZWQ7Ci0gICAgdW5zZXRQZW5kaW5nQWN0
aXZpdHkoKnRoaXMpOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTc0Nyw4ICs3NDIsNiBAQCB2
b2lkIEFwcGxlUGF5U2Vzc2lvbjo6ZGlkQ2FuY2VsUGF5bWVudFNlc3Npb24oUGF5bWVudFNlc3Np
b25FcnJvciYmIGVycm9yKQogCiAgICAgYXV0byBldmVudCA9IEFwcGxlUGF5Q2FuY2VsRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkuY2FuY2VsRXZlbnQsIFdURk1vdmUoZXJyb3IpKTsKICAgICBk
aXNwYXRjaEV2ZW50KGV2ZW50LmdldCgpKTsKLQotICAgIGRpZFJlYWNoRmluYWxTdGF0ZSgpOwog
fQogCiBjb25zdCBjaGFyKiBBcHBsZVBheVNlc3Npb246OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBj
b25zdApAQCAtNzg1LDggKzc3OCw2IEBAIHZvaWQgQXBwbGVQYXlTZXNzaW9uOjpzdG9wKCkKIAog
ICAgIG1fc3RhdGUgPSBTdGF0ZTo6QWJvcnRlZDsKICAgICBwYXltZW50Q29vcmRpbmF0b3IoKS5h
Ym9ydFBheW1lbnRTZXNzaW9uKCk7Ci0KLSAgICBkaWRSZWFjaEZpbmFsU3RhdGUoKTsKIH0KIAog
dm9pZCBBcHBsZVBheVNlc3Npb246OnN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbiByZWFzb24p
CkBAIC03OTcsMTEgKzc4OCwxMCBAQCB2b2lkIEFwcGxlUGF5U2Vzc2lvbjo6c3VzcGVuZChSZWFz
b25Gb3JTdXNwZW5zaW9uIHJlYXNvbikKICAgICBpZiAoY2FuU3VzcGVuZFdpdGhvdXRDYW5jZWxp
bmcoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgYXV0byBqc1dyYXBwZXJQcm90ZWN0b3IgPSBt
YWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKTsKICAgICBtX3N0YXRlID0gU3RhdGU6OkNhbmNlbGVk
OwogICAgIHBheW1lbnRDb29yZGluYXRvcigpLmFib3J0UGF5bWVudFNlc3Npb24oKTsKICAgICBx
dWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKnRoaXMsIFRhc2tTb3VyY2U6OlVzZXJJbnRlcmFjdGlv
biwgQXBwbGVQYXlDYW5jZWxFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jYW5jZWxFdmVudCwg
eyB9KSk7Ci0KLSAgICBkaWRSZWFjaEZpbmFsU3RhdGUoKTsKIH0KIAogUGF5bWVudENvb3JkaW5h
dG9yJiBBcHBsZVBheVNlc3Npb246OnBheW1lbnRDb29yZGluYXRvcigpIGNvbnN0CkBAIC0xMDIw
LDEwICsxMDEwLDkgQEAgYm9vbCBBcHBsZVBheVNlc3Npb246OmlzRmluYWxTdGF0ZSgpIGNvbnN0
CiAgICAgfQogfQogCi12b2lkIEFwcGxlUGF5U2Vzc2lvbjo6ZGlkUmVhY2hGaW5hbFN0YXRlKCkK
K2Jvb2wgQXBwbGVQYXlTZXNzaW9uOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QK
IHsKLSAgICBBU1NFUlQoaXNGaW5hbFN0YXRlKCkpOwotICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5
KCp0aGlzKTsKKyAgICByZXR1cm4gbV9zdGF0ZSAhPSBTdGF0ZTo6SWRsZSAmJiAhaXNGaW5hbFN0
YXRlKCk7CiB9CiAKICNpZiBkZWZpbmVkKEFwcGxlUGF5U2Vzc2lvbkFkZGl0aW9uc19kZWZpbml0
aW9ucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vz
c2lvbi5oCmluZGV4IDRhYzg0MGMzMDUwMjYxNzc1YThmMjI0NWIzOWYwNDhjNGQxZGIyYzEuLmUx
NzhiZmFkY2JmMTk5ZjEyMjViYzc5MDRjZDYwYTVlOTIxYjgwMzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uaApAQCAtMTExLDYgKzEx
MSw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlOwogICAgIHZvaWQgc3VzcGVu
ZChSZWFzb25Gb3JTdXNwZW5zaW9uKSBvdmVycmlkZTsKKyAgICBib29sIHZpcnR1YWxIYXNQZW5k
aW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKIAogICAgIC8vIEV2ZW50VGFyZ2V0V2l0aElubGlu
ZURhdGEuCiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBBcHBsZVBheVNlc3Npb25FdmVudFRhcmdldEludGVyZmFj
ZVR5cGU7IH0KQEAgLTE0Niw3ICsxNDcsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgY2FuU3VzcGVu
ZFdpdGhvdXRDYW5jZWxpbmcoKSBjb25zdDsKIAogICAgIGJvb2wgaXNGaW5hbFN0YXRlKCkgY29u
c3Q7Ci0gICAgdm9pZCBkaWRSZWFjaEZpbmFsU3RhdGUoKTsKIAogICAgIGVudW0gY2xhc3MgU3Rh
dGUgewogICAgICAgICBJZGxlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c291cmNlL01lZGlhU291cmNlLmNwcAppbmRleCA0NTkzNWJmOTk4YWFkODE0MDAzNmFhYTgxYzgz
ZTU5Njg5OTE4YzVkLi5hNGM0YjZjNmYzNzFmNjM1NTIyYjFmZWNkMzI2MjJlMzk0MzIyNmFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNl
LmNwcApAQCAtMTU1LDEzICsxNTUsMTQgQEAgdm9pZCBNZWRpYVNvdXJjZTo6c2V0UHJpdmF0ZUFu
ZE9wZW4oUmVmPE1lZGlhU291cmNlUHJpdmF0ZT4mJiBtZWRpYVNvdXJjZVByaXZhdGUKIHZvaWQg
TWVkaWFTb3VyY2U6OmFkZGVkVG9SZWdpc3RyeSgpCiB7CiAgICAgREVCVUdfTE9HKExPR0lERU5U
SUZJRVIpOwotICAgIHNldFBlbmRpbmdBY3Rpdml0eSgqdGhpcyk7CisgICAgKyttX2Fzc29jaWF0
ZWRSZWdpc3RyeUNvdW50OwogfQogCiB2b2lkIE1lZGlhU291cmNlOjpyZW1vdmVkRnJvbVJlZ2lz
dHJ5KCkKIHsKICAgICBERUJVR19MT0coTE9HSURFTlRJRklFUik7Ci0gICAgdW5zZXRQZW5kaW5n
QWN0aXZpdHkoKnRoaXMpOworICAgIEFTU0VSVChtX2Fzc29jaWF0ZWRSZWdpc3RyeUNvdW50KTsK
KyAgICAtLW1fYXNzb2NpYXRlZFJlZ2lzdHJ5Q291bnQ7CiB9CiAKIE1lZGlhVGltZSBNZWRpYVNv
dXJjZTo6ZHVyYXRpb24oKSBjb25zdApAQCAtOTk3LDcgKzk5OCw3IEBAIHZvaWQgTWVkaWFTb3Vy
Y2U6Om9wZW5JZkluRW5kZWRTdGF0ZSgpCiAKIGJvb2wgTWVkaWFTb3VyY2U6OnZpcnR1YWxIYXNQ
ZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogewotICAgIHJldHVybiBtX3ByaXZhdGUgfHwgbV9hc3lu
Y0V2ZW50UXVldWUtPmhhc1BlbmRpbmdBY3Rpdml0eSgpOworICAgIHJldHVybiBtX3ByaXZhdGUg
fHwgbV9hc3luY0V2ZW50UXVldWUtPmhhc1BlbmRpbmdBY3Rpdml0eSgpIHx8IG1fYXNzb2NpYXRl
ZFJlZ2lzdHJ5Q291bnQ7CiB9CiAKIHZvaWQgTWVkaWFTb3VyY2U6OnN0b3AoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oCmluZGV4IDE5MWUw
MDMyYmJhN2Y2MmRmODkwZDY2YzEwOWRhOTYxMTFiNGM5NWMuLmJkNzRjNGM3MTM3YmVhNzc2MzI0
ZDU1YzA1OTc2YWYwZjBjZWE2MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc291cmNlL01lZGlhU291cmNlLmgKQEAgLTE3OSw2ICsxNzksNyBAQCBwcml2YXRlOgogICAg
IFJlZjxjb25zdCBMb2dnZXI+IG1fbG9nZ2VyOwogICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRp
ZmllciB7IG51bGxwdHIgfTsKICNlbmRpZgorICAgIHVpbnQ2NF90IG1fYXNzb2NpYXRlZFJlZ2lz
dHJ5Q291bnQgeyAwIH07CiB9OwogCiBTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmco
TWVkaWFTb3VyY2U6OkVuZE9mU3RyZWFtRXJyb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcAppbmRleCA0YjFhMjg0OWI0
NWU4NTc1MGVmZDcwNTcyNzdiNzUwYWJlOTM2NWQxLi44NmFmY2RiYjc2YzBhMmZmNTJhOGYxNTQz
MGIxMzliZGJmZDYwZDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcApAQCAtNjIsNyArNjIsNiBAQCBSZWY8UlRDRGF0
YUNoYW5uZWw+IFJUQ0RhdGFDaGFubmVsOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgc3RkOgogICAgIEFTU0VSVChoYW5kbGVyKTsKICAgICBhdXRvIGNoYW5uZWwgPSBh
ZG9wdFJlZigqbmV3IFJUQ0RhdGFDaGFubmVsKGNvbnRleHQsIFdURk1vdmUoaGFuZGxlciksIFdU
Rk1vdmUobGFiZWwpLCBXVEZNb3ZlKG9wdGlvbnMpKSk7CiAgICAgY2hhbm5lbC0+c3VzcGVuZElm
TmVlZGVkKCk7Ci0gICAgY2hhbm5lbC0+c2V0UGVuZGluZ0FjdGl2aXR5KGNoYW5uZWwuZ2V0KCkp
OwogICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZShjaGFubmVsLmdldCgpLCBUYXNrU291
cmNlOjpOZXR3b3JraW5nLCBbY2hhbm5lbCA9IGNoYW5uZWwucHRyKCldIHsKICAgICAgICAgaWYg
KCFjaGFubmVsLT5tX2lzRGV0YWNoYWJsZSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE4NCw3
ICsxODMsMTEgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbDo6Y2xvc2UoKQogICAgIGlmIChtX2hhbmRs
ZXIpCiAgICAgICAgIG1faGFuZGxlci0+Y2xvc2UoKTsKICAgICBtX2hhbmRsZXIgPSBudWxscHRy
OwotICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5KCp0aGlzKTsKK30KKworYm9vbCBSVENEYXRhQ2hh
bm5lbDo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFt
X3N0b3BwZWQ7CiB9CiAKIHZvaWQgUlRDRGF0YUNoYW5uZWw6OmRpZENoYW5nZVJlYWR5U3RhdGUo
UlRDRGF0YUNoYW5uZWxTdGF0ZSBuZXdTdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaAppbmRleCA5ZGE3NjU2ODc4NmRhYjI5
ZDY4NDVkMzE3ZThmNGE3MzI1YzczMmYxLi42ZGZjMTA1NjE4ZTQyNmU0MDAxNTc2ZDQyMDVlMDUw
MTc2ZGEwMGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0RhdGFDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbC5oCkBAIC0xMDcsNiArMTA3LDcgQEAgcHJpdmF0ZToKICAgICAvLyBB
Y3RpdmVET01PYmplY3QgQVBJCiAgICAgdm9pZCBzdG9wKCkgZmluYWw7CiAgICAgY29uc3QgY2hh
ciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSVENEYXRhQ2hh
bm5lbCI7IH0KKyAgICBib29sIHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5h
bDsKIAogICAgIC8vIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCBBUEkKICAgICB2b2lkIGRp
ZENoYW5nZVJlYWR5U3RhdGUoUlRDRGF0YUNoYW5uZWxTdGF0ZSkgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vQWN0aXZlRE9NT2JqZWN0LmgKaW5kZXggZTYyNzlhNzIxMTZmNWI4M2QwODRjMDI0YzAxZDVh
MjdkNTQzMjA2NS4uYTY2ZmFmZTZjZGRhZjg0YjM3Y2U5YTZlNmFmMTZkOWIwNjcwZjc0NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaApAQCAtNzQsMjQgKzc0LDYgQEAgcHVibGlj
OgogICAgIC8vIEl0IGNhbiwgaG93ZXZlciwgaGF2ZSBhIHNpZGUgZWZmZWN0IG9mIGRlbGV0aW5n
IGFuIEFjdGl2ZURPTU9iamVjdC4KICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOwogCi0gICAgLy8g
RklYTUU6IERyb3AgdGhpcyBmdW5jdGlvbi4KLSAgICAvLyBDYWxsIHNpdGVzIHNob3VsZCBiZSB1
c2luZyBtYWtlUGVuZGluZ0FjdGl2aXR5KCkgb3Igb3ZlcnJpZGluZyB2aXJ0dWFsSGFzUGVuZGlu
Z0FjdGl2aXR5KCkgaW5zdGVhZC4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIHNldFBl
bmRpbmdBY3Rpdml0eShUJiB0aGlzT2JqZWN0KQotICAgIHsKLSAgICAgICAgQVNTRVJUKCZ0aGlz
T2JqZWN0ID09IHRoaXMpOwotICAgICAgICB0aGlzT2JqZWN0LnJlZigpOwotICAgICAgICArK21f
cGVuZGluZ0FjdGl2aXR5SW5zdGFuY2VDb3VudDsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogRHJv
cCB0aGlzIGZ1bmN0aW9uLgotICAgIC8vIENhbGwgc2l0ZXMgc2hvdWxkIGJlIHVzaW5nIG1ha2VQ
ZW5kaW5nQWN0aXZpdHkoKSBvciBvdmVycmlkaW5nIHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHko
KSBpbnN0ZWFkLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgdW5zZXRQZW5kaW5nQWN0
aXZpdHkoVCYgdGhpc09iamVjdCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3BlbmRpbmdBY3Rp
dml0eUluc3RhbmNlQ291bnQgPiAwKTsKLSAgICAgICAgLS1tX3BlbmRpbmdBY3Rpdml0eUluc3Rh
bmNlQ291bnQ7Ci0gICAgICAgIHRoaXNPYmplY3QuZGVyZWYoKTsKLSAgICB9Ci0KICAgICB0ZW1w
bGF0ZTxjbGFzcyBUPgogICAgIGNsYXNzIFBlbmRpbmdBY3Rpdml0eSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFBlbmRpbmdBY3Rpdml0eTxUPj4gewogICAgIHB1YmxpYzoKQEAgLTE1MSw3ICsxMzMsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgcXVldWVUYXNrSW5FdmVudExvb3AoVGFza1NvdXJjZSwgRnVu
Y3Rpb248dm9pZCAoKT4mJik7CiAgICAgdm9pZCBxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnRJbnRl
cm5hbChFdmVudFRhcmdldCYsIFRhc2tTb3VyY2UsIFJlZjxFdmVudD4mJik7CiAKLSAgICB1bnNp
Z25lZCBtX3BlbmRpbmdBY3Rpdml0eUluc3RhbmNlQ291bnQgeyAwIH07CisgICAgdWludDY0X3Qg
bV9wZW5kaW5nQWN0aXZpdHlJbnN0YW5jZUNvdW50IHsgMCB9OwogI2lmIEFTU0VSVF9FTkFCTEVE
CiAgICAgYm9vbCBtX3N1c3BlbmRJZk5lZWRlZFdhc0NhbGxlZCB7IGZhbHNlIH07CiAgICAgUmVm
PFRocmVhZD4gbV9jcmVhdGlvblRocmVhZCB7IFRocmVhZDo6Y3VycmVudCgpIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRTb3VyY2UuY3BwCmluZGV4IGZlYTgyMmYzMDFmMDc5N2FjMmFiNTU3MmM4YTc0
NTY0MjdmOGU5ODEuLjBkYWM3ZmYwM2NjODQ2ZDE4OTZhMDg4ZjYyNjMwMjg2MTZiZGZhNjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCkBAIC04MCw3ICs4MCw2IEBAIEV4Y2VwdGlv
bk9yPFJlZjxFdmVudFNvdXJjZT4+IEV2ZW50U291cmNlOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4CiAgICAgfQogCiAgICAgYXV0byBzb3VyY2UgPSBhZG9wdFJlZigqbmV3
IEV2ZW50U291cmNlKGNvbnRleHQsIGZ1bGxVUkwsIGV2ZW50U291cmNlSW5pdCkpOwotICAgIHNv
dXJjZS0+c2V0UGVuZGluZ0FjdGl2aXR5KHNvdXJjZS5nZXQoKSk7CiAgICAgc291cmNlLT5zY2hl
ZHVsZUluaXRpYWxDb25uZWN0KCk7CiAgICAgc291cmNlLT5zdXNwZW5kSWZOZWVkZWQoKTsKICAg
ICByZXR1cm4gc291cmNlOwpAQCAtMTMwLDggKzEyOSw2IEBAIHZvaWQgRXZlbnRTb3VyY2U6Om5l
dHdvcmtSZXF1ZXN0RW5kZWQoKQogCiAgICAgaWYgKG1fc3RhdGUgIT0gQ0xPU0VEKQogICAgICAg
ICBzY2hlZHVsZVJlY29ubmVjdCgpOwotICAgIGVsc2UKLSAgICAgICAgdW5zZXRQZW5kaW5nQWN0
aXZpdHkoKnRoaXMpOwogfQogCiB2b2lkIEV2ZW50U291cmNlOjpzY2hlZHVsZUluaXRpYWxDb25u
ZWN0KCkKQEAgLTE2MywxMCArMTYwLDggQEAgdm9pZCBFdmVudFNvdXJjZTo6Y2xvc2UoKQogCiAg
ICAgaWYgKG1fcmVxdWVzdEluRmxpZ2h0KQogICAgICAgICBkb0V4cGxpY2l0TG9hZENhbmNlbGxh
dGlvbigpOwotICAgIGVsc2UgeworICAgIGVsc2UKICAgICAgICAgbV9zdGF0ZSA9IENMT1NFRDsK
LSAgICAgICAgdW5zZXRQZW5kaW5nQWN0aXZpdHkoKnRoaXMpOwotICAgIH0KIH0KIAogYm9vbCBF
dmVudFNvdXJjZTo6cmVzcG9uc2VJc1ZhbGlkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKSBjb25zdApAQCAtMjgwLDE3ICsyNzUsMjEgQEAgdm9pZCBFdmVudFNvdXJjZTo6YWJvcnRD
b25uZWN0aW9uQXR0ZW1wdCgpCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gQ09OTkVDVElORyk7CiAg
ICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighbV9pc1N1c3BlbmRl
ZEZvckJhY2tGb3J3YXJkQ2FjaGUpOwogCisgICAgYXV0byBqc1dyYXBwZXJQcm90ZWN0b3IgPSBt
YWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKTsKICAgICBpZiAobV9yZXF1ZXN0SW5GbGlnaHQpCiAg
ICAgICAgIGRvRXhwbGljaXRMb2FkQ2FuY2VsbGF0aW9uKCk7Ci0gICAgZWxzZSB7CisgICAgZWxz
ZQogICAgICAgICBtX3N0YXRlID0gQ0xPU0VEOwotICAgICAgICB1bnNldFBlbmRpbmdBY3Rpdml0
eSgqdGhpcyk7Ci0gICAgfQogCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gQ0xPU0VEKTsKICAgICBk
aXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIEV2ZW50
OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogfQogCitib29sIEV2
ZW50U291cmNlOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9zdGF0ZSAhPSBDTE9TRUQ7Cit9CisKIHZvaWQgRXZlbnRTb3VyY2U6OmRvRXhwbGljaXRM
b2FkQ2FuY2VsbGF0aW9uKCkKIHsKICAgICBBU1NFUlQobV9yZXF1ZXN0SW5GbGlnaHQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudFNvdXJjZS5oCmluZGV4IDE3ZmI1ZmMxZDM5NzIzNzg2Nzk5NTk4YmZkOGQ2
NTg4MzkwNzQ2OGEuLjBmMmYwNDE1NDMxMzIzNTIyM2NkZmZiN2M1YzRjMzY5NGM0ZTkwMzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmgKQEAgLTkzLDYgKzkzLDcgQEAgcHJpdmF0ZToKICAg
ICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CiAgICAgdm9p
ZCBzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pIGZpbmFsOwogICAgIHZvaWQgcmVzdW1lKCkg
ZmluYWw7CisgICAgYm9vbCB2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7
CiAKICAgICB2b2lkIGNvbm5lY3QoKTsKICAgICB2b2lkIG5ldHdvcmtSZXF1ZXN0RW5kZWQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAppbmRleCAyYjFhODE2YWJmNjhkMWYyZGY4YmIwNTJl
YWFiOWZkNjUwMTNjYzIyLi5iODNhNjY3ZjdhM2YzOWFiZmI2ZjFhNmVmMjM0OWRmYzdjODNjZWRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCkBAIC0xMDUsOSArMTA1LDYgQEAgRXhjZXB0
aW9uT3I8UmVmPFdvcmtlcj4+IFdvcmtlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIEpTQzo6UnUKIAogICAgIHdvcmtlci0+bV9zaG91bGRCeXBhc3NNYWluV29ybGRD
b250ZW50U2VjdXJpdHlQb2xpY3kgPSBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJp
dHlQb2xpY3k7CiAKLSAgICAvLyBUaGUgd29ya2VyIGNvbnRleHQgZG9lcyBub3QgZXhpc3Qgd2hp
bGUgbG9hZGluZywgc28gd2UgbXVzdCBlbnN1cmUgdGhhdCB0aGUgd29ya2VyIG9iamVjdCBpcyBu
b3QgY29sbGVjdGVkLCBub3IgYXJlIGl0cyBldmVudCBsaXN0ZW5lcnMuCi0gICAgd29ya2VyLT5z
ZXRQZW5kaW5nQWN0aXZpdHkod29ya2VyLmdldCgpKTsKLQogICAgIC8vIGh0dHBzOi8vaHRtbC5z
cGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3dvcmtlcnMuaHRtbCNvZmZpY2lhbC1tb21lbnQtb2Yt
Y3JlYXRpb24KICAgICB3b3JrZXItPm1fd29ya2VyQ3JlYXRpb25UaW1lID0gTW9ub3RvbmljVGlt
ZTo6bm93KCk7CiAKQEAgLTE4OSw3ICsxODYsNyBAQCB2b2lkIFdvcmtlcjo6cmVzdW1lKCkKIAog
Ym9vbCBXb3JrZXI6OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogewotICAgIHJl
dHVybiBtX2NvbnRleHRQcm94eS5oYXNQZW5kaW5nQWN0aXZpdHkoKTsKKyAgICByZXR1cm4gbV9j
b250ZXh0UHJveHkuaGFzUGVuZGluZ0FjdGl2aXR5KCkgfHwgbV9zY3JpcHRMb2FkZXI7CiB9CiAK
IHZvaWQgV29ya2VyOjpub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UoYm9vbCBpc09uTGluZSkKQEAg
LTIwOSw3ICsyMDYsNiBAQCB2b2lkIFdvcmtlcjo6bm90aWZ5RmluaXNoZWQoKQogewogICAgIGF1
dG8gY2xlYXJMb2FkZXIgPSBtYWtlU2NvcGVFeGl0KFt0aGlzXSB7CiAgICAgICAgIG1fc2NyaXB0
TG9hZGVyID0gbnVsbHB0cjsKLSAgICAgICAgdW5zZXRQZW5kaW5nQWN0aXZpdHkoKnRoaXMpOwog
ICAgIH0pOwogCiAgICAgYXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>