<?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>216751</bug_id>
          
          <creation_ts>2020-09-20 12:52:22 -0700</creation_ts>
          <short_desc>Next step towards eliminating deprecated legacy positions</short_desc>
          <delta_ts>2020-09-21 13:29:18 -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>HTML Editing</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>changseok</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mifenton</cc>
    
    <cc>pdr</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1690201</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-20 12:52:22 -0700</bug_when>
    <thetext>Next step towards eliminating deprecated legacy positions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690202</commentid>
    <comment_count>1</comment_count>
      <attachid>409242</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-20 12:57:17 -0700</bug_when>
    <thetext>Created attachment 409242
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690229</commentid>
    <comment_count>2</comment_count>
      <attachid>409242</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-09-20 15:08:05 -0700</bug_when>
    <thetext>Comment on attachment 409242
Patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        places, requesting that we mnot using the deprecated legacy position logic. Also

Typo: &quot;we mnot using the deprecated&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690368</commentid>
    <comment_count>3</comment_count>
      <attachid>409242</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-21 11:50:44 -0700</bug_when>
    <thetext>Comment on attachment 409242
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:10
&gt;&gt; +        places, requesting that we mnot using the deprecated legacy position logic. Also
&gt; 
&gt; Typo: &quot;we mnot using the deprecated&quot;

&quot;reflecting that we are not&quot; is what I meant to write!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690483</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-21 13:28:29 -0700</bug_when>
    <thetext>Committed r267363: &lt;https://trac.webkit.org/changeset/267363&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690485</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-21 13:29:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/69323840&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409242</attachid>
            <date>2020-09-20 12:57:17 -0700</date>
            <delta_ts>2020-09-20 15:08:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216751-20200920125716.patch</filename>
            <type>text/plain</type>
            <size>80891</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3MzI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDg2ZjdiZjUxYWZjM2Nl
YzM4ZDNiNjVjZmNhOGIxYjYzY2U5NjE3Yi4uMmQ1OThkMjlkN2IxOTc1OTdjNjY0YWQwZjE3YWEx
YmEyYWVmN2I0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMyBAQAorMjAyMC0wOS0yMCAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTmV4dCBzdGVwIHRvd2FyZHMg
ZWxpbWluYXRpbmcgZGVwcmVjYXRlZCBsZWdhY3kgcG9zaXRpb25zCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTY3NTEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbGltaW5hdGluZyBvdXIgb2xkIGRlcHJl
Y2F0ZWQgbGVnYWN5IGVkaXRpbmcgcG9zaXRpb25zIGlzIHByb2JhYmx5IGEgcmVsYXRpdmVseSBs
b25nCisgICAgICAgIHJvYWQuIFRoaXMgbmV4dCBzdGVwIHN0YXJ0cyB1c2luZyB0aGUgbWFrZUNv
bnRhaW5lck9mZnNldFBvc2l0aW9uIGZ1bmN0aW9uIGluIG1vcmUKKyAgICAgICAgcGxhY2VzLCBy
ZXF1ZXN0aW5nIHRoYXQgd2UgbW5vdCB1c2luZyB0aGUgZGVwcmVjYXRlZCBsZWdhY3kgcG9zaXRp
b24gbG9naWMuIEFsc28KKyAgICAgICAgcmVuYW1lcyBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRp
b24gdG8gbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbi4gVGhlIGhhcmQgcGFydCBvZgorICAg
ICAgICB0aGlzIHByb2plY3Qgd2lsbCBiZSByZW1vdmluZyBjb2RlIHRoYXQgaXMgbm90IGluc2lk
ZSBQb3NpdGlvbiB0aGF0IGRlcGVuZHMgb24gdGhlIG9sZAorICAgICAgICBzdHlsZSBvZiBwb3Np
dGlvbi9vZmZzZXQgcGFpcnMuIEZvciB0aGlzIHBhdGNoLCB0cmllZCB0byBzdGljayB0byBjb252
ZXJ0aW5nIGNhc2VzCisgICAgICAgIHdoZXJlIGl0IHNlZW1zIGNsZWFyIHdlIGRvbid0IGRlcGVu
ZCBvbiB0aGUgbGVnYWN5IGJlaGF2aW9yLiBGbGF3IGluIHRoYXQgaXMgdGhhdCB3ZQorICAgICAg
ICBtaWdodCBzdGlsbCBkZXBlbmQgb24gbGVnYWN5IGJlaGF2aW9yIHdoZXJlIGl0J3MgdW5jb25k
aXRpb25hbGx5IGltcGxlbWVudGVkLCB3aXRob3V0CisgICAgICAgIGNoZWNraW5nIHRoZSBmbGFn
IG9uIHRoZSBtX2lzTGVnYWN5RWRpdGluZ1Bvc2l0aW9uIFBvc2l0aW9uIGNsYXNzOyB0aGF0IHdp
bGwgYmUgYQorICAgICAgICBwcm9ibGVtIGxvbmcgdGVybSwgc2hvdWxkIG5vdCBiZSBpbiB0aGlz
IHBhdGNoLgorCisgICAgICAgICogZG9tL1Bvc2l0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24pOiBEZWxldGVkLgorCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2Fj
aGU6OnZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkFYT2JqZWN0Q2FjaGU6OnJhbmdlTWF0Y2hlc1RleHROZWFyUmFuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6QVhPYmplY3RDYWNoZTo6dmlzaWJsZVBvc2l0aW9uRnJvbUNoYXJhY3Rlck9mZnNldCk6
CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpsb2NhbENhcmV0UmVjdEZvckNoYXJh
Y3Rlck9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjppbmRleEZvckNo
YXJhY3Rlck9mZnNldCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnN0cmluZ0Zv
clJhbmdlIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6bGlua0NsaWNrUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6c2V0U2VsZWN0ZWRUZXh0UmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6c2V0U2VsZWN0ZWRWaXNpYmxlUG9zaXRpb25SYW5nZSBjb25z
dCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJJT1MubW06CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFy
cmF5T2ZUZXh0Rm9yVGV4dE1hcmtlcnM6YXR0cmlidXRlZDpdKToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbToKKyAgICAgICAg
KC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgZG9BWEF0dHJpYnV0ZWRTdHJpbmdGb3JU
ZXh0TWFya2VyUmFuZ2U6c3BlbGxDaGVjazpdKToKKyAgICAgICAgKiBkb20vUG9zaXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246OnByZXZpb3VzIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlBvc2l0aW9uOjpuZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0
aW9uOjpkb3duc3RyZWFtIGNvbnN0KToKKyAgICAgICAgKiBkb20vUG9zaXRpb25JdGVyYXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbkl0ZXJhdG9yOjpvcGVyYXRvciBQb3NpdGlv
biBjb25zdCk6CisgICAgICAgICogZG9tL1JhbmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJh
bmdlOjpleHBhbmQpOgorICAgICAgICAqIGVkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBs
eUF1dG9jb3JyZWN0aW9uQmVmb3JlVHlwaW5nSWZBcHByb3ByaWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpwcm9jZXNzTWFya2Vyc09uVGV4dFRvQmVS
ZXBsYWNlZEJ5UmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXI6OmFwcGx5QWx0ZXJuYXRpdmVUZXh0VG9SYW5nZSk6CisgICAgICAgICogZWRpdGluZy9B
cHBseVN0eWxlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFu
ZDo6YXBwbHlCbG9ja1N0eWxlKToKKyAgICAgICAgKiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21t
YW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFy
YWdyYXBocyk6CisgICAgICAgICogZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OmhhbmRsZUdlbmVyYWxE
ZWxldGUpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojp2aXNpYmxlUG9zaXRpb25Gb3JJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjp2aXNpYmxlUG9z
aXRpb25Gb3JJbmRleFVzaW5nQ2hhcmFjdGVySXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
aXNOb2RlVmlzaWJseUNvbnRhaW5lZFdpdGhpbik6CisgICAgICAgICogZWRpdGluZy9FZGl0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjYW5EZWxldGVSYW5nZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdENvbXBvc2l0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
OjpmaXJzdFJlY3RGb3JSYW5nZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpleHRlbmRTZWxl
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjphZGp1c3RlZFNlbGVjdGlvblJhbmdl
KToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lU2VsZWN0aW9uOjplbGVtZW50UmFuZ2VDb250YWluaW5nQ2FyZXRTZWxlY3Rpb24g
Y29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zZXJ0TGlzdENvbW1hbmQ6OmRvQXBwbHlGb3JTaW5nbGVQYXJhZ3JhcGgp
OgorICAgICAgICAqIGVkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJlZFBvc2l0aW9uOjpwb3NpdGlvbkF0TGVmdEJvdW5kYXJ5T2ZCaURpUnVuIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcmVkUG9zaXRpb246OnBvc2l0aW9uQXRSaWdo
dEJvdW5kYXJ5T2ZCaURpUnVuIGNvbnN0KToKKyAgICAgICAgKiBlZGl0aW5nL1RleHRDaGVja2lu
Z0hlbHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHBhbmRUb1BhcmFncmFwaEJvdW5kYXJ5
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ1BhcmFncmFwaDo6ZXhwYW5kUmFuZ2VU
b05leHRFbmQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmly
c3RNaXNzcGVsbGVkV29yZE9yVW5ncmFtbWF0aWNhbFBocmFzZSBjb25zdCk6CisgICAgICAgICog
ZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVzb2x2ZUNoYXJh
Y3RlclJhbmdlKToKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb246OmxlZnRWaXN1YWxseURpc3RpbmN0Q2FuZGlk
YXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpc2libGVQb3NpdGlvbjo6cmlnaHRWaXN1
YWxseURpc3RpbmN0Q2FuZGlkYXRlIGNvbnN0KToKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVT
ZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbjo6YXBwZW5k
VHJhaWxpbmdXaGl0ZXNwYWNlKToKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVVbml0cy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpwcmV2aW91c1Jvb3RJbmxpbmVCb3hDYW5kaWRhdGVQb3NpdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpuZXh0Um9vdElubGluZUJveENhbmRpZGF0ZVBvc2l0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OnByZXZpb3VzQm91bmRhcnkpOgorICAgICAgICAoV2ViQ29y
ZTo6bmV4dEJvdW5kYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OnN0YXJ0T2ZEb2N1bWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjplbmRPZkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNsb3Nl
c3RXb3JkQm91bmRhcnlGb3JQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjp3b3JkQm91bmRh
cnlGb3JQb3NpdGlvbldpdGhvdXRDcm9zc2luZ0xpbmUpOgorICAgICAgICAqIGVkaXRpbmcvY29j
b2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKEhUTUxDb252ZXJ0ZXI6OkhUTUxDb252ZXJ0
ZXIpOgorICAgICAgICAqIGVkaXRpbmcvaW9zL0VkaXRvcklPUy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvcjo6c2V0VGV4dEFzQ2hpbGRPZkVsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcv
bWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZVByZXNlcnZpbmdWaXN1YWxB
cHBlYXJhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRQcmVzZXJ2ZXNOZXdsaW5lKToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50RnJvbVRleHQpOgorICAgICAgICAqIHBh
Z2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6
Omluc2VydERyb3BwZWRJbWFnZVBsYWNlaG9sZGVyc0F0Q2FyZXQpOgorICAgICAgICAqIHBhZ2Uv
UGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpyZXBsYWNlUmFuZ2VzV2l0aFRleHQp
OgorICAgICAgICAqIHBhZ2UvaW9zL0ZyYW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWU6OmludGVycHJldGF0aW9uc0ZvckN1cnJlbnRSb290IGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9EcmFnSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRm9y
UmFuZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93Ojpwb3NpdGlvbkZvckJveCBjb25zdCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJPYmplY3Q6OmNyZWF0ZVZpc2libGVQb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPYmplY3Q6OmNvbGxlY3RTZWxlY3Rpb25SZWN0c0ludGVybmFsKToKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNl
dFNlbGVjdGlvbldpdGhvdXRWYWxpZGF0aW9uKToKKyAgICAgICAgUmVwbGFjZWQgY2FsbHMgdG8g
Y3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uIHdpdGggY2FsbHMgdG8KKyAgICAgICAgbWFrZURl
cHJlY2F0ZWRMZWdhY3lQb3NpdGlvbiBvciBtYWtlQ29udGFpbmVyT2Zmc2V0UG9zaXRpb24uCisK
IDIwMjAtMDktMjAgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFNl
bGVjdGlvbiBBUEk6IEZ1cnRoZXIgaW1wcm92ZW1lbnRzIHRvIFZpc2libGVTZWxlY3Rpb24sIEZy
YW1lU2VsZWN0aW9uLCBhbmQgRE9NU2VsZWN0aW9uIHRvIHByZXNlcnZlIGFuY2hvciBhbmQgZm9j
dXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggNjY4NjM2N2UyNzUyOWQ2MTQzOTNkZmFiNjcxMDQzMTVmMTJjZWRmYy4u
YmRjZWU2MzU5NWRlYjkxODRhZTUxMmVjOWRiODJkOTBhODdmN2U4ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAyMC0wOS0yMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgTmV4dCBzdGVwIHRvd2FyZHMgZWxpbWluYXRpbmcgZGVwcmVjYXRlZCBsZWdhY3kg
cG9zaXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTY3NTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6c2VsZWN0V2l0aEdlc3R1cmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpleHRlbmRTZWxlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVTZWxl
Y3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjphcHBseUF1dG9jb3JyZWN0aW9uSW50ZXJuYWwpOgorICAgICAgICAoV2ViS2l0Ojpmb2N1c2Vk
RWxlbWVudFBvc2l0aW9uSW5mb3JtYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpkYXRhRGV0ZWN0
b3JMaW5rUG9zaXRpb25JbmZvcm1hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJl
cXVlc3REb2N1bWVudEVkaXRpbmdDb250ZXh0KToKKyAgICAgICAgUmVwbGFjZWQgY2FsbHMgdG8g
Y3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uIHdpdGggY2FsbHMgdG8KKyAgICAgICAgbWFrZURl
cHJlY2F0ZWRMZWdhY3lQb3NpdGlvbiBvciBtYWtlQ29udGFpbmVyT2Zmc2V0UG9zaXRpb24uCisK
IDIwMjAtMDktMjAgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgU29ydCB0aGUgcHJvamVjdCBmaWxlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCmlu
ZGV4IGJmNjAzNDIyODc3NmM2ZGE4NmNjMzFkMTQ4MzM4NDY2ZDBkYTA0YjcuLmMwMGQ1MDVkZWRh
OGJhZGUzYzczMTM1ZTU5YzMxZTA1ZmYwMDQ0OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvaW9zL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0wOS0yMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgTmV4dCBzdGVwIHRvd2FyZHMgZWxpbWluYXRpbmcgZGVwcmVjYXRl
ZCBsZWdhY3kgcG9zaXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTY3NTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbToKKyAgICAg
ICAgKC1bRE9NTm9kZSBzdGFydFBvc2l0aW9uXSk6CisgICAgICAgICgtW0RPTU5vZGUgZW5kUG9z
aXRpb25dKToKKyAgICAgICAgUmVwbGFjZWQgY2FsbHMgdG8gY3JlYXRlTGVnYWN5RWRpdGluZ1Bv
c2l0aW9uIHdpdGggY2FsbHMgdG8KKyAgICAgICAgbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlv
biBvciBtYWtlQ29udGFpbmVyT2Zmc2V0UG9zaXRpb24uCisKIDIwMjAtMDktMDIgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBFQWZmaW5pdHksIFVQU1RS
RUFNLCBET1dOU1RSRUFNLCBTRUxfREVGQVVMVF9BRkZJTklUWSwgYW5kIFZpc2libGVTZWxlY3Rp
b246OnNlbGVjdGlvblR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBkMjY3ZTRj
MDBhYThkMzQ0YmViMzhjNDY0MDkxZDExNDVjZTRjNWY4Li5hMGQxNTRmZGNhYTg1YTliZDA4MDFj
MTI1YjI0NWNjOWFhNmE4ODVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTkgQEAKKzIwMjAtMDktMjAgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisg
ICAgICAgIE5leHQgc3RlcCB0b3dhcmRzIGVsaW1pbmF0aW5nIGRlcHJlY2F0ZWQgbGVnYWN5IHBv
c2l0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE2NzUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tOgorICAgICAgICAoLVtET01Ob2RlIHJhbmdlT2ZD
b250YWluaW5nUGFyYWdyYXBoXSk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAg
ICAgICAgKC1bV2ViRnJhbWUgc3BhY2VGb2xsb3dzV29yZEluUmFuZ2U6XSk6CisgICAgICAgICgt
W1dlYkZyYW1lIGNhcmV0UmVjdEF0Tm9kZTpvZmZzZXQ6YWZmaW5pdHk6XSk6CisgICAgICAgICgt
W1dlYkZyYW1lIGZvY3VzZWROb2RlSGFzQ29udGVudF0pOgorICAgICAgICBSZXBsYWNlZCBjYWxs
cyB0byBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24gd2l0aCBjYWxscyB0bworICAgICAgICBt
YWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uIG9yIG1ha2VDb250YWluZXJPZmZzZXRQb3NpdGlv
bi4KKwogMjAyMC0wOS0xNyAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVtb3ZlIHJ1bnRpbWUgc2V0dGluZyBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIHRoZSBVc2Vy
VGltaW5nIGFuZCBSZXNvdXJjZVRpbWluZyBBUElzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCBiZDZiOTM5MTU2ZWJkNmEyOGEzOGNjMTdl
ZGZmNWUxMGYxYTc3MWY1Li5jYjI0NmYyZjIyMjAwZDUyMjhiMzQxMTNiZGRkN2QwNzA4YjUxOTU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAK
QEAgLTE4MTcsOCArMTgxNyw3IEBAIFZpc2libGVQb3NpdGlvbiBBWE9iamVjdENhY2hlOjp2aXNp
YmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyRGF0YShUZXh0TWFya2VyRGF0YSYKICAgICBpZiAoIWlz
Tm9kZUluVXNlKHRleHRNYXJrZXJEYXRhLm5vZGUpKQogICAgICAgICByZXR1cm4gVmlzaWJsZVBv
c2l0aW9uKCk7CiAgICAgCi0gICAgLy8gRklYTUU6IEFjY2Vzc2FiaWxpdHkgc2hvdWxkIG1ha2Ug
aXQgY2xlYXIgdGhlc2UgYXJlIERPTS1jb21wbGlhbnQgb2Zmc2V0cyBvciBzdG9yZSBQb3NpdGlv
biBvYmplY3RzLgotICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zID0gVmlzaWJsZVBvc2l0
aW9uKGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbih0ZXh0TWFya2VyRGF0YS5ub2RlLCB0ZXh0
TWFya2VyRGF0YS5vZmZzZXQpLCB0ZXh0TWFya2VyRGF0YS5hZmZpbml0eSk7CisgICAgVmlzaWJs
ZVBvc2l0aW9uIHZpc2libGVQb3MgPSBWaXNpYmxlUG9zaXRpb24obWFrZUNvbnRhaW5lck9mZnNl
dFBvc2l0aW9uKHRleHRNYXJrZXJEYXRhLm5vZGUsIHRleHRNYXJrZXJEYXRhLm9mZnNldCksIHRl
eHRNYXJrZXJEYXRhLmFmZmluaXR5KTsKICAgICBQb3NpdGlvbiBkZWVwUG9zID0gdmlzaWJsZVBv
cy5kZWVwRXF1aXZhbGVudCgpOwogICAgIGlmIChkZWVwUG9zLmlzTnVsbCgpKQogICAgICAgICBy
ZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CkBAIC0yMDAyLDggKzIwMDEsOCBAQCBPcHRpb25hbDxT
aW1wbGVSYW5nZT4gQVhPYmplY3RDYWNoZTo6cmFuZ2VNYXRjaGVzVGV4dE5lYXJSYW5nZShjb25z
dCBTaW1wbGVSYW5nZQogewogICAgIC8vIENyZWF0ZSBhIGxhcmdlIGVub3VnaCByYW5nZSBmb3Ig
c2VhcmNoaW5nIHRoZSB0ZXh0IHdpdGhpbi4KICAgICB1bnNpZ25lZCB0ZXh0TGVuZ3RoID0gbWF0
Y2hUZXh0Lmxlbmd0aCgpOwotICAgIGF1dG8gc3RhcnRQb3NpdGlvbiA9IHZpc2libGVQb3NpdGlv
bkZvclBvc2l0aW9uV2l0aE9mZnNldChjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24ob3JpZ2lu
YWxSYW5nZS5zdGFydCksIC10ZXh0TGVuZ3RoKTsKLSAgICBhdXRvIGVuZFBvc2l0aW9uID0gdmlz
aWJsZVBvc2l0aW9uRm9yUG9zaXRpb25XaXRoT2Zmc2V0KGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3Np
dGlvbihvcmlnaW5hbFJhbmdlLnN0YXJ0KSwgMiAqIHRleHRMZW5ndGgpOworICAgIGF1dG8gc3Rh
cnRQb3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbkZvclBvc2l0aW9uV2l0aE9mZnNldChtYWtlQ29u
dGFpbmVyT2Zmc2V0UG9zaXRpb24ob3JpZ2luYWxSYW5nZS5zdGFydCksIC10ZXh0TGVuZ3RoKTsK
KyAgICBhdXRvIGVuZFBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uRm9yUG9zaXRpb25XaXRoT2Zm
c2V0KG1ha2VDb250YWluZXJPZmZzZXRQb3NpdGlvbihvcmlnaW5hbFJhbmdlLnN0YXJ0KSwgMiAq
IHRleHRMZW5ndGgpOwogICAgIGlmIChzdGFydFBvc2l0aW9uLmlzTnVsbCgpKQogICAgICAgICBz
dGFydFBvc2l0aW9uID0gZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKG9yaWdpbmFsUmFuZ2Uu
c3RhcnQuY29udGFpbmVyLnB0cigpKTsKICAgICBpZiAoZW5kUG9zaXRpb24uaXNOdWxsKCkpCkBA
IC0yMzE4LDcgKzIzMTcsNyBAQCBWaXNpYmxlUG9zaXRpb24gQVhPYmplY3RDYWNoZTo6dmlzaWJs
ZVBvc2l0aW9uRnJvbUNoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZQogICAgIGF1dG8gcmFu
Z2UgPSByYW5nZUZvclVub3JkZXJlZENoYXJhY3Rlck9mZnNldHMoY2hhcmFjdGVyT2Zmc2V0LCBj
aGFyYWN0ZXJPZmZzZXQpOwogICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybiB7IH07Ci0g
ICAgcmV0dXJuIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihyYW5nZS0+c3RhcnQpOworICAg
IHJldHVybiBtYWtlQ29udGFpbmVyT2Zmc2V0UG9zaXRpb24ocmFuZ2UtPnN0YXJ0KTsKIH0KIAog
Q2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6OmNoYXJhY3Rlck9mZnNldEZyb21WaXNpYmxl
UG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zKQpAQCAtMjg3MSw3ICsy
ODcwLDcgQEAgTGF5b3V0UmVjdCBBWE9iamVjdENhY2hlOjpsb2NhbENhcmV0UmVjdEZvckNoYXJh
Y3Rlck9mZnNldChSZW5kZXJPYmplY3QqJiByZW5kZXIKICAgICBpZiAoIXJhbmdlKQogICAgICAg
ICByZXR1cm4gSW50UmVjdCgpOwogCi0gICAgYXV0byBbaW5saW5lQm94LCBjYXJldE9mZnNldF0g
PSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24ocmFuZ2UtPnN0YXJ0KS5pbmxpbmVCb3hBbmRP
ZmZzZXQoQWZmaW5pdHk6OkRvd25zdHJlYW0pOworICAgIGF1dG8gW2lubGluZUJveCwgY2FyZXRP
ZmZzZXRdID0gbWFrZUNvbnRhaW5lck9mZnNldFBvc2l0aW9uKHJhbmdlLT5zdGFydCkuaW5saW5l
Qm94QW5kT2Zmc2V0KEFmZmluaXR5OjpEb3duc3RyZWFtKTsKICAgICBpZiAoaW5saW5lQm94KQog
ICAgICAgICByZW5kZXJlciA9ICZpbmxpbmVCb3gtPnJlbmRlcmVyKCk7CiAKQEAgLTMwMDUsNyAr
MzAwNCw3IEBAIGludCBBWE9iamVjdENhY2hlOjppbmRleEZvckNoYXJhY3Rlck9mZnNldChjb25z
dCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNlCiAgICAgYXV0byByYW5nZSA9IHJhbmdl
Rm9yVW5vcmRlcmVkQ2hhcmFjdGVyT2Zmc2V0cyhjaGFyYWN0ZXJPZmZzZXQsIGNoYXJhY3Rlck9m
ZnNldCk7CiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIG9i
ai0+aW5kZXhGb3JWaXNpYmxlUG9zaXRpb24oY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJh
bmdlLT5zdGFydCkpOworICAgIHJldHVybiBvYmotPmluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKG1h
a2VDb250YWluZXJPZmZzZXRQb3NpdGlvbihyYW5nZS0+c3RhcnQpKTsKIH0KIAogY29uc3QgRWxl
bWVudCogQVhPYmplY3RDYWNoZTo6cm9vdEFYRWRpdGFibGVFbGVtZW50KGNvbnN0IE5vZGUqIG5v
ZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcAppbmRleCA1ODVjNzY3MDYwNGZkMWYzZGNmYjZmNTgwZTBmZDM1YTJhYWQ0MDE1
Li5kYzg1NjY2N2E1MmI5NmI5MjAxZjI2NmUwMWFhZTE5OWZlYWIzOWI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAg
LTEyMzcsNyArMTIzNyw3IEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdHJpbmdGb3JS
YW5nZShjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UpIGNvbnN0CiAgICAgICAgICAgICAvLyBEb24n
dCBhZGQgbGlzdCBtYXJrZXIgdGV4dCBmb3IgbmV3IGxpbmUgY2hhcmFjdGVyLgogICAgICAgICAg
ICAgaWYgKGl0LnRleHQoKS5sZW5ndGgoKSAhPSAxIHx8ICFpc1NwYWNlT3JOZXdsaW5lKGl0LnRl
eHQoKVswXSkpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogU2VlbXMgbGlrZSB0aGUgcG9z
aXRpb24gc2hvdWxkIGJlIGJhc2VkIG9uIGl0LnJhbmdlKCksIG5vdCByYW5nZS4KLSAgICAgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZChsaXN0TWFya2VyVGV4dEZvck5vZGVBbmRQb3NpdGlvbihp
dC5ub2RlKCksIFZpc2libGVQb3NpdGlvbihjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24ocmFu
Z2Uuc3RhcnQpKSkpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGxpc3RNYXJrZXJU
ZXh0Rm9yTm9kZUFuZFBvc2l0aW9uKGl0Lm5vZGUoKSwgVmlzaWJsZVBvc2l0aW9uKG1ha2VEZXBy
ZWNhdGVkTGVnYWN5UG9zaXRpb24ocmFuZ2Uuc3RhcnQpKSkpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgaXQuYXBwZW5kVGV4dFRvU3RyaW5nQnVpbGRlcihidWlsZGVyKTsKICAgICAgICAg
fSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IGUxZTEyOWZhNDk4MzVlYjQzMzQzYWMx
YTRmZmFlMDI4ZTcwNTcxMmIuLjNjZmY1MzYwZmQzZmU3MzI0MGNiMDExOWMyM2I1MzVkZTI5ODUy
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtOTIwLDcgKzkyMCw3IEBAIEludFBvaW50IEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmxpbmtDbGlja1BvaW50KCkKICAgICAgSGVuY2UsIHJl
dHVybiB0aGUgbWlkZGxlIHBvaW50IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhlIGxpbmsg
aWYgZXhpc3RzLgogICAgICAqLwogICAgIGlmIChhdXRvIHJhbmdlID0gZWxlbWVudFJhbmdlKCkp
IHsKLSAgICAgICAgYXV0byBzdGFydCA9IFZpc2libGVQb3NpdGlvbiB7IGNyZWF0ZUxlZ2FjeUVk
aXRpbmdQb3NpdGlvbihyYW5nZS0+c3RhcnQpIH07CisgICAgICAgIGF1dG8gc3RhcnQgPSBWaXNp
YmxlUG9zaXRpb24geyBtYWtlQ29udGFpbmVyT2Zmc2V0UG9zaXRpb24ocmFuZ2UtPnN0YXJ0KSB9
OwogICAgICAgICBhdXRvIGVuZCA9IG5leHRWaXNpYmxlUG9zaXRpb24oc3RhcnQpOwogICAgICAg
ICBpZiAoaXNQb2ludEluUmFuZ2UoKnJhbmdlLCBtYWtlQm91bmRhcnlQb2ludChlbmQpKSkKICAg
ICAgICAgICAgIHJldHVybiB7IGJvdW5kc0ZvclJhbmdlKCptYWtlU2ltcGxlUmFuZ2Uoc3RhcnQs
IGVuZCkpLmNlbnRlcigpIH07CkBAIC0xNjU0LDEwICsxNjU0LDEwIEBAIHZvaWQgQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6c2V0U2VsZWN0ZWRUZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFu
Z2UmIHJhbmdlCiAgICAgICAgIGF1dG8gZWxlbWVudFJhbmdlID0gdGhpcy0+ZWxlbWVudFJhbmdl
KCk7CiAgICAgICAgIGF1dG8gc3RhcnQgPSB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleFVzaW5nQ2hh
cmFjdGVySXRlcmF0b3Iobm9kZSwgcmFuZ2Uuc3RhcnQpOwogICAgICAgICBpZiAoIWlzUG9pbnRJ
blJhbmdlKCplbGVtZW50UmFuZ2UsIG1ha2VCb3VuZGFyeVBvaW50KHN0YXJ0KSkpCi0gICAgICAg
ICAgICBzdGFydCA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihlbGVtZW50UmFuZ2UtPnN0
YXJ0KTsKKyAgICAgICAgICAgIHN0YXJ0ID0gbWFrZUNvbnRhaW5lck9mZnNldFBvc2l0aW9uKGVs
ZW1lbnRSYW5nZS0+c3RhcnQpOwogICAgICAgICBhdXRvIGVuZCA9IHZpc2libGVQb3NpdGlvbkZv
ckluZGV4VXNpbmdDaGFyYWN0ZXJJdGVyYXRvcihub2RlLCByYW5nZS5zdGFydCArIHJhbmdlLmxl
bmd0aCk7CiAgICAgICAgIGlmICghaXNQb2ludEluUmFuZ2UoKmVsZW1lbnRSYW5nZSwgbWFrZUJv
dW5kYXJ5UG9pbnQoZW5kKSkpCi0gICAgICAgICAgICBlbmQgPSBjcmVhdGVMZWdhY3lFZGl0aW5n
UG9zaXRpb24oZWxlbWVudFJhbmdlLT5zdGFydCk7CisgICAgICAgICAgICBlbmQgPSBtYWtlQ29u
dGFpbmVyT2Zmc2V0UG9zaXRpb24oZWxlbWVudFJhbmdlLT5zdGFydCk7CiAgICAgICAgIG1fcmVu
ZGVyZXItPmZyYW1lKCkuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24o
c3RhcnQsIGVuZCksIEZyYW1lU2VsZWN0aW9uOjpkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucyhV
c2VyVHJpZ2dlcmVkKSk7CiAgICAgfQogICAgIApAQCAtMjIwOCw3ICsyMjA4LDcgQEAgdm9pZCBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzZXRTZWxlY3RlZFZpc2libGVQb3NpdGlvblJhbmdl
KGNvbnN0IFZpc2libGVQb3MKICAgICAgICAgYXV0byBzdGFydCA9IHJhbmdlLnN0YXJ0OwogICAg
ICAgICBpZiAoYXV0byBlbGVtZW50UmFuZ2UgPSB0aGlzLT5lbGVtZW50UmFuZ2UoKSkgewogICAg
ICAgICAgICAgaWYgKCFpc1BvaW50SW5SYW5nZSgqZWxlbWVudFJhbmdlLCBtYWtlQm91bmRhcnlQ
b2ludChzdGFydCkpKQotICAgICAgICAgICAgICAgIHN0YXJ0ID0gY3JlYXRlTGVnYWN5RWRpdGlu
Z1Bvc2l0aW9uKGVsZW1lbnRSYW5nZS0+c3RhcnQpOworICAgICAgICAgICAgICAgIHN0YXJ0ID0g
bWFrZUNvbnRhaW5lck9mZnNldFBvc2l0aW9uKGVsZW1lbnRSYW5nZS0+c3RhcnQpOwogICAgICAg
ICB9CiAKICAgICAgICAgbV9yZW5kZXJlci0+ZnJhbWUoKS5zZWxlY3Rpb24oKS5tb3ZlVG8oc3Rh
cnQsIFVzZXJUcmlnZ2VyZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5t
bQppbmRleCBjZDM2NTRjMWFlNmQ4NTVlZGNjMzE2ZGFhMjQ5ZWY2ZWZhNzBiMTg2Li4yZTJkMzZj
OGNkMmIzZjRmNThjNTIzNDAwODYwNDI1M2U0OWQxYWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlcklPUy5tbQpAQCAtMjMyMCwxNCArMjMyMCwxNCBAQCAtIChOU0FycmF5ICop
YXJyYXlPZlRleHRGb3JUZXh0TWFya2VyczooTlNBcnJheSAqKW1hcmtlcnMgYXR0cmlidXRlZDoo
Qk9PTClhdHRyaQogICAgICAgICAgICAgICAgIGlmIChbc2VsZiBfYWRkQWNjZXNzaWJpbGl0eU9i
amVjdDpoZWFkaW5nT2JqZWN0IHRvVGV4dE1hcmtlckFycmF5OmFycmF5XSkKICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgICAgICBTdHJpbmcgbGlzdE1hcmtlclRl
eHQgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsaXN0TWFya2VyVGV4dEZvck5vZGVBbmRQb3NpdGlv
bigmbm9kZSwgVmlzaWJsZVBvc2l0aW9uKGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihpdC5y
YW5nZSgpLnN0YXJ0KSkpOworICAgICAgICAgICAgICAgIFN0cmluZyBsaXN0TWFya2VyVGV4dCA9
IEFjY2Vzc2liaWxpdHlPYmplY3Q6Omxpc3RNYXJrZXJUZXh0Rm9yTm9kZUFuZFBvc2l0aW9uKCZu
b2RlLCBtYWtlQ29udGFpbmVyT2Zmc2V0UG9zaXRpb24oaXQucmFuZ2UoKS5zdGFydCkpOwogICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmICghbGlzdE1hcmtlclRleHQuaXNFbXB0
eSgpKSAKICAgICAgICAgICAgICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpsaXN0TWFya2VyVGV4
dF07CiAgICAgICAgICAgICAgICAgLy8gVGhlcmUgd2FzIG5vdCBhbiBlbGVtZW50IHJlcHJlc2Vu
dGF0aW9uLCBzbyBqdXN0IHJldHVybiB0aGUgdGV4dC4KICAgICAgICAgICAgICAgICBbYXJyYXkg
YWRkT2JqZWN0Oml0LnRleHQoKS5jcmVhdGVOU1N0cmluZygpLmdldCgpXTsKICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIGxpc3RNYXJrZXJUZXh0ID0gQWNjZXNz
aWJpbGl0eU9iamVjdDo6bGlzdE1hcmtlclRleHRGb3JOb2RlQW5kUG9zaXRpb24oJm5vZGUsIFZp
c2libGVQb3NpdGlvbihjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oaXQucmFuZ2UoKS5zdGFy
dCkpKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgbGlzdE1hcmtlclRleHQgPSBBY2Nlc3NpYmls
aXR5T2JqZWN0OjpsaXN0TWFya2VyVGV4dEZvck5vZGVBbmRQb3NpdGlvbigmbm9kZSwgbWFrZUNv
bnRhaW5lck9mZnNldFBvc2l0aW9uKGl0LnJhbmdlKCkuc3RhcnQpKTsKIAogICAgICAgICAgICAg
ICAgIGlmICghbGlzdE1hcmtlclRleHQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgICAg
IE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcgPSBbW05TTXV0YWJsZUF0dHJp
YnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ck1hYy5tbQppbmRleCAzYjYyMTU1NjRkNmI2NjgyNTk1ZWVkOGIxNjM5ODhkMmE3MTBjZDAwLi5m
NGRjZDRjY2M1YWNiNDZkZWQwZDAxMmI4NWYxZjZjZGRjZmU5YTRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAtMTI1NCw3ICsxMjU0LDcgQEAgLSAoTlNBdHRy
aWJ1dGVkU3RyaW5nICopZG9BWEF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2U6KGlk
KXRleHRNYXJrZXJSYW4KICAgICAgICAgICAgIC8vIG5vbi16ZXJvIGxlbmd0aCBtZWFucyB0ZXh0
dWFsIG5vZGUsIHplcm8gbGVuZ3RoIG1lYW5zIHJlcGxhY2VkIG5vZGUgKEFLQSAiYXR0YWNobWVu
dHMiIGluIEFYKQogICAgICAgICAgICAgaWYgKGl0LnRleHQoKS5sZW5ndGgoKSkgewogICAgICAg
ICAgICAgICAgIC8vIEFkZCB0aGUgdGV4dCBvZiB0aGUgbGlzdCBtYXJrZXIgaXRlbSBpZiBuZWNl
c3NhcnkuCi0gICAgICAgICAgICAgICAgU3RyaW5nIGxpc3RNYXJrZXJUZXh0ID0gQWNjZXNzaWJp
bGl0eU9iamVjdDo6bGlzdE1hcmtlclRleHRGb3JOb2RlQW5kUG9zaXRpb24oJm5vZGUsIFZpc2li
bGVQb3NpdGlvbihjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oaXQucmFuZ2UoKS5zdGFydCkp
KTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgbGlzdE1hcmtlclRleHQgPSBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpsaXN0TWFya2VyVGV4dEZvck5vZGVBbmRQb3NpdGlvbigmbm9kZSwgbWFrZUNvbnRh
aW5lck9mZnNldFBvc2l0aW9uKGl0LnJhbmdlKCkuc3RhcnQpKTsKICAgICAgICAgICAgICAgICBp
ZiAoIWxpc3RNYXJrZXJUZXh0LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICAgICAgQVhBdHRy
aWJ1dGVkU3RyaW5nQXBwZW5kVGV4dChhdHRyU3RyaW5nLmdldCgpLCAmbm9kZSwgbGlzdE1hcmtl
clRleHQsIHNwZWxsQ2hlY2spOwogICAgICAgICAgICAgICAgIEFYQXR0cmlidXRlZFN0cmluZ0Fw
cGVuZFRleHQoYXR0clN0cmluZy5nZXQoKSwgJm5vZGUsIGl0LnRleHQoKSwgc3BlbGxDaGVjayk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAppbmRleCAyNzQxYmJiNDBiZTU2MGMzMjdmNDAwOTk2YTY4
NjY5NDU5YzlkMjQyLi4wNzFjODBiYWU0ODk2ZDViYTczNjM1N2NkYWExMjBiMDZmYjE0NzVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKQEAgLTM3Miw3ICszNzIsNyBAQCBQb3NpdGlvbiBQb3Np
dGlvbjo6cHJldmlvdXMoUG9zaXRpb25Nb3ZlVHlwZSBtb3ZlVHlwZSkgY29uc3QKICAgICBpZiAo
cHJldmlvdXNTaWJsaW5nICYmIHBvc2l0aW9uQmVmb3JlT3JBZnRlck5vZGVJc0NhbmRpZGF0ZSgq
cHJldmlvdXNTaWJsaW5nKSkKICAgICAgICAgcmV0dXJuIHBvc2l0aW9uQWZ0ZXJOb2RlKHByZXZp
b3VzU2libGluZyk7CiAKLSAgICByZXR1cm4gbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihw
YXJlbnQsIG5vZGUtPmNvbXB1dGVOb2RlSW5kZXgoKSk7CisgICAgcmV0dXJuIG1ha2VDb250YWlu
ZXJPZmZzZXRQb3NpdGlvbihwYXJlbnQsIG5vZGUtPmNvbXB1dGVOb2RlSW5kZXgoKSk7CiB9CiAK
IFBvc2l0aW9uIFBvc2l0aW9uOjpuZXh0KFBvc2l0aW9uTW92ZVR5cGUgbW92ZVR5cGUpIGNvbnN0
CkBAIC00MjAsNyArNDIwLDcgQEAgUG9zaXRpb24gUG9zaXRpb246Om5leHQoUG9zaXRpb25Nb3Zl
VHlwZSBtb3ZlVHlwZSkgY29uc3QKICAgICBpZiAobmV4dFNpYmxpbmcgJiYgcG9zaXRpb25CZWZv
cmVPckFmdGVyTm9kZUlzQ2FuZGlkYXRlKCpuZXh0U2libGluZykpCiAgICAgICAgIHJldHVybiBw
b3NpdGlvbkJlZm9yZU5vZGUobmV4dFNpYmxpbmcpOwogCi0gICAgcmV0dXJuIG1ha2VEZXByZWNh
dGVkTGVnYWN5UG9zaXRpb24ocGFyZW50LCBub2RlLT5jb21wdXRlTm9kZUluZGV4KCkgKyAxKTsK
KyAgICByZXR1cm4gbWFrZUNvbnRhaW5lck9mZnNldFBvc2l0aW9uKHBhcmVudCwgbm9kZS0+Y29t
cHV0ZU5vZGVJbmRleCgpICsgMSk7CiB9CiAKIGludCBQb3NpdGlvbjo6dW5jaGVja2VkUHJldmlv
dXNPZmZzZXQoY29uc3QgTm9kZSogbiwgdW5zaWduZWQgY3VycmVudCkKQEAgLTg0MSw3ICs4NDEs
NyBAQCBQb3NpdGlvbiBQb3NpdGlvbjo6ZG93bnN0cmVhbShFZGl0aW5nQm91bmRhcnlDcm9zc2lu
Z1J1bGUgcnVsZSkgY29uc3QKIAogICAgICAgICAgICAgaWYgKCZjdXJyZW50Tm9kZSAhPSBzdGFy
dE5vZGUpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoY3VycmVudFBvc2l0aW9uLmF0U3RhcnRP
Zk5vZGUoKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VEZXByZWNhdGVkTGVnYWN5UG9z
aXRpb24oJmN1cnJlbnROb2RlLCB0ZXh0UmVuZGVyZXIuY2FyZXRNaW5PZmZzZXQoKSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIG1ha2VDb250YWluZXJPZmZzZXRQb3NpdGlvbigmY3VycmVudE5v
ZGUsIHRleHRSZW5kZXJlci5jYXJldE1pbk9mZnNldCgpKTsKICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgdW5zaWduZWQgdGV4dE9mZnNldCA9IGN1cnJlbnRQb3NpdGlvbi5vZmZzZXRJbkxl
YWZOb2RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCmluZGV4IGIxZTUwMzI5M2FiMDc4YzNkNTAxZDFi
MDlmMjk0ZGQyYTNhYWVkYWIuLjNiYzdiNGEyOWY2NmU1YmQ0YTQ4ZGVkYWZlZTA2ZTA5ZDg3MmM1
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCkBAIC0zNDksMTggKzM0OSw2IEBAIGlubGluZSBib29s
IG9mZnNldElzQmVmb3JlTGFzdE5vZGVPZmZzZXQodW5zaWduZWQgb2Zmc2V0LCBOb2RlKiBhbmNo
b3JOb2RlKQogICAgIHJldHVybiBvZmZzZXQgPCBjdXJyZW50T2Zmc2V0OwogfQogCi0vLyBGSVhN
RTogRGVsZXRlIHRoaXMgYWZ0ZXIgY2hhbmdpbmcgYWxsIGNhbGxlcnMgdG8gdXNlIHRoZSBtYWtl
RGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uIG5hbWUuCi1pbmxpbmUgUG9zaXRpb24gY3JlYXRlTGVn
YWN5RWRpdGluZ1Bvc2l0aW9uKE5vZGUqIG5vZGUsIHVuc2lnbmVkIG9mZnNldCkKLXsKLSAgICBy
ZXR1cm4gbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihub2RlLCBvZmZzZXQpOwotfQotCi0v
LyBGSVhNRTogRGVsZXRlIHRoaXMgYWZ0ZXIgY2hhbmdpbmcgYWxsIGNhbGxlcnMgdG8gdXNlIHRo
ZSBtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uIG5hbWUuCi1pbmxpbmUgUG9zaXRpb24gY3Jl
YXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKGNvbnN0IEJvdW5kYXJ5UG9pbnQmIHBvaW50KQotewot
ICAgIHJldHVybiBtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKHBvaW50KTsKLX0KLQogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5HKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uSXRlcmF0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL1Bvc2l0aW9uSXRlcmF0b3IuY3BwCmluZGV4IDM2NzBlMTlmZjQzMGZlYmVlYWY4
NDI5YTcyYTIxNmZmZTVmOWRhZjMuLjlhNDQ2ZjYwYzczNDlhZTdjYTkyYzFmMTVhM2JhNzYwZGVm
ZTZkYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbkl0ZXJhdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb25JdGVyYXRvci5jcHAKQEAgLTUxLDcg
KzUxLDcgQEAgUG9zaXRpb25JdGVyYXRvcjo6b3BlcmF0b3IgUG9zaXRpb24oKSBjb25zdAogICAg
ICAgICByZXR1cm4gYXRTdGFydE9mTm9kZSgpID8gcG9zaXRpb25CZWZvcmVOb2RlKG1fYW5jaG9y
Tm9kZSkgOiBwb3NpdGlvbkFmdGVyTm9kZShtX2FuY2hvck5vZGUpOwogICAgIGlmIChtX2FuY2hv
ck5vZGUtPmhhc0NoaWxkTm9kZXMoKSkKICAgICAgICAgcmV0dXJuIGxhc3RQb3NpdGlvbkluT3JB
ZnRlck5vZGUobV9hbmNob3JOb2RlKTsKLSAgICByZXR1cm4gY3JlYXRlTGVnYWN5RWRpdGluZ1Bv
c2l0aW9uKG1fYW5jaG9yTm9kZSwgbV9vZmZzZXRJbkFuY2hvcik7CisgICAgcmV0dXJuIG1ha2VE
ZXByZWNhdGVkTGVnYWN5UG9zaXRpb24obV9hbmNob3JOb2RlLCBtX29mZnNldEluQW5jaG9yKTsK
IH0KIAogdm9pZCBQb3NpdGlvbkl0ZXJhdG9yOjppbmNyZW1lbnQoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAK
aW5kZXggMThlZTMzZjk2YmRiNzdmMjNmNDAyMDBkY2I1MDFlZmVjMmY2M2VjNC4uM2RmMTdhODVj
YTRkZjQzZThjMjI3NmFjY2E2MGNhZjBmOTkyZmU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1JhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCkBAIC05
OTMsOCArOTkzLDggQEAgdm9pZCBSYW5nZTo6dGV4dE5vZGVTcGxpdChUZXh0JiBvbGROb2RlKQog
CiBFeGNlcHRpb25Pcjx2b2lkPiBSYW5nZTo6ZXhwYW5kKGNvbnN0IFN0cmluZyYgdW5pdCkKIHsK
LSAgICBhdXRvIHN0YXJ0ID0gVmlzaWJsZVBvc2l0aW9uIHsgbWFrZURlcHJlY2F0ZWRMZWdhY3lQ
b3NpdGlvbigmc3RhcnRDb250YWluZXIoKSwgc3RhcnRPZmZzZXQoKSkgfTsKLSAgICBhdXRvIGVu
ZCA9IFZpc2libGVQb3NpdGlvbiB7IG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24oJmVuZENv
bnRhaW5lcigpLCBlbmRPZmZzZXQoKSkgfTsKKyAgICBhdXRvIHN0YXJ0ID0gVmlzaWJsZVBvc2l0
aW9uIHsgbWFrZUNvbnRhaW5lck9mZnNldFBvc2l0aW9uKCZzdGFydENvbnRhaW5lcigpLCBzdGFy
dE9mZnNldCgpKSB9OworICAgIGF1dG8gZW5kID0gVmlzaWJsZVBvc2l0aW9uIHsgbWFrZUNvbnRh
aW5lck9mZnNldFBvc2l0aW9uKCZlbmRDb250YWluZXIoKSwgZW5kT2Zmc2V0KCkpIH07CiAgICAg
aWYgKHVuaXQgPT0gIndvcmQiKSB7CiAgICAgICAgIHN0YXJ0ID0gc3RhcnRPZldvcmQoc3RhcnQp
OwogICAgICAgICBlbmQgPSBlbmRPZldvcmQoZW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IDM4MDBhYTkxZjgw
ZmZiNTdmMzcwMmJlZDkyM2NjNDlhNGRlNTg2ZGEuLjJmZWU2MDc2ZDU0NjBmOTg0NmRjYTNkOTY3
OTA2NzBmZTY5YTExMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJu
YXRpdmVUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRl
cm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcApAQCAtMjA2LDEzICsyMDYsMTMgQEAgYm9vbCBBbHRl
cm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseUF1dG9jb3JyZWN0aW9uQmVmb3JlVHlwaW5nSWZB
cHByb3ByaWF0ZSgpCiAKICAgICBQb3NpdGlvbiBjYXJldFBvc2l0aW9uID0gbV9kb2N1bWVudC5z
ZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgpOwogCi0gICAgaWYgKGNyZWF0ZUxlZ2FjeUVk
aXRpbmdQb3NpdGlvbihtX3JhbmdlV2l0aEFsdGVybmF0aXZlLT5lbmQpID09IGNhcmV0UG9zaXRp
b24pIHsKKyAgICBpZiAobWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihtX3JhbmdlV2l0aEFs
dGVybmF0aXZlLT5lbmQpID09IGNhcmV0UG9zaXRpb24pIHsKICAgICAgICAgaGFuZGxlQWx0ZXJu
YXRpdmVUZXh0VUlSZXN1bHQoZGlzbWlzc1Nvb24oUmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0
aXZlVGV4dEFjY2VwdGVkKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0gCiAgICAgCiAg
ICAgLy8gUGVuZGluZyBjb3JyZWN0aW9uIHNob3VsZCBhbHdheXMgYmUgd2hlcmUgY2FyZXQgaXMu
IEJ1dCBpbiBjYXNlIHRoaXMgaXMgbm90IGFsd2F5cyB0cnVlLCB3ZSBzdGlsbCB3YW50IHRvIGRp
c21pc3MgdGhlIHBhbmVsIHdpdGhvdXQgYWNjZXB0aW5nIHRoZSBjb3JyZWN0aW9uLgotICAgIEFT
U0VSVChjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obV9yYW5nZVdpdGhBbHRlcm5hdGl2ZS0+
ZW5kKSA9PSBjYXJldFBvc2l0aW9uKTsKKyAgICBBU1NFUlQobWFrZURlcHJlY2F0ZWRMZWdhY3lQ
b3NpdGlvbihtX3JhbmdlV2l0aEFsdGVybmF0aXZlLT5lbmQpID09IGNhcmV0UG9zaXRpb24pOwog
ICAgIGRpc21pc3MoUmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dElnbm9yZWQpOwog
ICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTUxNyw3ICs1MTcsNyBAQCBib29sIEFsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXI6OnByb2Nlc3NNYXJrZXJzT25UZXh0VG9CZVJlcGxhY2VkQnlSZXN1bHQo
Y29uc3QgVAogICAgIGlmIChtYXJrZXJzLmhhc01hcmtlcnMocmFuZ2VXaXRoQWx0ZXJuYXRpdmUs
IERvY3VtZW50TWFya2VyOjpBY2NlcHRlZENhbmRpZGF0ZSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIGF1dG8gcHJlY2VkaW5nQ2hhcmFjdGVyUmFuZ2UgPSBtYWtlU2ltcGxlUmFuZ2Uo
Y3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJhbmdlV2l0aEFsdGVybmF0aXZlLnN0YXJ0KS5w
cmV2aW91cygpLCByYW5nZVdpdGhBbHRlcm5hdGl2ZS5zdGFydCk7CisgICAgYXV0byBwcmVjZWRp
bmdDaGFyYWN0ZXJSYW5nZSA9IG1ha2VTaW1wbGVSYW5nZShtYWtlRGVwcmVjYXRlZExlZ2FjeVBv
c2l0aW9uKHJhbmdlV2l0aEFsdGVybmF0aXZlLnN0YXJ0KS5wcmV2aW91cygpLCByYW5nZVdpdGhB
bHRlcm5hdGl2ZS5zdGFydCk7CiAgICAgaWYgKCFwcmVjZWRpbmdDaGFyYWN0ZXJSYW5nZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC01OTksNyArNTk5LDcgQEAgdm9pZCBBbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyOjphcHBseUFsdGVybmF0aXZlVGV4dFRvUmFuZ2UoY29uc3QgU2ltcGxl
UmFuZ2UmIHIKICAgICAvLyBvZiB0aGUgY29udGFpbmluZyBwYXJhZ3JhcGguCiAKICAgICAvLyBU
YWtlIG5vdGUgb2YgdGhlIGxvY2F0aW9uIG9mIGF1dG9jb3JyZWN0aW9uIHNvIHRoYXQgd2UgY2Fu
IGFkZCBtYXJrZXIgYWZ0ZXIgdGhlIHJlcGxhY2VtZW50IHRvb2sgcGxhY2UuCi0gICAgYXV0byBw
YXJhZ3JhcGhTdGFydCA9IG1ha2VCb3VuZGFyeVBvaW50KHN0YXJ0T2ZQYXJhZ3JhcGgoY3JlYXRl
TGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJhbmdlLnN0YXJ0KSkpOworICAgIGF1dG8gcGFyYWdyYXBo
U3RhcnQgPSBtYWtlQm91bmRhcnlQb2ludChzdGFydE9mUGFyYWdyYXBoKG1ha2VEZXByZWNhdGVk
TGVnYWN5UG9zaXRpb24ocmFuZ2Uuc3RhcnQpKSk7CiAgICAgaWYgKCFwYXJhZ3JhcGhTdGFydCkK
ICAgICAgICAgcmV0dXJuOwogICAgIGF1dG8gdHJlZVNjb3BlUm9vdCA9IG1ha2VSZWYocmFuZ2Uu
c3RhcnQuY29udGFpbmVyLT50cmVlU2NvcGUoKS5yb290Tm9kZSgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKaW5kZXggMWZhOTRhMGEzZjhhMjQ1YzIy
NGQxYmRmNzFmNTFhNzAwODVlYmFjNC4uZjlmMDEzZDJkNTExNzhkOTkwMzgxOTZhYmUyNTc4ODk0
YjYyYzZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29t
bWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5j
cHAKQEAgLTI3OSw4ICsyNzksOCBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjphcHBseUJsb2Nr
U3R5bGUoRWRpdGluZ1N0eWxlJiBzdHlsZSkKICAgICAgICAgbmV4dFBhcmFncmFwaFN0YXJ0ID0g
ZW5kT2ZQYXJhZ3JhcGgocGFyYWdyYXBoU3RhcnQpLm5leHQoKTsKICAgICB9CiAgICAgCi0gICAg
YXV0byBzdGFydFBvc2l0aW9uID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJlc29sdmVD
aGFyYWN0ZXJMb2NhdGlvbihzY29wZSwgc3RhcnRJbmRleCwgVGV4dEl0ZXJhdG9yRW1pdHNDaGFy
YWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpKTsKLSAgICBhdXRvIGVuZFBvc2l0aW9u
ID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlvbihz
Y29wZSwgZW5kSW5kZXgsIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNp
YmxlUG9zaXRpb25zKSk7CisgICAgYXV0byBzdGFydFBvc2l0aW9uID0gbWFrZURlcHJlY2F0ZWRM
ZWdhY3lQb3NpdGlvbihyZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24oc2NvcGUsIHN0YXJ0SW5kZXgs
IFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKSk7
CisgICAgYXV0byBlbmRQb3NpdGlvbiA9IG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24ocmVz
b2x2ZUNoYXJhY3RlckxvY2F0aW9uKHNjb3BlLCBlbmRJbmRleCwgVGV4dEl0ZXJhdG9yRW1pdHND
aGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpKTsKICAgICB1cGRhdGVTdGFydEVu
ZChzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKaW5kZXggZGM3MGJiYmYzMDhjNmM0M2Y2
ZDQ0MWZlNTk0M2MwZDk0NWZjZmU2Zi4uMjA2ODkxYzE0ZTU5ZTIxYjhmMGJiNTIyNzE5MWVhNTky
ZDAzMmI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0
Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29t
bWFuZC5jcHAKQEAgLTE1MDIsOCArMTUwMiw4IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6
Om1vdmVQYXJhZ3JhcGhzKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgc3RhcnRPZlBhcmFncmFwCiAg
ICAgICAgIC8vIGNhdXNlcyBzcGFjZXMgdG8gYmUgY29sbGFwc2VkIGR1cmluZyB0aGUgbW92ZSBv
cGVyYXRpb24uICBUaGlzIHJlc3VsdHMKICAgICAgICAgLy8gaW4gYSBjYWxsIHRvIHJhbmdlRnJv
bUxvY2F0aW9uQW5kTGVuZ3RoIHdpdGggYSBsb2NhdGlvbiBwYXN0IHRoZSBlbmQKICAgICAgICAg
Ly8gb2YgdGhlIGRvY3VtZW50ICh3aGljaCB3aWxsIHJldHVybiBudWxsKS4KLSAgICAgICAgYXV0
byBzdGFydCA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihyZXNvbHZlQ2hhcmFjdGVyTG9j
YXRpb24obWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCplZGl0YWJsZVJvb3QpLCBkZXN0
aW5hdGlvbkluZGV4ICsgKnN0YXJ0SW5kZXgsIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0Jl
dHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKSk7Ci0gICAgICAgIGF1dG8gZW5kID0gY3JlYXRlTGVn
YWN5RWRpdGluZ1Bvc2l0aW9uKHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlvbihtYWtlUmFuZ2VTZWxl
Y3RpbmdOb2RlQ29udGVudHMoKmVkaXRhYmxlUm9vdCksIGRlc3RpbmF0aW9uSW5kZXggKyAqZW5k
SW5kZXgsIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRp
b25zKSk7CisgICAgICAgIGF1dG8gc3RhcnQgPSBtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9u
KHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlvbihtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMo
KmVkaXRhYmxlUm9vdCksIGRlc3RpbmF0aW9uSW5kZXggKyAqc3RhcnRJbmRleCwgVGV4dEl0ZXJh
dG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpKTsKKyAgICAgICAg
YXV0byBlbmQgPSBtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKHJlc29sdmVDaGFyYWN0ZXJM
b2NhdGlvbihtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKmVkaXRhYmxlUm9vdCksIGRl
c3RpbmF0aW9uSW5kZXggKyAqZW5kSW5kZXgsIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0Jl
dHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKSk7CiAgICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbih7
IHN0YXJ0LCBlbmQsIEFmZmluaXR5OjpEb3duc3RyZWFtLCBvcmlnaW5hbElzRGlyZWN0aW9uYWwg
fSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVT
ZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0
aW9uQ29tbWFuZC5jcHAKaW5kZXggZDBmNTZhZDUxOTlhNTM2ODZkYTk1NWJmMTU1N2I0YmFkZTJm
YTMwNS4uZmEyYzhiMmRmNzk2YmYxOTk1N2RkMjFkYTExMGY2OTk1ZjMxN2U4MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC02
NDksNyArNjQ5LDcgQEAgdm9pZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpoYW5kbGVHZW5lcmFs
RGVsZXRlKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSBuLT5jb21wdXRl
Tm9kZUluZGV4KCkgKyAxOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgIHJlbW92ZUNoaWxkcmVuSW5SYW5nZSgqbV9kb3duc3RyZWFtRW5kLmRlcHJlY2F0ZWROb2Rl
KCksIG9mZnNldCwgbV9kb3duc3RyZWFtRW5kLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkpOwot
ICAgICAgICAgICAgICAgICAgICBtX2Rvd25zdHJlYW1FbmQgPSBjcmVhdGVMZWdhY3lFZGl0aW5n
UG9zaXRpb24obV9kb3duc3RyZWFtRW5kLmRlcHJlY2F0ZWROb2RlKCksIG9mZnNldCk7CisgICAg
ICAgICAgICAgICAgICAgIG1fZG93bnN0cmVhbUVuZCA9IG1ha2VEZXByZWNhdGVkTGVnYWN5UG9z
aXRpb24obV9kb3duc3RyZWFtRW5kLmRlcHJlY2F0ZWROb2RlKCksIG9mZnNldCk7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
aW5nLmNwcAppbmRleCBhNzhhNmZiMWIwOWE1Y2JmMWUxNzQyMTRmYTRmM2FhMTc2NjQ3YmVkLi42
YTMxN2IyYzdjZThiZjRkZmI3NTBkOWU2ZjgyZWNiYmIyMGI4MTY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdGluZy5jcHAKQEAgLTEwOTEsNyArMTA5MSw3IEBAIFZpc2libGVQb3NpdGlvbiB2aXNp
YmxlUG9zaXRpb25Gb3JJbmRleChpbnQgaW5kZXgsIENvbnRhaW5lck5vZGUqIHNjb3BlKQogewog
ICAgIGlmICghc2NvcGUpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgcmV0dXJuIHsgY3JlYXRl
TGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlvbihtYWtlUmFuZ2VT
ZWxlY3RpbmdOb2RlQ29udGVudHMoKnNjb3BlKSwgaW5kZXgsIFRleHRJdGVyYXRvckVtaXRzQ2hh
cmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKSkgfTsKKyAgICByZXR1cm4geyBtYWtl
RGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlvbihtYWtlUmFu
Z2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKnNjb3BlKSwgaW5kZXgsIFRleHRJdGVyYXRvckVtaXRz
Q2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKSkgfTsKIH0KIAogVmlzaWJsZVBv
c2l0aW9uIHZpc2libGVQb3NpdGlvbkZvckluZGV4VXNpbmdDaGFyYWN0ZXJJdGVyYXRvcihOb2Rl
JiBub2RlLCBpbnQgaW5kZXgpCkBAIC0xMTA3LDEwICsxMTA3LDEwIEBAIFZpc2libGVQb3NpdGlv
biB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleFVzaW5nQ2hhcmFjdGVySXRlcmF0b3IoTm9kZSYgbm9k
ZSwgaW50IGluCiAgICAgICAgIC8vIEZJWE1FOiB3b3JrYXJvdW5kIGZvciBjb2xsYXBzZWQgcmFu
Z2UgKHdoZXJlIG9ubHkgc3RhcnQgcG9zaXRpb24gaXMgY29ycmVjdCkgZW1pdHRlZCBmb3Igc29t
ZSBlbWl0dGVkIG5ld2xpbmVzLgogICAgICAgICBpdC5hZHZhbmNlKDEpOwogICAgICAgICBpZiAo
IWl0LmF0RW5kKCkpCi0gICAgICAgICAgICByZXR1cm4geyBjcmVhdGVMZWdhY3lFZGl0aW5nUG9z
aXRpb24oaXQucmFuZ2UoKS5zdGFydCkgfTsKKyAgICAgICAgICAgIHJldHVybiB7IG1ha2VEZXBy
ZWNhdGVkTGVnYWN5UG9zaXRpb24oaXQucmFuZ2UoKS5zdGFydCkgfTsKICAgICB9CiAKLSAgICBy
ZXR1cm4geyBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oKGl0LmF0RW5kKCkgPyByYW5nZSA6
IGl0LnJhbmdlKCkpLmVuZCksIEFmZmluaXR5OjpVcHN0cmVhbSB9OworICAgIHJldHVybiB7IG1h
a2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24oKGl0LmF0RW5kKCkgPyByYW5nZSA6IGl0LnJhbmdl
KCkpLmVuZCksIEFmZmluaXR5OjpVcHN0cmVhbSB9OwogfQogCiAvLyBEZXRlcm1pbmVzIHdoZXRo
ZXIgdHdvIHBvc2l0aW9ucyBhcmUgdmlzaWJseSBuZXh0IHRvIGVhY2ggb3RoZXIgKGZpcnN0IHRo
ZW4gc2Vjb25kKQpAQCAtMTEyNyw4ICsxMTI3LDggQEAgYm9vbCBpc05vZGVWaXNpYmx5Q29udGFp
bmVkV2l0aGluKE5vZGUmIG5vZGUsIGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkKICAgICBpZiAo
Y29udGFpbnMocmFuZ2UsIG5vZGUpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGF1dG8g
c3RhcnRQb3NpdGlvbiA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihyYW5nZS5zdGFydCk7
Ci0gICAgYXV0byBlbmRQb3NpdGlvbiA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihyYW5n
ZS5lbmQpOworICAgIGF1dG8gc3RhcnRQb3NpdGlvbiA9IG1ha2VEZXByZWNhdGVkTGVnYWN5UG9z
aXRpb24ocmFuZ2Uuc3RhcnQpOworICAgIGF1dG8gZW5kUG9zaXRpb24gPSBtYWtlRGVwcmVjYXRl
ZExlZ2FjeVBvc2l0aW9uKHJhbmdlLmVuZCk7CiAKICAgICBib29sIHN0YXJ0SXNWaXN1YWxseVNh
bWUgPSB2aXNpYmxlUG9zaXRpb25CZWZvcmVOb2RlKG5vZGUpID09IHN0YXJ0UG9zaXRpb247CiAg
ICAgaWYgKHN0YXJ0SXNWaXN1YWxseVNhbWUgJiYgcG9zaXRpb25JblBhcmVudEFmdGVyTm9kZSgm
bm9kZSkgPCBlbmRQb3NpdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCBlNzcy
MGZmNTI3NDBhMmJiOTkwZjA1OWY4ZmE4ZWQ5MTc1ODg3Y2NjLi4xZjExZmIxNjE4M2IxOWQxMzI2
N2EzYzk0MDNhOWI5ZTY3OTg1M2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC01
MTMsNyArNTEzLDcgQEAgYm9vbCBFZGl0b3I6OmNhbkRlbGV0ZVJhbmdlKGNvbnN0IFNpbXBsZVJh
bmdlJiByYW5nZSkgY29uc3QKIAogICAgIGlmIChyYW5nZS5jb2xsYXBzZWQoKSkgewogICAgICAg
ICAvLyBGSVhNRTogV2Ugc29tZXRpbWVzIGFsbG93IGRlbGV0aW9ucyBhdCB0aGUgc3RhcnQgb2Yg
ZWRpdGFibGUgcm9vdHMsIGxpa2Ugd2hlbiB0aGUgY2FyZXQgaXMgaW4gYW4gZW1wdHkgbGlzdCBp
dGVtLgotICAgICAgICBhdXRvIHByZXZpb3VzID0gVmlzaWJsZVBvc2l0aW9uIHsgY3JlYXRlTGVn
YWN5RWRpdGluZ1Bvc2l0aW9uKHJhbmdlLnN0YXJ0KSB9LnByZXZpb3VzKCk7CisgICAgICAgIGF1
dG8gcHJldmlvdXMgPSBWaXNpYmxlUG9zaXRpb24geyBtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0
aW9uKHJhbmdlLnN0YXJ0KSB9LnByZXZpb3VzKCk7CiAgICAgICAgIGlmIChwcmV2aW91cy5pc051
bGwoKSB8fCBwcmV2aW91cy5kZWVwRXF1aXZhbGVudCgpLmRlcHJlY2F0ZWROb2RlKCktPnJvb3RF
ZGl0YWJsZUVsZW1lbnQoKSAhPSByYW5nZS5zdGFydC5jb250YWluZXItPnJvb3RFZGl0YWJsZUVs
ZW1lbnQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0xOTI1LDcgKzE5
MjUsNyBAQCB2b2lkIEVkaXRvcjo6c2VsZWN0Q29tcG9zaXRpb24oKQogICAgIC8vIFRoZSBjb21w
b3NpdGlvbiBjYW4gc3RhcnQgaW5zaWRlIGEgY29tcG9zZWQgY2hhcmFjdGVyIHNlcXVlbmNlLCBz
byB3ZSBoYXZlIHRvIG92ZXJyaWRlIGNoZWNrcy4KICAgICAvLyBTZWUgPGh0dHA6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NzgxPgogICAgIFZpc2libGVTZWxlY3Rpb24gc2Vs
ZWN0aW9uOwotICAgIHNlbGVjdGlvbi5zZXRXaXRob3V0VmFsaWRhdGlvbihjcmVhdGVMZWdhY3lF
ZGl0aW5nUG9zaXRpb24ocmFuZ2UtPnN0YXJ0KSwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9u
KHJhbmdlLT5lbmQpKTsKKyAgICBzZWxlY3Rpb24uc2V0V2l0aG91dFZhbGlkYXRpb24obWFrZURl
cHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihyYW5nZS0+c3RhcnQpLCBtYWtlRGVwcmVjYXRlZExlZ2Fj
eVBvc2l0aW9uKHJhbmdlLT5lbmQpKTsKICAgICBtX2RvY3VtZW50LnNlbGVjdGlvbigpLnNldFNl
bGVjdGlvbihzZWxlY3Rpb24sIHsgfSk7CiB9CiAKQEAgLTIyMDAsNyArMjIwMCw3IEBAIHZvaWQg
RWRpdG9yOjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlv
bikKICAgICAgICAgICAgIHNwZWxsaW5nU2VhcmNoUmFuZ2Uuc3RhcnQgPSAqbWFrZUJvdW5kYXJ5
UG9pbnQoc2VsZWN0aW9uLnZpc2libGVFbmQoKSk7CiAgICAgfQogCi0gICAgYXV0byBwb3NpdGlv
biA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihzcGVsbGluZ1NlYXJjaFJhbmdlLnN0YXJ0
KTsKKyAgICBhdXRvIHBvc2l0aW9uID0gbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihzcGVs
bGluZ1NlYXJjaFJhbmdlLnN0YXJ0KTsKICAgICBpZiAoIWlzRWRpdGFibGVQb3NpdGlvbihwb3Np
dGlvbikpIHsKICAgICAgICAgLy8gVGhpcyBzaG91bGRuJ3QgaGFwcGVuIGluIHZlcnkgb2Z0ZW4g
YmVjYXVzZSB0aGUgU3BlbGxpbmcgbWVudSBpdGVtcyBhcmVuJ3QgZW5hYmxlZCB1bmxlc3MgdGhl
CiAgICAgICAgIC8vIHNlbGVjdGlvbiBpcyBlZGl0YWJsZS4KQEAgLTIyMjUsNyArMjIyNSw3IEBA
IHZvaWQgRWRpdG9yOjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNl
bGVjdGlvbikKICAgICAvLyBJZiBzcGVsbGluZ1NlYXJjaFJhbmdlIHN0YXJ0cyBpbiB0aGUgbWlk
ZGxlIG9mIGEgd29yZCwgYWR2YW5jZSB0byB0aGUgbmV4dCB3b3JkIHNvIHdlIHN0YXJ0IGNoZWNr
aW5nCiAgICAgLy8gYXQgYSB3b3JkIGJvdW5kYXJ5LiBHb2luZyBiYWNrIGJ5IG9uZSBjaGFyIGFu
ZCB0aGVuIGZvcndhcmQgYnkgYSB3b3JkIGRvZXMgdGhlIHRyaWNrLgogICAgIGlmIChzdGFydGVk
V2l0aFNlbGVjdGlvbikgewotICAgICAgICBhdXRvIG9uZUJlZm9yZVN0YXJ0ID0gVmlzaWJsZVBv
c2l0aW9uKGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihzcGVsbGluZ1NlYXJjaFJhbmdlLnN0
YXJ0KSkucHJldmlvdXMoKTsKKyAgICAgICAgYXV0byBvbmVCZWZvcmVTdGFydCA9IFZpc2libGVQ
b3NpdGlvbihtYWtlQ29udGFpbmVyT2Zmc2V0UG9zaXRpb24oc3BlbGxpbmdTZWFyY2hSYW5nZS5z
dGFydCkpLnByZXZpb3VzKCk7CiAgICAgICAgIGlmIChvbmVCZWZvcmVTdGFydC5pc05vdE51bGwo
KSkKICAgICAgICAgICAgIHNwZWxsaW5nU2VhcmNoUmFuZ2Uuc3RhcnQgPSAqbWFrZUJvdW5kYXJ5
UG9pbnQoZW5kT2ZXb3JkKG9uZUJlZm9yZVN0YXJ0KSk7CiAgICAgICAgIC8vIGVsc2Ugd2Ugd2Vy
ZSBhbHJlYWR5IGF0IHRoZSBzdGFydCBvZiB0aGUgZWRpdGFibGUgbm9kZQpAQCAtMjkwOSw3ICsy
OTA5LDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yKGNvbnN0IFNwZWxsQ2hlY2tS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBWZWN0b3I8VGUKICAgICAgICAgZXh0ZW5kZWRQYXJhZ3Jh
cGguZXhwYW5kUmFuZ2VUb05leHRFbmQoKTsKICAgICAgICAgaWYgKHJlc3RvcmVTZWxlY3Rpb25B
ZnRlckNoYW5nZSAmJiBzZWxlY3Rpb25PZmZzZXQgPD0gZXh0ZW5kZWRQYXJhZ3JhcGgucmFuZ2VM
ZW5ndGgoKSkgewogICAgICAgICAgICAgYXV0byBzZWxlY3Rpb25SYW5nZSA9IGV4dGVuZGVkUGFy
YWdyYXBoLnN1YnJhbmdlKHsgMCwgc2VsZWN0aW9uT2Zmc2V0IH0pOwotICAgICAgICAgICAgbV9k
b2N1bWVudC5zZWxlY3Rpb24oKS5tb3ZlVG8oY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHNl
bGVjdGlvblJhbmdlLmVuZCksIEFmZmluaXR5OjpEb3duc3RyZWFtKTsKKyAgICAgICAgICAgIG1f
ZG9jdW1lbnQuc2VsZWN0aW9uKCkubW92ZVRvKG1ha2VDb250YWluZXJPZmZzZXRQb3NpdGlvbihz
ZWxlY3Rpb25SYW5nZS5lbmQpLCBBZmZpbml0eTo6RG93bnN0cmVhbSk7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAvLyBJZiB0aGlzIGZhaWxzIGZvciBhbnkgcmVhc29uLCB0aGUgZmFs
bGJhY2sgaXMgdG8gZ28gb25lIHBvc2l0aW9uIGJleW9uZCB0aGUgbGFzdCByZXBsYWNlbWVudAog
ICAgICAgICAgICAgbV9kb2N1bWVudC5zZWxlY3Rpb24oKS5tb3ZlVG8obV9kb2N1bWVudC5zZWxl
Y3Rpb24oKS5zZWxlY3Rpb24oKS5lbmQoKSk7CkBAIC0zMzMxLDcgKzMzMzEsNyBAQCBJbnRSZWN0
IEVkaXRvcjo6Zmlyc3RSZWN0Rm9yUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKSBjb25z
dAogewogICAgIHJhbmdlLnN0YXJ0LmRvY3VtZW50KCkudXBkYXRlTGF5b3V0KCk7CiAKLSAgICBW
aXNpYmxlUG9zaXRpb24gc3RhcnQoY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJhbmdlLnN0
YXJ0KSk7CisgICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0KG1ha2VEZXByZWNhdGVkTGVnYWN5UG9z
aXRpb24ocmFuZ2Uuc3RhcnQpKTsKIAogICAgIGlmIChyYW5nZS5jb2xsYXBzZWQoKSkgewogICAg
ICAgICAvLyBGSVhNRTogR2V0dGluZyBjYXJldCByZWN0IGFuZCByZW1vdmluZyBjYXJldCB3aWR0
aCBpcyBhIHZlcnkgcm91bmRhYm91dCB3YXkgdG8gZ2V0IGNvbGxhcHNlZCByYW5nZSBsb2NhdGlv
bi4KQEAgLTMzNDEsNyArMzM0MSw3IEBAIEludFJlY3QgRWRpdG9yOjpmaXJzdFJlY3RGb3JSYW5n
ZShjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UpIGNvbnN0CiAgICAgICAgIHJldHVybiBzdGFydENh
cmV0UmVjdDsKICAgICB9CiAKLSAgICBWaXNpYmxlUG9zaXRpb24gZW5kKGNyZWF0ZUxlZ2FjeUVk
aXRpbmdQb3NpdGlvbihyYW5nZS5lbmQpLCBBZmZpbml0eTo6VXBzdHJlYW0pOworICAgIFZpc2li
bGVQb3NpdGlvbiBlbmQobWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihyYW5nZS5lbmQpLCBB
ZmZpbml0eTo6VXBzdHJlYW0pOwogCiAgICAgaWYgKGluU2FtZUxpbmUoc3RhcnQsIGVuZCkpCiAg
ICAgICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KHVuaXRlZEJvdW5kaW5nQm94ZXMoUmVuZGVy
T2JqZWN0OjphYnNvbHV0ZVRleHRRdWFkcyhyYW5nZSkpKTsKQEAgLTM2NzYsOCArMzY3Niw4IEBA
IHN0YXRpYyBWZWN0b3I8U2ltcGxlUmFuZ2U+IHNjYW5Gb3JUZWxlcGhvbmVOdW1iZXJzKGNvbnN0
IFNpbXBsZVJhbmdlJiByYW5nZSkKIAogc3RhdGljIFNpbXBsZVJhbmdlIGV4dGVuZFNlbGVjdGlv
bihjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIHVuc2lnbmVkIGNoYXJhY3RlcnNUb0V4dGVuZCkK
IHsKLSAgICBhdXRvIHN0YXJ0ID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJhbmdlLnN0
YXJ0KTsKLSAgICBhdXRvIGVuZCA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihyYW5nZS5l
bmQpOworICAgIGF1dG8gc3RhcnQgPSBtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKHJhbmdl
LnN0YXJ0KTsKKyAgICBhdXRvIGVuZCA9IG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24ocmFu
Z2UuZW5kKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2hhcmFjdGVyc1RvRXh0ZW5k
OyArK2kpIHsKICAgICAgICAgc3RhcnQgPSBzdGFydC5wcmV2aW91cyhDaGFyYWN0ZXIpOwogICAg
ICAgICBlbmQgPSBlbmQubmV4dChDaGFyYWN0ZXIpOwpAQCAtNDIyOCw3ICs0MjI4LDcgQEAgT3B0
aW9uYWw8U2ltcGxlUmFuZ2U+IEVkaXRvcjo6YWRqdXN0ZWRTZWxlY3Rpb25SYW5nZSgpCiAgICAg
YXV0byByYW5nZSA9IHNlbGVjdGVkUmFuZ2UoKTsKICAgICBpZiAocmFuZ2UpIHsKICAgICAgICAg
aWYgKGF1dG8gZW5jbG9zaW5nQW5jaG9yID0gZW5jbG9zaW5nRWxlbWVudFdpdGhUYWcoZmlyc3RQ
b3NpdGlvbkluTm9kZShjb21tb25JbmNsdXNpdmVBbmNlc3RvcigqcmFuZ2UpLmdldCgpKSwgSFRN
TE5hbWVzOjphVGFnKSkgewotICAgICAgICAgICAgaWYgKGZpcnN0UG9zaXRpb25Jbk9yQmVmb3Jl
Tm9kZShyYW5nZS0+c3RhcnQuY29udGFpbmVyLnB0cigpKSA+PSBjcmVhdGVMZWdhY3lFZGl0aW5n
UG9zaXRpb24ocmFuZ2UtPnN0YXJ0KSkKKyAgICAgICAgICAgIGlmIChmaXJzdFBvc2l0aW9uSW5P
ckJlZm9yZU5vZGUocmFuZ2UtPnN0YXJ0LmNvbnRhaW5lci5wdHIoKSkgPj0gbWFrZURlcHJlY2F0
ZWRMZWdhY3lQb3NpdGlvbihyYW5nZS0+c3RhcnQpKQogICAgICAgICAgICAgICAgIHJhbmdlLT5z
dGFydCA9IG1ha2VCb3VuZGFyeVBvaW50QmVmb3JlTm9kZUNvbnRlbnRzKCplbmNsb3NpbmdBbmNo
b3IpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9GcmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0
aW9uLmNwcAppbmRleCA1Y2QyZTk2MjYwZWU2MDNhODFhM2ZjN2FkMjdiMWU3MjMxYmJhYTI3Li5l
MDRlNzY1N2M5M2ZlM2U2NGViYTBlNjc0ZGIxNzRlMmY0YWI1MTI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtMjUwNyw4ICsyNTA3LDggQEAgT3B0aW9u
YWw8U2ltcGxlUmFuZ2U+IEZyYW1lU2VsZWN0aW9uOjplbGVtZW50UmFuZ2VDb250YWluaW5nQ2Fy
ZXRTZWxlY3Rpb24oKSBjb24KICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CiAKLSAgICBhdXRvIHN0YXJ0ID0gVmlzaWJsZVBvc2l0aW9uKGNyZWF0ZUxlZ2Fj
eUVkaXRpbmdQb3NpdGlvbihlbGVtZW50LCAwKSk7Ci0gICAgYXV0byBlbmQgPSBWaXNpYmxlUG9z
aXRpb24oY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKGVsZW1lbnQsIGVsZW1lbnQtPmNvdW50
Q2hpbGROb2RlcygpKSk7CisgICAgYXV0byBzdGFydCA9IFZpc2libGVQb3NpdGlvbihtYWtlQ29u
dGFpbmVyT2Zmc2V0UG9zaXRpb24oZWxlbWVudCwgMCkpOworICAgIGF1dG8gZW5kID0gVmlzaWJs
ZVBvc2l0aW9uKG1ha2VDb250YWluZXJPZmZzZXRQb3NpdGlvbihlbGVtZW50LCBlbGVtZW50LT5j
b3VudENoaWxkTm9kZXMoKSkpOwogICAgIGlmIChzdGFydC5pc051bGwoKSB8fCBlbmQuaXNOdWxs
KCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9JbnNlcnRMaXN0Q29tbWFuZC5jcHAKaW5kZXggNGJhNTVkMmQ2NjIzMTI1NmJiYmFkYzk1
YmUwNDUxYjE3YWI4NDI0Ni4uYWYzNTJhNDk3MzE0NTMzZjczMjIzNWY2NWQxZjFmNTM3NzljN2Ez
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5jcHAKQEAg
LTIzMSw4ICsyMzEsOCBAQCB2b2lkIEluc2VydExpc3RDb21tYW5kOjpkb0FwcGx5Rm9yU2luZ2xl
UGFyYWdyYXBoKGJvb2wgZm9yY2VDcmVhdGVMaXN0LCBjb25zdCBIVAogCiAgICAgICAgIC8vIElm
IHRoZSBlbnRpcmUgbGlzdCBpcyBzZWxlY3RlZCwgdGhlbiBjb252ZXJ0IHRoZSB3aG9sZSBsaXN0
LgogICAgICAgICBpZiAoc3dpdGNoTGlzdFR5cGUgJiYgaXNOb2RlVmlzaWJseUNvbnRhaW5lZFdp
dGhpbigqbGlzdE5vZGUsIGN1cnJlbnRTZWxlY3Rpb24pKSB7Ci0gICAgICAgICAgICBib29sIHJh
bmdlU3RhcnRJc0luTGlzdCA9IHZpc2libGVQb3NpdGlvbkJlZm9yZU5vZGUoKmxpc3ROb2RlKSA9
PSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oY3VycmVudFNlbGVjdGlvbi5zdGFydCk7Ci0g
ICAgICAgICAgICBib29sIHJhbmdlRW5kSXNJbkxpc3QgPSB2aXNpYmxlUG9zaXRpb25BZnRlck5v
ZGUoKmxpc3ROb2RlKSA9PSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oY3VycmVudFNlbGVj
dGlvbi5lbmQpOworICAgICAgICAgICAgYm9vbCByYW5nZVN0YXJ0SXNJbkxpc3QgPSB2aXNpYmxl
UG9zaXRpb25CZWZvcmVOb2RlKCpsaXN0Tm9kZSkgPT0gbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3Np
dGlvbihjdXJyZW50U2VsZWN0aW9uLnN0YXJ0KTsKKyAgICAgICAgICAgIGJvb2wgcmFuZ2VFbmRJ
c0luTGlzdCA9IHZpc2libGVQb3NpdGlvbkFmdGVyTm9kZSgqbGlzdE5vZGUpID09IG1ha2VEZXBy
ZWNhdGVkTGVnYWN5UG9zaXRpb24oY3VycmVudFNlbGVjdGlvbi5lbmQpOwogCiAgICAgICAgICAg
ICBSZWZQdHI8SFRNTEVsZW1lbnQ+IG5ld0xpc3QgPSBjcmVhdGVIVE1MRWxlbWVudChkb2N1bWVu
dCgpLCBsaXN0VGFnKTsKICAgICAgICAgICAgIGluc2VydE5vZGVCZWZvcmUoKm5ld0xpc3QsICps
aXN0Tm9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9z
aXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmNwcApp
bmRleCBjNDI2OTFhOTM4OTZiYmY2ZmNjYmJiYTNiNjhkMGMwZTAxYTM1MTAwLi4zZjQ0NjU5MjIy
MGU2ZmQzNmVhNmRlNDdmZWNmN2NkOGVkOGRkMTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvUmVuZGVyZWRQb3NpdGlvbi5jcHAKQEAgLTE5NSw5ICsxOTUsOSBAQCBQb3NpdGlvbiBSZW5k
ZXJlZFBvc2l0aW9uOjpwb3NpdGlvbkF0TGVmdEJvdW5kYXJ5T2ZCaURpUnVuKCkgY29uc3QKICAg
ICBBU1NFUlQoYXRMZWZ0Qm91bmRhcnlPZkJpZGlSdW4oKSk7CiAKICAgICBpZiAoYXRMZWZ0bW9z
dE9mZnNldEluQm94KCkpCi0gICAgICAgIHJldHVybiBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRp
b24obV9yZW5kZXJlci0+bm9kZSgpLCBtX29mZnNldCk7CisgICAgICAgIHJldHVybiBtYWtlRGVw
cmVjYXRlZExlZ2FjeVBvc2l0aW9uKG1fcmVuZGVyZXItPm5vZGUoKSwgbV9vZmZzZXQpOwogCi0g
ICAgcmV0dXJuIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihuZXh0TGVhZk9uTGluZSgpLT5y
ZW5kZXJlcigpLm5vZGUoKSwgbmV4dExlYWZPbkxpbmUoKS0+Y2FyZXRMZWZ0bW9zdE9mZnNldCgp
KTsKKyAgICByZXR1cm4gbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihuZXh0TGVhZk9uTGlu
ZSgpLT5yZW5kZXJlcigpLm5vZGUoKSwgbmV4dExlYWZPbkxpbmUoKS0+Y2FyZXRMZWZ0bW9zdE9m
ZnNldCgpKTsKIH0KIAogUG9zaXRpb24gUmVuZGVyZWRQb3NpdGlvbjo6cG9zaXRpb25BdFJpZ2h0
Qm91bmRhcnlPZkJpRGlSdW4oKSBjb25zdApAQCAtMjA1LDkgKzIwNSw5IEBAIFBvc2l0aW9uIFJl
bmRlcmVkUG9zaXRpb246OnBvc2l0aW9uQXRSaWdodEJvdW5kYXJ5T2ZCaURpUnVuKCkgY29uc3QK
ICAgICBBU1NFUlQoYXRSaWdodEJvdW5kYXJ5T2ZCaWRpUnVuKCkpOwogCiAgICAgaWYgKGF0Umln
aHRtb3N0T2Zmc2V0SW5Cb3goKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQ
b3NpdGlvbihtX3JlbmRlcmVyLT5ub2RlKCksIG1fb2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIG1h
a2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24obV9yZW5kZXJlci0+bm9kZSgpLCBtX29mZnNldCk7
CiAKLSAgICByZXR1cm4gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHByZXZpb3VzTGVhZk9u
TGluZSgpLT5yZW5kZXJlcigpLm5vZGUoKSwgcHJldmlvdXNMZWFmT25MaW5lKCktPmNhcmV0Umln
aHRtb3N0T2Zmc2V0KCkpOworICAgIHJldHVybiBtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9u
KHByZXZpb3VzTGVhZk9uTGluZSgpLT5yZW5kZXJlcigpLm5vZGUoKSwgcHJldmlvdXNMZWFmT25M
aW5lKCktPmNhcmV0UmlnaHRtb3N0T2Zmc2V0KCkpOwogfQogCiBJbnRSZWN0IFJlbmRlcmVkUG9z
aXRpb246OmFic29sdXRlUmVjdChMYXlvdXRVbml0KiBleHRyYVdpZHRoVG9FbmRPZkxpbmUpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKaW5k
ZXggNTI2ZGVlZGY2ODA3ZDM2YWU3ODllY2U0MmEwODEwODBhNWZmZjMyMi4uOTIxNmM1OGFiMDNh
NGQ5M2Q1OGNmOTJkZDg0MDYwOTViN2UzYzcxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dENoZWNraW5nSGVscGVyLmNwcApAQCAtMTA2LDggKzEwNiw4IEBAIHN0YXRpYyB2b2lk
IGZpbmRNaXNzcGVsbGluZ3MoVGV4dENoZWNrZXJDbGllbnQmIGNsaWVudCwgU3RyaW5nVmlldyB0
ZXh0LCBWZWN0b3I8CiAKIHN0YXRpYyBTaW1wbGVSYW5nZSBleHBhbmRUb1BhcmFncmFwaEJvdW5k
YXJ5KGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkKIHsKLSAgICBhdXRvIHN0YXJ0ID0gbWFrZUJv
dW5kYXJ5UG9pbnQoc3RhcnRPZlBhcmFncmFwaChjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24o
cmFuZ2Uuc3RhcnQpKSk7Ci0gICAgYXV0byBlbmQgPSBtYWtlQm91bmRhcnlQb2ludChlbmRPZlBh
cmFncmFwaChjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24ocmFuZ2UuZW5kKSkpOworICAgIGF1
dG8gc3RhcnQgPSBtYWtlQm91bmRhcnlQb2ludChzdGFydE9mUGFyYWdyYXBoKG1ha2VEZXByZWNh
dGVkTGVnYWN5UG9zaXRpb24ocmFuZ2Uuc3RhcnQpKSk7CisgICAgYXV0byBlbmQgPSBtYWtlQm91
bmRhcnlQb2ludChlbmRPZlBhcmFncmFwaChtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKHJh
bmdlLmVuZCkpKTsKICAgICBpZiAoIXN0YXJ0IHx8ICFlbmQpCiAgICAgICAgIHJldHVybiByYW5n
ZTsKICAgICByZXR1cm4geyAqc3RhcnQsICplbmQgfTsKQEAgLTEyOSw3ICsxMjksNyBAQCBUZXh0
Q2hlY2tpbmdQYXJhZ3JhcGg6OlRleHRDaGVja2luZ1BhcmFncmFwaChjb25zdCBTaW1wbGVSYW5n
ZSYgY2hlY2tpbmdSYW5nZSwgYwogdm9pZCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmV4cGFuZFJh
bmdlVG9OZXh0RW5kKCkKIHsKICAgICBwYXJhZ3JhcGhSYW5nZSgpOwotICAgIGlmIChhdXRvIGVu
ZCA9IG1ha2VCb3VuZGFyeVBvaW50KGVuZE9mUGFyYWdyYXBoKHN0YXJ0T2ZOZXh0UGFyYWdyYXBo
KGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihtX3BhcmFncmFwaFJhbmdlLT5zdGFydCkpKSkp
CisgICAgaWYgKGF1dG8gZW5kID0gbWFrZUJvdW5kYXJ5UG9pbnQoZW5kT2ZQYXJhZ3JhcGgoc3Rh
cnRPZk5leHRQYXJhZ3JhcGgobWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihtX3BhcmFncmFw
aFJhbmdlLT5zdGFydCkpKSkpCiAgICAgICAgIG1fcGFyYWdyYXBoUmFuZ2UtPmVuZCA9IFdURk1v
dmUoKmVuZCk7CiAgICAgaW52YWxpZGF0ZVBhcmFncmFwaFJhbmdlVmFsdWVzKCk7CiB9CkBAIC0z
MDMsOSArMzAzLDkgQEAgYXV0byBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxs
ZWRXb3JkT3JVbmdyYW1tYXRpY2FsUGhyYXNlKGJvb2wgY2hlY2sKICAgICAvLyBFeHBhbmQgdGhl
IHNlYXJjaCByYW5nZSB0byBlbmNvbXBhc3MgZW50aXJlIHBhcmFncmFwaHMsIHNpbmNlIHRleHQg
Y2hlY2tpbmcgbmVlZHMgdGhhdCBtdWNoIGNvbnRleHQuCiAgICAgLy8gRGV0ZXJtaW5lIHRoZSBj
aGFyYWN0ZXIgb2Zmc2V0IGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBwYXJhZ3JhcGggdG8gdGhlIHN0
YXJ0IG9mIHRoZSBvcmlnaW5hbCBzZWFyY2ggcmFuZ2UsCiAgICAgLy8gc2luY2Ugd2Ugd2lsbCB3
YW50IHRvIGlnbm9yZSByZXN1bHRzIGluIHRoaXMgYXJlYS4KLSAgICBhdXRvIHBhcmFncmFwaFJh
bmdlID0gKm1ha2VTaW1wbGVSYW5nZShzdGFydE9mUGFyYWdyYXBoKGNyZWF0ZUxlZ2FjeUVkaXRp
bmdQb3NpdGlvbihtX3JhbmdlLnN0YXJ0KSksIG1fcmFuZ2UuZW5kKTsKKyAgICBhdXRvIHBhcmFn
cmFwaFJhbmdlID0gKm1ha2VTaW1wbGVSYW5nZShzdGFydE9mUGFyYWdyYXBoKG1ha2VEZXByZWNh
dGVkTGVnYWN5UG9zaXRpb24obV9yYW5nZS5zdGFydCkpLCBtX3JhbmdlLmVuZCk7CiAgICAgYXV0
byB0b3RhbFJhbmdlTGVuZ3RoID0gY2hhcmFjdGVyQ291bnQocGFyYWdyYXBoUmFuZ2UpOwotICAg
IHBhcmFncmFwaFJhbmdlLmVuZCA9ICptYWtlQm91bmRhcnlQb2ludChlbmRPZlBhcmFncmFwaChj
cmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obV9yYW5nZS5zdGFydCkpKTsKKyAgICBwYXJhZ3Jh
cGhSYW5nZS5lbmQgPSAqbWFrZUJvdW5kYXJ5UG9pbnQoZW5kT2ZQYXJhZ3JhcGgobWFrZURlcHJl
Y2F0ZWRMZWdhY3lQb3NpdGlvbihtX3JhbmdlLnN0YXJ0KSkpOwogICAgIAogICAgIGF1dG8gcmFu
Z2VTdGFydE9mZnNldCA9IGNoYXJhY3RlckNvdW50KHsgcGFyYWdyYXBoUmFuZ2Uuc3RhcnQsIG1f
cmFuZ2Uuc3RhcnQgfSk7CiAgICAgdWludDY0X3QgdG90YWxMZW5ndGhQcm9jZXNzZWQgPSAwOwpA
QCAtMzE3LDcgKzMxNyw3IEBAIGF1dG8gVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNz
cGVsbGVkV29yZE9yVW5ncmFtbWF0aWNhbFBocmFzZShib29sIGNoZWNrCiAgICAgICAgIGF1dG8g
Y3VycmVudExlbmd0aCA9IGNoYXJhY3RlckNvdW50KHBhcmFncmFwaFJhbmdlKTsKICAgICAgICAg
dWludDY0X3QgY3VycmVudFN0YXJ0T2Zmc2V0ID0gZmlyc3RJdGVyYXRpb24gPyByYW5nZVN0YXJ0
T2Zmc2V0IDogMDsKICAgICAgICAgdWludDY0X3QgY3VycmVudEVuZE9mZnNldCA9IGN1cnJlbnRM
ZW5ndGg7Ci0gICAgICAgIGlmIChpblNhbWVQYXJhZ3JhcGgoY3JlYXRlTGVnYWN5RWRpdGluZ1Bv
c2l0aW9uKHBhcmFncmFwaFJhbmdlLnN0YXJ0KSwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9u
KG1fcmFuZ2UuZW5kKSkpIHsKKyAgICAgICAgaWYgKGluU2FtZVBhcmFncmFwaChtYWtlRGVwcmVj
YXRlZExlZ2FjeVBvc2l0aW9uKHBhcmFncmFwaFJhbmdlLnN0YXJ0KSwgbWFrZURlcHJlY2F0ZWRM
ZWdhY3lQb3NpdGlvbihtX3JhbmdlLmVuZCkpKSB7CiAgICAgICAgICAgICAvLyBEZXRlcm1pbmUg
dGhlIGNoYXJhY3RlciBvZmZzZXQgZnJvbSB0aGUgZW5kIG9mIHRoZSBvcmlnaW5hbCBzZWFyY2gg
cmFuZ2UgdG8gdGhlIGVuZCBvZiB0aGUgcGFyYWdyYXBoLAogICAgICAgICAgICAgLy8gc2luY2Ug
d2Ugd2lsbCB3YW50IHRvIGlnbm9yZSByZXN1bHRzIGluIHRoaXMgYXJlYS4KICAgICAgICAgICAg
IGN1cnJlbnRFbmRPZmZzZXQgPSBjaGFyYWN0ZXJDb3VudCh7IHBhcmFncmFwaFJhbmdlLnN0YXJ0
LCBtX3JhbmdlLmVuZCB9KTsKQEAgLTM5OSw3ICszOTksNyBAQCBhdXRvIFRleHRDaGVja2luZ0hl
bHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxlZFdvcmRPclVuZ3JhbW1hdGljYWxQaHJhc2UoYm9vbCBj
aGVjawogICAgICAgICBpZiAobGFzdEl0ZXJhdGlvbiB8fCB0b3RhbExlbmd0aFByb2Nlc3NlZCAr
IGN1cnJlbnRMZW5ndGggPj0gdG90YWxSYW5nZUxlbmd0aCkKICAgICAgICAgICAgIGJyZWFrOwog
Ci0gICAgICAgIGF1dG8gbmV4dFN0YXJ0ID0gc3RhcnRPZk5leHRQYXJhZ3JhcGgoY3JlYXRlTGVn
YWN5RWRpdGluZ1Bvc2l0aW9uKHBhcmFncmFwaFJhbmdlLmVuZCkpOworICAgICAgICBhdXRvIG5l
eHRTdGFydCA9IHN0YXJ0T2ZOZXh0UGFyYWdyYXBoKG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRp
b24ocGFyYWdyYXBoUmFuZ2UuZW5kKSk7CiAgICAgICAgIGF1dG8gbmV4dFBhcmFncmFwaFJhbmdl
ID0gbWFrZVNpbXBsZVJhbmdlKG5leHRTdGFydCwgZW5kT2ZQYXJhZ3JhcGgobmV4dFN0YXJ0KSk7
CiAgICAgICAgIGlmICghbmV4dFBhcmFncmFwaFJhbmdlKQogICAgICAgICAgICAgYnJlYWs7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5kZXggNGY1YzkwMWJhMjhkMjY2
OWNjZWIzZWM0NDM1MTcyZWNmY2U3NjExNS4uYjZhMjdkZDg3NGIyMjM3NDI1M2JjN2YxOGY1NTA1
M2Q2ZThlOTk5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcApAQCAt
MjM4Miw3ICsyMzgyLDcgQEAgU2ltcGxlUmFuZ2UgcmVzb2x2ZUNoYXJhY3RlclJhbmdlKGNvbnN0
IFNpbXBsZVJhbmdlJiBzY29wZSwgQ2hhcmFjdGVyUmFuZ2UgcmFuZ2UKICAgICAgICAgICAgICAg
ICBpZiAoIWl0LmF0RW5kKCkpCiAgICAgICAgICAgICAgICAgICAgIHRleHRSdW5SYW5nZS5lbmQg
PSBpdC5yYW5nZSgpLnN0YXJ0OwogICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
ICAgICAgICBpZiAoYXV0byBlbmQgPSBtYWtlQm91bmRhcnlQb2ludChWaXNpYmxlUG9zaXRpb24o
Y3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHRleHRSdW5SYW5nZS5zdGFydCkpLm5leHQoKS5k
ZWVwRXF1aXZhbGVudCgpKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8gZW5kID0gbWFr
ZUJvdW5kYXJ5UG9pbnQoVmlzaWJsZVBvc2l0aW9uKG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRp
b24odGV4dFJ1blJhbmdlLnN0YXJ0KSkubmV4dCgpLmRlZXBFcXVpdmFsZW50KCkpKQogICAgICAg
ICAgICAgICAgICAgICAgICAgdGV4dFJ1blJhbmdlLmVuZCA9ICplbmQ7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9W
aXNpYmxlUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRp
b24uY3BwCmluZGV4IGZlMjFjNTllNTVmMDIzMjVkNmQzZGRkZWIzMzcxY2U2YmM2YzY3MGMuLmEy
ZTAxNDA4YjM3ZWNmMzQyMWU1N2FiNTZjZjJhYjQyM2E3NTY1NDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAKQEAgLTI0Miw3ICsyNDIsNyBAQCBQb3NpdGlv
biBWaXNpYmxlUG9zaXRpb246OmxlZnRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKCkgY29uc3QK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgcCA9IGNyZWF0ZUxlZ2Fj
eUVkaXRpbmdQb3NpdGlvbihyZW5kZXJlci0+bm9kZSgpLCBvZmZzZXQpOworICAgICAgICBwID0g
bWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihyZW5kZXJlci0+bm9kZSgpLCBvZmZzZXQpOwog
CiAgICAgICAgIGlmICgocC5pc0NhbmRpZGF0ZSgpICYmIHAuZG93bnN0cmVhbSgpICE9IGRvd25z
dHJlYW1TdGFydCkgfHwgcC5hdFN0YXJ0T2ZUcmVlKCkgfHwgcC5hdEVuZE9mVHJlZSgpKQogICAg
ICAgICAgICAgcmV0dXJuIHA7CkBAIC00MDgsNyArNDA4LDcgQEAgUG9zaXRpb24gVmlzaWJsZVBv
c2l0aW9uOjpyaWdodFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUoKSBjb25zdAogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBwID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bv
c2l0aW9uKHJlbmRlcmVyLT5ub2RlKCksIG9mZnNldCk7CisgICAgICAgIHAgPSBtYWtlRGVwcmVj
YXRlZExlZ2FjeVBvc2l0aW9uKHJlbmRlcmVyLT5ub2RlKCksIG9mZnNldCk7CiAKICAgICAgICAg
aWYgKChwLmlzQ2FuZGlkYXRlKCkgJiYgcC5kb3duc3RyZWFtKCkgIT0gZG93bnN0cmVhbVN0YXJ0
KSB8fCBwLmF0U3RhcnRPZlRyZWUoKSB8fCBwLmF0RW5kT2ZUcmVlKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwCmlu
ZGV4IDFjNzkzNTE4MjUyMDJiOGI1MTE3ZDcyMzgyOWI2NjBiZTY3ZDFhYzEuLjNhZTk4NDcyNzZm
N2M0ZmZkNzA5NDhhZWIzOTM4M2Y2Y2Y5MjkwYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9WaXNpYmxlU2VsZWN0aW9uLmNwcApAQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQgVmlzaWJsZVNl
bGVjdGlvbjo6YXBwZW5kVHJhaWxpbmdXaGl0ZXNwYWNlKCkKICAgICAgICAgVUNoYXIgYyA9IGNo
YXJJdC50ZXh0KClbMF07CiAgICAgICAgIGlmICgoIWlzU3BhY2VPck5ld2xpbmUoYykgJiYgYyAh
PSBub0JyZWFrU3BhY2UpIHx8IGMgPT0gJ1xuJykKICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBtX2VuZCA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihjaGFySXQucmFuZ2UoKS5lbmQp
OworICAgICAgICBtX2VuZCA9IG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24oY2hhckl0LnJh
bmdlKCkuZW5kKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVmlzaWJsZVVuaXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRz
LmNwcAppbmRleCBjYTg3YTIwYjM5ZDA1ODMzZGQ1MDkzMjQ4MmVhNTg3NTgxMTU3YzQ1Li43NTdj
NGI0MzFmODc3MmNkM2JmYjkyZDQ2Y2Y5MmQ0NDJmNTM0YWZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9WaXNpYmxlVW5pdHMuY3BwCkBAIC05MCw3ICs5MCw3IEBAIHN0YXRpYyBQb3NpdGlvbiBw
cmV2aW91c1Jvb3RJbmxpbmVCb3hDYW5kaWRhdGVQb3NpdGlvbihOb2RlKiBub2RlLCBjb25zdCBW
aXNpYmxlCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBQb3NpdGlvbiBwb3MgPSBwcmV2
aW91c05vZGUtPmhhc1RhZ05hbWUoYnJUYWcpID8gcG9zaXRpb25CZWZvcmVOb2RlKHByZXZpb3Vz
Tm9kZSkgOgotICAgICAgICAgICAgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHByZXZpb3Vz
Tm9kZSwgY2FyZXRNYXhPZmZzZXQoKnByZXZpb3VzTm9kZSkpOworICAgICAgICAgICAgbWFrZURl
cHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihwcmV2aW91c05vZGUsIGNhcmV0TWF4T2Zmc2V0KCpwcmV2
aW91c05vZGUpKTsKICAgICAgICAgCiAgICAgICAgIGlmIChwb3MuaXNDYW5kaWRhdGUoKSkKICAg
ICAgICAgICAgIHJldHVybiBwb3M7CkBAIC0xMTIsNyArMTEyLDcgQEAgc3RhdGljIFBvc2l0aW9u
IG5leHRSb290SW5saW5lQm94Q2FuZGlkYXRlUG9zaXRpb24oTm9kZSogbm9kZSwgY29uc3QgVmlz
aWJsZVBvc2kKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIFBvc2l0aW9uIHBvczsKLSAg
ICAgICAgcG9zID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5leHROb2RlLCBjYXJldE1p
bk9mZnNldCgqbmV4dE5vZGUpKTsKKyAgICAgICAgcG9zID0gbWFrZURlcHJlY2F0ZWRMZWdhY3lQ
b3NpdGlvbihuZXh0Tm9kZSwgY2FyZXRNaW5PZmZzZXQoKm5leHROb2RlKSk7CiAgICAgICAgIAog
ICAgICAgICBpZiAocG9zLmlzQ2FuZGlkYXRlKCkpCiAgICAgICAgICAgICByZXR1cm4gcG9zOwpA
QCAtNjA5LDEyICs2MDksMTIgQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c0JvdW5k
YXJ5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24sIEJvdW5kYXIKICAgICB1bnNpZ25l
ZCBuZXh0ID0gYmFja3dhcmRTZWFyY2hGb3JCb3VuZGFyeVdpdGhUZXh0SXRlcmF0b3IoaXQsIHN0
cmluZywgc3VmZml4TGVuZ3RoLCBzZWFyY2hGdW5jdGlvbik7CiAKICAgICBpZiAoIW5leHQpCi0g
ICAgICAgIHJldHVybiBpdC5hdEVuZCgpID8gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHNl
YXJjaFJhbmdlLT5zdGFydCkgOiBwb3NpdGlvbjsKKyAgICAgICAgcmV0dXJuIGl0LmF0RW5kKCkg
PyBtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKHNlYXJjaFJhbmdlLT5zdGFydCkgOiBwb3Np
dGlvbjsKIAogICAgIGF1dG8mIG5vZGUgPSAoaXQuYXRFbmQoKSA/ICpzZWFyY2hSYW5nZSA6IGl0
LnJhbmdlKCkpLnN0YXJ0LmNvbnRhaW5lci5nZXQoKTsKICAgICBpZiAoKCFzdWZmaXhMZW5ndGgg
JiYgaXM8VGV4dD4obm9kZSkgJiYgbmV4dCA8PSBkb3duY2FzdDxUZXh0Pihub2RlKS5sZW5ndGgo
KSkgfHwgKG5vZGUucmVuZGVyZXIoKSAmJiBub2RlLnJlbmRlcmVyKCktPmlzQlIoKSAmJiAhbmV4
dCkpIHsKICAgICAgICAgLy8gVGhlIG5leHQgdmFyaWFibGUgY29udGFpbnMgYSB1c2FibGUgaW5k
ZXggaW50byBhIHRleHQgbm9kZS4KLSAgICAgICAgcmV0dXJuIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQ
b3NpdGlvbigmbm9kZSwgbmV4dCk7CisgICAgICAgIHJldHVybiBtYWtlRGVwcmVjYXRlZExlZ2Fj
eVBvc2l0aW9uKCZub2RlLCBuZXh0KTsKICAgICB9CiAKICAgICAvLyBVc2UgdGhlIGNoYXJhY3Rl
ciBpdGVyYXRvciB0byB0cmFuc2xhdGUgdGhlIG5leHQgdmFsdWUgaW50byBhIERPTSBwb3NpdGlv
bi4KQEAgLTYyMiw3ICs2MjIsNyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzQm91
bmRhcnkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbiwgQm91bmRhcgogICAgIGlmIChu
ZXh0IDwgc3RyaW5nLnNpemUoKSAtIHN1ZmZpeExlbmd0aCkKICAgICAgICAgY2hhckl0LmFkdmFu
Y2Uoc3RyaW5nLnNpemUoKSAtIHN1ZmZpeExlbmd0aCAtIG5leHQpOwogICAgIC8vIEZJWE1FOiBj
aGFySXQgY2FuIGdldCBvdXQgb2Ygc2hhZG93IGhvc3QuCi0gICAgcmV0dXJuIGNyZWF0ZUxlZ2Fj
eUVkaXRpbmdQb3NpdGlvbihjaGFySXQucmFuZ2UoKS5lbmQpOworICAgIHJldHVybiBtYWtlRGVw
cmVjYXRlZExlZ2FjeVBvc2l0aW9uKGNoYXJJdC5yYW5nZSgpLmVuZCk7CiB9CiAKIHN0YXRpYyBW
aXNpYmxlUG9zaXRpb24gbmV4dEJvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYywgQm91
bmRhcnlTZWFyY2hGdW5jdGlvbiBzZWFyY2hGdW5jdGlvbikKQEAgLTY1MiwxOSArNjUyLDE5IEBA
IHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gbmV4dEJvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3NpdGlv
biYgYywgQm91bmRhcnlTZWFyY2hGdW5jCiAgICAgdW5zaWduZWQgbmV4dCA9IGZvcndhcmRTZWFy
Y2hGb3JCb3VuZGFyeVdpdGhUZXh0SXRlcmF0b3IoaXQsIHN0cmluZywgcHJlZml4TGVuZ3RoLCBz
ZWFyY2hGdW5jdGlvbik7CiAgICAgCiAgICAgaWYgKGl0LmF0RW5kKCkgJiYgbmV4dCA9PSBzdHJp
bmcuc2l6ZSgpKQotICAgICAgICBwb3MgPSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oc2Vh
cmNoUmFuZ2UtPmVuZCk7CisgICAgICAgIHBvcyA9IG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRp
b24oc2VhcmNoUmFuZ2UtPmVuZCk7CiAgICAgZWxzZSBpZiAobmV4dCA+IHByZWZpeExlbmd0aCkg
ewogICAgICAgICAvLyBVc2UgdGhlIGNoYXJhY3RlciBpdGVyYXRvciB0byB0cmFuc2xhdGUgdGhl
IG5leHQgdmFsdWUgaW50byBhIERPTSBwb3NpdGlvbi4KICAgICAgICAgQ2hhcmFjdGVySXRlcmF0
b3IgY2hhckl0KCpzZWFyY2hSYW5nZSwgVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2Vl
bkFsbFZpc2libGVQb3NpdGlvbnMpOwogICAgICAgICBjaGFySXQuYWR2YW5jZShuZXh0IC0gcHJl
Zml4TGVuZ3RoIC0gMSk7CiAgICAgICAgIGF1dG8gY2hhcmFjdGVyUmFuZ2UgPSBjaGFySXQucmFu
Z2UoKTsKLSAgICAgICAgcG9zID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKGNoYXJhY3Rl
clJhbmdlLmVuZCk7CisgICAgICAgIHBvcyA9IG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24o
Y2hhcmFjdGVyUmFuZ2UuZW5kKTsKICAgICAgICAgCiAgICAgICAgIGlmIChjaGFySXQudGV4dCgp
WzBdID09ICdcbicpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiB3b3JrYXJvdW5kIGZvciBjb2xs
YXBzZWQgcmFuZ2UgKHdoZXJlIG9ubHkgc3RhcnQgcG9zaXRpb24gaXMgY29ycmVjdCkgZW1pdHRl
ZCBmb3Igc29tZSBlbWl0dGVkIG5ld2xpbmVzIChzZWUgcmRhcjovLzUxOTI1OTMpCi0gICAgICAg
ICAgICBpZiAoVmlzaWJsZVBvc2l0aW9uKHBvcykgPT0gVmlzaWJsZVBvc2l0aW9uKGNyZWF0ZUxl
Z2FjeUVkaXRpbmdQb3NpdGlvbihjaGFyYWN0ZXJSYW5nZS5zdGFydCkpKSB7CisgICAgICAgICAg
ICBpZiAoVmlzaWJsZVBvc2l0aW9uKHBvcykgPT0gVmlzaWJsZVBvc2l0aW9uKG1ha2VEZXByZWNh
dGVkTGVnYWN5UG9zaXRpb24oY2hhcmFjdGVyUmFuZ2Uuc3RhcnQpKSkgewogICAgICAgICAgICAg
ICAgIGNoYXJJdC5hZHZhbmNlKDEpOwotICAgICAgICAgICAgICAgIHBvcyA9IGNyZWF0ZUxlZ2Fj
eUVkaXRpbmdQb3NpdGlvbihjaGFySXQucmFuZ2UoKS5zdGFydCk7CisgICAgICAgICAgICAgICAg
cG9zID0gbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihjaGFySXQucmFuZ2UoKS5zdGFydCk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xNDMyLDcgKzE0MzIsNyBAQCBW
aXNpYmxlUG9zaXRpb24gc3RhcnRPZkRvY3VtZW50KGNvbnN0IE5vZGUqIG5vZGUpCiAgICAgLy8g
VGhlIGNhbm9uaWNhbGl6YXRpb24gb2YgdGhlIHBvc2l0aW9uIGF0IChkb2N1bWVudEVsZW1lbnQs
IDApIGNhbiB0dXJuIHRoZSB2aXNpYmxlCiAgICAgLy8gcG9zaXRpb24gdG8gbnVsbCwgZXZlbiB3
aGVuIHRoZXJlJ3MgYSB2YWxpZCBjYW5kaWRhdGUgdG8gYmUgaGFkLCBiZWNhdXNlIHRoZSByb290
IEhUTUwgZWxlbWVudAogICAgIC8vIGlzIG5vdCBjb250ZW50IGVkaXRhYmxlLiAgU28gd2UgY29u
c3RydWN0IGRpcmVjdGx5IGZyb20gdGhlIHZhbGlkIGNhbmRpZGF0ZS4KLSAgICBQb3NpdGlvbiBm
aXJzdENhbmRpZGF0ZSA9IG5leHRDYW5kaWRhdGUoY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9u
KG5vZGUtPmRvY3VtZW50KCkuZG9jdW1lbnRFbGVtZW50KCksIDApKTsKKyAgICBQb3NpdGlvbiBm
aXJzdENhbmRpZGF0ZSA9IG5leHRDYW5kaWRhdGUobWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlv
bihub2RlLT5kb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpLCAwKSk7CiAgICAgaWYgKGZpcnN0
Q2FuZGlkYXRlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CiAg
ICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihmaXJzdENhbmRpZGF0ZSk7CkBAIC0xNDUxLDcgKzE0
NTEsNyBAQCBWaXNpYmxlUG9zaXRpb24gZW5kT2ZEb2N1bWVudChjb25zdCBOb2RlKiBub2RlKQog
ICAgIC8vIChBcyBhYm92ZSwgaW4gc3RhcnRPZkRvY3VtZW50LikgIFRoZSBjYW5vbmljYWxpemF0
aW9uIGNhbiByZWplY3QgdmFsaWQgdmlzaWJsZSBwb3NpdGlvbnMKICAgICAvLyB3aGVuIGRlc2Nl
bmRpbmcgZnJvbSB0aGUgcm9vdCBlbGVtZW50LCBzbyB3ZSBjb25zdHJ1Y3QgdGhlIHZpc2libGUg
cG9zaXRpb24gZGlyZWN0bHkgZnJvbSBhCiAgICAgLy8gdmFsaWQgY2FuZGlkYXRlLgotICAgIFBv
c2l0aW9uIGxhc3RQb3NpdGlvbiA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLT5k
b2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpLCBub2RlLT5kb2N1bWVudCgpLmRvY3VtZW50RWxl
bWVudCgpLT5jb3VudENoaWxkTm9kZXMoKSk7CisgICAgUG9zaXRpb24gbGFzdFBvc2l0aW9uID0g
bWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihub2RlLT5kb2N1bWVudCgpLmRvY3VtZW50RWxl
bWVudCgpLCBub2RlLT5kb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpLT5jb3VudENoaWxkTm9k
ZXMoKSk7CiAgICAgUG9zaXRpb24gbGFzdENhbmRpZGF0ZSA9IHByZXZpb3VzQ2FuZGlkYXRlKGxh
c3RQb3NpdGlvbik7CiAgICAgaWYgKGxhc3RDYW5kaWRhdGUuaXNOdWxsKCkpCiAgICAgICAgIHJl
dHVybiBWaXNpYmxlUG9zaXRpb24oKTsKQEAgLTE5MzcsOSArMTkzNyw5IEBAIFZpc2libGVQb3Np
dGlvbiBjbG9zZXN0V29yZEJvdW5kYXJ5Rm9yUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiBwb3NpdGlvbikKICAgICB9IGVsc2UgaWYgKHdpdGhpblRleHRVbml0T2ZHcmFudWxhcml0eShw
b3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVj
dGlvbjo6Rm9yd2FyZCkpIHsKICAgICAgICAgLy8gVGhlIHBvc2l0aW9uIGxpZXMgd2l0aGluIGEg
d29yZC4KICAgICAgICAgaWYgKGF1dG8gd29yZFJhbmdlID0gZW5jbG9zaW5nVGV4dFVuaXRPZkdy
YW51bGFyaXR5KHBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwgU2Vs
ZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkKSkgewotICAgICAgICAgICAgcmVzdWx0ID0gY3JlYXRl
TGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHdvcmRSYW5nZS0+c3RhcnQpOworICAgICAgICAgICAgcmVz
dWx0ID0gbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbih3b3JkUmFuZ2UtPnN0YXJ0KTsKICAg
ICAgICAgICAgIGlmIChkaXN0YW5jZUJldHdlZW5Qb3NpdGlvbnMocG9zaXRpb24sIHJlc3VsdCkg
PiAxKQotICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlv
bih3b3JkUmFuZ2UtPmVuZCk7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbWFrZURlcHJlY2F0
ZWRMZWdhY3lQb3NpdGlvbih3b3JkUmFuZ2UtPmVuZCk7CiAgICAgICAgIH0KICAgICB9IGVsc2Ug
aWYgKGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6Oldv
cmRHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCkpIHsKICAgICAgICAg
Ly8gVGhlIHBvc2l0aW9uIGlzIGF0IHRoZSBlbmQgb2YgYSB3b3JkLgpAQCAtMTk5NCw5ICsxOTk0
LDkgQEAgc3RkOjpwYWlyPFZpc2libGVQb3NpdGlvbiwgV2l0aGluV29yZEJvdW5kYXJ5PiB3b3Jk
Qm91bmRhcnlGb3JQb3NpdGlvbldpdGhvdXRDcm8KICAgICBpZiAod2l0aGluVGV4dFVuaXRPZkdy
YW51bGFyaXR5KHBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwgU2Vs
ZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkKSkgewogICAgICAgICBhdXRvIGFkanVzdGVkUG9zaXRp
b24gPSBwb3NpdGlvbjsKICAgICAgICAgaWYgKGF1dG8gd29yZFJhbmdlID0gZW5jbG9zaW5nVGV4
dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxh
cml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkKSkgewotICAgICAgICAgICAgYWRqdXN0
ZWRQb3NpdGlvbiA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbih3b3JkUmFuZ2UtPnN0YXJ0
KTsKKyAgICAgICAgICAgIGFkanVzdGVkUG9zaXRpb24gPSBtYWtlRGVwcmVjYXRlZExlZ2FjeVBv
c2l0aW9uKHdvcmRSYW5nZS0+c3RhcnQpOwogICAgICAgICAgICAgaWYgKGRpc3RhbmNlQmV0d2Vl
blBvc2l0aW9ucyhwb3NpdGlvbiwgYWRqdXN0ZWRQb3NpdGlvbikgPiAxKQotICAgICAgICAgICAg
ICAgIGFkanVzdGVkUG9zaXRpb24gPSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24od29yZFJh
bmdlLT5lbmQpOworICAgICAgICAgICAgICAgIGFkanVzdGVkUG9zaXRpb24gPSBtYWtlRGVwcmVj
YXRlZExlZ2FjeVBvc2l0aW9uKHdvcmRSYW5nZS0+ZW5kKTsKICAgICAgICAgfQogICAgICAgICBy
ZXR1cm4geyBhZGp1c3RlZFBvc2l0aW9uLCBXaXRoaW5Xb3JkQm91bmRhcnk6OlllcyB9OwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRl
ci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRl
eCBmYjkxMzU5Y2EwZDYxMDc3ZjlmYWNlMTA0N2ZlOWY0Yzg3ZjI3NTBkLi44ZDI2YmY4NTlhNDkz
ZGE2NjQzMzE0M2VkMGRhYTQ3OWRiNjc4ZjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC0zNTIsOCArMzUyLDggQEAgcHJpdmF0ZToKIH07
CiAKIEhUTUxDb252ZXJ0ZXI6OkhUTUxDb252ZXJ0ZXIoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdl
KQotICAgIDogbV9zdGFydChjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24ocmFuZ2Uuc3RhcnQp
KQotICAgICwgbV9lbmQoY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJhbmdlLmVuZCkpCisg
ICAgOiBtX3N0YXJ0KG1ha2VDb250YWluZXJPZmZzZXRQb3NpdGlvbihyYW5nZS5zdGFydCkpCisg
ICAgLCBtX2VuZChtYWtlQ29udGFpbmVyT2Zmc2V0UG9zaXRpb24ocmFuZ2UuZW5kKSkKIHsKICAg
ICBfYXR0clN0ciA9IFtbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdF07CiAg
ICAgX2RvY3VtZW50QXR0cnMgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCmluZGV4IDIzOWU4OTQzOWM4MzQ5
MmIzNzg2Yzc4ODdmZWYyNGE3ZDM3YWNlNDkuLjcwMzZhZTBjZDBhYWEyOTk5ODI0ODJjMGJlMzNl
ZmM1NDk1NGRmYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRv
cklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KQEAg
LTMzOSw3ICszMzksNyBAQCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFzQ2hpbGRPZkVsZW1lbnQoY29u
c3QgU3RyaW5nJiB0ZXh0LCBFbGVtZW50JiBlbGVtZW50KQogCiAgICAgZWxlbWVudC5yZXBsYWNl
QWxsQ2hpbGRyZW5XaXRoTmV3VGV4dCh0ZXh0KTsKIAotICAgIFZpc2libGVQb3NpdGlvbiBhZnRl
ckNvbnRlbnRzID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKCZlbGVtZW50LCBlbGVtZW50
LmNvdW50Q2hpbGROb2RlcygpKTsKKyAgICBWaXNpYmxlUG9zaXRpb24gYWZ0ZXJDb250ZW50cyA9
IG1ha2VDb250YWluZXJPZmZzZXRQb3NpdGlvbigmZWxlbWVudCwgZWxlbWVudC5jb3VudENoaWxk
Tm9kZXMoKSk7CiAgICAgaWYgKGFmdGVyQ29udGVudHMuaXNOdWxsKCkpCiAgICAgICAgIHJldHVy
bjsKICAgICBtX2RvY3VtZW50LnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihhZnRlckNvbnRlbnRz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCBlNzI1MjcwMWYxMzA3YmNkMTRkMDEw
NjU5OWYzNzExN2FmYWMxODEwLi44MDQ4YjUyODllMjZkMzdmMDEyYTE1MzIzZjU2NzQwMzY5MTdj
M2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC05MzUsNyArOTM1LDcgQEAgc3Rh
dGljIFN0cmluZyBzZXJpYWxpemVQcmVzZXJ2aW5nVmlzdWFsQXBwZWFyYW5jZUludGVybmFsKGNv
bnN0IFBvc2l0aW9uJiBzdGFydCwKIAogU3RyaW5nIHNlcmlhbGl6ZVByZXNlcnZpbmdWaXN1YWxB
cHBlYXJhbmNlKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgVmVjdG9yPE5vZGUqPiogbm9kZXMs
IEFubm90YXRlRm9ySW50ZXJjaGFuZ2UgYW5ub3RhdGUsIENvbnZlcnRCbG9ja3NUb0lubGluZXMg
Y29udmVydEJsb2Nrc1RvSW5saW5lcywgUmVzb2x2ZVVSTHMgcmVzb2x2ZVVSTHMpCiB7Ci0gICAg
cmV0dXJuIHNlcmlhbGl6ZVByZXNlcnZpbmdWaXN1YWxBcHBlYXJhbmNlSW50ZXJuYWwoY3JlYXRl
TGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJhbmdlLnN0YXJ0KSwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bv
c2l0aW9uKHJhbmdlLmVuZCksCisgICAgcmV0dXJuIHNlcmlhbGl6ZVByZXNlcnZpbmdWaXN1YWxB
cHBlYXJhbmNlSW50ZXJuYWwobWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihyYW5nZS5zdGFy
dCksIG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24ocmFuZ2UuZW5kKSwKICAgICAgICAgbm9k
ZXMsIHJlc29sdmVVUkxzLCBTZXJpYWxpemVDb21wb3NlZFRyZWU6Ok5vLAogICAgICAgICBhbm5v
dGF0ZSwgY29udmVydEJsb2Nrc1RvSW5saW5lcywgU3RhbmRhcmRGb250RmFtaWx5U2VyaWFsaXph
dGlvbk1vZGU6OktlZXAsIE1TT0xpc3RNb2RlOjpEb05vdFByZXNlcnZlKTsKIH0KQEAgLTExMTQs
NyArMTExNCw3IEBAIGJvb2wgaXNQbGFpblRleHRNYXJrdXAoTm9kZSogbm9kZSkKIAogc3RhdGlj
IGJvb2wgY29udGV4dFByZXNlcnZlc05ld2xpbmUoY29uc3QgU2ltcGxlUmFuZ2UmIGNvbnRleHQp
CiB7Ci0gICAgYXV0byBjb250YWluZXIgPSBWaXNpYmxlUG9zaXRpb24oY3JlYXRlTGVnYWN5RWRp
dGluZ1Bvc2l0aW9uKGNvbnRleHQuc3RhcnQpKS5kZWVwRXF1aXZhbGVudCgpLmNvbnRhaW5lck5v
ZGUoKTsKKyAgICBhdXRvIGNvbnRhaW5lciA9IFZpc2libGVQb3NpdGlvbihtYWtlRGVwcmVjYXRl
ZExlZ2FjeVBvc2l0aW9uKGNvbnRleHQuc3RhcnQpKS5kZWVwRXF1aXZhbGVudCgpLmNvbnRhaW5l
ck5vZGUoKTsKICAgICByZXR1cm4gY29udGFpbmVyICYmIGNvbnRhaW5lci0+cmVuZGVyZXIoKSAm
JiBjb250YWluZXItPnJlbmRlcmVyKCktPnN0eWxlKCkucHJlc2VydmVOZXdsaW5lKCk7CiB9CiAK
QEAgLTExNTcsNyArMTE1Nyw3IEBAIFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVu
dEZyb21UZXh0KGNvbnN0IFNpbXBsZVJhbmdlJiBjb250ZXh0LCBjb25zdCBTCiAgICAgfQogCiAg
ICAgLy8gQnJlYWsgc3RyaW5nIGludG8gcGFyYWdyYXBocy4gRXh0cmEgbGluZSBicmVha3MgdHVy
biBpbnRvIGVtcHR5IHBhcmFncmFwaHMuCi0gICAgYXV0byBzdGFydCA9IGNyZWF0ZUxlZ2FjeUVk
aXRpbmdQb3NpdGlvbihjb250ZXh0LnN0YXJ0KTsKKyAgICBhdXRvIHN0YXJ0ID0gbWFrZURlcHJl
Y2F0ZWRMZWdhY3lQb3NpdGlvbihjb250ZXh0LnN0YXJ0KTsKICAgICBhdXRvIGJsb2NrID0gZW5j
bG9zaW5nQmxvY2soc3RhcnQuZmlyc3ROb2RlKCkuZ2V0KCkpOwogICAgIGJvb2wgdXNlQ2xvbmVz
T2ZFbmNsb3NpbmdCbG9jayA9IGJsb2NrCiAgICAgICAgICYmICFibG9jay0+aGFzVGFnTmFtZShi
b2R5VGFnKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRleCAzY2MyY2Vi
YWM1YTgwMWYzOWM4N2FhMzBhZjkwMjllZmFlZmMyOWU3Li5mZGRiYTk0MjNhZjI5M2M4OTk3MzIz
YjlkMzVlNmM5Njc4ZTE2MjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNw
cApAQCAtMTQ5MCw3ICsxNDkwLDcgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6aW5zZXJ0RHJvcHBl
ZEltYWdlUGxhY2Vob2xkZXJzQXRDYXJldChjb25zdCBWZWN0b3I8SW50U2l6ZT4KICAgICBtX2Ry
b3BwZWRJbWFnZVBsYWNlaG9sZGVyUmFuZ2UgPSBXVEZNb3ZlKGluc2VydGVkQ29udGVudFJhbmdl
KTsKIAogICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5jbGVhcigpOwotICAgIGNhcmV0Q29udHJvbGxl
ci5zZXRDYXJldFBvc2l0aW9uKGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihtX2Ryb3BwZWRJ
bWFnZVBsYWNlaG9sZGVyUmFuZ2UtPnN0YXJ0KSk7CisgICAgY2FyZXRDb250cm9sbGVyLnNldENh
cmV0UG9zaXRpb24obWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihtX2Ryb3BwZWRJbWFnZVBs
YWNlaG9sZGVyUmFuZ2UtPnN0YXJ0KSk7CiB9CiAKIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmZpbmFs
aXplRHJvcHBlZEltYWdlUGxhY2Vob2xkZXIoSFRNTEltYWdlRWxlbWVudCYgcGxhY2Vob2xkZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcAppbmRleCBkNDVkMzQ0NDA3MGE0NzhjMzJjNzUyZjA4MTk2ZWJiZjQy
MjFlNDcxLi4wZmViZDRiNTIwZWUyMDI2NWJjOWNiMWE1Zjc3OTJkMzExYmVhNTg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKQEAgLTg5NSw4ICs4OTUsOCBAQCB1aW50MzJfdCBQYWdlOjpyZXBsYWNlUmFu
Z2VzV2l0aFRleHQoY29uc3QgVmVjdG9yPFNpbXBsZVJhbmdlPiYgcmFuZ2VzVG9SZXBsYWNlLAog
ICAgIHJlcGxhY2VtZW50UmFuZ2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocmFuZ2VzVG9SZXBs
YWNlLnNpemUoKSk7CiAKICAgICBmb3IgKGF1dG8mIHJhbmdlIDogcmFuZ2VzVG9SZXBsYWNlKSB7
Ci0gICAgICAgIGF1dG8gaGlnaGVzdFJvb3QgPSBtYWtlUmVmUHRyKGhpZ2hlc3RFZGl0YWJsZVJv
b3QoY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJhbmdlLnN0YXJ0KSkpOwotICAgICAgICBp
ZiAoIWhpZ2hlc3RSb290IHx8IGhpZ2hlc3RSb290ICE9IGhpZ2hlc3RFZGl0YWJsZVJvb3QoY3Jl
YXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJhbmdlLmVuZCkpIHx8ICFoaWdoZXN0Um9vdC0+ZG9j
dW1lbnQoKS5mcmFtZSgpKQorICAgICAgICBhdXRvIGhpZ2hlc3RSb290ID0gbWFrZVJlZlB0ciho
aWdoZXN0RWRpdGFibGVSb290KG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24ocmFuZ2Uuc3Rh
cnQpKSk7CisgICAgICAgIGlmICghaGlnaGVzdFJvb3QgfHwgaGlnaGVzdFJvb3QgIT0gaGlnaGVz
dEVkaXRhYmxlUm9vdChtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKHJhbmdlLmVuZCkpIHx8
ICFoaWdoZXN0Um9vdC0+ZG9jdW1lbnQoKS5mcmFtZSgpKQogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIGF1dG8gc2NvcGUgPSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKmhp
Z2hlc3RSb290KTsKICAgICAgICAgcmVwbGFjZW1lbnRSYW5nZXMuYXBwZW5kKHsgV1RGTW92ZSho
aWdoZXN0Um9vdCksIGNoYXJhY3RlclJhbmdlKHNjb3BlLCByYW5nZSkgfSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvaW9zL0ZyYW1lSU9TLm1tCmluZGV4IDZmN2Q5ZjcwMDY2MDA3NzlkMzU3MzVjOGZhM2FkNTFj
M2U5M2I4OTAuLjMyZDMyZTU5YjI0MjY1Mjg2NzEwYTVmM2Y3MDUzZTE4MTZhZDllM2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCkBAIC03NDAsNyArNzQwLDcgQEAgTlNBcnJheSAq
RnJhbWU6OmludGVycHJldGF0aW9uc0ZvckN1cnJlbnRSb290KCkgY29uc3QKICAgICBWZWN0b3I8
VmVjdG9yPFVDaGFyPj4gaW50ZXJwcmV0YXRpb25zOwogICAgIGludGVycHJldGF0aW9ucy5ncm93
KGludGVycHJldGF0aW9uc0NvdW50KTsKIAotICAgIFBvc2l0aW9uIHByZWNlZGluZ1RleHRTdGFy
dFBvc2l0aW9uID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJvb3QsIDApOworICAgIFBv
c2l0aW9uIHByZWNlZGluZ1RleHRTdGFydFBvc2l0aW9uID0gbWFrZURlcHJlY2F0ZWRMZWdhY3lQ
b3NpdGlvbihyb290LCAwKTsKIAogICAgIHVuc2lnbmVkIGNvbWJpbmF0aW9uc1NvRmFyID0gMTsK
IApAQCAtNzcwLDcgKzc3MCw3IEBAIE5TQXJyYXkgKkZyYW1lOjppbnRlcnByZXRhdGlvbnNGb3JD
dXJyZW50Um9vdCgpIGNvbnN0CiAKICAgICAgICAgICAgIGNvbWJpbmF0aW9uc1NvRmFyICo9IGlu
dGVycHJldGF0aW9uc0NvdW50Rm9yQ3VycmVudE1hcmtlcjsKIAotICAgICAgICAgICAgcHJlY2Vk
aW5nVGV4dFN0YXJ0UG9zaXRpb24gPSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24ocmFuZ2VG
b3JNYXJrZXIuZW5kKTsKKyAgICAgICAgICAgIHByZWNlZGluZ1RleHRTdGFydFBvc2l0aW9uID0g
bWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihyYW5nZUZvck1hcmtlci5lbmQpOwogICAgICAg
ICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1h
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcAppbmRleCBhODI0
NzkxYzIwZjQ5MjhiYjQ1NDczZWEwNWQzM2QwYWZjMzgyNWUyLi4zZTk5YmY4MDcwYzA4YTcyZDMx
ODk0MDkzOGE4ZGNiZDg2M2Q4NmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9EcmFnSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5j
cHAKQEAgLTE2MCwxMiArMTYwLDEyIEBAIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JS
YW5nZShGcmFtZSYgZnJhbWUsIGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgYm9vCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgLy8gVG8gc25hcHNob3QgdGhlIHJhbmdlLCB0ZW1wb3Jh
cmlseSBzZWxlY3QgaXQgYW5kIHRha2Ugc2VsZWN0aW9uIHNuYXBzaG90LgotICAgIFBvc2l0aW9u
IHN0YXJ0ID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJhbmdlLnN0YXJ0KTsKKyAgICBQ
b3NpdGlvbiBzdGFydCA9IG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24ocmFuZ2Uuc3RhcnQp
OwogICAgIFBvc2l0aW9uIGNhbmRpZGF0ZSA9IHN0YXJ0LmRvd25zdHJlYW0oKTsKICAgICBpZiAo
Y2FuZGlkYXRlLmRlcHJlY2F0ZWROb2RlKCkgJiYgY2FuZGlkYXRlLmRlcHJlY2F0ZWROb2RlKCkt
PnJlbmRlcmVyKCkpCiAgICAgICAgIHN0YXJ0ID0gY2FuZGlkYXRlOwogCi0gICAgUG9zaXRpb24g
ZW5kID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJhbmdlLmVuZCk7CisgICAgUG9zaXRp
b24gZW5kID0gbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihyYW5nZS5lbmQpOwogICAgIGNh
bmRpZGF0ZSA9IGVuZC51cHN0cmVhbSgpOwogICAgIGlmIChjYW5kaWRhdGUuZGVwcmVjYXRlZE5v
ZGUoKSAmJiBjYW5kaWRhdGUuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKSkKICAgICAgICAg
ZW5kID0gY2FuZGlkYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrRmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tG
bG93LmNwcAppbmRleCBmYWU3MzViOTQzZWRiNTY4NTVjMjdjM2EzMjBhOTdlOTBlZTYyZWExLi5k
NjQ4MDdjMWM1MzllNGI1NmYyMGUzNWE4MTBmOWQ0NDJiYTlhNmQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApAQCAtMzQwNSwxMyArMzQwNSwxMyBA
QCBQb3NpdGlvbiBSZW5kZXJCbG9ja0Zsb3c6OnBvc2l0aW9uRm9yQm94KElubGluZUJveCAqYm94
LCBib29sIHN0YXJ0KSBjb25zdAogICAgICAgICByZXR1cm4gUG9zaXRpb24oKTsKIAogICAgIGlm
ICghYm94LT5yZW5kZXJlcigpLm5vblBzZXVkb05vZGUoKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0
ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub25Qc2V1ZG9FbGVtZW50KCksIHN0YXJ0ID8gY2FyZXRN
aW5PZmZzZXQoKSA6IGNhcmV0TWF4T2Zmc2V0KCkpOworICAgICAgICByZXR1cm4gbWFrZURlcHJl
Y2F0ZWRMZWdhY3lQb3NpdGlvbihub25Qc2V1ZG9FbGVtZW50KCksIHN0YXJ0ID8gY2FyZXRNaW5P
ZmZzZXQoKSA6IGNhcmV0TWF4T2Zmc2V0KCkpOwogCiAgICAgaWYgKCFpczxJbmxpbmVUZXh0Qm94
PigqYm94KSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihib3gt
PnJlbmRlcmVyKCkubm9uUHNldWRvTm9kZSgpLCBzdGFydCA/IGJveC0+cmVuZGVyZXIoKS5jYXJl
dE1pbk9mZnNldCgpIDogYm94LT5yZW5kZXJlcigpLmNhcmV0TWF4T2Zmc2V0KCkpOworICAgICAg
ICByZXR1cm4gbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihib3gtPnJlbmRlcmVyKCkubm9u
UHNldWRvTm9kZSgpLCBzdGFydCA/IGJveC0+cmVuZGVyZXIoKS5jYXJldE1pbk9mZnNldCgpIDog
Ym94LT5yZW5kZXJlcigpLmNhcmV0TWF4T2Zmc2V0KCkpOwogCiAgICAgYXV0byYgdGV4dEJveCA9
IGRvd25jYXN0PElubGluZVRleHRCb3g+KCpib3gpOwotICAgIHJldHVybiBjcmVhdGVMZWdhY3lF
ZGl0aW5nUG9zaXRpb24odGV4dEJveC5yZW5kZXJlcigpLm5vblBzZXVkb05vZGUoKSwgc3RhcnQg
PyB0ZXh0Qm94LnN0YXJ0KCkgOiB0ZXh0Qm94LnN0YXJ0KCkgKyB0ZXh0Qm94LmxlbigpKTsKKyAg
ICByZXR1cm4gbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbih0ZXh0Qm94LnJlbmRlcmVyKCku
bm9uUHNldWRvTm9kZSgpLCBzdGFydCA/IHRleHRCb3guc3RhcnQoKSA6IHRleHRCb3guc3RhcnQo
KSArIHRleHRCb3gubGVuKCkpOwogfQogCiBSZW5kZXJUZXh0KiBSZW5kZXJCbG9ja0Zsb3c6OmZp
bmRDbG9zZXN0VGV4dEF0QWJzb2x1dGVQb2ludChjb25zdCBGbG9hdFBvaW50JiBwb2ludCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggOTMyNTU0NmJjODJh
MjAzMGVmYTgxOGM5NzljMzY2YzM3M2QxMmIwNC4uNjJmMDQ4Yzg2NTI0ODU4NTYyNGYzM2YwZmVj
MmQ4YTU2OTZlOWVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5j
cHAKQEAgLTE2NzEsNyArMTY3MSw3IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJPYmplY3Q6OmNy
ZWF0ZVZpc2libGVQb3NpdGlvbihpbnQgb2Zmc2V0LCBBZmZpbml0eSBhZmZpbml0CiAgICAgaWYg
KE5vZGUqIG5vZGUgPSBub25Qc2V1ZG9Ob2RlKCkpIHsKICAgICAgICAgaWYgKCFub2RlLT5oYXNF
ZGl0YWJsZVN0eWxlKCkpIHsKICAgICAgICAgICAgIC8vIElmIGl0IGNhbiBiZSBmb3VuZCwgd2Ug
cHJlZmVyIGEgdmlzdWFsbHkgZXF1aXZhbGVudCBwb3NpdGlvbiB0aGF0IGlzIGVkaXRhYmxlLiAK
LSAgICAgICAgICAgIFBvc2l0aW9uIHBvc2l0aW9uID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0
aW9uKG5vZGUsIG9mZnNldCk7CisgICAgICAgICAgICBQb3NpdGlvbiBwb3NpdGlvbiA9IG1ha2VE
ZXByZWNhdGVkTGVnYWN5UG9zaXRpb24obm9kZSwgb2Zmc2V0KTsKICAgICAgICAgICAgIFBvc2l0
aW9uIGNhbmRpZGF0ZSA9IHBvc2l0aW9uLmRvd25zdHJlYW0oQ2FuQ3Jvc3NFZGl0aW5nQm91bmRh
cnkpOwogICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZS5kZXByZWNhdGVkTm9kZSgpLT5oYXNFZGl0
YWJsZVN0eWxlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihjYW5k
aWRhdGUsIGFmZmluaXR5KTsKQEAgLTE2ODAsNyArMTY4MCw3IEBAIFZpc2libGVQb3NpdGlvbiBS
ZW5kZXJPYmplY3Q6OmNyZWF0ZVZpc2libGVQb3NpdGlvbihpbnQgb2Zmc2V0LCBBZmZpbml0eSBh
ZmZpbml0CiAgICAgICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihjYW5kaWRhdGUs
IGFmZmluaXR5KTsKICAgICAgICAgfQogICAgICAgICAvLyBGSVhNRTogRWxpbWluYXRlIGxlZ2Fj
eSBlZGl0aW5nIHBvc2l0aW9ucwotICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKGNyZWF0
ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLCBvZmZzZXQpLCBhZmZpbml0eSk7CisgICAgICAg
IHJldHVybiBWaXNpYmxlUG9zaXRpb24obWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihub2Rl
LCBvZmZzZXQpLCBhZmZpbml0eSk7CiAgICAgfQogCiAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBj
cm9zcyB0aGUgYm91bmRhcnkgYmV0d2VlbiBlZGl0YWJsZSBhbmQgbm9uLWVkaXRhYmxlCkBAIC0y
MTQ4LDcgKzIxNDgsNyBAQCBhdXRvIFJlbmRlck9iamVjdDo6Y29sbGVjdFNlbGVjdGlvblJlY3Rz
SW50ZXJuYWwoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKSAtPiBTZQogICAgICAgICAvLyBPbmx5
IHNldCB0aGUgbGluZSBicmVhayBiaXQgaWYgdGhlIGVuZCBvZiB0aGUgcmFuZ2UgYWN0dWFsbHkK
ICAgICAgICAgLy8gZXh0ZW5kcyBhbGwgdGhlIHdheSB0byBpbmNsdWRlIHRoZSA8YnI+LiBWaXNp
YmxlUG9zaXRpb24gaGVscHMgdG8KICAgICAgICAgLy8gZmlndXJlIHRoaXMgb3V0LgotICAgICAg
ICBpZiAoaXM8SFRNTEJSRWxlbWVudD4oVmlzaWJsZVBvc2l0aW9uKGNyZWF0ZUxlZ2FjeUVkaXRp
bmdQb3NpdGlvbihyYW5nZS5lbmQpKS5kZWVwRXF1aXZhbGVudCgpLmZpcnN0Tm9kZSgpKSkKKyAg
ICAgICAgaWYgKGlzPEhUTUxCUkVsZW1lbnQ+KFZpc2libGVQb3NpdGlvbihtYWtlQ29udGFpbmVy
T2Zmc2V0UG9zaXRpb24ocmFuZ2UuZW5kKSkuZGVlcEVxdWl2YWxlbnQoKS5maXJzdE5vZGUoKSkp
CiAgICAgICAgICAgICByZWN0cy5sYXN0KCkuc2V0SXNMaW5lQnJlYWsodHJ1ZSk7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggOTRlOWVhYTVmZTVmYWQzY2Y5
YjU4N2JjMmVmYzdkMzM5NDU2M2Q0Ni4uMzkwZmQ5OTM1MmU1NWE1NjMzY2MzYjMxZDFhODljNTcy
NWUxZWUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNDAwNCw4ICs0
MDA0LDggQEAgRXhjZXB0aW9uT3I8UmVmPERPTVJlY3Q+PiBJbnRlcm5hbHM6OnNlbGVjdGlvbkJv
dW5kcygpCiB2b2lkIEludGVybmFsczo6c2V0U2VsZWN0aW9uV2l0aG91dFZhbGlkYXRpb24oUmVm
PE5vZGU+IGJhc2VOb2RlLCB1bnNpZ25lZCBiYXNlT2Zmc2V0LCBSZWZQdHI8Tm9kZT4gZXh0ZW50
Tm9kZSwgdW5zaWduZWQgZXh0ZW50T2Zmc2V0KQogewogICAgIGNvbnRleHREb2N1bWVudCgpLT5m
cmFtZSgpLT5zZWxlY3Rpb24oKS5tb3ZlVG8oCi0gICAgICAgIFZpc2libGVQb3NpdGlvbiB7IGNy
ZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihiYXNlTm9kZS5wdHIoKSwgYmFzZU9mZnNldCkgfSwK
LSAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHsgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKGV4
dGVudE5vZGUuZ2V0KCksIGV4dGVudE9mZnNldCkgfSk7CisgICAgICAgIFZpc2libGVQb3NpdGlv
biB7IG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24oYmFzZU5vZGUucHRyKCksIGJhc2VPZmZz
ZXQpIH0sCisgICAgICAgIFZpc2libGVQb3NpdGlvbiB7IG1ha2VEZXByZWNhdGVkTGVnYWN5UG9z
aXRpb24oZXh0ZW50Tm9kZS5nZXQoKSwgZXh0ZW50T2Zmc2V0KSB9KTsKIH0KIAogRXhjZXB0aW9u
T3I8Ym9vbD4gSW50ZXJuYWxzOjppc1BsdWdpblVuYXZhaWxhYmlsaXR5SW5kaWNhdG9yT2JzY3Vy
ZWQoRWxlbWVudCYgZWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggNTZlY2ZlMmZhODNkMGVjZjgzNTJhM2ZkOTk0
MzQ4MDlkMDZjMmI0Mi4uMGFkY2Q3N2JmNWQ3MTY3OWIzNGRjNWM4Mzk2ZjllOTI5Y2EzZDkxZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW0KQEAgLTEzNjEsOCArMTM2MSw4IEBAIHZvaWQgV2ViUGFnZTo6c2VsZWN0V2l0aEdlc3R1
cmUoY29uc3QgSW50UG9pbnQmIHBvaW50LCBHZXN0dXJlVHlwZSBnZXN0dXJlVHlwZSwKICAgICAg
ICAgaWYgKCFmcmFtZS5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpKQogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGF1dG8gbWFya2VkUmFuZ2UgPSBmcmFtZS5lZGl0b3IoKS5jb21wb3NpdGlv
blJhbmdlKCk7Ci0gICAgICAgIGF1dG8gc3RhcnRQb3NpdGlvbiA9IFZpc2libGVQb3NpdGlvbiB7
IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihtYXJrZWRSYW5nZS0+c3RhcnQpIH07Ci0gICAg
ICAgIHBvc2l0aW9uID0gc3RkOjpjbGFtcChwb3NpdGlvbiwgc3RhcnRQb3NpdGlvbiwgVmlzaWJs
ZVBvc2l0aW9uIHsgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG1hcmtlZFJhbmdlLT5lbmQp
IH0pOworICAgICAgICBhdXRvIHN0YXJ0UG9zaXRpb24gPSBWaXNpYmxlUG9zaXRpb24geyBtYWtl
RGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKG1hcmtlZFJhbmdlLT5zdGFydCkgfTsKKyAgICAgICAg
cG9zaXRpb24gPSBzdGQ6OmNsYW1wKHBvc2l0aW9uLCBzdGFydFBvc2l0aW9uLCBWaXNpYmxlUG9z
aXRpb24geyBtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKG1hcmtlZFJhbmdlLT5lbmQpIH0p
OwogICAgICAgICBpZiAod2tHZXN0dXJlU3RhdGUgIT0gR2VzdHVyZVJlY29nbml6ZXJTdGF0ZTo6
QmVnYW4pCiAgICAgICAgICAgICBmbGFncyA9IGRpc3RhbmNlQmV0d2VlblBvc2l0aW9ucyhzdGFy
dFBvc2l0aW9uLCBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgpKSAhPSBkaXN0
YW5jZUJldHdlZW5Qb3NpdGlvbnMoc3RhcnRQb3NpdGlvbiwgcG9zaXRpb24pID8gUGhyYXNlQm91
bmRhcnlDaGFuZ2VkIDogT3B0aW9uU2V0PFNlbGVjdGlvbkZsYWdzPiB7IH07CiAgICAgICAgIGVs
c2UKQEAgLTEzOTMsNyArMTM5Myw3IEBAIHZvaWQgV2ViUGFnZTo6c2VsZWN0V2l0aEdlc3R1cmUo
Y29uc3QgSW50UG9pbnQmIHBvaW50LCBHZXN0dXJlVHlwZSBnZXN0dXJlVHlwZSwKICAgICAgICAg
ICAgIGNhc2UgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZTo6Q2hhbmdlZDoKICAgICAgICAgICAgICAg
ICBpZiAobV9zdGFydGluZ0dlc3R1cmVSYW5nZSkgewogICAgICAgICAgICAgICAgICAgICBhdXRv
JiBzdGFydCA9IG1fc3RhcnRpbmdHZXN0dXJlUmFuZ2UtPnN0YXJ0OwotICAgICAgICAgICAgICAg
ICAgICBpZiAoY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHN0YXJ0KSA8IHBvc2l0aW9uKQor
ICAgICAgICAgICAgICAgICAgICBpZiAobWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihzdGFy
dCkgPCBwb3NpdGlvbikKICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlID0gbWFrZVNpbXBs
ZVJhbmdlKHN0YXJ0LCBwb3NpdGlvbik7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJhbmdlID0gbWFrZVNpbXBsZVJhbmdlKHBvc2l0aW9uLCBzdGFy
dCk7CkBAIC0xNDI1LDkgKzE0MjUsOSBAQCB2b2lkIFdlYlBhZ2U6OnNlbGVjdFdpdGhHZXN0dXJl
KGNvbnN0IEludFBvaW50JiBwb2ludCwgR2VzdHVyZVR5cGUgZ2VzdHVyZVR5cGUsCiAgICAgICAg
ICAgICBpZiAoIW1fY3VycmVudFdvcmRSYW5nZSkKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIHJhbmdlID0gbV9jdXJyZW50V29yZFJhbmdlOwotICAgICAgICAgICAgaWYgKHBv
c2l0aW9uIDwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJhbmdlLT5zdGFydCkpCisgICAg
ICAgICAgICBpZiAocG9zaXRpb24gPCBtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKHJhbmdl
LT5zdGFydCkpCiAgICAgICAgICAgICAgICAgcmFuZ2UtPnN0YXJ0ID0gKm1ha2VCb3VuZGFyeVBv
aW50KHBvc2l0aW9uKTsKLSAgICAgICAgICAgIGlmIChwb3NpdGlvbiA+IGNyZWF0ZUxlZ2FjeUVk
aXRpbmdQb3NpdGlvbihyYW5nZS0+ZW5kKSkKKyAgICAgICAgICAgIGlmIChwb3NpdGlvbiA+IG1h
a2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24ocmFuZ2UtPmVuZCkpCiAgICAgICAgICAgICAgICAg
cmFuZ2UtPmVuZCA9ICptYWtlQm91bmRhcnlQb2ludChwb3NpdGlvbik7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBHZXN0dXJlUmVjb2duaXplclN0YXRlOjpFbmRlZDoKQEAgLTE3
NjgsOCArMTc2OCw4IEBAIHZvaWQgV2ViUGFnZTo6ZXh0ZW5kU2VsZWN0aW9uKFdlYkNvcmU6OlRl
eHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgQ29tcGxldGlvbkhhCiAgICAgSW50UG9pbnQgZW5k
TG9jYXRpb25Gb3JTeW50aGV0aWNNb3VzZUV2ZW50czsKICAgICBib29sIHNob3VsZERpc3BhdGNo
TW91c2VFdmVudHMgPSBzaG91bGREaXNwYXRjaFN5bnRoZXRpY01vdXNlRXZlbnRzV2hlbk1vZGlm
eWluZ1NlbGVjdGlvbigpOwogICAgIGlmIChzaG91bGREaXNwYXRjaE1vdXNlRXZlbnRzKSB7Ci0g
ICAgICAgIGF1dG8gc3RhcnRMb2NhdGlvbkZvclN5bnRoZXRpY01vdXNlRXZlbnRzID0gZnJhbWUu
dmlldygpLT5jb250ZW50c1RvUm9vdFZpZXcoVmlzaWJsZVBvc2l0aW9uKGNyZWF0ZUxlZ2FjeUVk
aXRpbmdQb3NpdGlvbih3b3JkUmFuZ2UtPnN0YXJ0KSkuYWJzb2x1dGVDYXJldEJvdW5kcygpKS5j
ZW50ZXIoKTsKLSAgICAgICAgZW5kTG9jYXRpb25Gb3JTeW50aGV0aWNNb3VzZUV2ZW50cyA9IGZy
YW1lLnZpZXcoKS0+Y29udGVudHNUb1Jvb3RWaWV3KFZpc2libGVQb3NpdGlvbihjcmVhdGVMZWdh
Y3lFZGl0aW5nUG9zaXRpb24od29yZFJhbmdlLT5lbmQpKS5hYnNvbHV0ZUNhcmV0Qm91bmRzKCkp
LmNlbnRlcigpOworICAgICAgICBhdXRvIHN0YXJ0TG9jYXRpb25Gb3JTeW50aGV0aWNNb3VzZUV2
ZW50cyA9IGZyYW1lLnZpZXcoKS0+Y29udGVudHNUb1Jvb3RWaWV3KFZpc2libGVQb3NpdGlvbiht
YWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKHdvcmRSYW5nZS0+c3RhcnQpKS5hYnNvbHV0ZUNh
cmV0Qm91bmRzKCkpLmNlbnRlcigpOworICAgICAgICBlbmRMb2NhdGlvbkZvclN5bnRoZXRpY01v
dXNlRXZlbnRzID0gZnJhbWUudmlldygpLT5jb250ZW50c1RvUm9vdFZpZXcoVmlzaWJsZVBvc2l0
aW9uKG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24od29yZFJhbmdlLT5lbmQpKS5hYnNvbHV0
ZUNhcmV0Qm91bmRzKCkpLmNlbnRlcigpOwogICAgICAgICBkaXNwYXRjaFN5bnRoZXRpY01vdXNl
RXZlbnRzRm9yU2VsZWN0aW9uR2VzdHVyZShTZWxlY3Rpb25Ub3VjaDo6U3RhcnRlZCwgc3RhcnRM
b2NhdGlvbkZvclN5bnRoZXRpY01vdXNlRXZlbnRzKTsKICAgICAgICAgZGlzcGF0Y2hTeW50aGV0
aWNNb3VzZUV2ZW50c0ZvclNlbGVjdGlvbkdlc3R1cmUoU2VsZWN0aW9uVG91Y2g6Ok1vdmVkLCBl
bmRMb2NhdGlvbkZvclN5bnRoZXRpY01vdXNlRXZlbnRzKTsKICAgICB9CkBAIC0yMTQ0LDE1ICsy
MTQ0LDE1IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5k
Qm91bmRhcnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBhdXRvIGluaXRpYWxTZWxlY3Rpb25TdGFydFBvc2l0aW9uID0gY3JlYXRlTGVnYWN5
RWRpdGluZ1Bvc2l0aW9uKG1faW5pdGlhbFNlbGVjdGlvbi0+c3RhcnQpOwotICAgIGF1dG8gaW5p
dGlhbFNlbGVjdGlvbkVuZFBvc2l0aW9uID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG1f
aW5pdGlhbFNlbGVjdGlvbi0+ZW5kKTsKKyAgICBhdXRvIGluaXRpYWxTZWxlY3Rpb25TdGFydFBv
c2l0aW9uID0gbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihtX2luaXRpYWxTZWxlY3Rpb24t
PnN0YXJ0KTsKKyAgICBhdXRvIGluaXRpYWxTZWxlY3Rpb25FbmRQb3NpdGlvbiA9IG1ha2VEZXBy
ZWNhdGVkTGVnYWN5UG9zaXRpb24obV9pbml0aWFsU2VsZWN0aW9uLT5lbmQpOwogCiAgICAgVmlz
aWJsZVBvc2l0aW9uIHNlbGVjdGlvblN0YXJ0ID0gaW5pdGlhbFNlbGVjdGlvblN0YXJ0UG9zaXRp
b247CiAgICAgVmlzaWJsZVBvc2l0aW9uIHNlbGVjdGlvbkVuZCA9IGluaXRpYWxTZWxlY3Rpb25F
bmRQb3NpdGlvbjsKICAgICBpZiAocG9zaXRpb24gPiBpbml0aWFsU2VsZWN0aW9uRW5kUG9zaXRp
b24pCi0gICAgICAgIHNlbGVjdGlvbkVuZCA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihu
ZXdSYW5nZS0+ZW5kKTsKKyAgICAgICAgc2VsZWN0aW9uRW5kID0gbWFrZURlcHJlY2F0ZWRMZWdh
Y3lQb3NpdGlvbihuZXdSYW5nZS0+ZW5kKTsKICAgICBlbHNlIGlmIChwb3NpdGlvbiA8IGluaXRp
YWxTZWxlY3Rpb25TdGFydFBvc2l0aW9uKQotICAgICAgICBzZWxlY3Rpb25TdGFydCA9IGNyZWF0
ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihuZXdSYW5nZS0+c3RhcnQpOworICAgICAgICBzZWxlY3Rp
b25TdGFydCA9IG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24obmV3UmFuZ2UtPnN0YXJ0KTsK
IAogICAgIGlmIChhdXRvIHJhbmdlID0gbWFrZVNpbXBsZVJhbmdlKHNlbGVjdGlvblN0YXJ0LCBz
ZWxlY3Rpb25FbmQpKQogICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdl
KHJhbmdlLCBBZmZpbml0eTo6VXBzdHJlYW0sIFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpTaG91
bGRDbG9zZVR5cGluZzo6WWVzLCBVc2VyVHJpZ2dlcmVkKTsKQEAgLTIzMDUsOCArMjMwNSw4IEBA
IHZvaWQgV2ViUGFnZTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uRGF0YShjb25zdCBTdHJpbmcmIHRl
eHRGb3JBdXRvY29ycmVjdGlvbiwgQ29tCiAgICAgYXV0byB0ZXh0Rm9yUmFuZ2UgPSBwbGFpblRl
eHRGb3JDb250ZXh0KHJhbmdlKTsKICAgICBjb25zdCB1bnNpZ25lZCBtYXhTZWFyY2hBdHRlbXB0
cyA9IDU7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7ICBpIDwgbWF4U2VhcmNoQXR0ZW1wdHMgJiYg
dGV4dEZvclJhbmdlICE9IHRleHRGb3JBdXRvY29ycmVjdGlvbjsgKytpKSB7Ci0gICAgICAgIGF1
dG8gcG9zaXRpb24gPSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24ocmFuZ2UtPnN0YXJ0KS5w
cmV2aW91cygpOwotICAgICAgICBpZiAocG9zaXRpb24uaXNOdWxsKCkgfHwgcG9zaXRpb24gPT0g
Y3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJhbmdlLT5zdGFydCkpCisgICAgICAgIGF1dG8g
cG9zaXRpb24gPSBtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKHJhbmdlLT5zdGFydCkucHJl
dmlvdXMoKTsKKyAgICAgICAgaWYgKHBvc2l0aW9uLmlzTnVsbCgpIHx8IHBvc2l0aW9uID09IG1h
a2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24ocmFuZ2UtPnN0YXJ0KSkKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICByYW5nZSA9IHsgeyB3b3JkUmFuZ2VGcm9tUG9zaXRpb24ocG9zaXRpb24p
LT5zdGFydCwgcmFuZ2UtPmVuZCB9IH07CiAgICAgICAgIHRleHRGb3JSYW5nZSA9IHBsYWluVGV4
dEZvckNvbnRleHQocmFuZ2UpOwpAQCAtMjQxMiw3ICsyNDEyLDcgQEAgYm9vbCBXZWJQYWdlOjph
cHBseUF1dG9jb3JyZWN0aW9uSW50ZXJuYWwoY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25z
dCBTdHJpbmcKICAgICAvLyBDb3JyZWN0bHkgZGV0ZXJtaW5lIGFmZmluaXR5LCB1c2luZyBsb2dp
YyBjdXJyZW50bHkgb25seSBwcmVzZW50IGluIFZpc2libGVQb3NpdGlvbgogICAgIGF1dG8gYWZm
aW5pdHkgPSBBZmZpbml0eTo6RG93bnN0cmVhbTsKICAgICBpZiAocmFuZ2UgJiYgcmFuZ2UtPmNv
bGxhcHNlZCgpKQotICAgICAgICBhZmZpbml0eSA9IFZpc2libGVQb3NpdGlvbihjcmVhdGVMZWdh
Y3lFZGl0aW5nUG9zaXRpb24ocmFuZ2UtPnN0YXJ0KSwgQWZmaW5pdHk6OlVwc3RyZWFtKS5hZmZp
bml0eSgpOworICAgICAgICBhZmZpbml0eSA9IFZpc2libGVQb3NpdGlvbihtYWtlRGVwcmVjYXRl
ZExlZ2FjeVBvc2l0aW9uKHJhbmdlLT5zdGFydCksIEFmZmluaXR5OjpVcHN0cmVhbSkuYWZmaW5p
dHkoKTsKICAgICAKICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHJhbmdl
LCBhZmZpbml0eSwgV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZ
ZXMpOwogICAgIGlmIChjb3JyZWN0aW9uLmxlbmd0aCgpKQpAQCAtMjU1OSw4ICsyNTU5LDggQEAg
c3RhdGljIHZvaWQgZm9jdXNlZEVsZW1lbnRQb3NpdGlvbkluZm9ybWF0aW9uKFdlYlBhZ2UmIHBh
Z2UsIEVsZW1lbnQmIGZvY3VzZWRFbGUKICAgICBpZiAoIWNvbXBvc2l0aW9uUmFuZ2UpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGF1dG8gc3RhcnRQb3NpdGlvbiA9IGNyZWF0ZUxlZ2FjeUVkaXRp
bmdQb3NpdGlvbihjb21wb3NpdGlvblJhbmdlLT5zdGFydCk7Ci0gICAgYXV0byBlbmRQb3NpdGlv
biA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihjb21wb3NpdGlvblJhbmdlLT5lbmQpOwor
ICAgIGF1dG8gc3RhcnRQb3NpdGlvbiA9IG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24oY29t
cG9zaXRpb25SYW5nZS0+c3RhcnQpOworICAgIGF1dG8gZW5kUG9zaXRpb24gPSBtYWtlRGVwcmVj
YXRlZExlZ2FjeVBvc2l0aW9uKGNvbXBvc2l0aW9uUmFuZ2UtPmVuZCk7CiAgICAgaWYgKHBvc2l0
aW9uIDwgc3RhcnRQb3NpdGlvbikKICAgICAgICAgcG9zaXRpb24gPSBzdGFydFBvc2l0aW9uOwog
ICAgIGVsc2UgaWYgKHBvc2l0aW9uID4gZW5kUG9zaXRpb24pCkBAIC0yNjEyLDkgKzI2MTIsOSBA
QCBzdGF0aWMgdm9pZCBkYXRhRGV0ZWN0b3JMaW5rUG9zaXRpb25JbmZvcm1hdGlvbihFbGVtZW50
JiBlbGVtZW50LCBJbnRlcmFjdGlvbkluZgogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgYXV0
byByYW5nZSA9IG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhlbGVtZW50KTsKLSAgICBp
bmZvLnRleHRCZWZvcmUgPSBwbGFpblRleHRGb3JEaXNwbGF5KHJhbmdlRXhwYW5kZWRCeUNoYXJh
Y3RlcnNJbkRpcmVjdGlvbkF0V29yZEJvdW5kYXJ5KGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlv
bihyYW5nZS5zdGFydCksCisgICAgaW5mby50ZXh0QmVmb3JlID0gcGxhaW5UZXh0Rm9yRGlzcGxh
eShyYW5nZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSW5EaXJlY3Rpb25BdFdvcmRCb3VuZGFyeShtYWtl
RGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKHJhbmdlLnN0YXJ0KSwKICAgICAgICAgZGF0YURldGVj
dGlvbkV4dGVuZGVkQ29udGV4dExlbmd0aCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCkp
OwotICAgIGluZm8udGV4dEFmdGVyID0gcGxhaW5UZXh0Rm9yRGlzcGxheShyYW5nZUV4cGFuZGVk
QnlDaGFyYWN0ZXJzSW5EaXJlY3Rpb25BdFdvcmRCb3VuZGFyeShjcmVhdGVMZWdhY3lFZGl0aW5n
UG9zaXRpb24ocmFuZ2UuZW5kKSwKKyAgICBpbmZvLnRleHRBZnRlciA9IHBsYWluVGV4dEZvckRp
c3BsYXkocmFuZ2VFeHBhbmRlZEJ5Q2hhcmFjdGVyc0luRGlyZWN0aW9uQXRXb3JkQm91bmRhcnko
bWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihyYW5nZS5lbmQpLAogICAgICAgICBkYXRhRGV0
ZWN0aW9uRXh0ZW5kZWRDb250ZXh0TGVuZ3RoLCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQp
KTsKIH0KIApAQCAtNDE4NSw3ICs0MTg1LDcgQEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0RG9jdW1l
bnRFZGl0aW5nQ29udGV4dChEb2N1bWVudEVkaXRpbmdDb250ZXh0UmVxdWVzdCByZXF1ZXMKICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KLSAgICAgICAgYXV0byBtaWRwb2ludCA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3Np
dGlvbihyZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24oc2NvcGUsIG1pZHBvaW50TG9jYXRpb24udW5z
YWZlR2V0KCkpKTsKKyAgICAgICAgYXV0byBtaWRwb2ludCA9IG1ha2VEZXByZWNhdGVkTGVnYWN5
UG9zaXRpb24ocmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uKHNjb3BlLCBtaWRwb2ludExvY2F0aW9u
LnVuc2FmZUdldCgpKSk7CiAKICAgICAgICAgc3RhcnRPZlJhbmdlT2ZJbnRlcmVzdEluU2VsZWN0
aW9uID0gc3RhcnRPZldvcmQobWlkcG9pbnQpOwogICAgICAgICBpZiAoc3RhcnRPZlJhbmdlT2ZJ
bnRlcmVzdEluU2VsZWN0aW9uIDwgcmFuZ2VPZkludGVyZXN0U3RhcnQpIHsKQEAgLTQyMDgsOCAr
NDIwOCw4IEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVzdERvY3VtZW50RWRpdGluZ0NvbnRleHQoRG9j
dW1lbnRFZGl0aW5nQ29udGV4dFJlcXVlc3QgcmVxdWVzCiAgICAgICAgIGlmICh3YW50c01hcmtl
ZFRleHRSZWN0cyAmJiBjb21wb3NpdGlvblJhbmdlKSB7CiAgICAgICAgICAgICAvLyBJbiB0aGUg
Y2FzZSB3aGVyZSB0aGUgY2xpZW50IGhhcyByZXF1ZXN0ZWQgbWFya2VkIHRleHQgcmVjdHMgbWFr
ZSBzdXJlIHRoYXQgdGhlIGNvbnRleHQKICAgICAgICAgICAgIC8vIHJhbmdlIGVuY29tcGFzc2Vz
IHRoZSBlbnRpcmUgbWFya2VkIHRleHQgcmFuZ2Ugc28gdGhhdCB3ZSBkb24ndCByZXR1cm4gYSB0
cnVuY2F0ZWQgcmVzdWx0LgotICAgICAgICAgICAgYXV0byBjb21wb3NpdGlvblN0YXJ0ID0gY3Jl
YXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKGNvbXBvc2l0aW9uUmFuZ2UtPnN0YXJ0KTsKLSAgICAg
ICAgICAgIGF1dG8gY29tcG9zaXRpb25FbmQgPSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24o
Y29tcG9zaXRpb25SYW5nZS0+ZW5kKTsKKyAgICAgICAgICAgIGF1dG8gY29tcG9zaXRpb25TdGFy
dCA9IG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24oY29tcG9zaXRpb25SYW5nZS0+c3RhcnQp
OworICAgICAgICAgICAgYXV0byBjb21wb3NpdGlvbkVuZCA9IG1ha2VEZXByZWNhdGVkTGVnYWN5
UG9zaXRpb24oY29tcG9zaXRpb25SYW5nZS0+ZW5kKTsKICAgICAgICAgICAgIGlmIChjb250ZXh0
QmVmb3JlU3RhcnQgPiBjb21wb3NpdGlvblN0YXJ0KQogICAgICAgICAgICAgICAgIGNvbnRleHRC
ZWZvcmVTdGFydCA9IGNvbXBvc2l0aW9uU3RhcnQ7CiAgICAgICAgICAgICBpZiAoY29udGV4dEFm
dGVyRW5kIDwgY29tcG9zaXRpb25FbmQpCkBAIC00MjI5LDggKzQyMjksOCBAQCB2b2lkIFdlYlBh
Z2U6OnJlcXVlc3REb2N1bWVudEVkaXRpbmdDb250ZXh0KERvY3VtZW50RWRpdGluZ0NvbnRleHRS
ZXF1ZXN0IHJlcXVlcwogICAgIGNvbnRleHQuc2VsZWN0ZWRUZXh0ID0gbWFrZVN0cmluZyhzdGFy
dE9mUmFuZ2VPZkludGVyZXN0SW5TZWxlY3Rpb24sIGVuZE9mUmFuZ2VPZkludGVyZXN0SW5TZWxl
Y3Rpb24pOwogICAgIGNvbnRleHQuY29udGV4dEFmdGVyID0gbWFrZVN0cmluZyhlbmRPZlJhbmdl
T2ZJbnRlcmVzdEluU2VsZWN0aW9uLCBjb250ZXh0QWZ0ZXJFbmQpOwogICAgIGlmIChjb21wb3Np
dGlvblJhbmdlICYmIGludGVyc2VjdHMocmFuZ2VPZkludGVyZXN0LCAqY29tcG9zaXRpb25SYW5n
ZSkpIHsKLSAgICAgICAgVmlzaWJsZVBvc2l0aW9uIGNvbXBvc2l0aW9uU3RhcnQoY3JlYXRlTGVn
YWN5RWRpdGluZ1Bvc2l0aW9uKGNvbXBvc2l0aW9uUmFuZ2UtPnN0YXJ0KSk7Ci0gICAgICAgIFZp
c2libGVQb3NpdGlvbiBjb21wb3NpdGlvbkVuZChjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24o
Y29tcG9zaXRpb25SYW5nZS0+ZW5kKSk7CisgICAgICAgIFZpc2libGVQb3NpdGlvbiBjb21wb3Np
dGlvblN0YXJ0KG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24oY29tcG9zaXRpb25SYW5nZS0+
c3RhcnQpKTsKKyAgICAgICAgVmlzaWJsZVBvc2l0aW9uIGNvbXBvc2l0aW9uRW5kKG1ha2VEZXBy
ZWNhdGVkTGVnYWN5UG9zaXRpb24oY29tcG9zaXRpb25SYW5nZS0+ZW5kKSk7CiAgICAgICAgIGNv
bnRleHQubWFya2VkVGV4dCA9IG1ha2VTdHJpbmcoY29tcG9zaXRpb25TdGFydCwgY29tcG9zaXRp
b25FbmQpOwogICAgICAgICBjb250ZXh0LnNlbGVjdGVkUmFuZ2VJbk1hcmtlZFRleHQubG9jYXRp
b24gPSBkaXN0YW5jZUJldHdlZW5Qb3NpdGlvbnMoc3RhcnRPZlJhbmdlT2ZJbnRlcmVzdEluU2Vs
ZWN0aW9uLCBjb21wb3NpdGlvblN0YXJ0KTsKICAgICAgICAgY29udGV4dC5zZWxlY3RlZFJhbmdl
SW5NYXJrZWRUZXh0Lmxlbmd0aCA9IFtjb250ZXh0LnNlbGVjdGVkVGV4dC5zdHJpbmcgbGVuZ3Ro
XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dl
YlZpc2libGVQb3NpdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBw
b3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbQppbmRleCAyNzczNjNmMWQ0NDY0MjliMmM2NGY2MTNm
NjJjZGRmNjg3ZjZlNmQ3Li44ZmZiYzIyMTQ4YjcwODY2ZWNmZTIwNDNjZjA4YTNhMDZjZDlmMTgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJW
aXNpYmxlUG9zaXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1
cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tCkBAIC00OTgsNyArNDk4LDcgQEAgLSAoV2ViVmlz
aWJsZVBvc2l0aW9uICopc3RhcnRQb3NpdGlvbgogICAgIC8vIFdoZW4gaW4gZWRpdGFibGUgY29u
dGVudCwgd2UgbmVlZCB0byBjYWxjdWxhdGUgdGhlIHN0YXJ0UG9zaXRpb24gZnJvbSB0aGUgYmVn
aW5uaW5nIG9mIHRoZSBlZGl0YWJsZSBhcmVhLgogICAgIGF1dG8mIG5vZGUgPSAqY29yZShzZWxm
KTsKICAgICBpZiAobm9kZS5pc0NvbnRlbnRFZGl0YWJsZSgpKQotICAgICAgICByZXR1cm4gW1dl
YlZpc2libGVQb3NpdGlvbiBfd3JhcFZpc2libGVQb3NpdGlvbjpzdGFydE9mRWRpdGFibGVDb250
ZW50KFZpc2libGVQb3NpdGlvbihjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oJm5vZGUsIDAp
KSldOworICAgICAgICByZXR1cm4gW1dlYlZpc2libGVQb3NpdGlvbiBfd3JhcFZpc2libGVQb3Np
dGlvbjpzdGFydE9mRWRpdGFibGVDb250ZW50KFZpc2libGVQb3NpdGlvbihtYWtlRGVwcmVjYXRl
ZExlZ2FjeVBvc2l0aW9uKCZub2RlLCAwKSkpXTsKICAgICByZXR1cm4gW1tzZWxmIHJhbmdlT2ZD
b250ZW50c10gc3RhcnRQb3NpdGlvbl07CiB9CiAKQEAgLTUwNyw3ICs1MDcsNyBAQCAtIChXZWJW
aXNpYmxlUG9zaXRpb24gKillbmRQb3NpdGlvbgogICAgIC8vIFdoZW4gaW4gZWRpdGFibGUgY29u
dGVudCwgd2UgbmVlZCB0byBjYWxjdWxhdGUgdGhlIGVuZFBvc2l0aW9uIGZyb20gdGhlIGVuZCBv
ZiB0aGUgZWRpdGFibGUgYXJlYS4KICAgICBhdXRvJiBub2RlID0gKmNvcmUoc2VsZik7CiAgICAg
aWYgKG5vZGUuaXNDb250ZW50RWRpdGFibGUoKSkKLSAgICAgICAgcmV0dXJuIFtXZWJWaXNpYmxl
UG9zaXRpb24gX3dyYXBWaXNpYmxlUG9zaXRpb246ZW5kT2ZFZGl0YWJsZUNvbnRlbnQoVmlzaWJs
ZVBvc2l0aW9uKGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbigmbm9kZSwgMCkpKV07CisgICAg
ICAgIHJldHVybiBbV2ViVmlzaWJsZVBvc2l0aW9uIF93cmFwVmlzaWJsZVBvc2l0aW9uOmVuZE9m
RWRpdGFibGVDb250ZW50KFZpc2libGVQb3NpdGlvbihtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0
aW9uKCZub2RlLCAwKSkpXTsKICAgICByZXR1cm4gW1tzZWxmIHJhbmdlT2ZDb250ZW50c10gZW5k
UG9zaXRpb25dOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NVUlLaXRFeHRlbnNpb25zLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJ
S2l0RXh0ZW5zaW9ucy5tbQppbmRleCBhMTY4MzU3MjhjODliZWIxYTlmMGIzM2JhZjEyNWZiYmU4
MWY3ZjViLi5iNTIwNjhkNWM1ZjM1MTYzMGJjY2U5MWNkMjQ1NzVmNTFiM2MwMmVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KQEAg
LTIyMyw3ICsyMjMsNyBAQCAtIChCT09MKWlzU2VsZWN0YWJsZUJsb2NrCiAKIC0gKERPTVJhbmdl
ICopcmFuZ2VPZkNvbnRhaW5pbmdQYXJhZ3JhcGgKIHsKLSAgICBWaXNpYmxlUG9zaXRpb24gcG9z
aXRpb24oY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKGNvcmUoc2VsZiksIDApKTsKKyAgICBW
aXNpYmxlUG9zaXRpb24gcG9zaXRpb24obWFrZUNvbnRhaW5lck9mZnNldFBvc2l0aW9uKGNvcmUo
c2VsZiksIDApKTsKICAgICByZXR1cm4ga2l0KG1ha2VTaW1wbGVSYW5nZShzdGFydE9mUGFyYWdy
YXBoKHBvc2l0aW9uKSwgZW5kT2ZQYXJhZ3JhcGgocG9zaXRpb24pKSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IGE0MmQ0Nzc3Yzg4MTY2
ZTRiMDg2ZmZkNjZlMzU0N2U0ZTYyMWQ1MzMuLjVlNWIzYjlmZmI5ZDEzZTk4MDhhNjQ3MWQxOTYx
OWIwM2VjZjBiMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFt
ZS5tbQpAQCAtMTU1OCw3ICsxNTU4LDcgQEAgLSAoaW50KXdvcmRPZmZzZXRJblJhbmdlOihET01S
YW5nZSAqKXJhbmdlCiAKIC0gKEJPT0wpc3BhY2VGb2xsb3dzV29yZEluUmFuZ2U6KERPTVJhbmdl
ICopcmFuZ2UKIHsKLSAgICByZXR1cm4gcmFuZ2UgJiYgaXNTcGFjZU9yTmV3bGluZShXZWJDb3Jl
OjpWaXNpYmxlUG9zaXRpb24oY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG1ha2VTaW1wbGVS
YW5nZShjb3JlKHJhbmdlKSktPmVuZCkpLmNoYXJhY3RlckFmdGVyKCkpOworICAgIHJldHVybiBy
YW5nZSAmJiBpc1NwYWNlT3JOZXdsaW5lKFdlYkNvcmU6OlZpc2libGVQb3NpdGlvbihtYWtlRGVw
cmVjYXRlZExlZ2FjeVBvc2l0aW9uKG1ha2VTaW1wbGVSYW5nZShjb3JlKHJhbmdlKSktPmVuZCkp
LmNoYXJhY3RlckFmdGVyKCkpOwogfQogCiAtIChOU0FycmF5ICopd29yZHNJbkN1cnJlbnRQYXJh
Z3JhcGgKQEAgLTE4MDQsNyArMTgwNCw3IEBAICsgKE5TU3RyaW5nICopc3RyaW5nV2l0aERhdGE6
KE5TRGF0YSAqKWRhdGEgdGV4dEVuY29kaW5nTmFtZTooTlNTdHJpbmcgKil0ZXh0RW5jCiAKIC0g
KE5TUmVjdCljYXJldFJlY3RBdE5vZGU6KERPTU5vZGUgKilub2RlIG9mZnNldDooaW50KW9mZnNl
dCBhZmZpbml0eTooTlNTZWxlY3Rpb25BZmZpbml0eSlhZmZpbml0eQogewotICAgIHJldHVybiBb
c2VsZiBfY2FyZXRSZWN0QXRQb3NpdGlvbjpjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oY29y
ZShub2RlKSwgb2Zmc2V0KSBhZmZpbml0eTphZmZpbml0eV07CisgICAgcmV0dXJuIFtzZWxmIF9j
YXJldFJlY3RBdFBvc2l0aW9uOm1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24oY29yZShub2Rl
KSwgb2Zmc2V0KSBhZmZpbml0eTphZmZpbml0eV07CiB9CiAKIC0gKERPTVJhbmdlICopY2hhcmFj
dGVyUmFuZ2VBdFBvaW50OihOU1BvaW50KXBvaW50CkBAIC0yMzAyLDggKzIzMDIsOCBAQCAtIChC
T09MKWZvY3VzZWROb2RlSGFzQ29udGVudAogICAgIGlmICghcm9vdCB8fCAhcm9vdC0+aGFzQ2hp
bGROb2RlcygpKQogICAgICAgICByZXR1cm4gTk87CiAKLSAgICBXZWJDb3JlOjpWaXNpYmxlUG9z
aXRpb24gZmlyc3QoY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJvb3QsIDApKTsKLSAgICBX
ZWJDb3JlOjpWaXNpYmxlUG9zaXRpb24gbGFzdChjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24o
cm9vdCwgcm9vdC0+Y291bnRDaGlsZE5vZGVzKCkpKTsKKyAgICBXZWJDb3JlOjpWaXNpYmxlUG9z
aXRpb24gZmlyc3QobWFrZUNvbnRhaW5lck9mZnNldFBvc2l0aW9uKHJvb3QsIDApKTsKKyAgICBX
ZWJDb3JlOjpWaXNpYmxlUG9zaXRpb24gbGFzdChtYWtlQ29udGFpbmVyT2Zmc2V0UG9zaXRpb24o
cm9vdCwgcm9vdC0+Y291bnRDaGlsZE5vZGVzKCkpKTsKICAgICByZXR1cm4gZmlyc3QgIT0gbGFz
dDsKIH0KIAo=
</data>
<flag name="review"
          id="424853"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>