<?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>237425</bug_id>
          
          <creation_ts>2022-03-03 06:46:24 -0800</creation_ts>
          <short_desc>[JSC] Improve reuse of known register values on ARMv7</short_desc>
          <delta_ts>2022-03-04 05:18:17 -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>
          
          
          <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="Angelos Oikonomopoulos">angelos</reporter>
          <assigned_to name="Angelos Oikonomopoulos">angelos</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>glore</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
    
    <cc>zan</cc>
    
    <cc>zdobersek</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1847862</commentid>
    <comment_count>0</comment_count>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2022-03-03 06:46:24 -0800</bug_when>
    <thetext>[JSC] Improve reuse of known register values on ARMv7</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847866</commentid>
    <comment_count>1</comment_count>
      <attachid>453731</attachid>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2022-03-03 06:57:43 -0800</bug_when>
    <thetext>Created attachment 453731
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847935</commentid>
    <comment_count>2</comment_count>
      <attachid>453731</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2022-03-03 09:42:24 -0800</bug_when>
    <thetext>Comment on attachment 453731
Patch

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

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:2482
&gt; +    bool absoluteAddressWithinShortOffset(AbsoluteAddress address, CachedTempRegister &amp;cachedRegister, int32_t &amp;offset)

Reference ampersands stick to the left. Maybe this could pack the offset value into a return std::optional&lt;int32_t&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848221</commentid>
    <comment_count>3</comment_count>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2022-03-04 02:49:53 -0800</bug_when>
    <thetext>(In reply to Zan Dobersek from comment #2)
&gt; Comment on attachment 453731 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=453731&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:2482
&gt; &gt; +    bool absoluteAddressWithinShortOffset(AbsoluteAddress address, CachedTempRegister &amp;cachedRegister, int32_t &amp;offset)
&gt; 
&gt; Reference ampersands stick to the left. Maybe this could pack the offset
&gt; value into a return std::optional&lt;int32_t&gt;.

Good point. I was just following the style of CachedTempRegister.value(), but I guess that predates the adoption of C++17 in the source.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848222</commentid>
    <comment_count>4</comment_count>
      <attachid>453826</attachid>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2022-03-04 02:51:01 -0800</bug_when>
    <thetext>Created attachment 453826
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848223</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-04 02:52:56 -0800</bug_when>
    <thetext>Zan Dobersek found in /Volumes/Data/worker/Commit-Queue/build/Source/JavaScriptCore/ChangeLog does not appear to be a valid reviewer according to contributors.json.
/Volumes/Data/worker/Commit-Queue/build/Source/JavaScriptCore/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848226</commentid>
    <comment_count>6</comment_count>
      <attachid>453827</attachid>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2022-03-04 03:02:18 -0800</bug_when>
    <thetext>Created attachment 453827
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848262</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-04 05:17:24 -0800</bug_when>
    <thetext>Committed r290828 (248064@main): &lt;https://commits.webkit.org/248064@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 453827.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848264</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-04 05:18:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/89809204&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453731</attachid>
            <date>2022-03-03 06:57:43 -0800</date>
            <delta_ts>2022-03-04 02:50:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237425-20220303145742.patch</filename>
            <type>text/plain</type>
            <size>15742</size>
            <attacher name="Angelos Oikonomopoulos">angelos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ZGFiNGI3ZmEzMTI3ZTM2YzQ2ZTQ3ZTY3YWNhZGZmNDI2NDRhMzE3Li5kMzcwZjQxMzhiYjRlNWFi
NjdmMjJlMjI0NGMxYTQwYjVjZTdiOTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1OCBAQAorMjAyMi0wMy0wMyAgQW5nZWxvcyBPaWtvbm9tb3BvdWxvcyAgPGFuZ2Vsb3NA
aWdhbGlhLmNvbT4KKworICAgICAgICBbSlNDXSBJbXByb3ZlIHJldXNlIG9mIGtub3duIHJlZ2lz
dGVyIHZhbHVlcyBvbiBBUk12NworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM3NDI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmVkdWNlIHRoZSBnZW5lcmF0ZWQgY29kZSBzaXplIGJ5IGludHJvZHVjaW5n
IGFuZCBwZXJ2YXNpdmVseSB1c2luZworICAgICAgICBzZXR1cEFybUFkZHJlc3MoQWJzb2x1dGVB
ZGRyZXNzIGFkZHJlc3MsIC4uLikuIFRoaXMgZWZmZWN0aXZlbHkKKyAgICAgICAgcmVwbGFjZXMg
c2VxdWVuY2VzIG9mIGUuZy4KKworICAgICAgICAgICAgbW92dyByNiwgY3N0MQorICAgICAgICAg
ICAgbW92dCByNiwgY3N0MgorICAgICAgICAgICAgc3RyZCByMCwgcjEsIFtyNl0KKworICAgICAg
ICB3aXRoCisKKyAgICAgICAgICAgIHN0cmQgcjAsIHIxLCBbcjYsIG9mZnNldF0KKworICAgICAg
ICB3aGVuIGEgY2xvc2UgZW5vdWdoIGFkZHJlc3MgaXMgYWxyZWFkeSBhdmFpbGFibGUgaW4gcjYu
CisKKyAgICAgICAgV2hpbGUgaGVyZSwgY2hhbmdlIHNob3J0X21vdmUgdG8gb25seSBlbWl0IGFu
IGFkZC9zdWIgaWYgdGhpcyByZXN1bHRzIGluIGFuCisgICAgICAgIGFjdHVhbCByZWR1Y3Rpb24g
aW4gY29kZSBzaXplLiBXaGVuIHRoZSBhZGQvc3ViIHdvdWxkIGJlIG5ldXRyYWwsCisgICAgICAg
IHByZWZlciBsb2FkaW5nIGFuIGltbWVkaWF0ZSBhcyB0aGF0IGRvZXNuJ3QgaW50cm9kdWNlIGEg
ZGF0YSBkZXBlbmRlbmN5CisgICAgICAgIGJldHdlZW4gdGhlIGluc3RydWN0aW9ucy4KKworICAg
ICAgICBUaGlzIHJlc3VsdHMgaW4gYSBtZWFzdXJhYmxlIGJ1dCBzbWFsbCAoPCAxJSkgcmVkdWN0
aW9uIGluIHRoZQorICAgICAgICBnZW5lcmF0ZWQgY29kZSBzaXplIG9uIEpTMi4KKworICAgICAg
ICBIYXQgdGlwIHRvIEdlemEgTG9yZSBmb3IgdGhlIHN1Z2dlc3Rpb25zLgorCisgICAgICAgICog
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJBUk12Nzo6YWRkMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3Ojph
ZGQ2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6Om9yOCk6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6Om9yMTYpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTXY3OjpvcjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6
c3ViMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3Ojpsb2FkMzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3Ojpsb2FkOCk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyQVJNdjc6OmxvYWQxNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNdjc6OnN0b3JlMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpzdG9y
ZTgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpzdG9yZTE2KToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6c3RvcmVQYWlyMzIpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpzaG9ydF9tb3ZlKToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJBUk12Nzo6YWRkMzJJbXBsKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk12Nzo6YnJhbmNoOCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OmJyYW5j
aFRlc3QzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OmJyYW5jaFRlc3Q4
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6YnJhbmNoVGVzdDE2KToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6ZmFySnVtcCk6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OmFic29sdXRlQWRkcmVzc1dpdGhpblNob3J0T2Zmc2V0KToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6c2V0dXBBcm1BZGRyZXNzKToKKwog
MjAyMi0wMy0wMSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogYWRkIGEgc3dpdGNoIHRvIGNvbnRyb2wgd2hldGhlciBicmVha3BvaW50
IGV2YWx1YXRpb25zIChjb25kaXRpb24sIGlnbm9yZSBjb3VudCwgYWN0aW9ucykgYXJlIGFsc28g
YWZmZWN0ZWQgYnkgc2NyaXB0IGJsYWNrYm94aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCmluZGV4IGNiYmExYWE5ZGZj
YTk5NTIxODIxM2E2MTYwZTczYTZiMzJiMmQ3ODEuLmE0NzRlMGYwMjQzNmUxMGFmY2JhZWM0Yjgx
NWMyNGJjYzMwZDE5MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCkBAIC01NSw2ICs1NSwxMSBAQCBjbGFzcyBNYWNy
b0Fzc2VtYmxlckFSTXY3IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVy
PiB7CiAgICAgfQogCiBwdWJsaWM6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWFjcm9Bc3NlbWJs
ZXJUeXBlLCB0eXBlbmFtZSBDb25kaXRpb24sIHR5cGVuYW1lIC4uLkFyZ3M+CisgICAgICAgIGZy
aWVuZCB2b2lkIEpTQzo6TWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKE1h
Y3JvQXNzZW1ibGVyVHlwZSYsIENvbmRpdGlvbiwgQXJncy4uLik7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgTWFjcm9Bc3NlbWJsZXJUeXBlLCB0eXBlbmFtZSBDb25kaXRpb24sIHR5cGVuYW1lIC4u
LkFyZ3M+CisgICAgICAgIGZyaWVuZCB2b2lkIEpTQzo6TWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjps
b2FkMTZPbkNvbmRpdGlvbihNYWNyb0Fzc2VtYmxlclR5cGUmLCBDb25kaXRpb24sIEFyZ3MuLi4p
OworCiAjZGVmaW5lIERVTU1ZX1JFR0lTVEVSX1ZBTFVFKGlkLCBuYW1lLCByLCBjcykgMCwKICAg
ICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bUdQUnMgPSBzdGQ6OmluaXRpYWxpemVyX2xp
c3Q8aW50Pih7IEZPUl9FQUNIX0dQX1JFR0lTVEVSKERVTU1ZX1JFR0lTVEVSX1ZBTFVFKSB9KS5z
aXplKCk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1GUFJzID0gc3RkOjppbml0
aWFsaXplcl9saXN0PGludD4oeyBGT1JfRUFDSF9GUF9SRUdJU1RFUihEVU1NWV9SRUdJU1RFUl9W
QUxVRSkgfSkuc2l6ZSgpOwpAQCAtMTg3LDcgKzE5Miw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2
b2lkIGFkZDMyKEFic29sdXRlQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0g
ICAgICAgIGxvYWQzMihzcmMubV9wdHIsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICBsb2Fk
MzIoc2V0dXBBcm1BZGRyZXNzKHNyYyksIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICBhZGQz
MihkYXRhVGVtcFJlZ2lzdGVyLCBkZXN0KTsKICAgICB9CiAKQEAgLTI1Myw5ICsyNTgsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBhZGQ2NChUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3Mg
YWRkcmVzcykKICAgICB7CiAgICAgICAgIFJlZ2lzdGVySUQgc2NyYXRjaCA9IGdldENhY2hlZERh
dGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1t
UHRyKGFkZHJlc3MubV9wdHIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKIAotICAgICAgICBtX2Fz
c2VtYmxlci5sZHIoc2NyYXRjaCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgQVJNVGh1bWJJbW1lZGlh
dGU6Om1ha2VVSW50MTIoMCkpOworICAgICAgICBsb2FkMzIoc2V0dXBBcm1BZGRyZXNzKGFkZHJl
c3MpLCBzY3JhdGNoKTsKICAgICAgICAgQVJNVGh1bWJJbW1lZGlhdGUgYXJtSW1tID0gQVJNVGh1
bWJJbW1lZGlhdGU6Om1ha2VFbmNvZGVkSW1tKGltbS5tX3ZhbHVlKTsKICAgICAgICAgaWYgKGFy
bUltbS5pc1ZhbGlkKCkpCiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGRfUyhzY3JhdGNoLCBz
Y3JhdGNoLCBhcm1JbW0pOwpAQCAtMzc5LDE0ICszODMsMTEgQEAgcHVibGljOgogICAgIHZvaWQg
b3I4KFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAg
ICAgICAgQVJNVGh1bWJJbW1lZGlhdGUgYXJtSW1tID0gQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VF
bmNvZGVkSW1tKGltbS5tX3ZhbHVlKTsKKyAgICAgICAgbG9hZDgoc2V0dXBBcm1BZGRyZXNzKGFk
ZHJlc3MpLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgaWYgKGFybUltbS5pc1ZhbGlkKCkp
IHsKLSAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgYWRkcmVz
c1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgICAgICBsb2FkOChBZGRyZXNzKGFkZHJlc3NUZW1wUmVn
aXN0ZXIpLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLm9ycihk
YXRhVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBhcm1JbW0pOwogICAgICAgICAgICAg
c3RvcmU4KGRhdGFUZW1wUmVnaXN0ZXIsIEFkZHJlc3MoYWRkcmVzc1RlbXBSZWdpc3RlcikpOwog
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3Mu
bV9wdHIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgICAgIGxvYWQ4KEFkZHJlc3Mo
YWRkcmVzc1RlbXBSZWdpc3RlciksIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICAgICAgbW92
ZShpbW0sIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIub3Jy
KGRhdGFUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3NUZW1wUmVnaXN0ZXIp
OwogICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBhZGRyZXNz
VGVtcFJlZ2lzdGVyKTsKQEAgLTM5NywxNCArMzk4LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIG9y
MTYoVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNzIGRlc3QpCiAgICAgewogICAgICAg
ICBBUk1UaHVtYkltbWVkaWF0ZSBhcm1JbW0gPSBBUk1UaHVtYkltbWVkaWF0ZTo6bWFrZUVuY29k
ZWRJbW0oaW1tLm1fdmFsdWUpOworICAgICAgICBsb2FkMTYoc2V0dXBBcm1BZGRyZXNzKGRlc3Qp
LCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgaWYgKGFybUltbS5pc1ZhbGlkKCkpIHsKLSAg
ICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihkZXN0Lm1fcHRyKSwgYWRkcmVzc1RlbXBSZWdp
c3Rlcik7Ci0gICAgICAgICAgICBsb2FkMTYoQWRkcmVzcyhhZGRyZXNzVGVtcFJlZ2lzdGVyKSwg
ZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5vcnIoZGF0YVRlbXBS
ZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgYXJtSW1tKTsKICAgICAgICAgICAgIHN0b3JlMTYo
ZGF0YVRlbXBSZWdpc3RlciwgQWRkcmVzcyhhZGRyZXNzVGVtcFJlZ2lzdGVyKSk7CiAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZGVzdC5tX3B0ciksIGFk
ZHJlc3NUZW1wUmVnaXN0ZXIpOwotICAgICAgICAgICAgbG9hZDE2KEFkZHJlc3MoYWRkcmVzc1Rl
bXBSZWdpc3RlciksIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICAgICAgbW92ZShpbW0sIGFk
ZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIub3JyKGRhdGFUZW1w
UmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAg
ICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGRlc3QubV9wdHIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVy
KTsKQEAgLTQxOSw4ICs0MTcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJ
RCBzcmMsIEFic29sdXRlQWRkcmVzcyBkZXN0KQogICAgIHsKLSAgICAgICAgbW92ZShUcnVzdGVk
SW1tUHRyKGRlc3QubV9wdHIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbG9hZDMy
KEFkZHJlc3MoYWRkcmVzc1RlbXBSZWdpc3RlciksIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAg
ICBsb2FkMzIoc2V0dXBBcm1BZGRyZXNzKGRlc3QpLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAg
ICAgb3IzMihzcmMsIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICBzdG9yZTMyKGRhdGFUZW1w
UmVnaXN0ZXIsIEFkZHJlc3MoYWRkcmVzc1RlbXBSZWdpc3RlcikpOwogICAgIH0KQEAgLTQyOCwx
NCArNDI1LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgQWJz
b2x1dGVBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBBUk1UaHVtYkltbWVkaWF0ZSBh
cm1JbW0gPSBBUk1UaHVtYkltbWVkaWF0ZTo6bWFrZUVuY29kZWRJbW0oaW1tLm1fdmFsdWUpOwor
ICAgICAgICBsb2FkMzIoc2V0dXBBcm1BZGRyZXNzKGFkZHJlc3MpLCBkYXRhVGVtcFJlZ2lzdGVy
KTsKICAgICAgICAgaWYgKGFybUltbS5pc1ZhbGlkKCkpIHsKLSAgICAgICAgICAgIG1vdmUoVHJ1
c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAg
ICAgICBsb2FkMzIoQWRkcmVzcyhhZGRyZXNzVGVtcFJlZ2lzdGVyKSwgZGF0YVRlbXBSZWdpc3Rl
cik7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5vcnIoZGF0YVRlbXBSZWdpc3RlciwgZGF0YVRl
bXBSZWdpc3RlciwgYXJtSW1tKTsKICAgICAgICAgICAgIHN0b3JlMzIoZGF0YVRlbXBSZWdpc3Rl
ciwgQWRkcmVzcyhhZGRyZXNzVGVtcFJlZ2lzdGVyKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIGFkZHJlc3NUZW1wUmVn
aXN0ZXIpOwotICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3MoYWRkcmVzc1RlbXBSZWdpc3Rlciks
IGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICAgICAgbW92ZShpbW0sIGFkZHJlc3NUZW1wUmVn
aXN0ZXIpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIub3JyKGRhdGFUZW1wUmVnaXN0ZXIsIGRh
dGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAgICAgICAgbW92ZShU
cnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKQEAgLTYw
MCw3ICs1OTQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN1YjMyKFRydXN0ZWRJbW0zMiBpbW0s
IEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKLSAgICAgICAgbG9hZDMyKGFkZHJlc3Mu
bV9wdHIsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICBsb2FkMzIoc2V0dXBBcm1BZGRyZXNz
KGFkZHJlc3MpLCBkYXRhVGVtcFJlZ2lzdGVyKTsKIAogICAgICAgICBBUk1UaHVtYkltbWVkaWF0
ZSBhcm1JbW0gPSBBUk1UaHVtYkltbWVkaWF0ZTo6bWFrZVVJbnQxMk9yRW5jb2RlZEltbShpbW0u
bV92YWx1ZSk7CiAgICAgICAgIGlmIChhcm1JbW0uaXNWYWxpZCgpKQpAQCAtODE0LDExICs4MDgs
OSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGxvYWQzMihjb25zdCB2b2lkKiBhZGRyZXNzLCBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcyks
IGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwotICAgICAgICBtX2Fzc2VtYmxlci5sZHIoZGVzdCwgYWRk
cmVzc1RlbXBSZWdpc3RlciwgQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VVSW50MTYoMCkpOwotICAg
ICAgICBjYWNoZWRBZGRyZXNzVGVtcFJlZ2lzdGVyKCkuaW52YWxpZGF0ZSgpOworICAgICAgICBs
b2FkMzIoc2V0dXBBcm1BZGRyZXNzKEFic29sdXRlQWRkcmVzcyhhZGRyZXNzKSksIGRlc3QpOwog
ICAgIH0KLSAgICAKKwogICAgIHZvaWQgYWJvcnRXaXRoUmVhc29uKEFib3J0UmVhc29uIHJlYXNv
bikKICAgICB7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKHJlYXNvbiksIGRhdGFUZW1wUmVn
aXN0ZXIpOwpAQCAtODYxLDE0ICs4NTMsMTIgQEAgcHVibGljOgogCiAgICAgdm9pZCBsb2FkOChj
b25zdCB2b2lkKiBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBtb3Zl
KFRydXN0ZWRJbW1QdHIoYWRkcmVzcyksIGRlc3QpOwotICAgICAgICBsb2FkOChBZGRyZXNzKGRl
c3QpLCBkZXN0KTsKKyAgICAgICAgbG9hZDgoc2V0dXBBcm1BZGRyZXNzKEFic29sdXRlQWRkcmVz
cyhhZGRyZXNzKSwgZGVzdCksIGRlc3QpOwogICAgIH0KIAogICAgIHZvaWQgbG9hZDE2KGNvbnN0
IHZvaWQqIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1vdmUoVHJ1
c3RlZEltbVB0cihhZGRyZXNzKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLmxkcmgoZGVzdCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgQVJNVGh1bWJJbW1lZGlhdGU6
Om1ha2VVSW50MTYoMCkpOworICAgICAgICBsb2FkMTYoc2V0dXBBcm1BZGRyZXNzKEFic29sdXRl
QWRkcmVzcyhhZGRyZXNzKSwgZGVzdCksIGRlc3QpOwogICAgIH0KIAogICAgIHZvaWQgbG9hZDE2
KEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCkBAIC05NzIsOCArOTYyLDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBzdG9yZTMyKFJlZ2lzdGVySUQgc3JjLCBjb25zdCB2b2lkKiBh
ZGRyZXNzKQogICAgIHsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MpLCBhZGRy
ZXNzVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuc3RyKHNyYywgYWRkcmVzc1Rl
bXBSZWdpc3RlciwgQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VVSW50MTYoMCkpOworICAgICAgICBz
dG9yZTMyKHNyYywgc2V0dXBBcm1BZGRyZXNzKEFic29sdXRlQWRkcmVzcyhhZGRyZXNzKSkpOwog
ICAgIH0KIAogICAgIHZvaWQgc3RvcmUzMihUcnVzdGVkSW1tMzIgaW1tLCBjb25zdCB2b2lkKiBh
ZGRyZXNzKQpAQCAtOTk0LDkgKzk4Myw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHN0b3Jl
OChSZWdpc3RlcklEIHNyYywgY29uc3Qgdm9pZCAqYWRkcmVzcykKICAgICB7Ci0gICAgICAgIFJl
Z2lzdGVySUQgc2NyYXRjaCA9IGdldENhY2hlZEFkZHJlc3NUZW1wUmVnaXN0ZXJJREFuZEludmFs
aWRhdGUoKTsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MpLCBzY3JhdGNoKTsK
LSAgICAgICAgc3RvcmU4KHNyYywgQXJtQWRkcmVzcyhzY3JhdGNoLCAwKSk7CisgICAgICAgIHN0
b3JlOChzcmMsIHNldHVwQXJtQWRkcmVzcyhBYnNvbHV0ZUFkZHJlc3MoYWRkcmVzcykpKTsKICAg
ICB9CiAgICAgCiAgICAgdm9pZCBzdG9yZTgoVHJ1c3RlZEltbTMyIGltbSwgY29uc3Qgdm9pZCAq
YWRkcmVzcykKQEAgLTEwMzAsOCArMTAxNyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc3RvcmUx
NihSZWdpc3RlcklEIHNyYywgY29uc3Qgdm9pZCogYWRkcmVzcykKICAgICB7Ci0gICAgICAgIG1v
dmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAg
IG1fYXNzZW1ibGVyLnN0cmgoc3JjLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCBBUk1UaHVtYkltbWVk
aWF0ZTo6bWFrZVVJbnQxMigwKSk7CisgICAgICAgIHN0b3JlMTYoc3JjLCBzZXR1cEFybUFkZHJl
c3MoQWJzb2x1dGVBZGRyZXNzKGFkZHJlc3MpKSk7CiAgICAgfQogCiAgICAgdm9pZCBzdG9yZTE2
KFRydXN0ZWRJbW0zMiBpbW0sIGNvbnN0IHZvaWQqIGFkZHJlc3MpCkBAIC0xMDc5LDggKzEwNjUs
OSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0b3JlUGFpcjMyKFJlZ2lzdGVySUQgc3JjMSwgUmVn
aXN0ZXJJRCBzcmMyLCBjb25zdCB2b2lkKiBhZGRyZXNzKQogICAgIHsKLSAgICAgICAgbW92ZShU
cnVzdGVkSW1tUHRyKGFkZHJlc3MpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgc3Rv
cmVQYWlyMzIoc3JjMSwgc3JjMiwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgIEFybUFk
ZHJlc3MgYXJtQWRkcmVzcyA9IHNldHVwQXJtQWRkcmVzcyhBYnNvbHV0ZUFkZHJlc3MoYWRkcmVz
cykpOworICAgICAgICBBU1NFUlQoYXJtQWRkcmVzcy50eXBlID09IEFybUFkZHJlc3M6Okhhc09m
ZnNldCk7CisgICAgICAgIHN0b3JlUGFpcjMyKHNyYzEsIHNyYzIsIEFkZHJlc3MoYXJtQWRkcmVz
cy5iYXNlLCBhcm1BZGRyZXNzLnUub2Zmc2V0KSk7CiAgICAgfQogCiAgICAgLy8gUG9zc2libHkg
Y2xvYmJlcnMgc3JjLCBidXQgbm90IG9uIHRoaXMgYXJjaGl0ZWN0dXJlLgpAQCAtMTU1OCw3ICsx
NTQ1LDkgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgQVJNVGh1bWJJbW1lZGlhdGUgYXJtSW1tID0gQVJNVGh1bWJJbW1l
ZGlhdGU6Om1ha2VFbmNvZGVkSW1tKHZhbHVlRGVsdGEpOwotICAgICAgICAgICAgaWYgKGFybUlt
bS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgIC8vIE9ubHkgdXNlIGFuIGFkZC9zdWIgaWYgaXQg
cmVzdWx0cyBpbiBhIHNob3J0ZXIgaW5zdHJ1Y3Rpb24sCisgICAgICAgICAgICAvLyBvdGhlcndp
c2Ugd2UgaW50cm9kdWNlIGEgZGF0YSBkZXBlbmRlbmN5IGZvciBubyBnYWluLgorICAgICAgICAg
ICAgaWYgKGFybUltbS5pc1ZhbGlkKCkgJiYgYXJtSW1tLmlzVUludDgoKSkgewogICAgICAgICAg
ICAgICAgIGlmICh2YWx1ZURlbHRhU2F2ZSA+IDApCiAgICAgICAgICAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLmFkZChkZXN0LCBkZXN0LCBhcm1JbW0pOwogICAgICAgICAgICAgICAgIGVsc2UgaWYg
KHZhbHVlRGVsdGFTYXZlIDwgMCkKQEAgLTE3NDgsNyArMTczNyw3IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIGFkZDMySW1wbChUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVz
cywgYm9vbCB1cGRhdGVGbGFncyA9IGZhbHNlKQogICAgIHsKLSAgICAgICAgbG9hZDMyKGFkZHJl
c3MubV9wdHIsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICBsb2FkMzIoc2V0dXBBcm1BZGRy
ZXNzKGFkZHJlc3MpLCBkYXRhVGVtcFJlZ2lzdGVyKTsKIAogICAgICAgICBBUk1UaHVtYkltbWVk
aWF0ZSBhcm1JbW0gPSBBUk1UaHVtYkltbWVkaWF0ZTo6bWFrZUVuY29kZWRJbW0oaW1tLm1fdmFs
dWUpOwogICAgICAgICBpZiAoYXJtSW1tLmlzVmFsaWQoKSkgewpAQCAtMTkwMCw4ICsxODg5LDgg
QEAgcHVibGljOgogICAgIHsKICAgICAgICAgLy8gVXNlIGFkZHJlc3NUZW1wUmVnaXN0ZXIgaW5z
dGVhZCBvZiBkYXRhVGVtcFJlZ2lzdGVyLCBzaW5jZSBicmFuY2gzMiB1c2VzIGRhdGFUZW1wUmVn
aXN0ZXIuCiAgICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDggPSBNYWNyb0Fzc2VtYmxlckhlbHBl
cnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIHJpZ2h0KTsKLSAgICAgICAgbW92ZShU
cnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKLSAgICAg
ICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBB
ZGRyZXNzKGFkZHJlc3NUZW1wUmVnaXN0ZXIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAg
ICAgQXJtQWRkcmVzcyBhcm1BZGRyZXNzID0gc2V0dXBBcm1BZGRyZXNzKGFkZHJlc3MpOworICAg
ICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQs
IGFybUFkZHJlc3MsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4gYnJhbmNo
MzIoY29uZCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgcmlnaHQ4KTsKICAgICB9CiAgICAgCkBAIC0x
OTM2LDggKzE5MjUsNyBAQCBwdWJsaWM6CiAgICAgSnVtcCBicmFuY2hUZXN0MzIoUmVzdWx0Q29u
ZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9
IFRydXN0ZWRJbW0zMigtMSkpCiAgICAgewogICAgICAgICAvLyB1c2UgYWRkcmVzc1RlbXBSZWdp
c3RlciBpbmNhc2UgdGhlIGJyYW5jaFRlc3QzMiB3ZSBjYWxsIHVzZXMgZGF0YVRlbXBSZWdpc3Rl
ci4gOi0vCi0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgYWRkcmVz
c1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgIGxvYWQzMihBZGRyZXNzKGFkZHJlc3NUZW1wUmVnaXN0
ZXIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgbG9hZDMyKHNldHVwQXJtQWRkcmVz
cyhhZGRyZXNzKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgICAgIHJldHVybiBicmFuY2hU
ZXN0MzIoY29uZCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgbWFzayk7CiAgICAgfQogCkBAIC0xOTYz
LDggKzE5NTEsOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICAvLyB1c2UgYWRkcmVzc1RlbXBS
ZWdpc3RlciBpbmNhc2UgdGhlIGJyYW5jaFRlc3QzMiB3ZSBjYWxsIHVzZXMgZGF0YVRlbXBSZWdp
c3Rlci4gOi0vCiAgICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOCA9IE1hY3JvQXNzZW1ibGVySGVs
cGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbWFzayk7Ci0gICAgICAgIG1vdmUo
VHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAg
ICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwg
QWRkcmVzcyhhZGRyZXNzVGVtcFJlZ2lzdGVyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAg
ICAgIEFybUFkZHJlc3MgYXJtQWRkcmVzcyA9IHNldHVwQXJtQWRkcmVzcyhhZGRyZXNzKTsKKyAg
ICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25k
LCBhcm1BZGRyZXNzLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJuIGJyYW5j
aFRlc3QzMihjb25kLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCBtYXNrOCk7CiAgICAgfQogCkBAIC0x
OTkwLDggKzE5NzgsOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICAvLyB1c2UgYWRkcmVzc1Rl
bXBSZWdpc3RlciBpbmNhc2UgdGhlIGJyYW5jaFRlc3QzMiB3ZSBjYWxsIHVzZXMgZGF0YVRlbXBS
ZWdpc3Rlci4gOi0vCiAgICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrMTYgPSBNYWNyb0Fzc2VtYmxl
ckhlbHBlcnM6Om1hc2sxNk9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBtYXNrKTsKLSAgICAgICAg
bW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsK
LSAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkMTZPbkNvbmRpdGlvbigqdGhpcywg
Y29uZCwgQWRkcmVzcyhhZGRyZXNzVGVtcFJlZ2lzdGVyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7
CisgICAgICAgIEFybUFkZHJlc3MgYXJtQWRkcmVzcyA9IHNldHVwQXJtQWRkcmVzcyhhZGRyZXNz
KTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkMTZPbkNvbmRpdGlvbigqdGhp
cywgY29uZCwgYXJtQWRkcmVzcywgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgICAgIHJldHVy
biBicmFuY2hUZXN0MzIoY29uZCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgbWFzazE2KTsKICAgICB9
CiAKQEAgLTIwMjAsOCArMjAwOCw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGZhckp1bXAo
QWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIFB0clRhZykKICAgICB7Ci0gICAgICAgIG1vdmUoVHJ1
c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAg
IGxvYWQzMihBZGRyZXNzKGFkZHJlc3NUZW1wUmVnaXN0ZXIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVy
KTsKKyAgICAgICAgbG9hZDMyKHNldHVwQXJtQWRkcmVzcyhhZGRyZXNzKSwgYWRkcmVzc1RlbXBS
ZWdpc3Rlcik7CiAgICAgICAgIGNhY2hlZERhdGFUZW1wUmVnaXN0ZXIoKS5pbnZhbGlkYXRlKCk7
CiAgICAgICAgIG1fYXNzZW1ibGVyLmJ4KGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgIH0KQEAg
LTI0OTIsNiArMjQ3OSwyOSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBBcm1BZGRyZXNz
KGFkZHJlc3MuYmFzZSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgfQogCisgICAgYm9vbCBh
YnNvbHV0ZUFkZHJlc3NXaXRoaW5TaG9ydE9mZnNldChBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywg
Q2FjaGVkVGVtcFJlZ2lzdGVyICZjYWNoZWRSZWdpc3RlciwgaW50MzJfdCAmb2Zmc2V0KQorICAg
IHsKKyAgICAgICAgaW50cHRyX3QgYWRkcmVzc0FzSW50ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50
cHRyX3Q+KGFkZHJlc3MubV9wdHIpOworICAgICAgICBpbnRwdHJfdCBjdXJyZW50UmVnaXN0ZXJD
b250ZW50czsKKyAgICAgICAgaWYgKGNhY2hlZFJlZ2lzdGVyLnZhbHVlKGN1cnJlbnRSZWdpc3Rl
ckNvbnRlbnRzKSkgeworICAgICAgICAgICAgaW50cHRyX3QgYWRkcmVzc0RlbHRhID0gYWRkcmVz
c0FzSW50IC0gY3VycmVudFJlZ2lzdGVyQ29udGVudHM7CisgICAgICAgICAgICBvZmZzZXQgPSBh
ZGRyZXNzRGVsdGE7CisgICAgICAgICAgICByZXR1cm4gKGFkZHJlc3NEZWx0YSA+PSAtMHhmZikg
JiYgKGFkZHJlc3NEZWx0YSA8PSAweGZmZik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIEFybUFkZHJlc3Mgc2V0dXBBcm1BZGRyZXNzKEFic29sdXRlQWRk
cmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHNjcmF0Y2ggPSBhZGRyZXNzVGVtcFJlZ2lzdGVyKQor
ICAgIHsKKyAgICAgICAgaW50MzJfdCBvZmZzZXQ7CisgICAgICAgIGlmIChhYnNvbHV0ZUFkZHJl
c3NXaXRoaW5TaG9ydE9mZnNldChhZGRyZXNzLCBjYWNoZWRBZGRyZXNzVGVtcFJlZ2lzdGVyKCks
IG9mZnNldCkpCisgICAgICAgICAgICByZXR1cm4gQXJtQWRkcmVzcyhhZGRyZXNzVGVtcFJlZ2lz
dGVyLCBvZmZzZXQpOworICAgICAgICBpZiAoYWJzb2x1dGVBZGRyZXNzV2l0aGluU2hvcnRPZmZz
ZXQoYWRkcmVzcywgY2FjaGVkRGF0YVRlbXBSZWdpc3RlcigpLCBvZmZzZXQpKQorICAgICAgICAg
ICAgcmV0dXJuIEFybUFkZHJlc3MoZGF0YVRlbXBSZWdpc3Rlciwgb2Zmc2V0KTsKKyAgICAgICAg
bW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoKTsKKyAgICAgICAgcmV0
dXJuIEFybUFkZHJlc3Moc2NyYXRjaCk7CisgICAgfQorCiAgICAgUmVnaXN0ZXJJRCBtYWtlQmFz
ZUluZGV4QmFzZShCYXNlSW5kZXggYWRkcmVzcykKICAgICB7CiAgICAgICAgIGlmICghYWRkcmVz
cy5vZmZzZXQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453826</attachid>
            <date>2022-03-04 02:51:01 -0800</date>
            <delta_ts>2022-03-04 03:02:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237425-20220304105100.patch</filename>
            <type>text/plain</type>
            <size>15754</size>
            <attacher name="Angelos Oikonomopoulos">angelos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ZGFiNGI3ZmEzMTI3ZTM2YzQ2ZTQ3ZTY3YWNhZGZmNDI2NDRhMzE3Li4yMzI1YTYwYWU5MDU5ODE1
Mjc0ZjQ4NTYyNzYzNjIyNmZiMTQ0ZWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1OCBAQAorMjAyMi0wMy0wMyAgQW5nZWxvcyBPaWtvbm9tb3BvdWxvcyAgPGFuZ2Vsb3NA
aWdhbGlhLmNvbT4KKworICAgICAgICBbSlNDXSBJbXByb3ZlIHJldXNlIG9mIGtub3duIHJlZ2lz
dGVyIHZhbHVlcyBvbiBBUk12NworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM3NDI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWmFuIERvYmVyc2VrLgor
CisgICAgICAgIFJlZHVjZSB0aGUgZ2VuZXJhdGVkIGNvZGUgc2l6ZSBieSBpbnRyb2R1Y2luZyBh
bmQgcGVydmFzaXZlbHkgdXNpbmcKKyAgICAgICAgc2V0dXBBcm1BZGRyZXNzKEFic29sdXRlQWRk
cmVzcyBhZGRyZXNzLCAuLi4pLiBUaGlzIGVmZmVjdGl2ZWx5CisgICAgICAgIHJlcGxhY2VzIHNl
cXVlbmNlcyBvZiBlLmcuCisKKyAgICAgICAgICAgIG1vdncgcjYsIGNzdDEKKyAgICAgICAgICAg
IG1vdnQgcjYsIGNzdDIKKyAgICAgICAgICAgIHN0cmQgcjAsIHIxLCBbcjZdCisKKyAgICAgICAg
d2l0aAorCisgICAgICAgICAgICBzdHJkIHIwLCByMSwgW3I2LCBvZmZzZXRdCisKKyAgICAgICAg
d2hlbiBhIGNsb3NlIGVub3VnaCBhZGRyZXNzIGlzIGFscmVhZHkgYXZhaWxhYmxlIGluIHI2Lgor
CisgICAgICAgIFdoaWxlIGhlcmUsIGNoYW5nZSBzaG9ydF9tb3ZlIHRvIG9ubHkgZW1pdCBhbiBh
ZGQvc3ViIGlmIHRoaXMgcmVzdWx0cyBpbiBhbgorICAgICAgICBhY3R1YWwgcmVkdWN0aW9uIGlu
IGNvZGUgc2l6ZS4gV2hlbiB0aGUgYWRkL3N1YiB3b3VsZCBiZSBuZXV0cmFsLAorICAgICAgICBw
cmVmZXIgbG9hZGluZyBhbiBpbW1lZGlhdGUgYXMgdGhhdCBkb2Vzbid0IGludHJvZHVjZSBhIGRh
dGEgZGVwZW5kZW5jeQorICAgICAgICBiZXR3ZWVuIHRoZSBpbnN0cnVjdGlvbnMuCisKKyAgICAg
ICAgVGhpcyByZXN1bHRzIGluIGEgbWVhc3VyYWJsZSBidXQgc21hbGwgKDwgMSUpIHJlZHVjdGlv
biBpbiB0aGUKKyAgICAgICAgZ2VuZXJhdGVkIGNvZGUgc2l6ZSBvbiBKUzIuCisKKyAgICAgICAg
SGF0IHRpcCB0byBHZXphIExvcmUgZm9yIHRoZSBzdWdnZXN0aW9ucy4KKworICAgICAgICAqIGFz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQVJNdjc6OmFkZDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6YWRk
NjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpvcjgpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpvcjE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJBUk12Nzo6b3IzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnN1
YjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6bG9hZDMyKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6bG9hZDgpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlckFSTXY3Ojpsb2FkMTYpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFS
TXY3OjpzdG9yZTMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6c3RvcmU4
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6c3RvcmUxNik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnN0b3JlUGFpcjMyKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJBUk12Nzo6c2hvcnRfbW92ZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyQVJNdjc6OmFkZDMySW1wbCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
djc6OmJyYW5jaDgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpicmFuY2hU
ZXN0MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpicmFuY2hUZXN0OCk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OmJyYW5jaFRlc3QxNik6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OmZhckp1bXApOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlckFSTXY3OjphYnNvbHV0ZUFkZHJlc3NXaXRoaW5TaG9ydE9mZnNldCk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnNldHVwQXJtQWRkcmVzcyk6CisKIDIw
MjItMDMtMDEgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IGFkZCBhIHN3aXRjaCB0byBjb250cm9sIHdoZXRoZXIgYnJlYWtwb2ludCBl
dmFsdWF0aW9ucyAoY29uZGl0aW9uLCBpZ25vcmUgY291bnQsIGFjdGlvbnMpIGFyZSBhbHNvIGFm
ZmVjdGVkIGJ5IHNjcmlwdCBibGFja2JveGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAppbmRleCBjYmJhMWFhOWRmY2E5
OTUyMTgyMTNhNjE2MGU3M2E2YjMyYjJkNzgxLi5mZDQ1NDYzODNkNjI1NWYwNjQzYTk1MTg3NTRh
OTIyMGI2ZWJlMzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQVJNdjcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaApAQCAtNTUsNiArNTUsMTEgQEAgY2xhc3MgTWFjcm9B
c3NlbWJsZXJBUk12NyA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4g
ewogICAgIH0KIAogcHVibGljOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVy
VHlwZSwgdHlwZW5hbWUgQ29uZGl0aW9uLCB0eXBlbmFtZSAuLi5BcmdzPgorICAgICAgICBmcmll
bmQgdm9pZCBKU0M6Ok1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbihNYWNy
b0Fzc2VtYmxlclR5cGUmLCBDb25kaXRpb24sIEFyZ3MuLi4pOworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE1hY3JvQXNzZW1ibGVyVHlwZSwgdHlwZW5hbWUgQ29uZGl0aW9uLCB0eXBlbmFtZSAuLi5B
cmdzPgorICAgICAgICBmcmllbmQgdm9pZCBKU0M6Ok1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9h
ZDE2T25Db25kaXRpb24oTWFjcm9Bc3NlbWJsZXJUeXBlJiwgQ29uZGl0aW9uLCBBcmdzLi4uKTsK
KwogI2RlZmluZSBEVU1NWV9SRUdJU1RFUl9WQUxVRShpZCwgbmFtZSwgciwgY3MpIDAsCiAgICAg
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1HUFJzID0gc3RkOjppbml0aWFsaXplcl9saXN0
PGludD4oeyBGT1JfRUFDSF9HUF9SRUdJU1RFUihEVU1NWV9SRUdJU1RFUl9WQUxVRSkgfSkuc2l6
ZSgpOwogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtRlBScyA9IHN0ZDo6aW5pdGlh
bGl6ZXJfbGlzdDxpbnQ+KHsgRk9SX0VBQ0hfRlBfUkVHSVNURVIoRFVNTVlfUkVHSVNURVJfVkFM
VUUpIH0pLnNpemUoKTsKQEAgLTE4Nyw3ICsxOTIsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9p
ZCBhZGQzMihBYnNvbHV0ZUFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAg
ICAgICBsb2FkMzIoc3JjLm1fcHRyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgbG9hZDMy
KHNldHVwQXJtQWRkcmVzcyhzcmMpLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgYWRkMzIo
ZGF0YVRlbXBSZWdpc3RlciwgZGVzdCk7CiAgICAgfQogCkBAIC0yNTMsOSArMjU4LDggQEAgcHVi
bGljOgogICAgIHZvaWQgYWRkNjQoVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNzIGFk
ZHJlc3MpCiAgICAgewogICAgICAgICBSZWdpc3RlcklEIHNjcmF0Y2ggPSBnZXRDYWNoZWREYXRh
VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7Ci0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0
cihhZGRyZXNzLm1fcHRyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAKLSAgICAgICAgbV9hc3Nl
bWJsZXIubGRyKHNjcmF0Y2gsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIEFSTVRodW1iSW1tZWRpYXRl
OjptYWtlVUludDEyKDApKTsKKyAgICAgICAgbG9hZDMyKHNldHVwQXJtQWRkcmVzcyhhZGRyZXNz
KSwgc2NyYXRjaCk7CiAgICAgICAgIEFSTVRodW1iSW1tZWRpYXRlIGFybUltbSA9IEFSTVRodW1i
SW1tZWRpYXRlOjptYWtlRW5jb2RlZEltbShpbW0ubV92YWx1ZSk7CiAgICAgICAgIGlmIChhcm1J
bW0uaXNWYWxpZCgpKQogICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkX1Moc2NyYXRjaCwgc2Ny
YXRjaCwgYXJtSW1tKTsKQEAgLTM3OSwxNCArMzgzLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIG9y
OChUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAg
ICAgIEFSTVRodW1iSW1tZWRpYXRlIGFybUltbSA9IEFSTVRodW1iSW1tZWRpYXRlOjptYWtlRW5j
b2RlZEltbShpbW0ubV92YWx1ZSk7CisgICAgICAgIGxvYWQ4KHNldHVwQXJtQWRkcmVzcyhhZGRy
ZXNzKSwgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgIGlmIChhcm1JbW0uaXNWYWxpZCgpKSB7
Ci0gICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIGFkZHJlc3NU
ZW1wUmVnaXN0ZXIpOwotICAgICAgICAgICAgbG9hZDgoQWRkcmVzcyhhZGRyZXNzVGVtcFJlZ2lz
dGVyKSwgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5vcnIoZGF0
YVRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgYXJtSW1tKTsKICAgICAgICAgICAgIHN0
b3JlOChkYXRhVGVtcFJlZ2lzdGVyLCBBZGRyZXNzKGFkZHJlc3NUZW1wUmVnaXN0ZXIpKTsKICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1f
cHRyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgICAgICBsb2FkOChBZGRyZXNzKGFk
ZHJlc3NUZW1wUmVnaXN0ZXIpLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgICAgIG1vdmUo
aW1tLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLm9ycihk
YXRhVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsK
ICAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgYWRkcmVzc1Rl
bXBSZWdpc3Rlcik7CkBAIC0zOTcsMTQgKzM5OCwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBvcjE2
KFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBkZXN0KQogICAgIHsKICAgICAgICAg
QVJNVGh1bWJJbW1lZGlhdGUgYXJtSW1tID0gQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VFbmNvZGVk
SW1tKGltbS5tX3ZhbHVlKTsKKyAgICAgICAgbG9hZDE2KHNldHVwQXJtQWRkcmVzcyhkZXN0KSwg
ZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgIGlmIChhcm1JbW0uaXNWYWxpZCgpKSB7Ci0gICAg
ICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZGVzdC5tX3B0ciksIGFkZHJlc3NUZW1wUmVnaXN0
ZXIpOwotICAgICAgICAgICAgbG9hZDE2KEFkZHJlc3MoYWRkcmVzc1RlbXBSZWdpc3RlciksIGRh
dGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIub3JyKGRhdGFUZW1wUmVn
aXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGFybUltbSk7CiAgICAgICAgICAgICBzdG9yZTE2KGRh
dGFUZW1wUmVnaXN0ZXIsIEFkZHJlc3MoYWRkcmVzc1RlbXBSZWdpc3RlcikpOwogICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGRlc3QubV9wdHIpLCBhZGRy
ZXNzVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgICAgIGxvYWQxNihBZGRyZXNzKGFkZHJlc3NUZW1w
UmVnaXN0ZXIpLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgICAgIG1vdmUoaW1tLCBhZGRy
ZXNzVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLm9ycihkYXRhVGVtcFJl
Z2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKICAgICAgICAg
ICAgIG1vdmUoVHJ1c3RlZEltbVB0cihkZXN0Lm1fcHRyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7
CkBAIC00MTksOCArNDE3LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBvcjMyKFJlZ2lzdGVySUQg
c3JjLCBBYnNvbHV0ZUFkZHJlc3MgZGVzdCkKICAgICB7Ci0gICAgICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihkZXN0Lm1fcHRyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgIGxvYWQzMihB
ZGRyZXNzKGFkZHJlc3NUZW1wUmVnaXN0ZXIpLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAg
bG9hZDMyKHNldHVwQXJtQWRkcmVzcyhkZXN0KSwgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAg
IG9yMzIoc3JjLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgc3RvcmUzMihkYXRhVGVtcFJl
Z2lzdGVyLCBBZGRyZXNzKGFkZHJlc3NUZW1wUmVnaXN0ZXIpKTsKICAgICB9CkBAIC00MjgsMTQg
KzQyNSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEFic29s
dXRlQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAgICAgQVJNVGh1bWJJbW1lZGlhdGUgYXJt
SW1tID0gQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VFbmNvZGVkSW1tKGltbS5tX3ZhbHVlKTsKKyAg
ICAgICAgbG9hZDMyKHNldHVwQXJtQWRkcmVzcyhhZGRyZXNzKSwgZGF0YVRlbXBSZWdpc3Rlcik7
CiAgICAgICAgIGlmIChhcm1JbW0uaXNWYWxpZCgpKSB7Ci0gICAgICAgICAgICBtb3ZlKFRydXN0
ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwotICAgICAgICAg
ICAgbG9hZDMyKEFkZHJlc3MoYWRkcmVzc1RlbXBSZWdpc3RlciksIGRhdGFUZW1wUmVnaXN0ZXIp
OwogICAgICAgICAgICAgbV9hc3NlbWJsZXIub3JyKGRhdGFUZW1wUmVnaXN0ZXIsIGRhdGFUZW1w
UmVnaXN0ZXIsIGFybUltbSk7CiAgICAgICAgICAgICBzdG9yZTMyKGRhdGFUZW1wUmVnaXN0ZXIs
IEFkZHJlc3MoYWRkcmVzc1RlbXBSZWdpc3RlcikpOwogICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBhZGRyZXNzVGVtcFJlZ2lz
dGVyKTsKLSAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKGFkZHJlc3NUZW1wUmVnaXN0ZXIpLCBk
YXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgICAgIG1vdmUoaW1tLCBhZGRyZXNzVGVtcFJlZ2lz
dGVyKTsKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLm9ycihkYXRhVGVtcFJlZ2lzdGVyLCBkYXRh
VGVtcFJlZ2lzdGVyLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgICAgIG1vdmUoVHJ1
c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CkBAIC02MDAs
NyArNTk0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzdWIzMihUcnVzdGVkSW1tMzIgaW1tLCBB
YnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKICAgICB7Ci0gICAgICAgIGxvYWQzMihhZGRyZXNzLm1f
cHRyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgbG9hZDMyKHNldHVwQXJtQWRkcmVzcyhh
ZGRyZXNzKSwgZGF0YVRlbXBSZWdpc3Rlcik7CiAKICAgICAgICAgQVJNVGh1bWJJbW1lZGlhdGUg
YXJtSW1tID0gQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VVSW50MTJPckVuY29kZWRJbW0oaW1tLm1f
dmFsdWUpOwogICAgICAgICBpZiAoYXJtSW1tLmlzVmFsaWQoKSkKQEAgLTgxNCwxMSArODA4LDkg
QEAgcHVibGljOgogCiAgICAgdm9pZCBsb2FkMzIoY29uc3Qgdm9pZCogYWRkcmVzcywgUmVnaXN0
ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MpLCBh
ZGRyZXNzVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubGRyKGRlc3QsIGFkZHJl
c3NUZW1wUmVnaXN0ZXIsIEFSTVRodW1iSW1tZWRpYXRlOjptYWtlVUludDE2KDApKTsKLSAgICAg
ICAgY2FjaGVkQWRkcmVzc1RlbXBSZWdpc3RlcigpLmludmFsaWRhdGUoKTsKKyAgICAgICAgbG9h
ZDMyKHNldHVwQXJtQWRkcmVzcyhBYnNvbHV0ZUFkZHJlc3MoYWRkcmVzcykpLCBkZXN0KTsKICAg
ICB9Ci0gICAgCisKICAgICB2b2lkIGFib3J0V2l0aFJlYXNvbihBYm9ydFJlYXNvbiByZWFzb24p
CiAgICAgewogICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihyZWFzb24pLCBkYXRhVGVtcFJlZ2lz
dGVyKTsKQEAgLTg2MSwxNCArODUzLDEyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbG9hZDgoY29u
c3Qgdm9pZCogYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbW92ZShU
cnVzdGVkSW1tUHRyKGFkZHJlc3MpLCBkZXN0KTsKLSAgICAgICAgbG9hZDgoQWRkcmVzcyhkZXN0
KSwgZGVzdCk7CisgICAgICAgIGxvYWQ4KHNldHVwQXJtQWRkcmVzcyhBYnNvbHV0ZUFkZHJlc3Mo
YWRkcmVzcyksIGRlc3QpLCBkZXN0KTsKICAgICB9CiAKICAgICB2b2lkIGxvYWQxNihjb25zdCB2
b2lkKiBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBtb3ZlKFRydXN0
ZWRJbW1QdHIoYWRkcmVzcyksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwotICAgICAgICBtX2Fzc2Vt
Ymxlci5sZHJoKGRlc3QsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIEFSTVRodW1iSW1tZWRpYXRlOjpt
YWtlVUludDE2KDApKTsKKyAgICAgICAgbG9hZDE2KHNldHVwQXJtQWRkcmVzcyhBYnNvbHV0ZUFk
ZHJlc3MoYWRkcmVzcyksIGRlc3QpLCBkZXN0KTsKICAgICB9CiAKICAgICB2b2lkIGxvYWQxNihC
YXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQpAQCAtOTcyLDggKzk2Miw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgc3RvcmUzMihSZWdpc3RlcklEIHNyYywgY29uc3Qgdm9pZCogYWRk
cmVzcykKICAgICB7Ci0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzKSwgYWRkcmVz
c1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnN0cihzcmMsIGFkZHJlc3NUZW1w
UmVnaXN0ZXIsIEFSTVRodW1iSW1tZWRpYXRlOjptYWtlVUludDE2KDApKTsKKyAgICAgICAgc3Rv
cmUzMihzcmMsIHNldHVwQXJtQWRkcmVzcyhBYnNvbHV0ZUFkZHJlc3MoYWRkcmVzcykpKTsKICAg
ICB9CiAKICAgICB2b2lkIHN0b3JlMzIoVHJ1c3RlZEltbTMyIGltbSwgY29uc3Qgdm9pZCogYWRk
cmVzcykKQEAgLTk5NCw5ICs5ODMsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBzdG9yZTgo
UmVnaXN0ZXJJRCBzcmMsIGNvbnN0IHZvaWQgKmFkZHJlc3MpCiAgICAgewotICAgICAgICBSZWdp
c3RlcklEIHNjcmF0Y2ggPSBnZXRDYWNoZWRBZGRyZXNzVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlk
YXRlKCk7Ci0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzKSwgc2NyYXRjaCk7Ci0g
ICAgICAgIHN0b3JlOChzcmMsIEFybUFkZHJlc3Moc2NyYXRjaCwgMCkpOworICAgICAgICBzdG9y
ZTgoc3JjLCBzZXR1cEFybUFkZHJlc3MoQWJzb2x1dGVBZGRyZXNzKGFkZHJlc3MpKSk7CiAgICAg
fQogICAgIAogICAgIHZvaWQgc3RvcmU4KFRydXN0ZWRJbW0zMiBpbW0sIGNvbnN0IHZvaWQgKmFk
ZHJlc3MpCkBAIC0xMDMwLDggKzEwMTcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0b3JlMTYo
UmVnaXN0ZXJJRCBzcmMsIGNvbnN0IHZvaWQqIGFkZHJlc3MpCiAgICAgewotICAgICAgICBtb3Zl
KFRydXN0ZWRJbW1QdHIoYWRkcmVzcyksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwotICAgICAgICBt
X2Fzc2VtYmxlci5zdHJoKHNyYywgYWRkcmVzc1RlbXBSZWdpc3RlciwgQVJNVGh1bWJJbW1lZGlh
dGU6Om1ha2VVSW50MTIoMCkpOworICAgICAgICBzdG9yZTE2KHNyYywgc2V0dXBBcm1BZGRyZXNz
KEFic29sdXRlQWRkcmVzcyhhZGRyZXNzKSkpOwogICAgIH0KIAogICAgIHZvaWQgc3RvcmUxNihU
cnVzdGVkSW1tMzIgaW1tLCBjb25zdCB2b2lkKiBhZGRyZXNzKQpAQCAtMTA3OSw4ICsxMDY1LDkg
QEAgcHVibGljOgogCiAgICAgdm9pZCBzdG9yZVBhaXIzMihSZWdpc3RlcklEIHNyYzEsIFJlZ2lz
dGVySUQgc3JjMiwgY29uc3Qgdm9pZCogYWRkcmVzcykKICAgICB7Ci0gICAgICAgIG1vdmUoVHJ1
c3RlZEltbVB0cihhZGRyZXNzKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgIHN0b3Jl
UGFpcjMyKHNyYzEsIHNyYzIsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICBBcm1BZGRy
ZXNzIGFybUFkZHJlc3MgPSBzZXR1cEFybUFkZHJlc3MoQWJzb2x1dGVBZGRyZXNzKGFkZHJlc3Mp
KTsKKyAgICAgICAgQVNTRVJUKGFybUFkZHJlc3MudHlwZSA9PSBBcm1BZGRyZXNzOjpIYXNPZmZz
ZXQpOworICAgICAgICBzdG9yZVBhaXIzMihzcmMxLCBzcmMyLCBBZGRyZXNzKGFybUFkZHJlc3Mu
YmFzZSwgYXJtQWRkcmVzcy51Lm9mZnNldCkpOwogICAgIH0KIAogICAgIC8vIFBvc3NpYmx5IGNs
b2JiZXJzIHNyYywgYnV0IG5vdCBvbiB0aGlzIGFyY2hpdGVjdHVyZS4KQEAgLTE1NTgsNyArMTU0
NSw5IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIEFSTVRodW1iSW1tZWRpYXRlIGFybUltbSA9IEFSTVRodW1iSW1tZWRp
YXRlOjptYWtlRW5jb2RlZEltbSh2YWx1ZURlbHRhKTsKLSAgICAgICAgICAgIGlmIChhcm1JbW0u
aXNWYWxpZCgpKSB7CisgICAgICAgICAgICAvLyBPbmx5IHVzZSBhbiBhZGQvc3ViIGlmIGl0IHJl
c3VsdHMgaW4gYSBzaG9ydGVyIGluc3RydWN0aW9uLAorICAgICAgICAgICAgLy8gb3RoZXJ3aXNl
IHdlIGludHJvZHVjZSBhIGRhdGEgZGVwZW5kZW5jeSBmb3Igbm8gZ2Fpbi4KKyAgICAgICAgICAg
IGlmIChhcm1JbW0uaXNWYWxpZCgpICYmIGFybUltbS5pc1VJbnQ4KCkpIHsKICAgICAgICAgICAg
ICAgICBpZiAodmFsdWVEZWx0YVNhdmUgPiAwKQogICAgICAgICAgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5hZGQoZGVzdCwgZGVzdCwgYXJtSW1tKTsKICAgICAgICAgICAgICAgICBlbHNlIGlmICh2
YWx1ZURlbHRhU2F2ZSA8IDApCkBAIC0xNzQ4LDcgKzE3MzcsNyBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCBhZGQzMkltcGwoVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3Ms
IGJvb2wgdXBkYXRlRmxhZ3MgPSBmYWxzZSkKICAgICB7Ci0gICAgICAgIGxvYWQzMihhZGRyZXNz
Lm1fcHRyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgbG9hZDMyKHNldHVwQXJtQWRkcmVz
cyhhZGRyZXNzKSwgZGF0YVRlbXBSZWdpc3Rlcik7CiAKICAgICAgICAgQVJNVGh1bWJJbW1lZGlh
dGUgYXJtSW1tID0gQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VFbmNvZGVkSW1tKGltbS5tX3ZhbHVl
KTsKICAgICAgICAgaWYgKGFybUltbS5pc1ZhbGlkKCkpIHsKQEAgLTE5MDAsOCArMTg4OSw4IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgICAgIC8vIFVzZSBhZGRyZXNzVGVtcFJlZ2lzdGVyIGluc3Rl
YWQgb2YgZGF0YVRlbXBSZWdpc3Rlciwgc2luY2UgYnJhbmNoMzIgdXNlcyBkYXRhVGVtcFJlZ2lz
dGVyLgogICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJz
OjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCByaWdodCk7Ci0gICAgICAgIG1vdmUoVHJ1
c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAg
IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgQWRk
cmVzcyhhZGRyZXNzVGVtcFJlZ2lzdGVyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAg
IEFybUFkZHJlc3MgYXJtQWRkcmVzcyA9IHNldHVwQXJtQWRkcmVzcyhhZGRyZXNzKTsKKyAgICAg
ICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBh
cm1BZGRyZXNzLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaDMy
KGNvbmQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIHJpZ2h0OCk7CiAgICAgfQogICAgIApAQCAtMTkz
Niw4ICsxOTI1LDcgQEAgcHVibGljOgogICAgIEp1bXAgYnJhbmNoVGVzdDMyKFJlc3VsdENvbmRp
dGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBU
cnVzdGVkSW1tMzIoLTEpKQogICAgIHsKICAgICAgICAgLy8gdXNlIGFkZHJlc3NUZW1wUmVnaXN0
ZXIgaW5jYXNlIHRoZSBicmFuY2hUZXN0MzIgd2UgY2FsbCB1c2VzIGRhdGFUZW1wUmVnaXN0ZXIu
IDotLwotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIGFkZHJlc3NU
ZW1wUmVnaXN0ZXIpOwotICAgICAgICBsb2FkMzIoQWRkcmVzcyhhZGRyZXNzVGVtcFJlZ2lzdGVy
KSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgIGxvYWQzMihzZXR1cEFybUFkZHJlc3Mo
YWRkcmVzcyksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4gYnJhbmNoVGVz
dDMyKGNvbmQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIG1hc2spOwogICAgIH0KIApAQCAtMTk2Myw4
ICsxOTUxLDggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgLy8gdXNlIGFkZHJlc3NUZW1wUmVn
aXN0ZXIgaW5jYXNlIHRoZSBicmFuY2hUZXN0MzIgd2UgY2FsbCB1c2VzIGRhdGFUZW1wUmVnaXN0
ZXIuIDotLwogICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazggPSBNYWNyb0Fzc2VtYmxlckhlbHBl
cnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIG1hc2spOwotICAgICAgICBtb3ZlKFRy
dXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwotICAgICAg
ICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIEFk
ZHJlc3MoYWRkcmVzc1RlbXBSZWdpc3RlciksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAg
ICBBcm1BZGRyZXNzIGFybUFkZHJlc3MgPSBzZXR1cEFybUFkZHJlc3MoYWRkcmVzcyk7CisgICAg
ICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwg
YXJtQWRkcmVzcywgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgICAgIHJldHVybiBicmFuY2hU
ZXN0MzIoY29uZCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgbWFzazgpOwogICAgIH0KIApAQCAtMTk5
MCw4ICsxOTc4LDggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgLy8gdXNlIGFkZHJlc3NUZW1w
UmVnaXN0ZXIgaW5jYXNlIHRoZSBicmFuY2hUZXN0MzIgd2UgY2FsbCB1c2VzIGRhdGFUZW1wUmVn
aXN0ZXIuIDotLwogICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazE2ID0gTWFjcm9Bc3NlbWJsZXJI
ZWxwZXJzOjptYXNrMTZPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbWFzayk7Ci0gICAgICAgIG1v
dmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0g
ICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDE2T25Db25kaXRpb24oKnRoaXMsIGNv
bmQsIEFkZHJlc3MoYWRkcmVzc1RlbXBSZWdpc3RlciksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwor
ICAgICAgICBBcm1BZGRyZXNzIGFybUFkZHJlc3MgPSBzZXR1cEFybUFkZHJlc3MoYWRkcmVzcyk7
CisgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDE2T25Db25kaXRpb24oKnRoaXMs
IGNvbmQsIGFybUFkZHJlc3MsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4g
YnJhbmNoVGVzdDMyKGNvbmQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIG1hc2sxNik7CiAgICAgfQog
CkBAIC0yMDIwLDggKzIwMDgsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBmYXJKdW1wKEFi
c29sdXRlQWRkcmVzcyBhZGRyZXNzLCBQdHJUYWcpCiAgICAgewotICAgICAgICBtb3ZlKFRydXN0
ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwotICAgICAgICBs
b2FkMzIoQWRkcmVzcyhhZGRyZXNzVGVtcFJlZ2lzdGVyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7
CisgICAgICAgIGxvYWQzMihzZXR1cEFybUFkZHJlc3MoYWRkcmVzcyksIGFkZHJlc3NUZW1wUmVn
aXN0ZXIpOwogICAgICAgICBjYWNoZWREYXRhVGVtcFJlZ2lzdGVyKCkuaW52YWxpZGF0ZSgpOwog
ICAgICAgICBtX2Fzc2VtYmxlci5ieChhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKICAgICB9CkBAIC0y
NDkyLDYgKzI0NzksMjggQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gQXJtQWRkcmVzcyhh
ZGRyZXNzLmJhc2UsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgIH0KIAorICAgIHN0ZDo6b3B0
aW9uYWw8aW50MzJfdD4gYWJzb2x1dGVBZGRyZXNzV2l0aGluU2hvcnRPZmZzZXQoQWJzb2x1dGVB
ZGRyZXNzIGFkZHJlc3MsIENhY2hlZFRlbXBSZWdpc3RlciAmY2FjaGVkUmVnaXN0ZXIpCisgICAg
eworICAgICAgICBpbnRwdHJfdCBhZGRyZXNzQXNJbnQgPSByZWludGVycHJldF9jYXN0PHVpbnRw
dHJfdD4oYWRkcmVzcy5tX3B0cik7CisgICAgICAgIGludHB0cl90IGN1cnJlbnRSZWdpc3RlckNv
bnRlbnRzOworICAgICAgICBpZiAoY2FjaGVkUmVnaXN0ZXIudmFsdWUoY3VycmVudFJlZ2lzdGVy
Q29udGVudHMpKSB7CisgICAgICAgICAgICBpbnRwdHJfdCBhZGRyZXNzRGVsdGEgPSBhZGRyZXNz
QXNJbnQgLSBjdXJyZW50UmVnaXN0ZXJDb250ZW50czsKKyAgICAgICAgICAgIGlmICgoYWRkcmVz
c0RlbHRhID49IC0weGZmKSAmJiAoYWRkcmVzc0RlbHRhIDw9IDB4ZmZmKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxpbnQzMl90PihhZGRyZXNzRGVsdGEpOworICAg
ICAgICB9CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgQXJtQWRkcmVzcyBzZXR1
cEFybUFkZHJlc3MoQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgc2NyYXRjaCA9
IGFkZHJlc3NUZW1wUmVnaXN0ZXIpCisgICAgeworICAgICAgICBpZiAoYXV0byBvZmZzZXQgPSBh
YnNvbHV0ZUFkZHJlc3NXaXRoaW5TaG9ydE9mZnNldChhZGRyZXNzLCBjYWNoZWRBZGRyZXNzVGVt
cFJlZ2lzdGVyKCkpKQorICAgICAgICAgICAgcmV0dXJuIEFybUFkZHJlc3MoYWRkcmVzc1RlbXBS
ZWdpc3RlciwgKm9mZnNldCk7CisgICAgICAgIGlmIChhdXRvIG9mZnNldCA9IGFic29sdXRlQWRk
cmVzc1dpdGhpblNob3J0T2Zmc2V0KGFkZHJlc3MsIGNhY2hlZERhdGFUZW1wUmVnaXN0ZXIoKSkp
CisgICAgICAgICAgICByZXR1cm4gQXJtQWRkcmVzcyhkYXRhVGVtcFJlZ2lzdGVyLCAqb2Zmc2V0
KTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoKTsK
KyAgICAgICAgcmV0dXJuIEFybUFkZHJlc3Moc2NyYXRjaCk7CisgICAgfQorCiAgICAgUmVnaXN0
ZXJJRCBtYWtlQmFzZUluZGV4QmFzZShCYXNlSW5kZXggYWRkcmVzcykKICAgICB7CiAgICAgICAg
IGlmICghYWRkcmVzcy5vZmZzZXQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453827</attachid>
            <date>2022-03-04 03:02:18 -0800</date>
            <delta_ts>2022-03-04 05:17:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237425-20220304110217.patch</filename>
            <type>text/plain</type>
            <size>15756</size>
            <attacher name="Angelos Oikonomopoulos">angelos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ZGFiNGI3ZmEzMTI3ZTM2YzQ2ZTQ3ZTY3YWNhZGZmNDI2NDRhMzE3Li4yOGI0MGY5MmMwZGM2MWZi
MTA0YjlhNTJlNGNhYjRlYzVkZjYyNTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1OCBAQAorMjAyMi0wMy0wMyAgQW5nZWxvcyBPaWtvbm9tb3BvdWxvcyAgPGFuZ2Vsb3NA
aWdhbGlhLmNvbT4KKworICAgICAgICBbSlNDXSBJbXByb3ZlIHJldXNlIG9mIGtub3duIHJlZ2lz
dGVyIHZhbHVlcyBvbiBBUk12NworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM3NDI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgxb1hbiBEb2JlcsWhZWsu
CisKKyAgICAgICAgUmVkdWNlIHRoZSBnZW5lcmF0ZWQgY29kZSBzaXplIGJ5IGludHJvZHVjaW5n
IGFuZCBwZXJ2YXNpdmVseSB1c2luZworICAgICAgICBzZXR1cEFybUFkZHJlc3MoQWJzb2x1dGVB
ZGRyZXNzIGFkZHJlc3MsIC4uLikuIFRoaXMgZWZmZWN0aXZlbHkKKyAgICAgICAgcmVwbGFjZXMg
c2VxdWVuY2VzIG9mIGUuZy4KKworICAgICAgICAgICAgbW92dyByNiwgY3N0MQorICAgICAgICAg
ICAgbW92dCByNiwgY3N0MgorICAgICAgICAgICAgc3RyZCByMCwgcjEsIFtyNl0KKworICAgICAg
ICB3aXRoCisKKyAgICAgICAgICAgIHN0cmQgcjAsIHIxLCBbcjYsIG9mZnNldF0KKworICAgICAg
ICB3aGVuIGEgY2xvc2UgZW5vdWdoIGFkZHJlc3MgaXMgYWxyZWFkeSBhdmFpbGFibGUgaW4gcjYu
CisKKyAgICAgICAgV2hpbGUgaGVyZSwgY2hhbmdlIHNob3J0X21vdmUgdG8gb25seSBlbWl0IGFu
IGFkZC9zdWIgaWYgdGhpcyByZXN1bHRzIGluIGFuCisgICAgICAgIGFjdHVhbCByZWR1Y3Rpb24g
aW4gY29kZSBzaXplLiBXaGVuIHRoZSBhZGQvc3ViIHdvdWxkIGJlIG5ldXRyYWwsCisgICAgICAg
IHByZWZlciBsb2FkaW5nIGFuIGltbWVkaWF0ZSBhcyB0aGF0IGRvZXNuJ3QgaW50cm9kdWNlIGEg
ZGF0YSBkZXBlbmRlbmN5CisgICAgICAgIGJldHdlZW4gdGhlIGluc3RydWN0aW9ucy4KKworICAg
ICAgICBUaGlzIHJlc3VsdHMgaW4gYSBtZWFzdXJhYmxlIGJ1dCBzbWFsbCAoPCAxJSkgcmVkdWN0
aW9uIGluIHRoZQorICAgICAgICBnZW5lcmF0ZWQgY29kZSBzaXplIG9uIEpTMi4KKworICAgICAg
ICBIYXQgdGlwIHRvIEdlemEgTG9yZSBmb3IgdGhlIHN1Z2dlc3Rpb25zLgorCisgICAgICAgICog
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJBUk12Nzo6YWRkMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3Ojph
ZGQ2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6Om9yOCk6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6Om9yMTYpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTXY3OjpvcjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6
c3ViMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3Ojpsb2FkMzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3Ojpsb2FkOCk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyQVJNdjc6OmxvYWQxNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNdjc6OnN0b3JlMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpzdG9y
ZTgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpzdG9yZTE2KToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6c3RvcmVQYWlyMzIpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpzaG9ydF9tb3ZlKToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJBUk12Nzo6YWRkMzJJbXBsKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk12Nzo6YnJhbmNoOCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OmJyYW5j
aFRlc3QzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OmJyYW5jaFRlc3Q4
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6YnJhbmNoVGVzdDE2KToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6ZmFySnVtcCk6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OmFic29sdXRlQWRkcmVzc1dpdGhpblNob3J0T2Zmc2V0KToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6c2V0dXBBcm1BZGRyZXNzKToKKwog
MjAyMi0wMy0wMSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogYWRkIGEgc3dpdGNoIHRvIGNvbnRyb2wgd2hldGhlciBicmVha3BvaW50
IGV2YWx1YXRpb25zIChjb25kaXRpb24sIGlnbm9yZSBjb3VudCwgYWN0aW9ucykgYXJlIGFsc28g
YWZmZWN0ZWQgYnkgc2NyaXB0IGJsYWNrYm94aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCmluZGV4IGNiYmExYWE5ZGZj
YTk5NTIxODIxM2E2MTYwZTczYTZiMzJiMmQ3ODEuLmZkNDU0NjM4M2Q2MjU1ZjA2NDNhOTUxODc1
NGE5MjIwYjZlYmUzMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCkBAIC01NSw2ICs1NSwxMSBAQCBjbGFzcyBNYWNy
b0Fzc2VtYmxlckFSTXY3IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVy
PiB7CiAgICAgfQogCiBwdWJsaWM6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWFjcm9Bc3NlbWJs
ZXJUeXBlLCB0eXBlbmFtZSBDb25kaXRpb24sIHR5cGVuYW1lIC4uLkFyZ3M+CisgICAgICAgIGZy
aWVuZCB2b2lkIEpTQzo6TWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKE1h
Y3JvQXNzZW1ibGVyVHlwZSYsIENvbmRpdGlvbiwgQXJncy4uLik7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgTWFjcm9Bc3NlbWJsZXJUeXBlLCB0eXBlbmFtZSBDb25kaXRpb24sIHR5cGVuYW1lIC4u
LkFyZ3M+CisgICAgICAgIGZyaWVuZCB2b2lkIEpTQzo6TWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjps
b2FkMTZPbkNvbmRpdGlvbihNYWNyb0Fzc2VtYmxlclR5cGUmLCBDb25kaXRpb24sIEFyZ3MuLi4p
OworCiAjZGVmaW5lIERVTU1ZX1JFR0lTVEVSX1ZBTFVFKGlkLCBuYW1lLCByLCBjcykgMCwKICAg
ICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bUdQUnMgPSBzdGQ6OmluaXRpYWxpemVyX2xp
c3Q8aW50Pih7IEZPUl9FQUNIX0dQX1JFR0lTVEVSKERVTU1ZX1JFR0lTVEVSX1ZBTFVFKSB9KS5z
aXplKCk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1GUFJzID0gc3RkOjppbml0
aWFsaXplcl9saXN0PGludD4oeyBGT1JfRUFDSF9GUF9SRUdJU1RFUihEVU1NWV9SRUdJU1RFUl9W
QUxVRSkgfSkuc2l6ZSgpOwpAQCAtMTg3LDcgKzE5Miw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2
b2lkIGFkZDMyKEFic29sdXRlQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0g
ICAgICAgIGxvYWQzMihzcmMubV9wdHIsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICBsb2Fk
MzIoc2V0dXBBcm1BZGRyZXNzKHNyYyksIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICBhZGQz
MihkYXRhVGVtcFJlZ2lzdGVyLCBkZXN0KTsKICAgICB9CiAKQEAgLTI1Myw5ICsyNTgsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBhZGQ2NChUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3Mg
YWRkcmVzcykKICAgICB7CiAgICAgICAgIFJlZ2lzdGVySUQgc2NyYXRjaCA9IGdldENhY2hlZERh
dGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1t
UHRyKGFkZHJlc3MubV9wdHIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKIAotICAgICAgICBtX2Fz
c2VtYmxlci5sZHIoc2NyYXRjaCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgQVJNVGh1bWJJbW1lZGlh
dGU6Om1ha2VVSW50MTIoMCkpOworICAgICAgICBsb2FkMzIoc2V0dXBBcm1BZGRyZXNzKGFkZHJl
c3MpLCBzY3JhdGNoKTsKICAgICAgICAgQVJNVGh1bWJJbW1lZGlhdGUgYXJtSW1tID0gQVJNVGh1
bWJJbW1lZGlhdGU6Om1ha2VFbmNvZGVkSW1tKGltbS5tX3ZhbHVlKTsKICAgICAgICAgaWYgKGFy
bUltbS5pc1ZhbGlkKCkpCiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGRfUyhzY3JhdGNoLCBz
Y3JhdGNoLCBhcm1JbW0pOwpAQCAtMzc5LDE0ICszODMsMTEgQEAgcHVibGljOgogICAgIHZvaWQg
b3I4KFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAg
ICAgICAgQVJNVGh1bWJJbW1lZGlhdGUgYXJtSW1tID0gQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VF
bmNvZGVkSW1tKGltbS5tX3ZhbHVlKTsKKyAgICAgICAgbG9hZDgoc2V0dXBBcm1BZGRyZXNzKGFk
ZHJlc3MpLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgaWYgKGFybUltbS5pc1ZhbGlkKCkp
IHsKLSAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgYWRkcmVz
c1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgICAgICBsb2FkOChBZGRyZXNzKGFkZHJlc3NUZW1wUmVn
aXN0ZXIpLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLm9ycihk
YXRhVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBhcm1JbW0pOwogICAgICAgICAgICAg
c3RvcmU4KGRhdGFUZW1wUmVnaXN0ZXIsIEFkZHJlc3MoYWRkcmVzc1RlbXBSZWdpc3RlcikpOwog
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3Mu
bV9wdHIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgICAgIGxvYWQ4KEFkZHJlc3Mo
YWRkcmVzc1RlbXBSZWdpc3RlciksIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICAgICAgbW92
ZShpbW0sIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIub3Jy
KGRhdGFUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3NUZW1wUmVnaXN0ZXIp
OwogICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBhZGRyZXNz
VGVtcFJlZ2lzdGVyKTsKQEAgLTM5NywxNCArMzk4LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIG9y
MTYoVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNzIGRlc3QpCiAgICAgewogICAgICAg
ICBBUk1UaHVtYkltbWVkaWF0ZSBhcm1JbW0gPSBBUk1UaHVtYkltbWVkaWF0ZTo6bWFrZUVuY29k
ZWRJbW0oaW1tLm1fdmFsdWUpOworICAgICAgICBsb2FkMTYoc2V0dXBBcm1BZGRyZXNzKGRlc3Qp
LCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgaWYgKGFybUltbS5pc1ZhbGlkKCkpIHsKLSAg
ICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihkZXN0Lm1fcHRyKSwgYWRkcmVzc1RlbXBSZWdp
c3Rlcik7Ci0gICAgICAgICAgICBsb2FkMTYoQWRkcmVzcyhhZGRyZXNzVGVtcFJlZ2lzdGVyKSwg
ZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5vcnIoZGF0YVRlbXBS
ZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgYXJtSW1tKTsKICAgICAgICAgICAgIHN0b3JlMTYo
ZGF0YVRlbXBSZWdpc3RlciwgQWRkcmVzcyhhZGRyZXNzVGVtcFJlZ2lzdGVyKSk7CiAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZGVzdC5tX3B0ciksIGFk
ZHJlc3NUZW1wUmVnaXN0ZXIpOwotICAgICAgICAgICAgbG9hZDE2KEFkZHJlc3MoYWRkcmVzc1Rl
bXBSZWdpc3RlciksIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICAgICAgbW92ZShpbW0sIGFk
ZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIub3JyKGRhdGFUZW1w
UmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAg
ICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGRlc3QubV9wdHIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVy
KTsKQEAgLTQxOSw4ICs0MTcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJ
RCBzcmMsIEFic29sdXRlQWRkcmVzcyBkZXN0KQogICAgIHsKLSAgICAgICAgbW92ZShUcnVzdGVk
SW1tUHRyKGRlc3QubV9wdHIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbG9hZDMy
KEFkZHJlc3MoYWRkcmVzc1RlbXBSZWdpc3RlciksIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAg
ICBsb2FkMzIoc2V0dXBBcm1BZGRyZXNzKGRlc3QpLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAg
ICAgb3IzMihzcmMsIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICBzdG9yZTMyKGRhdGFUZW1w
UmVnaXN0ZXIsIEFkZHJlc3MoYWRkcmVzc1RlbXBSZWdpc3RlcikpOwogICAgIH0KQEAgLTQyOCwx
NCArNDI1LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgQWJz
b2x1dGVBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBBUk1UaHVtYkltbWVkaWF0ZSBh
cm1JbW0gPSBBUk1UaHVtYkltbWVkaWF0ZTo6bWFrZUVuY29kZWRJbW0oaW1tLm1fdmFsdWUpOwor
ICAgICAgICBsb2FkMzIoc2V0dXBBcm1BZGRyZXNzKGFkZHJlc3MpLCBkYXRhVGVtcFJlZ2lzdGVy
KTsKICAgICAgICAgaWYgKGFybUltbS5pc1ZhbGlkKCkpIHsKLSAgICAgICAgICAgIG1vdmUoVHJ1
c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAg
ICAgICBsb2FkMzIoQWRkcmVzcyhhZGRyZXNzVGVtcFJlZ2lzdGVyKSwgZGF0YVRlbXBSZWdpc3Rl
cik7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5vcnIoZGF0YVRlbXBSZWdpc3RlciwgZGF0YVRl
bXBSZWdpc3RlciwgYXJtSW1tKTsKICAgICAgICAgICAgIHN0b3JlMzIoZGF0YVRlbXBSZWdpc3Rl
ciwgQWRkcmVzcyhhZGRyZXNzVGVtcFJlZ2lzdGVyKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIGFkZHJlc3NUZW1wUmVn
aXN0ZXIpOwotICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3MoYWRkcmVzc1RlbXBSZWdpc3Rlciks
IGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICAgICAgbW92ZShpbW0sIGFkZHJlc3NUZW1wUmVn
aXN0ZXIpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIub3JyKGRhdGFUZW1wUmVnaXN0ZXIsIGRh
dGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAgICAgICAgbW92ZShU
cnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKQEAgLTYw
MCw3ICs1OTQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN1YjMyKFRydXN0ZWRJbW0zMiBpbW0s
IEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKLSAgICAgICAgbG9hZDMyKGFkZHJlc3Mu
bV9wdHIsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICBsb2FkMzIoc2V0dXBBcm1BZGRyZXNz
KGFkZHJlc3MpLCBkYXRhVGVtcFJlZ2lzdGVyKTsKIAogICAgICAgICBBUk1UaHVtYkltbWVkaWF0
ZSBhcm1JbW0gPSBBUk1UaHVtYkltbWVkaWF0ZTo6bWFrZVVJbnQxMk9yRW5jb2RlZEltbShpbW0u
bV92YWx1ZSk7CiAgICAgICAgIGlmIChhcm1JbW0uaXNWYWxpZCgpKQpAQCAtODE0LDExICs4MDgs
OSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGxvYWQzMihjb25zdCB2b2lkKiBhZGRyZXNzLCBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcyks
IGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwotICAgICAgICBtX2Fzc2VtYmxlci5sZHIoZGVzdCwgYWRk
cmVzc1RlbXBSZWdpc3RlciwgQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VVSW50MTYoMCkpOwotICAg
ICAgICBjYWNoZWRBZGRyZXNzVGVtcFJlZ2lzdGVyKCkuaW52YWxpZGF0ZSgpOworICAgICAgICBs
b2FkMzIoc2V0dXBBcm1BZGRyZXNzKEFic29sdXRlQWRkcmVzcyhhZGRyZXNzKSksIGRlc3QpOwog
ICAgIH0KLSAgICAKKwogICAgIHZvaWQgYWJvcnRXaXRoUmVhc29uKEFib3J0UmVhc29uIHJlYXNv
bikKICAgICB7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKHJlYXNvbiksIGRhdGFUZW1wUmVn
aXN0ZXIpOwpAQCAtODYxLDE0ICs4NTMsMTIgQEAgcHVibGljOgogCiAgICAgdm9pZCBsb2FkOChj
b25zdCB2b2lkKiBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBtb3Zl
KFRydXN0ZWRJbW1QdHIoYWRkcmVzcyksIGRlc3QpOwotICAgICAgICBsb2FkOChBZGRyZXNzKGRl
c3QpLCBkZXN0KTsKKyAgICAgICAgbG9hZDgoc2V0dXBBcm1BZGRyZXNzKEFic29sdXRlQWRkcmVz
cyhhZGRyZXNzKSwgZGVzdCksIGRlc3QpOwogICAgIH0KIAogICAgIHZvaWQgbG9hZDE2KGNvbnN0
IHZvaWQqIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1vdmUoVHJ1
c3RlZEltbVB0cihhZGRyZXNzKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLmxkcmgoZGVzdCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgQVJNVGh1bWJJbW1lZGlhdGU6
Om1ha2VVSW50MTYoMCkpOworICAgICAgICBsb2FkMTYoc2V0dXBBcm1BZGRyZXNzKEFic29sdXRl
QWRkcmVzcyhhZGRyZXNzKSwgZGVzdCksIGRlc3QpOwogICAgIH0KIAogICAgIHZvaWQgbG9hZDE2
KEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCkBAIC05NzIsOCArOTYyLDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBzdG9yZTMyKFJlZ2lzdGVySUQgc3JjLCBjb25zdCB2b2lkKiBh
ZGRyZXNzKQogICAgIHsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MpLCBhZGRy
ZXNzVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuc3RyKHNyYywgYWRkcmVzc1Rl
bXBSZWdpc3RlciwgQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VVSW50MTYoMCkpOworICAgICAgICBz
dG9yZTMyKHNyYywgc2V0dXBBcm1BZGRyZXNzKEFic29sdXRlQWRkcmVzcyhhZGRyZXNzKSkpOwog
ICAgIH0KIAogICAgIHZvaWQgc3RvcmUzMihUcnVzdGVkSW1tMzIgaW1tLCBjb25zdCB2b2lkKiBh
ZGRyZXNzKQpAQCAtOTk0LDkgKzk4Myw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHN0b3Jl
OChSZWdpc3RlcklEIHNyYywgY29uc3Qgdm9pZCAqYWRkcmVzcykKICAgICB7Ci0gICAgICAgIFJl
Z2lzdGVySUQgc2NyYXRjaCA9IGdldENhY2hlZEFkZHJlc3NUZW1wUmVnaXN0ZXJJREFuZEludmFs
aWRhdGUoKTsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MpLCBzY3JhdGNoKTsK
LSAgICAgICAgc3RvcmU4KHNyYywgQXJtQWRkcmVzcyhzY3JhdGNoLCAwKSk7CisgICAgICAgIHN0
b3JlOChzcmMsIHNldHVwQXJtQWRkcmVzcyhBYnNvbHV0ZUFkZHJlc3MoYWRkcmVzcykpKTsKICAg
ICB9CiAgICAgCiAgICAgdm9pZCBzdG9yZTgoVHJ1c3RlZEltbTMyIGltbSwgY29uc3Qgdm9pZCAq
YWRkcmVzcykKQEAgLTEwMzAsOCArMTAxNyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc3RvcmUx
NihSZWdpc3RlcklEIHNyYywgY29uc3Qgdm9pZCogYWRkcmVzcykKICAgICB7Ci0gICAgICAgIG1v
dmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAg
IG1fYXNzZW1ibGVyLnN0cmgoc3JjLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCBBUk1UaHVtYkltbWVk
aWF0ZTo6bWFrZVVJbnQxMigwKSk7CisgICAgICAgIHN0b3JlMTYoc3JjLCBzZXR1cEFybUFkZHJl
c3MoQWJzb2x1dGVBZGRyZXNzKGFkZHJlc3MpKSk7CiAgICAgfQogCiAgICAgdm9pZCBzdG9yZTE2
KFRydXN0ZWRJbW0zMiBpbW0sIGNvbnN0IHZvaWQqIGFkZHJlc3MpCkBAIC0xMDc5LDggKzEwNjUs
OSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0b3JlUGFpcjMyKFJlZ2lzdGVySUQgc3JjMSwgUmVn
aXN0ZXJJRCBzcmMyLCBjb25zdCB2b2lkKiBhZGRyZXNzKQogICAgIHsKLSAgICAgICAgbW92ZShU
cnVzdGVkSW1tUHRyKGFkZHJlc3MpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgc3Rv
cmVQYWlyMzIoc3JjMSwgc3JjMiwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgIEFybUFk
ZHJlc3MgYXJtQWRkcmVzcyA9IHNldHVwQXJtQWRkcmVzcyhBYnNvbHV0ZUFkZHJlc3MoYWRkcmVz
cykpOworICAgICAgICBBU1NFUlQoYXJtQWRkcmVzcy50eXBlID09IEFybUFkZHJlc3M6Okhhc09m
ZnNldCk7CisgICAgICAgIHN0b3JlUGFpcjMyKHNyYzEsIHNyYzIsIEFkZHJlc3MoYXJtQWRkcmVz
cy5iYXNlLCBhcm1BZGRyZXNzLnUub2Zmc2V0KSk7CiAgICAgfQogCiAgICAgLy8gUG9zc2libHkg
Y2xvYmJlcnMgc3JjLCBidXQgbm90IG9uIHRoaXMgYXJjaGl0ZWN0dXJlLgpAQCAtMTU1OCw3ICsx
NTQ1LDkgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgQVJNVGh1bWJJbW1lZGlhdGUgYXJtSW1tID0gQVJNVGh1bWJJbW1l
ZGlhdGU6Om1ha2VFbmNvZGVkSW1tKHZhbHVlRGVsdGEpOwotICAgICAgICAgICAgaWYgKGFybUlt
bS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgIC8vIE9ubHkgdXNlIGFuIGFkZC9zdWIgaWYgaXQg
cmVzdWx0cyBpbiBhIHNob3J0ZXIgaW5zdHJ1Y3Rpb24sCisgICAgICAgICAgICAvLyBvdGhlcndp
c2Ugd2UgaW50cm9kdWNlIGEgZGF0YSBkZXBlbmRlbmN5IGZvciBubyBnYWluLgorICAgICAgICAg
ICAgaWYgKGFybUltbS5pc1ZhbGlkKCkgJiYgYXJtSW1tLmlzVUludDgoKSkgewogICAgICAgICAg
ICAgICAgIGlmICh2YWx1ZURlbHRhU2F2ZSA+IDApCiAgICAgICAgICAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLmFkZChkZXN0LCBkZXN0LCBhcm1JbW0pOwogICAgICAgICAgICAgICAgIGVsc2UgaWYg
KHZhbHVlRGVsdGFTYXZlIDwgMCkKQEAgLTE3NDgsNyArMTczNyw3IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIGFkZDMySW1wbChUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVz
cywgYm9vbCB1cGRhdGVGbGFncyA9IGZhbHNlKQogICAgIHsKLSAgICAgICAgbG9hZDMyKGFkZHJl
c3MubV9wdHIsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICBsb2FkMzIoc2V0dXBBcm1BZGRy
ZXNzKGFkZHJlc3MpLCBkYXRhVGVtcFJlZ2lzdGVyKTsKIAogICAgICAgICBBUk1UaHVtYkltbWVk
aWF0ZSBhcm1JbW0gPSBBUk1UaHVtYkltbWVkaWF0ZTo6bWFrZUVuY29kZWRJbW0oaW1tLm1fdmFs
dWUpOwogICAgICAgICBpZiAoYXJtSW1tLmlzVmFsaWQoKSkgewpAQCAtMTkwMCw4ICsxODg5LDgg
QEAgcHVibGljOgogICAgIHsKICAgICAgICAgLy8gVXNlIGFkZHJlc3NUZW1wUmVnaXN0ZXIgaW5z
dGVhZCBvZiBkYXRhVGVtcFJlZ2lzdGVyLCBzaW5jZSBicmFuY2gzMiB1c2VzIGRhdGFUZW1wUmVn
aXN0ZXIuCiAgICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDggPSBNYWNyb0Fzc2VtYmxlckhlbHBl
cnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIHJpZ2h0KTsKLSAgICAgICAgbW92ZShU
cnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKLSAgICAg
ICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBB
ZGRyZXNzKGFkZHJlc3NUZW1wUmVnaXN0ZXIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAg
ICAgQXJtQWRkcmVzcyBhcm1BZGRyZXNzID0gc2V0dXBBcm1BZGRyZXNzKGFkZHJlc3MpOworICAg
ICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQs
IGFybUFkZHJlc3MsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4gYnJhbmNo
MzIoY29uZCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgcmlnaHQ4KTsKICAgICB9CiAgICAgCkBAIC0x
OTM2LDggKzE5MjUsNyBAQCBwdWJsaWM6CiAgICAgSnVtcCBicmFuY2hUZXN0MzIoUmVzdWx0Q29u
ZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9
IFRydXN0ZWRJbW0zMigtMSkpCiAgICAgewogICAgICAgICAvLyB1c2UgYWRkcmVzc1RlbXBSZWdp
c3RlciBpbmNhc2UgdGhlIGJyYW5jaFRlc3QzMiB3ZSBjYWxsIHVzZXMgZGF0YVRlbXBSZWdpc3Rl
ci4gOi0vCi0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgYWRkcmVz
c1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgIGxvYWQzMihBZGRyZXNzKGFkZHJlc3NUZW1wUmVnaXN0
ZXIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgbG9hZDMyKHNldHVwQXJtQWRkcmVz
cyhhZGRyZXNzKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgICAgIHJldHVybiBicmFuY2hU
ZXN0MzIoY29uZCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgbWFzayk7CiAgICAgfQogCkBAIC0xOTYz
LDggKzE5NTEsOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICAvLyB1c2UgYWRkcmVzc1RlbXBS
ZWdpc3RlciBpbmNhc2UgdGhlIGJyYW5jaFRlc3QzMiB3ZSBjYWxsIHVzZXMgZGF0YVRlbXBSZWdp
c3Rlci4gOi0vCiAgICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOCA9IE1hY3JvQXNzZW1ibGVySGVs
cGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbWFzayk7Ci0gICAgICAgIG1vdmUo
VHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAg
ICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwg
QWRkcmVzcyhhZGRyZXNzVGVtcFJlZ2lzdGVyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAg
ICAgIEFybUFkZHJlc3MgYXJtQWRkcmVzcyA9IHNldHVwQXJtQWRkcmVzcyhhZGRyZXNzKTsKKyAg
ICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25k
LCBhcm1BZGRyZXNzLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJuIGJyYW5j
aFRlc3QzMihjb25kLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCBtYXNrOCk7CiAgICAgfQogCkBAIC0x
OTkwLDggKzE5NzgsOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICAvLyB1c2UgYWRkcmVzc1Rl
bXBSZWdpc3RlciBpbmNhc2UgdGhlIGJyYW5jaFRlc3QzMiB3ZSBjYWxsIHVzZXMgZGF0YVRlbXBS
ZWdpc3Rlci4gOi0vCiAgICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrMTYgPSBNYWNyb0Fzc2VtYmxl
ckhlbHBlcnM6Om1hc2sxNk9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBtYXNrKTsKLSAgICAgICAg
bW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsK
LSAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkMTZPbkNvbmRpdGlvbigqdGhpcywg
Y29uZCwgQWRkcmVzcyhhZGRyZXNzVGVtcFJlZ2lzdGVyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7
CisgICAgICAgIEFybUFkZHJlc3MgYXJtQWRkcmVzcyA9IHNldHVwQXJtQWRkcmVzcyhhZGRyZXNz
KTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkMTZPbkNvbmRpdGlvbigqdGhp
cywgY29uZCwgYXJtQWRkcmVzcywgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgICAgIHJldHVy
biBicmFuY2hUZXN0MzIoY29uZCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgbWFzazE2KTsKICAgICB9
CiAKQEAgLTIwMjAsOCArMjAwOCw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGZhckp1bXAo
QWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIFB0clRhZykKICAgICB7Ci0gICAgICAgIG1vdmUoVHJ1
c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAg
IGxvYWQzMihBZGRyZXNzKGFkZHJlc3NUZW1wUmVnaXN0ZXIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVy
KTsKKyAgICAgICAgbG9hZDMyKHNldHVwQXJtQWRkcmVzcyhhZGRyZXNzKSwgYWRkcmVzc1RlbXBS
ZWdpc3Rlcik7CiAgICAgICAgIGNhY2hlZERhdGFUZW1wUmVnaXN0ZXIoKS5pbnZhbGlkYXRlKCk7
CiAgICAgICAgIG1fYXNzZW1ibGVyLmJ4KGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgIH0KQEAg
LTI0OTIsNiArMjQ3OSwyOCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBBcm1BZGRyZXNz
KGFkZHJlc3MuYmFzZSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgfQogCisgICAgc3RkOjpv
cHRpb25hbDxpbnQzMl90PiBhYnNvbHV0ZUFkZHJlc3NXaXRoaW5TaG9ydE9mZnNldChBYnNvbHV0
ZUFkZHJlc3MgYWRkcmVzcywgQ2FjaGVkVGVtcFJlZ2lzdGVyICZjYWNoZWRSZWdpc3RlcikKKyAg
ICB7CisgICAgICAgIGludHB0cl90IGFkZHJlc3NBc0ludCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dHB0cl90PihhZGRyZXNzLm1fcHRyKTsKKyAgICAgICAgaW50cHRyX3QgY3VycmVudFJlZ2lzdGVy
Q29udGVudHM7CisgICAgICAgIGlmIChjYWNoZWRSZWdpc3Rlci52YWx1ZShjdXJyZW50UmVnaXN0
ZXJDb250ZW50cykpIHsKKyAgICAgICAgICAgIGludHB0cl90IGFkZHJlc3NEZWx0YSA9IGFkZHJl
c3NBc0ludCAtIGN1cnJlbnRSZWdpc3RlckNvbnRlbnRzOworICAgICAgICAgICAgaWYgKChhZGRy
ZXNzRGVsdGEgPj0gLTB4ZmYpICYmIChhZGRyZXNzRGVsdGEgPD0gMHhmZmYpKQorICAgICAgICAg
ICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGludDMyX3Q+KGFkZHJlc3NEZWx0YSk7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBBcm1BZGRyZXNzIHNl
dHVwQXJtQWRkcmVzcyhBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBzY3JhdGNo
ID0gYWRkcmVzc1RlbXBSZWdpc3RlcikKKyAgICB7CisgICAgICAgIGlmIChhdXRvIG9mZnNldCA9
IGFic29sdXRlQWRkcmVzc1dpdGhpblNob3J0T2Zmc2V0KGFkZHJlc3MsIGNhY2hlZEFkZHJlc3NU
ZW1wUmVnaXN0ZXIoKSkpCisgICAgICAgICAgICByZXR1cm4gQXJtQWRkcmVzcyhhZGRyZXNzVGVt
cFJlZ2lzdGVyLCAqb2Zmc2V0KTsKKyAgICAgICAgaWYgKGF1dG8gb2Zmc2V0ID0gYWJzb2x1dGVB
ZGRyZXNzV2l0aGluU2hvcnRPZmZzZXQoYWRkcmVzcywgY2FjaGVkRGF0YVRlbXBSZWdpc3Rlcigp
KSkKKyAgICAgICAgICAgIHJldHVybiBBcm1BZGRyZXNzKGRhdGFUZW1wUmVnaXN0ZXIsICpvZmZz
ZXQpOworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIHNjcmF0Y2gp
OworICAgICAgICByZXR1cm4gQXJtQWRkcmVzcyhzY3JhdGNoKTsKKyAgICB9CisKICAgICBSZWdp
c3RlcklEIG1ha2VCYXNlSW5kZXhCYXNlKEJhc2VJbmRleCBhZGRyZXNzKQogICAgIHsKICAgICAg
ICAgaWYgKCFhZGRyZXNzLm9mZnNldCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>